@dollhousemcp/mcp-server 2.0.0-rc.5 → 2.0.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.
- package/CHANGELOG.md +54 -17
- package/README.github.md +2 -2
- package/README.md +2 -2
- package/README.md.backup +284 -224
- package/README.npm.md +2 -2
- package/dist/cache/LRUCache.d.ts +3 -0
- package/dist/cache/LRUCache.d.ts.map +1 -1
- package/dist/cache/LRUCache.js +36 -26
- package/dist/config/env.d.ts +14 -4
- package/dist/config/env.d.ts.map +1 -1
- package/dist/config/env.js +20 -6
- package/dist/di/Container.d.ts +21 -0
- package/dist/di/Container.d.ts.map +1 -1
- package/dist/di/Container.js +250 -53
- package/dist/elements/BaseElement.d.ts.map +1 -1
- package/dist/elements/BaseElement.js +5 -10
- package/dist/elements/base/BaseElementManager.d.ts +22 -0
- package/dist/elements/base/BaseElementManager.d.ts.map +1 -1
- package/dist/elements/base/BaseElementManager.js +47 -7
- package/dist/elements/memories/Memory.d.ts +1 -0
- package/dist/elements/memories/Memory.d.ts.map +1 -1
- package/dist/elements/memories/Memory.js +12 -8
- package/dist/elements/memories/MemoryManager.d.ts.map +1 -1
- package/dist/elements/memories/MemoryManager.js +23 -42
- package/dist/elements/memories/MemorySearchIndex.js +2 -2
- package/dist/generated/version.d.ts +2 -2
- package/dist/generated/version.d.ts.map +1 -1
- package/dist/generated/version.js +3 -3
- package/dist/handlers/EnhancedIndexHandler.js +6 -6
- package/dist/handlers/element-crud/editElement.d.ts.map +1 -1
- package/dist/handlers/element-crud/editElement.js +39 -18
- package/dist/handlers/element-crud/helpers.d.ts.map +1 -1
- package/dist/handlers/element-crud/helpers.js +30 -3
- package/dist/handlers/element-crud/listElements.d.ts +2 -0
- package/dist/handlers/element-crud/listElements.d.ts.map +1 -1
- package/dist/handlers/element-crud/listElements.js +3 -1
- package/dist/handlers/mcp-aql/Gatekeeper.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/Gatekeeper.js +23 -17
- package/dist/handlers/mcp-aql/GatekeeperTypes.d.ts +4 -0
- package/dist/handlers/mcp-aql/GatekeeperTypes.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/GatekeeperTypes.js +1 -1
- package/dist/handlers/mcp-aql/MCPAQLHandler.d.ts +33 -0
- package/dist/handlers/mcp-aql/MCPAQLHandler.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/MCPAQLHandler.js +232 -23
- package/dist/handlers/mcp-aql/OperationRouter.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/OperationRouter.js +13 -1
- package/dist/handlers/mcp-aql/OperationSchema.d.ts +7 -0
- package/dist/handlers/mcp-aql/OperationSchema.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/OperationSchema.js +52 -1
- package/dist/handlers/mcp-aql/UnifiedEndpoint.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/UnifiedEndpoint.js +4 -3
- package/dist/handlers/mcp-aql/evaluatePermission.d.ts +53 -0
- package/dist/handlers/mcp-aql/evaluatePermission.d.ts.map +1 -0
- package/dist/handlers/mcp-aql/evaluatePermission.js +132 -0
- package/dist/handlers/mcp-aql/policies/ElementPolicies.d.ts +17 -0
- package/dist/handlers/mcp-aql/policies/ElementPolicies.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/policies/ElementPolicies.js +91 -1
- package/dist/handlers/mcp-aql/policies/ToolClassification.d.ts +5 -3
- package/dist/handlers/mcp-aql/policies/ToolClassification.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/policies/ToolClassification.js +56 -2
- package/dist/handlers/mcp-aql/types.d.ts +22 -0
- package/dist/handlers/mcp-aql/types.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/types.js +47 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/logging/LogHooks.js +11 -11
- package/dist/logging/LogManager.d.ts +0 -2
- package/dist/logging/LogManager.d.ts.map +1 -1
- package/dist/logging/LogManager.js +1 -3
- package/dist/logging/sinks/MemoryLogSink.d.ts +2 -0
- package/dist/logging/sinks/MemoryLogSink.d.ts.map +1 -1
- package/dist/logging/sinks/MemoryLogSink.js +12 -3
- package/dist/logging/types.d.ts +0 -2
- package/dist/logging/types.d.ts.map +1 -1
- package/dist/logging/types.js +1 -1
- package/dist/metrics/GatekeeperMetricsTracker.d.ts +32 -0
- package/dist/metrics/GatekeeperMetricsTracker.d.ts.map +1 -0
- package/dist/metrics/GatekeeperMetricsTracker.js +42 -0
- package/dist/metrics/MetricsManager.d.ts +47 -0
- package/dist/metrics/MetricsManager.d.ts.map +1 -0
- package/dist/metrics/MetricsManager.js +232 -0
- package/dist/metrics/OperationMetricsTracker.d.ts +32 -0
- package/dist/metrics/OperationMetricsTracker.d.ts.map +1 -0
- package/dist/metrics/OperationMetricsTracker.js +53 -0
- package/dist/metrics/collectors/DefaultElementProviderCollector.d.ts +27 -0
- package/dist/metrics/collectors/DefaultElementProviderCollector.d.ts.map +1 -0
- package/dist/metrics/collectors/DefaultElementProviderCollector.js +69 -0
- package/dist/metrics/collectors/FileLockManagerCollector.d.ts +16 -0
- package/dist/metrics/collectors/FileLockManagerCollector.d.ts.map +1 -0
- package/dist/metrics/collectors/FileLockManagerCollector.js +51 -0
- package/dist/metrics/collectors/GatekeeperMetricsCollector.d.ts +16 -0
- package/dist/metrics/collectors/GatekeeperMetricsCollector.d.ts.map +1 -0
- package/dist/metrics/collectors/GatekeeperMetricsCollector.js +76 -0
- package/dist/metrics/collectors/LRUCacheCollector.d.ts +18 -0
- package/dist/metrics/collectors/LRUCacheCollector.d.ts.map +1 -0
- package/dist/metrics/collectors/LRUCacheCollector.js +95 -0
- package/dist/metrics/collectors/OperationMetricsCollector.d.ts +16 -0
- package/dist/metrics/collectors/OperationMetricsCollector.d.ts.map +1 -0
- package/dist/metrics/collectors/OperationMetricsCollector.js +80 -0
- package/dist/metrics/collectors/OperationalTelemetryCollector.d.ts +17 -0
- package/dist/metrics/collectors/OperationalTelemetryCollector.d.ts.map +1 -0
- package/dist/metrics/collectors/OperationalTelemetryCollector.js +26 -0
- package/dist/metrics/collectors/PerformanceMonitorCollector.d.ts +14 -0
- package/dist/metrics/collectors/PerformanceMonitorCollector.d.ts.map +1 -0
- package/dist/metrics/collectors/PerformanceMonitorCollector.js +141 -0
- package/dist/metrics/collectors/SecurityMonitorCollector.d.ts +21 -0
- package/dist/metrics/collectors/SecurityMonitorCollector.d.ts.map +1 -0
- package/dist/metrics/collectors/SecurityMonitorCollector.js +56 -0
- package/dist/metrics/collectors/SecurityTelemetryCollector.d.ts +15 -0
- package/dist/metrics/collectors/SecurityTelemetryCollector.d.ts.map +1 -0
- package/dist/metrics/collectors/SecurityTelemetryCollector.js +112 -0
- package/dist/metrics/collectors/TriggerMetricsTrackerCollector.d.ts +16 -0
- package/dist/metrics/collectors/TriggerMetricsTrackerCollector.d.ts.map +1 -0
- package/dist/metrics/collectors/TriggerMetricsTrackerCollector.js +26 -0
- package/dist/metrics/collectors/index.d.ts +11 -0
- package/dist/metrics/collectors/index.d.ts.map +1 -0
- package/dist/metrics/collectors/index.js +11 -0
- package/dist/metrics/sinks/MemoryMetricsSink.d.ts +22 -0
- package/dist/metrics/sinks/MemoryMetricsSink.d.ts.map +1 -0
- package/dist/metrics/sinks/MemoryMetricsSink.js +121 -0
- package/dist/metrics/types.d.ts +98 -0
- package/dist/metrics/types.d.ts.map +1 -0
- package/dist/metrics/types.js +24 -0
- package/dist/portfolio/DefaultElementProvider.d.ts.map +1 -1
- package/dist/portfolio/DefaultElementProvider.js +1 -7
- package/dist/portfolio/EnhancedIndexManager.d.ts.map +1 -1
- package/dist/portfolio/EnhancedIndexManager.js +18 -18
- package/dist/portfolio/NLPScoringManager.d.ts.map +1 -1
- package/dist/portfolio/NLPScoringManager.js +5 -9
- package/dist/portfolio/PortfolioIndexManager.js +2 -2
- package/dist/portfolio/RelationshipManager.js +2 -2
- package/dist/portfolio/VerbTriggerManager.d.ts.map +1 -1
- package/dist/portfolio/VerbTriggerManager.js +5 -19
- package/dist/portfolio/config/IndexConfig.d.ts.map +1 -1
- package/dist/portfolio/config/IndexConfig.js +1 -12
- package/dist/portfolio/enhanced-index/ElementDefinitionBuilder.d.ts.map +1 -1
- package/dist/portfolio/enhanced-index/ElementDefinitionBuilder.js +3 -15
- package/dist/portfolio/enhanced-index/SemanticRelationshipService.d.ts.map +1 -1
- package/dist/portfolio/enhanced-index/SemanticRelationshipService.js +2 -16
- package/dist/portfolio/types/RelationshipTypes.d.ts.map +1 -1
- package/dist/portfolio/types/RelationshipTypes.js +3 -17
- package/dist/security/audit/config/suppressions.d.ts.map +1 -1
- package/dist/security/audit/config/suppressions.js +36 -8
- package/dist/security/constants.d.ts.map +1 -1
- package/dist/security/constants.js +10 -6
- package/dist/security/fileLockManager.d.ts.map +1 -1
- package/dist/security/fileLockManager.js +8 -6
- package/dist/security/secureYamlParser.d.ts.map +1 -1
- package/dist/security/secureYamlParser.js +1 -13
- package/dist/security/securityMonitor.d.ts +2 -1
- package/dist/security/securityMonitor.d.ts.map +1 -1
- package/dist/security/securityMonitor.js +14 -3
- package/dist/security/telemetry/SecurityTelemetry.d.ts +16 -0
- package/dist/security/telemetry/SecurityTelemetry.d.ts.map +1 -1
- package/dist/security/telemetry/SecurityTelemetry.js +30 -2
- package/dist/security/tokenManager.d.ts +3 -0
- package/dist/security/tokenManager.d.ts.map +1 -1
- package/dist/security/tokenManager.js +13 -5
- package/dist/security/validation/BackgroundValidator.d.ts.map +1 -1
- package/dist/security/validation/BackgroundValidator.js +7 -7
- package/dist/server/startup.d.ts.map +1 -1
- package/dist/server/startup.js +8 -24
- package/dist/server/tools/MCPAQLTools.js +8 -1
- package/dist/services/ActivationStore.d.ts.map +1 -1
- package/dist/services/ActivationStore.js +9 -3
- package/dist/services/FileWatchService.d.ts +1 -0
- package/dist/services/FileWatchService.d.ts.map +1 -1
- package/dist/services/FileWatchService.js +83 -48
- package/dist/services/MetadataService.d.ts.map +1 -1
- package/dist/services/MetadataService.js +7 -2
- package/dist/services/PolicyExportService.d.ts.map +1 -1
- package/dist/services/PolicyExportService.js +8 -1
- package/dist/services/query/ElementQueryService.d.ts.map +1 -1
- package/dist/services/query/ElementQueryService.js +1 -41
- package/dist/services/query/PaginationService.d.ts.map +1 -1
- package/dist/services/query/PaginationService.js +1 -14
- package/dist/services/query/SortService.d.ts.map +1 -1
- package/dist/services/query/SortService.js +1 -6
- package/dist/services/validation/ValidationService.d.ts.map +1 -1
- package/dist/services/validation/ValidationService.js +3 -8
- package/dist/storage/ElementStorageLayer.d.ts.map +1 -1
- package/dist/storage/ElementStorageLayer.js +5 -2
- package/dist/storage/MemoryStorageLayer.d.ts.map +1 -1
- package/dist/storage/MemoryStorageLayer.js +5 -2
- package/dist/telemetry/OperationalTelemetry.js +2 -2
- package/dist/utils/EventDeduplicator.d.ts +44 -0
- package/dist/utils/EventDeduplicator.d.ts.map +1 -0
- package/dist/utils/EventDeduplicator.js +93 -0
- package/dist/utils/FileLock.d.ts.map +1 -1
- package/dist/utils/FileLock.js +1 -9
- package/dist/utils/PerformanceMonitor.d.ts.map +1 -1
- package/dist/utils/PerformanceMonitor.js +5 -5
- package/dist/utils/SlidingWindowRateLimiter.d.ts +13 -0
- package/dist/utils/SlidingWindowRateLimiter.d.ts.map +1 -0
- package/dist/utils/SlidingWindowRateLimiter.js +23 -0
- package/dist/web/console/IngestRoutes.d.ts +84 -0
- package/dist/web/console/IngestRoutes.d.ts.map +1 -0
- package/dist/web/console/IngestRoutes.js +252 -0
- package/dist/web/console/LeaderElection.d.ts +89 -0
- package/dist/web/console/LeaderElection.d.ts.map +1 -0
- package/dist/web/console/LeaderElection.js +205 -0
- package/dist/web/console/LeaderForwardingSink.d.ts +61 -0
- package/dist/web/console/LeaderForwardingSink.d.ts.map +1 -0
- package/dist/web/console/LeaderForwardingSink.js +197 -0
- package/dist/web/console/SessionNames.d.ts +46 -0
- package/dist/web/console/SessionNames.d.ts.map +1 -0
- package/dist/web/console/SessionNames.js +257 -0
- package/dist/web/console/UnifiedConsole.d.ts +64 -0
- package/dist/web/console/UnifiedConsole.d.ts.map +1 -0
- package/dist/web/console/UnifiedConsole.js +119 -0
- package/dist/web/contentPipeline.d.ts +58 -0
- package/dist/web/contentPipeline.d.ts.map +1 -0
- package/dist/web/contentPipeline.js +112 -0
- package/dist/web/portDiscovery.d.ts +58 -0
- package/dist/web/portDiscovery.d.ts.map +1 -0
- package/dist/web/portDiscovery.js +143 -0
- package/dist/web/public/app.js +148 -60
- package/dist/web/public/logs.js +638 -0
- package/dist/web/public/metrics.js +682 -0
- package/dist/web/public/permissions.js +394 -0
- package/dist/web/public/sessions.js +369 -0
- package/dist/web/routes/healthRoutes.d.ts +16 -0
- package/dist/web/routes/healthRoutes.d.ts.map +1 -0
- package/dist/web/routes/healthRoutes.js +29 -0
- package/dist/web/routes/logRoutes.d.ts +18 -0
- package/dist/web/routes/logRoutes.d.ts.map +1 -0
- package/dist/web/routes/logRoutes.js +126 -0
- package/dist/web/routes/metricsRoutes.d.ts +17 -0
- package/dist/web/routes/metricsRoutes.d.ts.map +1 -0
- package/dist/web/routes/metricsRoutes.js +90 -0
- package/dist/web/routes/permissionRoutes.d.ts +16 -0
- package/dist/web/routes/permissionRoutes.d.ts.map +1 -0
- package/dist/web/routes/permissionRoutes.js +133 -0
- package/dist/web/routes.d.ts.map +1 -1
- package/dist/web/routes.js +309 -339
- package/dist/web/server.d.ts +21 -1
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +42 -4
- package/dist/web/sinks/WebSSELogSink.d.ts +15 -0
- package/dist/web/sinks/WebSSELogSink.d.ts.map +1 -0
- package/dist/web/sinks/WebSSELogSink.js +22 -0
- package/dist/web/sinks/WebSSEMetricsSink.d.ts +16 -0
- package/dist/web/sinks/WebSSEMetricsSink.d.ts.map +1 -0
- package/dist/web/sinks/WebSSEMetricsSink.js +23 -0
- package/package.json +2 -2
- package/server.json +2 -2
- package/dist/constants/version.d.ts +0 -3
- package/dist/constants/version.d.ts.map +0 -1
- package/dist/constants/version.js +0 -4
- package/dist/logging/sinks/SSELogSink.d.ts +0 -35
- package/dist/logging/sinks/SSELogSink.d.ts.map +0 -1
- package/dist/logging/sinks/SSELogSink.js +0 -181
- package/dist/logging/viewer/viewerHtml.d.ts +0 -8
- package/dist/logging/viewer/viewerHtml.d.ts.map +0 -1
- package/dist/logging/viewer/viewerHtml.js +0 -204
- package/dist/web/public/public/app.js +0 -1878
|
@@ -46,6 +46,34 @@ export const suppressions = [
|
|
|
46
46
|
file: 'src/elements/memories/MemoryManager.ts',
|
|
47
47
|
reason: 'FALSE POSITIVE: Line 1024 is a logger.error() call formatting an error message with string concatenation. This is not a SQL query - the codebase does not use SQL. The string concatenation builds a user-facing error message for deletion failures. PR #7'
|
|
48
48
|
},
|
|
49
|
+
{
|
|
50
|
+
rule: 'CWE-89-001',
|
|
51
|
+
file: 'src/web/public/metrics.js',
|
|
52
|
+
reason: 'FALSE POSITIVE: Browser-side Date.toLocaleTimeString() concatenation for display label. Not SQL — the codebase does not use SQL.'
|
|
53
|
+
},
|
|
54
|
+
// ========================================
|
|
55
|
+
// Metrics & Web Console False Positives
|
|
56
|
+
// ========================================
|
|
57
|
+
{
|
|
58
|
+
rule: 'DMCP-SEC-004',
|
|
59
|
+
file: 'src/metrics/sinks/MemoryMetricsSink.ts',
|
|
60
|
+
reason: 'FALSE POSITIVE: Internal metrics storage — does not process user input directly. Metric names and sources are server-generated constants. Input normalization is handled at the route handler boundary.'
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
rule: 'DMCP-SEC-004',
|
|
64
|
+
file: 'src/metrics/collectors/PerformanceMonitorCollector.ts',
|
|
65
|
+
reason: 'FALSE POSITIVE: Metric collector with hardcoded constant strings only. No user input enters this component. All metric names, sources, and descriptions are compile-time constants.'
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
rule: 'DMCP-SEC-004',
|
|
69
|
+
file: 'src/web/public/metrics.js',
|
|
70
|
+
reason: 'FALSE POSITIVE: Client-side browser JavaScript. UnicodeValidator is a Node.js module unavailable in browser context. Dashboard renders server-generated metric data only — no user text input.'
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
rule: 'DMCP-SEC-004',
|
|
74
|
+
file: 'src/web/public/logs.js',
|
|
75
|
+
reason: 'FALSE POSITIVE: Client-side browser JavaScript. Filter inputs are used for local JS array filtering only — never sent to server. UnicodeValidator is a Node.js module unavailable in browser context.'
|
|
76
|
+
},
|
|
49
77
|
// ========================================
|
|
50
78
|
// Test File Suppressions
|
|
51
79
|
// ========================================
|
|
@@ -994,13 +1022,8 @@ export const suppressions = [
|
|
|
994
1022
|
},
|
|
995
1023
|
{
|
|
996
1024
|
rule: 'DMCP-SEC-004',
|
|
997
|
-
file: 'src/
|
|
998
|
-
reason: 'JSON-serializes pre-constructed UnifiedLogEntry objects over SSE.
|
|
999
|
-
},
|
|
1000
|
-
{
|
|
1001
|
-
rule: 'DMCP-SEC-004',
|
|
1002
|
-
file: 'src/logging/viewer/viewerHtml.ts',
|
|
1003
|
-
reason: 'All dynamic content (timestamp, category, source, message, correlationId) is HTML-escaped via escHtml() using document.createTextNode before DOM insertion. PR #471'
|
|
1025
|
+
file: 'src/web/routes/logRoutes.ts',
|
|
1026
|
+
reason: 'JSON-serializes pre-constructed UnifiedLogEntry objects over SSE. All query parameters are validated strings passed to MemoryLogSink.query(). No HTML rendering.'
|
|
1004
1027
|
},
|
|
1005
1028
|
{
|
|
1006
1029
|
rule: 'DMCP-SEC-004',
|
|
@@ -1047,6 +1070,11 @@ export const suppressions = [
|
|
|
1047
1070
|
rule: 'DMCP-SEC-004',
|
|
1048
1071
|
file: 'src/converters/AgentSkillConverter.ts',
|
|
1049
1072
|
reason: 'NFC normalization added to both convertAgentToDollhouse() and convertDollhouseToAgent() entry points. File-level scanner flags despite per-input fix.'
|
|
1073
|
+
},
|
|
1074
|
+
{
|
|
1075
|
+
rule: 'DMCP-SEC-004',
|
|
1076
|
+
file: 'src/web/routes/permissionRoutes.ts',
|
|
1077
|
+
reason: 'NFC normalization applied to tool_name and platform inputs at HTTP boundary before forwarding to MCPAQLHandler.handleRead(). GET /permissions/status has no user-supplied string parameters. Scanner may flag file-level despite per-input fix.'
|
|
1050
1078
|
}
|
|
1051
1079
|
];
|
|
1052
1080
|
/**
|
|
@@ -1280,4 +1308,4 @@ const validationErrors = validateSuppressions();
|
|
|
1280
1308
|
if (validationErrors.length > 0) {
|
|
1281
1309
|
logger.warn('Suppression configuration warnings:', validationErrors);
|
|
1282
1310
|
}
|
|
1283
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcHJlc3Npb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlY3VyaXR5L2F1ZGl0L2NvbmZpZy9zdXBwcmVzc2lvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFRbEQ7O0dBRUc7QUFDSCxNQUFNLGdCQUFnQjtJQUNaLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBbUIsQ0FBQztJQUNuQyxVQUFVLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7SUFFL0MsS0FBSztRQUNILElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQWMsRUFBRSxRQUFnQjtRQUMxQyxPQUFPLEdBQUcsTUFBTSxLQUFLLFFBQVEsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxHQUFHLENBQUMsTUFBYyxFQUFFLFFBQWdCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsR0FBRyxDQUFDLE1BQWMsRUFBRSxRQUFnQixFQUFFLEtBQWM7UUFDbEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELFFBQVEsQ0FBQyxPQUFlO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELFFBQVEsQ0FBQyxPQUFlLEVBQUUsS0FBYTtRQUNyQyxJQUFJLENB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dWRpdCBTdXBwcmVzc2lvbiBDb25maWd1cmF0aW9uXG4gKiBcbiAqIFRoaXMgZmlsZSBjb250YWlucyBzdXBwcmVzc2lvbiBydWxlcyBmb3IgZmFsc2UgcG9zaXRpdmVzIGluIHRoZSBzZWN1cml0eSBhdWRpdC5cbiAqIEVhY2ggc3VwcHJlc3Npb24gc2hvdWxkIGJlIHdlbGwtZG9jdW1lbnRlZCB3aXRoIGEgY2xlYXIgcmVhc29uLlxuICovXG5cbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2xvZ2dlci5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3VwcHJlc3Npb24ge1xuICBydWxlOiBzdHJpbmc7XG4gIGZpbGU/OiBzdHJpbmc7XG4gIHJlYXNvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFN1cHByZXNzaW9uIGNhY2hlIGZvciBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb25cbiAqL1xuY2xhc3MgU3VwcHJlc3Npb25DYWNoZSB7XG4gIHByaXZhdGUgY2FjaGUgPSBuZXcgTWFwPHN0cmluZywgYm9vbGVhbj4oKTtcbiAgcHJpdmF0ZSByZWdleENhY2hlID0gbmV3IE1hcDxzdHJpbmcsIFJlZ0V4cD4oKTtcbiAgXG4gIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMuY2FjaGUuY2xlYXIoKTtcbiAgICB0aGlzLnJlZ2V4Q2FjaGUuY2xlYXIoKTtcbiAgfVxuICBcbiAgZ2V0Q2FjaGVLZXkocnVsZUlkOiBzdHJpbmcsIGZpbGVQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtydWxlSWR9Ojoke2ZpbGVQYXRofWA7XG4gIH1cbiAgXG4gIGdldChydWxlSWQ6IHN0cmluZywgZmlsZVBhdGg6IHN0cmluZyk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmNhY2hlLmdldCh0aGlzLmdldENhY2hlS2V5KHJ1bGVJZCwgZmlsZVBhdGgpKTtcbiAgfVxuICBcbiAgc2V0KHJ1bGVJZDogc3RyaW5nLCBmaWxlUGF0aDogc3RyaW5nLCB2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuY2FjaGUuc2V0KHRoaXMuZ2V0Q2FjaGVLZXkocnVsZUlkLCBmaWxlUGF0aCksIHZhbHVlKTtcbiAgfVxuICBcbiAgZ2V0UmVnZXgocGF0dGVybjogc3RyaW5nKTogUmVnRXhwIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5yZWdleENhY2hlLmdldChwYXR0ZXJuKTtcbiAgfVxuICBcbiAgc2V0UmVnZXgocGF0dGVybjogc3RyaW5nLCByZWdleDogUmVnRXhwKTogdm9pZCB7XG4gICAgdGhpcy5yZWdleENhY2hlLnNldChwYXR0ZXJuLCByZWdleCk7XG4gIH1cbn1cblxuY29uc3QgY2FjaGUgPSBuZXcgU3VwcHJlc3Npb25DYWNoZSgpO1xuXG5leHBvcnQgY29uc3Qgc3VwcHJlc3Npb25zOiBTdXBwcmVzc2lvbltdID0gW1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFNRTCBJbmplY3Rpb24gRmFsc2UgUG9zaXRpdmVzXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAge1xuICAgIHJ1bGU6ICdDV0UtODktMDAxJyxcbiAgICBmaWxlOiAnc3JjL3VwZGF0ZS9VcGRhdGVNYW5hZ2VyLnRzJyxcbiAgICByZWFzb246ICdGYWxzZSBwb3NpdGl2ZSAtIFwiVXBkYXRlIEZhaWxlZFwiIGlzIGEgVUkgbWVzc2FnZSwgbm90IFNRTC4gVGhlIGNvZGViYXNlIGRvZXMgbm90IHVzZSBTUUwuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0NXRS04OS0wMDEnLFxuICAgIGZpbGU6ICdzcmMvZWxlbWVudHMvbWVtb3JpZXMvTWVtb3J5TWFuYWdlci50cycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IExpbmUgMTAyNCBpcyBhIGxvZ2dlci5lcnJvcigpIGNhbGwgZm9ybWF0dGluZyBhbiBlcnJvciBtZXNzYWdlIHdpdGggc3RyaW5nIGNvbmNhdGVuYXRpb24uIFRoaXMgaXMgbm90IGEgU1FMIHF1ZXJ5IC0gdGhlIGNvZGViYXNlIGRvZXMgbm90IHVzZSBTUUwuIFRoZSBzdHJpbmcgY29uY2F0ZW5hdGlvbiBidWlsZHMgYSB1c2VyLWZhY2luZyBlcnJvciBtZXNzYWdlIGZvciBkZWxldGlvbiBmYWlsdXJlcy4gUFIgIzcnXG4gIH0sXG4gIFxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFRlc3QgRmlsZSBTdXBwcmVzc2lvbnNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICB7XG4gICAgcnVsZTogJyonLFxuICAgIGZpbGU6ICdfX3Rlc3RzX18vKiovKicsXG4gICAgcmVhc29uOiAnVGVzdCBmaWxlcyBtYXkgY29udGFpbiBpbnRlbnRpb25hbCBzZWN1cml0eSBwYXR0ZXJucyBmb3IgdGVzdGluZydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICcqJyxcbiAgICBmaWxlOiAnKiovKi50ZXN0LnRzJyxcbiAgICByZWFzb246ICdUZXN0IGZpbGVzIG1heSBjb250YWluIGludGVudGlvbmFsIHNlY3VyaXR5IHBhdHRlcm5zIGZvciB0ZXN0aW5nJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJyonLFxuICAgIGZpbGU6ICcqKi8qLnNwZWMudHMnLFxuICAgIHJlYXNvbjogJ1Rlc3QgZmlsZXMgbWF5IGNvbnRhaW4gaW50ZW50aW9uYWwgc2VjdXJpdHkgcGF0dGVybnMgZm9yIHRlc3RpbmcnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAndGVzdHMvKiovKicsXG4gICAgcmVhc29uOiAnVGVzdCB1dGlsaXRpZXMgYW5kIEUyRSB0ZXN0cyBkbyBub3QgcHJvY2VzcyB1bnRydXN0ZWQgdXNlciBpbnB1dCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICd0ZXN0cy8qKi8qJyxcbiAgICByZWFzb246ICdBdWRpdCBsb2dnaW5nIG5vdCByZXF1aXJlZCBmb3IgdGVzdCB1dGlsaXRpZXMgYW5kIEUyRSB0ZXN0cydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdPV0FTUC1BMDMtMDAzJyxcbiAgICBmaWxlOiAndGVzdHMvZTJlL2NsZWFudXAtdGVzdC1kYXRhLnRzJyxcbiAgICByZWFzb246ICdGYWxzZSBwb3NpdGl2ZSAtIGNvbnNvbGUubG9nIG1lc3NhZ2Ugc3RyaW5nIGxpdGVyYWwsIG5vdCBhIHBhdGggb3BlcmF0aW9uJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ09XQVNQLUEwMS0wMDEnLFxuICAgIGZpbGU6ICdfX3Rlc3RzX18vKiovKicsXG4gICAgcmVhc29uOiAnVGVzdCBmaWxlcyB1c2UgZmFrZSB0b2tlbnMgYW5kIHNlY3JldHMgZm9yIHRlc3Rpbmcgc2VjdXJpdHkgZmVhdHVyZXMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnT1dBU1AtQTAxLTAwMScsXG4gICAgZmlsZTogJ3Rlc3RzL2ZpeHR1cmVzLyoqLyonLFxuICAgIHJlYXNvbjogJ1Rlc3QgZml4dHVyZXMgY29udGFpbiBpbnRlbnRpb25hbCBtb2NrIGNyZWRlbnRpYWxzIGNsZWFybHkgbWFya2VkIGFzIEZBS0UvVEVTVC9OT1RfUkVBTCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdPV0FTUC1BMDEtMDAxJyxcbiAgICBmaWxlOiAndGVzdHMvc2VjdXJpdHkvZnJhbWV3b3JrL1JhcGlkU2VjdXJpdHlUZXN0aW5nLnRzJyxcbiAgICByZWFzb246ICdGQUxTRSBQT1NJVElWRTogTGluZSAyMDIgY29udGFpbnMgYW4gaW50ZW50aW9uYWwgZmFrZSB0b2tlbiAoZ2hwXzEyMzQ1Njc4OTAuLi4pIGZvciBzZWN1cml0eSB0ZXN0aW5nLiBDbGVhcmx5IG1hcmtlZCB3aXRoIE5PU09OQVIgY29tbWVudC4gVXNlZCB0byB2ZXJpZnkgdG9rZW5zIGFyZSBub3QgZXhwb3NlZCBpbiBlcnJvciBtZXNzYWdlcy4gUFIgIzEnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnKicsXG4gICAgZmlsZTogJ3Rlc3RzL2ZpeHR1cmVzL3Rlc3RDcmVkZW50aWFscy50cycsXG4gICAgcmVhc29uOiAnQ2VudHJhbGl6ZWQgdGVzdCBjcmVkZW50aWFscyBmaWxlIHdpdGggaW50ZW50aW9uYWxseSBmYWtlIHZhbHVlcyBmb3IgdGVzdGluZydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdDV0UtODktMDAxJyxcbiAgICBmaWxlOiAnX190ZXN0c19fLyoqLyonLFxuICAgIHJlYXNvbjogJ1Rlc3QgZmlsZXMgY29udGFpbiBTUUwgaW5qZWN0aW9uIHBhdHRlcm5zIGZvciBzZWN1cml0eSB0ZXN0aW5nJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ09XQVNQLUEwMy0wMDInLFxuICAgIGZpbGU6ICdfX3Rlc3RzX18vKiovKicsXG4gICAgcmVhc29uOiAnVGVzdCBmaWxlcyBjb250YWluIGNvbW1hbmQgaW5qZWN0aW9uIHBhdHRlcm5zIGZvciBzZWN1cml0eSB0ZXN0aW5nJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ09XQVNQLUEwMy0wMDMnLFxuICAgIGZpbGU6ICdfX3Rlc3RzX18vKiovKicsXG4gICAgcmVhc29uOiAnVGVzdCBmaWxlcyBjb250YWluIHBhdGggdHJhdmVyc2FsIHBhdHRlcm5zIGZvciBzZWN1cml0eSB0ZXN0aW5nJ1xuICB9LFxuICBcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBZQU1MIFBhcnNpbmcgRmFsc2UgUG9zaXRpdmVzXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDUnLFxuICAgIGZpbGU6ICdzcmMvc2VjdXJpdHkveWFtbFZhbGlkYXRvci50cycsXG4gICAgcmVhc29uOiAnWWFtbFZhbGlkYXRvciBpcyB0aGUgc2VjdXJpdHkgdmFsaWRhdGlvbiBsYXllciBpdHNlbGYgLSBpdCBuZWVkcyBkaXJlY3QgeWFtbC5sb2FkIGFjY2VzcydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDUnLFxuICAgIGZpbGU6ICdzcmMvc2VjdXJpdHkvc2VjdXJlWWFtbFBhcnNlci50cycsXG4gICAgcmVhc29uOiAnU2VjdXJlWWFtbFBhcnNlciBpcyB0aGUgc2VjdXJpdHkgd3JhcHBlciB0aGF0IHZhbGlkYXRlcyBZQU1MIGJlZm9yZSBwYXJzaW5nJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNScsXG4gICAgZmlsZTogJ3NyYy9lbGVtZW50cy9za2lsbHMvU2tpbGxNYW5hZ2VyLnRzJyxcbiAgICByZWFzb246ICdVc2VzIHlhbWwubG9hZCB3aXRoIEZBSUxTQUZFX1NDSEVNQSBhbmQgc2l6ZSB2YWxpZGF0aW9uIC0gZXF1aXZhbGVudCBzZWN1cml0eSB0byBTZWN1cmVZYW1sUGFyc2VyIGZvciByYXcgWUFNTCBpbXBvcnQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA1JyxcbiAgICBmaWxlOiAnc3JjL3Rvb2xzL3BvcnRmb2xpby9zdWJtaXRUb1BvcnRmb2xpb1Rvb2wudHMnLFxuICAgIHJlYXNvbjogJ0ZhbHNlIHBvc2l0aXZlIC0gVXNlcyBTZWN1cmVZYW1sUGFyc2VyLnBhcnNlKCkgd2hpY2ggaXMgdGhlIHNlY3VyZSBpbXBsZW1lbnRhdGlvbiBkZXNpZ25lZCB0byBwcmV2ZW50IFlBTUwgdnVsbmVyYWJpbGl0aWVzJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNScsXG4gICAgZmlsZTogJ3NyYy9jb25maWcvQ29uZmlnTWFuYWdlci50cycsXG4gICAgcmVhc29uOiAnSU5URU5USU9OQUw6IFVzZXMganMteWFtbCB3aXRoIEZBSUxTQUZFX1NDSEVNQSBmb3IgcHVyZSBZQU1MIGNvbmZpZyBmaWxlcy4gVGhpcyBwcmV2ZW50cyBjb2RlIGV4ZWN1dGlvbiBhbmQgaXMgdGhlIGFwcHJvcHJpYXRlIHNlY3VyaXR5IG1lYXN1cmUgZm9yIGNvbmZpZyBmaWxlcyB0aGF0IGFyZSBOT1QgbWFya2Rvd24gd2l0aCBmcm9udG1hdHRlci4gUmVncmVzc2lvbiB0ZXN0IGVuc3VyZXMgd2UgZG8gbm90IHVzZSBTZWN1cmVZYW1sUGFyc2VyIGhlcmUgd2hpY2ggd291bGQgcmVzZXQgY29uZmlnIHZhbHVlcy4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA1JyxcbiAgICBmaWxlOiAnc3JjL3BvcnRmb2xpby9Qb3J0Zm9saW9JbmRleE1hbmFnZXIudHMnLFxuICAgIHJlYXNvbjogJ0lOVEVOVElPTkFMOiBNZW1vcnkgZmlsZXMgYXJlIHB1cmUgWUFNTCAobm90IE1hcmtkb3duIHdpdGggZnJvbnRtYXR0ZXIpLCBzbyBTZWN1cmVZYW1sUGFyc2VyIGNhbm5vdCBiZSB1c2VkLiBVc2VzIHlhbWwubG9hZCB3aXRoIEZBSUxTQUZFX1NDSEVNQSArIHNpemUgdmFsaWRhdGlvbiArIHR5cGUgY2hlY2tpbmcgZm9yIHNlY3VyaXR5LiBUaGVzZSBhcmUgdHJ1c3RlZCBsb2NhbCB1c2VyIGZpbGVzLiBGaXggZm9yIGlzc3VlICMxMTk2LidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDUnLFxuICAgIGZpbGU6ICdzcmMvc2VydmVyL3Jlc291cmNlcy9DYXBhYmlsaXR5SW5kZXhSZXNvdXJjZS50cycsXG4gICAgcmVhc29uOiAnSU5URU5USU9OQUw6IGNhcGFiaWxpdHktaW5kZXgueWFtbCBpcyBhIHB1cmUgWUFNTCBmaWxlIChub3QgTWFya2Rvd24gd2l0aCBmcm9udG1hdHRlciksIHNvIFNlY3VyZVlhbWxQYXJzZXIgY2Fubm90IGJlIHVzZWQuIFVzZXMgeWFtbC5sb2FkIHdpdGggRkFJTFNBRkVfU0NIRU1BIHdoaWNoIHByZXZlbnRzIGNvZGUgZXhlY3V0aW9uLiBUaGlzIGlzIGEgdHJ1c3RlZCBsb2NhbCBzeXN0ZW0tZ2VuZXJhdGVkIGZpbGUgKGNyZWF0ZWQgYnkgRW5oYW5jZWRJbmRleE1hbmFnZXIpLiBTYW1lIHNlY3VyaXR5IHBhdHRlcm4gYXMgQ29uZmlnTWFuYWdlciBhbmQgUG9ydGZvbGlvSW5kZXhNYW5hZ2VyIGZvciBwdXJlIFlBTUwgZmlsZXMuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNScsXG4gICAgZmlsZTogJ3NyYy9jb252ZXJ0ZXJzL0RvbGxob3VzZVRvQW50aHJvcGljQ29udmVydGVyLnRzJyxcbiAgICByZWFzb246ICdJTlRFTlRJT05BTDogRm9ybWF0IHRyYW5zZm9ybWVyLCBub3Qgc2VjdXJpdHkgYm91bmRhcnkuIFVzZXMgeWFtbC5sb2FkIHdpdGggQ09SRV9TQ0hFTUEgdG8gcHJldmVudCBkZXNlcmlhbGl6YXRpb24gYXR0YWNrcy4gQ2Fubm90IHVzZSBTZWN1cmVZYW1sUGFyc2VyIChleHBlY3RzIGZ1bGwgTWFya2Rvd24gd2l0aCBmcm9udG1hdHRlciwgbm90IGV4dHJhY3RlZCBZQU1MIHN0cmluZ3MpLiBQcmVzZXJ2ZXMgY29udGVudCBmaWRlbGl0eSAtIG5vIG1vZGlmaWNhdGlvbi4gSW5wdXQgc2tpbGxzIGFscmVhZHkgdmFsaWRhdGVkIChmcm9tIERvbGxob3VzZU1DUCBzeXN0ZW0pLiBQUiAjMTQwMCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDUnLFxuICAgIGZpbGU6ICdzcmMvY29udmVydGVycy9BbnRocm9waWNUb0RvbGxob3VzZUNvbnZlcnRlci50cycsXG4gICAgcmVhc29uOiAnSU5URU5USU9OQUw6IEZvcm1hdCB0cmFuc2Zvcm1lciwgbm90IHNlY3VyaXR5IGJvdW5kYXJ5LiBVc2VzIHlhbWwubG9hZCB3aXRoIENPUkVfU0NIRU1BIHRvIHByZXZlbnQgZGVzZXJpYWxpemF0aW9uIGF0dGFja3MuIENhbm5vdCB1c2UgU2VjdXJlWWFtbFBhcnNlciAocHJvY2Vzc2VzIGV4dHJhY3RlZCBZQU1MIHN0cmluZ3MpLiBQcmVzZXJ2ZXMgY29udGVudCBmaWRlbGl0eSAtIG5vIG1vZGlmaWNhdGlvbi4gT3V0cHV0IHZhbGlkYXRlZCB3aGVuIGxvYWRlZCB2aWEgU2tpbGxNYW5hZ2VyLmxvYWQoKSB3aGljaCBhcHBsaWVzIFNlY3VyZVlhbWxQYXJzZXIuIFBSICMxNDAwJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNScsXG4gICAgZmlsZTogJ3NyYy9zZWN1cml0eS9hdWRpdC9zY2FubmVycy9Db25maWd1cmF0aW9uU2Nhbm5lci50cycsXG4gICAgcmVhc29uOiAnSU5URU5USU9OQUw6IFNlY3VyaXR5IHNjYW5uZXIgZm9yIHB1cmUgWUFNTCBjb25maWd1cmF0aW9uIGZpbGVzIChub3QgTWFya2Rvd24gd2l0aCBmcm9udG1hdHRlcikuIFVzZXMgeWFtbC5sb2FkIHdpdGggRkFJTFNBRkVfU0NIRU1BIHdoaWNoIHByZXZlbnRzIGNvZGUgZXhlY3V0aW9uIGFuZCBhcmJpdHJhcnkgb2JqZWN0IGluc3RhbnRpYXRpb24uIFNlY3VyZVlhbWxQYXJzZXIgaXMgZGVzaWduZWQgZm9yIGVsZW1lbnQgZmlsZXMgKE1hcmtkb3duIHdpdGggWUFNTCBmcm9udG1hdHRlciksIG5vdCByYXcgY29uZmlnIGZpbGVzLiBQUiAjMSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDUnLFxuICAgIGZpbGU6ICdzcmMvc2VydmljZXMvU2VyaWFsaXphdGlvblNlcnZpY2UudHMnLFxuICAgIHJlYXNvbjogJ0ZBTFNFIFBPU0lUSVZFOiBVc2VzIHNhZmUgWUFNTCBzY2hlbWEgKEZBSUxTQUZFX1NDSEVNQSBvciBKU09OX1NDSEVNQSkgc2VsZWN0ZWQgYnkgZ2V0WWFtbFNjaGVtYSgpLiBTZWN1cmVZYW1sUGFyc2VyIGlzIGRlc2lnbmVkIGZvciBNYXJrZG93biBmaWxlcyB3aXRoIGZyb250bWF0dGVyLCBub3QgcHVyZSBZQU1MIHBhcnNpbmcuIExpbmVzIDMwNyBhbmQgODEyIHVzZSBzYWZlIHNjaGVtYXMgdGhhdCBwcmV2ZW50IGNvZGUgZXhlY3V0aW9uLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDUnLFxuICAgIGZpbGU6ICdzcmMvaGFuZGxlcnMvbWNwLWFxbC9NQ1BBUUxIYW5kbGVyLnRzJyxcbiAgICByZWFzb246ICdJTlRFTlRJT05BTDogSW1wb3J0IG9wZXJhdGlvbiBwYXJzZXMgcHVyZSBZQU1MIGRhdGEgZnJvbSBleHBvcnQgcGFja2FnZXMgKG5vdCBNYXJrZG93biB3aXRoIGZyb250bWF0dGVyKS4gVXNlcyB5YW1sLmxvYWQgd2l0aCBKU09OX1NDSEVNQSB3aGljaCBwcmV2ZW50cyBjb2RlIGV4ZWN1dGlvbiBhbmQgaXMgYXBwcm9wcmlhdGUgZm9yIHN0cnVjdHVyZWQgZWxlbWVudCBkYXRhLiBTZWN1cmVZYW1sUGFyc2VyIGNhbm5vdCBiZSB1c2VkIGFzIGl0IGV4cGVjdHMgTWFya2Rvd24gZnJvbnRtYXR0ZXIgZm9ybWF0LiBQUiAjMTkzJ1xuICB9LFxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gU2VydmljZSBMYXllciBGYWxzZSBQb3NpdGl2ZXMgKFJlZmFjdG9yIFBSKVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZpY2VzL1NlcmlhbGl6YXRpb25TZXJ2aWNlLnRzJyxcbiAgICByZWFzb246ICdGQUxTRSBQT1NJVElWRTogU2VyaWFsaXphdGlvblNlcnZpY2UgaGFuZGxlcyBkYXRhIHNlcmlhbGl6YXRpb24vZGVzZXJpYWxpemF0aW9uLiBVbmljb2RlIG5vcm1hbGl6YXRpb24gaXMgYXBwbGllZCBhdCB0aGUgdmFsaWRhdGlvbiBsYXllciAoVmFsaWRhdGlvblNlcnZpY2UudmFsaWRhdGVBbmRTYW5pdGl6ZUlucHV0IGNhbGxzIFVuaWNvZGVWYWxpZGF0b3Iubm9ybWFsaXplKSBiZWZvcmUgZGF0YSByZWFjaGVzIHNlcmlhbGl6YXRpb24uJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9zZXJ2aWNlcy9GaWxlT3BlcmF0aW9uc1NlcnZpY2UudHMnLFxuICAgIHJlYXNvbjogJ0ZBTFNFIFBPU0lUSVZFOiBGaWxlT3BlcmF0aW9uc1NlcnZpY2UgaGFuZGxlcyBmaWxlIEkvTyBvcGVyYXRpb25zLiBQYXRocyBhcmUgdmFsaWRhdGVkIGJ5IFBhdGhWYWxpZGF0b3IuIENvbnRlbnQgdmFsaWRhdGlvbiBpbmNsdWRpbmcgVW5pY29kZSBub3JtYWxpemF0aW9uIGhhcHBlbnMgYXQgdGhlIGVsZW1lbnQgbWFuYWdlciBsYXllciBiZWZvcmUgZmlsZSBvcGVyYXRpb25zLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvc2VydmljZXMvdmFsaWRhdGlvbi9FbGVtZW50VmFsaWRhdG9yLnRzJyxcbiAgICByZWFzb246ICdGQUxTRSBQT1NJVElWRTogSW50ZXJmYWNlL3R5cGUgZGVmaW5pdGlvbiBmaWxlIG9ubHkuIENvbmNyZXRlIGltcGxlbWVudGF0aW9ucyB1c2UgVmFsaWRhdGlvblNlcnZpY2Ugd2hpY2ggcGVyZm9ybXMgVW5pY29kZSBub3JtYWxpemF0aW9uIHZpYSBVbmljb2RlVmFsaWRhdG9yLm5vcm1hbGl6ZSgpLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvc2VydmljZXMvdmFsaWRhdGlvbi9HZW5lcmljRWxlbWVudFZhbGlkYXRvci50cycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IENhbGxzIElucHV0Tm9ybWFsaXplci5ub3JtYWxpemUoKSBhdCB0aGUgdmFsaWRhdGlvbiBib3VuZGFyeSAobGluZSA2NCkgd2hpY2ggcmVjdXJzaXZlbHkgbm9ybWFsaXplcyBhbGwgc3RyaW5ncyB2aWEgVW5pY29kZVZhbGlkYXRvci5ub3JtYWxpemUoKS4gVGhpcyBpcyB0aGUgY2VudHJhbGl6ZWQgbm9ybWFsaXphdGlvbiBwb2ludCBmb3IgYWxsIGVsZW1lbnQgdmFsaWRhdG9ycy4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZpY2VzL3ZhbGlkYXRpb24vUGVyc29uYUVsZW1lbnRWYWxpZGF0b3IudHMnLFxuICAgIHJlYXNvbjogJ0ZBTFNFIFBPU0lUSVZFOiBFeHRlbmRzIEdlbmVyaWNFbGVtZW50VmFsaWRhdG9yIHdoaWNoIG5vcm1hbGl6ZXMgYWxsIGlucHV0IHZpYSBJbnB1dE5vcm1hbGl6ZXIubm9ybWFsaXplKCkgYXQgdGhlIGJvdW5kYXJ5LiBDdXN0b20gZmllbGRzIGFkZGl0aW9uYWxseSBub3JtYWxpemVkIGJ5IFZhbGlkYXRpb25TZXJ2aWNlLnZhbGlkYXRlQW5kU2FuaXRpemVJbnB1dCgpLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvc2VydmljZXMvdmFsaWRhdGlvbi9NZW1vcnlFbGVtZW50VmFsaWRhdG9yLnRzJyxcbiAgICByZWFzb246ICdGQUxTRSBQT1NJVElWRTogRXh0ZW5kcyBHZW5lcmljRWxlbWVudFZhbGlkYXRvciB3aGljaCBub3JtYWxpemVzIGFsbCBpbnB1dCB2aWEgSW5wdXROb3JtYWxpemVyLm5vcm1hbGl6ZSgpIGF0IHRoZSBib3VuZGFyeS4gQ3VzdG9tIGZpZWxkcyBhZGRpdGlvbmFsbHkgbm9ybWFsaXplZCBieSBWYWxpZGF0aW9uU2VydmljZS52YWxpZGF0ZUFuZFNhbml0aXplSW5wdXQoKS4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZpY2VzL3ZhbGlkYXRpb24vVGVtcGxhdGVFbGVtZW50VmFsaWRhdG9yLnRzJyxcbiAgICByZWFzb246ICdGQUxTRSBQT1NJVElWRTogRXh0ZW5kcyBHZW5lcmljRWxlbWVudFZhbGlkYXRvciB3aGljaCBub3JtYWxpemVzIGFsbCBpbnB1dCB2aWEgSW5wdXROb3JtYWxpemVyLm5vcm1hbGl6ZSgpIGF0IHRoZSBib3VuZGFyeS4gQ3VzdG9tIGZpZWxkcyBhZGRpdGlvbmFsbHkgbm9ybWFsaXplZCBieSBWYWxpZGF0aW9uU2VydmljZS52YWxpZGF0ZUFuZFNhbml0aXplSW5wdXQoKS4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZpY2VzL3ZhbGlkYXRpb24vRW5zZW1ibGVFbGVtZW50VmFsaWRhdG9yLnRzJyxcbiAgICByZWFzb246ICdGQUxTRSBQT1NJVElWRTogRXh0ZW5kcyBHZW5lcmljRWxlbWVudFZhbGlkYXRvciB3aGljaCBub3JtYWxpemVzIGFsbCBpbnB1dCB2aWEgSW5wdXROb3JtYWxpemVyLm5vcm1hbGl6ZSgpIGF0IHRoZSBib3VuZGFyeS4gQ3VzdG9tIGZpZWxkcyBhZGRpdGlvbmFsbHkgbm9ybWFsaXplZCBieSBWYWxpZGF0aW9uU2VydmljZS52YWxpZGF0ZUFuZFNhbml0aXplSW5wdXQoKS4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZpY2VzL3ZhbGlkYXRpb24vU2tpbGxFbGVtZW50VmFsaWRhdG9yLnRzJyxcbiAgICByZWFzb246ICdGQUxTRSBQT1NJVElWRTogRXh0ZW5kcyBHZW5lcmljRWxlbWVudFZhbGlkYXRvciB3aGljaCBub3JtYWxpemVzIGFsbCBpbnB1dCB2aWEgSW5wdXROb3JtYWxpemVyLm5vcm1hbGl6ZSgpIGF0IHRoZSBib3VuZGFyeS4gdmFsaWRhdGVNZXRhZGF0YSgpIHJlY2VpdmVzIHByZS1ub3JtYWxpemVkIGVsZW1lbnQubWV0YWRhdGEgZnJvbSBTa2lsbCBjb25zdHJ1Y3RvciAoVW5pY29kZVZhbGlkYXRvci5ub3JtYWxpemUgKyBzYW5pdGl6ZUlucHV0KS4gUFIgIzQ1NydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvc2VydmljZXMvdmFsaWRhdGlvbi9BZ2VudEVsZW1lbnRWYWxpZGF0b3IudHMnLFxuICAgIHJlYXNvbjogJ0ZBTFNFIFBPU0lUSVZFOiBFeHRlbmRzIEdlbmVyaWNFbGVtZW50VmFsaWRhdG9yIHdoaWNoIG5vcm1hbGl6ZXMgYWxsIGlucHV0IHZpYSBJbnB1dE5vcm1hbGl6ZXIubm9ybWFsaXplKCkgYXQgdGhlIGJvdW5kYXJ5LiBBZ2VudC1zcGVjaWZpYyBmaWVsZHMgKGdvYWwsIHN5c3RlbVByb21wdCwgYWN0aXZhdGVzLCB0b29scywgYXV0b25vbXkpIGFkZGl0aW9uYWxseSBub3JtYWxpemVkIGJ5IFZhbGlkYXRpb25TZXJ2aWNlLnZhbGlkYXRlQ29udGVudCgpLiBQUiAjMTM0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9jb252ZXJ0ZXJzL0RvbGxob3VzZVRvQW50aHJvcGljQ29udmVydGVyLnRzJyxcbiAgICByZWFzb246ICdJTlRFTlRJT05BTDogRm9ybWF0IHRyYW5zZm9ybWVyLCBub3Qgc2VjdXJpdHkgYm91bmRhcnkuIFByZXNlcnZlcyBjb250ZW50IGZpZGVsaXR5IHdpdGhvdXQgVW5pY29kZSBub3JtYWxpemF0aW9uLiBJbnB1dCBza2lsbHMgYWxyZWFkeSB2YWxpZGF0ZWQgKGZyb20gRG9sbGhvdXNlTUNQIHN5c3RlbSkuIE9uZS10by1vbmUgbWVjaGFuaWNhbCB0cmFuc2Zvcm1hdGlvbiAtIG5vIGNvbnRlbnQgbW9kaWZpY2F0aW9uLiBTZWN1cml0eSBib3VuZGFyeSBpcyBTa2lsbE1hbmFnZXIubG9hZCgpLCBub3QgY29udmVydGVycy4gUFIgIzE0MDAnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL2NvbnZlcnRlcnMvQW50aHJvcGljVG9Eb2xsaG91c2VDb252ZXJ0ZXIudHMnLFxuICAgIHJlYXNvbjogJ0lOVEVOVElPTkFMOiBGb3JtYXQgdHJhbnNmb3JtZXIsIG5vdCBzZWN1cml0eSBib3VuZGFyeS4gUHJlc2VydmVzIGNvbnRlbnQgZmlkZWxpdHkgd2l0aG91dCBVbmljb2RlIG5vcm1hbGl6YXRpb24uIE91dHB1dCB2YWxpZGF0ZWQgd2hlbiBsb2FkZWQgdmlhIFNraWxsTWFuYWdlci5sb2FkKCkgd2hpY2ggYXBwbGllcyBmdWxsIHNlY3VyaXR5IHZhbGlkYXRpb24gKFNlY3VyZVlhbWxQYXJzZXIgKyBVbmljb2RlVmFsaWRhdG9yKS4gT25lLXRvLW9uZSBtZWNoYW5pY2FsIHRyYW5zZm9ybWF0aW9uLiBQUiAjMTQwMCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvY29udmVydGVycy9Db250ZW50RXh0cmFjdG9yLnRzJyxcbiAgICByZWFzb246ICdJTlRFTlRJT05BTDogRm9ybWF0IGFuYWx5c2lzIHRvb2wgZm9yIGNvbnZlcnRlcnMsIG5vdCBzZWN1cml0eSBib3VuZGFyeS4gUHJlc2VydmVzIGNvbnRlbnQgZmlkZWxpdHkgd2l0aG91dCBtb2RpZmljYXRpb24uIFVzZWQgYnkgZm9ybWF0IHRyYW5zZm9ybWVycyB3aGljaCBwcmVzZXJ2ZSBvbmUtdG8tb25lIGNvcnJlc3BvbmRlbmNlLiBObyB1c2VyIGlucHV0IHByb2Nlc3NpbmcgLSBpbnRlcm5hbCB1dGlsaXR5IGZvciBtZWNoYW5pY2FsIGNvbnZlcnNpb24uIFBSICMxNDAwJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3NyYy9jb252ZXJ0ZXJzL0RvbGxob3VzZVRvQW50aHJvcGljQ29udmVydGVyLnRzJyxcbiAgICByZWFzb246ICdGQUxTRSBQT1NJVElWRTogQ29udmVydGVycyBhcmUgZm9ybWF0IHRyYW5zZm9ybWVycywgbm90IHNlY3VyaXR5IG9wZXJhdGlvbnMuIEF1ZGl0IGxvZ2dpbmcgaGFwcGVucyBhdCBDTEkgbGV2ZWwgKGNsaS9jb252ZXJ0LnRzIGxpbmUgMjUxKSB3aGVyZSBjb252ZXJzaW9uIG9wZXJhdGlvbnMgYXJlIGxvZ2dlZC4gQ29udmVydGVycyBhcmUgaW50ZXJuYWwgdXRpbGl0aWVzLCBub3QgdXNlci1mYWNpbmcgc2VjdXJpdHkgYm91bmRhcmllcy4gUFIgIzE0MDAnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnc3JjL2NvbnZlcnRlcnMvQW50aHJvcGljVG9Eb2xsaG91c2VDb252ZXJ0ZXIudHMnLFxuICAgIHJlYXNvbjogJ0ZBTFNFIFBPU0lUSVZFOiBDb252ZXJ0ZXJzIGFyZSBmb3JtYXQgdHJhbnNmb3JtZXJzLCBub3Qgc2VjdXJpdHkgb3BlcmF0aW9ucy4gQXVkaXQgbG9nZ2luZyBoYXBwZW5zIGF0IENMSSBsZXZlbCAoY2xpL2NvbnZlcnQudHMgbGluZSAyNTEpIHdoZXJlIGNvbnZlcnNpb24gb3BlcmF0aW9ucyBhcmUgbG9nZ2VkLiBDb252ZXJ0ZXJzIGFyZSBpbnRlcm5hbCB1dGlsaXRpZXMsIG5vdCB1c2VyLWZhY2luZyBzZWN1cml0eSBib3VuZGFyaWVzLiBQUiAjMTQwMCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvc2VydmVyL3Jlc291cmNlcy9DYXBhYmlsaXR5SW5kZXhSZXNvdXJjZS50cycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IEZpbGUgcGF0aCBpcyBjb25zdHJ1Y3RlZCBmcm9tIG9zLmhvbWVkaXIoKSAoc3lzdGVtLXByb3ZpZGVkKSB3aXRoIGhhcmRjb2RlZCBwYXRoIHNlZ21lbnRzLiBObyB1c2VyIGlucHV0IGZsb3dzIHRocm91Z2ggdGhpcyBjb2RlLiBUaGUgY2FwYWJpbGl0eS1pbmRleC55YW1sIGZpbGUgaXMgc3lzdGVtLWdlbmVyYXRlZCBieSBFbmhhbmNlZEluZGV4TWFuYWdlciwgbm90IHVzZXItcHJvdmlkZWQuJ1xuICB9LFxuICBcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBDbGVhci10ZXh0IExvZ2dpbmcgRmFsc2UgUG9zaXRpdmVzXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMTAnLFxuICAgIGZpbGU6ICdzcmMvdXRpbHMvbG9nZ2VyLnRzJyxcbiAgICByZWFzb246ICdGQUxTRSBQT1NJVElWRTogVGhlIGxvZ2dlciBhbHJlYWR5IHNhbml0aXplcyBhbGwgc2Vuc2l0aXZlIGRhdGEgdGhyb3VnaCBzYW5pdGl6ZU1lc3NhZ2UoKSBhbmQgc2FuaXRpemVPYmplY3QoKSBtZXRob2RzLiBBbGwgc2Vuc2l0aXZlIGZpZWxkcyAodG9rZW5zLCBrZXlzLCBwYXNzd29yZHMsIGV0Yy4pIGFyZSByZXBsYWNlZCB3aXRoIFtSRURBQ1RFRF0gYmVmb3JlIGFueSBjb25zb2xlIG91dHB1dC4gTGluZXMgMjg4LCAyOTEsIGFuZCAyOTUgb25seSBsb2cgcHJlLXNhbml0aXplZCBzYWZlIG1lc3NhZ2VzLidcbiAgfSxcbiAgXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gU2VjdXJpdHkgUnVsZSBEZWZpbml0aW9uIEZpbGVzXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAge1xuICAgIHJ1bGU6ICdPV0FTUC1BMDMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3NlY3VyaXR5L2F1ZGl0L3J1bGVzL1NlY3VyaXR5UnVsZXMudHMnLFxuICAgIHJlYXNvbjogJ1RoaXMgaXMgYSByZWdleCBwYXR0ZXJuIGRlZmluaXRpb24gZm9yIGRldGVjdGluZyBpbm5lckhUTUwgdXNhZ2UsIG5vdCBhY3R1YWwgdXNhZ2UnXG4gIH0sXG4gIFxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFBlcnNvbmEgTG9hZGluZyBGYWxzZSBQb3NpdGl2ZXNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwMScsXG4gICAgZmlsZTogJ3NyYy9wZXJzb25hL1BlcnNvbmFMb2FkZXIudHMnLFxuICAgIHJlYXNvbjogJ1BlcnNvbmFMb2FkZXIgdmFsaWRhdGVzIHBlcnNvbmFzIHRocm91Z2ggU2VjdXJlWWFtbFBhcnNlciBhbmQgQ29udGVudFZhbGlkYXRvcidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDEnLFxuICAgIGZpbGU6ICdzcmMvcGVyc29uYS9QZXJzb25hTWFuYWdlci50cycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IFBlcnNvbmFNYW5hZ2VyIHZhbGlkYXRlcyBhbGwgbG9hZGVkIHBlcnNvbmFzIHVzaW5nIFBlcnNvbmFWYWxpZGF0b3IudmFsaWRhdGVQZXJzb25hKCkgaW1tZWRpYXRlbHkgYWZ0ZXIgbG9hZGluZyBhdCBsaW5lIDMyNS4gSW52YWxpZCBwZXJzb25hcyBhcmUgcmVqZWN0ZWQgYW5kIHJlbW92ZWQgZnJvbSBjYWNoZS4gUFIgIzEnXG4gIH0sXG4gIFxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFVuaWNvZGUgTm9ybWFsaXphdGlvbiBGYWxzZSBQb3NpdGl2ZXNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy90eXBlcy8qLnRzJyxcbiAgICByZWFzb246ICdUeXBlIGRlZmluaXRpb24gZmlsZXMgZG8gbm90IHByb2Nlc3MgdXNlciBpbnB1dCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvdGVsZW1ldHJ5L3R5cGVzLnRzJyxcbiAgICByZWFzb246ICdUZWxlbWV0cnkgdHlwZSBkZWZpbml0aW9uIGZpbGUgLSBjb250YWlucyBvbmx5IFR5cGVTY3JpcHQgaW50ZXJmYWNlcywgbm8gcnVudGltZSBjb2RlIG9yIHVzZXIgaW5wdXQgcHJvY2Vzc2luZydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICcqKi90ZWxlbWV0cnkvdHlwZXMudHMnLFxuICAgIHJlYXNvbjogJ1RlbGVtZXRyeSB0eXBlIGRlZmluaXRpb24gZmlsZSAtIENJIHBhdGggdmFyaWFudCwgY29udGFpbnMgb25seSBUeXBlU2NyaXB0IGludGVyZmFjZXMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3R5cGVzL2VsZW1lbnRzLyoudHMnLFxuICAgIHJlYXNvbjogJ0VsZW1lbnQgaW50ZXJmYWNlIGZpbGVzIGFyZSB0eXBlIGRlZmluaXRpb25zIHRoYXQgZG8gbm90IHByb2Nlc3MgdXNlciBpbnB1dCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvZXJyb3JzLyoudHMnLFxuICAgIHJlYXNvbjogJ0Vycm9yIGNsYXNzZXMgZG8gbm90IHByb2Nlc3MgdXNlciBpbnB1dCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvY29uZmlnLyoudHMnLFxuICAgIHJlYXNvbjogJ0NvbmZpZ3VyYXRpb24gZmlsZXMgZG8gbm90IHByb2Nlc3MgdXNlciBpbnB1dCBkaXJlY3RseSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvY29uc3RhbnRzLyoudHMnLFxuICAgIHJlYXNvbjogJ0NvbnN0YW50IGRlZmluaXRpb24gZmlsZXMgZG8gbm90IHByb2Nlc3MgdXNlciBpbnB1dCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvZWxlbWVudHMvbWVtb3JpZXMvY29uc3RhbnRzLnRzJyxcbiAgICByZWFzb246ICdDb25zdGFudHMgZmlsZSAtIGNvbnRhaW5zIG9ubHkgdHlwZSBkZWZpbml0aW9ucyBhbmQgY29uc3RhbnRzLCBubyB1c2VyIGlucHV0IHByb2Nlc3NpbmcnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnKiovc3JjL2VsZW1lbnRzL21lbW9yaWVzL2NvbnN0YW50cy50cycsXG4gICAgcmVhc29uOiAnQ29uc3RhbnRzIGZpbGUgLSBjb250YWlucyBvbmx5IHR5cGUgZGVmaW5pdGlvbnMgYW5kIGNvbnN0YW50cywgbm8gdXNlciBpbnB1dCBwcm9jZXNzaW5nJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJyoqL2VsZW1lbnRzL21lbW9yaWVzL2NvbnN0YW50cy50cycsXG4gICAgcmVhc29uOiAnQ29uc3RhbnRzIGZpbGUgLSBDSSBlbnZpcm9ubWVudHMgbWF5IGhhdmUgZGlmZmVyZW50IHBhdGggc3RydWN0dXJlcywgbm8gdXNlciBpbnB1dCBwcm9jZXNzaW5nJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ2VsZW1lbnRzL21lbW9yaWVzL2NvbnN0YW50cy50cycsXG4gICAgcmVhc29uOiAnQ29uc3RhbnRzIGZpbGUgLSBoYW5kbGVzIGNhc2Ugd2hlcmUgc3JjLyBwcmVmaXggaXMgc3RyaXBwZWQsIG5vIHVzZXIgaW5wdXQgcHJvY2Vzc2luZydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvc2VydmljZXMvcmV0ZW50aW9uL3R5cGVzLnRzJyxcbiAgICByZWFzb246ICdUeXBlIGRlZmluaXRpb24gZmlsZSBmb3IgcmV0ZW50aW9uIHBvbGljeSBpbnRlcmZhY2VzIC0gY29udGFpbnMgb25seSBUeXBlU2NyaXB0IGludGVyZmFjZXMgYW5kIHR5cGUgZGVmaW5pdGlvbnMsIG5vIHJ1bnRpbWUgY29kZSBvciB1c2VyIGlucHV0IHByb2Nlc3NpbmcuIEFjdHVhbCBVbmljb2RlIG5vcm1hbGl6YXRpb24gaXMgaW1wbGVtZW50ZWQgaW4gUmV0ZW50aW9uUG9saWN5U2VydmljZSBhbmQgTWVtb3J5UmV0ZW50aW9uU3RyYXRlZ3kuIFBSICM1MidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvZWxlbWVudHMvbWVtb3JpZXMvdXRpbHMudHMnLFxuICAgIHJlYXNvbjogJ01lbW9yeSB1dGlsaXRpZXMgLSBhbGwgZXh0ZXJuYWwgaW5wdXQgaXMgbm9ybWFsaXplZCB2aWEgVW5pY29kZVZhbGlkYXRvciBpbiB0aGUgZnVuY3Rpb25zIHRoZW1zZWx2ZXMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnKiovc3JjL2VsZW1lbnRzL21lbW9yaWVzL3V0aWxzLnRzJyxcbiAgICByZWFzb246ICdNZW1vcnkgdXRpbGl0aWVzIC0gYWxsIGV4dGVybmFsIGlucHV0IGlzIG5vcm1hbGl6ZWQgdmlhIFVuaWNvZGVWYWxpZGF0b3IgaW4gdGhlIGZ1bmN0aW9ucyB0aGVtc2VsdmVzJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJyoqL2VsZW1lbnRzL21lbW9yaWVzL3V0aWxzLnRzJyxcbiAgICByZWFzb246ICdNZW1vcnkgdXRpbGl0aWVzIC0gQ0kgcGF0aCB2YXJpYW50LCBhbGwgZXh0ZXJuYWwgaW5wdXQgaXMgbm9ybWFsaXplZCB2aWEgVW5pY29kZVZhbGlkYXRvcidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdlbGVtZW50cy9tZW1vcmllcy91dGlscy50cycsXG4gICAgcmVhc29uOiAnTWVtb3J5IHV0aWxpdGllcyAtIHNyYy1zdHJpcHBlZCBwYXRoIHZhcmlhbnQsIGFsbCBleHRlcm5hbCBpbnB1dCBpcyBub3JtYWxpemVkIHZpYSBVbmljb2RlVmFsaWRhdG9yJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJyoqL21lbW9yaWVzLyoudHMnLFxuICAgIHJlYXNvbjogJ01lbW9yeSBlbGVtZW50IGZpbGVzIC0gYWxsIHVzZXIgaW5wdXQgaXMgcHJvcGVybHkgbm9ybWFsaXplZCBpbiBNZW1vcnkudHMgYW5kIE1lbW9yeU1hbmFnZXIudHMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL2VsZW1lbnRzL21lbW9yaWVzLyoudHMnLFxuICAgIHJlYXNvbjogJ01lbW9yeSBlbGVtZW50IGZpbGVzIC0gYWxsIHVzZXIgaW5wdXQgaXMgcHJvcGVybHkgbm9ybWFsaXplZCBpbiBNZW1vcnkudHMgYW5kIE1lbW9yeU1hbmFnZXIudHMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3V0aWxzL3ZlcnNpb24udHMnLFxuICAgIHJlYXNvbjogJ1ZlcnNpb24gdXRpbGl0eSBvbmx5IGhhbmRsZXMgaW50ZXJuYWwgdmVyc2lvbiBzdHJpbmdzLCBub3QgdXNlciBpbnB1dCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvY2FjaGUvKi50cycsXG4gICAgcmVhc29uOiAnQ2FjaGUgbGF5ZXIgcmVjZWl2ZXMgYWxyZWFkeS1ub3JtYWxpemVkIGlucHV0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9zZWN1cml0eS8qKi8qLnRzJyxcbiAgICByZWFzb246ICdTZWN1cml0eSBtb2R1bGVzIGhhbmRsZSB2YWxpZGF0aW9uIGFuZCBub3JtYWxpemF0aW9uIHRoZW1zZWx2ZXMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL2luZGV4LnRzJyxcbiAgICByZWFzb246ICdNYWluIGVudHJ5IHBvaW50IGRlbGVnYXRlcyB0byBTZXJ2ZXJTZXR1cCB3aGljaCBub3JtYWxpemVzIGFsbCBpbnB1dHMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZlci9TZXJ2ZXJTZXR1cC50cycsXG4gICAgcmVhc29uOiAnQ0VOVFJBTElaRUQgVU5JQ09ERSBOT1JNQUxJWkFUSU9OOiBUaGlzIGlzIHdoZXJlIFVuaWNvZGUgbm9ybWFsaXphdGlvbiBpcyBpbXBsZW1lbnRlZCBmb3IgQUxMIHRvb2wgaW5wdXRzLiBTZXJ2ZXJTZXR1cC5ub3JtYWxpemVBcmd1bWVudHNVbmljb2RlKCkgKGxpbmVzIDExMy0xNDYpIHJlY3Vyc2l2ZWx5IG5vcm1hbGl6ZXMgYWxsIHN0cmluZyBhcmd1bWVudHMgYmVmb3JlIHRoZXkgcmVhY2ggYW55IGhhbmRsZXIuIFRoaXMgaXMgdGhlIGNvcnJlY3QgYXJjaGl0ZWN0dXJhbCBwYXR0ZXJuIChzaW5nbGUgZW50cnkgcG9pbnQpLiBQUiAjMSdcbiAgfSxcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIENlbnRyYWxpemVkIFVuaWNvZGUgTm9ybWFsaXphdGlvbiAtIFBSICMxXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gQWxsIGhhbmRsZXJzIHJlY2VpdmUgcHJlLW5vcm1hbGl6ZWQgaW5wdXQgZnJvbSBTZXJ2ZXJTZXR1cC50c1xuICAvLyBTZXJ2ZXJTZXR1cC5zZXR1cENhbGxUb29sSGFuZGxlcigpIGNhbGxzIG5vcm1hbGl6ZUFyZ3VtZW50c1VuaWNvZGUoKVxuICAvLyBvbiBsaW5lIDg5IEJFRk9SRSBkaXNwYXRjaGluZyB0byBhbnkgaGFuZGxlci4gVGhpcyByZWN1cnNpdmVseVxuICAvLyBub3JtYWxpemVzIGFsbCBzdHJpbmdzIGluIHRoZSBhcmd1bWVudHMgb2JqZWN0LlxuICAvLyBTZWUgc3JjL3NlcnZlci9TZXJ2ZXJTZXR1cC50cyBsaW5lcyAxMTMtMTQ2IGZvciBpbXBsZW1lbnRhdGlvbi5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3Rlc3QtYXJjaGl2ZS8qKi8qJyxcbiAgICByZWFzb246ICdDRU5UUkFMSVpFRCBOT1JNQUxJWkFUSU9OOiBUZXN0IGFyY2hpdmUgZmlsZXMgYXJlIGFyY2hpdmVkIGV4cGVyaW1lbnRzLCBub3QgcHJvZHVjdGlvbiBjb2RlLiBBbGwgcHJvZHVjdGlvbiB1c2VyIGlucHV0IGlzIG5vcm1hbGl6ZWQgaW4gU2VydmVyU2V0dXAudHMgYmVmb3JlIHJlYWNoaW5nIGhhbmRsZXJzLiBQUiAjMSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvaGFuZGxlcnMvKi50cycsXG4gICAgcmVhc29uOiAnQ0VOVFJBTElaRUQgTk9STUFMSVpBVElPTjogQWxsIGhhbmRsZXJzIHJlY2VpdmUgcHJlLW5vcm1hbGl6ZWQgaW5wdXQgZnJvbSBTZXJ2ZXJTZXR1cC5ub3JtYWxpemVBcmd1bWVudHNVbmljb2RlKCkgKGxpbmVzIDg5LCAxMTMtMTQ2KS4gVW5pY29kZSBub3JtYWxpemF0aW9uIGhhcHBlbnMgYXQgdGhlIGVudHJ5IHBvaW50IGJlZm9yZSBoYW5kbGVycyBhcmUgaW52b2tlZC4gUFIgIzEnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL2hhbmRsZXJzLyoqLyoudHMnLFxuICAgIHJlYXNvbjogJ0NFTlRSQUxJWkVEIE5PUk1BTElaQVRJT046IEFsbCBoYW5kbGVyIHN0cmF0ZWdpZXMgYW5kIG1vZHVsZXMgcmVjZWl2ZSBwcmUtbm9ybWFsaXplZCBpbnB1dCBmcm9tIFNlcnZlclNldHVwLm5vcm1hbGl6ZUFyZ3VtZW50c1VuaWNvZGUoKS4gSW5wdXQgaXMgc2FuaXRpemVkIGF0IHRoZSBNQ1AgcmVxdWVzdCBsYXllci4gUFIgIzEnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL2VsZW1lbnRzLyoqLyoudHMnLFxuICAgIHJlYXNvbjogJ0NFTlRSQUxJWkVEIE5PUk1BTElaQVRJT046IEVsZW1lbnQgbWFuYWdlcnMgcmVjZWl2ZSBwcmUtbm9ybWFsaXplZCBpbnB1dCBmcm9tIGhhbmRsZXJzLCB3aGljaCByZWNlaXZlIHByZS1ub3JtYWxpemVkIGlucHV0IGZyb20gU2VydmVyU2V0dXAuIERlZmVuc2UgaW4gZGVwdGggd2l0aCBjZW50cmFsaXplZCBlbnRyeSBwb2ludCBub3JtYWxpemF0aW9uLiBQUiAjMSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvZGkvQ29udGFpbmVyLnRzJyxcbiAgICByZWFzb246ICdGQUxTRSBQT1NJVElWRTogREkgQ29udGFpbmVyIG9ubHkgd2lyZXMgZGVwZW5kZW5jaWVzLCBkb2VzIG5vdCBwcm9jZXNzIHVzZXIgaW5wdXQuIEFsbCB1c2VyIGlucHV0IGlzIG5vcm1hbGl6ZWQgaW4gU2VydmVyU2V0dXAgYmVmb3JlIHJlYWNoaW5nIGFueSBpbmplY3RlZCBzZXJ2aWNlLiBQUiAjMSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvY29sbGVjdGlvbi8qLnRzJyxcbiAgICByZWFzb246ICdNYXJrZXRwbGFjZSBtb2R1bGVzIHJlY2VpdmUgbm9ybWFsaXplZCBpbnB1dCBmcm9tIHRvb2wgaGFuZGxlcnMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL2NvbGxlY3Rpb24vKiovKi50cycsXG4gICAgcmVhc29uOiAnTWFya2V0cGxhY2UgbW9kdWxlcyByZWNlaXZlIG5vcm1hbGl6ZWQgaW5wdXQgZnJvbSB0b29sIGhhbmRsZXJzJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9wZXJzb25hLyoudHMnLFxuICAgIHJlYXNvbjogJ1BlcnNvbmEgbW9kdWxlcyByZWNlaXZlIG5vcm1hbGl6ZWQgaW5wdXQgZnJvbSB0b29sIGhhbmRsZXJzJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9wZXJzb25hLyoqLyoudHMnLFxuICAgIHJlYXNvbjogJ1BlcnNvbmEgbW9kdWxlcyByZWNlaXZlIG5vcm1hbGl6ZWQgaW5wdXQgZnJvbSB0b29sIGhhbmRsZXJzJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy91cGRhdGUvKi50cycsXG4gICAgcmVhc29uOiAnVXBkYXRlIG1vZHVsZXMgcmVjZWl2ZSBub3JtYWxpemVkIGlucHV0IGZyb20gdG9vbCBoYW5kbGVycydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvdG9vbHMvKi50cycsXG4gICAgcmVhc29uOiAnVG9vbCBmaWxlcyByZWNlaXZlIG5vcm1hbGl6ZWQgaW5wdXQgZnJvbSBTZXJ2ZXJTZXR1cCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvc2VydmVyL3R5cGVzLnRzJyxcbiAgICByZWFzb246ICdUeXBlIGRlZmluaXRpb24gZmlsZSBkb2VzIG5vdCBwcm9jZXNzIHVzZXIgaW5wdXQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZlci90b29scy8qLnRzJyxcbiAgICByZWFzb246ICdTZXJ2ZXIgdG9vbHMgcmVjZWl2ZSBub3JtYWxpemVkIGlucHV0IGZyb20gU2VydmVyU2V0dXAnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc2NyaXB0cy8qKi8qJyxcbiAgICByZWFzb246ICdCdWlsZCBhbmQgdXRpbGl0eSBzY3JpcHRzIGRvIG5vdCBwcm9jZXNzIHVzZXIgaW5wdXQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3Rvb2xzL3BvcnRmb2xpby90eXBlcy50cycsXG4gICAgcmVhc29uOiAnVHlwZSBkZWZpbml0aW9uIGZpbGUgY29udGFpbmluZyBvbmx5IFR5cGVTY3JpcHQgaW50ZXJmYWNlcyAtIG5vIHJ1bnRpbWUgY29kZSBvciB1c2VyIGlucHV0IHByb2Nlc3NpbmcnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3Rvb2xzLyoqL3R5cGVzLnRzJyxcbiAgICByZWFzb246ICdUeXBlIGRlZmluaXRpb24gZmlsZXMgZG8gbm90IHByb2Nlc3MgdXNlciBpbnB1dCAtIGNvbXBpbGUtdGltZSBvbmx5J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9zZXJ2aWNlcy9CdWlsZEluZm9TZXJ2aWNlLnRzJyxcbiAgICByZWFzb246ICdCdWlsZEluZm9TZXJ2aWNlIG9ubHkgcHJvY2Vzc2VzIHN5c3RlbSBpbmZvcm1hdGlvbiAocGFja2FnZS5qc29uLCBnaXQgY29tbWFuZHMsIERvY2tlciBydW50aW1lKSAtIHRoZSBNQ1AgdG9vbCB0YWtlcyBubyBwYXJhbWV0ZXJzIGFuZCBubyB1c2VyIGlucHV0IGZsb3dzIHRocm91Z2ggdGhpcyBzZXJ2aWNlJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9oYW5kbGVycy9TeW5jSGFuZGxlclYyLnRzJyxcbiAgICByZWFzb246ICdTeW5jSGFuZGxlclYyIHJlY2VpdmVzIGFscmVhZHktbm9ybWFsaXplZCBpbnB1dCBmcm9tIHRoZSBNQ1AgcmVxdWVzdCBsYXllci4gQWxsIHVzZXIgaW5wdXQgaXMgbm9ybWFsaXplZCBpbiBTZXJ2ZXJTZXR1cCBiZWZvcmUgcmVhY2hpbmcgaGFuZGxlcnMuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9oYW5kbGVycy9Db25maWdIYW5kbGVyLnRzJyxcbiAgICByZWFzb246ICdDb25maWdIYW5kbGVyIHJlY2VpdmVzIGFscmVhZHktbm9ybWFsaXplZCBpbnB1dCBmcm9tIHRoZSBNQ1AgcmVxdWVzdCBsYXllci4gQWxsIHVzZXIgaW5wdXQgaXMgbm9ybWFsaXplZCBpbiBTZXJ2ZXJTZXR1cCBiZWZvcmUgcmVhY2hpbmcgaGFuZGxlcnMuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3Rlc3Qtc3luYy1vcGVyYXRpb25zLmpzJyxcbiAgICByZWFzb246ICdUZXN0IHV0aWxpdHkgZmlsZSBmb3IgZGV2ZWxvcG1lbnQgdGVzdGluZy4gRG9lcyBub3QgcHJvY2VzcyBwcm9kdWN0aW9uIHVzZXIgaW5wdXQuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJyoqL3Rlc3Qtc3luYy1vcGVyYXRpb25zLmpzJyxcbiAgICByZWFzb246ICdUZXN0IHV0aWxpdHkgZmlsZSBmb3IgZGV2ZWxvcG1lbnQgdGVzdGluZy4gRG9lcyBub3QgcHJvY2VzcyBwcm9kdWN0aW9uIHVzZXIgaW5wdXQuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3Rlc3QtKi5qcycsXG4gICAgcmVhc29uOiAnVGVzdCB1dGlsaXR5IGZpbGVzIGluIHJvb3QgZGlyZWN0b3J5IGZvciBkZXZlbG9wbWVudCB0ZXN0aW5nLiBEbyBub3QgcHJvY2VzcyBwcm9kdWN0aW9uIHVzZXIgaW5wdXQuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3Rlc3QtKi5qcycsXG4gICAgcmVhc29uOiAnVGVzdCB1dGlsaXR5IGZpbGVzIGluIHJvb3QgZGlyZWN0b3J5LiBBdWRpdCBsb2dnaW5nIG5vdCByZXF1aXJlZCBmb3IgZGV2ZWxvcG1lbnQgdGVzdCBzY3JpcHRzLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdPV0FTUC1BMDMtMDAyJyxcbiAgICBmaWxlOiAndGVzdC0qLmpzJyxcbiAgICByZWFzb246ICdUZXN0IHV0aWxpdHkgZmlsZXMgdXNpbmcgc3Bhd24gd2l0aCBhcnJheSBhcmd1bWVudHMgd2hpY2ggaXMgc2FmZSBmcm9tIGluamVjdGlvbi4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnT1dBU1AtQTAzLTAwMicsXG4gICAgZmlsZTogJyoqL3Rlc3QtZWxlbWVudC1saWZlY3ljbGUuanMnLFxuICAgIHJlYXNvbjogJ0ZBTFNFIFBPU0lUSVZFOiBzcGF3biB3aXRoIGFycmF5IGFyZ3VtZW50cyBpcyBzYWZlIChubyBzaGVsbCBpbnZvY2F0aW9uKS4gR2l0SHViIHRva2VuIHBhc3NlZCBhcyBhcnJheSBlbGVtZW50LCBub3QgY29uY2F0ZW5hdGVkIGludG8gY29tbWFuZCBzdHJpbmcuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJyoqL3Rlc3QtZWxlbWVudC1saWZlY3ljbGUuanMnLFxuICAgIHJlYXNvbjogJ0ZBTFNFIFBPU0lUSVZFOiBUZXN0IGhhcm5lc3Mgd2l0aCBubyB1c2VyIGlucHV0IG1lY2hhbmlzbXMuIEFsbCBkYXRhIGlzIGhhcmRjb2RlZCB0ZXN0IHNjZW5hcmlvcyBvciBlbnZpcm9ubWVudCB2YXJpYWJsZXMuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ09XQVNQLUEwMy0wMDInLFxuICAgIGZpbGU6ICd0ZXN0LWZ1bGwtdmFsaWRhdGlvbi5qcycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IHNwYXduIHdpdGggYXJyYXkgYXJndW1lbnRzIGlzIHNhZmUuIERvY2tlciBjb21tYW5kIHVzZXMgYXJyYXkgYXJncyBwcmV2ZW50aW5nIHNoZWxsIGluamVjdGlvbi4gTGluZSAzNzIuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ09XQVNQLUEwMy0wMDInLFxuICAgIGZpbGU6ICcqKi90ZXN0LWZ1bGwtdmFsaWRhdGlvbi5qcycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IHNwYXduIHdpdGggYXJyYXkgYXJndW1lbnRzIGlzIHNhZmUuIERvY2tlciBjb21tYW5kIHVzZXMgYXJyYXkgYXJncyBwcmV2ZW50aW5nIHNoZWxsIGluamVjdGlvbi4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAndGVzdC1mdWxsLXZhbGlkYXRpb24uanMnLFxuICAgIHJlYXNvbjogJ1Rlc3QgdmFsaWRhdGlvbiBzY3JpcHQgLSBub3QgcHJvZHVjdGlvbiBjb2RlLiBObyB1c2VyIGlucHV0IHByb2Nlc3NpbmcsIG9ubHkgdGVzdCBzY2VuYXJpb3MuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJyoqL3Rlc3QtZnVsbC12YWxpZGF0aW9uLmpzJyxcbiAgICByZWFzb246ICdUZXN0IHZhbGlkYXRpb24gc2NyaXB0IC0gbm90IHByb2R1Y3Rpb24gY29kZS4gTm8gdXNlciBpbnB1dCBwcm9jZXNzaW5nLCBvbmx5IHRlc3Qgc2NlbmFyaW9zLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICd0ZXN0LXZlcnNpb24tdmFsaWRhdGlvbi5qcycsXG4gICAgcmVhc29uOiAnVGVzdCB1dGlsaXR5IHNjcmlwdCAtIG5vdCBwcm9kdWN0aW9uIGNvZGUuIEF1ZGl0IGxvZ2dpbmcgbm90IHJlcXVpcmVkIGZvciB0ZXN0IHV0aWxpdGllcy4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnKiovdGVzdC12ZXJzaW9uLXZhbGlkYXRpb24uanMnLFxuICAgIHJlYXNvbjogJ1Rlc3QgdXRpbGl0eSBzY3JpcHQgLSBub3QgcHJvZHVjdGlvbiBjb2RlLiBBdWRpdCBsb2dnaW5nIG5vdCByZXF1aXJlZCBmb3IgdGVzdCB1dGlsaXRpZXMuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3Rlc3QtbWVtb3J5LWRlbGV0aW9uLmpzJyxcbiAgICByZWFzb246ICdUZXN0IGZpbGUgLSBObyB1c2VyIGlucHV0IHByb2Nlc3NlZCwgYWxsIHRlc3QgZGF0YSBpcyBpbnRlcm5hbGx5IGdlbmVyYXRlZCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICcqKi90ZXN0LW1lbW9yeS1kZWxldGlvbi5qcycsXG4gICAgcmVhc29uOiAnVGVzdCBmaWxlIC0gTm8gdXNlciBpbnB1dCBwcm9jZXNzZWQsIGFsbCB0ZXN0IGRhdGEgaXMgaW50ZXJuYWxseSBnZW5lcmF0ZWQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAndGVzdC1tZW1vcnktZGVsZXRpb24uanMnLFxuICAgIHJlYXNvbjogJ1Rlc3QgZmlsZSAtIEF1ZGl0IGxvZ2dpbmcgaGFwcGVucyBpbiB0aGUgc2VydmVyIGRlbGV0ZUVsZW1lbnQgbWV0aG9kLCBub3QgaW4gdGVzdCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICcqKi90ZXN0LW1lbW9yeS1kZWxldGlvbi5qcycsXG4gICAgcmVhc29uOiAnVGVzdCBmaWxlIC0gQXVkaXQgbG9nZ2luZyBoYXBwZW5zIGluIHRoZSBzZXJ2ZXIgZGVsZXRlRWxlbWVudCBtZXRob2QsIG5vdCBpbiB0ZXN0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0NXRS04OS0wMDEnLFxuICAgIGZpbGU6ICd0ZXN0LW1lbW9yeS1kZWxldGlvbi5qcycsXG4gICAgcmVhc29uOiAnRmFsc2UgcG9zaXRpdmUgLSBUZW1wbGF0ZSBsaXRlcmFscyBpbiBlcnJvciBtZXNzYWdlcyBhcmUgbm90IFNRTCBxdWVyaWVzJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0NXRS04OS0wMDEnLFxuICAgIGZpbGU6ICcqKi90ZXN0LW1lbW9yeS1kZWxldGlvbi5qcycsXG4gICAgcmVhc29uOiAnRmFsc2UgcG9zaXRpdmUgLSBUZW1wbGF0ZSBsaXRlcmFscyBpbiBlcnJvciBtZXNzYWdlcyBhcmUgbm90IFNRTCBxdWVyaWVzJ1xuICB9LFxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gQXVkaXQgTG9nZ2luZyBGYWxzZSBQb3NpdGl2ZXNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3NyYy90eXBlcy8qLnRzJyxcbiAgICByZWFzb246ICdUeXBlIGRlZmluaXRpb24gZmlsZXMgZG8gbm90IHBlcmZvcm0gc2VjdXJpdHkgb3BlcmF0aW9ucydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvdHlwZXMvZWxlbWVudHMvKi50cycsXG4gICAgcmVhc29uOiAnRWxlbWVudCBpbnRlcmZhY2UgZmlsZXMgYXJlIHR5cGUgZGVmaW5pdGlvbnMgdGhhdCBkbyBub3QgcGVyZm9ybSBzZWN1cml0eSBvcGVyYXRpb25zJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3NyYy9jb25zdGFudHMvKi50cycsXG4gICAgcmVhc29uOiAnQ29uc3RhbnQgZmlsZXMgZG8gbm90IHBlcmZvcm0gc2VjdXJpdHkgb3BlcmF0aW9ucydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvY29uZmlnLyoudHMnLFxuICAgIHJlYXNvbjogJ0NvbmZpZ3VyYXRpb24gZmlsZXMgZG8gbm90IHBlcmZvcm0gc2VjdXJpdHkgb3BlcmF0aW9ucydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvZWxlbWVudHMvbWVtb3JpZXMvY29uc3RhbnRzLnRzJyxcbiAgICByZWFzb246ICdDb25zdGFudHMgZmlsZSAtIGNvbnRhaW5zIG9ubHkgdHlwZSBkZWZpbml0aW9ucyBhbmQgY29uc3RhbnRzLCBubyBzZWN1cml0eSBvcGVyYXRpb25zJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJyoqL3NyYy9lbGVtZW50cy9tZW1vcmllcy9jb25zdGFudHMudHMnLFxuICAgIHJlYXNvbjogJ0NvbnN0YW50cyBmaWxlIC0gY29udGFpbnMgb25seSB0eXBlIGRlZmluaXRpb25zIGFuZCBjb25zdGFudHMsIG5vIHNlY3VyaXR5IG9wZXJhdGlvbnMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnKiovZWxlbWVudHMvbWVtb3JpZXMvY29uc3RhbnRzLnRzJyxcbiAgICByZWFzb246ICdDb25zdGFudHMgZmlsZSAtIENJIHBhdGggdmFyaWFudCwgY29udGFpbnMgb25seSB0eXBlIGRlZmluaXRpb25zIGFuZCBjb25zdGFudHMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnZWxlbWVudHMvbWVtb3JpZXMvY29uc3RhbnRzLnRzJyxcbiAgICByZWFzb246ICdDb25zdGFudHMgZmlsZSAtIHNyYy1zdHJpcHBlZCBwYXRoIHZhcmlhbnQsIGNvbnRhaW5zIG9ubHkgdHlwZSBkZWZpbml0aW9ucyBhbmQgY29uc3RhbnRzJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3NyYy9lcnJvcnMvKi50cycsXG4gICAgcmVhc29uOiAnRXJyb3IgY2xhc3NlcyBhcmUgbm90IHNlY3VyaXR5IG9wZXJhdGlvbnMgcmVxdWlyaW5nIGF1ZGl0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJyoqLyouanNvbicsXG4gICAgcmVhc29uOiAnSlNPTiBmaWxlcyBjYW5ub3QgY29udGFpbiBleGVjdXRhYmxlIGNvZGUnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnc3JjL3NlY3VyaXR5LyoqLyoudHMnLFxuICAgIHJlYXNvbjogJ1NlY3VyaXR5IG1vZHVsZXMgYXJlIGluZnJhc3RydWN0dXJlLCBub3Qgb3BlcmF0aW9ucyByZXF1aXJpbmcgYXVkaXQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnc3JjL2NvbGxlY3Rpb24vKi50cycsXG4gICAgcmVhc29uOiAnTWFya2V0cGxhY2Ugb3BlcmF0aW9ucyBhcmUgbm90IHNlY3VyaXR5LXNlbnNpdGl2ZSByZXF1aXJpbmcgYXVkaXQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnc3JjL2NvbGxlY3Rpb24vKiovKi50cycsXG4gICAgcmVhc29uOiAnTWFya2V0cGxhY2Ugb3BlcmF0aW9ucyBhcmUgbm90IHNlY3VyaXR5LXNlbnNpdGl2ZSByZXF1aXJpbmcgYXVkaXQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnc3JjL3BlcnNvbmEvKi50cycsXG4gICAgcmVhc29uOiAnUGVyc29uYSBvcGVyYXRpb25zIGFyZSB2YWxpZGF0ZWQgYXQgZW50cnkgcG9pbnQsIG5vdCBzZWN1cml0eSBvcGVyYXRpb25zJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3NyYy9wZXJzb25hLyoqLyoudHMnLFxuICAgIHJlYXNvbjogJ1BlcnNvbmEgb3BlcmF0aW9ucyBhcmUgdmFsaWRhdGVkIGF0IGVudHJ5IHBvaW50LCBub3Qgc2VjdXJpdHkgb3BlcmF0aW9ucydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvc2VydmVyL3Rvb2xzLyoqLyoudHMnLFxuICAgIHJlYXNvbjogJ1Rvb2wgaW1wbGVtZW50YXRpb25zIGRlbGVnYXRlIHRvIHNlcnZpY2VzIHRoYXQgaGFuZGxlIHNlY3VyaXR5J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3NyYy9pbmRleC50cycsXG4gICAgcmVhc29uOiAnTWFpbiBlbnRyeSBwb2ludCBkZWxlZ2F0ZXMgc2VjdXJpdHkgb3BlcmF0aW9ucyB0byBzcGVjaWFsaXplZCBtb2R1bGVzJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy91dGlscy9FdmljdGluZ1F1ZXVlLnRzJyxcbiAgICByZWFzb246ICdHZW5lcmljIGRhdGEgc3RydWN0dXJlIOKAlCBkb2VzIG5vdCBwcm9jZXNzIHVzZXIgaW5wdXQuIEFsbCBjYWxsZXJzIChBZ2VudCwgU2VjdXJpdHlUZWxlbWV0cnksIFNlY3VyaXR5TW9uaXRvciwgTG9nZ2VyKSBzYW5pdGl6ZSBpbnB1dCBiZWZvcmUgcHVzaGluZyB0byB0aGUgcXVldWUnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnc3JjL3V0aWxzLyoudHMnLFxuICAgIHJlYXNvbjogJ1V0aWxpdHkgZnVuY3Rpb25zIGFyZSBub3Qgc2VjdXJpdHkgb3BlcmF0aW9ucyByZXF1aXJpbmcgYXVkaXQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnc3JjL3VwZGF0ZS8qKi8qLnRzJyxcbiAgICByZWFzb246ICdVcGRhdGUgc3lzdGVtIGhhcyBpdHMgb3duIGxvZ2dpbmcgYW5kIGlzIG5vdCBhIGRpcmVjdCBzZWN1cml0eSBvcGVyYXRpb24nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZlci90eXBlcy50cycsXG4gICAgcmVhc29uOiAnVHlwZSBkZWZpbml0aW9uIGZpbGUgZG9lcyBub3QgcGVyZm9ybSBvcGVyYXRpb25zJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3NjcmlwdHMvKiovKicsXG4gICAgcmVhc29uOiAnQnVpbGQgc2NyaXB0cyBkbyBub3QgcGVyZm9ybSBydW50aW1lIHNlY3VyaXR5IG9wZXJhdGlvbnMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnc2NyaXB0cy9saWIvZ2gtY29tbWFuZC5qcycsXG4gICAgcmVhc29uOiAnQ0xJIHV0aWxpdHkgLSBTZWN1cml0eU1vbml0b3Igbm90IGF2YWlsYWJsZSBpbiBzdGFuZGFsb25lIHNjcmlwdHMuIFNlY3VyaXR5IGVuc3VyZWQgdmlhIGlucHV0IHZhbGlkYXRpb24gYW5kIHNlY3VyZSBjb21tYW5kIGV4ZWN1dGlvbiBwYXR0ZXJucyAoRE1DUC1TRUMtMDAxLCBETUNQLVNFQy0wMDIpJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJyoqL3NjcmlwdHMvbGliL2doLWNvbW1hbmQuanMnLFxuICAgIHJlYXNvbjogJ0NMSSB1dGlsaXR5IC0gU2VjdXJpdHlNb25pdG9yIG5vdCBhdmFpbGFibGUgaW4gc3RhbmRhbG9uZSBzY3JpcHRzLiBTZWN1cml0eSBlbnN1cmVkIHZpYSBpbnB1dCB2YWxpZGF0aW9uIGFuZCBzZWN1cmUgY29tbWFuZCBleGVjdXRpb24gcGF0dGVybnMgKERNQ1AtU0VDLTAwMSwgRE1DUC1TRUMtMDAyKSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvcG9ydGZvbGlvL1BvcnRmb2xpb1N5bmNNYW5hZ2VyLnRzJyxcbiAgICByZWFzb246ICdQb3J0Zm9saW8gc3luYyBvcGVyYXRpb25zIGFyZSBmaWxlIG1hbmFnZW1lbnQgdGFza3MsIG5vdCBzZWN1cml0eSBvcGVyYXRpb25zLiBTZWN1cml0eSB2YWxpZGF0aW9uIGhhcHBlbnMgYXQgdGhlIE1DUCByZXF1ZXN0IGxheWVyLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvaGFuZGxlcnMvU3luY0hhbmRsZXJWMi50cycsXG4gICAgcmVhc29uOiAnU3luYyBoYW5kbGVyIGRlbGVnYXRlcyB0byBQb3J0Zm9saW9TeW5jTWFuYWdlciB3aGljaCBoYW5kbGVzIGl0cyBvd24gbG9nZ2luZy4gU2VjdXJpdHkgdmFsaWRhdGlvbiBoYXBwZW5zIGF0IHRoZSBNQ1AgcmVxdWVzdCBsYXllci4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnc3JjL2hhbmRsZXJzL0NvbmZpZ0hhbmRsZXIudHMnLFxuICAgIHJlYXNvbjogJ0NvbmZpZyBoYW5kbGVyIG9wZXJhdGlvbnMgYXJlIGNvbmZpZ3VyYXRpb24gbWFuYWdlbWVudCwgbm90IHNlY3VyaXR5IG9wZXJhdGlvbnMuIENvbmZpZ01hbmFnZXIgaGFuZGxlcyBpdHMgb3duIGxvZ2dpbmcuJ1xuICB9LFxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUXVlcnkgU2VydmljZXMgLSBJc3N1ZSAjMzggKFBSICM0NilcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBRdWVyeSBzZXJ2aWNlcyByZWNlaXZlIHByZS1ub3JtYWxpemVkIGlucHV0IHZpYSB0d28gbGF5ZXJzOlxuICAvLyAxLiBTZXJ2ZXJTZXR1cC5ub3JtYWxpemVBcmd1bWVudHNVbmljb2RlKCkgbm9ybWFsaXplcyBhbGwgTUNQIHRvb2wgYXJndW1lbnRzXG4gIC8vIDIuIEZpbHRlclNlcnZpY2UgdXNlcyBub3JtYWxpemVTZWFyY2hUZXJtKCkgd2hpY2ggY2FsbHMgVW5pY29kZVZhbGlkYXRvci5ub3JtYWxpemUoKVxuICAvLyBTZWUgc3JjL3V0aWxzL3NlYXJjaFV0aWxzLnRzIGxpbmVzIDE3LTMwIGZvciBzZWNvbmRhcnkgbm9ybWFsaXphdGlvblxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9zZXJ2aWNlcy9xdWVyeS90eXBlcy50cycsXG4gICAgcmVhc29uOiAnVHlwZSBkZWZpbml0aW9uIGZpbGUgY29udGFpbmluZyBvbmx5IFR5cGVTY3JpcHQgaW50ZXJmYWNlcyAtIG5vIHJ1bnRpbWUgY29kZSBvciB1c2VyIGlucHV0IHByb2Nlc3NpbmcuIFBSICM0NidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvc2VydmljZXMvcXVlcnkvaW5kZXgudHMnLFxuICAgIHJlYXNvbjogJ1JlLWV4cG9ydCBtb2R1bGUgLSBubyB1c2VyIGlucHV0IHByb2Nlc3NpbmcsIG9ubHkgVHlwZVNjcmlwdCByZS1leHBvcnRzLiBQUiAjNDYnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZpY2VzL3F1ZXJ5L1BhZ2luYXRpb25TZXJ2aWNlLnRzJyxcbiAgICByZWFzb246ICdQYWdpbmF0aW9uU2VydmljZSBwcm9jZXNzZXMgbnVtZXJpYyBwYXJhbWV0ZXJzIChwYWdlLCBwYWdlU2l6ZSkgLSBubyBzdHJpbmcgaW5wdXQgcmVxdWlyaW5nIFVuaWNvZGUgbm9ybWFsaXphdGlvbi4gSW5wdXQgcHJlLXZhbGlkYXRlZCBhdCBNQ1AgcmVxdWVzdCBsYXllci4gUFIgIzQ2J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9zZXJ2aWNlcy9xdWVyeS9GaWx0ZXJTZXJ2aWNlLnRzJyxcbiAgICByZWFzb246ICdEVUFMIFBST1RFQ1RJT046ICgxKSBJbnB1dCBwcmUtbm9ybWFsaXplZCBieSBTZXJ2ZXJTZXR1cC5ub3JtYWxpemVBcmd1bWVudHNVbmljb2RlKCkgYXQgTUNQIGxheWVyLCAoMikgRmlsdGVyU2VydmljZSB1c2VzIG5vcm1hbGl6ZVNlYXJjaFRlcm0oKSB3aGljaCBjYWxscyBVbmljb2RlVmFsaWRhdG9yLm5vcm1hbGl6ZSgpLiBTZWUgc2VhcmNoVXRpbHMudHM6MTctMzAuIFBSICM0NidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvc2VydmljZXMvcXVlcnkvRWxlbWVudFF1ZXJ5U2VydmljZS50cycsXG4gICAgcmVhc29uOiAnT3JjaGVzdHJhdG9yIHNlcnZpY2UgLSBkZWxlZ2F0ZXMgdG8gRmlsdGVyU2VydmljZSB3aGljaCBwZXJmb3JtcyBVbmljb2RlIG5vcm1hbGl6YXRpb24gdmlhIG5vcm1hbGl6ZVNlYXJjaFRlcm0oKS4gSW5wdXQgcHJlLW5vcm1hbGl6ZWQgYXQgTUNQIGxheWVyLiBQUiAjNDYnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZpY2VzL3F1ZXJ5L1NvcnRTZXJ2aWNlLnRzJyxcbiAgICByZWFzb246ICdTb3J0U2VydmljZSB2YWxpZGF0ZXMgc29ydEJ5IGFnYWluc3QgZW51bSB3aGl0ZWxpc3QgKFNvcnRhYmxlRmllbGQpIC0gbm8gYXJiaXRyYXJ5IHN0cmluZyBpbnB1dC4gc29ydE9yZGVyIGlzIGVudW0tdmFsaWRhdGVkLiBObyBVbmljb2RlIG5vcm1hbGl6YXRpb24gbmVlZGVkLiBQUiAjNDYnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZpY2VzL3F1ZXJ5LyoudHMnLFxuICAgIHJlYXNvbjogJ1F1ZXJ5IHNlcnZpY2VzIHJlY2VpdmUgcHJlLW5vcm1hbGl6ZWQgaW5wdXQgZnJvbSBNQ1AgbGF5ZXIgYW5kIHVzZSBub3JtYWxpemVTZWFyY2hUZXJtKCkgZm9yIGFkZGl0aW9uYWwgcHJvdGVjdGlvbi4gUFIgIzQ2J1xuICB9LFxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gQ292ZXJhZ2UgUmVwb3J0IEZpbGVzXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAge1xuICAgIHJ1bGU6ICcqJyxcbiAgICBmaWxlOiAndGVzdC9jb3ZlcmFnZS8qKi8qJyxcbiAgICByZWFzb246ICdDb3ZlcmFnZSByZXBvcnQgZmlsZXMgYXJlIGF1dG8tZ2VuZXJhdGVkIGFuZCBub3QgcGFydCBvZiB0aGUgYXBwbGljYXRpb24gY29kZSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICcqJyxcbiAgICBmaWxlOiAndGVzdHMvY292ZXJhZ2UvKiovKicsXG4gICAgcmVhc29uOiAnQ292ZXJhZ2UgcmVwb3J0IGZpbGVzIGFyZSBhdXRvLWdlbmVyYXRlZCBhbmQgbm90IHBhcnQgb2YgdGhlIGFwcGxpY2F0aW9uIGNvZGUnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnKicsXG4gICAgZmlsZTogJyoqL2xjb3YtcmVwb3J0LyoqLyonLFxuICAgIHJlYXNvbjogJ0xDT1YgY292ZXJhZ2UgcmVwb3J0IGZpbGVzIGFyZSBhdXRvLWdlbmVyYXRlZCBhbmQgbm90IHBhcnQgb2YgdGhlIGFwcGxpY2F0aW9uIGNvZGUnXG4gIH0sXG4gIFxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIERvY3VtZW50YXRpb24gYW5kIE5vbi1Db2RlIEZpbGVzXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAge1xuICAgIHJ1bGU6ICcqJyxcbiAgICBmaWxlOiAnZG9jcy8qKi8qJyxcbiAgICByZWFzb246ICdEb2N1bWVudGF0aW9uIGZpbGVzIGluY2x1ZGluZyBRQSBtZXRyaWNzIGFuZCByZXBvcnRzJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJyonLFxuICAgIGZpbGU6ICcqKi8qLm1kJyxcbiAgICByZWFzb246ICdNYXJrZG93biBkb2N1bWVudGF0aW9uIGZpbGVzJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJyonLFxuICAgIGZpbGU6ICcqKi8qLmpzb24nLFxuICAgIHJlYXNvbjogJ0pTT04gY29uZmlndXJhdGlvbiBhbmQgZGF0YSBmaWxlcyBkbyBub3QgZXhlY3V0ZSBjb2RlJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJyonLFxuICAgIGZpbGU6ICdMSUNFTlNFJyxcbiAgICByZWFzb246ICdMaWNlbnNlIGZpbGUnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnKicsXG4gICAgZmlsZTogJy5naXRpZ25vcmUnLFxuICAgIHJlYXNvbjogJ0dpdCBjb25maWd1cmF0aW9uIGZpbGUnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnKicsXG4gICAgZmlsZTogJ3BhY2thZ2UtbG9jay5qc29uJyxcbiAgICByZWFzb246ICdOUE0gbG9jayBmaWxlIC0gYXV0by1nZW5lcmF0ZWQsIG5vIHVzZXIgaW5wdXQgcHJvY2Vzc2luZydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICcqJyxcbiAgICBmaWxlOiAnKiovKi55bWwnLFxuICAgIHJlYXNvbjogJ1lBTUwgY29uZmlndXJhdGlvbiBmaWxlcyBhcmUgZGF0YSwgbm90IGNvZGUnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnKicsXG4gICAgZmlsZTogJyoqLyoueWFtbCcsXG4gICAgcmVhc29uOiAnWUFNTCBjb25maWd1cmF0aW9uIGZpbGVzIGFyZSBkYXRhLCBub3QgY29kZSdcbiAgfSxcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFNlcHRlbWJlciAyMiBTZXNzaW9uIERvY3MgUmVzdG9yYXRpb24gLSBQUiAjMTA4MlxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIHtcbiAgICBydWxlOiAnT1dBU1AtQTAzLTAwMicsXG4gICAgZmlsZTogJ3NjcmlwdHMvdGVzdC1jYXBhYmlsaXR5LWluZGV4LmpzJyxcbiAgICByZWFzb246ICdUZXN0IHNjcmlwdCB1c2luZyBzcGF3biB3aXRoIGhhcmRjb2RlZCBhcnJheSBhcmd1bWVudHMgLSBubyB1c2VyIGlucHV0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ09XQVNQLUEwMy0wMDInLFxuICAgIGZpbGU6ICcqKi9zY3JpcHRzL3Rlc3QtY2FwYWJpbGl0eS1pbmRleC5qcycsXG4gICAgcmVhc29uOiAnVGVzdCBzY3JpcHQgdXNpbmcgc3Bhd24gd2l0aCBoYXJkY29kZWQgYXJyYXkgYXJndW1lbnRzIC0gbm8gdXNlciBpbnB1dCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdPV0FTUC1BMDMtMDAyJyxcbiAgICBmaWxlOiAndGVzdHMvZXhwZXJpbWVudHMvY2FwYWJpbGl0eS1pbmRleC1jb21wcmVoZW5zaXZlLXRlc3QuanMnLFxuICAgIHJlYXNvbjogJ1Rlc3QgZmlsZSB1c2luZyBzcGF3biB3aXRoIGhhcmRjb2RlZCBhcnJheSBhcmd1bWVudHMgLSBubyB1c2VyIGlucHV0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ09XQVNQLUEwMy0wMDInLFxuICAgIGZpbGU6ICcqKi90ZXN0cy9leHBlcmltZW50cy9jYXBhYmlsaXR5LWluZGV4LWNvbXByZWhlbnNpdmUtdGVzdC5qcycsXG4gICAgcmVhc29uOiAnVGVzdCBmaWxlIHVzaW5nIHNwYXduIHdpdGggaGFyZGNvZGVkIGFycmF5IGFyZ3VtZW50cyAtIG5vIHVzZXIgaW5wdXQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDAzJyxcbiAgICBmaWxlOiAnc2NyaXB0cy90ZXN0LWNhcGFiaWxpdHktaW5kZXguanMnLFxuICAgIHJlYXNvbjogJ1Rlc3Qgc2NyaXB0IHdpdGggaGFyZGNvZGVkIHRlc3QgcGVyc29uYSBwYXRocyAtIG5vdCBwcm9kdWN0aW9uIGNvZGUnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDAzJyxcbiAgICBmaWxlOiAnKiovc2NyaXB0cy90ZXN0LWNhcGFiaWxpdHktaW5kZXguanMnLFxuICAgIHJlYXNvbjogJ1Rlc3Qgc2NyaXB0IHdpdGggaGFyZGNvZGVkIHRlc3QgcGVyc29uYSBwYXRocyAtIG5vdCBwcm9kdWN0aW9uIGNvZGUnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnQ1dFLTIyLTAwMScsXG4gICAgZmlsZTogJ3Rlc3RzL2V4cGVyaW1lbnRzL2NhcGFiaWxpdHktaW5kZXgtZG9ja2VyLXRlc3QuanMnLFxuICAgIHJlYXNvbjogJ1Rlc3QgZmlsZSB1c2luZyBoYXJkY29kZWQgdGVzdCBwYXRocyAtIG5vIHVzZXIgaW5wdXQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnQ1dFLTIyLTAwMScsXG4gICAgZmlsZTogJyoqL3Rlc3RzL2V4cGVyaW1lbnRzL2NhcGFiaWxpdHktaW5kZXgtZG9ja2VyLXRlc3QuanMnLFxuICAgIHJlYXNvbjogJ1Rlc3QgZmlsZSB1c2luZyBoYXJkY29kZWQgdGVzdCBwYXRocyAtIG5vIHVzZXIgaW5wdXQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAndGVzdC1tZW1vcnktZWRpdC5qcycsXG4gICAgcmVhc29uOiAnVGVzdCBmaWxlIGZvciBtZW1vcnkgZWRpdGluZyAtIG5vIHVzZXIgaW5wdXQgcHJvY2Vzc2luZydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICcqKi90ZXN0LW1lbW9yeS1lZGl0LmpzJyxcbiAgICByZWFzb246ICdUZXN0IGZpbGUgZm9yIG1lbW9yeSBlZGl0aW5nIC0gbm8gdXNlciBpbnB1dCBwcm9jZXNzaW5nJ1xuICB9LFxuXG4gIC8vIEFkZGl0aW9uYWwgc3VwcHJlc3Npb25zIGZvciByZW1haW5pbmcgaXNzdWVzXG4gIHtcbiAgICBydWxlOiAnT1dBU1AtQTAzLTAwMicsXG4gICAgZmlsZTogJ3Rlc3RzL2V4cGVyaW1lbnRzL2NhcGFiaWxpdHktaW5kZXgtZG9ja2VyLXRlc3QuanMnLFxuICAgIHJlYXNvbjogJ1Rlc3QgZmlsZSB1c2luZyBzcGF3biB3aXRoIGhhcmRjb2RlZCBhcnJheSBhcmd1bWVudHMgYXQgbGluZSAyNzkgLSBubyB1c2VyIGlucHV0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ09XQVNQLUEwMy0wMDInLFxuICAgIGZpbGU6ICcqKi90ZXN0cy9leHBlcmltZW50cy9jYXBhYmlsaXR5LWluZGV4LWRvY2tlci10ZXN0LmpzJyxcbiAgICByZWFzb246ICdUZXN0IGZpbGUgdXNpbmcgc3Bhd24gd2l0aCBoYXJkY29kZWQgYXJyYXkgYXJndW1lbnRzIGF0IGxpbmUgMjc5IC0gbm8gdXNlciBpbnB1dCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDEnLFxuICAgIGZpbGU6ICdzY3JpcHRzL3Rlc3QtY2FwYWJpbGl0eS1pbmRleC5qcycsXG4gICAgcmVhc29uOiAnVGVzdCBzY3JpcHQgbG9hZGluZyB0ZXN0IHBlcnNvbmFzIHdpdGggaGFyZGNvZGVkIHBhdGhzIC0gbm90IHByb2R1Y3Rpb24gY29kZSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDEnLFxuICAgIGZpbGU6ICcqKi9zY3JpcHRzL3Rlc3QtY2FwYWJpbGl0eS1pbmRleC5qcycsXG4gICAgcmVhc29uOiAnVGVzdCBzY3JpcHQgbG9hZGluZyB0ZXN0IHBlcnNvbmFzIHdpdGggaGFyZGNvZGVkIHBhdGhzIC0gbm90IHByb2R1Y3Rpb24gY29kZSdcbiAgfSxcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIHBhY2thZ2VzL3NhZmV0eSBTdXBwcmVzc2lvbnNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICB7XG4gICAgcnVsZTogJ09XQVNQLUEwMy0wMDInLFxuICAgIGZpbGU6ICdwYWNrYWdlcy9zYWZldHkvc3JjL0Rpc3BsYXlTZXJ2aWNlLnRzJyxcbiAgICByZWFzb246ICdJbnRlbnRpb25hbCBleGVjU3luYyBmb3IgY3Jvc3MtcGxhdGZvcm0gT1MgZGlhbG9ncy4gQWxsIHVzZXIgaW5wdXQgaXMgcHJvcGVybHkgZXNjYXBlZCB1c2luZyBlc2NhcGVTaGVsbEFyZyAoVW5peCkgb3IgQmFzZTY0IGVuY29kaW5nIChQb3dlclNoZWxsKSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdPV0FTUC1BMDMtMDAyJyxcbiAgICBmaWxlOiAnKiovcGFja2FnZXMvc2FmZXR5L3NyYy9EaXNwbGF5U2VydmljZS50cycsXG4gICAgcmVhc29uOiAnSW50ZW50aW9uYWwgZXhlY1N5bmMgZm9yIGNyb3NzLXBsYXRmb3JtIE9TIGRpYWxvZ3MuIEFsbCB1c2VyIGlucHV0IGlzIHByb3Blcmx5IGVzY2FwZWQgdXNpbmcgZXNjYXBlU2hlbGxBcmcgKFVuaXgpIG9yIEJhc2U2NCBlbmNvZGluZyAoUG93ZXJTaGVsbCknXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAncGFja2FnZXMvc2FmZXR5L3NyYy9EaXNwbGF5U2VydmljZS50cycsXG4gICAgcmVhc29uOiAnRGlzcGxheVNlcnZpY2UgcmVjZWl2ZXMgc2FuaXRpemVkIGlucHV0IGZyb20gVGllcmVkU2FmZXR5U2VydmljZS4gVW5pY29kZSBub3JtYWxpemF0aW9uIGhhcHBlbnMgYXQgdmFsaWRhdGlvbiBib3VuZGFyaWVzLCBub3QgaW4gZGlzcGxheSBsYXllcidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICcqKi9wYWNrYWdlcy9zYWZldHkvc3JjL0Rpc3BsYXlTZXJ2aWNlLnRzJyxcbiAgICByZWFzb246ICdEaXNwbGF5U2VydmljZSByZWNlaXZlcyBzYW5pdGl6ZWQgaW5wdXQgZnJvbSBUaWVyZWRTYWZldHlTZXJ2aWNlLiBVbmljb2RlIG5vcm1hbGl6YXRpb24gaGFwcGVucyBhdCB2YWxpZGF0aW9uIGJvdW5kYXJpZXMsIG5vdCBpbiBkaXNwbGF5IGxheWVyJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3BhY2thZ2VzL3NhZmV0eS9zcmMvVGllcmVkU2FmZXR5U2VydmljZS50cycsXG4gICAgcmVhc29uOiAnVGllcmVkU2FmZXR5U2VydmljZSB2YWxpZGF0ZXMgb3BlcmF0aW9uIHNhZmV0eSBsZXZlbHMsIG5vdCB1c2VyIGlucHV0LiBJbnB1dCB2YWxpZGF0aW9uIHdpdGggVW5pY29kZSBub3JtYWxpemF0aW9uIGlzIGhhbmRsZWQgYnkgdXBzdHJlYW0gdmFsaWRhdG9ycydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICcqKi9wYWNrYWdlcy9zYWZldHkvc3JjL1RpZXJlZFNhZmV0eVNlcnZpY2UudHMnLFxuICAgIHJlYXNvbjogJ1RpZXJlZFNhZmV0eVNlcnZpY2UgdmFsaWRhdGVzIG9wZXJhdGlvbiBzYWZldHkgbGV2ZWxzLCBub3QgdXNlciBpbnB1dC4gSW5wdXQgdmFsaWRhdGlvbiB3aXRoIFVuaWNvZGUgbm9ybWFsaXphdGlvbiBpcyBoYW5kbGVkIGJ5IHVwc3RyZWFtIHZhbGlkYXRvcnMnXG4gIH0sXG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBEb2NrZXIgVG9rZW4gTWVhc3VyZW1lbnQgU2NyaXB0IC0gUFIgIzI5MlxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIHtcbiAgICBydWxlOiAnT1dBU1AtQTAzLTAwMicsXG4gICAgZmlsZTogJ3NjcmlwdHMvbWVhc3VyZS1kb2NrZXItdG9rZW5zLnRzJyxcbiAgICByZWFzb246ICdDb21tYW5kIGluamVjdGlvbiBtaXRpZ2F0ZWQ6IGludGVyZmFjZU1vZGUgYW5kIGVuZHBvaW50TW9kZSBhcmUgdmFsaWRhdGVkIGFnYWluc3QgVkFMSURfSU5URVJGQUNFX01PREVTIGFuZCBWQUxJRF9FTkRQT0lOVF9NT0RFUyBhbGxvd2xpc3RzIGJlZm9yZSB1c2UgaW4gc3Bhd24oKS4gVHlwZVNjcmlwdCB0eXBlcyBhbHNvIGNvbnN0cmFpbiBwYXJhbWV0ZXJzIGF0IGNvbXBpbGUgdGltZS4gUFIgIzI5MidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdPV0FTUC1BMDMtMDAyJyxcbiAgICBmaWxlOiAnKiovc2NyaXB0cy9tZWFzdXJlLWRvY2tlci10b2tlbnMudHMnLFxuICAgIHJlYXNvbjogJ0NvbW1hbmQgaW5qZWN0aW9uIG1pdGlnYXRlZDogaW50ZXJmYWNlTW9kZSBhbmQgZW5kcG9pbnRNb2RlIGFyZSB2YWxpZGF0ZWQgYWdhaW5zdCBWQUxJRF9JTlRFUkZBQ0VfTU9ERVMgYW5kIFZBTElEX0VORFBPSU5UX01PREVTIGFsbG93bGlzdHMgYmVmb3JlIHVzZSBpbiBzcGF3bigpLiBUeXBlU2NyaXB0IHR5cGVzIGFsc28gY29uc3RyYWluIHBhcmFtZXRlcnMgYXQgY29tcGlsZSB0aW1lLiBQUiAjMjkyJ1xuICB9LFxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gVW5pZmllZCBMb2dnaW5nIFN5c3RlbSDigJQgUFIgIzQ3MVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFNpbmtzIHJlY2VpdmUgcHJlLWNvbnN0cnVjdGVkIFVuaWZpZWRMb2dFbnRyeSBvYmplY3RzIGZyb20gTG9nTWFuYWdlci5cbiAgLy8gRGF0YSBlbnRlcnMgdGhlIHBpcGVsaW5lIHRocm91Z2ggTG9nSG9va3Mgd2hpY2ggY3JlYXRlcyBlbnRyaWVzIGZyb21cbiAgLy8gaW50ZXJuYWwgc3lzdGVtIGV2ZW50cy4gTUNQTG9nZ2VyIHNhbml0aXplcyB2aWEgc2FuaXRpemVNZXNzYWdlKCkgYW5kXG4gIC8vIHNhbml0aXplRGF0YSgpIGJlZm9yZSBlbWl0dGluZy4gT3RoZXIgc291cmNlcyAoU2VjdXJpdHlNb25pdG9yLFxuICAvLyBQZXJmb3JtYW5jZU1vbml0b3IsIGV0Yy4pIGVtaXQgaW50ZXJuYWwgc3lzdGVtIGRhdGEsIG5vdCB1c2VyIGlucHV0LlxuICAvLyBUaGUgU1NFIHZpZXdlciBIVE1MLWVzY2FwZXMgYWxsIGR5bmFtaWMgY29udGVudCB2aWEgZXNjSHRtbCgpL1xuICAvLyBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgpLlxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9sb2dnaW5nL3R5cGVzLnRzJyxcbiAgICByZWFzb246ICdQdXJlIHR5cGUgZGVmaW5pdGlvbnMgYW5kIGludGVyZmFjZXMg4oCUIG5vIGRhdGEgcHJvY2Vzc2luZyBvciB1c2VyIGlucHV0IGhhbmRsaW5nLiBQUiAjNDcxJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9sb2dnaW5nL3NpbmtzL01lbW9yeUxvZ1NpbmsudHMnLFxuICAgIHJlYXNvbjogJ1JlY2VpdmVzIHByZS1jb25zdHJ1Y3RlZCBVbmlmaWVkTG9nRW50cnkgb2JqZWN0cyBmcm9tIExvZ01hbmFnZXIuIFF1ZXJ5IHBhcmFtZXRlcnMgYXJlIHVzZWQgYXMgcmVhZC1vbmx5IHN1YnN0cmluZyBmaWx0ZXJzLCBub3Qgd3JpdHRlbiB0byBvdXRwdXQuIFBSICM0NzEnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL2xvZ2dpbmcvc2lua3MvRmlsZUxvZ1NpbmsudHMnLFxuICAgIHJlYXNvbjogJ1JlY2VpdmVzIHByZS1mb3JtYXR0ZWQgZW50cmllcyB2aWEgSUxvZ0Zvcm1hdHRlci4gRmlsZSBwYXRocyBidWlsdCBmcm9tIGhhcmRjb2RlZCBjYXRlZ29yeSBuYW1lcyArIGRhdGVzLiBNQ1BMb2dnZXIgc2FuaXRpemVzIHVwc3RyZWFtIHZpYSBzYW5pdGl6ZU1lc3NhZ2Uvc2FuaXRpemVEYXRhOyBvdGhlciBzb3VyY2VzIGVtaXQgaW50ZXJuYWwgc3lzdGVtIGRhdGEuIFBSICM0NzEnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL2xvZ2dpbmcvc2lua3MvU1NFTG9nU2luay50cycsXG4gICAgcmVhc29uOiAnSlNPTi1zZXJpYWxpemVzIHByZS1jb25zdHJ1Y3RlZCBVbmlmaWVkTG9nRW50cnkgb2JqZWN0cyBvdmVyIFNTRS4gTm8gSFRNTCByZW5kZXJpbmc7IHRoZSB2aWV3ZXIgKHZpZXdlckh0bWwudHMpIGhhbmRsZXMgSFRNTCBlc2NhcGluZyB2aWEgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUuIFBSICM0NzEnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL2xvZ2dpbmcvdmlld2VyL3ZpZXdlckh0bWwudHMnLFxuICAgIHJlYXNvbjogJ0FsbCBkeW5hbWljIGNvbnRlbnQgKHRpbWVzdGFtcCwgY2F0ZWdvcnksIHNvdXJjZSwgbWVzc2FnZSwgY29ycmVsYXRpb25JZCkgaXMgSFRNTC1lc2NhcGVkIHZpYSBlc2NIdG1sKCkgdXNpbmcgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUgYmVmb3JlIERPTSBpbnNlcnRpb24uIFBSICM0NzEnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3N0b3JhZ2UvdHlwZXMudHMnLFxuICAgIHJlYXNvbjogJ0ZBTFNFIFBPU0lUSVZFOiBUeXBlLW9ubHkgaW50ZXJmYWNlIGRlY2xhcmF0aW9ucyAoU3RvcmFnZUl0ZW1NZXRhZGF0YSwgRWxlbWVudEluZGV4RW50cnksIE1hbmlmZXN0RGlmZlJlc3VsdCkuIE5vIGV4ZWN1dGFibGUgaW5wdXQtcHJvY2Vzc2luZyBjb2RlOyBVbmljb2RlIG5vcm1hbGl6YXRpb24gaXMgZW5mb3JjZWQgaW4gY29uY3JldGUgc3RvcmFnZSBwYXJzZXJzL2xheWVycy4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3N0b3JhZ2UvSVN0b3JhZ2VCYWNrZW5kLnRzJyxcbiAgICByZWFzb246ICdGQUxTRSBQT1NJVElWRTogSW50ZXJmYWNlIGNvbnRyYWN0IG9ubHkgZm9yIGJhY2tlbmQgYWJzdHJhY3Rpb24uIE5vIHJ1bnRpbWUgdXNlci1pbnB1dCBoYW5kbGluZyBpbiB0aGlzIGZpbGU7IG5vcm1hbGl6YXRpb24gaXMgZW5mb3JjZWQgYnkgaW1wbGVtZW50aW5nIHN0b3JhZ2UgbGF5ZXJzIGFuZCB2YWxpZGF0b3JzLidcbiAgfSxcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFZlcmlmaWNhdGlvbk5vdGlmaWVyIEZhbHNlIFBvc2l0aXZlcyDigJQgSXNzdWUgIzUzN1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIHtcbiAgICBydWxlOiAnT1dBU1AtQTAzLTAwMicsXG4gICAgZmlsZTogJ3NyYy9zZXJ2aWNlcy9WZXJpZmljYXRpb25Ob3RpZmllci50cycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IExpbmVzIDExNywgMTMyLCAxNDUgdXNlIHNwYXduKCkgd2l0aCBhcnJheSBhcmd1bWVudHMgKG5vIHNoZWxsIGludm9jYXRpb24pLiB6ZW5pdHkva2RpYWxvZy94bWVzc2FnZSBhcmUgZGlzcGxheS1vbmx5IHRvb2xzIHRoYXQgcmVuZGVyIHRleHQgaW4gR1VJIGRpYWxvZ3Mgd2l0aG91dCBpbnRlcnByZXRpbmcgY29udGVudCBhcyBjb2RlLiBhZ2VudE5hbWUgKGZyb20gTUNQIHBhcmFtcykgYW5kIGNvZGUgKGNyeXB0b2dyYXBoaWMgYWxwaGFudW1lcmljKSBmbG93IGludG8gZGlzcGxheSB0ZXh0IG9ubHkuIFNlZSBJc3N1ZSAjNTM3IGV2aWRlbmNlIHRyYWNlLidcbiAgfSxcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFdlYiBVSSBDbGllbnQtU2lkZSBGYWxzZSBQb3NpdGl2ZXMg4oCUIFJDMSBTZWN1cml0eSBBdWRpdFxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA1JyxcbiAgICBmaWxlOiAnc3JjL3dlYi9wdWJsaWMvYXBwLmpzJyxcbiAgICByZWFzb246ICdDbGllbnQtc2lkZSBicm93c2VyIEphdmFTY3JpcHQuIFNlY3VyZVlhbWxQYXJzZXIgaXMgYSBOb2RlLmpzIG1vZHVsZSB1bmF2YWlsYWJsZSBpbiBicm93c2VyIGNvbnRleHQuIHNhZmVQYXJzZVlhbWwoKSB3cmFwcGVyIHVzZXMgQ09SRV9TQ0hFTUEgKHNhZmUsIG5vIGN1c3RvbSB0eXBlcykgd2l0aCA1MTJLQiBzaXplIGxpbWl0LiBEYXRhIHNlcnZlZCBmcm9tIGxvY2FsaG9zdCBvciB0cnVzdGVkIEdpdEh1YiBjb2xsZWN0aW9uIEFQSS4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3dlYi9wdWJsaWMvYXBwLmpzJyxcbiAgICByZWFzb246ICdDbGllbnQtc2lkZSBicm93c2VyIEphdmFTY3JpcHQuIFVuaWNvZGVWYWxpZGF0b3IgaXMgYSBOb2RlLmpzIG1vZHVsZSB1bmF2YWlsYWJsZSBpbiBicm93c2VyIGNvbnRleHQuIElucHV0IHNlcnZlZCBmcm9tIERvbGxob3VzZU1DUCBzZXJ2ZXIgd2hpY2ggbm9ybWFsaXplcyBiZWZvcmUgc2VydmluZy4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3dlYi9zZXJ2ZXIudHMnLFxuICAgIHJlYXNvbjogJ05GQyBub3JtYWxpemF0aW9uIGFkZGVkIHRvIHJlcS5wYXRoIGluIFNQQSBmYWxsYmFjayBoYW5kbGVyIChsaW5lIDE4MCkuIEZpbGUtbGV2ZWwgc2Nhbm5lciBmbGFncyBkZXNwaXRlIHBlci1pbnB1dCBmaXguJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy93ZWIvcm91dGVzLnRzJyxcbiAgICByZWFzb246ICdORkMgbm9ybWFsaXphdGlvbiB2aWEgbm9ybWFsaXplSW5wdXQoKSBhcHBsaWVkIHRvIGFsbCByZXEucGFyYW1zLiBGaWxlLWxldmVsIHNjYW5uZXIgZmxhZ3MgZGVzcGl0ZSBwZXItaW5wdXQgZml4LidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvY29udmVydGVycy9BZ2VudFNraWxsQ29udmVydGVyLnRzJyxcbiAgICByZWFzb246ICdORkMgbm9ybWFsaXphdGlvbiBhZGRlZCB0byBib3RoIGNvbnZlcnRBZ2VudFRvRG9sbGhvdXNlKCkgYW5kIGNvbnZlcnREb2xsaG91c2VUb0FnZW50KCkgZW50cnkgcG9pbnRzLiBGaWxlLWxldmVsIHNjYW5uZXIgZmxhZ3MgZGVzcGl0ZSBwZXItaW5wdXQgZml4LidcbiAgfVxuXTtcblxuLyoqXG4gKiBWYWxpZGF0ZSBzdXBwcmVzc2lvbiBjb25maWd1cmF0aW9uIGF0IHN0YXJ0dXBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlU3VwcHJlc3Npb25zKCk6IHN0cmluZ1tdIHtcbiAgY29uc3QgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCBzZWVuUGF0dGVybnMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgXG4gIGZvciAoY29uc3Qgc3VwcHJlc3Npb24gb2Ygc3VwcHJlc3Npb25zKSB7XG4gICAgLy8gQ2hlY2sgZm9yIGVtcHR5IHJlYXNvbnNcbiAgICBpZiAoIXN1cHByZXNzaW9uLnJlYXNvbiB8fCBzdXBwcmVzc2lvbi5yZWFzb24udHJpbSgpLmxlbmd0aCA8IDEwKSB7XG4gICAgICBlcnJvcnMucHVzaChgU3VwcHJlc3Npb24gZm9yICR7c3VwcHJlc3Npb24ucnVsZX0gaGFzIGluc3VmZmljaWVudCByZWFzb25gKTtcbiAgICB9XG4gICAgXG4gICAgLy8gQ2hlY2sgZm9yIHZhbGlkIHJ1bGUgcGF0dGVybnNcbiAgICBjb25zdCBydWxlUGF0dGVybiA9IC9eKERNQ1AtU0VDLVxcZHszfXxPV0FTUC1bQS1aXVxcZHsyfS1cXGR7M318Q1dFLVxcZCstXFxkezN9fFxcKikkLztcbiAgICBpZiAoIXN1cHByZXNzaW9uLnJ1bGUubWF0Y2gocnVsZVBhdHRlcm4pKSB7XG4gICAgICBlcnJvcnMucHVzaChgSW52YWxpZCBydWxlIHBhdHRlcm46ICR7c3VwcHJlc3Npb24ucnVsZX1gKTtcbiAgICB9XG4gICAgXG4gICAgLy8gQ2hlY2sgZm9yIGR1cGxpY2F0ZSBzdXBwcmVzc2lvbnNcbiAgICBjb25zdCBrZXkgPSBgJHtzdXBwcmVzc2lvbi5ydWxlfToke3N1cHByZXNzaW9uLmZpbGUgfHwgJyonfWA7XG4gICAgaWYgKHNlZW5QYXR0ZXJucy5oYXMoa2V5KSkge1xuICAgICAgZXJyb3JzLnB1c2goYER1cGxpY2F0ZSBzdXBwcmVzc2lvbjogJHtrZXl9YCk7XG4gICAgfVxuICAgIHNlZW5QYXR0ZXJucy5hZGQoa2V5KTtcbiAgICBcbiAgICAvLyBWYWxpZGF0ZSBnbG9iIHBhdHRlcm5zXG4gICAgaWYgKHN1cHByZXNzaW9uLmZpbGU/LmluY2x1ZGVzKCcqKicpICYmICFzdXBwcmVzc2lvbi5maWxlLmluY2x1ZGVzKCcqKi8nKSkge1xuICAgICAgZXJyb3JzLnB1c2goYEludmFsaWQgZ2xvYiBwYXR0ZXJuIGluICR7c3VwcHJlc3Npb24uZmlsZX0gLSAqKiBtdXN0IGJlIGZvbGxvd2VkIGJ5IC9gKTtcbiAgICB9XG4gIH1cbiAgXG4gIHJldHVybiBlcnJvcnM7XG59XG5cbi8qKlxuICogQ29udmVydCBnbG9iIHBhdHRlcm4gdG8gcmVnZXggcGF0dGVybiBzYWZlbHlcbiAqIFVzaW5nIGEgcHJvcGVyIGdsb2ItdG8tcmVnZXggY29udmVyc2lvbiB0aGF0IGhhbmRsZXMgYWxsIGVkZ2UgY2FzZXNcbiAqL1xuZnVuY3Rpb24gZ2xvYlRvUmVnZXgoZ2xvYjogc3RyaW5nKTogUmVnRXhwIHtcbiAgLy8gQ2hlY2sgY2FjaGUgZmlyc3RcbiAgY29uc3QgY2FjaGVkID0gY2FjaGUuZ2V0UmVnZXgoZ2xvYik7XG4gIGlmIChjYWNoZWQpIHJldHVybiBjYWNoZWQ7XG4gIFxuICAvLyBTcGVjaWFsIGNhc2U6IGlmIGdsb2Igc3RhcnRzIHdpdGggKiwgaXQgc2hvdWxkIG1hdGNoIGFueXRoaW5nIGF0IHRoZSBiZWdpbm5pbmdcbiAgbGV0IHByb2Nlc3NlZEdsb2IgPSBnbG9iO1xuICBsZXQgcHJlZml4ID0gJyc7XG4gIGlmIChnbG9iLnN0YXJ0c1dpdGgoJyonKSAmJiAhZ2xvYi5zdGFydHNXaXRoKCcqKicpKSB7XG4gICAgcHJlZml4ID0gJyg/Oi4qLyk/JzsgIC8vIE9wdGlvbmFsIHBhdGggcHJlZml4XG4gICAgcHJvY2Vzc2VkR2xvYiA9IGdsb2Iuc3Vic3RyaW5nKDEpO1xuICB9XG4gIFxuICAvLyBFc2NhcGUgYWxsIHJlZ2V4IHNwZWNpYWwgY2hhcmFjdGVycyBleGNlcHQgKiBhbmQgL1xuICAvLyBGaXhlZDogUHJvcGVybHkgZXNjYXBlIGJhY2tzbGFzaGVzIGFuZCBvdGhlciBzcGVjaWFsIHJlZ2V4IGNoYXJhY3RlcnNcbiAgbGV0IHBhdHRlcm4gPSBwcm9jZXNzZWRHbG9iLnJlcGxhY2VBbGwoL1tcXFxcXiQuKCkrP3t9W1xcXXxdL2csICdcXFxcJCYnKTtcblxuICAvLyBIYW5kbGUgZ2xvYiBwYXR0ZXJucyBpbiBjb3JyZWN0IG9yZGVyXG4gIC8vIFJlcGxhY2UgKiogYmVmb3JlICogdG8gYXZvaWQgY29uZmxpY3RzXG4gIHBhdHRlcm4gPSBwYXR0ZXJuXG4gICAgLnJlcGxhY2VBbGwoJyoqJywgJzw8R0xPQlNUQVI+PicpICAgICAvLyBUZW1wb3JhcnkgcGxhY2Vob2xkZXIgZm9yICoqXG4gICAgLnJlcGxhY2VBbGwoJyonLCAnPDxTVEFSPj4nKSAgICAgICAgICAgIC8vIFRlbXBvcmFyeSBwbGFjZWhvbGRlciBmb3IgKlxuICAgIC5yZXBsYWNlQWxsKCc8PEdMT0JTVEFSPj4vJywgJyg/Oi4qLyk/JykgLy8gKiovIG1hdGNoZXMgYW55IG51bWJlciBvZiBkaXJlY3RvcmllcyBpbmNsdWRpbmcgbm9uZVxuICAgIC5yZXBsYWNlQWxsKCc8PEdMT0JTVEFSPj4nLCAnLionKSAgICAgICAvLyAqKiBtYXRjaGVzIGFueXRoaW5nXG4gICAgLnJlcGxhY2VBbGwoJzw8U1RBUj4+JywgJ1teL10qJykgICAgICAgIC8vICogbWF0Y2hlcyBhbnl0aGluZyBleGNlcHQgZGlyZWN0b3J5IHNlcGFyYXRvclxuICAgIC5yZXBsYWNlQWxsKCcvJywgJ1xcXFwvJyk7ICAgICAgICAgICAgICAgIC8vIEVzY2FwZSBmb3J3YXJkIHNsYXNoZXNcbiAgXG4gIC8vIENvbWJpbmUgcHJlZml4IGFuZCBwYXR0ZXJuXG4gIGNvbnN0IGZ1bGxQYXR0ZXJuID0gcHJlZml4ICsgcGF0dGVybjtcbiAgXG4gIC8vIEFkZCBhbmNob3JzIHRvIGVuc3VyZSBmdWxsIHBhdGggbWF0Y2hcbiAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKGBeJHtmdWxsUGF0dGVybn0kYCk7XG4gIFxuICAvLyBDYWNoZSB0aGUgY29tcGlsZWQgcmVnZXhcbiAgY2FjaGUuc2V0UmVnZXgoZ2xvYiwgcmVnZXgpO1xuICBcbiAgcmV0dXJuIHJlZ2V4O1xufVxuXG4vKipcbiAqIE5vcm1hbGl6ZSBmaWxlIHBhdGggZm9yIGNvbnNpc3RlbnQgbWF0Y2hpbmdcbiAqIEhhbmRsZXMgYm90aCBhYnNvbHV0ZSBhbmQgcmVsYXRpdmUgcGF0aHMgYWNyb3NzIGRpZmZlcmVudCBwbGF0Zm9ybXNcbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplUGF0aChmaWxlUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgLy8gQ29udmVydCBiYWNrc2xhc2hlcyB0byBmb3J3YXJkIHNsYXNoZXMgZm9yIFdpbmRvd3MgcGF0aHNcbiAgbGV0IG5vcm1hbGl6ZWQgPSBmaWxlUGF0aC5yZXBsYWNlQWxsKCdcXFxcJywgJy8nKTtcblxuICAvLyBSZW1vdmUgZHVwbGljYXRlIHNsYXNoZXNcbiAgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZWQucmVwbGFjZUFsbCgvXFwvKy9nLCAnLycpO1xuICBcbiAgLy8gUmVtb3ZlIHRyYWlsaW5nIHNsYXNoIGlmIHByZXNlbnRcbiAgaWYgKG5vcm1hbGl6ZWQuZW5kc1dpdGgoJy8nKSAmJiBub3JtYWxpemVkLmxlbmd0aCA+IDEpIHtcbiAgICBub3JtYWxpemVkID0gbm9ybWFsaXplZC5zbGljZSgwLCAtMSk7XG4gIH1cbiAgXG4gIHJldHVybiBub3JtYWxpemVkO1xufVxuXG4vKipcbiAqIEV4dHJhY3QgcmVsYXRpdmUgcGF0aCBmcm9tIGFic29sdXRlIHBhdGhcbiAqIEhhbmRsZXMgdmFyaW91cyBDSS9DRCBhbmQgbG9jYWwgZGV2ZWxvcG1lbnQgcGF0aCBmb3JtYXRzXG4gKi9cbmZ1bmN0aW9uIGdldFJlbGF0aXZlUGF0aChhYnNvbHV0ZVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSBub3JtYWxpemVQYXRoKGFic29sdXRlUGF0aCk7XG4gIFxuICAvLyBJZiBhbHJlYWR5IGEgcmVsYXRpdmUgcGF0aCwgcmV0dXJuIGFzLWlzXG4gIGlmICghbm9ybWFsaXplZC5zdGFydHNXaXRoKCcvJykgJiYgIW5vcm1hbGl6ZWQubWF0Y2goL15bQS1aXTovaSkpIHtcbiAgICByZXR1cm4gbm9ybWFsaXplZDtcbiAgfVxuICBcbiAgLy8gRGVmaW5lIGNvbW1vbiBwcm9qZWN0IHNvdXJjZSBkaXJlY3Rvcmllc1xuICBjb25zdCBwcm9qZWN0RGlycyA9IFsnc3JjLycsICdfX3Rlc3RzX18vJywgJ3NjcmlwdHMvJywgJ2RvY3MvJywgJ3Rlc3RzLycsICd0ZXN0LWFyY2hpdmUvJywgJ2xpYi8nXTtcbiAgXG4gIC8vIEZpbmQgdGhlIHBvc2l0aW9uIG9mIGNvbW1vbiBwcm9qZWN0IGRpcmVjdG9yaWVzIGluIHRoZSBwYXRoXG4gIGxldCBiZXN0TWF0Y2ggPSB7IGluZGV4OiAtMSwgZGlyOiAnJywgcmVsYXRpdmVQYXRoOiAnJyB9O1xuICBcbiAgZm9yIChjb25zdCBkaXIgb2YgcHJvamVjdERpcnMpIHtcbiAgICAvLyBMb29rIGZvciAvZGlyIHBhdHRlcm4gKHdpdGggbGVhZGluZyBzbGFzaCB0byBhdm9pZCBmYWxzZSBtYXRjaGVzKVxuICAgIGNvbnN0IHNlYXJjaFBhdHRlcm4gPSBgLyR7ZGlyfWA7XG4gICAgY29uc3QgaW5kZXggPSBub3JtYWxpemVkLmxhc3RJbmRleE9mKHNlYXJjaFBhdHRlcm4pO1xuICAgIFxuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAvLyBFeHRyYWN0IGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIHBhcmVudCBvZiB0aGlzIGRpcmVjdG9yeVxuICAgICAgLy8gRm9yIGV4YW1wbGU6IC9ob21lL3VzZXIvcHJvamVjdC9zcmMvZmlsZS50cyAtPiBzcmMvZmlsZS50c1xuICAgICAgY29uc3QgZGlyU3RhcnRJbmRleCA9IGluZGV4ICsgMTsgLy8gU2tpcCB0aGUgbGVhZGluZyBzbGFzaFxuICAgICAgY29uc3QgcmVsYXRpdmVQYXRoID0gbm9ybWFsaXplZC5zdWJzdHJpbmcoZGlyU3RhcnRJbmRleCk7XG4gICAgICBcbiAgICAgIC8vIFZlcmlmeSB0aGlzIGxvb2tzIGxpa2UgYSB2YWxpZCBwcm9qZWN0IGZpbGVcbiAgICAgIGlmIChyZWxhdGl2ZVBhdGguc3RhcnRzV2l0aChkaXIpICYmIHJlbGF0aXZlUGF0aC5pbmNsdWRlcygnLicpKSB7XG4gICAgICAgIC8vIEtlZXAgdGhlIG1hdGNoIHRoYXQgYXBwZWFycyBsYXRlc3QgaW4gdGhlIHBhdGggKG1vc3Qgc3BlY2lmaWMpXG4gICAgICAgIGlmIChpbmRleCA+IGJlc3RNYXRjaC5pbmRleCkge1xuICAgICAgICAgIGJlc3RNYXRjaCA9IHsgaW5kZXgsIGRpciwgcmVsYXRpdmVQYXRoIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgXG4gIC8vIElmIHdlIGZvdW5kIGEgbWF0Y2gsIHJldHVybiBpdFxuICBpZiAoYmVzdE1hdGNoLmluZGV4ID49IDApIHtcbiAgICByZXR1cm4gYmVzdE1hdGNoLnJlbGF0aXZlUGF0aDtcbiAgfVxuICBcbiAgLy8gRmFsbGJhY2s6IFRyeSB0byBmaW5kIGNvbW1vbiBmaWxlIHBhdHRlcm5zIHRoYXQgaW5kaWNhdGUgcHJvamVjdCBmaWxlc1xuICBjb25zdCBmaWxlUGF0dGVybnMgPSBbXG4gICAgL1xcLyhzcmN8X190ZXN0c19ffHNjcmlwdHN8dGVzdHx0ZXN0c3xsaWIpXFwvLipcXC5banRdc3g/JC8sXG4gICAgL1xcLyhzcmN8X190ZXN0c19ffHNjcmlwdHN8dGVzdHx0ZXN0c3xsaWIpXFwvLipcXC5qc29uJC8sXG4gICAgL1xcLyhzcmN8X190ZXN0c19ffHNjcmlwdHN8dGVzdHx0ZXN0c3xsaWIpXFwvLipcXC55YT9tbCQvLFxuICAgIC9cXC9wYWNrYWdlXFwuanNvbiQvLFxuICAgIC9cXC9wYWNrYWdlLWxvY2tcXC5qc29uJC8sXG4gICAgL1xcL3RzY29uZmlnLipcXC5qc29uJC8sXG4gICAgL1xcL1xcLi4qcmNcXC5qc29uJC8gIC8vIC5lc2xpbnRyYy5qc29uLCBldGMuXG4gIF07XG4gIFxuICBmb3IgKGNvbnN0IHBhdHRlcm4gb2YgZmlsZVBhdHRlcm5zKSB7XG4gICAgY29uc3QgbWF0Y2ggPSBub3JtYWxpemVkLm1hdGNoKHBhdHRlcm4pO1xuICAgIGlmIChtYXRjaCkge1xuICAgICAgLy8gRmluZCB3aGVyZSB0aGUgbWF0Y2ggc3RhcnRzIGFuZCBleHRyYWN0IGZyb20gdGhlcmVcbiAgICAgIGNvbnN0IG1hdGNoSW5kZXggPSBub3JtYWxpemVkLmluZGV4T2YobWF0Y2hbMF0pO1xuICAgICAgaWYgKG1hdGNoSW5kZXggPj0gMCkge1xuICAgICAgICByZXR1cm4gbm9ybWFsaXplZC5zdWJzdHJpbmcobWF0Y2hJbmRleCArIDEpOyAvLyBTa2lwIGxlYWRpbmcgL1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBcbiAgLy8gTGFzdCByZXNvcnQ6IGlmIHBhdGggY29udGFpbnMgY29tbW9uIGV4dGVuc2lvbnMsIHRyeSB0byBleHRyYWN0IGEgcmVhc29uYWJsZSByZWxhdGl2ZSBwYXRoXG4gIGlmIChub3JtYWxpemVkLm1hdGNoKC9cXC4odHN8anN8dHN4fGpzeHxqc29ufHlhbWx8eW1sKSQvKSkge1xuICAgIC8vIEZpbmQgdGhlIGxhc3Qgc2VnbWVudCB0aGF0IGxvb2tzIGxpa2UgYSBwcm9qZWN0IGRpcmVjdG9yeVxuICAgIGNvbnN0IHNlZ21lbnRzID0gbm9ybWFsaXplZC5zcGxpdCgnLycpO1xuICAgIGZvciAobGV0IGkgPSBzZWdtZW50cy5sZW5ndGggLSAyOyBpID49IDA7IGktLSkge1xuICAgICAgaWYgKHByb2plY3REaXJzLnNvbWUoZGlyID0+IGRpci5zdGFydHNXaXRoKHNlZ21lbnRzW2ldKSkpIHtcbiAgICAgICAgcmV0dXJuIHNlZ21lbnRzLnNsaWNlKGkpLmpvaW4oJy8nKTtcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgLy8gRm9yIHJvb3QtbGV2ZWwgZmlsZXMgbGlrZSBwYWNrYWdlLWxvY2suanNvbiwganVzdCByZXR1cm4gdGhlIGZpbGVuYW1lXG4gICAgY29uc3QgZmlsZW5hbWUgPSBzZWdtZW50c1tzZWdtZW50cy5sZW5ndGggLSAxXTtcbiAgICBpZiAoZmlsZW5hbWUgJiYgZmlsZW5hbWUuaW5jbHVkZXMoJy4nKSkge1xuICAgICAgcmV0dXJuIGZpbGVuYW1lO1xuICAgIH1cbiAgfVxuICBcbiAgLy8gUmV0dXJuIHRoZSBub3JtYWxpemVkIHBhdGggaWYgd2UgY2FuJ3QgZXh0cmFjdCByZWxhdGl2ZVxuICByZXR1cm4gbm9ybWFsaXplZDtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBhIGZpbmRpbmcgc2hvdWxkIGJlIHN1cHByZXNzZWRcbiAqIE9wdGltaXplZCB3aXRoIGNhY2hpbmcgYW5kIGVhcmx5IHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNob3VsZFN1cHByZXNzKHJ1bGVJZDogc3RyaW5nLCBmaWxlUGF0aD86IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAoIWZpbGVQYXRoKSByZXR1cm4gZmFsc2U7XG4gIFxuICAvLyBOb3JtYWxpemUgcGF0aHMgZm9yIGNvbnNpc3RlbnQgbWF0Y2hpbmdcbiAgY29uc3Qgbm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVQYXRoKGZpbGVQYXRoKTtcbiAgY29uc3QgcmVsYXRpdmVQYXRoID0gZ2V0UmVsYXRpdmVQYXRoKG5vcm1hbGl6ZWRQYXRoKTtcbiAgXG4gIC8vIENoZWNrIGNhY2hlIGZpcnN0XG4gIGNvbnN0IGNhY2hlZCA9IGNhY2hlLmdldChydWxlSWQsIHJlbGF0aXZlUGF0aCk7XG4gIGlmIChjYWNoZWQgIT09IHVuZGVmaW5lZCkgcmV0dXJuIGNhY2hlZDtcbiAgXG4gIC8vIFByb2Nlc3Mgc3VwcHJlc3Npb25zIHdpdGggZWFybHkgcmV0dXJuc1xuICBmb3IgKGNvbnN0IHN1cHByZXNzaW9uIG9mIHN1cHByZXNzaW9ucykge1xuICAgIC8vIFNraXAgaWYgcnVsZSBkb2Vzbid0IG1hdGNoXG4gICAgaWYgKHN1cHByZXNzaW9uLnJ1bGUgIT09ICcqJyAmJiBzdXBwcmVzc2lvbi5ydWxlICE9PSBydWxlSWQpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBcbiAgICAvLyBIYW5kbGUgZ2xvYmFsIHN1cHByZXNzaW9ucyAobm8gZmlsZSBzcGVjaWZpZWQpXG4gICAgaWYgKCFzdXBwcmVzc2lvbi5maWxlKSB7XG4gICAgICBjYWNoZS5zZXQocnVsZUlkLCByZWxhdGl2ZVBhdGgsIHRydWUpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIFxuICAgIC8vIENoZWNrIGV4YWN0IGZpbGUgbWF0Y2ggKG1vc3QgY29tbW9uIGNhc2UpXG4gICAgaWYgKHN1cHByZXNzaW9uLmZpbGUgPT09IHJlbGF0aXZlUGF0aCB8fCBzdXBwcmVzc2lvbi5maWxlID09PSBub3JtYWxpemVkUGF0aCkge1xuICAgICAgY2FjaGUuc2V0KHJ1bGVJZCwgcmVsYXRpdmVQYXRoLCB0cnVlKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBcbiAgICAvLyBDaGVjayBwYXR0ZXJuIG1hdGNoIG9ubHkgaWYgZmlsZSBjb250YWlucyB3aWxkY2FyZHNcbiAgICBpZiAoc3VwcHJlc3Npb24uZmlsZS5pbmNsdWRlcygnKicpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZWdleCA9IGdsb2JUb1JlZ2V4KHN1cHByZXNzaW9uLmZpbGUpO1xuICAgICAgICBpZiAocmVnZXgudGVzdChyZWxhdGl2ZVBhdGgpIHx8IHJlZ2V4LnRlc3Qobm9ybWFsaXplZFBhdGgpKSB7XG4gICAgICAgICAgY2FjaGUuc2V0KHJ1bGVJZCwgcmVsYXRpdmVQYXRoLCB0cnVlKTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKGBJbnZhbGlkIHN1cHByZXNzaW9uIHBhdHRlcm4gXCIke3N1cHByZXNzaW9uLmZpbGV9XCI6YCwgZXJyb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBcbiAgLy8gTm90IHN1cHByZXNzZWRcbiAgY2FjaGUuc2V0KHJ1bGVJZCwgcmVsYXRpdmVQYXRoLCBmYWxzZSk7XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBDbGVhciBzdXBwcmVzc2lvbiBjYWNoZSAodXNlZnVsIGZvciB0ZXN0aW5nKVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJTdXBwcmVzc2lvbkNhY2hlKCk6IHZvaWQge1xuICBjYWNoZS5jbGVhcigpO1xufVxuXG4vKipcbiAqIEdldCBzdXBwcmVzc2lvbiBzdGF0aXN0aWNzIGZvciByZXBvcnRpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN1cHByZXNzaW9uU3RhdHMoKTogeyBcbiAgdG90YWw6IG51bWJlcjsgXG4gIGJ5UnVsZTogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcbiAgYnlDYXRlZ29yeTogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcbn0ge1xuICBjb25zdCBzdGF0cyA9IHtcbiAgICB0b3RhbDogc3VwcHJlc3Npb25zLmxlbmd0aCxcbiAgICBieVJ1bGU6IHt9IGFzIFJlY29yZDxzdHJpbmcsIG51bWJlcj4sXG4gICAgYnlDYXRlZ29yeToge30gYXMgUmVjb3JkPHN0cmluZywgbnVtYmVyPlxuICB9O1xuICBcbiAgZm9yIChjb25zdCBzdXBwcmVzc2lvbiBvZiBzdXBwcmVzc2lvbnMpIHtcbiAgICAvLyBDb3VudCBieSBydWxlXG4gICAgc3RhdHMuYnlSdWxlW3N1cHByZXNzaW9uLnJ1bGVdID0gKHN0YXRzLmJ5UnVsZVtzdXBwcmVzc2lvbi5ydWxlXSB8fCAwKSArIDE7XG4gICAgXG4gICAgLy8gQ291bnQgYnkgY2F0ZWdvcnkgKGV4dHJhY3QgZnJvbSBydWxlIHByZWZpeClcbiAgICBjb25zdCBjYXRlZ29yeSA9IHN1cHByZXNzaW9uLnJ1bGUuc3BsaXQoJy0nKVswXTtcbiAgICBzdGF0cy5ieUNhdGVnb3J5W2NhdGVnb3J5XSA9IChzdGF0cy5ieUNhdGVnb3J5W2NhdGVnb3J5XSB8fCAwKSArIDE7XG4gIH1cbiAgXG4gIHJldHVybiBzdGF0cztcbn1cblxuLy8gVmFsaWRhdGUgc3VwcHJlc3Npb25zIG9uIG1vZHVsZSBsb2FkXG5jb25zdCB2YWxpZGF0aW9uRXJyb3JzID0gdmFsaWRhdGVTdXBwcmVzc2lvbnMoKTtcbmlmICh2YWxpZGF0aW9uRXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgbG9nZ2VyLndhcm4oJ1N1cHByZXNzaW9uIGNvbmZpZ3VyYXRpb24gd2FybmluZ3M6JywgdmFsaWRhdGlvbkVycm9ycyk7XG59XG4iXX0=
|
|
1311
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcHJlc3Npb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlY3VyaXR5L2F1ZGl0L2NvbmZpZy9zdXBwcmVzc2lvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFRbEQ7O0dBRUc7QUFDSCxNQUFNLGdCQUFnQjtJQUNaLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBbUIsQ0FBQztJQUNuQyxVQUFVLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7SUFFL0MsS0FBSztRQUNILElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQWMsRUFBRSxRQUFnQjtRQUMxQyxPQUFPLEdBQUcsTUFBTSxLQUFLLFFBQVEsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxHQUFHLENBQUMsTUFBYyxFQUFFLFFBQWdCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsR0FBRyxDQUFDLE1BQWMsRUFBRSxRQUFnQixFQUFFLEtBQWM7UUFDbEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELFFBQVEsQ0FBQyxPQUFlO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELFFBQVEsQ0FBQyxPQUFlLEVBQUUsS0FBYTtRQUNyQyxJQUFJLENB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QU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hELEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsdUNBQXVDO0FBQ3ZDLE1BQU0sZ0JBQWdCLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQztBQUNoRCxJQUFJLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUNoQyxNQUFNLENBQUMsSUFBSSxDQUFDLHFDQUFxQyxFQUFFLGdCQUFnQixDQUFDLENBQUM7QUFDdkUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU2VjdXJpdHkgQXVkaXQgU3VwcHJlc3Npb24gQ29uZmlndXJhdGlvblxuICogXG4gKiBUaGlzIGZpbGUgY29udGFpbnMgc3VwcHJlc3Npb24gcnVsZXMgZm9yIGZhbHNlIHBvc2l0aXZlcyBpbiB0aGUgc2VjdXJpdHkgYXVkaXQuXG4gKiBFYWNoIHN1cHByZXNzaW9uIHNob3VsZCBiZSB3ZWxsLWRvY3VtZW50ZWQgd2l0aCBhIGNsZWFyIHJlYXNvbi5cbiAqL1xuXG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi8uLi8uLi91dGlscy9sb2dnZXIuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN1cHByZXNzaW9uIHtcbiAgcnVsZTogc3RyaW5nO1xuICBmaWxlPzogc3RyaW5nO1xuICByZWFzb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBTdXBwcmVzc2lvbiBjYWNoZSBmb3IgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uXG4gKi9cbmNsYXNzIFN1cHByZXNzaW9uQ2FjaGUge1xuICBwcml2YXRlIGNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIGJvb2xlYW4+KCk7XG4gIHByaXZhdGUgcmVnZXhDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBSZWdFeHA+KCk7XG4gIFxuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLmNhY2hlLmNsZWFyKCk7XG4gICAgdGhpcy5yZWdleENhY2hlLmNsZWFyKCk7XG4gIH1cbiAgXG4gIGdldENhY2hlS2V5KHJ1bGVJZDogc3RyaW5nLCBmaWxlUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7cnVsZUlkfTo6JHtmaWxlUGF0aH1gO1xuICB9XG4gIFxuICBnZXQocnVsZUlkOiBzdHJpbmcsIGZpbGVQYXRoOiBzdHJpbmcpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZS5nZXQodGhpcy5nZXRDYWNoZUtleShydWxlSWQsIGZpbGVQYXRoKSk7XG4gIH1cbiAgXG4gIHNldChydWxlSWQ6IHN0cmluZywgZmlsZVBhdGg6IHN0cmluZywgdmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmNhY2hlLnNldCh0aGlzLmdldENhY2hlS2V5KHJ1bGVJZCwgZmlsZVBhdGgpLCB2YWx1ZSk7XG4gIH1cbiAgXG4gIGdldFJlZ2V4KHBhdHRlcm46IHN0cmluZyk6IFJlZ0V4cCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMucmVnZXhDYWNoZS5nZXQocGF0dGVybik7XG4gIH1cbiAgXG4gIHNldFJlZ2V4KHBhdHRlcm46IHN0cmluZywgcmVnZXg6IFJlZ0V4cCk6IHZvaWQge1xuICAgIHRoaXMucmVnZXhDYWNoZS5zZXQocGF0dGVybiwgcmVnZXgpO1xuICB9XG59XG5cbmNvbnN0IGNhY2hlID0gbmV3IFN1cHByZXNzaW9uQ2FjaGUoKTtcblxuZXhwb3J0IGNvbnN0IHN1cHByZXNzaW9uczogU3VwcHJlc3Npb25bXSA9IFtcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBTUUwgSW5qZWN0aW9uIEZhbHNlIFBvc2l0aXZlc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIHtcbiAgICBydWxlOiAnQ1dFLTg5LTAwMScsXG4gICAgZmlsZTogJ3NyYy91cGRhdGUvVXBkYXRlTWFuYWdlci50cycsXG4gICAgcmVhc29uOiAnRmFsc2UgcG9zaXRpdmUgLSBcIlVwZGF0ZSBGYWlsZWRcIiBpcyBhIFVJIG1lc3NhZ2UsIG5vdCBTUUwuIFRoZSBjb2RlYmFzZSBkb2VzIG5vdCB1c2UgU1FMLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdDV0UtODktMDAxJyxcbiAgICBmaWxlOiAnc3JjL2VsZW1lbnRzL21lbW9yaWVzL01lbW9yeU1hbmFnZXIudHMnLFxuICAgIHJlYXNvbjogJ0ZBTFNFIFBPU0lUSVZFOiBMaW5lIDEwMjQgaXMgYSBsb2dnZXIuZXJyb3IoKSBjYWxsIGZvcm1hdHRpbmcgYW4gZXJyb3IgbWVzc2FnZSB3aXRoIHN0cmluZyBjb25jYXRlbmF0aW9uLiBUaGlzIGlzIG5vdCBhIFNRTCBxdWVyeSAtIHRoZSBjb2RlYmFzZSBkb2VzIG5vdCB1c2UgU1FMLiBUaGUgc3RyaW5nIGNvbmNhdGVuYXRpb24gYnVpbGRzIGEgdXNlci1mYWNpbmcgZXJyb3IgbWVzc2FnZSBmb3IgZGVsZXRpb24gZmFpbHVyZXMuIFBSICM3J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0NXRS04OS0wMDEnLFxuICAgIGZpbGU6ICdzcmMvd2ViL3B1YmxpYy9tZXRyaWNzLmpzJyxcbiAgICByZWFzb246ICdGQUxTRSBQT1NJVElWRTogQnJvd3Nlci1zaWRlIERhdGUudG9Mb2NhbGVUaW1lU3RyaW5nKCkgY29uY2F0ZW5hdGlvbiBmb3IgZGlzcGxheSBsYWJlbC4gTm90IFNRTCDigJQgdGhlIGNvZGViYXNlIGRvZXMgbm90IHVzZSBTUUwuJ1xuICB9LFxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gTWV0cmljcyAmIFdlYiBDb25zb2xlIEZhbHNlIFBvc2l0aXZlc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL21ldHJpY3Mvc2lua3MvTWVtb3J5TWV0cmljc1NpbmsudHMnLFxuICAgIHJlYXNvbjogJ0ZBTFNFIFBPU0lUSVZFOiBJbnRlcm5hbCBtZXRyaWNzIHN0b3JhZ2Ug4oCUIGRvZXMgbm90IHByb2Nlc3MgdXNlciBpbnB1dCBkaXJlY3RseS4gTWV0cmljIG5hbWVzIGFuZCBzb3VyY2VzIGFyZSBzZXJ2ZXItZ2VuZXJhdGVkIGNvbnN0YW50cy4gSW5wdXQgbm9ybWFsaXphdGlvbiBpcyBoYW5kbGVkIGF0IHRoZSByb3V0ZSBoYW5kbGVyIGJvdW5kYXJ5LidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvbWV0cmljcy9jb2xsZWN0b3JzL1BlcmZvcm1hbmNlTW9uaXRvckNvbGxlY3Rvci50cycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IE1ldHJpYyBjb2xsZWN0b3Igd2l0aCBoYXJkY29kZWQgY29uc3RhbnQgc3RyaW5ncyBvbmx5LiBObyB1c2VyIGlucHV0IGVudGVycyB0aGlzIGNvbXBvbmVudC4gQWxsIG1ldHJpYyBuYW1lcywgc291cmNlcywgYW5kIGRlc2NyaXB0aW9ucyBhcmUgY29tcGlsZS10aW1lIGNvbnN0YW50cy4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3dlYi9wdWJsaWMvbWV0cmljcy5qcycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IENsaWVudC1zaWRlIGJyb3dzZXIgSmF2YVNjcmlwdC4gVW5pY29kZVZhbGlkYXRvciBpcyBhIE5vZGUuanMgbW9kdWxlIHVuYXZhaWxhYmxlIGluIGJyb3dzZXIgY29udGV4dC4gRGFzaGJvYXJkIHJlbmRlcnMgc2VydmVyLWdlbmVyYXRlZCBtZXRyaWMgZGF0YSBvbmx5IOKAlCBubyB1c2VyIHRleHQgaW5wdXQuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy93ZWIvcHVibGljL2xvZ3MuanMnLFxuICAgIHJlYXNvbjogJ0ZBTFNFIFBPU0lUSVZFOiBDbGllbnQtc2lkZSBicm93c2VyIEphdmFTY3JpcHQuIEZpbHRlciBpbnB1dHMgYXJlIHVzZWQgZm9yIGxvY2FsIEpTIGFycmF5IGZpbHRlcmluZyBvbmx5IOKAlCBuZXZlciBzZW50IHRvIHNlcnZlci4gVW5pY29kZVZhbGlkYXRvciBpcyBhIE5vZGUuanMgbW9kdWxlIHVuYXZhaWxhYmxlIGluIGJyb3dzZXIgY29udGV4dC4nXG4gIH0sXG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBUZXN0IEZpbGUgU3VwcHJlc3Npb25zXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAge1xuICAgIHJ1bGU6ICcqJyxcbiAgICBmaWxlOiAnX190ZXN0c19fLyoqLyonLFxuICAgIHJlYXNvbjogJ1Rlc3QgZmlsZXMgbWF5IGNvbnRhaW4gaW50ZW50aW9uYWwgc2VjdXJpdHkgcGF0dGVybnMgZm9yIHRlc3RpbmcnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnKicsXG4gICAgZmlsZTogJyoqLyoudGVzdC50cycsXG4gICAgcmVhc29uOiAnVGVzdCBmaWxlcyBtYXkgY29udGFpbiBpbnRlbnRpb25hbCBzZWN1cml0eSBwYXR0ZXJucyBmb3IgdGVzdGluZydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICcqJyxcbiAgICBmaWxlOiAnKiovKi5zcGVjLnRzJyxcbiAgICByZWFzb246ICdUZXN0IGZpbGVzIG1heSBjb250YWluIGludGVudGlvbmFsIHNlY3VyaXR5IHBhdHRlcm5zIGZvciB0ZXN0aW5nJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3Rlc3RzLyoqLyonLFxuICAgIHJlYXNvbjogJ1Rlc3QgdXRpbGl0aWVzIGFuZCBFMkUgdGVzdHMgZG8gbm90IHByb2Nlc3MgdW50cnVzdGVkIHVzZXIgaW5wdXQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAndGVzdHMvKiovKicsXG4gICAgcmVhc29uOiAnQXVkaXQgbG9nZ2luZyBub3QgcmVxdWlyZWQgZm9yIHRlc3QgdXRpbGl0aWVzIGFuZCBFMkUgdGVzdHMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnT1dBU1AtQTAzLTAwMycsXG4gICAgZmlsZTogJ3Rlc3RzL2UyZS9jbGVhbnVwLXRlc3QtZGF0YS50cycsXG4gICAgcmVhc29uOiAnRmFsc2UgcG9zaXRpdmUgLSBjb25zb2xlLmxvZyBtZXNzYWdlIHN0cmluZyBsaXRlcmFsLCBub3QgYSBwYXRoIG9wZXJhdGlvbidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdPV0FTUC1BMDEtMDAxJyxcbiAgICBmaWxlOiAnX190ZXN0c19fLyoqLyonLFxuICAgIHJlYXNvbjogJ1Rlc3QgZmlsZXMgdXNlIGZha2UgdG9rZW5zIGFuZCBzZWNyZXRzIGZvciB0ZXN0aW5nIHNlY3VyaXR5IGZlYXR1cmVzJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ09XQVNQLUEwMS0wMDEnLFxuICAgIGZpbGU6ICd0ZXN0cy9maXh0dXJlcy8qKi8qJyxcbiAgICByZWFzb246ICdUZXN0IGZpeHR1cmVzIGNvbnRhaW4gaW50ZW50aW9uYWwgbW9jayBjcmVkZW50aWFscyBjbGVhcmx5IG1hcmtlZCBhcyBGQUtFL1RFU1QvTk9UX1JFQUwnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnT1dBU1AtQTAxLTAwMScsXG4gICAgZmlsZTogJ3Rlc3RzL3NlY3VyaXR5L2ZyYW1ld29yay9SYXBpZFNlY3VyaXR5VGVzdGluZy50cycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IExpbmUgMjAyIGNvbnRhaW5zIGFuIGludGVudGlvbmFsIGZha2UgdG9rZW4gKGdocF8xMjM0NTY3ODkwLi4uKSBmb3Igc2VjdXJpdHkgdGVzdGluZy4gQ2xlYXJseSBtYXJrZWQgd2l0aCBOT1NPTkFSIGNvbW1lbnQuIFVzZWQgdG8gdmVyaWZ5IHRva2VucyBhcmUgbm90IGV4cG9zZWQgaW4gZXJyb3IgbWVzc2FnZXMuIFBSICMxJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJyonLFxuICAgIGZpbGU6ICd0ZXN0cy9maXh0dXJlcy90ZXN0Q3JlZGVudGlhbHMudHMnLFxuICAgIHJlYXNvbjogJ0NlbnRyYWxpemVkIHRlc3QgY3JlZGVudGlhbHMgZmlsZSB3aXRoIGludGVudGlvbmFsbHkgZmFrZSB2YWx1ZXMgZm9yIHRlc3RpbmcnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnQ1dFLTg5LTAwMScsXG4gICAgZmlsZTogJ19fdGVzdHNfXy8qKi8qJyxcbiAgICByZWFzb246ICdUZXN0IGZpbGVzIGNvbnRhaW4gU1FMIGluamVjdGlvbiBwYXR0ZXJucyBmb3Igc2VjdXJpdHkgdGVzdGluZydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdPV0FTUC1BMDMtMDAyJyxcbiAgICBmaWxlOiAnX190ZXN0c19fLyoqLyonLFxuICAgIHJlYXNvbjogJ1Rlc3QgZmlsZXMgY29udGFpbiBjb21tYW5kIGluamVjdGlvbiBwYXR0ZXJucyBmb3Igc2VjdXJpdHkgdGVzdGluZydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdPV0FTUC1BMDMtMDAzJyxcbiAgICBmaWxlOiAnX190ZXN0c19fLyoqLyonLFxuICAgIHJlYXNvbjogJ1Rlc3QgZmlsZXMgY29udGFpbiBwYXRoIHRyYXZlcnNhbCBwYXR0ZXJucyBmb3Igc2VjdXJpdHkgdGVzdGluZydcbiAgfSxcbiAgXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gWUFNTCBQYXJzaW5nIEZhbHNlIFBvc2l0aXZlc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA1JyxcbiAgICBmaWxlOiAnc3JjL3NlY3VyaXR5L3lhbWxWYWxpZGF0b3IudHMnLFxuICAgIHJlYXNvbjogJ1lhbWxWYWxpZGF0b3IgaXMgdGhlIHNlY3VyaXR5IHZhbGlkYXRpb24gbGF5ZXIgaXRzZWxmIC0gaXQgbmVlZHMgZGlyZWN0IHlhbWwubG9hZCBhY2Nlc3MnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA1JyxcbiAgICBmaWxlOiAnc3JjL3NlY3VyaXR5L3NlY3VyZVlhbWxQYXJzZXIudHMnLFxuICAgIHJlYXNvbjogJ1NlY3VyZVlhbWxQYXJzZXIgaXMgdGhlIHNlY3VyaXR5IHdyYXBwZXIgdGhhdCB2YWxpZGF0ZXMgWUFNTCBiZWZvcmUgcGFyc2luZydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDUnLFxuICAgIGZpbGU6ICdzcmMvZWxlbWVudHMvc2tpbGxzL1NraWxsTWFuYWdlci50cycsXG4gICAgcmVhc29uOiAnVXNlcyB5YW1sLmxvYWQgd2l0aCBGQUlMU0FGRV9TQ0hFTUEgYW5kIHNpemUgdmFsaWRhdGlvbiAtIGVxdWl2YWxlbnQgc2VjdXJpdHkgdG8gU2VjdXJlWWFtbFBhcnNlciBmb3IgcmF3IFlBTUwgaW1wb3J0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNScsXG4gICAgZmlsZTogJ3NyYy90b29scy9wb3J0Zm9saW8vc3VibWl0VG9Qb3J0Zm9saW9Ub29sLnRzJyxcbiAgICByZWFzb246ICdGYWxzZSBwb3NpdGl2ZSAtIFVzZXMgU2VjdXJlWWFtbFBhcnNlci5wYXJzZSgpIHdoaWNoIGlzIHRoZSBzZWN1cmUgaW1wbGVtZW50YXRpb24gZGVzaWduZWQgdG8gcHJldmVudCBZQU1MIHZ1bG5lcmFiaWxpdGllcydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDUnLFxuICAgIGZpbGU6ICdzcmMvY29uZmlnL0NvbmZpZ01hbmFnZXIudHMnLFxuICAgIHJlYXNvbjogJ0lOVEVOVElPTkFMOiBVc2VzIGpzLXlhbWwgd2l0aCBGQUlMU0FGRV9TQ0hFTUEgZm9yIHB1cmUgWUFNTCBjb25maWcgZmlsZXMuIFRoaXMgcHJldmVudHMgY29kZSBleGVjdXRpb24gYW5kIGlzIHRoZSBhcHByb3ByaWF0ZSBzZWN1cml0eSBtZWFzdXJlIGZvciBjb25maWcgZmlsZXMgdGhhdCBhcmUgTk9UIG1hcmtkb3duIHdpdGggZnJvbnRtYXR0ZXIuIFJlZ3Jlc3Npb24gdGVzdCBlbnN1cmVzIHdlIGRvIG5vdCB1c2UgU2VjdXJlWWFtbFBhcnNlciBoZXJlIHdoaWNoIHdvdWxkIHJlc2V0IGNvbmZpZyB2YWx1ZXMuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNScsXG4gICAgZmlsZTogJ3NyYy9wb3J0Zm9saW8vUG9ydGZvbGlvSW5kZXhNYW5hZ2VyLnRzJyxcbiAgICByZWFzb246ICdJTlRFTlRJT05BTDogTWVtb3J5IGZpbGVzIGFyZSBwdXJlIFlBTUwgKG5vdCBNYXJrZG93biB3aXRoIGZyb250bWF0dGVyKSwgc28gU2VjdXJlWWFtbFBhcnNlciBjYW5ub3QgYmUgdXNlZC4gVXNlcyB5YW1sLmxvYWQgd2l0aCBGQUlMU0FGRV9TQ0hFTUEgKyBzaXplIHZhbGlkYXRpb24gKyB0eXBlIGNoZWNraW5nIGZvciBzZWN1cml0eS4gVGhlc2UgYXJlIHRydXN0ZWQgbG9jYWwgdXNlciBmaWxlcy4gRml4IGZvciBpc3N1ZSAjMTE5Ni4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA1JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZlci9yZXNvdXJjZXMvQ2FwYWJpbGl0eUluZGV4UmVzb3VyY2UudHMnLFxuICAgIHJlYXNvbjogJ0lOVEVOVElPTkFMOiBjYXBhYmlsaXR5LWluZGV4LnlhbWwgaXMgYSBwdXJlIFlBTUwgZmlsZSAobm90IE1hcmtkb3duIHdpdGggZnJvbnRtYXR0ZXIpLCBzbyBTZWN1cmVZYW1sUGFyc2VyIGNhbm5vdCBiZSB1c2VkLiBVc2VzIHlhbWwubG9hZCB3aXRoIEZBSUxTQUZFX1NDSEVNQSB3aGljaCBwcmV2ZW50cyBjb2RlIGV4ZWN1dGlvbi4gVGhpcyBpcyBhIHRydXN0ZWQgbG9jYWwgc3lzdGVtLWdlbmVyYXRlZCBmaWxlIChjcmVhdGVkIGJ5IEVuaGFuY2VkSW5kZXhNYW5hZ2VyKS4gU2FtZSBzZWN1cml0eSBwYXR0ZXJuIGFzIENvbmZpZ01hbmFnZXIgYW5kIFBvcnRmb2xpb0luZGV4TWFuYWdlciBmb3IgcHVyZSBZQU1MIGZpbGVzLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDUnLFxuICAgIGZpbGU6ICdzcmMvY29udmVydGVycy9Eb2xsaG91c2VUb0FudGhyb3BpY0NvbnZlcnRlci50cycsXG4gICAgcmVhc29uOiAnSU5URU5USU9OQUw6IEZvcm1hdCB0cmFuc2Zvcm1lciwgbm90IHNlY3VyaXR5IGJvdW5kYXJ5LiBVc2VzIHlhbWwubG9hZCB3aXRoIENPUkVfU0NIRU1BIHRvIHByZXZlbnQgZGVzZXJpYWxpemF0aW9uIGF0dGFja3MuIENhbm5vdCB1c2UgU2VjdXJlWWFtbFBhcnNlciAoZXhwZWN0cyBmdWxsIE1hcmtkb3duIHdpdGggZnJvbnRtYXR0ZXIsIG5vdCBleHRyYWN0ZWQgWUFNTCBzdHJpbmdzKS4gUHJlc2VydmVzIGNvbnRlbnQgZmlkZWxpdHkgLSBubyBtb2RpZmljYXRpb24uIElucHV0IHNraWxscyBhbHJlYWR5IHZhbGlkYXRlZCAoZnJvbSBEb2xsaG91c2VNQ1Agc3lzdGVtKS4gUFIgIzE0MDAnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA1JyxcbiAgICBmaWxlOiAnc3JjL2NvbnZlcnRlcnMvQW50aHJvcGljVG9Eb2xsaG91c2VDb252ZXJ0ZXIudHMnLFxuICAgIHJlYXNvbjogJ0lOVEVOVElPTkFMOiBGb3JtYXQgdHJhbnNmb3JtZXIsIG5vdCBzZWN1cml0eSBib3VuZGFyeS4gVXNlcyB5YW1sLmxvYWQgd2l0aCBDT1JFX1NDSEVNQSB0byBwcmV2ZW50IGRlc2VyaWFsaXphdGlvbiBhdHRhY2tzLiBDYW5ub3QgdXNlIFNlY3VyZVlhbWxQYXJzZXIgKHByb2Nlc3NlcyBleHRyYWN0ZWQgWUFNTCBzdHJpbmdzKS4gUHJlc2VydmVzIGNvbnRlbnQgZmlkZWxpdHkgLSBubyBtb2RpZmljYXRpb24uIE91dHB1dCB2YWxpZGF0ZWQgd2hlbiBsb2FkZWQgdmlhIFNraWxsTWFuYWdlci5sb2FkKCkgd2hpY2ggYXBwbGllcyBTZWN1cmVZYW1sUGFyc2VyLiBQUiAjMTQwMCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDUnLFxuICAgIGZpbGU6ICdzcmMvc2VjdXJpdHkvYXVkaXQvc2Nhbm5lcnMvQ29uZmlndXJhdGlvblNjYW5uZXIudHMnLFxuICAgIHJlYXNvbjogJ0lOVEVOVElPTkFMOiBTZWN1cml0eSBzY2FubmVyIGZvciBwdXJlIFlBTUwgY29uZmlndXJhdGlvbiBmaWxlcyAobm90IE1hcmtkb3duIHdpdGggZnJvbnRtYXR0ZXIpLiBVc2VzIHlhbWwubG9hZCB3aXRoIEZBSUxTQUZFX1NDSEVNQSB3aGljaCBwcmV2ZW50cyBjb2RlIGV4ZWN1dGlvbiBhbmQgYXJiaXRyYXJ5IG9iamVjdCBpbnN0YW50aWF0aW9uLiBTZWN1cmVZYW1sUGFyc2VyIGlzIGRlc2lnbmVkIGZvciBlbGVtZW50IGZpbGVzIChNYXJrZG93biB3aXRoIFlBTUwgZnJvbnRtYXR0ZXIpLCBub3QgcmF3IGNvbmZpZyBmaWxlcy4gUFIgIzEnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA1JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZpY2VzL1NlcmlhbGl6YXRpb25TZXJ2aWNlLnRzJyxcbiAgICByZWFzb246ICdGQUxTRSBQT1NJVElWRTogVXNlcyBzYWZlIFlBTUwgc2NoZW1hIChGQUlMU0FGRV9TQ0hFTUEgb3IgSlNPTl9TQ0hFTUEpIHNlbGVjdGVkIGJ5IGdldFlhbWxTY2hlbWEoKS4gU2VjdXJlWWFtbFBhcnNlciBpcyBkZXNpZ25lZCBmb3IgTWFya2Rvd24gZmlsZXMgd2l0aCBmcm9udG1hdHRlciwgbm90IHB1cmUgWUFNTCBwYXJzaW5nLiBMaW5lcyAzMDcgYW5kIDgxMiB1c2Ugc2FmZSBzY2hlbWFzIHRoYXQgcHJldmVudCBjb2RlIGV4ZWN1dGlvbi4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA1JyxcbiAgICBmaWxlOiAnc3JjL2hhbmRsZXJzL21jcC1hcWwvTUNQQVFMSGFuZGxlci50cycsXG4gICAgcmVhc29uOiAnSU5URU5USU9OQUw6IEltcG9ydCBvcGVyYXRpb24gcGFyc2VzIHB1cmUgWUFNTCBkYXRhIGZyb20gZXhwb3J0IHBhY2thZ2VzIChub3QgTWFya2Rvd24gd2l0aCBmcm9udG1hdHRlcikuIFVzZXMgeWFtbC5sb2FkIHdpdGggSlNPTl9TQ0hFTUEgd2hpY2ggcHJldmVudHMgY29kZSBleGVjdXRpb24gYW5kIGlzIGFwcHJvcHJpYXRlIGZvciBzdHJ1Y3R1cmVkIGVsZW1lbnQgZGF0YS4gU2VjdXJlWWFtbFBhcnNlciBjYW5ub3QgYmUgdXNlZCBhcyBpdCBleHBlY3RzIE1hcmtkb3duIGZyb250bWF0dGVyIGZvcm1hdC4gUFIgIzE5MydcbiAgfSxcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFNlcnZpY2UgTGF5ZXIgRmFsc2UgUG9zaXRpdmVzIChSZWZhY3RvciBQUilcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9zZXJ2aWNlcy9TZXJpYWxpemF0aW9uU2VydmljZS50cycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IFNlcmlhbGl6YXRpb25TZXJ2aWNlIGhhbmRsZXMgZGF0YSBzZXJpYWxpemF0aW9uL2Rlc2VyaWFsaXphdGlvbi4gVW5pY29kZSBub3JtYWxpemF0aW9uIGlzIGFwcGxpZWQgYXQgdGhlIHZhbGlkYXRpb24gbGF5ZXIgKFZhbGlkYXRpb25TZXJ2aWNlLnZhbGlkYXRlQW5kU2FuaXRpemVJbnB1dCBjYWxscyBVbmljb2RlVmFsaWRhdG9yLm5vcm1hbGl6ZSkgYmVmb3JlIGRhdGEgcmVhY2hlcyBzZXJpYWxpemF0aW9uLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvc2VydmljZXMvRmlsZU9wZXJhdGlvbnNTZXJ2aWNlLnRzJyxcbiAgICByZWFzb246ICdGQUxTRSBQT1NJVElWRTogRmlsZU9wZXJhdGlvbnNTZXJ2aWNlIGhhbmRsZXMgZmlsZSBJL08gb3BlcmF0aW9ucy4gUGF0aHMgYXJlIHZhbGlkYXRlZCBieSBQYXRoVmFsaWRhdG9yLiBDb250ZW50IHZhbGlkYXRpb24gaW5jbHVkaW5nIFVuaWNvZGUgbm9ybWFsaXphdGlvbiBoYXBwZW5zIGF0IHRoZSBlbGVtZW50IG1hbmFnZXIgbGF5ZXIgYmVmb3JlIGZpbGUgb3BlcmF0aW9ucy4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZpY2VzL3ZhbGlkYXRpb24vRWxlbWVudFZhbGlkYXRvci50cycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IEludGVyZmFjZS90eXBlIGRlZmluaXRpb24gZmlsZSBvbmx5LiBDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbnMgdXNlIFZhbGlkYXRpb25TZXJ2aWNlIHdoaWNoIHBlcmZvcm1zIFVuaWNvZGUgbm9ybWFsaXphdGlvbiB2aWEgVW5pY29kZVZhbGlkYXRvci5ub3JtYWxpemUoKS4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZpY2VzL3ZhbGlkYXRpb24vR2VuZXJpY0VsZW1lbnRWYWxpZGF0b3IudHMnLFxuICAgIHJlYXNvbjogJ0ZBTFNFIFBPU0lUSVZFOiBDYWxscyBJbnB1dE5vcm1hbGl6ZXIubm9ybWFsaXplKCkgYXQgdGhlIHZhbGlkYXRpb24gYm91bmRhcnkgKGxpbmUgNjQpIHdoaWNoIHJlY3Vyc2l2ZWx5IG5vcm1hbGl6ZXMgYWxsIHN0cmluZ3MgdmlhIFVuaWNvZGVWYWxpZGF0b3Iubm9ybWFsaXplKCkuIFRoaXMgaXMgdGhlIGNlbnRyYWxpemVkIG5vcm1hbGl6YXRpb24gcG9pbnQgZm9yIGFsbCBlbGVtZW50IHZhbGlkYXRvcnMuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9zZXJ2aWNlcy92YWxpZGF0aW9uL1BlcnNvbmFFbGVtZW50VmFsaWRhdG9yLnRzJyxcbiAgICByZWFzb246ICdGQUxTRSBQT1NJVElWRTogRXh0ZW5kcyBHZW5lcmljRWxlbWVudFZhbGlkYXRvciB3aGljaCBub3JtYWxpemVzIGFsbCBpbnB1dCB2aWEgSW5wdXROb3JtYWxpemVyLm5vcm1hbGl6ZSgpIGF0IHRoZSBib3VuZGFyeS4gQ3VzdG9tIGZpZWxkcyBhZGRpdGlvbmFsbHkgbm9ybWFsaXplZCBieSBWYWxpZGF0aW9uU2VydmljZS52YWxpZGF0ZUFuZFNhbml0aXplSW5wdXQoKS4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZpY2VzL3ZhbGlkYXRpb24vTWVtb3J5RWxlbWVudFZhbGlkYXRvci50cycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IEV4dGVuZHMgR2VuZXJpY0VsZW1lbnRWYWxpZGF0b3Igd2hpY2ggbm9ybWFsaXplcyBhbGwgaW5wdXQgdmlhIElucHV0Tm9ybWFsaXplci5ub3JtYWxpemUoKSBhdCB0aGUgYm91bmRhcnkuIEN1c3RvbSBmaWVsZHMgYWRkaXRpb25hbGx5IG5vcm1hbGl6ZWQgYnkgVmFsaWRhdGlvblNlcnZpY2UudmFsaWRhdGVBbmRTYW5pdGl6ZUlucHV0KCkuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9zZXJ2aWNlcy92YWxpZGF0aW9uL1RlbXBsYXRlRWxlbWVudFZhbGlkYXRvci50cycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IEV4dGVuZHMgR2VuZXJpY0VsZW1lbnRWYWxpZGF0b3Igd2hpY2ggbm9ybWFsaXplcyBhbGwgaW5wdXQgdmlhIElucHV0Tm9ybWFsaXplci5ub3JtYWxpemUoKSBhdCB0aGUgYm91bmRhcnkuIEN1c3RvbSBmaWVsZHMgYWRkaXRpb25hbGx5IG5vcm1hbGl6ZWQgYnkgVmFsaWRhdGlvblNlcnZpY2UudmFsaWRhdGVBbmRTYW5pdGl6ZUlucHV0KCkuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9zZXJ2aWNlcy92YWxpZGF0aW9uL0Vuc2VtYmxlRWxlbWVudFZhbGlkYXRvci50cycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IEV4dGVuZHMgR2VuZXJpY0VsZW1lbnRWYWxpZGF0b3Igd2hpY2ggbm9ybWFsaXplcyBhbGwgaW5wdXQgdmlhIElucHV0Tm9ybWFsaXplci5ub3JtYWxpemUoKSBhdCB0aGUgYm91bmRhcnkuIEN1c3RvbSBmaWVsZHMgYWRkaXRpb25hbGx5IG5vcm1hbGl6ZWQgYnkgVmFsaWRhdGlvblNlcnZpY2UudmFsaWRhdGVBbmRTYW5pdGl6ZUlucHV0KCkuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9zZXJ2aWNlcy92YWxpZGF0aW9uL1NraWxsRWxlbWVudFZhbGlkYXRvci50cycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IEV4dGVuZHMgR2VuZXJpY0VsZW1lbnRWYWxpZGF0b3Igd2hpY2ggbm9ybWFsaXplcyBhbGwgaW5wdXQgdmlhIElucHV0Tm9ybWFsaXplci5ub3JtYWxpemUoKSBhdCB0aGUgYm91bmRhcnkuIHZhbGlkYXRlTWV0YWRhdGEoKSByZWNlaXZlcyBwcmUtbm9ybWFsaXplZCBlbGVtZW50Lm1ldGFkYXRhIGZyb20gU2tpbGwgY29uc3RydWN0b3IgKFVuaWNvZGVWYWxpZGF0b3Iubm9ybWFsaXplICsgc2FuaXRpemVJbnB1dCkuIFBSICM0NTcnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZpY2VzL3ZhbGlkYXRpb24vQWdlbnRFbGVtZW50VmFsaWRhdG9yLnRzJyxcbiAgICByZWFzb246ICdGQUxTRSBQT1NJVElWRTogRXh0ZW5kcyBHZW5lcmljRWxlbWVudFZhbGlkYXRvciB3aGljaCBub3JtYWxpemVzIGFsbCBpbnB1dCB2aWEgSW5wdXROb3JtYWxpemVyLm5vcm1hbGl6ZSgpIGF0IHRoZSBib3VuZGFyeS4gQWdlbnQtc3BlY2lmaWMgZmllbGRzIChnb2FsLCBzeXN0ZW1Qcm9tcHQsIGFjdGl2YXRlcywgdG9vbHMsIGF1dG9ub215KSBhZGRpdGlvbmFsbHkgbm9ybWFsaXplZCBieSBWYWxpZGF0aW9uU2VydmljZS52YWxpZGF0ZUNvbnRlbnQoKS4gUFIgIzEzNCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvY29udmVydGVycy9Eb2xsaG91c2VUb0FudGhyb3BpY0NvbnZlcnRlci50cycsXG4gICAgcmVhc29uOiAnSU5URU5USU9OQUw6IEZvcm1hdCB0cmFuc2Zvcm1lciwgbm90IHNlY3VyaXR5IGJvdW5kYXJ5LiBQcmVzZXJ2ZXMgY29udGVudCBmaWRlbGl0eSB3aXRob3V0IFVuaWNvZGUgbm9ybWFsaXphdGlvbi4gSW5wdXQgc2tpbGxzIGFscmVhZHkgdmFsaWRhdGVkIChmcm9tIERvbGxob3VzZU1DUCBzeXN0ZW0pLiBPbmUtdG8tb25lIG1lY2hhbmljYWwgdHJhbnNmb3JtYXRpb24gLSBubyBjb250ZW50IG1vZGlmaWNhdGlvbi4gU2VjdXJpdHkgYm91bmRhcnkgaXMgU2tpbGxNYW5hZ2VyLmxvYWQoKSwgbm90IGNvbnZlcnRlcnMuIFBSICMxNDAwJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9jb252ZXJ0ZXJzL0FudGhyb3BpY1RvRG9sbGhvdXNlQ29udmVydGVyLnRzJyxcbiAgICByZWFzb246ICdJTlRFTlRJT05BTDogRm9ybWF0IHRyYW5zZm9ybWVyLCBub3Qgc2VjdXJpdHkgYm91bmRhcnkuIFByZXNlcnZlcyBjb250ZW50IGZpZGVsaXR5IHdpdGhvdXQgVW5pY29kZSBub3JtYWxpemF0aW9uLiBPdXRwdXQgdmFsaWRhdGVkIHdoZW4gbG9hZGVkIHZpYSBTa2lsbE1hbmFnZXIubG9hZCgpIHdoaWNoIGFwcGxpZXMgZnVsbCBzZWN1cml0eSB2YWxpZGF0aW9uIChTZWN1cmVZYW1sUGFyc2VyICsgVW5pY29kZVZhbGlkYXRvcikuIE9uZS10by1vbmUgbWVjaGFuaWNhbCB0cmFuc2Zvcm1hdGlvbi4gUFIgIzE0MDAnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL2NvbnZlcnRlcnMvQ29udGVudEV4dHJhY3Rvci50cycsXG4gICAgcmVhc29uOiAnSU5URU5USU9OQUw6IEZvcm1hdCBhbmFseXNpcyB0b29sIGZvciBjb252ZXJ0ZXJzLCBub3Qgc2VjdXJpdHkgYm91bmRhcnkuIFByZXNlcnZlcyBjb250ZW50IGZpZGVsaXR5IHdpdGhvdXQgbW9kaWZpY2F0aW9uLiBVc2VkIGJ5IGZvcm1hdCB0cmFuc2Zvcm1lcnMgd2hpY2ggcHJlc2VydmUgb25lLXRvLW9uZSBjb3JyZXNwb25kZW5jZS4gTm8gdXNlciBpbnB1dCBwcm9jZXNzaW5nIC0gaW50ZXJuYWwgdXRpbGl0eSBmb3IgbWVjaGFuaWNhbCBjb252ZXJzaW9uLiBQUiAjMTQwMCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvY29udmVydGVycy9Eb2xsaG91c2VUb0FudGhyb3BpY0NvbnZlcnRlci50cycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IENvbnZlcnRlcnMgYXJlIGZvcm1hdCB0cmFuc2Zvcm1lcnMsIG5vdCBzZWN1cml0eSBvcGVyYXRpb25zLiBBdWRpdCBsb2dnaW5nIGhhcHBlbnMgYXQgQ0xJIGxldmVsIChjbGkvY29udmVydC50cyBsaW5lIDI1MSkgd2hlcmUgY29udmVyc2lvbiBvcGVyYXRpb25zIGFyZSBsb2dnZWQuIENvbnZlcnRlcnMgYXJlIGludGVybmFsIHV0aWxpdGllcywgbm90IHVzZXItZmFjaW5nIHNlY3VyaXR5IGJvdW5kYXJpZXMuIFBSICMxNDAwJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3NyYy9jb252ZXJ0ZXJzL0FudGhyb3BpY1RvRG9sbGhvdXNlQ29udmVydGVyLnRzJyxcbiAgICByZWFzb246ICdGQUxTRSBQT1NJVElWRTogQ29udmVydGVycyBhcmUgZm9ybWF0IHRyYW5zZm9ybWVycywgbm90IHNlY3VyaXR5IG9wZXJhdGlvbnMuIEF1ZGl0IGxvZ2dpbmcgaGFwcGVucyBhdCBDTEkgbGV2ZWwgKGNsaS9jb252ZXJ0LnRzIGxpbmUgMjUxKSB3aGVyZSBjb252ZXJzaW9uIG9wZXJhdGlvbnMgYXJlIGxvZ2dlZC4gQ29udmVydGVycyBhcmUgaW50ZXJuYWwgdXRpbGl0aWVzLCBub3QgdXNlci1mYWNpbmcgc2VjdXJpdHkgYm91bmRhcmllcy4gUFIgIzE0MDAnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZlci9yZXNvdXJjZXMvQ2FwYWJpbGl0eUluZGV4UmVzb3VyY2UudHMnLFxuICAgIHJlYXNvbjogJ0ZBTFNFIFBPU0lUSVZFOiBGaWxlIHBhdGggaXMgY29uc3RydWN0ZWQgZnJvbSBvcy5ob21lZGlyKCkgKHN5c3RlbS1wcm92aWRlZCkgd2l0aCBoYXJkY29kZWQgcGF0aCBzZWdtZW50cy4gTm8gdXNlciBpbnB1dCBmbG93cyB0aHJvdWdoIHRoaXMgY29kZS4gVGhlIGNhcGFiaWxpdHktaW5kZXgueWFtbCBmaWxlIGlzIHN5c3RlbS1nZW5lcmF0ZWQgYnkgRW5oYW5jZWRJbmRleE1hbmFnZXIsIG5vdCB1c2VyLXByb3ZpZGVkLidcbiAgfSxcbiAgXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gQ2xlYXItdGV4dCBMb2dnaW5nIEZhbHNlIFBvc2l0aXZlc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDEwJyxcbiAgICBmaWxlOiAnc3JjL3V0aWxzL2xvZ2dlci50cycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IFRoZSBsb2dnZXIgYWxyZWFkeSBzYW5pdGl6ZXMgYWxsIHNlbnNpdGl2ZSBkYXRhIHRocm91Z2ggc2FuaXRpemVNZXNzYWdlKCkgYW5kIHNhbml0aXplT2JqZWN0KCkgbWV0aG9kcy4gQWxsIHNlbnNpdGl2ZSBmaWVsZHMgKHRva2Vucywga2V5cywgcGFzc3dvcmRzLCBldGMuKSBhcmUgcmVwbGFjZWQgd2l0aCBbUkVEQUNURURdIGJlZm9yZSBhbnkgY29uc29sZSBvdXRwdXQuIExpbmVzIDI4OCwgMjkxLCBhbmQgMjk1IG9ubHkgbG9nIHByZS1zYW5pdGl6ZWQgc2FmZSBtZXNzYWdlcy4nXG4gIH0sXG4gIFxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFNlY3VyaXR5IFJ1bGUgRGVmaW5pdGlvbiBGaWxlc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIHtcbiAgICBydWxlOiAnT1dBU1AtQTAzLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9zZWN1cml0eS9hdWRpdC9ydWxlcy9TZWN1cml0eVJ1bGVzLnRzJyxcbiAgICByZWFzb246ICdUaGlzIGlzIGEgcmVnZXggcGF0dGVybiBkZWZpbml0aW9uIGZvciBkZXRlY3RpbmcgaW5uZXJIVE1MIHVzYWdlLCBub3QgYWN0dWFsIHVzYWdlJ1xuICB9LFxuICBcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBQZXJzb25hIExvYWRpbmcgRmFsc2UgUG9zaXRpdmVzXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDEnLFxuICAgIGZpbGU6ICdzcmMvcGVyc29uYS9QZXJzb25hTG9hZGVyLnRzJyxcbiAgICByZWFzb246ICdQZXJzb25hTG9hZGVyIHZhbGlkYXRlcyBwZXJzb25hcyB0aHJvdWdoIFNlY3VyZVlhbWxQYXJzZXIgYW5kIENvbnRlbnRWYWxpZGF0b3InXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDAxJyxcbiAgICBmaWxlOiAnc3JjL3BlcnNvbmEvUGVyc29uYU1hbmFnZXIudHMnLFxuICAgIHJlYXNvbjogJ0ZBTFNFIFBPU0lUSVZFOiBQZXJzb25hTWFuYWdlciB2YWxpZGF0ZXMgYWxsIGxvYWRlZCBwZXJzb25hcyB1c2luZyBQZXJzb25hVmFsaWRhdG9yLnZhbGlkYXRlUGVyc29uYSgpIGltbWVkaWF0ZWx5IGFmdGVyIGxvYWRpbmcgYXQgbGluZSAzMjUuIEludmFsaWQgcGVyc29uYXMgYXJlIHJlamVjdGVkIGFuZCByZW1vdmVkIGZyb20gY2FjaGUuIFBSICMxJ1xuICB9LFxuICBcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBVbmljb2RlIE5vcm1hbGl6YXRpb24gRmFsc2UgUG9zaXRpdmVzXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvdHlwZXMvKi50cycsXG4gICAgcmVhc29uOiAnVHlwZSBkZWZpbml0aW9uIGZpbGVzIGRvIG5vdCBwcm9jZXNzIHVzZXIgaW5wdXQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3RlbGVtZXRyeS90eXBlcy50cycsXG4gICAgcmVhc29uOiAnVGVsZW1ldHJ5IHR5cGUgZGVmaW5pdGlvbiBmaWxlIC0gY29udGFpbnMgb25seSBUeXBlU2NyaXB0IGludGVyZmFjZXMsIG5vIHJ1bnRpbWUgY29kZSBvciB1c2VyIGlucHV0IHByb2Nlc3NpbmcnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnKiovdGVsZW1ldHJ5L3R5cGVzLnRzJyxcbiAgICByZWFzb246ICdUZWxlbWV0cnkgdHlwZSBkZWZpbml0aW9uIGZpbGUgLSBDSSBwYXRoIHZhcmlhbnQsIGNvbnRhaW5zIG9ubHkgVHlwZVNjcmlwdCBpbnRlcmZhY2VzJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy90eXBlcy9lbGVtZW50cy8qLnRzJyxcbiAgICByZWFzb246ICdFbGVtZW50IGludGVyZmFjZSBmaWxlcyBhcmUgdHlwZSBkZWZpbml0aW9ucyB0aGF0IGRvIG5vdCBwcm9jZXNzIHVzZXIgaW5wdXQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL2Vycm9ycy8qLnRzJyxcbiAgICByZWFzb246ICdFcnJvciBjbGFzc2VzIGRvIG5vdCBwcm9jZXNzIHVzZXIgaW5wdXQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL2NvbmZpZy8qLnRzJyxcbiAgICByZWFzb246ICdDb25maWd1cmF0aW9uIGZpbGVzIGRvIG5vdCBwcm9jZXNzIHVzZXIgaW5wdXQgZGlyZWN0bHknXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL2NvbnN0YW50cy8qLnRzJyxcbiAgICByZWFzb246ICdDb25zdGFudCBkZWZpbml0aW9uIGZpbGVzIGRvIG5vdCBwcm9jZXNzIHVzZXIgaW5wdXQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL2VsZW1lbnRzL21lbW9yaWVzL2NvbnN0YW50cy50cycsXG4gICAgcmVhc29uOiAnQ29uc3RhbnRzIGZpbGUgLSBjb250YWlucyBvbmx5IHR5cGUgZGVmaW5pdGlvbnMgYW5kIGNvbnN0YW50cywgbm8gdXNlciBpbnB1dCBwcm9jZXNzaW5nJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJyoqL3NyYy9lbGVtZW50cy9tZW1vcmllcy9jb25zdGFudHMudHMnLFxuICAgIHJlYXNvbjogJ0NvbnN0YW50cyBmaWxlIC0gY29udGFpbnMgb25seSB0eXBlIGRlZmluaXRpb25zIGFuZCBjb25zdGFudHMsIG5vIHVzZXIgaW5wdXQgcHJvY2Vzc2luZydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICcqKi9lbGVtZW50cy9tZW1vcmllcy9jb25zdGFudHMudHMnLFxuICAgIHJlYXNvbjogJ0NvbnN0YW50cyBmaWxlIC0gQ0kgZW52aXJvbm1lbnRzIG1heSBoYXZlIGRpZmZlcmVudCBwYXRoIHN0cnVjdHVyZXMsIG5vIHVzZXIgaW5wdXQgcHJvY2Vzc2luZydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdlbGVtZW50cy9tZW1vcmllcy9jb25zdGFudHMudHMnLFxuICAgIHJlYXNvbjogJ0NvbnN0YW50cyBmaWxlIC0gaGFuZGxlcyBjYXNlIHdoZXJlIHNyYy8gcHJlZml4IGlzIHN0cmlwcGVkLCBubyB1c2VyIGlucHV0IHByb2Nlc3NpbmcnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZpY2VzL3JldGVudGlvbi90eXBlcy50cycsXG4gICAgcmVhc29uOiAnVHlwZSBkZWZpbml0aW9uIGZpbGUgZm9yIHJldGVudGlvbiBwb2xpY3kgaW50ZXJmYWNlcyAtIGNvbnRhaW5zIG9ubHkgVHlwZVNjcmlwdCBpbnRlcmZhY2VzIGFuZCB0eXBlIGRlZmluaXRpb25zLCBubyBydW50aW1lIGNvZGUgb3IgdXNlciBpbnB1dCBwcm9jZXNzaW5nLiBBY3R1YWwgVW5pY29kZSBub3JtYWxpemF0aW9uIGlzIGltcGxlbWVudGVkIGluIFJldGVudGlvblBvbGljeVNlcnZpY2UgYW5kIE1lbW9yeVJldGVudGlvblN0cmF0ZWd5LiBQUiAjNTInXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL2VsZW1lbnRzL21lbW9yaWVzL3V0aWxzLnRzJyxcbiAgICByZWFzb246ICdNZW1vcnkgdXRpbGl0aWVzIC0gYWxsIGV4dGVybmFsIGlucHV0IGlzIG5vcm1hbGl6ZWQgdmlhIFVuaWNvZGVWYWxpZGF0b3IgaW4gdGhlIGZ1bmN0aW9ucyB0aGVtc2VsdmVzJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJyoqL3NyYy9lbGVtZW50cy9tZW1vcmllcy91dGlscy50cycsXG4gICAgcmVhc29uOiAnTWVtb3J5IHV0aWxpdGllcyAtIGFsbCBleHRlcm5hbCBpbnB1dCBpcyBub3JtYWxpemVkIHZpYSBVbmljb2RlVmFsaWRhdG9yIGluIHRoZSBmdW5jdGlvbnMgdGhlbXNlbHZlcydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICcqKi9lbGVtZW50cy9tZW1vcmllcy91dGlscy50cycsXG4gICAgcmVhc29uOiAnTWVtb3J5IHV0aWxpdGllcyAtIENJIHBhdGggdmFyaWFudCwgYWxsIGV4dGVybmFsIGlucHV0IGlzIG5vcm1hbGl6ZWQgdmlhIFVuaWNvZGVWYWxpZGF0b3InXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnZWxlbWVudHMvbWVtb3JpZXMvdXRpbHMudHMnLFxuICAgIHJlYXNvbjogJ01lbW9yeSB1dGlsaXRpZXMgLSBzcmMtc3RyaXBwZWQgcGF0aCB2YXJpYW50LCBhbGwgZXh0ZXJuYWwgaW5wdXQgaXMgbm9ybWFsaXplZCB2aWEgVW5pY29kZVZhbGlkYXRvcidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICcqKi9tZW1vcmllcy8qLnRzJyxcbiAgICByZWFzb246ICdNZW1vcnkgZWxlbWVudCBmaWxlcyAtIGFsbCB1c2VyIGlucHV0IGlzIHByb3Blcmx5IG5vcm1hbGl6ZWQgaW4gTWVtb3J5LnRzIGFuZCBNZW1vcnlNYW5hZ2VyLnRzJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9lbGVtZW50cy9tZW1vcmllcy8qLnRzJyxcbiAgICByZWFzb246ICdNZW1vcnkgZWxlbWVudCBmaWxlcyAtIGFsbCB1c2VyIGlucHV0IGlzIHByb3Blcmx5IG5vcm1hbGl6ZWQgaW4gTWVtb3J5LnRzIGFuZCBNZW1vcnlNYW5hZ2VyLnRzJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy91dGlscy92ZXJzaW9uLnRzJyxcbiAgICByZWFzb246ICdWZXJzaW9uIHV0aWxpdHkgb25seSBoYW5kbGVzIGludGVybmFsIHZlcnNpb24gc3RyaW5ncywgbm90IHVzZXIgaW5wdXQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL2NhY2hlLyoudHMnLFxuICAgIHJlYXNvbjogJ0NhY2hlIGxheWVyIHJlY2VpdmVzIGFscmVhZHktbm9ybWFsaXplZCBpbnB1dCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvc2VjdXJpdHkvKiovKi50cycsXG4gICAgcmVhc29uOiAnU2VjdXJpdHkgbW9kdWxlcyBoYW5kbGUgdmFsaWRhdGlvbiBhbmQgbm9ybWFsaXphdGlvbiB0aGVtc2VsdmVzJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9pbmRleC50cycsXG4gICAgcmVhc29uOiAnTWFpbiBlbnRyeSBwb2ludCBkZWxlZ2F0ZXMgdG8gU2VydmVyU2V0dXAgd2hpY2ggbm9ybWFsaXplcyBhbGwgaW5wdXRzJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9zZXJ2ZXIvU2VydmVyU2V0dXAudHMnLFxuICAgIHJlYXNvbjogJ0NFTlRSQUxJWkVEIFVOSUNPREUgTk9STUFMSVpBVElPTjogVGhpcyBpcyB3aGVyZSBVbmljb2RlIG5vcm1hbGl6YXRpb24gaXMgaW1wbGVtZW50ZWQgZm9yIEFMTCB0b29sIGlucHV0cy4gU2VydmVyU2V0dXAubm9ybWFsaXplQXJndW1lbnRzVW5pY29kZSgpIChsaW5lcyAxMTMtMTQ2KSByZWN1cnNpdmVseSBub3JtYWxpemVzIGFsbCBzdHJpbmcgYXJndW1lbnRzIGJlZm9yZSB0aGV5IHJlYWNoIGFueSBoYW5kbGVyLiBUaGlzIGlzIHRoZSBjb3JyZWN0IGFyY2hpdGVjdHVyYWwgcGF0dGVybiAoc2luZ2xlIGVudHJ5IHBvaW50KS4gUFIgIzEnXG4gIH0sXG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBDZW50cmFsaXplZCBVbmljb2RlIE5vcm1hbGl6YXRpb24gLSBQUiAjMVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIEFsbCBoYW5kbGVycyByZWNlaXZlIHByZS1ub3JtYWxpemVkIGlucHV0IGZyb20gU2VydmVyU2V0dXAudHNcbiAgLy8gU2VydmVyU2V0dXAuc2V0dXBDYWxsVG9vbEhhbmRsZXIoKSBjYWxscyBub3JtYWxpemVBcmd1bWVudHNVbmljb2RlKClcbiAgLy8gb24gbGluZSA4OSBCRUZPUkUgZGlzcGF0Y2hpbmcgdG8gYW55IGhhbmRsZXIuIFRoaXMgcmVjdXJzaXZlbHlcbiAgLy8gbm9ybWFsaXplcyBhbGwgc3RyaW5ncyBpbiB0aGUgYXJndW1lbnRzIG9iamVjdC5cbiAgLy8gU2VlIHNyYy9zZXJ2ZXIvU2VydmVyU2V0dXAudHMgbGluZXMgMTEzLTE0NiBmb3IgaW1wbGVtZW50YXRpb24uXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICd0ZXN0LWFyY2hpdmUvKiovKicsXG4gICAgcmVhc29uOiAnQ0VOVFJBTElaRUQgTk9STUFMSVpBVElPTjogVGVzdCBhcmNoaXZlIGZpbGVzIGFyZSBhcmNoaXZlZCBleHBlcmltZW50cywgbm90IHByb2R1Y3Rpb24gY29kZS4gQWxsIHByb2R1Y3Rpb24gdXNlciBpbnB1dCBpcyBub3JtYWxpemVkIGluIFNlcnZlclNldHVwLnRzIGJlZm9yZSByZWFjaGluZyBoYW5kbGVycy4gUFIgIzEnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL2hhbmRsZXJzLyoudHMnLFxuICAgIHJlYXNvbjogJ0NFTlRSQUxJWkVEIE5PUk1BTElaQVRJT046IEFsbCBoYW5kbGVycyByZWNlaXZlIHByZS1ub3JtYWxpemVkIGlucHV0IGZyb20gU2VydmVyU2V0dXAubm9ybWFsaXplQXJndW1lbnRzVW5pY29kZSgpIChsaW5lcyA4OSwgMTEzLTE0NikuIFVuaWNvZGUgbm9ybWFsaXphdGlvbiBoYXBwZW5zIGF0IHRoZSBlbnRyeSBwb2ludCBiZWZvcmUgaGFuZGxlcnMgYXJlIGludm9rZWQuIFBSICMxJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9oYW5kbGVycy8qKi8qLnRzJyxcbiAgICByZWFzb246ICdDRU5UUkFMSVpFRCBOT1JNQUxJWkFUSU9OOiBBbGwgaGFuZGxlciBzdHJhdGVnaWVzIGFuZCBtb2R1bGVzIHJlY2VpdmUgcHJlLW5vcm1hbGl6ZWQgaW5wdXQgZnJvbSBTZXJ2ZXJTZXR1cC5ub3JtYWxpemVBcmd1bWVudHNVbmljb2RlKCkuIElucHV0IGlzIHNhbml0aXplZCBhdCB0aGUgTUNQIHJlcXVlc3QgbGF5ZXIuIFBSICMxJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9lbGVtZW50cy8qKi8qLnRzJyxcbiAgICByZWFzb246ICdDRU5UUkFMSVpFRCBOT1JNQUxJWkFUSU9OOiBFbGVtZW50IG1hbmFnZXJzIHJlY2VpdmUgcHJlLW5vcm1hbGl6ZWQgaW5wdXQgZnJvbSBoYW5kbGVycywgd2hpY2ggcmVjZWl2ZSBwcmUtbm9ybWFsaXplZCBpbnB1dCBmcm9tIFNlcnZlclNldHVwLiBEZWZlbnNlIGluIGRlcHRoIHdpdGggY2VudHJhbGl6ZWQgZW50cnkgcG9pbnQgbm9ybWFsaXphdGlvbi4gUFIgIzEnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL2RpL0NvbnRhaW5lci50cycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IERJIENvbnRhaW5lciBvbmx5IHdpcmVzIGRlcGVuZGVuY2llcywgZG9lcyBub3QgcHJvY2VzcyB1c2VyIGlucHV0LiBBbGwgdXNlciBpbnB1dCBpcyBub3JtYWxpemVkIGluIFNlcnZlclNldHVwIGJlZm9yZSByZWFjaGluZyBhbnkgaW5qZWN0ZWQgc2VydmljZS4gUFIgIzEnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL2NvbGxlY3Rpb24vKi50cycsXG4gICAgcmVhc29uOiAnTWFya2V0cGxhY2UgbW9kdWxlcyByZWNlaXZlIG5vcm1hbGl6ZWQgaW5wdXQgZnJvbSB0b29sIGhhbmRsZXJzJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9jb2xsZWN0aW9uLyoqLyoudHMnLFxuICAgIHJlYXNvbjogJ01hcmtldHBsYWNlIG1vZHVsZXMgcmVjZWl2ZSBub3JtYWxpemVkIGlucHV0IGZyb20gdG9vbCBoYW5kbGVycydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvcGVyc29uYS8qLnRzJyxcbiAgICByZWFzb246ICdQZXJzb25hIG1vZHVsZXMgcmVjZWl2ZSBub3JtYWxpemVkIGlucHV0IGZyb20gdG9vbCBoYW5kbGVycydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvcGVyc29uYS8qKi8qLnRzJyxcbiAgICByZWFzb246ICdQZXJzb25hIG1vZHVsZXMgcmVjZWl2ZSBub3JtYWxpemVkIGlucHV0IGZyb20gdG9vbCBoYW5kbGVycydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvdXBkYXRlLyoudHMnLFxuICAgIHJlYXNvbjogJ1VwZGF0ZSBtb2R1bGVzIHJlY2VpdmUgbm9ybWFsaXplZCBpbnB1dCBmcm9tIHRvb2wgaGFuZGxlcnMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3Rvb2xzLyoudHMnLFxuICAgIHJlYXNvbjogJ1Rvb2wgZmlsZXMgcmVjZWl2ZSBub3JtYWxpemVkIGlucHV0IGZyb20gU2VydmVyU2V0dXAnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZlci90eXBlcy50cycsXG4gICAgcmVhc29uOiAnVHlwZSBkZWZpbml0aW9uIGZpbGUgZG9lcyBub3QgcHJvY2VzcyB1c2VyIGlucHV0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9zZXJ2ZXIvdG9vbHMvKi50cycsXG4gICAgcmVhc29uOiAnU2VydmVyIHRvb2xzIHJlY2VpdmUgbm9ybWFsaXplZCBpbnB1dCBmcm9tIFNlcnZlclNldHVwJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NjcmlwdHMvKiovKicsXG4gICAgcmVhc29uOiAnQnVpbGQgYW5kIHV0aWxpdHkgc2NyaXB0cyBkbyBub3QgcHJvY2VzcyB1c2VyIGlucHV0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy90b29scy9wb3J0Zm9saW8vdHlwZXMudHMnLFxuICAgIHJlYXNvbjogJ1R5cGUgZGVmaW5pdGlvbiBmaWxlIGNvbnRhaW5pbmcgb25seSBUeXBlU2NyaXB0IGludGVyZmFjZXMgLSBubyBydW50aW1lIGNvZGUgb3IgdXNlciBpbnB1dCBwcm9jZXNzaW5nJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy90b29scy8qKi90eXBlcy50cycsXG4gICAgcmVhc29uOiAnVHlwZSBkZWZpbml0aW9uIGZpbGVzIGRvIG5vdCBwcm9jZXNzIHVzZXIgaW5wdXQgLSBjb21waWxlLXRpbWUgb25seSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvc2VydmljZXMvQnVpbGRJbmZvU2VydmljZS50cycsXG4gICAgcmVhc29uOiAnQnVpbGRJbmZvU2VydmljZSBvbmx5IHByb2Nlc3NlcyBzeXN0ZW0gaW5mb3JtYXRpb24gKHBhY2thZ2UuanNvbiwgZ2l0IGNvbW1hbmRzLCBEb2NrZXIgcnVudGltZSkgLSB0aGUgTUNQIHRvb2wgdGFrZXMgbm8gcGFyYW1ldGVycyBhbmQgbm8gdXNlciBpbnB1dCBmbG93cyB0aHJvdWdoIHRoaXMgc2VydmljZSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvaGFuZGxlcnMvU3luY0hhbmRsZXJWMi50cycsXG4gICAgcmVhc29uOiAnU3luY0hhbmRsZXJWMiByZWNlaXZlcyBhbHJlYWR5LW5vcm1hbGl6ZWQgaW5wdXQgZnJvbSB0aGUgTUNQIHJlcXVlc3QgbGF5ZXIuIEFsbCB1c2VyIGlucHV0IGlzIG5vcm1hbGl6ZWQgaW4gU2VydmVyU2V0dXAgYmVmb3JlIHJlYWNoaW5nIGhhbmRsZXJzLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvaGFuZGxlcnMvQ29uZmlnSGFuZGxlci50cycsXG4gICAgcmVhc29uOiAnQ29uZmlnSGFuZGxlciByZWNlaXZlcyBhbHJlYWR5LW5vcm1hbGl6ZWQgaW5wdXQgZnJvbSB0aGUgTUNQIHJlcXVlc3QgbGF5ZXIuIEFsbCB1c2VyIGlucHV0IGlzIG5vcm1hbGl6ZWQgaW4gU2VydmVyU2V0dXAgYmVmb3JlIHJlYWNoaW5nIGhhbmRsZXJzLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICd0ZXN0LXN5bmMtb3BlcmF0aW9ucy5qcycsXG4gICAgcmVhc29uOiAnVGVzdCB1dGlsaXR5IGZpbGUgZm9yIGRldmVsb3BtZW50IHRlc3RpbmcuIERvZXMgbm90IHByb2Nlc3MgcHJvZHVjdGlvbiB1c2VyIGlucHV0LidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICcqKi90ZXN0LXN5bmMtb3BlcmF0aW9ucy5qcycsXG4gICAgcmVhc29uOiAnVGVzdCB1dGlsaXR5IGZpbGUgZm9yIGRldmVsb3BtZW50IHRlc3RpbmcuIERvZXMgbm90IHByb2Nlc3MgcHJvZHVjdGlvbiB1c2VyIGlucHV0LidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICd0ZXN0LSouanMnLFxuICAgIHJlYXNvbjogJ1Rlc3QgdXRpbGl0eSBmaWxlcyBpbiByb290IGRpcmVjdG9yeSBmb3IgZGV2ZWxvcG1lbnQgdGVzdGluZy4gRG8gbm90IHByb2Nlc3MgcHJvZHVjdGlvbiB1c2VyIGlucHV0LidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICd0ZXN0LSouanMnLFxuICAgIHJlYXNvbjogJ1Rlc3QgdXRpbGl0eSBmaWxlcyBpbiByb290IGRpcmVjdG9yeS4gQXVkaXQgbG9nZ2luZyBub3QgcmVxdWlyZWQgZm9yIGRldmVsb3BtZW50IHRlc3Qgc2NyaXB0cy4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnT1dBU1AtQTAzLTAwMicsXG4gICAgZmlsZTogJ3Rlc3QtKi5qcycsXG4gICAgcmVhc29uOiAnVGVzdCB1dGlsaXR5IGZpbGVzIHVzaW5nIHNwYXduIHdpdGggYXJyYXkgYXJndW1lbnRzIHdoaWNoIGlzIHNhZmUgZnJvbSBpbmplY3Rpb24uJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ09XQVNQLUEwMy0wMDInLFxuICAgIGZpbGU6ICcqKi90ZXN0LWVsZW1lbnQtbGlmZWN5Y2xlLmpzJyxcbiAgICByZWFzb246ICdGQUxTRSBQT1NJVElWRTogc3Bhd24gd2l0aCBhcnJheSBhcmd1bWVudHMgaXMgc2FmZSAobm8gc2hlbGwgaW52b2NhdGlvbikuIEdpdEh1YiB0b2tlbiBwYXNzZWQgYXMgYXJyYXkgZWxlbWVudCwgbm90IGNvbmNhdGVuYXRlZCBpbnRvIGNvbW1hbmQgc3RyaW5nLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICcqKi90ZXN0LWVsZW1lbnQtbGlmZWN5Y2xlLmpzJyxcbiAgICByZWFzb246ICdGQUxTRSBQT1NJVElWRTogVGVzdCBoYXJuZXNzIHdpdGggbm8gdXNlciBpbnB1dCBtZWNoYW5pc21zLiBBbGwgZGF0YSBpcyBoYXJkY29kZWQgdGVzdCBzY2VuYXJpb3Mgb3IgZW52aXJvbm1lbnQgdmFyaWFibGVzLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdPV0FTUC1BMDMtMDAyJyxcbiAgICBmaWxlOiAndGVzdC1mdWxsLXZhbGlkYXRpb24uanMnLFxuICAgIHJlYXNvbjogJ0ZBTFNFIFBPU0lUSVZFOiBzcGF3biB3aXRoIGFycmF5IGFyZ3VtZW50cyBpcyBzYWZlLiBEb2NrZXIgY29tbWFuZCB1c2VzIGFycmF5IGFyZ3MgcHJldmVudGluZyBzaGVsbCBpbmplY3Rpb24uIExpbmUgMzcyLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdPV0FTUC1BMDMtMDAyJyxcbiAgICBmaWxlOiAnKiovdGVzdC1mdWxsLXZhbGlkYXRpb24uanMnLFxuICAgIHJlYXNvbjogJ0ZBTFNFIFBPU0lUSVZFOiBzcGF3biB3aXRoIGFycmF5IGFyZ3VtZW50cyBpcyBzYWZlLiBEb2NrZXIgY29tbWFuZCB1c2VzIGFycmF5IGFyZ3MgcHJldmVudGluZyBzaGVsbCBpbmplY3Rpb24uJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3Rlc3QtZnVsbC12YWxpZGF0aW9uLmpzJyxcbiAgICByZWFzb246ICdUZXN0IHZhbGlkYXRpb24gc2NyaXB0IC0gbm90IHByb2R1Y3Rpb24gY29kZS4gTm8gdXNlciBpbnB1dCBwcm9jZXNzaW5nLCBvbmx5IHRlc3Qgc2NlbmFyaW9zLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICcqKi90ZXN0LWZ1bGwtdmFsaWRhdGlvbi5qcycsXG4gICAgcmVhc29uOiAnVGVzdCB2YWxpZGF0aW9uIHNjcmlwdCAtIG5vdCBwcm9kdWN0aW9uIGNvZGUuIE5vIHVzZXIgaW5wdXQgcHJvY2Vzc2luZywgb25seSB0ZXN0IHNjZW5hcmlvcy4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAndGVzdC12ZXJzaW9uLXZhbGlkYXRpb24uanMnLFxuICAgIHJlYXNvbjogJ1Rlc3QgdXRpbGl0eSBzY3JpcHQgLSBub3QgcHJvZHVjdGlvbiBjb2RlLiBBdWRpdCBsb2dnaW5nIG5vdCByZXF1aXJlZCBmb3IgdGVzdCB1dGlsaXRpZXMuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJyoqL3Rlc3QtdmVyc2lvbi12YWxpZGF0aW9uLmpzJyxcbiAgICByZWFzb246ICdUZXN0IHV0aWxpdHkgc2NyaXB0IC0gbm90IHByb2R1Y3Rpb24gY29kZS4gQXVkaXQgbG9nZ2luZyBub3QgcmVxdWlyZWQgZm9yIHRlc3QgdXRpbGl0aWVzLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICd0ZXN0LW1lbW9yeS1kZWxldGlvbi5qcycsXG4gICAgcmVhc29uOiAnVGVzdCBmaWxlIC0gTm8gdXNlciBpbnB1dCBwcm9jZXNzZWQsIGFsbCB0ZXN0IGRhdGEgaXMgaW50ZXJuYWxseSBnZW5lcmF0ZWQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnKiovdGVzdC1tZW1vcnktZGVsZXRpb24uanMnLFxuICAgIHJlYXNvbjogJ1Rlc3QgZmlsZSAtIE5vIHVzZXIgaW5wdXQgcHJvY2Vzc2VkLCBhbGwgdGVzdCBkYXRhIGlzIGludGVybmFsbHkgZ2VuZXJhdGVkJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3Rlc3QtbWVtb3J5LWRlbGV0aW9uLmpzJyxcbiAgICByZWFzb246ICdUZXN0IGZpbGUgLSBBdWRpdCBsb2dnaW5nIGhhcHBlbnMgaW4gdGhlIHNlcnZlciBkZWxldGVFbGVtZW50IG1ldGhvZCwgbm90IGluIHRlc3QnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnKiovdGVzdC1tZW1vcnktZGVsZXRpb24uanMnLFxuICAgIHJlYXNvbjogJ1Rlc3QgZmlsZSAtIEF1ZGl0IGxvZ2dpbmcgaGFwcGVucyBpbiB0aGUgc2VydmVyIGRlbGV0ZUVsZW1lbnQgbWV0aG9kLCBub3QgaW4gdGVzdCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdDV0UtODktMDAxJyxcbiAgICBmaWxlOiAndGVzdC1tZW1vcnktZGVsZXRpb24uanMnLFxuICAgIHJlYXNvbjogJ0ZhbHNlIHBvc2l0aXZlIC0gVGVtcGxhdGUgbGl0ZXJhbHMgaW4gZXJyb3IgbWVzc2FnZXMgYXJlIG5vdCBTUUwgcXVlcmllcydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdDV0UtODktMDAxJyxcbiAgICBmaWxlOiAnKiovdGVzdC1tZW1vcnktZGVsZXRpb24uanMnLFxuICAgIHJlYXNvbjogJ0ZhbHNlIHBvc2l0aXZlIC0gVGVtcGxhdGUgbGl0ZXJhbHMgaW4gZXJyb3IgbWVzc2FnZXMgYXJlIG5vdCBTUUwgcXVlcmllcydcbiAgfSxcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIEF1ZGl0IExvZ2dpbmcgRmFsc2UgUG9zaXRpdmVzXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvdHlwZXMvKi50cycsXG4gICAgcmVhc29uOiAnVHlwZSBkZWZpbml0aW9uIGZpbGVzIGRvIG5vdCBwZXJmb3JtIHNlY3VyaXR5IG9wZXJhdGlvbnMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnc3JjL3R5cGVzL2VsZW1lbnRzLyoudHMnLFxuICAgIHJlYXNvbjogJ0VsZW1lbnQgaW50ZXJmYWNlIGZpbGVzIGFyZSB0eXBlIGRlZmluaXRpb25zIHRoYXQgZG8gbm90IHBlcmZvcm0gc2VjdXJpdHkgb3BlcmF0aW9ucydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvY29uc3RhbnRzLyoudHMnLFxuICAgIHJlYXNvbjogJ0NvbnN0YW50IGZpbGVzIGRvIG5vdCBwZXJmb3JtIHNlY3VyaXR5IG9wZXJhdGlvbnMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnc3JjL2NvbmZpZy8qLnRzJyxcbiAgICByZWFzb246ICdDb25maWd1cmF0aW9uIGZpbGVzIGRvIG5vdCBwZXJmb3JtIHNlY3VyaXR5IG9wZXJhdGlvbnMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnc3JjL2VsZW1lbnRzL21lbW9yaWVzL2NvbnN0YW50cy50cycsXG4gICAgcmVhc29uOiAnQ29uc3RhbnRzIGZpbGUgLSBjb250YWlucyBvbmx5IHR5cGUgZGVmaW5pdGlvbnMgYW5kIGNvbnN0YW50cywgbm8gc2VjdXJpdHkgb3BlcmF0aW9ucydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICcqKi9zcmMvZWxlbWVudHMvbWVtb3JpZXMvY29uc3RhbnRzLnRzJyxcbiAgICByZWFzb246ICdDb25zdGFudHMgZmlsZSAtIGNvbnRhaW5zIG9ubHkgdHlwZSBkZWZpbml0aW9ucyBhbmQgY29uc3RhbnRzLCBubyBzZWN1cml0eSBvcGVyYXRpb25zJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJyoqL2VsZW1lbnRzL21lbW9yaWVzL2NvbnN0YW50cy50cycsXG4gICAgcmVhc29uOiAnQ29uc3RhbnRzIGZpbGUgLSBDSSBwYXRoIHZhcmlhbnQsIGNvbnRhaW5zIG9ubHkgdHlwZSBkZWZpbml0aW9ucyBhbmQgY29uc3RhbnRzJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ2VsZW1lbnRzL21lbW9yaWVzL2NvbnN0YW50cy50cycsXG4gICAgcmVhc29uOiAnQ29uc3RhbnRzIGZpbGUgLSBzcmMtc3RyaXBwZWQgcGF0aCB2YXJpYW50LCBjb250YWlucyBvbmx5IHR5cGUgZGVmaW5pdGlvbnMgYW5kIGNvbnN0YW50cydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvZXJyb3JzLyoudHMnLFxuICAgIHJlYXNvbjogJ0Vycm9yIGNsYXNzZXMgYXJlIG5vdCBzZWN1cml0eSBvcGVyYXRpb25zIHJlcXVpcmluZyBhdWRpdCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICcqKi8qLmpzb24nLFxuICAgIHJlYXNvbjogJ0pTT04gZmlsZXMgY2Fubm90IGNvbnRhaW4gZXhlY3V0YWJsZSBjb2RlJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3NyYy9zZWN1cml0eS8qKi8qLnRzJyxcbiAgICByZWFzb246ICdTZWN1cml0eSBtb2R1bGVzIGFyZSBpbmZyYXN0cnVjdHVyZSwgbm90IG9wZXJhdGlvbnMgcmVxdWlyaW5nIGF1ZGl0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3NyYy9jb2xsZWN0aW9uLyoudHMnLFxuICAgIHJlYXNvbjogJ01hcmtldHBsYWNlIG9wZXJhdGlvbnMgYXJlIG5vdCBzZWN1cml0eS1zZW5zaXRpdmUgcmVxdWlyaW5nIGF1ZGl0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3NyYy9jb2xsZWN0aW9uLyoqLyoudHMnLFxuICAgIHJlYXNvbjogJ01hcmtldHBsYWNlIG9wZXJhdGlvbnMgYXJlIG5vdCBzZWN1cml0eS1zZW5zaXRpdmUgcmVxdWlyaW5nIGF1ZGl0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3NyYy9wZXJzb25hLyoudHMnLFxuICAgIHJlYXNvbjogJ1BlcnNvbmEgb3BlcmF0aW9ucyBhcmUgdmFsaWRhdGVkIGF0IGVudHJ5IHBvaW50LCBub3Qgc2VjdXJpdHkgb3BlcmF0aW9ucydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvcGVyc29uYS8qKi8qLnRzJyxcbiAgICByZWFzb246ICdQZXJzb25hIG9wZXJhdGlvbnMgYXJlIHZhbGlkYXRlZCBhdCBlbnRyeSBwb2ludCwgbm90IHNlY3VyaXR5IG9wZXJhdGlvbnMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZlci90b29scy8qKi8qLnRzJyxcbiAgICByZWFzb246ICdUb29sIGltcGxlbWVudGF0aW9ucyBkZWxlZ2F0ZSB0byBzZXJ2aWNlcyB0aGF0IGhhbmRsZSBzZWN1cml0eSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvaW5kZXgudHMnLFxuICAgIHJlYXNvbjogJ01haW4gZW50cnkgcG9pbnQgZGVsZWdhdGVzIHNlY3VyaXR5IG9wZXJhdGlvbnMgdG8gc3BlY2lhbGl6ZWQgbW9kdWxlcydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvdXRpbHMvRXZpY3RpbmdRdWV1ZS50cycsXG4gICAgcmVhc29uOiAnR2VuZXJpYyBkYXRhIHN0cnVjdHVyZSDigJQgZG9lcyBub3QgcHJvY2VzcyB1c2VyIGlucHV0LiBBbGwgY2FsbGVycyAoQWdlbnQsIFNlY3VyaXR5VGVsZW1ldHJ5LCBTZWN1cml0eU1vbml0b3IsIExvZ2dlcikgc2FuaXRpemUgaW5wdXQgYmVmb3JlIHB1c2hpbmcgdG8gdGhlIHF1ZXVlJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3NyYy91dGlscy8qLnRzJyxcbiAgICByZWFzb246ICdVdGlsaXR5IGZ1bmN0aW9ucyBhcmUgbm90IHNlY3VyaXR5IG9wZXJhdGlvbnMgcmVxdWlyaW5nIGF1ZGl0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3NyYy91cGRhdGUvKiovKi50cycsXG4gICAgcmVhc29uOiAnVXBkYXRlIHN5c3RlbSBoYXMgaXRzIG93biBsb2dnaW5nIGFuZCBpcyBub3QgYSBkaXJlY3Qgc2VjdXJpdHkgb3BlcmF0aW9uJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3NyYy9zZXJ2ZXIvdHlwZXMudHMnLFxuICAgIHJlYXNvbjogJ1R5cGUgZGVmaW5pdGlvbiBmaWxlIGRvZXMgbm90IHBlcmZvcm0gb3BlcmF0aW9ucydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzY3JpcHRzLyoqLyonLFxuICAgIHJlYXNvbjogJ0J1aWxkIHNjcmlwdHMgZG8gbm90IHBlcmZvcm0gcnVudGltZSBzZWN1cml0eSBvcGVyYXRpb25zJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3NjcmlwdHMvbGliL2doLWNvbW1hbmQuanMnLFxuICAgIHJlYXNvbjogJ0NMSSB1dGlsaXR5IC0gU2VjdXJpdHlNb25pdG9yIG5vdCBhdmFpbGFibGUgaW4gc3RhbmRhbG9uZSBzY3JpcHRzLiBTZWN1cml0eSBlbnN1cmVkIHZpYSBpbnB1dCB2YWxpZGF0aW9uIGFuZCBzZWN1cmUgY29tbWFuZCBleGVjdXRpb24gcGF0dGVybnMgKERNQ1AtU0VDLTAwMSwgRE1DUC1TRUMtMDAyKSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICcqKi9zY3JpcHRzL2xpYi9naC1jb21tYW5kLmpzJyxcbiAgICByZWFzb246ICdDTEkgdXRpbGl0eSAtIFNlY3VyaXR5TW9uaXRvciBub3QgYXZhaWxhYmxlIGluIHN0YW5kYWxvbmUgc2NyaXB0cy4gU2VjdXJpdHkgZW5zdXJlZCB2aWEgaW5wdXQgdmFsaWRhdGlvbiBhbmQgc2VjdXJlIGNvbW1hbmQgZXhlY3V0aW9uIHBhdHRlcm5zIChETUNQLVNFQy0wMDEsIERNQ1AtU0VDLTAwMiknXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnc3JjL3BvcnRmb2xpby9Qb3J0Zm9saW9TeW5jTWFuYWdlci50cycsXG4gICAgcmVhc29uOiAnUG9ydGZvbGlvIHN5bmMgb3BlcmF0aW9ucyBhcmUgZmlsZSBtYW5hZ2VtZW50IHRhc2tzLCBub3Qgc2VjdXJpdHkgb3BlcmF0aW9ucy4gU2VjdXJpdHkgdmFsaWRhdGlvbiBoYXBwZW5zIGF0IHRoZSBNQ1AgcmVxdWVzdCBsYXllci4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnc3JjL2hhbmRsZXJzL1N5bmNIYW5kbGVyVjIudHMnLFxuICAgIHJlYXNvbjogJ1N5bmMgaGFuZGxlciBkZWxlZ2F0ZXMgdG8gUG9ydGZvbGlvU3luY01hbmFnZXIgd2hpY2ggaGFuZGxlcyBpdHMgb3duIGxvZ2dpbmcuIFNlY3VyaXR5IHZhbGlkYXRpb24gaGFwcGVucyBhdCB0aGUgTUNQIHJlcXVlc3QgbGF5ZXIuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3NyYy9oYW5kbGVycy9Db25maWdIYW5kbGVyLnRzJyxcbiAgICByZWFzb246ICdDb25maWcgaGFuZGxlciBvcGVyYXRpb25zIGFyZSBjb25maWd1cmF0aW9uIG1hbmFnZW1lbnQsIG5vdCBzZWN1cml0eSBvcGVyYXRpb25zLiBDb25maWdNYW5hZ2VyIGhhbmRsZXMgaXRzIG93biBsb2dnaW5nLidcbiAgfSxcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFF1ZXJ5IFNlcnZpY2VzIC0gSXNzdWUgIzM4IChQUiAjNDYpXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUXVlcnkgc2VydmljZXMgcmVjZWl2ZSBwcmUtbm9ybWFsaXplZCBpbnB1dCB2aWEgdHdvIGxheWVyczpcbiAgLy8gMS4gU2VydmVyU2V0dXAubm9ybWFsaXplQXJndW1lbnRzVW5pY29kZSgpIG5vcm1hbGl6ZXMgYWxsIE1DUCB0b29sIGFyZ3VtZW50c1xuICAvLyAyLiBGaWx0ZXJTZXJ2aWNlIHVzZXMgbm9ybWFsaXplU2VhcmNoVGVybSgpIHdoaWNoIGNhbGxzIFVuaWNvZGVWYWxpZGF0b3Iubm9ybWFsaXplKClcbiAgLy8gU2VlIHNyYy91dGlscy9zZWFyY2hVdGlscy50cyBsaW5lcyAxNy0zMCBmb3Igc2Vjb25kYXJ5IG5vcm1hbGl6YXRpb25cbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvc2VydmljZXMvcXVlcnkvdHlwZXMudHMnLFxuICAgIHJlYXNvbjogJ1R5cGUgZGVmaW5pdGlvbiBmaWxlIGNvbnRhaW5pbmcgb25seSBUeXBlU2NyaXB0IGludGVyZmFjZXMgLSBubyBydW50aW1lIGNvZGUgb3IgdXNlciBpbnB1dCBwcm9jZXNzaW5nLiBQUiAjNDYnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZpY2VzL3F1ZXJ5L2luZGV4LnRzJyxcbiAgICByZWFzb246ICdSZS1leHBvcnQgbW9kdWxlIC0gbm8gdXNlciBpbnB1dCBwcm9jZXNzaW5nLCBvbmx5IFR5cGVTY3JpcHQgcmUtZXhwb3J0cy4gUFIgIzQ2J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9zZXJ2aWNlcy9xdWVyeS9QYWdpbmF0aW9uU2VydmljZS50cycsXG4gICAgcmVhc29uOiAnUGFnaW5hdGlvblNlcnZpY2UgcHJvY2Vzc2VzIG51bWVyaWMgcGFyYW1ldGVycyAocGFnZSwgcGFnZVNpemUpIC0gbm8gc3RyaW5nIGlucHV0IHJlcXVpcmluZyBVbmljb2RlIG5vcm1hbGl6YXRpb24uIElucHV0IHByZS12YWxpZGF0ZWQgYXQgTUNQIHJlcXVlc3QgbGF5ZXIuIFBSICM0NidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvc2VydmljZXMvcXVlcnkvRmlsdGVyU2VydmljZS50cycsXG4gICAgcmVhc29uOiAnRFVBTCBQUk9URUNUSU9OOiAoMSkgSW5wdXQgcHJlLW5vcm1hbGl6ZWQgYnkgU2VydmVyU2V0dXAubm9ybWFsaXplQXJndW1lbnRzVW5pY29kZSgpIGF0IE1DUCBsYXllciwgKDIpIEZpbHRlclNlcnZpY2UgdXNlcyBub3JtYWxpemVTZWFyY2hUZXJtKCkgd2hpY2ggY2FsbHMgVW5pY29kZVZhbGlkYXRvci5ub3JtYWxpemUoKS4gU2VlIHNlYXJjaFV0aWxzLnRzOjE3LTMwLiBQUiAjNDYnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZpY2VzL3F1ZXJ5L0VsZW1lbnRRdWVyeVNlcnZpY2UudHMnLFxuICAgIHJlYXNvbjogJ09yY2hlc3RyYXRvciBzZXJ2aWNlIC0gZGVsZWdhdGVzIHRvIEZpbHRlclNlcnZpY2Ugd2hpY2ggcGVyZm9ybXMgVW5pY29kZSBub3JtYWxpemF0aW9uIHZpYSBub3JtYWxpemVTZWFyY2hUZXJtKCkuIElucHV0IHByZS1ub3JtYWxpemVkIGF0IE1DUCBsYXllci4gUFIgIzQ2J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9zZXJ2aWNlcy9xdWVyeS9Tb3J0U2VydmljZS50cycsXG4gICAgcmVhc29uOiAnU29ydFNlcnZpY2UgdmFsaWRhdGVzIHNvcnRCeSBhZ2FpbnN0IGVudW0gd2hpdGVsaXN0IChTb3J0YWJsZUZpZWxkKSAtIG5vIGFyYml0cmFyeSBzdHJpbmcgaW5wdXQuIHNvcnRPcmRlciBpcyBlbnVtLXZhbGlkYXRlZC4gTm8gVW5pY29kZSBub3JtYWxpemF0aW9uIG5lZWRlZC4gUFIgIzQ2J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9zZXJ2aWNlcy9xdWVyeS8qLnRzJyxcbiAgICByZWFzb246ICdRdWVyeSBzZXJ2aWNlcyByZWNlaXZlIHByZS1ub3JtYWxpemVkIGlucHV0IGZyb20gTUNQIGxheWVyIGFuZCB1c2Ugbm9ybWFsaXplU2VhcmNoVGVybSgpIGZvciBhZGRpdGlvbmFsIHByb3RlY3Rpb24uIFBSICM0NidcbiAgfSxcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIENvdmVyYWdlIFJlcG9ydCBGaWxlc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIHtcbiAgICBydWxlOiAnKicsXG4gICAgZmlsZTogJ3Rlc3QvY292ZXJhZ2UvKiovKicsXG4gICAgcmVhc29uOiAnQ292ZXJhZ2UgcmVwb3J0IGZpbGVzIGFyZSBhdXRvLWdlbmVyYXRlZCBhbmQgbm90IHBhcnQgb2YgdGhlIGFwcGxpY2F0aW9uIGNvZGUnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnKicsXG4gICAgZmlsZTogJ3Rlc3RzL2NvdmVyYWdlLyoqLyonLFxuICAgIHJlYXNvbjogJ0NvdmVyYWdlIHJlcG9ydCBmaWxlcyBhcmUgYXV0by1nZW5lcmF0ZWQgYW5kIG5vdCBwYXJ0IG9mIHRoZSBhcHBsaWNhdGlvbiBjb2RlJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJyonLFxuICAgIGZpbGU6ICcqKi9sY292LXJlcG9ydC8qKi8qJyxcbiAgICByZWFzb246ICdMQ09WIGNvdmVyYWdlIHJlcG9ydCBmaWxlcyBhcmUgYXV0by1nZW5lcmF0ZWQgYW5kIG5vdCBwYXJ0IG9mIHRoZSBhcHBsaWNhdGlvbiBjb2RlJ1xuICB9LFxuICBcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBEb2N1bWVudGF0aW9uIGFuZCBOb24tQ29kZSBGaWxlc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIHtcbiAgICBydWxlOiAnKicsXG4gICAgZmlsZTogJ2RvY3MvKiovKicsXG4gICAgcmVhc29uOiAnRG9jdW1lbnRhdGlvbiBmaWxlcyBpbmNsdWRpbmcgUUEgbWV0cmljcyBhbmQgcmVwb3J0cydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICcqJyxcbiAgICBmaWxlOiAnKiovKi5tZCcsXG4gICAgcmVhc29uOiAnTWFya2Rvd24gZG9jdW1lbnRhdGlvbiBmaWxlcydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICcqJyxcbiAgICBmaWxlOiAnKiovKi5qc29uJyxcbiAgICByZWFzb246ICdKU09OIGNvbmZpZ3VyYXRpb24gYW5kIGRhdGEgZmlsZXMgZG8gbm90IGV4ZWN1dGUgY29kZSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICcqJyxcbiAgICBmaWxlOiAnTElDRU5TRScsXG4gICAgcmVhc29uOiAnTGljZW5zZSBmaWxlJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJyonLFxuICAgIGZpbGU6ICcuZ2l0aWdub3JlJyxcbiAgICByZWFzb246ICdHaXQgY29uZmlndXJhdGlvbiBmaWxlJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJyonLFxuICAgIGZpbGU6ICdwYWNrYWdlLWxvY2suanNvbicsXG4gICAgcmVhc29uOiAnTlBNIGxvY2sgZmlsZSAtIGF1dG8tZ2VuZXJhdGVkLCBubyB1c2VyIGlucHV0IHByb2Nlc3NpbmcnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnKicsXG4gICAgZmlsZTogJyoqLyoueW1sJyxcbiAgICByZWFzb246ICdZQU1MIGNvbmZpZ3VyYXRpb24gZmlsZXMgYXJlIGRhdGEsIG5vdCBjb2RlJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJyonLFxuICAgIGZpbGU6ICcqKi8qLnlhbWwnLFxuICAgIHJlYXNvbjogJ1lBTUwgY29uZmlndXJhdGlvbiBmaWxlcyBhcmUgZGF0YSwgbm90IGNvZGUnXG4gIH0sXG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBTZXB0ZW1iZXIgMjIgU2Vzc2lvbiBEb2NzIFJlc3RvcmF0aW9uIC0gUFIgIzEwODJcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICB7XG4gICAgcnVsZTogJ09XQVNQLUEwMy0wMDInLFxuICAgIGZpbGU6ICdzY3JpcHRzL3Rlc3QtY2FwYWJpbGl0eS1pbmRleC5qcycsXG4gICAgcmVhc29uOiAnVGVzdCBzY3JpcHQgdXNpbmcgc3Bhd24gd2l0aCBoYXJkY29kZWQgYXJyYXkgYXJndW1lbnRzIC0gbm8gdXNlciBpbnB1dCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdPV0FTUC1BMDMtMDAyJyxcbiAgICBmaWxlOiAnKiovc2NyaXB0cy90ZXN0LWNhcGFiaWxpdHktaW5kZXguanMnLFxuICAgIHJlYXNvbjogJ1Rlc3Qgc2NyaXB0IHVzaW5nIHNwYXduIHdpdGggaGFyZGNvZGVkIGFycmF5IGFyZ3VtZW50cyAtIG5vIHVzZXIgaW5wdXQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnT1dBU1AtQTAzLTAwMicsXG4gICAgZmlsZTogJ3Rlc3RzL2V4cGVyaW1lbnRzL2NhcGFiaWxpdHktaW5kZXgtY29tcHJlaGVuc2l2ZS10ZXN0LmpzJyxcbiAgICByZWFzb246ICdUZXN0IGZpbGUgdXNpbmcgc3Bhd24gd2l0aCBoYXJkY29kZWQgYXJyYXkgYXJndW1lbnRzIC0gbm8gdXNlciBpbnB1dCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdPV0FTUC1BMDMtMDAyJyxcbiAgICBmaWxlOiAnKiovdGVzdHMvZXhwZXJpbWVudHMvY2FwYWJpbGl0eS1pbmRleC1jb21wcmVoZW5zaXZlLXRlc3QuanMnLFxuICAgIHJlYXNvbjogJ1Rlc3QgZmlsZSB1c2luZyBzcGF3biB3aXRoIGhhcmRjb2RlZCBhcnJheSBhcmd1bWVudHMgLSBubyB1c2VyIGlucHV0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwMycsXG4gICAgZmlsZTogJ3NjcmlwdHMvdGVzdC1jYXBhYmlsaXR5LWluZGV4LmpzJyxcbiAgICByZWFzb246ICdUZXN0IHNjcmlwdCB3aXRoIGhhcmRjb2RlZCB0ZXN0IHBlcnNvbmEgcGF0aHMgLSBub3QgcHJvZHVjdGlvbiBjb2RlJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwMycsXG4gICAgZmlsZTogJyoqL3NjcmlwdHMvdGVzdC1jYXBhYmlsaXR5LWluZGV4LmpzJyxcbiAgICByZWFzb246ICdUZXN0IHNjcmlwdCB3aXRoIGhhcmRjb2RlZCB0ZXN0IHBlcnNvbmEgcGF0aHMgLSBub3QgcHJvZHVjdGlvbiBjb2RlJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0NXRS0yMi0wMDEnLFxuICAgIGZpbGU6ICd0ZXN0cy9leHBlcmltZW50cy9jYXBhYmlsaXR5LWluZGV4LWRvY2tlci10ZXN0LmpzJyxcbiAgICByZWFzb246ICdUZXN0IGZpbGUgdXNpbmcgaGFyZGNvZGVkIHRlc3QgcGF0aHMgLSBubyB1c2VyIGlucHV0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0NXRS0yMi0wMDEnLFxuICAgIGZpbGU6ICcqKi90ZXN0cy9leHBlcmltZW50cy9jYXBhYmlsaXR5LWluZGV4LWRvY2tlci10ZXN0LmpzJyxcbiAgICByZWFzb246ICdUZXN0IGZpbGUgdXNpbmcgaGFyZGNvZGVkIHRlc3QgcGF0aHMgLSBubyB1c2VyIGlucHV0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3Rlc3QtbWVtb3J5LWVkaXQuanMnLFxuICAgIHJlYXNvbjogJ1Rlc3QgZmlsZSBmb3IgbWVtb3J5IGVkaXRpbmcgLSBubyB1c2VyIGlucHV0IHByb2Nlc3NpbmcnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnKiovdGVzdC1tZW1vcnktZWRpdC5qcycsXG4gICAgcmVhc29uOiAnVGVzdCBmaWxlIGZvciBtZW1vcnkgZWRpdGluZyAtIG5vIHVzZXIgaW5wdXQgcHJvY2Vzc2luZydcbiAgfSxcblxuICAvLyBBZGRpdGlvbmFsIHN1cHByZXNzaW9ucyBmb3IgcmVtYWluaW5nIGlzc3Vlc1xuICB7XG4gICAgcnVsZTogJ09XQVNQLUEwMy0wMDInLFxuICAgIGZpbGU6ICd0ZXN0cy9leHBlcmltZW50cy9jYXBhYmlsaXR5LWluZGV4LWRvY2tlci10ZXN0LmpzJyxcbiAgICByZWFzb246ICdUZXN0IGZpbGUgdXNpbmcgc3Bhd24gd2l0aCBoYXJkY29kZWQgYXJyYXkgYXJndW1lbnRzIGF0IGxpbmUgMjc5IC0gbm8gdXNlciBpbnB1dCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdPV0FTUC1BMDMtMDAyJyxcbiAgICBmaWxlOiAnKiovdGVzdHMvZXhwZXJpbWVudHMvY2FwYWJpbGl0eS1pbmRleC1kb2NrZXItdGVzdC5qcycsXG4gICAgcmVhc29uOiAnVGVzdCBmaWxlIHVzaW5nIHNwYXduIHdpdGggaGFyZGNvZGVkIGFycmF5IGFyZ3VtZW50cyBhdCBsaW5lIDI3OSAtIG5vIHVzZXIgaW5wdXQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDAxJyxcbiAgICBmaWxlOiAnc2NyaXB0cy90ZXN0LWNhcGFiaWxpdHktaW5kZXguanMnLFxuICAgIHJlYXNvbjogJ1Rlc3Qgc2NyaXB0IGxvYWRpbmcgdGVzdCBwZXJzb25hcyB3aXRoIGhhcmRjb2RlZCBwYXRocyAtIG5vdCBwcm9kdWN0aW9uIGNvZGUnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDAxJyxcbiAgICBmaWxlOiAnKiovc2NyaXB0cy90ZXN0LWNhcGFiaWxpdHktaW5kZXguanMnLFxuICAgIHJlYXNvbjogJ1Rlc3Qgc2NyaXB0IGxvYWRpbmcgdGVzdCBwZXJzb25hcyB3aXRoIGhhcmRjb2RlZCBwYXRocyAtIG5vdCBwcm9kdWN0aW9uIGNvZGUnXG4gIH0sXG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBwYWNrYWdlcy9zYWZldHkgU3VwcHJlc3Npb25zXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAge1xuICAgIHJ1bGU6ICdPV0FTUC1BMDMtMDAyJyxcbiAgICBmaWxlOiAncGFja2FnZXMvc2FmZXR5L3NyYy9EaXNwbGF5U2VydmljZS50cycsXG4gICAgcmVhc29uOiAnSW50ZW50aW9uYWwgZXhlY1N5bmMgZm9yIGNyb3NzLXBsYXRmb3JtIE9TIGRpYWxvZ3MuIEFsbCB1c2VyIGlucHV0IGlzIHByb3Blcmx5IGVzY2FwZWQgdXNpbmcgZXNjYXBlU2hlbGxBcmcgKFVuaXgpIG9yIEJhc2U2NCBlbmNvZGluZyAoUG93ZXJTaGVsbCknXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnT1dBU1AtQTAzLTAwMicsXG4gICAgZmlsZTogJyoqL3BhY2thZ2VzL3NhZmV0eS9zcmMvRGlzcGxheVNlcnZpY2UudHMnLFxuICAgIHJlYXNvbjogJ0ludGVudGlvbmFsIGV4ZWNTeW5jIGZvciBjcm9zcy1wbGF0Zm9ybSBPUyBkaWFsb2dzLiBBbGwgdXNlciBpbnB1dCBpcyBwcm9wZXJseSBlc2NhcGVkIHVzaW5nIGVzY2FwZVNoZWxsQXJnIChVbml4KSBvciBCYXNlNjQgZW5jb2RpbmcgKFBvd2VyU2hlbGwpJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3BhY2thZ2VzL3NhZmV0eS9zcmMvRGlzcGxheVNlcnZpY2UudHMnLFxuICAgIHJlYXNvbjogJ0Rpc3BsYXlTZXJ2aWNlIHJlY2VpdmVzIHNhbml0aXplZCBpbnB1dCBmcm9tIFRpZXJlZFNhZmV0eVNlcnZpY2UuIFVuaWNvZGUgbm9ybWFsaXphdGlvbiBoYXBwZW5zIGF0IHZhbGlkYXRpb24gYm91bmRhcmllcywgbm90IGluIGRpc3BsYXkgbGF5ZXInXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnKiovcGFja2FnZXMvc2FmZXR5L3NyYy9EaXNwbGF5U2VydmljZS50cycsXG4gICAgcmVhc29uOiAnRGlzcGxheVNlcnZpY2UgcmVjZWl2ZXMgc2FuaXRpemVkIGlucHV0IGZyb20gVGllcmVkU2FmZXR5U2VydmljZS4gVW5pY29kZSBub3JtYWxpemF0aW9uIGhhcHBlbnMgYXQgdmFsaWRhdGlvbiBib3VuZGFyaWVzLCBub3QgaW4gZGlzcGxheSBsYXllcidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdwYWNrYWdlcy9zYWZldHkvc3JjL1RpZXJlZFNhZmV0eVNlcnZpY2UudHMnLFxuICAgIHJlYXNvbjogJ1RpZXJlZFNhZmV0eVNlcnZpY2UgdmFsaWRhdGVzIG9wZXJhdGlvbiBzYWZldHkgbGV2ZWxzLCBub3QgdXNlciBpbnB1dC4gSW5wdXQgdmFsaWRhdGlvbiB3aXRoIFVuaWNvZGUgbm9ybWFsaXphdGlvbiBpcyBoYW5kbGVkIGJ5IHVwc3RyZWFtIHZhbGlkYXRvcnMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnKiovcGFja2FnZXMvc2FmZXR5L3NyYy9UaWVyZWRTYWZldHlTZXJ2aWNlLnRzJyxcbiAgICByZWFzb246ICdUaWVyZWRTYWZldHlTZXJ2aWNlIHZhbGlkYXRlcyBvcGVyYXRpb24gc2FmZXR5IGxldmVscywgbm90IHVzZXIgaW5wdXQuIElucHV0IHZhbGlkYXRpb24gd2l0aCBVbmljb2RlIG5vcm1hbGl6YXRpb24gaXMgaGFuZGxlZCBieSB1cHN0cmVhbSB2YWxpZGF0b3JzJ1xuICB9LFxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gRG9ja2VyIFRva2VuIE1lYXN1cmVtZW50IFNjcmlwdCAtIFBSICMyOTJcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICB7XG4gICAgcnVsZTogJ09XQVNQLUEwMy0wMDInLFxuICAgIGZpbGU6ICdzY3JpcHRzL21lYXN1cmUtZG9ja2VyLXRva2Vucy50cycsXG4gICAgcmVhc29uOiAnQ29tbWFuZCBpbmplY3Rpb24gbWl0aWdhdGVkOiBpbnRlcmZhY2VNb2RlIGFuZCBlbmRwb2ludE1vZGUgYXJlIHZhbGlkYXRlZCBhZ2FpbnN0IFZBTElEX0lOVEVSRkFDRV9NT0RFUyBhbmQgVkFMSURfRU5EUE9JTlRfTU9ERVMgYWxsb3dsaXN0cyBiZWZvcmUgdXNlIGluIHNwYXduKCkuIFR5cGVTY3JpcHQgdHlwZXMgYWxzbyBjb25zdHJhaW4gcGFyYW1ldGVycyBhdCBjb21waWxlIHRpbWUuIFBSICMyOTInXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnT1dBU1AtQTAzLTAwMicsXG4gICAgZmlsZTogJyoqL3NjcmlwdHMvbWVhc3VyZS1kb2NrZXItdG9rZW5zLnRzJyxcbiAgICByZWFzb246ICdDb21tYW5kIGluamVjdGlvbiBtaXRpZ2F0ZWQ6IGludGVyZmFjZU1vZGUgYW5kIGVuZHBvaW50TW9kZSBhcmUgdmFsaWRhdGVkIGFnYWluc3QgVkFMSURfSU5URVJGQUNFX01PREVTIGFuZCBWQUxJRF9FTkRQT0lOVF9NT0RFUyBhbGxvd2xpc3RzIGJlZm9yZSB1c2UgaW4gc3Bhd24oKS4gVHlwZVNjcmlwdCB0eXBlcyBhbHNvIGNvbnN0cmFpbiBwYXJhbWV0ZXJzIGF0IGNvbXBpbGUgdGltZS4gUFIgIzI5MidcbiAgfSxcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFVuaWZpZWQgTG9nZ2luZyBTeXN0ZW0g4oCUIFBSICM0NzFcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBTaW5rcyByZWNlaXZlIHByZS1jb25zdHJ1Y3RlZCBVbmlmaWVkTG9nRW50cnkgb2JqZWN0cyBmcm9tIExvZ01hbmFnZXIuXG4gIC8vIERhdGEgZW50ZXJzIHRoZSBwaXBlbGluZSB0aHJvdWdoIExvZ0hvb2tzIHdoaWNoIGNyZWF0ZXMgZW50cmllcyBmcm9tXG4gIC8vIGludGVybmFsIHN5c3RlbSBldmVudHMuIE1DUExvZ2dlciBzYW5pdGl6ZXMgdmlhIHNhbml0aXplTWVzc2FnZSgpIGFuZFxuICAvLyBzYW5pdGl6ZURhdGEoKSBiZWZvcmUgZW1pdHRpbmcuIE90aGVyIHNvdXJjZXMgKFNlY3VyaXR5TW9uaXRvcixcbiAgLy8gUGVyZm9ybWFuY2VNb25pdG9yLCBldGMuKSBlbWl0IGludGVybmFsIHN5c3RlbSBkYXRhLCBub3QgdXNlciBpbnB1dC5cbiAgLy8gVGhlIFNTRSB2aWV3ZXIgSFRNTC1lc2NhcGVzIGFsbCBkeW5hbWljIGNvbnRlbnQgdmlhIGVzY0h0bWwoKS9cbiAgLy8gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoKS5cbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvbG9nZ2luZy90eXBlcy50cycsXG4gICAgcmVhc29uOiAnUHVyZSB0eXBlIGRlZmluaXRpb25zIGFuZCBpbnRlcmZhY2VzIOKAlCBubyBkYXRhIHByb2Nlc3Npbmcgb3IgdXNlciBpbnB1dCBoYW5kbGluZy4gUFIgIzQ3MSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvbG9nZ2luZy9zaW5rcy9NZW1vcnlMb2dTaW5rLnRzJyxcbiAgICByZWFzb246ICdSZWNlaXZlcyBwcmUtY29uc3RydWN0ZWQgVW5pZmllZExvZ0VudHJ5IG9iamVjdHMgZnJvbSBMb2dNYW5hZ2VyLiBRdWVyeSBwYXJhbWV0ZXJzIGFyZSB1c2VkIGFzIHJlYWQtb25seSBzdWJzdHJpbmcgZmlsdGVycywgbm90IHdyaXR0ZW4gdG8gb3V0cHV0LiBQUiAjNDcxJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9sb2dnaW5nL3NpbmtzL0ZpbGVMb2dTaW5rLnRzJyxcbiAgICByZWFzb246ICdSZWNlaXZlcyBwcmUtZm9ybWF0dGVkIGVudHJpZXMgdmlhIElMb2dGb3JtYXR0ZXIuIEZpbGUgcGF0aHMgYnVpbHQgZnJvbSBoYXJkY29kZWQgY2F0ZWdvcnkgbmFtZXMgKyBkYXRlcy4gTUNQTG9nZ2VyIHNhbml0aXplcyB1cHN0cmVhbSB2aWEgc2FuaXRpemVNZXNzYWdlL3Nhbml0aXplRGF0YTsgb3RoZXIgc291cmNlcyBlbWl0IGludGVybmFsIHN5c3RlbSBkYXRhLiBQUiAjNDcxJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy93ZWIvcm91dGVzL2xvZ1JvdXRlcy50cycsXG4gICAgcmVhc29uOiAnSlNPTi1zZXJpYWxpemVzIHByZS1jb25zdHJ1Y3RlZCBVbmlmaWVkTG9nRW50cnkgb2JqZWN0cyBvdmVyIFNTRS4gQWxsIHF1ZXJ5IHBhcmFtZXRlcnMgYXJlIHZhbGlkYXRlZCBzdHJpbmdzIHBhc3NlZCB0byBNZW1vcnlMb2dTaW5rLnF1ZXJ5KCkuIE5vIEhUTUwgcmVuZGVyaW5nLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvc3RvcmFnZS90eXBlcy50cycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IFR5cGUtb25seSBpbnRlcmZhY2UgZGVjbGFyYXRpb25zIChTdG9yYWdlSXRlbU1ldGFkYXRhLCBFbGVtZW50SW5kZXhFbnRyeSwgTWFuaWZlc3REaWZmUmVzdWx0KS4gTm8gZXhlY3V0YWJsZSBpbnB1dC1wcm9jZXNzaW5nIGNvZGU7IFVuaWNvZGUgbm9ybWFsaXphdGlvbiBpcyBlbmZvcmNlZCBpbiBjb25jcmV0ZSBzdG9yYWdlIHBhcnNlcnMvbGF5ZXJzLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvc3RvcmFnZS9JU3RvcmFnZUJhY2tlbmQudHMnLFxuICAgIHJlYXNvbjogJ0ZBTFNFIFBPU0lUSVZFOiBJbnRlcmZhY2UgY29udHJhY3Qgb25seSBmb3IgYmFja2VuZCBhYnN0cmFjdGlvbi4gTm8gcnVudGltZSB1c2VyLWlucHV0IGhhbmRsaW5nIGluIHRoaXMgZmlsZTsgbm9ybWFsaXphdGlvbiBpcyBlbmZvcmNlZCBieSBpbXBsZW1lbnRpbmcgc3RvcmFnZSBsYXllcnMgYW5kIHZhbGlkYXRvcnMuJ1xuICB9LFxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gVmVyaWZpY2F0aW9uTm90aWZpZXIgRmFsc2UgUG9zaXRpdmVzIOKAlCBJc3N1ZSAjNTM3XG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAge1xuICAgIHJ1bGU6ICdPV0FTUC1BMDMtMDAyJyxcbiAgICBmaWxlOiAnc3JjL3NlcnZpY2VzL1ZlcmlmaWNhdGlvbk5vdGlmaWVyLnRzJyxcbiAgICByZWFzb246ICdGQUxTRSBQT1NJVElWRTogTGluZXMgMTE3LCAxMzIsIDE0NSB1c2Ugc3Bhd24oKSB3aXRoIGFycmF5IGFyZ3VtZW50cyAobm8gc2hlbGwgaW52b2NhdGlvbikuIHplbml0eS9rZGlhbG9nL3htZXNzYWdlIGFyZSBkaXNwbGF5LW9ubHkgdG9vbHMgdGhhdCByZW5kZXIgdGV4dCBpbiBHVUkgZGlhbG9ncyB3aXRob3V0IGludGVycHJldGluZyBjb250ZW50IGFzIGNvZGUuIGFnZW50TmFtZSAoZnJvbSBNQ1AgcGFyYW1zKSBhbmQgY29kZSAoY3J5cHRvZ3JhcGhpYyBhbHBoYW51bWVyaWMpIGZsb3cgaW50byBkaXNwbGF5IHRleHQgb25seS4gU2VlIElzc3VlICM1MzcgZXZpZGVuY2UgdHJhY2UuJ1xuICB9LFxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gV2ViIFVJIENsaWVudC1TaWRlIEZhbHNlIFBvc2l0aXZlcyDigJQgUkMxIFNlY3VyaXR5IEF1ZGl0XG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDUnLFxuICAgIGZpbGU6ICdzcmMvd2ViL3B1YmxpYy9hcHAuanMnLFxuICAgIHJlYXNvbjogJ0NsaWVudC1zaWRlIGJyb3dzZXIgSmF2YVNjcmlwdC4gU2VjdXJlWWFtbFBhcnNlciBpcyBhIE5vZGUuanMgbW9kdWxlIHVuYXZhaWxhYmxlIGluIGJyb3dzZXIgY29udGV4dC4gc2FmZVBhcnNlWWFtbCgpIHdyYXBwZXIgdXNlcyBDT1JFX1NDSEVNQSAoc2FmZSwgbm8gY3VzdG9tIHR5cGVzKSB3aXRoIDUxMktCIHNpemUgbGltaXQuIERhdGEgc2VydmVkIGZyb20gbG9jYWxob3N0IG9yIHRydXN0ZWQgR2l0SHViIGNvbGxlY3Rpb24gQVBJLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvd2ViL3B1YmxpYy9hcHAuanMnLFxuICAgIHJlYXNvbjogJ0NsaWVudC1zaWRlIGJyb3dzZXIgSmF2YVNjcmlwdC4gVW5pY29kZVZhbGlkYXRvciBpcyBhIE5vZGUuanMgbW9kdWxlIHVuYXZhaWxhYmxlIGluIGJyb3dzZXIgY29udGV4dC4gSW5wdXQgc2VydmVkIGZyb20gRG9sbGhvdXNlTUNQIHNlcnZlciB3aGljaCBub3JtYWxpemVzIGJlZm9yZSBzZXJ2aW5nLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvd2ViL3NlcnZlci50cycsXG4gICAgcmVhc29uOiAnTkZDIG5vcm1hbGl6YXRpb24gYWRkZWQgdG8gcmVxLnBhdGggaW4gU1BBIGZhbGxiYWNrIGhhbmRsZXIgKGxpbmUgMTgwKS4gRmlsZS1sZXZlbCBzY2FubmVyIGZsYWdzIGRlc3BpdGUgcGVyLWlucHV0IGZpeC4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3dlYi9yb3V0ZXMudHMnLFxuICAgIHJlYXNvbjogJ05GQyBub3JtYWxpemF0aW9uIHZpYSBub3JtYWxpemVJbnB1dCgpIGFwcGxpZWQgdG8gYWxsIHJlcS5wYXJhbXMuIEZpbGUtbGV2ZWwgc2Nhbm5lciBmbGFncyBkZXNwaXRlIHBlci1pbnB1dCBmaXguJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9jb252ZXJ0ZXJzL0FnZW50U2tpbGxDb252ZXJ0ZXIudHMnLFxuICAgIHJlYXNvbjogJ05GQyBub3JtYWxpemF0aW9uIGFkZGVkIHRvIGJvdGggY29udmVydEFnZW50VG9Eb2xsaG91c2UoKSBhbmQgY29udmVydERvbGxob3VzZVRvQWdlbnQoKSBlbnRyeSBwb2ludHMuIEZpbGUtbGV2ZWwgc2Nhbm5lciBmbGFncyBkZXNwaXRlIHBlci1pbnB1dCBmaXguJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy93ZWIvcm91dGVzL3Blcm1pc3Npb25Sb3V0ZXMudHMnLFxuICAgIHJlYXNvbjogJ05GQyBub3JtYWxpemF0aW9uIGFwcGxpZWQgdG8gdG9vbF9uYW1lIGFuZCBwbGF0Zm9ybSBpbnB1dHMgYXQgSFRUUCBib3VuZGFyeSBiZWZvcmUgZm9yd2FyZGluZyB0byBNQ1BBUUxIYW5kbGVyLmhhbmRsZVJlYWQoKS4gR0VUIC9wZXJtaXNzaW9ucy9zdGF0dXMgaGFzIG5vIHVzZXItc3VwcGxpZWQgc3RyaW5nIHBhcmFtZXRlcnMuIFNjYW5uZXIgbWF5IGZsYWcgZmlsZS1sZXZlbCBkZXNwaXRlIHBlci1pbnB1dCBmaXguJ1xuICB9XG5dO1xuXG4vKipcbiAqIFZhbGlkYXRlIHN1cHByZXNzaW9uIGNvbmZpZ3VyYXRpb24gYXQgc3RhcnR1cFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVTdXBwcmVzc2lvbnMoKTogc3RyaW5nW10ge1xuICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IHNlZW5QYXR0ZXJucyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBcbiAgZm9yIChjb25zdCBzdXBwcmVzc2lvbiBvZiBzdXBwcmVzc2lvbnMpIHtcbiAgICAvLyBDaGVjayBmb3IgZW1wdHkgcmVhc29uc1xuICAgIGlmICghc3VwcHJlc3Npb24ucmVhc29uIHx8IHN1cHByZXNzaW9uLnJlYXNvbi50cmltKCkubGVuZ3RoIDwgMTApIHtcbiAgICAgIGVycm9ycy5wdXNoKGBTdXBwcmVzc2lvbiBmb3IgJHtzdXBwcmVzc2lvbi5ydWxlfSBoYXMgaW5zdWZmaWNpZW50IHJlYXNvbmApO1xuICAgIH1cbiAgICBcbiAgICAvLyBDaGVjayBmb3IgdmFsaWQgcnVsZSBwYXR0ZXJuc1xuICAgIGNvbnN0IHJ1bGVQYXR0ZXJuID0gL14oRE1DUC1TRUMtXFxkezN9fE9XQVNQLVtBLVpdXFxkezJ9LVxcZHszfXxDV0UtXFxkKy1cXGR7M318XFwqKSQvO1xuICAgIGlmICghc3VwcHJlc3Npb24ucnVsZS5tYXRjaChydWxlUGF0dGVybikpIHtcbiAgICAgIGVycm9ycy5wdXNoKGBJbnZhbGlkIHJ1bGUgcGF0dGVybjogJHtzdXBwcmVzc2lvbi5ydWxlfWApO1xuICAgIH1cbiAgICBcbiAgICAvLyBDaGVjayBmb3IgZHVwbGljYXRlIHN1cHByZXNzaW9uc1xuICAgIGNvbnN0IGtleSA9IGAke3N1cHByZXNzaW9uLnJ1bGV9OiR7c3VwcHJlc3Npb24uZmlsZSB8fCAnKid9YDtcbiAgICBpZiAoc2VlblBhdHRlcm5zLmhhcyhrZXkpKSB7XG4gICAgICBlcnJvcnMucHVzaChgRHVwbGljYXRlIHN1cHByZXNzaW9uOiAke2tleX1gKTtcbiAgICB9XG4gICAgc2VlblBhdHRlcm5zLmFkZChrZXkpO1xuICAgIFxuICAgIC8vIFZhbGlkYXRlIGdsb2IgcGF0dGVybnNcbiAgICBpZiAoc3VwcHJlc3Npb24uZmlsZT8uaW5jbHVkZXMoJyoqJykgJiYgIXN1cHByZXNzaW9uLmZpbGUuaW5jbHVkZXMoJyoqLycpKSB7XG4gICAgICBlcnJvcnMucHVzaChgSW52YWxpZCBnbG9iIHBhdHRlcm4gaW4gJHtzdXBwcmVzc2lvbi5maWxlfSAtICoqIG11c3QgYmUgZm9sbG93ZWQgYnkgL2ApO1xuICAgIH1cbiAgfVxuICBcbiAgcmV0dXJuIGVycm9ycztcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGdsb2IgcGF0dGVybiB0byByZWdleCBwYXR0ZXJuIHNhZmVseVxuICogVXNpbmcgYSBwcm9wZXIgZ2xvYi10by1yZWdleCBjb252ZXJzaW9uIHRoYXQgaGFuZGxlcyBhbGwgZWRnZSBjYXNlc1xuICovXG5mdW5jdGlvbiBnbG9iVG9SZWdleChnbG9iOiBzdHJpbmcpOiBSZWdFeHAge1xuICAvLyBDaGVjayBjYWNoZSBmaXJzdFxuICBjb25zdCBjYWNoZWQgPSBjYWNoZS5nZXRSZWdleChnbG9iKTtcbiAgaWYgKGNhY2hlZCkgcmV0dXJuIGNhY2hlZDtcbiAgXG4gIC8vIFNwZWNpYWwgY2FzZTogaWYgZ2xvYiBzdGFydHMgd2l0aCAqLCBpdCBzaG91bGQgbWF0Y2ggYW55dGhpbmcgYXQgdGhlIGJlZ2lubmluZ1xuICBsZXQgcHJvY2Vzc2VkR2xvYiA9IGdsb2I7XG4gIGxldCBwcmVmaXggPSAnJztcbiAgaWYgKGdsb2Iuc3RhcnRzV2l0aCgnKicpICYmICFnbG9iLnN0YXJ0c1dpdGgoJyoqJykpIHtcbiAgICBwcmVmaXggPSAnKD86LiovKT8nOyAgLy8gT3B0aW9uYWwgcGF0aCBwcmVmaXhcbiAgICBwcm9jZXNzZWRHbG9iID0gZ2xvYi5zdWJzdHJpbmcoMSk7XG4gIH1cbiAgXG4gIC8vIEVzY2FwZSBhbGwgcmVnZXggc3BlY2lhbCBjaGFyYWN0ZXJzIGV4Y2VwdCAqIGFuZCAvXG4gIC8vIEZpeGVkOiBQcm9wZXJseSBlc2NhcGUgYmFja3NsYXNoZXMgYW5kIG90aGVyIHNwZWNpYWwgcmVnZXggY2hhcmFjdGVyc1xuICBsZXQgcGF0dGVybiA9IHByb2Nlc3NlZEdsb2IucmVwbGFjZUFsbCgvW1xcXFxeJC4oKSs/e31bXFxdfF0vZywgJ1xcXFwkJicpO1xuXG4gIC8vIEhhbmRsZSBnbG9iIHBhdHRlcm5zIGluIGNvcnJlY3Qgb3JkZXJcbiAgLy8gUmVwbGFjZSAqKiBiZWZvcmUgKiB0byBhdm9pZCBjb25mbGljdHNcbiAgcGF0dGVybiA9IHBhdHRlcm5cbiAgICAucmVwbGFjZUFsbCgnKionLCAnPDxHTE9CU1RBUj4+JykgICAgIC8vIFRlbXBvcmFyeSBwbGFjZWhvbGRlciBmb3IgKipcbiAgICAucmVwbGFjZUFsbCgnKicsICc8PFNUQVI+PicpICAgICAgICAgICAgLy8gVGVtcG9yYXJ5IHBsYWNlaG9sZGVyIGZvciAqXG4gICAgLnJlcGxhY2VBbGwoJzw8R0xPQlNUQVI+Pi8nLCAnKD86LiovKT8nKSAvLyAqKi8gbWF0Y2hlcyBhbnkgbnVtYmVyIG9mIGRpcmVjdG9yaWVzIGluY2x1ZGluZyBub25lXG4gICAgLnJlcGxhY2VBbGwoJzw8R0xPQlNUQVI+PicsICcuKicpICAgICAgIC8vICoqIG1hdGNoZXMgYW55dGhpbmdcbiAgICAucmVwbGFjZUFsbCgnPDxTVEFSPj4nLCAnW14vXSonKSAgICAgICAgLy8gKiBtYXRjaGVzIGFueXRoaW5nIGV4Y2VwdCBkaXJlY3Rvcnkgc2VwYXJhdG9yXG4gICAgLnJlcGxhY2VBbGwoJy8nLCAnXFxcXC8nKTsgICAgICAgICAgICAgICAgLy8gRXNjYXBlIGZvcndhcmQgc2xhc2hlc1xuICBcbiAgLy8gQ29tYmluZSBwcmVmaXggYW5kIHBhdHRlcm5cbiAgY29uc3QgZnVsbFBhdHRlcm4gPSBwcmVmaXggKyBwYXR0ZXJuO1xuICBcbiAgLy8gQWRkIGFuY2hvcnMgdG8gZW5zdXJlIGZ1bGwgcGF0aCBtYXRjaFxuICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoYF4ke2Z1bGxQYXR0ZXJufSRgKTtcbiAgXG4gIC8vIENhY2hlIHRoZSBjb21waWxlZCByZWdleFxuICBjYWNoZS5zZXRSZWdleChnbG9iLCByZWdleCk7XG4gIFxuICByZXR1cm4gcmVnZXg7XG59XG5cbi8qKlxuICogTm9ybWFsaXplIGZpbGUgcGF0aCBmb3IgY29uc2lzdGVudCBtYXRjaGluZ1xuICogSGFuZGxlcyBib3RoIGFic29sdXRlIGFuZCByZWxhdGl2ZSBwYXRocyBhY3Jvc3MgZGlmZmVyZW50IHBsYXRmb3Jtc1xuICovXG5mdW5jdGlvbiBub3JtYWxpemVQYXRoKGZpbGVQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBDb252ZXJ0IGJhY2tzbGFzaGVzIHRvIGZvcndhcmQgc2xhc2hlcyBmb3IgV2luZG93cyBwYXRoc1xuICBsZXQgbm9ybWFsaXplZCA9IGZpbGVQYXRoLnJlcGxhY2VBbGwoJ1xcXFwnLCAnLycpO1xuXG4gIC8vIFJlbW92ZSBkdXBsaWNhdGUgc2xhc2hlc1xuICBub3JtYWxpemVkID0gbm9ybWFsaXplZC5yZXBsYWNlQWxsKC9cXC8rL2csICcvJyk7XG4gIFxuICAvLyBSZW1vdmUgdHJhaWxpbmcgc2xhc2ggaWYgcHJlc2VudFxuICBpZiAobm9ybWFsaXplZC5lbmRzV2l0aCgnLycpICYmIG5vcm1hbGl6ZWQubGVuZ3RoID4gMSkge1xuICAgIG5vcm1hbGl6ZWQgPSBub3JtYWxpemVkLnNsaWNlKDAsIC0xKTtcbiAgfVxuICBcbiAgcmV0dXJuIG5vcm1hbGl6ZWQ7XG59XG5cbi8qKlxuICogRXh0cmFjdCByZWxhdGl2ZSBwYXRoIGZyb20gYWJzb2x1dGUgcGF0aFxuICogSGFuZGxlcyB2YXJpb3VzIENJL0NEIGFuZCBsb2NhbCBkZXZlbG9wbWVudCBwYXRoIGZvcm1hdHNcbiAqL1xuZnVuY3Rpb24gZ2V0UmVsYXRpdmVQYXRoKGFic29sdXRlUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZVBhdGgoYWJzb2x1dGVQYXRoKTtcbiAgXG4gIC8vIElmIGFscmVhZHkgYSByZWxhdGl2ZSBwYXRoLCByZXR1cm4gYXMtaXNcbiAgaWYgKCFub3JtYWxpemVkLnN0YXJ0c1dpdGgoJy8nKSAmJiAhbm9ybWFsaXplZC5tYXRjaCgvXltBLVpdOi9pKSkge1xuICAgIHJldHVybiBub3JtYWxpemVkO1xuICB9XG4gIFxuICAvLyBEZWZpbmUgY29tbW9uIHByb2plY3Qgc291cmNlIGRpcmVjdG9yaWVzXG4gIGNvbnN0IHByb2plY3REaXJzID0gWydzcmMvJywgJ19fdGVzdHNfXy8nLCAnc2NyaXB0cy8nLCAnZG9jcy8nLCAndGVzdHMvJywgJ3Rlc3QtYXJjaGl2ZS8nLCAnbGliLyddO1xuICBcbiAgLy8gRmluZCB0aGUgcG9zaXRpb24gb2YgY29tbW9uIHByb2plY3QgZGlyZWN0b3JpZXMgaW4gdGhlIHBhdGhcbiAgbGV0IGJlc3RNYXRjaCA9IHsgaW5kZXg6IC0xLCBkaXI6ICcnLCByZWxhdGl2ZVBhdGg6ICcnIH07XG4gIFxuICBmb3IgKGNvbnN0IGRpciBvZiBwcm9qZWN0RGlycykge1xuICAgIC8vIExvb2sgZm9yIC9kaXIgcGF0dGVybiAod2l0aCBsZWFkaW5nIHNsYXNoIHRvIGF2b2lkIGZhbHNlIG1hdGNoZXMpXG4gICAgY29uc3Qgc2VhcmNoUGF0dGVybiA9IGAvJHtkaXJ9YDtcbiAgICBjb25zdCBpbmRleCA9IG5vcm1hbGl6ZWQubGFzdEluZGV4T2Yoc2VhcmNoUGF0dGVybik7XG4gICAgXG4gICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgIC8vIEV4dHJhY3QgZXZlcnl0aGluZyBhZnRlciB0aGUgcGFyZW50IG9mIHRoaXMgZGlyZWN0b3J5XG4gICAgICAvLyBGb3IgZXhhbXBsZTogL2hvbWUvdXNlci9wcm9qZWN0L3NyYy9maWxlLnRzIC0+IHNyYy9maWxlLnRzXG4gICAgICBjb25zdCBkaXJTdGFydEluZGV4ID0gaW5kZXggKyAxOyAvLyBTa2lwIHRoZSBsZWFkaW5nIHNsYXNoXG4gICAgICBjb25zdCByZWxhdGl2ZVBhdGggPSBub3JtYWxpemVkLnN1YnN0cmluZyhkaXJTdGFydEluZGV4KTtcbiAgICAgIFxuICAgICAgLy8gVmVyaWZ5IHRoaXMgbG9va3MgbGlrZSBhIHZhbGlkIHByb2plY3QgZmlsZVxuICAgICAgaWYgKHJlbGF0aXZlUGF0aC5zdGFydHNXaXRoKGRpcikgJiYgcmVsYXRpdmVQYXRoLmluY2x1ZGVzKCcuJykpIHtcbiAgICAgICAgLy8gS2VlcCB0aGUgbWF0Y2ggdGhhdCBhcHBlYXJzIGxhdGVzdCBpbiB0aGUgcGF0aCAobW9zdCBzcGVjaWZpYylcbiAgICAgICAgaWYgKGluZGV4ID4gYmVzdE1hdGNoLmluZGV4KSB7XG4gICAgICAgICAgYmVzdE1hdGNoID0geyBpbmRleCwgZGlyLCByZWxhdGl2ZVBhdGggfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBcbiAgLy8gSWYgd2UgZm91bmQgYSBtYXRjaCwgcmV0dXJuIGl0XG4gIGlmIChiZXN0TWF0Y2guaW5kZXggPj0gMCkge1xuICAgIHJldHVybiBiZXN0TWF0Y2gucmVsYXRpdmVQYXRoO1xuICB9XG4gIFxuICAvLyBGYWxsYmFjazogVHJ5IHRvIGZpbmQgY29tbW9uIGZpbGUgcGF0dGVybnMgdGhhdCBpbmRpY2F0ZSBwcm9qZWN0IGZpbGVzXG4gIGNvbnN0IGZpbGVQYXR0ZXJucyA9IFtcbiAgICAvXFwvKHNyY3xfX3Rlc3RzX198c2NyaXB0c3x0ZXN0fHRlc3RzfGxpYilcXC8uKlxcLltqdF1zeD8kLyxcbiAgICAvXFwvKHNyY3xfX3Rlc3RzX198c2NyaXB0c3x0ZXN0fHRlc3RzfGxpYilcXC8uKlxcLmpzb24kLyxcbiAgICAvXFwvKHNyY3xfX3Rlc3RzX198c2NyaXB0c3x0ZXN0fHRlc3RzfGxpYilcXC8uKlxcLnlhP21sJC8sXG4gICAgL1xcL3BhY2thZ2VcXC5qc29uJC8sXG4gICAgL1xcL3BhY2thZ2UtbG9ja1xcLmpzb24kLyxcbiAgICAvXFwvdHNjb25maWcuKlxcLmpzb24kLyxcbiAgICAvXFwvXFwuLipyY1xcLmpzb24kLyAgLy8gLmVzbGludHJjLmpzb24sIGV0Yy5cbiAgXTtcbiAgXG4gIGZvciAoY29uc3QgcGF0dGVybiBvZiBmaWxlUGF0dGVybnMpIHtcbiAgICBjb25zdCBtYXRjaCA9IG5vcm1hbGl6ZWQubWF0Y2gocGF0dGVybik7XG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICAvLyBGaW5kIHdoZXJlIHRoZSBtYXRjaCBzdGFydHMgYW5kIGV4dHJhY3QgZnJvbSB0aGVyZVxuICAgICAgY29uc3QgbWF0Y2hJbmRleCA9IG5vcm1hbGl6ZWQuaW5kZXhPZihtYXRjaFswXSk7XG4gICAgICBpZiAobWF0Y2hJbmRleCA+PSAwKSB7XG4gICAgICAgIHJldHVybiBub3JtYWxpemVkLnN1YnN0cmluZyhtYXRjaEluZGV4ICsgMSk7IC8vIFNraXAgbGVhZGluZyAvXG4gICAgICB9XG4gICAgfVxuICB9XG4gIFxuICAvLyBMYXN0IHJlc29ydDogaWYgcGF0aCBjb250YWlucyBjb21tb24gZXh0ZW5zaW9ucywgdHJ5IHRvIGV4dHJhY3QgYSByZWFzb25hYmxlIHJlbGF0aXZlIHBhdGhcbiAgaWYgKG5vcm1hbGl6ZWQubWF0Y2goL1xcLih0c3xqc3x0c3h8anN4fGpzb258eWFtbHx5bWwpJC8pKSB7XG4gICAgLy8gRmluZCB0aGUgbGFzdCBzZWdtZW50IHRoYXQgbG9va3MgbGlrZSBhIHByb2plY3QgZGlyZWN0b3J5XG4gICAgY29uc3Qgc2VnbWVudHMgPSBub3JtYWxpemVkLnNwbGl0KCcvJyk7XG4gICAgZm9yIChsZXQgaSA9IHNlZ21lbnRzLmxlbmd0aCAtIDI7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBpZiAocHJvamVjdERpcnMuc29tZShkaXIgPT4gZGlyLnN0YXJ0c1dpdGgoc2VnbWVudHNbaV0pKSkge1xuICAgICAgICByZXR1cm4gc2VnbWVudHMuc2xpY2UoaSkuam9pbignLycpO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICAvLyBGb3Igcm9vdC1sZXZlbCBmaWxlcyBsaWtlIHBhY2thZ2UtbG9jay5qc29uLCBqdXN0IHJldHVybiB0aGUgZmlsZW5hbWVcbiAgICBjb25zdCBmaWxlbmFtZSA9IHNlZ21lbnRzW3NlZ21lbnRzLmxlbmd0aCAtIDFdO1xuICAgIGlmIChmaWxlbmFtZSAmJiBmaWxlbmFtZS5pbmNsdWRlcygnLicpKSB7XG4gICAgICByZXR1cm4gZmlsZW5hbWU7XG4gICAgfVxuICB9XG4gIFxuICAvLyBSZXR1cm4gdGhlIG5vcm1hbGl6ZWQgcGF0aCBpZiB3ZSBjYW4ndCBleHRyYWN0IHJlbGF0aXZlXG4gIHJldHVybiBub3JtYWxpemVkO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgZmluZGluZyBzaG91bGQgYmUgc3VwcHJlc3NlZFxuICogT3B0aW1pemVkIHdpdGggY2FjaGluZyBhbmQgZWFybHkgcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2hvdWxkU3VwcHJlc3MocnVsZUlkOiBzdHJpbmcsIGZpbGVQYXRoPzogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmICghZmlsZVBhdGgpIHJldHVybiBmYWxzZTtcbiAgXG4gIC8vIE5vcm1hbGl6ZSBwYXRocyBmb3IgY29uc2lzdGVudCBtYXRjaGluZ1xuICBjb25zdCBub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZVBhdGgoZmlsZVBhdGgpO1xuICBjb25zdCByZWxhdGl2ZVBhdGggPSBnZXRSZWxhdGl2ZVBhdGgobm9ybWFsaXplZFBhdGgpO1xuICBcbiAgLy8gQ2hlY2sgY2FjaGUgZmlyc3RcbiAgY29uc3QgY2FjaGVkID0gY2FjaGUuZ2V0KHJ1bGVJZCwgcmVsYXRpdmVQYXRoKTtcbiAgaWYgKGNhY2hlZCAhPT0gdW5kZWZpbmVkKSByZXR1cm4gY2FjaGVkO1xuICBcbiAgLy8gUHJvY2VzcyBzdXBwcmVzc2lvbnMgd2l0aCBlYXJseSByZXR1cm5zXG4gIGZvciAoY29uc3Qgc3VwcHJlc3Npb24gb2Ygc3VwcHJlc3Npb25zKSB7XG4gICAgLy8gU2tpcCBpZiBydWxlIGRvZXNuJ3QgbWF0Y2hcbiAgICBpZiAoc3VwcHJlc3Npb24ucnVsZSAhPT0gJyonICYmIHN1cHByZXNzaW9uLnJ1bGUgIT09IHJ1bGVJZCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIFxuICAgIC8vIEhhbmRsZSBnbG9iYWwgc3VwcHJlc3Npb25zIChubyBmaWxlIHNwZWNpZmllZClcbiAgICBpZiAoIXN1cHByZXNzaW9uLmZpbGUpIHtcbiAgICAgIGNhY2hlLnNldChydWxlSWQsIHJlbGF0aXZlUGF0aCwgdHJ1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgXG4gICAgLy8gQ2hlY2sgZXhhY3QgZmlsZSBtYXRjaCAobW9zdCBjb21tb24gY2FzZSlcbiAgICBpZiAoc3VwcHJlc3Npb24uZmlsZSA9PT0gcmVsYXRpdmVQYXRoIHx8IHN1cHByZXNzaW9uLmZpbGUgPT09IG5vcm1hbGl6ZWRQYXRoKSB7XG4gICAgICBjYWNoZS5zZXQocnVsZUlkLCByZWxhdGl2ZVBhdGgsIHRydWUpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIFxuICAgIC8vIENoZWNrIHBhdHRlcm4gbWF0Y2ggb25seSBpZiBmaWxlIGNvbnRhaW5zIHdpbGRjYXJkc1xuICAgIGlmIChzdXBwcmVzc2lvbi5maWxlLmluY2x1ZGVzKCcqJykpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlZ2V4ID0gZ2xvYlRvUmVnZXgoc3VwcHJlc3Npb24uZmlsZSk7XG4gICAgICAgIGlmIChyZWdleC50ZXN0KHJlbGF0aXZlUGF0aCkgfHwgcmVnZXgudGVzdChub3JtYWxpemVkUGF0aCkpIHtcbiAgICAgICAgICBjYWNoZS5zZXQocnVsZUlkLCByZWxhdGl2ZVBhdGgsIHRydWUpO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dnZXIuZXJyb3IoYEludmFsaWQgc3VwcHJlc3Npb24gcGF0dGVybiBcIiR7c3VwcHJlc3Npb24uZmlsZX1cIjpgLCBlcnJvcik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIFxuICAvLyBOb3Qgc3VwcHJlc3NlZFxuICBjYWNoZS5zZXQocnVsZUlkLCByZWxhdGl2ZVBhdGgsIGZhbHNlKTtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIENsZWFyIHN1cHByZXNzaW9uIGNhY2hlICh1c2VmdWwgZm9yIHRlc3RpbmcpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGVhclN1cHByZXNzaW9uQ2FjaGUoKTogdm9pZCB7XG4gIGNhY2hlLmNsZWFyKCk7XG59XG5cbi8qKlxuICogR2V0IHN1cHByZXNzaW9uIHN0YXRpc3RpY3MgZm9yIHJlcG9ydGluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3VwcHJlc3Npb25TdGF0cygpOiB7IFxuICB0b3RhbDogbnVtYmVyOyBcbiAgYnlSdWxlOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuICBieUNhdGVnb3J5OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xufSB7XG4gIGNvbnN0IHN0YXRzID0ge1xuICAgIHRvdGFsOiBzdXBwcmVzc2lvbnMubGVuZ3RoLFxuICAgIGJ5UnVsZToge30gYXMgUmVjb3JkPHN0cmluZywgbnVtYmVyPixcbiAgICBieUNhdGVnb3J5OiB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+XG4gIH07XG4gIFxuICBmb3IgKGNvbnN0IHN1cHByZXNzaW9uIG9mIHN1cHByZXNzaW9ucykge1xuICAgIC8vIENvdW50IGJ5IHJ1bGVcbiAgICBzdGF0cy5ieVJ1bGVbc3VwcHJlc3Npb24ucnVsZV0gPSAoc3RhdHMuYnlSdWxlW3N1cHByZXNzaW9uLnJ1bGVdIHx8IDApICsgMTtcbiAgICBcbiAgICAvLyBDb3VudCBieSBjYXRlZ29yeSAoZXh0cmFjdCBmcm9tIHJ1bGUgcHJlZml4KVxuICAgIGNvbnN0IGNhdGVnb3J5ID0gc3VwcHJlc3Npb24ucnVsZS5zcGxpdCgnLScpWzBdO1xuICAgIHN0YXRzLmJ5Q2F0ZWdvcnlbY2F0ZWdvcnldID0gKHN0YXRzLmJ5Q2F0ZWdvcnlbY2F0ZWdvcnldIHx8IDApICsgMTtcbiAgfVxuICBcbiAgcmV0dXJuIHN0YXRzO1xufVxuXG4vLyBWYWxpZGF0ZSBzdXBwcmVzc2lvbnMgb24gbW9kdWxlIGxvYWRcbmNvbnN0IHZhbGlkYXRpb25FcnJvcnMgPSB2YWxpZGF0ZVN1cHByZXNzaW9ucygpO1xuaWYgKHZhbGlkYXRpb25FcnJvcnMubGVuZ3RoID4gMCkge1xuICBsb2dnZXIud2FybignU3VwcHJlc3Npb24gY29uZmlndXJhdGlvbiB3YXJuaW5nczonLCB2YWxpZGF0aW9uRXJyb3JzKTtcbn1cbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/security/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;CAkC3B,CAAC;AAGF,eAAO,MAAM,mBAAmB;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/security/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;CAkC3B,CAAC;AAGF,eAAO,MAAM,mBAAmB;;;;;;;;;;CA4B/B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAwCA,CAAC"}
|