@thinkhive/sdk 4.0.1 → 4.2.0
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 +364 -208
- package/dist/api/claims.js +2 -3
- package/dist/api/documents.d.ts +52 -0
- package/dist/api/documents.js +58 -0
- package/dist/api/drift.d.ts +70 -0
- package/dist/api/drift.js +71 -0
- package/dist/api/eval-runs.d.ts +126 -0
- package/dist/api/eval-runs.js +126 -0
- package/dist/api/llm-costs.d.ts +104 -0
- package/dist/api/llm-costs.js +81 -0
- package/dist/api/notifications.d.ts +103 -0
- package/dist/api/notifications.js +110 -0
- package/dist/api/roi-analytics.d.ts +99 -0
- package/dist/api/roi-analytics.js +64 -1
- package/dist/api/sessions.d.ts +57 -0
- package/dist/api/sessions.js +49 -0
- package/dist/api/shadow-tests.d.ts +78 -0
- package/dist/api/shadow-tests.js +80 -0
- package/dist/api/signals.d.ts +177 -0
- package/dist/api/signals.js +172 -0
- package/dist/core/client.d.ts +2 -0
- package/dist/core/client.js +10 -4
- package/dist/core/config.d.ts +1 -1
- package/dist/core/config.js +2 -2
- package/dist/guardrails.d.ts +70 -0
- package/dist/guardrails.js +34 -0
- package/dist/index.d.ts +209 -18
- package/dist/index.js +55 -7
- package/dist/integrations/ticket-linking.d.ts +23 -17
- package/dist/integrations/ticket-linking.js +95 -12
- package/package.json +1 -1
|
@@ -95,6 +95,49 @@ exports.LINK_METHOD_CONFIDENCE = {
|
|
|
95
95
|
email_time_window: 0.6, // Email + 15min window (lowest confidence)
|
|
96
96
|
manual: 1.0, // Human-assigned
|
|
97
97
|
};
|
|
98
|
+
/**
|
|
99
|
+
* Transform V3 evidence ({ type, data }) into SDK LinkEvidence shape ({ method, confidence, timestamp, details })
|
|
100
|
+
*/
|
|
101
|
+
function normalizeEvidence(raw, method, confidence, createdAt) {
|
|
102
|
+
// V3 API returns evidence as { type: string, data: Record<string, unknown> }
|
|
103
|
+
const v3Evidence = raw;
|
|
104
|
+
const data = v3Evidence?.data ?? {};
|
|
105
|
+
return {
|
|
106
|
+
method,
|
|
107
|
+
confidence,
|
|
108
|
+
timestamp: data.callTimestamp ?? data.verifiedAt ?? createdAt,
|
|
109
|
+
details: {
|
|
110
|
+
runId: data.runId,
|
|
111
|
+
ticketId: data.ticketId,
|
|
112
|
+
externalTicketId: data.externalTicketId,
|
|
113
|
+
platform: data.platform,
|
|
114
|
+
sessionId: data.sessionId,
|
|
115
|
+
email: (data.customerEmail ?? data.email),
|
|
116
|
+
timeWindowMinutes: data.timeWindowSeconds != null ? Number(data.timeWindowSeconds) / 60 : undefined,
|
|
117
|
+
customFieldName: data.fieldName,
|
|
118
|
+
customFieldValue: data.fieldValue,
|
|
119
|
+
},
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Normalize a raw v3 link into the SDK's LinkResponse shape
|
|
124
|
+
*/
|
|
125
|
+
function normalizeLink(raw) {
|
|
126
|
+
const method = raw.linkMethod;
|
|
127
|
+
const parsedConfidence = typeof raw.confidence === 'string' ? Number(raw.confidence) : raw.confidence;
|
|
128
|
+
const confidence = Number.isFinite(parsedConfidence) ? parsedConfidence : (exports.LINK_METHOD_CONFIDENCE[method] ?? 0);
|
|
129
|
+
return {
|
|
130
|
+
id: raw.id,
|
|
131
|
+
runId: (raw.runId ?? raw.traceId ?? ''),
|
|
132
|
+
ticketId: raw.ticketId ?? undefined,
|
|
133
|
+
externalTicketId: raw.ticketExternalId ?? undefined,
|
|
134
|
+
platform: raw.ticketExternalSource ?? undefined,
|
|
135
|
+
method,
|
|
136
|
+
confidence,
|
|
137
|
+
evidence: normalizeEvidence(raw.evidence, method, confidence, raw.createdAt),
|
|
138
|
+
createdAt: raw.createdAt,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
98
141
|
/**
|
|
99
142
|
* Linking API client
|
|
100
143
|
*/
|
|
@@ -121,13 +164,34 @@ exports.linking = {
|
|
|
121
164
|
* ```
|
|
122
165
|
*/
|
|
123
166
|
async create(input) {
|
|
124
|
-
|
|
167
|
+
// Build method-specific evidence data
|
|
168
|
+
const baseEvidence = {
|
|
169
|
+
...input.evidence,
|
|
170
|
+
sdkVersion: '4.0.0',
|
|
171
|
+
callTimestamp: new Date().toISOString(),
|
|
172
|
+
};
|
|
173
|
+
// For sdk_explicit, add ticketIdSource (required by SdkExplicitEvidenceSchema)
|
|
174
|
+
const evidenceData = input.method === 'sdk_explicit'
|
|
175
|
+
? { ...baseEvidence, ticketIdSource: 'sdk_parameter' }
|
|
176
|
+
: baseEvidence;
|
|
177
|
+
const raw = await (0, client_1.apiRequestWithData)('/links', {
|
|
125
178
|
method: 'POST',
|
|
179
|
+
apiVersion: 'v3',
|
|
126
180
|
body: {
|
|
127
|
-
|
|
181
|
+
traceId: input.runId, // V3 maps run to trace
|
|
182
|
+
runId: input.runId,
|
|
183
|
+
ticketId: input.ticketId,
|
|
184
|
+
ticketExternalId: input.externalTicketId,
|
|
185
|
+
ticketExternalSource: input.platform,
|
|
186
|
+
linkMethod: input.method,
|
|
128
187
|
confidence: exports.LINK_METHOD_CONFIDENCE[input.method],
|
|
188
|
+
evidence: {
|
|
189
|
+
type: input.method,
|
|
190
|
+
data: evidenceData,
|
|
191
|
+
},
|
|
129
192
|
},
|
|
130
193
|
});
|
|
194
|
+
return normalizeLink(raw);
|
|
131
195
|
},
|
|
132
196
|
/**
|
|
133
197
|
* Get links for a run
|
|
@@ -138,7 +202,9 @@ exports.linking = {
|
|
|
138
202
|
* ```
|
|
139
203
|
*/
|
|
140
204
|
async getForRun(runId) {
|
|
141
|
-
|
|
205
|
+
const params = new URLSearchParams({ runId });
|
|
206
|
+
const result = await (0, client_1.apiRequestWithData)(`/links?${params}`, { apiVersion: 'v3' });
|
|
207
|
+
return (result.links || []).map(normalizeLink);
|
|
142
208
|
},
|
|
143
209
|
/**
|
|
144
210
|
* Get links for a ticket
|
|
@@ -149,7 +215,9 @@ exports.linking = {
|
|
|
149
215
|
* ```
|
|
150
216
|
*/
|
|
151
217
|
async getForTicket(ticketId) {
|
|
152
|
-
|
|
218
|
+
const params = new URLSearchParams({ ticketId });
|
|
219
|
+
const result = await (0, client_1.apiRequestWithData)(`/links?${params}`, { apiVersion: 'v3' });
|
|
220
|
+
return (result.links || []).map(normalizeLink);
|
|
153
221
|
},
|
|
154
222
|
/**
|
|
155
223
|
* Verify a link (confirm or reject)
|
|
@@ -163,10 +231,12 @@ exports.linking = {
|
|
|
163
231
|
* ```
|
|
164
232
|
*/
|
|
165
233
|
async verify(linkId, options) {
|
|
166
|
-
|
|
234
|
+
const raw = await (0, client_1.apiRequestWithData)(`/links/${linkId}/verify`, {
|
|
167
235
|
method: 'POST',
|
|
168
|
-
|
|
236
|
+
apiVersion: 'v3',
|
|
237
|
+
body: { linkId, ...options },
|
|
169
238
|
});
|
|
239
|
+
return normalizeLink(raw);
|
|
170
240
|
},
|
|
171
241
|
/**
|
|
172
242
|
* Delete a link
|
|
@@ -177,22 +247,35 @@ exports.linking = {
|
|
|
177
247
|
* ```
|
|
178
248
|
*/
|
|
179
249
|
async delete(linkId) {
|
|
180
|
-
await (0, client_1.apiRequest)(`/links/${linkId}`, { method: 'DELETE' });
|
|
250
|
+
await (0, client_1.apiRequest)(`/links/${linkId}`, { method: 'DELETE', apiVersion: 'v3' });
|
|
181
251
|
},
|
|
182
252
|
/**
|
|
183
|
-
* Auto-link
|
|
253
|
+
* Auto-link a run to a ticket based on available evidence
|
|
184
254
|
*
|
|
185
255
|
* @example
|
|
186
256
|
* ```typescript
|
|
187
|
-
* const
|
|
188
|
-
*
|
|
257
|
+
* const link = await linking.autoLink('run_abc123');
|
|
258
|
+
* if (link) {
|
|
189
259
|
* console.log(`Linked to ${link.ticketId} via ${link.method}`);
|
|
190
260
|
* }
|
|
191
261
|
* ```
|
|
192
262
|
*/
|
|
193
263
|
async autoLink(runId) {
|
|
194
|
-
|
|
264
|
+
const raw = await (0, client_1.apiRequestWithData)(`/links/auto`, {
|
|
265
|
+
method: 'POST',
|
|
266
|
+
apiVersion: 'v3',
|
|
267
|
+
body: { traceId: runId, hints: {} },
|
|
268
|
+
});
|
|
269
|
+
return raw ? normalizeLink(raw) : null;
|
|
270
|
+
},
|
|
271
|
+
async stats() {
|
|
272
|
+
return (0, client_1.apiRequestWithData)('/links/stats', { apiVersion: 'v3' });
|
|
273
|
+
},
|
|
274
|
+
async generateMarker(options) {
|
|
275
|
+
return (0, client_1.apiRequestWithData)('/links/zendesk-marker', {
|
|
195
276
|
method: 'POST',
|
|
277
|
+
apiVersion: 'v3',
|
|
278
|
+
body: options,
|
|
196
279
|
});
|
|
197
280
|
},
|
|
198
281
|
};
|
|
@@ -256,4 +339,4 @@ function getConfidenceLevel(confidence) {
|
|
|
256
339
|
return 'medium';
|
|
257
340
|
return 'low';
|
|
258
341
|
}
|
|
259
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlja2V0LWxpbmtpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZWdyYXRpb25zL3RpY2tldC1saW5raW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7R0FLRzs7O0FBOEJILHNEQUtDO0FBWUQsZ0RBR0M7QUFLRCw0Q0FFQztBQVlELGtEQUVDO0FBcU1ELDBDQVNDO0FBS0Qsd0RBVUM7QUFLRCw4Q0FpQkM7QUFLRCxvREFFQztBQUtELGdEQU9DO0FBM1VELDJDQUFnRTtBQUdoRSwrRUFBK0U7QUFDL0UsaUJBQWlCO0FBQ2pCLCtFQUErRTtBQUUvRTs7O0dBR0c7QUFDSCxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUM7QUFDL0IsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDO0FBQzFCLE1BQU0sWUFBWSxHQUFHLDJCQUEyQixDQUFDO0FBRWpEOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILFNBQWdCLHFCQUFxQixDQUFDLEtBQWE7SUFDakQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFDRCxPQUFPLEdBQUcsYUFBYSxHQUFHLEtBQUssR0FBRyxhQUFhLEVBQUUsQ0FBQztBQUNwRCxDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBZ0Isa0JBQWtCLENBQUMsSUFBWTtJQUM3QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3ZDLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNqQyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixnQkFBZ0IsQ0FBQyxJQUFZO0lBQzNDLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqQyxDQUFDO0FBRUQ7Ozs7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Q0FDL0IsU0FPQztJQUVELElBQUksU0FBUyxDQUFDLFdBQVc7UUFBRSxPQUFPLGNBQWMsQ0FBQztJQUNqRCxJQUFJLFNBQVMsQ0FBQyxTQUFTO1FBQUUsT0FBTyxnQkFBZ0IsQ0FBQztJQUNqRCxJQUFJLFNBQVMsQ0FBQyxjQUFjO1FBQUUsT0FBTyxjQUFjLENBQUM7SUFDcEQsSUFBSSxTQUFTLENBQUMsa0JBQWtCO1FBQUUsT0FBTyxrQkFBa0IsQ0FBQztJQUM1RCxJQUFJLFNBQVMsQ0FBQyxZQUFZO1FBQUUsT0FBTyxlQUFlLENBQUM7SUFDbkQsSUFBSSxTQUFTLENBQUMsUUFBUTtRQUFFLE9BQU8sbUJBQW1CLENBQUM7SUFDbkQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixvQkFBb0IsQ0FBQyxVQUFrQjtJQUNyRCxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQztBQUM1QyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixrQkFBa0IsQ0FDaEMsVUFBa0I7SUFFbEIsSUFBSSxVQUFVLElBQUksR0FBRztRQUFFLE9BQU8sWUFBWSxDQUFDO0lBQzNDLElBQUksVUFBVSxJQUFJLElBQUk7UUFBRSxPQUFPLE1BQU0sQ0FBQztJQUN0QyxJQUFJLFVBQVUsSUFBSSxHQUFHO1FBQUUsT0FBTyxRQUFRLENBQUM7SUFDdkMsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlua0hpdmUgU0RLIHYzLjAgLSBUaWNrZXQgTGlua2luZ1xuICpcbiAqIERldGVybWluaXN0aWMgbGlua2luZyBiZXR3ZWVuIHJ1bnMgYW5kIHN1cHBvcnQgdGlja2V0c1xuICogNyBsaW5rIG1ldGhvZHMgd2l0aCBleHBsaWNpdCBjb25maWRlbmNlIHNjb3Jlc1xuICovXG5cbmltcG9ydCB7IGFwaVJlcXVlc3QsIGFwaVJlcXVlc3RXaXRoRGF0YSB9IGZyb20gJy4uL2NvcmUvY2xpZW50JztcbmltcG9ydCB0eXBlIHsgTGlua01ldGhvZCB9IGZyb20gJy4uL2NvcmUvdHlwZXMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBaRU5ERVNLIE1BUktFUlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFplbmRlc2sgbWFya2VyIGZvcm1hdDogW1RISUQ6cnVuX3h4eF1cbiAqIEVtYmVkZGVkIGluIGFnZW50IHJlc3BvbnNlcyBmb3IgZGV0ZXJtaW5pc3RpYyBsaW5raW5nXG4gKi9cbmNvbnN0IE1BUktFUl9QUkVGSVggPSAnW1RISUQ6JztcbmNvbnN0IE1BUktFUl9TVUZGSVggPSAnXSc7XG5jb25zdCBNQVJLRVJfUkVHRVggPSAvXFxbVEhJRDooW2EtekEtWjAtOV8tXSspXFxdLztcblxuLyoqXG4gKiBHZW5lcmF0ZSBhIFplbmRlc2sgbWFya2VyIHRvIGVtYmVkIGluIGFnZW50IHJlc3BvbnNlc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBydW5JZCA9ICdydW5fYWJjMTIzJztcbiAqIGNvbnN0IG1hcmtlciA9IGdlbmVyYXRlWmVuZGVza01hcmtlcihydW5JZCk7XG4gKiAvLyBSZXR1cm5zOiAnW1RISUQ6cnVuX2FiYzEyM10nXG4gKlxuICogLy8gQXBwZW5kIHRvIHlvdXIgYWdlbnQgcmVzcG9uc2U6XG4gKiBjb25zdCByZXNwb25zZSA9IGBJJ3ZlIGZvdW5kIHlvdXIgb3JkZXIuICR7bWFya2VyfWA7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlWmVuZGVza01hcmtlcihydW5JZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKCFydW5JZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignUnVuIElEIGlzIHJlcXVpcmVkIHRvIGdlbmVyYXRlIFplbmRlc2sgbWFya2VyJyk7XG4gIH1cbiAgcmV0dXJuIGAke01BUktFUl9QUkVGSVh9JHtydW5JZH0ke01BUktFUl9TVUZGSVh9YDtcbn1cblxuLyoqXG4gKiBQYXJzZSBhIFplbmRlc2sgbWFya2VyIGZyb20gdGV4dFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCB0ZXh0ID0gJ1RoYW5rIHlvdSBmb3IgY29udGFjdGluZyB1cy4gW1RISUQ6cnVuX2FiYzEyM10nO1xuICogY29uc3QgcnVuSWQgPSBwYXJzZVplbmRlc2tNYXJrZXIodGV4dCk7XG4gKiAvLyBSZXR1cm5zOiAncnVuX2FiYzEyMydcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VaZW5kZXNrTWFya2VyKHRleHQ6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICBjb25zdCBtYXRjaCA9IHRleHQubWF0Y2goTUFSS0VSX1JFR0VYKTtcbiAgcmV0dXJuIG1hdGNoID8gbWF0Y2hbMV0gOiBudWxsO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHRleHQgY29udGFpbnMgYSBaZW5kZXNrIG1hcmtlclxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzWmVuZGVza01hcmtlcih0ZXh0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIE1BUktFUl9SRUdFWC50ZXN0KHRleHQpO1xufVxuXG4vKipcbiAqIFJlbW92ZSBaZW5kZXNrIG1hcmtlciBmcm9tIHRleHQgKGZvciBjbGVhbiBkaXNwbGF5KVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCB0ZXh0ID0gJ1RoYW5rIHlvdSEgW1RISUQ6cnVuX2FiYzEyM10nO1xuICogY29uc3QgY2xlYW4gPSByZW1vdmVaZW5kZXNrTWFya2VyKHRleHQpO1xuICogLy8gUmV0dXJuczogJ1RoYW5rIHlvdSEnXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVplbmRlc2tNYXJrZXIodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHRleHQucmVwbGFjZShNQVJLRVJfUkVHRVgsICcnKS50cmltKCk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIExJTksgTUVUSE9EUyAmIENPTkZJREVOQ0Vcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDb25maWRlbmNlIHNjb3JlcyBmb3IgZWFjaCBsaW5rIG1ldGhvZFxuICogQmFzZWQgb24gZGV0ZXJtaW5pc3RpYyBsaW5raW5nIHByaW5jaXBsZXMgZnJvbSB2MyBzcGVjXG4gKi9cbmV4cG9ydCBjb25zdCBMSU5LX01FVEhPRF9DT05GSURFTkNFOiBSZWNvcmQ8TGlua01ldGhvZCwgbnVtYmVyPiA9IHtcbiAgc2RrX2V4cGxpY2l0OiAxLjAsICAgICAgLy8gRGlyZWN0IFNESyBjYWxsIHdpdGggdGlja2V0IElEXG4gIHplbmRlc2tfbWFya2VyOiAxLjAsICAgIC8vIEVtYmVkZGVkIFRISUQgbWFya2VyIGluIHJlc3BvbnNlXG4gIGN1c3RvbV9maWVsZDogMS4wLCAgICAgIC8vIFplbmRlc2sgY3VzdG9tIGZpZWxkXG4gIG1pZGRsZXdhcmVfc3RhbXA6IDAuOTgsIC8vIE1pZGRsZXdhcmUtaW5qZWN0ZWQgdHJhY2UgSURcbiAgc2Vzc2lvbl9tYXRjaDogMC45NSwgICAgLy8gU2Vzc2lvbiBJRCBjb3JyZWxhdGlvblxuICBlbWFpbF90aW1lX3dpbmRvdzogMC42LCAvLyBFbWFpbCArIDE1bWluIHdpbmRvdyAobG93ZXN0IGNvbmZpZGVuY2UpXG4gIG1hbnVhbDogMS4wLCAgICAgICAgICAgIC8vIEh1bWFuLWFzc2lnbmVkXG59O1xuXG4vKipcbiAqIExpbmsgZXZpZGVuY2Ugc3RydWN0dXJlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlua0V2aWRlbmNlIHtcbiAgbWV0aG9kOiBMaW5rTWV0aG9kO1xuICBjb25maWRlbmNlOiBudW1iZXI7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICBkZXRhaWxzOiB7XG4gICAgcnVuSWQ/OiBzdHJpbmc7XG4gICAgdGlja2V0SWQ/OiBzdHJpbmc7XG4gICAgZXh0ZXJuYWxUaWNrZXRJZD86IHN0cmluZztcbiAgICBwbGF0Zm9ybT86IHN0cmluZztcbiAgICBzZXNzaW9uSWQ/OiBzdHJpbmc7XG4gICAgZW1haWw/OiBzdHJpbmc7XG4gICAgdGltZVdpbmRvd01pbnV0ZXM/OiBudW1iZXI7XG4gICAgY3VzdG9tRmllbGROYW1lPzogc3RyaW5nO1xuICAgIGN1c3RvbUZpZWxkVmFsdWU/OiBzdHJpbmc7XG4gIH07XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIExJTktJTkcgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQ3JlYXRlIGxpbmsgaW5wdXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVMaW5rSW5wdXQge1xuICBydW5JZDogc3RyaW5nO1xuICB0aWNrZXRJZD86IHN0cmluZztcbiAgZXh0ZXJuYWxUaWNrZXRJZD86IHN0cmluZztcbiAgcGxhdGZvcm0/OiAnemVuZGVzaycgfCAnaW50ZXJjb20nIHwgJ3NhbGVzZm9yY2UnIHwgJ2ZyZXNoZGVzayc7XG4gIG1ldGhvZDogTGlua01ldGhvZDtcbiAgZXZpZGVuY2U/OiBQYXJ0aWFsPExpbmtFdmlkZW5jZVsnZGV0YWlscyddPjtcbn1cblxuLyoqXG4gKiBMaW5rIHJlc3BvbnNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlua1Jlc3BvbnNlIHtcbiAgaWQ6IHN0cmluZztcbiAgcnVuSWQ6IHN0cmluZztcbiAgdGlja2V0SWQ/OiBzdHJpbmc7XG4gIGV4dGVybmFsVGlja2V0SWQ/OiBzdHJpbmc7XG4gIHBsYXRmb3JtPzogc3RyaW5nO1xuICBtZXRob2Q6IExpbmtNZXRob2Q7XG4gIGNvbmZpZGVuY2U6IG51bWJlcjtcbiAgZXZpZGVuY2U6IExpbmtFdmlkZW5jZTtcbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogTGlua2luZyBBUEkgY2xpZW50XG4gKi9cbmV4cG9ydCBjb25zdCBsaW5raW5nID0ge1xuICAvKipcbiAgICogQ3JlYXRlIGEgbGluayBiZXR3ZWVuIGEgcnVuIGFuZCBhIHRpY2tldFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIC8vIFNESyBleHBsaWNpdCBsaW5raW5nIChoaWdoZXN0IGNvbmZpZGVuY2UpXG4gICAqIGNvbnN0IGxpbmsgPSBhd2FpdCBsaW5raW5nLmNyZWF0ZSh7XG4gICAqICAgcnVuSWQ6ICdydW5fYWJjMTIzJyxcbiAgICogICB0aWNrZXRJZDogJ3RpY2tldF94eXonLFxuICAgKiAgIG1ldGhvZDogJ3Nka19leHBsaWNpdCcsXG4gICAqIH0pO1xuICAgKlxuICAgKiAvLyBaZW5kZXNrIG1hcmtlciBsaW5raW5nXG4gICAqIGNvbnN0IGxpbmsgPSBhd2FpdCBsaW5raW5nLmNyZWF0ZSh7XG4gICAqICAgcnVuSWQ6ICdydW5fYWJjMTIzJyxcbiAgICogICBleHRlcm5hbFRpY2tldElkOiAnMTIzNDUnLFxuICAgKiAgIHBsYXRmb3JtOiAnemVuZGVzaycsXG4gICAqICAgbWV0aG9kOiAnemVuZGVza19tYXJrZXInLFxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBjcmVhdGUoaW5wdXQ6IENyZWF0ZUxpbmtJbnB1dCk6IFByb21pc2U8TGlua1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YTxMaW5rUmVzcG9uc2U+KCcvbGlua3MnLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IHtcbiAgICAgICAgLi4uaW5wdXQsXG4gICAgICAgIGNvbmZpZGVuY2U6IExJTktfTUVUSE9EX0NPTkZJREVOQ0VbaW5wdXQubWV0aG9kXSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEdldCBsaW5rcyBmb3IgYSBydW5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBsaW5rcyA9IGF3YWl0IGxpbmtpbmcuZ2V0Rm9yUnVuKCdydW5fYWJjMTIzJyk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgZ2V0Rm9yUnVuKHJ1bklkOiBzdHJpbmcpOiBQcm9taXNlPExpbmtSZXNwb25zZVtdPiB7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YTxMaW5rUmVzcG9uc2VbXT4oYC9ydW5zLyR7cnVuSWR9L2xpbmtzYCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEdldCBsaW5rcyBmb3IgYSB0aWNrZXRcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBsaW5rcyA9IGF3YWl0IGxpbmtpbmcuZ2V0Rm9yVGlja2V0KCd0aWNrZXRfeHl6Jyk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgZ2V0Rm9yVGlja2V0KHRpY2tldElkOiBzdHJpbmcpOiBQcm9taXNlPExpbmtSZXNwb25zZVtdPiB7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YTxMaW5rUmVzcG9uc2VbXT4oYC90aWNrZXRzLyR7dGlja2V0SWR9L2xpbmtzYCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFZlcmlmeSBhIGxpbmsgKGNvbmZpcm0gb3IgcmVqZWN0KVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGF3YWl0IGxpbmtpbmcudmVyaWZ5KCdsaW5rX2FiYzEyMycsIHtcbiAgICogICB2ZXJpZmllZDogdHJ1ZSxcbiAgICogICBub3RlczogJ0NvbmZpcm1lZCBieSBzdXBwb3J0IGFnZW50JyxcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgdmVyaWZ5KFxuICAgIGxpbmtJZDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHsgdmVyaWZpZWQ6IGJvb2xlYW47IG5vdGVzPzogc3RyaW5nIH1cbiAgKTogUHJvbWlzZTx7IGxpbmtJZDogc3RyaW5nOyB2ZXJpZmllZDogYm9vbGVhbjsgbWVzc2FnZTogc3RyaW5nIH0+IHtcbiAgICByZXR1cm4gYXBpUmVxdWVzdFdpdGhEYXRhKGAvbGlua3MvJHtsaW5rSWR9L3ZlcmlmeWAsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogb3B0aW9ucyxcbiAgICB9KTtcbiAgfSxcblxuICAvKipcbiAgICogRGVsZXRlIGEgbGlua1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGF3YWl0IGxpbmtpbmcuZGVsZXRlKCdsaW5rX2FiYzEyMycpO1xuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIGRlbGV0ZShsaW5rSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IGFwaVJlcXVlc3QoYC9saW5rcy8ke2xpbmtJZH1gLCB7IG1ldGhvZDogJ0RFTEVURScgfSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEF1dG8tbGluayBydW5zIHRvIHRpY2tldHMgYmFzZWQgb24gYXZhaWxhYmxlIGV2aWRlbmNlXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgcmVzdWx0cyA9IGF3YWl0IGxpbmtpbmcuYXV0b0xpbmsoJ3J1bl9hYmMxMjMnKTtcbiAgICogZm9yIChjb25zdCBsaW5rIG9mIHJlc3VsdHMuY3JlYXRlZCkge1xuICAgKiAgIGNvbnNvbGUubG9nKGBMaW5rZWQgdG8gJHtsaW5rLnRpY2tldElkfSB2aWEgJHtsaW5rLm1ldGhvZH1gKTtcbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIGF1dG9MaW5rKHJ1bklkOiBzdHJpbmcpOiBQcm9taXNlPHtcbiAgICBydW5JZDogc3RyaW5nO1xuICAgIGNyZWF0ZWQ6IExpbmtSZXNwb25zZVtdO1xuICAgIGNhbmRpZGF0ZXM6IEFycmF5PHtcbiAgICAgIHRpY2tldElkOiBzdHJpbmc7XG4gICAgICBtZXRob2Q6IExpbmtNZXRob2Q7XG4gICAgICBjb25maWRlbmNlOiBudW1iZXI7XG4gICAgICByZWFzb246IHN0cmluZztcbiAgICB9PjtcbiAgfT4ge1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGEoYC9ydW5zLyR7cnVuSWR9L2F1dG8tbGlua2AsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIH0pO1xuICB9LFxufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSEVMUEVSIEZVTkNUSU9OU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIENyZWF0ZSBTREsgZXhwbGljaXQgbGluayAoY29udmVuaWVuY2UgZnVuY3Rpb24pXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsaW5rUnVuVG9UaWNrZXQoXG4gIHJ1bklkOiBzdHJpbmcsXG4gIHRpY2tldElkOiBzdHJpbmdcbik6IFByb21pc2U8TGlua1Jlc3BvbnNlPiB7XG4gIHJldHVybiBsaW5raW5nLmNyZWF0ZSh7XG4gICAgcnVuSWQsXG4gICAgdGlja2V0SWQsXG4gICAgbWV0aG9kOiAnc2RrX2V4cGxpY2l0JyxcbiAgfSk7XG59XG5cbi8qKlxuICogQ3JlYXRlIFplbmRlc2sgbGluayB2aWEgbWFya2VyXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsaW5rUnVuVG9aZW5kZXNrVGlja2V0KFxuICBydW5JZDogc3RyaW5nLFxuICB6ZW5kZXNrVGlja2V0SWQ6IHN0cmluZ1xuKTogUHJvbWlzZTxMaW5rUmVzcG9uc2U+IHtcbiAgcmV0dXJuIGxpbmtpbmcuY3JlYXRlKHtcbiAgICBydW5JZCxcbiAgICBleHRlcm5hbFRpY2tldElkOiB6ZW5kZXNrVGlja2V0SWQsXG4gICAgcGxhdGZvcm06ICd6ZW5kZXNrJyxcbiAgICBtZXRob2Q6ICd6ZW5kZXNrX21hcmtlcicsXG4gIH0pO1xufVxuXG4vKipcbiAqIEdldCB0aGUgYmVzdCBsaW5rIG1ldGhvZCBmb3IgYSBnaXZlbiBzY2VuYXJpb1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmVzdExpbmtNZXRob2QoXG4gIGF2YWlsYWJsZToge1xuICAgIGhhc1RpY2tldElkOiBib29sZWFuO1xuICAgIGhhc01hcmtlcjogYm9vbGVhbjtcbiAgICBoYXNDdXN0b21GaWVsZDogYm9vbGVhbjtcbiAgICBoYXNNaWRkbGV3YXJlU3RhbXA6IGJvb2xlYW47XG4gICAgaGFzU2Vzc2lvbklkOiBib29sZWFuO1xuICAgIGhhc0VtYWlsOiBib29sZWFuO1xuICB9XG4pOiBMaW5rTWV0aG9kIHwgbnVsbCB7XG4gIGlmIChhdmFpbGFibGUuaGFzVGlja2V0SWQpIHJldHVybiAnc2RrX2V4cGxpY2l0JztcbiAgaWYgKGF2YWlsYWJsZS5oYXNNYXJrZXIpIHJldHVybiAnemVuZGVza19tYXJrZXInO1xuICBpZiAoYXZhaWxhYmxlLmhhc0N1c3RvbUZpZWxkKSByZXR1cm4gJ2N1c3RvbV9maWVsZCc7XG4gIGlmIChhdmFpbGFibGUuaGFzTWlkZGxld2FyZVN0YW1wKSByZXR1cm4gJ21pZGRsZXdhcmVfc3RhbXAnO1xuICBpZiAoYXZhaWxhYmxlLmhhc1Nlc3Npb25JZCkgcmV0dXJuICdzZXNzaW9uX21hdGNoJztcbiAgaWYgKGF2YWlsYWJsZS5oYXNFbWFpbCkgcmV0dXJuICdlbWFpbF90aW1lX3dpbmRvdyc7XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIEZvcm1hdCBsaW5rIGNvbmZpZGVuY2UgZm9yIGRpc3BsYXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdExpbmtDb25maWRlbmNlKGNvbmZpZGVuY2U6IG51bWJlcik6IHN0cmluZyB7XG4gIHJldHVybiBgJHtNYXRoLnJvdW5kKGNvbmZpZGVuY2UgKiAxMDApfSVgO1xufVxuXG4vKipcbiAqIEdldCBjb25maWRlbmNlIGxldmVsIGxhYmVsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb25maWRlbmNlTGV2ZWwoXG4gIGNvbmZpZGVuY2U6IG51bWJlclxuKTogJ2RlZmluaXRpdmUnIHwgJ2hpZ2gnIHwgJ21lZGl1bScgfCAnbG93JyB7XG4gIGlmIChjb25maWRlbmNlID49IDEuMCkgcmV0dXJuICdkZWZpbml0aXZlJztcbiAgaWYgKGNvbmZpZGVuY2UgPj0gMC45NSkgcmV0dXJuICdoaWdoJztcbiAgaWYgKGNvbmZpZGVuY2UgPj0gMC44KSByZXR1cm4gJ21lZGl1bSc7XG4gIHJldHVybiAnbG93Jztcbn1cbiJdfQ==
|
|
342
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlja2V0LWxpbmtpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZWdyYXRpb25zL3RpY2tldC1saW5raW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7R0FLRzs7O0FBOEJILHNEQUtDO0FBWUQsZ0RBR0M7QUFLRCw0Q0FFQztBQVlELGtEQUVDO0FBd1RELDBDQVNDO0FBS0Qsd0RBVUM7QUFLRCw4Q0FpQkM7QUFLRCxvREFFQztBQUtELGdEQU9DO0FBOWJELDJDQUFnRTtBQUdoRSwrRUFBK0U7QUFDL0UsaUJBQWlCO0FBQ2pCLCtFQUErRTtBQUUvRTs7O0dBR0c7QUFDSCxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUM7QUFDL0IsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDO0FBQzFCLE1BQU0sWUFBWSxHQUFHLDJCQUEyQixDQUFDO0FBRWpEOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILFNBQWdCLHFCQUFxQixDQUFDLEtBQWE7SUFDakQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFDRCxPQUFPLEdBQUcsYUFBYSxHQUFHLEtBQUssR0FBRyxhQUFhLEVBQUUsQ0FBQztBQUNwRCxDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBZ0Isa0JBQWtCLENBQUMsSUFBWTtJQUM3QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3ZDLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNqQyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixnQkFBZ0IsQ0FBQyxJQUFZO0lBQzNDLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqQyxDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBZ0IsbUJBQW1CLENBQUMsSUFBWTtJQUM5QyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQy9DLENBQUM7QUFFRCwrRUFBK0U7QUFDL0UsNEJBQTRCO0FBQzVCLCtFQUErRTtBQUUvRTs7O0dBR0c7QUFDVSxRQUFBLHNCQUFzQixHQUErQjtJQUNoRSxZQUFZLEVBQUUsR0FBRyxFQUFPLGlDQUFpQztJQUN6RCxjQUFjLEVBQUUsR0FBRyxFQUFLLG1DQUFtQztJQUMzRCxZQUFZLEVBQUUsR0FBRyxFQUFPLHVCQUF1QjtJQUMvQyxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsK0JBQStCO0lBQ3ZELGFBQWEsRUFBRSxJQUFJLEVBQUsseUJBQXlCO0lBQ2pELGlCQUFpQixFQUFFLEdBQUcsRUFBRSwyQ0FBMkM7SUFDbkUsTUFBTSxFQUFFLEdBQUcsRUFBYSxpQkFBaUI7Q0FDMUMsQ0FBQztBQXFFRjs7R0FFRztBQUNILFNBQVMsaUJBQWlCLENBQUMsR0FBWSxFQUFFLE1BQWtCLEVBQUUsVUFBa0IsRUFBRSxTQUFpQjtJQUNoRyw2RUFBNkU7SUFDN0UsTUFBTSxVQUFVLEdBQUcsR0FBK0QsQ0FBQztJQUNuRixNQUFNLElBQUksR0FBRyxVQUFVLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUVwQyxPQUFPO1FBQ0wsTUFBTTtRQUNOLFVBQVU7UUFDVixTQUFTLEVBQUcsSUFBSSxDQUFDLGFBQXdCLElBQUssSUFBSSxDQUFDLFVBQXFCLElBQUksU0FBUztRQUNyRixPQUFPLEVBQUU7WUFDUCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQTJCO1lBQ3ZDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBOEI7WUFDN0MsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFzQztZQUM3RCxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQThCO1lBQzdDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBK0I7WUFDL0MsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUF1QjtZQUMvRCxpQkFBaUIsRUFBRSxJQUFJLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTO1lBQ25HLGVBQWUsRUFBRSxJQUFJLENBQUMsU0FBK0I7WUFDckQsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFVBQWdDO1NBQ3hEO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsYUFBYSxDQUFDLEdBQWM7SUFDbkMsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLFVBQXdCLENBQUM7SUFDNUMsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLEdBQUcsQ0FBQyxVQUFVLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDO0lBQ3RHLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsOEJBQXNCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFFaEgsT0FBTztRQUNMLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRTtRQUNWLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQVc7UUFDakQsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRLElBQUksU0FBUztRQUNuQyxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsZ0JBQWdCLElBQUksU0FBUztRQUNuRCxRQUFRLEVBQUUsR0FBRyxDQUFDLG9CQUFvQixJQUFJLFNBQVM7UUFDL0MsTUFBTTtRQUNOLFVBQVU7UUFDVixRQUFRLEVBQUUsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUM7UUFDNUUsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTO0tBQ3pCLENBQUM7QUFDSixDQUFDO0FBRUQ7O0dBRUc7QUFDVSxRQUFBLE9BQU8sR0FBRztJQUNyQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FvQkc7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQXNCO1FBQ2pDLHNDQUFzQztRQUN0QyxNQUFNLFlBQVksR0FBRztZQUNuQixHQUFHLEtBQUssQ0FBQyxRQUFRO1lBQ2pCLFVBQVUsRUFBRSxPQUFPO1lBQ25CLGFBQWEsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtTQUN4QyxDQUFDO1FBRUYsK0VBQStFO1FBQy9FLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxNQUFNLEtBQUssY0FBYztZQUNsRCxDQUFDLENBQUMsRUFBRSxHQUFHLFlBQVksRUFBRSxjQUFjLEVBQUUsZUFBd0IsRUFBRTtZQUMvRCxDQUFDLENBQUMsWUFBWSxDQUFDO1FBRWpCLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBQSwyQkFBa0IsRUFBWSxRQUFRLEVBQUU7WUFDeEQsTUFBTSxFQUFFLE1BQU07WUFDZCxVQUFVLEVBQUUsSUFBSTtZQUNoQixJQUFJLEVBQUU7Z0JBQ0osT0FBTyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsdUJBQXVCO2dCQUM3QyxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7Z0JBQ2xCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtnQkFDeEIsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGdCQUFnQjtnQkFDeEMsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLFFBQVE7Z0JBQ3BDLFVBQVUsRUFBRSxLQUFLLENBQUMsTUFBTTtnQkFDeEIsVUFBVSxFQUFFLDhCQUFzQixDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7Z0JBQ2hELFFBQVEsRUFBRTtvQkFDUixJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU07b0JBQ2xCLElBQUksRUFBRSxZQUFZO2lCQUNuQjthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQWE7UUFDM0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBQSwyQkFBa0IsRUFBeUIsVUFBVSxNQUFNLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILEtBQUssQ0FBQyxZQUFZLENBQUMsUUFBZ0I7UUFDakMsTUFBTSxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBQSwyQkFBa0IsRUFBeUIsVUFBVSxNQUFNLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNILEtBQUssQ0FBQyxNQUFNLENBQ1YsTUFBYyxFQUNkLE9BQThDO1FBRTlDLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBQSwyQkFBa0IsRUFBWSxVQUFVLE1BQU0sU0FBUyxFQUFFO1lBQ3pFLE1BQU0sRUFBRSxNQUFNO1lBQ2QsVUFBVSxFQUFFLElBQUk7WUFDaEIsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxFQUFFO1NBQzdCLENBQUMsQ0FBQztRQUNILE9BQU8sYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFjO1FBQ3pCLE1BQU0sSUFBQSxtQkFBVSxFQUFDLFVBQVUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0gsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFhO1FBQzFCLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBQSwyQkFBa0IsRUFBbUIsYUFBYSxFQUFFO1lBQ3BFLE1BQU0sRUFBRSxNQUFNO1lBQ2QsVUFBVSxFQUFFLElBQUk7WUFDaEIsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1NBQ3BDLENBQUMsQ0FBQztRQUNILE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN6QyxDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUs7UUFPVCxPQUFPLElBQUEsMkJBQWtCLEVBQUMsY0FBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELEtBQUssQ0FBQyxjQUFjLENBQUMsT0FLcEI7UUFPQyxPQUFPLElBQUEsMkJBQWtCLEVBQUMsdUJBQXVCLEVBQUU7WUFDakQsTUFBTSxFQUFFLE1BQU07WUFDZCxVQUFVLEVBQUUsSUFBSTtZQUNoQixJQUFJLEVBQUUsT0FBTztTQUNkLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRixDQUFDO0FBRUYsK0VBQStFO0FBQy9FLG1CQUFtQjtBQUNuQiwrRUFBK0U7QUFFL0U7O0dBRUc7QUFDSSxLQUFLLFVBQVUsZUFBZSxDQUNuQyxLQUFhLEVBQ2IsUUFBZ0I7SUFFaEIsT0FBTyxlQUFPLENBQUMsTUFBTSxDQUFDO1FBQ3BCLEtBQUs7UUFDTCxRQUFRO1FBQ1IsTUFBTSxFQUFFLGNBQWM7S0FDdkIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOztHQUVHO0FBQ0ksS0FBSyxVQUFVLHNCQUFzQixDQUMxQyxLQUFhLEVBQ2IsZUFBdUI7SUFFdkIsT0FBTyxlQUFPLENBQUMsTUFBTSxDQUFDO1FBQ3BCLEtBQUs7UUFDTCxnQkFBZ0IsRUFBRSxlQUFlO1FBQ2pDLFFBQVEsRUFBRSxTQUFTO1FBQ25CLE1BQU0sRUFBRSxnQkFBZ0I7S0FDekIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsaUJBQWlCLENBQy9CLFNBT0M7SUFFRCxJQUFJLFNBQVMsQ0FBQyxXQUFXO1FBQUUsT0FBTyxjQUFjLENBQUM7SUFDakQsSUFBSSxTQUFTLENBQUMsU0FBUztRQUFFLE9BQU8sZ0JBQWdCLENBQUM7SUFDakQsSUFBSSxTQUFTLENBQUMsY0FBYztRQUFFLE9BQU8sY0FBYyxDQUFDO0lBQ3BELElBQUksU0FBUyxDQUFDLGtCQUFrQjtRQUFFLE9BQU8sa0JBQWtCLENBQUM7SUFDNUQsSUFBSSxTQUFTLENBQUMsWUFBWTtRQUFFLE9BQU8sZUFBZSxDQUFDO0lBQ25ELElBQUksU0FBUyxDQUFDLFFBQVE7UUFBRSxPQUFPLG1CQUFtQixDQUFDO0lBQ25ELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0Isb0JBQW9CLENBQUMsVUFBa0I7SUFDckQsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUM7QUFDNUMsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0Isa0JBQWtCLENBQ2hDLFVBQWtCO0lBRWxCLElBQUksVUFBVSxJQUFJLEdBQUc7UUFBRSxPQUFPLFlBQVksQ0FBQztJQUMzQyxJQUFJLFVBQVUsSUFBSSxJQUFJO1FBQUUsT0FBTyxNQUFNLENBQUM7SUFDdEMsSUFBSSxVQUFVLElBQUksR0FBRztRQUFFLE9BQU8sUUFBUSxDQUFDO0lBQ3ZDLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpbmtIaXZlIFNESyB2My4wIC0gVGlja2V0IExpbmtpbmdcbiAqXG4gKiBEZXRlcm1pbmlzdGljIGxpbmtpbmcgYmV0d2VlbiBydW5zIGFuZCBzdXBwb3J0IHRpY2tldHNcbiAqIDcgbGluayBtZXRob2RzIHdpdGggZXhwbGljaXQgY29uZmlkZW5jZSBzY29yZXNcbiAqL1xuXG5pbXBvcnQgeyBhcGlSZXF1ZXN0LCBhcGlSZXF1ZXN0V2l0aERhdGEgfSBmcm9tICcuLi9jb3JlL2NsaWVudCc7XG5pbXBvcnQgdHlwZSB7IExpbmtNZXRob2QgfSBmcm9tICcuLi9jb3JlL3R5cGVzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gWkVOREVTSyBNQVJLRVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBaZW5kZXNrIG1hcmtlciBmb3JtYXQ6IFtUSElEOnJ1bl94eHhdXG4gKiBFbWJlZGRlZCBpbiBhZ2VudCByZXNwb25zZXMgZm9yIGRldGVybWluaXN0aWMgbGlua2luZ1xuICovXG5jb25zdCBNQVJLRVJfUFJFRklYID0gJ1tUSElEOic7XG5jb25zdCBNQVJLRVJfU1VGRklYID0gJ10nO1xuY29uc3QgTUFSS0VSX1JFR0VYID0gL1xcW1RISUQ6KFthLXpBLVowLTlfLV0rKVxcXS87XG5cbi8qKlxuICogR2VuZXJhdGUgYSBaZW5kZXNrIG1hcmtlciB0byBlbWJlZCBpbiBhZ2VudCByZXNwb25zZXNcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcnVuSWQgPSAncnVuX2FiYzEyMyc7XG4gKiBjb25zdCBtYXJrZXIgPSBnZW5lcmF0ZVplbmRlc2tNYXJrZXIocnVuSWQpO1xuICogLy8gUmV0dXJuczogJ1tUSElEOnJ1bl9hYmMxMjNdJ1xuICpcbiAqIC8vIEFwcGVuZCB0byB5b3VyIGFnZW50IHJlc3BvbnNlOlxuICogY29uc3QgcmVzcG9uc2UgPSBgSSd2ZSBmb3VuZCB5b3VyIG9yZGVyLiAke21hcmtlcn1gO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVplbmRlc2tNYXJrZXIocnVuSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICghcnVuSWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1J1biBJRCBpcyByZXF1aXJlZCB0byBnZW5lcmF0ZSBaZW5kZXNrIG1hcmtlcicpO1xuICB9XG4gIHJldHVybiBgJHtNQVJLRVJfUFJFRklYfSR7cnVuSWR9JHtNQVJLRVJfU1VGRklYfWA7XG59XG5cbi8qKlxuICogUGFyc2UgYSBaZW5kZXNrIG1hcmtlciBmcm9tIHRleHRcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgdGV4dCA9ICdUaGFuayB5b3UgZm9yIGNvbnRhY3RpbmcgdXMuIFtUSElEOnJ1bl9hYmMxMjNdJztcbiAqIGNvbnN0IHJ1bklkID0gcGFyc2VaZW5kZXNrTWFya2VyKHRleHQpO1xuICogLy8gUmV0dXJuczogJ3J1bl9hYmMxMjMnXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlWmVuZGVza01hcmtlcih0ZXh0OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgbWF0Y2ggPSB0ZXh0Lm1hdGNoKE1BUktFUl9SRUdFWCk7XG4gIHJldHVybiBtYXRjaCA/IG1hdGNoWzFdIDogbnVsbDtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB0ZXh0IGNvbnRhaW5zIGEgWmVuZGVzayBtYXJrZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc1plbmRlc2tNYXJrZXIodGV4dDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBNQVJLRVJfUkVHRVgudGVzdCh0ZXh0KTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgWmVuZGVzayBtYXJrZXIgZnJvbSB0ZXh0IChmb3IgY2xlYW4gZGlzcGxheSlcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgdGV4dCA9ICdUaGFuayB5b3UhIFtUSElEOnJ1bl9hYmMxMjNdJztcbiAqIGNvbnN0IGNsZWFuID0gcmVtb3ZlWmVuZGVza01hcmtlcih0ZXh0KTtcbiAqIC8vIFJldHVybnM6ICdUaGFuayB5b3UhJ1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVaZW5kZXNrTWFya2VyKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB0ZXh0LnJlcGxhY2UoTUFSS0VSX1JFR0VYLCAnJykudHJpbSgpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMSU5LIE1FVEhPRFMgJiBDT05GSURFTkNFXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQ29uZmlkZW5jZSBzY29yZXMgZm9yIGVhY2ggbGluayBtZXRob2RcbiAqIEJhc2VkIG9uIGRldGVybWluaXN0aWMgbGlua2luZyBwcmluY2lwbGVzIGZyb20gdjMgc3BlY1xuICovXG5leHBvcnQgY29uc3QgTElOS19NRVRIT0RfQ09ORklERU5DRTogUmVjb3JkPExpbmtNZXRob2QsIG51bWJlcj4gPSB7XG4gIHNka19leHBsaWNpdDogMS4wLCAgICAgIC8vIERpcmVjdCBTREsgY2FsbCB3aXRoIHRpY2tldCBJRFxuICB6ZW5kZXNrX21hcmtlcjogMS4wLCAgICAvLyBFbWJlZGRlZCBUSElEIG1hcmtlciBpbiByZXNwb25zZVxuICBjdXN0b21fZmllbGQ6IDEuMCwgICAgICAvLyBaZW5kZXNrIGN1c3RvbSBmaWVsZFxuICBtaWRkbGV3YXJlX3N0YW1wOiAwLjk4LCAvLyBNaWRkbGV3YXJlLWluamVjdGVkIHRyYWNlIElEXG4gIHNlc3Npb25fbWF0Y2g6IDAuOTUsICAgIC8vIFNlc3Npb24gSUQgY29ycmVsYXRpb25cbiAgZW1haWxfdGltZV93aW5kb3c6IDAuNiwgLy8gRW1haWwgKyAxNW1pbiB3aW5kb3cgKGxvd2VzdCBjb25maWRlbmNlKVxuICBtYW51YWw6IDEuMCwgICAgICAgICAgICAvLyBIdW1hbi1hc3NpZ25lZFxufTtcblxuLyoqXG4gKiBMaW5rIGV2aWRlbmNlIHN0cnVjdHVyZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpbmtFdmlkZW5jZSB7XG4gIG1ldGhvZDogTGlua01ldGhvZDtcbiAgY29uZmlkZW5jZTogbnVtYmVyO1xuICB0aW1lc3RhbXA6IHN0cmluZztcbiAgZGV0YWlsczoge1xuICAgIHJ1bklkPzogc3RyaW5nO1xuICAgIHRpY2tldElkPzogc3RyaW5nO1xuICAgIGV4dGVybmFsVGlja2V0SWQ/OiBzdHJpbmc7XG4gICAgcGxhdGZvcm0/OiBzdHJpbmc7XG4gICAgc2Vzc2lvbklkPzogc3RyaW5nO1xuICAgIGVtYWlsPzogc3RyaW5nO1xuICAgIHRpbWVXaW5kb3dNaW51dGVzPzogbnVtYmVyO1xuICAgIGN1c3RvbUZpZWxkTmFtZT86IHN0cmluZztcbiAgICBjdXN0b21GaWVsZFZhbHVlPzogc3RyaW5nO1xuICB9O1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMSU5LSU5HIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIENyZWF0ZSBsaW5rIGlucHV0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlTGlua0lucHV0IHtcbiAgcnVuSWQ6IHN0cmluZztcbiAgdGlja2V0SWQ/OiBzdHJpbmc7XG4gIGV4dGVybmFsVGlja2V0SWQ/OiBzdHJpbmc7XG4gIHBsYXRmb3JtPzogJ3plbmRlc2snIHwgJ2ludGVyY29tJyB8ICdzYWxlc2ZvcmNlJyB8ICdmcmVzaGRlc2snO1xuICBtZXRob2Q6IExpbmtNZXRob2Q7XG4gIGV2aWRlbmNlPzogUGFydGlhbDxMaW5rRXZpZGVuY2VbJ2RldGFpbHMnXT47XG59XG5cbi8qKlxuICogTGluayByZXNwb25zZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpbmtSZXNwb25zZSB7XG4gIGlkOiBzdHJpbmc7XG4gIHJ1bklkOiBzdHJpbmc7XG4gIHRpY2tldElkPzogc3RyaW5nO1xuICBleHRlcm5hbFRpY2tldElkPzogc3RyaW5nO1xuICBwbGF0Zm9ybT86IHN0cmluZztcbiAgbWV0aG9kOiBMaW5rTWV0aG9kO1xuICBjb25maWRlbmNlOiBudW1iZXI7XG4gIGV2aWRlbmNlOiBMaW5rRXZpZGVuY2U7XG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJhdyBsaW5rIHNoYXBlIHJldHVybmVkIGJ5IHYzIEFQSSAoZGlmZmVycyBmcm9tIFNESydzIExpbmtSZXNwb25zZSlcbiAqL1xuaW50ZXJmYWNlIFJhd1YzTGluayB7XG4gIGlkOiBzdHJpbmc7XG4gIHRyYWNlSWQ/OiBzdHJpbmc7XG4gIHJ1bklkPzogc3RyaW5nIHwgbnVsbDtcbiAgdGlja2V0SWQ/OiBzdHJpbmcgfCBudWxsO1xuICB0aWNrZXRFeHRlcm5hbElkPzogc3RyaW5nIHwgbnVsbDtcbiAgdGlja2V0RXh0ZXJuYWxTb3VyY2U/OiBzdHJpbmcgfCBudWxsO1xuICBsaW5rTWV0aG9kOiBzdHJpbmc7XG4gIGNvbmZpZGVuY2U6IHN0cmluZyB8IG51bWJlcjtcbiAgZXZpZGVuY2U6IHVua25vd247XG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRyYW5zZm9ybSBWMyBldmlkZW5jZSAoeyB0eXBlLCBkYXRhIH0pIGludG8gU0RLIExpbmtFdmlkZW5jZSBzaGFwZSAoeyBtZXRob2QsIGNvbmZpZGVuY2UsIHRpbWVzdGFtcCwgZGV0YWlscyB9KVxuICovXG5mdW5jdGlvbiBub3JtYWxpemVFdmlkZW5jZShyYXc6IHVua25vd24sIG1ldGhvZDogTGlua01ldGhvZCwgY29uZmlkZW5jZTogbnVtYmVyLCBjcmVhdGVkQXQ6IHN0cmluZyk6IExpbmtFdmlkZW5jZSB7XG4gIC8vIFYzIEFQSSByZXR1cm5zIGV2aWRlbmNlIGFzIHsgdHlwZTogc3RyaW5nLCBkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9XG4gIGNvbnN0IHYzRXZpZGVuY2UgPSByYXcgYXMgeyB0eXBlPzogc3RyaW5nOyBkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfSB8IG51bGw7XG4gIGNvbnN0IGRhdGEgPSB2M0V2aWRlbmNlPy5kYXRhID8/IHt9O1xuXG4gIHJldHVybiB7XG4gICAgbWV0aG9kLFxuICAgIGNvbmZpZGVuY2UsXG4gICAgdGltZXN0YW1wOiAoZGF0YS5jYWxsVGltZXN0YW1wIGFzIHN0cmluZykgPz8gKGRhdGEudmVyaWZpZWRBdCBhcyBzdHJpbmcpID8/IGNyZWF0ZWRBdCxcbiAgICBkZXRhaWxzOiB7XG4gICAgICBydW5JZDogZGF0YS5ydW5JZCBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICB0aWNrZXRJZDogZGF0YS50aWNrZXRJZCBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICBleHRlcm5hbFRpY2tldElkOiBkYXRhLmV4dGVybmFsVGlja2V0SWQgYXMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICAgcGxhdGZvcm06IGRhdGEucGxhdGZvcm0gYXMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICAgc2Vzc2lvbklkOiBkYXRhLnNlc3Npb25JZCBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICBlbWFpbDogKGRhdGEuY3VzdG9tZXJFbWFpbCA/PyBkYXRhLmVtYWlsKSBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICB0aW1lV2luZG93TWludXRlczogZGF0YS50aW1lV2luZG93U2Vjb25kcyAhPSBudWxsID8gTnVtYmVyKGRhdGEudGltZVdpbmRvd1NlY29uZHMpIC8gNjAgOiB1bmRlZmluZWQsXG4gICAgICBjdXN0b21GaWVsZE5hbWU6IGRhdGEuZmllbGROYW1lIGFzIHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAgIGN1c3RvbUZpZWxkVmFsdWU6IGRhdGEuZmllbGRWYWx1ZSBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgfSxcbiAgfTtcbn1cblxuLyoqXG4gKiBOb3JtYWxpemUgYSByYXcgdjMgbGluayBpbnRvIHRoZSBTREsncyBMaW5rUmVzcG9uc2Ugc2hhcGVcbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplTGluayhyYXc6IFJhd1YzTGluayk6IExpbmtSZXNwb25zZSB7XG4gIGNvbnN0IG1ldGhvZCA9IHJhdy5saW5rTWV0aG9kIGFzIExpbmtNZXRob2Q7XG4gIGNvbnN0IHBhcnNlZENvbmZpZGVuY2UgPSB0eXBlb2YgcmF3LmNvbmZpZGVuY2UgPT09ICdzdHJpbmcnID8gTnVtYmVyKHJhdy5jb25maWRlbmNlKSA6IHJhdy5jb25maWRlbmNlO1xuICBjb25zdCBjb25maWRlbmNlID0gTnVtYmVyLmlzRmluaXRlKHBhcnNlZENvbmZpZGVuY2UpID8gcGFyc2VkQ29uZmlkZW5jZSA6IChMSU5LX01FVEhPRF9DT05GSURFTkNFW21ldGhvZF0gPz8gMCk7XG5cbiAgcmV0dXJuIHtcbiAgICBpZDogcmF3LmlkLFxuICAgIHJ1bklkOiAocmF3LnJ1bklkID8/IHJhdy50cmFjZUlkID8/ICcnKSBhcyBzdHJpbmcsXG4gICAgdGlja2V0SWQ6IHJhdy50aWNrZXRJZCA/PyB1bmRlZmluZWQsXG4gICAgZXh0ZXJuYWxUaWNrZXRJZDogcmF3LnRpY2tldEV4dGVybmFsSWQgPz8gdW5kZWZpbmVkLFxuICAgIHBsYXRmb3JtOiByYXcudGlja2V0RXh0ZXJuYWxTb3VyY2UgPz8gdW5kZWZpbmVkLFxuICAgIG1ldGhvZCxcbiAgICBjb25maWRlbmNlLFxuICAgIGV2aWRlbmNlOiBub3JtYWxpemVFdmlkZW5jZShyYXcuZXZpZGVuY2UsIG1ldGhvZCwgY29uZmlkZW5jZSwgcmF3LmNyZWF0ZWRBdCksXG4gICAgY3JlYXRlZEF0OiByYXcuY3JlYXRlZEF0LFxuICB9O1xufVxuXG4vKipcbiAqIExpbmtpbmcgQVBJIGNsaWVudFxuICovXG5leHBvcnQgY29uc3QgbGlua2luZyA9IHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhIGxpbmsgYmV0d2VlbiBhIHJ1biBhbmQgYSB0aWNrZXRcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiAvLyBTREsgZXhwbGljaXQgbGlua2luZyAoaGlnaGVzdCBjb25maWRlbmNlKVxuICAgKiBjb25zdCBsaW5rID0gYXdhaXQgbGlua2luZy5jcmVhdGUoe1xuICAgKiAgIHJ1bklkOiAncnVuX2FiYzEyMycsXG4gICAqICAgdGlja2V0SWQ6ICd0aWNrZXRfeHl6JyxcbiAgICogICBtZXRob2Q6ICdzZGtfZXhwbGljaXQnLFxuICAgKiB9KTtcbiAgICpcbiAgICogLy8gWmVuZGVzayBtYXJrZXIgbGlua2luZ1xuICAgKiBjb25zdCBsaW5rID0gYXdhaXQgbGlua2luZy5jcmVhdGUoe1xuICAgKiAgIHJ1bklkOiAncnVuX2FiYzEyMycsXG4gICAqICAgZXh0ZXJuYWxUaWNrZXRJZDogJzEyMzQ1JyxcbiAgICogICBwbGF0Zm9ybTogJ3plbmRlc2snLFxuICAgKiAgIG1ldGhvZDogJ3plbmRlc2tfbWFya2VyJyxcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgY3JlYXRlKGlucHV0OiBDcmVhdGVMaW5rSW5wdXQpOiBQcm9taXNlPExpbmtSZXNwb25zZT4ge1xuICAgIC8vIEJ1aWxkIG1ldGhvZC1zcGVjaWZpYyBldmlkZW5jZSBkYXRhXG4gICAgY29uc3QgYmFzZUV2aWRlbmNlID0ge1xuICAgICAgLi4uaW5wdXQuZXZpZGVuY2UsXG4gICAgICBzZGtWZXJzaW9uOiAnNC4wLjAnLFxuICAgICAgY2FsbFRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIH07XG5cbiAgICAvLyBGb3Igc2RrX2V4cGxpY2l0LCBhZGQgdGlja2V0SWRTb3VyY2UgKHJlcXVpcmVkIGJ5IFNka0V4cGxpY2l0RXZpZGVuY2VTY2hlbWEpXG4gICAgY29uc3QgZXZpZGVuY2VEYXRhID0gaW5wdXQubWV0aG9kID09PSAnc2RrX2V4cGxpY2l0J1xuICAgICAgPyB7IC4uLmJhc2VFdmlkZW5jZSwgdGlja2V0SWRTb3VyY2U6ICdzZGtfcGFyYW1ldGVyJyBhcyBjb25zdCB9XG4gICAgICA6IGJhc2VFdmlkZW5jZTtcblxuICAgIGNvbnN0IHJhdyA9IGF3YWl0IGFwaVJlcXVlc3RXaXRoRGF0YTxSYXdWM0xpbms+KCcvbGlua3MnLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGFwaVZlcnNpb246ICd2MycsXG4gICAgICBib2R5OiB7XG4gICAgICAgIHRyYWNlSWQ6IGlucHV0LnJ1bklkLCAvLyBWMyBtYXBzIHJ1biB0byB0cmFjZVxuICAgICAgICBydW5JZDogaW5wdXQucnVuSWQsXG4gICAgICAgIHRpY2tldElkOiBpbnB1dC50aWNrZXRJZCxcbiAgICAgICAgdGlja2V0RXh0ZXJuYWxJZDogaW5wdXQuZXh0ZXJuYWxUaWNrZXRJZCxcbiAgICAgICAgdGlja2V0RXh0ZXJuYWxTb3VyY2U6IGlucHV0LnBsYXRmb3JtLFxuICAgICAgICBsaW5rTWV0aG9kOiBpbnB1dC5tZXRob2QsXG4gICAgICAgIGNvbmZpZGVuY2U6IExJTktfTUVUSE9EX0NPTkZJREVOQ0VbaW5wdXQubWV0aG9kXSxcbiAgICAgICAgZXZpZGVuY2U6IHtcbiAgICAgICAgICB0eXBlOiBpbnB1dC5tZXRob2QsXG4gICAgICAgICAgZGF0YTogZXZpZGVuY2VEYXRhLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgICByZXR1cm4gbm9ybWFsaXplTGluayhyYXcpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXQgbGlua3MgZm9yIGEgcnVuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgbGlua3MgPSBhd2FpdCBsaW5raW5nLmdldEZvclJ1bigncnVuX2FiYzEyMycpO1xuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIGdldEZvclJ1bihydW5JZDogc3RyaW5nKTogUHJvbWlzZTxMaW5rUmVzcG9uc2VbXT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoeyBydW5JZCB9KTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBhcGlSZXF1ZXN0V2l0aERhdGE8eyBsaW5rczogUmF3VjNMaW5rW10gfT4oYC9saW5rcz8ke3BhcmFtc31gLCB7IGFwaVZlcnNpb246ICd2MycgfSk7XG4gICAgcmV0dXJuIChyZXN1bHQubGlua3MgfHwgW10pLm1hcChub3JtYWxpemVMaW5rKTtcbiAgfSxcblxuICAvKipcbiAgICogR2V0IGxpbmtzIGZvciBhIHRpY2tldFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IGxpbmtzID0gYXdhaXQgbGlua2luZy5nZXRGb3JUaWNrZXQoJ3RpY2tldF94eXonKTtcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBnZXRGb3JUaWNrZXQodGlja2V0SWQ6IHN0cmluZyk6IFByb21pc2U8TGlua1Jlc3BvbnNlW10+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHsgdGlja2V0SWQgfSk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXBpUmVxdWVzdFdpdGhEYXRhPHsgbGlua3M6IFJhd1YzTGlua1tdIH0+KGAvbGlua3M/JHtwYXJhbXN9YCwgeyBhcGlWZXJzaW9uOiAndjMnIH0pO1xuICAgIHJldHVybiAocmVzdWx0LmxpbmtzIHx8IFtdKS5tYXAobm9ybWFsaXplTGluayk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFZlcmlmeSBhIGxpbmsgKGNvbmZpcm0gb3IgcmVqZWN0KVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGF3YWl0IGxpbmtpbmcudmVyaWZ5KCdsaW5rX2FiYzEyMycsIHtcbiAgICogICB2ZXJpZmllZDogdHJ1ZSxcbiAgICogICBub3RlczogJ0NvbmZpcm1lZCBieSBzdXBwb3J0IGFnZW50JyxcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgdmVyaWZ5KFxuICAgIGxpbmtJZDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHsgdmVyaWZpZWQ6IGJvb2xlYW47IG5vdGVzPzogc3RyaW5nIH1cbiAgKTogUHJvbWlzZTxMaW5rUmVzcG9uc2U+IHtcbiAgICBjb25zdCByYXcgPSBhd2FpdCBhcGlSZXF1ZXN0V2l0aERhdGE8UmF3VjNMaW5rPihgL2xpbmtzLyR7bGlua0lkfS92ZXJpZnlgLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGFwaVZlcnNpb246ICd2MycsXG4gICAgICBib2R5OiB7IGxpbmtJZCwgLi4ub3B0aW9ucyB9LFxuICAgIH0pO1xuICAgIHJldHVybiBub3JtYWxpemVMaW5rKHJhdyk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIERlbGV0ZSBhIGxpbmtcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBhd2FpdCBsaW5raW5nLmRlbGV0ZSgnbGlua19hYmMxMjMnKTtcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBkZWxldGUobGlua0lkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBhcGlSZXF1ZXN0KGAvbGlua3MvJHtsaW5rSWR9YCwgeyBtZXRob2Q6ICdERUxFVEUnLCBhcGlWZXJzaW9uOiAndjMnIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBBdXRvLWxpbmsgYSBydW4gdG8gYSB0aWNrZXQgYmFzZWQgb24gYXZhaWxhYmxlIGV2aWRlbmNlXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgbGluayA9IGF3YWl0IGxpbmtpbmcuYXV0b0xpbmsoJ3J1bl9hYmMxMjMnKTtcbiAgICogaWYgKGxpbmspIHtcbiAgICogICBjb25zb2xlLmxvZyhgTGlua2VkIHRvICR7bGluay50aWNrZXRJZH0gdmlhICR7bGluay5tZXRob2R9YCk7XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBhdXRvTGluayhydW5JZDogc3RyaW5nKTogUHJvbWlzZTxMaW5rUmVzcG9uc2UgfCBudWxsPiB7XG4gICAgY29uc3QgcmF3ID0gYXdhaXQgYXBpUmVxdWVzdFdpdGhEYXRhPFJhd1YzTGluayB8IG51bGw+KGAvbGlua3MvYXV0b2AsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYXBpVmVyc2lvbjogJ3YzJyxcbiAgICAgIGJvZHk6IHsgdHJhY2VJZDogcnVuSWQsIGhpbnRzOiB7fSB9LFxuICAgIH0pO1xuICAgIHJldHVybiByYXcgPyBub3JtYWxpemVMaW5rKHJhdykgOiBudWxsO1xuICB9LFxuXG4gIGFzeW5jIHN0YXRzKCk6IFByb21pc2U8e1xuICAgIHRvdGFsTGlua3M6IG51bWJlcjtcbiAgICBieU1ldGhvZDogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcbiAgICBhdmdDb25maWRlbmNlOiBudW1iZXI7XG4gICAgdmVyaWZpZWRDb3VudDogbnVtYmVyO1xuICAgIHVudmVyaWZpZWRDb3VudDogbnVtYmVyO1xuICB9PiB7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YSgnL2xpbmtzL3N0YXRzJywgeyBhcGlWZXJzaW9uOiAndjMnIH0pO1xuICB9LFxuXG4gIGFzeW5jIGdlbmVyYXRlTWFya2VyKG9wdGlvbnM6IHtcbiAgICB0cmFjZUlkOiBzdHJpbmc7XG4gICAgcnVuSWQ/OiBzdHJpbmc7XG4gICAgZm9ybWF0PzogJ2h0bWxfY29tbWVudCcgfCAnYmFzZTY0JyB8ICdjdXN0b20nO1xuICAgIGN1c3RvbVRlbXBsYXRlPzogc3RyaW5nO1xuICB9KTogUHJvbWlzZTx7XG4gICAgbWFya2VyOiBzdHJpbmc7XG4gICAgZm9ybWF0OiBzdHJpbmc7XG4gICAgdHJhY2VJZDogc3RyaW5nO1xuICAgIHJ1bklkOiBzdHJpbmcgfCBudWxsO1xuICAgIGluc3RydWN0aW9uczogc3RyaW5nO1xuICB9PiB7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YSgnL2xpbmtzL3plbmRlc2stbWFya2VyJywge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBhcGlWZXJzaW9uOiAndjMnLFxuICAgICAgYm9keTogb3B0aW9ucyxcbiAgICB9KTtcbiAgfSxcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEhFTFBFUiBGVU5DVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDcmVhdGUgU0RLIGV4cGxpY2l0IGxpbmsgKGNvbnZlbmllbmNlIGZ1bmN0aW9uKVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGlua1J1blRvVGlja2V0KFxuICBydW5JZDogc3RyaW5nLFxuICB0aWNrZXRJZDogc3RyaW5nXG4pOiBQcm9taXNlPExpbmtSZXNwb25zZT4ge1xuICByZXR1cm4gbGlua2luZy5jcmVhdGUoe1xuICAgIHJ1bklkLFxuICAgIHRpY2tldElkLFxuICAgIG1ldGhvZDogJ3Nka19leHBsaWNpdCcsXG4gIH0pO1xufVxuXG4vKipcbiAqIENyZWF0ZSBaZW5kZXNrIGxpbmsgdmlhIG1hcmtlclxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGlua1J1blRvWmVuZGVza1RpY2tldChcbiAgcnVuSWQ6IHN0cmluZyxcbiAgemVuZGVza1RpY2tldElkOiBzdHJpbmdcbik6IFByb21pc2U8TGlua1Jlc3BvbnNlPiB7XG4gIHJldHVybiBsaW5raW5nLmNyZWF0ZSh7XG4gICAgcnVuSWQsXG4gICAgZXh0ZXJuYWxUaWNrZXRJZDogemVuZGVza1RpY2tldElkLFxuICAgIHBsYXRmb3JtOiAnemVuZGVzaycsXG4gICAgbWV0aG9kOiAnemVuZGVza19tYXJrZXInLFxuICB9KTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGJlc3QgbGluayBtZXRob2QgZm9yIGEgZ2l2ZW4gc2NlbmFyaW9cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEJlc3RMaW5rTWV0aG9kKFxuICBhdmFpbGFibGU6IHtcbiAgICBoYXNUaWNrZXRJZDogYm9vbGVhbjtcbiAgICBoYXNNYXJrZXI6IGJvb2xlYW47XG4gICAgaGFzQ3VzdG9tRmllbGQ6IGJvb2xlYW47XG4gICAgaGFzTWlkZGxld2FyZVN0YW1wOiBib29sZWFuO1xuICAgIGhhc1Nlc3Npb25JZDogYm9vbGVhbjtcbiAgICBoYXNFbWFpbDogYm9vbGVhbjtcbiAgfVxuKTogTGlua01ldGhvZCB8IG51bGwge1xuICBpZiAoYXZhaWxhYmxlLmhhc1RpY2tldElkKSByZXR1cm4gJ3Nka19leHBsaWNpdCc7XG4gIGlmIChhdmFpbGFibGUuaGFzTWFya2VyKSByZXR1cm4gJ3plbmRlc2tfbWFya2VyJztcbiAgaWYgKGF2YWlsYWJsZS5oYXNDdXN0b21GaWVsZCkgcmV0dXJuICdjdXN0b21fZmllbGQnO1xuICBpZiAoYXZhaWxhYmxlLmhhc01pZGRsZXdhcmVTdGFtcCkgcmV0dXJuICdtaWRkbGV3YXJlX3N0YW1wJztcbiAgaWYgKGF2YWlsYWJsZS5oYXNTZXNzaW9uSWQpIHJldHVybiAnc2Vzc2lvbl9tYXRjaCc7XG4gIGlmIChhdmFpbGFibGUuaGFzRW1haWwpIHJldHVybiAnZW1haWxfdGltZV93aW5kb3cnO1xuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBGb3JtYXQgbGluayBjb25maWRlbmNlIGZvciBkaXNwbGF5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRMaW5rQ29uZmlkZW5jZShjb25maWRlbmNlOiBudW1iZXIpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7TWF0aC5yb3VuZChjb25maWRlbmNlICogMTAwKX0lYDtcbn1cblxuLyoqXG4gKiBHZXQgY29uZmlkZW5jZSBsZXZlbCBsYWJlbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29uZmlkZW5jZUxldmVsKFxuICBjb25maWRlbmNlOiBudW1iZXJcbik6ICdkZWZpbml0aXZlJyB8ICdoaWdoJyB8ICdtZWRpdW0nIHwgJ2xvdycge1xuICBpZiAoY29uZmlkZW5jZSA+PSAxLjApIHJldHVybiAnZGVmaW5pdGl2ZSc7XG4gIGlmIChjb25maWRlbmNlID49IDAuOTUpIHJldHVybiAnaGlnaCc7XG4gIGlmIChjb25maWRlbmNlID49IDAuOCkgcmV0dXJuICdtZWRpdW0nO1xuICByZXR1cm4gJ2xvdyc7XG59XG4iXX0=
|
package/package.json
CHANGED