@mecanizou/telemetry-hub 1.3.1 → 1.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/dist/core/__tests__/logger-types.test.js +6 -7
- package/dist/core/__tests__/logger.test.js +12 -17
- package/dist/core/__tests__/tracer.test.js +8 -12
- package/dist/core/environment.d.ts +1 -0
- package/dist/core/environment.js +10 -0
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.js +4 -2
- package/dist/core/logger-types.d.ts +8 -3
- package/dist/core/logger-types.js +1 -1
- package/dist/core/logger.d.ts +1 -1
- package/dist/core/logger.js +20 -17
- package/dist/core/tracer-types.d.ts +10 -3
- package/dist/core/tracer-types.js +1 -1
- package/dist/core/tracer.js +11 -7
- package/dist/sst/middy/middleware.d.ts +4 -0
- package/dist/sst/middy/middleware.js +80 -12
- package/dist/tsed/log-telemetry.js +3 -4
- package/dist/tsed/service.js +2 -20
- package/package.json +1 -1
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import middy from '@middy/core';
|
|
2
2
|
interface MiddyMiddlewareOptions {
|
|
3
3
|
}
|
|
4
|
+
export declare function extractLoggedUser(event: any): {
|
|
5
|
+
email?: string;
|
|
6
|
+
uid?: string;
|
|
7
|
+
} | undefined;
|
|
4
8
|
export declare const middyTelemetryMiddleware: (options?: MiddyMiddlewareOptions) => middy.MiddlewareObj;
|
|
5
9
|
export {};
|
|
@@ -10,33 +10,94 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.middyTelemetryMiddleware = void 0;
|
|
13
|
+
exports.extractLoggedUser = extractLoggedUser;
|
|
13
14
|
const api_1 = require("@opentelemetry/api");
|
|
14
15
|
const telemetry_1 = require("../telemetry");
|
|
15
16
|
const perf_hooks_1 = require("perf_hooks");
|
|
17
|
+
const core_1 = require("../../core");
|
|
18
|
+
function extractHttpAttributes(event) {
|
|
19
|
+
var _a, _b, _c, _d;
|
|
20
|
+
if (event.requestContext) {
|
|
21
|
+
return {
|
|
22
|
+
method: ((_a = event.requestContext.http) === null || _a === void 0 ? void 0 : _a.method) || 'unknown',
|
|
23
|
+
url: event.requestContext.domainName && ((_b = event.requestContext.http) === null || _b === void 0 ? void 0 : _b.path),
|
|
24
|
+
agent: ((_c = event.headers) === null || _c === void 0 ? void 0 : _c['user-agent']) || 'unknown',
|
|
25
|
+
pathParameters: event.pathParameters || {},
|
|
26
|
+
queryStringParameters: event.queryStringParameters || {},
|
|
27
|
+
body: event.body || {},
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
method: event.httpMethod || 'unknown',
|
|
32
|
+
url: event.path || 'unknown',
|
|
33
|
+
agent: ((_d = event.headers) === null || _d === void 0 ? void 0 : _d['User-Agent']) || 'unknown',
|
|
34
|
+
pathParameters: event.pathParameters || {},
|
|
35
|
+
queryStringParameters: event.queryStringParameters || {},
|
|
36
|
+
body: event.body || {},
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function extractLoggedUser(event) {
|
|
40
|
+
var _a, _b, _c, _d, _e, _f;
|
|
41
|
+
let loggedUser = (_c = (_b = (_a = event === null || event === void 0 ? void 0 : event.requestContext) === null || _a === void 0 ? void 0 : _a.authorizer) === null || _b === void 0 ? void 0 : _b.lambda) === null || _c === void 0 ? void 0 : _c.loggerUser;
|
|
42
|
+
if (loggedUser) {
|
|
43
|
+
loggedUser =
|
|
44
|
+
typeof loggedUser === 'string' ? JSON.parse(loggedUser) : loggedUser;
|
|
45
|
+
if ((loggedUser === null || loggedUser === void 0 ? void 0 : loggedUser.user) &&
|
|
46
|
+
((_d = loggedUser === null || loggedUser === void 0 ? void 0 : loggedUser.user) === null || _d === void 0 ? void 0 : _d.account_user) &&
|
|
47
|
+
((_f = (_e = loggedUser === null || loggedUser === void 0 ? void 0 : loggedUser.user) === null || _e === void 0 ? void 0 : _e.account_user) === null || _f === void 0 ? void 0 : _f.account)) {
|
|
48
|
+
return {
|
|
49
|
+
email: loggedUser.user.email,
|
|
50
|
+
uid: loggedUser.user.account_user.account.uid,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return undefined;
|
|
55
|
+
}
|
|
56
|
+
function extractDefaultAttributes(request) {
|
|
57
|
+
var _a, _b;
|
|
58
|
+
const { context: lambdaContext } = request;
|
|
59
|
+
const functionName = lambdaContext.functionName;
|
|
60
|
+
const invocationId = lambdaContext.awsRequestId;
|
|
61
|
+
const serviceName = process.env.SERVICE_NAME || 'sst-service';
|
|
62
|
+
const event = request.event;
|
|
63
|
+
const queryStringParameters = (event === null || event === void 0 ? void 0 : event.queryStringParameters) || {};
|
|
64
|
+
const http = extractHttpAttributes(event);
|
|
65
|
+
const origin = queryStringParameters.origin || 'unknown';
|
|
66
|
+
const routeKey = (event === null || event === void 0 ? void 0 : event.routeKey) || ((_a = event === null || event === void 0 ? void 0 : event.requestContext) === null || _a === void 0 ? void 0 : _a.routeKey) || 'unknown';
|
|
67
|
+
const requestId = (event === null || event === void 0 ? void 0 : event.requestId) || ((_b = event === null || event === void 0 ? void 0 : event.requestContext) === null || _b === void 0 ? void 0 : _b.requestId) || 'unknown';
|
|
68
|
+
const loggedUser = extractLoggedUser(event);
|
|
69
|
+
const stage = (0, core_1.getEnvironmentStage)();
|
|
70
|
+
return {
|
|
71
|
+
functionName,
|
|
72
|
+
invocationId,
|
|
73
|
+
serviceName,
|
|
74
|
+
http,
|
|
75
|
+
origin,
|
|
76
|
+
routeKey,
|
|
77
|
+
requestId,
|
|
78
|
+
loggedUser,
|
|
79
|
+
stage,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
16
82
|
const middyTelemetryMiddleware = (options) => ({
|
|
17
83
|
before: (request) => __awaiter(void 0, void 0, void 0, function* () {
|
|
18
84
|
try {
|
|
19
85
|
const startTime = perf_hooks_1.performance.now();
|
|
20
|
-
const {
|
|
21
|
-
const functionName = lambdaContext.functionName;
|
|
22
|
-
const invocationId = lambdaContext.awsRequestId;
|
|
23
|
-
const serviceName = process.env.SERVICE_NAME || 'sst-service';
|
|
24
|
-
const event = request.event;
|
|
25
|
-
const queryStringParameters = (event === null || event === void 0 ? void 0 : event.queryStringParameters) || {};
|
|
26
|
-
const origin = queryStringParameters.origin || 'unknown';
|
|
27
|
-
let stage = process.env.STAGE || 'development';
|
|
28
|
-
if (stage === 'prod')
|
|
29
|
-
stage = 'production';
|
|
86
|
+
const { functionName, invocationId, serviceName, http, origin, routeKey, requestId, loggedUser, stage, } = extractDefaultAttributes(request);
|
|
30
87
|
const standardTracer = (0, telemetry_1.getStandardTracer)();
|
|
31
88
|
const spanResult = standardTracer.startSpan({
|
|
32
89
|
spanName: functionName,
|
|
33
90
|
serviceName,
|
|
34
91
|
environment: stage,
|
|
92
|
+
http,
|
|
35
93
|
execution: {
|
|
36
94
|
functionName,
|
|
37
95
|
invocationId,
|
|
38
96
|
awsRequestId: invocationId,
|
|
39
97
|
origin,
|
|
98
|
+
routeKey,
|
|
99
|
+
requestId,
|
|
100
|
+
loggedUser,
|
|
40
101
|
},
|
|
41
102
|
});
|
|
42
103
|
const meter = api_1.metrics.getMeter(origin);
|
|
@@ -61,6 +122,9 @@ const middyTelemetryMiddleware = (options) => ({
|
|
|
61
122
|
serviceName,
|
|
62
123
|
environment: stage,
|
|
63
124
|
origin,
|
|
125
|
+
routeKey,
|
|
126
|
+
requestId,
|
|
127
|
+
loggedUser,
|
|
64
128
|
};
|
|
65
129
|
}
|
|
66
130
|
catch (error) {
|
|
@@ -68,7 +132,7 @@ const middyTelemetryMiddleware = (options) => ({
|
|
|
68
132
|
}
|
|
69
133
|
}),
|
|
70
134
|
after: (request) => __awaiter(void 0, void 0, void 0, function* () {
|
|
71
|
-
var _a, _b, _c, _d;
|
|
135
|
+
var _a, _b, _c, _d, _e, _f;
|
|
72
136
|
try {
|
|
73
137
|
const otelData = request.context.otel;
|
|
74
138
|
if (!otelData)
|
|
@@ -76,6 +140,7 @@ const middyTelemetryMiddleware = (options) => ({
|
|
|
76
140
|
const event = request.event;
|
|
77
141
|
const queryStringParameters = (event === null || event === void 0 ? void 0 : event.queryStringParameters) || {};
|
|
78
142
|
const origin = queryStringParameters.origin || 'unknown';
|
|
143
|
+
const loggedUser = extractLoggedUser(event);
|
|
79
144
|
const { spanResult, successCounter, executionTimeHistogram, startTime, serviceName, environment, } = otelData;
|
|
80
145
|
spanResult.setSuccess(true);
|
|
81
146
|
successCounter.add(1, {
|
|
@@ -100,6 +165,9 @@ const middyTelemetryMiddleware = (options) => ({
|
|
|
100
165
|
functionName: (_c = spanResult.span.attributes) === null || _c === void 0 ? void 0 : _c['function.name'],
|
|
101
166
|
invocationId: (_d = spanResult.span.attributes) === null || _d === void 0 ? void 0 : _d['function.invocation_id'],
|
|
102
167
|
origin,
|
|
168
|
+
routeKey: (_e = spanResult.span.attributes) === null || _e === void 0 ? void 0 : _e['routeKey'],
|
|
169
|
+
requestId: (_f = spanResult.span.attributes) === null || _f === void 0 ? void 0 : _f['request.id'],
|
|
170
|
+
loggedUser,
|
|
103
171
|
},
|
|
104
172
|
performance: {
|
|
105
173
|
durationMs,
|
|
@@ -167,4 +235,4 @@ const middyTelemetryMiddleware = (options) => ({
|
|
|
167
235
|
}),
|
|
168
236
|
});
|
|
169
237
|
exports.middyTelemetryMiddleware = middyTelemetryMiddleware;
|
|
170
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zc3QvbWlkZHkvbWlkZGxld2FyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFDQSw0Q0FBd0Q7QUFDeEQsNENBQWdGO0FBQ2hGLDJDQUF5QztBQUlsQyxNQUFNLHdCQUF3QixHQUFHLENBQ3RDLE9BQWdDLEVBQ1gsRUFBRSxDQUFDLENBQUM7SUFDekIsTUFBTSxFQUFFLENBQU8sT0FBTyxFQUFFLEVBQUU7UUFDeEIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxTQUFTLEdBQUcsd0JBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUVwQyxNQUFNLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxHQUFHLE9BQU8sQ0FBQztZQUMzQyxNQUFNLFlBQVksR0FBRyxhQUFhLENBQUMsWUFBWSxDQUFDO1lBQ2hELE1BQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQyxZQUFZLENBQUM7WUFDaEQsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLElBQUksYUFBYSxDQUFDO1lBQzlELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFZLENBQUM7WUFDbkMsTUFBTSxxQkFBcUIsR0FBRyxDQUFBLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxxQkFBcUIsS0FBSSxFQUFFLENBQUM7WUFDakUsTUFBTSxNQUFNLEdBQUcscUJBQXFCLENBQUMsTUFBTSxJQUFJLFNBQVMsQ0FBQztZQUN6RCxJQUFJLEtBQUssR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxhQUFhLENBQUM7WUFDL0MsSUFBSSxLQUFLLEtBQUssTUFBTTtnQkFBRSxLQUFLLEdBQUcsWUFBWSxDQUFDO1lBRzNDLE1BQU0sY0FBYyxHQUFHLElBQUEsNkJBQWlCLEdBQUUsQ0FBQztZQUMzQyxNQUFNLFVBQVUsR0FBRyxjQUFjLENBQUMsU0FBUyxDQUFDO2dCQUMx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WCxVQUFVO29CQUNWLE9BQU8sRUFBRSxLQUFLO2lCQUNmO2dCQUNELE9BQU8sRUFBRTtvQkFDUCxTQUFTLEVBQUUsTUFBQSxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsV0FBVywwQ0FBRSxJQUFJO2lCQUNwQzthQUNGLENBQUMsQ0FBQztZQUdILFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUEsc0JBQVUsR0FBRSxDQUFDO1FBQ3JCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxpREFBaUQsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMxRSxDQUFDO0lBQ0gsQ0FBQyxDQUFBO0NBQ0YsQ0FBQyxDQUFDO0FBL01VLFFBQUEsd0JBQXdCLDRCQStNbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbWlkZHkgZnJvbSAnQG1pZGR5L2NvcmUnO1xuaW1wb3J0IHsgbWV0cmljcywgVmFsdWVUeXBlIH0gZnJvbSAnQG9wZW50ZWxlbWV0cnkvYXBpJztcbmltcG9ydCB7IGZvcmNlRmx1c2gsIGdldFN0YW5kYXJkTG9nZ2VyLCBnZXRTdGFuZGFyZFRyYWNlciB9IGZyb20gJy4uL3RlbGVtZXRyeSc7XG5pbXBvcnQgeyBwZXJmb3JtYW5jZSB9IGZyb20gJ3BlcmZfaG9va3MnO1xuXG5pbnRlcmZhY2UgTWlkZHlNaWRkbGV3YXJlT3B0aW9ucyB7fVxuXG5leHBvcnQgY29uc3QgbWlkZHlUZWxlbWV0cnlNaWRkbGV3YXJlID0gKFxuICBvcHRpb25zPzogTWlkZHlNaWRkbGV3YXJlT3B0aW9uc1xuKTogbWlkZHkuTWlkZGxld2FyZU9iaiA9PiAoe1xuICBiZWZvcmU6IGFzeW5jIChyZXF1ZXN0KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0YXJ0VGltZSA9IHBlcmZvcm1hbmNlLm5vdygpO1xuXG4gICAgICBjb25zdCB7IGNvbnRleHQ6IGxhbWJkYUNvbnRleHQgfSA9IHJlcXVlc3Q7XG4gICAgICBjb25zdCBmdW5jdGlvbk5hbWUgPSBsYW1iZGFDb250ZXh0LmZ1bmN0aW9uTmFtZTtcbiAgICAgIGNvbnN0IGludm9jYXRpb25JZCA9IGxhbWJkYUNvbnRleHQuYXdzUmVxdWVzdElkO1xuICAgICAgY29uc3Qgc2VydmljZU5hbWUgPSBwcm9jZXNzLmVudi5TRVJWSUNFX05BTUUgfHwgJ3NzdC1zZXJ2aWNlJztcbiAgICAgIGNvbnN0IGV2ZW50ID0gcmVxdWVzdC5ldmVudCBhcyBhbnk7XG4gICAgICBjb25zdCBxdWVyeVN0cmluZ1BhcmFtZXRlcnMgPSBldmVudD8ucXVlcnlTdHJpbmdQYXJhbWV0ZXJzIHx8IHt9O1xuICAgICAgY29uc3Qgb3JpZ2luID0gcXVlcnlTdHJpbmdQYXJhbWV0ZXJzLm9yaWdpbiB8fCAndW5rbm93bic7XG4gICAgICBsZXQgc3RhZ2UgPSBwcm9jZXNzLmVudi5TVEFHRSB8fCAnZGV2ZWxvcG1lbnQnO1xuICAgICAgaWYgKHN0YWdlID09PSAncHJvZCcpIHN0YWdlID0gJ3Byb2R1Y3Rpb24nO1xuXG4gICAgICAvLyBVc2FyIFN0YW5kYXJkVHJhY2VyIHBhcmEgY3JpYXIgc3BhbiBjb20gYXRyaWJ1dG9zIHBhZHJvbml6YWRvc1xuICAgICAgY29uc3Qgc3RhbmRhcmRUcmFjZXIgPSBnZXRTdGFuZGFyZFRyYWNlcigpO1xuICAgICAgY29uc3Qgc3BhblJlc3VsdCA9IHN0YW5kYXJkVHJhY2VyLnN0YXJ0U3Bhbih7XG4gICAgICAgIHNwYW5OYW1lOiBmdW5jdGlvbk5hbWUsXG4gICAgICAgIHNlcnZpY2VOYW1lLFxuICAgICAgICBlbnZpcm9ubWVudDogc3RhZ2UsXG4gICAgICAgIGV4ZWN1dGlvbjoge1xuICAgICAgICAgIGZ1bmN0aW9uTmFtZSxcbiAgICAgICAgICBpbnZvY2F0aW9uSWQsXG4gICAgICAgICAgYXdzUmVxdWVzdElkOiBpbnZvY2F0aW9uSWQsXG4gICAgICAgICAgb3JpZ2luLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IG1ldGVyID0gbWV0cmljcy5nZXRNZXRlcihvcmlnaW4pO1xuXG4gICAgICBjb25zdCBleGVjdXRpb25UaW1lSGlzdG9ncmFtID0gbWV0ZXIuY3JlYXRlSGlzdG9ncmFtKFxuICAgICAgICAnbGFtYmRhX2V4ZWN1dGlvbl9kdXJhdGlvbicsXG4gICAgICAgIHtcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ1RlbXBvIHRvdGFsIGRlIGV4ZWN1w6fDo28gZG8gTGFtYmRhIGVtIG1zJyxcbiAgICAgICAgICB1bml0OiAnbXMnLFxuICAgICAgICAgIHZhbHVlVHlwZTogVmFsdWVUeXBlLkRPVUJMRSxcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIGNvbnN0IHN1Y2Nlc3NDb3VudGVyID0gbWV0ZXIuY3JlYXRlQ291bnRlcigndG90YWxfc3VjY2Vzc2Z1bF9wdXJjaGFzZXMnLCB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVG90YWwgZGUgY29tcHJhcyBiZW0tc3VjZWRpZGFzJyxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgZmFpbHVyZUNvdW50ZXIgPSBtZXRlci5jcmVhdGVDb3VudGVyKCd0b3RhbF9mYWlsZWRfcHVyY2hhc2VzJywge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ1RvdGFsIGRlIGNvbXByYXMgY29tIGZhbGhhJyxcbiAgICAgIH0pO1xuXG4gICAgICAocmVxdWVzdC5jb250ZXh0IGFzIGFueSkub3RlbCA9IHtcbiAgICAgICAgc3BhblJlc3VsdCxcbiAgICAgICAgbWV0ZXIsXG4gICAgICAgIGV4ZWN1dGlvblRpbWVIaXN0b2dyYW0sXG4gICAgICAgIHN1Y2Nlc3NDb3VudGVyLFxuICAgICAgICBmYWlsdXJlQ291bnRlcixcbiAgICAgICAgc3RhcnRUaW1lLFxuICAgICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgICAgZW52aXJvbm1lbnQ6IHN0YWdlLFxuICAgICAgICBvcmlnaW4sXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBpbiBtaWRkeVRlbGVtZXRyeU1pZGRsZXdhcmUgYmVmb3JlIGhvb2s6JywgZXJyb3IpO1xuICAgIH1cbiAgfSxcblxuICBhZnRlcjogYXN5bmMgKHJlcXVlc3QpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgb3RlbERhdGEgPSAocmVxdWVzdC5jb250ZXh0IGFzIGFueSkub3RlbDtcbiAgICAgIGlmICghb3RlbERhdGEpIHJldHVybjtcbiAgICAgIGNvbnN0IGV2ZW50ID0gcmVxdWVzdC5ldmVudCBhcyBhbnk7XG5cbiAgICAgIGNvbnN0IHF1ZXJ5U3RyaW5nUGFyYW1ldGVycyA9IGV2ZW50Py5xdWVyeVN0cmluZ1BhcmFtZXRlcnMgfHwge307XG4gICAgICBjb25zdCBvcmlnaW4gPSBxdWVyeVN0cmluZ1BhcmFtZXRlcnMub3JpZ2luIHx8ICd1bmtub3duJztcblxuICAgICAgY29uc3Qge1xuICAgICAgICBzcGFuUmVzdWx0LFxuICAgICAgICBzdWNjZXNzQ291bnRlcixcbiAgICAgICAgZXhlY3V0aW9uVGltZUhpc3RvZ3JhbSxcbiAgICAgICAgc3RhcnRUaW1lLFxuICAgICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgICAgZW52aXJvbm1lbnQsXG4gICAgICB9ID0gb3RlbERhdGE7XG5cbiAgICAgIC8vIE1hcmNhciBzcGFuIGNvbW8gc3VjZXNzbyB1c2FuZG8gU3RhbmRhcmRUcmFjZXJcbiAgICAgIHNwYW5SZXN1bHQuc2V0U3VjY2Vzcyh0cnVlKTtcblxuICAgICAgLy8gTcOpdHJpY2FzXG4gICAgICBzdWNjZXNzQ291bnRlci5hZGQoMSwge1xuICAgICAgICBvcmlnaW4sXG4gICAgICAgICdmdW5jdGlvbi5uYW1lJzpcbiAgICAgICAgICBzcGFuUmVzdWx0LnNwYW4uYXR0cmlidXRlcz8uWydmdW5jdGlvbi5uYW1lJ10gfHwgJ3Vua25vd24nLFxuICAgICAgICAnc2VydmljZS5uYW1lJzogc2VydmljZU5hbWUsXG4gICAgICAgICdkZXBsb3ltZW50LmVudmlyb25tZW50Lm5hbWUnOiBlbnZpcm9ubWVudCxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBkdXJhdGlvbk1zID0gcGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydFRpbWU7XG5cbiAgICAgIGV4ZWN1dGlvblRpbWVIaXN0b2dyYW0ucmVjb3JkKGR1cmF0aW9uTXMsIHtcbiAgICAgICAgb3JpZ2luLFxuICAgICAgICBzdGF0dXM6ICdzdWNjZXNzJyxcbiAgICAgICAgJ2Z1bmN0aW9uLm5hbWUnOlxuICAgICAgICAgIHNwYW5SZXN1bHQuc3Bhbi5hdHRyaWJ1dGVzPy5bJ2Z1bmN0aW9uLm5hbWUnXSB8fCAndW5rbm93bicsXG4gICAgICAgICdzZXJ2aWNlLm5hbWUnOiBzZXJ2aWNlTmFtZSxcbiAgICAgICAgJ2RlcGxveW1lbnQuZW52aXJvbm1lbnQubmFtZSc6IGVudmlyb25tZW50LFxuICAgICAgfSk7XG5cbiAgICAgIC8vIExvZyBlc3RydXR1cmFkbyBkZSBzdWNlc3NvXG4gICAgICBjb25zdCBzdGFuZGFyZExvZ2dlciA9IGdldFN0YW5kYXJkTG9nZ2VyKHNwYW5SZXN1bHQuc3Bhbi5hdHRyaWJ1dGVzKTtcblxuICAgICAgYXdhaXQgc3RhbmRhcmRMb2dnZXIubG9nSW5mbyh7XG4gICAgICAgIG1lc3NhZ2U6ICdSZXF1ZXN0IGNvbXBsZXRlZCBzdWNjZXNzZnVsbHknLFxuICAgICAgICBlbnZpcm9ubWVudCxcbiAgICAgICAgZXhlY3V0aW9uOiB7XG4gICAgICAgICAgZnVuY3Rpb25OYW1lOiBzcGFuUmVzdWx0LnNwYW4uYXR0cmlidXRlcz8uWydmdW5jdGlvbi5uYW1lJ10gYXMgc3RyaW5nLFxuICAgICAgICAgIGludm9jYXRpb25JZDogc3BhblJlc3VsdC5zcGFuLmF0dHJpYnV0ZXM/LltcbiAgICAgICAgICAgICdmdW5jdGlvbi5pbnZvY2F0aW9uX2lkJ1xuICAgICAgICAgIF0gYXMgc3RyaW5nLFxuICAgICAgICAgIG9yaWdpbixcbiAgICAgICAgfSxcbiAgICAgICAgcGVyZm9ybWFuY2U6IHtcbiAgICAgICAgICBkdXJhdGlvbk1zLFxuICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgLy8gRmluYWxpemFyIHNwYW5cbiAgICAgIHNwYW5SZXN1bHQuZW5kKCk7XG4gICAgICBhd2FpdCBmb3JjZUZsdXNoKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluIG1pZGR5VGVsZW1ldHJ5TWlkZGxld2FyZSBhZnRlciBob29rOicsIGVycm9yKTtcbiAgICB9XG4gIH0sXG5cbiAgb25FcnJvcjogYXN5bmMgKHJlcXVlc3QpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgb3RlbERhdGEgPSAocmVxdWVzdC5jb250ZXh0IGFzIGFueSkub3RlbDtcbiAgICAgIGlmICghb3RlbERhdGEpIHJldHVybjtcblxuICAgICAgY29uc3Qge1xuICAgICAgICBzcGFuUmVzdWx0LFxuICAgICAgICBmYWlsdXJlQ291bnRlcixcbiAgICAgICAgZXhlY3V0aW9uVGltZUhpc3RvZ3JhbSxcbiAgICAgICAgc3RhcnRUaW1lLFxuICAgICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgICAgZW52aXJvbm1lbnQsXG4gICAgICAgIG9yaWdpbixcbiAgICAgIH0gPSBvdGVsRGF0YTtcbiAgICAgIGNvbnN0IGVycm9yID0gcmVxdWVzdC5lcnJvcjtcblxuICAgICAgLy8gTWFyY2FyIHNwYW4gY29tbyBlcnJvIHVzYW5kbyBTdGFuZGFyZFRyYWNlclxuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHNwYW5SZXN1bHQuc2V0RXJyb3IoZXJyb3IpO1xuICAgICAgfVxuXG4gICAgICAvLyBNw6l0cmljYXNcbiAgICAgIGZhaWx1cmVDb3VudGVyLmFkZCgxLCB7XG4gICAgICAgIG9yaWdpbixcbiAgICAgICAgZXJyb3JfdHlwZTogZXJyb3I/LmNvbnN0cnVjdG9yPy5uYW1lIHx8ICdVbmtub3duRXJyb3InLFxuICAgICAgICAnZnVuY3Rpb24ubmFtZSc6XG4gICAgICAgICAgc3BhblJlc3VsdC5zcGFuLmF0dHJpYnV0ZXM/LlsnZnVuY3Rpb24ubmFtZSddIHx8ICd1bmtub3duJyxcbiAgICAgICAgJ3NlcnZpY2UubmFtZSc6IHNlcnZpY2VOYW1lLFxuICAgICAgICAnZGVwbG95bWVudC5lbnZpcm9ubWVudC5uYW1lJzogZW52aXJvbm1lbnQsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgZHVyYXRpb25NcyA9IHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnRUaW1lO1xuXG4gICAgICBleGVjdXRpb25UaW1lSGlzdG9ncmFtLnJlY29yZChkdXJhdGlvbk1zLCB7XG4gICAgICAgIG9yaWdpbixcbiAgICAgICAgc3RhdHVzOiAnZXJyb3InLFxuICAgICAgICAnZnVuY3Rpb24ubmFtZSc6XG4gICAgICAgICAgc3BhblJlc3VsdC5zcGFuLmF0dHJpYnV0ZXM/LlsnZnVuY3Rpb24ubmFtZSddIHx8ICd1bmtub3duJyxcbiAgICAgICAgJ3NlcnZpY2UubmFtZSc6IHNlcnZpY2VOYW1lLFxuICAgICAgICAnZGVwbG95bWVudC5lbnZpcm9ubWVudC5uYW1lJzogZW52aXJvbm1lbnQsXG4gICAgICB9KTtcblxuICAgICAgLy8gTG9nIGVzdHJ1dHVyYWRvIGRlIGVycm9cbiAgICAgIGNvbnN0IHN0YW5kYXJkTG9nZ2VyID0gZ2V0U3RhbmRhcmRMb2dnZXIoc3BhblJlc3VsdC5zcGFuLmF0dHJpYnV0ZXMpO1xuXG4gICAgICBhd2FpdCBzdGFuZGFyZExvZ2dlci5sb2dFcnJvcih7XG4gICAgICAgIG1lc3NhZ2U6IGVycm9yPy5tZXNzYWdlIHx8ICdVbmtub3duIGVycm9yIG9jY3VycmVkJyxcbiAgICAgICAgZXJyb3I6IGVycm9yIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgZW52aXJvbm1lbnQsXG4gICAgICAgIGV4ZWN1dGlvbjoge1xuICAgICAgICAgIGZ1bmN0aW9uTmFtZTogc3BhblJlc3VsdC5zcGFuLmF0dHJpYnV0ZXM/LlsnZnVuY3Rpb24ubmFtZSddIGFzIHN0cmluZyxcbiAgICAgICAgICBpbnZvY2F0aW9uSWQ6IHNwYW5SZXN1bHQuc3Bhbi5hdHRyaWJ1dGVzPy5bXG4gICAgICAgICAgICAnZnVuY3Rpb24uaW52b2NhdGlvbl9pZCdcbiAgICAgICAgICBdIGFzIHN0cmluZyxcbiAgICAgICAgICBhd3NSZXF1ZXN0SWQ6IHNwYW5SZXN1bHQuc3Bhbi5hdHRyaWJ1dGVzPy5bXG4gICAgICAgICAgICAnZnVuY3Rpb24uaW52b2NhdGlvbl9pZCdcbiAgICAgICAgICBdIGFzIHN0cmluZyxcbiAgICAgICAgICBvcmlnaW4sXG4gICAgICAgIH0sXG4gICAgICAgIHBlcmZvcm1hbmNlOiB7XG4gICAgICAgICAgZHVyYXRpb25NcyxcbiAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgIGVycm9yVHlwZTogZXJyb3I/LmNvbnN0cnVjdG9yPy5uYW1lLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIC8vIEZpbmFsaXphciBzcGFuXG4gICAgICBzcGFuUmVzdWx0LmVuZCgpO1xuICAgICAgYXdhaXQgZm9yY2VGbHVzaCgpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBpbiBtaWRkeVRlbGVtZXRyeU1pZGRsZXdhcmUgb25FcnJvciBob29rOicsIGVycm9yKTtcbiAgICB9XG4gIH0sXG59KTtcbiJdfQ==
|
|
238
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zc3QvbWlkZHkvbWlkZGxld2FyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUE4QkEsOENBcUJDO0FBbERELDRDQUF3RDtBQUN4RCw0Q0FBZ0Y7QUFDaEYsMkNBQXlDO0FBQ3pDLHFDQUFpRDtBQUlqRCxTQUFTLHFCQUFxQixDQUFDLEtBQVU7O0lBQ3ZDLElBQUksS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3pCLE9BQU87WUFDTCxNQUFNLEVBQUUsQ0FBQSxNQUFBLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSwwQ0FBRSxNQUFNLEtBQUksU0FBUztZQUN0RCxHQUFHLEVBQUUsS0FBSyxDQUFDLGNBQWMsQ0FBQyxVQUFVLEtBQUksTUFBQSxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksMENBQUUsSUFBSSxDQUFBO1lBQ3ZFLEtBQUssRUFBRSxDQUFBLE1BQUEsS0FBSyxDQUFDLE9BQU8sMENBQUcsWUFBWSxDQUFDLEtBQUksU0FBUztZQUNqRCxjQUFjLEVBQUUsS0FBSyxDQUFDLGNBQWMsSUFBSSxFQUFFO1lBQzFDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxxQkFBcUIsSUFBSSxFQUFFO1lBQ3hELElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUU7U0FDdkIsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPO1FBQ0wsTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVLElBQUksU0FBUztRQUNyQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxTQUFTO1FBQzVCLEtBQUssRUFBRSxDQUFBLE1BQUEsS0FBSyxDQUFDLE9BQU8sMENBQUcsWUFBWSxDQUFDLEtBQUksU0FBUztRQUNqRCxjQUFjLEVBQUUsS0FBSyxDQUFDLGNBQWMsSUFBSSxFQUFFO1FBQzFDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxxQkFBcUIsSUFBSSxFQUFFO1FBQ3hELElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUU7S0FDdkIsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFnQixpQkFBaUIsQ0FDL0IsS0FBVTs7SUFFVixJQUFJLFVBQVUsR0FBRyxNQUFBLE1BQUEsTUFBQSxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsY0FBYywwQ0FBRSxVQUFVLDBDQUFFLE1BQU0sMENBQUUsVUFBVSxDQUFDO0lBRXZFLElBQUksVUFBVSxFQUFFLENBQUM7UUFDZixVQUFVO1lBQ1IsT0FBTyxVQUFVLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7UUFDdkUsSUFDRSxDQUFBLFVBQVUsYUFBVixVQUFVLHVCQUFWLFVBQVUsQ0FBRSxJQUFJO2FBQ2hCLE1BQUEsVUFBVSxhQUFWLFVBQVUsdUJBQVYsVUFBVSxDQUFFLElBQUksMENBQUUsWUFBWSxDQUFBO2FBQzlCLE1BQUEsTUFBQSxVQUFVLGFBQVYsVUFBVSx1QkFBVixVQUFVLENBQUUsSUFBSSwwQ0FBRSxZQUFZLDBDQUFFLE9BQU8sQ0FBQSxFQUN2QyxDQUFDO1lBQ0QsT0FBTztnQkFDTCxLQUFLLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLO2dCQUM1QixHQUFHLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUc7YUFDOUMsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVELFNBQVMsd0JBQXdCLENBQUMsT0FBWTs7SUFDNUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFDM0MsTUFBTSxZQUFZLEdBQUcsYUFBYSxDQUFDLFlBQVksQ0FBQztJQUNoRCxNQUFNLFlBQVksR0FBRyxhQUFhLENBQUMsWUFBWSxDQUFDO0lBQ2hELE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxJQUFJLGFBQWEsQ0FBQztJQUM5RCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBWSxDQUFDO0lBQ25DLE1BQU0scUJBQXFCLEdBQUcsQ0FBQSxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUscUJBQXFCLEtBQUksRUFBRSxDQUFDO0lBQ2pFLE1BQU0sSUFBSSxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFDLE1BQU0sTUFBTSxHQUFHLHFCQUFxQixDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUM7SUFDekQsTUFBTSxRQUFRLEdBQ1osQ0FBQSxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsUUFBUSxNQUFJLE1BQUEsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLGNBQWMsMENBQUUsUUFBUSxDQUFBLElBQUksU0FBUyxDQUFDO0lBQ2xFLE1BQU0sU0FBUyxHQUNiLENBQUEsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLFNBQVMsTUFBSSxNQUFBLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxjQUFjLDBDQUFFLFNBQVMsQ0FBQSxJQUFJLFNBQVMsQ0FBQztJQUNwRSxNQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QyxNQUFNLEtBQUssR0FBRyxJQUFBLDBCQUFtQixHQUFFLENBQUM7SUFFcEMsT0FBTztRQUNMLFlBQVk7UUFDWixZQUFZO1FBQ1osV0FBVztRQUNYLElBQUk7UUFDSixNQUFNO1FBQ04sUUFBUTtRQUNSLFNBQVM7UUFDVCxVQUFVO1FBQ1YsS0FBSztLQUNOLENBQUM7QUFDSixDQUFDO0FBRU0sTUFBTSx3QkFBd0IsR0FBRyxDQUN0QyxPQUFnQyxFQUNYLEVBQUUsQ0FBQyxDQUFDO0lBQ3pCLE1BQU0sRUFBRSxDQUFPLE9BQU8sRUFBRSxFQUFFO1FBQ3hCLElBQUksQ0FBQztZQUNILE1BQU0sU0FBUyxHQUFHLHdCQUFXLENBQUMsR0FBRyxFQUFFLENBQUM7WUFFcEMsTUFBTSxFQUNKLFlBQVksRUFDWixZQUFZLEVBQ1osV0FBVyxFQUNYLElBQUksRUFDSixNQUFNLEVBQ04sUUFBUSxFQUNSLFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxHQUNOLEdBQUcsd0JBQXdCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFHdEMsTUFBTSxjQUFjLEdBQUcsSUFBQSw2QkFBaUIsR0FBRSxDQUFDO1lBQzNDLE1BQU0sVUFBVSxHQUFHLGNBQWMsQ0FBQyxTQUFTLENBQUM7Z0JBQzFDLFFBQVEsRUFBRSxZQUFZO2dCQUN0QixXQUFXO2dCQUNYLFdBQVcsRUFBRSxLQUFLO2dCQUNsQixJQUFJO2dCQUNKLFNBQVMsRUFBRTtvQkFDVCxZQUFZO29CQUNaLFlBQVk7b0JBQ1osWUFBWSxFQUFFLFlBQVk7b0JBQzFCLE1BQU07b0JBQ04sUUFBUTtvQkFDUixTQUFTO29CQUNULFVBQVU7aUJBQ1g7YUFDRixDQUFDLENBQUM7WUFFSCxNQUFNLEtBQUssR0FBRyxhQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRXZDLE1BQU0sc0JBQXNCLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FDbEQsMkJBQTJCLEVBQzNCO2dCQUNFLFdBQVcsRUFBRSx5Q0FBeUM7Z0JBQ3RELElBQUksRUFBRSxJQUFJO2dCQUNWLFNBQVMsRUFBRSxlQUFTLENBQUMsTUFBTTthQUM1QixDQUNGLENBQUM7WUFDRixNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLDRCQUE0QixFQUFFO2dCQUN2RSxXQUFXLEVBQUUsZ0NBQWdDO2FBQzlDLENBQUMsQ0FBQztZQUNILE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsd0JBQXdCLEVBQUU7Z0JBQ25FLFdBQVcsRUFBRSw0QkFBNEI7YUFDMUMsQ0FBQyxDQUFDO1lBRUYsT0FBTyxDQUFDLE9BQWUsQ0FBQyxJQUFJLEdBQUc7Z0JBQzlCLFVBQVU7Z0JBQ1YsS0FBSztnQkFDTCxzQkFBc0I7Z0JBQ3RCLGNBQWM7Z0JBQ2QsY0FBYztnQkFDZCxTQUFTO2dCQUNULFdBQVc7Z0JBQ1gsV0FBVyxFQUFFLEtBQUs7Z0JBQ2xCLE1BQU07Z0JBQ04sUUFBUTtnQkFDUixTQUFTO2dCQUNULFVBQVU7YUFDWCxDQUFDO1FBQ0osQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLGdEQUFnRCxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3pFLENBQUM7SUFDSCxDQUFDLENBQUE7SUFFRCxLQUFLLEVBQUUsQ0FBTyxPQUFPLEVBQUUsRUFBRTs7UUFDdkIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxRQUFRLEdBQUksT0FBTyxDQUFDLE9BQWUsQ0FBQyxJQUFJLENBQUM7WUFDL0MsSUFBSSxDQUFDLFFBQVE7Z0JBQUUsT0FBTztZQUN0QixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBWSxDQUFDO1lBRW5DLE1BQU0scUJBQXFCLEdBQUcsQ0FBQSxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUscUJBQXFCLEtBQUksRUFBRSxDQUFDO1lBQ2pFLE1BQU0sTUFBTSxHQUFHLHFCQUFxQixDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUM7WUFDekQsTUFBTSxVQUFVLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFNUMsTUFBTSxFQUNKLFVBQVUsRUFDVixjQUFjLEVBQ2Qsc0JBQXNCLEVBQ3RCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsV0FBVyxHQUNaLEdBQUcsUUFBUSxDQUFDO1lBR2IsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUc1QixjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtnQkFDcEIsTUFBTTtnQkFDTixlQUFlLEVBQ2IsQ0FBQSxNQUFBLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSwwQ0FBRyxlQUFlLENBQUMsS0FBSSxTQUFTO2dCQUM1RCxjQUFjLEVBQUUsV0FBVztnQkFDM0IsNkJBQTZCLEVBQUUsV0FBVzthQUMzQyxDQUFDLENBQUM7WUFFSCxNQUFNLFVBQVUsR0FBRyx3QkFBVyxDQUFDLEdBQUcsRUFBRSxHQUFHLFNBQVMsQ0FBQztZQUVqRCxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFO2dCQUN4QyxNQUFNO2dCQUNOLE1BQU0sRUFBRSxTQUFTO2dCQUNqQixlQUFlLEVBQ2IsQ0FBQSxNQUFBLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSwwQ0FBRyxlQUFlLENBQUMsS0FBSSxTQUFTO2dCQUM1RCxjQUFjLEVBQUUsV0FBVztnQkFDM0IsNkJBQTZCLEVBQUUsV0FBVzthQUMzQyxDQUFDLENBQUM7WUFHSCxNQUFNLGNBQWMsR0FBRyxJQUFBLDZCQUFpQixFQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFckUsTUFBTSxjQUFjLENBQUMsT0FBTyxDQUFDO2dCQUMzQixPQUFPLEVBQUUsZ0NBQWdDO2dCQUN6QyxXQUFXO2dCQUNYLFNBQVMsRUFBRTtvQkFDVCxZQUFZLEVBQUUsTUFBQSxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsMENBQUcsZUFBZSxDQUFXO29CQUNyRSxZQUFZLEVBQUUsTUFBQSxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsMENBQ3RDLHdCQUF3QixDQUNmO29CQUNYLE1BQU07b0JBQ04sUUFBUSxFQUFFLE1BQUEsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLDBDQUFHLFVBQVUsQ0FBVztvQkFDNUQsU0FBUyxFQUFFLE1BQUEsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLDBDQUFHLFlBQVksQ0FBVztvQkFDL0QsVUFBVTtpQkFDWDtnQkFDRCxXQUFXLEVBQUU7b0JBQ1gsVUFBVTtvQkFDVixPQUFPLEVBQUUsSUFBSTtpQkFDZDthQUNGLENBQUMsQ0FBQztZQUdILFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUEsc0JBQVUsR0FBRSxDQUFDO1FBQ3JCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQywrQ0FBK0MsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN4RSxDQUFDO0lBQ0gsQ0FBQyxDQUFBO0lBRUQsT0FBTyxFQUFFLENBQU8sT0FBTyxFQUFFLEVBQUU7O1FBQ3pCLElBQUksQ0FBQztZQUNILE1BQU0sUUFBUSxHQUFJLE9BQU8sQ0FBQyxPQUFlLENBQUMsSUFBSSxDQUFDO1lBQy9DLElBQUksQ0FBQyxRQUFRO2dCQUFFLE9BQU87WUFFdEIsTUFBTSxFQUNKLFVBQVUsRUFDVixjQUFjLEVBQ2Qsc0JBQXNCLEVBQ3RCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsV0FBVyxFQUNYLE1BQU0sR0FDUCxHQUFHLFFBQVEsQ0FBQztZQUNiLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFHNUIsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDVixVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdCLENBQUM7WUFHRCxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtnQkFDcEIsTUFBTTtnQkFDTixVQUFVLEVBQUUsQ0FBQSxNQUFBLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxXQUFXLDBDQUFFLElBQUksS0FBSSxjQUFjO2dCQUN0RCxlQUFlLEVBQ2IsQ0FBQSxNQUFBLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSwwQ0FBRyxlQUFlLENBQUMsS0FBSSxTQUFTO2dCQUM1RCxjQUFjLEVBQUUsV0FBVztnQkFDM0IsNkJBQTZCLEVBQUUsV0FBVzthQUMzQyxDQUFDLENBQUM7WUFFSCxNQUFNLFVBQVUsR0FBRyx3QkFBVyxDQUFDLEdBQUcsRUFBRSxHQUFHLFNBQVMsQ0FBQztZQUVqRCxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFO2dCQUN4QyxNQUFNO2dCQUNOLE1BQU0sRUFBRSxPQUFPO2dCQUNmLGVBQWUsRUFDYixDQUFBLE1BQUEsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLDBDQUFHLGVBQWUsQ0FBQyxLQUFJLFNBQVM7Z0JBQzVELGNBQWMsRUFBRSxXQUFXO2dCQUMzQiw2QkFBNkIsRUFBRSxXQUFXO2FBQzNDLENBQUMsQ0FBQztZQUdILE1BQU0sY0FBYyxHQUFHLElBQUEsNkJBQWlCLEVBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUVyRSxNQUFNLGNBQWMsQ0FBQyxRQUFRLENBQUM7Z0JBQzVCLE9BQU8sRUFBRSxDQUFBLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxPQUFPLEtBQUksd0JBQXdCO2dCQUNuRCxLQUFLLEVBQUUsS0FBSyxJQUFJLFNBQVM7Z0JBQ3pCLFdBQVc7Z0JBQ1gsU0FBUyxFQUFFO29CQUNULFlBQVksRUFBRSxNQUFBLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSwwQ0FBRyxlQUFlLENBQVc7b0JBQ3JFLFlBQVksRUFBRSxNQUFBLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSwwQ0FDdEMsd0JBQXdCLENBQ2Y7b0JBQ1gsWUFBWSxFQUFFLE1BQUEsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLDBDQUN0Qyx3QkFBd0IsQ0FDZjtvQkFDWCxNQUFNO2lCQUNQO2dCQUNELFdBQVcsRUFBRTtvQkFDWCxVQUFVO29CQUNWLE9BQU8sRUFBRSxLQUFLO2lCQUNmO2dCQUNELE9BQU8sRUFBRTtvQkFDUCxTQUFTLEVBQUUsTUFBQSxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsV0FBVywwQ0FBRSxJQUFJO2lCQUNwQzthQUNGLENBQUMsQ0FBQztZQUdILFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUEsc0JBQVUsR0FBRSxDQUFDO1FBQ3JCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxpREFBaUQsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMxRSxDQUFDO0lBQ0gsQ0FBQyxDQUFBO0NBQ0YsQ0FBQyxDQUFDO0FBNU5VLFFBQUEsd0JBQXdCLDRCQTRObEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbWlkZHkgZnJvbSAnQG1pZGR5L2NvcmUnO1xuaW1wb3J0IHsgbWV0cmljcywgVmFsdWVUeXBlIH0gZnJvbSAnQG9wZW50ZWxlbWV0cnkvYXBpJztcbmltcG9ydCB7IGZvcmNlRmx1c2gsIGdldFN0YW5kYXJkTG9nZ2VyLCBnZXRTdGFuZGFyZFRyYWNlciB9IGZyb20gJy4uL3RlbGVtZXRyeSc7XG5pbXBvcnQgeyBwZXJmb3JtYW5jZSB9IGZyb20gJ3BlcmZfaG9va3MnO1xuaW1wb3J0IHsgZ2V0RW52aXJvbm1lbnRTdGFnZSB9IGZyb20gJy4uLy4uL2NvcmUnO1xuXG5pbnRlcmZhY2UgTWlkZHlNaWRkbGV3YXJlT3B0aW9ucyB7fVxuXG5mdW5jdGlvbiBleHRyYWN0SHR0cEF0dHJpYnV0ZXMoZXZlbnQ6IGFueSk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICBpZiAoZXZlbnQucmVxdWVzdENvbnRleHQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbWV0aG9kOiBldmVudC5yZXF1ZXN0Q29udGV4dC5odHRwPy5tZXRob2QgfHwgJ3Vua25vd24nLFxuICAgICAgdXJsOiBldmVudC5yZXF1ZXN0Q29udGV4dC5kb21haW5OYW1lICYmIGV2ZW50LnJlcXVlc3RDb250ZXh0Lmh0dHA/LnBhdGgsXG4gICAgICBhZ2VudDogZXZlbnQuaGVhZGVycz8uWyd1c2VyLWFnZW50J10gfHwgJ3Vua25vd24nLFxuICAgICAgcGF0aFBhcmFtZXRlcnM6IGV2ZW50LnBhdGhQYXJhbWV0ZXJzIHx8IHt9LFxuICAgICAgcXVlcnlTdHJpbmdQYXJhbWV0ZXJzOiBldmVudC5xdWVyeVN0cmluZ1BhcmFtZXRlcnMgfHwge30sXG4gICAgICBib2R5OiBldmVudC5ib2R5IHx8IHt9LFxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1ldGhvZDogZXZlbnQuaHR0cE1ldGhvZCB8fCAndW5rbm93bicsXG4gICAgdXJsOiBldmVudC5wYXRoIHx8ICd1bmtub3duJyxcbiAgICBhZ2VudDogZXZlbnQuaGVhZGVycz8uWydVc2VyLUFnZW50J10gfHwgJ3Vua25vd24nLFxuICAgIHBhdGhQYXJhbWV0ZXJzOiBldmVudC5wYXRoUGFyYW1ldGVycyB8fCB7fSxcbiAgICBxdWVyeVN0cmluZ1BhcmFtZXRlcnM6IGV2ZW50LnF1ZXJ5U3RyaW5nUGFyYW1ldGVycyB8fCB7fSxcbiAgICBib2R5OiBldmVudC5ib2R5IHx8IHt9LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdExvZ2dlZFVzZXIoXG4gIGV2ZW50OiBhbnlcbik6IHsgZW1haWw/OiBzdHJpbmc7IHVpZD86IHN0cmluZyB9IHwgdW5kZWZpbmVkIHtcbiAgbGV0IGxvZ2dlZFVzZXIgPSBldmVudD8ucmVxdWVzdENvbnRleHQ/LmF1dGhvcml6ZXI/LmxhbWJkYT8ubG9nZ2VyVXNlcjtcblxuICBpZiAobG9nZ2VkVXNlcikge1xuICAgIGxvZ2dlZFVzZXIgPVxuICAgICAgdHlwZW9mIGxvZ2dlZFVzZXIgPT09ICdzdHJpbmcnID8gSlNPTi5wYXJzZShsb2dnZWRVc2VyKSA6IGxvZ2dlZFVzZXI7XG4gICAgaWYgKFxuICAgICAgbG9nZ2VkVXNlcj8udXNlciAmJlxuICAgICAgbG9nZ2VkVXNlcj8udXNlcj8uYWNjb3VudF91c2VyICYmXG4gICAgICBsb2dnZWRVc2VyPy51c2VyPy5hY2NvdW50X3VzZXI/LmFjY291bnRcbiAgICApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGVtYWlsOiBsb2dnZWRVc2VyLnVzZXIuZW1haWwsXG4gICAgICAgIHVpZDogbG9nZ2VkVXNlci51c2VyLmFjY291bnRfdXNlci5hY2NvdW50LnVpZCxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdERlZmF1bHRBdHRyaWJ1dGVzKHJlcXVlc3Q6IGFueSkge1xuICBjb25zdCB7IGNvbnRleHQ6IGxhbWJkYUNvbnRleHQgfSA9IHJlcXVlc3Q7XG4gIGNvbnN0IGZ1bmN0aW9uTmFtZSA9IGxhbWJkYUNvbnRleHQuZnVuY3Rpb25OYW1lO1xuICBjb25zdCBpbnZvY2F0aW9uSWQgPSBsYW1iZGFDb250ZXh0LmF3c1JlcXVlc3RJZDtcbiAgY29uc3Qgc2VydmljZU5hbWUgPSBwcm9jZXNzLmVudi5TRVJWSUNFX05BTUUgfHwgJ3NzdC1zZXJ2aWNlJztcbiAgY29uc3QgZXZlbnQgPSByZXF1ZXN0LmV2ZW50IGFzIGFueTtcbiAgY29uc3QgcXVlcnlTdHJpbmdQYXJhbWV0ZXJzID0gZXZlbnQ/LnF1ZXJ5U3RyaW5nUGFyYW1ldGVycyB8fCB7fTtcbiAgY29uc3QgaHR0cCA9IGV4dHJhY3RIdHRwQXR0cmlidXRlcyhldmVudCk7XG4gIGNvbnN0IG9yaWdpbiA9IHF1ZXJ5U3RyaW5nUGFyYW1ldGVycy5vcmlnaW4gfHwgJ3Vua25vd24nO1xuICBjb25zdCByb3V0ZUtleSA9XG4gICAgZXZlbnQ/LnJvdXRlS2V5IHx8IGV2ZW50Py5yZXF1ZXN0Q29udGV4dD8ucm91dGVLZXkgfHwgJ3Vua25vd24nO1xuICBjb25zdCByZXF1ZXN0SWQgPVxuICAgIGV2ZW50Py5yZXF1ZXN0SWQgfHwgZXZlbnQ/LnJlcXVlc3RDb250ZXh0Py5yZXF1ZXN0SWQgfHwgJ3Vua25vd24nO1xuICBjb25zdCBsb2dnZWRVc2VyID0gZXh0cmFjdExvZ2dlZFVzZXIoZXZlbnQpO1xuICBjb25zdCBzdGFnZSA9IGdldEVudmlyb25tZW50U3RhZ2UoKTtcblxuICByZXR1cm4ge1xuICAgIGZ1bmN0aW9uTmFtZSxcbiAgICBpbnZvY2F0aW9uSWQsXG4gICAgc2VydmljZU5hbWUsXG4gICAgaHR0cCxcbiAgICBvcmlnaW4sXG4gICAgcm91dGVLZXksXG4gICAgcmVxdWVzdElkLFxuICAgIGxvZ2dlZFVzZXIsXG4gICAgc3RhZ2UsXG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBtaWRkeVRlbGVtZXRyeU1pZGRsZXdhcmUgPSAoXG4gIG9wdGlvbnM/OiBNaWRkeU1pZGRsZXdhcmVPcHRpb25zXG4pOiBtaWRkeS5NaWRkbGV3YXJlT2JqID0+ICh7XG4gIGJlZm9yZTogYXN5bmMgKHJlcXVlc3QpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc3RhcnRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7XG5cbiAgICAgIGNvbnN0IHtcbiAgICAgICAgZnVuY3Rpb25OYW1lLFxuICAgICAgICBpbnZvY2F0aW9uSWQsXG4gICAgICAgIHNlcnZpY2VOYW1lLFxuICAgICAgICBodHRwLFxuICAgICAgICBvcmlnaW4sXG4gICAgICAgIHJvdXRlS2V5LFxuICAgICAgICByZXF1ZXN0SWQsXG4gICAgICAgIGxvZ2dlZFVzZXIsXG4gICAgICAgIHN0YWdlLFxuICAgICAgfSA9IGV4dHJhY3REZWZhdWx0QXR0cmlidXRlcyhyZXF1ZXN0KTtcblxuICAgICAgLy8gVXNhciBTdGFuZGFyZFRyYWNlciBwYXJhIGNyaWFyIHNwYW4gY29tIGF0cmlidXRvcyBwYWRyb25pemFkb3NcbiAgICAgIGNvbnN0IHN0YW5kYXJkVHJhY2VyID0gZ2V0U3RhbmRhcmRUcmFjZXIoKTtcbiAgICAgIGNvbnN0IHNwYW5SZXN1bHQgPSBzdGFuZGFyZFRyYWNlci5zdGFydFNwYW4oe1xuICAgICAgICBzcGFuTmFtZTogZnVuY3Rpb25OYW1lLFxuICAgICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgICAgZW52aXJvbm1lbnQ6IHN0YWdlLFxuICAgICAgICBodHRwLFxuICAgICAgICBleGVjdXRpb246IHtcbiAgICAgICAgICBmdW5jdGlvbk5hbWUsXG4gICAgICAgICAgaW52b2NhdGlvbklkLFxuICAgICAgICAgIGF3c1JlcXVlc3RJZDogaW52b2NhdGlvbklkLFxuICAgICAgICAgIG9yaWdpbixcbiAgICAgICAgICByb3V0ZUtleSxcbiAgICAgICAgICByZXF1ZXN0SWQsXG4gICAgICAgICAgbG9nZ2VkVXNlcixcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBtZXRlciA9IG1ldHJpY3MuZ2V0TWV0ZXIob3JpZ2luKTtcblxuICAgICAgY29uc3QgZXhlY3V0aW9uVGltZUhpc3RvZ3JhbSA9IG1ldGVyLmNyZWF0ZUhpc3RvZ3JhbShcbiAgICAgICAgJ2xhbWJkYV9leGVjdXRpb25fZHVyYXRpb24nLFxuICAgICAgICB7XG4gICAgICAgICAgZGVzY3JpcHRpb246ICdUZW1wbyB0b3RhbCBkZSBleGVjdcOnw6NvIGRvIExhbWJkYSBlbSBtcycsXG4gICAgICAgICAgdW5pdDogJ21zJyxcbiAgICAgICAgICB2YWx1ZVR5cGU6IFZhbHVlVHlwZS5ET1VCTEUsXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgICBjb25zdCBzdWNjZXNzQ291bnRlciA9IG1ldGVyLmNyZWF0ZUNvdW50ZXIoJ3RvdGFsX3N1Y2Nlc3NmdWxfcHVyY2hhc2VzJywge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ1RvdGFsIGRlIGNvbXByYXMgYmVtLXN1Y2VkaWRhcycsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGZhaWx1cmVDb3VudGVyID0gbWV0ZXIuY3JlYXRlQ291bnRlcigndG90YWxfZmFpbGVkX3B1cmNoYXNlcycsIHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdUb3RhbCBkZSBjb21wcmFzIGNvbSBmYWxoYScsXG4gICAgICB9KTtcblxuICAgICAgKHJlcXVlc3QuY29udGV4dCBhcyBhbnkpLm90ZWwgPSB7XG4gICAgICAgIHNwYW5SZXN1bHQsXG4gICAgICAgIG1ldGVyLFxuICAgICAgICBleGVjdXRpb25UaW1lSGlzdG9ncmFtLFxuICAgICAgICBzdWNjZXNzQ291bnRlcixcbiAgICAgICAgZmFpbHVyZUNvdW50ZXIsXG4gICAgICAgIHN0YXJ0VGltZSxcbiAgICAgICAgc2VydmljZU5hbWUsXG4gICAgICAgIGVudmlyb25tZW50OiBzdGFnZSxcbiAgICAgICAgb3JpZ2luLFxuICAgICAgICByb3V0ZUtleSxcbiAgICAgICAgcmVxdWVzdElkLFxuICAgICAgICBsb2dnZWRVc2VyLFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgaW4gbWlkZHlUZWxlbWV0cnlNaWRkbGV3YXJlIGJlZm9yZSBob29rOicsIGVycm9yKTtcbiAgICB9XG4gIH0sXG5cbiAgYWZ0ZXI6IGFzeW5jIChyZXF1ZXN0KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG90ZWxEYXRhID0gKHJlcXVlc3QuY29udGV4dCBhcyBhbnkpLm90ZWw7XG4gICAgICBpZiAoIW90ZWxEYXRhKSByZXR1cm47XG4gICAgICBjb25zdCBldmVudCA9IHJlcXVlc3QuZXZlbnQgYXMgYW55O1xuXG4gICAgICBjb25zdCBxdWVyeVN0cmluZ1BhcmFtZXRlcnMgPSBldmVudD8ucXVlcnlTdHJpbmdQYXJhbWV0ZXJzIHx8IHt9O1xuICAgICAgY29uc3Qgb3JpZ2luID0gcXVlcnlTdHJpbmdQYXJhbWV0ZXJzLm9yaWdpbiB8fCAndW5rbm93bic7XG4gICAgICBjb25zdCBsb2dnZWRVc2VyID0gZXh0cmFjdExvZ2dlZFVzZXIoZXZlbnQpO1xuXG4gICAgICBjb25zdCB7XG4gICAgICAgIHNwYW5SZXN1bHQsXG4gICAgICAgIHN1Y2Nlc3NDb3VudGVyLFxuICAgICAgICBleGVjdXRpb25UaW1lSGlzdG9ncmFtLFxuICAgICAgICBzdGFydFRpbWUsXG4gICAgICAgIHNlcnZpY2VOYW1lLFxuICAgICAgICBlbnZpcm9ubWVudCxcbiAgICAgIH0gPSBvdGVsRGF0YTtcblxuICAgICAgLy8gTWFyY2FyIHNwYW4gY29tbyBzdWNlc3NvIHVzYW5kbyBTdGFuZGFyZFRyYWNlclxuICAgICAgc3BhblJlc3VsdC5zZXRTdWNjZXNzKHRydWUpO1xuXG4gICAgICAvLyBNw6l0cmljYXNcbiAgICAgIHN1Y2Nlc3NDb3VudGVyLmFkZCgxLCB7XG4gICAgICAgIG9yaWdpbixcbiAgICAgICAgJ2Z1bmN0aW9uLm5hbWUnOlxuICAgICAgICAgIHNwYW5SZXN1bHQuc3Bhbi5hdHRyaWJ1dGVzPy5bJ2Z1bmN0aW9uLm5hbWUnXSB8fCAndW5rbm93bicsXG4gICAgICAgICdzZXJ2aWNlLm5hbWUnOiBzZXJ2aWNlTmFtZSxcbiAgICAgICAgJ2RlcGxveW1lbnQuZW52aXJvbm1lbnQubmFtZSc6IGVudmlyb25tZW50LFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGR1cmF0aW9uTXMgPSBwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0VGltZTtcblxuICAgICAgZXhlY3V0aW9uVGltZUhpc3RvZ3JhbS5yZWNvcmQoZHVyYXRpb25Ncywge1xuICAgICAgICBvcmlnaW4sXG4gICAgICAgIHN0YXR1czogJ3N1Y2Nlc3MnLFxuICAgICAgICAnZnVuY3Rpb24ubmFtZSc6XG4gICAgICAgICAgc3BhblJlc3VsdC5zcGFuLmF0dHJpYnV0ZXM/LlsnZnVuY3Rpb24ubmFtZSddIHx8ICd1bmtub3duJyxcbiAgICAgICAgJ3NlcnZpY2UubmFtZSc6IHNlcnZpY2VOYW1lLFxuICAgICAgICAnZGVwbG95bWVudC5lbnZpcm9ubWVudC5uYW1lJzogZW52aXJvbm1lbnQsXG4gICAgICB9KTtcblxuICAgICAgLy8gTG9nIGVzdHJ1dHVyYWRvIGRlIHN1Y2Vzc29cbiAgICAgIGNvbnN0IHN0YW5kYXJkTG9nZ2VyID0gZ2V0U3RhbmRhcmRMb2dnZXIoc3BhblJlc3VsdC5zcGFuLmF0dHJpYnV0ZXMpO1xuXG4gICAgICBhd2FpdCBzdGFuZGFyZExvZ2dlci5sb2dJbmZvKHtcbiAgICAgICAgbWVzc2FnZTogJ1JlcXVlc3QgY29tcGxldGVkIHN1Y2Nlc3NmdWxseScsXG4gICAgICAgIGVudmlyb25tZW50LFxuICAgICAgICBleGVjdXRpb246IHtcbiAgICAgICAgICBmdW5jdGlvbk5hbWU6IHNwYW5SZXN1bHQuc3Bhbi5hdHRyaWJ1dGVzPy5bJ2Z1bmN0aW9uLm5hbWUnXSBhcyBzdHJpbmcsXG4gICAgICAgICAgaW52b2NhdGlvbklkOiBzcGFuUmVzdWx0LnNwYW4uYXR0cmlidXRlcz8uW1xuICAgICAgICAgICAgJ2Z1bmN0aW9uLmludm9jYXRpb25faWQnXG4gICAgICAgICAgXSBhcyBzdHJpbmcsXG4gICAgICAgICAgb3JpZ2luLFxuICAgICAgICAgIHJvdXRlS2V5OiBzcGFuUmVzdWx0LnNwYW4uYXR0cmlidXRlcz8uWydyb3V0ZUtleSddIGFzIHN0cmluZyxcbiAgICAgICAgICByZXF1ZXN0SWQ6IHNwYW5SZXN1bHQuc3Bhbi5hdHRyaWJ1dGVzPy5bJ3JlcXVlc3QuaWQnXSBhcyBzdHJpbmcsXG4gICAgICAgICAgbG9nZ2VkVXNlcixcbiAgICAgICAgfSxcbiAgICAgICAgcGVyZm9ybWFuY2U6IHtcbiAgICAgICAgICBkdXJhdGlvbk1zLFxuICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgLy8gRmluYWxpemFyIHNwYW5cbiAgICAgIHNwYW5SZXN1bHQuZW5kKCk7XG4gICAgICBhd2FpdCBmb3JjZUZsdXNoKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluIG1pZGR5VGVsZW1ldHJ5TWlkZGxld2FyZSBhZnRlciBob29rOicsIGVycm9yKTtcbiAgICB9XG4gIH0sXG5cbiAgb25FcnJvcjogYXN5bmMgKHJlcXVlc3QpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgb3RlbERhdGEgPSAocmVxdWVzdC5jb250ZXh0IGFzIGFueSkub3RlbDtcbiAgICAgIGlmICghb3RlbERhdGEpIHJldHVybjtcblxuICAgICAgY29uc3Qge1xuICAgICAgICBzcGFuUmVzdWx0LFxuICAgICAgICBmYWlsdXJlQ291bnRlcixcbiAgICAgICAgZXhlY3V0aW9uVGltZUhpc3RvZ3JhbSxcbiAgICAgICAgc3RhcnRUaW1lLFxuICAgICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgICAgZW52aXJvbm1lbnQsXG4gICAgICAgIG9yaWdpbixcbiAgICAgIH0gPSBvdGVsRGF0YTtcbiAgICAgIGNvbnN0IGVycm9yID0gcmVxdWVzdC5lcnJvcjtcblxuICAgICAgLy8gTWFyY2FyIHNwYW4gY29tbyBlcnJvIHVzYW5kbyBTdGFuZGFyZFRyYWNlclxuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHNwYW5SZXN1bHQuc2V0RXJyb3IoZXJyb3IpO1xuICAgICAgfVxuXG4gICAgICAvLyBNw6l0cmljYXNcbiAgICAgIGZhaWx1cmVDb3VudGVyLmFkZCgxLCB7XG4gICAgICAgIG9yaWdpbixcbiAgICAgICAgZXJyb3JfdHlwZTogZXJyb3I/LmNvbnN0cnVjdG9yPy5uYW1lIHx8ICdVbmtub3duRXJyb3InLFxuICAgICAgICAnZnVuY3Rpb24ubmFtZSc6XG4gICAgICAgICAgc3BhblJlc3VsdC5zcGFuLmF0dHJpYnV0ZXM/LlsnZnVuY3Rpb24ubmFtZSddIHx8ICd1bmtub3duJyxcbiAgICAgICAgJ3NlcnZpY2UubmFtZSc6IHNlcnZpY2VOYW1lLFxuICAgICAgICAnZGVwbG95bWVudC5lbnZpcm9ubWVudC5uYW1lJzogZW52aXJvbm1lbnQsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgZHVyYXRpb25NcyA9IHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnRUaW1lO1xuXG4gICAgICBleGVjdXRpb25UaW1lSGlzdG9ncmFtLnJlY29yZChkdXJhdGlvbk1zLCB7XG4gICAgICAgIG9yaWdpbixcbiAgICAgICAgc3RhdHVzOiAnZXJyb3InLFxuICAgICAgICAnZnVuY3Rpb24ubmFtZSc6XG4gICAgICAgICAgc3BhblJlc3VsdC5zcGFuLmF0dHJpYnV0ZXM/LlsnZnVuY3Rpb24ubmFtZSddIHx8ICd1bmtub3duJyxcbiAgICAgICAgJ3NlcnZpY2UubmFtZSc6IHNlcnZpY2VOYW1lLFxuICAgICAgICAnZGVwbG95bWVudC5lbnZpcm9ubWVudC5uYW1lJzogZW52aXJvbm1lbnQsXG4gICAgICB9KTtcblxuICAgICAgLy8gTG9nIGVzdHJ1dHVyYWRvIGRlIGVycm9cbiAgICAgIGNvbnN0IHN0YW5kYXJkTG9nZ2VyID0gZ2V0U3RhbmRhcmRMb2dnZXIoc3BhblJlc3VsdC5zcGFuLmF0dHJpYnV0ZXMpO1xuXG4gICAgICBhd2FpdCBzdGFuZGFyZExvZ2dlci5sb2dFcnJvcih7XG4gICAgICAgIG1lc3NhZ2U6IGVycm9yPy5tZXNzYWdlIHx8ICdVbmtub3duIGVycm9yIG9jY3VycmVkJyxcbiAgICAgICAgZXJyb3I6IGVycm9yIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgZW52aXJvbm1lbnQsXG4gICAgICAgIGV4ZWN1dGlvbjoge1xuICAgICAgICAgIGZ1bmN0aW9uTmFtZTogc3BhblJlc3VsdC5zcGFuLmF0dHJpYnV0ZXM/LlsnZnVuY3Rpb24ubmFtZSddIGFzIHN0cmluZyxcbiAgICAgICAgICBpbnZvY2F0aW9uSWQ6IHNwYW5SZXN1bHQuc3Bhbi5hdHRyaWJ1dGVzPy5bXG4gICAgICAgICAgICAnZnVuY3Rpb24uaW52b2NhdGlvbl9pZCdcbiAgICAgICAgICBdIGFzIHN0cmluZyxcbiAgICAgICAgICBhd3NSZXF1ZXN0SWQ6IHNwYW5SZXN1bHQuc3Bhbi5hdHRyaWJ1dGVzPy5bXG4gICAgICAgICAgICAnZnVuY3Rpb24uaW52b2NhdGlvbl9pZCdcbiAgICAgICAgICBdIGFzIHN0cmluZyxcbiAgICAgICAgICBvcmlnaW4sXG4gICAgICAgIH0sXG4gICAgICAgIHBlcmZvcm1hbmNlOiB7XG4gICAgICAgICAgZHVyYXRpb25NcyxcbiAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgIGVycm9yVHlwZTogZXJyb3I/LmNvbnN0cnVjdG9yPy5uYW1lLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIC8vIEZpbmFsaXphciBzcGFuXG4gICAgICBzcGFuUmVzdWx0LmVuZCgpO1xuICAgICAgYXdhaXQgZm9yY2VGbHVzaCgpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBpbiBtaWRkeVRlbGVtZXRyeU1pZGRsZXdhcmUgb25FcnJvciBob29rOicsIGVycm9yKTtcbiAgICB9XG4gIH0sXG59KTtcbiJdfQ==
|
|
@@ -13,6 +13,7 @@ exports.TsedLogTelemetry = TsedLogTelemetry;
|
|
|
13
13
|
const service_1 = require("./service");
|
|
14
14
|
const api_1 = require("@opentelemetry/api");
|
|
15
15
|
const perf_hooks_1 = require("perf_hooks");
|
|
16
|
+
const core_1 = require("../core");
|
|
16
17
|
function TsedLogTelemetry() {
|
|
17
18
|
return function (_target, _propertyKey, descriptor) {
|
|
18
19
|
const originalMethod = descriptor.value;
|
|
@@ -47,9 +48,7 @@ function TsedLogTelemetry() {
|
|
|
47
48
|
}
|
|
48
49
|
const request = $ctx.request;
|
|
49
50
|
const serviceName = process.env.SERVICE_NAME || 'tsed-service';
|
|
50
|
-
|
|
51
|
-
if (stage === 'prod')
|
|
52
|
-
stage = 'production';
|
|
51
|
+
const stage = (0, core_1.getEnvironmentStage)();
|
|
53
52
|
const queryStringParameters = request.query || {};
|
|
54
53
|
const origin = queryStringParameters.origin || 'web';
|
|
55
54
|
const tracer = telemetryService.getTracer();
|
|
@@ -193,4 +192,4 @@ function TsedLogTelemetry() {
|
|
|
193
192
|
return descriptor;
|
|
194
193
|
};
|
|
195
194
|
}
|
|
196
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLXRlbGVtZXRyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90c2VkL2xvZy10ZWxlbWV0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFnQkEsNENBd1BDO0FBNVBELHVDQUFpRDtBQUNqRCw0Q0FBd0Q7QUFDeEQsMkNBQXlDO0FBRXpDLFNBQWdCLGdCQUFnQjtJQUM5QixPQUFPLFVBQ0wsT0FBWSxFQUNaLFlBQW9CLEVBQ3BCLFVBQThCO1FBRTlCLE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7UUFDeEMsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDO1FBRWhDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsVUFBMkIsR0FBRyxJQUFXOzs7Z0JBQzFELE1BQU0sU0FBUyxHQUFHLHdCQUFXLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBR3BDLE1BQU0sSUFBSSxHQUFzQixJQUFJLENBQUMsSUFBSSxDQUN2QyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQSxHQUFHLGFBQUgsR0FBRyx1QkFBSCxHQUFHLENBQUUsT0FBTyxNQUFJLEdBQUcsYUFBSCxHQUFHLHVCQUFILEdBQUcsQ0FBRSxRQUFRLENBQUEsQ0FDdkMsQ0FBQztnQkFHRixJQUFJLGNBQWMsR0FBRyxtQkFBbUIsQ0FBQztnQkFDekMsSUFBSSxDQUFBLE1BQUEsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLFdBQVcsMENBQUUsSUFBSSxLQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUNsRSxjQUFjLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7Z0JBQ3pDLENBQUM7Z0JBRUQsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO29CQUNWLE9BQU8sQ0FBQyxJQUFJLENBQ1YsbUVBQW1FLENBQ3BFLENBQUM7b0JBQ0YsT0FBTyxNQUFNLGNBQWMsQ0FBQyxLQUFLLENB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QVksRUFBRSxNQUFBLElBQUksQ0FBQyxPQUFPLDBDQUFFLFlBQVksRUFDeEMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQ3JCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxFQUN0QixVQUFVLEVBQUUsY0FBYyxFQUMxQixnQkFBZ0IsRUFBRSxVQUFVLElBQzVCLENBQUM7b0JBR0gsSUFBSSxVQUFVLEVBQUUsQ0FBQzt3QkFDZixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUM7b0JBQ25CLENBQUM7b0JBQ0QsTUFBTyxnQkFBd0IsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFFL0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQztvQkFHNUMsTUFBTSxLQUFLLENBQUM7Z0JBQ2QsQ0FBQztZQUNILENBQUM7U0FBQSxDQUFDO1FBRUYsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRGVjb3JhdG9yIHF1ZSBjYXB0dXJhIGVycm9zIGF1dG9tYXRpY2FtZW50ZSwgY3JpYSBzcGFucyBlIGVudmlhIHBhcmEgdGVsZW1ldHJpYVxuICogQWxpbmhhZG8gY29tIGEgaW1wbGVtZW50YcOnw6NvIGRvIFNTVCBtaWRkbGV3YXJlIHBhcmEgZ2FyYW50aXIgY29uc2lzdMOqbmNpYVxuICpcbiAqIFVzbyBubyBjb250cm9sbGVyOlxuICpcbiAqIEBUc2VkTG9nVGVsZW1ldHJ5KClcbiAqIGFzeW5jIGdldENoZWNrb3V0KEBDb250ZXh0KCkgJGN0eDogU2VydmVybGVzc0NvbnRleHQsIC4uLikge1xuICogICByZXR1cm4gYXdhaXQgdGhpcy5zZXJ2aWNlLmV4ZWN1dGUocGFyYW1zKTtcbiAqIH1cbiAqL1xuaW1wb3J0IHsgU2VydmVybGVzc0NvbnRleHQgfSBmcm9tICdAdHNlZC9wbGF0Zm9ybS1zZXJ2ZXJsZXNzJztcbmltcG9ydCB7IFRzZWRUZWxlbWV0cnlTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlJztcbmltcG9ydCB7IG1ldHJpY3MsIFZhbHVlVHlwZSB9IGZyb20gJ0BvcGVudGVsZW1ldHJ5L2FwaSc7XG5pbXBvcnQgeyBwZXJmb3JtYW5jZSB9IGZyb20gJ3BlcmZfaG9va3MnO1xuXG5leHBvcnQgZnVuY3Rpb24gVHNlZExvZ1RlbGVtZXRyeSgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChcbiAgICBfdGFyZ2V0OiBhbnksXG4gICAgX3Byb3BlcnR5S2V5OiBzdHJpbmcsXG4gICAgZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yXG4gICkge1xuICAgIGNvbnN0IG9yaWdpbmFsTWV0aG9kID0gZGVzY3JpcHRvci52YWx1ZTtcbiAgICBjb25zdCBtZXRob2ROYW1lID0gX3Byb3BlcnR5S2V5O1xuXG4gICAgZGVzY3JpcHRvci52YWx1ZSA9IGFzeW5jIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBjb25zdCBzdGFydFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTtcblxuICAgICAgLy8gRW5jb250cmFyIG8gY29udGV4dG9cbiAgICAgIGNvbnN0ICRjdHg6IFNlcnZlcmxlc3NDb250ZXh0ID0gYXJncy5maW5kKFxuICAgICAgICAoYXJnKSA9PiBhcmc/LnJlcXVlc3QgJiYgYXJnPy5yZXNwb25zZVxuICAgICAgKTtcblxuICAgICAgLy8gQ2FwdHVyYXIgbyBub21lIGRvIGNvbnRyb2xsZXJcbiAgICAgIGxldCBjb250cm9sbGVyTmFtZSA9ICdVbmtub3duQ29udHJvbGxlcic7XG4gICAgICBpZiAodGhpcz8uY29uc3RydWN0b3I/Lm5hbWUgJiYgdGhpcy5jb25zdHJ1Y3Rvci5uYW1lICE9PSAnT2JqZWN0Jykge1xuICAgICAgICBjb250cm9sbGVyTmFtZSA9IHRoaXMuY29uc3RydWN0b3IubmFtZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCEkY3R4KSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAnW1RzZWRMb2dUZWxlbWV0cnldIENvbnRleHQgbm90IGZvdW5kLCBleGVjdXRpbmcgd2l0aG91dCB0ZWxlbWV0cnknXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBhd2FpdCBvcmlnaW5hbE1ldGhvZC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgIH1cblxuICAgICAgLy8gQnVzY2FyIG8gVGVsZW1ldHJ5U2VydmljZSBkbyBpbmplY3RvclxuICAgICAgbGV0IHRlbGVtZXRyeVNlcnZpY2U6IFRzZWRUZWxlbWV0cnlTZXJ2aWNlIHwgdW5kZWZpbmVkO1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKCRjdHguaW5qZWN0b3IpIHtcbiAgICAgICAgICB0ZWxlbWV0cnlTZXJ2aWNlID0gJGN0eC5pbmplY3Rvci5nZXQoXG4gICAgICAgICAgICBUc2VkVGVsZW1ldHJ5U2VydmljZVxuICAgICAgICAgICkgYXMgVHNlZFRlbGVtZXRyeVNlcnZpY2U7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICRjdHgubG9nZ2VyPy53YXJuKHtcbiAgICAgICAgICAnVHNlZExvZ1RlbGVtZXRyeSAtIEZhaWxlZCB0byBnZXQgVGVsZW1ldHJ5U2VydmljZSBmcm9tIGluamVjdG9yJzpcbiAgICAgICAgICAgIGVycm9yLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0ZWxlbWV0cnlTZXJ2aWNlKSB7XG4gICAgICAgICRjdHgubG9nZ2VyPy53YXJuKFxuICAgICAgICAgICdbVHNlZExvZ1RlbGVtZXRyeV0gVGVsZW1ldHJ5U2VydmljZSBub3QgYXZhaWxhYmxlLCBleGVjdXRpbmcgd2l0aG91dCB0ZWxlbWV0cnknXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBhd2FpdCBvcmlnaW5hbE1ldGhvZC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgIH1cblxuICAgICAgLy8gRXh0cmFpciBpbmZvcm1hw6fDtWVzIGLDoXNpY2FzXG4gICAgICBjb25zdCByZXF1ZXN0ID0gJGN0eC5yZXF1ZXN0O1xuICAgICAgY29uc3Qgc2VydmljZU5hbWUgPSBwcm9jZXNzLmVudi5TRVJWSUNFX05BTUUgfHwgJ3RzZWQtc2VydmljZSc7XG4gICAgICBsZXQgc3RhZ2UgPSBwcm9jZXNzLmVudi5TVEFHRSB8fCAnZGV2ZWxvcG1lbnQnO1xuICAgICAgaWYgKHN0YWdlID09PSAncHJvZCcpIHN0YWdlID0gJ3Byb2R1Y3Rpb24nO1xuXG4gICAgICBjb25zdCBxdWVyeVN0cmluZ1BhcmFtZXRlcnMgPSByZXF1ZXN0LnF1ZXJ5IHx8IHt9O1xuICAgICAgY29uc3Qgb3JpZ2luID0gcXVlcnlTdHJpbmdQYXJhbWV0ZXJzLm9yaWdpbiB8fCAnd2ViJztcblxuICAgICAgLy8gQ3JpYXIgc3BhbiB1c2FuZG8gU3RhbmRhcmRUcmFjZXIgKHNpbWlsYXIgYW8gU1NUIG1pZGRsZXdhcmUpXG4gICAgICBjb25zdCB0cmFjZXIgPSAodGVsZW1ldHJ5U2VydmljZSBhcyBhbnkpLmdldFRyYWNlcigpO1xuICAgICAgbGV0IHNwYW5SZXN1bHQ6IGFueSA9IG51bGw7XG5cbiAgICAgIGlmICh0cmFjZXIpIHtcbiAgICAgICAgc3BhblJlc3VsdCA9IHRyYWNlci5zdGFydFNwYW4oe1xuICAgICAgICAgIHNwYW5OYW1lOiBgJHtjb250cm9sbGVyTmFtZX0uJHttZXRob2ROYW1lfWAsXG4gICAgICAgICAgc2VydmljZU5hbWUsXG4gICAgICAgICAgZW52aXJvbm1lbnQ6IHN0YWdlLFxuICAgICAgICAgIGV4ZWN1dGlvbjoge1xuICAgICAgICAgICAgY29udHJvbGxlcjogY29udHJvbGxlck5hbWUsXG4gICAgICAgICAgICBjb250cm9sbGVyTWV0aG9kOiBtZXRob2ROYW1lLFxuICAgICAgICAgICAgcmVxdWVzdElkOiAkY3R4LmlkLFxuICAgICAgICAgICAgYXdzUmVxdWVzdElkOiAkY3R4LmNvbnRleHQ/LmF3c1JlcXVlc3RJZCxcbiAgICAgICAgICAgIG9yaWdpbixcbiAgICAgICAgICB9LFxuICAgICAgICAgIGh0dHA6IHtcbiAgICAgICAgICAgIG1ldGhvZDogcmVxdWVzdC5tZXRob2QsXG4gICAgICAgICAgICB1cmw6IHJlcXVlc3QudXJsLFxuICAgICAgICAgICAgZW5kcG9pbnQ6IHJlcXVlc3QudXJsLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICAvLyBDcmlhciBtw6l0cmljYXMgKHNpbWlsYXIgYW8gU1NUIG1pZGRsZXdhcmUpXG4gICAgICBjb25zdCBtZXRlciA9IG1ldHJpY3MuZ2V0TWV0ZXIob3JpZ2luKTtcbiAgICAgIGNvbnN0IGV4ZWN1dGlvblRpbWVIaXN0b2dyYW0gPSBtZXRlci5jcmVhdGVIaXN0b2dyYW0oXG4gICAgICAgICd0c2VkX2V4ZWN1dGlvbl9kdXJhdGlvbicsXG4gICAgICAgIHtcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ1RlbXBvIHRvdGFsIGRlIGV4ZWN1w6fDo28gZG8gbcOpdG9kbyBUc2VkIGVtIG1zJyxcbiAgICAgICAgICB1bml0OiAnbXMnLFxuICAgICAgICAgIHZhbHVlVHlwZTogVmFsdWVUeXBlLkRPVUJMRSxcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIGNvbnN0IHN1Y2Nlc3NDb3VudGVyID0gbWV0ZXIuY3JlYXRlQ291bnRlcigndHNlZF9zdWNjZXNzZnVsX3JlcXVlc3RzJywge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ1RvdGFsIGRlIHJlcXVpc2nDp8O1ZXMgYmVtLXN1Y2VkaWRhcycsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGZhaWx1cmVDb3VudGVyID0gbWV0ZXIuY3JlYXRlQ291bnRlcigndHNlZF9mYWlsZWRfcmVxdWVzdHMnLCB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVG90YWwgZGUgcmVxdWlzacOnw7VlcyBjb20gZmFsaGEnLFxuICAgICAgfSk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG9yaWdpbmFsTWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3MpO1xuXG4gICAgICAgIC8vIFNVQ0VTU08gLSBTaW1pbGFyIGFvICdhZnRlcicgZG8gU1NUIG1pZGRsZXdhcmVcbiAgICAgICAgY29uc3QgZHVyYXRpb25NcyA9IHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnRUaW1lO1xuXG4gICAgICAgIC8vIE1hcmNhciBzcGFuIGNvbW8gc3VjZXNzb1xuICAgICAgICBpZiAoc3BhblJlc3VsdCkge1xuICAgICAgICAgIHNwYW5SZXN1bHQuc2V0U3VjY2Vzcyh0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE3DqXRyaWNhcyBkZSBzdWNlc3NvXG4gICAgICAgIHN1Y2Nlc3NDb3VudGVyLmFkZCgxLCB7XG4gICAgICAgICAgb3JpZ2luLFxuICAgICAgICAgIGNvbnRyb2xsZXI6IGNvbnRyb2xsZXJOYW1lLFxuICAgICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgICAnc2VydmljZS5uYW1lJzogc2VydmljZU5hbWUsXG4gICAgICAgICAgJ2RlcGxveW1lbnQuZW52aXJvbm1lbnQubmFtZSc6IHN0YWdlLFxuICAgICAgICB9KTtcblxuICAgICAgICBleGVjdXRpb25UaW1lSGlzdG9ncmFtLnJlY29yZChkdXJhdGlvbk1zLCB7XG4gICAgICAgICAgb3JpZ2luLFxuICAgICAgICAgIHN0YXR1czogJ3N1Y2Nlc3MnLFxuICAgICAgICAgIGNvbnRyb2xsZXI6IGNvbnRyb2xsZXJOYW1lLFxuICAgICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgICAnc2VydmljZS5uYW1lJzogc2VydmljZU5hbWUsXG4gICAgICAgICAgJ2RlcGxveW1lbnQuZW52aXJvbm1lbnQubmFtZSc6IHN0YWdlLFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBMb2cgZGUgc3VjZXNzbyAoc2ltaWxhciBhbyBTU1QpXG4gICAgICAgIGNvbnN0IGxvZ2dlciA9ICh0ZWxlbWV0cnlTZXJ2aWNlIGFzIGFueSkuZ2V0TG9nZ2VyKCk7XG4gICAgICAgIGlmIChsb2dnZXIpIHtcbiAgICAgICAgICBhd2FpdCBsb2dnZXIubG9nSW5mbyh7XG4gICAgICAgICAgICBtZXNzYWdlOiAnUmVxdWVzdCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5JyxcbiAgICAgICAgICAgIHNlcnZpY2VOYW1lLFxuICAgICAgICAgICAgZW52aXJvbm1lbnQ6IHN0YWdlLFxuICAgICAgICAgICAgZXhlY3V0aW9uOiB7XG4gICAgICAgICAgICAgIGNvbnRyb2xsZXI6IGNvbnRyb2xsZXJOYW1lLFxuICAgICAgICAgICAgICBjb250cm9sbGVyTWV0aG9kOiBtZXRob2ROYW1lLFxuICAgICAgICAgICAgICByZXF1ZXN0SWQ6ICRjdHguaWQsXG4gICAgICAgICAgICAgIGF3c1JlcXVlc3RJZDogJGN0eC5jb250ZXh0Py5hd3NSZXF1ZXN0SWQsXG4gICAgICAgICAgICAgIG9yaWdpbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBodHRwOiB7XG4gICAgICAgICAgICAgIG1ldGhvZDogcmVxdWVzdC5tZXRob2QsXG4gICAgICAgICAgICAgIHVybDogcmVxdWVzdC51cmwsXG4gICAgICAgICAgICAgIGVuZHBvaW50OiByZXF1ZXN0LnVybCxcbiAgICAgICAgICAgICAgc3RhdHVzQ29kZTogJGN0eC5yZXNwb25zZT8uc3RhdHVzQ29kZSB8fCAyMDAsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGVyZm9ybWFuY2U6IHtcbiAgICAgICAgICAgICAgZHVyYXRpb25NcyxcbiAgICAgICAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGaW5hbGl6YXIgc3BhbiBlIGZvcmNlIGZsdXNoXG4gICAgICAgIGlmIChzcGFuUmVzdWx0KSB7XG4gICAgICAgICAgc3BhblJlc3VsdC5lbmQoKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCAodGVsZW1ldHJ5U2VydmljZSBhcyBhbnkpLnRlbGVtZXRyeVByb3ZpZGVyLmZvcmNlRmx1c2goKTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICAvLyBFUlJPIC0gU2ltaWxhciBhbyAnb25FcnJvcicgZG8gU1NUIG1pZGRsZXdhcmVcbiAgICAgICAgY29uc3QgZHVyYXRpb25NcyA9IHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnRUaW1lO1xuXG4gICAgICAgICRjdHgubG9nZ2VyPy5pbmZvKCdFcnJvciBjYXVnaHQsIHNlbmRpbmcgdG8gdGVsZW1ldHJ5Jyk7XG5cbiAgICAgICAgLy8gTWFyY2FyIHNwYW4gY29tbyBlcnJvXG4gICAgICAgIGlmIChzcGFuUmVzdWx0KSB7XG4gICAgICAgICAgc3BhblJlc3VsdC5zZXRFcnJvcihlcnJvcik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBNw6l0cmljYXMgZGUgZXJyb1xuICAgICAgICBmYWlsdXJlQ291bnRlci5hZGQoMSwge1xuICAgICAgICAgIG9yaWdpbixcbiAgICAgICAgICBlcnJvcl90eXBlOiBlcnJvcj8uY29uc3RydWN0b3I/Lm5hbWUgfHwgJ1Vua25vd25FcnJvcicsXG4gICAgICAgICAgY29udHJvbGxlcjogY29udHJvbGxlck5hbWUsXG4gICAgICAgICAgbWV0aG9kOiBtZXRob2ROYW1lLFxuICAgICAgICAgICdzZXJ2aWNlLm5hbWUnOiBzZXJ2aWNlTmFtZSxcbiAgICAgICAgICAnZGVwbG95bWVudC5lbnZpcm9ubWVudC5uYW1lJzogc3RhZ2UsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGV4ZWN1dGlvblRpbWVIaXN0b2dyYW0ucmVjb3JkKGR1cmF0aW9uTXMsIHtcbiAgICAgICAgICBvcmlnaW4sXG4gICAgICAgICAgc3RhdHVzOiAnZXJyb3InLFxuICAgICAgICAgIGNvbnRyb2xsZXI6IGNvbnRyb2xsZXJOYW1lLFxuICAgICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgICAnc2VydmljZS5uYW1lJzogc2VydmljZU5hbWUsXG4gICAgICAgICAgJ2RlcGxveW1lbnQuZW52aXJvbm1lbnQubmFtZSc6IHN0YWdlLFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBFeHRyYWlyIGluZm9ybWHDp8O1ZXMgZG8gdXN1w6FyaW9cbiAgICAgICAgbGV0IHVzZXJJbmZvOiBhbnkgPSB7fTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlIC0gTG9nZ2VkVXNlcklkZW50aWZpZXIgw6kgZXNwZWPDrWZpY28gZGEgYXBsaWNhw6fDo29cbiAgICAgICAgICBpZiAodHlwZW9mIExvZ2dlZFVzZXJJZGVudGlmaWVyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgY29uc3QgeyBsb2dnZWRVc2VyIH0gPSBMb2dnZWRVc2VySWRlbnRpZmllci51c2UoJGN0eCk7XG4gICAgICAgICAgICB1c2VySW5mbyA9IHtcbiAgICAgICAgICAgICAgYWNjb3VudFVzZXJVaWQ6IGxvZ2dlZFVzZXI/LnVpZCxcbiAgICAgICAgICAgICAgYWNjb3VudFVpZDogbG9nZ2VkVXNlcj8uYWNjb3VudD8udWlkLFxuICAgICAgICAgICAgICBhcHBsaWNhdGlvblVpZDogbG9nZ2VkVXNlcj8uYXBwbGljYXRpb24/LnVpZCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgLy8gTG9nZ2VkVXNlcklkZW50aWZpZXIgbsOjbyBlc3TDoSBkaXNwb27DrXZlbFxuICAgICAgICB9XG5cbiAgICAgICAgLy8gTG9nIGRlIGVycm8gKHNpbWlsYXIgYW8gU1NUKVxuICAgICAgICBhd2FpdCB0ZWxlbWV0cnlTZXJ2aWNlLmxvZ0Vycm9yKHtcbiAgICAgICAgICBlcnJvcjogZXJyb3IsXG4gICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgc3RhdHVzQ29kZTogZXJyb3Iuc3RhdHVzIHx8IDUwMCxcbiAgICAgICAgICAgIHVybDogcmVxdWVzdC51cmwsXG4gICAgICAgICAgICBoZWFkZXJzOiByZXF1ZXN0LmhlYWRlcnMsXG4gICAgICAgICAgICBib2R5OiByZXF1ZXN0LmJvZHksXG4gICAgICAgICAgICBwYXJhbXM6IHJlcXVlc3QucGFyYW1zLFxuICAgICAgICAgICAgcXVlcnk6IHJlcXVlc3QucXVlcnksXG4gICAgICAgICAgICBlcnJvclR5cGU6IGVycm9yPy5jb25zdHJ1Y3Rvcj8ubmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIC4uLnVzZXJJbmZvLFxuICAgICAgICAgIHJlcXVlc3RJZDogJGN0eC5pZCxcbiAgICAgICAgICBhd3NSZXF1ZXN0SWQ6ICRjdHguY29udGV4dD8uYXdzUmVxdWVzdElkLFxuICAgICAgICAgIGVuZHBvaW50OiByZXF1ZXN0LnVybCxcbiAgICAgICAgICBtZXRob2Q6IHJlcXVlc3QubWV0aG9kLFxuICAgICAgICAgIGNvbnRyb2xsZXI6IGNvbnRyb2xsZXJOYW1lLFxuICAgICAgICAgIGNvbnRyb2xsZXJNZXRob2Q6IG1ldGhvZE5hbWUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEZpbmFsaXphciBzcGFuIGUgZm9yY2UgZmx1c2hcbiAgICAgICAgaWYgKHNwYW5SZXN1bHQpIHtcbiAgICAgICAgICBzcGFuUmVzdWx0LmVuZCgpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0ICh0ZWxlbWV0cnlTZXJ2aWNlIGFzIGFueSkudGVsZW1ldHJ5UHJvdmlkZXIuZm9yY2VGbHVzaCgpO1xuXG4gICAgICAgICRjdHgubG9nZ2VyLmluZm8oJ0Vycm9yIHNlbnQgdG8gdGVsZW1ldHJ5Jyk7XG5cbiAgICAgICAgLy8gUmUtdGhyb3cgcGFyYSBtYW50ZXIgbyBjb21wb3J0YW1lbnRvIG5vcm1hbCBkZSBlcnJvXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgfTtcbn1cbiJdfQ==
|
|
195
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLXRlbGVtZXRyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90c2VkL2xvZy10ZWxlbWV0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFpQkEsNENBdVBDO0FBNVBELHVDQUFpRDtBQUNqRCw0Q0FBd0Q7QUFDeEQsMkNBQXlDO0FBQ3pDLGtDQUE4QztBQUU5QyxTQUFnQixnQkFBZ0I7SUFDOUIsT0FBTyxVQUNMLE9BQVksRUFDWixZQUFvQixFQUNwQixVQUE4QjtRQUU5QixNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDO1FBQ3hDLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQztRQUVoQyxVQUFVLENBQUMsS0FBSyxHQUFHLFVBQTJCLEdBQUcsSUFBVzs7O2dCQUMxRCxNQUFNLFNBQVMsR0FBRyx3QkFBVyxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUdwQyxNQUFNLElBQUksR0FBc0IsSUFBSSxDQUFDLElBQUksQ0FDdkMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUEsR0FBRyxhQUFILEdBQUcsdUJBQUgsR0FBRyxDQUFFLE9BQU8sTUFBSSxHQUFHLGFBQUgsR0FBRyx1QkFBSCxHQUFHLENBQUUsUUFBUSxDQUFBLENBQ3ZDLENBQUM7Z0JBR0YsSUFBSSxjQUFjLEdBQUcsbUJBQW1CLENBQUM7Z0JBQ3pDLElBQUksQ0FBQSxNQUFBLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxXQUFXLDBDQUFFLElBQUksS0FBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztvQkFDbEUsY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO2dCQUN6QyxDQUFDO2dCQUVELElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDVixPQUFPLENBQUMsSUFBSSxDQUNWLG1FQUFtRSxDQUNwRSxDQUFDO29CQUNGLE9BQU8sTUFBTSxjQUFj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TyxDQUFDLEdBQUcsRUFDckIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQ3RCLFVBQVUsRUFBRSxjQUFjLEVBQzFCLGdCQUFnQixFQUFFLFVBQVUsSUFDNUIsQ0FBQztvQkFHSCxJQUFJLFVBQVUsRUFBRSxDQUFDO3dCQUNmLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztvQkFDbkIsQ0FBQztvQkFDRCxNQUFPLGdCQUF3QixDQUFDLGlCQUFpQixDQUFDLFVBQVUsRUFBRSxDQUFDO29CQUUvRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO29CQUc1QyxNQUFNLEtBQUssQ0FBQztnQkFDZCxDQUFDO1lBQ0gsQ0FBQztTQUFBLENBQUM7UUFFRixPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBEZWNvcmF0b3IgcXVlIGNhcHR1cmEgZXJyb3MgYXV0b21hdGljYW1lbnRlLCBjcmlhIHNwYW5zIGUgZW52aWEgcGFyYSB0ZWxlbWV0cmlhXG4gKiBBbGluaGFkbyBjb20gYSBpbXBsZW1lbnRhw6fDo28gZG8gU1NUIG1pZGRsZXdhcmUgcGFyYSBnYXJhbnRpciBjb25zaXN0w6puY2lhXG4gKlxuICogVXNvIG5vIGNvbnRyb2xsZXI6XG4gKlxuICogQFRzZWRMb2dUZWxlbWV0cnkoKVxuICogYXN5bmMgZ2V0Q2hlY2tvdXQoQENvbnRleHQoKSAkY3R4OiBTZXJ2ZXJsZXNzQ29udGV4dCwgLi4uKSB7XG4gKiAgIHJldHVybiBhd2FpdCB0aGlzLnNlcnZpY2UuZXhlY3V0ZShwYXJhbXMpO1xuICogfVxuICovXG5pbXBvcnQgeyBTZXJ2ZXJsZXNzQ29udGV4dCB9IGZyb20gJ0B0c2VkL3BsYXRmb3JtLXNlcnZlcmxlc3MnO1xuaW1wb3J0IHsgVHNlZFRlbGVtZXRyeVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2UnO1xuaW1wb3J0IHsgbWV0cmljcywgVmFsdWVUeXBlIH0gZnJvbSAnQG9wZW50ZWxlbWV0cnkvYXBpJztcbmltcG9ydCB7IHBlcmZvcm1hbmNlIH0gZnJvbSAncGVyZl9ob29rcyc7XG5pbXBvcnQgeyBnZXRFbnZpcm9ubWVudFN0YWdlIH0gZnJvbSAnLi4vY29yZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBUc2VkTG9nVGVsZW1ldHJ5KCkge1xuICByZXR1cm4gZnVuY3Rpb24gKFxuICAgIF90YXJnZXQ6IGFueSxcbiAgICBfcHJvcGVydHlLZXk6IHN0cmluZyxcbiAgICBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3JcbiAgKSB7XG4gICAgY29uc3Qgb3JpZ2luYWxNZXRob2QgPSBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBfcHJvcGVydHlLZXk7XG5cbiAgICBkZXNjcmlwdG9yLnZhbHVlID0gYXN5bmMgZnVuY3Rpb24gKHRoaXM6IGFueSwgLi4uYXJnczogYW55W10pIHtcbiAgICAgIGNvbnN0IHN0YXJ0VGltZSA9IHBlcmZvcm1hbmNlLm5vdygpO1xuXG4gICAgICAvLyBFbmNvbnRyYXIgbyBjb250ZXh0b1xuICAgICAgY29uc3QgJGN0eDogU2VydmVybGVzc0NvbnRleHQgPSBhcmdzLmZpbmQoXG4gICAgICAgIChhcmcpID0+IGFyZz8ucmVxdWVzdCAmJiBhcmc/LnJlc3BvbnNlXG4gICAgICApO1xuXG4gICAgICAvLyBDYXB0dXJhciBvIG5vbWUgZG8gY29udHJvbGxlclxuICAgICAgbGV0IGNvbnRyb2xsZXJOYW1lID0gJ1Vua25vd25Db250cm9sbGVyJztcbiAgICAgIGlmICh0aGlzPy5jb25zdHJ1Y3Rvcj8ubmFtZSAmJiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgIT09ICdPYmplY3QnKSB7XG4gICAgICAgIGNvbnRyb2xsZXJOYW1lID0gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lO1xuICAgICAgfVxuXG4gICAgICBpZiAoISRjdHgpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICdbVHNlZExvZ1RlbGVtZXRyeV0gQ29udGV4dCBub3QgZm91bmQsIGV4ZWN1dGluZyB3aXRob3V0IHRlbGVtZXRyeSdcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IG9yaWdpbmFsTWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgfVxuXG4gICAgICAvLyBCdXNjYXIgbyBUZWxlbWV0cnlTZXJ2aWNlIGRvIGluamVjdG9yXG4gICAgICBsZXQgdGVsZW1ldHJ5U2VydmljZTogVHNlZFRlbGVtZXRyeVNlcnZpY2UgfCB1bmRlZmluZWQ7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoJGN0eC5pbmplY3Rvcikge1xuICAgICAgICAgIHRlbGVtZXRyeVNlcnZpY2UgPSAkY3R4LmluamVjdG9yLmdldChcbiAgICAgICAgICAgIFRzZWRUZWxlbWV0cnlTZXJ2aWNlXG4gICAgICAgICAgKSBhcyBUc2VkVGVsZW1ldHJ5U2VydmljZTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgJGN0eC5sb2dnZXI/Lndhcm4oe1xuICAgICAgICAgICdUc2VkTG9nVGVsZW1ldHJ5IC0gRmFpbGVkIHRvIGdldCBUZWxlbWV0cnlTZXJ2aWNlIGZyb20gaW5qZWN0b3InOlxuICAgICAgICAgICAgZXJyb3IsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRlbGVtZXRyeVNlcnZpY2UpIHtcbiAgICAgICAgJGN0eC5sb2dnZXI/Lndhcm4oXG4gICAgICAgICAgJ1tUc2VkTG9nVGVsZW1ldHJ5XSBUZWxlbWV0cnlTZXJ2aWNlIG5vdCBhdmFpbGFibGUsIGV4ZWN1dGluZyB3aXRob3V0IHRlbGVtZXRyeSdcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IG9yaWdpbmFsTWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgfVxuXG4gICAgICAvLyBFeHRyYWlyIGluZm9ybWHDp8O1ZXMgYsOhc2ljYXNcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSAkY3R4LnJlcXVlc3Q7XG4gICAgICBjb25zdCBzZXJ2aWNlTmFtZSA9IHByb2Nlc3MuZW52LlNFUlZJQ0VfTkFNRSB8fCAndHNlZC1zZXJ2aWNlJztcbiAgICAgIGNvbnN0IHN0YWdlID0gZ2V0RW52aXJvbm1lbnRTdGFnZSgpO1xuXG4gICAgICBjb25zdCBxdWVyeVN0cmluZ1BhcmFtZXRlcnMgPSByZXF1ZXN0LnF1ZXJ5IHx8IHt9O1xuICAgICAgY29uc3Qgb3JpZ2luID0gcXVlcnlTdHJpbmdQYXJhbWV0ZXJzLm9yaWdpbiB8fCAnd2ViJztcblxuICAgICAgLy8gQ3JpYXIgc3BhbiB1c2FuZG8gU3RhbmRhcmRUcmFjZXIgKHNpbWlsYXIgYW8gU1NUIG1pZGRsZXdhcmUpXG4gICAgICBjb25zdCB0cmFjZXIgPSAodGVsZW1ldHJ5U2VydmljZSBhcyBhbnkpLmdldFRyYWNlcigpO1xuICAgICAgbGV0IHNwYW5SZXN1bHQ6IGFueSA9IG51bGw7XG5cbiAgICAgIGlmICh0cmFjZXIpIHtcbiAgICAgICAgc3BhblJlc3VsdCA9IHRyYWNlci5zdGFydFNwYW4oe1xuICAgICAgICAgIHNwYW5OYW1lOiBgJHtjb250cm9sbGVyTmFtZX0uJHttZXRob2ROYW1lfWAsXG4gICAgICAgICAgc2VydmljZU5hbWUsXG4gICAgICAgICAgZW52aXJvbm1lbnQ6IHN0YWdlLFxuICAgICAgICAgIGV4ZWN1dGlvbjoge1xuICAgICAgICAgICAgY29udHJvbGxlcjogY29udHJvbGxlck5hbWUsXG4gICAgICAgICAgICBjb250cm9sbGVyTWV0aG9kOiBtZXRob2ROYW1lLFxuICAgICAgICAgICAgcmVxdWVzdElkOiAkY3R4LmlkLFxuICAgICAgICAgICAgYXdzUmVxdWVzdElkOiAkY3R4LmNvbnRleHQ/LmF3c1JlcXVlc3RJZCxcbiAgICAgICAgICAgIG9yaWdpbixcbiAgICAgICAgICB9LFxuICAgICAgICAgIGh0dHA6IHtcbiAgICAgICAgICAgIG1ldGhvZDogcmVxdWVzdC5tZXRob2QsXG4gICAgICAgICAgICB1cmw6IHJlcXVlc3QudXJsLFxuICAgICAgICAgICAgZW5kcG9pbnQ6IHJlcXVlc3QudXJsLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICAvLyBDcmlhciBtw6l0cmljYXMgKHNpbWlsYXIgYW8gU1NUIG1pZGRsZXdhcmUpXG4gICAgICBjb25zdCBtZXRlciA9IG1ldHJpY3MuZ2V0TWV0ZXIob3JpZ2luKTtcbiAgICAgIGNvbnN0IGV4ZWN1dGlvblRpbWVIaXN0b2dyYW0gPSBtZXRlci5jcmVhdGVIaXN0b2dyYW0oXG4gICAgICAgICd0c2VkX2V4ZWN1dGlvbl9kdXJhdGlvbicsXG4gICAgICAgIHtcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ1RlbXBvIHRvdGFsIGRlIGV4ZWN1w6fDo28gZG8gbcOpdG9kbyBUc2VkIGVtIG1zJyxcbiAgICAgICAgICB1bml0OiAnbXMnLFxuICAgICAgICAgIHZhbHVlVHlwZTogVmFsdWVUeXBlLkRPVUJMRSxcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIGNvbnN0IHN1Y2Nlc3NDb3VudGVyID0gbWV0ZXIuY3JlYXRlQ291bnRlcigndHNlZF9zdWNjZXNzZnVsX3JlcXVlc3RzJywge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ1RvdGFsIGRlIHJlcXVpc2nDp8O1ZXMgYmVtLXN1Y2VkaWRhcycsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGZhaWx1cmVDb3VudGVyID0gbWV0ZXIuY3JlYXRlQ291bnRlcigndHNlZF9mYWlsZWRfcmVxdWVzdHMnLCB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVG90YWwgZGUgcmVxdWlzacOnw7VlcyBjb20gZmFsaGEnLFxuICAgICAgfSk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG9yaWdpbmFsTWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3MpO1xuXG4gICAgICAgIC8vIFNVQ0VTU08gLSBTaW1pbGFyIGFvICdhZnRlcicgZG8gU1NUIG1pZGRsZXdhcmVcbiAgICAgICAgY29uc3QgZHVyYXRpb25NcyA9IHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnRUaW1lO1xuXG4gICAgICAgIC8vIE1hcmNhciBzcGFuIGNvbW8gc3VjZXNzb1xuICAgICAgICBpZiAoc3BhblJlc3VsdCkge1xuICAgICAgICAgIHNwYW5SZXN1bHQuc2V0U3VjY2Vzcyh0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE3DqXRyaWNhcyBkZSBzdWNlc3NvXG4gICAgICAgIHN1Y2Nlc3NDb3VudGVyLmFkZCgxLCB7XG4gICAgICAgICAgb3JpZ2luLFxuICAgICAgICAgIGNvbnRyb2xsZXI6IGNvbnRyb2xsZXJOYW1lLFxuICAgICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgICAnc2VydmljZS5uYW1lJzogc2VydmljZU5hbWUsXG4gICAgICAgICAgJ2RlcGxveW1lbnQuZW52aXJvbm1lbnQubmFtZSc6IHN0YWdlLFxuICAgICAgICB9KTtcblxuICAgICAgICBleGVjdXRpb25UaW1lSGlzdG9ncmFtLnJlY29yZChkdXJhdGlvbk1zLCB7XG4gICAgICAgICAgb3JpZ2luLFxuICAgICAgICAgIHN0YXR1czogJ3N1Y2Nlc3MnLFxuICAgICAgICAgIGNvbnRyb2xsZXI6IGNvbnRyb2xsZXJOYW1lLFxuICAgICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgICAnc2VydmljZS5uYW1lJzogc2VydmljZU5hbWUsXG4gICAgICAgICAgJ2RlcGxveW1lbnQuZW52aXJvbm1lbnQubmFtZSc6IHN0YWdlLFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBMb2cgZGUgc3VjZXNzbyAoc2ltaWxhciBhbyBTU1QpXG4gICAgICAgIGNvbnN0IGxvZ2dlciA9ICh0ZWxlbWV0cnlTZXJ2aWNlIGFzIGFueSkuZ2V0TG9nZ2VyKCk7XG4gICAgICAgIGlmIChsb2dnZXIpIHtcbiAgICAgICAgICBhd2FpdCBsb2dnZXIubG9nSW5mbyh7XG4gICAgICAgICAgICBtZXNzYWdlOiAnUmVxdWVzdCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5JyxcbiAgICAgICAgICAgIHNlcnZpY2VOYW1lLFxuICAgICAgICAgICAgZW52aXJvbm1lbnQ6IHN0YWdlLFxuICAgICAgICAgICAgZXhlY3V0aW9uOiB7XG4gICAgICAgICAgICAgIGNvbnRyb2xsZXI6IGNvbnRyb2xsZXJOYW1lLFxuICAgICAgICAgICAgICBjb250cm9sbGVyTWV0aG9kOiBtZXRob2ROYW1lLFxuICAgICAgICAgICAgICByZXF1ZXN0SWQ6ICRjdHguaWQsXG4gICAgICAgICAgICAgIGF3c1JlcXVlc3RJZDogJGN0eC5jb250ZXh0Py5hd3NSZXF1ZXN0SWQsXG4gICAgICAgICAgICAgIG9yaWdpbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBodHRwOiB7XG4gICAgICAgICAgICAgIG1ldGhvZDogcmVxdWVzdC5tZXRob2QsXG4gICAgICAgICAgICAgIHVybDogcmVxdWVzdC51cmwsXG4gICAgICAgICAgICAgIGVuZHBvaW50OiByZXF1ZXN0LnVybCxcbiAgICAgICAgICAgICAgc3RhdHVzQ29kZTogJGN0eC5yZXNwb25zZT8uc3RhdHVzQ29kZSB8fCAyMDAsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGVyZm9ybWFuY2U6IHtcbiAgICAgICAgICAgICAgZHVyYXRpb25NcyxcbiAgICAgICAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGaW5hbGl6YXIgc3BhbiBlIGZvcmNlIGZsdXNoXG4gICAgICAgIGlmIChzcGFuUmVzdWx0KSB7XG4gICAgICAgICAgc3BhblJlc3VsdC5lbmQoKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCAodGVsZW1ldHJ5U2VydmljZSBhcyBhbnkpLnRlbGVtZXRyeVByb3ZpZGVyLmZvcmNlRmx1c2goKTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICAvLyBFUlJPIC0gU2ltaWxhciBhbyAnb25FcnJvcicgZG8gU1NUIG1pZGRsZXdhcmVcbiAgICAgICAgY29uc3QgZHVyYXRpb25NcyA9IHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnRUaW1lO1xuXG4gICAgICAgICRjdHgubG9nZ2VyPy5pbmZvKCdFcnJvciBjYXVnaHQsIHNlbmRpbmcgdG8gdGVsZW1ldHJ5Jyk7XG5cbiAgICAgICAgLy8gTWFyY2FyIHNwYW4gY29tbyBlcnJvXG4gICAgICAgIGlmIChzcGFuUmVzdWx0KSB7XG4gICAgICAgICAgc3BhblJlc3VsdC5zZXRFcnJvcihlcnJvcik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBNw6l0cmljYXMgZGUgZXJyb1xuICAgICAgICBmYWlsdXJlQ291bnRlci5hZGQoMSwge1xuICAgICAgICAgIG9yaWdpbixcbiAgICAgICAgICBlcnJvcl90eXBlOiBlcnJvcj8uY29uc3RydWN0b3I/Lm5hbWUgfHwgJ1Vua25vd25FcnJvcicsXG4gICAgICAgICAgY29udHJvbGxlcjogY29udHJvbGxlck5hbWUsXG4gICAgICAgICAgbWV0aG9kOiBtZXRob2ROYW1lLFxuICAgICAgICAgICdzZXJ2aWNlLm5hbWUnOiBzZXJ2aWNlTmFtZSxcbiAgICAgICAgICAnZGVwbG95bWVudC5lbnZpcm9ubWVudC5uYW1lJzogc3RhZ2UsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGV4ZWN1dGlvblRpbWVIaXN0b2dyYW0ucmVjb3JkKGR1cmF0aW9uTXMsIHtcbiAgICAgICAgICBvcmlnaW4sXG4gICAgICAgICAgc3RhdHVzOiAnZXJyb3InLFxuICAgICAgICAgIGNvbnRyb2xsZXI6IGNvbnRyb2xsZXJOYW1lLFxuICAgICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgICAnc2VydmljZS5uYW1lJzogc2VydmljZU5hbWUsXG4gICAgICAgICAgJ2RlcGxveW1lbnQuZW52aXJvbm1lbnQubmFtZSc6IHN0YWdlLFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBFeHRyYWlyIGluZm9ybWHDp8O1ZXMgZG8gdXN1w6FyaW9cbiAgICAgICAgbGV0IHVzZXJJbmZvOiBhbnkgPSB7fTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlIC0gTG9nZ2VkVXNlcklkZW50aWZpZXIgw6kgZXNwZWPDrWZpY28gZGEgYXBsaWNhw6fDo29cbiAgICAgICAgICBpZiAodHlwZW9mIExvZ2dlZFVzZXJJZGVudGlmaWVyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgY29uc3QgeyBsb2dnZWRVc2VyIH0gPSBMb2dnZWRVc2VySWRlbnRpZmllci51c2UoJGN0eCk7XG4gICAgICAgICAgICB1c2VySW5mbyA9IHtcbiAgICAgICAgICAgICAgYWNjb3VudFVzZXJVaWQ6IGxvZ2dlZFVzZXI/LnVpZCxcbiAgICAgICAgICAgICAgYWNjb3VudFVpZDogbG9nZ2VkVXNlcj8uYWNjb3VudD8udWlkLFxuICAgICAgICAgICAgICBhcHBsaWNhdGlvblVpZDogbG9nZ2VkVXNlcj8uYXBwbGljYXRpb24/LnVpZCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgLy8gTG9nZ2VkVXNlcklkZW50aWZpZXIgbsOjbyBlc3TDoSBkaXNwb27DrXZlbFxuICAgICAgICB9XG5cbiAgICAgICAgLy8gTG9nIGRlIGVycm8gKHNpbWlsYXIgYW8gU1NUKVxuICAgICAgICBhd2FpdCB0ZWxlbWV0cnlTZXJ2aWNlLmxvZ0Vycm9yKHtcbiAgICAgICAgICBlcnJvcjogZXJyb3IsXG4gICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgc3RhdHVzQ29kZTogZXJyb3Iuc3RhdHVzIHx8IDUwMCxcbiAgICAgICAgICAgIHVybDogcmVxdWVzdC51cmwsXG4gICAgICAgICAgICBoZWFkZXJzOiByZXF1ZXN0LmhlYWRlcnMsXG4gICAgICAgICAgICBib2R5OiByZXF1ZXN0LmJvZHksXG4gICAgICAgICAgICBwYXJhbXM6IHJlcXVlc3QucGFyYW1zLFxuICAgICAgICAgICAgcXVlcnk6IHJlcXVlc3QucXVlcnksXG4gICAgICAgICAgICBlcnJvclR5cGU6IGVycm9yPy5jb25zdHJ1Y3Rvcj8ubmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIC4uLnVzZXJJbmZvLFxuICAgICAgICAgIHJlcXVlc3RJZDogJGN0eC5pZCxcbiAgICAgICAgICBhd3NSZXF1ZXN0SWQ6ICRjdHguY29udGV4dD8uYXdzUmVxdWVzdElkLFxuICAgICAgICAgIGVuZHBvaW50OiByZXF1ZXN0LnVybCxcbiAgICAgICAgICBtZXRob2Q6IHJlcXVlc3QubWV0aG9kLFxuICAgICAgICAgIGNvbnRyb2xsZXI6IGNvbnRyb2xsZXJOYW1lLFxuICAgICAgICAgIGNvbnRyb2xsZXJNZXRob2Q6IG1ldGhvZE5hbWUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEZpbmFsaXphciBzcGFuIGUgZm9yY2UgZmx1c2hcbiAgICAgICAgaWYgKHNwYW5SZXN1bHQpIHtcbiAgICAgICAgICBzcGFuUmVzdWx0LmVuZCgpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0ICh0ZWxlbWV0cnlTZXJ2aWNlIGFzIGFueSkudGVsZW1ldHJ5UHJvdmlkZXIuZm9yY2VGbHVzaCgpO1xuXG4gICAgICAgICRjdHgubG9nZ2VyLmluZm8oJ0Vycm9yIHNlbnQgdG8gdGVsZW1ldHJ5Jyk7XG5cbiAgICAgICAgLy8gUmUtdGhyb3cgcGFyYSBtYW50ZXIgbyBjb21wb3J0YW1lbnRvIG5vcm1hbCBkZSBlcnJvXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgfTtcbn1cbiJdfQ==
|
package/dist/tsed/service.js
CHANGED
|
@@ -74,30 +74,12 @@ let TsedTelemetryService = class TsedTelemetryService {
|
|
|
74
74
|
return;
|
|
75
75
|
}
|
|
76
76
|
try {
|
|
77
|
-
|
|
78
|
-
if (stage === 'prod')
|
|
79
|
-
stage = 'production';
|
|
77
|
+
const stage = (0, core_1.getEnvironmentStage)();
|
|
80
78
|
(_a = this.$ctx) === null || _a === void 0 ? void 0 : _a.logger.info('[Telemetry] Logging error...');
|
|
81
79
|
yield logger.logError({
|
|
82
80
|
message: data.error.message,
|
|
83
81
|
error: data.error,
|
|
84
82
|
environment: stage,
|
|
85
|
-
http: {
|
|
86
|
-
endpoint: data.endpoint,
|
|
87
|
-
method: data.method,
|
|
88
|
-
statusCode: data.error.status || 500,
|
|
89
|
-
},
|
|
90
|
-
user: {
|
|
91
|
-
accountUserUid: data.accountUserUid,
|
|
92
|
-
accountUid: data.accountUid,
|
|
93
|
-
applicationUid: data.applicationUid,
|
|
94
|
-
},
|
|
95
|
-
execution: {
|
|
96
|
-
requestId: data.requestId,
|
|
97
|
-
awsRequestId: data.awsRequestId,
|
|
98
|
-
controller: data.controller,
|
|
99
|
-
controllerMethod: data.controllerMethod,
|
|
100
|
-
},
|
|
101
83
|
context: data.context,
|
|
102
84
|
});
|
|
103
85
|
(_b = this.$ctx) === null || _b === void 0 ? void 0 : _b.logger.info('[Telemetry] Forcing flush...');
|
|
@@ -145,4 +127,4 @@ exports.TsedTelemetryService = TsedTelemetryService = __decorate([
|
|
|
145
127
|
__param(0, (0, di_1.Inject)()),
|
|
146
128
|
__metadata("design:paramtypes", [config_1.TsedTelemetryProvider])
|
|
147
129
|
], TsedTelemetryService);
|
|
148
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90c2VkL3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaUNBQTZEO0FBQzdELG1FQUE4RDtBQUM5RCxxQ0FBaUQ7QUFDakQsa0NBQXlEO0FBQ3pELDRDQUEyQztBQWlCcEMsSUFBTSxvQkFBb0IsR0FBMUIsTUFBTSxvQkFBb0I7SUFLL0IsWUFFRSxpQkFBeUQ7UUFBeEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUF1QjtRQUxuRCxtQkFBYyxHQUEwQixJQUFJLENBQUM7UUFDN0MsbUJBQWMsR0FBMEIsSUFBSSxDQUFDO0lBS2xELENBQUM7SUFFSSxTQUFTOztRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQztZQUM1QyxNQUFBLElBQUksQ0FBQyxJQUFJLDBDQUFFLE1BQU0sQ0FBQyxJQUFJLENBQ3BCLHFEQUFxRCxDQUN0RCxDQUFDO1lBQ0YsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN6QixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNsRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3BCLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztZQUVELE1BQU0sVUFBVSxHQUFHLGNBQWMsQ0FBQyxTQUFTLENBQ3pDLHFCQUFxQixFQUNyQixPQUFPLENBQ1IsQ0FBQztZQUdGLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxxQkFBYyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFHLENBQUMsQ0FBQztRQUMxRSxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFFTyxTQUFTOztR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dCwgSW5qZWN0Q29udGV4dCB9IGZyb20gJ0B0c2VkL2RpJztcbmltcG9ydCB7IFNlcnZlcmxlc3NDb250ZXh0IH0gZnJvbSAnQHRzZWQvcGxhdGZvcm0tc2VydmVybGVzcyc7XG5pbXBvcnQgeyBUc2VkVGVsZW1ldHJ5UHJvdmlkZXIgfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyBTdGFuZGFyZExvZ2dlciwgU3RhbmRhcmRUcmFjZXIgfSBmcm9tICcuLi9jb3JlJztcbmltcG9ydCB7IHRyYWNlIH0gZnJvbSAnQG9wZW50ZWxlbWV0cnkvYXBpJztcblxuZXhwb3J0IGludGVyZmFjZSBFcnJvckxvZ0RhdGEge1xuICBlcnJvcjogRXJyb3I7XG4gIGNvbnRleHQ/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBhY2NvdW50VXNlclVpZD86IHN0cmluZztcbiAgYWNjb3VudFVpZD86IHN0cmluZztcbiAgcmVxdWVzdElkPzogc3RyaW5nO1xuICBlbmRwb2ludD86IHN0cmluZztcbiAgbWV0aG9kPzogc3RyaW5nO1xuICBjb250cm9sbGVyPzogc3RyaW5nO1xuICBjb250cm9sbGVyTWV0aG9kPzogc3RyaW5nO1xuICBhcHBsaWNhdGlvblVpZD86IHN0cmluZztcbiAgYXdzUmVxdWVzdElkPzogc3RyaW5nO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVHNlZFRlbGVtZXRyeVNlcnZpY2Uge1xuICBASW5qZWN0Q29udGV4dCgpIHByb3RlY3RlZCAkY3R4OiBTZXJ2ZXJsZXNzQ29udGV4dDtcbiAgcHJpdmF0ZSBzdGFuZGFyZExvZ2dlcjogU3RhbmRhcmRMb2dnZXIgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBzdGFuZGFyZFRyYWNlcjogU3RhbmRhcmRUcmFjZXIgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KClcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRlbGVtZXRyeVByb3ZpZGVyOiBUc2VkVGVsZW1ldHJ5UHJvdmlkZXJcbiAgKSB7fVxuXG4gIHByaXZhdGUgZ2V0TG9nZ2VyKCk6IFN0YW5kYXJkTG9nZ2VyIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLnRlbGVtZXRyeVByb3ZpZGVyLmlzSW5pdGlhbGl6ZWQoKSkge1xuICAgICAgdGhpcy4kY3R4Py5sb2dnZXIud2FybihcbiAgICAgICAgJ1tUZWxlbWV0cnldIFRlbGVtZXRyeSBub3QgaW5pdGlhbGl6ZWQsIHNraXBwaW5nIGxvZydcbiAgICAgICk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuc3RhbmRhcmRMb2dnZXIpIHtcbiAgICAgIGNvbnN0IGxvZ2dlclByb3ZpZGVyID0gdGhpcy50ZWxlbWV0cnlQcm92aWRlci5nZXRMb2dnZXJQcm92aWRlcigpO1xuICAgICAgaWYgKCFsb2dnZXJQcm92aWRlcikge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgb3RlbExvZ2dlciA9IGxvZ2dlclByb3ZpZGVyLmdldExvZ2dlcihcbiAgICAgICAgJ3RzZWQtc2VydmljZS1sb2dnZXInLFxuICAgICAgICAnMS4wLjAnXG4gICAgICApO1xuXG4gICAgICAvLyBQZWdhIG8gc2VydmljZSBuYW1lIGRvIGFtYmllbnRlIG91IHVzYSBkZWZhdWx0XG4gICAgICB0aGlzLnN0YW5kYXJkTG9nZ2VyID0gbmV3IFN0YW5kYXJkTG9nZ2VyKG90ZWxMb2dnZXIsIHRoaXMuZ2V0VHJhY2VyKCkhKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdGFuZGFyZExvZ2dlcjtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VHJhY2VyKCk6IFN0YW5kYXJkVHJhY2VyIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLnRlbGVtZXRyeVByb3ZpZGVyLmlzSW5pdGlhbGl6ZWQoKSkge1xuICAgICAgdGhpcy4kY3R4Py5sb2dnZXIud2FybihcbiAgICAgICAgJ1tUZWxlbWV0cnldIFRlbGVtZXRyeSBub3QgaW5pdGlhbGl6ZWQsIHNraXBwaW5nIHRyYWNlJ1xuICAgICAgKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5zdGFuZGFyZFRyYWNlcikge1xuICAgICAgY29uc3QgdHJhY2VyUHJvdmlkZXIgPSB0aGlzLnRlbGVtZXRyeVByb3ZpZGVyLmdldFRyYWNlclByb3ZpZGVyKCk7XG4gICAgICBpZiAoIXRyYWNlclByb3ZpZGVyKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzZXJ2aWNlTmFtZSA9IHByb2Nlc3MuZW52LlNFUlZJQ0VfTkFNRSB8fCAndHNlZC1zZXJ2aWNlJztcbiAgICAgIGNvbnN0IG90ZWxUcmFjZXIgPSB0cmFjZS5nZXRUcmFjZXIoc2VydmljZU5hbWUsICcxLjAuMCcpO1xuICAgICAgdGhpcy5zdGFuZGFyZFRyYWNlciA9IG5ldyBTdGFuZGFyZFRyYWNlcihvdGVsVHJhY2VyLCBzZXJ2aWNlTmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RhbmRhcmRUcmFjZXI7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbG9nRXJyb3IoZGF0YTogRXJyb3JMb2dEYXRhKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgbG9nZ2VyID0gdGhpcy5nZXRMb2dnZXIoKTtcbiAgICBpZiAoIWxvZ2dlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBsZXQgc3RhZ2UgPSBwcm9jZXNzLmVudi5TVEFHRSB8fCAnZGV2ZWxvcG1lbnQnO1xuICAgICAgaWYgKHN0YWdlID09PSAncHJvZCcpIHN0YWdlID0gJ3Byb2R1Y3Rpb24nO1xuXG4gICAgICB0aGlzLiRjdHg/LmxvZ2dlci5pbmZvKCdbVGVsZW1ldHJ5XSBMb2dnaW5nIGVycm9yLi4uJyk7XG5cbiAgICAgIGF3YWl0IGxvZ2dlci5sb2dFcnJvcih7XG4gICAgICAgIG1lc3NhZ2U6IGRhdGEuZXJyb3IubWVzc2FnZSxcbiAgICAgICAgZXJyb3I6IGRhdGEuZXJyb3IsXG4gICAgICAgIGVudmlyb25tZW50OiBzdGFnZSxcbiAgICAgICAgaHR0cDoge1xuICAgICAgICAgIGVuZHBvaW50OiBkYXRhLmVuZHBvaW50LFxuICAgICAgICAgIG1ldGhvZDogZGF0YS5tZXRob2QsXG4gICAgICAgICAgc3RhdHVzQ29kZTogKGRhdGEuZXJyb3IgYXMgYW55KS5zdGF0dXMgfHwgNTAwLFxuICAgICAgICB9LFxuICAgICAgICB1c2VyOiB7XG4gICAgICAgICAgYWNjb3VudFVzZXJVaWQ6IGRhdGEuYWNjb3VudFVzZXJVaWQsXG4gICAgICAgICAgYWNjb3VudFVpZDogZGF0YS5hY2NvdW50VWlkLFxuICAgICAgICAgIGFwcGxpY2F0aW9uVWlkOiBkYXRhLmFwcGxpY2F0aW9uVWlkLFxuICAgICAgICB9LFxuICAgICAgICBleGVjdXRpb246IHtcbiAgICAgICAgICByZXF1ZXN0SWQ6IGRhdGEucmVxdWVzdElkLFxuICAgICAgICAgIGF3c1JlcXVlc3RJZDogZGF0YS5hd3NSZXF1ZXN0SWQsXG4gICAgICAgICAgY29udHJvbGxlcjogZGF0YS5jb250cm9sbGVyLFxuICAgICAgICAgIGNvbnRyb2xsZXJNZXRob2Q6IGRhdGEuY29udHJvbGxlck1ldGhvZCxcbiAgICAgICAgfSxcbiAgICAgICAgY29udGV4dDogZGF0YS5jb250ZXh0LFxuICAgICAgfSk7XG5cbiAgICAgIC8vIENSSVRJQ0FMOiBGb3JjZSBmbHVzaCB0byBlbnN1cmUgbG9nIGlzIHNlbnQgYmVmb3JlIExhbWJkYSBmcmVlemVzXG4gICAgICB0aGlzLiRjdHg/LmxvZ2dlci5pbmZvKCdbVGVsZW1ldHJ5XSBGb3JjaW5nIGZsdXNoLi4uJyk7XG4gICAgICBjb25zdCBmbHVzaFN0YXJ0VGltZSA9IERhdGUubm93KCk7XG5cbiAgICAgIGF3YWl0IHRoaXMudGVsZW1ldHJ5UHJvdmlkZXIuZm9yY2VGbHVzaCgpO1xuXG4gICAgICBjb25zdCBmbHVzaER1cmF0aW9uID0gRGF0ZS5ub3coKSAtIGZsdXNoU3RhcnRUaW1lO1xuXG4gICAgICB0aGlzLiRjdHg/LmxvZ2dlci5pbmZvKHtcbiAgICAgICAgJ1RlbGVtZXRyeSAtIExvZyBzZW50IHN1Y2Nlc3NmdWxseSc6IHtcbiAgICAgICAgICBlcnJvclR5cGU6IGRhdGEuZXJyb3IubmFtZSxcbiAgICAgICAgICBtZXNzYWdlOiBkYXRhLmVycm9yLm1lc3NhZ2UsXG4gICAgICAgICAgZW5kcG9pbnQ6IGRhdGEuZW5kcG9pbnQsXG4gICAgICAgICAgY29udHJvbGxlcjogZGF0YS5jb250cm9sbGVyLFxuICAgICAgICAgIG1ldGhvZDogZGF0YS5jb250cm9sbGVyTWV0aG9kLFxuICAgICAgICAgIGZsdXNoRHVyYXRpb25NczogZmx1c2hEdXJhdGlvbixcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLiRjdHg/LmxvZ2dlci5lcnJvcih7XG4gICAgICAgICdUZWxlbWV0cnkgLSBDUklUSUNBTCBFUlJPUiAtIEZhaWxlZCB0byBsb2cgZXJyb3InOiB7XG4gICAgICAgICAgb3JpZ2luYWxFcnJvcjogZGF0YS5lcnJvci5tZXNzYWdlLFxuICAgICAgICAgIHRlbGVtZXRyeUVycm9yOlxuICAgICAgICAgICAgZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpLFxuICAgICAgICAgIHN0YWNrOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3Iuc3RhY2sgOiB1bmRlZmluZWQsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIC8vIERvbid0IHJlLXRocm93IHRvIGF2b2lkIGJyZWFraW5nIHRoZSBhcHBsaWNhdGlvbiBmbG93XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGxvZ0V4Y2VwdGlvbihcbiAgICBlcnJvcjogRXJyb3IsXG4gICAgY29udGV4dD86IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5sb2dFcnJvcih7XG4gICAgICBlcnJvcixcbiAgICAgIGNvbnRleHQsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90c2VkL3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaUNBQTZEO0FBQzdELG1FQUE4RDtBQUM5RCxxQ0FBaUQ7QUFDakQsa0NBQThFO0FBQzlFLDRDQUEyQztBQWlCcEMsSUFBTSxvQkFBb0IsR0FBMUIsTUFBTSxvQkFBb0I7SUFLL0IsWUFFRSxpQkFBeUQ7UUFBeEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUF1QjtRQUxuRCxtQkFBYyxHQUEwQixJQUFJLENBQUM7UUFDN0MsbUJBQWMsR0FBMEIsSUFBSSxDQUFDO0lBS2xELENBQUM7SUFFSSxTQUFTOztRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQztZQUM1QyxNQUFBLElBQUksQ0FBQyxJQUFJLDBDQUFFLE1BQU0sQ0FBQyxJQUFJLENBQ3BCLHFEQUFxRCxDQUN0RCxDQUFDO1lBQ0YsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN6QixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNsRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3BCLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztZQUVELE1BQU0sVUFBVSxHQUFHLGNBQWMsQ0FBQyxTQUFTLENBQ3pDLHFCQUFxQixFQUNyQixPQUFPLENBQ1IsQ0FBQztZQUdGLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxxQkFBYyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFHLENBQUMsQ0FBQztRQUMxRSxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFFTyxTQUFTOztR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QUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVM7cUJBQ3hEO2lCQUNGLENBQUMsQ0FBQztZQUVMLENBQUM7UUFDSCxDQUFDO0tBQUE7SUFFWSxZQUFZLENBQ3ZCLEtBQVksRUFDWixPQUE2Qjs7WUFFN0IsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDO2dCQUNsQixLQUFLO2dCQUNMLE9BQU87YUFDUixDQUFDLENBQUM7UUFDTCxDQUFDO0tBQUE7Q0FDRixDQUFBO0FBcEhZLG9EQUFvQjtBQUNKO0lBQTFCLElBQUEsa0JBQWEsR0FBRTs4QkFBaUIsdUNBQWlCO2tEQUFDOytCQUR4QyxvQkFBb0I7SUFEaEMsSUFBQSxlQUFVLEdBQUU7SUFPUixXQUFBLElBQUEsV0FBTSxHQUFFLENBQUE7cUNBQzJCLDhCQUFxQjtHQVBoRCxvQkFBb0IsQ0FvSGhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0LCBJbmplY3RDb250ZXh0IH0gZnJvbSAnQHRzZWQvZGknO1xuaW1wb3J0IHsgU2VydmVybGVzc0NvbnRleHQgfSBmcm9tICdAdHNlZC9wbGF0Zm9ybS1zZXJ2ZXJsZXNzJztcbmltcG9ydCB7IFRzZWRUZWxlbWV0cnlQcm92aWRlciB9IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7IGdldEVudmlyb25tZW50U3RhZ2UsIFN0YW5kYXJkTG9nZ2VyLCBTdGFuZGFyZFRyYWNlciB9IGZyb20gJy4uL2NvcmUnO1xuaW1wb3J0IHsgdHJhY2UgfSBmcm9tICdAb3BlbnRlbGVtZXRyeS9hcGknO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVycm9yTG9nRGF0YSB7XG4gIGVycm9yOiBFcnJvcjtcbiAgY29udGV4dD86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIGFjY291bnRVc2VyVWlkPzogc3RyaW5nO1xuICBhY2NvdW50VWlkPzogc3RyaW5nO1xuICByZXF1ZXN0SWQ/OiBzdHJpbmc7XG4gIGVuZHBvaW50Pzogc3RyaW5nO1xuICBtZXRob2Q/OiBzdHJpbmc7XG4gIGNvbnRyb2xsZXI/OiBzdHJpbmc7XG4gIGNvbnRyb2xsZXJNZXRob2Q/OiBzdHJpbmc7XG4gIGFwcGxpY2F0aW9uVWlkPzogc3RyaW5nO1xuICBhd3NSZXF1ZXN0SWQ/OiBzdHJpbmc7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUc2VkVGVsZW1ldHJ5U2VydmljZSB7XG4gIEBJbmplY3RDb250ZXh0KCkgcHJvdGVjdGVkICRjdHg6IFNlcnZlcmxlc3NDb250ZXh0O1xuICBwcml2YXRlIHN0YW5kYXJkTG9nZ2VyOiBTdGFuZGFyZExvZ2dlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHN0YW5kYXJkVHJhY2VyOiBTdGFuZGFyZFRyYWNlciB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGVsZW1ldHJ5UHJvdmlkZXI6IFRzZWRUZWxlbWV0cnlQcm92aWRlclxuICApIHt9XG5cbiAgcHJpdmF0ZSBnZXRMb2dnZXIoKTogU3RhbmRhcmRMb2dnZXIgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMudGVsZW1ldHJ5UHJvdmlkZXIuaXNJbml0aWFsaXplZCgpKSB7XG4gICAgICB0aGlzLiRjdHg/LmxvZ2dlci53YXJuKFxuICAgICAgICAnW1RlbGVtZXRyeV0gVGVsZW1ldHJ5IG5vdCBpbml0aWFsaXplZCwgc2tpcHBpbmcgbG9nJ1xuICAgICAgKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5zdGFuZGFyZExvZ2dlcikge1xuICAgICAgY29uc3QgbG9nZ2VyUHJvdmlkZXIgPSB0aGlzLnRlbGVtZXRyeVByb3ZpZGVyLmdldExvZ2dlclByb3ZpZGVyKCk7XG4gICAgICBpZiAoIWxvZ2dlclByb3ZpZGVyKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBvdGVsTG9nZ2VyID0gbG9nZ2VyUHJvdmlkZXIuZ2V0TG9nZ2VyKFxuICAgICAgICAndHNlZC1zZXJ2aWNlLWxvZ2dlcicsXG4gICAgICAgICcxLjAuMCdcbiAgICAgICk7XG5cbiAgICAgIC8vIFBlZ2EgbyBzZXJ2aWNlIG5hbWUgZG8gYW1iaWVudGUgb3UgdXNhIGRlZmF1bHRcbiAgICAgIHRoaXMuc3RhbmRhcmRMb2dnZXIgPSBuZXcgU3RhbmRhcmRMb2dnZXIob3RlbExvZ2dlciwgdGhpcy5nZXRUcmFjZXIoKSEpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0YW5kYXJkTG9nZ2VyO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUcmFjZXIoKTogU3RhbmRhcmRUcmFjZXIgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMudGVsZW1ldHJ5UHJvdmlkZXIuaXNJbml0aWFsaXplZCgpKSB7XG4gICAgICB0aGlzLiRjdHg/LmxvZ2dlci53YXJuKFxuICAgICAgICAnW1RlbGVtZXRyeV0gVGVsZW1ldHJ5IG5vdCBpbml0aWFsaXplZCwgc2tpcHBpbmcgdHJhY2UnXG4gICAgICApO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnN0YW5kYXJkVHJhY2VyKSB7XG4gICAgICBjb25zdCB0cmFjZXJQcm92aWRlciA9IHRoaXMudGVsZW1ldHJ5UHJvdmlkZXIuZ2V0VHJhY2VyUHJvdmlkZXIoKTtcbiAgICAgIGlmICghdHJhY2VyUHJvdmlkZXIpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNlcnZpY2VOYW1lID0gcHJvY2Vzcy5lbnYuU0VSVklDRV9OQU1FIHx8ICd0c2VkLXNlcnZpY2UnO1xuICAgICAgY29uc3Qgb3RlbFRyYWNlciA9IHRyYWNlLmdldFRyYWNlcihzZXJ2aWNlTmFtZSwgJzEuMC4wJyk7XG4gICAgICB0aGlzLnN0YW5kYXJkVHJhY2VyID0gbmV3IFN0YW5kYXJkVHJhY2VyKG90ZWxUcmFjZXIsIHNlcnZpY2VOYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdGFuZGFyZFRyYWNlcjtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsb2dFcnJvcihkYXRhOiBFcnJvckxvZ0RhdGEpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBsb2dnZXIgPSB0aGlzLmdldExvZ2dlcigpO1xuICAgIGlmICghbG9nZ2VyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0YWdlID0gZ2V0RW52aXJvbm1lbnRTdGFnZSgpO1xuXG4gICAgICB0aGlzLiRjdHg/LmxvZ2dlci5pbmZvKCdbVGVsZW1ldHJ5XSBMb2dnaW5nIGVycm9yLi4uJyk7XG5cbiAgICAgIGF3YWl0IGxvZ2dlci5sb2dFcnJvcih7XG4gICAgICAgIG1lc3NhZ2U6IGRhdGEuZXJyb3IubWVzc2FnZSxcbiAgICAgICAgZXJyb3I6IGRhdGEuZXJyb3IsXG4gICAgICAgIGVudmlyb25tZW50OiBzdGFnZSxcbiAgICAgICAgY29udGV4dDogZGF0YS5jb250ZXh0LFxuICAgICAgfSk7XG5cbiAgICAgIC8vIENSSVRJQ0FMOiBGb3JjZSBmbHVzaCB0byBlbnN1cmUgbG9nIGlzIHNlbnQgYmVmb3JlIExhbWJkYSBmcmVlemVzXG4gICAgICB0aGlzLiRjdHg/LmxvZ2dlci5pbmZvKCdbVGVsZW1ldHJ5XSBGb3JjaW5nIGZsdXNoLi4uJyk7XG4gICAgICBjb25zdCBmbHVzaFN0YXJ0VGltZSA9IERhdGUubm93KCk7XG5cbiAgICAgIGF3YWl0IHRoaXMudGVsZW1ldHJ5UHJvdmlkZXIuZm9yY2VGbHVzaCgpO1xuXG4gICAgICBjb25zdCBmbHVzaER1cmF0aW9uID0gRGF0ZS5ub3coKSAtIGZsdXNoU3RhcnRUaW1lO1xuXG4gICAgICB0aGlzLiRjdHg/LmxvZ2dlci5pbmZvKHtcbiAgICAgICAgJ1RlbGVtZXRyeSAtIExvZyBzZW50IHN1Y2Nlc3NmdWxseSc6IHtcbiAgICAgICAgICBlcnJvclR5cGU6IGRhdGEuZXJyb3IubmFtZSxcbiAgICAgICAgICBtZXNzYWdlOiBkYXRhLmVycm9yLm1lc3NhZ2UsXG4gICAgICAgICAgZW5kcG9pbnQ6IGRhdGEuZW5kcG9pbnQsXG4gICAgICAgICAgY29udHJvbGxlcjogZGF0YS5jb250cm9sbGVyLFxuICAgICAgICAgIG1ldGhvZDogZGF0YS5jb250cm9sbGVyTWV0aG9kLFxuICAgICAgICAgIGZsdXNoRHVyYXRpb25NczogZmx1c2hEdXJhdGlvbixcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLiRjdHg/LmxvZ2dlci5lcnJvcih7XG4gICAgICAgICdUZWxlbWV0cnkgLSBDUklUSUNBTCBFUlJPUiAtIEZhaWxlZCB0byBsb2cgZXJyb3InOiB7XG4gICAgICAgICAgb3JpZ2luYWxFcnJvcjogZGF0YS5lcnJvci5tZXNzYWdlLFxuICAgICAgICAgIHRlbGVtZXRyeUVycm9yOlxuICAgICAgICAgICAgZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpLFxuICAgICAgICAgIHN0YWNrOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3Iuc3RhY2sgOiB1bmRlZmluZWQsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIC8vIERvbid0IHJlLXRocm93IHRvIGF2b2lkIGJyZWFraW5nIHRoZSBhcHBsaWNhdGlvbiBmbG93XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGxvZ0V4Y2VwdGlvbihcbiAgICBlcnJvcjogRXJyb3IsXG4gICAgY29udGV4dD86IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5sb2dFcnJvcih7XG4gICAgICBlcnJvcixcbiAgICAgIGNvbnRleHQsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|