@ultipa-graph/ultipa-driver 6.0.16 → 6.0.18
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/client.d.ts +2 -0
- package/dist/client.js +28 -9
- package/dist/response.d.ts +19 -1
- package/dist/response.js +13 -2
- package/dist/services/converters.js +2 -2
- package/dist/services/query-service.js +41 -7
- package/dist/services/session-service.js +8 -2
- package/dist/types/convenience.js +10 -7
- package/package.json +1 -1
|
@@ -42,6 +42,12 @@ const response_1 = require("../response");
|
|
|
42
42
|
const errors_1 = require("../errors");
|
|
43
43
|
const services_1 = require("../services");
|
|
44
44
|
const converters_1 = require("./converters");
|
|
45
|
+
/**
|
|
46
|
+
* Match a SINGLE `USE GRAPH <ident>` statement (case-insensitive) with
|
|
47
|
+
* optional trailing whitespace and semicolons. Compound queries do not
|
|
48
|
+
* match — see comment in QueryService.gql below.
|
|
49
|
+
*/
|
|
50
|
+
const USE_GRAPH_RE = /^\s*USE\s+GRAPH\s+(\S+?)\s*;*\s*$/i;
|
|
45
51
|
/**
|
|
46
52
|
* Query service for executing GQL queries.
|
|
47
53
|
*/
|
|
@@ -88,12 +94,40 @@ class QueryService {
|
|
|
88
94
|
const metadata = this.ctx.getSessionMetadata();
|
|
89
95
|
const response = await (0, services_1.promisifyCallWithDeadline)(this.ctx.clients.queryService, 'Gql', request, timeoutMs, metadata);
|
|
90
96
|
this.ctx.updateActivity();
|
|
91
|
-
//
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
+
// Phase 2 dual-source cache update: prefer the server's authoritative
|
|
98
|
+
// current_graph (covers compound queries, multiple embedded
|
|
99
|
+
// USE GRAPH, and last-write-wins) and fall back to the strict
|
|
100
|
+
// client-side regex / DROP GRAPH detection for older servers that
|
|
101
|
+
// don't populate the field.
|
|
102
|
+
const serverCurrent = response.current_graph || '';
|
|
103
|
+
if (serverCurrent) {
|
|
104
|
+
this.ctx.sessions.setDefaultGraph(serverCurrent);
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
const m = query.match(USE_GRAPH_RE);
|
|
108
|
+
if (m) {
|
|
109
|
+
// Compound queries that merely *start* with `USE GRAPH` must
|
|
110
|
+
// NOT poison the default-graph state — only single-statement
|
|
111
|
+
// form matches.
|
|
112
|
+
this.ctx.sessions.setDefaultGraph(m[1]);
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
// Round-21 #5: a successful DROP GRAPH X must clear our cached
|
|
116
|
+
// default_graph if it pointed at X. New servers handle this
|
|
117
|
+
// authoritatively via current_graph (returns "" after self-drop)
|
|
118
|
+
// — this branch only fires on older servers without the field.
|
|
119
|
+
const trimmed = query.trim();
|
|
120
|
+
if (trimmed.toUpperCase().startsWith('DROP GRAPH')) {
|
|
121
|
+
let rest = trimmed.substring('DROP GRAPH'.length).trimStart();
|
|
122
|
+
if (rest.toUpperCase().startsWith('IF EXISTS')) {
|
|
123
|
+
rest = rest.substring('IF EXISTS'.length).trimStart();
|
|
124
|
+
}
|
|
125
|
+
const dropped = rest.replace(/;+$/, '').trim().replace(/^[`"']+|[`"']+$/g, '');
|
|
126
|
+
const current = this.ctx.sessions.getDefaultGraph();
|
|
127
|
+
if (dropped && current && dropped === current) {
|
|
128
|
+
this.ctx.sessions.setDefaultGraph('');
|
|
129
|
+
}
|
|
130
|
+
}
|
|
97
131
|
}
|
|
98
132
|
}
|
|
99
133
|
return (0, converters_1.convertGqlResponse)(response);
|
|
@@ -186,4 +220,4 @@ class QueryService {
|
|
|
186
220
|
}
|
|
187
221
|
}
|
|
188
222
|
exports.QueryService = QueryService;
|
|
189
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9xdWVyeS1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsb0RBQXNDO0FBRXRDLDBDQUF1QztBQUN2QyxzQ0FBOEQ7QUFDOUQsMENBQXdEO0FBQ3hELDZDQUdzQjtBQUd0Qjs7R0FFRztBQUNILE1BQWEsWUFBWTtJQUNIO0lBQXBCLFlBQW9CLEdBQW1CO1FBQW5CLFFBQUcsR0FBSCxHQUFHLENBQWdCO0lBQUcsQ0FBQztJQUUzQzs7Ozs7Ozs7T0FRRztJQUNLLGdCQUFnQixDQUFDLE1BQW9CO1FBQzNDLGdFQUFnRTtRQUNoRSxJQUFJLE1BQU0sRUFBRSxPQUFPLElBQUksTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDeEIsQ0FBQztRQUVELHVDQUF1QztRQUN2Qyx3RUFBd0U7UUFDeEUsc0NBQXNDO1FBRXRDLHFEQUFxRDtRQUNyRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUM7SUFDMUMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBYSxFQUFFLE1BQW9CO1FBQzNDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSx3QkFBZSxFQUFFLENBQUM7UUFDOUIsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQy9DLE1BQU0sT0FBTyxHQUFHLElBQUEsNEJBQWUsRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FB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SUFBSSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFhLEVBQUUsTUFBb0I7UUFDL0MsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsTUFBTSxJQUFJLHdCQUFlLEVBQUUsQ0FBQztRQUM5QixDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDL0MsTUFBTSxPQUFPLEdBQUcsSUFBQSw0QkFBZSxFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDekUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQy9DLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoRCxNQUFNLFFBQVEsR0FBUSxNQUFNLElBQUEsb0NBQXlCLEVBQ25ELElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFlBQVksRUFDN0IsU0FBUyxFQUNULE9BQU8sRUFDUCxTQUFTLEVBQ1QsUUFBUSxDQUNULENBQUM7UUFFRixPQUFPLFFBQVEsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO0lBQ2hDLENBQUM7Q0FDRjtBQTFMRCxvQ0EwTEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFF1ZXJ5IHNlcnZpY2UgaGFuZGxlcyBHUUwgcXVlcnkgZXhlY3V0aW9uLlxuICovXG5cbmltcG9ydCAqIGFzIGdycGMgZnJvbSAnQGdycGMvZ3JwYy1qcyc7XG5pbXBvcnQgeyBTZXJ2aWNlQ29udGV4dCB9IGZyb20gJy4vc2VydmljZS1jb250ZXh0JztcbmltcG9ydCB7IFJlc3BvbnNlIH0gZnJvbSAnLi4vcmVzcG9uc2UnO1xuaW1wb3J0IHsgRW1wdHlRdWVyeUVycm9yLCBRdWVyeUZhaWxlZEVycm9yIH0gZnJvbSAnLi4vZXJyb3JzJztcbmltcG9ydCB7IHByb21pc2lmeUNhbGxXaXRoRGVhZGxpbmUgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XG5pbXBvcnQge1xuICBidWlsZEdxbFJlcXVlc3QsXG4gIGNvbnZlcnRHcWxSZXNwb25zZSxcbn0gZnJvbSAnLi9jb252ZXJ0ZXJzJztcbmltcG9ydCB7IFF1ZXJ5Q29uZmlnIH0gZnJvbSAnLi4vY2xpZW50JztcblxuLyoqXG4gKiBRdWVyeSBzZXJ2aWNlIGZvciBleGVjdXRpbmcgR1FMIHF1ZXJpZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBRdWVyeVNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGN0eDogU2VydmljZUNvbnRleHQpIHt9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZSB0aW1lb3V0IHdpdGggdGhlIGZvbGxvd2luZyBwcmlvcml0eTpcbiAgICogMS4gUXVlcnlDb25maWcudGltZW91dCAoaGlnaGVzdCBwcmlvcml0eSkgLSBleHBsaWNpdGx5IHNwZWNpZmllZCB0aW1lb3V0XG4gICAqIDIuIENvbnRleHQgZGVhZGxpbmUgKG1lZGl1bSBwcmlvcml0eSkgLSByZW1haW5pbmcgdGltZSBmcm9tIGNvbnRleHQgZGVhZGxpbmVcbiAgICogMy4gY2xpZW50LmNvbmZpZy50aW1lb3V0IChkZWZhdWx0KSAtIGRlZmF1bHQgdGltZW91dCBmcm9tIGNsaWVudCBjb25maWdcbiAgICpcbiAgICogQHBhcmFtIGNvbmZpZyBPcHRpb25hbCBxdWVyeSBjb25maWd1cmF0aW9uXG4gICAqIEByZXR1cm5zIFRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzXG4gICAqL1xuICBwcml2YXRlIGNhbGN1bGF0ZVRpbWVvdXQoY29uZmlnPzogUXVlcnlDb25maWcpOiBudW1iZXIge1xuICAgIC8vIFByaW9yaXR5IDE6IFVzZSBleHBsaWNpdGx5IHNwZWNpZmllZCB0aW1lb3V0IGZyb20gUXVlcnlDb25maWdcbiAgICBpZiAoY29uZmlnPy50aW1lb3V0ICYmIGNvbmZpZy50aW1lb3V0ID4gMCkge1xuICAgICAgcmV0dXJuIGNvbmZpZy50aW1lb3V0O1xuICAgIH1cblxuICAgIC8vIFByaW9yaXR5IDI6IENvbnRleHQgZGVhZGxpbmUgc3VwcG9ydFxuICAgIC8vIE5vdGU6IE5vZGUuanMgU0RLIGRvZXNuJ3QgY3VycmVudGx5IGV4cG9zZSBjb250ZXh0IGRlYWRsaW5lIHBhcmFtZXRlclxuICAgIC8vIFRoaXMgaXMgbGVmdCBmb3IgZnV0dXJlIGVuaGFuY2VtZW50XG5cbiAgICAvLyBQcmlvcml0eSAzOiBVc2UgZGVmYXVsdCB0aW1lb3V0IGZyb20gY2xpZW50IGNvbmZpZ1xuICAgIHJldHVybiB0aGlzLmN0eC5jb25maWcudGltZW91dCB8fCAzMDAwMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlIGEgR1FMIHF1ZXJ5IGFuZCByZXR1cm4gdGhlIHJlc3VsdC5cbiAgICpcbiAgICogRmFsbHMgYmFjayB0byBHcWxTdHJlYW0gKyBjbGllbnQtc2lkZSBhZ2dyZWdhdGlvbiB3aGVuIHRoZSBzZXJ2ZXJcbiAgICogcmVqZWN0cyB0aGUgcmVzdWx0IHNldCBhcyB0b28gbGFyZ2UgZm9yIG5vbi1zdHJlYW1pbmcgUlBDXG4gICAqIChSRVNPVVJDRV9FWEhBVVNURUQgd2l0aCBcInVzZSBzdHJlYW1pbmcgQVBJXCIgZGV0YWlsKS5cbiAgICovXG4gIGFzeW5jIGdxbChxdWVyeTogc3RyaW5nLCBjb25maWc/OiBRdWVyeUNvbmZpZyk6IFByb21pc2U8UmVzcG9uc2U+IHtcbiAgICBpZiAoIXF1ZXJ5KSB7XG4gICAgICB0aHJvdyBuZXcgRW1wdHlRdWVyeUVycm9yKCk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuY3R4LnNlc3Npb25zLmdldFNlc3Npb24oKTtcbiAgICBjb25zdCByZXF1ZXN0ID0gYnVpbGRHcWxSZXF1ZXN0KHF1ZXJ5LCBzZXNzaW9uLCB0aGlzLmN0eC5jb25maWcsIGNvbmZpZyk7XG4gICAgY29uc3QgdGltZW91dE1zID0gdGhpcy5jYWxjdWxhdGVUaW1lb3V0KGNvbmZpZyk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmN0eC5nZXRTZXNzaW9uTWV0YWRhdGEoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlOiBhbnkgPSBhd2FpdCBwcm9taXNpZnlDYWxsV2l0aERlYWRsaW5lKFxuICAgICAgICB0aGlzLmN0eC5jbGllbnRzLnF1ZXJ5U2VydmljZSxcbiAgICAgICAgJ0dxbCcsXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICAgIHRpbWVvdXRNcyxcbiAgICAgICAgbWV0YWRhdGFcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuY3R4LnVwZGF0ZUFjdGl2aXR5KCk7XG5cbiAgICAgIC8vIFVwZGF0ZSBkZWZhdWx0IGdyYXBoIGlmIHRoZSBxdWVyeSBpcyBhIFVTRSBHUkFQSCBzdGF0ZW1lbnRcbiAgICAgIGNvbnN0IHN0cmlwcGVkID0gcXVlcnkudHJpbSgpO1xuICAgICAgaWYgKHN0cmlwcGVkLnRvVXBwZXJDYXNlKCkuc3RhcnRzV2l0aCgnVVNFIEdSQVBIJykpIHtcbiAgICAgICAgY29uc3QgbmV3R3JhcGggPSBzdHJpcHBlZC5zdWJzdHJpbmcoJ1VTRSBHUkFQSCcubGVuZ3RoKS50cmltKCkucmVwbGFjZSgvOyskLywgJycpLnRyaW0oKTtcbiAgICAgICAgaWYgKG5ld0dyYXBoKSB7XG4gICAgICAgICAgdGhpcy5jdHguc2Vzc2lvbnMuc2V0RGVmYXVsdEdyYXBoKG5ld0dyYXBoKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udmVydEdxbFJlc3BvbnNlKHJlc3BvbnNlKTtcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICBpZiAoXG4gICAgICAgIGVycm9yPy5jb2RlID09PSBncnBjLnN0YXR1cy5SRVNPVVJDRV9FWEhBVVNURUQgJiZcbiAgICAgICAgdHlwZW9mIGVycm9yPy5kZXRhaWxzID09PSAnc3RyaW5nJyAmJlxuICAgICAgICBlcnJvci5kZXRhaWxzLmluY2x1ZGVzKCd1c2Ugc3RyZWFtaW5nIEFQSScpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3FsU3RyZWFtQ29sbGVjdChxdWVyeSwgY29uZmlnKTtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBRdWVyeUZhaWxlZEVycm9yKGVycm9yLm1lc3NhZ2UgfHwgJ1F1ZXJ5IGZhaWxlZCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSdW4gR3FsU3RyZWFtIGFuZCBhZ2dyZWdhdGUgY2h1bmtzIGludG8gYSBzaW5nbGUgUmVzcG9uc2UuXG4gICAqXG4gICAqIFVzZWQgYXMgZmFsbGJhY2sgZnJvbSBncWwoKSB3aGVuIHRoZSBzZXJ2ZXIgcmVqZWN0cyB0aGUgcmVzdWx0IHNldFxuICAgKiBhcyB0b28gbGFyZ2UgZm9yIG5vbi1zdHJlYW1pbmcgUlBDLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBncWxTdHJlYW1Db2xsZWN0KHF1ZXJ5OiBzdHJpbmcsIGNvbmZpZz86IFF1ZXJ5Q29uZmlnKTogUHJvbWlzZTxSZXNwb25zZT4ge1xuICAgIGNvbnN0IGNodW5rczogUmVzcG9uc2VbXSA9IFtdO1xuICAgIGF3YWl0IHRoaXMuZ3FsU3RyZWFtKHF1ZXJ5LCBjb25maWcsIChjaHVuazogUmVzcG9uc2UpID0+IHtcbiAgICAgIGNodW5rcy5wdXNoKGNodW5rKTtcbiAgICB9KTtcblxuICAgIGlmIChjaHVua3MubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbmV3IFJlc3BvbnNlKFtdLCBbXSwgMCwgZmFsc2UsIFtdLCAwKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb2x1bW5zID0gY2h1bmtzWzBdLmNvbHVtbnM7XG4gICAgY29uc3Qgcm93cyA9IGNodW5rcy5mbGF0TWFwKGMgPT4gYy5yb3dzKTtcbiAgICBjb25zdCB3YXJuaW5ncyA9IGNodW5rcy5mbGF0TWFwKGMgPT4gYy53YXJuaW5ncyk7XG4gICAgbGV0IHJvd3NBZmZlY3RlZCA9IDA7XG4gICAgZm9yIChjb25zdCBjIG9mIGNodW5rcykge1xuICAgICAgaWYgKGMucm93c0FmZmVjdGVkKSB7XG4gICAgICAgIHJvd3NBZmZlY3RlZCA9IGMucm93c0FmZmVjdGVkO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKGNvbHVtbnMsIHJvd3MsIHJvd3MubGVuZ3RoLCBmYWxzZSwgd2FybmluZ3MsIHJvd3NBZmZlY3RlZCk7XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZSBhIEdRTCBxdWVyeSBhbmQgc3RyZWFtIHRoZSByZXN1bHRzLlxuICAgKi9cbiAgYXN5bmMgZ3FsU3RyZWFtKFxuICAgIHF1ZXJ5OiBzdHJpbmcsXG4gICAgY29uZmlnPzogUXVlcnlDb25maWcsXG4gICAgY2FsbGJhY2s/OiAocmVzcG9uc2U6IFJlc3BvbnNlKSA9PiB2b2lkXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghcXVlcnkpIHtcbiAgICAgIHRocm93IG5ldyBFbXB0eVF1ZXJ5RXJyb3IoKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5jdHguc2Vzc2lvbnMuZ2V0U2Vzc2lvbigpO1xuICAgIGNvbnN0IHJlcXVlc3QgPSBidWlsZEdxbFJlcXVlc3QocXVlcnksIHNlc3Npb24sIHRoaXMuY3R4LmNvbmZpZywgY29uZmlnKTtcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3R4LmdldFNlc3Npb25NZXRhZGF0YSgpO1xuICAgIGNvbnN0IHRpbWVvdXRNcyA9IHRoaXMuY2FsY3VsYXRlVGltZW91dChjb25maWcpO1xuICAgIGNvbnN0IGRlYWRsaW5lID0gbmV3IERhdGUoRGF0ZS5ub3coKSArIHRpbWVvdXRNcyk7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3Qgc3RyZWFtID0gKHRoaXMuY3R4LmNsaWVudHMucXVlcnlTZXJ2aWNlIGFzIGFueSkuR3FsU3RyZWFtKFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICBtZXRhZGF0YSxcbiAgICAgICAgeyBkZWFkbGluZSB9XG4gICAgICApO1xuXG4gICAgICBzdHJlYW0ub24oJ2RhdGEnLCAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmN0eC51cGRhdGVBY3Rpdml0eSgpO1xuICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICBjYWxsYmFjayhjb252ZXJ0R3FsUmVzcG9uc2UocmVzcG9uc2UpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHN0cmVhbS5vbignZW5kJywgKCkgPT4gcmVzb2x2ZSgpKTtcbiAgICAgIHN0cmVhbS5vbignZXJyb3InLCAoZXJyb3I6IGFueSkgPT4gcmVqZWN0KG5ldyBRdWVyeUZhaWxlZEVycm9yKGVycm9yLm1lc3NhZ2UpKSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBleGVjdXRpb24gcGxhbiBmb3IgYSBxdWVyeS5cbiAgICovXG4gIGFzeW5jIGV4cGxhaW4ocXVlcnk6IHN0cmluZywgY29uZmlnPzogUXVlcnlDb25maWcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGlmICghcXVlcnkpIHtcbiAgICAgIHRocm93IG5ldyBFbXB0eVF1ZXJ5RXJyb3IoKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5jdHguc2Vzc2lvbnMuZ2V0U2Vzc2lvbigpO1xuICAgIGNvbnN0IHJlcXVlc3QgPSBidWlsZEdxbFJlcXVlc3QocXVlcnksIHNlc3Npb24sIHRoaXMuY3R4LmNvbmZpZywgY29uZmlnKTtcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3R4LmdldFNlc3Npb25NZXRhZGF0YSgpO1xuICAgIGNvbnN0IHRpbWVvdXRNcyA9IHRoaXMuY2FsY3VsYXRlVGltZW91dChjb25maWcpO1xuICAgIGNvbnN0IHJlc3BvbnNlOiBhbnkgPSBhd2FpdCBwcm9taXNpZnlDYWxsV2l0aERlYWRsaW5lKFxuICAgICAgdGhpcy5jdHguY2xpZW50cy5xdWVyeVNlcnZpY2UsXG4gICAgICAnRXhwbGFpbicsXG4gICAgICByZXF1ZXN0LFxuICAgICAgdGltZW91dE1zLFxuICAgICAgbWV0YWRhdGFcbiAgICApO1xuXG4gICAgcmV0dXJuIHJlc3BvbnNlLnBsYW4gfHwgJyc7XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZSBhIHF1ZXJ5IHdpdGggcHJvZmlsaW5nIGFuZCByZXR1cm4gc3RhdGlzdGljcy5cbiAgICovXG4gIGFzeW5jIHByb2ZpbGUocXVlcnk6IHN0cmluZywgY29uZmlnPzogUXVlcnlDb25maWcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGlmICghcXVlcnkpIHtcbiAgICAgIHRocm93IG5ldyBFbXB0eVF1ZXJ5RXJyb3IoKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5jdHguc2Vzc2lvbnMuZ2V0U2Vzc2lvbigpO1xuICAgIGNvbnN0IHJlcXVlc3QgPSBidWlsZEdxbFJlcXVlc3QocXVlcnksIHNlc3Npb24sIHRoaXMuY3R4LmNvbmZpZywgY29uZmlnKTtcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3R4LmdldFNlc3Npb25NZXRhZGF0YSgpO1xuICAgIGNvbnN0IHRpbWVvdXRNcyA9IHRoaXMuY2FsY3VsYXRlVGltZW91dChjb25maWcpO1xuICAgIGNvbnN0IHJlc3BvbnNlOiBhbnkgPSBhd2FpdCBwcm9taXNpZnlDYWxsV2l0aERlYWRsaW5lKFxuICAgICAgdGhpcy5jdHguY2xpZW50cy5xdWVyeVNlcnZpY2UsXG4gICAgICAnUHJvZmlsZScsXG4gICAgICByZXF1ZXN0LFxuICAgICAgdGltZW91dE1zLFxuICAgICAgbWV0YWRhdGFcbiAgICApO1xuXG4gICAgcmV0dXJuIHJlc3BvbnNlLnByb2ZpbGUgfHwgJyc7XG4gIH1cbn1cbiJdfQ==
|
|
223
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9xdWVyeS1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsb0RBQXNDO0FBRXRDLDBDQUF1QztBQUN2QyxzQ0FBOEQ7QUFDOUQsMENBQXdEO0FBQ3hELDZDQUdzQjtBQUd0Qjs7OztHQUlHO0FBQ0gsTUFBTSxZQUFZLEdBQUcsb0NBQW9DLENBQUM7QUFFMUQ7O0dBRUc7QUFDSCxNQUFhLFlBQVk7SUFDSDtJQUFwQixZQUFvQixHQUFtQjtRQUFuQixRQUFHLEdBQUgsR0FBRyxDQUFnQjtJQUFHLENBQUM7SUFFM0M7Ozs7Ozs7O09BUUc7SUFDSyxnQkFBZ0IsQ0FBQyxNQUFvQjtRQUMzQyxnRUFBZ0U7UUFDaEUsSUFBSSxNQUFNLEVBQUUsT0FBTyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDMUMsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQ3hCLENBQUM7UUFFRCx1Q0FBdUM7UUFDdkMsd0VBQXdFO1FBQ3hFLHNDQUFzQztRQUV0QyxxREFBcUQ7UUFDckQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQWEsRUFBRSxNQUFvQjtRQUMzQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxNQUFNLElBQUksd0JBQWUsRUFBRSxDQUFDO1FBQzlCLENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMvQyxNQUFNLE9BQU8sR0FBRyxJQUFBLDRCQUFlLEVBQUMsS0FBSyxFQUFFLE9B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SUFDN0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFhLEVBQUUsTUFBb0I7UUFDL0MsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsTUFBTSxJQUFJLHdCQUFlLEVBQUUsQ0FBQztRQUM5QixDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDL0MsTUFBTSxPQUFPLEdBQUcsSUFBQSw0QkFBZSxFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDekUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQy9DLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoRCxNQUFNLFFBQVEsR0FBUSxNQUFNLElBQUEsb0NBQXlCLEVBQ25ELElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFlBQVksRUFDN0IsU0FBUyxFQUNULE9BQU8sRUFDUCxTQUFTLEVBQ1QsUUFBUSxDQUNULENBQUM7UUFFRixPQUFPLFFBQVEsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO0lBQ2hDLENBQUM7Q0FDRjtBQXBORCxvQ0FvTkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFF1ZXJ5IHNlcnZpY2UgaGFuZGxlcyBHUUwgcXVlcnkgZXhlY3V0aW9uLlxuICovXG5cbmltcG9ydCAqIGFzIGdycGMgZnJvbSAnQGdycGMvZ3JwYy1qcyc7XG5pbXBvcnQgeyBTZXJ2aWNlQ29udGV4dCB9IGZyb20gJy4vc2VydmljZS1jb250ZXh0JztcbmltcG9ydCB7IFJlc3BvbnNlIH0gZnJvbSAnLi4vcmVzcG9uc2UnO1xuaW1wb3J0IHsgRW1wdHlRdWVyeUVycm9yLCBRdWVyeUZhaWxlZEVycm9yIH0gZnJvbSAnLi4vZXJyb3JzJztcbmltcG9ydCB7IHByb21pc2lmeUNhbGxXaXRoRGVhZGxpbmUgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XG5pbXBvcnQge1xuICBidWlsZEdxbFJlcXVlc3QsXG4gIGNvbnZlcnRHcWxSZXNwb25zZSxcbn0gZnJvbSAnLi9jb252ZXJ0ZXJzJztcbmltcG9ydCB7IFF1ZXJ5Q29uZmlnIH0gZnJvbSAnLi4vY2xpZW50JztcblxuLyoqXG4gKiBNYXRjaCBhIFNJTkdMRSBgVVNFIEdSQVBIIDxpZGVudD5gIHN0YXRlbWVudCAoY2FzZS1pbnNlbnNpdGl2ZSkgd2l0aFxuICogb3B0aW9uYWwgdHJhaWxpbmcgd2hpdGVzcGFjZSBhbmQgc2VtaWNvbG9ucy4gQ29tcG91bmQgcXVlcmllcyBkbyBub3RcbiAqIG1hdGNoIOKAlCBzZWUgY29tbWVudCBpbiBRdWVyeVNlcnZpY2UuZ3FsIGJlbG93LlxuICovXG5jb25zdCBVU0VfR1JBUEhfUkUgPSAvXlxccypVU0VcXHMrR1JBUEhcXHMrKFxcUys/KVxccyo7KlxccyokL2k7XG5cbi8qKlxuICogUXVlcnkgc2VydmljZSBmb3IgZXhlY3V0aW5nIEdRTCBxdWVyaWVzLlxuICovXG5leHBvcnQgY2xhc3MgUXVlcnlTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjdHg6IFNlcnZpY2VDb250ZXh0KSB7fVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGUgdGltZW91dCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJpb3JpdHk6XG4gICAqIDEuIFF1ZXJ5Q29uZmlnLnRpbWVvdXQgKGhpZ2hlc3QgcHJpb3JpdHkpIC0gZXhwbGljaXRseSBzcGVjaWZpZWQgdGltZW91dFxuICAgKiAyLiBDb250ZXh0IGRlYWRsaW5lIChtZWRpdW0gcHJpb3JpdHkpIC0gcmVtYWluaW5nIHRpbWUgZnJvbSBjb250ZXh0IGRlYWRsaW5lXG4gICAqIDMuIGNsaWVudC5jb25maWcudGltZW91dCAoZGVmYXVsdCkgLSBkZWZhdWx0IHRpbWVvdXQgZnJvbSBjbGllbnQgY29uZmlnXG4gICAqXG4gICAqIEBwYXJhbSBjb25maWcgT3B0aW9uYWwgcXVlcnkgY29uZmlndXJhdGlvblxuICAgKiBAcmV0dXJucyBUaW1lb3V0IGluIG1pbGxpc2Vjb25kc1xuICAgKi9cbiAgcHJpdmF0ZSBjYWxjdWxhdGVUaW1lb3V0KGNvbmZpZz86IFF1ZXJ5Q29uZmlnKTogbnVtYmVyIHtcbiAgICAvLyBQcmlvcml0eSAxOiBVc2UgZXhwbGljaXRseSBzcGVjaWZpZWQgdGltZW91dCBmcm9tIFF1ZXJ5Q29uZmlnXG4gICAgaWYgKGNvbmZpZz8udGltZW91dCAmJiBjb25maWcudGltZW91dCA+IDApIHtcbiAgICAgIHJldHVybiBjb25maWcudGltZW91dDtcbiAgICB9XG5cbiAgICAvLyBQcmlvcml0eSAyOiBDb250ZXh0IGRlYWRsaW5lIHN1cHBvcnRcbiAgICAvLyBOb3RlOiBOb2RlLmpzIFNESyBkb2Vzbid0IGN1cnJlbnRseSBleHBvc2UgY29udGV4dCBkZWFkbGluZSBwYXJhbWV0ZXJcbiAgICAvLyBUaGlzIGlzIGxlZnQgZm9yIGZ1dHVyZSBlbmhhbmNlbWVudFxuXG4gICAgLy8gUHJpb3JpdHkgMzogVXNlIGRlZmF1bHQgdGltZW91dCBmcm9tIGNsaWVudCBjb25maWdcbiAgICByZXR1cm4gdGhpcy5jdHguY29uZmlnLnRpbWVvdXQgfHwgMzAwMDA7XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZSBhIEdRTCBxdWVyeSBhbmQgcmV0dXJuIHRoZSByZXN1bHQuXG4gICAqXG4gICAqIEZhbGxzIGJhY2sgdG8gR3FsU3RyZWFtICsgY2xpZW50LXNpZGUgYWdncmVnYXRpb24gd2hlbiB0aGUgc2VydmVyXG4gICAqIHJlamVjdHMgdGhlIHJlc3VsdCBzZXQgYXMgdG9vIGxhcmdlIGZvciBub24tc3RyZWFtaW5nIFJQQ1xuICAgKiAoUkVTT1VSQ0VfRVhIQVVTVEVEIHdpdGggXCJ1c2Ugc3RyZWFtaW5nIEFQSVwiIGRldGFpbCkuXG4gICAqL1xuICBhc3luYyBncWwocXVlcnk6IHN0cmluZywgY29uZmlnPzogUXVlcnlDb25maWcpOiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gICAgaWYgKCFxdWVyeSkge1xuICAgICAgdGhyb3cgbmV3IEVtcHR5UXVlcnlFcnJvcigpO1xuICAgIH1cblxuICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLmN0eC5zZXNzaW9ucy5nZXRTZXNzaW9uKCk7XG4gICAgY29uc3QgcmVxdWVzdCA9IGJ1aWxkR3FsUmVxdWVzdChxdWVyeSwgc2Vzc2lvbiwgdGhpcy5jdHguY29uZmlnLCBjb25maWcpO1xuICAgIGNvbnN0IHRpbWVvdXRNcyA9IHRoaXMuY2FsY3VsYXRlVGltZW91dChjb25maWcpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jdHguZ2V0U2Vzc2lvbk1ldGFkYXRhKCk7XG4gICAgICBjb25zdCByZXNwb25zZTogYW55ID0gYXdhaXQgcHJvbWlzaWZ5Q2FsbFdpdGhEZWFkbGluZShcbiAgICAgICAgdGhpcy5jdHguY2xpZW50cy5xdWVyeVNlcnZpY2UsXG4gICAgICAgICdHcWwnLFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICB0aW1lb3V0TXMsXG4gICAgICAgIG1ldGFkYXRhXG4gICAgICApO1xuXG4gICAgICB0aGlzLmN0eC51cGRhdGVBY3Rpdml0eSgpO1xuXG4gICAgICAvLyBQaGFzZSAyIGR1YWwtc291cmNlIGNhY2hlIHVwZGF0ZTogcHJlZmVyIHRoZSBzZXJ2ZXIncyBhdXRob3JpdGF0aXZlXG4gICAgICAvLyBjdXJyZW50X2dyYXBoIChjb3ZlcnMgY29tcG91bmQgcXVlcmllcywgbXVsdGlwbGUgZW1iZWRkZWRcbiAgICAgIC8vIFVTRSBHUkFQSCwgYW5kIGxhc3Qtd3JpdGUtd2lucykgYW5kIGZhbGwgYmFjayB0byB0aGUgc3RyaWN0XG4gICAgICAvLyBjbGllbnQtc2lkZSByZWdleCAvIERST1AgR1JBUEggZGV0ZWN0aW9uIGZvciBvbGRlciBzZXJ2ZXJzIHRoYXRcbiAgICAgIC8vIGRvbid0IHBvcHVsYXRlIHRoZSBmaWVsZC5cbiAgICAgIGNvbnN0IHNlcnZlckN1cnJlbnQ6IHN0cmluZyA9IChyZXNwb25zZSBhcyBhbnkpLmN1cnJlbnRfZ3JhcGggfHwgJyc7XG4gICAgICBpZiAoc2VydmVyQ3VycmVudCkge1xuICAgICAgICB0aGlzLmN0eC5zZXNzaW9ucy5zZXREZWZhdWx0R3JhcGgoc2VydmVyQ3VycmVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBtID0gcXVlcnkubWF0Y2goVVNFX0dSQVBIX1JFKTtcbiAgICAgICAgaWYgKG0pIHtcbiAgICAgICAgICAvLyBDb21wb3VuZCBxdWVyaWVzIHRoYXQgbWVyZWx5ICpzdGFydCogd2l0aCBgVVNFIEdSQVBIYCBtdXN0XG4gICAgICAgICAgLy8gTk9UIHBvaXNvbiB0aGUgZGVmYXVsdC1ncmFwaCBzdGF0ZSDigJQgb25seSBzaW5nbGUtc3RhdGVtZW50XG4gICAgICAgICAgLy8gZm9ybSBtYXRjaGVzLlxuICAgICAgICAgIHRoaXMuY3R4LnNlc3Npb25zLnNldERlZmF1bHRHcmFwaChtWzFdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBSb3VuZC0yMSAjNTogYSBzdWNjZXNzZnVsIERST1AgR1JBUEggWCBtdXN0IGNsZWFyIG91ciBjYWNoZWRcbiAgICAgICAgICAvLyBkZWZhdWx0X2dyYXBoIGlmIGl0IHBvaW50ZWQgYXQgWC4gTmV3IHNlcnZlcnMgaGFuZGxlIHRoaXNcbiAgICAgICAgICAvLyBhdXRob3JpdGF0aXZlbHkgdmlhIGN1cnJlbnRfZ3JhcGggKHJldHVybnMgXCJcIiBhZnRlciBzZWxmLWRyb3ApXG4gICAgICAgICAgLy8g4oCUIHRoaXMgYnJhbmNoIG9ubHkgZmlyZXMgb24gb2xkZXIgc2VydmVycyB3aXRob3V0IHRoZSBmaWVsZC5cbiAgICAgICAgICBjb25zdCB0cmltbWVkID0gcXVlcnkudHJpbSgpO1xuICAgICAgICAgIGlmICh0cmltbWVkLnRvVXBwZXJDYXNlKCkuc3RhcnRzV2l0aCgnRFJPUCBHUkFQSCcpKSB7XG4gICAgICAgICAgICBsZXQgcmVzdCA9IHRyaW1tZWQuc3Vic3RyaW5nKCdEUk9QIEdSQVBIJy5sZW5ndGgpLnRyaW1TdGFydCgpO1xuICAgICAgICAgICAgaWYgKHJlc3QudG9VcHBlckNhc2UoKS5zdGFydHNXaXRoKCdJRiBFWElTVFMnKSkge1xuICAgICAgICAgICAgICByZXN0ID0gcmVzdC5zdWJzdHJpbmcoJ0lGIEVYSVNUUycubGVuZ3RoKS50cmltU3RhcnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGRyb3BwZWQgPSByZXN0LnJlcGxhY2UoLzsrJC8sICcnKS50cmltKCkucmVwbGFjZSgvXltgXCInXSt8W2BcIiddKyQvZywgJycpO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudCA9IHRoaXMuY3R4LnNlc3Npb25zLmdldERlZmF1bHRHcmFwaCgpO1xuICAgICAgICAgICAgaWYgKGRyb3BwZWQgJiYgY3VycmVudCAmJiBkcm9wcGVkID09PSBjdXJyZW50KSB7XG4gICAgICAgICAgICAgIHRoaXMuY3R4LnNlc3Npb25zLnNldERlZmF1bHRHcmFwaCgnJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb252ZXJ0R3FsUmVzcG9uc2UocmVzcG9uc2UpO1xuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIGlmIChcbiAgICAgICAgZXJyb3I/LmNvZGUgPT09IGdycGMuc3RhdHVzLlJFU09VUkNFX0VYSEFVU1RFRCAmJlxuICAgICAgICB0eXBlb2YgZXJyb3I/LmRldGFpbHMgPT09ICdzdHJpbmcnICYmXG4gICAgICAgIGVycm9yLmRldGFpbHMuaW5jbHVkZXMoJ3VzZSBzdHJlYW1pbmcgQVBJJylcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gdGhpcy5ncWxTdHJlYW1Db2xsZWN0KHF1ZXJ5LCBjb25maWcpO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IFF1ZXJ5RmFpbGVkRXJyb3IoZXJyb3IubWVzc2FnZSB8fCAnUXVlcnkgZmFpbGVkJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1biBHcWxTdHJlYW0gYW5kIGFnZ3JlZ2F0ZSBjaHVua3MgaW50byBhIHNpbmdsZSBSZXNwb25zZS5cbiAgICpcbiAgICogVXNlZCBhcyBmYWxsYmFjayBmcm9tIGdxbCgpIHdoZW4gdGhlIHNlcnZlciByZWplY3RzIHRoZSByZXN1bHQgc2V0XG4gICAqIGFzIHRvbyBsYXJnZSBmb3Igbm9uLXN0cmVhbWluZyBSUEMuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGdxbFN0cmVhbUNvbGxlY3QocXVlcnk6IHN0cmluZywgY29uZmlnPzogUXVlcnlDb25maWcpOiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gICAgY29uc3QgY2h1bmtzOiBSZXNwb25zZVtdID0gW107XG4gICAgYXdhaXQgdGhpcy5ncWxTdHJlYW0ocXVlcnksIGNvbmZpZywgKGNodW5rOiBSZXNwb25zZSkgPT4ge1xuICAgICAgY2h1bmtzLnB1c2goY2h1bmspO1xuICAgIH0pO1xuXG4gICAgaWYgKGNodW5rcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBuZXcgUmVzcG9uc2UoW10sIFtdLCAwLCBmYWxzZSwgW10sIDApO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbHVtbnMgPSBjaHVua3NbMF0uY29sdW1ucztcbiAgICBjb25zdCByb3dzID0gY2h1bmtzLmZsYXRNYXAoYyA9PiBjLnJvd3MpO1xuICAgIGNvbnN0IHdhcm5pbmdzID0gY2h1bmtzLmZsYXRNYXAoYyA9PiBjLndhcm5pbmdzKTtcbiAgICBsZXQgcm93c0FmZmVjdGVkID0gMDtcbiAgICBmb3IgKGNvbnN0IGMgb2YgY2h1bmtzKSB7XG4gICAgICBpZiAoYy5yb3dzQWZmZWN0ZWQpIHtcbiAgICAgICAgcm93c0FmZmVjdGVkID0gYy5yb3dzQWZmZWN0ZWQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXcgUmVzcG9uc2UoY29sdW1ucywgcm93cywgcm93cy5sZW5ndGgsIGZhbHNlLCB3YXJuaW5ncywgcm93c0FmZmVjdGVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlIGEgR1FMIHF1ZXJ5IGFuZCBzdHJlYW0gdGhlIHJlc3VsdHMuXG4gICAqL1xuICBhc3luYyBncWxTdHJlYW0oXG4gICAgcXVlcnk6IHN0cmluZyxcbiAgICBjb25maWc/OiBRdWVyeUNvbmZpZyxcbiAgICBjYWxsYmFjaz86IChyZXNwb25zZTogUmVzcG9uc2UpID0+IHZvaWRcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCFxdWVyeSkge1xuICAgICAgdGhyb3cgbmV3IEVtcHR5UXVlcnlFcnJvcigpO1xuICAgIH1cblxuICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLmN0eC5zZXNzaW9ucy5nZXRTZXNzaW9uKCk7XG4gICAgY29uc3QgcmVxdWVzdCA9IGJ1aWxkR3FsUmVxdWVzdChxdWVyeSwgc2Vzc2lvbiwgdGhpcy5jdHguY29uZmlnLCBjb25maWcpO1xuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jdHguZ2V0U2Vzc2lvbk1ldGFkYXRhKCk7XG4gICAgY29uc3QgdGltZW91dE1zID0gdGhpcy5jYWxjdWxhdGVUaW1lb3V0KGNvbmZpZyk7XG4gICAgY29uc3QgZGVhZGxpbmUgPSBuZXcgRGF0ZShEYXRlLm5vdygpICsgdGltZW91dE1zKTtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBzdHJlYW0gPSAodGhpcy5jdHguY2xpZW50cy5xdWVyeVNlcnZpY2UgYXMgYW55KS5HcWxTdHJlYW0oXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICAgIG1ldGFkYXRhLFxuICAgICAgICB7IGRlYWRsaW5lIH1cbiAgICAgICk7XG5cbiAgICAgIHN0cmVhbS5vbignZGF0YScsIChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuY3R4LnVwZGF0ZUFjdGl2aXR5KCk7XG4gICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgIGNhbGxiYWNrKGNvbnZlcnRHcWxSZXNwb25zZShyZXNwb25zZSkpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgc3RyZWFtLm9uKCdlbmQnLCAoKSA9PiByZXNvbHZlKCkpO1xuICAgICAgc3RyZWFtLm9uKCdlcnJvcicsIChlcnJvcjogYW55KSA9PiByZWplY3QobmV3IFF1ZXJ5RmFpbGVkRXJyb3IoZXJyb3IubWVzc2FnZSkpKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGV4ZWN1dGlvbiBwbGFuIGZvciBhIHF1ZXJ5LlxuICAgKi9cbiAgYXN5bmMgZXhwbGFpbihxdWVyeTogc3RyaW5nLCBjb25maWc/OiBRdWVyeUNvbmZpZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgaWYgKCFxdWVyeSkge1xuICAgICAgdGhyb3cgbmV3IEVtcHR5UXVlcnlFcnJvcigpO1xuICAgIH1cblxuICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLmN0eC5zZXNzaW9ucy5nZXRTZXNzaW9uKCk7XG4gICAgY29uc3QgcmVxdWVzdCA9IGJ1aWxkR3FsUmVxdWVzdChxdWVyeSwgc2Vzc2lvbiwgdGhpcy5jdHguY29uZmlnLCBjb25maWcpO1xuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jdHguZ2V0U2Vzc2lvbk1ldGFkYXRhKCk7XG4gICAgY29uc3QgdGltZW91dE1zID0gdGhpcy5jYWxjdWxhdGVUaW1lb3V0KGNvbmZpZyk7XG4gICAgY29uc3QgcmVzcG9uc2U6IGFueSA9IGF3YWl0IHByb21pc2lmeUNhbGxXaXRoRGVhZGxpbmUoXG4gICAgICB0aGlzLmN0eC5jbGllbnRzLnF1ZXJ5U2VydmljZSxcbiAgICAgICdFeHBsYWluJyxcbiAgICAgIHJlcXVlc3QsXG4gICAgICB0aW1lb3V0TXMsXG4gICAgICBtZXRhZGF0YVxuICAgICk7XG5cbiAgICByZXR1cm4gcmVzcG9uc2UucGxhbiB8fCAnJztcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlIGEgcXVlcnkgd2l0aCBwcm9maWxpbmcgYW5kIHJldHVybiBzdGF0aXN0aWNzLlxuICAgKi9cbiAgYXN5bmMgcHJvZmlsZShxdWVyeTogc3RyaW5nLCBjb25maWc/OiBRdWVyeUNvbmZpZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgaWYgKCFxdWVyeSkge1xuICAgICAgdGhyb3cgbmV3IEVtcHR5UXVlcnlFcnJvcigpO1xuICAgIH1cblxuICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLmN0eC5zZXNzaW9ucy5nZXRTZXNzaW9uKCk7XG4gICAgY29uc3QgcmVxdWVzdCA9IGJ1aWxkR3FsUmVxdWVzdChxdWVyeSwgc2Vzc2lvbiwgdGhpcy5jdHguY29uZmlnLCBjb25maWcpO1xuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jdHguZ2V0U2Vzc2lvbk1ldGFkYXRhKCk7XG4gICAgY29uc3QgdGltZW91dE1zID0gdGhpcy5jYWxjdWxhdGVUaW1lb3V0KGNvbmZpZyk7XG4gICAgY29uc3QgcmVzcG9uc2U6IGFueSA9IGF3YWl0IHByb21pc2lmeUNhbGxXaXRoRGVhZGxpbmUoXG4gICAgICB0aGlzLmN0eC5jbGllbnRzLnF1ZXJ5U2VydmljZSxcbiAgICAgICdQcm9maWxlJyxcbiAgICAgIHJlcXVlc3QsXG4gICAgICB0aW1lb3V0TXMsXG4gICAgICBtZXRhZGF0YVxuICAgICk7XG5cbiAgICByZXR1cm4gcmVzcG9uc2UucHJvZmlsZSB8fCAnJztcbiAgfVxufVxuIl19
|
|
@@ -25,7 +25,13 @@ class SessionService {
|
|
|
25
25
|
};
|
|
26
26
|
try {
|
|
27
27
|
const response = await (0, services_1.promisifyCall)(this.ctx.clients.sessionService, 'Login', request);
|
|
28
|
-
|
|
28
|
+
// Prefer the server's authoritative LoginResponse.current_graph
|
|
29
|
+
// (new servers always populate it — equals the validated
|
|
30
|
+
// defaultGraph or empty). Falls back to the request value for
|
|
31
|
+
// older servers that don't populate the field.
|
|
32
|
+
const serverCurrent = response.current_graph || '';
|
|
33
|
+
const effectiveGraph = serverCurrent || defaultGraph || '';
|
|
34
|
+
const session = this.ctx.sessions.login(parseInt(response.session_id || '0', 10), response.server_version || '', response.roles || [], effectiveGraph, {
|
|
29
35
|
isCluster: response.is_cluster || false,
|
|
30
36
|
clusterId: response.cluster_id || '',
|
|
31
37
|
partitionCount: response.partition_count || 0,
|
|
@@ -63,4 +69,4 @@ class SessionService {
|
|
|
63
69
|
}
|
|
64
70
|
}
|
|
65
71
|
exports.SessionService = SessionService;
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL3Nlc3Npb24tc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7OztBQUlILHNDQUE2QztBQUM3QywwQ0FBNEM7QUFFNUM7O0dBRUc7QUFDSCxNQUFhLGNBQWM7SUFDTDtJQUFwQixZQUFvQixHQUFtQjtRQUFuQixRQUFHLEdBQUgsR0FBRyxDQUFnQjtJQUFHLENBQUM7SUFFM0M7O09BRUc7SUFDSCxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQWdCLEVBQUUsUUFBZ0IsRUFBRSxZQUFvQjtRQUNsRSxNQUFNLE9BQU8sR0FBRztZQUNkLFFBQVE7WUFDUixRQUFRO1lBQ1IsYUFBYSxFQUFFLFlBQVksSUFBSSxFQUFFO1NBQ2xDLENBQUM7UUFFRixJQUFJLENBQUM7WUFDSCxNQUFNLFFBQVEsR0FBUSxNQUFNLElBQUEsd0JBQWEsRUFDdkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUMvQixPQUFPLEVBQ1AsT0FBTyxDQUNSLENBQUM7WUFFRixnRUFBZ0U7WUFDaEUseURBQXlEO1lBQ3pELDhEQUE4RDtZQUM5RCwrQ0FBK0M7WUFDL0MsTUFBTSxhQUFhLEdBQVcsUUFBUSxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUM7WUFDM0QsTUFBTSxjQUFjLEdBQUcsYUFBYSxJQUFJLFlBQVksSUFBSSxFQUFFLENBQUM7WUFFM0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUNyQyxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQ3hDLFFBQVEsQ0FBQyxjQUFjLElBQUksRUFBRSxFQUM3QixRQUFRLENBQUMsS0FBSyxJQUFJLEVBQUUsRUFDcEIsY0FBYyxFQUNkO2dCQUNFLFNBQVMsRUFBRSxRQUFRLENBQUMsVUFBVSxJQUFJLEtBQUs7Z0JBQ3ZDLFNBQVMsRUFBRSxRQUFRLENBQUMsVUFBVSxJQUFJLEVBQUU7Z0JBQ3BDLGNBQWMsRUFBRSxRQUFRLENBQUMsZUFBZSxJQUFJLENBQUM7YUFDOUMsQ0FDRixDQUFDO1lBRUYsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQztRQUFDLE9BQU8sS0FBVSxFQUFFLENBQUM7WUFDcEIsTUFBTSxJQUFJLHlCQUFnQixDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksY0FBYyxDQUFDLENBQUM7UUFDOUQsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxNQUFNO1FBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRTtZQUFFLE9BQU87UUFFNUMsSUFBSSxDQUFDO1lBQ0gsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQy9DLE1BQU0sSUFBQSx3QkFBYSxFQUNqQixJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQy9CLFFBQVEsRUFDUixFQUFFLEVBQ0YsUUFBUSxDQUNULENBQUM7UUFDSixDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLHVCQUF1QjtRQUN6QixDQUFDO1FBRUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLElBQUk7UUFDUixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFFL0MsTUFBTSxRQUFRLEdBQVEsTUFBTSxJQUFBLHdCQUFhLEVBQ3ZDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFDL0IsTUFBTSxFQUNOLEVBQUUsRUFDRixRQUFRLENBQ1QsQ0FBQztRQUVGLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDMUIsT0FBTyxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbEQsQ0FBQztDQUNGO0FBbkZELHdDQW1GQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU2Vzc2lvbiBzZXJ2aWNlIGhhbmRsZXMgYXV0aGVudGljYXRpb24gYW5kIHNlc3Npb24gbGlmZWN5Y2xlLlxuICovXG5cbmltcG9ydCB7IFNlcnZpY2VDb250ZXh0IH0gZnJvbSAnLi9zZXJ2aWNlLWNvbnRleHQnO1xuaW1wb3J0IHsgU2Vzc2lvbiB9IGZyb20gJy4uL3Nlc3Npb24nO1xuaW1wb3J0IHsgTG9naW5GYWlsZWRFcnJvciB9IGZyb20gJy4uL2Vycm9ycyc7XG5pbXBvcnQgeyBwcm9taXNpZnlDYWxsIH0gZnJvbSAnLi4vc2VydmljZXMnO1xuXG4vKipcbiAqIFNlc3Npb24gc2VydmljZSBmb3IgYXV0aGVudGljYXRpb24gYW5kIHNlc3Npb24gbWFuYWdlbWVudC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNlc3Npb25TZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjdHg6IFNlcnZpY2VDb250ZXh0KSB7fVxuXG4gIC8qKlxuICAgKiBBdXRoZW50aWNhdGUgdGhlIHVzZXIgYW5kIGNyZWF0ZSBhIHNlc3Npb24uXG4gICAqL1xuICBhc3luYyBsb2dpbih1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nLCBkZWZhdWx0R3JhcGg6IHN0cmluZyk6IFByb21pc2U8U2Vzc2lvbj4ge1xuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICB1c2VybmFtZSxcbiAgICAgIHBhc3N3b3JkLFxuICAgICAgZGVmYXVsdF9ncmFwaDogZGVmYXVsdEdyYXBoIHx8ICcnLFxuICAgIH07XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2U6IGFueSA9IGF3YWl0IHByb21pc2lmeUNhbGwoXG4gICAgICAgIHRoaXMuY3R4LmNsaWVudHMuc2Vzc2lvblNlcnZpY2UsXG4gICAgICAgICdMb2dpbicsXG4gICAgICAgIHJlcXVlc3RcbiAgICAgICk7XG5cbiAgICAgIC8vIFByZWZlciB0aGUgc2VydmVyJ3MgYXV0aG9yaXRhdGl2ZSBMb2dpblJlc3BvbnNlLmN1cnJlbnRfZ3JhcGhcbiAgICAgIC8vIChuZXcgc2VydmVycyBhbHdheXMgcG9wdWxhdGUgaXQg4oCUIGVxdWFscyB0aGUgdmFsaWRhdGVkXG4gICAgICAvLyBkZWZhdWx0R3JhcGggb3IgZW1wdHkpLiBGYWxscyBiYWNrIHRvIHRoZSByZXF1ZXN0IHZhbHVlIGZvclxuICAgICAgLy8gb2xkZXIgc2VydmVycyB0aGF0IGRvbid0IHBvcHVsYXRlIHRoZSBmaWVsZC5cbiAgICAgIGNvbnN0IHNlcnZlckN1cnJlbnQ6IHN0cmluZyA9IHJlc3BvbnNlLmN1cnJlbnRfZ3JhcGggfHwgJyc7XG4gICAgICBjb25zdCBlZmZlY3RpdmVHcmFwaCA9IHNlcnZlckN1cnJlbnQgfHwgZGVmYXVsdEdyYXBoIHx8ICcnO1xuXG4gICAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5jdHguc2Vzc2lvbnMubG9naW4oXG4gICAgICAgIHBhcnNlSW50KHJlc3BvbnNlLnNlc3Npb25faWQgfHwgJzAnLCAxMCksXG4gICAgICAgIHJlc3BvbnNlLnNlcnZlcl92ZXJzaW9uIHx8ICcnLFxuICAgICAgICByZXNwb25zZS5yb2xlcyB8fCBbXSxcbiAgICAgICAgZWZmZWN0aXZlR3JhcGgsXG4gICAgICAgIHtcbiAgICAgICAgICBpc0NsdXN0ZXI6IHJlc3BvbnNlLmlzX2NsdXN0ZXIgfHwgZmFsc2UsXG4gICAgICAgICAgY2x1c3RlcklkOiByZXNwb25zZS5jbHVzdGVyX2lkIHx8ICcnLFxuICAgICAgICAgIHBhcnRpdGlvbkNvdW50OiByZXNwb25zZS5wYXJ0aXRpb25fY291bnQgfHwgMCxcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIHNlc3Npb247XG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgdGhyb3cgbmV3IExvZ2luRmFpbGVkRXJyb3IoZXJyb3IubWVzc2FnZSB8fCAnTG9naW4gZmFpbGVkJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRlcm1pbmF0ZSB0aGUgY3VycmVudCBzZXNzaW9uLlxuICAgKi9cbiAgYXN5bmMgbG9nb3V0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5jdHguc2Vzc2lvbnMuaXNMb2dnZWRJbigpKSByZXR1cm47XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmN0eC5nZXRTZXNzaW9uTWV0YWRhdGEoKTtcbiAgICAgIGF3YWl0IHByb21pc2lmeUNhbGwoXG4gICAgICAgIHRoaXMuY3R4LmNsaWVudHMuc2Vzc2lvblNlcnZpY2UsXG4gICAgICAgICdMb2dvdXQnLFxuICAgICAgICB7fSxcbiAgICAgICAgbWV0YWRhdGFcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gSWdub3JlIGxvZ291dCBlcnJvcnNcbiAgICB9XG5cbiAgICB0aGlzLmN0eC50eE1hbmFnZXIuY2xlYXJBbGwoKTtcbiAgICB0aGlzLmN0eC5zZXNzaW9ucy5sb2dvdXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayB0aGUgY29ubmVjdGlvbiBhbmQgcmV0dXJuIHRoZSBsYXRlbmN5IGluIG5hbm9zZWNvbmRzLlxuICAgKi9cbiAgYXN5bmMgcGluZygpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jdHguZ2V0U2Vzc2lvbk1ldGFkYXRhKCk7XG5cbiAgICBjb25zdCByZXNwb25zZTogYW55ID0gYXdhaXQgcHJvbWlzaWZ5Q2FsbChcbiAgICAgIHRoaXMuY3R4LmNsaWVudHMuc2Vzc2lvblNlcnZpY2UsXG4gICAgICAnUGluZycsXG4gICAgICB7fSxcbiAgICAgIG1ldGFkYXRhXG4gICAgKTtcblxuICAgIHRoaXMuY3R4LnVwZGF0ZUFjdGl2aXR5KCk7XG4gICAgcmV0dXJuIHBhcnNlSW50KHJlc3BvbnNlLmxhdGVuY3lfbnMgfHwgJzAnLCAxMCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -100,12 +100,15 @@ function formatGqlValue(v) {
|
|
|
100
100
|
if (v === null || v === undefined)
|
|
101
101
|
return 'NULL';
|
|
102
102
|
if (typeof v === 'string') {
|
|
103
|
-
//
|
|
104
|
-
//
|
|
105
|
-
//
|
|
106
|
-
// "unterminated string literal" parse errors
|
|
107
|
-
|
|
108
|
-
|
|
103
|
+
// Order matters: backslash FIRST, then everything else.
|
|
104
|
+
// Server GQL parser uses C-style escapes; literal LF / CR inside
|
|
105
|
+
// a `'...'` string are NOT accepted by the server lexer and
|
|
106
|
+
// surface as "unterminated string literal" parse errors.
|
|
107
|
+
const escaped = v
|
|
108
|
+
.replace(/\\/g, '\\\\')
|
|
109
|
+
.replace(/'/g, "\\'")
|
|
110
|
+
.replace(/\n/g, '\\n')
|
|
111
|
+
.replace(/\r/g, '\\r');
|
|
109
112
|
return `'${escaped}'`;
|
|
110
113
|
}
|
|
111
114
|
if (typeof v === 'boolean')
|
|
@@ -149,4 +152,4 @@ function useGraphPrefix(graphName) {
|
|
|
149
152
|
function dbTypeToKeyword(dt) {
|
|
150
153
|
return dt === DBType.EDGE ? 'EDGE' : 'NODE';
|
|
151
154
|
}
|
|
152
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVuaWVuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvY29udmVuaWVuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7QUFpTUgsa0RBY0M7QUFNRCw4Q0FFQztBQUtELHdEQUlDO0FBS0QsNERBT0M7QUFLRCx3Q0F3QkM7QUFLRCxnRUFLQztBQUtELHdDQUdDO0FBS0QsMENBRUM7QUE3UkQscURBQXFEO0FBQ3JELElBQVksTUFHWDtBQUhELFdBQVksTUFBTTtJQUNoQixtQ0FBUSxDQUFBO0lBQ1IsbUNBQVEsQ0FBQTtBQUNWLENBQUMsRUFIVyxNQUFNLHNCQUFOLE1BQU0sUUFHakI7QUFFRDs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxJQUFZLFVBSVg7QUFKRCxXQUFZLFVBQVU7SUFDcEIsK0NBQVUsQ0FBQTtJQUNWLHFEQUFhLENBQUE7SUFDYiwrQ0FBVSxDQUFBO0FBQ1osQ0FBQyxFQUpXLFVBQVUsMEJBQVYsVUFBVSxRQUlyQjtBQXVKRCwyQ0FBMkM7QUFDM0MsdURBQXVEO0FBRXZELGdGQUFnRjtBQUNoRixtQkFBbUI7QUFDbkIsZ0ZBQWdGO0FBRWhGOzs7R0FHRztBQUNILFNBQWdCLG1CQUFtQixDQUFDLENBQVM7SUFDM0MsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNiLElBQUksQ0FBQyxDQUFDO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFFbEIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQixNQUFNLE1BQU0sR0FBc0IsRUFBRSxDQUFDO0lBQ3JDLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7UUFDekIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxPQUFPO1lBQUUsU0FBUztRQUN2QixNQUFNLE1BQU0sR0FBRyxPQUFPLENB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QUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUM5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb252ZW5pZW5jZSBBUEkgdHlwZXMgZm9yIEdRTERCIE5vZGUuanMgZHJpdmVyLlxuICovXG5cbmltcG9ydCB7IFByb3BlcnR5VHlwZSB9IGZyb20gJy4vZW51bXMnO1xuaW1wb3J0IHR5cGUgeyBSZXNwb25zZSB9IGZyb20gJy4uL3Jlc3BvbnNlJztcblxuLyoqIERpc3Rpbmd1aXNoZXMgYmV0d2VlbiBub2RlIGFuZCBlZGdlIG9wZXJhdGlvbnMgKi9cbmV4cG9ydCBlbnVtIERCVHlwZSB7XG4gIE5PREUgPSAwLFxuICBFREdFID0gMSxcbn1cblxuLyoqXG4gKiBDb250cm9scyB0aGUgaW5zZXJ0IG1vZGUgZm9yIEdRTC1iYXNlZCBpbnNlcnQgb3BlcmF0aW9ucy5cbiAqXG4gKiAgIC0gYE5vcm1hbGA6ICAgIElOU0VSVCDigJQgZXJyb3IgaWYgYF9pZGAgYWxyZWFkeSBleGlzdHMuXG4gKiAgIC0gYE92ZXJ3cml0ZWA6IElOU0VSVCBPVkVSV1JJVEUg4oCUIFJFUExBQ0UgZXhpc3RpbmcgZW50aXR5IHdob2xlc2FsZVxuICogICAgIG9uIGR1cGxpY2F0ZSBgX2lkYC4gUHJvcGVydGllcyBub3QgaW4gdGhlIHdyaXRlIGFyZSBMT1NULlxuICogICAtIGBVcHNlcnRgOiAgICBVUFNFUlQg4oCUIE1FUkdFIG5ldyBwcm9wZXJ0aWVzIGludG8gZXhpc3RpbmcgZW50aXR5XG4gKiAgICAgb24gZHVwbGljYXRlIGBfaWRgLiBQcm9wZXJ0aWVzIG5vdCBpbiB0aGUgd3JpdGUgYXJlIFBSRVNFUlZFRDtcbiAqICAgICBwcm9wZXJ0aWVzIGluIHRoZSB3cml0ZSBPVkVSV1JJVEUgZXhpc3RpbmcgdmFsdWVzLiBGYWxscyBiYWNrIHRvXG4gKiAgICAgcGxhaW4gaW5zZXJ0IHdoZW4gbm8gYF9pZGAgbWF0Y2hlcy5cbiAqXG4gKiBgT3ZlcndyaXRlYCBhbmQgYFVwc2VydGAgYXJlIGRpZmZlcmVudCBzZW1hbnRpY3Mgb24gZXhpc3Rpbmcgcm93cy5cbiAqIENob29zZSBgVXBzZXJ0YCAobWVyZ2UpIGZvciBwYXJ0aWFsLXVwZGF0ZSB3b3JrbG9hZHMgd2hlcmUgeW91IGRvbid0XG4gKiB3YW50IHRvIGxvc2UgZXhpc3RpbmcgZmllbGRzOyBjaG9vc2UgYE92ZXJ3cml0ZWAgKHJlcGxhY2UpIGZvclxuICoga25vd24tY2xlYW4gcmUtaW5nZXN0IG9mIGFuIGVudGl0eSdzIGZ1bGwgc3RhdGUuXG4gKi9cbmV4cG9ydCBlbnVtIEluc2VydFR5cGUge1xuICBOb3JtYWwgPSAwLFxuICBPdmVyd3JpdGUgPSAxLFxuICBVcHNlcnQgPSAyLFxufVxuXG4vKiogTGFiZWwgaW5mbyBmcm9tIFNIT1cgTEFCRUxTLlxuICpcbiAqIEdRTCBzdXBwb3J0cyBtdWx0aS1sYWJlbCBub2RlcyAoZS5nLiAobjpQZXJzb246RW1wbG95ZWUpKSwgc28gdGhlXG4gKiBzZXJ2ZXIgcmV0dXJucyBsYWJlbHMgYXMgYSBsaXN0IGV2ZW4gd2hlbiB0aGVyZSBpcyBvbmx5IG9uZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYWJlbEluZm8ge1xuICBsYWJlbHM6IHN0cmluZ1tdO1xuICB0eXBlOiBzdHJpbmc7IC8vIFwiTk9ERVwiIG9yIFwiRURHRVwiXG59XG5cbi8qKiBOb2RlIHR5cGUgaW5mbyBmcm9tIFNIT1cgTk9ERSBUWVBFUyAqL1xuZXhwb3J0IGludGVyZmFjZSBOb2RlVHlwZUluZm8ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHByb3BlcnRpZXM6IENvbnZQcm9wZXJ0eURlZltdO1xufVxuXG4vKiogRWRnZSB0eXBlIGluZm8gZnJvbSBTSE9XIEVER0UgVFlQRVMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgRWRnZVR5cGVJbmZvIHtcbiAgbmFtZTogc3RyaW5nO1xuICBwcm9wZXJ0aWVzOiBDb252UHJvcGVydHlEZWZbXTtcbn1cblxuLyoqIExhYmVsIGRlZmluaXRpb24gdXNlZCB3aGVuIGNyZWF0aW5nIGNsb3NlZCBncmFwaHMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGFiZWxEZWYge1xuICBuYW1lOiBzdHJpbmc7XG4gIHByb3BlcnRpZXM6IENvbnZQcm9wZXJ0eURlZltdO1xufVxuXG4vKiogUHJvcGVydHkgZGVmaW5pdGlvbiBmb3IgY29udmVuaWVuY2UgQVBJICh1c2VzIHN0cmluZyB0eXBlIG5hbWUpICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnZQcm9wZXJ0eURlZiB7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nOyAvLyBHUUwgdHlwZSBuYW1lOiBcIlNUUklOR1wiLCBcIklOVDY0XCIsIFwiRE9VQkxFXCIsIGV0Yy5cbn1cblxuLyoqIFByb3BlcnR5IGluIGFuIGluZGV4IGRlZmluaXRpb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5kZXhQcm9wZXJ0eSB7XG4gIG5hbWU6IHN0cmluZztcbiAgcHJlZml4TGVuZ3RoPzogbnVtYmVyOyAvLyAwIG9yIHVuZGVmaW5lZCA9IG5vIHByZWZpeCwgPjAgPSBwcmVmaXggbGVuZ3RoIGZvciBTVFJJTkdcbn1cblxuLyoqIEluZGV4IGluZm8gZnJvbSBTSE9XIElOREVYICovXG5leHBvcnQgaW50ZXJmYWNlIEluZGV4SW5mbyB7XG4gIGluZGV4TmFtZTogc3RyaW5nO1xuICBlbnRpdHlUeXBlOiBzdHJpbmc7IC8vIFwiTk9ERVwiIG9yIFwiRURHRVwiXG4gIGxhYmVsOiBzdHJpbmc7XG4gIHByb3BlcnR5OiBzdHJpbmc7XG4gIHByZWZpeExlbmd0aD86IG51bWJlcjtcbiAgc3RhdHVzOiBzdHJpbmc7XG4gIHByb2dyZXNzOiBzdHJpbmc7XG4gIGluZGV4ZWRDb3VudDogbnVtYmVyO1xuICB0b3RhbENvdW50OiBudW1iZXI7XG4gIGVycm9yOiBzdHJpbmc7XG59XG5cbi8qKiBGdWxsdGV4dCBpbmRleCBpbmZvIGZyb20gU0hPVyBGVUxMVEVYVCAqL1xuZXhwb3J0IGludGVyZmFjZSBGdWxsdGV4dEluZm8ge1xuICBpbmRleE5hbWU6IHN0cmluZztcbiAgZW50aXR5VHlwZTogc3RyaW5nOyAvLyBcIk5PREVcIiBvciBcIkVER0VcIlxuICBzY2hlbWFOYW1lOiBzdHJpbmc7XG4gIHByb3BlcnRpZXM6IHN0cmluZztcbiAgYW5hbHl6ZXI6IHN0cmluZztcbiAgc3RhdHVzOiBzdHJpbmc7XG4gIGRvY0NvdW50OiBudW1iZXI7XG4gIHByb2dyZXNzOiBzdHJpbmc7XG59XG5cbi8qKiBUYXNrIGluZm8gZnJvbSBTSE9XIFRBU0tTICovXG5leHBvcnQgaW50ZXJmYWNlIFRhc2tJbmZvIHtcbiAgdGFza0lkOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgcXVlcnk6IHN0cmluZztcbiAgYWxnb05hbWU6IHN0cmluZztcbiAgc3RhdHVzOiBzdHJpbmc7XG4gIHN0YXJ0ZWRBdDogc3RyaW5nO1xuICBwcm9ncmVzczogc3RyaW5nO1xuICBwYXJhbWV0ZXJzOiBzdHJpbmc7XG4gIG5vZGVzV3JpdHRlbjogbnVtYmVyO1xuICBjb21wdXRlVGltZU1zOiBudW1iZXI7XG4gIHdyaXRlVGltZU1zOiBudW1iZXI7XG59XG5cbi8qKiBQcm9jZXNzIGluZm8gZnJvbSBUT1AgKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc0luZm8ge1xuICBxdWVyeUlkOiBzdHJpbmc7XG4gIHF1ZXJ5VGV4dDogc3RyaW5nO1xuICBzdGFydFRpbWU6IHN0cmluZztcbiAgZHVyYXRpb25NczogbnVtYmVyO1xuICBzdGF0dXM6IHN0cmluZztcbn1cblxuLyoqIEdyYXBoIHN0YXRpc3RpY3MgZnJvbSBkYi5zdGF0cygpICovXG5leHBvcnQgaW50ZXJmYWNlIEdyYXBoU3RhdHMge1xuICBncmFwaE5hbWU6IHN0cmluZztcbiAgbm9kZUNvdW50OiBudW1iZXI7XG4gIGVkZ2VDb3VudDogbnVtYmVyO1xuICBsYWJlbENvdW50czogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcbiAgZWRnZUxhYmVsQ291bnRzOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuICBub2RlUHJvcGVydHlTdGF0czogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgbnVtYmVyPj47XG4gIGVkZ2VQcm9wZXJ0eVN0YXRzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+Pjtcbn1cblxuLyoqIFJlc3BvbnNlIGZvciBHUUwtYmFzZWQgaW5zZXJ0IG9wZXJhdGlvbnMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5zZXJ0R3FsUmVzcG9uc2Uge1xuICByb3dzQWZmZWN0ZWQ6IG51bWJlcjtcbn1cblxuLyoqIEFsZ29yaXRobSBpbmZvIGZyb20gU0hPVyBBTEdPUyAqL1xuZXhwb3J0IGludGVyZmFjZSBBbGdvSW5mbyB7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBwYXJhbWV0ZXJzOiBzdHJpbmc7XG59XG5cbi8qKlxuICogT25lIHN0YWdlIHJvdyBmcm9tIGEgQ0FMTCBhaS5yZWFkIC8gYWkuZ3FsIFlJRUxEIHN0cmVhbS5cbiAqIFN0YWdlIG5hbWVzIGluY2x1ZGU6IHN0YXJ0LCByb3V0aW5nLCBpbnRlbnRfZXh0cmFjdGlvbiwgZGVzY3JpYmVfYWxnb3JpdGhtLFxuICogZ2VuZXJhdGlvbiwgdmFsaWRhdGlvbiwgZXhlY3V0aW9uLCBmaW5hbCwgZXJyb3IuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWlTdGFnZSB7XG4gIHN0YWdlOiBzdHJpbmc7XG4gIGRldGFpbDogc3RyaW5nO1xuICBlbGFwc2VkTXM6IG51bWJlcjtcbiAgdG9rZW5zSW5wdXQ6IG51bWJlcjtcbiAgdG9rZW5zT3V0cHV0OiBudW1iZXI7XG4gIHRva2Vuc0NhY2hlZDogbnVtYmVyO1xuICAvKiogU3RhZ2Utc3BlY2lmaWMgcGF5bG9hZCAocG9seW1vcnBoaWMgSlNPTiBmcm9tIHNlcnZlcikuICovXG4gIGRhdGE6IGFueTtcbn1cblxuLyoqXG4gKiBSZXN1bHQgb2YgYSBjbGllbnQuYWlSZWFkKCkgLyBjbGllbnQuYWlHcWwoKSBjYWxsLlxuICpcbiAqIEZvciBhaVJlYWQ6IGBkYXRhYCBpcyB0aGUgUmVzcG9uc2UgZnJvbSByZS1leGVjdXRpbmcgdGhlIGdlbmVyYXRlZCBHUUwuXG4gKiBGb3IgYWlHcWw6ICBgZGF0YWAgaXMgYWx3YXlzIG51bGwgKGdlbmVyYXRpb24tb25seTsgY2FsbGVyIHJlcnVucyBtYW51YWxseSkuXG4gKiBPbiBBSS1zaWRlIGVycm9ycywgYHN1Y2Nlc3M9ZmFsc2VgLCBgZXJyb3JgIGlzIHBvcHVsYXRlZCwgYW5kIGBkYXRhYCBpcyBudWxsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFpUmVhZFJlc3VsdCB7XG4gIHN0YWdlczogQWlTdGFnZVtdO1xuICBnZW5lcmF0ZWRHcWw6IHN0cmluZyB8IG51bGw7XG4gIGRhdGE6IFJlc3BvbnNlIHwgbnVsbDtcbiAgc3VjY2VzczogYm9vbGVhbjtcbiAgZXJyb3I6IHN0cmluZyB8IG51bGw7XG4gIHRvdGFsRWxhcHNlZE1zOiBudW1iZXI7XG4gIHRvdGFsVG9rZW5zSW5wdXQ6IG51bWJlcjtcbiAgdG90YWxUb2tlbnNPdXRwdXQ6IG51bWJlcjtcbiAgdG90YWxUb2tlbnNDYWNoZWQ6IG51bWJlcjtcbn1cblxuLy8gQ29udk5vZGUgYW5kIENvbnZFZGdlIGhhdmUgYmVlbiByZW1vdmVkLlxuLy8gVXNlIE5vZGVEYXRhIGFuZCBFZGdlRGF0YSBmcm9tIGdyYXBoX21vZGVscyBpbnN0ZWFkLlxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSGVscGVyIEZ1bmN0aW9uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBQYXJzZSBhIGNvbW1hLXNlcGFyYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9uIHN0cmluZyBsaWtlIFwiYWdlIElOVEVHRVIsIG5hbWUgU1RSSU5HXCJcbiAqIGludG8gYW4gYXJyYXkgb2YgQ29udlByb3BlcnR5RGVmLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VQcm9wZXJ0eVN0cmluZyhzOiBzdHJpbmcpOiBDb252UHJvcGVydHlEZWZbXSB7XG4gIHMgPSBzLnRyaW0oKTtcbiAgaWYgKCFzKSByZXR1cm4gW107XG5cbiAgY29uc3QgcGFydHMgPSBzLnNwbGl0KCcsJyk7XG4gIGNvbnN0IHJlc3VsdDogQ29udlByb3BlcnR5RGVmW10gPSBbXTtcbiAgZm9yIChjb25zdCBwYXJ0IG9mIHBhcnRzKSB7XG4gICAgY29uc3QgdHJpbW1lZCA9IHBhcnQudHJpbSgpO1xuICAgIGlmICghdHJpbW1lZCkgY29udGludWU7XG4gICAgY29uc3QgdG9rZW5zID0gdHJpbW1lZC5zcGxpdCgvXFxzKy8pO1xuICAgIGlmICh0b2tlbnMubGVuZ3RoIDwgMikgY29udGludWU7XG4gICAgcmVzdWx0LnB1c2goeyBuYW1lOiB0b2tlbnNbMF0sIHR5cGU6IHRva2Vuc1sxXS50b1VwcGVyQ2FzZSgpIH0pO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogQ29udmVydCBhIENvbnZQcm9wZXJ0eURlZiB0eXBlIHN0cmluZyB0byBpdHMgR1FMIHJlcHJlc2VudGF0aW9uLlxuICogSWYgdGhlIHR5cGUgaXMgYWxyZWFkeSBhIHZhbGlkIEdRTCB0eXBlIG5hbWUsIHJldHVybnMgaXQgYXMtaXMgKHVwcGVyY2FzZWQpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvcGVydHlUeXBlVG9HUUwodHlwZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB0eXBlTmFtZS50b1VwcGVyQ2FzZSgpO1xufVxuXG4vKipcbiAqIEJ1aWxkIGEgR1FMIHByb3BlcnR5IGRlZmluaXRpb24gc3RyaW5nIGxpa2UgXCJ7YWdlIElOVDY0LCBuYW1lIFNUUklOR31cIiBmcm9tIENvbnZQcm9wZXJ0eURlZltdLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRQcm9wZXJ0eURlZlN0cmluZyhwcm9wczogQ29udlByb3BlcnR5RGVmW10pOiBzdHJpbmcge1xuICBpZiAoIXByb3BzIHx8IHByb3BzLmxlbmd0aCA9PT0gMCkgcmV0dXJuICd7fSc7XG4gIGNvbnN0IHBhcnRzID0gcHJvcHMubWFwKHAgPT4gYFxcYCR7cC5uYW1lfVxcYCAke3Byb3BlcnR5VHlwZVRvR1FMKHAudHlwZSl9YCk7XG4gIHJldHVybiAneycgKyBwYXJ0cy5qb2luKCcsICcpICsgJ30nO1xufVxuXG4vKipcbiAqIEJ1aWxkIHRoZSBwcm9wZXJ0eSBsaXN0IGZvciBDUkVBVEUgSU5ERVgsIGUuZy4gXCJwcm9wMSwgcHJvcDIoMTApXCIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEluZGV4UHJvcGVydHlTdHJpbmcocHJvcHM6IEluZGV4UHJvcGVydHlbXSk6IHN0cmluZyB7XG4gIHJldHVybiBwcm9wcy5tYXAocCA9PiB7XG4gICAgaWYgKHAucHJlZml4TGVuZ3RoICYmIHAucHJlZml4TGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIGBcXGAke3AubmFtZX1cXGAoJHtwLnByZWZpeExlbmd0aH0pYDtcbiAgICB9XG4gICAgcmV0dXJuIGBcXGAke3AubmFtZX1cXGBgO1xuICB9KS5qb2luKCcsICcpO1xufVxuXG4vKipcbiAqIEZvcm1hdCBhIEphdmFTY3JpcHQgdmFsdWUgYXMgYSBHUUwgbGl0ZXJhbCBmb3IgSU5TRVJUIHN0YXRlbWVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRHcWxWYWx1ZSh2OiBhbnkpOiBzdHJpbmcge1xuICBpZiAodiA9PT0gbnVsbCB8fCB2ID09PSB1bmRlZmluZWQpIHJldHVybiAnTlVMTCc7XG4gIGlmICh0eXBlb2YgdiA9PT0gJ3N0cmluZycpIHtcbiAgICAvLyBFc2NhcGUgYmFja3NsYXNoIEZJUlNULCB0aGVuIHNpbmdsZSBxdW90ZSDigJQgb3JkZXIgbWF0dGVycy5cbiAgICAvLyBXaXRob3V0IGJhY2tzbGFzaCBlc2NhcGluZywgdmFsdWVzIGNvbnRhaW5pbmcgYFxcYCAoZS5nLiBXaW5kb3dzXG4gICAgLy8gcGF0aHMgXCJOVCBBVVRIT1JJVFlcXFxcIFNZU1RFTVwiKSBzaWxlbnRseSBjb3JydXB0IG9yIHRyaWdnZXJcbiAgICAvLyBcInVudGVybWluYXRlZCBzdHJpbmcgbGl0ZXJhbFwiIHBhcnNlIGVycm9ycyB3aGVuIHRoZSBsb25lXG4gICAgLy8gYmFja3NsYXNoIGludGVyYWN0cyB3aXRoIHRoZSBjbG9zaW5nIGAnYC5cbiAgICBjb25zdCBlc2NhcGVkID0gdi5yZXBsYWNlKC9cXFxcL2csICdcXFxcXFxcXCcpLnJlcGxhY2UoLycvZywgXCJcXFxcJ1wiKTtcbiAgICByZXR1cm4gYCcke2VzY2FwZWR9J2A7XG4gIH1cbiAgaWYgKHR5cGVvZiB2ID09PSAnYm9vbGVhbicpIHJldHVybiB2ID8gJ1RSVUUnIDogJ0ZBTFNFJztcbiAgaWYgKHR5cGVvZiB2ID09PSAnbnVtYmVyJykgcmV0dXJuIFN0cmluZyh2KTtcbiAgaWYgKHR5cGVvZiB2ID09PSAnYmlnaW50JykgcmV0dXJuIFN0cmluZyh2KTtcbiAgaWYgKEFycmF5LmlzQXJyYXkodikpIHtcbiAgICBjb25zdCBlbGVtcyA9IHYubWFwKChlbGVtOiBhbnkpID0+IGZvcm1hdEdxbFZhbHVlKGVsZW0pKTtcbiAgICByZXR1cm4gJ1snICsgZWxlbXMuam9pbignLCAnKSArICddJztcbiAgfVxuICBpZiAodHlwZW9mIHYgPT09ICdvYmplY3QnKSB7XG4gICAgY29uc3QgZW50cmllcyA9IE9iamVjdC5lbnRyaWVzKHYpO1xuICAgIGNvbnN0IHBhcnRzID0gZW50cmllcy5tYXAoKFtrLCB2YWxdKSA9PiBgJHtrfTogJHtmb3JtYXRHcWxWYWx1ZSh2YWwpfWApO1xuICAgIHJldHVybiAneycgKyBwYXJ0cy5qb2luKCcsICcpICsgJ30nO1xuICB9XG4gIHJldHVybiBgJyR7U3RyaW5nKHYpfSdgO1xufVxuXG4vKipcbiAqIEJ1aWxkIGEgR1FMIHByb3BlcnR5IHZhbHVlIG1hcCBsaWtlIFwie25hbWU6ICdBbGljZScsIGFnZTogMzB9XCIgZnJvbSBhIFJlY29yZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUHJvcGVydGllc1ZhbHVlU3RyaW5nKHByb3BzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogc3RyaW5nIHtcbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHByb3BzKTtcbiAgaWYgKGtleXMubGVuZ3RoID09PSAwKSByZXR1cm4gJyc7XG4gIGNvbnN0IHBhcnRzID0ga2V5cy5tYXAoayA9PiBgJHtrfTogJHtmb3JtYXRHcWxWYWx1ZShwcm9wc1trXSl9YCk7XG4gIHJldHVybiAneycgKyBwYXJ0cy5qb2luKCcsICcpICsgJ30nO1xufVxuXG4vKipcbiAqIFJldHVybiBcIlVTRSBHUkFQSCA8bmFtZT5cXG5cIiBpZiBncmFwaE5hbWUgaXMgbm9uLWVtcHR5LCBvdGhlcndpc2UgXCJcIi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUdyYXBoUHJlZml4KGdyYXBoTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKCFncmFwaE5hbWUpIHJldHVybiAnJztcbiAgcmV0dXJuIGBVU0UgR1JBUEggJHtncmFwaE5hbWV9XFxuYDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IERCVHlwZSB0byBHUUwga2V5d29yZCBcIk5PREVcIiBvciBcIkVER0VcIi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRiVHlwZVRvS2V5d29yZChkdDogREJUeXBlKTogc3RyaW5nIHtcbiAgcmV0dXJuIGR0ID09PSBEQlR5cGUuRURHRSA/ICdFREdFJyA6ICdOT0RFJztcbn1cbiJdfQ==
|
|
155
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVuaWVuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvY29udmVuaWVuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7QUFpTUgsa0RBY0M7QUFNRCw4Q0FFQztBQUtELHdEQUlDO0FBS0QsNERBT0M7QUFLRCx3Q0EyQkM7QUFLRCxnRUFLQztBQUtELHdDQUdDO0FBS0QsMENBRUM7QUFoU0QscURBQXFEO0FBQ3JELElBQVksTUFHWDtBQUhELFdBQVksTUFBTTtJQUNoQixtQ0FBUSxDQUFBO0lBQ1IsbUNBQVEsQ0FBQTtBQUNWLENBQUMsRUFIVyxNQUFNLHNCQUFOLE1BQU0sUUFHakI7QUFFRDs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxJQUFZLFVBSVg7QUFKRCxXQUFZLFVBQVU7SUFDcEIsK0NBQVUsQ0FBQTtJQUNWLHFEQUFhLENBQUE7SUFDYiwrQ0FBVSxDQUFBO0FBQ1osQ0FBQyxFQUpXLFVBQVUsMEJBQVYsVUFBVSxRQUlyQjtBQXVKRCwyQ0FBMkM7QUFDM0MsdURBQXVEO0FBRXZELGdGQUFnRjtBQUNoRixtQkFBbUI7QUFDbkIsZ0ZBQWdGO0FBRWhGOzs7R0FHRztBQUNILFNBQWdCLG1CQUFtQixDQUFDLENBQVM7SUFDM0MsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNiLElBQUksQ0FBQyxDQUFDO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFFbEIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQixNQUFNLE1BQU0sR0FBc0IsRUFBRSxDQUFDO0lBQ3JDLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7UUFDekIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxPQUFPO1lBQUUsU0FBUztRQUN2QixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQUUsU0FBUztRQUNoQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLGlCQUFpQixDQUFDLFFBQWdCO0lBQ2hELE9BQU8sUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQ2hDLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLHNCQUFzQixDQUFDLEtBQXdCO0lBQzdELElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDOUMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksTUFBTSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNFLE9BQU8sR0FBRyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQ3RDLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLHdCQUF3QixDQUFDLEtBQXNCO0lBQzdELE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUNuQixJQUFJLENBQUMsQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDLFlBQVksR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN6QyxPQUFPLEtBQUssQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsWUFBWSxHQUFHLENBQUM7UUFDNUMsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDekIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2hCLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLGNBQWMsQ0FBQyxDQUFNO0lBQ25DLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssU0FBUztRQUFFLE9BQU8sTUFBTSxDQUFDO0lBQ2pELElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDMUIsd0RBQXdEO1FBQ3hELGlFQUFpRTtRQUNqRSw0REFBNEQ7UUFDNUQseURBQXlEO1FBQ3pELE1BQU0sT0FBTyxHQUFHLENBQUM7YUFDZCxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQzthQUN0QixPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQzthQUNwQixPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQzthQUNyQixPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLE9BQU8sSUFBSSxPQUFPLEdBQUcsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBSSxPQUFPLENBQUMsS0FBSyxTQUFTO1FBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQ3hELElBQUksT0FBTyxDQUFDLEtBQUssUUFBUTtRQUFFLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVDLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUTtRQUFFLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3JCLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3pELE9BQU8sR0FBRyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ3RDLENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzFCLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLE9BQU8sR0FBRyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ3RDLENBQUM7SUFDRCxPQUFPLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDMUIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsMEJBQTBCLENBQUMsS0FBMEI7SUFDbkUsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ2pDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pFLE9BQU8sR0FBRyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQ3RDLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLGNBQWMsQ0FBQyxTQUFpQjtJQUM5QyxJQUFJLENBQUMsU0FBUztRQUFFLE9BQU8sRUFBRSxDQUFDO0lBQzFCLE9BQU8sYUFBYSxTQUFTLElBQUksQ0FBQztBQUNwQyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixlQUFlLENBQUMsRUFBVTtJQUN4QyxPQUFPLEVBQUUsS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUM5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb252ZW5pZW5jZSBBUEkgdHlwZXMgZm9yIEdRTERCIE5vZGUuanMgZHJpdmVyLlxuICovXG5cbmltcG9ydCB7IFByb3BlcnR5VHlwZSB9IGZyb20gJy4vZW51bXMnO1xuaW1wb3J0IHR5cGUgeyBSZXNwb25zZSB9IGZyb20gJy4uL3Jlc3BvbnNlJztcblxuLyoqIERpc3Rpbmd1aXNoZXMgYmV0d2VlbiBub2RlIGFuZCBlZGdlIG9wZXJhdGlvbnMgKi9cbmV4cG9ydCBlbnVtIERCVHlwZSB7XG4gIE5PREUgPSAwLFxuICBFREdFID0gMSxcbn1cblxuLyoqXG4gKiBDb250cm9scyB0aGUgaW5zZXJ0IG1vZGUgZm9yIEdRTC1iYXNlZCBpbnNlcnQgb3BlcmF0aW9ucy5cbiAqXG4gKiAgIC0gYE5vcm1hbGA6ICAgIElOU0VSVCDigJQgZXJyb3IgaWYgYF9pZGAgYWxyZWFkeSBleGlzdHMuXG4gKiAgIC0gYE92ZXJ3cml0ZWA6IElOU0VSVCBPVkVSV1JJVEUg4oCUIFJFUExBQ0UgZXhpc3RpbmcgZW50aXR5IHdob2xlc2FsZVxuICogICAgIG9uIGR1cGxpY2F0ZSBgX2lkYC4gUHJvcGVydGllcyBub3QgaW4gdGhlIHdyaXRlIGFyZSBMT1NULlxuICogICAtIGBVcHNlcnRgOiAgICBVUFNFUlQg4oCUIE1FUkdFIG5ldyBwcm9wZXJ0aWVzIGludG8gZXhpc3RpbmcgZW50aXR5XG4gKiAgICAgb24gZHVwbGljYXRlIGBfaWRgLiBQcm9wZXJ0aWVzIG5vdCBpbiB0aGUgd3JpdGUgYXJlIFBSRVNFUlZFRDtcbiAqICAgICBwcm9wZXJ0aWVzIGluIHRoZSB3cml0ZSBPVkVSV1JJVEUgZXhpc3RpbmcgdmFsdWVzLiBGYWxscyBiYWNrIHRvXG4gKiAgICAgcGxhaW4gaW5zZXJ0IHdoZW4gbm8gYF9pZGAgbWF0Y2hlcy5cbiAqXG4gKiBgT3ZlcndyaXRlYCBhbmQgYFVwc2VydGAgYXJlIGRpZmZlcmVudCBzZW1hbnRpY3Mgb24gZXhpc3Rpbmcgcm93cy5cbiAqIENob29zZSBgVXBzZXJ0YCAobWVyZ2UpIGZvciBwYXJ0aWFsLXVwZGF0ZSB3b3JrbG9hZHMgd2hlcmUgeW91IGRvbid0XG4gKiB3YW50IHRvIGxvc2UgZXhpc3RpbmcgZmllbGRzOyBjaG9vc2UgYE92ZXJ3cml0ZWAgKHJlcGxhY2UpIGZvclxuICoga25vd24tY2xlYW4gcmUtaW5nZXN0IG9mIGFuIGVudGl0eSdzIGZ1bGwgc3RhdGUuXG4gKi9cbmV4cG9ydCBlbnVtIEluc2VydFR5cGUge1xuICBOb3JtYWwgPSAwLFxuICBPdmVyd3JpdGUgPSAxLFxuICBVcHNlcnQgPSAyLFxufVxuXG4vKiogTGFiZWwgaW5mbyBmcm9tIFNIT1cgTEFCRUxTLlxuICpcbiAqIEdRTCBzdXBwb3J0cyBtdWx0aS1sYWJlbCBub2RlcyAoZS5nLiAobjpQZXJzb246RW1wbG95ZWUpKSwgc28gdGhlXG4gKiBzZXJ2ZXIgcmV0dXJucyBsYWJlbHMgYXMgYSBsaXN0IGV2ZW4gd2hlbiB0aGVyZSBpcyBvbmx5IG9uZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYWJlbEluZm8ge1xuICBsYWJlbHM6IHN0cmluZ1tdO1xuICB0eXBlOiBzdHJpbmc7IC8vIFwiTk9ERVwiIG9yIFwiRURHRVwiXG59XG5cbi8qKiBOb2RlIHR5cGUgaW5mbyBmcm9tIFNIT1cgTk9ERSBUWVBFUyAqL1xuZXhwb3J0IGludGVyZmFjZSBOb2RlVHlwZUluZm8ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHByb3BlcnRpZXM6IENvbnZQcm9wZXJ0eURlZltdO1xufVxuXG4vKiogRWRnZSB0eXBlIGluZm8gZnJvbSBTSE9XIEVER0UgVFlQRVMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgRWRnZVR5cGVJbmZvIHtcbiAgbmFtZTogc3RyaW5nO1xuICBwcm9wZXJ0aWVzOiBDb252UHJvcGVydHlEZWZbXTtcbn1cblxuLyoqIExhYmVsIGRlZmluaXRpb24gdXNlZCB3aGVuIGNyZWF0aW5nIGNsb3NlZCBncmFwaHMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGFiZWxEZWYge1xuICBuYW1lOiBzdHJpbmc7XG4gIHByb3BlcnRpZXM6IENvbnZQcm9wZXJ0eURlZltdO1xufVxuXG4vKiogUHJvcGVydHkgZGVmaW5pdGlvbiBmb3IgY29udmVuaWVuY2UgQVBJICh1c2VzIHN0cmluZyB0eXBlIG5hbWUpICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnZQcm9wZXJ0eURlZiB7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nOyAvLyBHUUwgdHlwZSBuYW1lOiBcIlNUUklOR1wiLCBcIklOVDY0XCIsIFwiRE9VQkxFXCIsIGV0Yy5cbn1cblxuLyoqIFByb3BlcnR5IGluIGFuIGluZGV4IGRlZmluaXRpb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5kZXhQcm9wZXJ0eSB7XG4gIG5hbWU6IHN0cmluZztcbiAgcHJlZml4TGVuZ3RoPzogbnVtYmVyOyAvLyAwIG9yIHVuZGVmaW5lZCA9IG5vIHByZWZpeCwgPjAgPSBwcmVmaXggbGVuZ3RoIGZvciBTVFJJTkdcbn1cblxuLyoqIEluZGV4IGluZm8gZnJvbSBTSE9XIElOREVYICovXG5leHBvcnQgaW50ZXJmYWNlIEluZGV4SW5mbyB7XG4gIGluZGV4TmFtZTogc3RyaW5nO1xuICBlbnRpdHlUeXBlOiBzdHJpbmc7IC8vIFwiTk9ERVwiIG9yIFwiRURHRVwiXG4gIGxhYmVsOiBzdHJpbmc7XG4gIHByb3BlcnR5OiBzdHJpbmc7XG4gIHByZWZpeExlbmd0aD86IG51bWJlcjtcbiAgc3RhdHVzOiBzdHJpbmc7XG4gIHByb2dyZXNzOiBzdHJpbmc7XG4gIGluZGV4ZWRDb3VudDogbnVtYmVyO1xuICB0b3RhbENvdW50OiBudW1iZXI7XG4gIGVycm9yOiBzdHJpbmc7XG59XG5cbi8qKiBGdWxsdGV4dCBpbmRleCBpbmZvIGZyb20gU0hPVyBGVUxMVEVYVCAqL1xuZXhwb3J0IGludGVyZmFjZSBGdWxsdGV4dEluZm8ge1xuICBpbmRleE5hbWU6IHN0cmluZztcbiAgZW50aXR5VHlwZTogc3RyaW5nOyAvLyBcIk5PREVcIiBvciBcIkVER0VcIlxuICBzY2hlbWFOYW1lOiBzdHJpbmc7XG4gIHByb3BlcnRpZXM6IHN0cmluZztcbiAgYW5hbHl6ZXI6IHN0cmluZztcbiAgc3RhdHVzOiBzdHJpbmc7XG4gIGRvY0NvdW50OiBudW1iZXI7XG4gIHByb2dyZXNzOiBzdHJpbmc7XG59XG5cbi8qKiBUYXNrIGluZm8gZnJvbSBTSE9XIFRBU0tTICovXG5leHBvcnQgaW50ZXJmYWNlIFRhc2tJbmZvIHtcbiAgdGFza0lkOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgcXVlcnk6IHN0cmluZztcbiAgYWxnb05hbWU6IHN0cmluZztcbiAgc3RhdHVzOiBzdHJpbmc7XG4gIHN0YXJ0ZWRBdDogc3RyaW5nO1xuICBwcm9ncmVzczogc3RyaW5nO1xuICBwYXJhbWV0ZXJzOiBzdHJpbmc7XG4gIG5vZGVzV3JpdHRlbjogbnVtYmVyO1xuICBjb21wdXRlVGltZU1zOiBudW1iZXI7XG4gIHdyaXRlVGltZU1zOiBudW1iZXI7XG59XG5cbi8qKiBQcm9jZXNzIGluZm8gZnJvbSBUT1AgKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc0luZm8ge1xuICBxdWVyeUlkOiBzdHJpbmc7XG4gIHF1ZXJ5VGV4dDogc3RyaW5nO1xuICBzdGFydFRpbWU6IHN0cmluZztcbiAgZHVyYXRpb25NczogbnVtYmVyO1xuICBzdGF0dXM6IHN0cmluZztcbn1cblxuLyoqIEdyYXBoIHN0YXRpc3RpY3MgZnJvbSBkYi5zdGF0cygpICovXG5leHBvcnQgaW50ZXJmYWNlIEdyYXBoU3RhdHMge1xuICBncmFwaE5hbWU6IHN0cmluZztcbiAgbm9kZUNvdW50OiBudW1iZXI7XG4gIGVkZ2VDb3VudDogbnVtYmVyO1xuICBsYWJlbENvdW50czogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcbiAgZWRnZUxhYmVsQ291bnRzOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuICBub2RlUHJvcGVydHlTdGF0czogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgbnVtYmVyPj47XG4gIGVkZ2VQcm9wZXJ0eVN0YXRzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+Pjtcbn1cblxuLyoqIFJlc3BvbnNlIGZvciBHUUwtYmFzZWQgaW5zZXJ0IG9wZXJhdGlvbnMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5zZXJ0R3FsUmVzcG9uc2Uge1xuICByb3dzQWZmZWN0ZWQ6IG51bWJlcjtcbn1cblxuLyoqIEFsZ29yaXRobSBpbmZvIGZyb20gU0hPVyBBTEdPUyAqL1xuZXhwb3J0IGludGVyZmFjZSBBbGdvSW5mbyB7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBwYXJhbWV0ZXJzOiBzdHJpbmc7XG59XG5cbi8qKlxuICogT25lIHN0YWdlIHJvdyBmcm9tIGEgQ0FMTCBhaS5yZWFkIC8gYWkuZ3FsIFlJRUxEIHN0cmVhbS5cbiAqIFN0YWdlIG5hbWVzIGluY2x1ZGU6IHN0YXJ0LCByb3V0aW5nLCBpbnRlbnRfZXh0cmFjdGlvbiwgZGVzY3JpYmVfYWxnb3JpdGhtLFxuICogZ2VuZXJhdGlvbiwgdmFsaWRhdGlvbiwgZXhlY3V0aW9uLCBmaW5hbCwgZXJyb3IuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWlTdGFnZSB7XG4gIHN0YWdlOiBzdHJpbmc7XG4gIGRldGFpbDogc3RyaW5nO1xuICBlbGFwc2VkTXM6IG51bWJlcjtcbiAgdG9rZW5zSW5wdXQ6IG51bWJlcjtcbiAgdG9rZW5zT3V0cHV0OiBudW1iZXI7XG4gIHRva2Vuc0NhY2hlZDogbnVtYmVyO1xuICAvKiogU3RhZ2Utc3BlY2lmaWMgcGF5bG9hZCAocG9seW1vcnBoaWMgSlNPTiBmcm9tIHNlcnZlcikuICovXG4gIGRhdGE6IGFueTtcbn1cblxuLyoqXG4gKiBSZXN1bHQgb2YgYSBjbGllbnQuYWlSZWFkKCkgLyBjbGllbnQuYWlHcWwoKSBjYWxsLlxuICpcbiAqIEZvciBhaVJlYWQ6IGBkYXRhYCBpcyB0aGUgUmVzcG9uc2UgZnJvbSByZS1leGVjdXRpbmcgdGhlIGdlbmVyYXRlZCBHUUwuXG4gKiBGb3IgYWlHcWw6ICBgZGF0YWAgaXMgYWx3YXlzIG51bGwgKGdlbmVyYXRpb24tb25seTsgY2FsbGVyIHJlcnVucyBtYW51YWxseSkuXG4gKiBPbiBBSS1zaWRlIGVycm9ycywgYHN1Y2Nlc3M9ZmFsc2VgLCBgZXJyb3JgIGlzIHBvcHVsYXRlZCwgYW5kIGBkYXRhYCBpcyBudWxsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFpUmVhZFJlc3VsdCB7XG4gIHN0YWdlczogQWlTdGFnZVtdO1xuICBnZW5lcmF0ZWRHcWw6IHN0cmluZyB8IG51bGw7XG4gIGRhdGE6IFJlc3BvbnNlIHwgbnVsbDtcbiAgc3VjY2VzczogYm9vbGVhbjtcbiAgZXJyb3I6IHN0cmluZyB8IG51bGw7XG4gIHRvdGFsRWxhcHNlZE1zOiBudW1iZXI7XG4gIHRvdGFsVG9rZW5zSW5wdXQ6IG51bWJlcjtcbiAgdG90YWxUb2tlbnNPdXRwdXQ6IG51bWJlcjtcbiAgdG90YWxUb2tlbnNDYWNoZWQ6IG51bWJlcjtcbn1cblxuLy8gQ29udk5vZGUgYW5kIENvbnZFZGdlIGhhdmUgYmVlbiByZW1vdmVkLlxuLy8gVXNlIE5vZGVEYXRhIGFuZCBFZGdlRGF0YSBmcm9tIGdyYXBoX21vZGVscyBpbnN0ZWFkLlxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSGVscGVyIEZ1bmN0aW9uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBQYXJzZSBhIGNvbW1hLXNlcGFyYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9uIHN0cmluZyBsaWtlIFwiYWdlIElOVEVHRVIsIG5hbWUgU1RSSU5HXCJcbiAqIGludG8gYW4gYXJyYXkgb2YgQ29udlByb3BlcnR5RGVmLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VQcm9wZXJ0eVN0cmluZyhzOiBzdHJpbmcpOiBDb252UHJvcGVydHlEZWZbXSB7XG4gIHMgPSBzLnRyaW0oKTtcbiAgaWYgKCFzKSByZXR1cm4gW107XG5cbiAgY29uc3QgcGFydHMgPSBzLnNwbGl0KCcsJyk7XG4gIGNvbnN0IHJlc3VsdDogQ29udlByb3BlcnR5RGVmW10gPSBbXTtcbiAgZm9yIChjb25zdCBwYXJ0IG9mIHBhcnRzKSB7XG4gICAgY29uc3QgdHJpbW1lZCA9IHBhcnQudHJpbSgpO1xuICAgIGlmICghdHJpbW1lZCkgY29udGludWU7XG4gICAgY29uc3QgdG9rZW5zID0gdHJpbW1lZC5zcGxpdCgvXFxzKy8pO1xuICAgIGlmICh0b2tlbnMubGVuZ3RoIDwgMikgY29udGludWU7XG4gICAgcmVzdWx0LnB1c2goeyBuYW1lOiB0b2tlbnNbMF0sIHR5cGU6IHRva2Vuc1sxXS50b1VwcGVyQ2FzZSgpIH0pO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogQ29udmVydCBhIENvbnZQcm9wZXJ0eURlZiB0eXBlIHN0cmluZyB0byBpdHMgR1FMIHJlcHJlc2VudGF0aW9uLlxuICogSWYgdGhlIHR5cGUgaXMgYWxyZWFkeSBhIHZhbGlkIEdRTCB0eXBlIG5hbWUsIHJldHVybnMgaXQgYXMtaXMgKHVwcGVyY2FzZWQpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvcGVydHlUeXBlVG9HUUwodHlwZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB0eXBlTmFtZS50b1VwcGVyQ2FzZSgpO1xufVxuXG4vKipcbiAqIEJ1aWxkIGEgR1FMIHByb3BlcnR5IGRlZmluaXRpb24gc3RyaW5nIGxpa2UgXCJ7YWdlIElOVDY0LCBuYW1lIFNUUklOR31cIiBmcm9tIENvbnZQcm9wZXJ0eURlZltdLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRQcm9wZXJ0eURlZlN0cmluZyhwcm9wczogQ29udlByb3BlcnR5RGVmW10pOiBzdHJpbmcge1xuICBpZiAoIXByb3BzIHx8IHByb3BzLmxlbmd0aCA9PT0gMCkgcmV0dXJuICd7fSc7XG4gIGNvbnN0IHBhcnRzID0gcHJvcHMubWFwKHAgPT4gYFxcYCR7cC5uYW1lfVxcYCAke3Byb3BlcnR5VHlwZVRvR1FMKHAudHlwZSl9YCk7XG4gIHJldHVybiAneycgKyBwYXJ0cy5qb2luKCcsICcpICsgJ30nO1xufVxuXG4vKipcbiAqIEJ1aWxkIHRoZSBwcm9wZXJ0eSBsaXN0IGZvciBDUkVBVEUgSU5ERVgsIGUuZy4gXCJwcm9wMSwgcHJvcDIoMTApXCIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEluZGV4UHJvcGVydHlTdHJpbmcocHJvcHM6IEluZGV4UHJvcGVydHlbXSk6IHN0cmluZyB7XG4gIHJldHVybiBwcm9wcy5tYXAocCA9PiB7XG4gICAgaWYgKHAucHJlZml4TGVuZ3RoICYmIHAucHJlZml4TGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIGBcXGAke3AubmFtZX1cXGAoJHtwLnByZWZpeExlbmd0aH0pYDtcbiAgICB9XG4gICAgcmV0dXJuIGBcXGAke3AubmFtZX1cXGBgO1xuICB9KS5qb2luKCcsICcpO1xufVxuXG4vKipcbiAqIEZvcm1hdCBhIEphdmFTY3JpcHQgdmFsdWUgYXMgYSBHUUwgbGl0ZXJhbCBmb3IgSU5TRVJUIHN0YXRlbWVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRHcWxWYWx1ZSh2OiBhbnkpOiBzdHJpbmcge1xuICBpZiAodiA9PT0gbnVsbCB8fCB2ID09PSB1bmRlZmluZWQpIHJldHVybiAnTlVMTCc7XG4gIGlmICh0eXBlb2YgdiA9PT0gJ3N0cmluZycpIHtcbiAgICAvLyBPcmRlciBtYXR0ZXJzOiBiYWNrc2xhc2ggRklSU1QsIHRoZW4gZXZlcnl0aGluZyBlbHNlLlxuICAgIC8vIFNlcnZlciBHUUwgcGFyc2VyIHVzZXMgQy1zdHlsZSBlc2NhcGVzOyBsaXRlcmFsIExGIC8gQ1IgaW5zaWRlXG4gICAgLy8gYSBgJy4uLidgIHN0cmluZyBhcmUgTk9UIGFjY2VwdGVkIGJ5IHRoZSBzZXJ2ZXIgbGV4ZXIgYW5kXG4gICAgLy8gc3VyZmFjZSBhcyBcInVudGVybWluYXRlZCBzdHJpbmcgbGl0ZXJhbFwiIHBhcnNlIGVycm9ycy5cbiAgICBjb25zdCBlc2NhcGVkID0gdlxuICAgICAgLnJlcGxhY2UoL1xcXFwvZywgJ1xcXFxcXFxcJylcbiAgICAgIC5yZXBsYWNlKC8nL2csIFwiXFxcXCdcIilcbiAgICAgIC5yZXBsYWNlKC9cXG4vZywgJ1xcXFxuJylcbiAgICAgIC5yZXBsYWNlKC9cXHIvZywgJ1xcXFxyJyk7XG4gICAgcmV0dXJuIGAnJHtlc2NhcGVkfSdgO1xuICB9XG4gIGlmICh0eXBlb2YgdiA9PT0gJ2Jvb2xlYW4nKSByZXR1cm4gdiA/ICdUUlVFJyA6ICdGQUxTRSc7XG4gIGlmICh0eXBlb2YgdiA9PT0gJ251bWJlcicpIHJldHVybiBTdHJpbmcodik7XG4gIGlmICh0eXBlb2YgdiA9PT0gJ2JpZ2ludCcpIHJldHVybiBTdHJpbmcodik7XG4gIGlmIChBcnJheS5pc0FycmF5KHYpKSB7XG4gICAgY29uc3QgZWxlbXMgPSB2Lm1hcCgoZWxlbTogYW55KSA9PiBmb3JtYXRHcWxWYWx1ZShlbGVtKSk7XG4gICAgcmV0dXJuICdbJyArIGVsZW1zLmpvaW4oJywgJykgKyAnXSc7XG4gIH1cbiAgaWYgKHR5cGVvZiB2ID09PSAnb2JqZWN0Jykge1xuICAgIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyh2KTtcbiAgICBjb25zdCBwYXJ0cyA9IGVudHJpZXMubWFwKChbaywgdmFsXSkgPT4gYCR7a306ICR7Zm9ybWF0R3FsVmFsdWUodmFsKX1gKTtcbiAgICByZXR1cm4gJ3snICsgcGFydHMuam9pbignLCAnKSArICd9JztcbiAgfVxuICByZXR1cm4gYCcke1N0cmluZyh2KX0nYDtcbn1cblxuLyoqXG4gKiBCdWlsZCBhIEdRTCBwcm9wZXJ0eSB2YWx1ZSBtYXAgbGlrZSBcIntuYW1lOiAnQWxpY2UnLCBhZ2U6IDMwfVwiIGZyb20gYSBSZWNvcmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFByb3BlcnRpZXNWYWx1ZVN0cmluZyhwcm9wczogUmVjb3JkPHN0cmluZywgYW55Pik6IHN0cmluZyB7XG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhwcm9wcyk7XG4gIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuICcnO1xuICBjb25zdCBwYXJ0cyA9IGtleXMubWFwKGsgPT4gYCR7a306ICR7Zm9ybWF0R3FsVmFsdWUocHJvcHNba10pfWApO1xuICByZXR1cm4gJ3snICsgcGFydHMuam9pbignLCAnKSArICd9Jztcbn1cblxuLyoqXG4gKiBSZXR1cm4gXCJVU0UgR1JBUEggPG5hbWU+XFxuXCIgaWYgZ3JhcGhOYW1lIGlzIG5vbi1lbXB0eSwgb3RoZXJ3aXNlIFwiXCIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VHcmFwaFByZWZpeChncmFwaE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICghZ3JhcGhOYW1lKSByZXR1cm4gJyc7XG4gIHJldHVybiBgVVNFIEdSQVBIICR7Z3JhcGhOYW1lfVxcbmA7XG59XG5cbi8qKlxuICogQ29udmVydCBEQlR5cGUgdG8gR1FMIGtleXdvcmQgXCJOT0RFXCIgb3IgXCJFREdFXCIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYlR5cGVUb0tleXdvcmQoZHQ6IERCVHlwZSk6IHN0cmluZyB7XG4gIHJldHVybiBkdCA9PT0gREJUeXBlLkVER0UgPyAnRURHRScgOiAnTk9ERSc7XG59XG4iXX0=
|