@workflow/utils 5.0.0-beta.3 → 5.0.0-beta.5
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/dist/get-port-internals.d.ts +2 -0
- package/dist/get-port-internals.d.ts.map +1 -0
- package/dist/get-port-internals.js +31 -0
- package/dist/get-port.d.ts.map +1 -1
- package/dist/get-port.js +4 -21
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/parse-name.d.ts +11 -0
- package/dist/parse-name.d.ts.map +1 -1
- package/dist/parse-name.js +44 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-port-internals.d.ts","sourceRoot":"","sources":["../src/get-port-internals.ts"],"names":[],"mappings":"AAQA,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,GACV,MAAM,EAAE,CA2BV"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
function parsePort(value, radix = 10) {
|
|
2
|
+
const port = parseInt(value, radix);
|
|
3
|
+
if (!Number.isNaN(port) && port >= 0 && port <= 65535) {
|
|
4
|
+
return port;
|
|
5
|
+
}
|
|
6
|
+
return undefined;
|
|
7
|
+
}
|
|
8
|
+
export function parseWindowsNetstatPortsForPid(stdout, pid) {
|
|
9
|
+
const ports = [];
|
|
10
|
+
const lines = stdout.trim().split('\n');
|
|
11
|
+
for (const line of lines) {
|
|
12
|
+
const parts = line.trim().split(/\s+/);
|
|
13
|
+
if (parts.length < 5 || parts[0]?.toUpperCase() !== 'TCP') {
|
|
14
|
+
continue;
|
|
15
|
+
}
|
|
16
|
+
const [, localAddress, , state, rowPid] = parts;
|
|
17
|
+
if (state?.toUpperCase() !== 'LISTENING' || rowPid !== pid.toString()) {
|
|
18
|
+
continue;
|
|
19
|
+
}
|
|
20
|
+
const colonIndex = localAddress.lastIndexOf(':');
|
|
21
|
+
if (colonIndex === -1) {
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
const port = parsePort(localAddress.slice(colonIndex + 1));
|
|
25
|
+
if (port !== undefined) {
|
|
26
|
+
ports.push(port);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return ports;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXBvcnQtaW50ZXJuYWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2dldC1wb3J0LWludGVybmFscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLFNBQVMsQ0FBQyxLQUFhLEVBQUUsS0FBSyxHQUFHLEVBQUU7SUFDMUMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNwQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUN0RCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUQsTUFBTSxVQUFVLDhCQUE4QixDQUM1QyxNQUFjLEVBQ2QsR0FBVztJQUVYLE1BQU0sS0FBSyxHQUFhLEVBQUUsQ0FBQztJQUMzQixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXhDLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7UUFDekIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUMxRCxTQUFTO1FBQ1gsQ0FBQztRQUVELE1BQU0sQ0FBQyxFQUFFLFlBQVksRUFBRSxBQUFELEVBQUcsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUNoRCxJQUFJLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxXQUFXLElBQUksTUFBTSxLQUFLLEdBQUcsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ3RFLFNBQVM7UUFDWCxDQUFDO1FBRUQsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqRCxJQUFJLFVBQVUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3RCLFNBQVM7UUFDWCxDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0QsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDdkIsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIHBhcnNlUG9ydCh2YWx1ZTogc3RyaW5nLCByYWRpeCA9IDEwKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgcG9ydCA9IHBhcnNlSW50KHZhbHVlLCByYWRpeCk7XG4gIGlmICghTnVtYmVyLmlzTmFOKHBvcnQpICYmIHBvcnQgPj0gMCAmJiBwb3J0IDw9IDY1NTM1KSB7XG4gICAgcmV0dXJuIHBvcnQ7XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlV2luZG93c05ldHN0YXRQb3J0c0ZvclBpZChcbiAgc3Rkb3V0OiBzdHJpbmcsXG4gIHBpZDogbnVtYmVyXG4pOiBudW1iZXJbXSB7XG4gIGNvbnN0IHBvcnRzOiBudW1iZXJbXSA9IFtdO1xuICBjb25zdCBsaW5lcyA9IHN0ZG91dC50cmltKCkuc3BsaXQoJ1xcbicpO1xuXG4gIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgIGNvbnN0IHBhcnRzID0gbGluZS50cmltKCkuc3BsaXQoL1xccysvKTtcbiAgICBpZiAocGFydHMubGVuZ3RoIDwgNSB8fCBwYXJ0c1swXT8udG9VcHBlckNhc2UoKSAhPT0gJ1RDUCcpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IFssIGxvY2FsQWRkcmVzcywgLCBzdGF0ZSwgcm93UGlkXSA9IHBhcnRzO1xuICAgIGlmIChzdGF0ZT8udG9VcHBlckNhc2UoKSAhPT0gJ0xJU1RFTklORycgfHwgcm93UGlkICE9PSBwaWQudG9TdHJpbmcoKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgY29sb25JbmRleCA9IGxvY2FsQWRkcmVzcy5sYXN0SW5kZXhPZignOicpO1xuICAgIGlmIChjb2xvbkluZGV4ID09PSAtMSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgcG9ydCA9IHBhcnNlUG9ydChsb2NhbEFkZHJlc3Muc2xpY2UoY29sb25JbmRleCArIDEpKTtcbiAgICBpZiAocG9ydCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBwb3J0cy5wdXNoKHBvcnQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwb3J0cztcbn1cbiJdfQ==
|
package/dist/get-port.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-port.d.ts","sourceRoot":"","sources":["../src/get-port.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"get-port.d.ts","sourceRoot":"","sources":["../src/get-port.ts"],"names":[],"mappings":"AAoLA;;;GAGG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAoBrD;AAED;;;GAGG;AACH,wBAAsB,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAG3D;AAMD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAiCD;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAqC7B"}
|
package/dist/get-port.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { execFile } from 'node:child_process';
|
|
2
2
|
import { readdir, readFile, readlink } from 'node:fs/promises';
|
|
3
3
|
import { promisify } from 'node:util';
|
|
4
|
+
import { parseWindowsNetstatPortsForPid } from './get-port-internals.js';
|
|
4
5
|
const execFileAsync = promisify(execFile);
|
|
5
6
|
/**
|
|
6
7
|
* Parses a port string and returns it if valid (0-65535), otherwise undefined.
|
|
@@ -150,27 +151,9 @@ async function getWindowsPorts(pid) {
|
|
|
150
151
|
try {
|
|
151
152
|
const { stdout } = await execFileAsync('cmd', [
|
|
152
153
|
'/c',
|
|
153
|
-
|
|
154
|
+
'netstat -ano -p tcp | findstr LISTENING',
|
|
154
155
|
]);
|
|
155
|
-
|
|
156
|
-
const trimmedOutput = stdout.trim();
|
|
157
|
-
if (trimmedOutput) {
|
|
158
|
-
const lines = trimmedOutput.split('\n');
|
|
159
|
-
for (const line of lines) {
|
|
160
|
-
// Extract port from the local address column
|
|
161
|
-
// Matches both IPv4 (e.g., "127.0.0.1:3000") and IPv6 bracket notation (e.g., "[::1]:3000")
|
|
162
|
-
const match = line
|
|
163
|
-
.trim()
|
|
164
|
-
.match(/^\s*TCP\s+(?:\[[\da-f:]+\]|[\d.]+):(\d+)\s+/i);
|
|
165
|
-
if (match) {
|
|
166
|
-
const port = parsePort(match[1]);
|
|
167
|
-
if (port !== undefined) {
|
|
168
|
-
ports.push(port);
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
return ports;
|
|
156
|
+
return parseWindowsNetstatPortsForPid(stdout, pid);
|
|
174
157
|
}
|
|
175
158
|
catch {
|
|
176
159
|
return [];
|
|
@@ -274,4 +257,4 @@ export async function getWorkflowPort(options) {
|
|
|
274
257
|
}
|
|
275
258
|
return ports[0];
|
|
276
259
|
}
|
|
277
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXBvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZ2V0LXBvcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFdEMsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBRTFDOztHQUVHO0FBQ0gsU0FBUyxTQUFTLENBQUMsS0FBYSxFQUFFLEtBQUssR0FBRyxFQUFFO0lBQzFDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7UUFDdEQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVELG1GQUFtRjtBQUNuRixnR0FBZ0c7QUFDaEcscUdBQXFHO0FBQ3JHLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBYSxFQUFFLEdBQVcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMzRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFFMUM7OztHQUdHO0FBQ0gsS0FBSyxVQUFVLGFBQWEsQ0FBQyxHQUFXO0lBQ3RDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxDQUFDLG9DQUFvQztJQUM5RCxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQUcsU0FBUyxVQUFV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QUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzVELElBQUksWUFBWSxFQUFFLENBQUM7UUFDakIsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDO0lBQzNCLENBQUM7SUFFRCxxRUFBcUU7SUFDckUsNEJBQTRCO0lBQzVCLDhDQUE4QztJQUM5QyxrQ0FBa0M7SUFDbEMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FBSyxhQUFhLEVBQUUsQ0FBQztRQUMzQyxPQUFPLENBQUMsS0FBSyxDQUNYLCtEQUErRCxFQUMvRCxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQ1QsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhlY0ZpbGUgfSBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHsgcmVhZGRpciwgcmVhZEZpbGUsIHJlYWRsaW5rIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5pbXBvcnQgeyBwcm9taXNpZnkgfSBmcm9tICdub2RlOnV0aWwnO1xuXG5jb25zdCBleGVjRmlsZUFzeW5jID0gcHJvbWlzaWZ5KGV4ZWNGaWxlKTtcblxuLyoqXG4gKiBQYXJzZXMgYSBwb3J0IHN0cmluZyBhbmQgcmV0dXJucyBpdCBpZiB2YWxpZCAoMC02NTUzNSksIG90aGVyd2lzZSB1bmRlZmluZWQuXG4gKi9cbmZ1bmN0aW9uIHBhcnNlUG9ydCh2YWx1ZTogc3RyaW5nLCByYWRpeCA9IDEwKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgcG9ydCA9IHBhcnNlSW50KHZhbHVlLCByYWRpeCk7XG4gIGlmICghTnVtYmVyLmlzTmFOKHBvcnQpICYmIHBvcnQgPj0gMCAmJiBwb3J0IDw9IDY1NTM1KSB7XG4gICAgcmV0dXJuIHBvcnQ7XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLy8gTk9URTogV2UgYnVpbGQgL3Byb2MgcGF0aHMgZHluYW1pY2FsbHkgdG8gcHJldmVudCBAdmVyY2VsL25mdCBmcm9tIHRyYWNpbmcgdGhlbS5cbi8vIE5GVCdzIHN0YXRpYyBhbmFseXNpcyB0cmllcyB0byBidW5kbGUgYW55IGZpbGUgcGF0aCBsaXRlcmFsIGl0IGZpbmRzIChlLmcuLCAnL3Byb2MvbmV0L3RjcCcpLlxuLy8gU2luY2UgL3Byb2MgaXMgYSB2aXJ0dWFsIExpbnV4IGZpbGVzeXN0ZW0sIHRoaXMgY2F1c2VzIGJ1aWxkIGZhaWx1cmVzIGluIEBzdmVsdGVqcy9hZGFwdGVyLXZlcmNlbC5cbmNvbnN0IGpvaW4gPSAoYXJyOiBzdHJpbmdbXSwgc2VwOiBzdHJpbmcpID0+IGFyci5qb2luKHNlcCk7XG5jb25zdCBQUk9DX1JPT1QgPSBqb2luKFsnJywgJ3Byb2MnXSwgJy8nKTtcblxuLyoqXG4gKiBHZXRzIEFMTCBsaXN0ZW5pbmcgcG9ydHMgZm9yIHRoZSBjdXJyZW50IHByb2Nlc3Mgb24gTGludXggYnkgcmVhZGluZyAvcHJvYyBmaWxlc3lzdGVtLlxuICogUmV0dXJucyBwb3J0cyBpbiBvcmRlciBvZiBmaWxlIGRlc2NyaXB0b3IgKGRldGVybWluaXN0aWMgb3JkZXJpbmcpLlxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRMaW51eFBvcnRzKHBpZDogbnVtYmVyKTogUHJvbWlzZTxudW1iZXJbXT4ge1xuICBjb25zdCBsaXN0ZW5TdGF0ZSA9ICcwQSc7IC8vIFRDUCBMSVNURU4gc3RhdGUgaW4gL3Byb2MvbmV0L3RjcFxuICBjb25zdCB0Y3BGaWxlcyA9IFtgJHtQUk9DX1JPT1R9L25ldC90Y3BgLCBgJHtQUk9DX1JPT1R9L25ldC90Y3A2YF0gYXMgY29uc3Q7XG5cbiAgLy8gU3RlcCAxOiBHZXQgc29ja2V0IGlub2RlcyBmcm9tIC9wcm9jLzxwaWQ+L2ZkLyBpbiBvcmRlclxuICAvLyBXZSBwcmVzZXJ2ZSBvcmRlciB0byBtYWludGFpbiBkZXRlcm1pbmlzdGljIGJlaGF2aW9yXG4gIC8vIFVzZSBib3RoIGFycmF5IChmb3Igb3JkZXIpIGFuZCBTZXQgKGZvciBPKDEpIGxvb2t1cClcbiAgY29uc3Qgc29ja2V0SW5vZGVzOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCBzb2NrZXRJbm9kZXNTZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgY29uc3QgZmRQYXRoID0gYCR7UFJPQ19ST09UfS8ke3BpZH0vZmRgO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgZmRzID0gYXdhaXQgcmVhZGRpcihmZFBhdGgpO1xuICAgIC8vIFNvcnQgRkRzIG51bWVyaWNhbGx5IHRvIGVuc3VyZSBkZXRlcm1pbmlzdGljIG9yZGVyIChGRHMgYXJlIGFsd2F5cyBudW1lcmljIHN0cmluZ3MpXG4gICAgY29uc3Qgc29ydGVkRmRzID0gZmRzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIGNvbnN0IG51bUEgPSBOdW1iZXIucGFyc2VJbnQoYSwgMTApO1xuICAgICAgY29uc3QgbnVtQiA9IE51bWJlci5wYXJzZUludChiLCAxMCk7XG4gICAgICByZXR1cm4gbnVtQSAtIG51bUI7XG4gICAgfSk7XG5cbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFxuICAgICAgc29ydGVkRmRzLm1hcChhc3luYyAoZmQpID0+IHtcbiAgICAgICAgY29uc3QgbGluayA9IGF3YWl0IHJlYWRsaW5rKGAke2ZkUGF0aH0vJHtmZH1gKTtcbiAgICAgICAgLy8gU29ja2V0IGxpbmtzIGxvb2sgbGlrZTogc29ja2V0OlsxMjM0NV1cbiAgICAgICAgY29uc3QgbWF0Y2ggPSBsaW5rLm1hdGNoKC9ec29ja2V0OlxcWyhcXGQrKVxcXSQvKTtcbiAgICAgICAgcmV0dXJuIG1hdGNoPy5bMV0gPz8gbnVsbDtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGZvciAoY29uc3QgcmVzdWx0IG9mIHJlc3VsdHMpIHtcbiAgICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSAnZnVsZmlsbGVkJyAmJiByZXN1bHQudmFsdWUpIHtcbiAgICAgICAgc29ja2V0SW5vZGVzLnB1c2gocmVzdWx0LnZhbHVlKTtcbiAgICAgICAgc29ja2V0SW5vZGVzU2V0LmFkZChyZXN1bHQudmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCB7XG4gICAgLy8gUHJvY2VzcyBtaWdodCBub3QgZXhpc3Qgb3Igbm8gcGVybWlzc2lvblxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGlmIChzb2NrZXRJbm9kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgLy8gU3RlcCAyOiBSZWFkIC9wcm9jL25ldC90Y3AgYW5kIC9wcm9jL25ldC90Y3A2IHRvIGZpbmQgbGlzdGVuaW5nIHNvY2tldHNcbiAgLy8gRm9ybWF0OiBzbCBsb2NhbF9hZGRyZXNzIHJlbV9hZGRyZXNzIHN0IC4uLiBpbm9kZVxuICAvLyBsb2NhbF9hZGRyZXNzIGlzIGhleCBJUDpwb3J0LCBzdD0wQSBtZWFucyBMSVNURU5cbiAgY29uc3QgaW5vZGVUb1BvcnQgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuXG4gIGZvciAoY29uc3QgdGNwRmlsZSBvZiB0Y3BGaWxlcykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgcmVhZEZpbGUodGNwRmlsZSwgJ3V0ZjgnKTtcbiAgICAgIGNvbnN0IGxpbmVzID0gY29udGVudC5zcGxpdCgnXFxuJykuc2xpY2UoMSk7IC8vIFNraXAgaGVhZGVyXG5cbiAgICAgIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgICAgICBpZiAoIWxpbmUudHJpbSgpKSBjb250aW51ZTsgLy8gU2tpcCBlbXB0eSBsaW5lc1xuXG4gICAgICAgIGNvbnN0IHBhcnRzID0gbGluZS50cmltKCkuc3BsaXQoL1xccysvKTtcbiAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCA8IDEwKSBjb250aW51ZTtcblxuICAgICAgICBjb25zdCBsb2NhbEFkZHIgPSBwYXJ0c1sxXTsgLy8gZS5nLiwgXCIwMDAwMDAwMDowQkI4XCIgKDAuMC4wLjA6MzAwMClcbiAgICAgICAgY29uc3Qgc3RhdGUgPSBwYXJ0c1szXTsgLy8gXCIwQVwiID0gTElTVEVOXG4gICAgICAgIGNvbnN0IGlub2RlID0gcGFydHNbOV07XG5cbiAgICAgICAgaWYgKCFsb2NhbEFkZHIgfHwgc3RhdGUgIT09IGxpc3RlblN0YXRlIHx8ICFpbm9kZSkgY29udGludWU7XG4gICAgICAgIGlmICghc29ja2V0SW5vZGVzU2V0Lmhhcyhpbm9kZSkpIGNvbnRpbnVlO1xuXG4gICAgICAgIC8vIEV4dHJhY3QgcG9ydCBmcm9tIGhleCBmb3JtYXQgKGUuZy4sIFwiMEJCOFwiIC0+IDMwMDApXG4gICAgICAgIGNvbnN0IGNvbG9uSW5kZXggPSBsb2NhbEFkZHIuaW5kZXhPZignOicpO1xuICAgICAgICBpZiAoY29sb25JbmRleCA9PT0gLTEpIGNvbnRpbnVlO1xuXG4gICAgICAgIGNvbnN0IHBvcnRIZXggPSBsb2NhbEFkZHIuc2xpY2UoY29sb25JbmRleCArIDEpO1xuICAgICAgICBpZiAoIXBvcnRIZXgpIGNvbnRpbnVlO1xuXG4gICAgICAgIGNvbnN0IHBvcnQgPSBwYXJzZVBvcnQocG9ydEhleCwgMTYpO1xuICAgICAgICBpZiAocG9ydCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaW5vZGVUb1BvcnQuc2V0KGlub2RlLCBwb3J0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2gge31cbiAgfVxuXG4gIC8vIFJldHVybiBhbGwgcG9ydHMgaW4gc29ja2V0IGlub2RlIG9yZGVyIChkZXRlcm1pbmlzdGljKVxuICBjb25zdCBwb3J0czogbnVtYmVyW10gPSBbXTtcbiAgZm9yIChjb25zdCBpbm9kZSBvZiBzb2NrZXRJbm9kZXMpIHtcbiAgICBjb25zdCBwb3J0ID0gaW5vZGVUb1BvcnQuZ2V0KGlub2RlKTtcbiAgICBpZiAocG9ydCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBwb3J0cy5wdXNoKHBvcnQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwb3J0cztcbn1cblxuLyoqXG4gKiBHZXRzIEFMTCBsaXN0ZW5pbmcgcG9ydHMgZm9yIHRoZSBjdXJyZW50IHByb2Nlc3Mgb24gbWFjT1MgdXNpbmcgbHNvZi5cbiAqIFJldHVybnMgcG9ydHMgaW4gdGhlIG9yZGVyIHRoZXkgYXBwZWFyIGluIGxzb2Ygb3V0cHV0LlxuICovXG5hc3luYyBmdW5jdGlvbiBnZXREYXJ3aW5Qb3J0cyhwaWQ6IG51bWJlcik6IFByb21pc2U8bnVtYmVyW10+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCB7IHN0ZG91dCB9ID0gYXdhaXQgZXhlY0ZpbGVBc3luYygnbHNvZicsIFtcbiAgICAgICctYScsXG4gICAgICAnLWknLFxuICAgICAgJy1QJyxcbiAgICAgICctbicsXG4gICAgICAnLXAnLFxuICAgICAgcGlkLnRvU3RyaW5nKCksXG4gICAgXSk7XG5cbiAgICBjb25zdCBwb3J0czogbnVtYmVyW10gPSBbXTtcbiAgICBjb25zdCBsaW5lcyA9IHN0ZG91dC5zcGxpdCgnXFxuJyk7XG5cbiAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICAgIGlmIChsaW5lLmluY2x1ZGVzKCdMSVNURU4nKSkge1xuICAgICAgICAvLyBDb2x1bW4gOSAoMC1pbmRleGVkOiA4KSBjb250YWlucyB0aGUgYWRkcmVzcyBsaWtlIFwiKjozMDAwXCIgb3IgXCIxMjcuMC4wLjE6MzAwMFwiXG4gICAgICAgIGNvbnN0IHBhcnRzID0gbGluZS50cmltKCkuc3BsaXQoL1xccysvKTtcbiAgICAgICAgY29uc3QgYWRkciA9IHBhcnRzWzhdO1xuICAgICAgICBpZiAoYWRkcikge1xuICAgICAgICAgIGNvbnN0IGNvbG9uSW5kZXggPSBhZGRyLmxhc3RJbmRleE9mKCc6Jyk7XG4gICAgICAgICAgaWYgKGNvbG9uSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICBjb25zdCBwb3J0ID0gcGFyc2VQb3J0KGFkZHIuc2xpY2UoY29sb25JbmRleCArIDEpKTtcbiAgICAgICAgICAgIGlmIChwb3J0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgcG9ydHMucHVzaChwb3J0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcG9ydHM7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBbXTtcbiAgfVxufVxuXG4vKipcbiAqIEdldHMgQUxMIGxpc3RlbmluZyBwb3J0cyBmb3IgdGhlIGN1cnJlbnQgcHJvY2VzcyBvbiBXaW5kb3dzIHVzaW5nIG5ldHN0YXQuXG4gKiBSZXR1cm5zIHBvcnRzIGluIHRoZSBvcmRlciB0aGV5IGFwcGVhciBpbiBuZXRzdGF0IG91dHB1dC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0V2luZG93c1BvcnRzKHBpZDogbnVtYmVyKTogUHJvbWlzZTxudW1iZXJbXT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHsgc3Rkb3V0IH0gPSBhd2FpdCBleGVjRmlsZUFzeW5jKCdjbWQnLCBbXG4gICAgICAnL2MnLFxuICAgICAgYG5ldHN0YXQgLWFubyB8IGZpbmRzdHIgJHtwaWR9IHwgZmluZHN0ciBMSVNURU5JTkdgLFxuICAgIF0pO1xuXG4gICAgY29uc3QgcG9ydHM6IG51bWJlcltdID0gW107XG4gICAgY29uc3QgdHJpbW1lZE91dHB1dCA9IHN0ZG91dC50cmltKCk7XG5cbiAgICBpZiAodHJpbW1lZE91dHB1dCkge1xuICAgICAgY29uc3QgbGluZXMgPSB0cmltbWVkT3V0cHV0LnNwbGl0KCdcXG4nKTtcbiAgICAgIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgICAgICAvLyBFeHRyYWN0IHBvcnQgZnJvbSB0aGUgbG9jYWwgYWRkcmVzcyBjb2x1bW5cbiAgICAgICAgLy8gTWF0Y2hlcyBib3RoIElQdjQgKGUuZy4sIFwiMTI3LjAuMC4xOjMwMDBcIikgYW5kIElQdjYgYnJhY2tldCBub3RhdGlvbiAoZS5nLiwgXCJbOjoxXTozMDAwXCIpXG4gICAgICAgIGNvbnN0IG1hdGNoID0gbGluZVxuICAgICAgICAgIC50cmltKClcbiAgICAgICAgICAubWF0Y2goL15cXHMqVENQXFxzKyg/OlxcW1tcXGRhLWY6XStcXF18W1xcZC5dKyk6KFxcZCspXFxzKy9pKTtcbiAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgY29uc3QgcG9ydCA9IHBhcnNlUG9ydChtYXRjaFsxXSk7XG4gICAgICAgICAgaWYgKHBvcnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcG9ydHMucHVzaChwb3J0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcG9ydHM7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBbXTtcbiAgfVxufVxuXG4vKipcbiAqIEdldHMgYWxsIGxpc3RlbmluZyBwb3J0cyBmb3IgdGhlIGN1cnJlbnQgcHJvY2Vzcy5cbiAqIEByZXR1cm5zIEFycmF5IG9mIHBvcnQgbnVtYmVycyB0aGUgcHJvY2VzcyBpcyBsaXN0ZW5pbmcgb24sIGluIGRldGVybWluaXN0aWMgb3JkZXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRBbGxQb3J0cygpOiBQcm9taXNlPG51bWJlcltdPiB7XG4gIGNvbnN0IHsgcGlkLCBwbGF0Zm9ybSB9ID0gcHJvY2VzcztcblxuICB0cnkge1xuICAgIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgICAgcmV0dXJuIGF3YWl0IGdldExpbnV4UG9ydHMocGlkKTtcbiAgICAgIGNhc2UgJ2Rhcndpbic6XG4gICAgICAgIHJldHVybiBhd2FpdCBnZXREYXJ3aW5Qb3J0cyhwaWQpO1xuICAgICAgY2FzZSAnd2luMzInOlxuICAgICAgICByZXR1cm4gYXdhaXQgZ2V0V2luZG93c1BvcnRzKHBpZCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgY29uc29sZS5kZWJ1ZygnW2dldEFsbFBvcnRzXSBEZXRlY3Rpb24gZmFpbGVkOicsIGVycm9yKTtcbiAgICB9XG4gICAgcmV0dXJuIFtdO1xuICB9XG59XG5cbi8qKlxuICogR2V0cyB0aGUgcG9ydCBudW1iZXIgdGhhdCB0aGUgcHJvY2VzcyBpcyBsaXN0ZW5pbmcgb24uXG4gKiBAcmV0dXJucyBUaGUgcG9ydCBudW1iZXIgdGhhdCB0aGUgcHJvY2VzcyBpcyBsaXN0ZW5pbmcgb24sIG9yIHVuZGVmaW5lZCBpZiB0aGUgcHJvY2VzcyBpcyBub3QgbGlzdGVuaW5nIG9uIGFueSBwb3J0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0UG9ydCgpOiBQcm9taXNlPG51bWJlciB8IHVuZGVmaW5lZD4ge1xuICBjb25zdCBwb3J0cyA9IGF3YWl0IGdldEFsbFBvcnRzKCk7XG4gIHJldHVybiBwb3J0c1swXTtcbn1cblxuLy8gQ29uZmlndXJhdGlvbiBmb3IgSFRUUCBwcm9iaW5nXG5jb25zdCBQUk9CRV9USU1FT1VUX01TID0gNTAwO1xuY29uc3QgUFJPQkVfRU5EUE9JTlQgPSAnLy53ZWxsLWtub3duL3dvcmtmbG93L3YxL2Zsb3c/X19oZWFsdGgnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb2JlT3B0aW9ucyB7XG4gIGVuZHBvaW50Pzogc3RyaW5nO1xuICB0aW1lb3V0PzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFByb2JlcyBhIHBvcnQgdG8gY2hlY2sgaWYgaXQncyBzZXJ2aW5nIHRoZSB3b3JrZmxvdyBIVFRQIHNlcnZlci5cbiAqIFVzZXMgSEVBRCByZXF1ZXN0IHRvIG1pbmltaXplIG92ZXJoZWFkLlxuICpcbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlIHBvcnQgcmVzcG9uZHMgd2l0aCBhIDIwMCBzdGF0dXMgZnJvbSB0aGUgaGVhbHRoIGNoZWNrIGVuZHBvaW50XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHByb2JlUG9ydChcbiAgcG9ydDogbnVtYmVyLFxuICBvcHRpb25zOiBQcm9iZU9wdGlvbnMgPSB7fVxuKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IHsgZW5kcG9pbnQgPSBQUk9CRV9FTkRQT0lOVCwgdGltZW91dCA9IFBST0JFX1RJTUVPVVRfTVMgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgY29uc3QgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiBjb250cm9sbGVyLmFib3J0KCksIHRpbWVvdXQpO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgaHR0cDovL2xvY2FsaG9zdDoke3BvcnR9JHtlbmRwb2ludH1gLCB7XG4gICAgICBtZXRob2Q6ICdIRUFEJyxcbiAgICAgIHNpZ25hbDogY29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG5cbiAgICAvLyBUaGUgd29ya2Zsb3cgaGVhbHRoIGVuZHBvaW50IHJldHVybnMgMjAwIGZvciBoZWFsdGh5XG4gICAgcmV0dXJuIHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwO1xuICB9IGNhdGNoIHtcbiAgICAvLyBDb25uZWN0aW9uIHJlZnVzZWQsIHRpbWVvdXQsIG9yIG90aGVyIGVycm9yXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9IGZpbmFsbHkge1xuICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICB9XG59XG5cbi8qKlxuICogR2V0cyB0aGUgd29ya2Zsb3cgc2VydmVyIHBvcnQgYnkgcHJvYmluZyBhbGwgbGlzdGVuaW5nIHBvcnRzLlxuICogVGhpcyBpcyBtb3JlIHJlbGlhYmxlIHRoYW4gZ2V0UG9ydCgpIHdoZW4gb3RoZXIgc2VydmljZXMgKGxpa2UgTm9kZS5qcyBpbnNwZWN0b3IpXG4gKiBtYXkgYWxzbyBiZSBsaXN0ZW5pbmcgb24gcG9ydHMuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBjb25maWd1cmF0aW9uIGZvciBwcm9iaW5nXG4gKiBAcmV0dXJucyBUaGUgcG9ydCBudW1iZXIgb2YgdGhlIHdvcmtmbG93IHNlcnZlciwgb3IgdW5kZWZpbmVkIGlmIG5vdCBmb3VuZFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0V29ya2Zsb3dQb3J0KFxuICBvcHRpb25zPzogUHJvYmVPcHRpb25zXG4pOiBQcm9taXNlPG51bWJlciB8IHVuZGVmaW5lZD4ge1xuICBjb25zdCBwb3J0cyA9IGF3YWl0IGdldEFsbFBvcnRzKCk7XG5cbiAgaWYgKHBvcnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBpZiAocG9ydHMubGVuZ3RoID09PSAxKSB7XG4gICAgLy8gT25seSBvbmUgcG9ydCwgbm8gbmVlZCB0byBwcm9iZVxuICAgIHJldHVybiBwb3J0c1swXTtcbiAgfVxuXG4gIC8vIFByb2JlIGFsbCBwb3J0cyBpbiBwYXJhbGxlbFxuICBjb25zdCBwcm9iZVJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBwb3J0cy5tYXAoYXN5bmMgKHBvcnQpID0+ICh7XG4gICAgICBwb3J0LFxuICAgICAgaXNXb3JrZmxvdzogYXdhaXQgcHJvYmVQb3J0KHBvcnQsIG9wdGlvbnMpLFxuICAgIH0pKVxuICApO1xuXG4gIC8vIFJldHVybiBmaXJzdCBwb3J0IHRoYXQgcmVzcG9uZGVkIGFzIHdvcmtmbG93IHNlcnZlclxuICBjb25zdCB3b3JrZmxvd1BvcnQgPSBwcm9iZVJlc3VsdHMuZmluZCgocikgPT4gci5pc1dvcmtmbG93KTtcbiAgaWYgKHdvcmtmbG93UG9ydCkge1xuICAgIHJldHVybiB3b3JrZmxvd1BvcnQucG9ydDtcbiAgfVxuXG4gIC8vIEZhbGxiYWNrIHRvIGZpcnN0IHBvcnQgaWYgcHJvYmluZyBkb2Vzbid0IGlkZW50aWZ5IHdvcmtmbG93IHNlcnZlclxuICAvLyBUaGlzIGhhbmRsZXMgY2FzZXMgd2hlcmU6XG4gIC8vIC0gU2VydmVyIGhhc24ndCBzdGFydGVkIHdvcmtmbG93IHJvdXRlcyB5ZXRcbiAgLy8gLSBOZXR3b3JrIGlzc3VlcyBkdXJpbmcgcHJvYmluZ1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcpIHtcbiAgICBjb25zb2xlLmRlYnVnKFxuICAgICAgJ1tnZXRXb3JrZmxvd1BvcnRdIFByb2JpbmcgZmFpbGVkLCBmYWxsaW5nIGJhY2sgdG8gZmlyc3QgcG9ydDonLFxuICAgICAgcG9ydHNbMF1cbiAgICApO1xuICB9XG4gIHJldHVybiBwb3J0c1swXTtcbn1cbiJdfQ==
|
|
260
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXBvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZ2V0LXBvcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdEMsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFekUsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBRTFDOztHQUVHO0FBQ0gsU0FBUyxTQUFTLENBQUMsS0FBYSxFQUFFLEtBQUssR0FBRyxFQUFFO0lBQzFDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7UUFDdEQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVELG1GQUFtRjtBQUNuRixnR0FBZ0c7QUFDaEcscUdBQXFHO0FBQ3JHLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBYSxFQUFFLEdBQVcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMzRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFFMUM7OztHQUdHO0FBQ0gsS0FBSyxVQUFVLGFBQWEsQ0FBQyxHQUFXO0lBQ3RDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxDQUFDLG9D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LElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN2QixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3ZCLGtDQUFrQztRQUNsQyxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBRUQsOEJBQThCO0lBQzlCLE1BQU0sWUFBWSxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDcEMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3pCLElBQUk7UUFDSixVQUFVLEVBQUUsTUFBTSxTQUFTLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQztLQUMzQyxDQUFDLENBQUMsQ0FDSixDQUFDO0lBRUYsc0RBQXNEO0lBQ3RELE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM1RCxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2pCLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQztJQUMzQixDQUFDO0lBRUQscUVBQXFFO0lBQ3JFLDRCQUE0QjtJQUM1Qiw4Q0FBOEM7SUFDOUMsa0NBQWtDO0lBQ2xDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEtBQUssYUFBYSxFQUFFLENBQUM7UUFDM0MsT0FBTyxDQUFDLEtBQUssQ0FDWCwrREFBK0QsRUFDL0QsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUNULENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4ZWNGaWxlIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJztcbmltcG9ydCB7IHJlYWRkaXIsIHJlYWRGaWxlLCByZWFkbGluayB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuaW1wb3J0IHsgcHJvbWlzaWZ5IH0gZnJvbSAnbm9kZTp1dGlsJztcbmltcG9ydCB7IHBhcnNlV2luZG93c05ldHN0YXRQb3J0c0ZvclBpZCB9IGZyb20gJy4vZ2V0LXBvcnQtaW50ZXJuYWxzLmpzJztcblxuY29uc3QgZXhlY0ZpbGVBc3luYyA9IHByb21pc2lmeShleGVjRmlsZSk7XG5cbi8qKlxuICogUGFyc2VzIGEgcG9ydCBzdHJpbmcgYW5kIHJldHVybnMgaXQgaWYgdmFsaWQgKDAtNjU1MzUpLCBvdGhlcndpc2UgdW5kZWZpbmVkLlxuICovXG5mdW5jdGlvbiBwYXJzZVBvcnQodmFsdWU6IHN0cmluZywgcmFkaXggPSAxMCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHBvcnQgPSBwYXJzZUludCh2YWx1ZSwgcmFkaXgpO1xuICBpZiAoIU51bWJlci5pc05hTihwb3J0KSAmJiBwb3J0ID49IDAgJiYgcG9ydCA8PSA2NTUzNSkge1xuICAgIHJldHVybiBwb3J0O1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8vIE5PVEU6IFdlIGJ1aWxkIC9wcm9jIHBhdGhzIGR5bmFtaWNhbGx5IHRvIHByZXZlbnQgQHZlcmNlbC9uZnQgZnJvbSB0cmFjaW5nIHRoZW0uXG4vLyBORlQncyBzdGF0aWMgYW5hbHlzaXMgdHJpZXMgdG8gYnVuZGxlIGFueSBmaWxlIHBhdGggbGl0ZXJhbCBpdCBmaW5kcyAoZS5nLiwgJy9wcm9jL25ldC90Y3AnKS5cbi8vIFNpbmNlIC9wcm9jIGlzIGEgdmlydHVhbCBMaW51eCBmaWxlc3lzdGVtLCB0aGlzIGNhdXNlcyBidWlsZCBmYWlsdXJlcyBpbiBAc3ZlbHRlanMvYWRhcHRlci12ZXJjZWwuXG5jb25zdCBqb2luID0gKGFycjogc3RyaW5nW10sIHNlcDogc3RyaW5nKSA9PiBhcnIuam9pbihzZXApO1xuY29uc3QgUFJPQ19ST09UID0gam9pbihbJycsICdwcm9jJ10sICcvJyk7XG5cbi8qKlxuICogR2V0cyBBTEwgbGlzdGVuaW5nIHBvcnRzIGZvciB0aGUgY3VycmVudCBwcm9jZXNzIG9uIExpbnV4IGJ5IHJlYWRpbmcgL3Byb2MgZmlsZXN5c3RlbS5cbiAqIFJldHVybnMgcG9ydHMgaW4gb3JkZXIgb2YgZmlsZSBkZXNjcmlwdG9yIChkZXRlcm1pbmlzdGljIG9yZGVyaW5nKS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0TGludXhQb3J0cyhwaWQ6IG51bWJlcik6IFByb21pc2U8bnVtYmVyW10+IHtcbiAgY29uc3QgbGlzdGVuU3RhdGUgPSAnMEEnOyAvLyBUQ1AgTElTVEVOIHN0YXRlIGluIC9wcm9jL25ldC90Y3BcbiAgY29uc3QgdGNwRmlsZXMgPSBbYCR7UFJPQ19ST09UfS9uZXQvdGNwYCwgYCR7UFJPQ19ST09UfS9uZXQvdGNwNmBdIGFzIGNvbnN0O1xuXG4gIC8vIFN0ZXAgMTogR2V0IHNvY2tldCBpbm9kZXMgZnJvbSAvcHJvYy88cGlkPi9mZC8gaW4gb3JkZXJcbiAgLy8gV2UgcHJlc2VydmUgb3JkZXIgdG8gbWFpbnRhaW4gZGV0ZXJtaW5pc3RpYyBiZWhhdmlvclxuICAvLyBVc2UgYm90aCBhcnJheSAoZm9yIG9yZGVyKSBhbmQgU2V0IChmb3IgTygxKSBsb29rdXApXG4gIGNvbnN0IHNvY2tldElub2Rlczogc3RyaW5nW10gPSBbXTtcbiAgY29uc3Qgc29ja2V0SW5vZGVzU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGNvbnN0IGZkUGF0aCA9IGAke1BST0NfUk9PVH0vJHtwaWR9L2ZkYDtcblxuICB0cnkge1xuICAgIGNvbnN0IGZkcyA9IGF3YWl0IHJlYWRkaXIoZmRQYXRoKTtcbiAgICAvLyBTb3J0IEZEcyBudW1lcmljYWxseSB0byBlbnN1cmUgZGV0ZXJtaW5pc3RpYyBvcmRlciAoRkRzIGFyZSBhbHdheXMgbnVtZXJpYyBzdHJpbmdzKVxuICAgIGNvbnN0IHNvcnRlZEZkcyA9IGZkcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICBjb25zdCBudW1BID0gTnVtYmVyLnBhcnNlSW50KGEsIDEwKTtcbiAgICAgIGNvbnN0IG51bUIgPSBOdW1iZXIucGFyc2VJbnQoYiwgMTApO1xuICAgICAgcmV0dXJuIG51bUEgLSBudW1CO1xuICAgIH0pO1xuXG4gICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChcbiAgICAgIHNvcnRlZEZkcy5tYXAoYXN5bmMgKGZkKSA9PiB7XG4gICAgICAgIGNvbnN0IGxpbmsgPSBhd2FpdCByZWFkbGluayhgJHtmZFBhdGh9LyR7ZmR9YCk7XG4gICAgICAgIC8vIFNvY2tldCBsaW5rcyBsb29rIGxpa2U6IHNvY2tldDpbMTIzNDVdXG4gICAgICAgIGNvbnN0IG1hdGNoID0gbGluay5tYXRjaCgvXnNvY2tldDpcXFsoXFxkKylcXF0kLyk7XG4gICAgICAgIHJldHVybiBtYXRjaD8uWzFdID8/IG51bGw7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBmb3IgKGNvbnN0IHJlc3VsdCBvZiByZXN1bHRzKSB7XG4gICAgICBpZiAocmVzdWx0LnN0YXR1cyA9PT0gJ2Z1bGZpbGxlZCcgJiYgcmVzdWx0LnZhbHVlKSB7XG4gICAgICAgIHNvY2tldElub2Rlcy5wdXNoKHJlc3VsdC52YWx1ZSk7XG4gICAgICAgIHNvY2tldElub2Rlc1NldC5hZGQocmVzdWx0LnZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIC8vIFByb2Nlc3MgbWlnaHQgbm90IGV4aXN0IG9yIG5vIHBlcm1pc3Npb25cbiAgICByZXR1cm4gW107XG4gIH1cblxuICBpZiAoc29ja2V0SW5vZGVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIC8vIFN0ZXAgMjogUmVhZCAvcHJvYy9uZXQvdGNwIGFuZCAvcHJvYy9uZXQvdGNwNiB0byBmaW5kIGxpc3RlbmluZyBzb2NrZXRzXG4gIC8vIEZvcm1hdDogc2wgbG9jYWxfYWRkcmVzcyByZW1fYWRkcmVzcyBzdCAuLi4gaW5vZGVcbiAgLy8gbG9jYWxfYWRkcmVzcyBpcyBoZXggSVA6cG9ydCwgc3Q9MEEgbWVhbnMgTElTVEVOXG4gIGNvbnN0IGlub2RlVG9Qb3J0ID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcblxuICBmb3IgKGNvbnN0IHRjcEZpbGUgb2YgdGNwRmlsZXMpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IHJlYWRGaWxlKHRjcEZpbGUsICd1dGY4Jyk7XG4gICAgICBjb25zdCBsaW5lcyA9IGNvbnRlbnQuc3BsaXQoJ1xcbicpLnNsaWNlKDEpOyAvLyBTa2lwIGhlYWRlclxuXG4gICAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICAgICAgaWYgKCFsaW5lLnRyaW0oKSkgY29udGludWU7IC8vIFNraXAgZW1wdHkgbGluZXNcblxuICAgICAgICBjb25zdCBwYXJ0cyA9IGxpbmUudHJpbSgpLnNwbGl0KC9cXHMrLyk7XG4gICAgICAgIGlmIChwYXJ0cy5sZW5ndGggPCAxMCkgY29udGludWU7XG5cbiAgICAgICAgY29uc3QgbG9jYWxBZGRyID0gcGFydHNbMV07IC8vIGUuZy4sIFwiMDAwMDAwMDA6MEJCOFwiICgwLjAuMC4wOjMwMDApXG4gICAgICAgIGNvbnN0IHN0YXRlID0gcGFydHNbM107IC8vIFwiMEFcIiA9IExJU1RFTlxuICAgICAgICBjb25zdCBpbm9kZSA9IHBhcnRzWzldO1xuXG4gICAgICAgIGlmICghbG9jYWxBZGRyIHx8IHN0YXRlICE9PSBsaXN0ZW5TdGF0ZSB8fCAhaW5vZGUpIGNvbnRpbnVlO1xuICAgICAgICBpZiAoIXNvY2tldElub2Rlc1NldC5oYXMoaW5vZGUpKSBjb250aW51ZTtcblxuICAgICAgICAvLyBFeHRyYWN0IHBvcnQgZnJvbSBoZXggZm9ybWF0IChlLmcuLCBcIjBCQjhcIiAtPiAzMDAwKVxuICAgICAgICBjb25zdCBjb2xvbkluZGV4ID0gbG9jYWxBZGRyLmluZGV4T2YoJzonKTtcbiAgICAgICAgaWYgKGNvbG9uSW5kZXggPT09IC0xKSBjb250aW51ZTtcblxuICAgICAgICBjb25zdCBwb3J0SGV4ID0gbG9jYWxBZGRyLnNsaWNlKGNvbG9uSW5kZXggKyAxKTtcbiAgICAgICAgaWYgKCFwb3J0SGV4KSBjb250aW51ZTtcblxuICAgICAgICBjb25zdCBwb3J0ID0gcGFyc2VQb3J0KHBvcnRIZXgsIDE2KTtcbiAgICAgICAgaWYgKHBvcnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGlub2RlVG9Qb3J0LnNldChpbm9kZSwgcG9ydCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIHt9XG4gIH1cblxuICAvLyBSZXR1cm4gYWxsIHBvcnRzIGluIHNvY2tldCBpbm9kZSBvcmRlciAoZGV0ZXJtaW5pc3RpYylcbiAgY29uc3QgcG9ydHM6IG51bWJlcltdID0gW107XG4gIGZvciAoY29uc3QgaW5vZGUgb2Ygc29ja2V0SW5vZGVzKSB7XG4gICAgY29uc3QgcG9ydCA9IGlub2RlVG9Qb3J0LmdldChpbm9kZSk7XG4gICAgaWYgKHBvcnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcG9ydHMucHVzaChwb3J0KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcG9ydHM7XG59XG5cbi8qKlxuICogR2V0cyBBTEwgbGlzdGVuaW5nIHBvcnRzIGZvciB0aGUgY3VycmVudCBwcm9jZXNzIG9uIG1hY09TIHVzaW5nIGxzb2YuXG4gKiBSZXR1cm5zIHBvcnRzIGluIHRoZSBvcmRlciB0aGV5IGFwcGVhciBpbiBsc29mIG91dHB1dC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0RGFyd2luUG9ydHMocGlkOiBudW1iZXIpOiBQcm9taXNlPG51bWJlcltdPiB7XG4gIHRyeSB7XG4gICAgY29uc3QgeyBzdGRvdXQgfSA9IGF3YWl0IGV4ZWNGaWxlQXN5bmMoJ2xzb2YnLCBbXG4gICAgICAnLWEnLFxuICAgICAgJy1pJyxcbiAgICAgICctUCcsXG4gICAgICAnLW4nLFxuICAgICAgJy1wJyxcbiAgICAgIHBpZC50b1N0cmluZygpLFxuICAgIF0pO1xuXG4gICAgY29uc3QgcG9ydHM6IG51bWJlcltdID0gW107XG4gICAgY29uc3QgbGluZXMgPSBzdGRvdXQuc3BsaXQoJ1xcbicpO1xuXG4gICAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgICBpZiAobGluZS5pbmNsdWRlcygnTElTVEVOJykpIHtcbiAgICAgICAgLy8gQ29sdW1uIDkgKDAtaW5kZXhlZDogOCkgY29udGFpbnMgdGhlIGFkZHJlc3MgbGlrZSBcIio6MzAwMFwiIG9yIFwiMTI3LjAuMC4xOjMwMDBcIlxuICAgICAgICBjb25zdCBwYXJ0cyA9IGxpbmUudHJpbSgpLnNwbGl0KC9cXHMrLyk7XG4gICAgICAgIGNvbnN0IGFkZHIgPSBwYXJ0c1s4XTtcbiAgICAgICAgaWYgKGFkZHIpIHtcbiAgICAgICAgICBjb25zdCBjb2xvbkluZGV4ID0gYWRkci5sYXN0SW5kZXhPZignOicpO1xuICAgICAgICAgIGlmIChjb2xvbkluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgY29uc3QgcG9ydCA9IHBhcnNlUG9ydChhZGRyLnNsaWNlKGNvbG9uSW5kZXggKyAxKSk7XG4gICAgICAgICAgICBpZiAocG9ydCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIHBvcnRzLnB1c2gocG9ydCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBvcnRzO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gW107XG4gIH1cbn1cblxuLyoqXG4gKiBHZXRzIEFMTCBsaXN0ZW5pbmcgcG9ydHMgZm9yIHRoZSBjdXJyZW50IHByb2Nlc3Mgb24gV2luZG93cyB1c2luZyBuZXRzdGF0LlxuICogUmV0dXJucyBwb3J0cyBpbiB0aGUgb3JkZXIgdGhleSBhcHBlYXIgaW4gbmV0c3RhdCBvdXRwdXQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldFdpbmRvd3NQb3J0cyhwaWQ6IG51bWJlcik6IFByb21pc2U8bnVtYmVyW10+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCB7IHN0ZG91dCB9ID0gYXdhaXQgZXhlY0ZpbGVBc3luYygnY21kJywgW1xuICAgICAgJy9jJyxcbiAgICAgICduZXRzdGF0IC1hbm8gLXAgdGNwIHwgZmluZHN0ciBMSVNURU5JTkcnLFxuICAgIF0pO1xuXG4gICAgcmV0dXJuIHBhcnNlV2luZG93c05ldHN0YXRQb3J0c0ZvclBpZChzdGRvdXQsIHBpZCk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBbXTtcbiAgfVxufVxuXG4vKipcbiAqIEdldHMgYWxsIGxpc3RlbmluZyBwb3J0cyBmb3IgdGhlIGN1cnJlbnQgcHJvY2Vzcy5cbiAqIEByZXR1cm5zIEFycmF5IG9mIHBvcnQgbnVtYmVycyB0aGUgcHJvY2VzcyBpcyBsaXN0ZW5pbmcgb24sIGluIGRldGVybWluaXN0aWMgb3JkZXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRBbGxQb3J0cygpOiBQcm9taXNlPG51bWJlcltdPiB7XG4gIGNvbnN0IHsgcGlkLCBwbGF0Zm9ybSB9ID0gcHJvY2VzcztcblxuICB0cnkge1xuICAgIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgICAgcmV0dXJuIGF3YWl0IGdldExpbnV4UG9ydHMocGlkKTtcbiAgICAgIGNhc2UgJ2Rhcndpbic6XG4gICAgICAgIHJldHVybiBhd2FpdCBnZXREYXJ3aW5Qb3J0cyhwaWQpO1xuICAgICAgY2FzZSAnd2luMzInOlxuICAgICAgICByZXR1cm4gYXdhaXQgZ2V0V2luZG93c1BvcnRzKHBpZCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgY29uc29sZS5kZWJ1ZygnW2dldEFsbFBvcnRzXSBEZXRlY3Rpb24gZmFpbGVkOicsIGVycm9yKTtcbiAgICB9XG4gICAgcmV0dXJuIFtdO1xuICB9XG59XG5cbi8qKlxuICogR2V0cyB0aGUgcG9ydCBudW1iZXIgdGhhdCB0aGUgcHJvY2VzcyBpcyBsaXN0ZW5pbmcgb24uXG4gKiBAcmV0dXJucyBUaGUgcG9ydCBudW1iZXIgdGhhdCB0aGUgcHJvY2VzcyBpcyBsaXN0ZW5pbmcgb24sIG9yIHVuZGVmaW5lZCBpZiB0aGUgcHJvY2VzcyBpcyBub3QgbGlzdGVuaW5nIG9uIGFueSBwb3J0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0UG9ydCgpOiBQcm9taXNlPG51bWJlciB8IHVuZGVmaW5lZD4ge1xuICBjb25zdCBwb3J0cyA9IGF3YWl0IGdldEFsbFBvcnRzKCk7XG4gIHJldHVybiBwb3J0c1swXTtcbn1cblxuLy8gQ29uZmlndXJhdGlvbiBmb3IgSFRUUCBwcm9iaW5nXG5jb25zdCBQUk9CRV9USU1FT1VUX01TID0gNTAwO1xuY29uc3QgUFJPQkVfRU5EUE9JTlQgPSAnLy53ZWxsLWtub3duL3dvcmtmbG93L3YxL2Zsb3c/X19oZWFsdGgnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb2JlT3B0aW9ucyB7XG4gIGVuZHBvaW50Pzogc3RyaW5nO1xuICB0aW1lb3V0PzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFByb2JlcyBhIHBvcnQgdG8gY2hlY2sgaWYgaXQncyBzZXJ2aW5nIHRoZSB3b3JrZmxvdyBIVFRQIHNlcnZlci5cbiAqIFVzZXMgSEVBRCByZXF1ZXN0IHRvIG1pbmltaXplIG92ZXJoZWFkLlxuICpcbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlIHBvcnQgcmVzcG9uZHMgd2l0aCBhIDIwMCBzdGF0dXMgZnJvbSB0aGUgaGVhbHRoIGNoZWNrIGVuZHBvaW50XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHByb2JlUG9ydChcbiAgcG9ydDogbnVtYmVyLFxuICBvcHRpb25zOiBQcm9iZU9wdGlvbnMgPSB7fVxuKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IHsgZW5kcG9pbnQgPSBQUk9CRV9FTkRQT0lOVCwgdGltZW91dCA9IFBST0JFX1RJTUVPVVRfTVMgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgY29uc3QgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiBjb250cm9sbGVyLmFib3J0KCksIHRpbWVvdXQpO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgaHR0cDovL2xvY2FsaG9zdDoke3BvcnR9JHtlbmRwb2ludH1gLCB7XG4gICAgICBtZXRob2Q6ICdIRUFEJyxcbiAgICAgIHNpZ25hbDogY29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG5cbiAgICAvLyBUaGUgd29ya2Zsb3cgaGVhbHRoIGVuZHBvaW50IHJldHVybnMgMjAwIGZvciBoZWFsdGh5XG4gICAgcmV0dXJuIHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwO1xuICB9IGNhdGNoIHtcbiAgICAvLyBDb25uZWN0aW9uIHJlZnVzZWQsIHRpbWVvdXQsIG9yIG90aGVyIGVycm9yXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9IGZpbmFsbHkge1xuICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICB9XG59XG5cbi8qKlxuICogR2V0cyB0aGUgd29ya2Zsb3cgc2VydmVyIHBvcnQgYnkgcHJvYmluZyBhbGwgbGlzdGVuaW5nIHBvcnRzLlxuICogVGhpcyBpcyBtb3JlIHJlbGlhYmxlIHRoYW4gZ2V0UG9ydCgpIHdoZW4gb3RoZXIgc2VydmljZXMgKGxpa2UgTm9kZS5qcyBpbnNwZWN0b3IpXG4gKiBtYXkgYWxzbyBiZSBsaXN0ZW5pbmcgb24gcG9ydHMuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBjb25maWd1cmF0aW9uIGZvciBwcm9iaW5nXG4gKiBAcmV0dXJucyBUaGUgcG9ydCBudW1iZXIgb2YgdGhlIHdvcmtmbG93IHNlcnZlciwgb3IgdW5kZWZpbmVkIGlmIG5vdCBmb3VuZFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0V29ya2Zsb3dQb3J0KFxuICBvcHRpb25zPzogUHJvYmVPcHRpb25zXG4pOiBQcm9taXNlPG51bWJlciB8IHVuZGVmaW5lZD4ge1xuICBjb25zdCBwb3J0cyA9IGF3YWl0IGdldEFsbFBvcnRzKCk7XG5cbiAgaWYgKHBvcnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBpZiAocG9ydHMubGVuZ3RoID09PSAxKSB7XG4gICAgLy8gT25seSBvbmUgcG9ydCwgbm8gbmVlZCB0byBwcm9iZVxuICAgIHJldHVybiBwb3J0c1swXTtcbiAgfVxuXG4gIC8vIFByb2JlIGFsbCBwb3J0cyBpbiBwYXJhbGxlbFxuICBjb25zdCBwcm9iZVJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBwb3J0cy5tYXAoYXN5bmMgKHBvcnQpID0+ICh7XG4gICAgICBwb3J0LFxuICAgICAgaXNXb3JrZmxvdzogYXdhaXQgcHJvYmVQb3J0KHBvcnQsIG9wdGlvbnMpLFxuICAgIH0pKVxuICApO1xuXG4gIC8vIFJldHVybiBmaXJzdCBwb3J0IHRoYXQgcmVzcG9uZGVkIGFzIHdvcmtmbG93IHNlcnZlclxuICBjb25zdCB3b3JrZmxvd1BvcnQgPSBwcm9iZVJlc3VsdHMuZmluZCgocikgPT4gci5pc1dvcmtmbG93KTtcbiAgaWYgKHdvcmtmbG93UG9ydCkge1xuICAgIHJldHVybiB3b3JrZmxvd1BvcnQucG9ydDtcbiAgfVxuXG4gIC8vIEZhbGxiYWNrIHRvIGZpcnN0IHBvcnQgaWYgcHJvYmluZyBkb2Vzbid0IGlkZW50aWZ5IHdvcmtmbG93IHNlcnZlclxuICAvLyBUaGlzIGhhbmRsZXMgY2FzZXMgd2hlcmU6XG4gIC8vIC0gU2VydmVyIGhhc24ndCBzdGFydGVkIHdvcmtmbG93IHJvdXRlcyB5ZXRcbiAgLy8gLSBOZXR3b3JrIGlzc3VlcyBkdXJpbmcgcHJvYmluZ1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcpIHtcbiAgICBjb25zb2xlLmRlYnVnKFxuICAgICAgJ1tnZXRXb3JrZmxvd1BvcnRdIFByb2JpbmcgZmFpbGVkLCBmYWxsaW5nIGJhY2sgdG8gZmlyc3QgcG9ydDonLFxuICAgICAgcG9ydHNbMF1cbiAgICApO1xuICB9XG4gIHJldHVybiBwb3J0c1swXTtcbn1cbiJdfQ==
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { pluralize } from './pluralize.js';
|
|
2
|
-
export { formatStepName, formatWorkflowName, parseClassName, parseStepName, parseWorkflowName, } from './parse-name.js';
|
|
2
|
+
export { formatStepName, formatWorkflowName, parseClassName, parseStepName, parseWorkflowName, stepDisplayName, workflowDisplayName, } from './parse-name.js';
|
|
3
3
|
export { once, type PromiseWithResolvers, withResolvers } from './promise.js';
|
|
4
4
|
export { parseDurationToDate } from './time.js';
|
|
5
5
|
export { isVercelWorldTarget, resolveWorkflowTargetWorld, usesVercelWorld, } from './world-target.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,iBAAiB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,IAAI,EAAE,KAAK,oBAAoB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,eAAe,GAChB,MAAM,mBAAmB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { pluralize } from './pluralize.js';
|
|
2
|
-
export { formatStepName, formatWorkflowName, parseClassName, parseStepName, parseWorkflowName, } from './parse-name.js';
|
|
2
|
+
export { formatStepName, formatWorkflowName, parseClassName, parseStepName, parseWorkflowName, stepDisplayName, workflowDisplayName, } from './parse-name.js';
|
|
3
3
|
export { once, withResolvers } from './promise.js';
|
|
4
4
|
export { parseDurationToDate } from './time.js';
|
|
5
5
|
export { isVercelWorldTarget, resolveWorkflowTargetWorld, usesVercelWorld, } from './world-target.js';
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFDTCxjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLGNBQWMsRUFDZCxhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixtQkFBbUIsR0FDcEIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsSUFBSSxFQUE2QixhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDOUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2hELE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsMEJBQTBCLEVBQzFCLGVBQWUsR0FDaEIsTUFBTSxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IHBsdXJhbGl6ZSB9IGZyb20gJy4vcGx1cmFsaXplLmpzJztcbmV4cG9ydCB7XG4gIGZvcm1hdFN0ZXBOYW1lLFxuICBmb3JtYXRXb3JrZmxvd05hbWUsXG4gIHBhcnNlQ2xhc3NOYW1lLFxuICBwYXJzZVN0ZXBOYW1lLFxuICBwYXJzZVdvcmtmbG93TmFtZSxcbiAgc3RlcERpc3BsYXlOYW1lLFxuICB3b3JrZmxvd0Rpc3BsYXlOYW1lLFxufSBmcm9tICcuL3BhcnNlLW5hbWUuanMnO1xuZXhwb3J0IHsgb25jZSwgdHlwZSBQcm9taXNlV2l0aFJlc29sdmVycywgd2l0aFJlc29sdmVycyB9IGZyb20gJy4vcHJvbWlzZS5qcyc7XG5leHBvcnQgeyBwYXJzZUR1cmF0aW9uVG9EYXRlIH0gZnJvbSAnLi90aW1lLmpzJztcbmV4cG9ydCB7XG4gIGlzVmVyY2VsV29ybGRUYXJnZXQsXG4gIHJlc29sdmVXb3JrZmxvd1RhcmdldFdvcmxkLFxuICB1c2VzVmVyY2VsV29ybGQsXG59IGZyb20gJy4vd29ybGQtdGFyZ2V0LmpzJztcbiJdfQ==
|
package/dist/parse-name.d.ts
CHANGED
|
@@ -46,4 +46,15 @@ export declare function parseClassName(name: string): {
|
|
|
46
46
|
*/
|
|
47
47
|
export declare function formatStepName(name: string): string;
|
|
48
48
|
export declare function formatWorkflowName(name: string): string;
|
|
49
|
+
/**
|
|
50
|
+
* Best-effort short display name for spans and UI labels. Accepts either the
|
|
51
|
+
* raw machine name (`workflow//./src/jobs/order//processOrder`) or the
|
|
52
|
+
* queue-sanitized form (`workflow----src-jobs-order--processOrder`, where
|
|
53
|
+
* every non-alphanumeric character was replaced with `-`) and returns just
|
|
54
|
+
* the function name (`processOrder`). Falls back to the input unchanged when
|
|
55
|
+
* neither form is recognized.
|
|
56
|
+
*/
|
|
57
|
+
export declare function workflowDisplayName(name: string): string;
|
|
58
|
+
/** See {@link workflowDisplayName} — the step-name equivalent. */
|
|
59
|
+
export declare function stepDisplayName(name: string): string;
|
|
49
60
|
//# sourceMappingURL=parse-name.d.ts.map
|
package/dist/parse-name.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-name.d.ts","sourceRoot":"","sources":["../src/parse-name.ts"],"names":[],"mappings":"AAyDA;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM;eAxD9B,MAAM;qBAAmB,MAAM;kBAAgB,MAAM;SA0DpE;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM;eAnE1B,MAAM;qBAAmB,MAAM;kBAAgB,MAAM;SAqEpE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM;eA9E3B,MAAM;qBAAmB,MAAM;kBAAgB,MAAM;SAgFpE;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD"}
|
|
1
|
+
{"version":3,"file":"parse-name.d.ts","sourceRoot":"","sources":["../src/parse-name.ts"],"names":[],"mappings":"AAyDA;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM;eAxD9B,MAAM;qBAAmB,MAAM;kBAAgB,MAAM;SA0DpE;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM;eAnE1B,MAAM;qBAAmB,MAAM;kBAAgB,MAAM;SAqEpE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM;eA9E3B,MAAM;qBAAmB,MAAM;kBAAgB,MAAM;SAgFpE;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMxD;AAED,kEAAkE;AAClE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMpD"}
|
package/dist/parse-name.js
CHANGED
|
@@ -93,9 +93,52 @@ export function formatStepName(name) {
|
|
|
93
93
|
export function formatWorkflowName(name) {
|
|
94
94
|
return formatParsedName(parseWorkflowName(name), name);
|
|
95
95
|
}
|
|
96
|
+
/**
|
|
97
|
+
* Best-effort short display name for spans and UI labels. Accepts either the
|
|
98
|
+
* raw machine name (`workflow//./src/jobs/order//processOrder`) or the
|
|
99
|
+
* queue-sanitized form (`workflow----src-jobs-order--processOrder`, where
|
|
100
|
+
* every non-alphanumeric character was replaced with `-`) and returns just
|
|
101
|
+
* the function name (`processOrder`). Falls back to the input unchanged when
|
|
102
|
+
* neither form is recognized.
|
|
103
|
+
*/
|
|
104
|
+
export function workflowDisplayName(name) {
|
|
105
|
+
return (parseWorkflowName(name)?.shortName ??
|
|
106
|
+
shortNameFromSanitized('workflow', name) ??
|
|
107
|
+
name);
|
|
108
|
+
}
|
|
109
|
+
/** See {@link workflowDisplayName} — the step-name equivalent. */
|
|
110
|
+
export function stepDisplayName(name) {
|
|
111
|
+
return (parseStepName(name)?.shortName ??
|
|
112
|
+
shortNameFromSanitized('step', name) ??
|
|
113
|
+
name);
|
|
114
|
+
}
|
|
115
|
+
function shortNameFromSanitized(tag, name) {
|
|
116
|
+
if (!name.startsWith(`${tag}--`))
|
|
117
|
+
return null;
|
|
118
|
+
// The `//` separators became `--`, and within the function-name part any
|
|
119
|
+
// nested-function `/` became `-`. Function names are mostly dash-free, so
|
|
120
|
+
// the innermost name is the last dash-free segment. This is best-effort:
|
|
121
|
+
// `$` is a valid JS identifier character but is also sanitized to `-`, so
|
|
122
|
+
// a name like `process$Order` displays as `Order` — accepted limitation.
|
|
123
|
+
const segments = name.split('--').filter(Boolean);
|
|
124
|
+
const functionPart = segments.at(-1);
|
|
125
|
+
let shortName = functionPart?.split('-').filter(Boolean).at(-1) ?? '';
|
|
126
|
+
// Mirror parseName's default-export handling: display default exports as
|
|
127
|
+
// the module's short name (the module part is the second-to-last `--`
|
|
128
|
+
// segment; its last `-` segment is the module short name), so the same
|
|
129
|
+
// workflow doesn't render as e.g. `order` from the raw name but
|
|
130
|
+
// `default` from the sanitized name.
|
|
131
|
+
if (['default', '__default'].includes(shortName)) {
|
|
132
|
+
const moduleShortName = segments.at(-2)?.split('-').filter(Boolean).at(-1);
|
|
133
|
+
if (moduleShortName && moduleShortName !== tag) {
|
|
134
|
+
shortName = moduleShortName;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return shortName || null;
|
|
138
|
+
}
|
|
96
139
|
function formatParsedName(parsed, fallback) {
|
|
97
140
|
if (!parsed)
|
|
98
141
|
return fallback;
|
|
99
142
|
return `${parsed.shortName} (${parsed.moduleSpecifier})`;
|
|
100
143
|
}
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UtbmFtZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wYXJzZS1uYW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFDSCxTQUFTLFNBQVMsQ0FDaEIsR0FBVyxFQUNYLElBQVk7SUFFWixJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELDJEQUEyRDtJQUMzRCxTQUFTO0lBQ1Qsc0RBQXNEO0lBQ3RELGlDQUFpQztJQUNqQyxzR0FBc0c7SUFDdEcsa0dBQWtHO0lBQ2xHLDZGQUE2RjtJQUM3RixNQUFNLENBQUMsTUFBTSxFQUFFLGVBQWUsRUFBRSxHQUFHLGlCQUFpQixDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6RSxJQUFJLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLElBQUksaUJBQWlCLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pFLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sWUFBWSxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsRCwyRUFBMkU7SUFDM0UsSUFBSSxTQUFTLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFckQsZ0RBQWdEO0lBQ2hELHlFQUF5RTtJQUN6RSwyRUFBMkU7SUFDM0UsSUFBSSxlQUFlLEdBQUcsRUFBRSxDQUFDO0lBQ3pCLElBQUksZUFBZSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3JDLDJDQUEyQztRQUMzQyxlQUFlLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDNUQsQ0FBQztTQUFNLENBQUM7UUFDTixtRUFBbUU7UUFDbkUsb0VBQW9FO1FBQ3BFLE1BQU0sY0FBYyxHQUNsQixlQUFlLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQ2pELGVBQWUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEMsZUFBZSxHQUFHLGNBQWMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzVELENBQUM7SUFFRCx1RUFBdUU7SUFDdkUsZ0ZBQWdGO0lBQ2hGLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ3BFLFNBQVMsR0FBRyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUVELE9BQU87UUFDTCxTQUFTO1FBQ1QsZUFBZTtRQUNmLFlBQVk7S0FDYixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxJQUFZO0lBQzVDLE9BQU8sU0FBUyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNyQyxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxJQUFZO0lBQ3hDLE9BQU8sU0FBUyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNqQyxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FBQyxJQUFZO0lBQ3pDLE9BQU8sU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNsQyxDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FBQyxJQUFZO0lBQ3pDLE9BQU8sZ0JBQWdCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3JELENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsSUFBWTtJQUM3QyxPQUFPLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3pELENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUN2QixNQUlRLEVBQ1IsUUFBZ0I7SUFFaEIsSUFBSSxDQUFDLE1BQU07UUFBRSxPQUFPLFFBQVEsQ0FBQztJQUM3QixPQUFPLEdBQUcsTUFBTSxDQUFDLFNBQVMsS0FBSyxNQUFNLENBQUMsZUFBZSxHQUFHLENBQUM7QUFDM0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUGFyc2UgYSBtYWNoaW5lIHJlYWRhYmxlIG5hbWUuXG4gKlxuICogQHNlZSB7QGxpbmsgLi4vLi4vc3djLXBsdWdpbi13b3JrZmxvdy90cmFuc2Zvcm0vc3JjL25hbWluZy5yc30gZm9yIHRoZSBuYW1pbmcgc2NoZW1lLlxuICovXG5mdW5jdGlvbiBwYXJzZU5hbWUoXG4gIHRhZzogc3RyaW5nLFxuICBuYW1lOiBzdHJpbmdcbik6IHsgc2hvcnROYW1lOiBzdHJpbmc7IG1vZHVsZVNwZWNpZmllcjogc3RyaW5nOyBmdW5jdGlvbk5hbWU6IHN0cmluZyB9IHwgbnVsbCB7XG4gIGlmICh0eXBlb2YgbmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICAvLyBMb29rcyBsaWtlIHtwcmVmaXh9Ly97bW9kdWxlU3BlY2lmaWVyfS8ve2Z1bmN0aW9uX25hbWV9XCJcbiAgLy8gV2hlcmU6XG4gIC8vIC0ge3ByZWZpeH0gaXMgZWl0aGVyICd3b3JrZmxvdycsICdzdGVwJywgb3IgJ2NsYXNzJ1xuICAvLyAtIHttb2R1bGVTcGVjaWZpZXJ9IGlzIGVpdGhlcjpcbiAgLy8gICAtIEEgbW9kdWxlIHNwZWNpZmllciAoZS5nLiwgYHBvaW50QDAuMC4xYCwgYEBteW9yZy9zaGFyZWRAMS4yLjNgKSB3aGVuIHByb3ZpZGVkIHZpYSBwbHVnaW4gY29uZmlnXG4gIC8vICAgLSBBIHJlbGF0aXZlIHBhdGggcHJlZml4ZWQgd2l0aCBgLi9gIChlLmcuLCBgLi9zcmMvam9icy9vcmRlcmApIHdoZW4gbm8gc3BlY2lmaWVyIGlzIHByb3ZpZGVkXG4gIC8vIC0ge2Z1bmN0aW9uX25hbWV9IGlzIHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiAod2l0aCBuZXN0ZWQgZnVuY3Rpb25zIHVzaW5nIGAvYCBzZXBhcmF0b3JzKVxuICBjb25zdCBbcHJlZml4LCBtb2R1bGVTcGVjaWZpZXIsIC4uLmZ1bmN0aW9uTmFtZVBhcnRzXSA9IG5hbWUuc3BsaXQoJy8vJyk7XG4gIGlmIChwcmVmaXggIT09IHRhZyB8fCAhbW9kdWxlU3BlY2lmaWVyIHx8IGZ1bmN0aW9uTmFtZVBhcnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgZnVuY3Rpb25OYW1lID0gZnVuY3Rpb25OYW1lUGFydHMuam9pbignLy8nKTtcbiAgLy8gRm9yIG5lc3RlZCBmdW5jdGlvbnMgbGlrZSBcInByb2Nlc3NPcmRlci9pbm5lclN0ZXBcIiwgZ2V0IGp1c3QgXCJpbm5lclN0ZXBcIlxuICBsZXQgc2hvcnROYW1lID0gZnVuY3Rpb25OYW1lLnNwbGl0KCcvJykuYXQoLTEpID8/ICcnO1xuXG4gIC8vIEV4dHJhY3QgYSByZWFzb25hYmxlIG5hbWUgZm9yIGRlZmF1bHQgZXhwb3J0c1xuICAvLyBGb3IgbW9kdWxlIHNwZWNpZmllcnMgbGlrZSBcInBvaW50QDAuMC4xXCIsIHVzZSB0aGUgcGFja2FnZSBuYW1lIFwicG9pbnRcIlxuICAvLyBGb3IgcmVsYXRpdmUgcGF0aHMgbGlrZSBcIi4vc3JjL2pvYnMvb3JkZXJcIiwgdXNlIHRoZSBsYXN0IHNlZ21lbnQgXCJvcmRlclwiXG4gIGxldCBtb2R1bGVTaG9ydE5hbWUgPSAnJztcbiAgaWYgKG1vZHVsZVNwZWNpZmllci5zdGFydHNXaXRoKCcuLycpKSB7XG4gICAgLy8gUmVsYXRpdmUgcGF0aDogdXNlIHRoZSBsYXN0IHBhdGggc2VnbWVudFxuICAgIG1vZHVsZVNob3J0TmFtZSA9IG1vZHVsZVNwZWNpZmllci5zcGxpdCgnLycpLmF0KC0xKSA/PyAnJztcbiAgfSBlbHNlIHtcbiAgICAvLyBNb2R1bGUgc3BlY2lmaWVyOiBleHRyYWN0IHBhY2thZ2UgbmFtZSAoc3RyaXAgdmVyc2lvbiBhbmQgc2NvcGUpXG4gICAgLy8gZS5nLiwgXCJAbXlvcmcvc2hhcmVkQDEuMi4zXCIgLT4gXCJzaGFyZWRcIiwgXCJwb2ludEAwLjAuMVwiIC0+IFwicG9pbnRcIlxuICAgIGNvbnN0IHdpdGhvdXRWZXJzaW9uID1cbiAgICAgIG1vZHVsZVNwZWNpZmllci5zcGxpdCgnQCcpLnNsaWNlKDAsIC0xKS5qb2luKCdAJykgfHxcbiAgICAgIG1vZHVsZVNwZWNpZmllci5zcGxpdCgnQCcpWzBdO1xuICAgIG1vZHVsZVNob3J0TmFtZSA9IHdpdGhvdXRWZXJzaW9uPy5zcGxpdCgnLycpLmF0KC0xKSA/PyAnJztcbiAgfVxuXG4gIC8vIERlZmF1bHQgZXhwb3J0cyB3aWxsIHVzZSB0aGUgbW9kdWxlIHNob3J0IG5hbWUuIFwiX19kZWZhdWx0XCIgd2FzIG9ubHlcbiAgLy8gdXNlZCBmb3Igb25lIHBhY2thZ2UgdmVyc2lvbiwgc28gdGhpcyBpcyBhIG1pbm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGZpeC5cbiAgaWYgKFsnZGVmYXVsdCcsICdfX2RlZmF1bHQnXS5pbmNsdWRlcyhzaG9ydE5hbWUpICYmIG1vZHVsZVNob3J0TmFtZSkge1xuICAgIHNob3J0TmFtZSA9IG1vZHVsZVNob3J0TmFtZTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc2hvcnROYW1lLFxuICAgIG1vZHVsZVNwZWNpZmllcixcbiAgICBmdW5jdGlvbk5hbWUsXG4gIH07XG59XG5cbi8qKlxuICogUGFyc2UgYSB3b3JrZmxvdyBuYW1lIGludG8gaXRzIGNvbXBvbmVudHMuXG4gKlxuICogQHBhcmFtIG5hbWUgLSBUaGUgd29ya2Zsb3cgbmFtZSB0byBwYXJzZSAoZS5nLiwgXCJ3b3JrZmxvdy8vLi9zcmMvam9icy9vcmRlci8vcHJvY2Vzc09yZGVyXCIgb3IgXCJ3b3JrZmxvdy8vbXlwYWNrYWdlQDEuMC4wLy9wcm9jZXNzT3JkZXJcIikuXG4gKiBAcmV0dXJucyBBbiBvYmplY3Qgd2l0aCBgc2hvcnROYW1lYCwgYG1vZHVsZVNwZWNpZmllcmAsIGFuZCBgZnVuY3Rpb25OYW1lYCBwcm9wZXJ0aWVzLlxuICogV2hlbiB0aGUgbmFtZSBpcyBpbnZhbGlkLCByZXR1cm5zIGBudWxsYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlV29ya2Zsb3dOYW1lKG5hbWU6IHN0cmluZykge1xuICByZXR1cm4gcGFyc2VOYW1lKCd3b3JrZmxvdycsIG5hbWUpO1xufVxuXG4vKipcbiAqIFBhcnNlIGEgc3RlcCBuYW1lIGludG8gaXRzIGNvbXBvbmVudHMuXG4gKlxuICogQHBhcmFtIG5hbWUgLSBUaGUgc3RlcCBuYW1lIHRvIHBhcnNlIChlLmcuLCBcInN0ZXAvLy4vc3JjL2pvYnMvb3JkZXIvL2ZldGNoRGF0YVwiIG9yIFwic3RlcC8vQG15b3JnL3Rhc2tzQDIuMC4wLy9wcm9jZXNzT3JkZXJcIikuXG4gKiBAcmV0dXJucyBBbiBvYmplY3Qgd2l0aCBgc2hvcnROYW1lYCwgYG1vZHVsZVNwZWNpZmllcmAsIGFuZCBgZnVuY3Rpb25OYW1lYCBwcm9wZXJ0aWVzLlxuICogV2hlbiB0aGUgbmFtZSBpcyBpbnZhbGlkLCByZXR1cm5zIGBudWxsYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU3RlcE5hbWUobmFtZTogc3RyaW5nKSB7XG4gIHJldHVybiBwYXJzZU5hbWUoJ3N0ZXAnLCBuYW1lKTtcbn1cblxuLyoqXG4gKiBQYXJzZSBhIGNsYXNzIElEIGludG8gaXRzIGNvbXBvbmVudHMuXG4gKlxuICogQHBhcmFtIG5hbWUgLSBUaGUgY2xhc3MgSUQgdG8gcGFyc2UgKGUuZy4sIFwiY2xhc3MvLy4vc3JjL21vZGVscy9Qb2ludC8vUG9pbnRcIiBvciBcImNsYXNzLy9wb2ludEAwLjAuMS8vUG9pbnRcIikuXG4gKiBAcmV0dXJucyBBbiBvYmplY3Qgd2l0aCBgc2hvcnROYW1lYCwgYG1vZHVsZVNwZWNpZmllcmAsIGFuZCBgZnVuY3Rpb25OYW1lYCAoY2xhc3NOYW1lKSBwcm9wZXJ0aWVzLlxuICogV2hlbiB0aGUgbmFtZSBpcyBpbnZhbGlkLCByZXR1cm5zIGBudWxsYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQ2xhc3NOYW1lKG5hbWU6IHN0cmluZykge1xuICByZXR1cm4gcGFyc2VOYW1lKCdjbGFzcycsIG5hbWUpO1xufVxuXG4vKipcbiAqIEh1bWFuLWZyaWVuZGx5IHNpbmdsZS1saW5lIHJlbmRlcmluZyBvZiBhIHN0ZXAgb3Igd29ya2Zsb3cgbmFtZSBmb3IgbG9nXG4gKiBtZXNzYWdlcy4gUGFyc2VzIHRoZSBtYWNoaW5lIG5hbWUgKGBzdGVwLy8uL3dvcmtmbG93cy8xX3NpbXBsZS8vYWRkYCkgYW5kXG4gKiByZW5kZXJzIGl0IGFzIGBhZGQgKC4vd29ya2Zsb3dzLzFfc2ltcGxlKWAgc28gdXNlcnMgc2VlIHRoZSBzaG9ydCBmdW5jdGlvblxuICogbmFtZSBhbmQgdGhlIHNvdXJjZSBtb2R1bGUgc3BlY2lmaWVyIHdpdGhvdXQgdGhlIGludGVybmFsIGAvL2Agc3ludGF4LlxuICpcbiAqIEZhbGxzIGJhY2sgdG8gdGhlIHJhdyBuYW1lIGlmIHBhcnNpbmcgZmFpbHMgKGUuZy4gb2xkZXIgbmFtZSBmb3JtYXRzIG9yXG4gKiB1c2VyLXByb3ZpZGVkIHN0cmluZ3Mgd2UgZG9uJ3QgcmVjb2duaXplKSBzbyBsb2dzIG5ldmVyIHNpbGVudGx5IGRyb3BcbiAqIGluZm9ybWF0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0U3RlcE5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGZvcm1hdFBhcnNlZE5hbWUocGFyc2VTdGVwTmFtZShuYW1lKSwgbmFtZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRXb3JrZmxvd05hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGZvcm1hdFBhcnNlZE5hbWUocGFyc2VXb3JrZmxvd05hbWUobmFtZSksIG5hbWUpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRQYXJzZWROYW1lKFxuICBwYXJzZWQ6IHtcbiAgICBzaG9ydE5hbWU6IHN0cmluZztcbiAgICBtb2R1bGVTcGVjaWZpZXI6IHN0cmluZztcbiAgICBmdW5jdGlvbk5hbWU6IHN0cmluZztcbiAgfSB8IG51bGwsXG4gIGZhbGxiYWNrOiBzdHJpbmdcbik6IHN0cmluZyB7XG4gIGlmICghcGFyc2VkKSByZXR1cm4gZmFsbGJhY2s7XG4gIHJldHVybiBgJHtwYXJzZWQuc2hvcnROYW1lfSAoJHtwYXJzZWQubW9kdWxlU3BlY2lmaWVyfSlgO1xufVxuIl19
|
|
144
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UtbmFtZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wYXJzZS1uYW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFDSCxTQUFTLFNBQVMsQ0FDaEIsR0FBVyxFQUNYLElBQVk7SUFFWixJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELDJEQUEyRDtJQUMzRCxTQUFTO0lBQ1Qsc0RBQXNEO0lBQ3RELGlDQUFpQztJQUNqQyxzR0FBc0c7SUFDdEcsa0dBQWtHO0lBQ2xHLDZGQUE2RjtJQUM3RixNQUFNLENBQUMsTUFBTSxFQUFFLGVBQWUsRUFBRSxHQUFHLGlCQUFpQixDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6RSxJQUFJLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLElBQUksaUJBQWlCLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pFLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sWUFBWSxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsRCwyRUFBMkU7SUFDM0UsSUFBSSxTQUFTLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFckQsZ0RBQWdEO0lBQ2hELHlFQUF5RTtJQUN6RSwyRUFBMkU7SUFDM0UsSUFBSSxlQUFlLEdBQUcsRUFBRSxDQUFDO0lBQ3pCLElBQUksZUFBZSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3JDLDJDQUEyQztRQUMzQyxlQUFlLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMs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LEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0RSx5RUFBeUU7SUFDekUsc0VBQXNFO0lBQ3RFLHVFQUF1RTtJQUN2RSxnRUFBZ0U7SUFDaEUscUNBQXFDO0lBQ3JDLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7UUFDakQsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0UsSUFBSSxlQUFlLElBQUksZUFBZSxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQy9DLFNBQVMsR0FBRyxlQUFlLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLFNBQVMsSUFBSSxJQUFJLENBQUM7QUFDM0IsQ0FBQztBQUVELFNBQVMsZ0JBQWdCLENBQ3ZCLE1BSVEsRUFDUixRQUFnQjtJQUVoQixJQUFJLENBQUMsTUFBTTtRQUFFLE9BQU8sUUFBUSxDQUFDO0lBQzdCLE9BQU8sR0FBRyxNQUFNLENBQUMsU0FBUyxLQUFLLE1BQU0sQ0FBQyxlQUFlLEdBQUcsQ0FBQztBQUMzRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQYXJzZSBhIG1hY2hpbmUgcmVhZGFibGUgbmFtZS5cbiAqXG4gKiBAc2VlIHtAbGluayAuLi8uLi9zd2MtcGx1Z2luLXdvcmtmbG93L3RyYW5zZm9ybS9zcmMvbmFtaW5nLnJzfSBmb3IgdGhlIG5hbWluZyBzY2hlbWUuXG4gKi9cbmZ1bmN0aW9uIHBhcnNlTmFtZShcbiAgdGFnOiBzdHJpbmcsXG4gIG5hbWU6IHN0cmluZ1xuKTogeyBzaG9ydE5hbWU6IHN0cmluZzsgbW9kdWxlU3BlY2lmaWVyOiBzdHJpbmc7IGZ1bmN0aW9uTmFtZTogc3RyaW5nIH0gfCBudWxsIHtcbiAgaWYgKHR5cGVvZiBuYW1lICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIC8vIExvb2tzIGxpa2Uge3ByZWZpeH0vL3ttb2R1bGVTcGVjaWZpZXJ9Ly97ZnVuY3Rpb25fbmFtZX1cIlxuICAvLyBXaGVyZTpcbiAgLy8gLSB7cHJlZml4fSBpcyBlaXRoZXIgJ3dvcmtmbG93JywgJ3N0ZXAnLCBvciAnY2xhc3MnXG4gIC8vIC0ge21vZHVsZVNwZWNpZmllcn0gaXMgZWl0aGVyOlxuICAvLyAgIC0gQSBtb2R1bGUgc3BlY2lmaWVyIChlLmcuLCBgcG9pbnRAMC4wLjFgLCBgQG15b3JnL3NoYXJlZEAxLjIuM2ApIHdoZW4gcHJvdmlkZWQgdmlhIHBsdWdpbiBjb25maWdcbiAgLy8gICAtIEEgcmVsYXRpdmUgcGF0aCBwcmVmaXhlZCB3aXRoIGAuL2AgKGUuZy4sIGAuL3NyYy9qb2JzL29yZGVyYCkgd2hlbiBubyBzcGVjaWZpZXIgaXMgcHJvdmlkZWRcbiAgLy8gLSB7ZnVuY3Rpb25fbmFtZX0gaXMgdGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uICh3aXRoIG5lc3RlZCBmdW5jdGlvbnMgdXNpbmcgYC9gIHNlcGFyYXRvcnMpXG4gIGNvbnN0IFtwcmVmaXgsIG1vZHVsZVNwZWNpZmllciwgLi4uZnVuY3Rpb25OYW1lUGFydHNdID0gbmFtZS5zcGxpdCgnLy8nKTtcbiAgaWYgKHByZWZpeCAhPT0gdGFnIHx8ICFtb2R1bGVTcGVjaWZpZXIgfHwgZnVuY3Rpb25OYW1lUGFydHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBmdW5jdGlvbk5hbWUgPSBmdW5jdGlvbk5hbWVQYXJ0cy5qb2luKCcvLycpO1xuICAvLyBGb3IgbmVzdGVkIGZ1bmN0aW9ucyBsaWtlIFwicHJvY2Vzc09yZGVyL2lubmVyU3RlcFwiLCBnZXQganVzdCBcImlubmVyU3RlcFwiXG4gIGxldCBzaG9ydE5hbWUgPSBmdW5jdGlvbk5hbWUuc3BsaXQoJy8nKS5hdCgtMSkgPz8gJyc7XG5cbiAgLy8gRXh0cmFjdCBhIHJlYXNvbmFibGUgbmFtZSBmb3IgZGVmYXVsdCBleHBvcnRzXG4gIC8vIEZvciBtb2R1bGUgc3BlY2lmaWVycyBsaWtlIFwicG9pbnRAMC4wLjFcIiwgdXNlIHRoZSBwYWNrYWdlIG5hbWUgXCJwb2ludFwiXG4gIC8vIEZvciByZWxhdGl2ZSBwYXRocyBsaWtlIFwiLi9zcmMvam9icy9vcmRlclwiLCB1c2UgdGhlIGxhc3Qgc2VnbWVudCBcIm9yZGVyXCJcbiAgbGV0IG1vZHVsZVNob3J0TmFtZSA9ICcnO1xuICBpZiAobW9kdWxlU3BlY2lmaWVyLnN0YXJ0c1dpdGgoJy4vJykpIHtcbiAgICAvLyBSZWxhdGl2ZSBwYXRoOiB1c2UgdGhlIGxhc3QgcGF0aCBzZWdtZW50XG4gICAgbW9kdWxlU2hvcnROYW1lID0gbW9kdWxlU3BlY2lmaWVyLnNwbGl0KCcvJykuYXQoLTEpID8/ICcnO1xuICB9IGVsc2Uge1xuICAgIC8vIE1vZHVsZSBzcGVjaWZpZXI6IGV4dHJhY3QgcGFja2FnZSBuYW1lIChzdHJpcCB2ZXJzaW9uIGFuZCBzY29wZSlcbiAgICAvLyBlLmcuLCBcIkBteW9yZy9zaGFyZWRAMS4yLjNcIiAtPiBcInNoYXJlZFwiLCBcInBvaW50QDAuMC4xXCIgLT4gXCJwb2ludFwiXG4gICAgY29uc3Qgd2l0aG91dFZlcnNpb24gPVxuICAgICAgbW9kdWxlU3BlY2lmaWVyLnNwbGl0KCdAJykuc2xpY2UoMCwgLTEpLmpvaW4oJ0AnKSB8fFxuICAgICAgbW9kdWxlU3BlY2lmaWVyLnNwbGl0KCdAJylbMF07XG4gICAgbW9kdWxlU2hvcnROYW1lID0gd2l0aG91dFZlcnNpb24/LnNwbGl0KCcvJykuYXQoLTEpID8/ICcnO1xuICB9XG5cbiAgLy8gRGVmYXVsdCBleHBvcnRzIHdpbGwgdXNlIHRoZSBtb2R1bGUgc2hvcnQgbmFtZS4gXCJfX2RlZmF1bHRcIiB3YXMgb25seVxuICAvLyB1c2VkIGZvciBvbmUgcGFja2FnZSB2ZXJzaW9uLCBzbyB0aGlzIGlzIGEgbWlub3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgZml4LlxuICBpZiAoWydkZWZhdWx0JywgJ19fZGVmYXVsdCddLmluY2x1ZGVzKHNob3J0TmFtZSkgJiYgbW9kdWxlU2hvcnROYW1lKSB7XG4gICAgc2hvcnROYW1lID0gbW9kdWxlU2hvcnROYW1lO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzaG9ydE5hbWUsXG4gICAgbW9kdWxlU3BlY2lmaWVyLFxuICAgIGZ1bmN0aW9uTmFtZSxcbiAgfTtcbn1cblxuLyoqXG4gKiBQYXJzZSBhIHdvcmtmbG93IG5hbWUgaW50byBpdHMgY29tcG9uZW50cy5cbiAqXG4gKiBAcGFyYW0gbmFtZSAtIFRoZSB3b3JrZmxvdyBuYW1lIHRvIHBhcnNlIChlLmcuLCBcIndvcmtmbG93Ly8uL3NyYy9qb2JzL29yZGVyLy9wcm9jZXNzT3JkZXJcIiBvciBcIndvcmtmbG93Ly9teXBhY2thZ2VAMS4wLjAvL3Byb2Nlc3NPcmRlclwiKS5cbiAqIEByZXR1cm5zIEFuIG9iamVjdCB3aXRoIGBzaG9ydE5hbWVgLCBgbW9kdWxlU3BlY2lmaWVyYCwgYW5kIGBmdW5jdGlvbk5hbWVgIHByb3BlcnRpZXMuXG4gKiBXaGVuIHRoZSBuYW1lIGlzIGludmFsaWQsIHJldHVybnMgYG51bGxgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VXb3JrZmxvd05hbWUobmFtZTogc3RyaW5nKSB7XG4gIHJldHVybiBwYXJzZU5hbWUoJ3dvcmtmbG93JywgbmFtZSk7XG59XG5cbi8qKlxuICogUGFyc2UgYSBzdGVwIG5hbWUgaW50byBpdHMgY29tcG9uZW50cy5cbiAqXG4gKiBAcGFyYW0gbmFtZSAtIFRoZSBzdGVwIG5hbWUgdG8gcGFyc2UgKGUuZy4sIFwic3RlcC8vLi9zcmMvam9icy9vcmRlci8vZmV0Y2hEYXRhXCIgb3IgXCJzdGVwLy9AbXlvcmcvdGFza3NAMi4wLjAvL3Byb2Nlc3NPcmRlclwiKS5cbiAqIEByZXR1cm5zIEFuIG9iamVjdCB3aXRoIGBzaG9ydE5hbWVgLCBgbW9kdWxlU3BlY2lmaWVyYCwgYW5kIGBmdW5jdGlvbk5hbWVgIHByb3BlcnRpZXMuXG4gKiBXaGVuIHRoZSBuYW1lIGlzIGludmFsaWQsIHJldHVybnMgYG51bGxgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTdGVwTmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHBhcnNlTmFtZSgnc3RlcCcsIG5hbWUpO1xufVxuXG4vKipcbiAqIFBhcnNlIGEgY2xhc3MgSUQgaW50byBpdHMgY29tcG9uZW50cy5cbiAqXG4gKiBAcGFyYW0gbmFtZSAtIFRoZSBjbGFzcyBJRCB0byBwYXJzZSAoZS5nLiwgXCJjbGFzcy8vLi9zcmMvbW9kZWxzL1BvaW50Ly9Qb2ludFwiIG9yIFwiY2xhc3MvL3BvaW50QDAuMC4xLy9Qb2ludFwiKS5cbiAqIEByZXR1cm5zIEFuIG9iamVjdCB3aXRoIGBzaG9ydE5hbWVgLCBgbW9kdWxlU3BlY2lmaWVyYCwgYW5kIGBmdW5jdGlvbk5hbWVgIChjbGFzc05hbWUpIHByb3BlcnRpZXMuXG4gKiBXaGVuIHRoZSBuYW1lIGlzIGludmFsaWQsIHJldHVybnMgYG51bGxgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VDbGFzc05hbWUobmFtZTogc3RyaW5nKSB7XG4gIHJldHVybiBwYXJzZU5hbWUoJ2NsYXNzJywgbmFtZSk7XG59XG5cbi8qKlxuICogSHVtYW4tZnJpZW5kbHkgc2luZ2xlLWxpbmUgcmVuZGVyaW5nIG9mIGEgc3RlcCBvciB3b3JrZmxvdyBuYW1lIGZvciBsb2dcbiAqIG1lc3NhZ2VzLiBQYXJzZXMgdGhlIG1hY2hpbmUgbmFtZSAoYHN0ZXAvLy4vd29ya2Zsb3dzLzFfc2ltcGxlLy9hZGRgKSBhbmRcbiAqIHJlbmRlcnMgaXQgYXMgYGFkZCAoLi93b3JrZmxvd3MvMV9zaW1wbGUpYCBzbyB1c2VycyBzZWUgdGhlIHNob3J0IGZ1bmN0aW9uXG4gKiBuYW1lIGFuZCB0aGUgc291cmNlIG1vZHVsZSBzcGVjaWZpZXIgd2l0aG91dCB0aGUgaW50ZXJuYWwgYC8vYCBzeW50YXguXG4gKlxuICogRmFsbHMgYmFjayB0byB0aGUgcmF3IG5hbWUgaWYgcGFyc2luZyBmYWlscyAoZS5nLiBvbGRlciBuYW1lIGZvcm1hdHMgb3JcbiAqIHVzZXItcHJvdmlkZWQgc3RyaW5ncyB3ZSBkb24ndCByZWNvZ25pemUpIHNvIGxvZ3MgbmV2ZXIgc2lsZW50bHkgZHJvcFxuICogaW5mb3JtYXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRTdGVwTmFtZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gZm9ybWF0UGFyc2VkTmFtZShwYXJzZVN0ZXBOYW1lKG5hbWUpLCBuYW1lKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFdvcmtmbG93TmFtZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gZm9ybWF0UGFyc2VkTmFtZShwYXJzZVdvcmtmbG93TmFtZShuYW1lKSwgbmFtZSk7XG59XG5cbi8qKlxuICogQmVzdC1lZmZvcnQgc2hvcnQgZGlzcGxheSBuYW1lIGZvciBzcGFucyBhbmQgVUkgbGFiZWxzLiBBY2NlcHRzIGVpdGhlciB0aGVcbiAqIHJhdyBtYWNoaW5lIG5hbWUgKGB3b3JrZmxvdy8vLi9zcmMvam9icy9vcmRlci8vcHJvY2Vzc09yZGVyYCkgb3IgdGhlXG4gKiBxdWV1ZS1zYW5pdGl6ZWQgZm9ybSAoYHdvcmtmbG93LS0tLXNyYy1qb2JzLW9yZGVyLS1wcm9jZXNzT3JkZXJgLCB3aGVyZVxuICogZXZlcnkgbm9uLWFscGhhbnVtZXJpYyBjaGFyYWN0ZXIgd2FzIHJlcGxhY2VkIHdpdGggYC1gKSBhbmQgcmV0dXJucyBqdXN0XG4gKiB0aGUgZnVuY3Rpb24gbmFtZSAoYHByb2Nlc3NPcmRlcmApLiBGYWxscyBiYWNrIHRvIHRoZSBpbnB1dCB1bmNoYW5nZWQgd2hlblxuICogbmVpdGhlciBmb3JtIGlzIHJlY29nbml6ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3b3JrZmxvd0Rpc3BsYXlOYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiAoXG4gICAgcGFyc2VXb3JrZmxvd05hbWUobmFtZSk/LnNob3J0TmFtZSA/P1xuICAgIHNob3J0TmFtZUZyb21TYW5pdGl6ZWQoJ3dvcmtmbG93JywgbmFtZSkgPz9cbiAgICBuYW1lXG4gICk7XG59XG5cbi8qKiBTZWUge0BsaW5rIHdvcmtmbG93RGlzcGxheU5hbWV9IOKAlCB0aGUgc3RlcC1uYW1lIGVxdWl2YWxlbnQuICovXG5leHBvcnQgZnVuY3Rpb24gc3RlcERpc3BsYXlOYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiAoXG4gICAgcGFyc2VTdGVwTmFtZShuYW1lKT8uc2hvcnROYW1lID8/XG4gICAgc2hvcnROYW1lRnJvbVNhbml0aXplZCgnc3RlcCcsIG5hbWUpID8/XG4gICAgbmFtZVxuICApO1xufVxuXG5mdW5jdGlvbiBzaG9ydE5hbWVGcm9tU2FuaXRpemVkKHRhZzogc3RyaW5nLCBuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgaWYgKCFuYW1lLnN0YXJ0c1dpdGgoYCR7dGFnfS0tYCkpIHJldHVybiBudWxsO1xuICAvLyBUaGUgYC8vYCBzZXBhcmF0b3JzIGJlY2FtZSBgLS1gLCBhbmQgd2l0aGluIHRoZSBmdW5jdGlvbi1uYW1lIHBhcnQgYW55XG4gIC8vIG5lc3RlZC1mdW5jdGlvbiBgL2AgYmVjYW1lIGAtYC4gRnVuY3Rpb24gbmFtZXMgYXJlIG1vc3RseSBkYXNoLWZyZWUsIHNvXG4gIC8vIHRoZSBpbm5lcm1vc3QgbmFtZSBpcyB0aGUgbGFzdCBkYXNoLWZyZWUgc2VnbWVudC4gVGhpcyBpcyBiZXN0LWVmZm9ydDpcbiAgLy8gYCRgIGlzIGEgdmFsaWQgSlMgaWRlbnRpZmllciBjaGFyYWN0ZXIgYnV0IGlzIGFsc28gc2FuaXRpemVkIHRvIGAtYCwgc29cbiAgLy8gYSBuYW1lIGxpa2UgYHByb2Nlc3MkT3JkZXJgIGRpc3BsYXlzIGFzIGBPcmRlcmAg4oCUIGFjY2VwdGVkIGxpbWl0YXRpb24uXG4gIGNvbnN0IHNlZ21lbnRzID0gbmFtZS5zcGxpdCgnLS0nKS5maWx0ZXIoQm9vbGVhbik7XG4gIGNvbnN0IGZ1bmN0aW9uUGFydCA9IHNlZ21lbnRzLmF0KC0xKTtcbiAgbGV0IHNob3J0TmFtZSA9IGZ1bmN0aW9uUGFydD8uc3BsaXQoJy0nKS5maWx0ZXIoQm9vbGVhbikuYXQoLTEpID8/ICcnO1xuICAvLyBNaXJyb3IgcGFyc2VOYW1lJ3MgZGVmYXVsdC1leHBvcnQgaGFuZGxpbmc6IGRpc3BsYXkgZGVmYXVsdCBleHBvcnRzIGFzXG4gIC8vIHRoZSBtb2R1bGUncyBzaG9ydCBuYW1lICh0aGUgbW9kdWxlIHBhcnQgaXMgdGhlIHNlY29uZC10by1sYXN0IGAtLWBcbiAgLy8gc2VnbWVudDsgaXRzIGxhc3QgYC1gIHNlZ21lbnQgaXMgdGhlIG1vZHVsZSBzaG9ydCBuYW1lKSwgc28gdGhlIHNhbWVcbiAgLy8gd29ya2Zsb3cgZG9lc24ndCByZW5kZXIgYXMgZS5nLiBgb3JkZXJgIGZyb20gdGhlIHJhdyBuYW1lIGJ1dFxuICAvLyBgZGVmYXVsdGAgZnJvbSB0aGUgc2FuaXRpemVkIG5hbWUuXG4gIGlmIChbJ2RlZmF1bHQnLCAnX19kZWZhdWx0J10uaW5jbHVkZXMoc2hvcnROYW1lKSkge1xuICAgIGNvbnN0IG1vZHVsZVNob3J0TmFtZSA9IHNlZ21lbnRzLmF0KC0yKT8uc3BsaXQoJy0nKS5maWx0ZXIoQm9vbGVhbikuYXQoLTEpO1xuICAgIGlmIChtb2R1bGVTaG9ydE5hbWUgJiYgbW9kdWxlU2hvcnROYW1lICE9PSB0YWcpIHtcbiAgICAgIHNob3J0TmFtZSA9IG1vZHVsZVNob3J0TmFtZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHNob3J0TmFtZSB8fCBudWxsO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRQYXJzZWROYW1lKFxuICBwYXJzZWQ6IHtcbiAgICBzaG9ydE5hbWU6IHN0cmluZztcbiAgICBtb2R1bGVTcGVjaWZpZXI6IHN0cmluZztcbiAgICBmdW5jdGlvbk5hbWU6IHN0cmluZztcbiAgfSB8IG51bGwsXG4gIGZhbGxiYWNrOiBzdHJpbmdcbik6IHN0cmluZyB7XG4gIGlmICghcGFyc2VkKSByZXR1cm4gZmFsbGJhY2s7XG4gIHJldHVybiBgJHtwYXJzZWQuc2hvcnROYW1lfSAoJHtwYXJzZWQubW9kdWxlU3BlY2lmaWVyfSlgO1xufVxuIl19
|