@pipeline-builder/pipeline-manager 3.4.168 → 3.4.170

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.
@@ -1,12 +1,11 @@
1
1
  // Copyright 2026 Pipeline Builder Contributors
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
  import { Command } from 'commander';
4
- import { formatDuration, formatFileSize } from '../config/cli.constants.js';
4
+ import { runListEntity } from './entity-list.js';
5
+ import { formatFileSize } from '../config/cli.constants.js';
5
6
  import {} from '../types/index.js';
6
- import { printCommandHeader, printSslWarning, createAuthenticatedClient } from '../utils/command-utils.js';
7
- import { ERROR_CODES, handleError } from '../utils/error-handler.js';
8
- import { buildCommonFilters, displayPaginationInfo, displayListResults } from '../utils/list-command-utils.js';
9
- import { outputData, extractListResponse, printInfo, printKeyValue, printSection, printWarning } from '../utils/output-utils.js';
7
+ import {} from '../utils/list-command-utils.js';
8
+ import { printWarning } from '../utils/output-utils.js';
10
9
  /**
11
10
  * Registers the `list-plugins` command with the CLI program.
12
11
  *
@@ -43,118 +42,52 @@ export function listPlugins(program) {
43
42
  .option('--show-metadata', 'Include full metadata in output (json/yaml only)', false)
44
43
  .option('--verify-ssl', 'Enable SSL certificate verification')
45
44
  .option('--no-verify-ssl', 'Disable SSL certificate verification')
46
- .action(async (options) => {
47
- const executionId = printCommandHeader('List Plugins', 'Query Plugins');
48
- const startTime = Date.now();
49
- try {
50
- // Build filter parameters (common + plugin-specific)
51
- const filterParams = {
52
- ...buildCommonFilters(options),
53
- };
54
- // Plugin-specific filters
55
- if (options.name) {
56
- filterParams.name = options.name;
57
- }
45
+ .action((options) => runListEntity(program, options, {
46
+ labelPlural: 'Plugins',
47
+ responseKey: 'plugins',
48
+ listUrl: (config) => config.api.pluginListUrl,
49
+ commandName: 'list-plugins',
50
+ buildFilters: (options, base) => {
51
+ const filters = { ...base };
52
+ if (options.name)
53
+ filters.name = options.name;
58
54
  if (options.version) {
59
55
  // Validate semver format
60
56
  const versionPattern = /^(\^|~)?(\d+)\.(\d+)\.(\d+)(-[a-zA-Z0-9.-]+)?(\+[a-zA-Z0-9.-]+)?$/;
61
57
  if (!versionPattern.test(options.version)) {
62
58
  printWarning(`Version "${options.version}" may not be valid semver format`);
63
59
  }
64
- filterParams.version = options.version;
65
- }
66
- // Display active filters
67
- const activeFilters = {};
68
- if (filterParams.id)
69
- activeFilters.ID = filterParams.id;
70
- if (filterParams.isActive !== undefined)
71
- activeFilters['Is Active'] = filterParams.isActive;
72
- if (filterParams.name)
73
- activeFilters.Name = filterParams.name;
74
- if (filterParams.version)
75
- activeFilters.Version = filterParams.version;
76
- if (Object.keys(activeFilters).length > 0) {
77
- printInfo('Active Filters');
78
- printKeyValue(activeFilters);
79
- }
80
- else {
81
- printInfo('No filters applied - fetching all plugins');
82
- }
83
- displayPaginationInfo(filterParams);
84
- // Security warning for SSL verification disabled
85
- printSslWarning(options.verifySsl);
86
- // Create authenticated API client
87
- const client = createAuthenticatedClient(options);
88
- const config = client.getConfig();
89
- // Query plugins
90
- console.log('');
91
- printSection('Querying Plugins');
92
- printInfo('Sending request to API...');
93
- const requestStart = Date.now();
94
- const response = await client.get(config.api.pluginListUrl, filterParams);
95
- const requestDuration = Date.now() - requestStart;
96
- // Handle response
97
- const { items: plugins, total, hasMore } = extractListResponse(response, 'plugins');
98
- console.log('');
99
- printSection('✓ Query Complete');
100
- // Display results summary
101
- displayListResults(plugins, total, hasMore, 'Plugins', requestDuration, filterParams);
102
- // Display statistics
103
- if (plugins.length > 0 && options.format === 'table') {
104
- const activeCount = plugins.filter(p => p.isActive).length;
105
- const publicCount = plugins.filter(p => p.isPublic === true).length;
106
- const totalSize = plugins.reduce((sum, p) => sum + (p.fileSize || 0), 0);
107
- console.log('');
108
- printInfo('Statistics');
109
- printKeyValue({
110
- 'Active Plugins': `${activeCount}/${plugins.length}`,
111
- 'Public Plugins': `${publicCount}/${plugins.length}`,
112
- 'Total Size': formatFileSize(totalSize),
113
- });
114
- }
115
- // Output data in requested format
116
- console.log('');
117
- if (options.output) {
118
- printInfo('Saving to file', {
119
- path: options.output,
120
- format: options.format,
121
- });
60
+ filters.version = options.version;
122
61
  }
123
- // Format output data
124
- const outputPlugins = options.showMetadata ? plugins : plugins.map(p => ({
125
- 'ID': p.id,
126
- 'Name': p.name,
127
- 'Version': p.version,
128
- 'Organization': p.organization,
129
- 'Active': p.isActive ? 'Yes' : 'No',
130
- 'Public': p.isPublic ? 'Yes' : 'No',
131
- 'Size': p.fileSize ? formatFileSize(p.fileSize) : 'N/A',
132
- 'Created At': p.createdAt || 'N/A',
133
- }));
134
- outputData(outputPlugins, {
135
- format: options.format,
136
- file: options.output,
137
- });
138
- // Performance metrics
139
- console.log('');
140
- printKeyValue({
141
- 'Execution ID': executionId,
142
- 'Total Duration': formatDuration(Date.now() - startTime),
143
- });
144
- console.log('');
145
- }
146
- catch (error) {
147
- handleError(error, ERROR_CODES.API_REQUEST, {
148
- debug: program.opts().debug,
149
- exit: true,
150
- context: {
151
- command: 'list-plugins',
152
- executionId,
153
- filters: options,
154
- verifySsl: options.verifySsl,
155
- },
156
- });
157
- }
158
- });
62
+ return filters;
63
+ },
64
+ activeFilters: (filters) => {
65
+ const active = {};
66
+ if (filters.id)
67
+ active.ID = filters.id;
68
+ if (filters.isActive !== undefined)
69
+ active['Is Active'] = filters.isActive;
70
+ if (filters.name)
71
+ active.Name = filters.name;
72
+ if (filters.version)
73
+ active.Version = filters.version;
74
+ return active;
75
+ },
76
+ statistics: (plugins) => ({
77
+ 'Active Plugins': `${plugins.filter(p => p.isActive).length}/${plugins.length}`,
78
+ 'Public Plugins': `${plugins.filter(p => p.isPublic === true).length}/${plugins.length}`,
79
+ 'Total Size': formatFileSize(plugins.reduce((sum, p) => sum + (p.fileSize || 0), 0)),
80
+ }),
81
+ rows: (plugins, options) => options.showMetadata ? plugins : plugins.map(p => ({
82
+ 'ID': p.id,
83
+ 'Name': p.name,
84
+ 'Version': p.version,
85
+ 'Organization': p.organization,
86
+ 'Active': p.isActive ? 'Yes' : 'No',
87
+ 'Public': p.isPublic ? 'Yes' : 'No',
88
+ 'Size': p.fileSize ? formatFileSize(p.fileSize) : 'N/A',
89
+ 'Created At': p.createdAt || 'N/A',
90
+ })),
91
+ }));
159
92
  }
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1wbHVnaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2xpc3QtcGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RSxPQUFPLEVBQXdDLE1BQU0sbUJBQW1CLENBQUM7QUFDekUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNHLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxFQUFFLGtCQUFrQixFQUEyQixxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hJLE9BQU8sRUFBRSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFZakk7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLE9BQWdCO0lBQzFDLE9BQU87U0FDSixPQUFPLENBQUMsTUFBTSxDQUFDO1NBQ2YsV0FBVyxDQUFDLDBDQUEwQyxDQUFDO1FBRXhELHdCQUF3QjtTQUN2QixNQUFNLENBQUMsV0FBVyxFQUFFLHdEQUF3RCxDQUFDO1NBQzdFLE1BQU0sQ0FBQyx1QkFBdUIsRUFBRSxzQ0FBc0MsQ0FBQztTQUN2RSxNQUFNLENBQUMsa0JBQWtCLEVBQUUsb0NBQW9DLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQztTQUM5RSxNQUFNLENBQUMsbUJBQW1CLEVBQUUsMkJBQTJCLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztTQUNy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QUFDLENBQUMsQ0FBQyxJQUFJO2dCQUNuQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSztnQkFDdkQsWUFBWSxFQUFFLENBQUMsQ0FBQyxTQUFTLElBQUksS0FBSzthQUNuQyxDQUFDLENBQUMsQ0FBQztZQUVKLFVBQVUsQ0FBQyxhQUFhLEVBQUU7Z0JBQ3hCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtnQkFDdEIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxNQUFNO2FBQ3JCLENBQUMsQ0FBQztZQUVILHNCQUFzQjtZQUN0QixPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hCLGFBQWEsQ0FBQztnQkFDWixjQUFjLEVBQUUsV0FBVztnQkFDM0IsZ0JBQWdCLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUM7YUFDekQsQ0FBQyxDQUFDO1lBRUgsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVsQixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLFdBQVcsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLFdBQVcsRUFBRTtnQkFDMUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLO2dCQUMzQixJQUFJLEVBQUUsSUFBSTtnQkFDVixPQUFPLEVBQUU7b0JBQ1AsT0FBTyxFQUFFLGNBQWM7b0JBQ3ZCLFdBQVc7b0JBQ1gsT0FBTyxFQUFFLE9BQU87b0JBQ2hCLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztpQkFDN0I7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHsgZm9ybWF0RHVyYXRpb24sIGZvcm1hdEZpbGVTaXplIH0gZnJvbSAnLi4vY29uZmlnL2NsaS5jb25zdGFudHMuanMnO1xuaW1wb3J0IHsgdHlwZSBQbHVnaW5MaXN0UmVzcG9uc2UsIHR5cGUgUGx1Z2luIH0gZnJvbSAnLi4vdHlwZXMvaW5kZXguanMnO1xuaW1wb3J0IHsgcHJpbnRDb21tYW5kSGVhZGVyLCBwcmludFNzbFdhcm5pbmcsIGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnQgfSBmcm9tICcuLi91dGlscy9jb21tYW5kLXV0aWxzLmpzJztcbmltcG9ydCB7IEVSUk9SX0NPREVTLCBoYW5kbGVFcnJvciB9IGZyb20gJy4uL3V0aWxzL2Vycm9yLWhhbmRsZXIuanMnO1xuaW1wb3J0IHsgYnVpbGRDb21tb25GaWx0ZXJzLCB0eXBlIENvbW1vbkZpbHRlclBhcmFtcywgZGlzcGxheVBhZ2luYXRpb25JbmZvLCBkaXNwbGF5TGlzdFJlc3VsdHMgfSBmcm9tICcuLi91dGlscy9saXN0LWNvbW1hbmQtdXRpbHMuanMnO1xuaW1wb3J0IHsgb3V0cHV0RGF0YSwgZXh0cmFjdExpc3RSZXNwb25zZSwgcHJpbnRJbmZvLCBwcmludEtleVZhbHVlLCBwcmludFNlY3Rpb24sIHByaW50V2FybmluZyB9IGZyb20gJy4uL3V0aWxzL291dHB1dC11dGlscy5qcyc7XG5cbi8qKlxuICogUXVlcnkgcGFyYW1ldGVycyBmb3IgdGhlIHBsdWdpbiBsaXN0IEFQSSBlbmRwb2ludC5cbiAqIENvbWJpbmVzIGNvbW1vbiBmaWx0ZXJzIChwYWdpbmF0aW9uLCBzb3J0KSB3aXRoIHBsdWdpbi1zcGVjaWZpYyBmaWx0ZXJzLlxuICovXG5pbnRlcmZhY2UgUGx1Z2luRmlsdGVyUGFyYW1zIGV4dGVuZHMgQ29tbW9uRmlsdGVyUGFyYW1zIHtcbiAgLy8gUGx1Z2luLXNwZWNpZmljIGZpbHRlcnNcbiAgbmFtZT86IHN0cmluZztcbiAgdmVyc2lvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgdGhlIGBsaXN0LXBsdWdpbnNgIGNvbW1hbmQgd2l0aCB0aGUgQ0xJIHByb2dyYW0uXG4gKlxuICogUXVlcmllcyBwbHVnaW5zIHdpdGggZmlsdGVycyBmb3IgbmFtZSwgdmVyc2lvbiwgaW1hZ2UgdGFnLFxuICogYWN0aXZlIHN0YXR1cywgcGx1cyBwYWdpbmF0aW9uIGFuZCBzb3J0aW5nLlxuICpcbiAqIEBwYXJhbSBwcm9ncmFtIC0gVGhlIHJvb3QgQ29tbWFuZGVyIHByb2dyYW0gaW5zdGFuY2UgdG8gYXR0YWNoIHRoZSBjb21tYW5kIHRvLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBiYXNoXG4gKiBjbGkgcGx1Z2luIGxpc3RcbiAqIGNsaSBwbHVnaW4gbGlzdCAtLW5hbWUgYXV0aC1wbHVnaW4gLS1pcy1hY3RpdmUgdHJ1ZVxuICogY2xpIHBsdWdpbiBsaXN0IC0tdmVyc2lvbiBcIl4xLjAuMFwiXG4gKiBjbGkgcGx1Z2luIGxpc3QgLS1saW1pdCA1MCAtLW9mZnNldCAxMDAgLS1zb3J0IFwibmFtZTphc2NcIlxuICogY2xpIHBsdWdpbiBsaXN0IC0tZm9ybWF0IGpzb24gLS1vdXRwdXQgcGx1Z2lucy5qc29uXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxpc3RQbHVnaW5zKHByb2dyYW06IENvbW1hbmQpOiB2b2lkIHtcbiAgcHJvZ3JhbVxuICAgIC5jb21tYW5kKCdsaXN0JylcbiAgICAuZGVzY3JpcHRpb24oJ1F1ZXJ5IHBsdWdpbnMgd2l0aCBjb21wcmVoZW5zaXZlIGZpbHRlcnMnKVxuXG4gICAgLy8gQ29tbW9uIGZpbHRlciBvcHRpb25zXG4gICAgLm9wdGlvbignLS1pZCA8aWQ+JywgJ0ZpbHRlciBieSBwbHVnaW4gSUQgKGNhbiBzcGVjaWZ5IG11bHRpcGxlIHdpdGggY29tbWFzKScpXG4gICAgLm9wdGlvbignLS1pcy1hY3RpdmUgPGJvb2xlYW4+JywgJ0ZpbHRlciBieSBhY3RpdmUgc3RhdHVzICh0cnVlL2ZhbHNlKScpXG4gICAgLm9wdGlvbignLS1saW1pdCA8bnVtYmVyPicsICdNYXhpbXVtIG51bWJlciBvZiByZXN1bHRzICgxLTEwMDApJywgcGFyc2VJbnQsIDUwKVxuICAgIC5vcHRpb24oJy0tb2Zmc2V0IDxudW1iZXI+JywgJ051bWJlciBvZiByZXN1bHRzIHRvIHNraXAnLCBwYXJzZUludCwgMClcbiAgICAub3B0aW9uKCctLXNvcnQgPHNvcnQ+JywgJ1NvcnQgZm9ybWF0OiBmaWVsZDpkaXJlY3Rpb24gKGUuZy4sIG5hbWU6YXNjLCBjcmVhdGVkQXQ6ZGVzYyknKVxuXG4gICAgLy8gUGx1Z2luLXNwZWNpZmljIGZpbHRlciBvcHRpb25zXG4gICAgLm9wdGlvbignLS1uYW1lIDxuYW1lPicsICdGaWx0ZXIgYnkgZXhhY3QgcGx1Z2luIG5hbWUnKVxuICAgIC5vcHRpb24oJy0tdmVyc2lvbiA8dmVyc2lvbj4nLCAnRmlsdGVyIGJ5IHZlcnNpb24gKHN1cHBvcnRzIHNlbXZlciwgZS5nLiwgXCJeMS4wLjBcIiknKVxuXG4gICAgLy8gT3V0cHV0IG9wdGlvbnNcbiAgICAub3B0aW9uKCctZiwgLS1mb3JtYXQgPGZvcm1hdD4nLCAnT3V0cHV0IGZvcm1hdCAoanNvbiwgeWFtbCwgdGFibGUsIGNzdiknLCAndGFibGUnKVxuICAgIC5vcHRpb24oJy1vLCAtLW91dHB1dCA8ZmlsZT4nLCAnU2F2ZSBvdXRwdXQgdG8gZmlsZScpXG4gICAgLm9wdGlvbignLS1zaG93LW1ldGFkYXRhJywgJ0luY2x1ZGUgZnVsbCBtZXRhZGF0YSBpbiBvdXRwdXQgKGpzb24veWFtbCBvbmx5KScsIGZhbHNlKVxuICAgIC5vcHRpb24oJy0tdmVyaWZ5LXNzbCcsICdFbmFibGUgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbicpXG4gICAgLm9wdGlvbignLS1uby12ZXJpZnktc3NsJywgJ0Rpc2FibGUgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbicpXG5cbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBleGVjdXRpb25JZCA9IHByaW50Q29tbWFuZEhlYWRlcignTGlzdCBQbHVnaW5zJywgJ1F1ZXJ5IFBsdWdpbnMnKTtcbiAgICAgIGNvbnN0IHN0YXJ0VGltZSA9IERhdGUubm93KCk7XG5cbiAgICAgIHRyeSB7XG5cbiAgICAgICAgLy8gQnVpbGQgZmlsdGVyIHBhcmFtZXRlcnMgKGNvbW1vbiArIHBsdWdpbi1zcGVjaWZpYylcbiAgICAgICAgY29uc3QgZmlsdGVyUGFyYW1zOiBQbHVnaW5GaWx0ZXJQYXJhbXMgPSB7XG4gICAgICAgICAgLi4uYnVpbGRDb21tb25GaWx0ZXJzKG9wdGlvbnMpLFxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIFBsdWdpbi1zcGVjaWZpYyBmaWx0ZXJzXG4gICAgICAgIGlmIChvcHRpb25zLm5hbWUpIHtcbiAgICAgICAgICBmaWx0ZXJQYXJhbXMubmFtZSA9IG9wdGlvbnMubmFtZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLnZlcnNpb24pIHtcbiAgICAgICAgICAvLyBWYWxpZGF0ZSBzZW12ZXIgZm9ybWF0XG4gICAgICAgICAgY29uc3QgdmVyc2lvblBhdHRlcm4gPSAvXihcXF58fik/KFxcZCspXFwuKFxcZCspXFwuKFxcZCspKC1bYS16QS1aMC05Li1dKyk/KFxcK1thLXpBLVowLTkuLV0rKT8kLztcbiAgICAgICAgICBpZiAoIXZlcnNpb25QYXR0ZXJuLnRlc3Qob3B0aW9ucy52ZXJzaW9uKSkge1xuICAgICAgICAgICAgcHJpbnRXYXJuaW5nKGBWZXJzaW9uIFwiJHtvcHRpb25zLnZlcnNpb259XCIgbWF5IG5vdCBiZSB2YWxpZCBzZW12ZXIgZm9ybWF0YCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZpbHRlclBhcmFtcy52ZXJzaW9uID0gb3B0aW9ucy52ZXJzaW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRGlzcGxheSBhY3RpdmUgZmlsdGVyc1xuICAgICAgICBjb25zdCBhY3RpdmVGaWx0ZXJzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICAgICAgICBpZiAoZmlsdGVyUGFyYW1zLmlkKSBhY3RpdmVGaWx0ZXJzLklEID0gZmlsdGVyUGFyYW1zLmlkO1xuICAgICAgICBpZiAoZmlsdGVyUGFyYW1zLmlzQWN0aXZlICE9PSB1bmRlZmluZWQpIGFjdGl2ZUZpbHRlcnNbJ0lzIEFjdGl2ZSddID0gZmlsdGVyUGFyYW1zLmlzQWN0aXZlO1xuICAgICAgICBpZiAoZmlsdGVyUGFyYW1zLm5hbWUpIGFjdGl2ZUZpbHRlcnMuTmFtZSA9IGZpbHRlclBhcmFtcy5uYW1lO1xuICAgICAgICBpZiAoZmlsdGVyUGFyYW1zLnZlcnNpb24pIGFjdGl2ZUZpbHRlcnMuVmVyc2lvbiA9IGZpbHRlclBhcmFtcy52ZXJzaW9uO1xuXG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhhY3RpdmVGaWx0ZXJzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcHJpbnRJbmZvKCdBY3RpdmUgRmlsdGVycycpO1xuICAgICAgICAgIHByaW50S2V5VmFsdWUoYWN0aXZlRmlsdGVycyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcHJpbnRJbmZvKCdObyBmaWx0ZXJzIGFwcGxpZWQgLSBmZXRjaGluZyBhbGwgcGx1Z2lucycpO1xuICAgICAgICB9XG5cbiAgICAgICAgZGlzcGxheVBhZ2luYXRpb25JbmZvKGZpbHRlclBhcmFtcyk7XG5cbiAgICAgICAgLy8gU2VjdXJpdHkgd2FybmluZyBmb3IgU1NMIHZlcmlmaWNhdGlvbiBkaXNhYmxlZFxuICAgICAgICBwcmludFNzbFdhcm5pbmcob3B0aW9ucy52ZXJpZnlTc2wpO1xuXG4gICAgICAgIC8vIENyZWF0ZSBhdXRoZW50aWNhdGVkIEFQSSBjbGllbnRcbiAgICAgICAgY29uc3QgY2xpZW50ID0gY3JlYXRlQXV0aGVudGljYXRlZENsaWVudChvcHRpb25zKTtcbiAgICAgICAgY29uc3QgY29uZmlnID0gY2xpZW50LmdldENvbmZpZygpO1xuXG4gICAgICAgIC8vIFF1ZXJ5IHBsdWdpbnNcbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICBwcmludFNlY3Rpb24oJ1F1ZXJ5aW5nIFBsdWdpbnMnKTtcbiAgICAgICAgcHJpbnRJbmZvKCdTZW5kaW5nIHJlcXVlc3QgdG8gQVBJLi4uJyk7XG5cbiAgICAgICAgY29uc3QgcmVxdWVzdFN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0PFBsdWdpbkxpc3RSZXNwb25zZT4oXG4gICAgICAgICAgY29uZmlnLmFwaS5wbHVnaW5MaXN0VXJsLFxuICAgICAgICAgIGZpbHRlclBhcmFtcyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgcmVxdWVzdER1cmF0aW9uID0gRGF0ZS5ub3coKSAtIHJlcXVlc3RTdGFydDtcblxuICAgICAgICAvLyBIYW5kbGUgcmVzcG9uc2VcbiAgICAgICAgY29uc3QgeyBpdGVtczogcGx1Z2lucywgdG90YWwsIGhhc01vcmUgfSA9IGV4dHJhY3RMaXN0UmVzcG9uc2U8UGx1Z2luPihyZXNwb25zZSwgJ3BsdWdpbnMnKTtcblxuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50U2VjdGlvbign4pyTIFF1ZXJ5IENvbXBsZXRlJyk7XG5cbiAgICAgICAgLy8gRGlzcGxheSByZXN1bHRzIHN1bW1hcnlcbiAgICAgICAgZGlzcGxheUxpc3RSZXN1bHRzKHBsdWdpbnMsIHRvdGFsLCBoYXNNb3JlLCAnUGx1Z2lucycsIHJlcXVlc3REdXJhdGlvbiwgZmlsdGVyUGFyYW1zKTtcblxuICAgICAgICAvLyBEaXNwbGF5IHN0YXRpc3RpY3NcbiAgICAgICAgaWYgKHBsdWdpbnMubGVuZ3RoID4gMCAmJiBvcHRpb25zLmZvcm1hdCA9PT0gJ3RhYmxlJykge1xuICAgICAgICAgIGNvbnN0IGFjdGl2ZUNvdW50ID0gcGx1Z2lucy5maWx0ZXIocCA9PiBwLmlzQWN0aXZlKS5sZW5ndGg7XG4gICAgICAgICAgY29uc3QgcHVibGljQ291bnQgPSBwbHVnaW5zLmZpbHRlcihwID0+IHAuaXNQdWJsaWMgPT09IHRydWUpLmxlbmd0aDtcbiAgICAgICAgICBjb25zdCB0b3RhbFNpemUgPSBwbHVnaW5zLnJlZHVjZSgoc3VtLCBwKSA9PiBzdW0gKyAocC5maWxlU2l6ZSB8fCAwKSwgMCk7XG5cbiAgICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgICAgcHJpbnRJbmZvKCdTdGF0aXN0aWNzJyk7XG4gICAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgICAnQWN0aXZlIFBsdWdpbnMnOiBgJHthY3RpdmVDb3VudH0vJHtwbHVnaW5zLmxlbmd0aH1gLFxuICAgICAgICAgICAgJ1B1YmxpYyBQbHVnaW5zJzogYCR7cHVibGljQ291bnR9LyR7cGx1Z2lucy5sZW5ndGh9YCxcbiAgICAgICAgICAgICdUb3RhbCBTaXplJzogZm9ybWF0RmlsZVNpemUodG90YWxTaXplKSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE91dHB1dCBkYXRhIGluIHJlcXVlc3RlZCBmb3JtYXRcbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICBpZiAob3B0aW9ucy5vdXRwdXQpIHtcbiAgICAgICAgICBwcmludEluZm8oJ1NhdmluZyB0byBmaWxlJywge1xuICAgICAgICAgICAgcGF0aDogb3B0aW9ucy5vdXRwdXQsXG4gICAgICAgICAgICBmb3JtYXQ6IG9wdGlvbnMuZm9ybWF0LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRm9ybWF0IG91dHB1dCBkYXRhXG4gICAgICAgIGNvbnN0IG91dHB1dFBsdWdpbnMgPSBvcHRpb25zLnNob3dNZXRhZGF0YSA/IHBsdWdpbnMgOiBwbHVnaW5zLm1hcChwID0+ICh7XG4gICAgICAgICAgJ0lEJzogcC5pZCxcbiAgICAgICAgICAnTmFtZSc6IHAubmFtZSxcbiAgICAgICAgICAnVmVyc2lvbic6IHAudmVyc2lvbixcbiAgICAgICAgICAnT3JnYW5pemF0aW9uJzogcC5vcmdhbml6YXRpb24sXG4gICAgICAgICAgJ0FjdGl2ZSc6IHAuaXNBY3RpdmUgPyAnWWVzJyA6ICdObycsXG4gICAgICAgICAgJ1B1YmxpYyc6IHAuaXNQdWJsaWMgPyAnWWVzJyA6ICdObycsXG4gICAgICAgICAgJ1NpemUnOiBwLmZpbGVTaXplID8gZm9ybWF0RmlsZVNpemUocC5maWxlU2l6ZSkgOiAnTi9BJyxcbiAgICAgICAgICAnQ3JlYXRlZCBBdCc6IHAuY3JlYXRlZEF0IHx8ICdOL0EnLFxuICAgICAgICB9KSk7XG5cbiAgICAgICAgb3V0cHV0RGF0YShvdXRwdXRQbHVnaW5zLCB7XG4gICAgICAgICAgZm9ybWF0OiBvcHRpb25zLmZvcm1hdCxcbiAgICAgICAgICBmaWxlOiBvcHRpb25zLm91dHB1dCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gUGVyZm9ybWFuY2UgbWV0cmljc1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICdFeGVjdXRpb24gSUQnOiBleGVjdXRpb25JZCxcbiAgICAgICAgICAnVG90YWwgRHVyYXRpb24nOiBmb3JtYXREdXJhdGlvbihEYXRlLm5vdygpIC0gc3RhcnRUaW1lKSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBoYW5kbGVFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuQVBJX1JFUVVFU1QsIHtcbiAgICAgICAgICBkZWJ1ZzogcHJvZ3JhbS5vcHRzKCkuZGVidWcsXG4gICAgICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICBjb21tYW5kOiAnbGlzdC1wbHVnaW5zJyxcbiAgICAgICAgICAgIGV4ZWN1dGlvbklkLFxuICAgICAgICAgICAgZmlsdGVyczogb3B0aW9ucyxcbiAgICAgICAgICAgIHZlcmlmeVNzbDogb3B0aW9ucy52ZXJpZnlTc2wsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG59XG4iXX0=
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1wbHVnaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2xpc3QtcGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQWUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEVBQTJCLE1BQU0sZ0NBQWdDLENBQUM7QUFDekUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBWXhEOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxPQUFnQjtJQUMxQyxPQUFPO1NBQ0osT0FBTyxDQUFDLE1BQU0sQ0FBQztTQUNmLFdBQVcsQ0FBQywwQ0FBMEMsQ0FBQztRQUV4RCx3QkFBd0I7U0FDdkIsTUFBTSxDQUFDLFdBQVcsRUFBRSx3REFBd0QsQ0FBQztTQUM3RSxNQUFNLENBQUMsdUJBQXVCLEVBQUUsc0NBQXNDLENBQUM7U0FDdkUsTUFBTSxDQUFDLGtCQUFrQixFQUFFLG9DQUFvQyxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUM7U0FDOUUsTUFBTSxDQUFDLG1CQUFtQixFQUFFLDJCQUEyQixFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7U0FDckUsTUFBTSxDQUFDLGVBQWUsRUFBRSwrREFBK0QsQ0FBQztRQUV6RixpQ0FBaUM7U0FDaEMsTUFBTSxDQUFDLGVBQWUsRUFBRSw2QkFBNkIsQ0FBQztTQUN0RCxNQUFNLENBQUMscUJBQXFCLEVBQUUscURBQXFELENBQUM7UUFFckYsaUJBQWlCO1NBQ2hCLE1BQU0sQ0FBQyx1QkFBdUIsRUFBRSx3Q0FBd0MsRUFBRSxPQUFPLENBQUM7U0FDbEYsTUFBTSxDQUFDLHFCQUFxQixFQUFFLHFCQUFxQixDQUFDO1NBQ3BELE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxrREFBa0QsRUFBRSxLQUFLLENBQUM7U0FDcEYsTUFBTSxDQUFDLGNBQWMsRUFBRSxxQ0FBcUMsQ0FBQztTQUM3RCxNQUFNLENBQUMsaUJBQWlCLEVBQUUsc0NBQXNDLENBQUM7U0FFakUsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQTZCLE9BQU8sRUFBRSxPQUFPLEVBQUU7UUFDL0UsV0FBVyxFQUFFLFNBQVM7UUFDdEIsV0FBVyxFQUFFLFNBQVM7UUFDdEIsT0FBTyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGFBQWE7UUFDN0MsV0FBVyxFQUFFLGNBQWM7UUFDM0IsWUFBWSxFQUFFLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFO1lBQzlCLE1BQU0sT0FBTyxHQUF1QixFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUM7WUFDaEQsSUFBSSxPQUFPLENBQUMsSUFBSTtnQkFBRSxPQUFPLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFjLENBQUM7WUFDeEQsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3BCLHlCQUF5QjtnQkFDekIsTUFBTSxjQUFjLEdBQUcsbUVBQW1FLENBQUM7Z0JBQzNGLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFpQixDQUFDLEVBQUUsQ0FBQztvQkFDcEQsWUFBWSxDQUFDLFlBQVksT0FBTyxDQUFDLE9BQU8sa0NBQWtDLENBQUMsQ0FBQztnQkFDOUUsQ0FBQztnQkFDRCxPQUFPLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFpQixDQUFDO1lBQzlDLENBQUM7WUFDRCxPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDO1FBQ0QsYUFBYSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDekIsTUFBTSxNQUFNLEdBQTRCLEVBQUUsQ0FBQztZQUMzQyxJQUFJLE9BQU8sQ0FBQyxFQUFFO2dCQUFFLE1BQU0sQ0FBQyxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUN2QyxJQUFJLE9BQU8sQ0FBQyxRQUFRLEtBQUssU0FBUztnQkFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztZQUMzRSxJQUFJLE9BQU8sQ0FBQyxJQUFJO2dCQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztZQUM3QyxJQUFJLE9BQU8sQ0FBQyxPQUFPO2dCQUFFLE1BQU0sQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUN0RCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBQ0QsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3hCLGdCQUFnQixFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUMvRSxnQkFBZ0IsRUFBRSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQ3hGLFlBQVksRUFBRSxjQUFjLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDckYsQ0FBQztRQUNGLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDN0UsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFO1lBQ1YsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJO1lBQ2QsU0FBUyxFQUFFLENBQUMsQ0FBQyxPQUFPO1lBQ3BCLGNBQWMsRUFBRSxDQUFDLENBQUMsWUFBWTtZQUM5QixRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBQ25DLFFBQVEsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDbkMsTUFBTSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUs7WUFDdkQsWUFBWSxFQUFFLENBQUMsQ0FBQyxTQUFTLElBQUksS0FBSztTQUNuQyxDQUFDLENBQUM7S0FDSixDQUFDLENBQUMsQ0FBQztBQUNSLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgeyBydW5MaXN0RW50aXR5IH0gZnJvbSAnLi9lbnRpdHktbGlzdC5qcyc7XG5pbXBvcnQgeyBmb3JtYXRGaWxlU2l6ZSB9IGZyb20gJy4uL2NvbmZpZy9jbGkuY29uc3RhbnRzLmpzJztcbmltcG9ydCB7IHR5cGUgUGx1Z2luIH0gZnJvbSAnLi4vdHlwZXMvaW5kZXguanMnO1xuaW1wb3J0IHsgdHlwZSBDb21tb25GaWx0ZXJQYXJhbXMgfSBmcm9tICcuLi91dGlscy9saXN0LWNvbW1hbmQtdXRpbHMuanMnO1xuaW1wb3J0IHsgcHJpbnRXYXJuaW5nIH0gZnJvbSAnLi4vdXRpbHMvb3V0cHV0LXV0aWxzLmpzJztcblxuLyoqXG4gKiBRdWVyeSBwYXJhbWV0ZXJzIGZvciB0aGUgcGx1Z2luIGxpc3QgQVBJIGVuZHBvaW50LlxuICogQ29tYmluZXMgY29tbW9uIGZpbHRlcnMgKHBhZ2luYXRpb24sIHNvcnQpIHdpdGggcGx1Z2luLXNwZWNpZmljIGZpbHRlcnMuXG4gKi9cbmludGVyZmFjZSBQbHVnaW5GaWx0ZXJQYXJhbXMgZXh0ZW5kcyBDb21tb25GaWx0ZXJQYXJhbXMge1xuICAvLyBQbHVnaW4tc3BlY2lmaWMgZmlsdGVyc1xuICBuYW1lPzogc3RyaW5nO1xuICB2ZXJzaW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgYGxpc3QtcGx1Z2luc2AgY29tbWFuZCB3aXRoIHRoZSBDTEkgcHJvZ3JhbS5cbiAqXG4gKiBRdWVyaWVzIHBsdWdpbnMgd2l0aCBmaWx0ZXJzIGZvciBuYW1lLCB2ZXJzaW9uLCBpbWFnZSB0YWcsXG4gKiBhY3RpdmUgc3RhdHVzLCBwbHVzIHBhZ2luYXRpb24gYW5kIHNvcnRpbmcuXG4gKlxuICogQHBhcmFtIHByb2dyYW0gLSBUaGUgcm9vdCBDb21tYW5kZXIgcHJvZ3JhbSBpbnN0YW5jZSB0byBhdHRhY2ggdGhlIGNvbW1hbmQgdG8uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGJhc2hcbiAqIGNsaSBwbHVnaW4gbGlzdFxuICogY2xpIHBsdWdpbiBsaXN0IC0tbmFtZSBhdXRoLXBsdWdpbiAtLWlzLWFjdGl2ZSB0cnVlXG4gKiBjbGkgcGx1Z2luIGxpc3QgLS12ZXJzaW9uIFwiXjEuMC4wXCJcbiAqIGNsaSBwbHVnaW4gbGlzdCAtLWxpbWl0IDUwIC0tb2Zmc2V0IDEwMCAtLXNvcnQgXCJuYW1lOmFzY1wiXG4gKiBjbGkgcGx1Z2luIGxpc3QgLS1mb3JtYXQganNvbiAtLW91dHB1dCBwbHVnaW5zLmpzb25cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gbGlzdFBsdWdpbnMocHJvZ3JhbTogQ29tbWFuZCk6IHZvaWQge1xuICBwcm9ncmFtXG4gICAgLmNvbW1hbmQoJ2xpc3QnKVxuICAgIC5kZXNjcmlwdGlvbignUXVlcnkgcGx1Z2lucyB3aXRoIGNvbXByZWhlbnNpdmUgZmlsdGVycycpXG5cbiAgICAvLyBDb21tb24gZmlsdGVyIG9wdGlvbnNcbiAgICAub3B0aW9uKCctLWlkIDxpZD4nLCAnRmlsdGVyIGJ5IHBsdWdpbiBJRCAoY2FuIHNwZWNpZnkgbXVsdGlwbGUgd2l0aCBjb21tYXMpJylcbiAgICAub3B0aW9uKCctLWlzLWFjdGl2ZSA8Ym9vbGVhbj4nLCAnRmlsdGVyIGJ5IGFjdGl2ZSBzdGF0dXMgKHRydWUvZmFsc2UpJylcbiAgICAub3B0aW9uKCctLWxpbWl0IDxudW1iZXI+JywgJ01heGltdW0gbnVtYmVyIG9mIHJlc3VsdHMgKDEtMTAwMCknLCBwYXJzZUludCwgNTApXG4gICAgLm9wdGlvbignLS1vZmZzZXQgPG51bWJlcj4nLCAnTnVtYmVyIG9mIHJlc3VsdHMgdG8gc2tpcCcsIHBhcnNlSW50LCAwKVxuICAgIC5vcHRpb24oJy0tc29ydCA8c29ydD4nLCAnU29ydCBmb3JtYXQ6IGZpZWxkOmRpcmVjdGlvbiAoZS5nLiwgbmFtZTphc2MsIGNyZWF0ZWRBdDpkZXNjKScpXG5cbiAgICAvLyBQbHVnaW4tc3BlY2lmaWMgZmlsdGVyIG9wdGlvbnNcbiAgICAub3B0aW9uKCctLW5hbWUgPG5hbWU+JywgJ0ZpbHRlciBieSBleGFjdCBwbHVnaW4gbmFtZScpXG4gICAgLm9wdGlvbignLS12ZXJzaW9uIDx2ZXJzaW9uPicsICdGaWx0ZXIgYnkgdmVyc2lvbiAoc3VwcG9ydHMgc2VtdmVyLCBlLmcuLCBcIl4xLjAuMFwiKScpXG5cbiAgICAvLyBPdXRwdXQgb3B0aW9uc1xuICAgIC5vcHRpb24oJy1mLCAtLWZvcm1hdCA8Zm9ybWF0PicsICdPdXRwdXQgZm9ybWF0IChqc29uLCB5YW1sLCB0YWJsZSwgY3N2KScsICd0YWJsZScpXG4gICAgLm9wdGlvbignLW8sIC0tb3V0cHV0IDxmaWxlPicsICdTYXZlIG91dHB1dCB0byBmaWxlJylcbiAgICAub3B0aW9uKCctLXNob3ctbWV0YWRhdGEnLCAnSW5jbHVkZSBmdWxsIG1ldGFkYXRhIGluIG91dHB1dCAoanNvbi95YW1sIG9ubHkpJywgZmFsc2UpXG4gICAgLm9wdGlvbignLS12ZXJpZnktc3NsJywgJ0VuYWJsZSBTU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uJylcbiAgICAub3B0aW9uKCctLW5vLXZlcmlmeS1zc2wnLCAnRGlzYWJsZSBTU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uJylcblxuICAgIC5hY3Rpb24oKG9wdGlvbnMpID0+IHJ1bkxpc3RFbnRpdHk8UGx1Z2luLCBQbHVnaW5GaWx0ZXJQYXJhbXM+KHByb2dyYW0sIG9wdGlvbnMsIHtcbiAgICAgIGxhYmVsUGx1cmFsOiAnUGx1Z2lucycsXG4gICAgICByZXNwb25zZUtleTogJ3BsdWdpbnMnLFxuICAgICAgbGlzdFVybDogKGNvbmZpZykgPT4gY29uZmlnLmFwaS5wbHVnaW5MaXN0VXJsLFxuICAgICAgY29tbWFuZE5hbWU6ICdsaXN0LXBsdWdpbnMnLFxuICAgICAgYnVpbGRGaWx0ZXJzOiAob3B0aW9ucywgYmFzZSkgPT4ge1xuICAgICAgICBjb25zdCBmaWx0ZXJzOiBQbHVnaW5GaWx0ZXJQYXJhbXMgPSB7IC4uLmJhc2UgfTtcbiAgICAgICAgaWYgKG9wdGlvbnMubmFtZSkgZmlsdGVycy5uYW1lID0gb3B0aW9ucy5uYW1lIGFzIHN0cmluZztcbiAgICAgICAgaWYgKG9wdGlvbnMudmVyc2lvbikge1xuICAgICAgICAgIC8vIFZhbGlkYXRlIHNlbXZlciBmb3JtYXRcbiAgICAgICAgICBjb25zdCB2ZXJzaW9uUGF0dGVybiA9IC9eKFxcXnx+KT8oXFxkKylcXC4oXFxkKylcXC4oXFxkKykoLVthLXpBLVowLTkuLV0rKT8oXFwrW2EtekEtWjAtOS4tXSspPyQvO1xuICAgICAgICAgIGlmICghdmVyc2lvblBhdHRlcm4udGVzdChvcHRpb25zLnZlcnNpb24gYXMgc3RyaW5nKSkge1xuICAgICAgICAgICAgcHJpbnRXYXJuaW5nKGBWZXJzaW9uIFwiJHtvcHRpb25zLnZlcnNpb259XCIgbWF5IG5vdCBiZSB2YWxpZCBzZW12ZXIgZm9ybWF0YCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZpbHRlcnMudmVyc2lvbiA9IG9wdGlvbnMudmVyc2lvbiBhcyBzdHJpbmc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpbHRlcnM7XG4gICAgICB9LFxuICAgICAgYWN0aXZlRmlsdGVyczogKGZpbHRlcnMpID0+IHtcbiAgICAgICAgY29uc3QgYWN0aXZlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICAgICAgICBpZiAoZmlsdGVycy5pZCkgYWN0aXZlLklEID0gZmlsdGVycy5pZDtcbiAgICAgICAgaWYgKGZpbHRlcnMuaXNBY3RpdmUgIT09IHVuZGVmaW5lZCkgYWN0aXZlWydJcyBBY3RpdmUnXSA9IGZpbHRlcnMuaXNBY3RpdmU7XG4gICAgICAgIGlmIChmaWx0ZXJzLm5hbWUpIGFjdGl2ZS5OYW1lID0gZmlsdGVycy5uYW1lO1xuICAgICAgICBpZiAoZmlsdGVycy52ZXJzaW9uKSBhY3RpdmUuVmVyc2lvbiA9IGZpbHRlcnMudmVyc2lvbjtcbiAgICAgICAgcmV0dXJuIGFjdGl2ZTtcbiAgICAgIH0sXG4gICAgICBzdGF0aXN0aWNzOiAocGx1Z2lucykgPT4gKHtcbiAgICAgICAgJ0FjdGl2ZSBQbHVnaW5zJzogYCR7cGx1Z2lucy5maWx0ZXIocCA9PiBwLmlzQWN0aXZlKS5sZW5ndGh9LyR7cGx1Z2lucy5sZW5ndGh9YCxcbiAgICAgICAgJ1B1YmxpYyBQbHVnaW5zJzogYCR7cGx1Z2lucy5maWx0ZXIocCA9PiBwLmlzUHVibGljID09PSB0cnVlKS5sZW5ndGh9LyR7cGx1Z2lucy5sZW5ndGh9YCxcbiAgICAgICAgJ1RvdGFsIFNpemUnOiBmb3JtYXRGaWxlU2l6ZShwbHVnaW5zLnJlZHVjZSgoc3VtLCBwKSA9PiBzdW0gKyAocC5maWxlU2l6ZSB8fCAwKSwgMCkpLFxuICAgICAgfSksXG4gICAgICByb3dzOiAocGx1Z2lucywgb3B0aW9ucykgPT4gb3B0aW9ucy5zaG93TWV0YWRhdGEgPyBwbHVnaW5zIDogcGx1Z2lucy5tYXAocCA9PiAoe1xuICAgICAgICAnSUQnOiBwLmlkLFxuICAgICAgICAnTmFtZSc6IHAubmFtZSxcbiAgICAgICAgJ1ZlcnNpb24nOiBwLnZlcnNpb24sXG4gICAgICAgICdPcmdhbml6YXRpb24nOiBwLm9yZ2FuaXphdGlvbixcbiAgICAgICAgJ0FjdGl2ZSc6IHAuaXNBY3RpdmUgPyAnWWVzJyA6ICdObycsXG4gICAgICAgICdQdWJsaWMnOiBwLmlzUHVibGljID8gJ1llcycgOiAnTm8nLFxuICAgICAgICAnU2l6ZSc6IHAuZmlsZVNpemUgPyBmb3JtYXRGaWxlU2l6ZShwLmZpbGVTaXplKSA6ICdOL0EnLFxuICAgICAgICAnQ3JlYXRlZCBBdCc6IHAuY3JlYXRlZEF0IHx8ICdOL0EnLFxuICAgICAgfSkpLFxuICAgIH0pKTtcbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqBpC;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkM5C"}
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+J5C"}
@@ -1,14 +1,13 @@
1
1
  // Copyright 2026 Pipeline Builder Contributors
2
2
  // SPDX-License-Identifier: Apache-2.0
3
- import https from 'https';
4
3
  import axios from 'axios';
5
4
  import { Command } from 'commander';
6
5
  import pico from 'picocolors';
7
6
  import { generateExecutionId, TIMEOUTS } from '../config/cli.constants.js';
7
+ import { assertCredentialTlsAllowed, credentialHttpsAgent, postLogin, resolveCredentials, switchOrganization } from '../utils/auth-utils.js';
8
8
  import { ERROR_CODES, handleError } from '../utils/error-handler.js';
9
9
  import { printDebug, printError, printInfo, printSection, printSuccess, printWarning } from '../utils/output-utils.js';
10
10
  import { checkAuthRateLimit, recordAuthFailure, recordAuthSuccess } from '../utils/rate-limiter.js';
11
- import { isProductionEnv } from '../utils/tls.js';
12
11
  const { bold, cyan, green, magenta } = pico;
13
12
  /**
14
13
  * Registers the `login` command with the CLI program.
@@ -45,16 +44,11 @@ export function login(program) {
45
44
  const isRefresh = !!options.refresh;
46
45
  // SECURITY: login/refresh POST plaintext passwords and JWTs. Never send them
47
46
  // over an unverified TLS connection in production — a MITM would harvest them.
48
- // Mirrors the guard in config-loader / tls. In non-production, --no-verify-ssl
49
- // is still honored (self-signed dev platforms).
50
- if (options.verifySsl === false && isProductionEnv()) {
51
- printError('Refusing to disable TLS verification in production (NODE_ENV=production) — credentials must not be transmitted over an unverified connection. Use a valid certificate, or unset NODE_ENV for local/self-signed development.');
52
- process.exit(ERROR_CODES.AUTHENTICATION);
53
- }
47
+ // In non-production, --no-verify-ssl is still honored (self-signed dev platforms).
48
+ assertCredentialTlsAllowed(options.verifySsl);
54
49
  // Credentials may come from flags OR the PLATFORM_IDENTIFIER/PLATFORM_PASSWORD
55
50
  // env vars (so the password need not appear in shell history / `ps`).
56
- const identifier = options.identifier || process.env.PLATFORM_IDENTIFIER;
57
- const password = options.password || process.env.PLATFORM_PASSWORD;
51
+ const { identifier, password } = resolveCredentials(options);
58
52
  try {
59
53
  // Validate required options
60
54
  if (!isRefresh && (!identifier || !password)) {
@@ -83,9 +77,7 @@ export function login(program) {
83
77
  verifySsl: options.verifySsl,
84
78
  });
85
79
  }
86
- const httpsAgent = new https.Agent({
87
- rejectUnauthorized: options.verifySsl ?? true,
88
- });
80
+ const httpsAgent = credentialHttpsAgent(options.verifySsl);
89
81
  let token;
90
82
  if (isRefresh) {
91
83
  const refreshUrl = `${options.url}/api/auth/refresh`;
@@ -98,17 +90,14 @@ export function login(program) {
98
90
  token = response.data?.data?.accessToken;
99
91
  }
100
92
  else {
101
- const loginUrl = `${options.url}/api/auth/login`;
102
- printDebug('POST', { url: loginUrl });
103
- const response = await axios.post(loginUrl, {
104
- identifier,
105
- password,
106
- }, {
107
- headers: { 'Content-Type': 'application/json' },
93
+ // identifier/password validated non-null above (the `!isRefresh` guard).
94
+ token = await postLogin({
95
+ url: options.url,
96
+ identifier: identifier,
97
+ password: password,
108
98
  httpsAgent,
109
99
  timeout: TIMEOUTS.HTTP_REQUEST,
110
100
  });
111
- token = response.data?.data?.accessToken;
112
101
  }
113
102
  if (!token) {
114
103
  if (!isRefresh)
@@ -123,25 +112,14 @@ export function login(program) {
123
112
  if (!quiet) {
124
113
  printInfo('Switching to organization', { orgId: options.org });
125
114
  }
126
- const switchUrl = `${options.url}/api/auth/switch-org`;
127
- printDebug('POST', { url: switchUrl });
128
- const switchResponse = await axios.post(switchUrl, { organizationId: options.org }, {
129
- headers: {
130
- 'Content-Type': 'application/json',
131
- 'Authorization': `Bearer ${token}`,
132
- },
115
+ token = await switchOrganization({
116
+ url: options.url,
117
+ orgId: options.org,
118
+ accessToken: token,
133
119
  httpsAgent,
134
120
  timeout: TIMEOUTS.HTTP_REQUEST,
121
+ quiet,
135
122
  });
136
- const switchedToken = switchResponse.data?.data?.accessToken;
137
- if (!switchedToken) {
138
- printError('Organization switch failed: no access token in response');
139
- process.exit(ERROR_CODES.AUTHENTICATION);
140
- }
141
- token = switchedToken;
142
- if (!quiet) {
143
- printSuccess(`Switched to organization ${options.org}`);
144
- }
145
123
  }
146
124
  if (!quiet) {
147
125
  console.log('');
@@ -190,4 +168,4 @@ export function login(program) {
190
168
  }
191
169
  });
192
170
  }
193
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvbG9naW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxJQUFJLE1BQU0sWUFBWSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVsRCxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBYTVDOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUNILE1BQU0sVUFBVSxLQUFLLENBQUMsT0FBZ0I7SUFDcEMsT0FBTztTQUNKLE9BQU8sQ0FBQyxPQUFPLENBQUM7U0FDaEIsV0FBVyxDQUFDLDREQUE0RCxDQUFDO1NBQ3pFLE1BQU0sQ0FBQywrQkFBK0IsRUFBRSxtQkFBbUIsQ0FBQztTQUM1RCxNQUFNLENBQUMsMkJBQTJCLEVBQUUsVUFBVSxDQUFDO1NBQy9DLE1BQU0sQ0FBQywwQkFBMEIsRUFBRSxrREFBa0QsQ0FBQztTQUN0RixNQUFNLENBQUMsZUFBZSxFQUFFLCtDQUErQyxDQUFDO1NBQ3hFLE1BQU0sQ0FBQyxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsSUFBSSx3QkFBd0IsQ0FBQztTQUNyRyxNQUFNLENBQUMsY0FBYyxFQUFFLHFDQUFxQyxDQUFDO1NBQzdELE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxzQ0FBc0MsQ0FBQztTQUNqRSxNQUFNLENBQUMsU0FBUyxFQUFFLG1EQUFtRCxDQUFDO1NBQ3RFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDeEIsTUFBTSxXQUFXLEdBQUcsbUJBQW1CLEVBQUUsQ0FBQztRQUMxQyxNQUFNLFNBQVMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUVwQyw2RUFBNkU7UUFDN0UsK0VBQStFO1FBQy9FLCtFQUErRTtRQUMvRSxnREFBZ0Q7UUFDaEQsSUFBSSxPQUFPLENBQUMsU0FBUyxLQUFLLEtBQUssSUFBSSxlQUFlLEVBQUUsRUFBRSxDQUFDO1lBQ3JELFVBQVUsQ0FBQyw2TkFBNk4sQ0FBQyxDQUFDO1lBQzFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzNDLENBQUM7UUFFRCwrRUFBK0U7UUFDL0Usc0VBQXNFO1FBQ3RFLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQztRQUN6RSxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUM7UUFFbkUsSUFBSSxDQUFDO1lBRUgsNEJBQTRCO1lBQzVCLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLFVBQVUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQzdDLFVBQVUsQ0FBQyxpSEFBaUgsQ0FBQyxDQUFDO2dCQUM5SCxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUMzQyxDQUFDO1lBQ0QsSUFBSSxDQUFDLFNBQVMsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ25DLFlBQVksQ0FBQywrR0FBK0csQ0FBQyxDQUFDO1lBQ2hJLENBQUM7WUFFRCxtREFBbUQ7WUFDbkQsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNmLE1BQU0sWUFBWSxHQUFHLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2pFLElBQUksWUFBWSxFQUFFLENBQUM7b0JBQ2pCLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFDekIsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQzNDLENBQUM7WUFDSCxDQUFDO1lBRUQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUM7WUFFckMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNYLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3BELE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsUUFBUSxXQUFXLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3pILE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2hCLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRTtvQkFDbEUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNyQyxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUc7b0JBQ2hCLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztpQkFDN0IsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUVELE1BQU0sVUFBVSxHQUFHLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQztnQkFDakMsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLFNBQVMsSUFBSSxJQUFJO2FBQzlDLENBQUMsQ0FBQztZQUVILElBQUksS0FBeUIsQ0FBQztZQUU5QixJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNkLE1BQU0sVUFBVSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsbUJBQW1CLENBQUM7Z0JBQ3JELFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztnQkFFeEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUMvQixVQUFVLEVBQ1YsRUFBRSxZQUFZLEVBQUUsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUNqQztvQkFDRSxPQUFPLEVBQUUsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUU7b0JBQy9DLFVBQVU7b0JBQ1YsT0FBTyxFQUFFLFFBQVEsQ0FBQyxZQUFZO2lCQUMvQixDQUNGLENBQUM7Z0JBRUYsS0FBSyxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQztZQUMzQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxRQUFRLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxpQkFBaUIsQ0FBQztnQkFDakQsVUFBVSxDQUFDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUV0QyxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQy9CLFFBQVEsRUFDUjtvQkFDRSxVQUFVO29CQUNWLFFBQVE7aUJBQ1QsRUFDRDtvQkFDRSxPQUFPLEVBQUUsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUU7b0JBQy9DLFVBQVU7b0JBQ1YsT0FBTyxFQUFFLFFBQVEsQ0FBQyxZQUFZO2lCQUMvQixDQUNGLENBQUM7Z0JBRUYsS0FBSyxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQztZQUMzQyxDQUFDO1lBRUQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNYLElBQUksQ0FBQyxTQUFTO29CQUFFLGlCQUFpQixDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzNELFVBQVUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxPQUFPLHNDQUFzQyxDQUFDLENBQUM7Z0JBQzNGLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzNDLENBQUM7WUFFRCxJQUFJLENBQUMsU0FBUztnQkFBRSxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRTNELHlEQUF5RDtZQUN6RCxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDaEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNYLFNBQVMsQ0FBQywyQkFBMkIsRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDakUsQ0FBQztnQkFFRCxNQUFNLFNBQVMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLHNCQUFzQixDQUFDO2dCQUN2RCxVQUFVLENBQUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7Z0JBRXZDLE1BQU0sY0FBYyxHQUFHLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FDckMsU0FBUyxFQUNULEVBQUUsY0FBYyxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFDL0I7b0JBQ0UsT0FBTyxFQUFFO3dCQUNQLGNBQWMsRUFBRSxrQkFBa0I7d0JBQ2xDLGVBQWUsRUFBRSxVQUFVLEtBQUssRUFBRTtxQkFDbkM7b0JBQ0QsVUFBVTtvQkFDVixPQUFPLEVBQUUsUUFBUSxDQUFDLFlBQVk7aUJBQy9CLENBQ0YsQ0FBQztnQkFFRixNQUFNLGFBQWEsR0FBRyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLENBQUM7Z0JBQzdELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztvQkFDbkIsVUFBVSxDQUFDLHlEQUF5RCxDQUFDLENBQUM7b0JBQ3RFLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUMzQyxDQUFDO2dCQUVELEtBQUssR0FBRyxhQUFhLENBQUM7Z0JBRXRCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDWCxZQUFZLENBQUMsNEJBQTRCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO2dCQUMxRCxDQUFDO1lBQ0gsQ0FBQztZQUVELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDWCxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNoQixZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQztnQkFDOUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNsQixDQUFDO1lBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUU5QyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ1gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDaEIsU0FBUyxDQUFDLHdEQUF3RCxDQUFDLENBQUM7Z0JBQ3BFLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFVBQVUsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzNELElBQUksU0FBUyxFQUFFLENBQUM7b0JBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsbUVBQW1FLE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQztnQkFDNUcsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLDJDQUEyQyxVQUFVLFlBQVksT0FBTyxXQUFXLENBQUMsQ0FBQyxDQUFDO2dCQUMxRyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsdUVBQXVFO1lBQ3ZFLHdFQUF3RTtZQUN4RSwwRUFBMEU7WUFDMUUsSUFBSSxDQUFDLFNBQVM7Z0JBQUUsaUJBQWlCLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMzRCxrREFBa0Q7WUFDbEQsSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzlCLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDO2dCQUN0QyxNQUFNLE9BQU8sR0FBSSxLQUFLLENBQUMsUUFBUSxFQUFFLElBQTZCLEVBQUUsT0FBTyxDQUFDO2dCQUV4RSxVQUFVLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsT0FBTyxTQUFTLEVBQUU7b0JBQzVELE1BQU0sRUFBRSxNQUFNLElBQUksYUFBYTtvQkFDL0IsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2lCQUNoQyxDQUFDLENBQUM7Z0JBQ0gsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDM0MsQ0FBQztZQUVELFdBQVcsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLGNBQWMsRUFBRTtnQkFDN0MsS0FBSyxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLO2dCQUMzQixJQUFJLEVBQUUsSUFBSTtnQkFDVixPQUFPLEVBQUU7b0JBQ1AsT0FBTyxFQUFFLE9BQU87b0JBQ2hCLFdBQVc7b0JBQ1gsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVO29CQUM5QixHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUc7aUJBQ2pCO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgaHR0cHMgZnJvbSAnaHR0cHMnO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHBpY28gZnJvbSAncGljb2NvbG9ycyc7XG5pbXBvcnQgeyBnZW5lcmF0ZUV4ZWN1dGlvbklkLCBUSU1FT1VUUyB9IGZyb20gJy4uL2NvbmZpZy9jbGkuY29uc3RhbnRzLmpzJztcbmltcG9ydCB7IEVSUk9SX0NPREVTLCBoYW5kbGVFcnJvciB9IGZyb20gJy4uL3V0aWxzL2Vycm9yLWhhbmRsZXIuanMnO1xuaW1wb3J0IHsgcHJpbnREZWJ1ZywgcHJpbnRFcnJvciwgcHJpbnRJbmZvLCBwcmludFNlY3Rpb24sIHByaW50U3VjY2VzcywgcHJpbnRXYXJuaW5nIH0gZnJvbSAnLi4vdXRpbHMvb3V0cHV0LXV0aWxzLmpzJztcbmltcG9ydCB7IGNoZWNrQXV0aFJhdGVMaW1pdCwgcmVjb3JkQXV0aEZhaWx1cmUsIHJlY29yZEF1dGhTdWNjZXNzIH0gZnJvbSAnLi4vdXRpbHMvcmF0ZS1saW1pdGVyLmpzJztcbmltcG9ydCB7IGlzUHJvZHVjdGlvbkVudiB9IGZyb20gJy4uL3V0aWxzL3Rscy5qcyc7XG5cbmNvbnN0IHsgYm9sZCwgY3lhbiwgZ3JlZW4sIG1hZ2VudGEgfSA9IHBpY287XG5cbi8qKlxuICogRXhwZWN0ZWQgc2hhcGUgb2YgdGhlIGxvZ2luL3JlZnJlc2ggQVBJIHJlc3BvbnNlLlxuICovXG5pbnRlcmZhY2UgTG9naW5SZXNwb25zZSB7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIGRhdGE6IHtcbiAgICBhY2Nlc3NUb2tlbjogc3RyaW5nO1xuICAgIHJlZnJlc2hUb2tlbjogc3RyaW5nO1xuICB9O1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgYGxvZ2luYCBjb21tYW5kIHdpdGggdGhlIENMSSBwcm9ncmFtLlxuICpcbiAqIEF1dGhlbnRpY2F0ZXMgYWdhaW5zdCB0aGUgcGxhdGZvcm0gQVBJIGFuZCBwcmludHMgYW4gZXhwb3J0IHN0YXRlbWVudFxuICogZm9yIGBQTEFURk9STV9UT0tFTmAgb24gc3VjY2Vzcy4gIERvZXMgTk9UIHJlcXVpcmUgYFBMQVRGT1JNX1RPS0VOYFxuICogdG8gYmUgc2V0IGJlZm9yZWhhbmQgKHVubGlrZSBvdGhlciBjb21tYW5kcykuXG4gKlxuICogQHBhcmFtIHByb2dyYW0gLSBUaGUgcm9vdCBDb21tYW5kZXIgcHJvZ3JhbSBpbnN0YW5jZSB0byBhdHRhY2ggdGhlIGNvbW1hbmQgdG8uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGJhc2hcbiAqIHBpcGVsaW5lLW1hbmFnZXIgYXV0aCBsb2dpbiAtLWlkZW50aWZpZXIgYWRtaW5AZXhhbXBsZS5jb20gLS1wYXNzd29yZCBzZWNyZXRcbiAqIHBpcGVsaW5lLW1hbmFnZXIgYXV0aCBsb2dpbiAtdSBhZG1pbkBleGFtcGxlLmNvbSAtcCBzZWNyZXRcbiAqIHBpcGVsaW5lLW1hbmFnZXIgYXV0aCBsb2dpbiAtdSBhZG1pbkBleGFtcGxlLmNvbSAtcCBzZWNyZXQgLS11cmwgaHR0cHM6Ly9teWhvc3Q6ODQ0M1xuICogZXZhbCAkKHBpcGVsaW5lLW1hbmFnZXIgYXV0aCBsb2dpbiAtdSBhZG1pbkBleGFtcGxlLmNvbSAtcCBzZWNyZXQgLS1xdWlldClcbiAqIHBpcGVsaW5lLW1hbmFnZXIgYXV0aCBsb2dpbiAtLXJlZnJlc2ggPHJlZnJlc2gtdG9rZW4+XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvZ2luKHByb2dyYW06IENvbW1hbmQpOiB2b2lkIHtcbiAgcHJvZ3JhbVxuICAgIC5jb21tYW5kKCdsb2dpbicpXG4gICAgLmRlc2NyaXB0aW9uKCdBdXRoZW50aWNhdGUgd2l0aCB0aGUgcGxhdGZvcm0gYW5kIG9idGFpbiBhIFBMQVRGT1JNX1RPS0VOJylcbiAgICAub3B0aW9uKCctdSwgLS1pZGVudGlmaWVyIDxpZGVudGlmaWVyPicsICdVc2VybmFtZSBvciBlbWFpbCcpXG4gICAgLm9wdGlvbignLXAsIC0tcGFzc3dvcmQgPHBhc3N3b3JkPicsICdQYXNzd29yZCcpXG4gICAgLm9wdGlvbignLS1yZWZyZXNoIDxyZWZyZXNoVG9rZW4+JywgJ1VzZSBhIHJlZnJlc2ggdG9rZW4gaW5zdGVhZCBvZiBsb2dpbiBjcmVkZW50aWFscycpXG4gICAgLm9wdGlvbignLS1vcmcgPG9yZ0lkPicsICdTd2l0Y2ggdG8gYSBzcGVjaWZpYyBvcmdhbml6YXRpb24gYWZ0ZXIgbG9naW4nKVxuICAgIC5vcHRpb24oJy0tdXJsIDx1cmw+JywgJ1BsYXRmb3JtIGJhc2UgVVJMJywgcHJvY2Vzcy5lbnYuUExBVEZPUk1fQkFTRV9VUkwgfHwgJ2h0dHBzOi8vbG9jYWxob3N0Ojg0NDMnKVxuICAgIC5vcHRpb24oJy0tdmVyaWZ5LXNzbCcsICdFbmFibGUgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbicpXG4gICAgLm9wdGlvbignLS1uby12ZXJpZnktc3NsJywgJ0Rpc2FibGUgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbicpXG4gICAgLm9wdGlvbignLS1xdWlldCcsICdPbmx5IHByaW50IHRoZSBleHBvcnQgc3RhdGVtZW50ICh1c2VmdWwgZm9yIGV2YWwpJylcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBleGVjdXRpb25JZCA9IGdlbmVyYXRlRXhlY3V0aW9uSWQoKTtcbiAgICAgIGNvbnN0IGlzUmVmcmVzaCA9ICEhb3B0aW9ucy5yZWZyZXNoO1xuXG4gICAgICAvLyBTRUNVUklUWTogbG9naW4vcmVmcmVzaCBQT1NUIHBsYWludGV4dCBwYXNzd29yZHMgYW5kIEpXVHMuIE5ldmVyIHNlbmQgdGhlbVxuICAgICAgLy8gb3ZlciBhbiB1bnZlcmlmaWVkIFRMUyBjb25uZWN0aW9uIGluIHByb2R1Y3Rpb24g4oCUIGEgTUlUTSB3b3VsZCBoYXJ2ZXN0IHRoZW0uXG4gICAgICAvLyBNaXJyb3JzIHRoZSBndWFyZCBpbiBjb25maWctbG9hZGVyIC8gdGxzLiBJbiBub24tcHJvZHVjdGlvbiwgLS1uby12ZXJpZnktc3NsXG4gICAgICAvLyBpcyBzdGlsbCBob25vcmVkIChzZWxmLXNpZ25lZCBkZXYgcGxhdGZvcm1zKS5cbiAgICAgIGlmIChvcHRpb25zLnZlcmlmeVNzbCA9PT0gZmFsc2UgJiYgaXNQcm9kdWN0aW9uRW52KCkpIHtcbiAgICAgICAgcHJpbnRFcnJvcignUmVmdXNpbmcgdG8gZGlzYWJsZSBUTFMgdmVyaWZpY2F0aW9uIGluIHByb2R1Y3Rpb24gKE5PREVfRU5WPXByb2R1Y3Rpb24pIOKAlCBjcmVkZW50aWFscyBtdXN0IG5vdCBiZSB0cmFuc21pdHRlZCBvdmVyIGFuIHVudmVyaWZpZWQgY29ubmVjdGlvbi4gVXNlIGEgdmFsaWQgY2VydGlmaWNhdGUsIG9yIHVuc2V0IE5PREVfRU5WIGZvciBsb2NhbC9zZWxmLXNpZ25lZCBkZXZlbG9wbWVudC4nKTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KEVSUk9SX0NPREVTLkFVVEhFTlRJQ0FUSU9OKTtcbiAgICAgIH1cblxuICAgICAgLy8gQ3JlZGVudGlhbHMgbWF5IGNvbWUgZnJvbSBmbGFncyBPUiB0aGUgUExBVEZPUk1fSURFTlRJRklFUi9QTEFURk9STV9QQVNTV09SRFxuICAgICAgLy8gZW52IHZhcnMgKHNvIHRoZSBwYXNzd29yZCBuZWVkIG5vdCBhcHBlYXIgaW4gc2hlbGwgaGlzdG9yeSAvIGBwc2ApLlxuICAgICAgY29uc3QgaWRlbnRpZmllciA9IG9wdGlvbnMuaWRlbnRpZmllciB8fCBwcm9jZXNzLmVudi5QTEFURk9STV9JREVOVElGSUVSO1xuICAgICAgY29uc3QgcGFzc3dvcmQgPSBvcHRpb25zLnBhc3N3b3JkIHx8IHByb2Nlc3MuZW52LlBMQVRGT1JNX1BBU1NXT1JEO1xuXG4gICAgICB0cnkge1xuXG4gICAgICAgIC8vIFZhbGlkYXRlIHJlcXVpcmVkIG9wdGlvbnNcbiAgICAgICAgaWYgKCFpc1JlZnJlc2ggJiYgKCFpZGVudGlmaWVyIHx8ICFwYXNzd29yZCkpIHtcbiAgICAgICAgICBwcmludEVycm9yKCdMb2dpbiByZXF1aXJlcyAtLWlkZW50aWZpZXIgYW5kIC0tcGFzc3dvcmQgKG9yIFBMQVRGT1JNX0lERU5USUZJRVIvUExBVEZPUk1fUEFTU1dPUkQgZW52KSwgb3IgLS1yZWZyZXNoIDx0b2tlbj4nKTtcbiAgICAgICAgICBwcm9jZXNzLmV4aXQoRVJST1JfQ09ERVMuQVVUSEVOVElDQVRJT04pO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNSZWZyZXNoICYmIG9wdGlvbnMucGFzc3dvcmQpIHtcbiAgICAgICAgICBwcmludFdhcm5pbmcoJ1Bhc3NpbmcgLS1wYXNzd29yZCBvbiB0aGUgY29tbWFuZCBsaW5lIGNhbiBleHBvc2UgaXQgdmlhIHNoZWxsIGhpc3Rvcnk7IHByZWZlciB0aGUgUExBVEZPUk1fUEFTU1dPUkQgZW52IHZhci4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJhdGUgbGltaXRpbmcg4oCUIHByZXZlbnQgYnJ1dGUgZm9yY2UgKGxvZ2luIG9ubHkpXG4gICAgICAgIGlmICghaXNSZWZyZXNoKSB7XG4gICAgICAgICAgY29uc3QgcmF0ZUxpbWl0TXNnID0gY2hlY2tBdXRoUmF0ZUxpbWl0KGlkZW50aWZpZXIsIG9wdGlvbnMudXJsKTtcbiAgICAgICAgICBpZiAocmF0ZUxpbWl0TXNnKSB7XG4gICAgICAgICAgICBwcmludEVycm9yKHJhdGVMaW1pdE1zZyk7XG4gICAgICAgICAgICBwcm9jZXNzLmV4aXQoRVJST1JfQ09ERVMuQVVUSEVOVElDQVRJT04pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHF1aWV0ID0gb3B0aW9ucy5xdWlldCA/PyBmYWxzZTtcblxuICAgICAgICBpZiAoIXF1aWV0KSB7XG4gICAgICAgICAgcHJpbnRTZWN0aW9uKGlzUmVmcmVzaCA/ICdUb2tlbiBSZWZyZXNoJyA6ICdMb2dpbicpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAke21hZ2VudGEoYFtFWEUtJHtleGVjdXRpb25JZH1dYCl9ICR7Y3lhbihib2xkKGlzUmVmcmVzaCA/ICdUb2tlbiBSZWZyZXNoJyA6ICdQbGF0Zm9ybSBBdXRoZW50aWNhdGlvbicpKX1gKTtcbiAgICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgICAgcHJpbnRJbmZvKGlzUmVmcmVzaCA/ICdSZWZyZXNoaW5nIGFjY2VzcyB0b2tlbicgOiAnQXV0aGVudGljYXRpbmcnLCB7XG4gICAgICAgICAgICAuLi4oaWRlbnRpZmllciA/IHsgaWRlbnRpZmllciB9IDoge30pLFxuICAgICAgICAgICAgdXJsOiBvcHRpb25zLnVybCxcbiAgICAgICAgICAgIHZlcmlmeVNzbDogb3B0aW9ucy52ZXJpZnlTc2wsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBodHRwc0FnZW50ID0gbmV3IGh0dHBzLkFnZW50KHtcbiAgICAgICAgICByZWplY3RVbmF1dGhvcml6ZWQ6IG9wdGlvbnMudmVyaWZ5U3NsID8/IHRydWUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGxldCB0b2tlbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmIChpc1JlZnJlc2gpIHtcbiAgICAgICAgICBjb25zdCByZWZyZXNoVXJsID0gYCR7b3B0aW9ucy51cmx9L2FwaS9hdXRoL3JlZnJlc2hgO1xuICAgICAgICAgIHByaW50RGVidWcoJ1BPU1QnLCB7IHVybDogcmVmcmVzaFVybCB9KTtcblxuICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MucG9zdDxMb2dpblJlc3BvbnNlPihcbiAgICAgICAgICAgIHJlZnJlc2hVcmwsXG4gICAgICAgICAgICB7IHJlZnJlc2hUb2tlbjogb3B0aW9ucy5yZWZyZXNoIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9LFxuICAgICAgICAgICAgICBodHRwc0FnZW50LFxuICAgICAgICAgICAgICB0aW1lb3V0OiBUSU1FT1VUUy5IVFRQX1JFUVVFU1QsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICB0b2tlbiA9IHJlc3BvbnNlLmRhdGE/LmRhdGE/LmFjY2Vzc1Rva2VuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGxvZ2luVXJsID0gYCR7b3B0aW9ucy51cmx9L2FwaS9hdXRoL2xvZ2luYDtcbiAgICAgICAgICBwcmludERlYnVnKCdQT1NUJywgeyB1cmw6IGxvZ2luVXJsIH0pO1xuXG4gICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5wb3N0PExvZ2luUmVzcG9uc2U+KFxuICAgICAgICAgICAgbG9naW5VcmwsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlkZW50aWZpZXIsXG4gICAgICAgICAgICAgIHBhc3N3b3JkLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0sXG4gICAgICAgICAgICAgIGh0dHBzQWdlbnQsXG4gICAgICAgICAgICAgIHRpbWVvdXQ6IFRJTUVPVVRTLkhUVFBfUkVRVUVTVCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHRva2VuID0gcmVzcG9uc2UuZGF0YT8uZGF0YT8uYWNjZXNzVG9rZW47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRva2VuKSB7XG4gICAgICAgICAgaWYgKCFpc1JlZnJlc2gpIHJlY29yZEF1dGhGYWlsdXJlKGlkZW50aWZpZXIsIG9wdGlvbnMudXJsKTtcbiAgICAgICAgICBwcmludEVycm9yKGAke2lzUmVmcmVzaCA/ICdUb2tlbiByZWZyZXNoJyA6ICdMb2dpbid9IGZhaWxlZDogbm8gYWNjZXNzIHRva2VuIGluIHJlc3BvbnNlYCk7XG4gICAgICAgICAgcHJvY2Vzcy5leGl0KEVSUk9SX0NPREVTLkFVVEhFTlRJQ0FUSU9OKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXNSZWZyZXNoKSByZWNvcmRBdXRoU3VjY2VzcyhpZGVudGlmaWVyLCBvcHRpb25zLnVybCk7XG5cbiAgICAgICAgLy8gU3dpdGNoIHRvIGEgc3BlY2lmaWMgb3JnYW5pemF0aW9uIGlmIC0tb3JnIGlzIHByb3ZpZGVkXG4gICAgICAgIGlmIChvcHRpb25zLm9yZykge1xuICAgICAgICAgIGlmICghcXVpZXQpIHtcbiAgICAgICAgICAgIHByaW50SW5mbygnU3dpdGNoaW5nIHRvIG9yZ2FuaXphdGlvbicsIHsgb3JnSWQ6IG9wdGlvbnMub3JnIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHN3aXRjaFVybCA9IGAke29wdGlvbnMudXJsfS9hcGkvYXV0aC9zd2l0Y2gtb3JnYDtcbiAgICAgICAgICBwcmludERlYnVnKCdQT1NUJywgeyB1cmw6IHN3aXRjaFVybCB9KTtcblxuICAgICAgICAgIGNvbnN0IHN3aXRjaFJlc3BvbnNlID0gYXdhaXQgYXhpb3MucG9zdDxMb2dpblJlc3BvbnNlPihcbiAgICAgICAgICAgIHN3aXRjaFVybCxcbiAgICAgICAgICAgIHsgb3JnYW5pemF0aW9uSWQ6IG9wdGlvbnMub3JnIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogYEJlYXJlciAke3Rva2VufWAsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGh0dHBzQWdlbnQsXG4gICAgICAgICAgICAgIHRpbWVvdXQ6IFRJTUVPVVRTLkhUVFBfUkVRVUVTVCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGNvbnN0IHN3aXRjaGVkVG9rZW4gPSBzd2l0Y2hSZXNwb25zZS5kYXRhPy5kYXRhPy5hY2Nlc3NUb2tlbjtcbiAgICAgICAgICBpZiAoIXN3aXRjaGVkVG9rZW4pIHtcbiAgICAgICAgICAgIHByaW50RXJyb3IoJ09yZ2FuaXphdGlvbiBzd2l0Y2ggZmFpbGVkOiBubyBhY2Nlc3MgdG9rZW4gaW4gcmVzcG9uc2UnKTtcbiAgICAgICAgICAgIHByb2Nlc3MuZXhpdChFUlJPUl9DT0RFUy5BVVRIRU5USUNBVElPTik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdG9rZW4gPSBzd2l0Y2hlZFRva2VuO1xuXG4gICAgICAgICAgaWYgKCFxdWlldCkge1xuICAgICAgICAgICAgcHJpbnRTdWNjZXNzKGBTd2l0Y2hlZCB0byBvcmdhbml6YXRpb24gJHtvcHRpb25zLm9yZ31gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXF1aWV0KSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICAgIHByaW50U3VjY2Vzcyhpc1JlZnJlc2ggPyAnVG9rZW4gcmVmcmVzaGVkIHN1Y2Nlc3NmdWxseScgOiAnTG9naW4gc3VjY2Vzc2Z1bCcpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKGBleHBvcnQgUExBVEZPUk1fVE9LRU49JHt0b2tlbn1gKTtcblxuICAgICAgICBpZiAoIXF1aWV0KSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICAgIHByaW50SW5mbygnVGlwOiBSdW4gdGhlIGZvbGxvd2luZyB0byBzZXQgdGhlIHRva2VuIGluIHlvdXIgc2hlbGw6Jyk7XG4gICAgICAgICAgY29uc3Qgb3JnRmxhZyA9IG9wdGlvbnMub3JnID8gYCAtLW9yZyAke29wdGlvbnMub3JnfWAgOiAnJztcbiAgICAgICAgICBpZiAoaXNSZWZyZXNoKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhncmVlbihgICBldmFsICQocGlwZWxpbmUtbWFuYWdlciBhdXRoIGxvZ2luIC0tcmVmcmVzaCAnPHJlZnJlc2gtdG9rZW4+JyR7b3JnRmxhZ30gLS1xdWlldClgKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGdyZWVuKGAgIGV2YWwgJChwaXBlbGluZS1tYW5hZ2VyIGF1dGggbG9naW4gLXUgJHtpZGVudGlmaWVyfSAtcCAnKioqJyR7b3JnRmxhZ30gLS1xdWlldClgKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAvLyBLZXkgdGhlIGZhaWx1cmUgdG8gKGlkZW50aWZpZXIsIHVybCkgbGlrZSB0aGUgY2hlY2svc3VjY2Vzcy9uby10b2tlblxuICAgICAgICAvLyBwYXRocyDigJQgYSBiYWQtcGFzc3dvcmQgNDAxIHRocm93cyB0byBoZXJlLCBzbyBrZXlpbmcgaXQgdG8gdGhlIHNoYXJlZFxuICAgICAgICAvLyBkZWZhdWx0IGJ1Y2tldCBtZWFudCBicnV0ZS1mb3JjZSBhdHRlbXB0cyBuZXZlciBhY2NydWVkIHRvd2FyZCBsb2Nrb3V0LlxuICAgICAgICBpZiAoIWlzUmVmcmVzaCkgcmVjb3JkQXV0aEZhaWx1cmUoaWRlbnRpZmllciwgb3B0aW9ucy51cmwpO1xuICAgICAgICAvLyBQcm92aWRlIGEgY2xlYXIgZmFpbHVyZSBtZXNzYWdlIGZvciBhdXRoIGVycm9yc1xuICAgICAgICBpZiAoYXhpb3MuaXNBeGlvc0Vycm9yKGVycm9yKSkge1xuICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGVycm9yLnJlc3BvbnNlPy5zdGF0dXM7XG4gICAgICAgICAgY29uc3QgbWVzc2FnZSA9IChlcnJvci5yZXNwb25zZT8uZGF0YSBhcyB7IG1lc3NhZ2U/OiBzdHJpbmcgfSk/Lm1lc3NhZ2U7XG5cbiAgICAgICAgICBwcmludEVycm9yKGAke2lzUmVmcmVzaCA/ICdUb2tlbiByZWZyZXNoJyA6ICdMb2dpbid9IGZhaWxlZGAsIHtcbiAgICAgICAgICAgIHN0YXR1czogc3RhdHVzID8/ICdubyByZXNwb25zZScsXG4gICAgICAgICAgICAuLi4obWVzc2FnZSA/IHsgbWVzc2FnZSB9IDoge30pLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdChFUlJPUl9DT0RFUy5BVVRIRU5USUNBVElPTik7XG4gICAgICAgIH1cblxuICAgICAgICBoYW5kbGVFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuQVVUSEVOVElDQVRJT04sIHtcbiAgICAgICAgICBkZWJ1ZzogcHJvZ3JhbS5vcHRzKCkuZGVidWcsXG4gICAgICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICBjb21tYW5kOiAnbG9naW4nLFxuICAgICAgICAgICAgZXhlY3V0aW9uSWQsXG4gICAgICAgICAgICBpZGVudGlmaWVyOiBvcHRpb25zLmlkZW50aWZpZXIsXG4gICAgICAgICAgICB1cmw6IG9wdGlvbnMudXJsLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xufVxuIl19
171
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvbG9naW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLElBQUksTUFBTSxZQUFZLENBQUM7QUFDOUIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNFLE9BQU8sRUFBRSwwQkFBMEIsRUFBcUIsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEssT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2SCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVwRyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBRTVDOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUNILE1BQU0sVUFBVSxLQUFLLENBQUMsT0FBZ0I7SUFDcEMsT0FBTztTQUNKLE9BQU8sQ0FBQyxPQUFPLENBQUM7U0FDaEIsV0FBVyxDQUFDLDREQUE0RCxDQUFDO1NBQ3pFLE1BQU0sQ0FBQywrQkFBK0IsRUFBRSxtQkFBbUIsQ0FBQztTQUM1RCxNQUFNLENBQUMsMkJBQTJCLEVBQUUsVUFBVSxDQUFDO1NBQy9DLE1BQU0sQ0FBQywwQkFBMEIsRUFB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WCxVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVU7b0JBQzlCLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRztpQkFDakI7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCBwaWNvIGZyb20gJ3BpY29jb2xvcnMnO1xuaW1wb3J0IHsgZ2VuZXJhdGVFeGVjdXRpb25JZCwgVElNRU9VVFMgfSBmcm9tICcuLi9jb25maWcvY2xpLmNvbnN0YW50cy5qcyc7XG5pbXBvcnQgeyBhc3NlcnRDcmVkZW50aWFsVGxzQWxsb3dlZCwgdHlwZSBBdXRoUmVzcG9uc2UsIGNyZWRlbnRpYWxIdHRwc0FnZW50LCBwb3N0TG9naW4sIHJlc29sdmVDcmVkZW50aWFscywgc3dpdGNoT3JnYW5pemF0aW9uIH0gZnJvbSAnLi4vdXRpbHMvYXV0aC11dGlscy5qcyc7XG5pbXBvcnQgeyBFUlJPUl9DT0RFUywgaGFuZGxlRXJyb3IgfSBmcm9tICcuLi91dGlscy9lcnJvci1oYW5kbGVyLmpzJztcbmltcG9ydCB7IHByaW50RGVidWcsIHByaW50RXJyb3IsIHByaW50SW5mbywgcHJpbnRTZWN0aW9uLCBwcmludFN1Y2Nlc3MsIHByaW50V2FybmluZyB9IGZyb20gJy4uL3V0aWxzL291dHB1dC11dGlscy5qcyc7XG5pbXBvcnQgeyBjaGVja0F1dGhSYXRlTGltaXQsIHJlY29yZEF1dGhGYWlsdXJlLCByZWNvcmRBdXRoU3VjY2VzcyB9IGZyb20gJy4uL3V0aWxzL3JhdGUtbGltaXRlci5qcyc7XG5cbmNvbnN0IHsgYm9sZCwgY3lhbiwgZ3JlZW4sIG1hZ2VudGEgfSA9IHBpY287XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSBgbG9naW5gIGNvbW1hbmQgd2l0aCB0aGUgQ0xJIHByb2dyYW0uXG4gKlxuICogQXV0aGVudGljYXRlcyBhZ2FpbnN0IHRoZSBwbGF0Zm9ybSBBUEkgYW5kIHByaW50cyBhbiBleHBvcnQgc3RhdGVtZW50XG4gKiBmb3IgYFBMQVRGT1JNX1RPS0VOYCBvbiBzdWNjZXNzLiAgRG9lcyBOT1QgcmVxdWlyZSBgUExBVEZPUk1fVE9LRU5gXG4gKiB0byBiZSBzZXQgYmVmb3JlaGFuZCAodW5saWtlIG90aGVyIGNvbW1hbmRzKS5cbiAqXG4gKiBAcGFyYW0gcHJvZ3JhbSAtIFRoZSByb290IENvbW1hbmRlciBwcm9ncmFtIGluc3RhbmNlIHRvIGF0dGFjaCB0aGUgY29tbWFuZCB0by5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgYmFzaFxuICogcGlwZWxpbmUtbWFuYWdlciBhdXRoIGxvZ2luIC0taWRlbnRpZmllciBhZG1pbkBleGFtcGxlLmNvbSAtLXBhc3N3b3JkIHNlY3JldFxuICogcGlwZWxpbmUtbWFuYWdlciBhdXRoIGxvZ2luIC11IGFkbWluQGV4YW1wbGUuY29tIC1wIHNlY3JldFxuICogcGlwZWxpbmUtbWFuYWdlciBhdXRoIGxvZ2luIC11IGFkbWluQGV4YW1wbGUuY29tIC1wIHNlY3JldCAtLXVybCBodHRwczovL215aG9zdDo4NDQzXG4gKiBldmFsICQocGlwZWxpbmUtbWFuYWdlciBhdXRoIGxvZ2luIC11IGFkbWluQGV4YW1wbGUuY29tIC1wIHNlY3JldCAtLXF1aWV0KVxuICogcGlwZWxpbmUtbWFuYWdlciBhdXRoIGxvZ2luIC0tcmVmcmVzaCA8cmVmcmVzaC10b2tlbj5cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9naW4ocHJvZ3JhbTogQ29tbWFuZCk6IHZvaWQge1xuICBwcm9ncmFtXG4gICAgLmNvbW1hbmQoJ2xvZ2luJylcbiAgICAuZGVzY3JpcHRpb24oJ0F1dGhlbnRpY2F0ZSB3aXRoIHRoZSBwbGF0Zm9ybSBhbmQgb2J0YWluIGEgUExBVEZPUk1fVE9LRU4nKVxuICAgIC5vcHRpb24oJy11LCAtLWlkZW50aWZpZXIgPGlkZW50aWZpZXI+JywgJ1VzZXJuYW1lIG9yIGVtYWlsJylcbiAgICAub3B0aW9uKCctcCwgLS1wYXNzd29yZCA8cGFzc3dvcmQ+JywgJ1Bhc3N3b3JkJylcbiAgICAub3B0aW9uKCctLXJlZnJlc2ggPHJlZnJlc2hUb2tlbj4nLCAnVXNlIGEgcmVmcmVzaCB0b2tlbiBpbnN0ZWFkIG9mIGxvZ2luIGNyZWRlbnRpYWxzJylcbiAgICAub3B0aW9uKCctLW9yZyA8b3JnSWQ+JywgJ1N3aXRjaCB0byBhIHNwZWNpZmljIG9yZ2FuaXphdGlvbiBhZnRlciBsb2dpbicpXG4gICAgLm9wdGlvbignLS11cmwgPHVybD4nLCAnUGxhdGZvcm0gYmFzZSBVUkwnLCBwcm9jZXNzLmVudi5QTEFURk9STV9CQVNFX1VSTCB8fCAnaHR0cHM6Ly9sb2NhbGhvc3Q6ODQ0MycpXG4gICAgLm9wdGlvbignLS12ZXJpZnktc3NsJywgJ0VuYWJsZSBTU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uJylcbiAgICAub3B0aW9uKCctLW5vLXZlcmlmeS1zc2wnLCAnRGlzYWJsZSBTU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uJylcbiAgICAub3B0aW9uKCctLXF1aWV0JywgJ09ubHkgcHJpbnQgdGhlIGV4cG9ydCBzdGF0ZW1lbnQgKHVzZWZ1bCBmb3IgZXZhbCknKVxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IGV4ZWN1dGlvbklkID0gZ2VuZXJhdGVFeGVjdXRpb25JZCgpO1xuICAgICAgY29uc3QgaXNSZWZyZXNoID0gISFvcHRpb25zLnJlZnJlc2g7XG5cbiAgICAgIC8vIFNFQ1VSSVRZOiBsb2dpbi9yZWZyZXNoIFBPU1QgcGxhaW50ZXh0IHBhc3N3b3JkcyBhbmQgSldUcy4gTmV2ZXIgc2VuZCB0aGVtXG4gICAgICAvLyBvdmVyIGFuIHVudmVyaWZpZWQgVExTIGNvbm5lY3Rpb24gaW4gcHJvZHVjdGlvbiDigJQgYSBNSVRNIHdvdWxkIGhhcnZlc3QgdGhlbS5cbiAgICAgIC8vIEluIG5vbi1wcm9kdWN0aW9uLCAtLW5vLXZlcmlmeS1zc2wgaXMgc3RpbGwgaG9ub3JlZCAoc2VsZi1zaWduZWQgZGV2IHBsYXRmb3JtcykuXG4gICAgICBhc3NlcnRDcmVkZW50aWFsVGxzQWxsb3dlZChvcHRpb25zLnZlcmlmeVNzbCk7XG5cbiAgICAgIC8vIENyZWRlbnRpYWxzIG1heSBjb21lIGZyb20gZmxhZ3MgT1IgdGhlIFBMQVRGT1JNX0lERU5USUZJRVIvUExBVEZPUk1fUEFTU1dPUkRcbiAgICAgIC8vIGVudiB2YXJzIChzbyB0aGUgcGFzc3dvcmQgbmVlZCBub3QgYXBwZWFyIGluIHNoZWxsIGhpc3RvcnkgLyBgcHNgKS5cbiAgICAgIGNvbnN0IHsgaWRlbnRpZmllciwgcGFzc3dvcmQgfSA9IHJlc29sdmVDcmVkZW50aWFscyhvcHRpb25zKTtcblxuICAgICAgdHJ5IHtcblxuICAgICAgICAvLyBWYWxpZGF0ZSByZXF1aXJlZCBvcHRpb25zXG4gICAgICAgIGlmICghaXNSZWZyZXNoICYmICghaWRlbnRpZmllciB8fCAhcGFzc3dvcmQpKSB7XG4gICAgICAgICAgcHJpbnRFcnJvcignTG9naW4gcmVxdWlyZXMgLS1pZGVudGlmaWVyIGFuZCAtLXBhc3N3b3JkIChvciBQTEFURk9STV9JREVOVElGSUVSL1BMQVRGT1JNX1BBU1NXT1JEIGVudiksIG9yIC0tcmVmcmVzaCA8dG9rZW4+Jyk7XG4gICAgICAgICAgcHJvY2Vzcy5leGl0KEVSUk9SX0NPREVTLkFVVEhFTlRJQ0FUSU9OKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzUmVmcmVzaCAmJiBvcHRpb25zLnBhc3N3b3JkKSB7XG4gICAgICAgICAgcHJpbnRXYXJuaW5nKCdQYXNzaW5nIC0tcGFzc3dvcmQgb24gdGhlIGNvbW1hbmQgbGluZSBjYW4gZXhwb3NlIGl0IHZpYSBzaGVsbCBoaXN0b3J5OyBwcmVmZXIgdGhlIFBMQVRGT1JNX1BBU1NXT1JEIGVudiB2YXIuJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSYXRlIGxpbWl0aW5nIOKAlCBwcmV2ZW50IGJydXRlIGZvcmNlIChsb2dpbiBvbmx5KVxuICAgICAgICBpZiAoIWlzUmVmcmVzaCkge1xuICAgICAgICAgIGNvbnN0IHJhdGVMaW1pdE1zZyA9IGNoZWNrQXV0aFJhdGVMaW1pdChpZGVudGlmaWVyLCBvcHRpb25zLnVybCk7XG4gICAgICAgICAgaWYgKHJhdGVMaW1pdE1zZykge1xuICAgICAgICAgICAgcHJpbnRFcnJvcihyYXRlTGltaXRNc2cpO1xuICAgICAgICAgICAgcHJvY2Vzcy5leGl0KEVSUk9SX0NPREVTLkFVVEhFTlRJQ0FUSU9OKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBxdWlldCA9IG9wdGlvbnMucXVpZXQgPz8gZmFsc2U7XG5cbiAgICAgICAgaWYgKCFxdWlldCkge1xuICAgICAgICAgIHByaW50U2VjdGlvbihpc1JlZnJlc2ggPyAnVG9rZW4gUmVmcmVzaCcgOiAnTG9naW4nKTtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgJHttYWdlbnRhKGBbRVhFLSR7ZXhlY3V0aW9uSWR9XWApfSAke2N5YW4oYm9sZChpc1JlZnJlc2ggPyAnVG9rZW4gUmVmcmVzaCcgOiAnUGxhdGZvcm0gQXV0aGVudGljYXRpb24nKSl9YCk7XG4gICAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICAgIHByaW50SW5mbyhpc1JlZnJlc2ggPyAnUmVmcmVzaGluZyBhY2Nlc3MgdG9rZW4nIDogJ0F1dGhlbnRpY2F0aW5nJywge1xuICAgICAgICAgICAgLi4uKGlkZW50aWZpZXIgPyB7IGlkZW50aWZpZXIgfSA6IHt9KSxcbiAgICAgICAgICAgIHVybDogb3B0aW9ucy51cmwsXG4gICAgICAgICAgICB2ZXJpZnlTc2w6IG9wdGlvbnMudmVyaWZ5U3NsLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaHR0cHNBZ2VudCA9IGNyZWRlbnRpYWxIdHRwc0FnZW50KG9wdGlvbnMudmVyaWZ5U3NsKTtcblxuICAgICAgICBsZXQgdG9rZW46IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgICAgICBpZiAoaXNSZWZyZXNoKSB7XG4gICAgICAgICAgY29uc3QgcmVmcmVzaFVybCA9IGAke29wdGlvbnMudXJsfS9hcGkvYXV0aC9yZWZyZXNoYDtcbiAgICAgICAgICBwcmludERlYnVnKCdQT1NUJywgeyB1cmw6IHJlZnJlc2hVcmwgfSk7XG5cbiAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zLnBvc3Q8QXV0aFJlc3BvbnNlPihcbiAgICAgICAgICAgIHJlZnJlc2hVcmwsXG4gICAgICAgICAgICB7IHJlZnJlc2hUb2tlbjogb3B0aW9ucy5yZWZyZXNoIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9LFxuICAgICAgICAgICAgICBodHRwc0FnZW50LFxuICAgICAgICAgICAgICB0aW1lb3V0OiBUSU1FT1VUUy5IVFRQX1JFUVVFU1QsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICB0b2tlbiA9IHJlc3BvbnNlLmRhdGE/LmRhdGE/LmFjY2Vzc1Rva2VuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGlkZW50aWZpZXIvcGFzc3dvcmQgdmFsaWRhdGVkIG5vbi1udWxsIGFib3ZlICh0aGUgYCFpc1JlZnJlc2hgIGd1YXJkKS5cbiAgICAgICAgICB0b2tlbiA9IGF3YWl0IHBvc3RMb2dpbih7XG4gICAgICAgICAgICB1cmw6IG9wdGlvbnMudXJsLFxuICAgICAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllciEsXG4gICAgICAgICAgICBwYXNzd29yZDogcGFzc3dvcmQhLFxuICAgICAgICAgICAgaHR0cHNBZ2VudCxcbiAgICAgICAgICAgIHRpbWVvdXQ6IFRJTUVPVVRTLkhUVFBfUkVRVUVTVCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdG9rZW4pIHtcbiAgICAgICAgICBpZiAoIWlzUmVmcmVzaCkgcmVjb3JkQXV0aEZhaWx1cmUoaWRlbnRpZmllciwgb3B0aW9ucy51cmwpO1xuICAgICAgICAgIHByaW50RXJyb3IoYCR7aXNSZWZyZXNoID8gJ1Rva2VuIHJlZnJlc2gnIDogJ0xvZ2luJ30gZmFpbGVkOiBubyBhY2Nlc3MgdG9rZW4gaW4gcmVzcG9uc2VgKTtcbiAgICAgICAgICBwcm9jZXNzLmV4aXQoRVJST1JfQ09ERVMuQVVUSEVOVElDQVRJT04pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFpc1JlZnJlc2gpIHJlY29yZEF1dGhTdWNjZXNzKGlkZW50aWZpZXIsIG9wdGlvbnMudXJsKTtcblxuICAgICAgICAvLyBTd2l0Y2ggdG8gYSBzcGVjaWZpYyBvcmdhbml6YXRpb24gaWYgLS1vcmcgaXMgcHJvdmlkZWRcbiAgICAgICAgaWYgKG9wdGlvbnMub3JnKSB7XG4gICAgICAgICAgaWYgKCFxdWlldCkge1xuICAgICAgICAgICAgcHJpbnRJbmZvKCdTd2l0Y2hpbmcgdG8gb3JnYW5pemF0aW9uJywgeyBvcmdJZDogb3B0aW9ucy5vcmcgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdG9rZW4gPSBhd2FpdCBzd2l0Y2hPcmdhbml6YXRpb24oe1xuICAgICAgICAgICAgdXJsOiBvcHRpb25zLnVybCxcbiAgICAgICAgICAgIG9yZ0lkOiBvcHRpb25zLm9yZyxcbiAgICAgICAgICAgIGFjY2Vzc1Rva2VuOiB0b2tlbixcbiAgICAgICAgICAgIGh0dHBzQWdlbnQsXG4gICAgICAgICAgICB0aW1lb3V0OiBUSU1FT1VUUy5IVFRQX1JFUVVFU1QsXG4gICAgICAgICAgICBxdWlldCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcXVpZXQpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgICAgcHJpbnRTdWNjZXNzKGlzUmVmcmVzaCA/ICdUb2tlbiByZWZyZXNoZWQgc3VjY2Vzc2Z1bGx5JyA6ICdMb2dpbiBzdWNjZXNzZnVsJyk7XG4gICAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coYGV4cG9ydCBQTEFURk9STV9UT0tFTj0ke3Rva2VufWApO1xuXG4gICAgICAgIGlmICghcXVpZXQpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgICAgcHJpbnRJbmZvKCdUaXA6IFJ1biB0aGUgZm9sbG93aW5nIHRvIHNldCB0aGUgdG9rZW4gaW4geW91ciBzaGVsbDonKTtcbiAgICAgICAgICBjb25zdCBvcmdGbGFnID0gb3B0aW9ucy5vcmcgPyBgIC0tb3JnICR7b3B0aW9ucy5vcmd9YCA6ICcnO1xuICAgICAgICAgIGlmIChpc1JlZnJlc2gpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGdyZWVuKGAgIGV2YWwgJChwaXBlbGluZS1tYW5hZ2VyIGF1dGggbG9naW4gLS1yZWZyZXNoICc8cmVmcmVzaC10b2tlbj4nJHtvcmdGbGFnfSAtLXF1aWV0KWApKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5sb2coZ3JlZW4oYCAgZXZhbCAkKHBpcGVsaW5lLW1hbmFnZXIgYXV0aCBsb2dpbiAtdSAke2lkZW50aWZpZXJ9IC1wICcqKionJHtvcmdGbGFnfSAtLXF1aWV0KWApKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIC8vIEtleSB0aGUgZmFpbHVyZSB0byAoaWRlbnRpZmllciwgdXJsKSBsaWtlIHRoZSBjaGVjay9zdWNjZXNzL25vLXRva2VuXG4gICAgICAgIC8vIHBhdGhzIOKAlCBhIGJhZC1wYXNzd29yZCA0MDEgdGhyb3dzIHRvIGhlcmUsIHNvIGtleWluZyBpdCB0byB0aGUgc2hhcmVkXG4gICAgICAgIC8vIGRlZmF1bHQgYnVja2V0IG1lYW50IGJydXRlLWZvcmNlIGF0dGVtcHRzIG5ldmVyIGFjY3J1ZWQgdG93YXJkIGxvY2tvdXQuXG4gICAgICAgIGlmICghaXNSZWZyZXNoKSByZWNvcmRBdXRoRmFpbHVyZShpZGVudGlmaWVyLCBvcHRpb25zLnVybCk7XG4gICAgICAgIC8vIFByb3ZpZGUgYSBjbGVhciBmYWlsdXJlIG1lc3NhZ2UgZm9yIGF1dGggZXJyb3JzXG4gICAgICAgIGlmIChheGlvcy5pc0F4aW9zRXJyb3IoZXJyb3IpKSB7XG4gICAgICAgICAgY29uc3Qgc3RhdHVzID0gZXJyb3IucmVzcG9uc2U/LnN0YXR1cztcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gKGVycm9yLnJlc3BvbnNlPy5kYXRhIGFzIHsgbWVzc2FnZT86IHN0cmluZyB9KT8ubWVzc2FnZTtcblxuICAgICAgICAgIHByaW50RXJyb3IoYCR7aXNSZWZyZXNoID8gJ1Rva2VuIHJlZnJlc2gnIDogJ0xvZ2luJ30gZmFpbGVkYCwge1xuICAgICAgICAgICAgc3RhdHVzOiBzdGF0dXMgPz8gJ25vIHJlc3BvbnNlJyxcbiAgICAgICAgICAgIC4uLihtZXNzYWdlID8geyBtZXNzYWdlIH0gOiB7fSksXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcHJvY2Vzcy5leGl0KEVSUk9SX0NPREVTLkFVVEhFTlRJQ0FUSU9OKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGhhbmRsZUVycm9yKGVycm9yLCBFUlJPUl9DT0RFUy5BVVRIRU5USUNBVElPTiwge1xuICAgICAgICAgIGRlYnVnOiBwcm9ncmFtLm9wdHMoKS5kZWJ1ZyxcbiAgICAgICAgICBleGl0OiB0cnVlLFxuICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgIGNvbW1hbmQ6ICdsb2dpbicsXG4gICAgICAgICAgICBleGVjdXRpb25JZCxcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IG9wdGlvbnMuaWRlbnRpZmllcixcbiAgICAgICAgICAgIHVybDogb3B0aW9ucy51cmwsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG59XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/commands/version.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoFpC;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0J9C"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/commands/version.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoFpC;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuJ9C"}
@@ -209,10 +209,8 @@ export function version(program) {
209
209
  });
210
210
  }
211
211
  });
212
- // Also support -v and --version flags at root level
213
- program.on('option:version', () => {
214
- console.log(`${APP_NAME} v${APP_VERSION}`);
215
- process.exit(0);
216
- });
212
+ // NOTE: `-v`/`--version` is handled by commander's own `.version(...)` in
213
+ // cli.ts (registered first, so it exits before any custom option:version
214
+ // listener would run) — a duplicate listener here was dead code.
217
215
  }
218
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sSUFBSSxNQUFNLFlBQVksQ0FBQztBQUM5QixPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFeEksTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQztBQWlCOUQ7OztHQUdHO0FBQ0gsU0FBUyxhQUFhO0lBQ3BCLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNsQyxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRCxNQUFNLGFBQWEsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsUUFBUSxD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IENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgZXhlY1N5bmMgfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHBpY28gZnJvbSAncGljb2NvbG9ycyc7XG5pbXBvcnQgeyBBUFBfTkFNRSwgQVBQX1ZFUlNJT04sIGdlbmVyYXRlRXhlY3V0aW9uSWQgfSBmcm9tICcuLi9jb25maWcvY2xpLmNvbnN0YW50cy5qcyc7XG5pbXBvcnQgeyBnZXRDZGtJbmZvIH0gZnJvbSAnLi4vdXRpbHMvY2RrLXV0aWxzLmpzJztcbmltcG9ydCB7IGdldENvbmZpZyB9IGZyb20gJy4uL3V0aWxzL2NvbmZpZy1sb2FkZXIuanMnO1xuaW1wb3J0IHsgRVJST1JfQ09ERVMsIGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vdXRpbHMvZXJyb3ItaGFuZGxlci5qcyc7XG5pbXBvcnQgeyBwcmludERpdmlkZXIsIHByaW50RXJyb3IsIHByaW50SW5mbywgcHJpbnRLZXlWYWx1ZSwgcHJpbnRTZWN0aW9uLCBwcmludFN1Y2Nlc3MsIHByaW50V2FybmluZyB9IGZyb20gJy4uL3V0aWxzL291dHB1dC11dGlscy5qcyc7XG5cbmNvbnN0IHsgYm9sZCwgY3lhbiwgZGltLCBncmVlbiwgbWFnZW50YSwgcmVkLCB5ZWxsb3cgfSA9IHBpY287XG5cbi8qKlxuICogUnVudGltZSBzeXN0ZW0gaW5mb3JtYXRpb24gY29sbGVjdGVkIGZvciB0aGUgYHZlcnNpb24gLS12ZXJib3NlYCBvdXRwdXQuXG4gKi9cbmludGVyZmFjZSBTeXN0ZW1JbmZvIHtcbiAgbm9kZWpzOiBzdHJpbmc7XG4gIG5wbTogc3RyaW5nIHwgbnVsbDtcbiAgcGxhdGZvcm06IHN0cmluZztcbiAgYXJjaGl0ZWN0dXJlOiBzdHJpbmc7XG4gIG1lbW9yeToge1xuICAgIHRvdGFsOiBzdHJpbmc7XG4gICAgYXZhaWxhYmxlSGVhcDogc3RyaW5nO1xuICB9O1xuICB1cHRpbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb2xsZWN0cyBydW50aW1lIHN5c3RlbSBpbmZvcm1hdGlvbiBpbmNsdWRpbmcgTm9kZS5qcy9ucG0gdmVyc2lvbnMsXG4gKiBwbGF0Zm9ybSwgYXJjaGl0ZWN0dXJlLCBoZWFwIG1lbW9yeSB1c2FnZSwgYW5kIHByb2Nlc3MgdXB0aW1lLlxuICovXG5mdW5jdGlvbiBnZXRTeXN0ZW1JbmZvKCk6IFN5c3RlbUluZm8ge1xuICBjb25zdCBtZW0gPSBwcm9jZXNzLm1lbW9yeVVzYWdlKCk7XG4gIGNvbnN0IHRvdGFsTWVtID0gKG1lbS5oZWFwVG90YWwgLyAxMDI0IC8gMTAyNCkudG9GaXhlZCgyKTtcbiAgY29uc3QgYXZhaWxhYmxlSGVhcCA9ICgobWVtLmhlYXBUb3RhbCAtIG1lbS5oZWFwVXNlZCkgLyAxMDI0IC8gMTAyNCkudG9GaXhlZCgyKTtcbiAgY29uc3QgdXB0aW1lID0gcHJvY2Vzcy51cHRpbWUoKTtcblxuICBsZXQgbnBtOiBzdHJpbmcgfCBudWxsO1xuICB0cnkge1xuICAgIG5wbSA9IGV4ZWNTeW5jKCducG0gLS12ZXJzaW9uJywgeyBlbmNvZGluZzogJ3V0Zi04Jywgc3RkaW86ICdwaXBlJyB9KS50cmltKCk7XG4gIH0gY2F0Y2gge1xuICAgIG5wbSA9IG51bGw7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG5vZGVqczogcHJvY2Vzcy52ZXJzaW9uLFxuICAgIG5wbSxcbiAgICBwbGF0Zm9ybTogcHJvY2Vzcy5wbGF0Zm9ybSxcbiAgICBhcmNoaXRlY3R1cmU6IHByb2Nlc3MuYXJjaCxcbiAgICBtZW1vcnk6IHsgdG90YWw6IGAke3RvdGFsTWVtfSBNQmAsIGF2YWlsYWJsZUhlYXA6IGAke2F2YWlsYWJsZUhlYXB9IE1CYCB9LFxuICAgIHVwdGltZTogYCR7TWF0aC5mbG9vcih1cHRpbWUgLyAzNjAwKX1oICR7TWF0aC5mbG9vcigodXB0aW1lICUgMzYwMCkgLyA2MCl9bSAke01hdGguZmxvb3IodXB0aW1lICUgNjApfXNgLFxuICB9O1xufVxuXG4vKipcbiAqIEF0dGVtcHRzIHRvIGxvYWQgdGhlIENMSSBjb25maWd1cmF0aW9uIGFuZCByZXBvcnRzIHdoZXRoZXIgaXQgaXMgdmFsaWQuXG4gKiBAcmV0dXJucyBBbiBvYmplY3Qgd2l0aCBgdmFsaWQ6IHRydWVgIG9uIHN1Y2Nlc3MsIG9yIGB2YWxpZDogZmFsc2VgIHdpdGggYW4gZXJyb3IgbWVzc2FnZS5cbiAqL1xuZnVuY3Rpb24gY2hlY2tDb25maWd1cmF0aW9uKCk6IHsgdmFsaWQ6IGJvb2xlYW47IGVycm9yPzogc3RyaW5nIH0ge1xuICB0cnkge1xuICAgIGdldENvbmZpZygpO1xuICAgIHJldHVybiB7IHZhbGlkOiB0cnVlIH07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgIGVycm9yOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvciksXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIENoZWNrcyB3aGljaCBrZXkgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZSBjdXJyZW50bHkgc2V0LlxuICogQHJldHVybnMgUHJlc2VuY2UgZmxhZ3MgZm9yIGBQTEFURk9STV9UT0tFTmAsIGBQTEFURk9STV9CQVNFX1VSTGAsIGFuZCBgQ0xJX0NPTkZJR19QQVRIYC5cbiAqL1xuZnVuY3Rpb24gZ2V0RW52aXJvbm1lbnRTdGF0dXMoKToge1xuICB0b2tlbjogYm9vbGVhbjtcbiAgdXJsOiBib29sZWFuO1xuICBjb25maWdQYXRoOiBib29sZWFuO1xufSB7XG4gIHJldHVybiB7XG4gICAgdG9rZW46ICEhcHJvY2Vzcy5lbnYuUExBVEZPUk1fVE9LRU4sXG4gICAgdXJsOiAhIXByb2Nlc3MuZW52LlBMQVRGT1JNX0JBU0VfVVJMLFxuICAgIGNvbmZpZ1BhdGg6ICEhcHJvY2Vzcy5lbnYuQ0xJX0NPTkZJR19QQVRILFxuICB9O1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgYHZlcnNpb25gIGNvbW1hbmQgd2l0aCB0aGUgQ0xJIHByb2dyYW0uXG4gKlxuICogRGlzcGxheXMgdGhlIENMSSBuYW1lL3ZlcnNpb24sIEFXUyBDREsgc3RhdHVzLCBhbmQgb3B0aW9uYWxseVxuICogZnVsbCBzeXN0ZW0gZGlhZ25vc3RpY3MgKGAtLXZlcmJvc2VgKSBvciBjb25maWd1cmF0aW9uIHZhbGlkYXRpb25cbiAqIChgLS1jaGVjay1jb25maWdgKS4gIFN1cHBvcnRzIGAtLWpzb25gIGZvciBtYWNoaW5lLXJlYWRhYmxlIG91dHB1dC5cbiAqXG4gKiBAcGFyYW0gcHJvZ3JhbSAtIFRoZSByb290IENvbW1hbmRlciBwcm9ncmFtIGluc3RhbmNlIHRvIGF0dGFjaCB0aGUgY29tbWFuZCB0by5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZlcnNpb24ocHJvZ3JhbTogQ29tbWFuZCk6IHZvaWQge1xuICBwcm9ncmFtXG4gICAgLmNvbW1hbmQoJ3ZlcnNpb24nKVxuICAgIC5kZXNjcmlwdGlvbignRGlzcGxheSBDTEkgdmVyc2lvbiBhbmQgZW52aXJvbm1lbnQgaW5mb3JtYXRpb24nKVxuICAgIC5vcHRpb24oJy0tdmVyYm9zZScsICdTaG93IGRldGFpbGVkIGVudmlyb25tZW50IGluZm9ybWF0aW9uJywgZmFsc2UpXG4gICAgLm9wdGlvbignLS1jaGVjay1jb25maWcnLCAnVmVyaWZ5IGNvbmZpZ3VyYXRpb24gc3RhdHVzJywgZmFsc2UpXG4gICAgLm9wdGlvbignLS1qc29uJywgJ091dHB1dCBpbiBKU09OIGZvcm1hdCcsIGZhbHNlKVxuICAgIC5hY3Rpb24oKG9wdGlvbnMpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGV4ZWN1dGlvbklkID0gZ2VuZXJhdGVFeGVjdXRpb25JZCgpO1xuICAgICAgICBjb25zdCBjZGtJbmZvID0gZ2V0Q2RrSW5mbygpO1xuXG4gICAgICAgIC8vIEpTT04gb3V0cHV0XG4gICAgICAgIGlmIChvcHRpb25zLmpzb24pIHtcbiAgICAgICAgICBjb25zdCBzeXN0ZW1JbmZvID0gZ2V0U3lzdGVtSW5mbygpO1xuICAgICAgICAgIGNvbnN0IGNvbmZpZ1N0YXR1cyA9IG9wdGlvbnMuY2hlY2tDb25maWcgPyBjaGVja0NvbmZpZ3VyYXRpb24oKSA6IHsgdmFsaWQ6IHRydWUgfTtcbiAgICAgICAgICBjb25zdCBlbnZTdGF0dXMgPSBnZXRFbnZpcm9ubWVudFN0YXR1cygpO1xuXG4gICAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgY2xpOiB7IG5hbWU6IEFQUF9OQU1FLCB2ZXJzaW9uOiBBUFBfVkVSU0lPTiB9LFxuICAgICAgICAgICAgc3lzdGVtOiBzeXN0ZW1JbmZvLFxuICAgICAgICAgICAgY2RrOiB7IGF2YWlsYWJsZTogY2RrSW5mby5hdmFpbGFibGUsIHZlcnNpb246IGNka0luZm8udmVyc2lvbiB9LFxuICAgICAgICAgICAgY29uZmlndXJhdGlvbjogeyB2YWxpZDogY29uZmlnU3RhdHVzLnZhbGlkLCBlcnJvcjogY29uZmlnU3RhdHVzLmVycm9yIH0sXG4gICAgICAgICAgICBlbnZpcm9ubWVudDogZW52U3RhdHVzLFxuICAgICAgICAgICAgZXhlY3V0aW9uSWQsXG4gICAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgICB9LCBudWxsLCAyKSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU3RhbmRhcmQgb3V0cHV0XG4gICAgICAgIHByaW50U2VjdGlvbignVmVyc2lvbiBJbmZvcm1hdGlvbicpO1xuICAgICAgICBjb25zb2xlLmxvZyhgJHttYWdlbnRhKGBbRVhFLSR7ZXhlY3V0aW9uSWR9XWApfSAke2N5YW4oYm9sZCgnQ0xJIFZlcnNpb24gQ2hlY2snKSl9YCk7XG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcblxuICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAnQ0xJIE5hbWUnOiBib2xkKEFQUF9OQU1FKSxcbiAgICAgICAgICAnQ0xJIFZlcnNpb24nOiBncmVlbihib2xkKEFQUF9WRVJTSU9OKSksXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHByaW50RGl2aWRlcigpO1xuXG4gICAgICAgIC8vIFZlcmJvc2U6IHN5c3RlbSBlbnZpcm9ubWVudFxuICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgcHJpbnRTZWN0aW9uKCdTeXN0ZW0gRW52aXJvbm1lbnQnKTtcbiAgICAgICAgICBjb25zdCBzeXN0ZW1JbmZvID0gZ2V0U3lzdGVtSW5mbygpO1xuICAgICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICAgJ05vZGUuanMnOiBzeXN0ZW1JbmZvLm5vZGVqcyxcbiAgICAgICAgICAgICducG0nOiBzeXN0ZW1JbmZvLm5wbSB8fCB5ZWxsb3coJyhub3QgYXZhaWxhYmxlKScpLFxuICAgICAgICAgICAgJ1BsYXRmb3JtJzogc3lzdGVtSW5mby5wbGF0Zm9ybSxcbiAgICAgICAgICAgICdBcmNoaXRlY3R1cmUnOiBzeXN0ZW1JbmZvLmFyY2hpdGVjdHVyZSxcbiAgICAgICAgICAgICdNZW1vcnkgKEhlYXApJzogYCR7c3lzdGVtSW5mby5tZW1vcnkudG90YWx9IHRvdGFsLCAke3N5c3RlbUluZm8ubWVtb3J5LmF2YWlsYWJsZUhlYXB9IGF2YWlsYWJsZWAsXG4gICAgICAgICAgICAnUHJvY2VzcyBVcHRpbWUnOiBzeXN0ZW1JbmZvLnVwdGltZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBwcmludERpdmlkZXIoKTtcbiAgICAgICAgICBwcmludFNlY3Rpb24oJ0FXUyBDREsnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENESyBpbmZvcm1hdGlvblxuICAgICAgICBpZiAoY2RrSW5mby5hdmFpbGFibGUgJiYgY2RrSW5mby52ZXJzaW9uKSB7XG4gICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkgcHJpbnRTdWNjZXNzKCdBV1MgQ0RLIGlzIGluc3RhbGxlZCcpO1xuICAgICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICAgJ0NESyBWZXJzaW9uJzogZ3JlZW4oY2RrSW5mby52ZXJzaW9uKSxcbiAgICAgICAgICAgICdTdGF0dXMnOiBncmVlbign4pyTIEF2YWlsYWJsZScpLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgIHByaW50V2FybmluZygnQVdTIENESyBpcyBub3QgaW5zdGFsbGVkJyk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhkaW0oJyAgSW5zdGFsbCBDREsgd2l0aDogbnBtIGluc3RhbGwgLWcgYXdzLWNkaycpKTtcbiAgICAgICAgICAgIGlmIChjZGtJbmZvLmVycm9yKSBjb25zb2xlLmxvZyhkaW0oYCAgRXJyb3I6ICR7Y2RrSW5mby5lcnJvcn1gKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICAgJ0FXUyBDREsnOiByZWQoJ+KclyBOb3QgaW5zdGFsbGVkJyksXG4gICAgICAgICAgICAnU3RhdHVzJzogcmVkKCfinJcgTm90IEF2YWlsYWJsZScpLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhkaW0oJ1xcbiAgUnVuIHdpdGggLS12ZXJib3NlIGZvciBkZXRhaWxlZCBlbnZpcm9ubWVudCBpbmZvcm1hdGlvbicpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENvbmZpZ3VyYXRpb24gY2hlY2tcbiAgICAgICAgaWYgKG9wdGlvbnMuY2hlY2tDb25maWcpIHtcbiAgICAgICAgICBwcmludERpdmlkZXIoKTtcbiAgICAgICAgICBwcmludFNlY3Rpb24oJ0NvbmZpZ3VyYXRpb24gU3RhdHVzJyk7XG5cbiAgICAgICAgICBjb25zdCBjb25maWdTdGF0dXMgPSBjaGVja0NvbmZpZ3VyYXRpb24oKTtcbiAgICAgICAgICBjb25zdCBlbnZTdGF0dXMgPSBnZXRFbnZpcm9ubWVudFN0YXR1cygpO1xuXG4gICAgICAgICAgaWYgKGNvbmZpZ1N0YXR1cy52YWxpZCkge1xuICAgICAgICAgICAgcHJpbnRTdWNjZXNzKCdDb25maWd1cmF0aW9uIGlzIHZhbGlkJyk7XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IGdldENvbmZpZygpO1xuICAgICAgICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAgICAgICAnQVBJIEJhc2UgVVJMJzogY29uZmlnLmFwaS5iYXNlVXJsLFxuICAgICAgICAgICAgICAgICdTU0wgVmVyaWZpY2F0aW9uJzogY29uZmlnLmFwaS5yZWplY3RVbmF1dGhvcml6ZWQgPyBncmVlbignRW5hYmxlZCcpIDogeWVsbG93KCdEaXNhYmxlZCcpLFxuICAgICAgICAgICAgICAgICdUaW1lb3V0JzogYCR7Y29uZmlnLmFwaS50aW1lb3V0fW1zYCxcbiAgICAgICAgICAgICAgICAnQXV0aGVudGljYXRlZCc6IGNvbmZpZy5hdXRoLnRva2VuID8gZ3JlZW4oJ1llcycpIDogcmVkKCdObycpLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgIHByaW50V2FybmluZygnQ291bGQgbm90IGxvYWQgZnVsbCBjb25maWd1cmF0aW9uJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHByaW50RXJyb3IoJ0NvbmZpZ3VyYXRpb24gaXMgaW52YWxpZCcpO1xuICAgICAgICAgICAgaWYgKGNvbmZpZ1N0YXR1cy5lcnJvcikge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhyZWQoYCAgRXJyb3I6ICR7Y29uZmlnU3RhdHVzLmVycm9yfWApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgICAgcHJpbnRJbmZvKCdFbnZpcm9ubWVudCBWYXJpYWJsZXMnKTtcbiAgICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAgIFBMQVRGT1JNX1RPS0VOOiBlbnZTdGF0dXMudG9rZW4gPyBncmVlbign4pyTIFNldCcpIDogcmVkKCfinJcgTm90IHNldCcpLFxuICAgICAgICAgICAgUExBVEZPUk1fQkFTRV9VUkw6IGVudlN0YXR1cy51cmwgPyBncmVlbign4pyTIFNldCcpIDogZGltKCcobm90IHNldCAtIHVzaW5nIGRlZmF1bHQpJyksXG4gICAgICAgICAgICBDTElfQ09ORklHX1BBVEg6IGVudlN0YXR1cy5jb25maWdQYXRoID8gZ3JlZW4oJ+KckyBTZXQnKSA6IGRpbSgnKG5vdCBzZXQgLSB1c2luZyBkZWZhdWx0KScpLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYgKCFlbnZTdGF0dXMudG9rZW4pIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgICAgIHByaW50V2FybmluZygnUExBVEZPUk1fVE9LRU4gaXMgcmVxdWlyZWQgZm9yIEFQSSBvcGVyYXRpb25zJyk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhkaW0oJyAgU2V0IGl0IHdpdGg6IGV4cG9ydCBQTEFURk9STV9UT0tFTj1cInlvdXItdG9rZW4taGVyZVwiJykpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhkaW0oJ1xcbiAg8J+SoSBUaXA6IFJ1biB3aXRoIC0tY2hlY2stY29uZmlnIHRvIHZlcmlmeSBjb25maWd1cmF0aW9uJykpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRm9vdGVyXG4gICAgICAgIHByaW50RGl2aWRlcigpO1xuICAgICAgICBjb25zb2xlLmxvZyhkaW0oYCAgRXhlY3V0aW9uIElEOiAke2V4ZWN1dGlvbklkfWApKTtcbiAgICAgICAgY29uc29sZS5sb2coZGltKGAgIFRpbWVzdGFtcDogJHtuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCl9YCkpO1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG5cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGhhbmRsZUVycm9yKGVycm9yLCBFUlJPUl9DT0RFUy5HRU5FUkFMLCB7XG4gICAgICAgICAgZGVidWc6IHByb2dyYW0ub3B0cygpLmRlYnVnLFxuICAgICAgICAgIGV4aXQ6IHRydWUsXG4gICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgY29tbWFuZDogJ3ZlcnNpb24nLFxuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICB2ZXJib3NlOiBvcHRpb25zLnZlcmJvc2UsXG4gICAgICAgICAgICAgIGNoZWNrQ29uZmlnOiBvcHRpb25zLmNoZWNrQ29uZmlnLFxuICAgICAgICAgICAgICBqc29uOiBvcHRpb25zLmpzb24sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gIC8vIEFsc28gc3VwcG9ydCAtdiBhbmQgLS12ZXJzaW9uIGZsYWdzIGF0IHJvb3QgbGV2ZWxcbiAgcHJvZ3JhbS5vbignb3B0aW9uOnZlcnNpb24nLCAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7QVBQX05BTUV9IHYke0FQUF9WRVJTSU9OfWApO1xuICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgfSk7XG59XG4iXX0=
216
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sSUFBSSxNQUFNLFlBQVksQ0FBQztBQUM5QixPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFeEksTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQztBQWlCOUQ7OztHQUdHO0FBQ0gsU0FBUyxhQUFhO0lBQ3BCLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNsQyxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRCxNQUFNLGFBQWEsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsUUFBUSxD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TixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyw2REFBNkQsQ0FBQyxDQUFDLENBQUM7WUFDbEYsQ0FBQztZQUVELFNBQVM7WUFDVCxZQUFZLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLG1CQUFtQixXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbkQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDN0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVsQixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLFdBQVcsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLE9BQU8sRUFBRTtnQkFDdEMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLO2dCQUMzQixJQUFJLEVBQUUsSUFBSTtnQkFDVixPQUFPLEVBQUU7b0JBQ1AsT0FBTyxFQUFFLFNBQVM7b0JBQ2xCLE9BQU8sRUFBRTt3QkFDUCxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87d0JBQ3hCLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVzt3QkFDaEMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO3FCQUNuQjtpQkFDRjthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLDBFQUEwRTtJQUMxRSx5RUFBeUU7SUFDekUsaUVBQWlFO0FBQ25FLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgZXhlY1N5bmMgfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHBpY28gZnJvbSAncGljb2NvbG9ycyc7XG5pbXBvcnQgeyBBUFBfTkFNRSwgQVBQX1ZFUlNJT04sIGdlbmVyYXRlRXhlY3V0aW9uSWQgfSBmcm9tICcuLi9jb25maWcvY2xpLmNvbnN0YW50cy5qcyc7XG5pbXBvcnQgeyBnZXRDZGtJbmZvIH0gZnJvbSAnLi4vdXRpbHMvY2RrLXV0aWxzLmpzJztcbmltcG9ydCB7IGdldENvbmZpZyB9IGZyb20gJy4uL3V0aWxzL2NvbmZpZy1sb2FkZXIuanMnO1xuaW1wb3J0IHsgRVJST1JfQ09ERVMsIGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vdXRpbHMvZXJyb3ItaGFuZGxlci5qcyc7XG5pbXBvcnQgeyBwcmludERpdmlkZXIsIHByaW50RXJyb3IsIHByaW50SW5mbywgcHJpbnRLZXlWYWx1ZSwgcHJpbnRTZWN0aW9uLCBwcmludFN1Y2Nlc3MsIHByaW50V2FybmluZyB9IGZyb20gJy4uL3V0aWxzL291dHB1dC11dGlscy5qcyc7XG5cbmNvbnN0IHsgYm9sZCwgY3lhbiwgZGltLCBncmVlbiwgbWFnZW50YSwgcmVkLCB5ZWxsb3cgfSA9IHBpY287XG5cbi8qKlxuICogUnVudGltZSBzeXN0ZW0gaW5mb3JtYXRpb24gY29sbGVjdGVkIGZvciB0aGUgYHZlcnNpb24gLS12ZXJib3NlYCBvdXRwdXQuXG4gKi9cbmludGVyZmFjZSBTeXN0ZW1JbmZvIHtcbiAgbm9kZWpzOiBzdHJpbmc7XG4gIG5wbTogc3RyaW5nIHwgbnVsbDtcbiAgcGxhdGZvcm06IHN0cmluZztcbiAgYXJjaGl0ZWN0dXJlOiBzdHJpbmc7XG4gIG1lbW9yeToge1xuICAgIHRvdGFsOiBzdHJpbmc7XG4gICAgYXZhaWxhYmxlSGVhcDogc3RyaW5nO1xuICB9O1xuICB1cHRpbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb2xsZWN0cyBydW50aW1lIHN5c3RlbSBpbmZvcm1hdGlvbiBpbmNsdWRpbmcgTm9kZS5qcy9ucG0gdmVyc2lvbnMsXG4gKiBwbGF0Zm9ybSwgYXJjaGl0ZWN0dXJlLCBoZWFwIG1lbW9yeSB1c2FnZSwgYW5kIHByb2Nlc3MgdXB0aW1lLlxuICovXG5mdW5jdGlvbiBnZXRTeXN0ZW1JbmZvKCk6IFN5c3RlbUluZm8ge1xuICBjb25zdCBtZW0gPSBwcm9jZXNzLm1lbW9yeVVzYWdlKCk7XG4gIGNvbnN0IHRvdGFsTWVtID0gKG1lbS5oZWFwVG90YWwgLyAxMDI0IC8gMTAyNCkudG9GaXhlZCgyKTtcbiAgY29uc3QgYXZhaWxhYmxlSGVhcCA9ICgobWVtLmhlYXBUb3RhbCAtIG1lbS5oZWFwVXNlZCkgLyAxMDI0IC8gMTAyNCkudG9GaXhlZCgyKTtcbiAgY29uc3QgdXB0aW1lID0gcHJvY2Vzcy51cHRpbWUoKTtcblxuICBsZXQgbnBtOiBzdHJpbmcgfCBudWxsO1xuICB0cnkge1xuICAgIG5wbSA9IGV4ZWNTeW5jKCducG0gLS12ZXJzaW9uJywgeyBlbmNvZGluZzogJ3V0Zi04Jywgc3RkaW86ICdwaXBlJyB9KS50cmltKCk7XG4gIH0gY2F0Y2gge1xuICAgIG5wbSA9IG51bGw7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG5vZGVqczogcHJvY2Vzcy52ZXJzaW9uLFxuICAgIG5wbSxcbiAgICBwbGF0Zm9ybTogcHJvY2Vzcy5wbGF0Zm9ybSxcbiAgICBhcmNoaXRlY3R1cmU6IHByb2Nlc3MuYXJjaCxcbiAgICBtZW1vcnk6IHsgdG90YWw6IGAke3RvdGFsTWVtfSBNQmAsIGF2YWlsYWJsZUhlYXA6IGAke2F2YWlsYWJsZUhlYXB9IE1CYCB9LFxuICAgIHVwdGltZTogYCR7TWF0aC5mbG9vcih1cHRpbWUgLyAzNjAwKX1oICR7TWF0aC5mbG9vcigodXB0aW1lICUgMzYwMCkgLyA2MCl9bSAke01hdGguZmxvb3IodXB0aW1lICUgNjApfXNgLFxuICB9O1xufVxuXG4vKipcbiAqIEF0dGVtcHRzIHRvIGxvYWQgdGhlIENMSSBjb25maWd1cmF0aW9uIGFuZCByZXBvcnRzIHdoZXRoZXIgaXQgaXMgdmFsaWQuXG4gKiBAcmV0dXJucyBBbiBvYmplY3Qgd2l0aCBgdmFsaWQ6IHRydWVgIG9uIHN1Y2Nlc3MsIG9yIGB2YWxpZDogZmFsc2VgIHdpdGggYW4gZXJyb3IgbWVzc2FnZS5cbiAqL1xuZnVuY3Rpb24gY2hlY2tDb25maWd1cmF0aW9uKCk6IHsgdmFsaWQ6IGJvb2xlYW47IGVycm9yPzogc3RyaW5nIH0ge1xuICB0cnkge1xuICAgIGdldENvbmZpZygpO1xuICAgIHJldHVybiB7IHZhbGlkOiB0cnVlIH07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgIGVycm9yOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvciksXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIENoZWNrcyB3aGljaCBrZXkgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZSBjdXJyZW50bHkgc2V0LlxuICogQHJldHVybnMgUHJlc2VuY2UgZmxhZ3MgZm9yIGBQTEFURk9STV9UT0tFTmAsIGBQTEFURk9STV9CQVNFX1VSTGAsIGFuZCBgQ0xJX0NPTkZJR19QQVRIYC5cbiAqL1xuZnVuY3Rpb24gZ2V0RW52aXJvbm1lbnRTdGF0dXMoKToge1xuICB0b2tlbjogYm9vbGVhbjtcbiAgdXJsOiBib29sZWFuO1xuICBjb25maWdQYXRoOiBib29sZWFuO1xufSB7XG4gIHJldHVybiB7XG4gICAgdG9rZW46ICEhcHJvY2Vzcy5lbnYuUExBVEZPUk1fVE9LRU4sXG4gICAgdXJsOiAhIXByb2Nlc3MuZW52LlBMQVRGT1JNX0JBU0VfVVJMLFxuICAgIGNvbmZpZ1BhdGg6ICEhcHJvY2Vzcy5lbnYuQ0xJX0NPTkZJR19QQVRILFxuICB9O1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgYHZlcnNpb25gIGNvbW1hbmQgd2l0aCB0aGUgQ0xJIHByb2dyYW0uXG4gKlxuICogRGlzcGxheXMgdGhlIENMSSBuYW1lL3ZlcnNpb24sIEFXUyBDREsgc3RhdHVzLCBhbmQgb3B0aW9uYWxseVxuICogZnVsbCBzeXN0ZW0gZGlhZ25vc3RpY3MgKGAtLXZlcmJvc2VgKSBvciBjb25maWd1cmF0aW9uIHZhbGlkYXRpb25cbiAqIChgLS1jaGVjay1jb25maWdgKS4gIFN1cHBvcnRzIGAtLWpzb25gIGZvciBtYWNoaW5lLXJlYWRhYmxlIG91dHB1dC5cbiAqXG4gKiBAcGFyYW0gcHJvZ3JhbSAtIFRoZSByb290IENvbW1hbmRlciBwcm9ncmFtIGluc3RhbmNlIHRvIGF0dGFjaCB0aGUgY29tbWFuZCB0by5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZlcnNpb24ocHJvZ3JhbTogQ29tbWFuZCk6IHZvaWQge1xuICBwcm9ncmFtXG4gICAgLmNvbW1hbmQoJ3ZlcnNpb24nKVxuICAgIC5kZXNjcmlwdGlvbignRGlzcGxheSBDTEkgdmVyc2lvbiBhbmQgZW52aXJvbm1lbnQgaW5mb3JtYXRpb24nKVxuICAgIC5vcHRpb24oJy0tdmVyYm9zZScsICdTaG93IGRldGFpbGVkIGVudmlyb25tZW50IGluZm9ybWF0aW9uJywgZmFsc2UpXG4gICAgLm9wdGlvbignLS1jaGVjay1jb25maWcnLCAnVmVyaWZ5IGNvbmZpZ3VyYXRpb24gc3RhdHVzJywgZmFsc2UpXG4gICAgLm9wdGlvbignLS1qc29uJywgJ091dHB1dCBpbiBKU09OIGZvcm1hdCcsIGZhbHNlKVxuICAgIC5hY3Rpb24oKG9wdGlvbnMpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGV4ZWN1dGlvbklkID0gZ2VuZXJhdGVFeGVjdXRpb25JZCgpO1xuICAgICAgICBjb25zdCBjZGtJbmZvID0gZ2V0Q2RrSW5mbygpO1xuXG4gICAgICAgIC8vIEpTT04gb3V0cHV0XG4gICAgICAgIGlmIChvcHRpb25zLmpzb24pIHtcbiAgICAgICAgICBjb25zdCBzeXN0ZW1JbmZvID0gZ2V0U3lzdGVtSW5mbygpO1xuICAgICAgICAgIGNvbnN0IGNvbmZpZ1N0YXR1cyA9IG9wdGlvbnMuY2hlY2tDb25maWcgPyBjaGVja0NvbmZpZ3VyYXRpb24oKSA6IHsgdmFsaWQ6IHRydWUgfTtcbiAgICAgICAgICBjb25zdCBlbnZTdGF0dXMgPSBnZXRFbnZpcm9ubWVudFN0YXR1cygpO1xuXG4gICAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgY2xpOiB7IG5hbWU6IEFQUF9OQU1FLCB2ZXJzaW9uOiBBUFBfVkVSU0lPTiB9LFxuICAgICAgICAgICAgc3lzdGVtOiBzeXN0ZW1JbmZvLFxuICAgICAgICAgICAgY2RrOiB7IGF2YWlsYWJsZTogY2RrSW5mby5hdmFpbGFibGUsIHZlcnNpb246IGNka0luZm8udmVyc2lvbiB9LFxuICAgICAgICAgICAgY29uZmlndXJhdGlvbjogeyB2YWxpZDogY29uZmlnU3RhdHVzLnZhbGlkLCBlcnJvcjogY29uZmlnU3RhdHVzLmVycm9yIH0sXG4gICAgICAgICAgICBlbnZpcm9ubWVudDogZW52U3RhdHVzLFxuICAgICAgICAgICAgZXhlY3V0aW9uSWQsXG4gICAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgICB9LCBudWxsLCAyKSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU3RhbmRhcmQgb3V0cHV0XG4gICAgICAgIHByaW50U2VjdGlvbignVmVyc2lvbiBJbmZvcm1hdGlvbicpO1xuICAgICAgICBjb25zb2xlLmxvZyhgJHttYWdlbnRhKGBbRVhFLSR7ZXhlY3V0aW9uSWR9XWApfSAke2N5YW4oYm9sZCgnQ0xJIFZlcnNpb24gQ2hlY2snKSl9YCk7XG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcblxuICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAnQ0xJIE5hbWUnOiBib2xkKEFQUF9OQU1FKSxcbiAgICAgICAgICAnQ0xJIFZlcnNpb24nOiBncmVlbihib2xkKEFQUF9WRVJTSU9OKSksXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHByaW50RGl2aWRlcigpO1xuXG4gICAgICAgIC8vIFZlcmJvc2U6IHN5c3RlbSBlbnZpcm9ubWVudFxuICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgcHJpbnRTZWN0aW9uKCdTeXN0ZW0gRW52aXJvbm1lbnQnKTtcbiAgICAgICAgICBjb25zdCBzeXN0ZW1JbmZvID0gZ2V0U3lzdGVtSW5mbygpO1xuICAgICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICAgJ05vZGUuanMnOiBzeXN0ZW1JbmZvLm5vZGVqcyxcbiAgICAgICAgICAgICducG0nOiBzeXN0ZW1JbmZvLm5wbSB8fCB5ZWxsb3coJyhub3QgYXZhaWxhYmxlKScpLFxuICAgICAgICAgICAgJ1BsYXRmb3JtJzogc3lzdGVtSW5mby5wbGF0Zm9ybSxcbiAgICAgICAgICAgICdBcmNoaXRlY3R1cmUnOiBzeXN0ZW1JbmZvLmFyY2hpdGVjdHVyZSxcbiAgICAgICAgICAgICdNZW1vcnkgKEhlYXApJzogYCR7c3lzdGVtSW5mby5tZW1vcnkudG90YWx9IHRvdGFsLCAke3N5c3RlbUluZm8ubWVtb3J5LmF2YWlsYWJsZUhlYXB9IGF2YWlsYWJsZWAsXG4gICAgICAgICAgICAnUHJvY2VzcyBVcHRpbWUnOiBzeXN0ZW1JbmZvLnVwdGltZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBwcmludERpdmlkZXIoKTtcbiAgICAgICAgICBwcmludFNlY3Rpb24oJ0FXUyBDREsnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENESyBpbmZvcm1hdGlvblxuICAgICAgICBpZiAoY2RrSW5mby5hdmFpbGFibGUgJiYgY2RrSW5mby52ZXJzaW9uKSB7XG4gICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkgcHJpbnRTdWNjZXNzKCdBV1MgQ0RLIGlzIGluc3RhbGxlZCcpO1xuICAgICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICAgJ0NESyBWZXJzaW9uJzogZ3JlZW4oY2RrSW5mby52ZXJzaW9uKSxcbiAgICAgICAgICAgICdTdGF0dXMnOiBncmVlbign4pyTIEF2YWlsYWJsZScpLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgIHByaW50V2FybmluZygnQVdTIENESyBpcyBub3QgaW5zdGFsbGVkJyk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhkaW0oJyAgSW5zdGFsbCBDREsgd2l0aDogbnBtIGluc3RhbGwgLWcgYXdzLWNkaycpKTtcbiAgICAgICAgICAgIGlmIChjZGtJbmZvLmVycm9yKSBjb25zb2xlLmxvZyhkaW0oYCAgRXJyb3I6ICR7Y2RrSW5mby5lcnJvcn1gKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICAgJ0FXUyBDREsnOiByZWQoJ+KclyBOb3QgaW5zdGFsbGVkJyksXG4gICAgICAgICAgICAnU3RhdHVzJzogcmVkKCfinJcgTm90IEF2YWlsYWJsZScpLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhkaW0oJ1xcbiAgUnVuIHdpdGggLS12ZXJib3NlIGZvciBkZXRhaWxlZCBlbnZpcm9ubWVudCBpbmZvcm1hdGlvbicpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENvbmZpZ3VyYXRpb24gY2hlY2tcbiAgICAgICAgaWYgKG9wdGlvbnMuY2hlY2tDb25maWcpIHtcbiAgICAgICAgICBwcmludERpdmlkZXIoKTtcbiAgICAgICAgICBwcmludFNlY3Rpb24oJ0NvbmZpZ3VyYXRpb24gU3RhdHVzJyk7XG5cbiAgICAgICAgICBjb25zdCBjb25maWdTdGF0dXMgPSBjaGVja0NvbmZpZ3VyYXRpb24oKTtcbiAgICAgICAgICBjb25zdCBlbnZTdGF0dXMgPSBnZXRFbnZpcm9ubWVudFN0YXR1cygpO1xuXG4gICAgICAgICAgaWYgKGNvbmZpZ1N0YXR1cy52YWxpZCkge1xuICAgICAgICAgICAgcHJpbnRTdWNjZXNzKCdDb25maWd1cmF0aW9uIGlzIHZhbGlkJyk7XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IGdldENvbmZpZygpO1xuICAgICAgICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAgICAgICAnQVBJIEJhc2UgVVJMJzogY29uZmlnLmFwaS5iYXNlVXJsLFxuICAgICAgICAgICAgICAgICdTU0wgVmVyaWZpY2F0aW9uJzogY29uZmlnLmFwaS5yZWplY3RVbmF1dGhvcml6ZWQgPyBncmVlbignRW5hYmxlZCcpIDogeWVsbG93KCdEaXNhYmxlZCcpLFxuICAgICAgICAgICAgICAgICdUaW1lb3V0JzogYCR7Y29uZmlnLmFwaS50aW1lb3V0fW1zYCxcbiAgICAgICAgICAgICAgICAnQXV0aGVudGljYXRlZCc6IGNvbmZpZy5hdXRoLnRva2VuID8gZ3JlZW4oJ1llcycpIDogcmVkKCdObycpLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgIHByaW50V2FybmluZygnQ291bGQgbm90IGxvYWQgZnVsbCBjb25maWd1cmF0aW9uJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHByaW50RXJyb3IoJ0NvbmZpZ3VyYXRpb24gaXMgaW52YWxpZCcpO1xuICAgICAgICAgICAgaWYgKGNvbmZpZ1N0YXR1cy5lcnJvcikge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhyZWQoYCAgRXJyb3I6ICR7Y29uZmlnU3RhdHVzLmVycm9yfWApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgICAgcHJpbnRJbmZvKCdFbnZpcm9ubWVudCBWYXJpYWJsZXMnKTtcbiAgICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAgIFBMQVRGT1JNX1RPS0VOOiBlbnZTdGF0dXMudG9rZW4gPyBncmVlbign4pyTIFNldCcpIDogcmVkKCfinJcgTm90IHNldCcpLFxuICAgICAgICAgICAgUExBVEZPUk1fQkFTRV9VUkw6IGVudlN0YXR1cy51cmwgPyBncmVlbign4pyTIFNldCcpIDogZGltKCcobm90IHNldCAtIHVzaW5nIGRlZmF1bHQpJyksXG4gICAgICAgICAgICBDTElfQ09ORklHX1BBVEg6IGVudlN0YXR1cy5jb25maWdQYXRoID8gZ3JlZW4oJ+KckyBTZXQnKSA6IGRpbSgnKG5vdCBzZXQgLSB1c2luZyBkZWZhdWx0KScpLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYgKCFlbnZTdGF0dXMudG9rZW4pIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgICAgIHByaW50V2FybmluZygnUExBVEZPUk1fVE9LRU4gaXMgcmVxdWlyZWQgZm9yIEFQSSBvcGVyYXRpb25zJyk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhkaW0oJyAgU2V0IGl0IHdpdGg6IGV4cG9ydCBQTEFURk9STV9UT0tFTj1cInlvdXItdG9rZW4taGVyZVwiJykpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhkaW0oJ1xcbiAg8J+SoSBUaXA6IFJ1biB3aXRoIC0tY2hlY2stY29uZmlnIHRvIHZlcmlmeSBjb25maWd1cmF0aW9uJykpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRm9vdGVyXG4gICAgICAgIHByaW50RGl2aWRlcigpO1xuICAgICAgICBjb25zb2xlLmxvZyhkaW0oYCAgRXhlY3V0aW9uIElEOiAke2V4ZWN1dGlvbklkfWApKTtcbiAgICAgICAgY29uc29sZS5sb2coZGltKGAgIFRpbWVzdGFtcDogJHtuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCl9YCkpO1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG5cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGhhbmRsZUVycm9yKGVycm9yLCBFUlJPUl9DT0RFUy5HRU5FUkFMLCB7XG4gICAgICAgICAgZGVidWc6IHByb2dyYW0ub3B0cygpLmRlYnVnLFxuICAgICAgICAgIGV4aXQ6IHRydWUsXG4gICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgY29tbWFuZDogJ3ZlcnNpb24nLFxuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICB2ZXJib3NlOiBvcHRpb25zLnZlcmJvc2UsXG4gICAgICAgICAgICAgIGNoZWNrQ29uZmlnOiBvcHRpb25zLmNoZWNrQ29uZmlnLFxuICAgICAgICAgICAgICBqc29uOiBvcHRpb25zLmpzb24sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAvLyBOT1RFOiBgLXZgL2AtLXZlcnNpb25gIGlzIGhhbmRsZWQgYnkgY29tbWFuZGVyJ3Mgb3duIGAudmVyc2lvbiguLi4pYCBpblxuICAvLyBjbGkudHMgKHJlZ2lzdGVyZWQgZmlyc3QsIHNvIGl0IGV4aXRzIGJlZm9yZSBhbnkgY3VzdG9tIG9wdGlvbjp2ZXJzaW9uXG4gIC8vIGxpc3RlbmVyIHdvdWxkIHJ1bikg4oCUIGEgZHVwbGljYXRlIGxpc3RlbmVyIGhlcmUgd2FzIGRlYWQgY29kZS5cbn1cbiJdfQ==
@@ -0,0 +1,68 @@
1
+ import https from 'https';
2
+ /**
3
+ * Login / refresh / switch-org response — every platform auth endpoint returns
4
+ * the session tokens under this envelope.
5
+ */
6
+ export interface AuthResponse {
7
+ success: boolean;
8
+ data: {
9
+ accessToken: string;
10
+ refreshToken: string;
11
+ };
12
+ }
13
+ /**
14
+ * Guard the credential-transmitting commands (`login`, `create-pat`) against
15
+ * disabling TLS verification in production. These POST plaintext passwords/JWTs,
16
+ * so a MITM on a `prod + --no-verify-ssl` run would harvest them.
17
+ *
18
+ * Unlike {@link assertSslDisableAllowed} (which throws — for paths already inside
19
+ * a try/catch), this prints and hard-exits, matching the pre-flight checks these
20
+ * commands run before their try block. In non-production it is a no-op, so
21
+ * `--no-verify-ssl` still works against self-signed dev platforms.
22
+ */
23
+ export declare function assertCredentialTlsAllowed(verifySsl: boolean | undefined): void;
24
+ /**
25
+ * Resolve credentials from flags, falling back to the
26
+ * PLATFORM_IDENTIFIER / PLATFORM_PASSWORD env vars (so the password need not
27
+ * appear in shell history / `ps`).
28
+ */
29
+ export declare function resolveCredentials(options: {
30
+ identifier?: string;
31
+ password?: string;
32
+ }): {
33
+ identifier?: string;
34
+ password?: string;
35
+ };
36
+ /**
37
+ * Build the https agent used by the credential commands. `--verify-ssl`
38
+ * defaults to on; only an explicit `--no-verify-ssl` relaxes it (and only
39
+ * outside production, enforced by {@link assertCredentialTlsAllowed}).
40
+ */
41
+ export declare function credentialHttpsAgent(verifySsl: boolean | undefined): https.Agent;
42
+ /**
43
+ * POST /api/auth/login and return the access token (or `undefined` if the
44
+ * response carried none). Rate-limit accounting (record success/failure) and
45
+ * the no-token exit are intentionally left to the caller so each command keeps
46
+ * its exact lockout semantics.
47
+ */
48
+ export declare function postLogin(params: {
49
+ url: string;
50
+ identifier: string;
51
+ password: string;
52
+ httpsAgent: https.Agent;
53
+ timeout: number;
54
+ }): Promise<string | undefined>;
55
+ /**
56
+ * POST /api/auth/switch-org with the current access token and return the new,
57
+ * org-scoped access token. Prints a success line (unless `quiet`) and hard-exits
58
+ * on a missing token — both credential commands treat a failed switch the same.
59
+ */
60
+ export declare function switchOrganization(params: {
61
+ url: string;
62
+ orgId: string;
63
+ accessToken: string;
64
+ httpsAgent: https.Agent;
65
+ timeout: number;
66
+ quiet: boolean;
67
+ }): Promise<string>;
68
+ //# sourceMappingURL=auth-utils.d.ts.map