@dollhousemcp/mcp-server 2.0.39 → 2.0.41
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 +16 -0
- package/dist/cache/CollectionCache.d.ts +1 -0
- package/dist/cache/CollectionCache.d.ts.map +1 -1
- package/dist/cache/CollectionCache.js +7 -16
- package/dist/cache/CollectionIndexCache.d.ts +1 -1
- package/dist/cache/CollectionIndexCache.d.ts.map +1 -1
- package/dist/cache/CollectionIndexCache.js +3 -2
- package/dist/cache/cachePaths.d.ts +7 -0
- package/dist/cache/cachePaths.d.ts.map +1 -0
- package/dist/cache/cachePaths.js +15 -0
- package/dist/di/Container.d.ts.map +1 -1
- package/dist/di/Container.js +11 -8
- package/dist/elements/agents/AgentManager.d.ts +146 -7
- package/dist/elements/agents/AgentManager.d.ts.map +1 -1
- package/dist/elements/agents/AgentManager.js +329 -51
- package/dist/elements/base/BaseElementManager.d.ts +18 -2
- package/dist/elements/base/BaseElementManager.d.ts.map +1 -1
- package/dist/elements/base/BaseElementManager.js +39 -20
- package/dist/elements/memories/Memory.d.ts +7 -0
- package/dist/elements/memories/Memory.d.ts.map +1 -1
- package/dist/elements/memories/Memory.js +68 -34
- package/dist/elements/memories/MemoryManager.d.ts.map +1 -1
- package/dist/elements/memories/MemoryManager.js +10 -2
- package/dist/elements/memories/memoryYamlValidation.d.ts +6 -0
- package/dist/elements/memories/memoryYamlValidation.d.ts.map +1 -0
- package/dist/elements/memories/memoryYamlValidation.js +25 -0
- package/dist/generated/version.d.ts +2 -2
- package/dist/generated/version.js +3 -3
- package/dist/handlers/CollectionHandler.d.ts.map +1 -1
- package/dist/handlers/CollectionHandler.js +2 -3
- package/dist/handlers/ElementCRUDHandler.d.ts +36 -8
- package/dist/handlers/ElementCRUDHandler.d.ts.map +1 -1
- package/dist/handlers/ElementCRUDHandler.js +227 -96
- package/dist/handlers/mcp-aql/MCPAQLHandler.d.ts +1 -1
- package/dist/handlers/mcp-aql/MCPAQLHandler.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/MCPAQLHandler.js +137 -73
- package/dist/handlers/mcp-aql/OperationSchema.js +4 -4
- package/dist/handlers/mcp-aql/policies/ElementPolicies.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/policies/ElementPolicies.js +7 -5
- package/dist/handlers/strategies/AgentActivationStrategy.d.ts.map +1 -1
- package/dist/handlers/strategies/AgentActivationStrategy.js +5 -2
- package/dist/handlers/strategies/ElementActivationStrategy.d.ts +2 -0
- package/dist/handlers/strategies/ElementActivationStrategy.d.ts.map +1 -1
- package/dist/handlers/strategies/ElementActivationStrategy.js +1 -1
- package/dist/index.d.ts +7 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/portfolio/PortfolioManager.d.ts +5 -1
- package/dist/portfolio/PortfolioManager.d.ts.map +1 -1
- package/dist/portfolio/PortfolioManager.js +9 -3
- package/dist/security/contentValidator.d.ts +9 -1
- package/dist/security/contentValidator.d.ts.map +1 -1
- package/dist/security/contentValidator.js +24 -3
- package/dist/security/secureYamlParser.d.ts +3 -1
- package/dist/security/secureYamlParser.d.ts.map +1 -1
- package/dist/security/secureYamlParser.js +3 -3
- package/dist/security/securityMonitor.d.ts +1 -1
- package/dist/security/securityMonitor.d.ts.map +1 -1
- package/dist/security/securityMonitor.js +1 -1
- package/dist/security/validation/BackgroundValidator.d.ts.map +1 -1
- package/dist/security/validation/BackgroundValidator.js +6 -4
- package/dist/services/ActivationStore.d.ts +5 -4
- package/dist/services/ActivationStore.d.ts.map +1 -1
- package/dist/services/ActivationStore.js +35 -9
- package/dist/services/PolicyExportService.d.ts +8 -2
- package/dist/services/PolicyExportService.d.ts.map +1 -1
- package/dist/services/PolicyExportService.js +37 -6
- package/dist/storage/ElementStorageLayer.d.ts +3 -3
- package/dist/storage/ElementStorageLayer.d.ts.map +1 -1
- package/dist/storage/ElementStorageLayer.js +33 -7
- package/dist/storage/IStorageLayer.d.ts +8 -1
- package/dist/storage/IStorageLayer.d.ts.map +1 -1
- package/dist/storage/IStorageLayer.js +1 -1
- package/dist/storage/MemoryMetadataExtractor.d.ts.map +1 -1
- package/dist/storage/MemoryMetadataExtractor.js +7 -2
- package/dist/storage/MemoryStorageLayer.d.ts +4 -3
- package/dist/storage/MemoryStorageLayer.d.ts.map +1 -1
- package/dist/storage/MemoryStorageLayer.js +43 -13
- package/dist/storage/types.d.ts +7 -0
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/storage/types.js +17 -2
- package/dist/utils/filesystem.d.ts +6 -0
- package/dist/utils/filesystem.d.ts.map +1 -1
- package/dist/utils/filesystem.js +22 -1
- package/oauth-helper.mjs +19 -26
- package/package.json +9 -9
- package/server.json +2 -2
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* for tracking and alerting on security-related events.
|
|
6
6
|
*/
|
|
7
7
|
export interface SecurityEvent {
|
|
8
|
-
type: 'CONTENT_INJECTION_ATTEMPT' | 'YAML_INJECTION_ATTEMPT' | 'PATH_TRAVERSAL_ATTEMPT' | 'TOKEN_VALIDATION_FAILURE' | 'UPDATE_SECURITY_VIOLATION' | 'RATE_LIMIT_EXCEEDED' | 'YAML_PARSING_WARNING' | 'YAML_PARSE_SUCCESS' | 'TOKEN_VALIDATION_SUCCESS' | 'PATH_VALIDATION_SUCCESS' | 'RATE_LIMIT_WARNING' | 'TOKEN_CACHE_CLEARED' | 'YAML_UNICODE_ATTACK' | 'UNICODE_DIRECTION_OVERRIDE' | 'UNICODE_MIXED_SCRIPT' | 'UNICODE_VALIDATION_ERROR' | 'CONTENT_SIZE_EXCEEDED' | 'INCLUDE_DEPTH_EXCEEDED' | 'TEMPLATE_RENDERED' | 'TEMPLATE_INCLUDE' | 'TEMPLATE_LOADED' | 'TEMPLATE_SAVED' | 'TEMPLATE_DELETED' | 'MEMORY_CREATED' | 'MEMORY_ADDED' | 'MEMORY_SEARCHED' | 'SENSITIVE_MEMORY_DELETED' | 'RETENTION_POLICY_ENFORCED' | 'MEMORY_CLEARED' | 'MEMORY_LOADED' | 'MEMORY_SAVED' | 'MEMORY_DELETED' | 'MEMORY_LOAD_FAILED' | 'MEMORY_SAVE_FAILED' | 'MEMORY_LIST_ITEM_FAILED' | 'MEMORY_IMPORT_FAILED' | 'MEMORY_DESERIALIZE_FAILED' | 'MEMORY_INTEGRITY_VIOLATION' | 'MEMORY_UNICODE_VALIDATION_FAILED' | 'MEMORY_DUPLICATE_DETECTED' | 'SEED_MEMORY_INSTALLED' | 'SEED_MEMORY_INSTALLATION_FAILED' | 'ELEMENT_CREATED' | 'ELEMENT_LOADED' | 'ELEMENT_EDITED' | 'ELEMENT_ACTIVATED' | 'ELEMENT_DEACTIVATED' | 'ELEMENT_VALIDATED' | 'ELEMENT_DELETED' | 'AGENT_ACTIVATED' | 'AGENT_ACTIVATION_FAILED' | 'AGENT_ACTIVATION_ROLLBACK' | 'AGENT_DEACTIVATED' | 'AGENT_EXECUTED' | 'CONFIG_UPDATED' | 'IDENTITY_CHANGED' | 'OPERATION_COMPLETED' | 'OPERATION_FAILED' | 'BATCH_COMPLETED' | 'BATCH_REJECTED' | 'CONFIRMATION_RECORDED' | 'GATEKEEPER_DECISION' | 'AUTH_FLOW_INITIATED' | 'AGENT_DECISION' | 'RULE_ENGINE_CONFIG_UPDATE' | 'RULE_ENGINE_CONFIG_VALIDATION_ERROR' | 'GOAL_TEMPLATE_APPLIED' | 'GOAL_TEMPLATE_VALIDATION' | 'ENSEMBLE_CIRCULAR_DEPENDENCY' | 'ENSEMBLE_RESOURCE_LIMIT_EXCEEDED' | 'ENSEMBLE_ACTIVATION_TIMEOUT' | 'ENSEMBLE_ACTIVATION_FAILED' | 'ENSEMBLE_SUSPICIOUS_CONDITION' | 'ENSEMBLE_CONDITION_EVALUATION_FAILED' | 'ENSEMBLE_NESTED_DEPTH_EXCEEDED' | 'ENSEMBLE_CONTEXT_SIZE_EXCEEDED' | 'ENSEMBLE_CONTEXT_VALUE_TOO_LARGE' | 'ENSEMBLE_SAVED' | 'ENSEMBLE_IMPORTED' | 'ENSEMBLE_DELETED' | 'PORTFOLIO_INITIALIZATION' | 'PORTFOLIO_POPULATED' | 'FILE_COPIED' | 'DIRECTORY_MIGRATION' | 'PORTFOLIO_CACHE_INVALIDATION' | 'PORTFOLIO_FETCH_SUCCESS' | 'TEST_DATA_BLOCKED' | 'TEST_PATH_SECURITY_RISK' | 'TEST_PRODUCTION_ACCESS_BLOCKED' | 'TEST_PATH_INVALID' | 'TEST_ENVIRONMENT_PRODUCTION_PATH' | 'TEST_ENVIRONMENT_DEPRECATED_VAR' | 'TOOL_CACHE_INVALIDATED' | 'FILE_READ' | 'FILE_WRITTEN' | 'FILE_DELETED' | 'DANGER_ZONE_TRIGGERED' | 'DANGER_ZONE_OPERATION' | 'AUTONOMY_DENIED' | 'AUTONOMY_PAUSED' | 'SAFETY_EVALUATION_FAILURE' | 'VERIFICATION_ATTEMPTED' | 'VERIFICATION_SUCCEEDED' | 'VERIFICATION_FAILED' | 'VERIFICATION_EXPIRED' | 'AGENT_AUTO_CONTINUED' | 'AGENT_STEP_RETRIED' | 'AGENT_AUTO_RESTARTED' | 'AGENT_RESILIENCE_LIMIT_REACHED' | 'PERMISSION_PROMPT_DENIED' | 'CLI_APPROVAL_REQUESTED' | 'CLI_APPROVAL_GRANTED' | 'CLI_APPROVAL_CONSUMED' | 'TOTP_ENROLLED' | 'TOTP_DISABLED' | 'TOTP_BACKUP_CODE_CONSUMED' | 'TOTP_VERIFICATION_FAILED' | 'CONSOLE_TOKEN_ROTATED';
|
|
8
|
+
type: 'CONTENT_INJECTION_ATTEMPT' | 'YAML_INJECTION_ATTEMPT' | 'PATH_TRAVERSAL_ATTEMPT' | 'TOKEN_VALIDATION_FAILURE' | 'UPDATE_SECURITY_VIOLATION' | 'RATE_LIMIT_EXCEEDED' | 'YAML_PARSING_WARNING' | 'YAML_PARSE_SUCCESS' | 'TOKEN_VALIDATION_SUCCESS' | 'PATH_VALIDATION_SUCCESS' | 'RATE_LIMIT_WARNING' | 'TOKEN_CACHE_CLEARED' | 'YAML_UNICODE_ATTACK' | 'UNICODE_DIRECTION_OVERRIDE' | 'UNICODE_MIXED_SCRIPT' | 'UNICODE_VALIDATION_ERROR' | 'CONTENT_SIZE_EXCEEDED' | 'INCLUDE_DEPTH_EXCEEDED' | 'TEMPLATE_RENDERED' | 'TEMPLATE_INCLUDE' | 'TEMPLATE_LOADED' | 'TEMPLATE_SAVED' | 'TEMPLATE_DELETED' | 'MEMORY_CREATED' | 'MEMORY_ADDED' | 'MEMORY_SEARCHED' | 'SENSITIVE_MEMORY_DELETED' | 'RETENTION_POLICY_ENFORCED' | 'MEMORY_CLEARED' | 'MEMORY_LOADED' | 'MEMORY_SAVED' | 'MEMORY_DELETED' | 'MEMORY_LOAD_FAILED' | 'MEMORY_SAVE_FAILED' | 'MEMORY_LIST_ITEM_FAILED' | 'MEMORY_IMPORT_FAILED' | 'MEMORY_DESERIALIZE_FAILED' | 'MEMORY_INTEGRITY_VIOLATION' | 'MEMORY_UNICODE_VALIDATION_FAILED' | 'MEMORY_DUPLICATE_DETECTED' | 'SEED_MEMORY_INSTALLED' | 'SEED_MEMORY_INSTALLATION_FAILED' | 'ELEMENT_CREATED' | 'ELEMENT_LOADED' | 'ELEMENT_EDITED' | 'ELEMENT_ACTIVATED' | 'ELEMENT_DEACTIVATED' | 'ELEMENT_VALIDATED' | 'ELEMENT_DELETED' | 'AGENT_ACTIVATED' | 'AGENT_ACTIVATION_FAILED' | 'AGENT_ACTIVATION_ROLLBACK' | 'AGENT_DEACTIVATED' | 'AGENT_EXECUTED' | 'AGENT_POLICY_RECOVERED' | 'CONFIG_UPDATED' | 'IDENTITY_CHANGED' | 'OPERATION_COMPLETED' | 'OPERATION_FAILED' | 'BATCH_COMPLETED' | 'BATCH_REJECTED' | 'CONFIRMATION_RECORDED' | 'GATEKEEPER_DECISION' | 'AUTH_FLOW_INITIATED' | 'AGENT_DECISION' | 'RULE_ENGINE_CONFIG_UPDATE' | 'RULE_ENGINE_CONFIG_VALIDATION_ERROR' | 'GOAL_TEMPLATE_APPLIED' | 'GOAL_TEMPLATE_VALIDATION' | 'ENSEMBLE_CIRCULAR_DEPENDENCY' | 'ENSEMBLE_RESOURCE_LIMIT_EXCEEDED' | 'ENSEMBLE_ACTIVATION_TIMEOUT' | 'ENSEMBLE_ACTIVATION_FAILED' | 'ENSEMBLE_SUSPICIOUS_CONDITION' | 'ENSEMBLE_CONDITION_EVALUATION_FAILED' | 'ENSEMBLE_NESTED_DEPTH_EXCEEDED' | 'ENSEMBLE_CONTEXT_SIZE_EXCEEDED' | 'ENSEMBLE_CONTEXT_VALUE_TOO_LARGE' | 'ENSEMBLE_SAVED' | 'ENSEMBLE_IMPORTED' | 'ENSEMBLE_DELETED' | 'PORTFOLIO_INITIALIZATION' | 'PORTFOLIO_POPULATED' | 'FILE_COPIED' | 'DIRECTORY_MIGRATION' | 'PORTFOLIO_CACHE_INVALIDATION' | 'PORTFOLIO_FETCH_SUCCESS' | 'TEST_DATA_BLOCKED' | 'TEST_PATH_SECURITY_RISK' | 'TEST_PRODUCTION_ACCESS_BLOCKED' | 'TEST_PATH_INVALID' | 'TEST_ENVIRONMENT_PRODUCTION_PATH' | 'TEST_ENVIRONMENT_DEPRECATED_VAR' | 'TOOL_CACHE_INVALIDATED' | 'FILE_READ' | 'FILE_WRITTEN' | 'FILE_DELETED' | 'DANGER_ZONE_TRIGGERED' | 'DANGER_ZONE_OPERATION' | 'AUTONOMY_DENIED' | 'AUTONOMY_PAUSED' | 'SAFETY_EVALUATION_FAILURE' | 'VERIFICATION_ATTEMPTED' | 'VERIFICATION_SUCCEEDED' | 'VERIFICATION_FAILED' | 'VERIFICATION_EXPIRED' | 'AGENT_AUTO_CONTINUED' | 'AGENT_STEP_RETRIED' | 'AGENT_AUTO_RESTARTED' | 'AGENT_RESILIENCE_LIMIT_REACHED' | 'PERMISSION_PROMPT_DENIED' | 'CLI_APPROVAL_REQUESTED' | 'CLI_APPROVAL_GRANTED' | 'CLI_APPROVAL_CONSUMED' | 'TOTP_ENROLLED' | 'TOTP_DISABLED' | 'TOTP_BACKUP_CODE_CONSUMED' | 'TOTP_VERIFICATION_FAILED' | 'CONSOLE_TOKEN_ROTATED';
|
|
9
9
|
severity: 'LOW' | 'MEDIUM' | 'HIGH' | 'CRITICAL';
|
|
10
10
|
source: string;
|
|
11
11
|
details: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"securityMonitor.d.ts","sourceRoot":"","sources":["../../src/security/securityMonitor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,2BAA2B,GAAG,wBAAwB,GAAG,wBAAwB,GACjF,0BAA0B,GAAG,2BAA2B,GAAG,qBAAqB,GAChF,sBAAsB,GAAG,oBAAoB,GAAG,0BAA0B,GAC1E,yBAAyB,GAAG,oBAAoB,GAAG,qBAAqB,GACxE,qBAAqB,GAAG,4BAA4B,GAAG,sBAAsB,GAC7E,0BAA0B,GAAG,uBAAuB,GAAG,wBAAwB,GAC/E,mBAAmB,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,gBAAgB,GAC/E,kBAAkB,GAAG,gBAAgB,GAAG,cAAc,GAAG,iBAAiB,GAC1E,0BAA0B,GAAG,2BAA2B,GAAG,gBAAgB,GAC3E,eAAe,GAAG,cAAc,GAAG,gBAAgB,GAAG,oBAAoB,GAC1E,oBAAoB,GAAG,yBAAyB,GAAG,sBAAsB,GACzE,2BAA2B,GAAG,4BAA4B,GAAG,kCAAkC,GAC/F,2BAA2B,GAAG,uBAAuB,GAAG,iCAAiC,GACzF,iBAAiB,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,mBAAmB,GAAG,qBAAqB,GACrG,mBAAmB,GAAG,iBAAiB,GACvC,iBAAiB,GAAG,yBAAyB,GAAG,2BAA2B,GAC3E,mBAAmB,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"securityMonitor.d.ts","sourceRoot":"","sources":["../../src/security/securityMonitor.ts"],"names":[],"mappings":"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"}
|
|
@@ -126,4 +126,4 @@ export class SecurityMonitor {
|
|
|
126
126
|
this.dedup.clear();
|
|
127
127
|
}
|
|
128
128
|
}
|
|
129
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHlNb25pdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlY3VyaXR5L3NlY3VyaXR5TW9uaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUE2RGxFLHlFQUF5RTtBQUN6RSxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUM7QUFFL0Isc0RBQXNEO0FBQ3RELE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQztBQUUzQixNQUFNLE9BQU8sZUFBZTtJQUNsQixNQUFNLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztJQUN0QixNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksYUFBYSxDQUFtQixJQUFJLENBQUMsQ0FBQztJQUMxRCxNQUFNLENBQUMsV0FBVyxDQUFxQztJQUN2RCxNQUFNLENBQVUsS0FBSyxHQUFHLElBQUksaUJBQWlCLENBQUMsZUFBZSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBRXZGLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBcUM7UUFDekQsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsT0FBTyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBb0I7UUFDMUMseUVBQXlFO1FBQ3pFLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxNQUFNLEtBQUssS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FB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LFlBQVk7WUFDWixvQkFBb0IsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQ3RFLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsY0FBYyxDQUFDLGFBQXFCLENBQUM7UUFDMUMsTUFBTSxVQUFVLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUM5QixVQUFVLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxVQUFVLENBQUMsQ0FBQztRQUN0RCxNQUFNLGVBQWUsR0FBRyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFakQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQzVDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxlQUFlLENBQzVDLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyx3QkFBd0I7UUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNlY3VyaXR5IE1vbml0b3IgZm9yIERvbGxob3VzZU1DUFxuICogXG4gKiBDZW50cmFsaXplZCBzZWN1cml0eSBldmVudCBsb2dnaW5nIGFuZCBtb25pdG9yaW5nIHN5c3RlbVxuICogZm9yIHRyYWNraW5nIGFuZCBhbGVydGluZyBvbiBzZWN1cml0eS1yZWxhdGVkIGV2ZW50cy5cbiAqL1xuXG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXIuanMnO1xuaW1wb3J0IHsgRXZpY3RpbmdRdWV1ZSB9IGZyb20gJy4uL3V0aWxzL0V2aWN0aW5nUXVldWUuanMnO1xuaW1wb3J0IHsgRXZlbnREZWR1cGxpY2F0b3IgfSBmcm9tICcuLi91dGlscy9FdmVudERlZHVwbGljYXRvci5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VjdXJpdHlFdmVudCB7XG4gIHR5cGU6ICdDT05URU5UX0lOSkVDVElPTl9BVFRFTVBUJyB8ICdZQU1MX0lOSkVDVElPTl9BVFRFTVBUJyB8ICdQQVRIX1RSQVZFUlNBTF9BVFRFTVBUJyB8XG4gICAgICAgICdUT0tFTl9WQUxJREFUSU9OX0ZBSUxVUkUnIHwgJ1VQREFURV9TRUNVUklUWV9WSU9MQVRJT04nIHwgJ1JBVEVfTElNSVRfRVhDRUVERUQnIHxcbiAgICAgICAgJ1lBTUxfUEFSU0lOR19XQVJOSU5HJyB8ICdZQU1MX1BBUlNFX1NVQ0NFU1MnIHwgJ1RPS0VOX1ZBTElEQVRJT05fU1VDQ0VTUycgfFxuICAgICAgICAnUEFUSF9WQUxJREFUSU9OX1NVQ0NFU1MnIHwgJ1JBVEVfTElNSVRfV0FSTklORycgfCAnVE9LRU5fQ0FDSEVfQ0xFQVJFRCcgfFxuICAgICAgICAnWUFNTF9VTklDT0RFX0FUVEFDSycgfCAnVU5JQ09ERV9ESVJFQ1RJT05fT1ZFUlJJREUnIHwgJ1VOSUNPREVfTUlYRURfU0NSSVBUJyB8XG4gICAgICAgICdVTklDT0RFX1ZBTElEQVRJT05fRVJST1InIHwgJ0NPTlRFTlRfU0laRV9FWENFRURFRCcgfCAnSU5DTFVERV9ERVBUSF9FWENFRURFRCcgfFxuICAgICAgICAnVEVNUExBVEVfUkVOREVSRUQnIHwgJ1RFTVBMQVRFX0lOQ0xVREUnIHwgJ1RFTVBMQVRFX0xPQURFRCcgfCAnVEVNUExBVEVfU0FWRUQnIHxcbiAgICAgICAgJ1RFTVBMQVRFX0RFTEVURUQnIHwgJ01FTU9SWV9DUkVBVEVEJyB8ICdNRU1PUllfQURERUQnIHwgJ01FTU9SWV9TRUFSQ0hFRCcgfFxuICAgICAgICAnU0VOU0lUSVZFX01FTU9SWV9ERUxFVEVEJyB8ICdSRVRFTlRJT05fUE9MSUNZX0VORk9SQ0VEJyB8ICdNRU1PUllfQ0xFQVJFRCcgfFxuICAgICAgICAnTUVNT1JZX0xPQURFRCcgfCAnTUVNT1JZX1NBVkVEJyB8ICdNRU1PUllfREVMRVRFRCcgfCAnTUVNT1JZX0xPQURfRkFJTEVEJyB8XG4gICAgICAgICdNRU1PUllfU0FWRV9GQUlMRUQnIHwgJ01FTU9SWV9MSVNUX0lURU1fRkFJTEVEJyB8ICdNRU1PUllfSU1QT1JUX0ZBSUxFRCcgfFxuICAgICAgICAnTUVNT1JZX0RFU0VSSUFMSVpFX0ZBSUxFRCcgfCAnTUVNT1JZX0lOVEVHUklUWV9WSU9MQVRJT04nIHwgJ01FTU9SWV9VTklDT0RFX1ZBTElEQVRJT05fRkFJTEVEJyB8XG4gICAgICAgICdNRU1PUllfRFVQTElDQVRFX0RFVEVDVEVEJyB8ICdTRUVEX01FTU9SWV9JTlNUQUxMRUQnIHwgJ1NFRURfTUVNT1JZX0lOU1RBTExBVElPTl9GQUlMRUQnIHxcbiAgICAgICAgJ0VMRU1FTlRfQ1JFQVRFRCcgfCAnRUxFTUVOVF9MT0FERUQnIHwgJ0VMRU1FTlRfRURJVEVEJyB8ICdFTEVNRU5UX0FDVElWQVRFRCcgfCAnRUxFTUVOVF9ERUFDVElWQVRFRCcgfFxuICAgICAgICAnRUxFTUVOVF9WQUxJREFURUQnIHwgJ0VMRU1FTlRfREVMRVRFRCcgfFxuICAgICAgICAnQUdFTlRfQUNUSVZBVEVEJyB8ICdBR0VOVF9BQ1RJVkFUSU9OX0ZBSUxFRCcgfCAnQUdFTlRfQUNUSVZBVElPTl9ST0xMQkFDSycgfFxuICAgICAgICAnQUdFTlRfREVBQ1RJVkFURUQnIHwgJ0FHRU5UX0VYRUNVVEVEJyB8XG4gICAgICAgICdDT05GSUdfVVBEQVRFRCcgfCAnSURFTlRJVFlfQ0hBTkdFRCcgfFxuICAgICAgICAnT1BFUkFUSU9OX0NPTVBMRVRFRCcgfCAnT1BFUkFUSU9OX0ZBSUxFRCcgfCAnQkFUQ0hfQ09NUExFVEVEJyB8ICdCQVRDSF9SRUpFQ1RFRCcgfFxuICAgICAgICAnQ09ORklSTUFUSU9OX1JFQ09SREVEJyB8ICdHQVRFS0VFUEVSX0RFQ0lTSU9OJyB8XG4gICAgICAgICdBVVRIX0ZMT1dfSU5JVElBVEVEJyB8XG4gICAgICAgICdBR0VOVF9ERUNJU0lPTicgfFxuICAgICAgICAnUlVMRV9FTkdJTkVfQ09ORklHX1VQREFURScgfCAnUlVMRV9FTkdJTkVfQ09ORklHX1ZBTElEQVRJT05fRVJST1InIHxcbiAgICAgICAgJ0dPQUxfVEVNUExBVEVfQVBQTElFRCcgfCAnR09BTF9URU1QTEFURV9WQUxJREFUSU9OJyB8XG4gICAgICAgICdFTlNFTUJMRV9DSVJDVUxBUl9ERVBFTkRFTkNZJyB8ICdFTlNFTUJMRV9SRVNPVVJDRV9MSU1JVF9FWENFRURFRCcgfFxuICAgICAgICAnRU5TRU1CTEVfQUNUSVZBVElPTl9USU1FT1VUJyB8ICdFTlNFTUJMRV9BQ1RJVkFUSU9OX0ZBSUxFRCcgfCAnRU5TRU1CTEVfU1VTUElDSU9VU19DT05ESVRJT04nIHxcbiAgICAgICAgJ0VOU0VNQkxFX0NPTkRJVElPTl9FVkFMVUFUSU9OX0ZBSUxFRCcgfFxuICAgICAgICAnRU5TRU1CTEVfTkVTVEVEX0RFUFRIX0VYQ0VFREVEJyB8ICdFTlNFTUJMRV9DT05URVhUX1NJWkVfRVhDRUVERUQnIHxcbiAgICAgICAgJ0VOU0VNQkxFX0NPTlRFWFRfVkFMVUVfVE9PX0xBUkdFJyB8ICdFTlNFTUJMRV9TQVZFRCcgfCAnRU5TRU1CTEVfSU1QT1JURUQnIHwgJ0VOU0VNQkxFX0RFTEVURUQnIHxcbiAgICAgICAgJ1BPUlRGT0xJT19JTklUSUFMSVpBVElPTicgfCAnUE9SVEZPTElPX1BPUFVMQVRFRCcgfCAnRklMRV9DT1BJRUQnIHwgJ0RJUkVDVE9SWV9NSUdSQVRJT04nIHxcbiAgICAgICAgJ1BPUlRGT0xJT19DQUNIRV9JTlZBTElEQVRJT04nIHwgJ1BPUlRGT0xJT19GRVRDSF9TVUNDRVNTJyB8ICdURVNUX0RBVEFfQkxPQ0tFRCcgfFxuICAgICAgICAnVEVTVF9QQVRIX1NFQ1VSSVRZX1JJU0snIHwgJ1RFU1RfUFJPRFVDVElPTl9BQ0NFU1NfQkxPQ0tFRCcgfCAnVEVTVF9QQVRIX0lOVkFMSUQnIHxcbiAgICAgICAgJ1RFU1RfRU5WSVJPTk1FTlRfUFJPRFVDVElPTl9QQVRIJyB8ICdURVNUX0VOVklST05NRU5UX0RFUFJFQ0FURURfVkFSJyB8ICdUT09MX0NBQ0hFX0lOVkFMSURBVEVEJyB8XG4gICAgICAgICdGSUxFX1JFQUQnIHwgJ0ZJTEVfV1JJVFRFTicgfCAnRklMRV9ERUxFVEVEJyB8XG4gICAgICAgICdEQU5HRVJfWk9ORV9UUklHR0VSRUQnIHwgJ0RBTkdFUl9aT05FX09QRVJBVElPTicgfFxuICAgICAgICAnQVVUT05PTVlfREVOSUVEJyB8ICdBVVRPTk9NWV9QQVVTRUQnIHwgJ1NBRkVUWV9FVkFMVUFUSU9OX0ZBSUxVUkUnIHxcbiAgICAgICAgJ1ZFUklGSUNBVElPTl9BVFRFTVBURUQnIHwgJ1ZFUklGSUNBVElPTl9TVUNDRUVERUQnIHxcbiAgICAgICAgJ1ZFUklGSUNBVElPTl9GQUlMRUQnIHwgJ1ZFUklGSUNBVElPTl9FWFBJUkVEJyB8XG4gICAgICAgICdBR0VOVF9BVVRPX0NPTlRJTlVFRCcgfCAnQUdFTlRfU1RFUF9SRVRSSUVEJyB8XG4gICAgICAgICdBR0VOVF9BVVRPX1JFU1RBUlRFRCcgfCAnQUdFTlRfUkVTSUxJRU5DRV9MSU1JVF9SRUFDSEVEJyB8XG4gICAgICAgICdQRVJNSVNTSU9OX1BST01QVF9ERU5JRUQnIHxcbiAgICAgICAgJ0NMSV9BUFBST1ZBTF9SRVFVRVNURUQnIHwgJ0NMSV9BUFBST1ZBTF9HUkFOVEVEJyB8ICdDTElfQVBQUk9WQUxfQ09OU1VNRUQnIHxcbiAgICAgICAgJ1RPVFBfRU5ST0xMRUQnIHwgJ1RPVFBfRElTQUJMRUQnIHwgJ1RPVFBfQkFDS1VQX0NPREVfQ09OU1VNRUQnIHwgJ1RPVFBfVkVSSUZJQ0FUSU9OX0ZBSUxFRCcgfFxuICAgICAgICAnQ09OU09MRV9UT0tFTl9ST1RBVEVEJztcbiAgc2V2ZXJpdHk6ICdMT1cnIHwgJ01FRElVTScgfCAnSElHSCcgfCAnQ1JJVElDQUwnO1xuICBzb3VyY2U6IHN0cmluZztcbiAgZGV0YWlsczogc3RyaW5nO1xuICB1c2VyQWdlbnQ/OiBzdHJpbmc7XG4gIGlwPzogc3RyaW5nO1xuICBhZGRpdGlvbmFsRGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgYW55Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWN1cml0eUxvZ0VudHJ5IGV4dGVuZHMgU2VjdXJpdHlFdmVudCB7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICBpZDogc3RyaW5nO1xufVxuXG4vKiogRGVkdXBsaWNhdGlvbiB3aW5kb3c6IHN1cHByZXNzIGlkZW50aWNhbCBldmVudHMgd2l0aGluIHRoaXMgcGVyaW9kICovXG5jb25zdCBERURVUF9XSU5ET1dfTVMgPSA2MF8wMDA7XG5cbi8qKiBNYXhpbXVtIGRlZHVwIGNhY2hlIGVudHJpZXMgYmVmb3JlIExSVSBldmljdGlvbiAqL1xuY29uc3QgREVEVVBfTUFYX1NJWkUgPSA1MDA7XG5cbmV4cG9ydCBjbGFzcyBTZWN1cml0eU1vbml0b3Ige1xuICBwcml2YXRlIHN0YXRpYyBldmVudENvdW50ID0gMDtcbiAgcHJpdmF0ZSBzdGF0aWMgZXZlbnRzID0gbmV3IEV2aWN0aW5nUXVldWU8U2VjdXJpdHlMb2dFbnRyeT4oMTAwMCk7XG4gIHByaXZhdGUgc3RhdGljIGxvZ0xpc3RlbmVyPzogKGVudHJ5OiBTZWN1cml0eUxvZ0VudHJ5KSA9PiB2b2lkO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBkZWR1cCA9IG5ldyBFdmVudERlZHVwbGljYXRvcihERURVUF9XSU5ET1dfTVMsIERFRFVQX01BWF9TSVpFKTtcblxuICBzdGF0aWMgYWRkTG9nTGlzdGVuZXIoZm46IChlbnRyeTogU2VjdXJpdHlMb2dFbnRyeSkgPT4gdm9pZCk6ICgpID0+IHZvaWQge1xuICAgIHRoaXMubG9nTGlzdGVuZXIgPSBmbjtcbiAgICByZXR1cm4gKCkgPT4geyB0aGlzLmxvZ0xpc3RlbmVyID0gdW5kZWZpbmVkOyB9O1xuICB9XG5cbiAgLyoqXG4gICAqIExvZ3MgYSBzZWN1cml0eSBldmVudCwgc3VwcHJlc3NpbmcgcmVwZWF0ZWQgaWRlbnRpY2FsIGV2ZW50cyB3aXRoaW4gdGhlIGRlZHVwIHdpbmRvdy5cbiAgICovXG4gIHN0YXRpYyBsb2dTZWN1cml0eUV2ZW50KGV2ZW50OiBTZWN1cml0eUV2ZW50KTogdm9pZCB7XG4gICAgLy8gRGVkdXBsaWNhdGU6IHNhbWUgdHlwZSArIHNvdXJjZSArIGRldGFpbHMgd2l0aGluIDYwcyB3aW5kb3cgPSBzdXBwcmVzc1xuICAgIGlmICh0aGlzLmRlZHVwLnNob3VsZFN1cHByZXNzKGAke2V2ZW50LnR5cGV9XFwwJHtldmVudC5zb3VyY2V9XFwwJHtldmVudC5kZXRhaWxzfWApKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbG9nRW50cnk6IFNlY3VyaXR5TG9nRW50cnkgPSB7XG4gICAgICAuLi5ldmVudCxcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgaWQ6IGBTRUMtJHtEYXRlLm5vdygpfS0keysrdGhpcy5ldmVudENvdW50fWAsXG4gICAgfTtcblxuICAgIC8vIEJvdW5kZWQgRklGTyBldmljdGlvbiDigJQgRXZpY3RpbmdRdWV1ZSBoYW5kbGVzIGNhcGFjaXR5XG4gICAgdGhpcy5ldmVudHMucHVzaChsb2dFbnRyeSk7XG4gICAgdGhpcy5sb2dMaXN0ZW5lcj8uKGxvZ0VudHJ5KTtcblxuICAgIC8vIEluIE1DUCBzZXJ2ZXJzLCB3ZSBjYW5ub3Qgd3JpdGUgdG8gc3RkZXJyL3N0ZG91dCBhcyBpdCBicmVha3MgdGhlIEpTT04tUlBDIHByb3RvY29sXG4gICAgLy8gU2VjdXJpdHkgZXZlbnRzIGFyZSBzdG9yZWQgaW4gbWVtb3J5IGFuZCBjYW4gYmUgcmV0cmlldmVkIHZpYSBBUElcbiAgICAvLyBPbmx5IHNlbmQgY3JpdGljYWwgYWxlcnRzIHZpYSB0aGUgcHJvcGVyIGNoYW5uZWxcblxuICAgIGlmIChldmVudC5zZXZlcml0eSA9PT0gJ0NSSVRJQ0FMJykge1xuICAgICAgdGhpcy5zZW5kU2VjdXJpdHlBbGVydChsb2dFbnRyeSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNlbmRzIHNlY3VyaXR5IGFsZXJ0cyBmb3IgY3JpdGljYWwgZXZlbnRzXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBzZW5kU2VjdXJpdHlBbGVydChldmVudDogU2VjdXJpdHlMb2dFbnRyeSk6IHZvaWQge1xuICAgIC8vIEluIGEgcHJvZHVjdGlvbiBlbnZpcm9ubWVudCwgdGhpcyB3b3VsZCBpbnRlZ3JhdGUgd2l0aDpcbiAgICAvLyAtIFNsYWNrIHdlYmhvb2tzXG4gICAgLy8gLSBFbWFpbCBhbGVydHNcbiAgICAvLyAtIFBhZ2VyRHV0eVxuICAgIC8vIC0gU2VjdXJpdHkgSW5mb3JtYXRpb24gYW5kIEV2ZW50IE1hbmFnZW1lbnQgKFNJRU0pIHN5c3RlbXNcbiAgICBcbiAgICAvLyBMb2cgY3JpdGljYWwgc2VjdXJpdHkgYWxlcnRzIHdpdGggc3RydWN0dXJlZCBkYXRhXG4gICAgLy8gRE8gTk9UIHVzZSBjb25zb2xlLmVycm9yIGluIE1DUCBzZXJ2ZXJzIGFzIGl0IGJyZWFrcyB0aGUgSlNPTi1SUEMgcHJvdG9jb2xcbiAgICBsb2dnZXIuZXJyb3IoJ1tDUklUSUNBTCBTRUNVUklUWSBBTEVSVF0nLCB7XG4gICAgICB0eXBlOiBldmVudC50eXBlLFxuICAgICAgZGV0YWlsczogZXZlbnQuZGV0YWlscyxcbiAgICAgIHRpbWVzdGFtcDogZXZlbnQudGltZXN0YW1wLFxuICAgICAgaWQ6IGV2ZW50LmlkXG4gICAgfSk7XG4gICAgXG4gICAgLy8gSWYgaW4gcHJvZHVjdGlvbiBtb2RlIHdpdGggcHJvcGVyIGNvbmZpZywgc2VuZCBhY3R1YWwgYWxlcnRzXG4gICAgaWYgKHByb2Nlc3MuZW52LkRPTExIT1VTRV9TRUNVUklUWV9BTEVSVFMgPT09ICd0cnVlJykge1xuICAgICAgLy8gVE9ETzogSW1wbGVtZW50IGFjdHVhbCBhbGVydCBtZWNoYW5pc21zXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgcmVjZW50IHNlY3VyaXR5IGV2ZW50cyBmb3IgYW5hbHlzaXNcbiAgICovXG4gIHN0YXRpYyBnZXRSZWNlbnRFdmVudHMoY291bnQ6IG51bWJlciA9IDEwMCk6IFNlY3VyaXR5TG9nRW50cnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRzLnRvQXJyYXkoKS5zbGljZSgtY291bnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgZXZlbnRzIGJ5IHNldmVyaXR5XG4gICAqL1xuICBzdGF0aWMgZ2V0RXZlbnRzQnlTZXZlcml0eShzZXZlcml0eTogU2VjdXJpdHlFdmVudFsnc2V2ZXJpdHknXSk6IFNlY3VyaXR5TG9nRW50cnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRzLnRvQXJyYXkoKS5maWx0ZXIoZXZlbnQgPT4gZXZlbnQuc2V2ZXJpdHkgPT09IHNldmVyaXR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGV2ZW50cyBieSB0eXBlXG4gICAqL1xuICBzdGF0aWMgZ2V0RXZlbnRzQnlUeXBlKHR5cGU6IFNlY3VyaXR5RXZlbnRbJ3R5cGUnXSk6IFNlY3VyaXR5TG9nRW50cnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRzLnRvQXJyYXkoKS5maWx0ZXIoZXZlbnQgPT4gZXZlbnQudHlwZSA9PT0gdHlwZSk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIGEgc2VjdXJpdHkgcmVwb3J0XG4gICAqL1xuICBzdGF0aWMgZ2VuZXJhdGVTZWN1cml0eVJlcG9ydCgpOiB7XG4gICAgdG90YWxFdmVudHM6IG51bWJlcjtcbiAgICBldmVudHNCeVNldmVyaXR5OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuICAgIGV2ZW50c0J5VHlwZTogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcbiAgICByZWNlbnRDcml0aWNhbEV2ZW50czogU2VjdXJpdHlMb2dFbnRyeVtdO1xuICB9IHtcbiAgICBjb25zdCBldmVudHNCeVNldmVyaXR5OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge1xuICAgICAgQ1JJVElDQUw6IDAsXG4gICAgICBISUdIOiAwLFxuICAgICAgTUVESVVNOiAwLFxuICAgICAgTE9XOiAwLFxuICAgIH07XG5cbiAgICBjb25zdCBldmVudHNCeVR5cGU6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7fTtcblxuICAgIGZvciAoY29uc3QgZXZlbnQgb2YgdGhpcy5ldmVudHMudG9BcnJheSgpKSB7XG4gICAgICBldmVudHNCeVNldmVyaXR5W2V2ZW50LnNldmVyaXR5XSsrO1xuICAgICAgZXZlbnRzQnlUeXBlW2V2ZW50LnR5cGVdID0gKGV2ZW50c0J5VHlwZVtldmVudC50eXBlXSB8fCAwKSArIDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRvdGFsRXZlbnRzOiB0aGlzLmV2ZW50cy5zaXplLFxuICAgICAgZXZlbnRzQnlTZXZlcml0eSxcbiAgICAgIGV2ZW50c0J5VHlwZSxcbiAgICAgIHJlY2VudENyaXRpY2FsRXZlbnRzOiB0aGlzLmdldEV2ZW50c0J5U2V2ZXJpdHkoJ0NSSVRJQ0FMJykuc2xpY2UoLTEwKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyBvbGQgZXZlbnRzIChmb3IgbWVtb3J5IG1hbmFnZW1lbnQpXG4gICAqL1xuICBzdGF0aWMgY2xlYXJPbGRFdmVudHMoZGF5c1RvS2VlcDogbnVtYmVyID0gNyk6IHZvaWQge1xuICAgIGNvbnN0IGN1dG9mZkRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGN1dG9mZkRhdGUuc2V0RGF0ZShjdXRvZmZEYXRlLmdldERhdGUoKSAtIGRheXNUb0tlZXApO1xuICAgIGNvbnN0IGN1dG9mZlRpbWVzdGFtcCA9IGN1dG9mZkRhdGUudG9JU09TdHJpbmcoKTtcblxuICAgIGNvbnN0IHJlbWFpbmluZyA9IHRoaXMuZXZlbnRzLnRvQXJyYXkoKS5maWx0ZXIoXG4gICAgICBldmVudCA9PiBldmVudC50aW1lc3RhbXAgPj0gY3V0b2ZmVGltZXN0YW1wXG4gICAgKTtcbiAgICB0aGlzLmV2ZW50cy5yZXNldChbLi4ucmVtYWluaW5nXSk7XG4gIH1cblxuICAvKipcbiAgICogVEVTVElORyBPTkxZOiBDbGVhcnMgYWxsIGV2ZW50cyBhbmQgcmVzZXRzIGNvdW50ZXJcbiAgICogU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGluIHRlc3QgY2xlYW51cCAoYWZ0ZXJFYWNoL2FmdGVyQWxsKVxuICAgKiB0byBwcmV2ZW50IHRlc3QgcG9sbHV0aW9uIGZyb20gYWNjdW11bGF0ZWQgc2VjdXJpdHkgZXZlbnRzXG4gICAqL1xuICBzdGF0aWMgY2xlYXJBbGxFdmVudHNGb3JUZXN0aW5nKCk6IHZvaWQge1xuICAgIHRoaXMuZXZlbnRzLmNsZWFyKCk7XG4gICAgdGhpcy5ldmVudENvdW50ID0gMDtcbiAgICB0aGlzLmRlZHVwLmNsZWFyKCk7XG4gIH1cbn1cbiJdfQ==
|
|
129
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHlNb25pdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlY3VyaXR5L3NlY3VyaXR5TW9uaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUE2RGxFLHlFQUF5RTtBQUN6RSxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUM7QUFFL0Isc0RBQXNEO0FBQ3RELE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQztBQUUzQixNQUFNLE9BQU8sZUFBZTtJQUNsQixNQUFNLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztJQUN0QixNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksYUFBYSxDQUFtQixJQUFJLENBQUMsQ0FBQztJQUMxRCxNQUFNLENBQUMsV0FBVyxDQUFxQztJQUN2RCxNQUFNLENBQVUsS0FBSyxHQUFHLElBQUksaUJBQWlCLENBQUMsZUFBZSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBRXZGLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBcUM7UUFDekQsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsT0FBTyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBb0I7UUFDMUMseUVBQXlFO1FBQ3pFLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxNQUFNLEtBQUssS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FB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LFlBQVk7WUFDWixvQkFBb0IsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQ3RFLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsY0FBYyxDQUFDLGFBQXFCLENBQUM7UUFDMUMsTUFBTSxVQUFVLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUM5QixVQUFVLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxVQUFVLENBQUMsQ0FBQztRQUN0RCxNQUFNLGVBQWUsR0FBRyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFakQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQzVDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxlQUFlLENBQzVDLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyx3QkFBd0I7UUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNlY3VyaXR5IE1vbml0b3IgZm9yIERvbGxob3VzZU1DUFxuICogXG4gKiBDZW50cmFsaXplZCBzZWN1cml0eSBldmVudCBsb2dnaW5nIGFuZCBtb25pdG9yaW5nIHN5c3RlbVxuICogZm9yIHRyYWNraW5nIGFuZCBhbGVydGluZyBvbiBzZWN1cml0eS1yZWxhdGVkIGV2ZW50cy5cbiAqL1xuXG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXIuanMnO1xuaW1wb3J0IHsgRXZpY3RpbmdRdWV1ZSB9IGZyb20gJy4uL3V0aWxzL0V2aWN0aW5nUXVldWUuanMnO1xuaW1wb3J0IHsgRXZlbnREZWR1cGxpY2F0b3IgfSBmcm9tICcuLi91dGlscy9FdmVudERlZHVwbGljYXRvci5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VjdXJpdHlFdmVudCB7XG4gIHR5cGU6ICdDT05URU5UX0lOSkVDVElPTl9BVFRFTVBUJyB8ICdZQU1MX0lOSkVDVElPTl9BVFRFTVBUJyB8ICdQQVRIX1RSQVZFUlNBTF9BVFRFTVBUJyB8XG4gICAgICAgICdUT0tFTl9WQUxJREFUSU9OX0ZBSUxVUkUnIHwgJ1VQREFURV9TRUNVUklUWV9WSU9MQVRJT04nIHwgJ1JBVEVfTElNSVRfRVhDRUVERUQnIHxcbiAgICAgICAgJ1lBTUxfUEFSU0lOR19XQVJOSU5HJyB8ICdZQU1MX1BBUlNFX1NVQ0NFU1MnIHwgJ1RPS0VOX1ZBTElEQVRJT05fU1VDQ0VTUycgfFxuICAgICAgICAnUEFUSF9WQUxJREFUSU9OX1NVQ0NFU1MnIHwgJ1JBVEVfTElNSVRfV0FSTklORycgfCAnVE9LRU5fQ0FDSEVfQ0xFQVJFRCcgfFxuICAgICAgICAnWUFNTF9VTklDT0RFX0FUVEFDSycgfCAnVU5JQ09ERV9ESVJFQ1RJT05fT1ZFUlJJREUnIHwgJ1VOSUNPREVfTUlYRURfU0NSSVBUJyB8XG4gICAgICAgICdVTklDT0RFX1ZBTElEQVRJT05fRVJST1InIHwgJ0NPTlRFTlRfU0laRV9FWENFRURFRCcgfCAnSU5DTFVERV9ERVBUSF9FWENFRURFRCcgfFxuICAgICAgICAnVEVNUExBVEVfUkVOREVSRUQnIHwgJ1RFTVBMQVRFX0lOQ0xVREUnIHwgJ1RFTVBMQVRFX0xPQURFRCcgfCAnVEVNUExBVEVfU0FWRUQnIHxcbiAgICAgICAgJ1RFTVBMQVRFX0RFTEVURUQnIHwgJ01FTU9SWV9DUkVBVEVEJyB8ICdNRU1PUllfQURERUQnIHwgJ01FTU9SWV9TRUFSQ0hFRCcgfFxuICAgICAgICAnU0VOU0lUSVZFX01FTU9SWV9ERUxFVEVEJyB8ICdSRVRFTlRJT05fUE9MSUNZX0VORk9SQ0VEJyB8ICdNRU1PUllfQ0xFQVJFRCcgfFxuICAgICAgICAnTUVNT1JZX0xPQURFRCcgfCAnTUVNT1JZX1NBVkVEJyB8ICdNRU1PUllfREVMRVRFRCcgfCAnTUVNT1JZX0xPQURfRkFJTEVEJyB8XG4gICAgICAgICdNRU1PUllfU0FWRV9GQUlMRUQnIHwgJ01FTU9SWV9MSVNUX0lURU1fRkFJTEVEJyB8ICdNRU1PUllfSU1QT1JUX0ZBSUxFRCcgfFxuICAgICAgICAnTUVNT1JZX0RFU0VSSUFMSVpFX0ZBSUxFRCcgfCAnTUVNT1JZX0lOVEVHUklUWV9WSU9MQVRJT04nIHwgJ01FTU9SWV9VTklDT0RFX1ZBTElEQVRJT05fRkFJTEVEJyB8XG4gICAgICAgICdNRU1PUllfRFVQTElDQVRFX0RFVEVDVEVEJyB8ICdTRUVEX01FTU9SWV9JTlNUQUxMRUQnIHwgJ1NFRURfTUVNT1JZX0lOU1RBTExBVElPTl9GQUlMRUQnIHxcbiAgICAgICAgJ0VMRU1FTlRfQ1JFQVRFRCcgfCAnRUxFTUVOVF9MT0FERUQnIHwgJ0VMRU1FTlRfRURJVEVEJyB8ICdFTEVNRU5UX0FDVElWQVRFRCcgfCAnRUxFTUVOVF9ERUFDVElWQVRFRCcgfFxuICAgICAgICAnRUxFTUVOVF9WQUxJREFURUQnIHwgJ0VMRU1FTlRfREVMRVRFRCcgfFxuICAgICAgICAnQUdFTlRfQUNUSVZBVEVEJyB8ICdBR0VOVF9BQ1RJVkFUSU9OX0ZBSUxFRCcgfCAnQUdFTlRfQUNUSVZBVElPTl9ST0xMQkFDSycgfFxuICAgICAgICAnQUdFTlRfREVBQ1RJVkFURUQnIHwgJ0FHRU5UX0VYRUNVVEVEJyB8ICdBR0VOVF9QT0xJQ1lfUkVDT1ZFUkVEJyB8XG4gICAgICAgICdDT05GSUdfVVBEQVRFRCcgfCAnSURFTlRJVFlfQ0hBTkdFRCcgfFxuICAgICAgICAnT1BFUkFUSU9OX0NPTVBMRVRFRCcgfCAnT1BFUkFUSU9OX0ZBSUxFRCcgfCAnQkFUQ0hfQ09NUExFVEVEJyB8ICdCQVRDSF9SRUpFQ1RFRCcgfFxuICAgICAgICAnQ09ORklSTUFUSU9OX1JFQ09SREVEJyB8ICdHQVRFS0VFUEVSX0RFQ0lTSU9OJyB8XG4gICAgICAgICdBVVRIX0ZMT1dfSU5JVElBVEVEJyB8XG4gICAgICAgICdBR0VOVF9ERUNJU0lPTicgfFxuICAgICAgICAnUlVMRV9FTkdJTkVfQ09ORklHX1VQREFURScgfCAnUlVMRV9FTkdJTkVfQ09ORklHX1ZBTElEQVRJT05fRVJST1InIHxcbiAgICAgICAgJ0dPQUxfVEVNUExBVEVfQVBQTElFRCcgfCAnR09BTF9URU1QTEFURV9WQUxJREFUSU9OJyB8XG4gICAgICAgICdFTlNFTUJMRV9DSVJDVUxBUl9ERVBFTkRFTkNZJyB8ICdFTlNFTUJMRV9SRVNPVVJDRV9MSU1JVF9FWENFRURFRCcgfFxuICAgICAgICAnRU5TRU1CTEVfQUNUSVZBVElPTl9USU1FT1VUJyB8ICdFTlNFTUJMRV9BQ1RJVkFUSU9OX0ZBSUxFRCcgfCAnRU5TRU1CTEVfU1VTUElDSU9VU19DT05ESVRJT04nIHxcbiAgICAgICAgJ0VOU0VNQkxFX0NPTkRJVElPTl9FVkFMVUFUSU9OX0ZBSUxFRCcgfFxuICAgICAgICAnRU5TRU1CTEVfTkVTVEVEX0RFUFRIX0VYQ0VFREVEJyB8ICdFTlNFTUJMRV9DT05URVhUX1NJWkVfRVhDRUVERUQnIHxcbiAgICAgICAgJ0VOU0VNQkxFX0NPTlRFWFRfVkFMVUVfVE9PX0xBUkdFJyB8ICdFTlNFTUJMRV9TQVZFRCcgfCAnRU5TRU1CTEVfSU1QT1JURUQnIHwgJ0VOU0VNQkxFX0RFTEVURUQnIHxcbiAgICAgICAgJ1BPUlRGT0xJT19JTklUSUFMSVpBVElPTicgfCAnUE9SVEZPTElPX1BPUFVMQVRFRCcgfCAnRklMRV9DT1BJRUQnIHwgJ0RJUkVDVE9SWV9NSUdSQVRJT04nIHxcbiAgICAgICAgJ1BPUlRGT0xJT19DQUNIRV9JTlZBTElEQVRJT04nIHwgJ1BPUlRGT0xJT19GRVRDSF9TVUNDRVNTJyB8ICdURVNUX0RBVEFfQkxPQ0tFRCcgfFxuICAgICAgICAnVEVTVF9QQVRIX1NFQ1VSSVRZX1JJU0snIHwgJ1RFU1RfUFJPRFVDVElPTl9BQ0NFU1NfQkxPQ0tFRCcgfCAnVEVTVF9QQVRIX0lOVkFMSUQnIHxcbiAgICAgICAgJ1RFU1RfRU5WSVJPTk1FTlRfUFJPRFVDVElPTl9QQVRIJyB8ICdURVNUX0VOVklST05NRU5UX0RFUFJFQ0FURURfVkFSJyB8ICdUT09MX0NBQ0hFX0lOVkFMSURBVEVEJyB8XG4gICAgICAgICdGSUxFX1JFQUQnIHwgJ0ZJTEVfV1JJVFRFTicgfCAnRklMRV9ERUxFVEVEJyB8XG4gICAgICAgICdEQU5HRVJfWk9ORV9UUklHR0VSRUQnIHwgJ0RBTkdFUl9aT05FX09QRVJBVElPTicgfFxuICAgICAgICAnQVVUT05PTVlfREVOSUVEJyB8ICdBVVRPTk9NWV9QQVVTRUQnIHwgJ1NBRkVUWV9FVkFMVUFUSU9OX0ZBSUxVUkUnIHxcbiAgICAgICAgJ1ZFUklGSUNBVElPTl9BVFRFTVBURUQnIHwgJ1ZFUklGSUNBVElPTl9TVUNDRUVERUQnIHxcbiAgICAgICAgJ1ZFUklGSUNBVElPTl9GQUlMRUQnIHwgJ1ZFUklGSUNBVElPTl9FWFBJUkVEJyB8XG4gICAgICAgICdBR0VOVF9BVVRPX0NPTlRJTlVFRCcgfCAnQUdFTlRfU1RFUF9SRVRSSUVEJyB8XG4gICAgICAgICdBR0VOVF9BVVRPX1JFU1RBUlRFRCcgfCAnQUdFTlRfUkVTSUxJRU5DRV9MSU1JVF9SRUFDSEVEJyB8XG4gICAgICAgICdQRVJNSVNTSU9OX1BST01QVF9ERU5JRUQnIHxcbiAgICAgICAgJ0NMSV9BUFBST1ZBTF9SRVFVRVNURUQnIHwgJ0NMSV9BUFBST1ZBTF9HUkFOVEVEJyB8ICdDTElfQVBQUk9WQUxfQ09OU1VNRUQnIHxcbiAgICAgICAgJ1RPVFBfRU5ST0xMRUQnIHwgJ1RPVFBfRElTQUJMRUQnIHwgJ1RPVFBfQkFDS1VQX0NPREVfQ09OU1VNRUQnIHwgJ1RPVFBfVkVSSUZJQ0FUSU9OX0ZBSUxFRCcgfFxuICAgICAgICAnQ09OU09MRV9UT0tFTl9ST1RBVEVEJztcbiAgc2V2ZXJpdHk6ICdMT1cnIHwgJ01FRElVTScgfCAnSElHSCcgfCAnQ1JJVElDQUwnO1xuICBzb3VyY2U6IHN0cmluZztcbiAgZGV0YWlsczogc3RyaW5nO1xuICB1c2VyQWdlbnQ/OiBzdHJpbmc7XG4gIGlwPzogc3RyaW5nO1xuICBhZGRpdGlvbmFsRGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgYW55Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWN1cml0eUxvZ0VudHJ5IGV4dGVuZHMgU2VjdXJpdHlFdmVudCB7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICBpZDogc3RyaW5nO1xufVxuXG4vKiogRGVkdXBsaWNhdGlvbiB3aW5kb3c6IHN1cHByZXNzIGlkZW50aWNhbCBldmVudHMgd2l0aGluIHRoaXMgcGVyaW9kICovXG5jb25zdCBERURVUF9XSU5ET1dfTVMgPSA2MF8wMDA7XG5cbi8qKiBNYXhpbXVtIGRlZHVwIGNhY2hlIGVudHJpZXMgYmVmb3JlIExSVSBldmljdGlvbiAqL1xuY29uc3QgREVEVVBfTUFYX1NJWkUgPSA1MDA7XG5cbmV4cG9ydCBjbGFzcyBTZWN1cml0eU1vbml0b3Ige1xuICBwcml2YXRlIHN0YXRpYyBldmVudENvdW50ID0gMDtcbiAgcHJpdmF0ZSBzdGF0aWMgZXZlbnRzID0gbmV3IEV2aWN0aW5nUXVldWU8U2VjdXJpdHlMb2dFbnRyeT4oMTAwMCk7XG4gIHByaXZhdGUgc3RhdGljIGxvZ0xpc3RlbmVyPzogKGVudHJ5OiBTZWN1cml0eUxvZ0VudHJ5KSA9PiB2b2lkO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBkZWR1cCA9IG5ldyBFdmVudERlZHVwbGljYXRvcihERURVUF9XSU5ET1dfTVMsIERFRFVQX01BWF9TSVpFKTtcblxuICBzdGF0aWMgYWRkTG9nTGlzdGVuZXIoZm46IChlbnRyeTogU2VjdXJpdHlMb2dFbnRyeSkgPT4gdm9pZCk6ICgpID0+IHZvaWQge1xuICAgIHRoaXMubG9nTGlzdGVuZXIgPSBmbjtcbiAgICByZXR1cm4gKCkgPT4geyB0aGlzLmxvZ0xpc3RlbmVyID0gdW5kZWZpbmVkOyB9O1xuICB9XG5cbiAgLyoqXG4gICAqIExvZ3MgYSBzZWN1cml0eSBldmVudCwgc3VwcHJlc3NpbmcgcmVwZWF0ZWQgaWRlbnRpY2FsIGV2ZW50cyB3aXRoaW4gdGhlIGRlZHVwIHdpbmRvdy5cbiAgICovXG4gIHN0YXRpYyBsb2dTZWN1cml0eUV2ZW50KGV2ZW50OiBTZWN1cml0eUV2ZW50KTogdm9pZCB7XG4gICAgLy8gRGVkdXBsaWNhdGU6IHNhbWUgdHlwZSArIHNvdXJjZSArIGRldGFpbHMgd2l0aGluIDYwcyB3aW5kb3cgPSBzdXBwcmVzc1xuICAgIGlmICh0aGlzLmRlZHVwLnNob3VsZFN1cHByZXNzKGAke2V2ZW50LnR5cGV9XFwwJHtldmVudC5zb3VyY2V9XFwwJHtldmVudC5kZXRhaWxzfWApKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbG9nRW50cnk6IFNlY3VyaXR5TG9nRW50cnkgPSB7XG4gICAgICAuLi5ldmVudCxcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgaWQ6IGBTRUMtJHtEYXRlLm5vdygpfS0keysrdGhpcy5ldmVudENvdW50fWAsXG4gICAgfTtcblxuICAgIC8vIEJvdW5kZWQgRklGTyBldmljdGlvbiDigJQgRXZpY3RpbmdRdWV1ZSBoYW5kbGVzIGNhcGFjaXR5XG4gICAgdGhpcy5ldmVudHMucHVzaChsb2dFbnRyeSk7XG4gICAgdGhpcy5sb2dMaXN0ZW5lcj8uKGxvZ0VudHJ5KTtcblxuICAgIC8vIEluIE1DUCBzZXJ2ZXJzLCB3ZSBjYW5ub3Qgd3JpdGUgdG8gc3RkZXJyL3N0ZG91dCBhcyBpdCBicmVha3MgdGhlIEpTT04tUlBDIHByb3RvY29sXG4gICAgLy8gU2VjdXJpdHkgZXZlbnRzIGFyZSBzdG9yZWQgaW4gbWVtb3J5IGFuZCBjYW4gYmUgcmV0cmlldmVkIHZpYSBBUElcbiAgICAvLyBPbmx5IHNlbmQgY3JpdGljYWwgYWxlcnRzIHZpYSB0aGUgcHJvcGVyIGNoYW5uZWxcblxuICAgIGlmIChldmVudC5zZXZlcml0eSA9PT0gJ0NSSVRJQ0FMJykge1xuICAgICAgdGhpcy5zZW5kU2VjdXJpdHlBbGVydChsb2dFbnRyeSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNlbmRzIHNlY3VyaXR5IGFsZXJ0cyBmb3IgY3JpdGljYWwgZXZlbnRzXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBzZW5kU2VjdXJpdHlBbGVydChldmVudDogU2VjdXJpdHlMb2dFbnRyeSk6IHZvaWQge1xuICAgIC8vIEluIGEgcHJvZHVjdGlvbiBlbnZpcm9ubWVudCwgdGhpcyB3b3VsZCBpbnRlZ3JhdGUgd2l0aDpcbiAgICAvLyAtIFNsYWNrIHdlYmhvb2tzXG4gICAgLy8gLSBFbWFpbCBhbGVydHNcbiAgICAvLyAtIFBhZ2VyRHV0eVxuICAgIC8vIC0gU2VjdXJpdHkgSW5mb3JtYXRpb24gYW5kIEV2ZW50IE1hbmFnZW1lbnQgKFNJRU0pIHN5c3RlbXNcbiAgICBcbiAgICAvLyBMb2cgY3JpdGljYWwgc2VjdXJpdHkgYWxlcnRzIHdpdGggc3RydWN0dXJlZCBkYXRhXG4gICAgLy8gRE8gTk9UIHVzZSBjb25zb2xlLmVycm9yIGluIE1DUCBzZXJ2ZXJzIGFzIGl0IGJyZWFrcyB0aGUgSlNPTi1SUEMgcHJvdG9jb2xcbiAgICBsb2dnZXIuZXJyb3IoJ1tDUklUSUNBTCBTRUNVUklUWSBBTEVSVF0nLCB7XG4gICAgICB0eXBlOiBldmVudC50eXBlLFxuICAgICAgZGV0YWlsczogZXZlbnQuZGV0YWlscyxcbiAgICAgIHRpbWVzdGFtcDogZXZlbnQudGltZXN0YW1wLFxuICAgICAgaWQ6IGV2ZW50LmlkXG4gICAgfSk7XG4gICAgXG4gICAgLy8gSWYgaW4gcHJvZHVjdGlvbiBtb2RlIHdpdGggcHJvcGVyIGNvbmZpZywgc2VuZCBhY3R1YWwgYWxlcnRzXG4gICAgaWYgKHByb2Nlc3MuZW52LkRPTExIT1VTRV9TRUNVUklUWV9BTEVSVFMgPT09ICd0cnVlJykge1xuICAgICAgLy8gVE9ETzogSW1wbGVtZW50IGFjdHVhbCBhbGVydCBtZWNoYW5pc21zXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgcmVjZW50IHNlY3VyaXR5IGV2ZW50cyBmb3IgYW5hbHlzaXNcbiAgICovXG4gIHN0YXRpYyBnZXRSZWNlbnRFdmVudHMoY291bnQ6IG51bWJlciA9IDEwMCk6IFNlY3VyaXR5TG9nRW50cnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRzLnRvQXJyYXkoKS5zbGljZSgtY291bnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgZXZlbnRzIGJ5IHNldmVyaXR5XG4gICAqL1xuICBzdGF0aWMgZ2V0RXZlbnRzQnlTZXZlcml0eShzZXZlcml0eTogU2VjdXJpdHlFdmVudFsnc2V2ZXJpdHknXSk6IFNlY3VyaXR5TG9nRW50cnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRzLnRvQXJyYXkoKS5maWx0ZXIoZXZlbnQgPT4gZXZlbnQuc2V2ZXJpdHkgPT09IHNldmVyaXR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGV2ZW50cyBieSB0eXBlXG4gICAqL1xuICBzdGF0aWMgZ2V0RXZlbnRzQnlUeXBlKHR5cGU6IFNlY3VyaXR5RXZlbnRbJ3R5cGUnXSk6IFNlY3VyaXR5TG9nRW50cnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRzLnRvQXJyYXkoKS5maWx0ZXIoZXZlbnQgPT4gZXZlbnQudHlwZSA9PT0gdHlwZSk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIGEgc2VjdXJpdHkgcmVwb3J0XG4gICAqL1xuICBzdGF0aWMgZ2VuZXJhdGVTZWN1cml0eVJlcG9ydCgpOiB7XG4gICAgdG90YWxFdmVudHM6IG51bWJlcjtcbiAgICBldmVudHNCeVNldmVyaXR5OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuICAgIGV2ZW50c0J5VHlwZTogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcbiAgICByZWNlbnRDcml0aWNhbEV2ZW50czogU2VjdXJpdHlMb2dFbnRyeVtdO1xuICB9IHtcbiAgICBjb25zdCBldmVudHNCeVNldmVyaXR5OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge1xuICAgICAgQ1JJVElDQUw6IDAsXG4gICAgICBISUdIOiAwLFxuICAgICAgTUVESVVNOiAwLFxuICAgICAgTE9XOiAwLFxuICAgIH07XG5cbiAgICBjb25zdCBldmVudHNCeVR5cGU6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7fTtcblxuICAgIGZvciAoY29uc3QgZXZlbnQgb2YgdGhpcy5ldmVudHMudG9BcnJheSgpKSB7XG4gICAgICBldmVudHNCeVNldmVyaXR5W2V2ZW50LnNldmVyaXR5XSsrO1xuICAgICAgZXZlbnRzQnlUeXBlW2V2ZW50LnR5cGVdID0gKGV2ZW50c0J5VHlwZVtldmVudC50eXBlXSB8fCAwKSArIDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRvdGFsRXZlbnRzOiB0aGlzLmV2ZW50cy5zaXplLFxuICAgICAgZXZlbnRzQnlTZXZlcml0eSxcbiAgICAgIGV2ZW50c0J5VHlwZSxcbiAgICAgIHJlY2VudENyaXRpY2FsRXZlbnRzOiB0aGlzLmdldEV2ZW50c0J5U2V2ZXJpdHkoJ0NSSVRJQ0FMJykuc2xpY2UoLTEwKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyBvbGQgZXZlbnRzIChmb3IgbWVtb3J5IG1hbmFnZW1lbnQpXG4gICAqL1xuICBzdGF0aWMgY2xlYXJPbGRFdmVudHMoZGF5c1RvS2VlcDogbnVtYmVyID0gNyk6IHZvaWQge1xuICAgIGNvbnN0IGN1dG9mZkRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGN1dG9mZkRhdGUuc2V0RGF0ZShjdXRvZmZEYXRlLmdldERhdGUoKSAtIGRheXNUb0tlZXApO1xuICAgIGNvbnN0IGN1dG9mZlRpbWVzdGFtcCA9IGN1dG9mZkRhdGUudG9JU09TdHJpbmcoKTtcblxuICAgIGNvbnN0IHJlbWFpbmluZyA9IHRoaXMuZXZlbnRzLnRvQXJyYXkoKS5maWx0ZXIoXG4gICAgICBldmVudCA9PiBldmVudC50aW1lc3RhbXAgPj0gY3V0b2ZmVGltZXN0YW1wXG4gICAgKTtcbiAgICB0aGlzLmV2ZW50cy5yZXNldChbLi4ucmVtYWluaW5nXSk7XG4gIH1cblxuICAvKipcbiAgICogVEVTVElORyBPTkxZOiBDbGVhcnMgYWxsIGV2ZW50cyBhbmQgcmVzZXRzIGNvdW50ZXJcbiAgICogU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGluIHRlc3QgY2xlYW51cCAoYWZ0ZXJFYWNoL2FmdGVyQWxsKVxuICAgKiB0byBwcmV2ZW50IHRlc3QgcG9sbHV0aW9uIGZyb20gYWNjdW11bGF0ZWQgc2VjdXJpdHkgZXZlbnRzXG4gICAqL1xuICBzdGF0aWMgY2xlYXJBbGxFdmVudHNGb3JUZXN0aW5nKCk6IHZvaWQge1xuICAgIHRoaXMuZXZlbnRzLmNsZWFyKCk7XG4gICAgdGhpcy5ldmVudENvdW50ID0gMDtcbiAgICB0aGlzLmRlZHVwLmNsZWFyKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackgroundValidator.d.ts","sourceRoot":"","sources":["../../../src/security/validation/BackgroundValidator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;
|
|
1
|
+
{"version":3,"file":"BackgroundValidator.d.ts","sourceRoot":"","sources":["../../../src/security/validation/BackgroundValidator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AASH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,mDAAmD;IACnD,OAAO,EAAE,OAAO,CAAC;IAEjB,6EAA6E;IAC7E,eAAe,EAAE,MAAM,CAAC;IAExB,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC;IAElB,2EAA2E;IAC3E,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAYD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAC;IAEZ,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAC;IAEpB,oCAAoC;IACpC,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IAEjD,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAC;IAEjB,gDAAgD;IAChD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,qDAAqD;IACrD,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,2CAA2C;IAC3C,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,qBAAa,mBAAmB;IAM5B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa;IANhC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IACnD,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,YAAY,CAAkB;gBAGnB,gBAAgB,EAAE,gBAAgB,EAClC,aAAa,EAAE,GAAG,EAAE,qDAAqD;IAC1F,MAAM,CAAC,EAAE,OAAO,CAAC,yBAAyB,CAAC;IAU7C;;;OAGG;IACH,KAAK,IAAI,IAAI;IAwBb;;OAEG;IACH,IAAI,IAAI,IAAI;IAQZ;;;OAGG;IACG,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC;IAsC/C;;;;;OAKG;YACW,gCAAgC;IA8B9C;;OAEG;YACW,YAAY;IAe1B;;;;OAIG;YACW,cAAc;IA4C5B;;;;;OAKG;YACW,aAAa;IA0D3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAmB3B;;OAEG;IACH,OAAO,CAAC,aAAa;IAQrB;;OAEG;IACH,QAAQ;;;;;;IASR;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAI/B"}
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
* @module BackgroundValidator
|
|
23
23
|
*/
|
|
24
24
|
import { logger } from '../../utils/logger.js';
|
|
25
|
-
import { ContentValidator } from '../contentValidator.js';
|
|
25
|
+
import { ContentValidator, MALICIOUS_YAML_CONTENT_PATTERN, } from '../contentValidator.js';
|
|
26
26
|
import { TRUST_LEVELS } from '../../elements/memories/constants.js';
|
|
27
27
|
/**
|
|
28
28
|
* Default configuration for background validation
|
|
@@ -230,7 +230,7 @@ export class BackgroundValidator {
|
|
|
230
230
|
async validateEntry(entry) {
|
|
231
231
|
logger.debug('Validating entry', { entryId: entry.id });
|
|
232
232
|
// Validate content using ContentValidator
|
|
233
|
-
const validationResult = ContentValidator.
|
|
233
|
+
const validationResult = ContentValidator.validateAndSanitizeYamlAware(entry.content, {
|
|
234
234
|
skipSizeCheck: true,
|
|
235
235
|
});
|
|
236
236
|
// Determine new trust level based on validation results
|
|
@@ -261,7 +261,9 @@ export class BackgroundValidator {
|
|
|
261
261
|
// Store sanitized patterns and content in entry metadata
|
|
262
262
|
// Phase 2 will add encryption to these patterns
|
|
263
263
|
entry.sanitizedPatterns = extractionResult.patterns;
|
|
264
|
-
entry.sanitizedContent =
|
|
264
|
+
entry.sanitizedContent = validationResult.detectedPatterns?.includes(MALICIOUS_YAML_CONTENT_PATTERN)
|
|
265
|
+
? validationResult.sanitizedContent
|
|
266
|
+
: extractionResult.sanitizedContent;
|
|
265
267
|
logger.info('Patterns extracted from entry', {
|
|
266
268
|
entryId: entry.id,
|
|
267
269
|
patternCount: extractionResult.patternCount,
|
|
@@ -318,4 +320,4 @@ export class BackgroundValidator {
|
|
|
318
320
|
logger.debug('BackgroundValidator disposed');
|
|
319
321
|
}
|
|
320
322
|
}
|
|
321
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFja2dyb3VuZFZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZWN1cml0eS92YWxpZGF0aW9uL0JhY2tncm91bmRWYWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFnQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQXFCcEU7O0dBRUc7QUFDSCxNQUFNLGNBQWMsR0FBOEI7SUFDaEQsT0FBTyxFQUFFLElBQUk7SUFDYixlQUFlLEVBQUUsR0FBRyxFQUFHLFlBQVk7SUFDbkMsU0FBUyxFQUFFLEVBQUU7SUFDYixtQkFBbUIsRUFBRSxJQUFJO0NBQzFCLENBQUM7QUFrQ0Y7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxPQUFPLG1CQUFtQjtJQU1YO0lBQ0E7SUFORixNQUFNLENBQTRCO0lBQzNDLGNBQWMsQ0FBa0I7SUFDaEMsWUFBWSxHQUFZLEtBQUssQ0FBQztJQUV0QyxZQUNtQixnQkFBa0MsRUFDbEMsYUFBa0IsRUFBRSxxREFBcUQ7SUFDMUYsTUFBMkM7UUFGMUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBSztRQUduQyxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsR0FBRyxjQUFjLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUMvQyxNQUFNLENBQUMsSUFBSSxDQUFDLGlDQUFpQyxFQUFFO1lBQzdDLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU87WUFDNUIsZUFBZSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZTtZQUM1QyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FB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LElBQUksZ0JBQWdCLENBQUMsUUFBUSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ3JGLDJFQUEyRTtZQUMzRSw4RUFBOEU7WUFDOUUsc0RBQXNEO1lBQ3RELE9BQU8sWUFBWSxDQUFDLE9BQU8sQ0FBQztRQUM5QixDQUFDO1FBRUQsa0VBQWtFO1FBQ2xFLGdEQUFnRDtRQUNoRCxPQUFPLFlBQVksQ0FBQyxTQUFTLENBQUM7SUFDaEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ssYUFBYSxDQUFJLEtBQVUsRUFBRSxTQUFpQjtRQUNwRCxNQUFNLE9BQU8sR0FBVSxFQUFFLENBQUM7UUFDMUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2pELE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVE7UUFDTixPQUFPO1lBQ0wsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTztZQUM1QixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDL0IsZUFBZSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZTtZQUM1QyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTO1NBQ2pDLENBQUM7SUFDSixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLE9BQU87UUFDWCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDWixNQUFNLENBQUMsS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7SUFDL0MsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBCYWNrZ3JvdW5kIFZhbGlkYXRpb24gU2VydmljZSBmb3IgTWVtb3J5IFNlY3VyaXR5XG4gKlxuICogUGFydCBvZiBJc3N1ZSAjMTMxNCBQaGFzZSAxOiBNZW1vcnkgU2VjdXJpdHkgQXJjaGl0ZWN0dXJlXG4gKlxuICogUFVSUE9TRTpcbiAqIEFzeW5jaHJvbm91c2x5IHZhbGlkYXRlcyBVTlRSVVNURUQgbWVtb3J5IGVudHJpZXMgYW5kIHVwZGF0ZXMgdGhlaXIgdHJ1c3QgbGV2ZWxzXG4gKiB3aXRob3V0IGJsb2NraW5nIG1lbW9yeSBjcmVhdGlvbi4gUnVucyBvdXRzaWRlIHRoZSBMTE0gcmVxdWVzdCBwYXRoIHRvIGF2b2lkXG4gKiB0b2tlbiBjb3N0cyBhbmQgbGF0ZW5jeS5cbiAqXG4gKiBBUkNISVRFQ1RVUkU6XG4gKiAtIExheWVyIDIgaW4gdGhlIE1lbW9yeSBTZWN1cml0eSBBcmNoaXRlY3R1cmUgKHNlZSBkb2NzL2RldmVsb3BtZW50L01FTU9SWV9TRUNVUklUWV9BUkNISVRFQ1RVUkUubWQpXG4gKiAtIFJ1bnMgc2VydmVyLXNpZGUsIG5vdCBpbiBMTE0gY29udGV4dFxuICogLSBObyB0b2tlbiBjb3N0IGZvciB2YWxpZGF0aW9uXG4gKiAtIFVwZGF0ZXMgdHJ1c3QgbGV2ZWxzIGluLXBsYWNlXG4gKlxuICogVFJVU1QgTEVWRUwgVFJBTlNJVElPTlM6XG4gKiBVTlRSVVNURUQg4oaSIFZBTElEQVRFRCAoY2xlYW4gY29udGVudCwgbm8gcGF0dGVybnMpXG4gKiBVTlRSVVNURUQg4oaSIEZMQUdHRUQgKGRhbmdlcm91cyBwYXR0ZXJucyBkZXRlY3RlZCwgbmVlZHMgZW5jcnlwdGlvbilcbiAqIFVOVFJVU1RFRCDihpIgUVVBUkFOVElORUQgKGV4cGxpY2l0bHkgbWFsaWNpb3VzLCBjcml0aWNhbCB0aHJlYXQpXG4gKlxuICogQG1vZHVsZSBCYWNrZ3JvdW5kVmFsaWRhdG9yXG4gKi9cblxuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vdXRpbHMvbG9nZ2VyLmpzJztcbmltcG9ydCB7IENvbnRlbnRWYWxpZGF0b3IsIHR5cGUgQ29udGVudFZhbGlkYXRpb25SZXN1bHQgfSBmcm9tICcuLi9jb250ZW50VmFsaWRhdG9yLmpzJztcbmltcG9ydCB7IFRSVVNUX0xFVkVMUyB9IGZyb20gJy4uLy4uL2VsZW1lbnRzL21lbW9yaWVzL2NvbnN0YW50cy5qcyc7XG5pbXBvcnQgeyBQYXR0ZXJuRXh0cmFjdG9yIH0gZnJvbSAnLi9QYXR0ZXJuRXh0cmFjdG9yLmpzJztcbmltcG9ydCB0eXBlIHsgTWVtb3J5IH0gZnJvbSAnLi4vLi4vZWxlbWVudHMvbWVtb3JpZXMvTWVtb3J5LmpzJztcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBiYWNrZ3JvdW5kIHZhbGlkYXRpb24gYmVoYXZpb3JcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCYWNrZ3JvdW5kVmFsaWRhdG9yQ29uZmlnIHtcbiAgLyoqIEVuYWJsZSBiYWNrZ3JvdW5kIHZhbGlkYXRpb24gKGRlZmF1bHQ6IHRydWUpICovXG4gIGVuYWJsZWQ6IGJvb2xlYW47XG5cbiAgLyoqIEludGVydmFsIGluIHNlY29uZHMgYmV0d2VlbiB2YWxpZGF0aW9uIHJ1bnMgKGRlZmF1bHQ6IDMwMCA9IDUgbWludXRlcykgKi9cbiAgaW50ZXJ2YWxTZWNvbmRzOiBudW1iZXI7XG5cbiAgLyoqIE1heGltdW0gbnVtYmVyIG9mIG1lbW9yaWVzIHRvIHByb2Nlc3MgcGVyIGJhdGNoIChkZWZhdWx0OiAxMCkgKi9cbiAgYmF0Y2hTaXplOiBudW1iZXI7XG5cbiAgLyoqIE1heGltdW0gdGltZSBpbiBtcyBmb3IgYSBzaW5nbGUgdmFsaWRhdGlvbiBvcGVyYXRpb24gKGRlZmF1bHQ6IDUwMDApICovXG4gIHZhbGlkYXRpb25UaW1lb3V0TXM6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBEZWZhdWx0IGNvbmZpZ3VyYXRpb24gZm9yIGJhY2tncm91bmQgdmFsaWRhdGlvblxuICovXG5jb25zdCBERUZBVUxUX0NPTkZJRzogQmFja2dyb3VuZFZhbGlkYXRvckNvbmZpZyA9IHtcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgaW50ZXJ2YWxTZWNvbmRzOiAzMDAsICAvLyA1IG1pbnV0ZXNcbiAgYmF0Y2hTaXplOiAxMCxcbiAgdmFsaWRhdGlvblRpbWVvdXRNczogNTAwMCxcbn07XG5cbi8qKlxuICogUGF0dGVybiBpbmZvcm1hdGlvbiBmb3IgZW5jcnlwdGVkIHN0b3JhZ2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTYW5pdGl6ZWRQYXR0ZXJuIHtcbiAgLyoqIFVuaXF1ZSByZWZlcmVuY2UgSUQgZm9yIHRoaXMgcGF0dGVybiAqL1xuICByZWY6IHN0cmluZztcblxuICAvKiogSHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gb2YgdGhlIHBhdHRlcm4gKi9cbiAgZGVzY3JpcHRpb246IHN0cmluZztcblxuICAvKiogU2V2ZXJpdHkgbGV2ZWwgb2YgdGhlIHBhdHRlcm4gKi9cbiAgc2V2ZXJpdHk6ICdjcml0aWNhbCcgfCAnaGlnaCcgfCAnbWVkaXVtJyB8ICdsb3cnO1xuXG4gIC8qKiBMb2NhdGlvbiBpbiBvcmlnaW5hbCBjb250ZW50IChvZmZzZXQgYW5kIGxlbmd0aCkgKi9cbiAgbG9jYXRpb246IHN0cmluZztcblxuICAvKiogRW5jcnlwdGVkIHBhdHRlcm4gKEFFUy0yNTYtR0NNKSAtIFBoYXNlIDIgKi9cbiAgZW5jcnlwdGVkUGF0dGVybj86IHN0cmluZztcblxuICAvKiogRW5jcnlwdGlvbiBhbGdvcml0aG0gdXNlZCAtIFBoYXNlIDIgKi9cbiAgYWxnb3JpdGhtPzogc3RyaW5nO1xuXG4gIC8qKiBJbml0aWFsaXphdGlvbiB2ZWN0b3IgZm9yIGRlY3J5cHRpb24gLSBQaGFzZSAyICovXG4gIGl2Pzogc3RyaW5nO1xuXG4gIC8qKiBHQ00gYXV0aGVudGljYXRpb24gdGFnIGZvciBpbnRlZ3JpdHkgdmVyaWZpY2F0aW9uIC0gUGhhc2UgMiAqL1xuICBhdXRoVGFnPzogc3RyaW5nO1xuXG4gIC8qKiBTYWZldHkgaW5zdHJ1Y3Rpb24gZm9yIHBhdHRlcm4gdXNhZ2UgKi9cbiAgc2FmZXR5SW5zdHJ1Y3Rpb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBCYWNrZ3JvdW5kIHZhbGlkYXRpb24gc2VydmljZSBmb3IgbWVtb3J5IGVudHJpZXNcbiAqXG4gKiBUaGlzIHNlcnZpY2UgcnVucyBvdXRzaWRlIHRoZSBMTE0gcmVxdWVzdCBwYXRoIHRvIHZhbGlkYXRlIFVOVFJVU1RFRFxuICogbWVtb3J5IGVudHJpZXMgYW5kIHVwZGF0ZSB0aGVpciB0cnVzdCBsZXZlbHMgYmFzZWQgb24gc2VjdXJpdHkgYW5hbHlzaXMuXG4gKlxuICogUkVGQUNUT1IgTk9URTpcbiAqIENvbnZlcnRlZCB0byBmdWxsIERJIGFyY2hpdGVjdHVyZS4gUmVtb3ZlZCBzaW5nbGV0b24gZXhwb3J0LlxuICogUGF0dGVybkV4dHJhY3RvciBpcyBub3cgaW5qZWN0ZWQgYXMgYSBkZXBlbmRlbmN5IGluc3RlYWQgb2Ygc3RhdGljIGNhbGxzLlxuICovXG5leHBvcnQgY2xhc3MgQmFja2dyb3VuZFZhbGlkYXRvciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnOiBCYWNrZ3JvdW5kVmFsaWRhdG9yQ29uZmlnO1xuICBwcml2YXRlIGludGVydmFsSGFuZGxlPzogTm9kZUpTLlRpbWVvdXQ7XG4gIHByaXZhdGUgaXNQcm9jZXNzaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBwYXR0ZXJuRXh0cmFjdG9yOiBQYXR0ZXJuRXh0cmFjdG9yLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbWVtb3J5TWFuYWdlcjogYW55LCAvLyBNZW1vcnlNYW5hZ2VyIC0gdXNpbmcgYW55IHRvIGF2b2lkIGNpcmN1bGFyIGltcG9ydFxuICAgIGNvbmZpZz86IFBhcnRpYWw8QmFja2dyb3VuZFZhbGlkYXRvckNvbmZpZz5cbiAgKSB7XG4gICAgdGhpcy5jb25maWcgPSB7IC4uLkRFRkFVTFRfQ09ORklHLCAuLi5jb25maWcgfTtcbiAgICBsb2dnZXIuaW5mbygnQmFja2dyb3VuZFZhbGlkYXRvciBpbml0aWFsaXplZCcsIHtcbiAgICAgIGVuYWJsZWQ6IHRoaXMuY29uZmlnLmVuYWJsZWQsXG4gICAgICBpbnRlcnZhbFNlY29uZHM6IHRoaXMuY29uZmlnLmludGVydmFsU2Vjb25kcyxcbiAgICAgIGJhdGNoU2l6ZTogdGhpcy5jb25maWcuYmF0Y2hTaXplLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IHRoZSBiYWNrZ3JvdW5kIHZhbGlkYXRpb24gc2VydmljZVxuICAgKiBCZWdpbnMgcGVyaW9kaWMgdmFsaWRhdGlvbiBvZiBVTlRSVVNURUQgbWVtb3JpZXNcbiAgICovXG4gIHN0YXJ0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jb25maWcuZW5hYmxlZCkge1xuICAgICAgbG9nZ2VyLmluZm8oJ0JhY2tncm91bmQgdmFsaWRhdGlvbiBkaXNhYmxlZCBpbiBjb25maWcnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pbnRlcnZhbEhhbmRsZSkge1xuICAgICAgbG9nZ2VyLndhcm4oJ0JhY2tncm91bmQgdmFsaWRhdGlvbiBhbHJlYWR5IHJ1bm5pbmcnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsb2dnZXIuaW5mbygnU3RhcnRpbmcgYmFja2dyb3VuZCB2YWxpZGF0aW9uIHNlcnZpY2UnLCB7XG4gICAgICBpbnRlcnZhbFNlY29uZHM6IHRoaXMuY29uZmlnLmludGVydmFsU2Vjb25kcyxcbiAgICB9KTtcblxuICAgIC8vIFJ1biBpbW1lZGlhdGVseSBvbiBzdGFydFxuICAgIHZvaWQgdGhpcy5wcm9jZXNzVW50cnVzdGVkTWVtb3JpZXMoKTtcblxuICAgIC8vIFRoZW4gcnVuIHBlcmlvZGljYWxseVxuICAgIHRoaXMuaW50ZXJ2YWxIYW5kbGUgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICB2b2lkIHRoaXMucHJvY2Vzc1VudHJ1c3RlZE1lbW9yaWVzKCk7XG4gICAgfSwgdGhpcy5jb25maWcuaW50ZXJ2YWxTZWNvbmRzICogMTAwMCk7XG4gIH1cblxuICAvKipcbiAgICogU3RvcCB0aGUgYmFja2dyb3VuZCB2YWxpZGF0aW9uIHNlcnZpY2VcbiAgICovXG4gIHN0b3AoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW50ZXJ2YWxIYW5kbGUpIHtcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbEhhbmRsZSk7XG4gICAgICB0aGlzLmludGVydmFsSGFuZGxlID0gdW5kZWZpbmVkO1xuICAgICAgbG9nZ2VyLmluZm8oJ0JhY2tncm91bmQgdmFsaWRhdGlvbiBzZXJ2aWNlIHN0b3BwZWQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUHJvY2VzcyBhbGwgVU5UUlVTVEVEIG1lbW9yeSBlbnRyaWVzXG4gICAqIFRoaXMgaXMgdGhlIG1haW4gYmFja2dyb3VuZCB2YWxpZGF0aW9uIGxvb3BcbiAgICovXG4gIGFzeW5jIHByb2Nlc3NVbnRydXN0ZWRNZW1vcmllcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5pc1Byb2Nlc3NpbmcpIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZygnVmFsaWRhdGlvbiBhbHJlYWR5IGluIHByb2dyZXNzLCBza2lwcGluZyB0aGlzIHJ1bicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaXNQcm9jZXNzaW5nID0gdHJ1ZTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBQSEFTRSAxIElOQ09NUExFVEU6IE1lbW9yeSBkaXNjb3ZlcnkgaW50ZWdyYXRpb24gcGVuZGluZ1xuICAgICAgLy8gSXNzdWUgIzEzMTQgUGhhc2UgMSAtIFRoaXMgd2lsbCBiZSBjb25uZWN0ZWQgdG8gTWVtb3J5IGxvYWRpbmcgc3lzdGVtXG4gICAgICAvLyBpbiBhIGZvbGxvdy11cCBQUiBvbmNlIE1lbW9yeS5maW5kKCkgQVBJIGlzIGF2YWlsYWJsZVxuICAgICAgY29uc3QgdW50cnVzdGVkTWVtb3JpZXMgPSBhd2FpdCB0aGlzLmZpbmRNZW1vcmllc1dpdGhVbnRydXN0ZWRFbnRyaWVzKCk7XG5cbiAgICAgIGlmICh1bnRydXN0ZWRNZW1vcmllcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBsb2dnZXIuaW5mbygnRm91bmQgdW50cnVzdGVkIG1lbW9yaWVzIHRvIHZhbGlkYXRlJywge1xuICAgICAgICBjb3VudDogdW50cnVzdGVkTWVtb3JpZXMubGVuZ3RoLFxuICAgICAgICBiYXRjaFNpemU6IHRoaXMuY29uZmlnLmJhdGNoU2l6ZSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBQcm9jZXNzIGluIGJhdGNoZXNcbiAgICAgIGNvbnN0IGJhdGNoZXMgPSB0aGlzLmNyZWF0ZUJhdGNoZXModW50cnVzdGVkTWVtb3JpZXMsIHRoaXMuY29uZmlnLmJhdGNoU2l6ZSk7XG5cbiAgICAgIGZvciAoY29uc3QgYmF0Y2ggb2YgYmF0Y2hlcykge1xuICAgICAgICBhd2FpdCB0aGlzLnByb2Nlc3NCYXRjaChiYXRjaCk7XG4gICAgICB9XG5cbiAgICAgIGxvZ2dlci5pbmZvKCdWYWxpZGF0aW9uIHBhc3MgY29tcGxldGUnKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgbG9nZ2VyLmVycm9yKCdFcnJvciBkdXJpbmcgYmFja2dyb3VuZCB2YWxpZGF0aW9uJywgeyBlcnJvciB9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5pc1Byb2Nlc3NpbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRmluZCBhbGwgbWVtb3JpZXMgdGhhdCBoYXZlIFVOVFJVU1RFRCBlbnRyaWVzXG4gICAqXG4gICAqIERJIFJFRkFDVE9SOiBVc2UgaW5qZWN0ZWQgTWVtb3J5TWFuYWdlciBpbnN0ZWFkIG9mIHN0YXRpYyBNZW1vcnkgbWV0aG9kc1xuICAgKiBMb2FkcyBtZW1vcmllcyBmcm9tIGZpbGVzeXN0ZW0gYW5kIGZpbHRlcnMgYnkgdHJ1c3QgbGV2ZWxcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZmluZE1lbW9yaWVzV2l0aFVudHJ1c3RlZEVudHJpZXMoKTogUHJvbWlzZTxNZW1vcnlbXT4ge1xuICAgIC8vIExvYWQgYWxsIG1lbW9yaWVzIHVzaW5nIHRoZSBpbmplY3RlZCBNZW1vcnlNYW5hZ2VyXG4gICAgY29uc3QgYWxsTWVtb3JpZXMgPSBhd2FpdCB0aGlzLm1lbW9yeU1hbmFnZXIubGlzdCgpO1xuXG4gICAgLy8gRmlsdGVyIHRvIG9ubHkgbWVtb3JpZXMgd2l0aCBVTlRSVVNURUQgZW50cmllc1xuICAgIGNvbnN0IHVudHJ1c3RlZE1lbW9yaWVzOiBNZW1vcnlbXSA9IFtdO1xuICAgIGNvbnN0IGxpbWl0ID0gdGhpcy5jb25maWcuYmF0Y2hTaXplICogMTA7XG5cbiAgICBmb3IgKGNvbnN0IG1lbW9yeSBvZiBhbGxNZW1vcmllcykge1xuICAgICAgY29uc3QgaGFzVW50cnVzdGVkRW50cmllcyA9IG1lbW9yeS5nZXRFbnRyaWVzQnlUcnVzdExldmVsKFRSVVNUX0xFVkVMUy5VTlRSVVNURUQpLmxlbmd0aCA+IDA7XG4gICAgICBpZiAoaGFzVW50cnVzdGVkRW50cmllcykge1xuICAgICAgICB1bnRydXN0ZWRNZW1vcmllcy5wdXNoKG1lbW9yeSk7XG5cbiAgICAgICAgLy8gQXBwbHkgbGltaXRcbiAgICAgICAgaWYgKHVudHJ1c3RlZE1lbW9yaWVzLmxlbmd0aCA+PSBsaW1pdCkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHVudHJ1c3RlZE1lbW9yaWVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZygnRm91bmQgbWVtb3JpZXMgd2l0aCB1bnRydXN0ZWQgZW50cmllcycsIHtcbiAgICAgICAgY291bnQ6IHVudHJ1c3RlZE1lbW9yaWVzLmxlbmd0aCxcbiAgICAgICAgbGltaXRcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB1bnRydXN0ZWRNZW1vcmllcztcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzIGEgYmF0Y2ggb2YgbWVtb3JpZXMgZm9yIHZhbGlkYXRpb25cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgcHJvY2Vzc0JhdGNoKG1lbW9yaWVzOiBNZW1vcnlbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGxvZ2dlci5kZWJ1ZygnUHJvY2Vzc2luZyBiYXRjaCcsIHsgc2l6ZTogbWVtb3JpZXMubGVuZ3RoIH0pO1xuXG4gICAgZm9yIChjb25zdCBtZW1vcnkgb2YgbWVtb3JpZXMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMudmFsaWRhdGVNZW1vcnkobWVtb3J5KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZ2dlci5lcnJvcignRXJyb3IgdmFsaWRhdGluZyBtZW1vcnknLCB7XG4gICAgICAgICAgbWVtb3J5SWQ6IG1lbW9yeS5pZCxcbiAgICAgICAgICBlcnJvcixcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGFsbCBVTlRSVVNURUQgZW50cmllcyBpbiBhIG1lbW9yeVxuICAgKiBGSVggIzEzMjA6IE5vdyB1c2VzIHB1YmxpYyBNZW1vcnkgQVBJIGFuZCBzYXZlcyBjaGFuZ2VzXG4gICAqIEZJWCAoQ2xhdWRlIEJvdCBSZXZpZXcpOiBSZW1vdmVkIHR5cGUgY2FzdGluZyBmb3IgbWVtb3J5LmlkXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHZhbGlkYXRlTWVtb3J5KG1lbW9yeTogTWVtb3J5KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbG9nZ2VyLmRlYnVnKCdWYWxpZGF0aW5nIG1lbW9yeScsIHsgbWVtb3J5SWQ6IG1lbW9yeS5pZCB9KTtcblxuICAgIGxldCB1cGRhdGVkQ291bnQgPSAwO1xuXG4gICAgLy8gRklYICMxMzIwOiBVc2UgcHVibGljIEFQSSBpbnN0ZWFkIG9mIGNhc3RpbmcgdG8gYW55XG4gICAgY29uc3QgZW50cmllcyA9IG1lbW9yeS5nZXRFbnRyaWVzQnlUcnVzdExldmVsKFRSVVNUX0xFVkVMUy5VTlRSVVNURUQpO1xuXG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB1cGRhdGVkID0gYXdhaXQgdGhpcy52YWxpZGF0ZUVudHJ5KGVudHJ5KTtcbiAgICAgICAgaWYgKHVwZGF0ZWQpIHtcbiAgICAgICAgICB1cGRhdGVkQ291bnQrKztcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKCdFcnJvciB2YWxpZGF0aW5nIGVudHJ5Jywge1xuICAgICAgICAgIGVudHJ5SWQ6IGVudHJ5LmlkLFxuICAgICAgICAgIGVycm9yLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodXBkYXRlZENvdW50ID4gMCkge1xuICAgICAgbG9nZ2VyLmluZm8oJ1VwZGF0ZWQgdHJ1c3QgbGV2ZWxzIGluIG1lbW9yeScsIHtcbiAgICAgICAgbWVtb3J5SWQ6IG1lbW9yeS5pZCxcbiAgICAgICAgdXBkYXRlZENvdW50LFxuICAgICAgfSk7XG5cbiAgICAgIC8vIERJIFJFRkFDVE9SOiBVc2UgaW5qZWN0ZWQgTWVtb3J5TWFuYWdlciB0byBzYXZlXG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLm1lbW9yeU1hbmFnZXIuc2F2ZShtZW1vcnkpO1xuICAgICAgICBsb2dnZXIuZGVidWcoJ01lbW9yeSBzYXZlZCBzdWNjZXNzZnVsbHknLCB7XG4gICAgICAgICAgbWVtb3J5SWQ6IG1lbW9yeS5pZFxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZ2dlci5lcnJvcignRmFpbGVkIHRvIHNhdmUgbWVtb3J5IGFmdGVyIHZhbGlkYXRpb24nLCB7XG4gICAgICAgICAgbWVtb3J5SWQ6IG1lbW9yeS5pZCxcbiAgICAgICAgICBlcnJvclxuICAgICAgICB9KTtcbiAgICAgICAgLy8gRG9uJ3QgdGhyb3cgLSBjb250aW51ZSB3aXRoIG90aGVyIG1lbW9yaWVzXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGEgc2luZ2xlIG1lbW9yeSBlbnRyeSBhbmQgdXBkYXRlIGl0cyB0cnVzdCBsZXZlbFxuICAgKlxuICAgKiBAcGFyYW0gZW50cnkgLSBUaGUgbWVtb3J5IGVudHJ5IHRvIHZhbGlkYXRlXG4gICAqIEByZXR1cm5zIHRydWUgaWYgdGhlIGVudHJ5IHdhcyB1cGRhdGVkLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgdmFsaWRhdGVFbnRyeShlbnRyeTogYW55KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgbG9nZ2VyLmRlYnVnKCdWYWxpZGF0aW5nIGVudHJ5JywgeyBlbnRyeUlkOiBlbnRyeS5pZCB9KTtcblxuICAgIC8vIFZhbGlkYXRlIGNvbnRlbnQgdXNpbmcgQ29udGVudFZhbGlkYXRvclxuICAgIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSBDb250ZW50VmFsaWRhdG9yLnZhbGlkYXRlQW5kU2FuaXRpemUoZW50cnkuY29udGVudCwge1xuICAgICAgc2tpcFNpemVDaGVjazogdHJ1ZSxcbiAgICB9KTtcblxuICAgIC8vIERldGVybWluZSBuZXcgdHJ1c3QgbGV2ZWwgYmFzZWQgb24gdmFsaWRhdGlvbiByZXN1bHRzXG4gICAgY29uc3QgbmV3VHJ1c3RMZXZlbCA9IHRoaXMuZGV0ZXJtaW5lVHJ1c3RMZXZlbCh2YWxpZGF0aW9uUmVzdWx0KTtcblxuICAgIGlmIChuZXdUcnVzdExldmVsID09PSBlbnRyeS50cnVzdExldmVsKSB7XG4gICAgICBsb2dnZXIuZGVidWcoJ1RydXN0IGxldmVsIHVuY2hhbmdlZCcsIHtcbiAgICAgICAgZW50cnlJZDogZW50cnkuaWQsXG4gICAgICAgIHRydXN0TGV2ZWw6IGVudHJ5LnRydXN0TGV2ZWwsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgdHJ1c3QgbGV2ZWxcbiAgICBlbnRyeS50cnVzdExldmVsID0gbmV3VHJ1c3RMZXZlbDtcblxuICAgIGxvZ2dlci5pbmZvKCdVcGRhdGVkIGVudHJ5IHRydXN0IGxldmVsJywge1xuICAgICAgZW50cnlJZDogZW50cnkuaWQsXG4gICAgICBvbGRUcnVzdExldmVsOiBUUlVTVF9MRVZFTFMuVU5UUlVTVEVELFxuICAgICAgbmV3VHJ1c3RMZXZlbCxcbiAgICAgIGRldGVjdGVkUGF0dGVybnM6IHZhbGlkYXRpb25SZXN1bHQuZGV0ZWN0ZWRQYXR0ZXJucz8ubGVuZ3RoIHx8IDAsXG4gICAgfSk7XG5cbiAgICAvLyBJZiBGTEFHR0VELCBleHRyYWN0IHBhdHRlcm5zIGFuZCBjcmVhdGUgc2FuaXRpemVkIGNvbnRlbnRcbiAgICBpZiAobmV3VHJ1c3RMZXZlbCA9PT0gVFJVU1RfTEVWRUxTLkZMQUdHRUQpIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZygnRW50cnkgZmxhZ2dlZCwgZXh0cmFjdGluZyBwYXR0ZXJucycsIHtcbiAgICAgICAgZW50cnlJZDogZW50cnkuaWQsXG4gICAgICAgIHBhdHRlcm5zOiB2YWxpZGF0aW9uUmVzdWx0LmRldGVjdGVkUGF0dGVybnMsXG4gICAgICB9KTtcblxuICAgICAgLy8gUGhhc2UgMTogRXh0cmFjdCBwYXR0ZXJucyBhbmQgY3JlYXRlIHNhbml0aXplZCBjb250ZW50XG4gICAgICBjb25zdCBleHRyYWN0aW9uUmVzdWx0ID0gdGhpcy5wYXR0ZXJuRXh0cmFjdG9yLmV4dHJhY3RQYXR0ZXJucyhcbiAgICAgICAgZW50cnkuY29udGVudCxcbiAgICAgICAgdmFsaWRhdGlvblJlc3VsdFxuICAgICAgKTtcblxuICAgICAgLy8gU3RvcmUgc2FuaXRpemVkIHBhdHRlcm5zIGFuZCBjb250ZW50IGluIGVudHJ5IG1ldGFkYXRhXG4gICAgICAvLyBQaGFzZSAyIHdpbGwgYWRkIGVuY3J5cHRpb24gdG8gdGhlc2UgcGF0dGVybnNcbiAgICAgIGVudHJ5LnNhbml0aXplZFBhdHRlcm5zID0gZXh0cmFjdGlvblJlc3VsdC5wYXR0ZXJucztcbiAgICAgIGVudHJ5LnNhbml0aXplZENvbnRlbnQgPSBleHRyYWN0aW9uUmVzdWx0LnNhbml0aXplZENvbnRlbnQ7XG5cbiAgICAgIGxvZ2dlci5pbmZvKCdQYXR0ZXJucyBleHRyYWN0ZWQgZnJvbSBlbnRyeScsIHtcbiAgICAgICAgZW50cnlJZDogZW50cnkuaWQsXG4gICAgICAgIHBhdHRlcm5Db3VudDogZXh0cmFjdGlvblJlc3VsdC5wYXR0ZXJuQ291bnQsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgdGhlIGFwcHJvcHJpYXRlIHRydXN0IGxldmVsIGJhc2VkIG9uIHZhbGlkYXRpb24gcmVzdWx0c1xuICAgKi9cbiAgcHJpdmF0ZSBkZXRlcm1pbmVUcnVzdExldmVsKHZhbGlkYXRpb25SZXN1bHQ6IENvbnRlbnRWYWxpZGF0aW9uUmVzdWx0KTogc3RyaW5nIHtcbiAgICAvLyBJZiB2YWxpZGF0aW9uIHBhc3NlZCB3aXRoIG5vIHBhdHRlcm5zLCBtYXJrIGFzIFZBTElEQVRFRFxuICAgIGlmICh2YWxpZGF0aW9uUmVzdWx0LmlzVmFsaWQgJiYgKCF2YWxpZGF0aW9uUmVzdWx0LmRldGVjdGVkUGF0dGVybnMgfHwgdmFsaWRhdGlvblJlc3VsdC5kZXRlY3RlZFBhdHRlcm5zLmxlbmd0aCA9PT0gMCkpIHtcbiAgICAgIHJldHVybiBUUlVTVF9MRVZFTFMuVkFMSURBVEVEO1xuICAgIH1cblxuICAgIC8vIElmIGNyaXRpY2FsL2hpZ2ggc2V2ZXJpdHkgdGhyZWF0cyBkZXRlY3RlZCwgbWFyayBhcyBGTEFHR0VEXG4gICAgaWYgKHZhbGlkYXRpb25SZXN1bHQuc2V2ZXJpdHkgPT09ICdjcml0aWNhbCcgfHwgdmFsaWRhdGlvblJlc3VsdC5zZXZlcml0eSA9PT0gJ2hpZ2gnKSB7XG4gICAgICAvLyBQSEFTRSAxIElOQ09NUExFVEU6IFFVQVJBTlRJTkVEIHRydXN0IGxldmVsIGxvZ2ljIGRlZmVycmVkIChJc3N1ZSAjMTMxNClcbiAgICAgIC8vIFdpbGwgYWRkIGRpc3RpbmN0aW9uIGJldHdlZW4gRkxBR0dFRCAoZGFuZ2Vyb3VzKSB2cyBRVUFSQU5USU5FRCAobWFsaWNpb3VzKVxuICAgICAgLy8gRm9yIG5vdywgYWxsIGhpZ2gvY3JpdGljYWwgc2V2ZXJpdHkgZ29lcyB0byBGTEFHR0VEXG4gICAgICByZXR1cm4gVFJVU1RfTEVWRUxTLkZMQUdHRUQ7XG4gICAgfVxuXG4gICAgLy8gTWVkaXVtL2xvdyBzZXZlcml0eSBvciBtaW5vciBpc3N1ZXMgLSBrZWVwIGFzIFVOVFJVU1RFRCBmb3Igbm93XG4gICAgLy8gKENvdWxkIGJlIFZBTElEQVRFRCBpbiBhIG1vcmUgbGVuaWVudCBwb2xpY3kpXG4gICAgcmV0dXJuIFRSVVNUX0xFVkVMUy5VTlRSVVNURUQ7XG4gIH1cblxuICAvKipcbiAgICogU3BsaXQgYW4gYXJyYXkgaW50byBiYXRjaGVzIG9mIHNwZWNpZmllZCBzaXplXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZUJhdGNoZXM8VD4oaXRlbXM6IFRbXSwgYmF0Y2hTaXplOiBudW1iZXIpOiBUW11bXSB7XG4gICAgY29uc3QgYmF0Y2hlczogVFtdW10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSArPSBiYXRjaFNpemUpIHtcbiAgICAgIGJhdGNoZXMucHVzaChpdGVtcy5zbGljZShpLCBpICsgYmF0Y2hTaXplKSk7XG4gICAgfVxuICAgIHJldHVybiBiYXRjaGVzO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjdXJyZW50IHZhbGlkYXRpb24gc3RhdGlzdGljc1xuICAgKi9cbiAgZ2V0U3RhdHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVuYWJsZWQ6IHRoaXMuY29uZmlnLmVuYWJsZWQsXG4gICAgICBpc1Byb2Nlc3Npbmc6IHRoaXMuaXNQcm9jZXNzaW5nLFxuICAgICAgaW50ZXJ2YWxTZWNvbmRzOiB0aGlzLmNvbmZpZy5pbnRlcnZhbFNlY29uZHMsXG4gICAgICBiYXRjaFNpemU6IHRoaXMuY29uZmlnLmJhdGNoU2l6ZSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIERpc3Bvc2Ugb2YgdGhlIHZhbGlkYXRvciBhbmQgY2xlYW4gdXAgcmVzb3VyY2VzXG4gICAqIEltcGxlbWVudHMgY2xlYW51cCBmb3IgcHJvcGVyIERJIGxpZmVjeWNsZSBtYW5hZ2VtZW50XG4gICAqL1xuICBhc3luYyBkaXNwb3NlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuc3RvcCgpO1xuICAgIGxvZ2dlci5kZWJ1ZygnQmFja2dyb3VuZFZhbGlkYXRvciBkaXNwb3NlZCcpO1xuICB9XG59XG4iXX0=
|
|
323
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFja2dyb3VuZFZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZWN1cml0eS92YWxpZGF0aW9uL0JhY2tncm91bmRWYWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0MsT0FBTyxFQUNMLGdCQUFnQixFQUNoQiw4QkFBOEIsR0FFL0IsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFxQnBFOztHQUVHO0FBQ0gsTUFBTSxjQUFjLEdBQThCO0lBQ2hELE9BQU8sRUFBRSxJQUFJO0lBQ2IsZUFBZSxFQUFFLEdBQUcsRUFBRyxZQUFZO0lBQ25DLFNBQVMsRUFBRSxFQUFFO0lBQ2IsbUJBQW1CLEVBQUUsSUFBSTtDQUMxQixDQUFDO0FBa0NGOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sT0FBTyxtQkFBbUI7SUFNWDtJQUNBO0lBTkYsTUFBTSxDQUE0QjtJQUMzQyxjQUFjLENBQWtCO0lBQ2hDLFlBQVksR0FBWSxLQUFLLENBQUM7SUFFdEMsWUFDbUIsZ0JBQWtDLEVBQ2xDLGFBQWtCLEVBQUUscURBQXFEO0lBQzFGLE1BQTJDO1FBRjFCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsa0JBQWEsR0FBYixhQUFhLENBQUs7UUFHbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLEdBQUcsY0FBYyxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUM7UUFDL0MsTUFBTSxDQUFDLElBQUksQ0FBQyxpQ0FBaUMsRUFBRTtZQUM3QyxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPO1lBQzVCLGVBQWUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWU7WUFDNUMsU0FBUyxFQUFFLElBQUks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QUFDO0lBQy9DLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQmFja2dyb3VuZCBWYWxpZGF0aW9uIFNlcnZpY2UgZm9yIE1lbW9yeSBTZWN1cml0eVxuICpcbiAqIFBhcnQgb2YgSXNzdWUgIzEzMTQgUGhhc2UgMTogTWVtb3J5IFNlY3VyaXR5IEFyY2hpdGVjdHVyZVxuICpcbiAqIFBVUlBPU0U6XG4gKiBBc3luY2hyb25vdXNseSB2YWxpZGF0ZXMgVU5UUlVTVEVEIG1lbW9yeSBlbnRyaWVzIGFuZCB1cGRhdGVzIHRoZWlyIHRydXN0IGxldmVsc1xuICogd2l0aG91dCBibG9ja2luZyBtZW1vcnkgY3JlYXRpb24uIFJ1bnMgb3V0c2lkZSB0aGUgTExNIHJlcXVlc3QgcGF0aCB0byBhdm9pZFxuICogdG9rZW4gY29zdHMgYW5kIGxhdGVuY3kuXG4gKlxuICogQVJDSElURUNUVVJFOlxuICogLSBMYXllciAyIGluIHRoZSBNZW1vcnkgU2VjdXJpdHkgQXJjaGl0ZWN0dXJlIChzZWUgZG9jcy9kZXZlbG9wbWVudC9NRU1PUllfU0VDVVJJVFlfQVJDSElURUNUVVJFLm1kKVxuICogLSBSdW5zIHNlcnZlci1zaWRlLCBub3QgaW4gTExNIGNvbnRleHRcbiAqIC0gTm8gdG9rZW4gY29zdCBmb3IgdmFsaWRhdGlvblxuICogLSBVcGRhdGVzIHRydXN0IGxldmVscyBpbi1wbGFjZVxuICpcbiAqIFRSVVNUIExFVkVMIFRSQU5TSVRJT05TOlxuICogVU5UUlVTVEVEIOKGkiBWQUxJREFURUQgKGNsZWFuIGNvbnRlbnQsIG5vIHBhdHRlcm5zKVxuICogVU5UUlVTVEVEIOKGkiBGTEFHR0VEIChkYW5nZXJvdXMgcGF0dGVybnMgZGV0ZWN0ZWQsIG5lZWRzIGVuY3J5cHRpb24pXG4gKiBVTlRSVVNURUQg4oaSIFFVQVJBTlRJTkVEIChleHBsaWNpdGx5IG1hbGljaW91cywgY3JpdGljYWwgdGhyZWF0KVxuICpcbiAqIEBtb2R1bGUgQmFja2dyb3VuZFZhbGlkYXRvclxuICovXG5cbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uLy4uL3V0aWxzL2xvZ2dlci5qcyc7XG5pbXBvcnQge1xuICBDb250ZW50VmFsaWRhdG9yLFxuICBNQUxJQ0lPVVNfWUFNTF9DT05URU5UX1BBVFRFUk4sXG4gIHR5cGUgQ29udGVudFZhbGlkYXRpb25SZXN1bHQsXG59IGZyb20gJy4uL2NvbnRlbnRWYWxpZGF0b3IuanMnO1xuaW1wb3J0IHsgVFJVU1RfTEVWRUxTIH0gZnJvbSAnLi4vLi4vZWxlbWVudHMvbWVtb3JpZXMvY29uc3RhbnRzLmpzJztcbmltcG9ydCB7IFBhdHRlcm5FeHRyYWN0b3IgfSBmcm9tICcuL1BhdHRlcm5FeHRyYWN0b3IuanMnO1xuaW1wb3J0IHR5cGUgeyBNZW1vcnkgfSBmcm9tICcuLi8uLi9lbGVtZW50cy9tZW1vcmllcy9NZW1vcnkuanMnO1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIGJhY2tncm91bmQgdmFsaWRhdGlvbiBiZWhhdmlvclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJhY2tncm91bmRWYWxpZGF0b3JDb25maWcge1xuICAvKiogRW5hYmxlIGJhY2tncm91bmQgdmFsaWRhdGlvbiAoZGVmYXVsdDogdHJ1ZSkgKi9cbiAgZW5hYmxlZDogYm9vbGVhbjtcblxuICAvKiogSW50ZXJ2YWwgaW4gc2Vjb25kcyBiZXR3ZWVuIHZhbGlkYXRpb24gcnVucyAoZGVmYXVsdDogMzAwID0gNSBtaW51dGVzKSAqL1xuICBpbnRlcnZhbFNlY29uZHM6IG51bWJlcjtcblxuICAvKiogTWF4aW11bSBudW1iZXIgb2YgbWVtb3JpZXMgdG8gcHJvY2VzcyBwZXIgYmF0Y2ggKGRlZmF1bHQ6IDEwKSAqL1xuICBiYXRjaFNpemU6IG51bWJlcjtcblxuICAvKiogTWF4aW11bSB0aW1lIGluIG1zIGZvciBhIHNpbmdsZSB2YWxpZGF0aW9uIG9wZXJhdGlvbiAoZGVmYXVsdDogNTAwMCkgKi9cbiAgdmFsaWRhdGlvblRpbWVvdXRNczogbnVtYmVyO1xufVxuXG4vKipcbiAqIERlZmF1bHQgY29uZmlndXJhdGlvbiBmb3IgYmFja2dyb3VuZCB2YWxpZGF0aW9uXG4gKi9cbmNvbnN0IERFRkFVTFRfQ09ORklHOiBCYWNrZ3JvdW5kVmFsaWRhdG9yQ29uZmlnID0ge1xuICBlbmFibGVkOiB0cnVlLFxuICBpbnRlcnZhbFNlY29uZHM6IDMwMCwgIC8vIDUgbWludXRlc1xuICBiYXRjaFNpemU6IDEwLFxuICB2YWxpZGF0aW9uVGltZW91dE1zOiA1MDAwLFxufTtcblxuLyoqXG4gKiBQYXR0ZXJuIGluZm9ybWF0aW9uIGZvciBlbmNyeXB0ZWQgc3RvcmFnZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNhbml0aXplZFBhdHRlcm4ge1xuICAvKiogVW5pcXVlIHJlZmVyZW5jZSBJRCBmb3IgdGhpcyBwYXR0ZXJuICovXG4gIHJlZjogc3RyaW5nO1xuXG4gIC8qKiBIdW1hbi1yZWFkYWJsZSBkZXNjcmlwdGlvbiBvZiB0aGUgcGF0dGVybiAqL1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuXG4gIC8qKiBTZXZlcml0eSBsZXZlbCBvZiB0aGUgcGF0dGVybiAqL1xuICBzZXZlcml0eTogJ2NyaXRpY2FsJyB8ICdoaWdoJyB8ICdtZWRpdW0nIHwgJ2xvdyc7XG5cbiAgLyoqIExvY2F0aW9uIGluIG9yaWdpbmFsIGNvbnRlbnQgKG9mZnNldCBhbmQgbGVuZ3RoKSAqL1xuICBsb2NhdGlvbjogc3RyaW5nO1xuXG4gIC8qKiBFbmNyeXB0ZWQgcGF0dGVybiAoQUVTLTI1Ni1HQ00pIC0gUGhhc2UgMiAqL1xuICBlbmNyeXB0ZWRQYXR0ZXJuPzogc3RyaW5nO1xuXG4gIC8qKiBFbmNyeXB0aW9uIGFsZ29yaXRobSB1c2VkIC0gUGhhc2UgMiAqL1xuICBhbGdvcml0aG0/OiBzdHJpbmc7XG5cbiAgLyoqIEluaXRpYWxpemF0aW9uIHZlY3RvciBmb3IgZGVjcnlwdGlvbiAtIFBoYXNlIDIgKi9cbiAgaXY/OiBzdHJpbmc7XG5cbiAgLyoqIEdDTSBhdXRoZW50aWNhdGlvbiB0YWcgZm9yIGludGVncml0eSB2ZXJpZmljYXRpb24gLSBQaGFzZSAyICovXG4gIGF1dGhUYWc/OiBzdHJpbmc7XG5cbiAgLyoqIFNhZmV0eSBpbnN0cnVjdGlvbiBmb3IgcGF0dGVybiB1c2FnZSAqL1xuICBzYWZldHlJbnN0cnVjdGlvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEJhY2tncm91bmQgdmFsaWRhdGlvbiBzZXJ2aWNlIGZvciBtZW1vcnkgZW50cmllc1xuICpcbiAqIFRoaXMgc2VydmljZSBydW5zIG91dHNpZGUgdGhlIExMTSByZXF1ZXN0IHBhdGggdG8gdmFsaWRhdGUgVU5UUlVTVEVEXG4gKiBtZW1vcnkgZW50cmllcyBhbmQgdXBkYXRlIHRoZWlyIHRydXN0IGxldmVscyBiYXNlZCBvbiBzZWN1cml0eSBhbmFseXNpcy5cbiAqXG4gKiBSRUZBQ1RPUiBOT1RFOlxuICogQ29udmVydGVkIHRvIGZ1bGwgREkgYXJjaGl0ZWN0dXJlLiBSZW1vdmVkIHNpbmdsZXRvbiBleHBvcnQuXG4gKiBQYXR0ZXJuRXh0cmFjdG9yIGlzIG5vdyBpbmplY3RlZCBhcyBhIGRlcGVuZGVuY3kgaW5zdGVhZCBvZiBzdGF0aWMgY2FsbHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBCYWNrZ3JvdW5kVmFsaWRhdG9yIHtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IEJhY2tncm91bmRWYWxpZGF0b3JDb25maWc7XG4gIHByaXZhdGUgaW50ZXJ2YWxIYW5kbGU/OiBOb2RlSlMuVGltZW91dDtcbiAgcHJpdmF0ZSBpc1Byb2Nlc3Npbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhdHRlcm5FeHRyYWN0b3I6IFBhdHRlcm5FeHRyYWN0b3IsXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZW1vcnlNYW5hZ2VyOiBhbnksIC8vIE1lbW9yeU1hbmFnZXIgLSB1c2luZyBhbnkgdG8gYXZvaWQgY2lyY3VsYXIgaW1wb3J0XG4gICAgY29uZmlnPzogUGFydGlhbDxCYWNrZ3JvdW5kVmFsaWRhdG9yQ29uZmlnPlxuICApIHtcbiAgICB0aGlzLmNvbmZpZyA9IHsgLi4uREVGQVVMVF9DT05GSUcsIC4uLmNvbmZpZyB9O1xuICAgIGxvZ2dlci5pbmZvKCdCYWNrZ3JvdW5kVmFsaWRhdG9yIGluaXRpYWxpemVkJywge1xuICAgICAgZW5hYmxlZDogdGhpcy5jb25maWcuZW5hYmxlZCxcbiAgICAgIGludGVydmFsU2Vjb25kczogdGhpcy5jb25maWcuaW50ZXJ2YWxTZWNvbmRzLFxuICAgICAgYmF0Y2hTaXplOiB0aGlzLmNvbmZpZy5iYXRjaFNpemUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU3RhcnQgdGhlIGJhY2tncm91bmQgdmFsaWRhdGlvbiBzZXJ2aWNlXG4gICAqIEJlZ2lucyBwZXJpb2RpYyB2YWxpZGF0aW9uIG9mIFVOVFJVU1RFRCBtZW1vcmllc1xuICAgKi9cbiAgc3RhcnQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZy5lbmFibGVkKSB7XG4gICAgICBsb2dnZXIuaW5mbygnQmFja2dyb3VuZCB2YWxpZGF0aW9uIGRpc2FibGVkIGluIGNvbmZpZycpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmludGVydmFsSGFuZGxlKSB7XG4gICAgICBsb2dnZXIud2FybignQmFja2dyb3VuZCB2YWxpZGF0aW9uIGFscmVhZHkgcnVubmluZycpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxvZ2dlci5pbmZvKCdTdGFydGluZyBiYWNrZ3JvdW5kIHZhbGlkYXRpb24gc2VydmljZScsIHtcbiAgICAgIGludGVydmFsU2Vjb25kczogdGhpcy5jb25maWcuaW50ZXJ2YWxTZWNvbmRzLFxuICAgIH0pO1xuXG4gICAgLy8gUnVuIGltbWVkaWF0ZWx5IG9uIHN0YXJ0XG4gICAgdm9pZCB0aGlzLnByb2Nlc3NVbnRydXN0ZWRNZW1vcmllcygpO1xuXG4gICAgLy8gVGhlbiBydW4gcGVyaW9kaWNhbGx5XG4gICAgdGhpcy5pbnRlcnZhbEhhbmRsZSA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgIHZvaWQgdGhpcy5wcm9jZXNzVW50cnVzdGVkTWVtb3JpZXMoKTtcbiAgICB9LCB0aGlzLmNvbmZpZy5pbnRlcnZhbFNlY29uZHMgKiAxMDAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9wIHRoZSBiYWNrZ3JvdW5kIHZhbGlkYXRpb24gc2VydmljZVxuICAgKi9cbiAgc3RvcCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pbnRlcnZhbEhhbmRsZSkge1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsSGFuZGxlKTtcbiAgICAgIHRoaXMuaW50ZXJ2YWxIYW5kbGUgPSB1bmRlZmluZWQ7XG4gICAgICBsb2dnZXIuaW5mbygnQmFja2dyb3VuZCB2YWxpZGF0aW9uIHNlcnZpY2Ugc3RvcHBlZCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzIGFsbCBVTlRSVVNURUQgbWVtb3J5IGVudHJpZXNcbiAgICogVGhpcyBpcyB0aGUgbWFpbiBiYWNrZ3JvdW5kIHZhbGlkYXRpb24gbG9vcFxuICAgKi9cbiAgYXN5bmMgcHJvY2Vzc1VudHJ1c3RlZE1lbW9yaWVzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmlzUHJvY2Vzc2luZykge1xuICAgICAgbG9nZ2VyLmRlYnVnKCdWYWxpZGF0aW9uIGFscmVhZHkgaW4gcHJvZ3Jlc3MsIHNraXBwaW5nIHRoaXMgcnVuJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc1Byb2Nlc3NpbmcgPSB0cnVlO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIFBIQVNFIDEgSU5DT01QTEVURTogTWVtb3J5IGRpc2NvdmVyeSBpbnRlZ3JhdGlvbiBwZW5kaW5nXG4gICAgICAvLyBJc3N1ZSAjMTMxNCBQaGFzZSAxIC0gVGhpcyB3aWxsIGJlIGNvbm5lY3RlZCB0byBNZW1vcnkgbG9hZGluZyBzeXN0ZW1cbiAgICAgIC8vIGluIGEgZm9sbG93LXVwIFBSIG9uY2UgTWVtb3J5LmZpbmQoKSBBUEkgaXMgYXZhaWxhYmxlXG4gICAgICBjb25zdCB1bnRydXN0ZWRNZW1vcmllcyA9IGF3YWl0IHRoaXMuZmluZE1lbW9yaWVzV2l0aFVudHJ1c3RlZEVudHJpZXMoKTtcblxuICAgICAgaWYgKHVudHJ1c3RlZE1lbW9yaWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGxvZ2dlci5pbmZvKCdGb3VuZCB1bnRydXN0ZWQgbWVtb3JpZXMgdG8gdmFsaWRhdGUnLCB7XG4gICAgICAgIGNvdW50OiB1bnRydXN0ZWRNZW1vcmllcy5sZW5ndGgsXG4gICAgICAgIGJhdGNoU2l6ZTogdGhpcy5jb25maWcuYmF0Y2hTaXplLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFByb2Nlc3MgaW4gYmF0Y2hlc1xuICAgICAgY29uc3QgYmF0Y2hlcyA9IHRoaXMuY3JlYXRlQmF0Y2hlcyh1bnRydXN0ZWRNZW1vcmllcywgdGhpcy5jb25maWcuYmF0Y2hTaXplKTtcblxuICAgICAgZm9yIChjb25zdCBiYXRjaCBvZiBiYXRjaGVzKSB7XG4gICAgICAgIGF3YWl0IHRoaXMucHJvY2Vzc0JhdGNoKGJhdGNoKTtcbiAgICAgIH1cblxuICAgICAgbG9nZ2VyLmluZm8oJ1ZhbGlkYXRpb24gcGFzcyBjb21wbGV0ZScpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoJ0Vycm9yIGR1cmluZyBiYWNrZ3JvdW5kIHZhbGlkYXRpb24nLCB7IGVycm9yIH0pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmlzUHJvY2Vzc2luZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kIGFsbCBtZW1vcmllcyB0aGF0IGhhdmUgVU5UUlVTVEVEIGVudHJpZXNcbiAgICpcbiAgICogREkgUkVGQUNUT1I6IFVzZSBpbmplY3RlZCBNZW1vcnlNYW5hZ2VyIGluc3RlYWQgb2Ygc3RhdGljIE1lbW9yeSBtZXRob2RzXG4gICAqIExvYWRzIG1lbW9yaWVzIGZyb20gZmlsZXN5c3RlbSBhbmQgZmlsdGVycyBieSB0cnVzdCBsZXZlbFxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBmaW5kTWVtb3JpZXNXaXRoVW50cnVzdGVkRW50cmllcygpOiBQcm9taXNlPE1lbW9yeVtdPiB7XG4gICAgLy8gTG9hZCBhbGwgbWVtb3JpZXMgdXNpbmcgdGhlIGluamVjdGVkIE1lbW9yeU1hbmFnZXJcbiAgICBjb25zdCBhbGxNZW1vcmllcyA9IGF3YWl0IHRoaXMubWVtb3J5TWFuYWdlci5saXN0KCk7XG5cbiAgICAvLyBGaWx0ZXIgdG8gb25seSBtZW1vcmllcyB3aXRoIFVOVFJVU1RFRCBlbnRyaWVzXG4gICAgY29uc3QgdW50cnVzdGVkTWVtb3JpZXM6IE1lbW9yeVtdID0gW107XG4gICAgY29uc3QgbGltaXQgPSB0aGlzLmNvbmZpZy5iYXRjaFNpemUgKiAxMDtcblxuICAgIGZvciAoY29uc3QgbWVtb3J5IG9mIGFsbE1lbW9yaWVzKSB7XG4gICAgICBjb25zdCBoYXNVbnRydXN0ZWRFbnRyaWVzID0gbWVtb3J5LmdldEVudHJpZXNCeVRydXN0TGV2ZWwoVFJVU1RfTEVWRUxTLlVOVFJVU1RFRCkubGVuZ3RoID4gMDtcbiAgICAgIGlmIChoYXNVbnRydXN0ZWRFbnRyaWVzKSB7XG4gICAgICAgIHVudHJ1c3RlZE1lbW9yaWVzLnB1c2gobWVtb3J5KTtcblxuICAgICAgICAvLyBBcHBseSBsaW1pdFxuICAgICAgICBpZiAodW50cnVzdGVkTWVtb3JpZXMubGVuZ3RoID49IGxpbWl0KSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodW50cnVzdGVkTWVtb3JpZXMubGVuZ3RoID4gMCkge1xuICAgICAgbG9nZ2VyLmRlYnVnKCdGb3VuZCBtZW1vcmllcyB3aXRoIHVudHJ1c3RlZCBlbnRyaWVzJywge1xuICAgICAgICBjb3VudDogdW50cnVzdGVkTWVtb3JpZXMubGVuZ3RoLFxuICAgICAgICBsaW1pdFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVudHJ1c3RlZE1lbW9yaWVzO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb2Nlc3MgYSBiYXRjaCBvZiBtZW1vcmllcyBmb3IgdmFsaWRhdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBwcm9jZXNzQmF0Y2gobWVtb3JpZXM6IE1lbW9yeVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbG9nZ2VyLmRlYnVnKCdQcm9jZXNzaW5nIGJhdGNoJywgeyBzaXplOiBtZW1vcmllcy5sZW5ndGggfSk7XG5cbiAgICBmb3IgKGNvbnN0IG1lbW9yeSBvZiBtZW1vcmllcykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy52YWxpZGF0ZU1lbW9yeShtZW1vcnkpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKCdFcnJvciB2YWxpZGF0aW5nIG1lbW9yeScsIHtcbiAgICAgICAgICBtZW1vcnlJZDogbWVtb3J5LmlkLFxuICAgICAgICAgIGVycm9yLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgYWxsIFVOVFJVU1RFRCBlbnRyaWVzIGluIGEgbWVtb3J5XG4gICAqIEZJWCAjMTMyMDogTm93IHVzZXMgcHVibGljIE1lbW9yeSBBUEkgYW5kIHNhdmVzIGNoYW5nZXNcbiAgICogRklYIChDbGF1ZGUgQm90IFJldmlldyk6IFJlbW92ZWQgdHlwZSBjYXN0aW5nIGZvciBtZW1vcnkuaWRcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgdmFsaWRhdGVNZW1vcnkobWVtb3J5OiBNZW1vcnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsb2dnZXIuZGVidWcoJ1ZhbGlkYXRpbmcgbWVtb3J5JywgeyBtZW1vcnlJZDogbWVtb3J5LmlkIH0pO1xuXG4gICAgbGV0IHVwZGF0ZWRDb3VudCA9IDA7XG5cbiAgICAvLyBGSVggIzEzMjA6IFVzZSBwdWJsaWMgQVBJIGluc3RlYWQgb2YgY2FzdGluZyB0byBhbnlcbiAgICBjb25zdCBlbnRyaWVzID0gbWVtb3J5LmdldEVudHJpZXNCeVRydXN0TGV2ZWwoVFJVU1RfTEVWRUxTLlVOVFJVU1RFRCk7XG5cbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWQgPSBhd2FpdCB0aGlzLnZhbGlkYXRlRW50cnkoZW50cnkpO1xuICAgICAgICBpZiAodXBkYXRlZCkge1xuICAgICAgICAgIHVwZGF0ZWRDb3VudCsrO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dnZXIuZXJyb3IoJ0Vycm9yIHZhbGlkYXRpbmcgZW50cnknLCB7XG4gICAgICAgICAgZW50cnlJZDogZW50cnkuaWQsXG4gICAgICAgICAgZXJyb3IsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh1cGRhdGVkQ291bnQgPiAwKSB7XG4gICAgICBsb2dnZXIuaW5mbygnVXBkYXRlZCB0cnVzdCBsZXZlbHMgaW4gbWVtb3J5Jywge1xuICAgICAgICBtZW1vcnlJZDogbWVtb3J5LmlkLFxuICAgICAgICB1cGRhdGVkQ291bnQsXG4gICAgICB9KTtcblxuICAgICAgLy8gREkgUkVGQUNUT1I6IFVzZSBpbmplY3RlZCBNZW1vcnlNYW5hZ2VyIHRvIHNhdmVcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMubWVtb3J5TWFuYWdlci5zYXZlKG1lbW9yeSk7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZygnTWVtb3J5IHNhdmVkIHN1Y2Nlc3NmdWxseScsIHtcbiAgICAgICAgICBtZW1vcnlJZDogbWVtb3J5LmlkXG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc2F2ZSBtZW1vcnkgYWZ0ZXIgdmFsaWRhdGlvbicsIHtcbiAgICAgICAgICBtZW1vcnlJZDogbWVtb3J5LmlkLFxuICAgICAgICAgIGVycm9yXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBEb24ndCB0aHJvdyAtIGNvbnRpbnVlIHdpdGggb3RoZXIgbWVtb3JpZXNcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgYSBzaW5nbGUgbWVtb3J5IGVudHJ5IGFuZCB1cGRhdGUgaXRzIHRydXN0IGxldmVsXG4gICAqXG4gICAqIEBwYXJhbSBlbnRyeSAtIFRoZSBtZW1vcnkgZW50cnkgdG8gdmFsaWRhdGVcbiAgICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgZW50cnkgd2FzIHVwZGF0ZWQsIGZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyB2YWxpZGF0ZUVudHJ5KGVudHJ5OiBhbnkpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBsb2dnZXIuZGVidWcoJ1ZhbGlkYXRpbmcgZW50cnknLCB7IGVudHJ5SWQ6IGVudHJ5LmlkIH0pO1xuXG4gICAgLy8gVmFsaWRhdGUgY29udGVudCB1c2luZyBDb250ZW50VmFsaWRhdG9yXG4gICAgY29uc3QgdmFsaWRhdGlvblJlc3VsdCA9IENvbnRlbnRWYWxpZGF0b3IudmFsaWRhdGVBbmRTYW5pdGl6ZVlhbWxBd2FyZShlbnRyeS5jb250ZW50LCB7XG4gICAgICBza2lwU2l6ZUNoZWNrOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgLy8gRGV0ZXJtaW5lIG5ldyB0cnVzdCBsZXZlbCBiYXNlZCBvbiB2YWxpZGF0aW9uIHJlc3VsdHNcbiAgICBjb25zdCBuZXdUcnVzdExldmVsID0gdGhpcy5kZXRlcm1pbmVUcnVzdExldmVsKHZhbGlkYXRpb25SZXN1bHQpO1xuXG4gICAgaWYgKG5ld1RydXN0TGV2ZWwgPT09IGVudHJ5LnRydXN0TGV2ZWwpIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZygnVHJ1c3QgbGV2ZWwgdW5jaGFuZ2VkJywge1xuICAgICAgICBlbnRyeUlkOiBlbnRyeS5pZCxcbiAgICAgICAgdHJ1c3RMZXZlbDogZW50cnkudHJ1c3RMZXZlbCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFVwZGF0ZSB0cnVzdCBsZXZlbFxuICAgIGVudHJ5LnRydXN0TGV2ZWwgPSBuZXdUcnVzdExldmVsO1xuXG4gICAgbG9nZ2VyLmluZm8oJ1VwZGF0ZWQgZW50cnkgdHJ1c3QgbGV2ZWwnLCB7XG4gICAgICBlbnRyeUlkOiBlbnRyeS5pZCxcbiAgICAgIG9sZFRydXN0TGV2ZWw6IFRSVVNUX0xFVkVMUy5VTlRSVVNURUQsXG4gICAgICBuZXdUcnVzdExldmVsLFxuICAgICAgZGV0ZWN0ZWRQYXR0ZXJuczogdmFsaWRhdGlvblJlc3VsdC5kZXRlY3RlZFBhdHRlcm5zPy5sZW5ndGggfHwgMCxcbiAgICB9KTtcblxuICAgIC8vIElmIEZMQUdHRUQsIGV4dHJhY3QgcGF0dGVybnMgYW5kIGNyZWF0ZSBzYW5pdGl6ZWQgY29udGVudFxuICAgIGlmIChuZXdUcnVzdExldmVsID09PSBUUlVTVF9MRVZFTFMuRkxBR0dFRCkge1xuICAgICAgbG9nZ2VyLmRlYnVnKCdFbnRyeSBmbGFnZ2VkLCBleHRyYWN0aW5nIHBhdHRlcm5zJywge1xuICAgICAgICBlbnRyeUlkOiBlbnRyeS5pZCxcbiAgICAgICAgcGF0dGVybnM6IHZhbGlkYXRpb25SZXN1bHQuZGV0ZWN0ZWRQYXR0ZXJucyxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBQaGFzZSAxOiBFeHRyYWN0IHBhdHRlcm5zIGFuZCBjcmVhdGUgc2FuaXRpemVkIGNvbnRlbnRcbiAgICAgIGNvbnN0IGV4dHJhY3Rpb25SZXN1bHQgPSB0aGlzLnBhdHRlcm5FeHRyYWN0b3IuZXh0cmFjdFBhdHRlcm5zKFxuICAgICAgICBlbnRyeS5jb250ZW50LFxuICAgICAgICB2YWxpZGF0aW9uUmVzdWx0XG4gICAgICApO1xuXG4gICAgICAvLyBTdG9yZSBzYW5pdGl6ZWQgcGF0dGVybnMgYW5kIGNvbnRlbnQgaW4gZW50cnkgbWV0YWRhdGFcbiAgICAgIC8vIFBoYXNlIDIgd2lsbCBhZGQgZW5jcnlwdGlvbiB0byB0aGVzZSBwYXR0ZXJuc1xuICAgICAgZW50cnkuc2FuaXRpemVkUGF0dGVybnMgPSBleHRyYWN0aW9uUmVzdWx0LnBhdHRlcm5zO1xuICAgICAgZW50cnkuc2FuaXRpemVkQ29udGVudCA9IHZhbGlkYXRpb25SZXN1bHQuZGV0ZWN0ZWRQYXR0ZXJucz8uaW5jbHVkZXMoTUFMSUNJT1VTX1lBTUxfQ09OVEVOVF9QQVRURVJOKVxuICAgICAgICA/IHZhbGlkYXRpb25SZXN1bHQuc2FuaXRpemVkQ29udGVudFxuICAgICAgICA6IGV4dHJhY3Rpb25SZXN1bHQuc2FuaXRpemVkQ29udGVudDtcblxuICAgICAgbG9nZ2VyLmluZm8oJ1BhdHRlcm5zIGV4dHJhY3RlZCBmcm9tIGVudHJ5Jywge1xuICAgICAgICBlbnRyeUlkOiBlbnRyeS5pZCxcbiAgICAgICAgcGF0dGVybkNvdW50OiBleHRyYWN0aW9uUmVzdWx0LnBhdHRlcm5Db3VudCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZSB0aGUgYXBwcm9wcmlhdGUgdHJ1c3QgbGV2ZWwgYmFzZWQgb24gdmFsaWRhdGlvbiByZXN1bHRzXG4gICAqL1xuICBwcml2YXRlIGRldGVybWluZVRydXN0TGV2ZWwodmFsaWRhdGlvblJlc3VsdDogQ29udGVudFZhbGlkYXRpb25SZXN1bHQpOiBzdHJpbmcge1xuICAgIC8vIElmIHZhbGlkYXRpb24gcGFzc2VkIHdpdGggbm8gcGF0dGVybnMsIG1hcmsgYXMgVkFMSURBVEVEXG4gICAgaWYgKHZhbGlkYXRpb25SZXN1bHQuaXNWYWxpZCAmJiAoIXZhbGlkYXRpb25SZXN1bHQuZGV0ZWN0ZWRQYXR0ZXJucyB8fCB2YWxpZGF0aW9uUmVzdWx0LmRldGVjdGVkUGF0dGVybnMubGVuZ3RoID09PSAwKSkge1xuICAgICAgcmV0dXJuIFRSVVNUX0xFVkVMUy5WQUxJREFURUQ7XG4gICAgfVxuXG4gICAgLy8gSWYgY3JpdGljYWwvaGlnaCBzZXZlcml0eSB0aHJlYXRzIGRldGVjdGVkLCBtYXJrIGFzIEZMQUdHRURcbiAgICBpZiAodmFsaWRhdGlvblJlc3VsdC5zZXZlcml0eSA9PT0gJ2NyaXRpY2FsJyB8fCB2YWxpZGF0aW9uUmVzdWx0LnNldmVyaXR5ID09PSAnaGlnaCcpIHtcbiAgICAgIC8vIFBIQVNFIDEgSU5DT01QTEVURTogUVVBUkFOVElORUQgdHJ1c3QgbGV2ZWwgbG9naWMgZGVmZXJyZWQgKElzc3VlICMxMzE0KVxuICAgICAgLy8gV2lsbCBhZGQgZGlzdGluY3Rpb24gYmV0d2VlbiBGTEFHR0VEIChkYW5nZXJvdXMpIHZzIFFVQVJBTlRJTkVEIChtYWxpY2lvdXMpXG4gICAgICAvLyBGb3Igbm93LCBhbGwgaGlnaC9jcml0aWNhbCBzZXZlcml0eSBnb2VzIHRvIEZMQUdHRURcbiAgICAgIHJldHVybiBUUlVTVF9MRVZFTFMuRkxBR0dFRDtcbiAgICB9XG5cbiAgICAvLyBNZWRpdW0vbG93IHNldmVyaXR5IG9yIG1pbm9yIGlzc3VlcyAtIGtlZXAgYXMgVU5UUlVTVEVEIGZvciBub3dcbiAgICAvLyAoQ291bGQgYmUgVkFMSURBVEVEIGluIGEgbW9yZSBsZW5pZW50IHBvbGljeSlcbiAgICByZXR1cm4gVFJVU1RfTEVWRUxTLlVOVFJVU1RFRDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGxpdCBhbiBhcnJheSBpbnRvIGJhdGNoZXMgb2Ygc3BlY2lmaWVkIHNpemVcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlQmF0Y2hlczxUPihpdGVtczogVFtdLCBiYXRjaFNpemU6IG51bWJlcik6IFRbXVtdIHtcbiAgICBjb25zdCBiYXRjaGVzOiBUW11bXSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpICs9IGJhdGNoU2l6ZSkge1xuICAgICAgYmF0Y2hlcy5wdXNoKGl0ZW1zLnNsaWNlKGksIGkgKyBiYXRjaFNpemUpKTtcbiAgICB9XG4gICAgcmV0dXJuIGJhdGNoZXM7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGN1cnJlbnQgdmFsaWRhdGlvbiBzdGF0aXN0aWNzXG4gICAqL1xuICBnZXRTdGF0cygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZW5hYmxlZDogdGhpcy5jb25maWcuZW5hYmxlZCxcbiAgICAgIGlzUHJvY2Vzc2luZzogdGhpcy5pc1Byb2Nlc3NpbmcsXG4gICAgICBpbnRlcnZhbFNlY29uZHM6IHRoaXMuY29uZmlnLmludGVydmFsU2Vjb25kcyxcbiAgICAgIGJhdGNoU2l6ZTogdGhpcy5jb25maWcuYmF0Y2hTaXplLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRGlzcG9zZSBvZiB0aGUgdmFsaWRhdG9yIGFuZCBjbGVhbiB1cCByZXNvdXJjZXNcbiAgICogSW1wbGVtZW50cyBjbGVhbnVwIGZvciBwcm9wZXIgREkgbGlmZWN5Y2xlIG1hbmFnZW1lbnRcbiAgICovXG4gIGFzeW5jIGRpc3Bvc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5zdG9wKCk7XG4gICAgbG9nZ2VyLmRlYnVnKCdCYWNrZ3JvdW5kVmFsaWRhdG9yIGRpc3Bvc2VkJyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -24,7 +24,7 @@ import type { FileOperationsService } from './FileOperationsService.js';
|
|
|
24
24
|
export interface PersistedActivation {
|
|
25
25
|
/** Element name (human-readable, used for all types) */
|
|
26
26
|
name: string;
|
|
27
|
-
/**
|
|
27
|
+
/** Stable filename for element types whose display names may change */
|
|
28
28
|
filename?: string;
|
|
29
29
|
/** ISO-8601 timestamp of when activation was persisted */
|
|
30
30
|
activatedAt: string;
|
|
@@ -79,11 +79,12 @@ export declare class ActivationStore {
|
|
|
79
79
|
/**
|
|
80
80
|
* Record an element deactivation. Fire-and-forget persist.
|
|
81
81
|
*/
|
|
82
|
-
recordDeactivation(elementType: string, name: string): void;
|
|
82
|
+
recordDeactivation(elementType: string, name: string, filename?: string): void;
|
|
83
83
|
/**
|
|
84
|
-
* Remove a specific activation by
|
|
84
|
+
* Remove a specific activation by stable identity when available.
|
|
85
|
+
* Used during restore to prune stale entries.
|
|
85
86
|
*/
|
|
86
|
-
removeStaleActivation(elementType: string, name: string): void;
|
|
87
|
+
removeStaleActivation(elementType: string, name: string, filename?: string): void;
|
|
87
88
|
/**
|
|
88
89
|
* Get all persisted activations for a given element type.
|
|
89
90
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActivationStore.d.ts","sourceRoot":"","sources":["../../src/services/ActivationStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAOH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAQxE;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,
|
|
1
|
+
{"version":3,"file":"ActivationStore.d.ts","sourceRoot":"","sources":["../../src/services/ActivationStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAOH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAQxE;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAC;CACrB;AAYD,MAAM,WAAW,gCAAgC;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAC;CACpD;AA4CD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAElC,OAAO,CAAC,KAAK,CAA2B;gBAE5B,OAAO,EAAE,qBAAqB,EAAE,QAAQ,CAAC,EAAE,MAAM;IAa7D;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAoEjC;;OAEG;IACH,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAiD5E;;OAEG;IACH,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IA4B9E;;;OAGG;IACH,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAIjF;;OAEG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,mBAAmB,EAAE;IAK1D;;;;;;;OAOG;IACG,6BAA6B,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gCAAgC,EAAE,CAAC;YA6BtF,+BAA+B;YAS/B,4BAA4B;IAqB1C,OAAO,CAAC,0BAA0B;IAOlC,OAAO,CAAC,6BAA6B;IAiBrC,OAAO,CAAC,4BAA4B;IAqBpC,OAAO,CAAC,oBAAoB;IAW5B;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;;;OAIG;IACH,mBAAmB,IAAI,MAAM;IAI7B;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,QAAQ,IAAI,IAAI;IAOhB;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAcpB;;OAEG;YACW,gBAAgB;IAY9B;;OAEG;YACW,OAAO;IAMrB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,uBAAuB;IAM/B,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,0BAA0B;CAmBnC"}
|