@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
@@ -296,4 +296,4 @@ export const pluginKeptSetupImage = pgTable('plugin_kept_setup_images', {
296
296
  imageDigestCheck: check('plugin_kept_setup_image_digest_check', sql `${table.imageDigest} ~ '^sha256:[0-9a-f]{64}$'`),
297
297
  imageSourceCheck: check('plugin_kept_setup_image_source_check', sql `${table.imageSource} IN ('built', 'uploaded')`),
298
298
  }));
299
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2RhdGFiYXNlL3NjaGVtYS9wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQ0wsV0FBVyxFQUFFLFVBQVUsRUFBRSxhQUFhLEdBRXZDLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBbURsSTs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsU0FBUyxFQUFFO0lBQ3ZDLGNBQWM7SUFDZCxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLGFBQWEsRUFBRTtJQUUzQyxrQ0FBa0M7SUFDbEMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7U0FDdEMsT0FBTyxDQUFDLGFBQWEsQ0FBQztTQUN0QixPQUFPLEVBQUU7SUFFWixlQUFlO0lBQ2YsU0FBUyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUM7U0FDMUIsT0FBTyxDQUFDLGFBQWEsQ0FBQztTQUN0QixPQUFPLEVBQUU7SUFDWixTQUFTLEVBQUUsU0FBUyxDQUFDLFlBQVksRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUN2RCxVQUFVLEVBQUU7U0FDWixPQUFPLEVBQUU7SUFDWixTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQztTQUMxQixPQUFPLENBQUMsYUFBYSxDQUFDO1NBQ3RCLE9BQU8sRUFBRTtJQUNaLFNBQVMsRUFBRSxTQUFTLENBQUMsWUFBWSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO1NBQ3ZELFVBQVUsRUFBRTtTQUNaLE9BQU8sRUFBRTtJQUVaLDBCQUEwQjtJQUMxQixJQUFJLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztTQUNuQyxPQUFPLEVBQUU7SUFDWixXQUFXLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUNoQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQztTQUN4QixLQUFLLEVBQVk7U0FDakIsT0FBTyxDQUFDLEVBQUUsQ0FBQztTQUNYLE9BQU8sRUFBRTtJQUNaLE9BQU8sRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO1NBQ3hDLE9BQU8sQ0FBQyxPQUFPLENBQUM7U0FDaEIsT0FBTyxFQUFFO0lBRVosd0JBQXdCO0lBQ3hCLFFBQVEsRUFBRSxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO1NBQzFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7U0FDbEIsT0FBTyxFQUFFO0lBRVosdUJBQXVCO0lBQ3ZCLFFBQVEsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDO1NBQ3hCLEtBQUssRUFBNkM7U0FDbEQsT0FBTyxDQUFDLEVBQUUsQ0FBQztTQUNYLE9BQU8sRUFBRTtJQUNaLFVBQVUsRUFBRSxPQUFPLENBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO1NBQy9DLEtBQUssRUFBYztTQUNuQixPQUFPLENBQUMsZUFBNkIsQ0FBQztTQUN0QyxPQUFPLEVBQUU7SUFDWixXQUFXLEVBQUUsT0FBTyxDQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztTQUNqRCxLQUFLLEVBQWU7U0FDcEIsT0FBTyxDQUFDLE9BQXNCLENBQUM7U0FDL0IsT0FBTyxFQUFFO0lBQ1osT0FBTyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUM7SUFDM0IsZUFBZSxFQUFFLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztTQUN6RCxLQUFLLEVBQThCO1NBQ25DLE9BQU8sQ0FBQyxNQUFNLENBQUM7U0FDZixPQUFPLEVBQUU7SUFDWixPQUFPLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQztTQUN0QixLQUFLLEVBQWtCO1NBQ3ZCLE9BQU8sQ0FBQyxFQUFFLENBQUM7U0FDWCxPQUFPLEVBQUU7SUFDWixzQkFBc0IsRUFBRSxPQUFPLENBQUMsMEJBQTBCLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFFM0Usc0JBQXNCO0lBQ3RCLEdBQUcsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDO1NBQ2QsS0FBSyxFQUEwQjtTQUMvQixPQUFPLENBQUMsRUFBRSxDQUFDO1NBQ1gsT0FBTyxFQUFFO0lBQ1osU0FBUyxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUM7U0FDM0IsS0FBSyxFQUEwQjtTQUMvQixPQUFPLENBQUMsRUFBRSxDQUFDO1NBQ1gsT0FBTyxFQUFFO0lBQ1osZUFBZSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztTQUN0QyxLQUFLLEVBQUU7U0FDUCxPQUFPLENBQUMsRUFBRSxDQUFDO1NBQ1gsT0FBTyxFQUFFO0lBQ1osUUFBUSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDdkIsS0FBSyxFQUFFO1NBQ1AsT0FBTyxDQUFDLEVBQUUsQ0FBQztTQUNYLE9BQU8sRUFBRTtJQUVaLCtEQUErRDtJQUMvRCw2RUFBNkU7SUFDN0UsMEVBQTBFO0lBQzFFLGlFQUFpRTtJQUNqRSxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsbUJBQW1CLENBQUM7U0FDekMsS0FBSyxFQUFZO1NBQ2pCLE9BQU8sQ0FBQyxFQUFFLENBQUM7U0FDWCxPQUFPLEVBQUU7SUFDWixZQUFZLEVBQUUsS0FBSyxDQUFDLGVBQWUsQ0FBQztTQUNqQyxLQUFLLEVBQVk7U0FDakIsT0FBTyxDQUFDLEVBQUUsQ0FBQztTQUNYLE9BQU8sRUFBRTtJQUNaLGFBQWEsRUFBRSxLQUFLLENBQUMsZ0JBQWdCLENBQUM7U0FDbkMsS0FBSyxFQUEyQztTQUNoRCxPQUFPLENBQUMsRUFBRSxDQUFDO1NBQ1gsT0FBTyxFQUFFO0lBQ1osU0FBUyxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUM7U0FDM0IsS0FBSyxFQUEyQztTQUNoRCxPQUFPLENBQUMsRUFBRSxDQUFDO1NBQ1gsT0FBTyxFQUFFO0lBQ1osU0FBUyxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxLQUFLLEVBQW1CO0lBQ3ZELGFBQWEsRUFBRSxLQUFLLENBQUMsZ0JBQWdCLENBQUM7U0FDbkMsS0FBSyxFQUFZO1NBQ2pCLE9BQU8sQ0FBQyxFQUFFLENBQUM7U0FDWCxPQUFPLEVBQUU7SUFFWix5RUFBeUU7SUFDekUsOEVBQThFO0lBQzlFLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzNCLFVBQVUsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQy9CLDJCQUEyQjtJQUMzQixPQUFPLEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMzQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixXQUFXLEVBQUUsT0FBTyxDQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUN0RCxTQUFTLEVBQUUsT0FBTyxDQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNsRCxJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBYztJQUN2QyxZQUFZLEVBQUUsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDLEtBQUssRUFBc0I7SUFFaEUsNkRBQTZEO0lBQzdELDBFQUEwRTtJQUMxRSxxRUFBcUU7SUFDckUsNkVBQTZFO0lBQzdFLDJFQUEyRTtJQUMzRSxzRUFBc0U7SUFDdEUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDNUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDckQsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLG1CQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ2hFLGVBQWUsRUFBRSxLQUFLLENBQUMsa0JBQWtCLENBQUM7U0FDdkMsS0FBSyxFQUFtQjtTQUN4QixPQUFPLENBQUMsRUFBRSxDQUFDO1NBQ1gsT0FBTyxFQUFFO0lBRVosdUJBQXVCO0lBQ3ZCLFVBQVUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzlCLFNBQVMsRUFBRSxPQUFPLENBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO1NBQzdDLE9BQU8sQ0FBQyxhQUFhLENBQUM7U0FDdEIsT0FBTyxFQUFFO0lBRVosNkVBQTZFO0lBQzdFLHVFQUF1RTtJQUN2RSw4RUFBOEU7SUFDOUUsaUVBQWlFO0lBQ2pFLDRFQUE0RTtJQUM1RSxtRUFBbUU7SUFDbkUsV0FBVyxFQUFFLE9BQU8sQ0FBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDcEQsV0FBVyxFQUFFLE9BQU8sQ0FBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQWU7SUFFekUsNEVBQTRFO0lBQzVFLGtFQUFrRTtJQUNsRSxZQUFZLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQztJQUN0QyxRQUFRLEVBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQztJQUM5QixVQUFVLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQztJQUNsQyxPQUFPLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQztJQUM1QiwyRUFBMkU7SUFDM0UsaUZBQWlGO0lBQ2pGLG1CQUFtQixFQUFFLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQztJQUNyRCxlQUFlLEVBQUUsT0FBTyxDQUFDLG1CQUFtQixDQUFDO0lBQzdDLFNBQVMsRUFBRSxTQUFTLENBQUMsWUFBWSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzFELDhFQUE4RTtJQUM5RSw2RUFBNkU7SUFDN0UsYUFBYSxFQUFFLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNuRSxRQUFRLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssRUFBa0I7SUFDcEQ7Ozs7Ozs7Ozs7T0FVRztJQUNILFdBQVcsRUFBRSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsS0FBSyxFQUFxQjtJQUM3RCxTQUFTLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQztJQUVqQyx3RUFBd0U7SUFDeEUseUVBQXlFO0lBQ3pFLDRFQUE0RTtJQUM1RSx3RUFBd0U7SUFDeEUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUM7U0FDMUIsT0FBTyxDQUFDLEtBQUssQ0FBQztTQUNkLE9BQU8sRUFBRTtJQUNaLFFBQVEsRUFBRSxTQUFTLENBQUMsV0FBVyxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3hELFFBQVEsRUFBRSxTQUFTLENBQUMsV0FBVyxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3hELFVBQVUsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQy9CLFlBQVksRUFBRSxTQUFTLENBQUMsZUFBZSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ2hFLGtCQUFrQixFQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztJQUUvQyw4RUFBOEU7SUFDOUUsNkVBQTZFO0lBQzdFLDBFQUEwRTtJQUMxRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixTQUFTLEVBQUUsT0FBTyxDQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBYTtJQUNuRSxTQUFTLEVBQUUsT0FBTyxDQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztTQUM1QyxLQUFLLEVBQW1CO1NBQ3hCLE9BQU8sQ0FBQyxZQUErQixDQUFDO1NBQ3hDLE9BQU8sRUFBRTtJQUNaLFdBQVcsRUFBRSxPQUFPLENBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFlO0lBQ3hFLE1BQU0sRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDO1NBQ3BCLEtBQUssRUFBZ0I7U0FDckIsT0FBTyxDQUFDLEVBQUUsQ0FBQztTQUNYLE9BQU8sRUFBRTtJQUNaLEtBQUssRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDO1NBQ2xCLEtBQUssRUFBZ0I7U0FDckIsT0FBTyxDQUFDLEVBQUUsQ0FBQztTQUNYLE9BQU8sRUFBRTtJQUVaLHVFQUF1RTtJQUN2RSw2RUFBNkU7SUFDN0UsMkVBQTJFO0lBQzNFLCtFQUErRTtJQUMvRSxvREFBb0Q7SUFDcEQsVUFBVSxFQUFFLE9BQU8sQ0FBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUM7U0FDOUMsS0FBSyxFQUFjO1NBQ25CLE9BQU8sQ0FBQyxTQUFTLENBQUM7U0FDbEIsT0FBTyxFQUFFO0lBQ1osU0FBUyxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUM7U0FDN0IsT0FBTyxDQUFDLEtBQUssQ0FBQztTQUNkLE9BQU8sRUFBRTtJQUNaLFFBQVEsRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDO1NBQzNCLE9BQU8sQ0FBQyxJQUFJLENBQUM7U0FDYixPQUFPLEVBQUU7SUFFWixrQ0FBa0M7SUFDbEMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDMUQsU0FBUyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsMEVBQTBFO0lBQzFFLDJFQUEyRTtJQUMzRSxVQUFVLEVBQUUsU0FBUyxDQUFDLGFBQWEsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUU1RCw0RUFBNEU7SUFDNUUsNEVBQTRFO0lBQzVFLDBFQUEwRTtJQUMxRSxnRkFBZ0Y7SUFDaEYsWUFBWSxFQUFFLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztDQUNsRSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2IsNkVBQTZFO0lBQzdFLFFBQVEsRUFBRSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUEsd0JBQXdCLENBQUM7SUFDM0YsZ0ZBQWdGO0lBQ2hGLHVFQUF1RTtJQUN2RSxRQUFRLEVBQUUsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFBLG9CQUFvQixDQUFDO0lBQ3BGLE9BQU8sRUFBRSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUEsb0JBQW9CLENBQUM7SUFDaEYsY0FBYyxFQUFFLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFBLG9CQUFvQixDQUFDO0lBQzlHLGFBQWEsRUFBRSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUEsb0JBQW9CLENBQUM7SUFDbEcsWUFBWSxFQUFFLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFBLDBDQUEwQyxDQUFDO0lBQ2xJLFdBQVcsRUFBRSxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztJQUM3RCxTQUFTLEVBQUUsS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFBLG9CQUFvQixDQUFDO0lBQzNGLGFBQWEsRUFBRSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUEsR0FBRyxLQUFLLENBQUMsU0FBUyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFBLG9CQUFvQixDQUFDO0lBQzVILFVBQVUsRUFBRSxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQSxvQkFBb0IsQ0FBQztJQUVwRyw4RUFBOEU7SUFDOUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUM7SUFDbEUsWUFBWSxFQUFFLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUM7SUFFNUUsdUVBQXVFO0lBQ3ZFLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQztJQUNuSCxrRUFBa0U7SUFDbEUsWUFBWSxFQUFFLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUM7SUFFN0UsOENBQThDO0lBQzlDLG9CQUFvQixFQUFFLFdBQVcsQ0FBQyxnQ0FBZ0MsQ0FBQztTQUNoRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFFN0Msb0JBQW9CO0lBQ3BCLFlBQVksRUFBRSxLQUFLLENBQUUsc0JBQXNCLEVBQ3pDLEdBQUcsQ0FBQSxHQUFHLEtBQUssQ0FBQyxPQUFPLG9FQUFvRSxDQUN4RjtJQUNELGdCQUFnQixFQUFFLEtBQUssQ0FBQywyQkFBMkIsRUFDakQsR0FBRyxDQUFBLEdBQUcsS0FBSyxDQUFDLFdBQVcsZUFBZSxLQUFLLENBQUMsV0FBVyw0QkFBNEIsQ0FDcEY7SUFDRCxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsMkJBQTJCLEVBQ2pELEdBQUcsQ0FBQSxHQUFHLEtBQUssQ0FBQyxXQUFXLGVBQWUsS0FBSyxDQUFDLFdBQVcsMkJBQTJCLENBQ25GO0NBQ0YsQ0FBQyxDQUFDLENBQUM7QUFVSjs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsT0FBTyxDQUFDLDBCQUEwQixFQUFFO0lBQ3RFLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsYUFBYSxFQUFFO0lBQzNDLEtBQUssRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ25ELFVBQVUsRUFBRSxPQUFPLENBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQzdELGFBQWEsRUFBRSxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDbEUsV0FBVyxFQUFFLE9BQU8sQ0FBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDOUQsV0FBVyxFQUFFLE9BQU8sQ0FBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQWUsQ0FBQyxPQUFPLEVBQUU7SUFDbkYsV0FBVyxFQUFFLE9BQU8sQ0FBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDOUQsY0FBYyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUNqRCxlQUFlLEVBQUUsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUMsS0FBSyxFQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUNuRixLQUFLLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBdUIsQ0FBQyxPQUFPLEVBQUU7SUFDNUQsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDakMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLEVBQUU7SUFDM0UsU0FBUyxFQUFFLFNBQVMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7Q0FDckUsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNiLFdBQVcsRUFBRSxXQUFXLENBQUMsc0NBQXNDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQztJQUMxSSxVQUFVLEVBQUUsS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7SUFDNUUsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLHNDQUFzQyxFQUFFLEdBQUcsQ0FBQSxHQUFHLEtBQUssQ0FBQyxXQUFXLDRCQUE0QixDQUFDO0lBQ3BILGdCQUFnQixFQUFFLEtBQUssQ0FBQyxzQ0FBc0MsRUFBRSxHQUFHLENBQUEsR0FBRyxLQUFLLENBQUMsV0FBVywyQkFBMkIsQ0FBQztDQUNwSCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQge1xuICBDb21wdXRlVHlwZSwgUGx1Z2luVHlwZSwgU1lTVEVNX09SR19JRCwgdHlwZSBDcml0aWNhbGl0eSwgdHlwZSBFbnRpdHlMYWJlbHMsIHR5cGUgRW50aXR5TGluaywgdHlwZSBMaWZlY3ljbGUsXG4gIHR5cGUgTWV0YWRhdGFTb3VyY2VzLCB0eXBlIE93bmVyVHlwZSwgdHlwZSBQbHVnaW5TY2FuRmxhZywgdHlwZSBQbHVnaW5TY2FuU3VtbWFyeSwgdHlwZSBWaXNpYmlsaXR5LFxufSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgeyBzcWwgfSBmcm9tICdkcml6emxlLW9ybSc7XG5pbXBvcnQgeyBib29sZWFuLCBpbnRlZ2VyLCB2YXJjaGFyLCBwZ1RhYmxlLCB0ZXh0LCB0aW1lc3RhbXAsIHV1aWQsIGpzb25iLCBpbmRleCwgdW5pcXVlSW5kZXgsIGNoZWNrIH0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSc7XG5cbi8qKlxuICogU2VjcmV0IHJlcXVpcmVtZW50IGZvciBhIHBsdWdpbi5cbiAqIERlY2xhcmVzIG5hbWVkIHNlY3JldHMgdGhlIHBsdWdpbiBleHBlY3RzIGF0IGJ1aWxkIHRpbWUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luU2VjcmV0IHtcbiAgbmFtZTogc3RyaW5nO1xuICByZXF1aXJlZDogYm9vbGVhbjtcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogV2hlcmUgYSBwbHVnaW4ncyBpbWFnZSBjYW1lIGZyb206IGBidWlsdGAgYnkgdGhlIHBsYXRmb3JtJ3MgQnVpbGRLaXQgKGNhcnJpZXNcbiAqIFNMU0EgcHJvdmVuYW5jZSkgb3IgYHVwbG9hZGVkYCBhcyBhIHByZWJ1aWx0IGBpbWFnZS50YXJgIChTQk9NICsgc2lnbmF0dXJlXG4gKiBvbmx5IOKAlCB0aGUgcGxhdGZvcm0gbmV2ZXIgc2F3IHRoZSBidWlsZCkuXG4gKi9cbmV4cG9ydCB0eXBlIEltYWdlU291cmNlID0gJ2J1aWx0JyB8ICd1cGxvYWRlZCc7XG5cbi8qKlxuICogUGx1Z2luIGxpZmVjeWNsZTogdGhlIHNoYXJlZCBjYXRhbG9nIHtAbGluayBMaWZlY3ljbGV9IHBsdXMgYHlhbmtlZGAsIHdoaWNoXG4gKiBvbmx5IHBsdWdpbiB2ZXJzaW9ucyBjYW4gcmVhY2ggKGEgeWFua2VkIHZlcnNpb24gc3RvcHMgcmVzb2x2aW5nIGZvciBuZXdcbiAqIHN5bnRocykuIGB5YW5rZWRBdGAgLyBgZGVwcmVjYXRlZEF0YCBhcmUgdGhlIGF1dGhvcml0YXRpdmUgdGltZXN0YW1wczsgdGhlXG4gKiBsaWZlY3ljbGUgdmFsdWUgbWlycm9ycyB0aGVtIGZvciBjYXRhbG9nIGZpbHRlcmluZy5cbiAqL1xuZXhwb3J0IHR5cGUgUGx1Z2luTGlmZWN5Y2xlID0gTGlmZWN5Y2xlIHwgJ3lhbmtlZCc7XG5cbi8qKiBDb2VyY2lvbiB0eXBlIGEgYHJlcXVpcmVkTWV0YWRhdGFgIC8gYHJlcXVpcmVkVmFyc2Aga2V5IGlzIGRlY2xhcmVkIGFzLiAqL1xuZXhwb3J0IHR5cGUgUGx1Z2luQ29udHJhY3RWYWx1ZVR5cGUgPSAnc3RyaW5nJyB8ICdudW1iZXInIHwgJ2Jvb2wnIHwgJ2pzb24nO1xuXG4vKipcbiAqIFRoZSBzcGVjJ3Mgc21va2UtdGVzdCBkZWNsYXJhdGlvbi4gVG9kYXkgYSBiYXJlIGNvbW1hbmQgc3RyaW5nOyBzdG9yZWQgYXNcbiAqIEpTT05CIHNvIGEgc3RydWN0dXJlZCBmb3JtIGNhbiBmb2xsb3cgd2l0aG91dCBhbm90aGVyIGNvbHVtbi5cbiAqL1xuZXhwb3J0IHR5cGUgUGx1Z2luU21va2VUZXN0ID0gc3RyaW5nIHwgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbi8qKiBBIGN1cmF0ZWQgaWNvbjogYSBrZXkgaW50byB0aGUgY3VyYXRlZCBzZXQsIHBsdXMgYW4gb3B0aW9uYWwgYmFkZ2UuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbkljb24ge1xuICBrZXk6IHN0cmluZztcbiAgYmFkZ2U/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogU3RvcmFnZSBrZXlzIG9mIGFuIHVwbG9hZGVkIGljb24ncyByZS1lbmNvZGVkIFdlYlAgcmVuZGl0aW9ucyAoaW1hZ2UtcmVnaXN0cnlcbiAqIGRlY29kZXMgKyByZS1lbmNvZGVzIGV2ZXJ5IHVwbG9hZDsgdGhlIHJhdyBmaWxlIGFuZCBTVkcgYXJlIG5ldmVyIHN0b3JlZCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luVXBsb2FkZWRJY29uIHtcbiAga2V5MjU2OiBzdHJpbmc7XG4gIGtleTY0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGFibGUgZm9yIHN0b3JpbmcgcmV1c2FibGUgcGx1Z2luIGNvbmZpZ3VyYXRpb25zLlxuICogUGx1Z2lucyBkZWZpbmUgdGhlIGJlaGF2aW9yIG9mIHN5bnRoL2J1aWxkIHN0ZXBzIGluIENESyBwaXBlbGluZXMuXG4gKlxuICogRmVhdHVyZXMgKiAtIFZlcnNpb25pbmcgc3VwcG9ydCB3aXRoIHNlbWFudGljIHZlcnNpb25pbmdcbiAqIC0gQWNjZXNzIGNvbnRyb2wgdmlhIG9yZ0lkIGFuZCB0aGUgdGhyZWUtcnVuZyBgdmlzaWJpbGl0eWAgbGFkZGVyXG4gKiAtIEZ1bGwgYXVkaXQgdHJhaWwgKGNyZWF0ZWQvdXBkYXRlZCBieS9hdClcbiAqIC0gRmxleGlibGUgbWV0YWRhdGEgc3RvcmFnZSB2aWEgSlNPTkJcbiAqIC0gU3VwcG9ydCBmb3IgYm90aCBTaGVsbFN0ZXAgYW5kIENvZGVCdWlsZFN0ZXAgdHlwZXNcbiAqXG4gKiBAdGFibGUgcGx1Z2luc1xuICovXG5leHBvcnQgY29uc3QgcGx1Z2luID0gcGdUYWJsZSgncGx1Z2lucycsIHtcbiAgLy8gUHJpbWFyeSBrZXlcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcblxuICAvLyBPcmdhbml6YXRpb24gYW5kIGFjY2VzcyBjb250cm9sXG4gIG9yZ0lkOiB2YXJjaGFyKCdvcmdfaWQnLCB7IGxlbmd0aDogMjU1IH0pXG4gICAgLmRlZmF1bHQoU1lTVEVNX09SR19JRClcbiAgICAubm90TnVsbCgpLFxuXG4gIC8vIEF1ZGl0IGZpZWxkc1xuICBjcmVhdGVkQnk6IHRleHQoJ2NyZWF0ZWRfYnknKVxuICAgIC5kZWZhdWx0KFNZU1RFTV9PUkdfSUQpXG4gICAgLm5vdE51bGwoKSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KVxuICAgIC5kZWZhdWx0Tm93KClcbiAgICAubm90TnVsbCgpLFxuICB1cGRhdGVkQnk6IHRleHQoJ3VwZGF0ZWRfYnknKVxuICAgIC5kZWZhdWx0KFNZU1RFTV9PUkdfSUQpXG4gICAgLm5vdE51bGwoKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KVxuICAgIC5kZWZhdWx0Tm93KClcbiAgICAubm90TnVsbCgpLFxuXG4gIC8vIENvcmUgcGx1Z2luIGluZm9ybWF0aW9uXG4gIG5hbWU6IHZhcmNoYXIoJ25hbWUnLCB7IGxlbmd0aDogMjU1IH0pXG4gICAgLm5vdE51bGwoKSxcbiAgZGVzY3JpcHRpb246IHRleHQoJ2Rlc2NyaXB0aW9uJyksXG4gIGtleXdvcmRzOiBqc29uYigna2V5d29yZHMnKVxuICAgIC4kdHlwZTxzdHJpbmdbXT4oKVxuICAgIC5kZWZhdWx0KFtdKVxuICAgIC5ub3ROdWxsKCksXG4gIHZlcnNpb246IHZhcmNoYXIoJ3ZlcnNpb24nLCB7IGxlbmd0aDogNTAgfSlcbiAgICAuZGVmYXVsdCgnMS4wLjAnKVxuICAgIC5ub3ROdWxsKCksXG5cbiAgLy8gUGx1Z2luIGNsYXNzaWZpY2F0aW9uXG4gIGNhdGVnb3J5OiB2YXJjaGFyKCdjYXRlZ29yeScsIHsgbGVuZ3RoOiA1MCB9KVxuICAgIC5kZWZhdWx0KCd1bmtub3duJylcbiAgICAubm90TnVsbCgpLFxuXG4gIC8vIFBsdWdpbiBjb25maWd1cmF0aW9uXG4gIG1ldGFkYXRhOiBqc29uYignbWV0YWRhdGEnKVxuICAgIC4kdHlwZTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPj4oKVxuICAgIC5kZWZhdWx0KHt9KVxuICAgIC5ub3ROdWxsKCksXG4gIHBsdWdpblR5cGU6IHZhcmNoYXIoJ3BsdWdpbl90eXBlJywgeyBsZW5ndGg6IDUwIH0pXG4gICAgLiR0eXBlPFBsdWdpblR5cGU+KClcbiAgICAuZGVmYXVsdCgnQ29kZUJ1aWxkU3RlcCcgYXMgUGx1Z2luVHlwZSlcbiAgICAubm90TnVsbCgpLFxuICBjb21wdXRlVHlwZTogdmFyY2hhcignY29tcHV0ZV90eXBlJywgeyBsZW5ndGg6IDUwIH0pXG4gICAgLiR0eXBlPENvbXB1dGVUeXBlPigpXG4gICAgLmRlZmF1bHQoJ1NNQUxMJyBhcyBDb21wdXRlVHlwZSlcbiAgICAubm90TnVsbCgpLFxuICB0aW1lb3V0OiBpbnRlZ2VyKCd0aW1lb3V0JyksXG4gIGZhaWx1cmVCZWhhdmlvcjogdmFyY2hhcignZmFpbHVyZV9iZWhhdmlvcicsIHsgbGVuZ3RoOiAxMCB9KVxuICAgIC4kdHlwZTwnZmFpbCcgfCAnd2FybicgfCAnaWdub3JlJz4oKVxuICAgIC5kZWZhdWx0KCdmYWlsJylcbiAgICAubm90TnVsbCgpLFxuICBzZWNyZXRzOiBqc29uYignc2VjcmV0cycpXG4gICAgLiR0eXBlPFBsdWdpblNlY3JldFtdPigpXG4gICAgLmRlZmF1bHQoW10pXG4gICAgLm5vdE51bGwoKSxcbiAgcHJpbWFyeU91dHB1dERpcmVjdG9yeTogdmFyY2hhcigncHJpbWFyeV9vdXRwdXRfZGlyZWN0b3J5JywgeyBsZW5ndGg6IDI4IH0pLFxuXG4gIC8vIEJ1aWxkIGNvbmZpZ3VyYXRpb25cbiAgZW52OiBqc29uYignZW52JylcbiAgICAuJHR5cGU8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4oKVxuICAgIC5kZWZhdWx0KHt9KVxuICAgIC5ub3ROdWxsKCksXG4gIGJ1aWxkQXJnczoganNvbmIoJ2J1aWxkX2FyZ3MnKVxuICAgIC4kdHlwZTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PigpXG4gICAgLmRlZmF1bHQoe30pXG4gICAgLm5vdE51bGwoKSxcbiAgaW5zdGFsbENvbW1hbmRzOiB0ZXh0KCdpbnN0YWxsX2NvbW1hbmRzJylcbiAgICAuYXJyYXkoKVxuICAgIC5kZWZhdWx0KFtdKVxuICAgIC5ub3ROdWxsKCksXG4gIGNvbW1hbmRzOiB0ZXh0KCdjb21tYW5kcycpXG4gICAgLmFycmF5KClcbiAgICAuZGVmYXVsdChbXSlcbiAgICAubm90TnVsbCgpLFxuXG4gIC8vIFNwZWMgY29udHJhY3QsIHBlcnNpc3RlZCAobm90IGp1c3QgdmFsaWRhdGVkIGF0IHVwbG9hZCk6IHRoZVxuICAvLyBge3sgcGlwZWxpbmUubWV0YWRhdGEuWCB9fWAgLyBge3sgcGlwZWxpbmUudmFycy5YIH19YCBrZXlzIGEgcGlwZWxpbmUgbXVzdFxuICAvLyBzdXBwbHksIHRoZWlyIGRlY2xhcmVkIGNvZXJjaW9uIHR5cGVzLCB0aGUgc21va2UgdGVzdCwgYW5kIHRoZSBkZWNsYXJlZFxuICAvLyBvdXRib3VuZCBob3N0bmFtZXMgKHNwZWMgYG5ldHdvcmsuZWdyZXNzYCkgc2hvd24gdG8gY29uc3VtZXJzLlxuICByZXF1aXJlZE1ldGFkYXRhOiBqc29uYigncmVxdWlyZWRfbWV0YWRhdGEnKVxuICAgIC4kdHlwZTxzdHJpbmdbXT4oKVxuICAgIC5kZWZhdWx0KFtdKVxuICAgIC5ub3ROdWxsKCksXG4gIHJlcXVpcmVkVmFyczoganNvbmIoJ3JlcXVpcmVkX3ZhcnMnKVxuICAgIC4kdHlwZTxzdHJpbmdbXT4oKVxuICAgIC5kZWZhdWx0KFtdKVxuICAgIC5ub3ROdWxsKCksXG4gIG1ldGFkYXRhVHlwZXM6IGpzb25iKCdtZXRhZGF0YV90eXBlcycpXG4gICAgLiR0eXBlPFJlY29yZDxzdHJpbmcsIFBsdWdpbkNvbnRyYWN0VmFsdWVUeXBlPj4oKVxuICAgIC5kZWZhdWx0KHt9KVxuICAgIC5ub3ROdWxsKCksXG4gIHZhcnNUeXBlczoganNvbmIoJ3ZhcnNfdHlwZXMnKVxuICAgIC4kdHlwZTxSZWNvcmQ8c3RyaW5nLCBQbHVnaW5Db250cmFjdFZhbHVlVHlwZT4+KClcbiAgICAuZGVmYXVsdCh7fSlcbiAgICAubm90TnVsbCgpLFxuICBzbW9rZVRlc3Q6IGpzb25iKCdzbW9rZV90ZXN0JykuJHR5cGU8UGx1Z2luU21va2VUZXN0PigpLFxuICBuZXR3b3JrRWdyZXNzOiBqc29uYignbmV0d29ya19lZ3Jlc3MnKVxuICAgIC4kdHlwZTxzdHJpbmdbXT4oKVxuICAgIC5kZWZhdWx0KFtdKVxuICAgIC5ub3ROdWxsKCksXG5cbiAgLy8gRG9jdW1lbnRhdGlvbi4gVGhlIFJFQURNRSBpcyBrZXB0IGFzIHNvdXJjZSBtYXJrZG93biBBTkQgcHJlLXNhbml0aXplZFxuICAvLyBIVE1MIChyZW5kZXJlZCBvbmNlIGF0IHVwbG9hZCksIHNvIG5vIHJlYWQgcGF0aCByZW5kZXJzIHVudHJ1c3RlZCBtYXJrZG93bi5cbiAgcmVhZG1lTWQ6IHRleHQoJ3JlYWRtZV9tZCcpLFxuICByZWFkbWVIdG1sOiB0ZXh0KCdyZWFkbWVfaHRtbCcpLFxuICAvLyBTUERYIGxpY2Vuc2UgaWRlbnRpZmllci5cbiAgbGljZW5zZTogdmFyY2hhcignbGljZW5zZScsIHsgbGVuZ3RoOiA2NCB9KSxcbiAgY2hhbmdlbG9nOiB0ZXh0KCdjaGFuZ2Vsb2cnKSxcbiAgaG9tZXBhZ2VVcmw6IHZhcmNoYXIoJ2hvbWVwYWdlX3VybCcsIHsgbGVuZ3RoOiAyMDQ4IH0pLFxuICBzb3VyY2VVcmw6IHZhcmNoYXIoJ3NvdXJjZV91cmwnLCB7IGxlbmd0aDogMjA0OCB9KSxcbiAgaWNvbjoganNvbmIoJ2ljb24nKS4kdHlwZTxQbHVnaW5JY29uPigpLFxuICB1cGxvYWRlZEljb246IGpzb25iKCd1cGxvYWRlZF9pY29uJykuJHR5cGU8UGx1Z2luVXBsb2FkZWRJY29uPigpLFxuXG4gIC8vIENhdGFsb2cgbWV0YWRhdGE6IGRldGVjdGVkIGZyb20gdGhlIHBhY2thZ2UgKHNwZWMsIFJFQURNRSxcbiAgLy8gdGhlIHBsdWdpbidzIG93biBEb2NrZXJmaWxlIE9DSSBsYWJlbHMpLCB0aGVuIGFjY2VwdGVkIG9yIGVkaXRlZCBieSB0aGVcbiAgLy8gdXNlci4gYHN1bW1hcnlgIGlzIHRoZSBjYXJkIG9uZS1saW5lcjsgYGRpc3BsYXlOYW1lYCBmYWxscyBiYWNrIHRvXG4gIC8vIGBuYW1lYCB3aGVuIHVuc2V0LiBgbWV0YWRhdGFTb3VyY2VzYCByZWNvcmRzLCBwZXIgZGVzY3JpcHRpdmUgZmllbGQsIHdoZXJlXG4gIC8vIGl0cyB2YWx1ZSBjYW1lIGZyb20gKGBzcGVjIHwgcmVhZG1lIHwgZG9ja2VyZmlsZSB8IGRlcml2ZWQgfCB1c2VyYCkgc28gYVxuICAvLyByZXZpZXdlciBjYW4gc2VlIHdoYXQgd2FzIHR5cGVkIHJhdGhlciB0aGFuIHNoaXBwZWQgaW4gdGhlIHBhY2thZ2UuXG4gIHN1bW1hcnk6IHZhcmNoYXIoJ3N1bW1hcnknLCB7IGxlbmd0aDogMTYwIH0pLFxuICBkaXNwbGF5TmFtZTogdmFyY2hhcignZGlzcGxheV9uYW1lJywgeyBsZW5ndGg6IDEwMCB9KSxcbiAgZG9jdW1lbnRhdGlvblVybDogdmFyY2hhcignZG9jdW1lbnRhdGlvbl91cmwnLCB7IGxlbmd0aDogMjA0OCB9KSxcbiAgbWV0YWRhdGFTb3VyY2VzOiBqc29uYignbWV0YWRhdGFfc291cmNlcycpXG4gICAgLiR0eXBlPE1ldGFkYXRhU291cmNlcz4oKVxuICAgIC5kZWZhdWx0KHt9KVxuICAgIC5ub3ROdWxsKCksXG5cbiAgLy8gRG9ja2VyIGNvbmZpZ3VyYXRpb25cbiAgZG9ja2VyZmlsZTogdGV4dCgnZG9ja2VyZmlsZScpLFxuICBidWlsZFR5cGU6IHZhcmNoYXIoJ2J1aWxkX3R5cGUnLCB7IGxlbmd0aDogMjAgfSlcbiAgICAuZGVmYXVsdCgnYnVpbGRfaW1hZ2UnKVxuICAgIC5ub3ROdWxsKCksXG5cbiAgLy8gU3VwcGx5IGNoYWluLiBTZXQgYnkgdGhlIGJ1aWxkIHdvcmtlciBvbmNlIHRoZSBpbWFnZSBpcyBwdXNoZWQsIHNpZ25lZCBhbmRcbiAgLy8gY2FycmllcyBpdHMgU0JPTSBhdHRlc3RhdGlvbjsgTlVMTCBmb3IgcGx1Z2lucyB0aGF0IHByb2R1Y2Ugbm8gaW1hZ2VcbiAgLy8gKG1ldGFkYXRhX29ubHksIGFwcHJvdmFsIHN0ZXBzKS4gYGltYWdlRGlnZXN0YCBpcyB3aGF0IHN5bnRoIHBpbnMgQ29kZUJ1aWxkXG4gIC8vIHRvIChgPHJlcG8+QHNoYTI1NjrigKZgKSDigJQgbmV2ZXIgdGhlIG11dGFibGUgYG5hbWU6dmVyc2lvbmAgdGFnLlxuICAvLyBgaW1hZ2VTb3VyY2VgIHNlcGFyYXRlcyBhbiBpbWFnZSB0aGlzIHBsYXRmb3JtIEJVSUxUIChCdWlsZEtpdCBwcm92ZW5hbmNlXG4gIC8vIGF0dGFjaGVkKSBmcm9tIGFuIFVQTE9BREVEIGBpbWFnZS50YXJgIHdob3NlIGJ1aWxkIGl0IG5ldmVyIHNhdy5cbiAgaW1hZ2VEaWdlc3Q6IHZhcmNoYXIoJ2ltYWdlX2RpZ2VzdCcsIHsgbGVuZ3RoOiA3MSB9KSxcbiAgaW1hZ2VTb3VyY2U6IHZhcmNoYXIoJ2ltYWdlX3NvdXJjZScsIHsgbGVuZ3RoOiAxMCB9KS4kdHlwZTxJbWFnZVNvdXJjZT4oKSxcblxuICAvLyBWdWxuZXJhYmlsaXR5IHNjYW4gKGdyeXBlIG92ZXIgdGhlIFNCT00gYXQgYnVpbGQ7IG5pZ2h0bHkgcmVzY2FuKSBhbmQgdGhlXG4gIC8vIGltYWdlJ3MgZWZmZWN0aXZlIFVTRVIuIE5VTEwgPSBub3Qgc2Nhbm5lZCAvIHByb2R1Y2VzIG5vIGltYWdlLlxuICB2dWxuQ3JpdGljYWw6IGludGVnZXIoJ3Z1bG5fY3JpdGljYWwnKSxcbiAgdnVsbkhpZ2g6IGludGVnZXIoJ3Z1bG5faGlnaCcpLFxuICB2dWxuTWVkaXVtOiBpbnRlZ2VyKCd2dWxuX21lZGl1bScpLFxuICB2dWxuTG93OiBpbnRlZ2VyKCd2dWxuX2xvdycpLFxuICAvLyBPZiB0aGUgY3JpdGljYWwvaGlnaCBmaW5kaW5ncywgdGhvc2UgZ3J5cGUgcmVwb3J0cyBhIGZpeGVkIHZlcnNpb24gZm9yIOKAlFxuICAvLyB3aGF0IHRoZSBwbGF0Zm9ybSBmbG9vciAoUExVR0lOX1ZVTE5fTUFYX0ZJTkRJTkdTKSBnYXRlcyBvbi4gTlVMTCA9IHVuc2Nhbm5lZC5cbiAgdnVsbkNyaXRpY2FsRml4YWJsZTogaW50ZWdlcigndnVsbl9jcml0aWNhbF9maXhhYmxlJyksXG4gIHZ1bG5IaWdoRml4YWJsZTogaW50ZWdlcigndnVsbl9oaWdoX2ZpeGFibGUnKSxcbiAgc2Nhbm5lZEF0OiB0aW1lc3RhbXAoJ3NjYW5uZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgLy8gU2V0IGJ5IHRoZSBuaWdodGx5IHJlc2NhbiB3aGlsZSB0aGlzIHZlcnNpb24ncyBmaXhhYmxlIGNyaXRpY2FscyBleGNlZWQgdGhlXG4gIC8vIGZsb29yIChjbGVhcmVkIHdoZW4gcmVzb2x2ZWQpOiB0aGUgY291bnRzIGFuZCB0b3AgZmluZGluZ3MgYXQgdGhhdCByZXNjYW4uXG4gIHNjYW5GbGFnZ2VkQXQ6IHRpbWVzdGFtcCgnc2Nhbl9mbGFnZ2VkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIHNjYW5GbGFnOiBqc29uYignc2Nhbl9mbGFnJykuJHR5cGU8UGx1Z2luU2NhbkZsYWc+KCksXG4gIC8qKlxuICAgKiBUaGUgTEFTVCByZXNjYW4ncyBmaW5kaW5ncyBmb3IgdGhpcyB2ZXJzaW9uLCB3cml0dGVuIHdoZXRoZXIgb3Igbm90IHRoZVxuICAgKiBnYXRpbmcgZmxhZyB0cmlwcGVkLlxuICAgKlxuICAgKiBgc2Nhbl9mbGFnYCBpcyBzZXQgb25seSB3aGlsZSBmaXhhYmxlIGNyaXRpY2FscyBleGNlZWRcbiAgICogUExVR0lOX1ZVTE5fTUFYX0ZJTkRJTkdTLCBzbyBhIHZlcnNpb24gY2Fycnlpbmcgb25seSBIaWdoIGZpbmRpbmdzIHN0b3Jlc1xuICAgKiBub3RoaW5nIOKAlCBhbmQgdGhlIHZ1bG5lcmFiaWxpdHkgcmVwb3J0IHNlY3Rpb24sIHdob3NlIHdob2xlIGpvYiBpcyB0byBzaG93XG4gICAqIENyaXRpY2FsIEFORCBIaWdoIGV4cG9zdXJlLCBoYWQgbm8gc291cmNlIHRvIHJlYWQuIFRoaXMgaG9sZHMgdGhlIGNvdW50cyBhbmRcbiAgICogdGhlIHRvcCBmaW5kaW5ncyBmb3IgZXZlcnkgaW4tdXNlIHZlcnNpb24sIGluZGVwZW5kZW50IG9mIHRoZSBnYXRlOiB3aGF0IGFcbiAgICogcmVwb3J0IHNob3dzIGFuZCB3aGF0IGEgYnVpbGQgcmVmdXNlcyBhcmUgZGlmZmVyZW50IHF1ZXN0aW9ucy5cbiAgICovXG4gIHNjYW5TdW1tYXJ5OiBqc29uYignc2Nhbl9zdW1tYXJ5JykuJHR5cGU8UGx1Z2luU2NhblN1bW1hcnk+KCksXG4gIHJ1bkFzUm9vdDogYm9vbGVhbigncnVuX2FzX3Jvb3QnKSxcblxuICAvLyBWZXJzaW9uIGxpZmVjeWNsZS4gYGJyZWFraW5nYDogYSBwdWJsaXNoZXItbWFya2VkIG1ham9yIHRoYXQgYGxhdGVzdGBcbiAgLy8gaW5zdGFsbHMgbmV2ZXIgY3Jvc3Mgd2l0aG91dCByZS1hcHByb3ZhbC4gYGZyb3plbkF0YDogc2V0IHRoZSBtb21lbnQgYVxuICAvLyBwdWJsaXNoIHJlcXVlc3QgcmVmZXJlbmNlcyB0aGlzIHZlcnNpb24g4oCUIHJlLXVwbG9hZGluZyBpdCBpcyB0aGVuIHJlZnVzZWRcbiAgLy8gKDQwOSkuIFlhbmsgLyBkZXByZWNhdGlvbiBjYXJyeSB0aGVpciByZWFzb24gYWxvbmdzaWRlIHRoZSB0aW1lc3RhbXAuXG4gIGJyZWFraW5nOiBib29sZWFuKCdicmVha2luZycpXG4gICAgLmRlZmF1bHQoZmFsc2UpXG4gICAgLm5vdE51bGwoKSxcbiAgZnJvemVuQXQ6IHRpbWVzdGFtcCgnZnJvemVuX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIHlhbmtlZEF0OiB0aW1lc3RhbXAoJ3lhbmtlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICB5YW5rUmVhc29uOiB0ZXh0KCd5YW5rX3JlYXNvbicpLFxuICBkZXByZWNhdGVkQXQ6IHRpbWVzdGFtcCgnZGVwcmVjYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBkZXByZWNhdGlvbk1lc3NhZ2U6IHRleHQoJ2RlcHJlY2F0aW9uX21lc3NhZ2UnKSxcblxuICAvLyBEZXZlbG9wZXItcG9ydGFsIGNhdGFsb2cgbWV0YWRhdGEgKG93bmVyc2hpcCAvIGxpZmVjeWNsZSAvIGNsYXNzaWZpY2F0aW9uKS5cbiAgLy8gb3duZXJJZCBkZWZhdWx0cyB0byB0aGUgY3JlYXRpbmcgdXNlciAoc2V0IGF0IGluc2VydCksIHNvIGV2ZXJ5IHBsdWdpbiBoYXNcbiAgLy8gYW4gb3duZXIgZm9yIFwibXkgc2VydmljZXNcIiB2aWV3czsgb3duZXJUeXBlIGRpc3Rpbmd1aXNoZXMgdXNlciB2cyB0ZWFtLlxuICBvd25lcklkOiB0ZXh0KCdvd25lcl9pZCcpLFxuICBvd25lclR5cGU6IHZhcmNoYXIoJ293bmVyX3R5cGUnLCB7IGxlbmd0aDogMTAgfSkuJHR5cGU8T3duZXJUeXBlPigpLFxuICBsaWZlY3ljbGU6IHZhcmNoYXIoJ2xpZmVjeWNsZScsIHsgbGVuZ3RoOiAyMCB9KVxuICAgIC4kdHlwZTxQbHVnaW5MaWZlY3ljbGU+KClcbiAgICAuZGVmYXVsdCgncHJvZHVjdGlvbicgYXMgUGx1Z2luTGlmZWN5Y2xlKVxuICAgIC5ub3ROdWxsKCksXG4gIGNyaXRpY2FsaXR5OiB2YXJjaGFyKCdjcml0aWNhbGl0eScsIHsgbGVuZ3RoOiAxMCB9KS4kdHlwZTxDcml0aWNhbGl0eT4oKSxcbiAgbGFiZWxzOiBqc29uYignbGFiZWxzJylcbiAgICAuJHR5cGU8RW50aXR5TGFiZWxzPigpXG4gICAgLmRlZmF1bHQoe30pXG4gICAgLm5vdE51bGwoKSxcbiAgbGlua3M6IGpzb25iKCdsaW5rcycpXG4gICAgLiR0eXBlPEVudGl0eUxpbmtbXT4oKVxuICAgIC5kZWZhdWx0KFtdKVxuICAgIC5ub3ROdWxsKCksXG5cbiAgLy8gQWNjZXNzIGFuZCB2aXNpYmlsaXR5IOKAlCB0aGUgc2hhcmVkIHRocmVlLXJ1bmcgbGFkZGVyIChzZWUgYXBpLWNvcmUnc1xuICAvLyBgVmlzaWJpbGl0eWApOiBgcHJpdmF0ZWAgaXMgYXV0aG9yLW9ubHkgKGBjcmVhdGVkX2J5YCksIGBvcmdgIGlzIHRoZSB3aG9sZVxuICAvLyBvd25pbmcgb3JnLCBgcHVibGljYCByZWFjaGVzIHRoZSBvcmcncyB0ZWFtcyBhbmQg4oCUIGZyb20gdGhlIHN5c3RlbSBvcmcg4oCUXG4gIC8vIGV2ZXJ5IG9yZy4gQ29uc3RyYWluZWQgYXQgdGhlIFNRTCBsYXllciB0b28gdmlhIGEgQ0hFQ0sgaW4gcG9zdGdyZXMtaW5pdC5zcWxcbiAgLy8gc28gYSB0eXBvIGNhbid0IHNuZWFrIHBhc3QgdGhlIGFwcGxpY2F0aW9uIGxheWVyLlxuICB2aXNpYmlsaXR5OiB2YXJjaGFyKCd2aXNpYmlsaXR5JywgeyBsZW5ndGg6IDEwIH0pXG4gICAgLiR0eXBlPFZpc2liaWxpdHk+KClcbiAgICAuZGVmYXVsdCgncHJpdmF0ZScpXG4gICAgLm5vdE51bGwoKSxcbiAgaXNEZWZhdWx0OiBib29sZWFuKCdpc19kZWZhdWx0JylcbiAgICAuZGVmYXVsdChmYWxzZSlcbiAgICAubm90TnVsbCgpLFxuICBpc0FjdGl2ZTogYm9vbGVhbignaXNfYWN0aXZlJylcbiAgICAuZGVmYXVsdCh0cnVlKVxuICAgIC5ub3ROdWxsKCksXG5cbiAgLy8gRGVsZXRpb24gdHJhY2tpbmcgKHNvZnQgZGVsZXRlKVxuICBkZWxldGVkQXQ6IHRpbWVzdGFtcCgnZGVsZXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBkZWxldGVkQnk6IHRleHQoJ2RlbGV0ZWRfYnknKSxcbiAgLy8gU29mdC1kZWxldGUgcHVyZ2UgZGVhZGxpbmU6IHRoZSByZXRlbnRpb24gc3dlZXAgaGFyZC1kZWxldGVzIHRvbWJzdG9uZWRcbiAgLy8gcm93cyBvbmNlIGBwdXJnZV9hZnRlcmAgaGFzIHBhc3NlZCAoc2V0IG9uIGRlbGV0ZSBhbG9uZ3NpZGUgZGVsZXRlZF9hdCkuXG4gIHB1cmdlQWZ0ZXI6IHRpbWVzdGFtcCgncHVyZ2VfYWZ0ZXInLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcblxuICAvLyBUaGUgcXVvdGEgcGVyaW9kIChgcmVzZXRBdGApIHRoaXMgdmVyc2lvbidzIGBwbHVnaW5zYCBzbG90IHdhcyBjaGFyZ2VkIHRvXG4gIC8vIGF0IHVwbG9hZDsgTlVMTCB3aGVuIG5vIHNsb3Qgd2FzIGNoYXJnZWQgKHN5c3RlbSBjYXRhbG9nIGxvYWRzKSBvciBpdCB3YXNcbiAgLy8gYWxyZWFkeSByZWZ1bmRlZC4gQSBkZWxldGUvcHVyZ2UgcmVmdW5kcyBDT05ESVRJT05BTExZIG9uIGl0ICh0aGUgcXVvdGFcbiAgLy8gc2VydmljZSBpZ25vcmVzIHRoZSByZWZ1bmQgb25jZSB0aGF0IHBlcmlvZCBoYXMgcm9sbGVkIG92ZXIpLCB0aGVuIGNsZWFycyBpdC5cbiAgcXVvdGFSZXNldEF0OiB0aW1lc3RhbXAoJ3F1b3RhX3Jlc2V0X2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG59LCAodGFibGUpID0+ICh7XG4gIC8vIFBhcnRpYWwgaW5kZXggb3ZlciBqdXN0IHRoZSB0b21ic3RvbmVzIOKAlCBkcml2ZXMgdGhlIHJldGVudGlvbiBwdXJnZSBzd2VlcC5cbiAgcHVyZ2VJZHg6IGluZGV4KCdwbHVnaW5fcHVyZ2VfaWR4Jykub24odGFibGUucHVyZ2VBZnRlcikud2hlcmUoc3FsYGRlbGV0ZWRfYXQgSVMgTk9UIE5VTExgKSxcbiAgLy8gTWlycm9ycyB0aGUgaW5kZXhlcyBwb3N0Z3Jlcy1pbml0LnNxbCBjcmVhdGVzLCBuYW1lIGZvciBuYW1lICh0aGUgU1FMIGZpbGUgaXNcbiAgLy8gd2hhdCBkZXBsb3lzOyBzY2hlbWEtcmVmbGVjdGlvbi50ZXN0LnRzIGtlZXBzIHRoZSB0d28gaW4gbG9jay1zdGVwKS5cbiAgb3JnSWRJZHg6IGluZGV4KCdpZHhfcGx1Z2luc19vcmdfaWQnKS5vbih0YWJsZS5vcmdJZCkud2hlcmUoc3FsYGRlbGV0ZWRfYXQgSVMgTlVMTGApLFxuICBuYW1lSWR4OiBpbmRleCgnaWR4X3BsdWdpbnNfbmFtZScpLm9uKHRhYmxlLm5hbWUpLndoZXJlKHNxbGBkZWxldGVkX2F0IElTIE5VTExgKSxcbiAgbmFtZVZlcnNpb25JZHg6IGluZGV4KCdpZHhfcGx1Z2luc19uYW1lX3ZlcnNpb24nKS5vbih0YWJsZS5uYW1lLCB0YWJsZS52ZXJzaW9uKS53aGVyZShzcWxgZGVsZXRlZF9hdCBJUyBOVUxMYCksXG4gIHZpc2liaWxpdHlJZHg6IGluZGV4KCdpZHhfcGx1Z2luc192aXNpYmlsaXR5Jykub24odGFibGUudmlzaWJpbGl0eSkud2hlcmUoc3FsYGRlbGV0ZWRfYXQgSVMgTlVMTGApLFxuICBpc0RlZmF1bHRJZHg6IGluZGV4KCdpZHhfcGx1Z2luc19pc19kZWZhdWx0Jykub24odGFibGUubmFtZSwgdGFibGUuaXNEZWZhdWx0KS53aGVyZShzcWxgaXNfZGVmYXVsdCA9IHRydWUgQU5EIGRlbGV0ZWRfYXQgSVMgTlVMTGApLFxuICBjYXRlZ29yeUlkeDogaW5kZXgoJ2lkeF9wbHVnaW5zX2NhdGVnb3J5Jykub24odGFibGUuY2F0ZWdvcnkpLFxuICBhY3RpdmVJZHg6IGluZGV4KCdpZHhfcGx1Z2luc19pc19hY3RpdmUnKS5vbih0YWJsZS5pc0FjdGl2ZSkud2hlcmUoc3FsYGRlbGV0ZWRfYXQgSVMgTlVMTGApLFxuICBvcmdDcmVhdGVkSWR4OiBpbmRleCgnaWR4X3BsdWdpbnNfb3JnX2NyZWF0ZWQnKS5vbih0YWJsZS5vcmdJZCwgc3FsYCR7dGFibGUuY3JlYXRlZEF0fSBERVNDYCkud2hlcmUoc3FsYGRlbGV0ZWRfYXQgSVMgTlVMTGApLFxuICBvcmdOYW1lSWR4OiBpbmRleCgnaWR4X3BsdWdpbnNfb3JnX25hbWUnKS5vbih0YWJsZS5vcmdJZCwgdGFibGUubmFtZSkud2hlcmUoc3FsYGRlbGV0ZWRfYXQgSVMgTlVMTGApLFxuXG4gIC8vIERldmVsb3Blci1wb3J0YWwgY2F0YWxvZyBpbmRleGVzOiBcIm15IHNlcnZpY2VzXCIgKG93bmVyKSArIGxpZmVjeWNsZSBmaWx0ZXIuXG4gIG93bmVySWR4OiBpbmRleCgncGx1Z2luX293bmVyX2lkeCcpLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS5vd25lcklkKSxcbiAgbGlmZWN5Y2xlSWR4OiBpbmRleCgncGx1Z2luX2xpZmVjeWNsZV9pZHgnKS5vbih0YWJsZS5vcmdJZCwgdGFibGUubGlmZWN5Y2xlKSxcblxuICAvLyBDb21wb3NpdGUgaW5kZXggZm9yIGZpbHRlcmVkIHF1ZXJpZXMgKG9yZ0lkICsgdmlzaWJpbGl0eSArIGlzQWN0aXZlKVxuICBvcmdWaXNpYmlsaXR5QWN0aXZlSWR4OiBpbmRleCgncGx1Z2luX29yZ192aXNpYmlsaXR5X2FjdGl2ZV9pZHgnKS5vbih0YWJsZS5vcmdJZCwgdGFibGUudmlzaWJpbGl0eSwgdGFibGUuaXNBY3RpdmUpLFxuICAvLyBEcml2ZXMgdGhlIFwibXkgcHJpdmF0ZSBkcmFmdHNcIiBsZWcgb2YgdGhlIHZpc2liaWxpdHkgcHJlZGljYXRlLlxuICBjcmVhdGVkQnlJZHg6IGluZGV4KCdwbHVnaW5fY3JlYXRlZF9ieV9pZHgnKS5vbih0YWJsZS5vcmdJZCwgdGFibGUuY3JlYXRlZEJ5KSxcblxuICAvLyBVbmlxdWUgY29uc3RyYWludCBvbiBuYW1lICsgdmVyc2lvbiArIG9yZ0lkXG4gIG5hbWVWZXJzaW9uT3JnVW5pcXVlOiB1bmlxdWVJbmRleCgncGx1Z2luX25hbWVfdmVyc2lvbl9vcmdfdW5pcXVlJylcbiAgICAub24odGFibGUubmFtZSwgdGFibGUudmVyc2lvbiwgdGFibGUub3JnSWQpLFxuXG4gIC8vIENoZWNrIGNvbnN0cmFpbnRzXG4gIHZlcnNpb25DaGVjazogY2hlY2soICdwbHVnaW5fdmVyc2lvbl9jaGVjaycsXG4gICAgc3FsYCR7dGFibGUudmVyc2lvbn0gfiAnXlswLTldK1xcLlswLTldK1xcLlswLTldKygtW2EtekEtWjAtOS4tXSspPyhcXCtbYS16QS1aMC05Li1dKyk/JCdgLFxuICApLFxuICBpbWFnZURpZ2VzdENoZWNrOiBjaGVjaygncGx1Z2luX2ltYWdlX2RpZ2VzdF9jaGVjaycsXG4gICAgc3FsYCR7dGFibGUuaW1hZ2VEaWdlc3R9IElTIE5VTEwgT1IgJHt0YWJsZS5pbWFnZURpZ2VzdH0gfiAnXnNoYTI1NjpbMC05YS1mXXs2NH0kJ2AsXG4gICksXG4gIGltYWdlU291cmNlQ2hlY2s6IGNoZWNrKCdwbHVnaW5faW1hZ2Vfc291cmNlX2NoZWNrJyxcbiAgICBzcWxgJHt0YWJsZS5pbWFnZVNvdXJjZX0gSVMgTlVMTCBPUiAke3RhYmxlLmltYWdlU291cmNlfSBJTiAoJ2J1aWx0JywgJ3VwbG9hZGVkJylgLFxuICApLFxufSkpO1xuXG4vKipcbiAqIFdoYXQgYSBrZXB0IHNldHVwIGltYWdlIG5lZWRzIHRvIGJlY29tZSBhIHZlcnNpb24gZXhhY3RseSBhcyBpdHMgYnVpbGQgd291bGRcbiAqIGhhdmUgbWFkZSBpdDogdGhlIHBsdWdpbiByZWNvcmQgdGhlIHVwbG9hZCBwcm9kdWNlZCwgdGhlIHVwbG9hZGVyIGFuZCB0aGVpclxuICogdmlzaWJpbGl0eS1sYWRkZXIgYXV0aG9yaXR5LCBhbmQgdGhlIHB1Ymxpc2ggcmVxdWVzdCB0aGUgdXBsb2FkIGFza2VkIGZvci5cbiAqIE9wYXF1ZSB0byB0aGUgZGF0YWJhc2UgKHRoZSBwbHVnaW4gc2VydmljZSBvd25zIHRoZSBzaGFwZSkuXG4gKi9cbmV4cG9ydCB0eXBlIEtlcHRTZXR1cEltYWdlQnVpbGQgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuLyoqXG4gKiBHYXRlLXJlZnVzZWQgaW1hZ2VzIGZyb20gdGhlIFNFVFVQIGNhdGFsb2cgbG9hZCwga2VwdCBzaWduZWQgaW4gdGhlIHJlZ2lzdHJ5XG4gKiBmb3IgcHJvbW90aW9uIGluc3RlYWQgb2YgZGlzY2FyZGVkIChkb2NzL3BsdWdpbi1wdWJsaXNoaW5nLm1kIFwiU2NhbiBnYXRlc1wiKS5cbiAqIFdyaXR0ZW4gYnkgdGhlIGJ1aWxkIHdvcmtlciBmb3IgYSBzeXN0ZW0tb3JnIHVwbG9hZCBtYXJrZWQgYHNldHVwTG9hZGA7XG4gKiBwcm9tb3RlZCAocmUtZ2F0ZWQsIHRoZW4gc2F2ZWQgdGhyb3VnaCB0aGUgYnVpbGQncyBvd24gc3VjY2VzcyBwYXRoKSBvclxuICogZGlzY2FyZGVkIGFmdGVyIGBQTFVHSU5fS0VQVF9TRVRVUF9JTUFHRV9UVExfREFZU2AuIFN5c3RlbSBvcmcgb25seSDigJQgbGlzdGVkXG4gKiBpbiB0aGUgb3JnIGNhc2NhZGUgZm9yIGl0cyBzY2hlbWEtcmVmbGVjdGlvbiBndWFyZCwgYnV0IHRoZSBjYXNjYWRlIG5ldmVyXG4gKiBkZWxldGVzIHRoZSBzeXN0ZW0gb3JnLCBzbyBpdCBuZXZlciBtYXRjaGVzIGEgcm93LlxuICpcbiAqIEB0YWJsZSBwbHVnaW5fa2VwdF9zZXR1cF9pbWFnZXNcbiAqL1xuZXhwb3J0IGNvbnN0IHBsdWdpbktlcHRTZXR1cEltYWdlID0gcGdUYWJsZSgncGx1Z2luX2tlcHRfc2V0dXBfaW1hZ2VzJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHBsdWdpbk5hbWU6IHZhcmNoYXIoJ3BsdWdpbl9uYW1lJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHBsdWdpblZlcnNpb246IHZhcmNoYXIoJ3BsdWdpbl92ZXJzaW9uJywgeyBsZW5ndGg6IDUwIH0pLm5vdE51bGwoKSxcbiAgaW1hZ2VEaWdlc3Q6IHZhcmNoYXIoJ2ltYWdlX2RpZ2VzdCcsIHsgbGVuZ3RoOiA3MSB9KS5ub3ROdWxsKCksXG4gIGltYWdlU291cmNlOiB2YXJjaGFyKCdpbWFnZV9zb3VyY2UnLCB7IGxlbmd0aDogMTAgfSkuJHR5cGU8SW1hZ2VTb3VyY2U+KCkubm90TnVsbCgpLFxuICByZWZ1c2FsQ29kZTogdmFyY2hhcigncmVmdXNhbF9jb2RlJywgeyBsZW5ndGg6IDY0IH0pLm5vdE51bGwoKSxcbiAgcmVmdXNhbE1lc3NhZ2U6IHRleHQoJ3JlZnVzYWxfbWVzc2FnZScpLm5vdE51bGwoKSxcbiAgcmVmdXNhbEZpbmRpbmdzOiBqc29uYigncmVmdXNhbF9maW5kaW5ncycpLiR0eXBlPHVua25vd25bXT4oKS5kZWZhdWx0KFtdKS5ub3ROdWxsKCksXG4gIGJ1aWxkOiBqc29uYignYnVpbGQnKS4kdHlwZTxLZXB0U2V0dXBJbWFnZUJ1aWxkPigpLm5vdE51bGwoKSxcbiAga2VwdEJ5OiB0ZXh0KCdrZXB0X2J5Jykubm90TnVsbCgpLFxuICBrZXB0QXQ6IHRpbWVzdGFtcCgna2VwdF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG4gIGV4cGlyZXNBdDogdGltZXN0YW1wKCdleHBpcmVzX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkubm90TnVsbCgpLFxufSwgKHRhYmxlKSA9PiAoe1xuICBpZGVudGl0eUlkeDogdW5pcXVlSW5kZXgoJ3BsdWdpbl9rZXB0X3NldHVwX2ltYWdlX2lkZW50aXR5X2lkeCcpLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS5wbHVnaW5OYW1lLCB0YWJsZS5wbHVnaW5WZXJzaW9uLCB0YWJsZS5pbWFnZURpZ2VzdCksXG4gIGV4cGlyZXNJZHg6IGluZGV4KCdwbHVnaW5fa2VwdF9zZXR1cF9pbWFnZV9leHBpcmVzX2lkeCcpLm9uKHRhYmxlLmV4cGlyZXNBdCksXG4gIGltYWdlRGlnZXN0Q2hlY2s6IGNoZWNrKCdwbHVnaW5fa2VwdF9zZXR1cF9pbWFnZV9kaWdlc3RfY2hlY2snLCBzcWxgJHt0YWJsZS5pbWFnZURpZ2VzdH0gfiAnXnNoYTI1NjpbMC05YS1mXXs2NH0kJ2ApLFxuICBpbWFnZVNvdXJjZUNoZWNrOiBjaGVjaygncGx1Z2luX2tlcHRfc2V0dXBfaW1hZ2Vfc291cmNlX2NoZWNrJywgc3FsYCR7dGFibGUuaW1hZ2VTb3VyY2V9IElOICgnYnVpbHQnLCAndXBsb2FkZWQnKWApLFxufSkpO1xuXG5leHBvcnQgdHlwZSBQbHVnaW5LZXB0U2V0dXBJbWFnZSA9IHR5cGVvZiBwbHVnaW5LZXB0U2V0dXBJbWFnZS4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBQbHVnaW5LZXB0U2V0dXBJbWFnZUluc2VydCA9IHR5cGVvZiBwbHVnaW5LZXB0U2V0dXBJbWFnZS4kaW5mZXJJbnNlcnQ7XG5cbi8qKlxuICogVHlwZVNjcmlwdCB0eXBlcyByZXByZXNlbnRpbmcgZGF0YWJhc2Ugcm93c1xuICovXG5leHBvcnQgdHlwZSBQbHVnaW4gPSB0eXBlb2YgcGx1Z2luLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFBsdWdpbkluc2VydCA9IHR5cGVvZiBwbHVnaW4uJGluZmVySW5zZXJ0O1xuXG4vKipcbiAqIEhlbHBlciB0eXBlcyBmb3Igd29ya2luZyB3aXRoIHBhcnRpYWwgdXBkYXRlc1xuICovXG5leHBvcnQgdHlwZSBQbHVnaW5VcGRhdGUgPSBQYXJ0aWFsPE9taXQ8UGx1Z2luSW5zZXJ0LCAnaWQnIHwgJ2NyZWF0ZWRBdCcgfCAnY3JlYXRlZEJ5Jz4+O1xuIl19
299
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGF0YWJhc2Uvc2NoZW1hL3BsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFDTCxXQUFXLEVBQUUsVUFBVSxFQUFFLGFBQWEsR0FFdkMsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFtRGxJOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxTQUFTLEVBQUU7SUFDdkMsY0FBYztJQUNkLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsYUFBYSxFQUFFO0lBRTNDLGtDQUFrQztJQUNsQyxLQUFLLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztTQUN0QyxPQUFPLENBQUMsYUFBYSxDQUFDO1NBQ3RCLE9BQU8sRUFBRTtJQUVaLGVBQWU7SUFDZixTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQztTQUMxQixPQUFPLENBQUMsYUFBYSxDQUFDO1NBQ3RCLE9BQU8sRUFBRTtJQUNaLFNBQVMsRUFBRSxTQUFTLENBQUMsWUFBWSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO1NBQ3ZELFVBQVUsRUFBRTtTQUNaLE9BQU8sRUFBRTtJQUNaLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDO1NBQzFCLE9BQU8sQ0FBQyxhQUFhLENBQUM7U0FDdEIsT0FBTyxFQUFFO0lBQ1osU0FBUyxFQUFFLFNBQVMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7U0FDdkQsVUFBVSxFQUFFO1NBQ1osT0FBTyxFQUFFO0lBRVosMEJBQTBCO0lBQzFCLElBQUksRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO1NBQ25DLE9BQU8sRUFBRTtJQUNaLFdBQVcsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQ2hDLFFBQVEsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDO1NBQ3hCLEtBQUssRUFBWTtTQUNqQixPQUFPLENBQUMsRUFBRSxDQUFDO1NBQ1gsT0FBTyxFQUFFO0lBQ1osT0FBTyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUM7U0FDeEMsT0FBTyxDQUFDLE9BQU8sQ0FBQztTQUNoQixPQUFPLEVBQUU7SUFFWix3QkFBd0I7SUFDeEIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUM7U0FDMUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztTQUNsQixPQUFPLEVBQUU7SUFFWix1QkFBdUI7SUFDdkIsUUFBUSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUM7U0FDeEIsS0FBSyxFQUE2QztTQUNsRCxPQUFPLENBQUMsRUFBRSxDQUFDO1NBQ1gsT0FBTyxFQUFFO0lBQ1osVUFBVSxFQUFFLE9BQU8sQ0FBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUM7U0FDL0MsS0FBSyxFQUFjO1NBQ25CLE9BQU8sQ0FBQyxlQUE2QixDQUFDO1NBQ3RDLE9BQU8sRUFBRTtJQUNaLFdBQVcsRUFBRSxPQUFPLENBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO1NBQ2pELEtBQUssRUFBZTtTQUNwQixPQUFPLENBQUMsT0FBc0IsQ0FBQztTQUMvQixPQUFPLEVBQUU7SUFDWixPQUFPLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQztJQUMzQixlQUFlLEVBQUUsT0FBTyxDQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO1NBQ3pELEtBQUssRUFBOEI7U0FDbkMsT0FBTyxDQUFDLE1BQU0sQ0FBQztTQUNmLE9BQU8sRUFBRTtJQUNaLE9BQU8sRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDO1NBQ3RCLEtBQUssRUFBa0I7U0FDdkIsT0FBTyxDQUFDLEVBQUUsQ0FBQztTQUNYLE9BQU8sRUFBRTtJQUNaLHNCQUFzQixFQUFFLE9BQU8sQ0FBQywwQkFBMEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUUzRSxzQkFBc0I7SUFDdEIsR0FBRyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUM7U0FDZCxLQUFLLEVBQTBCO1NBQy9CLE9BQU8sQ0FBQyxFQUFFLENBQUM7U0FDWCxPQUFPLEVBQUU7SUFDWixTQUFTLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQztTQUMzQixLQUFLLEVBQTBCO1NBQy9CLE9BQU8sQ0FBQyxFQUFFLENBQUM7U0FDWCxPQUFPLEVBQUU7SUFDWixlQUFlLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1NBQ3RDLEtBQUssRUFBRTtTQUNQLE9BQU8sQ0FBQyxFQUFFLENBQUM7U0FDWCxPQUFPLEVBQUU7SUFDWixRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQztTQUN2QixLQUFLLEVBQUU7U0FDUCxPQUFPLENBQUMsRUFBRSxDQUFDO1NBQ1gsT0FBTyxFQUFFO0lBRVosK0RBQStEO0lBQy9ELDZFQUE2RTtJQUM3RSwwRUFBMEU7SUFDMUUsaUVBQWlFO0lBQ2pFLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQztTQUN6QyxLQUFLLEVBQVk7U0FDakIsT0FBTyxDQUFDLEVBQUUsQ0FBQztTQUNYLE9BQU8sRUFBRTtJQUNaLFlBQVksRUFBRSxLQUFLLENBQUMsZUFBZSxDQUFDO1NBQ2pDLEtBQUssRUFBWTtTQUNqQixPQUFPLENBQUMsRUFBRSxDQUFDO1NBQ1gsT0FBTyxFQUFFO0lBQ1osYUFBYSxFQUFFLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQztTQUNuQyxLQUFLLEVBQTJDO1NBQ2hELE9BQU8sQ0FBQyxFQUFFLENBQUM7U0FDWCxPQUFPLEVBQUU7SUFDWixTQUFTLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQztTQUMzQixLQUFLLEVBQTJDO1NBQ2hELE9BQU8sQ0FBQyxFQUFFLENBQUM7U0FDWCxPQUFPLEVBQUU7SUFDWixTQUFTLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLEtBQUssRUFBbUI7SUFDdkQsYUFBYSxFQUFFLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQztTQUNuQyxLQUFLLEVBQVk7U0FDakIsT0FBTyxDQUFDLEVBQUUsQ0FBQztTQUNYLE9BQU8sRUFBRTtJQUVaLHlFQUF5RTtJQUN6RSw4RUFBOEU7SUFDOUUsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDM0IsVUFBVSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDL0IsMkJBQTJCO0lBQzNCLE9BQU8sRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQzNDLFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVCLFdBQVcsRUFBRSxPQUFPLENBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3RELFNBQVMsRUFBRSxPQUFPLENBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ2xELElBQUksRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFjO0lBQ3ZDLFlBQVksRUFBRSxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUMsS0FBSyxFQUFzQjtJQUVoRSw2REFBNkQ7SUFDN0QsMEVBQTBFO0lBQzFFLHFFQUFxRTtJQUNyRSw2RUFBNkU7SUFDN0UsMkVBQTJFO0lBQzNFLHNFQUFzRTtJQUN0RSxPQUFPLEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUM1QyxXQUFXLEVBQUUsT0FBTyxDQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNyRCxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDaEUsZUFBZSxFQUFFLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztTQUN2QyxLQUFLLEVBQW1CO1NBQ3hCLE9BQU8sQ0FBQyxFQUFFLENBQUM7U0FDWCxPQUFPLEVBQUU7SUFFWix1QkFBdUI7SUFDdkIsVUFBVSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDOUIsU0FBUyxFQUFFLE9BQU8sQ0FBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUM7U0FDN0MsT0FBTyxDQUFDLGFBQWEsQ0FBQztTQUN0QixPQUFPLEVBQUU7SUFFWiw2RUFBNkU7SUFDN0UsdUVBQXVFO0lBQ3ZFLDhFQUE4RTtJQUM5RSxpRUFBaUU7SUFDakUsNEVBQTRFO0lBQzVFLG1FQUFtRTtJQUNuRSxXQUFXLEVBQUUsT0FBTyxDQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNwRCxXQUFXLEVBQUUsT0FBTyxDQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBZTtJQUV6RSw0RUFBNEU7SUFDNUUsa0VBQWtFO0lBQ2xFLFlBQVksRUFBRSxPQUFPLENBQUMsZUFBZSxDQUFDO0lBQ3RDLFFBQVEsRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDO0lBQzlCLFVBQVUsRUFBRSxPQUFPLENBQUMsYUFBYSxDQUFDO0lBQ2xDLE9BQU8sRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDO0lBQzVCLDJFQUEyRTtJQUMzRSxpRkFBaUY7SUFDakYsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLHVCQUF1QixDQUFDO0lBQ3JELGVBQWUsRUFBRSxPQUFPLENBQUMsbUJBQW1CLENBQUM7SUFDN0MsU0FBUyxFQUFFLFNBQVMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDMUQsOEVBQThFO0lBQzlFLDZFQUE2RTtJQUM3RSxhQUFhLEVBQUUsU0FBUyxDQUFDLGlCQUFpQixFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ25FLFFBQVEsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsS0FBSyxFQUFrQjtJQUNwRDs7Ozs7Ozs7OztPQVVHO0lBQ0gsV0FBVyxFQUFFLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQyxLQUFLLEVBQXFCO0lBQzdELFNBQVMsRUFBRSxPQUFPLENBQUMsYUFBYSxDQUFDO0lBRWpDLHdFQUF3RTtJQUN4RSx5RUFBeUU7SUFDekUsNEVBQTRFO0lBQzVFLHdFQUF3RTtJQUN4RSxRQUFRLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQztTQUMxQixPQUFPLENBQUMsS0FBSyxDQUFDO1NBQ2QsT0FBTyxFQUFFO0lBQ1osUUFBUSxFQUFFLFNBQVMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDeEQsUUFBUSxFQUFFLFNBQVMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDeEQsVUFBVSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDL0IsWUFBWSxFQUFFLFNBQVMsQ0FBQyxlQUFlLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDaEUsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDO0lBRS9DLDhFQUE4RTtJQUM5RSw2RUFBNkU7SUFDN0UsMEVBQTBFO0lBQzFFLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLFNBQVMsRUFBRSxPQUFPLENBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFhO0lBQ25FLFNBQVMsRUFBRSxPQUFPLENBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO1NBQzVDLEtBQUssRUFBbUI7U0FDeEIsT0FBTyxDQUFDLFlBQStCLENBQUM7U0FDeEMsT0FBTyxFQUFFO0lBQ1osV0FBVyxFQUFFLE9BQU8sQ0FBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQWU7SUFDeEUsTUFBTSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUM7U0FDcEIsS0FBSyxFQUFnQjtTQUNyQixPQUFPLENBQUMsRUFBRSxDQUFDO1NBQ1gsT0FBTyxFQUFFO0lBQ1osS0FBSyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUM7U0FDbEIsS0FBSyxFQUFnQjtTQUNyQixPQUFPLENBQUMsRUFBRSxDQUFDO1NBQ1gsT0FBTyxFQUFFO0lBRVosdUVBQXVFO0lBQ3ZFLDZFQUE2RTtJQUM3RSwyRUFBMkU7SUFDM0UsK0VBQStFO0lBQy9FLG9EQUFvRDtJQUNwRCxVQUFVLEVBQUUsT0FBTyxDQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztTQUM5QyxLQUFLLEVBQWM7U0FDbkIsT0FBTyxDQUFDLFNBQVMsQ0FBQztTQUNsQixPQUFPLEVBQUU7SUFDWixTQUFTLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQztTQUM3QixPQUFPLENBQUMsS0FBSyxDQUFDO1NBQ2QsT0FBTyxFQUFFO0lBQ1osUUFBUSxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUM7U0FDM0IsT0FBTyxDQUFDLElBQUksQ0FBQztTQUNiLE9BQU8sRUFBRTtJQUVaLGtDQUFrQztJQUNsQyxTQUFTLEVBQUUsU0FBUyxDQUFDLFlBQVksRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUMxRCxTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM3QiwwRUFBMEU7SUFDMUUsMkVBQTJFO0lBQzNFLFVBQVUsRUFBRSxTQUFTLENBQUMsYUFBYSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO0lBRTVELDRFQUE0RTtJQUM1RSw0RUFBNEU7SUFDNUUsMEVBQTBFO0lBQzFFLGdGQUFnRjtJQUNoRixZQUFZLEVBQUUsU0FBUyxDQUFDLGdCQUFnQixFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO0NBQ2xFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDYiw2RUFBNkU7SUFDN0UsUUFBUSxFQUFFLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQSx3QkFBd0IsQ0FBQztJQUMzRixnRkFBZ0Y7SUFDaEYsdUVBQXVFO0lBQ3ZFLFFBQVEsRUFBRSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUEsb0JBQW9CLENBQUM7SUFDcEYsT0FBTyxFQUFFLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQSxvQkFBb0IsQ0FBQztJQUNoRixjQUFjLEVBQUUsS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUEsb0JBQW9CLENBQUM7SUFDOUcsYUFBYSxFQUFFLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQSxvQkFBb0IsQ0FBQztJQUNsRyxZQUFZLEVBQUUsS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUEsMENBQTBDLENBQUM7SUFDbEksV0FBVyxFQUFFLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO0lBQzdELFNBQVMsRUFBRSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUEsb0JBQW9CLENBQUM7SUFDM0YsYUFBYSxFQUFFLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQSxHQUFHLEtBQUssQ0FBQyxTQUFTLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUEsb0JBQW9CLENBQUM7SUFDNUgsVUFBVSxFQUFFLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFBLG9CQUFvQixDQUFDO0lBRXBHLDhFQUE4RTtJQUM5RSxRQUFRLEVBQUUsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQztJQUNsRSxZQUFZLEVBQUUsS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQztJQUU1RSx1RUFBdUU7SUFDdkUsc0JBQXNCLEVBQUUsS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDO0lBQ25ILGtFQUFrRTtJQUNsRSxZQUFZLEVBQUUsS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQztJQUU3RSw4Q0FBOEM7SUFDOUMsb0JBQW9CLEVBQUUsV0FBVyxDQUFDLGdDQUFnQyxDQUFDO1NBQ2hFLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUU3QyxvQkFBb0I7SUFDcEIsWUFBWSxFQUFFLEtBQUssQ0FBRSxzQkFBc0IsRUFDekMsR0FBRyxDQUFBLEdBQUcsS0FBSyxDQUFDLE9BQU8sb0VBQW9FLENBQ3hGO0lBQ0QsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLDJCQUEyQixFQUNqRCxHQUFHLENBQUEsR0FBRyxLQUFLLENBQUMsV0FBVyxlQUFlLEtBQUssQ0FBQyxXQUFXLDRCQUE0QixDQUNwRjtJQUNELGdCQUFnQixFQUFFLEtBQUssQ0FBQywyQkFBMkIsRUFDakQsR0FBRyxDQUFBLEdBQUcsS0FBSyxDQUFDLFdBQVcsZUFBZSxLQUFLLENBQUMsV0FBVywyQkFBMkIsQ0FDbkY7Q0FDRixDQUFDLENBQUMsQ0FBQztBQVVKOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxPQUFPLENBQUMsMEJBQTBCLEVBQUU7SUFDdEUsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxhQUFhLEVBQUU7SUFDM0MsS0FBSyxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDbkQsVUFBVSxFQUFFLE9BQU8sQ0FBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDN0QsYUFBYSxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUNsRSxXQUFXLEVBQUUsT0FBTyxDQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUM5RCxXQUFXLEVBQUUsT0FBTyxDQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBZSxDQUFDLE9BQU8sRUFBRTtJQUNuRixXQUFXLEVBQUUsT0FBTyxDQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUM5RCxjQUFjLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ2pELGVBQWUsRUFBRSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxLQUFLLEVBQWEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ25GLEtBQUssRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUF1QixDQUFDLE9BQU8sRUFBRTtJQUM1RCxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUNqQyxNQUFNLEVBQUUsU0FBUyxDQUFDLFNBQVMsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLE9BQU8sRUFBRTtJQUMzRSxTQUFTLEVBQUUsU0FBUyxDQUFDLFlBQVksRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtDQUNyRSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2IsV0FBVyxFQUFFLFdBQVcsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDO0lBQzFJLFVBQVUsRUFBRSxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztJQUM1RSxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsc0NBQXNDLEVBQUUsR0FBRyxDQUFBLEdBQUcsS0FBSyxDQUFDLFdBQVcsNEJBQTRCLENBQUM7SUFDcEgsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLHNDQUFzQyxFQUFFLEdBQUcsQ0FBQSxHQUFHLEtBQUssQ0FBQyxXQUFXLDJCQUEyQixDQUFDO0NBQ3BILENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7XG4gIENvbXB1dGVUeXBlLCBQbHVnaW5UeXBlLCBTWVNURU1fT1JHX0lELCB0eXBlIENyaXRpY2FsaXR5LCB0eXBlIEVudGl0eUxhYmVscywgdHlwZSBFbnRpdHlMaW5rLCB0eXBlIExpZmVjeWNsZSxcbiAgdHlwZSBNZXRhZGF0YVNvdXJjZXMsIHR5cGUgT3duZXJUeXBlLCB0eXBlIFBsdWdpblNjYW5GbGFnLCB0eXBlIFBsdWdpblNjYW5TdW1tYXJ5LCB0eXBlIFZpc2liaWxpdHksXG59IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcbmltcG9ydCB7IHNxbCB9IGZyb20gJ2RyaXp6bGUtb3JtJztcbmltcG9ydCB7IGJvb2xlYW4sIGludGVnZXIsIHZhcmNoYXIsIHBnVGFibGUsIHRleHQsIHRpbWVzdGFtcCwgdXVpZCwganNvbmIsIGluZGV4LCB1bmlxdWVJbmRleCwgY2hlY2sgfSBmcm9tICdkcml6emxlLW9ybS9wZy1jb3JlJztcblxuLyoqXG4gKiBTZWNyZXQgcmVxdWlyZW1lbnQgZm9yIGEgcGx1Z2luLlxuICogRGVjbGFyZXMgbmFtZWQgc2VjcmV0cyB0aGUgcGx1Z2luIGV4cGVjdHMgYXQgYnVpbGQgdGltZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5TZWNyZXQge1xuICBuYW1lOiBzdHJpbmc7XG4gIHJlcXVpcmVkOiBib29sZWFuO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBXaGVyZSBhIHBsdWdpbidzIGltYWdlIGNhbWUgZnJvbTogYGJ1aWx0YCBieSB0aGUgcGxhdGZvcm0ncyBCdWlsZEtpdCAoY2Fycmllc1xuICogU0xTQSBwcm92ZW5hbmNlKSBvciBgdXBsb2FkZWRgIGFzIGEgcHJlYnVpbHQgYGltYWdlLnRhcmAgKFNCT00gKyBzaWduYXR1cmVcbiAqIG9ubHkg4oCUIHRoZSBwbGF0Zm9ybSBuZXZlciBzYXcgdGhlIGJ1aWxkKS5cbiAqL1xuZXhwb3J0IHR5cGUgSW1hZ2VTb3VyY2UgPSAnYnVpbHQnIHwgJ3VwbG9hZGVkJztcblxuLyoqXG4gKiBQbHVnaW4gbGlmZWN5Y2xlOiB0aGUgc2hhcmVkIGNhdGFsb2cge0BsaW5rIExpZmVjeWNsZX0gcGx1cyBgeWFua2VkYCwgd2hpY2hcbiAqIG9ubHkgcGx1Z2luIHZlcnNpb25zIGNhbiByZWFjaCAoYSB5YW5rZWQgdmVyc2lvbiBzdG9wcyByZXNvbHZpbmcgZm9yIG5ld1xuICogc3ludGhzKS4gYHlhbmtlZEF0YCAvIGBkZXByZWNhdGVkQXRgIGFyZSB0aGUgYXV0aG9yaXRhdGl2ZSB0aW1lc3RhbXBzOyB0aGVcbiAqIGxpZmVjeWNsZSB2YWx1ZSBtaXJyb3JzIHRoZW0gZm9yIGNhdGFsb2cgZmlsdGVyaW5nLlxuICovXG5leHBvcnQgdHlwZSBQbHVnaW5MaWZlY3ljbGUgPSBMaWZlY3ljbGUgfCAneWFua2VkJztcblxuLyoqIENvZXJjaW9uIHR5cGUgYSBgcmVxdWlyZWRNZXRhZGF0YWAgLyBgcmVxdWlyZWRWYXJzYCBrZXkgaXMgZGVjbGFyZWQgYXMuICovXG5leHBvcnQgdHlwZSBQbHVnaW5Db250cmFjdFZhbHVlVHlwZSA9ICdzdHJpbmcnIHwgJ251bWJlcicgfCAnYm9vbCcgfCAnanNvbic7XG5cbi8qKlxuICogVGhlIHNwZWMncyBzbW9rZS10ZXN0IGRlY2xhcmF0aW9uLiBUb2RheSBhIGJhcmUgY29tbWFuZCBzdHJpbmc7IHN0b3JlZCBhc1xuICogSlNPTkIgc28gYSBzdHJ1Y3R1cmVkIGZvcm0gY2FuIGZvbGxvdyB3aXRob3V0IGFub3RoZXIgY29sdW1uLlxuICovXG5leHBvcnQgdHlwZSBQbHVnaW5TbW9rZVRlc3QgPSBzdHJpbmcgfCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuLyoqIEEgY3VyYXRlZCBpY29uOiBhIGtleSBpbnRvIHRoZSBjdXJhdGVkIHNldCwgcGx1cyBhbiBvcHRpb25hbCBiYWRnZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luSWNvbiB7XG4gIGtleTogc3RyaW5nO1xuICBiYWRnZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBTdG9yYWdlIGtleXMgb2YgYW4gdXBsb2FkZWQgaWNvbidzIHJlLWVuY29kZWQgV2ViUCByZW5kaXRpb25zIChpbWFnZS1yZWdpc3RyeVxuICogZGVjb2RlcyArIHJlLWVuY29kZXMgZXZlcnkgdXBsb2FkOyB0aGUgcmF3IGZpbGUgYW5kIFNWRyBhcmUgbmV2ZXIgc3RvcmVkKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5VcGxvYWRlZEljb24ge1xuICBrZXkyNTY6IHN0cmluZztcbiAga2V5NjQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUYWJsZSBmb3Igc3RvcmluZyByZXVzYWJsZSBwbHVnaW4gY29uZmlndXJhdGlvbnMuXG4gKiBQbHVnaW5zIGRlZmluZSB0aGUgYmVoYXZpb3Igb2Ygc3ludGgvYnVpbGQgc3RlcHMgaW4gQ0RLIHBpcGVsaW5lcy5cbiAqXG4gKiBGZWF0dXJlcyAqIC0gVmVyc2lvbmluZyBzdXBwb3J0IHdpdGggc2VtYW50aWMgdmVyc2lvbmluZ1xuICogLSBBY2Nlc3MgY29udHJvbCB2aWEgb3JnSWQgYW5kIHRoZSB0aHJlZS1ydW5nIGB2aXNpYmlsaXR5YCBsYWRkZXJcbiAqIC0gRnVsbCBhdWRpdCB0cmFpbCAoY3JlYXRlZC91cGRhdGVkIGJ5L2F0KVxuICogLSBGbGV4aWJsZSBtZXRhZGF0YSBzdG9yYWdlIHZpYSBKU09OQlxuICogLSBTdXBwb3J0IGZvciBib3RoIFNoZWxsU3RlcCBhbmQgQ29kZUJ1aWxkU3RlcCB0eXBlc1xuICpcbiAqIEB0YWJsZSBwbHVnaW5zXG4gKi9cbmV4cG9ydCBjb25zdCBwbHVnaW4gPSBwZ1RhYmxlKCdwbHVnaW5zJywge1xuICAvLyBQcmltYXJ5IGtleVxuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuXG4gIC8vIE9yZ2FuaXphdGlvbiBhbmQgYWNjZXNzIGNvbnRyb2xcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSlcbiAgICAuZGVmYXVsdChTWVNURU1fT1JHX0lEKVxuICAgIC5ub3ROdWxsKCksXG5cbiAgLy8gQXVkaXQgZmllbGRzXG4gIGNyZWF0ZWRCeTogdGV4dCgnY3JlYXRlZF9ieScpXG4gICAgLmRlZmF1bHQoU1lTVEVNX09SR19JRClcbiAgICAubm90TnVsbCgpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pXG4gICAgLmRlZmF1bHROb3coKVxuICAgIC5ub3ROdWxsKCksXG4gIHVwZGF0ZWRCeTogdGV4dCgndXBkYXRlZF9ieScpXG4gICAgLmRlZmF1bHQoU1lTVEVNX09SR19JRClcbiAgICAubm90TnVsbCgpLFxuICB1cGRhdGVkQXQ6IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pXG4gICAgLmRlZmF1bHROb3coKVxuICAgIC5ub3ROdWxsKCksXG5cbiAgLy8gQ29yZSBwbHVnaW4gaW5mb3JtYXRpb25cbiAgbmFtZTogdmFyY2hhcignbmFtZScsIHsgbGVuZ3RoOiAyNTUgfSlcbiAgICAubm90TnVsbCgpLFxuICBkZXNjcmlwdGlvbjogdGV4dCgnZGVzY3JpcHRpb24nKSxcbiAga2V5d29yZHM6IGpzb25iKCdrZXl3b3JkcycpXG4gICAgLiR0eXBlPHN0cmluZ1tdPigpXG4gICAgLmRlZmF1bHQoW10pXG4gICAgLm5vdE51bGwoKSxcbiAgdmVyc2lvbjogdmFyY2hhcigndmVyc2lvbicsIHsgbGVuZ3RoOiA1MCB9KVxuICAgIC5kZWZhdWx0KCcxLjAuMCcpXG4gICAgLm5vdE51bGwoKSxcblxuICAvLyBQbHVnaW4gY2xhc3NpZmljYXRpb25cbiAgY2F0ZWdvcnk6IHZhcmNoYXIoJ2NhdGVnb3J5JywgeyBsZW5ndGg6IDUwIH0pXG4gICAgLmRlZmF1bHQoJ3Vua25vd24nKVxuICAgIC5ub3ROdWxsKCksXG5cbiAgLy8gUGx1Z2luIGNvbmZpZ3VyYXRpb25cbiAgbWV0YWRhdGE6IGpzb25iKCdtZXRhZGF0YScpXG4gICAgLiR0eXBlPFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+PigpXG4gICAgLmRlZmF1bHQoe30pXG4gICAgLm5vdE51bGwoKSxcbiAgcGx1Z2luVHlwZTogdmFyY2hhcigncGx1Z2luX3R5cGUnLCB7IGxlbmd0aDogNTAgfSlcbiAgICAuJHR5cGU8UGx1Z2luVHlwZT4oKVxuICAgIC5kZWZhdWx0KCdDb2RlQnVpbGRTdGVwJyBhcyBQbHVnaW5UeXBlKVxuICAgIC5ub3ROdWxsKCksXG4gIGNvbXB1dGVUeXBlOiB2YXJjaGFyKCdjb21wdXRlX3R5cGUnLCB7IGxlbmd0aDogNTAgfSlcbiAgICAuJHR5cGU8Q29tcHV0ZVR5cGU+KClcbiAgICAuZGVmYXVsdCgnU01BTEwnIGFzIENvbXB1dGVUeXBlKVxuICAgIC5ub3ROdWxsKCksXG4gIHRpbWVvdXQ6IGludGVnZXIoJ3RpbWVvdXQnKSxcbiAgZmFpbHVyZUJlaGF2aW9yOiB2YXJjaGFyKCdmYWlsdXJlX2JlaGF2aW9yJywgeyBsZW5ndGg6IDEwIH0pXG4gICAgLiR0eXBlPCdmYWlsJyB8ICd3YXJuJyB8ICdpZ25vcmUnPigpXG4gICAgLmRlZmF1bHQoJ2ZhaWwnKVxuICAgIC5ub3ROdWxsKCksXG4gIHNlY3JldHM6IGpzb25iKCdzZWNyZXRzJylcbiAgICAuJHR5cGU8UGx1Z2luU2VjcmV0W10+KClcbiAgICAuZGVmYXVsdChbXSlcbiAgICAubm90TnVsbCgpLFxuICBwcmltYXJ5T3V0cHV0RGlyZWN0b3J5OiB2YXJjaGFyKCdwcmltYXJ5X291dHB1dF9kaXJlY3RvcnknLCB7IGxlbmd0aDogMjggfSksXG5cbiAgLy8gQnVpbGQgY29uZmlndXJhdGlvblxuICBlbnY6IGpzb25iKCdlbnYnKVxuICAgIC4kdHlwZTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PigpXG4gICAgLmRlZmF1bHQoe30pXG4gICAgLm5vdE51bGwoKSxcbiAgYnVpbGRBcmdzOiBqc29uYignYnVpbGRfYXJncycpXG4gICAgLiR0eXBlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KClcbiAgICAuZGVmYXVsdCh7fSlcbiAgICAubm90TnVsbCgpLFxuICBpbnN0YWxsQ29tbWFuZHM6IHRleHQoJ2luc3RhbGxfY29tbWFuZHMnKVxuICAgIC5hcnJheSgpXG4gICAgLmRlZmF1bHQoW10pXG4gICAgLm5vdE51bGwoKSxcbiAgY29tbWFuZHM6IHRleHQoJ2NvbW1hbmRzJylcbiAgICAuYXJyYXkoKVxuICAgIC5kZWZhdWx0KFtdKVxuICAgIC5ub3ROdWxsKCksXG5cbiAgLy8gU3BlYyBjb250cmFjdCwgcGVyc2lzdGVkIChub3QganVzdCB2YWxpZGF0ZWQgYXQgdXBsb2FkKTogdGhlXG4gIC8vIGB7eyBwaXBlbGluZS5tZXRhZGF0YS5YIH19YCAvIGB7eyBwaXBlbGluZS52YXJzLlggfX1gIGtleXMgYSBwaXBlbGluZSBtdXN0XG4gIC8vIHN1cHBseSwgdGhlaXIgZGVjbGFyZWQgY29lcmNpb24gdHlwZXMsIHRoZSBzbW9rZSB0ZXN0LCBhbmQgdGhlIGRlY2xhcmVkXG4gIC8vIG91dGJvdW5kIGhvc3RuYW1lcyAoc3BlYyBgbmV0d29yay5lZ3Jlc3NgKSBzaG93biB0byBjb25zdW1lcnMuXG4gIHJlcXVpcmVkTWV0YWRhdGE6IGpzb25iKCdyZXF1aXJlZF9tZXRhZGF0YScpXG4gICAgLiR0eXBlPHN0cmluZ1tdPigpXG4gICAgLmRlZmF1bHQoW10pXG4gICAgLm5vdE51bGwoKSxcbiAgcmVxdWlyZWRWYXJzOiBqc29uYigncmVxdWlyZWRfdmFycycpXG4gICAgLiR0eXBlPHN0cmluZ1tdPigpXG4gICAgLmRlZmF1bHQoW10pXG4gICAgLm5vdE51bGwoKSxcbiAgbWV0YWRhdGFUeXBlczoganNvbmIoJ21ldGFkYXRhX3R5cGVzJylcbiAgICAuJHR5cGU8UmVjb3JkPHN0cmluZywgUGx1Z2luQ29udHJhY3RWYWx1ZVR5cGU+PigpXG4gICAgLmRlZmF1bHQoe30pXG4gICAgLm5vdE51bGwoKSxcbiAgdmFyc1R5cGVzOiBqc29uYigndmFyc190eXBlcycpXG4gICAgLiR0eXBlPFJlY29yZDxzdHJpbmcsIFBsdWdpbkNvbnRyYWN0VmFsdWVUeXBlPj4oKVxuICAgIC5kZWZhdWx0KHt9KVxuICAgIC5ub3ROdWxsKCksXG4gIHNtb2tlVGVzdDoganNvbmIoJ3Ntb2tlX3Rlc3QnKS4kdHlwZTxQbHVnaW5TbW9rZVRlc3Q+KCksXG4gIG5ldHdvcmtFZ3Jlc3M6IGpzb25iKCduZXR3b3JrX2VncmVzcycpXG4gICAgLiR0eXBlPHN0cmluZ1tdPigpXG4gICAgLmRlZmF1bHQoW10pXG4gICAgLm5vdE51bGwoKSxcblxuICAvLyBEb2N1bWVudGF0aW9uLiBUaGUgUkVBRE1FIGlzIGtlcHQgYXMgc291cmNlIG1hcmtkb3duIEFORCBwcmUtc2FuaXRpemVkXG4gIC8vIEhUTUwgKHJlbmRlcmVkIG9uY2UgYXQgdXBsb2FkKSwgc28gbm8gcmVhZCBwYXRoIHJlbmRlcnMgdW50cnVzdGVkIG1hcmtkb3duLlxuICByZWFkbWVNZDogdGV4dCgncmVhZG1lX21kJyksXG4gIHJlYWRtZUh0bWw6IHRleHQoJ3JlYWRtZV9odG1sJyksXG4gIC8vIFNQRFggbGljZW5zZSBpZGVudGlmaWVyLlxuICBsaWNlbnNlOiB2YXJjaGFyKCdsaWNlbnNlJywgeyBsZW5ndGg6IDY0IH0pLFxuICBjaGFuZ2Vsb2c6IHRleHQoJ2NoYW5nZWxvZycpLFxuICBob21lcGFnZVVybDogdmFyY2hhcignaG9tZXBhZ2VfdXJsJywgeyBsZW5ndGg6IDIwNDggfSksXG4gIHNvdXJjZVVybDogdmFyY2hhcignc291cmNlX3VybCcsIHsgbGVuZ3RoOiAyMDQ4IH0pLFxuICBpY29uOiBqc29uYignaWNvbicpLiR0eXBlPFBsdWdpbkljb24+KCksXG4gIHVwbG9hZGVkSWNvbjoganNvbmIoJ3VwbG9hZGVkX2ljb24nKS4kdHlwZTxQbHVnaW5VcGxvYWRlZEljb24+KCksXG5cbiAgLy8gQ2F0YWxvZyBtZXRhZGF0YTogZGV0ZWN0ZWQgZnJvbSB0aGUgcGFja2FnZSAoc3BlYywgUkVBRE1FLFxuICAvLyB0aGUgcGx1Z2luJ3Mgb3duIERvY2tlcmZpbGUgT0NJIGxhYmVscyksIHRoZW4gYWNjZXB0ZWQgb3IgZWRpdGVkIGJ5IHRoZVxuICAvLyB1c2VyLiBgc3VtbWFyeWAgaXMgdGhlIGNhcmQgb25lLWxpbmVyOyBgZGlzcGxheU5hbWVgIGZhbGxzIGJhY2sgdG9cbiAgLy8gYG5hbWVgIHdoZW4gdW5zZXQuIGBtZXRhZGF0YVNvdXJjZXNgIHJlY29yZHMsIHBlciBkZXNjcmlwdGl2ZSBmaWVsZCwgd2hlcmVcbiAgLy8gaXRzIHZhbHVlIGNhbWUgZnJvbSAoYHNwZWMgfCByZWFkbWUgfCBkb2NrZXJmaWxlIHwgZGVyaXZlZCB8IHVzZXJgKSBzbyBhXG4gIC8vIHJldmlld2VyIGNhbiBzZWUgd2hhdCB3YXMgdHlwZWQgcmF0aGVyIHRoYW4gc2hpcHBlZCBpbiB0aGUgcGFja2FnZS5cbiAgc3VtbWFyeTogdmFyY2hhcignc3VtbWFyeScsIHsgbGVuZ3RoOiAxNjAgfSksXG4gIGRpc3BsYXlOYW1lOiB2YXJjaGFyKCdkaXNwbGF5X25hbWUnLCB7IGxlbmd0aDogMTAwIH0pLFxuICBkb2N1bWVudGF0aW9uVXJsOiB2YXJjaGFyKCdkb2N1bWVudGF0aW9uX3VybCcsIHsgbGVuZ3RoOiAyMDQ4IH0pLFxuICBtZXRhZGF0YVNvdXJjZXM6IGpzb25iKCdtZXRhZGF0YV9zb3VyY2VzJylcbiAgICAuJHR5cGU8TWV0YWRhdGFTb3VyY2VzPigpXG4gICAgLmRlZmF1bHQoe30pXG4gICAgLm5vdE51bGwoKSxcblxuICAvLyBEb2NrZXIgY29uZmlndXJhdGlvblxuICBkb2NrZXJmaWxlOiB0ZXh0KCdkb2NrZXJmaWxlJyksXG4gIGJ1aWxkVHlwZTogdmFyY2hhcignYnVpbGRfdHlwZScsIHsgbGVuZ3RoOiAyMCB9KVxuICAgIC5kZWZhdWx0KCdidWlsZF9pbWFnZScpXG4gICAgLm5vdE51bGwoKSxcblxuICAvLyBTdXBwbHkgY2hhaW4uIFNldCBieSB0aGUgYnVpbGQgd29ya2VyIG9uY2UgdGhlIGltYWdlIGlzIHB1c2hlZCwgc2lnbmVkIGFuZFxuICAvLyBjYXJyaWVzIGl0cyBTQk9NIGF0dGVzdGF0aW9uOyBOVUxMIGZvciBwbHVnaW5zIHRoYXQgcHJvZHVjZSBubyBpbWFnZVxuICAvLyAobWV0YWRhdGFfb25seSwgYXBwcm92YWwgc3RlcHMpLiBgaW1hZ2VEaWdlc3RgIGlzIHdoYXQgc3ludGggcGlucyBDb2RlQnVpbGRcbiAgLy8gdG8gKGA8cmVwbz5Ac2hhMjU2OuKApmApIOKAlCBuZXZlciB0aGUgbXV0YWJsZSBgbmFtZTp2ZXJzaW9uYCB0YWcuXG4gIC8vIGBpbWFnZVNvdXJjZWAgc2VwYXJhdGVzIGFuIGltYWdlIHRoaXMgcGxhdGZvcm0gQlVJTFQgKEJ1aWxkS2l0IHByb3ZlbmFuY2VcbiAgLy8gYXR0YWNoZWQpIGZyb20gYW4gVVBMT0FERUQgYGltYWdlLnRhcmAgd2hvc2UgYnVpbGQgaXQgbmV2ZXIgc2F3LlxuICBpbWFnZURpZ2VzdDogdmFyY2hhcignaW1hZ2VfZGlnZXN0JywgeyBsZW5ndGg6IDcxIH0pLFxuICBpbWFnZVNvdXJjZTogdmFyY2hhcignaW1hZ2Vfc291cmNlJywgeyBsZW5ndGg6IDEwIH0pLiR0eXBlPEltYWdlU291cmNlPigpLFxuXG4gIC8vIFZ1bG5lcmFiaWxpdHkgc2NhbiAoZ3J5cGUgb3ZlciB0aGUgU0JPTSBhdCBidWlsZDsgbmlnaHRseSByZXNjYW4pIGFuZCB0aGVcbiAgLy8gaW1hZ2UncyBlZmZlY3RpdmUgVVNFUi4gTlVMTCA9IG5vdCBzY2FubmVkIC8gcHJvZHVjZXMgbm8gaW1hZ2UuXG4gIHZ1bG5Dcml0aWNhbDogaW50ZWdlcigndnVsbl9jcml0aWNhbCcpLFxuICB2dWxuSGlnaDogaW50ZWdlcigndnVsbl9oaWdoJyksXG4gIHZ1bG5NZWRpdW06IGludGVnZXIoJ3Z1bG5fbWVkaXVtJyksXG4gIHZ1bG5Mb3c6IGludGVnZXIoJ3Z1bG5fbG93JyksXG4gIC8vIE9mIHRoZSBjcml0aWNhbC9oaWdoIGZpbmRpbmdzLCB0aG9zZSBncnlwZSByZXBvcnRzIGEgZml4ZWQgdmVyc2lvbiBmb3Ig4oCUXG4gIC8vIHdoYXQgdGhlIHBsYXRmb3JtIGZsb29yIChQTFVHSU5fVlVMTl9NQVhfRklORElOR1MpIGdhdGVzIG9uLiBOVUxMID0gdW5zY2FubmVkLlxuICB2dWxuQ3JpdGljYWxGaXhhYmxlOiBpbnRlZ2VyKCd2dWxuX2NyaXRpY2FsX2ZpeGFibGUnKSxcbiAgdnVsbkhpZ2hGaXhhYmxlOiBpbnRlZ2VyKCd2dWxuX2hpZ2hfZml4YWJsZScpLFxuICBzY2FubmVkQXQ6IHRpbWVzdGFtcCgnc2Nhbm5lZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICAvLyBTZXQgYnkgdGhlIG5pZ2h0bHkgcmVzY2FuIHdoaWxlIHRoaXMgdmVyc2lvbidzIGZpeGFibGUgY3JpdGljYWxzIGV4Y2VlZCB0aGVcbiAgLy8gZmxvb3IgKGNsZWFyZWQgd2hlbiByZXNvbHZlZCk6IHRoZSBjb3VudHMgYW5kIHRvcCBmaW5kaW5ncyBhdCB0aGF0IHJlc2Nhbi5cbiAgc2NhbkZsYWdnZWRBdDogdGltZXN0YW1wKCdzY2FuX2ZsYWdnZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgc2NhbkZsYWc6IGpzb25iKCdzY2FuX2ZsYWcnKS4kdHlwZTxQbHVnaW5TY2FuRmxhZz4oKSxcbiAgLyoqXG4gICAqIFRoZSBMQVNUIHJlc2NhbidzIGZpbmRpbmdzIGZvciB0aGlzIHZlcnNpb24sIHdyaXR0ZW4gd2hldGhlciBvciBub3QgdGhlXG4gICAqIGdhdGluZyBmbGFnIHRyaXBwZWQuXG4gICAqXG4gICAqIGBzY2FuX2ZsYWdgIGlzIHNldCBvbmx5IHdoaWxlIGZpeGFibGUgY3JpdGljYWxzIGV4Y2VlZFxuICAgKiBQTFVHSU5fVlVMTl9NQVhfRklORElOR1MsIHNvIGEgdmVyc2lvbiBjYXJyeWluZyBvbmx5IEhpZ2ggZmluZGluZ3Mgc3RvcmVzXG4gICAqIG5vdGhpbmcg4oCUIGFuZCB0aGUgdnVsbmVyYWJpbGl0eSByZXBvcnQgc2VjdGlvbiwgd2hvc2Ugd2hvbGUgam9iIGlzIHRvIHNob3dcbiAgICogQ3JpdGljYWwgQU5EIEhpZ2ggZXhwb3N1cmUsIGhhZCBubyBzb3VyY2UgdG8gcmVhZC4gVGhpcyBob2xkcyB0aGUgY291bnRzIGFuZFxuICAgKiB0aGUgdG9wIGZpbmRpbmdzIGZvciBldmVyeSBpbi11c2UgdmVyc2lvbiwgaW5kZXBlbmRlbnQgb2YgdGhlIGdhdGU6IHdoYXQgYVxuICAgKiByZXBvcnQgc2hvd3MgYW5kIHdoYXQgYSBidWlsZCByZWZ1c2VzIGFyZSBkaWZmZXJlbnQgcXVlc3Rpb25zLlxuICAgKi9cbiAgc2NhblN1bW1hcnk6IGpzb25iKCdzY2FuX3N1bW1hcnknKS4kdHlwZTxQbHVnaW5TY2FuU3VtbWFyeT4oKSxcbiAgcnVuQXNSb290OiBib29sZWFuKCdydW5fYXNfcm9vdCcpLFxuXG4gIC8vIFZlcnNpb24gbGlmZWN5Y2xlLiBgYnJlYWtpbmdgOiBhIHB1Ymxpc2hlci1tYXJrZWQgbWFqb3IgdGhhdCBgbGF0ZXN0YFxuICAvLyBpbnN0YWxscyBuZXZlciBjcm9zcyB3aXRob3V0IHJlLWFwcHJvdmFsLiBgZnJvemVuQXRgOiBzZXQgdGhlIG1vbWVudCBhXG4gIC8vIHB1Ymxpc2ggcmVxdWVzdCByZWZlcmVuY2VzIHRoaXMgdmVyc2lvbiDigJQgcmUtdXBsb2FkaW5nIGl0IGlzIHRoZW4gcmVmdXNlZFxuICAvLyAoNDA5KS4gWWFuayAvIGRlcHJlY2F0aW9uIGNhcnJ5IHRoZWlyIHJlYXNvbiBhbG9uZ3NpZGUgdGhlIHRpbWVzdGFtcC5cbiAgYnJlYWtpbmc6IGJvb2xlYW4oJ2JyZWFraW5nJylcbiAgICAuZGVmYXVsdChmYWxzZSlcbiAgICAubm90TnVsbCgpLFxuICBmcm96ZW5BdDogdGltZXN0YW1wKCdmcm96ZW5fYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgeWFua2VkQXQ6IHRpbWVzdGFtcCgneWFua2VkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIHlhbmtSZWFzb246IHRleHQoJ3lhbmtfcmVhc29uJyksXG4gIGRlcHJlY2F0ZWRBdDogdGltZXN0YW1wKCdkZXByZWNhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGRlcHJlY2F0aW9uTWVzc2FnZTogdGV4dCgnZGVwcmVjYXRpb25fbWVzc2FnZScpLFxuXG4gIC8vIERldmVsb3Blci1wb3J0YWwgY2F0YWxvZyBtZXRhZGF0YSAob3duZXJzaGlwIC8gbGlmZWN5Y2xlIC8gY2xhc3NpZmljYXRpb24pLlxuICAvLyBvd25lcklkIGRlZmF1bHRzIHRvIHRoZSBjcmVhdGluZyB1c2VyIChzZXQgYXQgaW5zZXJ0KSwgc28gZXZlcnkgcGx1Z2luIGhhc1xuICAvLyBhbiBvd25lciBmb3IgXCJteSBzZXJ2aWNlc1wiIHZpZXdzOyBvd25lclR5cGUgZGlzdGluZ3Vpc2hlcyB1c2VyIHZzIHRlYW0uXG4gIG93bmVySWQ6IHRleHQoJ293bmVyX2lkJyksXG4gIG93bmVyVHlwZTogdmFyY2hhcignb3duZXJfdHlwZScsIHsgbGVuZ3RoOiAxMCB9KS4kdHlwZTxPd25lclR5cGU+KCksXG4gIGxpZmVjeWNsZTogdmFyY2hhcignbGlmZWN5Y2xlJywgeyBsZW5ndGg6IDIwIH0pXG4gICAgLiR0eXBlPFBsdWdpbkxpZmVjeWNsZT4oKVxuICAgIC5kZWZhdWx0KCdwcm9kdWN0aW9uJyBhcyBQbHVnaW5MaWZlY3ljbGUpXG4gICAgLm5vdE51bGwoKSxcbiAgY3JpdGljYWxpdHk6IHZhcmNoYXIoJ2NyaXRpY2FsaXR5JywgeyBsZW5ndGg6IDEwIH0pLiR0eXBlPENyaXRpY2FsaXR5PigpLFxuICBsYWJlbHM6IGpzb25iKCdsYWJlbHMnKVxuICAgIC4kdHlwZTxFbnRpdHlMYWJlbHM+KClcbiAgICAuZGVmYXVsdCh7fSlcbiAgICAubm90TnVsbCgpLFxuICBsaW5rczoganNvbmIoJ2xpbmtzJylcbiAgICAuJHR5cGU8RW50aXR5TGlua1tdPigpXG4gICAgLmRlZmF1bHQoW10pXG4gICAgLm5vdE51bGwoKSxcblxuICAvLyBBY2Nlc3MgYW5kIHZpc2liaWxpdHkg4oCUIHRoZSBzaGFyZWQgdGhyZWUtcnVuZyBsYWRkZXIgKHNlZSBhcGktY29yZSdzXG4gIC8vIGBWaXNpYmlsaXR5YCk6IGBwcml2YXRlYCBpcyBhdXRob3Itb25seSAoYGNyZWF0ZWRfYnlgKSwgYG9yZ2AgaXMgdGhlIHdob2xlXG4gIC8vIG93bmluZyBvcmcsIGBwdWJsaWNgIHJlYWNoZXMgdGhlIG9yZydzIHRlYW1zIGFuZCDigJQgZnJvbSB0aGUgc3lzdGVtIG9yZyDigJRcbiAgLy8gZXZlcnkgb3JnLiBDb25zdHJhaW5lZCBhdCB0aGUgU1FMIGxheWVyIHRvbyB2aWEgYSBDSEVDSyBpbiBwb3N0Z3Jlcy1pbml0LnNxbFxuICAvLyBzbyBhIHR5cG8gY2FuJ3Qgc25lYWsgcGFzdCB0aGUgYXBwbGljYXRpb24gbGF5ZXIuXG4gIHZpc2liaWxpdHk6IHZhcmNoYXIoJ3Zpc2liaWxpdHknLCB7IGxlbmd0aDogMTAgfSlcbiAgICAuJHR5cGU8VmlzaWJpbGl0eT4oKVxuICAgIC5kZWZhdWx0KCdwcml2YXRlJylcbiAgICAubm90TnVsbCgpLFxuICBpc0RlZmF1bHQ6IGJvb2xlYW4oJ2lzX2RlZmF1bHQnKVxuICAgIC5kZWZhdWx0KGZhbHNlKVxuICAgIC5ub3ROdWxsKCksXG4gIGlzQWN0aXZlOiBib29sZWFuKCdpc19hY3RpdmUnKVxuICAgIC5kZWZhdWx0KHRydWUpXG4gICAgLm5vdE51bGwoKSxcblxuICAvLyBEZWxldGlvbiB0cmFja2luZyAoc29mdCBkZWxldGUpXG4gIGRlbGV0ZWRBdDogdGltZXN0YW1wKCdkZWxldGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGRlbGV0ZWRCeTogdGV4dCgnZGVsZXRlZF9ieScpLFxuICAvLyBTb2Z0LWRlbGV0ZSBwdXJnZSBkZWFkbGluZTogdGhlIHJldGVudGlvbiBzd2VlcCBoYXJkLWRlbGV0ZXMgdG9tYnN0b25lZFxuICAvLyByb3dzIG9uY2UgYHB1cmdlX2FmdGVyYCBoYXMgcGFzc2VkIChzZXQgb24gZGVsZXRlIGFsb25nc2lkZSBkZWxldGVkX2F0KS5cbiAgcHVyZ2VBZnRlcjogdGltZXN0YW1wKCdwdXJnZV9hZnRlcicsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuXG4gIC8vIFRoZSBxdW90YSBwZXJpb2QgKGByZXNldEF0YCkgdGhpcyB2ZXJzaW9uJ3MgYHBsdWdpbnNgIHNsb3Qgd2FzIGNoYXJnZWQgdG9cbiAgLy8gYXQgdXBsb2FkOyBOVUxMIHdoZW4gbm8gc2xvdCB3YXMgY2hhcmdlZCAoc3lzdGVtIGNhdGFsb2cgbG9hZHMpIG9yIGl0IHdhc1xuICAvLyBhbHJlYWR5IHJlZnVuZGVkLiBBIGRlbGV0ZS9wdXJnZSByZWZ1bmRzIENPTkRJVElPTkFMTFkgb24gaXQgKHRoZSBxdW90YVxuICAvLyBzZXJ2aWNlIGlnbm9yZXMgdGhlIHJlZnVuZCBvbmNlIHRoYXQgcGVyaW9kIGhhcyByb2xsZWQgb3ZlciksIHRoZW4gY2xlYXJzIGl0LlxuICBxdW90YVJlc2V0QXQ6IHRpbWVzdGFtcCgncXVvdGFfcmVzZXRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgLy8gUGFydGlhbCBpbmRleCBvdmVyIGp1c3QgdGhlIHRvbWJzdG9uZXMg4oCUIGRyaXZlcyB0aGUgcmV0ZW50aW9uIHB1cmdlIHN3ZWVwLlxuICBwdXJnZUlkeDogaW5kZXgoJ3BsdWdpbl9wdXJnZV9pZHgnKS5vbih0YWJsZS5wdXJnZUFmdGVyKS53aGVyZShzcWxgZGVsZXRlZF9hdCBJUyBOT1QgTlVMTGApLFxuICAvLyBNaXJyb3JzIHRoZSBpbmRleGVzIHBvc3RncmVzLWluaXQuc3FsIGNyZWF0ZXMsIG5hbWUgZm9yIG5hbWUgKHRoZSBTUUwgZmlsZSBpc1xuICAvLyB3aGF0IGRlcGxveXM7IHNjaGVtYS1yZWZsZWN0aW9uLnRlc3QudHMga2VlcHMgdGhlIHR3byBpbiBsb2NrLXN0ZXApLlxuICBvcmdJZElkeDogaW5kZXgoJ2lkeF9wbHVnaW5zX29yZ19pZCcpLm9uKHRhYmxlLm9yZ0lkKS53aGVyZShzcWxgZGVsZXRlZF9hdCBJUyBOVUxMYCksXG4gIG5hbWVJZHg6IGluZGV4KCdpZHhfcGx1Z2luc19uYW1lJykub24odGFibGUubmFtZSkud2hlcmUoc3FsYGRlbGV0ZWRfYXQgSVMgTlVMTGApLFxuICBuYW1lVmVyc2lvbklkeDogaW5kZXgoJ2lkeF9wbHVnaW5zX25hbWVfdmVyc2lvbicpLm9uKHRhYmxlLm5hbWUsIHRhYmxlLnZlcnNpb24pLndoZXJlKHNxbGBkZWxldGVkX2F0IElTIE5VTExgKSxcbiAgdmlzaWJpbGl0eUlkeDogaW5kZXgoJ2lkeF9wbHVnaW5zX3Zpc2liaWxpdHknKS5vbih0YWJsZS52aXNpYmlsaXR5KS53aGVyZShzcWxgZGVsZXRlZF9hdCBJUyBOVUxMYCksXG4gIGlzRGVmYXVsdElkeDogaW5kZXgoJ2lkeF9wbHVnaW5zX2lzX2RlZmF1bHQnKS5vbih0YWJsZS5uYW1lLCB0YWJsZS5pc0RlZmF1bHQpLndoZXJlKHNxbGBpc19kZWZhdWx0ID0gdHJ1ZSBBTkQgZGVsZXRlZF9hdCBJUyBOVUxMYCksXG4gIGNhdGVnb3J5SWR4OiBpbmRleCgnaWR4X3BsdWdpbnNfY2F0ZWdvcnknKS5vbih0YWJsZS5jYXRlZ29yeSksXG4gIGFjdGl2ZUlkeDogaW5kZXgoJ2lkeF9wbHVnaW5zX2lzX2FjdGl2ZScpLm9uKHRhYmxlLmlzQWN0aXZlKS53aGVyZShzcWxgZGVsZXRlZF9hdCBJUyBOVUxMYCksXG4gIG9yZ0NyZWF0ZWRJZHg6IGluZGV4KCdpZHhfcGx1Z2luc19vcmdfY3JlYXRlZCcpLm9uKHRhYmxlLm9yZ0lkLCBzcWxgJHt0YWJsZS5jcmVhdGVkQXR9IERFU0NgKS53aGVyZShzcWxgZGVsZXRlZF9hdCBJUyBOVUxMYCksXG4gIG9yZ05hbWVJZHg6IGluZGV4KCdpZHhfcGx1Z2luc19vcmdfbmFtZScpLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS5uYW1lKS53aGVyZShzcWxgZGVsZXRlZF9hdCBJUyBOVUxMYCksXG5cbiAgLy8gRGV2ZWxvcGVyLXBvcnRhbCBjYXRhbG9nIGluZGV4ZXM6IFwibXkgc2VydmljZXNcIiAob3duZXIpICsgbGlmZWN5Y2xlIGZpbHRlci5cbiAgb3duZXJJZHg6IGluZGV4KCdwbHVnaW5fb3duZXJfaWR4Jykub24odGFibGUub3JnSWQsIHRhYmxlLm93bmVySWQpLFxuICBsaWZlY3ljbGVJZHg6IGluZGV4KCdwbHVnaW5fbGlmZWN5Y2xlX2lkeCcpLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS5saWZlY3ljbGUpLFxuXG4gIC8vIENvbXBvc2l0ZSBpbmRleCBmb3IgZmlsdGVyZWQgcXVlcmllcyAob3JnSWQgKyB2aXNpYmlsaXR5ICsgaXNBY3RpdmUpXG4gIG9yZ1Zpc2liaWxpdHlBY3RpdmVJZHg6IGluZGV4KCdwbHVnaW5fb3JnX3Zpc2liaWxpdHlfYWN0aXZlX2lkeCcpLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS52aXNpYmlsaXR5LCB0YWJsZS5pc0FjdGl2ZSksXG4gIC8vIERyaXZlcyB0aGUgXCJteSBwcml2YXRlIGRyYWZ0c1wiIGxlZyBvZiB0aGUgdmlzaWJpbGl0eSBwcmVkaWNhdGUuXG4gIGNyZWF0ZWRCeUlkeDogaW5kZXgoJ3BsdWdpbl9jcmVhdGVkX2J5X2lkeCcpLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS5jcmVhdGVkQnkpLFxuXG4gIC8vIFVuaXF1ZSBjb25zdHJhaW50IG9uIG5hbWUgKyB2ZXJzaW9uICsgb3JnSWRcbiAgbmFtZVZlcnNpb25PcmdVbmlxdWU6IHVuaXF1ZUluZGV4KCdwbHVnaW5fbmFtZV92ZXJzaW9uX29yZ191bmlxdWUnKVxuICAgIC5vbih0YWJsZS5uYW1lLCB0YWJsZS52ZXJzaW9uLCB0YWJsZS5vcmdJZCksXG5cbiAgLy8gQ2hlY2sgY29uc3RyYWludHNcbiAgdmVyc2lvbkNoZWNrOiBjaGVjayggJ3BsdWdpbl92ZXJzaW9uX2NoZWNrJyxcbiAgICBzcWxgJHt0YWJsZS52ZXJzaW9ufSB+ICdeWzAtOV0rXFwuWzAtOV0rXFwuWzAtOV0rKC1bYS16QS1aMC05Li1dKyk/KFxcK1thLXpBLVowLTkuLV0rKT8kJ2AsXG4gICksXG4gIGltYWdlRGlnZXN0Q2hlY2s6IGNoZWNrKCdwbHVnaW5faW1hZ2VfZGlnZXN0X2NoZWNrJyxcbiAgICBzcWxgJHt0YWJsZS5pbWFnZURpZ2VzdH0gSVMgTlVMTCBPUiAke3RhYmxlLmltYWdlRGlnZXN0fSB+ICdec2hhMjU2OlswLTlhLWZdezY0fSQnYCxcbiAgKSxcbiAgaW1hZ2VTb3VyY2VDaGVjazogY2hlY2soJ3BsdWdpbl9pbWFnZV9zb3VyY2VfY2hlY2snLFxuICAgIHNxbGAke3RhYmxlLmltYWdlU291cmNlfSBJUyBOVUxMIE9SICR7dGFibGUuaW1hZ2VTb3VyY2V9IElOICgnYnVpbHQnLCAndXBsb2FkZWQnKWAsXG4gICksXG59KSk7XG5cbi8qKlxuICogV2hhdCBhIGtlcHQgc2V0dXAgaW1hZ2UgbmVlZHMgdG8gYmVjb21lIGEgdmVyc2lvbiBleGFjdGx5IGFzIGl0cyBidWlsZCB3b3VsZFxuICogaGF2ZSBtYWRlIGl0OiB0aGUgcGx1Z2luIHJlY29yZCB0aGUgdXBsb2FkIHByb2R1Y2VkLCB0aGUgdXBsb2FkZXIgYW5kIHRoZWlyXG4gKiB2aXNpYmlsaXR5LWxhZGRlciBhdXRob3JpdHksIGFuZCB0aGUgcHVibGlzaCByZXF1ZXN0IHRoZSB1cGxvYWQgYXNrZWQgZm9yLlxuICogT3BhcXVlIHRvIHRoZSBkYXRhYmFzZSAodGhlIHBsdWdpbiBzZXJ2aWNlIG93bnMgdGhlIHNoYXBlKS5cbiAqL1xuZXhwb3J0IHR5cGUgS2VwdFNldHVwSW1hZ2VCdWlsZCA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4vKipcbiAqIEdhdGUtcmVmdXNlZCBpbWFnZXMgZnJvbSB0aGUgU0VUVVAgY2F0YWxvZyBsb2FkLCBrZXB0IHNpZ25lZCBpbiB0aGUgcmVnaXN0cnlcbiAqIGZvciBwcm9tb3Rpb24gaW5zdGVhZCBvZiBkaXNjYXJkZWQgKGRvY3MvcGx1Z2luLXB1Ymxpc2hpbmcubWQgXCJTY2FuIGdhdGVzXCIpLlxuICogV3JpdHRlbiBieSB0aGUgYnVpbGQgd29ya2VyIGZvciBhIHN5c3RlbS1vcmcgdXBsb2FkIG1hcmtlZCBgc2V0dXBMb2FkYDtcbiAqIHByb21vdGVkIChyZS1nYXRlZCwgdGhlbiBzYXZlZCB0aHJvdWdoIHRoZSBidWlsZCdzIG93biBzdWNjZXNzIHBhdGgpIG9yXG4gKiBkaXNjYXJkZWQgYWZ0ZXIgYFBMVUdJTl9LRVBUX1NFVFVQX0lNQUdFX1RUTF9EQVlTYC4gU3lzdGVtIG9yZyBvbmx5IOKAlCBsaXN0ZWRcbiAqIGluIHRoZSBvcmcgY2FzY2FkZSBmb3IgaXRzIHNjaGVtYS1yZWZsZWN0aW9uIGd1YXJkLCBidXQgdGhlIGNhc2NhZGUgbmV2ZXJcbiAqIGRlbGV0ZXMgdGhlIHN5c3RlbSBvcmcsIHNvIGl0IG5ldmVyIG1hdGNoZXMgYSByb3cuXG4gKlxuICogQHRhYmxlIHBsdWdpbl9rZXB0X3NldHVwX2ltYWdlc1xuICovXG5leHBvcnQgY29uc3QgcGx1Z2luS2VwdFNldHVwSW1hZ2UgPSBwZ1RhYmxlKCdwbHVnaW5fa2VwdF9zZXR1cF9pbWFnZXMnLCB7XG4gIGlkOiB1dWlkKCdpZCcpLnByaW1hcnlLZXkoKS5kZWZhdWx0UmFuZG9tKCksXG4gIG9yZ0lkOiB2YXJjaGFyKCdvcmdfaWQnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgcGx1Z2luTmFtZTogdmFyY2hhcigncGx1Z2luX25hbWUnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgcGx1Z2luVmVyc2lvbjogdmFyY2hhcigncGx1Z2luX3ZlcnNpb24nLCB7IGxlbmd0aDogNTAgfSkubm90TnVsbCgpLFxuICBpbWFnZURpZ2VzdDogdmFyY2hhcignaW1hZ2VfZGlnZXN0JywgeyBsZW5ndGg6IDcxIH0pLm5vdE51bGwoKSxcbiAgaW1hZ2VTb3VyY2U6IHZhcmNoYXIoJ2ltYWdlX3NvdXJjZScsIHsgbGVuZ3RoOiAxMCB9KS4kdHlwZTxJbWFnZVNvdXJjZT4oKS5ub3ROdWxsKCksXG4gIHJlZnVzYWxDb2RlOiB2YXJjaGFyKCdyZWZ1c2FsX2NvZGUnLCB7IGxlbmd0aDogNjQgfSkubm90TnVsbCgpLFxuICByZWZ1c2FsTWVzc2FnZTogdGV4dCgncmVmdXNhbF9tZXNzYWdlJykubm90TnVsbCgpLFxuICByZWZ1c2FsRmluZGluZ3M6IGpzb25iKCdyZWZ1c2FsX2ZpbmRpbmdzJykuJHR5cGU8dW5rbm93bltdPigpLmRlZmF1bHQoW10pLm5vdE51bGwoKSxcbiAgYnVpbGQ6IGpzb25iKCdidWlsZCcpLiR0eXBlPEtlcHRTZXR1cEltYWdlQnVpbGQ+KCkubm90TnVsbCgpLFxuICBrZXB0Qnk6IHRleHQoJ2tlcHRfYnknKS5ub3ROdWxsKCksXG4gIGtlcHRBdDogdGltZXN0YW1wKCdrZXB0X2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbiAgZXhwaXJlc0F0OiB0aW1lc3RhbXAoJ2V4cGlyZXNfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5ub3ROdWxsKCksXG59LCAodGFibGUpID0+ICh7XG4gIGlkZW50aXR5SWR4OiB1bmlxdWVJbmRleCgncGx1Z2luX2tlcHRfc2V0dXBfaW1hZ2VfaWRlbnRpdHlfaWR4Jykub24odGFibGUub3JnSWQsIHRhYmxlLnBsdWdpbk5hbWUsIHRhYmxlLnBsdWdpblZlcnNpb24sIHRhYmxlLmltYWdlRGlnZXN0KSxcbiAgZXhwaXJlc0lkeDogaW5kZXgoJ3BsdWdpbl9rZXB0X3NldHVwX2ltYWdlX2V4cGlyZXNfaWR4Jykub24odGFibGUuZXhwaXJlc0F0KSxcbiAgaW1hZ2VEaWdlc3RDaGVjazogY2hlY2soJ3BsdWdpbl9rZXB0X3NldHVwX2ltYWdlX2RpZ2VzdF9jaGVjaycsIHNxbGAke3RhYmxlLmltYWdlRGlnZXN0fSB+ICdec2hhMjU2OlswLTlhLWZdezY0fSQnYCksXG4gIGltYWdlU291cmNlQ2hlY2s6IGNoZWNrKCdwbHVnaW5fa2VwdF9zZXR1cF9pbWFnZV9zb3VyY2VfY2hlY2snLCBzcWxgJHt0YWJsZS5pbWFnZVNvdXJjZX0gSU4gKCdidWlsdCcsICd1cGxvYWRlZCcpYCksXG59KSk7XG5cbmV4cG9ydCB0eXBlIFBsdWdpbktlcHRTZXR1cEltYWdlID0gdHlwZW9mIHBsdWdpbktlcHRTZXR1cEltYWdlLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFBsdWdpbktlcHRTZXR1cEltYWdlSW5zZXJ0ID0gdHlwZW9mIHBsdWdpbktlcHRTZXR1cEltYWdlLiRpbmZlckluc2VydDtcblxuLyoqXG4gKiBUeXBlU2NyaXB0IHR5cGVzIHJlcHJlc2VudGluZyBkYXRhYmFzZSByb3dzXG4gKi9cbmV4cG9ydCB0eXBlIFBsdWdpbiA9IHR5cGVvZiBwbHVnaW4uJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgUGx1Z2luSW5zZXJ0ID0gdHlwZW9mIHBsdWdpbi4kaW5mZXJJbnNlcnQ7XG5cbi8qKlxuICogSGVscGVyIHR5cGVzIGZvciB3b3JraW5nIHdpdGggcGFydGlhbCB1cGRhdGVzXG4gKi9cbmV4cG9ydCB0eXBlIFBsdWdpblVwZGF0ZSA9IFBhcnRpYWw8T21pdDxQbHVnaW5JbnNlcnQsICdpZCcgfCAnY3JlYXRlZEF0JyB8ICdjcmVhdGVkQnknPj47XG4iXX0=
@@ -353,4 +353,4 @@ export const pipelineSecurityReport = pgTable('pipeline_security_reports', {
353
353
  latestUnique: uniqueIndex('pipeline_security_reports_unique').on(table.pipelineId, table.tool, table.stage),
354
354
  orgIdx: index('pipeline_security_reports_org_idx').on(table.orgId),
355
355
  }));
356
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0aW5nLWFuYWx5dGljcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kYXRhYmFzZS9zY2hlbWEvcmVwb3J0aW5nLWFuYWx5dGljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Qkc7QUFFSCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqSTs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLFVBQVUsRUFBRSxjQUFjLEVBQUUsb0JBQW9CLEVBQUUsZ0JBQWdCLENBQVUsQ0FBQztBQUc1Rzs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQVUsQ0FBQztBQUcxRTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQVUsQ0FBQztBQUc5Rjs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUc7SUFDaEMsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsa0JBQWtCO0lBQ3pFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYTtJQUNoRixlQUFlLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLE9BQU87Q0FD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QUFVLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQzNHLE1BQU0sRUFBRSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztDQUNuRSxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFRoZSBhbmFseXRpY3MgbGF5ZXIgZXZlcnkgcmVwb3J0IHNlY3Rpb24gYW5kIGRhc2hib2FyZCByZWFkcyBpbnN0ZWFkIG9mIHJhd1xuICogZXZlbnRzLlxuICpcbiAqIFJlcG9ydGluZyBoYXMgYmVlbiBzY2FubmluZyBgcGlwZWxpbmVfZXZlbnRzYCBkaXJlY3RseS4gVGhhdCB3b3JrZWQgd2hpbGUgdGhlXG4gKiBvbmx5IGNvbnN1bWVyIHdhcyBvbmUgZGFzaGJvYXJkIG92ZXIgYSAzMC1kYXkgd2luZG93LCBhbmQgc3RvcHMgd29ya2luZyBmb3JcbiAqIHRoaXMgZmVhdHVyZTogYSBxdWFydGVybHkgcmVwb3J0IG92ZXIgYSA5MC1kYXkgd2luZG93LCBmb3IgYW4gb3JnIHdpdGggYVxuICogdGhvdXNhbmQgZXhlY3V0aW9ucyBhIGRheSwgcmUtZGVyaXZlcyB0aGUgc2FtZSBhZ2dyZWdhdGVzIG9uIGV2ZXJ5IHJlYWQsIGFuZFxuICogdGhlIHJldGVudGlvbiBzd2VlcCB0aGVuIGRlbGV0ZXMgdGhlIHJvd3MgdGhlIG51bWJlcnMgY2FtZSBmcm9tLiBUd28gdGFibGVzIGZpeFxuICogYm90aCBwcm9ibGVtczpcbiAqXG4gKiAgLSBgZG9yYV9kZXBsb3ltZW50c2Ag4oCUIE9ORSBST1cgUEVSIERFUExPWSwgd3JpdHRlbiBhdCBpbmdlc3QuIExlYWQgdGltZSBpc1xuICogICAgc3RvcmVkIHBlciBleGVjdXRpb24gaGVyZSwgbmV2ZXIgcmVjb21wdXRlZCBwZXIgZXZlbnQsIGJlY2F1c2UgdGhlXG4gKiAgICBwZXItZXZlbnQgZm9ybSBkb3VibGUtY291bnRzOiBhIGRlcGxveSBzdGFnZSBlbWl0cyBhIFNUQUdFIGV2ZW50IGFuZCBhblxuICogICAgQUNUSU9OIGV2ZW50LCBhbmQgYm90aCBjYXJyeSB0aGUgc2FtZSBjb21taXQgcmFuZ2UuXG4gKiAgLSBgZXhlY3V0aW9uX2RhaWx5X3JvbGx1cHNgIOKAlCBvbmUgcm93IHBlciBvcmcsIHBpcGVsaW5lLCBzdGFnZSBhbmQgZGF5LiBFdmVyeVxuICogICAgc2VjdGlvbiB0aGF0IHNheXMgXCJydW5zXCIsIFwic3VjY2VzcyByYXRlXCIsIFwicDk1XCIgb3IgXCJidWlsZCBtaW51dGVzXCIgcmVhZHNcbiAqICAgIHRoZXNlLCBzbyBhIHJlcG9ydCBjb3N0cyBhIGZldyBodW5kcmVkIHJvd3MgaW5zdGVhZCBvZiBhIGZldyBodW5kcmVkXG4gKiAgICB0aG91c2FuZC5cbiAqXG4gKiBCb3RoIGFyZSBERVJJVkVEOiB0aGV5IGNhbiBiZSByZWJ1aWx0IGZyb20gZXZlbnRzIHdoaWxlIHRoZSBldmVudHMgZXhpc3QsIGFuZFxuICogdGhleSBvdXRsaXZlIHRoZW0gYWZ0ZXJ3YXJkcy4gVGhhdCBpcyB0aGUgcG9pbnQg4oCUIHRoZXkgYXJlIHRoZSByZXRhaW5lZCBmb3JtLlxuICpcbiAqIFRoZSBvdGhlciB0d28gdGFibGVzIGhlcmUgYW5zd2VyIFwid2hhdCBpcyBhY3R1YWxseSBydW5uaW5nXCIsIHdoaWNoIHRoZSByZXBvcnQnc1xuICogcGx1Z2luIHNlY3Rpb25zIG5lZWQgYW5kIG5vIGV4aXN0aW5nIHRhYmxlIGNhbiBhbnN3ZXI6XG4gKlxuICogIC0gYHBpcGVsaW5lX3BsdWdpbl9yZXNvbHV0aW9uYCDigJQgd2hhdCBhIHBpcGVsaW5lJ3MgREVDTEFSRUQgcGx1Z2luIHZlcnNpb25zXG4gKiAgICByZXNvbHZlIHRvLCByZWNvbXB1dGVkIG9uIHdyaXRlIHJhdGhlciB0aGFuIHJlc29sdmVkIHBlciByZWFkLlxuICogIC0gYHBsdWdpbl92dWxuX2V4cG9zdXJlYCDigJQgd2hpY2ggcGlwZWxpbmVzIGFyZSBleHBvc2VkIHRvIHdoaWNoIHZ1bG5lcmFibGVcbiAqICAgIHBsdWdpbiB2ZXJzaW9uLCBvcGVuZWQgYnkgYSByZXNjYW4gYW5kIGNsb3NlZCBieSBhIGZpeGluZyBkZXBsb3kuXG4gKi9cblxuaW1wb3J0IHsgc3FsIH0gZnJvbSAnZHJpenpsZS1vcm0nO1xuaW1wb3J0IHsgYm9vbGVhbiwgaW5kZXgsIGludGVnZXIsIGpzb25iLCBwZ1RhYmxlLCBwcmltYXJ5S2V5LCB0ZXh0LCB0aW1lc3RhbXAsIHVuaXF1ZUluZGV4LCB2YXJjaGFyIH0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSc7XG5cbi8qKlxuICogV2h5IGEgZGVwbG95J3MgbGVhZCB0aW1lIGNvdWxkIG5vdCBiZSBtZWFzdXJlZC4gUmVjb3JkZWQgcmF0aGVyIHRoYW4gbGVmdCBOVUxMXG4gKiB3aXRoIG5vIGV4cGxhbmF0aW9uLCBiZWNhdXNlIHRoZSB0aHJlZSBjYXVzZXMgbmVlZCBkaWZmZXJlbnQgZml4ZXMgYW5kIHRoZVxuICogcmVwb3J0IHNob3dzIHRoZSByZWFzb246IG5vIFNDTSB0b2tlbiBmb3IgdGhlIHNvdXJjZSwgdGhlIHByb3ZpZGVyIHJhdGUtbGltaXRlZFxuICogdGhlIHJhbmdlIHdhbGssIG9yIHRoZSBzb3VyY2UgdHlwZSBoYXMgbm8gcmFuZ2UgQVBJIGF0IGFsbC5cbiAqL1xuZXhwb3J0IGNvbnN0IExFQURfVElNRV9HQVBTID0gWydub190b2tlbicsICdyYXRlX2xpbWl0ZWQnLCAndW5zdXBwb3J0ZWRfc291cmNlJywgJ25vX2NvbW1pdF9kYXRhJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBMZWFkVGltZUdhcCA9ICh0eXBlb2YgTEVBRF9USU1FX0dBUFMpW251bWJlcl07XG5cbi8qKlxuICogSG93IGNvbmZpZGVudGx5IGFuIGluY2lkZW50IHdhcyBhdHRyaWJ1dGVkIHRvIGEgZGVwbG95LiBTaG93biBiZXNpZGUgY2hhbmdlXG4gKiBmYWlsdXJlIHJhdGUgYW5kIHRpbWUgdG8gcmVzdG9yZSwgYmVjYXVzZSBcInRoaXMgZGVwbG95IGJyb2tlIHByb2R1Y3Rpb25cIiBhbmRcbiAqIFwiYW4gaW5jaWRlbnQgb3BlbmVkIHNvbWUgaG91cnMgYWZ0ZXIgdGhpcyBkZXBsb3lcIiBhcmUgZGlmZmVyZW50IGNsYWltcyBhbmQgYVxuICogbWFuYWdlciBhY3RzIGRpZmZlcmVudGx5IG9uIGVhY2guXG4gKi9cbmV4cG9ydCBjb25zdCBDT1JSRUxBVElPTl9DT05GSURFTkNFUyA9IFsnaGlnaCcsICdtZWRpdW0nLCAnbG93J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBDb3JyZWxhdGlvbkNvbmZpZGVuY2UgPSAodHlwZW9mIENPUlJFTEFUSU9OX0NPTkZJREVOQ0VTKVtudW1iZXJdO1xuXG4vKipcbiAqIEhvdyBhIHBpcGVsaW5lIGNhbWUgdG8gZXhpc3QuIEZvciB0aGUgYWRvcHRpb24gc2VjdGlvbjogYW4gb3JnIHdob3NlIHBpcGVsaW5lc1xuICogYXJlIGFsbCBoYW5kLWJ1aWx0IGlzIGEgZGlmZmVyZW50IGFkb3B0aW9uIHN0b3J5IGZyb20gb25lIHRlbXBsYXRpbmcgdGhlbS5cbiAqL1xuZXhwb3J0IGNvbnN0IFBJUEVMSU5FX0NSRUFUSU9OX1NPVVJDRVMgPSBbJ21hbnVhbCcsICd0ZW1wbGF0ZScsICdhaScsICdidWxrJywgJ2NkayddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUGlwZWxpbmVDcmVhdGlvblNvdXJjZSA9ICh0eXBlb2YgUElQRUxJTkVfQ1JFQVRJT05fU09VUkNFUylbbnVtYmVyXTtcblxuLyoqXG4gKiBXaGF0IGtpbmQgb2YgdGhpbmcgYnJva2UuIEFzc2lnbmVkIGF0IGluZ2VzdCBieSB0aGUgY2xhc3NpZmllclxuICogKGBhcGkvcmVwb3J0aW5nL3NyYy9zZXJ2aWNlcy9mYWlsdXJlLWNsYXNzaWZpZXIudHNgKSwgd2hpY2ggaXMgcnVsZXMgb3ZlciB0aGVcbiAqIGFjdGlvbidzIHR5cGUgYW5kIGVycm9yIHRleHQg4oCUIGRlbGliZXJhdGVseSBkYXRhLCBub3QgY29kZSwgc28gdGhlIHRheG9ub215IGNhblxuICogZ3JvdyB3aXRob3V0IGEgZGVwbG95LlxuICpcbiAqIFRoZSBjYXRlZ29yaWVzIG92ZXJsYXAgdGhlIHBsdWdpbi1idWlsZCB0YXhvbm9teSBvbiBwdXJwb3NlOiBhIGRlcGVuZGVuY3lcbiAqIGZhaWx1cmUgaXMgYSBkZXBlbmRlbmN5IGZhaWx1cmUgd2hldGhlciBpdCBoYXBwZW5lZCBidWlsZGluZyBhIHBsdWdpbiBvclxuICogcnVubmluZyBvbmUsIGFuZCB0d28gdm9jYWJ1bGFyaWVzIGZvciB0aGUgc2FtZSB0aGluZyB3b3VsZCBtYWtlIHRoZSByZXBvcnQgYW5kXG4gKiB0aGUgYnVpbGQgcXVldWUgZGlzYWdyZWUuXG4gKi9cbmV4cG9ydCBjb25zdCBGQUlMVVJFX0NBVEVHT1JJRVMgPSBbXG4gICdzb3VyY2VfY2hlY2tvdXQnLCAnZGVwZW5kZW5jeScsICdidWlsZCcsICd1bml0X3Rlc3QnLCAnaW50ZWdyYXRpb25fdGVzdCcsXG4gICdzZWN1cml0eV9zY2FuJywgJ2luZnJhc3RydWN0dXJlJywgJ2RlcGxveW1lbnQnLCAnYXV0aGVudGljYXRpb24nLCAncGVybWlzc2lvbnMnLFxuICAnY29uZmlndXJhdGlvbicsICd0aW1lb3V0JywgJ3Jlc291cmNlX2V4aGF1c3Rpb24nLCAnZXh0ZXJuYWxfc2VydmljZScsICdvdGhlcicsXG5dIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgRmFpbHVyZUNhdGVnb3J5ID0gKHR5cGVvZiBGQUlMVVJFX0NBVEVHT1JJRVMpW251bWJlcl07XG5cbi8qKiBXaGVyZSBhIHBsdWdpbi12ZXJzaW9uIGV4cG9zdXJlIHdhcyBvYnNlcnZlZC4gKi9cbmV4cG9ydCBjb25zdCBFWFBPU1VSRV9TT1VSQ0VTID0gWydkZWNsYXJlZCcsICdkZXBsb3llZCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgRXhwb3N1cmVTb3VyY2UgPSAodHlwZW9mIEVYUE9TVVJFX1NPVVJDRVMpW251bWJlcl07XG5cbi8qKlxuICogV2hhdCBhbiBvcmcgZGVjaWRlZCBhYm91dCBhbiBleHBvc3VyZS4gYG9wZW5gIHVudGlsIHNvbWVvbmUgbG9va3M7XG4gKiBgYWNjZXB0ZWRgIGlzIGEgdGltZS1ib3hlZCBkZWNpc2lvbiB3aXRoIGEgcmVhc29uIGFuZCBhbiBvd25lciwgbmV2ZXIgYVxuICogcGVybWFuZW50IG11dGU7IGBmYWxzZV9wb3NpdGl2ZWAgaXMgYSBzY2FubmVyIGRpc2FncmVlbWVudCB3b3J0aCByZWNvcmRpbmcgc29cbiAqIHRoZSBzYW1lIGZpbmRpbmcgc3RvcHMgYmVpbmcgcmUtcmFpc2VkIGFzIG5ld3MuIGBmaXhlZGAgPSB0aGUgcGlwZWxpbmUgbW92ZWRcbiAqIHRvIGFub3RoZXIgdmVyc2lvbiBvZiB0aGUgcGx1Z2luOyBgcmVtb3ZlZGAgPSB0aGUgc3RlcCAob3IgdGhlIHBpcGVsaW5lLCBvclxuICogaXRzIGRlcGxveSkgaXMgZ29uZSDigJQgdGhlIHRyaWFnZSBmaWVsZHMgYXJlIEtFUFQsIHNvIGEgc3RlcCByZS1hZGRlZCBiZWZvcmVcbiAqIGFuIGFjY2VwdGFuY2UncyBkZWFkbGluZSBnZXRzIHRoZSBhY2NlcHRhbmNlIGJhY2suXG4gKi9cbmV4cG9ydCBjb25zdCBFWFBPU1VSRV9UUklBR0VfU1RBVEVTID0gWydvcGVuJywgJ2FjY2VwdGVkJywgJ2ZhbHNlX3Bvc2l0aXZlJywgJ2ZpeGVkJywgJ3JlbW92ZWQnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEV4cG9zdXJlVHJpYWdlU3RhdGUgPSAodHlwZW9mIEVYUE9TVVJFX1RSSUFHRV9TVEFURVMpW251bWJlcl07XG5cbi8qKlxuICogT25lIGRlcGxveW1lbnQ6IGFuIGV4ZWN1dGlvbiB0aGF0IHJlYWNoZWQgYW4gZW52aXJvbm1lbnQuXG4gKlxuICogV3JpdHRlbiBhdCBpbmdlc3QsIG9uZSByb3cgcGVyIChleGVjdXRpb24sIGVudmlyb25tZW50KS4gRXZlcnl0aGluZyBET1JBXG4gKiByZXBvcnRzIGlzIGhlcmUsIHNvIGAvZG9yYWAsIHRoZSB0cmVuZCBhbmQgdGhlIHJlcG9ydCBzZWN0aW9ucyBzdG9wIHNjYW5uaW5nXG4gKiByYXcgZXZlbnRzIOKAlCBhbmQga2VlcCB3b3JraW5nIGFmdGVyIHRoZSBldmVudHMgYXJlIHN3ZXB0LlxuICpcbiAqIEB0YWJsZSBkb3JhX2RlcGxveW1lbnRzXG4gKi9cbmV4cG9ydCBjb25zdCBkb3JhRGVwbG95bWVudCA9IHBnVGFibGUoJ2RvcmFfZGVwbG95bWVudHMnLCB7XG4gIG9yZ0lkOiB2YXJjaGFyKCdvcmdfaWQnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgZXhlY3V0aW9uSWQ6IHZhcmNoYXIoJ2V4ZWN1dGlvbl9pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBlbnZpcm9ubWVudDogdmFyY2hhcignZW52aXJvbm1lbnQnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgcGlwZWxpbmVJZDogdmFyY2hhcigncGlwZWxpbmVfaWQnLCB7IGxlbmd0aDogMjU1IH0pLFxuICAvKiogV2hlbiB0aGUgZGVwbG95IHN0YWdlIGNvbXBsZXRlZC4gVGhlIGRlcGxveSdzIG93biB0aW1lc3RhbXAsIG5vdCB0aGUgcnVuJ3MuICovXG4gIGRlcGxveWVkQXQ6IHRpbWVzdGFtcCgnZGVwbG95ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5ub3ROdWxsKCksXG4gIHN1Y2NlZWRlZDogYm9vbGVhbignc3VjY2VlZGVkJykubm90TnVsbCgpLFxuICAvKipcbiAgICogVGhlIE9MREVTVCB1bnNoaXBwZWQgY29tbWl0IGluIHRoaXMgZGVwbG95J3MgcmFuZ2UuIExlYWQgdGltZSBpc1xuICAgKiBgZGVwbG95ZWRBdCAtIGVhcmxpZXN0Q29tbWl0QXRgLCBjb21wdXRlZCBvbmNlIGFuZCBzdG9yZWQsIGJlY2F1c2UgdGhlXG4gICAqIHBlci1ldmVudCBmb3JtIGRvdWJsZS1jb3VudHMgYSBkZXBsb3kgdGhhdCBlbWl0cyBib3RoIGEgU1RBR0UgYW5kIGFuIEFDVElPTlxuICAgKiBldmVudCBjYXJyeWluZyB0aGUgc2FtZSByYW5nZS5cbiAgICovXG4gIGVhcmxpZXN0Q29tbWl0QXQ6IHRpbWVzdGFtcCgnZWFybGllc3RfY29tbWl0X2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGxlYWRUaW1lU2Vjb25kczogaW50ZWdlcignbGVhZF90aW1lX3NlY29uZHMnKSxcbiAgY29tbWl0Q291bnQ6IGludGVnZXIoJ2NvbW1pdF9jb3VudCcpLFxuICBjb21taXRTaGE6IHZhcmNoYXIoJ2NvbW1pdF9zaGEnLCB7IGxlbmd0aDogMjU1IH0pLFxuICAvKiogV2h5IGxlYWQgdGltZSBpcyBhYnNlbnQsIHdoZW4gaXQgaXMuIE5VTEwgd2hlbiBpdCB3YXMgbWVhc3VyZWQuICovXG4gIGxlYWRUaW1lR2FwOiB2YXJjaGFyKCdsZWFkX3RpbWVfZ2FwJywgeyBsZW5ndGg6IDMwIH0pLiR0eXBlPExlYWRUaW1lR2FwPigpLFxuICAvKipcbiAgICogUG9zdC1kZXBsb3kgb3V0Y29tZSBtYXJrZXJzLCBkZW5vcm1hbGl6ZWQgb250byB0aGUgZGVwbG95IHNvIGNoYW5nZS1mYWlsdXJlXG4gICAqIHJhdGUgYW5kIHRpbWUtdG8tcmVzdG9yZSBhcmUgb25lIHNjYW4gcmF0aGVyIHRoYW4gYSBqb2luIHBlciB3aW5kb3cuXG4gICAqL1xuICBmYWlsZWRBdDogdGltZXN0YW1wKCdmYWlsZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgcmVzdG9yZWRBdDogdGltZXN0YW1wKCdyZXN0b3JlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICAvKiogSG93IHRoZSBpbmNpZGVudOKGkmRlcGxveSBsaW5rIHdhcyBqdWRnZWQuIE5VTEwgd2hlbiBub3RoaW5nIHdhcyBjb3JyZWxhdGVkLiAqL1xuICBjb3JyZWxhdGlvbkNvbmZpZGVuY2U6IHZhcmNoYXIoJ2NvcnJlbGF0aW9uX2NvbmZpZGVuY2UnLCB7IGxlbmd0aDogMTAgfSkuJHR5cGU8Q29ycmVsYXRpb25Db25maWRlbmNlPigpLFxuICAvKipcbiAgICogVGhlIEV2ZW50QnJpZGdlIGV2ZW50IGlkIG9mIHRoZSBkZXBsb3kgU1RBR0UgZXZlbnQgdGhhdCBsYXN0IHdyb3RlIHRoaXMgcm93LFxuICAgKiBzbyBhIERPUkEgbnVtYmVyIHRyYWNlcyBiYWNrIHRvIHRoZSBleGFjdCBgcGlwZWxpbmVfZXZlbnRzYCByb3cgKGFuZCBBV1NcbiAgICogZXZlbnQpIGJlaGluZCBpdC4gTlVMTCBmb3IgYSBkZXBsb3kgZnJvbSBhIHByb2R1Y2VyIHdpdGhvdXQgb25lLlxuICAgKi9cbiAgc291cmNlRXZlbnRJZDogdmFyY2hhcignc291cmNlX2V2ZW50X2lkJywgeyBsZW5ndGg6IDEyOCB9KSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxuICB1cGRhdGVkQXQ6IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG59LCAodGFibGUpID0+ICh7XG4gIC8vIE9uZSByb3cgcGVyIGV4ZWN1dGlvbiBwZXIgZW52aXJvbm1lbnQ6IGEgcmVkZWxpdmVyZWQgZXZlbnQgdXBzZXJ0cyByYXRoZXJcbiAgLy8gdGhhbiBpbnNlcnRpbmcgYSBzZWNvbmQgZGVwbG95IChFdmVudEJyaWRnZSDihpIgU1FTIGlzIGF0LWxlYXN0LW9uY2UpLlxuICBwazogcHJpbWFyeUtleSh7IGNvbHVtbnM6IFt0YWJsZS5leGVjdXRpb25JZCwgdGFibGUuZW52aXJvbm1lbnRdIH0pLFxuICAvLyBUaGUgd2luZG93IHNjYW4gZXZlcnkgRE9SQSByZWFkIGRvZXMuXG4gIG9yZ0VudkRlcGxveWVkSWR4OiBpbmRleCgnZG9yYV9kZXBsb3ltZW50X29yZ19lbnZfZGVwbG95ZWRfaWR4JylcbiAgICAub24odGFibGUub3JnSWQsIHRhYmxlLmVudmlyb25tZW50LCB0YWJsZS5kZXBsb3llZEF0KSxcbiAgb3JnRGVwbG95ZWRJZHg6IGluZGV4KCdkb3JhX2RlcGxveW1lbnRfb3JnX2RlcGxveWVkX2lkeCcpLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS5kZXBsb3llZEF0KSxcbiAgcGlwZWxpbmVJZHg6IGluZGV4KCdkb3JhX2RlcGxveW1lbnRfcGlwZWxpbmVfaWR4Jykub24odGFibGUucGlwZWxpbmVJZCwgdGFibGUuZGVwbG95ZWRBdCksXG4gIC8vIFRoZSBwcm9tb3Rpb24gdmlldzogb25lIGNvbW1pdCdzIHBhdGggYWNyb3NzIGVudmlyb25tZW50cy5cbiAgY29tbWl0SWR4OiBpbmRleCgnZG9yYV9kZXBsb3ltZW50X2NvbW1pdF9pZHgnKS5vbih0YWJsZS5vcmdJZCwgdGFibGUuY29tbWl0U2hhKVxuICAgIC53aGVyZShzcWxgY29tbWl0X3NoYSBJUyBOT1QgTlVMTGApLFxufSkpO1xuXG4vKipcbiAqIFByZS1hZ2dyZWdhdGVkIGV4ZWN1dGlvbiBjb3VudHMgYW5kIHRpbWluZ3MsIG9uZSByb3cgcGVyIG9yZywgcGlwZWxpbmUsIHN0YWdlXG4gKiBhbmQgVVRDIGRheS5cbiAqXG4gKiBSZWJ1aWx0IGZvciBhIGRheSB3aGVuIGxhdGUgZXZlbnRzIGFycml2ZSwgc28gdGhlIHJvbGx1cCBhbmQgdGhlIGV2ZW50cyBhZ3JlZVxuICogd2hpbGUgYm90aCBleGlzdC4gYGZhaWx1cmVzQnlDYXRlZ29yeWAgaXMgYSBKU09OIG1hcCByYXRoZXIgdGhhbiBhIGNvbHVtbiBwZXJcbiAqIGNhdGVnb3J5IGJlY2F1c2UgdGhlIHRheG9ub215IGdyb3dzLlxuICpcbiAqIEB0YWJsZSBleGVjdXRpb25fZGFpbHlfcm9sbHVwc1xuICovXG5leHBvcnQgY29uc3QgZXhlY3V0aW9uRGFpbHlSb2xsdXAgPSBwZ1RhYmxlKCdleGVjdXRpb25fZGFpbHlfcm9sbHVwcycsIHtcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICAvKiogVGhlIFVUQyBkYXRlIHRoaXMgcm93IGFnZ3JlZ2F0ZXMuIFJlcG9ydCBwZXJpb2RzIHJlLWJ1Y2tldCBpbiB0aGUgcmVwb3J0J3NcbiAgICogIG93biB0aW1lem9uZSBieSBzdW1taW5nIGRheXMg4oCUIHdoaWNoIGlzIHdoeSB0aGUgZ3JhaW4gaXMgYSBEQVkuICovXG4gIGRheTogdGltZXN0YW1wKCdkYXknLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5ub3ROdWxsKCksXG4gIHBpcGVsaW5lSWQ6IHZhcmNoYXIoJ3BpcGVsaW5lX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIC8qKiBgJydgIGZvciB0aGUgcGlwZWxpbmUtbGV2ZWwgcm93OyBhIHN0YWdlIG5hbWUgZm9yIGEgc3RhZ2UtbGV2ZWwgcm93LiAqL1xuICBzdGFnZU5hbWU6IHZhcmNoYXIoJ3N0YWdlX25hbWUnLCB7IGxlbmd0aDogMjU1IH0pLmRlZmF1bHQoJycpLm5vdE51bGwoKSxcbiAgcnVuczogaW50ZWdlcigncnVucycpLmRlZmF1bHQoMCkubm90TnVsbCgpLFxuICBzdWNjZWVkZWQ6IGludGVnZXIoJ3N1Y2NlZWRlZCcpLmRlZmF1bHQoMCkubm90TnVsbCgpLFxuICBmYWlsZWQ6IGludGVnZXIoJ2ZhaWxlZCcpLmRlZmF1bHQoMCkubm90TnVsbCgpLFxuICAvKiogY2F0ZWdvcnkg4oaSIGNvdW50LiBGZWVkcyB0aGUgZmFpbHVyZS1hbmFseXNpcyBzZWN0aW9uLiAqL1xuICBmYWlsdXJlc0J5Q2F0ZWdvcnk6IGpzb25iKCdmYWlsdXJlc19ieV9jYXRlZ29yeScpLiR0eXBlPFJlY29yZDxzdHJpbmcsIG51bWJlcj4+KCkuZGVmYXVsdCh7fSkubm90TnVsbCgpLFxuICBwNTBNczogaW50ZWdlcigncDUwX21zJyksXG4gIHA5ME1zOiBpbnRlZ2VyKCdwOTBfbXMnKSxcbiAgcDk1TXM6IGludGVnZXIoJ3A5NV9tcycpLFxuICAvKiogU3VtbWVkIGV4ZWN1dGlvbiBkdXJhdGlvbiwgaW4gc2Vjb25kcy4gVGhlIHJlc291cmNlLWNvbnN1bXB0aW9uIHNlY3Rpb24nc1xuICAgKiAgb25seSBpbnB1dDsgZGVsaWJlcmF0ZWx5IE5PVCBjb252ZXJ0ZWQgdG8gbW9uZXkgYW55d2hlcmUuICovXG4gIGJ1aWxkU2Vjb25kczogaW50ZWdlcignYnVpbGRfc2Vjb25kcycpLmRlZmF1bHQoMCkubm90TnVsbCgpLFxuICAvKiogV2hlbiB0aGlzIHJvdyB3YXMgbGFzdCByZWJ1aWx0LCBzbyBhIGxhdGUtZXZlbnQgcmVidWlsZCBpcyB2aXNpYmxlLiAqL1xuICBjb21wdXRlZEF0OiB0aW1lc3RhbXAoJ2NvbXB1dGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgcGs6IHByaW1hcnlLZXkoeyBjb2x1bW5zOiBbdGFibGUub3JnSWQsIHRhYmxlLmRheSwgdGFibGUucGlwZWxpbmVJZCwgdGFibGUuc3RhZ2VOYW1lXSB9KSxcbiAgb3JnRGF5SWR4OiBpbmRleCgnZXhlY3V0aW9uX3JvbGx1cF9vcmdfZGF5X2lkeCcpLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS5kYXkpLFxuICBwaXBlbGluZURheUlkeDogaW5kZXgoJ2V4ZWN1dGlvbl9yb2xsdXBfcGlwZWxpbmVfZGF5X2lkeCcpLm9uKHRhYmxlLnBpcGVsaW5lSWQsIHRhYmxlLmRheSksXG59KSk7XG5cbi8qKlxuICogV2hhdCBhIHBpcGVsaW5lJ3MgZGVjbGFyZWQgcGx1Z2luIHN0ZXBzIHJlc29sdmUgdG8uXG4gKlxuICogUmVjb21wdXRlZCBvbiBwaXBlbGluZSB3cml0ZSBhbmQgb24gcGx1Z2luIHB1Ymxpc2gsIHJhdGhlciB0aGFuIHJlc29sdmVkIGF0XG4gKiByZWFkIHRpbWU6IHRoZSBvdXRkYXRlZC1wbHVnaW4gc2VjdGlvbiBjb21wYXJlcyBcImluIHVzZVwiIGFnYWluc3QgXCJsYXRlc3RcbiAqIGF2YWlsYWJsZVwiIGZvciBldmVyeSBzdGVwIG9mIGV2ZXJ5IHBpcGVsaW5lLCBhbmQgZG9pbmcgdGhhdCByZXNvbHV0aW9uIHBlciByZWFkXG4gKiBtYWRlIGl0IGEgcXVlcnkgbm9ib2R5IGNvdWxkIGFmZm9yZCB0byBwdXQgaW4gYSByZXBvcnQuXG4gKlxuICogQHRhYmxlIHBpcGVsaW5lX3BsdWdpbl9yZXNvbHV0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBwaXBlbGluZVBsdWdpblJlc29sdXRpb24gPSBwZ1RhYmxlKCdwaXBlbGluZV9wbHVnaW5fcmVzb2x1dGlvbicsIHtcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBwaXBlbGluZUlkOiB2YXJjaGFyKCdwaXBlbGluZV9pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBzdGFnZU5hbWU6IHZhcmNoYXIoJ3N0YWdlX25hbWUnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgc3RlcE5hbWU6IHZhcmNoYXIoJ3N0ZXBfbmFtZScsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBwbHVnaW5QdWJsaXNoZXI6IHZhcmNoYXIoJ3BsdWdpbl9wdWJsaXNoZXInLCB7IGxlbmd0aDogMzkgfSksXG4gIHBsdWdpbk5hbWU6IHZhcmNoYXIoJ3BsdWdpbl9uYW1lJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIC8qKiBXaGF0IHRoZSBjb25maWcgYXNrZWQgZm9yIOKAlCBhIHJhbmdlLCBhIHBpbiwgb3Igbm90aGluZy4gKi9cbiAgZGVjbGFyZWRWZXJzaW9uOiB2YXJjaGFyKCdkZWNsYXJlZF92ZXJzaW9uJywgeyBsZW5ndGg6IDUwIH0pLFxuICAvKiogV2hhdCB0aGF0IHJlc29sdmVzIHRvIHRvZGF5LiBOVUxMIHdoZW4gbm90aGluZyBzYXRpc2ZpZXMgaXQuICovXG4gIHJlc29sdmVkVmVyc2lvbjogdmFyY2hhcigncmVzb2x2ZWRfdmVyc2lvbicsIHsgbGVuZ3RoOiA1MCB9KSxcbiAgLyoqIFRoZSByZXNvbHZlZCByZWNvcmQ6IGEgYHBsdWdpbnNgIHJvdyBpZCBvciBhIGxpc3RpbmcgdmVyc2lvbiBpZC4gKi9cbiAgcmVzb2x2ZWRQbHVnaW5JZDogdmFyY2hhcigncmVzb2x2ZWRfcGx1Z2luX2lkJywgeyBsZW5ndGg6IDI1NSB9KSxcbiAgLyoqXG4gICAqIFRoZSBpbWFnZSBkaWdlc3QgdGhlIHJlc29sdmVkIHZlcnNpb24gaXMgcGlubmVkIHRvLiBBIHZlcnNpb24gc3RyaW5nIGFsb25lXG4gICAqIGNhbm5vdCBzYXkgd2hldGhlciBhIHBpcGVsaW5lIGlzIG9uIHRoZSByZWJ1aWx0LCBwYXRjaGVkIGltYWdlIG9yIHRoZSBvbGRcbiAgICogb25lIOKAlCB0aGUgcmVzY2FuIGFuZCB0aGUgYWR2aXNvcnkgc2VhcmNoIG1hdGNoIG9uIHRoaXMuXG4gICAqL1xuICByZXNvbHZlZERpZ2VzdDogdmFyY2hhcigncmVzb2x2ZWRfZGlnZXN0JywgeyBsZW5ndGg6IDcxIH0pLFxuICAvKiogVGhlIG5ld2VzdCB2ZXJzaW9uIHRoZSBvcmcgaXMgZW50aXRsZWQgdG8gaW5zdGFsbCwgZm9yIHRoZSBcImdhcFwiIGNvbHVtbi4gKi9cbiAgbGF0ZXN0VmVyc2lvbjogdmFyY2hhcignbGF0ZXN0X3ZlcnNpb24nLCB7IGxlbmd0aDogNTAgfSksXG4gIC8qKiBgbWFqb3JgIC8gYG1pbm9yYCAvIGBwYXRjaGAgLyBgbm9uZWAsIGZyb20gcmVzb2x2ZWQg4oaSIGxhdGVzdC4gKi9cbiAgdmVyc2lvbkdhcDogdmFyY2hhcigndmVyc2lvbl9nYXAnLCB7IGxlbmd0aDogMTAgfSksXG4gIC8qKiBGYWxzZSB3aGVuIHRoZSByZXNvbHZlZCB2ZXJzaW9uIGlzIG91dHNpZGUgdGhlIG9yZydzIGNvbnN1bXB0aW9uIHBvbGljeS4gKi9cbiAgd2l0aGluUG9saWN5OiBib29sZWFuKCd3aXRoaW5fcG9saWN5JykuZGVmYXVsdCh0cnVlKS5ub3ROdWxsKCksXG4gIC8qKlxuICAgKiBUaGUgcm9vdCBvcmcgb2YgYSBURUFNJ3MgcGlwZWxpbmUgKG51bGwgZm9yIGEgcm9vdCBvcmcncykuIEEgdGVhbSByZXNvbHZlc1xuICAgKiB0aHJvdWdoIGl0cyByb290J3MgaW5zdGFsbHMsIHBvbGljeSBhbmQgc2hhcmVkIHBsdWdpbnMsIGFuZCB0aGUgcGx1Z2luXG4gICAqIHNlcnZpY2UgcmUtcmVzb2x2aW5nIGEgcGlwZWxpbmUgYWZ0ZXIgYSBwdWJsaXNoIC8gZmxhZyAvIHlhbmsgaGFzIG5vIHJlcXVlc3RcbiAgICogdG8gcmVhZCB0aGUgaGllcmFyY2h5IGZyb20g4oCUIHNvIHRoZSB3cml0ZSB0aGF0IGtuZXcgaXQgcmVjb3JkcyBpdC5cbiAgICovXG4gIHJvb3RPcmdJZDogdmFyY2hhcigncm9vdF9vcmdfaWQnLCB7IGxlbmd0aDogMjU1IH0pLFxuICBjb21wdXRlZEF0OiB0aW1lc3RhbXAoJ2NvbXB1dGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgcGs6IHByaW1hcnlLZXkoeyBjb2x1bW5zOiBbdGFibGUucGlwZWxpbmVJZCwgdGFibGUuc3RhZ2VOYW1lLCB0YWJsZS5zdGVwTmFtZV0gfSksXG4gIG9yZ0lkeDogaW5kZXgoJ3BpcGVsaW5lX3BsdWdpbl9yZXNvbHV0aW9uX29yZ19pZHgnKS5vbih0YWJsZS5vcmdJZCksXG4gIHBsdWdpbklkeDogaW5kZXgoJ3BpcGVsaW5lX3BsdWdpbl9yZXNvbHV0aW9uX3BsdWdpbl9pZHgnKS5vbih0YWJsZS5wbHVnaW5QdWJsaXNoZXIsIHRhYmxlLnBsdWdpbk5hbWUpLFxuICAvLyBcIldoaWNoIHBpcGVsaW5lcyBhcmUgYmVoaW5kP1wiIOKAlCB0aGUgb3V0ZGF0ZWQgc2VjdGlvbidzIGRyaXZpbmcgc2Nhbi5cbiAgZ2FwSWR4OiBpbmRleCgncGlwZWxpbmVfcGx1Z2luX3Jlc29sdXRpb25fZ2FwX2lkeCcpLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS52ZXJzaW9uR2FwKSxcbiAgLy8gXCJXaGljaCBwaXBlbGluZXMgZGVjbGFyZSB0aGlzIHZlcnNpb24gLyBpbWFnZT9cIiDigJQgcmVzY2FuIGZhbi1vdXQsIGFkdmlzb3J5IHNlYXJjaC5cbiAgdmVyc2lvbklkeDogaW5kZXgoJ3BpcGVsaW5lX3BsdWdpbl9yZXNvbHV0aW9uX3ZlcnNpb25faWR4JylcbiAgICAub24odGFibGUucGx1Z2luTmFtZSwgdGFibGUucmVzb2x2ZWRWZXJzaW9uLCB0YWJsZS5yZXNvbHZlZERpZ2VzdCksXG59KSk7XG5cbi8qKlxuICogT25lIHBpcGVsaW5lJ3MgZXhwb3N1cmUgdG8gb25lIHZ1bG5lcmFibGUgcGx1Z2luIHZlcnNpb24uXG4gKlxuICogT3BlbmVkIGJ5IHRoZSBuaWdodGx5IHJlc2NhbiB3aGVuIGEgdmVyc2lvbiBpbiB1c2UgaGFzIGZpeGFibGUgQ3JpdGljYWwvSGlnaFxuICogZmluZGluZ3MsIGFuZCBDTE9TRUQgYnkgYSBkZXBsb3kgdGhhdCBtb3ZlcyB0aGUgcGlwZWxpbmUgb2ZmIGl0LiBJdCBpcyBhXG4gKiBwZXItcGlwZWxpbmUgcm93IHJhdGhlciB0aGFuIGEgcGVyLXZlcnNpb24gb25lIGJlY2F1c2UgdGhlIHF1ZXN0aW9uIGEgbWFuYWdlclxuICogYXNrcyBpcyBcIndoaWNoIG9mIG91ciBwaXBlbGluZXMgaXMgZXhwb3NlZFwiLCBhbmQgYW5zd2VyaW5nIHRoYXQgZnJvbSBhXG4gKiB2ZXJzaW9uLWxldmVsIHRhYmxlIG1lYW5zIHJlLWRlcml2aW5nIHRoZSBwaXBlbGluZSBzZXQgb24gZXZlcnkgcmVhZC5cbiAqXG4gKiBLZXllZCBieSBJTUFHRSBESUdFU1QsIG5vdCB2ZXJzaW9uIHN0cmluZzogYSB2ZXJzaW9uIHJlYnVpbHQgb24gYSBwYXRjaGVkIGJhc2VcbiAqIGltYWdlIGlzIGEgZGlmZmVyZW50IGFydGlmYWN0IHdpdGggZGlmZmVyZW50IGZpbmRpbmdzLCBhbmQga2V5aW5nIG9uIHRoZSBzdHJpbmdcbiAqIHdvdWxkIHJlcG9ydCB0aGUgb2xkIG9uZSBmb3JldmVyLlxuICpcbiAqIEB0YWJsZSBwbHVnaW5fdnVsbl9leHBvc3VyZVxuICovXG5leHBvcnQgY29uc3QgcGx1Z2luVnVsbkV4cG9zdXJlID0gcGdUYWJsZSgncGx1Z2luX3Z1bG5fZXhwb3N1cmUnLCB7XG4gIGlkOiB2YXJjaGFyKCdpZCcsIHsgbGVuZ3RoOiAyNTUgfSkucHJpbWFyeUtleSgpLFxuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHBpcGVsaW5lSWQ6IHZhcmNoYXIoJ3BpcGVsaW5lX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHBsdWdpblB1Ymxpc2hlcjogdmFyY2hhcigncGx1Z2luX3B1Ymxpc2hlcicsIHsgbGVuZ3RoOiAzOSB9KSxcbiAgcGx1Z2luTmFtZTogdmFyY2hhcigncGx1Z2luX25hbWUnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgcGx1Z2luVmVyc2lvbjogdmFyY2hhcigncGx1Z2luX3ZlcnNpb24nLCB7IGxlbmd0aDogNTAgfSkubm90TnVsbCgpLFxuICBpbWFnZURpZ2VzdDogdmFyY2hhcignaW1hZ2VfZGlnZXN0JywgeyBsZW5ndGg6IDcxIH0pLFxuICBzb3VyY2U6IHZhcmNoYXIoJ3NvdXJjZScsIHsgbGVuZ3RoOiAxMCB9KS4kdHlwZTxFeHBvc3VyZVNvdXJjZT4oKS5ub3ROdWxsKCksXG4gIGNyaXRpY2FsQ291bnQ6IGludGVnZXIoJ2NyaXRpY2FsX2NvdW50JykuZGVmYXVsdCgwKS5ub3ROdWxsKCksXG4gIGhpZ2hDb3VudDogaW50ZWdlcignaGlnaF9jb3VudCcpLmRlZmF1bHQoMCkubm90TnVsbCgpLFxuICAvKiogVGhlIGZpbmRpbmdzIHRoZW1zZWx2ZXM6IENWRSBpZCwgcGFja2FnZSwgZml4ZWQtaW4gdmVyc2lvbi4gQ2FwcGVkIGJ5IHRoZSB3cml0ZXIuICovXG4gIHRvcEZpbmRpbmdzOiBqc29uYigndG9wX2ZpbmRpbmdzJykuJHR5cGU8QXJyYXk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+PigpLmRlZmF1bHQoW10pLm5vdE51bGwoKSxcbiAgLyoqXG4gICAqIEVWRVJZIENyaXRpY2FsL0hpZ2ggZmluZGluZyBvZiB0aGUgdmVyc2lvbiBhdCBpdHMgbGFzdCByZWZyZXNoLCBhcyBmaW5kaW5nXG4gICAqIGtleXMgKGBpZHxwYWNrYWdlfHBhY2thZ2VWZXJzaW9uYCkg4oCUIHVuY2FwcGVkLCB1bmxpa2UgYHRvcF9maW5kaW5nc2AsIGJlY2F1c2VcbiAgICogYW4gYWNjZXB0YW5jZSBpcyBjaGVja2VkIGFnYWluc3QgaXQ6IHdoYXQgd2FzIGFjY2VwdGVkIG11c3QgYmUgcHJvdmFibGUuXG4gICAqL1xuICBmaW5kaW5nS2V5czogdGV4dCgnZmluZGluZ19rZXlzJykuYXJyYXkoKS4kdHlwZTxzdHJpbmdbXT4oKS5kZWZhdWx0KFtdKS5ub3ROdWxsKCksXG4gIC8qKiBUaGUgZmluZGluZyBrZXlzIGFuIGBhY2NlcHRlZGAgdHJpYWdlIGNvdmVyZWQsIGZyb3plbiBhdCB0aGUgZGVjaXNpb24uICovXG4gIGFjY2VwdGVkRmluZGluZ0tleXM6IHRleHQoJ2FjY2VwdGVkX2ZpbmRpbmdfa2V5cycpLmFycmF5KCkuJHR5cGU8c3RyaW5nW10+KCkuZGVmYXVsdChbXSkubm90TnVsbCgpLFxuICAvKiogVGhlIGFjY2VwdGFuY2UgZXhwbGljaXRseSBjb3ZlcmVkIEtFVi1saXN0ZWQgZmluZGluZ3MgKG5ldmVyIGltcGxpZWQpLiAqL1xuICBhY2NlcHRlZEtldjogYm9vbGVhbignYWNjZXB0ZWRfa2V2JykuZGVmYXVsdChmYWxzZSkubm90TnVsbCgpLFxuICBmbGFnZ2VkQXQ6IHRpbWVzdGFtcCgnZmxhZ2dlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG4gIC8qKiBTZXQgd2hlbiBhIGRlcGxveSBtb3ZlZCB0aGUgcGlwZWxpbmUgb250byBhIHZlcnNpb24gd2l0aG91dCB0aGUgZmluZGluZ3MuICovXG4gIGZpeGVkQXQ6IHRpbWVzdGFtcCgnZml4ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgdHJpYWdlU3RhdGU6IHZhcmNoYXIoJ3RyaWFnZV9zdGF0ZScsIHsgbGVuZ3RoOiAyMCB9KS4kdHlwZTxFeHBvc3VyZVRyaWFnZVN0YXRlPigpLmRlZmF1bHQoJ29wZW4nKS5ub3ROdWxsKCksXG4gIC8qKiBBbiBhY2NlcHRhbmNlIGlzIHRpbWUtYm94ZWQ6IGEgcGVybWFuZW50IG11dGUgaXMgaG93IGEgZmluZGluZyBpcyBmb3Jnb3R0ZW4uICovXG4gIGFjY2VwdGVkVW50aWw6IHRpbWVzdGFtcCgnYWNjZXB0ZWRfdW50aWwnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgdHJpYWdlUmVhc29uOiB0ZXh0KCd0cmlhZ2VfcmVhc29uJyksXG4gIHRyaWFnZWRCeTogdGV4dCgndHJpYWdlZF9ieScpLFxuICB0cmlhZ2VkQXQ6IHRpbWVzdGFtcCgndHJpYWdlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICB1cGRhdGVkQXQ6IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG59LCAodGFibGUpID0+ICh7XG4gIC8vIE9uZSBsaXZlIGV4cG9zdXJlIHBlciAocGlwZWxpbmUsIHBsdWdpbiB2ZXJzaW9uLCBkaWdlc3QsIHNvdXJjZSk6IGEgbmlnaHRseVxuICAvLyByZXNjYW4gcmVmcmVzaGVzIGNvdW50cyByYXRoZXIgdGhhbiBvcGVuaW5nIGEgbmV3IHJvdyBldmVyeSBuaWdodCwgYW5kIGFcbiAgLy8gdmVyc2lvbiByZWJ1aWx0IG9uIGEgcGF0Y2hlZCBiYXNlIChzYW1lIHN0cmluZywgbmV3IGRpZ2VzdCkgZ2V0cyBpdHMgb3duIHJvdy5cbiAgLy8gcG9zdGdyZXMtaW5pdC5zcWwgY3JlYXRlcyBpdCBOVUxMUyBOT1QgRElTVElOQ1QgKGRyaXp6bGUncyB1bmlxdWVJbmRleCBjYW4ndFxuICAvLyBzYXkgc28pIHNvIGFuIGltYWdlLWxlc3MgdmVyc2lvbiBzdGlsbCBoYXMgZXhhY3RseSBvbmUgcm93IHRvIHJlZnJlc2guXG4gIGV4cG9zdXJlVW5pcXVlOiB1bmlxdWVJbmRleCgncGx1Z2luX3Z1bG5fZXhwb3N1cmVfdW5pcXVlJylcbiAgICAub24odGFibGUucGlwZWxpbmVJZCwgdGFibGUucGx1Z2luTmFtZSwgdGFibGUucGx1Z2luVmVyc2lvbiwgdGFibGUuaW1hZ2VEaWdlc3QsIHRhYmxlLnNvdXJjZSksXG4gIG9yZ09wZW5JZHg6IGluZGV4KCdwbHVnaW5fdnVsbl9leHBvc3VyZV9vcmdfb3Blbl9pZHgnKS5vbih0YWJsZS5vcmdJZCwgdGFibGUudHJpYWdlU3RhdGUpXG4gICAgLndoZXJlKHNxbGBmaXhlZF9hdCBJUyBOVUxMYCksXG4gIGRpZ2VzdElkeDogaW5kZXgoJ3BsdWdpbl92dWxuX2V4cG9zdXJlX2RpZ2VzdF9pZHgnKS5vbih0YWJsZS5pbWFnZURpZ2VzdCksXG59KSk7XG5cbi8qKlxuICogVGhlIGxhc3QgYC9wbHVnaW5zL2xvb2t1cGAgb3V0Y29tZSBwZXIgcGlwZWxpbmUgU1RFUCwgd2hlbiBzeW50aCAoQ0xJIG9yIHRoZVxuICogQ29kZUJ1aWxkIExhbWJkYSkgc2VuZHMgdGhlIHN0ZXAncyBjb250ZXh0LiBUaGUgREVDTEFSRUQgc2lkZVxuICogKGBwaXBlbGluZV9wbHVnaW5fcmVzb2x1dGlvbmApIHNheXMgd2hhdCB0aGUgY29uZmlnIHJlc29sdmVzIHRvIHdoZW4gaXQgd2FzXG4gKiBzYXZlZDsgdGhpcyBzYXlzIHdoYXQgc3ludGggd2FzIGFjdHVhbGx5IHRvbGQg4oCUIHRoZSB2ZXJzaW9uLCB0aGUgaW1hZ2UsIGV2ZXJ5XG4gKiB3YXJuaW5nLCBhbmQgdGhlIHJlZnVzYWwg4oCUIHdoaWNoIGlzIHdoYXQgYSBcIndoeSBkaWQgbXkgZGVwbG95IHN0b3BcIiBwYWdlIG5lZWRzLlxuICpcbiAqIEB0YWJsZSBwaXBlbGluZV9zdGVwX2xvb2t1cHNcbiAqL1xuZXhwb3J0IGNvbnN0IHBpcGVsaW5lU3RlcExvb2t1cCA9IHBnVGFibGUoJ3BpcGVsaW5lX3N0ZXBfbG9va3VwcycsIHtcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBwaXBlbGluZUlkOiB2YXJjaGFyKCdwaXBlbGluZV9pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICAvKiogVGhlIHN0ZXAncyBjb250cmFjdCBsYWJlbDogYHN5bnRoYCBvciBgPHN0YWdlTmFtZT4vPGFsaWFzID8/IG5hbWU+YC4gKi9cbiAgc3RlcEtleTogdmFyY2hhcignc3RlcF9rZXknLCB7IGxlbmd0aDogNTEyIH0pLm5vdE51bGwoKSxcbiAgcGx1Z2luUHVibGlzaGVyOiB2YXJjaGFyKCdwbHVnaW5fcHVibGlzaGVyJywgeyBsZW5ndGg6IDM5IH0pLFxuICBwbHVnaW5OYW1lOiB2YXJjaGFyKCdwbHVnaW5fbmFtZScsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICAvKiogV2hhdCB0aGUgcmVmZXJlbmNlIGFza2VkIGZvciAoYSByYW5nZSwgYSBwaW4sIG9yIG5vdGhpbmcpLiAqL1xuICByZXF1ZXN0ZWRWZXJzaW9uOiB2YXJjaGFyKCdyZXF1ZXN0ZWRfdmVyc2lvbicsIHsgbGVuZ3RoOiA1MCB9KSxcbiAgLyoqIE5VTEwgd2hlbiB0aGUgbG9va3VwIHdhcyByZWZ1c2VkLiAqL1xuICByZXNvbHZlZFZlcnNpb246IHZhcmNoYXIoJ3Jlc29sdmVkX3ZlcnNpb24nLCB7IGxlbmd0aDogNTAgfSksXG4gIHJlc29sdmVkUGx1Z2luSWQ6IHZhcmNoYXIoJ3Jlc29sdmVkX3BsdWdpbl9pZCcsIHsgbGVuZ3RoOiAyNTUgfSksXG4gIGltYWdlRGlnZXN0OiB2YXJjaGFyKCdpbWFnZV9kaWdlc3QnLCB7IGxlbmd0aDogNzEgfSksXG4gIC8qKiBgW3sgY29kZSwgbWVzc2FnZSwgc2V2ZXJpdHkgfV1gIOKAlCBldmVyeSB3YXJuaW5nIHRoZSBhbnN3ZXIgY2FycmllZC4gKi9cbiAgd2FybmluZ3M6IGpzb25iKCd3YXJuaW5ncycpLiR0eXBlPEFycmF5PHsgY29kZTogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmc7IHNldmVyaXR5Pzogc3RyaW5nIH0+PigpLmRlZmF1bHQoW10pLm5vdE51bGwoKSxcbiAgLyoqXG4gICAqIGB7IGNvZGUsIHJlYXNvbiwgbWVzc2FnZSB9YCB3aGVuIHRoZSBsb29rdXAgd2FzIHJlZnVzZWQg4oCUIG5ldmVyIGZvclxuICAgKiB2dWxuZXJhYmlsaXR5IHN0YXRlICh0aGF0IG9ubHkgZ3JhZGVzKSwgYnV0IGZvciBhIGRlbGV0ZWQgLyBub3QtaW5zdGFsbGVkIC9cbiAgICogcG9saWN5LWJsb2NrZWQgcGx1Z2luIG9yIGEgZmFpbGVkIGltYWdlIHNpZ25hdHVyZS5cbiAgICovXG4gIHJlZnVzYWw6IGpzb25iKCdyZWZ1c2FsJykuJHR5cGU8eyBjb2RlOiBzdHJpbmc7IHJlYXNvbjogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmcgfSB8IG51bGw+KCksXG4gIGxvb2tlZFVwQXQ6IHRpbWVzdGFtcCgnbG9va2VkX3VwX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgcGs6IHByaW1hcnlLZXkoeyBjb2x1bW5zOiBbdGFibGUucGlwZWxpbmVJZCwgdGFibGUuc3RlcEtleV0gfSksXG4gIG9yZ0lkeDogaW5kZXgoJ3BpcGVsaW5lX3N0ZXBfbG9va3Vwc19vcmdfaWR4Jykub24odGFibGUub3JnSWQpLFxufSkpO1xuXG4vKipcbiAqIFRoZSBsYXRlc3Qgc2VjdXJpdHktc2Nhbm5lciByZXBvcnQgYSBwaXBlbGluZSBSVU4gdXBsb2FkZWQsIHBlciAocGlwZWxpbmUsXG4gKiB0b29sLCBzdGFnZSkg4oCUIHdoYXQgdGhlIHBpcGVsaW5lJ3Mgb3duIHNjYW4gc3RlcHMgZm91bmQgaW4gd2hhdCBpdCBidWlsZHMsXG4gKiBuZXh0IHRvIHdoYXQgdGhlIHBsYXRmb3JtJ3MgcmVzY2FuIGZvdW5kIGluIHRoZSBwbHVnaW4gaW1hZ2VzIGl0IHJ1bnMuXG4gKiBDb3VudHMgYXJlIHN0b3JlZCBzbyBhIHJlcG9ydCBzZWN0aW9uIHJlYWRzIHRoZW0gd2l0aG91dCB1bnBhY2tpbmcgZmluZGluZ3MuXG4gKlxuICogQHRhYmxlIHBpcGVsaW5lX3NlY3VyaXR5X3JlcG9ydHNcbiAqL1xuZXhwb3J0IGNvbnN0IHBpcGVsaW5lU2VjdXJpdHlSZXBvcnQgPSBwZ1RhYmxlKCdwaXBlbGluZV9zZWN1cml0eV9yZXBvcnRzJywge1xuICBpZDogdmFyY2hhcignaWQnLCB7IGxlbmd0aDogMjU1IH0pLnByaW1hcnlLZXkoKSxcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBwaXBlbGluZUlkOiB2YXJjaGFyKCdwaXBlbGluZV9pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICB0b29sOiB2YXJjaGFyKCd0b29sJywgeyBsZW5ndGg6IDY0IH0pLm5vdE51bGwoKSxcbiAgZm9ybWF0OiB2YXJjaGFyKCdmb3JtYXQnLCB7IGxlbmd0aDogMTYgfSkubm90TnVsbCgpLFxuICBzdGFnZTogdmFyY2hhcignc3RhZ2UnLCB7IGxlbmd0aDogMjU1IH0pLmRlZmF1bHQoJycpLm5vdE51bGwoKSxcbiAgZXhlY3V0aW9uSWQ6IHZhcmNoYXIoJ2V4ZWN1dGlvbl9pZCcsIHsgbGVuZ3RoOiAyNTUgfSksXG4gIGNyaXRpY2FsQ291bnQ6IGludGVnZXIoJ2NyaXRpY2FsX2NvdW50JykuZGVmYXVsdCgwKS5ub3ROdWxsKCksXG4gIGhpZ2hDb3VudDogaW50ZWdlcignaGlnaF9jb3VudCcpLmRlZmF1bHQoMCkubm90TnVsbCgpLFxuICBtZWRpdW1Db3VudDogaW50ZWdlcignbWVkaXVtX2NvdW50JykuZGVmYXVsdCgwKS5ub3ROdWxsKCksXG4gIGxvd0NvdW50OiBpbnRlZ2VyKCdsb3dfY291bnQnKS5kZWZhdWx0KDApLm5vdE51bGwoKSxcbiAga2V2Q291bnQ6IGludGVnZXIoJ2tldl9jb3VudCcpLmRlZmF1bHQoMCkubm90TnVsbCgpLFxuICBjcml0aWNhbEZpeGFibGU6IGludGVnZXIoJ2NyaXRpY2FsX2ZpeGFibGUnKS5kZWZhdWx0KDApLm5vdE51bGwoKSxcbiAgaGlnaEZpeGFibGU6IGludGVnZXIoJ2hpZ2hfZml4YWJsZScpLmRlZmF1bHQoMCkubm90TnVsbCgpLFxuICBmaW5kaW5nczoganNvbmIoJ2ZpbmRpbmdzJykuJHR5cGU8QXJyYXk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+PigpLmRlZmF1bHQoW10pLm5vdE51bGwoKSxcbiAgdHJ1bmNhdGVkOiBib29sZWFuKCd0cnVuY2F0ZWQnKS5kZWZhdWx0KGZhbHNlKS5ub3ROdWxsKCksXG4gIHN1Ym1pdHRlZEJ5OiB0ZXh0KCdzdWJtaXR0ZWRfYnknKSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSwgKHRhYmxlKSA9PiAoe1xuICBsYXRlc3RVbmlxdWU6IHVuaXF1ZUluZGV4KCdwaXBlbGluZV9zZWN1cml0eV9yZXBvcnRzX3VuaXF1ZScpLm9uKHRhYmxlLnBpcGVsaW5lSWQsIHRhYmxlLnRvb2wsIHRhYmxlLnN0YWdlKSxcbiAgb3JnSWR4OiBpbmRleCgncGlwZWxpbmVfc2VjdXJpdHlfcmVwb3J0c19vcmdfaWR4Jykub24odGFibGUub3JnSWQpLFxufSkpO1xuXG5leHBvcnQgdHlwZSBEb3JhRGVwbG95bWVudCA9IHR5cGVvZiBkb3JhRGVwbG95bWVudC4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBEb3JhRGVwbG95bWVudEluc2VydCA9IHR5cGVvZiBkb3JhRGVwbG95bWVudC4kaW5mZXJJbnNlcnQ7XG5leHBvcnQgdHlwZSBFeGVjdXRpb25EYWlseVJvbGx1cCA9IHR5cGVvZiBleGVjdXRpb25EYWlseVJvbGx1cC4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBFeGVjdXRpb25EYWlseVJvbGx1cEluc2VydCA9IHR5cGVvZiBleGVjdXRpb25EYWlseVJvbGx1cC4kaW5mZXJJbnNlcnQ7XG5leHBvcnQgdHlwZSBQaXBlbGluZVBsdWdpblJlc29sdXRpb24gPSB0eXBlb2YgcGlwZWxpbmVQbHVnaW5SZXNvbHV0aW9uLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFBpcGVsaW5lUGx1Z2luUmVzb2x1dGlvbkluc2VydCA9IHR5cGVvZiBwaXBlbGluZVBsdWdpblJlc29sdXRpb24uJGluZmVySW5zZXJ0O1xuZXhwb3J0IHR5cGUgUGx1Z2luVnVsbkV4cG9zdXJlID0gdHlwZW9mIHBsdWdpblZ1bG5FeHBvc3VyZS4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBQbHVnaW5WdWxuRXhwb3N1cmVJbnNlcnQgPSB0eXBlb2YgcGx1Z2luVnVsbkV4cG9zdXJlLiRpbmZlckluc2VydDtcbmV4cG9ydCB0eXBlIFBpcGVsaW5lU3RlcExvb2t1cCA9IHR5cGVvZiBwaXBlbGluZVN0ZXBMb29rdXAuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgUGlwZWxpbmVTZWN1cml0eVJlcG9ydCA9IHR5cGVvZiBwaXBlbGluZVNlY3VyaXR5UmVwb3J0LiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFBpcGVsaW5lU3RlcExvb2t1cEluc2VydCA9IHR5cGVvZiBwaXBlbGluZVN0ZXBMb29rdXAuJGluZmVySW5zZXJ0O1xuIl19
356
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0aW5nLWFuYWx5dGljcy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2RhdGFiYXNlL3NjaGVtYS9yZXBvcnRpbmctYW5hbHl0aWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThCRztBQUVILE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWpJOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsVUFBVSxFQUFFLGNBQWMsRUFBRSxvQkFBb0IsRUFBRSxnQkFBZ0IsQ0FBVSxDQUFDO0FBRzVHOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBVSxDQUFDO0FBRzFFOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBVSxDQUFDO0FBRzlGOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRztJQUNoQyxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxrQkFBa0I7SUFDekUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxhQUFhO0lBQ2hGLGVBQWUsRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsT0FBTztDQUN0RSxDQUFDO0FBR1gsb0RB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QUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDM0csTUFBTSxFQUFFLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO0NBQ25FLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogVGhlIGFuYWx5dGljcyBsYXllciBldmVyeSByZXBvcnQgc2VjdGlvbiBhbmQgZGFzaGJvYXJkIHJlYWRzIGluc3RlYWQgb2YgcmF3XG4gKiBldmVudHMuXG4gKlxuICogUmVwb3J0aW5nIGhhcyBiZWVuIHNjYW5uaW5nIGBwaXBlbGluZV9ldmVudHNgIGRpcmVjdGx5LiBUaGF0IHdvcmtlZCB3aGlsZSB0aGVcbiAqIG9ubHkgY29uc3VtZXIgd2FzIG9uZSBkYXNoYm9hcmQgb3ZlciBhIDMwLWRheSB3aW5kb3csIGFuZCBzdG9wcyB3b3JraW5nIGZvclxuICogdGhpcyBmZWF0dXJlOiBhIHF1YXJ0ZXJseSByZXBvcnQgb3ZlciBhIDkwLWRheSB3aW5kb3csIGZvciBhbiBvcmcgd2l0aCBhXG4gKiB0aG91c2FuZCBleGVjdXRpb25zIGEgZGF5LCByZS1kZXJpdmVzIHRoZSBzYW1lIGFnZ3JlZ2F0ZXMgb24gZXZlcnkgcmVhZCwgYW5kXG4gKiB0aGUgcmV0ZW50aW9uIHN3ZWVwIHRoZW4gZGVsZXRlcyB0aGUgcm93cyB0aGUgbnVtYmVycyBjYW1lIGZyb20uIFR3byB0YWJsZXMgZml4XG4gKiBib3RoIHByb2JsZW1zOlxuICpcbiAqICAtIGBkb3JhX2RlcGxveW1lbnRzYCDigJQgT05FIFJPVyBQRVIgREVQTE9ZLCB3cml0dGVuIGF0IGluZ2VzdC4gTGVhZCB0aW1lIGlzXG4gKiAgICBzdG9yZWQgcGVyIGV4ZWN1dGlvbiBoZXJlLCBuZXZlciByZWNvbXB1dGVkIHBlciBldmVudCwgYmVjYXVzZSB0aGVcbiAqICAgIHBlci1ldmVudCBmb3JtIGRvdWJsZS1jb3VudHM6IGEgZGVwbG95IHN0YWdlIGVtaXRzIGEgU1RBR0UgZXZlbnQgYW5kIGFuXG4gKiAgICBBQ1RJT04gZXZlbnQsIGFuZCBib3RoIGNhcnJ5IHRoZSBzYW1lIGNvbW1pdCByYW5nZS5cbiAqICAtIGBleGVjdXRpb25fZGFpbHlfcm9sbHVwc2Ag4oCUIG9uZSByb3cgcGVyIG9yZywgcGlwZWxpbmUsIHN0YWdlIGFuZCBkYXkuIEV2ZXJ5XG4gKiAgICBzZWN0aW9uIHRoYXQgc2F5cyBcInJ1bnNcIiwgXCJzdWNjZXNzIHJhdGVcIiwgXCJwOTVcIiBvciBcImJ1aWxkIG1pbnV0ZXNcIiByZWFkc1xuICogICAgdGhlc2UsIHNvIGEgcmVwb3J0IGNvc3RzIGEgZmV3IGh1bmRyZWQgcm93cyBpbnN0ZWFkIG9mIGEgZmV3IGh1bmRyZWRcbiAqICAgIHRob3VzYW5kLlxuICpcbiAqIEJvdGggYXJlIERFUklWRUQ6IHRoZXkgY2FuIGJlIHJlYnVpbHQgZnJvbSBldmVudHMgd2hpbGUgdGhlIGV2ZW50cyBleGlzdCwgYW5kXG4gKiB0aGV5IG91dGxpdmUgdGhlbSBhZnRlcndhcmRzLiBUaGF0IGlzIHRoZSBwb2ludCDigJQgdGhleSBhcmUgdGhlIHJldGFpbmVkIGZvcm0uXG4gKlxuICogVGhlIG90aGVyIHR3byB0YWJsZXMgaGVyZSBhbnN3ZXIgXCJ3aGF0IGlzIGFjdHVhbGx5IHJ1bm5pbmdcIiwgd2hpY2ggdGhlIHJlcG9ydCdzXG4gKiBwbHVnaW4gc2VjdGlvbnMgbmVlZCBhbmQgbm8gZXhpc3RpbmcgdGFibGUgY2FuIGFuc3dlcjpcbiAqXG4gKiAgLSBgcGlwZWxpbmVfcGx1Z2luX3Jlc29sdXRpb25gIOKAlCB3aGF0IGEgcGlwZWxpbmUncyBERUNMQVJFRCBwbHVnaW4gdmVyc2lvbnNcbiAqICAgIHJlc29sdmUgdG8sIHJlY29tcHV0ZWQgb24gd3JpdGUgcmF0aGVyIHRoYW4gcmVzb2x2ZWQgcGVyIHJlYWQuXG4gKiAgLSBgcGx1Z2luX3Z1bG5fZXhwb3N1cmVgIOKAlCB3aGljaCBwaXBlbGluZXMgYXJlIGV4cG9zZWQgdG8gd2hpY2ggdnVsbmVyYWJsZVxuICogICAgcGx1Z2luIHZlcnNpb24sIG9wZW5lZCBieSBhIHJlc2NhbiBhbmQgY2xvc2VkIGJ5IGEgZml4aW5nIGRlcGxveS5cbiAqL1xuXG5pbXBvcnQgeyBzcWwgfSBmcm9tICdkcml6emxlLW9ybSc7XG5pbXBvcnQgeyBib29sZWFuLCBpbmRleCwgaW50ZWdlciwganNvbmIsIHBnVGFibGUsIHByaW1hcnlLZXksIHRleHQsIHRpbWVzdGFtcCwgdW5pcXVlSW5kZXgsIHZhcmNoYXIgfSBmcm9tICdkcml6emxlLW9ybS9wZy1jb3JlJztcblxuLyoqXG4gKiBXaHkgYSBkZXBsb3kncyBsZWFkIHRpbWUgY291bGQgbm90IGJlIG1lYXN1cmVkLiBSZWNvcmRlZCByYXRoZXIgdGhhbiBsZWZ0IE5VTExcbiAqIHdpdGggbm8gZXhwbGFuYXRpb24sIGJlY2F1c2UgdGhlIHRocmVlIGNhdXNlcyBuZWVkIGRpZmZlcmVudCBmaXhlcyBhbmQgdGhlXG4gKiByZXBvcnQgc2hvd3MgdGhlIHJlYXNvbjogbm8gU0NNIHRva2VuIGZvciB0aGUgc291cmNlLCB0aGUgcHJvdmlkZXIgcmF0ZS1saW1pdGVkXG4gKiB0aGUgcmFuZ2Ugd2Fsaywgb3IgdGhlIHNvdXJjZSB0eXBlIGhhcyBubyByYW5nZSBBUEkgYXQgYWxsLlxuICovXG5leHBvcnQgY29uc3QgTEVBRF9USU1FX0dBUFMgPSBbJ25vX3Rva2VuJywgJ3JhdGVfbGltaXRlZCcsICd1bnN1cHBvcnRlZF9zb3VyY2UnLCAnbm9fY29tbWl0X2RhdGEnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIExlYWRUaW1lR2FwID0gKHR5cGVvZiBMRUFEX1RJTUVfR0FQUylbbnVtYmVyXTtcblxuLyoqXG4gKiBIb3cgY29uZmlkZW50bHkgYW4gaW5jaWRlbnQgd2FzIGF0dHJpYnV0ZWQgdG8gYSBkZXBsb3kuIFNob3duIGJlc2lkZSBjaGFuZ2VcbiAqIGZhaWx1cmUgcmF0ZSBhbmQgdGltZSB0byByZXN0b3JlLCBiZWNhdXNlIFwidGhpcyBkZXBsb3kgYnJva2UgcHJvZHVjdGlvblwiIGFuZFxuICogXCJhbiBpbmNpZGVudCBvcGVuZWQgc29tZSBob3VycyBhZnRlciB0aGlzIGRlcGxveVwiIGFyZSBkaWZmZXJlbnQgY2xhaW1zIGFuZCBhXG4gKiBtYW5hZ2VyIGFjdHMgZGlmZmVyZW50bHkgb24gZWFjaC5cbiAqL1xuZXhwb3J0IGNvbnN0IENPUlJFTEFUSU9OX0NPTkZJREVOQ0VTID0gWydoaWdoJywgJ21lZGl1bScsICdsb3cnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIENvcnJlbGF0aW9uQ29uZmlkZW5jZSA9ICh0eXBlb2YgQ09SUkVMQVRJT05fQ09ORklERU5DRVMpW251bWJlcl07XG5cbi8qKlxuICogSG93IGEgcGlwZWxpbmUgY2FtZSB0byBleGlzdC4gRm9yIHRoZSBhZG9wdGlvbiBzZWN0aW9uOiBhbiBvcmcgd2hvc2UgcGlwZWxpbmVzXG4gKiBhcmUgYWxsIGhhbmQtYnVpbHQgaXMgYSBkaWZmZXJlbnQgYWRvcHRpb24gc3RvcnkgZnJvbSBvbmUgdGVtcGxhdGluZyB0aGVtLlxuICovXG5leHBvcnQgY29uc3QgUElQRUxJTkVfQ1JFQVRJT05fU09VUkNFUyA9IFsnbWFudWFsJywgJ3RlbXBsYXRlJywgJ2FpJywgJ2J1bGsnLCAnY2RrJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBQaXBlbGluZUNyZWF0aW9uU291cmNlID0gKHR5cGVvZiBQSVBFTElORV9DUkVBVElPTl9TT1VSQ0VTKVtudW1iZXJdO1xuXG4vKipcbiAqIFdoYXQga2luZCBvZiB0aGluZyBicm9rZS4gQXNzaWduZWQgYXQgaW5nZXN0IGJ5IHRoZSBjbGFzc2lmaWVyXG4gKiAoYGFwaS9yZXBvcnRpbmcvc3JjL3NlcnZpY2VzL2ZhaWx1cmUtY2xhc3NpZmllci50c2ApLCB3aGljaCBpcyBydWxlcyBvdmVyIHRoZVxuICogYWN0aW9uJ3MgdHlwZSBhbmQgZXJyb3IgdGV4dCDigJQgZGVsaWJlcmF0ZWx5IGRhdGEsIG5vdCBjb2RlLCBzbyB0aGUgdGF4b25vbXkgY2FuXG4gKiBncm93IHdpdGhvdXQgYSBkZXBsb3kuXG4gKlxuICogVGhlIGNhdGVnb3JpZXMgb3ZlcmxhcCB0aGUgcGx1Z2luLWJ1aWxkIHRheG9ub215IG9uIHB1cnBvc2U6IGEgZGVwZW5kZW5jeVxuICogZmFpbHVyZSBpcyBhIGRlcGVuZGVuY3kgZmFpbHVyZSB3aGV0aGVyIGl0IGhhcHBlbmVkIGJ1aWxkaW5nIGEgcGx1Z2luIG9yXG4gKiBydW5uaW5nIG9uZSwgYW5kIHR3byB2b2NhYnVsYXJpZXMgZm9yIHRoZSBzYW1lIHRoaW5nIHdvdWxkIG1ha2UgdGhlIHJlcG9ydCBhbmRcbiAqIHRoZSBidWlsZCBxdWV1ZSBkaXNhZ3JlZS5cbiAqL1xuZXhwb3J0IGNvbnN0IEZBSUxVUkVfQ0FURUdPUklFUyA9IFtcbiAgJ3NvdXJjZV9jaGVja291dCcsICdkZXBlbmRlbmN5JywgJ2J1aWxkJywgJ3VuaXRfdGVzdCcsICdpbnRlZ3JhdGlvbl90ZXN0JyxcbiAgJ3NlY3VyaXR5X3NjYW4nLCAnaW5mcmFzdHJ1Y3R1cmUnLCAnZGVwbG95bWVudCcsICdhdXRoZW50aWNhdGlvbicsICdwZXJtaXNzaW9ucycsXG4gICdjb25maWd1cmF0aW9uJywgJ3RpbWVvdXQnLCAncmVzb3VyY2VfZXhoYXVzdGlvbicsICdleHRlcm5hbF9zZXJ2aWNlJywgJ290aGVyJyxcbl0gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBGYWlsdXJlQ2F0ZWdvcnkgPSAodHlwZW9mIEZBSUxVUkVfQ0FURUdPUklFUylbbnVtYmVyXTtcblxuLyoqIFdoZXJlIGEgcGx1Z2luLXZlcnNpb24gZXhwb3N1cmUgd2FzIG9ic2VydmVkLiAqL1xuZXhwb3J0IGNvbnN0IEVYUE9TVVJFX1NPVVJDRVMgPSBbJ2RlY2xhcmVkJywgJ2RlcGxveWVkJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBFeHBvc3VyZVNvdXJjZSA9ICh0eXBlb2YgRVhQT1NVUkVfU09VUkNFUylbbnVtYmVyXTtcblxuLyoqXG4gKiBXaGF0IGFuIG9yZyBkZWNpZGVkIGFib3V0IGFuIGV4cG9zdXJlLiBgb3BlbmAgdW50aWwgc29tZW9uZSBsb29rcztcbiAqIGBhY2NlcHRlZGAgaXMgYSB0aW1lLWJveGVkIGRlY2lzaW9uIHdpdGggYSByZWFzb24gYW5kIGFuIG93bmVyLCBuZXZlciBhXG4gKiBwZXJtYW5lbnQgbXV0ZTsgYGZhbHNlX3Bvc2l0aXZlYCBpcyBhIHNjYW5uZXIgZGlzYWdyZWVtZW50IHdvcnRoIHJlY29yZGluZyBzb1xuICogdGhlIHNhbWUgZmluZGluZyBzdG9wcyBiZWluZyByZS1yYWlzZWQgYXMgbmV3cy4gYGZpeGVkYCA9IHRoZSBwaXBlbGluZSBtb3ZlZFxuICogdG8gYW5vdGhlciB2ZXJzaW9uIG9mIHRoZSBwbHVnaW47IGByZW1vdmVkYCA9IHRoZSBzdGVwIChvciB0aGUgcGlwZWxpbmUsIG9yXG4gKiBpdHMgZGVwbG95KSBpcyBnb25lIOKAlCB0aGUgdHJpYWdlIGZpZWxkcyBhcmUgS0VQVCwgc28gYSBzdGVwIHJlLWFkZGVkIGJlZm9yZVxuICogYW4gYWNjZXB0YW5jZSdzIGRlYWRsaW5lIGdldHMgdGhlIGFjY2VwdGFuY2UgYmFjay5cbiAqL1xuZXhwb3J0IGNvbnN0IEVYUE9TVVJFX1RSSUFHRV9TVEFURVMgPSBbJ29wZW4nLCAnYWNjZXB0ZWQnLCAnZmFsc2VfcG9zaXRpdmUnLCAnZml4ZWQnLCAncmVtb3ZlZCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgRXhwb3N1cmVUcmlhZ2VTdGF0ZSA9ICh0eXBlb2YgRVhQT1NVUkVfVFJJQUdFX1NUQVRFUylbbnVtYmVyXTtcblxuLyoqXG4gKiBPbmUgZGVwbG95bWVudDogYW4gZXhlY3V0aW9uIHRoYXQgcmVhY2hlZCBhbiBlbnZpcm9ubWVudC5cbiAqXG4gKiBXcml0dGVuIGF0IGluZ2VzdCwgb25lIHJvdyBwZXIgKGV4ZWN1dGlvbiwgZW52aXJvbm1lbnQpLiBFdmVyeXRoaW5nIERPUkFcbiAqIHJlcG9ydHMgaXMgaGVyZSwgc28gYC9kb3JhYCwgdGhlIHRyZW5kIGFuZCB0aGUgcmVwb3J0IHNlY3Rpb25zIHN0b3Agc2Nhbm5pbmdcbiAqIHJhdyBldmVudHMg4oCUIGFuZCBrZWVwIHdvcmtpbmcgYWZ0ZXIgdGhlIGV2ZW50cyBhcmUgc3dlcHQuXG4gKlxuICogQHRhYmxlIGRvcmFfZGVwbG95bWVudHNcbiAqL1xuZXhwb3J0IGNvbnN0IGRvcmFEZXBsb3ltZW50ID0gcGdUYWJsZSgnZG9yYV9kZXBsb3ltZW50cycsIHtcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBleGVjdXRpb25JZDogdmFyY2hhcignZXhlY3V0aW9uX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIGVudmlyb25tZW50OiB2YXJjaGFyKCdlbnZpcm9ubWVudCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBwaXBlbGluZUlkOiB2YXJjaGFyKCdwaXBlbGluZV9pZCcsIHsgbGVuZ3RoOiAyNTUgfSksXG4gIC8qKiBXaGVuIHRoZSBkZXBsb3kgc3RhZ2UgY29tcGxldGVkLiBUaGUgZGVwbG95J3Mgb3duIHRpbWVzdGFtcCwgbm90IHRoZSBydW4ncy4gKi9cbiAgZGVwbG95ZWRBdDogdGltZXN0YW1wKCdkZXBsb3llZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLm5vdE51bGwoKSxcbiAgc3VjY2VlZGVkOiBib29sZWFuKCdzdWNjZWVkZWQnKS5ub3ROdWxsKCksXG4gIC8qKlxuICAgKiBUaGUgT0xERVNUIHVuc2hpcHBlZCBjb21taXQgaW4gdGhpcyBkZXBsb3kncyByYW5nZS4gTGVhZCB0aW1lIGlzXG4gICAqIGBkZXBsb3llZEF0IC0gZWFybGllc3RDb21taXRBdGAsIGNvbXB1dGVkIG9uY2UgYW5kIHN0b3JlZCwgYmVjYXVzZSB0aGVcbiAgICogcGVyLWV2ZW50IGZvcm0gZG91YmxlLWNvdW50cyBhIGRlcGxveSB0aGF0IGVtaXRzIGJvdGggYSBTVEFHRSBhbmQgYW4gQUNUSU9OXG4gICAqIGV2ZW50IGNhcnJ5aW5nIHRoZSBzYW1lIHJhbmdlLlxuICAgKi9cbiAgZWFybGllc3RDb21taXRBdDogdGltZXN0YW1wKCdlYXJsaWVzdF9jb21taXRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgbGVhZFRpbWVTZWNvbmRzOiBpbnRlZ2VyKCdsZWFkX3RpbWVfc2Vjb25kcycpLFxuICBjb21taXRDb3VudDogaW50ZWdlcignY29tbWl0X2NvdW50JyksXG4gIGNvbW1pdFNoYTogdmFyY2hhcignY29tbWl0X3NoYScsIHsgbGVuZ3RoOiAyNTUgfSksXG4gIC8qKiBXaHkgbGVhZCB0aW1lIGlzIGFic2VudCwgd2hlbiBpdCBpcy4gTlVMTCB3aGVuIGl0IHdhcyBtZWFzdXJlZC4gKi9cbiAgbGVhZFRpbWVHYXA6IHZhcmNoYXIoJ2xlYWRfdGltZV9nYXAnLCB7IGxlbmd0aDogMzAgfSkuJHR5cGU8TGVhZFRpbWVHYXA+KCksXG4gIC8qKlxuICAgKiBQb3N0LWRlcGxveSBvdXRjb21lIG1hcmtlcnMsIGRlbm9ybWFsaXplZCBvbnRvIHRoZSBkZXBsb3kgc28gY2hhbmdlLWZhaWx1cmVcbiAgICogcmF0ZSBhbmQgdGltZS10by1yZXN0b3JlIGFyZSBvbmUgc2NhbiByYXRoZXIgdGhhbiBhIGpvaW4gcGVyIHdpbmRvdy5cbiAgICovXG4gIGZhaWxlZEF0OiB0aW1lc3RhbXAoJ2ZhaWxlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICByZXN0b3JlZEF0OiB0aW1lc3RhbXAoJ3Jlc3RvcmVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIC8qKiBIb3cgdGhlIGluY2lkZW504oaSZGVwbG95IGxpbmsgd2FzIGp1ZGdlZC4gTlVMTCB3aGVuIG5vdGhpbmcgd2FzIGNvcnJlbGF0ZWQuICovXG4gIGNvcnJlbGF0aW9uQ29uZmlkZW5jZTogdmFyY2hhcignY29ycmVsYXRpb25fY29uZmlkZW5jZScsIHsgbGVuZ3RoOiAxMCB9KS4kdHlwZTxDb3JyZWxhdGlvbkNvbmZpZGVuY2U+KCksXG4gIC8qKlxuICAgKiBUaGUgRXZlbnRCcmlkZ2UgZXZlbnQgaWQgb2YgdGhlIGRlcGxveSBTVEFHRSBldmVudCB0aGF0IGxhc3Qgd3JvdGUgdGhpcyByb3csXG4gICAqIHNvIGEgRE9SQSBudW1iZXIgdHJhY2VzIGJhY2sgdG8gdGhlIGV4YWN0IGBwaXBlbGluZV9ldmVudHNgIHJvdyAoYW5kIEFXU1xuICAgKiBldmVudCkgYmVoaW5kIGl0LiBOVUxMIGZvciBhIGRlcGxveSBmcm9tIGEgcHJvZHVjZXIgd2l0aG91dCBvbmUuXG4gICAqL1xuICBzb3VyY2VFdmVudElkOiB2YXJjaGFyKCdzb3VyY2VfZXZlbnRfaWQnLCB7IGxlbmd0aDogMTI4IH0pLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRBdDogdGltZXN0YW1wKCd1cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgLy8gT25lIHJvdyBwZXIgZXhlY3V0aW9uIHBlciBlbnZpcm9ubWVudDogYSByZWRlbGl2ZXJlZCBldmVudCB1cHNlcnRzIHJhdGhlclxuICAvLyB0aGFuIGluc2VydGluZyBhIHNlY29uZCBkZXBsb3kgKEV2ZW50QnJpZGdlIOKGkiBTUVMgaXMgYXQtbGVhc3Qtb25jZSkuXG4gIHBrOiBwcmltYXJ5S2V5KHsgY29sdW1uczogW3RhYmxlLmV4ZWN1dGlvbklkLCB0YWJsZS5lbnZpcm9ubWVudF0gfSksXG4gIC8vIFRoZSB3aW5kb3cgc2NhbiBldmVyeSBET1JBIHJlYWQgZG9lcy5cbiAgb3JnRW52RGVwbG95ZWRJZHg6IGluZGV4KCdkb3JhX2RlcGxveW1lbnRfb3JnX2Vudl9kZXBsb3llZF9pZHgnKVxuICAgIC5vbih0YWJsZS5vcmdJZCwgdGFibGUuZW52aXJvbm1lbnQsIHRhYmxlLmRlcGxveWVkQXQpLFxuICBvcmdEZXBsb3llZElkeDogaW5kZXgoJ2RvcmFfZGVwbG95bWVudF9vcmdfZGVwbG95ZWRfaWR4Jykub24odGFibGUub3JnSWQsIHRhYmxlLmRlcGxveWVkQXQpLFxuICBwaXBlbGluZUlkeDogaW5kZXgoJ2RvcmFfZGVwbG95bWVudF9waXBlbGluZV9pZHgnKS5vbih0YWJsZS5waXBlbGluZUlkLCB0YWJsZS5kZXBsb3llZEF0KSxcbiAgLy8gVGhlIHByb21vdGlvbiB2aWV3OiBvbmUgY29tbWl0J3MgcGF0aCBhY3Jvc3MgZW52aXJvbm1lbnRzLlxuICBjb21taXRJZHg6IGluZGV4KCdkb3JhX2RlcGxveW1lbnRfY29tbWl0X2lkeCcpLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS5jb21taXRTaGEpXG4gICAgLndoZXJlKHNxbGBjb21taXRfc2hhIElTIE5PVCBOVUxMYCksXG59KSk7XG5cbi8qKlxuICogUHJlLWFnZ3JlZ2F0ZWQgZXhlY3V0aW9uIGNvdW50cyBhbmQgdGltaW5ncywgb25lIHJvdyBwZXIgb3JnLCBwaXBlbGluZSwgc3RhZ2VcbiAqIGFuZCBVVEMgZGF5LlxuICpcbiAqIFJlYnVpbHQgZm9yIGEgZGF5IHdoZW4gbGF0ZSBldmVudHMgYXJyaXZlLCBzbyB0aGUgcm9sbHVwIGFuZCB0aGUgZXZlbnRzIGFncmVlXG4gKiB3aGlsZSBib3RoIGV4aXN0LiBgZmFpbHVyZXNCeUNhdGVnb3J5YCBpcyBhIEpTT04gbWFwIHJhdGhlciB0aGFuIGEgY29sdW1uIHBlclxuICogY2F0ZWdvcnkgYmVjYXVzZSB0aGUgdGF4b25vbXkgZ3Jvd3MuXG4gKlxuICogQHRhYmxlIGV4ZWN1dGlvbl9kYWlseV9yb2xsdXBzXG4gKi9cbmV4cG9ydCBjb25zdCBleGVjdXRpb25EYWlseVJvbGx1cCA9IHBnVGFibGUoJ2V4ZWN1dGlvbl9kYWlseV9yb2xsdXBzJywge1xuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIC8qKiBUaGUgVVRDIGRhdGUgdGhpcyByb3cgYWdncmVnYXRlcy4gUmVwb3J0IHBlcmlvZHMgcmUtYnVja2V0IGluIHRoZSByZXBvcnQnc1xuICAgKiAgb3duIHRpbWV6b25lIGJ5IHN1bW1pbmcgZGF5cyDigJQgd2hpY2ggaXMgd2h5IHRoZSBncmFpbiBpcyBhIERBWS4gKi9cbiAgZGF5OiB0aW1lc3RhbXAoJ2RheScsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLm5vdE51bGwoKSxcbiAgcGlwZWxpbmVJZDogdmFyY2hhcigncGlwZWxpbmVfaWQnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgLyoqIGAnJ2AgZm9yIHRoZSBwaXBlbGluZS1sZXZlbCByb3c7IGEgc3RhZ2UgbmFtZSBmb3IgYSBzdGFnZS1sZXZlbCByb3cuICovXG4gIHN0YWdlTmFtZTogdmFyY2hhcignc3RhZ2VfbmFtZScsIHsgbGVuZ3RoOiAyNTUgfSkuZGVmYXVsdCgnJykubm90TnVsbCgpLFxuICBydW5zOiBpbnRlZ2VyKCdydW5zJykuZGVmYXVsdCgwKS5ub3ROdWxsKCksXG4gIHN1Y2NlZWRlZDogaW50ZWdlcignc3VjY2VlZGVkJykuZGVmYXVsdCgwKS5ub3ROdWxsKCksXG4gIGZhaWxlZDogaW50ZWdlcignZmFpbGVkJykuZGVmYXVsdCgwKS5ub3ROdWxsKCksXG4gIC8qKiBjYXRlZ29yeSDihpIgY291bnQuIEZlZWRzIHRoZSBmYWlsdXJlLWFuYWx5c2lzIHNlY3Rpb24uICovXG4gIGZhaWx1cmVzQnlDYXRlZ29yeToganNvbmIoJ2ZhaWx1cmVzX2J5X2NhdGVnb3J5JykuJHR5cGU8UmVjb3JkPHN0cmluZywgbnVtYmVyPj4oKS5kZWZhdWx0KHt9KS5ub3ROdWxsKCksXG4gIHA1ME1zOiBpbnRlZ2VyKCdwNTBfbXMnKSxcbiAgcDkwTXM6IGludGVnZXIoJ3A5MF9tcycpLFxuICBwOTVNczogaW50ZWdlcigncDk1X21zJyksXG4gIC8qKiBTdW1tZWQgZXhlY3V0aW9uIGR1cmF0aW9uLCBpbiBzZWNvbmRzLiBUaGUgcmVzb3VyY2UtY29uc3VtcHRpb24gc2VjdGlvbidzXG4gICAqICBvbmx5IGlucHV0OyBkZWxpYmVyYXRlbHkgTk9UIGNvbnZlcnRlZCB0byBtb25leSBhbnl3aGVyZS4gKi9cbiAgYnVpbGRTZWNvbmRzOiBpbnRlZ2VyKCdidWlsZF9zZWNvbmRzJykuZGVmYXVsdCgwKS5ub3ROdWxsKCksXG4gIC8qKiBXaGVuIHRoaXMgcm93IHdhcyBsYXN0IHJlYnVpbHQsIHNvIGEgbGF0ZS1ldmVudCByZWJ1aWxkIGlzIHZpc2libGUuICovXG4gIGNvbXB1dGVkQXQ6IHRpbWVzdGFtcCgnY29tcHV0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSwgKHRhYmxlKSA9PiAoe1xuICBwazogcHJpbWFyeUtleSh7IGNvbHVtbnM6IFt0YWJsZS5vcmdJZCwgdGFibGUuZGF5LCB0YWJsZS5waXBlbGluZUlkLCB0YWJsZS5zdGFnZU5hbWVdIH0pLFxuICBvcmdEYXlJZHg6IGluZGV4KCdleGVjdXRpb25fcm9sbHVwX29yZ19kYXlfaWR4Jykub24odGFibGUub3JnSWQsIHRhYmxlLmRheSksXG4gIHBpcGVsaW5lRGF5SWR4OiBpbmRleCgnZXhlY3V0aW9uX3JvbGx1cF9waXBlbGluZV9kYXlfaWR4Jykub24odGFibGUucGlwZWxpbmVJZCwgdGFibGUuZGF5KSxcbn0pKTtcblxuLyoqXG4gKiBXaGF0IGEgcGlwZWxpbmUncyBkZWNsYXJlZCBwbHVnaW4gc3RlcHMgcmVzb2x2ZSB0by5cbiAqXG4gKiBSZWNvbXB1dGVkIG9uIHBpcGVsaW5lIHdyaXRlIGFuZCBvbiBwbHVnaW4gcHVibGlzaCwgcmF0aGVyIHRoYW4gcmVzb2x2ZWQgYXRcbiAqIHJlYWQgdGltZTogdGhlIG91dGRhdGVkLXBsdWdpbiBzZWN0aW9uIGNvbXBhcmVzIFwiaW4gdXNlXCIgYWdhaW5zdCBcImxhdGVzdFxuICogYXZhaWxhYmxlXCIgZm9yIGV2ZXJ5IHN0ZXAgb2YgZXZlcnkgcGlwZWxpbmUsIGFuZCBkb2luZyB0aGF0IHJlc29sdXRpb24gcGVyIHJlYWRcbiAqIG1hZGUgaXQgYSBxdWVyeSBub2JvZHkgY291bGQgYWZmb3JkIHRvIHB1dCBpbiBhIHJlcG9ydC5cbiAqXG4gKiBAdGFibGUgcGlwZWxpbmVfcGx1Z2luX3Jlc29sdXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IHBpcGVsaW5lUGx1Z2luUmVzb2x1dGlvbiA9IHBnVGFibGUoJ3BpcGVsaW5lX3BsdWdpbl9yZXNvbHV0aW9uJywge1xuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHBpcGVsaW5lSWQ6IHZhcmNoYXIoJ3BpcGVsaW5lX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHN0YWdlTmFtZTogdmFyY2hhcignc3RhZ2VfbmFtZScsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBzdGVwTmFtZTogdmFyY2hhcignc3RlcF9uYW1lJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHBsdWdpblB1Ymxpc2hlcjogdmFyY2hhcigncGx1Z2luX3B1Ymxpc2hlcicsIHsgbGVuZ3RoOiAzOSB9KSxcbiAgcGx1Z2luTmFtZTogdmFyY2hhcigncGx1Z2luX25hbWUnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgLyoqIFdoYXQgdGhlIGNvbmZpZyBhc2tlZCBmb3Ig4oCUIGEgcmFuZ2UsIGEgcGluLCBvciBub3RoaW5nLiAqL1xuICBkZWNsYXJlZFZlcnNpb246IHZhcmNoYXIoJ2RlY2xhcmVkX3ZlcnNpb24nLCB7IGxlbmd0aDogNTAgfSksXG4gIC8qKiBXaGF0IHRoYXQgcmVzb2x2ZXMgdG8gdG9kYXkuIE5VTEwgd2hlbiBub3RoaW5nIHNhdGlzZmllcyBpdC4gKi9cbiAgcmVzb2x2ZWRWZXJzaW9uOiB2YXJjaGFyKCdyZXNvbHZlZF92ZXJzaW9uJywgeyBsZW5ndGg6IDUwIH0pLFxuICAvKiogVGhlIHJlc29sdmVkIHJlY29yZDogYSBgcGx1Z2luc2Agcm93IGlkIG9yIGEgbGlzdGluZyB2ZXJzaW9uIGlkLiAqL1xuICByZXNvbHZlZFBsdWdpbklkOiB2YXJjaGFyKCdyZXNvbHZlZF9wbHVnaW5faWQnLCB7IGxlbmd0aDogMjU1IH0pLFxuICAvKipcbiAgICogVGhlIGltYWdlIGRpZ2VzdCB0aGUgcmVzb2x2ZWQgdmVyc2lvbiBpcyBwaW5uZWQgdG8uIEEgdmVyc2lvbiBzdHJpbmcgYWxvbmVcbiAgICogY2Fubm90IHNheSB3aGV0aGVyIGEgcGlwZWxpbmUgaXMgb24gdGhlIHJlYnVpbHQsIHBhdGNoZWQgaW1hZ2Ugb3IgdGhlIG9sZFxuICAgKiBvbmUg4oCUIHRoZSByZXNjYW4gYW5kIHRoZSBhZHZpc29yeSBzZWFyY2ggbWF0Y2ggb24gdGhpcy5cbiAgICovXG4gIHJlc29sdmVkRGlnZXN0OiB2YXJjaGFyKCdyZXNvbHZlZF9kaWdlc3QnLCB7IGxlbmd0aDogNzEgfSksXG4gIC8qKiBUaGUgbmV3ZXN0IHZlcnNpb24gdGhlIG9yZyBpcyBlbnRpdGxlZCB0byBpbnN0YWxsLCBmb3IgdGhlIFwiZ2FwXCIgY29sdW1uLiAqL1xuICBsYXRlc3RWZXJzaW9uOiB2YXJjaGFyKCdsYXRlc3RfdmVyc2lvbicsIHsgbGVuZ3RoOiA1MCB9KSxcbiAgLyoqIGBtYWpvcmAgLyBgbWlub3JgIC8gYHBhdGNoYCAvIGBub25lYCwgZnJvbSByZXNvbHZlZCDihpIgbGF0ZXN0LiAqL1xuICB2ZXJzaW9uR2FwOiB2YXJjaGFyKCd2ZXJzaW9uX2dhcCcsIHsgbGVuZ3RoOiAxMCB9KSxcbiAgLyoqIEZhbHNlIHdoZW4gdGhlIHJlc29sdmVkIHZlcnNpb24gaXMgb3V0c2lkZSB0aGUgb3JnJ3MgY29uc3VtcHRpb24gcG9saWN5LiAqL1xuICB3aXRoaW5Qb2xpY3k6IGJvb2xlYW4oJ3dpdGhpbl9wb2xpY3knKS5kZWZhdWx0KHRydWUpLm5vdE51bGwoKSxcbiAgLyoqXG4gICAqIFRoZSByb290IG9yZyBvZiBhIFRFQU0ncyBwaXBlbGluZSAobnVsbCBmb3IgYSByb290IG9yZydzKS4gQSB0ZWFtIHJlc29sdmVzXG4gICAqIHRocm91Z2ggaXRzIHJvb3QncyBpbnN0YWxscywgcG9saWN5IGFuZCBzaGFyZWQgcGx1Z2lucywgYW5kIHRoZSBwbHVnaW5cbiAgICogc2VydmljZSByZS1yZXNvbHZpbmcgYSBwaXBlbGluZSBhZnRlciBhIHB1Ymxpc2ggLyBmbGFnIC8geWFuayBoYXMgbm8gcmVxdWVzdFxuICAgKiB0byByZWFkIHRoZSBoaWVyYXJjaHkgZnJvbSDigJQgc28gdGhlIHdyaXRlIHRoYXQga25ldyBpdCByZWNvcmRzIGl0LlxuICAgKi9cbiAgcm9vdE9yZ0lkOiB2YXJjaGFyKCdyb290X29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSksXG4gIGNvbXB1dGVkQXQ6IHRpbWVzdGFtcCgnY29tcHV0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSwgKHRhYmxlKSA9PiAoe1xuICBwazogcHJpbWFyeUtleSh7IGNvbHVtbnM6IFt0YWJsZS5waXBlbGluZUlkLCB0YWJsZS5zdGFnZU5hbWUsIHRhYmxlLnN0ZXBOYW1lXSB9KSxcbiAgb3JnSWR4OiBpbmRleCgncGlwZWxpbmVfcGx1Z2luX3Jlc29sdXRpb25fb3JnX2lkeCcpLm9uKHRhYmxlLm9yZ0lkKSxcbiAgcGx1Z2luSWR4OiBpbmRleCgncGlwZWxpbmVfcGx1Z2luX3Jlc29sdXRpb25fcGx1Z2luX2lkeCcpLm9uKHRhYmxlLnBsdWdpblB1Ymxpc2hlciwgdGFibGUucGx1Z2luTmFtZSksXG4gIC8vIFwiV2hpY2ggcGlwZWxpbmVzIGFyZSBiZWhpbmQ/XCIg4oCUIHRoZSBvdXRkYXRlZCBzZWN0aW9uJ3MgZHJpdmluZyBzY2FuLlxuICBnYXBJZHg6IGluZGV4KCdwaXBlbGluZV9wbHVnaW5fcmVzb2x1dGlvbl9nYXBfaWR4Jykub24odGFibGUub3JnSWQsIHRhYmxlLnZlcnNpb25HYXApLFxuICAvLyBcIldoaWNoIHBpcGVsaW5lcyBkZWNsYXJlIHRoaXMgdmVyc2lvbiAvIGltYWdlP1wiIOKAlCByZXNjYW4gZmFuLW91dCwgYWR2aXNvcnkgc2VhcmNoLlxuICB2ZXJzaW9uSWR4OiBpbmRleCgncGlwZWxpbmVfcGx1Z2luX3Jlc29sdXRpb25fdmVyc2lvbl9pZHgnKVxuICAgIC5vbih0YWJsZS5wbHVnaW5OYW1lLCB0YWJsZS5yZXNvbHZlZFZlcnNpb24sIHRhYmxlLnJlc29sdmVkRGlnZXN0KSxcbn0pKTtcblxuLyoqXG4gKiBPbmUgcGlwZWxpbmUncyBleHBvc3VyZSB0byBvbmUgdnVsbmVyYWJsZSBwbHVnaW4gdmVyc2lvbi5cbiAqXG4gKiBPcGVuZWQgYnkgdGhlIG5pZ2h0bHkgcmVzY2FuIHdoZW4gYSB2ZXJzaW9uIGluIHVzZSBoYXMgZml4YWJsZSBDcml0aWNhbC9IaWdoXG4gKiBmaW5kaW5ncywgYW5kIENMT1NFRCBieSBhIGRlcGxveSB0aGF0IG1vdmVzIHRoZSBwaXBlbGluZSBvZmYgaXQuIEl0IGlzIGFcbiAqIHBlci1waXBlbGluZSByb3cgcmF0aGVyIHRoYW4gYSBwZXItdmVyc2lvbiBvbmUgYmVjYXVzZSB0aGUgcXVlc3Rpb24gYSBtYW5hZ2VyXG4gKiBhc2tzIGlzIFwid2hpY2ggb2Ygb3VyIHBpcGVsaW5lcyBpcyBleHBvc2VkXCIsIGFuZCBhbnN3ZXJpbmcgdGhhdCBmcm9tIGFcbiAqIHZlcnNpb24tbGV2ZWwgdGFibGUgbWVhbnMgcmUtZGVyaXZpbmcgdGhlIHBpcGVsaW5lIHNldCBvbiBldmVyeSByZWFkLlxuICpcbiAqIEtleWVkIGJ5IElNQUdFIERJR0VTVCwgbm90IHZlcnNpb24gc3RyaW5nOiBhIHZlcnNpb24gcmVidWlsdCBvbiBhIHBhdGNoZWQgYmFzZVxuICogaW1hZ2UgaXMgYSBkaWZmZXJlbnQgYXJ0aWZhY3Qgd2l0aCBkaWZmZXJlbnQgZmluZGluZ3MsIGFuZCBrZXlpbmcgb24gdGhlIHN0cmluZ1xuICogd291bGQgcmVwb3J0IHRoZSBvbGQgb25lIGZvcmV2ZXIuXG4gKlxuICogQHRhYmxlIHBsdWdpbl92dWxuX2V4cG9zdXJlXG4gKi9cbmV4cG9ydCBjb25zdCBwbHVnaW5WdWxuRXhwb3N1cmUgPSBwZ1RhYmxlKCdwbHVnaW5fdnVsbl9leHBvc3VyZScsIHtcbiAgaWQ6IHZhcmNoYXIoJ2lkJywgeyBsZW5ndGg6IDI1NSB9KS5wcmltYXJ5S2V5KCksXG4gIG9yZ0lkOiB2YXJjaGFyKCdvcmdfaWQnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgcGlwZWxpbmVJZDogdmFyY2hhcigncGlwZWxpbmVfaWQnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgcGx1Z2luUHVibGlzaGVyOiB2YXJjaGFyKCdwbHVnaW5fcHVibGlzaGVyJywgeyBsZW5ndGg6IDM5IH0pLFxuICBwbHVnaW5OYW1lOiB2YXJjaGFyKCdwbHVnaW5fbmFtZScsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBwbHVnaW5WZXJzaW9uOiB2YXJjaGFyKCdwbHVnaW5fdmVyc2lvbicsIHsgbGVuZ3RoOiA1MCB9KS5ub3ROdWxsKCksXG4gIGltYWdlRGlnZXN0OiB2YXJjaGFyKCdpbWFnZV9kaWdlc3QnLCB7IGxlbmd0aDogNzEgfSksXG4gIHNvdXJjZTogdmFyY2hhcignc291cmNlJywgeyBsZW5ndGg6IDEwIH0pLiR0eXBlPEV4cG9zdXJlU291cmNlPigpLm5vdE51bGwoKSxcbiAgY3JpdGljYWxDb3VudDogaW50ZWdlcignY3JpdGljYWxfY291bnQnKS5kZWZhdWx0KDApLm5vdE51bGwoKSxcbiAgaGlnaENvdW50OiBpbnRlZ2VyKCdoaWdoX2NvdW50JykuZGVmYXVsdCgwKS5ub3ROdWxsKCksXG4gIC8qKiBUaGUgZmluZGluZ3MgdGhlbXNlbHZlczogQ1ZFIGlkLCBwYWNrYWdlLCBmaXhlZC1pbiB2ZXJzaW9uLiBDYXBwZWQgYnkgdGhlIHdyaXRlci4gKi9cbiAgdG9wRmluZGluZ3M6IGpzb25iKCd0b3BfZmluZGluZ3MnKS4kdHlwZTxBcnJheTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4+KCkuZGVmYXVsdChbXSkubm90TnVsbCgpLFxuICAvKipcbiAgICogRVZFUlkgQ3JpdGljYWwvSGlnaCBmaW5kaW5nIG9mIHRoZSB2ZXJzaW9uIGF0IGl0cyBsYXN0IHJlZnJlc2gsIGFzIGZpbmRpbmdcbiAgICoga2V5cyAoYGlkfHBhY2thZ2V8cGFja2FnZVZlcnNpb25gKSDigJQgdW5jYXBwZWQsIHVubGlrZSBgdG9wX2ZpbmRpbmdzYCwgYmVjYXVzZVxuICAgKiBhbiBhY2NlcHRhbmNlIGlzIGNoZWNrZWQgYWdhaW5zdCBpdDogd2hhdCB3YXMgYWNjZXB0ZWQgbXVzdCBiZSBwcm92YWJsZS5cbiAgICovXG4gIGZpbmRpbmdLZXlzOiB0ZXh0KCdmaW5kaW5nX2tleXMnKS5hcnJheSgpLiR0eXBlPHN0cmluZ1tdPigpLmRlZmF1bHQoW10pLm5vdE51bGwoKSxcbiAgLyoqIFRoZSBmaW5kaW5nIGtleXMgYW4gYGFjY2VwdGVkYCB0cmlhZ2UgY292ZXJlZCwgZnJvemVuIGF0IHRoZSBkZWNpc2lvbi4gKi9cbiAgYWNjZXB0ZWRGaW5kaW5nS2V5czogdGV4dCgnYWNjZXB0ZWRfZmluZGluZ19rZXlzJykuYXJyYXkoKS4kdHlwZTxzdHJpbmdbXT4oKS5kZWZhdWx0KFtdKS5ub3ROdWxsKCksXG4gIC8qKiBUaGUgYWNjZXB0YW5jZSBleHBsaWNpdGx5IGNvdmVyZWQgS0VWLWxpc3RlZCBmaW5kaW5ncyAobmV2ZXIgaW1wbGllZCkuICovXG4gIGFjY2VwdGVkS2V2OiBib29sZWFuKCdhY2NlcHRlZF9rZXYnKS5kZWZhdWx0KGZhbHNlKS5ub3ROdWxsKCksXG4gIGZsYWdnZWRBdDogdGltZXN0YW1wKCdmbGFnZ2VkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbiAgLyoqIFNldCB3aGVuIGEgZGVwbG95IG1vdmVkIHRoZSBwaXBlbGluZSBvbnRvIGEgdmVyc2lvbiB3aXRob3V0IHRoZSBmaW5kaW5ncy4gKi9cbiAgZml4ZWRBdDogdGltZXN0YW1wKCdmaXhlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICB0cmlhZ2VTdGF0ZTogdmFyY2hhcigndHJpYWdlX3N0YXRlJywgeyBsZW5ndGg6IDIwIH0pLiR0eXBlPEV4cG9zdXJlVHJpYWdlU3RhdGU+KCkuZGVmYXVsdCgnb3BlbicpLm5vdE51bGwoKSxcbiAgLyoqIEFuIGFjY2VwdGFuY2UgaXMgdGltZS1ib3hlZDogYSBwZXJtYW5lbnQgbXV0ZSBpcyBob3cgYSBmaW5kaW5nIGlzIGZvcmdvdHRlbi4gKi9cbiAgYWNjZXB0ZWRVbnRpbDogdGltZXN0YW1wKCdhY2NlcHRlZF91bnRpbCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICB0cmlhZ2VSZWFzb246IHRleHQoJ3RyaWFnZV9yZWFzb24nKSxcbiAgdHJpYWdlZEJ5OiB0ZXh0KCd0cmlhZ2VkX2J5JyksXG4gIHRyaWFnZWRBdDogdGltZXN0YW1wKCd0cmlhZ2VkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIHVwZGF0ZWRBdDogdGltZXN0YW1wKCd1cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgLy8gT25lIGxpdmUgZXhwb3N1cmUgcGVyIChwaXBlbGluZSwgcGx1Z2luIHZlcnNpb24sIGRpZ2VzdCwgc291cmNlKTogYSBuaWdodGx5XG4gIC8vIHJlc2NhbiByZWZyZXNoZXMgY291bnRzIHJhdGhlciB0aGFuIG9wZW5pbmcgYSBuZXcgcm93IGV2ZXJ5IG5pZ2h0LCBhbmQgYVxuICAvLyB2ZXJzaW9uIHJlYnVpbHQgb24gYSBwYXRjaGVkIGJhc2UgKHNhbWUgc3RyaW5nLCBuZXcgZGlnZXN0KSBnZXRzIGl0cyBvd24gcm93LlxuICAvLyBwb3N0Z3Jlcy1pbml0LnNxbCBjcmVhdGVzIGl0IE5VTExTIE5PVCBESVNUSU5DVCAoZHJpenpsZSdzIHVuaXF1ZUluZGV4IGNhbid0XG4gIC8vIHNheSBzbykgc28gYW4gaW1hZ2UtbGVzcyB2ZXJzaW9uIHN0aWxsIGhhcyBleGFjdGx5IG9uZSByb3cgdG8gcmVmcmVzaC5cbiAgZXhwb3N1cmVVbmlxdWU6IHVuaXF1ZUluZGV4KCdwbHVnaW5fdnVsbl9leHBvc3VyZV91bmlxdWUnKVxuICAgIC5vbih0YWJsZS5waXBlbGluZUlkLCB0YWJsZS5wbHVnaW5OYW1lLCB0YWJsZS5wbHVnaW5WZXJzaW9uLCB0YWJsZS5pbWFnZURpZ2VzdCwgdGFibGUuc291cmNlKSxcbiAgb3JnT3BlbklkeDogaW5kZXgoJ3BsdWdpbl92dWxuX2V4cG9zdXJlX29yZ19vcGVuX2lkeCcpLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS50cmlhZ2VTdGF0ZSlcbiAgICAud2hlcmUoc3FsYGZpeGVkX2F0IElTIE5VTExgKSxcbiAgZGlnZXN0SWR4OiBpbmRleCgncGx1Z2luX3Z1bG5fZXhwb3N1cmVfZGlnZXN0X2lkeCcpLm9uKHRhYmxlLmltYWdlRGlnZXN0KSxcbn0pKTtcblxuLyoqXG4gKiBUaGUgbGFzdCBgL3BsdWdpbnMvbG9va3VwYCBvdXRjb21lIHBlciBwaXBlbGluZSBTVEVQLCB3aGVuIHN5bnRoIChDTEkgb3IgdGhlXG4gKiBDb2RlQnVpbGQgTGFtYmRhKSBzZW5kcyB0aGUgc3RlcCdzIGNvbnRleHQuIFRoZSBERUNMQVJFRCBzaWRlXG4gKiAoYHBpcGVsaW5lX3BsdWdpbl9yZXNvbHV0aW9uYCkgc2F5cyB3aGF0IHRoZSBjb25maWcgcmVzb2x2ZXMgdG8gd2hlbiBpdCB3YXNcbiAqIHNhdmVkOyB0aGlzIHNheXMgd2hhdCBzeW50aCB3YXMgYWN0dWFsbHkgdG9sZCDigJQgdGhlIHZlcnNpb24sIHRoZSBpbWFnZSwgZXZlcnlcbiAqIHdhcm5pbmcsIGFuZCB0aGUgcmVmdXNhbCDigJQgd2hpY2ggaXMgd2hhdCBhIFwid2h5IGRpZCBteSBkZXBsb3kgc3RvcFwiIHBhZ2UgbmVlZHMuXG4gKlxuICogQHRhYmxlIHBpcGVsaW5lX3N0ZXBfbG9va3Vwc1xuICovXG5leHBvcnQgY29uc3QgcGlwZWxpbmVTdGVwTG9va3VwID0gcGdUYWJsZSgncGlwZWxpbmVfc3RlcF9sb29rdXBzJywge1xuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHBpcGVsaW5lSWQ6IHZhcmNoYXIoJ3BpcGVsaW5lX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIC8qKiBUaGUgc3RlcCdzIGNvbnRyYWN0IGxhYmVsOiBgc3ludGhgIG9yIGA8c3RhZ2VOYW1lPi88YWxpYXMgPz8gbmFtZT5gLiAqL1xuICBzdGVwS2V5OiB2YXJjaGFyKCdzdGVwX2tleScsIHsgbGVuZ3RoOiA1MTIgfSkubm90TnVsbCgpLFxuICBwbHVnaW5QdWJsaXNoZXI6IHZhcmNoYXIoJ3BsdWdpbl9wdWJsaXNoZXInLCB7IGxlbmd0aDogMzkgfSksXG4gIHBsdWdpbk5hbWU6IHZhcmNoYXIoJ3BsdWdpbl9uYW1lJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIC8qKiBXaGF0IHRoZSByZWZlcmVuY2UgYXNrZWQgZm9yIChhIHJhbmdlLCBhIHBpbiwgb3Igbm90aGluZykuICovXG4gIHJlcXVlc3RlZFZlcnNpb246IHZhcmNoYXIoJ3JlcXVlc3RlZF92ZXJzaW9uJywgeyBsZW5ndGg6IDUwIH0pLFxuICAvKiogTlVMTCB3aGVuIHRoZSBsb29rdXAgd2FzIHJlZnVzZWQuICovXG4gIHJlc29sdmVkVmVyc2lvbjogdmFyY2hhcigncmVzb2x2ZWRfdmVyc2lvbicsIHsgbGVuZ3RoOiA1MCB9KSxcbiAgcmVzb2x2ZWRQbHVnaW5JZDogdmFyY2hhcigncmVzb2x2ZWRfcGx1Z2luX2lkJywgeyBsZW5ndGg6IDI1NSB9KSxcbiAgaW1hZ2VEaWdlc3Q6IHZhcmNoYXIoJ2ltYWdlX2RpZ2VzdCcsIHsgbGVuZ3RoOiA3MSB9KSxcbiAgLyoqIGBbeyBjb2RlLCBtZXNzYWdlLCBzZXZlcml0eSB9XWAg4oCUIGV2ZXJ5IHdhcm5pbmcgdGhlIGFuc3dlciBjYXJyaWVkLiAqL1xuICB3YXJuaW5nczoganNvbmIoJ3dhcm5pbmdzJykuJHR5cGU8QXJyYXk8eyBjb2RlOiBzdHJpbmc7IG1lc3NhZ2U6IHN0cmluZzsgc2V2ZXJpdHk/OiBzdHJpbmcgfT4+KCkuZGVmYXVsdChbXSkubm90TnVsbCgpLFxuICAvKipcbiAgICogYHsgY29kZSwgcmVhc29uLCBtZXNzYWdlIH1gIHdoZW4gdGhlIGxvb2t1cCB3YXMgcmVmdXNlZCDigJQgbmV2ZXIgZm9yXG4gICAqIHZ1bG5lcmFiaWxpdHkgc3RhdGUgKHRoYXQgb25seSBncmFkZXMpLCBidXQgZm9yIGEgZGVsZXRlZCAvIG5vdC1pbnN0YWxsZWQgL1xuICAgKiBwb2xpY3ktYmxvY2tlZCBwbHVnaW4gb3IgYSBmYWlsZWQgaW1hZ2Ugc2lnbmF0dXJlLlxuICAgKi9cbiAgcmVmdXNhbDoganNvbmIoJ3JlZnVzYWwnKS4kdHlwZTx7IGNvZGU6IHN0cmluZzsgcmVhc29uOiBzdHJpbmc7IG1lc3NhZ2U6IHN0cmluZyB9IHwgbnVsbD4oKSxcbiAgbG9va2VkVXBBdDogdGltZXN0YW1wKCdsb29rZWRfdXBfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSwgKHRhYmxlKSA9PiAoe1xuICBwazogcHJpbWFyeUtleSh7IGNvbHVtbnM6IFt0YWJsZS5waXBlbGluZUlkLCB0YWJsZS5zdGVwS2V5XSB9KSxcbiAgb3JnSWR4OiBpbmRleCgncGlwZWxpbmVfc3RlcF9sb29rdXBzX29yZ19pZHgnKS5vbih0YWJsZS5vcmdJZCksXG59KSk7XG5cbi8qKlxuICogVGhlIGxhdGVzdCBzZWN1cml0eS1zY2FubmVyIHJlcG9ydCBhIHBpcGVsaW5lIFJVTiB1cGxvYWRlZCwgcGVyIChwaXBlbGluZSxcbiAqIHRvb2wsIHN0YWdlKSDigJQgd2hhdCB0aGUgcGlwZWxpbmUncyBvd24gc2NhbiBzdGVwcyBmb3VuZCBpbiB3aGF0IGl0IGJ1aWxkcyxcbiAqIG5leHQgdG8gd2hhdCB0aGUgcGxhdGZvcm0ncyByZXNjYW4gZm91bmQgaW4gdGhlIHBsdWdpbiBpbWFnZXMgaXQgcnVucy5cbiAqIENvdW50cyBhcmUgc3RvcmVkIHNvIGEgcmVwb3J0IHNlY3Rpb24gcmVhZHMgdGhlbSB3aXRob3V0IHVucGFja2luZyBmaW5kaW5ncy5cbiAqXG4gKiBAdGFibGUgcGlwZWxpbmVfc2VjdXJpdHlfcmVwb3J0c1xuICovXG5leHBvcnQgY29uc3QgcGlwZWxpbmVTZWN1cml0eVJlcG9ydCA9IHBnVGFibGUoJ3BpcGVsaW5lX3NlY3VyaXR5X3JlcG9ydHMnLCB7XG4gIGlkOiB2YXJjaGFyKCdpZCcsIHsgbGVuZ3RoOiAyNTUgfSkucHJpbWFyeUtleSgpLFxuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHBpcGVsaW5lSWQ6IHZhcmNoYXIoJ3BpcGVsaW5lX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHRvb2w6IHZhcmNoYXIoJ3Rvb2wnLCB7IGxlbmd0aDogNjQgfSkubm90TnVsbCgpLFxuICBmb3JtYXQ6IHZhcmNoYXIoJ2Zvcm1hdCcsIHsgbGVuZ3RoOiAxNiB9KS5ub3ROdWxsKCksXG4gIHN0YWdlOiB2YXJjaGFyKCdzdGFnZScsIHsgbGVuZ3RoOiAyNTUgfSkuZGVmYXVsdCgnJykubm90TnVsbCgpLFxuICBleGVjdXRpb25JZDogdmFyY2hhcignZXhlY3V0aW9uX2lkJywgeyBsZW5ndGg6IDI1NSB9KSxcbiAgY3JpdGljYWxDb3VudDogaW50ZWdlcignY3JpdGljYWxfY291bnQnKS5kZWZhdWx0KDApLm5vdE51bGwoKSxcbiAgaGlnaENvdW50OiBpbnRlZ2VyKCdoaWdoX2NvdW50JykuZGVmYXVsdCgwKS5ub3ROdWxsKCksXG4gIG1lZGl1bUNvdW50OiBpbnRlZ2VyKCdtZWRpdW1fY291bnQnKS5kZWZhdWx0KDApLm5vdE51bGwoKSxcbiAgbG93Q291bnQ6IGludGVnZXIoJ2xvd19jb3VudCcpLmRlZmF1bHQoMCkubm90TnVsbCgpLFxuICBrZXZDb3VudDogaW50ZWdlcigna2V2X2NvdW50JykuZGVmYXVsdCgwKS5ub3ROdWxsKCksXG4gIGNyaXRpY2FsRml4YWJsZTogaW50ZWdlcignY3JpdGljYWxfZml4YWJsZScpLmRlZmF1bHQoMCkubm90TnVsbCgpLFxuICBoaWdoRml4YWJsZTogaW50ZWdlcignaGlnaF9maXhhYmxlJykuZGVmYXVsdCgwKS5ub3ROdWxsKCksXG4gIGZpbmRpbmdzOiBqc29uYignZmluZGluZ3MnKS4kdHlwZTxBcnJheTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4+KCkuZGVmYXVsdChbXSkubm90TnVsbCgpLFxuICB0cnVuY2F0ZWQ6IGJvb2xlYW4oJ3RydW5jYXRlZCcpLmRlZmF1bHQoZmFsc2UpLm5vdE51bGwoKSxcbiAgc3VibWl0dGVkQnk6IHRleHQoJ3N1Ym1pdHRlZF9ieScpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG59LCAodGFibGUpID0+ICh7XG4gIGxhdGVzdFVuaXF1ZTogdW5pcXVlSW5kZXgoJ3BpcGVsaW5lX3NlY3VyaXR5X3JlcG9ydHNfdW5pcXVlJykub24odGFibGUucGlwZWxpbmVJZCwgdGFibGUudG9vbCwgdGFibGUuc3RhZ2UpLFxuICBvcmdJZHg6IGluZGV4KCdwaXBlbGluZV9zZWN1cml0eV9yZXBvcnRzX29yZ19pZHgnKS5vbih0YWJsZS5vcmdJZCksXG59KSk7XG5cbmV4cG9ydCB0eXBlIERvcmFEZXBsb3ltZW50ID0gdHlwZW9mIGRvcmFEZXBsb3ltZW50LiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIERvcmFEZXBsb3ltZW50SW5zZXJ0ID0gdHlwZW9mIGRvcmFEZXBsb3ltZW50LiRpbmZlckluc2VydDtcbmV4cG9ydCB0eXBlIEV4ZWN1dGlvbkRhaWx5Um9sbHVwID0gdHlwZW9mIGV4ZWN1dGlvbkRhaWx5Um9sbHVwLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIEV4ZWN1dGlvbkRhaWx5Um9sbHVwSW5zZXJ0ID0gdHlwZW9mIGV4ZWN1dGlvbkRhaWx5Um9sbHVwLiRpbmZlckluc2VydDtcbmV4cG9ydCB0eXBlIFBpcGVsaW5lUGx1Z2luUmVzb2x1dGlvbiA9IHR5cGVvZiBwaXBlbGluZVBsdWdpblJlc29sdXRpb24uJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgUGlwZWxpbmVQbHVnaW5SZXNvbHV0aW9uSW5zZXJ0ID0gdHlwZW9mIHBpcGVsaW5lUGx1Z2luUmVzb2x1dGlvbi4kaW5mZXJJbnNlcnQ7XG5leHBvcnQgdHlwZSBQbHVnaW5WdWxuRXhwb3N1cmUgPSB0eXBlb2YgcGx1Z2luVnVsbkV4cG9zdXJlLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFBsdWdpblZ1bG5FeHBvc3VyZUluc2VydCA9IHR5cGVvZiBwbHVnaW5WdWxuRXhwb3N1cmUuJGluZmVySW5zZXJ0O1xuZXhwb3J0IHR5cGUgUGlwZWxpbmVTdGVwTG9va3VwID0gdHlwZW9mIHBpcGVsaW5lU3RlcExvb2t1cC4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBQaXBlbGluZVNlY3VyaXR5UmVwb3J0ID0gdHlwZW9mIHBpcGVsaW5lU2VjdXJpdHlSZXBvcnQuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgUGlwZWxpbmVTdGVwTG9va3VwSW5zZXJ0ID0gdHlwZW9mIHBpcGVsaW5lU3RlcExvb2t1cC4kaW5mZXJJbnNlcnQ7XG4iXX0=
@@ -248,4 +248,4 @@ export const reportRecipient = pgTable('report_recipients', {
248
248
  unsubTokenUnique: uniqueIndex('report_recipient_unsub_token_unique').on(table.unsubscribeToken)
249
249
  .where(sql `unsubscribe_token IS NOT NULL`),
250
250
  }));
251
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0aW5nLXN0YWtlaG9sZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2RhdGFiYXNlL3NjaGVtYS9yZXBvcnRpbmctc3Rha2Vob2xkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JHO0FBRUgsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVySCxnREFBZ0Q7QUFDaEQsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQVUsQ0FBQztBQUczRSx5RUFBeUU7QUFDekUsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsQ0FBVSxDQUFDO0FBR25HOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsUUFBUSxDQUFVLENBQUM7QUFHcEc7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsQ0FBVSxDQUFDO0FBR2xHLG9DQUFvQztBQUNwQyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFVLENBQUM7QUFVekU7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsb0JBQW9CLEVBQUU7SUFD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LEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUM3RixNQUFNLEVBQUUsS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFBLG9CQUFvQixDQUFDO0lBQ3hGLFFBQVEsRUFBRSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUEsd0JBQXdCLENBQUM7SUFDckcsbUZBQW1GO0lBQ25GLGFBQWE7SUFDYixnQkFBZ0IsRUFBRSxXQUFXLENBQUMscUNBQXFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDO1NBQzVGLEtBQUssQ0FBQyxHQUFHLENBQUEsK0JBQStCLENBQUM7Q0FDN0MsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBTdGFrZWhvbGRlciByZXBvcnRzIOKAlCBzY2hlZHVsZWQsIG1hbmFnZXItZmFjaW5nIHN1bW1hcmllcyBhIGxlYWQgZGV2ZWxvcGVyXG4gKiBjb21wb3NlcywgcmV2aWV3cyBhbmQgcHVibGlzaGVzLlxuICpcbiAqIEZvdXIgdGFibGVzLCBhbmQgdGhlIHJlYXNvbiBlYWNoIGV4aXN0czpcbiAqXG4gKiAgLSBgcmVwb3J0X2RlZmluaXRpb25zYCDigJQgdGhlIHNhdmVkIFwid2hhdCBhbmQgd2hlblwiLiBSZXBvcnRpbmcgd2FzIGVudGlyZWx5XG4gKiAgICBvbi1kZW1hbmQgYmVmb3JlIHRoaXM6IHRoZSBkYXNoYm9hcmQgcGlja2VkIGEgZnJvbS90byBhbmQgbm90aGluZyBjb3VsZCBiZVxuICogICAgc2F2ZWQsIHNjaGVkdWxlZCBvciBrZXB0LlxuICogIC0gYHJlcG9ydF9ydW5zYCDigJQgdGhlIEZST1pFTiBzbmFwc2hvdCBvZiBvbmUgcGVyaW9kJ3Mgb3V0cHV0LiBUaGlzIGlzIHRoZSBsb2FkXG4gKiAgICBiZWFyaW5nIHRhYmxlLiBUaGUgcmV0ZW50aW9uIHN3ZWVwIHB1cmdlcyByYXcgYHBpcGVsaW5lX2V2ZW50c2AgYnkgdGllciwgc29cbiAqICAgIHdpdGhvdXQgYSBzbmFwc2hvdCBsYXN0IHF1YXJ0ZXIncyByZXBvcnQgY2Fubm90IGJlIHJlZ2VuZXJhdGVkIG9uY2UgaXRzXG4gKiAgICBldmVudHMgYXJlIGdvbmUg4oCUIGFuZCBhIG1hbmFnZXIgd2hvIHJlYWQgYSBudW1iZXIgb24gTW9uZGF5IG11c3Qgc2VlIHRoZSBzYW1lXG4gKiAgICBudW1iZXIgb24gRnJpZGF5LlxuICogIC0gYHJlcG9ydF9zaGFyZV9saW5rc2Ag4oCUIGV4cGlyaW5nLCByZXZvY2FibGUgcmVhZC1vbmx5IGxpbmtzLCBiZWNhdXNlIHRoZVxuICogICAgbWFuYWdlcnMgYSByZXBvcnQgaXMgZm9yIHVzdWFsbHkgaGF2ZSBubyBwbGF0Zm9ybSBhY2NvdW50LlxuICogIC0gYHJlcG9ydF9yZWNpcGllbnRzYCDigJQgcGVyLW9yZyBkZWxpdmVyeSBhZGRyZXNzZXMsIHdpdGggdmVyaWZpY2F0aW9uIGFuZFxuICogICAgYm91bmNlIHN0YXRlLiBSZWNpcGllbnQgZW1haWxzIGFyZSBQSUkgYW5kIHRoZSBvcmcgb3ducyB0aGUgbGlzdCwgbm90IHRoZVxuICogICAgZGVmaW5pdGlvbiwgc28gb25lIGxlYWQncyBsaXN0IGlzIHJldXNhYmxlIGFuZCBvbmUgdW5zdWJzY3JpYmUgaXMgaG9ub3VyZWRcbiAqICAgIGV2ZXJ5d2hlcmUuXG4gKlxuICogRXZlcnkgdGFibGUgaXMgb3JnLXNjb3BlZCB3aXRoIFJMUyArIHNvZnQtZGVsZXRlLCBtaXJyb3JpbmcgcG9zdGdyZXMtaW5pdC5zcWxcbiAqICh3aGljaCBpcyB3aGF0IGFjdHVhbGx5IGRlcGxveXM7IGBzY2hlbWEtcmVmbGVjdGlvbi50ZXN0LnRzYCBrZWVwcyB0aGUgdHdvIGluXG4gKiBsb2NrLXN0ZXAsIG5hbWUgZm9yIG5hbWUpLlxuICovXG5cbmltcG9ydCB7IHNxbCB9IGZyb20gJ2RyaXp6bGUtb3JtJztcbmltcG9ydCB7IGJvb2xlYW4sIGluZGV4LCBpbnRlZ2VyLCBqc29uYiwgcGdUYWJsZSwgdGV4dCwgdGltZXN0YW1wLCB1bmlxdWVJbmRleCwgdmFyY2hhciB9IGZyb20gJ2RyaXp6bGUtb3JtL3BnLWNvcmUnO1xuXG4vKiogSG93IG9mdGVuIGEgZGVmaW5pdGlvbiBwcm9kdWNlcyBhIHJlcG9ydC4gKi9cbmV4cG9ydCBjb25zdCBSRVBPUlRfQ0FERU5DRVMgPSBbJ3dlZWtseScsICdtb250aGx5JywgJ3F1YXJ0ZXJseSddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUmVwb3J0Q2FkZW5jZSA9ICh0eXBlb2YgUkVQT1JUX0NBREVOQ0VTKVtudW1iZXJdO1xuXG4vKiogVGhlIG1hbmFnZXItZmFjaW5nIHRlbXBsYXRlcy4gRWFjaCBpcyBhIGZpeGVkIGxpc3Qgb2Ygc2VjdGlvbiBpZHMuICovXG5leHBvcnQgY29uc3QgUkVQT1JUX1RFTVBMQVRFUyA9IFsnd2Vla2x5X2RlbGl2ZXJ5JywgJ21vbnRobHlfaGVhbHRoJywgJ3F1YXJ0ZXJseV9yZXZpZXcnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFJlcG9ydFRlbXBsYXRlID0gKHR5cGVvZiBSRVBPUlRfVEVNUExBVEVTKVtudW1iZXJdO1xuXG4vKipcbiAqIEEgcnVuJ3MgbGlmZWN5Y2xlLiBgZHJhZnRpbmdgIOKGkiBgcmVhZHlfZm9yX3Jldmlld2Ag4oaSIGBwdWJsaXNoZWRgLCB3aXRoIGBmYWlsZWRgXG4gKiBhcyBhIHRlcm1pbmFsIHNpZGUgYnJhbmNoLiBOb3RoaW5nIHJlYWNoZXMgYSBtYW5hZ2VyIGJlZm9yZSBgcHVibGlzaGVkYCwgd2hpY2hcbiAqIGlzIHdoYXQgbWFrZXMgdGhlIGxlYWQncyBhcHByb3ZhbCB0aGUgZ2F0ZS5cbiAqL1xuZXhwb3J0IGNvbnN0IFJFUE9SVF9SVU5fU1RBVFVTRVMgPSBbJ2RyYWZ0aW5nJywgJ3JlYWR5X2Zvcl9yZXZpZXcnLCAncHVibGlzaGVkJywgJ2ZhaWxlZCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUmVwb3J0UnVuU3RhdHVzID0gKHR5cGVvZiBSRVBPUlRfUlVOX1NUQVRVU0VTKVtudW1iZXJdO1xuXG4vKipcbiAqIFdoeSBhIGRlZmluaXRpb24gc3RvcHBlZCBydW5uaW5nLiBSZWNvcmRlZCByYXRoZXIgdGhhbiBpbmZlcnJlZCwgYmVjYXVzZSB0aGVcbiAqIHRocmVlIGNhdXNlcyBuZWVkIGRpZmZlcmVudCBmaXhlcyBhbmQgdGhlIGxlYWQgc2VlcyB0aGlzIHN0cmluZzogdGhlIGFkZC1vblxuICogbGFwc2VkLCB0aGUgb3duZXIgd2FzIGRlYWN0aXZhdGVkLCBvciB0aGUgb3duZXIgbG9zdCB0aGUgcGVybWlzc2lvbiB0aGF0IGxldFxuICogdGhlbSBhdXRob3IgaXQuXG4gKi9cbmV4cG9ydCBjb25zdCBSRVBPUlRfUEFVU0VfUkVBU09OUyA9IFsnZW50aXRsZW1lbnQnLCAnb3duZXJfaW5hY3RpdmUnLCAncGVybWlzc2lvbl9sb3N0J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBSZXBvcnRQYXVzZVJlYXNvbiA9ICh0eXBlb2YgUkVQT1JUX1BBVVNFX1JFQVNPTlMpW251bWJlcl07XG5cbi8qKiBXaGF0IGEgZGVmaW5pdGlvbiByZXBvcnRzIG9uLiAqL1xuZXhwb3J0IGNvbnN0IFJFUE9SVF9TQ09QRV9LSU5EUyA9IFsnb3JnJywgJ3Byb2plY3RzJywgJ3JvbGx1cCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUmVwb3J0U2NvcGVLaW5kID0gKHR5cGVvZiBSRVBPUlRfU0NPUEVfS0lORFMpW251bWJlcl07XG5cbi8qKiBUaGUgYHNjb3BlYCBKU09OOiB3aGljaCBwaXBlbGluZXMgYSBydW4gY292ZXJzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRTY29wZSB7XG4gIGtpbmQ6IFJlcG9ydFNjb3BlS2luZDtcbiAgLyoqIFByb2plY3QgbmFtZXMsIHdoZW4gYGtpbmQgPT09ICdwcm9qZWN0cydgLiBFbXB0eSBmb3Igb3JnL3JvbGx1cC4gKi9cbiAgcHJvamVjdHM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBBIHNhdmVkIHJlcG9ydDogd2hhdCB0byBjb21wdXRlLCBob3cgb2Z0ZW4sIGluIHdob3NlIHRpbWV6b25lLCBhbmQgd2hvIHJlY2VpdmVzXG4gKiBpdC5cbiAqXG4gKiBAdGFibGUgcmVwb3J0X2RlZmluaXRpb25zXG4gKi9cbmV4cG9ydCBjb25zdCByZXBvcnREZWZpbml0aW9uID0gcGdUYWJsZSgncmVwb3J0X2RlZmluaXRpb25zJywge1xuICBpZDogdmFyY2hhcignaWQnLCB7IGxlbmd0aDogMjU1IH0pLnByaW1hcnlLZXkoKSxcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICAvKipcbiAgICogVGhlIGxlYWQgd2hvIG93bnMgdGhpcyBkZWZpbml0aW9uLiBSdW5zIHJlLWNoZWNrIFRISVMgdXNlcidzIHBlcm1pc3Npb25zLCBub3RcbiAgICogdGhlIGNhbGxlcidzLCBiZWNhdXNlIGEgc2NoZWR1bGVkIHJ1biBoYXMgbm8gY2FsbGVyIOKAlCBzbyBhIGxlYWQgd2hvIGxvc2VzXG4gICAqIGFjY2VzcyBzdG9wcyBwcm9kdWNpbmcgcmVwb3J0cyByYXRoZXIgdGhhbiBrZWVwaW5nIGEgc3RhbmRpbmcgZ3JhbnQuXG4gICAqL1xuICBvd25lcklkOiB0ZXh0KCdvd25lcl9pZCcpLm5vdE51bGwoKSxcbiAgbmFtZTogdmFyY2hhcignbmFtZScsIHsgbGVuZ3RoOiAyMDAgfSkubm90TnVsbCgpLFxuICB0ZW1wbGF0ZTogdmFyY2hhcigndGVtcGxhdGUnLCB7IGxlbmd0aDogNDAgfSkuJHR5cGU8UmVwb3J0VGVtcGxhdGU+KCkubm90TnVsbCgpLFxuICAvKiogU2VjdGlvbiBpZHMsIHJlc29sdmVkIHRocm91Z2ggdGhlIHNlY3Rpb24gcmVnaXN0cnkgYXQgcnVuIHRpbWUuICovXG4gIHNlY3Rpb25zOiBqc29uYignc2VjdGlvbnMnKS4kdHlwZTxzdHJpbmdbXT4oKS5kZWZhdWx0KFtdKS5ub3ROdWxsKCksXG4gIGNhZGVuY2U6IHZhcmNoYXIoJ2NhZGVuY2UnLCB7IGxlbmd0aDogMjAgfSkuJHR5cGU8UmVwb3J0Q2FkZW5jZT4oKS5ub3ROdWxsKCksXG4gIC8qKiBJQU5BIG5hbWUuIFBlcmlvZHMgYXJlIGN1dCBpbiBUSElTIHpvbmUsIG5vdCB0aGUgZGF0YWJhc2Ugc2Vzc2lvbidzLiAqL1xuICB0aW1lem9uZTogdmFyY2hhcigndGltZXpvbmUnLCB7IGxlbmd0aDogNjQgfSkuZGVmYXVsdCgnVVRDJykubm90TnVsbCgpLFxuICB3ZWVrU3RhcnQ6IHZhcmNoYXIoJ3dlZWtfc3RhcnQnLCB7IGxlbmd0aDogMTAgfSkuZGVmYXVsdCgnbW9uZGF5Jykubm90TnVsbCgpLFxuICBzY29wZToganNvbmIoJ3Njb3BlJykuJHR5cGU8UmVwb3J0U2NvcGU+KCkubm90TnVsbCgpLFxuICAvKiogUmVjaXBpZW50IGlkcyBmcm9tIGByZXBvcnRfcmVjaXBpZW50c2AsIG5vdCByYXcgYWRkcmVzc2VzLiAqL1xuICByZWNpcGllbnRzOiBqc29uYigncmVjaXBpZW50cycpLiR0eXBlPHN0cmluZ1tdPigpLmRlZmF1bHQoW10pLm5vdE51bGwoKSxcbiAgLyoqXG4gICAqIFB1Ymxpc2ggd2l0aG91dCB0aGUgbGVhZCByZXZpZXdpbmcuIE9mZiBieSBkZWZhdWx0OiB0aGUgd2hvbGUgcG9pbnQgb2YgdGhlXG4gICAqIHJldmlldyBzdGVwIGlzIHRoYXQgdGhlIGRhdGEgY2Fubm90IHN1cHBseSB0aGUgY29udGV4dCBhIG1hbmFnZXIgbmVlZHNcbiAgICogKFwid2UgcGF1c2VkIGRlcGxveXMgVHVlc2RheSBmb3IgdGhlIG1pZ3JhdGlvblwiKS5cbiAgICovXG4gIGF1dG9TZW5kOiBib29sZWFuKCdhdXRvX3NlbmQnKS5kZWZhdWx0KGZhbHNlKS5ub3ROdWxsKCksXG4gIGlzQWN0aXZlOiBib29sZWFuKCdpc19hY3RpdmUnKS5kZWZhdWx0KHRydWUpLm5vdE51bGwoKSxcbiAgcGF1c2VkUmVhc29uOiB2YXJjaGFyKCdwYXVzZWRfcmVhc29uJywgeyBsZW5ndGg6IDMwIH0pLiR0eXBlPFJlcG9ydFBhdXNlUmVhc29uPigpLFxuICBuZXh0UnVuQXQ6IHRpbWVzdGFtcCgnbmV4dF9ydW5fYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgbGFzdFJ1bkF0OiB0aW1lc3RhbXAoJ2xhc3RfcnVuX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGNyZWF0ZWRCeTogdGV4dCgnY3JlYXRlZF9ieScpLm5vdE51bGwoKSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxuICB1cGRhdGVkQnk6IHRleHQoJ3VwZGF0ZWRfYnknKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxuICBkZWxldGVkQXQ6IHRpbWVzdGFtcCgnZGVsZXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBkZWxldGVkQnk6IHRleHQoJ2RlbGV0ZWRfYnknKSxcbiAgcHVyZ2VBZnRlcjogdGltZXN0YW1wKCdwdXJnZV9hZnRlcicsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxufSwgKHRhYmxlKSA9PiAoe1xuICBvcmdJZHg6IGluZGV4KCdyZXBvcnRfZGVmaW5pdGlvbl9vcmdfaWR4Jykub24odGFibGUub3JnSWQpLndoZXJlKHNxbGBkZWxldGVkX2F0IElTIE5VTExgKSxcbiAgb3duZXJJZHg6IGluZGV4KCdyZXBvcnRfZGVmaW5pdGlvbl9vd25lcl9pZHgnKS5vbih0YWJsZS5vd25lcklkKS53aGVyZShzcWxgZGVsZXRlZF9hdCBJUyBOVUxMYCksXG4gIC8vIERyaXZlcyB0aGUgc2NoZWR1bGVyJ3MgY2xhaW0gc2NhbjogdGhlIGR1ZSwgbGl2ZSwgdW5wYXVzZWQgZGVmaW5pdGlvbnMgb25seS5cbiAgZHVlSWR4OiBpbmRleCgncmVwb3J0X2RlZmluaXRpb25fZHVlX2lkeCcpLm9uKHRhYmxlLm5leHRSdW5BdClcbiAgICAud2hlcmUoc3FsYGRlbGV0ZWRfYXQgSVMgTlVMTCBBTkQgaXNfYWN0aXZlID0gdHJ1ZWApLFxuICBwdXJnZUlkeDogaW5kZXgoJ3JlcG9ydF9kZWZpbml0aW9uX3B1cmdlX2lkeCcpLm9uKHRhYmxlLnB1cmdlQWZ0ZXIpLndoZXJlKHNxbGBkZWxldGVkX2F0IElTIE5PVCBOVUxMYCksXG59KSk7XG5cbi8qKlxuICogT25lIHBlcmlvZCdzIGZyb3plbiBvdXRwdXQuXG4gKlxuICogQHRhYmxlIHJlcG9ydF9ydW5zXG4gKi9cbmV4cG9ydCBjb25zdCByZXBvcnRSdW4gPSBwZ1RhYmxlKCdyZXBvcnRfcnVucycsIHtcbiAgaWQ6IHZhcmNoYXIoJ2lkJywgeyBsZW5ndGg6IDI1NSB9KS5wcmltYXJ5S2V5KCksXG4gIG9yZ0lkOiB2YXJjaGFyKCdvcmdfaWQnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgZGVmaW5pdGlvbklkOiB2YXJjaGFyKCdkZWZpbml0aW9uX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIC8qKiBJbmNsdXNpdmUgcGVyaW9kIHN0YXJ0LCBleGNsdXNpdmUgZW5kIOKAlCBib3RoIGluc3RhbnRzLCBpbiBVVEMuICovXG4gIHBlcmlvZFN0YXJ0OiB0aW1lc3RhbXAoJ3BlcmlvZF9zdGFydCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLm5vdE51bGwoKSxcbiAgcGVyaW9kRW5kOiB0aW1lc3RhbXAoJ3BlcmlvZF9lbmQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5ub3ROdWxsKCksXG4gIC8qKiBIdW1hbiBsYWJlbCBpbiB0aGUgZGVmaW5pdGlvbidzIHRpbWV6b25lOiBgMjAyNi1XMzhgLCBgMjAyNi0wOGAsIGAyMDI2LVEzYC4gKi9cbiAgcGVyaW9kTGFiZWw6IHZhcmNoYXIoJ3BlcmlvZF9sYWJlbCcsIHsgbGVuZ3RoOiAyMCB9KS5ub3ROdWxsKCksXG4gIC8qKlxuICAgKiBSZWdlbmVyYXRpbmcgYSBwZXJpb2QgcHJvZHVjZXMgdmVyc2lvbiBOKzEgYW5kIHN1cGVyc2VkZXMgdGhlIG9sZCByb3cgcmF0aGVyXG4gICAqIHRoYW4gb3ZlcndyaXRpbmcgaXQuIExhdGUgZXZlbnRzICh0aGUgaW5nZXN0IHJlZHJpdmVzIGl0cyBkZWFkLWxldHRlciBxdWV1ZVxuICAgKiBob3VycyBsYXRlcikgbWVhbiBhIGNvcnJlY3RlZCByZXBvcnQgaXMgbm9ybWFsIOKAlCBhbmQgYSBtYW5hZ2VyIHdobyBhbHJlYWR5XG4gICAqIHJlYWQgdjEgbXVzdCBzdGlsbCBiZSBhYmxlIHRvIHNlZSBleGFjdGx5IHdoYXQgdGhleSByZWFkLlxuICAgKi9cbiAgdmVyc2lvbjogaW50ZWdlcigndmVyc2lvbicpLmRlZmF1bHQoMSkubm90TnVsbCgpLFxuICBzdGF0dXM6IHZhcmNoYXIoJ3N0YXR1cycsIHsgbGVuZ3RoOiAyMCB9KS4kdHlwZTxSZXBvcnRSdW5TdGF0dXM+KCkuZGVmYXVsdCgnZHJhZnRpbmcnKS5ub3ROdWxsKCksXG4gIC8qKiBUaGUgY29tcHV0ZWQgc2VjdGlvbnMuIFN1cnZpdmVzIHRoZSByYXctZXZlbnQgcHVyZ2Ug4oCUIHRoYXQgaXMgdGhlIHBvaW50LiAqL1xuICBzbmFwc2hvdDoganNvbmIoJ3NuYXBzaG90JykuJHR5cGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KCksXG4gIC8qKiBBSS1nZW5lcmF0ZWQgZXhlY3V0aXZlIHN1bW1hcnksIGZyb20gdGhlIHNuYXBzaG90J3MgbnVtYmVycyBvbmx5LiAqL1xuICBhaURyYWZ0OiB0ZXh0KCdhaV9kcmFmdCcpLFxuICAvKiogVGhlIGxlYWQncyBvd24gd29yZHMuIFRoZSBjb250ZXh0IHRoZSBkYXRhIGNhbm5vdCBzdXBwbHkuICovXG4gIGxlYWROb3RlczogdGV4dCgnbGVhZF9ub3RlcycpLFxuICAvLyBgYXNrc2Agd2FzIERFTEVURUQgaGVyZSwgYW5kIGl0IGlzIHRoZSByZW1vdmFsIG1vc3Qgd29ydGggZXhwbGFpbmluZywgYmVjYXVzZSB0aGUgaWRlYVxuICAvLyB3YXMgZ29vZDogd2hhdCB0aGUgbGVhZCBuZWVkcyBhIGRlY2lzaW9uIG9uLCBmcm9tIHdob20sIGJ5IHdoZW4g4oCUIGtlcHQgYXBhcnQgZnJvbVxuICAvLyBgbGVhZE5vdGVzYCBiZWNhdXNlIGEgcmVxdWVzdCBmb3IgYSBkZWNpc2lvbiBidXJpZWQgaW4gbmFycmF0aXZlIHJlYWRzIGFzIGNvbW1lbnRhcnlcbiAgLy8gYW5kIGdldHMgbm8gYW5zd2VyLiBJdCB3YXMgZGVjbGFyZWQgaW4gUGhhc2UgMiBhbmQgdGhlbiBuZXZlciB3cml0dGVuIG9yIHJlYWQgYnlcbiAgLy8gYW55dGhpbmc6IG5vIHJvdXRlIGFjY2VwdGVkIG9uZSwgbm8gY29tcG9zZXIgZW1pdHRlZCBvbmUsIG5vIHZpZXcgcmVuZGVyZWQgb25lLCBhbmRcbiAgLy8gdGhlIHNoYXJlZCByZXBvcnQgYSBtYW5hZ2VyIGFjdHVhbGx5IHJlYWRzIG5ldmVyIHNob3dlZCB0aGVtLiBBIGNvbHVtbiB0aGF0IG9ubHkgZXZlclxuICAvLyBoZWxkIGl0cyBvd24gZGVmYXVsdCBpcyBub3QgYSBmZWF0dXJlIGluIHByb2dyZXNzLCBpdCBpcyBhIGNsYWltIHRoZSBzY2hlbWEgbWFrZXMgYW5kXG4gIC8vIHRoZSBwcm9kdWN0IGRvZXMgbm90IGhvbm91ci4gV2hvZXZlciBidWlsZHMgYXNrcyBzaG91bGQgYWRkIHRoZSBjb2x1bW4gYmFjayBXSVRIIHRoZVxuICAvLyB3cml0ZSBwYXRoLCB0aGUgcmV2aWV3IFVJIGFuZCBhIHBsYWNlIGluIHRoZSBzaGFyZWQgdmlldywgaW4gb25lIGNoYW5nZS5cbiAgZmFpbHVyZVJlYXNvbjogdGV4dCgnZmFpbHVyZV9yZWFzb24nKSxcbiAgLyoqXG4gICAqIFdoYXQgaGFwcGVuZWQgd2hlbiB0aGlzIHJ1biB3YXMgREVMSVZFUkVEOiBjb3VudHMgcGVyIGNoYW5uZWwsIGFuZCB0aGUgbm90ZXMgYSBsZWFkXG4gICAqIG5lZWRzIHRvIHJlYWQgKFwibm8gb3V0Ym91bmQgZW1haWwgaXMgY29uZmlndXJlZCwgc28gMTIgcmVjaXBpZW50cyB3ZXJlIG5vdCBtYWlsZWRcIikuXG4gICAqXG4gICAqIE9uIHRoZSBydW4gcmF0aGVyIHRoYW4gaW4gYSBsb2csIGJlY2F1c2UgdGhlIHF1ZXN0aW9uIGl0IGFuc3dlcnMgaXMgYXNrZWQgZGF5cyBsYXRlclxuICAgKiBhbmQgYWJvdXQgb25lIHNwZWNpZmljIHJlcG9ydDogXCJkaWQgdGhlIGJvYXJkIGFjdHVhbGx5IGdldCBsYXN0IG1vbnRoJ3M/XCIgQSBsb2cgbGluZVxuICAgKiBjYW5ub3QgYmUgc2hvd24gbmV4dCB0byB0aGUgcmVwb3J0LCBhbmQgYGxlYWROb3Rlc2AgY2Fubm90IGhvbGQgaXQg4oCUIHRoYXQgY29sdW1uIGlzXG4gICAqIGZyb3plbiBhdCBwdWJsaXNoLCB3aGljaCBpcyBleGFjdGx5IHdoZW4gZGVsaXZlcnkgaGFwcGVucy5cbiAgICovXG4gIGRlbGl2ZXJ5OiBqc29uYignZGVsaXZlcnknKS4kdHlwZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oKSxcbiAgcHVibGlzaGVkQnk6IHRleHQoJ3B1Ymxpc2hlZF9ieScpLFxuICBwdWJsaXNoZWRBdDogdGltZXN0YW1wKCdwdWJsaXNoZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgc3VwZXJzZWRlZEJ5OiB2YXJjaGFyKCdzdXBlcnNlZGVkX2J5JywgeyBsZW5ndGg6IDI1NSB9KSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxuICB1cGRhdGVkQXQ6IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG4gIGRlbGV0ZWRBdDogdGltZXN0YW1wKCdkZWxldGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGRlbGV0ZWRCeTogdGV4dCgnZGVsZXRlZF9ieScpLFxuICBwdXJnZUFmdGVyOiB0aW1lc3RhbXAoJ3B1cmdlX2FmdGVyJywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG59LCAodGFibGUpID0+ICh7XG4gIC8vIFRoZSBpZGVtcG90ZW5jeSBrZXkuIEEgcmV0cnksIGEgY2F0Y2gtdXAgcGFzcyBhbmQgYSBtYW51YWwgYmFja2ZpbGwgY2FuIGFsbFxuICAvLyBhc2sgZm9yIHRoZSBzYW1lIHBlcmlvZDsgd2l0aG91dCB0aGlzIHRoZXkgd291bGQgZWFjaCBpbnNlcnQgYSByb3cuXG4gIHBlcmlvZFVuaXF1ZTogdW5pcXVlSW5kZXgoJ3JlcG9ydF9ydW5fcGVyaW9kX3VuaXF1ZScpXG4gICAgLm9uKHRhYmxlLmRlZmluaXRpb25JZCwgdGFibGUucGVyaW9kU3RhcnQsIHRhYmxlLnZlcnNpb24pLFxuICBkZWZpbml0aW9uSWR4OiBpbmRleCgncmVwb3J0X3J1bl9kZWZpbml0aW9uX2lkeCcpLm9uKHRhYmxlLmRlZmluaXRpb25JZCwgdGFibGUucGVyaW9kU3RhcnQpXG4gICAgLndoZXJlKHNxbGBkZWxldGVkX2F0IElTIE5VTExgKSxcbiAgb3JnSWR4OiBpbmRleCgncmVwb3J0X3J1bl9vcmdfaWR4Jykub24odGFibGUub3JnSWQpLndoZXJlKHNxbGBkZWxldGVkX2F0IElTIE5VTExgKSxcbiAgcHVyZ2VJZHg6IGluZGV4KCdyZXBvcnRfcnVuX3B1cmdlX2lkeCcpLm9uKHRhYmxlLnB1cmdlQWZ0ZXIpLndoZXJlKHNxbGBkZWxldGVkX2F0IElTIE5PVCBOVUxMYCksXG59KSk7XG5cbi8qKlxuICogQSByZWFkLW9ubHksIGV4cGlyaW5nIGxpbmsgdG8gb25lIHB1Ymxpc2hlZCBydW4uXG4gKlxuICogQHRhYmxlIHJlcG9ydF9zaGFyZV9saW5rc1xuICovXG5leHBvcnQgY29uc3QgcmVwb3J0U2hhcmVMaW5rID0gcGdUYWJsZSgncmVwb3J0X3NoYXJlX2xpbmtzJywge1xuICBpZDogdmFyY2hhcignaWQnLCB7IGxlbmd0aDogMjU1IH0pLnByaW1hcnlLZXkoKSxcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBydW5JZDogdmFyY2hhcigncnVuX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIC8qKlxuICAgKiBTSEEtMjU2IG9mIHRoZSB0b2tlbiwgbmV2ZXIgdGhlIHRva2VuLiBUaGUgcmF3IHZhbHVlIGlzIHNob3duIG9uY2UsIGF0XG4gICAqIGNyZWF0aW9uIOKAlCBhIHN0b3JlZCB0b2tlbiBpcyBhIHN0b3JlZCBjcmVkZW50aWFsIGZvciBvcmcgZGF0YSB0aGF0IGFueW9uZVxuICAgKiBob2xkaW5nIHRoZSBsaW5rIGNhbiByZWFkLlxuICAgKi9cbiAgdG9rZW5IYXNoOiB2YXJjaGFyKCd0b2tlbl9oYXNoJywgeyBsZW5ndGg6IDY0IH0pLm5vdE51bGwoKSxcbiAgZXhwaXJlc0F0OiB0aW1lc3RhbXAoJ2V4cGlyZXNfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5ub3ROdWxsKCksXG4gIHJldm9rZWRBdDogdGltZXN0YW1wKCdyZXZva2VkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIHJldm9rZWRCeTogdGV4dCgncmV2b2tlZF9ieScpLFxuICAvKiogUmVkYWN0IHBpcGVsaW5lL3Byb2plY3QgbmFtZXMgaW4gdGhlIHB1YmxpYyB2aWV3IOKAlCBpbnRlcm5hbCBuYW1lcyBsZWFrIGludGVudC4gKi9cbiAgcmVkYWN0TmFtZXM6IGJvb2xlYW4oJ3JlZGFjdF9uYW1lcycpLmRlZmF1bHQoZmFsc2UpLm5vdE51bGwoKSxcbiAgdmlld0NvdW50OiBpbnRlZ2VyKCd2aWV3X2NvdW50JykuZGVmYXVsdCgwKS5ub3ROdWxsKCksXG4gIGxhc3RWaWV3ZWRBdDogdGltZXN0YW1wKCdsYXN0X3ZpZXdlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBjcmVhdGVkQnk6IHRleHQoJ2NyZWF0ZWRfYnknKS5ub3ROdWxsKCksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgLy8gVGhlIHB1YmxpYyByb3V0ZSdzIG9ubHkgbG9va3VwOiBieSB0b2tlbiBoYXNoLiBVbmlxdWUgc28gYSBoYXNoIGNvbGxpc2lvblxuICAvLyBjYW5ub3QgcmVzb2x2ZSB0byB0d28gcnVucy5cbiAgdG9rZW5VbmlxdWU6IHVuaXF1ZUluZGV4KCdyZXBvcnRfc2hhcmVfbGlua190b2tlbl91bmlxdWUnKS5vbih0YWJsZS50b2tlbkhhc2gpLFxuICBydW5JZHg6IGluZGV4KCdyZXBvcnRfc2hhcmVfbGlua19ydW5faWR4Jykub24odGFibGUucnVuSWQpLFxuICBvcmdJZHg6IGluZGV4KCdyZXBvcnRfc2hhcmVfbGlua19vcmdfaWR4Jykub24odGFibGUub3JnSWQpLFxufSkpO1xuXG4vKipcbiAqIEEgdmVyaWZpZWQgZGVsaXZlcnkgYWRkcmVzcyBmb3Igb25lIG9yZy5cbiAqXG4gKiBAdGFibGUgcmVwb3J0X3JlY2lwaWVudHNcbiAqL1xuZXhwb3J0IGNvbnN0IHJlcG9ydFJlY2lwaWVudCA9IHBnVGFibGUoJ3JlcG9ydF9yZWNpcGllbnRzJywge1xuICBpZDogdmFyY2hhcignaWQnLCB7IGxlbmd0aDogMjU1IH0pLnByaW1hcnlLZXkoKSxcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBlbWFpbDogdmFyY2hhcignZW1haWwnLCB7IGxlbmd0aDogMzIwIH0pLm5vdE51bGwoKSxcbiAgZGlzcGxheU5hbWU6IHZhcmNoYXIoJ2Rpc3BsYXlfbmFtZScsIHsgbGVuZ3RoOiAyMDAgfSksXG4gIC8qKlxuICAgKiBTZXQgd2hlbiB0aGUgcmVjaXBpZW50IGNvbmZpcm1zIGJ5IGVtYWlsLiBOb3RoaW5nIGlzIGRlbGl2ZXJlZCBiZWZvcmUgdGhpczpcbiAgICogb3RoZXJ3aXNlIGEgbGVhZCBjb3VsZCBzZW5kIG9yZyBkYXRhIHRvIGFueSBhZGRyZXNzIGJ5IHR5cGluZyBpdC5cbiAgICovXG4gIHZlcmlmaWVkQXQ6IHRpbWVzdGFtcCgndmVyaWZpZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgdmVyaWZpY2F0aW9uVG9rZW5IYXNoOiB2YXJjaGFyKCd2ZXJpZmljYXRpb25fdG9rZW5faGFzaCcsIHsgbGVuZ3RoOiA2NCB9KSxcbiAgLyoqIEhvbm91cmVkIGFjcm9zcyBldmVyeSBkZWZpbml0aW9uIOKAlCBhbiB1bnN1YnNjcmliZSBpcyBwZXIgcGVyc29uLCBub3QgcGVyIHJlcG9ydC4gKi9cbiAgdW5zdWJzY3JpYmVkQXQ6IHRpbWVzdGFtcCgndW5zdWJzY3JpYmVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIC8qKlxuICAgKiBUaGUgcmVjaXBpZW50J3Mgc3RhYmxlIHVuc3Vic2NyaWJlIG5vbmNlLCBtaW50ZWQgb25jZSB3aXRoIHRoZSByb3cuXG4gICAqXG4gICAqIFNUT1JFRCBJTiBUSEUgQ0xFQVIsIHVubGlrZSBldmVyeSBvdGhlciB0b2tlbiBpbiB0aGlzIGZpbGUsIGFuZCB0aGUgZGlmZmVyZW5jZSBpc1xuICAgKiB3aGF0IGl0IGF1dGhvcml6ZXMuIEEgc2hhcmUtbGluayB0b2tlbiBncmFudHMgUkVBRCBBQ0NFU1MgdG8gYW4gb3JnJ3MgcmVwb3J0LCBzbyBpdFxuICAgKiBpcyBvbmx5IGV2ZXIga2VwdCBhcyBhIGhhc2g7IHRoaXMgb25lIGF1dGhvcml6ZXMgZXhhY3RseSBvbmUgc2VsZi1saW1pdGluZyBhY3Rpb24g4oCUXG4gICAqIFwic3RvcCBlbWFpbGluZyB0aGlzIGFkZHJlc3NcIiDigJQgc28gdGhlIHdvcnN0IGEgZGF0YWJhc2UgcmVhZCBidXlzIGFuIGF0dGFja2VyIGlzIHRoZVxuICAgKiBhYmlsaXR5IHRvIG1ha2UgdGhlIHByb2R1Y3Qgc2VuZCBsZXNzIG1haWwuXG4gICAqXG4gICAqIEl0IGhhcyB0byBiZSByZWFkYWJsZSBiZWNhdXNlIGV2ZXJ5IHJlcG9ydCBlbWFpbCByZWJ1aWxkcyB0aGUgbGluaywgYW5kIGEgaGFzaFxuICAgKiBjYW5ub3QgYmUgdHVybmVkIGJhY2sgaW50byB0aGUgVVJMLiBUaGUgYWx0ZXJuYXRpdmUsIGEgc2lnbmVkIFVSTCwgd291bGQgYmVcbiAgICogaW52YWxpZGF0ZWQgYnkgdGhlIGRlZmF1bHQgRVBIRU1FUkFMIHNlcnZpY2Uga2V5IG9uIGV2ZXJ5IHJlc3RhcnQsIHNpbGVudGx5IGJyZWFraW5nXG4gICAqIHRoZSB1bnN1YnNjcmliZSBsaW5rIGluIGV2ZXJ5IHJlcG9ydCBhbHJlYWR5IHNpdHRpbmcgaW4gYSBtYW5hZ2VyJ3MgbWFpbGJveCDigJQgd2hpY2hcbiAgICogaXMgdGhlIG9uZSBmYWlsdXJlIGhlcmUgdGhhdCBoYXMgYSByZWd1bGF0b3IgYXR0YWNoZWQgdG8gaXQuXG4gICAqL1xuICB1bnN1YnNjcmliZVRva2VuOiB2YXJjaGFyKCd1bnN1YnNjcmliZV90b2tlbicsIHsgbGVuZ3RoOiA2NCB9KSxcbiAgYm91bmNlQ291bnQ6IGludGVnZXIoJ2JvdW5jZV9jb3VudCcpLmRlZmF1bHQoMCkubm90TnVsbCgpLFxuICBsYXN0Qm91bmNlQXQ6IHRpbWVzdGFtcCgnbGFzdF9ib3VuY2VfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgLyoqIFNldCB3aGVuIGFuIGFkbWluIGFwcHJvdmVkIGFuIGFkZHJlc3Mgb3V0c2lkZSB0aGUgYWxsb3dlZCBkb21haW5zLiAqL1xuICBhcHByb3ZlZEJ5OiB0ZXh0KCdhcHByb3ZlZF9ieScpLFxuICBjcmVhdGVkQnk6IHRleHQoJ2NyZWF0ZWRfYnknKS5ub3ROdWxsKCksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbiAgZGVsZXRlZEF0OiB0aW1lc3RhbXAoJ2RlbGV0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgZGVsZXRlZEJ5OiB0ZXh0KCdkZWxldGVkX2J5JyksXG4gIHB1cmdlQWZ0ZXI6IHRpbWVzdGFtcCgncHVyZ2VfYWZ0ZXInLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgLy8gT25lIHJvdyBwZXIgYWRkcmVzcyBwZXIgb3JnLCBzbyByZS1hZGRpbmcgYSByZWNpcGllbnQgcmV1c2VzIGl0cyB2ZXJpZmljYXRpb25cbiAgLy8gYW5kIHVuc3Vic2NyaWJlIHN0YXRlIHJhdGhlciB0aGFuIHJlc2V0dGluZyB0aGVtLlxuICBvcmdFbWFpbFVuaXF1ZTogdW5pcXVlSW5kZXgoJ3JlcG9ydF9yZWNpcGllbnRfb3JnX2VtYWlsX3VuaXF1ZScpLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS5lbWFpbCksXG4gIG9yZ0lkeDogaW5kZXgoJ3JlcG9ydF9yZWNpcGllbnRfb3JnX2lkeCcpLm9uKHRhYmxlLm9yZ0lkKS53aGVyZShzcWxgZGVsZXRlZF9hdCBJUyBOVUxMYCksXG4gIHB1cmdlSWR4OiBpbmRleCgncmVwb3J0X3JlY2lwaWVudF9wdXJnZV9pZHgnKS5vbih0YWJsZS5wdXJnZUFmdGVyKS53aGVyZShzcWxgZGVsZXRlZF9hdCBJUyBOT1QgTlVMTGApLFxuICAvLyBUaGUgdW5zdWJzY3JpYmUgbGluaydzIG9ubHkgbG9va3VwLiBVbmlxdWUgc28gb25lIHRva2VuIGNhbiBuZXZlciByZXNvbHZlIHRvIHR3b1xuICAvLyBhZGRyZXNzZXMuXG4gIHVuc3ViVG9rZW5VbmlxdWU6IHVuaXF1ZUluZGV4KCdyZXBvcnRfcmVjaXBpZW50X3Vuc3ViX3Rva2VuX3VuaXF1ZScpLm9uKHRhYmxlLnVuc3Vic2NyaWJlVG9rZW4pXG4gICAgLndoZXJlKHNxbGB1bnN1YnNjcmliZV90b2tlbiBJUyBOT1QgTlVMTGApLFxufSkpO1xuXG5leHBvcnQgdHlwZSBSZXBvcnREZWZpbml0aW9uID0gdHlwZW9mIHJlcG9ydERlZmluaXRpb24uJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgUmVwb3J0RGVmaW5pdGlvbkluc2VydCA9IHR5cGVvZiByZXBvcnREZWZpbml0aW9uLiRpbmZlckluc2VydDtcbmV4cG9ydCB0eXBlIFJlcG9ydFJ1biA9IHR5cGVvZiByZXBvcnRSdW4uJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgUmVwb3J0UnVuSW5zZXJ0ID0gdHlwZW9mIHJlcG9ydFJ1bi4kaW5mZXJJbnNlcnQ7XG5leHBvcnQgdHlwZSBSZXBvcnRTaGFyZUxpbmsgPSB0eXBlb2YgcmVwb3J0U2hhcmVMaW5rLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFJlcG9ydFNoYXJlTGlua0luc2VydCA9IHR5cGVvZiByZXBvcnRTaGFyZUxpbmsuJGluZmVySW5zZXJ0O1xuZXhwb3J0IHR5cGUgUmVwb3J0UmVjaXBpZW50ID0gdHlwZW9mIHJlcG9ydFJlY2lwaWVudC4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBSZXBvcnRSZWNpcGllbnRJbnNlcnQgPSB0eXBlb2YgcmVwb3J0UmVjaXBpZW50LiRpbmZlckluc2VydDtcbiJdfQ==
251
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0aW5nLXN0YWtlaG9sZGVyLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGF0YWJhc2Uvc2NoZW1hL3JlcG9ydGluZy1zdGFrZWhvbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Qkc7QUFFSCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXJILGdEQUFnRDtBQUNoRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBVSxDQUFDO0FBRzNFLHlFQUF5RTtBQUN6RSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixDQUFVLENBQUM7QUFHbkc7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsVUFBVSxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxRQUFRLENBQVUsQ0FBQztBQUdwRzs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsYUFBYSxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixDQUFVLENBQUM7QUFHbEcsb0NBQW9DO0FBQ3BDLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQVUsQ0FBQztBQVV6RTs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRTtJQUM1RCxFQUFFLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRTtJQUMvQyxLQUFLLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUNuRDs7OztPQUlHO0lBQ0gsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDbkMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDaEQsUUFBUSxFQUFFLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQWtCLENBQUMsT0FBTyxFQUFFO0lBQy9FLHNFQUFzRTtJQUN0RSxRQUFRLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDbkUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQWlCLENBQUMsT0FBTyxFQUFFO0lBQzVFLDJFQUEyRTtJQUMzRSxRQUFRLEVBQUUsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDdEUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQzVFLEtBQUssRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFlLENBQUMsT0FBTyxFQUFFO0lBQ3BELGlFQUFpRTtJQUNqRSxVQUFVLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLEtBQUssRUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDdkU7Ozs7T0FJRztJQUNILFFBQVEsRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUN2RCxRQUFRLEVBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDdEQsWUFBWSxFQUFFLE9BQU8sQ0FBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQXFCO0lBQ2pGLFNBQVMsRUFBRSxTQUFTLENBQUMsYUFBYSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzNELFNBQVMsRUFBRSxTQUFTLENBQUMsYUFBYSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzNELFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ3ZDLFNBQVMsRUFBRSxTQUFTLENBQUMsWUFBWSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFO0lBQ2pGLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzdCLFNBQVMsRUFBRSxTQUFTLENBQUMsWUFBWSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFO0lBQ2pGLFNBQVMsRUFBRSxTQUFTLENBQUMsWUFBWSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzFELFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzdCLFVBQVUsRUFBRSxTQUFTLENBQUMsYUFBYSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFB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S0FBSyxDQUFDO0lBQzdGLE1BQU0sRUFBRSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUEsb0JBQW9CLENBQUM7SUFDeEYsUUFBUSxFQUFFLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQSx3QkFBd0IsQ0FBQztJQUNyRyxtRkFBbUY7SUFDbkYsYUFBYTtJQUNiLGdCQUFnQixFQUFFLFdBQVcsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUM7U0FDNUYsS0FBSyxDQUFDLEdBQUcsQ0FBQSwrQkFBK0IsQ0FBQztDQUM3QyxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFN0YWtlaG9sZGVyIHJlcG9ydHMg4oCUIHNjaGVkdWxlZCwgbWFuYWdlci1mYWNpbmcgc3VtbWFyaWVzIGEgbGVhZCBkZXZlbG9wZXJcbiAqIGNvbXBvc2VzLCByZXZpZXdzIGFuZCBwdWJsaXNoZXMuXG4gKlxuICogRm91ciB0YWJsZXMsIGFuZCB0aGUgcmVhc29uIGVhY2ggZXhpc3RzOlxuICpcbiAqICAtIGByZXBvcnRfZGVmaW5pdGlvbnNgIOKAlCB0aGUgc2F2ZWQgXCJ3aGF0IGFuZCB3aGVuXCIuIFJlcG9ydGluZyB3YXMgZW50aXJlbHlcbiAqICAgIG9uLWRlbWFuZCBiZWZvcmUgdGhpczogdGhlIGRhc2hib2FyZCBwaWNrZWQgYSBmcm9tL3RvIGFuZCBub3RoaW5nIGNvdWxkIGJlXG4gKiAgICBzYXZlZCwgc2NoZWR1bGVkIG9yIGtlcHQuXG4gKiAgLSBgcmVwb3J0X3J1bnNgIOKAlCB0aGUgRlJPWkVOIHNuYXBzaG90IG9mIG9uZSBwZXJpb2QncyBvdXRwdXQuIFRoaXMgaXMgdGhlIGxvYWRcbiAqICAgIGJlYXJpbmcgdGFibGUuIFRoZSByZXRlbnRpb24gc3dlZXAgcHVyZ2VzIHJhdyBgcGlwZWxpbmVfZXZlbnRzYCBieSB0aWVyLCBzb1xuICogICAgd2l0aG91dCBhIHNuYXBzaG90IGxhc3QgcXVhcnRlcidzIHJlcG9ydCBjYW5ub3QgYmUgcmVnZW5lcmF0ZWQgb25jZSBpdHNcbiAqICAgIGV2ZW50cyBhcmUgZ29uZSDigJQgYW5kIGEgbWFuYWdlciB3aG8gcmVhZCBhIG51bWJlciBvbiBNb25kYXkgbXVzdCBzZWUgdGhlIHNhbWVcbiAqICAgIG51bWJlciBvbiBGcmlkYXkuXG4gKiAgLSBgcmVwb3J0X3NoYXJlX2xpbmtzYCDigJQgZXhwaXJpbmcsIHJldm9jYWJsZSByZWFkLW9ubHkgbGlua3MsIGJlY2F1c2UgdGhlXG4gKiAgICBtYW5hZ2VycyBhIHJlcG9ydCBpcyBmb3IgdXN1YWxseSBoYXZlIG5vIHBsYXRmb3JtIGFjY291bnQuXG4gKiAgLSBgcmVwb3J0X3JlY2lwaWVudHNgIOKAlCBwZXItb3JnIGRlbGl2ZXJ5IGFkZHJlc3Nlcywgd2l0aCB2ZXJpZmljYXRpb24gYW5kXG4gKiAgICBib3VuY2Ugc3RhdGUuIFJlY2lwaWVudCBlbWFpbHMgYXJlIFBJSSBhbmQgdGhlIG9yZyBvd25zIHRoZSBsaXN0LCBub3QgdGhlXG4gKiAgICBkZWZpbml0aW9uLCBzbyBvbmUgbGVhZCdzIGxpc3QgaXMgcmV1c2FibGUgYW5kIG9uZSB1bnN1YnNjcmliZSBpcyBob25vdXJlZFxuICogICAgZXZlcnl3aGVyZS5cbiAqXG4gKiBFdmVyeSB0YWJsZSBpcyBvcmctc2NvcGVkIHdpdGggUkxTICsgc29mdC1kZWxldGUsIG1pcnJvcmluZyBwb3N0Z3Jlcy1pbml0LnNxbFxuICogKHdoaWNoIGlzIHdoYXQgYWN0dWFsbHkgZGVwbG95czsgYHNjaGVtYS1yZWZsZWN0aW9uLnRlc3QudHNgIGtlZXBzIHRoZSB0d28gaW5cbiAqIGxvY2stc3RlcCwgbmFtZSBmb3IgbmFtZSkuXG4gKi9cblxuaW1wb3J0IHsgc3FsIH0gZnJvbSAnZHJpenpsZS1vcm0nO1xuaW1wb3J0IHsgYm9vbGVhbiwgaW5kZXgsIGludGVnZXIsIGpzb25iLCBwZ1RhYmxlLCB0ZXh0LCB0aW1lc3RhbXAsIHVuaXF1ZUluZGV4LCB2YXJjaGFyIH0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSc7XG5cbi8qKiBIb3cgb2Z0ZW4gYSBkZWZpbml0aW9uIHByb2R1Y2VzIGEgcmVwb3J0LiAqL1xuZXhwb3J0IGNvbnN0IFJFUE9SVF9DQURFTkNFUyA9IFsnd2Vla2x5JywgJ21vbnRobHknLCAncXVhcnRlcmx5J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBSZXBvcnRDYWRlbmNlID0gKHR5cGVvZiBSRVBPUlRfQ0FERU5DRVMpW251bWJlcl07XG5cbi8qKiBUaGUgbWFuYWdlci1mYWNpbmcgdGVtcGxhdGVzLiBFYWNoIGlzIGEgZml4ZWQgbGlzdCBvZiBzZWN0aW9uIGlkcy4gKi9cbmV4cG9ydCBjb25zdCBSRVBPUlRfVEVNUExBVEVTID0gWyd3ZWVrbHlfZGVsaXZlcnknLCAnbW9udGhseV9oZWFsdGgnLCAncXVhcnRlcmx5X3JldmlldyddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUmVwb3J0VGVtcGxhdGUgPSAodHlwZW9mIFJFUE9SVF9URU1QTEFURVMpW251bWJlcl07XG5cbi8qKlxuICogQSBydW4ncyBsaWZlY3ljbGUuIGBkcmFmdGluZ2Ag4oaSIGByZWFkeV9mb3JfcmV2aWV3YCDihpIgYHB1Ymxpc2hlZGAsIHdpdGggYGZhaWxlZGBcbiAqIGFzIGEgdGVybWluYWwgc2lkZSBicmFuY2guIE5vdGhpbmcgcmVhY2hlcyBhIG1hbmFnZXIgYmVmb3JlIGBwdWJsaXNoZWRgLCB3aGljaFxuICogaXMgd2hhdCBtYWtlcyB0aGUgbGVhZCdzIGFwcHJvdmFsIHRoZSBnYXRlLlxuICovXG5leHBvcnQgY29uc3QgUkVQT1JUX1JVTl9TVEFUVVNFUyA9IFsnZHJhZnRpbmcnLCAncmVhZHlfZm9yX3JldmlldycsICdwdWJsaXNoZWQnLCAnZmFpbGVkJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBSZXBvcnRSdW5TdGF0dXMgPSAodHlwZW9mIFJFUE9SVF9SVU5fU1RBVFVTRVMpW251bWJlcl07XG5cbi8qKlxuICogV2h5IGEgZGVmaW5pdGlvbiBzdG9wcGVkIHJ1bm5pbmcuIFJlY29yZGVkIHJhdGhlciB0aGFuIGluZmVycmVkLCBiZWNhdXNlIHRoZVxuICogdGhyZWUgY2F1c2VzIG5lZWQgZGlmZmVyZW50IGZpeGVzIGFuZCB0aGUgbGVhZCBzZWVzIHRoaXMgc3RyaW5nOiB0aGUgYWRkLW9uXG4gKiBsYXBzZWQsIHRoZSBvd25lciB3YXMgZGVhY3RpdmF0ZWQsIG9yIHRoZSBvd25lciBsb3N0IHRoZSBwZXJtaXNzaW9uIHRoYXQgbGV0XG4gKiB0aGVtIGF1dGhvciBpdC5cbiAqL1xuZXhwb3J0IGNvbnN0IFJFUE9SVF9QQVVTRV9SRUFTT05TID0gWydlbnRpdGxlbWVudCcsICdvd25lcl9pbmFjdGl2ZScsICdwZXJtaXNzaW9uX2xvc3QnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFJlcG9ydFBhdXNlUmVhc29uID0gKHR5cGVvZiBSRVBPUlRfUEFVU0VfUkVBU09OUylbbnVtYmVyXTtcblxuLyoqIFdoYXQgYSBkZWZpbml0aW9uIHJlcG9ydHMgb24uICovXG5leHBvcnQgY29uc3QgUkVQT1JUX1NDT1BFX0tJTkRTID0gWydvcmcnLCAncHJvamVjdHMnLCAncm9sbHVwJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBSZXBvcnRTY29wZUtpbmQgPSAodHlwZW9mIFJFUE9SVF9TQ09QRV9LSU5EUylbbnVtYmVyXTtcblxuLyoqIFRoZSBgc2NvcGVgIEpTT046IHdoaWNoIHBpcGVsaW5lcyBhIHJ1biBjb3ZlcnMuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydFNjb3BlIHtcbiAga2luZDogUmVwb3J0U2NvcGVLaW5kO1xuICAvKiogUHJvamVjdCBuYW1lcywgd2hlbiBga2luZCA9PT0gJ3Byb2plY3RzJ2AuIEVtcHR5IGZvciBvcmcvcm9sbHVwLiAqL1xuICBwcm9qZWN0cz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEEgc2F2ZWQgcmVwb3J0OiB3aGF0IHRvIGNvbXB1dGUsIGhvdyBvZnRlbiwgaW4gd2hvc2UgdGltZXpvbmUsIGFuZCB3aG8gcmVjZWl2ZXNcbiAqIGl0LlxuICpcbiAqIEB0YWJsZSByZXBvcnRfZGVmaW5pdGlvbnNcbiAqL1xuZXhwb3J0IGNvbnN0IHJlcG9ydERlZmluaXRpb24gPSBwZ1RhYmxlKCdyZXBvcnRfZGVmaW5pdGlvbnMnLCB7XG4gIGlkOiB2YXJjaGFyKCdpZCcsIHsgbGVuZ3RoOiAyNTUgfSkucHJpbWFyeUtleSgpLFxuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIC8qKlxuICAgKiBUaGUgbGVhZCB3aG8gb3ducyB0aGlzIGRlZmluaXRpb24uIFJ1bnMgcmUtY2hlY2sgVEhJUyB1c2VyJ3MgcGVybWlzc2lvbnMsIG5vdFxuICAgKiB0aGUgY2FsbGVyJ3MsIGJlY2F1c2UgYSBzY2hlZHVsZWQgcnVuIGhhcyBubyBjYWxsZXIg4oCUIHNvIGEgbGVhZCB3aG8gbG9zZXNcbiAgICogYWNjZXNzIHN0b3BzIHByb2R1Y2luZyByZXBvcnRzIHJhdGhlciB0aGFuIGtlZXBpbmcgYSBzdGFuZGluZyBncmFudC5cbiAgICovXG4gIG93bmVySWQ6IHRleHQoJ293bmVyX2lkJykubm90TnVsbCgpLFxuICBuYW1lOiB2YXJjaGFyKCduYW1lJywgeyBsZW5ndGg6IDIwMCB9KS5ub3ROdWxsKCksXG4gIHRlbXBsYXRlOiB2YXJjaGFyKCd0ZW1wbGF0ZScsIHsgbGVuZ3RoOiA0MCB9KS4kdHlwZTxSZXBvcnRUZW1wbGF0ZT4oKS5ub3ROdWxsKCksXG4gIC8qKiBTZWN0aW9uIGlkcywgcmVzb2x2ZWQgdGhyb3VnaCB0aGUgc2VjdGlvbiByZWdpc3RyeSBhdCBydW4gdGltZS4gKi9cbiAgc2VjdGlvbnM6IGpzb25iKCdzZWN0aW9ucycpLiR0eXBlPHN0cmluZ1tdPigpLmRlZmF1bHQoW10pLm5vdE51bGwoKSxcbiAgY2FkZW5jZTogdmFyY2hhcignY2FkZW5jZScsIHsgbGVuZ3RoOiAyMCB9KS4kdHlwZTxSZXBvcnRDYWRlbmNlPigpLm5vdE51bGwoKSxcbiAgLyoqIElBTkEgbmFtZS4gUGVyaW9kcyBhcmUgY3V0IGluIFRISVMgem9uZSwgbm90IHRoZSBkYXRhYmFzZSBzZXNzaW9uJ3MuICovXG4gIHRpbWV6b25lOiB2YXJjaGFyKCd0aW1lem9uZScsIHsgbGVuZ3RoOiA2NCB9KS5kZWZhdWx0KCdVVEMnKS5ub3ROdWxsKCksXG4gIHdlZWtTdGFydDogdmFyY2hhcignd2Vla19zdGFydCcsIHsgbGVuZ3RoOiAxMCB9KS5kZWZhdWx0KCdtb25kYXknKS5ub3ROdWxsKCksXG4gIHNjb3BlOiBqc29uYignc2NvcGUnKS4kdHlwZTxSZXBvcnRTY29wZT4oKS5ub3ROdWxsKCksXG4gIC8qKiBSZWNpcGllbnQgaWRzIGZyb20gYHJlcG9ydF9yZWNpcGllbnRzYCwgbm90IHJhdyBhZGRyZXNzZXMuICovXG4gIHJlY2lwaWVudHM6IGpzb25iKCdyZWNpcGllbnRzJykuJHR5cGU8c3RyaW5nW10+KCkuZGVmYXVsdChbXSkubm90TnVsbCgpLFxuICAvKipcbiAgICogUHVibGlzaCB3aXRob3V0IHRoZSBsZWFkIHJldmlld2luZy4gT2ZmIGJ5IGRlZmF1bHQ6IHRoZSB3aG9sZSBwb2ludCBvZiB0aGVcbiAgICogcmV2aWV3IHN0ZXAgaXMgdGhhdCB0aGUgZGF0YSBjYW5ub3Qgc3VwcGx5IHRoZSBjb250ZXh0IGEgbWFuYWdlciBuZWVkc1xuICAgKiAoXCJ3ZSBwYXVzZWQgZGVwbG95cyBUdWVzZGF5IGZvciB0aGUgbWlncmF0aW9uXCIpLlxuICAgKi9cbiAgYXV0b1NlbmQ6IGJvb2xlYW4oJ2F1dG9fc2VuZCcpLmRlZmF1bHQoZmFsc2UpLm5vdE51bGwoKSxcbiAgaXNBY3RpdmU6IGJvb2xlYW4oJ2lzX2FjdGl2ZScpLmRlZmF1bHQodHJ1ZSkubm90TnVsbCgpLFxuICBwYXVzZWRSZWFzb246IHZhcmNoYXIoJ3BhdXNlZF9yZWFzb24nLCB7IGxlbmd0aDogMzAgfSkuJHR5cGU8UmVwb3J0UGF1c2VSZWFzb24+KCksXG4gIG5leHRSdW5BdDogdGltZXN0YW1wKCduZXh0X3J1bl9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBsYXN0UnVuQXQ6IHRpbWVzdGFtcCgnbGFzdF9ydW5fYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgY3JlYXRlZEJ5OiB0ZXh0KCdjcmVhdGVkX2J5Jykubm90TnVsbCgpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRCeTogdGV4dCgndXBkYXRlZF9ieScpLFxuICB1cGRhdGVkQXQ6IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG4gIGRlbGV0ZWRBdDogdGltZXN0YW1wKCdkZWxldGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGRlbGV0ZWRCeTogdGV4dCgnZGVsZXRlZF9ieScpLFxuICBwdXJnZUFmdGVyOiB0aW1lc3RhbXAoJ3B1cmdlX2FmdGVyJywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG59LCAodGFibGUpID0+ICh7XG4gIG9yZ0lkeDogaW5kZXgoJ3JlcG9ydF9kZWZpbml0aW9uX29yZ19pZHgnKS5vbih0YWJsZS5vcmdJZCkud2hlcmUoc3FsYGRlbGV0ZWRfYXQgSVMgTlVMTGApLFxuICBvd25lcklkeDogaW5kZXgoJ3JlcG9ydF9kZWZpbml0aW9uX293bmVyX2lkeCcpLm9uKHRhYmxlLm93bmVySWQpLndoZXJlKHNxbGBkZWxldGVkX2F0IElTIE5VTExgKSxcbiAgLy8gRHJpdmVzIHRoZSBzY2hlZHVsZXIncyBjbGFpbSBzY2FuOiB0aGUgZHVlLCBsaXZlLCB1bnBhdXNlZCBkZWZpbml0aW9ucyBvbmx5LlxuICBkdWVJZHg6IGluZGV4KCdyZXBvcnRfZGVmaW5pdGlvbl9kdWVfaWR4Jykub24odGFibGUubmV4dFJ1bkF0KVxuICAgIC53aGVyZShzcWxgZGVsZXRlZF9hdCBJUyBOVUxMIEFORCBpc19hY3RpdmUgPSB0cnVlYCksXG4gIHB1cmdlSWR4OiBpbmRleCgncmVwb3J0X2RlZmluaXRpb25fcHVyZ2VfaWR4Jykub24odGFibGUucHVyZ2VBZnRlcikud2hlcmUoc3FsYGRlbGV0ZWRfYXQgSVMgTk9UIE5VTExgKSxcbn0pKTtcblxuLyoqXG4gKiBPbmUgcGVyaW9kJ3MgZnJvemVuIG91dHB1dC5cbiAqXG4gKiBAdGFibGUgcmVwb3J0X3J1bnNcbiAqL1xuZXhwb3J0IGNvbnN0IHJlcG9ydFJ1biA9IHBnVGFibGUoJ3JlcG9ydF9ydW5zJywge1xuICBpZDogdmFyY2hhcignaWQnLCB7IGxlbmd0aDogMjU1IH0pLnByaW1hcnlLZXkoKSxcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBkZWZpbml0aW9uSWQ6IHZhcmNoYXIoJ2RlZmluaXRpb25faWQnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgLyoqIEluY2x1c2l2ZSBwZXJpb2Qgc3RhcnQsIGV4Y2x1c2l2ZSBlbmQg4oCUIGJvdGggaW5zdGFudHMsIGluIFVUQy4gKi9cbiAgcGVyaW9kU3RhcnQ6IHRpbWVzdGFtcCgncGVyaW9kX3N0YXJ0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkubm90TnVsbCgpLFxuICBwZXJpb2RFbmQ6IHRpbWVzdGFtcCgncGVyaW9kX2VuZCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLm5vdE51bGwoKSxcbiAgLyoqIEh1bWFuIGxhYmVsIGluIHRoZSBkZWZpbml0aW9uJ3MgdGltZXpvbmU6IGAyMDI2LVczOGAsIGAyMDI2LTA4YCwgYDIwMjYtUTNgLiAqL1xuICBwZXJpb2RMYWJlbDogdmFyY2hhcigncGVyaW9kX2xhYmVsJywgeyBsZW5ndGg6IDIwIH0pLm5vdE51bGwoKSxcbiAgLyoqXG4gICAqIFJlZ2VuZXJhdGluZyBhIHBlcmlvZCBwcm9kdWNlcyB2ZXJzaW9uIE4rMSBhbmQgc3VwZXJzZWRlcyB0aGUgb2xkIHJvdyByYXRoZXJcbiAgICogdGhhbiBvdmVyd3JpdGluZyBpdC4gTGF0ZSBldmVudHMgKHRoZSBpbmdlc3QgcmVkcml2ZXMgaXRzIGRlYWQtbGV0dGVyIHF1ZXVlXG4gICAqIGhvdXJzIGxhdGVyKSBtZWFuIGEgY29ycmVjdGVkIHJlcG9ydCBpcyBub3JtYWwg4oCUIGFuZCBhIG1hbmFnZXIgd2hvIGFscmVhZHlcbiAgICogcmVhZCB2MSBtdXN0IHN0aWxsIGJlIGFibGUgdG8gc2VlIGV4YWN0bHkgd2hhdCB0aGV5IHJlYWQuXG4gICAqL1xuICB2ZXJzaW9uOiBpbnRlZ2VyKCd2ZXJzaW9uJykuZGVmYXVsdCgxKS5ub3ROdWxsKCksXG4gIHN0YXR1czogdmFyY2hhcignc3RhdHVzJywgeyBsZW5ndGg6IDIwIH0pLiR0eXBlPFJlcG9ydFJ1blN0YXR1cz4oKS5kZWZhdWx0KCdkcmFmdGluZycpLm5vdE51bGwoKSxcbiAgLyoqIFRoZSBjb21wdXRlZCBzZWN0aW9ucy4gU3Vydml2ZXMgdGhlIHJhdy1ldmVudCBwdXJnZSDigJQgdGhhdCBpcyB0aGUgcG9pbnQuICovXG4gIHNuYXBzaG90OiBqc29uYignc25hcHNob3QnKS4kdHlwZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oKSxcbiAgLyoqIEFJLWdlbmVyYXRlZCBleGVjdXRpdmUgc3VtbWFyeSwgZnJvbSB0aGUgc25hcHNob3QncyBudW1iZXJzIG9ubHkuICovXG4gIGFpRHJhZnQ6IHRleHQoJ2FpX2RyYWZ0JyksXG4gIC8qKiBUaGUgbGVhZCdzIG93biB3b3Jkcy4gVGhlIGNvbnRleHQgdGhlIGRhdGEgY2Fubm90IHN1cHBseS4gKi9cbiAgbGVhZE5vdGVzOiB0ZXh0KCdsZWFkX25vdGVzJyksXG4gIC8vIGBhc2tzYCB3YXMgREVMRVRFRCBoZXJlLCBhbmQgaXQgaXMgdGhlIHJlbW92YWwgbW9zdCB3b3J0aCBleHBsYWluaW5nLCBiZWNhdXNlIHRoZSBpZGVhXG4gIC8vIHdhcyBnb29kOiB3aGF0IHRoZSBsZWFkIG5lZWRzIGEgZGVjaXNpb24gb24sIGZyb20gd2hvbSwgYnkgd2hlbiDigJQga2VwdCBhcGFydCBmcm9tXG4gIC8vIGBsZWFkTm90ZXNgIGJlY2F1c2UgYSByZXF1ZXN0IGZvciBhIGRlY2lzaW9uIGJ1cmllZCBpbiBuYXJyYXRpdmUgcmVhZHMgYXMgY29tbWVudGFyeVxuICAvLyBhbmQgZ2V0cyBubyBhbnN3ZXIuIEl0IHdhcyBkZWNsYXJlZCBpbiBQaGFzZSAyIGFuZCB0aGVuIG5ldmVyIHdyaXR0ZW4gb3IgcmVhZCBieVxuICAvLyBhbnl0aGluZzogbm8gcm91dGUgYWNjZXB0ZWQgb25lLCBubyBjb21wb3NlciBlbWl0dGVkIG9uZSwgbm8gdmlldyByZW5kZXJlZCBvbmUsIGFuZFxuICAvLyB0aGUgc2hhcmVkIHJlcG9ydCBhIG1hbmFnZXIgYWN0dWFsbHkgcmVhZHMgbmV2ZXIgc2hvd2VkIHRoZW0uIEEgY29sdW1uIHRoYXQgb25seSBldmVyXG4gIC8vIGhlbGQgaXRzIG93biBkZWZhdWx0IGlzIG5vdCBhIGZlYXR1cmUgaW4gcHJvZ3Jlc3MsIGl0IGlzIGEgY2xhaW0gdGhlIHNjaGVtYSBtYWtlcyBhbmRcbiAgLy8gdGhlIHByb2R1Y3QgZG9lcyBub3QgaG9ub3VyLiBXaG9ldmVyIGJ1aWxkcyBhc2tzIHNob3VsZCBhZGQgdGhlIGNvbHVtbiBiYWNrIFdJVEggdGhlXG4gIC8vIHdyaXRlIHBhdGgsIHRoZSByZXZpZXcgVUkgYW5kIGEgcGxhY2UgaW4gdGhlIHNoYXJlZCB2aWV3LCBpbiBvbmUgY2hhbmdlLlxuICBmYWlsdXJlUmVhc29uOiB0ZXh0KCdmYWlsdXJlX3JlYXNvbicpLFxuICAvKipcbiAgICogV2hhdCBoYXBwZW5lZCB3aGVuIHRoaXMgcnVuIHdhcyBERUxJVkVSRUQ6IGNvdW50cyBwZXIgY2hhbm5lbCwgYW5kIHRoZSBub3RlcyBhIGxlYWRcbiAgICogbmVlZHMgdG8gcmVhZCAoXCJubyBvdXRib3VuZCBlbWFpbCBpcyBjb25maWd1cmVkLCBzbyAxMiByZWNpcGllbnRzIHdlcmUgbm90IG1haWxlZFwiKS5cbiAgICpcbiAgICogT24gdGhlIHJ1biByYXRoZXIgdGhhbiBpbiBhIGxvZywgYmVjYXVzZSB0aGUgcXVlc3Rpb24gaXQgYW5zd2VycyBpcyBhc2tlZCBkYXlzIGxhdGVyXG4gICAqIGFuZCBhYm91dCBvbmUgc3BlY2lmaWMgcmVwb3J0OiBcImRpZCB0aGUgYm9hcmQgYWN0dWFsbHkgZ2V0IGxhc3QgbW9udGgncz9cIiBBIGxvZyBsaW5lXG4gICAqIGNhbm5vdCBiZSBzaG93biBuZXh0IHRvIHRoZSByZXBvcnQsIGFuZCBgbGVhZE5vdGVzYCBjYW5ub3QgaG9sZCBpdCDigJQgdGhhdCBjb2x1bW4gaXNcbiAgICogZnJvemVuIGF0IHB1Ymxpc2gsIHdoaWNoIGlzIGV4YWN0bHkgd2hlbiBkZWxpdmVyeSBoYXBwZW5zLlxuICAgKi9cbiAgZGVsaXZlcnk6IGpzb25iKCdkZWxpdmVyeScpLiR0eXBlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PigpLFxuICBwdWJsaXNoZWRCeTogdGV4dCgncHVibGlzaGVkX2J5JyksXG4gIHB1Ymxpc2hlZEF0OiB0aW1lc3RhbXAoJ3B1Ymxpc2hlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBzdXBlcnNlZGVkQnk6IHZhcmNoYXIoJ3N1cGVyc2VkZWRfYnknLCB7IGxlbmd0aDogMjU1IH0pLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRBdDogdGltZXN0YW1wKCd1cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbiAgZGVsZXRlZEF0OiB0aW1lc3RhbXAoJ2RlbGV0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgZGVsZXRlZEJ5OiB0ZXh0KCdkZWxldGVkX2J5JyksXG4gIHB1cmdlQWZ0ZXI6IHRpbWVzdGFtcCgncHVyZ2VfYWZ0ZXInLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgLy8gVGhlIGlkZW1wb3RlbmN5IGtleS4gQSByZXRyeSwgYSBjYXRjaC11cCBwYXNzIGFuZCBhIG1hbnVhbCBiYWNrZmlsbCBjYW4gYWxsXG4gIC8vIGFzayBmb3IgdGhlIHNhbWUgcGVyaW9kOyB3aXRob3V0IHRoaXMgdGhleSB3b3VsZCBlYWNoIGluc2VydCBhIHJvdy5cbiAgcGVyaW9kVW5pcXVlOiB1bmlxdWVJbmRleCgncmVwb3J0X3J1bl9wZXJpb2RfdW5pcXVlJylcbiAgICAub24odGFibGUuZGVmaW5pdGlvbklkLCB0YWJsZS5wZXJpb2RTdGFydCwgdGFibGUudmVyc2lvbiksXG4gIGRlZmluaXRpb25JZHg6IGluZGV4KCdyZXBvcnRfcnVuX2RlZmluaXRpb25faWR4Jykub24odGFibGUuZGVmaW5pdGlvbklkLCB0YWJsZS5wZXJpb2RTdGFydClcbiAgICAud2hlcmUoc3FsYGRlbGV0ZWRfYXQgSVMgTlVMTGApLFxuICBvcmdJZHg6IGluZGV4KCdyZXBvcnRfcnVuX29yZ19pZHgnKS5vbih0YWJsZS5vcmdJZCkud2hlcmUoc3FsYGRlbGV0ZWRfYXQgSVMgTlVMTGApLFxuICBwdXJnZUlkeDogaW5kZXgoJ3JlcG9ydF9ydW5fcHVyZ2VfaWR4Jykub24odGFibGUucHVyZ2VBZnRlcikud2hlcmUoc3FsYGRlbGV0ZWRfYXQgSVMgTk9UIE5VTExgKSxcbn0pKTtcblxuLyoqXG4gKiBBIHJlYWQtb25seSwgZXhwaXJpbmcgbGluayB0byBvbmUgcHVibGlzaGVkIHJ1bi5cbiAqXG4gKiBAdGFibGUgcmVwb3J0X3NoYXJlX2xpbmtzXG4gKi9cbmV4cG9ydCBjb25zdCByZXBvcnRTaGFyZUxpbmsgPSBwZ1RhYmxlKCdyZXBvcnRfc2hhcmVfbGlua3MnLCB7XG4gIGlkOiB2YXJjaGFyKCdpZCcsIHsgbGVuZ3RoOiAyNTUgfSkucHJpbWFyeUtleSgpLFxuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHJ1bklkOiB2YXJjaGFyKCdydW5faWQnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgLyoqXG4gICAqIFNIQS0yNTYgb2YgdGhlIHRva2VuLCBuZXZlciB0aGUgdG9rZW4uIFRoZSByYXcgdmFsdWUgaXMgc2hvd24gb25jZSwgYXRcbiAgICogY3JlYXRpb24g4oCUIGEgc3RvcmVkIHRva2VuIGlzIGEgc3RvcmVkIGNyZWRlbnRpYWwgZm9yIG9yZyBkYXRhIHRoYXQgYW55b25lXG4gICAqIGhvbGRpbmcgdGhlIGxpbmsgY2FuIHJlYWQuXG4gICAqL1xuICB0b2tlbkhhc2g6IHZhcmNoYXIoJ3Rva2VuX2hhc2gnLCB7IGxlbmd0aDogNjQgfSkubm90TnVsbCgpLFxuICBleHBpcmVzQXQ6IHRpbWVzdGFtcCgnZXhwaXJlc19hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLm5vdE51bGwoKSxcbiAgcmV2b2tlZEF0OiB0aW1lc3RhbXAoJ3Jldm9rZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgcmV2b2tlZEJ5OiB0ZXh0KCdyZXZva2VkX2J5JyksXG4gIC8qKiBSZWRhY3QgcGlwZWxpbmUvcHJvamVjdCBuYW1lcyBpbiB0aGUgcHVibGljIHZpZXcg4oCUIGludGVybmFsIG5hbWVzIGxlYWsgaW50ZW50LiAqL1xuICByZWRhY3ROYW1lczogYm9vbGVhbigncmVkYWN0X25hbWVzJykuZGVmYXVsdChmYWxzZSkubm90TnVsbCgpLFxuICB2aWV3Q291bnQ6IGludGVnZXIoJ3ZpZXdfY291bnQnKS5kZWZhdWx0KDApLm5vdE51bGwoKSxcbiAgbGFzdFZpZXdlZEF0OiB0aW1lc3RhbXAoJ2xhc3Rfdmlld2VkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGNyZWF0ZWRCeTogdGV4dCgnY3JlYXRlZF9ieScpLm5vdE51bGwoKSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSwgKHRhYmxlKSA9PiAoe1xuICAvLyBUaGUgcHVibGljIHJvdXRlJ3Mgb25seSBsb29rdXA6IGJ5IHRva2VuIGhhc2guIFVuaXF1ZSBzbyBhIGhhc2ggY29sbGlzaW9uXG4gIC8vIGNhbm5vdCByZXNvbHZlIHRvIHR3byBydW5zLlxuICB0b2tlblVuaXF1ZTogdW5pcXVlSW5kZXgoJ3JlcG9ydF9zaGFyZV9saW5rX3Rva2VuX3VuaXF1ZScpLm9uKHRhYmxlLnRva2VuSGFzaCksXG4gIHJ1bklkeDogaW5kZXgoJ3JlcG9ydF9zaGFyZV9saW5rX3J1bl9pZHgnKS5vbih0YWJsZS5ydW5JZCksXG4gIG9yZ0lkeDogaW5kZXgoJ3JlcG9ydF9zaGFyZV9saW5rX29yZ19pZHgnKS5vbih0YWJsZS5vcmdJZCksXG59KSk7XG5cbi8qKlxuICogQSB2ZXJpZmllZCBkZWxpdmVyeSBhZGRyZXNzIGZvciBvbmUgb3JnLlxuICpcbiAqIEB0YWJsZSByZXBvcnRfcmVjaXBpZW50c1xuICovXG5leHBvcnQgY29uc3QgcmVwb3J0UmVjaXBpZW50ID0gcGdUYWJsZSgncmVwb3J0X3JlY2lwaWVudHMnLCB7XG4gIGlkOiB2YXJjaGFyKCdpZCcsIHsgbGVuZ3RoOiAyNTUgfSkucHJpbWFyeUtleSgpLFxuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIGVtYWlsOiB2YXJjaGFyKCdlbWFpbCcsIHsgbGVuZ3RoOiAzMjAgfSkubm90TnVsbCgpLFxuICBkaXNwbGF5TmFtZTogdmFyY2hhcignZGlzcGxheV9uYW1lJywgeyBsZW5ndGg6IDIwMCB9KSxcbiAgLyoqXG4gICAqIFNldCB3aGVuIHRoZSByZWNpcGllbnQgY29uZmlybXMgYnkgZW1haWwuIE5vdGhpbmcgaXMgZGVsaXZlcmVkIGJlZm9yZSB0aGlzOlxuICAgKiBvdGhlcndpc2UgYSBsZWFkIGNvdWxkIHNlbmQgb3JnIGRhdGEgdG8gYW55IGFkZHJlc3MgYnkgdHlwaW5nIGl0LlxuICAgKi9cbiAgdmVyaWZpZWRBdDogdGltZXN0YW1wKCd2ZXJpZmllZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICB2ZXJpZmljYXRpb25Ub2tlbkhhc2g6IHZhcmNoYXIoJ3ZlcmlmaWNhdGlvbl90b2tlbl9oYXNoJywgeyBsZW5ndGg6IDY0IH0pLFxuICAvKiogSG9ub3VyZWQgYWNyb3NzIGV2ZXJ5IGRlZmluaXRpb24g4oCUIGFuIHVuc3Vic2NyaWJlIGlzIHBlciBwZXJzb24sIG5vdCBwZXIgcmVwb3J0LiAqL1xuICB1bnN1YnNjcmliZWRBdDogdGltZXN0YW1wKCd1bnN1YnNjcmliZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgLyoqXG4gICAqIFRoZSByZWNpcGllbnQncyBzdGFibGUgdW5zdWJzY3JpYmUgbm9uY2UsIG1pbnRlZCBvbmNlIHdpdGggdGhlIHJvdy5cbiAgICpcbiAgICogU1RPUkVEIElOIFRIRSBDTEVBUiwgdW5saWtlIGV2ZXJ5IG90aGVyIHRva2VuIGluIHRoaXMgZmlsZSwgYW5kIHRoZSBkaWZmZXJlbmNlIGlzXG4gICAqIHdoYXQgaXQgYXV0aG9yaXplcy4gQSBzaGFyZS1saW5rIHRva2VuIGdyYW50cyBSRUFEIEFDQ0VTUyB0byBhbiBvcmcncyByZXBvcnQsIHNvIGl0XG4gICAqIGlzIG9ubHkgZXZlciBrZXB0IGFzIGEgaGFzaDsgdGhpcyBvbmUgYXV0aG9yaXplcyBleGFjdGx5IG9uZSBzZWxmLWxpbWl0aW5nIGFjdGlvbiDigJRcbiAgICogXCJzdG9wIGVtYWlsaW5nIHRoaXMgYWRkcmVzc1wiIOKAlCBzbyB0aGUgd29yc3QgYSBkYXRhYmFzZSByZWFkIGJ1eXMgYW4gYXR0YWNrZXIgaXMgdGhlXG4gICAqIGFiaWxpdHkgdG8gbWFrZSB0aGUgcHJvZHVjdCBzZW5kIGxlc3MgbWFpbC5cbiAgICpcbiAgICogSXQgaGFzIHRvIGJlIHJlYWRhYmxlIGJlY2F1c2UgZXZlcnkgcmVwb3J0IGVtYWlsIHJlYnVpbGRzIHRoZSBsaW5rLCBhbmQgYSBoYXNoXG4gICAqIGNhbm5vdCBiZSB0dXJuZWQgYmFjayBpbnRvIHRoZSBVUkwuIFRoZSBhbHRlcm5hdGl2ZSwgYSBzaWduZWQgVVJMLCB3b3VsZCBiZVxuICAgKiBpbnZhbGlkYXRlZCBieSB0aGUgZGVmYXVsdCBFUEhFTUVSQUwgc2VydmljZSBrZXkgb24gZXZlcnkgcmVzdGFydCwgc2lsZW50bHkgYnJlYWtpbmdcbiAgICogdGhlIHVuc3Vic2NyaWJlIGxpbmsgaW4gZXZlcnkgcmVwb3J0IGFscmVhZHkgc2l0dGluZyBpbiBhIG1hbmFnZXIncyBtYWlsYm94IOKAlCB3aGljaFxuICAgKiBpcyB0aGUgb25lIGZhaWx1cmUgaGVyZSB0aGF0IGhhcyBhIHJlZ3VsYXRvciBhdHRhY2hlZCB0byBpdC5cbiAgICovXG4gIHVuc3Vic2NyaWJlVG9rZW46IHZhcmNoYXIoJ3Vuc3Vic2NyaWJlX3Rva2VuJywgeyBsZW5ndGg6IDY0IH0pLFxuICBib3VuY2VDb3VudDogaW50ZWdlcignYm91bmNlX2NvdW50JykuZGVmYXVsdCgwKS5ub3ROdWxsKCksXG4gIGxhc3RCb3VuY2VBdDogdGltZXN0YW1wKCdsYXN0X2JvdW5jZV9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICAvKiogU2V0IHdoZW4gYW4gYWRtaW4gYXBwcm92ZWQgYW4gYWRkcmVzcyBvdXRzaWRlIHRoZSBhbGxvd2VkIGRvbWFpbnMuICovXG4gIGFwcHJvdmVkQnk6IHRleHQoJ2FwcHJvdmVkX2J5JyksXG4gIGNyZWF0ZWRCeTogdGV4dCgnY3JlYXRlZF9ieScpLm5vdE51bGwoKSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxuICBkZWxldGVkQXQ6IHRpbWVzdGFtcCgnZGVsZXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBkZWxldGVkQnk6IHRleHQoJ2RlbGV0ZWRfYnknKSxcbiAgcHVyZ2VBZnRlcjogdGltZXN0YW1wKCdwdXJnZV9hZnRlcicsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxufSwgKHRhYmxlKSA9PiAoe1xuICAvLyBPbmUgcm93IHBlciBhZGRyZXNzIHBlciBvcmcsIHNvIHJlLWFkZGluZyBhIHJlY2lwaWVudCByZXVzZXMgaXRzIHZlcmlmaWNhdGlvblxuICAvLyBhbmQgdW5zdWJzY3JpYmUgc3RhdGUgcmF0aGVyIHRoYW4gcmVzZXR0aW5nIHRoZW0uXG4gIG9yZ0VtYWlsVW5pcXVlOiB1bmlxdWVJbmRleCgncmVwb3J0X3JlY2lwaWVudF9vcmdfZW1haWxfdW5pcXVlJykub24odGFibGUub3JnSWQsIHRhYmxlLmVtYWlsKSxcbiAgb3JnSWR4OiBpbmRleCgncmVwb3J0X3JlY2lwaWVudF9vcmdfaWR4Jykub24odGFibGUub3JnSWQpLndoZXJlKHNxbGBkZWxldGVkX2F0IElTIE5VTExgKSxcbiAgcHVyZ2VJZHg6IGluZGV4KCdyZXBvcnRfcmVjaXBpZW50X3B1cmdlX2lkeCcpLm9uKHRhYmxlLnB1cmdlQWZ0ZXIpLndoZXJlKHNxbGBkZWxldGVkX2F0IElTIE5PVCBOVUxMYCksXG4gIC8vIFRoZSB1bnN1YnNjcmliZSBsaW5rJ3Mgb25seSBsb29rdXAuIFVuaXF1ZSBzbyBvbmUgdG9rZW4gY2FuIG5ldmVyIHJlc29sdmUgdG8gdHdvXG4gIC8vIGFkZHJlc3Nlcy5cbiAgdW5zdWJUb2tlblVuaXF1ZTogdW5pcXVlSW5kZXgoJ3JlcG9ydF9yZWNpcGllbnRfdW5zdWJfdG9rZW5fdW5pcXVlJykub24odGFibGUudW5zdWJzY3JpYmVUb2tlbilcbiAgICAud2hlcmUoc3FsYHVuc3Vic2NyaWJlX3Rva2VuIElTIE5PVCBOVUxMYCksXG59KSk7XG5cbmV4cG9ydCB0eXBlIFJlcG9ydERlZmluaXRpb24gPSB0eXBlb2YgcmVwb3J0RGVmaW5pdGlvbi4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBSZXBvcnREZWZpbml0aW9uSW5zZXJ0ID0gdHlwZW9mIHJlcG9ydERlZmluaXRpb24uJGluZmVySW5zZXJ0O1xuZXhwb3J0IHR5cGUgUmVwb3J0UnVuID0gdHlwZW9mIHJlcG9ydFJ1bi4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBSZXBvcnRSdW5JbnNlcnQgPSB0eXBlb2YgcmVwb3J0UnVuLiRpbmZlckluc2VydDtcbmV4cG9ydCB0eXBlIFJlcG9ydFNoYXJlTGluayA9IHR5cGVvZiByZXBvcnRTaGFyZUxpbmsuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgUmVwb3J0U2hhcmVMaW5rSW5zZXJ0ID0gdHlwZW9mIHJlcG9ydFNoYXJlTGluay4kaW5mZXJJbnNlcnQ7XG5leHBvcnQgdHlwZSBSZXBvcnRSZWNpcGllbnQgPSB0eXBlb2YgcmVwb3J0UmVjaXBpZW50LiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFJlcG9ydFJlY2lwaWVudEluc2VydCA9IHR5cGVvZiByZXBvcnRSZWNpcGllbnQuJGluZmVySW5zZXJ0O1xuIl19