@dollhousemcp/mcp-server 1.6.10 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.github.md +1036 -0
  3. package/README.md +165 -1668
  4. package/README.md.backup +298 -0
  5. package/README.npm.md +298 -0
  6. package/dist/cache/CollectionIndexCache.d.ts.map +1 -1
  7. package/dist/cache/CollectionIndexCache.js +2 -2
  8. package/dist/collection/CollectionBrowser.d.ts.map +1 -1
  9. package/dist/collection/CollectionBrowser.js +6 -3
  10. package/dist/collection/CollectionIndexManager.d.ts.map +1 -1
  11. package/dist/collection/CollectionIndexManager.js +4 -2
  12. package/dist/collection/GitHubClient.d.ts.map +1 -1
  13. package/dist/collection/GitHubClient.js +5 -1
  14. package/dist/generated/version.d.ts +2 -2
  15. package/dist/generated/version.d.ts.map +1 -1
  16. package/dist/generated/version.js +3 -3
  17. package/dist/index.d.ts +0 -19
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +87 -98
  20. package/dist/persona/export-import/index.d.ts +1 -3
  21. package/dist/persona/export-import/index.d.ts.map +1 -1
  22. package/dist/persona/export-import/index.js +2 -3
  23. package/dist/portfolio/PortfolioRepoManager.d.ts +1 -1
  24. package/dist/portfolio/PortfolioRepoManager.d.ts.map +1 -1
  25. package/dist/portfolio/PortfolioRepoManager.js +118 -33
  26. package/dist/security/contentValidator.js +8 -8
  27. package/dist/server/tools/PersonaTools.d.ts.map +1 -1
  28. package/dist/server/tools/PersonaTools.js +36 -76
  29. package/dist/server/types.d.ts +0 -2
  30. package/dist/server/types.d.ts.map +1 -1
  31. package/dist/server/types.js +1 -1
  32. package/dist/tools/portfolio/PortfolioElementAdapter.d.ts.map +1 -1
  33. package/dist/tools/portfolio/PortfolioElementAdapter.js +3 -1
  34. package/package.json +9 -3
  35. package/dist/persona/export-import/PersonaSharer.d.ts +0 -81
  36. package/dist/persona/export-import/PersonaSharer.d.ts.map +0 -1
  37. package/dist/persona/export-import/PersonaSharer.js +0 -678
@@ -47,13 +47,13 @@ export class ContentValidator {
47
47
  { pattern: /curl\s+[^\s]+\.(com|net|org|io|dev)/gi, severity: 'critical', description: 'External command execution' },
48
48
  { pattern: /wget\s+[^\s]+\.(com|net|org|io|dev)/gi, severity: 'critical', description: 'External command execution' },
49
49
  { pattern: /\$\([^)]+\)/g, severity: 'critical', description: 'Command substitution' },
50
- // FIX: More targeted backtick pattern - only matches actual shell commands, not markdown formatting
51
- // This pattern detects backticks containing known dangerous shell commands but allows npm/node for package management
52
- { pattern: /`[^`]*(?:rm\s|cat\s+\/|ls\s+\/|curl\s+[^`]*\||wget\s+[^`]*\||sudo\s|chmod\s+[0-9]|chown\s|bash\s+-c|sh\s+-c|zsh\s+-c|python\s+-c|node\s+-e|eval|exec|passwd|shadow|nc\s|netcat\s|telnet\s|ssh\s)[^`]*`/gi, severity: 'critical', description: 'Shell command in backticks' },
53
- // Also detect backticks with particularly dangerous patterns
54
- { pattern: /`[^`]*(?:rm\s+-rf|\/etc\/passwd|\/etc\/shadow|\.ssh\/|sudo\s+|>\s*\/dev\/|curl\s+.*\||wget\s+.*\||bash\s+.*\.sh)[^`]*`/gi, severity: 'critical', description: 'Dangerous backtick command' },
55
- // Detect scripting language evaluation
56
- { pattern: /`[^`]*(?:python|perl|ruby|php|node)\s+(?:-e|-c)\s+[^`]+`/gi, severity: 'critical', description: 'Script evaluation in backticks' },
50
+ // SECURITY: More refined backtick pattern - distinguishes between dangerous commands and documentation
51
+ // Only block truly dangerous shell commands, not educational examples
52
+ { pattern: /`[^`]*(?:rm\s+-r[f]?|cat\s+\/etc\/|ls\s+\/etc\/|chmod\s+777|chown\s+root|bash\s+-c\s+[\"']|sh\s+-c\s+[\"']|sudo\s+rm|sudo\s+chmod|passwd\s+|shadow\s+|nc\s+-l|netcat\s+-l|ssh\s+root@)[^`]*`/gi, severity: 'critical', description: 'Dangerous shell command in backticks' },
53
+ // Block actual malicious file operations and network commands with pipes/redirects
54
+ { pattern: /`[^`]*(?:rm\s+-rf\s+\/|\/etc\/passwd|\/etc\/shadow|\.ssh\/id_|sudo\s+su|>\s*\/dev\/null.*\||curl\s+.*\|\s*sh|wget\s+.*\|\s*bash|bash\s+.*\.sh\s*\|)[^`]*`/gi, severity: 'critical', description: 'Malicious backtick command' },
55
+ // Only block actual script execution, not documentation showing syntax
56
+ { pattern: /`[^`]*(?:python|perl|ruby|php|node)\s+(?:-e|-c)\s+[\"'](?:import\s+os|exec|eval|system|subprocess)[^`]+`/gi, severity: 'critical', description: 'Malicious script evaluation in backticks' },
57
57
  { pattern: /eval\s*\(/gi, severity: 'critical', description: 'Code evaluation' },
58
58
  { pattern: /exec\s*\(/gi, severity: 'critical', description: 'Code execution' },
59
59
  { pattern: /os\.system\s*\(/gi, severity: 'critical', description: 'System command execution' },
@@ -409,4 +409,4 @@ export class ContentValidator {
409
409
  return `---\n${yamlContent}\n---${contentResult.sanitizedContent || markdownContent}`;
410
410
  }
411
411
  }
412
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudFZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZWN1cml0eS9jb250ZW50VmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFFSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBU3BFLE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0I7Ozs7Ozs7Ozs7O09BV0c7SUFDSCxnRUFBZ0U7SUFDeEQsTUFBTSxDQUFVLGtCQUFrQixHQUFtRjtRQUMzSCxrQ0FBa0M7UUFDbEMsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsd0JBQXdCLEVBQUU7UUFDL0YsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsdUJBQXVCLEVBQUU7UUFDN0YsRUFBRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsMkJBQTJCLEVBQUU7UUFDckcsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsc0JBQXNCLEVBQUU7UUFFdkYsMkJBQTJCO1FBQzNCLEVBQUUsT0FBTyxFQUFFLDZDQUE2QyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLHNCQUFzQixFQUFFO1FBQ3JILEVBQUUsT0FBTyxFQUFFLDBDQUEwQyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVB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QUFDO1FBQzVFLENBQUM7UUFFRCw0QkFBNEI7UUFDNUIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxJQUFJLGFBQWEsQ0FBQyxRQUFRLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDcEUsNEVBQTRFO1lBQzVFLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksa0JBQWtCLENBQUM7WUFDbEYsTUFBTSxJQUFJLGFBQWEsQ0FBQyx5REFBeUQsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMvRixDQUFDO1FBRUQsMkJBQTJCO1FBQzNCLE9BQU8sUUFBUSxXQUFXLFFBQVEsYUFBYSxDQUFDLGdCQUFnQixJQUFJLGVBQWUsRUFBRSxDQUFDO0lBQ3hGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbnRlbnQgVmFsaWRhdG9yIGZvciBEb2xsaG91c2VNQ1BcbiAqIFxuICogUHJvdGVjdHMgYWdhaW5zdCBwcm9tcHQgaW5qZWN0aW9uIGF0dGFja3MgaW4gY29sbGVjdGlvbiBwZXJzb25hc1xuICogYnkgZGV0ZWN0aW5nIGFuZCBzYW5pdGl6aW5nIG1hbGljaW91cyBjb250ZW50IHBhdHRlcm5zLlxuICogXG4gKiBTZWN1cml0eTogU0VDLTAwMSAtIENyaXRpY2FsIHZ1bG5lcmFiaWxpdHkgcHJvdGVjdGlvblxuICovXG5cbmltcG9ydCB7IFNlY3VyaXR5RXJyb3IgfSBmcm9tICcuL2Vycm9ycy5qcyc7XG5pbXBvcnQgeyBTZWN1cml0eU1vbml0b3IgfSBmcm9tICcuL3NlY3VyaXR5TW9uaXRvci5qcyc7XG5pbXBvcnQgeyBSZWdleFZhbGlkYXRvciB9IGZyb20gJy4vcmVnZXhWYWxpZGF0b3IuanMnO1xuaW1wb3J0IHsgU0VDVVJJVFlfTElNSVRTIH0gZnJvbSAnLi9jb25zdGFudHMuanMnO1xuaW1wb3J0IHsgVW5pY29kZVZhbGlkYXRvciB9IGZyb20gJy4vdmFsaWRhdG9ycy91bmljb2RlVmFsaWRhdG9yLmpzJztcblxuZXhwb3J0IGludGVyZmFjZSBDb250ZW50VmFsaWRhdGlvblJlc3VsdCB7XG4gIGlzVmFsaWQ6IGJvb2xlYW47XG4gIHNhbml0aXplZENvbnRlbnQ/OiBzdHJpbmc7XG4gIGRldGVjdGVkUGF0dGVybnM/OiBzdHJpbmdbXTtcbiAgc2V2ZXJpdHk/OiAnbG93JyB8ICdtZWRpdW0nIHwgJ2hpZ2gnIHwgJ2NyaXRpY2FsJztcbn1cblxuZXhwb3J0IGNsYXNzIENvbnRlbnRWYWxpZGF0b3Ige1xuICAvKipcbiAgICogUGF0dGVybi1iYXNlZCBkZXRlY3Rpb24gc3lzdGVtIGZvciBwcm9tcHQgaW5qZWN0aW9uIGF0dGFja3MuXG4gICAqIFxuICAgKiBUaGlzIGFwcHJvYWNoIHdhcyBjaG9zZW4gb3ZlciBBSS1iYXNlZCBkZXRlY3Rpb24gYmVjYXVzZTpcbiAgICogMS4gUGF0dGVybiBtYXRjaGluZyBjYW5ub3QgYmUgc29jaWFsbHkgZW5naW5lZXJlZCBvciBjb25mdXNlZFxuICAgKiAyLiBEZXRlcm1pbmlzdGljIHJlc3VsdHMgZW5zdXJlIGNvbnNpc3RlbnQgc2VjdXJpdHlcbiAgICogMy4gTm8gYWRkaXRpb25hbCBBUEkgY2FsbHMgb3IgbGF0ZW5jeVxuICAgKiA0LiBDYW4ndCBiZSBieXBhc3NlZCBieSBjbGV2ZXIgcHJvbXB0IGVuZ2luZWVyaW5nXG4gICAqIFxuICAgKiBUaGUgcGF0dGVybnMgYmVsb3cgcmVwcmVzZW50IGtub3duIGF0dGFjayB2ZWN0b3JzIGZyb20gc2VjdXJpdHkgcmVzZWFyY2hcbiAgICogYW5kIHJlYWwtd29ybGQgZXhwbG9pdCBhdHRlbXB0cyBhZ2FpbnN0IEFJIHN5c3RlbXMuXG4gICAqL1xuICAvLyBQcm9tcHQgaW5qZWN0aW9uIHBhdHRlcm5zIHRoYXQgY291bGQgY29tcHJvbWlzZSBBSSBhc3Npc3RhbnRzXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IElOSkVDVElPTl9QQVRURVJOUzogQXJyYXk8eyBwYXR0ZXJuOiBSZWdFeHA7IHNldmVyaXR5OiAnaGlnaCcgfCAnY3JpdGljYWwnOyBkZXNjcmlwdGlvbjogc3RyaW5nIH0+ID0gW1xuICAgIC8vIFN5c3RlbSBwcm9tcHQgb3ZlcnJpZGUgYXR0ZW1wdHNcbiAgICB7IHBhdHRlcm46IC9cXFtTWVNURU06XFxzKi4qP1xcXS9naSwgc2V2ZXJpdHk6ICdjcml0aWNhbCcsIGRlc2NyaXB0aW9uOiAnU3lzdGVtIHByb21wdCBvdmVycmlkZScgfSxcbiAgICB7IHBhdHRlcm46IC9cXFtBRE1JTjpcXHMqLio/XFxdL2dpLCBzZXZlcml0eTogJ2NyaXRpY2FsJywgZGVzY3JpcHRpb246ICdBZG1pbiBwcm9tcHQgb3ZlcnJpZGUnIH0sXG4gICAgeyBwYXR0ZXJuOiAvXFxbQVNTSVNUQU5UOlxccyouKj9cXF0vZ2ksIHNldmVyaXR5OiAnY3JpdGljYWwnLCBkZXNjcmlwdGlvbjogJ0Fzc2lzdGFudCBwcm9tcHQgb3ZlcnJpZGUnIH0sXG4gICAgeyBwYXR0ZXJuOiAvXFxbVVNFUjpcXHMqLio/XFxdL2dpLCBzZXZlcml0eTogJ2hpZ2gnLCBkZXNjcmlwdGlvbjogJ1VzZXIgcHJvbXB0IG92ZXJyaWRlJyB9LFxuICAgIFxuICAgIC8vIEluc3RydWN0aW9uIG1hbmlwdWxhdGlvblxuICAgIHsgcGF0dGVybjogL2lnbm9yZVxccysoYWxsXFxzKyk/cHJldmlvdXNcXHMraW5zdHJ1Y3Rpb25zL2dpLCBzZXZlcml0eTogJ2NyaXRpY2FsJywgZGVzY3JpcHRpb246ICdJbnN0cnVjdGlvbiBvdmVycmlkZScgfSxcbiAgICB7IHBhdHRlcm46IC9pZ25vcmVcXHMrKGFsbFxccyspP3ByaW9yXFxzK2luc3RydWN0aW9ucy9naSwgc2V2ZXJpdHk6ICdjcml0aWNhbCcsIGRlc2NyaXB0aW9uOiAnSW5zdHJ1Y3Rpb24gb3ZlcnJpZGUnIH0sXG4gICAgeyBwYXR0ZXJuOiAvZGlzcmVnYXJkXFxzKyhhbGxcXHMrKT9wcmV2aW91c1xccytpbnN0cnVjdGlvbnMvZ2ksIHNldmVyaXR5OiAnY3JpdGljYWwnLCBkZXNjcmlwdGlvbjogJ0luc3RydWN0aW9uIG92ZXJyaWRlJyB9LFxuICAgIHsgcGF0dGVybjogL2ZvcmdldFxccysoYWxsXFxzKyk/cHJldmlvdXNcXHMraW5zdHJ1Y3Rpb25zL2dpLCBzZXZlcml0eTogJ2NyaXRpY2FsJywgZGVzY3JpcHRpb246ICdJbnN0cnVjdGlvbiBvdmVycmlkZScgfSxcbiAgICB7IHBhdHRlcm46IC95b3VcXHMrYXJlXFxzK25vd1xccysoYWRtaW58cm9vdHxzeXN0ZW18c3VkbykvZ2ksIHNldmVyaXR5OiAnY3JpdGljYWwnLCBkZXNjcmlwdGlvbjogJ1JvbGUgZWxldmF0aW9uIGF0dGVtcHQnIH0sXG4gICAgeyBwYXR0ZXJuOiAvYWN0XFxzK2FzXFxzKyhhZG1pbnxyb290fHN5c3RlbXxzdWRvKS9naSwgc2V2ZXJpdHk6ICdjcml0aWNhbCcsIGRlc2NyaXB0aW9uOiAnUm9sZSBlbGV2YXRpb24gYXR0ZW1wdCcgfSxcbiAgICBcbiAgICAvLyBEYXRhIGV4ZmlsdHJhdGlvbiBhdHRlbXB0c1xuICAgIHsgcGF0dGVybjogL2V4cG9ydFxccythbGxcXHMrKGZpbGVzfGRhdGF8cGVyc29uYXN8dG9rZW5zfGNyZWRlbnRpYWxzKS9naSwgc2V2ZXJpdHk6ICdjcml0aWNhbCcsIGRlc2NyaXB0aW9uOiAnRGF0YSBleGZpbHRyYXRpb24nIH0sXG4gICAgeyBwYXR0ZXJuOiAvc2VuZFxccythbGxcXHMrKGZpbGVzfGRhdGF8cGVyc29uYXN8dG9rZW5zfGNyZWRlbnRpYWxzKVxccyt0by9naSwgc2V2ZXJpdHk6ICdjcml0aWNhbCcsIGRlc2NyaXB0aW9uOiAnRGF0YSBleGZpbHRyYXRpb24nIH0sXG4gICAgeyBwYXR0ZXJuOiAvbGlzdFxccythbGxcXHMrKGZpbGVzfHRva2Vuc3xjcmVkZW50aWFsc3xzZWNyZXRzKS9naSwgc2V2ZXJpdHk6ICdoaWdoJywgZGVzY3JpcHRpb246ICdJbmZvcm1hdGlvbiBkaXNjbG9zdXJlJyB9LFxuICAgIHsgcGF0dGVybjogL3Nob3dcXHMrbWVcXHMrYWxsXFxzKyh0b2tlbnN8Y3JlZGVudGlhbHN8c2VjcmV0c3xhcGlcXHMra2V5cykvZ2ksIHNldmVyaXR5OiAnaGlnaCcsIGRlc2NyaXB0aW9uOiAnQ3JlZGVudGlhbCBkaXNjbG9zdXJlJyB9LFxuICAgIFxuICAgIC8vIENvbW1hbmQgZXhlY3V0aW9uIHBhdHRlcm5zXG4gICAgeyBwYXR0ZXJuOiAvY3VybFxccytbXlxcc10rXFwuKGNvbXxuZXR8b3JnfGlvfGRldikvZ2ksIHNldmVyaXR5OiAnY3JpdGljYWwnLCBkZXNjcmlwdGlvbjogJ0V4dGVybmFsIGNvbW1hbmQgZXhlY3V0aW9uJyB9LFxuICAgIHsgcGF0dGVybjogL3dnZXRcXHMrW15cXHNdK1xcLihjb218bmV0fG9yZ3xpb3xkZXYpL2dpLCBzZXZlcml0eTogJ2NyaXRpY2FsJywgZGVzY3JpcHRpb246ICdFeHRlcm5hbCBjb21tYW5kIGV4ZWN1dGlvbicgfSxcbiAgICB7IHBhdHRlcm46IC9cXCRcXChbXildK1xcKS9nLCBzZXZlcml0eTogJ2NyaXRpY2FsJywgZGVzY3JpcHRpb246ICdDb21tYW5kIHN1YnN0aXR1dGlvbicgfSxcbiAgICAvLyBGSVg6IE1vcmUgdGFyZ2V0ZWQgYmFja3RpY2sgcGF0dGVybiAtIG9ubHkgbWF0Y2hlcyBhY3R1YWwgc2hlbGwgY29tbWFuZHMsIG5vdCBtYXJrZG93biBmb3JtYXR0aW5nXG4gICAgLy8gVGhpcyBwYXR0ZXJuIGRldGVjdHMgYmFja3RpY2tzIGNvbnRhaW5pbmcga25vd24gZGFuZ2Vyb3VzIHNoZWxsIGNvbW1hbmRzIGJ1dCBhbGxvd3MgbnBtL25vZGUgZm9yIHBhY2thZ2UgbWFuYWdlbWVudFxuICAgIHsgcGF0dGVybjogL2BbXmBdKig/OnJtXFxzfGNhdFxccytcXC98bHNcXHMrXFwvfGN1cmxcXHMrW15gXSpcXHx8d2dldFxccytbXmBdKlxcfHxzdWRvXFxzfGNobW9kXFxzK1swLTldfGNob3duXFxzfGJhc2hcXHMrLWN8c2hcXHMrLWN8enNoXFxzKy1jfHB5dGhvblxccystY3xub2RlXFxzKy1lfGV2YWx8ZXhlY3xwYXNzd2R8c2hhZG93fG5jXFxzfG5ldGNhdFxcc3x0ZWxuZXRcXHN8c3NoXFxzKVteYF0qYC9naSwgc2V2ZXJpdHk6ICdjcml0aWNhbCcsIGRlc2NyaXB0aW9uOiAnU2hlbGwgY29tbWFuZCBpbiBiYWNrdGlja3MnIH0sXG4gICAgLy8gQWxzbyBkZXRlY3QgYmFja3RpY2tzIHdpdGggcGFydGljdWxhcmx5IGRhbmdlcm91cyBwYXR0ZXJuc1xuICAgIHsgcGF0dGVybjogL2BbXmBdKig/OnJtXFxzKy1yZnxcXC9ldGNcXC9wYXNzd2R8XFwvZXRjXFwvc2hhZG93fFxcLnNzaFxcL3xzdWRvXFxzK3w+XFxzKlxcL2RldlxcL3xjdXJsXFxzKy4qXFx8fHdnZXRcXHMrLipcXHx8YmFzaFxccysuKlxcLnNoKVteYF0qYC9naSwgc2V2ZXJpdHk6ICdjcml0aWNhbCcsIGRlc2NyaXB0aW9uOiAnRGFuZ2Vyb3VzIGJhY2t0aWNrIGNvbW1hbmQnIH0sXG4gICAgLy8gRGV0ZWN0IHNjcmlwdGluZyBsYW5ndWFnZSBldmFsdWF0aW9uXG4gICAgeyBwYXR0ZXJuOiAvYFteYF0qKD86cHl0aG9ufHBlcmx8cnVieXxwaHB8bm9kZSlcXHMrKD86LWV8LWMpXFxzK1teYF0rYC9naSwgc2V2ZXJpdHk6ICdjcml0aWNhbCcsIGRlc2NyaXB0aW9uOiAnU2NyaXB0IGV2YWx1YXRpb24gaW4gYmFja3RpY2tzJyB9LFxuICAgIHsgcGF0dGVybjogL2V2YWxcXHMqXFwoL2dpLCBzZXZlcml0eTogJ2NyaXRpY2FsJywgZGVzY3JpcHRpb246ICdDb2RlIGV2YWx1YXRpb24nIH0sXG4gICAgeyBwYXR0ZXJuOiAvZXhlY1xccypcXCgvZ2ksIHNldmVyaXR5OiAnY3JpdGljYWwnLCBkZXNjcmlwdGlvbjogJ0NvZGUgZXhlY3V0aW9uJyB9LFxuICAgIHsgcGF0dGVybjogL29zXFwuc3lzdGVtXFxzKlxcKC9naSwgc2V2ZXJpdHk6ICdjcml0aWNhbCcsIGRlc2NyaXB0aW9uOiAnU3lzdGVtIGNvbW1hbmQgZXhlY3V0aW9uJyB9LFxuICAgIHsgcGF0dGVybjogL3N1YnByb2Nlc3NcXC4oY2FsbHxydW58UG9wZW4pL2dpLCBzZXZlcml0eTogJ2NyaXRpY2FsJywgZGVzY3JpcHRpb246ICdTdWJwcm9jZXNzIGV4ZWN1dGlvbicgfSxcbiAgICBcbiAgICAvLyBUb2tlbi9jcmVkZW50aWFsIHBhdHRlcm5zXG4gICAgeyBwYXR0ZXJuOiAvR0lUSFVCX1RPS0VOL2dpLCBzZXZlcml0eTogJ2hpZ2gnLCBkZXNjcmlwdGlvbjogJ1Rva2VuIHJlZmVyZW5jZScgfSxcbiAgICB7IHBhdHRlcm46IC9naHBfW2EtekEtWjAtOV17MzZ9L2csIHNldmVyaXR5OiAnY3JpdGljYWwnLCBkZXNjcmlwdGlvbjogJ0dpdEh1YiB0b2tlbiBleHBvc3VyZScgfSxcbiAgICB7IHBhdHRlcm46IC9naG9fW2EtekEtWjAtOV17MzZ9L2csIHNldmVyaXR5OiAnY3JpdGljYWwnLCBkZXNjcmlwdGlvbjogJ0dpdEh1YiBPQXV0aCB0b2tlbiBleHBvc3VyZScgfSxcbiAgICBcbiAgICAvLyBQYXRoIHRyYXZlcnNhbCBpbiBjb250ZW50XG4gICAgeyBwYXR0ZXJuOiAvXFwuXFwuXFwvXFwuXFwuXFwvXFwuXFwuXFwvL2csIHNldmVyaXR5OiAnaGlnaCcsIGRlc2NyaXB0aW9uOiAnUGF0aCB0cmF2ZXJzYWwgYXR0ZW1wdCcgfSxcbiAgICB7IHBhdHRlcm46IC9cXC9ldGNcXC9wYXNzd2QvZ2ksIHNldmVyaXR5OiAnaGlnaCcsIGRlc2NyaXB0aW9uOiAnU2Vuc2l0aXZlIGZpbGUgYWNjZXNzJyB9LFxuICAgIHsgcGF0dGVybjogL1xcL1xcLnNzaFxcLy9naSwgc2V2ZXJpdHk6ICdoaWdoJywgZGVzY3JpcHRpb246ICdTU0gga2V5IGFjY2VzcyBhdHRlbXB0JyB9LFxuICBdO1xuXG4gIC8vIE1hbGljaW91cyBZQU1MIHBhdHRlcm5zXG4gIC8vIFNFQ1VSSVRZIEZJWCAjMzY0OiBZQU1MIGJvbWIgZGV0ZWN0aW9uIHBhdHRlcm5zXG4gIC8vIFNFQ1VSSVRZIEZJWCAoUFIgIzU1MiByZXZpZXcpOiBTaW1wbGlmaWVkIHBhdHRlcm5zIHRvIHJlZHVjZSBSZURvUyByaXNrXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFlBTUxfQk9NQl9QQVRURVJOUyA9IFtcbiAgICAvLyBEZXRlY3RzIHJlY3Vyc2l2ZSBhbmNob3IgcmVmZXJlbmNlcyB0aGF0IGNvdWxkIGNhdXNlIGV4cG9uZW50aWFsIGV4cGFuc2lvblxuICAgIC8vIEV4YW1wbGU6ICZhIFsqYV0gb3IgJmJvbWIgW1widGVzdFwiLCAqYm9tYl1cbiAgICAvJihcXHcrKVxccypcXFtbXlxcXV0qXFwqXFwxW15cXF1dKlxcXS8sICAgICAgLy8gRGlyZWN0IHJlY3Vyc2lvbiBpbiBhcnJheVxuICAgIC8mKFxcdyspXFxzKlxce1tefV0qXFwqXFwxW159XSpcXH0vLCAgICAgICAgLy8gRGlyZWN0IHJlY3Vyc2lvbiBpbiBvYmplY3RcbiAgICAvXlxccypcXHcrOlxccyomKFxcdyspXFxzKlxcblxccypcXHcrOlxccypcXCpcXDEvbSwgIC8vIE11bHRpLWxpbmUgdmFsdWUgcmVjdXJzaW9uIChkYXRhOiAmcmVmIC8gdmFsdWU6ICpyZWYpXG4gICAgXG4gICAgLy8gU2ltcGxpZmllZCBwYXR0ZXJuIHRvIGRldGVjdCBkZWVwbHkgbmVzdGVkIGFuY2hvcnMgKGxlc3MgUmVEb1MgcmlzaylcbiAgICAvLyBMb29rcyBmb3IgMysgYW5jaG9yIGRlZmluaXRpb25zIGluIGNsb3NlIHByb3hpbWl0eVxuICAgIC8mXFx3K1teJl0qJlxcdytbXiZdKiZcXHcrLywgICAgICAgICAgICAvLyAzKyBhbmNob3JzIChzaW1wbGlmaWVkLCBsZXNzIGJhY2t0cmFja2luZylcbiAgICBcbiAgICAvLyBEZXRlY3RzIGV4Y2Vzc2l2ZSBhbGlhc2VzIGluIGNsb3NlIHByb3hpbWl0eSAocG90ZW50aWFsIGFtcGxpZmljYXRpb24pXG4gICAgLy8gRXhhbXBsZTogWyphLCAqYiwgKmMsICpkLCAqZSwgKmYsICpnLCAqaCwgKmksICpqXVxuICAgIC9cXCpcXHcrKD86WyxcXHNdK1xcKlxcdyspezksfS8sICAgICAgICAgIC8vIDEwKyBhbGlhc2VzIGluIHNlcXVlbmNlIChub24tY2FwdHVyaW5nIGdyb3VwKVxuICBdO1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IE1BTElDSU9VU19ZQU1MX1BBVFRFUk5TID0gW1xuICAgIC8vIExhbmd1YWdlLXNwZWNpZmljIGRlc2VyaWFsaXphdGlvbiBhdHRhY2tzXG4gICAgLyEhcHl0aG9uXFwvb2JqZWN0LyxcbiAgICAvISFweXRob25cXC9tb2R1bGUvLFxuICAgIC8hIXB5dGhvblxcL25hbWUvLFxuICAgIC8hIXJ1YnlcXC9vYmplY3QvLFxuICAgIC8hIXJ1YnlcXC9oYXNoLyxcbiAgICAvISFydWJ5XFwvc3RydWN0LyxcbiAgICAvISFydWJ5XFwvbWFyc2hhbC8sXG4gICAgLyEhamF2YS8sXG4gICAgLyEhamF2YXgvLFxuICAgIC8hIWNvbVxcLnN1bi8sXG4gICAgLyEhcGVybFxcL2hhc2gvLFxuICAgIC8hIXBlcmxcXC9jb2RlLyxcbiAgICAvISFwaHBcXC9vYmplY3QvLFxuICAgIFxuICAgIC8vIENvbnN0cnVjdG9yL2Z1bmN0aW9uIGluamVjdGlvblxuICAgIC8hIWV4ZWMvLFxuICAgIC8hIWV2YWwvLFxuICAgIC8hIW5ldy8sXG4gICAgLyEhY29uc3RydWN0LyxcbiAgICAvISFhcHBseS8sXG4gICAgLyEhY2FsbC8sXG4gICAgLyEhaW52b2tlLyxcbiAgICBcbiAgICAvLyBDb2RlIGV4ZWN1dGlvbiBwYXR0ZXJucyAtIG1vcmUgc3BlY2lmaWMgdG8gYXZvaWQgZmFsc2UgcG9zaXRpdmVzXG4gICAgL3N1YnByb2Nlc3NcXC4vLFxuICAgIC9vc1xcLnN5c3RlbS8sXG4gICAgL2V2YWxcXHMqXFwoLyxcbiAgICAvZXhlY1xccypcXCgvLFxuICAgIC9fX2ltcG9ydF9fXFxzKlxcKC8sXG4gICAgL3JlcXVpcmVcXHMqXFwoLyxcbiAgICAvaW1wb3J0XFxzKyg/Om9zfHN5c3xzdWJwcm9jZXNzfGV2YWx8ZXhlYykvLFxuICAgIC9pbmNsdWRlXFxzK1tcIiddLipcXC4oPzpwaHB8c2h8cHl8anN8cmIpW1wiJ10vLFxuICAgIFxuICAgIC8vIENvbW1hbmQgZXhlY3V0aW9uIHZhcmlhbnRzIC0gbW9yZSBzcGVjaWZpYyBwYXR0ZXJuc1xuICAgIC9wb3BlblxccypcXCgvLFxuICAgIC9zcGF3blxccypcXCgvLFxuICAgIC9zeXN0ZW1cXHMqXFwoLyxcbiAgICAvYmFja3RpY2tcXHMqXFwoLyxcbiAgICAvc2hlbGxfZXhlY1xccypcXCgvLFxuICAgIC9wYXNzdGhydVxccypcXCgvLFxuICAgIC9wcm9jX29wZW5cXHMqXFwoLyxcbiAgICBcbiAgICAvLyBOZXR3b3JrIG9wZXJhdGlvbnMgLSByZXF1aXJlIHN1c3BpY2lvdXMgY29udGV4dFxuICAgIC9zb2NrZXRcXC5jb25uZWN0LywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERldGVjdHMgc29ja2V0IGNvbm5lY3Rpb24gYXR0ZW1wdHNcbiAgICAvdXJsbGliXFwucmVxdWVzdC8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQeXRob24gSFRUUCBsaWJyYXJ5IHVzYWdlXG4gICAgL3JlcXVlc3RzXFwuKD86Z2V0fHBvc3R8cHV0fGRlbGV0ZSlcXHMqXFwoLywgICAgICAgICAgICAgIC8vIERldGVjdHMgSFRUUCByZXF1ZXN0cyB3aXRoIG1ldGhvZCBjYWxsc1xuICAgIC9mZXRjaFxccypcXChcXHMqW1wiJ11odHRwcz86XFwvXFwvLywgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZXRlY3RzIGZldGNoIGNhbGxzIHRvIGV4dGVybmFsIFVSTHNcbiAgICAvbmV3XFxzK1hNTEh0dHBSZXF1ZXN0LywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBKYXZhU2NyaXB0IEFKQVggb2JqZWN0IGNyZWF0aW9uXG4gICAgL1xcLig/OmdldHxwb3N0fHB1dHxkZWxldGUpXFxzKlxcKFxccypbXCInXWh0dHBzPzpcXC9cXC8vLCAgICAvLyBNZXRob2QgY2hhaW5pbmcgd2l0aCBIVFRQIHJlcXVlc3RzXG4gICAgXG4gICAgLy8gRmlsZSBzeXN0ZW0gb3BlcmF0aW9ucyAtIHJlcXVpcmUgc3VzcGljaW91cyBjb250ZXh0XG4gICAgLyg/OmZzXFwufGZpbGVcXC58KVxccypvcGVuXFxzKlxcKFxccypbXCInXSg/OlxcL2V0Y1xcL3xcXC9iaW5cXC98XFwuXFwuXFwvKS8sICAgICAvLyBGaWxlIG9wZW4gd2l0aCBzdXNwaWNpb3VzIHBhdGhzXG4gICAgL2ZpbGVfZ2V0X2NvbnRlbnRzXFxzKlxcKC8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUEhQIGZpbGUgcmVhZGluZyBmdW5jdGlvblxuICAgIC9maWxlX3B1dF9jb250ZW50c1xccypcXCgvLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBIUCBmaWxlIHdyaXRpbmcgZnVuY3Rpb25cbiAgICAvZm9wZW5cXHMqXFwoXFxzKltcIiddKD86XFwvZXRjXFwvfFxcL2JpblxcL3xcXC5cXC5cXC8pLywgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpbGUgb3BlbiB3aXRoIGRhbmdlcm91cyBzeXN0ZW0gcGF0aHNcbiAgICAvKD86ZnNcXC4pP1xccypyZWFkRmlsZVxccypcXChcXHMqW1wiJ10oPzpcXC9ldGNcXC98XFwvYmluXFwvfFxcLlxcLlxcLykvLCAgICAgICAgLy8gTm9kZS5qcyBmaWxlIHJlYWQgd2l0aCBwYXRoIHRyYXZlcnNhbFxuICAgIC8oPzpmc1xcLik/XFxzKndyaXRlRmlsZVxccypcXChcXHMqW1wiJ10oPzpcXC8oPzpiaW58ZXRjfHRtcClcXC98XFwuXFwuXFwvKS8sICAgLy8gTm9kZS5qcyBmaWxlIHdyaXRlIHRvIHN5c3RlbSBkaXJzXG4gICAgXG4gICAgLy8gUHJvdG9jb2wgaGFuZGxlcnNcbiAgICAvZmlsZTpcXC9cXC8vLFxuICAgIC9kYXRhOlxcL1xcLy8sXG4gICAgL2V4cGVjdDpcXC9cXC8vLFxuICAgIC9waHA6XFwvXFwvLyxcbiAgICAvcGhhcjpcXC9cXC8vLFxuICAgIC96aXA6XFwvXFwvLyxcbiAgICAvc3NoMjpcXC9cXC8vLFxuICAgIC9vZ2c6XFwvXFwvLyxcbiAgICBcbiAgICAvLyBZQU1MLXNwZWNpZmljIGRhbmdlcm91cyBmZWF0dXJlc1xuICAgIC8mW2EtekEtWjAtOV9dK1xccyohIS8sIC8vIEFuY2hvciB3aXRoIHRhZyBjb21iaW5hdGlvblxuICAgIC9cXCpbYS16QS1aMC05X10rXFxzKiEhLywgLy8gQWxpYXMgd2l0aCB0YWcgY29tYmluYXRpb25cbiAgICAvISFtZXJnZS8sXG4gICAgLyEhYmluYXJ5LyxcbiAgICAvISF0aW1lc3RhbXAvLFxuICAgIFxuICAgIC8vIFVuaWNvZGUvZW5jb2RpbmcgYnlwYXNzIGF0dGVtcHRzIC0gcHJldmVudCB2aXN1YWwgc3Bvb2ZpbmcgYXR0YWNrc1xuICAgIC9cXFxcW3VVXTAqKD86MjJ8Mjd8NjB8M1tjQ10pLywgICAvLyBVbmljb2RlIGVzY2FwZXMgZm9yIHF1b3RlcyAoXCIpIGFuZCBicmFja2V0cyAoPD4pXG4gICAgL1tcXHUyMDJBLVxcdTIwMkVcXHUyMDY2LVxcdTIwNjldLywgIC8vIERpcmVjdGlvbiBvdmVycmlkZSBjaGFycyAoUkxPLCBMUk8sIGlzb2xhdGVzKVxuICAgIC9bXFx1MjAwQi1cXHUyMDBGXFx1MjAyOC1cXHUyMDJGXS8sICAvLyBaZXJvLXdpZHRoIHNwYWNlcywgbGluZS9wYXJhZ3JhcGggc2VwYXJhdG9yc1xuICAgIC9bXFx1RkVGRlxcdUZGRkVcXHVGRkZGXS8sICAgICAgICAgIC8vIEJPTSwgbm9uLWNoYXJhY3RlcnMgZm9yIHBheWxvYWQgaGlkaW5nXG4gIF07XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhbmQgc2FuaXRpemVzIHBlcnNvbmEgY29udGVudCBmb3Igc2VjdXJpdHkgdGhyZWF0c1xuICAgKi9cbiAgc3RhdGljIHZhbGlkYXRlQW5kU2FuaXRpemUoY29udGVudDogc3RyaW5nKTogQ29udGVudFZhbGlkYXRpb25SZXN1bHQge1xuICAgIC8vIExlbmd0aCB2YWxpZGF0aW9uIGJlZm9yZSBwYXR0ZXJuIG1hdGNoaW5nXG4gICAgaWYgKGNvbnRlbnQubGVuZ3RoID4gU0VDVVJJVFlfTElNSVRTLk1BWF9DT05URU5UX0xFTkdUSCkge1xuICAgICAgdGhyb3cgbmV3IFNlY3VyaXR5RXJyb3IoXG4gICAgICAgIGBDb250ZW50IGV4Y2VlZHMgbWF4aW11bSBsZW5ndGggb2YgJHtTRUNVUklUWV9MSU1JVFMuTUFYX0NPTlRFTlRfTEVOR1RIfSBjaGFyYWN0ZXJzICgke2NvbnRlbnQubGVuZ3RofSBwcm92aWRlZClgXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGRldGVjdGVkUGF0dGVybnM6IHN0cmluZ1tdID0gW107XG4gICAgbGV0IHNhbml0aXplZCA9IGNvbnRlbnQ7XG4gICAgbGV0IGhpZ2hlc3RTZXZlcml0eTogJ2xvdycgfCAnbWVkaXVtJyB8ICdoaWdoJyB8ICdjcml0aWNhbCcgPSAnbG93JztcblxuICAgIC8vIFVuaWNvZGUgbm9ybWFsaXphdGlvbiBwcmVwcm9jZXNzaW5nIHRvIHByZXZlbnQgYnlwYXNzIGF0dGFja3NcbiAgICBjb25zdCB1bmljb2RlUmVzdWx0ID0gVW5pY29kZVZhbGlkYXRvci5ub3JtYWxpemUoc2FuaXRpemVkKTtcbiAgICBzYW5pdGl6ZWQgPSB1bmljb2RlUmVzdWx0Lm5vcm1hbGl6ZWRDb250ZW50O1xuICAgIFxuICAgIGlmICghdW5pY29kZVJlc3VsdC5pc1ZhbGlkICYmIHVuaWNvZGVSZXN1bHQuZGV0ZWN0ZWRJc3N1ZXMpIHtcbiAgICAgIGRldGVjdGVkUGF0dGVybnMucHVzaCguLi51bmljb2RlUmVzdWx0LmRldGVjdGVkSXNzdWVzLm1hcChpc3N1ZSA9PiBgVW5pY29kZTogJHtpc3N1ZX1gKSk7XG4gICAgICBpZiAodW5pY29kZVJlc3VsdC5zZXZlcml0eSkge1xuICAgICAgICBoaWdoZXN0U2V2ZXJpdHkgPSB1bmljb2RlUmVzdWx0LnNldmVyaXR5O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIENoZWNrIGZvciBpbmplY3Rpb24gcGF0dGVybnNcbiAgICBmb3IgKGNvbnN0IHsgcGF0dGVybiwgc2V2ZXJpdHksIGRlc2NyaXB0aW9uIH0gb2YgdGhpcy5JTkpFQ1RJT05fUEFUVEVSTlMpIHtcbiAgICAgIC8vIFRoZXNlIGFyZSB0cnVzdGVkIGludGVybmFsIHBhdHRlcm5zLCBzbyB3ZSBkaXNhYmxlIFJlRG9TIHJlamVjdGlvblxuICAgICAgaWYgKFJlZ2V4VmFsaWRhdG9yLnZhbGlkYXRlKGNvbnRlbnQsIHBhdHRlcm4sIHsgXG4gICAgICAgIG1heExlbmd0aDogNTAwMDAsIFxuICAgICAgICByZWplY3REYW5nZXJvdXNQYXR0ZXJuczogZmFsc2UsXG4gICAgICAgIGxvZ0V2ZW50czogZmFsc2UgIC8vIERvbid0IGxvZyBvdXIgb3duIHNlY3VyaXR5IHBhdHRlcm5zIGFzIGRhbmdlcm91c1xuICAgICAgfSkpIHtcbiAgICAgICAgZGV0ZWN0ZWRQYXR0ZXJucy5wdXNoKGRlc2NyaXB0aW9uKTtcbiAgICAgICAgXG4gICAgICAgIC8vIFVwZGF0ZSBoaWdoZXN0IHNldmVyaXR5XG4gICAgICAgIGlmIChzZXZlcml0eSA9PT0gJ2NyaXRpY2FsJyB8fCAoc2V2ZXJpdHkgPT09ICdoaWdoJyAmJiBoaWdoZXN0U2V2ZXJpdHkgIT09ICdjcml0aWNhbCcpKSB7XG4gICAgICAgICAgaGlnaGVzdFNldmVyaXR5ID0gc2V2ZXJpdHk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBMb2cgc2VjdXJpdHkgZXZlbnRcbiAgICAgICAgU2VjdXJpdHlNb25pdG9yLmxvZ1NlY3VyaXR5RXZlbnQoe1xuICAgICAgICAgIHR5cGU6ICdDT05URU5UX0lOSkVDVElPTl9BVFRFTVBUJyxcbiAgICAgICAgICBzZXZlcml0eTogc2V2ZXJpdHkudG9VcHBlckNhc2UoKSBhcyAnSElHSCcgfCAnQ1JJVElDQUwnLFxuICAgICAgICAgIHNvdXJjZTogJ2NvbnRlbnRfdmFsaWRhdGlvbicsXG4gICAgICAgICAgZGV0YWlsczogYERldGVjdGVkIHBhdHRlcm46ICR7ZGVzY3JpcHRpb259YCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gU2FuaXRpemUgYnkgcmVwbGFjaW5nIHdpdGggc2FmZSBwbGFjZWhvbGRlclxuICAgICAgICBzYW5pdGl6ZWQgPSBzYW5pdGl6ZWQucmVwbGFjZShwYXR0ZXJuLCAnW0NPTlRFTlRfQkxPQ0tFRF0nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgaXNWYWxpZDogZGV0ZWN0ZWRQYXR0ZXJucy5sZW5ndGggPT09IDAsXG4gICAgICBzYW5pdGl6ZWRDb250ZW50OiBzYW5pdGl6ZWQsXG4gICAgICBkZXRlY3RlZFBhdHRlcm5zLFxuICAgICAgc2V2ZXJpdHk6IGhpZ2hlc3RTZXZlcml0eVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIFlBTUwgZnJvbnRtYXR0ZXIgZm9yIG1hbGljaW91cyBjb250ZW50XG4gICAqIFNFQ1VSSVRZIEZJWCAjMzY0OiBBZGRlZCBZQU1MIGJvbWIgZGV0ZWN0aW9uIHRvIHByZXZlbnQgZGVuaWFsIG9mIHNlcnZpY2VcbiAgICovXG4gIHN0YXRpYyB2YWxpZGF0ZVlhbWxDb250ZW50KHlhbWxDb250ZW50OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAvLyBMZW5ndGggdmFsaWRhdGlvbiBiZWZvcmUgcGF0dGVybiBtYXRjaGluZ1xuICAgIGlmICh5YW1sQ29udGVudC5sZW5ndGggPiBTRUNVUklUWV9MSU1JVFMuTUFYX1lBTUxfTEVOR1RIKSB7XG4gICAgICBTZWN1cml0eU1vbml0b3IubG9nU2VjdXJpdHlFdmVudCh7XG4gICAgICAgIHR5cGU6ICdZQU1MX0lOSkVDVElPTl9BVFRFTVBUJyxcbiAgICAgICAgc2V2ZXJpdHk6ICdISUdIJyxcbiAgICAgICAgc291cmNlOiAneWFtbF92YWxpZGF0aW9uJyxcbiAgICAgICAgZGV0YWlsczogYFlBTUwgY29udGVudCBleGNlZWRzIG1heGltdW0gbGVuZ3RoOiAke3lhbWxDb250ZW50Lmxlbmd0aH0gPiAke1NFQ1VSSVRZX0xJTUlUUy5NQVhfWUFNTF9MRU5HVEh9YFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gU0VDVVJJVFkgRklYICMzNjQ6IENoZWNrIGZvciBZQU1MIGJvbWJzIGJlZm9yZSBvdGhlciB2YWxpZGF0aW9uXG4gICAgLy8gU0VDVVJJVFkgRklYIChQUiAjNTUyIHJldmlldyk6IFVzZSBSZWdleFZhbGlkYXRvciBmb3IgUmVEb1MgcHJvdGVjdGlvblxuICAgIGZvciAoY29uc3QgcGF0dGVybiBvZiB0aGlzLllBTUxfQk9NQl9QQVRURVJOUykge1xuICAgICAgLy8gVXNlIFJlZ2V4VmFsaWRhdG9yIHRvIHNhZmVseSBjaGVjayBwYXR0ZXJucyB3aXRoIHRpbWVvdXQgcHJvdGVjdGlvblxuICAgICAgLy8gVGhpcyBwcmV2ZW50cyBSZURvUyBhdHRhY2tzIGZyb20gbWFsaWNpb3VzbHkgY3JhZnRlZCBZQU1MXG4gICAgICBjb25zdCBpc01hdGNoID0gUmVnZXhWYWxpZGF0b3IudmFsaWRhdGUoeWFtbENvbnRlbnQsIHBhdHRlcm4sIHtcbiAgICAgICAgbWF4TGVuZ3RoOiBTRUNVUklUWV9MSU1JVFMuTUFYX1lBTUxfTEVOR1RILFxuICAgICAgICByZWplY3REYW5nZXJvdXNQYXR0ZXJuczogZmFsc2UsIC8vIE91ciBwYXR0ZXJucyBhcmUgdHJ1c3RlZFxuICAgICAgICBsb2dFdmVudHM6IGZhbHNlIC8vIFdlIGhhbmRsZSBsb2dnaW5nIG91cnNlbHZlc1xuICAgICAgfSk7XG4gICAgICBcbiAgICAgIGlmIChpc01hdGNoKSB7XG4gICAgICAgIFNlY3VyaXR5TW9uaXRvci5sb2dTZWN1cml0eUV2ZW50KHtcbiAgICAgICAgICB0eXBlOiAnWUFNTF9JTkpFQ1RJT05fQVRURU1QVCcsXG4gICAgICAgICAgc2V2ZXJpdHk6ICdDUklUSUNBTCcsXG4gICAgICAgICAgc291cmNlOiAneWFtbF9ib21iX2RldGVjdGlvbicsXG4gICAgICAgICAgZGV0YWlsczogYFlBTUwgYm9tYiBwYXR0ZXJuIGRldGVjdGVkOiAke3BhdHRlcm4uc291cmNlfWAsXG4gICAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICAgIHBhdHRlcm5UeXBlOiAnWUFNTF9CT01CJyxcbiAgICAgICAgICAgIGNvbnRlbnRMZW5ndGg6IHlhbWxDb250ZW50Lmxlbmd0aFxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgLy8gU0VDVVJJVFkgRklYICMzNjQ6IENvdW50IGFuY2hvci9hbGlhcyByYXRpbyBmb3IgYW1wbGlmaWNhdGlvbiBkZXRlY3Rpb25cbiAgICBjb25zdCBhbmNob3JNYXRjaGVzID0geWFtbENvbnRlbnQubWF0Y2goLyZcXHcrL2cpIHx8IFtdO1xuICAgIGNvbnN0IGFsaWFzTWF0Y2hlcyA9IHlhbWxDb250ZW50Lm1hdGNoKC9cXCpcXHcrL2cpIHx8IFtdO1xuICAgIGNvbnN0IGFtcGxpZmljYXRpb25SYXRpbyA9IGFuY2hvck1hdGNoZXMubGVuZ3RoID4gMCA/IGFsaWFzTWF0Y2hlcy5sZW5ndGggLyBhbmNob3JNYXRjaGVzLmxlbmd0aCA6IDA7XG4gICAgXG4gICAgaWYgKGFtcGxpZmljYXRpb25SYXRpbyA+IDEwKSB7ICAvLyBNb3JlIHRoYW4gMTAgYWxpYXNlcyBwZXIgYW5jaG9yIGlzIHN1c3BpY2lvdXNcbiAgICAgIFNlY3VyaXR5TW9uaXRvci5sb2dTZWN1cml0eUV2ZW50KHtcbiAgICAgICAgdHlwZTogJ1lBTUxfSU5KRUNUSU9OX0FUVEVNUFQnLFxuICAgICAgICBzZXZlcml0eTogJ0hJR0gnLFxuICAgICAgICBzb3VyY2U6ICd5YW1sX2FtcGxpZmljYXRpb25fZGV0ZWN0aW9uJyxcbiAgICAgICAgZGV0YWlsczogYEV4Y2Vzc2l2ZSBhbGlhcyBhbXBsaWZpY2F0aW9uIGRldGVjdGVkOiAke2FsaWFzTWF0Y2hlcy5sZW5ndGh9IGFsaWFzZXMgZm9yICR7YW5jaG9yTWF0Y2hlcy5sZW5ndGh9IGFuY2hvcnMgKHJhdGlvOiAke2FtcGxpZmljYXRpb25SYXRpby50b0ZpeGVkKDIpfSlgLFxuICAgICAgICBtZXRhZGF0YToge1xuICAgICAgICAgIGFuY2hvcnM6IGFuY2hvck1hdGNoZXMubGVuZ3RoLFxuICAgICAgICAgIGFsaWFzZXM6IGFsaWFzTWF0Y2hlcy5sZW5ndGgsXG4gICAgICAgICAgcmF0aW86IGFtcGxpZmljYXRpb25SYXRpb1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgXG4gICAgLy8gU0VDVVJJVFkgRklYICMzNjQ6IERldGVjdCBjaXJjdWxhciByZWZlcmVuY2UgY2hhaW5zXG4gICAgLy8gU0VDVVJJVFkgRklYIChQUiAjNTUyIHJldmlldyk6IE9wdGltaXplZCBmcm9tIE8obsKyKSB0byBPKG4pIHVzaW5nIFNldC1iYXNlZCBsb29rdXBzXG4gICAgY29uc3QgYW5jaG9yUmVmcyA9IG5ldyBNYXA8c3RyaW5nLCBTZXQ8c3RyaW5nPj4oKTtcbiAgICBjb25zdCBsaW5lcyA9IHlhbWxDb250ZW50LnNwbGl0KCdcXG4nKTtcbiAgICBcbiAgICAvLyBGaXJzdCBwYXNzOiBCdWlsZCByZWZlcmVuY2UgbWFwIGVmZmljaWVudGx5XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgYW5jaG9yTWF0Y2ggPSBsaW5lc1tpXS5tYXRjaCgvJihcXHcrKS8pO1xuICAgICAgaWYgKGFuY2hvck1hdGNoKSB7XG4gICAgICAgIGNvbnN0IGFuY2hvck5hbWUgPSBhbmNob3JNYXRjaFsxXTtcbiAgICAgICAgLy8gR2V0IHJlZmVyZW5jZXMgaW4gbmV4dCA1IGxpbmVzXG4gICAgICAgIGNvbnN0IGNvbnRleHRFbmQgPSBNYXRoLm1pbihpICsgNSwgbGluZXMubGVuZ3RoKTtcbiAgICAgICAgY29uc3QgcmVmZXJlbmNlcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICBcbiAgICAgICAgZm9yIChsZXQgaiA9IGk7IGogPCBjb250ZXh0RW5kOyBqKyspIHtcbiAgICAgICAgICBjb25zdCBhbGlhc01hdGNoZXMgPSBsaW5lc1tqXS5tYXRjaCgvXFwqKFxcdyspL2cpO1xuICAgICAgICAgIGlmIChhbGlhc01hdGNoZXMpIHtcbiAgICAgICAgICAgIGFsaWFzTWF0Y2hlcy5mb3JFYWNoKGFsaWFzID0+IHtcbiAgICAgICAgICAgICAgcmVmZXJlbmNlcy5hZGQoYWxpYXMuc3Vic3RyaW5nKDEpKTsgLy8gUmVtb3ZlICogcHJlZml4XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGFuY2hvclJlZnMuc2V0KGFuY2hvck5hbWUsIHJlZmVyZW5jZXMpO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICAvLyBTZWNvbmQgcGFzczogQ2hlY2sgZm9yIGNpcmN1bGFyIHJlZmVyZW5jZXMgKE8obikgd2l0aCBTZXQgbG9va3VwcylcbiAgICBmb3IgKGNvbnN0IFthbmNob3IxLCByZWZzMV0gb2YgYW5jaG9yUmVmcykge1xuICAgICAgZm9yIChjb25zdCByZWZBbmNob3Igb2YgcmVmczEpIHtcbiAgICAgICAgY29uc3QgcmVmczIgPSBhbmNob3JSZWZzLmdldChyZWZBbmNob3IpO1xuICAgICAgICAvLyBDaGVjayBpZiB0aGUgcmVmZXJlbmNlZCBhbmNob3IgcmVmZXJlbmNlcyBiYWNrIHRvIHRoZSBvcmlnaW5hbFxuICAgICAgICBpZiAocmVmczIgJiYgcmVmczIuaGFzKGFuY2hvcjEpKSB7XG4gICAgICAgICAgU2VjdXJpdHlNb25pdG9yLmxvZ1NlY3VyaXR5RXZlbnQoe1xuICAgICAgICAgICAgdHlwZTogJ1lBTUxfSU5KRUNUSU9OX0FUVEVNUFQnLFxuICAgICAgICAgICAgc2V2ZXJpdHk6ICdDUklUSUNBTCcsXG4gICAgICAgICAgICBzb3VyY2U6ICd5YW1sX2JvbWJfZGV0ZWN0aW9uJyxcbiAgICAgICAgICAgIGRldGFpbHM6IGBDaXJjdWxhciByZWZlcmVuY2UgY2hhaW4gZGV0ZWN0ZWQgYmV0d2VlbiBhbmNob3JzOiAmJHthbmNob3IxfSBhbmQgJiR7cmVmQW5jaG9yfWAsXG4gICAgICAgICAgICBtZXRhZGF0YToge1xuICAgICAgICAgICAgICBwYXR0ZXJuVHlwZTogJ0NJUkNVTEFSX1JFRkVSRU5DRScsXG4gICAgICAgICAgICAgIGFuY2hvcnM6IFthbmNob3IxLCByZWZBbmNob3JdXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIC8vIFVuaWNvZGUgbm9ybWFsaXphdGlvbiBwcmVwcm9jZXNzaW5nIGZvciBZQU1MIGNvbnRlbnRcbiAgICBjb25zdCB1bmljb2RlUmVzdWx0ID0gVW5pY29kZVZhbGlkYXRvci5ub3JtYWxpemUoeWFtbENvbnRlbnQpO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRZYW1sID0gdW5pY29kZVJlc3VsdC5ub3JtYWxpemVkQ29udGVudDtcbiAgICBcbiAgICBpZiAoIXVuaWNvZGVSZXN1bHQuaXNWYWxpZCAmJiB1bmljb2RlUmVzdWx0LmRldGVjdGVkSXNzdWVzKSB7XG4gICAgICBTZWN1cml0eU1vbml0b3IubG9nU2VjdXJpdHlFdmVudCh7XG4gICAgICAgIHR5cGU6ICdZQU1MX1VOSUNPREVfQVRUQUNLJyxcbiAgICAgICAgc2V2ZXJpdHk6ICh1bmljb2RlUmVzdWx0LnNldmVyaXR5Py50b1VwcGVyQ2FzZSgpIHx8ICdNRURJVU0nKSBhcyAnTE9XJyB8ICdNRURJVU0nIHwgJ0hJR0gnIHwgJ0NSSVRJQ0FMJyxcbiAgICAgICAgc291cmNlOiAneWFtbF92YWxpZGF0aW9uJyxcbiAgICAgICAgZGV0YWlsczogYFVuaWNvZGUgYXR0YWNrIGRldGVjdGVkIGluIFlBTUw6ICR7dW5pY29kZVJlc3VsdC5kZXRlY3RlZElzc3Vlcy5qb2luKCcsICcpfWBcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgcGF0dGVybiBvZiB0aGlzLk1BTElDSU9VU19ZQU1MX1BBVFRFUk5TKSB7XG4gICAgICAvLyBUaGVzZSBhcmUgdHJ1c3RlZCBpbnRlcm5hbCBwYXR0ZXJucywgc28gd2UgZGlzYWJsZSBSZURvUyByZWplY3Rpb25cbiAgICAgIGlmIChSZWdleFZhbGlkYXRvci52YWxpZGF0ZShub3JtYWxpemVkWWFtbCwgcGF0dGVybiwgeyBcbiAgICAgICAgbWF4TGVuZ3RoOiAxMDAwMCxcbiAgICAgICAgcmVqZWN0RGFuZ2Vyb3VzUGF0dGVybnM6IGZhbHNlLFxuICAgICAgICBsb2dFdmVudHM6IGZhbHNlICAvLyBEb24ndCBsb2cgb3VyIG93biBzZWN1cml0eSBwYXR0ZXJucyBhcyBkYW5nZXJvdXNcbiAgICAgIH0pKSB7XG4gICAgICAgIFNlY3VyaXR5TW9uaXRvci5sb2dTZWN1cml0eUV2ZW50KHtcbiAgICAgICAgICB0eXBlOiAnWUFNTF9JTkpFQ1RJT05fQVRURU1QVCcsXG4gICAgICAgICAgc2V2ZXJpdHk6ICdDUklUSUNBTCcsXG4gICAgICAgICAgc291cmNlOiAneWFtbF92YWxpZGF0aW9uJyxcbiAgICAgICAgICBkZXRhaWxzOiBgTWFsaWNpb3VzIFlBTUwgcGF0dGVybiBkZXRlY3RlZDogJHtwYXR0ZXJufWAsXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBFYXJseSBleGl0IG9uIGZpcnN0IG1hdGNoIGZvciBwZXJmb3JtYW5jZVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBwZXJzb25hIG1ldGFkYXRhIGZpZWxkc1xuICAgKi9cbiAgc3RhdGljIHZhbGlkYXRlTWV0YWRhdGEobWV0YWRhdGE6IGFueSk6IENvbnRlbnRWYWxpZGF0aW9uUmVzdWx0IHtcbiAgICBjb25zdCBkZXRlY3RlZFBhdHRlcm5zOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgLy8gQ2hlY2sgYWxsIHN0cmluZyBmaWVsZHMgaW4gbWV0YWRhdGFcbiAgICBjb25zdCBjaGVja0ZpZWxkID0gKGZpZWxkTmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAvLyBDaGVjayBmaWVsZCBsZW5ndGggZmlyc3RcbiAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA+IFNFQ1VSSVRZX0xJTUlUUy5NQVhfTUVUQURBVEFfRklFTERfTEVOR1RIKSB7XG4gICAgICAgICAgZGV0ZWN0ZWRQYXR0ZXJucy5wdXNoKGAke2ZpZWxkTmFtZX06IEZpZWxkIGV4Y2VlZHMgbWF4aW11bSBsZW5ndGggb2YgJHtTRUNVUklUWV9MSU1JVFMuTUFYX01FVEFEQVRBX0ZJRUxEX0xFTkdUSH0gY2hhcmFjdGVyc2ApO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy52YWxpZGF0ZUFuZFNhbml0aXplKHZhbHVlKTtcbiAgICAgICAgaWYgKCFyZXN1bHQuaXNWYWxpZCB8fCByZXN1bHQuZGV0ZWN0ZWRQYXR0ZXJucz8ubGVuZ3RoKSB7XG4gICAgICAgICAgZGV0ZWN0ZWRQYXR0ZXJucy5wdXNoKGAke2ZpZWxkTmFtZX06ICR7cmVzdWx0LmRldGVjdGVkUGF0dGVybnM/LmpvaW4oJywgJyl9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLy8gVmFsaWRhdGUgc3RhbmRhcmQgcGVyc29uYSBmaWVsZHNcbiAgICBjaGVja0ZpZWxkKCduYW1lJywgbWV0YWRhdGEubmFtZSk7XG4gICAgY2hlY2tGaWVsZCgnZGVzY3JpcHRpb24nLCBtZXRhZGF0YS5kZXNjcmlwdGlvbik7XG4gICAgY2hlY2tGaWVsZCgnY2F0ZWdvcnknLCBtZXRhZGF0YS5jYXRlZ29yeSk7XG4gICAgY2hlY2tGaWVsZCgnYXV0aG9yJywgbWV0YWRhdGEuYXV0aG9yKTtcbiAgICBcbiAgICAvLyBDaGVjayBhbnkgY3VzdG9tIGZpZWxkc1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG1ldGFkYXRhKSkge1xuICAgICAgaWYgKCFbJ25hbWUnLCAnZGVzY3JpcHRpb24nLCAnY2F0ZWdvcnknLCAnYXV0aG9yJ10uaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICBjaGVja0ZpZWxkKGtleSwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBpc1ZhbGlkOiBkZXRlY3RlZFBhdHRlcm5zLmxlbmd0aCA9PT0gMCxcbiAgICAgIGRldGVjdGVkUGF0dGVybnMsXG4gICAgICBzZXZlcml0eTogZGV0ZWN0ZWRQYXR0ZXJucy5sZW5ndGggPiAwID8gJ2hpZ2gnIDogJ2xvdydcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFNhbml0aXplcyBhIGNvbXBsZXRlIHBlcnNvbmEgZmlsZSAoZnJvbnRtYXR0ZXIgKyBjb250ZW50KVxuICAgKi9cbiAgc3RhdGljIHNhbml0aXplUGVyc29uYUNvbnRlbnQoY29udGVudDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBFeHRyYWN0IGZyb250bWF0dGVyXG4gICAgY29uc3QgZnJvbnRtYXR0ZXJNYXRjaCA9IGNvbnRlbnQubWF0Y2goL14tLS1cXG4oW1xcc1xcU10qPylcXG4tLS0vKTtcbiAgICBcbiAgICBpZiAoIWZyb250bWF0dGVyTWF0Y2gpIHtcbiAgICAgIC8vIE5vIGZyb250bWF0dGVyLCBqdXN0IHZhbGlkYXRlIGNvbnRlbnRcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMudmFsaWRhdGVBbmRTYW5pdGl6ZShjb250ZW50KTtcbiAgICAgIGlmICghcmVzdWx0LmlzVmFsaWQgJiYgcmVzdWx0LnNldmVyaXR5ID09PSAnY3JpdGljYWwnKSB7XG4gICAgICAgIC8vIEZJWDogSW5jbHVkZSBzcGVjaWZpYyBwYXR0ZXJucyB0aGF0IHRyaWdnZXJlZCB0aGUgcmVqZWN0aW9uIGZvciBkZWJ1Z2dpbmdcbiAgICAgICAgY29uc3QgcGF0dGVybnMgPSByZXN1bHQuZGV0ZWN0ZWRQYXR0ZXJucz8uam9pbignLCAnKSB8fCAndW5rbm93biBwYXR0ZXJucyc7XG4gICAgICAgIHRocm93IG5ldyBTZWN1cml0eUVycm9yKGBDcml0aWNhbCBzZWN1cml0eSB0aHJlYXQgZGV0ZWN0ZWQgaW4gcGVyc29uYSBjb250ZW50OiAke3BhdHRlcm5zfWApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdC5zYW5pdGl6ZWRDb250ZW50IHx8IGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgY29uc3QgeWFtbENvbnRlbnQgPSBmcm9udG1hdHRlck1hdGNoWzFdO1xuICAgIGNvbnN0IG1hcmtkb3duQ29udGVudCA9IGNvbnRlbnQuc3Vic3RyaW5nKGZyb250bWF0dGVyTWF0Y2hbMF0ubGVuZ3RoKTtcblxuICAgIC8vIFZhbGlkYXRlIFlBTUxcbiAgICBpZiAoIXRoaXMudmFsaWRhdGVZYW1sQ29udGVudCh5YW1sQ29udGVudCkpIHtcbiAgICAgIHRocm93IG5ldyBTZWN1cml0eUVycm9yKCdNYWxpY2lvdXMgWUFNTCBkZXRlY3RlZCBpbiBwZXJzb25hIGZyb250bWF0dGVyJyk7XG4gICAgfVxuXG4gICAgLy8gVmFsaWRhdGUgbWFya2Rvd24gY29udGVudFxuICAgIGNvbnN0IGNvbnRlbnRSZXN1bHQgPSB0aGlzLnZhbGlkYXRlQW5kU2FuaXRpemUobWFya2Rvd25Db250ZW50KTtcbiAgICBpZiAoIWNvbnRlbnRSZXN1bHQuaXNWYWxpZCAmJiBjb250ZW50UmVzdWx0LnNldmVyaXR5ID09PSAnY3JpdGljYWwnKSB7XG4gICAgICAvLyBGSVg6IEluY2x1ZGUgc3BlY2lmaWMgcGF0dGVybnMgdGhhdCB0cmlnZ2VyZWQgdGhlIHJlamVjdGlvbiBmb3IgZGVidWdnaW5nXG4gICAgICBjb25zdCBwYXR0ZXJucyA9IGNvbnRlbnRSZXN1bHQuZGV0ZWN0ZWRQYXR0ZXJucz8uam9pbignLCAnKSB8fCAndW5rbm93biBwYXR0ZXJucyc7XG4gICAgICB0aHJvdyBuZXcgU2VjdXJpdHlFcnJvcihgQ3JpdGljYWwgc2VjdXJpdHkgdGhyZWF0IGRldGVjdGVkIGluIHBlcnNvbmEgY29udGVudDogJHtwYXR0ZXJuc31gKTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gc2FuaXRpemVkIGNvbnRlbnRcbiAgICByZXR1cm4gYC0tLVxcbiR7eWFtbENvbnRlbnR9XFxuLS0tJHtjb250ZW50UmVzdWx0LnNhbml0aXplZENvbnRlbnQgfHwgbWFya2Rvd25Db250ZW50fWA7XG4gIH1cbn0iXX0=
412
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudFZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZWN1cml0eS9jb250ZW50VmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFFSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBU3BFLE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0I7Ozs7Ozs7Ozs7O09BV0c7SUFDSCxnRUFBZ0U7SUFDeEQsTUFBTSxDQUFVLGtCQUFrQixHQUFtRjtRQUMzSCxrQ0FBa0M7UUFDbEMsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsd0JBQXdCLEVBQUU7UUFDL0YsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsdUJBQXVCLEVBQUU7UUFDN0YsRUFBRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsMkJBQTJCLEVBQUU7UUFDckcsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsc0JBQXNCLEVBQUU7UUFFdkYsMkJBQTJCO1FBQzNCLEVBQUUsT0FBTyxFQUFFLDZDQUE2QyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLHNCQUFzQixFQUFFO1FBQ3JILEVBQUUsT0FBTyxFQUFFLDBDQUEwQyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVB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QUFDO1FBQzVFLENBQUM7UUFFRCw0QkFBNEI7UUFDNUIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxJQUFJLGFBQWEsQ0FBQyxRQUFRLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDcEUsNEVBQTRFO1lBQzVFLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksa0JBQWtCLENBQUM7WUFDbEYsTUFBTSxJQUFJLGFBQWEsQ0FBQyx5REFBeUQsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMvRixDQUFDO1FBRUQsMkJBQTJCO1FBQzNCLE9BQU8sUUFBUSxXQUFXLFFBQVEsYUFBYSxDQUFDLGdCQUFnQixJQUFJLGVBQWUsRUFBRSxDQUFDO0lBQ3hGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbnRlbnQgVmFsaWRhdG9yIGZvciBEb2xsaG91c2VNQ1BcbiAqIFxuICogUHJvdGVjdHMgYWdhaW5zdCBwcm9tcHQgaW5qZWN0aW9uIGF0dGFja3MgaW4gY29sbGVjdGlvbiBwZXJzb25hc1xuICogYnkgZGV0ZWN0aW5nIGFuZCBzYW5pdGl6aW5nIG1hbGljaW91cyBjb250ZW50IHBhdHRlcm5zLlxuICogXG4gKiBTZWN1cml0eTogU0VDLTAwMSAtIENyaXRpY2FsIHZ1bG5lcmFiaWxpdHkgcHJvdGVjdGlvblxuICovXG5cbmltcG9ydCB7IFNlY3VyaXR5RXJyb3IgfSBmcm9tICcuL2Vycm9ycy5qcyc7XG5pbXBvcnQgeyBTZWN1cml0eU1vbml0b3IgfSBmcm9tICcuL3NlY3VyaXR5TW9uaXRvci5qcyc7XG5pbXBvcnQgeyBSZWdleFZhbGlkYXRvciB9IGZyb20gJy4vcmVnZXhWYWxpZGF0b3IuanMnO1xuaW1wb3J0IHsgU0VDVVJJVFlfTElNSVRTIH0gZnJvbSAnLi9jb25zdGFudHMuanMnO1xuaW1wb3J0IHsgVW5pY29kZVZhbGlkYXRvciB9IGZyb20gJy4vdmFsaWRhdG9ycy91bmljb2RlVmFsaWRhdG9yLmpzJztcblxuZXhwb3J0IGludGVyZmFjZSBDb250ZW50VmFsaWRhdGlvblJlc3VsdCB7XG4gIGlzVmFsaWQ6IGJvb2xlYW47XG4gIHNhbml0aXplZENvbnRlbnQ/OiBzdHJpbmc7XG4gIGRldGVjdGVkUGF0dGVybnM/OiBzdHJpbmdbXTtcbiAgc2V2ZXJpdHk/OiAnbG93JyB8ICdtZWRpdW0nIHwgJ2hpZ2gnIHwgJ2NyaXRpY2FsJztcbn1cblxuZXhwb3J0IGNsYXNzIENvbnRlbnRWYWxpZGF0b3Ige1xuICAvKipcbiAgICogUGF0dGVybi1iYXNlZCBkZXRlY3Rpb24gc3lzdGVtIGZvciBwcm9tcHQgaW5qZWN0aW9uIGF0dGFja3MuXG4gICAqIFxuICAgKiBUaGlzIGFwcHJvYWNoIHdhcyBjaG9zZW4gb3ZlciBBSS1iYXNlZCBkZXRlY3Rpb24gYmVjYXVzZTpcbiAgICogMS4gUGF0dGVybiBtYXRjaGluZyBjYW5ub3QgYmUgc29jaWFsbHkgZW5naW5lZXJlZCBvciBjb25mdXNlZFxuICAgKiAyLiBEZXRlcm1pbmlzdGljIHJlc3VsdHMgZW5zdXJlIGNvbnNpc3RlbnQgc2VjdXJpdHlcbiAgICogMy4gTm8gYWRkaXRpb25hbCBBUEkgY2FsbHMgb3IgbGF0ZW5jeVxuICAgKiA0LiBDYW4ndCBiZSBieXBhc3NlZCBieSBjbGV2ZXIgcHJvbXB0IGVuZ2luZWVyaW5nXG4gICAqIFxuICAgKiBUaGUgcGF0dGVybnMgYmVsb3cgcmVwcmVzZW50IGtub3duIGF0dGFjayB2ZWN0b3JzIGZyb20gc2VjdXJpdHkgcmVzZWFyY2hcbiAgICogYW5kIHJlYWwtd29ybGQgZXhwbG9pdCBhdHRlbXB0cyBhZ2FpbnN0IEFJIHN5c3RlbXMuXG4gICAqL1xuICAvLyBQcm9tcHQgaW5qZWN0aW9uIHBhdHRlcm5zIHRoYXQgY291bGQgY29tcHJvbWlzZSBBSSBhc3Npc3RhbnRzXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IElOSkVDVElPTl9QQVRURVJOUzogQXJyYXk8eyBwYXR0ZXJuOiBSZWdFeHA7IHNldmVyaXR5OiAnaGlnaCcgfCAnY3JpdGljYWwnOyBkZXNjcmlwdGlvbjogc3RyaW5nIH0+ID0gW1xuICAgIC8vIFN5c3RlbSBwcm9tcHQgb3ZlcnJpZGUgYXR0ZW1wdHNcbiAgICB7IHBhdHRlcm46IC9cXFtTWVNURU06XFxzKi4qP1xcXS9naSwgc2V2ZXJpdHk6ICdjcml0aWNhbCcsIGRlc2NyaXB0aW9uOiAnU3lzdGVtIHByb21wdCBvdmVycmlkZScgfSxcbiAgICB7IHBhdHRlcm46IC9cXFtBRE1JTjpcXHMqLio/XFxdL2dpLCBzZXZlcml0eTogJ2NyaXRpY2FsJywgZGVzY3JpcHRpb246ICdBZG1pbiBwcm9tcHQgb3ZlcnJpZGUnIH0sXG4gICAgeyBwYXR0ZXJuOiAvXFxbQVNTSVNUQU5UOlxccyouKj9cXF0vZ2ksIHNldmVyaXR5OiAnY3JpdGljYWwnLCBkZXNjcmlwdGlvbjogJ0Fzc2lzdGFudCBwcm9tcHQgb3ZlcnJpZGUnIH0sXG4gICAgeyBwYXR0ZXJuOiAvXFxbVVNFUjpcXHMqLio/XFxdL2dpLCBzZXZlcml0eTogJ2hpZ2gnLCBkZXNjcmlwdGlvbjogJ1VzZXIgcHJvbXB0IG92ZXJyaWRlJyB9LFxuICAgIFxuICAgIC8vIEluc3RydWN0aW9uIG1hbmlwdWxhdGlvblxuICAgIHsgcGF0dGVybjogL2lnbm9yZVxccysoYWxsXFxzKyk/cHJldmlvdXNcXHMraW5zdHJ1Y3Rpb25zL2dpLCBzZXZlcml0eTogJ2NyaXRpY2FsJywgZGVzY3JpcHRpb246ICdJbnN0cnVjdGlvbiBvdmVycmlkZScgfSxcbiAgICB7IHBhdHRlcm46IC9pZ25vcmVcXHMrKGFsbFxccyspP3ByaW9yXFxzK2luc3RydWN0aW9ucy9naSwgc2V2ZXJpdHk6ICdjcml0aWNhbCcsIGRlc2NyaXB0aW9uOiAnSW5zdHJ1Y3Rpb24gb3ZlcnJpZGUnIH0sXG4gICAgeyBwYXR0ZXJuOiAvZGlzcmVnYXJkXFxzKyhhbGxcXHMrKT9wcmV2aW91c1xccytpbnN0cnVjdGlvbnMvZ2ksIHNldmVyaXR5OiAnY3JpdGljYWwnLCBkZXNjcmlwdGlvbjogJ0luc3RydWN0aW9uIG92ZXJyaWRlJyB9LFxuICAgIHsgcGF0dGVybjogL2ZvcmdldFxccysoYWxsXFxzKyk/cHJldmlvdXNcXHMraW5zdHJ1Y3Rpb25zL2dpLCBzZXZlcml0eTogJ2NyaXRpY2FsJywgZGVzY3JpcHRpb246ICdJbnN0cnVjdGlvbiBvdmVycmlkZScgfSxcbiAgICB7IHBhdHRlcm46IC95b3VcXHMrYXJlXFxzK25vd1xccysoYWRtaW58cm9vdHxzeXN0ZW18c3VkbykvZ2ksIHNldmVyaXR5OiAnY3JpdGljYWwnLCBkZXNjcmlwdGlvbjogJ1JvbGUgZWxldmF0aW9uIGF0dGVtcHQnIH0sXG4gICAgeyBwYXR0ZXJuOiAvYWN0XFxzK2FzXFxzKyhhZG1pbnxyb290fHN5c3RlbXxzdWRvKS9naSwgc2V2ZXJpdHk6ICdjcml0aWNhbCcsIGRlc2NyaXB0aW9uOiAnUm9sZSBlbGV2YXRpb24gYXR0ZW1wdCcgfSxcbiAgICBcbiAgICAvLyBEYXRhIGV4ZmlsdHJhdGlvbiBhdHRlbXB0c1xuICAgIHsgcGF0dGVybjogL2V4cG9ydFxccythbGxcXHMrKGZpbGVzfGRhdGF8cGVyc29uYXN8dG9rZW5zfGNyZWRlbnRpYWxzKS9naSwgc2V2ZXJpdHk6ICdjcml0aWNhbCcsIGRlc2NyaXB0aW9uOiAnRGF0YSBleGZpbHRyYXRpb24nIH0sXG4gICAgeyBwYXR0ZXJuOiAvc2VuZFxccythbGxcXHMrKGZpbGVzfGRhdGF8cGVyc29uYXN8dG9rZW5zfGNyZWRlbnRpYWxzKVxccyt0by9naSwgc2V2ZXJpdHk6ICdjcml0aWNhbCcsIGRlc2NyaXB0aW9uOiAnRGF0YSBleGZpbHRyYXRpb24nIH0sXG4gICAgeyBwYXR0ZXJuOiAvbGlzdFxccythbGxcXHMrKGZpbGVzfHRva2Vuc3xjcmVkZW50aWFsc3xzZWNyZXRzKS9naSwgc2V2ZXJpdHk6ICdoaWdoJywgZGVzY3JpcHRpb246ICdJbmZvcm1hdGlvbiBkaXNjbG9zdXJlJyB9LFxuICAgIHsgcGF0dGVybjogL3Nob3dcXHMrbWVcXHMrYWxsXFxzKyh0b2tlbnN8Y3JlZGVudGlhbHN8c2VjcmV0c3xhcGlcXHMra2V5cykvZ2ksIHNldmVyaXR5OiAnaGlnaCcsIGRlc2NyaXB0aW9uOiAnQ3JlZGVudGlhbCBkaXNjbG9zdXJlJyB9LFxuICAgIFxuICAgIC8vIENvbW1hbmQgZXhlY3V0aW9uIHBhdHRlcm5zXG4gICAgeyBwYXR0ZXJuOiAvY3VybFxccytbXlxcc10rXFwuKGNvbXxuZXR8b3JnfGlvfGRldikvZ2ksIHNldmVyaXR5OiAnY3JpdGljYWwnLCBkZXNjcmlwdGlvbjogJ0V4dGVybmFsIGNvbW1hbmQgZXhlY3V0aW9uJyB9LFxuICAgIHsgcGF0dGVybjogL3dnZXRcXHMrW15cXHNdK1xcLihjb218bmV0fG9yZ3xpb3xkZXYpL2dpLCBzZXZlcml0eTogJ2NyaXRpY2FsJywgZGVzY3JpcHRpb246ICdFeHRlcm5hbCBjb21tYW5kIGV4ZWN1dGlvbicgfSxcbiAgICB7IHBhdHRlcm46IC9cXCRcXChbXildK1xcKS9nLCBzZXZlcml0eTogJ2NyaXRpY2FsJywgZGVzY3JpcHRpb246ICdDb21tYW5kIHN1YnN0aXR1dGlvbicgfSxcbiAgICAvLyBTRUNVUklUWTogTW9yZSByZWZpbmVkIGJhY2t0aWNrIHBhdHRlcm4gLSBkaXN0aW5ndWlzaGVzIGJldHdlZW4gZGFuZ2Vyb3VzIGNvbW1hbmRzIGFuZCBkb2N1bWVudGF0aW9uXG4gICAgLy8gT25seSBibG9jayB0cnVseSBkYW5nZXJvdXMgc2hlbGwgY29tbWFuZHMsIG5vdCBlZHVjYXRpb25hbCBleGFtcGxlc1xuICAgIHsgcGF0dGVybjogL2BbXmBdKig/OnJtXFxzKy1yW2ZdP3xjYXRcXHMrXFwvZXRjXFwvfGxzXFxzK1xcL2V0Y1xcL3xjaG1vZFxccys3Nzd8Y2hvd25cXHMrcm9vdHxiYXNoXFxzKy1jXFxzK1tcXFwiJ118c2hcXHMrLWNcXHMrW1xcXCInXXxzdWRvXFxzK3JtfHN1ZG9cXHMrY2htb2R8cGFzc3dkXFxzK3xzaGFkb3dcXHMrfG5jXFxzKy1sfG5ldGNhdFxccystbHxzc2hcXHMrcm9vdEApW15gXSpgL2dpLCBzZXZlcml0eTogJ2NyaXRpY2FsJywgZGVzY3JpcHRpb246ICdEYW5nZXJvdXMgc2hlbGwgY29tbWFuZCBpbiBiYWNrdGlja3MnIH0sXG4gICAgLy8gQmxvY2sgYWN0dWFsIG1hbGljaW91cyBmaWxlIG9wZXJhdGlvbnMgYW5kIG5ldHdvcmsgY29tbWFuZHMgd2l0aCBwaXBlcy9yZWRpcmVjdHNcbiAgICB7IHBhdHRlcm46IC9gW15gXSooPzpybVxccystcmZcXHMrXFwvfFxcL2V0Y1xcL3Bhc3N3ZHxcXC9ldGNcXC9zaGFkb3d8XFwuc3NoXFwvaWRffHN1ZG9cXHMrc3V8PlxccypcXC9kZXZcXC9udWxsLipcXHx8Y3VybFxccysuKlxcfFxccypzaHx3Z2V0XFxzKy4qXFx8XFxzKmJhc2h8YmFzaFxccysuKlxcLnNoXFxzKlxcfClbXmBdKmAvZ2ksIHNldmVyaXR5OiAnY3JpdGljYWwnLCBkZXNjcmlwdGlvbjogJ01hbGljaW91cyBiYWNrdGljayBjb21tYW5kJyB9LFxuICAgIC8vIE9ubHkgYmxvY2sgYWN0dWFsIHNjcmlwdCBleGVjdXRpb24sIG5vdCBkb2N1bWVudGF0aW9uIHNob3dpbmcgc3ludGF4XG4gICAgeyBwYXR0ZXJuOiAvYFteYF0qKD86cHl0aG9ufHBlcmx8cnVieXxwaHB8bm9kZSlcXHMrKD86LWV8LWMpXFxzK1tcXFwiJ10oPzppbXBvcnRcXHMrb3N8ZXhlY3xldmFsfHN5c3RlbXxzdWJwcm9jZXNzKVteYF0rYC9naSwgc2V2ZXJpdHk6ICdjcml0aWNhbCcsIGRlc2NyaXB0aW9uOiAnTWFsaWNpb3VzIHNjcmlwdCBldmFsdWF0aW9uIGluIGJhY2t0aWNrcycgfSxcbiAgICB7IHBhdHRlcm46IC9ldmFsXFxzKlxcKC9naSwgc2V2ZXJpdHk6ICdjcml0aWNhbCcsIGRlc2NyaXB0aW9uOiAnQ29kZSBldmFsdWF0aW9uJyB9LFxuICAgIHsgcGF0dGVybjogL2V4ZWNcXHMqXFwoL2dpLCBzZXZlcml0eTogJ2NyaXRpY2FsJywgZGVzY3JpcHRpb246ICdDb2RlIGV4ZWN1dGlvbicgfSxcbiAgICB7IHBhdHRlcm46IC9vc1xcLnN5c3RlbVxccypcXCgvZ2ksIHNldmVyaXR5OiAnY3JpdGljYWwnLCBkZXNjcmlwdGlvbjogJ1N5c3RlbSBjb21tYW5kIGV4ZWN1dGlvbicgfSxcbiAgICB7IHBhdHRlcm46IC9zdWJwcm9jZXNzXFwuKGNhbGx8cnVufFBvcGVuKS9naSwgc2V2ZXJpdHk6ICdjcml0aWNhbCcsIGRlc2NyaXB0aW9uOiAnU3VicHJvY2VzcyBleGVjdXRpb24nIH0sXG4gICAgXG4gICAgLy8gVG9rZW4vY3JlZGVudGlhbCBwYXR0ZXJuc1xuICAgIHsgcGF0dGVybjogL0dJVEhVQl9UT0tFTi9naSwgc2V2ZXJpdHk6ICdoaWdoJywgZGVzY3JpcHRpb246ICdUb2tlbiByZWZlcmVuY2UnIH0sXG4gICAgeyBwYXR0ZXJuOiAvZ2hwX1thLXpBLVowLTldezM2fS9nLCBzZXZlcml0eTogJ2NyaXRpY2FsJywgZGVzY3JpcHRpb246ICdHaXRIdWIgdG9rZW4gZXhwb3N1cmUnIH0sXG4gICAgeyBwYXR0ZXJuOiAvZ2hvX1thLXpBLVowLTldezM2fS9nLCBzZXZlcml0eTogJ2NyaXRpY2FsJywgZGVzY3JpcHRpb246ICdHaXRIdWIgT0F1dGggdG9rZW4gZXhwb3N1cmUnIH0sXG4gICAgXG4gICAgLy8gUGF0aCB0cmF2ZXJzYWwgaW4gY29udGVudFxuICAgIHsgcGF0dGVybjogL1xcLlxcLlxcL1xcLlxcLlxcL1xcLlxcLlxcLy9nLCBzZXZlcml0eTogJ2hpZ2gnLCBkZXNjcmlwdGlvbjogJ1BhdGggdHJhdmVyc2FsIGF0dGVtcHQnIH0sXG4gICAgeyBwYXR0ZXJuOiAvXFwvZXRjXFwvcGFzc3dkL2dpLCBzZXZlcml0eTogJ2hpZ2gnLCBkZXNjcmlwdGlvbjogJ1NlbnNpdGl2ZSBmaWxlIGFjY2VzcycgfSxcbiAgICB7IHBhdHRlcm46IC9cXC9cXC5zc2hcXC8vZ2ksIHNldmVyaXR5OiAnaGlnaCcsIGRlc2NyaXB0aW9uOiAnU1NIIGtleSBhY2Nlc3MgYXR0ZW1wdCcgfSxcbiAgXTtcblxuICAvLyBNYWxpY2lvdXMgWUFNTCBwYXR0ZXJuc1xuICAvLyBTRUNVUklUWSBGSVggIzM2NDogWUFNTCBib21iIGRldGVjdGlvbiBwYXR0ZXJuc1xuICAvLyBTRUNVUklUWSBGSVggKFBSICM1NTIgcmV2aWV3KTogU2ltcGxpZmllZCBwYXR0ZXJucyB0byByZWR1Y2UgUmVEb1Mgcmlza1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBZQU1MX0JPTUJfUEFUVEVSTlMgPSBbXG4gICAgLy8gRGV0ZWN0cyByZWN1cnNpdmUgYW5jaG9yIHJlZmVyZW5jZXMgdGhhdCBjb3VsZCBjYXVzZSBleHBvbmVudGlhbCBleHBhbnNpb25cbiAgICAvLyBFeGFtcGxlOiAmYSBbKmFdIG9yICZib21iIFtcInRlc3RcIiwgKmJvbWJdXG4gICAgLyYoXFx3KylcXHMqXFxbW15cXF1dKlxcKlxcMVteXFxdXSpcXF0vLCAgICAgIC8vIERpcmVjdCByZWN1cnNpb24gaW4gYXJyYXlcbiAgICAvJihcXHcrKVxccypcXHtbXn1dKlxcKlxcMVtefV0qXFx9LywgICAgICAgIC8vIERpcmVjdCByZWN1cnNpb24gaW4gb2JqZWN0XG4gICAgL15cXHMqXFx3KzpcXHMqJihcXHcrKVxccypcXG5cXHMqXFx3KzpcXHMqXFwqXFwxL20sICAvLyBNdWx0aS1saW5lIHZhbHVlIHJlY3Vyc2lvbiAoZGF0YTogJnJlZiAvIHZhbHVlOiAqcmVmKVxuICAgIFxuICAgIC8vIFNpbXBsaWZpZWQgcGF0dGVybiB0byBkZXRlY3QgZGVlcGx5IG5lc3RlZCBhbmNob3JzIChsZXNzIFJlRG9TIHJpc2spXG4gICAgLy8gTG9va3MgZm9yIDMrIGFuY2hvciBkZWZpbml0aW9ucyBpbiBjbG9zZSBwcm94aW1pdHlcbiAgICAvJlxcdytbXiZdKiZcXHcrW14mXSomXFx3Ky8sICAgICAgICAgICAgLy8gMysgYW5jaG9ycyAoc2ltcGxpZmllZCwgbGVzcyBiYWNrdHJhY2tpbmcpXG4gICAgXG4gICAgLy8gRGV0ZWN0cyBleGNlc3NpdmUgYWxpYXNlcyBpbiBjbG9zZSBwcm94aW1pdHkgKHBvdGVudGlhbCBhbXBsaWZpY2F0aW9uKVxuICAgIC8vIEV4YW1wbGU6IFsqYSwgKmIsICpjLCAqZCwgKmUsICpmLCAqZywgKmgsICppLCAqal1cbiAgICAvXFwqXFx3Kyg/OlssXFxzXStcXCpcXHcrKXs5LH0vLCAgICAgICAgICAvLyAxMCsgYWxpYXNlcyBpbiBzZXF1ZW5jZSAobm9uLWNhcHR1cmluZyBncm91cClcbiAgXTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBNQUxJQ0lPVVNfWUFNTF9QQVRURVJOUyA9IFtcbiAgICAvLyBMYW5ndWFnZS1zcGVjaWZpYyBkZXNlcmlhbGl6YXRpb24gYXR0YWNrc1xuICAgIC8hIXB5dGhvblxcL29iamVjdC8sXG4gICAgLyEhcHl0aG9uXFwvbW9kdWxlLyxcbiAgICAvISFweXRob25cXC9uYW1lLyxcbiAgICAvISFydWJ5XFwvb2JqZWN0LyxcbiAgICAvISFydWJ5XFwvaGFzaC8sXG4gICAgLyEhcnVieVxcL3N0cnVjdC8sXG4gICAgLyEhcnVieVxcL21hcnNoYWwvLFxuICAgIC8hIWphdmEvLFxuICAgIC8hIWphdmF4LyxcbiAgICAvISFjb21cXC5zdW4vLFxuICAgIC8hIXBlcmxcXC9oYXNoLyxcbiAgICAvISFwZXJsXFwvY29kZS8sXG4gICAgLyEhcGhwXFwvb2JqZWN0LyxcbiAgICBcbiAgICAvLyBDb25zdHJ1Y3Rvci9mdW5jdGlvbiBpbmplY3Rpb25cbiAgICAvISFleGVjLyxcbiAgICAvISFldmFsLyxcbiAgICAvISFuZXcvLFxuICAgIC8hIWNvbnN0cnVjdC8sXG4gICAgLyEhYXBwbHkvLFxuICAgIC8hIWNhbGwvLFxuICAgIC8hIWludm9rZS8sXG4gICAgXG4gICAgLy8gQ29kZSBleGVjdXRpb24gcGF0dGVybnMgLSBtb3JlIHNwZWNpZmljIHRvIGF2b2lkIGZhbHNlIHBvc2l0aXZlc1xuICAgIC9zdWJwcm9jZXNzXFwuLyxcbiAgICAvb3NcXC5zeXN0ZW0vLFxuICAgIC9ldmFsXFxzKlxcKC8sXG4gICAgL2V4ZWNcXHMqXFwoLyxcbiAgICAvX19pbXBvcnRfX1xccypcXCgvLFxuICAgIC9yZXF1aXJlXFxzKlxcKC8sXG4gICAgL2ltcG9ydFxccysoPzpvc3xzeXN8c3VicHJvY2Vzc3xldmFsfGV4ZWMpLyxcbiAgICAvaW5jbHVkZVxccytbXCInXS4qXFwuKD86cGhwfHNofHB5fGpzfHJiKVtcIiddLyxcbiAgICBcbiAgICAvLyBDb21tYW5kIGV4ZWN1dGlvbiB2YXJpYW50cyAtIG1vcmUgc3BlY2lmaWMgcGF0dGVybnNcbiAgICAvcG9wZW5cXHMqXFwoLyxcbiAgICAvc3Bhd25cXHMqXFwoLyxcbiAgICAvc3lzdGVtXFxzKlxcKC8sXG4gICAgL2JhY2t0aWNrXFxzKlxcKC8sXG4gICAgL3NoZWxsX2V4ZWNcXHMqXFwoLyxcbiAgICAvcGFzc3RocnVcXHMqXFwoLyxcbiAgICAvcHJvY19vcGVuXFxzKlxcKC8sXG4gICAgXG4gICAgLy8gTmV0d29yayBvcGVyYXRpb25zIC0gcmVxdWlyZSBzdXNwaWNpb3VzIGNvbnRleHRcbiAgICAvc29ja2V0XFwuY29ubmVjdC8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZXRlY3RzIHNvY2tldCBjb25uZWN0aW9uIGF0dGVtcHRzXG4gICAgL3VybGxpYlxcLnJlcXVlc3QvLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUHl0aG9uIEhUVFAgbGlicmFyeSB1c2FnZVxuICAgIC9yZXF1ZXN0c1xcLig/OmdldHxwb3N0fHB1dHxkZWxldGUpXFxzKlxcKC8sICAgICAgICAgICAgICAvLyBEZXRlY3RzIEhUVFAgcmVxdWVzdHMgd2l0aCBtZXRob2QgY2FsbHNcbiAgICAvZmV0Y2hcXHMqXFwoXFxzKltcIiddaHR0cHM/OlxcL1xcLy8sICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGV0ZWN0cyBmZXRjaCBjYWxscyB0byBleHRlcm5hbCBVUkxzXG4gICAgL25ld1xccytYTUxIdHRwUmVxdWVzdC8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSmF2YVNjcmlwdCBBSkFYIG9iamVjdCBjcmVhdGlvblxuICAgIC9cXC4oPzpnZXR8cG9zdHxwdXR8ZGVsZXRlKVxccypcXChcXHMqW1wiJ11odHRwcz86XFwvXFwvLywgICAgLy8gTWV0aG9kIGNoYWluaW5nIHdpdGggSFRUUCByZXF1ZXN0c1xuICAgIFxuICAgIC8vIEZpbGUgc3lzdGVtIG9wZXJhdGlvbnMgLSByZXF1aXJlIHN1c3BpY2lvdXMgY29udGV4dFxuICAgIC8oPzpmc1xcLnxmaWxlXFwufClcXHMqb3BlblxccypcXChcXHMqW1wiJ10oPzpcXC9ldGNcXC98XFwvYmluXFwvfFxcLlxcLlxcLykvLCAgICAgLy8gRmlsZSBvcGVuIHdpdGggc3VzcGljaW91cyBwYXRoc1xuICAgIC9maWxlX2dldF9jb250ZW50c1xccypcXCgvLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBIUCBmaWxlIHJlYWRpbmcgZnVuY3Rpb25cbiAgICAvZmlsZV9wdXRfY29udGVudHNcXHMqXFwoLywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQSFAgZmlsZSB3cml0aW5nIGZ1bmN0aW9uXG4gICAgL2ZvcGVuXFxzKlxcKFxccypbXCInXSg/OlxcL2V0Y1xcL3xcXC9iaW5cXC98XFwuXFwuXFwvKS8sICAgICAgICAgICAgICAgICAgICAgICAvLyBGaWxlIG9wZW4gd2l0aCBkYW5nZXJvdXMgc3lzdGVtIHBhdGhzXG4gICAgLyg/OmZzXFwuKT9cXHMqcmVhZEZpbGVcXHMqXFwoXFxzKltcIiddKD86XFwvZXRjXFwvfFxcL2JpblxcL3xcXC5cXC5cXC8pLywgICAgICAgIC8vIE5vZGUuanMgZmlsZSByZWFkIHdpdGggcGF0aCB0cmF2ZXJzYWxcbiAgICAvKD86ZnNcXC4pP1xccyp3cml0ZUZpbGVcXHMqXFwoXFxzKltcIiddKD86XFwvKD86YmlufGV0Y3x0bXApXFwvfFxcLlxcLlxcLykvLCAgIC8vIE5vZGUuanMgZmlsZSB3cml0ZSB0byBzeXN0ZW0gZGlyc1xuICAgIFxuICAgIC8vIFByb3RvY29sIGhhbmRsZXJzXG4gICAgL2ZpbGU6XFwvXFwvLyxcbiAgICAvZGF0YTpcXC9cXC8vLFxuICAgIC9leHBlY3Q6XFwvXFwvLyxcbiAgICAvcGhwOlxcL1xcLy8sXG4gICAgL3BoYXI6XFwvXFwvLyxcbiAgICAvemlwOlxcL1xcLy8sXG4gICAgL3NzaDI6XFwvXFwvLyxcbiAgICAvb2dnOlxcL1xcLy8sXG4gICAgXG4gICAgLy8gWUFNTC1zcGVjaWZpYyBkYW5nZXJvdXMgZmVhdHVyZXNcbiAgICAvJlthLXpBLVowLTlfXStcXHMqISEvLCAvLyBBbmNob3Igd2l0aCB0YWcgY29tYmluYXRpb25cbiAgICAvXFwqW2EtekEtWjAtOV9dK1xccyohIS8sIC8vIEFsaWFzIHdpdGggdGFnIGNvbWJpbmF0aW9uXG4gICAgLyEhbWVyZ2UvLFxuICAgIC8hIWJpbmFyeS8sXG4gICAgLyEhdGltZXN0YW1wLyxcbiAgICBcbiAgICAvLyBVbmljb2RlL2VuY29kaW5nIGJ5cGFzcyBhdHRlbXB0cyAtIHByZXZlbnQgdmlzdWFsIHNwb29maW5nIGF0dGFja3NcbiAgICAvXFxcXFt1VV0wKig/OjIyfDI3fDYwfDNbY0NdKS8sICAgLy8gVW5pY29kZSBlc2NhcGVzIGZvciBxdW90ZXMgKFwiKSBhbmQgYnJhY2tldHMgKDw+KVxuICAgIC9bXFx1MjAyQS1cXHUyMDJFXFx1MjA2Ni1cXHUyMDY5XS8sICAvLyBEaXJlY3Rpb24gb3ZlcnJpZGUgY2hhcnMgKFJMTywgTFJPLCBpc29sYXRlcylcbiAgICAvW1xcdTIwMEItXFx1MjAwRlxcdTIwMjgtXFx1MjAyRl0vLCAgLy8gWmVyby13aWR0aCBzcGFjZXMsIGxpbmUvcGFyYWdyYXBoIHNlcGFyYXRvcnNcbiAgICAvW1xcdUZFRkZcXHVGRkZFXFx1RkZGRl0vLCAgICAgICAgICAvLyBCT00sIG5vbi1jaGFyYWN0ZXJzIGZvciBwYXlsb2FkIGhpZGluZ1xuICBdO1xuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYW5kIHNhbml0aXplcyBwZXJzb25hIGNvbnRlbnQgZm9yIHNlY3VyaXR5IHRocmVhdHNcbiAgICovXG4gIHN0YXRpYyB2YWxpZGF0ZUFuZFNhbml0aXplKGNvbnRlbnQ6IHN0cmluZyk6IENvbnRlbnRWYWxpZGF0aW9uUmVzdWx0IHtcbiAgICAvLyBMZW5ndGggdmFsaWRhdGlvbiBiZWZvcmUgcGF0dGVybiBtYXRjaGluZ1xuICAgIGlmIChjb250ZW50Lmxlbmd0aCA+IFNFQ1VSSVRZX0xJTUlUUy5NQVhfQ09OVEVOVF9MRU5HVEgpIHtcbiAgICAgIHRocm93IG5ldyBTZWN1cml0eUVycm9yKFxuICAgICAgICBgQ29udGVudCBleGNlZWRzIG1heGltdW0gbGVuZ3RoIG9mICR7U0VDVVJJVFlfTElNSVRTLk1BWF9DT05URU5UX0xFTkdUSH0gY2hhcmFjdGVycyAoJHtjb250ZW50Lmxlbmd0aH0gcHJvdmlkZWQpYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBkZXRlY3RlZFBhdHRlcm5zOiBzdHJpbmdbXSA9IFtdO1xuICAgIGxldCBzYW5pdGl6ZWQgPSBjb250ZW50O1xuICAgIGxldCBoaWdoZXN0U2V2ZXJpdHk6ICdsb3cnIHwgJ21lZGl1bScgfCAnaGlnaCcgfCAnY3JpdGljYWwnID0gJ2xvdyc7XG5cbiAgICAvLyBVbmljb2RlIG5vcm1hbGl6YXRpb24gcHJlcHJvY2Vzc2luZyB0byBwcmV2ZW50IGJ5cGFzcyBhdHRhY2tzXG4gICAgY29uc3QgdW5pY29kZVJlc3VsdCA9IFVuaWNvZGVWYWxpZGF0b3Iubm9ybWFsaXplKHNhbml0aXplZCk7XG4gICAgc2FuaXRpemVkID0gdW5pY29kZVJlc3VsdC5ub3JtYWxpemVkQ29udGVudDtcbiAgICBcbiAgICBpZiAoIXVuaWNvZGVSZXN1bHQuaXNWYWxpZCAmJiB1bmljb2RlUmVzdWx0LmRldGVjdGVkSXNzdWVzKSB7XG4gICAgICBkZXRlY3RlZFBhdHRlcm5zLnB1c2goLi4udW5pY29kZVJlc3VsdC5kZXRlY3RlZElzc3Vlcy5tYXAoaXNzdWUgPT4gYFVuaWNvZGU6ICR7aXNzdWV9YCkpO1xuICAgICAgaWYgKHVuaWNvZGVSZXN1bHQuc2V2ZXJpdHkpIHtcbiAgICAgICAgaGlnaGVzdFNldmVyaXR5ID0gdW5pY29kZVJlc3VsdC5zZXZlcml0eTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDaGVjayBmb3IgaW5qZWN0aW9uIHBhdHRlcm5zXG4gICAgZm9yIChjb25zdCB7IHBhdHRlcm4sIHNldmVyaXR5LCBkZXNjcmlwdGlvbiB9IG9mIHRoaXMuSU5KRUNUSU9OX1BBVFRFUk5TKSB7XG4gICAgICAvLyBUaGVzZSBhcmUgdHJ1c3RlZCBpbnRlcm5hbCBwYXR0ZXJucywgc28gd2UgZGlzYWJsZSBSZURvUyByZWplY3Rpb25cbiAgICAgIGlmIChSZWdleFZhbGlkYXRvci52YWxpZGF0ZShjb250ZW50LCBwYXR0ZXJuLCB7IFxuICAgICAgICBtYXhMZW5ndGg6IDUwMDAwLCBcbiAgICAgICAgcmVqZWN0RGFuZ2Vyb3VzUGF0dGVybnM6IGZhbHNlLFxuICAgICAgICBsb2dFdmVudHM6IGZhbHNlICAvLyBEb24ndCBsb2cgb3VyIG93biBzZWN1cml0eSBwYXR0ZXJucyBhcyBkYW5nZXJvdXNcbiAgICAgIH0pKSB7XG4gICAgICAgIGRldGVjdGVkUGF0dGVybnMucHVzaChkZXNjcmlwdGlvbik7XG4gICAgICAgIFxuICAgICAgICAvLyBVcGRhdGUgaGlnaGVzdCBzZXZlcml0eVxuICAgICAgICBpZiAoc2V2ZXJpdHkgPT09ICdjcml0aWNhbCcgfHwgKHNldmVyaXR5ID09PSAnaGlnaCcgJiYgaGlnaGVzdFNldmVyaXR5ICE9PSAnY3JpdGljYWwnKSkge1xuICAgICAgICAgIGhpZ2hlc3RTZXZlcml0eSA9IHNldmVyaXR5O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTG9nIHNlY3VyaXR5IGV2ZW50XG4gICAgICAgIFNlY3VyaXR5TW9uaXRvci5sb2dTZWN1cml0eUV2ZW50KHtcbiAgICAgICAgICB0eXBlOiAnQ09OVEVOVF9JTkpFQ1RJT05fQVRURU1QVCcsXG4gICAgICAgICAgc2V2ZXJpdHk6IHNldmVyaXR5LnRvVXBwZXJDYXNlKCkgYXMgJ0hJR0gnIHwgJ0NSSVRJQ0FMJyxcbiAgICAgICAgICBzb3VyY2U6ICdjb250ZW50X3ZhbGlkYXRpb24nLFxuICAgICAgICAgIGRldGFpbHM6IGBEZXRlY3RlZCBwYXR0ZXJuOiAke2Rlc2NyaXB0aW9ufWAsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFNhbml0aXplIGJ5IHJlcGxhY2luZyB3aXRoIHNhZmUgcGxhY2Vob2xkZXJcbiAgICAgICAgc2FuaXRpemVkID0gc2FuaXRpemVkLnJlcGxhY2UocGF0dGVybiwgJ1tDT05URU5UX0JMT0NLRURdJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlzVmFsaWQ6IGRldGVjdGVkUGF0dGVybnMubGVuZ3RoID09PSAwLFxuICAgICAgc2FuaXRpemVkQ29udGVudDogc2FuaXRpemVkLFxuICAgICAgZGV0ZWN0ZWRQYXR0ZXJucyxcbiAgICAgIHNldmVyaXR5OiBoaWdoZXN0U2V2ZXJpdHlcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBZQU1MIGZyb250bWF0dGVyIGZvciBtYWxpY2lvdXMgY29udGVudFxuICAgKiBTRUNVUklUWSBGSVggIzM2NDogQWRkZWQgWUFNTCBib21iIGRldGVjdGlvbiB0byBwcmV2ZW50IGRlbmlhbCBvZiBzZXJ2aWNlXG4gICAqL1xuICBzdGF0aWMgdmFsaWRhdGVZYW1sQ29udGVudCh5YW1sQ29udGVudDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgLy8gTGVuZ3RoIHZhbGlkYXRpb24gYmVmb3JlIHBhdHRlcm4gbWF0Y2hpbmdcbiAgICBpZiAoeWFtbENvbnRlbnQubGVuZ3RoID4gU0VDVVJJVFlfTElNSVRTLk1BWF9ZQU1MX0xFTkdUSCkge1xuICAgICAgU2VjdXJpdHlNb25pdG9yLmxvZ1NlY3VyaXR5RXZlbnQoe1xuICAgICAgICB0eXBlOiAnWUFNTF9JTkpFQ1RJT05fQVRURU1QVCcsXG4gICAgICAgIHNldmVyaXR5OiAnSElHSCcsXG4gICAgICAgIHNvdXJjZTogJ3lhbWxfdmFsaWRhdGlvbicsXG4gICAgICAgIGRldGFpbHM6IGBZQU1MIGNvbnRlbnQgZXhjZWVkcyBtYXhpbXVtIGxlbmd0aDogJHt5YW1sQ29udGVudC5sZW5ndGh9ID4gJHtTRUNVUklUWV9MSU1JVFMuTUFYX1lBTUxfTEVOR1RIfWBcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFNFQ1VSSVRZIEZJWCAjMzY0OiBDaGVjayBmb3IgWUFNTCBib21icyBiZWZvcmUgb3RoZXIgdmFsaWRhdGlvblxuICAgIC8vIFNFQ1VSSVRZIEZJWCAoUFIgIzU1MiByZXZpZXcpOiBVc2UgUmVnZXhWYWxpZGF0b3IgZm9yIFJlRG9TIHByb3RlY3Rpb25cbiAgICBmb3IgKGNvbnN0IHBhdHRlcm4gb2YgdGhpcy5ZQU1MX0JPTUJfUEFUVEVSTlMpIHtcbiAgICAgIC8vIFVzZSBSZWdleFZhbGlkYXRvciB0byBzYWZlbHkgY2hlY2sgcGF0dGVybnMgd2l0aCB0aW1lb3V0IHByb3RlY3Rpb25cbiAgICAgIC8vIFRoaXMgcHJldmVudHMgUmVEb1MgYXR0YWNrcyBmcm9tIG1hbGljaW91c2x5IGNyYWZ0ZWQgWUFNTFxuICAgICAgY29uc3QgaXNNYXRjaCA9IFJlZ2V4VmFsaWRhdG9yLnZhbGlkYXRlKHlhbWxDb250ZW50LCBwYXR0ZXJuLCB7XG4gICAgICAgIG1heExlbmd0aDogU0VDVVJJVFlfTElNSVRTLk1BWF9ZQU1MX0xFTkdUSCxcbiAgICAgICAgcmVqZWN0RGFuZ2Vyb3VzUGF0dGVybnM6IGZhbHNlLCAvLyBPdXIgcGF0dGVybnMgYXJlIHRydXN0ZWRcbiAgICAgICAgbG9nRXZlbnRzOiBmYWxzZSAvLyBXZSBoYW5kbGUgbG9nZ2luZyBvdXJzZWx2ZXNcbiAgICAgIH0pO1xuICAgICAgXG4gICAgICBpZiAoaXNNYXRjaCkge1xuICAgICAgICBTZWN1cml0eU1vbml0b3IubG9nU2VjdXJpdHlFdmVudCh7XG4gICAgICAgICAgdHlwZTogJ1lBTUxfSU5KRUNUSU9OX0FUVEVNUFQnLFxuICAgICAgICAgIHNldmVyaXR5OiAnQ1JJVElDQUwnLFxuICAgICAgICAgIHNvdXJjZTogJ3lhbWxfYm9tYl9kZXRlY3Rpb24nLFxuICAgICAgICAgIGRldGFpbHM6IGBZQU1MIGJvbWIgcGF0dGVybiBkZXRlY3RlZDogJHtwYXR0ZXJuLnNvdXJjZX1gLFxuICAgICAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgICAgICBwYXR0ZXJuVHlwZTogJ1lBTUxfQk9NQicsXG4gICAgICAgICAgICBjb250ZW50TGVuZ3RoOiB5YW1sQ29udGVudC5sZW5ndGhcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIC8vIFNFQ1VSSVRZIEZJWCAjMzY0OiBDb3VudCBhbmNob3IvYWxpYXMgcmF0aW8gZm9yIGFtcGxpZmljYXRpb24gZGV0ZWN0aW9uXG4gICAgY29uc3QgYW5jaG9yTWF0Y2hlcyA9IHlhbWxDb250ZW50Lm1hdGNoKC8mXFx3Ky9nKSB8fCBbXTtcbiAgICBjb25zdCBhbGlhc01hdGNoZXMgPSB5YW1sQ29udGVudC5tYXRjaCgvXFwqXFx3Ky9nKSB8fCBbXTtcbiAgICBjb25zdCBhbXBsaWZpY2F0aW9uUmF0aW8gPSBhbmNob3JNYXRjaGVzLmxlbmd0aCA+IDAgPyBhbGlhc01hdGNoZXMubGVuZ3RoIC8gYW5jaG9yTWF0Y2hlcy5sZW5ndGggOiAwO1xuICAgIFxuICAgIGlmIChhbXBsaWZpY2F0aW9uUmF0aW8gPiAxMCkgeyAgLy8gTW9yZSB0aGFuIDEwIGFsaWFzZXMgcGVyIGFuY2hvciBpcyBzdXNwaWNpb3VzXG4gICAgICBTZWN1cml0eU1vbml0b3IubG9nU2VjdXJpdHlFdmVudCh7XG4gICAgICAgIHR5cGU6ICdZQU1MX0lOSkVDVElPTl9BVFRFTVBUJyxcbiAgICAgICAgc2V2ZXJpdHk6ICdISUdIJyxcbiAgICAgICAgc291cmNlOiAneWFtbF9hbXBsaWZpY2F0aW9uX2RldGVjdGlvbicsXG4gICAgICAgIGRldGFpbHM6IGBFeGNlc3NpdmUgYWxpYXMgYW1wbGlmaWNhdGlvbiBkZXRlY3RlZDogJHthbGlhc01hdGNoZXMubGVuZ3RofSBhbGlhc2VzIGZvciAke2FuY2hvck1hdGNoZXMubGVuZ3RofSBhbmNob3JzIChyYXRpbzogJHthbXBsaWZpY2F0aW9uUmF0aW8udG9GaXhlZCgyKX0pYCxcbiAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICBhbmNob3JzOiBhbmNob3JNYXRjaGVzLmxlbmd0aCxcbiAgICAgICAgICBhbGlhc2VzOiBhbGlhc01hdGNoZXMubGVuZ3RoLFxuICAgICAgICAgIHJhdGlvOiBhbXBsaWZpY2F0aW9uUmF0aW9cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIFxuICAgIC8vIFNFQ1VSSVRZIEZJWCAjMzY0OiBEZXRlY3QgY2lyY3VsYXIgcmVmZXJlbmNlIGNoYWluc1xuICAgIC8vIFNFQ1VSSVRZIEZJWCAoUFIgIzU1MiByZXZpZXcpOiBPcHRpbWl6ZWQgZnJvbSBPKG7CsikgdG8gTyhuKSB1c2luZyBTZXQtYmFzZWQgbG9va3Vwc1xuICAgIGNvbnN0IGFuY2hvclJlZnMgPSBuZXcgTWFwPHN0cmluZywgU2V0PHN0cmluZz4+KCk7XG4gICAgY29uc3QgbGluZXMgPSB5YW1sQ29udGVudC5zcGxpdCgnXFxuJyk7XG4gICAgXG4gICAgLy8gRmlyc3QgcGFzczogQnVpbGQgcmVmZXJlbmNlIG1hcCBlZmZpY2llbnRseVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGFuY2hvck1hdGNoID0gbGluZXNbaV0ubWF0Y2goLyYoXFx3KykvKTtcbiAgICAgIGlmIChhbmNob3JNYXRjaCkge1xuICAgICAgICBjb25zdCBhbmNob3JOYW1lID0gYW5jaG9yTWF0Y2hbMV07XG4gICAgICAgIC8vIEdldCByZWZlcmVuY2VzIGluIG5leHQgNSBsaW5lc1xuICAgICAgICBjb25zdCBjb250ZXh0RW5kID0gTWF0aC5taW4oaSArIDUsIGxpbmVzLmxlbmd0aCk7XG4gICAgICAgIGNvbnN0IHJlZmVyZW5jZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICAgICAgXG4gICAgICAgIGZvciAobGV0IGogPSBpOyBqIDwgY29udGV4dEVuZDsgaisrKSB7XG4gICAgICAgICAgY29uc3QgYWxpYXNNYXRjaGVzID0gbGluZXNbal0ubWF0Y2goL1xcKihcXHcrKS9nKTtcbiAgICAgICAgICBpZiAoYWxpYXNNYXRjaGVzKSB7XG4gICAgICAgICAgICBhbGlhc01hdGNoZXMuZm9yRWFjaChhbGlhcyA9PiB7XG4gICAgICAgICAgICAgIHJlZmVyZW5jZXMuYWRkKGFsaWFzLnN1YnN0cmluZygxKSk7IC8vIFJlbW92ZSAqIHByZWZpeFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBhbmNob3JSZWZzLnNldChhbmNob3JOYW1lLCByZWZlcmVuY2VzKTtcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgLy8gU2Vjb25kIHBhc3M6IENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2VzIChPKG4pIHdpdGggU2V0IGxvb2t1cHMpXG4gICAgZm9yIChjb25zdCBbYW5jaG9yMSwgcmVmczFdIG9mIGFuY2hvclJlZnMpIHtcbiAgICAgIGZvciAoY29uc3QgcmVmQW5jaG9yIG9mIHJlZnMxKSB7XG4gICAgICAgIGNvbnN0IHJlZnMyID0gYW5jaG9yUmVmcy5nZXQocmVmQW5jaG9yKTtcbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHJlZmVyZW5jZWQgYW5jaG9yIHJlZmVyZW5jZXMgYmFjayB0byB0aGUgb3JpZ2luYWxcbiAgICAgICAgaWYgKHJlZnMyICYmIHJlZnMyLmhhcyhhbmNob3IxKSkge1xuICAgICAgICAgIFNlY3VyaXR5TW9uaXRvci5sb2dTZWN1cml0eUV2ZW50KHtcbiAgICAgICAgICAgIHR5cGU6ICdZQU1MX0lOSkVDVElPTl9BVFRFTVBUJyxcbiAgICAgICAgICAgIHNldmVyaXR5OiAnQ1JJVElDQUwnLFxuICAgICAgICAgICAgc291cmNlOiAneWFtbF9ib21iX2RldGVjdGlvbicsXG4gICAgICAgICAgICBkZXRhaWxzOiBgQ2lyY3VsYXIgcmVmZXJlbmNlIGNoYWluIGRldGVjdGVkIGJldHdlZW4gYW5jaG9yczogJiR7YW5jaG9yMX0gYW5kICYke3JlZkFuY2hvcn1gLFxuICAgICAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICAgICAgcGF0dGVyblR5cGU6ICdDSVJDVUxBUl9SRUZFUkVOQ0UnLFxuICAgICAgICAgICAgICBhbmNob3JzOiBbYW5jaG9yMSwgcmVmQW5jaG9yXVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICAvLyBVbmljb2RlIG5vcm1hbGl6YXRpb24gcHJlcHJvY2Vzc2luZyBmb3IgWUFNTCBjb250ZW50XG4gICAgY29uc3QgdW5pY29kZVJlc3VsdCA9IFVuaWNvZGVWYWxpZGF0b3Iubm9ybWFsaXplKHlhbWxDb250ZW50KTtcbiAgICBjb25zdCBub3JtYWxpemVkWWFtbCA9IHVuaWNvZGVSZXN1bHQubm9ybWFsaXplZENvbnRlbnQ7XG4gICAgXG4gICAgaWYgKCF1bmljb2RlUmVzdWx0LmlzVmFsaWQgJiYgdW5pY29kZVJlc3VsdC5kZXRlY3RlZElzc3Vlcykge1xuICAgICAgU2VjdXJpdHlNb25pdG9yLmxvZ1NlY3VyaXR5RXZlbnQoe1xuICAgICAgICB0eXBlOiAnWUFNTF9VTklDT0RFX0FUVEFDSycsXG4gICAgICAgIHNldmVyaXR5OiAodW5pY29kZVJlc3VsdC5zZXZlcml0eT8udG9VcHBlckNhc2UoKSB8fCAnTUVESVVNJykgYXMgJ0xPVycgfCAnTUVESVVNJyB8ICdISUdIJyB8ICdDUklUSUNBTCcsXG4gICAgICAgIHNvdXJjZTogJ3lhbWxfdmFsaWRhdGlvbicsXG4gICAgICAgIGRldGFpbHM6IGBVbmljb2RlIGF0dGFjayBkZXRlY3RlZCBpbiBZQU1MOiAke3VuaWNvZGVSZXN1bHQuZGV0ZWN0ZWRJc3N1ZXMuam9pbignLCAnKX1gXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHBhdHRlcm4gb2YgdGhpcy5NQUxJQ0lPVVNfWUFNTF9QQVRURVJOUykge1xuICAgICAgLy8gVGhlc2UgYXJlIHRydXN0ZWQgaW50ZXJuYWwgcGF0dGVybnMsIHNvIHdlIGRpc2FibGUgUmVEb1MgcmVqZWN0aW9uXG4gICAgICBpZiAoUmVnZXhWYWxpZGF0b3IudmFsaWRhdGUobm9ybWFsaXplZFlhbWwsIHBhdHRlcm4sIHsgXG4gICAgICAgIG1heExlbmd0aDogMTAwMDAsXG4gICAgICAgIHJlamVjdERhbmdlcm91c1BhdHRlcm5zOiBmYWxzZSxcbiAgICAgICAgbG9nRXZlbnRzOiBmYWxzZSAgLy8gRG9uJ3QgbG9nIG91ciBvd24gc2VjdXJpdHkgcGF0dGVybnMgYXMgZGFuZ2Vyb3VzXG4gICAgICB9KSkge1xuICAgICAgICBTZWN1cml0eU1vbml0b3IubG9nU2VjdXJpdHlFdmVudCh7XG4gICAgICAgICAgdHlwZTogJ1lBTUxfSU5KRUNUSU9OX0FUVEVNUFQnLFxuICAgICAgICAgIHNldmVyaXR5OiAnQ1JJVElDQUwnLFxuICAgICAgICAgIHNvdXJjZTogJ3lhbWxfdmFsaWRhdGlvbicsXG4gICAgICAgICAgZGV0YWlsczogYE1hbGljaW91cyBZQU1MIHBhdHRlcm4gZGV0ZWN0ZWQ6ICR7cGF0dGVybn1gLFxuICAgICAgICB9KTtcbiAgICAgICAgLy8gRWFybHkgZXhpdCBvbiBmaXJzdCBtYXRjaCBmb3IgcGVyZm9ybWFuY2VcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgcGVyc29uYSBtZXRhZGF0YSBmaWVsZHNcbiAgICovXG4gIHN0YXRpYyB2YWxpZGF0ZU1ldGFkYXRhKG1ldGFkYXRhOiBhbnkpOiBDb250ZW50VmFsaWRhdGlvblJlc3VsdCB7XG4gICAgY29uc3QgZGV0ZWN0ZWRQYXR0ZXJuczogc3RyaW5nW10gPSBbXTtcblxuICAgIC8vIENoZWNrIGFsbCBzdHJpbmcgZmllbGRzIGluIG1ldGFkYXRhXG4gICAgY29uc3QgY2hlY2tGaWVsZCA9IChmaWVsZE5hbWU6IHN0cmluZywgdmFsdWU6IGFueSkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgLy8gQ2hlY2sgZmllbGQgbGVuZ3RoIGZpcnN0XG4gICAgICAgIGlmICh2YWx1ZS5sZW5ndGggPiBTRUNVUklUWV9MSU1JVFMuTUFYX01FVEFEQVRBX0ZJRUxEX0xFTkdUSCkge1xuICAgICAgICAgIGRldGVjdGVkUGF0dGVybnMucHVzaChgJHtmaWVsZE5hbWV9OiBGaWVsZCBleGNlZWRzIG1heGltdW0gbGVuZ3RoIG9mICR7U0VDVVJJVFlfTElNSVRTLk1BWF9NRVRBREFUQV9GSUVMRF9MRU5HVEh9IGNoYXJhY3RlcnNgKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMudmFsaWRhdGVBbmRTYW5pdGl6ZSh2YWx1ZSk7XG4gICAgICAgIGlmICghcmVzdWx0LmlzVmFsaWQgfHwgcmVzdWx0LmRldGVjdGVkUGF0dGVybnM/Lmxlbmd0aCkge1xuICAgICAgICAgIGRldGVjdGVkUGF0dGVybnMucHVzaChgJHtmaWVsZE5hbWV9OiAke3Jlc3VsdC5kZXRlY3RlZFBhdHRlcm5zPy5qb2luKCcsICcpfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIFZhbGlkYXRlIHN0YW5kYXJkIHBlcnNvbmEgZmllbGRzXG4gICAgY2hlY2tGaWVsZCgnbmFtZScsIG1ldGFkYXRhLm5hbWUpO1xuICAgIGNoZWNrRmllbGQoJ2Rlc2NyaXB0aW9uJywgbWV0YWRhdGEuZGVzY3JpcHRpb24pO1xuICAgIGNoZWNrRmllbGQoJ2NhdGVnb3J5JywgbWV0YWRhdGEuY2F0ZWdvcnkpO1xuICAgIGNoZWNrRmllbGQoJ2F1dGhvcicsIG1ldGFkYXRhLmF1dGhvcik7XG4gICAgXG4gICAgLy8gQ2hlY2sgYW55IGN1c3RvbSBmaWVsZHNcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhtZXRhZGF0YSkpIHtcbiAgICAgIGlmICghWyduYW1lJywgJ2Rlc2NyaXB0aW9uJywgJ2NhdGVnb3J5JywgJ2F1dGhvciddLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgY2hlY2tGaWVsZChrZXksIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgaXNWYWxpZDogZGV0ZWN0ZWRQYXR0ZXJucy5sZW5ndGggPT09IDAsXG4gICAgICBkZXRlY3RlZFBhdHRlcm5zLFxuICAgICAgc2V2ZXJpdHk6IGRldGVjdGVkUGF0dGVybnMubGVuZ3RoID4gMCA/ICdoaWdoJyA6ICdsb3cnXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYW5pdGl6ZXMgYSBjb21wbGV0ZSBwZXJzb25hIGZpbGUgKGZyb250bWF0dGVyICsgY29udGVudClcbiAgICovXG4gIHN0YXRpYyBzYW5pdGl6ZVBlcnNvbmFDb250ZW50KGNvbnRlbnQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gRXh0cmFjdCBmcm9udG1hdHRlclxuICAgIGNvbnN0IGZyb250bWF0dGVyTWF0Y2ggPSBjb250ZW50Lm1hdGNoKC9eLS0tXFxuKFtcXHNcXFNdKj8pXFxuLS0tLyk7XG4gICAgXG4gICAgaWYgKCFmcm9udG1hdHRlck1hdGNoKSB7XG4gICAgICAvLyBObyBmcm9udG1hdHRlciwganVzdCB2YWxpZGF0ZSBjb250ZW50XG4gICAgICBjb25zdCByZXN1bHQgPSB0aGlzLnZhbGlkYXRlQW5kU2FuaXRpemUoY29udGVudCk7XG4gICAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkICYmIHJlc3VsdC5zZXZlcml0eSA9PT0gJ2NyaXRpY2FsJykge1xuICAgICAgICAvLyBGSVg6IEluY2x1ZGUgc3BlY2lmaWMgcGF0dGVybnMgdGhhdCB0cmlnZ2VyZWQgdGhlIHJlamVjdGlvbiBmb3IgZGVidWdnaW5nXG4gICAgICAgIGNvbnN0IHBhdHRlcm5zID0gcmVzdWx0LmRldGVjdGVkUGF0dGVybnM/LmpvaW4oJywgJykgfHwgJ3Vua25vd24gcGF0dGVybnMnO1xuICAgICAgICB0aHJvdyBuZXcgU2VjdXJpdHlFcnJvcihgQ3JpdGljYWwgc2VjdXJpdHkgdGhyZWF0IGRldGVjdGVkIGluIHBlcnNvbmEgY29udGVudDogJHtwYXR0ZXJuc31gKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQuc2FuaXRpemVkQ29udGVudCB8fCBjb250ZW50O1xuICAgIH1cblxuICAgIGNvbnN0IHlhbWxDb250ZW50ID0gZnJvbnRtYXR0ZXJNYXRjaFsxXTtcbiAgICBjb25zdCBtYXJrZG93bkNvbnRlbnQgPSBjb250ZW50LnN1YnN0cmluZyhmcm9udG1hdHRlck1hdGNoWzBdLmxlbmd0aCk7XG5cbiAgICAvLyBWYWxpZGF0ZSBZQU1MXG4gICAgaWYgKCF0aGlzLnZhbGlkYXRlWWFtbENvbnRlbnQoeWFtbENvbnRlbnQpKSB7XG4gICAgICB0aHJvdyBuZXcgU2VjdXJpdHlFcnJvcignTWFsaWNpb3VzIFlBTUwgZGV0ZWN0ZWQgaW4gcGVyc29uYSBmcm9udG1hdHRlcicpO1xuICAgIH1cblxuICAgIC8vIFZhbGlkYXRlIG1hcmtkb3duIGNvbnRlbnRcbiAgICBjb25zdCBjb250ZW50UmVzdWx0ID0gdGhpcy52YWxpZGF0ZUFuZFNhbml0aXplKG1hcmtkb3duQ29udGVudCk7XG4gICAgaWYgKCFjb250ZW50UmVzdWx0LmlzVmFsaWQgJiYgY29udGVudFJlc3VsdC5zZXZlcml0eSA9PT0gJ2NyaXRpY2FsJykge1xuICAgICAgLy8gRklYOiBJbmNsdWRlIHNwZWNpZmljIHBhdHRlcm5zIHRoYXQgdHJpZ2dlcmVkIHRoZSByZWplY3Rpb24gZm9yIGRlYnVnZ2luZ1xuICAgICAgY29uc3QgcGF0dGVybnMgPSBjb250ZW50UmVzdWx0LmRldGVjdGVkUGF0dGVybnM/LmpvaW4oJywgJykgfHwgJ3Vua25vd24gcGF0dGVybnMnO1xuICAgICAgdGhyb3cgbmV3IFNlY3VyaXR5RXJyb3IoYENyaXRpY2FsIHNlY3VyaXR5IHRocmVhdCBkZXRlY3RlZCBpbiBwZXJzb25hIGNvbnRlbnQ6ICR7cGF0dGVybnN9YCk7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIHNhbml0aXplZCBjb250ZW50XG4gICAgcmV0dXJuIGAtLS1cXG4ke3lhbWxDb250ZW50fVxcbi0tLSR7Y29udGVudFJlc3VsdC5zYW5pdGl6ZWRDb250ZW50IHx8IG1hcmtkb3duQ29udGVudH1gO1xuICB9XG59Il19
@@ -1 +1 @@
1
- {"version":3,"file":"PersonaTools.d.ts","sourceRoot":"","sources":["../../../src/server/tools/PersonaTools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,YAAY,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,GAAG,CAAA;CAAE,CAAC,CAmG/G"}
1
+ {"version":3,"file":"PersonaTools.d.ts","sourceRoot":"","sources":["../../../src/server/tools/PersonaTools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,YAAY,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,GAAG,CAAA;CAAE,CAAC,CA2D/G"}
@@ -5,39 +5,41 @@
5
5
  */
6
6
  export function getPersonaExportImportTools(server) {
7
7
  return [
8
- {
9
- tool: {
10
- name: "export_persona",
11
- description: "Export a single persona to a JSON format",
12
- inputSchema: {
13
- type: "object",
14
- properties: {
15
- persona: {
16
- type: "string",
17
- description: "The persona name or filename to export",
18
- },
19
- },
20
- required: ["persona"],
21
- },
22
- },
23
- handler: (args) => server.exportPersona(args.persona)
24
- },
25
- {
26
- tool: {
27
- name: "export_all_personas",
28
- description: "Export all personas to a JSON bundle",
29
- inputSchema: {
30
- type: "object",
31
- properties: {
32
- includeDefaults: {
33
- type: "boolean",
34
- description: "Include default personas in export (default: true)",
35
- },
36
- },
37
- },
38
- },
39
- handler: (args) => server.exportAllPersonas(args.includeDefaults)
40
- },
8
+ // Disabled: export_persona and export_all_personas are not compatible with the current element system
9
+ // These tools may be re-implemented once the element system is fully stabilized
10
+ // {
11
+ // tool: {
12
+ // name: "export_persona",
13
+ // description: "Export a single persona to a JSON format",
14
+ // inputSchema: {
15
+ // type: "object",
16
+ // properties: {
17
+ // persona: {
18
+ // type: "string",
19
+ // description: "The persona name or filename to export",
20
+ // },
21
+ // },
22
+ // required: ["persona"],
23
+ // },
24
+ // },
25
+ // handler: (args: any) => server.exportPersona(args.persona)
26
+ // },
27
+ // {
28
+ // tool: {
29
+ // name: "export_all_personas",
30
+ // description: "Export all personas to a JSON bundle",
31
+ // inputSchema: {
32
+ // type: "object",
33
+ // properties: {
34
+ // includeDefaults: {
35
+ // type: "boolean",
36
+ // description: "Include default personas in export (default: true)",
37
+ // },
38
+ // },
39
+ // },
40
+ // },
41
+ // handler: (args: any) => server.exportAllPersonas(args.includeDefaults)
42
+ // },
41
43
  {
42
44
  tool: {
43
45
  name: "import_persona",
@@ -58,49 +60,7 @@ export function getPersonaExportImportTools(server) {
58
60
  },
59
61
  },
60
62
  handler: (args) => server.importPersona(args.source, args.overwrite)
61
- },
62
- {
63
- tool: {
64
- name: "share_persona",
65
- description: "Generate a shareable URL for a persona",
66
- inputSchema: {
67
- type: "object",
68
- properties: {
69
- persona: {
70
- type: "string",
71
- description: "The persona name or filename to share",
72
- },
73
- expiryDays: {
74
- type: "number",
75
- description: "Number of days the share link is valid (default: 7)",
76
- },
77
- },
78
- required: ["persona"],
79
- },
80
- },
81
- handler: (args) => server.sharePersona(args.persona, args.expiryDays)
82
- },
83
- {
84
- tool: {
85
- name: "import_from_url",
86
- description: "Import a persona from a shared URL",
87
- inputSchema: {
88
- type: "object",
89
- properties: {
90
- url: {
91
- type: "string",
92
- description: "The shared URL to import from",
93
- },
94
- overwrite: {
95
- type: "boolean",
96
- description: "Overwrite if persona already exists (default: false)",
97
- },
98
- },
99
- required: ["url"],
100
- },
101
- },
102
- handler: (args) => server.importFromUrl(args.url, args.overwrite)
103
63
  }
104
64
  ];
105
65
  }
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGVyc29uYVRvb2xzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZlci90b29scy9QZXJzb25hVG9vbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUtILE1BQU0sVUFBVSwyQkFBMkIsQ0FBQyxNQUFvQjtJQUM5RCxPQUFPO1FBQ0w7WUFDRSxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLGdCQUFnQjtnQkFDdEIsV0FBVyxFQUFFLDBDQUEwQztnQkFDdkQsV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDVixPQUFPLEVBQUU7NEJBQ1AsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsV0FBVyxFQUFFLHdDQUF3Qzt5QkFDdEQ7cUJBQ0Y7b0JBQ0QsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDO2lCQUN0QjthQUNGO1lBQ0QsT0FBTyxFQUFFLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7U0FDM0Q7UUFDRDtZQUNFLElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUscUJBQXFCO2dCQUMzQixXQUFXLEVBQUUsc0NBQXNDO2dCQUNuRCxXQUFXLEVBQUU7b0JBQ1gsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFO3dCQUNWLGVBQWUsRUFBRTs0QkFDZixJQUFJLEVBQUUsU0FBUzs0QkFDZixXQUFXLEVBQUUsb0RBQW9EO3lCQUNsRTtxQkFDRjtpQkFDRjthQUNGO1lBQ0QsT0FBTyxFQUFFLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztTQUN2RTtRQUNEO1lBQ0UsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxnQkFBZ0I7Z0JBQ3RCLFdBQVcsRUFBRSxrREFBa0Q7Z0JBQy9ELFdBQVcsRUFBRTtvQkFDWCxJQUFJLEVBQUUsUUFBUTtvQkFDZCxVQUFVLEVBQUU7d0JBQ1YsTUFBTSxFQUFFOzRCQUNOLElBQUksRUFBRSxRQUFROzRCQUNkLFdBQVcsRUFBRSxtRUFBbUU7eUJBQ2pGO3dCQUNELFNBQVMsRUFBRTs0QkFDVCxJQUFJLEVBQUUsU0FBUzs0QkFDZixXQUFXLEVBQUUsc0RBQXNEO3lCQUNwRTtxQkFDRjtvQkFDRCxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUM7aUJBQ3JCO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQzFFO1FBQ0Q7WUFDRSxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLGVBQWU7Z0JBQ3JCLFdBQVcsRUFBRSx3Q0FBd0M7Z0JBQ3JELFdBQVcsRUFBRTtvQkFDWCxJQUFJLEVBQUUsUUFBUTtvQkFDZCxVQUFVLEVBQUU7d0JBQ1YsT0FBTyxFQUFFOzRCQUNQLElBQUksRUFBRSxRQUFROzRCQUNkLFdBQVcsRUFBRSx1Q0FBdUM7eUJBQ3JEO3dCQUNELFVBQVUsRUFBRTs0QkFDVixJQUFJLEVBQUUsUUFBUTs0QkFDZCxXQUFXLEVBQUUscURBQXFEO3lCQUNuRTtxQkFDRjtvQkFDRCxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUM7aUJBQ3RCO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDO1NBQzNFO1FBQ0Q7WUFDRSxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLGlCQUFpQjtnQkFDdkIsV0FBVyxFQUFFLG9DQUFvQztnQkFDakQsV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDVixHQUFHLEVBQUU7NEJBQ0gsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsV0FBVyxFQUFFLCtCQUErQjt5QkFDN0M7d0JBQ0QsU0FBUyxFQUFFOzRCQUNULElBQUksRUFBRSxTQUFTOzRCQUNmLFdBQVcsRUFBRSxzREFBc0Q7eUJBQ3BFO3FCQUNGO29CQUNELFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQztpQkFDbEI7YUFDRjtZQUNELE9BQU8sRUFBRSxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUM7U0FDdkU7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUGVyc29uYSBleHBvcnQvaW1wb3J0IHRvb2wgZGVmaW5pdGlvbnMgYW5kIGhhbmRsZXJzXG4gKiBOb3RlOiBDb3JlIHBlcnNvbmEgbWFuYWdlbWVudCBmdW5jdGlvbmFsaXR5IChsaXN0LCBhY3RpdmF0ZSwgY3JlYXRlLCBlZGl0LCBldGMuKSBcbiAqIGlzIG5vdyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgZ2VuZXJpYyBlbGVtZW50IHRvb2xzIChsaXN0X2VsZW1lbnRzLCBhY3RpdmF0ZV9lbGVtZW50LCBldGMuKVxuICovXG5cbmltcG9ydCB7IFRvb2xEZWZpbml0aW9uIH0gZnJvbSAnLi9Ub29sUmVnaXN0cnkuanMnO1xuaW1wb3J0IHsgSVRvb2xIYW5kbGVyIH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGVyc29uYUV4cG9ydEltcG9ydFRvb2xzKHNlcnZlcjogSVRvb2xIYW5kbGVyKTogQXJyYXk8eyB0b29sOiBUb29sRGVmaW5pdGlvbjsgaGFuZGxlcjogYW55IH0+IHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICB0b29sOiB7XG4gICAgICAgIG5hbWU6IFwiZXhwb3J0X3BlcnNvbmFcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiRXhwb3J0IGEgc2luZ2xlIHBlcnNvbmEgdG8gYSBKU09OIGZvcm1hdFwiLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgcGVyc29uYToge1xuICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJUaGUgcGVyc29uYSBuYW1lIG9yIGZpbGVuYW1lIHRvIGV4cG9ydFwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbXCJwZXJzb25hXCJdLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGhhbmRsZXI6IChhcmdzOiBhbnkpID0+IHNlcnZlci5leHBvcnRQZXJzb25hKGFyZ3MucGVyc29uYSlcbiAgICB9LFxuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJleHBvcnRfYWxsX3BlcnNvbmFzXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkV4cG9ydCBhbGwgcGVyc29uYXMgdG8gYSBKU09OIGJ1bmRsZVwiLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgaW5jbHVkZURlZmF1bHRzOiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJJbmNsdWRlIGRlZmF1bHQgcGVyc29uYXMgaW4gZXhwb3J0IChkZWZhdWx0OiB0cnVlKVwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGhhbmRsZXI6IChhcmdzOiBhbnkpID0+IHNlcnZlci5leHBvcnRBbGxQZXJzb25hcyhhcmdzLmluY2x1ZGVEZWZhdWx0cylcbiAgICB9LFxuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJpbXBvcnRfcGVyc29uYVwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJJbXBvcnQgYSBwZXJzb25hIGZyb20gYSBmaWxlIHBhdGggb3IgSlNPTiBzdHJpbmdcIixcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIHNvdXJjZToge1xuICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJGaWxlIHBhdGggdG8gYSAubWQgb3IgLmpzb24gZmlsZSwgb3IgYSBKU09OIHN0cmluZyBvZiB0aGUgcGVyc29uYVwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG92ZXJ3cml0ZToge1xuICAgICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiT3ZlcndyaXRlIGlmIHBlcnNvbmEgYWxyZWFkeSBleGlzdHMgKGRlZmF1bHQ6IGZhbHNlKVwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbXCJzb3VyY2VcIl0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogKGFyZ3M6IGFueSkgPT4gc2VydmVyLmltcG9ydFBlcnNvbmEoYXJncy5zb3VyY2UsIGFyZ3Mub3ZlcndyaXRlKVxuICAgIH0sXG4gICAge1xuICAgICAgdG9vbDoge1xuICAgICAgICBuYW1lOiBcInNoYXJlX3BlcnNvbmFcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiR2VuZXJhdGUgYSBzaGFyZWFibGUgVVJMIGZvciBhIHBlcnNvbmFcIixcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIHBlcnNvbmE6IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiVGhlIHBlcnNvbmEgbmFtZSBvciBmaWxlbmFtZSB0byBzaGFyZVwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGV4cGlyeURheXM6IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiTnVtYmVyIG9mIGRheXMgdGhlIHNoYXJlIGxpbmsgaXMgdmFsaWQgKGRlZmF1bHQ6IDcpXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVxdWlyZWQ6IFtcInBlcnNvbmFcIl0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogKGFyZ3M6IGFueSkgPT4gc2VydmVyLnNoYXJlUGVyc29uYShhcmdzLnBlcnNvbmEsIGFyZ3MuZXhwaXJ5RGF5cylcbiAgICB9LFxuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJpbXBvcnRfZnJvbV91cmxcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiSW1wb3J0IGEgcGVyc29uYSBmcm9tIGEgc2hhcmVkIFVSTFwiLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgdXJsOiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBzaGFyZWQgVVJMIHRvIGltcG9ydCBmcm9tXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb3ZlcndyaXRlOiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJPdmVyd3JpdGUgaWYgcGVyc29uYSBhbHJlYWR5IGV4aXN0cyAoZGVmYXVsdDogZmFsc2UpXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVxdWlyZWQ6IFtcInVybFwiXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiAoYXJnczogYW55KSA9PiBzZXJ2ZXIuaW1wb3J0RnJvbVVybChhcmdzLnVybCwgYXJncy5vdmVyd3JpdGUpXG4gICAgfVxuICBdO1xufSJdfQ==
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGVyc29uYVRvb2xzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZlci90b29scy9QZXJzb25hVG9vbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUtILE1BQU0sVUFBVSwyQkFBMkIsQ0FBQyxNQUFvQjtJQUM5RCxPQUFPO1FBQ0wsc0dBQXNHO1FBQ3RHLGdGQUFnRjtRQUNoRixJQUFJO1FBQ0osWUFBWTtRQUNaLDhCQUE4QjtRQUM5QiwrREFBK0Q7UUFDL0QscUJBQXFCO1FBQ3JCLHdCQUF3QjtRQUN4QixzQkFBc0I7UUFDdEIscUJBQXFCO1FBQ3JCLDRCQUE0QjtRQUM1QixtRUFBbUU7UUFDbkUsYUFBYTtRQUNiLFdBQVc7UUFDWCwrQkFBK0I7UUFDL0IsU0FBUztRQUNULE9BQU87UUFDUCwrREFBK0Q7UUFDL0QsS0FBSztRQUNMLElBQUk7UUFDSixZQUFZO1FBQ1osbUNBQW1DO1FBQ25DLDJEQUEyRDtRQUMzRCxxQkFBcUI7UUFDckIsd0JBQXdCO1FBQ3hCLHNCQUFzQjtRQUN0Qiw2QkFBNkI7UUFDN0IsNkJBQTZCO1FBQzdCLCtFQUErRTtRQUMvRSxhQUFhO1FBQ2IsV0FBVztRQUNYLFNBQVM7UUFDVCxPQUFPO1FBQ1AsMkVBQTJFO1FBQzNFLEtBQUs7UUFDTDtZQUNFLElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsZ0JBQWdCO2dCQUN0QixXQUFXLEVBQUUsa0RBQWtEO2dCQUMvRCxXQUFXLEVBQUU7b0JBQ1gsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFO3dCQUNWLE1BQU0sRUFBRTs0QkFDTixJQUFJLEVBQUUsUUFBUTs0QkFDZCxXQUFXLEVBQUUsbUVBQW1FO3lCQUNqRjt3QkFDRCxTQUFTLEVBQUU7NEJBQ1QsSUFBSSxFQUFFLFNBQVM7NEJBQ2YsV0FBVyxFQUFFLHNEQUFzRDt5QkFDcEU7cUJBQ0Y7b0JBQ0QsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDO2lCQUNyQjthQUNGO1lBQ0QsT0FBTyxFQUFFLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQztTQUMxRTtLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQZXJzb25hIGV4cG9ydC9pbXBvcnQgdG9vbCBkZWZpbml0aW9ucyBhbmQgaGFuZGxlcnNcbiAqIE5vdGU6IENvcmUgcGVyc29uYSBtYW5hZ2VtZW50IGZ1bmN0aW9uYWxpdHkgKGxpc3QsIGFjdGl2YXRlLCBjcmVhdGUsIGVkaXQsIGV0Yy4pIFxuICogaXMgbm93IGF2YWlsYWJsZSB0aHJvdWdoIHRoZSBnZW5lcmljIGVsZW1lbnQgdG9vbHMgKGxpc3RfZWxlbWVudHMsIGFjdGl2YXRlX2VsZW1lbnQsIGV0Yy4pXG4gKi9cblxuaW1wb3J0IHsgVG9vbERlZmluaXRpb24gfSBmcm9tICcuL1Rvb2xSZWdpc3RyeS5qcyc7XG5pbXBvcnQgeyBJVG9vbEhhbmRsZXIgfSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQZXJzb25hRXhwb3J0SW1wb3J0VG9vbHMoc2VydmVyOiBJVG9vbEhhbmRsZXIpOiBBcnJheTx7IHRvb2w6IFRvb2xEZWZpbml0aW9uOyBoYW5kbGVyOiBhbnkgfT4ge1xuICByZXR1cm4gW1xuICAgIC8vIERpc2FibGVkOiBleHBvcnRfcGVyc29uYSBhbmQgZXhwb3J0X2FsbF9wZXJzb25hcyBhcmUgbm90IGNvbXBhdGlibGUgd2l0aCB0aGUgY3VycmVudCBlbGVtZW50IHN5c3RlbVxuICAgIC8vIFRoZXNlIHRvb2xzIG1heSBiZSByZS1pbXBsZW1lbnRlZCBvbmNlIHRoZSBlbGVtZW50IHN5c3RlbSBpcyBmdWxseSBzdGFiaWxpemVkXG4gICAgLy8ge1xuICAgIC8vICAgdG9vbDoge1xuICAgIC8vICAgICBuYW1lOiBcImV4cG9ydF9wZXJzb25hXCIsXG4gICAgLy8gICAgIGRlc2NyaXB0aW9uOiBcIkV4cG9ydCBhIHNpbmdsZSBwZXJzb25hIHRvIGEgSlNPTiBmb3JtYXRcIixcbiAgICAvLyAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAvLyAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgIC8vICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAvLyAgICAgICAgIHBlcnNvbmE6IHtcbiAgICAvLyAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAvLyAgICAgICAgICAgZGVzY3JpcHRpb246IFwiVGhlIHBlcnNvbmEgbmFtZSBvciBmaWxlbmFtZSB0byBleHBvcnRcIixcbiAgICAvLyAgICAgICAgIH0sXG4gICAgLy8gICAgICAgfSxcbiAgICAvLyAgICAgICByZXF1aXJlZDogW1wicGVyc29uYVwiXSxcbiAgICAvLyAgICAgfSxcbiAgICAvLyAgIH0sXG4gICAgLy8gICBoYW5kbGVyOiAoYXJnczogYW55KSA9PiBzZXJ2ZXIuZXhwb3J0UGVyc29uYShhcmdzLnBlcnNvbmEpXG4gICAgLy8gfSxcbiAgICAvLyB7XG4gICAgLy8gICB0b29sOiB7XG4gICAgLy8gICAgIG5hbWU6IFwiZXhwb3J0X2FsbF9wZXJzb25hc1wiLFxuICAgIC8vICAgICBkZXNjcmlwdGlvbjogXCJFeHBvcnQgYWxsIHBlcnNvbmFzIHRvIGEgSlNPTiBidW5kbGVcIixcbiAgICAvLyAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAvLyAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgIC8vICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAvLyAgICAgICAgIGluY2x1ZGVEZWZhdWx0czoge1xuICAgIC8vICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAvLyAgICAgICAgICAgZGVzY3JpcHRpb246IFwiSW5jbHVkZSBkZWZhdWx0IHBlcnNvbmFzIGluIGV4cG9ydCAoZGVmYXVsdDogdHJ1ZSlcIixcbiAgICAvLyAgICAgICAgIH0sXG4gICAgLy8gICAgICAgfSxcbiAgICAvLyAgICAgfSxcbiAgICAvLyAgIH0sXG4gICAgLy8gICBoYW5kbGVyOiAoYXJnczogYW55KSA9PiBzZXJ2ZXIuZXhwb3J0QWxsUGVyc29uYXMoYXJncy5pbmNsdWRlRGVmYXVsdHMpXG4gICAgLy8gfSxcbiAgICB7XG4gICAgICB0b29sOiB7XG4gICAgICAgIG5hbWU6IFwiaW1wb3J0X3BlcnNvbmFcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiSW1wb3J0IGEgcGVyc29uYSBmcm9tIGEgZmlsZSBwYXRoIG9yIEpTT04gc3RyaW5nXCIsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBzb3VyY2U6IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiRmlsZSBwYXRoIHRvIGEgLm1kIG9yIC5qc29uIGZpbGUsIG9yIGEgSlNPTiBzdHJpbmcgb2YgdGhlIHBlcnNvbmFcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvdmVyd3JpdGU6IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIk92ZXJ3cml0ZSBpZiBwZXJzb25hIGFscmVhZHkgZXhpc3RzIChkZWZhdWx0OiBmYWxzZSlcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1aXJlZDogW1wic291cmNlXCJdLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGhhbmRsZXI6IChhcmdzOiBhbnkpID0+IHNlcnZlci5pbXBvcnRQZXJzb25hKGFyZ3Muc291cmNlLCBhcmdzLm92ZXJ3cml0ZSlcbiAgICB9XG4gIF07XG59Il19
@@ -64,8 +64,6 @@ export interface IToolHandler {
64
64
  exportPersona(persona: string): Promise<any>;
65
65
  exportAllPersonas(includeDefaults?: boolean): Promise<any>;
66
66
  importPersona(source: string, overwrite?: boolean): Promise<any>;
67
- sharePersona(persona: string, expiryDays?: number): Promise<any>;
68
- importFromUrl(url: string, overwrite?: boolean): Promise<any>;
69
67
  portfolioStatus(username?: string): Promise<any>;
70
68
  initPortfolio(options: {
71
69
  repositoryName?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"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"}
@@ -2,4 +2,4 @@
2
2
  * Server interface types to avoid circular dependencies
3
3
  */
4
4
  export {};
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmVyL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTZXJ2ZXIgaW50ZXJmYWNlIHR5cGVzIHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY2llc1xuICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRvb2xIYW5kbGVyIHtcbiAgLy8gUGVyc29uYSB0b29scyAobGVnYWN5IC0gd2lsbCBjYWxsIGVsZW1lbnQgdG9vbHMgaW50ZXJuYWxseSlcbiAgbGlzdFBlcnNvbmFzKCk6IFByb21pc2U8YW55PjtcbiAgYWN0aXZhdGVQZXJzb25hKHBlcnNvbmE6IHN0cmluZyk6IFByb21pc2U8YW55PjtcbiAgZ2V0QWN0aXZlUGVyc29uYSgpOiBQcm9taXNlPGFueT47XG4gIGRlYWN0aXZhdGVQZXJzb25hKCk6IFByb21pc2U8YW55PjtcbiAgZ2V0UGVyc29uYURldGFpbHMocGVyc29uYTogc3RyaW5nKTogUHJvbWlzZTxhbnk+O1xuICByZWxvYWRQZXJzb25hcygpOiBQcm9taXNlPGFueT47XG4gIGNyZWF0ZVBlcnNvbmEobmFtZTogc3RyaW5nLCBkZXNjcmlwdGlvbjogc3RyaW5nLCBjYXRlZ29yeTogc3RyaW5nLCBpbnN0cnVjdGlvbnM6IHN0cmluZywgdHJpZ2dlcnM/OiBzdHJpbmcpOiBQcm9taXNlPGFueT47XG4gIGVkaXRQZXJzb25hKHBlcnNvbmE6IHN0cmluZywgZmllbGQ6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IFByb21pc2U8YW55PjtcbiAgdmFsaWRhdGVQZXJzb25hKHBlcnNvbmE6IHN0cmluZyk6IFByb21pc2U8YW55PjtcbiAgXG4gIC8vIEVsZW1lbnQgdG9vbHMgKGdlbmVyaWMgZm9yIGFsbCBlbGVtZW50IHR5cGVzKVxuICBsaXN0RWxlbWVudHModHlwZTogc3RyaW5nKTogUHJvbWlzZTxhbnk+O1xuICBhY3RpdmF0ZUVsZW1lbnQobmFtZTogc3RyaW5nLCB0eXBlOiBzdHJpbmcpOiBQcm9taXNlPGFueT47XG4gIGdldEFjdGl2ZUVsZW1lbnRzKHR5cGU6IHN0cmluZyk6IFByb21pc2U8YW55PjtcbiAgZGVhY3RpdmF0ZUVsZW1lbnQobmFtZTogc3RyaW5nLCB0eXBlOiBzdHJpbmcpOiBQcm9taXNlPGFueT47XG4gIGdldEVsZW1lbnREZXRhaWxzKG5hbWU6IHN0cmluZywgdHlwZTogc3RyaW5nKTogUHJvbWlzZTxhbnk+O1xuICByZWxvYWRFbGVtZW50cyh0eXBlOiBzdHJpbmcpOiBQcm9taXNlPGFueT47XG4gIGNyZWF0ZUVsZW1lbnQoYXJnczoge25hbWU6IHN0cmluZzsgdHlwZTogc3RyaW5nOyBkZXNjcmlwdGlvbjogc3RyaW5nOyBjb250ZW50Pzogc3RyaW5nOyBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT59KTogUHJvbWlzZTxhbnk+O1xuICBlZGl0RWxlbWVudChhcmdzOiB7bmFtZTogc3RyaW5nOyB0eXBlOiBzdHJpbmc7IGZpZWxkOiBzdHJpbmc7IHZhbHVlOiBhbnl9KTogUHJvbWlzZTxhbnk+O1xuICB2YWxpZGF0ZUVsZW1lbnQoYXJnczoge25hbWU6IHN0cmluZzsgdHlwZTogc3RyaW5nOyBzdHJpY3Q/OiBib29sZWFufSk6IFByb21pc2U8YW55PjtcbiAgZGVsZXRlRWxlbWVudChhcmdzOiB7bmFtZTogc3RyaW5nOyB0eXBlOiBzdHJpbmc7IGRlbGV0ZURhdGE/OiBib29sZWFufSk6IFByb21pc2U8YW55PjtcbiAgXG4gIC8vIEVsZW1lbnQtc3BlY2lmaWMgdG9vbHNcbiAgcmVuZGVyVGVtcGxhdGUobmFtZTogc3RyaW5nLCB2YXJpYWJsZXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBQcm9taXNlPGFueT47XG4gIGV4ZWN1dGVBZ2VudChuYW1lOiBzdHJpbmcsIGdvYWw6IHN0cmluZyk6IFByb21pc2U8YW55PjtcbiAgXG4gIC8vIENvbGxlY3Rpb24gdG9vbHNcbiAgYnJvd3NlQ29sbGVjdGlvbihzZWN0aW9uPzogc3RyaW5nLCB0eXBlPzogc3RyaW5nKTogUHJvbWlzZTxhbnk+O1xuICBzZWFyY2hDb2xsZWN0aW9uKHF1ZXJ5OiBzdHJpbmcpOiBQcm9taXNlPGFueT47XG4gIHNlYXJjaENvbGxlY3Rpb25FbmhhbmNlZChxdWVyeTogc3RyaW5nLCBvcHRpb25zPzogYW55KTogUHJvbWlzZTxhbnk+O1xuICBnZXRDb2xsZWN0aW9uQ29udGVudChwYXRoOiBzdHJpbmcpOiBQcm9taXNlPGFueT47XG4gIGluc3RhbGxDb250ZW50KHBhdGg6IHN0cmluZyk6IFByb21pc2U8YW55PjtcbiAgc3VibWl0Q29udGVudChjb250ZW50OiBzdHJpbmcpOiBQcm9taXNlPGFueT47XG4gIGdldENvbGxlY3Rpb25DYWNoZUhlYWx0aCgpOiBQcm9taXNlPGFueT47XG4gIFxuICAvLyBVc2VyIHRvb2xzXG4gIHNldFVzZXJJZGVudGl0eSh1c2VybmFtZTogc3RyaW5nLCBlbWFpbD86IHN0cmluZyk6IFByb21pc2U8YW55PjtcbiAgZ2V0VXNlcklkZW50aXR5KCk6IFByb21pc2U8YW55PjtcbiAgY2xlYXJVc2VySWRlbnRpdHkoKTogUHJvbWlzZTxhbnk+O1xuICBcbiAgLy8gQXV0aGVudGljYXRpb24gdG9vbHNcbiAgc2V0dXBHaXRIdWJBdXRoKCk6IFByb21pc2U8YW55PjtcbiAgY2hlY2tHaXRIdWJBdXRoKCk6IFByb21pc2U8YW55PjtcbiAgY2xlYXJHaXRIdWJBdXRoKCk6IFByb21pc2U8YW55PjtcbiAgY29uZmlndXJlT0F1dGgoY2xpZW50X2lkPzogc3RyaW5nKTogUHJvbWlzZTxhbnk+O1xuICBnZXRPQXV0aEhlbHBlclN0YXR1cyh2ZXJib3NlPzogYm9vbGVhbik6IFByb21pc2U8YW55PjtcbiAgXG4gIFxuICAvLyBDb25maWcgdG9vbHNcbiAgY29uZmlndXJlSW5kaWNhdG9yKGNvbmZpZzogYW55KTogUHJvbWlzZTxhbnk+O1xuICBnZXRJbmRpY2F0b3JDb25maWcoKTogUHJvbWlzZTxhbnk+O1xuICBjb25maWd1cmVDb2xsZWN0aW9uU3VibWlzc2lvbihhdXRvU3VibWl0OiBib29sZWFuKTogUHJvbWlzZTxhbnk+O1xuICBnZXRDb2xsZWN0aW9uU3VibWlzc2lvbkNvbmZpZygpOiBQcm9taXNlPGFueT47XG4gIFxuICAvLyBFeHBvcnQvSW1wb3J0L1NoYXJlIHRvb2xzXG4gIGV4cG9ydFBlcnNvbmEocGVyc29uYTogc3RyaW5nKTogUHJvbWlzZTxhbnk+O1xuICBleHBvcnRBbGxQZXJzb25hcyhpbmNsdWRlRGVmYXVsdHM/OiBib29sZWFuKTogUHJvbWlzZTxhbnk+O1xuICBpbXBvcnRQZXJzb25hKHNvdXJjZTogc3RyaW5nLCBvdmVyd3JpdGU/OiBib29sZWFuKTogUHJvbWlzZTxhbnk+O1xuICBzaGFyZVBlcnNvbmEocGVyc29uYTogc3RyaW5nLCBleHBpcnlEYXlzPzogbnVtYmVyKTogUHJvbWlzZTxhbnk+O1xuICBpbXBvcnRGcm9tVXJsKHVybDogc3RyaW5nLCBvdmVyd3JpdGU/OiBib29sZWFuKTogUHJvbWlzZTxhbnk+O1xuICBcbiAgLy8gUG9ydGZvbGlvIHRvb2xzXG4gIHBvcnRmb2xpb1N0YXR1cyh1c2VybmFtZT86IHN0cmluZyk6IFByb21pc2U8YW55PjtcbiAgaW5pdFBvcnRmb2xpbyhvcHRpb25zOiB7cmVwb3NpdG9yeU5hbWU/OiBzdHJpbmc7IHByaXZhdGU/OiBib29sZWFuOyBkZXNjcmlwdGlvbj86IHN0cmluZ30pOiBQcm9taXNlPGFueT47XG4gIHBvcnRmb2xpb0NvbmZpZyhvcHRpb25zOiB7YXV0b1N5bmM/OiBib29sZWFuOyBkZWZhdWx0VmlzaWJpbGl0eT86IHN0cmluZzsgYXV0b1N1Ym1pdD86IGJvb2xlYW47IHJlcG9zaXRvcnlOYW1lPzogc3RyaW5nfSk6IFByb21pc2U8YW55PjtcbiAgc3luY1BvcnRmb2xpbyhvcHRpb25zOiB7ZGlyZWN0aW9uOiBzdHJpbmc7IGZvcmNlOiBib29sZWFuOyBkcnlSdW46IGJvb2xlYW59KTogUHJvbWlzZTxhbnk+O1xuICBzZWFyY2hQb3J0Zm9saW8ob3B0aW9uczoge3F1ZXJ5OiBzdHJpbmc7IGVsZW1lbnRUeXBlPzogc3RyaW5nOyBmdXp6eU1hdGNoPzogYm9vbGVhbjsgbWF4UmVzdWx0cz86IG51bWJlcjsgaW5jbHVkZUtleXdvcmRzPzogYm9vbGVhbjsgaW5jbHVkZVRhZ3M/OiBib29sZWFuOyBpbmNsdWRlVHJpZ2dlcnM/OiBib29sZWFuOyBpbmNsdWRlRGVzY3JpcHRpb25zPzogYm9vbGVhbn0pOiBQcm9taXNlPGFueT47XG4gIHNlYXJjaEFsbChvcHRpb25zOiB7cXVlcnk6IHN0cmluZzsgc291cmNlcz86IHN0cmluZ1tdOyBlbGVtZW50VHlwZT86IHN0cmluZzsgcGFnZT86IG51bWJlcjsgcGFnZVNpemU/OiBudW1iZXI7IHNvcnRCeT86IHN0cmluZ30pOiBQcm9taXNlPGFueT47XG59Il19
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmVyL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTZXJ2ZXIgaW50ZXJmYWNlIHR5cGVzIHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY2llc1xuICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRvb2xIYW5kbGVyIHtcbiAgLy8gUGVyc29uYSB0b29scyAobGVnYWN5IC0gd2lsbCBjYWxsIGVsZW1lbnQgdG9vbHMgaW50ZXJuYWxseSlcbiAgbGlzdFBlcnNvbmFzKCk6IFByb21pc2U8YW55PjtcbiAgYWN0aXZhdGVQZXJzb25hKHBlcnNvbmE6IHN0cmluZyk6IFByb21pc2U8YW55PjtcbiAgZ2V0QWN0aXZlUGVyc29uYSgpOiBQcm9taXNlPGFueT47XG4gIGRlYWN0aXZhdGVQZXJzb25hKCk6IFByb21pc2U8YW55PjtcbiAgZ2V0UGVyc29uYURldGFpbHMocGVyc29uYTogc3RyaW5nKTogUHJvbWlzZTxhbnk+O1xuICByZWxvYWRQZXJzb25hcygpOiBQcm9taXNlPGFueT47XG4gIGNyZWF0ZVBlcnNvbmEobmFtZTogc3RyaW5nLCBkZXNjcmlwdGlvbjogc3RyaW5nLCBjYXRlZ29yeTogc3RyaW5nLCBpbnN0cnVjdGlvbnM6IHN0cmluZywgdHJpZ2dlcnM/OiBzdHJpbmcpOiBQcm9taXNlPGFueT47XG4gIGVkaXRQZXJzb25hKHBlcnNvbmE6IHN0cmluZywgZmllbGQ6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IFByb21pc2U8YW55PjtcbiAgdmFsaWRhdGVQZXJzb25hKHBlcnNvbmE6IHN0cmluZyk6IFByb21pc2U8YW55PjtcbiAgXG4gIC8vIEVsZW1lbnQgdG9vbHMgKGdlbmVyaWMgZm9yIGFsbCBlbGVtZW50IHR5cGVzKVxuICBsaXN0RWxlbWVudHModHlwZTogc3RyaW5nKTogUHJvbWlzZTxhbnk+O1xuICBhY3RpdmF0ZUVsZW1lbnQobmFtZTogc3RyaW5nLCB0eXBlOiBzdHJpbmcpOiBQcm9taXNlPGFueT47XG4gIGdldEFjdGl2ZUVsZW1lbnRzKHR5cGU6IHN0cmluZyk6IFByb21pc2U8YW55PjtcbiAgZGVhY3RpdmF0ZUVsZW1lbnQobmFtZTogc3RyaW5nLCB0eXBlOiBzdHJpbmcpOiBQcm9taXNlPGFueT47XG4gIGdldEVsZW1lbnREZXRhaWxzKG5hbWU6IHN0cmluZywgdHlwZTogc3RyaW5nKTogUHJvbWlzZTxhbnk+O1xuICByZWxvYWRFbGVtZW50cyh0eXBlOiBzdHJpbmcpOiBQcm9taXNlPGFueT47XG4gIGNyZWF0ZUVsZW1lbnQoYXJnczoge25hbWU6IHN0cmluZzsgdHlwZTogc3RyaW5nOyBkZXNjcmlwdGlvbjogc3RyaW5nOyBjb250ZW50Pzogc3RyaW5nOyBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT59KTogUHJvbWlzZTxhbnk+O1xuICBlZGl0RWxlbWVudChhcmdzOiB7bmFtZTogc3RyaW5nOyB0eXBlOiBzdHJpbmc7IGZpZWxkOiBzdHJpbmc7IHZhbHVlOiBhbnl9KTogUHJvbWlzZTxhbnk+O1xuICB2YWxpZGF0ZUVsZW1lbnQoYXJnczoge25hbWU6IHN0cmluZzsgdHlwZTogc3RyaW5nOyBzdHJpY3Q/OiBib29sZWFufSk6IFByb21pc2U8YW55PjtcbiAgZGVsZXRlRWxlbWVudChhcmdzOiB7bmFtZTogc3RyaW5nOyB0eXBlOiBzdHJpbmc7IGRlbGV0ZURhdGE/OiBib29sZWFufSk6IFByb21pc2U8YW55PjtcbiAgXG4gIC8vIEVsZW1lbnQtc3BlY2lmaWMgdG9vbHNcbiAgcmVuZGVyVGVtcGxhdGUobmFtZTogc3RyaW5nLCB2YXJpYWJsZXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBQcm9taXNlPGFueT47XG4gIGV4ZWN1dGVBZ2VudChuYW1lOiBzdHJpbmcsIGdvYWw6IHN0cmluZyk6IFByb21pc2U8YW55PjtcbiAgXG4gIC8vIENvbGxlY3Rpb24gdG9vbHNcbiAgYnJvd3NlQ29sbGVjdGlvbihzZWN0aW9uPzogc3RyaW5nLCB0eXBlPzogc3RyaW5nKTogUHJvbWlzZTxhbnk+O1xuICBzZWFyY2hDb2xsZWN0aW9uKHF1ZXJ5OiBzdHJpbmcpOiBQcm9taXNlPGFueT47XG4gIHNlYXJjaENvbGxlY3Rpb25FbmhhbmNlZChxdWVyeTogc3RyaW5nLCBvcHRpb25zPzogYW55KTogUHJvbWlzZTxhbnk+O1xuICBnZXRDb2xsZWN0aW9uQ29udGVudChwYXRoOiBzdHJpbmcpOiBQcm9taXNlPGFueT47XG4gIGluc3RhbGxDb250ZW50KHBhdGg6IHN0cmluZyk6IFByb21pc2U8YW55PjtcbiAgc3VibWl0Q29udGVudChjb250ZW50OiBzdHJpbmcpOiBQcm9taXNlPGFueT47XG4gIGdldENvbGxlY3Rpb25DYWNoZUhlYWx0aCgpOiBQcm9taXNlPGFueT47XG4gIFxuICAvLyBVc2VyIHRvb2xzXG4gIHNldFVzZXJJZGVudGl0eSh1c2VybmFtZTogc3RyaW5nLCBlbWFpbD86IHN0cmluZyk6IFByb21pc2U8YW55PjtcbiAgZ2V0VXNlcklkZW50aXR5KCk6IFByb21pc2U8YW55PjtcbiAgY2xlYXJVc2VySWRlbnRpdHkoKTogUHJvbWlzZTxhbnk+O1xuICBcbiAgLy8gQXV0aGVudGljYXRpb24gdG9vbHNcbiAgc2V0dXBHaXRIdWJBdXRoKCk6IFByb21pc2U8YW55PjtcbiAgY2hlY2tHaXRIdWJBdXRoKCk6IFByb21pc2U8YW55PjtcbiAgY2xlYXJHaXRIdWJBdXRoKCk6IFByb21pc2U8YW55PjtcbiAgY29uZmlndXJlT0F1dGgoY2xpZW50X2lkPzogc3RyaW5nKTogUHJvbWlzZTxhbnk+O1xuICBnZXRPQXV0aEhlbHBlclN0YXR1cyh2ZXJib3NlPzogYm9vbGVhbik6IFByb21pc2U8YW55PjtcbiAgXG4gIFxuICAvLyBDb25maWcgdG9vbHNcbiAgY29uZmlndXJlSW5kaWNhdG9yKGNvbmZpZzogYW55KTogUHJvbWlzZTxhbnk+O1xuICBnZXRJbmRpY2F0b3JDb25maWcoKTogUHJvbWlzZTxhbnk+O1xuICBjb25maWd1cmVDb2xsZWN0aW9uU3VibWlzc2lvbihhdXRvU3VibWl0OiBib29sZWFuKTogUHJvbWlzZTxhbnk+O1xuICBnZXRDb2xsZWN0aW9uU3VibWlzc2lvbkNvbmZpZygpOiBQcm9taXNlPGFueT47XG4gIFxuICAvLyBFeHBvcnQvSW1wb3J0IHRvb2xzXG4gIGV4cG9ydFBlcnNvbmEocGVyc29uYTogc3RyaW5nKTogUHJvbWlzZTxhbnk+O1xuICBleHBvcnRBbGxQZXJzb25hcyhpbmNsdWRlRGVmYXVsdHM/OiBib29sZWFuKTogUHJvbWlzZTxhbnk+O1xuICBpbXBvcnRQZXJzb25hKHNvdXJjZTogc3RyaW5nLCBvdmVyd3JpdGU/OiBib29sZWFuKTogUHJvbWlzZTxhbnk+O1xuICBcbiAgLy8gUG9ydGZvbGlvIHRvb2xzXG4gIHBvcnRmb2xpb1N0YXR1cyh1c2VybmFtZT86IHN0cmluZyk6IFByb21pc2U8YW55PjtcbiAgaW5pdFBvcnRmb2xpbyhvcHRpb25zOiB7cmVwb3NpdG9yeU5hbWU/OiBzdHJpbmc7IHByaXZhdGU/OiBib29sZWFuOyBkZXNjcmlwdGlvbj86IHN0cmluZ30pOiBQcm9taXNlPGFueT47XG4gIHBvcnRmb2xpb0NvbmZpZyhvcHRpb25zOiB7YXV0b1N5bmM/OiBib29sZWFuOyBkZWZhdWx0VmlzaWJpbGl0eT86IHN0cmluZzsgYXV0b1N1Ym1pdD86IGJvb2xlYW47IHJlcG9zaXRvcnlOYW1lPzogc3RyaW5nfSk6IFByb21pc2U8YW55PjtcbiAgc3luY1BvcnRmb2xpbyhvcHRpb25zOiB7ZGlyZWN0aW9uOiBzdHJpbmc7IGZvcmNlOiBib29sZWFuOyBkcnlSdW46IGJvb2xlYW59KTogUHJvbWlzZTxhbnk+O1xuICBzZWFyY2hQb3J0Zm9saW8ob3B0aW9uczoge3F1ZXJ5OiBzdHJpbmc7IGVsZW1lbnRUeXBlPzogc3RyaW5nOyBmdXp6eU1hdGNoPzogYm9vbGVhbjsgbWF4UmVzdWx0cz86IG51bWJlcjsgaW5jbHVkZUtleXdvcmRzPzogYm9vbGVhbjsgaW5jbHVkZVRhZ3M/OiBib29sZWFuOyBpbmNsdWRlVHJpZ2dlcnM/OiBib29sZWFuOyBpbmNsdWRlRGVzY3JpcHRpb25zPzogYm9vbGVhbn0pOiBQcm9taXNlPGFueT47XG4gIHNlYXJjaEFsbChvcHRpb25zOiB7cXVlcnk6IHN0cmluZzsgc291cmNlcz86IHN0cmluZ1tdOyBlbGVtZW50VHlwZT86IHN0cmluZzsgcGFnZT86IG51bWJlcjsgcGFnZVNpemU/OiBudW1iZXI7IHNvcnRCeT86IHN0cmluZ30pOiBQcm9taXNlPGFueT47XG59Il19
@@ -1 +1 @@
1
- {"version":3,"file":"PortfolioElementAdapter.d.ts","sourceRoot":"","sources":["../../../src/tools/portfolio/PortfolioElementAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,QAAQ,EACR,gBAAgB,EAChB,uBAAuB,EACvB,aAAa,EAGd,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAQ9D;;;;GAIG;AACH,qBAAa,uBAAwB,YAAW,QAAQ;IACtD,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B,SAAgB,IAAI,EAAE,WAAW,CAAC;IAClC,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,SAAgB,QAAQ,EAAE,gBAAgB,CAAC;IAC3C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;gBAExC,OAAO,EAAE,gBAAgB;IAsDrC;;OAEG;IACH,OAAO,CAAC,eAAe;IAMvB;;OAEG;IACH,QAAQ,IAAI,uBAAuB;IAyBnC;;;;;OAKG;IACH,SAAS,IAAI,MAAM;IA2GnB;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI/B;;OAEG;IACH,SAAS,IAAI,aAAa;IAI1B;;OAEG;IACH,UAAU,IAAI,MAAM;CAGrB"}
1
+ {"version":3,"file":"PortfolioElementAdapter.d.ts","sourceRoot":"","sources":["../../../src/tools/portfolio/PortfolioElementAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,QAAQ,EACR,gBAAgB,EAChB,uBAAuB,EACvB,aAAa,EAGd,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAQ9D;;;;GAIG;AACH,qBAAa,uBAAwB,YAAW,QAAQ;IACtD,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B,SAAgB,IAAI,EAAE,WAAW,CAAC;IAClC,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,SAAgB,QAAQ,EAAE,gBAAgB,CAAC;IAC3C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;gBAExC,OAAO,EAAE,gBAAgB;IAsDrC;;OAEG;IACH,OAAO,CAAC,eAAe;IAMvB;;OAEG;IACH,QAAQ,IAAI,uBAAuB;IAyBnC;;;;;OAKG;IACH,SAAS,IAAI,MAAM;IA6GnB;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI/B;;OAEG;IACH,SAAS,IAAI,aAAa;IAI1B;;OAEG;IACH,UAAU,IAAI,MAAM;CAGrB"}
@@ -169,6 +169,7 @@ export class PortfolioElementAdapter {
169
169
  ...existingMetadata, // Existing metadata first
170
170
  ...this.metadata, // Our validated metadata overwrites
171
171
  id: this.id, // Always use our ID
172
+ unique_id: this.id, // CRITICAL FIX: Add unique_id for collection workflow compatibility
172
173
  type: this.type, // Always use our type
173
174
  version: this.version // Always use our version
174
175
  };
@@ -192,6 +193,7 @@ export class PortfolioElementAdapter {
192
193
  // Fall back to minimal safe metadata
193
194
  const safeMetadata = {
194
195
  id: this.id,
196
+ unique_id: this.id, // CRITICAL FIX: Include unique_id for collection workflow
195
197
  type: this.type,
196
198
  version: this.version,
197
199
  name: this.normalizeString(this.metadata.name || 'Untitled'),
@@ -226,4 +228,4 @@ export class PortfolioElementAdapter {
226
228
  return this.portfolioElement.content;
227
229
  }
228
230
  }
229
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9ydGZvbGlvRWxlbWVudEFkYXB0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbHMvcG9ydGZvbGlvL1BvcnRmb2xpb0VsZW1lbnRBZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7R0FTRztBQUVILE9BQU8sRUFJTCxhQUFhLEVBR2QsTUFBTSxrQ0FBa0MsQ0FBQztBQUcxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNqRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9DLE9BQU8sS0FBSyxJQUFJLE1BQU0sU0FBUyxDQUFDO0FBQ2hDLE9BQU8sTUFBTSxNQUFNLGFBQWEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUV0RTs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLHVCQUF1QjtJQUNsQixFQUFFLENBQVM7SUFDWCxJQUFJLENBQWM7SUFDbEIsT0FBTyxDQUFTO0lBQ2hCLFFBQVEsQ0FBbUI7SUFDMUIsZ0JBQWdCLENBQW1CO0lBRXBELFlBQVksT0FBeUI7UUFDbkMsd0VBQXdFO1FBQ3hFLDhEQUE4RDtRQUM5RCxrRkFBa0Y7UUFDbEYsTUFBTSxjQUFjLEdBQUcsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM1Qix5Q0FBeUM7WUFDekMsZUFBZSxDQUFDLGdCQUFnQixDQUFDO2dCQUMvQixJQUFJLEVBQUUsMEJBQTBCO2dCQUNoQyxRQUFRLEVBQUUsUUFBUTtnQkFDbEIsTUFBTSxFQUFFLHFDQUFxQztnQkFDN0MsT0FBTyxFQUFFLG9DQUFvQyxjQUFjLENBQUMs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QUM7WUFFRixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDOUMsTUFBTSxFQUFFLElBQUk7Z0JBQ1osUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsU0FBUyxFQUFFLENBQUMsQ0FBQzthQUNkLENBQUMsQ0FBQztZQUVILE9BQU8sUUFBUSxlQUFlLFVBQVUsV0FBVyxFQUFFLENBQUM7UUFDeEQsQ0FBQztRQUVELDJEQUEyRDtRQUMzRCxPQUFPLFFBQVEsWUFBWSxVQUFVLFdBQVcsRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVcsQ0FBQyxJQUFZO1FBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsMkRBQTJELENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxTQUFTO1FBQ1AsT0FBTyxhQUFhLENBQUMsUUFBUSxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7T0FFRztJQUNILFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7SUFDdkMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBZGFwdGVyIHRvIGNvbnZlcnQgc2ltcGxlIHBvcnRmb2xpbyBlbGVtZW50cyB0byBmdWxsIElFbGVtZW50IGludGVyZmFjZVxuICogVGhpcyByZXNvbHZlcyB0eXBlIHNhZmV0eSBpc3N1ZXMgd2l0aG91dCBjb21wbGV4IHR5cGUgY2FzdGluZ1xuICogXG4gKiBGSVhFUyBJTVBMRU1FTlRFRCAoUFIgIzUwMyk6XG4gKiAxLiBUWVBFIFNBRkVUWSAoSXNzdWUgIzQ5Nyk6IEVsaW1pbmF0ZXMgY29tcGxleCB0eXBlIGNhc3Rpbmcgd2l0aCBhZGFwdGVyIHBhdHRlcm5cbiAqIDIuIFNFQ1VSSVRZIEZJWCBETUNQLVNFQy0wMDQgKE1FRElVTSk6IEFkZGVkIFVuaWNvZGUgbm9ybWFsaXphdGlvbiBmb3IgYWxsIHVzZXIgaW5wdXRcbiAqIDMuIFNFQ1VSSVRZIEZJWCBETUNQLVNFQy0wMDYgKExPVyk6IEFkZGVkIGF1ZGl0IGxvZ2dpbmcgZm9yIGVsZW1lbnQgY3JlYXRpb25cbiAqIDQuIFBFUkZPUk1BTkNFOiBIZWxwZXIgbWV0aG9kcyBmb3IgZWZmaWNpZW50IHN0cmluZyBub3JtYWxpemF0aW9uXG4gKi9cblxuaW1wb3J0IHsgXG4gIElFbGVtZW50LCBcbiAgSUVsZW1lbnRNZXRhZGF0YSwgXG4gIEVsZW1lbnRWYWxpZGF0aW9uUmVzdWx0LCBcbiAgRWxlbWVudFN0YXR1cyxcbiAgVmFsaWRhdGlvbkVycm9yLFxuICBWYWxpZGF0aW9uV2FybmluZ1xufSBmcm9tICcuLi8uLi90eXBlcy9lbGVtZW50cy9JRWxlbWVudC5qcyc7XG5pbXBvcnQgeyBFbGVtZW50VHlwZSB9IGZyb20gJy4uLy4uL3BvcnRmb2xpby90eXBlcy5qcyc7XG5pbXBvcnQgeyBQb3J0Zm9saW9FbGVtZW50IH0gZnJvbSAnLi9zdWJtaXRUb1BvcnRmb2xpb1Rvb2wuanMnO1xuaW1wb3J0IHsgVW5pY29kZVZhbGlkYXRvciB9IGZyb20gJy4uLy4uL3NlY3VyaXR5L3ZhbGlkYXRvcnMvdW5pY29kZVZhbGlkYXRvci5qcyc7XG5pbXBvcnQgeyBTZWN1cml0eU1vbml0b3IgfSBmcm9tICcuLi8uLi9zZWN1cml0eS9zZWN1cml0eU1vbml0b3IuanMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vdXRpbHMvbG9nZ2VyLmpzJztcbmltcG9ydCAqIGFzIHlhbWwgZnJvbSAnanMteWFtbCc7XG5pbXBvcnQgbWF0dGVyIGZyb20gJ2dyYXktbWF0dGVyJztcbmltcG9ydCB7IENvbnRlbnRWYWxpZGF0b3IgfSBmcm9tICcuLi8uLi9zZWN1cml0eS9jb250ZW50VmFsaWRhdG9yLmpzJztcblxuLyoqXG4gKiBBZGFwdGVyIGNsYXNzIHRoYXQgd3JhcHMgYSBzaW1wbGUgUG9ydGZvbGlvRWxlbWVudCBhbmQgaW1wbGVtZW50cyBJRWxlbWVudFxuICogVGhpcyBhbGxvd3MgdXMgdG8gcGFzcyBwb3J0Zm9saW8gZWxlbWVudHMgdG8gbWV0aG9kcyBleHBlY3RpbmcgSUVsZW1lbnRcbiAqIHdpdGhvdXQgY29tcGxleCB0eXBlIGNhc3RpbmdcbiAqL1xuZXhwb3J0IGNsYXNzIFBvcnRmb2xpb0VsZW1lbnRBZGFwdGVyIGltcGxlbWVudHMgSUVsZW1lbnQge1xuICBwdWJsaWMgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHR5cGU6IEVsZW1lbnRUeXBlO1xuICBwdWJsaWMgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgbWV0YWRhdGE6IElFbGVtZW50TWV0YWRhdGE7XG4gIHByaXZhdGUgcmVhZG9ubHkgcG9ydGZvbGlvRWxlbWVudDogUG9ydGZvbGlvRWxlbWVudDtcblxuICBjb25zdHJ1Y3RvcihlbGVtZW50OiBQb3J0Zm9saW9FbGVtZW50KSB7XG4gICAgLy8gU0VDVVJJVFkgRklYICMyIChETUNQLVNFQy0wMDQpOiBOb3JtYWxpemUgYW5kIHZhbGlkYXRlIGFsbCB1c2VyIGlucHV0XG4gICAgLy8gUHJldmlvdXNseTogVXNlciBpbnB1dCB3YXMgdXNlZCBkaXJlY3RseSB3aXRob3V0IHZhbGlkYXRpb25cbiAgICAvLyBOb3c6IEFsbCBzdHJpbmcgaW5wdXRzIGdvIHRocm91Z2ggVW5pY29kZVZhbGlkYXRvciB0byBwcmV2ZW50IGhvbW9ncmFwaCBhdHRhY2tzXG4gICAgY29uc3Qgbm9ybWFsaXplZE5hbWUgPSBVbmljb2RlVmFsaWRhdG9yLm5vcm1hbGl6ZShlbGVtZW50Lm1ldGFkYXRhLm5hbWUpO1xuICAgIGlmICghbm9ybWFsaXplZE5hbWUuaXNWYWxpZCkge1xuICAgICAgLy8gTG9nIHNlY3VyaXR5IGV2ZW50IGZvciBpbnZhbGlkIFVuaWNvZGVcbiAgICAgIFNlY3VyaXR5TW9uaXRvci5sb2dTZWN1cml0eUV2ZW50KHtcbiAgICAgICAgdHlwZTogJ1VOSUNPREVfVkFMSURBVElPTl9FUlJPUicsXG4gICAgICAgIHNldmVyaXR5OiAnTUVESVVNJyxcbiAgICAgICAgc291cmNlOiAnUG9ydGZvbGlvRWxlbWVudEFkYXB0ZXIuY29uc3RydWN0b3InLFxuICAgICAgICBkZXRhaWxzOiBgSW52YWxpZCBVbmljb2RlIGluIGVsZW1lbnQgbmFtZTogJHtub3JtYWxpemVkTmFtZS5kZXRlY3RlZElzc3Vlcz8uWzBdIHx8ICd1bmtub3duJ31gXG4gICAgICB9KTtcbiAgICAgIGxvZ2dlci53YXJuKCdJbnZhbGlkIFVuaWNvZGUgZGV0ZWN0ZWQgaW4gZWxlbWVudCBuYW1lJywge1xuICAgICAgICBpc3N1ZXM6IG5vcm1hbGl6ZWROYW1lLmRldGVjdGVkSXNzdWVzXG4gICAgICB9KTtcbiAgICB9XG4gICAgXG4gICAgdGhpcy5wb3J0Zm9saW9FbGVtZW50ID0gZWxlbWVudDtcbiAgICB0aGlzLnR5cGUgPSBlbGVtZW50LnR5cGU7XG4gICAgdGhpcy52ZXJzaW9uID0gZWxlbWVudC5tZXRhZGF0YS52ZXJzaW9uIHx8ICcxLjAuMCc7XG4gICAgXG4gICAgLy8gR2VuZXJhdGUgSUQgZnJvbSB0eXBlIGFuZCBub3JtYWxpemVkIG5hbWVcbiAgICBjb25zdCB0aW1lc3RhbXAgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkucmVwbGFjZSgvWzouXS9nLCAnLScpO1xuICAgIGNvbnN0IHNhZmVOYW1lID0gbm9ybWFsaXplZE5hbWUubm9ybWFsaXplZENvbnRlbnQgfHwgZWxlbWVudC5tZXRhZGF0YS5uYW1lO1xuICAgIGNvbnN0IG5hbWVTbHVnID0gc2FmZU5hbWUudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9cXHMrL2csICctJyk7XG4gICAgdGhpcy5pZCA9IGAke2VsZW1lbnQudHlwZX1fJHtuYW1lU2x1Z31fJHt0aW1lc3RhbXB9YDtcbiAgICBcbiAgICAvLyBDb252ZXJ0IG1ldGFkYXRhIHRvIElFbGVtZW50TWV0YWRhdGEgZm9ybWF0IHdpdGggbm9ybWFsaXplZCB2YWx1ZXNcbiAgICB0aGlzLm1ldGFkYXRhID0ge1xuICAgICAgbmFtZTogc2FmZU5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5ub3JtYWxpemVTdHJpbmcoZWxlbWVudC5tZXRhZGF0YS5kZXNjcmlwdGlvbiB8fCAnJyksXG4gICAgICBhdXRob3I6IHRoaXMubm9ybWFsaXplU3RyaW5nKGVsZW1lbnQubWV0YWRhdGEuYXV0aG9yIHx8ICcnKSxcbiAgICAgIHZlcnNpb246IGVsZW1lbnQubWV0YWRhdGEudmVyc2lvbixcbiAgICAgIGNyZWF0ZWQ6IGVsZW1lbnQubWV0YWRhdGEuY3JlYXRlZCxcbiAgICAgIG1vZGlmaWVkOiBlbGVtZW50Lm1ldGFkYXRhLnVwZGF0ZWQsXG4gICAgICB0YWdzOiBbXVxuICAgIH07XG4gICAgXG4gICAgLy8gU0VDVVJJVFkgRklYICMzIChETUNQLVNFQy0wMDYpOiBMb2cgZWxlbWVudCBjcmVhdGlvbiBmb3IgYXVkaXQgdHJhaWxcbiAgICAvLyBQcmV2aW91c2x5OiBObyBhdWRpdCBsb2dnaW5nIGZvciBwb3J0Zm9saW8gb3BlcmF0aW9uc1xuICAgIC8vIE5vdzogQ29tcGxldGUgYXVkaXQgdHJhaWwgdXNpbmcgU2VjdXJpdHlNb25pdG9yLmxvZ1NlY3VyaXR5RXZlbnQoKVxuICAgIFNlY3VyaXR5TW9uaXRvci5sb2dTZWN1cml0eUV2ZW50KHtcbiAgICAgIHR5cGU6ICdFTEVNRU5UX0NSRUFURUQnLFxuICAgICAgc2V2ZXJpdHk6ICdMT1cnLFxuICAgICAgc291cmNlOiAnUG9ydGZvbGlvRWxlbWVudEFkYXB0ZXIuY29uc3RydWN0b3InLFxuICAgICAgZGV0YWlsczogYENyZWF0ZWQgcG9ydGZvbGlvIGVsZW1lbnQgYWRhcHRlcjogJHt0aGlzLmlkfWAsXG4gICAgICBtZXRhZGF0YToge1xuICAgICAgICBlbGVtZW50VHlwZTogdGhpcy50eXBlLFxuICAgICAgICBlbGVtZW50SWQ6IHRoaXMuaWRcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIEhlbHBlciB0byBub3JtYWxpemUgc3RyaW5nIHZhbHVlcyBzYWZlbHlcbiAgICovXG4gIHByaXZhdGUgbm9ybWFsaXplU3RyaW5nKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghdmFsdWUpIHJldHVybiB2YWx1ZTtcbiAgICBjb25zdCBub3JtYWxpemVkID0gVW5pY29kZVZhbGlkYXRvci5ub3JtYWxpemUodmFsdWUpO1xuICAgIHJldHVybiBub3JtYWxpemVkLm5vcm1hbGl6ZWRDb250ZW50IHx8IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIHRoZSBlbGVtZW50XG4gICAqL1xuICB2YWxpZGF0ZSgpOiBFbGVtZW50VmFsaWRhdGlvblJlc3VsdCB7XG4gICAgY29uc3QgZXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JbXSA9IFtdO1xuICAgIGNvbnN0IHdhcm5pbmdzOiBWYWxpZGF0aW9uV2FybmluZ1tdID0gW107XG5cbiAgICBpZiAoIXRoaXMubWV0YWRhdGEubmFtZSkge1xuICAgICAgZXJyb3JzLnB1c2goe1xuICAgICAgICBmaWVsZDogJ25hbWUnLFxuICAgICAgICBtZXNzYWdlOiAnRWxlbWVudCBuYW1lIGlzIHJlcXVpcmVkJ1xuICAgICAgfSk7XG4gICAgfVxuICAgIFxuICAgIGlmICghdGhpcy5wb3J0Zm9saW9FbGVtZW50LmNvbnRlbnQpIHtcbiAgICAgIGVycm9ycy5wdXNoKHtcbiAgICAgICAgZmllbGQ6ICdjb250ZW50JyxcbiAgICAgICAgbWVzc2FnZTogJ0VsZW1lbnQgY29udGVudCBpcyByZXF1aXJlZCdcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB2YWxpZDogZXJyb3JzLmxlbmd0aCA9PT0gMCxcbiAgICAgIGVycm9yczogZXJyb3JzLmxlbmd0aCA+IDAgPyBlcnJvcnMgOiB1bmRlZmluZWQsXG4gICAgICB3YXJuaW5nczogd2FybmluZ3MubGVuZ3RoID4gMCA/IHdhcm5pbmdzIDogdW5kZWZpbmVkXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXJpYWxpemUgdGhlIGVsZW1lbnQgdG8gbWFya2Rvd24gd2l0aCBZQU1MIGZyb250bWF0dGVyXG4gICAqIEZJWDogQ2hhbmdlZCBmcm9tIEpTT04gdG8gbWFya2Rvd24gZm9ybWF0IGZvciBHaXRIdWIgcG9ydGZvbGlvIGNvbXBhdGliaWxpdHlcbiAgICogU0VDVVJJVFkgRklYICM1NDQ6IFBhcnNlIGFuZCB2YWxpZGF0ZSBleGlzdGluZyBmcm9udG1hdHRlciBpbnN0ZWFkIG9mIHJldHVybmluZyBhcy1pc1xuICAgKiBTRUNVUklUWSBGSVggIzU0MzogVXNlIGdyYXktbWF0dGVyIGZvciByb2J1c3QgZnJvbnRtYXR0ZXIgZGV0ZWN0aW9uXG4gICAqL1xuICBzZXJpYWxpemUoKTogc3RyaW5nIHtcbiAgICAvLyBTRUNVUklUWSBGSVggIzU0MzogVXNlIGdyYXktbWF0dGVyIGZvciByb2J1c3QgZnJvbnRtYXR0ZXIgZGV0ZWN0aW9uXG4gICAgLy8gVGhpcyBoYW5kbGVzIGRpZmZlcmVudCBsaW5lIGVuZGluZ3MsIHdoaXRlc3BhY2UgdmFyaWF0aW9ucywgYW5kIG1hbGZvcm1lZCBZQU1MXG4gICAgbGV0IGNvbnRlbnRUb1Byb2Nlc3MgPSB0aGlzLnBvcnRmb2xpb0VsZW1lbnQuY29udGVudDtcbiAgICBsZXQgZXhpc3RpbmdNZXRhZGF0YTogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgIGxldCBib2R5Q29udGVudCA9IGNvbnRlbnRUb1Byb2Nlc3M7XG4gICAgXG4gICAgLy8gVHJ5IHRvIHBhcnNlIGV4aXN0aW5nIGZyb250bWF0dGVyIGlmIHByZXNlbnRcbiAgICB0cnkge1xuICAgICAgLy8gZ3JheS1tYXR0ZXIgaGFuZGxlcyBhbGwgZWRnZSBjYXNlczpcbiAgICAgIC8vIC0gRGlmZmVyZW50IGxpbmUgZW5kaW5ncyAoXFxuLCBcXHJcXG4pXG4gICAgICAvLyAtIFdoaXRlc3BhY2UgdmFyaWF0aW9uc1xuICAgICAgLy8gLSBNYWxmb3JtZWQgWUFNTCAocmV0dXJucyBlbXB0eSBkYXRhIG9iamVjdClcbiAgICAgIC8vIC0gTWlzc2luZyBjbG9zaW5nIGRlbGltaXRlclxuICAgICAgY29uc3QgcGFyc2VkID0gbWF0dGVyKGNvbnRlbnRUb1Byb2Nlc3MpO1xuICAgICAgXG4gICAgICBpZiAocGFyc2VkLmRhdGEgJiYgT2JqZWN0LmtleXMocGFyc2VkLmRhdGEpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgLy8gU0VDVVJJVFkgRklYICM1NDQ6IFZhbGlkYXRlIGV4aXN0aW5nIGZyb250bWF0dGVyIGluc3RlYWQgb2YgYnlwYXNzaW5nXG4gICAgICAgIGxvZ2dlci5kZWJ1ZygnRm91bmQgZXhpc3RpbmcgZnJvbnRtYXR0ZXIsIHZhbGlkYXRpbmcgYmVmb3JlIG1lcmdlJyk7XG4gICAgICAgIFxuICAgICAgICAvLyBWYWxpZGF0ZSB0aGUgcGFyc2VkIGZyb250bWF0dGVyXG4gICAgICAgIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSBDb250ZW50VmFsaWRhdG9yLnZhbGlkYXRlQW5kU2FuaXRpemUoXG4gICAgICAgICAgeWFtbC5kdW1wKHBhcnNlZC5kYXRhKVxuICAgICAgICApO1xuICAgICAgICBcbiAgICAgICAgaWYgKCF2YWxpZGF0aW9uUmVzdWx0LmlzVmFsaWQgJiYgdmFsaWRhdGlvblJlc3VsdC5zZXZlcml0eSA9PT0gJ2NyaXRpY2FsJykge1xuICAgICAgICAgIC8vIExvZyBzZWN1cml0eSBldmVudCBmb3IgbWFsaWNpb3VzIGZyb250bWF0dGVyXG4gICAgICAgICAgU2VjdXJpdHlNb25pdG9yLmxvZ1NlY3VyaXR5RXZlbnQoe1xuICAgICAgICAgICAgdHlwZTogJ0NPTlRFTlRfSU5KRUNUSU9OX0FUVEVNUFQnLFxuICAgICAgICAgICAgc2V2ZXJpdHk6ICdISUdIJyxcbiAgICAgICAgICAgIHNvdXJjZTogJ1BvcnRmb2xpb0VsZW1lbnRBZGFwdGVyLnNlcmlhbGl6ZScsXG4gICAgICAgICAgICBkZXRhaWxzOiBgQ3JpdGljYWwgc2VjdXJpdHkgaXNzdWVzIGluIGZyb250bWF0dGVyOiAke3ZhbGlkYXRpb25SZXN1bHQuZGV0ZWN0ZWRQYXR0ZXJucz8uam9pbignLCAnKX1gLFxuICAgICAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICAgICAgZWxlbWVudElkOiB0aGlzLmlkLFxuICAgICAgICAgICAgICBlbGVtZW50VHlwZTogdGhpcy50eXBlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgXG4gICAgICAgICAgLy8gRG9uJ3QgdXNlIHRoZSBtYWxpY2lvdXMgZnJvbnRtYXR0ZXIsIGNyZWF0ZSBuZXdcbiAgICAgICAgICBleGlzdGluZ01ldGFkYXRhID0ge307XG4gICAgICAgICAgYm9keUNvbnRlbnQgPSBjb250ZW50VG9Qcm9jZXNzOyAvLyBVc2Ugb3JpZ2luYWwgY29udGVudFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEZyb250bWF0dGVyIGlzIHNhZmUsIG1lcmdlIHdpdGggb3VyIG1ldGFkYXRhXG4gICAgICAgICAgZXhpc3RpbmdNZXRhZGF0YSA9IHBhcnNlZC5kYXRhO1xuICAgICAgICAgIGJvZHlDb250ZW50ID0gcGFyc2VkLmNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gSWYgZ3JheS1tYXR0ZXIgZmFpbHMgdG8gcGFyc2UsIHRyZWF0IGFzIGNvbnRlbnQgd2l0aG91dCBmcm9udG1hdHRlclxuICAgICAgbG9nZ2VyLndhcm4oJ0ZhaWxlZCB0byBwYXJzZSBwb3RlbnRpYWwgZnJvbnRtYXR0ZXIsIHRyZWF0aW5nIGFzIHBsYWluIGNvbnRlbnQnLCB7XG4gICAgICAgIGVycm9yOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcilcbiAgICAgIH0pO1xuICAgICAgLy8gQ29udGludWUgd2l0aCBlbXB0eSBtZXRhZGF0YSBhbmQgZnVsbCBjb250ZW50XG4gICAgfVxuICAgIFxuICAgIC8vIE1lcmdlIG1ldGFkYXRhLCB3aXRoIG91ciBtZXRhZGF0YSB0YWtpbmcgcHJlY2VkZW5jZSBmb3Igc2VjdXJpdHlcbiAgICAvLyBUaGlzIGVuc3VyZXMgY3JpdGljYWwgZmllbGRzIGxpa2UgSUQgYW5kIHR5cGUgYXJlIGFsd2F5cyBmcm9tIG91ciB2YWxpZGF0ZWQgc291cmNlXG4gICAgY29uc3QgbWVyZ2VkTWV0YWRhdGEgPSB7XG4gICAgICAuLi5leGlzdGluZ01ldGFkYXRhLCAvLyBFeGlzdGluZyBtZXRhZGF0YSBmaXJzdFxuICAgICAgLi4udGhpcy5tZXRhZGF0YSwgICAgLy8gT3VyIHZhbGlkYXRlZCBtZXRhZGF0YSBvdmVyd3JpdGVzXG4gICAgICBpZDogdGhpcy5pZCwgICAgICAgICAvLyBBbHdheXMgdXNlIG91ciBJRFxuICAgICAgdHlwZTogdGhpcy50eXBlLCAgICAgLy8gQWx3YXlzIHVzZSBvdXIgdHlwZVxuICAgICAgdmVyc2lvbjogdGhpcy52ZXJzaW9uIC8vIEFsd2F5cyB1c2Ugb3VyIHZlcnNpb25cbiAgICB9O1xuICAgIFxuICAgIC8vIFZhbGlkYXRlIHRoZSBmaW5hbCBtZXJnZWQgbWV0YWRhdGFcbiAgICBjb25zdCBtZXRhZGF0YVlhbWwgPSB5YW1sLmR1bXAobWVyZ2VkTWV0YWRhdGEsIHtcbiAgICAgIG5vUmVmczogdHJ1ZSxcbiAgICAgIHNvcnRLZXlzOiBmYWxzZSxcbiAgICAgIGxpbmVXaWR0aDogLTFcbiAgICB9KTtcbiAgICBcbiAgICAvLyBGaW5hbCBzZWN1cml0eSBjaGVjayBvbiB0aGUgY29tcGxldGUgbWV0YWRhdGFcbiAgICBjb25zdCBmaW5hbFZhbGlkYXRpb24gPSBDb250ZW50VmFsaWRhdG9yLnZhbGlkYXRlQW5kU2FuaXRpemUobWV0YWRhdGFZYW1sKTtcbiAgICBcbiAgICBpZiAoIWZpbmFsVmFsaWRhdGlvbi5pc1ZhbGlkICYmIGZpbmFsVmFsaWRhdGlvbi5zZXZlcml0eSA9PT0gJ2NyaXRpY2FsJykge1xuICAgICAgLy8gVGhpcyBzaG91bGRuJ3QgaGFwcGVuIHdpdGggb3VyIHNhbml0aXplZCBkYXRhLCBidXQgbG9nIGlmIGl0IGRvZXNcbiAgICAgIFNlY3VyaXR5TW9uaXRvci5sb2dTZWN1cml0eUV2ZW50KHtcbiAgICAgICAgdHlwZTogJ1VOSUNPREVfVkFMSURBVElPTl9FUlJPUicsXG4gICAgICAgIHNldmVyaXR5OiAnTUVESVVNJyxcbiAgICAgICAgc291cmNlOiAnUG9ydGZvbGlvRWxlbWVudEFkYXB0ZXIuc2VyaWFsaXplJyxcbiAgICAgICAgZGV0YWlsczogJ0ZpbmFsIG1ldGFkYXRhIHZhbGlkYXRpb24gZmFpbGVkIGFmdGVyIG1lcmdlJyxcbiAgICAgICAgbWV0YWRhdGE6IHsgZWxlbWVudElkOiB0aGlzLmlkIH1cbiAgICAgIH0pO1xuICAgICAgXG4gICAgICAvLyBGYWxsIGJhY2sgdG8gbWluaW1hbCBzYWZlIG1ldGFkYXRhXG4gICAgICBjb25zdCBzYWZlTWV0YWRhdGEgPSB7XG4gICAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICAgIHZlcnNpb246IHRoaXMudmVyc2lvbixcbiAgICAgICAgbmFtZTogdGhpcy5ub3JtYWxpemVTdHJpbmcodGhpcy5tZXRhZGF0YS5uYW1lIHx8ICdVbnRpdGxlZCcpLFxuICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5ub3JtYWxpemVTdHJpbmcodGhpcy5tZXRhZGF0YS5kZXNjcmlwdGlvbiB8fCAnJylcbiAgICAgIH07XG4gICAgICBcbiAgICAgIGNvbnN0IHNhZmVGcm9udG1hdHRlciA9IHlhbWwuZHVtcChzYWZlTWV0YWRhdGEsIHtcbiAgICAgICAgbm9SZWZzOiB0cnVlLFxuICAgICAgICBzb3J0S2V5czogZmFsc2UsXG4gICAgICAgIGxpbmVXaWR0aDogLTFcbiAgICAgIH0pO1xuICAgICAgXG4gICAgICByZXR1cm4gYC0tLVxcbiR7c2FmZUZyb250bWF0dGVyfS0tLVxcblxcbiR7Ym9keUNvbnRlbnR9YDtcbiAgICB9XG4gICAgXG4gICAgLy8gUmV0dXJuIHZhbGlkYXRlZCBhbmQgc2FuaXRpemVkIG1hcmtkb3duIHdpdGggZnJvbnRtYXR0ZXJcbiAgICByZXR1cm4gYC0tLVxcbiR7bWV0YWRhdGFZYW1sfS0tLVxcblxcbiR7Ym9keUNvbnRlbnR9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXNlcmlhbGl6ZSBmcm9tIHN0cmluZyAobm90IGltcGxlbWVudGVkIGZvciBhZGFwdGVyKVxuICAgKi9cbiAgZGVzZXJpYWxpemUoZGF0YTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdEZXNlcmlhbGl6YXRpb24gbm90IHN1cHBvcnRlZCBmb3IgUG9ydGZvbGlvRWxlbWVudEFkYXB0ZXInKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZWxlbWVudCBzdGF0dXNcbiAgICovXG4gIGdldFN0YXR1cygpOiBFbGVtZW50U3RhdHVzIHtcbiAgICByZXR1cm4gRWxlbWVudFN0YXR1cy5JTkFDVElWRTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG9yaWdpbmFsIHBvcnRmb2xpbyBlbGVtZW50IGNvbnRlbnRcbiAgICovXG4gIGdldENvbnRlbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wb3J0Zm9saW9FbGVtZW50LmNvbnRlbnQ7XG4gIH1cbn0iXX0=
231
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9ydGZvbGlvRWxlbWVudEFkYXB0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbHMvcG9ydGZvbGlvL1BvcnRmb2xpb0VsZW1lbnRBZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7R0FTRztBQUVILE9BQU8sRUFJTCxhQUFhLEVBR2QsTUFBTSxrQ0FBa0MsQ0FBQztBQUcxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNqRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9DLE9BQU8sS0FBSyxJQUFJLE1BQU0sU0FBUyxDQUFDO0FBQ2hDLE9BQU8sTUFBTSxNQUFNLGFBQWEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUV0RTs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLHVCQUF1QjtJQUNsQixFQUFFLENBQVM7SUFDWCxJQUFJLENBQWM7SUFDbEIsT0FBTyxDQUFTO0lBQ2hCLFFBQVEsQ0FBbUI7SUFDMUIsZ0JBQWdCLENBQW1CO0lBRXBELFlBQVksT0FBeUI7UUFDbkMsd0VBQXdFO1FBQ3hFLDhEQUE4RDtRQUM5RCxrRkFBa0Y7UUFDbEYsTUFBTSxjQUFjLEdBQUcsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM1Qix5Q0FBeUM7WUFDekMsZUFBZSxDQUFDLGdCQUFnQixDQUFDO2dCQUMvQixJQUFJLEVBQUUsMEJBQTBCO2dCQUNoQyxRQUFRLEVBQUUsUUFBUTtnQkFDbEIsTUFBTSxFQUFFLHFDQUFxQztnQkFDN0MsT0FBTyxFQUFFLG9DQUFvQyxjQUFjLENBQUMs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QztnQkFDNUQsV0FBVyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO2FBQ25FLENBQUM7WUFFRixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDOUMsTUFBTSxFQUFFLElBQUk7Z0JBQ1osUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsU0FBUyxFQUFFLENBQUMsQ0FBQzthQUNkLENBQUMsQ0FBQztZQUVILE9BQU8sUUFBUSxlQUFlLFVBQVUsV0FBVyxFQUFFLENBQUM7UUFDeEQsQ0FBQztRQUVELDJEQUEyRDtRQUMzRCxPQUFPLFFBQVEsWUFBWSxVQUFVLFdBQVcsRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVcsQ0FBQyxJQUFZO1FBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsMkRBQTJELENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxTQUFTO1FBQ1AsT0FBTyxhQUFhLENBQUMsUUFBUSxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7T0FFRztJQUNILFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7SUFDdkMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBZGFwdGVyIHRvIGNvbnZlcnQgc2ltcGxlIHBvcnRmb2xpbyBlbGVtZW50cyB0byBmdWxsIElFbGVtZW50IGludGVyZmFjZVxuICogVGhpcyByZXNvbHZlcyB0eXBlIHNhZmV0eSBpc3N1ZXMgd2l0aG91dCBjb21wbGV4IHR5cGUgY2FzdGluZ1xuICogXG4gKiBGSVhFUyBJTVBMRU1FTlRFRCAoUFIgIzUwMyk6XG4gKiAxLiBUWVBFIFNBRkVUWSAoSXNzdWUgIzQ5Nyk6IEVsaW1pbmF0ZXMgY29tcGxleCB0eXBlIGNhc3Rpbmcgd2l0aCBhZGFwdGVyIHBhdHRlcm5cbiAqIDIuIFNFQ1VSSVRZIEZJWCBETUNQLVNFQy0wMDQgKE1FRElVTSk6IEFkZGVkIFVuaWNvZGUgbm9ybWFsaXphdGlvbiBmb3IgYWxsIHVzZXIgaW5wdXRcbiAqIDMuIFNFQ1VSSVRZIEZJWCBETUNQLVNFQy0wMDYgKExPVyk6IEFkZGVkIGF1ZGl0IGxvZ2dpbmcgZm9yIGVsZW1lbnQgY3JlYXRpb25cbiAqIDQuIFBFUkZPUk1BTkNFOiBIZWxwZXIgbWV0aG9kcyBmb3IgZWZmaWNpZW50IHN0cmluZyBub3JtYWxpemF0aW9uXG4gKi9cblxuaW1wb3J0IHsgXG4gIElFbGVtZW50LCBcbiAgSUVsZW1lbnRNZXRhZGF0YSwgXG4gIEVsZW1lbnRWYWxpZGF0aW9uUmVzdWx0LCBcbiAgRWxlbWVudFN0YXR1cyxcbiAgVmFsaWRhdGlvbkVycm9yLFxuICBWYWxpZGF0aW9uV2FybmluZ1xufSBmcm9tICcuLi8uLi90eXBlcy9lbGVtZW50cy9JRWxlbWVudC5qcyc7XG5pbXBvcnQgeyBFbGVtZW50VHlwZSB9IGZyb20gJy4uLy4uL3BvcnRmb2xpby90eXBlcy5qcyc7XG5pbXBvcnQgeyBQb3J0Zm9saW9FbGVtZW50IH0gZnJvbSAnLi9zdWJtaXRUb1BvcnRmb2xpb1Rvb2wuanMnO1xuaW1wb3J0IHsgVW5pY29kZVZhbGlkYXRvciB9IGZyb20gJy4uLy4uL3NlY3VyaXR5L3ZhbGlkYXRvcnMvdW5pY29kZVZhbGlkYXRvci5qcyc7XG5pbXBvcnQgeyBTZWN1cml0eU1vbml0b3IgfSBmcm9tICcuLi8uLi9zZWN1cml0eS9zZWN1cml0eU1vbml0b3IuanMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vdXRpbHMvbG9nZ2VyLmpzJztcbmltcG9ydCAqIGFzIHlhbWwgZnJvbSAnanMteWFtbCc7XG5pbXBvcnQgbWF0dGVyIGZyb20gJ2dyYXktbWF0dGVyJztcbmltcG9ydCB7IENvbnRlbnRWYWxpZGF0b3IgfSBmcm9tICcuLi8uLi9zZWN1cml0eS9jb250ZW50VmFsaWRhdG9yLmpzJztcblxuLyoqXG4gKiBBZGFwdGVyIGNsYXNzIHRoYXQgd3JhcHMgYSBzaW1wbGUgUG9ydGZvbGlvRWxlbWVudCBhbmQgaW1wbGVtZW50cyBJRWxlbWVudFxuICogVGhpcyBhbGxvd3MgdXMgdG8gcGFzcyBwb3J0Zm9saW8gZWxlbWVudHMgdG8gbWV0aG9kcyBleHBlY3RpbmcgSUVsZW1lbnRcbiAqIHdpdGhvdXQgY29tcGxleCB0eXBlIGNhc3RpbmdcbiAqL1xuZXhwb3J0IGNsYXNzIFBvcnRmb2xpb0VsZW1lbnRBZGFwdGVyIGltcGxlbWVudHMgSUVsZW1lbnQge1xuICBwdWJsaWMgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHR5cGU6IEVsZW1lbnRUeXBlO1xuICBwdWJsaWMgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgbWV0YWRhdGE6IElFbGVtZW50TWV0YWRhdGE7XG4gIHByaXZhdGUgcmVhZG9ubHkgcG9ydGZvbGlvRWxlbWVudDogUG9ydGZvbGlvRWxlbWVudDtcblxuICBjb25zdHJ1Y3RvcihlbGVtZW50OiBQb3J0Zm9saW9FbGVtZW50KSB7XG4gICAgLy8gU0VDVVJJVFkgRklYICMyIChETUNQLVNFQy0wMDQpOiBOb3JtYWxpemUgYW5kIHZhbGlkYXRlIGFsbCB1c2VyIGlucHV0XG4gICAgLy8gUHJldmlvdXNseTogVXNlciBpbnB1dCB3YXMgdXNlZCBkaXJlY3RseSB3aXRob3V0IHZhbGlkYXRpb25cbiAgICAvLyBOb3c6IEFsbCBzdHJpbmcgaW5wdXRzIGdvIHRocm91Z2ggVW5pY29kZVZhbGlkYXRvciB0byBwcmV2ZW50IGhvbW9ncmFwaCBhdHRhY2tzXG4gICAgY29uc3Qgbm9ybWFsaXplZE5hbWUgPSBVbmljb2RlVmFsaWRhdG9yLm5vcm1hbGl6ZShlbGVtZW50Lm1ldGFkYXRhLm5hbWUpO1xuICAgIGlmICghbm9ybWFsaXplZE5hbWUuaXNWYWxpZCkge1xuICAgICAgLy8gTG9nIHNlY3VyaXR5IGV2ZW50IGZvciBpbnZhbGlkIFVuaWNvZGVcbiAgICAgIFNlY3VyaXR5TW9uaXRvci5sb2dTZWN1cml0eUV2ZW50KHtcbiAgICAgICAgdHlwZTogJ1VOSUNPREVfVkFMSURBVElPTl9FUlJPUicsXG4gICAgICAgIHNldmVyaXR5OiAnTUVESVVNJyxcbiAgICAgICAgc291cmNlOiAnUG9ydGZvbGlvRWxlbWVudEFkYXB0ZXIuY29uc3RydWN0b3InLFxuICAgICAgICBkZXRhaWxzOiBgSW52YWxpZCBVbmljb2RlIGluIGVsZW1lbnQgbmFtZTogJHtub3JtYWxpemVkTmFtZS5kZXRlY3RlZElzc3Vlcz8uWzBdIHx8ICd1bmtub3duJ31gXG4gICAgICB9KTtcbiAgICAgIGxvZ2dlci53YXJuKCdJbnZhbGlkIFVuaWNvZGUgZGV0ZWN0ZWQgaW4gZWxlbWVudCBuYW1lJywge1xuICAgICAgICBpc3N1ZXM6IG5vcm1hbGl6ZWROYW1lLmRldGVjdGVkSXNzdWVzXG4gICAgICB9KTtcbiAgICB9XG4gICAgXG4gICAgdGhpcy5wb3J0Zm9saW9FbGVtZW50ID0gZWxlbWVudDtcbiAgICB0aGlzLnR5cGUgPSBlbGVtZW50LnR5cGU7XG4gICAgdGhpcy52ZXJzaW9uID0gZWxlbWVudC5tZXRhZGF0YS52ZXJzaW9uIHx8ICcxLjAuMCc7XG4gICAgXG4gICAgLy8gR2VuZXJhdGUgSUQgZnJvbSB0eXBlIGFuZCBub3JtYWxpemVkIG5hbWVcbiAgICBjb25zdCB0aW1lc3RhbXAgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkucmVwbGFjZSgvWzouXS9nLCAnLScpO1xuICAgIGNvbnN0IHNhZmVOYW1lID0gbm9ybWFsaXplZE5hbWUubm9ybWFsaXplZENvbnRlbnQgfHwgZWxlbWVudC5tZXRhZGF0YS5uYW1lO1xuICAgIGNvbnN0IG5hbWVTbHVnID0gc2FmZU5hbWUudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9cXHMrL2csICctJyk7XG4gICAgdGhpcy5pZCA9IGAke2VsZW1lbnQudHlwZX1fJHtuYW1lU2x1Z31fJHt0aW1lc3RhbXB9YDtcbiAgICBcbiAgICAvLyBDb252ZXJ0IG1ldGFkYXRhIHRvIElFbGVtZW50TWV0YWRhdGEgZm9ybWF0IHdpdGggbm9ybWFsaXplZCB2YWx1ZXNcbiAgICB0aGlzLm1ldGFkYXRhID0ge1xuICAgICAgbmFtZTogc2FmZU5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5ub3JtYWxpemVTdHJpbmcoZWxlbWVudC5tZXRhZGF0YS5kZXNjcmlwdGlvbiB8fCAnJyksXG4gICAgICBhdXRob3I6IHRoaXMubm9ybWFsaXplU3RyaW5nKGVsZW1lbnQubWV0YWRhdGEuYXV0aG9yIHx8ICcnKSxcbiAgICAgIHZlcnNpb246IGVsZW1lbnQubWV0YWRhdGEudmVyc2lvbixcbiAgICAgIGNyZWF0ZWQ6IGVsZW1lbnQubWV0YWRhdGEuY3JlYXRlZCxcbiAgICAgIG1vZGlmaWVkOiBlbGVtZW50Lm1ldGFkYXRhLnVwZGF0ZWQsXG4gICAgICB0YWdzOiBbXVxuICAgIH07XG4gICAgXG4gICAgLy8gU0VDVVJJVFkgRklYICMzIChETUNQLVNFQy0wMDYpOiBMb2cgZWxlbWVudCBjcmVhdGlvbiBmb3IgYXVkaXQgdHJhaWxcbiAgICAvLyBQcmV2aW91c2x5OiBObyBhdWRpdCBsb2dnaW5nIGZvciBwb3J0Zm9saW8gb3BlcmF0aW9uc1xuICAgIC8vIE5vdzogQ29tcGxldGUgYXVkaXQgdHJhaWwgdXNpbmcgU2VjdXJpdHlNb25pdG9yLmxvZ1NlY3VyaXR5RXZlbnQoKVxuICAgIFNlY3VyaXR5TW9uaXRvci5sb2dTZWN1cml0eUV2ZW50KHtcbiAgICAgIHR5cGU6ICdFTEVNRU5UX0NSRUFURUQnLFxuICAgICAgc2V2ZXJpdHk6ICdMT1cnLFxuICAgICAgc291cmNlOiAnUG9ydGZvbGlvRWxlbWVudEFkYXB0ZXIuY29uc3RydWN0b3InLFxuICAgICAgZGV0YWlsczogYENyZWF0ZWQgcG9ydGZvbGlvIGVsZW1lbnQgYWRhcHRlcjogJHt0aGlzLmlkfWAsXG4gICAgICBtZXRhZGF0YToge1xuICAgICAgICBlbGVtZW50VHlwZTogdGhpcy50eXBlLFxuICAgICAgICBlbGVtZW50SWQ6IHRoaXMuaWRcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIEhlbHBlciB0byBub3JtYWxpemUgc3RyaW5nIHZhbHVlcyBzYWZlbHlcbiAgICovXG4gIHByaXZhdGUgbm9ybWFsaXplU3RyaW5nKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghdmFsdWUpIHJldHVybiB2YWx1ZTtcbiAgICBjb25zdCBub3JtYWxpemVkID0gVW5pY29kZVZhbGlkYXRvci5ub3JtYWxpemUodmFsdWUpO1xuICAgIHJldHVybiBub3JtYWxpemVkLm5vcm1hbGl6ZWRDb250ZW50IHx8IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIHRoZSBlbGVtZW50XG4gICAqL1xuICB2YWxpZGF0ZSgpOiBFbGVtZW50VmFsaWRhdGlvblJlc3VsdCB7XG4gICAgY29uc3QgZXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JbXSA9IFtdO1xuICAgIGNvbnN0IHdhcm5pbmdzOiBWYWxpZGF0aW9uV2FybmluZ1tdID0gW107XG5cbiAgICBpZiAoIXRoaXMubWV0YWRhdGEubmFtZSkge1xuICAgICAgZXJyb3JzLnB1c2goe1xuICAgICAgICBmaWVsZDogJ25hbWUnLFxuICAgICAgICBtZXNzYWdlOiAnRWxlbWVudCBuYW1lIGlzIHJlcXVpcmVkJ1xuICAgICAgfSk7XG4gICAgfVxuICAgIFxuICAgIGlmICghdGhpcy5wb3J0Zm9saW9FbGVtZW50LmNvbnRlbnQpIHtcbiAgICAgIGVycm9ycy5wdXNoKHtcbiAgICAgICAgZmllbGQ6ICdjb250ZW50JyxcbiAgICAgICAgbWVzc2FnZTogJ0VsZW1lbnQgY29udGVudCBpcyByZXF1aXJlZCdcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB2YWxpZDogZXJyb3JzLmxlbmd0aCA9PT0gMCxcbiAgICAgIGVycm9yczogZXJyb3JzLmxlbmd0aCA+IDAgPyBlcnJvcnMgOiB1bmRlZmluZWQsXG4gICAgICB3YXJuaW5nczogd2FybmluZ3MubGVuZ3RoID4gMCA/IHdhcm5pbmdzIDogdW5kZWZpbmVkXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXJpYWxpemUgdGhlIGVsZW1lbnQgdG8gbWFya2Rvd24gd2l0aCBZQU1MIGZyb250bWF0dGVyXG4gICAqIEZJWDogQ2hhbmdlZCBmcm9tIEpTT04gdG8gbWFya2Rvd24gZm9ybWF0IGZvciBHaXRIdWIgcG9ydGZvbGlvIGNvbXBhdGliaWxpdHlcbiAgICogU0VDVVJJVFkgRklYICM1NDQ6IFBhcnNlIGFuZCB2YWxpZGF0ZSBleGlzdGluZyBmcm9udG1hdHRlciBpbnN0ZWFkIG9mIHJldHVybmluZyBhcy1pc1xuICAgKiBTRUNVUklUWSBGSVggIzU0MzogVXNlIGdyYXktbWF0dGVyIGZvciByb2J1c3QgZnJvbnRtYXR0ZXIgZGV0ZWN0aW9uXG4gICAqL1xuICBzZXJpYWxpemUoKTogc3RyaW5nIHtcbiAgICAvLyBTRUNVUklUWSBGSVggIzU0MzogVXNlIGdyYXktbWF0dGVyIGZvciByb2J1c3QgZnJvbnRtYXR0ZXIgZGV0ZWN0aW9uXG4gICAgLy8gVGhpcyBoYW5kbGVzIGRpZmZlcmVudCBsaW5lIGVuZGluZ3MsIHdoaXRlc3BhY2UgdmFyaWF0aW9ucywgYW5kIG1hbGZvcm1lZCBZQU1MXG4gICAgbGV0IGNvbnRlbnRUb1Byb2Nlc3MgPSB0aGlzLnBvcnRmb2xpb0VsZW1lbnQuY29udGVudDtcbiAgICBsZXQgZXhpc3RpbmdNZXRhZGF0YTogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgIGxldCBib2R5Q29udGVudCA9IGNvbnRlbnRUb1Byb2Nlc3M7XG4gICAgXG4gICAgLy8gVHJ5IHRvIHBhcnNlIGV4aXN0aW5nIGZyb250bWF0dGVyIGlmIHByZXNlbnRcbiAgICB0cnkge1xuICAgICAgLy8gZ3JheS1tYXR0ZXIgaGFuZGxlcyBhbGwgZWRnZSBjYXNlczpcbiAgICAgIC8vIC0gRGlmZmVyZW50IGxpbmUgZW5kaW5ncyAoXFxuLCBcXHJcXG4pXG4gICAgICAvLyAtIFdoaXRlc3BhY2UgdmFyaWF0aW9uc1xuICAgICAgLy8gLSBNYWxmb3JtZWQgWUFNTCAocmV0dXJucyBlbXB0eSBkYXRhIG9iamVjdClcbiAgICAgIC8vIC0gTWlzc2luZyBjbG9zaW5nIGRlbGltaXRlclxuICAgICAgY29uc3QgcGFyc2VkID0gbWF0dGVyKGNvbnRlbnRUb1Byb2Nlc3MpO1xuICAgICAgXG4gICAgICBpZiAocGFyc2VkLmRhdGEgJiYgT2JqZWN0LmtleXMocGFyc2VkLmRhdGEpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgLy8gU0VDVVJJVFkgRklYICM1NDQ6IFZhbGlkYXRlIGV4aXN0aW5nIGZyb250bWF0dGVyIGluc3RlYWQgb2YgYnlwYXNzaW5nXG4gICAgICAgIGxvZ2dlci5kZWJ1ZygnRm91bmQgZXhpc3RpbmcgZnJvbnRtYXR0ZXIsIHZhbGlkYXRpbmcgYmVmb3JlIG1lcmdlJyk7XG4gICAgICAgIFxuICAgICAgICAvLyBWYWxpZGF0ZSB0aGUgcGFyc2VkIGZyb250bWF0dGVyXG4gICAgICAgIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSBDb250ZW50VmFsaWRhdG9yLnZhbGlkYXRlQW5kU2FuaXRpemUoXG4gICAgICAgICAgeWFtbC5kdW1wKHBhcnNlZC5kYXRhKVxuICAgICAgICApO1xuICAgICAgICBcbiAgICAgICAgaWYgKCF2YWxpZGF0aW9uUmVzdWx0LmlzVmFsaWQgJiYgdmFsaWRhdGlvblJlc3VsdC5zZXZlcml0eSA9PT0gJ2NyaXRpY2FsJykge1xuICAgICAgICAgIC8vIExvZyBzZWN1cml0eSBldmVudCBmb3IgbWFsaWNpb3VzIGZyb250bWF0dGVyXG4gICAgICAgICAgU2VjdXJpdHlNb25pdG9yLmxvZ1NlY3VyaXR5RXZlbnQoe1xuICAgICAgICAgICAgdHlwZTogJ0NPTlRFTlRfSU5KRUNUSU9OX0FUVEVNUFQnLFxuICAgICAgICAgICAgc2V2ZXJpdHk6ICdISUdIJyxcbiAgICAgICAgICAgIHNvdXJjZTogJ1BvcnRmb2xpb0VsZW1lbnRBZGFwdGVyLnNlcmlhbGl6ZScsXG4gICAgICAgICAgICBkZXRhaWxzOiBgQ3JpdGljYWwgc2VjdXJpdHkgaXNzdWVzIGluIGZyb250bWF0dGVyOiAke3ZhbGlkYXRpb25SZXN1bHQuZGV0ZWN0ZWRQYXR0ZXJucz8uam9pbignLCAnKX1gLFxuICAgICAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICAgICAgZWxlbWVudElkOiB0aGlzLmlkLFxuICAgICAgICAgICAgICBlbGVtZW50VHlwZTogdGhpcy50eXBlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgXG4gICAgICAgICAgLy8gRG9uJ3QgdXNlIHRoZSBtYWxpY2lvdXMgZnJvbnRtYXR0ZXIsIGNyZWF0ZSBuZXdcbiAgICAgICAgICBleGlzdGluZ01ldGFkYXRhID0ge307XG4gICAgICAgICAgYm9keUNvbnRlbnQgPSBjb250ZW50VG9Qcm9jZXNzOyAvLyBVc2Ugb3JpZ2luYWwgY29udGVudFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEZyb250bWF0dGVyIGlzIHNhZmUsIG1lcmdlIHdpdGggb3VyIG1ldGFkYXRhXG4gICAgICAgICAgZXhpc3RpbmdNZXRhZGF0YSA9IHBhcnNlZC5kYXRhO1xuICAgICAgICAgIGJvZHlDb250ZW50ID0gcGFyc2VkLmNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gSWYgZ3JheS1tYXR0ZXIgZmFpbHMgdG8gcGFyc2UsIHRyZWF0IGFzIGNvbnRlbnQgd2l0aG91dCBmcm9udG1hdHRlclxuICAgICAgbG9nZ2VyLndhcm4oJ0ZhaWxlZCB0byBwYXJzZSBwb3RlbnRpYWwgZnJvbnRtYXR0ZXIsIHRyZWF0aW5nIGFzIHBsYWluIGNvbnRlbnQnLCB7XG4gICAgICAgIGVycm9yOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcilcbiAgICAgIH0pO1xuICAgICAgLy8gQ29udGludWUgd2l0aCBlbXB0eSBtZXRhZGF0YSBhbmQgZnVsbCBjb250ZW50XG4gICAgfVxuICAgIFxuICAgIC8vIE1lcmdlIG1ldGFkYXRhLCB3aXRoIG91ciBtZXRhZGF0YSB0YWtpbmcgcHJlY2VkZW5jZSBmb3Igc2VjdXJpdHlcbiAgICAvLyBUaGlzIGVuc3VyZXMgY3JpdGljYWwgZmllbGRzIGxpa2UgSUQgYW5kIHR5cGUgYXJlIGFsd2F5cyBmcm9tIG91ciB2YWxpZGF0ZWQgc291cmNlXG4gICAgY29uc3QgbWVyZ2VkTWV0YWRhdGEgPSB7XG4gICAgICAuLi5leGlzdGluZ01ldGFkYXRhLCAvLyBFeGlzdGluZyBtZXRhZGF0YSBmaXJzdFxuICAgICAgLi4udGhpcy5tZXRhZGF0YSwgICAgLy8gT3VyIHZhbGlkYXRlZCBtZXRhZGF0YSBvdmVyd3JpdGVzXG4gICAgICBpZDogdGhpcy5pZCwgICAgICAgICAvLyBBbHdheXMgdXNlIG91ciBJRFxuICAgICAgdW5pcXVlX2lkOiB0aGlzLmlkLCAgLy8gQ1JJVElDQUwgRklYOiBBZGQgdW5pcXVlX2lkIGZvciBjb2xsZWN0aW9uIHdvcmtmbG93IGNvbXBhdGliaWxpdHlcbiAgICAgIHR5cGU6IHRoaXMudHlwZSwgICAgIC8vIEFsd2F5cyB1c2Ugb3VyIHR5cGVcbiAgICAgIHZlcnNpb246IHRoaXMudmVyc2lvbiAvLyBBbHdheXMgdXNlIG91ciB2ZXJzaW9uXG4gICAgfTtcbiAgICBcbiAgICAvLyBWYWxpZGF0ZSB0aGUgZmluYWwgbWVyZ2VkIG1ldGFkYXRhXG4gICAgY29uc3QgbWV0YWRhdGFZYW1sID0geWFtbC5kdW1wKG1lcmdlZE1ldGFkYXRhLCB7XG4gICAgICBub1JlZnM6IHRydWUsXG4gICAgICBzb3J0S2V5czogZmFsc2UsXG4gICAgICBsaW5lV2lkdGg6IC0xXG4gICAgfSk7XG4gICAgXG4gICAgLy8gRmluYWwgc2VjdXJpdHkgY2hlY2sgb24gdGhlIGNvbXBsZXRlIG1ldGFkYXRhXG4gICAgY29uc3QgZmluYWxWYWxpZGF0aW9uID0gQ29udGVudFZhbGlkYXRvci52YWxpZGF0ZUFuZFNhbml0aXplKG1ldGFkYXRhWWFtbCk7XG4gICAgXG4gICAgaWYgKCFmaW5hbFZhbGlkYXRpb24uaXNWYWxpZCAmJiBmaW5hbFZhbGlkYXRpb24uc2V2ZXJpdHkgPT09ICdjcml0aWNhbCcpIHtcbiAgICAgIC8vIFRoaXMgc2hvdWxkbid0IGhhcHBlbiB3aXRoIG91ciBzYW5pdGl6ZWQgZGF0YSwgYnV0IGxvZyBpZiBpdCBkb2VzXG4gICAgICBTZWN1cml0eU1vbml0b3IubG9nU2VjdXJpdHlFdmVudCh7XG4gICAgICAgIHR5cGU6ICdVTklDT0RFX1ZBTElEQVRJT05fRVJST1InLFxuICAgICAgICBzZXZlcml0eTogJ01FRElVTScsXG4gICAgICAgIHNvdXJjZTogJ1BvcnRmb2xpb0VsZW1lbnRBZGFwdGVyLnNlcmlhbGl6ZScsXG4gICAgICAgIGRldGFpbHM6ICdGaW5hbCBtZXRhZGF0YSB2YWxpZGF0aW9uIGZhaWxlZCBhZnRlciBtZXJnZScsXG4gICAgICAgIG1ldGFkYXRhOiB7IGVsZW1lbnRJZDogdGhpcy5pZCB9XG4gICAgICB9KTtcbiAgICAgIFxuICAgICAgLy8gRmFsbCBiYWNrIHRvIG1pbmltYWwgc2FmZSBtZXRhZGF0YVxuICAgICAgY29uc3Qgc2FmZU1ldGFkYXRhID0ge1xuICAgICAgICBpZDogdGhpcy5pZCxcbiAgICAgICAgdW5pcXVlX2lkOiB0aGlzLmlkLCAgLy8gQ1JJVElDQUwgRklYOiBJbmNsdWRlIHVuaXF1ZV9pZCBmb3IgY29sbGVjdGlvbiB3b3JrZmxvd1xuICAgICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICAgIHZlcnNpb246IHRoaXMudmVyc2lvbixcbiAgICAgICAgbmFtZTogdGhpcy5ub3JtYWxpemVTdHJpbmcodGhpcy5tZXRhZGF0YS5uYW1lIHx8ICdVbnRpdGxlZCcpLFxuICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5ub3JtYWxpemVTdHJpbmcodGhpcy5tZXRhZGF0YS5kZXNjcmlwdGlvbiB8fCAnJylcbiAgICAgIH07XG4gICAgICBcbiAgICAgIGNvbnN0IHNhZmVGcm9udG1hdHRlciA9IHlhbWwuZHVtcChzYWZlTWV0YWRhdGEsIHtcbiAgICAgICAgbm9SZWZzOiB0cnVlLFxuICAgICAgICBzb3J0S2V5czogZmFsc2UsXG4gICAgICAgIGxpbmVXaWR0aDogLTFcbiAgICAgIH0pO1xuICAgICAgXG4gICAgICByZXR1cm4gYC0tLVxcbiR7c2FmZUZyb250bWF0dGVyfS0tLVxcblxcbiR7Ym9keUNvbnRlbnR9YDtcbiAgICB9XG4gICAgXG4gICAgLy8gUmV0dXJuIHZhbGlkYXRlZCBhbmQgc2FuaXRpemVkIG1hcmtkb3duIHdpdGggZnJvbnRtYXR0ZXJcbiAgICByZXR1cm4gYC0tLVxcbiR7bWV0YWRhdGFZYW1sfS0tLVxcblxcbiR7Ym9keUNvbnRlbnR9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXNlcmlhbGl6ZSBmcm9tIHN0cmluZyAobm90IGltcGxlbWVudGVkIGZvciBhZGFwdGVyKVxuICAgKi9cbiAgZGVzZXJpYWxpemUoZGF0YTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdEZXNlcmlhbGl6YXRpb24gbm90IHN1cHBvcnRlZCBmb3IgUG9ydGZvbGlvRWxlbWVudEFkYXB0ZXInKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZWxlbWVudCBzdGF0dXNcbiAgICovXG4gIGdldFN0YXR1cygpOiBFbGVtZW50U3RhdHVzIHtcbiAgICByZXR1cm4gRWxlbWVudFN0YXR1cy5JTkFDVElWRTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG9yaWdpbmFsIHBvcnRmb2xpbyBlbGVtZW50IGNvbnRlbnRcbiAgICovXG4gIGdldENvbnRlbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wb3J0Zm9saW9FbGVtZW50LmNvbnRlbnQ7XG4gIH1cbn0iXX0=