bways-report 0.1.9 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +506 -313
- package/esm2022/lib/core/config/bways-report-config.mjs +29 -32
- package/esm2022/lib/core/models/report-datasource.model.mjs +1 -1
- package/esm2022/lib/core/models/report-grid.model.mjs +1 -1
- package/esm2022/lib/core/services/report-api-execution.service.mjs +33 -11
- package/esm2022/lib/core/services/report-overlay.service.mjs +79 -0
- package/esm2022/lib/core/services/report-session-context.service.mjs +72 -3
- package/esm2022/lib/core/tokens/designer-config.token.mjs +4 -0
- package/esm2022/lib/core/tokens/reporting-config.token.mjs +1 -1
- package/esm2022/lib/core/utils/report-endpoint.util.mjs +22 -0
- package/esm2022/lib/core/utils/report-parameter.util.mjs +68 -15
- package/esm2022/lib/core/utils/report-request-scope.mjs +48 -0
- package/esm2022/lib/data-access/adapters/endpoint-datasource.adapter.mjs +16 -1
- package/esm2022/lib/data-access/adapters/endpoint-lookup.adapter.mjs +14 -2
- package/esm2022/lib/data-access/adapters/endpoint-masterdata.adapter.mjs +5 -2
- package/esm2022/lib/data-access/adapters/endpoint-persistence.adapter.mjs +30 -14
- package/esm2022/lib/data-access/adapters/endpoint-schema-discovery.adapter.mjs +32 -28
- package/esm2022/lib/data-access/adapters/endpoint-tokens.mjs +1 -1
- package/esm2022/lib/data-access/adapters/http-datasource.adapter.mjs +13 -37
- package/esm2022/lib/data-access/adapters/http-lookup.adapter.mjs +13 -50
- package/esm2022/lib/data-access/adapters/http-persistence.adapter.mjs +43 -194
- package/esm2022/lib/data-access/adapters/http-schema-discovery.adapter.mjs +17 -65
- package/esm2022/lib/data-access/adapters/index.mjs +1 -1
- package/esm2022/lib/data-access/adapters/local-storage-persistence.adapter.mjs +13 -4
- package/esm2022/lib/data-access/adapters/report-id-availability.mjs +20 -0
- package/esm2022/lib/data-access/adapters/session-headers.mjs +11 -0
- package/esm2022/lib/data-access/contracts/index.mjs +1 -1
- package/esm2022/lib/data-access/contracts/report-persistence.contract.mjs +13 -1
- package/esm2022/lib/features/designer/components/design-canvas/design-canvas.component.mjs +53 -41
- package/esm2022/lib/features/designer/components/dialogs/report-saved-dialog.component.mjs +551 -123
- package/esm2022/lib/features/designer/components/property-editor/parameter-binding-editor.component.mjs +39 -6
- package/esm2022/lib/features/designer/components/property-editor/property-editor-datasource.component.mjs +12 -6
- package/esm2022/lib/features/designer/components/property-editor/property-editor-grid.component.mjs +11 -10
- package/esm2022/lib/features/designer/components/property-editor/property-editor.component.mjs +13 -6
- package/esm2022/lib/features/designer/components/toolbar/designer-toolbar.component.mjs +54 -32
- package/esm2022/lib/features/designer/designer.component.mjs +107 -69
- package/esm2022/lib/features/designer/rpt-report-designer.component.mjs +10 -4
- package/esm2022/lib/features/designer/services/designer-config.service.mjs +56 -0
- package/esm2022/lib/features/designer/services/designer-endpoints.service.mjs +155 -0
- package/esm2022/lib/features/designer/services/designer-state.service.mjs +3 -2
- package/esm2022/lib/features/embed/bways-report-builder.component.mjs +3 -3
- package/esm2022/lib/features/export/services/report-export.service.mjs +11 -6
- package/esm2022/lib/features/persistence/services/report-store.service.mjs +78 -23
- package/esm2022/lib/features/persistence/services/schema-validator.service.mjs +59 -3
- package/esm2022/lib/features/routing/components/routed-report-designer.component.mjs +12 -17
- package/esm2022/lib/features/routing/components/routed-report-runtime.component.mjs +5 -3
- package/esm2022/lib/features/routing/report-routes.mjs +6 -6
- package/esm2022/lib/features/routing/resolvers/report-route-identifier.mjs +5 -0
- package/esm2022/lib/features/routing/resolvers/report.resolver.mjs +3 -2
- package/esm2022/lib/features/runtime/dynamic-renderer.component.mjs +2 -2
- package/esm2022/lib/features/runtime/report-execution.service.mjs +52 -8
- package/esm2022/lib/features/runtime/report-grid-bridge.component.mjs +18 -21
- package/esm2022/lib/features/runtime/report-runtime.component.mjs +94 -71
- package/esm2022/lib/features/runtime/rpt-report.component.mjs +49 -41
- package/esm2022/lib/primitives/components/chart-bridge/report-chart-bridge.component.mjs +7 -2
- package/esm2022/lib/primitives/components/dropdown/rpt-dropdown.component.mjs +21 -10
- package/esm2022/lib/primitives/components/icon/rpt-icon.component.mjs +13 -1
- package/esm2022/lib/primitives/components/radio/rpt-radio.component.mjs +15 -5
- package/esm2022/lib/primitives/components/searchable-select/rpt-searchable-select.component.mjs +6 -6
- package/esm2022/lib/provide-reporting.mjs +9 -29
- package/fesm2022/bways-report.mjs +2072 -1088
- package/fesm2022/bways-report.mjs.map +1 -1
- package/lib/core/config/bways-report-config.d.ts +14 -5
- package/lib/core/models/report-datasource.model.d.ts +5 -0
- package/lib/core/models/report-grid.model.d.ts +1 -1
- package/lib/core/services/report-overlay.service.d.ts +14 -0
- package/lib/core/services/report-session-context.service.d.ts +9 -0
- package/lib/core/tokens/designer-config.token.d.ts +4 -0
- package/lib/core/tokens/reporting-config.token.d.ts +4 -0
- package/lib/core/utils/report-endpoint.util.d.ts +12 -0
- package/lib/core/utils/report-parameter.util.d.ts +13 -1
- package/lib/core/utils/report-request-scope.d.ts +14 -0
- package/lib/data-access/adapters/endpoint-persistence.adapter.d.ts +6 -2
- package/lib/data-access/adapters/endpoint-schema-discovery.adapter.d.ts +4 -2
- package/lib/data-access/adapters/endpoint-tokens.d.ts +4 -0
- package/lib/data-access/adapters/http-datasource.adapter.d.ts +1 -3
- package/lib/data-access/adapters/http-lookup.adapter.d.ts +1 -3
- package/lib/data-access/adapters/http-persistence.adapter.d.ts +11 -16
- package/lib/data-access/adapters/http-schema-discovery.adapter.d.ts +3 -5
- package/lib/data-access/adapters/index.d.ts +1 -1
- package/lib/data-access/adapters/local-storage-persistence.adapter.d.ts +2 -2
- package/lib/data-access/adapters/report-id-availability.d.ts +6 -0
- package/lib/data-access/adapters/session-headers.d.ts +3 -0
- package/lib/data-access/contracts/index.d.ts +1 -0
- package/lib/data-access/contracts/report-persistence.contract.d.ts +16 -1
- package/lib/features/designer/components/design-canvas/design-canvas.component.d.ts +2 -0
- package/lib/features/designer/components/dialogs/report-saved-dialog.component.d.ts +37 -5
- package/lib/features/designer/components/property-editor/parameter-binding-editor.component.d.ts +5 -0
- package/lib/features/designer/components/property-editor/property-editor-datasource.component.d.ts +4 -3
- package/lib/features/designer/components/property-editor/property-editor-grid.component.d.ts +1 -0
- package/lib/features/designer/components/property-editor/property-editor.component.d.ts +1 -0
- package/lib/features/designer/components/toolbar/designer-toolbar.component.d.ts +7 -1
- package/lib/features/designer/designer.component.d.ts +16 -2
- package/lib/features/designer/rpt-report-designer.component.d.ts +5 -1
- package/lib/features/designer/services/designer-config.service.d.ts +13 -0
- package/lib/features/designer/services/designer-endpoints.service.d.ts +25 -0
- package/lib/features/persistence/services/report-store.service.d.ts +15 -1
- package/lib/features/persistence/services/schema-validator.service.d.ts +2 -0
- package/lib/features/routing/resolvers/report-route-identifier.d.ts +2 -0
- package/lib/features/runtime/report-execution.service.d.ts +3 -0
- package/lib/features/runtime/report-grid-bridge.component.d.ts +3 -2
- package/lib/features/runtime/report-runtime.component.d.ts +1 -0
- package/lib/features/runtime/rpt-report.component.d.ts +5 -0
- package/lib/primitives/components/chart-bridge/report-chart-bridge.component.d.ts +3 -1
- package/lib/primitives/components/dropdown/rpt-dropdown.component.d.ts +1 -2
- package/lib/primitives/components/searchable-select/rpt-searchable-select.component.d.ts +0 -1
- package/package.json +9 -5
- package/styles/theme.css +184 -0
- package/third-party-notices/angular-cdk-LICENSE.txt +21 -0
|
@@ -1,11 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* Simplified configuration for bways-report.
|
|
3
|
-
*
|
|
4
|
-
* This is the developer-facing config object that makes integration
|
|
5
|
-
* as simple as 3–4 endpoint URLs + optional overrides.
|
|
6
|
-
* The normalizer converts this into the internal `ReportingConfig`
|
|
7
|
-
* plus adapter wiring decisions.
|
|
8
|
-
*/
|
|
1
|
+
import { resolveReportsEndpoint } from '../utils/report-endpoint.util';
|
|
9
2
|
/**
|
|
10
3
|
* Mapping from friendly palette category names to internal category IDs.
|
|
11
4
|
*/
|
|
@@ -18,22 +11,29 @@ export const PALETTE_CATEGORY_MAP = {
|
|
|
18
11
|
};
|
|
19
12
|
/**
|
|
20
13
|
* Normalizes a `BwaysReportConfig` into the internal format.
|
|
21
|
-
* Validates
|
|
14
|
+
* Validates supplied endpoints and maps friendly names to internal IDs.
|
|
22
15
|
*/
|
|
23
16
|
export function normalizeBwaysConfig(config) {
|
|
24
|
-
//
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
17
|
+
// Capabilities are optional; validate only URLs the host supplies.
|
|
18
|
+
for (const key of ['spEndpoint', 'tablesEndpoint', 'executeEndpoint', 'lookupEndpoint', 'reportsEndpoint', 'apisEndpoint']) {
|
|
19
|
+
if (config[key] !== undefined && (typeof config[key] !== 'string' || !config[key]?.trim())) {
|
|
20
|
+
throw new Error('[bways-report] "' + key + '" must be a non-empty URL when supplied.');
|
|
21
|
+
}
|
|
28
22
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
33
|
-
if (!config.executeEndpoint || typeof config.executeEndpoint !== 'string' || config.executeEndpoint.trim() === '') {
|
|
34
|
-
throw new Error(`[bways-report] "executeEndpoint" is required in BwaysReportConfig. ` +
|
|
35
|
-
`Please provide the URL for executing queries, e.g. '/api/reporting/execute'.`);
|
|
23
|
+
for (const key of ['lookupTimeoutMs', 'executionTimeoutMs']) {
|
|
24
|
+
if (config[key] !== undefined && (!Number.isFinite(config[key]) || config[key] <= 0))
|
|
25
|
+
throw new Error(key + ' must be a positive timeout.');
|
|
36
26
|
}
|
|
27
|
+
if (config.trustedApiOrigins !== undefined && (!Array.isArray(config.trustedApiOrigins) || config.trustedApiOrigins.some(origin => {
|
|
28
|
+
try {
|
|
29
|
+
const parsed = new URL(origin);
|
|
30
|
+
return !/^https?:$/.test(parsed.protocol) || parsed.origin !== origin || !!parsed.username || !!parsed.password;
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
})))
|
|
36
|
+
throw new Error('trustedApiOrigins must contain exact HTTP(S) origins, without paths or credentials.');
|
|
37
37
|
// Map component palette categories
|
|
38
38
|
let allowedCategories = null;
|
|
39
39
|
if (config.components && config.components.length > 0) {
|
|
@@ -47,23 +47,18 @@ export function normalizeBwaysConfig(config) {
|
|
|
47
47
|
return internal;
|
|
48
48
|
});
|
|
49
49
|
}
|
|
50
|
-
|
|
51
|
-
const reportsEndpoint = config.reportsEndpoint?.trim() || null;
|
|
52
|
-
if (!reportsEndpoint) {
|
|
53
|
-
console.warn(`[bways-report] No "reportsEndpoint" provided. Reports will be saved to browser localStorage. ` +
|
|
54
|
-
`For shared report menus across users, provide a reportsEndpoint, e.g. '/api/reporting/reports'.`);
|
|
55
|
-
}
|
|
50
|
+
const reportsEndpoint = resolveReportsEndpoint(config);
|
|
56
51
|
const lookupEndpoint = config.lookupEndpoint?.trim()
|
|
57
52
|
? cleanUrl(config.lookupEndpoint)
|
|
58
|
-
: config.executeEndpoint
|
|
53
|
+
: config.executeEndpoint?.includes('/execute')
|
|
59
54
|
? cleanUrl(config.executeEndpoint.replace(/\/execute\/?$/, '/lookup'))
|
|
60
55
|
: null;
|
|
61
56
|
return {
|
|
62
|
-
spEndpoint: cleanUrl(config.spEndpoint),
|
|
63
|
-
tablesEndpoint: cleanUrl(config.tablesEndpoint),
|
|
64
|
-
executeEndpoint: cleanUrl(config.executeEndpoint),
|
|
57
|
+
spEndpoint: config.spEndpoint ? cleanUrl(config.spEndpoint) : '',
|
|
58
|
+
tablesEndpoint: config.tablesEndpoint ? cleanUrl(config.tablesEndpoint) : '',
|
|
59
|
+
executeEndpoint: config.executeEndpoint ? cleanUrl(config.executeEndpoint) : '',
|
|
65
60
|
lookupEndpoint,
|
|
66
|
-
reportsEndpoint
|
|
61
|
+
reportsEndpoint,
|
|
67
62
|
apisEndpoint: config.apisEndpoint?.trim() ? cleanUrl(config.apisEndpoint) : null,
|
|
68
63
|
apiEndpoints: Array.isArray(config.apiEndpoints) ? config.apiEndpoints : [],
|
|
69
64
|
allowedCategories,
|
|
@@ -76,10 +71,12 @@ export function normalizeBwaysConfig(config) {
|
|
|
76
71
|
defaultPageSize: config.defaultPageSize ?? 25,
|
|
77
72
|
dateFormat: config.dateFormat ?? 'dd/MM/yyyy',
|
|
78
73
|
lookupTimeoutMs: config.lookupTimeoutMs ?? 300000,
|
|
74
|
+
executionTimeoutMs: config.executionTimeoutMs,
|
|
75
|
+
trustedApiOrigins: config.trustedApiOrigins ?? [],
|
|
79
76
|
};
|
|
80
77
|
}
|
|
81
78
|
/** Remove trailing slashes from a URL */
|
|
82
79
|
function cleanUrl(url) {
|
|
83
80
|
return url.trim().replace(/\/+$/, '');
|
|
84
81
|
}
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYndheXMtcmVwb3J0LWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J3YXlzLXJlcG9ydC9zcmMvbGliL2NvcmUvY29uZmlnL2J3YXlzLXJlcG9ydC1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQXdCSDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFvQztJQUNuRSxVQUFVLEVBQUUsT0FBTztJQUNuQixhQUFhLEVBQUUsUUFBUTtJQUN2QixhQUFhLEVBQUUsU0FBUztJQUN4QixXQUFXLEVBQUUsTUFBTTtJQUNuQixNQUFNLEVBQUUsUUFBUTtDQUNqQixDQUFDO0FBaUxGOzs7R0FHRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxNQUF5QjtJQUM1RCw4QkFBOEI7SUFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksT0FBTyxNQUFNLENBQUMsVUFBVSxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQ25HLE1BQU0sSUFBSSxLQUFLLENBQ2IsZ0VBQWdFO1lBQ2hFLDBGQUEwRixDQUMzRixDQUFDO0lBQ0osQ0FBQztJQUNELElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxJQUFJLE9BQU8sTUFBTSxDQUFDLGNBQWMsS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUMvRyxNQUFNLElBQUksS0FBSyxDQUNiLG9FQUFvRTtZQUNwRSxpRkFBaUYsQ0FDbEYsQ0FBQztJQUNKLENBQUM7SUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsSUFBSSxPQUFPLE1BQU0sQ0FBQyxlQUFlLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLEtBQUssRUFB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QUFNLENBQUMsVUFBVSxJQUFJLFlBQVk7UUFDN0MsZUFBZSxFQUFFLE1BQU0sQ0FBQyxlQUFlLElBQUksTUFBTTtLQUNsRCxDQUFDO0FBQ0osQ0FBQztBQUVELHlDQUF5QztBQUN6QyxTQUFTLFFBQVEsQ0FBQyxHQUFXO0lBQzNCLE9BQU8sR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDeEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU2ltcGxpZmllZCBjb25maWd1cmF0aW9uIGZvciBid2F5cy1yZXBvcnQuXG4gKlxuICogVGhpcyBpcyB0aGUgZGV2ZWxvcGVyLWZhY2luZyBjb25maWcgb2JqZWN0IHRoYXQgbWFrZXMgaW50ZWdyYXRpb25cbiAqIGFzIHNpbXBsZSBhcyAz4oCTNCBlbmRwb2ludCBVUkxzICsgb3B0aW9uYWwgb3ZlcnJpZGVzLlxuICogVGhlIG5vcm1hbGl6ZXIgY29udmVydHMgdGhpcyBpbnRvIHRoZSBpbnRlcm5hbCBgUmVwb3J0aW5nQ29uZmlnYFxuICogcGx1cyBhZGFwdGVyIHdpcmluZyBkZWNpc2lvbnMuXG4gKi9cblxuaW1wb3J0IHsgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2Vzc2lvbkNvbnRleHRQcm92aWRlciwgU2Vzc2lvbkNvbnRleHRTb3VyY2UgfSBmcm9tICcuLi90b2tlbnMvc2Vzc2lvbi1jb250ZXh0LnRva2VuJztcbmltcG9ydCB7IFJlcG9ydEFwaUVuZHBvaW50RGVmaW5pdGlvbiB9IGZyb20gJy4uL21vZGVscy9yZXBvcnQtYXBpLWVuZHBvaW50Lm1vZGVsJztcblxuLyoqXG4gKiBQYWxldHRlIGNvbXBvbmVudCBjYXRlZ29yeSBuYW1lcyB0aGUgZGV2ZWxvcGVyIGNhbiB1c2VcbiAqIHdoZW4gcmVzdHJpY3RpbmcgdGhlIGRlc2lnbmVyIGNvbXBvbmVudCBwYWxldHRlLlxuICpcbiAqIE1hcHMgdG8gaW50ZXJuYWwgcmVnaXN0cnkgY2F0ZWdvcnkgSURzOlxuICogLSBgZm9ybUlucHV0c2AgICAg4oaSIGBpbnB1dGBcbiAqIC0gYGFjdGlvbkJ1dHRvbnNgIOKGkiBgYWN0aW9uYFxuICogLSBgZGlzcGxheUxhYmVsc2Ag4oaSIGBkaXNwbGF5YFxuICogLSBgZGF0YUxvb2t1cHNgICAg4oaSIGBkYXRhYFxuICogLSBgbGF5b3V0YCAgICAgICAg4oaSIGBsYXlvdXRgXG4gKi9cbmV4cG9ydCB0eXBlIFBhbGV0dGVDYXRlZ29yeSA9XG4gIHwgJ2Zvcm1JbnB1dHMnXG4gIHwgJ2FjdGlvbkJ1dHRvbnMnXG4gIHwgJ2Rpc3BsYXlMYWJlbHMnXG4gIHwgJ2RhdGFMb29rdXBzJ1xuICB8ICdsYXlvdXQnO1xuXG4vKipcbiAqIE1hcHBpbmcgZnJvbSBmcmllbmRseSBwYWxldHRlIGNhdGVnb3J5IG5hbWVzIHRvIGludGVybmFsIGNhdGVnb3J5IElEcy5cbiAqL1xuZXhwb3J0IGNvbnN0IFBBTEVUVEVfQ0FURUdPUllfTUFQOiBSZWNvcmQ8UGFsZXR0ZUNhdGVnb3J5LCBzdHJpbmc+ID0ge1xuICBmb3JtSW5wdXRzOiAnaW5wdXQnLFxuICBhY3Rpb25CdXR0b25zOiAnYWN0aW9uJyxcbiAgZGlzcGxheUxhYmVsczogJ2Rpc3BsYXknLFxuICBkYXRhTG9va3VwczogJ2RhdGEnLFxuICBsYXlvdXQ6ICdsYXlvdXQnLFxufTtcblxuLyoqXG4gKiBTaW1wbGlmaWVkLCBkZXZlbG9wZXItZmFjaW5nIGNvbmZpZ3VyYXRpb24gZm9yIGJ3YXlzLXJlcG9ydC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcmVwb3J0Q29uZmlnOiBCd2F5c1JlcG9ydENvbmZpZyA9IHtcbiAqICAgc3BFbmRwb2ludDogICAgICAnL2FwaS9yZXBvcnRpbmcvcHJvY2VkdXJlcycsXG4gKiAgIHRhYmxlc0VuZHBvaW50OiAgJy9hcGkvcmVwb3J0aW5nL3RhYmxlcycsXG4gKiAgIGV4ZWN1dGVFbmRwb2ludDogJy9hcGkvcmVwb3J0aW5nL2V4ZWN1dGUnLFxuICogICByZXBvcnRzRW5kcG9pbnQ6ICcvYXBpL3JlcG9ydGluZy9yZXBvcnRzJyxcbiAqICAgY29tcG9uZW50czogWydmb3JtSW5wdXRzJywgJ2FjdGlvbkJ1dHRvbnMnLCAnZGlzcGxheUxhYmVscyddLFxuICogICBhdXRvUGFyYW1ldGVyOiB0cnVlLFxuICogICBzZXNzaW9uOiAoKSA9PiBpbmplY3QoQXV0aFNlcnZpY2UpLnNlc3Npb24oKSxcbiAqICAgcm91dGVCYXNlOiAncmVwb3J0cycsXG4gKiB9O1xuICogYGBgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQndheXNSZXBvcnRDb25maWcge1xuICAvLyDilIDilIDilIAgQmFja2VuZCBlbmRwb2ludHMgKHRoZSAz4oCTNCBlbmRwb2ludCBjb250cmFjdCkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbiAgLyoqXG4gICAqIEdFVCBlbmRwb2ludCByZXR1cm5pbmcgdGhlIGxpc3Qgb2Ygc3RvcmVkIHByb2NlZHVyZXMgd2l0aCB0aGVpciBwYXJhbWV0ZXJzLlxuICAgKiBSZXNwb25zZTogYFt7IG5hbWUsIHNjaGVtYSwgcGFyYW1ldGVyczogW3sgbmFtZSwgc3FsVHlwZSwgcmVxdWlyZWQsIGRlZmF1bHRWYWx1ZT8gfV0gfV1gXG4gICAqL1xuICBzcEVuZHBvaW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdFVCBlbmRwb2ludCByZXR1cm5pbmcgdGhlIGxpc3Qgb2YgdGFibGVzL3ZpZXdzIHdpdGggdGhlaXIgY29sdW1ucy5cbiAgICogUmVzcG9uc2U6IGBbeyBuYW1lLCBzY2hlbWEsIHR5cGU6ICd0YWJsZSd8J3ZpZXcnLCBjb2x1bW5zOiBbeyBuYW1lLCBzcWxUeXBlIH1dIH1dYFxuICAgKi9cbiAgdGFibGVzRW5kcG9pbnQ6IHN0cmluZztcblxuICAvKipcbiAgICogUE9TVCBlbmRwb2ludCB0aGF0IHJ1bnMgYSBzdG9yZWQgcHJvY2VkdXJlIG9yIHRhYmxlIHF1ZXJ5IGFuZCByZXR1cm5zIHJvd3MuXG4gICAqIEJvZHk6IGB7IGtpbmQ6ICdwcm9jZWR1cmUnfCd0YWJsZScsIG5hbWUsIHNjaGVtYSwgcGFyYW1ldGVycywgY29sdW1ucz8sIHRvcD8gfWBcbiAgICogUmVzcG9uc2U6IGByb3dzW11gXG4gICAqL1xuICBleGVjdXRlRW5kcG9pbnQ6IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgUE9TVCBlbmRwb2ludCBmb3IgZmV0Y2hpbmcgZHJvcGRvd24gbWFzdGVyIGRhdGEgYW5kIGxvb2t1cCBvcHRpb25zLlxuICAgKiBEZWZhdWx0cyB0byByZXBsYWNpbmcgYC9leGVjdXRlYCB3aXRoIGAvbG9va3VwYCBpZiBvbWl0dGVkLlxuICAgKi9cbiAgbG9va3VwRW5kcG9pbnQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIENSVUQgZW5kcG9pbnQgZm9yIHNhdmluZy9sb2FkaW5nIHJlcG9ydCBwYWdlIGRlZmluaXRpb25zLlxuICAgKiBXaGVuIG9taXR0ZWQsIHJlcG9ydHMgYXJlIHNhdmVkIHRvIGJyb3dzZXIgbG9jYWxTdG9yYWdlIHdpdGggYSBjb25zb2xlIHdhcm5pbmcuXG4gICAqIC0gR0VUICAgIOKGkiBsaXN0IHNhdmVkIHJlcG9ydHNcbiAgICogLSBHRVQgLzppZCDihpIgbG9hZCBhIHNwZWNpZmljIHJlcG9ydFxuICAgKiAtIFBPU1QgICDihpIgc2F2ZSBhIG5ldyBvciB1cGRhdGVkIHJlcG9ydFxuICAgKiAtIERFTEVURSAvOmlkIOKGkiBkZWxldGUgYSByZXBvcnRcbiAgICovXG4gIHJlcG9ydHNFbmRwb2ludD86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgR0VUIGVuZHBvaW50IHJldHVybmluZyB0aGUgY2F0YWxvZyBvZiByZWdpc3RlcmVkIFJFU1QgQVBJcy5cbiAgICogUmVzcG9uc2U6IFJlcG9ydEFwaUVuZHBvaW50RGVmaW5pdGlvbltdXG4gICAqL1xuICBhcGlzRW5kcG9pbnQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHN0YXRpYy9pbi1tZW1vcnkgQVBJIGVuZHBvaW50cyByZWdpc3RlcmVkIGRpcmVjdGx5IGluIHRoZSBob3N0IGFwcGxpY2F0aW9uLlxuICAgKiBNZXJnZWQgd2l0aCBiYWNrZW5kLWRpc2NvdmVyZWQgQVBJcyBpbiB0aGUgVmlzdWFsIERlc2lnbmVyLlxuICAgKi9cbiAgYXBpRW5kcG9pbnRzPzogUmVwb3J0QXBpRW5kcG9pbnREZWZpbml0aW9uW107XG5cbiAgLy8g4pSA4pSA4pSAIERlc2lnbmVyIG9wdGlvbnMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbiAgLyoqXG4gICAqIENvbXBvbmVudCBwYWxldHRlIGdyb3VwcyB0byBzaG93IGluIHRoZSBkZXNpZ25lci5cbiAgICogRGVmYXVsdHMgdG8gYWxsIGdyb3VwcyB3aGVuIG5vdCBzcGVjaWZpZWQuXG4gICAqXG4gICAqIEBleGFtcGxlIFsnZm9ybUlucHV0cycsICdhY3Rpb25CdXR0b25zJywgJ2Rpc3BsYXlMYWJlbHMnXVxuICAgKi9cbiAgY29tcG9uZW50cz86IFBhbGV0dGVDYXRlZ29yeVtdO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIHN0b3JlZCBwcm9jZWR1cmUgcGFyYW1ldGVycyBsaWtlIGBAQnJhbmNoSWRgLCBgQENvbXBhbnlJZGBcbiAgICogYXJlIGF1dG9tYXRpY2FsbHkgYm91bmQgZnJvbSB0aGUgc2Vzc2lvbiBjb250ZXh0LlxuICAgKiBSZXF1aXJlcyBgc2Vzc2lvbmAgdG8gYmUgcHJvdmlkZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGF1dG9QYXJhbWV0ZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTZXNzaW9uIGNvbnRleHQgcHJvdmlkZXIgZm9yIGF1dG8tcGFyYW1ldGVyIGJpbmRpbmcuXG4gICAqIENhbiBiZSBhIHNlcnZpY2UgY2xhc3MgaW1wbGVtZW50aW5nIGBTZXNzaW9uQ29udGV4dFByb3ZpZGVyYCxcbiAgICogYSBwbGFpbiBvYmplY3QsIGEgZmFjdG9yeSBmdW5jdGlvbiwgYW4gT2JzZXJ2YWJsZSwgb3IgYSBTaWduYWwuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHNlc3Npb246IFBsYXlncm91bmRTZXNzaW9uU2VydmljZVxuICAgKiBzZXNzaW9uOiAoKSA9PiBpbmplY3QoQXV0aFNlcnZpY2UpLnNlc3Npb24oKVxuICAgKiBzZXNzaW9uOiB7IGJyYW5jaElkOiAxLCBjb21wYW55SWQ6IDEwIH1cbiAgICovXG4gIHNlc3Npb24/OiBUeXBlPFNlc3Npb25Db250ZXh0UHJvdmlkZXI+IHwgU2Vzc2lvbkNvbnRleHRTb3VyY2UgfCAoKCkgPT4gUmVjb3JkPHN0cmluZywgdW5rbm93bj4pO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBzZXJ2aWNlIGNsYXNzIGltcGxlbWVudGluZyBgU2Vzc2lvbkNvbnRleHRQcm92aWRlcmAuXG4gICAqIEVxdWl2YWxlbnQgdG8gYHNlc3Npb246IE15U2Vzc2lvblNlcnZpY2VgLlxuICAgKi9cbiAgc2Vzc2lvblByb3ZpZGVyPzogVHlwZTxTZXNzaW9uQ29udGV4dFByb3ZpZGVyPjtcblxuICAvLyDilIDilIDilIAgTGl2ZSBwYWdlIG9wdGlvbnMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbiAgLyoqXG4gICAqIEJhc2UgcGF0aCBmb3IgbGl2ZSByZXBvcnQgcGFnZXMuXG4gICAqIEdlbmVyYXRlZCByZXBvcnQgcGFnZXMgb3BlbiBhdCBgLzxyb3V0ZUJhc2U+LzxzbHVnPmAuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdyZXBvcnRzJ1xuICAgKi9cbiAgcm91dGVCYXNlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBBbmd1bGFyIGNvbXBvbmVudCBmb3IgcmVuZGVyaW5nIGRhdGEgZ3JpZHMuXG4gICAqIFBhc3MgeW91ciBncmlkIGNvbXBvbmVudCAoQldheXMtZ3JpZCwgQUcgR3JpZCB3cmFwcGVyLCBldGMuKS5cbiAgICovXG4gIGdyaWQ/OiBUeXBlPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBBbmd1bGFyIGNvbXBvbmVudCBmb3IgcmVuZGVyaW5nIGNoYXJ0cy5cbiAgICovXG4gIGNoYXJ0PzogVHlwZTx1bmtub3duPjtcblxuICAvLyDilIDilIDilIAgR2VuZXJhbCBvcHRpb25zIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4gIC8qKiBEZWZhdWx0IHBhZ2Ugc2l6ZSBmb3IgZ3JpZCByZXN1bHRzLiBAZGVmYXVsdCAyNSAqL1xuICBkZWZhdWx0UGFnZVNpemU/OiBudW1iZXI7XG5cbiAgLyoqIERhdGUgZm9ybWF0IHN0cmluZyB1c2VkIGFjcm9zcyB0aGUgbGlicmFyeS4gQGRlZmF1bHQgJ2RkL01NL3l5eXknICovXG4gIGRhdGVGb3JtYXQ/OiBzdHJpbmc7XG5cbiAgLyoqIFRpbWVvdXQgaW4gbXMgZm9yIGxvb2t1cC9leGVjdXRlIHF1ZXJpZXMuIEBkZWZhdWx0IDMwMDAwMCAqL1xuICBsb29rdXBUaW1lb3V0TXM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogUmVzdWx0IG9mIG5vcm1hbGl6aW5nIGEgYEJ3YXlzUmVwb3J0Q29uZmlnYCBmb3IgaW50ZXJuYWwgdXNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vcm1hbGl6ZWRCd2F5c0NvbmZpZyB7XG4gIC8qKiBFbmRwb2ludCBVUkxzICovXG4gIHNwRW5kcG9pbnQ6IHN0cmluZztcbiAgdGFibGVzRW5kcG9pbnQ6IHN0cmluZztcbiAgZXhlY3V0ZUVuZHBvaW50OiBzdHJpbmc7XG4gIGxvb2t1cEVuZHBvaW50OiBzdHJpbmcgfCBudWxsO1xuICByZXBvcnRzRW5kcG9pbnQ6IHN0cmluZyB8IG51bGw7XG4gIGFwaXNFbmRwb2ludDogc3RyaW5nIHwgbnVsbDtcbiAgYXBpRW5kcG9pbnRzOiBSZXBvcnRBcGlFbmRwb2ludERlZmluaXRpb25bXTtcblxuICAvKiogUmVzb2x2ZWQgaW50ZXJuYWwgY2F0ZWdvcnkgSURzIChlLmcuIFsnaW5wdXQnLCAnYWN0aW9uJywgJ2Rpc3BsYXknXSkgKi9cbiAgYWxsb3dlZENhdGVnb3JpZXM6IHN0cmluZ1tdIHwgbnVsbDtcblxuICAvKiogV2hldGhlciBhdXRvLXBhcmFtZXRlciBiaW5kaW5nIGlzIGVuYWJsZWQgKi9cbiAgYXV0b1BhcmFtZXRlcjogYm9vbGVhbjtcblxuICAvKiogUm91dGUgYmFzZSBwYXRoICovXG4gIHJvdXRlQmFzZTogc3RyaW5nO1xuXG4gIC8qKiBTZXNzaW9uIHNvdXJjZSAqL1xuICBzZXNzaW9uOiBUeXBlPFNlc3Npb25Db250ZXh0UHJvdmlkZXI+IHwgU2Vzc2lvbkNvbnRleHRTb3VyY2UgfCAoKCkgPT4gUmVjb3JkPHN0cmluZywgdW5rbm93bj4pIHwgbnVsbDtcbiAgc2Vzc2lvblByb3ZpZGVyOiBUeXBlPFNlc3Npb25Db250ZXh0UHJvdmlkZXI+IHwgbnVsbDtcblxuICAvKiogR3JpZCBjb21wb25lbnQgKi9cbiAgZ3JpZENvbXBvbmVudDogVHlwZTx1bmtub3duPiB8IG51bGw7XG5cbiAgLyoqIENoYXJ0IGNvbXBvbmVudCAqL1xuICBjaGFydENvbXBvbmVudDogVHlwZTx1bmtub3duPiB8IG51bGw7XG5cbiAgLyoqIEdlbmVyYWwgY29uZmlnIHZhbHVlcyAqL1xuICBkZWZhdWx0UGFnZVNpemU6IG51bWJlcjtcbiAgZGF0ZUZvcm1hdDogc3RyaW5nO1xuICBsb29rdXBUaW1lb3V0TXM6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBOb3JtYWxpemVzIGEgYEJ3YXlzUmVwb3J0Q29uZmlnYCBpbnRvIHRoZSBpbnRlcm5hbCBmb3JtYXQuXG4gKiBWYWxpZGF0ZXMgcmVxdWlyZWQgZmllbGRzIGFuZCBtYXBzIGZyaWVuZGx5IG5hbWVzIHRvIGludGVybmFsIElEcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUJ3YXlzQ29uZmlnKGNvbmZpZzogQndheXNSZXBvcnRDb25maWcpOiBOb3JtYWxpemVkQndheXNDb25maWcge1xuICAvLyBWYWxpZGF0ZSByZXF1aXJlZCBlbmRwb2ludHNcbiAgaWYgKCFjb25maWcuc3BFbmRwb2ludCB8fCB0eXBlb2YgY29uZmlnLnNwRW5kcG9pbnQgIT09ICdzdHJpbmcnIHx8IGNvbmZpZy5zcEVuZHBvaW50LnRyaW0oKSA9PT0gJycpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgW2J3YXlzLXJlcG9ydF0gXCJzcEVuZHBvaW50XCIgaXMgcmVxdWlyZWQgaW4gQndheXNSZXBvcnRDb25maWcuIGAgK1xuICAgICAgYFBsZWFzZSBwcm92aWRlIHRoZSBVUkwgZm9yIGZldGNoaW5nIHN0b3JlZCBwcm9jZWR1cmVzLCBlLmcuICcvYXBpL3JlcG9ydGluZy9wcm9jZWR1cmVzJy5gXG4gICAgKTtcbiAgfVxuICBpZiAoIWNvbmZpZy50YWJsZXNFbmRwb2ludCB8fCB0eXBlb2YgY29uZmlnLnRhYmxlc0VuZHBvaW50ICE9PSAnc3RyaW5nJyB8fCBjb25maWcudGFibGVzRW5kcG9pbnQudHJpbSgpID09PSAnJykge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBbYndheXMtcmVwb3J0XSBcInRhYmxlc0VuZHBvaW50XCIgaXMgcmVxdWlyZWQgaW4gQndheXNSZXBvcnRDb25maWcuIGAgK1xuICAgICAgYFBsZWFzZSBwcm92aWRlIHRoZSBVUkwgZm9yIGZldGNoaW5nIHRhYmxlcy92aWV3cywgZS5nLiAnL2FwaS9yZXBvcnRpbmcvdGFibGVzJy5gXG4gICAgKTtcbiAgfVxuICBpZiAoIWNvbmZpZy5leGVjdXRlRW5kcG9pbnQgfHwgdHlwZW9mIGNvbmZpZy5leGVjdXRlRW5kcG9pbnQgIT09ICdzdHJpbmcnIHx8IGNvbmZpZy5leGVjdXRlRW5kcG9pbnQudHJpbSgpID09PSAnJykge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBbYndheXMtcmVwb3J0XSBcImV4ZWN1dGVFbmRwb2ludFwiIGlzIHJlcXVpcmVkIGluIEJ3YXlzUmVwb3J0Q29uZmlnLiBgICtcbiAgICAgIGBQbGVhc2UgcHJvdmlkZSB0aGUgVVJMIGZvciBleGVjdXRpbmcgcXVlcmllcywgZS5nLiAnL2FwaS9yZXBvcnRpbmcvZXhlY3V0ZScuYFxuICAgICk7XG4gIH1cblxuICAvLyBNYXAgY29tcG9uZW50IHBhbGV0dGUgY2F0ZWdvcmllc1xuICBsZXQgYWxsb3dlZENhdGVnb3JpZXM6IHN0cmluZ1tdIHwgbnVsbCA9IG51bGw7XG4gIGlmIChjb25maWcuY29tcG9uZW50cyAmJiBjb25maWcuY29tcG9uZW50cy5sZW5ndGggPiAwKSB7XG4gICAgYWxsb3dlZENhdGVnb3JpZXMgPSBjb25maWcuY29tcG9uZW50cy5tYXAoKGZyaWVuZGx5KSA9PiB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IFBBTEVUVEVfQ0FURUdPUllfTUFQW2ZyaWVuZGx5XTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGBbYndheXMtcmVwb3J0XSBVbmtub3duIGNvbXBvbmVudCBjYXRlZ29yeSBcIiR7ZnJpZW5kbHl9XCIuIGAgK1xuICAgICAgICAgIGBWYWxpZCBvcHRpb25zOiAke09iamVjdC5rZXlzKFBBTEVUVEVfQ0FURUdPUllfTUFQKS5qb2luKCcsICcpfS5gXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBmcmllbmRseTsgLy8gUGFzcyB0aHJvdWdoIHVua25vd24gY2F0ZWdvcmllcyBhcy1pc1xuICAgICAgfVxuICAgICAgcmV0dXJuIGludGVybmFsO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gV2FybiBpZiByZXBvcnRzRW5kcG9pbnQgaXMgbWlzc2luZ1xuICBjb25zdCByZXBvcnRzRW5kcG9pbnQgPSBjb25maWcucmVwb3J0c0VuZHBvaW50Py50cmltKCkgfHwgbnVsbDtcbiAgaWYgKCFyZXBvcnRzRW5kcG9pbnQpIHtcbiAgICBjb25zb2xlLndhcm4oXG4gICAgICBgW2J3YXlzLXJlcG9ydF0gTm8gXCJyZXBvcnRzRW5kcG9pbnRcIiBwcm92aWRlZC4gUmVwb3J0cyB3aWxsIGJlIHNhdmVkIHRvIGJyb3dzZXIgbG9jYWxTdG9yYWdlLiBgICtcbiAgICAgIGBGb3Igc2hhcmVkIHJlcG9ydCBtZW51cyBhY3Jvc3MgdXNlcnMsIHByb3ZpZGUgYSByZXBvcnRzRW5kcG9pbnQsIGUuZy4gJy9hcGkvcmVwb3J0aW5nL3JlcG9ydHMnLmBcbiAgICApO1xuICB9XG5cbiAgY29uc3QgbG9va3VwRW5kcG9pbnQgPSBjb25maWcubG9va3VwRW5kcG9pbnQ/LnRyaW0oKVxuICAgID8gY2xlYW5VcmwoY29uZmlnLmxvb2t1cEVuZHBvaW50KVxuICAgIDogY29uZmlnLmV4ZWN1dGVFbmRwb2ludC5pbmNsdWRlcygnL2V4ZWN1dGUnKVxuICAgID8gY2xlYW5VcmwoY29uZmlnLmV4ZWN1dGVFbmRwb2ludC5yZXBsYWNlKC9cXC9leGVjdXRlXFwvPyQvLCAnL2xvb2t1cCcpKVxuICAgIDogbnVsbDtcblxuICByZXR1cm4ge1xuICAgIHNwRW5kcG9pbnQ6IGNsZWFuVXJsKGNvbmZpZy5zcEVuZHBvaW50KSxcbiAgICB0YWJsZXNFbmRwb2ludDogY2xlYW5VcmwoY29uZmlnLnRhYmxlc0VuZHBvaW50KSxcbiAgICBleGVjdXRlRW5kcG9pbnQ6IGNsZWFuVXJsKGNvbmZpZy5leGVjdXRlRW5kcG9pbnQpLFxuICAgIGxvb2t1cEVuZHBvaW50LFxuICAgIHJlcG9ydHNFbmRwb2ludDogcmVwb3J0c0VuZHBvaW50ID8gY2xlYW5VcmwocmVwb3J0c0VuZHBvaW50KSA6IG51bGwsXG4gICAgYXBpc0VuZHBvaW50OiBjb25maWcuYXBpc0VuZHBvaW50Py50cmltKCkgPyBjbGVhblVybChjb25maWcuYXBpc0VuZHBvaW50KSA6IG51bGwsXG4gICAgYXBpRW5kcG9pbnRzOiBBcnJheS5pc0FycmF5KGNvbmZpZy5hcGlFbmRwb2ludHMpID8gY29uZmlnLmFwaUVuZHBvaW50cyA6IFtdLFxuXG4gICAgYWxsb3dlZENhdGVnb3JpZXMsXG4gICAgYXV0b1BhcmFtZXRlcjogY29uZmlnLmF1dG9QYXJhbWV0ZXIgIT09IGZhbHNlLCAvLyBkZWZhdWx0IHRydWVcbiAgICByb3V0ZUJhc2U6IGNvbmZpZy5yb3V0ZUJhc2U/LnRyaW0oKSB8fCAncmVwb3J0cycsXG4gICAgc2Vzc2lvbjogY29uZmlnLnNlc3Npb24gPz8gbnVsbCxcbiAgICBzZXNzaW9uUHJvdmlkZXI6IGNvbmZpZy5zZXNzaW9uUHJvdmlkZXIgPz8gbnVsbCxcblxuICAgIGdyaWRDb21wb25lbnQ6IGNvbmZpZy5ncmlkID8/IG51bGwsXG4gICAgY2hhcnRDb21wb25lbnQ6IGNvbmZpZy5jaGFydCA/PyBudWxsLFxuXG4gICAgZGVmYXVsdFBhZ2VTaXplOiBjb25maWcuZGVmYXVsdFBhZ2VTaXplID8/IDI1LFxuICAgIGRhdGVGb3JtYXQ6IGNvbmZpZy5kYXRlRm9ybWF0ID8/ICdkZC9NTS95eXl5JyxcbiAgICBsb29rdXBUaW1lb3V0TXM6IGNvbmZpZy5sb29rdXBUaW1lb3V0TXMgPz8gMzAwMDAwLFxuICB9O1xufVxuXG4vKiogUmVtb3ZlIHRyYWlsaW5nIHNsYXNoZXMgZnJvbSBhIFVSTCAqL1xuZnVuY3Rpb24gY2xlYW5VcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdXJsLnRyaW0oKS5yZXBsYWNlKC9cXC8rJC8sICcnKTtcbn1cbiJdfQ==
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYndheXMtcmVwb3J0LWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J3YXlzLXJlcG9ydC9zcmMvbGliL2NvcmUvY29uZmlnL2J3YXlzLXJlcG9ydC1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFnQ3ZFOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQW9DO0lBQ25FLFVBQVUsRUFBRSxPQUFPO0lBQ25CLGFBQWEsRUFBRSxRQUFRO0lBQ3ZCLGFBQWEsRUFBRSxTQUFTO0lBQ3hCLFdBQVcsRUFBRSxNQUFNO0lBQ25CLE1BQU0sRUFBRSxRQUFRO0NBQ2pCLENBQUM7QUE0TEY7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFDLE1BQXlCO0lBQzVELG1FQUFtRTtJQUNuRSxLQUFLLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLGNBQWMsQ0FBVSxFQUFFLENBQUM7UUFDcEksSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssU0FBUyxJQUFJLENBQUMsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssUUFBUSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUMzRixNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixHQUFHLEdBQUcsR0FBRywwQ0FBMEMsQ0FBQyxDQUFDO1FBQ3pGLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxNQUFNLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLG9CQUFvQixDQUFVLEVBQUUsQ0FBQztRQUNyRSxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxTQUFTLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBRSxJQUFJLENBQUMsQ0FBQztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxHQUFHLDhCQUE4QixDQUFDLENBQUM7SUFDL0ksQ0FBQztJQUNELElBQUksTUFBTSxDQUFDLGlCQUFpQixLQUFLLFNBQVMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsSUFBSSxNQUFNLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ2hJLElBQUksQ0FBQztZQUFDLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssTUFBTSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQUMsQ0FBQztRQUN4SixNQUFNLENBQUM7WUFBQyxPQUFPLElBQUksQ0FBQztRQUFDLENBQUM7SUFDeEIsQ0FBQyxDQUFDLENBQUM7UUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHFGQUFxRixDQUFDLENBQUM7SUFFNUcsbUNBQW1DO0lBQ25DLElBQUksaUJBQWlCLEdBQW9CLElBQUksQ0FBQztJQUM5QyxJQUFJLE1BQU0sQ0FBQyxVQUFVLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDdEQsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNyRCxNQUFNLFFBQVEsR0FBRyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNoRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2QsT0FBTyxDQUFDLElBQUksQ0FDViw4Q0FBOEMsUUFBUSxLQUFLO29CQUMzRCxrQkFBa0IsTUFBTSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsRSxDQUFDO2dCQUNGLE9BQU8sUUFBUSxDQUFDLENBQUMsd0NBQXdDO1lBQzNELENBQUM7WUFDRCxPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNLGVBQWUsR0FBRyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUV2RCxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxFQUFFLElBQUksRUFBRTtRQUNsRCxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUM7UUFDakMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQztZQUM5QyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUN0RSxDQUFDLENBQUMsSUFBSSxDQUFDO0lBRVQsT0FBTztRQUNMLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQ2hFLGNBQWMsRUFBRSxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQzVFLGVBQWUsRUFBRSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQy9FLGNBQWM7UUFDZCxlQUFlO1FBQ2YsWUFBWSxFQUFFLE1BQU0sQ0FBQyxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7UUFDaEYsWUFBWSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBRTNFLGlCQUFpQjtRQUNqQixhQUFhLEVBQUUsTUFBTSxDQUFDLGFBQWEsS0FBSyxLQUFLLEVBQUUsZUFBZTtRQUM5RCxTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxTQUFTO1FBQ2hELE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxJQUFJLElBQUk7UUFDL0IsZUFBZSxFQUFFLE1BQU0sQ0FBQyxlQUFlLElBQUksSUFBSTtRQUUvQyxhQUFhLEVBQUUsTUFBTSxDQUFDLElBQUksSUFBSSxJQUFJO1FBQ2xDLGNBQWMsRUFBRSxNQUFNLENBQUMsS0FBSyxJQUFJLElBQUk7UUFFcEMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxlQUFlLElBQUksRUFBRTtRQUM3QyxVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVUsSUFBSSxZQUFZO1FBQzdDLGVBQWUsRUFBRSxNQUFNLENBQUMsZUFBZSxJQUFJLE1BQU07UUFDakQsa0JBQWtCLEVBQUUsTUFBTSxDQUFDLGtCQUFrQjtRQUM3QyxpQkFBaUIsRUFBRSxNQUFNLENBQUMsaUJBQWlCLElBQUksRUFBRTtLQUNsRCxDQUFDO0FBQ0osQ0FBQztBQUVELHlDQUF5QztBQUN6QyxTQUFTLFFBQVEsQ0FBQyxHQUFXO0lBQzNCLE9BQU8sR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDeEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlc29sdmVSZXBvcnRzRW5kcG9pbnQgfSBmcm9tICcuLi91dGlscy9yZXBvcnQtZW5kcG9pbnQudXRpbCc7XG4vKipcbiAqIFNpbXBsaWZpZWQgY29uZmlndXJhdGlvbiBmb3IgYndheXMtcmVwb3J0LlxuICpcbiAqIFRoaXMgaXMgdGhlIGRldmVsb3Blci1mYWNpbmcgY29uZmlnIG9iamVjdCB0aGF0IG1ha2VzIGludGVncmF0aW9uXG4gKiBhcyBzaW1wbGUgYXMgM+KAkzQgZW5kcG9pbnQgVVJMcyArIG9wdGlvbmFsIG92ZXJyaWRlcy5cbiAqIFRoZSBub3JtYWxpemVyIGNvbnZlcnRzIHRoaXMgaW50byB0aGUgaW50ZXJuYWwgYFJlcG9ydGluZ0NvbmZpZ2BcbiAqIHBsdXMgYWRhcHRlciB3aXJpbmcgZGVjaXNpb25zLlxuICovXG5cbmltcG9ydCB7IFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNlc3Npb25Db250ZXh0UHJvdmlkZXIsIFNlc3Npb25Db250ZXh0U291cmNlIH0gZnJvbSAnLi4vdG9rZW5zL3Nlc3Npb24tY29udGV4dC50b2tlbic7XG5pbXBvcnQgeyBSZXBvcnRBcGlFbmRwb2ludERlZmluaXRpb24gfSBmcm9tICcuLi9tb2RlbHMvcmVwb3J0LWFwaS1lbmRwb2ludC5tb2RlbCc7XG5cbi8qKlxuICogUGFsZXR0ZSBjb21wb25lbnQgY2F0ZWdvcnkgbmFtZXMgdGhlIGRldmVsb3BlciBjYW4gdXNlXG4gKiB3aGVuIHJlc3RyaWN0aW5nIHRoZSBkZXNpZ25lciBjb21wb25lbnQgcGFsZXR0ZS5cbiAqXG4gKiBNYXBzIHRvIGludGVybmFsIHJlZ2lzdHJ5IGNhdGVnb3J5IElEczpcbiAqIC0gYGZvcm1JbnB1dHNgICAgIOKGkiBgaW5wdXRgXG4gKiAtIGBhY3Rpb25CdXR0b25zYCDihpIgYGFjdGlvbmBcbiAqIC0gYGRpc3BsYXlMYWJlbHNgIOKGkiBgZGlzcGxheWBcbiAqIC0gYGRhdGFMb29rdXBzYCAgIOKGkiBgZGF0YWBcbiAqIC0gYGxheW91dGAgICAgICAgIOKGkiBgbGF5b3V0YFxuICovXG5leHBvcnQgdHlwZSBQYWxldHRlQ2F0ZWdvcnkgPVxuICB8ICdmb3JtSW5wdXRzJ1xuICB8ICdhY3Rpb25CdXR0b25zJ1xuICB8ICdkaXNwbGF5TGFiZWxzJ1xuICB8ICdkYXRhTG9va3VwcydcbiAgfCAnbGF5b3V0JztcblxuLyoqXG4gKiBNYXBwaW5nIGZyb20gZnJpZW5kbHkgcGFsZXR0ZSBjYXRlZ29yeSBuYW1lcyB0byBpbnRlcm5hbCBjYXRlZ29yeSBJRHMuXG4gKi9cbmV4cG9ydCBjb25zdCBQQUxFVFRFX0NBVEVHT1JZX01BUDogUmVjb3JkPFBhbGV0dGVDYXRlZ29yeSwgc3RyaW5nPiA9IHtcbiAgZm9ybUlucHV0czogJ2lucHV0JyxcbiAgYWN0aW9uQnV0dG9uczogJ2FjdGlvbicsXG4gIGRpc3BsYXlMYWJlbHM6ICdkaXNwbGF5JyxcbiAgZGF0YUxvb2t1cHM6ICdkYXRhJyxcbiAgbGF5b3V0OiAnbGF5b3V0Jyxcbn07XG5cbi8qKlxuICogU2ltcGxpZmllZCwgZGV2ZWxvcGVyLWZhY2luZyBjb25maWd1cmF0aW9uIGZvciBid2F5cy1yZXBvcnQuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHJlcG9ydENvbmZpZzogQndheXNSZXBvcnRDb25maWcgPSB7XG4gKiAgIHNwRW5kcG9pbnQ6ICAgICAgJy9hcGkvcmVwb3J0aW5nL3Byb2NlZHVyZXMnLFxuICogICB0YWJsZXNFbmRwb2ludDogICcvYXBpL3JlcG9ydGluZy90YWJsZXMnLFxuICogICBleGVjdXRlRW5kcG9pbnQ6ICcvYXBpL3JlcG9ydGluZy9leGVjdXRlJyxcbiAqICAgcmVwb3J0c0VuZHBvaW50OiAnL2FwaS9yZXBvcnRpbmcvcmVwb3J0cycsXG4gKiAgIGNvbXBvbmVudHM6IFsnZm9ybUlucHV0cycsICdhY3Rpb25CdXR0b25zJywgJ2Rpc3BsYXlMYWJlbHMnXSxcbiAqICAgYXV0b1BhcmFtZXRlcjogdHJ1ZSxcbiAqICAgc2Vzc2lvbjogKCkgPT4gaW5qZWN0KEF1dGhTZXJ2aWNlKS5zZXNzaW9uKCksXG4gKiAgIHJvdXRlQmFzZTogJ3JlcG9ydHMnLFxuICogfTtcbiAqIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ3YXlzUmVwb3J0Q29uZmlnIHtcbiAgLy8g4pSA4pSA4pSAIEJhY2tlbmQgZW5kcG9pbnRzICh0aGUgM+KAkzQgZW5kcG9pbnQgY29udHJhY3QpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4gIC8qKlxuICAgKiBHRVQgZW5kcG9pbnQgcmV0dXJuaW5nIHRoZSBsaXN0IG9mIHN0b3JlZCBwcm9jZWR1cmVzIHdpdGggdGhlaXIgcGFyYW1ldGVycy5cbiAgICogUmVzcG9uc2U6IGBbeyBuYW1lLCBzY2hlbWEsIHBhcmFtZXRlcnM6IFt7IG5hbWUsIHNxbFR5cGUsIHJlcXVpcmVkLCBkZWZhdWx0VmFsdWU/IH1dIH1dYFxuICAgKi9cbiAgc3BFbmRwb2ludD86IHN0cmluZztcblxuICAvKipcbiAgICogR0VUIGVuZHBvaW50IHJldHVybmluZyB0aGUgbGlzdCBvZiB0YWJsZXMvdmlld3Mgd2l0aCB0aGVpciBjb2x1bW5zLlxuICAgKiBSZXNwb25zZTogYFt7IG5hbWUsIHNjaGVtYSwgdHlwZTogJ3RhYmxlJ3wndmlldycsIGNvbHVtbnM6IFt7IG5hbWUsIHNxbFR5cGUgfV0gfV1gXG4gICAqL1xuICB0YWJsZXNFbmRwb2ludD86IHN0cmluZztcblxuICAvKipcbiAgICogUE9TVCBlbmRwb2ludCB0aGF0IHJ1bnMgYSBzdG9yZWQgcHJvY2VkdXJlIG9yIHRhYmxlIHF1ZXJ5IGFuZCByZXR1cm5zIHJvd3MuXG4gICAqIEJvZHk6IGB7IGtpbmQ6ICdwcm9jZWR1cmUnfCd0YWJsZScsIG5hbWUsIHNjaGVtYSwgcGFyYW1ldGVycywgY29sdW1ucz8sIHRvcD8gfWBcbiAgICogUmVzcG9uc2U6IGByb3dzW11gXG4gICAqL1xuICBleGVjdXRlRW5kcG9pbnQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIFBPU1QgZW5kcG9pbnQgZm9yIGZldGNoaW5nIGRyb3Bkb3duIG1hc3RlciBkYXRhIGFuZCBsb29rdXAgb3B0aW9ucy5cbiAgICogRGVmYXVsdHMgdG8gcmVwbGFjaW5nIGAvZXhlY3V0ZWAgd2l0aCBgL2xvb2t1cGAgaWYgb21pdHRlZC5cbiAgICovXG4gIGxvb2t1cEVuZHBvaW50Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBDUlVEIGVuZHBvaW50IGZvciBzYXZpbmcvbG9hZGluZyByZXBvcnQgcGFnZSBkZWZpbml0aW9ucy5cbiAgICogV2hlbiBvbWl0dGVkLCB1c2VzIHRoZSByZXBvcnRpbmcgc2VydmljZSBiYXNlIGluZmVycmVkIGZyb20gdGhlIGNvbmZpZ3VyZWQgZW5kcG9pbnRzLlxuICAgKiBEZWZhdWx0cyB0byAvYXBpL3JlcG9ydGluZy9yZXBvcnRzOyB0aGUgYmFja2VuZCBzdG9yZXMgZGVmaW5pdGlvbnMgaW4gZGJvLkNORlJFUE9SVERFRi5cbiAgICogLSBHRVQgICAg4oaSIGxpc3Qgc2F2ZWQgcmVwb3J0c1xuICAgKiAtIEdFVCAvOmlkIOKGkiBsb2FkIGEgc3BlY2lmaWMgcmVwb3J0XG4gICAqIC0gUE9TVCAgIOKGkiBzYXZlIGEgbmV3IG9yIHVwZGF0ZWQgcmVwb3J0XG4gICAqIC0gREVMRVRFIC86aWQg4oaSIGRlbGV0ZSBhIHJlcG9ydFxuICAgKi9cbiAgcmVwb3J0c0VuZHBvaW50Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBHRVQgZW5kcG9pbnQgcmV0dXJuaW5nIHRoZSBjYXRhbG9nIG9mIHJlZ2lzdGVyZWQgUkVTVCBBUElzLlxuICAgKiBSZXNwb25zZTogUmVwb3J0QXBpRW5kcG9pbnREZWZpbml0aW9uW11cbiAgICovXG4gIGFwaXNFbmRwb2ludD86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgc3RhdGljL2luLW1lbW9yeSBBUEkgZW5kcG9pbnRzIHJlZ2lzdGVyZWQgZGlyZWN0bHkgaW4gdGhlIGhvc3QgYXBwbGljYXRpb24uXG4gICAqIE1lcmdlZCB3aXRoIGJhY2tlbmQtZGlzY292ZXJlZCBBUElzIGluIHRoZSBWaXN1YWwgRGVzaWduZXIuXG4gICAqL1xuICBhcGlFbmRwb2ludHM/OiBSZXBvcnRBcGlFbmRwb2ludERlZmluaXRpb25bXTtcblxuICAvLyDilIDilIDilIAgRGVzaWduZXIgb3B0aW9ucyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuICAvKipcbiAgICogQ29tcG9uZW50IHBhbGV0dGUgZ3JvdXBzIHRvIHNob3cgaW4gdGhlIGRlc2lnbmVyLlxuICAgKiBEZWZhdWx0cyB0byBhbGwgZ3JvdXBzIHdoZW4gbm90IHNwZWNpZmllZC5cbiAgICpcbiAgICogQGV4YW1wbGUgWydmb3JtSW5wdXRzJywgJ2FjdGlvbkJ1dHRvbnMnLCAnZGlzcGxheUxhYmVscyddXG4gICAqL1xuICBjb21wb25lbnRzPzogUGFsZXR0ZUNhdGVnb3J5W107XG5cbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSwgc3RvcmVkIHByb2NlZHVyZSBwYXJhbWV0ZXJzIGxpa2UgYEBCcmFuY2hJZGAsIGBAQ29tcGFueUlkYFxuICAgKiBhcmUgYXV0b21hdGljYWxseSBib3VuZCBmcm9tIHRoZSBzZXNzaW9uIGNvbnRleHQuXG4gICAqIFJlcXVpcmVzIGBzZXNzaW9uYCB0byBiZSBwcm92aWRlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgYXV0b1BhcmFtZXRlcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNlc3Npb24gY29udGV4dCBwcm92aWRlciBmb3IgYXV0by1wYXJhbWV0ZXIgYmluZGluZy5cbiAgICogQ2FuIGJlIGEgc2VydmljZSBjbGFzcyBpbXBsZW1lbnRpbmcgYFNlc3Npb25Db250ZXh0UHJvdmlkZXJgLFxuICAgKiBhIHBsYWluIG9iamVjdCwgYSBmYWN0b3J5IGZ1bmN0aW9uLCBhbiBPYnNlcnZhYmxlLCBvciBhIFNpZ25hbC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogc2Vzc2lvbjogUGxheWdyb3VuZFNlc3Npb25TZXJ2aWNlXG4gICAqIHNlc3Npb246ICgpID0+IGluamVjdChBdXRoU2VydmljZSkuc2Vzc2lvbigpXG4gICAqIHNlc3Npb246IHsgYnJhbmNoSWQ6IDEsIGNvbXBhbnlJZDogMTAgfVxuICAgKi9cbiAgc2Vzc2lvbj86IFR5cGU8U2Vzc2lvbkNvbnRleHRQcm92aWRlcj4gfCBTZXNzaW9uQ29udGV4dFNvdXJjZSB8ICgoKSA9PiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHNlcnZpY2UgY2xhc3MgaW1wbGVtZW50aW5nIGBTZXNzaW9uQ29udGV4dFByb3ZpZGVyYC5cbiAgICogRXF1aXZhbGVudCB0byBgc2Vzc2lvbjogTXlTZXNzaW9uU2VydmljZWAuXG4gICAqL1xuICBzZXNzaW9uUHJvdmlkZXI/OiBUeXBlPFNlc3Npb25Db250ZXh0UHJvdmlkZXI+O1xuXG4gIC8vIOKUgOKUgOKUgCBMaXZlIHBhZ2Ugb3B0aW9ucyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuICAvKipcbiAgICogQmFzZSBwYXRoIGZvciBsaXZlIHJlcG9ydCBwYWdlcy5cbiAgICogR2VuZXJhdGVkIHJlcG9ydCBwYWdlcyBvcGVuIGF0IGAvPHJvdXRlQmFzZT4vPHNsdWc+YC5cbiAgICpcbiAgICogQGRlZmF1bHQgJ3JlcG9ydHMnXG4gICAqL1xuICByb3V0ZUJhc2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIEFuZ3VsYXIgY29tcG9uZW50IGZvciByZW5kZXJpbmcgZGF0YSBncmlkcy5cbiAgICogUGFzcyB5b3VyIGdyaWQgY29tcG9uZW50IChCV2F5cy1ncmlkLCBBRyBHcmlkIHdyYXBwZXIsIGV0Yy4pLlxuICAgKi9cbiAgZ3JpZD86IFR5cGU8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIEFuZ3VsYXIgY29tcG9uZW50IGZvciByZW5kZXJpbmcgY2hhcnRzLlxuICAgKi9cbiAgY2hhcnQ/OiBUeXBlPHVua25vd24+O1xuXG4gIC8vIOKUgOKUgOKUgCBHZW5lcmFsIG9wdGlvbnMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbiAgLyoqIERlZmF1bHQgcGFnZSBzaXplIGZvciBncmlkIHJlc3VsdHMuIEBkZWZhdWx0IDI1ICovXG4gIGRlZmF1bHRQYWdlU2l6ZT86IG51bWJlcjtcblxuICAvKiogRGF0ZSBmb3JtYXQgc3RyaW5nIHVzZWQgYWNyb3NzIHRoZSBsaWJyYXJ5LiBAZGVmYXVsdCAnZGQvTU0veXl5eScgKi9cbiAgZGF0ZUZvcm1hdD86IHN0cmluZztcblxuICAvKiogVGltZW91dCBpbiBtcyBmb3IgbG9va3VwL2V4ZWN1dGUgcXVlcmllcy4gQGRlZmF1bHQgMzAwMDAwICovXG4gIGxvb2t1cFRpbWVvdXRNcz86IG51bWJlcjtcblxuICAvKiogTWF4aW11bSBkdXJhdGlvbiBvZiBhbiBleGVjdXRpb24gcmVxdWVzdCAoZGVmYXVsdHMgdG8gbG9va3VwVGltZW91dE1zKS4gKi9cbiAgZXhlY3V0aW9uVGltZW91dE1zPzogbnVtYmVyO1xuICAvKiogRXhhY3QgSFRUUChTKSBvcmlnaW5zIHBlcm1pdHRlZCB0byByZWNlaXZlIEFQSSBjcmVkZW50aWFscyBhbmQgY3VzdG9tIGhlYWRlcnMuIFNhbWUtb3JpZ2luIGlzIHRydXN0ZWQgYnkgZGVmYXVsdC4gKi9cbiAgdHJ1c3RlZEFwaU9yaWdpbnM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBSZXN1bHQgb2Ygbm9ybWFsaXppbmcgYSBgQndheXNSZXBvcnRDb25maWdgIGZvciBpbnRlcm5hbCB1c2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTm9ybWFsaXplZEJ3YXlzQ29uZmlnIHtcbiAgLyoqIEVuZHBvaW50IFVSTHMgKi9cbiAgc3BFbmRwb2ludDogc3RyaW5nO1xuICB0YWJsZXNFbmRwb2ludDogc3RyaW5nO1xuICBleGVjdXRlRW5kcG9pbnQ6IHN0cmluZztcbiAgbG9va3VwRW5kcG9pbnQ6IHN0cmluZyB8IG51bGw7XG4gIHJlcG9ydHNFbmRwb2ludDogc3RyaW5nIHwgbnVsbDtcbiAgYXBpc0VuZHBvaW50OiBzdHJpbmcgfCBudWxsO1xuICBhcGlFbmRwb2ludHM6IFJlcG9ydEFwaUVuZHBvaW50RGVmaW5pdGlvbltdO1xuXG4gIC8qKiBSZXNvbHZlZCBpbnRlcm5hbCBjYXRlZ29yeSBJRHMgKGUuZy4gWydpbnB1dCcsICdhY3Rpb24nLCAnZGlzcGxheSddKSAqL1xuICBhbGxvd2VkQ2F0ZWdvcmllczogc3RyaW5nW10gfCBudWxsO1xuXG4gIC8qKiBXaGV0aGVyIGF1dG8tcGFyYW1ldGVyIGJpbmRpbmcgaXMgZW5hYmxlZCAqL1xuICBhdXRvUGFyYW1ldGVyOiBib29sZWFuO1xuXG4gIC8qKiBSb3V0ZSBiYXNlIHBhdGggKi9cbiAgcm91dGVCYXNlOiBzdHJpbmc7XG5cbiAgLyoqIFNlc3Npb24gc291cmNlICovXG4gIHNlc3Npb246IFR5cGU8U2Vzc2lvbkNvbnRleHRQcm92aWRlcj4gfCBTZXNzaW9uQ29udGV4dFNvdXJjZSB8ICgoKSA9PiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgfCBudWxsO1xuICBzZXNzaW9uUHJvdmlkZXI6IFR5cGU8U2Vzc2lvbkNvbnRleHRQcm92aWRlcj4gfCBudWxsO1xuXG4gIC8qKiBHcmlkIGNvbXBvbmVudCAqL1xuICBncmlkQ29tcG9uZW50OiBUeXBlPHVua25vd24+IHwgbnVsbDtcblxuICAvKiogQ2hhcnQgY29tcG9uZW50ICovXG4gIGNoYXJ0Q29tcG9uZW50OiBUeXBlPHVua25vd24+IHwgbnVsbDtcblxuICAvKiogR2VuZXJhbCBjb25maWcgdmFsdWVzICovXG4gIGRlZmF1bHRQYWdlU2l6ZTogbnVtYmVyO1xuICBkYXRlRm9ybWF0OiBzdHJpbmc7XG4gIGxvb2t1cFRpbWVvdXRNczogbnVtYmVyO1xuXG4gIC8qKiBNYXhpbXVtIGR1cmF0aW9uIG9mIGFuIGV4ZWN1dGlvbiByZXF1ZXN0IChkZWZhdWx0cyB0byBsb29rdXBUaW1lb3V0TXMpLiAqL1xuICBleGVjdXRpb25UaW1lb3V0TXM/OiBudW1iZXI7XG4gIC8qKiBFeGFjdCBIVFRQKFMpIG9yaWdpbnMgcGVybWl0dGVkIHRvIHJlY2VpdmUgQVBJIGNyZWRlbnRpYWxzIGFuZCBjdXN0b20gaGVhZGVycy4gU2FtZS1vcmlnaW4gaXMgdHJ1c3RlZCBieSBkZWZhdWx0LiAqL1xuICB0cnVzdGVkQXBpT3JpZ2lucz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIE5vcm1hbGl6ZXMgYSBgQndheXNSZXBvcnRDb25maWdgIGludG8gdGhlIGludGVybmFsIGZvcm1hdC5cbiAqIFZhbGlkYXRlcyBzdXBwbGllZCBlbmRwb2ludHMgYW5kIG1hcHMgZnJpZW5kbHkgbmFtZXMgdG8gaW50ZXJuYWwgSURzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplQndheXNDb25maWcoY29uZmlnOiBCd2F5c1JlcG9ydENvbmZpZyk6IE5vcm1hbGl6ZWRCd2F5c0NvbmZpZyB7XG4gIC8vIENhcGFiaWxpdGllcyBhcmUgb3B0aW9uYWw7IHZhbGlkYXRlIG9ubHkgVVJMcyB0aGUgaG9zdCBzdXBwbGllcy5cbiAgZm9yIChjb25zdCBrZXkgb2YgWydzcEVuZHBvaW50JywgJ3RhYmxlc0VuZHBvaW50JywgJ2V4ZWN1dGVFbmRwb2ludCcsICdsb29rdXBFbmRwb2ludCcsICdyZXBvcnRzRW5kcG9pbnQnLCAnYXBpc0VuZHBvaW50J10gYXMgY29uc3QpIHtcbiAgICBpZiAoY29uZmlnW2tleV0gIT09IHVuZGVmaW5lZCAmJiAodHlwZW9mIGNvbmZpZ1trZXldICE9PSAnc3RyaW5nJyB8fCAhY29uZmlnW2tleV0/LnRyaW0oKSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignW2J3YXlzLXJlcG9ydF0gXCInICsga2V5ICsgJ1wiIG11c3QgYmUgYSBub24tZW1wdHkgVVJMIHdoZW4gc3VwcGxpZWQuJyk7XG4gICAgfVxuICB9XG5cbiAgZm9yIChjb25zdCBrZXkgb2YgWydsb29rdXBUaW1lb3V0TXMnLCAnZXhlY3V0aW9uVGltZW91dE1zJ10gYXMgY29uc3QpIHtcbiAgICBpZiAoY29uZmlnW2tleV0gIT09IHVuZGVmaW5lZCAmJiAoIU51bWJlci5pc0Zpbml0ZShjb25maWdba2V5XSkgfHwgY29uZmlnW2tleV0hIDw9IDApKSB0aHJvdyBuZXcgRXJyb3Ioa2V5ICsgJyBtdXN0IGJlIGEgcG9zaXRpdmUgdGltZW91dC4nKTtcbiAgfVxuICBpZiAoY29uZmlnLnRydXN0ZWRBcGlPcmlnaW5zICE9PSB1bmRlZmluZWQgJiYgKCFBcnJheS5pc0FycmF5KGNvbmZpZy50cnVzdGVkQXBpT3JpZ2lucykgfHwgY29uZmlnLnRydXN0ZWRBcGlPcmlnaW5zLnNvbWUob3JpZ2luID0+IHtcbiAgICB0cnkgeyBjb25zdCBwYXJzZWQgPSBuZXcgVVJMKG9yaWdpbik7IHJldHVybiAhL15odHRwcz86JC8udGVzdChwYXJzZWQucHJvdG9jb2wpIHx8IHBhcnNlZC5vcmlnaW4gIT09IG9yaWdpbiB8fCAhIXBhcnNlZC51c2VybmFtZSB8fCAhIXBhcnNlZC5wYXNzd29yZDsgfVxuICAgIGNhdGNoIHsgcmV0dXJuIHRydWU7IH1cbiAgfSkpKSB0aHJvdyBuZXcgRXJyb3IoJ3RydXN0ZWRBcGlPcmlnaW5zIG11c3QgY29udGFpbiBleGFjdCBIVFRQKFMpIG9yaWdpbnMsIHdpdGhvdXQgcGF0aHMgb3IgY3JlZGVudGlhbHMuJyk7XG5cbiAgLy8gTWFwIGNvbXBvbmVudCBwYWxldHRlIGNhdGVnb3JpZXNcbiAgbGV0IGFsbG93ZWRDYXRlZ29yaWVzOiBzdHJpbmdbXSB8IG51bGwgPSBudWxsO1xuICBpZiAoY29uZmlnLmNvbXBvbmVudHMgJiYgY29uZmlnLmNvbXBvbmVudHMubGVuZ3RoID4gMCkge1xuICAgIGFsbG93ZWRDYXRlZ29yaWVzID0gY29uZmlnLmNvbXBvbmVudHMubWFwKChmcmllbmRseSkgPT4ge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSBQQUxFVFRFX0NBVEVHT1JZX01BUFtmcmllbmRseV07XG4gICAgICBpZiAoIWludGVybmFsKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICBgW2J3YXlzLXJlcG9ydF0gVW5rbm93biBjb21wb25lbnQgY2F0ZWdvcnkgXCIke2ZyaWVuZGx5fVwiLiBgICtcbiAgICAgICAgICBgVmFsaWQgb3B0aW9uczogJHtPYmplY3Qua2V5cyhQQUxFVFRFX0NBVEVHT1JZX01BUCkuam9pbignLCAnKX0uYFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gZnJpZW5kbHk7IC8vIFBhc3MgdGhyb3VnaCB1bmtub3duIGNhdGVnb3JpZXMgYXMtaXNcbiAgICAgIH1cbiAgICAgIHJldHVybiBpbnRlcm5hbDtcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IHJlcG9ydHNFbmRwb2ludCA9IHJlc29sdmVSZXBvcnRzRW5kcG9pbnQoY29uZmlnKTtcblxuICBjb25zdCBsb29rdXBFbmRwb2ludCA9IGNvbmZpZy5sb29rdXBFbmRwb2ludD8udHJpbSgpXG4gICAgPyBjbGVhblVybChjb25maWcubG9va3VwRW5kcG9pbnQpXG4gICAgOiBjb25maWcuZXhlY3V0ZUVuZHBvaW50Py5pbmNsdWRlcygnL2V4ZWN1dGUnKVxuICAgID8gY2xlYW5VcmwoY29uZmlnLmV4ZWN1dGVFbmRwb2ludC5yZXBsYWNlKC9cXC9leGVjdXRlXFwvPyQvLCAnL2xvb2t1cCcpKVxuICAgIDogbnVsbDtcblxuICByZXR1cm4ge1xuICAgIHNwRW5kcG9pbnQ6IGNvbmZpZy5zcEVuZHBvaW50ID8gY2xlYW5VcmwoY29uZmlnLnNwRW5kcG9pbnQpIDogJycsXG4gICAgdGFibGVzRW5kcG9pbnQ6IGNvbmZpZy50YWJsZXNFbmRwb2ludCA/IGNsZWFuVXJsKGNvbmZpZy50YWJsZXNFbmRwb2ludCkgOiAnJyxcbiAgICBleGVjdXRlRW5kcG9pbnQ6IGNvbmZpZy5leGVjdXRlRW5kcG9pbnQgPyBjbGVhblVybChjb25maWcuZXhlY3V0ZUVuZHBvaW50KSA6ICcnLFxuICAgIGxvb2t1cEVuZHBvaW50LFxuICAgIHJlcG9ydHNFbmRwb2ludCxcbiAgICBhcGlzRW5kcG9pbnQ6IGNvbmZpZy5hcGlzRW5kcG9pbnQ/LnRyaW0oKSA/IGNsZWFuVXJsKGNvbmZpZy5hcGlzRW5kcG9pbnQpIDogbnVsbCxcbiAgICBhcGlFbmRwb2ludHM6IEFycmF5LmlzQXJyYXkoY29uZmlnLmFwaUVuZHBvaW50cykgPyBjb25maWcuYXBpRW5kcG9pbnRzIDogW10sXG5cbiAgICBhbGxvd2VkQ2F0ZWdvcmllcyxcbiAgICBhdXRvUGFyYW1ldGVyOiBjb25maWcuYXV0b1BhcmFtZXRlciAhPT0gZmFsc2UsIC8vIGRlZmF1bHQgdHJ1ZVxuICAgIHJvdXRlQmFzZTogY29uZmlnLnJvdXRlQmFzZT8udHJpbSgpIHx8ICdyZXBvcnRzJyxcbiAgICBzZXNzaW9uOiBjb25maWcuc2Vzc2lvbiA/PyBudWxsLFxuICAgIHNlc3Npb25Qcm92aWRlcjogY29uZmlnLnNlc3Npb25Qcm92aWRlciA/PyBudWxsLFxuXG4gICAgZ3JpZENvbXBvbmVudDogY29uZmlnLmdyaWQgPz8gbnVsbCxcbiAgICBjaGFydENvbXBvbmVudDogY29uZmlnLmNoYXJ0ID8/IG51bGwsXG5cbiAgICBkZWZhdWx0UGFnZVNpemU6IGNvbmZpZy5kZWZhdWx0UGFnZVNpemUgPz8gMjUsXG4gICAgZGF0ZUZvcm1hdDogY29uZmlnLmRhdGVGb3JtYXQgPz8gJ2RkL01NL3l5eXknLFxuICAgIGxvb2t1cFRpbWVvdXRNczogY29uZmlnLmxvb2t1cFRpbWVvdXRNcyA/PyAzMDAwMDAsXG4gICAgZXhlY3V0aW9uVGltZW91dE1zOiBjb25maWcuZXhlY3V0aW9uVGltZW91dE1zLFxuICAgIHRydXN0ZWRBcGlPcmlnaW5zOiBjb25maWcudHJ1c3RlZEFwaU9yaWdpbnMgPz8gW10sXG4gIH07XG59XG5cbi8qKiBSZW1vdmUgdHJhaWxpbmcgc2xhc2hlcyBmcm9tIGEgVVJMICovXG5mdW5jdGlvbiBjbGVhblVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB1cmwudHJpbSgpLnJlcGxhY2UoL1xcLyskLywgJycpO1xufVxuIl19
|
|
@@ -6,4 +6,4 @@
|
|
|
6
6
|
* `ReportDataSourceAdapter` contract.
|
|
7
7
|
*/
|
|
8
8
|
export {};
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWRhdGFzb3VyY2UubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9jb3JlL21vZGVscy9yZXBvcnQtZGF0YXNvdXJjZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJlcG9ydCBkYXRhIHNvdXJjZSBkZWZpbml0aW9ucy5cbiAqXG4gKiBBIGRhdGEgc291cmNlIGRlc2NyaWJlcyBob3cgdG8gZmV0Y2ggZGF0YSBmb3IgdGhlIHJlcG9ydCdzIHJlc3VsdCBncmlkLlxuICogVGhlIGFjdHVhbCBmZXRjaGluZyBpcyBkb25lIGJ5IHRoZSBob3N0IGFwcGxpY2F0aW9uIHRocm91Z2ggdGhlXG4gKiBgUmVwb3J0RGF0YVNvdXJjZUFkYXB0ZXJgIGNvbnRyYWN0LlxuICovXG5cbi8qKlxuICogRGVmaW5lcyBhIHNpbmdsZSBkYXRhIHNvdXJjZSBmb3IgdGhlIHJlcG9ydC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBvcnREYXRhU291cmNlRGVmaW5pdGlvbiB7XG4gIC8qKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyBkYXRhIHNvdXJjZS4gKi9cbiAgaWQ6IHN0cmluZztcblxuICAvKiogSHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIGRhdGEgc291cmNlLiAqL1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqIEVuZHBvaW50IGlkZW50aWZpZXIsIHN0b3JlZCBwcm9jZWR1cmUgbmFtZSwgb3IgcXVlcnkgcmVmZXJlbmNlLiAqL1xuICBlbmRwb2ludDogc3RyaW5nO1xuXG4gIC8qKiBIVFRQIG1ldGhvZCBvciBleGVjdXRpb24gbWV0aG9kIGhpbnQuICovXG4gIG1ldGhvZD86ICdHRVQnIHwgJ1BPU1QnIHwgJ1NUT1JFRF9QUk9DRURVUkUnIHwgJ0NVU1RPTSc7XG5cbiAgLyoqIERhdGFiYXNlIHNjaGVtYSAoZGVmYXVsdHMgdG8gJ2RibycpLiAqL1xuICBzY2hlbWE/
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWRhdGFzb3VyY2UubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9jb3JlL21vZGVscy9yZXBvcnQtZGF0YXNvdXJjZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJlcG9ydCBkYXRhIHNvdXJjZSBkZWZpbml0aW9ucy5cbiAqXG4gKiBBIGRhdGEgc291cmNlIGRlc2NyaWJlcyBob3cgdG8gZmV0Y2ggZGF0YSBmb3IgdGhlIHJlcG9ydCdzIHJlc3VsdCBncmlkLlxuICogVGhlIGFjdHVhbCBmZXRjaGluZyBpcyBkb25lIGJ5IHRoZSBob3N0IGFwcGxpY2F0aW9uIHRocm91Z2ggdGhlXG4gKiBgUmVwb3J0RGF0YVNvdXJjZUFkYXB0ZXJgIGNvbnRyYWN0LlxuICovXG5cbi8qKlxuICogRGVmaW5lcyBhIHNpbmdsZSBkYXRhIHNvdXJjZSBmb3IgdGhlIHJlcG9ydC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBvcnREYXRhU291cmNlRGVmaW5pdGlvbiB7XG4gIC8qKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyBkYXRhIHNvdXJjZS4gKi9cbiAgaWQ6IHN0cmluZztcblxuICAvKiogSHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIGRhdGEgc291cmNlLiAqL1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqIEVuZHBvaW50IGlkZW50aWZpZXIsIHN0b3JlZCBwcm9jZWR1cmUgbmFtZSwgb3IgcXVlcnkgcmVmZXJlbmNlLiAqL1xuICBlbmRwb2ludDogc3RyaW5nO1xuXG4gIC8qKiBIVFRQIG1ldGhvZCBvciBleGVjdXRpb24gbWV0aG9kIGhpbnQuICovXG4gIG1ldGhvZD86ICdHRVQnIHwgJ1BPU1QnIHwgJ1NUT1JFRF9QUk9DRURVUkUnIHwgJ0NVU1RPTSc7XG5cbiAgLyoqIERhdGFiYXNlIHNjaGVtYSAoZGVmYXVsdHMgdG8gJ2RibycpLiAqL1xuICBzY2hlbWE/OiBzdHJpbmc7XG5cbiAgLyoqIE9wdGlvbmFsIHRhYmxlL3ZpZXcgY29sdW1uIHByb2plY3Rpb24gYW5kIG1heGltdW0gcmVzdWx0IHJvd3MuICovXG4gIGNvbHVtbnM/OiBzdHJpbmdbXTtcbiAgdG9wPzogbnVtYmVyO1xuICAvKiogRXhwbGljaXQgdGFibGUgZXF1YWxpdHkgZmlsdGVycy4gVmFsdWVzIGNhbiByZWZlcmVuY2UgZm9ybS9zZXNzaW9uIHRva2Vucy4gKi9cbiAgZmlsdGVyPzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj47XG5cbiAgLyoqIEJhY2tlbmQgZXhlY3V0aW9uIHR5cGUuICovXG4gIHR5cGU/OiAnc3RvcmVkX3Byb2NlZHVyZScgfCAndGFibGUnIHwgJ3ZpZXcnIHwgJ3NxbCcgfCAnYXBpJyB8IHN0cmluZztcblxuICAvKipcbiAgICogUGFyYW1ldGVyIG1hcHBpbmdzLiBWYWx1ZXMgbWF5IGJlIGZpeGVkLCBvciB0b2tlbnM6XG4gICAqIGB7e3Nlc3Npb24uYnJhbmNoSWR9fWAsIGB7e2NvbnRleHQudG9kYXl9fWAsIGB7e2ZpZWxkS2V5fX1gIChjYW52YXMgZmllbGQpLlxuICAgKi9cbiAgcGFyYW1ldGVyTWFwcGluZ3M/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPjtcblxuICAvKipcbiAgICogUGFyYW1ldGVyIGtleXMgdGhhdCB0aGlzIGRhdGEgc291cmNlIHJlcXVpcmVzLlxuICAgKiBUaGVzZSBhcmUgcmVzb2x2ZWQgZnJvbSB0aGUgcmVwb3J0J3MgY3VycmVudCBwYXJhbWV0ZXIgdmFsdWVzXG4gICAqIGJlZm9yZSBjYWxsaW5nIHRoZSBgUmVwb3J0RGF0YVNvdXJjZUFkYXB0ZXJgLlxuICAgKi9cbiAgcGFyYW1ldGVyS2V5cz86IHN0cmluZ1tdO1xuXG4gIC8qKiBXaGV0aGVyIHRvIGF1dG9tYXRpY2FsbHkgZXhlY3V0ZSB0aGlzIGRhdGEgc291cmNlIG9uIHJlcG9ydCBsb2FkLiAqL1xuICBhdXRvRXhlY3V0ZT86IGJvb2xlYW47XG5cbiAgLyoqIENhY2hpbmcgc3RyYXRlZ3kuICovXG4gIGNhY2hlPzogRGF0YVNvdXJjZUNhY2hlRGVmaW5pdGlvbjtcblxuICAvLyDilIDilIDilIAgQVBJIEVuZHBvaW50IEV4ZWN1dGlvbiBNZXRhZGF0YSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgLyoqIEJhc2UgVVJMIG92ZXJyaWRlIChpZiBjYWxsaW5nIGFuIGV4dGVybmFsIHNlcnZpY2Ugb3V0c2lkZSBhcGlCYXNlVXJsKSAqL1xuICBiYXNlVXJsPzogc3RyaW5nO1xuXG4gIC8qKiBEb3Qtbm90YXRpb24gcGF0aCB0byB0aGUgYXJyYXkgb2YgcmVjb3JkcyBpbiB0aGUgcmVzcG9uc2UgKGUuZy4gJ2RhdGEuaXRlbXMnIG9yICdyb3dzJykgKi9cbiAgZGF0YVBhdGg/OiBzdHJpbmc7XG5cbiAgLyoqIERvdC1ub3RhdGlvbiBwYXRoIHRvIHRvdGFsIGNvdW50IGZvciBzZXJ2ZXItc2lkZSBwYWdpbmF0aW9uIChlLmcuICdyZXN1bHQudG90YWwnKSAqL1xuICB0b3RhbFBhdGg/OiBzdHJpbmc7XG5cbiAgLyoqIFBhcmFtZXRlciBwbGFjZW1lbnQ6ICdxdWVyeScgfCAnYm9keScgfCAnYXV0bycgKi9cbiAgcGFyYW1QbGFjZW1lbnQ/OiAncXVlcnknIHwgJ2JvZHknIHwgJ2F1dG8nO1xuXG4gIC8qKiBSZXF1ZXN0IGJvZHkgdGVtcGxhdGUgZm9yIFBPU1QgcmVxdWVzdHMgKi9cbiAgYm9keVRlbXBsYXRlPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbiAgLyoqIEN1c3RvbSBIVFRQIGhlYWRlcnMgdG8gaW5jbHVkZSB3aXRoIHRoZSBBUEkgcmVxdWVzdCAqL1xuICBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuICAvKiogV2hldGhlciB0byByb3V0ZSB0aHJvdWdoIHRoZSBiYWNrZW5kIHByb3h5IGdhdGV3YXkgKi9cbiAgdXNlUHJveHk/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIENhY2hpbmcgY29uZmlndXJhdGlvbiBmb3IgYSBkYXRhIHNvdXJjZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRhU291cmNlQ2FjaGVEZWZpbml0aW9uIHtcbiAgLyoqIFdoZXRoZXIgY2FjaGluZyBpcyBlbmFibGVkIGZvciB0aGlzIGRhdGEgc291cmNlLiAqL1xuICBlbmFibGVkOiBib29sZWFuO1xuXG4gIC8qKiBDYWNoZSBkdXJhdGlvbiBpbiBzZWNvbmRzLiAqL1xuICB0dGxTZWNvbmRzPzogbnVtYmVyO1xufVxuIl19
|
|
@@ -7,4 +7,4 @@
|
|
|
7
7
|
* whatever the host's grid component (BWays-grid, AG Grid, etc.) expects.
|
|
8
8
|
*/
|
|
9
9
|
export {};
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWdyaWQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9jb3JlL21vZGVscy9yZXBvcnQtZ3JpZC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztHQU9HIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSZXBvcnQgZ3JpZCBkZWZpbml0aW9ucy5cbiAqXG4gKiBEZXNjcmliZXMgdGhlIGxvZ2ljYWwgc3RydWN0dXJlIG9mIHRoZSByZXN1bHQgZ3JpZCDigJQgY29sdW1ucywgZmllbGRzLFxuICogZm9ybWF0dGluZywgc29ydGluZywgYW5kIGZpbHRlcmluZy4gVGhpcyBpcyAqKm5vdCoqIGEgc3BlY2lmaWMgZ3JpZFxuICogbGlicmFyeSdzIEFQSS4gVGhlIGBSZXBvcnRHcmlkQnJpZGdlQ29tcG9uZW50YCB0cmFuc2xhdGVzIHRoaXMgaW50b1xuICogd2hhdGV2ZXIgdGhlIGhvc3QncyBncmlkIGNvbXBvbmVudCAoQldheXMtZ3JpZCwgQUcgR3JpZCwgZXRjLikgZXhwZWN0cy5cbiAqL1xuXG4vKipcbiAqIEludGVyYWN0aXZlIGFjdGlvbiB0cmlnZ2VyZWQgd2hlbiBhIHJvdyBvciBjZWxsIGluIHRoZSByZXN1bHQgZ3JpZCBpcyBjbGlja2VkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdyaWRSb3dDbGlja0FjdGlvbiB7XG4gIC8qKlxuICAgKiBBY3Rpb24gdHlwZTpcbiAgICogLSAnZHJpbGxkb3duLXJlcG9ydCc6IG5hdmlnYXRlcyB0byBvciBvcGVucyBhIHRhcmdldCBzdWItcmVwb3J0XG4gICAqIC0gJ29wZW4tZHJhd2VyJzogb3BlbnMgYW4gaW4tcGFnZSBzbGlkZS1vdmVyIGRyYXdlciBydW5uaW5nIHRoZSB0YXJnZXQgcmVwb3J0XG4gICAqIC0gJ25hdmlnYXRlJzogb3BlbnMgYW4gZXh0ZXJuYWwgVVJMIG9yIGFwcGxpY2F0aW9uIHJvdXRlXG4gICAqIC0gJ2VtaXQtY3VzdG9tJzogZW1pdHMgYSBjdXN0b20gZXZlbnQgZm9yIHRoZSBob3N0IGFwcGxpY2F0aW9uXG4gICAqL1xuICB0eXBlOiAnZHJpbGxkb3duLXJlcG9ydCcgfCAnb3Blbi1kcmF3ZXInIHwgJ25hdmlnYXRlJyB8ICdlbWl0LWN1c3RvbSc7XG5cbiAgLyoqIFRhcmdldCByZXBvcnQgSUQgdG8gb3Blbi9kcmlsbCBpbnRvIChlLmcuICdyZXBfY3VzdG9tZXJfbGVkZ2VyJykuICovXG4gIHRhcmdldFJlcG9ydElkPzogc3RyaW5nO1xuXG4gIC8qKiBFeHRlcm5hbCBVUkwgb3Igcm91dGUgdGVtcGxhdGUgaWYgdHlwZSA9PT0gJ25hdmlnYXRlJy4gU3VwcG9ydHMgYHt7cm93LmZpZWxkfX1gIHJlcGxhY2VtZW50cy4gKi9cbiAgdGFyZ2V0VXJsPzogc3RyaW5nO1xuXG4gIC8qKiBUYXJnZXQgYnJvd3NpbmcgY29udGV4dDogJ19ibGFuaycgfCAnX3NlbGYnIHdoZW4gbmF2aWdhdGluZy4gKi9cbiAgb3Blbk5ld1RhYj86IGJvb2xlYW47XG5cbiAgLyoqIFRpdGxlIGZvciB0aGUgc2xpZGUtb3ZlciBkcmF3ZXIgb3IgZGlhbG9nLiBTdXBwb3J0cyBge3tyb3cuZmllbGR9fWAgcmVwbGFjZW1lbnRzLiAqL1xuICBkcmF3ZXJUaXRsZT86IHN0cmluZztcblxuICAvKiogV2lkdGggb2YgdGhlIHNsaWRlIGRyYXdlciAoQ1NTIHZhbHVlLCBlLmcuICc2ODBweCcsICc1MHZ3JykuIERlZmF1bHQ6ICc3MjBweCcuICovXG4gIGRyYXdlcldpZHRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNYXBzIHBhcmFtZXRlciBrZXlzIG9mIHRoZSB0YXJnZXQgc3ViLXJlcG9ydCB0byBleHByZXNzaW9uczpcbiAgICogZS5nLiB7IFwiQEN1c3RDb2RlXCI6IFwicm93LmN1c3RvbWVySWRcIiwgXCJAQnJhbmNoSWRcIjogXCJzZXNzaW9uLmJyYW5jaElkXCIsIFwiZnJvbURhdGVcIjogXCJmb3JtLmZyb21EYXRlXCIgfVxuICAgKi9cbiAgcGFyYW1ldGVyTWFwcGluZz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbiAgLyoqIEN1c3RvbSBldmVudCBvciBhY3Rpb24gaWRlbnRpZmllciB3aGVuIHR5cGUgPT09ICdlbWl0LWN1c3RvbScuICovXG4gIGN1c3RvbUFjdGlvbk5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGVmaW5lcyB0aGUgcmVzdWx0IGdyaWQgZm9yIGEgcmVwb3J0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEdyaWREZWZpbml0aW9uIHtcbiAgLyoqIFRoZSBkYXRhIHNvdXJjZSBJRCB0aGF0IHByb3ZpZGVzIGRhdGEgZm9yIHRoaXMgZ3JpZC4gKi9cbiAgZGF0YVNvdXJjZUlkOiBzdHJpbmc7XG5cbiAgLyoqIENvbHVtbiBkZWZpbml0aW9ucy4gKi9cbiAgY29sdW1uczogR3JpZENvbHVtbkRlZmluaXRpb25bXTtcblxuICAvKiogR3JpZC1sZXZlbCBvcHRpb25zLiAqL1xuICBvcHRpb25zPzogR3JpZE9wdGlvbnNEZWZpbml0aW9uO1xuXG4gIC8qKiBEZWNsYXJhdGl2ZSByb3ctY2xpY2sgYWN0aW9uIGZvciBtYXN0ZXItZGV0YWlsIGRyaWxsLWRvd25zLiAqL1xuICByb3dDbGlja0FjdGlvbj86IEdyaWRSb3dDbGlja0FjdGlvbjtcbn1cblxuLyoqXG4gKiBEZWZpbmVzIGEgc2luZ2xlIGNvbHVtbiBpbiB0aGUgcmVzdWx0IGdyaWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3JpZENvbHVtbkRlZmluaXRpb24ge1xuICAvKiogVGhlIGZpZWxkIG5hbWUgaW4gdGhlIGRhdGEgcm93IG9iamVjdC4gKi9cbiAgZmllbGQ6IHN0cmluZztcblxuICAvKiogRGlzcGxheSBsYWJlbCBmb3IgdGhlIGNvbHVtbiBoZWFkZXIuICovXG4gIGxhYmVsOiBzdHJpbmc7XG5cbiAgLyoqIENvbHVtbiBkYXRhIHR5cGUg4oCUIHVzZWQgZm9yIGZvcm1hdHRpbmcgYW5kIHNvcnRpbmcuICovXG4gIGRhdGFUeXBlPzogJ3N0cmluZycgfCAnbnVtYmVyJyB8ICdkYXRlJyB8ICdib29sZWFuJyB8ICdjdXJyZW5jeSc7XG5cbiAgLyoqIERpc3BsYXkgZm9ybWF0IChlLmcuLCAnZGQvTU0veXl5eScgZm9yIGRhdGVzLCAnMS4yLTInIGZvciBudW1iZXJzKS4gKi9cbiAgZm9ybWF0Pzogc3RyaW5nO1xuXG4gIC8qKiBDb2x1bW4gd2lkdGggKENTUyB2YWx1ZSwgZS5nLiwgJzE1MHB4JywgJzIwJScpLiAqL1xuICB3aWR0aD86IHN0cmluZztcblxuICAvKiogV2hldGhlciB0aGlzIGNvbHVtbiBpcyBzb3J0YWJsZS4gRGVmYXVsdHMgdG8gYHRydWVgLiAqL1xuICBzb3J0YWJsZT86IGJvb2xlYW47XG5cbiAgLyoqIFdoZXRoZXIgdGhpcyBjb2x1bW4gaXMgZmlsdGVyYWJsZS4gRGVmYXVsdHMgdG8gYGZhbHNlYC4gKi9cbiAgZmlsdGVyYWJsZT86IGJvb2xlYW47XG5cbiAgLyoqIFRleHQgYWxpZ25tZW50LiAqL1xuICBhbGlnbj86ICdsZWZ0JyB8ICdjZW50ZXInIHwgJ3JpZ2h0JztcblxuICAvKiogV2hldGhlciB0aGlzIGNvbHVtbiBpcyB2aXNpYmxlLiBEZWZhdWx0cyB0byBgdHJ1ZWAuICovXG4gIHZpc2libGU/OiBib29sZWFuO1xuXG4gIC8qKiBXaGV0aGVyIHRoaXMgY29sdW1uIGlzIHBpbm5lZC9mcm96ZW4uICovXG4gIHBpbm5lZD86ICdsZWZ0JyB8ICdyaWdodCcgfCBmYWxzZTtcblxuICAvKiogQ29sdW1uIGRpc3BsYXkgb3JkZXIgKGxvd2VyID0gZmlyc3QpLiAqL1xuICBvcmRlcj86IG51bWJlcjtcblxuICAvKiogQWdncmVnYXRlIGZ1bmN0aW9uIHRvIGRpc3BsYXkgaW4gYSBmb290ZXIgcm93LiAqL1xuICBhZ2dyZWdhdGU/OiAnc3VtJyB8ICdhdmcnIHwgJ2NvdW50JyB8ICdtaW4nIHwgJ21heCcgfCAnbm9uZSc7XG5cbiAgLyoqIFdoZXRoZXIgdG8gcmVuZGVyIGEgc2VsZWN0aW9uIGNoZWNrYm94IGluIHRoaXMgY29sdW1uJ3MgY2VsbHMuICovXG4gIGNoZWNrYm94U2VsZWN0aW9uPzogYm9vbGVhbjtcblxuICAvKiogV2hldGhlciB0byByZW5kZXIgYSBzZWxlY3QtYWxsIGNoZWNrYm94IGluIHRoaXMgY29sdW1uJ3MgaGVhZGVyLiAqL1xuICBoZWFkZXJDaGVja2JveFNlbGVjdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqIE9wdGlvbmFsIGNlbGwtc3BlY2lmaWMgY2xpY2sgYWN0aW9uIChvdmVycmlkZXMgZ3JpZC1sZXZlbCByb3dDbGlja0FjdGlvbiBmb3IgdGhpcyBjb2x1bW4pLiAqL1xuICBhY3Rpb24/OiBHcmlkUm93Q2xpY2tBY3Rpb247XG59XG5cbi8qKlxuICogR3JpZC1sZXZlbCBvcHRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdyaWRPcHRpb25zRGVmaW5pdGlvbiB7XG4gIC8qKiBOdW1iZXIgb2Ygcm93cyBwZXIgcGFnZS4gKi9cbiAgcGFnZVNpemU/
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWdyaWQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9jb3JlL21vZGVscy9yZXBvcnQtZ3JpZC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztHQU9HIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSZXBvcnQgZ3JpZCBkZWZpbml0aW9ucy5cbiAqXG4gKiBEZXNjcmliZXMgdGhlIGxvZ2ljYWwgc3RydWN0dXJlIG9mIHRoZSByZXN1bHQgZ3JpZCDigJQgY29sdW1ucywgZmllbGRzLFxuICogZm9ybWF0dGluZywgc29ydGluZywgYW5kIGZpbHRlcmluZy4gVGhpcyBpcyAqKm5vdCoqIGEgc3BlY2lmaWMgZ3JpZFxuICogbGlicmFyeSdzIEFQSS4gVGhlIGBSZXBvcnRHcmlkQnJpZGdlQ29tcG9uZW50YCB0cmFuc2xhdGVzIHRoaXMgaW50b1xuICogd2hhdGV2ZXIgdGhlIGhvc3QncyBncmlkIGNvbXBvbmVudCAoQldheXMtZ3JpZCwgQUcgR3JpZCwgZXRjLikgZXhwZWN0cy5cbiAqL1xuXG4vKipcbiAqIEludGVyYWN0aXZlIGFjdGlvbiB0cmlnZ2VyZWQgd2hlbiBhIHJvdyBvciBjZWxsIGluIHRoZSByZXN1bHQgZ3JpZCBpcyBjbGlja2VkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdyaWRSb3dDbGlja0FjdGlvbiB7XG4gIC8qKlxuICAgKiBBY3Rpb24gdHlwZTpcbiAgICogLSAnZHJpbGxkb3duLXJlcG9ydCc6IG5hdmlnYXRlcyB0byBvciBvcGVucyBhIHRhcmdldCBzdWItcmVwb3J0XG4gICAqIC0gJ29wZW4tZHJhd2VyJzogb3BlbnMgYW4gaW4tcGFnZSBzbGlkZS1vdmVyIGRyYXdlciBydW5uaW5nIHRoZSB0YXJnZXQgcmVwb3J0XG4gICAqIC0gJ25hdmlnYXRlJzogb3BlbnMgYW4gZXh0ZXJuYWwgVVJMIG9yIGFwcGxpY2F0aW9uIHJvdXRlXG4gICAqIC0gJ2VtaXQtY3VzdG9tJzogZW1pdHMgYSBjdXN0b20gZXZlbnQgZm9yIHRoZSBob3N0IGFwcGxpY2F0aW9uXG4gICAqL1xuICB0eXBlOiAnZHJpbGxkb3duLXJlcG9ydCcgfCAnb3Blbi1kcmF3ZXInIHwgJ25hdmlnYXRlJyB8ICdlbWl0LWN1c3RvbSc7XG5cbiAgLyoqIFRhcmdldCByZXBvcnQgSUQgdG8gb3Blbi9kcmlsbCBpbnRvIChlLmcuICdyZXBfY3VzdG9tZXJfbGVkZ2VyJykuICovXG4gIHRhcmdldFJlcG9ydElkPzogc3RyaW5nO1xuXG4gIC8qKiBFeHRlcm5hbCBVUkwgb3Igcm91dGUgdGVtcGxhdGUgaWYgdHlwZSA9PT0gJ25hdmlnYXRlJy4gU3VwcG9ydHMgYHt7cm93LmZpZWxkfX1gIHJlcGxhY2VtZW50cy4gKi9cbiAgdGFyZ2V0VXJsPzogc3RyaW5nO1xuXG4gIC8qKiBUYXJnZXQgYnJvd3NpbmcgY29udGV4dDogJ19ibGFuaycgfCAnX3NlbGYnIHdoZW4gbmF2aWdhdGluZy4gKi9cbiAgb3Blbk5ld1RhYj86IGJvb2xlYW47XG5cbiAgLyoqIFRpdGxlIGZvciB0aGUgc2xpZGUtb3ZlciBkcmF3ZXIgb3IgZGlhbG9nLiBTdXBwb3J0cyBge3tyb3cuZmllbGR9fWAgcmVwbGFjZW1lbnRzLiAqL1xuICBkcmF3ZXJUaXRsZT86IHN0cmluZztcblxuICAvKiogV2lkdGggb2YgdGhlIHNsaWRlIGRyYXdlciAoQ1NTIHZhbHVlLCBlLmcuICc2ODBweCcsICc1MHZ3JykuIERlZmF1bHQ6ICc3MjBweCcuICovXG4gIGRyYXdlcldpZHRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNYXBzIHBhcmFtZXRlciBrZXlzIG9mIHRoZSB0YXJnZXQgc3ViLXJlcG9ydCB0byBleHByZXNzaW9uczpcbiAgICogZS5nLiB7IFwiQEN1c3RDb2RlXCI6IFwicm93LmN1c3RvbWVySWRcIiwgXCJAQnJhbmNoSWRcIjogXCJzZXNzaW9uLmJyYW5jaElkXCIsIFwiZnJvbURhdGVcIjogXCJmb3JtLmZyb21EYXRlXCIgfVxuICAgKi9cbiAgcGFyYW1ldGVyTWFwcGluZz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbiAgLyoqIEN1c3RvbSBldmVudCBvciBhY3Rpb24gaWRlbnRpZmllciB3aGVuIHR5cGUgPT09ICdlbWl0LWN1c3RvbScuICovXG4gIGN1c3RvbUFjdGlvbk5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGVmaW5lcyB0aGUgcmVzdWx0IGdyaWQgZm9yIGEgcmVwb3J0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEdyaWREZWZpbml0aW9uIHtcbiAgLyoqIFRoZSBkYXRhIHNvdXJjZSBJRCB0aGF0IHByb3ZpZGVzIGRhdGEgZm9yIHRoaXMgZ3JpZC4gKi9cbiAgZGF0YVNvdXJjZUlkOiBzdHJpbmc7XG5cbiAgLyoqIENvbHVtbiBkZWZpbml0aW9ucy4gKi9cbiAgY29sdW1uczogR3JpZENvbHVtbkRlZmluaXRpb25bXTtcblxuICAvKiogR3JpZC1sZXZlbCBvcHRpb25zLiAqL1xuICBvcHRpb25zPzogR3JpZE9wdGlvbnNEZWZpbml0aW9uO1xuXG4gIC8qKiBEZWNsYXJhdGl2ZSByb3ctY2xpY2sgYWN0aW9uIGZvciBtYXN0ZXItZGV0YWlsIGRyaWxsLWRvd25zLiAqL1xuICByb3dDbGlja0FjdGlvbj86IEdyaWRSb3dDbGlja0FjdGlvbjtcbn1cblxuLyoqXG4gKiBEZWZpbmVzIGEgc2luZ2xlIGNvbHVtbiBpbiB0aGUgcmVzdWx0IGdyaWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3JpZENvbHVtbkRlZmluaXRpb24ge1xuICAvKiogVGhlIGZpZWxkIG5hbWUgaW4gdGhlIGRhdGEgcm93IG9iamVjdC4gKi9cbiAgZmllbGQ6IHN0cmluZztcblxuICAvKiogRGlzcGxheSBsYWJlbCBmb3IgdGhlIGNvbHVtbiBoZWFkZXIuICovXG4gIGxhYmVsOiBzdHJpbmc7XG5cbiAgLyoqIENvbHVtbiBkYXRhIHR5cGUg4oCUIHVzZWQgZm9yIGZvcm1hdHRpbmcgYW5kIHNvcnRpbmcuICovXG4gIGRhdGFUeXBlPzogJ3N0cmluZycgfCAnbnVtYmVyJyB8ICdkYXRlJyB8ICdib29sZWFuJyB8ICdjdXJyZW5jeSc7XG5cbiAgLyoqIERpc3BsYXkgZm9ybWF0IChlLmcuLCAnZGQvTU0veXl5eScgZm9yIGRhdGVzLCAnMS4yLTInIGZvciBudW1iZXJzKS4gKi9cbiAgZm9ybWF0Pzogc3RyaW5nO1xuXG4gIC8qKiBDb2x1bW4gd2lkdGggKENTUyB2YWx1ZSwgZS5nLiwgJzE1MHB4JywgJzIwJScpLiAqL1xuICB3aWR0aD86IHN0cmluZztcblxuICAvKiogV2hldGhlciB0aGlzIGNvbHVtbiBpcyBzb3J0YWJsZS4gRGVmYXVsdHMgdG8gYHRydWVgLiAqL1xuICBzb3J0YWJsZT86IGJvb2xlYW47XG5cbiAgLyoqIFdoZXRoZXIgdGhpcyBjb2x1bW4gaXMgZmlsdGVyYWJsZS4gRGVmYXVsdHMgdG8gYGZhbHNlYC4gKi9cbiAgZmlsdGVyYWJsZT86IGJvb2xlYW47XG5cbiAgLyoqIFRleHQgYWxpZ25tZW50LiAqL1xuICBhbGlnbj86ICdsZWZ0JyB8ICdjZW50ZXInIHwgJ3JpZ2h0JztcblxuICAvKiogV2hldGhlciB0aGlzIGNvbHVtbiBpcyB2aXNpYmxlLiBEZWZhdWx0cyB0byBgdHJ1ZWAuICovXG4gIHZpc2libGU/OiBib29sZWFuO1xuXG4gIC8qKiBXaGV0aGVyIHRoaXMgY29sdW1uIGlzIHBpbm5lZC9mcm96ZW4uICovXG4gIHBpbm5lZD86ICdsZWZ0JyB8ICdyaWdodCcgfCBmYWxzZTtcblxuICAvKiogQ29sdW1uIGRpc3BsYXkgb3JkZXIgKGxvd2VyID0gZmlyc3QpLiAqL1xuICBvcmRlcj86IG51bWJlcjtcblxuICAvKiogQWdncmVnYXRlIGZ1bmN0aW9uIHRvIGRpc3BsYXkgaW4gYSBmb290ZXIgcm93LiAqL1xuICBhZ2dyZWdhdGU/OiAnc3VtJyB8ICdhdmcnIHwgJ2NvdW50JyB8ICdtaW4nIHwgJ21heCcgfCAnbm9uZSc7XG5cbiAgLyoqIFdoZXRoZXIgdG8gcmVuZGVyIGEgc2VsZWN0aW9uIGNoZWNrYm94IGluIHRoaXMgY29sdW1uJ3MgY2VsbHMuICovXG4gIGNoZWNrYm94U2VsZWN0aW9uPzogYm9vbGVhbjtcblxuICAvKiogV2hldGhlciB0byByZW5kZXIgYSBzZWxlY3QtYWxsIGNoZWNrYm94IGluIHRoaXMgY29sdW1uJ3MgaGVhZGVyLiAqL1xuICBoZWFkZXJDaGVja2JveFNlbGVjdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqIE9wdGlvbmFsIGNlbGwtc3BlY2lmaWMgY2xpY2sgYWN0aW9uIChvdmVycmlkZXMgZ3JpZC1sZXZlbCByb3dDbGlja0FjdGlvbiBmb3IgdGhpcyBjb2x1bW4pLiAqL1xuICBhY3Rpb24/OiBHcmlkUm93Q2xpY2tBY3Rpb247XG59XG5cbi8qKlxuICogR3JpZC1sZXZlbCBvcHRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdyaWRPcHRpb25zRGVmaW5pdGlvbiB7XG4gIC8qKiBOdW1iZXIgb2Ygcm93cyBwZXIgcGFnZS4gKi9cbiAgcGFnZVNpemU/OiBudW1iZXI7XG5cbiAgLyoqIFdoZXRoZXIgcGFnaW5hdGlvbiBpcyBlbmFibGVkLiAqL1xuICBwYWdpbmF0aW9uPzogYm9vbGVhbjtcblxuICAvKiogV2hldGhlciByb3cgc2VsZWN0aW9uIGlzIGVuYWJsZWQuIERlZmF1bHRzIHRvIHRydWU7IHNldCBmYWxzZSB0byBkaXNhYmxlLiAqL1xuICBzZWxlY3RhYmxlPzogYm9vbGVhbjtcblxuICAvKiogU2VsZWN0aW9uIG1vZGUgd2hlbiBzZWxlY3RhYmxlIGlzIHRydWUuIERlZmF1bHRzIHRvICdtdWx0aXBsZScuICovXG4gIHNlbGVjdGlvbk1vZGU/OiAnc2luZ2xlJyB8ICdtdWx0aXBsZSc7XG5cbiAgLyoqIFNlbGVjdGlvbiBtb2RlIGFsaWFzIChjb21wYXRpYmxlIHdpdGggVWx0cmFHcmlkIGFuZCBBRyBHcmlkIHJvd1NlbGVjdGlvbikuICovXG4gIHJvd1NlbGVjdGlvbj86ICdzaW5nbGUnIHwgJ211bHRpcGxlJztcblxuICAvKiogV2hldGhlciB0byByZW5kZXIgc2VsZWN0aW9uIGNoZWNrYm94ZXMgb24gcm93cy4gRGVmYXVsdHMgdG8gdHJ1ZSB3aGVuIHNlbGVjdGFibGUgaXMgdHJ1ZS4gKi9cbiAgY2hlY2tib3hTZWxlY3Rpb24/OiBib29sZWFuO1xuXG4gIC8qKiBXaGV0aGVyIHRvIHJlbmRlciBhIHNlbGVjdC1hbGwgY2hlY2tib3ggaW4gdGhlIGhlYWRlci4gRGVmYXVsdHMgdG8gdHJ1ZSB3aGVuIG11bHRpLXJvdyBjaGVja2JveCBzZWxlY3Rpb24gaXMgYWN0aXZlLiAqL1xuICBoZWFkZXJDaGVja2JveFNlbGVjdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyByb3cgbnVtYmVycy4gKi9cbiAgc2hvd1Jvd051bWJlcnM/OiBib29sZWFuO1xuXG4gIC8qKiBXaGV0aGVyIHRvIGFsbG93IGNvbHVtbiByZW9yZGVyaW5nLiAqL1xuICBhbGxvd0NvbHVtblJlb3JkZXI/OiBib29sZWFuO1xuXG4gIC8qKiBXaGV0aGVyIHRvIGFsbG93IGV4cG9ydGluZy4gKi9cbiAgYWxsb3dFeHBvcnQ/OiBib29sZWFuO1xuXG4gIC8qKiBFeHBvcnQgZm9ybWF0cyB0byBvZmZlci4gKi9cbiAgZXhwb3J0Rm9ybWF0cz86ICgnY3N2JyB8ICdleGNlbCcgfCAncGRmJylbXTtcblxuICAvKiogV2hldGhlciB0byBzaG93IGEgZm9vdGVyIHJvdyB3aXRoIGFnZ3JlZ2F0ZXMuICovXG4gIHNob3dGb290ZXI/OiBib29sZWFuO1xuXG4gIC8qKiBIZWlnaHQgb2YgdGhlIGdyaWQgKENTUyB2YWx1ZSkuICovXG4gIGhlaWdodD86IHN0cmluZztcblxuICAvKiogQWN0aXZlIGNvbHVtbiBncm91cGluZyBmaWVsZHMgaW4gb3JkZXIgKGUuZy4gWydicmFuY2gnLCAnY3VzdG9tZXInXSkuICovXG4gIGdyb3VwTW9kZWw/OiBzdHJpbmdbXTtcblxuICAvKiogQWN0aXZlIHNvcnQgbW9kZWwgZGVmaW5pdGlvbnMuICovXG4gIHNvcnRNb2RlbD86IHVua25vd25bXTtcblxuICAvKiogQ29tcGxldGUgc2VyaWFsaXplZCBncmlkIHJlcG9ydCBzdGF0ZSAoZmlsdGVycywgaGlnaGxpZ2h0cywgZ3JvdXBzKS4gKi9cbiAgcmVwb3J0U3RhdGU/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuICAvKiogVmlldyBwcmVzZXRzIC8gc2F2ZWQgY3VzdG9tIGdyaWQgdmlld3MuICovXG4gIHByZXNldHM/OiB1bmtub3duW107XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGdyaWQgc2lkZSBwYW5lbCAodG9vbCBwYW5lbHMgZm9yIGNvbHVtbnMsIGZpbHRlcnMsIGhpZ2hsaWdodHMsIGV4cG9ydCwgYW5hbHl0aWNzLCBBSSBjaGF0KSBpcyBlbmFibGVkLlxuICAgKiBTdGFuZGFyZCBCV2F5cy1ncmlkIC8gVWx0cmFHcmlkIGZlYXR1cmUuIERlZmF1bHRzIHRvIGB0cnVlYC5cbiAgICovXG4gIHNpZGVCYXI/OiBib29sZWFuIHwge1xuICAgIHZpc2libGU/OiBib29sZWFuO1xuICAgIHBhbmVsPzogKCdjb2x1bW5zJyB8ICdmaWx0ZXJzJyB8ICdoaWdobGlnaHRzJyB8ICdleHBvcnQnIHwgJ2FuYWx5dGljcycgfCAnY2hhdCcpW107XG4gIH07XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHJlYWwtdGltZSBnbG9iYWwgc2VhcmNoIGJhciBpcyBlbmFibGVkLiBEZWZhdWx0cyB0byBgdHJ1ZWAuICovXG4gIGdsb2JhbFNlYXJjaD86IGJvb2xlYW47XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGJvdHRvbSBzdGF0dXMgYmFyIGlzIGVuYWJsZWQuIERlZmF1bHRzIHRvIGB0cnVlYC4gKi9cbiAgc3RhdHVzQmFyPzogYm9vbGVhbjtcblxuICAvKiogRGVjbGFyYXRpdmUgcm93LWNsaWNrIGFjdGlvbiBmb3IgbWFzdGVyLWRldGFpbCBkcmlsbC1kb3ducy4gKi9cbiAgcm93Q2xpY2tBY3Rpb24/OiBHcmlkUm93Q2xpY2tBY3Rpb247XG59XG4iXX0=
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { inject, Injectable } from '@angular/core';
|
|
2
2
|
import { HttpClient } from '@angular/common/http';
|
|
3
3
|
import { throwError } from 'rxjs';
|
|
4
|
-
import { catchError, map } from 'rxjs/operators';
|
|
4
|
+
import { catchError, map, timeout } from 'rxjs/operators';
|
|
5
5
|
import { ReportSessionContextService } from './report-session-context.service';
|
|
6
6
|
import { REPORTING_CONFIG } from '../tokens/reporting-config.token';
|
|
7
7
|
import { BWAYS_REPORT_ENDPOINTS } from '../../data-access/adapters/endpoint-tokens';
|
|
@@ -44,12 +44,24 @@ export class ReportApiExecutionService {
|
|
|
44
44
|
};
|
|
45
45
|
// 1. Interpolate Path Variables: /api/orders/:orderId or /api/orders/{{orderId}}
|
|
46
46
|
const pathKeys = new Set();
|
|
47
|
-
|
|
48
|
-
const key =
|
|
47
|
+
const resolvedUrl = rawUrl.replace(/(^|\/):([a-zA-Z_][a-zA-Z0-9_]*)|\{\{([a-zA-Z0-9_]+)\}\}/g, (_, prefix, pathKey, templateKey) => {
|
|
48
|
+
const key = pathKey || templateKey;
|
|
49
49
|
pathKeys.add(key);
|
|
50
50
|
const val = allValuesForPath[key];
|
|
51
|
-
return val !== undefined && val !== null ? encodeURIComponent(String(val)) : '';
|
|
51
|
+
return (prefix || '') + (val !== undefined && val !== null ? encodeURIComponent(String(val)) : '');
|
|
52
52
|
});
|
|
53
|
+
let destination;
|
|
54
|
+
const browserOrigin = typeof location !== 'undefined' ? location.origin : undefined;
|
|
55
|
+
try {
|
|
56
|
+
destination = new URL(resolvedUrl, browserOrigin);
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return throwError(() => new Error('Invalid API destination URL.'));
|
|
60
|
+
}
|
|
61
|
+
if (!/^https?:$/.test(destination.protocol) || destination.username || destination.password) {
|
|
62
|
+
return throwError(() => new Error('API destinations must use HTTP(S) without embedded credentials.'));
|
|
63
|
+
}
|
|
64
|
+
const trusted = destination.origin === browserOrigin || (this.reportingConfig?.trustedApiOrigins ?? []).includes(destination.origin);
|
|
53
65
|
const method = (options.method || 'GET').toUpperCase();
|
|
54
66
|
const queryParams = {};
|
|
55
67
|
const bodyPayload = { ...(options.bodyTemplate || {}) };
|
|
@@ -61,7 +73,7 @@ export class ReportApiExecutionService {
|
|
|
61
73
|
for (const [k, v] of Object.entries(payloadValues)) {
|
|
62
74
|
if (pathKeys.has(k) || v === undefined || v === null || v === '')
|
|
63
75
|
continue;
|
|
64
|
-
if (method === 'GET') {
|
|
76
|
+
if (method === 'GET' || method === 'DELETE') {
|
|
65
77
|
if (typeof v === 'object') {
|
|
66
78
|
queryParams[k] = JSON.stringify(v);
|
|
67
79
|
}
|
|
@@ -73,22 +85,32 @@ export class ReportApiExecutionService {
|
|
|
73
85
|
bodyPayload[k] = v;
|
|
74
86
|
}
|
|
75
87
|
}
|
|
88
|
+
if (!trusted) {
|
|
89
|
+
const secrets = Object.entries(sessionContext).filter(([key, value]) => /token|secret|password|authorization|api.?key/i.test(key) && value != null && String(value).length > 0).map(([, value]) => String(value));
|
|
90
|
+
const payloadText = JSON.stringify([queryParams, bodyPayload]);
|
|
91
|
+
if (secrets.some(secret => resolvedUrl.includes(secret) || resolvedUrl.includes(encodeURIComponent(secret)) || payloadText.includes(secret))) {
|
|
92
|
+
return throwError(() => new Error('Session credentials may only be sent to a trusted API origin.'));
|
|
93
|
+
}
|
|
94
|
+
}
|
|
76
95
|
// 3. Resolve Headers with Token Interpolation & Standard Session Context
|
|
77
96
|
const headers = {};
|
|
78
|
-
if (sessionContext['companyId'] !== undefined && sessionContext['companyId'] !== null) {
|
|
97
|
+
if (trusted && sessionContext['companyId'] !== undefined && sessionContext['companyId'] !== null) {
|
|
79
98
|
headers['X-Company-Id'] = String(sessionContext['companyId']);
|
|
80
99
|
}
|
|
81
|
-
if (sessionContext['branchId'] !== undefined && sessionContext['branchId'] !== null) {
|
|
100
|
+
if (trusted && sessionContext['branchId'] !== undefined && sessionContext['branchId'] !== null) {
|
|
82
101
|
headers['X-Branch-Id'] = String(sessionContext['branchId']);
|
|
83
102
|
}
|
|
84
|
-
if (sessionContext['userId'] !== undefined && sessionContext['userId'] !== null) {
|
|
103
|
+
if (trusted && sessionContext['userId'] !== undefined && sessionContext['userId'] !== null) {
|
|
85
104
|
headers['X-User-Id'] = String(sessionContext['userId']);
|
|
86
105
|
}
|
|
87
|
-
if (sessionContext['token'] !== undefined && sessionContext['token'] !== null) {
|
|
106
|
+
if (trusted && sessionContext['token'] !== undefined && sessionContext['token'] !== null) {
|
|
88
107
|
headers['Authorization'] = `Bearer ${sessionContext['token']}`;
|
|
89
108
|
}
|
|
90
109
|
if (options.headers) {
|
|
91
110
|
for (const [hk, hv] of Object.entries(options.headers)) {
|
|
111
|
+
// Report JSON cannot opt an external origin into receiving session credentials.
|
|
112
|
+
if (!trusted && (!/^(accept|content-type)$/i.test(hk) || /\{\{/.test(String(hv))))
|
|
113
|
+
continue;
|
|
92
114
|
if (typeof hv === 'string') {
|
|
93
115
|
headers[hk] = hv.replace(/\{\{session\.([a-zA-Z0-9_]+)\}\}|\{\{([a-zA-Z0-9_]+)\}\}/g, (_, sk1, sk2) => {
|
|
94
116
|
const key = sk1 || sk2;
|
|
@@ -136,7 +158,7 @@ export class ReportApiExecutionService {
|
|
|
136
158
|
}
|
|
137
159
|
}
|
|
138
160
|
// 5. Extract & Normalize Target Data Array
|
|
139
|
-
return request$.pipe(map((response) => this.extractDataArray(response, options.dataPath)), catchError((err) => {
|
|
161
|
+
return request$.pipe(timeout({ first: this.reportingConfig?.executionTimeoutMs ?? this.reportingConfig?.lookupTimeoutMs ?? 300000 }), map((response) => this.extractDataArray(response, options.dataPath)), catchError((err) => {
|
|
140
162
|
console.error(`[ReportApiExecutionService] API execution error [${method} ${resolvedUrl}]:`, err);
|
|
141
163
|
const message = err?.error?.message ||
|
|
142
164
|
err?.message ||
|
|
@@ -185,4 +207,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
185
207
|
type: Injectable,
|
|
186
208
|
args: [{ providedIn: 'root' }]
|
|
187
209
|
}] });
|
|
188
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWFwaS1leGVjdXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J3YXlzLXJlcG9ydC9zcmMvbGliL2NvcmUvc2VydmljZXMvcmVwb3J0LWFwaS1leGVjdXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBbUIsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRixPQUFPLEVBQUUsc0JBQXNCLEVBQXdCLE1BQU0sNENBQTRDLENBQUM7O0FBYzFHOzs7Ozs7R0FNRztBQUVILE1BQU0sT0FBTyx5QkFBeUI7SUFDbkIsSUFBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM5QyxPQUFPLEdBQUcsTUFBTSxDQUFDLDJCQUEyQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDbEUsZUFBZSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBMkIsQ0FBQztJQUN6RixTQUFTLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFnQyxDQUFDO0lBRS9HLHNCQUFzQjtRQUNwQixPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUs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Q0FBQztZQUNELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7Z0JBQUUsT0FBTyxPQUFPLENBQUM7UUFDN0MsQ0FBQztRQUVELG9EQUFvRDtRQUNwRCxLQUFLLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQzVFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQUUsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekQsQ0FBQztRQUVELDREQUE0RDtRQUM1RCxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsSUFBSSxRQUFRLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDdEQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3BCLENBQUM7UUFFRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7d0dBcExVLHlCQUF5Qjs0R0FBekIseUJBQXlCLGNBRFosTUFBTTs7NEZBQ25CLHlCQUF5QjtrQkFEckMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBSZXBvcnRTZXNzaW9uQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuL3JlcG9ydC1zZXNzaW9uLWNvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBSRVBPUlRJTkdfQ09ORklHLCBSZXBvcnRpbmdDb25maWcgfSBmcm9tICcuLi90b2tlbnMvcmVwb3J0aW5nLWNvbmZpZy50b2tlbic7XG5pbXBvcnQgeyBCV0FZU19SRVBPUlRfRU5EUE9JTlRTLCBCd2F5c1JlcG9ydEVuZHBvaW50cyB9IGZyb20gJy4uLy4uL2RhdGEtYWNjZXNzL2FkYXB0ZXJzL2VuZHBvaW50LXRva2Vucyc7XG5pbXBvcnQgeyBSZXBvcnRBcGlFbmRwb2ludERlZmluaXRpb24gfSBmcm9tICcuLi9tb2RlbHMvcmVwb3J0LWFwaS1lbmRwb2ludC5tb2RlbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBpRXhlY3V0aW9uT3B0aW9ucyB7XG4gIHVybD86IHN0cmluZztcbiAgZW5kcG9pbnQ/OiBzdHJpbmc7XG4gIG1ldGhvZD86IHN0cmluZztcbiAgZGF0YVBhdGg/OiBzdHJpbmc7XG4gIHRvdGFsUGF0aD86IHN0cmluZztcbiAgaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIHVzZVByb3h5PzogYm9vbGVhbjtcbiAgYm9keVRlbXBsYXRlPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbi8qKlxuICogU2VydmljZSByZXNwb25zaWJsZSBmb3IgZXhlY3V0aW5nIEFQSS1iYXNlZCBkYXRhIHJldHJpZXZhbCByZXF1ZXN0cy5cbiAqXG4gKiBTdXBwb3J0cyBVUkwgcGF0aCBwYXJhbWV0ZXIgaW50ZXJwb2xhdGlvbiAoOmlkLCB7e2lkfX0pLCBxdWVyeSBzdHJpbmcgcGFyYW1ldGVyXG4gKiBwbGFjZW1lbnQsIEpTT04gcGF5bG9hZCBtYXBwaW5nLCBzZXNzaW9uIGhlYWRlciBzdWJzdGl0dXRpb24sIHByb3h5IHJvdXRpbmcsXG4gKiBhbmQgZG90LXBhdGggcmVzcG9uc2UgZGF0YSBleHRyYWN0aW9uLlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFJlcG9ydEFwaUV4ZWN1dGlvblNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBzZXNzaW9uID0gaW5qZWN0KFJlcG9ydFNlc3Npb25Db250ZXh0U2VydmljZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSByZXBvcnRpbmdDb25maWcgPSBpbmplY3QoUkVQT1JUSU5HX0NPTkZJRywgeyBvcHRpb25hbDogdHJ1ZSB9KSBhcyBSZXBvcnRpbmdDb25maWcgfCBudWxsO1xuICBwcml2YXRlIHJlYWRvbmx5IGVuZHBvaW50cyA9IGluamVjdChCV0FZU19SRVBPUlRfRU5EUE9JTlRTLCB7IG9wdGlvbmFsOiB0cnVlIH0pIGFzIEJ3YXlzUmVwb3J0RW5kcG9pbnRzIHwgbnVsbDtcblxuICBnZXRSZWdpc3RlcmVkRW5kcG9pbnRzKCk6IFJlcG9ydEFwaUVuZHBvaW50RGVmaW5pdGlvbltdIHtcbiAgICByZXR1cm4gdGhpcy5lbmRwb2ludHM/LmFwaUVuZHBvaW50cyB8fCBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlcyBhIHBhcmFtZXRlcml6ZWQgUkVTVCBBUEkgcmVxdWVzdCBhbmQgZXh0cmFjdHMgdGhlIHJlc3VsdCBhcnJheS5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgVGFyZ2V0IGVuZHBvaW50IGNvbmZpZ3VyYXRpb24sIFVSTCwgbWV0aG9kLCBhbmQgZGF0YSBwYXRoLlxuICAgKiBAcGFyYW0gZm9ybVZhbHVlcyBBY3RpdmUgcGFyYW1ldGVyIGFuZCBmaWx0ZXIgdmFsdWVzIGZyb20gdGhlIGZvcm0vY29udGV4dC5cbiAgICogQHBhcmFtIGN1c3RvbU1hcHBpbmdzIEFkZGl0aW9uYWwgZml4ZWQgb3IgbWFwcGVkIHBhcmFtZXRlciB2YWx1ZXMuXG4gICAqL1xuICBleGVjdXRlQXBpKFxuICAgIG9wdGlvbnM6IEFwaUV4ZWN1dGlvbk9wdGlvbnMgfCBQYXJ0aWFsPFJlcG9ydEFwaUVuZHBvaW50RGVmaW5pdGlvbj4sXG4gICAgZm9ybVZhbHVlczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fSxcbiAgICBjdXN0b21NYXBwaW5nczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fVxuICApOiBPYnNlcnZhYmxlPHVua25vd25bXT4ge1xuICAgIGlmICghdGhpcy5odHRwKSB7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoJ1tSZXBvcnRBcGlFeGVjdXRpb25TZXJ2aWNlXSBIdHRwQ2xpZW50IGlzIG5vdCBwcm92aWRlZCBpbiBpbmplY3Rvci4nKSk7XG4gICAgfVxuXG4gICAgY29uc3QgcmF3VXJsID0gb3B0aW9ucy51cmwgfHwgb3B0aW9ucy5lbmRwb2ludDtcbiAgICBpZiAoIXJhd1VybCB8fCB0eXBlb2YgcmF3VXJsICE9PSAnc3RyaW5nJyB8fCByYXdVcmwudHJpbSgpID09PSAnJykge1xuICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKCdbUmVwb3J0QXBpRXhlY3V0aW9uU2VydmljZV0gTm8gdmFsaWQgVVJMIG9yIGVuZHBvaW50IHByb3ZpZGVkIGZvciBBUEkgZXhlY3V0aW9uLicpKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZXNzaW9uQ29udGV4dCA9IHRoaXMuc2Vzc2lvbj8uZ2V0Q3VycmVudFNlc3Npb25Db250ZXh0KCkgPz8ge307XG4gICAgY29uc3QgYWxsVmFsdWVzRm9yUGF0aDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7XG4gICAgICAuLi5zZXNzaW9uQ29udGV4dCxcbiAgICAgIC4uLmZvcm1WYWx1ZXMsXG4gICAgICAuLi5jdXN0b21NYXBwaW5ncyxcbiAgICB9O1xuXG4gICAgLy8gMS4gSW50ZXJwb2xhdGUgUGF0aCBWYXJpYWJsZXM6IC9hcGkvb3JkZXJzLzpvcmRlcklkIG9yIC9hcGkvb3JkZXJzL3t7b3JkZXJJZH19XG4gICAgY29uc3QgcGF0aEtleXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBsZXQgcmVzb2x2ZWRVcmwgPSByYXdVcmwucmVwbGFjZSgvOihbYS16QS1aMC05X10rKXxcXHtcXHsoW2EtekEtWjAtOV9dKylcXH1cXH0vZywgKF8sIGsxLCBrMikgPT4ge1xuICAgICAgY29uc3Qga2V5ID0gazEgfHwgazI7XG4gICAgICBwYXRoS2V5cy5hZGQoa2V5KTtcbiAgICAgIGNvbnN0IHZhbCA9IGFsbFZhbHVlc0ZvclBhdGhba2V5XTtcbiAgICAgIHJldHVybiB2YWwgIT09IHVuZGVmaW5lZCAmJiB2YWwgIT09IG51bGwgPyBlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKHZhbCkpIDogJyc7XG4gICAgfSk7XG5cbiAgICBjb25zdCBtZXRob2QgPSAob3B0aW9ucy5tZXRob2QgfHwgJ0dFVCcpLnRvVXBwZXJDYXNlKCk7XG4gICAgY29uc3QgcXVlcnlQYXJhbXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgICBjb25zdCBib2R5UGF5bG9hZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7IC4uLigob3B0aW9ucyBhcyBhbnkpLmJvZHlUZW1wbGF0ZSB8fCB7fSkgfTtcblxuICAgIGNvbnN0IHBheWxvYWRWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge1xuICAgICAgLi4uZm9ybVZhbHVlcyxcbiAgICAgIC4uLmN1c3RvbU1hcHBpbmdzLFxuICAgIH07XG5cbiAgICAvLyAyLiBTZXBhcmF0ZSByZW1haW5pbmcgcGFyYW1zIGludG8gUXVlcnkgcGFyYW1zIGFuZCBCb2R5IHBheWxvYWRcbiAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhwYXlsb2FkVmFsdWVzKSkge1xuICAgICAgaWYgKHBhdGhLZXlzLmhhcyhrKSB8fCB2ID09PSB1bmRlZmluZWQgfHwgdiA9PT0gbnVsbCB8fCB2ID09PSAnJykgY29udGludWU7XG5cbiAgICAgIGlmIChtZXRob2QgPT09ICdHRVQnKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdiA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBxdWVyeVBhcmFtc1trXSA9IEpTT04uc3RyaW5naWZ5KHYpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHF1ZXJ5UGFyYW1zW2tdID0gU3RyaW5nKHYpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBib2R5UGF5bG9hZFtrXSA9IHY7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gMy4gUmVzb2x2ZSBIZWFkZXJzIHdpdGggVG9rZW4gSW50ZXJwb2xhdGlvbiAmIFN0YW5kYXJkIFNlc3Npb24gQ29udGV4dFxuICAgIGNvbnN0IGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgICBpZiAoc2Vzc2lvbkNvbnRleHRbJ2NvbXBhbnlJZCddICE9PSB1bmRlZmluZWQgJiYgc2Vzc2lvbkNvbnRleHRbJ2NvbXBhbnlJZCddICE9PSBudWxsKSB7XG4gICAgICBoZWFkZXJzWydYLUNvbXBhbnktSWQnXSA9IFN0cmluZyhzZXNzaW9uQ29udGV4dFsnY29tcGFueUlkJ10pO1xuICAgIH1cbiAgICBpZiAoc2Vzc2lvbkNvbnRleHRbJ2JyYW5jaElkJ10gIT09IHVuZGVmaW5lZCAmJiBzZXNzaW9uQ29udGV4dFsnYnJhbmNoSWQnXSAhPT0gbnVsbCkge1xuICAgICAgaGVhZGVyc1snWC1CcmFuY2gtSWQnXSA9IFN0cmluZyhzZXNzaW9uQ29udGV4dFsnYnJhbmNoSWQnXSk7XG4gICAgfVxuICAgIGlmIChzZXNzaW9uQ29udGV4dFsndXNlcklkJ10gIT09IHVuZGVmaW5lZCAmJiBzZXNzaW9uQ29udGV4dFsndXNlcklkJ10gIT09IG51bGwpIHtcbiAgICAgIGhlYWRlcnNbJ1gtVXNlci1JZCddID0gU3RyaW5nKHNlc3Npb25Db250ZXh0Wyd1c2VySWQnXSk7XG4gICAgfVxuICAgIGlmIChzZXNzaW9uQ29udGV4dFsndG9rZW4nXSAhPT0gdW5kZWZpbmVkICYmIHNlc3Npb25Db250ZXh0Wyd0b2tlbiddICE9PSBudWxsKSB7XG4gICAgICBoZWFkZXJzWydBdXRob3JpemF0aW9uJ10gPSBgQmVhcmVyICR7c2Vzc2lvbkNvbnRleHRbJ3Rva2VuJ119YDtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5oZWFkZXJzKSB7XG4gICAgICBmb3IgKGNvbnN0IFtoaywgaHZdIG9mIE9iamVjdC5lbnRyaWVzKG9wdGlvbnMuaGVhZGVycykpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBodiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBoZWFkZXJzW2hrXSA9IGh2LnJlcGxhY2UoL1xce1xce3Nlc3Npb25cXC4oW2EtekEtWjAtOV9dKylcXH1cXH18XFx7XFx7KFthLXpBLVowLTlfXSspXFx9XFx9L2csIChfLCBzazEsIHNrMikgPT4ge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gc2sxIHx8IHNrMjtcbiAgICAgICAgICAgIHJldHVybiBzZXNzaW9uQ29udGV4dFtrZXldICE9PSB1bmRlZmluZWQgPyBTdHJpbmcoc2Vzc2lvbkNvbnRleHRba2V5XSkgOiAnJztcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBoZWFkZXJzW2hrXSA9IFN0cmluZyhodik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyA0LiBEZXRlcm1pbmUgUmVxdWVzdDogRGlyZWN0IHZzLiBCYWNrZW5kIFByb3h5IEdhdGV3YXlcbiAgICBjb25zdCB1c2VQcm94eSA9IG9wdGlvbnMudXNlUHJveHkgPT09IHRydWU7XG4gICAgbGV0IHJlcXVlc3QkOiBPYnNlcnZhYmxlPHVua25vd24+O1xuXG4gICAgaWYgKHVzZVByb3h5KSB7XG4gICAgICBjb25zdCBwcm94eUJhc2UgPVxuICAgICAgICB0aGlzLmVuZHBvaW50cz8uYXBpc0VuZHBvaW50IHx8XG4gICAgICAgICh0aGlzLnJlcG9ydGluZ0NvbmZpZz8uYXBpQmFzZVVybCA/IGAke3RoaXMucmVwb3J0aW5nQ29uZmlnLmFwaUJhc2VVcmx9L2FwaXNgIDogJy9hcGkvcmVwb3J0aW5nL2FwaXMnKTtcbiAgICAgIGNvbnN0IHByb3h5VXJsID0gYCR7cHJveHlCYXNlLnJlcGxhY2UoL1xcLyskLywgJycpfS9wcm94eWA7XG5cbiAgICAgIHJlcXVlc3QkID0gdGhpcy5odHRwLnBvc3Q8dW5rbm93bj4ocHJveHlVcmwsIHtcbiAgICAgICAgZW5kcG9pbnQ6IHJlc29sdmVkVXJsLFxuICAgICAgICB1cmw6IHJlc29sdmVkVXJsLFxuICAgICAgICBtZXRob2QsXG4gICAgICAgIHBhcmFtZXRlcnM6IHF1ZXJ5UGFyYW1zLFxuICAgICAgICBxdWVyeVBhcmFtcyxcbiAgICAgICAgYm9keTogT2JqZWN0LmtleXMoYm9keVBheWxvYWQpLmxlbmd0aCA+IDAgPyBib2R5UGF5bG9hZCA6IHVuZGVmaW5lZCxcbiAgICAgICAgaGVhZGVycyxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAobWV0aG9kID09PSAnR0VUJykge1xuICAgICAgICByZXF1ZXN0JCA9IHRoaXMuaHR0cC5nZXQ8dW5rbm93bj4ocmVzb2x2ZWRVcmwsIHsgcGFyYW1zOiBxdWVyeVBhcmFtcywgaGVhZGVycyB9KTtcbiAgICAgIH0gZWxzZSBpZiAobWV0aG9kID09PSAnUE9TVCcpIHtcbiAgICAgICAgcmVxdWVzdCQgPSB0aGlzLmh0dHAucG9zdDx1bmtub3duPihyZXNvbHZlZFVybCwgYm9keVBheWxvYWQsIHsgcGFyYW1zOiBxdWVyeVBhcmFtcywgaGVhZGVycyB9KTtcbiAgICAgIH0gZWxzZSBpZiAobWV0aG9kID09PSAnUFVUJykge1xuICAgICAgICByZXF1ZXN0JCA9IHRoaXMuaHR0cC5wdXQ8dW5rbm93bj4ocmVzb2x2ZWRVcmwsIGJvZHlQYXlsb2FkLCB7IHBhcmFtczogcXVlcnlQYXJhbXMsIGhlYWRlcnMgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXF1ZXN0JCA9IHRoaXMuaHR0cC5yZXF1ZXN0PHVua25vd24+KG1ldGhvZCwgcmVzb2x2ZWRVcmwsIHtcbiAgICAgICAgICBib2R5OiBib2R5UGF5bG9hZCxcbiAgICAgICAgICBwYXJhbXM6IHF1ZXJ5UGFyYW1zLFxuICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIDUuIEV4dHJhY3QgJiBOb3JtYWxpemUgVGFyZ2V0IERhdGEgQXJyYXlcbiAgICByZXR1cm4gcmVxdWVzdCQucGlwZShcbiAgICAgIG1hcCgocmVzcG9uc2UpID0+IHRoaXMuZXh0cmFjdERhdGFBcnJheShyZXNwb25zZSwgb3B0aW9ucy5kYXRhUGF0aCkpLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYFtSZXBvcnRBcGlFeGVjdXRpb25TZXJ2aWNlXSBBUEkgZXhlY3V0aW9uIGVycm9yIFske21ldGhvZH0gJHtyZXNvbHZlZFVybH1dOmAsIGVycik7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPVxuICAgICAgICAgIGVycj8uZXJyb3I/Lm1lc3NhZ2UgfHxcbiAgICAgICAgICBlcnI/Lm1lc3NhZ2UgfHxcbiAgICAgICAgICBgQVBJIHJlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzICR7ZXJyPy5zdGF0dXMgfHwgJ3Vua25vd24nfWA7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcihtZXNzYWdlKSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRG90LW5vdGF0aW9uIGV4dHJhY3RvcjogJ2RhdGEuaXRlbXMnIC0+IHJlc3BvbnNlLmRhdGEuaXRlbXNcbiAgICovXG4gIGV4dHJhY3REYXRhQXJyYXkocmVzcG9uc2U6IGFueSwgZGF0YVBhdGg/OiBzdHJpbmcpOiB1bmtub3duW10ge1xuICAgIGlmICghcmVzcG9uc2UpIHJldHVybiBbXTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShyZXNwb25zZSkpIHJldHVybiByZXNwb25zZTtcblxuICAgIGlmIChkYXRhUGF0aCAmJiB0eXBlb2YgZGF0YVBhdGggPT09ICdzdHJpbmcnICYmIGRhdGFQYXRoLnRyaW0oKSAhPT0gJycpIHtcbiAgICAgIGNvbnN0IHBhcnRzID0gZGF0YVBhdGgudHJpbSgpLnNwbGl0KCcuJyk7XG4gICAgICBsZXQgY3VycmVudDogYW55ID0gcmVzcG9uc2U7XG4gICAgICBmb3IgKGNvbnN0IHBhcnQgb2YgcGFydHMpIHtcbiAgICAgICAgaWYgKGN1cnJlbnQgJiYgdHlwZW9mIGN1cnJlbnQgPT09ICdvYmplY3QnICYmIHBhcnQgaW4gY3VycmVudCkge1xuICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50W3BhcnRdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGN1cnJlbnQgPSBudWxsO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShjdXJyZW50KSkgcmV0dXJuIGN1cnJlbnQ7XG4gICAgfVxuXG4gICAgLy8gQXV0by1kZXRlY3QgY29tbW9uIHJlc3BvbnNlIGNvbGxlY3Rpb24gY29udGFpbmVyc1xuICAgIGZvciAoY29uc3Qga2V5IG9mIFsnZGF0YScsICdpdGVtcycsICdyb3dzJywgJ3JlY29yZHMnLCAncmVzdWx0cycsICdyZXN1bHQnXSkge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzcG9uc2Vba2V5XSkpIHJldHVybiByZXNwb25zZVtrZXldO1xuICAgIH1cblxuICAgIC8vIElmIHNpbmdsZSBvYmplY3QgcmV0dXJuZWQsIHdyYXAgaW4gYXJyYXkgZm9yIGdyaWQgZGlzcGxheVxuICAgIGlmICh0eXBlb2YgcmVzcG9uc2UgPT09ICdvYmplY3QnICYmIHJlc3BvbnNlICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gW3Jlc3BvbnNlXTtcbiAgICB9XG5cbiAgICByZXR1cm4gW107XG4gIH1cbn1cbiJdfQ==
|
|
210
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWFwaS1leGVjdXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J3YXlzLXJlcG9ydC9zcmMvbGliL2NvcmUvc2VydmljZXMvcmVwb3J0LWFwaS1leGVjdXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQW1CLE1BQU0sa0NBQWtDLENBQUM7QUFDckYsT0FBTyxFQUFFLHNCQUFzQixFQUF3QixNQUFNLDRDQUE0QyxDQUFDOztBQWMxRzs7Ozs7O0dBTUc7QUFFSCxNQUFNLE9BQU8seUJBQXlCO0lBQ25CLElBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDOUMsT0FBTyxHQUFHLE1BQU0sQ0FBQywyQkFBMkIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLGVBQWUsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQTJCLENBQUM7SUFDekYsU0FBUyxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBZ0MsQ0FBQztJQUUvRyxzQkFBc0I7UUFDcEIsT0FBTyxJQUFJLENBQUMs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QyxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDNUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFBRSxPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6RCxDQUFDO1FBRUQsNERBQTREO1FBQzVELElBQUksT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUN0RCxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDcEIsQ0FBQztRQUVELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQzt3R0F4TVUseUJBQXlCOzRHQUF6Qix5QkFBeUIsY0FEWixNQUFNOzs0RkFDbkIseUJBQXlCO2tCQURyQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgdGltZW91dCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFJlcG9ydFNlc3Npb25Db250ZXh0U2VydmljZSB9IGZyb20gJy4vcmVwb3J0LXNlc3Npb24tY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IFJFUE9SVElOR19DT05GSUcsIFJlcG9ydGluZ0NvbmZpZyB9IGZyb20gJy4uL3Rva2Vucy9yZXBvcnRpbmctY29uZmlnLnRva2VuJztcbmltcG9ydCB7IEJXQVlTX1JFUE9SVF9FTkRQT0lOVFMsIEJ3YXlzUmVwb3J0RW5kcG9pbnRzIH0gZnJvbSAnLi4vLi4vZGF0YS1hY2Nlc3MvYWRhcHRlcnMvZW5kcG9pbnQtdG9rZW5zJztcbmltcG9ydCB7IFJlcG9ydEFwaUVuZHBvaW50RGVmaW5pdGlvbiB9IGZyb20gJy4uL21vZGVscy9yZXBvcnQtYXBpLWVuZHBvaW50Lm1vZGVsJztcblxuZXhwb3J0IGludGVyZmFjZSBBcGlFeGVjdXRpb25PcHRpb25zIHtcbiAgdXJsPzogc3RyaW5nO1xuICBlbmRwb2ludD86IHN0cmluZztcbiAgbWV0aG9kPzogc3RyaW5nO1xuICBkYXRhUGF0aD86IHN0cmluZztcbiAgdG90YWxQYXRoPzogc3RyaW5nO1xuICBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgdXNlUHJveHk/OiBib29sZWFuO1xuICBib2R5VGVtcGxhdGU/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuLyoqXG4gKiBTZXJ2aWNlIHJlc3BvbnNpYmxlIGZvciBleGVjdXRpbmcgQVBJLWJhc2VkIGRhdGEgcmV0cmlldmFsIHJlcXVlc3RzLlxuICpcbiAqIFN1cHBvcnRzIFVSTCBwYXRoIHBhcmFtZXRlciBpbnRlcnBvbGF0aW9uICg6aWQsIHt7aWR9fSksIHF1ZXJ5IHN0cmluZyBwYXJhbWV0ZXJcbiAqIHBsYWNlbWVudCwgSlNPTiBwYXlsb2FkIG1hcHBpbmcsIHNlc3Npb24gaGVhZGVyIHN1YnN0aXR1dGlvbiwgcHJveHkgcm91dGluZyxcbiAqIGFuZCBkb3QtcGF0aCByZXNwb25zZSBkYXRhIGV4dHJhY3Rpb24uXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgUmVwb3J0QXBpRXhlY3V0aW9uU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50LCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIHJlYWRvbmx5IHNlc3Npb24gPSBpbmplY3QoUmVwb3J0U2Vzc2lvbkNvbnRleHRTZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlcG9ydGluZ0NvbmZpZyA9IGluamVjdChSRVBPUlRJTkdfQ09ORklHLCB7IG9wdGlvbmFsOiB0cnVlIH0pIGFzIFJlcG9ydGluZ0NvbmZpZyB8IG51bGw7XG4gIHByaXZhdGUgcmVhZG9ubHkgZW5kcG9pbnRzID0gaW5qZWN0KEJXQVlTX1JFUE9SVF9FTkRQT0lOVFMsIHsgb3B0aW9uYWw6IHRydWUgfSkgYXMgQndheXNSZXBvcnRFbmRwb2ludHMgfCBudWxsO1xuXG4gIGdldFJlZ2lzdGVyZWRFbmRwb2ludHMoKTogUmVwb3J0QXBpRW5kcG9pbnREZWZpbml0aW9uW10ge1xuICAgIHJldHVybiB0aGlzLmVuZHBvaW50cz8uYXBpRW5kcG9pbnRzIHx8IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGVzIGEgcGFyYW1ldGVyaXplZCBSRVNUIEFQSSByZXF1ZXN0IGFuZCBleHRyYWN0cyB0aGUgcmVzdWx0IGFycmF5LlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUYXJnZXQgZW5kcG9pbnQgY29uZmlndXJhdGlvbiwgVVJMLCBtZXRob2QsIGFuZCBkYXRhIHBhdGguXG4gICAqIEBwYXJhbSBmb3JtVmFsdWVzIEFjdGl2ZSBwYXJhbWV0ZXIgYW5kIGZpbHRlciB2YWx1ZXMgZnJvbSB0aGUgZm9ybS9jb250ZXh0LlxuICAgKiBAcGFyYW0gY3VzdG9tTWFwcGluZ3MgQWRkaXRpb25hbCBmaXhlZCBvciBtYXBwZWQgcGFyYW1ldGVyIHZhbHVlcy5cbiAgICovXG4gIGV4ZWN1dGVBcGkoXG4gICAgb3B0aW9uczogQXBpRXhlY3V0aW9uT3B0aW9ucyB8IFBhcnRpYWw8UmVwb3J0QXBpRW5kcG9pbnREZWZpbml0aW9uPixcbiAgICBmb3JtVmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9LFxuICAgIGN1c3RvbU1hcHBpbmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9XG4gICk6IE9ic2VydmFibGU8dW5rbm93bltdPiB7XG4gICAgaWYgKCF0aGlzLmh0dHApIHtcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcignW1JlcG9ydEFwaUV4ZWN1dGlvblNlcnZpY2VdIEh0dHBDbGllbnQgaXMgbm90IHByb3ZpZGVkIGluIGluamVjdG9yLicpKTtcbiAgICB9XG5cbiAgICBjb25zdCByYXdVcmwgPSBvcHRpb25zLnVybCB8fCBvcHRpb25zLmVuZHBvaW50O1xuICAgIGlmICghcmF3VXJsIHx8IHR5cGVvZiByYXdVcmwgIT09ICdzdHJpbmcnIHx8IHJhd1VybC50cmltKCkgPT09ICcnKSB7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoJ1tSZXBvcnRBcGlFeGVjdXRpb25TZXJ2aWNlXSBObyB2YWxpZCBVUkwgb3IgZW5kcG9pbnQgcHJvdmlkZWQgZm9yIEFQSSBleGVjdXRpb24uJykpO1xuICAgIH1cblxuICAgIGNvbnN0IHNlc3Npb25Db250ZXh0ID0gdGhpcy5zZXNzaW9uPy5nZXRDdXJyZW50U2Vzc2lvbkNvbnRleHQoKSA/PyB7fTtcbiAgICBjb25zdCBhbGxWYWx1ZXNGb3JQYXRoOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICAgIC4uLnNlc3Npb25Db250ZXh0LFxuICAgICAgLi4uZm9ybVZhbHVlcyxcbiAgICAgIC4uLmN1c3RvbU1hcHBpbmdzLFxuICAgIH07XG5cbiAgICAvLyAxLiBJbnRlcnBvbGF0ZSBQYXRoIFZhcmlhYmxlczogL2FwaS9vcmRlcnMvOm9yZGVySWQgb3IgL2FwaS9vcmRlcnMve3tvcmRlcklkfX1cbiAgICBjb25zdCBwYXRoS2V5cyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIGNvbnN0IHJlc29sdmVkVXJsID0gcmF3VXJsLnJlcGxhY2UoLyhefFxcLyk6KFthLXpBLVpfXVthLXpBLVowLTlfXSopfFxce1xceyhbYS16QS1aMC05X10rKVxcfVxcfS9nLCAoXywgcHJlZml4LCBwYXRoS2V5LCB0ZW1wbGF0ZUtleSkgPT4ge1xuICAgICAgY29uc3Qga2V5ID0gcGF0aEtleSB8fCB0ZW1wbGF0ZUtleTtcbiAgICAgIHBhdGhLZXlzLmFkZChrZXkpO1xuICAgICAgY29uc3QgdmFsID0gYWxsVmFsdWVzRm9yUGF0aFtrZXldO1xuICAgICAgcmV0dXJuIChwcmVmaXggfHwgJycpICsgKHZhbCAhPT0gdW5kZWZpbmVkICYmIHZhbCAhPT0gbnVsbCA/IGVuY29kZVVSSUNvbXBvbmVudChTdHJpbmcodmFsKSkgOiAnJyk7XG4gICAgfSk7XG5cbiAgICBsZXQgZGVzdGluYXRpb246IFVSTDtcbiAgICBjb25zdCBicm93c2VyT3JpZ2luID0gdHlwZW9mIGxvY2F0aW9uICE9PSAndW5kZWZpbmVkJyA/IGxvY2F0aW9uLm9yaWdpbiA6IHVuZGVmaW5lZDtcbiAgICB0cnkgeyBkZXN0aW5hdGlvbiA9IG5ldyBVUkwocmVzb2x2ZWRVcmwsIGJyb3dzZXJPcmlnaW4pOyB9XG4gICAgY2F0Y2ggeyByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoJ0ludmFsaWQgQVBJIGRlc3RpbmF0aW9uIFVSTC4nKSk7IH1cbiAgICBpZiAoIS9eaHR0cHM/OiQvLnRlc3QoZGVzdGluYXRpb24ucHJvdG9jb2wpIHx8IGRlc3RpbmF0aW9uLnVzZXJuYW1lIHx8IGRlc3RpbmF0aW9uLnBhc3N3b3JkKSB7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoJ0FQSSBkZXN0aW5hdGlvbnMgbXVzdCB1c2UgSFRUUChTKSB3aXRob3V0IGVtYmVkZGVkIGNyZWRlbnRpYWxzLicpKTtcbiAgICB9XG4gICAgY29uc3QgdHJ1c3RlZCA9IGRlc3RpbmF0aW9uLm9yaWdpbiA9PT0gYnJvd3Nlck9yaWdpbiB8fCAodGhpcy5yZXBvcnRpbmdDb25maWc/LnRydXN0ZWRBcGlPcmlnaW5zID8/IFtdKS5pbmNsdWRlcyhkZXN0aW5hdGlvbi5vcmlnaW4pO1xuXG4gICAgY29uc3QgbWV0aG9kID0gKG9wdGlvbnMubWV0aG9kIHx8ICdHRVQnKS50b1VwcGVyQ2FzZSgpO1xuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gICAgY29uc3QgYm9keVBheWxvYWQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0geyAuLi4oKG9wdGlvbnMgYXMgYW55KS5ib2R5VGVtcGxhdGUgfHwge30pIH07XG5cbiAgICBjb25zdCBwYXlsb2FkVmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICAgIC4uLmZvcm1WYWx1ZXMsXG4gICAgICAuLi5jdXN0b21NYXBwaW5ncyxcbiAgICB9O1xuXG4gICAgLy8gMi4gU2VwYXJhdGUgcmVtYWluaW5nIHBhcmFtcyBpbnRvIFF1ZXJ5IHBhcmFtcyBhbmQgQm9keSBwYXlsb2FkXG4gICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMocGF5bG9hZFZhbHVlcykpIHtcbiAgICAgIGlmIChwYXRoS2V5cy5oYXMoaykgfHwgdiA9PT0gdW5kZWZpbmVkIHx8IHYgPT09IG51bGwgfHwgdiA9PT0gJycpIGNvbnRpbnVlO1xuXG4gICAgICBpZiAobWV0aG9kID09PSAnR0VUJyB8fCBtZXRob2QgPT09ICdERUxFVEUnKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdiA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBxdWVyeVBhcmFtc1trXSA9IEpTT04uc3RyaW5naWZ5KHYpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHF1ZXJ5UGFyYW1zW2tdID0gU3RyaW5nKHYpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBib2R5UGF5bG9hZFtrXSA9IHY7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCF0cnVzdGVkKSB7XG4gICAgICBjb25zdCBzZWNyZXRzID0gT2JqZWN0LmVudHJpZXMoc2Vzc2lvbkNvbnRleHQpLmZpbHRlcigoW2tleSwgdmFsdWVdKSA9PiAvdG9rZW58c2VjcmV0fHBhc3N3b3JkfGF1dGhvcml6YXRpb258YXBpLj9rZXkvaS50ZXN0KGtleSkgJiYgdmFsdWUgIT0gbnVsbCAmJiBTdHJpbmcodmFsdWUpLmxlbmd0aCA+IDApLm1hcCgoWywgdmFsdWVdKSA9PiBTdHJpbmcodmFsdWUpKTtcbiAgICAgIGNvbnN0IHBheWxvYWRUZXh0ID0gSlNPTi5zdHJpbmdpZnkoW3F1ZXJ5UGFyYW1zLCBib2R5UGF5bG9hZF0pO1xuICAgICAgaWYgKHNlY3JldHMuc29tZShzZWNyZXQgPT4gcmVzb2x2ZWRVcmwuaW5jbHVkZXMoc2VjcmV0KSB8fCByZXNvbHZlZFVybC5pbmNsdWRlcyhlbmNvZGVVUklDb21wb25lbnQoc2VjcmV0KSkgfHwgcGF5bG9hZFRleHQuaW5jbHVkZXMoc2VjcmV0KSkpIHtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKCdTZXNzaW9uIGNyZWRlbnRpYWxzIG1heSBvbmx5IGJlIHNlbnQgdG8gYSB0cnVzdGVkIEFQSSBvcmlnaW4uJykpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIDMuIFJlc29sdmUgSGVhZGVycyB3aXRoIFRva2VuIEludGVycG9sYXRpb24gJiBTdGFuZGFyZCBTZXNzaW9uIENvbnRleHRcbiAgICBjb25zdCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gICAgaWYgKHRydXN0ZWQgJiYgc2Vzc2lvbkNvbnRleHRbJ2NvbXBhbnlJZCddICE9PSB1bmRlZmluZWQgJiYgc2Vzc2lvbkNvbnRleHRbJ2NvbXBhbnlJZCddICE9PSBudWxsKSB7XG4gICAgICBoZWFkZXJzWydYLUNvbXBhbnktSWQnXSA9IFN0cmluZyhzZXNzaW9uQ29udGV4dFsnY29tcGFueUlkJ10pO1xuICAgIH1cbiAgICBpZiAodHJ1c3RlZCAmJiBzZXNzaW9uQ29udGV4dFsnYnJhbmNoSWQnXSAhPT0gdW5kZWZpbmVkICYmIHNlc3Npb25Db250ZXh0WydicmFuY2hJZCddICE9PSBudWxsKSB7XG4gICAgICBoZWFkZXJzWydYLUJyYW5jaC1JZCddID0gU3RyaW5nKHNlc3Npb25Db250ZXh0WydicmFuY2hJZCddKTtcbiAgICB9XG4gICAgaWYgKHRydXN0ZWQgJiYgc2Vzc2lvbkNvbnRleHRbJ3VzZXJJZCddICE9PSB1bmRlZmluZWQgJiYgc2Vzc2lvbkNvbnRleHRbJ3VzZXJJZCddICE9PSBudWxsKSB7XG4gICAgICBoZWFkZXJzWydYLVVzZXItSWQnXSA9IFN0cmluZyhzZXNzaW9uQ29udGV4dFsndXNlcklkJ10pO1xuICAgIH1cbiAgICBpZiAodHJ1c3RlZCAmJiBzZXNzaW9uQ29udGV4dFsndG9rZW4nXSAhPT0gdW5kZWZpbmVkICYmIHNlc3Npb25Db250ZXh0Wyd0b2tlbiddICE9PSBudWxsKSB7XG4gICAgICBoZWFkZXJzWydBdXRob3JpemF0aW9uJ10gPSBgQmVhcmVyICR7c2Vzc2lvbkNvbnRleHRbJ3Rva2VuJ119YDtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5oZWFkZXJzKSB7XG4gICAgICBmb3IgKGNvbnN0IFtoaywgaHZdIG9mIE9iamVjdC5lbnRyaWVzKG9wdGlvbnMuaGVhZGVycykpIHtcbiAgICAgICAgLy8gUmVwb3J0IEpTT04gY2Fubm90IG9wdCBhbiBleHRlcm5hbCBvcmlnaW4gaW50byByZWNlaXZpbmcgc2Vzc2lvbiBjcmVkZW50aWFscy5cbiAgICAgICAgaWYgKCF0cnVzdGVkICYmICghL14oYWNjZXB0fGNvbnRlbnQtdHlwZSkkL2kudGVzdChoaykgfHwgL1xce1xcey8udGVzdChTdHJpbmcoaHYpKSkpIGNvbnRpbnVlO1xuICAgICAgICBpZiAodHlwZW9mIGh2ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIGhlYWRlcnNbaGtdID0gaHYucmVwbGFjZSgvXFx7XFx7c2Vzc2lvblxcLihbYS16QS1aMC05X10rKVxcfVxcfXxcXHtcXHsoW2EtekEtWjAtOV9dKylcXH1cXH0vZywgKF8sIHNrMSwgc2syKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBzazEgfHwgc2syO1xuICAgICAgICAgICAgcmV0dXJuIHNlc3Npb25Db250ZXh0W2tleV0gIT09IHVuZGVmaW5lZCA/IFN0cmluZyhzZXNzaW9uQ29udGV4dFtrZXldKSA6ICcnO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGhlYWRlcnNbaGtdID0gU3RyaW5nKGh2KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIDQuIERldGVybWluZSBSZXF1ZXN0OiBEaXJlY3QgdnMuIEJhY2tlbmQgUHJveHkgR2F0ZXdheVxuICAgIGNvbnN0IHVzZVByb3h5ID0gb3B0aW9ucy51c2VQcm94eSA9PT0gdHJ1ZTtcbiAgICBsZXQgcmVxdWVzdCQ6IE9ic2VydmFibGU8dW5rbm93bj47XG5cbiAgICBpZiAodXNlUHJveHkpIHtcbiAgICAgIGNvbnN0IHByb3h5QmFzZSA9XG4gICAgICAgIHRoaXMuZW5kcG9pbnRzPy5hcGlzRW5kcG9pbnQgfHxcbiAgICAgICAgKHRoaXMucmVwb3J0aW5nQ29uZmlnPy5hcGlCYXNlVXJsID8gYCR7dGhpcy5yZXBvcnRpbmdDb25maWcuYXBpQmFzZVVybH0vYXBpc2AgOiAnL2FwaS9yZXBvcnRpbmcvYXBpcycpO1xuICAgICAgY29uc3QgcHJveHlVcmwgPSBgJHtwcm94eUJhc2UucmVwbGFjZSgvXFwvKyQvLCAnJyl9L3Byb3h5YDtcblxuICAgICAgcmVxdWVzdCQgPSB0aGlzLmh0dHAucG9zdDx1bmtub3duPihwcm94eVVybCwge1xuICAgICAgICBlbmRwb2ludDogcmVzb2x2ZWRVcmwsXG4gICAgICAgIHVybDogcmVzb2x2ZWRVcmwsXG4gICAgICAgIG1ldGhvZCxcbiAgICAgICAgcGFyYW1ldGVyczogcXVlcnlQYXJhbXMsXG4gICAgICAgIHF1ZXJ5UGFyYW1zLFxuICAgICAgICBib2R5OiBPYmplY3Qua2V5cyhib2R5UGF5bG9hZCkubGVuZ3RoID4gMCA/IGJvZHlQYXlsb2FkIDogdW5kZWZpbmVkLFxuICAgICAgICBoZWFkZXJzLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChtZXRob2QgPT09ICdHRVQnKSB7XG4gICAgICAgIHJlcXVlc3QkID0gdGhpcy5odHRwLmdldDx1bmtub3duPihyZXNvbHZlZFVybCwgeyBwYXJhbXM6IHF1ZXJ5UGFyYW1zLCBoZWFkZXJzIH0pO1xuICAgICAgfSBlbHNlIGlmIChtZXRob2QgPT09ICdQT1NUJykge1xuICAgICAgICByZXF1ZXN0JCA9IHRoaXMuaHR0cC5wb3N0PHVua25vd24+KHJlc29sdmVkVXJsLCBib2R5UGF5bG9hZCwgeyBwYXJhbXM6IHF1ZXJ5UGFyYW1zLCBoZWFkZXJzIH0pO1xuICAgICAgfSBlbHNlIGlmIChtZXRob2QgPT09ICdQVVQnKSB7XG4gICAgICAgIHJlcXVlc3QkID0gdGhpcy5odHRwLnB1dDx1bmtub3duPihyZXNvbHZlZFVybCwgYm9keVBheWxvYWQsIHsgcGFyYW1zOiBxdWVyeVBhcmFtcywgaGVhZGVycyB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcXVlc3QkID0gdGhpcy5odHRwLnJlcXVlc3Q8dW5rbm93bj4obWV0aG9kLCByZXNvbHZlZFVybCwge1xuICAgICAgICAgIGJvZHk6IGJvZHlQYXlsb2FkLFxuICAgICAgICAgIHBhcmFtczogcXVlcnlQYXJhbXMsXG4gICAgICAgICAgaGVhZGVycyxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gNS4gRXh0cmFjdCAmIE5vcm1hbGl6ZSBUYXJnZXQgRGF0YSBBcnJheVxuICAgIHJldHVybiByZXF1ZXN0JC5waXBlKFxuICAgICAgdGltZW91dCh7IGZpcnN0OiB0aGlzLnJlcG9ydGluZ0NvbmZpZz8uZXhlY3V0aW9uVGltZW91dE1zID8/IHRoaXMucmVwb3J0aW5nQ29uZmlnPy5sb29rdXBUaW1lb3V0TXMgPz8gMzAwMDAwIH0pLFxuICAgICAgbWFwKChyZXNwb25zZSkgPT4gdGhpcy5leHRyYWN0RGF0YUFycmF5KHJlc3BvbnNlLCBvcHRpb25zLmRhdGFQYXRoKSksXG4gICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgW1JlcG9ydEFwaUV4ZWN1dGlvblNlcnZpY2VdIEFQSSBleGVjdXRpb24gZXJyb3IgWyR7bWV0aG9kfSAke3Jlc29sdmVkVXJsfV06YCwgZXJyKTtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9XG4gICAgICAgICAgZXJyPy5lcnJvcj8ubWVzc2FnZSB8fFxuICAgICAgICAgIGVycj8ubWVzc2FnZSB8fFxuICAgICAgICAgIGBBUEkgcmVxdWVzdCBmYWlsZWQgd2l0aCBzdGF0dXMgJHtlcnI/LnN0YXR1cyB8fCAndW5rbm93bid9YDtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKG1lc3NhZ2UpKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEb3Qtbm90YXRpb24gZXh0cmFjdG9yOiAnZGF0YS5pdGVtcycgLT4gcmVzcG9uc2UuZGF0YS5pdGVtc1xuICAgKi9cbiAgZXh0cmFjdERhdGFBcnJheShyZXNwb25zZTogYW55LCBkYXRhUGF0aD86IHN0cmluZyk6IHVua25vd25bXSB7XG4gICAgaWYgKCFyZXNwb25zZSkgcmV0dXJuIFtdO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3BvbnNlKSkgcmV0dXJuIHJlc3BvbnNlO1xuXG4gICAgaWYgKGRhdGFQYXRoICYmIHR5cGVvZiBkYXRhUGF0aCA9PT0gJ3N0cmluZycgJiYgZGF0YVBhdGgudHJpbSgpICE9PSAnJykge1xuICAgICAgY29uc3QgcGFydHMgPSBkYXRhUGF0aC50cmltKCkuc3BsaXQoJy4nKTtcbiAgICAgIGxldCBjdXJyZW50OiBhbnkgPSByZXNwb25zZTtcbiAgICAgIGZvciAoY29uc3QgcGFydCBvZiBwYXJ0cykge1xuICAgICAgICBpZiAoY3VycmVudCAmJiB0eXBlb2YgY3VycmVudCA9PT0gJ29iamVjdCcgJiYgcGFydCBpbiBjdXJyZW50KSB7XG4gICAgICAgICAgY3VycmVudCA9IGN1cnJlbnRbcGFydF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY3VycmVudCA9IG51bGw7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGN1cnJlbnQpKSByZXR1cm4gY3VycmVudDtcbiAgICB9XG5cbiAgICAvLyBBdXRvLWRldGVjdCBjb21tb24gcmVzcG9uc2UgY29sbGVjdGlvbiBjb250YWluZXJzXG4gICAgZm9yIChjb25zdCBrZXkgb2YgWydkYXRhJywgJ2l0ZW1zJywgJ3Jvd3MnLCAncmVjb3JkcycsICdyZXN1bHRzJywgJ3Jlc3VsdCddKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXNwb25zZVtrZXldKSkgcmV0dXJuIHJlc3BvbnNlW2tleV07XG4gICAgfVxuXG4gICAgLy8gSWYgc2luZ2xlIG9iamVjdCByZXR1cm5lZCwgd3JhcCBpbiBhcnJheSBmb3IgZ3JpZCBkaXNwbGF5XG4gICAgaWYgKHR5cGVvZiByZXNwb25zZSA9PT0gJ29iamVjdCcgJiYgcmVzcG9uc2UgIT09IG51bGwpIHtcbiAgICAgIHJldHVybiBbcmVzcG9uc2VdO1xuICAgIH1cblxuICAgIHJldHVybiBbXTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { DOCUMENT } from '@angular/common';
|
|
2
|
+
import { CSP_NONCE, Injectable, NgZone, inject } from '@angular/core';
|
|
3
|
+
import { Overlay } from '@angular/cdk/overlay';
|
|
4
|
+
import { ScrollDispatcher } from '@angular/cdk/scrolling';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
/** CDK structural styles, embedded so standalone components need no host CSS import.
|
|
7
|
+
* Compatible with CDK's overlay-prebuilt.css; no theme or !important overrides.
|
|
8
|
+
* CDK structural CSS is MIT licensed; see third-party-notices/angular-cdk-LICENSE.txt.
|
|
9
|
+
*/
|
|
10
|
+
const OVERLAY_STYLES = ".cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:var(--rpt-overlay-z-index,1000)}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop{position:absolute;top:0;bottom:0;left:0;right:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:rgba(0,0,0,0);transition:opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}";
|
|
11
|
+
// Library modal appearance must also work without the optional theme asset.
|
|
12
|
+
const DIALOG_STYLES = '.rpt-dialog-backdrop{background-color:rgba(15,23,42,.48);backdrop-filter:blur(3px)}';
|
|
13
|
+
const STYLE_ID = 'rpt-overlay-base-styles';
|
|
14
|
+
export class ReportOverlayService {
|
|
15
|
+
document = inject(DOCUMENT);
|
|
16
|
+
nonce = inject(CSP_NONCE, { optional: true });
|
|
17
|
+
overlay = inject(Overlay);
|
|
18
|
+
scrollDispatcher = inject(ScrollDispatcher);
|
|
19
|
+
zone = inject(NgZone);
|
|
20
|
+
ensureStyles() {
|
|
21
|
+
if (this.document.getElementById(STYLE_ID))
|
|
22
|
+
return;
|
|
23
|
+
const style = this.document.createElement('style');
|
|
24
|
+
style.id = STYLE_ID;
|
|
25
|
+
if (this.nonce)
|
|
26
|
+
style.setAttribute('nonce', this.nonce);
|
|
27
|
+
style.textContent = OVERLAY_STYLES + DIALOG_STYLES;
|
|
28
|
+
(this.document.head ?? this.document.documentElement).appendChild(style);
|
|
29
|
+
}
|
|
30
|
+
/** Retain CDK's scroll strategy; cover native, unregistered host ancestors too. */
|
|
31
|
+
scrollStrategy(origin) {
|
|
32
|
+
this.ensureStyles();
|
|
33
|
+
const delegate = this.overlay.scrollStrategies.reposition({ scrollThrottle: 16 });
|
|
34
|
+
const view = this.document.defaultView;
|
|
35
|
+
let overlayRef;
|
|
36
|
+
let frame;
|
|
37
|
+
let enabled = false;
|
|
38
|
+
const onScroll = (event) => {
|
|
39
|
+
const target = event.target;
|
|
40
|
+
if (!target || target.nodeType !== 1 || !target.contains(origin()))
|
|
41
|
+
return;
|
|
42
|
+
// Registered ancestors already notify the delegate. Menu-list scrolling
|
|
43
|
+
// is excluded because the menu does not contain its trigger.
|
|
44
|
+
if (this.scrollDispatcher.getAncestorScrollContainers(origin()).some(container => container.getElementRef().nativeElement === target))
|
|
45
|
+
return;
|
|
46
|
+
if (frame === undefined && view)
|
|
47
|
+
frame = view.requestAnimationFrame(() => {
|
|
48
|
+
frame = undefined;
|
|
49
|
+
if (enabled && overlayRef?.hasAttached())
|
|
50
|
+
overlayRef.updatePosition();
|
|
51
|
+
});
|
|
52
|
+
};
|
|
53
|
+
return {
|
|
54
|
+
attach: ref => { overlayRef = ref; delegate.attach(ref); },
|
|
55
|
+
enable: () => {
|
|
56
|
+
if (enabled)
|
|
57
|
+
return;
|
|
58
|
+
enabled = true;
|
|
59
|
+
delegate.enable();
|
|
60
|
+
this.zone.runOutsideAngular(() => this.document.addEventListener('scroll', onScroll, true));
|
|
61
|
+
},
|
|
62
|
+
disable: () => {
|
|
63
|
+
enabled = false;
|
|
64
|
+
delegate.disable();
|
|
65
|
+
this.document.removeEventListener('scroll', onScroll, true);
|
|
66
|
+
if (frame !== undefined && view)
|
|
67
|
+
view.cancelAnimationFrame(frame);
|
|
68
|
+
frame = undefined;
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ReportOverlayService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
73
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ReportOverlayService, providedIn: 'root' });
|
|
74
|
+
}
|
|
75
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ReportOverlayService, decorators: [{
|
|
76
|
+
type: Injectable,
|
|
77
|
+
args: [{ providedIn: 'root' }]
|
|
78
|
+
}] });
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LW92ZXJsYXkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J3YXlzLXJlcG9ydC9zcmMvbGliL2NvcmUvc2VydmljZXMvcmVwb3J0LW92ZXJsYXkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQUUsT0FBTyxFQUE4QixNQUFNLHNCQUFzQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUUxRDs7O0dBR0c7QUFDSCxNQUFNLGNBQWMsR0FBRyx1eUNBQXV5QyxDQUFDO0FBQy96Qyw0RUFBNEU7QUFDNUUsTUFBTSxhQUFhLEdBQUcscUZBQXFGLENBQUM7QUFDNUcsTUFBTSxRQUFRLEdBQUcseUJBQXlCLENBQUM7QUFHM0MsTUFBTSxPQUFPLG9CQUFvQjtJQUNkLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUIsS0FBSyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM5QyxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFCLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzVDLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFdkMsWUFBWTtRQUNWLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO1lBQUUsT0FBTztRQUNuRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FB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WUFDcEIsQ0FBQztTQUNGLENBQUM7SUFDSixDQUFDO3dHQWpEVSxvQkFBb0I7NEdBQXBCLG9CQUFvQixjQURQLE1BQU07OzRGQUNuQixvQkFBb0I7a0JBRGhDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ1NQX05PTkNFLCBJbmplY3RhYmxlLCBOZ1pvbmUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheVJlZiwgU2Nyb2xsU3RyYXRlZ3kgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBTY3JvbGxEaXNwYXRjaGVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5cbi8qKiBDREsgc3RydWN0dXJhbCBzdHlsZXMsIGVtYmVkZGVkIHNvIHN0YW5kYWxvbmUgY29tcG9uZW50cyBuZWVkIG5vIGhvc3QgQ1NTIGltcG9ydC5cbiAqIENvbXBhdGlibGUgd2l0aCBDREsncyBvdmVybGF5LXByZWJ1aWx0LmNzczsgbm8gdGhlbWUgb3IgIWltcG9ydGFudCBvdmVycmlkZXMuXG4gKiBDREsgc3RydWN0dXJhbCBDU1MgaXMgTUlUIGxpY2Vuc2VkOyBzZWUgdGhpcmQtcGFydHktbm90aWNlcy9hbmd1bGFyLWNkay1MSUNFTlNFLnR4dC5cbiAqL1xuY29uc3QgT1ZFUkxBWV9TVFlMRVMgPSBcIi5jZGstb3ZlcmxheS1jb250YWluZXIsLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVye3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcntwb3NpdGlvbjpmaXhlZDt6LWluZGV4OnZhcigtLXJwdC1vdmVybGF5LXotaW5kZXgsMTAwMCl9LmNkay1vdmVybGF5LWNvbnRhaW5lcjplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVye2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmV7cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9we3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmd7b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmd7b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcHtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3B7dHJhbnNpdGlvbjp2aXNpYmlsaXR5IDFtcyBsaW5lYXIsb3BhY2l0eSAxbXMgbGluZWFyO3Zpc2liaWxpdHk6aGlkZGVuO29wYWNpdHk6MX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ3tvcGFjaXR5OjA7dmlzaWJpbGl0eTp2aXNpYmxlfS5jZGstb3ZlcmxheS1iYWNrZHJvcC1ub29wLWFuaW1hdGlvbnt0cmFuc2l0aW9uOm5vbmV9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3h7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja3twb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfVwiO1xuLy8gTGlicmFyeSBtb2RhbCBhcHBlYXJhbmNlIG11c3QgYWxzbyB3b3JrIHdpdGhvdXQgdGhlIG9wdGlvbmFsIHRoZW1lIGFzc2V0LlxuY29uc3QgRElBTE9HX1NUWUxFUyA9ICcucnB0LWRpYWxvZy1iYWNrZHJvcHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMTUsMjMsNDIsLjQ4KTtiYWNrZHJvcC1maWx0ZXI6Ymx1cigzcHgpfSc7XG5jb25zdCBTVFlMRV9JRCA9ICdycHQtb3ZlcmxheS1iYXNlLXN0eWxlcyc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgUmVwb3J0T3ZlcmxheVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcbiAgcHJpdmF0ZSByZWFkb25seSBub25jZSA9IGluamVjdChDU1BfTk9OQ0UsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgb3ZlcmxheSA9IGluamVjdChPdmVybGF5KTtcbiAgcHJpdmF0ZSByZWFkb25seSBzY3JvbGxEaXNwYXRjaGVyID0gaW5qZWN0KFNjcm9sbERpc3BhdGNoZXIpO1xuICBwcml2YXRlIHJlYWRvbmx5IHpvbmUgPSBpbmplY3QoTmdab25lKTtcblxuICBlbnN1cmVTdHlsZXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoU1RZTEVfSUQpKSByZXR1cm47XG4gICAgY29uc3Qgc3R5bGUgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgc3R5bGUuaWQgPSBTVFlMRV9JRDtcbiAgICBpZiAodGhpcy5ub25jZSkgc3R5bGUuc2V0QXR0cmlidXRlKCdub25jZScsIHRoaXMubm9uY2UpO1xuICAgIHN0eWxlLnRleHRDb250ZW50ID0gT1ZFUkxBWV9TVFlMRVMgKyBESUFMT0dfU1RZTEVTO1xuICAgICh0aGlzLmRvY3VtZW50LmhlYWQgPz8gdGhpcy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmFwcGVuZENoaWxkKHN0eWxlKTtcbiAgfVxuXG4gIC8qKiBSZXRhaW4gQ0RLJ3Mgc2Nyb2xsIHN0cmF0ZWd5OyBjb3ZlciBuYXRpdmUsIHVucmVnaXN0ZXJlZCBob3N0IGFuY2VzdG9ycyB0b28uICovXG4gIHNjcm9sbFN0cmF0ZWd5KG9yaWdpbjogKCkgPT4gSFRNTEVsZW1lbnQpOiBTY3JvbGxTdHJhdGVneSB7XG4gICAgdGhpcy5lbnN1cmVTdHlsZXMoKTtcbiAgICBjb25zdCBkZWxlZ2F0ZSA9IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oeyBzY3JvbGxUaHJvdHRsZTogMTYgfSk7XG4gICAgY29uc3QgdmlldyA9IHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXc7XG4gICAgbGV0IG92ZXJsYXlSZWY6IE92ZXJsYXlSZWYgfCB1bmRlZmluZWQ7XG4gICAgbGV0IGZyYW1lOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbGV0IGVuYWJsZWQgPSBmYWxzZTtcbiAgICBjb25zdCBvblNjcm9sbCA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCB8IG51bGw7XG4gICAgICBpZiAoIXRhcmdldCB8fCB0YXJnZXQubm9kZVR5cGUgIT09IDEgfHwgIXRhcmdldC5jb250YWlucyhvcmlnaW4oKSkpIHJldHVybjtcbiAgICAgIC8vIFJlZ2lzdGVyZWQgYW5jZXN0b3JzIGFscmVhZHkgbm90aWZ5IHRoZSBkZWxlZ2F0ZS4gTWVudS1saXN0IHNjcm9sbGluZ1xuICAgICAgLy8gaXMgZXhjbHVkZWQgYmVjYXVzZSB0aGUgbWVudSBkb2VzIG5vdCBjb250YWluIGl0cyB0cmlnZ2VyLlxuICAgICAgaWYgKHRoaXMuc2Nyb2xsRGlzcGF0Y2hlci5nZXRBbmNlc3RvclNjcm9sbENvbnRhaW5lcnMob3JpZ2luKCkpLnNvbWUoY29udGFpbmVyID0+IGNvbnRhaW5lci5nZXRFbGVtZW50UmVmKCkubmF0aXZlRWxlbWVudCA9PT0gdGFyZ2V0KSkgcmV0dXJuO1xuICAgICAgaWYgKGZyYW1lID09PSB1bmRlZmluZWQgJiYgdmlldykgZnJhbWUgPSB2aWV3LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIGZyYW1lID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAoZW5hYmxlZCAmJiBvdmVybGF5UmVmPy5oYXNBdHRhY2hlZCgpKSBvdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uKCk7XG4gICAgICB9KTtcbiAgICB9O1xuICAgIHJldHVybiB7XG4gICAgICBhdHRhY2g6IHJlZiA9PiB7IG92ZXJsYXlSZWYgPSByZWY7IGRlbGVnYXRlLmF0dGFjaChyZWYpOyB9LFxuICAgICAgZW5hYmxlOiAoKSA9PiB7XG4gICAgICAgIGlmIChlbmFibGVkKSByZXR1cm47XG4gICAgICAgIGVuYWJsZWQgPSB0cnVlOyBkZWxlZ2F0ZS5lbmFibGUoKTtcbiAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHRoaXMuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25TY3JvbGwsIHRydWUpKTtcbiAgICAgIH0sXG4gICAgICBkaXNhYmxlOiAoKSA9PiB7XG4gICAgICAgIGVuYWJsZWQgPSBmYWxzZTsgZGVsZWdhdGUuZGlzYWJsZSgpO1xuICAgICAgICB0aGlzLmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uU2Nyb2xsLCB0cnVlKTtcbiAgICAgICAgaWYgKGZyYW1lICE9PSB1bmRlZmluZWQgJiYgdmlldykgdmlldy5jYW5jZWxBbmltYXRpb25GcmFtZShmcmFtZSk7XG4gICAgICAgIGZyYW1lID0gdW5kZWZpbmVkO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG4iXX0=
|