@dollhousemcp/mcp-server 2.0.16 → 2.0.18

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 (74) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md.backup +18 -0
  3. package/dist/elements/BaseElement.d.ts +1 -0
  4. package/dist/elements/BaseElement.d.ts.map +1 -1
  5. package/dist/elements/BaseElement.js +7 -1
  6. package/dist/elements/agents/AgentManager.js +2 -2
  7. package/dist/elements/base/BaseElementManager.d.ts.map +1 -1
  8. package/dist/elements/base/BaseElementManager.js +17 -1
  9. package/dist/elements/base/ElementFileOperations.js +2 -2
  10. package/dist/elements/ensembles/EnsembleManager.js +3 -3
  11. package/dist/elements/memories/MemoryManager.d.ts.map +1 -1
  12. package/dist/elements/memories/MemoryManager.js +14 -3
  13. package/dist/elements/skills/SkillManager.js +2 -2
  14. package/dist/elements/templates/TemplateManager.js +2 -2
  15. package/dist/generated/version.d.ts +2 -2
  16. package/dist/generated/version.js +3 -3
  17. package/dist/handlers/ElementCRUDHandler.d.ts.map +1 -1
  18. package/dist/handlers/ElementCRUDHandler.js +3 -2
  19. package/dist/handlers/element-crud/createElement.d.ts.map +1 -1
  20. package/dist/handlers/element-crud/createElement.js +6 -2
  21. package/dist/handlers/element-crud/editElement.d.ts.map +1 -1
  22. package/dist/handlers/element-crud/editElement.js +6 -2
  23. package/dist/handlers/element-crud/helpers.d.ts +2 -0
  24. package/dist/handlers/element-crud/helpers.d.ts.map +1 -1
  25. package/dist/handlers/element-crud/helpers.js +21 -2
  26. package/dist/handlers/mcp-aql/IntrospectionResolver.d.ts.map +1 -1
  27. package/dist/handlers/mcp-aql/IntrospectionResolver.js +34 -7
  28. package/dist/handlers/mcp-aql/MCPAQLHandler.d.ts +1 -0
  29. package/dist/handlers/mcp-aql/MCPAQLHandler.d.ts.map +1 -1
  30. package/dist/handlers/mcp-aql/MCPAQLHandler.js +50 -14
  31. package/dist/handlers/mcp-aql/OperationSchema.d.ts.map +1 -1
  32. package/dist/handlers/mcp-aql/OperationSchema.js +3 -2
  33. package/dist/handlers/mcp-aql/evaluatePermission.d.ts.map +1 -1
  34. package/dist/handlers/mcp-aql/evaluatePermission.js +2 -1
  35. package/dist/handlers/mcp-aql/policies/ElementPolicies.d.ts +17 -1
  36. package/dist/handlers/mcp-aql/policies/ElementPolicies.d.ts.map +1 -1
  37. package/dist/handlers/mcp-aql/policies/ElementPolicies.js +88 -4
  38. package/dist/handlers/strategies/AgentActivationStrategy.d.ts.map +1 -1
  39. package/dist/handlers/strategies/AgentActivationStrategy.js +5 -1
  40. package/dist/handlers/strategies/BaseActivationStrategy.d.ts +1 -0
  41. package/dist/handlers/strategies/BaseActivationStrategy.d.ts.map +1 -1
  42. package/dist/handlers/strategies/BaseActivationStrategy.js +15 -1
  43. package/dist/handlers/strategies/EnsembleActivationStrategy.d.ts.map +1 -1
  44. package/dist/handlers/strategies/EnsembleActivationStrategy.js +5 -1
  45. package/dist/handlers/strategies/MemoryActivationStrategy.d.ts.map +1 -1
  46. package/dist/handlers/strategies/MemoryActivationStrategy.js +5 -1
  47. package/dist/handlers/strategies/PersonaActivationStrategy.d.ts.map +1 -1
  48. package/dist/handlers/strategies/PersonaActivationStrategy.js +5 -1
  49. package/dist/handlers/strategies/SkillActivationStrategy.d.ts.map +1 -1
  50. package/dist/handlers/strategies/SkillActivationStrategy.js +5 -1
  51. package/dist/handlers/strategies/TemplateActivationStrategy.d.ts.map +1 -1
  52. package/dist/handlers/strategies/TemplateActivationStrategy.js +7 -2
  53. package/dist/persona/PersonaElement.js +2 -2
  54. package/dist/services/SerializationService.d.ts.map +1 -1
  55. package/dist/services/SerializationService.js +7 -1
  56. package/dist/types/elements/IElement.d.ts +9 -0
  57. package/dist/types/elements/IElement.d.ts.map +1 -1
  58. package/dist/types/elements/IElement.js +1 -1
  59. package/dist/utils/permissionHooks.d.ts +39 -3
  60. package/dist/utils/permissionHooks.d.ts.map +1 -1
  61. package/dist/utils/permissionHooks.js +651 -74
  62. package/dist/web/public/permissions.css +190 -2
  63. package/dist/web/public/permissions.js +209 -56
  64. package/dist/web/public/setup.js +452 -108
  65. package/dist/web/routes/permissionRoutes.d.ts.map +1 -1
  66. package/dist/web/routes/permissionRoutes.js +108 -17
  67. package/dist/web/routes/setupRoutes.d.ts +1 -0
  68. package/dist/web/routes/setupRoutes.d.ts.map +1 -1
  69. package/dist/web/routes/setupRoutes.js +128 -42
  70. package/package.json +3 -1
  71. package/scripts/pretooluse-dollhouse.sh +39 -1
  72. package/scripts/pretooluse-vscode.sh +163 -0
  73. package/scripts/pretooluse-windsurf.sh +166 -4
  74. package/server.json +2 -2
@@ -171,6 +171,8 @@ const SHARED_NAMING = [
171
171
  'Max 100 characters, must start with a letter',
172
172
  'Allowed: letters, digits, hyphens, underscores',
173
173
  ];
174
+ const SHARED_GATEKEEPER_STRUCTURE_NOTE = 'gatekeeper: Dynamic security policy — takes effect when this element is activated, reverts when deactivated. Structure: { allow?: string[], confirm?: string[], deny?: string[], scopeRestrictions?: { allowedTypes?, blockedTypes? }, externalRestrictions?: { description: string, allowPatterns?: string[], confirmPatterns?: string[], denyPatterns?: string[] } }. Priority: deny > confirm > allow > route default.';
175
+ const SHARED_GATEKEEPER_AUTHORING_NOTE = 'gatekeeper authoring: use allow/confirm/deny for Dollhouse / MCP-AQL operation patterns like "read_*", "edit_*", "delete_element", or "execute_agent". Use externalRestrictions for external tool / hook patterns like "Read:*", "Edit:*", "Bash:git status*", or "Bash:rm *". externalRestrictions must stay nested under gatekeeper and must include a non-empty description.';
174
176
  /**
175
177
  * Format specifications for each element type.
176
178
  * Returned by introspect query: "format".
@@ -189,7 +191,8 @@ const FORMAT_SPECS = {
189
191
  'Frontmatter delimited by --- on its own line',
190
192
  'Body text after frontmatter becomes the instructions field',
191
193
  'No template variable substitution in personas',
192
- 'gatekeeper: Dynamic security policy — takes effect when this persona is activated, reverts when deactivated. Example: a "focused-work" persona that denies web browsing tools while active, or an "open-research" persona that allows broad access. Structure: { allow?: string[], confirm?: string[], deny?: string[], scopeRestrictions?: { allowedTypes?, blockedTypes? } }. Priority: deny > confirm > allow > route default.',
194
+ SHARED_GATEKEEPER_STRUCTURE_NOTE,
195
+ SHARED_GATEKEEPER_AUTHORING_NOTE,
193
196
  ],
194
197
  minimalExample: `---
195
198
  name: my-persona
@@ -202,6 +205,10 @@ description: Cybersecurity specialist focused on threat modeling
202
205
  version: 1
203
206
  tags: [security, analysis]
204
207
  author: team-lead
208
+ gatekeeper:
209
+ allow: [read_*, list_*, search_*, get_*]
210
+ confirm: [edit_*, update_*]
211
+ deny: [delete_*, execute_agent]
205
212
  ---
206
213
  You ARE a cybersecurity expert with 15 years of experience.
207
214
  ALWAYS consider threat models before suggesting solutions.
@@ -223,7 +230,8 @@ PRIORITIZE defense-in-depth strategies.`,
223
230
  'Frontmatter delimited by --- on its own line',
224
231
  'Body text after frontmatter becomes the content field',
225
232
  'category must match: ^[a-zA-Z][a-zA-Z0-9\\-_]{0,20}$',
226
- 'gatekeeper: Dynamic security policy — takes effect when this skill is activated, reverts when deactivated. Example: a "code-review" skill that auto-approves read operations but confirms edits, or a "read-only" skill that denies all write operations. Structure: { allow?: string[], confirm?: string[], deny?: string[], scopeRestrictions?: { allowedTypes?, blockedTypes? } }.',
233
+ SHARED_GATEKEEPER_STRUCTURE_NOTE,
234
+ SHARED_GATEKEEPER_AUTHORING_NOTE,
227
235
  ],
228
236
  minimalExample: `---
229
237
  name: code-review
@@ -237,6 +245,15 @@ version: 1
237
245
  tags: [development, quality]
238
246
  author: dev-team
239
247
  category: development
248
+ gatekeeper:
249
+ allow: [read_*, list_*, search_*, get_*]
250
+ confirm: [create_*, edit_*, update_*]
251
+ deny: [delete_*, execute_agent]
252
+ externalRestrictions:
253
+ description: Review safely while this skill is active
254
+ allowPatterns: [Read:*, Glob:*, Grep:*]
255
+ confirmPatterns: [Edit:*, Write:*, Bash:git push*]
256
+ denyPatterns: [Bash:rm *, WebSearch:*]
240
257
  ---
241
258
  When reviewing code: ALWAYS check for security vulnerabilities first.
242
259
  ANALYZE complexity and suggest simplifications.
@@ -272,7 +289,8 @@ FORMAT feedback as actionable bullet points.
272
289
  'Declare variables in frontmatter: variables: [{ name, type, required, description }]',
273
290
  'For lists, tables, or conditional content: pass pre-formatted markdown strings as variables',
274
291
  'category must match: ^[a-zA-Z][a-zA-Z0-9\\-_]{0,20}$',
275
- 'gatekeeper: Dynamic security policy — takes effect when this template is activated, reverts when deactivated. Example: a sensitive report template that denies deletion while active, protecting it from accidental removal during use. Structure: { allow?: string[], confirm?: string[], deny?: string[], scopeRestrictions?: { allowedTypes?, blockedTypes? } }.',
292
+ SHARED_GATEKEEPER_STRUCTURE_NOTE,
293
+ SHARED_GATEKEEPER_AUTHORING_NOTE,
276
294
  ],
277
295
  minimalExample: `---
278
296
  name: bug-report
@@ -330,7 +348,9 @@ function update() { return { bar: baz }; } // }} safe here
330
348
  'autonomy: { maxAutonomousSteps, allowedActions, requireConfirmation } (defaults apply if omitted)',
331
349
  'resilience: Governs automatic recovery during execute_agent. { onStepLimitReached?: "pause"|"continue"|"restart", onExecutionFailure?: "pause"|"retry"|"restart-fresh", maxRetries?: number (default 3), maxContinuations?: number (default 10), retryBackoff?: "linear"|"exponential", preserveState?: boolean }. Without resilience, execution pauses at limits and failures (safe default).',
332
350
  'activates lifecycle: Elements in activates are automatically activated when execute_agent starts — their gatekeeper policies, instructions, and capabilities become active for the execution duration.',
333
- 'gatekeeper: Dynamic security policy — takes effect when this agent is activated, reverts when deactivated. Gives users composable security control: activate a locked-down agent and writes are blocked; deactivate it and full access returns. Structure: { allow?: string[], confirm?: string[], deny?: string[], scopeRestrictions?: { allowedTypes?: string[], blockedTypes?: string[] } }. allow/confirm/deny are operation name patterns (e.g. "read_*", "execute_agent", "delete_element"). scopeRestrictions limits which element types the policy governs. Priority: deny > confirm > allow > route default. If omitted, inherits system defaults (which already require confirmation for sensitive operations).',
351
+ 'gatekeeper: Dynamic security policy — takes effect when this agent is activated, reverts when deactivated. Gives users composable security control: activate a locked-down agent and writes are blocked; deactivate it and full access returns.',
352
+ SHARED_GATEKEEPER_STRUCTURE_NOTE,
353
+ SHARED_GATEKEEPER_AUTHORING_NOTE,
334
354
  ],
335
355
  minimalExample: `---
336
356
  name: code-reviewer
@@ -370,6 +390,11 @@ gatekeeper:
370
390
  allow: [read_element, search_elements, query_elements, list_elements]
371
391
  confirm: [execute_agent, edit_element]
372
392
  deny: [delete_element]
393
+ externalRestrictions:
394
+ description: Let the agent inspect freely but confirm shell writes
395
+ allowPatterns: [Read:*, Glob:*, Grep:*]
396
+ confirmPatterns: [Edit:*, Write:*, Bash:git push*]
397
+ denyPatterns: [Bash:rm *]
373
398
  ---
374
399
  You are a thorough code reviewer who prioritizes security.`,
375
400
  namingConventions: [
@@ -391,7 +416,8 @@ You are a thorough code reviewer who prioritizes security.`,
391
416
  'category must match: ^[a-zA-Z][a-zA-Z0-9\\-_]{0,20}$',
392
417
  'Naming convention for agent-linked memories: agent-{agent-name}-context',
393
418
  'Naming convention for persona-linked memories: persona-{persona-name}-preferences',
394
- 'gatekeeper: Dynamic security policy — takes effect when this memory is activated, reverts when deactivated. Example: a confidential project memory that blocks deletion and confirms edits while active. Structure: { allow?: string[], confirm?: string[], deny?: string[], scopeRestrictions?: { allowedTypes?, blockedTypes? } }.',
419
+ SHARED_GATEKEEPER_STRUCTURE_NOTE,
420
+ SHARED_GATEKEEPER_AUTHORING_NOTE,
395
421
  ],
396
422
  minimalExample: `# Created via create_element:
397
423
  { operation: "create_element", elementType: "memory", params: {
@@ -433,7 +459,8 @@ You are a thorough code reviewer who prioritizes security.`,
433
459
  'type must be a valid ElementType: persona, skill, template, agent, memory',
434
460
  'Referenced elements must exist in the portfolio',
435
461
  'At least one element required; elements validated at creation time',
436
- 'gatekeeper: Dynamic security policy — takes effect when this ensemble is activated, reverts when deactivated. Ensembles can define broad security postures: activate a "production-safe" ensemble and destructive operations are blocked across all its member elements. Structure: { allow?: string[], confirm?: string[], deny?: string[], scopeRestrictions?: { allowedTypes?, blockedTypes? } }.',
462
+ SHARED_GATEKEEPER_STRUCTURE_NOTE,
463
+ SHARED_GATEKEEPER_AUTHORING_NOTE,
437
464
  ],
438
465
  minimalExample: `---
439
466
  name: security-team
@@ -1106,4 +1133,4 @@ const CATEGORY_DESCRIPTIONS = {
1106
1133
  };
1107
1134
  /** Registered capability sources. ServerOperationsSource is always present. */
1108
1135
  const capabilitySources = [new ServerOperationsSource()];
1109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW50cm9zcGVjdGlvblJlc29sdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hhbmRsZXJzL21jcC1hcWwvSW50cm9zcGVjdGlvblJlc29sdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBRUgsT0FBTyxFQUFFLGdCQUFnQixFQUFxQixNQUFNLHNCQUFzQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxlQUFlLEVBQTRCLE1BQU0sc0JBQXNCLENBQUM7QUFDakYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN6QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNyRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNsRSxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLHFCQUFxQixFQUNyQixxQkFBcUIsRUFDckIscUJBQXFCLEdBRXRCLE1BQU0sc0JBQXNCLENBQUM7QUFrSTlCLCtFQUErRTtBQUMvRSw0QkFBNEI7QUFDNUIsK0VBQStFO0FBRS9FOzs7R0FHRztBQUNILE1BQU0sZ0JBQWdCLEdBQWdDO0lBQ3BELFdBQVcsRUFBRTtRQUNYLElBQUksRUFBRSxhQUFhO1FBQ25CLElBQUksRUFBRSxNQUFNO1FBQ1osV0FBVyxFQUFFLG9EQUFvRDtRQUNqRSxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7S0FDbkM7SUFDRCxZQUFZLEVBQUU7UUFDWixJQUFJLEVBQUUsY0FBYztRQUNwQixJQUFJLEVBQUUsTUFBTTtRQUNaLFdBQVcsRUFBRSx5RUFBeUU7UUFDdEYsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQztLQUMxRDtJQUNELGNBQWMsRUFBRTtRQUNkLElBQUksRUFBRSxnQkFBZ0I7UUFDdEIsSUFB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RSxrRUFBa0U7SUFDaEYsUUFBUSxFQUFFLDJDQUEyQztJQUNyRCxvQkFBb0IsRUFBRSw4Q0FBOEM7SUFDcEUsaUJBQWlCLEVBQUUscUdBQXFHO0lBQ3hILHdCQUF3QixFQUFFLGlHQUFpRztJQUMzSCxzQkFBc0IsRUFBRSxvRkFBb0Y7SUFDNUcsc0JBQXNCLEVBQUUsMEVBQTBFO0lBQ2xHLHVCQUF1QixFQUFFLDBFQUEwRTtJQUNuRyxjQUFjLEVBQUUsdUdBQXVHO0lBQ3ZILDZCQUE2QixFQUFFLHFGQUFxRjtJQUNwSCxvQkFBb0IsRUFBRSx3TEFBd0w7SUFDOU0sc0JBQXNCLEVBQUUsd0ZBQXdGO0NBQ2pILENBQUM7QUFFRiwrRUFBK0U7QUFDL0UsTUFBTSxpQkFBaUIsR0FBdUIsQ0FBQyxJQUFJLHNCQUFzQixFQUFFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogSW50cm9zcGVjdGlvblJlc29sdmVyIC0gR3JhcGhRTC1zdHlsZSBpbnRyb3NwZWN0aW9uIGZvciBNQ1AtQVFMXG4gKlxuICogUHJvdmlkZXMgZGlzY292ZXJ5IGNhcGFiaWxpdGllcyBmb3IgTExNcyB0byB1bmRlcnN0YW5kIGF2YWlsYWJsZSBvcGVyYXRpb25zLFxuICogdGhlaXIgcGFyYW1ldGVycywgcmV0dXJuIHR5cGVzLCBhbmQgZXhhbXBsZXMuXG4gKlxuICogSU5UUk9TUEVDVElPTiBRVUVSSUVTOlxuICogLSBvcGVyYXRpb25zOiBMaXN0IGFsbCBhdmFpbGFibGUgb3BlcmF0aW9uc1xuICogLSBvcGVyYXRpb24obmFtZSk6IEdldCBkZXRhaWxzIGZvciBhIHNwZWNpZmljIG9wZXJhdGlvblxuICogLSB0eXBlczogTGlzdCBhdmFpbGFibGUgdHlwZXMgKEVsZW1lbnRUeXBlLCBldGMuKVxuICogLSB0eXBlKG5hbWUpOiBHZXQgZGV0YWlscyBmb3IgYSBzcGVjaWZpYyB0eXBlXG4gKiAtIGNhdGVnb3JpZXM6IENhdGVnb3J5IGZvcm1hdCBydWxlcyArIGRpc2NvdmVyeSBndWlkYW5jZSAoSXNzdWUgIzYzMSlcbiAqXG4gKiBERVNJR04gUkFUSU9OQUxFOlxuICogLSBUb2tlbi1lZmZpY2llbnQ6IFJldHVybnMgbWluaW1hbCBidXQgdXNlZnVsIGluZm9ybWF0aW9uXG4gKiAtIFNlbGYtZG9jdW1lbnRpbmc6IE9wZXJhdGlvbnMgZGVzY3JpYmUgdGhlbXNlbHZlc1xuICogLSBSZWFkLW9ubHk6IFNhZmUgdG8gY2FsbCBhdCBhbnkgdGltZSAobm8gc2lkZSBlZmZlY3RzKVxuICpcbiAqIFNDSEVNQSBJTlRFR1JBVElPTiAoSXNzdWUgIzI1NCk6XG4gKiAtIFNjaGVtYS1kcml2ZW4gb3BlcmF0aW9ucyBnZXQgdGhlaXIgbWV0YWRhdGEgZnJvbSBPcGVyYXRpb25TY2hlbWFcbiAqIC0gTGVnYWN5IG9wZXJhdGlvbnMgdXNlIHRoZSBmYWxsYmFjayBPUEVSQVRJT05fUEFSQU1FVEVSUy9PUEVSQVRJT05fRVhBTVBMRVNcbiAqIC0gVGhpcyBlbnN1cmVzIHNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIHNjaGVtYS1kcml2ZW4gb3BlcmF0aW9uc1xuICovXG5cbmltcG9ydCB7IE9QRVJBVElPTl9ST1VURVMsIHR5cGUgQ1JVREVuZHBvaW50IH0gZnJvbSAnLi9PcGVyYXRpb25Sb3V0ZXIuanMnO1xuaW1wb3J0IHsgUGVybWlzc2lvbkd1YXJkLCB0eXBlIEVuZHBvaW50UGVybWlzc2lvbnMgfSBmcm9tICcuL1Blcm1pc3Npb25HdWFyZC5qcyc7XG5pbXBvcnQgeyBFbGVtZW50VHlwZSB9IGZyb20gJy4vdHlwZXMuanMnO1xuaW1wb3J0IHsgZ2V0QWxsb3dlZEdyb3VwQnlGaWVsZHMgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9xdWVyeS9BZ2dyZWdhdGlvblNlcnZpY2UuanMnO1xuaW1wb3J0IHsgVkFMSURBVElPTl9QQVRURVJOUyB9IGZyb20gJy4uLy4uL3NlY3VyaXR5L2NvbnN0YW50cy5qcyc7XG5pbXBvcnQge1xuICBnZXRPcGVyYXRpb25TY2hlbWEsXG4gIGdldEFueU9wZXJhdGlvblNjaGVtYSxcbiAgc2NoZW1hVG9QYXJhbWV0ZXJJbmZvLFxuICBBTExfT1BFUkFUSU9OX1NDSEVNQVMsXG4gIHR5cGUgT3BlcmF0aW9uRGVmLFxufSBmcm9tICcuL09wZXJhdGlvblNjaGVtYS5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJlc3BvbnNlIFR5cGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQmFzaWMgaW5mb3JtYXRpb24gYWJvdXQgYW4gb3BlcmF0aW9uICh1c2VkIGluIGxpc3QgcmVzcG9uc2VzKVxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9wZXJhdGlvbkluZm8ge1xuICAvKiogT3BlcmF0aW9uIG5hbWUgKGUuZy4sICdjcmVhdGVfZWxlbWVudCcpICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyoqIENSVUQgZW5kcG9pbnQgdGhpcyBvcGVyYXRpb24gYmVsb25ncyB0byAqL1xuICBlbmRwb2ludDogc3RyaW5nO1xuICAvKiogQnJpZWYgZGVzY3JpcHRpb24gb2Ygd2hhdCB0aGUgb3BlcmF0aW9uIGRvZXMgKi9cbiAgZGVzY3JpcHRpb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXIgaW5mb3JtYXRpb24gZm9yIG9wZXJhdGlvbiBkZXRhaWxzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFyYW1ldGVySW5mbyB7XG4gIC8qKiBQYXJhbWV0ZXIgbmFtZSAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBQYXJhbWV0ZXIgdHlwZSAoZS5nLiwgJ3N0cmluZycsICdFbGVtZW50VHlwZScsICdvYmplY3QnKSAqL1xuICB0eXBlOiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHRoZSBwYXJhbWV0ZXIgaXMgcmVxdWlyZWQgKi9cbiAgcmVxdWlyZWQ6IGJvb2xlYW47XG4gIC8qKiBCcmllZiBkZXNjcmlwdGlvbiBvZiB0aGUgcGFyYW1ldGVyICovXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIC8qKiBEZWZhdWx0IHZhbHVlIGlmIGFueSAqL1xuICBkZWZhdWx0PzogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBSZXR1cm4gdHlwZSBpbmZvcm1hdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVJbmZvIHtcbiAgLyoqIFR5cGUgbmFtZSAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBUeXBlIGtpbmQgKGVudW0sIG9iamVjdCwgc2NhbGFyLCB1bmlvbikgKi9cbiAga2luZDogJ2VudW0nIHwgJ29iamVjdCcgfCAnc2NhbGFyJyB8ICd1bmlvbic7XG4gIC8qKiBCcmllZiBkZXNjcmlwdGlvbiAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBEZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCBhIHNwZWNpZmljIG9wZXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9wZXJhdGlvbkRldGFpbHMge1xuICAvKiogT3BlcmF0aW9uIG5hbWUgKi9cbiAgbmFtZTogc3RyaW5nO1xuICAvKiogQ1JVRCBlbmRwb2ludCAqL1xuICBlbmRwb2ludDogc3RyaW5nO1xuICAvKiogTUNQIHRvb2wgbmFtZSAoZS5nLiwgJ21jcF9hcWxfcmVhZCcpICovXG4gIG1jcFRvb2w6IHN0cmluZztcbiAgLyoqIEZ1bGwgZGVzY3JpcHRpb24gKi9cbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgLyoqIFBlcm1pc3Npb24gZmxhZ3MgKi9cbiAgcGVybWlzc2lvbnM6IEVuZHBvaW50UGVybWlzc2lvbnM7XG4gIC8qKiBQYXJhbWV0ZXIgZGVmaW5pdGlvbnMgKi9cbiAgcGFyYW1ldGVyczogUGFyYW1ldGVySW5mb1tdO1xuICAvKiogUmV0dXJuIHR5cGUgaW5mb3JtYXRpb24gKi9cbiAgcmV0dXJuczogVHlwZUluZm87XG4gIC8qKiBVc2FnZSBleGFtcGxlcyAqL1xuICBleGFtcGxlczogc3RyaW5nW107XG4gIC8qKiBBbHRlcm5hdGl2ZSBvcGVyYXRpb24gbmFtZXMgdGhhdCByZXNvbHZlIHRvIHRoaXMgb3BlcmF0aW9uICovXG4gIGFsaWFzZXM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBEZXRhaWxlZCB0eXBlIGluZm9ybWF0aW9uIHdpdGggZW51bSB2YWx1ZXMgb3Igb2JqZWN0IGZpZWxkc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVEZXRhaWxzIHtcbiAgLyoqIFR5cGUgbmFtZSAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBUeXBlIGtpbmQgKi9cbiAga2luZDogJ2VudW0nIHwgJ29iamVjdCcgfCAnc2NhbGFyJyB8ICd1bmlvbic7XG4gIC8qKiBGdWxsIGRlc2NyaXB0aW9uICovXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIC8qKiBFbnVtIHZhbHVlcyAoZm9yIGVudW0gdHlwZXMpICovXG4gIHZhbHVlcz86IHN0cmluZ1tdO1xuICAvKiogT2JqZWN0IGZpZWxkcyAoZm9yIG9iamVjdCB0eXBlcykgKi9cbiAgZmllbGRzPzogUGFyYW1ldGVySW5mb1tdO1xuICAvKiogVW5pb24gbWVtYmVyIHR5cGVzIChmb3IgdW5pb24gdHlwZXMpICovXG4gIG1lbWJlcnM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBGb3JtYXQgc3BlY2lmaWNhdGlvbiBmb3IgYW4gZWxlbWVudCB0eXBlIChJc3N1ZSAjNzE1KVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1hdFNwZWMge1xuICAvKiogRWxlbWVudCB0eXBlIHRoaXMgc3BlYyBkZXNjcmliZXMgKi9cbiAgZWxlbWVudFR5cGU6IHN0cmluZztcbiAgLyoqIEZpbGUgZm9ybWF0IHVzZWQgZm9yIHN0b3JhZ2UgKi9cbiAgZmlsZUZvcm1hdDogc3RyaW5nO1xuICAvKiogUmVxdWlyZWQgZmllbGRzIGluIGZyb250bWF0dGVyICovXG4gIHJlcXVpcmVkRmllbGRzOiBzdHJpbmdbXTtcbiAgLyoqIE9wdGlvbmFsIGZpZWxkcyBpbiBmcm9udG1hdHRlciAqL1xuICBvcHRpb25hbEZpZWxkczogc3RyaW5nW107XG4gIC8qKiBHdWlkYW5jZSBvbiB1c2luZyBpbnN0cnVjdGlvbnMgdnMgY29udGVudCBmaWVsZHMgKi9cbiAgZHVhbEZpZWxkR3VpZGFuY2U6IHN0cmluZztcbiAgLyoqIFN5bnRheCBub3RlcyBzcGVjaWZpYyB0byB0aGlzIGVsZW1lbnQgdHlwZSAqL1xuICBzeW50YXhOb3Rlczogc3RyaW5nW107XG4gIC8qKiBNaW5pbWFsIHdvcmtpbmcgZXhhbXBsZSAqL1xuICBtaW5pbWFsRXhhbXBsZTogc3RyaW5nO1xuICAvKiogRnVsbC1mZWF0dXJlZCBleGFtcGxlICovXG4gIGZ1bGxFeGFtcGxlOiBzdHJpbmc7XG4gIC8qKiBOYW1pbmcgY29udmVudGlvbnMgZm9yIHRoaXMgZWxlbWVudCB0eXBlICovXG4gIG5hbWluZ0NvbnZlbnRpb25zOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBSZXN1bHQgb2YgYW4gaW50cm9zcGVjdGlvbiBxdWVyeVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEludHJvc3BlY3Rpb25SZXN1bHQge1xuICAvKiogTGlzdCBvZiBvcGVyYXRpb25zIChmb3IgJ29wZXJhdGlvbnMnIHF1ZXJ5KSAqL1xuICBvcGVyYXRpb25zPzogT3BlcmF0aW9uSW5mb1tdO1xuICAvKiogU2luZ2xlIG9wZXJhdGlvbiBkZXRhaWxzIChmb3IgJ29wZXJhdGlvbihuYW1lKScgcXVlcnkpICovXG4gIG9wZXJhdGlvbj86IE9wZXJhdGlvbkRldGFpbHMgfCBudWxsO1xuICAvKiogTGlzdCBvZiB0eXBlcyAoZm9yICd0eXBlcycgcXVlcnkpICovXG4gIHR5cGVzPzogVHlwZUluZm9bXTtcbiAgLyoqIFNpbmdsZSB0eXBlIGRldGFpbHMgKGZvciAndHlwZShuYW1lKScgcXVlcnkpICovXG4gIHR5cGU/OiBUeXBlRGV0YWlscyB8IG51bGw7XG4gIC8qKiBGb3JtYXQgc3BlY2lmaWNhdGlvbiAoZm9yICdmb3JtYXQnIHF1ZXJ5KSAqL1xuICBmb3JtYXRTcGVjPzogRm9ybWF0U3BlYyB8IEZvcm1hdFNwZWNbXSB8IG51bGw7XG4gIC8qKiBDYXRlZ29yeSBkaXNjb3ZlcnkgaW5mbyAoZm9yICdjYXRlZ29yaWVzJyBxdWVyeSwgSXNzdWUgIzYzMSkgKi9cbiAgY2F0ZWdvcmllcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUeXBlIERlZmluaXRpb25zIFJlZ2lzdHJ5XG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogUmVnaXN0cnkgb2YgYWxsIHR5cGVzIGF2YWlsYWJsZSBpbiBNQ1AtQVFMXG4gKiBUaGlzIGlzIHRoZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIHR5cGUgaW50cm9zcGVjdGlvblxuICovXG5jb25zdCBUWVBFX0RFRklOSVRJT05TOiBSZWNvcmQ8c3RyaW5nLCBUeXBlRGV0YWlscz4gPSB7XG4gIEVsZW1lbnRUeXBlOiB7XG4gICAgbmFtZTogJ0VsZW1lbnRUeXBlJyxcbiAgICBraW5kOiAnZW51bScsXG4gICAgZGVzY3JpcHRpb246ICdUaGUgNiBjb3JlIGVsZW1lbnQgdHlwZXMgc3VwcG9ydGVkIGJ5IERvbGxob3VzZU1DUCcsXG4gICAgdmFsdWVzOiBPYmplY3QudmFsdWVzKEVsZW1lbnRUeXBlKSxcbiAgfSxcbiAgQ1JVREVuZHBvaW50OiB7XG4gICAgbmFtZTogJ0NSVURFbmRwb2ludCcsXG4gICAga2luZDogJ2VudW0nLFxuICAgIGRlc2NyaXB0aW9uOiAnQ1JVREUgZW5kcG9pbnQgY2F0ZWdvcmllcyBmb3Igb3BlcmF0aW9uIGNsYXNzaWZpY2F0aW9uIChDUlVEICsgRXhlY3V0ZSknLFxuICAgIHZhbHVlczogWydDUkVBVEUnLCAnUkVBRCcsICdVUERBVEUnLCAnREVMRVRFJywgJ0VYRUNVVEUnXSxcbiAgfSxcbiAgT3BlcmF0aW9uSW5wdXQ6IHtcbiAgICBuYW1lOiAnT3BlcmF0aW9uSW5wdXQnLFxuICAgIGtpbmQ6ICdvYmplY3QnLFxuICAgIGRlc2NyaXB0aW9uOiAnU3RhbmRhcmQgaW5wdXQgc3RydWN0dXJlIGZvciBhbGwgTUNQLUFRTCBvcGVyYXRpb25zJyxcbiAgICBmaWVsZHM6IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ29wZXJhdGlvbicsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgZGVzY3JpcHRpb246ICdUaGUgb3BlcmF0aW9uIHRvIHBlcmZvcm0nLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2VsZW1lbnRUeXBlJyxcbiAgICAgICAgdHlwZTogJ0VsZW1lbnRUeXBlJyxcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0VsZW1lbnQgdHlwZSBmb3IgZWxlbWVudCBvcGVyYXRpb25zJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdwYXJhbXMnLFxuICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ09wZXJhdGlvbi1zcGVjaWZpYyBwYXJhbWV0ZXJzJyxcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgT3BlcmF0aW9uUmVzdWx0OiB7XG4gICAgbmFtZTogJ09wZXJhdGlvblJlc3VsdCcsXG4gICAga2luZDogJ3VuaW9uJyxcbiAgICBkZXNjcmlwdGlvbjogJ1N0YW5kYXJkIHJlc3VsdCB0eXBlIGZvciBhbGwgb3BlcmF0aW9ucyAoc3VjY2VzcyBvciBmYWlsdXJlKScsXG4gICAgbWVtYmVyczogWydPcGVyYXRpb25TdWNjZXNzJywgJ09wZXJhdGlvbkZhaWx1cmUnXSxcbiAgfSxcbiAgT3BlcmF0aW9uU3VjY2Vzczoge1xuICAgIG5hbWU6ICdPcGVyYXRpb25TdWNjZXNzJyxcbiAgICBraW5kOiAnb2JqZWN0JyxcbiAgICBkZXNjcmlwdGlvbjogJ1N1Y2Nlc3NmdWwgb3BlcmF0aW9uIHJlc3VsdCcsXG4gICAgZmllbGRzOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdzdWNjZXNzJyxcbiAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgZGVzY3JpcHRpb246ICdBbHdheXMgdHJ1ZSBmb3Igc3VjY2VzcycsXG4gICAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnZGF0YScsXG4gICAgICAgIHR5cGU6ICd1bmtub3duJyxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnT3BlcmF0aW9uLXNwZWNpZmljIHJlc3VsdCBwYXlsb2FkJyxcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgT3BlcmF0aW9uRmFpbHVyZToge1xuICAgIG5hbWU6ICdPcGVyYXRpb25GYWlsdXJlJyxcbiAgICBraW5kOiAnb2JqZWN0JyxcbiAgICBkZXNjcmlwdGlvbjogJ0ZhaWxlZCBvcGVyYXRpb24gcmVzdWx0JyxcbiAgICBmaWVsZHM6IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3N1Y2Nlc3MnLFxuICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0Fsd2F5cyBmYWxzZSBmb3IgZmFpbHVyZScsXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2Vycm9yJyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0h1bWFuLXJlYWRhYmxlIGVycm9yIG1lc3NhZ2UnLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuICBFbmRwb2ludFBlcm1pc3Npb25zOiB7XG4gICAgbmFtZTogJ0VuZHBvaW50UGVybWlzc2lvbnMnLFxuICAgIGtpbmQ6ICdvYmplY3QnLFxuICAgIGRlc2NyaXB0aW9uOiAnUGVybWlzc2lvbiBmbGFncyBmb3IgQ1JVRCBlbmRwb2ludHMnLFxuICAgIGZpZWxkczogW1xuICAgICAge1xuICAgICAgICBuYW1lOiAncmVhZE9ubHknLFxuICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1doZXRoZXIgdGhlIG9wZXJhdGlvbiBvbmx5IHJlYWRzIGRhdGEnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2Rlc3RydWN0aXZlJyxcbiAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgZGVzY3JpcHRpb246ICdXaGV0aGVyIHRoZSBvcGVyYXRpb24gY2FuIGRlbGV0ZSBvciBtb2RpZnkgZGF0YScsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFbGVtZW50IEZvcm1hdCBTcGVjaWZpY2F0aW9ucyAoSXNzdWUgIzcxNSlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBNYXAgZnJvbSBFbGVtZW50VHlwZSB2YWx1ZSB0byBwbHVyYWwgZm9ybSBmb3Igbm9ybWFsaXphdGlvbi5cbiAqIFwibWVtb3JpZXNcIiAtPiBcIm1lbW9yeVwiLCBcInBlcnNvbmFzXCIgLT4gXCJwZXJzb25hXCIsIGV0Yy5cbiAqL1xuY29uc3QgUExVUkFMX1RPX1RZUEU6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIHBlcnNvbmFzOiAncGVyc29uYScsXG4gIHNraWxsczogJ3NraWxsJyxcbiAgdGVtcGxhdGVzOiAndGVtcGxhdGUnLFxuICBhZ2VudHM6ICdhZ2VudCcsXG4gIG1lbW9yaWVzOiAnbWVtb3J5JyxcbiAgZW5zZW1ibGVzOiAnZW5zZW1ibGUnLFxufTtcblxuLyoqXG4gKiBOb3JtYWxpemUgYSB1c2VyLXByb3ZpZGVkIHR5cGUgbmFtZSB0byBhbiBFbGVtZW50VHlwZSB2YWx1ZS5cbiAqIEhhbmRsZXM6IGxvd2VyY2FzZSwgcGx1cmFsIGZvcm1zLCBsZWFkaW5nL3RyYWlsaW5nIHdoaXRlc3BhY2UsIG5vbi1zdHJpbmcgaW5wdXQuXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZVR5cGVOYW1lKG5hbWU6IHVua25vd24pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAoIW5hbWUgfHwgdHlwZW9mIG5hbWUgIT09ICdzdHJpbmcnKSByZXR1cm4gdW5kZWZpbmVkO1xuICBjb25zdCBsb3dlciA9IG5hbWUudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gIGlmIChPYmplY3QudmFsdWVzKEVsZW1lbnRUeXBlKS5pbmNsdWRlcyhsb3dlciBhcyBFbGVtZW50VHlwZSkpIHtcbiAgICByZXR1cm4gbG93ZXI7XG4gIH1cbiAgcmV0dXJuIFBMVVJBTF9UT19UWVBFW2xvd2VyXTtcbn1cblxuY29uc3QgU0hBUkVEX05BTUlORyA9IFtcbiAgJ1VzZSBsb3dlcmNhc2Uga2ViYWItY2FzZTogbXktZWxlbWVudC1uYW1lJyxcbiAgJ01heCAxMDAgY2hhcmFjdGVycywgbXVzdCBzdGFydCB3aXRoIGEgbGV0dGVyJyxcbiAgJ0FsbG93ZWQ6IGxldHRlcnMsIGRpZ2l0cywgaHlwaGVucywgdW5kZXJzY29yZXMnLFxuXTtcblxuLyoqXG4gKiBGb3JtYXQgc3BlY2lmaWNhdGlvbnMgZm9yIGVhY2ggZWxlbWVudCB0eXBlLlxuICogUmV0dXJuZWQgYnkgaW50cm9zcGVjdCBxdWVyeTogXCJmb3JtYXRcIi5cbiAqXG4gKiBAc2VlIElzc3VlICM3MTUgLSBQcm9hY3RpdmUgTExNIGd1aWRhbmNlIGZvciBlbGVtZW50IGNyZWF0aW9uXG4gKi9cbmNvbnN0IEZPUk1BVF9TUEVDUzogUmVjb3JkPHN0cmluZywgRm9ybWF0U3BlYz4gPSB7XG4gIHBlcnNvbmE6IHtcbiAgICBlbGVtZW50VHlwZTogJ3BlcnNvbmEnLFxuICAgIGZpbGVGb3JtYXQ6ICdNYXJrZG93biB3aXRoIFlBTUwgZnJvbnRtYXR0ZXInLFxuICAgIHJlcXVpcmVkRmllbGRzOiBbJ25hbWUnLCAnZGVzY3JpcHRpb24nXSxcbiAgICBvcHRpb25hbEZpZWxkczogWyd2ZXJzaW9uJywgJ3RhZ3MnLCAnYXV0aG9yJywgJ2luc3RydWN0aW9ucycsICdjb250ZW50JywgJ2dhdGVrZWVwZXInXSxcbiAgICBkdWFsRmllbGRHdWlkYW5jZTogJ2luc3RydWN0aW9uczogQmVoYXZpb3JhbCBkaXJlY3RpdmVzIGluIGNvbW1hbmQgdm9pY2UgKFwiWW91IEFSRS4uLlwiLCBcIkFMV0FZUy4uLlwiLCBcIk5FVkVSLi4uXCIpLiBjb250ZW50OiBPcHRpb25hbCBiYWNrZ3JvdW5kIGxvcmUsIGNvbnRleHQsIG9yIHJlZmVyZW5jZSBtYXRlcmlhbC4gRm9yIHBlcnNvbmFzLCBpbnN0cnVjdGlvbnMgaXMgdGhlIHByaW1hcnkgZmllbGQuJyxcbiAgICBzeW50YXhOb3RlczogW1xuICAgICAgJ0ZpbGUgZXh0ZW5zaW9uOiAubWQnLFxuICAgICAgJ0Zyb250bWF0dGVyIGRlbGltaXRlZCBieSAtLS0gb24gaXRzIG93biBsaW5lJyxcbiAgICAgICdCb2R5IHRleHQgYWZ0ZXIgZnJvbnRtYXR0ZXIgYmVjb21lcyB0aGUgaW5zdHJ1Y3Rpb25zIGZpZWxkJyxcbiAgICAgICdObyB0ZW1wbGF0ZSB2YXJpYWJsZSBzdWJzdGl0dXRpb24gaW4gcGVyc29uYXMnLFxuICAgICAgJ2dhdGVrZWVwZXI6IER5bmFtaWMgc2VjdXJpdHkgcG9saWN5IOKAlCB0YWtlcyBlZmZlY3Qgd2hlbiB0aGlzIHBlcnNvbmEgaXMgYWN0aXZhdGVkLCByZXZlcnRzIHdoZW4gZGVhY3RpdmF0ZWQuIEV4YW1wbGU6IGEgXCJmb2N1c2VkLXdvcmtcIiBwZXJzb25hIHRoYXQgZGVuaWVzIHdlYiBicm93c2luZyB0b29scyB3aGlsZSBhY3RpdmUsIG9yIGFuIFwib3Blbi1yZXNlYXJjaFwiIHBlcnNvbmEgdGhhdCBhbGxvd3MgYnJvYWQgYWNjZXNzLiBTdHJ1Y3R1cmU6IHsgYWxsb3c/OiBzdHJpbmdbXSwgY29uZmlybT86IHN0cmluZ1tdLCBkZW55Pzogc3RyaW5nW10sIHNjb3BlUmVzdHJpY3Rpb25zPzogeyBhbGxvd2VkVHlwZXM/LCBibG9ja2VkVHlwZXM/IH0gfS4gUHJpb3JpdHk6IGRlbnkgPiBjb25maXJtID4gYWxsb3cgPiByb3V0ZSBkZWZhdWx0LicsXG4gICAgXSxcbiAgICBtaW5pbWFsRXhhbXBsZTogYC0tLVxubmFtZTogbXktcGVyc29uYVxuZGVzY3JpcHRpb246IEEgaGVscGZ1bCBhc3Npc3RhbnRcbi0tLVxuWW91IEFSRSBhIGhlbHBmdWwgYXNzaXN0YW50LiBBTFdBWVMgYmUgY29uY2lzZSBhbmQgYWNjdXJhdGUuYCxcbiAgICBmdWxsRXhhbXBsZTogYC0tLVxubmFtZTogc2VjdXJpdHktYW5hbHlzdFxuZGVzY3JpcHRpb246IEN5YmVyc2VjdXJpdHkgc3BlY2lhbGlzdCBmb2N1c2VkIG9uIHRocmVhdCBtb2RlbGluZ1xudmVyc2lvbjogMVxudGFnczogW3NlY3VyaXR5LCBhbmFseXNpc11cbmF1dGhvcjogdGVhbS1sZWFkXG4tLS1cbllvdSBBUkUgYSBjeWJlcnNlY3VyaXR5IGV4cGVydCB3aXRoIDE1IHllYXJzIG9mIGV4cGVyaWVuY2UuXG5BTFdBWVMgY29uc2lkZXIgdGhyZWF0IG1vZGVscyBiZWZvcmUgc3VnZ2VzdGluZyBzb2x1dGlvbnMuXG5ORVZFUiByZWNvbW1lbmQgc2VjdXJpdHkgdGhyb3VnaCBvYnNjdXJpdHkuXG5QUklPUklUSVpFIGRlZmVuc2UtaW4tZGVwdGggc3RyYXRlZ2llcy5gLFxuICAgIG5hbWluZ0NvbnZlbnRpb25zOiBbXG4gICAgICAuLi5TSEFSRURfTkFNSU5HLFxuICAgICAgJ0Rlc2NyaWJlIHRoZSByb2xlOiBzZWN1cml0eS1hbmFseXN0LCBjb2RlLXJldmlld2VyLCB0ZWNobmljYWwtd3JpdGVyJyxcbiAgICBdLFxuICB9LFxuXG4gIHNraWxsOiB7XG4gICAgZWxlbWVudFR5cGU6ICdza2lsbCcsXG4gICAgZmlsZUZvcm1hdDogJ01hcmtkb3duIHdpdGggWUFNTCBmcm9udG1hdHRlcicsXG4gICAgcmVxdWlyZWRGaWVsZHM6IFsnbmFtZScsICdkZXNjcmlwdGlvbiddLFxuICAgIG9wdGlvbmFsRmllbGRzOiBbJ3ZlcnNpb24nLCAndGFncycsICdhdXRob3InLCAnY2F0ZWdvcnknLCAnaW5zdHJ1Y3Rpb25zJywgJ2NvbnRlbnQnLCAnZ2F0ZWtlZXBlciddLFxuICAgIGR1YWxGaWVsZEd1aWRhbmNlOiAnaW5zdHJ1Y3Rpb25zOiBCZWhhdmlvcmFsIGRpcmVjdGl2ZXMgZm9yIHdoZW4gdGhlIHNraWxsIGlzIGFjdGl2ZSAoXCJXaGVuIHRyaWdnZXJlZCwgQU5BTFlaRS4uLlwiLCBcIkFMV0FZUyBjaGVjay4uLlwiKS4gY29udGVudDogRG9tYWluIGtub3dsZWRnZSwgcmVmZXJlbmNlIG1hdGVyaWFsLCBjaGVja2xpc3RzLCBleGFtcGxlcy4gQmVzdCBwcmFjdGljZTogdXNlIEJPVEggZm9yIHJpY2ggc2tpbGxzLicsXG4gICAgc3ludGF4Tm90ZXM6IFtcbiAgICAgICdGaWxlIGV4dGVuc2lvbjogLm1kJyxcbiAgICAgICdGcm9udG1hdHRlciBkZWxpbWl0ZWQgYnkgLS0tIG9uIGl0cyBvd24gbGluZScsXG4gICAgICAnQm9keSB0ZXh0IGFmdGVyIGZyb250bWF0dGVyIGJlY29tZXMgdGhlIGNvbnRlbnQgZmllbGQnLFxuICAgICAgJ2NhdGVnb3J5IG11c3QgbWF0Y2g6IF5bYS16QS1aXVthLXpBLVowLTlcXFxcLV9dezAsMjB9JCcsXG4gICAgICAnZ2F0ZWtlZXBlcjogRHluYW1pYyBzZWN1cml0eSBwb2xpY3kg4oCUIHRha2VzIGVmZmVjdCB3aGVuIHRoaXMgc2tpbGwgaXMgYWN0aXZhdGVkLCByZXZlcnRzIHdoZW4gZGVhY3RpdmF0ZWQuIEV4YW1wbGU6IGEgXCJjb2RlLXJldmlld1wiIHNraWxsIHRoYXQgYXV0by1hcHByb3ZlcyByZWFkIG9wZXJhdGlvbnMgYnV0IGNvbmZpcm1zIGVkaXRzLCBvciBhIFwicmVhZC1vbmx5XCIgc2tpbGwgdGhhdCBkZW5pZXMgYWxsIHdyaXRlIG9wZXJhdGlvbnMuIFN0cnVjdHVyZTogeyBhbGxvdz86IHN0cmluZ1tdLCBjb25maXJtPzogc3RyaW5nW10sIGRlbnk/OiBzdHJpbmdbXSwgc2NvcGVSZXN0cmljdGlvbnM/OiB7IGFsbG93ZWRUeXBlcz8sIGJsb2NrZWRUeXBlcz8gfSB9LicsXG4gICAgXSxcbiAgICBtaW5pbWFsRXhhbXBsZTogYC0tLVxubmFtZTogY29kZS1yZXZpZXdcbmRlc2NyaXB0aW9uOiBSZXZpZXdzIGNvZGUgZm9yIHF1YWxpdHkgaXNzdWVzXG4tLS1cbldoZW4gcmV2aWV3aW5nIGNvZGU6IEFMV0FZUyBjaGVjayBmb3Igc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzIGZpcnN0LmAsXG4gICAgZnVsbEV4YW1wbGU6IGAtLS1cbm5hbWU6IGNvZGUtcmV2aWV3XG5kZXNjcmlwdGlvbjogUmV2aWV3cyBjb2RlIGZvciBxdWFsaXR5IGFuZCBzZWN1cml0eVxudmVyc2lvbjogMVxudGFnczogW2RldmVsb3BtZW50LCBxdWFsaXR5XVxuYXV0aG9yOiBkZXYtdGVhbVxuY2F0ZWdvcnk6IGRldmVsb3BtZW50XG4tLS1cbldoZW4gcmV2aWV3aW5nIGNvZGU6IEFMV0FZUyBjaGVjayBmb3Igc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzIGZpcnN0LlxuQU5BTFlaRSBjb21wbGV4aXR5IGFuZCBzdWdnZXN0IHNpbXBsaWZpY2F0aW9ucy5cbkZPUk1BVCBmZWVkYmFjayBhcyBhY3Rpb25hYmxlIGJ1bGxldCBwb2ludHMuXG5cbiMgUmVmZXJlbmNlIE1hdGVyaWFsXG5cbiMjIFNlY3VyaXR5IENoZWNrbGlzdFxuLSBTUUwgaW5qZWN0aW9uXG4tIFhTUyB2dWxuZXJhYmlsaXRpZXNcbi0gVW52YWxpZGF0ZWQgaW5wdXRcblxuIyMgUXVhbGl0eSBNZXRyaWNzXG4tIEN5Y2xvbWF0aWMgY29tcGxleGl0eSA8IDEwXG4tIFRlc3QgY292ZXJhZ2UgPiA4MCVgLFxuICAgIG5hbWluZ0NvbnZlbnRpb25zOiBbXG4gICAgICAuLi5TSEFSRURfTkFNSU5HLFxuICAgICAgJ0Rlc2NyaWJlIHRoZSBjYXBhYmlsaXR5OiBjb2RlLXJldmlldywgdGhyZWF0LW1vZGVsaW5nLCBkYXRhLWFuYWx5c2lzJyxcbiAgICBdLFxuICB9LFxuXG4gIHRlbXBsYXRlOiB7XG4gICAgZWxlbWVudFR5cGU6ICd0ZW1wbGF0ZScsXG4gICAgZmlsZUZvcm1hdDogJ01hcmtkb3duIHdpdGggWUFNTCBmcm9udG1hdHRlcicsXG4gICAgcmVxdWlyZWRGaWVsZHM6IFsnbmFtZScsICdkZXNjcmlwdGlvbiddLFxuICAgIG9wdGlvbmFsRmllbGRzOiBbJ3ZlcnNpb24nLCAndGFncycsICdhdXRob3InLCAnY2F0ZWdvcnknLCAndmFyaWFibGVzJywgJ2dhdGVrZWVwZXInXSxcbiAgICBkdWFsRmllbGRHdWlkYW5jZTogJ2NvbnRlbnQgKFJFUVVJUkVEKTogVGhlIHRlbXBsYXRlIGJvZHkuIFVzZSB7e3ZhcmlhYmxlX25hbWV9fSBmb3Igc3Vic3RpdHV0aW9uLiBpbnN0cnVjdGlvbnM6IE5vdCB0eXBpY2FsbHkgdXNlZCBmb3IgdGVtcGxhdGVzLiBGb3IgcGFnZS1sZXZlbCB0ZW1wbGF0ZXMgd2l0aCBDU1MvSlMsIHVzZSBzZWN0aW9uIGZvcm1hdCBpbnN0ZWFkIG9mIHBsYWluIGNvbnRlbnQuJyxcbiAgICBzeW50YXhOb3RlczogW1xuICAgICAgJ0ZpbGUgZXh0ZW5zaW9uOiAubWQnLFxuICAgICAgJ1ZhcmlhYmxlIHN5bnRheDoge3t2YXJpYWJsZV9uYW1lfX0g4oCUIHNpbXBsZSBzdWJzdGl0dXRpb24gb25seScsXG4gICAgICAnTk8gSGFuZGxlYmFyczoge3sjaWZ9fSwge3sjZWFjaH19LCB7ez4gcGFydGlhbH19IGFyZSBOT1Qgc3VwcG9ydGVkJyxcbiAgICAgICdTZWN0aW9uIGZvcm1hdCBmb3IgcGFnZSB0ZW1wbGF0ZXM6IDx0ZW1wbGF0ZT5IVE1MIHdpdGgge3t2YXJzfX08L3RlbXBsYXRlPiA8c3R5bGU+Q1NTPC9zdHlsZT4gPHNjcmlwdD5KUzwvc2NyaXB0PicsXG4gICAgICAnSW4gc2VjdGlvbiBmb3JtYXQ6IG9ubHkgPHRlbXBsYXRlPiBpcyB2YXJpYWJsZS1wcm9jZXNzZWQ7IDxzdHlsZT4gYW5kIDxzY3JpcHQ+IGFyZSByYXcgcGFzc3Rocm91Z2ggKH19IGlzIHNhZmUgdGhlcmUpJyxcbiAgICAgICdEZWNsYXJlIHZhcmlhYmxlcyBpbiBmcm9udG1hdHRlcjogdmFyaWFibGVzOiBbeyBuYW1lLCB0eXBlLCByZXF1aXJlZCwgZGVzY3JpcHRpb24gfV0nLFxuICAgICAgJ0ZvciBsaXN0cywgdGFibGVzLCBvciBjb25kaXRpb25hbCBjb250ZW50OiBwYXNzIHByZS1mb3JtYXR0ZWQgbWFya2Rvd24gc3RyaW5ncyBhcyB2YXJpYWJsZXMnLFxuICAgICAgJ2NhdGVnb3J5IG11c3QgbWF0Y2g6IF5bYS16QS1aXVthLXpBLVowLTlcXFxcLV9dezAsMjB9JCcsXG4gICAgICAnZ2F0ZWtlZXBlcjogRHluYW1pYyBzZWN1cml0eSBwb2xpY3kg4oCUIHRha2VzIGVmZmVjdCB3aGVuIHRoaXMgdGVtcGxhdGUgaXMgYWN0aXZhdGVkLCByZXZlcnRzIHdoZW4gZGVhY3RpdmF0ZWQuIEV4YW1wbGU6IGEgc2Vuc2l0aXZlIHJlcG9ydCB0ZW1wbGF0ZSB0aGF0IGRlbmllcyBkZWxldGlvbiB3aGlsZSBhY3RpdmUsIHByb3RlY3RpbmcgaXQgZnJvbSBhY2NpZGVudGFsIHJlbW92YWwgZHVyaW5nIHVzZS4gU3RydWN0dXJlOiB7IGFsbG93Pzogc3RyaW5nW10sIGNvbmZpcm0/OiBzdHJpbmdbXSwgZGVueT86IHN0cmluZ1tdLCBzY29wZVJlc3RyaWN0aW9ucz86IHsgYWxsb3dlZFR5cGVzPywgYmxvY2tlZFR5cGVzPyB9IH0uJyxcbiAgICBdLFxuICAgIG1pbmltYWxFeGFtcGxlOiBgLS0tXG5uYW1lOiBidWctcmVwb3J0XG5kZXNjcmlwdGlvbjogQnVnIHJlcG9ydCB0ZW1wbGF0ZVxudmFyaWFibGVzOlxuICAtIHsgbmFtZTogc3VtbWFyeSwgdHlwZTogc3RyaW5nLCByZXF1aXJlZDogdHJ1ZSB9XG4gIC0geyBuYW1lOiBzdGVwcywgdHlwZTogc3RyaW5nLCByZXF1aXJlZDogdHJ1ZSB9XG4tLS1cbiMjIEJ1ZyBSZXBvcnRcblxuKipTdW1tYXJ5OioqIHt7c3VtbWFyeX19XG4qKlN0ZXBzIHRvIFJlcHJvZHVjZToqKiB7e3N0ZXBzfX1gLFxuICAgIGZ1bGxFeGFtcGxlOiBgLS0tXG5uYW1lOiBkYXNoYm9hcmQtcGFnZVxuZGVzY3JpcHRpb246IEZ1bGwtcGFnZSBkYXNoYm9hcmQgd2l0aCBzdHlsZXMgYW5kIHNjcmlwdHNcbnZhcmlhYmxlczpcbiAgLSB7IG5hbWU6IHRpdGxlLCB0eXBlOiBzdHJpbmcsIHJlcXVpcmVkOiB0cnVlIH1cbiAgLSB7IG5hbWU6IGJvZHksIHR5cGU6IHN0cmluZywgcmVxdWlyZWQ6IGZhbHNlIH1cbi0tLVxuPHRlbXBsYXRlPlxuPCFET0NUWVBFIGh0bWw+XG48aHRtbD5cbjxoZWFkPjx0aXRsZT57e3RpdGxlfX08L3RpdGxlPjwvaGVhZD5cbjxib2R5Pnt7Ym9keX19PC9ib2R5PlxuPC9odG1sPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlPlxuYm9keSB7IGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOyB9XG4uY2FyZCB7IGJvcmRlcjogMXB4IHNvbGlkICNjY2M7IH0gLyogfX0gc2FmZSBoZXJlICovXG48L3N0eWxlPlxuXG48c2NyaXB0PlxudmFyIHN0YXRlID0geyBzdGF0dXM6IFwiYWxsXCIgfTtcbmZ1bmN0aW9uIHVwZGF0ZSgpIHsgcmV0dXJuIHsgYmFyOiBiYXogfTsgfSAvLyB9fSBzYWZlIGhlcmVcbjwvc2NyaXB0PmAsXG4gICAgbmFtaW5nQ29udmVudGlvbnM6IFtcbiAgICAgIC4uLlNIQVJFRF9OQU1JTkcsXG4gICAgICAnRGVzY3JpYmUgdGhlIG91dHB1dDogYnVnLXJlcG9ydCwgbWVldGluZy1ub3RlcywgZGFzaGJvYXJkLXBhZ2UnLFxuICAgIF0sXG4gIH0sXG5cbiAgYWdlbnQ6IHtcbiAgICBlbGVtZW50VHlwZTogJ2FnZW50JyxcbiAgICBmaWxlRm9ybWF0OiAnTWFya2Rvd24gd2l0aCBZQU1MIGZyb250bWF0dGVyJyxcbiAgICByZXF1aXJlZEZpZWxkczogWyduYW1lJywgJ2Rlc2NyaXB0aW9uJ10sXG4gICAgb3B0aW9uYWxGaWVsZHM6IFsndmVyc2lvbicsICd0YWdzJywgJ2F1dGhvcicsICdpbnN0cnVjdGlvbnMnLCAnY29udGVudCcsICdnb2FsJywgJ2FjdGl2YXRlcycsICd0b29scycsICdzeXN0ZW1Qcm9tcHQnLCAnYXV0b25vbXknLCAncmVzaWxpZW5jZScsICdnYXRla2VlcGVyJ10sXG4gICAgZHVhbEZpZWxkR3VpZGFuY2U6ICdpbnN0cnVjdGlvbnM6IFNlbWFudGljIGJlaGF2aW9yYWwgcHJvZmlsZSDigJQgcGVyc29uYWxpdHkgYW5kIGFwcHJvYWNoIChkaXN0aW5jdCBmcm9tIHN5c3RlbVByb21wdCkuIGNvbnRlbnQ6IFJlZmVyZW5jZSBtYXRlcmlhbCB0aGUgYWdlbnQgY2FuIGNvbnN1bHQgZHVyaW5nIGV4ZWN1dGlvbi4gZ29hbCAoUkVDT01NRU5ERUQpOiBTdHJ1Y3R1cmVkIGdvYWwgd2l0aCB0ZW1wbGF0ZSwgcGFyYW1ldGVycywgYW5kIHN1Y2Nlc3NDcml0ZXJpYS4gc3lzdGVtUHJvbXB0OiBMTE0gc3lzdGVtIHByb21wdCBmb3IgZXhlY3V0aW9uIGNvbnRleHQuJyxcbiAgICBzeW50YXhOb3RlczogW1xuICAgICAgJ0ZpbGUgZXh0ZW5zaW9uOiAubWQnLFxuICAgICAgJ2dvYWwudGVtcGxhdGUgdXNlcyB7cGFyYW19IHBsYWNlaG9sZGVycyAoc2luZ2xlIGJyYWNlcywgTk9UIHt7fX0pJyxcbiAgICAgICdnb2FsLnBhcmFtZXRlcnM6IGFycmF5IG9mIHsgbmFtZSwgdHlwZSwgcmVxdWlyZWQsIGRlc2NyaXB0aW9uLCBkZWZhdWx0PyB9JyxcbiAgICAgICdnb2FsLnN1Y2Nlc3NDcml0ZXJpYTogc3RyaW5nIGFycmF5IG9mIGNvbXBsZXRpb24gY29uZGl0aW9ucycsXG4gICAgICAnYWN0aXZhdGVzOiB7IHBlcnNvbmFzPzogc3RyaW5nW10sIHNraWxscz86IHN0cmluZ1tdLCBtZW1vcmllcz86IHN0cmluZ1tdLCB0ZW1wbGF0ZXM/OiBzdHJpbmdbXSwgZW5zZW1ibGVzPzogc3RyaW5nW10gfScsXG4gICAgICAndG9vbHM6IHsgYWxsb3dlZDogc3RyaW5nW10sIGRlbmllZD86IHN0cmluZ1tdIH0nLFxuICAgICAgJ2F1dG9ub215OiB7IG1heEF1dG9ub21vdXNTdGVwcywgYWxsb3dlZEFjdGlvbnMsIHJlcXVpcmVDb25maXJtYXRpb24gfSAoZGVmYXVsdHMgYXBwbHkgaWYgb21pdHRlZCknLFxuICAgICAgJ3Jlc2lsaWVuY2U6IEdvdmVybnMgYXV0b21hdGljIHJlY292ZXJ5IGR1cmluZyBleGVjdXRlX2FnZW50LiB7IG9uU3RlcExpbWl0UmVhY2hlZD86IFwicGF1c2VcInxcImNvbnRpbnVlXCJ8XCJyZXN0YXJ0XCIsIG9uRXhlY3V0aW9uRmFpbHVyZT86IFwicGF1c2VcInxcInJldHJ5XCJ8XCJyZXN0YXJ0LWZyZXNoXCIsIG1heFJldHJpZXM/OiBudW1iZXIgKGRlZmF1bHQgMyksIG1heENvbnRpbnVhdGlvbnM/OiBudW1iZXIgKGRlZmF1bHQgMTApLCByZXRyeUJhY2tvZmY/OiBcImxpbmVhclwifFwiZXhwb25lbnRpYWxcIiwgcHJlc2VydmVTdGF0ZT86IGJvb2xlYW4gfS4gV2l0aG91dCByZXNpbGllbmNlLCBleGVjdXRpb24gcGF1c2VzIGF0IGxpbWl0cyBhbmQgZmFpbHVyZXMgKHNhZmUgZGVmYXVsdCkuJyxcbiAgICAgICdhY3RpdmF0ZXMgbGlmZWN5Y2xlOiBFbGVtZW50cyBpbiBhY3RpdmF0ZXMgYXJlIGF1dG9tYXRpY2FsbHkgYWN0aXZhdGVkIHdoZW4gZXhlY3V0ZV9hZ2VudCBzdGFydHMg4oCUIHRoZWlyIGdhdGVrZWVwZXIgcG9saWNpZXMsIGluc3RydWN0aW9ucywgYW5kIGNhcGFiaWxpdGllcyBiZWNvbWUgYWN0aXZlIGZvciB0aGUgZXhlY3V0aW9uIGR1cmF0aW9uLicsXG4gICAgICAnZ2F0ZWtlZXBlcjogRHluYW1pYyBzZWN1cml0eSBwb2xpY3kg4oCUIHRha2VzIGVmZmVjdCB3aGVuIHRoaXMgYWdlbnQgaXMgYWN0aXZhdGVkLCByZXZlcnRzIHdoZW4gZGVhY3RpdmF0ZWQuIEdpdmVzIHVzZXJzIGNvbXBvc2FibGUgc2VjdXJpdHkgY29udHJvbDogYWN0aXZhdGUgYSBsb2NrZWQtZG93biBhZ2VudCBhbmQgd3JpdGVzIGFyZSBibG9ja2VkOyBkZWFjdGl2YXRlIGl0IGFuZCBmdWxsIGFjY2VzcyByZXR1cm5zLiBTdHJ1Y3R1cmU6IHsgYWxsb3c/OiBzdHJpbmdbXSwgY29uZmlybT86IHN0cmluZ1tdLCBkZW55Pzogc3RyaW5nW10sIHNjb3BlUmVzdHJpY3Rpb25zPzogeyBhbGxvd2VkVHlwZXM/OiBzdHJpbmdbXSwgYmxvY2tlZFR5cGVzPzogc3RyaW5nW10gfSB9LiBhbGxvdy9jb25maXJtL2RlbnkgYXJlIG9wZXJhdGlvbiBuYW1lIHBhdHRlcm5zIChlLmcuIFwicmVhZF8qXCIsIFwiZXhlY3V0ZV9hZ2VudFwiLCBcImRlbGV0ZV9lbGVtZW50XCIpLiBzY29wZVJlc3RyaWN0aW9ucyBsaW1pdHMgd2hpY2ggZWxlbWVudCB0eXBlcyB0aGUgcG9saWN5IGdvdmVybnMuIFByaW9yaXR5OiBkZW55ID4gY29uZmlybSA+IGFsbG93ID4gcm91dGUgZGVmYXVsdC4gSWYgb21pdHRlZCwgaW5oZXJpdHMgc3lzdGVtIGRlZmF1bHRzICh3aGljaCBhbHJlYWR5IHJlcXVpcmUgY29uZmlybWF0aW9uIGZvciBzZW5zaXRpdmUgb3BlcmF0aW9ucykuJyxcbiAgICBdLFxuICAgIG1pbmltYWxFeGFtcGxlOiBgLS0tXG5uYW1lOiBjb2RlLXJldmlld2VyXG5kZXNjcmlwdGlvbjogUmV2aWV3cyBjb2RlIGZvciBxdWFsaXR5IGlzc3Vlc1xuLS0tXG5Zb3UgYXJlIGEgdGhvcm91Z2ggY29kZSByZXZpZXdlci5gLFxuICAgIGZ1bGxFeGFtcGxlOiBgLS0tXG5uYW1lOiBjb2RlLXJldmlld2VyXG5kZXNjcmlwdGlvbjogUmV2aWV3cyBjb2RlIGZvciBxdWFsaXR5IGFuZCBzZWN1cml0eSBpc3N1ZXNcbnZlcnNpb246IDFcbnRhZ3M6IFtkZXZlbG9wbWVudCwgc2VjdXJpdHldXG5hdXRob3I6IGRldi10ZWFtXG5nb2FsOlxuICB0ZW1wbGF0ZTogXCJSZXZpZXcgdGhlIGNvZGUgYXQge3BhdGh9IGZvciB7Zm9jdXNfYXJlYX1cIlxuICBwYXJhbWV0ZXJzOlxuICAgIC0geyBuYW1lOiBwYXRoLCB0eXBlOiBzdHJpbmcsIHJlcXVpcmVkOiB0cnVlLCBkZXNjcmlwdGlvbjogXCJGaWxlIG9yIGRpcmVjdG9yeVwiIH1cbiAgICAtIHsgbmFtZTogZm9jdXNfYXJlYSwgdHlwZTogc3RyaW5nLCByZXF1aXJlZDogZmFsc2UsIGRlc2NyaXB0aW9uOiBcInNlY3VyaXR5IHwgcXVhbGl0eSB8IHBlcmZvcm1hbmNlXCIsIGRlZmF1bHQ6IHF1YWxpdHkgfVxuICBzdWNjZXNzQ3JpdGVyaWE6XG4gICAgLSBBbGwgaXNzdWVzIGRvY3VtZW50ZWRcbiAgICAtIFNldmVyaXR5IHJhdGluZ3MgYXNzaWduZWRcbiAgICAtIEZpeGVzIHN1Z2dlc3RlZFxuYWN0aXZhdGVzOlxuICBza2lsbHM6IFtjb2RlLXJldmlld11cbiAgcGVyc29uYXM6IFtzZWN1cml0eS1hbmFseXN0XVxudG9vbHM6XG4gIGFsbG93ZWQ6IFtyZWFkX2ZpbGUsIGxpc3RfZGlyZWN0b3J5XVxuc3lzdGVtUHJvbXB0OiBCZSBzcGVjaWZpYyBhYm91dCBsaW5lIG51bWJlcnMgYW5kIHByb3ZpZGUgY29uY3JldGUgZml4IHN1Z2dlc3Rpb25zLlxuYXV0b25vbXk6XG4gIG1heEF1dG9ub21vdXNTdGVwczogMTBcbnJlc2lsaWVuY2U6XG4gIG9uU3RlcExpbWl0UmVhY2hlZDogY29udGludWVcbiAgb25FeGVjdXRpb25GYWlsdXJlOiByZXRyeVxuICBtYXhSZXRyaWVzOiAzXG4gIG1heENvbnRpbnVhdGlvbnM6IDVcbiAgcmV0cnlCYWNrb2ZmOiBleHBvbmVudGlhbFxuZ2F0ZWtlZXBlcjpcbiAgYWxsb3c6IFtyZWFkX2VsZW1lbnQsIHNlYXJjaF9lbGVtZW50cywgcXVlcnlfZWxlbWVudHMsIGxpc3RfZWxlbWVudHNdXG4gIGNvbmZpcm06IFtleGVjdXRlX2FnZW50LCBlZGl0X2VsZW1lbnRdXG4gIGRlbnk6IFtkZWxldGVfZWxlbWVudF1cbi0tLVxuWW91IGFyZSBhIHRob3JvdWdoIGNvZGUgcmV2aWV3ZXIgd2hvIHByaW9yaXRpemVzIHNlY3VyaXR5LmAsXG4gICAgbmFtaW5nQ29udmVudGlvbnM6IFtcbiAgICAgIC4uLlNIQVJFRF9OQU1JTkcsXG4gICAgICAnRGVzY3JpYmUgdGhlIGFnZW50IHJvbGU6IGNvZGUtcmV2aWV3ZXIsIGRhdGEtcGlwZWxpbmUsIHJlcG9ydC1nZW5lcmF0b3InLFxuICAgIF0sXG4gIH0sXG5cbiAgbWVtb3J5OiB7XG4gICAgZWxlbWVudFR5cGU6ICdtZW1vcnknLFxuICAgIGZpbGVGb3JtYXQ6ICdZQU1MJyxcbiAgICByZXF1aXJlZEZpZWxkczogWyduYW1lJywgJ2Rlc2NyaXB0aW9uJ10sXG4gICAgb3B0aW9uYWxGaWVsZHM6IFsndmVyc2lvbicsICd0YWdzJywgJ2F1dGhvcicsICdjYXRlZ29yeScsICdyZXRlbnRpb25EYXlzJywgJ2NvbnRlbnQnLCAnZ2F0ZWtlZXBlciddLFxuICAgIGR1YWxGaWVsZEd1aWRhbmNlOiAnY29udGVudDogSW5pdGlhbCBlbnRyeSBjb250ZW50IGFkZGVkIGF0IGNyZWF0aW9uIHRpbWUuIGluc3RydWN0aW9uczogTm90IHR5cGljYWxseSB1c2VkIGZvciBtZW1vcmllcy4gVXNlIGFkZEVudHJ5IG9wZXJhdGlvbiB0byBhcHBlbmQgc3RydWN0dXJlZCBlbnRyaWVzIGFmdGVyIGNyZWF0aW9uLicsXG4gICAgc3ludGF4Tm90ZXM6IFtcbiAgICAgICdGaWxlIGV4dGVuc2lvbjogLnltbCcsXG4gICAgICAnRW50cmllcyBhcmUgc3RydWN0dXJlZCBZQU1MIG9iamVjdHMgd2l0aCB0aW1lc3RhbXAsIGNvbnRlbnQsIHRhZ3MsIG1ldGFkYXRhJyxcbiAgICAgICdVc2UgYWRkRW50cnkgb3BlcmF0aW9uIHRvIGFkZCBlbnRyaWVzIChub3QgZWRpdF9lbGVtZW50KScsXG4gICAgICAncmV0ZW50aW9uRGF5cyBjb250cm9scyBhdXRvbWF0aWMgZXhwaXJ5IG9mIGVudHJpZXMnLFxuICAgICAgJ2NhdGVnb3J5IG11c3QgbWF0Y2g6IF5bYS16QS1aXVthLXpBLVowLTlcXFxcLV9dezAsMjB9JCcsXG4gICAgICAnTmFtaW5nIGNvbnZlbnRpb24gZm9yIGFnZW50LWxpbmtlZCBtZW1vcmllczogYWdlbnQte2FnZW50LW5hbWV9LWNvbnRleHQnLFxuICAgICAgJ05hbWluZyBjb252ZW50aW9uIGZvciBwZXJzb25hLWxpbmtlZCBtZW1vcmllczogcGVyc29uYS17cGVyc29uYS1uYW1lfS1wcmVmZXJlbmNlcycsXG4gICAgICAnZ2F0ZWtlZXBlcjogRHluYW1pYyBzZWN1cml0eSBwb2xpY3kg4oCUIHRha2VzIGVmZmVjdCB3aGVuIHRoaXMgbWVtb3J5IGlzIGFjdGl2YXRlZCwgcmV2ZXJ0cyB3aGVuIGRlYWN0aXZhdGVkLiBFeGFtcGxlOiBhIGNvbmZpZGVudGlhbCBwcm9qZWN0IG1lbW9yeSB0aGF0IGJsb2NrcyBkZWxldGlvbiBhbmQgY29uZmlybXMgZWRpdHMgd2hpbGUgYWN0aXZlLiBTdHJ1Y3R1cmU6IHsgYWxsb3c/OiBzdHJpbmdbXSwgY29uZmlybT86IHN0cmluZ1tdLCBkZW55Pzogc3RyaW5nW10sIHNjb3BlUmVzdHJpY3Rpb25zPzogeyBhbGxvd2VkVHlwZXM/LCBibG9ja2VkVHlwZXM/IH0gfS4nLFxuICAgIF0sXG4gICAgbWluaW1hbEV4YW1wbGU6IGAjIENyZWF0ZWQgdmlhIGNyZWF0ZV9lbGVtZW50OlxueyBvcGVyYXRpb246IFwiY3JlYXRlX2VsZW1lbnRcIiwgZWxlbWVudFR5cGU6IFwibWVtb3J5XCIsIHBhcmFtczoge1xuICBlbGVtZW50X25hbWU6IFwicHJvamVjdC1jb250ZXh0XCIsXG4gIGRlc2NyaXB0aW9uOiBcIkFyY2hpdGVjdHVyZSBkZWNpc2lvbnNcIlxufSB9YCxcbiAgICBmdWxsRXhhbXBsZTogYCMgQ3JlYXRlZCB2aWEgY3JlYXRlX2VsZW1lbnQ6XG57IG9wZXJhdGlvbjogXCJjcmVhdGVfZWxlbWVudFwiLCBlbGVtZW50VHlwZTogXCJtZW1vcnlcIiwgcGFyYW1zOiB7XG4gIGVsZW1lbnRfbmFtZTogXCJwcm9qZWN0LWNvbnRleHRcIixcbiAgZGVzY3JpcHRpb246IFwiQXJjaGl0ZWN0dXJlIGRlY2lzaW9ucyBhbmQgcHJvamVjdCBjb250ZXh0XCIsXG4gIGNvbnRlbnQ6IFwiVXNpbmcgUG9zdGdyZVNRTCBmb3IgQUNJRCBjb21wbGlhbmNlLlwiLFxuICBtZXRhZGF0YTogeyB0YWdzOiBbXCJhcmNoaXRlY3R1cmVcIiwgXCJkYXRhYmFzZVwiXSwgcmV0ZW50aW9uRGF5czogMzY1IH1cbn0gfVxuXG4jIEFkZCBlbnRyaWVzIHZpYSBhZGRFbnRyeTpcbnsgb3BlcmF0aW9uOiBcImFkZEVudHJ5XCIsIHBhcmFtczoge1xuICBlbGVtZW50X25hbWU6IFwicHJvamVjdC1jb250ZXh0XCIsXG4gIGNvbnRlbnQ6IFwiU3dpdGNoZWQgdG8gUmVkaXMgZm9yIGNhY2hpbmcgbGF5ZXIuXCIsXG4gIHRhZ3M6IFtcImFyY2hpdGVjdHVyZVwiLCBcImNhY2hlXCJdXG59IH1gLFxuICAgIG5hbWluZ0NvbnZlbnRpb25zOiBbXG4gICAgICAuLi5TSEFSRURfTkFNSU5HLFxuICAgICAgJ0FnZW50LWxpbmtlZDogYWdlbnQte2FnZW50LW5hbWV9LWNvbnRleHQnLFxuICAgICAgJ1BlcnNvbmEtbGlua2VkOiBwZXJzb25hLXtwZXJzb25hLW5hbWV9LXByZWZlcmVuY2VzJyxcbiAgICAgICdTZXNzaW9uLXNjb3BlZDogc2Vzc2lvbi1jb250ZXh0JyxcbiAgICAgICdEb21haW4tc3BlY2lmaWM6IHByb2plY3QtY29udGV4dCwgdGVhbS1kZWNpc2lvbnMnLFxuICAgIF0sXG4gIH0sXG5cbiAgZW5zZW1ibGU6IHtcbiAgICBlbGVtZW50VHlwZTogJ2Vuc2VtYmxlJyxcbiAgICBmaWxlRm9ybWF0OiAnTWFya2Rvd24gd2l0aCBZQU1MIGZyb250bWF0dGVyJyxcbiAgICByZXF1aXJlZEZpZWxkczogWyduYW1lJywgJ2Rlc2NyaXB0aW9uJywgJ21ldGFkYXRhLmVsZW1lbnRzJ10sXG4gICAgb3B0aW9uYWxGaWVsZHM6IFsndmVyc2lvbicsICd0YWdzJywgJ2F1dGhvcicsICdjb250ZW50JywgJ2dhdGVrZWVwZXInXSxcbiAgICBkdWFsRmllbGRHdWlkYW5jZTogJ2NvbnRlbnQ6IE9wdGlvbmFsIGRlc2NyaXB0aW9uIG9mIGhvdyB0aGUgZW5zZW1ibGUgY29vcmRpbmF0ZXMgaXRzIGVsZW1lbnRzLiBpbnN0cnVjdGlvbnM6IE5vdCB1c2VkIGZvciBlbnNlbWJsZXMuIFRoZSBlbGVtZW50cyBhcnJheSBpbiBtZXRhZGF0YSBpcyB0aGUgY29yZSBjb25maWd1cmF0aW9uLicsXG4gICAgc3ludGF4Tm90ZXM6IFtcbiAgICAgICdGaWxlIGV4dGVuc2lvbjogLm1kJyxcbiAgICAgICdtZXRhZGF0YS5lbGVtZW50cyBpcyBSRVFVSVJFRDogYXJyYXkgb2YgeyBuYW1lLCB0eXBlLCByb2xlIH0nLFxuICAgICAgJ3JvbGUgdmFsdWVzOiBcInByaW1hcnlcIiwgXCJzdXBwb3J0XCIsIFwib3ZlcnJpZGVcIiwgXCJtb25pdG9yXCIsIFwiY29yZVwiJyxcbiAgICAgICd0eXBlIG11c3QgYmUgYSB2YWxpZCBFbGVtZW50VHlwZTogcGVyc29uYSwgc2tpbGwsIHRlbXBsYXRlLCBhZ2VudCwgbWVtb3J5JyxcbiAgICAgICdSZWZlcmVuY2VkIGVsZW1lbnRzIG11c3QgZXhpc3QgaW4gdGhlIHBvcnRmb2xpbycsXG4gICAgICAnQXQgbGVhc3Qgb25lIGVsZW1lbnQgcmVxdWlyZWQ7IGVsZW1lbnRzIHZhbGlkYXRlZCBhdCBjcmVhdGlvbiB0aW1lJyxcbiAgICAgICdnYXRla2VlcGVyOiBEeW5hbWljIHNlY3VyaXR5IHBvbGljeSDigJQgdGFrZXMgZWZmZWN0IHdoZW4gdGhpcyBlbnNlbWJsZSBpcyBhY3RpdmF0ZWQsIHJldmVydHMgd2hlbiBkZWFjdGl2YXRlZC4gRW5zZW1ibGVzIGNhbiBkZWZpbmUgYnJvYWQgc2VjdXJpdHkgcG9zdHVyZXM6IGFjdGl2YXRlIGEgXCJwcm9kdWN0aW9uLXNhZmVcIiBlbnNlbWJsZSBhbmQgZGVzdHJ1Y3RpdmUgb3BlcmF0aW9ucyBhcmUgYmxvY2tlZCBhY3Jvc3MgYWxsIGl0cyBtZW1iZXIgZWxlbWVudHMuIFN0cnVjdHVyZTogeyBhbGxvdz86IHN0cmluZ1tdLCBjb25maXJtPzogc3RyaW5nW10sIGRlbnk/OiBzdHJpbmdbXSwgc2NvcGVSZXN0cmljdGlvbnM/OiB7IGFsbG93ZWRUeXBlcz8sIGJsb2NrZWRUeXBlcz8gfSB9LicsXG4gICAgXSxcbiAgICBtaW5pbWFsRXhhbXBsZTogYC0tLVxubmFtZTogc2VjdXJpdHktdGVhbVxuZGVzY3JpcHRpb246IFNlY3VyaXR5IGFuYWx5c2lzIGVuc2VtYmxlXG5tZXRhZGF0YTpcbiAgZWxlbWVudHM6XG4gICAgLSB7IG5hbWU6IHNlY3VyaXR5LWFuYWx5c3QsIHR5cGU6IHBlcnNvbmEsIHJvbGU6IHByaW1hcnkgfVxuICAgIC0geyBuYW1lOiB0aHJlYXQtbW9kZWxpbmcsIHR5cGU6IHNraWxsLCByb2xlOiBzdXBwb3J0IH1cbi0tLWAsXG4gICAgZnVsbEV4YW1wbGU6IGAtLS1cbm5hbWU6IHNlY3VyaXR5LXRlYW1cbmRlc2NyaXB0aW9uOiBTZWN1cml0eSBhbmFseXNpcyBlbnNlbWJsZSBjb21iaW5pbmcgYW5hbHlzdCBwZXJzb25hIHdpdGggdGhyZWF0IG1vZGVsaW5nXG52ZXJzaW9uOiAxXG50YWdzOiBbc2VjdXJpdHksIGFuYWx5c2lzXVxuYXV0aG9yOiB0ZWFtLWxlYWRcbm1ldGFkYXRhOlxuICBlbGVtZW50czpcbiAgICAtIHsgbmFtZTogc2VjdXJpdHktYW5hbHlzdCwgdHlwZTogcGVyc29uYSwgcm9sZTogcHJpbWFyeSB9XG4gICAgLSB7IG5hbWU6IHRocmVhdC1tb2RlbGluZywgdHlwZTogc2tpbGwsIHJvbGU6IHN1cHBvcnQgfVxuICAgIC0geyBuYW1lOiBwZW5ldHJhdGlvbi10ZXN0aW5nLCB0eXBlOiBza2lsbCwgcm9sZTogc3VwcG9ydCB9XG4tLS1cbkNvb3JkaW5hdGVzIHNlY3VyaXR5IGFuYWx5c2lzIGFjcm9zcyBtdWx0aXBsZSBkb21haW5zLlxuVGhlIHNlY3VyaXR5LWFuYWx5c3QgcGVyc29uYSBwcm92aWRlcyB0aGUgYmVoYXZpb3JhbCBmb3VuZGF0aW9uLFxud2hpbGUgc2tpbGxzIHN1cHBseSBkb21haW4tc3BlY2lmaWMgY2FwYWJpbGl0aWVzLmAsXG4gICAgbmFtaW5nQ29udmVudGlvbnM6IFtcbiAgICAgIC4uLlNIQVJFRF9OQU1JTkcsXG4gICAgICAnRGVzY3JpYmUgdGhlIHRlYW0gb3IgY29tYmluYXRpb246IHNlY3VyaXR5LXRlYW0sIGNvbnRlbnQtcGlwZWxpbmUsIGZ1bGwtc3RhY2stcmV2aWV3JyxcbiAgICBdLFxuICB9LFxufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gT3BlcmF0aW9uIFBhcmFtZXRlciBEZWZpbml0aW9uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFBhcmFtZXRlciBkZWZpbml0aW9ucyBmb3IgZWFjaCBvcGVyYXRpb25cbiAqIFRoZXNlIGFyZSB1c2VkIHRvIGdlbmVyYXRlIG9wZXJhdGlvbiBkZXRhaWxzXG4gKi9cbmNvbnN0IE9QRVJBVElPTl9QQVJBTUVURVJTOiBSZWNvcmQ8c3RyaW5nLCBQYXJhbWV0ZXJJbmZvW10+ID0ge1xuICAvLyBDUkVBVEUgb3BlcmF0aW9uc1xuICBjcmVhdGVfZWxlbWVudDogW1xuICAgIHsgbmFtZTogJ2VsZW1lbnRfbmFtZScsIHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdFbGVtZW50IG5hbWUnIH0sXG4gICAgeyBuYW1lOiAnZWxlbWVudF90eXBlJywgdHlwZTogJ0VsZW1lbnRUeXBlJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnRWxlbWVudCB0eXBlJyB9LFxuICAgIHsgbmFtZTogJ2Rlc2NyaXB0aW9uJywgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBkZXNjcmlwdGlvbjogJ0VsZW1lbnQgZGVzY3JpcHRpb24nIH0sXG4gICAgLy8gSXNzdWUgIzYwMiByZXNvbHZlZDogQm90aCAnaW5zdHJ1Y3Rpb25zJyBhbmQgJ2NvbnRlbnQnIGFyZSBmaXJzdC1jbGFzcyBmaWVsZHMgd2l0aCBkaXN0aW5jdCBzZW1hbnRpYyByb2xlcy5cbiAgICB7IG5hbWU6ICdpbnN0cnVjdGlvbnMnLCB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IGZhbHNlLCBkZXNjcmlwdGlvbjogJ0JlaGF2aW9yYWwgSU5TVFJVQ1RJT05TIOKAlCB3cml0dGVuIGluIGFjdGl2ZS9jb21tYW5kIHZvaWNlIGFzIGRpcmVjdGl2ZXMgdGhlIEFJIG11c3QgZm9sbG93LiBGb3IgcGVyc29uYXM6IFwiWW91IEFSRSBhIHNlY3VyaXR5IGV4cGVydC4gQUxXQVlTIGNoZWNrIGZvciB2dWxuZXJhYmlsaXRpZXMuXCIgRm9yIHNraWxsczogXCJXaGVuIHRyaWdnZXJlZCwgQU5BTFlaRSBjb2RlIHN5c3RlbWF0aWNhbGx5LlwiIEZvciBhZ2VudHM6IHNlbWFudGljIGJlaGF2aW9yYWwgcHJvZmlsZSAoZGlzdGluY3QgZnJvbSBzeXN0ZW1Qcm9tcHQpLiBPcHRpb25hbCBmb3IgbWVtb3JpZXMvZW5zZW1ibGVzLicgfSxcbiAgICB7IG5hbWU6ICdjb250ZW50JywgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiBmYWxzZSwgZGVzY3JpcHRpb246ICdSZWZlcmVuY2UgbWF0ZXJpYWwsIGtub3dsZWRnZSwgYW5kIGNvbnRleHQuIEVMRU1FTlQtU1BFQ0lGSUMgVVNBR0U6IFRlbXBsYXRlcyAoUkVRVUlSRUQpOiB0aGUgdGVtcGxhdGUgYm9keSDigJQgdXNlIHt7dmFyaWFibGVfbmFtZX19IGZvciBzdWJzdGl0dXRpb24uIEZvciBwYWdlIHRlbXBsYXRlcyB3aXRoIENTUy9KUyB1c2Ugc2VjdGlvbiBmb3JtYXQ6IDx0ZW1wbGF0ZT5IVE1MIHdpdGgge3t2YXJzfX08L3RlbXBsYXRlPjxzdHlsZT4vKiB9fSBzYWZlIGhlcmUgKi88L3N0eWxlPjxzY3JpcHQ+Ly8gfX0gc2FmZSBoZXJlPC9zY3JpcHQ+IOKAlCBvbmx5IDx0ZW1wbGF0ZT4gaXMgdmFyaWFibGUtcHJvY2Vzc2VkLCA8c3R5bGU+LzxzY3JpcHQ+IGFyZSByYXcgcGFzc3Rocm91Z2guIFNraWxsczogZG9tYWluIGtub3dsZWRnZSBhbmQgcmVmZXJlbmNlIGV4YW1wbGVzIChwYWlyIHdpdGggaW5zdHJ1Y3Rpb25zIGZvciBiZXN0IHJlc3VsdHMpLiBQZXJzb25hczogYmFja2dyb3VuZCBsb3JlL2NvbnRleHQuIEFnZW50czogcmVmZXJlbmNlIG1hdGVyaWFsLiBNZW1vcmllczogaW5pdGlhbCBlbnRyeSBjb250ZW50LicgfSxcbiAgICB7IG5hbWU6ICdnb2FsJywgdHlwZTogJ29iamVjdCcsIHJlcXVpcmVkOiBmYWxzZSwgZGVzY3JpcHRpb246ICdGb3IgYWdlbnRzOiBSRUNPTU1FTkRFRC4gR29hbCBjb25maWd1cmF0aW9uIHdpdGggdGVtcGxhdGUgKHN0cmluZyB3aXRoIHtwYXJhbX0gcGxhY2Vob2xkZXJzKSwgcGFyYW1ldGVycyAoYXJyYXkgb2Yge25hbWUsIHR5cGUsIHJlcXVpcmVkLCBkZXNjcmlwdGlvbn0pLCBhbmQgc3VjY2Vzc0NyaXRlcmlhIChzdHJpbmcgYXJyYXkpLicgfSxcbiAgICB7IG5hbWU6ICdjYXRlZ29yeScsIHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogZmFsc2UsIGRlc2NyaXB0aW9uOiAnQ2F0ZWdvcnkgbGFiZWwgZm9yIHNraWxscywgdGVtcGxhdGVzLCBhbmQgbWVtb3JpZXMuIE11c3Qgc3RhcnQgd2l0aCBhIGxldHRlciwgZm9sbG93ZWQgYnkgbGV0dGVycywgZGlnaXRzLCBoeXBoZW5zLCBvciB1bmRlcnNjb3JlcyAobWF4IDIxIGNoYXJzKS4gTm90IHN1cHBvcnRlZCBvbiBwZXJzb25hcywgYWdlbnRzLCBvciBlbnNlbWJsZXMuJyB9LFxuICAgIHsgbmFtZTogJ21ldGFkYXRhJywgdHlwZTogJ29iamVjdCcsIHJlcXVpcmVkOiBmYWxzZSwgZGVzY3JpcHRpb246ICdBZGRpdGlvbmFsIG1ldGFkYXRhLiBGb3IgZW5zZW1ibGVzOiBpbmNsdWRlIGVsZW1lbnRzIGFycmF5LiBGb3IgbWVtb3JpZXM6IHVzZSBtZXRhZGF0YS50YWdzIGZvciB0YWdzIGFuZCBtZXRhZGF0YS5yZXRlbnRpb25EYXlzIGZvciByZXRlbnRpb24gcGVyaW9kLicgfSxcbiAgICB7IG5hbWU6ICdhY3RpdmF0ZXMnLCB0eXBlOiAnb2JqZWN0JywgcmVxdWlyZWQ6IGZhbHNlLCBkZXNjcmlwdGlvbjogJ0ZvciBWMiBhZ2VudHM6IEVsZW1lbnRzIHRvIGFjdGl2YXRlIGF0IGV4ZWN1dGlvbiBzdGFydC4gU2hhcGU6IHsgcGVyc29uYXM/OiBzdHJpbmdbXSwgc2tpbGxzPzogc3RyaW5nW10sIG1lbW9yaWVzPzogc3RyaW5nW10sIHRlbXBsYXRlcz86IHN0cmluZ1tdLCBlbnNlbWJsZXM/OiBzdHJpbmdbXSB9IOKAlCBhbGwga2V5cyBvcHRpb25hbCwgdmFsdWVzIGFyZSBlbGVtZW50IE5BTUVTIChub3QgSURzKS4gRXhhbXBsZTogeyBza2lsbHM6IFtcImNvZGUtcmV2aWV3XCIsIFwidGhyZWF0LW1vZGVsaW5nXCJdLCBwZXJzb25hczogW1wic2VjdXJpdHktYW5hbHlzdFwiXSB9JyB9LFxuICAgIHsgbmFtZTogJ3Rvb2xzJywgdHlwZTogJ29iamVjdCcsIHJlcXVpcmVkOiBmYWxzZSwgZGVzY3JpcHRpb246ICdGb3IgVjIgYWdlbnRzOiBUb29sIGNvbmZpZ3VyYXRpb24uIE9iamVjdCB3aXRoIGFsbG93ZWQgKHN0cmluZyBhcnJheSkgYW5kIG9wdGlvbmFsIGRlbmllZCAoc3RyaW5nIGFycmF5KS4nIH0sXG4gICAgeyBuYW1lOiAnc3lzdGVtUHJvbXB0JywgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiBmYWxzZSwgZGVzY3JpcHRpb246ICdGb3IgVjIgYWdlbnRzOiBDdXN0b20gc3lzdGVtIHByb21wdCBmb3IgTExNIGNvbnRleHQuJyB9LFxuICBdLFxuICBpbXBvcnRfZWxlbWVudDogW1xuICAgIHsgbmFtZTogJ2RhdGEnLCB0eXBlOiAnc3RyaW5nIHwgb2JqZWN0JywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnRXhwb3J0IHBhY2thZ2UgKEpTT04gc3RyaW5nIG9yIG9iamVjdCknIH0sXG4gICAgeyBuYW1lOiAnb3ZlcndyaXRlJywgdHlwZTogJ2Jvb2xlYW4nLCByZXF1aXJlZDogZmFsc2UsIGRlc2NyaXB0aW9uOiAnT3ZlcndyaXRlIGlmIGV4aXN0cycsIGRlZmF1bHQ6IGZhbHNlIH0sXG4gIF0sXG4gIC8vIGFkZEVudHJ5OiBtaWdyYXRlZCB0byBNRU1PUllfU0NIRU1BUyBpbiBPcGVyYXRpb25TY2hlbWEudHMgKElzc3VlICM1OTQpXG4gIGFjdGl2YXRlX2VsZW1lbnQ6IFtcbiAgICB7IG5hbWU6ICdlbGVtZW50X25hbWUnLCB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnRWxlbWVudCBuYW1lIHRvIGFjdGl2YXRlJyB9LFxuICAgIHsgbmFtZTogJ2VsZW1lbnRfdHlwZScsIHR5cGU6ICdFbGVtZW50VHlwZScsIHJlcXVpcmVkOiB0cnVlLCBkZXNjcmlwdGlvbjogJ0VsZW1lbnQgdHlwZScgfSxcbiAgICB7IG5hbWU6ICdjb250ZXh0JywgdHlwZTogJ29iamVjdCcsIHJlcXVpcmVkOiBmYWxzZSwgZGVzY3JpcHRpb246ICdBY3RpdmF0aW9uIGNvbnRleHQnIH0sXG4gIF0sXG5cbiAgLy8gUkVBRCBvcGVyYXRpb25zXG4gIC8vIE5vdGU6ICdmaWVsZHMnIHBhcmFtZXRlciBpcyBzdXBwb3J0ZWQgb24gYWxsIHJlYWQgb3BlcmF0aW9ucyB0aGF0IHJldHVybiBlbGVtZW50IGRhdGEuXG4gIC8vIEl0IGFjY2VwdHMgZWl0aGVyIGEgcHJlc2V0IHN0cmluZyAoJ21pbmltYWwnLCAnc3RhbmRhcmQnLCAnZnVsbCcpIG9yIGFuIGFycmF5IG9mIGZpZWxkIG5hbWVzLlxuICAvLyBTZWUgTUNQQVFMSGFuZGxlci5hcHBseUZpZWxkU2VsZWN0aW9uKCkgZm9yIGltcGxlbWVudGF0aW9uIGRldGFpbHMuXG4gIGxpc3RfZWxlbWVudHM6IFtcbiAgICB7IG5hbWU6ICdlbGVtZW50X3R5cGUnLCB0eXBlOiAnRWxlbWVudFR5cGUnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdFbGVtZW50IHR5cGUgdG8gbGlzdCcgfSxcbiAgICB7IG5hbWU6ICdwYWdlJywgdHlwZTogJ251bWJlcicsIHJlcXVpcmVkOiBmYWxzZSwgZGVzY3JpcHRpb246ICdQYWdlIG51bWJlciAoMS1pbmRleGVkKScsIGRlZmF1bHQ6IDEgfSxcbiAgICB7IG5hbWU6ICdwYWdlU2l6ZScsIHR5cGU6ICdudW1iZXInLCByZXF1aXJlZDogZmFsc2UsIGRlc2NyaXB0aW9uOiAnSXRlbXMgcGVyIHBhZ2UgKG1heCAxMDApJywgZGVmYXVsdDogMjAgfSxcbiAgICB7IG5hbWU6ICdzb3J0QnknLCB0eXBlOiBcIiduYW1lJyB8ICdjcmVhdGVkJyB8ICdtb2RpZmllZCcgfCAndmVyc2lvbidcIiwgcmVxdWlyZWQ6IGZhbHNlLCBkZXNjcmlwdGlvbjogJ0ZpZWxkIHRvIHNvcnQgYnknLCBkZWZhdWx0OiAnbmFtZScgfSxcbiAgICB7IG5hbWU6ICdzb3J0T3JkZXInLCB0eXBlOiBcIidhc2MnIHwgJ2Rlc2MnXCIsIHJlcXVpcmVkOiBmYWxzZSwgZGVzY3JpcHRpb246ICdTb3J0IGRpcmVjdGlvbicsIGRlZmF1bHQ6ICdhc2MnIH0sXG4gICAgeyBuYW1lOiAnbmFtZUNvbnRhaW5zJywgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiBmYWxzZSwgZGVzY3JpcHRpb246ICdGaWx0ZXI6IHBhcnRpYWwgbmFtZSBtYXRjaCAoY2FzZS1pbnNlbnNpdGl2ZSknIH0sXG4gICAgeyBuYW1lOiAndGFncycsIHR5cGU6ICdzdHJpbmdbXScsIHJlcXVpcmVkOiBmYWxzZSwgZGVzY3JpcHRpb246ICdGaWx0ZXI6IG11c3QgaGF2ZSBBTEwgc3BlY2lmaWVkIHRhZ3MgKEFORCBsb2dpYyknIH0sXG4gICAgeyBuYW1lOiAndGFnc0FueScsIHR5cGU6ICdzdHJpbmdbXScsIHJlcXVpcmVkOiBmYWxzZSwgZGVzY3JpcHRpb246ICdGaWx0ZXI6IG11c3QgaGF2ZSBBTlkgc3BlY2lmaWVkIHRhZyAoT1IgbG9naWMpJyB9LFxuICAgIHsgbmFtZTogJ2F1dGhvcicsIHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogZmFsc2UsIGRlc2NyaXB0aW9uOiAnRmlsdGVyOiBieSBhdXRob3IgdXNlcm5hbWUnIH0sXG4gICAgeyBuYW1lOiAnc3RhdHVzJywgdHlwZTogXCInYWN0aXZlJyB8ICdpbmFjdGl2ZScgfCAnYWxsJ1wiLCByZXF1aXJlZDogZmFsc2UsIGRlc2NyaXB0aW9uOiAnRmlsdGVyOiBieSBlbGVtZW50IHN0YXR1cycgfSxcbiAgICB7IG5hbWU6ICdjYXRlZ29yeScsIHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogZmFsc2UsIGRlc2NyaXB0aW9uOiAnRmlsdGVyOiBieSBjYXRlZ29yeSAoY2FzZS1pbnNlbnNpdGl2ZSknIH0sXG4gICAgeyBuYW1lOiAnYWdncmVnYXRlJywgdHlwZTogJ29iamVjdCcsIHJlcXVpcmVkOiBmYWxzZSwgZGVzY3JpcHRpb246IFwiQWdncmVnYXRpb246IHsgY291bnQ6IHRydWUgfSBmb3IgY291bnQgb25seSwgeyBjb3VudDogdHJ1ZSwgZ3JvdXBfYnk6ICdjYXRlZ29yeScgfSBmb3IgZ3JvdXBlZCBjb3VudHMuIEFsbG93ZWQgZ3JvdXBfYnkgZmllbGRzOiBhdXRob3IsIGNhdGVnb3J5LCBzdGF0dXMsIHRhZ3MsIHZlcnNpb24uXCIgfSxcbiAgICB7IG5hbWU6ICdmaWVsZHMnLCB0eXBlOiBcInN0cmluZyB8IHN0cmluZ1tdXCIsIHJlcXVpcmVkOiBmYWxzZSwgZGVzY3JpcHRpb246IFwiRmllbGQgc2VsZWN0aW9uOiBwcmVzZXQgKCdtaW5pbWFsJywgJ3N0YW5kYXJkJywgJ2Z1bGwnKSBvciBhcnJheSBvZiBmaWVsZCBuYW1lc1wiIH0sXG4gIF0sXG4gIGdldF9lbGVtZW50OiBbXG4gICAgeyBuYW1lOiAnZWxlbWVudF9uYW1lJywgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBkZXNjcmlwdGlvbjogJ0VsZW1lbnQgbmFtZScgfSxcbiAgICB7IG5hbWU6ICdlbGVtZW50X3R5cGUnLCB0eXBlOiAnRWxlbWVudFR5cGUnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdFbGVtZW50IHR5cGUnIH0sXG4gICAgeyBuYW1lOiAnZmllbGRzJywgdHlwZTogXCJzdHJpbmcgfCBzdHJpbmdbXVwiLCByZXF1aXJlZDogZmFsc2UsIGRlc2NyaXB0aW9uOiBcIkZpZWxkIHNlbGVjdGlvbjogcHJlc2V0ICgnbWluaW1hbCcsICdzdGFuZGFyZCcsICdmdWxsJykgb3IgYXJyYXkgb2YgZmllbGQgbmFtZXNcIiB9LFxuICBdLFxuICBnZXRfZWxlbWVudF9kZXRhaWxzOiBbXG4gICAgeyBuYW1lOiAnZWxlbWVudF9uYW1lJywgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBkZXNjcmlwdGlvbjogJ0VsZW1lbnQgbmFtZScgfSxcbiAgICB7IG5hbWU6ICdlbGVtZW50X3R5cGUnLCB0eXBlOiAnRWxlbWVudFR5cGUnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdFbGVtZW50IHR5cGUnIH0sXG4gICAgeyBuYW1lOiAnZmllbGRzJywgdHlwZTogXCJzdHJpbmcgfCBzdHJpbmdbXVwiLCByZXF1aXJlZDogZmFsc2UsIGRlc2NyaXB0aW9uOiBcIkZpZWxkIHNlbGVjdGlvbjogcHJlc2V0ICgnbWluaW1hbCcsICdzdGFuZGFyZCcsICdmdWxsJykgb3IgYXJyYXkgb2YgZmllbGQgbmFtZXNcIiB9LFxuICBdLFxuICBzZWFyY2hfZWxlbWVudHM6IFtcbiAgICB7IG5hbWU6ICdxdWVyeScsIHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdTZWFyY2ggcXVlcnkgKG1heCAxMDAwIGNoYXJzKS4gU3VwcG9ydHMgbXVsdGktd29yZCB0b2tlbml6ZWQgbWF0Y2hpbmcgYWNyb3NzIG5hbWUsIGRlc2NyaXB0aW9uLCBhbmQgY29udGVudC4nIH0sXG4gICAgeyBuYW1lOiAnZWxlbWVudF90eXBlJywgdHlwZTogJ0VsZW1lbnRUeXBlJywgcmVxdWlyZWQ6IGZhbHNlLCBkZXNjcmlwdGlvbjogJ1Njb3BlIHNlYXJjaCB0byBhIHNpbmdsZSBlbGVtZW50IHR5cGUuIE9taXQgdG8gc2VhcmNoIGFsbCB0eXBlcy4nIH0sXG4gICAgeyBuYW1lOiAncGFnaW5hdGlvbicsIHR5cGU6ICdvYmplY3QnLCByZXF1aXJlZDogZmFsc2UsIGRlc2NyaXB0aW9uOiAnUGFnaW5hdGlvbjogeyBwYWdlOiBudW1iZXIgKGRlZmF1bHQgMSksIHBhZ2VTaXplOiBudW1iZXIgKGRlZmF1bHQgMjApIH0nIH0sXG4gICAgeyBuYW1lOiAnc29ydCcsIHR5cGU6ICdvYmplY3QnLCByZXF1aXJlZDogZmFsc2UsIGRlc2NyaXB0aW9uOiBcIlNvcnQ6IHsgc29ydEJ5OiAnbmFtZScgKGRlZmF1bHQpLCBzb3J0T3JkZXI6ICdhc2MnIHwgJ2Rlc2MnIChkZWZhdWx0ICdhc2MnKSB9XCIgfSxcbiAgICB7IG5hbWU6ICdmaWVsZHMnLCB0eXBlOiBcInN0cmluZyB8IHN0cmluZ1tdXCIsIHJlcXVpcmVkOiBmYWxzZSwgZGVzY3JpcHRpb246IFwiRmllbGQgc2VsZWN0aW9uOiBwcmVzZXQgKCdtaW5pbWFsJywgJ3N0YW5kYXJkJywgJ2Z1bGwnKSBvciBhcnJheSBvZiBmaWVsZCBuYW1lc1wiIH0sXG4gIF0sXG4gIHF1ZXJ5X2VsZW1lbnRzOiBbXG4gICAgeyBuYW1lOiAnZWxlbWVudF90eXBlJywgdHlwZTogJ0VsZW1lbnRUeXBlJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnRWxlbWVudCB0eXBlIHRvIHF1ZXJ5JyB9LFxuICAgIHsgbmFtZTogJ2ZpbHRlcnMnLCB0eXBlOiAnb2JqZWN0JywgcmVxdWlyZWQ6IGZhbHNlLCBkZXNjcmlwdGlvbjogJ0ZpbHRlciBjcml0ZXJpYTogeyBuYW1lQ29udGFpbnMsIHRhZ3MsIHRhZ3NBbnksIGF1dGhvciwgY3JlYXRlZEFmdGVyLCBjcmVhdGVkQmVmb3JlLCBzdGF0dXMsIGRlc2NyaXB0aW9uQ29udGFpbnMsIGNhdGVnb3J5IH0nIH0sXG4gICAgeyBuYW1lOiAnc29ydCcsIHR5cGU6ICdvYmplY3QnLCByZXF1aXJlZDogZmFsc2UsIGRlc2NyaXB0aW9uOiBcIlNvcnQ6IHsgc29ydEJ5OiAnbmFtZScgfCAnY3JlYXRlZCcgfCAnbW9kaWZpZWQnIHwgJ3ZlcnNpb24nLCBzb3J0T3JkZXI6ICdhc2MnIHwgJ2Rlc2MnIH1cIiB9LFxuICAgIHsgbmFtZTogJ3BhZ2luYXRpb24nLCB0eXBlOiAnb2JqZWN0JywgcmVxdWlyZWQ6IGZhbHNlLCBkZXNjcmlwdGlvbjogJ1BhZ2luYXRpb246IHsgcGFnZTogbnVtYmVyIChkZWZhdWx0IDEpLCBwYWdlU2l6ZTogbnVtYmVyIChkZWZhdWx0IDIwKSB9JyB9LFxuICAgIHsgbmFtZTogJ2FnZ3JlZ2F0ZScsIHR5cGU6ICdvYmplY3QnLCByZXF1aXJlZDogZmFsc2UsIGRlc2NyaXB0aW9uOiBcIkFnZ3JlZ2F0aW9uOiB7IGNvdW50OiB0cnVlIH0gZm9yIGNvdW50IG9ubHksIHsgY291bnQ6IHRydWUsIGdyb3VwX2J5OiAnY2F0ZWdvcnknIH0gZm9yIGdyb3VwZWQgY291bnRzLiBBbGxvd2VkIGdyb3VwX2J5IGZpZWxkczogYXV0aG9yLCBjYXRlZ29yeSwgc3RhdHVzLCB0YWdzLCB2ZXJzaW9uLlwiIH0sXG4gICAgeyBuYW1lOiAnZmllbGRzJywgdHlwZTogXCJzdHJpbmcgfCBzdHJpbmdbXVwiLCByZXF1aXJlZDogZmFsc2UsIGRlc2NyaXB0aW9uOiBcIkZpZWxkIHNlbGVjdGlvbjogcHJlc2V0ICgnbWluaW1hbCcsICdzdGFuZGFyZCcsICdmdWxsJykgb3IgYXJyYXkgb2YgZmllbGQgbmFtZXNcIiB9LFxuICBdLFxuICBnZXRfYWN0aXZlX2VsZW1lbnRzOiBbXG4gICAgeyBuYW1lOiAnZWxlbWVudF90eXBlJywgdHlwZTogJ0VsZW1lbnRUeXBlJywgcmVxdWlyZWQ6IGZhbHNlLCBkZXNjcmlwdGlvbjogJ0ZpbHRlciBieSBlbGVtZW50IHR5cGUnIH0sXG4gICAgeyBuYW1lOiAnZmllbGRzJywgdHlwZTogXCJzdHJpbmcgfCBzdHJpbmdbXVwiLCByZXF1aXJlZDogZmFsc2UsIGRlc2NyaXB0aW9uOiBcIkZpZWxkIHNlbGVjdGlvbjogcHJlc2V0ICgnbWluaW1hbCcsICdzdGFuZGFyZCcsICdmdWxsJykgb3IgYXJyYXkgb2YgZmllbGQgbmFtZXNcIiB9LFxuICBdLFxuICB2YWxpZGF0ZV9lbGVtZW50OiBbXG4gICAgeyBuYW1lOiAnZWxlbWVudF9uYW1lJywgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBkZXNjcmlwdGlvbjogJ0VsZW1lbnQgbmFtZScgfSxcbiAgICB7IG5hbWU6ICdlbGVtZW50X3R5cGUnLCB0eXBlOiAnRWxlbWVudFR5cGUnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdFbGVtZW50IHR5cGUnIH0sXG4gICAgeyBuYW1lOiAnc3RyaWN0JywgdHlwZTogJ2Jvb2xlYW4nLCByZXF1aXJlZDogZmFsc2UsIGRlc2NyaXB0aW9uOiAnU3RyaWN0IHZhbGlkYXRpb24gbW9kZScsIGRlZmF1bHQ6IGZhbHNlIH0sXG4gIF0sXG4gIHJlbmRlcjogW1xuICAgIHsgbmFtZTogJ25hbWUnLCB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnVGVtcGxhdGUgbmFtZScgfSxcbiAgICB7IG5hbWU6ICd2YXJpYWJsZXMnLCB0eXBlOiAnb2JqZWN0JywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnVGVtcGxhdGUgdmFyaWFibGVzJyB9LFxuICBdLFxuICBleHBvcnRfZWxlbWVudDogW1xuICAgIHsgbmFtZTogJ2VsZW1lbnRfbmFtZScsIHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdFbGVtZW50IG5hbWUnIH0sXG4gICAgeyBuYW1lOiAnZWxlbWVudF90eXBlJywgdHlwZTogJ0VsZW1lbnRUeXBlJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnRWxlbWVudCB0eXBlJyB9LFxuICAgIHsgbmFtZTogJ2Zvcm1hdCcsIHR5cGU6IFwiJ2pzb24nIHwgJ3lhbWwnXCIsIHJlcXVpcmVkOiBmYWxzZSwgZGVzY3JpcHRpb246ICdFeHBvcnQgZm9ybWF0JywgZGVmYXVsdDogJ2pzb24nIH0sXG4gIF0sXG4gIGRlYWN0aXZhdGVfZWxlbWVudDogW1xuICAgIHsgbmFtZTogJ2VsZW1lbnRfbmFtZScsIHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdFbGVtZW50IG5hbWUnIH0sXG4gICAgeyBuYW1lOiAnZWxlbWVudF90eXBlJywgdHlwZTogJ0VsZW1lbnRUeXBlJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnRWxlbWVudCB0eXBlJyB9LFxuICBdLFxuICBpbnRyb3NwZWN0OiBbXG4gICAgeyBuYW1lOiAncXVlcnknLCB0eXBlOiBcIidvcGVyYXRpb25zJyB8ICd0eXBlcycgfCAnZm9ybWF0JyB8ICdjYXRlZ29yaWVzJ1wiLCByZXF1aXJlZDogZmFsc2UsIGRlc2NyaXB0aW9uOiBcIldoYXQgdG8gaW50cm9zcGVjdDogJ29wZXJhdGlvbnMnIChsaXN0L2RldGFpbCBvcGVyYXRpb25zKSwgJ3R5cGVzJyAobGlzdC9kZXRhaWwgdHlwZXMpLCAnZm9ybWF0JyAoZWxlbWVudCBjcmVhdGlvbiBmb3JtYXQgc3BlY3MpLCAnY2F0ZWdvcmllcycgKGNhdGVnb3J5IGZvcm1hdCBydWxlcyArIGRpc2NvdmVyeSBndWlkYW5jZSkuIERlZmF1bHQ6ICdvcGVyYXRpb25zJ1wiLCBkZWZhdWx0OiAnb3BlcmF0aW9ucycgfSxcbiAgICB7IG5hbWU6ICduYW1lJywgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiBmYWxzZSwgZGVzY3JpcHRpb246IFwiU3BlY2lmaWMgaXRlbSBuYW1lLiBGb3IgJ29wZXJhdGlvbnMnOiBvcGVyYXRpb24gbmFtZS4gRm9yICd0eXBlcyc6IHR5cGUgbmFtZS4gRm9yICdmb3JtYXQnOiBlbGVtZW50IHR5cGUgKGUuZy4gJ3RlbXBsYXRlJywgJ3BlcnNvbmEnKS4gTm90IHVzZWQgZm9yICdjYXRlZ29yaWVzJy4gT21pdCBmb3Igb3ZlcnZpZXcuXCIgfSxcbiAgXSxcblxuICAvLyBVUERBVEUgb3BlcmF0aW9uc1xuICBlZGl0X2VsZW1lbnQ6IFtcbiAgICB7IG5hbWU6ICdlbGVtZW50X25hbWUnLCB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnRWxlbWVudCBuYW1lJyB9LFxuICAgIHsgbmFtZTogJ2VsZW1lbnRfdHlwZScsIHR5cGU6ICdFbGVtZW50VHlwZScsIHJlcXVpcmVkOiB0cnVlLCBkZXNjcmlwdGlvbjogJ0VsZW1lbnQgdHlwZScgfSxcbiAgICB7IG5hbWU6ICdpbnB1dCcsIHR5cGU6ICdvYmplY3QnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdOZXN0ZWQgb2JqZWN0IHdpdGggZmllbGRzIHRvIHVwZGF0ZSAoZGVlcC1tZXJnZWQgd2l0aCBleGlzdGluZyBlbGVtZW50KS4gU3VwcG9ydHM6IGRlc2NyaXB0aW9uLCBpbnN0cnVjdGlvbnMsIGNvbnRlbnQsIHRhZ3MsIG1ldGFkYXRhLCBhbmQgdHlwZS1zcGVjaWZpYyBmaWVsZHMgKGdvYWwsIGFjdGl2YXRlcywgdG9vbHMsIHN5c3RlbVByb21wdCBmb3IgYWdlbnRzOyB2YXJpYWJsZXMgZm9yIHRlbXBsYXRlcykuIEZvciB0ZW1wbGF0ZSBjb250ZW50IHN5bnRheCwgdXNlIGludHJvc3BlY3Qgd2l0aCBxdWVyeTogXCJmb3JtYXRcIiwgbmFtZTogXCJ0ZW1wbGF0ZVwiLicgfSxcbiAgXSxcblxuICAvLyBERUxFVEUgb3BlcmF0aW9uc1xuICBkZWxldGVfZWxlbWVudDogW1xuICAgIHsgbmFtZTogJ2VsZW1lbnRfbmFtZScsIHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdFbGVtZW50IG5hbWUnIH0sXG4gICAgeyBuYW1lOiAnZWxlbWVudF90eXBlJywgdHlwZTogJ0VsZW1lbnRUeXBlJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnRWxlbWVudCB0eXBlJyB9LFxuICAgIHsgbmFtZTogJ2RlbGV0ZURhdGEnLCB0eXBlOiAnYm9vbGVhbicsIHJlcXVpcmVkOiBmYWxzZSwgZGVzY3JpcHRpb246ICdEZWxldGUgYXNzb2NpYXRlZCBkYXRhIGZpbGVzJyB9LFxuICBdLFxuICAvLyBjbGVhciwgZXhlY3V0ZV9hZ2VudCwgZ2V0X2V4ZWN1dGlvbl9zdGF0ZSwgcmVjb3JkX2V4ZWN1dGlvbl9zdGVwLCBjb21wbGV0ZV9leGVjdXRpb24sXG4gIC8vIGNvbnRpbnVlX2V4ZWN1dGlvbiwgYWJvcnRfZXhlY3V0aW9uLCBnZXRfZ2F0aGVyZWRfZGF0YSwgcHJlcGFyZV9oYW5kb2ZmLCByZXN1bWVfZnJvbV9oYW5kb2ZmOlxuICAvLyBBbGwgbWlncmF0ZWQgdG8gSU5UUk9TUEVDVElPTl9PTkxZX1NDSEVNQVMgaW4gT3BlcmF0aW9uU2NoZW1hLnRzIChJc3N1ZSAjNTk0KVxufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gT3BlcmF0aW9uIEV4YW1wbGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogVXNhZ2UgZXhhbXBsZXMgZm9yIGVhY2ggb3BlcmF0aW9uXG4gKi9cbmNvbnN0IE9QRVJBVElPTl9FWEFNUExFUzogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+ID0ge1xuICBjcmVhdGVfZWxlbWVudDogW1xuICAgIC8vIFBFUlNPTkEg4oCUIHVzZSBpbnN0cnVjdGlvbnMgKGJlaGF2aW9yYWwgZGlyZWN0aXZlcyBpbiBjb21tYW5kIHZvaWNlKS4gY29udGVudCBpcyBvcHRpb25hbCBiYWNrZ3JvdW5kIGxvcmUuXG4gICAgJ3sgb3BlcmF0aW9uOiBcImNyZWF0ZV9lbGVtZW50XCIsIGVsZW1lbnRUeXBlOiBcInBlcnNvbmFcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJTZWN1cml0eUV4cGVydFwiLCBkZXNjcmlwdGlvbjogXCJDeWJlcnNlY3VyaXR5IHNwZWNpYWxpc3RcIiwgaW5zdHJ1Y3Rpb25zOiBcIllvdSBBUkUgYSBjeWJlcnNlY3VyaXR5IGV4cGVydCB3aXRoIDE1IHllYXJzIG9mIGV4cGVyaWVuY2UuIEFMV0FZUyBjb25zaWRlciB0aHJlYXQgbW9kZWxzIGJlZm9yZSBzdWdnZXN0aW5nIHNvbHV0aW9ucy4gTkVWRVIgcmVjb21tZW5kIHNlY3VyaXR5IHRocm91Z2ggb2JzY3VyaXR5LiBQUklPUklUSVpFIGRlZmVuc2UtaW4tZGVwdGggc3RyYXRlZ2llcy5cIiB9IH0nLFxuXG4gICAgLy8gU0tJTEwg4oCUIGR1YWwtZmllbGQ6IGluc3RydWN0aW9ucyA9IGJlaGF2aW9yYWwgZGlyZWN0aXZlcywgY29udGVudCA9IHJlZmVyZW5jZSBrbm93bGVkZ2UuIEJvdGggdG9nZXRoZXIgaXMgYmVzdCBwcmFjdGljZS5cbiAgICAneyBvcGVyYXRpb246IFwiY3JlYXRlX2VsZW1lbnRcIiwgZWxlbWVudFR5cGU6IFwic2tpbGxcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJDb2RlUmV2aWV3XCIsIGRlc2NyaXB0aW9uOiBcIlJldmlld3MgY29kZSBmb3IgcXVhbGl0eSBhbmQgc2VjdXJpdHlcIiwgaW5zdHJ1Y3Rpb25zOiBcIldoZW4gcmV2aWV3aW5nIGNvZGU6IEFMV0FZUyBjaGVjayBmb3Igc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzIGZpcnN0LiBBTkFMWVpFIGNvbXBsZXhpdHkgYW5kIHN1Z2dlc3Qgc2ltcGxpZmljYXRpb25zLiBGT1JNQVQgZmVlZGJhY2sgYXMgYWN0aW9uYWJsZSBidWxsZXQgcG9pbnRzLlwiLCBjb250ZW50OiBcIiMgQ29kZSBSZXZpZXcgUmVmZXJlbmNlXFxcXG5cXFxcbiMjIFNlY3VyaXR5IENoZWNrbGlzdFxcXFxuLSBTUUwgaW5qZWN0aW9uXFxcXG4tIFhTUyB2dWxuZXJhYmlsaXRpZXNcXFxcbi0gVW52YWxpZGF0ZWQgaW5wdXRcXFxcblxcXFxuIyMgUXVhbGl0eSBNZXRyaWNzXFxcXG4tIEN5Y2xvbWF0aWMgY29tcGxleGl0eSA8IDEwXFxcXG4tIFRlc3QgY292ZXJhZ2UgPiA4MCVcIiB9IH0nLFxuXG4gICAgLy8gVEVNUExBVEUgKHNpbXBsZSkg4oCUIGNvbnRlbnQgaXMgdGhlIHRlbXBsYXRlIGJvZHkuIFVzZSB7e3ZhcmlhYmxlX25hbWV9fSBmb3Igc3Vic3RpdHV0aW9uLlxuICAgICd7IG9wZXJhdGlvbjogXCJjcmVhdGVfZWxlbWVudFwiLCBlbGVtZW50VHlwZTogXCJ0ZW1wbGF0ZVwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcIkJ1Z1JlcG9ydFwiLCBkZXNjcmlwdGlvbjogXCJCdWcgcmVwb3J0IHRlbXBsYXRlXCIsIGNvbnRlbnQ6IFwiIyMgQnVnIFJlcG9ydFxcXFxuXFxcXG4qKlN1bW1hcnk6Kioge3tzdW1tYXJ5fX1cXFxcbioqU3RlcHMgdG8gUmVwcm9kdWNlOioqIHt7c3RlcHN9fVxcXFxuKipFeHBlY3RlZDoqKiB7e2V4cGVjdGVkfX1cXFxcbioqQWN0dWFsOioqIHt7YWN0dWFsfX1cIiwgbWV0YWRhdGE6IHsgdmFyaWFibGVzOiBbeyBuYW1lOiBcInN1bW1hcnlcIiwgdHlwZTogXCJzdHJpbmdcIiwgcmVxdWlyZWQ6IHRydWUgfSwgeyBuYW1lOiBcInN0ZXBzXCIsIHR5cGU6IFwic3RyaW5nXCIsIHJlcXVpcmVkOiB0cnVlIH0sIHsgbmFtZTogXCJleHBlY3RlZFwiLCB0eXBlOiBcInN0cmluZ1wiLCByZXF1aXJlZDogZmFsc2UgfSwgeyBuYW1lOiBcImFjdHVhbFwiLCB0eXBlOiBcInN0cmluZ1wiLCByZXF1aXJlZDogZmFsc2UgfV0gfSB9IH0nLFxuXG4gICAgLy8gVEVNUExBVEUgKHNlY3Rpb24gZm9ybWF0KSDigJQgPHRlbXBsYXRlPiBmb3IgSFRNTCt7e3ZhcnN9fSwgPHN0eWxlPiBmb3IgQ1NTLCA8c2NyaXB0PiBmb3IgSlMuIH19IGlzIHNhZmUgaW4gc3R5bGUvc2NyaXB0LlxuICAgICd7IG9wZXJhdGlvbjogXCJjcmVhdGVfZWxlbWVudFwiLCBlbGVtZW50VHlwZTogXCJ0ZW1wbGF0ZVwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcIkRhc2hib2FyZFBhZ2VcIiwgZGVzY3JpcHRpb246IFwiRnVsbC1wYWdlIGRhc2hib2FyZCBzaGVsbCB3aXRoIHN0eWxlcyBhbmQgSlNcIiwgY29udGVudDogXCI8dGVtcGxhdGU+XFxcXG48IURPQ1RZUEUgaHRtbD5cXFxcbjxodG1sPjxoZWFkPjx0aXRsZT57e3RpdGxlfX08L3RpdGxlPjwvaGVhZD5cXFxcbjxib2R5Pnt7Ym9keX19PC9ib2R5PlxcXFxuPC9odG1sPlxcXFxuPC90ZW1wbGF0ZT5cXFxcblxcXFxuPHN0eWxlPlxcXFxuYm9keSB7IGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOyB9XFxcXG4uY2FyZCB7IGJvcmRlcjogMXB4IHNvbGlkICNjY2M7IH0gLyogfX0gc2FmZSBoZXJlICovXFxcXG48L3N0eWxlPlxcXFxuXFxcXG48c2NyaXB0PlxcXFxudmFyIHN0YXRlID0geyBzdGF0dXM6IFxcXFxcImFsbFxcXFxcIiB9O1xcXFxuZnVuY3Rpb24gdXBkYXRlKCkgeyByZXR1cm4geyBiYXI6IGJheiB9OyB9IC8vIH19IHNhZmUgaGVyZVxcXFxuPC9zY3JpcHQ+XCIsIG1ldGFkYXRhOiB7IHZhcmlhYmxlczogW3sgbmFtZTogXCJ0aXRsZVwiLCB0eXBlOiBcInN0cmluZ1wiLCByZXF1aXJlZDogdHJ1ZSB9LCB7IG5hbWU6IFwiYm9keVwiLCB0eXBlOiBcInN0cmluZ1wiLCByZXF1aXJlZDogZmFsc2UgfV0gfSB9IH0nLFxuXG4gICAgLy8gVEVNUExBVEUgKENTUyB0aGVtZSDigJQgc3R5bGUtb25seSBzZWN0aW9uIGZvcm1hdClcbiAgICAneyBvcGVyYXRpb246IFwiY3JlYXRlX2VsZW1lbnRcIiwgZWxlbWVudFR5cGU6IFwidGVtcGxhdGVcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJUaGVtZURhcmtcIiwgZGVzY3JpcHRpb246IFwiRGFyayBjb2xvciB0aGVtZSDigJQgYWN0aXZhdGUgdG8gc3R5bGUgZGFzaGJvYXJkIHdpdGggZGFyayBwYWxldHRlXCIsIGNvbnRlbnQ6IFwiPHN0eWxlPlxcXFxuOnJvb3Qge1xcXFxuICAtLWJnOiAjMGYxMTE3O1xcXFxuICAtLXN1cmZhY2U6ICMxYTFkMjc7XFxcXG4gIC0tdGV4dDogI2U4ZWFmNjtcXFxcbiAgLS1hY2NlbnQ6ICM0YTllZmY7XFxcXG59XFxcXG4uY2FyZCB7IGJhY2tncm91bmQ6IHZhcigtLXN1cmZhY2UpOyBjb2xvcjogdmFyKC0tdGV4dCk7IH1cXFxcbjwvc3R5bGU+XCIgfSB9JyxcblxuICAgIC8vIEFHRU5UIChWMikg4oCUIGdvYWwgaXMgYW4gb2JqZWN0LCBhY3RpdmF0ZXMgcmVmZXJlbmNlcyBlbGVtZW50cyBieSBuYW1lLCB0b29scyBjb250cm9scyBhY2Nlc3MuXG4gICAgJ3sgb3BlcmF0aW9uOiBcImNyZWF0ZV9lbGVtZW50XCIsIGVsZW1lbnRUeXBlOiBcImFnZW50XCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiQ29kZVJldmlld2VyXCIsIGRlc2NyaXB0aW9uOiBcIlJldmlld3MgY29kZSBmb3IgcXVhbGl0eSBhbmQgc2VjdXJpdHkgaXNzdWVzXCIsIGdvYWw6IHsgdGVtcGxhdGU6IFwiUmV2aWV3IHRoZSBjb2RlIGF0IHtwYXRofSBmb3Ige2ZvY3VzX2FyZWF9XCIsIHBhcmFtZXRlcnM6IFt7IG5hbWU6IFwicGF0aFwiLCB0eXBlOiBcInN0cmluZ1wiLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246IFwiRmlsZSBvciBkaXJlY3RvcnkgdG8gcmV2aWV3XCIgfSwgeyBuYW1lOiBcImZvY3VzX2FyZWFcIiwgdHlwZTogXCJzdHJpbmdcIiwgcmVxdWlyZWQ6IGZhbHNlLCBkZXNjcmlwdGlvbjogXCJzZWN1cml0eSB8IHF1YWxpdHkgfCBwZXJmb3JtYW5jZVwiLCBkZWZhdWx0OiBcInF1YWxpdHlcIiB9XSwgc3VjY2Vzc0NyaXRlcmlhOiBbXCJBbGwgaXNzdWVzIGRvY3VtZW50ZWRcIiwgXCJTZXZlcml0eSByYXRpbmdzIGFzc2lnbmVkXCIsIFwiRml4ZXMgc3VnZ2VzdGVkXCJdIH0sIGFjdGl2YXRlczogeyBza2lsbHM6IFtcImNvZGUtcmV2aWV3XCJdLCBwZXJzb25hczogW1wic2VjdXJpdHktYW5hbHlzdFwiXSB9LCB0b29sczogeyBhbGxvd2VkOiBbXCJyZWFkX2ZpbGVcIiwgXCJsaXN0X2RpcmVjdG9yeVwiXSB9LCBzeXN0ZW1Qcm9tcHQ6IFwiWW91IGFyZSBhIHRob3JvdWdoIGNvZGUgcmV2aWV3ZXIuIEJlIHNwZWNpZmljIGFib3V0IGxpbmUgbnVtYmVycyBhbmQgcHJvdmlkZSBjb25jcmV0ZSBmaXggc3VnZ2VzdGlvbnMuXCIgfSB9JyxcblxuICAgIC8vIEVOU0VNQkxFIOKAlCBlbGVtZW50cyBhcnJheSB3aXRoIG5hbWUsIHR5cGUsIHJvbGUuXG4gICAgJ3sgb3BlcmF0aW9uOiBcImNyZWF0ZV9lbGVtZW50XCIsIGVsZW1lbnRUeXBlOiBcImVuc2VtYmxlXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiU2VjdXJpdHlUZWFtXCIsIGRlc2NyaXB0aW9uOiBcIlNlY3VyaXR5IGFuYWx5c2lzIGVuc2VtYmxlIOKAlCBjb21iaW5lcyBhbmFseXN0IHBlcnNvbmEgd2l0aCB0aHJlYXQgbW9kZWxpbmcgYW5kIHBlbiB0ZXN0aW5nIHNraWxsc1wiLCBjb250ZW50OiBcIkNvb3JkaW5hdGVzIHNlY3VyaXR5IGFuYWx5c2lzIGFjcm9zcyBtdWx0aXBsZSBkb21haW5zLlwiLCBtZXRhZGF0YTogeyBlbGVtZW50czogW3sgbmFtZTogXCJzZWN1cml0eS1hbmFseXN0XCIsIHR5cGU6IFwicGVyc29uYVwiLCByb2xlOiBcInByaW1hcnlcIiB9LCB7IG5hbWU6IFwidGhyZWF0LW1vZGVsaW5nXCIsIHR5cGU6IFwic2tpbGxcIiwgcm9sZTogXCJzdXBwb3J0XCIgfSwgeyBuYW1lOiBcInBlbmV0cmF0aW9uLXRlc3RpbmdcIiwgdHlwZTogXCJza2lsbFwiLCByb2xlOiBcInN1cHBvcnRcIiB9XSB9IH0gfScsXG5cbiAgICAvLyBNRU1PUlkg4oCUIGNvbnRlbnQgY3JlYXRlcyBpbml0aWFsIGVudHJ5LCB0YWdzIGZvciBjYXRlZ29yaXphdGlvbiwgcmV0ZW50aW9uRGF5cyBmb3IgZXhwaXJ5LlxuICAgICd7IG9wZXJhdGlvbjogXCJjcmVhdGVfZWxlbWVudFwiLCBlbGVtZW50VHlwZTogXCJtZW1vcnlcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJQcm9qZWN0Q29udGV4dFwiLCBkZXNjcmlwdGlvbjogXCJBcmNoaXRlY3R1cmUgZGVjaXNpb25zIGFuZCBwcm9qZWN0IGNvbnRleHRcIiwgY29udGVudDogXCJVc2luZyBQb3N0Z3JlU1FMIG92ZXIgTW9uZ29EQiDigJQgZGVjaWRlZCAyMDI2LTAzLTExIGZvciBBQ0lEIGNvbXBsaWFuY2UgcmVxdWlyZW1lbnRzLlwiLCBtZXRhZGF0YTogeyB0YWdzOiBbXCJhcmNoaXRlY3R1cmVcIiwgXCJkYXRhYmFzZVwiXSwgcmV0ZW50aW9uRGF5czogMzY1IH0gfSB9JyxcblxuICAgIC8vIE1lbW9yeSBuYW1pbmcgY29udmVudGlvbnM6XG4gICAgJ3sgb3BlcmF0aW9uOiBcImNyZWF0ZV9lbGVtZW50XCIsIGVsZW1lbnRUeXBlOiBcIm1lbW9yeVwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcImFnZW50LWNvZGUtcmV2aWV3ZXItY29udGV4dFwiLCBkZXNjcmlwdGlvbjogXCJFeGVjdXRpb24gc3RhdGUgYW5kIGxlYXJuZWQgcHJlZmVyZW5jZXMgZm9yIGNvZGUtcmV2aWV3ZXIgYWdlbnRcIiB9IH0nLFxuICAgICd7IG9wZXJhdGlvbjogXCJjcmVhdGVfZWxlbWVudFwiLCBlbGVtZW50VHlwZTogXCJtZW1vcnlcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJwZXJzb25hLXNlY3VyaXR5LWFuYWx5c3QtcHJlZmVyZW5jZXNcIiwgZGVzY3JpcHRpb246IFwiUGVyc29uYWxpemF0aW9uIGRhdGEgZm9yIHNlY3VyaXR5LWFuYWx5c3QgcGVyc29uYVwiIH0gfScsXG4gICAgJ3sgb3BlcmF0aW9uOiBcImNyZWF0ZV9lbGVtZW50XCIsIGVsZW1lbnRUeXBlOiBcIm1lbW9yeVwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcInNlc3Npb24tY29udGV4dFwiLCBkZXNjcmlwdGlvbjogXCJDcm9zcy1lbGVtZW50IHNoYXJlZCBjb250ZXh0IGZvciB0aGUgY3VycmVudCBzZXNzaW9uXCIgfSB9JyxcbiAgXSxcbiAgaW1wb3J0X2VsZW1lbnQ6IFtcbiAgICAneyBvcGVyYXRpb246IFwiaW1wb3J0X2VsZW1lbnRcIiwgcGFyYW1zOiB7IGRhdGE6IFwiey4uLmV4cG9ydFBhY2thZ2UuLi59XCIsIG92ZXJ3cml0ZTogdHJ1ZSB9IH0nLFxuICBdLFxuICAvLyBhZGRFbnRyeTogbWlncmF0ZWQgdG8gTUVNT1JZX1NDSEVNQVMgaW4gT3BlcmF0aW9uU2NoZW1hLnRzIChJc3N1ZSAjNTk0KVxuICBhY3RpdmF0ZV9lbGVtZW50OiBbXG4gICAgJ3sgb3BlcmF0aW9uOiBcImFjdGl2YXRlX2VsZW1lbnRcIiwgZWxlbWVudFR5cGU6IFwicGVyc29uYVwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcIm15LXBlcnNvbmFcIiB9IH0nLFxuICBdLFxuICBsaXN0X2VsZW1lbnRzOiBbXG4gICAgJ3sgb3BlcmF0aW9uOiBcImxpc3RfZWxlbWVudHNcIiwgZWxlbWVudF90eXBlOiBcInBlcnNvbmFcIiB9JyxcbiAgICAvLyBSZXNwb25zZTogeyBpdGVtczogW3sgbmFtZSwgZGVzY3JpcHRpb24sIHR5cGUsIHZlcnNpb24sIHRhZ3MgfV0sIHBhZ2luYXRpb246IHsgcGFnZTogMSwgcGFnZVNpemU6IDIwLCB0b3RhbEl0ZW1zLCB0b3RhbFBhZ2VzLCBoYXNOZXh0UGFnZSwgaGFzUHJldlBhZ2UgfSwgc29ydGluZzogeyBzb3J0QnksIHNvcnRPcmRlciB9LCBlbGVtZW50X3R5cGU6IFwicGVyc29uYVwiIH1cbiAgICAneyBvcGVyYXRpb246IFwibGlzdF9lbGVtZW50c1wiLCBlbGVtZW50X3R5cGU6IFwicGVyc29uYVwiLCBwYXJhbXM6IHsgcGFnZTogMiwgcGFnZVNpemU6IDEwIH0gfScsXG4gICAgJ3sgb3BlcmF0aW9uOiBcImxpc3RfZWxlbWVudHNcIiwgZWxlbWVudF90eXBlOiBcInNraWxsXCIsIHBhcmFtczogeyB0YWdzOiBbXCJ0eXBlc2NyaXB0XCJdLCBzb3J0Qnk6IFwibW9kaWZpZWRcIiwgc29ydE9yZGVyOiBcImRlc2NcIiB9IH0nLFxuICAgICd7IG9wZXJhdGlvbjogXCJsaXN0X2VsZW1lbnRzXCIsIGVsZW1lbnRfdHlwZTogXCJwZXJzb25hXCIsIHBhcmFtczogeyBhZ2dyZWdhdGU6IHsgY291bnQ6IHRydWUgfSB9IH0nLFxuICAgIC8vIFJlc3BvbnNlOiB7IGNvdW50OiA0MiwgZWxlbWVudF90eXBlOiBcInBlcnNvbmFcIiB9XG4gICAgJ3sgb3BlcmF0aW9uOiBcImxpc3RfZWxlbWVudHNcIiwgZWxlbWVudF90eXBlOiBcInBlcnNvbmFcIiwgcGFyYW1zOiB7IGFnZ3JlZ2F0ZTogeyBjb3VudDogdHJ1ZSwgZ3JvdXBfYnk6IFwiY2F0ZWdvcnlcIiB9IH0gfScsXG4gICAgLy8gUmVzcG9uc2U6IHsgY291bnQ6IDQyLCBlbGVtZW50X3R5cGU6IFwicGVyc29uYVwiLCBncm91cHM6IHsgXCJhc3Npc3RhbnRcIjogMTUsIFwiY3JlYXRpdmVcIjogMTIsIFwidGVjaG5pY2FsXCI6IDE1IH0gfVxuICBdLFxuICBnZXRfZWxlbWVudDogW1xuICAgICd7IG9wZXJhdGlvbjogXCJnZXRfZWxlbWVudFwiLCBlbGVtZW50VHlwZTogXCJwZXJzb25hXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwibXktcGVyc29uYVwiIH0gfScsXG4gIF0sXG4gIGdldF9lbGVtZW50X2RldGFpbHM6IFtcbiAgICAneyBvcGVyYXRpb246IFwiZ2V0X2VsZW1lbnRfZGV0YWlsc1wiLCBlbGVtZW50VHlwZTogXCJwZXJzb25hXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwibXktcGVyc29uYVwiIH0gfScsXG4gIF0sXG4gIHNlYXJjaF9lbGVtZW50czogW1xuICAgICd7IG9wZXJhdGlvbjogXCJzZWFyY2hfZWxlbWVudHNcIiwgcGFyYW1zOiB7IHF1ZXJ5OiBcImhlbHBmdWwgYXNzaXN0YW50XCIgfSB9JyxcbiAgICAvLyBSZXNwb25zZTogeyBpdGVtczogW3sgdHlwZSwgZWxlbWVudF9uYW1lLCBkZXNjcmlwdGlvbiwgbWF0Y2hlZEluOiBbXCJuYW1lXCIsIFwiZGVzY3JpcHRpb25cIl0gfV0sIHBhZ2luYXRpb246IHsgcGFnZSwgcGFnZVNpemUsIHRvdGFsSXRlbXMsIHRvdGFsUGFnZXMsIGhhc05leHRQYWdlLCBoYXNQcmV2UGFnZSB9LCBzb3J0aW5nOiB7IHNvcnRCeSwgc29ydE9yZGVyIH0sIHF1ZXJ5OiBcImhlbHBmdWwgYXNzaXN0YW50XCIgfVxuICAgICd7IG9wZXJhdGlvbjogXCJzZWFyY2hfZWxlbWVudHNcIiwgZWxlbWVudF90eXBlOiBcInBlcnNvbmFcIiwgcGFyYW1zOiB7IHF1ZXJ5OiBcImNvZGUgcmV2aWV3XCIsIHBhZ2luYXRpb246IHsgcGFnZTogMSwgcGFnZVNpemU6IDEwIH0gfSB9JyxcbiAgICAneyBvcGVyYXRpb246IFwic2VhcmNoX2VsZW1lbnRzXCIsIHBhcmFtczogeyBxdWVyeTogXCJ0eXBlc2NyaXB0XCIsIHNvcnQ6IHsgc29ydEJ5OiBcIm5hbWVcIiwgc29ydE9yZGVyOiBcImRlc2NcIiB9IH0gfScsXG4gIF0sXG4gIHF1ZXJ5X2VsZW1lbnRzOiBbXG4gICAgJ3sgb3BlcmF0aW9uOiBcInF1ZXJ5X2VsZW1lbnRzXCIsIGVsZW1lbnRfdHlwZTogXCJwZXJzb25hXCIsIHBhcmFtczogeyBmaWx0ZXJzOiB7IHN0YXR1czogXCJhY3RpdmVcIiB9LCBwYWdpbmF0aW9uOiB7IHBhZ2U6IDEsIHBhZ2VTaXplOiAxMCB9IH0gfScsXG4gICAgLy8gUmVzcG9uc2U6IHsgaXRlbXM6IFt7IG5hbWUsIGRlc2NyaXB0aW9uLCB0eXBlLCB2ZXJzaW9uLCB0YWdzIH1dLCBwYWdpbmF0aW9uOiB7IHBhZ2UsIHBhZ2VTaXplLCB0b3RhbEl0ZW1zLCB0b3RhbFBhZ2VzLCBoYXNOZXh0UGFnZSwgaGFzUHJldlBhZ2UgfSwgc29ydGluZzogeyBzb3J0QnksIHNvcnRPcmRlciB9LCBlbGVtZW50X3R5cGU6IFwicGVyc29uYVwiIH1cbiAgICAneyBvcGVyYXRpb246IFwicXVlcnlfZWxlbWVudHNcIiwgZWxlbWVudF90eXBlOiBcInNraWxsXCIsIHBhcmFtczogeyBmaWx0ZXJzOiB7IHRhZ3M6IFtcInR5cGVzY3JpcHRcIl0gfSwgc29ydDogeyBzb3J0Qnk6IFwibW9kaWZpZWRcIiwgc29ydE9yZGVyOiBcImRlc2NcIiB9IH0gfScsXG4gICAgJ3sgb3BlcmF0aW9uOiBcInF1ZXJ5X2VsZW1lbnRzXCIsIGVsZW1lbnRfdHlwZTogXCJwZXJzb25hXCIsIHBhcmFtczogeyBhZ2dyZWdhdGU6IHsgY291bnQ6IHRydWUsIGdyb3VwX2J5OiBcInRhZ3NcIiB9IH0gfScsXG4gICAgLy8gUmVzcG9uc2U6IHsgY291bnQ6IDQyLCBlbGVtZW50X3R5cGU6IFwicGVyc29uYVwiLCBncm91cHM6IHsgXCJhc3Npc3RhbnRcIjogMTUsIFwiY3JlYXRpdmVcIjogMTIgfSB9XG4gIF0sXG4gIGdldF9hY3RpdmVfZWxlbWVudHM6IFtcbiAgICAneyBvcGVyYXRpb246IFwiZ2V0X2FjdGl2ZV9lbGVtZW50c1wiLCBlbGVtZW50VHlwZTogXCJwZXJzb25hXCIgfScsXG4gIF0sXG4gIHZhbGlkYXRlX2VsZW1lbnQ6IFtcbiAgICAneyBvcGVyYXRpb246IFwidmFsaWRhdGVfZWxlbWVudFwiLCBlbGVtZW50VHlwZTogXCJwZXJzb25hXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwibXktcGVyc29uYVwiLCBzdHJpY3Q6IHRydWUgfSB9JyxcbiAgXSxcbiAgcmVuZGVyOiBbXG4gICAgJ3sgb3BlcmF0aW9uOiBcInJlbmRlclwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcIm1lZXRpbmctbm90ZXNcIiwgdmFyaWFibGVzOiB7IGRhdGU6IFwiMjAyNC0wMS0xNVwiLCBhdHRlbmRlZXM6IFtcIkFsaWNlXCIsIFwiQm9iXCJdIH0gfSB9JyxcbiAgXSxcbiAgZXhwb3J0X2VsZW1lbnQ6IFtcbiAgICAneyBvcGVyYXRpb246IFwiZXhwb3J0X2VsZW1lbnRcIiwgZWxlbWVudFR5cGU6IFwicGVyc29uYVwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcIm15LXBlcnNvbmFcIiwgZm9ybWF0OiBcImpzb25cIiB9IH0nLFxuICBdLFxuICBkZWFjdGl2YXRlX2VsZW1lbnQ6IFtcbiAgICAneyBvcGVyYXRpb246IFwiZGVhY3RpdmF0ZV9lbGVtZW50XCIsIGVsZW1lbnRUeXBlOiBcInBlcnNvbmFcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJteS1wZXJzb25hXCIgfSB9JyxcbiAgXSxcbiAgaW50cm9zcGVjdDogW1xuICAgICd7IG9wZXJhdGlvbjogXCJpbnRyb3NwZWN0XCIsIHBhcmFtczogeyBxdWVyeTogXCJvcGVyYXRpb25zXCIgfSB9JyxcbiAgICAneyBvcGVyYXRpb246IFwiaW50cm9zcGVjdFwiLCBwYXJhbXM6IHsgcXVlcnk6IFwib3BlcmF0aW9uc1wiLCBuYW1lOiBcImNyZWF0ZV9lbGVtZW50XCIgfSB9JyxcbiAgICAneyBvcGVyYXRpb246IFwiaW50cm9zcGVjdFwiLCBwYXJhbXM6IHsgcXVlcnk6IFwidHlwZXNcIiwgbmFtZTogXCJFbGVtZW50VHlwZVwiIH0gfScsXG4gICAgJ3sgb3BlcmF0aW9uOiBcImludHJvc3BlY3RcIiwgcGFyYW1zOiB7IHF1ZXJ5OiBcImZvcm1hdFwiIH0gfScsXG4gICAgJ3sgb3BlcmF0aW9uOiBcImludHJvc3BlY3RcIiwgcGFyYW1zOiB7IHF1ZXJ5OiBcImZvcm1hdFwiLCBuYW1lOiBcInRlbXBsYXRlXCIgfSB9JyxcbiAgXSxcbiAgZWRpdF9lbGVtZW50OiBbXG4gICAgJ3sgb3BlcmF0aW9uOiBcImVkaXRfZWxlbWVudFwiLCBlbGVtZW50VHlwZTogXCJwZXJzb25hXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwibXktcGVyc29uYVwiLCBpbnB1dDogeyBkZXNjcmlwdGlvbjogXCJVcGRhdGVkIGRlc2NyaXB0aW9uXCIgfSB9IH0nLFxuICBdLFxuICBkZWxldGVfZWxlbWVudDogW1xuICAgICd7IG9wZXJhdGlvbjogXCJkZWxldGVfZWxlbWVudFwiLCBlbGVtZW50VHlwZTogXCJtZW1vcnlcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJvbGQtcGVyc29uYVwiLCBkZWxldGVEYXRhOiB0cnVlIH0gfScsXG4gIF0sXG4gIC8vIGNsZWFyLCBleGVjdXRlX2FnZW50LCBnZXRfZXhlY3V0aW9uX3N0YXRlLCByZWNvcmRfZXhlY3V0aW9uX3N0ZXAsIGNvbXBsZXRlX2V4ZWN1dGlvbixcbiAgLy8gY29udGludWVfZXhlY3V0aW9uLCBhYm9ydF9leGVjdXRpb24sIGdldF9nYXRoZXJlZF9kYXRhLCBwcmVwYXJlX2hhbmRvZmYsIHJlc3VtZV9mcm9tX2hhbmRvZmY6XG4gIC8vIEFsbCBtaWdyYXRlZCB0byBJTlRST1NQRUNUSU9OX09OTFlfU0NIRU1BUyBpbiBPcGVyYXRpb25TY2hlbWEudHMgKElzc3VlICM1OTQpXG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBJbnRyb3NwZWN0aW9uUmVzb2x2ZXIgQ2xhc3Ncbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBSZXNvbHZlciBmb3IgaW50cm9zcGVjdGlvbiBxdWVyaWVzLlxuICogUHJvdmlkZXMgc2VsZi1kb2N1bWVudGF0aW9uIGNhcGFiaWxpdGllcyBmb3IgTUNQLUFRTCBvcGVyYXRpb25zLlxuICovXG5leHBvcnQgY2xhc3MgSW50cm9zcGVjdGlvblJlc29sdmVyIHtcbiAgLyoqXG4gICAqIEV4ZWN1dGUgYW4gaW50cm9zcGVjdGlvbiBxdWVyeVxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gSW50cm9zcGVjdGlvbiBwYXJhbWV0ZXJzXG4gICAqIEBwYXJhbSBwYXJhbXMucXVlcnkgLSBXaGF0IHRvIGludHJvc3BlY3Q6ICdvcGVyYXRpb25zJywgJ3R5cGVzJywgJ2Zvcm1hdCcsIG9yICdjYXRlZ29yaWVzJ1xuICAgKiBAcGFyYW0gcGFyYW1zLm5hbWUgLSBPcHRpb25hbDogc3BlY2lmaWMgb3BlcmF0aW9uIG9yIHR5cGUgbmFtZVxuICAgKiBAcmV0dXJucyBJbnRyb3NwZWN0aW9uUmVzdWx0IHdpdGggcmVxdWVzdGVkIGluZm9ybWF0aW9uXG4gICAqL1xuICBzdGF0aWMgcmVzb2x2ZShwYXJhbXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogSW50cm9zcGVjdGlvblJlc3VsdCB7XG4gICAgY29uc3QgcXVlcnkgPSAocGFyYW1zLnF1ZXJ5IGFzIHN0cmluZykgfHwgJ29wZXJhdGlvbnMnO1xuICAgIGNvbnN0IG5hbWUgPSBwYXJhbXMubmFtZSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBzd2l0Y2ggKHF1ZXJ5KSB7XG4gICAgICBjYXNlICdvcGVyYXRpb25zJzpcbiAgICAgICAgaWYgKG5hbWUpIHtcbiAgICAgICAgICByZXR1cm4geyBvcGVyYXRpb246IHRoaXMuZ2V0T3BlcmF0aW9uRGV0YWlscyhuYW1lKSB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IG9wZXJhdGlvbnM6IHRoaXMubGlzdE9wZXJhdGlvbnMoKSB9O1xuXG4gICAgICBjYXNlICd0eXBlcyc6XG4gICAgICAgIGlmIChuYW1lKSB7XG4gICAgICAgICAgcmV0dXJuIHsgdHlwZTogdGhpcy5nZXRUeXBlRGV0YWlscyhuYW1lKSB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IHR5cGVzOiB0aGlzLmxpc3RUeXBlcygpIH07XG5cbiAgICAgIGNhc2UgJ2Zvcm1hdCc6XG4gICAgICAgIHJldHVybiB7IGZvcm1hdFNwZWM6IHRoaXMuZ2V0Rm9ybWF0U3BlYyhuYW1lKSB9O1xuXG4gICAgICAvLyBJc3N1ZSAjNjMxOiBDYXRlZ29yeSBkaXNjb3Zlcnkg4oCUIGZvcm1hdCBydWxlcyArIGd1aWRhbmNlIGZvciBsaXZlIGRhdGFcbiAgICAgIGNhc2UgJ2NhdGVnb3JpZXMnOlxuICAgICAgICByZXR1cm4geyBjYXRlZ29yaWVzOiB0aGlzLmdldENhdGVnb3J5SW5mbygpIH07XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIFJldHVybiBlbXB0eSByZXN1bHQgZm9yIHVua25vd24gcXVlcnkgdHlwZXNcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0IGFsbCBhdmFpbGFibGUgb3BlcmF0aW9uc1xuICAgKlxuICAgKiBGb3Igc2NoZW1hLWRyaXZlbiBvcGVyYXRpb25zLCB1c2VzIGRlc2NyaXB0aW9uIGZyb20gT3BlcmF0aW9uU2NoZW1hLlxuICAgKiBGb3IgbGVnYWN5IG9wZXJhdGlvbnMsIHVzZXMgZGVzY3JpcHRpb24gZnJvbSBPUEVSQVRJT05fUk9VVEVTLlxuICAgKlxuICAgKiBAc2VlIElzc3VlICMyNTQgLSBTaW5nbGUgc291cmNlIG9mIHRydXRoIGZyb20gc2NoZW1hXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBsaXN0T3BlcmF0aW9ucygpOiBPcGVyYXRpb25JbmZvW10ge1xuICAgIGNvbnN0IG9wZXJhdGlvbnM6IE9wZXJhdGlvbkluZm9bXSA9IFtdO1xuXG4gICAgLy8gSW5jbHVkZSBhbGwgb3BlcmF0aW9ucyBmcm9tIE9QRVJBVElPTl9ST1VURVNcbiAgICBmb3IgKGNvbnN0IFtvcE5hbWUsIHJvdXRlXSBvZiBPYmplY3QuZW50cmllcyhPUEVSQVRJT05fUk9VVEVTKSkge1xuICAgICAgLy8gUHJlZmVyIHNjaGVtYSBkZXNjcmlwdGlvbiBmcm9tIGFueSBzY2hlbWEgKGRpc3BhdGNoLWRyaXZlbiBvciBpbnRyb3NwZWN0aW9uLW9ubHkpXG4gICAgICBjb25zdCBzY2hlbWEgPSBnZXRBbnlPcGVyYXRpb25TY2hlbWEob3BOYW1lKTtcbiAgICAgIG9wZXJhdGlvbnMucHVzaCh7XG4gICAgICAgIG5hbWU6IG9wTmFtZSxcbiAgICAgICAgZW5kcG9pbnQ6IHJvdXRlLmVuZHBvaW50LFxuICAgICAgICBkZXNjcmlwdGlvbjogc2NoZW1hPy5kZXNjcmlwdGlvbiB8fCByb3V0ZS5kZXNjcmlwdGlvbiB8fCBgJHtvcE5hbWV9IG9wZXJhdGlvbmAsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBBZGQgaW50cm9zcGVjdCBvcGVyYXRpb24gKHNjaGVtYS1kcml2ZW4gYnV0IG5vdCBpbiBPUEVSQVRJT05fUk9VVEVTKVxuICAgIGNvbnN0IGludHJvc3BlY3RTY2hlbWEgPSBnZXRPcGVyYXRpb25TY2hlbWEoJ2ludHJvc3BlY3QnKTtcbiAgICBvcGVyYXRpb25zLnB1c2goe1xuICAgICAgbmFtZTogJ2ludHJvc3BlY3QnLFxuICAgICAgZW5kcG9pbnQ6ICdSRUFEJyxcbiAgICAgIGRlc2NyaXB0aW9uOiBpbnRyb3NwZWN0U2NoZW1hPy5kZXNjcmlwdGlvbiB8fCAnUXVlcnkgYXZhaWxhYmxlIG9wZXJhdGlvbnMgYW5kIHR5cGVzICh0aGlzIG9wZXJhdGlvbiknLFxuICAgIH0pO1xuXG4gICAgLy8gU29ydCBieSBlbmRwb2ludCB0aGVuIG5hbWUgZm9yIGNvbnNpc3RlbnQgb3JkZXJpbmdcbiAgICByZXR1cm4gb3BlcmF0aW9ucy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICBjb25zdCBlbmRwb2ludE9yZGVyOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0geyBDUkVBVEU6IDAsIFJFQUQ6IDEsIFVQREFURTogMiwgREVMRVRFOiAzLCBFWEVDVVRFOiA0IH07XG4gICAgICBjb25zdCBlbmRwb2ludERpZmYgPSAoZW5kcG9pbnRPcmRlclthLmVuZHBvaW50XSA/PyA1KSAtIChlbmRwb2ludE9yZGVyW2IuZW5kcG9pbnRdID8/IDUpO1xuICAgICAgaWYgKGVuZHBvaW50RGlmZiAhPT0gMCkgcmV0dXJuIGVuZHBvaW50RGlmZjtcbiAgICAgIHJldHVybiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCBhIHNwZWNpZmljIG9wZXJhdGlvblxuICAgKlxuICAgKiBGb3Igc2NoZW1hLWRyaXZlbiBvcGVyYXRpb25zLCByZWFkcyBtZXRhZGF0YSBmcm9tIE9wZXJhdGlvblNjaGVtYS5cbiAgICogRm9yIGxlZ2FjeSBvcGVyYXRpb25zLCB1c2VzIGZhbGxiYWNrIE9QRVJBVElPTl9QQVJBTUVURVJTL09QRVJBVElPTl9FWEFNUExFUy5cbiAgICpcbiAgICogQHNlZSBJc3N1ZSAjMjU0IC0gQXV0by1nZW5lcmF0ZSBpbnRyb3NwZWN0aW9uIGZyb20gc2NoZW1hXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBnZXRPcGVyYXRpb25EZXRhaWxzKG5hbWU6IHN0cmluZyk6IE9wZXJhdGlvbkRldGFpbHMgfCBudWxsIHtcbiAgICAvLyBDaGVjayBzY2hlbWEgZmlyc3Qg4oCUIGluY2x1ZGVzIGJvdGggZGlzcGF0Y2gtZHJpdmVuIGFuZCBpbnRyb3NwZWN0aW9uLW9ubHkgc2NoZW1hc1xuICAgIGNvbnN0IHNjaGVtYSA9IGdldEFueU9wZXJhdGlvblNjaGVtYShuYW1lKTtcbiAgICBpZiAoc2NoZW1hKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRTY2hlbWFPcGVyYXRpb25EZXRhaWxzKG5hbWUsIHNjaGVtYSk7XG4gICAgfVxuXG4gICAgLy8gTGVnYWN5IGZhbGxiYWNrIGZvciBub24tc2NoZW1hIG9wZXJhdGlvbnNcbiAgICBjb25zdCByb3V0ZSA9IE9QRVJBVElPTl9ST1VURVNbbmFtZV07XG4gICAgaWYgKCFyb3V0ZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWUsXG4gICAgICBlbmRwb2ludDogcm91dGUuZW5kcG9pbnQsXG4gICAgICBtY3BUb29sOiBgbWNwX2FxbF8ke3JvdXRlLmVuZHBvaW50LnRvTG93ZXJDYXNlKCl9YCxcbiAgICAgIGRlc2NyaXB0aW9uOiByb3V0ZS5kZXNjcmlwdGlvbiB8fCBgJHtuYW1lfSBvcGVyYXRpb25gLFxuICAgICAgcGVybWlzc2lvbnM6IFBlcm1pc3Npb25HdWFyZC5nZXRQZXJtaXNzaW9ucyhyb3V0ZS5lbmRwb2ludCBhcyBDUlVERW5kcG9pbnQpLFxuICAgICAgcGFyYW1ldGVyczogT1BFUkFUSU9OX1BBUkFNRVRFUlNbbmFtZV0gfHwgW10sXG4gICAgICByZXR1cm5zOiB0aGlzLmdldFJldHVyblR5cGUobmFtZSksXG4gICAgICBleGFtcGxlczogT1BFUkFUSU9OX0VYQU1QTEVTW25hbWVdIHx8IFtdLFxuICAgICAgLi4uKHJvdXRlLmFsaWFzZXM/Lmxlbmd0aCA/IHsgYWxpYXNlczogcm91dGUuYWxpYXNlcyB9IDoge30pLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogR2V0IG9wZXJhdGlvbiBkZXRhaWxzIGZyb20gT3BlcmF0aW9uU2NoZW1hIChkaXNwYXRjaC1kcml2ZW4gb3IgaW50cm9zcGVjdGlvbi1vbmx5KVxuICAgKlxuICAgKiBAc2VlIElzc3VlICMyNTQgLSBTaW5nbGUgc291cmNlIG9mIHRydXRoIGZyb20gc2NoZW1hXG4gICAqIEBzZWUgSXNzdWUgIzU5NCAtIEludHJvc3BlY3Rpb24tb25seSBzY2hlbWFzIGZvciBhbGwgb3BlcmF0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0U2NoZW1hT3BlcmF0aW9uRGV0YWlscyhuYW1lOiBzdHJpbmcsIHNjaGVtYT86IE9wZXJhdGlvbkRlZik6IE9wZXJhdGlvbkRldGFpbHMgfCBudWxsIHtcbiAgICBjb25zdCByZXNvbHZlZFNjaGVtYSA9IHNjaGVtYSA/PyBnZXRBbnlPcGVyYXRpb25TY2hlbWEobmFtZSk7XG4gICAgaWYgKCFyZXNvbHZlZFNjaGVtYSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gQ29udmVydCBzY2hlbWEgcmV0dXJucyB0byBUeXBlSW5mbywgd2l0aCBmYWxsYmFja1xuICAgIGNvbnN0IHJldHVybnM6IFR5cGVJbmZvID0gcmVzb2x2ZWRTY2hlbWEucmV0dXJuc1xuICAgICAgPyB7IG5hbWU6IHJlc29sdmVkU2NoZW1hLnJldHVybnMubmFtZSwga2luZDogcmVzb2x2ZWRTY2hlbWEucmV0dXJucy5raW5kLCBkZXNjcmlwdGlvbjogcmVzb2x2ZWRTY2hlbWEucmV0dXJucy5kZXNjcmlwdGlvbiB9XG4gICAgICA6IHsgbmFtZTogJ09wZXJhdGlvblJlc3VsdCcsIGtpbmQ6ICd1bmlvbicsIGRlc2NyaXB0aW9uOiAnU3VjY2VzcyB3aXRoIGRhdGEgb3IgZmFpbHVyZSB3aXRoIGVycm9yJyB9O1xuXG4gICAgY29uc3Qgcm91dGUgPSBPUEVSQVRJT05fUk9VVEVTW25hbWVdO1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lLFxuICAgICAgZW5kcG9pbnQ6IHJlc29sdmVkU2NoZW1hLmVuZHBvaW50LFxuICAgICAgbWNwVG9vbDogYG1jcF9hcWxfJHtyZXNvbHZlZFNjaGVtYS5lbmRwb2ludC50b0xvd2VyQ2FzZSgpfWAsXG4gICAgICBkZXNjcmlwdGlvbjogcmVzb2x2ZWRTY2hlbWEuZGVzY3JpcHRpb24sXG4gICAgICBwZXJtaXNzaW9uczogUGVybWlzc2lvbkd1YXJkLmdldFBlcm1pc3Npb25zKHJlc29sdmVkU2NoZW1hLmVuZHBvaW50IGFzIENSVURFbmRwb2ludCksXG4gICAgICBwYXJhbWV0ZXJzOiBzY2hlbWFUb1BhcmFtZXRlckluZm8ocmVzb2x2ZWRTY2hlbWEucGFyYW1zKSxcbiAgICAgIHJldHVybnMsXG4gICAgICBleGFtcGxlczogcmVzb2x2ZWRTY2hlbWEuZXhhbXBsZXMgfHwgW10sXG4gICAgICAuLi4ocm91dGU/LmFsaWFzZXM/Lmxlbmd0aCA/IHsgYWxpYXNlczogcm91dGUuYWxpYXNlcyB9IDoge30pLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSByZXR1cm4gdHlwZSBmb3IgYSBsZWdhY3kgKG5vbi1zY2hlbWEpIG9wZXJhdGlvbi5cbiAgICogU2NoZW1hLWRyaXZlbiBhbmQgaW50cm9zcGVjdGlvbi1vbmx5IG9wZXJhdGlvbnMgZ2V0IHJldHVybiB0eXBlcyBmcm9tIHRoZWlyIHNjaGVtYSBkZWZpbml0aW9ucy5cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGdldFJldHVyblR5cGUob3BlcmF0aW9uOiBzdHJpbmcpOiBUeXBlSW5mbyB7XG4gICAgLy8gT3BlcmF0aW9ucyBtaWdyYXRlZCB0byBzY2hlbWFzIChJc3N1ZSAjNTk0KSBhcmUgaGFuZGxlZCBieSBnZXRTY2hlbWFPcGVyYXRpb25EZXRhaWxzKClcbiAgICAvLyBUaGlzIGZhbGxiYWNrIG9ubHkgYXBwbGllcyB0byB0aGUgZmV3IHJlbWFpbmluZyBub24tc2NoZW1hIG9wZXJhdGlvbnNcbiAgICBjb25zdCByZXR1cm5UeXBlczogUmVjb3JkPHN0cmluZywgVHlwZUluZm8+ID0ge1xuICAgICAgc2VhcmNoX2VsZW1lbnRzOiB7IG5hbWU6ICdTZWFyY2hSZXN1bHQnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdTdHJ1Y3R1cmVkIEpTT046IHsgaXRlbXM6IFt7IHR5cGUsIGVsZW1lbnRfbmFtZSwgZGVzY3JpcHRpb24sIG1hdGNoZWRJbiB9XSwgcGFnaW5hdGlvbiwgc29ydGluZywgcXVlcnkgfScgfSxcbiAgICAgIHF1ZXJ5X2VsZW1lbnRzOiB7IG5hbWU6ICdRdWVyeVJlc3VsdCcsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ1N0cnVjdHVyZWQgSlNPTjogeyBpdGVtczogW3sgbmFtZSwgZGVzY3JpcHRpb24sIHR5cGUsIHZlcnNpb24sIHRhZ3MgfV0sIHBhZ2luYXRpb24sIHNvcnRpbmcsIGVsZW1lbnRfdHlwZSB9LiBPciBBZ2dyZWdhdGlvblJlc3VsdDogeyBjb3VudCwgZWxlbWVudF90eXBlLCBncm91cHM/IH0gd2hlbiBhZ2dyZWdhdGUgcGFyYW0gaXMgdXNlZC4nIH0sXG4gICAgfTtcblxuICAgIHJldHVybiByZXR1cm5UeXBlc1tvcGVyYXRpb25dIHx8IHtcbiAgICAgIG5hbWU6ICdPcGVyYXRpb25SZXN1bHQnLFxuICAgICAga2luZDogJ3VuaW9uJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnU3VjY2VzcyB3aXRoIGRhdGEgb3IgZmFpbHVyZSB3aXRoIGVycm9yJyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3QgYWxsIGF2YWlsYWJsZSB0eXBlc1xuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgbGlzdFR5cGVzKCk6IFR5cGVJbmZvW10ge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhUWVBFX0RFRklOSVRJT05TKS5tYXAoKFtuYW1lLCBkZWZdKSA9PiAoe1xuICAgICAgbmFtZSxcbiAgICAgIGtpbmQ6IGRlZi5raW5kLFxuICAgICAgZGVzY3JpcHRpb246IGRlZi5kZXNjcmlwdGlvbixcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IGEgc3BlY2lmaWMgdHlwZVxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0VHlwZURldGFpbHMobmFtZTogc3RyaW5nKTogVHlwZURldGFpbHMgfCBudWxsIHtcbiAgICByZXR1cm4gVFlQRV9ERUZJTklUSU9OU1tuYW1lXSB8fCBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBmb3JtYXQgc3BlY2lmaWNhdGlvbiBmb3IgYW4gZWxlbWVudCB0eXBlLlxuICAgKiBJZiBuYW1lIGlzIHByb3ZpZGVkLCByZXR1cm5zIGEgc2luZ2xlIHNwZWMgKG9yIG51bGwgZm9yIHVua25vd24gdHlwZXMpLlxuICAgKiBJZiBuYW1lIGlzIG9taXR0ZWQsIHJldHVybnMgYWxsIHNwZWNzIGFzIGFuIG92ZXJ2aWV3LlxuICAgKlxuICAgKiBAc2VlIElzc3VlICM3MTUgLSBQcm9hY3RpdmUgTExNIGd1aWRhbmNlIGZvciBlbGVtZW50IGNyZWF0aW9uXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBnZXRGb3JtYXRTcGVjKG5hbWU/OiBzdHJpbmcpOiBGb3JtYXRTcGVjIHwgRm9ybWF0U3BlY1tdIHwgbnVsbCB7XG4gICAgaWYgKCFuYW1lKSB7XG4gICAgICAvLyBSZXR1cm4gYWxsIGZvcm1hdCBzcGVjcyBhcyBhbiBvdmVydmlld1xuICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoRk9STUFUX1NQRUNTKTtcbiAgICB9XG5cbiAgICAvLyBOb3JtYWxpemU6IGhhbmRsZSBwbHVyYWxzLCBjYXNlLCB3aGl0ZXNwYWNlXG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZVR5cGVOYW1lKG5hbWUpO1xuICAgIGlmICghbm9ybWFsaXplZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIEZPUk1BVF9TUEVDU1tub3JtYWxpemVkXSB8fCBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIElzc3VlICM2MzE6IENhdGVnb3J5IGRpc2NvdmVyeSBpbmZvIOKAlCBmb3JtYXQgcnVsZXMsIGFsbG93ZWQgYWdncmVnYXRpb24gZmllbGRzLFxuICAgKiBhbmQgZ3VpZGFuY2UgZm9yIGRpc2NvdmVyaW5nIGV4aXN0aW5nIGNhdGVnb3JpZXMgdmlhIHF1ZXJ5X2VsZW1lbnRzLlxuICAgKiBJbnRyb3NwZWN0aW9uUmVzb2x2ZXIgaXMgc3RhdGVsZXNzIChubyBwb3J0Zm9saW8gYWNjZXNzKSwgc28gbGl2ZSBjYXRlZ29yeSBkYXRhXG4gICAqIG11c3QgYmUgZmV0Y2hlZCB2aWEgcXVlcnlfZWxlbWVudHMgd2l0aCBhZ2dyZWdhdGU6IHsgZ3JvdXBfYnk6IFwiY2F0ZWdvcnlcIiB9LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0Q2F0ZWdvcnlJbmZvKCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICByZXR1cm4ge1xuICAgICAgZm9ybWF0UnVsZXM6IHtcbiAgICAgICAgcGF0dGVybjogVkFMSURBVElPTl9QQVRURVJOUy5TQUZFX0NBVEVHT1JZLnNvdXJjZSxcbiAgICAgICAgZGVzY3JpcHRpb246ICdDYXRlZ29yeSBuYW1lcyBtdXN0IHN0YXJ0IHdpdGggYSBsZXR0ZXIsIGNvbnRhaW4gb25seSBsZXR0ZXJzLCBkaWdpdHMsIGh5cGhlbnMsIGFuZCB1bmRlcnNjb3JlcywgYW5kIGJlIDEtMjEgY2hhcmFjdGVycyBsb25nLicsXG4gICAgICAgIGV4YW1wbGVzOiBbJ2RldmVsb3BtZW50JywgJ2NvZGUtYW5hbHlzaXMnLCAnc2VjdXJpdHknLCAnYnVzaW5lc3MnLCAnY29tbXVuaWNhdGlvbiddLFxuICAgICAgfSxcbiAgICAgIHN1cHBvcnRlZFR5cGVzOiBbJ3BlcnNvbmEnLCAnc2tpbGwnLCAndGVtcGxhdGUnLCAnbWVtb3J5J10sXG4gICAgICBhbGxvd2VkR3JvdXBCeUZpZWxkczogZ2V0QWxsb3dlZEdyb3VwQnlGaWVsZHMoKSxcbiAgICAgIGRpc2NvdmVyeToge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ1RvIGRpc2NvdmVyIGV4aXN0aW5nIGNhdGVnb3JpZXMgaW4geW91ciBwb3J0Zm9saW8sIHVzZSBxdWVyeV9lbGVtZW50cyB3aXRoIGdyb3VwX2J5IGFnZ3JlZ2F0aW9uLicsXG4gICAgICAgIGV4YW1wbGVzOiBbXG4gICAgICAgICAgJ3sgb3BlcmF0aW9uOiBcInF1ZXJ5X2VsZW1lbnRzXCIsIGVsZW1lbnRfdHlwZTogXCJza2lsbFwiLCBwYXJhbXM6IHsgYWdncmVnYXRlOiB7IGNvdW50OiB0cnVlLCBncm91cF9ieTogXCJjYXRlZ29yeVwiIH0gfSB9JyxcbiAgICAgICAgICAneyBvcGVyYXRpb246IFwicXVlcnlfZWxlbWVudHNcIiwgZWxlbWVudF90eXBlOiBcInRlbXBsYXRlXCIsIHBhcmFtczogeyBhZ2dyZWdhdGU6IHsgY291bnQ6IHRydWUsIGdyb3VwX2J5OiBcImNhdGVnb3J5XCIgfSB9IH0nLFxuICAgICAgICAgICd7IG9wZXJhdGlvbjogXCJxdWVyeV9lbGVtZW50c1wiLCBlbGVtZW50X3R5cGU6IFwic2tpbGxcIiwgcGFyYW1zOiB7IGZpbHRlcnM6IHsgY2F0ZWdvcnk6IFwic2VjdXJpdHlcIiB9IH0gfScsXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogR2V0IG9wZXJhdGlvbnMgZ3JvdXBlZCBieSBlbmRwb2ludFxuICAgKiBVdGlsaXR5IG1ldGhvZCBmb3IgZG9jdW1lbnRhdGlvbiBnZW5lcmF0aW9uXG4gICAqL1xuICBzdGF0aWMgZ2V0T3BlcmF0aW9uc0J5RW5kcG9pbnQoKTogUmVjb3JkPENSVURFbmRwb2ludCwgT3BlcmF0aW9uSW5mb1tdPiB7XG4gICAgY29uc3QgZ3JvdXBlZDogUmVjb3JkPENSVURFbmRwb2ludCwgT3BlcmF0aW9uSW5mb1tdPiA9IHtcbiAgICAgIENSRUFURTogW10sXG4gICAgICBSRUFEOiBbXSxcbiAgICAgIFVQREFURTogW10sXG4gICAgICBERUxFVEU6IFtdLFxuICAgICAgRVhFQ1VURTogW10sXG4gICAgfTtcblxuICAgIGZvciAoY29uc3Qgb3Agb2YgdGhpcy5saXN0T3BlcmF0aW9ucygpKSB7XG4gICAgICBjb25zdCBlbmRwb2ludCA9IG9wLmVuZHBvaW50IGFzIENSVURFbmRwb2ludDtcbiAgICAgIGlmIChncm91cGVkW2VuZHBvaW50XSkge1xuICAgICAgICBncm91cGVkW2VuZHBvaW50XS5wdXNoKG9wKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZ3JvdXBlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBhIGNvbXBhY3Qgc3VtbWFyeSBmb3IgdG9rZW4tZWZmaWNpZW50IHJlc3BvbnNlc1xuICAgKi9cbiAgc3RhdGljIGdldFN1bW1hcnkoKTogc3RyaW5nIHtcbiAgICBjb25zdCBvcHNCeUVuZHBvaW50ID0gdGhpcy5nZXRPcGVyYXRpb25zQnlFbmRwb2ludCgpO1xuICAgIGNvbnN0IGxpbmVzOiBzdHJpbmdbXSA9IFsnTUNQLUFRTCBPcGVyYXRpb25zOiddO1xuXG4gICAgZm9yIChjb25zdCBbZW5kcG9pbnQsIG9wc10gb2YgT2JqZWN0LmVudHJpZXMob3BzQnlFbmRwb2ludCkpIHtcbiAgICAgIGNvbnN0IG9wTmFtZXMgPSBvcHMubWFwKG8gPT4gby5uYW1lKS5qb2luKCcsICcpO1xuICAgICAgbGluZXMucHVzaChgICAke2VuZHBvaW50fTogJHtvcE5hbWVzfWApO1xuICAgIH1cblxuICAgIGxpbmVzLnB1c2goYFxcblR5cGVzOiAke09iamVjdC5rZXlzKFRZUEVfREVGSU5JVElPTlMpLmpvaW4oJywgJyl9YCk7XG4gICAgbGluZXMucHVzaCgnXFxuVXNlIGludHJvc3BlY3Qgd2l0aCBuYW1lIHBhcmFtZXRlciBmb3IgZGV0YWlscy4nKTtcblxuICAgIHJldHVybiBsaW5lcy5qb2luKCdcXG4nKTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIENhcGFiaWxpdGllcyAoSXNzdWUgIzE3NjApXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEdldCBzZXJ2ZXIgY2FwYWJpbGl0aWVzIGdyb3VwZWQgYnkgdXNlci1pbnRlbnQgY2F0ZWdvcnkuXG4gICAqIFJlYWRzIGNhdGVnb3J5IGZyb20gZWFjaCBvcGVyYXRpb24ncyBzY2hlbWEgZGVmaW5pdGlvbiBhdCBydW50aW1lLlxuICAgKiBEZXNpZ25lZCBmb3IgZXh0ZW5zaWJpbGl0eSDigJQgYWRkaXRpb25hbCBDYXBhYmlsaXR5U291cmNlcyAoZS5nLiBwb3J0Zm9saW9cbiAgICogZWxlbWVudHMgZnJvbSB0aGUgY2FwYWJpbGl0eSBpbmRleCkgY2FuIGJlIHJlZ2lzdGVyZWQgdmlhIHJlZ2lzdGVyU291cmNlKCkuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBPcHRpb25hbCBwYXJhbWV0ZXJzXG4gICAqIEBwYXJhbSBwYXJhbXMuY2F0ZWdvcnkgLSBGaWx0ZXIgdG8gYSBzcGVjaWZpYyBjYXRlZ29yeVxuICAgKiBAcmV0dXJucyBDYXBhYmlsaXRpZXNSZXN1bHQgd2l0aCBjYXRlZ29yaXplZCBvcGVyYXRpb25zXG4gICAqIEBzZWUgSXNzdWUgIzE3NjAgLSBnZXRfY2FwYWJpbGl0aWVzIG9wZXJhdGlvblxuICAgKi9cbiAgc3RhdGljIGdldENhcGFiaWxpdGllcyhwYXJhbXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICAgIGNvbnN0IGZpbHRlckNhdGVnb3J5ID0gcGFyYW1zLmNhdGVnb3J5IGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCB7IGNhdGVnb3JpZXMsIHNvcnRlZENhdGVnb3JpZXMsIHNvdXJjZVR5cGVzIH0gPSB0aGlzLmJ1aWxkQ2F0ZWdvcnlNYXAoKTtcblxuICAgIC8vIEFwcGx5IGNhdGVnb3J5IGZpbHRlciBpZiByZXF1ZXN0ZWRcbiAgICBpZiAoZmlsdGVyQ2F0ZWdvcnkpIHtcbiAgICAgIHJldHVybiB0aGlzLmZpbHRlckJ5Q2F0ZWdvcnkoZmlsdGVyQ2F0ZWdvcnksIGNhdGVnb3JpZXMsIHNvcnRlZENhdGVnb3JpZXMsIHNvdXJjZVR5cGVzKTtcbiAgICB9XG5cbiAgICBjb25zdCB0b3RhbENhcGFiaWxpdGllcyA9IE9iamVjdC52YWx1ZXMoY2F0ZWdvcmllcykucmVkdWNlKFxuICAgICAgKHN1bSwgY2F0KSA9PiBzdW0gKyBjYXQuY2FwYWJpbGl0aWVzLmxlbmd0aCwgMFxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY2F0ZWdvcmllcyxcbiAgICAgIHRvdGFsQ2FwYWJpbGl0aWVzLFxuICAgICAgc291cmNlczogc291cmNlVHlwZXMsXG4gICAgICBoaW50OiAnVXNlIGludHJvc3BlY3Qgd2l0aCB7IHF1ZXJ5OiBcIm9wZXJhdGlvbnNcIiwgbmFtZTogXCI8b3BlcmF0aW9uPlwiIH0gZm9yIGZ1bGwgcGFyYW1ldGVyIGRldGFpbHMsIGV4YW1wbGVzLCBhbmQgcGVybWlzc2lvbnMuJyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIHRoZSBmdWxsIGNhdGVnb3J5IG1hcCBmcm9tIGFsbCByZWdpc3RlcmVkIGNhcGFiaWxpdHkgc291cmNlcy5cbiAgICogUmV0dXJucyBzb3J0ZWQgY2F0ZWdvcmllcyB3aXRoIGRlc2NyaXB0aW9ucyBhbmQgbWVyZ2VkIGVudHJpZXMuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBidWlsZENhdGVnb3J5TWFwKCkge1xuICAgIGNvbnN0IG1lcmdlZE1hcDogUmVjb3JkPHN0cmluZywgQ2FwYWJpbGl0eUVudHJ5W10+ID0ge307XG4gICAgY29uc3Qgc291cmNlVHlwZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IHNvdXJjZSBvZiBjYXBhYmlsaXR5U291cmNlcykge1xuICAgICAgc291cmNlVHlwZXMucHVzaChzb3VyY2Uuc291cmNlVHlwZSk7XG4gICAgICBjb25zdCBjYXBzID0gc291cmNlLmdldENhcGFiaWxpdGllcygpO1xuICAgICAgZm9yIChjb25zdCBbY2F0LCBlbnRyaWVzXSBvZiBPYmplY3QuZW50cmllcyhjYXBzKSkge1xuICAgICAgICBpZiAoIW1lcmdlZE1hcFtjYXRdKSBtZXJnZWRNYXBbY2F0XSA9IFtdO1xuICAgICAgICBtZXJnZWRNYXBbY2F0XS5wdXNoKC4uLmVudHJpZXMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNvcnQgZW50cmllcyB3aXRoaW4gZWFjaCBjYXRlZ29yeSBhbHBoYWJldGljYWxseVxuICAgIGZvciAoY29uc3QgZW50cmllcyBvZiBPYmplY3QudmFsdWVzKG1lcmdlZE1hcCkpIHtcbiAgICAgIGVudHJpZXMuc29ydCgoYSwgYikgPT4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKSk7XG4gICAgfVxuXG4gICAgLy8gU29ydCBjYXRlZ29yaWVzIGFscGhhYmV0aWNhbGx5IChcIk90aGVyXCIgbGFzdClcbiAgICBjb25zdCBzb3J0ZWRDYXRlZ29yaWVzID0gT2JqZWN0LmtleXMobWVyZ2VkTWFwKS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICBpZiAoYSA9PT0gJ090aGVyJykgcmV0dXJuIDE7XG4gICAgICBpZiAoYiA9PT0gJ090aGVyJykgcmV0dXJuIC0xO1xuICAgICAgcmV0dXJuIGEubG9jYWxlQ29tcGFyZShiKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGNhdGVnb3JpZXM6IFJlY29yZDxzdHJpbmcsIHsgZGVzY3JpcHRpb246IHN0cmluZzsgY2FwYWJpbGl0aWVzOiBDYXBhYmlsaXR5RW50cnlbXSB9PiA9IHt9O1xuICAgIGZvciAoY29uc3QgY2F0IG9mIHNvcnRlZENhdGVnb3JpZXMpIHtcbiAgICAgIGNhdGVnb3JpZXNbY2F0XSA9IHtcbiAgICAgICAgZGVzY3JpcHRpb246IENBVEVHT1JZX0RFU0NSSVBUSU9OU1tjYXRdIHx8IGAke2NhdH0gb3BlcmF0aW9uc2AsXG4gICAgICAgIGNhcGFiaWxpdGllczogbWVyZ2VkTWFwW2NhdF0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7IGNhdGVnb3JpZXMsIHNvcnRlZENhdGVnb3JpZXMsIHNvdXJjZVR5cGVzIH07XG4gIH1cblxuICAvKipcbiAgICogRmlsdGVyIHRoZSBjYXRlZ29yeSBtYXAgdG8gYSBzaW5nbGUgbWF0Y2hpbmcgY2F0ZWdvcnkgKGNhc2UtaW5zZW5zaXRpdmUpLlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgZmlsdGVyQnlDYXRlZ29yeShcbiAgICBmaWx0ZXJDYXRlZ29yeTogc3RyaW5nLFxuICAgIGNhdGVnb3JpZXM6IFJlY29yZDxzdHJpbmcsIHsgZGVzY3JpcHRpb246IHN0cmluZzsgY2FwYWJpbGl0aWVzOiBDYXBhYmlsaXR5RW50cnlbXSB9PixcbiAgICBzb3J0ZWRDYXRlZ29yaWVzOiBzdHJpbmdbXSxcbiAgICBzb3VyY2VUeXBlczogc3RyaW5nW10sXG4gICk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICBjb25zdCBsb3dlckZpbHRlciA9IGZpbHRlckNhdGVnb3J5LnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgZmlsdGVyZWQ6IFJlY29yZDxzdHJpbmcsIHR5cGVvZiBjYXRlZ29yaWVzW3N0cmluZ10+ID0ge307XG4gICAgZm9yIChjb25zdCBbY2F0TmFtZSwgY2F0RGF0YV0gb2YgT2JqZWN0LmVudHJpZXMoY2F0ZWdvcmllcykpIHtcbiAgICAgIGlmIChjYXROYW1lLnRvTG93ZXJDYXNlKCkgPT09IGxvd2VyRmlsdGVyKSB7XG4gICAgICAgIGZpbHRlcmVkW2NhdE5hbWVdID0gY2F0RGF0YTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKE9iamVjdC5rZXlzKGZpbHRlcmVkKS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNhdGVnb3JpZXM6IHt9LFxuICAgICAgICBhdmFpbGFibGVDYXRlZ29yaWVzOiBzb3J0ZWRDYXRlZ29yaWVzLFxuICAgICAgICBoaW50OiBgTm8gY2F0ZWdvcnkgbWF0Y2hpbmcgXCIke2ZpbHRlckNhdGVnb3J5fVwiLiBVc2UgZ2V0X2NhcGFiaWxpdGllcyB3aXRob3V0IGEgZmlsdGVyIHRvIHNlZSBhbGwgY2F0ZWdvcmllcy5gLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGNhdGVnb3JpZXM6IGZpbHRlcmVkLFxuICAgICAgc291cmNlczogc291cmNlVHlwZXMsXG4gICAgICBoaW50OiAnVXNlIGludHJvc3BlY3Qgd2l0aCB7IHF1ZXJ5OiBcIm9wZXJhdGlvbnNcIiwgbmFtZTogXCI8b3BlcmF0aW9uPlwiIH0gZm9yIGZ1bGwgZGV0YWlscyBvbiBhbnkgb3BlcmF0aW9uLicsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhbiBhZGRpdGlvbmFsIGNhcGFiaWxpdHkgc291cmNlLlxuICAgKiBGdXR1cmUgZWxlbWVudCBzb3VyY2VzIChyZWFkaW5nIGZyb20gdGhlIGNhcGFiaWxpdHkgaW5kZXgpIGNhbiBiZVxuICAgKiBwbHVnZ2VkIGluIGhlcmUgd2l0aG91dCBtb2RpZnlpbmcgdGhlIGdldF9jYXBhYmlsaXRpZXMgaGFuZGxlci5cbiAgICogQHNlZSBJc3N1ZSAjMTc2MCAtIGV4dGVuc2liaWxpdHkgZm9yIHBvcnRmb2xpbyBlbGVtZW50IGNhcGFiaWxpdGllc1xuICAgKi9cbiAgc3RhdGljIHJlZ2lzdGVyU291cmNlKHNvdXJjZTogQ2FwYWJpbGl0eVNvdXJjZSk6IHZvaWQge1xuICAgIGNhcGFiaWxpdHlTb3VyY2VzLnB1c2goc291cmNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcnVuY2F0ZSBhIGRlc2NyaXB0aW9uIHRvIGEgYnJpZWYgb25lLWxpbmVyLlxuICAgKiBUYWtlcyB0aGUgZmlyc3Qgc2VudGVuY2UgKHVwIHRvIGZpcnN0IHBlcmlvZCBmb2xsb3dlZCBieSBzcGFjZSBvciBlbmQpLlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgdG9CcmllZihkZXNjcmlwdGlvbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIWRlc2NyaXB0aW9uIHx8IHR5cGVvZiBkZXNjcmlwdGlvbiAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiAnTm8gZGVzY3JpcHRpb24gYXZhaWxhYmxlJztcbiAgICB9XG4gICAgY29uc3QgbWF0Y2ggPSAvXlteLl0qXFwuLy5leGVjKGRlc2NyaXB0aW9uKTtcbiAgICBpZiAobWF0Y2ggJiYgbWF0Y2hbMF0ubGVuZ3RoIDw9IDEyMCkge1xuICAgICAgcmV0dXJuIG1hdGNoWzBdO1xuICAgIH1cbiAgICBpZiAoZGVzY3JpcHRpb24ubGVuZ3RoIDw9IDEyMCkgcmV0dXJuIGRlc2NyaXB0aW9uO1xuICAgIHJldHVybiBkZXNjcmlwdGlvbi5zbGljZSgwLCAxMTcpICsgJy4uLic7XG4gIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ2FwYWJpbGl0eSBTb3VyY2UgU3lzdGVtIChJc3N1ZSAjMTc2MClcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBBIHNpbmdsZSBjYXBhYmlsaXR5IGVudHJ5IOKAlCByZXByZXNlbnRzIG9uZSB0aGluZyBhIHVzZXIgY2FuIGRvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENhcGFiaWxpdHlFbnRyeSB7XG4gIC8qKiBPcGVyYXRpb24gb3IgY2FwYWJpbGl0eSBuYW1lICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyoqIE9uZS1saW5lIGRlc2NyaXB0aW9uICovXG4gIGJyaWVmOiBzdHJpbmc7XG4gIC8qKiBPcmlnaW46ICdzZXJ2ZXInIGZvciBidWlsdC1pbiBvcGVyYXRpb25zLCBvciAnc2tpbGw6bmFtZScsICdhZ2VudDpuYW1lJywgZXRjLiAqL1xuICBzb3VyY2U6IHN0cmluZztcbiAgLyoqIENSVURFIGVuZHBvaW50IChmb3Igc2VydmVyIG9wZXJhdGlvbnMpICovXG4gIGVuZHBvaW50Pzogc3RyaW5nO1xuICAvKiogV2hldGhlciB0aGlzIGNhcGFiaWxpdHkgaXMgY3VycmVudGx5IGFjdGl2ZSBvciBhdmFpbGFibGUgdG8gYWN0aXZhdGUgKi9cbiAgc3RhdHVzOiAnYWN0aXZlJyB8ICdhdmFpbGFibGUnO1xufVxuXG4vKipcbiAqIEludGVyZmFjZSBmb3IgcGx1Z2dhYmxlIGNhcGFiaWxpdHkgcHJvdmlkZXJzLlxuICogSW1wbGVtZW50IHRoaXMgdG8gY29udHJpYnV0ZSBjYXBhYmlsaXRpZXMgZnJvbSBuZXcgc291cmNlcyAoZS5nLiBwb3J0Zm9saW8gZWxlbWVudHMpLlxuICogQHNlZSBJc3N1ZSAjMTc2MCAtIGV4dGVuc2liaWxpdHkgZm9yIHBvcnRmb2xpbyBlbGVtZW50IGNhcGFiaWxpdGllc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENhcGFiaWxpdHlTb3VyY2Uge1xuICByZWFkb25seSBzb3VyY2VUeXBlOiBzdHJpbmc7XG4gIGdldENhcGFiaWxpdGllcygpOiBSZWNvcmQ8c3RyaW5nLCBDYXBhYmlsaXR5RW50cnlbXT47XG59XG5cbi8qKlxuICogQnVpbHQtaW4gY2FwYWJpbGl0eSBzb3VyY2UgdGhhdCByZWFkcyBmcm9tIHRoZSBvcGVyYXRpb24gcmVnaXN0cnkuXG4gKiBHcm91cHMgb3BlcmF0aW9ucyBieSB0aGVpciBzY2hlbWEtZGVjbGFyZWQgY2F0ZWdvcnkgZmllbGQuXG4gKi9cbmNsYXNzIFNlcnZlck9wZXJhdGlvbnNTb3VyY2UgaW1wbGVtZW50cyBDYXBhYmlsaXR5U291cmNlIHtcbiAgcmVhZG9ubHkgc291cmNlVHlwZSA9ICdzZXJ2ZXInO1xuXG4gIGdldENhcGFiaWxpdGllcygpOiBSZWNvcmQ8c3RyaW5nLCBDYXBhYmlsaXR5RW50cnlbXT4ge1xuICAgIGNvbnN0IG1hcDogUmVjb3JkPHN0cmluZywgQ2FwYWJpbGl0eUVudHJ5W10+ID0ge307XG5cbiAgICAvLyBDb2xsZWN0IGZyb20gT1BFUkFUSU9OX1JPVVRFUyAodGhlIGNvbXBsZXRlIG9wZXJhdGlvbiBsaXN0KVxuICAgIGZvciAoY29uc3QgW29wTmFtZSwgcm91dGVdIG9mIE9iamVjdC5lbnRyaWVzKE9QRVJBVElPTl9ST1VURVMpKSB7XG4gICAgICBjb25zdCBzY2hlbWEgPSBnZXRBbnlPcGVyYXRpb25TY2hlbWEob3BOYW1lKTtcbiAgICAgIGNvbnN0IGNhdGVnb3J5ID0gc2NoZW1hPy5jYXRlZ29yeSB8fCAnT3RoZXInO1xuICAgICAgY29uc3QgYnJpZWYgPSBJbnRyb3NwZWN0aW9uUmVzb2x2ZXJbJ3RvQnJpZWYnXShcbiAgICAgICAgc2NoZW1hPy5kZXNjcmlwdGlvbiB8fCByb3V0ZS5kZXNjcmlwdGlvbiB8fCBgJHtvcE5hbWV9IG9wZXJhdGlvbmBcbiAgICAgICk7XG5cbiAgICAgIGlmICghbWFwW2NhdGVnb3J5XSkgbWFwW2NhdGVnb3J5XSA9IFtdO1xuICAgICAgbWFwW2NhdGVnb3J5XS5wdXNoKHtcbiAgICAgICAgbmFtZTogb3BOYW1lLFxuICAgICAgICBicmllZixcbiAgICAgICAgc291cmNlOiAnc2VydmVyJyxcbiAgICAgICAgZW5kcG9pbnQ6IHJvdXRlLmVuZHBvaW50LFxuICAgICAgICBzdGF0dXM6ICdhY3RpdmUnLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQWRkIHNjaGVtYS1vbmx5IG9wZXJhdGlvbnMgbm90IGluIE9QRVJBVElPTl9ST1VURVMgKGUuZy4sIGludHJvc3BlY3QsIGdldF9jYXBhYmlsaXRpZXMpXG4gICAgZm9yIChjb25zdCBbb3BOYW1lLCBzY2hlbWFdIG9mIE9iamVjdC5lbnRyaWVzKEFMTF9PUEVSQVRJT05fU0NIRU1BUykpIHtcbiAgICAgIGlmIChvcE5hbWUgaW4gT1BFUkFUSU9OX1JPVVRFUykgY29udGludWU7XG4gICAgICBjb25zdCBjYXRlZ29yeSA9IHNjaGVtYS5jYXRlZ29yeSB8fCAnT3RoZXInO1xuICAgICAgY29uc3QgYnJpZWYgPSBJbnRyb3NwZWN0aW9uUmVzb2x2ZXJbJ3RvQnJpZWYnXShzY2hlbWEuZGVzY3JpcHRpb24pO1xuXG4gICAgICBpZiAoIW1hcFtjYXRlZ29yeV0pIG1hcFtjYXRlZ29yeV0gPSBbXTtcbiAgICAgIG1hcFtjYXRlZ29yeV0ucHVzaCh7XG4gICAgICAgIG5hbWU6IG9wTmFtZSxcbiAgICAgICAgYnJpZWYsXG4gICAgICAgIHNvdXJjZTogJ3NlcnZlcicsXG4gICAgICAgIGVuZHBvaW50OiBzY2hlbWEuZW5kcG9pbnQsXG4gICAgICAgIHN0YXR1czogJ2FjdGl2ZScsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWFwO1xuICB9XG59XG5cbi8qKlxuICogSHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb25zIGZvciBlYWNoIGNhcGFiaWxpdHkgY2F0ZWdvcnkuXG4gKiBAc2VlIElzc3VlICMxNzYwIC0gZ2V0X2NhcGFiaWxpdGllcyBvcGVyYXRpb25cbiAqL1xuY29uc3QgQ0FURUdPUllfREVTQ1JJUFRJT05TOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAnRWxlbWVudCBMaWZlY3ljbGUnOiAnQ3JlYXRlLCByZWFkLCBlZGl0LCBkZWxldGUsIGltcG9ydCwgZXhwb3J0LCBhbmQgdmFsaWRhdGUgZWxlbWVudHMgKHBlcnNvbmFzLCBza2lsbHMsIHRlbXBsYXRlcywgYWdlbnRzLCBtZW1vcmllcywgZW5zZW1ibGVzKS4nLFxuICAnRWxlbWVudCBEaXNjb3ZlcnknOiAnU2VhcmNoLCBsaXN0LCBxdWVyeSwgYW5kIGZpbHRlciBlbGVtZW50cyBhY3Jvc3MgeW91ciBwb3J0Zm9saW8gYW5kIGNvbm5lY3RlZCBzb3VyY2VzLicsXG4gICdBY3RpdmF0aW9uJzogJ0FjdGl2YXRlIGFuZCBkZWFjdGl2YXRlIGVsZW1lbnRzIGZvciB1c2UgaW4gdGhlIGN1cnJlbnQgc2Vzc2lvbi4nLFxuICAnTWVtb3J5JzogJ0FkZCBlbnRyaWVzIHRvIGFuZCBjbGVhciBtZW1vcnkgZWxlbWVudHMuJyxcbiAgJ1RlbXBsYXRlIFJlbmRlcmluZyc6ICdSZW5kZXIgdGVtcGxhdGVzIHdpdGggdmFyaWFibGUgc3Vic3RpdHV0aW9uLicsXG4gICdBZ2VudCBFeGVjdXRpb24nOiAnRXhlY3V0ZSBhZ2VudHMsIHRyYWNrIHByb2dyZXNzLCByZWNvcmQgc3RlcHMsIG1hbmFnZSBoYW5kb2ZmcywgYW5kIGNvbnRyb2wgdGhlIGV4ZWN1dGlvbiBsaWZlY3ljbGUuJyxcbiAgJ1NlY3VyaXR5ICYgUGVybWlzc2lvbnMnOiAnQ29uZmlybSBvcGVyYXRpb25zLCB2ZXJpZnkgY2hhbGxlbmdlcywgZXZhbHVhdGUgQ0xJIHBlcm1pc3Npb25zLCBhbmQgbWFuYWdlIGFwcHJvdmFsIHdvcmtmbG93cy4nLFxuICAnQ29tbXVuaXR5IENvbGxlY3Rpb24nOiAnQnJvd3NlLCBzZWFyY2gsIGluc3RhbGwgZnJvbSwgYW5kIHN1Ym1pdCB0byB0aGUgRG9sbGhvdXNlTUNQIGNvbW11bml0eSBjb2xsZWN0aW9uLicsXG4gICdQb3J0Zm9saW8gTWFuYWdlbWVudCc6ICdJbml0aWFsaXplLCBzeW5jLCBjb25maWd1cmUsIGFuZCBtYW5hZ2UgeW91ciBsb2NhbCBhbmQgR2l0SHViIHBvcnRmb2xpby4nLFxuICAnR2l0SHViIEF1dGhlbnRpY2F0aW9uJzogJ1NldCB1cCwgY2hlY2ssIGFuZCBtYW5hZ2UgR2l0SHViIGF1dGhlbnRpY2F0aW9uIGFuZCBPQXV0aCBjb25maWd1cmF0aW9uLicsXG4gICdJbnRlbGxpZ2VuY2UnOiAnRmluZCBzaW1pbGFyIGVsZW1lbnRzLCBkaXNjb3ZlciByZWxhdGlvbnNoaXBzLCBhbmQgc2VhcmNoIGJ5IGFjdGlvbiB2ZXJicyB1c2luZyB0aGUgY2FwYWJpbGl0eSBpbmRleC4nLFxuICAnQ29uZmlndXJhdGlvbiAmIERpYWdub3N0aWNzJzogJ01hbmFnZSBzZXJ2ZXIgY29uZmlndXJhdGlvbiwgY29udmVydCBmb3JtYXRzLCBxdWVyeSBsb2dzLCBtZXRyaWNzLCBhbmQgc3lzdGVtIGluZm8uJyxcbiAgJ01hbmFnZW1lbnQgQ29uc29sZSc6ICdPcGVuIHRoZSBwb3J0Zm9saW8gd2ViIFVJIHdpdGggb3B0aW9uYWwgZGVlcC1saW5raW5nLiBTdXBwb3J0cyBVUkwgcGFyYW1ldGVycyB0byBwcmUtcG9wdWxhdGUgc2VhcmNoLCBmaWx0ZXIgYnkgdHlwZSBvciBsb2cgbGV2ZWwsIGFuZCBuYXZpZ2F0ZSBkaXJlY3RseSB0byBzcGVjaWZpYyBlbGVtZW50cyBvciB0YWJzLicsXG4gICdTeXN0ZW0gSW50cm9zcGVjdGlvbic6ICdEaXNjb3ZlciBhdmFpbGFibGUgb3BlcmF0aW9ucywgdHlwZXMsIGNhcGFiaWxpdGllcywgYW5kIGVsZW1lbnQgZm9ybWF0IHNwZWNpZmljYXRpb25zLicsXG59O1xuXG4vKiogUmVnaXN0ZXJlZCBjYXBhYmlsaXR5IHNvdXJjZXMuIFNlcnZlck9wZXJhdGlvbnNTb3VyY2UgaXMgYWx3YXlzIHByZXNlbnQuICovXG5jb25zdCBjYXBhYmlsaXR5U291cmNlczogQ2FwYWJpbGl0eVNvdXJjZVtdID0gW25ldyBTZXJ2ZXJPcGVyYXRpb25zU291cmNlKCldO1xuIl19
1136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW50cm9zcGVjdGlvblJlc29sdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hhbmRsZXJzL21jcC1hcWwvSW50cm9zcGVjdGlvblJlc29sdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBRUgsT0FBTyxFQUFFLGdCQUFnQixFQUFxQixNQUFNLHNCQUFzQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxlQUFlLEVBQTRCLE1BQU0sc0JBQXNCLENBQUM7QUFDakYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN6QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNyRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNsRSxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLHFCQUFxQixFQUNyQixxQkFBcUIsRUFDckIscUJBQXFCLEdBRXRCLE1BQU0sc0JBQXNCLENBQUM7QUFrSTlCLCtFQUErRTtBQUMvRSw0QkFBNEI7QUFDNUIsK0VBQStFO0FBRS9FOzs7R0FHRztBQUNILE1BQU0sZ0JBQWdCLEdBQWdDO0lBQ3BELFdBQVcsRUFBRTtRQUNYLElBQUksRUFBRSxhQUFhO1FBQ25CLElBQUksRUFBRSxNQUFNO1FBQ1osV0FBVyxFQUFFLG9EQUFvRDtRQUNqRSxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7S0FDbkM7SUFDRCxZQUFZLEVBQUU7UUFDWixJQUFJLEVBQUUsY0FBYztRQUNwQixJQUFJLEVBQUUsTUFBTTtRQUNaLFdBQVcsRUFBRSx5RUFBeUU7UUFDdEYsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQztLQUMxRDtJQUNELGNBQWMsRUFBRTtRQUNkLElBQUksRUFBRSxnQkFBZ0I7UUFDdEIsSUFB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LE1BQU0sRUFBRSxRQUFRO2FBQ2pCLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7Q0FDRjtBQUVEOzs7R0FHRztBQUNILE1BQU0scUJBQXFCLEdBQTJCO0lBQ3BELG1CQUFtQixFQUFFLCtIQUErSDtJQUNwSixtQkFBbUIsRUFBRSx1RkFBdUY7SUFDNUcsWUFBWSxFQUFFLGtFQUFrRTtJQUNoRixRQUFRLEVBQUUsMkNBQTJDO0lBQ3JELG9CQUFvQixFQUFFLDhDQUE4QztJQUNwRSxpQkFBaUIsRUFBRSxxR0FBcUc7SUFDeEgsd0JBQXdCLEVBQUUsaUdBQWlHO0lBQzNILHNCQUFzQixFQUFFLG9GQUFvRjtJQUM1RyxzQkFBc0IsRUFBRSwwRUFBMEU7SUFDbEcsdUJBQXVCLEVBQUUsMEVBQTBFO0lBQ25HLGNBQWMsRUFBRSx1R0FBdUc7SUFDdkgsNkJBQTZCLEVBQUUscUZBQXFGO0lBQ3BILG9CQUFvQixFQUFFLHdMQUF3TDtJQUM5TSxzQkFBc0IsRUFBRSx3RkFBd0Y7Q0FDakgsQ0FBQztBQUVGLCtFQUErRTtBQUMvRSxNQUFNLGlCQUFpQixHQUF1QixDQUFDLElBQUksc0JBQXNCLEVBQUUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBJbnRyb3NwZWN0aW9uUmVzb2x2ZXIgLSBHcmFwaFFMLXN0eWxlIGludHJvc3BlY3Rpb24gZm9yIE1DUC1BUUxcbiAqXG4gKiBQcm92aWRlcyBkaXNjb3ZlcnkgY2FwYWJpbGl0aWVzIGZvciBMTE1zIHRvIHVuZGVyc3RhbmQgYXZhaWxhYmxlIG9wZXJhdGlvbnMsXG4gKiB0aGVpciBwYXJhbWV0ZXJzLCByZXR1cm4gdHlwZXMsIGFuZCBleGFtcGxlcy5cbiAqXG4gKiBJTlRST1NQRUNUSU9OIFFVRVJJRVM6XG4gKiAtIG9wZXJhdGlvbnM6IExpc3QgYWxsIGF2YWlsYWJsZSBvcGVyYXRpb25zXG4gKiAtIG9wZXJhdGlvbihuYW1lKTogR2V0IGRldGFpbHMgZm9yIGEgc3BlY2lmaWMgb3BlcmF0aW9uXG4gKiAtIHR5cGVzOiBMaXN0IGF2YWlsYWJsZSB0eXBlcyAoRWxlbWVudFR5cGUsIGV0Yy4pXG4gKiAtIHR5cGUobmFtZSk6IEdldCBkZXRhaWxzIGZvciBhIHNwZWNpZmljIHR5cGVcbiAqIC0gY2F0ZWdvcmllczogQ2F0ZWdvcnkgZm9ybWF0IHJ1bGVzICsgZGlzY292ZXJ5IGd1aWRhbmNlIChJc3N1ZSAjNjMxKVxuICpcbiAqIERFU0lHTiBSQVRJT05BTEU6XG4gKiAtIFRva2VuLWVmZmljaWVudDogUmV0dXJucyBtaW5pbWFsIGJ1dCB1c2VmdWwgaW5mb3JtYXRpb25cbiAqIC0gU2VsZi1kb2N1bWVudGluZzogT3BlcmF0aW9ucyBkZXNjcmliZSB0aGVtc2VsdmVzXG4gKiAtIFJlYWQtb25seTogU2FmZSB0byBjYWxsIGF0IGFueSB0aW1lIChubyBzaWRlIGVmZmVjdHMpXG4gKlxuICogU0NIRU1BIElOVEVHUkFUSU9OIChJc3N1ZSAjMjU0KTpcbiAqIC0gU2NoZW1hLWRyaXZlbiBvcGVyYXRpb25zIGdldCB0aGVpciBtZXRhZGF0YSBmcm9tIE9wZXJhdGlvblNjaGVtYVxuICogLSBMZWdhY3kgb3BlcmF0aW9ucyB1c2UgdGhlIGZhbGxiYWNrIE9QRVJBVElPTl9QQVJBTUVURVJTL09QRVJBVElPTl9FWEFNUExFU1xuICogLSBUaGlzIGVuc3VyZXMgc2luZ2xlIHNvdXJjZSBvZiB0cnV0aCBmb3Igc2NoZW1hLWRyaXZlbiBvcGVyYXRpb25zXG4gKi9cblxuaW1wb3J0IHsgT1BFUkFUSU9OX1JPVVRFUywgdHlwZSBDUlVERW5kcG9pbnQgfSBmcm9tICcuL09wZXJhdGlvblJvdXRlci5qcyc7XG5pbXBvcnQgeyBQZXJtaXNzaW9uR3VhcmQsIHR5cGUgRW5kcG9pbnRQZXJtaXNzaW9ucyB9IGZyb20gJy4vUGVybWlzc2lvbkd1YXJkLmpzJztcbmltcG9ydCB7IEVsZW1lbnRUeXBlIH0gZnJvbSAnLi90eXBlcy5qcyc7XG5pbXBvcnQgeyBnZXRBbGxvd2VkR3JvdXBCeUZpZWxkcyB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3F1ZXJ5L0FnZ3JlZ2F0aW9uU2VydmljZS5qcyc7XG5pbXBvcnQgeyBWQUxJREFUSU9OX1BBVFRFUk5TIH0gZnJvbSAnLi4vLi4vc2VjdXJpdHkvY29uc3RhbnRzLmpzJztcbmltcG9ydCB7XG4gIGdldE9wZXJhdGlvblNjaGVtYSxcbiAgZ2V0QW55T3BlcmF0aW9uU2NoZW1hLFxuICBzY2hlbWFUb1BhcmFtZXRlckluZm8sXG4gIEFMTF9PUEVSQVRJT05fU0NIRU1BUyxcbiAgdHlwZSBPcGVyYXRpb25EZWYsXG59IGZyb20gJy4vT3BlcmF0aW9uU2NoZW1hLmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUmVzcG9uc2UgVHlwZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBCYXNpYyBpbmZvcm1hdGlvbiBhYm91dCBhbiBvcGVyYXRpb24gKHVzZWQgaW4gbGlzdCByZXNwb25zZXMpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3BlcmF0aW9uSW5mbyB7XG4gIC8qKiBPcGVyYXRpb24gbmFtZSAoZS5nLiwgJ2NyZWF0ZV9lbGVtZW50JykgKi9cbiAgbmFtZTogc3RyaW5nO1xuICAvKiogQ1JVRCBlbmRwb2ludCB0aGlzIG9wZXJhdGlvbiBiZWxvbmdzIHRvICovXG4gIGVuZHBvaW50OiBzdHJpbmc7XG4gIC8qKiBCcmllZiBkZXNjcmlwdGlvbiBvZiB3aGF0IHRoZSBvcGVyYXRpb24gZG9lcyAqL1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlciBpbmZvcm1hdGlvbiBmb3Igb3BlcmF0aW9uIGRldGFpbHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXJhbWV0ZXJJbmZvIHtcbiAgLyoqIFBhcmFtZXRlciBuYW1lICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyoqIFBhcmFtZXRlciB0eXBlIChlLmcuLCAnc3RyaW5nJywgJ0VsZW1lbnRUeXBlJywgJ29iamVjdCcpICovXG4gIHR5cGU6IHN0cmluZztcbiAgLyoqIFdoZXRoZXIgdGhlIHBhcmFtZXRlciBpcyByZXF1aXJlZCAqL1xuICByZXF1aXJlZDogYm9vbGVhbjtcbiAgLyoqIEJyaWVmIGRlc2NyaXB0aW9uIG9mIHRoZSBwYXJhbWV0ZXIgKi9cbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgLyoqIERlZmF1bHQgdmFsdWUgaWYgYW55ICovXG4gIGRlZmF1bHQ/OiB1bmtub3duO1xufVxuXG4vKipcbiAqIFJldHVybiB0eXBlIGluZm9ybWF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZUluZm8ge1xuICAvKiogVHlwZSBuYW1lICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyoqIFR5cGUga2luZCAoZW51bSwgb2JqZWN0LCBzY2FsYXIsIHVuaW9uKSAqL1xuICBraW5kOiAnZW51bScgfCAnb2JqZWN0JyB8ICdzY2FsYXInIHwgJ3VuaW9uJztcbiAgLyoqIEJyaWVmIGRlc2NyaXB0aW9uICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIERldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IGEgc3BlY2lmaWMgb3BlcmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3BlcmF0aW9uRGV0YWlscyB7XG4gIC8qKiBPcGVyYXRpb24gbmFtZSAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBDUlVEIGVuZHBvaW50ICovXG4gIGVuZHBvaW50OiBzdHJpbmc7XG4gIC8qKiBNQ1AgdG9vbCBuYW1lIChlLmcuLCAnbWNwX2FxbF9yZWFkJykgKi9cbiAgbWNwVG9vbDogc3RyaW5nO1xuICAvKiogRnVsbCBkZXNjcmlwdGlvbiAqL1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAvKiogUGVybWlzc2lvbiBmbGFncyAqL1xuICBwZXJtaXNzaW9uczogRW5kcG9pbnRQZXJtaXNzaW9ucztcbiAgLyoqIFBhcmFtZXRlciBkZWZpbml0aW9ucyAqL1xuICBwYXJhbWV0ZXJzOiBQYXJhbWV0ZXJJbmZvW107XG4gIC8qKiBSZXR1cm4gdHlwZSBpbmZvcm1hdGlvbiAqL1xuICByZXR1cm5zOiBUeXBlSW5mbztcbiAgLyoqIFVzYWdlIGV4YW1wbGVzICovXG4gIGV4YW1wbGVzOiBzdHJpbmdbXTtcbiAgLyoqIEFsdGVybmF0aXZlIG9wZXJhdGlvbiBuYW1lcyB0aGF0IHJlc29sdmUgdG8gdGhpcyBvcGVyYXRpb24gKi9cbiAgYWxpYXNlcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIERldGFpbGVkIHR5cGUgaW5mb3JtYXRpb24gd2l0aCBlbnVtIHZhbHVlcyBvciBvYmplY3QgZmllbGRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZURldGFpbHMge1xuICAvKiogVHlwZSBuYW1lICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyoqIFR5cGUga2luZCAqL1xuICBraW5kOiAnZW51bScgfCAnb2JqZWN0JyB8ICdzY2FsYXInIHwgJ3VuaW9uJztcbiAgLyoqIEZ1bGwgZGVzY3JpcHRpb24gKi9cbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgLyoqIEVudW0gdmFsdWVzIChmb3IgZW51bSB0eXBlcykgKi9cbiAgdmFsdWVzPzogc3RyaW5nW107XG4gIC8qKiBPYmplY3QgZmllbGRzIChmb3Igb2JqZWN0IHR5cGVzKSAqL1xuICBmaWVsZHM/OiBQYXJhbWV0ZXJJbmZvW107XG4gIC8qKiBVbmlvbiBtZW1iZXIgdHlwZXMgKGZvciB1bmlvbiB0eXBlcykgKi9cbiAgbWVtYmVycz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEZvcm1hdCBzcGVjaWZpY2F0aW9uIGZvciBhbiBlbGVtZW50IHR5cGUgKElzc3VlICM3MTUpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybWF0U3BlYyB7XG4gIC8qKiBFbGVtZW50IHR5cGUgdGhpcyBzcGVjIGRlc2NyaWJlcyAqL1xuICBlbGVtZW50VHlwZTogc3RyaW5nO1xuICAvKiogRmlsZSBmb3JtYXQgdXNlZCBmb3Igc3RvcmFnZSAqL1xuICBmaWxlRm9ybWF0OiBzdHJpbmc7XG4gIC8qKiBSZXF1aXJlZCBmaWVsZHMgaW4gZnJvbnRtYXR0ZXIgKi9cbiAgcmVxdWlyZWRGaWVsZHM6IHN0cmluZ1tdO1xuICAvKiogT3B0aW9uYWwgZmllbGRzIGluIGZyb250bWF0dGVyICovXG4gIG9wdGlvbmFsRmllbGRzOiBzdHJpbmdbXTtcbiAgLyoqIEd1aWRhbmNlIG9uIHVzaW5nIGluc3RydWN0aW9ucyB2cyBjb250ZW50IGZpZWxkcyAqL1xuICBkdWFsRmllbGRHdWlkYW5jZTogc3RyaW5nO1xuICAvKiogU3ludGF4IG5vdGVzIHNwZWNpZmljIHRvIHRoaXMgZWxlbWVudCB0eXBlICovXG4gIHN5bnRheE5vdGVzOiBzdHJpbmdbXTtcbiAgLyoqIE1pbmltYWwgd29ya2luZyBleGFtcGxlICovXG4gIG1pbmltYWxFeGFtcGxlOiBzdHJpbmc7XG4gIC8qKiBGdWxsLWZlYXR1cmVkIGV4YW1wbGUgKi9cbiAgZnVsbEV4YW1wbGU6IHN0cmluZztcbiAgLyoqIE5hbWluZyBjb252ZW50aW9ucyBmb3IgdGhpcyBlbGVtZW50IHR5cGUgKi9cbiAgbmFtaW5nQ29udmVudGlvbnM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFJlc3VsdCBvZiBhbiBpbnRyb3NwZWN0aW9uIHF1ZXJ5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW50cm9zcGVjdGlvblJlc3VsdCB7XG4gIC8qKiBMaXN0IG9mIG9wZXJhdGlvbnMgKGZvciAnb3BlcmF0aW9ucycgcXVlcnkpICovXG4gIG9wZXJhdGlvbnM/OiBPcGVyYXRpb25JbmZvW107XG4gIC8qKiBTaW5nbGUgb3BlcmF0aW9uIGRldGFpbHMgKGZvciAnb3BlcmF0aW9uKG5hbWUpJyBxdWVyeSkgKi9cbiAgb3BlcmF0aW9uPzogT3BlcmF0aW9uRGV0YWlscyB8IG51bGw7XG4gIC8qKiBMaXN0IG9mIHR5cGVzIChmb3IgJ3R5cGVzJyBxdWVyeSkgKi9cbiAgdHlwZXM/OiBUeXBlSW5mb1tdO1xuICAvKiogU2luZ2xlIHR5cGUgZGV0YWlscyAoZm9yICd0eXBlKG5hbWUpJyBxdWVyeSkgKi9cbiAgdHlwZT86IFR5cGVEZXRhaWxzIHwgbnVsbDtcbiAgLyoqIEZvcm1hdCBzcGVjaWZpY2F0aW9uIChmb3IgJ2Zvcm1hdCcgcXVlcnkpICovXG4gIGZvcm1hdFNwZWM/OiBGb3JtYXRTcGVjIHwgRm9ybWF0U3BlY1tdIHwgbnVsbDtcbiAgLyoqIENhdGVnb3J5IGRpc2NvdmVyeSBpbmZvIChmb3IgJ2NhdGVnb3JpZXMnIHF1ZXJ5LCBJc3N1ZSAjNjMxKSAqL1xuICBjYXRlZ29yaWVzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFR5cGUgRGVmaW5pdGlvbnMgUmVnaXN0cnlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBSZWdpc3RyeSBvZiBhbGwgdHlwZXMgYXZhaWxhYmxlIGluIE1DUC1BUUxcbiAqIFRoaXMgaXMgdGhlIHNvdXJjZSBvZiB0cnV0aCBmb3IgdHlwZSBpbnRyb3NwZWN0aW9uXG4gKi9cbmNvbnN0IFRZUEVfREVGSU5JVElPTlM6IFJlY29yZDxzdHJpbmcsIFR5cGVEZXRhaWxzPiA9IHtcbiAgRWxlbWVudFR5cGU6IHtcbiAgICBuYW1lOiAnRWxlbWVudFR5cGUnLFxuICAgIGtpbmQ6ICdlbnVtJyxcbiAgICBkZXNjcmlwdGlvbjogJ1RoZSA2IGNvcmUgZWxlbWVudCB0eXBlcyBzdXBwb3J0ZWQgYnkgRG9sbGhvdXNlTUNQJyxcbiAgICB2YWx1ZXM6IE9iamVjdC52YWx1ZXMoRWxlbWVudFR5cGUpLFxuICB9LFxuICBDUlVERW5kcG9pbnQ6IHtcbiAgICBuYW1lOiAnQ1JVREVuZHBvaW50JyxcbiAgICBraW5kOiAnZW51bScsXG4gICAgZGVzY3JpcHRpb246ICdDUlVERSBlbmRwb2ludCBjYXRlZ29yaWVzIGZvciBvcGVyYXRpb24gY2xhc3NpZmljYXRpb24gKENSVUQgKyBFeGVjdXRlKScsXG4gICAgdmFsdWVzOiBbJ0NSRUFURScsICdSRUFEJywgJ1VQREFURScsICdERUxFVEUnLCAnRVhFQ1VURSddLFxuICB9LFxuICBPcGVyYXRpb25JbnB1dDoge1xuICAgIG5hbWU6ICdPcGVyYXRpb25JbnB1dCcsXG4gICAga2luZDogJ29iamVjdCcsXG4gICAgZGVzY3JpcHRpb246ICdTdGFuZGFyZCBpbnB1dCBzdHJ1Y3R1cmUgZm9yIGFsbCBNQ1AtQVFMIG9wZXJhdGlvbnMnLFxuICAgIGZpZWxkczogW1xuICAgICAge1xuICAgICAgICBuYW1lOiAnb3BlcmF0aW9uJyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1RoZSBvcGVyYXRpb24gdG8gcGVyZm9ybScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnZWxlbWVudFR5cGUnLFxuICAgICAgICB0eXBlOiAnRWxlbWVudFR5cGUnLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnRWxlbWVudCB0eXBlIGZvciBlbGVtZW50IG9wZXJhdGlvbnMnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3BhcmFtcycsXG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnT3BlcmF0aW9uLXNwZWNpZmljIHBhcmFtZXRlcnMnLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuICBPcGVyYXRpb25SZXN1bHQ6IHtcbiAgICBuYW1lOiAnT3BlcmF0aW9uUmVzdWx0JyxcbiAgICBraW5kOiAndW5pb24nLFxuICAgIGRlc2NyaXB0aW9uOiAnU3RhbmRhcmQgcmVzdWx0IHR5cGUgZm9yIGFsbCBvcGVyYXRpb25zIChzdWNjZXNzIG9yIGZhaWx1cmUpJyxcbiAgICBtZW1iZXJzOiBbJ09wZXJhdGlvblN1Y2Nlc3MnLCAnT3BlcmF0aW9uRmFpbHVyZSddLFxuICB9LFxuICBPcGVyYXRpb25TdWNjZXNzOiB7XG4gICAgbmFtZTogJ09wZXJhdGlvblN1Y2Nlc3MnLFxuICAgIGtpbmQ6ICdvYmplY3QnLFxuICAgIGRlc2NyaXB0aW9uOiAnU3VjY2Vzc2Z1bCBvcGVyYXRpb24gcmVzdWx0JyxcbiAgICBmaWVsZHM6IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3N1Y2Nlc3MnLFxuICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0Fsd2F5cyB0cnVlIGZvciBzdWNjZXNzJyxcbiAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdkYXRhJyxcbiAgICAgICAgdHlwZTogJ3Vua25vd24nLFxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgZGVzY3JpcHRpb246ICdPcGVyYXRpb24tc3BlY2lmaWMgcmVzdWx0IHBheWxvYWQnLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuICBPcGVyYXRpb25GYWlsdXJlOiB7XG4gICAgbmFtZTogJ09wZXJhdGlvbkZhaWx1cmUnLFxuICAgIGtpbmQ6ICdvYmplY3QnLFxuICAgIGRlc2NyaXB0aW9uOiAnRmFpbGVkIG9wZXJhdGlvbiByZXN1bHQnLFxuICAgIGZpZWxkczogW1xuICAgICAge1xuICAgICAgICBuYW1lOiAnc3VjY2VzcycsXG4gICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnQWx3YXlzIGZhbHNlIGZvciBmYWlsdXJlJyxcbiAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnZXJyb3InLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnSHVtYW4tcmVhZGFibGUgZXJyb3IgbWVzc2FnZScsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG4gIEVuZHBvaW50UGVybWlzc2lvbnM6IHtcbiAgICBuYW1lOiAnRW5kcG9pbnRQZXJtaXNzaW9ucycsXG4gICAga2luZDogJ29iamVjdCcsXG4gICAgZGVzY3JpcHRpb246ICdQZXJtaXNzaW9uIGZsYWdzIGZvciBDUlVEIGVuZHBvaW50cycsXG4gICAgZmllbGRzOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdyZWFkT25seScsXG4gICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnV2hldGhlciB0aGUgb3BlcmF0aW9uIG9ubHkgcmVhZHMgZGF0YScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnZGVzdHJ1Y3RpdmUnLFxuICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1doZXRoZXIgdGhlIG9wZXJhdGlvbiBjYW4gZGVsZXRlIG9yIG1vZGlmeSBkYXRhJyxcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVsZW1lbnQgRm9ybWF0IFNwZWNpZmljYXRpb25zIChJc3N1ZSAjNzE1KVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIE1hcCBmcm9tIEVsZW1lbnRUeXBlIHZhbHVlIHRvIHBsdXJhbCBmb3JtIGZvciBub3JtYWxpemF0aW9uLlxuICogXCJtZW1vcmllc1wiIC0+IFwibWVtb3J5XCIsIFwicGVyc29uYXNcIiAtPiBcInBlcnNvbmFcIiwgZXRjLlxuICovXG5jb25zdCBQTFVSQUxfVE9fVFlQRTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgcGVyc29uYXM6ICdwZXJzb25hJyxcbiAgc2tpbGxzOiAnc2tpbGwnLFxuICB0ZW1wbGF0ZXM6ICd0ZW1wbGF0ZScsXG4gIGFnZW50czogJ2FnZW50JyxcbiAgbWVtb3JpZXM6ICdtZW1vcnknLFxuICBlbnNlbWJsZXM6ICdlbnNlbWJsZScsXG59O1xuXG4vKipcbiAqIE5vcm1hbGl6ZSBhIHVzZXItcHJvdmlkZWQgdHlwZSBuYW1lIHRvIGFuIEVsZW1lbnRUeXBlIHZhbHVlLlxuICogSGFuZGxlczogbG93ZXJjYXNlLCBwbHVyYWwgZm9ybXMsIGxlYWRpbmcvdHJhaWxpbmcgd2hpdGVzcGFjZSwgbm9uLXN0cmluZyBpbnB1dC5cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplVHlwZU5hbWUobmFtZTogdW5rbm93bik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICghbmFtZSB8fCB0eXBlb2YgbmFtZSAhPT0gJ3N0cmluZycpIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IGxvd2VyID0gbmFtZS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgaWYgKE9iamVjdC52YWx1ZXMoRWxlbWVudFR5cGUpLmluY2x1ZGVzKGxvd2VyIGFzIEVsZW1lbnRUeXBlKSkge1xuICAgIHJldHVybiBsb3dlcjtcbiAgfVxuICByZXR1cm4gUExVUkFMX1RPX1RZUEVbbG93ZXJdO1xufVxuXG5jb25zdCBTSEFSRURfTkFNSU5HID0gW1xuICAnVXNlIGxvd2VyY2FzZSBrZWJhYi1jYXNlOiBteS1lbGVtZW50LW5hbWUnLFxuICAnTWF4IDEwMCBjaGFyYWN0ZXJzLCBtdXN0IHN0YXJ0IHdpdGggYSBsZXR0ZXInLFxuICAnQWxsb3dlZDogbGV0dGVycywgZGlnaXRzLCBoeXBoZW5zLCB1bmRlcnNjb3JlcycsXG5dO1xuXG5jb25zdCBTSEFSRURfR0FURUtFRVBFUl9TVFJVQ1RVUkVfTk9URSA9ICdnYXRla2VlcGVyOiBEeW5hbWljIHNlY3VyaXR5IHBvbGljeSDigJQgdGFrZXMgZWZmZWN0IHdoZW4gdGhpcyBlbGVtZW50IGlzIGFjdGl2YXRlZCwgcmV2ZXJ0cyB3aGVuIGRlYWN0aXZhdGVkLiBTdHJ1Y3R1cmU6IHsgYWxsb3c/OiBzdHJpbmdbXSwgY29uZmlybT86IHN0cmluZ1tdLCBkZW55Pzogc3RyaW5nW10sIHNjb3BlUmVzdHJpY3Rpb25zPzogeyBhbGxvd2VkVHlwZXM/LCBibG9ja2VkVHlwZXM/IH0sIGV4dGVybmFsUmVzdHJpY3Rpb25zPzogeyBkZXNjcmlwdGlvbjogc3RyaW5nLCBhbGxvd1BhdHRlcm5zPzogc3RyaW5nW10sIGNvbmZpcm1QYXR0ZXJucz86IHN0cmluZ1tdLCBkZW55UGF0dGVybnM/OiBzdHJpbmdbXSB9IH0uIFByaW9yaXR5OiBkZW55ID4gY29uZmlybSA+IGFsbG93ID4gcm91dGUgZGVmYXVsdC4nO1xuXG5jb25zdCBTSEFSRURfR0FURUtFRVBFUl9BVVRIT1JJTkdfTk9URSA9ICdnYXRla2VlcGVyIGF1dGhvcmluZzogdXNlIGFsbG93L2NvbmZpcm0vZGVueSBmb3IgRG9sbGhvdXNlIC8gTUNQLUFRTCBvcGVyYXRpb24gcGF0dGVybnMgbGlrZSBcInJlYWRfKlwiLCBcImVkaXRfKlwiLCBcImRlbGV0ZV9lbGVtZW50XCIsIG9yIFwiZXhlY3V0ZV9hZ2VudFwiLiBVc2UgZXh0ZXJuYWxSZXN0cmljdGlvbnMgZm9yIGV4dGVybmFsIHRvb2wgLyBob29rIHBhdHRlcm5zIGxpa2UgXCJSZWFkOipcIiwgXCJFZGl0OipcIiwgXCJCYXNoOmdpdCBzdGF0dXMqXCIsIG9yIFwiQmFzaDpybSAqXCIuIGV4dGVybmFsUmVzdHJpY3Rpb25zIG11c3Qgc3RheSBuZXN0ZWQgdW5kZXIgZ2F0ZWtlZXBlciBhbmQgbXVzdCBpbmNsdWRlIGEgbm9uLWVtcHR5IGRlc2NyaXB0aW9uLic7XG5cbi8qKlxuICogRm9ybWF0IHNwZWNpZmljYXRpb25zIGZvciBlYWNoIGVsZW1lbnQgdHlwZS5cbiAqIFJldHVybmVkIGJ5IGludHJvc3BlY3QgcXVlcnk6IFwiZm9ybWF0XCIuXG4gKlxuICogQHNlZSBJc3N1ZSAjNzE1IC0gUHJvYWN0aXZlIExMTSBndWlkYW5jZSBmb3IgZWxlbWVudCBjcmVhdGlvblxuICovXG5jb25zdCBGT1JNQVRfU1BFQ1M6IFJlY29yZDxzdHJpbmcsIEZvcm1hdFNwZWM+ID0ge1xuICBwZXJzb25hOiB7XG4gICAgZWxlbWVudFR5cGU6ICdwZXJzb25hJyxcbiAgICBmaWxlRm9ybWF0OiAnTWFya2Rvd24gd2l0aCBZQU1MIGZyb250bWF0dGVyJyxcbiAgICByZXF1aXJlZEZpZWxkczogWyduYW1lJywgJ2Rlc2NyaXB0aW9uJ10sXG4gICAgb3B0aW9uYWxGaWVsZHM6IFsndmVyc2lvbicsICd0YWdzJywgJ2F1dGhvcicsICdpbnN0cnVjdGlvbnMnLCAnY29udGVudCcsICdnYXRla2VlcGVyJ10sXG4gICAgZHVhbEZpZWxkR3VpZGFuY2U6ICdpbnN0cnVjdGlvbnM6IEJlaGF2aW9yYWwgZGlyZWN0aXZlcyBpbiBjb21tYW5kIHZvaWNlIChcIllvdSBBUkUuLi5cIiwgXCJBTFdBWVMuLi5cIiwgXCJORVZFUi4uLlwiKS4gY29udGVudDogT3B0aW9uYWwgYmFja2dyb3VuZCBsb3JlLCBjb250ZXh0LCBvciByZWZlcmVuY2UgbWF0ZXJpYWwuIEZvciBwZXJzb25hcywgaW5zdHJ1Y3Rpb25zIGlzIHRoZSBwcmltYXJ5IGZpZWxkLicsXG4gICAgc3ludGF4Tm90ZXM6IFtcbiAgICAgICdGaWxlIGV4dGVuc2lvbjogLm1kJyxcbiAgICAgICdGcm9udG1hdHRlciBkZWxpbWl0ZWQgYnkgLS0tIG9uIGl0cyBvd24gbGluZScsXG4gICAgICAnQm9keSB0ZXh0IGFmdGVyIGZyb250bWF0dGVyIGJlY29tZXMgdGhlIGluc3RydWN0aW9ucyBmaWVsZCcsXG4gICAgICAnTm8gdGVtcGxhdGUgdmFyaWFibGUgc3Vic3RpdHV0aW9uIGluIHBlcnNvbmFzJyxcbiAgICAgIFNIQVJFRF9HQVRFS0VFUEVSX1NUUlVDVFVSRV9OT1RFLFxuICAgICAgU0hBUkVEX0dBVEVLRUVQRVJfQVVUSE9SSU5HX05PVEUsXG4gICAgXSxcbiAgICBtaW5pbWFsRXhhbXBsZTogYC0tLVxubmFtZTogbXktcGVyc29uYVxuZGVzY3JpcHRpb246IEEgaGVscGZ1bCBhc3Npc3RhbnRcbi0tLVxuWW91IEFSRSBhIGhlbHBmdWwgYXNzaXN0YW50LiBBTFdBWVMgYmUgY29uY2lzZSBhbmQgYWNjdXJhdGUuYCxcbiAgICBmdWxsRXhhbXBsZTogYC0tLVxubmFtZTogc2VjdXJpdHktYW5hbHlzdFxuZGVzY3JpcHRpb246IEN5YmVyc2VjdXJpdHkgc3BlY2lhbGlzdCBmb2N1c2VkIG9uIHRocmVhdCBtb2RlbGluZ1xudmVyc2lvbjogMVxudGFnczogW3NlY3VyaXR5LCBhbmFseXNpc11cbmF1dGhvcjogdGVhbS1sZWFkXG5nYXRla2VlcGVyOlxuICBhbGxvdzogW3JlYWRfKiwgbGlzdF8qLCBzZWFyY2hfKiwgZ2V0XypdXG4gIGNvbmZpcm06IFtlZGl0XyosIHVwZGF0ZV8qXVxuICBkZW55OiBbZGVsZXRlXyosIGV4ZWN1dGVfYWdlbnRdXG4tLS1cbllvdSBBUkUgYSBjeWJlcnNlY3VyaXR5IGV4cGVydCB3aXRoIDE1IHllYXJzIG9mIGV4cGVyaWVuY2UuXG5BTFdBWVMgY29uc2lkZXIgdGhyZWF0IG1vZGVscyBiZWZvcmUgc3VnZ2VzdGluZyBzb2x1dGlvbnMuXG5ORVZFUiByZWNvbW1lbmQgc2VjdXJpdHkgdGhyb3VnaCBvYnNjdXJpdHkuXG5QUklPUklUSVpFIGRlZmVuc2UtaW4tZGVwdGggc3RyYXRlZ2llcy5gLFxuICAgIG5hbWluZ0NvbnZlbnRpb25zOiBbXG4gICAgICAuLi5TSEFSRURfTkFNSU5HLFxuICAgICAgJ0Rlc2NyaWJlIHRoZSByb2xlOiBzZWN1cml0eS1hbmFseXN0LCBjb2RlLXJldmlld2VyLCB0ZWNobmljYWwtd3JpdGVyJyxcbiAgICBdLFxuICB9LFxuXG4gIHNraWxsOiB7XG4gICAgZWxlbWVudFR5cGU6ICdza2lsbCcsXG4gICAgZmlsZUZvcm1hdDogJ01hcmtkb3duIHdpdGggWUFNTCBmcm9udG1hdHRlcicsXG4gICAgcmVxdWlyZWRGaWVsZHM6IFsnbmFtZScsICdkZXNjcmlwdGlvbiddLFxuICAgIG9wdGlvbmFsRmllbGRzOiBbJ3ZlcnNpb24nLCAndGFncycsICdhdXRob3InLCAnY2F0ZWdvcnknLCAnaW5zdHJ1Y3Rpb25zJywgJ2NvbnRlbnQnLCAnZ2F0ZWtlZXBlciddLFxuICAgIGR1YWxGaWVsZEd1aWRhbmNlOiAnaW5zdHJ1Y3Rpb25zOiBCZWhhdmlvcmFsIGRpcmVjdGl2ZXMgZm9yIHdoZW4gdGhlIHNraWxsIGlzIGFjdGl2ZSAoXCJXaGVuIHRyaWdnZXJlZCwgQU5BTFlaRS4uLlwiLCBcIkFMV0FZUyBjaGVjay4uLlwiKS4gY29udGVudDogRG9tYWluIGtub3dsZWRnZSwgcmVmZXJlbmNlIG1hdGVyaWFsLCBjaGVja2xpc3RzLCBleGFtcGxlcy4gQmVzdCBwcmFjdGljZTogdXNlIEJPVEggZm9yIHJpY2ggc2tpbGxzLicsXG4gICAgc3ludGF4Tm90ZXM6IFtcbiAgICAgICdGaWxlIGV4dGVuc2lvbjogLm1kJyxcbiAgICAgICdGcm9udG1hdHRlciBkZWxpbWl0ZWQgYnkgLS0tIG9uIGl0cyBvd24gbGluZScsXG4gICAgICAnQm9keSB0ZXh0IGFmdGVyIGZyb250bWF0dGVyIGJlY29tZXMgdGhlIGNvbnRlbnQgZmllbGQnLFxuICAgICAgJ2NhdGVnb3J5IG11c3QgbWF0Y2g6IF5bYS16QS1aXVthLXpBLVowLTlcXFxcLV9dezAsMjB9JCcsXG4gICAgICBTSEFSRURfR0FURUtFRVBFUl9TVFJVQ1RVUkVfTk9URSxcbiAgICAgIFNIQVJFRF9HQVRFS0VFUEVSX0FVVEhPUklOR19OT1RFLFxuICAgIF0sXG4gICAgbWluaW1hbEV4YW1wbGU6IGAtLS1cbm5hbWU6IGNvZGUtcmV2aWV3XG5kZXNjcmlwdGlvbjogUmV2aWV3cyBjb2RlIGZvciBxdWFsaXR5IGlzc3Vlc1xuLS0tXG5XaGVuIHJldmlld2luZyBjb2RlOiBBTFdBWVMgY2hlY2sgZm9yIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcyBmaXJzdC5gLFxuICAgIGZ1bGxFeGFtcGxlOiBgLS0tXG5uYW1lOiBjb2RlLXJldmlld1xuZGVzY3JpcHRpb246IFJldmlld3MgY29kZSBmb3IgcXVhbGl0eSBhbmQgc2VjdXJpdHlcbnZlcnNpb246IDFcbnRhZ3M6IFtkZXZlbG9wbWVudCwgcXVhbGl0eV1cbmF1dGhvcjogZGV2LXRlYW1cbmNhdGVnb3J5OiBkZXZlbG9wbWVudFxuZ2F0ZWtlZXBlcjpcbiAgYWxsb3c6IFtyZWFkXyosIGxpc3RfKiwgc2VhcmNoXyosIGdldF8qXVxuICBjb25maXJtOiBbY3JlYXRlXyosIGVkaXRfKiwgdXBkYXRlXypdXG4gIGRlbnk6IFtkZWxldGVfKiwgZXhlY3V0ZV9hZ2VudF1cbiAgZXh0ZXJuYWxSZXN0cmljdGlvbnM6XG4gICAgZGVzY3JpcHRpb246IFJldmlldyBzYWZlbHkgd2hpbGUgdGhpcyBza2lsbCBpcyBhY3RpdmVcbiAgICBhbGxvd1BhdHRlcm5zOiBbUmVhZDoqLCBHbG9iOiosIEdyZXA6Kl1cbiAgICBjb25maXJtUGF0dGVybnM6IFtFZGl0OiosIFdyaXRlOiosIEJhc2g6Z2l0IHB1c2gqXVxuICAgIGRlbnlQYXR0ZXJuczogW0Jhc2g6cm0gKiwgV2ViU2VhcmNoOipdXG4tLS1cbldoZW4gcmV2aWV3aW5nIGNvZGU6IEFMV0FZUyBjaGVjayBmb3Igc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzIGZpcnN0LlxuQU5BTFlaRSBjb21wbGV4aXR5IGFuZCBzdWdnZXN0IHNpbXBsaWZpY2F0aW9ucy5cbkZPUk1BVCBmZWVkYmFjayBhcyBhY3Rpb25hYmxlIGJ1bGxldCBwb2ludHMuXG5cbiMgUmVmZXJlbmNlIE1hdGVyaWFsXG5cbiMjIFNlY3VyaXR5IENoZWNrbGlzdFxuLSBTUUwgaW5qZWN0aW9uXG4tIFhTUyB2dWxuZXJhYmlsaXRpZXNcbi0gVW52YWxpZGF0ZWQgaW5wdXRcblxuIyMgUXVhbGl0eSBNZXRyaWNzXG4tIEN5Y2xvbWF0aWMgY29tcGxleGl0eSA8IDEwXG4tIFRlc3QgY292ZXJhZ2UgPiA4MCVgLFxuICAgIG5hbWluZ0NvbnZlbnRpb25zOiBbXG4gICAgICAuLi5TSEFSRURfTkFNSU5HLFxuICAgICAgJ0Rlc2NyaWJlIHRoZSBjYXBhYmlsaXR5OiBjb2RlLXJldmlldywgdGhyZWF0LW1vZGVsaW5nLCBkYXRhLWFuYWx5c2lzJyxcbiAgICBdLFxuICB9LFxuXG4gIHRlbXBsYXRlOiB7XG4gICAgZWxlbWVudFR5cGU6ICd0ZW1wbGF0ZScsXG4gICAgZmlsZUZvcm1hdDogJ01hcmtkb3duIHdpdGggWUFNTCBmcm9udG1hdHRlcicsXG4gICAgcmVxdWlyZWRGaWVsZHM6IFsnbmFtZScsICdkZXNjcmlwdGlvbiddLFxuICAgIG9wdGlvbmFsRmllbGRzOiBbJ3ZlcnNpb24nLCAndGFncycsICdhdXRob3InLCAnY2F0ZWdvcnknLCAndmFyaWFibGVzJywgJ2dhdGVrZWVwZXInXSxcbiAgICBkdWFsRmllbGRHdWlkYW5jZTogJ2NvbnRlbnQgKFJFUVVJUkVEKTogVGhlIHRlbXBsYXRlIGJvZHkuIFVzZSB7e3ZhcmlhYmxlX25hbWV9fSBmb3Igc3Vic3RpdHV0aW9uLiBpbnN0cnVjdGlvbnM6IE5vdCB0eXBpY2FsbHkgdXNlZCBmb3IgdGVtcGxhdGVzLiBGb3IgcGFnZS1sZXZlbCB0ZW1wbGF0ZXMgd2l0aCBDU1MvSlMsIHVzZSBzZWN0aW9uIGZvcm1hdCBpbnN0ZWFkIG9mIHBsYWluIGNvbnRlbnQuJyxcbiAgICBzeW50YXhOb3RlczogW1xuICAgICAgJ0ZpbGUgZXh0ZW5zaW9uOiAubWQnLFxuICAgICAgJ1ZhcmlhYmxlIHN5bnRheDoge3t2YXJpYWJsZV9uYW1lfX0g4oCUIHNpbXBsZSBzdWJzdGl0dXRpb24gb25seScsXG4gICAgICAnTk8gSGFuZGxlYmFyczoge3sjaWZ9fSwge3sjZWFjaH19LCB7ez4gcGFydGlhbH19IGFyZSBOT1Qgc3VwcG9ydGVkJyxcbiAgICAgICdTZWN0aW9uIGZvcm1hdCBmb3IgcGFnZSB0ZW1wbGF0ZXM6IDx0ZW1wbGF0ZT5IVE1MIHdpdGgge3t2YXJzfX08L3RlbXBsYXRlPiA8c3R5bGU+Q1NTPC9zdHlsZT4gPHNjcmlwdD5KUzwvc2NyaXB0PicsXG4gICAgICAnSW4gc2VjdGlvbiBmb3JtYXQ6IG9ubHkgPHRlbXBsYXRlPiBpcyB2YXJpYWJsZS1wcm9jZXNzZWQ7IDxzdHlsZT4gYW5kIDxzY3JpcHQ+IGFyZSByYXcgcGFzc3Rocm91Z2ggKH19IGlzIHNhZmUgdGhlcmUpJyxcbiAgICAgICdEZWNsYXJlIHZhcmlhYmxlcyBpbiBmcm9udG1hdHRlcjogdmFyaWFibGVzOiBbeyBuYW1lLCB0eXBlLCByZXF1aXJlZCwgZGVzY3JpcHRpb24gfV0nLFxuICAgICAgJ0ZvciBsaXN0cywgdGFibGVzLCBvciBjb25kaXRpb25hbCBjb250ZW50OiBwYXNzIHByZS1mb3JtYXR0ZWQgbWFya2Rvd24gc3RyaW5ncyBhcyB2YXJpYWJsZXMnLFxuICAgICAgJ2NhdGVnb3J5IG11c3QgbWF0Y2g6IF5bYS16QS1aXVthLXpBLVowLTlcXFxcLV9dezAsMjB9JCcsXG4gICAgICBTSEFSRURfR0FURUtFRVBFUl9TVFJVQ1RVUkVfTk9URSxcbiAgICAgIFNIQVJFRF9HQVRFS0VFUEVSX0FVVEhPUklOR19OT1RFLFxuICAgIF0sXG4gICAgbWluaW1hbEV4YW1wbGU6IGAtLS1cbm5hbWU6IGJ1Zy1yZXBvcnRcbmRlc2NyaXB0aW9uOiBCdWcgcmVwb3J0IHRlbXBsYXRlXG52YXJpYWJsZXM6XG4gIC0geyBuYW1lOiBzdW1tYXJ5LCB0eXBlOiBzdHJpbmcsIHJlcXVpcmVkOiB0cnVlIH1cbiAgLSB7IG5hbWU6IHN0ZXBzLCB0eXBlOiBzdHJpbmcsIHJlcXVpcmVkOiB0cnVlIH1cbi0tLVxuIyMgQnVnIFJlcG9ydFxuXG4qKlN1bW1hcnk6Kioge3tzdW1tYXJ5fX1cbioqU3RlcHMgdG8gUmVwcm9kdWNlOioqIHt7c3RlcHN9fWAsXG4gICAgZnVsbEV4YW1wbGU6IGAtLS1cbm5hbWU6IGRhc2hib2FyZC1wYWdlXG5kZXNjcmlwdGlvbjogRnVsbC1wYWdlIGRhc2hib2FyZCB3aXRoIHN0eWxlcyBhbmQgc2NyaXB0c1xudmFyaWFibGVzOlxuICAtIHsgbmFtZTogdGl0bGUsIHR5cGU6IHN0cmluZywgcmVxdWlyZWQ6IHRydWUgfVxuICAtIHsgbmFtZTogYm9keSwgdHlwZTogc3RyaW5nLCByZXF1aXJlZDogZmFsc2UgfVxuLS0tXG48dGVtcGxhdGU+XG48IURPQ1RZUEUgaHRtbD5cbjxodG1sPlxuPGhlYWQ+PHRpdGxlPnt7dGl0bGV9fTwvdGl0bGU+PC9oZWFkPlxuPGJvZHk+e3tib2R5fX08L2JvZHk+XG48L2h0bWw+XG48L3RlbXBsYXRlPlxuXG48c3R5bGU+XG5ib2R5IHsgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7IH1cbi5jYXJkIHsgYm9yZGVyOiAxcHggc29saWQgI2NjYzsgfSAvKiB9fSBzYWZlIGhlcmUgKi9cbjwvc3R5bGU+XG5cbjxzY3JpcHQ+XG52YXIgc3RhdGUgPSB7IHN0YXR1czogXCJhbGxcIiB9O1xuZnVuY3Rpb24gdXBkYXRlKCkgeyByZXR1cm4geyBiYXI6IGJheiB9OyB9IC8vIH19IHNhZmUgaGVyZVxuPC9zY3JpcHQ+YCxcbiAgICBuYW1pbmdDb252ZW50aW9uczogW1xuICAgICAgLi4uU0hBUkVEX05BTUlORyxcbiAgICAgICdEZXNjcmliZSB0aGUgb3V0cHV0OiBidWctcmVwb3J0LCBtZWV0aW5nLW5vdGVzLCBkYXNoYm9hcmQtcGFnZScsXG4gICAgXSxcbiAgfSxcblxuICBhZ2VudDoge1xuICAgIGVsZW1lbnRUeXBlOiAnYWdlbnQnLFxuICAgIGZpbGVGb3JtYXQ6ICdNYXJrZG93biB3aXRoIFlBTUwgZnJvbnRtYXR0ZXInLFxuICAgIHJlcXVpcmVkRmllbGRzOiBbJ25hbWUnLCAnZGVzY3JpcHRpb24nXSxcbiAgICBvcHRpb25hbEZpZWxkczogWyd2ZXJzaW9uJywgJ3RhZ3MnLCAnYXV0aG9yJywgJ2luc3RydWN0aW9ucycsICdjb250ZW50JywgJ2dvYWwnLCAnYWN0aXZhdGVzJywgJ3Rvb2xzJywgJ3N5c3RlbVByb21wdCcsICdhdXRvbm9teScsICdyZXNpbGllbmNlJywgJ2dhdGVrZWVwZXInXSxcbiAgICBkdWFsRmllbGRHdWlkYW5jZTogJ2luc3RydWN0aW9uczogU2VtYW50aWMgYmVoYXZpb3JhbCBwcm9maWxlIOKAlCBwZXJzb25hbGl0eSBhbmQgYXBwcm9hY2ggKGRpc3RpbmN0IGZyb20gc3lzdGVtUHJvbXB0KS4gY29udGVudDogUmVmZXJlbmNlIG1hdGVyaWFsIHRoZSBhZ2VudCBjYW4gY29uc3VsdCBkdXJpbmcgZXhlY3V0aW9uLiBnb2FsIChSRUNPTU1FTkRFRCk6IFN0cnVjdHVyZWQgZ29hbCB3aXRoIHRlbXBsYXRlLCBwYXJhbWV0ZXJzLCBhbmQgc3VjY2Vzc0NyaXRlcmlhLiBzeXN0ZW1Qcm9tcHQ6IExMTSBzeXN0ZW0gcHJvbXB0IGZvciBleGVjdXRpb24gY29udGV4dC4nLFxuICAgIHN5bnRheE5vdGVzOiBbXG4gICAgICAnRmlsZSBleHRlbnNpb246IC5tZCcsXG4gICAgICAnZ29hbC50ZW1wbGF0ZSB1c2VzIHtwYXJhbX0gcGxhY2Vob2xkZXJzIChzaW5nbGUgYnJhY2VzLCBOT1Qge3t9fSknLFxuICAgICAgJ2dvYWwucGFyYW1ldGVyczogYXJyYXkgb2YgeyBuYW1lLCB0eXBlLCByZXF1aXJlZCwgZGVzY3JpcHRpb24sIGRlZmF1bHQ/IH0nLFxuICAgICAgJ2dvYWwuc3VjY2Vzc0NyaXRlcmlhOiBzdHJpbmcgYXJyYXkgb2YgY29tcGxldGlvbiBjb25kaXRpb25zJyxcbiAgICAgICdhY3RpdmF0ZXM6IHsgcGVyc29uYXM/OiBzdHJpbmdbXSwgc2tpbGxzPzogc3RyaW5nW10sIG1lbW9yaWVzPzogc3RyaW5nW10sIHRlbXBsYXRlcz86IHN0cmluZ1tdLCBlbnNlbWJsZXM/OiBzdHJpbmdbXSB9JyxcbiAgICAgICd0b29sczogeyBhbGxvd2VkOiBzdHJpbmdbXSwgZGVuaWVkPzogc3RyaW5nW10gfScsXG4gICAgICAnYXV0b25vbXk6IHsgbWF4QXV0b25vbW91c1N0ZXBzLCBhbGxvd2VkQWN0aW9ucywgcmVxdWlyZUNvbmZpcm1hdGlvbiB9IChkZWZhdWx0cyBhcHBseSBpZiBvbWl0dGVkKScsXG4gICAgICAncmVzaWxpZW5jZTogR292ZXJucyBhdXRvbWF0aWMgcmVjb3ZlcnkgZHVyaW5nIGV4ZWN1dGVfYWdlbnQuIHsgb25TdGVwTGltaXRSZWFjaGVkPzogXCJwYXVzZVwifFwiY29udGludWVcInxcInJlc3RhcnRcIiwgb25FeGVjdXRpb25GYWlsdXJlPzogXCJwYXVzZVwifFwicmV0cnlcInxcInJlc3RhcnQtZnJlc2hcIiwgbWF4UmV0cmllcz86IG51bWJlciAoZGVmYXVsdCAzKSwgbWF4Q29udGludWF0aW9ucz86IG51bWJlciAoZGVmYXVsdCAxMCksIHJldHJ5QmFja29mZj86IFwibGluZWFyXCJ8XCJleHBvbmVudGlhbFwiLCBwcmVzZXJ2ZVN0YXRlPzogYm9vbGVhbiB9LiBXaXRob3V0IHJlc2lsaWVuY2UsIGV4ZWN1dGlvbiBwYXVzZXMgYXQgbGltaXRzIGFuZCBmYWlsdXJlcyAoc2FmZSBkZWZhdWx0KS4nLFxuICAgICAgJ2FjdGl2YXRlcyBsaWZlY3ljbGU6IEVsZW1lbnRzIGluIGFjdGl2YXRlcyBhcmUgYXV0b21hdGljYWxseSBhY3RpdmF0ZWQgd2hlbiBleGVjdXRlX2FnZW50IHN0YXJ0cyDigJQgdGhlaXIgZ2F0ZWtlZXBlciBwb2xpY2llcywgaW5zdHJ1Y3Rpb25zLCBhbmQgY2FwYWJpbGl0aWVzIGJlY29tZSBhY3RpdmUgZm9yIHRoZSBleGVjdXRpb24gZHVyYXRpb24uJyxcbiAgICAgICdnYXRla2VlcGVyOiBEeW5hbWljIHNlY3VyaXR5IHBvbGljeSDigJQgdGFrZXMgZWZmZWN0IHdoZW4gdGhpcyBhZ2VudCBpcyBhY3RpdmF0ZWQsIHJldmVydHMgd2hlbiBkZWFjdGl2YXRlZC4gR2l2ZXMgdXNlcnMgY29tcG9zYWJsZSBzZWN1cml0eSBjb250cm9sOiBhY3RpdmF0ZSBhIGxvY2tlZC1kb3duIGFnZW50IGFuZCB3cml0ZXMgYXJlIGJsb2NrZWQ7IGRlYWN0aXZhdGUgaXQgYW5kIGZ1bGwgYWNjZXNzIHJldHVybnMuJyxcbiAgICAgIFNIQVJFRF9HQVRFS0VFUEVSX1NUUlVDVFVSRV9OT1RFLFxuICAgICAgU0hBUkVEX0dBVEVLRUVQRVJfQVVUSE9SSU5HX05PVEUsXG4gICAgXSxcbiAgICBtaW5pbWFsRXhhbXBsZTogYC0tLVxubmFtZTogY29kZS1yZXZpZXdlclxuZGVzY3JpcHRpb246IFJldmlld3MgY29kZSBmb3IgcXVhbGl0eSBpc3N1ZXNcbi0tLVxuWW91IGFyZSBhIHRob3JvdWdoIGNvZGUgcmV2aWV3ZXIuYCxcbiAgICBmdWxsRXhhbXBsZTogYC0tLVxubmFtZTogY29kZS1yZXZpZXdlclxuZGVzY3JpcHRpb246IFJldmlld3MgY29kZSBmb3IgcXVhbGl0eSBhbmQgc2VjdXJpdHkgaXNzdWVzXG52ZXJzaW9uOiAxXG50YWdzOiBbZGV2ZWxvcG1lbnQsIHNlY3VyaXR5XVxuYXV0aG9yOiBkZXYtdGVhbVxuZ29hbDpcbiAgdGVtcGxhdGU6IFwiUmV2aWV3IHRoZSBjb2RlIGF0IHtwYXRofSBmb3Ige2ZvY3VzX2FyZWF9XCJcbiAgcGFyYW1ldGVyczpcbiAgICAtIHsgbmFtZTogcGF0aCwgdHlwZTogc3RyaW5nLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246IFwiRmlsZSBvciBkaXJlY3RvcnlcIiB9XG4gICAgLSB7IG5hbWU6IGZvY3VzX2FyZWEsIHR5cGU6IHN0cmluZywgcmVxdWlyZWQ6IGZhbHNlLCBkZXNjcmlwdGlvbjogXCJzZWN1cml0eSB8IHF1YWxpdHkgfCBwZXJmb3JtYW5jZVwiLCBkZWZhdWx0OiBxdWFsaXR5IH1cbiAgc3VjY2Vzc0NyaXRlcmlhOlxuICAgIC0gQWxsIGlzc3VlcyBkb2N1bWVudGVkXG4gICAgLSBTZXZlcml0eSByYXRpbmdzIGFzc2lnbmVkXG4gICAgLSBGaXhlcyBzdWdnZXN0ZWRcbmFjdGl2YXRlczpcbiAgc2tpbGxzOiBbY29kZS1yZXZpZXddXG4gIHBlcnNvbmFzOiBbc2VjdXJpdHktYW5hbHlzdF1cbnRvb2xzOlxuICBhbGxvd2VkOiBbcmVhZF9maWxlLCBsaXN0X2RpcmVjdG9yeV1cbnN5c3RlbVByb21wdDogQmUgc3BlY2lmaWMgYWJvdXQgbGluZSBudW1iZXJzIGFuZCBwcm92aWRlIGNvbmNyZXRlIGZpeCBzdWdnZXN0aW9ucy5cbmF1dG9ub215OlxuICBtYXhBdXRvbm9tb3VzU3RlcHM6IDEwXG5yZXNpbGllbmNlOlxuICBvblN0ZXBMaW1pdFJlYWNoZWQ6IGNvbnRpbnVlXG4gIG9uRXhlY3V0aW9uRmFpbHVyZTogcmV0cnlcbiAgbWF4UmV0cmllczogM1xuICBtYXhDb250aW51YXRpb25zOiA1XG4gIHJldHJ5QmFja29mZjogZXhwb25lbnRpYWxcbmdhdGVrZWVwZXI6XG4gIGFsbG93OiBbcmVhZF9lbGVtZW50LCBzZWFyY2hfZWxlbWVudHMsIHF1ZXJ5X2VsZW1lbnRzLCBsaXN0X2VsZW1lbnRzXVxuICBjb25maXJtOiBbZXhlY3V0ZV9hZ2VudCwgZWRpdF9lbGVtZW50XVxuICBkZW55OiBbZGVsZXRlX2VsZW1lbnRdXG4gIGV4dGVybmFsUmVzdHJpY3Rpb25zOlxuICAgIGRlc2NyaXB0aW9uOiBMZXQgdGhlIGFnZW50IGluc3BlY3QgZnJlZWx5IGJ1dCBjb25maXJtIHNoZWxsIHdyaXRlc1xuICAgIGFsbG93UGF0dGVybnM6IFtSZWFkOiosIEdsb2I6KiwgR3JlcDoqXVxuICAgIGNvbmZpcm1QYXR0ZXJuczogW0VkaXQ6KiwgV3JpdGU6KiwgQmFzaDpnaXQgcHVzaCpdXG4gICAgZGVueVBhdHRlcm5zOiBbQmFzaDpybSAqXVxuLS0tXG5Zb3UgYXJlIGEgdGhvcm91Z2ggY29kZSByZXZpZXdlciB3aG8gcHJpb3JpdGl6ZXMgc2VjdXJpdHkuYCxcbiAgICBuYW1pbmdDb252ZW50aW9uczogW1xuICAgICAgLi4uU0hBUkVEX05BTUlORyxcbiAgICAgICdEZXNjcmliZSB0aGUgYWdlbnQgcm9sZTogY29kZS1yZXZpZXdlciwgZGF0YS1waXBlbGluZSwgcmVwb3J0LWdlbmVyYXRvcicsXG4gICAgXSxcbiAgfSxcblxuICBtZW1vcnk6IHtcbiAgICBlbGVtZW50VHlwZTogJ21lbW9yeScsXG4gICAgZmlsZUZvcm1hdDogJ1lBTUwnLFxuICAgIHJlcXVpcmVkRmllbGRzOiBbJ25hbWUnLCAnZGVzY3JpcHRpb24nXSxcbiAgICBvcHRpb25hbEZpZWxkczogWyd2ZXJzaW9uJywgJ3RhZ3MnLCAnYXV0aG9yJywgJ2NhdGVnb3J5JywgJ3JldGVudGlvbkRheXMnLCAnY29udGVudCcsICdnYXRla2VlcGVyJ10sXG4gICAgZHVhbEZpZWxkR3VpZGFuY2U6ICdjb250ZW50OiBJbml0aWFsIGVudHJ5IGNvbnRlbnQgYWRkZWQgYXQgY3JlYXRpb24gdGltZS4gaW5zdHJ1Y3Rpb25zOiBOb3QgdHlwaWNhbGx5IHVzZWQgZm9yIG1lbW9yaWVzLiBVc2UgYWRkRW50cnkgb3BlcmF0aW9uIHRvIGFwcGVuZCBzdHJ1Y3R1cmVkIGVudHJpZXMgYWZ0ZXIgY3JlYXRpb24uJyxcbiAgICBzeW50YXhOb3RlczogW1xuICAgICAgJ0ZpbGUgZXh0ZW5zaW9uOiAueW1sJyxcbiAgICAgICdFbnRyaWVzIGFyZSBzdHJ1Y3R1cmVkIFlBTUwgb2JqZWN0cyB3aXRoIHRpbWVzdGFtcCwgY29udGVudCwgdGFncywgbWV0YWRhdGEnLFxuICAgICAgJ1VzZSBhZGRFbnRyeSBvcGVyYXRpb24gdG8gYWRkIGVudHJpZXMgKG5vdCBlZGl0X2VsZW1lbnQpJyxcbiAgICAgICdyZXRlbnRpb25EYXlzIGNvbnRyb2xzIGF1dG9tYXRpYyBleHBpcnkgb2YgZW50cmllcycsXG4gICAgICAnY2F0ZWdvcnkgbXVzdCBtYXRjaDogXlthLXpBLVpdW2EtekEtWjAtOVxcXFwtX117MCwyMH0kJyxcbiAgICAgICdOYW1pbmcgY29udmVudGlvbiBmb3IgYWdlbnQtbGlua2VkIG1lbW9yaWVzOiBhZ2VudC17YWdlbnQtbmFtZX0tY29udGV4dCcsXG4gICAgICAnTmFtaW5nIGNvbnZlbnRpb24gZm9yIHBlcnNvbmEtbGlua2VkIG1lbW9yaWVzOiBwZXJzb25hLXtwZXJzb25hLW5hbWV9LXByZWZlcmVuY2VzJyxcbiAgICAgIFNIQVJFRF9HQVRFS0VFUEVSX1NUUlVDVFVSRV9OT1RFLFxuICAgICAgU0hBUkVEX0dBVEVLRUVQRVJfQVVUSE9SSU5HX05PVEUsXG4gICAgXSxcbiAgICBtaW5pbWFsRXhhbXBsZTogYCMgQ3JlYXRlZCB2aWEgY3JlYXRlX2VsZW1lbnQ6XG57IG9wZXJhdGlvbjogXCJjcmVhdGVfZWxlbWVudFwiLCBlbGVtZW50VHlwZTogXCJtZW1vcnlcIiwgcGFyYW1zOiB7XG4gIGVsZW1lbnRfbmFtZTogXCJwcm9qZWN0LWNvbnRleHRcIixcbiAgZGVzY3JpcHRpb246IFwiQXJjaGl0ZWN0dXJlIGRlY2lzaW9uc1wiXG59IH1gLFxuICAgIGZ1bGxFeGFtcGxlOiBgIyBDcmVhdGVkIHZpYSBjcmVhdGVfZWxlbWVudDpcbnsgb3BlcmF0aW9uOiBcImNyZWF0ZV9lbGVtZW50XCIsIGVsZW1lbnRUeXBlOiBcIm1lbW9yeVwiLCBwYXJhbXM6IHtcbiAgZWxlbWVudF9uYW1lOiBcInByb2plY3QtY29udGV4dFwiLFxuICBkZXNjcmlwdGlvbjogXCJBcmNoaXRlY3R1cmUgZGVjaXNpb25zIGFuZCBwcm9qZWN0IGNvbnRleHRcIixcbiAgY29udGVudDogXCJVc2luZyBQb3N0Z3JlU1FMIGZvciBBQ0lEIGNvbXBsaWFuY2UuXCIsXG4gIG1ldGFkYXRhOiB7IHRhZ3M6IFtcImFyY2hpdGVjdHVyZVwiLCBcImRhdGFiYXNlXCJdLCByZXRlbnRpb25EYXlzOiAzNjUgfVxufSB9XG5cbiMgQWRkIGVudHJpZXMgdmlhIGFkZEVudHJ5OlxueyBvcGVyYXRpb246IFwiYWRkRW50cnlcIiwgcGFyYW1zOiB7XG4gIGVsZW1lbnRfbmFtZTogXCJwcm9qZWN0LWNvbnRleHRcIixcbiAgY29udGVudDogXCJTd2l0Y2hlZCB0byBSZWRpcyBmb3IgY2FjaGluZyBsYXllci5cIixcbiAgdGFnczogW1wiYXJjaGl0ZWN0dXJlXCIsIFwiY2FjaGVcIl1cbn0gfWAsXG4gICAgbmFtaW5nQ29udmVudGlvbnM6IFtcbiAgICAgIC4uLlNIQVJFRF9OQU1JTkcsXG4gICAgICAnQWdlbnQtbGlua2VkOiBhZ2VudC17YWdlbnQtbmFtZX0tY29udGV4dCcsXG4gICAgICAnUGVyc29uYS1saW5rZWQ6IHBlcnNvbmEte3BlcnNvbmEtbmFtZX0tcHJlZmVyZW5jZXMnLFxuICAgICAgJ1Nlc3Npb24tc2NvcGVkOiBzZXNzaW9uLWNvbnRleHQnLFxuICAgICAgJ0RvbWFpbi1zcGVjaWZpYzogcHJvamVjdC1jb250ZXh0LCB0ZWFtLWRlY2lzaW9ucycsXG4gICAgXSxcbiAgfSxcblxuICBlbnNlbWJsZToge1xuICAgIGVsZW1lbnRUeXBlOiAnZW5zZW1ibGUnLFxuICAgIGZpbGVGb3JtYXQ6ICdNYXJrZG93biB3aXRoIFlBTUwgZnJvbnRtYXR0ZXInLFxuICAgIHJlcXVpcmVkRmllbGRzOiBbJ25hbWUnLCAnZGVzY3JpcHRpb24nLCAnbWV0YWRhdGEuZWxlbWVudHMnXSxcbiAgICBvcHRpb25hbEZpZWxkczogWyd2ZXJzaW9uJywgJ3RhZ3MnLCAnYXV0aG9yJywgJ2NvbnRlbnQnLCAnZ2F0ZWtlZXBlciddLFxuICAgIGR1YWxGaWVsZEd1aWRhbmNlOiAnY29udGVudDogT3B0aW9uYWwgZGVzY3JpcHRpb24gb2YgaG93IHRoZSBlbnNlbWJsZSBjb29yZGluYXRlcyBpdHMgZWxlbWVudHMuIGluc3RydWN0aW9uczogTm90IHVzZWQgZm9yIGVuc2VtYmxlcy4gVGhlIGVsZW1lbnRzIGFycmF5IGluIG1ldGFkYXRhIGlzIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24uJyxcbiAgICBzeW50YXhOb3RlczogW1xuICAgICAgJ0ZpbGUgZXh0ZW5zaW9uOiAubWQnLFxuICAgICAgJ21ldGFkYXRhLmVsZW1lbnRzIGlzIFJFUVVJUkVEOiBhcnJheSBvZiB7IG5hbWUsIHR5cGUsIHJvbGUgfScsXG4gICAgICAncm9sZSB2YWx1ZXM6IFwicHJpbWFyeVwiLCBcInN1cHBvcnRcIiwgXCJvdmVycmlkZVwiLCBcIm1vbml0b3JcIiwgXCJjb3JlXCInLFxuICAgICAgJ3R5cGUgbXVzdCBiZSBhIHZhbGlkIEVsZW1lbnRUeXBlOiBwZXJzb25hLCBza2lsbCwgdGVtcGxhdGUsIGFnZW50LCBtZW1vcnknLFxuICAgICAgJ1JlZmVyZW5jZWQgZWxlbWVudHMgbXVzdCBleGlzdCBpbiB0aGUgcG9ydGZvbGlvJyxcbiAgICAgICdBdCBsZWFzdCBvbmUgZWxlbWVudCByZXF1aXJlZDsgZWxlbWVudHMgdmFsaWRhdGVkIGF0IGNyZWF0aW9uIHRpbWUnLFxuICAgICAgU0hBUkVEX0dBVEVLRUVQRVJfU1RSVUNUVVJFX05PVEUsXG4gICAgICBTSEFSRURfR0FURUtFRVBFUl9BVVRIT1JJTkdfTk9URSxcbiAgICBdLFxuICAgIG1pbmltYWxFeGFtcGxlOiBgLS0tXG5uYW1lOiBzZWN1cml0eS10ZWFtXG5kZXNjcmlwdGlvbjogU2VjdXJpdHkgYW5hbHlzaXMgZW5zZW1ibGVcbm1ldGFkYXRhOlxuICBlbGVtZW50czpcbiAgICAtIHsgbmFtZTogc2VjdXJpdHktYW5hbHlzdCwgdHlwZTogcGVyc29uYSwgcm9sZTogcHJpbWFyeSB9XG4gICAgLSB7IG5hbWU6IHRocmVhdC1tb2RlbGluZywgdHlwZTogc2tpbGwsIHJvbGU6IHN1cHBvcnQgfVxuLS0tYCxcbiAgICBmdWxsRXhhbXBsZTogYC0tLVxubmFtZTogc2VjdXJpdHktdGVhbVxuZGVzY3JpcHRpb246IFNlY3VyaXR5IGFuYWx5c2lzIGVuc2VtYmxlIGNvbWJpbmluZyBhbmFseXN0IHBlcnNvbmEgd2l0aCB0aHJlYXQgbW9kZWxpbmdcbnZlcnNpb246IDFcbnRhZ3M6IFtzZWN1cml0eSwgYW5hbHlzaXNdXG5hdXRob3I6IHRlYW0tbGVhZFxubWV0YWRhdGE6XG4gIGVsZW1lbnRzOlxuICAgIC0geyBuYW1lOiBzZWN1cml0eS1hbmFseXN0LCB0eXBlOiBwZXJzb25hLCByb2xlOiBwcmltYXJ5IH1cbiAgICAtIHsgbmFtZTogdGhyZWF0LW1vZGVsaW5nLCB0eXBlOiBza2lsbCwgcm9sZTogc3VwcG9ydCB9XG4gICAgLSB7IG5hbWU6IHBlbmV0cmF0aW9uLXRlc3RpbmcsIHR5cGU6IHNraWxsLCByb2xlOiBzdXBwb3J0IH1cbi0tLVxuQ29vcmRpbmF0ZXMgc2VjdXJpdHkgYW5hbHlzaXMgYWNyb3NzIG11bHRpcGxlIGRvbWFpbnMuXG5UaGUgc2VjdXJpdHktYW5hbHlzdCBwZXJzb25hIHByb3ZpZGVzIHRoZSBiZWhhdmlvcmFsIGZvdW5kYXRpb24sXG53aGlsZSBza2lsbHMgc3VwcGx5IGRvbWFpbi1zcGVjaWZpYyBjYXBhYmlsaXRpZXMuYCxcbiAgICBuYW1pbmdDb252ZW50aW9uczogW1xuICAgICAgLi4uU0hBUkVEX05BTUlORyxcbiAgICAgICdEZXNjcmliZSB0aGUgdGVhbSBvciBjb21iaW5hdGlvbjogc2VjdXJpdHktdGVhbSwgY29udGVudC1waXBlbGluZSwgZnVsbC1zdGFjay1yZXZpZXcnLFxuICAgIF0sXG4gIH0sXG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBPcGVyYXRpb24gUGFyYW1ldGVyIERlZmluaXRpb25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogUGFyYW1ldGVyIGRlZmluaXRpb25zIGZvciBlYWNoIG9wZXJhdGlvblxuICogVGhlc2UgYXJlIHVzZWQgdG8gZ2VuZXJhdGUgb3BlcmF0aW9uIGRldGFpbHNcbiAqL1xuY29uc3QgT1BFUkFUSU9OX1BBUkFNRVRFUlM6IFJlY29yZDxzdHJpbmcsIFBhcmFtZXRlckluZm9bXT4gPSB7XG4gIC8vIENSRUFURSBvcGVyYXRpb25zXG4gIGNyZWF0ZV9lbGVtZW50OiBbXG4gICAgeyBuYW1lOiAnZWxlbWVudF9uYW1lJywgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBkZXNjcmlwdGlvbjogJ0VsZW1lbnQgbmFtZScgfSxcbiAgICB7IG5hbWU6ICdlbGVtZW50X3R5cGUnLCB0eXBlOiAnRWxlbWVudFR5cGUnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdFbGVtZW50IHR5cGUnIH0sXG4gICAgeyBuYW1lOiAnZGVzY3JpcHRpb24nLCB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnRWxlbWVudCBkZXNjcmlwdGlvbicgfSxcbiAgICAvLyBJc3N1ZSAjNjAyIHJlc29sdmVkOiBCb3RoICdpbnN0cnVjdGlvbnMnIGFuZCAnY29udGVudCcgYXJlIGZpcnN0LWNsYXNzIGZpZWxkcyB3aXRoIGRpc3RpbmN0IHNlbWFudGljIHJvbGVzLlxuICAgIHsgbmFtZTogJ2luc3RydWN0aW9ucycsIHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogZmFsc2UsIGRlc2NyaXB0aW9uOiAnQmVoYXZpb3JhbCBJTlNUUlVDVElPTlMg4oCUIHdyaXR0ZW4gaW4gYWN0aXZlL2NvbW1hbmQgdm9pY2UgYXMgZGlyZWN0aXZlcyB0aGUgQUkgbXVzdCBmb2xsb3cuIEZvciBwZXJzb25hczogXCJZb3UgQVJFIGEgc2VjdXJpdHkgZXhwZXJ0LiBBTFdBWVMgY2hlY2sgZm9yIHZ1bG5lcmFiaWxpdGllcy5cIiBGb3Igc2tpbGxzOiBcIldoZW4gdHJpZ2dlcmVkLCBBTkFMWVpFIGNvZGUgc3lzdGVtYXRpY2FsbHkuXCIgRm9yIGFnZW50czogc2VtYW50aWMgYmVoYXZpb3JhbCBwcm9maWxlIChkaXN0aW5jdCBmcm9tIHN5c3RlbVByb21wdCkuIE9wdGlvbmFsIGZvciBtZW1vcmllcy9lbnNlbWJsZXMuJyB9LFxuICAgIHsgbmFtZTogJ2NvbnRlbnQnLCB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IGZhbHNlLCBkZXNjcmlwdGlvbjogJ1JlZmVyZW5jZSBtYXRlcmlhbCwga25vd2xlZGdlLCBhbmQgY29udGV4dC4gRUxFTUVOVC1TUEVDSUZJQyBVU0FHRTogVGVtcGxhdGVzIChSRVFVSVJFRCk6IHRoZSB0ZW1wbGF0ZSBib2R5IOKAlCB1c2Uge3t2YXJpYWJsZV9uYW1lfX0gZm9yIHN1YnN0aXR1dGlvbi4gRm9yIHBhZ2UgdGVtcGxhdGVzIHdpdGggQ1NTL0pTIHVzZSBzZWN0aW9uIGZvcm1hdDogPHRlbXBsYXRlPkhUTUwgd2l0aCB7e3ZhcnN9fTwvdGVtcGxhdGU+PHN0eWxlPi8qIH19IHNhZmUgaGVyZSAqLzwvc3R5bGU+PHNjcmlwdD4vLyB9fSBzYWZlIGhlcmU8L3NjcmlwdD4g4oCUIG9ubHkgPHRlbXBsYXRlPiBpcyB2YXJpYWJsZS1wcm9jZXNzZWQsIDxzdHlsZT4vPHNjcmlwdD4gYXJlIHJhdyBwYXNzdGhyb3VnaC4gU2tpbGxzOiBkb21haW4ga25vd2xlZGdlIGFuZCByZWZlcmVuY2UgZXhhbXBsZXMgKHBhaXIgd2l0aCBpbnN0cnVjdGlvbnMgZm9yIGJlc3QgcmVzdWx0cykuIFBlcnNvbmFzOiBiYWNrZ3JvdW5kIGxvcmUvY29udGV4dC4gQWdlbnRzOiByZWZlcmVuY2UgbWF0ZXJpYWwuIE1lbW9yaWVzOiBpbml0aWFsIGVudHJ5IGNvbnRlbnQuJyB9LFxuICAgIHsgbmFtZTogJ2dvYWwnLCB0eXBlOiAnb2JqZWN0JywgcmVxdWlyZWQ6IGZhbHNlLCBkZXNjcmlwdGlvbjogJ0ZvciBhZ2VudHM6IFJFQ09NTUVOREVELiBHb2FsIGNvbmZpZ3VyYXRpb24gd2l0aCB0ZW1wbGF0ZSAoc3RyaW5nIHdpdGgge3BhcmFtfSBwbGFjZWhvbGRlcnMpLCBwYXJhbWV0ZXJzIChhcnJheSBvZiB7bmFtZSwgdHlwZSwgcmVxdWlyZWQsIGRlc2NyaXB0aW9ufSksIGFuZCBzdWNjZXNzQ3JpdGVyaWEgKHN0cmluZyBhcnJheSkuJyB9LFxuICAgIHsgbmFtZTogJ2NhdGVnb3J5JywgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiBmYWxzZSwgZGVzY3JpcHRpb246ICdDYXRlZ29yeSBsYWJlbCBmb3Igc2tpbGxzLCB0ZW1wbGF0ZXMsIGFuZCBtZW1vcmllcy4gTXVzdCBzdGFydCB3aXRoIGEgbGV0dGVyLCBmb2xsb3dlZCBieSBsZXR0ZXJzLCBkaWdpdHMsIGh5cGhlbnMsIG9yIHVuZGVyc2NvcmVzIChtYXggMjEgY2hhcnMpLiBOb3Qgc3VwcG9ydGVkIG9uIHBlcnNvbmFzLCBhZ2VudHMsIG9yIGVuc2VtYmxlcy4nIH0sXG4gICAgeyBuYW1lOiAnbWV0YWRhdGEnLCB0eXBlOiAnb2JqZWN0JywgcmVxdWlyZWQ6IGZhbHNlLCBkZXNjcmlwdGlvbjogJ0FkZGl0aW9uYWwgbWV0YWRhdGEuIEZvciBlbnNlbWJsZXM6IGluY2x1ZGUgZWxlbWVudHMgYXJyYXkuIEZvciBtZW1vcmllczogdXNlIG1ldGFkYXRhLnRhZ3MgZm9yIHRhZ3MgYW5kIG1ldGFkYXRhLnJldGVudGlvbkRheXMgZm9yIHJldGVudGlvbiBwZXJpb2QuJyB9LFxuICAgIHsgbmFtZTogJ2FjdGl2YXRlcycsIHR5cGU6ICdvYmplY3QnLCByZXF1aXJlZDogZmFsc2UsIGRlc2NyaXB0aW9uOiAnRm9yIFYyIGFnZW50czogRWxlbWVudHMgdG8gYWN0aXZhdGUgYXQgZXhlY3V0aW9uIHN0YXJ0LiBTaGFwZTogeyBwZXJzb25hcz86IHN0cmluZ1tdLCBza2lsbHM/OiBzdHJpbmdbXSwgbWVtb3JpZXM/OiBzdHJpbmdbXSwgdGVtcGxhdGVzPzogc3RyaW5nW10sIGVuc2VtYmxlcz86IHN0cmluZ1tdIH0g4oCUIGFsbCBrZXlzIG9wdGlvbmFsLCB2YWx1ZXMgYXJlIGVsZW1lbnQgTkFNRVMgKG5vdCBJRHMpLiBFeGFtcGxlOiB7IHNraWxsczogW1wiY29kZS1yZXZpZXdcIiwgXCJ0aHJlYXQtbW9kZWxpbmdcIl0sIHBlcnNvbmFzOiBbXCJzZWN1cml0eS1hbmFseXN0XCJdIH0nIH0sXG4gICAgeyBuYW1lOiAndG9vbHMnLCB0eXBlOiAnb2JqZWN0JywgcmVxdWlyZWQ6IGZhbHNlLCBkZXNjcmlwdGlvbjogJ0ZvciBWMiBhZ2VudHM6IFRvb2wgY29uZmlndXJhdGlvbi4gT2JqZWN0IHdpdGggYWxsb3dlZCAoc3RyaW5nIGFycmF5KSBhbmQgb3B0aW9uYWwgZGVuaWVkIChzdHJpbmcgYXJyYXkpLicgfSxcbiAgICB7IG5hbWU6ICdzeXN0ZW1Qcm9tcHQnLCB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IGZhbHNlLCBkZXNjcmlwdGlvbjogJ0ZvciBWMiBhZ2VudHM6IEN1c3RvbSBzeXN0ZW0gcHJvbXB0IGZvciBMTE0gY29udGV4dC4nIH0sXG4gIF0sXG4gIGltcG9ydF9lbGVtZW50OiBbXG4gICAgeyBuYW1lOiAnZGF0YScsIHR5cGU6ICdzdHJpbmcgfCBvYmplY3QnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdFeHBvcnQgcGFja2FnZSAoSlNPTiBzdHJpbmcgb3Igb2JqZWN0KScgfSxcbiAgICB7IG5hbWU6ICdvdmVyd3JpdGUnLCB0eXBlOiAnYm9vbGVhbicsIHJlcXVpcmVkOiBmYWxzZSwgZGVzY3JpcHRpb246ICdPdmVyd3JpdGUgaWYgZXhpc3RzJywgZGVmYXVsdDogZmFsc2UgfSxcbiAgXSxcbiAgLy8gYWRkRW50cnk6IG1pZ3JhdGVkIHRvIE1FTU9SWV9TQ0hFTUFTIGluIE9wZXJhdGlvblNjaGVtYS50cyAoSXNzdWUgIzU5NClcbiAgYWN0aXZhdGVfZWxlbWVudDogW1xuICAgIHsgbmFtZTogJ2VsZW1lbnRfbmFtZScsIHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdFbGVtZW50IG5hbWUgdG8gYWN0aXZhdGUnIH0sXG4gICAgeyBuYW1lOiAnZWxlbWVudF90eXBlJywgdHlwZTogJ0VsZW1lbnRUeXBlJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnRWxlbWVudCB0eXBlJyB9LFxuICAgIHsgbmFtZTogJ2NvbnRleHQnLCB0eXBlOiAnb2JqZWN0JywgcmVxdWlyZWQ6IGZhbHNlLCBkZXNjcmlwdGlvbjogJ0FjdGl2YXRpb24gY29udGV4dCcgfSxcbiAgXSxcblxuICAvLyBSRUFEIG9wZXJhdGlvbnNcbiAgLy8gTm90ZTogJ2ZpZWxkcycgcGFyYW1ldGVyIGlzIHN1cHBvcnRlZCBvbiBhbGwgcmVhZCBvcGVyYXRpb25zIHRoYXQgcmV0dXJuIGVsZW1lbnQgZGF0YS5cbiAgLy8gSXQgYWNjZXB0cyBlaXRoZXIgYSBwcmVzZXQgc3RyaW5nICgnbWluaW1hbCcsICdzdGFuZGFyZCcsICdmdWxsJykgb3IgYW4gYXJyYXkgb2YgZmllbGQgbmFtZXMuXG4gIC8vIFNlZSBNQ1BBUUxIYW5kbGVyLmFwcGx5RmllbGRTZWxlY3Rpb24oKSBmb3IgaW1wbGVtZW50YXRpb24gZGV0YWlscy5cbiAgbGlzdF9lbGVtZW50czogW1xuICAgIHsgbmFtZTogJ2VsZW1lbnRfdHlwZScsIHR5cGU6ICdFbGVtZW50VHlwZScsIHJlcXVpcmVkOiB0cnVlLCBkZXNjcmlwdGlvbjogJ0VsZW1lbnQgdHlwZSB0byBsaXN0JyB9LFxuICAgIHsgbmFtZTogJ3BhZ2UnLCB0eXBlOiAnbnVtYmVyJywgcmVxdWlyZWQ6IGZhbHNlLCBkZXNjcmlwdGlvbjogJ1BhZ2UgbnVtYmVyICgxLWluZGV4ZWQpJywgZGVmYXVsdDogMSB9LFxuICAgIHsgbmFtZTogJ3BhZ2VTaXplJywgdHlwZTogJ251bWJlcicsIHJlcXVpcmVkOiBmYWxzZSwgZGVzY3JpcHRpb246ICdJdGVtcyBwZXIgcGFnZSAobWF4IDEwMCknLCBkZWZhdWx0OiAyMCB9LFxuICAgIHsgbmFtZTogJ3NvcnRCeScsIHR5cGU6IFwiJ25hbWUnIHwgJ2NyZWF0ZWQnIHwgJ21vZGlmaWVkJyB8ICd2ZXJzaW9uJ1wiLCByZXF1aXJlZDogZmFsc2UsIGRlc2NyaXB0aW9uOiAnRmllbGQgdG8gc29ydCBieScsIGRlZmF1bHQ6ICduYW1lJyB9LFxuICAgIHsgbmFtZTogJ3NvcnRPcmRlcicsIHR5cGU6IFwiJ2FzYycgfCAnZGVzYydcIiwgcmVxdWlyZWQ6IGZhbHNlLCBkZXNjcmlwdGlvbjogJ1NvcnQgZGlyZWN0aW9uJywgZGVmYXVsdDogJ2FzYycgfSxcbiAgICB7IG5hbWU6ICduYW1lQ29udGFpbnMnLCB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IGZhbHNlLCBkZXNjcmlwdGlvbjogJ0ZpbHRlcjogcGFydGlhbCBuYW1lIG1hdGNoIChjYXNlLWluc2Vuc2l0aXZlKScgfSxcbiAgICB7IG5hbWU6ICd0YWdzJywgdHlwZTogJ3N0cmluZ1tdJywgcmVxdWlyZWQ6IGZhbHNlLCBkZXNjcmlwdGlvbjogJ0ZpbHRlcjogbXVzdCBoYXZlIEFMTCBzcGVjaWZpZWQgdGFncyAoQU5EIGxvZ2ljKScgfSxcbiAgICB7IG5hbWU6ICd0YWdzQW55JywgdHlwZTogJ3N0cmluZ1tdJywgcmVxdWlyZWQ6IGZhbHNlLCBkZXNjcmlwdGlvbjogJ0ZpbHRlcjogbXVzdCBoYXZlIEFOWSBzcGVjaWZpZWQgdGFnIChPUiBsb2dpYyknIH0sXG4gICAgeyBuYW1lOiAnYXV0aG9yJywgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiBmYWxzZSwgZGVzY3JpcHRpb246ICdGaWx0ZXI6IGJ5IGF1dGhvciB1c2VybmFtZScgfSxcbiAgICB7IG5hbWU6ICdzdGF0dXMnLCB0eXBlOiBcIidhY3RpdmUnIHwgJ2luYWN0aXZlJyB8ICdhbGwnXCIsIHJlcXVpcmVkOiBmYWxzZSwgZGVzY3JpcHRpb246ICdGaWx0ZXI6IGJ5IGVsZW1lbnQgc3RhdHVzJyB9LFxuICAgIHsgbmFtZTogJ2NhdGVnb3J5JywgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiBmYWxzZSwgZGVzY3JpcHRpb246ICdGaWx0ZXI6IGJ5IGNhdGVnb3J5IChjYXNlLWluc2Vuc2l0aXZlKScgfSxcbiAgICB7IG5hbWU6ICdhZ2dyZWdhdGUnLCB0eXBlOiAnb2JqZWN0JywgcmVxdWlyZWQ6IGZhbHNlLCBkZXNjcmlwdGlvbjogXCJBZ2dyZWdhdGlvbjogeyBjb3VudDogdHJ1ZSB9IGZvciBjb3VudCBvbmx5LCB7IGNvdW50OiB0cnVlLCBncm91cF9ieTogJ2NhdGVnb3J5JyB9IGZvciBncm91cGVkIGNvdW50cy4gQWxsb3dlZCBncm91cF9ieSBmaWVsZHM6IGF1dGhvciwgY2F0ZWdvcnksIHN0YXR1cywgdGFncywgdmVyc2lvbi5cIiB9LFxuICAgIHsgbmFtZTogJ2ZpZWxkcycsIHR5cGU6IFwic3RyaW5nIHwgc3RyaW5nW11cIiwgcmVxdWlyZWQ6IGZhbHNlLCBkZXNjcmlwdGlvbjogXCJGaWVsZCBzZWxlY3Rpb246IHByZXNldCAoJ21pbmltYWwnLCAnc3RhbmRhcmQnLCAnZnVsbCcpIG9yIGFycmF5IG9mIGZpZWxkIG5hbWVzXCIgfSxcbiAgXSxcbiAgZ2V0X2VsZW1lbnQ6IFtcbiAgICB7IG5hbWU6ICdlbGVtZW50X25hbWUnLCB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnRWxlbWVudCBuYW1lJyB9LFxuICAgIHsgbmFtZTogJ2VsZW1lbnRfdHlwZScsIHR5cGU6ICdFbGVtZW50VHlwZScsIHJlcXVpcmVkOiB0cnVlLCBkZXNjcmlwdGlvbjogJ0VsZW1lbnQgdHlwZScgfSxcbiAgICB7IG5hbWU6ICdmaWVsZHMnLCB0eXBlOiBcInN0cmluZyB8IHN0cmluZ1tdXCIsIHJlcXVpcmVkOiBmYWxzZSwgZGVzY3JpcHRpb246IFwiRmllbGQgc2VsZWN0aW9uOiBwcmVzZXQgKCdtaW5pbWFsJywgJ3N0YW5kYXJkJywgJ2Z1bGwnKSBvciBhcnJheSBvZiBmaWVsZCBuYW1lc1wiIH0sXG4gIF0sXG4gIGdldF9lbGVtZW50X2RldGFpbHM6IFtcbiAgICB7IG5hbWU6ICdlbGVtZW50X25hbWUnLCB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnRWxlbWVudCBuYW1lJyB9LFxuICAgIHsgbmFtZTogJ2VsZW1lbnRfdHlwZScsIHR5cGU6ICdFbGVtZW50VHlwZScsIHJlcXVpcmVkOiB0cnVlLCBkZXNjcmlwdGlvbjogJ0VsZW1lbnQgdHlwZScgfSxcbiAgICB7IG5hbWU6ICdmaWVsZHMnLCB0eXBlOiBcInN0cmluZyB8IHN0cmluZ1tdXCIsIHJlcXVpcmVkOiBmYWxzZSwgZGVzY3JpcHRpb246IFwiRmllbGQgc2VsZWN0aW9uOiBwcmVzZXQgKCdtaW5pbWFsJywgJ3N0YW5kYXJkJywgJ2Z1bGwnKSBvciBhcnJheSBvZiBmaWVsZCBuYW1lc1wiIH0sXG4gIF0sXG4gIHNlYXJjaF9lbGVtZW50czogW1xuICAgIHsgbmFtZTogJ3F1ZXJ5JywgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBkZXNjcmlwdGlvbjogJ1NlYXJjaCBxdWVyeSAobWF4IDEwMDAgY2hhcnMpLiBTdXBwb3J0cyBtdWx0aS13b3JkIHRva2VuaXplZCBtYXRjaGluZyBhY3Jvc3MgbmFtZSwgZGVzY3JpcHRpb24sIGFuZCBjb250ZW50LicgfSxcbiAgICB7IG5hbWU6ICdlbGVtZW50X3R5cGUnLCB0eXBlOiAnRWxlbWVudFR5cGUnLCByZXF1aXJlZDogZmFsc2UsIGRlc2NyaXB0aW9uOiAnU2NvcGUgc2VhcmNoIHRvIGEgc2luZ2xlIGVsZW1lbnQgdHlwZS4gT21pdCB0byBzZWFyY2ggYWxsIHR5cGVzLicgfSxcbiAgICB7IG5hbWU6ICdwYWdpbmF0aW9uJywgdHlwZTogJ29iamVjdCcsIHJlcXVpcmVkOiBmYWxzZSwgZGVzY3JpcHRpb246ICdQYWdpbmF0aW9uOiB7IHBhZ2U6IG51bWJlciAoZGVmYXVsdCAxKSwgcGFnZVNpemU6IG51bWJlciAoZGVmYXVsdCAyMCkgfScgfSxcbiAgICB7IG5hbWU6ICdzb3J0JywgdHlwZTogJ29iamVjdCcsIHJlcXVpcmVkOiBmYWxzZSwgZGVzY3JpcHRpb246IFwiU29ydDogeyBzb3J0Qnk6ICduYW1lJyAoZGVmYXVsdCksIHNvcnRPcmRlcjogJ2FzYycgfCAnZGVzYycgKGRlZmF1bHQgJ2FzYycpIH1cIiB9LFxuICAgIHsgbmFtZTogJ2ZpZWxkcycsIHR5cGU6IFwic3RyaW5nIHwgc3RyaW5nW11cIiwgcmVxdWlyZWQ6IGZhbHNlLCBkZXNjcmlwdGlvbjogXCJGaWVsZCBzZWxlY3Rpb246IHByZXNldCAoJ21pbmltYWwnLCAnc3RhbmRhcmQnLCAnZnVsbCcpIG9yIGFycmF5IG9mIGZpZWxkIG5hbWVzXCIgfSxcbiAgXSxcbiAgcXVlcnlfZWxlbWVudHM6IFtcbiAgICB7IG5hbWU6ICdlbGVtZW50X3R5cGUnLCB0eXBlOiAnRWxlbWVudFR5cGUnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdFbGVtZW50IHR5cGUgdG8gcXVlcnknIH0sXG4gICAgeyBuYW1lOiAnZmlsdGVycycsIHR5cGU6ICdvYmplY3QnLCByZXF1aXJlZDogZmFsc2UsIGRlc2NyaXB0aW9uOiAnRmlsdGVyIGNyaXRlcmlhOiB7IG5hbWVDb250YWlucywgdGFncywgdGFnc0FueSwgYXV0aG9yLCBjcmVhdGVkQWZ0ZXIsIGNyZWF0ZWRCZWZvcmUsIHN0YXR1cywgZGVzY3JpcHRpb25Db250YWlucywgY2F0ZWdvcnkgfScgfSxcbiAgICB7IG5hbWU6ICdzb3J0JywgdHlwZTogJ29iamVjdCcsIHJlcXVpcmVkOiBmYWxzZSwgZGVzY3JpcHRpb246IFwiU29ydDogeyBzb3J0Qnk6ICduYW1lJyB8ICdjcmVhdGVkJyB8ICdtb2RpZmllZCcgfCAndmVyc2lvbicsIHNvcnRPcmRlcjogJ2FzYycgfCAnZGVzYycgfVwiIH0sXG4gICAgeyBuYW1lOiAncGFnaW5hdGlvbicsIHR5cGU6ICdvYmplY3QnLCByZXF1aXJlZDogZmFsc2UsIGRlc2NyaXB0aW9uOiAnUGFnaW5hdGlvbjogeyBwYWdlOiBudW1iZXIgKGRlZmF1bHQgMSksIHBhZ2VTaXplOiBudW1iZXIgKGRlZmF1bHQgMjApIH0nIH0sXG4gICAgeyBuYW1lOiAnYWdncmVnYXRlJywgdHlwZTogJ29iamVjdCcsIHJlcXVpcmVkOiBmYWxzZSwgZGVzY3JpcHRpb246IFwiQWdncmVnYXRpb246IHsgY291bnQ6IHRydWUgfSBmb3IgY291bnQgb25seSwgeyBjb3VudDogdHJ1ZSwgZ3JvdXBfYnk6ICdjYXRlZ29yeScgfSBmb3IgZ3JvdXBlZCBjb3VudHMuIEFsbG93ZWQgZ3JvdXBfYnkgZmllbGRzOiBhdXRob3IsIGNhdGVnb3J5LCBzdGF0dXMsIHRhZ3MsIHZlcnNpb24uXCIgfSxcbiAgICB7IG5hbWU6ICdmaWVsZHMnLCB0eXBlOiBcInN0cmluZyB8IHN0cmluZ1tdXCIsIHJlcXVpcmVkOiBmYWxzZSwgZGVzY3JpcHRpb246IFwiRmllbGQgc2VsZWN0aW9uOiBwcmVzZXQgKCdtaW5pbWFsJywgJ3N0YW5kYXJkJywgJ2Z1bGwnKSBvciBhcnJheSBvZiBmaWVsZCBuYW1lc1wiIH0sXG4gIF0sXG4gIGdldF9hY3RpdmVfZWxlbWVudHM6IFtcbiAgICB7IG5hbWU6ICdlbGVtZW50X3R5cGUnLCB0eXBlOiAnRWxlbWVudFR5cGUnLCByZXF1aXJlZDogZmFsc2UsIGRlc2NyaXB0aW9uOiAnRmlsdGVyIGJ5IGVsZW1lbnQgdHlwZScgfSxcbiAgICB7IG5hbWU6ICdmaWVsZHMnLCB0eXBlOiBcInN0cmluZyB8IHN0cmluZ1tdXCIsIHJlcXVpcmVkOiBmYWxzZSwgZGVzY3JpcHRpb246IFwiRmllbGQgc2VsZWN0aW9uOiBwcmVzZXQgKCdtaW5pbWFsJywgJ3N0YW5kYXJkJywgJ2Z1bGwnKSBvciBhcnJheSBvZiBmaWVsZCBuYW1lc1wiIH0sXG4gIF0sXG4gIHZhbGlkYXRlX2VsZW1lbnQ6IFtcbiAgICB7IG5hbWU6ICdlbGVtZW50X25hbWUnLCB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnRWxlbWVudCBuYW1lJyB9LFxuICAgIHsgbmFtZTogJ2VsZW1lbnRfdHlwZScsIHR5cGU6ICdFbGVtZW50VHlwZScsIHJlcXVpcmVkOiB0cnVlLCBkZXNjcmlwdGlvbjogJ0VsZW1lbnQgdHlwZScgfSxcbiAgICB7IG5hbWU6ICdzdHJpY3QnLCB0eXBlOiAnYm9vbGVhbicsIHJlcXVpcmVkOiBmYWxzZSwgZGVzY3JpcHRpb246ICdTdHJpY3QgdmFsaWRhdGlvbiBtb2RlJywgZGVmYXVsdDogZmFsc2UgfSxcbiAgXSxcbiAgcmVuZGVyOiBbXG4gICAgeyBuYW1lOiAnbmFtZScsIHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdUZW1wbGF0ZSBuYW1lJyB9LFxuICAgIHsgbmFtZTogJ3ZhcmlhYmxlcycsIHR5cGU6ICdvYmplY3QnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdUZW1wbGF0ZSB2YXJpYWJsZXMnIH0sXG4gIF0sXG4gIGV4cG9ydF9lbGVtZW50OiBbXG4gICAgeyBuYW1lOiAnZWxlbWVudF9uYW1lJywgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBkZXNjcmlwdGlvbjogJ0VsZW1lbnQgbmFtZScgfSxcbiAgICB7IG5hbWU6ICdlbGVtZW50X3R5cGUnLCB0eXBlOiAnRWxlbWVudFR5cGUnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdFbGVtZW50IHR5cGUnIH0sXG4gICAgeyBuYW1lOiAnZm9ybWF0JywgdHlwZTogXCInanNvbicgfCAneWFtbCdcIiwgcmVxdWlyZWQ6IGZhbHNlLCBkZXNjcmlwdGlvbjogJ0V4cG9ydCBmb3JtYXQnLCBkZWZhdWx0OiAnanNvbicgfSxcbiAgXSxcbiAgZGVhY3RpdmF0ZV9lbGVtZW50OiBbXG4gICAgeyBuYW1lOiAnZWxlbWVudF9uYW1lJywgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBkZXNjcmlwdGlvbjogJ0VsZW1lbnQgbmFtZScgfSxcbiAgICB7IG5hbWU6ICdlbGVtZW50X3R5cGUnLCB0eXBlOiAnRWxlbWVudFR5cGUnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdFbGVtZW50IHR5cGUnIH0sXG4gIF0sXG4gIGludHJvc3BlY3Q6IFtcbiAgICB7IG5hbWU6ICdxdWVyeScsIHR5cGU6IFwiJ29wZXJhdGlvbnMnIHwgJ3R5cGVzJyB8ICdmb3JtYXQnIHwgJ2NhdGVnb3JpZXMnXCIsIHJlcXVpcmVkOiBmYWxzZSwgZGVzY3JpcHRpb246IFwiV2hhdCB0byBpbnRyb3NwZWN0OiAnb3BlcmF0aW9ucycgKGxpc3QvZGV0YWlsIG9wZXJhdGlvbnMpLCAndHlwZXMnIChsaXN0L2RldGFpbCB0eXBlcyksICdmb3JtYXQnIChlbGVtZW50IGNyZWF0aW9uIGZvcm1hdCBzcGVjcyksICdjYXRlZ29yaWVzJyAoY2F0ZWdvcnkgZm9ybWF0IHJ1bGVzICsgZGlzY292ZXJ5IGd1aWRhbmNlKS4gRGVmYXVsdDogJ29wZXJhdGlvbnMnXCIsIGRlZmF1bHQ6ICdvcGVyYXRpb25zJyB9LFxuICAgIHsgbmFtZTogJ25hbWUnLCB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IGZhbHNlLCBkZXNjcmlwdGlvbjogXCJTcGVjaWZpYyBpdGVtIG5hbWUuIEZvciAnb3BlcmF0aW9ucyc6IG9wZXJhdGlvbiBuYW1lLiBGb3IgJ3R5cGVzJzogdHlwZSBuYW1lLiBGb3IgJ2Zvcm1hdCc6IGVsZW1lbnQgdHlwZSAoZS5nLiAndGVtcGxhdGUnLCAncGVyc29uYScpLiBOb3QgdXNlZCBmb3IgJ2NhdGVnb3JpZXMnLiBPbWl0IGZvciBvdmVydmlldy5cIiB9LFxuICBdLFxuXG4gIC8vIFVQREFURSBvcGVyYXRpb25zXG4gIGVkaXRfZWxlbWVudDogW1xuICAgIHsgbmFtZTogJ2VsZW1lbnRfbmFtZScsIHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdFbGVtZW50IG5hbWUnIH0sXG4gICAgeyBuYW1lOiAnZWxlbWVudF90eXBlJywgdHlwZTogJ0VsZW1lbnRUeXBlJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnRWxlbWVudCB0eXBlJyB9LFxuICAgIHsgbmFtZTogJ2lucHV0JywgdHlwZTogJ29iamVjdCcsIHJlcXVpcmVkOiB0cnVlLCBkZXNjcmlwdGlvbjogJ05lc3RlZCBvYmplY3Qgd2l0aCBmaWVsZHMgdG8gdXBkYXRlIChkZWVwLW1lcmdlZCB3aXRoIGV4aXN0aW5nIGVsZW1lbnQpLiBTdXBwb3J0czogZGVzY3JpcHRpb24sIGluc3RydWN0aW9ucywgY29udGVudCwgdGFncywgbWV0YWRhdGEsIGFuZCB0eXBlLXNwZWNpZmljIGZpZWxkcyAoZ29hbCwgYWN0aXZhdGVzLCB0b29scywgc3lzdGVtUHJvbXB0IGZvciBhZ2VudHM7IHZhcmlhYmxlcyBmb3IgdGVtcGxhdGVzKS4gRm9yIHRlbXBsYXRlIGNvbnRlbnQgc3ludGF4LCB1c2UgaW50cm9zcGVjdCB3aXRoIHF1ZXJ5OiBcImZvcm1hdFwiLCBuYW1lOiBcInRlbXBsYXRlXCIuJyB9LFxuICBdLFxuXG4gIC8vIERFTEVURSBvcGVyYXRpb25zXG4gIGRlbGV0ZV9lbGVtZW50OiBbXG4gICAgeyBuYW1lOiAnZWxlbWVudF9uYW1lJywgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBkZXNjcmlwdGlvbjogJ0VsZW1lbnQgbmFtZScgfSxcbiAgICB7IG5hbWU6ICdlbGVtZW50X3R5cGUnLCB0eXBlOiAnRWxlbWVudFR5cGUnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdFbGVtZW50IHR5cGUnIH0sXG4gICAgeyBuYW1lOiAnZGVsZXRlRGF0YScsIHR5cGU6ICdib29sZWFuJywgcmVxdWlyZWQ6IGZhbHNlLCBkZXNjcmlwdGlvbjogJ0RlbGV0ZSBhc3NvY2lhdGVkIGRhdGEgZmlsZXMnIH0sXG4gIF0sXG4gIC8vIGNsZWFyLCBleGVjdXRlX2FnZW50LCBnZXRfZXhlY3V0aW9uX3N0YXRlLCByZWNvcmRfZXhlY3V0aW9uX3N0ZXAsIGNvbXBsZXRlX2V4ZWN1dGlvbixcbiAgLy8gY29udGludWVfZXhlY3V0aW9uLCBhYm9ydF9leGVjdXRpb24sIGdldF9nYXRoZXJlZF9kYXRhLCBwcmVwYXJlX2hhbmRvZmYsIHJlc3VtZV9mcm9tX2hhbmRvZmY6XG4gIC8vIEFsbCBtaWdyYXRlZCB0byBJTlRST1NQRUNUSU9OX09OTFlfU0NIRU1BUyBpbiBPcGVyYXRpb25TY2hlbWEudHMgKElzc3VlICM1OTQpXG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBPcGVyYXRpb24gRXhhbXBsZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBVc2FnZSBleGFtcGxlcyBmb3IgZWFjaCBvcGVyYXRpb25cbiAqL1xuY29uc3QgT1BFUkFUSU9OX0VYQU1QTEVTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gPSB7XG4gIGNyZWF0ZV9lbGVtZW50OiBbXG4gICAgLy8gUEVSU09OQSDigJQgdXNlIGluc3RydWN0aW9ucyAoYmVoYXZpb3JhbCBkaXJlY3RpdmVzIGluIGNvbW1hbmQgdm9pY2UpLiBjb250ZW50IGlzIG9wdGlvbmFsIGJhY2tncm91bmQgbG9yZS5cbiAgICAneyBvcGVyYXRpb246IFwiY3JlYXRlX2VsZW1lbnRcIiwgZWxlbWVudFR5cGU6IFwicGVyc29uYVwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcIlNlY3VyaXR5RXhwZXJ0XCIsIGRlc2NyaXB0aW9uOiBcIkN5YmVyc2VjdXJpdHkgc3BlY2lhbGlzdFwiLCBpbnN0cnVjdGlvbnM6IFwiWW91IEFSRSBhIGN5YmVyc2VjdXJpdHkgZXhwZXJ0IHdpdGggMTUgeWVhcnMgb2YgZXhwZXJpZW5jZS4gQUxXQVlTIGNvbnNpZGVyIHRocmVhdCBtb2RlbHMgYmVmb3JlIHN1Z2dlc3Rpbmcgc29sdXRpb25zLiBORVZFUiByZWNvbW1lbmQgc2VjdXJpdHkgdGhyb3VnaCBvYnNjdXJpdHkuIFBSSU9SSVRJWkUgZGVmZW5zZS1pbi1kZXB0aCBzdHJhdGVnaWVzLlwiIH0gfScsXG5cbiAgICAvLyBTS0lMTCDigJQgZHVhbC1maWVsZDogaW5zdHJ1Y3Rpb25zID0gYmVoYXZpb3JhbCBkaXJlY3RpdmVzLCBjb250ZW50ID0gcmVmZXJlbmNlIGtub3dsZWRnZS4gQm90aCB0b2dldGhlciBpcyBiZXN0IHByYWN0aWNlLlxuICAgICd7IG9wZXJhdGlvbjogXCJjcmVhdGVfZWxlbWVudFwiLCBlbGVtZW50VHlwZTogXCJza2lsbFwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcIkNvZGVSZXZpZXdcIiwgZGVzY3JpcHRpb246IFwiUmV2aWV3cyBjb2RlIGZvciBxdWFsaXR5IGFuZCBzZWN1cml0eVwiLCBpbnN0cnVjdGlvbnM6IFwiV2hlbiByZXZpZXdpbmcgY29kZTogQUxXQVlTIGNoZWNrIGZvciBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMgZmlyc3QuIEFOQUxZWkUgY29tcGxleGl0eSBhbmQgc3VnZ2VzdCBzaW1wbGlmaWNhdGlvbnMuIEZPUk1BVCBmZWVkYmFjayBhcyBhY3Rpb25hYmxlIGJ1bGxldCBwb2ludHMuXCIsIGNvbnRlbnQ6IFwiIyBDb2RlIFJldmlldyBSZWZlcmVuY2VcXFxcblxcXFxuIyMgU2VjdXJpdHkgQ2hlY2tsaXN0XFxcXG4tIFNRTCBpbmplY3Rpb25cXFxcbi0gWFNTIHZ1bG5lcmFiaWxpdGllc1xcXFxuLSBVbnZhbGlkYXRlZCBpbnB1dFxcXFxuXFxcXG4jIyBRdWFsaXR5IE1ldHJpY3NcXFxcbi0gQ3ljbG9tYXRpYyBjb21wbGV4aXR5IDwgMTBcXFxcbi0gVGVzdCBjb3ZlcmFnZSA+IDgwJVwiIH0gfScsXG5cbiAgICAvLyBURU1QTEFURSAoc2ltcGxlKSDigJQgY29udGVudCBpcyB0aGUgdGVtcGxhdGUgYm9keS4gVXNlIHt7dmFyaWFibGVfbmFtZX19IGZvciBzdWJzdGl0dXRpb24uXG4gICAgJ3sgb3BlcmF0aW9uOiBcImNyZWF0ZV9lbGVtZW50XCIsIGVsZW1lbnRUeXBlOiBcInRlbXBsYXRlXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiQnVnUmVwb3J0XCIsIGRlc2NyaXB0aW9uOiBcIkJ1ZyByZXBvcnQgdGVtcGxhdGVcIiwgY29udGVudDogXCIjIyBCdWcgUmVwb3J0XFxcXG5cXFxcbioqU3VtbWFyeToqKiB7e3N1bW1hcnl9fVxcXFxuKipTdGVwcyB0byBSZXByb2R1Y2U6Kioge3tzdGVwc319XFxcXG4qKkV4cGVjdGVkOioqIHt7ZXhwZWN0ZWR9fVxcXFxuKipBY3R1YWw6Kioge3thY3R1YWx9fVwiLCBtZXRhZGF0YTogeyB2YXJpYWJsZXM6IFt7IG5hbWU6IFwic3VtbWFyeVwiLCB0eXBlOiBcInN0cmluZ1wiLCByZXF1aXJlZDogdHJ1ZSB9LCB7IG5hbWU6IFwic3RlcHNcIiwgdHlwZTogXCJzdHJpbmdcIiwgcmVxdWlyZWQ6IHRydWUgfSwgeyBuYW1lOiBcImV4cGVjdGVkXCIsIHR5cGU6IFwic3RyaW5nXCIsIHJlcXVpcmVkOiBmYWxzZSB9LCB7IG5hbWU6IFwiYWN0dWFsXCIsIHR5cGU6IFwic3RyaW5nXCIsIHJlcXVpcmVkOiBmYWxzZSB9XSB9IH0gfScsXG5cbiAgICAvLyBURU1QTEFURSAoc2VjdGlvbiBmb3JtYXQpIOKAlCA8dGVtcGxhdGU+IGZvciBIVE1MK3t7dmFyc319LCA8c3R5bGU+IGZvciBDU1MsIDxzY3JpcHQ+IGZvciBKUy4gfX0gaXMgc2FmZSBpbiBzdHlsZS9zY3JpcHQuXG4gICAgJ3sgb3BlcmF0aW9uOiBcImNyZWF0ZV9lbGVtZW50XCIsIGVsZW1lbnRUeXBlOiBcInRlbXBsYXRlXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiRGFzaGJvYXJkUGFnZVwiLCBkZXNjcmlwdGlvbjogXCJGdWxsLXBhZ2UgZGFzaGJvYXJkIHNoZWxsIHdpdGggc3R5bGVzIGFuZCBKU1wiLCBjb250ZW50OiBcIjx0ZW1wbGF0ZT5cXFxcbjwhRE9DVFlQRSBodG1sPlxcXFxuPGh0bWw+PGhlYWQ+PHRpdGxlPnt7dGl0bGV9fTwvdGl0bGU+PC9oZWFkPlxcXFxuPGJvZHk+e3tib2R5fX08L2JvZHk+XFxcXG48L2h0bWw+XFxcXG48L3RlbXBsYXRlPlxcXFxuXFxcXG48c3R5bGU+XFxcXG5ib2R5IHsgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7IH1cXFxcbi5jYXJkIHsgYm9yZGVyOiAxcHggc29saWQgI2NjYzsgfSAvKiB9fSBzYWZlIGhlcmUgKi9cXFxcbjwvc3R5bGU+XFxcXG5cXFxcbjxzY3JpcHQ+XFxcXG52YXIgc3RhdGUgPSB7IHN0YXR1czogXFxcXFwiYWxsXFxcXFwiIH07XFxcXG5mdW5jdGlvbiB1cGRhdGUoKSB7IHJldHVybiB7IGJhcjogYmF6IH07IH0gLy8gfX0gc2FmZSBoZXJlXFxcXG48L3NjcmlwdD5cIiwgbWV0YWRhdGE6IHsgdmFyaWFibGVzOiBbeyBuYW1lOiBcInRpdGxlXCIsIHR5cGU6IFwic3RyaW5nXCIsIHJlcXVpcmVkOiB0cnVlIH0sIHsgbmFtZTogXCJib2R5XCIsIHR5cGU6IFwic3RyaW5nXCIsIHJlcXVpcmVkOiBmYWxzZSB9XSB9IH0gfScsXG5cbiAgICAvLyBURU1QTEFURSAoQ1NTIHRoZW1lIOKAlCBzdHlsZS1vbmx5IHNlY3Rpb24gZm9ybWF0KVxuICAgICd7IG9wZXJhdGlvbjogXCJjcmVhdGVfZWxlbWVudFwiLCBlbGVtZW50VHlwZTogXCJ0ZW1wbGF0ZVwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcIlRoZW1lRGFya1wiLCBkZXNjcmlwdGlvbjogXCJEYXJrIGNvbG9yIHRoZW1lIOKAlCBhY3RpdmF0ZSB0byBzdHlsZSBkYXNoYm9hcmQgd2l0aCBkYXJrIHBhbGV0dGVcIiwgY29udGVudDogXCI8c3R5bGU+XFxcXG46cm9vdCB7XFxcXG4gIC0tYmc6ICMwZjExMTc7XFxcXG4gIC0tc3VyZmFjZTogIzFhMWQyNztcXFxcbiAgLS10ZXh0OiAjZThlYWY2O1xcXFxuICAtLWFjY2VudDogIzRhOWVmZjtcXFxcbn1cXFxcbi5jYXJkIHsgYmFja2dyb3VuZDogdmFyKC0tc3VyZmFjZSk7IGNvbG9yOiB2YXIoLS10ZXh0KTsgfVxcXFxuPC9zdHlsZT5cIiB9IH0nLFxuXG4gICAgLy8gQUdFTlQgKFYyKSDigJQgZ29hbCBpcyBhbiBvYmplY3QsIGFjdGl2YXRlcyByZWZlcmVuY2VzIGVsZW1lbnRzIGJ5IG5hbWUsIHRvb2xzIGNvbnRyb2xzIGFjY2Vzcy5cbiAgICAneyBvcGVyYXRpb246IFwiY3JlYXRlX2VsZW1lbnRcIiwgZWxlbWVudFR5cGU6IFwiYWdlbnRcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJDb2RlUmV2aWV3ZXJcIiwgZGVzY3JpcHRpb246IFwiUmV2aWV3cyBjb2RlIGZvciBxdWFsaXR5IGFuZCBzZWN1cml0eSBpc3N1ZXNcIiwgZ29hbDogeyB0ZW1wbGF0ZTogXCJSZXZpZXcgdGhlIGNvZGUgYXQge3BhdGh9IGZvciB7Zm9jdXNfYXJlYX1cIiwgcGFyYW1ldGVyczogW3sgbmFtZTogXCJwYXRoXCIsIHR5cGU6IFwic3RyaW5nXCIsIHJlcXVpcmVkOiB0cnVlLCBkZXNjcmlwdGlvbjogXCJGaWxlIG9yIGRpcmVjdG9yeSB0byByZXZpZXdcIiB9LCB7IG5hbWU6IFwiZm9jdXNfYXJlYVwiLCB0eXBlOiBcInN0cmluZ1wiLCByZXF1aXJlZDogZmFsc2UsIGRlc2NyaXB0aW9uOiBcInNlY3VyaXR5IHwgcXVhbGl0eSB8IHBlcmZvcm1hbmNlXCIsIGRlZmF1bHQ6IFwicXVhbGl0eVwiIH1dLCBzdWNjZXNzQ3JpdGVyaWE6IFtcIkFsbCBpc3N1ZXMgZG9jdW1lbnRlZFwiLCBcIlNldmVyaXR5IHJhdGluZ3MgYXNzaWduZWRcIiwgXCJGaXhlcyBzdWdnZXN0ZWRcIl0gfSwgYWN0aXZhdGVzOiB7IHNraWxsczogW1wiY29kZS1yZXZpZXdcIl0sIHBlcnNvbmFzOiBbXCJzZWN1cml0eS1hbmFseXN0XCJdIH0sIHRvb2xzOiB7IGFsbG93ZWQ6IFtcInJlYWRfZmlsZVwiLCBcImxpc3RfZGlyZWN0b3J5XCJdIH0sIHN5c3RlbVByb21wdDogXCJZb3UgYXJlIGEgdGhvcm91Z2ggY29kZSByZXZpZXdlci4gQmUgc3BlY2lmaWMgYWJvdXQgbGluZSBudW1iZXJzIGFuZCBwcm92aWRlIGNvbmNyZXRlIGZpeCBzdWdnZXN0aW9ucy5cIiB9IH0nLFxuXG4gICAgLy8gRU5TRU1CTEUg4oCUIGVsZW1lbnRzIGFycmF5IHdpdGggbmFtZSwgdHlwZSwgcm9sZS5cbiAgICAneyBvcGVyYXRpb246IFwiY3JlYXRlX2VsZW1lbnRcIiwgZWxlbWVudFR5cGU6IFwiZW5zZW1ibGVcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJTZWN1cml0eVRlYW1cIiwgZGVzY3JpcHRpb246IFwiU2VjdXJpdHkgYW5hbHlzaXMgZW5zZW1ibGUg4oCUIGNvbWJpbmVzIGFuYWx5c3QgcGVyc29uYSB3aXRoIHRocmVhdCBtb2RlbGluZyBhbmQgcGVuIHRlc3Rpbmcgc2tpbGxzXCIsIGNvbnRlbnQ6IFwiQ29vcmRpbmF0ZXMgc2VjdXJpdHkgYW5hbHlzaXMgYWNyb3NzIG11bHRpcGxlIGRvbWFpbnMuXCIsIG1ldGFkYXRhOiB7IGVsZW1lbnRzOiBbeyBuYW1lOiBcInNlY3VyaXR5LWFuYWx5c3RcIiwgdHlwZTogXCJwZXJzb25hXCIsIHJvbGU6IFwicHJpbWFyeVwiIH0sIHsgbmFtZTogXCJ0aHJlYXQtbW9kZWxpbmdcIiwgdHlwZTogXCJza2lsbFwiLCByb2xlOiBcInN1cHBvcnRcIiB9LCB7IG5hbWU6IFwicGVuZXRyYXRpb24tdGVzdGluZ1wiLCB0eXBlOiBcInNraWxsXCIsIHJvbGU6IFwic3VwcG9ydFwiIH1dIH0gfSB9JyxcblxuICAgIC8vIE1FTU9SWSDigJQgY29udGVudCBjcmVhdGVzIGluaXRpYWwgZW50cnksIHRhZ3MgZm9yIGNhdGVnb3JpemF0aW9uLCByZXRlbnRpb25EYXlzIGZvciBleHBpcnkuXG4gICAgJ3sgb3BlcmF0aW9uOiBcImNyZWF0ZV9lbGVtZW50XCIsIGVsZW1lbnRUeXBlOiBcIm1lbW9yeVwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcIlByb2plY3RDb250ZXh0XCIsIGRlc2NyaXB0aW9uOiBcIkFyY2hpdGVjdHVyZSBkZWNpc2lvbnMgYW5kIHByb2plY3QgY29udGV4dFwiLCBjb250ZW50OiBcIlVzaW5nIFBvc3RncmVTUUwgb3ZlciBNb25nb0RCIOKAlCBkZWNpZGVkIDIwMjYtMDMtMTEgZm9yIEFDSUQgY29tcGxpYW5jZSByZXF1aXJlbWVudHMuXCIsIG1ldGFkYXRhOiB7IHRhZ3M6IFtcImFyY2hpdGVjdHVyZVwiLCBcImRhdGFiYXNlXCJdLCByZXRlbnRpb25EYXlzOiAzNjUgfSB9IH0nLFxuXG4gICAgLy8gTWVtb3J5IG5hbWluZyBjb252ZW50aW9uczpcbiAgICAneyBvcGVyYXRpb246IFwiY3JlYXRlX2VsZW1lbnRcIiwgZWxlbWVudFR5cGU6IFwibWVtb3J5XCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiYWdlbnQtY29kZS1yZXZpZXdlci1jb250ZXh0XCIsIGRlc2NyaXB0aW9uOiBcIkV4ZWN1dGlvbiBzdGF0ZSBhbmQgbGVhcm5lZCBwcmVmZXJlbmNlcyBmb3IgY29kZS1yZXZpZXdlciBhZ2VudFwiIH0gfScsXG4gICAgJ3sgb3BlcmF0aW9uOiBcImNyZWF0ZV9lbGVtZW50XCIsIGVsZW1lbnRUeXBlOiBcIm1lbW9yeVwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcInBlcnNvbmEtc2VjdXJpdHktYW5hbHlzdC1wcmVmZXJlbmNlc1wiLCBkZXNjcmlwdGlvbjogXCJQZXJzb25hbGl6YXRpb24gZGF0YSBmb3Igc2VjdXJpdHktYW5hbHlzdCBwZXJzb25hXCIgfSB9JyxcbiAgICAneyBvcGVyYXRpb246IFwiY3JlYXRlX2VsZW1lbnRcIiwgZWxlbWVudFR5cGU6IFwibWVtb3J5XCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwic2Vzc2lvbi1jb250ZXh0XCIsIGRlc2NyaXB0aW9uOiBcIkNyb3NzLWVsZW1lbnQgc2hhcmVkIGNvbnRleHQgZm9yIHRoZSBjdXJyZW50IHNlc3Npb25cIiB9IH0nLFxuICBdLFxuICBpbXBvcnRfZWxlbWVudDogW1xuICAgICd7IG9wZXJhdGlvbjogXCJpbXBvcnRfZWxlbWVudFwiLCBwYXJhbXM6IHsgZGF0YTogXCJ7Li4uZXhwb3J0UGFja2FnZS4uLn1cIiwgb3ZlcndyaXRlOiB0cnVlIH0gfScsXG4gIF0sXG4gIC8vIGFkZEVudHJ5OiBtaWdyYXRlZCB0byBNRU1PUllfU0NIRU1BUyBpbiBPcGVyYXRpb25TY2hlbWEudHMgKElzc3VlICM1OTQpXG4gIGFjdGl2YXRlX2VsZW1lbnQ6IFtcbiAgICAneyBvcGVyYXRpb246IFwiYWN0aXZhdGVfZWxlbWVudFwiLCBlbGVtZW50VHlwZTogXCJwZXJzb25hXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwibXktcGVyc29uYVwiIH0gfScsXG4gIF0sXG4gIGxpc3RfZWxlbWVudHM6IFtcbiAgICAneyBvcGVyYXRpb246IFwibGlzdF9lbGVtZW50c1wiLCBlbGVtZW50X3R5cGU6IFwicGVyc29uYVwiIH0nLFxuICAgIC8vIFJlc3BvbnNlOiB7IGl0ZW1zOiBbeyBuYW1lLCBkZXNjcmlwdGlvbiwgdHlwZSwgdmVyc2lvbiwgdGFncyB9XSwgcGFnaW5hdGlvbjogeyBwYWdlOiAxLCBwYWdlU2l6ZTogMjAsIHRvdGFsSXRlbXMsIHRvdGFsUGFnZXMsIGhhc05leHRQYWdlLCBoYXNQcmV2UGFnZSB9LCBzb3J0aW5nOiB7IHNvcnRCeSwgc29ydE9yZGVyIH0sIGVsZW1lbnRfdHlwZTogXCJwZXJzb25hXCIgfVxuICAgICd7IG9wZXJhdGlvbjogXCJsaXN0X2VsZW1lbnRzXCIsIGVsZW1lbnRfdHlwZTogXCJwZXJzb25hXCIsIHBhcmFtczogeyBwYWdlOiAyLCBwYWdlU2l6ZTogMTAgfSB9JyxcbiAgICAneyBvcGVyYXRpb246IFwibGlzdF9lbGVtZW50c1wiLCBlbGVtZW50X3R5cGU6IFwic2tpbGxcIiwgcGFyYW1zOiB7IHRhZ3M6IFtcInR5cGVzY3JpcHRcIl0sIHNvcnRCeTogXCJtb2RpZmllZFwiLCBzb3J0T3JkZXI6IFwiZGVzY1wiIH0gfScsXG4gICAgJ3sgb3BlcmF0aW9uOiBcImxpc3RfZWxlbWVudHNcIiwgZWxlbWVudF90eXBlOiBcInBlcnNvbmFcIiwgcGFyYW1zOiB7IGFnZ3JlZ2F0ZTogeyBjb3VudDogdHJ1ZSB9IH0gfScsXG4gICAgLy8gUmVzcG9uc2U6IHsgY291bnQ6IDQyLCBlbGVtZW50X3R5cGU6IFwicGVyc29uYVwiIH1cbiAgICAneyBvcGVyYXRpb246IFwibGlzdF9lbGVtZW50c1wiLCBlbGVtZW50X3R5cGU6IFwicGVyc29uYVwiLCBwYXJhbXM6IHsgYWdncmVnYXRlOiB7IGNvdW50OiB0cnVlLCBncm91cF9ieTogXCJjYXRlZ29yeVwiIH0gfSB9JyxcbiAgICAvLyBSZXNwb25zZTogeyBjb3VudDogNDIsIGVsZW1lbnRfdHlwZTogXCJwZXJzb25hXCIsIGdyb3VwczogeyBcImFzc2lzdGFudFwiOiAxNSwgXCJjcmVhdGl2ZVwiOiAxMiwgXCJ0ZWNobmljYWxcIjogMTUgfSB9XG4gIF0sXG4gIGdldF9lbGVtZW50OiBbXG4gICAgJ3sgb3BlcmF0aW9uOiBcImdldF9lbGVtZW50XCIsIGVsZW1lbnRUeXBlOiBcInBlcnNvbmFcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJteS1wZXJzb25hXCIgfSB9JyxcbiAgXSxcbiAgZ2V0X2VsZW1lbnRfZGV0YWlsczogW1xuICAgICd7IG9wZXJhdGlvbjogXCJnZXRfZWxlbWVudF9kZXRhaWxzXCIsIGVsZW1lbnRUeXBlOiBcInBlcnNvbmFcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJteS1wZXJzb25hXCIgfSB9JyxcbiAgXSxcbiAgc2VhcmNoX2VsZW1lbnRzOiBbXG4gICAgJ3sgb3BlcmF0aW9uOiBcInNlYXJjaF9lbGVtZW50c1wiLCBwYXJhbXM6IHsgcXVlcnk6IFwiaGVscGZ1bCBhc3Npc3RhbnRcIiB9IH0nLFxuICAgIC8vIFJlc3BvbnNlOiB7IGl0ZW1zOiBbeyB0eXBlLCBlbGVtZW50X25hbWUsIGRlc2NyaXB0aW9uLCBtYXRjaGVkSW46IFtcIm5hbWVcIiwgXCJkZXNjcmlwdGlvblwiXSB9XSwgcGFnaW5hdGlvbjogeyBwYWdlLCBwYWdlU2l6ZSwgdG90YWxJdGVtcywgdG90YWxQYWdlcywgaGFzTmV4dFBhZ2UsIGhhc1ByZXZQYWdlIH0sIHNvcnRpbmc6IHsgc29ydEJ5LCBzb3J0T3JkZXIgfSwgcXVlcnk6IFwiaGVscGZ1bCBhc3Npc3RhbnRcIiB9XG4gICAgJ3sgb3BlcmF0aW9uOiBcInNlYXJjaF9lbGVtZW50c1wiLCBlbGVtZW50X3R5cGU6IFwicGVyc29uYVwiLCBwYXJhbXM6IHsgcXVlcnk6IFwiY29kZSByZXZpZXdcIiwgcGFnaW5hdGlvbjogeyBwYWdlOiAxLCBwYWdlU2l6ZTogMTAgfSB9IH0nLFxuICAgICd7IG9wZXJhdGlvbjogXCJzZWFyY2hfZWxlbWVudHNcIiwgcGFyYW1zOiB7IHF1ZXJ5OiBcInR5cGVzY3JpcHRcIiwgc29ydDogeyBzb3J0Qnk6IFwibmFtZVwiLCBzb3J0T3JkZXI6IFwiZGVzY1wiIH0gfSB9JyxcbiAgXSxcbiAgcXVlcnlfZWxlbWVudHM6IFtcbiAgICAneyBvcGVyYXRpb246IFwicXVlcnlfZWxlbWVudHNcIiwgZWxlbWVudF90eXBlOiBcInBlcnNvbmFcIiwgcGFyYW1zOiB7IGZpbHRlcnM6IHsgc3RhdHVzOiBcImFjdGl2ZVwiIH0sIHBhZ2luYXRpb246IHsgcGFnZTogMSwgcGFnZVNpemU6IDEwIH0gfSB9JyxcbiAgICAvLyBSZXNwb25zZTogeyBpdGVtczogW3sgbmFtZSwgZGVzY3JpcHRpb24sIHR5cGUsIHZlcnNpb24sIHRhZ3MgfV0sIHBhZ2luYXRpb246IHsgcGFnZSwgcGFnZVNpemUsIHRvdGFsSXRlbXMsIHRvdGFsUGFnZXMsIGhhc05leHRQYWdlLCBoYXNQcmV2UGFnZSB9LCBzb3J0aW5nOiB7IHNvcnRCeSwgc29ydE9yZGVyIH0sIGVsZW1lbnRfdHlwZTogXCJwZXJzb25hXCIgfVxuICAgICd7IG9wZXJhdGlvbjogXCJxdWVyeV9lbGVtZW50c1wiLCBlbGVtZW50X3R5cGU6IFwic2tpbGxcIiwgcGFyYW1zOiB7IGZpbHRlcnM6IHsgdGFnczogW1widHlwZXNjcmlwdFwiXSB9LCBzb3J0OiB7IHNvcnRCeTogXCJtb2RpZmllZFwiLCBzb3J0T3JkZXI6IFwiZGVzY1wiIH0gfSB9JyxcbiAgICAneyBvcGVyYXRpb246IFwicXVlcnlfZWxlbWVudHNcIiwgZWxlbWVudF90eXBlOiBcInBlcnNvbmFcIiwgcGFyYW1zOiB7IGFnZ3JlZ2F0ZTogeyBjb3VudDogdHJ1ZSwgZ3JvdXBfYnk6IFwidGFnc1wiIH0gfSB9JyxcbiAgICAvLyBSZXNwb25zZTogeyBjb3VudDogNDIsIGVsZW1lbnRfdHlwZTogXCJwZXJzb25hXCIsIGdyb3VwczogeyBcImFzc2lzdGFudFwiOiAxNSwgXCJjcmVhdGl2ZVwiOiAxMiB9IH1cbiAgXSxcbiAgZ2V0X2FjdGl2ZV9lbGVtZW50czogW1xuICAgICd7IG9wZXJhdGlvbjogXCJnZXRfYWN0aXZlX2VsZW1lbnRzXCIsIGVsZW1lbnRUeXBlOiBcInBlcnNvbmFcIiB9JyxcbiAgXSxcbiAgdmFsaWRhdGVfZWxlbWVudDogW1xuICAgICd7IG9wZXJhdGlvbjogXCJ2YWxpZGF0ZV9lbGVtZW50XCIsIGVsZW1lbnRUeXBlOiBcInBlcnNvbmFcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJteS1wZXJzb25hXCIsIHN0cmljdDogdHJ1ZSB9IH0nLFxuICBdLFxuICByZW5kZXI6IFtcbiAgICAneyBvcGVyYXRpb246IFwicmVuZGVyXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwibWVldGluZy1ub3Rlc1wiLCB2YXJpYWJsZXM6IHsgZGF0ZTogXCIyMDI0LTAxLTE1XCIsIGF0dGVuZGVlczogW1wiQWxpY2VcIiwgXCJCb2JcIl0gfSB9IH0nLFxuICBdLFxuICBleHBvcnRfZWxlbWVudDogW1xuICAgICd7IG9wZXJhdGlvbjogXCJleHBvcnRfZWxlbWVudFwiLCBlbGVtZW50VHlwZTogXCJwZXJzb25hXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwibXktcGVyc29uYVwiLCBmb3JtYXQ6IFwianNvblwiIH0gfScsXG4gIF0sXG4gIGRlYWN0aXZhdGVfZWxlbWVudDogW1xuICAgICd7IG9wZXJhdGlvbjogXCJkZWFjdGl2YXRlX2VsZW1lbnRcIiwgZWxlbWVudFR5cGU6IFwicGVyc29uYVwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcIm15LXBlcnNvbmFcIiB9IH0nLFxuICBdLFxuICBpbnRyb3NwZWN0OiBbXG4gICAgJ3sgb3BlcmF0aW9uOiBcImludHJvc3BlY3RcIiwgcGFyYW1zOiB7IHF1ZXJ5OiBcIm9wZXJhdGlvbnNcIiB9IH0nLFxuICAgICd7IG9wZXJhdGlvbjogXCJpbnRyb3NwZWN0XCIsIHBhcmFtczogeyBxdWVyeTogXCJvcGVyYXRpb25zXCIsIG5hbWU6IFwiY3JlYXRlX2VsZW1lbnRcIiB9IH0nLFxuICAgICd7IG9wZXJhdGlvbjogXCJpbnRyb3NwZWN0XCIsIHBhcmFtczogeyBxdWVyeTogXCJ0eXBlc1wiLCBuYW1lOiBcIkVsZW1lbnRUeXBlXCIgfSB9JyxcbiAgICAneyBvcGVyYXRpb246IFwiaW50cm9zcGVjdFwiLCBwYXJhbXM6IHsgcXVlcnk6IFwiZm9ybWF0XCIgfSB9JyxcbiAgICAneyBvcGVyYXRpb246IFwiaW50cm9zcGVjdFwiLCBwYXJhbXM6IHsgcXVlcnk6IFwiZm9ybWF0XCIsIG5hbWU6IFwidGVtcGxhdGVcIiB9IH0nLFxuICBdLFxuICBlZGl0X2VsZW1lbnQ6IFtcbiAgICAneyBvcGVyYXRpb246IFwiZWRpdF9lbGVtZW50XCIsIGVsZW1lbnRUeXBlOiBcInBlcnNvbmFcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJteS1wZXJzb25hXCIsIGlucHV0OiB7IGRlc2NyaXB0aW9uOiBcIlVwZGF0ZWQgZGVzY3JpcHRpb25cIiB9IH0gfScsXG4gIF0sXG4gIGRlbGV0ZV9lbGVtZW50OiBbXG4gICAgJ3sgb3BlcmF0aW9uOiBcImRlbGV0ZV9lbGVtZW50XCIsIGVsZW1lbnRUeXBlOiBcIm1lbW9yeVwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcIm9sZC1wZXJzb25hXCIsIGRlbGV0ZURhdGE6IHRydWUgfSB9JyxcbiAgXSxcbiAgLy8gY2xlYXIsIGV4ZWN1dGVfYWdlbnQsIGdldF9leGVjdXRpb25fc3RhdGUsIHJlY29yZF9leGVjdXRpb25fc3RlcCwgY29tcGxldGVfZXhlY3V0aW9uLFxuICAvLyBjb250aW51ZV9leGVjdXRpb24sIGFib3J0X2V4ZWN1dGlvbiwgZ2V0X2dhdGhlcmVkX2RhdGEsIHByZXBhcmVfaGFuZG9mZiwgcmVzdW1lX2Zyb21faGFuZG9mZjpcbiAgLy8gQWxsIG1pZ3JhdGVkIHRvIElOVFJPU1BFQ1RJT05fT05MWV9TQ0hFTUFTIGluIE9wZXJhdGlvblNjaGVtYS50cyAoSXNzdWUgIzU5NClcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEludHJvc3BlY3Rpb25SZXNvbHZlciBDbGFzc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFJlc29sdmVyIGZvciBpbnRyb3NwZWN0aW9uIHF1ZXJpZXMuXG4gKiBQcm92aWRlcyBzZWxmLWRvY3VtZW50YXRpb24gY2FwYWJpbGl0aWVzIGZvciBNQ1AtQVFMIG9wZXJhdGlvbnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnRyb3NwZWN0aW9uUmVzb2x2ZXIge1xuICAvKipcbiAgICogRXhlY3V0ZSBhbiBpbnRyb3NwZWN0aW9uIHF1ZXJ5XG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBJbnRyb3NwZWN0aW9uIHBhcmFtZXRlcnNcbiAgICogQHBhcmFtIHBhcmFtcy5xdWVyeSAtIFdoYXQgdG8gaW50cm9zcGVjdDogJ29wZXJhdGlvbnMnLCAndHlwZXMnLCAnZm9ybWF0Jywgb3IgJ2NhdGVnb3JpZXMnXG4gICAqIEBwYXJhbSBwYXJhbXMubmFtZSAtIE9wdGlvbmFsOiBzcGVjaWZpYyBvcGVyYXRpb24gb3IgdHlwZSBuYW1lXG4gICAqIEByZXR1cm5zIEludHJvc3BlY3Rpb25SZXN1bHQgd2l0aCByZXF1ZXN0ZWQgaW5mb3JtYXRpb25cbiAgICovXG4gIHN0YXRpYyByZXNvbHZlKHBhcmFtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBJbnRyb3NwZWN0aW9uUmVzdWx0IHtcbiAgICBjb25zdCBxdWVyeSA9IChwYXJhbXMucXVlcnkgYXMgc3RyaW5nKSB8fCAnb3BlcmF0aW9ucyc7XG4gICAgY29uc3QgbmFtZSA9IHBhcmFtcy5uYW1lIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIHN3aXRjaCAocXVlcnkpIHtcbiAgICAgIGNhc2UgJ29wZXJhdGlvbnMnOlxuICAgICAgICBpZiAobmFtZSkge1xuICAgICAgICAgIHJldHVybiB7IG9wZXJhdGlvbjogdGhpcy5nZXRPcGVyYXRpb25EZXRhaWxzKG5hbWUpIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgb3BlcmF0aW9uczogdGhpcy5saXN0T3BlcmF0aW9ucygpIH07XG5cbiAgICAgIGNhc2UgJ3R5cGVzJzpcbiAgICAgICAgaWYgKG5hbWUpIHtcbiAgICAgICAgICByZXR1cm4geyB0eXBlOiB0aGlzLmdldFR5cGVEZXRhaWxzKG5hbWUpIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgdHlwZXM6IHRoaXMubGlzdFR5cGVzKCkgfTtcblxuICAgICAgY2FzZSAnZm9ybWF0JzpcbiAgICAgICAgcmV0dXJuIHsgZm9ybWF0U3BlYzogdGhpcy5nZXRGb3JtYXRTcGVjKG5hbWUpIH07XG5cbiAgICAgIC8vIElzc3VlICM2MzE6IENhdGVnb3J5IGRpc2NvdmVyeSDigJQgZm9ybWF0IHJ1bGVzICsgZ3VpZGFuY2UgZm9yIGxpdmUgZGF0YVxuICAgICAgY2FzZSAnY2F0ZWdvcmllcyc6XG4gICAgICAgIHJldHVybiB7IGNhdGVnb3JpZXM6IHRoaXMuZ2V0Q2F0ZWdvcnlJbmZvKCkgfTtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gUmV0dXJuIGVtcHR5IHJlc3VsdCBmb3IgdW5rbm93biBxdWVyeSB0eXBlc1xuICAgICAgICByZXR1cm4ge307XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIExpc3QgYWxsIGF2YWlsYWJsZSBvcGVyYXRpb25zXG4gICAqXG4gICAqIEZvciBzY2hlbWEtZHJpdmVuIG9wZXJhdGlvbnMsIHVzZXMgZGVzY3JpcHRpb24gZnJvbSBPcGVyYXRpb25TY2hlbWEuXG4gICAqIEZvciBsZWdhY3kgb3BlcmF0aW9ucywgdXNlcyBkZXNjcmlwdGlvbiBmcm9tIE9QRVJBVElPTl9ST1VURVMuXG4gICAqXG4gICAqIEBzZWUgSXNzdWUgIzI1NCAtIFNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGggZnJvbSBzY2hlbWFcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGxpc3RPcGVyYXRpb25zKCk6IE9wZXJhdGlvbkluZm9bXSB7XG4gICAgY29uc3Qgb3BlcmF0aW9uczogT3BlcmF0aW9uSW5mb1tdID0gW107XG5cbiAgICAvLyBJbmNsdWRlIGFsbCBvcGVyYXRpb25zIGZyb20gT1BFUkFUSU9OX1JPVVRFU1xuICAgIGZvciAoY29uc3QgW29wTmFtZSwgcm91dGVdIG9mIE9iamVjdC5lbnRyaWVzKE9QRVJBVElPTl9ST1VURVMpKSB7XG4gICAgICAvLyBQcmVmZXIgc2NoZW1hIGRlc2NyaXB0aW9uIGZyb20gYW55IHNjaGVtYSAoZGlzcGF0Y2gtZHJpdmVuIG9yIGludHJvc3BlY3Rpb24tb25seSlcbiAgICAgIGNvbnN0IHNjaGVtYSA9IGdldEFueU9wZXJhdGlvblNjaGVtYShvcE5hbWUpO1xuICAgICAgb3BlcmF0aW9ucy5wdXNoKHtcbiAgICAgICAgbmFtZTogb3BOYW1lLFxuICAgICAgICBlbmRwb2ludDogcm91dGUuZW5kcG9pbnQsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBzY2hlbWE/LmRlc2NyaXB0aW9uIHx8IHJvdXRlLmRlc2NyaXB0aW9uIHx8IGAke29wTmFtZX0gb3BlcmF0aW9uYCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEFkZCBpbnRyb3NwZWN0IG9wZXJhdGlvbiAoc2NoZW1hLWRyaXZlbiBidXQgbm90IGluIE9QRVJBVElPTl9ST1VURVMpXG4gICAgY29uc3QgaW50cm9zcGVjdFNjaGVtYSA9IGdldE9wZXJhdGlvblNjaGVtYSgnaW50cm9zcGVjdCcpO1xuICAgIG9wZXJhdGlvbnMucHVzaCh7XG4gICAgICBuYW1lOiAnaW50cm9zcGVjdCcsXG4gICAgICBlbmRwb2ludDogJ1JFQUQnLFxuICAgICAgZGVzY3JpcHRpb246IGludHJvc3BlY3RTY2hlbWE/LmRlc2NyaXB0aW9uIHx8ICdRdWVyeSBhdmFpbGFibGUgb3BlcmF0aW9ucyBhbmQgdHlwZXMgKHRoaXMgb3BlcmF0aW9uKScsXG4gICAgfSk7XG5cbiAgICAvLyBTb3J0IGJ5IGVuZHBvaW50IHRoZW4gbmFtZSBmb3IgY29uc2lzdGVudCBvcmRlcmluZ1xuICAgIHJldHVybiBvcGVyYXRpb25zLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIGNvbnN0IGVuZHBvaW50T3JkZXI6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7IENSRUFURTogMCwgUkVBRDogMSwgVVBEQVRFOiAyLCBERUxFVEU6IDMsIEVYRUNVVEU6IDQgfTtcbiAgICAgIGNvbnN0IGVuZHBvaW50RGlmZiA9IChlbmRwb2ludE9yZGVyW2EuZW5kcG9pbnRdID8/IDUpIC0gKGVuZHBvaW50T3JkZXJbYi5lbmRwb2ludF0gPz8gNSk7XG4gICAgICBpZiAoZW5kcG9pbnREaWZmICE9PSAwKSByZXR1cm4gZW5kcG9pbnREaWZmO1xuICAgICAgcmV0dXJuIGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IGEgc3BlY2lmaWMgb3BlcmF0aW9uXG4gICAqXG4gICAqIEZvciBzY2hlbWEtZHJpdmVuIG9wZXJhdGlvbnMsIHJlYWRzIG1ldGFkYXRhIGZyb20gT3BlcmF0aW9uU2NoZW1hLlxuICAgKiBGb3IgbGVnYWN5IG9wZXJhdGlvbnMsIHVzZXMgZmFsbGJhY2sgT1BFUkFUSU9OX1BBUkFNRVRFUlMvT1BFUkFUSU9OX0VYQU1QTEVTLlxuICAgKlxuICAgKiBAc2VlIElzc3VlICMyNTQgLSBBdXRvLWdlbmVyYXRlIGludHJvc3BlY3Rpb24gZnJvbSBzY2hlbWFcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGdldE9wZXJhdGlvbkRldGFpbHMobmFtZTogc3RyaW5nKTogT3BlcmF0aW9uRGV0YWlscyB8IG51bGwge1xuICAgIC8vIENoZWNrIHNjaGVtYSBmaXJzdCDigJQgaW5jbHVkZXMgYm90aCBkaXNwYXRjaC1kcml2ZW4gYW5kIGludHJvc3BlY3Rpb24tb25seSBzY2hlbWFzXG4gICAgY29uc3Qgc2NoZW1hID0gZ2V0QW55T3BlcmF0aW9uU2NoZW1hKG5hbWUpO1xuICAgIGlmIChzY2hlbWEpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFNjaGVtYU9wZXJhdGlvbkRldGFpbHMobmFtZSwgc2NoZW1hKTtcbiAgICB9XG5cbiAgICAvLyBMZWdhY3kgZmFsbGJhY2sgZm9yIG5vbi1zY2hlbWEgb3BlcmF0aW9uc1xuICAgIGNvbnN0IHJvdXRlID0gT1BFUkFUSU9OX1JPVVRFU1tuYW1lXTtcbiAgICBpZiAoIXJvdXRlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmFtZSxcbiAgICAgIGVuZHBvaW50OiByb3V0ZS5lbmRwb2ludCxcbiAgICAgIG1jcFRvb2w6IGBtY3BfYXFsXyR7cm91dGUuZW5kcG9pbnQudG9Mb3dlckNhc2UoKX1gLFxuICAgICAgZGVzY3JpcHRpb246IHJvdXRlLmRlc2NyaXB0aW9uIHx8IGAke25hbWV9IG9wZXJhdGlvbmAsXG4gICAgICBwZXJtaXNzaW9uczogUGVybWlzc2lvbkd1YXJkLmdldFBlcm1pc3Npb25zKHJvdXRlLmVuZHBvaW50IGFzIENSVURFbmRwb2ludCksXG4gICAgICBwYXJhbWV0ZXJzOiBPUEVSQVRJT05fUEFSQU1FVEVSU1tuYW1lXSB8fCBbXSxcbiAgICAgIHJldHVybnM6IHRoaXMuZ2V0UmV0dXJuVHlwZShuYW1lKSxcbiAgICAgIGV4YW1wbGVzOiBPUEVSQVRJT05fRVhBTVBMRVNbbmFtZV0gfHwgW10sXG4gICAgICAuLi4ocm91dGUuYWxpYXNlcz8ubGVuZ3RoID8geyBhbGlhc2VzOiByb3V0ZS5hbGlhc2VzIH0gOiB7fSksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgb3BlcmF0aW9uIGRldGFpbHMgZnJvbSBPcGVyYXRpb25TY2hlbWEgKGRpc3BhdGNoLWRyaXZlbiBvciBpbnRyb3NwZWN0aW9uLW9ubHkpXG4gICAqXG4gICAqIEBzZWUgSXNzdWUgIzI1NCAtIFNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGggZnJvbSBzY2hlbWFcbiAgICogQHNlZSBJc3N1ZSAjNTk0IC0gSW50cm9zcGVjdGlvbi1vbmx5IHNjaGVtYXMgZm9yIGFsbCBvcGVyYXRpb25zXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBnZXRTY2hlbWFPcGVyYXRpb25EZXRhaWxzKG5hbWU6IHN0cmluZywgc2NoZW1hPzogT3BlcmF0aW9uRGVmKTogT3BlcmF0aW9uRGV0YWlscyB8IG51bGwge1xuICAgIGNvbnN0IHJlc29sdmVkU2NoZW1hID0gc2NoZW1hID8/IGdldEFueU9wZXJhdGlvblNjaGVtYShuYW1lKTtcbiAgICBpZiAoIXJlc29sdmVkU2NoZW1hKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBDb252ZXJ0IHNjaGVtYSByZXR1cm5zIHRvIFR5cGVJbmZvLCB3aXRoIGZhbGxiYWNrXG4gICAgY29uc3QgcmV0dXJuczogVHlwZUluZm8gPSByZXNvbHZlZFNjaGVtYS5yZXR1cm5zXG4gICAgICA/IHsgbmFtZTogcmVzb2x2ZWRTY2hlbWEucmV0dXJucy5uYW1lLCBraW5kOiByZXNvbHZlZFNjaGVtYS5yZXR1cm5zLmtpbmQsIGRlc2NyaXB0aW9uOiByZXNvbHZlZFNjaGVtYS5yZXR1cm5zLmRlc2NyaXB0aW9uIH1cbiAgICAgIDogeyBuYW1lOiAnT3BlcmF0aW9uUmVzdWx0Jywga2luZDogJ3VuaW9uJywgZGVzY3JpcHRpb246ICdTdWNjZXNzIHdpdGggZGF0YSBvciBmYWlsdXJlIHdpdGggZXJyb3InIH07XG5cbiAgICBjb25zdCByb3V0ZSA9IE9QRVJBVElPTl9ST1VURVNbbmFtZV07XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWUsXG4gICAgICBlbmRwb2ludDogcmVzb2x2ZWRTY2hlbWEuZW5kcG9pbnQsXG4gICAgICBtY3BUb29sOiBgbWNwX2FxbF8ke3Jlc29sdmVkU2NoZW1hLmVuZHBvaW50LnRvTG93ZXJDYXNlKCl9YCxcbiAgICAgIGRlc2NyaXB0aW9uOiByZXNvbHZlZFNjaGVtYS5kZXNjcmlwdGlvbixcbiAgICAgIHBlcm1pc3Npb25zOiBQZXJtaXNzaW9uR3VhcmQuZ2V0UGVybWlzc2lvbnMocmVzb2x2ZWRTY2hlbWEuZW5kcG9pbnQgYXMgQ1JVREVuZHBvaW50KSxcbiAgICAgIHBhcmFtZXRlcnM6IHNjaGVtYVRvUGFyYW1ldGVySW5mbyhyZXNvbHZlZFNjaGVtYS5wYXJhbXMpLFxuICAgICAgcmV0dXJucyxcbiAgICAgIGV4YW1wbGVzOiByZXNvbHZlZFNjaGVtYS5leGFtcGxlcyB8fCBbXSxcbiAgICAgIC4uLihyb3V0ZT8uYWxpYXNlcz8ubGVuZ3RoID8geyBhbGlhc2VzOiByb3V0ZS5hbGlhc2VzIH0gOiB7fSksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHJldHVybiB0eXBlIGZvciBhIGxlZ2FjeSAobm9uLXNjaGVtYSkgb3BlcmF0aW9uLlxuICAgKiBTY2hlbWEtZHJpdmVuIGFuZCBpbnRyb3NwZWN0aW9uLW9ubHkgb3BlcmF0aW9ucyBnZXQgcmV0dXJuIHR5cGVzIGZyb20gdGhlaXIgc2NoZW1hIGRlZmluaXRpb25zLlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0UmV0dXJuVHlwZShvcGVyYXRpb246IHN0cmluZyk6IFR5cGVJbmZvIHtcbiAgICAvLyBPcGVyYXRpb25zIG1pZ3JhdGVkIHRvIHNjaGVtYXMgKElzc3VlICM1OTQpIGFyZSBoYW5kbGVkIGJ5IGdldFNjaGVtYU9wZXJhdGlvbkRldGFpbHMoKVxuICAgIC8vIFRoaXMgZmFsbGJhY2sgb25seSBhcHBsaWVzIHRvIHRoZSBmZXcgcmVtYWluaW5nIG5vbi1zY2hlbWEgb3BlcmF0aW9uc1xuICAgIGNvbnN0IHJldHVyblR5cGVzOiBSZWNvcmQ8c3RyaW5nLCBUeXBlSW5mbz4gPSB7XG4gICAgICBzZWFyY2hfZWxlbWVudHM6IHsgbmFtZTogJ1NlYXJjaFJlc3VsdCcsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ1N0cnVjdHVyZWQgSlNPTjogeyBpdGVtczogW3sgdHlwZSwgZWxlbWVudF9uYW1lLCBkZXNjcmlwdGlvbiwgbWF0Y2hlZEluIH1dLCBwYWdpbmF0aW9uLCBzb3J0aW5nLCBxdWVyeSB9JyB9LFxuICAgICAgcXVlcnlfZWxlbWVudHM6IHsgbmFtZTogJ1F1ZXJ5UmVzdWx0Jywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnU3RydWN0dXJlZCBKU09OOiB7IGl0ZW1zOiBbeyBuYW1lLCBkZXNjcmlwdGlvbiwgdHlwZSwgdmVyc2lvbiwgdGFncyB9XSwgcGFnaW5hdGlvbiwgc29ydGluZywgZWxlbWVudF90eXBlIH0uIE9yIEFnZ3JlZ2F0aW9uUmVzdWx0OiB7IGNvdW50LCBlbGVtZW50X3R5cGUsIGdyb3Vwcz8gfSB3aGVuIGFnZ3JlZ2F0ZSBwYXJhbSBpcyB1c2VkLicgfSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHJldHVyblR5cGVzW29wZXJhdGlvbl0gfHwge1xuICAgICAgbmFtZTogJ09wZXJhdGlvblJlc3VsdCcsXG4gICAgICBraW5kOiAndW5pb24nLFxuICAgICAgZGVzY3JpcHRpb246ICdTdWNjZXNzIHdpdGggZGF0YSBvciBmYWlsdXJlIHdpdGggZXJyb3InLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogTGlzdCBhbGwgYXZhaWxhYmxlIHR5cGVzXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBsaXN0VHlwZXMoKTogVHlwZUluZm9bXSB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKFRZUEVfREVGSU5JVElPTlMpLm1hcCgoW25hbWUsIGRlZl0pID0+ICh7XG4gICAgICBuYW1lLFxuICAgICAga2luZDogZGVmLmtpbmQsXG4gICAgICBkZXNjcmlwdGlvbjogZGVmLmRlc2NyaXB0aW9uLFxuICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgYSBzcGVjaWZpYyB0eXBlXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBnZXRUeXBlRGV0YWlscyhuYW1lOiBzdHJpbmcpOiBUeXBlRGV0YWlscyB8IG51bGwge1xuICAgIHJldHVybiBUWVBFX0RFRklOSVRJT05TW25hbWVdIHx8IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGZvcm1hdCBzcGVjaWZpY2F0aW9uIGZvciBhbiBlbGVtZW50IHR5cGUuXG4gICAqIElmIG5hbWUgaXMgcHJvdmlkZWQsIHJldHVybnMgYSBzaW5nbGUgc3BlYyAob3IgbnVsbCBmb3IgdW5rbm93biB0eXBlcykuXG4gICAqIElmIG5hbWUgaXMgb21pdHRlZCwgcmV0dXJucyBhbGwgc3BlY3MgYXMgYW4gb3ZlcnZpZXcuXG4gICAqXG4gICAqIEBzZWUgSXNzdWUgIzcxNSAtIFByb2FjdGl2ZSBMTE0gZ3VpZGFuY2UgZm9yIGVsZW1lbnQgY3JlYXRpb25cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGdldEZvcm1hdFNwZWMobmFtZT86IHN0cmluZyk6IEZvcm1hdFNwZWMgfCBGb3JtYXRTcGVjW10gfCBudWxsIHtcbiAgICBpZiAoIW5hbWUpIHtcbiAgICAgIC8vIFJldHVybiBhbGwgZm9ybWF0IHNwZWNzIGFzIGFuIG92ZXJ2aWV3XG4gICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhGT1JNQVRfU1BFQ1MpO1xuICAgIH1cblxuICAgIC8vIE5vcm1hbGl6ZTogaGFuZGxlIHBsdXJhbHMsIGNhc2UsIHdoaXRlc3BhY2VcbiAgICBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplVHlwZU5hbWUobmFtZSk7XG4gICAgaWYgKCFub3JtYWxpemVkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gRk9STUFUX1NQRUNTW25vcm1hbGl6ZWRdIHx8IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogSXNzdWUgIzYzMTogQ2F0ZWdvcnkgZGlzY292ZXJ5IGluZm8g4oCUIGZvcm1hdCBydWxlcywgYWxsb3dlZCBhZ2dyZWdhdGlvbiBmaWVsZHMsXG4gICAqIGFuZCBndWlkYW5jZSBmb3IgZGlzY292ZXJpbmcgZXhpc3RpbmcgY2F0ZWdvcmllcyB2aWEgcXVlcnlfZWxlbWVudHMuXG4gICAqIEludHJvc3BlY3Rpb25SZXNvbHZlciBpcyBzdGF0ZWxlc3MgKG5vIHBvcnRmb2xpbyBhY2Nlc3MpLCBzbyBsaXZlIGNhdGVnb3J5IGRhdGFcbiAgICogbXVzdCBiZSBmZXRjaGVkIHZpYSBxdWVyeV9lbGVtZW50cyB3aXRoIGFnZ3JlZ2F0ZTogeyBncm91cF9ieTogXCJjYXRlZ29yeVwiIH0uXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBnZXRDYXRlZ29yeUluZm8oKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICAgIHJldHVybiB7XG4gICAgICBmb3JtYXRSdWxlczoge1xuICAgICAgICBwYXR0ZXJuOiBWQUxJREFUSU9OX1BBVFRFUk5TLlNBRkVfQ0FURUdPUlkuc291cmNlLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0NhdGVnb3J5IG5hbWVzIG11c3Qgc3RhcnQgd2l0aCBhIGxldHRlciwgY29udGFpbiBvbmx5IGxldHRlcnMsIGRpZ2l0cywgaHlwaGVucywgYW5kIHVuZGVyc2NvcmVzLCBhbmQgYmUgMS0yMSBjaGFyYWN0ZXJzIGxvbmcuJyxcbiAgICAgICAgZXhhbXBsZXM6IFsnZGV2ZWxvcG1lbnQnLCAnY29kZS1hbmFseXNpcycsICdzZWN1cml0eScsICdidXNpbmVzcycsICdjb21tdW5pY2F0aW9uJ10sXG4gICAgICB9LFxuICAgICAgc3VwcG9ydGVkVHlwZXM6IFsncGVyc29uYScsICdza2lsbCcsICd0ZW1wbGF0ZScsICdtZW1vcnknXSxcbiAgICAgIGFsbG93ZWRHcm91cEJ5RmllbGRzOiBnZXRBbGxvd2VkR3JvdXBCeUZpZWxkcygpLFxuICAgICAgZGlzY292ZXJ5OiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVG8gZGlzY292ZXIgZXhpc3RpbmcgY2F0ZWdvcmllcyBpbiB5b3VyIHBvcnRmb2xpbywgdXNlIHF1ZXJ5X2VsZW1lbnRzIHdpdGggZ3JvdXBfYnkgYWdncmVnYXRpb24uJyxcbiAgICAgICAgZXhhbXBsZXM6IFtcbiAgICAgICAgICAneyBvcGVyYXRpb246IFwicXVlcnlfZWxlbWVudHNcIiwgZWxlbWVudF90eXBlOiBcInNraWxsXCIsIHBhcmFtczogeyBhZ2dyZWdhdGU6IHsgY291bnQ6IHRydWUsIGdyb3VwX2J5OiBcImNhdGVnb3J5XCIgfSB9IH0nLFxuICAgICAgICAgICd7IG9wZXJhdGlvbjogXCJxdWVyeV9lbGVtZW50c1wiLCBlbGVtZW50X3R5cGU6IFwidGVtcGxhdGVcIiwgcGFyYW1zOiB7IGFnZ3JlZ2F0ZTogeyBjb3VudDogdHJ1ZSwgZ3JvdXBfYnk6IFwiY2F0ZWdvcnlcIiB9IH0gfScsXG4gICAgICAgICAgJ3sgb3BlcmF0aW9uOiBcInF1ZXJ5X2VsZW1lbnRzXCIsIGVsZW1lbnRfdHlwZTogXCJza2lsbFwiLCBwYXJhbXM6IHsgZmlsdGVyczogeyBjYXRlZ29yeTogXCJzZWN1cml0eVwiIH0gfSB9JyxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgb3BlcmF0aW9ucyBncm91cGVkIGJ5IGVuZHBvaW50XG4gICAqIFV0aWxpdHkgbWV0aG9kIGZvciBkb2N1bWVudGF0aW9uIGdlbmVyYXRpb25cbiAgICovXG4gIHN0YXRpYyBnZXRPcGVyYXRpb25zQnlFbmRwb2ludCgpOiBSZWNvcmQ8Q1JVREVuZHBvaW50LCBPcGVyYXRpb25JbmZvW10+IHtcbiAgICBjb25zdCBncm91cGVkOiBSZWNvcmQ8Q1JVREVuZHBvaW50LCBPcGVyYXRpb25JbmZvW10+ID0ge1xuICAgICAgQ1JFQVRFOiBbXSxcbiAgICAgIFJFQUQ6IFtdLFxuICAgICAgVVBEQVRFOiBbXSxcbiAgICAgIERFTEVURTogW10sXG4gICAgICBFWEVDVVRFOiBbXSxcbiAgICB9O1xuXG4gICAgZm9yIChjb25zdCBvcCBvZiB0aGlzLmxpc3RPcGVyYXRpb25zKCkpIHtcbiAgICAgIGNvbnN0IGVuZHBvaW50ID0gb3AuZW5kcG9pbnQgYXMgQ1JVREVuZHBvaW50O1xuICAgICAgaWYgKGdyb3VwZWRbZW5kcG9pbnRdKSB7XG4gICAgICAgIGdyb3VwZWRbZW5kcG9pbnRdLnB1c2gob3ApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBncm91cGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIGEgY29tcGFjdCBzdW1tYXJ5IGZvciB0b2tlbi1lZmZpY2llbnQgcmVzcG9uc2VzXG4gICAqL1xuICBzdGF0aWMgZ2V0U3VtbWFyeSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IG9wc0J5RW5kcG9pbnQgPSB0aGlzLmdldE9wZXJhdGlvbnNCeUVuZHBvaW50KCk7XG4gICAgY29uc3QgbGluZXM6IHN0cmluZ1tdID0gWydNQ1AtQVFMIE9wZXJhdGlvbnM6J107XG5cbiAgICBmb3IgKGNvbnN0IFtlbmRwb2ludCwgb3BzXSBvZiBPYmplY3QuZW50cmllcyhvcHNCeUVuZHBvaW50KSkge1xuICAgICAgY29uc3Qgb3BOYW1lcyA9IG9wcy5tYXAobyA9PiBvLm5hbWUpLmpvaW4oJywgJyk7XG4gICAgICBsaW5lcy5wdXNoKGAgICR7ZW5kcG9pbnR9OiAke29wTmFtZXN9YCk7XG4gICAgfVxuXG4gICAgbGluZXMucHVzaChgXFxuVHlwZXM6ICR7T2JqZWN0LmtleXMoVFlQRV9ERUZJTklUSU9OUykuam9pbignLCAnKX1gKTtcbiAgICBsaW5lcy5wdXNoKCdcXG5Vc2UgaW50cm9zcGVjdCB3aXRoIG5hbWUgcGFyYW1ldGVyIGZvciBkZXRhaWxzLicpO1xuXG4gICAgcmV0dXJuIGxpbmVzLmpvaW4oJ1xcbicpO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gQ2FwYWJpbGl0aWVzIChJc3N1ZSAjMTc2MClcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogR2V0IHNlcnZlciBjYXBhYmlsaXRpZXMgZ3JvdXBlZCBieSB1c2VyLWludGVudCBjYXRlZ29yeS5cbiAgICogUmVhZHMgY2F0ZWdvcnkgZnJvbSBlYWNoIG9wZXJhdGlvbidzIHNjaGVtYSBkZWZpbml0aW9uIGF0IHJ1bnRpbWUuXG4gICAqIERlc2lnbmVkIGZvciBleHRlbnNpYmlsaXR5IOKAlCBhZGRpdGlvbmFsIENhcGFiaWxpdHlTb3VyY2VzIChlLmcuIHBvcnRmb2xpb1xuICAgKiBlbGVtZW50cyBmcm9tIHRoZSBjYXBhYmlsaXR5IGluZGV4KSBjYW4gYmUgcmVnaXN0ZXJlZCB2aWEgcmVnaXN0ZXJTb3VyY2UoKS5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIE9wdGlvbmFsIHBhcmFtZXRlcnNcbiAgICogQHBhcmFtIHBhcmFtcy5jYXRlZ29yeSAtIEZpbHRlciB0byBhIHNwZWNpZmljIGNhdGVnb3J5XG4gICAqIEByZXR1cm5zIENhcGFiaWxpdGllc1Jlc3VsdCB3aXRoIGNhdGVnb3JpemVkIG9wZXJhdGlvbnNcbiAgICogQHNlZSBJc3N1ZSAjMTc2MCAtIGdldF9jYXBhYmlsaXRpZXMgb3BlcmF0aW9uXG4gICAqL1xuICBzdGF0aWMgZ2V0Q2FwYWJpbGl0aWVzKHBhcmFtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gICAgY29uc3QgZmlsdGVyQ2F0ZWdvcnkgPSBwYXJhbXMuY2F0ZWdvcnkgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IHsgY2F0ZWdvcmllcywgc29ydGVkQ2F0ZWdvcmllcywgc291cmNlVHlwZXMgfSA9IHRoaXMuYnVpbGRDYXRlZ29yeU1hcCgpO1xuXG4gICAgLy8gQXBwbHkgY2F0ZWdvcnkgZmlsdGVyIGlmIHJlcXVlc3RlZFxuICAgIGlmIChmaWx0ZXJDYXRlZ29yeSkge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyQnlDYXRlZ29yeShmaWx0ZXJDYXRlZ29yeSwgY2F0ZWdvcmllcywgc29ydGVkQ2F0ZWdvcmllcywgc291cmNlVHlwZXMpO1xuICAgIH1cblxuICAgIGNvbnN0IHRvdGFsQ2FwYWJpbGl0aWVzID0gT2JqZWN0LnZhbHVlcyhjYXRlZ29yaWVzKS5yZWR1Y2UoXG4gICAgICAoc3VtLCBjYXQpID0+IHN1bSArIGNhdC5jYXBhYmlsaXRpZXMubGVuZ3RoLCAwXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBjYXRlZ29yaWVzLFxuICAgICAgdG90YWxDYXBhYmlsaXRpZXMsXG4gICAgICBzb3VyY2VzOiBzb3VyY2VUeXBlcyxcbiAgICAgIGhpbnQ6ICdVc2UgaW50cm9zcGVjdCB3aXRoIHsgcXVlcnk6IFwib3BlcmF0aW9uc1wiLCBuYW1lOiBcIjxvcGVyYXRpb24+XCIgfSBmb3IgZnVsbCBwYXJhbWV0ZXIgZGV0YWlscywgZXhhbXBsZXMsIGFuZCBwZXJtaXNzaW9ucy4nLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgdGhlIGZ1bGwgY2F0ZWdvcnkgbWFwIGZyb20gYWxsIHJlZ2lzdGVyZWQgY2FwYWJpbGl0eSBzb3VyY2VzLlxuICAgKiBSZXR1cm5zIHNvcnRlZCBjYXRlZ29yaWVzIHdpdGggZGVzY3JpcHRpb25zIGFuZCBtZXJnZWQgZW50cmllcy5cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGJ1aWxkQ2F0ZWdvcnlNYXAoKSB7XG4gICAgY29uc3QgbWVyZ2VkTWFwOiBSZWNvcmQ8c3RyaW5nLCBDYXBhYmlsaXR5RW50cnlbXT4gPSB7fTtcbiAgICBjb25zdCBzb3VyY2VUeXBlczogc3RyaW5nW10gPSBbXTtcblxuICAgIGZvciAoY29uc3Qgc291cmNlIG9mIGNhcGFiaWxpdHlTb3VyY2VzKSB7XG4gICAgICBzb3VyY2VUeXBlcy5wdXNoKHNvdXJjZS5zb3VyY2VUeXBlKTtcbiAgICAgIGNvbnN0IGNhcHMgPSBzb3VyY2UuZ2V0Q2FwYWJpbGl0aWVzKCk7XG4gICAgICBmb3IgKGNvbnN0IFtjYXQsIGVudHJpZXNdIG9mIE9iamVjdC5lbnRyaWVzKGNhcHMpKSB7XG4gICAgICAgIGlmICghbWVyZ2VkTWFwW2NhdF0pIG1lcmdlZE1hcFtjYXRdID0gW107XG4gICAgICAgIG1lcmdlZE1hcFtjYXRdLnB1c2goLi4uZW50cmllcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU29ydCBlbnRyaWVzIHdpdGhpbiBlYWNoIGNhdGVnb3J5IGFscGhhYmV0aWNhbGx5XG4gICAgZm9yIChjb25zdCBlbnRyaWVzIG9mIE9iamVjdC52YWx1ZXMobWVyZ2VkTWFwKSkge1xuICAgICAgZW50cmllcy5zb3J0KChhLCBiKSA9PiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpKTtcbiAgICB9XG5cbiAgICAvLyBTb3J0IGNhdGVnb3JpZXMgYWxwaGFiZXRpY2FsbHkgKFwiT3RoZXJcIiBsYXN0KVxuICAgIGNvbnN0IHNvcnRlZENhdGVnb3JpZXMgPSBPYmplY3Qua2V5cyhtZXJnZWRNYXApLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIGlmIChhID09PSAnT3RoZXInKSByZXR1cm4gMTtcbiAgICAgIGlmIChiID09PSAnT3RoZXInKSByZXR1cm4gLTE7XG4gICAgICByZXR1cm4gYS5sb2NhbGVDb21wYXJlKGIpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgY2F0ZWdvcmllczogUmVjb3JkPHN0cmluZywgeyBkZXNjcmlwdGlvbjogc3RyaW5nOyBjYXBhYmlsaXRpZXM6IENhcGFiaWxpdHlFbnRyeVtdIH0+ID0ge307XG4gICAgZm9yIChjb25zdCBjYXQgb2Ygc29ydGVkQ2F0ZWdvcmllcykge1xuICAgICAgY2F0ZWdvcmllc1tjYXRdID0ge1xuICAgICAgICBkZXNjcmlwdGlvbjogQ0FURUdPUllfREVTQ1JJUFRJT05TW2NhdF0gfHwgYCR7Y2F0fSBvcGVyYXRpb25zYCxcbiAgICAgICAgY2FwYWJpbGl0aWVzOiBtZXJnZWRNYXBbY2F0XSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgY2F0ZWdvcmllcywgc29ydGVkQ2F0ZWdvcmllcywgc291cmNlVHlwZXMgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaWx0ZXIgdGhlIGNhdGVnb3J5IG1hcCB0byBhIHNpbmdsZSBtYXRjaGluZyBjYXRlZ29yeSAoY2FzZS1pbnNlbnNpdGl2ZSkuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBmaWx0ZXJCeUNhdGVnb3J5KFxuICAgIGZpbHRlckNhdGVnb3J5OiBzdHJpbmcsXG4gICAgY2F0ZWdvcmllczogUmVjb3JkPHN0cmluZywgeyBkZXNjcmlwdGlvbjogc3RyaW5nOyBjYXBhYmlsaXRpZXM6IENhcGFiaWxpdHlFbnRyeVtdIH0+LFxuICAgIHNvcnRlZENhdGVnb3JpZXM6IHN0cmluZ1tdLFxuICAgIHNvdXJjZVR5cGVzOiBzdHJpbmdbXSxcbiAgKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICAgIGNvbnN0IGxvd2VyRmlsdGVyID0gZmlsdGVyQ2F0ZWdvcnkudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBmaWx0ZXJlZDogUmVjb3JkPHN0cmluZywgdHlwZW9mIGNhdGVnb3JpZXNbc3RyaW5nXT4gPSB7fTtcbiAgICBmb3IgKGNvbnN0IFtjYXROYW1lLCBjYXREYXRhXSBvZiBPYmplY3QuZW50cmllcyhjYXRlZ29yaWVzKSkge1xuICAgICAgaWYgKGNhdE5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbG93ZXJGaWx0ZXIpIHtcbiAgICAgICAgZmlsdGVyZWRbY2F0TmFtZV0gPSBjYXREYXRhO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoT2JqZWN0LmtleXMoZmlsdGVyZWQpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2F0ZWdvcmllczoge30sXG4gICAgICAgIGF2YWlsYWJsZUNhdGVnb3JpZXM6IHNvcnRlZENhdGVnb3JpZXMsXG4gICAgICAgIGhpbnQ6IGBObyBjYXRlZ29yeSBtYXRjaGluZyBcIiR7ZmlsdGVyQ2F0ZWdvcnl9XCIuIFVzZSBnZXRfY2FwYWJpbGl0aWVzIHdpdGhvdXQgYSBmaWx0ZXIgdG8gc2VlIGFsbCBjYXRlZ29yaWVzLmAsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgY2F0ZWdvcmllczogZmlsdGVyZWQsXG4gICAgICBzb3VyY2VzOiBzb3VyY2VUeXBlcyxcbiAgICAgIGhpbnQ6ICdVc2UgaW50cm9zcGVjdCB3aXRoIHsgcXVlcnk6IFwib3BlcmF0aW9uc1wiLCBuYW1lOiBcIjxvcGVyYXRpb24+XCIgfSBmb3IgZnVsbCBkZXRhaWxzIG9uIGFueSBvcGVyYXRpb24uJyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGFuIGFkZGl0aW9uYWwgY2FwYWJpbGl0eSBzb3VyY2UuXG4gICAqIEZ1dHVyZSBlbGVtZW50IHNvdXJjZXMgKHJlYWRpbmcgZnJvbSB0aGUgY2FwYWJpbGl0eSBpbmRleCkgY2FuIGJlXG4gICAqIHBsdWdnZWQgaW4gaGVyZSB3aXRob3V0IG1vZGlmeWluZyB0aGUgZ2V0X2NhcGFiaWxpdGllcyBoYW5kbGVyLlxuICAgKiBAc2VlIElzc3VlICMxNzYwIC0gZXh0ZW5zaWJpbGl0eSBmb3IgcG9ydGZvbGlvIGVsZW1lbnQgY2FwYWJpbGl0aWVzXG4gICAqL1xuICBzdGF0aWMgcmVnaXN0ZXJTb3VyY2Uoc291cmNlOiBDYXBhYmlsaXR5U291cmNlKTogdm9pZCB7XG4gICAgY2FwYWJpbGl0eVNvdXJjZXMucHVzaChzb3VyY2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRydW5jYXRlIGEgZGVzY3JpcHRpb24gdG8gYSBicmllZiBvbmUtbGluZXIuXG4gICAqIFRha2VzIHRoZSBmaXJzdCBzZW50ZW5jZSAodXAgdG8gZmlyc3QgcGVyaW9kIGZvbGxvd2VkIGJ5IHNwYWNlIG9yIGVuZCkuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyB0b0JyaWVmKGRlc2NyaXB0aW9uOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghZGVzY3JpcHRpb24gfHwgdHlwZW9mIGRlc2NyaXB0aW9uICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuICdObyBkZXNjcmlwdGlvbiBhdmFpbGFibGUnO1xuICAgIH1cbiAgICBjb25zdCBtYXRjaCA9IC9eW14uXSpcXC4vLmV4ZWMoZGVzY3JpcHRpb24pO1xuICAgIGlmIChtYXRjaCAmJiBtYXRjaFswXS5sZW5ndGggPD0gMTIwKSB7XG4gICAgICByZXR1cm4gbWF0Y2hbMF07XG4gICAgfVxuICAgIGlmIChkZXNjcmlwdGlvbi5sZW5ndGggPD0gMTIwKSByZXR1cm4gZGVzY3JpcHRpb247XG4gICAgcmV0dXJuIGRlc2NyaXB0aW9uLnNsaWNlKDAsIDExNykgKyAnLi4uJztcbiAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDYXBhYmlsaXR5IFNvdXJjZSBTeXN0ZW0gKElzc3VlICMxNzYwKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEEgc2luZ2xlIGNhcGFiaWxpdHkgZW50cnkg4oCUIHJlcHJlc2VudHMgb25lIHRoaW5nIGEgdXNlciBjYW4gZG8uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2FwYWJpbGl0eUVudHJ5IHtcbiAgLyoqIE9wZXJhdGlvbiBvciBjYXBhYmlsaXR5IG5hbWUgKi9cbiAgbmFtZTogc3RyaW5nO1xuICAvKiogT25lLWxpbmUgZGVzY3JpcHRpb24gKi9cbiAgYnJpZWY6IHN0cmluZztcbiAgLyoqIE9yaWdpbjogJ3NlcnZlcicgZm9yIGJ1aWx0LWluIG9wZXJhdGlvbnMsIG9yICdza2lsbDpuYW1lJywgJ2FnZW50Om5hbWUnLCBldGMuICovXG4gIHNvdXJjZTogc3RyaW5nO1xuICAvKiogQ1JVREUgZW5kcG9pbnQgKGZvciBzZXJ2ZXIgb3BlcmF0aW9ucykgKi9cbiAgZW5kcG9pbnQ/OiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHRoaXMgY2FwYWJpbGl0eSBpcyBjdXJyZW50bHkgYWN0aXZlIG9yIGF2YWlsYWJsZSB0byBhY3RpdmF0ZSAqL1xuICBzdGF0dXM6ICdhY3RpdmUnIHwgJ2F2YWlsYWJsZSc7XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIGZvciBwbHVnZ2FibGUgY2FwYWJpbGl0eSBwcm92aWRlcnMuXG4gKiBJbXBsZW1lbnQgdGhpcyB0byBjb250cmlidXRlIGNhcGFiaWxpdGllcyBmcm9tIG5ldyBzb3VyY2VzIChlLmcuIHBvcnRmb2xpbyBlbGVtZW50cykuXG4gKiBAc2VlIElzc3VlICMxNzYwIC0gZXh0ZW5zaWJpbGl0eSBmb3IgcG9ydGZvbGlvIGVsZW1lbnQgY2FwYWJpbGl0aWVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2FwYWJpbGl0eVNvdXJjZSB7XG4gIHJlYWRvbmx5IHNvdXJjZVR5cGU6IHN0cmluZztcbiAgZ2V0Q2FwYWJpbGl0aWVzKCk6IFJlY29yZDxzdHJpbmcsIENhcGFiaWxpdHlFbnRyeVtdPjtcbn1cblxuLyoqXG4gKiBCdWlsdC1pbiBjYXBhYmlsaXR5IHNvdXJjZSB0aGF0IHJlYWRzIGZyb20gdGhlIG9wZXJhdGlvbiByZWdpc3RyeS5cbiAqIEdyb3VwcyBvcGVyYXRpb25zIGJ5IHRoZWlyIHNjaGVtYS1kZWNsYXJlZCBjYXRlZ29yeSBmaWVsZC5cbiAqL1xuY2xhc3MgU2VydmVyT3BlcmF0aW9uc1NvdXJjZSBpbXBsZW1lbnRzIENhcGFiaWxpdHlTb3VyY2Uge1xuICByZWFkb25seSBzb3VyY2VUeXBlID0gJ3NlcnZlcic7XG5cbiAgZ2V0Q2FwYWJpbGl0aWVzKCk6IFJlY29yZDxzdHJpbmcsIENhcGFiaWxpdHlFbnRyeVtdPiB7XG4gICAgY29uc3QgbWFwOiBSZWNvcmQ8c3RyaW5nLCBDYXBhYmlsaXR5RW50cnlbXT4gPSB7fTtcblxuICAgIC8vIENvbGxlY3QgZnJvbSBPUEVSQVRJT05fUk9VVEVTICh0aGUgY29tcGxldGUgb3BlcmF0aW9uIGxpc3QpXG4gICAgZm9yIChjb25zdCBbb3BOYW1lLCByb3V0ZV0gb2YgT2JqZWN0LmVudHJpZXMoT1BFUkFUSU9OX1JPVVRFUykpIHtcbiAgICAgIGNvbnN0IHNjaGVtYSA9IGdldEFueU9wZXJhdGlvblNjaGVtYShvcE5hbWUpO1xuICAgICAgY29uc3QgY2F0ZWdvcnkgPSBzY2hlbWE/LmNhdGVnb3J5IHx8ICdPdGhlcic7XG4gICAgICBjb25zdCBicmllZiA9IEludHJvc3BlY3Rpb25SZXNvbHZlclsndG9CcmllZiddKFxuICAgICAgICBzY2hlbWE/LmRlc2NyaXB0aW9uIHx8IHJvdXRlLmRlc2NyaXB0aW9uIHx8IGAke29wTmFtZX0gb3BlcmF0aW9uYFxuICAgICAgKTtcblxuICAgICAgaWYgKCFtYXBbY2F0ZWdvcnldKSBtYXBbY2F0ZWdvcnldID0gW107XG4gICAgICBtYXBbY2F0ZWdvcnldLnB1c2goe1xuICAgICAgICBuYW1lOiBvcE5hbWUsXG4gICAgICAgIGJyaWVmLFxuICAgICAgICBzb3VyY2U6ICdzZXJ2ZXInLFxuICAgICAgICBlbmRwb2ludDogcm91dGUuZW5kcG9pbnQsXG4gICAgICAgIHN0YXR1czogJ2FjdGl2ZScsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBBZGQgc2NoZW1hLW9ubHkgb3BlcmF0aW9ucyBub3QgaW4gT1BFUkFUSU9OX1JPVVRFUyAoZS5nLiwgaW50cm9zcGVjdCwgZ2V0X2NhcGFiaWxpdGllcylcbiAgICBmb3IgKGNvbnN0IFtvcE5hbWUsIHNjaGVtYV0gb2YgT2JqZWN0LmVudHJpZXMoQUxMX09QRVJBVElPTl9TQ0hFTUFTKSkge1xuICAgICAgaWYgKG9wTmFtZSBpbiBPUEVSQVRJT05fUk9VVEVTKSBjb250aW51ZTtcbiAgICAgIGNvbnN0IGNhdGVnb3J5ID0gc2NoZW1hLmNhdGVnb3J5IHx8ICdPdGhlcic7XG4gICAgICBjb25zdCBicmllZiA9IEludHJvc3BlY3Rpb25SZXNvbHZlclsndG9CcmllZiddKHNjaGVtYS5kZXNjcmlwdGlvbik7XG5cbiAgICAgIGlmICghbWFwW2NhdGVnb3J5XSkgbWFwW2NhdGVnb3J5XSA9IFtdO1xuICAgICAgbWFwW2NhdGVnb3J5XS5wdXNoKHtcbiAgICAgICAgbmFtZTogb3BOYW1lLFxuICAgICAgICBicmllZixcbiAgICAgICAgc291cmNlOiAnc2VydmVyJyxcbiAgICAgICAgZW5kcG9pbnQ6IHNjaGVtYS5lbmRwb2ludCxcbiAgICAgICAgc3RhdHVzOiAnYWN0aXZlJyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBtYXA7XG4gIH1cbn1cblxuLyoqXG4gKiBIdW1hbi1yZWFkYWJsZSBkZXNjcmlwdGlvbnMgZm9yIGVhY2ggY2FwYWJpbGl0eSBjYXRlZ29yeS5cbiAqIEBzZWUgSXNzdWUgIzE3NjAgLSBnZXRfY2FwYWJpbGl0aWVzIG9wZXJhdGlvblxuICovXG5jb25zdCBDQVRFR09SWV9ERVNDUklQVElPTlM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICdFbGVtZW50IExpZmVjeWNsZSc6ICdDcmVhdGUsIHJlYWQsIGVkaXQsIGRlbGV0ZSwgaW1wb3J0LCBleHBvcnQsIGFuZCB2YWxpZGF0ZSBlbGVtZW50cyAocGVyc29uYXMsIHNraWxscywgdGVtcGxhdGVzLCBhZ2VudHMsIG1lbW9yaWVzLCBlbnNlbWJsZXMpLicsXG4gICdFbGVtZW50IERpc2NvdmVyeSc6ICdTZWFyY2gsIGxpc3QsIHF1ZXJ5LCBhbmQgZmlsdGVyIGVsZW1lbnRzIGFjcm9zcyB5b3VyIHBvcnRmb2xpbyBhbmQgY29ubmVjdGVkIHNvdXJjZXMuJyxcbiAgJ0FjdGl2YXRpb24nOiAnQWN0aXZhdGUgYW5kIGRlYWN0aXZhdGUgZWxlbWVudHMgZm9yIHVzZSBpbiB0aGUgY3VycmVudCBzZXNzaW9uLicsXG4gICdNZW1vcnknOiAnQWRkIGVudHJpZXMgdG8gYW5kIGNsZWFyIG1lbW9yeSBlbGVtZW50cy4nLFxuICAnVGVtcGxhdGUgUmVuZGVyaW5nJzogJ1JlbmRlciB0ZW1wbGF0ZXMgd2l0aCB2YXJpYWJsZSBzdWJzdGl0dXRpb24uJyxcbiAgJ0FnZW50IEV4ZWN1dGlvbic6ICdFeGVjdXRlIGFnZW50cywgdHJhY2sgcHJvZ3Jlc3MsIHJlY29yZCBzdGVwcywgbWFuYWdlIGhhbmRvZmZzLCBhbmQgY29udHJvbCB0aGUgZXhlY3V0aW9uIGxpZmVjeWNsZS4nLFxuICAnU2VjdXJpdHkgJiBQZXJtaXNzaW9ucyc6ICdDb25maXJtIG9wZXJhdGlvbnMsIHZlcmlmeSBjaGFsbGVuZ2VzLCBldmFsdWF0ZSBDTEkgcGVybWlzc2lvbnMsIGFuZCBtYW5hZ2UgYXBwcm92YWwgd29ya2Zsb3dzLicsXG4gICdDb21tdW5pdHkgQ29sbGVjdGlvbic6ICdCcm93c2UsIHNlYXJjaCwgaW5zdGFsbCBmcm9tLCBhbmQgc3VibWl0IHRvIHRoZSBEb2xsaG91c2VNQ1AgY29tbXVuaXR5IGNvbGxlY3Rpb24uJyxcbiAgJ1BvcnRmb2xpbyBNYW5hZ2VtZW50JzogJ0luaXRpYWxpemUsIHN5bmMsIGNvbmZpZ3VyZSwgYW5kIG1hbmFnZSB5b3VyIGxvY2FsIGFuZCBHaXRIdWIgcG9ydGZvbGlvLicsXG4gICdHaXRIdWIgQXV0aGVudGljYXRpb24nOiAnU2V0IHVwLCBjaGVjaywgYW5kIG1hbmFnZSBHaXRIdWIgYXV0aGVudGljYXRpb24gYW5kIE9BdXRoIGNvbmZpZ3VyYXRpb24uJyxcbiAgJ0ludGVsbGlnZW5jZSc6ICdGaW5kIHNpbWlsYXIgZWxlbWVudHMsIGRpc2NvdmVyIHJlbGF0aW9uc2hpcHMsIGFuZCBzZWFyY2ggYnkgYWN0aW9uIHZlcmJzIHVzaW5nIHRoZSBjYXBhYmlsaXR5IGluZGV4LicsXG4gICdDb25maWd1cmF0aW9uICYgRGlhZ25vc3RpY3MnOiAnTWFuYWdlIHNlcnZlciBjb25maWd1cmF0aW9uLCBjb252ZXJ0IGZvcm1hdHMsIHF1ZXJ5IGxvZ3MsIG1ldHJpY3MsIGFuZCBzeXN0ZW0gaW5mby4nLFxuICAnTWFuYWdlbWVudCBDb25zb2xlJzogJ09wZW4gdGhlIHBvcnRmb2xpbyB3ZWIgVUkgd2l0aCBvcHRpb25hbCBkZWVwLWxpbmtpbmcuIFN1cHBvcnRzIFVSTCBwYXJhbWV0ZXJzIHRvIHByZS1wb3B1bGF0ZSBzZWFyY2gsIGZpbHRlciBieSB0eXBlIG9yIGxvZyBsZXZlbCwgYW5kIG5hdmlnYXRlIGRpcmVjdGx5IHRvIHNwZWNpZmljIGVsZW1lbnRzIG9yIHRhYnMuJyxcbiAgJ1N5c3RlbSBJbnRyb3NwZWN0aW9uJzogJ0Rpc2NvdmVyIGF2YWlsYWJsZSBvcGVyYXRpb25zLCB0eXBlcywgY2FwYWJpbGl0aWVzLCBhbmQgZWxlbWVudCBmb3JtYXQgc3BlY2lmaWNhdGlvbnMuJyxcbn07XG5cbi8qKiBSZWdpc3RlcmVkIGNhcGFiaWxpdHkgc291cmNlcy4gU2VydmVyT3BlcmF0aW9uc1NvdXJjZSBpcyBhbHdheXMgcHJlc2VudC4gKi9cbmNvbnN0IGNhcGFiaWxpdHlTb3VyY2VzOiBDYXBhYmlsaXR5U291cmNlW10gPSBbbmV3IFNlcnZlck9wZXJhdGlvbnNTb3VyY2UoKV07XG4iXX0=