@appium/base-driver 8.5.3 → 8.5.6
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/build/lib/basedriver/capabilities.d.ts.map +1 -1
- package/build/lib/basedriver/capabilities.js +1 -1
- package/build/lib/basedriver/commands/event.js +1 -1
- package/build/lib/basedriver/commands/find.d.ts.map +1 -1
- package/build/lib/basedriver/commands/find.js +1 -1
- package/build/lib/basedriver/commands/index.js +1 -1
- package/build/lib/basedriver/commands/log.d.ts.map +1 -1
- package/build/lib/basedriver/commands/log.js +1 -1
- package/build/lib/basedriver/commands/session.js +1 -1
- package/build/lib/basedriver/commands/settings.d.ts.map +1 -1
- package/build/lib/basedriver/commands/settings.js +1 -1
- package/build/lib/basedriver/commands/timeout.d.ts.map +1 -1
- package/build/lib/basedriver/commands/timeout.js +1 -1
- package/build/lib/basedriver/core.d.ts +120 -139
- package/build/lib/basedriver/core.d.ts.map +1 -1
- package/build/lib/basedriver/core.js +1 -49
- package/build/lib/basedriver/desired-caps.d.ts +5 -2
- package/build/lib/basedriver/desired-caps.d.ts.map +1 -1
- package/build/lib/basedriver/desired-caps.js +14 -18
- package/build/lib/basedriver/device-settings.d.ts +9 -9
- package/build/lib/basedriver/device-settings.d.ts.map +1 -1
- package/build/lib/basedriver/device-settings.js +4 -4
- package/build/lib/basedriver/driver.d.ts +43 -38
- package/build/lib/basedriver/driver.d.ts.map +1 -1
- package/build/lib/basedriver/driver.js +58 -11
- package/build/lib/basedriver/helpers.d.ts +8 -3
- package/build/lib/basedriver/helpers.d.ts.map +1 -1
- package/build/lib/basedriver/helpers.js +4 -6
- package/build/lib/basedriver/logger.d.ts +1 -1
- package/build/lib/basedriver/logger.d.ts.map +1 -1
- package/build/lib/basedriver/logger.js +1 -1
- package/build/lib/constants.js +1 -1
- package/build/lib/express/crash.d.ts.map +1 -1
- package/build/lib/express/crash.js +1 -1
- package/build/lib/express/express-logging.d.ts.map +1 -1
- package/build/lib/express/express-logging.js +1 -1
- package/build/lib/express/idempotency.js +1 -1
- package/build/lib/express/logger.d.ts +1 -1
- package/build/lib/express/logger.d.ts.map +1 -1
- package/build/lib/express/logger.js +1 -1
- package/build/lib/express/middleware.d.ts.map +1 -1
- package/build/lib/express/middleware.js +1 -1
- package/build/lib/express/server.d.ts +21 -0
- package/build/lib/express/server.d.ts.map +1 -1
- package/build/lib/express/server.js +4 -9
- package/build/lib/express/static.d.ts.map +1 -1
- package/build/lib/express/static.js +2 -2
- package/build/lib/express/websocket.d.ts +14 -11
- package/build/lib/express/websocket.d.ts.map +1 -1
- package/build/lib/express/websocket.js +2 -2
- package/build/lib/helpers/capabilities.d.ts.map +1 -1
- package/build/lib/helpers/capabilities.js +1 -1
- package/build/lib/index.d.ts +2 -1
- package/build/lib/index.js +7 -1
- package/build/lib/jsonwp-proxy/protocol-converter.d.ts.map +1 -1
- package/build/lib/jsonwp-proxy/protocol-converter.js +2 -2
- package/build/lib/jsonwp-proxy/proxy.d.ts +30 -5
- package/build/lib/jsonwp-proxy/proxy.d.ts.map +1 -1
- package/build/lib/jsonwp-proxy/proxy.js +23 -4
- package/build/lib/jsonwp-status/status.d.ts.map +1 -1
- package/build/lib/jsonwp-status/status.js +2 -2
- package/build/lib/protocol/errors.d.ts +17 -8
- package/build/lib/protocol/errors.d.ts.map +1 -1
- package/build/lib/protocol/errors.js +9 -5
- package/build/lib/protocol/helpers.js +1 -1
- package/build/lib/protocol/index.js +1 -1
- package/build/lib/protocol/protocol.d.ts.map +1 -1
- package/build/lib/protocol/protocol.js +1 -1
- package/build/lib/protocol/routes.d.ts +17 -3
- package/build/lib/protocol/routes.d.ts.map +1 -1
- package/build/lib/protocol/routes.js +1 -1
- package/build/lib/protocol/validators.js +1 -1
- package/build/test/basedriver/driver-e2e-tests.js +1 -1
- package/build/test/basedriver/driver-tests.js +1 -1
- package/build/test/basedriver/index.js +1 -1
- package/build/test/e2e/basedriver/driver.e2e.spec.js +1 -1
- package/build/test/e2e/basedriver/helpers.e2e.spec.js +1 -1
- package/build/test/e2e/basedriver/websockets.e2e.spec.js +1 -1
- package/build/test/e2e/express/server.e2e.spec.js +1 -1
- package/build/test/e2e/jsonwp-proxy/proxy.e2e.spec.js +1 -1
- package/build/test/e2e/protocol/fake-driver.js +1 -1
- package/build/test/e2e/protocol/helpers.js +1 -1
- package/build/test/e2e/protocol/protocol.e2e.spec.js +13 -13
- package/build/test/helpers.js +1 -1
- package/build/test/unit/basedriver/capabilities.spec.js +12 -12
- package/build/test/unit/basedriver/capability.spec.js +15 -15
- package/build/test/unit/basedriver/commands/event.spec.js +1 -1
- package/build/test/unit/basedriver/commands/log.spec.js +1 -1
- package/build/test/unit/basedriver/device-settings.spec.js +1 -1
- package/build/test/unit/basedriver/driver.spec.js +1 -1
- package/build/test/unit/basedriver/helpers.spec.js +33 -33
- package/build/test/unit/basedriver/timeout.spec.js +1 -1
- package/build/test/unit/express/server.spec.js +1 -1
- package/build/test/unit/express/static.spec.js +2 -2
- package/build/test/unit/jsonwp-proxy/mock-request.js +1 -1
- package/build/test/unit/jsonwp-proxy/protocol-converter.spec.js +1 -1
- package/build/test/unit/jsonwp-proxy/proxy.spec.js +2 -2
- package/build/test/unit/jsonwp-proxy/url.spec.js +1 -1
- package/build/test/unit/jsonwp-status/status.spec.js +1 -1
- package/build/test/unit/protocol/errors.spec.js +1 -1
- package/build/test/unit/protocol/routes.spec.js +1 -1
- package/build/test/unit/protocol/validator.spec.js +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/lib/basedriver/capabilities.js +95 -47
- package/lib/basedriver/commands/event.js +4 -4
- package/lib/basedriver/commands/find.js +12 -26
- package/lib/basedriver/commands/index.js +7 -7
- package/lib/basedriver/commands/log.js +5 -7
- package/lib/basedriver/commands/session.js +3 -3
- package/lib/basedriver/commands/settings.js +3 -5
- package/lib/basedriver/commands/timeout.js +18 -23
- package/lib/basedriver/core.js +150 -229
- package/lib/basedriver/desired-caps.js +30 -29
- package/lib/basedriver/device-settings.js +21 -20
- package/lib/basedriver/driver.js +131 -96
- package/lib/basedriver/helpers.js +124 -81
- package/lib/basedriver/logger.js +1 -1
- package/lib/constants.js +2 -6
- package/lib/express/crash.js +4 -6
- package/lib/express/express-logging.js +26 -24
- package/lib/express/idempotency.js +16 -16
- package/lib/express/logger.js +1 -1
- package/lib/express/middleware.js +49 -33
- package/lib/express/server.js +68 -44
- package/lib/express/static.js +11 -12
- package/lib/express/websocket.js +26 -16
- package/lib/helpers/capabilities.js +11 -16
- package/lib/index.js +50 -33
- package/lib/jsonwp-proxy/protocol-converter.js +85 -69
- package/lib/jsonwp-proxy/proxy.js +132 -53
- package/lib/jsonwp-status/status.js +36 -29
- package/lib/protocol/errors.js +469 -292
- package/lib/protocol/helpers.js +5 -8
- package/lib/protocol/index.js +22 -15
- package/lib/protocol/protocol.js +103 -55
- package/lib/protocol/routes.js +430 -273
- package/lib/protocol/validators.js +5 -5
- package/package.json +7 -6
- package/test/basedriver/driver-e2e-tests.js +92 -66
- package/test/basedriver/driver-tests.js +90 -33
- package/test/basedriver/index.js +1 -1
|
@@ -39,12 +39,23 @@ const {
|
|
|
39
39
|
MJSONWP,
|
|
40
40
|
W3C
|
|
41
41
|
} = _constants.PROTOCOLS;
|
|
42
|
+
const ALLOWED_OPTS = ['scheme', 'server', 'port', 'base', 'reqBasePath', 'sessionId', 'timeout', 'log', 'keepAlive'];
|
|
42
43
|
|
|
43
44
|
class JWProxy {
|
|
45
|
+
scheme;
|
|
46
|
+
server;
|
|
47
|
+
port;
|
|
48
|
+
base;
|
|
49
|
+
reqBasePath;
|
|
50
|
+
sessionId;
|
|
51
|
+
timeout;
|
|
52
|
+
|
|
44
53
|
constructor(opts = {}) {
|
|
45
54
|
var _opts$keepAlive;
|
|
46
55
|
|
|
47
|
-
_lodash.default.
|
|
56
|
+
opts = _lodash.default.pick(opts, ALLOWED_OPTS);
|
|
57
|
+
|
|
58
|
+
const options = _lodash.default.defaults(_lodash.default.omit(opts, 'log'), {
|
|
48
59
|
scheme: 'http',
|
|
49
60
|
server: 'localhost',
|
|
50
61
|
port: 4444,
|
|
@@ -54,7 +65,8 @@ class JWProxy {
|
|
|
54
65
|
timeout: DEFAULT_REQUEST_TIMEOUT
|
|
55
66
|
});
|
|
56
67
|
|
|
57
|
-
|
|
68
|
+
options.scheme = options.scheme.toLowerCase();
|
|
69
|
+
Object.assign(this, options);
|
|
58
70
|
this._activeRequests = [];
|
|
59
71
|
this._downstreamProtocol = null;
|
|
60
72
|
const agentOpts = {
|
|
@@ -149,6 +161,10 @@ class JWProxy {
|
|
|
149
161
|
const sessionBaseRe = new RegExp('^/session/([^/]+)');
|
|
150
162
|
|
|
151
163
|
if (sessionBaseRe.test(remainingUrl)) {
|
|
164
|
+
if (this.sessionId === null) {
|
|
165
|
+
throw new ReferenceError(`Session ID is not set, but saw a URL path referencing a session (${remainingUrl}). This may be a bug in your client.`);
|
|
166
|
+
}
|
|
167
|
+
|
|
152
168
|
const match = sessionBaseRe.exec(remainingUrl);
|
|
153
169
|
remainingUrl = remainingUrl.replace(match[1], this.sessionId);
|
|
154
170
|
} else if (requiresSessionId) {
|
|
@@ -277,7 +293,10 @@ class JWProxy {
|
|
|
277
293
|
requestToCommandName(url, method) {
|
|
278
294
|
const extractCommandName = pattern => {
|
|
279
295
|
const pathMatch = pattern.exec(url);
|
|
280
|
-
|
|
296
|
+
|
|
297
|
+
if (pathMatch) {
|
|
298
|
+
return (0, _protocol.routeToCommandName)(pathMatch[1], method, this.reqBasePath);
|
|
299
|
+
}
|
|
281
300
|
};
|
|
282
301
|
|
|
283
302
|
let commandName = (0, _protocol.routeToCommandName)(url, method, this.reqBasePath);
|
|
@@ -401,4 +420,4 @@ class JWProxy {
|
|
|
401
420
|
exports.JWProxy = JWProxy;
|
|
402
421
|
var _default = JWProxy;
|
|
403
422
|
exports.default = _default;
|
|
404
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJERUZBVUxUX0xPRyIsImxvZ2dlciIsImdldExvZ2dlciIsIkRFRkFVTFRfUkVRVUVTVF9USU1FT1VUIiwiQ09NUEFDVF9FUlJPUl9QQVRURVJOUyIsIk1KU09OV1AiLCJXM0MiLCJQUk9UT0NPTFMiLCJKV1Byb3h5IiwiY29uc3RydWN0b3IiLCJvcHRzIiwiXyIsImRlZmF1bHRzIiwic2NoZW1lIiwic2VydmVyIiwicG9ydCIsImJhc2UiLCJERUZBVUxUX0JBU0VfUEFUSCIsInJlcUJhc2VQYXRoIiwic2Vzc2lvbklkIiwidGltZW91dCIsInRvTG93ZXJDYXNlIiwiX2FjdGl2ZVJlcXVlc3RzIiwiX2Rvd25zdHJlYW1Qcm90b2NvbCIsImFnZW50T3B0cyIsImtlZXBBbGl2ZSIsIm1heFNvY2tldHMiLCJtYXhGcmVlU29ja2V0cyIsImh0dHBBZ2VudCIsImh0dHAiLCJBZ2VudCIsImh0dHBzQWdlbnQiLCJodHRwcyIsInByb3RvY29sQ29udmVydGVyIiwiUHJvdG9jb2xDb252ZXJ0ZXIiLCJwcm94eSIsImJpbmQiLCJsb2ciLCJfbG9nIiwicmVxdWVzdCIsInJlcXVlc3RDb25maWciLCJyZXFQcm9taXNlIiwicHVzaCIsInB1bGwiLCJnZXRBY3RpdmVSZXF1ZXN0c0NvdW50IiwibGVuZ3RoIiwiY2FuY2VsQWN0aXZlUmVxdWVzdHMiLCJlbmRwb2ludFJlcXVpcmVzU2Vzc2lvbklkIiwiZW5kcG9pbnQiLCJpbmNsdWRlcyIsImRvd25zdHJlYW1Qcm90b2NvbCIsInZhbHVlIiwiZ2V0VXJsRm9yUHJveHkiLCJ1cmwiLCJwcm94eUJhc2UiLCJlbmRwb2ludFJlIiwicmVtYWluaW5nVXJsIiwidGVzdCIsImZpcnN0IiwiUmVnRXhwIiwiZXhlYyIsIkVycm9yIiwicmVwbGFjZSIsInN0cmlwUHJlZml4UmUiLCJyZXF1aXJlc1Nlc3Npb25JZCIsInNlc3Npb25CYXNlUmUiLCJtYXRjaCIsIm1ldGhvZCIsImJvZHkiLCJ0b1VwcGVyQ2FzZSIsIm5ld1VybCIsInRydW5jYXRlQm9keSIsImNvbnRlbnQiLCJ0cnVuY2F0ZSIsImlzU3RyaW5nIiwiSlNPTiIsInN0cmluZ2lmeSIsIk1BWF9MT0dfQk9EWV9MRU5HVEgiLCJyZXFPcHRzIiwiaGVhZGVycyIsImFjY2VwdCIsInV0aWwiLCJoYXNWYWx1ZSIsImRhdGEiLCJwYXJzZSIsImUiLCJkZWJ1ZyIsInRocm93UHJveHlFcnJvciIsImVycm9yIiwiZXJyIiwicmVzcG9uc2UiLCJzdGF0dXMiLCJpc1Jlc3BvbnNlTG9nZ2VkIiwiaXNQbGFpbk9iamVjdCIsImlzU2Vzc2lvbkNyZWF0aW9uUmVxdWVzdCIsImdldFByb3RvY29sRnJvbVJlc0JvZHkiLCJpbmZvIiwiaGFzIiwicGFyc2VJbnQiLCJyZXMiLCJzdGF0dXNDb2RlIiwicHJveHlFcnJvck1zZyIsIm1lc3NhZ2UiLCJzb21lIiwicCIsInN0YWNrIiwiZXJyb3JzIiwiUHJveHlSZXF1ZXN0RXJyb3IiLCJyZXNPYmoiLCJpc0ludGVnZXIiLCJpc1VuZGVmaW5lZCIsInJlcXVlc3RUb0NvbW1hbmROYW1lIiwiZXh0cmFjdENvbW1hbmROYW1lIiwicGF0dGVybiIsInBhdGhNYXRjaCIsImNvbW1hbmROYW1lIiwiZXNjYXBlUmVnRXhwIiwicHJveHlDb21tYW5kIiwiY29udmVydEFuZFByb3h5IiwiY29tbWFuZCIsInJlc0JvZHlPYmoiLCJnZXRBY3R1YWxFcnJvciIsIlVua25vd25FcnJvciIsInByb3RvY29sIiwiaXNOYU4iLCJpc0VtcHR5Iiwic3RhY2t0cmFjZSIsImdldFNlc3Npb25JZEZyb21VcmwiLCJwcm94eVJlcVJlcyIsInJlcSIsIm9yaWdpbmFsVXJsIiwic2V0IiwicmVxU2Vzc2lvbklkIiwic2VuZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9qc29ud3AtcHJveHkvcHJveHkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGxvZ2dlciwgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgZ2V0U3VtbWFyeUJ5Q29kZSB9IGZyb20gJy4uL2pzb253cC1zdGF0dXMvc3RhdHVzJztcbmltcG9ydCB7XG4gIGVycm9ycywgaXNFcnJvclR5cGUsIGVycm9yRnJvbU1KU09OV1BTdGF0dXNDb2RlLCBlcnJvckZyb21XM0NKc29uQ29kZSxcbiAgZ2V0UmVzcG9uc2VGb3JXM0NFcnJvcixcbn0gZnJvbSAnLi4vcHJvdG9jb2wvZXJyb3JzJztcbmltcG9ydCB7IHJvdXRlVG9Db21tYW5kTmFtZSB9IGZyb20gJy4uL3Byb3RvY29sJztcbmltcG9ydCB7IE1BWF9MT0dfQk9EWV9MRU5HVEgsIERFRkFVTFRfQkFTRV9QQVRILCBQUk9UT0NPTFMgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IFByb3RvY29sQ29udmVydGVyIGZyb20gJy4vcHJvdG9jb2wtY29udmVydGVyJztcbmltcG9ydCB7IGZvcm1hdFJlc3BvbnNlVmFsdWUsIGZvcm1hdFN0YXR1cyB9IGZyb20gJy4uL3Byb3RvY29sL2hlbHBlcnMnO1xuaW1wb3J0IGh0dHAgZnJvbSAnaHR0cCc7XG5pbXBvcnQgaHR0cHMgZnJvbSAnaHR0cHMnO1xuXG5jb25zdCBERUZBVUxUX0xPRyA9IGxvZ2dlci5nZXRMb2dnZXIoJ1dEIFByb3h5Jyk7XG5jb25zdCBERUZBVUxUX1JFUVVFU1RfVElNRU9VVCA9IDI0MDAwMDtcbmNvbnN0IENPTVBBQ1RfRVJST1JfUEFUVEVSTlMgPSBbXG4gIC9cXGJFQ09OTlJFRlVTRURcXGIvLFxuICAvc29ja2V0IGhhbmcgdXAvLFxuXTtcblxuY29uc3Qge01KU09OV1AsIFczQ30gPSBQUk9UT0NPTFM7XG5cbmNsYXNzIEpXUHJveHkge1xuICBjb25zdHJ1Y3RvciAob3B0cyA9IHt9KSB7XG4gICAgXy5kZWZhdWx0cyh0aGlzLCBvcHRzLCB7XG4gICAgICBzY2hlbWU6ICdodHRwJyxcbiAgICAgIHNlcnZlcjogJ2xvY2FsaG9zdCcsXG4gICAgICBwb3J0OiA0NDQ0LFxuICAgICAgYmFzZTogREVGQVVMVF9CQVNFX1BBVEgsXG4gICAgICByZXFCYXNlUGF0aDogREVGQVVMVF9CQVNFX1BBVEgsXG4gICAgICBzZXNzaW9uSWQ6IG51bGwsXG4gICAgICB0aW1lb3V0OiBERUZBVUxUX1JFUVVFU1RfVElNRU9VVCxcbiAgICB9KTtcbiAgICB0aGlzLnNjaGVtZSA9IHRoaXMuc2NoZW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgdGhpcy5fYWN0aXZlUmVxdWVzdHMgPSBbXTtcbiAgICB0aGlzLl9kb3duc3RyZWFtUHJvdG9jb2wgPSBudWxsO1xuICAgIGNvbnN0IGFnZW50T3B0cyA9IHtcbiAgICAgIGtlZXBBbGl2ZTogb3B0cy5rZWVwQWxpdmUgPz8gdHJ1ZSxcbiAgICAgIG1heFNvY2tldHM6IDEwLFxuICAgICAgbWF4RnJlZVNvY2tldHM6IDUsXG4gICAgfTtcbiAgICB0aGlzLmh0dHBBZ2VudCA9IG5ldyBodHRwLkFnZW50KGFnZW50T3B0cyk7XG4gICAgdGhpcy5odHRwc0FnZW50ID0gbmV3IGh0dHBzLkFnZW50KGFnZW50T3B0cyk7XG4gICAgdGhpcy5wcm90b2NvbENvbnZlcnRlciA9IG5ldyBQcm90b2NvbENvbnZlcnRlcih0aGlzLnByb3h5LmJpbmQodGhpcyksIG9wdHMubG9nKTtcbiAgICB0aGlzLl9sb2cgPSBvcHRzLmxvZztcbiAgfVxuXG4gIGdldCBsb2cgKCkge1xuICAgIHJldHVybiB0aGlzLl9sb2cgPz8gREVGQVVMVF9MT0c7XG4gIH1cblxuICAvKipcbiAgICogUGVyZm9ybXMgcmVxdWVzdHMgdG8gdGhlIGRvd25zdHJlYW0gc2VydmVyXG4gICAqXG4gICAqIEBwcml2YXRlIC0gRG8gbm90IGNhbGwgdGhpcyBtZXRob2QgZGlyZWN0bHksXG4gICAqIGl0IHVzZXMgY2xpZW50LXNwZWNpZmljIGFyZ3VtZW50cyBhbmQgcmVzcG9uc2VzIVxuICAgKlxuICAgKiBAcGFyYW0ge0F4aW9zUmVxdWVzdENvbmZpZ30gcmVxdWVzdENvbmZpZ1xuICAgKiBAcmV0dXJucyB7QXhpb3NSZXNwb25zZX1cbiAgICovXG4gIGFzeW5jIHJlcXVlc3QgKHJlcXVlc3RDb25maWcpIHtcbiAgICBjb25zdCByZXFQcm9taXNlID0gYXhpb3MocmVxdWVzdENvbmZpZyk7XG4gICAgdGhpcy5fYWN0aXZlUmVxdWVzdHMucHVzaChyZXFQcm9taXNlKTtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IHJlcVByb21pc2U7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIF8ucHVsbCh0aGlzLl9hY3RpdmVSZXF1ZXN0cywgcmVxUHJvbWlzZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0QWN0aXZlUmVxdWVzdHNDb3VudCAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZVJlcXVlc3RzLmxlbmd0aDtcbiAgfVxuXG4gIGNhbmNlbEFjdGl2ZVJlcXVlc3RzICgpIHtcbiAgICB0aGlzLl9hY3RpdmVSZXF1ZXN0cyA9IFtdO1xuICB9XG5cbiAgZW5kcG9pbnRSZXF1aXJlc1Nlc3Npb25JZCAoZW5kcG9pbnQpIHtcbiAgICByZXR1cm4gIV8uaW5jbHVkZXMoWycvc2Vzc2lvbicsICcvc2Vzc2lvbnMnLCAnL3N0YXR1cyddLCBlbmRwb2ludCk7XG4gIH1cblxuICBzZXQgZG93bnN0cmVhbVByb3RvY29sICh2YWx1ZSkge1xuICAgIHRoaXMuX2Rvd25zdHJlYW1Qcm90b2NvbCA9IHZhbHVlO1xuICAgIHRoaXMucHJvdG9jb2xDb252ZXJ0ZXIuZG93bnN0cmVhbVByb3RvY29sID0gdmFsdWU7XG4gIH1cblxuICBnZXQgZG93bnN0cmVhbVByb3RvY29sICgpIHtcbiAgICByZXR1cm4gdGhpcy5fZG93bnN0cmVhbVByb3RvY29sO1xuICB9XG5cbiAgZ2V0VXJsRm9yUHJveHkgKHVybCkge1xuICAgIGlmICh1cmwgPT09ICcnKSB7XG4gICAgICB1cmwgPSAnLyc7XG4gICAgfVxuICAgIGNvbnN0IHByb3h5QmFzZSA9IGAke3RoaXMuc2NoZW1lfTovLyR7dGhpcy5zZXJ2ZXJ9OiR7dGhpcy5wb3J0fSR7dGhpcy5iYXNlfWA7XG4gICAgY29uc3QgZW5kcG9pbnRSZSA9ICcoLyhzZXNzaW9ufHN0YXR1cykpJztcbiAgICBsZXQgcmVtYWluaW5nVXJsID0gJyc7XG4gICAgaWYgKC9eaHR0cC8udGVzdCh1cmwpKSB7XG4gICAgICBjb25zdCBmaXJzdCA9IChuZXcgUmVnRXhwKGAoaHR0cHM/Oi8vLispJHtlbmRwb2ludFJlfWApKS5leGVjKHVybCk7XG4gICAgICBpZiAoIWZpcnN0KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignR290IGEgY29tcGxldGUgdXJsIGJ1dCBjb3VsZCBub3QgZXh0cmFjdCBKV1AgZW5kcG9pbnQnKTtcbiAgICAgIH1cbiAgICAgIHJlbWFpbmluZ1VybCA9IHVybC5yZXBsYWNlKGZpcnN0WzFdLCAnJyk7XG4gICAgfSBlbHNlIGlmICgobmV3IFJlZ0V4cCgnXi8nKSkudGVzdCh1cmwpKSB7XG4gICAgICByZW1haW5pbmdVcmwgPSB1cmw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRGlkIG5vdCBrbm93IHdoYXQgdG8gZG8gd2l0aCB1cmwgJyR7dXJsfSdgKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdHJpcFByZWZpeFJlID0gbmV3IFJlZ0V4cCgnXi4qPygvKHNlc3Npb258c3RhdHVzKS4qKSQnKTtcbiAgICBpZiAoc3RyaXBQcmVmaXhSZS50ZXN0KHJlbWFpbmluZ1VybCkpIHtcbiAgICAgIHJlbWFpbmluZ1VybCA9IHN0cmlwUHJlZml4UmUuZXhlYyhyZW1haW5pbmdVcmwpWzFdO1xuICAgIH1cblxuICAgIGlmICghKG5ldyBSZWdFeHAoZW5kcG9pbnRSZSkpLnRlc3QocmVtYWluaW5nVXJsKSkge1xuICAgICAgcmVtYWluaW5nVXJsID0gYC9zZXNzaW9uLyR7dGhpcy5zZXNzaW9uSWR9JHtyZW1haW5pbmdVcmx9YDtcbiAgICB9XG5cbiAgICBjb25zdCByZXF1aXJlc1Nlc3Npb25JZCA9IHRoaXMuZW5kcG9pbnRSZXF1aXJlc1Nlc3Npb25JZChyZW1haW5pbmdVcmwpO1xuXG4gICAgaWYgKHJlcXVpcmVzU2Vzc2lvbklkICYmIHRoaXMuc2Vzc2lvbklkID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RyeWluZyB0byBwcm94eSBhIHNlc3Npb24gY29tbWFuZCB3aXRob3V0IHNlc3Npb24gaWQnKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZXNzaW9uQmFzZVJlID0gbmV3IFJlZ0V4cCgnXi9zZXNzaW9uLyhbXi9dKyknKTtcbiAgICBpZiAoc2Vzc2lvbkJhc2VSZS50ZXN0KHJlbWFpbmluZ1VybCkpIHtcbiAgICAgIC8vIHdlIGhhdmUgc29tZXRoaW5nIGxpa2UgL3Nlc3Npb24vOmlkL2Zvb2Jhciwgc28gd2UgbmVlZCB0byByZXBsYWNlXG4gICAgICAvLyB0aGUgc2Vzc2lvbiBpZFxuICAgICAgY29uc3QgbWF0Y2ggPSBzZXNzaW9uQmFzZVJlLmV4ZWMocmVtYWluaW5nVXJsKTtcbiAgICAgIHJlbWFpbmluZ1VybCA9IHJlbWFpbmluZ1VybC5yZXBsYWNlKG1hdGNoWzFdLCB0aGlzLnNlc3Npb25JZCk7XG4gICAgfSBlbHNlIGlmIChyZXF1aXJlc1Nlc3Npb25JZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCA6c2Vzc2lvbiBzZWN0aW9uIGZvciB1cmw6ICR7cmVtYWluaW5nVXJsfWApO1xuICAgIH1cbiAgICByZW1haW5pbmdVcmwgPSByZW1haW5pbmdVcmwucmVwbGFjZSgvXFwvJC8sICcnKTsgLy8gY2FuJ3QgaGF2ZSB0cmFpbGluZyBzbGFzaGVzXG5cbiAgICByZXR1cm4gcHJveHlCYXNlICsgcmVtYWluaW5nVXJsO1xuICB9XG5cbiAgYXN5bmMgcHJveHkgKHVybCwgbWV0aG9kLCBib2R5ID0gbnVsbCkge1xuICAgIG1ldGhvZCA9IG1ldGhvZC50b1VwcGVyQ2FzZSgpO1xuICAgIGNvbnN0IG5ld1VybCA9IHRoaXMuZ2V0VXJsRm9yUHJveHkodXJsKTtcbiAgICBjb25zdCB0cnVuY2F0ZUJvZHkgPSAoY29udGVudCkgPT4gXy50cnVuY2F0ZShcbiAgICAgIF8uaXNTdHJpbmcoY29udGVudCkgPyBjb250ZW50IDogSlNPTi5zdHJpbmdpZnkoY29udGVudCksXG4gICAgICB7IGxlbmd0aDogTUFYX0xPR19CT0RZX0xFTkdUSCB9KTtcbiAgICBjb25zdCByZXFPcHRzID0ge1xuICAgICAgdXJsOiBuZXdVcmwsXG4gICAgICBtZXRob2QsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOCcsXG4gICAgICAgICd1c2VyLWFnZW50JzogJ2FwcGl1bScsXG4gICAgICAgIGFjY2VwdDogJ2FwcGxpY2F0aW9uL2pzb24sICovKicsXG4gICAgICB9LFxuICAgICAgcHJveHk6IGZhbHNlLFxuICAgICAgdGltZW91dDogdGhpcy50aW1lb3V0LFxuICAgICAgaHR0cEFnZW50OiB0aGlzLmh0dHBBZ2VudCxcbiAgICAgIGh0dHBzQWdlbnQ6IHRoaXMuaHR0cHNBZ2VudCxcbiAgICB9O1xuICAgIC8vIEdFVCBtZXRob2RzIHNob3VsZG4ndCBoYXZlIGFueSBib2R5LiBNb3N0IHNlcnZlcnMgYXJlIE9LIHdpdGggdGhpcywgYnV0IFdlYkRyaXZlckFnZW50IHRocm93cyA0MDAgZXJyb3JzXG4gICAgaWYgKHV0aWwuaGFzVmFsdWUoYm9keSkgJiYgbWV0aG9kICE9PSAnR0VUJykge1xuICAgICAgaWYgKHR5cGVvZiBib2R5ICE9PSAnb2JqZWN0Jykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJlcU9wdHMuZGF0YSA9IEpTT04ucGFyc2UoYm9keSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBpbnRlcnByZXQgdGhlIHJlcXVlc3QgYm9keSBhcyB2YWxpZCBKU09OOiAke3RydW5jYXRlQm9keShib2R5KX1gKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVxT3B0cy5kYXRhID0gYm9keTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxvZy5kZWJ1ZyhgUHJveHlpbmcgWyR7bWV0aG9kfSAke3VybCB8fCAnLyd9XSB0byBbJHttZXRob2R9ICR7bmV3VXJsfV0gYCArXG4gICAgICAocmVxT3B0cy5kYXRhID8gYHdpdGggYm9keTogJHt0cnVuY2F0ZUJvZHkocmVxT3B0cy5kYXRhKX1gIDogJ3dpdGggbm8gYm9keScpKTtcblxuICAgIGNvbnN0IHRocm93UHJveHlFcnJvciA9IChlcnJvcikgPT4ge1xuICAgICAgY29uc3QgZXJyID0gbmV3IEVycm9yKGBUaGUgcmVxdWVzdCB0byAke3VybH0gaGFzIGZhaWxlZGApO1xuICAgICAgZXJyLnJlc3BvbnNlID0ge1xuICAgICAgICBkYXRhOiBlcnJvcixcbiAgICAgICAgc3RhdHVzOiA1MDBcbiAgICAgIH07XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfTtcbiAgICBsZXQgaXNSZXNwb25zZUxvZ2dlZCA9IGZhbHNlO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7ZGF0YSwgc3RhdHVzLCBoZWFkZXJzfSA9IGF3YWl0IHRoaXMucmVxdWVzdChyZXFPcHRzKTtcbiAgICAgIC8vIGBkYXRhYCBtaWdodCBiZSByZWFsbHkgYmlnXG4gICAgICAvLyBCZSBjYXJlZnVsIHdoaWxlIGhhbmRsaW5nIGl0IHRvIGF2b2lkIG1lbW9yeSBsZWFrc1xuICAgICAgaWYgKCFfLmlzUGxhaW5PYmplY3QoZGF0YSkpIHtcbiAgICAgICAgLy8gVGhlIHJlc3BvbnNlIHNob3VsZCBiZSBhIHZhbGlkIEpTT04gb2JqZWN0XG4gICAgICAgIC8vIElmIGl0IGNhbm5vdCBiZSBjb2VyY2VkIHRvIGFuIG9iamVjdCB0aGVuIHRoZSByZXNwb25zZSBpcyB3cm9uZ1xuICAgICAgICB0aHJvd1Byb3h5RXJyb3IoZGF0YSk7XG4gICAgICB9XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgR290IHJlc3BvbnNlIHdpdGggc3RhdHVzICR7c3RhdHVzfTogJHt0cnVuY2F0ZUJvZHkoZGF0YSl9YCk7XG4gICAgICBpc1Jlc3BvbnNlTG9nZ2VkID0gdHJ1ZTtcbiAgICAgIGNvbnN0IGlzU2Vzc2lvbkNyZWF0aW9uUmVxdWVzdCA9IC9cXC9zZXNzaW9uJC8udGVzdCh1cmwpICYmIG1ldGhvZCA9PT0gJ1BPU1QnO1xuICAgICAgaWYgKGlzU2Vzc2lvbkNyZWF0aW9uUmVxdWVzdCkge1xuICAgICAgICBpZiAoc3RhdHVzID09PSAyMDApIHtcbiAgICAgICAgICB0aGlzLnNlc3Npb25JZCA9IGRhdGEuc2Vzc2lvbklkIHx8IChkYXRhLnZhbHVlIHx8IHt9KS5zZXNzaW9uSWQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kb3duc3RyZWFtUHJvdG9jb2wgPSB0aGlzLmdldFByb3RvY29sRnJvbVJlc0JvZHkoZGF0YSk7XG4gICAgICAgIHRoaXMubG9nLmluZm8oYERldGVybWluZWQgdGhlIGRvd25zdHJlYW0gcHJvdG9jb2wgYXMgJyR7dGhpcy5kb3duc3RyZWFtUHJvdG9jb2x9J2ApO1xuICAgICAgfVxuICAgICAgaWYgKF8uaGFzKGRhdGEsICdzdGF0dXMnKSAmJiBwYXJzZUludChkYXRhLnN0YXR1cywgMTApICE9PSAwKSB7XG4gICAgICAgIC8vIFNvbWUgc2VydmVycywgbGlrZSBjaHJvbWVkcml2ZXIgbWF5IHJldHVybiByZXNwb25zZSBjb2RlIDIwMCBmb3Igbm9uLXplcm8gSlNPTldQIHN0YXR1c2VzXG4gICAgICAgIHRocm93UHJveHlFcnJvcihkYXRhKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlcyA9IHtzdGF0dXNDb2RlOiBzdGF0dXMsIGhlYWRlcnMsIGJvZHk6IGRhdGF9O1xuICAgICAgcmV0dXJuIFtyZXMsIGRhdGFdO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIFdlIG9ubHkgY29uc2lkZXIgYW4gZXJyb3IgdW5leHBlY3RlZCBpZiB0aGlzIHdhcyBub3RcbiAgICAgIC8vIGFuIGFzeW5jIHJlcXVlc3QgbW9kdWxlIGVycm9yIG9yIGlmIHRoZSByZXNwb25zZSBjYW5ub3QgYmUgY2FzdCB0b1xuICAgICAgLy8gYSB2YWxpZCBKU09OXG4gICAgICBsZXQgcHJveHlFcnJvck1zZyA9IGUubWVzc2FnZTtcbiAgICAgIGlmICh1dGlsLmhhc1ZhbHVlKGUucmVzcG9uc2UpKSB7XG4gICAgICAgIGlmICghaXNSZXNwb25zZUxvZ2dlZCkge1xuICAgICAgICAgIGNvbnN0IGVycm9yID0gdHJ1bmNhdGVCb2R5KGUucmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgdGhpcy5sb2cuaW5mbyh1dGlsLmhhc1ZhbHVlKGUucmVzcG9uc2Uuc3RhdHVzKVxuICAgICAgICAgICAgPyBgR290IHJlc3BvbnNlIHdpdGggc3RhdHVzICR7ZS5yZXNwb25zZS5zdGF0dXN9OiAke2Vycm9yfWBcbiAgICAgICAgICAgIDogYEdvdCByZXNwb25zZSB3aXRoIHVua25vd24gc3RhdHVzOiAke2Vycm9yfWApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcm94eUVycm9yTXNnID0gYENvdWxkIG5vdCBwcm94eSBjb21tYW5kIHRvIHRoZSByZW1vdGUgc2VydmVyLiBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YDtcbiAgICAgICAgaWYgKENPTVBBQ1RfRVJST1JfUEFUVEVSTlMuc29tZSgocCkgPT4gcC50ZXN0KGUubWVzc2FnZSkpKSB7XG4gICAgICAgICAgdGhpcy5sb2cuaW5mbyhlLm1lc3NhZ2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubG9nLmluZm8oZS5zdGFjayk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBlcnJvcnMuUHJveHlSZXF1ZXN0RXJyb3IocHJveHlFcnJvck1zZywgZS5yZXNwb25zZT8uZGF0YSwgZS5yZXNwb25zZT8uc3RhdHVzKTtcbiAgICB9XG4gIH1cblxuICBnZXRQcm90b2NvbEZyb21SZXNCb2R5IChyZXNPYmopIHtcbiAgICBpZiAoXy5pc0ludGVnZXIocmVzT2JqLnN0YXR1cykpIHtcbiAgICAgIHJldHVybiBNSlNPTldQO1xuICAgIH1cbiAgICBpZiAoIV8uaXNVbmRlZmluZWQocmVzT2JqLnZhbHVlKSkge1xuICAgICAgcmV0dXJuIFczQztcbiAgICB9XG4gIH1cblxuICByZXF1ZXN0VG9Db21tYW5kTmFtZSAodXJsLCBtZXRob2QpIHtcbiAgICBjb25zdCBleHRyYWN0Q29tbWFuZE5hbWUgPSAocGF0dGVybikgPT4ge1xuICAgICAgY29uc3QgcGF0aE1hdGNoID0gcGF0dGVybi5leGVjKHVybCk7XG4gICAgICByZXR1cm4gcGF0aE1hdGNoID8gcm91dGVUb0NvbW1hbmROYW1lKHBhdGhNYXRjaFsxXSwgbWV0aG9kLCB0aGlzLnJlcUJhc2VQYXRoKSA6IG51bGw7XG4gICAgfTtcbiAgICBsZXQgY29tbWFuZE5hbWUgPSByb3V0ZVRvQ29tbWFuZE5hbWUodXJsLCBtZXRob2QsIHRoaXMucmVxQmFzZVBhdGgpO1xuICAgIGlmICghY29tbWFuZE5hbWUgJiYgXy5pbmNsdWRlcyh1cmwsIGAke3RoaXMucmVxQmFzZVBhdGh9L3Nlc3Npb24vYCkpIHtcbiAgICAgIGNvbW1hbmROYW1lID0gZXh0cmFjdENvbW1hbmROYW1lKG5ldyBSZWdFeHAoYCR7Xy5lc2NhcGVSZWdFeHAodGhpcy5yZXFCYXNlUGF0aCl9L3Nlc3Npb24vW14vXSsoLispYCkpO1xuICAgIH1cbiAgICBpZiAoIWNvbW1hbmROYW1lICYmIF8uaW5jbHVkZXModXJsLCB0aGlzLnJlcUJhc2VQYXRoKSkge1xuICAgICAgY29tbWFuZE5hbWUgPSBleHRyYWN0Q29tbWFuZE5hbWUobmV3IFJlZ0V4cChgJHtfLmVzY2FwZVJlZ0V4cCh0aGlzLnJlcUJhc2VQYXRoKX0oLy4rKWApKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbW1hbmROYW1lO1xuICB9XG5cbiAgYXN5bmMgcHJveHlDb21tYW5kICh1cmwsIG1ldGhvZCwgYm9keSA9IG51bGwpIHtcbiAgICBjb25zdCBjb21tYW5kTmFtZSA9IHRoaXMucmVxdWVzdFRvQ29tbWFuZE5hbWUodXJsLCBtZXRob2QpO1xuICAgIGlmICghY29tbWFuZE5hbWUpIHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3h5KHVybCwgbWV0aG9kLCBib2R5KTtcbiAgICB9XG4gICAgdGhpcy5sb2cuZGVidWcoYE1hdGNoZWQgJyR7dXJsfScgdG8gY29tbWFuZCBuYW1lICcke2NvbW1hbmROYW1lfSdgKTtcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3RvY29sQ29udmVydGVyLmNvbnZlcnRBbmRQcm94eShjb21tYW5kTmFtZSwgdXJsLCBtZXRob2QsIGJvZHkpO1xuICB9XG5cbiAgYXN5bmMgY29tbWFuZCAodXJsLCBtZXRob2QsIGJvZHkgPSBudWxsKSB7XG4gICAgbGV0IHJlc3BvbnNlO1xuICAgIGxldCByZXNCb2R5T2JqO1xuICAgIHRyeSB7XG4gICAgICBbcmVzcG9uc2UsIHJlc0JvZHlPYmpdID0gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQodXJsLCBtZXRob2QsIGJvZHkpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKGlzRXJyb3JUeXBlKGVyciwgZXJyb3JzLlByb3h5UmVxdWVzdEVycm9yKSkge1xuICAgICAgICB0aHJvdyBlcnIuZ2V0QWN0dWFsRXJyb3IoKTtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBlcnJvcnMuVW5rbm93bkVycm9yKGVyci5tZXNzYWdlKTtcbiAgICB9XG4gICAgY29uc3QgcHJvdG9jb2wgPSB0aGlzLmdldFByb3RvY29sRnJvbVJlc0JvZHkocmVzQm9keU9iaik7XG4gICAgaWYgKHByb3RvY29sID09PSBNSlNPTldQKSB7XG4gICAgICAvLyBHb3QgcmVzcG9uc2UgaW4gTUpTT05XUCBmb3JtYXRcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXNDb2RlID09PSAyMDAgJiYgcmVzQm9keU9iai5zdGF0dXMgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHJlc0JvZHlPYmoudmFsdWU7XG4gICAgICB9XG4gICAgICBjb25zdCBzdGF0dXMgPSBwYXJzZUludChyZXNCb2R5T2JqLnN0YXR1cywgMTApO1xuICAgICAgaWYgKCFpc05hTihzdGF0dXMpICYmIHN0YXR1cyAhPT0gMCkge1xuICAgICAgICBsZXQgbWVzc2FnZSA9IHJlc0JvZHlPYmoudmFsdWU7XG4gICAgICAgIGlmIChfLmhhcyhtZXNzYWdlLCAnbWVzc2FnZScpKSB7XG4gICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UubWVzc2FnZTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlcnJvckZyb21NSlNPTldQU3RhdHVzQ29kZShzdGF0dXMsIF8uaXNFbXB0eShtZXNzYWdlKSA/IGdldFN1bW1hcnlCeUNvZGUoc3RhdHVzKSA6IG1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocHJvdG9jb2wgPT09IFczQykge1xuICAgICAgLy8gR290IHJlc3BvbnNlIGluIFczQyBmb3JtYXRcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXNDb2RlIDwgMzAwKSB7XG4gICAgICAgIHJldHVybiByZXNCb2R5T2JqLnZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKF8uaXNQbGFpbk9iamVjdChyZXNCb2R5T2JqLnZhbHVlKSAmJiByZXNCb2R5T2JqLnZhbHVlLmVycm9yKSB7XG4gICAgICAgIHRocm93IGVycm9yRnJvbVczQ0pzb25Db2RlKHJlc0JvZHlPYmoudmFsdWUuZXJyb3IsIHJlc0JvZHlPYmoudmFsdWUubWVzc2FnZSwgcmVzQm9keU9iai52YWx1ZS5zdGFja3RyYWNlKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHJlc3BvbnNlLnN0YXR1c0NvZGUgPT09IDIwMCkge1xuICAgICAgLy8gVW5rbm93biBwcm90b2NvbC4gS2VlcGluZyBpdCBiZWNhdXNlIG9mIHRoZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgICByZXR1cm4gcmVzQm9keU9iajtcbiAgICB9XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Vbmtub3duRXJyb3IoYERpZCBub3Qga25vdyB3aGF0IHRvIGRvIHdpdGggcmVzcG9uc2UgY29kZSAnJHtyZXNwb25zZS5zdGF0dXNDb2RlfScgYCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGFuZCByZXNwb25zZSBib2R5ICcke18udHJ1bmNhdGUoSlNPTi5zdHJpbmdpZnkocmVzQm9keU9iaiksIHtsZW5ndGg6IDMwMH0pfSdgKTtcbiAgfVxuXG4gIGdldFNlc3Npb25JZEZyb21VcmwgKHVybCkge1xuICAgIGNvbnN0IG1hdGNoID0gdXJsLm1hdGNoKC9cXC9zZXNzaW9uXFwvKFteL10rKS8pO1xuICAgIHJldHVybiBtYXRjaCA/IG1hdGNoWzFdIDogbnVsbDtcbiAgfVxuXG4gIGFzeW5jIHByb3h5UmVxUmVzIChyZXEsIHJlcykge1xuICAgIC8vICEgdGhpcyBtZXRob2QgbXVzdCBub3QgdGhyb3cgYW55IGV4Y2VwdGlvbnNcbiAgICAvLyAhIG1ha2Ugc3VyZSB0byBjYWxsIHJlcy5zZW5kIGJlZm9yZSByZXR1cm5cbiAgICBsZXQgc3RhdHVzQ29kZTtcbiAgICBsZXQgcmVzQm9keU9iajtcbiAgICB0cnkge1xuICAgICAgbGV0IHJlc3BvbnNlO1xuICAgICAgW3Jlc3BvbnNlLCByZXNCb2R5T2JqXSA9IGF3YWl0IHRoaXMucHJveHlDb21tYW5kKHJlcS5vcmlnaW5hbFVybCwgcmVxLm1ldGhvZCwgcmVxLmJvZHkpO1xuICAgICAgcmVzLmhlYWRlcnMgPSByZXNwb25zZS5oZWFkZXJzO1xuICAgICAgc3RhdHVzQ29kZSA9IHJlc3BvbnNlLnN0YXR1c0NvZGU7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBbc3RhdHVzQ29kZSwgcmVzQm9keU9ial0gPSBnZXRSZXNwb25zZUZvclczQ0Vycm9yKFxuICAgICAgICBpc0Vycm9yVHlwZShlcnIsIGVycm9ycy5Qcm94eVJlcXVlc3RFcnJvcikgPyBlcnIuZ2V0QWN0dWFsRXJyb3IoKSA6IGVyclxuICAgICAgKTtcbiAgICB9XG4gICAgcmVzLnNldCgnY29udGVudC10eXBlJywgJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgnKTtcbiAgICBpZiAoIV8uaXNQbGFpbk9iamVjdChyZXNCb2R5T2JqKSkge1xuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgZXJyb3JzLlVua25vd25FcnJvcihcbiAgICAgICAgYFRoZSBkb3duc3RyZWFtIHNlcnZlciByZXNwb25zZSB3aXRoIHRoZSBzdGF0dXMgY29kZSAke3N0YXR1c0NvZGV9IGlzIG5vdCBhIHZhbGlkIEpTT04gb2JqZWN0OiBgICtcbiAgICAgICAgXy50cnVuY2F0ZShgJHtyZXNCb2R5T2JqfWAsIHtsZW5ndGg6IDMwMH0pXG4gICAgICApO1xuICAgICAgW3N0YXR1c0NvZGUsIHJlc0JvZHlPYmpdID0gZ2V0UmVzcG9uc2VGb3JXM0NFcnJvcihlcnJvcik7XG4gICAgfVxuXG4gICAgLy8gaWYgdGhlIHByb3hpZWQgcmVzcG9uc2UgY29udGFpbnMgYSBzZXNzaW9uSWQgdGhhdCB0aGUgZG93bnN0cmVhbVxuICAgIC8vIGRyaXZlciBoYXMgZ2VuZXJhdGVkLCB3ZSBkb24ndCB3YW50IHRvIHJldHVybiB0aGF0IHRvIHRoZSBjbGllbnQuXG4gICAgLy8gSW5zdGVhZCwgcmV0dXJuIHRoZSBpZCBmcm9tIHRoZSByZXF1ZXN0IG9yIGZyb20gY3VycmVudCBzZXNzaW9uXG4gICAgaWYgKF8uaGFzKHJlc0JvZHlPYmosICdzZXNzaW9uSWQnKSkge1xuICAgICAgY29uc3QgcmVxU2Vzc2lvbklkID0gdGhpcy5nZXRTZXNzaW9uSWRGcm9tVXJsKHJlcS5vcmlnaW5hbFVybCk7XG4gICAgICBpZiAocmVxU2Vzc2lvbklkKSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oYFJlcGxhY2luZyBzZXNzaW9uSWQgJHtyZXNCb2R5T2JqLnNlc3Npb25JZH0gd2l0aCAke3JlcVNlc3Npb25JZH1gKTtcbiAgICAgICAgcmVzQm9keU9iai5zZXNzaW9uSWQgPSByZXFTZXNzaW9uSWQ7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2Vzc2lvbklkKSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oYFJlcGxhY2luZyBzZXNzaW9uSWQgJHtyZXNCb2R5T2JqLnNlc3Npb25JZH0gd2l0aCAke3RoaXMuc2Vzc2lvbklkfWApO1xuICAgICAgICByZXNCb2R5T2JqLnNlc3Npb25JZCA9IHRoaXMuc2Vzc2lvbklkO1xuICAgICAgfVxuICAgIH1cbiAgICByZXNCb2R5T2JqLnZhbHVlID0gZm9ybWF0UmVzcG9uc2VWYWx1ZShyZXNCb2R5T2JqLnZhbHVlKTtcbiAgICByZXMuc3RhdHVzKHN0YXR1c0NvZGUpLnNlbmQoSlNPTi5zdHJpbmdpZnkoZm9ybWF0U3RhdHVzKHJlc0JvZHlPYmopKSk7XG4gIH1cbn1cblxuZXhwb3J0IHsgSldQcm94eSB9O1xuZXhwb3J0IGRlZmF1bHQgSldQcm94eTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFJQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxXQUFXLEdBQUdDLGdCQUFPQyxTQUFQLENBQWlCLFVBQWpCLENBQXBCOztBQUNBLE1BQU1DLHVCQUF1QixHQUFHLE1BQWhDO0FBQ0EsTUFBTUMsc0JBQXNCLEdBQUcsQ0FDN0Isa0JBRDZCLEVBRTdCLGdCQUY2QixDQUEvQjtBQUtBLE1BQU07RUFBQ0MsT0FBRDtFQUFVQztBQUFWLElBQWlCQyxvQkFBdkI7O0FBRUEsTUFBTUMsT0FBTixDQUFjO0VBQ1pDLFdBQVcsQ0FBRUMsSUFBSSxHQUFHLEVBQVQsRUFBYTtJQUFBOztJQUN0QkMsZ0JBQUVDLFFBQUYsQ0FBVyxJQUFYLEVBQWlCRixJQUFqQixFQUF1QjtNQUNyQkcsTUFBTSxFQUFFLE1BRGE7TUFFckJDLE1BQU0sRUFBRSxXQUZhO01BR3JCQyxJQUFJLEVBQUUsSUFIZTtNQUlyQkMsSUFBSSxFQUFFQyw0QkFKZTtNQUtyQkMsV0FBVyxFQUFFRCw0QkFMUTtNQU1yQkUsU0FBUyxFQUFF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
|
|
423
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJERUZBVUxUX0xPRyIsImxvZ2dlciIsImdldExvZ2dlciIsIkRFRkFVTFRfUkVRVUVTVF9USU1FT1VUIiwiQ09NUEFDVF9FUlJPUl9QQVRURVJOUyIsIk1KU09OV1AiLCJXM0MiLCJQUk9UT0NPTFMiLCJBTExPV0VEX09QVFMiLCJKV1Byb3h5Iiwic2NoZW1lIiwic2VydmVyIiwicG9ydCIsImJhc2UiLCJyZXFCYXNlUGF0aCIsInNlc3Npb25JZCIsInRpbWVvdXQiLCJjb25zdHJ1Y3RvciIsIm9wdHMiLCJfIiwicGljayIsIm9wdGlvbnMiLCJkZWZhdWx0cyIsIm9taXQiLCJERUZBVUxUX0JBU0VfUEFUSCIsInRvTG93ZXJDYXNlIiwiT2JqZWN0IiwiYXNzaWduIiwiX2FjdGl2ZVJlcXVlc3RzIiwiX2Rvd25zdHJlYW1Qcm90b2NvbCIsImFnZW50T3B0cyIsImtlZXBBbGl2ZSIsIm1heFNvY2tldHMiLCJtYXhGcmVlU29ja2V0cyIsImh0dHBBZ2VudCIsImh0dHAiLCJBZ2VudCIsImh0dHBzQWdlbnQiLCJodHRwcyIsInByb3RvY29sQ29udmVydGVyIiwiUHJvdG9jb2xDb252ZXJ0ZXIiLCJwcm94eSIsImJpbmQiLCJsb2ciLCJfbG9nIiwicmVxdWVzdCIsInJlcXVlc3RDb25maWciLCJyZXFQcm9taXNlIiwiYXhpb3MiLCJwdXNoIiwicHVsbCIsImdldEFjdGl2ZVJlcXVlc3RzQ291bnQiLCJsZW5ndGgiLCJjYW5jZWxBY3RpdmVSZXF1ZXN0cyIsImVuZHBvaW50UmVxdWlyZXNTZXNzaW9uSWQiLCJlbmRwb2ludCIsImluY2x1ZGVzIiwiZG93bnN0cmVhbVByb3RvY29sIiwidmFsdWUiLCJnZXRVcmxGb3JQcm94eSIsInVybCIsInByb3h5QmFzZSIsImVuZHBvaW50UmUiLCJyZW1haW5pbmdVcmwiLCJ0ZXN0IiwiZmlyc3QiLCJSZWdFeHAiLCJleGVjIiwiRXJyb3IiLCJyZXBsYWNlIiwic3RyaXBQcmVmaXhSZSIsInJlcXVpcmVzU2Vzc2lvbklkIiwic2Vzc2lvbkJhc2VSZSIsIlJlZmVyZW5jZUVycm9yIiwibWF0Y2giLCJtZXRob2QiLCJib2R5IiwidG9VcHBlckNhc2UiLCJuZXdVcmwiLCJ0cnVuY2F0ZUJvZHkiLCJjb250ZW50IiwidHJ1bmNhdGUiLCJpc1N0cmluZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJNQVhfTE9HX0JPRFlfTEVOR1RIIiwicmVxT3B0cyIsImhlYWRlcnMiLCJhY2NlcHQiLCJ1dGlsIiwiaGFzVmFsdWUiLCJkYXRhIiwicGFyc2UiLCJlIiwiZGVidWciLCJ0aHJvd1Byb3h5RXJyb3IiLCJlcnJvciIsImVyciIsInJlc3BvbnNlIiwic3RhdHVzIiwiaXNSZXNwb25zZUxvZ2dlZCIsImlzUGxhaW5PYmplY3QiLCJpc1Nlc3Npb25DcmVhdGlvblJlcXVlc3QiLCJnZXRQcm90b2NvbEZyb21SZXNCb2R5IiwiaW5mbyIsImhhcyIsInBhcnNlSW50IiwicmVzIiwic3RhdHVzQ29kZSIsInByb3h5RXJyb3JNc2ciLCJtZXNzYWdlIiwic29tZSIsInAiLCJzdGFjayIsImVycm9ycyIsIlByb3h5UmVxdWVzdEVycm9yIiwicmVzT2JqIiwiaXNJbnRlZ2VyIiwiaXNVbmRlZmluZWQiLCJyZXF1ZXN0VG9Db21tYW5kTmFtZSIsImV4dHJhY3RDb21tYW5kTmFtZSIsInBhdHRlcm4iLCJwYXRoTWF0Y2giLCJyb3V0ZVRvQ29tbWFuZE5hbWUiLCJjb21tYW5kTmFtZSIsImVzY2FwZVJlZ0V4cCIsInByb3h5Q29tbWFuZCIsImNvbnZlcnRBbmRQcm94eSIsImNvbW1hbmQiLCJyZXNCb2R5T2JqIiwiaXNFcnJvclR5cGUiLCJnZXRBY3R1YWxFcnJvciIsIlVua25vd25FcnJvciIsInByb3RvY29sIiwiaXNOYU4iLCJlcnJvckZyb21NSlNPTldQU3RhdHVzQ29kZSIsImlzRW1wdHkiLCJnZXRTdW1tYXJ5QnlDb2RlIiwiZXJyb3JGcm9tVzNDSnNvbkNvZGUiLCJzdGFja3RyYWNlIiwiZ2V0U2Vzc2lvbklkRnJvbVVybCIsInByb3h5UmVxUmVzIiwicmVxIiwib3JpZ2luYWxVcmwiLCJnZXRSZXNwb25zZUZvclczQ0Vycm9yIiwic2V0IiwicmVxU2Vzc2lvbklkIiwiZm9ybWF0UmVzcG9uc2VWYWx1ZSIsInNlbmQiLCJmb3JtYXRTdGF0dXMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvanNvbndwLXByb3h5L3Byb3h5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge2xvZ2dlciwgdXRpbH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQge2dldFN1bW1hcnlCeUNvZGV9IGZyb20gJy4uL2pzb253cC1zdGF0dXMvc3RhdHVzJztcbmltcG9ydCB7XG4gIGVycm9ycyxcbiAgaXNFcnJvclR5cGUsXG4gIGVycm9yRnJvbU1KU09OV1BTdGF0dXNDb2RlLFxuICBlcnJvckZyb21XM0NKc29uQ29kZSxcbiAgZ2V0UmVzcG9uc2VGb3JXM0NFcnJvcixcbn0gZnJvbSAnLi4vcHJvdG9jb2wvZXJyb3JzJztcbmltcG9ydCB7cm91dGVUb0NvbW1hbmROYW1lfSBmcm9tICcuLi9wcm90b2NvbCc7XG5pbXBvcnQge01BWF9MT0dfQk9EWV9MRU5HVEgsIERFRkFVTFRfQkFTRV9QQVRILCBQUk9UT0NPTFN9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgUHJvdG9jb2xDb252ZXJ0ZXIgZnJvbSAnLi9wcm90b2NvbC1jb252ZXJ0ZXInO1xuaW1wb3J0IHtmb3JtYXRSZXNwb25zZVZhbHVlLCBmb3JtYXRTdGF0dXN9IGZyb20gJy4uL3Byb3RvY29sL2hlbHBlcnMnO1xuaW1wb3J0IGh0dHAgZnJvbSAnaHR0cCc7XG5pbXBvcnQgaHR0cHMgZnJvbSAnaHR0cHMnO1xuXG5jb25zdCBERUZBVUxUX0xPRyA9IGxvZ2dlci5nZXRMb2dnZXIoJ1dEIFByb3h5Jyk7XG5jb25zdCBERUZBVUxUX1JFUVVFU1RfVElNRU9VVCA9IDI0MDAwMDtcbmNvbnN0IENPTVBBQ1RfRVJST1JfUEFUVEVSTlMgPSBbL1xcYkVDT05OUkVGVVNFRFxcYi8sIC9zb2NrZXQgaGFuZyB1cC9dO1xuXG5jb25zdCB7TUpTT05XUCwgVzNDfSA9IFBST1RPQ09MUztcblxuY29uc3QgQUxMT1dFRF9PUFRTID0gW1xuICAnc2NoZW1lJyxcbiAgJ3NlcnZlcicsXG4gICdwb3J0JyxcbiAgJ2Jhc2UnLFxuICAncmVxQmFzZVBhdGgnLFxuICAnc2Vzc2lvbklkJyxcbiAgJ3RpbWVvdXQnLFxuICAnbG9nJyxcbiAgJ2tlZXBBbGl2ZScsXG5dO1xuXG5jbGFzcyBKV1Byb3h5IHtcbiAgLyoqIEB0eXBlIHtzdHJpbmd9ICovXG4gIHNjaGVtZTtcbiAgLyoqIEB0eXBlIHtzdHJpbmd9ICovXG4gIHNlcnZlcjtcbiAgLyoqIEB0eXBlIHtudW1iZXJ9ICovXG4gIHBvcnQ7XG4gIC8qKiBAdHlwZSB7c3RyaW5nfSAqL1xuICBiYXNlO1xuICAvKiogQHR5cGUge3N0cmluZ30gKi9cbiAgcmVxQmFzZVBhdGg7XG4gIC8qKiBAdHlwZSB7c3RyaW5nP30gKi9cbiAgc2Vzc2lvbklkO1xuICAvKiogQHR5cGUge251bWJlcn0gKi9cbiAgdGltZW91dDtcblxuICBjb25zdHJ1Y3RvcihvcHRzID0ge30pIHtcbiAgICBvcHRzID0gXy5waWNrKG9wdHMsIEFMTE9XRURfT1BUUyk7XG5cbiAgICAvLyBvbWl0ICdsb2cnIGluIHRoZSBkZWZhdWx0cyBhc3NpZ25tZW50IGhlcmUgYmVjYXVzZSAnbG9nJyBpcyBhIGdldHRlciBhbmQgd2UgYXJlIGdvaW5nIHRvIHNldFxuICAgIC8vIGl0IHRvIHRoaXMuX2xvZyAod2hpY2ggbGllcyBiZWhpbmQgdGhlIGdldHRlcikgZnVydGhlciBkb3duXG4gICAgY29uc3Qgb3B0aW9ucyA9IF8uZGVmYXVsdHMoXy5vbWl0KG9wdHMsICdsb2cnKSwge1xuICAgICAgc2NoZW1lOiAnaHR0cCcsXG4gICAgICBzZXJ2ZXI6ICdsb2NhbGhvc3QnLFxuICAgICAgcG9ydDogNDQ0NCxcbiAgICAgIGJhc2U6IERFRkFVTFRfQkFTRV9QQVRILFxuICAgICAgcmVxQmFzZVBhdGg6IERFRkFVTFRfQkFTRV9QQVRILFxuICAgICAgc2Vzc2lvbklkOiBudWxsLFxuICAgICAgdGltZW91dDogREVGQVVMVF9SRVFVRVNUX1RJTUVPVVQsXG4gICAgfSk7XG4gICAgb3B0aW9ucy5zY2hlbWUgPSBvcHRpb25zLnNjaGVtZS50b0xvd2VyQ2FzZSgpO1xuICAgIE9iamVjdC5hc3NpZ24odGhpcywgb3B0aW9ucyk7XG5cbiAgICB0aGlzLl9hY3RpdmVSZXF1ZXN0cyA9IFtdO1xuICAgIHRoaXMuX2Rvd25zdHJlYW1Qcm90b2NvbCA9IG51bGw7XG4gICAgY29uc3QgYWdlbnRPcHRzID0ge1xuICAgICAga2VlcEFsaXZlOiBvcHRzLmtlZXBBbGl2ZSA/PyB0cnVlLFxuICAgICAgbWF4U29ja2V0czogMTAsXG4gICAgICBtYXhGcmVlU29ja2V0czogNSxcbiAgICB9O1xuICAgIHRoaXMuaHR0cEFnZW50ID0gbmV3IGh0dHAuQWdlbnQoYWdlbnRPcHRzKTtcbiAgICB0aGlzLmh0dHBzQWdlbnQgPSBuZXcgaHR0cHMuQWdlbnQoYWdlbnRPcHRzKTtcbiAgICB0aGlzLnByb3RvY29sQ29udmVydGVyID0gbmV3IFByb3RvY29sQ29udmVydGVyKHRoaXMucHJveHkuYmluZCh0aGlzKSwgb3B0cy5sb2cpO1xuICAgIHRoaXMuX2xvZyA9IG9wdHMubG9nO1xuICB9XG5cbiAgZ2V0IGxvZygpIHtcbiAgICByZXR1cm4gdGhpcy5fbG9nID8/IERFRkFVTFRfTE9HO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcmZvcm1zIHJlcXVlc3RzIHRvIHRoZSBkb3duc3RyZWFtIHNlcnZlclxuICAgKlxuICAgKiBAcHJpdmF0ZSAtIERvIG5vdCBjYWxsIHRoaXMgbWV0aG9kIGRpcmVjdGx5LFxuICAgKiBpdCB1c2VzIGNsaWVudC1zcGVjaWZpYyBhcmd1bWVudHMgYW5kIHJlc3BvbnNlcyFcbiAgICpcbiAgICogQHBhcmFtIHtpbXBvcnQoJ2F4aW9zJykuQXhpb3NSZXF1ZXN0Q29uZmlnfSByZXF1ZXN0Q29uZmlnXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGltcG9ydCgnYXhpb3MnKS5BeGlvc1Jlc3BvbnNlPn1cbiAgICovXG4gIGFzeW5jIHJlcXVlc3QocmVxdWVzdENvbmZpZykge1xuICAgIGNvbnN0IHJlcVByb21pc2UgPSBheGlvcyhyZXF1ZXN0Q29uZmlnKTtcbiAgICB0aGlzLl9hY3RpdmVSZXF1ZXN0cy5wdXNoKHJlcVByb21pc2UpO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgcmVxUHJvbWlzZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgXy5wdWxsKHRoaXMuX2FjdGl2ZVJlcXVlc3RzLCByZXFQcm9taXNlKTtcbiAgICB9XG4gIH1cblxuICBnZXRBY3RpdmVSZXF1ZXN0c0NvdW50KCkge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmVSZXF1ZXN0cy5sZW5ndGg7XG4gIH1cblxuICBjYW5jZWxBY3RpdmVSZXF1ZXN0cygpIHtcbiAgICB0aGlzLl9hY3RpdmVSZXF1ZXN0cyA9IFtdO1xuICB9XG5cbiAgZW5kcG9pbnRSZXF1aXJlc1Nlc3Npb25JZChlbmRwb2ludCkge1xuICAgIHJldHVybiAhXy5pbmNsdWRlcyhbJy9zZXNzaW9uJywgJy9zZXNzaW9ucycsICcvc3RhdHVzJ10sIGVuZHBvaW50KTtcbiAgfVxuXG4gIHNldCBkb3duc3RyZWFtUHJvdG9jb2wodmFsdWUpIHtcbiAgICB0aGlzLl9kb3duc3RyZWFtUHJvdG9jb2wgPSB2YWx1ZTtcbiAgICB0aGlzLnByb3RvY29sQ29udmVydGVyLmRvd25zdHJlYW1Qcm90b2NvbCA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGRvd25zdHJlYW1Qcm90b2NvbCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZG93bnN0cmVhbVByb3RvY29sO1xuICB9XG5cbiAgZ2V0VXJsRm9yUHJveHkodXJsKSB7XG4gICAgaWYgKHVybCA9PT0gJycpIHtcbiAgICAgIHVybCA9ICcvJztcbiAgICB9XG4gICAgY29uc3QgcHJveHlCYXNlID0gYCR7dGhpcy5zY2hlbWV9Oi8vJHt0aGlzLnNlcnZlcn06JHt0aGlzLnBvcnR9JHt0aGlzLmJhc2V9YDtcbiAgICBjb25zdCBlbmRwb2ludFJlID0gJygvKHNlc3Npb258c3RhdHVzKSknO1xuICAgIGxldCByZW1haW5pbmdVcmwgPSAnJztcbiAgICBpZiAoL15odHRwLy50ZXN0KHVybCkpIHtcbiAgICAgIGNvbnN0IGZpcnN0ID0gbmV3IFJlZ0V4cChgKGh0dHBzPzovLy4rKSR7ZW5kcG9pbnRSZX1gKS5leGVjKHVybCk7XG4gICAgICBpZiAoIWZpcnN0KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignR290IGEgY29tcGxldGUgdXJsIGJ1dCBjb3VsZCBub3QgZXh0cmFjdCBKV1AgZW5kcG9pbnQnKTtcbiAgICAgIH1cbiAgICAgIHJlbWFpbmluZ1VybCA9IHVybC5yZXBsYWNlKGZpcnN0WzFdLCAnJyk7XG4gICAgfSBlbHNlIGlmIChuZXcgUmVnRXhwKCdeLycpLnRlc3QodXJsKSkge1xuICAgICAgcmVtYWluaW5nVXJsID0gdXJsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYERpZCBub3Qga25vdyB3aGF0IHRvIGRvIHdpdGggdXJsICcke3VybH0nYCk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RyaXBQcmVmaXhSZSA9IG5ldyBSZWdFeHAoJ14uKj8oLyhzZXNzaW9ufHN0YXR1cykuKikkJyk7XG4gICAgaWYgKHN0cmlwUHJlZml4UmUudGVzdChyZW1haW5pbmdVcmwpKSB7XG4gICAgICByZW1haW5pbmdVcmwgPSAvKiogQHR5cGUge1JlZ0V4cEV4ZWNBcnJheX0gKi8gKHN0cmlwUHJlZml4UmUuZXhlYyhyZW1haW5pbmdVcmwpKVsxXTtcbiAgICB9XG5cbiAgICBpZiAoIW5ldyBSZWdFeHAoZW5kcG9pbnRSZSkudGVzdChyZW1haW5pbmdVcmwpKSB7XG4gICAgICByZW1haW5pbmdVcmwgPSBgL3Nlc3Npb24vJHt0aGlzLnNlc3Npb25JZH0ke3JlbWFpbmluZ1VybH1gO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcXVpcmVzU2Vzc2lvbklkID0gdGhpcy5lbmRwb2ludFJlcXVpcmVzU2Vzc2lvbklkKHJlbWFpbmluZ1VybCk7XG5cbiAgICBpZiAocmVxdWlyZXNTZXNzaW9uSWQgJiYgdGhpcy5zZXNzaW9uSWQgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVHJ5aW5nIHRvIHByb3h5IGEgc2Vzc2lvbiBjb21tYW5kIHdpdGhvdXQgc2Vzc2lvbiBpZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHNlc3Npb25CYXNlUmUgPSBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vKFteL10rKScpO1xuICAgIGlmIChzZXNzaW9uQmFzZVJlLnRlc3QocmVtYWluaW5nVXJsKSkge1xuICAgICAgaWYgKHRoaXMuc2Vzc2lvbklkID09PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcbiAgICAgICAgICBgU2Vzc2lvbiBJRCBpcyBub3Qgc2V0LCBidXQgc2F3IGEgVVJMIHBhdGggcmVmZXJlbmNpbmcgYSBzZXNzaW9uICgke3JlbWFpbmluZ1VybH0pLiBUaGlzIG1heSBiZSBhIGJ1ZyBpbiB5b3VyIGNsaWVudC5gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICAvLyB3ZSBoYXZlIHNvbWV0aGluZyBsaWtlIC9zZXNzaW9uLzppZC9mb29iYXIsIHNvIHdlIG5lZWQgdG8gcmVwbGFjZVxuICAgICAgLy8gdGhlIHNlc3Npb24gaWRcbiAgICAgIGNvbnN0IG1hdGNoID0gc2Vzc2lvbkJhc2VSZS5leGVjKHJlbWFpbmluZ1VybCk7XG4gICAgICAvLyBUT0RPOiBpZiBgcmVxdWlyZXNTZXNzaW9uSWRgIGlzIGBmYWxzZWAgYW5kIGBzZXNzaW9uSWRgIGlzIGBudWxsYCwgdGhpcyBpcyBhIGJ1Zy5cbiAgICAgIC8vIGFyZSB3ZSBzdXJlIGBzZXNzaW9uSWRgIGlzIG5vdCBgbnVsbGA/XG4gICAgICByZW1haW5pbmdVcmwgPSByZW1haW5pbmdVcmwucmVwbGFjZShcbiAgICAgICAgLyoqIEB0eXBlIHtSZWdFeHBFeGVjQXJyYXl9ICovIChtYXRjaClbMV0sXG4gICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAodGhpcy5zZXNzaW9uSWQpXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAocmVxdWlyZXNTZXNzaW9uSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGZpbmQgOnNlc3Npb24gc2VjdGlvbiBmb3IgdXJsOiAke3JlbWFpbmluZ1VybH1gKTtcbiAgICB9XG4gICAgcmVtYWluaW5nVXJsID0gcmVtYWluaW5nVXJsLnJlcGxhY2UoL1xcLyQvLCAnJyk7IC8vIGNhbid0IGhhdmUgdHJhaWxpbmcgc2xhc2hlc1xuXG4gICAgcmV0dXJuIHByb3h5QmFzZSArIHJlbWFpbmluZ1VybDtcbiAgfVxuXG4gIGFzeW5jIHByb3h5KHVybCwgbWV0aG9kLCBib2R5ID0gbnVsbCkge1xuICAgIG1ldGhvZCA9IG1ldGhvZC50b1VwcGVyQ2FzZSgpO1xuICAgIGNvbnN0IG5ld1VybCA9IHRoaXMuZ2V0VXJsRm9yUHJveHkodXJsKTtcbiAgICBjb25zdCB0cnVuY2F0ZUJvZHkgPSAoY29udGVudCkgPT5cbiAgICAgIF8udHJ1bmNhdGUoXy5pc1N0cmluZyhjb250ZW50KSA/IGNvbnRlbnQgOiBKU09OLnN0cmluZ2lmeShjb250ZW50KSwge1xuICAgICAgICBsZW5ndGg6IE1BWF9MT0dfQk9EWV9MRU5HVEgsXG4gICAgICB9KTtcbiAgICAvKiogQHR5cGUge2ltcG9ydCgnYXhpb3MnKS5BeGlvc1JlcXVlc3RDb25maWd9ICovXG4gICAgY29uc3QgcmVxT3B0cyA9IHtcbiAgICAgIHVybDogbmV3VXJsLFxuICAgICAgbWV0aG9kLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgnLFxuICAgICAgICAndXNlci1hZ2VudCc6ICdhcHBpdW0nLFxuICAgICAgICBhY2NlcHQ6ICdhcHBsaWNhdGlvbi9qc29uLCAqLyonLFxuICAgICAgfSxcbiAgICAgIHByb3h5OiBmYWxzZSxcbiAgICAgIHRpbWVvdXQ6IHRoaXMudGltZW91dCxcbiAgICAgIGh0dHBBZ2VudDogdGhpcy5odHRwQWdlbnQsXG4gICAgICBodHRwc0FnZW50OiB0aGlzLmh0dHBzQWdlbnQsXG4gICAgfTtcbiAgICAvLyBHRVQgbWV0aG9kcyBzaG91bGRuJ3QgaGF2ZSBhbnkgYm9keS4gTW9zdCBzZXJ2ZXJzIGFyZSBPSyB3aXRoIHRoaXMsIGJ1dCBXZWJEcml2ZXJBZ2VudCB0aHJvd3MgNDAwIGVycm9yc1xuICAgIGlmICh1dGlsLmhhc1ZhbHVlKGJvZHkpICYmIG1ldGhvZCAhPT0gJ0dFVCcpIHtcbiAgICAgIGlmICh0eXBlb2YgYm9keSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXFPcHRzLmRhdGEgPSBKU09OLnBhcnNlKGJvZHkpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgaW50ZXJwcmV0IHRoZSByZXF1ZXN0IGJvZHkgYXMgdmFsaWQgSlNPTjogJHt0cnVuY2F0ZUJvZHkoYm9keSl9YCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcU9wdHMuZGF0YSA9IGJvZHk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5sb2cuZGVidWcoXG4gICAgICBgUHJveHlpbmcgWyR7bWV0aG9kfSAke3VybCB8fCAnLyd9XSB0byBbJHttZXRob2R9ICR7bmV3VXJsfV0gYCArXG4gICAgICAgIChyZXFPcHRzLmRhdGEgPyBgd2l0aCBib2R5OiAke3RydW5jYXRlQm9keShyZXFPcHRzLmRhdGEpfWAgOiAnd2l0aCBubyBib2R5JylcbiAgICApO1xuXG4gICAgY29uc3QgdGhyb3dQcm94eUVycm9yID0gKGVycm9yKSA9PiB7XG4gICAgICBjb25zdCBlcnIgPSAvKiogQHR5cGUge1Byb3h5RXJyb3J9ICovIChuZXcgRXJyb3IoYFRoZSByZXF1ZXN0IHRvICR7dXJsfSBoYXMgZmFpbGVkYCkpO1xuICAgICAgZXJyLnJlc3BvbnNlID0ge1xuICAgICAgICBkYXRhOiBlcnJvcixcbiAgICAgICAgc3RhdHVzOiA1MDAsXG4gICAgICB9O1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH07XG4gICAgbGV0IGlzUmVzcG9uc2VMb2dnZWQgPSBmYWxzZTtcbiAgICB0cnkge1xuICAgICAgY29uc3Qge2RhdGEsIHN0YXR1cywgaGVhZGVyc30gPSBhd2FpdCB0aGlzLnJlcXVlc3QocmVxT3B0cyk7XG4gICAgICAvLyBgZGF0YWAgbWlnaHQgYmUgcmVhbGx5IGJpZ1xuICAgICAgLy8gQmUgY2FyZWZ1bCB3aGlsZSBoYW5kbGluZyBpdCB0byBhdm9pZCBtZW1vcnkgbGVha3NcbiAgICAgIGlmICghXy5pc1BsYWluT2JqZWN0KGRhdGEpKSB7XG4gICAgICAgIC8vIFRoZSByZXNwb25zZSBzaG91bGQgYmUgYSB2YWxpZCBKU09OIG9iamVjdFxuICAgICAgICAvLyBJZiBpdCBjYW5ub3QgYmUgY29lcmNlZCB0byBhbiBvYmplY3QgdGhlbiB0aGUgcmVzcG9uc2UgaXMgd3JvbmdcbiAgICAgICAgdGhyb3dQcm94eUVycm9yKGRhdGEpO1xuICAgICAgfVxuICAgICAgdGhpcy5sb2cuZGVidWcoYEdvdCByZXNwb25zZSB3aXRoIHN0YXR1cyAke3N0YXR1c306ICR7dHJ1bmNhdGVCb2R5KGRhdGEpfWApO1xuICAgICAgaXNSZXNwb25zZUxvZ2dlZCA9IHRydWU7XG4gICAgICBjb25zdCBpc1Nlc3Npb25DcmVhdGlvblJlcXVlc3QgPSAvXFwvc2Vzc2lvbiQvLnRlc3QodXJsKSAmJiBtZXRob2QgPT09ICdQT1NUJztcbiAgICAgIGlmIChpc1Nlc3Npb25DcmVhdGlvblJlcXVlc3QpIHtcbiAgICAgICAgaWYgKHN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgdGhpcy5zZXNzaW9uSWQgPSBkYXRhLnNlc3Npb25JZCB8fCAoZGF0YS52YWx1ZSB8fCB7fSkuc2Vzc2lvbklkO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZG93bnN0cmVhbVByb3RvY29sID0gdGhpcy5nZXRQcm90b2NvbEZyb21SZXNCb2R5KGRhdGEpO1xuICAgICAgICB0aGlzLmxvZy5pbmZvKGBEZXRlcm1pbmVkIHRoZSBkb3duc3RyZWFtIHByb3RvY29sIGFzICcke3RoaXMuZG93bnN0cmVhbVByb3RvY29sfSdgKTtcbiAgICAgIH1cbiAgICAgIGlmIChfLmhhcyhkYXRhLCAnc3RhdHVzJykgJiYgcGFyc2VJbnQoZGF0YS5zdGF0dXMsIDEwKSAhPT0gMCkge1xuICAgICAgICAvLyBTb21lIHNlcnZlcnMsIGxpa2UgY2hyb21lZHJpdmVyIG1heSByZXR1cm4gcmVzcG9uc2UgY29kZSAyMDAgZm9yIG5vbi16ZXJvIEpTT05XUCBzdGF0dXNlc1xuICAgICAgICB0aHJvd1Byb3h5RXJyb3IoZGF0YSk7XG4gICAgICB9XG4gICAgICBjb25zdCByZXMgPSB7c3RhdHVzQ29kZTogc3RhdHVzLCBoZWFkZXJzLCBib2R5OiBkYXRhfTtcbiAgICAgIHJldHVybiBbcmVzLCBkYXRhXTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBXZSBvbmx5IGNvbnNpZGVyIGFuIGVycm9yIHVuZXhwZWN0ZWQgaWYgdGhpcyB3YXMgbm90XG4gICAgICAvLyBhbiBhc3luYyByZXF1ZXN0IG1vZHVsZSBlcnJvciBvciBpZiB0aGUgcmVzcG9uc2UgY2Fubm90IGJlIGNhc3QgdG9cbiAgICAgIC8vIGEgdmFsaWQgSlNPTlxuICAgICAgbGV0IHByb3h5RXJyb3JNc2cgPSBlLm1lc3NhZ2U7XG4gICAgICBpZiAodXRpbC5oYXNWYWx1ZShlLnJlc3BvbnNlKSkge1xuICAgICAgICBpZiAoIWlzUmVzcG9uc2VMb2dnZWQpIHtcbiAgICAgICAgICBjb25zdCBlcnJvciA9IHRydW5jYXRlQm9keShlLnJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgIHRoaXMubG9nLmluZm8oXG4gICAgICAgICAgICB1dGlsLmhhc1ZhbHVlKGUucmVzcG9uc2Uuc3RhdHVzKVxuICAgICAgICAgICAgICA/IGBHb3QgcmVzcG9uc2Ugd2l0aCBzdGF0dXMgJHtlLnJlc3BvbnNlLnN0YXR1c306ICR7ZXJyb3J9YFxuICAgICAgICAgICAgICA6IGBHb3QgcmVzcG9uc2Ugd2l0aCB1bmtub3duIHN0YXR1czogJHtlcnJvcn1gXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJveHlFcnJvck1zZyA9IGBDb3VsZCBub3QgcHJveHkgY29tbWFuZCB0byB0aGUgcmVtb3RlIHNlcnZlci4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWA7XG4gICAgICAgIGlmIChDT01QQUNUX0VSUk9SX1BBVFRFUk5TLnNvbWUoKHApID0+IHAudGVzdChlLm1lc3NhZ2UpKSkge1xuICAgICAgICAgIHRoaXMubG9nLmluZm8oZS5tZXNzYWdlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmxvZy5pbmZvKGUuc3RhY2spO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLlByb3h5UmVxdWVzdEVycm9yKHByb3h5RXJyb3JNc2csIGUucmVzcG9uc2U/LmRhdGEsIGUucmVzcG9uc2U/LnN0YXR1cyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0UHJvdG9jb2xGcm9tUmVzQm9keShyZXNPYmopIHtcbiAgICBpZiAoXy5pc0ludGVnZXIocmVzT2JqLnN0YXR1cykpIHtcbiAgICAgIHJldHVybiBNSlNPTldQO1xuICAgIH1cbiAgICBpZiAoIV8uaXNVbmRlZmluZWQocmVzT2JqLnZhbHVlKSkge1xuICAgICAgcmV0dXJuIFczQztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVybFxuICAgKiBAcGFyYW0ge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkhUVFBNZXRob2R9IG1ldGhvZFxuICAgKiBAcmV0dXJucyB7c3RyaW5nfHVuZGVmaW5lZH1cbiAgICovXG4gIHJlcXVlc3RUb0NvbW1hbmROYW1lKHVybCwgbWV0aG9kKSB7XG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1JlZ0V4cH0gcGF0dGVyblxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd8dW5kZWZpbmVkfVxuICAgICAqL1xuICAgIGNvbnN0IGV4dHJhY3RDb21tYW5kTmFtZSA9IChwYXR0ZXJuKSA9PiB7XG4gICAgICBjb25zdCBwYXRoTWF0Y2ggPSBwYXR0ZXJuLmV4ZWModXJsKTtcbiAgICAgIGlmIChwYXRoTWF0Y2gpIHtcbiAgICAgICAgcmV0dXJuIHJvdXRlVG9Db21tYW5kTmFtZShwYXRoTWF0Y2hbMV0sIG1ldGhvZCwgdGhpcy5yZXFCYXNlUGF0aCk7XG4gICAgICB9XG4gICAgfTtcbiAgICBsZXQgY29tbWFuZE5hbWUgPSByb3V0ZVRvQ29tbWFuZE5hbWUodXJsLCBtZXRob2QsIHRoaXMucmVxQmFzZVBhdGgpO1xuICAgIGlmICghY29tbWFuZE5hbWUgJiYgXy5pbmNsdWRlcyh1cmwsIGAke3RoaXMucmVxQmFzZVBhdGh9L3Nlc3Npb24vYCkpIHtcbiAgICAgIGNvbW1hbmROYW1lID0gZXh0cmFjdENvbW1hbmROYW1lKFxuICAgICAgICBuZXcgUmVnRXhwKGAke18uZXNjYXBlUmVnRXhwKHRoaXMucmVxQmFzZVBhdGgpfS9zZXNzaW9uL1teL10rKC4rKWApXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoIWNvbW1hbmROYW1lICYmIF8uaW5jbHVkZXModXJsLCB0aGlzLnJlcUJhc2VQYXRoKSkge1xuICAgICAgY29tbWFuZE5hbWUgPSBleHRyYWN0Q29tbWFuZE5hbWUobmV3IFJlZ0V4cChgJHtfLmVzY2FwZVJlZ0V4cCh0aGlzLnJlcUJhc2VQYXRoKX0oLy4rKWApKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbW1hbmROYW1lO1xuICB9XG5cbiAgYXN5bmMgcHJveHlDb21tYW5kKHVybCwgbWV0aG9kLCBib2R5ID0gbnVsbCkge1xuICAgIGNvbnN0IGNvbW1hbmROYW1lID0gdGhpcy5yZXF1ZXN0VG9Db21tYW5kTmFtZSh1cmwsIG1ldGhvZCk7XG4gICAgaWYgKCFjb21tYW5kTmFtZSkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHkodXJsLCBtZXRob2QsIGJvZHkpO1xuICAgIH1cbiAgICB0aGlzLmxvZy5kZWJ1ZyhgTWF0Y2hlZCAnJHt1cmx9JyB0byBjb21tYW5kIG5hbWUgJyR7Y29tbWFuZE5hbWV9J2ApO1xuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucHJvdG9jb2xDb252ZXJ0ZXIuY29udmVydEFuZFByb3h5KGNvbW1hbmROYW1lLCB1cmwsIG1ldGhvZCwgYm9keSk7XG4gIH1cblxuICBhc3luYyBjb21tYW5kKHVybCwgbWV0aG9kLCBib2R5ID0gbnVsbCkge1xuICAgIGxldCByZXNwb25zZTtcbiAgICBsZXQgcmVzQm9keU9iajtcbiAgICB0cnkge1xuICAgICAgW3Jlc3BvbnNlLCByZXNCb2R5T2JqXSA9IGF3YWl0IHRoaXMucHJveHlDb21tYW5kKHVybCwgbWV0aG9kLCBib2R5KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChpc0Vycm9yVHlwZShlcnIsIGVycm9ycy5Qcm94eVJlcXVlc3RFcnJvcikpIHtcbiAgICAgICAgdGhyb3cgZXJyLmdldEFjdHVhbEVycm9yKCk7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLlVua25vd25FcnJvcihlcnIubWVzc2FnZSk7XG4gICAgfVxuICAgIGNvbnN0IHByb3RvY29sID0gdGhpcy5nZXRQcm90b2NvbEZyb21SZXNCb2R5KHJlc0JvZHlPYmopO1xuICAgIGlmIChwcm90b2NvbCA9PT0gTUpTT05XUCkge1xuICAgICAgLy8gR290IHJlc3BvbnNlIGluIE1KU09OV1AgZm9ybWF0XG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzQ29kZSA9PT0gMjAwICYmIHJlc0JvZHlPYmouc3RhdHVzID09PSAwKSB7XG4gICAgICAgIHJldHVybiByZXNCb2R5T2JqLnZhbHVlO1xuICAgICAgfVxuICAgICAgY29uc3Qgc3RhdHVzID0gcGFyc2VJbnQocmVzQm9keU9iai5zdGF0dXMsIDEwKTtcbiAgICAgIGlmICghaXNOYU4oc3RhdHVzKSAmJiBzdGF0dXMgIT09IDApIHtcbiAgICAgICAgbGV0IG1lc3NhZ2UgPSByZXNCb2R5T2JqLnZhbHVlO1xuICAgICAgICBpZiAoXy5oYXMobWVzc2FnZSwgJ21lc3NhZ2UnKSkge1xuICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLm1lc3NhZ2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZXJyb3JGcm9tTUpTT05XUFN0YXR1c0NvZGUoXG4gICAgICAgICAgc3RhdHVzLFxuICAgICAgICAgIF8uaXNFbXB0eShtZXNzYWdlKSA/IGdldFN1bW1hcnlCeUNvZGUoc3RhdHVzKSA6IG1lc3NhZ2VcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHByb3RvY29sID09PSBXM0MpIHtcbiAgICAgIC8vIEdvdCByZXNwb25zZSBpbiBXM0MgZm9ybWF0XG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzQ29kZSA8IDMwMCkge1xuICAgICAgICByZXR1cm4gcmVzQm9keU9iai52YWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChfLmlzUGxhaW5PYmplY3QocmVzQm9keU9iai52YWx1ZSkgJiYgcmVzQm9keU9iai52YWx1ZS5lcnJvcikge1xuICAgICAgICB0aHJvdyBlcnJvckZyb21XM0NKc29uQ29kZShcbiAgICAgICAgICByZXNCb2R5T2JqLnZhbHVlLmVycm9yLFxuICAgICAgICAgIHJlc0JvZHlPYmoudmFsdWUubWVzc2FnZSxcbiAgICAgICAgICByZXNCb2R5T2JqLnZhbHVlLnN0YWNrdHJhY2VcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHJlc3BvbnNlLnN0YXR1c0NvZGUgPT09IDIwMCkge1xuICAgICAgLy8gVW5rbm93biBwcm90b2NvbC4gS2VlcGluZyBpdCBiZWNhdXNlIG9mIHRoZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgICByZXR1cm4gcmVzQm9keU9iajtcbiAgICB9XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Vbmtub3duRXJyb3IoXG4gICAgICBgRGlkIG5vdCBrbm93IHdoYXQgdG8gZG8gd2l0aCByZXNwb25zZSBjb2RlICcke3Jlc3BvbnNlLnN0YXR1c0NvZGV9JyBgICtcbiAgICAgICAgYGFuZCByZXNwb25zZSBib2R5ICcke18udHJ1bmNhdGUoSlNPTi5zdHJpbmdpZnkocmVzQm9keU9iaiksIHtcbiAgICAgICAgICBsZW5ndGg6IDMwMCxcbiAgICAgICAgfSl9J2BcbiAgICApO1xuICB9XG5cbiAgZ2V0U2Vzc2lvbklkRnJvbVVybCh1cmwpIHtcbiAgICBjb25zdCBtYXRjaCA9IHVybC5tYXRjaCgvXFwvc2Vzc2lvblxcLyhbXi9dKykvKTtcbiAgICByZXR1cm4gbWF0Y2ggPyBtYXRjaFsxXSA6IG51bGw7XG4gIH1cblxuICBhc3luYyBwcm94eVJlcVJlcyhyZXEsIHJlcykge1xuICAgIC8vICEgdGhpcyBtZXRob2QgbXVzdCBub3QgdGhyb3cgYW55IGV4Y2VwdGlvbnNcbiAgICAvLyAhIG1ha2Ugc3VyZSB0byBjYWxsIHJlcy5zZW5kIGJlZm9yZSByZXR1cm5cbiAgICBsZXQgc3RhdHVzQ29kZTtcbiAgICBsZXQgcmVzQm9keU9iajtcbiAgICB0cnkge1xuICAgICAgbGV0IHJlc3BvbnNlO1xuICAgICAgW3Jlc3BvbnNlLCByZXNCb2R5T2JqXSA9IGF3YWl0IHRoaXMucHJveHlDb21tYW5kKHJlcS5vcmlnaW5hbFVybCwgcmVxLm1ldGhvZCwgcmVxLmJvZHkpO1xuICAgICAgcmVzLmhlYWRlcnMgPSByZXNwb25zZS5oZWFkZXJzO1xuICAgICAgc3RhdHVzQ29kZSA9IHJlc3BvbnNlLnN0YXR1c0NvZGU7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBbc3RhdHVzQ29kZSwgcmVzQm9keU9ial0gPSBnZXRSZXNwb25zZUZvclczQ0Vycm9yKFxuICAgICAgICBpc0Vycm9yVHlwZShlcnIsIGVycm9ycy5Qcm94eVJlcXVlc3RFcnJvcikgPyBlcnIuZ2V0QWN0dWFsRXJyb3IoKSA6IGVyclxuICAgICAgKTtcbiAgICB9XG4gICAgcmVzLnNldCgnY29udGVudC10eXBlJywgJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgnKTtcbiAgICBpZiAoIV8uaXNQbGFpbk9iamVjdChyZXNCb2R5T2JqKSkge1xuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgZXJyb3JzLlVua25vd25FcnJvcihcbiAgICAgICAgYFRoZSBkb3duc3RyZWFtIHNlcnZlciByZXNwb25zZSB3aXRoIHRoZSBzdGF0dXMgY29kZSAke3N0YXR1c0NvZGV9IGlzIG5vdCBhIHZhbGlkIEpTT04gb2JqZWN0OiBgICtcbiAgICAgICAgICBfLnRydW5jYXRlKGAke3Jlc0JvZHlPYmp9YCwge2xlbmd0aDogMzAwfSlcbiAgICAgICk7XG4gICAgICBbc3RhdHVzQ29kZSwgcmVzQm9keU9ial0gPSBnZXRSZXNwb25zZUZvclczQ0Vycm9yKGVycm9yKTtcbiAgICB9XG5cbiAgICAvLyBpZiB0aGUgcHJveGllZCByZXNwb25zZSBjb250YWlucyBhIHNlc3Npb25JZCB0aGF0IHRoZSBkb3duc3RyZWFtXG4gICAgLy8gZHJpdmVyIGhhcyBnZW5lcmF0ZWQsIHdlIGRvbid0IHdhbnQgdG8gcmV0dXJuIHRoYXQgdG8gdGhlIGNsaWVudC5cbiAgICAvLyBJbnN0ZWFkLCByZXR1cm4gdGhlIGlkIGZyb20gdGhlIHJlcXVlc3Qgb3IgZnJvbSBjdXJyZW50IHNlc3Npb25cbiAgICBpZiAoXy5oYXMocmVzQm9keU9iaiwgJ3Nlc3Npb25JZCcpKSB7XG4gICAgICBjb25zdCByZXFTZXNzaW9uSWQgPSB0aGlzLmdldFNlc3Npb25JZEZyb21VcmwocmVxLm9yaWdpbmFsVXJsKTtcbiAgICAgIGlmIChyZXFTZXNzaW9uSWQpIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgUmVwbGFjaW5nIHNlc3Npb25JZCAke3Jlc0JvZHlPYmouc2Vzc2lvbklkfSB3aXRoICR7cmVxU2Vzc2lvbklkfWApO1xuICAgICAgICByZXNCb2R5T2JqLnNlc3Npb25JZCA9IHJlcVNlc3Npb25JZDtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zZXNzaW9uSWQpIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgUmVwbGFjaW5nIHNlc3Npb25JZCAke3Jlc0JvZHlPYmouc2Vzc2lvbklkfSB3aXRoICR7dGhpcy5zZXNzaW9uSWR9YCk7XG4gICAgICAgIHJlc0JvZHlPYmouc2Vzc2lvbklkID0gdGhpcy5zZXNzaW9uSWQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJlc0JvZHlPYmoudmFsdWUgPSBmb3JtYXRSZXNwb25zZVZhbHVlKHJlc0JvZHlPYmoudmFsdWUpO1xuICAgIHJlcy5zdGF0dXMoc3RhdHVzQ29kZSkuc2VuZChKU09OLnN0cmluZ2lmeShmb3JtYXRTdGF0dXMocmVzQm9keU9iaikpKTtcbiAgfVxufVxuXG5leHBvcnQge0pXUHJveHl9O1xuZXhwb3J0IGRlZmF1bHQgSldQcm94eTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7RXJyb3IgJiB7cmVzcG9uc2U6IHtkYXRhOiBpbXBvcnQoJ3R5cGUtZmVzdCcpLkpzb25PYmplY3QsIHN0YXR1czogaW1wb3J0KCdodHRwLXN0YXR1cy1jb2RlcycpLlN0YXR1c0NvZGVzfX19IFByb3h5RXJyb3JcbiAqL1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQU9BOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLFdBQVcsR0FBR0MsZUFBQSxDQUFPQyxTQUFQLENBQWlCLFVBQWpCLENBQXBCOztBQUNBLE1BQU1DLHVCQUF1QixHQUFHLE1BQWhDO0FBQ0EsTUFBTUMsc0JBQXNCLEdBQUcsQ0FBQyxrQkFBRCxFQUFxQixnQkFBckIsQ0FBL0I7QUFFQSxNQUFNO0VBQUNDLE9B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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../lib/jsonwp-status/status.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../lib/jsonwp-status/status.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoHA,oDAQC"}
|
|
@@ -75,7 +75,7 @@ const codes = {
|
|
|
75
75
|
},
|
|
76
76
|
UnableToSetCookie: {
|
|
77
77
|
code: 25,
|
|
78
|
-
summary:
|
|
78
|
+
summary: "A request to set a cookie's value could not be satisfied."
|
|
79
79
|
},
|
|
80
80
|
UnexpectedAlertOpen: {
|
|
81
81
|
code: 26,
|
|
@@ -134,4 +134,4 @@ function getSummaryByCode(code) {
|
|
|
134
134
|
|
|
135
135
|
var _default = codes;
|
|
136
136
|
exports.default = _default;
|
|
137
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
137
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb2RlcyIsIlN1Y2Nlc3MiLCJjb2RlIiwic3VtbWFyeSIsIk5vU3VjaERyaXZlciIsIk5vU3VjaEVsZW1lbnQiLCJOb1N1Y2hGcmFtZSIsIlVua25vd25Db21tYW5kIiwiU3RhbGVFbGVtZW50UmVmZXJlbmNlIiwiRWxlbWVudE5vdFZpc2libGUiLCJJbnZhbGlkRWxlbWVudFN0YXRlIiwiVW5rbm93bkVycm9yIiwiRWxlbWVudElzTm90U2VsZWN0YWJsZSIsIkphdmFTY3JpcHRFcnJvciIsIlhQYXRoTG9va3VwRXJyb3IiLCJUaW1lb3V0IiwiTm9TdWNoV2luZG93IiwiSW52YWxpZENvb2tpZURvbWFpbiIsIlVuYWJsZVRvU2V0Q29va2llIiwiVW5leHBlY3RlZEFsZXJ0T3BlbiIsIk5vQWxlcnRPcGVuRXJyb3IiLCJTY3JpcHRUaW1lb3V0IiwiSW52YWxpZEVsZW1lbnRDb29yZGluYXRlcyIsIklNRU5vdEF2YWlsYWJsZSIsIklNRUVuZ2luZUFjdGl2YXRpb25GYWlsZWQiLCJJbnZhbGlkU2VsZWN0b3IiLCJTZXNzaW9uTm90Q3JlYXRlZEV4Y2VwdGlvbiIsIk1vdmVUYXJnZXRPdXRPZkJvdW5kcyIsIk5vU3VjaENvbnRleHQiLCJnZXRTdW1tYXJ5QnlDb2RlIiwicGFyc2VJbnQiLCJvYmoiLCJfIiwidmFsdWVzIiwiaXNVbmRlZmluZWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvanNvbndwLXN0YXR1cy9zdGF0dXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuY29uc3QgY29kZXMgPSB7XG4gIFN1Y2Nlc3M6IHtcbiAgICBjb2RlOiAwLFxuICAgIHN1bW1hcnk6ICdUaGUgY29tbWFuZCBleGVjdXRlZCBzdWNjZXNzZnVsbHkuJyxcbiAgfSxcbiAgTm9TdWNoRHJpdmVyOiB7XG4gICAgY29kZTogNixcbiAgICBzdW1tYXJ5OiAnQSBzZXNzaW9uIGlzIGVpdGhlciB0ZXJtaW5hdGVkIG9yIG5vdCBzdGFydGVkJyxcbiAgfSxcbiAgTm9TdWNoRWxlbWVudDoge1xuICAgIGNvZGU6IDcsXG4gICAgc3VtbWFyeTogJ0FuIGVsZW1lbnQgY291bGQgbm90IGJlIGxvY2F0ZWQgb24gdGhlIHBhZ2UgdXNpbmcgdGhlIGdpdmVuIHNlYXJjaCBwYXJhbWV0ZXJzLicsXG4gIH0sXG4gIE5vU3VjaEZyYW1lOiB7XG4gICAgY29kZTogOCxcbiAgICBzdW1tYXJ5OlxuICAgICAgJ0EgcmVxdWVzdCB0byBzd2l0Y2ggdG8gYSBmcmFtZSBjb3VsZCBub3QgYmUgc2F0aXNmaWVkIGJlY2F1c2UgdGhlIGZyYW1lIGNvdWxkIG5vdCBiZSBmb3VuZC4nLFxuICB9LFxuICBVbmtub3duQ29tbWFuZDoge1xuICAgIGNvZGU6IDksXG4gICAgc3VtbWFyeTpcbiAgICAgICdUaGUgcmVxdWVzdGVkIHJlc291cmNlIGNvdWxkIG5vdCBiZSBmb3VuZCwgb3IgYSByZXF1ZXN0IHdhcyByZWNlaXZlZCB1c2luZyBhbiBIVFRQIG1ldGhvZCB0aGF0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIG1hcHBlZCByZXNvdXJjZS4nLFxuICB9LFxuICBTdGFsZUVsZW1lbnRSZWZlcmVuY2U6IHtcbiAgICBjb2RlOiAxMCxcbiAgICBzdW1tYXJ5OlxuICAgICAgJ0FuIGVsZW1lbnQgY29tbWFuZCBmYWlsZWQgYmVjYXVzZSB0aGUgcmVmZXJlbmNlZCBlbGVtZW50IGlzIG5vIGxvbmdlciBhdHRhY2hlZCB0byB0aGUgRE9NLicsXG4gIH0sXG4gIEVsZW1lbnROb3RWaXNpYmxlOiB7XG4gICAgY29kZTogMTEsXG4gICAgc3VtbWFyeTpcbiAgICAgICdBbiBlbGVtZW50IGNvbW1hbmQgY291bGQgbm90IGJlIGNvbXBsZXRlZCBiZWNhdXNlIHRoZSBlbGVtZW50IGlzIG5vdCB2aXNpYmxlIG9uIHRoZSBwYWdlLicsXG4gIH0sXG4gIEludmFsaWRFbGVtZW50U3RhdGU6IHtcbiAgICBjb2RlOiAxMixcbiAgICBzdW1tYXJ5OlxuICAgICAgJ0FuIGVsZW1lbnQgY29tbWFuZCBjb3VsZCBub3QgYmUgY29tcGxldGVkIGJlY2F1c2UgdGhlIGVsZW1lbnQgaXMgaW4gYW4gaW52YWxpZCBzdGF0ZSAoZS5nLiBhdHRlbXB0aW5nIHRvIGNsaWNrIGEgZGlzYWJsZWQgZWxlbWVudCkuJyxcbiAgfSxcbiAgVW5rbm93bkVycm9yOiB7XG4gICAgY29kZTogMTMsXG4gICAgc3VtbWFyeTogJ0FuIHVua25vd24gc2VydmVyLXNpZGUgZXJyb3Igb2NjdXJyZWQgd2hpbGUgcHJvY2Vzc2luZyB0aGUgY29tbWFuZC4nLFxuICB9LFxuICBFbGVtZW50SXNOb3RTZWxlY3RhYmxlOiB7XG4gICAgY29kZTogMTUsXG4gICAgc3VtbWFyeTogJ0FuIGF0dGVtcHQgd2FzIG1hZGUgdG8gc2VsZWN0IGFuIGVsZW1lbnQgdGhhdCBjYW5ub3QgYmUgc2VsZWN0ZWQuJyxcbiAgfSxcbiAgSmF2YVNjcmlwdEVycm9yOiB7XG4gICAgY29kZTogMTcsXG4gICAgc3VtbWFyeTogJ0FuIGVycm9yIG9jY3VycmVkIHdoaWxlIGV4ZWN1dGluZyB1c2VyIHN1cHBsaWVkIEphdmFTY3JpcHQuJyxcbiAgfSxcbiAgWFBhdGhMb29rdXBFcnJvcjoge1xuICAgIGNvZGU6IDE5LFxuICAgIHN1bW1hcnk6ICdBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBzZWFyY2hpbmcgZm9yIGFuIGVsZW1lbnQgYnkgWFBhdGguJyxcbiAgfSxcbiAgVGltZW91dDoge1xuICAgIGNvZGU6IDIxLFxuICAgIHN1bW1hcnk6ICdBbiBvcGVyYXRpb24gZGlkIG5vdCBjb21wbGV0ZSBiZWZvcmUgaXRzIHRpbWVvdXQgZXhwaXJlZC4nLFxuICB9LFxuICBOb1N1Y2hXaW5kb3c6IHtcbiAgICBjb2RlOiAyMyxcbiAgICBzdW1tYXJ5OlxuICAgICAgJ0EgcmVxdWVzdCB0byBzd2l0Y2ggdG8gYSBkaWZmZXJlbnQgd2luZG93IGNvdWxkIG5vdCBiZSBzYXRpc2ZpZWQgYmVjYXVzZSB0aGUgd2luZG93IGNvdWxkIG5vdCBiZSBmb3VuZC4nLFxuICB9LFxuICBJbnZhbGlkQ29va2llRG9tYWluOiB7XG4gICAgY29kZTogMjQsXG4gICAgc3VtbWFyeTpcbiAgICAgICdBbiBpbGxlZ2FsIGF0dGVtcHQgd2FzIG1hZGUgdG8gc2V0IGEgY29va2llIHVuZGVyIGEgZGlmZmVyZW50IGRvbWFpbiB0aGFuIHRoZSBjdXJyZW50IHBhZ2UuJyxcbiAgfSxcbiAgVW5hYmxlVG9TZXRDb29raWU6IHtcbiAgICBjb2RlOiAyNSxcbiAgICBzdW1tYXJ5OiBcIkEgcmVxdWVzdCB0byBzZXQgYSBjb29raWUncyB2YWx1ZSBjb3VsZCBub3QgYmUgc2F0aXNmaWVkLlwiLFxuICB9LFxuICBVbmV4cGVjdGVkQWxlcnRPcGVuOiB7XG4gICAgY29kZTogMjYsXG4gICAgc3VtbWFyeTogJ0EgbW9kYWwgZGlhbG9nIHdhcyBvcGVuLCBibG9ja2luZyB0aGlzIG9wZXJhdGlvbicsXG4gIH0sXG4gIE5vQWxlcnRPcGVuRXJyb3I6IHtcbiAgICBjb2RlOiAyNyxcbiAgICBzdW1tYXJ5OiAnQW4gYXR0ZW1wdCB3YXMgbWFkZSB0byBvcGVyYXRlIG9uIGEgbW9kYWwgZGlhbG9nIHdoZW4gb25lIHdhcyBub3Qgb3Blbi4nLFxuICB9LFxuICBTY3JpcHRUaW1lb3V0OiB7XG4gICAgY29kZTogMjgsXG4gICAgc3VtbWFyeTogJ0Egc2NyaXB0IGRpZCBub3QgY29tcGxldGUgYmVmb3JlIGl0cyB0aW1lb3V0IGV4cGlyZWQuJyxcbiAgfSxcbiAgSW52YWxpZEVsZW1lbnRDb29yZGluYXRlczoge1xuICAgIGNvZGU6IDI5LFxuICAgIHN1bW1hcnk6ICdUaGUgY29vcmRpbmF0ZXMgcHJvdmlkZWQgdG8gYW4gaW50ZXJhY3Rpb25zIG9wZXJhdGlvbiBhcmUgaW52YWxpZC4nLFxuICB9LFxuICBJTUVOb3RBdmFpbGFibGU6IHtcbiAgICBjb2RlOiAzMCxcbiAgICBzdW1tYXJ5OiAnSU1FIHdhcyBub3QgYXZhaWxhYmxlLicsXG4gIH0sXG4gIElNRUVuZ2luZUFjdGl2YXRpb25GYWlsZWQ6IHtcbiAgICBjb2RlOiAzMSxcbiAgICBzdW1tYXJ5OiAnQW4gSU1FIGVuZ2luZSBjb3VsZCBub3QgYmUgc3RhcnRlZC4nLFxuICB9LFxuICBJbnZhbGlkU2VsZWN0b3I6IHtcbiAgICBjb2RlOiAzMixcbiAgICBzdW1tYXJ5OiAnQXJndW1lbnQgd2FzIGFuIGludmFsaWQgc2VsZWN0b3IgKGUuZy4gWFBhdGgvQ1NTKS4nLFxuICB9LFxuICBTZXNzaW9uTm90Q3JlYXRlZEV4Y2VwdGlvbjoge1xuICAgIGNvZGU6IDMzLFxuICAgIHN1bW1hcnk6ICdBIG5ldyBzZXNzaW9uIGNvdWxkIG5vdCBiZSBjcmVhdGVkLicsXG4gIH0sXG4gIE1vdmVUYXJnZXRPdXRPZkJvdW5kczoge1xuICAgIGNvZGU6IDM0LFxuICAgIHN1bW1hcnk6ICdUYXJnZXQgcHJvdmlkZWQgZm9yIGEgbW92ZSBhY3Rpb24gaXMgb3V0IG9mIGJvdW5kcy4nLFxuICB9LFxuICBOb1N1Y2hDb250ZXh0OiB7XG4gICAgY29kZTogMzUsXG4gICAgc3VtbWFyeTogJ05vIHN1Y2ggY29udGV4dCBmb3VuZC4nLFxuICB9LFxufTtcblxuZnVuY3Rpb24gZ2V0U3VtbWFyeUJ5Q29kZShjb2RlKSB7XG4gIGNvZGUgPSBwYXJzZUludChjb2RlLCAxMCk7XG4gIGZvciAobGV0IG9iaiBvZiBfLnZhbHVlcyhjb2RlcykpIHtcbiAgICBpZiAoIV8uaXNVbmRlZmluZWQob2JqLmNvZGUpICYmIG9iai5jb2RlID09PSBjb2RlKSB7XG4gICAgICByZXR1cm4gb2JqLnN1bW1hcnk7XG4gICAgfVxuICB9XG4gIHJldHVybiAnQW4gZXJyb3Igb2NjdXJyZWQnO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjb2RlcztcbmV4cG9ydCB7Y29kZXMsIGdldFN1bW1hcnlCeUNvZGV9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQTs7QUFFQSxNQUFNQSxLQUFLLEdBQUc7RUFDWkMsT0FBTyxFQUFFO0lBQ1BDLElBQUksRUFBRSxDQURDO0lBRVBDLE9BQU8sRUFBRTtF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
|
|
@@ -231,6 +231,20 @@ export class ProxyRequestError extends ES6Error {
|
|
|
231
231
|
jsonwp: any;
|
|
232
232
|
getActualError(): ProtocolError;
|
|
233
233
|
}
|
|
234
|
+
export type HttpResultBody = string | {
|
|
235
|
+
value: HttpResultBodyValue;
|
|
236
|
+
status?: number;
|
|
237
|
+
};
|
|
238
|
+
export type HttpResultBodyValue = {
|
|
239
|
+
message?: string | undefined;
|
|
240
|
+
error?: string | Error | undefined;
|
|
241
|
+
stacktrace?: string | undefined;
|
|
242
|
+
};
|
|
243
|
+
export type MJSONWPError = {
|
|
244
|
+
status: number;
|
|
245
|
+
value: string | object;
|
|
246
|
+
message: string;
|
|
247
|
+
};
|
|
234
248
|
import ES6Error from "es6-error";
|
|
235
249
|
import { StatusCodes as HTTPStatusCodes } from "http-status-codes";
|
|
236
250
|
export namespace errors {
|
|
@@ -294,17 +308,12 @@ export function errorFromMJSONWPStatusCode(code: number, value?: string | any):
|
|
|
294
308
|
export function errorFromW3CJsonCode(code: string, message: string, stacktrace?: string | null): ProtocolError;
|
|
295
309
|
/**
|
|
296
310
|
* Convert an Appium error to proper W3C HTTP response
|
|
297
|
-
* @param {ProtocolError} err The error that needs to be translated
|
|
311
|
+
* @param {ProtocolError|MJSONWPError} err The error that needs to be translated
|
|
298
312
|
*/
|
|
299
|
-
export function getResponseForW3CError(err: ProtocolError): any[];
|
|
313
|
+
export function getResponseForW3CError(err: ProtocolError | MJSONWPError): any[];
|
|
300
314
|
/**
|
|
301
315
|
* Convert an Appium error to a proper JSONWP response
|
|
302
316
|
* @param {ProtocolError} err The error to be converted
|
|
303
317
|
*/
|
|
304
|
-
export function getResponseForJsonwpError(err: ProtocolError): (HTTPStatusCodes.BAD_REQUEST | HTTPStatusCodes.INTERNAL_SERVER_ERROR | HTTPStatusCodes.NOT_FOUND | HTTPStatusCodes.NOT_IMPLEMENTED |
|
|
305
|
-
status: any;
|
|
306
|
-
value: {
|
|
307
|
-
message: string;
|
|
308
|
-
};
|
|
309
|
-
})[];
|
|
318
|
+
export function getResponseForJsonwpError(err: ProtocolError): (HTTPStatusCodes.BAD_REQUEST | HTTPStatusCodes.INTERNAL_SERVER_ERROR | HTTPStatusCodes.NOT_FOUND | HTTPStatusCodes.NOT_IMPLEMENTED | HttpResultBody)[];
|
|
310
319
|
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../lib/protocol/errors.js"],"names":[],"mappings":"AAWA;IACE,mEASC;IAPC,gBAA4B;IAC5B,WAAuC;IAIvC,eAAyD;IACzD,iBAAuB;IAOzB,yBAEC;IAND,sBAEC;CAKF;AAMD;IACE,sBAEC;IAED,oCAEC;IACD,uBAEC;IACD,
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../lib/protocol/errors.js"],"names":[],"mappings":"AAWA;IACE,mEASC;IAPC,gBAA4B;IAC5B,WAAuC;IAIvC,eAAyD;IACzD,iBAAuB;IAOzB,yBAEC;IAND,sBAEC;CAKF;AAMD;IACE,sBAEC;IAED,oCAEC;IACD,uBAEC;IACD,sBAOC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAOC;CACF;AAED;IACE,sBAEC;IACD,uBAEC;IACD,oCAEC;IACD,sBASC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAUC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBASC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBASC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBASC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,iCAQC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAOC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAOC;CACF;AAED;IACE,sBAEC;IACD,uBAEC;IACD,oCAEC;IACD,sBAOC;CACF;AAED;IACE,sBAEC;IACD,uBAEC;IACD,oCAEC;IACD,sBASC;CACF;AAED;IACE,sBAEC;IACD,uBAEC;IACD,oCAEC;IACD,sBAQC;CACF;AAED;IACE,uBAEC;IACD,sBAQC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAOC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAOC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAOC;CACF;AAED;IACE,sBAEC;IACD,uBAEC;IACD,oCAEC;IACD,sBASC;CACF;AAED;IACE,sBAEC;IACD,uBAEC;IACD,oCAEC;IACD,sBAOC;CACF;AAED;IACE,sBAEC;IACD,uBAEC;IACD,oCAEC;IACD,sBASC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAQC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAOC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAOC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAOC;CACF;AAED;CAAyD;AAEzD;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAOC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAOC;CACF;AAED;CAA8E;AAE9E;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAOC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAOC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAOC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,0BAYC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAOC;CACF;AAED;IACE,sBAEC;IACD,sBAEC;CACF;AAED;IACE,sBAEC;IACD,sBAKC;CACF;AAGD;CAIC;AACD;CAIC;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAOC;CACF;AAGD;IACE,uBAEC;IACD,qEAcC;IADC,2BAA4C;CAE/C;AAED;;;;;GAKG;AACH;IACE,2DA2BC;IATC,eAA4C;IAI1C,SAAiC;IAGjC,YAA8B;IAIlC,gCAYC;CACF;6BAkOa,MAAM,GAAG;IAAC,KAAK,EAAE,mBAAmB,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;;;YAYvD,MAAM;WACN,MAAM,GAAC,MAAM;aACb,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA3KpB,0DAkBC;AA3BD,kDAOC;AAsBD;;;;;GAKG;AACH,iDAJW,MAAM,UACN,MAAM,MAAO,GACZ,aAAa,CAYxB;AAED;;;;;;GAMG;AACH,2CALW,MAAM,WACN,MAAM,eACL,MAAM,UACN,aAAa,CAaxB;AAWD;;;GAGG;AACH,4CAFW,aAAa,GAAC,YAAY,SAqCpC;AAED;;;GAGG;AACH,+CAFW,aAAa,0JAkCvB"}
|