bways-report 0.2.0 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/README.md +64 -0
  2. package/esm2022/lib/core/config/bways-report-config.mjs +1 -1
  3. package/esm2022/lib/core/models/report-grid.model.mjs +1 -1
  4. package/esm2022/lib/core/services/report-overlay.service.mjs +79 -0
  5. package/esm2022/lib/core/services/report-session-context.service.mjs +1 -44
  6. package/esm2022/lib/core/utils/report-parameter.util.mjs +81 -16
  7. package/esm2022/lib/data-access/adapters/endpoint-datasource.adapter.mjs +10 -2
  8. package/esm2022/lib/data-access/adapters/endpoint-lookup.adapter.mjs +10 -1
  9. package/esm2022/lib/data-access/adapters/http-datasource.adapter.mjs +10 -1
  10. package/esm2022/lib/data-access/adapters/http-lookup.adapter.mjs +10 -1
  11. package/esm2022/lib/features/designer/components/design-canvas/design-canvas.component.mjs +6 -4
  12. package/esm2022/lib/features/designer/components/dialogs/report-saved-dialog.component.mjs +11 -10
  13. package/esm2022/lib/features/designer/components/property-editor/parameter-binding-editor.component.mjs +93 -7
  14. package/esm2022/lib/features/designer/components/property-editor/property-editor-datasource.component.mjs +9 -7
  15. package/esm2022/lib/features/designer/components/property-editor/property-editor-grid.component.mjs +9 -16
  16. package/esm2022/lib/features/designer/components/property-editor/property-editor.component.mjs +5 -3
  17. package/esm2022/lib/features/designer/components/toolbar/designer-toolbar.component.mjs +11 -11
  18. package/esm2022/lib/features/designer/designer.component.mjs +12 -7
  19. package/esm2022/lib/features/designer/services/designer-state.service.mjs +5 -3
  20. package/esm2022/lib/features/runtime/dynamic-renderer.component.mjs +2 -2
  21. package/esm2022/lib/features/runtime/report-execution.service.mjs +35 -4
  22. package/esm2022/lib/features/runtime/report-grid-bridge.component.mjs +15 -20
  23. package/esm2022/lib/primitives/components/dropdown/rpt-dropdown.component.mjs +22 -11
  24. package/esm2022/lib/primitives/components/radio/rpt-radio.component.mjs +15 -5
  25. package/esm2022/lib/primitives/components/searchable-select/rpt-searchable-select.component.mjs +6 -6
  26. package/fesm2022/bways-report.mjs +414 -165
  27. package/fesm2022/bways-report.mjs.map +1 -1
  28. package/lib/core/config/bways-report-config.d.ts +3 -0
  29. package/lib/core/models/report-grid.model.d.ts +1 -1
  30. package/lib/core/services/report-overlay.service.d.ts +14 -0
  31. package/lib/core/services/report-session-context.service.d.ts +0 -5
  32. package/lib/core/utils/report-parameter.util.d.ts +15 -1
  33. package/lib/features/designer/components/property-editor/parameter-binding-editor.component.d.ts +12 -0
  34. package/lib/features/designer/components/property-editor/property-editor-datasource.component.d.ts +1 -0
  35. package/lib/features/designer/designer.component.d.ts +1 -0
  36. package/lib/features/runtime/report-grid-bridge.component.d.ts +2 -2
  37. package/lib/primitives/components/dropdown/rpt-dropdown.component.d.ts +1 -2
  38. package/lib/primitives/components/searchable-select/rpt-searchable-select.component.d.ts +0 -1
  39. package/package.json +8 -5
  40. package/styles/theme.css +181 -0
  41. package/third-party-notices/angular-cdk-LICENSE.txt +21 -0
@@ -1,5 +1,39 @@
1
1
  import { getFieldCaseInsensitive } from './data-normalization.util';
2
2
  const TOKEN_RE = /^\{\{\s*(.+?)\s*\}\}$/;
3
+ /** Supported wire formats for date-bound procedure/API parameters. */
4
+ export const PARAMETER_DATE_FORMATS = ['yyyy-MM-dd', 'yyyyMMdd', 'dd/MM/yyyy', 'MM/dd/yyyy', 'dd-MM-yyyy'];
5
+ /** The optional date pipe is persisted in existing string mappings. */
6
+ export function parseParameterToken(raw) {
7
+ const match = TOKEN_RE.exec(raw);
8
+ if (!match)
9
+ return null;
10
+ const parts = match[1].split(/\s*\|\s*date\s*:\s*/);
11
+ if (parts.length === 1)
12
+ return { field: parts[0].trim() };
13
+ const format = parts[1];
14
+ return { field: parts[0].trim(), dateFormat: parts.length === 2 ? format : parts.slice(1).join(' | date:') };
15
+ }
16
+ /** Format calendar parts directly, avoiding UTC/time-zone shifts and locale parsing. */
17
+ export function formatParameterDate(value, format) {
18
+ if (!PARAMETER_DATE_FORMATS.includes(format))
19
+ throw new Error('Unsupported parameter date format. Choose a date format in the Field binding.');
20
+ if (value === '' || value === null || value === undefined)
21
+ return '';
22
+ const raw = value instanceof Date
23
+ ? value.getFullYear() + '-' + String(value.getMonth() + 1).padStart(2, '0') + '-' + String(value.getDate()).padStart(2, '0')
24
+ : String(value);
25
+ const match = /^(\d{4})-?(\d{2})-?(\d{2})(?:T.*)?$/.exec(raw);
26
+ if (!match)
27
+ throw new Error('Invalid date. Select a valid date in the linked field.');
28
+ const [, year, month, day] = match;
29
+ const probe = new Date(0);
30
+ probe.setFullYear(+year, +month - 1, +day);
31
+ probe.setHours(0, 0, 0, 0);
32
+ if (probe.getFullYear() !== +year || probe.getMonth() + 1 !== +month || probe.getDate() !== +day) {
33
+ throw new Error('Invalid date. Select a valid date in the linked field.');
34
+ }
35
+ return format.replace('yyyy', year).replace('MM', month).replace('dd', day);
36
+ }
3
37
  const pad = (n) => String(n).padStart(2, '0');
4
38
  const formatYMD = (d) => `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}`;
5
39
  /** Resolves `{{context.xxx}}` presets such as today / startOfMonth. */
@@ -202,31 +236,62 @@ export function parseSqlExecStatement(sql) {
202
236
  export function resolveParameterValue(raw, session, formValues) {
203
237
  if (typeof raw !== 'string')
204
238
  return raw;
205
- const m = TOKEN_RE.exec(raw);
206
- if (!m)
239
+ const token = parseParameterToken(raw);
240
+ if (!token)
207
241
  return sanitizeSqlParamLiteral(raw);
208
- const inner = m[1];
242
+ const inner = token.field;
243
+ const format = (value) => token.dateFormat ? formatParameterDate(value, token.dateFormat) : value;
209
244
  if (inner.startsWith('session.')) {
210
245
  const sessionKey = inner.slice(8);
211
246
  const val = getFieldCaseInsensitive(session, sessionKey);
212
- return val !== undefined && val !== null ? val : '';
247
+ return format(val !== undefined && val !== null ? val : '');
213
248
  }
214
249
  if (inner.startsWith('context.')) {
215
- return resolveContextPreset(inner.slice(8));
250
+ return format(resolveContextPreset(inner.slice(8)));
216
251
  }
217
252
  const v = resolveCanvasFieldValue(formValues, inner);
218
- return v !== undefined && v !== null ? v : '';
253
+ return format(v !== undefined && v !== null ? v : '');
254
+ }
255
+ /** Replace a single mapping and remove all stale aliases for the same argument. */
256
+ export function setParameterMapping(mappings, name, value) {
257
+ const key = name.replace(/^@+/, '');
258
+ if (!key)
259
+ throw new Error('A parameter name cannot be empty.');
260
+ const entries = Object.entries(mappings ?? {}).filter(([existing]) => existing.replace(/^@+/, '').toLowerCase() !== key.toLowerCase());
261
+ return Object.fromEntries([...entries, [key, value]]);
262
+ }
263
+ /** Canonical SQL argument names. Equal aliases collapse; conflicting values fail explicitly. */
264
+ export function normalizeParameterNames(parameters) {
265
+ const out = {};
266
+ const names = new Map();
267
+ for (const [rawKey, value] of Object.entries(parameters)) {
268
+ const key = rawKey.replace(/^@+/, '');
269
+ if (!key)
270
+ throw new Error('A parameter name cannot be empty.');
271
+ const existing = names.get(key.toLowerCase());
272
+ if (existing !== undefined) {
273
+ if (!Object.is(out[existing], value) && JSON.stringify(out[existing]) !== JSON.stringify(value)) {
274
+ throw new Error('Conflicting values for parameter "' + existing + '". Keep one mapping for this parameter.');
275
+ }
276
+ continue;
277
+ }
278
+ names.set(key.toLowerCase(), key);
279
+ Object.defineProperty(out, key, { value, enumerable: true, configurable: true, writable: true });
280
+ }
281
+ return out;
219
282
  }
220
- /** Resolves every mapping into concrete values (de-duplicating `@name` / `name`). */
283
+ /** Resolves mappings into one concrete value per parameter, without @ aliases. */
221
284
  export function resolveParameterMappings(mappings, session, formValues) {
222
285
  const out = {};
223
286
  for (const [key, raw] of Object.entries(mappings ?? {})) {
287
+ const token = typeof raw === 'string' ? parseParameterToken(raw) : null;
288
+ // An unavailable session is not an empty SQL argument. Preserve explicit 0/false values.
289
+ if (token?.field.startsWith('session.') && getFieldCaseInsensitive(session, token.field.slice(8)) == null)
290
+ continue;
224
291
  const val = resolveParameterValue(raw, session, formValues);
225
- const cleanKey = key.replace(/^@/, '');
226
- out[cleanKey] = val;
227
- out[`@${cleanKey}`] = val;
292
+ Object.defineProperty(out, key, { value: val, enumerable: true });
228
293
  }
229
- return out;
294
+ return normalizeParameterNames(out);
230
295
  }
231
296
  /**
232
297
  * Returns canvas field keys referenced by mappings that currently have no value.
@@ -237,10 +302,10 @@ export function findMissingCanvasFields(mappings, formValues) {
237
302
  for (const raw of Object.values(mappings ?? {})) {
238
303
  if (typeof raw !== 'string')
239
304
  continue;
240
- const m = TOKEN_RE.exec(raw);
241
- if (!m)
305
+ const token = parseParameterToken(raw);
306
+ if (!token)
242
307
  continue;
243
- const inner = m[1];
308
+ const inner = token.field;
244
309
  if (inner.startsWith('session.') || inner.startsWith('context.'))
245
310
  continue;
246
311
  const v = resolveCanvasFieldValue(formValues, inner);
@@ -264,7 +329,7 @@ export function findMissingCanvasFields(mappings, formValues) {
264
329
  */
265
330
  export function resolveExecutionDataSource(def) {
266
331
  const sources = def.dataSources ?? [];
267
- const byId = sources.find((d) => d.id === def.grid?.dataSourceId);
332
+ const byId = sources.find((d) => d.id === def.grid?.dataSourceId || d.name === def.grid?.dataSourceId);
268
333
  if (byId)
269
334
  return byId;
270
335
  if (sources.length > 0)
@@ -293,4 +358,4 @@ export function toFieldKey(paramName) {
293
358
  const clean = stripped.replace(/[^a-zA-Z0-9]+(.)?/g, (_m, c) => (c ? c.toUpperCase() : ''));
294
359
  return clean ? clean.charAt(0).toLowerCase() + clean.slice(1) : paramName;
295
360
  }
296
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXBhcmFtZXRlci51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYndheXMtcmVwb3J0L3NyYy9saWIvY29yZS91dGlscy9yZXBvcnQtcGFyYW1ldGVyLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFJcEUsTUFBTSxRQUFRLEdBQUcsdUJBQXVCLENBQUM7QUFFekMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFTLEVBQVUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzlELE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBTyxFQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO0FBRXpHLHVFQUF1RTtBQUN2RSxNQUFNLFVBQVUsb0JBQW9CLENBQUMsR0FBVztJQUM5QyxNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQ3ZCLFFBQVEsR0FBRyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7UUFDMUIsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLE1BQU0sQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzNCLE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLENBQUM7UUFDRCxLQUFLLGNBQWM7WUFDakIsT0FBTyxHQUFHLEdBQUcsQ0FB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Q0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGtCQUFrQjtZQUM1QyxpQkFBaUIsRUFBRSxHQUFHLENBQUMsaUJBQWlCO1NBQ3pDLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsMEVBQTBFO0FBQzFFLE1BQU0sVUFBVSxVQUFVLENBQUMsU0FBaUI7SUFDMUMsTUFBTSxRQUFRLEdBQUcsU0FBUztTQUN2QixPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztTQUNsQixPQUFPLENBQUMsdURBQXVELEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDeEUsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFxQixFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hILE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUM1RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVwb3J0RGVmaW5pdGlvbiB9IGZyb20gJy4uL21vZGVscy9yZXBvcnQtZGVmaW5pdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBSZXBvcnREYXRhU291cmNlRGVmaW5pdGlvbiB9IGZyb20gJy4uL21vZGVscy9yZXBvcnQtZGF0YXNvdXJjZS5tb2RlbCc7XG5pbXBvcnQgeyBnZXRGaWVsZENhc2VJbnNlbnNpdGl2ZSB9IGZyb20gJy4vZGF0YS1ub3JtYWxpemF0aW9uLnV0aWwnO1xuXG5leHBvcnQgdHlwZSBQYXJhbWV0ZXJNYXBwaW5ncyA9IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+O1xuXG5jb25zdCBUT0tFTl9SRSA9IC9eXFx7XFx7XFxzKiguKz8pXFxzKlxcfVxcfSQvO1xuXG5jb25zdCBwYWQgPSAobjogbnVtYmVyKTogc3RyaW5nID0+IFN0cmluZyhuKS5wYWRTdGFydCgyLCAnMCcpO1xuY29uc3QgZm9ybWF0WU1EID0gKGQ6IERhdGUpOiBzdHJpbmcgPT4gYCR7ZC5nZXRGdWxsWWVhcigpfS0ke3BhZChkLmdldE1vbnRoKCkgKyAxKX0tJHtwYWQoZC5nZXREYXRlKCkpfWA7XG5cbi8qKiBSZXNvbHZlcyBge3tjb250ZXh0Lnh4eH19YCBwcmVzZXRzIHN1Y2ggYXMgdG9kYXkgLyBzdGFydE9mTW9udGguICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUNvbnRleHRQcmVzZXQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBzd2l0Y2ggKGtleS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgY2FzZSAneWVzdGVyZGF5Jzoge1xuICAgICAgY29uc3QgeSA9IG5ldyBEYXRlKG5vdyk7XG4gICAgICB5LnNldERhdGUoeS5nZXREYXRlKCkgLSAxKTtcbiAgICAgIHJldHVybiBmb3JtYXRZTUQoeSk7XG4gICAgfVxuICAgIGNhc2UgJ3N0YXJ0b2Ztb250aCc6XG4gICAgICByZXR1cm4gYCR7bm93LmdldEZ1bGxZZWFyKCl9LSR7cGFkKG5vdy5nZXRNb250aCgpICsgMSl9LTAxYDtcbiAgICBjYXNlICdlbmRvZm1vbnRoJzpcbiAgICAgIHJldHVybiBmb3JtYXRZTUQobmV3IERhdGUobm93LmdldEZ1bGxZZWFyKCksIG5vdy5nZXRNb250aCgpICsgMSwgMCkpO1xuICAgIGNhc2UgJ3N0YXJ0b2Z5ZWFyJzpcbiAgICAgIHJldHVybiBgJHtub3cuZ2V0RnVsbFllYXIoKX0tMDEtMDFgO1xuICAgIGNhc2UgJ3RvZGF5JzpcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZvcm1hdFlNRChub3cpO1xuICB9XG59XG5cbi8qKlxuICogTG9va3MgdXAgYSBmaWVsZCB2YWx1ZSBmcm9tIGZvcm1WYWx1ZXMgc3VwcG9ydGluZyBkaXJlY3QgbmFtZXMsIGRvdCBwYXRocyAoYS5iKSxcbiAqIGFuZCBjb21wb3VuZCBkYXRlIHJhbmdlcyAoZS5nLiBkYXRlUmFuZ2UuZnJvbSwgZGF0ZVJhbmdlX2Zyb20sIGRhdGVSYW5nZUZyb20pLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUNhbnZhc0ZpZWxkVmFsdWUoXG4gIGZvcm1WYWx1ZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBpbm5lcjogc3RyaW5nXG4pOiB1bmtub3duIHtcbiAgLy8gMS4gRGlyZWN0IGNhc2UtaW5zZW5zaXRpdmUgbG9va3VwXG4gIGNvbnN0IGRpcmVjdCA9IGdldEZpZWxkQ2FzZUluc2Vuc2l0aXZlKGZvcm1WYWx1ZXMsIGlubmVyKTtcbiAgaWYgKGRpcmVjdCAhPT0gdW5kZWZpbmVkICYmIGRpcmVjdCAhPT0gbnVsbCkge1xuICAgIHJldHVybiBkaXJlY3Q7XG4gIH1cblxuICAvLyAyLiBEb3QtcGF0aCBsb29rdXAgKGUuZy4gZGF0ZVJhbmdlLmZyb20gb3IgdXNlci5hZGRyZXNzLmNpdHkpXG4gIGlmIChpbm5lci5pbmNsdWRlcygnLicpKSB7XG4gICAgY29uc3QgcGFydHMgPSBpbm5lci5zcGxpdCgnLicpO1xuICAgIGxldCBjdXJyOiB1bmtub3duID0gZm9ybVZhbHVlcztcbiAgICBmb3IgKGNvbnN0IHAgb2YgcGFydHMpIHtcbiAgICAgIGlmIChjdXJyICYmIHR5cGVvZiBjdXJyID09PSAnb2JqZWN0Jykge1xuICAgICAgICBjdXJyID0gZ2V0RmllbGRDYXNlSW5zZW5zaXRpdmUoY3VyciBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgcCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjdXJyID0gdW5kZWZpbmVkO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGN1cnIgIT09IHVuZGVmaW5lZCAmJiBjdXJyICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gY3VycjtcbiAgICB9XG4gIH1cblxuICAvLyAzLiBDb21wb3VuZCBkYXRlIHJhbmdlIG1hdGNoaW5nIChlLmcuIGRhdGVSYW5nZV9mcm9tLCBkYXRlUmFuZ2VGcm9tLCBmcm9tRGF0ZSwgdG9EYXRlKVxuICBjb25zdCBsb3dlcklubmVyID0gaW5uZXIudG9Mb3dlckNhc2UoKTtcbiAgY29uc3QgaXNGcm9tID1cbiAgICBsb3dlcklubmVyLmVuZHNXaXRoKCdfZnJvbScpIHx8XG4gICAgbG93ZXJJbm5lci5lbmRzV2l0aCgnZnJvbScpIHx8XG4gICAgbG93ZXJJbm5lci5zdGFydHNXaXRoKCdmcm9tJykgfHxcbiAgICBsb3dlcklubmVyLnN0YXJ0c1dpdGgoJ2Zyb21fJyk7XG5cbiAgY29uc3QgaXNUbyA9XG4gICAgIWlzRnJvbSAmJlxuICAgIChsb3dlcklubmVyLmVuZHNXaXRoKCdfdG8nKSB8fFxuICAgICAgbG93ZXJJbm5lci5lbmRzV2l0aCgndG8nKSB8fFxuICAgICAgbG93ZXJJbm5lci5zdGFydHNXaXRoKCd0bycpIHx8XG4gICAgICBsb3dlcklubmVyLnN0YXJ0c1dpdGgoJ3RvXycpKTtcblxuICBpZiAoaXNGcm9tIHx8IGlzVG8pIHtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbF0gb2YgT2JqZWN0LmVudHJpZXMoZm9ybVZhbHVlcykpIHtcbiAgICAgIGlmICh2YWwgJiYgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgJiYgJ2Zyb20nIGluICh2YWwgYXMgYW55KSAmJiAndG8nIGluICh2YWwgYXMgYW55KSkge1xuICAgICAgICBjb25zdCByYW5nZU9iaiA9IHZhbCBhcyB7IGZyb206IHVua25vd247IHRvOiB1bmtub3duIH07XG4gICAgICAgIGNvbnN0IGNsZWFuSW5uZXIgPSBsb3dlcklubmVyXG4gICAgICAgICAgLnJlcGxhY2UoL15mcm9tXz98XnRvXz98X2Zyb20kfF90byR8ZnJvbSR8dG8kLywgJycpXG4gICAgICAgICAgLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmIChjbGVhbklubmVyID09PSAnJyB8fCBrZXkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhjbGVhbklubmVyKSB8fCBjbGVhbklubmVyLmluY2x1ZGVzKGtleS50b0xvd2VyQ2FzZSgpKSkge1xuICAgICAgICAgIHJldHVybiBpc0Zyb20gPyByYW5nZU9iai5mcm9tIDogcmFuZ2VPYmoudG87XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFNhbml0aXplcyBULVNRTCBwYXJhbWV0ZXIgbGl0ZXJhbHMgY29waWVkIGZyb20gU1NNUywgcHJvZmlsZXJzLCBvciBTUUwgc2NyaXB0czpcbiAqIC0gU3RyaXBzIG91dGVyIGRvdWJsZSBxdW90ZXM6IFwiLi4uXCJcbiAqIC0gU3RyaXBzIG91dGVyIFQtU1FMIHF1b3RlczogTicuLi4nIG9yICcuLi4nXG4gKiAtIFVuZXNjYXBlcyBkb3VibGVkIHNpbmdsZSBxdW90ZXM6ICcnIC0+ICdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNhbml0aXplU3FsUGFyYW1MaXRlcmFsKHZhbDogdW5rbm93bik6IHVua25vd24ge1xuICBpZiAodHlwZW9mIHZhbCAhPT0gJ3N0cmluZycpIHJldHVybiB2YWw7XG4gIGxldCBzID0gdmFsLnRyaW0oKTtcbiAgaWYgKHMuc3RhcnRzV2l0aCgnXCInKSAmJiBzLmVuZHNXaXRoKCdcIicpICYmIHMubGVuZ3RoID49IDIpIHtcbiAgICBzID0gcy5zdWJzdHJpbmcoMSwgcy5sZW5ndGggLSAxKS50cmltKCk7XG4gIH1cbiAgY29uc3QgaXNRdW90ZWRTcWxMaXRlcmFsID1cbiAgICAoKHMuc3RhcnRzV2l0aChcIk4nXCIpIHx8IHMuc3RhcnRzV2l0aChcIm4nXCIpKSAmJiBzLmVuZHNXaXRoKFwiJ1wiKSAmJiBzLmxlbmd0aCA+PSAzKSB8fFxuICAgIChzLnN0YXJ0c1dpdGgoXCInXCIpICYmIHMuZW5kc1dpdGgoXCInXCIpICYmIHMubGVuZ3RoID49IDIpO1xuXG4gIGlmIChpc1F1b3RlZFNxbExpdGVyYWwpIHtcbiAgICBjb25zdCBwcmVmaXhMZW4gPSAocy5zdGFydHNXaXRoKFwiTidcIikgfHwgcy5zdGFydHNXaXRoKFwibidcIikpID8gMiA6IDE7XG4gICAgcyA9IHMuc3Vic3RyaW5nKHByZWZpeExlbiwgcy5sZW5ndGggLSAxKTtcbiAgICBpZiAocy5pbmNsdWRlcyhcIicnXCIpKSB7XG4gICAgICBzID0gcy5yZXBsYWNlKC8nJy9nLCBcIidcIik7XG4gICAgfVxuICB9IGVsc2UgaWYgKHMuaW5jbHVkZXMoXCInJyAnJ1wiKSB8fCBzLmluY2x1ZGVzKFwiJycnJ1wiKSB8fCAvJydbYS16QS1aMC05X1xcc3wtXSsnJy8udGVzdChzKSkge1xuICAgIHMgPSBzLnJlcGxhY2UoLycnL2csIFwiJ1wiKTtcbiAgfVxuICByZXR1cm4gcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYXJzZWRTcWxFeGVjIHtcbiAgcHJvY2VkdXJlTmFtZT86IHN0cmluZztcbiAgcGFyYW1ldGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj47XG59XG5cbi8qKlxuICogUGFyc2VzIGFuIFNTTVMgLyBULVNRTCBFWEVDIHN0YXRlbWVudCBzdWNoIGFzOlxuICogZXhlYyBHZXRfSGVscExpc3QgQGNockNPTVBBTllJRD1OJzEwMScsQGNoclRhYmxlTmFtZT1OJ01TVEFDQ1RHTFNVQicsQGludEV4ZWNGbGFnPTFcbiAqIEV4dHJhY3RzIHByb2NlZHVyZSBuYW1lIGFuZCB1bmVzY2FwZXMgcGFyYW1ldGVyIHZhbHVlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU3FsRXhlY1N0YXRlbWVudChzcWw6IHN0cmluZyk6IFBhcnNlZFNxbEV4ZWMgfCBudWxsIHtcbiAgaWYgKCFzcWwgfHwgdHlwZW9mIHNxbCAhPT0gJ3N0cmluZycpIHJldHVybiBudWxsO1xuICBjb25zdCB0cmltbWVkID0gc3FsLnRyaW0oKTtcbiAgY29uc3QgZXhlY01hdGNoID0gdHJpbW1lZC5tYXRjaCgvXig/OmV4ZWMoPzp1dGUpP1xccyspKD86KD86XFxbP1tcXHddK1xcXT9cXC4pP1xcWz8oW1xcd10rKVxcXT8pXFxzKiguKikkL2lzKTtcbiAgaWYgKCFleGVjTWF0Y2ggJiYgIXRyaW1tZWQuc3RhcnRzV2l0aCgnQCcpKSByZXR1cm4gbnVsbDtcblxuICBjb25zdCBwcm9jZWR1cmVOYW1lID0gZXhlY01hdGNoID8gZXhlY01hdGNoWzFdIDogdW5kZWZpbmVkO1xuICBjb25zdCBwYXJhbVBhcnQgPSBleGVjTWF0Y2ggPyBleGVjTWF0Y2hbMl0gOiB0cmltbWVkO1xuXG4gIGNvbnN0IHBhcmFtZXRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+ID0ge307XG4gIGlmICghcGFyYW1QYXJ0KSByZXR1cm4geyBwcm9jZWR1cmVOYW1lLCBwYXJhbWV0ZXJzIH07XG5cbiAgbGV0IGkgPSAwO1xuICBjb25zdCBsZW4gPSBwYXJhbVBhcnQubGVuZ3RoO1xuXG4gIHdoaWxlIChpIDwgbGVuKSB7XG4gICAgd2hpbGUgKGkgPCBsZW4gJiYgKHBhcmFtUGFydFtpXSA9PT0gJyAnIHx8IHBhcmFtUGFydFtpXSA9PT0gJ1xcdCcgfHwgcGFyYW1QYXJ0W2ldID09PSAnXFxyJyB8fCBwYXJhbVBhcnRbaV0gPT09ICdcXG4nIHx8IHBhcmFtUGFydFtpXSA9PT0gJywnKSkge1xuICAgICAgaSsrO1xuICAgIH1cbiAgICBpZiAoaSA+PSBsZW4pIGJyZWFrO1xuXG4gICAgaWYgKHBhcmFtUGFydFtpXSAhPT0gJ0AnKSB7XG4gICAgICBpKys7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBrZXlTdGFydCA9IGk7XG4gICAgd2hpbGUgKGkgPCBsZW4gJiYgcGFyYW1QYXJ0W2ldICE9PSAnPScgJiYgcGFyYW1QYXJ0W2ldICE9PSAnICcgJiYgcGFyYW1QYXJ0W2ldICE9PSAnXFx0Jykge1xuICAgICAgaSsrO1xuICAgIH1cbiAgICBjb25zdCBwYXJhbUtleSA9IHBhcmFtUGFydC5zbGljZShrZXlTdGFydCwgaSkudHJpbSgpO1xuXG4gICAgd2hpbGUgKGkgPCBsZW4gJiYgKHBhcmFtUGFydFtpXSA9PT0gJyAnIHx8IHBhcmFtUGFydFtpXSA9PT0gJ1xcdCcgfHwgcGFyYW1QYXJ0W2ldID09PSAnPScpKSB7XG4gICAgICBpKys7XG4gICAgfVxuXG4gICAgbGV0IHZhbFN0ciA9ICcnO1xuICAgIGlmIChpIDwgbGVuICYmIChwYXJhbVBhcnRbaV0gPT09IFwiJ1wiIHx8IChwYXJhbVBhcnRbaV0gPT09ICdOJyAmJiBwYXJhbVBhcnRbaSArIDFdID09PSBcIidcIikgfHwgKHBhcmFtUGFydFtpXSA9PT0gJ24nICYmIHBhcmFtUGFydFtpICsgMV0gPT09IFwiJ1wiKSkpIHtcbiAgICAgIGNvbnN0IGlzTiA9IHBhcmFtUGFydFtpXSA9PT0gJ04nIHx8IHBhcmFtUGFydFtpXSA9PT0gJ24nO1xuICAgICAgaSArPSBpc04gPyAyIDogMTtcbiAgICAgIGxldCBpblF1b3RlID0gdHJ1ZTtcbiAgICAgIGxldCBxdW90ZVZhbCA9ICcnO1xuICAgICAgd2hpbGUgKGkgPCBsZW4gJiYgaW5RdW90ZSkge1xuICAgICAgICBpZiAocGFyYW1QYXJ0W2ldID09PSBcIidcIikge1xuICAgICAgICAgIGlmIChpICsgMSA8IGxlbiAmJiBwYXJhbVBhcnRbaSArIDFdID09PSBcIidcIikge1xuICAgICAgICAgICAgcXVvdGVWYWwgKz0gXCInXCI7XG4gICAgICAgICAgICBpICs9IDI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGluUXVvdGUgPSBmYWxzZTtcbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcXVvdGVWYWwgKz0gcGFyYW1QYXJ0W2ldO1xuICAgICAgICAgIGkrKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdmFsU3RyID0gcXVvdGVWYWw7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHZhbFN0YXJ0ID0gaTtcbiAgICAgIHdoaWxlIChpIDwgbGVuICYmIHBhcmFtUGFydFtpXSAhPT0gJywnICYmIHBhcmFtUGFydFtpXSAhPT0gJ1xccicgJiYgcGFyYW1QYXJ0W2ldICE9PSAnXFxuJykge1xuICAgICAgICBpKys7XG4gICAgICB9XG4gICAgICB2YWxTdHIgPSBwYXJhbVBhcnQuc2xpY2UodmFsU3RhcnQsIGkpLnRyaW0oKTtcbiAgICB9XG5cbiAgICBjb25zdCBjbGVhbktleSA9IHBhcmFtS2V5LnJlcGxhY2UoL15ALywgJycpO1xuICAgIGlmIChjbGVhbktleSkge1xuICAgICAgaWYgKC9eLT9cXGQrJC8udGVzdCh2YWxTdHIpKSB7XG4gICAgICAgIHBhcmFtZXRlcnNbcGFyYW1LZXldID0gcGFyc2VJbnQodmFsU3RyLCAxMCk7XG4gICAgICB9IGVsc2UgaWYgKC9eLT9cXGQrXFwuXFxkKyQvLnRlc3QodmFsU3RyKSkge1xuICAgICAgICBwYXJhbWV0ZXJzW3BhcmFtS2V5XSA9IHBhcnNlRmxvYXQodmFsU3RyKTtcbiAgICAgIH0gZWxzZSBpZiAodmFsU3RyLnRvTG93ZXJDYXNlKCkgPT09ICd0cnVlJykge1xuICAgICAgICBwYXJhbWV0ZXJzW3BhcmFtS2V5XSA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKHZhbFN0ci50b0xvd2VyQ2FzZSgpID09PSAnZmFsc2UnKSB7XG4gICAgICAgIHBhcmFtZXRlcnNbcGFyYW1LZXldID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJhbWV0ZXJzW3BhcmFtS2V5XSA9IHZhbFN0cjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4geyBwcm9jZWR1cmVOYW1lLCBwYXJhbWV0ZXJzIH07XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgb25lIHJhdyBtYXBwaW5nIHZhbHVlIGFnYWluc3Qgc2Vzc2lvbiArIGNhbnZhcyBmb3JtIHZhbHVlcy5cbiAqIC0gYHt7c2Vzc2lvbi5icmFuY2hJZH19YCAgLT4gc2Vzc2lvbiB2YWx1ZSAoY2FzZS1pbnNlbnNpdGl2ZSlcbiAqIC0gYHt7Y29udGV4dC50b2RheX19YCAgICAgLT4gY29tcHV0ZWQgZGF0ZVxuICogLSBge3tmcm9tRGF0ZX19YCAgICAgICAgICAtPiB2YWx1ZSBvZiBjYW52YXMgZmllbGQgd2l0aCBrZXkgYGZyb21EYXRlYCAoY2FzZS1pbnNlbnNpdGl2ZSlcbiAqIC0gYHt7ZGF0ZVJhbmdlLmZyb219fWAgICAgLT4gdmFsdWUgb2YgbmVzdGVkIGZyb20gcHJvcGVydHlcbiAqIC0gYW55dGhpbmcgZWxzZSAgICAgICAgICAgLT4gc2FuaXRpemVkIGxpdGVyYWwgdmFsdWUgKGZpeGVkIHZhbHVlKVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVBhcmFtZXRlclZhbHVlKFxuICByYXc6IHVua25vd24sXG4gIHNlc3Npb246IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBmb3JtVmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuKTogdW5rbm93biB7XG4gIGlmICh0eXBlb2YgcmF3ICE9PSAnc3RyaW5nJykgcmV0dXJuIHJhdztcbiAgY29uc3QgbSA9IFRPS0VOX1JFLmV4ZWMocmF3KTtcbiAgaWYgKCFtKSByZXR1cm4gc2FuaXRpemVTcWxQYXJhbUxpdGVyYWwocmF3KTtcbiAgY29uc3QgaW5uZXIgPSBtWzFdO1xuICBpZiAoaW5uZXIuc3RhcnRzV2l0aCgnc2Vzc2lvbi4nKSkge1xuICAgIGNvbnN0IHNlc3Npb25LZXkgPSBpbm5lci5zbGljZSg4KTtcbiAgICBjb25zdCB2YWwgPSBnZXRGaWVsZENhc2VJbnNlbnNpdGl2ZShzZXNzaW9uLCBzZXNzaW9uS2V5KTtcbiAgICByZXR1cm4gdmFsICE9PSB1bmRlZmluZWQgJiYgdmFsICE9PSBudWxsID8gdmFsIDogJyc7XG4gIH1cbiAgaWYgKGlubmVyLnN0YXJ0c1dpdGgoJ2NvbnRleHQuJykpIHtcbiAgICByZXR1cm4gcmVzb2x2ZUNvbnRleHRQcmVzZXQoaW5uZXIuc2xpY2UoOCkpO1xuICB9XG4gIGNvbnN0IHYgPSByZXNvbHZlQ2FudmFzRmllbGRWYWx1ZShmb3JtVmFsdWVzLCBpbm5lcik7XG4gIHJldHVybiB2ICE9PSB1bmRlZmluZWQgJiYgdiAhPT0gbnVsbCA/IHYgOiAnJztcbn1cblxuLyoqIFJlc29sdmVzIGV2ZXJ5IG1hcHBpbmcgaW50byBjb25jcmV0ZSB2YWx1ZXMgKGRlLWR1cGxpY2F0aW5nIGBAbmFtZWAgLyBgbmFtZWApLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVQYXJhbWV0ZXJNYXBwaW5ncyhcbiAgbWFwcGluZ3M6IFBhcmFtZXRlck1hcHBpbmdzIHwgdW5kZWZpbmVkLFxuICBzZXNzaW9uOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgZm9ybVZhbHVlczogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgY29uc3Qgb3V0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICBmb3IgKGNvbnN0IFtrZXksIHJhd10gb2YgT2JqZWN0LmVudHJpZXMobWFwcGluZ3MgPz8ge30pKSB7XG4gICAgY29uc3QgdmFsID0gcmVzb2x2ZVBhcmFtZXRlclZhbHVlKHJhdywgc2Vzc2lvbiwgZm9ybVZhbHVlcyk7XG4gICAgY29uc3QgY2xlYW5LZXkgPSBrZXkucmVwbGFjZSgvXkAvLCAnJyk7XG4gICAgb3V0W2NsZWFuS2V5XSA9IHZhbDtcbiAgICBvdXRbYEAke2NsZWFuS2V5fWBdID0gdmFsO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG5cbi8qKlxuICogUmV0dXJucyBjYW52YXMgZmllbGQga2V5cyByZWZlcmVuY2VkIGJ5IG1hcHBpbmdzIHRoYXQgY3VycmVudGx5IGhhdmUgbm8gdmFsdWUuXG4gKiBTZXNzaW9uIC8gY29udGV4dCAvIGZpeGVkIHZhbHVlcyBuZXZlciBibG9jayBleGVjdXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kTWlzc2luZ0NhbnZhc0ZpZWxkcyhcbiAgbWFwcGluZ3M6IFBhcmFtZXRlck1hcHBpbmdzIHwgdW5kZWZpbmVkLFxuICBmb3JtVmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuKTogc3RyaW5nW10ge1xuICBjb25zdCBtaXNzaW5nID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGZvciAoY29uc3QgcmF3IG9mIE9iamVjdC52YWx1ZXMobWFwcGluZ3MgPz8ge30pKSB7XG4gICAgaWYgKHR5cGVvZiByYXcgIT09ICdzdHJpbmcnKSBjb250aW51ZTtcbiAgICBjb25zdCBtID0gVE9LRU5fUkUuZXhlYyhyYXcpO1xuICAgIGlmICghbSkgY29udGludWU7XG4gICAgY29uc3QgaW5uZXIgPSBtWzFdO1xuICAgIGlmIChpbm5lci5zdGFydHNXaXRoKCdzZXNzaW9uLicpIHx8IGlubmVyLnN0YXJ0c1dpdGgoJ2NvbnRleHQuJykpIGNvbnRpbnVlO1xuICAgIGNvbnN0IHYgPSByZXNvbHZlQ2FudmFzRmllbGRWYWx1ZShmb3JtVmFsdWVzLCBpbm5lcik7XG4gICAgaWYgKHYgPT09IHVuZGVmaW5lZCB8fCB2ID09PSBudWxsIHx8ICh0eXBlb2YgdiA9PT0gJ3N0cmluZycgJiYgdi50cmltKCkgPT09ICcnKSkge1xuICAgICAgbWlzc2luZy5hZGQoaW5uZXIpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHYgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHYpICYmICdmcm9tJyBpbiAodiBhcyBhbnkpKSB7XG4gICAgICBjb25zdCByID0gdiBhcyB7IGZyb20/OiBzdHJpbmc7IHRvPzogc3RyaW5nIH07XG4gICAgICBpZiAoIXIuZnJvbSAmJiAhci50bykge1xuICAgICAgICBtaXNzaW5nLmFkZChpbm5lcik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBbLi4ubWlzc2luZ107XG59XG5cbi8qKlxuICogUGlja3MgdGhlIGRhdGEgc291cmNlIHRoZSByZXN1bHQgZ3JpZCBzaG91bGQgcnVuOlxuICogMS4gdGhlIG9uZSByZWZlcmVuY2VkIGJ5IGBncmlkLmRhdGFTb3VyY2VJZGBcbiAqIDIuIG90aGVyd2lzZSB0aGUgZmlyc3QgZGVjbGFyZWQgZGF0YSBzb3VyY2VcbiAqIDMuIG90aGVyd2lzZSBhIHByb2NlZHVyZS90YWJsZSBib3VuZCB0byBhIGNvbXBvbmVudCAobGVnYWN5IHJlcG9ydHMpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlRXhlY3V0aW9uRGF0YVNvdXJjZShkZWY6IFJlcG9ydERlZmluaXRpb24pOiBSZXBvcnREYXRhU291cmNlRGVmaW5pdGlvbiB8IG51bGwge1xuICBjb25zdCBzb3VyY2VzID0gZGVmLmRhdGFTb3VyY2VzID8/IFtdO1xuICBjb25zdCBieUlkID0gc291cmNlcy5maW5kKChkKSA9PiBkLmlkID09PSBkZWYuZ3JpZD8uZGF0YVNvdXJjZUlkKTtcbiAgaWYgKGJ5SWQpIHJldHVybiBieUlkO1xuICBpZiAoc291cmNlcy5sZW5ndGggPiAwKSByZXR1cm4gc291cmNlc1swXTtcblxuICBjb25zdCBjb21wID0gZGVmLmNvbXBvbmVudHMuZmluZCgoYykgPT4gYy5kYXRhU291cmNlPy5lbnRpdHlOYW1lKTtcbiAgY29uc3QgY2RzID0gY29tcD8uZGF0YVNvdXJjZTtcbiAgaWYgKGNkcz8uZW50aXR5TmFtZSkge1xuICAgIGNvbnN0IGlzVGFibGUgPSBjZHMuc291cmNlVHlwZSA9PT0gJ3RhYmxlJztcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGBzcC0ke2Nkcy5lbnRpdHlOYW1lfWAsXG4gICAgICBuYW1lOiBjZHMuZW50aXR5TmFtZSxcbiAgICAgIGVuZHBvaW50OiBjZHMuZW50aXR5TmFtZSxcbiAgICAgIHNjaGVtYTogY2RzLnNjaGVtYSB8fCAnZGJvJyxcbiAgICAgIHR5cGU6IGlzVGFibGUgPyAndGFibGUnIDogJ3N0b3JlZF9wcm9jZWR1cmUnLFxuICAgICAgbWV0aG9kOiBpc1RhYmxlID8gJ0dFVCcgOiAnU1RPUkVEX1BST0NFRFVSRScsXG4gICAgICBwYXJhbWV0ZXJNYXBwaW5nczogY2RzLnBhcmFtZXRlck1hcHBpbmdzLFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKiBTdHJpcHMgU1FMIFNlcnZlciBIdW5nYXJpYW4gcHJlZml4ZXM6IGBAY2hyRnJvbURhdGVgIC0+IGBmcm9tRGF0ZWAuICovXG5leHBvcnQgZnVuY3Rpb24gdG9GaWVsZEtleShwYXJhbU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHN0cmlwcGVkID0gcGFyYW1OYW1lXG4gICAgLnJlcGxhY2UoL15AKy8sICcnKVxuICAgIC5yZXBsYWNlKC9eKGNocnxpbnR8dmNocnxuY2hyfGR0fHN0cnxudW18Yml0fGRlY3xmbHQpKD89W0EtWl9dKS8sICcnKTtcbiAgY29uc3QgY2xlYW4gPSBzdHJpcHBlZC5yZXBsYWNlKC9bXmEtekEtWjAtOV0rKC4pPy9nLCAoX20sIGM6IHN0cmluZyB8IHVuZGVmaW5lZCkgPT4gKGMgPyBjLnRvVXBwZXJDYXNlKCkgOiAnJykpO1xuICByZXR1cm4gY2xlYW4gPyBjbGVhbi5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSArIGNsZWFuLnNsaWNlKDEpIDogcGFyYW1OYW1lO1xufVxuIl19
361
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXBhcmFtZXRlci51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYndheXMtcmVwb3J0L3NyYy9saWIvY29yZS91dGlscy9yZXBvcnQtcGFyYW1ldGVyLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFJcEUsTUFBTSxRQUFRLEdBQUcsdUJBQXVCLENBQUM7QUFFekMsc0VBQXNFO0FBQ3RFLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFlBQVksQ0FBVSxDQUFDO0FBR3BILHVFQUF1RTtBQUN2RSxNQUFNLFVBQVUsbUJBQW1CLENBQUMsR0FBVztJQUM3QyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLElBQUksQ0FBQyxLQUFLO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDeEIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3BELElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztJQUMxRCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUF3QixDQUFDO0lBQy9DLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FB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O1lBQ0osU0FBUztRQUNYLENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDbkIsT0FBTyxDQUFDLEdBQUcsR0FBRyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDeEYsQ0FBQyxFQUFFLENBQUM7UUFDTixDQUFDO1FBQ0QsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFckQsT0FBTyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzFGLENBQUMsRUFBRSxDQUFDO1FBQ04sQ0FBQztRQUVELElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNsSixNQUFNLEdBQUcsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUM7WUFDekQsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENB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RyxDQUFDLFVBQVUsRUFBRTtZQUMxQixJQUFJLEVBQUUsR0FBRyxDQUFDLFVBQVU7WUFDcEIsUUFBUSxFQUFFLEdBQUcsQ0FBQyxVQUFVO1lBQ3hCLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxJQUFJLEtBQUs7WUFDM0IsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxrQkFBa0I7WUFDNUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxrQkFBa0I7WUFDNUMsaUJBQWlCLEVBQUUsR0FBRyxDQUFDLGlCQUFpQjtTQUN6QyxDQUFDO0lBQ0osQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVELDBFQUEwRTtBQUMxRSxNQUFNLFVBQVUsVUFBVSxDQUFDLFNBQWlCO0lBQzFDLE1BQU0sUUFBUSxHQUFHLFNBQVM7U0FDdkIsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7U0FDbEIsT0FBTyxDQUFDLHVEQUF1RCxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBcUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoSCxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDNUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlcG9ydERlZmluaXRpb24gfSBmcm9tICcuLi9tb2RlbHMvcmVwb3J0LWRlZmluaXRpb24ubW9kZWwnO1xuaW1wb3J0IHsgUmVwb3J0RGF0YVNvdXJjZURlZmluaXRpb24gfSBmcm9tICcuLi9tb2RlbHMvcmVwb3J0LWRhdGFzb3VyY2UubW9kZWwnO1xuaW1wb3J0IHsgZ2V0RmllbGRDYXNlSW5zZW5zaXRpdmUgfSBmcm9tICcuL2RhdGEtbm9ybWFsaXphdGlvbi51dGlsJztcblxuZXhwb3J0IHR5cGUgUGFyYW1ldGVyTWFwcGluZ3MgPSBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPjtcblxuY29uc3QgVE9LRU5fUkUgPSAvXlxce1xce1xccyooLis/KVxccypcXH1cXH0kLztcblxuLyoqIFN1cHBvcnRlZCB3aXJlIGZvcm1hdHMgZm9yIGRhdGUtYm91bmQgcHJvY2VkdXJlL0FQSSBwYXJhbWV0ZXJzLiAqL1xuZXhwb3J0IGNvbnN0IFBBUkFNRVRFUl9EQVRFX0ZPUk1BVFMgPSBbJ3l5eXktTU0tZGQnLCAneXl5eU1NZGQnLCAnZGQvTU0veXl5eScsICdNTS9kZC95eXl5JywgJ2RkLU1NLXl5eXknXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFBhcmFtZXRlckRhdGVGb3JtYXQgPSB0eXBlb2YgUEFSQU1FVEVSX0RBVEVfRk9STUFUU1tudW1iZXJdO1xuXG4vKiogVGhlIG9wdGlvbmFsIGRhdGUgcGlwZSBpcyBwZXJzaXN0ZWQgaW4gZXhpc3Rpbmcgc3RyaW5nIG1hcHBpbmdzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUGFyYW1ldGVyVG9rZW4ocmF3OiBzdHJpbmcpOiB7IGZpZWxkOiBzdHJpbmc7IGRhdGVGb3JtYXQ/OiBQYXJhbWV0ZXJEYXRlRm9ybWF0IH0gfCBudWxsIHtcbiAgY29uc3QgbWF0Y2ggPSBUT0tFTl9SRS5leGVjKHJhdyk7XG4gIGlmICghbWF0Y2gpIHJldHVybiBudWxsO1xuICBjb25zdCBwYXJ0cyA9IG1hdGNoWzFdLnNwbGl0KC9cXHMqXFx8XFxzKmRhdGVcXHMqOlxccyovKTtcbiAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMSkgcmV0dXJuIHsgZmllbGQ6IHBhcnRzWzBdLnRyaW0oKSB9O1xuICBjb25zdCBmb3JtYXQgPSBwYXJ0c1sxXSBhcyBQYXJhbWV0ZXJEYXRlRm9ybWF0O1xuICByZXR1cm4geyBmaWVsZDogcGFydHNbMF0udHJpbSgpLCBkYXRlRm9ybWF0OiBwYXJ0cy5sZW5ndGggPT09IDIgPyBmb3JtYXQgOiBwYXJ0cy5zbGljZSgxKS5qb2luKCcgfCBkYXRlOicpIGFzIFBhcmFtZXRlckRhdGVGb3JtYXQgfTtcbn1cblxuLyoqIEZvcm1hdCBjYWxlbmRhciBwYXJ0cyBkaXJlY3RseSwgYXZvaWRpbmcgVVRDL3RpbWUtem9uZSBzaGlmdHMgYW5kIGxvY2FsZSBwYXJzaW5nLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFBhcmFtZXRlckRhdGUodmFsdWU6IHVua25vd24sIGZvcm1hdDogUGFyYW1ldGVyRGF0ZUZvcm1hdCk6IHN0cmluZyB7XG4gIGlmICghUEFSQU1FVEVSX0RBVEVfRk9STUFUUy5pbmNsdWRlcyhmb3JtYXQpKSB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHBhcmFtZXRlciBkYXRlIGZvcm1hdC4gQ2hvb3NlIGEgZGF0ZSBmb3JtYXQgaW4gdGhlIEZpZWxkIGJpbmRpbmcuJyk7XG4gIGlmICh2YWx1ZSA9PT0gJycgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuICcnO1xuICBjb25zdCByYXcgPSB2YWx1ZSBpbnN0YW5jZW9mIERhdGVcbiAgICA/IHZhbHVlLmdldEZ1bGxZZWFyKCkgKyAnLScgKyBTdHJpbmcodmFsdWUuZ2V0TW9udGgoKSArIDEpLnBhZFN0YXJ0KDIsICcwJykgKyAnLScgKyBTdHJpbmcodmFsdWUuZ2V0RGF0ZSgpKS5wYWRTdGFydCgyLCAnMCcpXG4gICAgOiBTdHJpbmcodmFsdWUpO1xuICBjb25zdCBtYXRjaCA9IC9eKFxcZHs0fSktPyhcXGR7Mn0pLT8oXFxkezJ9KSg/OlQuKik/JC8uZXhlYyhyYXcpO1xuICBpZiAoIW1hdGNoKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZGF0ZS4gU2VsZWN0IGEgdmFsaWQgZGF0ZSBpbiB0aGUgbGlua2VkIGZpZWxkLicpO1xuICBjb25zdCBbLCB5ZWFyLCBtb250aCwgZGF5XSA9IG1hdGNoO1xuICBjb25zdCBwcm9iZSA9IG5ldyBEYXRlKDApOyBwcm9iZS5zZXRGdWxsWWVhcigreWVhciwgK21vbnRoIC0gMSwgK2RheSk7IHByb2JlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICBpZiAocHJvYmUuZ2V0RnVsbFllYXIoKSAhPT0gK3llYXIgfHwgcHJvYmUuZ2V0TW9udGgoKSArIDEgIT09ICttb250aCB8fCBwcm9iZS5nZXREYXRlKCkgIT09ICtkYXkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZGF0ZS4gU2VsZWN0IGEgdmFsaWQgZGF0ZSBpbiB0aGUgbGlua2VkIGZpZWxkLicpO1xuICB9XG4gIHJldHVybiBmb3JtYXQucmVwbGFjZSgneXl5eScsIHllYXIpLnJlcGxhY2UoJ01NJywgbW9udGgpLnJlcGxhY2UoJ2RkJywgZGF5KTtcbn1cblxuY29uc3QgcGFkID0gKG46IG51bWJlcik6IHN0cmluZyA9PiBTdHJpbmcobikucGFkU3RhcnQoMiwgJzAnKTtcbmNvbnN0IGZvcm1hdFlNRCA9IChkOiBEYXRlKTogc3RyaW5nID0+IGAke2QuZ2V0RnVsbFllYXIoKX0tJHtwYWQoZC5nZXRNb250aCgpICsgMSl9LSR7cGFkKGQuZ2V0RGF0ZSgpKX1gO1xuXG4vKiogUmVzb2x2ZXMgYHt7Y29udGV4dC54eHh9fWAgcHJlc2V0cyBzdWNoIGFzIHRvZGF5IC8gc3RhcnRPZk1vbnRoLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVDb250ZXh0UHJlc2V0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgc3dpdGNoIChrZXkudG9Mb3dlckNhc2UoKSkge1xuICAgIGNhc2UgJ3llc3RlcmRheSc6IHtcbiAgICAgIGNvbnN0IHkgPSBuZXcgRGF0ZShub3cpO1xuICAgICAgeS5zZXREYXRlKHkuZ2V0RGF0ZSgpIC0gMSk7XG4gICAgICByZXR1cm4gZm9ybWF0WU1EKHkpO1xuICAgIH1cbiAgICBjYXNlICdzdGFydG9mbW9udGgnOlxuICAgICAgcmV0dXJuIGAke25vdy5nZXRGdWxsWWVhcigpfS0ke3BhZChub3cuZ2V0TW9udGgoKSArIDEpfS0wMWA7XG4gICAgY2FzZSAnZW5kb2Ztb250aCc6XG4gICAgICByZXR1cm4gZm9ybWF0WU1EKG5ldyBEYXRlKG5vdy5nZXRGdWxsWWVhcigpLCBub3cuZ2V0TW9udGgoKSArIDEsIDApKTtcbiAgICBjYXNlICdzdGFydG9meWVhcic6XG4gICAgICByZXR1cm4gYCR7bm93LmdldEZ1bGxZZWFyKCl9LTAxLTAxYDtcbiAgICBjYXNlICd0b2RheSc6XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmb3JtYXRZTUQobm93KTtcbiAgfVxufVxuXG4vKipcbiAqIExvb2tzIHVwIGEgZmllbGQgdmFsdWUgZnJvbSBmb3JtVmFsdWVzIHN1cHBvcnRpbmcgZGlyZWN0IG5hbWVzLCBkb3QgcGF0aHMgKGEuYiksXG4gKiBhbmQgY29tcG91bmQgZGF0ZSByYW5nZXMgKGUuZy4gZGF0ZVJhbmdlLmZyb20sIGRhdGVSYW5nZV9mcm9tLCBkYXRlUmFuZ2VGcm9tKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVDYW52YXNGaWVsZFZhbHVlKFxuICBmb3JtVmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgaW5uZXI6IHN0cmluZ1xuKTogdW5rbm93biB7XG4gIC8vIDEuIERpcmVjdCBjYXNlLWluc2Vuc2l0aXZlIGxvb2t1cFxuICBjb25zdCBkaXJlY3QgPSBnZXRGaWVsZENhc2VJbnNlbnNpdGl2ZShmb3JtVmFsdWVzLCBpbm5lcik7XG4gIGlmIChkaXJlY3QgIT09IHVuZGVmaW5lZCAmJiBkaXJlY3QgIT09IG51bGwpIHtcbiAgICByZXR1cm4gZGlyZWN0O1xuICB9XG5cbiAgLy8gMi4gRG90LXBhdGggbG9va3VwIChlLmcuIGRhdGVSYW5nZS5mcm9tIG9yIHVzZXIuYWRkcmVzcy5jaXR5KVxuICBpZiAoaW5uZXIuaW5jbHVkZXMoJy4nKSkge1xuICAgIGNvbnN0IHBhcnRzID0gaW5uZXIuc3BsaXQoJy4nKTtcbiAgICBsZXQgY3VycjogdW5rbm93biA9IGZvcm1WYWx1ZXM7XG4gICAgZm9yIChjb25zdCBwIG9mIHBhcnRzKSB7XG4gICAgICBpZiAoY3VyciAmJiB0eXBlb2YgY3VyciA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgY3VyciA9IGdldEZpZWxkQ2FzZUluc2Vuc2l0aXZlKGN1cnIgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3VyciA9IHVuZGVmaW5lZDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChjdXJyICE9PSB1bmRlZmluZWQgJiYgY3VyciAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGN1cnI7XG4gICAgfVxuICB9XG5cbiAgLy8gMy4gQ29tcG91bmQgZGF0ZSByYW5nZSBtYXRjaGluZyAoZS5nLiBkYXRlUmFuZ2VfZnJvbSwgZGF0ZVJhbmdlRnJvbSwgZnJvbURhdGUsIHRvRGF0ZSlcbiAgY29uc3QgbG93ZXJJbm5lciA9IGlubmVyLnRvTG93ZXJDYXNlKCk7XG4gIGNvbnN0IGlzRnJvbSA9XG4gICAgbG93ZXJJbm5lci5lbmRzV2l0aCgnX2Zyb20nKSB8fFxuICAgIGxvd2VySW5uZXIuZW5kc1dpdGgoJ2Zyb20nKSB8fFxuICAgIGxvd2VySW5uZXIuc3RhcnRzV2l0aCgnZnJvbScpIHx8XG4gICAgbG93ZXJJbm5lci5zdGFydHNXaXRoKCdmcm9tXycpO1xuXG4gIGNvbnN0IGlzVG8gPVxuICAgICFpc0Zyb20gJiZcbiAgICAobG93ZXJJbm5lci5lbmRzV2l0aCgnX3RvJykgfHxcbiAgICAgIGxvd2VySW5uZXIuZW5kc1dpdGgoJ3RvJykgfHxcbiAgICAgIGxvd2VySW5uZXIuc3RhcnRzV2l0aCgndG8nKSB8fFxuICAgICAgbG93ZXJJbm5lci5zdGFydHNXaXRoKCd0b18nKSk7XG5cbiAgaWYgKGlzRnJvbSB8fCBpc1RvKSB7XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWxdIG9mIE9iamVjdC5lbnRyaWVzKGZvcm1WYWx1ZXMpKSB7XG4gICAgICBpZiAodmFsICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnICYmICdmcm9tJyBpbiAodmFsIGFzIGFueSkgJiYgJ3RvJyBpbiAodmFsIGFzIGFueSkpIHtcbiAgICAgICAgY29uc3QgcmFuZ2VPYmogPSB2YWwgYXMgeyBmcm9tOiB1bmtub3duOyB0bzogdW5rbm93biB9O1xuICAgICAgICBjb25zdCBjbGVhbklubmVyID0gbG93ZXJJbm5lclxuICAgICAgICAgIC5yZXBsYWNlKC9eZnJvbV8/fF50b18/fF9mcm9tJHxfdG8kfGZyb20kfHRvJC8sICcnKVxuICAgICAgICAgIC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAoY2xlYW5Jbm5lciA9PT0gJycgfHwga2V5LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoY2xlYW5Jbm5lcikgfHwgY2xlYW5Jbm5lci5pbmNsdWRlcyhrZXkudG9Mb3dlckNhc2UoKSkpIHtcbiAgICAgICAgICByZXR1cm4gaXNGcm9tID8gcmFuZ2VPYmouZnJvbSA6IHJhbmdlT2JqLnRvO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBTYW5pdGl6ZXMgVC1TUUwgcGFyYW1ldGVyIGxpdGVyYWxzIGNvcGllZCBmcm9tIFNTTVMsIHByb2ZpbGVycywgb3IgU1FMIHNjcmlwdHM6XG4gKiAtIFN0cmlwcyBvdXRlciBkb3VibGUgcXVvdGVzOiBcIi4uLlwiXG4gKiAtIFN0cmlwcyBvdXRlciBULVNRTCBxdW90ZXM6IE4nLi4uJyBvciAnLi4uJ1xuICogLSBVbmVzY2FwZXMgZG91YmxlZCBzaW5nbGUgcXVvdGVzOiAnJyAtPiAnXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzYW5pdGl6ZVNxbFBhcmFtTGl0ZXJhbCh2YWw6IHVua25vd24pOiB1bmtub3duIHtcbiAgaWYgKHR5cGVvZiB2YWwgIT09ICdzdHJpbmcnKSByZXR1cm4gdmFsO1xuICBsZXQgcyA9IHZhbC50cmltKCk7XG4gIGlmIChzLnN0YXJ0c1dpdGgoJ1wiJykgJiYgcy5lbmRzV2l0aCgnXCInKSAmJiBzLmxlbmd0aCA+PSAyKSB7XG4gICAgcyA9IHMuc3Vic3RyaW5nKDEsIHMubGVuZ3RoIC0gMSkudHJpbSgpO1xuICB9XG4gIGNvbnN0IGlzUXVvdGVkU3FsTGl0ZXJhbCA9XG4gICAgKChzLnN0YXJ0c1dpdGgoXCJOJ1wiKSB8fCBzLnN0YXJ0c1dpdGgoXCJuJ1wiKSkgJiYgcy5lbmRzV2l0aChcIidcIikgJiYgcy5sZW5ndGggPj0gMykgfHxcbiAgICAocy5zdGFydHNXaXRoKFwiJ1wiKSAmJiBzLmVuZHNXaXRoKFwiJ1wiKSAmJiBzLmxlbmd0aCA+PSAyKTtcblxuICBpZiAoaXNRdW90ZWRTcWxMaXRlcmFsKSB7XG4gICAgY29uc3QgcHJlZml4TGVuID0gKHMuc3RhcnRzV2l0aChcIk4nXCIpIHx8IHMuc3RhcnRzV2l0aChcIm4nXCIpKSA/IDIgOiAxO1xuICAgIHMgPSBzLnN1YnN0cmluZyhwcmVmaXhMZW4sIHMubGVuZ3RoIC0gMSk7XG4gICAgaWYgKHMuaW5jbHVkZXMoXCInJ1wiKSkge1xuICAgICAgcyA9IHMucmVwbGFjZSgvJycvZywgXCInXCIpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChzLmluY2x1ZGVzKFwiJycgJydcIikgfHwgcy5pbmNsdWRlcyhcIicnJydcIikgfHwgLycnW2EtekEtWjAtOV9cXHN8LV0rJycvLnRlc3QocykpIHtcbiAgICBzID0gcy5yZXBsYWNlKC8nJy9nLCBcIidcIik7XG4gIH1cbiAgcmV0dXJuIHM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VkU3FsRXhlYyB7XG4gIHByb2NlZHVyZU5hbWU/OiBzdHJpbmc7XG4gIHBhcmFtZXRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+O1xufVxuXG4vKipcbiAqIFBhcnNlcyBhbiBTU01TIC8gVC1TUUwgRVhFQyBzdGF0ZW1lbnQgc3VjaCBhczpcbiAqIGV4ZWMgR2V0X0hlbHBMaXN0IEBjaHJDT01QQU5ZSUQ9TicxMDEnLEBjaHJUYWJsZU5hbWU9TidNU1RBQ0NUR0xTVUInLEBpbnRFeGVjRmxhZz0xXG4gKiBFeHRyYWN0cyBwcm9jZWR1cmUgbmFtZSBhbmQgdW5lc2NhcGVzIHBhcmFtZXRlciB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVNxbEV4ZWNTdGF0ZW1lbnQoc3FsOiBzdHJpbmcpOiBQYXJzZWRTcWxFeGVjIHwgbnVsbCB7XG4gIGlmICghc3FsIHx8IHR5cGVvZiBzcWwgIT09ICdzdHJpbmcnKSByZXR1cm4gbnVsbDtcbiAgY29uc3QgdHJpbW1lZCA9IHNxbC50cmltKCk7XG4gIGNvbnN0IGV4ZWNNYXRjaCA9IHRyaW1tZWQubWF0Y2goL14oPzpleGVjKD86dXRlKT9cXHMrKSg/Oig/OlxcWz9bXFx3XStcXF0/XFwuKT9cXFs/KFtcXHddKylcXF0/KVxccyooLiopJC9pcyk7XG4gIGlmICghZXhlY01hdGNoICYmICF0cmltbWVkLnN0YXJ0c1dpdGgoJ0AnKSkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgcHJvY2VkdXJlTmFtZSA9IGV4ZWNNYXRjaCA/IGV4ZWNNYXRjaFsxXSA6IHVuZGVmaW5lZDtcbiAgY29uc3QgcGFyYW1QYXJ0ID0gZXhlY01hdGNoID8gZXhlY01hdGNoWzJdIDogdHJpbW1lZDtcblxuICBjb25zdCBwYXJhbWV0ZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPiA9IHt9O1xuICBpZiAoIXBhcmFtUGFydCkgcmV0dXJuIHsgcHJvY2VkdXJlTmFtZSwgcGFyYW1ldGVycyB9O1xuXG4gIGxldCBpID0gMDtcbiAgY29uc3QgbGVuID0gcGFyYW1QYXJ0Lmxlbmd0aDtcblxuICB3aGlsZSAoaSA8IGxlbikge1xuICAgIHdoaWxlIChpIDwgbGVuICYmIChwYXJhbVBhcnRbaV0gPT09ICcgJyB8fCBwYXJhbVBhcnRbaV0gPT09ICdcXHQnIHx8IHBhcmFtUGFydFtpXSA9PT0gJ1xccicgfHwgcGFyYW1QYXJ0W2ldID09PSAnXFxuJyB8fCBwYXJhbVBhcnRbaV0gPT09ICcsJykpIHtcbiAgICAgIGkrKztcbiAgICB9XG4gICAgaWYgKGkgPj0gbGVuKSBicmVhaztcblxuICAgIGlmIChwYXJhbVBhcnRbaV0gIT09ICdAJykge1xuICAgICAgaSsrO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3Qga2V5U3RhcnQgPSBpO1xuICAgIHdoaWxlIChpIDwgbGVuICYmIHBhcmFtUGFydFtpXSAhPT0gJz0nICYmIHBhcmFtUGFydFtpXSAhPT0gJyAnICYmIHBhcmFtUGFydFtpXSAhPT0gJ1xcdCcpIHtcbiAgICAgIGkrKztcbiAgICB9XG4gICAgY29uc3QgcGFyYW1LZXkgPSBwYXJhbVBhcnQuc2xpY2Uoa2V5U3RhcnQsIGkpLnRyaW0oKTtcblxuICAgIHdoaWxlIChpIDwgbGVuICYmIChwYXJhbVBhcnRbaV0gPT09ICcgJyB8fCBwYXJhbVBhcnRbaV0gPT09ICdcXHQnIHx8IHBhcmFtUGFydFtpXSA9PT0gJz0nKSkge1xuICAgICAgaSsrO1xuICAgIH1cblxuICAgIGxldCB2YWxTdHIgPSAnJztcbiAgICBpZiAoaSA8IGxlbiAmJiAocGFyYW1QYXJ0W2ldID09PSBcIidcIiB8fCAocGFyYW1QYXJ0W2ldID09PSAnTicgJiYgcGFyYW1QYXJ0W2kgKyAxXSA9PT0gXCInXCIpIHx8IChwYXJhbVBhcnRbaV0gPT09ICduJyAmJiBwYXJhbVBhcnRbaSArIDFdID09PSBcIidcIikpKSB7XG4gICAgICBjb25zdCBpc04gPSBwYXJhbVBhcnRbaV0gPT09ICdOJyB8fCBwYXJhbVBhcnRbaV0gPT09ICduJztcbiAgICAgIGkgKz0gaXNOID8gMiA6IDE7XG4gICAgICBsZXQgaW5RdW90ZSA9IHRydWU7XG4gICAgICBsZXQgcXVvdGVWYWwgPSAnJztcbiAgICAgIHdoaWxlIChpIDwgbGVuICYmIGluUXVvdGUpIHtcbiAgICAgICAgaWYgKHBhcmFtUGFydFtpXSA9PT0gXCInXCIpIHtcbiAgICAgICAgICBpZiAoaSArIDEgPCBsZW4gJiYgcGFyYW1QYXJ0W2kgKyAxXSA9PT0gXCInXCIpIHtcbiAgICAgICAgICAgIHF1b3RlVmFsICs9IFwiJ1wiO1xuICAgICAgICAgICAgaSArPSAyO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpblF1b3RlID0gZmFsc2U7XG4gICAgICAgICAgICBpKys7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHF1b3RlVmFsICs9IHBhcmFtUGFydFtpXTtcbiAgICAgICAgICBpKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHZhbFN0ciA9IHF1b3RlVmFsO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB2YWxTdGFydCA9IGk7XG4gICAgICB3aGlsZSAoaSA8IGxlbiAmJiBwYXJhbVBhcnRbaV0gIT09ICcsJyAmJiBwYXJhbVBhcnRbaV0gIT09ICdcXHInICYmIHBhcmFtUGFydFtpXSAhPT0gJ1xcbicpIHtcbiAgICAgICAgaSsrO1xuICAgICAgfVxuICAgICAgdmFsU3RyID0gcGFyYW1QYXJ0LnNsaWNlKHZhbFN0YXJ0LCBpKS50cmltKCk7XG4gICAgfVxuXG4gICAgY29uc3QgY2xlYW5LZXkgPSBwYXJhbUtleS5yZXBsYWNlKC9eQC8sICcnKTtcbiAgICBpZiAoY2xlYW5LZXkpIHtcbiAgICAgIGlmICgvXi0/XFxkKyQvLnRlc3QodmFsU3RyKSkge1xuICAgICAgICBwYXJhbWV0ZXJzW3BhcmFtS2V5XSA9IHBhcnNlSW50KHZhbFN0ciwgMTApO1xuICAgICAgfSBlbHNlIGlmICgvXi0/XFxkK1xcLlxcZCskLy50ZXN0KHZhbFN0cikpIHtcbiAgICAgICAgcGFyYW1ldGVyc1twYXJhbUtleV0gPSBwYXJzZUZsb2F0KHZhbFN0cik7XG4gICAgICB9IGVsc2UgaWYgKHZhbFN0ci50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZScpIHtcbiAgICAgICAgcGFyYW1ldGVyc1twYXJhbUtleV0gPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmICh2YWxTdHIudG9Mb3dlckNhc2UoKSA9PT0gJ2ZhbHNlJykge1xuICAgICAgICBwYXJhbWV0ZXJzW3BhcmFtS2V5XSA9IGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFyYW1ldGVyc1twYXJhbUtleV0gPSB2YWxTdHI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHsgcHJvY2VkdXJlTmFtZSwgcGFyYW1ldGVycyB9O1xufVxuXG4vKipcbiAqIFJlc29sdmVzIG9uZSByYXcgbWFwcGluZyB2YWx1ZSBhZ2FpbnN0IHNlc3Npb24gKyBjYW52YXMgZm9ybSB2YWx1ZXMuXG4gKiAtIGB7e3Nlc3Npb24uYnJhbmNoSWR9fWAgIC0+IHNlc3Npb24gdmFsdWUgKGNhc2UtaW5zZW5zaXRpdmUpXG4gKiAtIGB7e2NvbnRleHQudG9kYXl9fWAgICAgIC0+IGNvbXB1dGVkIGRhdGVcbiAqIC0gYHt7ZnJvbURhdGV9fWAgICAgICAgICAgLT4gdmFsdWUgb2YgY2FudmFzIGZpZWxkIHdpdGgga2V5IGBmcm9tRGF0ZWAgKGNhc2UtaW5zZW5zaXRpdmUpXG4gKiAtIGB7e2RhdGVSYW5nZS5mcm9tfX1gICAgIC0+IHZhbHVlIG9mIG5lc3RlZCBmcm9tIHByb3BlcnR5XG4gKiAtIGFueXRoaW5nIGVsc2UgICAgICAgICAgIC0+IHNhbml0aXplZCBsaXRlcmFsIHZhbHVlIChmaXhlZCB2YWx1ZSlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVQYXJhbWV0ZXJWYWx1ZShcbiAgcmF3OiB1bmtub3duLFxuICBzZXNzaW9uOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgZm9ybVZhbHVlczogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbik6IHVua25vd24ge1xuICBpZiAodHlwZW9mIHJhdyAhPT0gJ3N0cmluZycpIHJldHVybiByYXc7XG4gIGNvbnN0IHRva2VuID0gcGFyc2VQYXJhbWV0ZXJUb2tlbihyYXcpO1xuICBpZiAoIXRva2VuKSByZXR1cm4gc2FuaXRpemVTcWxQYXJhbUxpdGVyYWwocmF3KTtcbiAgY29uc3QgaW5uZXIgPSB0b2tlbi5maWVsZDtcbiAgY29uc3QgZm9ybWF0ID0gKHZhbHVlOiB1bmtub3duKSA9PiB0b2tlbi5kYXRlRm9ybWF0ID8gZm9ybWF0UGFyYW1ldGVyRGF0ZSh2YWx1ZSwgdG9rZW4uZGF0ZUZvcm1hdCkgOiB2YWx1ZTtcbiAgaWYgKGlubmVyLnN0YXJ0c1dpdGgoJ3Nlc3Npb24uJykpIHtcbiAgICBjb25zdCBzZXNzaW9uS2V5ID0gaW5uZXIuc2xpY2UoOCk7XG4gICAgY29uc3QgdmFsID0gZ2V0RmllbGRDYXNlSW5zZW5zaXRpdmUoc2Vzc2lvbiwgc2Vzc2lvbktleSk7XG4gICAgcmV0dXJuIGZvcm1hdCh2YWwgIT09IHVuZGVmaW5lZCAmJiB2YWwgIT09IG51bGwgPyB2YWwgOiAnJyk7XG4gIH1cbiAgaWYgKGlubmVyLnN0YXJ0c1dpdGgoJ2NvbnRleHQuJykpIHtcbiAgICByZXR1cm4gZm9ybWF0KHJlc29sdmVDb250ZXh0UHJlc2V0KGlubmVyLnNsaWNlKDgpKSk7XG4gIH1cbiAgY29uc3QgdiA9IHJlc29sdmVDYW52YXNGaWVsZFZhbHVlKGZvcm1WYWx1ZXMsIGlubmVyKTtcbiAgcmV0dXJuIGZvcm1hdCh2ICE9PSB1bmRlZmluZWQgJiYgdiAhPT0gbnVsbCA/IHYgOiAnJyk7XG59XG5cbi8qKiBSZXBsYWNlIGEgc2luZ2xlIG1hcHBpbmcgYW5kIHJlbW92ZSBhbGwgc3RhbGUgYWxpYXNlcyBmb3IgdGhlIHNhbWUgYXJndW1lbnQuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0UGFyYW1ldGVyTWFwcGluZyhtYXBwaW5nczogUGFyYW1ldGVyTWFwcGluZ3MgfCB1bmRlZmluZWQsIG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4pOiBQYXJhbWV0ZXJNYXBwaW5ncyB7XG4gIGNvbnN0IGtleSA9IG5hbWUucmVwbGFjZSgvXkArLywgJycpO1xuICBpZiAoIWtleSkgdGhyb3cgbmV3IEVycm9yKCdBIHBhcmFtZXRlciBuYW1lIGNhbm5vdCBiZSBlbXB0eS4nKTtcbiAgY29uc3QgZW50cmllcyA9IE9iamVjdC5lbnRyaWVzKG1hcHBpbmdzID8/IHt9KS5maWx0ZXIoKFtleGlzdGluZ10pID0+IGV4aXN0aW5nLnJlcGxhY2UoL15AKy8sICcnKS50b0xvd2VyQ2FzZSgpICE9PSBrZXkudG9Mb3dlckNhc2UoKSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoWy4uLmVudHJpZXMsIFtrZXksIHZhbHVlXV0pO1xufVxuXG4vKiogQ2Fub25pY2FsIFNRTCBhcmd1bWVudCBuYW1lcy4gRXF1YWwgYWxpYXNlcyBjb2xsYXBzZTsgY29uZmxpY3RpbmcgdmFsdWVzIGZhaWwgZXhwbGljaXRseS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVQYXJhbWV0ZXJOYW1lcyhwYXJhbWV0ZXJzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgY29uc3Qgb3V0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICBjb25zdCBuYW1lcyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gIGZvciAoY29uc3QgW3Jhd0tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHBhcmFtZXRlcnMpKSB7XG4gICAgY29uc3Qga2V5ID0gcmF3S2V5LnJlcGxhY2UoL15AKy8sICcnKTtcbiAgICBpZiAoIWtleSkgdGhyb3cgbmV3IEVycm9yKCdBIHBhcmFtZXRlciBuYW1lIGNhbm5vdCBiZSBlbXB0eS4nKTtcbiAgICBjb25zdCBleGlzdGluZyA9IG5hbWVzLmdldChrZXkudG9Mb3dlckNhc2UoKSk7XG4gICAgaWYgKGV4aXN0aW5nICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICghT2JqZWN0LmlzKG91dFtleGlzdGluZ10sIHZhbHVlKSAmJiBKU09OLnN0cmluZ2lmeShvdXRbZXhpc3RpbmddKSAhPT0gSlNPTi5zdHJpbmdpZnkodmFsdWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ29uZmxpY3RpbmcgdmFsdWVzIGZvciBwYXJhbWV0ZXIgXCInICsgZXhpc3RpbmcgKyAnXCIuIEtlZXAgb25lIG1hcHBpbmcgZm9yIHRoaXMgcGFyYW1ldGVyLicpO1xuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIG5hbWVzLnNldChrZXkudG9Mb3dlckNhc2UoKSwga2V5KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob3V0LCBrZXksIHsgdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cblxuLyoqIFJlc29sdmVzIG1hcHBpbmdzIGludG8gb25lIGNvbmNyZXRlIHZhbHVlIHBlciBwYXJhbWV0ZXIsIHdpdGhvdXQgQCBhbGlhc2VzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVQYXJhbWV0ZXJNYXBwaW5ncyhcbiAgbWFwcGluZ3M6IFBhcmFtZXRlck1hcHBpbmdzIHwgdW5kZWZpbmVkLFxuICBzZXNzaW9uOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgZm9ybVZhbHVlczogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgY29uc3Qgb3V0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICBmb3IgKGNvbnN0IFtrZXksIHJhd10gb2YgT2JqZWN0LmVudHJpZXMobWFwcGluZ3MgPz8ge30pKSB7XG4gICAgY29uc3QgdG9rZW4gPSB0eXBlb2YgcmF3ID09PSAnc3RyaW5nJyA/IHBhcnNlUGFyYW1ldGVyVG9rZW4ocmF3KSA6IG51bGw7XG4gICAgLy8gQW4gdW5hdmFpbGFibGUgc2Vzc2lvbiBpcyBub3QgYW4gZW1wdHkgU1FMIGFyZ3VtZW50LiBQcmVzZXJ2ZSBleHBsaWNpdCAwL2ZhbHNlIHZhbHVlcy5cbiAgICBpZiAodG9rZW4/LmZpZWxkLnN0YXJ0c1dpdGgoJ3Nlc3Npb24uJykgJiYgZ2V0RmllbGRDYXNlSW5zZW5zaXRpdmUoc2Vzc2lvbiwgdG9rZW4uZmllbGQuc2xpY2UoOCkpID09IG51bGwpIGNvbnRpbnVlO1xuICAgIGNvbnN0IHZhbCA9IHJlc29sdmVQYXJhbWV0ZXJWYWx1ZShyYXcsIHNlc3Npb24sIGZvcm1WYWx1ZXMpO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvdXQsIGtleSwgeyB2YWx1ZTogdmFsLCBlbnVtZXJhYmxlOiB0cnVlIH0pO1xuICB9XG4gIHJldHVybiBub3JtYWxpemVQYXJhbWV0ZXJOYW1lcyhvdXQpO1xufVxuXG4vKipcbiAqIFJldHVybnMgY2FudmFzIGZpZWxkIGtleXMgcmVmZXJlbmNlZCBieSBtYXBwaW5ncyB0aGF0IGN1cnJlbnRseSBoYXZlIG5vIHZhbHVlLlxuICogU2Vzc2lvbiAvIGNvbnRleHQgLyBmaXhlZCB2YWx1ZXMgbmV2ZXIgYmxvY2sgZXhlY3V0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZE1pc3NpbmdDYW52YXNGaWVsZHMoXG4gIG1hcHBpbmdzOiBQYXJhbWV0ZXJNYXBwaW5ncyB8IHVuZGVmaW5lZCxcbiAgZm9ybVZhbHVlczogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbik6IHN0cmluZ1tdIHtcbiAgY29uc3QgbWlzc2luZyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBmb3IgKGNvbnN0IHJhdyBvZiBPYmplY3QudmFsdWVzKG1hcHBpbmdzID8/IHt9KSkge1xuICAgIGlmICh0eXBlb2YgcmF3ICE9PSAnc3RyaW5nJykgY29udGludWU7XG4gICAgY29uc3QgdG9rZW4gPSBwYXJzZVBhcmFtZXRlclRva2VuKHJhdyk7XG4gICAgaWYgKCF0b2tlbikgY29udGludWU7XG4gICAgY29uc3QgaW5uZXIgPSB0b2tlbi5maWVsZDtcbiAgICBpZiAoaW5uZXIuc3RhcnRzV2l0aCgnc2Vzc2lvbi4nKSB8fCBpbm5lci5zdGFydHNXaXRoKCdjb250ZXh0LicpKSBjb250aW51ZTtcbiAgICBjb25zdCB2ID0gcmVzb2x2ZUNhbnZhc0ZpZWxkVmFsdWUoZm9ybVZhbHVlcywgaW5uZXIpO1xuICAgIGlmICh2ID09PSB1bmRlZmluZWQgfHwgdiA9PT0gbnVsbCB8fCAodHlwZW9mIHYgPT09ICdzdHJpbmcnICYmIHYudHJpbSgpID09PSAnJykpIHtcbiAgICAgIG1pc3NpbmcuYWRkKGlubmVyKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2ID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2KSAmJiAnZnJvbScgaW4gKHYgYXMgYW55KSkge1xuICAgICAgY29uc3QgciA9IHYgYXMgeyBmcm9tPzogc3RyaW5nOyB0bz86IHN0cmluZyB9O1xuICAgICAgaWYgKCFyLmZyb20gJiYgIXIudG8pIHtcbiAgICAgICAgbWlzc2luZy5hZGQoaW5uZXIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gWy4uLm1pc3NpbmddO1xufVxuXG4vKipcbiAqIFBpY2tzIHRoZSBkYXRhIHNvdXJjZSB0aGUgcmVzdWx0IGdyaWQgc2hvdWxkIHJ1bjpcbiAqIDEuIHRoZSBvbmUgcmVmZXJlbmNlZCBieSBgZ3JpZC5kYXRhU291cmNlSWRgXG4gKiAyLiBvdGhlcndpc2UgdGhlIGZpcnN0IGRlY2xhcmVkIGRhdGEgc291cmNlXG4gKiAzLiBvdGhlcndpc2UgYSBwcm9jZWR1cmUvdGFibGUgYm91bmQgdG8gYSBjb21wb25lbnQgKGxlZ2FjeSByZXBvcnRzKVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUV4ZWN1dGlvbkRhdGFTb3VyY2UoZGVmOiBSZXBvcnREZWZpbml0aW9uKTogUmVwb3J0RGF0YVNvdXJjZURlZmluaXRpb24gfCBudWxsIHtcbiAgY29uc3Qgc291cmNlcyA9IGRlZi5kYXRhU291cmNlcyA/PyBbXTtcbiAgY29uc3QgYnlJZCA9IHNvdXJjZXMuZmluZCgoZCkgPT4gZC5pZCA9PT0gZGVmLmdyaWQ/LmRhdGFTb3VyY2VJZCB8fCBkLm5hbWUgPT09IGRlZi5ncmlkPy5kYXRhU291cmNlSWQpO1xuICBpZiAoYnlJZCkgcmV0dXJuIGJ5SWQ7XG4gIGlmIChzb3VyY2VzLmxlbmd0aCA+IDApIHJldHVybiBzb3VyY2VzWzBdO1xuXG4gIGNvbnN0IGNvbXAgPSBkZWYuY29tcG9uZW50cy5maW5kKChjKSA9PiBjLmRhdGFTb3VyY2U/LmVudGl0eU5hbWUpO1xuICBjb25zdCBjZHMgPSBjb21wPy5kYXRhU291cmNlO1xuICBpZiAoY2RzPy5lbnRpdHlOYW1lKSB7XG4gICAgY29uc3QgaXNUYWJsZSA9IGNkcy5zb3VyY2VUeXBlID09PSAndGFibGUnO1xuICAgIHJldHVybiB7XG4gICAgICBpZDogYHNwLSR7Y2RzLmVudGl0eU5hbWV9YCxcbiAgICAgIG5hbWU6IGNkcy5lbnRpdHlOYW1lLFxuICAgICAgZW5kcG9pbnQ6IGNkcy5lbnRpdHlOYW1lLFxuICAgICAgc2NoZW1hOiBjZHMuc2NoZW1hIHx8ICdkYm8nLFxuICAgICAgdHlwZTogaXNUYWJsZSA/ICd0YWJsZScgOiAnc3RvcmVkX3Byb2NlZHVyZScsXG4gICAgICBtZXRob2Q6IGlzVGFibGUgPyAnR0VUJyA6ICdTVE9SRURfUFJPQ0VEVVJFJyxcbiAgICAgIHBhcmFtZXRlck1hcHBpbmdzOiBjZHMucGFyYW1ldGVyTWFwcGluZ3MsXG4gICAgfTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqIFN0cmlwcyBTUUwgU2VydmVyIEh1bmdhcmlhbiBwcmVmaXhlczogYEBjaHJGcm9tRGF0ZWAgLT4gYGZyb21EYXRlYC4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0ZpZWxkS2V5KHBhcmFtTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgc3RyaXBwZWQgPSBwYXJhbU5hbWVcbiAgICAucmVwbGFjZSgvXkArLywgJycpXG4gICAgLnJlcGxhY2UoL14oY2hyfGludHx2Y2hyfG5jaHJ8ZHR8c3RyfG51bXxiaXR8ZGVjfGZsdCkoPz1bQS1aX10pLywgJycpO1xuICBjb25zdCBjbGVhbiA9IHN0cmlwcGVkLnJlcGxhY2UoL1teYS16QS1aMC05XSsoLik/L2csIChfbSwgYzogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PiAoYyA/IGMudG9VcHBlckNhc2UoKSA6ICcnKSk7XG4gIHJldHVybiBjbGVhbiA/IGNsZWFuLmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpICsgY2xlYW4uc2xpY2UoMSkgOiBwYXJhbU5hbWU7XG59XG4iXX0=
@@ -1,4 +1,4 @@
1
- import { resolveParameterMappings } from '../../core/utils/report-parameter.util';
1
+ import { normalizeParameterNames, resolveParameterMappings } from '../../core/utils/report-parameter.util';
2
2
  /**
3
3
  * Endpoint-based data source adapter.
4
4
  *
@@ -43,6 +43,14 @@ export class EndpointDataSourceAdapter extends ReportDataSourceAdapter {
43
43
  headers = headers.set('X-Branch-Id', String(session['branchId']));
44
44
  }
45
45
  const kind = this.resolveKind(dataSource);
46
+ if (kind === 'procedure') {
47
+ try {
48
+ parameters = normalizeParameterNames(parameters);
49
+ }
50
+ catch (error) {
51
+ return throwError(() => error);
52
+ }
53
+ }
46
54
  const payload = {
47
55
  kind,
48
56
  name: dataSource.endpoint || dataSource.name,
@@ -96,4 +104,4 @@ export class EndpointDataSourceAdapter extends ReportDataSourceAdapter {
96
104
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EndpointDataSourceAdapter, decorators: [{
97
105
  type: Injectable
98
106
  }] });
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5kcG9pbnQtZGF0YXNvdXJjZS5hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYndheXMtcmVwb3J0L3NyYy9saWIvZGF0YS1hY2Nlc3MvYWRhcHRlcnMvZW5kcG9pbnQtZGF0YXNvdXJjZS5hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ2xGOzs7OztHQUtHO0FBRUgsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFNUUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDakcsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDN0YsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQWUzRCxNQUFNLE9BQU8seUJBQTBCLFNBQVEsdUJBQXVCO0lBQ25ELElBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDMUIsU0FBUyxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQzNDLGNBQWMsR0FBRyxNQUFNLENBQUMsMkJBQTJCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN6RSxtQkFBbUIsR0FBRyxNQUFN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QztJQUNqQixDQUFDO0lBRU8sV0FBVyxDQUFDLEVBQThCO1FBQ2hELElBQUksRUFBRSxDQUFDLElBQUksS0FBSyxLQUFLO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDbkMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDakQsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDdkUsSUFBSSxFQUFFLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxFQUFFLENBQUMsSUFBSSxLQUFLLE1BQU0sSUFBSSxFQUFFLENBQUMsSUFBSSxLQUFLLGtCQUFrQixJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN0RyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7d0dBcEZVLHlCQUF5Qjs0R0FBekIseUJBQXlCOzs0RkFBekIseUJBQXlCO2tCQURyQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVzb2x2ZVBhcmFtZXRlck1hcHBpbmdzIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscy9yZXBvcnQtcGFyYW1ldGVyLnV0aWwnO1xuLyoqXG4gKiBFbmRwb2ludC1iYXNlZCBkYXRhIHNvdXJjZSBhZGFwdGVyLlxuICpcbiAqIENhbGxzIHRoZSBgZXhlY3V0ZUVuZHBvaW50YCBkaXJlY3RseSB3aXRoIGEgbm9ybWFsaXplZCBwYXlsb2FkLlxuICogUmVwbGFjZXMgdGhlIGBhcGlCYXNlVXJsICsgL2V4ZWN1dGVgIHBhdHRlcm4uXG4gKi9cblxuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFJlcG9ydERhdGFTb3VyY2VBZGFwdGVyIH0gZnJvbSAnLi4vY29udHJhY3RzL2RhdGEtc291cmNlLmNvbnRyYWN0JztcbmltcG9ydCB7IFJlcG9ydERhdGFTb3VyY2VEZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMvcmVwb3J0LWRhdGFzb3VyY2UubW9kZWwnO1xuaW1wb3J0IHsgUmVwb3J0U2Vzc2lvbkNvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9yZXBvcnQtc2Vzc2lvbi1jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVwb3J0QXBpRXhlY3V0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvcmVwb3J0LWFwaS1leGVjdXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBleHRyYWN0Um93QXJyYXkgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzL2RhdGEtbm9ybWFsaXphdGlvbi51dGlsJztcbmltcG9ydCB7IEJXQVlTX1JFUE9SVF9FTkRQT0lOVFMgfSBmcm9tICcuL2VuZHBvaW50LXRva2Vucyc7XG5cbi8qKlxuICogUmVxdWVzdCBwYXlsb2FkIGZvciB0aGUgc2ltcGxpZmllZCBleGVjdXRlIGVuZHBvaW50LlxuICovXG5pbnRlcmZhY2UgRW5kcG9pbnRFeGVjdXRlUGF5bG9hZCB7XG4gIGtpbmQ6ICdwcm9jZWR1cmUnIHwgJ3RhYmxlJztcbiAgbmFtZTogc3RyaW5nO1xuICBzY2hlbWE6IHN0cmluZztcbiAgcGFyYW1ldGVyczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGNvbHVtbnM/OiBzdHJpbmdbXTtcbiAgdG9wPzogbnVtYmVyO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRW5kcG9pbnREYXRhU291cmNlQWRhcHRlciBleHRlbmRzIFJlcG9ydERhdGFTb3VyY2VBZGFwdGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuICBwcml2YXRlIHJlYWRvbmx5IGVuZHBvaW50cyA9IGluamVjdChCV0FZU19SRVBPUlRfRU5EUE9JTlRTKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzZXNzaW9uU2VydmljZSA9IGluamVjdChSZXBvcnRTZXNzaW9uQ29udGV4dFNlcnZpY2UsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXBpRXhlY3V0aW9uU2VydmljZSA9IGluamVjdChSZXBvcnRBcGlFeGVjdXRpb25TZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIGV4ZWN1dGUoXG4gICAgZGF0YVNvdXJjZTogUmVwb3J0RGF0YVNvdXJjZURlZmluaXRpb24sXG4gICAgcGFyYW1ldGVyczogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgKTogT2JzZXJ2YWJsZTx1bmtub3duW10+IHtcbiAgICBpZiAodGhpcy5pc0FwaVNvdXJjZShkYXRhU291cmNlKSAmJiB0aGlzLmFwaUV4ZWN1dGlvblNlcnZpY2UpIHtcbiAgICAgIHJldHVybiB0aGlzLmFwaUV4ZWN1dGlvblNlcnZpY2UuZXhlY3V0ZUFwaShcbiAgICAgICAge1xuICAgICAgICAgIGVuZHBvaW50OiBkYXRhU291cmNlLmVuZHBvaW50IHx8IGRhdGFTb3VyY2UubmFtZSxcbiAgICAgICAgICBtZXRob2Q6IGRhdGFTb3VyY2UubWV0aG9kIGFzIGFueSxcbiAgICAgICAgICBkYXRhUGF0aDogZGF0YVNvdXJjZS5kYXRhUGF0aCxcbiAgICAgICAgICBoZWFkZXJzOiBkYXRhU291cmNlLmhlYWRlcnMsXG4gICAgICAgICAgdXNlUHJveHk6IGRhdGFTb3VyY2UudXNlUHJveHksXG4gICAgICAgICAgYm9keVRlbXBsYXRlOiBkYXRhU291cmNlLmJvZHlUZW1wbGF0ZSxcbiAgICAgICAgfSxcbiAgICAgICAgcGFyYW1ldGVyc1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZW5kcG9pbnRzLmV4ZWN1dGVFbmRwb2ludCkge1xuICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKCdbYndheXMtcmVwb3J0XSBObyBleGVjdXRlRW5kcG9pbnQgY29uZmlndXJlZC4nKSk7XG4gICAgfVxuICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLnNlc3Npb25TZXJ2aWNlPy5zZXNzaW9uQ29udGV4dCgpID8/IHt9O1xuXG4gICAgbGV0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcbiAgICBpZiAoc2Vzc2lvblsnY29tcGFueUlkJ10gIT09IHVuZGVmaW5lZCAmJiBzZXNzaW9uWydjb21wYW55SWQnXSAhPT0gbnVsbCkge1xuICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdYLUNvbXBhbnktSWQnLCBTdHJpbmcoc2Vzc2lvblsnY29tcGFueUlkJ10pKTtcbiAgICB9XG4gICAgaWYgKHNlc3Npb25bJ2JyYW5jaElkJ10gIT09IHVuZGVmaW5lZCAmJiBzZXNzaW9uWydicmFuY2hJZCddICE9PSBudWxsKSB7XG4gICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ1gtQnJhbmNoLUlkJywgU3RyaW5nKHNlc3Npb25bJ2JyYW5jaElkJ10pKTtcbiAgICB9XG5cbiAgICBjb25zdCBraW5kID0gdGhpcy5yZXNvbHZlS2luZChkYXRhU291cmNlKTtcbiAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAga2luZCxcbiAgICAgIG5hbWU6IGRhdGFTb3VyY2UuZW5kcG9pbnQgfHwgZGF0YVNvdXJjZS5uYW1lLFxuICAgICAgc2NoZW1hOiBkYXRhU291cmNlLnNjaGVtYSA/PyAnZGJvJyxcbiAgICAgIHBhcmFtZXRlcnM6IHsgLi4ucGFyYW1ldGVycyB9LFxuICAgICAgY29sdW1uczogZGF0YVNvdXJjZS5jb2x1bW5zLFxuICAgICAgdG9wOiBkYXRhU291cmNlLnRvcCxcbiAgICAgIGZpbHRlcjogZGF0YVNvdXJjZS5maWx0ZXIgPyByZXNvbHZlUGFyYW1ldGVyTWFwcGluZ3MoZGF0YVNvdXJjZS5maWx0ZXIsIHNlc3Npb24sIHBhcmFtZXRlcnMpIDogdW5kZWZpbmVkLFxuICAgICAgZGF0YVNvdXJjZToge1xuICAgICAgICBpZDogZGF0YVNvdXJjZS5pZCB8fCBkYXRhU291cmNlLm5hbWUsXG4gICAgICAgIHR5cGU6IGtpbmQgPT09ICdwcm9jZWR1cmUnID8gJ3N0b3JlZF9wcm9jZWR1cmUnIDogKGRhdGFTb3VyY2UudHlwZSB8fCAndGFibGUnKSxcbiAgICAgICAgbmFtZTogZGF0YVNvdXJjZS5lbmRwb2ludCB8fCBkYXRhU291cmNlLm5hbWUsXG4gICAgICAgIHNjaGVtYTogZGF0YVNvdXJjZS5zY2hlbWEgPz8gJ2RibycsXG4gICAgICB9LFxuICAgICAgc2Vzc2lvbkNvbnRleHQ6IHNlc3Npb24sXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0PHVua25vd24+KHRoaXMuZW5kcG9pbnRzLmV4ZWN1dGVFbmRwb2ludCwgcGF5bG9hZCwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4gZXh0cmFjdFJvd0FycmF5KHJlc3BvbnNlKSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICAgIGNvbnN0IG1zZyA9IGVycj8uZXJyb3I/Lm1lc3NhZ2UgfHwgZXJyPy5tZXNzYWdlIHx8ICdSZXBvcnQgZXhlY3V0aW9uIGZhaWxlZCc7XG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKEFycmF5LmlzQXJyYXkobXNnKSA/IG1zZy5qb2luKCcsICcpIDogbXNnKSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlS2luZChkczogUmVwb3J0RGF0YVNvdXJjZURlZmluaXRpb24pOiAncHJvY2VkdXJlJyB8ICd0YWJsZScge1xuICAgIGlmIChkcy5tZXRob2QgPT09ICdTVE9SRURfUFJPQ0VEVVJFJykgcmV0dXJuICdwcm9jZWR1cmUnO1xuICAgIGlmIChkcy50eXBlID09PSAnc3RvcmVkX3Byb2NlZHVyZScpIHJldHVybiAncHJvY2VkdXJlJztcbiAgICBpZiAoZHMudHlwZSA9PT0gJ3RhYmxlJyB8fCBkcy50eXBlID09PSAndmlldycpIHJldHVybiAndGFibGUnO1xuICAgIC8vIEhldXJpc3RpYzogbmFtZXMgc3RhcnRpbmcgd2l0aCB1c3BfIC8gc3BfIGFyZSBwcm9jZWR1cmVzXG4gICAgY29uc3QgbmFtZSA9IChkcy5lbmRwb2ludCB8fCBkcy5uYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgIGlmIChuYW1lLnN0YXJ0c1dpdGgoJ3VzcF8nKSB8fCBuYW1lLnN0YXJ0c1dpdGgoJ3NwXycpKSByZXR1cm4gJ3Byb2NlZHVyZSc7XG4gICAgcmV0dXJuICd0YWJsZSc7XG4gIH1cblxuICBwcml2YXRlIGlzQXBpU291cmNlKGRzOiBSZXBvcnREYXRhU291cmNlRGVmaW5pdGlvbik6IGJvb2xlYW4ge1xuICAgIGlmIChkcy50eXBlID09PSAnYXBpJykgcmV0dXJuIHRydWU7XG4gICAgY29uc3QgZXAgPSAoZHMuZW5kcG9pbnQgfHwgZHMubmFtZSB8fCAnJykudHJpbSgpO1xuICAgIGlmIChlcC5zdGFydHNXaXRoKCdodHRwOi8vJykgfHwgZXAuc3RhcnRzV2l0aCgnaHR0cHM6Ly8nKSkgcmV0dXJuIHRydWU7XG4gICAgaWYgKGRzLnR5cGUgIT09ICd0YWJsZScgJiYgZHMudHlwZSAhPT0gJ3ZpZXcnICYmIGRzLnR5cGUgIT09ICdzdG9yZWRfcHJvY2VkdXJlJyAmJiBlcC5zdGFydHNXaXRoKCcvJykpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiJdfQ==
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5kcG9pbnQtZGF0YXNvdXJjZS5hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYndheXMtcmVwb3J0L3NyYy9saWIvZGF0YS1hY2Nlc3MvYWRhcHRlcnMvZW5kcG9pbnQtZGF0YXNvdXJjZS5hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzNHOzs7OztHQUtHO0FBRUgsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFNUUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDakcsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDN0YsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQWUzRCxNQUFNLE9BQU8seUJBQTBCLFNBQVEsdUJBQXVCO0lBQ25ELElBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDMUIsU0FBUyxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQzNDLGNBQWMsR0FBRyxNQUFNLENBQUMsMkJBQTJCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN6RSxtQkFB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MkQ7UUFDM0QsTUFBTSxJQUFJLEdBQUcsQ0FBQyxFQUFFLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDMUQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDO1lBQUUsT0FBTyxXQUFXLENBQUM7UUFDMUUsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVPLFdBQVcsQ0FBQyxFQUE4QjtRQUNoRCxJQUFJLEVBQUUsQ0FBQyxJQUFJLEtBQUssS0FBSztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ25DLE1BQU0sRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pELElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3ZFLElBQUksRUFBRSxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksRUFBRSxDQUFDLElBQUksS0FBSyxNQUFNLElBQUksRUFBRSxDQUFDLElBQUksS0FBSyxrQkFBa0IsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdEcsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO3dHQXhGVSx5QkFBeUI7NEdBQXpCLHlCQUF5Qjs7NEZBQXpCLHlCQUF5QjtrQkFEckMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG5vcm1hbGl6ZVBhcmFtZXRlck5hbWVzLCByZXNvbHZlUGFyYW1ldGVyTWFwcGluZ3MgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzL3JlcG9ydC1wYXJhbWV0ZXIudXRpbCc7XG4vKipcbiAqIEVuZHBvaW50LWJhc2VkIGRhdGEgc291cmNlIGFkYXB0ZXIuXG4gKlxuICogQ2FsbHMgdGhlIGBleGVjdXRlRW5kcG9pbnRgIGRpcmVjdGx5IHdpdGggYSBub3JtYWxpemVkIHBheWxvYWQuXG4gKiBSZXBsYWNlcyB0aGUgYGFwaUJhc2VVcmwgKyAvZXhlY3V0ZWAgcGF0dGVybi5cbiAqL1xuXG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUmVwb3J0RGF0YVNvdXJjZUFkYXB0ZXIgfSBmcm9tICcuLi9jb250cmFjdHMvZGF0YS1zb3VyY2UuY29udHJhY3QnO1xuaW1wb3J0IHsgUmVwb3J0RGF0YVNvdXJjZURlZmluaXRpb24gfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscy9yZXBvcnQtZGF0YXNvdXJjZS5tb2RlbCc7XG5pbXBvcnQgeyBSZXBvcnRTZXNzaW9uQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL3JlcG9ydC1zZXNzaW9uLWNvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBSZXBvcnRBcGlFeGVjdXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9yZXBvcnQtYXBpLWV4ZWN1dGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IGV4dHJhY3RSb3dBcnJheSB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMvZGF0YS1ub3JtYWxpemF0aW9uLnV0aWwnO1xuaW1wb3J0IHsgQldBWVNfUkVQT1JUX0VORFBPSU5UUyB9IGZyb20gJy4vZW5kcG9pbnQtdG9rZW5zJztcblxuLyoqXG4gKiBSZXF1ZXN0IHBheWxvYWQgZm9yIHRoZSBzaW1wbGlmaWVkIGV4ZWN1dGUgZW5kcG9pbnQuXG4gKi9cbmludGVyZmFjZSBFbmRwb2ludEV4ZWN1dGVQYXlsb2FkIHtcbiAga2luZDogJ3Byb2NlZHVyZScgfCAndGFibGUnO1xuICBuYW1lOiBzdHJpbmc7XG4gIHNjaGVtYTogc3RyaW5nO1xuICBwYXJhbWV0ZXJzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgY29sdW1ucz86IHN0cmluZ1tdO1xuICB0b3A/OiBudW1iZXI7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBFbmRwb2ludERhdGFTb3VyY2VBZGFwdGVyIGV4dGVuZHMgUmVwb3J0RGF0YVNvdXJjZUFkYXB0ZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZW5kcG9pbnRzID0gaW5qZWN0KEJXQVlTX1JFUE9SVF9FTkRQT0lOVFMpO1xuICBwcml2YXRlIHJlYWRvbmx5IHNlc3Npb25TZXJ2aWNlID0gaW5qZWN0KFJlcG9ydFNlc3Npb25Db250ZXh0U2VydmljZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBhcGlFeGVjdXRpb25TZXJ2aWNlID0gaW5qZWN0KFJlcG9ydEFwaUV4ZWN1dGlvblNlcnZpY2UsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgZXhlY3V0ZShcbiAgICBkYXRhU291cmNlOiBSZXBvcnREYXRhU291cmNlRGVmaW5pdGlvbixcbiAgICBwYXJhbWV0ZXJzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICApOiBPYnNlcnZhYmxlPHVua25vd25bXT4ge1xuICAgIGlmICh0aGlzLmlzQXBpU291cmNlKGRhdGFTb3VyY2UpICYmIHRoaXMuYXBpRXhlY3V0aW9uU2VydmljZSkge1xuICAgICAgcmV0dXJuIHRoaXMuYXBpRXhlY3V0aW9uU2VydmljZS5leGVjdXRlQXBpKFxuICAgICAgICB7XG4gICAgICAgICAgZW5kcG9pbnQ6IGRhdGFTb3VyY2UuZW5kcG9pbnQgfHwgZGF0YVNvdXJjZS5uYW1lLFxuICAgICAgICAgIG1ldGhvZDogZGF0YVNvdXJjZS5tZXRob2QgYXMgYW55LFxuICAgICAgICAgIGRhdGFQYXRoOiBkYXRhU291cmNlLmRhdGFQYXRoLFxuICAgICAgICAgIGhlYWRlcnM6IGRhdGFTb3VyY2UuaGVhZGVycyxcbiAgICAgICAgICB1c2VQcm94eTogZGF0YVNvdXJjZS51c2VQcm94eSxcbiAgICAgICAgICBib2R5VGVtcGxhdGU6IGRhdGFTb3VyY2UuYm9keVRlbXBsYXRlLFxuICAgICAgICB9LFxuICAgICAgICBwYXJhbWV0ZXJzXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5lbmRwb2ludHMuZXhlY3V0ZUVuZHBvaW50KSB7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoJ1tid2F5cy1yZXBvcnRdIE5vIGV4ZWN1dGVFbmRwb2ludCBjb25maWd1cmVkLicpKTtcbiAgICB9XG4gICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuc2Vzc2lvblNlcnZpY2U/LnNlc3Npb25Db250ZXh0KCkgPz8ge307XG5cbiAgICBsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xuICAgIGlmIChzZXNzaW9uWydjb21wYW55SWQnXSAhPT0gdW5kZWZpbmVkICYmIHNlc3Npb25bJ2NvbXBhbnlJZCddICE9PSBudWxsKSB7XG4gICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ1gtQ29tcGFueS1JZCcsIFN0cmluZyhzZXNzaW9uWydjb21wYW55SWQnXSkpO1xuICAgIH1cbiAgICBpZiAoc2Vzc2lvblsnYnJhbmNoSWQnXSAhPT0gdW5kZWZpbmVkICYmIHNlc3Npb25bJ2JyYW5jaElkJ10gIT09IG51bGwpIHtcbiAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnWC1CcmFuY2gtSWQnLCBTdHJpbmcoc2Vzc2lvblsnYnJhbmNoSWQnXSkpO1xuICAgIH1cblxuICAgIGNvbnN0IGtpbmQgPSB0aGlzLnJlc29sdmVLaW5kKGRhdGFTb3VyY2UpO1xuICAgIGlmIChraW5kID09PSAncHJvY2VkdXJlJykge1xuICAgICAgdHJ5IHsgcGFyYW1ldGVycyA9IG5vcm1hbGl6ZVBhcmFtZXRlck5hbWVzKHBhcmFtZXRlcnMpOyB9XG4gICAgICBjYXRjaCAoZXJyb3IpIHsgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpOyB9XG4gICAgfVxuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICBraW5kLFxuICAgICAgbmFtZTogZGF0YVNvdXJjZS5lbmRwb2ludCB8fCBkYXRhU291cmNlLm5hbWUsXG4gICAgICBzY2hlbWE6IGRhdGFTb3VyY2Uuc2NoZW1hID8/ICdkYm8nLFxuICAgICAgcGFyYW1ldGVyczogeyAuLi5wYXJhbWV0ZXJzIH0sXG4gICAgICBjb2x1bW5zOiBkYXRhU291cmNlLmNvbHVtbnMsXG4gICAgICB0b3A6IGRhdGFTb3VyY2UudG9wLFxuICAgICAgZmlsdGVyOiBkYXRhU291cmNlLmZpbHRlciA/IHJlc29sdmVQYXJhbWV0ZXJNYXBwaW5ncyhkYXRhU291cmNlLmZpbHRlciwgc2Vzc2lvbiwgcGFyYW1ldGVycykgOiB1bmRlZmluZWQsXG4gICAgICBkYXRhU291cmNlOiB7XG4gICAgICAgIGlkOiBkYXRhU291cmNlLmlkIHx8IGRhdGFTb3VyY2UubmFtZSxcbiAgICAgICAgdHlwZToga2luZCA9PT0gJ3Byb2NlZHVyZScgPyAnc3RvcmVkX3Byb2NlZHVyZScgOiAoZGF0YVNvdXJjZS50eXBlIHx8ICd0YWJsZScpLFxuICAgICAgICBuYW1lOiBkYXRhU291cmNlLmVuZHBvaW50IHx8IGRhdGFTb3VyY2UubmFtZSxcbiAgICAgICAgc2NoZW1hOiBkYXRhU291cmNlLnNjaGVtYSA/PyAnZGJvJyxcbiAgICAgIH0sXG4gICAgICBzZXNzaW9uQ29udGV4dDogc2Vzc2lvbixcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3Q8dW5rbm93bj4odGhpcy5lbmRwb2ludHMuZXhlY3V0ZUVuZHBvaW50LCBwYXlsb2FkLCB7IGhlYWRlcnMgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiBleHRyYWN0Um93QXJyYXkocmVzcG9uc2UpKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgICAgY29uc3QgbXNnID0gZXJyPy5lcnJvcj8ubWVzc2FnZSB8fCBlcnI/Lm1lc3NhZ2UgfHwgJ1JlcG9ydCBleGVjdXRpb24gZmFpbGVkJztcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoQXJyYXkuaXNBcnJheShtc2cpID8gbXNnLmpvaW4oJywgJykgOiBtc2cpKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVLaW5kKGRzOiBSZXBvcnREYXRhU291cmNlRGVmaW5pdGlvbik6ICdwcm9jZWR1cmUnIHwgJ3RhYmxlJyB7XG4gICAgaWYgKGRzLm1ldGhvZCA9PT0gJ1NUT1JFRF9QUk9DRURVUkUnKSByZXR1cm4gJ3Byb2NlZHVyZSc7XG4gICAgaWYgKGRzLnR5cGUgPT09ICdzdG9yZWRfcHJvY2VkdXJlJykgcmV0dXJuICdwcm9jZWR1cmUnO1xuICAgIGlmIChkcy50eXBlID09PSAndGFibGUnIHx8IGRzLnR5cGUgPT09ICd2aWV3JykgcmV0dXJuICd0YWJsZSc7XG4gICAgLy8gSGV1cmlzdGljOiBuYW1lcyBzdGFydGluZyB3aXRoIHVzcF8gLyBzcF8gYXJlIHByb2NlZHVyZXNcbiAgICBjb25zdCBuYW1lID0gKGRzLmVuZHBvaW50IHx8IGRzLm5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKG5hbWUuc3RhcnRzV2l0aCgndXNwXycpIHx8IG5hbWUuc3RhcnRzV2l0aCgnc3BfJykpIHJldHVybiAncHJvY2VkdXJlJztcbiAgICByZXR1cm4gJ3RhYmxlJztcbiAgfVxuXG4gIHByaXZhdGUgaXNBcGlTb3VyY2UoZHM6IFJlcG9ydERhdGFTb3VyY2VEZWZpbml0aW9uKTogYm9vbGVhbiB7XG4gICAgaWYgKGRzLnR5cGUgPT09ICdhcGknKSByZXR1cm4gdHJ1ZTtcbiAgICBjb25zdCBlcCA9IChkcy5lbmRwb2ludCB8fCBkcy5uYW1lIHx8ICcnKS50cmltKCk7XG4gICAgaWYgKGVwLnN0YXJ0c1dpdGgoJ2h0dHA6Ly8nKSB8fCBlcC5zdGFydHNXaXRoKCdodHRwczovLycpKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoZHMudHlwZSAhPT0gJ3RhYmxlJyAmJiBkcy50eXBlICE9PSAndmlldycgJiYgZHMudHlwZSAhPT0gJ3N0b3JlZF9wcm9jZWR1cmUnICYmIGVwLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl19
@@ -1,3 +1,4 @@
1
+ import { normalizeParameterNames } from '../../core/utils/report-parameter.util';
1
2
  /**
2
3
  * Endpoint-based lookup adapter.
3
4
  *
@@ -23,6 +24,14 @@ export class EndpointLookupAdapter extends ReportLookupAdapter {
23
24
  cache = new Map();
24
25
  inFlight = new Map();
25
26
  fetchOptions(request) {
27
+ if (request.sourceType === 'procedure') {
28
+ try {
29
+ request = { ...request, parameters: normalizeParameterNames(request.parameters ?? {}) };
30
+ }
31
+ catch (error) {
32
+ return throwError(() => error);
33
+ }
34
+ }
26
35
  const cacheKey = this.generateCacheKey(request);
27
36
  const cached = this.cache.get(cacheKey);
28
37
  const now = Date.now();
@@ -120,4 +129,4 @@ export class EndpointLookupAdapter extends ReportLookupAdapter {
120
129
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EndpointLookupAdapter, decorators: [{
121
130
  type: Injectable
122
131
  }] });
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5kcG9pbnQtbG9va3VwLmFkYXB0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9kYXRhLWFjY2Vzcy9hZGFwdGVycy9lbmRwb2ludC1sb29rdXAuYWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0UsT0FBTyxFQUdMLG1CQUFtQixHQUNwQixNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxlQUFlLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNwRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFRM0QsTUFBTSxPQUFPLHFCQUFzQixTQUFRLG1CQUFtQjtJQUMzQyxJQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzFCLFNBQVMsR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUMzQyxjQUFjLEdBQUcsTUFBTSxDQUFDLDJCQUEyQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDekUsbUJBQW1CLEdBQUcsTUFB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QUMsUUFBUSxJQUFJLEVBQUUsSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLEtBQUssSUFBSSxHQUFHLENBQUMsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDblUsQ0FBQzt3R0FwSVUscUJBQXFCOzRHQUFyQixxQkFBcUI7OzRGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEVuZHBvaW50LWJhc2VkIGxvb2t1cCBhZGFwdGVyLlxuICpcbiAqIFJldXNlcyB0aGUgYGV4ZWN1dGVFbmRwb2ludGAgdG8gZmV0Y2ggZHJvcGRvd24gb3B0aW9uIHJvd3MuXG4gKiBObyBzZXBhcmF0ZSBsb29rdXAgZW5kcG9pbnQgaXMgbmVlZGVkIOKAlCB3ZSBqdXN0IFBPU1QgdG8gdGhlXG4gKiBzYW1lIGV4ZWN1dGUgZW5kcG9pbnQgd2l0aCB0aGUgdGFibGUvU1AgdGhhdCBiYWNrcyB0aGUgZHJvcGRvd24uXG4gKi9cblxuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaW5hbGl6ZSwgbWFwLCBzaGFyZVJlcGxheSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgTG9va3VwT3B0aW9uSXRlbSxcbiAgTG9va3VwUXVlcnlSZXF1ZXN0LFxuICBSZXBvcnRMb29rdXBBZGFwdGVyLFxufSBmcm9tICcuLi9jb250cmFjdHMvbG9va3VwLmNvbnRyYWN0JztcbmltcG9ydCB7IFJlcG9ydFNlc3Npb25Db250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvcmVwb3J0LXNlc3Npb24tY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IFJlcG9ydEFwaUV4ZWN1dGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL3JlcG9ydC1hcGktZXhlY3V0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgZXh0cmFjdExvb2t1cE9wdGlvbkl0ZW0sIGV4dHJhY3RSb3dBcnJheSB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMvZGF0YS1ub3JtYWxpemF0aW9uLnV0aWwnO1xuaW1wb3J0IHsgQldBWVNfUkVQT1JUX0VORFBPSU5UUyB9IGZyb20gJy4vZW5kcG9pbnQtdG9rZW5zJztcblxuaW50ZXJmYWNlIENhY2hlRW50cnkge1xuICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgZGF0YTogTG9va3VwT3B0aW9uSXRlbVtdO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRW5kcG9pbnRMb29rdXBBZGFwdGVyIGV4dGVuZHMgUmVwb3J0TG9va3VwQWRhcHRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcbiAgcHJpdmF0ZSByZWFkb25seSBlbmRwb2ludHMgPSBpbmplY3QoQldBWVNfUkVQT1JUX0VORFBPSU5UUyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2Vzc2lvblNlcnZpY2UgPSBpbmplY3QoUmVwb3J0U2Vzc2lvbkNvbnRleHRTZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIHJlYWRvbmx5IGFwaUV4ZWN1dGlvblNlcnZpY2UgPSBpbmplY3QoUmVwb3J0QXBpRXhlY3V0aW9uU2VydmljZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIENhY2hlRW50cnk+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW5GbGlnaHQgPSBuZXcgTWFwPHN0cmluZywgT2JzZXJ2YWJsZTxMb29rdXBPcHRpb25JdGVtW10+PigpO1xuXG4gIGZldGNoT3B0aW9ucyhyZXF1ZXN0OiBMb29rdXBRdWVyeVJlcXVlc3QpOiBPYnNlcnZhYmxlPExvb2t1cE9wdGlvbkl0ZW1bXT4ge1xuICAgIGNvbnN0IGNhY2hlS2V5ID0gdGhpcy5nZW5lcmF0ZUNhY2hlS2V5KHJlcXVlc3QpO1xuICAgIGNvbnN0IGNhY2hlZCA9IHRoaXMuY2FjaGUuZ2V0KGNhY2hlS2V5KTtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuXG4gICAgaWYgKGNhY2hlZCAmJiBjYWNoZWQuZXhwaXJlc0F0ID4gbm93KSB7XG4gICAgICByZXR1cm4gb2YoY2FjaGVkLmRhdGEpO1xuICAgIH1cblxuICAgIGNvbnN0IHJ1bm5pbmcgPSB0aGlzLmluRmxpZ2h0LmdldChjYWNoZUtleSk7XG4gICAgaWYgKHJ1bm5pbmcpIHtcbiAgICAgIHJldHVybiBydW5uaW5nO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBBUEktYmFzZWQgZHJvcGRvd24gbG9va3Vwc1xuICAgIGlmICgocmVxdWVzdC5zb3VyY2VUeXBlID09PSAnYXBpJyB8fCByZXF1ZXN0LmFwaUVuZHBvaW50KSAmJiB0aGlzLmFwaUV4ZWN1dGlvblNlcnZpY2UpIHtcbiAgICAgIGNvbnN0IGVuZHBvaW50VXJsID0gcmVxdWVzdC5hcGlFbmRwb2ludCB8fCByZXF1ZXN0LmVudGl0eU5hbWUgfHwgJyc7XG4gICAgICBjb25zdCBvYnMkID0gdGhpcy5hcGlFeGVjdXRpb25TZXJ2aWNlXG4gICAgICAgIC5leGVjdXRlQXBpKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGVuZHBvaW50OiBlbmRwb2ludFVybCxcbiAgICAgICAgICAgIGRhdGFQYXRoOiByZXF1ZXN0LmRhdGFQYXRoLFxuICAgICAgICAgICAgdXNlUHJveHk6IHJlcXVlc3QudXNlUHJveHksXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1ZXN0LnBhcmFtZXRlcnMgYXMgYW55LFxuICAgICAgICAgIHJlcXVlc3QuZmlsdGVyIGFzIGFueVxuICAgICAgICApXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoaXRlbXMpID0+XG4gICAgICAgICAgICBpdGVtcy5tYXAoKHI6IGFueSkgPT5cbiAgICAgICAgICAgICAgZXh0cmFjdExvb2t1cE9wdGlvbkl0ZW0ociwgcmVxdWVzdC52YWx1ZUZpZWxkLCByZXF1ZXN0LmRpc3BsYXlGaWVsZClcbiAgICAgICAgICAgIClcbiAgICAgICAgICApLFxuICAgICAgICAgIHRhcCgoaXRlbXMpID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIHRoaXMuY2FjaGUuc2V0KGNhY2hlS2V5LCB7XG4gICAgICAgICAgICAgICAgZXhwaXJlc0F0OiBEYXRlLm5vdygpICsgNjAwXzAwMCxcbiAgICAgICAgICAgICAgICBkYXRhOiBpdGVtcyxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksXG4gICAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5pbkZsaWdodC5kZWxldGUoY2FjaGVLZXkpKSxcbiAgICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICAgICApO1xuXG4gICAgICB0aGlzLmluRmxpZ2h0LnNldChjYWNoZUtleSwgb2JzJCk7XG4gICAgICByZXR1cm4gb2JzJDtcbiAgICB9XG5cbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5zZXNzaW9uU2VydmljZT8uc2Vzc2lvbkNvbnRleHQoKSA/PyB7fTtcbiAgICBsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xuICAgIGlmIChzZXNzaW9uWydjb21wYW55SWQnXSAhPT0gdW5kZWZpbmVkICYmIHNlc3Npb25bJ2NvbXBhbnlJZCddICE9PSBudWxsKSB7XG4gICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ1gtQ29tcGFueS1JZCcsIFN0cmluZyhzZXNzaW9uWydjb21wYW55SWQnXSkpO1xuICAgIH1cbiAgICBpZiAoc2Vzc2lvblsnYnJhbmNoSWQnXSAhPT0gdW5kZWZpbmVkICYmIHNlc3Npb25bJ2JyYW5jaElkJ10gIT09IG51bGwpIHtcbiAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnWC1CcmFuY2gtSWQnLCBTdHJpbmcoc2Vzc2lvblsnYnJhbmNoSWQnXSkpO1xuICAgIH1cblxuICAgIGNvbnN0IGtpbmQgPSByZXF1ZXN0LnNvdXJjZVR5cGUgPT09ICdwcm9jZWR1cmUnID8gJ3Byb2NlZHVyZScgOiAndGFibGUnO1xuICAgIGNvbnN0IHRhcmdldFVybCA9IHRoaXMuZW5kcG9pbnRzLmxvb2t1cEVuZHBvaW50IHx8IHRoaXMuZW5kcG9pbnRzLmV4ZWN1dGVFbmRwb2ludDtcbiAgICBpZiAoIXRhcmdldFVybCkge1xuICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKCdbYndheXMtcmVwb3J0XSBObyBsb29rdXBFbmRwb2ludCBvciBleGVjdXRlRW5kcG9pbnQgY29uZmlndXJlZC4nKSk7XG4gICAgfVxuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICAvLyBMb29rdXAgY29udHJhY3QgZmllbGRzICh1c2VkIGJ5IC9hcGkvcmVwb3J0aW5nL2xvb2t1cClcbiAgICAgIGVudGl0eU5hbWU6IHJlcXVlc3QuZW50aXR5TmFtZSA/PyAnJyxcbiAgICAgIHNvdXJjZVR5cGU6IHJlcXVlc3Quc291cmNlVHlwZSA/PyAoa2luZCA9PT0gJ3Byb2NlZHVyZScgPyAnc3RvcmVkX3Byb2NlZHVyZScgOiAndGFibGUnKSxcbiAgICAgIHNjaGVtYTogcmVxdWVzdC5zY2hlbWEgPz8gJ2RibycsXG4gICAgICB2YWx1ZUZpZWxkOiByZXF1ZXN0LnZhbHVlRmllbGQsXG4gICAgICBkaXNwbGF5RmllbGQ6IHJlcXVlc3QuZGlzcGxheUZpZWxkLFxuICAgICAgZmlsdGVyOiByZXF1ZXN0LmZpbHRlcixcbiAgICAgIGxpbWl0OiByZXF1ZXN0LmxpbWl0ID8/IDUwMCxcblxuICAgICAgLy8gRXhlY3V0ZSBzaW1wbGlmaWVkIGNvbnRyYWN0IGZpZWxkc1xuICAgICAga2luZCxcbiAgICAgIG5hbWU6IHJlcXVlc3QuZW50aXR5TmFtZSA/PyAnJyxcbiAgICAgIGNvbHVtbnM6IFtyZXF1ZXN0LnZhbHVlRmllbGQsIHJlcXVlc3QuZGlzcGxheUZpZWxkXS5maWx0ZXIoQm9vbGVhbiksXG4gICAgICB0b3A6IHJlcXVlc3QubGltaXQgPz8gNTAwLFxuXG4gICAgICAvLyBFeGVjdXRlIHJpY2ggY29udHJhY3QgZmllbGRzIChwcmV2ZW50cyBcImRhdGFTb3VyY2Ugc2hvdWxkIG5vdCBiZSBlbXB0eVwiKVxuICAgICAgZGF0YVNvdXJjZToge1xuICAgICAgICBpZDogcmVxdWVzdC5lbnRpdHlOYW1lID8/ICdkcy1sb29rdXAnLFxuICAgICAgICB0eXBlOiBraW5kID09PSAncHJvY2VkdXJlJyA/ICdzdG9yZWRfcHJvY2VkdXJlJyA6ICd0YWJsZScsXG4gICAgICAgIG5hbWU6IHJlcXVlc3QuZW50aXR5TmFtZSA/PyAnJyxcbiAgICAgICAgc2NoZW1hOiByZXF1ZXN0LnNjaGVtYSA/PyAnZGJvJyxcbiAgICAgIH0sXG4gICAgICBwYXJhbWV0ZXJzOiByZXF1ZXN0LnBhcmFtZXRlcnMgPz8ge30sXG4gICAgICBzZXNzaW9uQ29udGV4dDogc2Vzc2lvbixcbiAgICB9O1xuXG4gICAgY29uc3Qgb2JzJCA9IHRoaXMuaHR0cFxuICAgICAgLnBvc3Q8dW5rbm93bj4odGFyZ2V0VXJsLCBwYXlsb2FkLCB7IGhlYWRlcnMgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgY29uc3QgcmF3SXRlbXMgPSBleHRyYWN0Um93QXJyYXkocmVzcG9uc2UpO1xuICAgICAgICAgIHJldHVybiByYXdJdGVtcy5tYXAoKHI6IGFueSkgPT5cbiAgICAgICAgICAgIGV4dHJhY3RMb29rdXBPcHRpb25JdGVtKHIsIHJlcXVlc3QudmFsdWVGaWVsZCwgcmVxdWVzdC5kaXNwbGF5RmllbGQpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRhcCgoaXRlbXMpID0+IHtcbiAgICAgICAgICBpZiAoaXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5jYWNoZS5zZXQoY2FjaGVLZXksIHtcbiAgICAgICAgICAgICAgZXhwaXJlc0F0OiBEYXRlLm5vdygpICsgNjAwXzAwMCxcbiAgICAgICAgICAgICAgZGF0YTogaXRlbXMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcbiAgICAgICAgICBjb25zdCBtc2cgPSBlcnI/LmVycm9yPy5tZXNzYWdlIHx8IGVycj8ubWVzc2FnZSB8fCAnTG9va3VwIHJlcXVlc3QgZmFpbGVkJztcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoQXJyYXkuaXNBcnJheShtc2cpID8gbXNnLmpvaW4oJywgJykgOiBtc2cpKTtcbiAgICAgICAgfSksXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmluRmxpZ2h0LmRlbGV0ZShjYWNoZUtleSk7XG4gICAgICAgIH0pLFxuICAgICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pXG4gICAgICApO1xuXG4gICAgdGhpcy5pbkZsaWdodC5zZXQoY2FjaGVLZXksIG9icyQpO1xuICAgIHJldHVybiBvYnMkO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZUNhY2hlS2V5KHJlcTogTG9va3VwUXVlcnlSZXF1ZXN0KTogc3RyaW5nIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5zZXNzaW9uU2VydmljZT8uZ2V0Q3VycmVudFNlc3Npb25Db250ZXh0KCkgPz8ge30pICsgJzonICsgYCR7cmVxLnNvdXJjZVR5cGV9OiR7cmVxLmVudGl0eU5hbWUgfHwgcmVxLmFwaUVuZHBvaW50fToke3JlcS52YWx1ZUZpZWxkfToke3JlcS5kaXNwbGF5RmllbGR9OiR7cmVxLmRhdGFQYXRoID8/ICcnfToke3JlcS5zY2hlbWEgPz8gJ2Ribyd9OiR7cmVxLmxpbWl0ID8/IDUwMH06JHtKU09OLnN0cmluZ2lmeShyZXEuZmlsdGVyID8/IHt9KX06JHtKU09OLnN0cmluZ2lmeShyZXEucGFyYW1ldGVycyA/PyB7fSl9YDtcbiAgfVxufVxuIl19
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5kcG9pbnQtbG9va3VwLmFkYXB0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9kYXRhLWFjY2Vzcy9hZGFwdGVycy9lbmRwb2ludC1sb29rdXAuYWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNqRjs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0UsT0FBTyxFQUdMLG1CQUFtQixHQUNwQixNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxlQUFlLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNwRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFRM0QsTUFBTSxPQUFPLHFCQUFzQixTQUFRLG1CQUFtQjtJQUMzQyxJQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzFCLFNBQVMsR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUMzQyxjQUFjLEdBQUcsTUFBTSxDQUFDLDJCQUEyQixFQUFFLEVBQUUsUUFBUSxF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QUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNsQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxHQUF1QjtRQUM5QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSx3QkFBd0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxVQUFVLElBQUksR0FBRyxDQUFDLFVBQVUsSUFBSSxHQUFHLENBQUMsV0FBVyxJQUFJLEdBQUcsQ0FBQyxVQUFVLElBQUksR0FBRyxDQUFDLFlBQVksSUFBSSxHQUFHLENBQUMsUUFBUSxJQUFJLEVBQUUsSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLEtBQUssSUFBSSxHQUFHLENBQUMsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDblUsQ0FBQzt3R0F4SVUscUJBQXFCOzRHQUFyQixxQkFBcUI7OzRGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBub3JtYWxpemVQYXJhbWV0ZXJOYW1lcyB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMvcmVwb3J0LXBhcmFtZXRlci51dGlsJztcbi8qKlxuICogRW5kcG9pbnQtYmFzZWQgbG9va3VwIGFkYXB0ZXIuXG4gKlxuICogUmV1c2VzIHRoZSBgZXhlY3V0ZUVuZHBvaW50YCB0byBmZXRjaCBkcm9wZG93biBvcHRpb24gcm93cy5cbiAqIE5vIHNlcGFyYXRlIGxvb2t1cCBlbmRwb2ludCBpcyBuZWVkZWQg4oCUIHdlIGp1c3QgUE9TVCB0byB0aGVcbiAqIHNhbWUgZXhlY3V0ZSBlbmRwb2ludCB3aXRoIHRoZSB0YWJsZS9TUCB0aGF0IGJhY2tzIHRoZSBkcm9wZG93bi5cbiAqL1xuXG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbmFsaXplLCBtYXAsIHNoYXJlUmVwbGF5LCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBMb29rdXBPcHRpb25JdGVtLFxuICBMb29rdXBRdWVyeVJlcXVlc3QsXG4gIFJlcG9ydExvb2t1cEFkYXB0ZXIsXG59IGZyb20gJy4uL2NvbnRyYWN0cy9sb29rdXAuY29udHJhY3QnO1xuaW1wb3J0IHsgUmVwb3J0U2Vzc2lvbkNvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9yZXBvcnQtc2Vzc2lvbi1jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVwb3J0QXBpRXhlY3V0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvcmVwb3J0LWFwaS1leGVjdXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBleHRyYWN0TG9va3VwT3B0aW9uSXRlbSwgZXh0cmFjdFJvd0FycmF5IH0gZnJvbSAnLi4vLi4vY29yZS91dGlscy9kYXRhLW5vcm1hbGl6YXRpb24udXRpbCc7XG5pbXBvcnQgeyBCV0FZU19SRVBPUlRfRU5EUE9JTlRTIH0gZnJvbSAnLi9lbmRwb2ludC10b2tlbnMnO1xuXG5pbnRlcmZhY2UgQ2FjaGVFbnRyeSB7XG4gIGV4cGlyZXNBdDogbnVtYmVyO1xuICBkYXRhOiBMb29rdXBPcHRpb25JdGVtW107XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBFbmRwb2ludExvb2t1cEFkYXB0ZXIgZXh0ZW5kcyBSZXBvcnRMb29rdXBBZGFwdGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuICBwcml2YXRlIHJlYWRvbmx5IGVuZHBvaW50cyA9IGluamVjdChCV0FZU19SRVBPUlRfRU5EUE9JTlRTKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzZXNzaW9uU2VydmljZSA9IGluamVjdChSZXBvcnRTZXNzaW9uQ29udGV4dFNlcnZpY2UsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXBpRXhlY3V0aW9uU2VydmljZSA9IGluamVjdChSZXBvcnRBcGlFeGVjdXRpb25TZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY2FjaGUgPSBuZXcgTWFwPHN0cmluZywgQ2FjaGVFbnRyeT4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBpbkZsaWdodCA9IG5ldyBNYXA8c3RyaW5nLCBPYnNlcnZhYmxlPExvb2t1cE9wdGlvbkl0ZW1bXT4+KCk7XG5cbiAgZmV0Y2hPcHRpb25zKHJlcXVlc3Q6IExvb2t1cFF1ZXJ5UmVxdWVzdCk6IE9ic2VydmFibGU8TG9va3VwT3B0aW9uSXRlbVtdPiB7XG4gICAgaWYgKHJlcXVlc3Quc291cmNlVHlwZSA9PT0gJ3Byb2NlZHVyZScpIHtcbiAgICAgIHRyeSB7IHJlcXVlc3QgPSB7IC4uLnJlcXVlc3QsIHBhcmFtZXRlcnM6IG5vcm1hbGl6ZVBhcmFtZXRlck5hbWVzKHJlcXVlc3QucGFyYW1ldGVycyA/PyB7fSkgfTsgfVxuICAgICAgY2F0Y2ggKGVycm9yKSB7IHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTsgfVxuICAgIH1cbiAgICBjb25zdCBjYWNoZUtleSA9IHRoaXMuZ2VuZXJhdGVDYWNoZUtleShyZXF1ZXN0KTtcbiAgICBjb25zdCBjYWNoZWQgPSB0aGlzLmNhY2hlLmdldChjYWNoZUtleSk7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcblxuICAgIGlmIChjYWNoZWQgJiYgY2FjaGVkLmV4cGlyZXNBdCA+IG5vdykge1xuICAgICAgcmV0dXJuIG9mKGNhY2hlZC5kYXRhKTtcbiAgICB9XG5cbiAgICBjb25zdCBydW5uaW5nID0gdGhpcy5pbkZsaWdodC5nZXQoY2FjaGVLZXkpO1xuICAgIGlmIChydW5uaW5nKSB7XG4gICAgICByZXR1cm4gcnVubmluZztcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgQVBJLWJhc2VkIGRyb3Bkb3duIGxvb2t1cHNcbiAgICBpZiAoKHJlcXVlc3Quc291cmNlVHlwZSA9PT0gJ2FwaScgfHwgcmVxdWVzdC5hcGlFbmRwb2ludCkgJiYgdGhpcy5hcGlFeGVjdXRpb25TZXJ2aWNlKSB7XG4gICAgICBjb25zdCBlbmRwb2ludFVybCA9IHJlcXVlc3QuYXBpRW5kcG9pbnQgfHwgcmVxdWVzdC5lbnRpdHlOYW1lIHx8ICcnO1xuICAgICAgY29uc3Qgb2JzJCA9IHRoaXMuYXBpRXhlY3V0aW9uU2VydmljZVxuICAgICAgICAuZXhlY3V0ZUFwaShcbiAgICAgICAgICB7XG4gICAgICAgICAgICBlbmRwb2ludDogZW5kcG9pbnRVcmwsXG4gICAgICAgICAgICBkYXRhUGF0aDogcmVxdWVzdC5kYXRhUGF0aCxcbiAgICAgICAgICAgIHVzZVByb3h5OiByZXF1ZXN0LnVzZVByb3h5LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVxdWVzdC5wYXJhbWV0ZXJzIGFzIGFueSxcbiAgICAgICAgICByZXF1ZXN0LmZpbHRlciBhcyBhbnlcbiAgICAgICAgKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGl0ZW1zKSA9PlxuICAgICAgICAgICAgaXRlbXMubWFwKChyOiBhbnkpID0+XG4gICAgICAgICAgICAgIGV4dHJhY3RMb29rdXBPcHRpb25JdGVtKHIsIHJlcXVlc3QudmFsdWVGaWVsZCwgcmVxdWVzdC5kaXNwbGF5RmllbGQpXG4gICAgICAgICAgICApXG4gICAgICAgICAgKSxcbiAgICAgICAgICB0YXAoKGl0ZW1zKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICB0aGlzLmNhY2hlLnNldChjYWNoZUtleSwge1xuICAgICAgICAgICAgICAgIGV4cGlyZXNBdDogRGF0ZS5ub3coKSArIDYwMF8wMDAsXG4gICAgICAgICAgICAgICAgZGF0YTogaXRlbXMsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMuaW5GbGlnaHQuZGVsZXRlKGNhY2hlS2V5KSksXG4gICAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICAgICAgKTtcblxuICAgICAgdGhpcy5pbkZsaWdodC5zZXQoY2FjaGVLZXksIG9icyQpO1xuICAgICAgcmV0dXJuIG9icyQ7XG4gICAgfVxuXG4gICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuc2Vzc2lvblNlcnZpY2U/LnNlc3Npb25Db250ZXh0KCkgPz8ge307XG4gICAgbGV0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcbiAgICBpZiAoc2Vzc2lvblsnY29tcGFueUlkJ10gIT09IHVuZGVmaW5lZCAmJiBzZXNzaW9uWydjb21wYW55SWQnXSAhPT0gbnVsbCkge1xuICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdYLUNvbXBhbnktSWQnLCBTdHJpbmcoc2Vzc2lvblsnY29tcGFueUlkJ10pKTtcbiAgICB9XG4gICAgaWYgKHNlc3Npb25bJ2JyYW5jaElkJ10gIT09IHVuZGVmaW5lZCAmJiBzZXNzaW9uWydicmFuY2hJZCddICE9PSBudWxsKSB7XG4gICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ1gtQnJhbmNoLUlkJywgU3RyaW5nKHNlc3Npb25bJ2JyYW5jaElkJ10pKTtcbiAgICB9XG5cbiAgICBjb25zdCBraW5kID0gcmVxdWVzdC5zb3VyY2VUeXBlID09PSAncHJvY2VkdXJlJyA/ICdwcm9jZWR1cmUnIDogJ3RhYmxlJztcbiAgICBjb25zdCB0YXJnZXRVcmwgPSB0aGlzLmVuZHBvaW50cy5sb29rdXBFbmRwb2ludCB8fCB0aGlzLmVuZHBvaW50cy5leGVjdXRlRW5kcG9pbnQ7XG4gICAgaWYgKCF0YXJnZXRVcmwpIHtcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcignW2J3YXlzLXJlcG9ydF0gTm8gbG9va3VwRW5kcG9pbnQgb3IgZXhlY3V0ZUVuZHBvaW50IGNvbmZpZ3VyZWQuJykpO1xuICAgIH1cbiAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgLy8gTG9va3VwIGNvbnRyYWN0IGZpZWxkcyAodXNlZCBieSAvYXBpL3JlcG9ydGluZy9sb29rdXApXG4gICAgICBlbnRpdHlOYW1lOiByZXF1ZXN0LmVudGl0eU5hbWUgPz8gJycsXG4gICAgICBzb3VyY2VUeXBlOiByZXF1ZXN0LnNvdXJjZVR5cGUgPz8gKGtpbmQgPT09ICdwcm9jZWR1cmUnID8gJ3N0b3JlZF9wcm9jZWR1cmUnIDogJ3RhYmxlJyksXG4gICAgICBzY2hlbWE6IHJlcXVlc3Quc2NoZW1hID8/ICdkYm8nLFxuICAgICAgdmFsdWVGaWVsZDogcmVxdWVzdC52YWx1ZUZpZWxkLFxuICAgICAgZGlzcGxheUZpZWxkOiByZXF1ZXN0LmRpc3BsYXlGaWVsZCxcbiAgICAgIGZpbHRlcjogcmVxdWVzdC5maWx0ZXIsXG4gICAgICBsaW1pdDogcmVxdWVzdC5saW1pdCA/PyA1MDAsXG5cbiAgICAgIC8vIEV4ZWN1dGUgc2ltcGxpZmllZCBjb250cmFjdCBmaWVsZHNcbiAgICAgIGtpbmQsXG4gICAgICBuYW1lOiByZXF1ZXN0LmVudGl0eU5hbWUgPz8gJycsXG4gICAgICBjb2x1bW5zOiBbcmVxdWVzdC52YWx1ZUZpZWxkLCByZXF1ZXN0LmRpc3BsYXlGaWVsZF0uZmlsdGVyKEJvb2xlYW4pLFxuICAgICAgdG9wOiByZXF1ZXN0LmxpbWl0ID8/IDUwMCxcblxuICAgICAgLy8gRXhlY3V0ZSByaWNoIGNvbnRyYWN0IGZpZWxkcyAocHJldmVudHMgXCJkYXRhU291cmNlIHNob3VsZCBub3QgYmUgZW1wdHlcIilcbiAgICAgIGRhdGFTb3VyY2U6IHtcbiAgICAgICAgaWQ6IHJlcXVlc3QuZW50aXR5TmFtZSA/PyAnZHMtbG9va3VwJyxcbiAgICAgICAgdHlwZToga2luZCA9PT0gJ3Byb2NlZHVyZScgPyAnc3RvcmVkX3Byb2NlZHVyZScgOiAndGFibGUnLFxuICAgICAgICBuYW1lOiByZXF1ZXN0LmVudGl0eU5hbWUgPz8gJycsXG4gICAgICAgIHNjaGVtYTogcmVxdWVzdC5zY2hlbWEgPz8gJ2RibycsXG4gICAgICB9LFxuICAgICAgcGFyYW1ldGVyczogcmVxdWVzdC5wYXJhbWV0ZXJzID8/IHt9LFxuICAgICAgc2Vzc2lvbkNvbnRleHQ6IHNlc3Npb24sXG4gICAgfTtcblxuICAgIGNvbnN0IG9icyQgPSB0aGlzLmh0dHBcbiAgICAgIC5wb3N0PHVua25vd24+KHRhcmdldFVybCwgcGF5bG9hZCwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJhd0l0ZW1zID0gZXh0cmFjdFJvd0FycmF5KHJlc3BvbnNlKTtcbiAgICAgICAgICByZXR1cm4gcmF3SXRlbXMubWFwKChyOiBhbnkpID0+XG4gICAgICAgICAgICBleHRyYWN0TG9va3VwT3B0aW9uSXRlbShyLCByZXF1ZXN0LnZhbHVlRmllbGQsIHJlcXVlc3QuZGlzcGxheUZpZWxkKVxuICAgICAgICAgICk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YXAoKGl0ZW1zKSA9PiB7XG4gICAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuY2FjaGUuc2V0KGNhY2hlS2V5LCB7XG4gICAgICAgICAgICAgIGV4cGlyZXNBdDogRGF0ZS5ub3coKSArIDYwMF8wMDAsXG4gICAgICAgICAgICAgIGRhdGE6IGl0ZW1zLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgICAgY29uc3QgbXNnID0gZXJyPy5lcnJvcj8ubWVzc2FnZSB8fCBlcnI/Lm1lc3NhZ2UgfHwgJ0xvb2t1cCByZXF1ZXN0IGZhaWxlZCc7XG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKEFycmF5LmlzQXJyYXkobXNnKSA/IG1zZy5qb2luKCcsICcpIDogbXNnKSk7XG4gICAgICAgIH0pLFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pbkZsaWdodC5kZWxldGUoY2FjaGVLZXkpO1xuICAgICAgICB9KSxcbiAgICAgICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KVxuICAgICAgKTtcblxuICAgIHRoaXMuaW5GbGlnaHQuc2V0KGNhY2hlS2V5LCBvYnMkKTtcbiAgICByZXR1cm4gb2JzJDtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVDYWNoZUtleShyZXE6IExvb2t1cFF1ZXJ5UmVxdWVzdCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMuc2Vzc2lvblNlcnZpY2U/LmdldEN1cnJlbnRTZXNzaW9uQ29udGV4dCgpID8/IHt9KSArICc6JyArIGAke3JlcS5zb3VyY2VUeXBlfToke3JlcS5lbnRpdHlOYW1lIHx8IHJlcS5hcGlFbmRwb2ludH06JHtyZXEudmFsdWVGaWVsZH06JHtyZXEuZGlzcGxheUZpZWxkfToke3JlcS5kYXRhUGF0aCA/PyAnJ306JHtyZXEuc2NoZW1hID8/ICdkYm8nfToke3JlcS5saW1pdCA/PyA1MDB9OiR7SlNPTi5zdHJpbmdpZnkocmVxLmZpbHRlciA/PyB7fSl9OiR7SlNPTi5zdHJpbmdpZnkocmVxLnBhcmFtZXRlcnMgPz8ge30pfWA7XG4gIH1cbn1cbiJdfQ==
@@ -1,3 +1,4 @@
1
+ import { normalizeParameterNames } from '../../core/utils/report-parameter.util';
1
2
  import { inject, Injectable } from '@angular/core';
2
3
  import { HttpClient, HttpHeaders } from '@angular/common/http';
3
4
  import { throwError } from 'rxjs';
@@ -17,6 +18,14 @@ export class HttpReportDataSourceAdapter extends ReportDataSourceAdapter {
17
18
  config = inject(REPORTING_CONFIG, { optional: true });
18
19
  sessionService = inject(ReportSessionContextService, { optional: true });
19
20
  execute(dataSource, parameters) {
21
+ if (dataSource.method === 'STORED_PROCEDURE' || dataSource.type === 'stored_procedure' || dataSource.type === 'procedure' || !dataSource.type) {
22
+ try {
23
+ parameters = normalizeParameterNames(parameters);
24
+ }
25
+ catch (error) {
26
+ return throwError(() => error);
27
+ }
28
+ }
20
29
  const baseUrl = this.config?.apiBaseUrl;
21
30
  const session = this.sessionService?.sessionContext() ?? {};
22
31
  if (baseUrl && this.http) {
@@ -46,4 +55,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
46
55
  type: Injectable
47
56
  }] });
48
57
  export const HttpDataSourceAdapter = HttpReportDataSourceAdapter;
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1kYXRhc291cmNlLmFkYXB0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9kYXRhLWFjY2Vzcy9hZGFwdGVycy9odHRwLWRhdGFzb3VyY2UuYWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUU1RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUVqRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMENBQTBDLENBQUM7O0FBRTNFOzs7O0dBSUc7QUFFSCxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsdUJBQXVCO0lBQ3JELElBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDOUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELGNBQWMsR0FBRyxNQUFNLENBQUMsMkJBQTJCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUUxRixPQUFPLENBQ0wsVUFBc0MsRUFDdEMsVUFBbUM7UUFFbkMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUM7UUFDeEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFFNUQsSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3pCLElBQUksT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEMsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLEtBQUssU0FBUyxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDeEUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RFLENBQUM7WUFDRCxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxTQUFTLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUN0RSxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEUsQ0FBQztZQUVELE1BQU0sT0FBTyxHQUF5QjtnQkFDcEMsVUFBVTtnQkFDVixVQUFVO2dCQUNWLGNBQWMsRUFBRSxPQUFPO2FBQ3hCLENBQUM7WUFFRixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFVLEdBQUcsT0FBTyxVQUFVLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQzdFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQzVDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNqQixNQUFNLEdBQUcsR0FBRyxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sSUFBSSxHQUFHLEVBQUUsT0FBTyxJQUFJLHlCQUF5QixDQUFDO2dCQUM3RSxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ2hGLENBQUMsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMseUdBQXlHLENBQUMsQ0FBQyxDQUFDO0lBQ2hKLENBQUM7d0dBckNVLDJCQUEyQjs0R0FBM0IsMkJBQTJCOzs0RkFBM0IsMkJBQTJCO2tCQUR2QyxVQUFVOztBQXlDWCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRywyQkFBMkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBSZXBvcnREYXRhU291cmNlQWRhcHRlciB9IGZyb20gJy4uL2NvbnRyYWN0cy9kYXRhLXNvdXJjZS5jb250cmFjdCc7XG5pbXBvcnQgeyBSZXBvcnREYXRhU291cmNlRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzL3JlcG9ydC1kYXRhc291cmNlLm1vZGVsJztcbmltcG9ydCB7IFJFUE9SVElOR19DT05GSUcgfSBmcm9tICcuLi8uLi9jb3JlL3Rva2Vucy9yZXBvcnRpbmctY29uZmlnLnRva2VuJztcbmltcG9ydCB7IFJlcG9ydFNlc3Npb25Db250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvcmVwb3J0LXNlc3Npb24tY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IEV4ZWN1dGVSZXBvcnRSZXF1ZXN0IH0gZnJvbSAnLi4vY29udHJhY3RzL2FwaS1kdG9zJztcbmltcG9ydCB7IGV4dHJhY3RSb3dBcnJheSB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMvZGF0YS1ub3JtYWxpemF0aW9uLnV0aWwnO1xuXG4vKipcbiAqIEJ1aWx0LWluIEhUVFAgYWRhcHRlciBmb3IgZXhlY3V0aW5nIHJlcG9ydCBkYXRhIHNvdXJjZXMgYWdhaW5zdCB0aGUgcmVwb3J0aW5nIGJhY2tlbmQuXG4gKiBBdXRvbWF0aWNhbGx5IGluamVjdHMgYWN0aXZlIG11bHRpLXRlbmFudCBzZXNzaW9uIGhlYWRlcnMgKFgtQ29tcGFueS1JZCwgWC1CcmFuY2gtSWQpXG4gKiBhbmQgcHJvcGFnYXRlcyBleGVjdXRpb24gZXJyb3JzIHRvIHRoZSBjYWxsZXIuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBIdHRwUmVwb3J0RGF0YVNvdXJjZUFkYXB0ZXIgZXh0ZW5kcyBSZXBvcnREYXRhU291cmNlQWRhcHRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50LCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZyA9IGluamVjdChSRVBPUlRJTkdfQ09ORklHLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIHJlYWRvbmx5IHNlc3Npb25TZXJ2aWNlID0gaW5qZWN0KFJlcG9ydFNlc3Npb25Db250ZXh0U2VydmljZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICBleGVjdXRlKFxuICAgIGRhdGFTb3VyY2U6IFJlcG9ydERhdGFTb3VyY2VEZWZpbml0aW9uLFxuICAgIHBhcmFtZXRlcnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICk6IE9ic2VydmFibGU8dW5rbm93bltdPiB7XG4gICAgY29uc3QgYmFzZVVybCA9IHRoaXMuY29uZmlnPy5hcGlCYXNlVXJsO1xuICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLnNlc3Npb25TZXJ2aWNlPy5zZXNzaW9uQ29udGV4dCgpID8/IHt9O1xuXG4gICAgaWYgKGJhc2VVcmwgJiYgdGhpcy5odHRwKSB7XG4gICAgICBsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xuICAgICAgaWYgKHNlc3Npb25bJ2NvbXBhbnlJZCddICE9PSB1bmRlZmluZWQgJiYgc2Vzc2lvblsnY29tcGFueUlkJ10gIT09IG51bGwpIHtcbiAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdYLUNvbXBhbnktSWQnLCBTdHJpbmcoc2Vzc2lvblsnY29tcGFueUlkJ10pKTtcbiAgICAgIH1cbiAgICAgIGlmIChzZXNzaW9uWydicmFuY2hJZCddICE9PSB1bmRlZmluZWQgJiYgc2Vzc2lvblsnYnJhbmNoSWQnXSAhPT0gbnVsbCkge1xuICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ1gtQnJhbmNoLUlkJywgU3RyaW5nKHNlc3Npb25bJ2JyYW5jaElkJ10pKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcGF5bG9hZDogRXhlY3V0ZVJlcG9ydFJlcXVlc3QgPSB7XG4gICAgICAgIGRhdGFTb3VyY2UsXG4gICAgICAgIHBhcmFtZXRlcnMsXG4gICAgICAgIHNlc3Npb25Db250ZXh0OiBzZXNzaW9uLFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PHVua25vd24+KGAke2Jhc2VVcmx9L2V4ZWN1dGVgLCBwYXlsb2FkLCB7IGhlYWRlcnMgfSkucGlwZShcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4gZXh0cmFjdFJvd0FycmF5KHJlc3BvbnNlKSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICAgIGNvbnN0IG1zZyA9IGVycj8uZXJyb3I/Lm1lc3NhZ2UgfHwgZXJyPy5tZXNzYWdlIHx8ICdSZXBvcnQgZXhlY3V0aW9uIGZhaWxlZCc7XG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKEFycmF5LmlzQXJyYXkobXNnKSA/IG1zZy5qb2luKCcsICcpIDogbXNnKSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcignW2J3YXlzLXJlcG9ydF0gSFRUUCBleGVjdXRpb24gcmVxdWlyZXMgSHR0cENsaWVudCBhbmQgYXBpQmFzZVVybC4gVXNlIHdpdGhMb2NhbFN0b3JhZ2UoKSBmb3IgbW9jayBkYXRhLicpKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgSHR0cERhdGFTb3VyY2VBZGFwdGVyID0gSHR0cFJlcG9ydERhdGFTb3VyY2VBZGFwdGVyO1xuIl19
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1kYXRhc291cmNlLmFkYXB0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9kYXRhLWFjY2Vzcy9hZGFwdGVycy9odHRwLWRhdGFzb3VyY2UuYWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNqRixPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUU1RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUVqRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMENBQTBDLENBQUM7O0FBRTNFOzs7O0dBSUc7QUFFSCxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsdUJBQXVCO0lBQ3JELElBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDOUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELGNBQWMsR0FBRyxNQUFNLENBQUMsMkJBQTJCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUUxRixPQUFPLENBQ0wsVUFBc0MsRUFDdEMsVUFBbUM7UUFFbkMsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLGtCQUFrQixJQUFJLFVBQVUsQ0FBQyxJQUFJLEtBQUssa0JBQWtCLElBQUksVUFBVSxDQUFDLElBQUksS0FBSyxXQUFXLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDOUksSUFBSSxDQUFDO2dCQUFDLFVBQVUsR0FBRyx1QkFBdUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUFDLENBQUM7WUFDekQsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFBQyxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUFDLENBQUM7UUFDbkQsQ0FBQztRQUNELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDO1FBQ3hDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxDQUFDO1FBRTVELElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN6QixJQUFJLE9BQU8sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2hDLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLFNBQVMsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ3hFLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0RSxDQUFDO1lBQ0QsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssU0FBUyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDdEUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BFLENBQUM7WUFFRCxNQUFNLE9BQU8sR0FBeUI7Z0JBQ3BDLFVBQVU7Z0JBQ1YsVUFBVTtnQkFDVixjQUFjLEVBQUUsT0FBTzthQUN4QixDQUFDO1lBRUYsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBVSxHQUFHLE9BQU8sVUFBVSxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUM3RSxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUM1QyxVQUFVLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDakIsTUFBTSxHQUFHLEdBQUcsR0FBRyxFQUFFLEtBQUssRUFBRSxPQUFPLElBQUksR0FBRyxFQUFFLE9BQU8sSUFBSSx5QkFBeUIsQ0FBQztnQkFDN0UsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNoRixDQUFDLENBQUMsQ0FDSCxDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLHlHQUF5RyxDQUFDLENBQUMsQ0FBQztJQUNoSixDQUFDO3dHQXpDVSwyQkFBMkI7NEdBQTNCLDJCQUEyQjs7NEZBQTNCLDJCQUEyQjtrQkFEdkMsVUFBVTs7QUE2Q1gsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsMkJBQTJCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBub3JtYWxpemVQYXJhbWV0ZXJOYW1lcyB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMvcmVwb3J0LXBhcmFtZXRlci51dGlsJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBSZXBvcnREYXRhU291cmNlQWRhcHRlciB9IGZyb20gJy4uL2NvbnRyYWN0cy9kYXRhLXNvdXJjZS5jb250cmFjdCc7XG5pbXBvcnQgeyBSZXBvcnREYXRhU291cmNlRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzL3JlcG9ydC1kYXRhc291cmNlLm1vZGVsJztcbmltcG9ydCB7IFJFUE9SVElOR19DT05GSUcgfSBmcm9tICcuLi8uLi9jb3JlL3Rva2Vucy9yZXBvcnRpbmctY29uZmlnLnRva2VuJztcbmltcG9ydCB7IFJlcG9ydFNlc3Npb25Db250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvcmVwb3J0LXNlc3Npb24tY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IEV4ZWN1dGVSZXBvcnRSZXF1ZXN0IH0gZnJvbSAnLi4vY29udHJhY3RzL2FwaS1kdG9zJztcbmltcG9ydCB7IGV4dHJhY3RSb3dBcnJheSB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMvZGF0YS1ub3JtYWxpemF0aW9uLnV0aWwnO1xuXG4vKipcbiAqIEJ1aWx0LWluIEhUVFAgYWRhcHRlciBmb3IgZXhlY3V0aW5nIHJlcG9ydCBkYXRhIHNvdXJjZXMgYWdhaW5zdCB0aGUgcmVwb3J0aW5nIGJhY2tlbmQuXG4gKiBBdXRvbWF0aWNhbGx5IGluamVjdHMgYWN0aXZlIG11bHRpLXRlbmFudCBzZXNzaW9uIGhlYWRlcnMgKFgtQ29tcGFueS1JZCwgWC1CcmFuY2gtSWQpXG4gKiBhbmQgcHJvcGFnYXRlcyBleGVjdXRpb24gZXJyb3JzIHRvIHRoZSBjYWxsZXIuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBIdHRwUmVwb3J0RGF0YVNvdXJjZUFkYXB0ZXIgZXh0ZW5kcyBSZXBvcnREYXRhU291cmNlQWRhcHRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50LCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZyA9IGluamVjdChSRVBPUlRJTkdfQ09ORklHLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIHJlYWRvbmx5IHNlc3Npb25TZXJ2aWNlID0gaW5qZWN0KFJlcG9ydFNlc3Npb25Db250ZXh0U2VydmljZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICBleGVjdXRlKFxuICAgIGRhdGFTb3VyY2U6IFJlcG9ydERhdGFTb3VyY2VEZWZpbml0aW9uLFxuICAgIHBhcmFtZXRlcnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICk6IE9ic2VydmFibGU8dW5rbm93bltdPiB7XG4gICAgaWYgKGRhdGFTb3VyY2UubWV0aG9kID09PSAnU1RPUkVEX1BST0NFRFVSRScgfHwgZGF0YVNvdXJjZS50eXBlID09PSAnc3RvcmVkX3Byb2NlZHVyZScgfHwgZGF0YVNvdXJjZS50eXBlID09PSAncHJvY2VkdXJlJyB8fCAhZGF0YVNvdXJjZS50eXBlKSB7XG4gICAgICB0cnkgeyBwYXJhbWV0ZXJzID0gbm9ybWFsaXplUGFyYW1ldGVyTmFtZXMocGFyYW1ldGVycyk7IH1cbiAgICAgIGNhdGNoIChlcnJvcikgeyByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7IH1cbiAgICB9XG4gICAgY29uc3QgYmFzZVVybCA9IHRoaXMuY29uZmlnPy5hcGlCYXNlVXJsO1xuICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLnNlc3Npb25TZXJ2aWNlPy5zZXNzaW9uQ29udGV4dCgpID8/IHt9O1xuXG4gICAgaWYgKGJhc2VVcmwgJiYgdGhpcy5odHRwKSB7XG4gICAgICBsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xuICAgICAgaWYgKHNlc3Npb25bJ2NvbXBhbnlJZCddICE9PSB1bmRlZmluZWQgJiYgc2Vzc2lvblsnY29tcGFueUlkJ10gIT09IG51bGwpIHtcbiAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdYLUNvbXBhbnktSWQnLCBTdHJpbmcoc2Vzc2lvblsnY29tcGFueUlkJ10pKTtcbiAgICAgIH1cbiAgICAgIGlmIChzZXNzaW9uWydicmFuY2hJZCddICE9PSB1bmRlZmluZWQgJiYgc2Vzc2lvblsnYnJhbmNoSWQnXSAhPT0gbnVsbCkge1xuICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ1gtQnJhbmNoLUlkJywgU3RyaW5nKHNlc3Npb25bJ2JyYW5jaElkJ10pKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcGF5bG9hZDogRXhlY3V0ZVJlcG9ydFJlcXVlc3QgPSB7XG4gICAgICAgIGRhdGFTb3VyY2UsXG4gICAgICAgIHBhcmFtZXRlcnMsXG4gICAgICAgIHNlc3Npb25Db250ZXh0OiBzZXNzaW9uLFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PHVua25vd24+KGAke2Jhc2VVcmx9L2V4ZWN1dGVgLCBwYXlsb2FkLCB7IGhlYWRlcnMgfSkucGlwZShcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4gZXh0cmFjdFJvd0FycmF5KHJlc3BvbnNlKSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICAgIGNvbnN0IG1zZyA9IGVycj8uZXJyb3I/Lm1lc3NhZ2UgfHwgZXJyPy5tZXNzYWdlIHx8ICdSZXBvcnQgZXhlY3V0aW9uIGZhaWxlZCc7XG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKEFycmF5LmlzQXJyYXkobXNnKSA/IG1zZy5qb2luKCcsICcpIDogbXNnKSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcignW2J3YXlzLXJlcG9ydF0gSFRUUCBleGVjdXRpb24gcmVxdWlyZXMgSHR0cENsaWVudCBhbmQgYXBpQmFzZVVybC4gVXNlIHdpdGhMb2NhbFN0b3JhZ2UoKSBmb3IgbW9jayBkYXRhLicpKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgSHR0cERhdGFTb3VyY2VBZGFwdGVyID0gSHR0cFJlcG9ydERhdGFTb3VyY2VBZGFwdGVyO1xuIl19