@appium/base-driver 8.5.3 → 8.5.4
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 +20 -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 +116 -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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
declare
|
|
1
|
+
declare const _default: import('@appium/types').DriverHelpers;
|
|
2
2
|
export default _default;
|
|
3
3
|
export type PostProcessOptions = {
|
|
4
4
|
/**
|
|
@@ -47,13 +47,18 @@ export type ConfigureAppOptions = {
|
|
|
47
47
|
* containing `appPath` property then the integrity of it will be verified and stored into
|
|
48
48
|
* the cache.
|
|
49
49
|
*/
|
|
50
|
-
onPostProcess
|
|
50
|
+
onPostProcess?: ((obj: PostProcessOptions) => (Promise<PostProcessResult | undefined> | PostProcessResult | undefined)) | undefined;
|
|
51
51
|
/**
|
|
52
52
|
* List of supported application extensions (
|
|
53
53
|
* including starting dots). This property is mandatory and must not be empty.
|
|
54
54
|
*/
|
|
55
55
|
supportedExtensions: string[];
|
|
56
56
|
};
|
|
57
|
+
export type RemoteAppProps = {
|
|
58
|
+
lastModified: Date | null;
|
|
59
|
+
immutable: boolean;
|
|
60
|
+
maxAge: number | null;
|
|
61
|
+
};
|
|
57
62
|
/**
|
|
58
63
|
* @typedef PostProcessOptions
|
|
59
64
|
* @property {?Object} cachedAppInfo The information about the previously cached app instance (if exists):
|
|
@@ -80,7 +85,7 @@ export type ConfigureAppOptions = {
|
|
|
80
85
|
*/
|
|
81
86
|
/**
|
|
82
87
|
* @typedef ConfigureAppOptions
|
|
83
|
-
* @property {(obj: PostProcessOptions) => (Promise<PostProcessResult|undefined>|PostProcessResult|undefined)} onPostProcess
|
|
88
|
+
* @property {(obj: PostProcessOptions) => (Promise<PostProcessResult|undefined>|PostProcessResult|undefined)} [onPostProcess]
|
|
84
89
|
* Optional function, which should be applied
|
|
85
90
|
* to the application after it is downloaded/preprocessed. This function may be async
|
|
86
91
|
* and is expected to accept single object parameter.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../lib/basedriver/helpers.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../lib/basedriver/helpers.js"],"names":[],"mappings":"wBAklBW,OAAO,eAAe,EAAE,aAAa;;;;;;;;;;;;;;;;;;;;WAzalC,OAAO;;;;;;;;;;aAGP,MAAM;;;;;;;aAMN,MAAM;;;;;;;;;;;;2BAMA,kBAAkB,KAAK,CAAC,QAAQ,iBAAiB,GAAC,SAAS,CAAC,GAAC,iBAAiB,GAAC,SAAS,CAAC;;;;;yBAQ/F,MAAM,EAAE;;;kBA8ZR,IAAI;eACJ,OAAO;YACP,MAAM;;AApcpB;;;;;;;;;;;;;;;;;;GAkBG;AAEH;;;;GAIG;AAEH;;;;;;;;;;;;GAYG;AAEH;;;;;;;;;GASG;AACH,kCAJW,MAAM,YACN,MAAM,GAAC,MAAM,EAAE,GAAC,mBAAmB,gBA4N7C;AA8FD,qDAEC;AAED;;;;;;;;;GASG;AACH,oFAuBC;AAED;;;;;GAKG;AACH,oCAFW,MAAM,GAAC,aAAa,SAoB9B;AAED;;;;;;GAMG;AACH,6CAJW,OAAO,eAAe,EAAE,IAAI,cAC5B,MAAM,UACJ,MAAM,CAKlB"}
|
|
@@ -178,9 +178,7 @@ async function configureApp(app, options = {}) {
|
|
|
178
178
|
}
|
|
179
179
|
|
|
180
180
|
let supportedAppExtensions;
|
|
181
|
-
const
|
|
182
|
-
onPostProcess
|
|
183
|
-
} = _lodash.default.isPlainObject(options) ? options : {};
|
|
181
|
+
const onPostProcess = !_lodash.default.isString(options) && !_lodash.default.isArray(options) ? options.onPostProcess : undefined;
|
|
184
182
|
|
|
185
183
|
if (_lodash.default.isString(options)) {
|
|
186
184
|
supportedAppExtensions = [options];
|
|
@@ -209,7 +207,7 @@ async function configureApp(app, options = {}) {
|
|
|
209
207
|
pathname
|
|
210
208
|
} = _url.default.parse(newApp);
|
|
211
209
|
|
|
212
|
-
const isUrl = ['http:', 'https:'].includes(protocol);
|
|
210
|
+
const isUrl = protocol === null ? false : ['http:', 'https:'].includes(protocol);
|
|
213
211
|
const cachedAppInfo = APPLICATIONS_CACHE.get(app);
|
|
214
212
|
return await APPLICATIONS_CACHE_GUARD.acquire(app, async () => {
|
|
215
213
|
if (isUrl) {
|
|
@@ -252,7 +250,7 @@ async function configureApp(app, options = {}) {
|
|
|
252
250
|
|
|
253
251
|
let fileName = null;
|
|
254
252
|
|
|
255
|
-
const basename = _support.fs.sanitizeName(_path.default.basename(decodeURIComponent(pathname)), {
|
|
253
|
+
const basename = _support.fs.sanitizeName(_path.default.basename(decodeURIComponent(pathname !== null && pathname !== void 0 ? pathname : '')), {
|
|
256
254
|
replacement: SANITIZE_REPLACEMENT
|
|
257
255
|
});
|
|
258
256
|
|
|
@@ -545,4 +543,4 @@ var _default = {
|
|
|
545
543
|
generateDriverLogPrefix
|
|
546
544
|
};
|
|
547
545
|
exports.default = _default;
|
|
548
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJUEFfRVhUIiwiWklQX0VYVFMiLCJaSVBfTUlNRV9UWVBFUyIsIkNBQ0hFRF9BUFBTX01BWF9BR0UiLCJNQVhfQ0FDSEVEX0FQUFMiLCJBUFBMSUNBVElPTlNfQ0FDSEUiLCJMUlUiLCJtYXgiLCJ0dGwiLCJ1cGRhdGVBZ2VPbkdldCIsImRpc3Bvc2UiLCJhcHAiLCJmdWxsUGF0aCIsImxvZ2dlciIsImluZm8iLCJmcyIsInJpbXJhZiIsIm5vRGlzcG9zZU9uU2V0IiwiQVBQTElDQVRJT05TX0NBQ0hFX0dVQVJEIiwiQXN5bmNMb2NrIiwiU0FOSVRJWkVfUkVQTEFDRU1FTlQiLCJERUZBVUxUX0JBU0VOQU1FIiwiQVBQX0RPV05MT0FEX1RJTUVPVVRfTVMiLCJwcm9jZXNzIiwib24iLCJzaXplIiwiYXBwUGF0aHMiLCJ2YWx1ZXMiLCJtYXAiLCJkZWJ1ZyIsImxlbmd0aCIsInV0aWwiLCJwbHVyYWxpemUiLCJhcHBQYXRoIiwicmltcmFmU3luYyIsImUiLCJ3YXJuIiwibWVzc2FnZSIsInJldHJpZXZlSGVhZGVycyIsImxpbmsiLCJ1cmwiLCJtZXRob2QiLCJ0aW1lb3V0IiwiaGVhZGVycyIsImdldENhY2hlZEFwcGxpY2F0aW9uUGF0aCIsImN1cnJlbnRBcHBQcm9wcyIsImNhY2hlZEFwcEluZm8iLCJyZWZyZXNoIiwiXyIsImlzUGxhaW5PYmplY3QiLCJsYXN0TW9kaWZpZWQiLCJjdXJyZW50TW9kaWZpZWQiLCJpbW11dGFibGUiLCJjdXJyZW50SW1tdXRhYmxlIiwibWF4QWdlIiwiY3VycmVudE1heEFnZSIsInRpbWVzdGFtcCIsImdldFRpbWUiLCJtc0xlZnQiLCJEYXRlIiwibm93IiwicGF0aCIsImJhc2VuYW1lIiwidmVyaWZ5QXBwRXh0ZW5zaW9uIiwic3VwcG9ydGVkQXBwRXh0ZW5zaW9ucyIsInRvTG93ZXIiLCJpbmNsdWRlcyIsImV4dG5hbWUiLCJFcnJvciIsImNhbGN1bGF0ZUZvbGRlckludGVncml0eSIsImZvbGRlclBhdGgiLCJnbG9iIiwiY3dkIiwic3RyaWN0Iiwibm9zb3J0IiwiY2FsY3VsYXRlRmlsZUludGVncml0eSIsImZpbGVQYXRoIiwiaGFzaCIsImlzQXBwSW50ZWdyaXR5T2siLCJjdXJyZW50UGF0aCIsImV4cGVjdGVkSW50ZWdyaXR5IiwiZXhpc3RzIiwic3RhdCIsImlzRGlyZWN0b3J5IiwiZm9sZGVyIiwiZmlsZSIsImNvbmZpZ3VyZUFwcCIsIm9wdGlvbnMiLCJpc1N0cmluZyIsIm9uUG9zdFByb2Nlc3MiLCJpc0FycmF5Iiwic3VwcG9ydGVkRXh0ZW5zaW9ucyIsImlzRW1wdHkiLCJuZXdBcHAiLCJzaG91bGRVbnppcEFwcCIsInBhY2thZ2VIYXNoIiwicmVtb3RlQXBwUHJvcHMiLCJwcm90b2NvbCIsInBhdGhuYW1lIiwicGFyc2UiLCJpc1VybCIsImdldCIsImFjcXVpcmUiLCJ0ZXN0IiwibWF4QWdlTWF0Y2giLCJleGVjIiwicGFyc2VJbnQiLCJjYWNoZWRQYXRoIiwiaW50ZWdyaXR5IiwiZGVsZXRlIiwiZmlsZU5hbWUiLCJzYW5pdGl6ZU5hbWUiLCJkZWNvZGVVUklDb21wb25lbnQiLCJyZXBsYWNlbWVudCIsImN0Iiwic29tZSIsIm1pbWVUeXBlIiwiUmVnRXhwIiwiZXNjYXBlUmVnRXhwIiwibWF0Y2giLCJyZXN1bHRpbmdOYW1lIiwic3Vic3RyaW5nIiwicmVzdWx0aW5nRXh0IiwiZmlyc3QiLCJ0YXJnZXRQYXRoIiwidGVtcERpciIsInByZWZpeCIsInN1ZmZpeCIsImRvd25sb2FkQXBwIiwiZXJyb3JNZXNzYWdlIiwiaXNQYWNrYWdlQUZpbGUiLCJpc0ZpbGUiLCJpc0Z1bmN0aW9uIiwiYXJjaGl2ZVBhdGgiLCJ0bXBSb290Iiwib3BlbkRpciIsInVuemlwQXBwIiwiaXNBYnNvbHV0ZSIsInJlc29sdmUiLCJzdG9yZUFwcEluQ2FjaGUiLCJhcHBQYXRoVG9DYWNoZSIsImNhY2hlZEZ1bGxQYXRoIiwic2V0IiwicmVzdWx0IiwiY2xvbmUiLCJCb29sZWFuIiwiaHJlZiIsIm5ldCIsImRvd25sb2FkRmlsZSIsImVyciIsInppcFBhdGgiLCJkc3RSb290IiwiemlwIiwiYXNzZXJ0VmFsaWRaaXAiLCJ0aW1lciIsInRpbWluZyIsIlRpbWVyIiwic3RhcnQiLCJ1c2VTeXN0ZW1VbnppcEVudiIsImVudiIsIkFQUElVTV9QUkVGRVJfU1lTVEVNX1VOWklQIiwidXNlU3lzdGVtVW56aXAiLCJleHRyYWN0aW9uT3B0cyIsImZpbGVOYW1lc0VuY29kaW5nIiwiZXh0cmFjdEFsbFRvIiwiZ2xvYlBhdHRlcm4iLCJleHQiLCJyZXBsYWNlIiwiam9pbiIsInNvcnRlZEJ1bmRsZUl0ZW1zIiwic29ydCIsImEiLCJiIiwic3BsaXQiLCJzZXAiLCJlcnJvckFuZFRocm93IiwiTWF0aCIsInJvdW5kIiwiZ2V0RHVyYXRpb24iLCJhc01pbGxpU2Vjb25kcyIsIm1hdGNoZWRCdW5kbGUiLCJkc3RQYXRoIiwibXYiLCJta2RpcnAiLCJpc1BhY2thZ2VPckJ1bmRsZSIsImR1cGxpY2F0ZUtleXMiLCJpbnB1dCIsImZpcnN0S2V5Iiwic2Vjb25kS2V5IiwiaXRlbSIsInJlc3VsdE9iaiIsImtleSIsInZhbHVlIiwidG9QYWlycyIsInJlY3Vyc2l2ZWx5Q2FsbGVkVmFsdWUiLCJwYXJzZUNhcHNBcnJheSIsImNhcCIsInBhcnNlZENhcHMiLCJKU09OIiwiaWduIiwiZ2VuZXJhdGVEcml2ZXJMb2dQcmVmaXgiLCJvYmoiLCJzZXNzaW9uSWQiLCJpbnN0YW5jZU5hbWUiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJub2RlIiwiZ2V0T2JqZWN0SWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvYmFzZWRyaXZlci9oZWxwZXJzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB1cmwgZnJvbSAndXJsJztcbmltcG9ydCBsb2dnZXIgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IHsgdGVtcERpciwgZnMsIHV0aWwsIHppcCwgbmV0LCB0aW1pbmcsIG5vZGUgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IExSVSBmcm9tICdscnUtY2FjaGUnO1xuaW1wb3J0IEFzeW5jTG9jayBmcm9tICdhc3luYy1sb2NrJztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5cbmNvbnN0IElQQV9FWFQgPSAnLmlwYSc7XG5jb25zdCBaSVBfRVhUUyA9IFsnLnppcCcsIElQQV9FWFRdO1xuY29uc3QgWklQX01JTUVfVFlQRVMgPSBbXG4gICdhcHBsaWNhdGlvbi96aXAnLFxuICAnYXBwbGljYXRpb24veC16aXAtY29tcHJlc3NlZCcsXG4gICdtdWx0aXBhcnQveC16aXAnLFxuXTtcbmNvbnN0IENBQ0hFRF9BUFBTX01BWF9BR0UgPSAxMDAwICogNjAgKiA2MCAqIDI0OyAvLyBtc1xuY29uc3QgTUFYX0NBQ0hFRF9BUFBTID0gMTAyNDtcbmNvbnN0IEFQUExJQ0FUSU9OU19DQUNIRSA9IG5ldyBMUlUoe1xuICBtYXg6IE1BWF9DQUNIRURfQVBQUyxcbiAgdHRsOiBDQUNIRURfQVBQU19NQVhfQUdFLCAvLyBleHBpcmUgYWZ0ZXIgMjQgaG91cnNcbiAgdXBkYXRlQWdlT25HZXQ6IHRydWUsXG4gIGRpc3Bvc2U6IChhcHAsIHtmdWxsUGF0aH0pID0+IHtcbiAgICBsb2dnZXIuaW5mbyhgVGhlIGFwcGxpY2F0aW9uICcke2FwcH0nIGNhY2hlZCBhdCAnJHtmdWxsUGF0aH0nIGhhcyBgICtcbiAgICAgIGBleHBpcmVkIGFmdGVyICR7Q0FDSEVEX0FQUFNfTUFYX0FHRX1tc2ApO1xuICAgIGlmIChmdWxsUGF0aCkge1xuICAgICAgZnMucmltcmFmKGZ1bGxQYXRoKTtcbiAgICB9XG4gIH0sXG4gIG5vRGlzcG9zZU9uU2V0OiB0cnVlLFxufSk7XG5jb25zdCBBUFBMSUNBVElPTlNfQ0FDSEVfR1VBUkQgPSBuZXcgQXN5bmNMb2NrKCk7XG5jb25zdCBTQU5JVElaRV9SRVBMQUNFTUVOVCA9ICctJztcbmNvbnN0IERFRkFVTFRfQkFTRU5BTUUgPSAnYXBwaXVtLWFwcCc7XG5jb25zdCBBUFBfRE9XTkxPQURfVElNRU9VVF9NUyA9IDEyMCAqIDEwMDA7XG5cbnByb2Nlc3Mub24oJ2V4aXQnLCAoKSA9PiB7XG4gIGlmIChBUFBMSUNBVElPTlNfQ0FDSEUuc2l6ZSA9PT0gMCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGFwcFBhdGhzID0gWy4uLkFQUExJQ0FUSU9OU19DQUNIRS52YWx1ZXMoKV1cbiAgICAubWFwKCh7ZnVsbFBhdGh9KSA9PiBmdWxsUGF0aCk7XG4gIGxvZ2dlci5kZWJ1ZyhgUGVyZm9ybWluZyBjbGVhbnVwIG9mICR7YXBwUGF0aHMubGVuZ3RofSBjYWNoZWQgYCArXG4gICAgdXRpbC5wbHVyYWxpemUoJ2FwcGxpY2F0aW9uJywgYXBwUGF0aHMubGVuZ3RoKSk7XG4gIGZvciAoY29uc3QgYXBwUGF0aCBvZiBhcHBQYXRocykge1xuICAgIHRyeSB7XG4gICAgICAvLyBBc3luY2hyb25vdXMgY2FsbHMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gb25FeGl0IGhhbmRsZXJcbiAgICAgIGZzLnJpbXJhZlN5bmMoYXBwUGF0aCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgbG9nZ2VyLndhcm4oZS5tZXNzYWdlKTtcbiAgICB9XG4gIH1cbn0pO1xuXG5cbmFzeW5jIGZ1bmN0aW9uIHJldHJpZXZlSGVhZGVycyAobGluaykge1xuICB0cnkge1xuICAgIHJldHVybiAoYXdhaXQgYXhpb3Moe1xuICAgICAgdXJsOiBsaW5rLFxuICAgICAgbWV0aG9kOiAnSEVBRCcsXG4gICAgICB0aW1lb3V0OiA1MDAwLFxuICAgIH0pKS5oZWFkZXJzO1xuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nZ2VyLmluZm8oYENhbm5vdCBzZW5kIEhFQUQgcmVxdWVzdCB0byAnJHtsaW5rfScuIE9yaWdpbmFsIGVycm9yOiAke2UubWVzc2FnZX1gKTtcbiAgfVxuICByZXR1cm4ge307XG59XG5cbmZ1bmN0aW9uIGdldENhY2hlZEFwcGxpY2F0aW9uUGF0aCAobGluaywgY3VycmVudEFwcFByb3BzID0ge30sIGNhY2hlZEFwcEluZm8gPSB7fSkge1xuICBjb25zdCByZWZyZXNoID0gKCkgPT4ge1xuICAgIGxvZ2dlci5kZWJ1ZyhgQSBmcmVzaCBjb3B5IG9mIHRoZSBhcHBsaWNhdGlvbiBpcyBnb2luZyB0byBiZSBkb3dubG9hZGVkIGZyb20gJHtsaW5rfWApO1xuICAgIHJldHVybiBudWxsO1xuICB9O1xuXG4gIGlmICghXy5pc1BsYWluT2JqZWN0KGNhY2hlZEFwcEluZm8pIHx8ICFfLmlzUGxhaW5PYmplY3QoY3VycmVudEFwcFByb3BzKSkge1xuICAgIC8vIGlmIGFuIGludmFsaWQgYXJnIGlzIHBhc3NlZCB0aGVuIGFzc3VtZSBjYWNoZSBtaXNzXG4gICAgcmV0dXJuIHJlZnJlc2goKTtcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICBsYXN0TW9kaWZpZWQ6IGN1cnJlbnRNb2RpZmllZCxcbiAgICBpbW11dGFibGU6IGN1cnJlbnRJbW11dGFibGUsXG4gICAgLy8gbWF4QWdlIGlzIGluIHNlY29uZHNcbiAgICBtYXhBZ2U6IGN1cnJlbnRNYXhBZ2UsXG4gIH0gPSBjdXJyZW50QXBwUHJvcHM7XG4gIGNvbnN0IHtcbiAgICAvLyBEYXRlIGluc3RhbmNlXG4gICAgbGFzdE1vZGlmaWVkLFxuICAgIC8vIGJvb2xlYW5cbiAgICBpbW11dGFibGUsXG4gICAgLy8gVW5peCB0aW1lIGluIG1pbGxpc2Vjb25kc1xuICAgIHRpbWVzdGFtcCxcbiAgICBmdWxsUGF0aCxcbiAgfSA9IGNhY2hlZEFwcEluZm87XG4gIGlmIChsYXN0TW9kaWZpZWQgJiYgY3VycmVudE1vZGlmaWVkKSB7XG4gICAgaWYgKGN1cnJlbnRNb2RpZmllZC5nZXRUaW1lKCkgPD0gbGFzdE1vZGlmaWVkLmdldFRpbWUoKSkge1xuICAgICAgbG9nZ2VyLmRlYnVnKGBUaGUgYXBwbGljYXRpb24gYXQgJHtsaW5rfSBoYXMgbm90IGJlZW4gbW9kaWZpZWQgc2luY2UgJHtsYXN0TW9kaWZpZWR9YCk7XG4gICAgICByZXR1cm4gZnVsbFBhdGg7XG4gICAgfVxuICAgIGxvZ2dlci5kZWJ1ZyhgVGhlIGFwcGxpY2F0aW9uIGF0ICR7bGlua30gaGFzIGJlZW4gbW9kaWZpZWQgc2luY2UgJHtsYXN0TW9kaWZpZWR9YCk7XG4gICAgcmV0dXJuIHJlZnJlc2goKTtcbiAgfVxuICBpZiAoaW1tdXRhYmxlICYmIGN1cnJlbnRJbW11dGFibGUpIHtcbiAgICBsb2dnZXIuZGVidWcoYFRoZSBhcHBsaWNhdGlvbiBhdCAke2xpbmt9IGlzIGltbXV0YWJsZWApO1xuICAgIHJldHVybiBmdWxsUGF0aDtcbiAgfVxuICBpZiAoY3VycmVudE1heEFnZSAmJiB0aW1lc3RhbXApIHtcbiAgICBjb25zdCBtc0xlZnQgPSB0aW1lc3RhbXAgKyBjdXJyZW50TWF4QWdlICogMTAwMCAtIERhdGUubm93KCk7XG4gICAgaWYgKG1zTGVmdCA+IDApIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhgVGhlIGNhY2hlZCBhcHBsaWNhdGlvbiAnJHtwYXRoLmJhc2VuYW1lKGZ1bGxQYXRoKX0nIHdpbGwgZXhwaXJlIGluICR7bXNMZWZ0IC8gMTAwMH1zYCk7XG4gICAgICByZXR1cm4gZnVsbFBhdGg7XG4gICAgfVxuICAgIGxvZ2dlci5kZWJ1ZyhgVGhlIGNhY2hlZCBhcHBsaWNhdGlvbiAnJHtwYXRoLmJhc2VuYW1lKGZ1bGxQYXRoKX0nIGhhcyBleHBpcmVkYCk7XG4gIH1cbiAgcmV0dXJuIHJlZnJlc2goKTtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5QXBwRXh0ZW5zaW9uIChhcHAsIHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMpIHtcbiAgaWYgKHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMubWFwKF8udG9Mb3dlcikuaW5jbHVkZXMoXy50b0xvd2VyKHBhdGguZXh0bmFtZShhcHApKSkpIHtcbiAgICByZXR1cm4gYXBwO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgTmV3IGFwcCBwYXRoICcke2FwcH0nIGRpZCBub3QgaGF2ZSBgICtcbiAgICBgJHt1dGlsLnBsdXJhbGl6ZSgnZXh0ZW5zaW9uJywgc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucy5sZW5ndGgsIGZhbHNlKX06IGAgK1xuICAgIHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBjYWxjdWxhdGVGb2xkZXJJbnRlZ3JpdHkgKGZvbGRlclBhdGgpIHtcbiAgcmV0dXJuIChhd2FpdCBmcy5nbG9iKCcqKi8qJywge2N3ZDogZm9sZGVyUGF0aCwgc3RyaWN0OiBmYWxzZSwgbm9zb3J0OiB0cnVlfSkpLmxlbmd0aDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY2FsY3VsYXRlRmlsZUludGVncml0eSAoZmlsZVBhdGgpIHtcbiAgcmV0dXJuIGF3YWl0IGZzLmhhc2goZmlsZVBhdGgpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBpc0FwcEludGVncml0eU9rIChjdXJyZW50UGF0aCwgZXhwZWN0ZWRJbnRlZ3JpdHkgPSB7fSkge1xuICBpZiAoIWF3YWl0IGZzLmV4aXN0cyhjdXJyZW50UGF0aCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBGb2xkZXIgaW50ZWdyaXR5IGNoZWNrIGlzIHNpbXBsZTpcbiAgLy8gVmVyaWZ5IHRoZSBwcmV2aW91cyBhbW91bnQgb2YgZmlsZXMgaXMgbm90IGdyZWF0ZXIgdGhhbiB0aGUgY3VycmVudCBvbmUuXG4gIC8vIFdlIGRvbid0IHdhbnQgdG8gdXNlIGVxdWFsaXR5IGNvbXBhcmlzb24gYmVjYXVzZSBvZiBhbiBhc3N1bXB0aW9uIHRoYXQgdGhlIE9TIG1pZ2h0XG4gIC8vIGNyZWF0ZSBzb21lIHVud2FudGVkIHNlcnZpY2UgZmlsZXMvY2FjaGVkIGluc2lkZSBvZiB0aGF0IGZvbGRlciBvciBpdHMgc3ViZm9sZGVycy5cbiAgLy8gT2ZjLCB2YWxpZGF0aW5nIHRoZSBoYXNoIHN1bSBvZiBlYWNoIGZpbGUgKG9yIGF0IGxlYXN0IG9mIGZpbGUgcGF0aCkgd291bGQgYmUgbXVjaFxuICAvLyBtb3JlIHByZWNpc2UsIGJ1dCB3ZSBkb24ndCBuZWVkIHRvIGJlIHZlcnkgcHJlY2lzZSBoZXJlIGFuZCBhbHNvIGRvbid0IHdhbnQgdG9cbiAgLy8gb3ZlcnVzZSBSQU0gYW5kIGhhdmUgYSBwZXJmb3JtYW5jZSBkcm9wLlxuICByZXR1cm4gKGF3YWl0IGZzLnN0YXQoY3VycmVudFBhdGgpKS5pc0RpcmVjdG9yeSgpXG4gICAgPyBhd2FpdCBjYWxjdWxhdGVGb2xkZXJJbnRlZ3JpdHkoY3VycmVudFBhdGgpID49IGV4cGVjdGVkSW50ZWdyaXR5Py5mb2xkZXJcbiAgICA6IGF3YWl0IGNhbGN1bGF0ZUZpbGVJbnRlZ3JpdHkoY3VycmVudFBhdGgpID09PSBleHBlY3RlZEludGVncml0eT8uZmlsZTtcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiBQb3N0UHJvY2Vzc09wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7P09iamVjdH0gY2FjaGVkQXBwSW5mbyBUaGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHByZXZpb3VzbHkgY2FjaGVkIGFwcCBpbnN0YW5jZSAoaWYgZXhpc3RzKTpcbiAqICAgIC0gcGFja2FnZUhhc2g6IFNIQTEgaGFzaCBvZiB0aGUgcGFja2FnZSBpZiBpdCBpcyBhIGZpbGUgYW5kIG5vdCBhIGZvbGRlclxuICogICAgLSBsYXN0TW9kaWZpZWQ6IE9wdGlvbmFsIERhdGUgaW5zdGFuY2UsIHRoZSB2YWx1ZSBvZiBmaWxlJ3MgYExhc3QtTW9kaWZpZWRgIGhlYWRlclxuICogICAgLSBpbW11dGFibGU6IE9wdGlvbmFsIGJvb2xlYW4gdmFsdWUuIENvbnRhaW5zIHRydWUgaWYgdGhlIGZpbGUgaGFzIGFuIGBpbW11dGFibGVgIG1hcmtcbiAqICAgICAgICAgICAgICAgICBpbiBgQ2FjaGUtY29udHJvbGAgaGVhZGVyXG4gKiAgICAtIG1heEFnZTogT3B0aW9uYWwgaW50ZWdlciByZXByZXNlbnRhdGlvbiBvZiBgbWF4QWdlYCBwYXJhbWV0ZXIgaW4gYENhY2hlLWNvbnRyb2xgIGhlYWRlclxuICogICAgLSB0aW1lc3RhbXA6IFRoZSB0aW1lc3RhbXAgdGhpcyBpdGVtIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBjYWNoZSAobWVhc3VyZWQgaW4gVW5peCBlcG9jaFxuICogICAgICAgICAgICAgICAgIG1pbGxpc2Vjb25kcylcbiAqICAgIC0gaW50ZWdyaXR5OiBBbiBvYmplY3QgY29udGFpbmluZyBlaXRoZXIgYGZpbGVgIHByb3BlcnR5IHdpdGggU0hBMSBoYXNoIG9mIHRoZSBmaWxlXG4gKiAgICAgICAgICAgICAgICAgb3IgYGZvbGRlcmAgcHJvcGVydHkgd2l0aCB0b3RhbCBhbW91bnQgb2YgY2FjaGVkIGZpbGVzIGFuZCBzdWJmb2xkZXJzXG4gKiAgICAtIGZ1bGxQYXRoOiB0aGUgZnVsbCBwYXRoIHRvIHRoZSBjYWNoZWQgYXBwXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGlzVXJsIFdoZXRoZXIgdGhlIGFwcCBoYXMgYmVlbiBkb3dubG9hZGVkIGZyb20gYSByZW1vdGUgVVJMXG4gKiBAcHJvcGVydHkgez9PYmplY3R9IGhlYWRlcnMgT3B0aW9uYWwgaGVhZGVycyBvYmplY3QuIE9ubHkgcHJlc2VudCBpZiBgaXNVcmxgIGlzIHRydWUgYW5kIGlmIHRoZSBzZXJ2ZXJcbiAqIHJlc3BvbmRzIHRvIEhFQUQgcmVxdWVzdHMuIEFsbCBoZWFkZXIgbmFtZXMgYXJlIG5vcm1hbGl6ZWQgdG8gbG93ZXJjYXNlLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGFwcFBhdGggQSBzdHJpbmcgY29udGFpbmluZyBmdWxsIHBhdGggdG8gdGhlIHByZXByb2Nlc3NlZCBhcHBsaWNhdGlvbiBwYWNrYWdlIChlaXRoZXJcbiAqIGRvd25sb2FkZWQgb3IgYSBsb2NhbCBvbmUpXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiBQb3N0UHJvY2Vzc1Jlc3VsdFxuICogQHByb3BlcnR5IHtzdHJpbmd9IGFwcFBhdGggVGhlIGZ1bGwgcGFzdCB0byB0aGUgcG9zdC1wcm9jZXNzZWQgYXBwbGljYXRpb24gcGFja2FnZSBvbiB0aGVcbiAqIGxvY2FsIGZpbGUgc3lzdGVtIChtaWdodCBiZSBhIGZpbGUgb3IgYSBmb2xkZXIgcGF0aClcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIENvbmZpZ3VyZUFwcE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7KG9iajogUG9zdFByb2Nlc3NPcHRpb25zKSA9PiAoUHJvbWlzZTxQb3N0UHJvY2Vzc1Jlc3VsdHx1bmRlZmluZWQ+fFBvc3RQcm9jZXNzUmVzdWx0fHVuZGVmaW5lZCl9IG9uUG9zdFByb2Nlc3NcbiAqIE9wdGlvbmFsIGZ1bmN0aW9uLCB3aGljaCBzaG91bGQgYmUgYXBwbGllZFxuICogdG8gdGhlIGFwcGxpY2F0aW9uIGFmdGVyIGl0IGlzIGRvd25sb2FkZWQvcHJlcHJvY2Vzc2VkLiBUaGlzIGZ1bmN0aW9uIG1heSBiZSBhc3luY1xuICogYW5kIGlzIGV4cGVjdGVkIHRvIGFjY2VwdCBzaW5nbGUgb2JqZWN0IHBhcmFtZXRlci5cbiAqIFRoZSBmdW5jdGlvbiBpcyBleHBlY3RlZCB0byBlaXRoZXIgcmV0dXJuIGEgZmFsc3kgdmFsdWUsIHdoaWNoIG1lYW5zIHRoZSBhcHAgbXVzdCBub3QgYmVcbiAqIGNhY2hlZCBhbmQgYSBmcmVzaCBjb3B5IG9mIGl0IGlzIGRvd25sb2FkZWQgZWFjaCB0aW1lLiBJZiB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYW4gb2JqZWN0XG4gKiBjb250YWluaW5nIGBhcHBQYXRoYCBwcm9wZXJ0eSB0aGVuIHRoZSBpbnRlZ3JpdHkgb2YgaXQgd2lsbCBiZSB2ZXJpZmllZCBhbmQgc3RvcmVkIGludG9cbiAqIHRoZSBjYWNoZS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IHN1cHBvcnRlZEV4dGVuc2lvbnMgTGlzdCBvZiBzdXBwb3J0ZWQgYXBwbGljYXRpb24gZXh0ZW5zaW9ucyAoXG4gKiBpbmNsdWRpbmcgc3RhcnRpbmcgZG90cykuIFRoaXMgcHJvcGVydHkgaXMgbWFuZGF0b3J5IGFuZCBtdXN0IG5vdCBiZSBlbXB0eS5cbiAqL1xuXG4vKipcbiAqIFByZXBhcmVzIGFuIGFwcCB0byBiZSB1c2VkIGluIGFuIGF1dG9tYXRlZCB0ZXN0LiBUaGUgYXBwIGdldHMgY2FjaGVkIGF1dG9tYXRpY2FsbHlcbiAqIGlmIGl0IGlzIGFuIGFyY2hpdmUgb3IgaWYgaXQgaXMgZG93bmxvYWRlZCBmcm9tIGFuIFVSTC5cbiAqIElmIHRoZSBkb3dubG9hZGVkIGFwcCBoYXMgYC56aXBgIGV4dGVuc2lvbiwgdGhpcyBtZXRob2Qgd2lsbCB1bnppcCBpdC5cbiAqIFRoZSB1bnppcCBkb2VzIG5vdCB3b3JrIHdoZW4gYG9uUG9zdFByb2Nlc3NgIGlzIHByb3ZpZGVkLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcHAgRWl0aGVyIGEgZnVsbCBwYXRoIHRvIHRoZSBhcHAgb3IgYSByZW1vdGUgVVJMXG4gKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXXxDb25maWd1cmVBcHBPcHRpb25zfSBvcHRpb25zXG4gKiBAcmV0dXJucyBUaGUgZnVsbCBwYXRoIHRvIHRoZSByZXN1bHRpbmcgYXBwbGljYXRpb24gYnVuZGxlXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGNvbmZpZ3VyZUFwcCAoYXBwLCBvcHRpb25zID0ge30pIHtcbiAgaWYgKCFfLmlzU3RyaW5nKGFwcCkpIHtcbiAgICAvLyBpbW1lZGlhdGVseSBzaG9ydGNpcmN1aXQgaWYgbm90IGdpdmVuIGFuIGFwcFxuICAgIHJldHVybjtcbiAgfVxuXG4gIGxldCBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zO1xuICBjb25zdCB7XG4gICAgb25Qb3N0UHJvY2VzcyxcbiAgfSA9IF8uaXNQbGFpbk9iamVjdChvcHRpb25zKSA/IG9wdGlvbnMgOiB7fTtcbiAgaWYgKF8uaXNTdHJpbmcob3B0aW9ucykpIHtcbiAgICBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zID0gW29wdGlvbnNdO1xuICB9IGVsc2UgaWYgKF8uaXNBcnJheShvcHRpb25zKSkge1xuICAgIHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMgPSBvcHRpb25zO1xuICB9IGVsc2UgaWYgKF8uaXNQbGFpbk9iamVjdChvcHRpb25zKSkge1xuICAgIHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMgPSBvcHRpb25zLnN1cHBvcnRlZEV4dGVuc2lvbnM7XG4gIH1cbiAgaWYgKF8uaXNFbXB0eShzdXBwb3J0ZWRBcHBFeHRlbnNpb25zKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgT25lIG9yIG1vcmUgc3VwcG9ydGVkIGFwcCBleHRlbnNpb25zIG11c3QgYmUgcHJvdmlkZWRgKTtcbiAgfVxuXG4gIGxldCBuZXdBcHAgPSBhcHA7XG4gIGxldCBzaG91bGRVbnppcEFwcCA9IGZhbHNlO1xuICBsZXQgcGFja2FnZUhhc2ggPSBudWxsO1xuICBsZXQgaGVhZGVycyA9IG51bGw7XG4gIGNvbnN0IHJlbW90ZUFwcFByb3BzID0ge1xuICAgIGxhc3RNb2RpZmllZDogbnVsbCxcbiAgICBpbW11dGFibGU6IGZhbHNlLFxuICAgIG1heEFnZTogbnVsbCxcbiAgfTtcbiAgY29uc3Qge3Byb3RvY29sLCBwYXRobmFtZX0gPSB1cmwucGFyc2UobmV3QXBwKTtcbiAgY29uc3QgaXNVcmwgPSBbJ2h0dHA6JywgJ2h0dHBzOiddLmluY2x1ZGVzKHByb3RvY29sKTtcblxuICBjb25zdCBjYWNoZWRBcHBJbmZvID0gQVBQTElDQVRJT05TX0NBQ0hFLmdldChhcHApO1xuXG4gIHJldHVybiBhd2FpdCBBUFBMSUNBVElPTlNfQ0FDSEVfR1VBUkQuYWNxdWlyZShhcHAsIGFzeW5jICgpID0+IHtcbiAgICBpZiAoaXNVcmwpIHtcbiAgICAgIC8vIFVzZSB0aGUgYXBwIGZyb20gcmVtb3RlIFVSTFxuICAgICAgbG9nZ2VyLmluZm8oYFVzaW5nIGRvd25sb2FkYWJsZSBhcHAgJyR7bmV3QXBwfSdgKTtcbiAgICAgIGhlYWRlcnMgPSBhd2FpdCByZXRyaWV2ZUhlYWRlcnMobmV3QXBwKTtcbiAgICAgIGlmICghXy5pc0VtcHR5KGhlYWRlcnMpKSB7XG4gICAgICAgIGlmIChoZWFkZXJzWydsYXN0LW1vZGlmaWVkJ10pIHtcbiAgICAgICAgICByZW1vdGVBcHBQcm9wcy5sYXN0TW9kaWZpZWQgPSBuZXcgRGF0ZShoZWFkZXJzWydsYXN0LW1vZGlmaWVkJ10pO1xuICAgICAgICB9XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhgTGFzdC1Nb2RpZmllZDogJHtoZWFkZXJzWydsYXN0LW1vZGlmaWVkJ119YCk7XG4gICAgICAgIGlmIChoZWFkZXJzWydjYWNoZS1jb250cm9sJ10pIHtcbiAgICAgICAgICByZW1vdGVBcHBQcm9wcy5pbW11dGFibGUgPSAvXFxiaW1tdXRhYmxlXFxiL2kudGVzdChoZWFkZXJzWydjYWNoZS1jb250cm9sJ10pO1xuICAgICAgICAgIGNvbnN0IG1heEFnZU1hdGNoID0gL1xcYm1heC1hZ2U9KFxcZCspXFxiL2kuZXhlYyhoZWFkZXJzWydjYWNoZS1jb250cm9sJ10pO1xuICAgICAgICAgIGlmIChtYXhBZ2VNYXRjaCkge1xuICAgICAgICAgICAgcmVtb3RlQXBwUHJvcHMubWF4QWdlID0gcGFyc2VJbnQobWF4QWdlTWF0Y2hbMV0sIDEwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbG9nZ2VyLmRlYnVnKGBDYWNoZS1Db250cm9sOiAke2hlYWRlcnNbJ2NhY2hlLWNvbnRyb2wnXX1gKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNhY2hlZFBhdGggPSBnZXRDYWNoZWRBcHBsaWNhdGlvblBhdGgoYXBwLCByZW1vdGVBcHBQcm9wcywgY2FjaGVkQXBwSW5mbyk7XG4gICAgICBpZiAoY2FjaGVkUGF0aCkge1xuICAgICAgICBpZiAoYXdhaXQgaXNBcHBJbnRlZ3JpdHlPayhjYWNoZWRQYXRoLCBjYWNoZWRBcHBJbmZvPy5pbnRlZ3JpdHkpKSB7XG4gICAgICAgICAgbG9nZ2VyLmluZm8oYFJldXNpbmcgcHJldmlvdXNseSBkb3dubG9hZGVkIGFwcGxpY2F0aW9uIGF0ICcke2NhY2hlZFBhdGh9J2ApO1xuICAgICAgICAgIHJldHVybiB2ZXJpZnlBcHBFeHRlbnNpb24oY2FjaGVkUGF0aCwgc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgbG9nZ2VyLmluZm8oYFRoZSBhcHBsaWNhdGlvbiBhdCAnJHtjYWNoZWRQYXRofScgZG9lcyBub3QgZXhpc3QgYW55bW9yZSBgICtcbiAgICAgICAgICBgb3IgaXRzIGludGVncml0eSBoYXMgYmVlbiBkYW1hZ2VkLiBEZWxldGluZyBpdCBmcm9tIHRoZSBpbnRlcm5hbCBjYWNoZWApO1xuICAgICAgICBBUFBMSUNBVElPTlNfQ0FDSEUuZGVsZXRlKGFwcCk7XG4gICAgICB9XG5cbiAgICAgIGxldCBmaWxlTmFtZSA9IG51bGw7XG4gICAgICBjb25zdCBiYXNlbmFtZSA9IGZzLnNhbml0aXplTmFtZShwYXRoLmJhc2VuYW1lKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpLCB7XG4gICAgICAgIHJlcGxhY2VtZW50OiBTQU5JVElaRV9SRVBMQUNFTUVOVFxuICAgICAgfSk7XG4gICAgICBjb25zdCBleHRuYW1lID0gcGF0aC5leHRuYW1lKGJhc2VuYW1lKTtcbiAgICAgIC8vIHRvIGRldGVybWluZSBpZiB3ZSBuZWVkIHRvIHVuemlwIHRoZSBhcHAsIHdlIGhhdmUgYSBudW1iZXIgb2YgcGxhY2VzXG4gICAgICAvLyB0byBsb29rOiBjb250ZW50IHR5cGUsIGNvbnRlbnQgZGlzcG9zaXRpb24sIG9yIHRoZSBmaWxlIGV4dGVuc2lvblxuICAgICAgaWYgKFpJUF9FWFRTLmluY2x1ZGVzKGV4dG5hbWUpKSB7XG4gICAgICAgIGZpbGVOYW1lID0gYmFzZW5hbWU7XG4gICAgICAgIHNob3VsZFVuemlwQXBwID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChoZWFkZXJzWydjb250ZW50LXR5cGUnXSkge1xuICAgICAgICBjb25zdCBjdCA9IGhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddO1xuICAgICAgICBsb2dnZXIuZGVidWcoYENvbnRlbnQtVHlwZTogJHtjdH1gKTtcbiAgICAgICAgLy8gdGhlIGZpbGV0eXBlIG1heSBub3QgYmUgb2J2aW91cyBmb3IgY2VydGFpbiB1cmxzLCBzbyBjaGVjayB0aGUgbWltZSB0eXBlIHRvb1xuICAgICAgICBpZiAoWklQX01JTUVfVFlQRVMuc29tZSgobWltZVR5cGUpID0+IG5ldyBSZWdFeHAoYFxcXFxiJHtfLmVzY2FwZVJlZ0V4cChtaW1lVHlwZSl9XFxcXGJgKS50ZXN0KGN0KSkpIHtcbiAgICAgICAgICBpZiAoIWZpbGVOYW1lKSB7XG4gICAgICAgICAgICBmaWxlTmFtZSA9IGAke0RFRkFVTFRfQkFTRU5BTUV9LnppcGA7XG4gICAgICAgICAgfVxuICAgICAgICAgIHNob3VsZFVuemlwQXBwID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGhlYWRlcnNbJ2NvbnRlbnQtZGlzcG9zaXRpb24nXSAmJiAvXmF0dGFjaG1lbnQvaS50ZXN0KGhlYWRlcnNbJ2NvbnRlbnQtZGlzcG9zaXRpb24nXSkpIHtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKGBDb250ZW50LURpc3Bvc2l0aW9uOiAke2hlYWRlcnNbJ2NvbnRlbnQtZGlzcG9zaXRpb24nXX1gKTtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSAvZmlsZW5hbWU9XCIoW15cIl0rKS9pLmV4ZWMoaGVhZGVyc1snY29udGVudC1kaXNwb3NpdGlvbiddKTtcbiAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgZmlsZU5hbWUgPSBmcy5zYW5pdGl6ZU5hbWUobWF0Y2hbMV0sIHtcbiAgICAgICAgICAgIHJlcGxhY2VtZW50OiBTQU5JVElaRV9SRVBMQUNFTUVOVFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHNob3VsZFVuemlwQXBwID0gc2hvdWxkVW56aXBBcHAgfHwgWklQX0VYVFMuaW5jbHVkZXMocGF0aC5leHRuYW1lKGZpbGVOYW1lKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghZmlsZU5hbWUpIHtcbiAgICAgICAgLy8gYXNzaWduIHRoZSBkZWZhdWx0IGZpbGUgbmFtZSBhbmQgdGhlIGV4dGVuc2lvbiBpZiBub25lIGhhcyBiZWVuIGRldGVjdGVkXG4gICAgICAgIGNvbnN0IHJlc3VsdGluZ05hbWUgPSBiYXNlbmFtZVxuICAgICAgICAgID8gYmFzZW5hbWUuc3Vic3RyaW5nKDAsIGJhc2VuYW1lLmxlbmd0aCAtIGV4dG5hbWUubGVuZ3RoKVxuICAgICAgICAgIDogREVGQVVMVF9CQVNFTkFNRTtcbiAgICAgICAgbGV0IHJlc3VsdGluZ0V4dCA9IGV4dG5hbWU7XG4gICAgICAgIGlmICghc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucy5pbmNsdWRlcyhyZXN1bHRpbmdFeHQpKSB7XG4gICAgICAgICAgbG9nZ2VyLmluZm8oYFRoZSBjdXJyZW50IGZpbGUgZXh0ZW5zaW9uICcke3Jlc3VsdGluZ0V4dH0nIGlzIG5vdCBzdXBwb3J0ZWQuIGAgK1xuICAgICAgICAgICAgYERlZmF1bHRpbmcgdG8gJyR7Xy5maXJzdChzdXBwb3J0ZWRBcHBFeHRlbnNpb25zKX0nYCk7XG4gICAgICAgICAgcmVzdWx0aW5nRXh0ID0gXy5maXJzdChzdXBwb3J0ZWRBcHBFeHRlbnNpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBmaWxlTmFtZSA9IGAke3Jlc3VsdGluZ05hbWV9JHtyZXN1bHRpbmdFeHR9YDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHRhcmdldFBhdGggPSBhd2FpdCB0ZW1wRGlyLnBhdGgoe1xuICAgICAgICBwcmVmaXg6IGZpbGVOYW1lLFxuICAgICAgICBzdWZmaXg6ICcnLFxuICAgICAgfSk7XG4gICAgICBuZXdBcHAgPSBhd2FpdCBkb3dubG9hZEFwcChuZXdBcHAsIHRhcmdldFBhdGgpO1xuICAgIH0gZWxzZSBpZiAoYXdhaXQgZnMuZXhpc3RzKG5ld0FwcCkpIHtcbiAgICAgIC8vIFVzZSB0aGUgbG9jYWwgYXBwXG4gICAgICBsb2dnZXIuaW5mbyhgVXNpbmcgbG9jYWwgYXBwICcke25ld0FwcH0nYCk7XG4gICAgICBzaG91bGRVbnppcEFwcCA9IFpJUF9FWFRTLmluY2x1ZGVzKHBhdGguZXh0bmFtZShuZXdBcHApKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGVycm9yTWVzc2FnZSA9IGBUaGUgYXBwbGljYXRpb24gYXQgJyR7bmV3QXBwfScgZG9lcyBub3QgZXhpc3Qgb3IgaXMgbm90IGFjY2Vzc2libGVgO1xuICAgICAgLy8gcHJvdG9jb2wgdmFsdWUgZm9yICdDOlxcXFx0ZW1wJyBpcyAnYzonLCBzbyB3ZSBjaGVjayB0aGUgbGVuZ3RoIGFzIHdlbGxcbiAgICAgIGlmIChfLmlzU3RyaW5nKHByb3RvY29sKSAmJiBwcm90b2NvbC5sZW5ndGggPiAyKSB7XG4gICAgICAgIGVycm9yTWVzc2FnZSA9IGBUaGUgcHJvdG9jb2wgJyR7cHJvdG9jb2x9JyB1c2VkIGluICcke25ld0FwcH0nIGlzIG5vdCBzdXBwb3J0ZWQuIGAgK1xuICAgICAgICAgIGBPbmx5IGh0dHA6IGFuZCBodHRwczogcHJvdG9jb2xzIGFyZSBzdXBwb3J0ZWRgO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yTWVzc2FnZSk7XG4gICAgfVxuXG4gICAgY29uc3QgaXNQYWNrYWdlQUZpbGUgPSAoYXdhaXQgZnMuc3RhdChuZXdBcHApKS5pc0ZpbGUoKTtcbiAgICBpZiAoaXNQYWNrYWdlQUZpbGUpIHtcbiAgICAgIHBhY2thZ2VIYXNoID0gYXdhaXQgY2FsY3VsYXRlRmlsZUludGVncml0eShuZXdBcHApO1xuICAgIH1cblxuICAgIGlmIChpc1BhY2thZ2VBRmlsZSAmJiBzaG91bGRVbnppcEFwcCAmJiAhXy5pc0Z1bmN0aW9uKG9uUG9zdFByb2Nlc3MpKSB7XG4gICAgICBjb25zdCBhcmNoaXZlUGF0aCA9IG5ld0FwcDtcbiAgICAgIGlmIChwYWNrYWdlSGFzaCA9PT0gY2FjaGVkQXBwSW5mbz8ucGFja2FnZUhhc2gpIHtcbiAgICAgICAgY29uc3Qge2Z1bGxQYXRofSA9IGNhY2hlZEFwcEluZm87XG4gICAgICAgIGlmIChhd2FpdCBpc0FwcEludGVncml0eU9rKGZ1bGxQYXRoLCBjYWNoZWRBcHBJbmZvPy5pbnRlZ3JpdHkpKSB7XG4gICAgICAgICAgaWYgKGFyY2hpdmVQYXRoICE9PSBhcHApIHtcbiAgICAgICAgICAgIGF3YWl0IGZzLnJpbXJhZihhcmNoaXZlUGF0aCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxvZ2dlci5pbmZvKGBXaWxsIHJldXNlIHByZXZpb3VzbHkgY2FjaGVkIGFwcGxpY2F0aW9uIGF0ICcke2Z1bGxQYXRofSdgKTtcbiAgICAgICAgICByZXR1cm4gdmVyaWZ5QXBwRXh0ZW5zaW9uKGZ1bGxQYXRoLCBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBsb2dnZXIuaW5mbyhgVGhlIGFwcGxpY2F0aW9uIGF0ICcke2Z1bGxQYXRofScgZG9lcyBub3QgZXhpc3QgYW55bW9yZSBgICtcbiAgICAgICAgICBgb3IgaXRzIGludGVncml0eSBoYXMgYmVlbiBkYW1hZ2VkLiBEZWxldGluZyBpdCBmcm9tIHRoZSBjYWNoZWApO1xuICAgICAgICBBUFBMSUNBVElPTlNfQ0FDSEUuZGVsZXRlKGFwcCk7XG4gICAgICB9XG4gICAgICBjb25zdCB0bXBSb290ID0gYXdhaXQgdGVtcERpci5vcGVuRGlyKCk7XG4gICAgICB0cnkge1xuICAgICAgICBuZXdBcHAgPSBhd2FpdCB1bnppcEFwcChhcmNoaXZlUGF0aCwgdG1wUm9vdCwgc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucyk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpZiAobmV3QXBwICE9PSBhcmNoaXZlUGF0aCAmJiBhcmNoaXZlUGF0aCAhPT0gYXBwKSB7XG4gICAgICAgICAgYXdhaXQgZnMucmltcmFmKGFyY2hpdmVQYXRoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbG9nZ2VyLmluZm8oYFVuemlwcGVkIGxvY2FsIGFwcCB0byAnJHtuZXdBcHB9J2ApO1xuICAgIH0gZWxzZSBpZiAoIXBhdGguaXNBYnNvbHV0ZShuZXdBcHApKSB7XG4gICAgICBuZXdBcHAgPSBwYXRoLnJlc29sdmUocHJvY2Vzcy5jd2QoKSwgbmV3QXBwKTtcbiAgICAgIGxvZ2dlci53YXJuKGBUaGUgY3VycmVudCBhcHBsaWNhdGlvbiBwYXRoICcke2FwcH0nIGlzIG5vdCBhYnNvbHV0ZSBgICtcbiAgICAgICAgYGFuZCBoYXMgYmVlbiByZXdyaXR0ZW4gdG8gJyR7bmV3QXBwfScuIENvbnNpZGVyIHVzaW5nIGFic29sdXRlIHBhdGhzIHJhdGhlciB0aGFuIHJlbGF0aXZlYCk7XG4gICAgICBhcHAgPSBuZXdBcHA7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RvcmVBcHBJbkNhY2hlID0gYXN5bmMgKGFwcFBhdGhUb0NhY2hlKSA9PiB7XG4gICAgICBjb25zdCBjYWNoZWRGdWxsUGF0aCA9IGNhY2hlZEFwcEluZm8/LmZ1bGxQYXRoO1xuICAgICAgaWYgKGNhY2hlZEZ1bGxQYXRoICYmIGNhY2hlZEZ1bGxQYXRoICE9PSBhcHBQYXRoVG9DYWNoZSkge1xuICAgICAgICBhd2FpdCBmcy5yaW1yYWYoY2FjaGVkRnVsbFBhdGgpO1xuICAgICAgfVxuICAgICAgY29uc3QgaW50ZWdyaXR5ID0ge307XG4gICAgICBpZiAoKGF3YWl0IGZzLnN0YXQoYXBwUGF0aFRvQ2FjaGUpKS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgIGludGVncml0eS5mb2xkZXIgPSBhd2FpdCBjYWxjdWxhdGVGb2xkZXJJbnRlZ3JpdHkoYXBwUGF0aFRvQ2FjaGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW50ZWdyaXR5LmZpbGUgPSBhd2FpdCBjYWxjdWxhdGVGaWxlSW50ZWdyaXR5KGFwcFBhdGhUb0NhY2hlKTtcbiAgICAgIH1cbiAgICAgIEFQUExJQ0FUSU9OU19DQUNIRS5zZXQoYXBwLCB7XG4gICAgICAgIC4uLnJlbW90ZUFwcFByb3BzLFxuICAgICAgICB0aW1lc3RhbXA6IERhdGUubm93KCksXG4gICAgICAgIHBhY2thZ2VIYXNoLFxuICAgICAgICBpbnRlZ3JpdHksXG4gICAgICAgIGZ1bGxQYXRoOiBhcHBQYXRoVG9DYWNoZSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGFwcFBhdGhUb0NhY2hlO1xuICAgIH07XG5cbiAgICBpZiAoXy5pc0Z1bmN0aW9uKG9uUG9zdFByb2Nlc3MpKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBvblBvc3RQcm9jZXNzKHtcbiAgICAgICAgY2FjaGVkQXBwSW5mbzogXy5jbG9uZShjYWNoZWRBcHBJbmZvKSxcbiAgICAgICAgaXNVcmwsXG4gICAgICAgIGhlYWRlcnM6IF8uY2xvbmUoaGVhZGVycyksXG4gICAgICAgIGFwcFBhdGg6IG5ld0FwcCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuICghcmVzdWx0Py5hcHBQYXRoIHx8IGFwcCA9PT0gcmVzdWx0Py5hcHBQYXRoIHx8ICFhd2FpdCBmcy5leGlzdHMocmVzdWx0Py5hcHBQYXRoKSlcbiAgICAgICAgPyBuZXdBcHBcbiAgICAgICAgOiBhd2FpdCBzdG9yZUFwcEluQ2FjaGUocmVzdWx0LmFwcFBhdGgpO1xuICAgIH1cblxuICAgIHZlcmlmeUFwcEV4dGVuc2lvbihuZXdBcHAsIHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMpO1xuICAgIHJldHVybiAoYXBwICE9PSBuZXdBcHAgJiYgKHBhY2thZ2VIYXNoIHx8IF8udmFsdWVzKHJlbW90ZUFwcFByb3BzKS5zb21lKEJvb2xlYW4pKSlcbiAgICAgID8gYXdhaXQgc3RvcmVBcHBJbkNhY2hlKG5ld0FwcClcbiAgICAgIDogbmV3QXBwO1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZG93bmxvYWRBcHAgKGFwcCwgdGFyZ2V0UGF0aCkge1xuICBjb25zdCB7aHJlZn0gPSB1cmwucGFyc2UoYXBwKTtcbiAgdHJ5IHtcbiAgICBhd2FpdCBuZXQuZG93bmxvYWRGaWxlKGhyZWYsIHRhcmdldFBhdGgsIHtcbiAgICAgIHRpbWVvdXQ6IEFQUF9ET1dOTE9BRF9USU1FT1VUX01TLFxuICAgIH0pO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBkb3dubG9hZCB0aGUgYXBwOiAke2Vyci5tZXNzYWdlfWApO1xuICB9XG4gIHJldHVybiB0YXJnZXRQYXRoO1xufVxuXG4vKipcbiAqIEV4dHJhY3RzIHRoZSBidW5kbGUgZnJvbSBhbiBhcmNoaXZlIGludG8gdGhlIGdpdmVuIGZvbGRlclxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB6aXBQYXRoIEZ1bGwgcGF0aCB0byB0aGUgYXJjaGl2ZSBjb250YWluaW5nIHRoZSBidW5kbGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBkc3RSb290IEZ1bGwgcGF0aCB0byB0aGUgZm9sZGVyIHdoZXJlIHRoZSBleHRyYWN0ZWQgYnVuZGxlXG4gKiBzaG91bGQgYmUgcGxhY2VkXG4gKiBAcGFyYW0ge0FycmF5PHN0cmluZz58c3RyaW5nfSBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zIFRoZSBsaXN0IG9mIGV4dGVuc2lvbnNcbiAqIHRoZSB0YXJnZXQgYXBwbGljYXRpb24gYnVuZGxlIHN1cHBvcnRzLCBmb3IgZXhhbXBsZSBbJy5hcGsnLCAnLmFwa3MnXSBmb3JcbiAqIEFuZHJvaWQgcGFja2FnZXNcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEZ1bGwgcGF0aCB0byB0aGUgYnVuZGxlIGluIHRoZSBkZXN0aW5hdGlvbiBmb2xkZXJcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgZ2l2ZW4gYXJjaGl2ZSBpcyBpbnZhbGlkIG9yIG5vIGFwcGxpY2F0aW9uIGJ1bmRsZXNcbiAqIGhhdmUgYmVlbiBmb3VuZCBpbnNpZGVcbiAqL1xuYXN5bmMgZnVuY3Rpb24gdW56aXBBcHAgKHppcFBhdGgsIGRzdFJvb3QsIHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMpIHtcbiAgYXdhaXQgemlwLmFzc2VydFZhbGlkWmlwKHppcFBhdGgpO1xuXG4gIGlmICghXy5pc0FycmF5KHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMpKSB7XG4gICAgc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucyA9IFtzdXBwb3J0ZWRBcHBFeHRlbnNpb25zXTtcbiAgfVxuXG4gIGNvbnN0IHRtcFJvb3QgPSBhd2FpdCB0ZW1wRGlyLm9wZW5EaXIoKTtcbiAgdHJ5IHtcbiAgICBsb2dnZXIuZGVidWcoYFVuemlwcGluZyAnJHt6aXBQYXRofSdgKTtcbiAgICBjb25zdCB0aW1lciA9IG5ldyB0aW1pbmcuVGltZXIoKS5zdGFydCgpO1xuICAgIGNvbnN0IHVzZVN5c3RlbVVuemlwRW52ID0gcHJvY2Vzcy5lbnYuQVBQSVVNX1BSRUZFUl9TWVNURU1fVU5aSVA7XG4gICAgY29uc3QgdXNlU3lzdGVtVW56aXAgPSBfLmlzRW1wdHkodXNlU3lzdGVtVW56aXBFbnYpXG4gICAgICB8fCAhWycwJywgJ2ZhbHNlJ10uaW5jbHVkZXMoXy50b0xvd2VyKHVzZVN5c3RlbVVuemlwRW52KSk7XG4gICAgLyoqXG4gICAgICogQXR0ZW1wdCB0byB1c2UgdXNlIHRoZSBzeXN0ZW0gYHVuemlwYCAoZS5nLiwgYC91c3IvYmluL3VuemlwYCkgZHVlXG4gICAgICogdG8gdGhlIHNpZ25pZmljYW50IHBlcmZvcm1hbmNlIGltcHJvdmVtZW50IGl0IHByb3ZpZGVzIG92ZXIgdGhlIG5hdGl2ZVxuICAgICAqIEpTIFwidW56aXBcIiBpbXBsZW1lbnRhdGlvbi5cbiAgICAgKiBAdHlwZSB7aW1wb3J0KCdAYXBwaXVtL3N1cHBvcnQvbGliL3ppcCcpLkV4dHJhY3RBbGxPcHRpb25zfVxuICAgICAqL1xuICAgIGNvbnN0IGV4dHJhY3Rpb25PcHRzID0ge3VzZVN5c3RlbVVuemlwfTtcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYXBwaXVtL2FwcGl1bS9pc3N1ZXMvMTQxMDBcbiAgICBpZiAocGF0aC5leHRuYW1lKHppcFBhdGgpID09PSBJUEFfRVhUKSB7XG4gICAgICBsb2dnZXIuZGVidWcoYEVuZm9yY2luZyBVVEYtOCBlbmNvZGluZyBvbiB0aGUgZXh0cmFjdGVkIGZpbGUgbmFtZXMgZm9yICcke3BhdGguYmFzZW5hbWUoemlwUGF0aCl9J2ApO1xuICAgICAgZXh0cmFjdGlvbk9wdHMuZmlsZU5hbWVzRW5jb2RpbmcgPSAndXRmOCc7XG4gICAgfVxuICAgIGF3YWl0IHppcC5leHRyYWN0QWxsVG8oemlwUGF0aCwgdG1wUm9vdCwgZXh0cmFjdGlvbk9wdHMpO1xuICAgIGNvbnN0IGdsb2JQYXR0ZXJuID0gYCoqLyouKygke3N1cHBvcnRlZEFwcEV4dGVuc2lvbnMubWFwKChleHQpID0+IGV4dC5yZXBsYWNlKC9eXFwuLywgJycpKS5qb2luKCd8Jyl9KWA7XG4gICAgY29uc3Qgc29ydGVkQnVuZGxlSXRlbXMgPSAoYXdhaXQgZnMuZ2xvYihnbG9iUGF0dGVybiwge1xuICAgICAgY3dkOiB0bXBSb290LFxuICAgICAgc3RyaWN0OiBmYWxzZSxcbiAgICAvLyBHZXQgdGhlIHRvcCBsZXZlbCBtYXRjaFxuICAgIH0pKS5zb3J0KChhLCBiKSA9PiBhLnNwbGl0KHBhdGguc2VwKS5sZW5ndGggLSBiLnNwbGl0KHBhdGguc2VwKS5sZW5ndGgpO1xuICAgIGlmIChfLmlzRW1wdHkoc29ydGVkQnVuZGxlSXRlbXMpKSB7XG4gICAgICBsb2dnZXIuZXJyb3JBbmRUaHJvdyhgQXBwIHVuemlwcGVkIE9LLCBidXQgd2UgY291bGQgbm90IGZpbmQgYW55ICcke3N1cHBvcnRlZEFwcEV4dGVuc2lvbnN9JyBgICtcbiAgICAgICAgdXRpbC5wbHVyYWxpemUoJ2J1bmRsZScsIHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMubGVuZ3RoLCBmYWxzZSkgK1xuICAgICAgICBgIGluIGl0LiBNYWtlIHN1cmUgeW91ciBhcmNoaXZlIGNvbnRhaW5zIGF0IGxlYXN0IG9uZSBwYWNrYWdlIGhhdmluZyBgICtcbiAgICAgICAgYCcke3N1cHBvcnRlZEFwcEV4dGVuc2lvbnN9JyAke3V0aWwucGx1cmFsaXplKCdleHRlbnNpb24nLCBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zLmxlbmd0aCwgZmFsc2UpfWApO1xuICAgIH1cbiAgICBsb2dnZXIuZGVidWcoYEV4dHJhY3RlZCAke3V0aWwucGx1cmFsaXplKCdidW5kbGUgaXRlbScsIHNvcnRlZEJ1bmRsZUl0ZW1zLmxlbmd0aCwgdHJ1ZSl9IGAgK1xuICAgICAgYGZyb20gJyR7emlwUGF0aH0nIGluICR7TWF0aC5yb3VuZCh0aW1lci5nZXREdXJhdGlvbigpLmFzTWlsbGlTZWNvbmRzKX1tczogJHtzb3J0ZWRCdW5kbGVJdGVtc31gKTtcbiAgICBjb25zdCBtYXRjaGVkQnVuZGxlID0gXy5maXJzdChzb3J0ZWRCdW5kbGVJdGVtcyk7XG4gICAgbG9nZ2VyLmluZm8oYEFzc3VtaW5nICcke21hdGNoZWRCdW5kbGV9JyBpcyB0aGUgY29ycmVjdCBidW5kbGVgKTtcbiAgICBjb25zdCBkc3RQYXRoID0gcGF0aC5yZXNvbHZlKGRzdFJvb3QsIHBhdGguYmFzZW5hbWUobWF0Y2hlZEJ1bmRsZSkpO1xuICAgIGF3YWl0IGZzLm12KHBhdGgucmVzb2x2ZSh0bXBSb290LCBtYXRjaGVkQnVuZGxlKSwgZHN0UGF0aCwge21rZGlycDogdHJ1ZX0pO1xuICAgIHJldHVybiBkc3RQYXRoO1xuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IGZzLnJpbXJhZih0bXBSb290KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc1BhY2thZ2VPckJ1bmRsZSAoYXBwKSB7XG4gIHJldHVybiAoL14oW2EtekEtWjAtOVxcLV9dK1xcLlthLXpBLVowLTlcXC1fXSspKyQvKS50ZXN0KGFwcCk7XG59XG5cbi8qKlxuICogRmluZHMgYWxsIGluc3RhbmNlcyAnZmlyc3RLZXknIGFuZCBjcmVhdGUgYSBkdXBsaWNhdGUgd2l0aCB0aGUga2V5ICdzZWNvbmRLZXknLFxuICogRG8gdGhlIHNhbWUgdGhpbmcgaW4gcmV2ZXJzZS4gSWYgd2UgZmluZCAnc2Vjb25kS2V5JywgY3JlYXRlIGEgZHVwbGljYXRlIHdpdGggdGhlIGtleSAnZmlyc3RLZXknLlxuICpcbiAqIFRoaXMgd2lsbCBjYXVzZSBrZXlzIHRvIGJlIG92ZXJ3cml0dGVuIGlmIHRoZSBvYmplY3QgY29udGFpbnMgJ2ZpcnN0S2V5JyBhbmQgJ3NlY29uZEtleScuXG5cbiAqIEBwYXJhbSB7Kn0gaW5wdXQgQW55IHR5cGUgb2YgaW5wdXRcbiAqIEBwYXJhbSB7U3RyaW5nfSBmaXJzdEtleSBUaGUgZmlyc3Qga2V5IHRvIGR1cGxpY2F0ZVxuICogQHBhcmFtIHtTdHJpbmd9IHNlY29uZEtleSBUaGUgc2Vjb25kIGtleSB0byBkdXBsaWNhdGVcbiAqL1xuZnVuY3Rpb24gZHVwbGljYXRlS2V5cyAoaW5wdXQsIGZpcnN0S2V5LCBzZWNvbmRLZXkpIHtcbiAgLy8gSWYgYXJyYXkgcHJvdmlkZWQsIHJlY3Vyc2l2ZWx5IGNhbGwgb24gYWxsIGVsZW1lbnRzXG4gIGlmIChfLmlzQXJyYXkoaW5wdXQpKSB7XG4gICAgcmV0dXJuIGlucHV0Lm1hcCgoaXRlbSkgPT4gZHVwbGljYXRlS2V5cyhpdGVtLCBmaXJzdEtleSwgc2Vjb25kS2V5KSk7XG4gIH1cblxuICAvLyBJZiBvYmplY3QsIGNyZWF0ZSBkdXBsaWNhdGVzIGZvciBrZXlzIGFuZCB0aGVuIHJlY3Vyc2l2ZWx5IGNhbGwgb24gdmFsdWVzXG4gIGlmIChfLmlzUGxhaW5PYmplY3QoaW5wdXQpKSB7XG4gICAgY29uc3QgcmVzdWx0T2JqID0ge307XG4gICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIF8udG9QYWlycyhpbnB1dCkpIHtcbiAgICAgIGNvbnN0IHJlY3Vyc2l2ZWx5Q2FsbGVkVmFsdWUgPSBkdXBsaWNhdGVLZXlzKHZhbHVlLCBmaXJzdEtleSwgc2Vjb25kS2V5KTtcbiAgICAgIGlmIChrZXkgPT09IGZpcnN0S2V5KSB7XG4gICAgICAgIHJlc3VsdE9ialtzZWNvbmRLZXldID0gcmVjdXJzaXZlbHlDYWxsZWRWYWx1ZTtcbiAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSBzZWNvbmRLZXkpIHtcbiAgICAgICAgcmVzdWx0T2JqW2ZpcnN0S2V5XSA9IHJlY3Vyc2l2ZWx5Q2FsbGVkVmFsdWU7XG4gICAgICB9XG4gICAgICByZXN1bHRPYmpba2V5XSA9IHJlY3Vyc2l2ZWx5Q2FsbGVkVmFsdWU7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRPYmo7XG4gIH1cblxuICAvLyBCYXNlIGNhc2UuIFJldHVybiBwcmltaXRpdmVzIHdpdGhvdXQgZG9pbmcgYW55dGhpbmcuXG4gIHJldHVybiBpbnB1dDtcbn1cblxuLyoqXG4gKiBUYWtlcyBhIGRlc2lyZWQgY2FwYWJpbGl0eSBhbmQgdHJpZXMgdG8gSlNPTi5wYXJzZSBpdCBhcyBhbiBhcnJheSxcbiAqIGFuZCBlaXRoZXIgcmV0dXJucyB0aGUgcGFyc2VkIGFycmF5IG9yIGEgc2luZ2xldG9uIGFycmF5LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfEFycmF5PFN0cmluZz59IGNhcCBBIGRlc2lyZWQgY2FwYWJpbGl0eVxuICovXG5mdW5jdGlvbiBwYXJzZUNhcHNBcnJheSAoY2FwKSB7XG4gIGlmIChfLmlzQXJyYXkoY2FwKSkge1xuICAgIHJldHVybiBjYXA7XG4gIH1cblxuICBsZXQgcGFyc2VkQ2FwcztcbiAgdHJ5IHtcbiAgICBwYXJzZWRDYXBzID0gSlNPTi5wYXJzZShjYXApO1xuICAgIGlmIChfLmlzQXJyYXkocGFyc2VkQ2FwcykpIHtcbiAgICAgIHJldHVybiBwYXJzZWRDYXBzO1xuICAgIH1cbiAgfSBjYXRjaCAoaWduKSB7XG4gICAgbG9nZ2VyLndhcm4oYEZhaWxlZCB0byBwYXJzZSBjYXBhYmlsaXR5IGFzIEpTT04gYXJyYXlgKTtcbiAgfVxuICBpZiAoXy5pc1N0cmluZyhjYXApKSB7XG4gICAgcmV0dXJuIFtjYXBdO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgbXVzdCBwcm92aWRlIGEgc3RyaW5nIG9yIEpTT04gQXJyYXk7IHJlY2VpdmVkICR7Y2FwfWApO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIGEgc3RyaW5nIHRoYXQgdW5pcXVlbHkgZGVzY3JpYmVzIGRyaXZlciBpbnN0YW5jZVxuICpcbiAqIEBwYXJhbSB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuQ29yZX0gb2JqIGRyaXZlciBpbnN0YW5jZVxuICogQHBhcmFtIHtzdHJpbmc/fSBzZXNzaW9uSWQgc2Vzc2lvbiBpZGVudGlmaWVyIChpZiBleGlzdHMpXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZURyaXZlckxvZ1ByZWZpeCAob2JqLCBzZXNzaW9uSWQgPSBudWxsKSB7XG4gIGNvbnN0IGluc3RhbmNlTmFtZSA9IGAke29iai5jb25zdHJ1Y3Rvci5uYW1lfUAke25vZGUuZ2V0T2JqZWN0SWQob2JqKS5zdWJzdHJpbmcoMCwgNCl9YDtcbiAgcmV0dXJuIHNlc3Npb25JZCA/IGAke2luc3RhbmNlTmFtZX0gKCR7c2Vzc2lvbklkLnN1YnN0cmluZygwLCA4KX0pYCA6IGluc3RhbmNlTmFtZTtcbn1cblxuLyoqIEB0eXBlIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5Ecml2ZXJIZWxwZXJzfSAqL1xuZXhwb3J0IGRlZmF1bHQge1xuICBjb25maWd1cmVBcHAsIGlzUGFja2FnZU9yQnVuZGxlLCBkdXBsaWNhdGVLZXlzLCBwYXJzZUNhcHNBcnJheSwgZ2VuZXJhdGVEcml2ZXJMb2dQcmVmaXhcbn07XG5leHBvcnQge1xuICBjb25maWd1cmVBcHAsIGlzUGFja2FnZU9yQnVuZGxlLCBkdXBsaWNhdGVLZXlzLCBwYXJzZUNhcHNBcnJheSwgZ2VuZXJhdGVEcml2ZXJMb2dQcmVmaXhcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxPQUFPLEdBQUcsTUFBaEI7QUFDQSxNQUFNQyxRQUFRLEdBQUcsQ0FBQyxNQUFELEVBQVNELE9BQVQsQ0FBakI7QUFDQSxNQUFNRSxjQUFjLEdBQUcsQ0FDckIsaUJBRHFCLEVBRXJCLDhCQUZxQixFQUdyQixpQkFIcUIsQ0FBdkI7QUFLQSxNQUFNQyxtQkFBbUIsR0FBRyxPQUFPLEVBQVAsR0FBWSxFQUFaLEdBQWlCLEVBQTdDO0FBQ0EsTUFBTUMsZUFBZSxHQUFHLElBQXhCO0FBQ0EsTUFBTUMsa0JBQWtCLEdBQUcsSUFBSUMsaUJBQUosQ0FBUTtFQUNqQ0MsR0FBRyxFQUFFSCxlQUQ0QjtF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
|
|
546
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJUEFfRVhUIiwiWklQX0VYVFMiLCJaSVBfTUlNRV9UWVBFUyIsIkNBQ0hFRF9BUFBTX01BWF9BR0UiLCJNQVhfQ0FDSEVEX0FQUFMiLCJBUFBMSUNBVElPTlNfQ0FDSEUiLCJMUlUiLCJtYXgiLCJ0dGwiLCJ1cGRhdGVBZ2VPbkdldCIsImRpc3Bvc2UiLCJhcHAiLCJmdWxsUGF0aCIsImxvZ2dlciIsImluZm8iLCJmcyIsInJpbXJhZiIsIm5vRGlzcG9zZU9uU2V0IiwiQVBQTElDQVRJT05TX0NBQ0hFX0dVQVJEIiwiQXN5bmNMb2NrIiwiU0FOSVRJWkVfUkVQTEFDRU1FTlQiLCJERUZBVUxUX0JBU0VOQU1FIiwiQVBQX0RPV05MT0FEX1RJTUVPVVRfTVMiLCJwcm9jZXNzIiwib24iLCJzaXplIiwiYXBwUGF0aHMiLCJ2YWx1ZXMiLCJtYXAiLCJkZWJ1ZyIsImxlbmd0aCIsInV0aWwiLCJwbHVyYWxpemUiLCJhcHBQYXRoIiwicmltcmFmU3luYyIsImUiLCJ3YXJuIiwibWVzc2FnZSIsInJldHJpZXZlSGVhZGVycyIsImxpbmsiLCJheGlvcyIsInVybCIsIm1ldGhvZCIsInRpbWVvdXQiLCJoZWFkZXJzIiwiZ2V0Q2FjaGVkQXBwbGljYXRpb25QYXRoIiwiY3VycmVudEFwcFByb3BzIiwiY2FjaGVkQXBwSW5mbyIsInJlZnJlc2giLCJfIiwiaXNQbGFpbk9iamVjdCIsImxhc3RNb2RpZmllZCIsImN1cnJlbnRNb2RpZmllZCIsImltbXV0YWJsZSIsImN1cnJlbnRJbW11dGFibGUiLCJtYXhBZ2UiLCJjdXJyZW50TWF4QWdlIiwidGltZXN0YW1wIiwiZ2V0VGltZSIsIm1zTGVmdCIsIkRhdGUiLCJub3ciLCJwYXRoIiwiYmFzZW5hbWUiLCJ2ZXJpZnlBcHBFeHRlbnNpb24iLCJzdXBwb3J0ZWRBcHBFeHRlbnNpb25zIiwidG9Mb3dlciIsImluY2x1ZGVzIiwiZXh0bmFtZSIsIkVycm9yIiwiY2FsY3VsYXRlRm9sZGVySW50ZWdyaXR5IiwiZm9sZGVyUGF0aCIsImdsb2IiLCJjd2QiLCJzdHJpY3QiLCJub3NvcnQiLCJjYWxjdWxhdGVGaWxlSW50ZWdyaXR5IiwiZmlsZVBhdGgiLCJoYXNoIiwiaXNBcHBJbnRlZ3JpdHlPayIsImN1cnJlbnRQYXRoIiwiZXhwZWN0ZWRJbnRlZ3JpdHkiLCJleGlzdHMiLCJzdGF0IiwiaXNEaXJlY3RvcnkiLCJmb2xkZXIiLCJmaWxlIiwiY29uZmlndXJlQXBwIiwib3B0aW9ucyIsImlzU3RyaW5nIiwib25Qb3N0UHJvY2VzcyIsImlzQXJyYXkiLCJ1bmRlZmluZWQiLCJzdXBwb3J0ZWRFeHRlbnNpb25zIiwiaXNFbXB0eSIsIm5ld0FwcCIsInNob3VsZFVuemlwQXBwIiwicGFja2FnZUhhc2giLCJyZW1vdGVBcHBQcm9wcyIsInByb3RvY29sIiwicGF0aG5hbWUiLCJwYXJzZSIsImlzVXJsIiwiZ2V0IiwiYWNxdWlyZSIsInRlc3QiLCJtYXhBZ2VNYXRjaCIsImV4ZWMiLCJwYXJzZUludCIsImNhY2hlZFBhdGgiLCJpbnRlZ3JpdHkiLCJkZWxldGUiLCJmaWxlTmFtZSIsInNhbml0aXplTmFtZSIsImRlY29kZVVSSUNvbXBvbmVudCIsInJlcGxhY2VtZW50IiwiY3QiLCJzb21lIiwibWltZVR5cGUiLCJSZWdFeHAiLCJlc2NhcGVSZWdFeHAiLCJtYXRjaCIsInJlc3VsdGluZ05hbWUiLCJzdWJzdHJpbmciLCJyZXN1bHRpbmdFeHQiLCJmaXJzdCIsInRhcmdldFBhdGgiLCJ0ZW1wRGlyIiwicHJlZml4Iiwic3VmZml4IiwiZG93bmxvYWRBcHAiLCJlcnJvck1lc3NhZ2UiLCJpc1BhY2thZ2VBRmlsZSIsImlzRmlsZSIsImlzRnVuY3Rpb24iLCJhcmNoaXZlUGF0aCIsInRtcFJvb3QiLCJvcGVuRGlyIiwidW56aXBBcHAiLCJpc0Fic29sdXRlIiwicmVzb2x2ZSIsInN0b3JlQXBwSW5DYWNoZSIsImFwcFBhdGhUb0NhY2hlIiwiY2FjaGVkRnVsbFBhdGgiLCJzZXQiLCJyZXN1bHQiLCJjbG9uZSIsIkJvb2xlYW4iLCJocmVmIiwibmV0IiwiZG93bmxvYWRGaWxlIiwiZXJyIiwiemlwUGF0aCIsImRzdFJvb3QiLCJ6aXAiLCJhc3NlcnRWYWxpZFppcCIsInRpbWVyIiwidGltaW5nIiwiVGltZXIiLCJzdGFydCIsInVzZVN5c3RlbVVuemlwRW52IiwiZW52IiwiQVBQSVVNX1BSRUZFUl9TWVNURU1fVU5aSVAiLCJ1c2VTeXN0ZW1VbnppcCIsImV4dHJhY3Rpb25PcHRzIiwiZmlsZU5hbWVzRW5jb2RpbmciLCJleHRyYWN0QWxsVG8iLCJnbG9iUGF0dGVybiIsImV4dCIsInJlcGxhY2UiLCJqb2luIiwic29ydGVkQnVuZGxlSXRlbXMiLCJzb3J0IiwiYSIsImIiLCJzcGxpdCIsInNlcCIsImVycm9yQW5kVGhyb3ciLCJNYXRoIiwicm91bmQiLCJnZXREdXJhdGlvbiIsImFzTWlsbGlTZWNvbmRzIiwibWF0Y2hlZEJ1bmRsZSIsImRzdFBhdGgiLCJtdiIsIm1rZGlycCIsImlzUGFja2FnZU9yQnVuZGxlIiwiZHVwbGljYXRlS2V5cyIsImlucHV0IiwiZmlyc3RLZXkiLCJzZWNvbmRLZXkiLCJpdGVtIiwicmVzdWx0T2JqIiwia2V5IiwidmFsdWUiLCJ0b1BhaXJzIiwicmVjdXJzaXZlbHlDYWxsZWRWYWx1ZSIsInBhcnNlQ2Fwc0FycmF5IiwiY2FwIiwicGFyc2VkQ2FwcyIsIkpTT04iLCJpZ24iLCJnZW5lcmF0ZURyaXZlckxvZ1ByZWZpeCIsIm9iaiIsInNlc3Npb25JZCIsImluc3RhbmNlTmFtZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsIm5vZGUiLCJnZXRPYmplY3RJZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9iYXNlZHJpdmVyL2hlbHBlcnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHVybCBmcm9tICd1cmwnO1xuaW1wb3J0IGxvZ2dlciBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQge3RlbXBEaXIsIGZzLCB1dGlsLCB6aXAsIG5ldCwgdGltaW5nLCBub2RlfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IExSVSBmcm9tICdscnUtY2FjaGUnO1xuaW1wb3J0IEFzeW5jTG9jayBmcm9tICdhc3luYy1sb2NrJztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5cbmNvbnN0IElQQV9FWFQgPSAnLmlwYSc7XG5jb25zdCBaSVBfRVhUUyA9IFsnLnppcCcsIElQQV9FWFRdO1xuY29uc3QgWklQX01JTUVfVFlQRVMgPSBbJ2FwcGxpY2F0aW9uL3ppcCcsICdhcHBsaWNhdGlvbi94LXppcC1jb21wcmVzc2VkJywgJ211bHRpcGFydC94LXppcCddO1xuY29uc3QgQ0FDSEVEX0FQUFNfTUFYX0FHRSA9IDEwMDAgKiA2MCAqIDYwICogMjQ7IC8vIG1zXG5jb25zdCBNQVhfQ0FDSEVEX0FQUFMgPSAxMDI0O1xuY29uc3QgQVBQTElDQVRJT05TX0NBQ0hFID0gbmV3IExSVSh7XG4gIG1heDogTUFYX0NBQ0hFRF9BUFBTLFxuICB0dGw6IENBQ0hFRF9BUFBTX01BWF9BR0UsIC8vIGV4cGlyZSBhZnRlciAyNCBob3Vyc1xuICB1cGRhdGVBZ2VPbkdldDogdHJ1ZSxcbiAgZGlzcG9zZTogKGFwcCwge2Z1bGxQYXRofSkgPT4ge1xuICAgIGxvZ2dlci5pbmZvKFxuICAgICAgYFRoZSBhcHBsaWNhdGlvbiAnJHthcHB9JyBjYWNoZWQgYXQgJyR7ZnVsbFBhdGh9JyBoYXMgYCArXG4gICAgICAgIGBleHBpcmVkIGFmdGVyICR7Q0FDSEVEX0FQUFNfTUFYX0FHRX1tc2BcbiAgICApO1xuICAgIGlmIChmdWxsUGF0aCkge1xuICAgICAgZnMucmltcmFmKGZ1bGxQYXRoKTtcbiAgICB9XG4gIH0sXG4gIG5vRGlzcG9zZU9uU2V0OiB0cnVlLFxufSk7XG5jb25zdCBBUFBMSUNBVElPTlNfQ0FDSEVfR1VBUkQgPSBuZXcgQXN5bmNMb2NrKCk7XG5jb25zdCBTQU5JVElaRV9SRVBMQUNFTUVOVCA9ICctJztcbmNvbnN0IERFRkFVTFRfQkFTRU5BTUUgPSAnYXBwaXVtLWFwcCc7XG5jb25zdCBBUFBfRE9XTkxPQURfVElNRU9VVF9NUyA9IDEyMCAqIDEwMDA7XG5cbnByb2Nlc3Mub24oJ2V4aXQnLCAoKSA9PiB7XG4gIGlmIChBUFBMSUNBVElPTlNfQ0FDSEUuc2l6ZSA9PT0gMCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGFwcFBhdGhzID0gWy4uLkFQUExJQ0FUSU9OU19DQUNIRS52YWx1ZXMoKV0ubWFwKCh7ZnVsbFBhdGh9KSA9PiBmdWxsUGF0aCk7XG4gIGxvZ2dlci5kZWJ1ZyhcbiAgICBgUGVyZm9ybWluZyBjbGVhbnVwIG9mICR7YXBwUGF0aHMubGVuZ3RofSBjYWNoZWQgYCArXG4gICAgICB1dGlsLnBsdXJhbGl6ZSgnYXBwbGljYXRpb24nLCBhcHBQYXRocy5sZW5ndGgpXG4gICk7XG4gIGZvciAoY29uc3QgYXBwUGF0aCBvZiBhcHBQYXRocykge1xuICAgIHRyeSB7XG4gICAgICAvLyBBc3luY2hyb25vdXMgY2FsbHMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gb25FeGl0IGhhbmRsZXJcbiAgICAgIGZzLnJpbXJhZlN5bmMoYXBwUGF0aCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgbG9nZ2VyLndhcm4oZS5tZXNzYWdlKTtcbiAgICB9XG4gIH1cbn0pO1xuXG5hc3luYyBmdW5jdGlvbiByZXRyaWV2ZUhlYWRlcnMobGluaykge1xuICB0cnkge1xuICAgIHJldHVybiAoXG4gICAgICBhd2FpdCBheGlvcyh7XG4gICAgICAgIHVybDogbGluayxcbiAgICAgICAgbWV0aG9kOiAnSEVBRCcsXG4gICAgICAgIHRpbWVvdXQ6IDUwMDAsXG4gICAgICB9KVxuICAgICkuaGVhZGVycztcbiAgfSBjYXRjaCAoZSkge1xuICAgIGxvZ2dlci5pbmZvKGBDYW5ub3Qgc2VuZCBIRUFEIHJlcXVlc3QgdG8gJyR7bGlua30nLiBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCk7XG4gIH1cbiAgcmV0dXJuIHt9O1xufVxuXG5mdW5jdGlvbiBnZXRDYWNoZWRBcHBsaWNhdGlvblBhdGgobGluaywgY3VycmVudEFwcFByb3BzID0ge30sIGNhY2hlZEFwcEluZm8gPSB7fSkge1xuICBjb25zdCByZWZyZXNoID0gKCkgPT4ge1xuICAgIGxvZ2dlci5kZWJ1ZyhgQSBmcmVzaCBjb3B5IG9mIHRoZSBhcHBsaWNhdGlvbiBpcyBnb2luZyB0byBiZSBkb3dubG9hZGVkIGZyb20gJHtsaW5rfWApO1xuICAgIHJldHVybiBudWxsO1xuICB9O1xuXG4gIGlmICghXy5pc1BsYWluT2JqZWN0KGNhY2hlZEFwcEluZm8pIHx8ICFfLmlzUGxhaW5PYmplY3QoY3VycmVudEFwcFByb3BzKSkge1xuICAgIC8vIGlmIGFuIGludmFsaWQgYXJnIGlzIHBhc3NlZCB0aGVuIGFzc3VtZSBjYWNoZSBtaXNzXG4gICAgcmV0dXJuIHJlZnJlc2goKTtcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICBsYXN0TW9kaWZpZWQ6IGN1cnJlbnRNb2RpZmllZCxcbiAgICBpbW11dGFibGU6IGN1cnJlbnRJbW11dGFibGUsXG4gICAgLy8gbWF4QWdlIGlzIGluIHNlY29uZHNcbiAgICBtYXhBZ2U6IGN1cnJlbnRNYXhBZ2UsXG4gIH0gPSBjdXJyZW50QXBwUHJvcHM7XG4gIGNvbnN0IHtcbiAgICAvLyBEYXRlIGluc3RhbmNlXG4gICAgbGFzdE1vZGlmaWVkLFxuICAgIC8vIGJvb2xlYW5cbiAgICBpbW11dGFibGUsXG4gICAgLy8gVW5peCB0aW1lIGluIG1pbGxpc2Vjb25kc1xuICAgIHRpbWVzdGFtcCxcbiAgICBmdWxsUGF0aCxcbiAgfSA9IGNhY2hlZEFwcEluZm87XG4gIGlmIChsYXN0TW9kaWZpZWQgJiYgY3VycmVudE1vZGlmaWVkKSB7XG4gICAgaWYgKGN1cnJlbnRNb2RpZmllZC5nZXRUaW1lKCkgPD0gbGFzdE1vZGlmaWVkLmdldFRpbWUoKSkge1xuICAgICAgbG9nZ2VyLmRlYnVnKGBUaGUgYXBwbGljYXRpb24gYXQgJHtsaW5rfSBoYXMgbm90IGJlZW4gbW9kaWZpZWQgc2luY2UgJHtsYXN0TW9kaWZpZWR9YCk7XG4gICAgICByZXR1cm4gZnVsbFBhdGg7XG4gICAgfVxuICAgIGxvZ2dlci5kZWJ1ZyhgVGhlIGFwcGxpY2F0aW9uIGF0ICR7bGlua30gaGFzIGJlZW4gbW9kaWZpZWQgc2luY2UgJHtsYXN0TW9kaWZpZWR9YCk7XG4gICAgcmV0dXJuIHJlZnJlc2goKTtcbiAgfVxuICBpZiAoaW1tdXRhYmxlICYmIGN1cnJlbnRJbW11dGFibGUpIHtcbiAgICBsb2dnZXIuZGVidWcoYFRoZSBhcHBsaWNhdGlvbiBhdCAke2xpbmt9IGlzIGltbXV0YWJsZWApO1xuICAgIHJldHVybiBmdWxsUGF0aDtcbiAgfVxuICBpZiAoY3VycmVudE1heEFnZSAmJiB0aW1lc3RhbXApIHtcbiAgICBjb25zdCBtc0xlZnQgPSB0aW1lc3RhbXAgKyBjdXJyZW50TWF4QWdlICogMTAwMCAtIERhdGUubm93KCk7XG4gICAgaWYgKG1zTGVmdCA+IDApIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgYFRoZSBjYWNoZWQgYXBwbGljYXRpb24gJyR7cGF0aC5iYXNlbmFtZShmdWxsUGF0aCl9JyB3aWxsIGV4cGlyZSBpbiAke21zTGVmdCAvIDEwMDB9c2BcbiAgICAgICk7XG4gICAgICByZXR1cm4gZnVsbFBhdGg7XG4gICAgfVxuICAgIGxvZ2dlci5kZWJ1ZyhgVGhlIGNhY2hlZCBhcHBsaWNhdGlvbiAnJHtwYXRoLmJhc2VuYW1lKGZ1bGxQYXRoKX0nIGhhcyBleHBpcmVkYCk7XG4gIH1cbiAgcmV0dXJuIHJlZnJlc2goKTtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5QXBwRXh0ZW5zaW9uKGFwcCwgc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucykge1xuICBpZiAoc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucy5tYXAoXy50b0xvd2VyKS5pbmNsdWRlcyhfLnRvTG93ZXIocGF0aC5leHRuYW1lKGFwcCkpKSkge1xuICAgIHJldHVybiBhcHA7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgIGBOZXcgYXBwIHBhdGggJyR7YXBwfScgZGlkIG5vdCBoYXZlIGAgK1xuICAgICAgYCR7dXRpbC5wbHVyYWxpemUoJ2V4dGVuc2lvbicsIHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMubGVuZ3RoLCBmYWxzZSl9OiBgICtcbiAgICAgIHN1cHBvcnRlZEFwcEV4dGVuc2lvbnNcbiAgKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY2FsY3VsYXRlRm9sZGVySW50ZWdyaXR5KGZvbGRlclBhdGgpIHtcbiAgcmV0dXJuIChhd2FpdCBmcy5nbG9iKCcqKi8qJywge2N3ZDogZm9sZGVyUGF0aCwgc3RyaWN0OiBmYWxzZSwgbm9zb3J0OiB0cnVlfSkpLmxlbmd0aDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY2FsY3VsYXRlRmlsZUludGVncml0eShmaWxlUGF0aCkge1xuICByZXR1cm4gYXdhaXQgZnMuaGFzaChmaWxlUGF0aCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGlzQXBwSW50ZWdyaXR5T2soY3VycmVudFBhdGgsIGV4cGVjdGVkSW50ZWdyaXR5ID0ge30pIHtcbiAgaWYgKCEoYXdhaXQgZnMuZXhpc3RzKGN1cnJlbnRQYXRoKSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBGb2xkZXIgaW50ZWdyaXR5IGNoZWNrIGlzIHNpbXBsZTpcbiAgLy8gVmVyaWZ5IHRoZSBwcmV2aW91cyBhbW91bnQgb2YgZmlsZXMgaXMgbm90IGdyZWF0ZXIgdGhhbiB0aGUgY3VycmVudCBvbmUuXG4gIC8vIFdlIGRvbid0IHdhbnQgdG8gdXNlIGVxdWFsaXR5IGNvbXBhcmlzb24gYmVjYXVzZSBvZiBhbiBhc3N1bXB0aW9uIHRoYXQgdGhlIE9TIG1pZ2h0XG4gIC8vIGNyZWF0ZSBzb21lIHVud2FudGVkIHNlcnZpY2UgZmlsZXMvY2FjaGVkIGluc2lkZSBvZiB0aGF0IGZvbGRlciBvciBpdHMgc3ViZm9sZGVycy5cbiAgLy8gT2ZjLCB2YWxpZGF0aW5nIHRoZSBoYXNoIHN1bSBvZiBlYWNoIGZpbGUgKG9yIGF0IGxlYXN0IG9mIGZpbGUgcGF0aCkgd291bGQgYmUgbXVjaFxuICAvLyBtb3JlIHByZWNpc2UsIGJ1dCB3ZSBkb24ndCBuZWVkIHRvIGJlIHZlcnkgcHJlY2lzZSBoZXJlIGFuZCBhbHNvIGRvbid0IHdhbnQgdG9cbiAgLy8gb3ZlcnVzZSBSQU0gYW5kIGhhdmUgYSBwZXJmb3JtYW5jZSBkcm9wLlxuICByZXR1cm4gKGF3YWl0IGZzLnN0YXQoY3VycmVudFBhdGgpKS5pc0RpcmVjdG9yeSgpXG4gICAgPyAoYXdhaXQgY2FsY3VsYXRlRm9sZGVySW50ZWdyaXR5KGN1cnJlbnRQYXRoKSkgPj0gZXhwZWN0ZWRJbnRlZ3JpdHk/LmZvbGRlclxuICAgIDogKGF3YWl0IGNhbGN1bGF0ZUZpbGVJbnRlZ3JpdHkoY3VycmVudFBhdGgpKSA9PT0gZXhwZWN0ZWRJbnRlZ3JpdHk/LmZpbGU7XG59XG5cbi8qKlxuICogQHR5cGVkZWYgUG9zdFByb2Nlc3NPcHRpb25zXG4gKiBAcHJvcGVydHkgez9PYmplY3R9IGNhY2hlZEFwcEluZm8gVGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwcmV2aW91c2x5IGNhY2hlZCBhcHAgaW5zdGFuY2UgKGlmIGV4aXN0cyk6XG4gKiAgICAtIHBhY2thZ2VIYXNoOiBTSEExIGhhc2ggb2YgdGhlIHBhY2thZ2UgaWYgaXQgaXMgYSBmaWxlIGFuZCBub3QgYSBmb2xkZXJcbiAqICAgIC0gbGFzdE1vZGlmaWVkOiBPcHRpb25hbCBEYXRlIGluc3RhbmNlLCB0aGUgdmFsdWUgb2YgZmlsZSdzIGBMYXN0LU1vZGlmaWVkYCBoZWFkZXJcbiAqICAgIC0gaW1tdXRhYmxlOiBPcHRpb25hbCBib29sZWFuIHZhbHVlLiBDb250YWlucyB0cnVlIGlmIHRoZSBmaWxlIGhhcyBhbiBgaW1tdXRhYmxlYCBtYXJrXG4gKiAgICAgICAgICAgICAgICAgaW4gYENhY2hlLWNvbnRyb2xgIGhlYWRlclxuICogICAgLSBtYXhBZ2U6IE9wdGlvbmFsIGludGVnZXIgcmVwcmVzZW50YXRpb24gb2YgYG1heEFnZWAgcGFyYW1ldGVyIGluIGBDYWNoZS1jb250cm9sYCBoZWFkZXJcbiAqICAgIC0gdGltZXN0YW1wOiBUaGUgdGltZXN0YW1wIHRoaXMgaXRlbSBoYXMgYmVlbiBhZGRlZCB0byB0aGUgY2FjaGUgKG1lYXN1cmVkIGluIFVuaXggZXBvY2hcbiAqICAgICAgICAgICAgICAgICBtaWxsaXNlY29uZHMpXG4gKiAgICAtIGludGVncml0eTogQW4gb2JqZWN0IGNvbnRhaW5pbmcgZWl0aGVyIGBmaWxlYCBwcm9wZXJ0eSB3aXRoIFNIQTEgaGFzaCBvZiB0aGUgZmlsZVxuICogICAgICAgICAgICAgICAgIG9yIGBmb2xkZXJgIHByb3BlcnR5IHdpdGggdG90YWwgYW1vdW50IG9mIGNhY2hlZCBmaWxlcyBhbmQgc3ViZm9sZGVyc1xuICogICAgLSBmdWxsUGF0aDogdGhlIGZ1bGwgcGF0aCB0byB0aGUgY2FjaGVkIGFwcFxuICogQHByb3BlcnR5IHtib29sZWFufSBpc1VybCBXaGV0aGVyIHRoZSBhcHAgaGFzIGJlZW4gZG93bmxvYWRlZCBmcm9tIGEgcmVtb3RlIFVSTFxuICogQHByb3BlcnR5IHs/T2JqZWN0fSBoZWFkZXJzIE9wdGlvbmFsIGhlYWRlcnMgb2JqZWN0LiBPbmx5IHByZXNlbnQgaWYgYGlzVXJsYCBpcyB0cnVlIGFuZCBpZiB0aGUgc2VydmVyXG4gKiByZXNwb25kcyB0byBIRUFEIHJlcXVlc3RzLiBBbGwgaGVhZGVyIG5hbWVzIGFyZSBub3JtYWxpemVkIHRvIGxvd2VyY2FzZS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhcHBQYXRoIEEgc3RyaW5nIGNvbnRhaW5pbmcgZnVsbCBwYXRoIHRvIHRoZSBwcmVwcm9jZXNzZWQgYXBwbGljYXRpb24gcGFja2FnZSAoZWl0aGVyXG4gKiBkb3dubG9hZGVkIG9yIGEgbG9jYWwgb25lKVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYgUG9zdFByb2Nlc3NSZXN1bHRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhcHBQYXRoIFRoZSBmdWxsIHBhc3QgdG8gdGhlIHBvc3QtcHJvY2Vzc2VkIGFwcGxpY2F0aW9uIHBhY2thZ2Ugb24gdGhlXG4gKiBsb2NhbCBmaWxlIHN5c3RlbSAobWlnaHQgYmUgYSBmaWxlIG9yIGEgZm9sZGVyIHBhdGgpXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiBDb25maWd1cmVBcHBPcHRpb25zXG4gKiBAcHJvcGVydHkgeyhvYmo6IFBvc3RQcm9jZXNzT3B0aW9ucykgPT4gKFByb21pc2U8UG9zdFByb2Nlc3NSZXN1bHR8dW5kZWZpbmVkPnxQb3N0UHJvY2Vzc1Jlc3VsdHx1bmRlZmluZWQpfSBbb25Qb3N0UHJvY2Vzc11cbiAqIE9wdGlvbmFsIGZ1bmN0aW9uLCB3aGljaCBzaG91bGQgYmUgYXBwbGllZFxuICogdG8gdGhlIGFwcGxpY2F0aW9uIGFmdGVyIGl0IGlzIGRvd25sb2FkZWQvcHJlcHJvY2Vzc2VkLiBUaGlzIGZ1bmN0aW9uIG1heSBiZSBhc3luY1xuICogYW5kIGlzIGV4cGVjdGVkIHRvIGFjY2VwdCBzaW5nbGUgb2JqZWN0IHBhcmFtZXRlci5cbiAqIFRoZSBmdW5jdGlvbiBpcyBleHBlY3RlZCB0byBlaXRoZXIgcmV0dXJuIGEgZmFsc3kgdmFsdWUsIHdoaWNoIG1lYW5zIHRoZSBhcHAgbXVzdCBub3QgYmVcbiAqIGNhY2hlZCBhbmQgYSBmcmVzaCBjb3B5IG9mIGl0IGlzIGRvd25sb2FkZWQgZWFjaCB0aW1lLiBJZiB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYW4gb2JqZWN0XG4gKiBjb250YWluaW5nIGBhcHBQYXRoYCBwcm9wZXJ0eSB0aGVuIHRoZSBpbnRlZ3JpdHkgb2YgaXQgd2lsbCBiZSB2ZXJpZmllZCBhbmQgc3RvcmVkIGludG9cbiAqIHRoZSBjYWNoZS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IHN1cHBvcnRlZEV4dGVuc2lvbnMgTGlzdCBvZiBzdXBwb3J0ZWQgYXBwbGljYXRpb24gZXh0ZW5zaW9ucyAoXG4gKiBpbmNsdWRpbmcgc3RhcnRpbmcgZG90cykuIFRoaXMgcHJvcGVydHkgaXMgbWFuZGF0b3J5IGFuZCBtdXN0IG5vdCBiZSBlbXB0eS5cbiAqL1xuXG4vKipcbiAqIFByZXBhcmVzIGFuIGFwcCB0byBiZSB1c2VkIGluIGFuIGF1dG9tYXRlZCB0ZXN0LiBUaGUgYXBwIGdldHMgY2FjaGVkIGF1dG9tYXRpY2FsbHlcbiAqIGlmIGl0IGlzIGFuIGFyY2hpdmUgb3IgaWYgaXQgaXMgZG93bmxvYWRlZCBmcm9tIGFuIFVSTC5cbiAqIElmIHRoZSBkb3dubG9hZGVkIGFwcCBoYXMgYC56aXBgIGV4dGVuc2lvbiwgdGhpcyBtZXRob2Qgd2lsbCB1bnppcCBpdC5cbiAqIFRoZSB1bnppcCBkb2VzIG5vdCB3b3JrIHdoZW4gYG9uUG9zdFByb2Nlc3NgIGlzIHByb3ZpZGVkLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcHAgRWl0aGVyIGEgZnVsbCBwYXRoIHRvIHRoZSBhcHAgb3IgYSByZW1vdGUgVVJMXG4gKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXXxDb25maWd1cmVBcHBPcHRpb25zfSBvcHRpb25zXG4gKiBAcmV0dXJucyBUaGUgZnVsbCBwYXRoIHRvIHRoZSByZXN1bHRpbmcgYXBwbGljYXRpb24gYnVuZGxlXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGNvbmZpZ3VyZUFwcChhcHAsIG9wdGlvbnMgPSAvKiogQHR5cGUge0NvbmZpZ3VyZUFwcE9wdGlvbnN9ICovICh7fSkpIHtcbiAgaWYgKCFfLmlzU3RyaW5nKGFwcCkpIHtcbiAgICAvLyBpbW1lZGlhdGVseSBzaG9ydGNpcmN1aXQgaWYgbm90IGdpdmVuIGFuIGFwcFxuICAgIHJldHVybjtcbiAgfVxuXG4gIGxldCBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zO1xuICBjb25zdCBvblBvc3RQcm9jZXNzID1cbiAgICAhXy5pc1N0cmluZyhvcHRpb25zKSAmJiAhXy5pc0FycmF5KG9wdGlvbnMpID8gb3B0aW9ucy5vblBvc3RQcm9jZXNzIDogdW5kZWZpbmVkO1xuXG4gIGlmIChfLmlzU3RyaW5nKG9wdGlvbnMpKSB7XG4gICAgc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucyA9IFtvcHRpb25zXTtcbiAgfSBlbHNlIGlmIChfLmlzQXJyYXkob3B0aW9ucykpIHtcbiAgICBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zID0gb3B0aW9ucztcbiAgfSBlbHNlIGlmIChfLmlzUGxhaW5PYmplY3Qob3B0aW9ucykpIHtcbiAgICBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zID0gb3B0aW9ucy5zdXBwb3J0ZWRFeHRlbnNpb25zO1xuICB9XG4gIGlmIChfLmlzRW1wdHkoc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE9uZSBvciBtb3JlIHN1cHBvcnRlZCBhcHAgZXh0ZW5zaW9ucyBtdXN0IGJlIHByb3ZpZGVkYCk7XG4gIH1cblxuICBsZXQgbmV3QXBwID0gYXBwO1xuICBsZXQgc2hvdWxkVW56aXBBcHAgPSBmYWxzZTtcbiAgbGV0IHBhY2thZ2VIYXNoID0gbnVsbDtcbiAgbGV0IGhlYWRlcnMgPSBudWxsO1xuICAvKiogQHR5cGUge1JlbW90ZUFwcFByb3BzfSAqL1xuICBjb25zdCByZW1vdGVBcHBQcm9wcyA9IHtcbiAgICBsYXN0TW9kaWZpZWQ6IG51bGwsXG4gICAgaW1tdXRhYmxlOiBmYWxzZSxcbiAgICBtYXhBZ2U6IG51bGwsXG4gIH07XG4gIGNvbnN0IHtwcm90b2NvbCwgcGF0aG5hbWV9ID0gdXJsLnBhcnNlKG5ld0FwcCk7XG4gIGNvbnN0IGlzVXJsID0gcHJvdG9jb2wgPT09IG51bGwgPyBmYWxzZSA6IFsnaHR0cDonLCAnaHR0cHM6J10uaW5jbHVkZXMocHJvdG9jb2wpO1xuXG4gIGNvbnN0IGNhY2hlZEFwcEluZm8gPSBBUFBMSUNBVElPTlNfQ0FDSEUuZ2V0KGFwcCk7XG5cbiAgcmV0dXJuIGF3YWl0IEFQUExJQ0FUSU9OU19DQUNIRV9HVUFSRC5hY3F1aXJlKGFwcCwgYXN5bmMgKCkgPT4ge1xuICAgIGlmIChpc1VybCkge1xuICAgICAgLy8gVXNlIHRoZSBhcHAgZnJvbSByZW1vdGUgVVJMXG4gICAgICBsb2dnZXIuaW5mbyhgVXNpbmcgZG93bmxvYWRhYmxlIGFwcCAnJHtuZXdBcHB9J2ApO1xuICAgICAgaGVhZGVycyA9IGF3YWl0IHJldHJpZXZlSGVhZGVycyhuZXdBcHApO1xuICAgICAgaWYgKCFfLmlzRW1wdHkoaGVhZGVycykpIHtcbiAgICAgICAgaWYgKGhlYWRlcnNbJ2xhc3QtbW9kaWZpZWQnXSkge1xuICAgICAgICAgIHJlbW90ZUFwcFByb3BzLmxhc3RNb2RpZmllZCA9IG5ldyBEYXRlKGhlYWRlcnNbJ2xhc3QtbW9kaWZpZWQnXSk7XG4gICAgICAgIH1cbiAgICAgICAgbG9nZ2VyLmRlYnVnKGBMYXN0LU1vZGlmaWVkOiAke2hlYWRlcnNbJ2xhc3QtbW9kaWZpZWQnXX1gKTtcbiAgICAgICAgaWYgKGhlYWRlcnNbJ2NhY2hlLWNvbnRyb2wnXSkge1xuICAgICAgICAgIHJlbW90ZUFwcFByb3BzLmltbXV0YWJsZSA9IC9cXGJpbW11dGFibGVcXGIvaS50ZXN0KGhlYWRlcnNbJ2NhY2hlLWNvbnRyb2wnXSk7XG4gICAgICAgICAgY29uc3QgbWF4QWdlTWF0Y2ggPSAvXFxibWF4LWFnZT0oXFxkKylcXGIvaS5leGVjKGhlYWRlcnNbJ2NhY2hlLWNvbnRyb2wnXSk7XG4gICAgICAgICAgaWYgKG1heEFnZU1hdGNoKSB7XG4gICAgICAgICAgICByZW1vdGVBcHBQcm9wcy5tYXhBZ2UgPSBwYXJzZUludChtYXhBZ2VNYXRjaFsxXSwgMTApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsb2dnZXIuZGVidWcoYENhY2hlLUNvbnRyb2w6ICR7aGVhZGVyc1snY2FjaGUtY29udHJvbCddfWApO1xuICAgICAgfVxuICAgICAgY29uc3QgY2FjaGVkUGF0aCA9IGdldENhY2hlZEFwcGxpY2F0aW9uUGF0aChhcHAsIHJlbW90ZUFwcFByb3BzLCBjYWNoZWRBcHBJbmZvKTtcbiAgICAgIGlmIChjYWNoZWRQYXRoKSB7XG4gICAgICAgIGlmIChhd2FpdCBpc0FwcEludGVncml0eU9rKGNhY2hlZFBhdGgsIGNhY2hlZEFwcEluZm8/LmludGVncml0eSkpIHtcbiAgICAgICAgICBsb2dnZXIuaW5mbyhgUmV1c2luZyBwcmV2aW91c2x5IGRvd25sb2FkZWQgYXBwbGljYXRpb24gYXQgJyR7Y2FjaGVkUGF0aH0nYCk7XG4gICAgICAgICAgcmV0dXJuIHZlcmlmeUFwcEV4dGVuc2lvbihjYWNoZWRQYXRoLCBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBsb2dnZXIuaW5mbyhcbiAgICAgICAgICBgVGhlIGFwcGxpY2F0aW9uIGF0ICcke2NhY2hlZFBhdGh9JyBkb2VzIG5vdCBleGlzdCBhbnltb3JlIGAgK1xuICAgICAgICAgICAgYG9yIGl0cyBpbnRlZ3JpdHkgaGFzIGJlZW4gZGFtYWdlZC4gRGVsZXRpbmcgaXQgZnJvbSB0aGUgaW50ZXJuYWwgY2FjaGVgXG4gICAgICAgICk7XG4gICAgICAgIEFQUExJQ0FUSU9OU19DQUNIRS5kZWxldGUoYXBwKTtcbiAgICAgIH1cblxuICAgICAgbGV0IGZpbGVOYW1lID0gbnVsbDtcbiAgICAgIGNvbnN0IGJhc2VuYW1lID0gZnMuc2FuaXRpemVOYW1lKHBhdGguYmFzZW5hbWUoZGVjb2RlVVJJQ29tcG9uZW50KHBhdGhuYW1lID8/ICcnKSksIHtcbiAgICAgICAgcmVwbGFjZW1lbnQ6IFNBTklUSVpFX1JFUExBQ0VNRU5ULFxuICAgICAgfSk7XG4gICAgICBjb25zdCBleHRuYW1lID0gcGF0aC5leHRuYW1lKGJhc2VuYW1lKTtcbiAgICAgIC8vIHRvIGRldGVybWluZSBpZiB3ZSBuZWVkIHRvIHVuemlwIHRoZSBhcHAsIHdlIGhhdmUgYSBudW1iZXIgb2YgcGxhY2VzXG4gICAgICAvLyB0byBsb29rOiBjb250ZW50IHR5cGUsIGNvbnRlbnQgZGlzcG9zaXRpb24sIG9yIHRoZSBmaWxlIGV4dGVuc2lvblxuICAgICAgaWYgKFpJUF9FWFRTLmluY2x1ZGVzKGV4dG5hbWUpKSB7XG4gICAgICAgIGZpbGVOYW1lID0gYmFzZW5hbWU7XG4gICAgICAgIHNob3VsZFVuemlwQXBwID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChoZWFkZXJzWydjb250ZW50LXR5cGUnXSkge1xuICAgICAgICBjb25zdCBjdCA9IGhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddO1xuICAgICAgICBsb2dnZXIuZGVidWcoYENvbnRlbnQtVHlwZTogJHtjdH1gKTtcbiAgICAgICAgLy8gdGhlIGZpbGV0eXBlIG1heSBub3QgYmUgb2J2aW91cyBmb3IgY2VydGFpbiB1cmxzLCBzbyBjaGVjayB0aGUgbWltZSB0eXBlIHRvb1xuICAgICAgICBpZiAoXG4gICAgICAgICAgWklQX01JTUVfVFlQRVMuc29tZSgobWltZVR5cGUpID0+XG4gICAgICAgICAgICBuZXcgUmVnRXhwKGBcXFxcYiR7Xy5lc2NhcGVSZWdFeHAobWltZVR5cGUpfVxcXFxiYCkudGVzdChjdClcbiAgICAgICAgICApXG4gICAgICAgICkge1xuICAgICAgICAgIGlmICghZmlsZU5hbWUpIHtcbiAgICAgICAgICAgIGZpbGVOYW1lID0gYCR7REVGQVVMVF9CQVNFTkFNRX0uemlwYDtcbiAgICAgICAgICB9XG4gICAgICAgICAgc2hvdWxkVW56aXBBcHAgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoaGVhZGVyc1snY29udGVudC1kaXNwb3NpdGlvbiddICYmIC9eYXR0YWNobWVudC9pLnRlc3QoaGVhZGVyc1snY29udGVudC1kaXNwb3NpdGlvbiddKSkge1xuICAgICAgICBsb2dnZXIuZGVidWcoYENvbnRlbnQtRGlzcG9zaXRpb246ICR7aGVhZGVyc1snY29udGVudC1kaXNwb3NpdGlvbiddfWApO1xuICAgICAgICBjb25zdCBtYXRjaCA9IC9maWxlbmFtZT1cIihbXlwiXSspL2kuZXhlYyhoZWFkZXJzWydjb250ZW50LWRpc3Bvc2l0aW9uJ10pO1xuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICBmaWxlTmFtZSA9IGZzLnNhbml0aXplTmFtZShtYXRjaFsxXSwge1xuICAgICAgICAgICAgcmVwbGFjZW1lbnQ6IFNBTklUSVpFX1JFUExBQ0VNRU5ULFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHNob3VsZFVuemlwQXBwID0gc2hvdWxkVW56aXBBcHAgfHwgWklQX0VYVFMuaW5jbHVkZXMocGF0aC5leHRuYW1lKGZpbGVOYW1lKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghZmlsZU5hbWUpIHtcbiAgICAgICAgLy8gYXNzaWduIHRoZSBkZWZhdWx0IGZpbGUgbmFtZSBhbmQgdGhlIGV4dGVuc2lvbiBpZiBub25lIGhhcyBiZWVuIGRldGVjdGVkXG4gICAgICAgIGNvbnN0IHJlc3VsdGluZ05hbWUgPSBiYXNlbmFtZVxuICAgICAgICAgID8gYmFzZW5hbWUuc3Vic3RyaW5nKDAsIGJhc2VuYW1lLmxlbmd0aCAtIGV4dG5hbWUubGVuZ3RoKVxuICAgICAgICAgIDogREVGQVVMVF9CQVNFTkFNRTtcbiAgICAgICAgbGV0IHJlc3VsdGluZ0V4dCA9IGV4dG5hbWU7XG4gICAgICAgIGlmICghc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucy5pbmNsdWRlcyhyZXN1bHRpbmdFeHQpKSB7XG4gICAgICAgICAgbG9nZ2VyLmluZm8oXG4gICAgICAgICAgICBgVGhlIGN1cnJlbnQgZmlsZSBleHRlbnNpb24gJyR7cmVzdWx0aW5nRXh0fScgaXMgbm90IHN1cHBvcnRlZC4gYCArXG4gICAgICAgICAgICAgIGBEZWZhdWx0aW5nIHRvICcke18uZmlyc3Qoc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucyl9J2BcbiAgICAgICAgICApO1xuICAgICAgICAgIHJlc3VsdGluZ0V4dCA9IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAoXy5maXJzdChzdXBwb3J0ZWRBcHBFeHRlbnNpb25zKSk7XG4gICAgICAgIH1cbiAgICAgICAgZmlsZU5hbWUgPSBgJHtyZXN1bHRpbmdOYW1lfSR7cmVzdWx0aW5nRXh0fWA7XG4gICAgICB9XG4gICAgICBjb25zdCB0YXJnZXRQYXRoID0gYXdhaXQgdGVtcERpci5wYXRoKHtcbiAgICAgICAgcHJlZml4OiBmaWxlTmFtZSxcbiAgICAgICAgc3VmZml4OiAnJyxcbiAgICAgIH0pO1xuICAgICAgbmV3QXBwID0gYXdhaXQgZG93bmxvYWRBcHAobmV3QXBwLCB0YXJnZXRQYXRoKTtcbiAgICB9IGVsc2UgaWYgKGF3YWl0IGZzLmV4aXN0cyhuZXdBcHApKSB7XG4gICAgICAvLyBVc2UgdGhlIGxvY2FsIGFwcFxuICAgICAgbG9nZ2VyLmluZm8oYFVzaW5nIGxvY2FsIGFwcCAnJHtuZXdBcHB9J2ApO1xuICAgICAgc2hvdWxkVW56aXBBcHAgPSBaSVBfRVhUUy5pbmNsdWRlcyhwYXRoLmV4dG5hbWUobmV3QXBwKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBlcnJvck1lc3NhZ2UgPSBgVGhlIGFwcGxpY2F0aW9uIGF0ICcke25ld0FwcH0nIGRvZXMgbm90IGV4aXN0IG9yIGlzIG5vdCBhY2Nlc3NpYmxlYDtcbiAgICAgIC8vIHByb3RvY29sIHZhbHVlIGZvciAnQzpcXFxcdGVtcCcgaXMgJ2M6Jywgc28gd2UgY2hlY2sgdGhlIGxlbmd0aCBhcyB3ZWxsXG4gICAgICBpZiAoXy5pc1N0cmluZyhwcm90b2NvbCkgJiYgcHJvdG9jb2wubGVuZ3RoID4gMikge1xuICAgICAgICBlcnJvck1lc3NhZ2UgPVxuICAgICAgICAgIGBUaGUgcHJvdG9jb2wgJyR7cHJvdG9jb2x9JyB1c2VkIGluICcke25ld0FwcH0nIGlzIG5vdCBzdXBwb3J0ZWQuIGAgK1xuICAgICAgICAgIGBPbmx5IGh0dHA6IGFuZCBodHRwczogcHJvdG9jb2xzIGFyZSBzdXBwb3J0ZWRgO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yTWVzc2FnZSk7XG4gICAgfVxuXG4gICAgY29uc3QgaXNQYWNrYWdlQUZpbGUgPSAoYXdhaXQgZnMuc3RhdChuZXdBcHApKS5pc0ZpbGUoKTtcbiAgICBpZiAoaXNQYWNrYWdlQUZpbGUpIHtcbiAgICAgIHBhY2thZ2VIYXNoID0gYXdhaXQgY2FsY3VsYXRlRmlsZUludGVncml0eShuZXdBcHApO1xuICAgIH1cblxuICAgIGlmIChpc1BhY2thZ2VBRmlsZSAmJiBzaG91bGRVbnppcEFwcCAmJiAhXy5pc0Z1bmN0aW9uKG9uUG9zdFByb2Nlc3MpKSB7XG4gICAgICBjb25zdCBhcmNoaXZlUGF0aCA9IG5ld0FwcDtcbiAgICAgIGlmIChwYWNrYWdlSGFzaCA9PT0gY2FjaGVkQXBwSW5mbz8ucGFja2FnZUhhc2gpIHtcbiAgICAgICAgY29uc3Qge2Z1bGxQYXRofSA9IGNhY2hlZEFwcEluZm87XG4gICAgICAgIGlmIChhd2FpdCBpc0FwcEludGVncml0eU9rKGZ1bGxQYXRoLCBjYWNoZWRBcHBJbmZvPy5pbnRlZ3JpdHkpKSB7XG4gICAgICAgICAgaWYgKGFyY2hpdmVQYXRoICE9PSBhcHApIHtcbiAgICAgICAgICAgIGF3YWl0IGZzLnJpbXJhZihhcmNoaXZlUGF0aCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxvZ2dlci5pbmZvKGBXaWxsIHJldXNlIHByZXZpb3VzbHkgY2FjaGVkIGFwcGxpY2F0aW9uIGF0ICcke2Z1bGxQYXRofSdgKTtcbiAgICAgICAgICByZXR1cm4gdmVyaWZ5QXBwRXh0ZW5zaW9uKGZ1bGxQYXRoLCBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBsb2dnZXIuaW5mbyhcbiAgICAgICAgICBgVGhlIGFwcGxpY2F0aW9uIGF0ICcke2Z1bGxQYXRofScgZG9lcyBub3QgZXhpc3QgYW55bW9yZSBgICtcbiAgICAgICAgICAgIGBvciBpdHMgaW50ZWdyaXR5IGhhcyBiZWVuIGRhbWFnZWQuIERlbGV0aW5nIGl0IGZyb20gdGhlIGNhY2hlYFxuICAgICAgICApO1xuICAgICAgICBBUFBMSUNBVElPTlNfQ0FDSEUuZGVsZXRlKGFwcCk7XG4gICAgICB9XG4gICAgICBjb25zdCB0bXBSb290ID0gYXdhaXQgdGVtcERpci5vcGVuRGlyKCk7XG4gICAgICB0cnkge1xuICAgICAgICBuZXdBcHAgPSBhd2FpdCB1bnppcEFwcChhcmNoaXZlUGF0aCwgdG1wUm9vdCwgc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucyk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpZiAobmV3QXBwICE9PSBhcmNoaXZlUGF0aCAmJiBhcmNoaXZlUGF0aCAhPT0gYXBwKSB7XG4gICAgICAgICAgYXdhaXQgZnMucmltcmFmKGFyY2hpdmVQYXRoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbG9nZ2VyLmluZm8oYFVuemlwcGVkIGxvY2FsIGFwcCB0byAnJHtuZXdBcHB9J2ApO1xuICAgIH0gZWxzZSBpZiAoIXBhdGguaXNBYnNvbHV0ZShuZXdBcHApKSB7XG4gICAgICBuZXdBcHAgPSBwYXRoLnJlc29sdmUocHJvY2Vzcy5jd2QoKSwgbmV3QXBwKTtcbiAgICAgIGxvZ2dlci53YXJuKFxuICAgICAgICBgVGhlIGN1cnJlbnQgYXBwbGljYXRpb24gcGF0aCAnJHthcHB9JyBpcyBub3QgYWJzb2x1dGUgYCArXG4gICAgICAgICAgYGFuZCBoYXMgYmVlbiByZXdyaXR0ZW4gdG8gJyR7bmV3QXBwfScuIENvbnNpZGVyIHVzaW5nIGFic29sdXRlIHBhdGhzIHJhdGhlciB0aGFuIHJlbGF0aXZlYFxuICAgICAgKTtcbiAgICAgIGFwcCA9IG5ld0FwcDtcbiAgICB9XG5cbiAgICBjb25zdCBzdG9yZUFwcEluQ2FjaGUgPSBhc3luYyAoYXBwUGF0aFRvQ2FjaGUpID0+IHtcbiAgICAgIGNvbnN0IGNhY2hlZEZ1bGxQYXRoID0gY2FjaGVkQXBwSW5mbz8uZnVsbFBhdGg7XG4gICAgICBpZiAoY2FjaGVkRnVsbFBhdGggJiYgY2FjaGVkRnVsbFBhdGggIT09IGFwcFBhdGhUb0NhY2hlKSB7XG4gICAgICAgIGF3YWl0IGZzLnJpbXJhZihjYWNoZWRGdWxsUGF0aCk7XG4gICAgICB9XG4gICAgICBjb25zdCBpbnRlZ3JpdHkgPSB7fTtcbiAgICAgIGlmICgoYXdhaXQgZnMuc3RhdChhcHBQYXRoVG9DYWNoZSkpLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgaW50ZWdyaXR5LmZvbGRlciA9IGF3YWl0IGNhbGN1bGF0ZUZvbGRlckludGVncml0eShhcHBQYXRoVG9DYWNoZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbnRlZ3JpdHkuZmlsZSA9IGF3YWl0IGNhbGN1bGF0ZUZpbGVJbnRlZ3JpdHkoYXBwUGF0aFRvQ2FjaGUpO1xuICAgICAgfVxuICAgICAgQVBQTElDQVRJT05TX0NBQ0hFLnNldChhcHAsIHtcbiAgICAgICAgLi4ucmVtb3RlQXBwUHJvcHMsXG4gICAgICAgIHRpbWVzdGFtcDogRGF0ZS5ub3coKSxcbiAgICAgICAgcGFja2FnZUhhc2gsXG4gICAgICAgIGludGVncml0eSxcbiAgICAgICAgZnVsbFBhdGg6IGFwcFBhdGhUb0NhY2hlLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gYXBwUGF0aFRvQ2FjaGU7XG4gICAgfTtcblxuICAgIGlmIChfLmlzRnVuY3Rpb24ob25Qb3N0UHJvY2VzcykpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG9uUG9zdFByb2Nlc3Moe1xuICAgICAgICBjYWNoZWRBcHBJbmZvOiBfLmNsb25lKGNhY2hlZEFwcEluZm8pLFxuICAgICAgICBpc1VybCxcbiAgICAgICAgaGVhZGVyczogXy5jbG9uZShoZWFkZXJzKSxcbiAgICAgICAgYXBwUGF0aDogbmV3QXBwLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gIXJlc3VsdD8uYXBwUGF0aCB8fCBhcHAgPT09IHJlc3VsdD8uYXBwUGF0aCB8fCAhKGF3YWl0IGZzLmV4aXN0cyhyZXN1bHQ/LmFwcFBhdGgpKVxuICAgICAgICA/IG5ld0FwcFxuICAgICAgICA6IGF3YWl0IHN0b3JlQXBwSW5DYWNoZShyZXN1bHQuYXBwUGF0aCk7XG4gICAgfVxuXG4gICAgdmVyaWZ5QXBwRXh0ZW5zaW9uKG5ld0FwcCwgc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucyk7XG4gICAgcmV0dXJuIGFwcCAhPT0gbmV3QXBwICYmIChwYWNrYWdlSGFzaCB8fCBfLnZhbHVlcyhyZW1vdGVBcHBQcm9wcykuc29tZShCb29sZWFuKSlcbiAgICAgID8gYXdhaXQgc3RvcmVBcHBJbkNhY2hlKG5ld0FwcClcbiAgICAgIDogbmV3QXBwO1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZG93bmxvYWRBcHAoYXBwLCB0YXJnZXRQYXRoKSB7XG4gIGNvbnN0IHtocmVmfSA9IHVybC5wYXJzZShhcHApO1xuICB0cnkge1xuICAgIGF3YWl0IG5ldC5kb3dubG9hZEZpbGUoaHJlZiwgdGFyZ2V0UGF0aCwge1xuICAgICAgdGltZW91dDogQVBQX0RPV05MT0FEX1RJTUVPVVRfTVMsXG4gICAgfSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGRvd25sb2FkIHRoZSBhcHA6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIH1cbiAgcmV0dXJuIHRhcmdldFBhdGg7XG59XG5cbi8qKlxuICogRXh0cmFjdHMgdGhlIGJ1bmRsZSBmcm9tIGFuIGFyY2hpdmUgaW50byB0aGUgZ2l2ZW4gZm9sZGVyXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHppcFBhdGggRnVsbCBwYXRoIHRvIHRoZSBhcmNoaXZlIGNvbnRhaW5pbmcgdGhlIGJ1bmRsZVxuICogQHBhcmFtIHtzdHJpbmd9IGRzdFJvb3QgRnVsbCBwYXRoIHRvIHRoZSBmb2xkZXIgd2hlcmUgdGhlIGV4dHJhY3RlZCBidW5kbGVcbiAqIHNob3VsZCBiZSBwbGFjZWRcbiAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPnxzdHJpbmd9IHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMgVGhlIGxpc3Qgb2YgZXh0ZW5zaW9uc1xuICogdGhlIHRhcmdldCBhcHBsaWNhdGlvbiBidW5kbGUgc3VwcG9ydHMsIGZvciBleGFtcGxlIFsnLmFwaycsICcuYXBrcyddIGZvclxuICogQW5kcm9pZCBwYWNrYWdlc1xuICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nPn0gRnVsbCBwYXRoIHRvIHRoZSBidW5kbGUgaW4gdGhlIGRlc3RpbmF0aW9uIGZvbGRlclxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBnaXZlbiBhcmNoaXZlIGlzIGludmFsaWQgb3Igbm8gYXBwbGljYXRpb24gYnVuZGxlc1xuICogaGF2ZSBiZWVuIGZvdW5kIGluc2lkZVxuICovXG5hc3luYyBmdW5jdGlvbiB1bnppcEFwcCh6aXBQYXRoLCBkc3RSb290LCBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zKSB7XG4gIGF3YWl0IHppcC5hc3NlcnRWYWxpZFppcCh6aXBQYXRoKTtcblxuICBpZiAoIV8uaXNBcnJheShzdXBwb3J0ZWRBcHBFeHRlbnNpb25zKSkge1xuICAgIHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMgPSBbc3VwcG9ydGVkQXBwRXh0ZW5zaW9uc107XG4gIH1cblxuICBjb25zdCB0bXBSb290ID0gYXdhaXQgdGVtcERpci5vcGVuRGlyKCk7XG4gIHRyeSB7XG4gICAgbG9nZ2VyLmRlYnVnKGBVbnppcHBpbmcgJyR7emlwUGF0aH0nYCk7XG4gICAgY29uc3QgdGltZXIgPSBuZXcgdGltaW5nLlRpbWVyKCkuc3RhcnQoKTtcbiAgICBjb25zdCB1c2VTeXN0ZW1VbnppcEVudiA9IHByb2Nlc3MuZW52LkFQUElVTV9QUkVGRVJfU1lTVEVNX1VOWklQO1xuICAgIGNvbnN0IHVzZVN5c3RlbVVuemlwID1cbiAgICAgIF8uaXNFbXB0eSh1c2VTeXN0ZW1VbnppcEVudikgfHwgIVsnMCcsICdmYWxzZSddLmluY2x1ZGVzKF8udG9Mb3dlcih1c2VTeXN0ZW1VbnppcEVudikpO1xuICAgIC8qKlxuICAgICAqIEF0dGVtcHQgdG8gdXNlIHVzZSB0aGUgc3lzdGVtIGB1bnppcGAgKGUuZy4sIGAvdXNyL2Jpbi91bnppcGApIGR1ZVxuICAgICAqIHRvIHRoZSBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudCBpdCBwcm92aWRlcyBvdmVyIHRoZSBuYXRpdmVcbiAgICAgKiBKUyBcInVuemlwXCIgaW1wbGVtZW50YXRpb24uXG4gICAgICogQHR5cGUge2ltcG9ydCgnQGFwcGl1bS9zdXBwb3J0L2xpYi96aXAnKS5FeHRyYWN0QWxsT3B0aW9uc31cbiAgICAgKi9cbiAgICBjb25zdCBleHRyYWN0aW9uT3B0cyA9IHt1c2VTeXN0ZW1VbnppcH07XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FwcGl1bS9hcHBpdW0vaXNzdWVzLzE0MTAwXG4gICAgaWYgKHBhdGguZXh0bmFtZSh6aXBQYXRoKSA9PT0gSVBBX0VYVCkge1xuICAgICAgbG9nZ2VyLmRlYnVnKFxuICAgICAgICBgRW5mb3JjaW5nIFVURi04IGVuY29kaW5nIG9uIHRoZSBleHRyYWN0ZWQgZmlsZSBuYW1lcyBmb3IgJyR7cGF0aC5iYXNlbmFtZSh6aXBQYXRoKX0nYFxuICAgICAgKTtcbiAgICAgIGV4dHJhY3Rpb25PcHRzLmZpbGVOYW1lc0VuY29kaW5nID0gJ3V0ZjgnO1xuICAgIH1cbiAgICBhd2FpdCB6aXAuZXh0cmFjdEFsbFRvKHppcFBhdGgsIHRtcFJvb3QsIGV4dHJhY3Rpb25PcHRzKTtcbiAgICBjb25zdCBnbG9iUGF0dGVybiA9IGAqKi8qLisoJHtzdXBwb3J0ZWRBcHBFeHRlbnNpb25zXG4gICAgICAubWFwKChleHQpID0+IGV4dC5yZXBsYWNlKC9eXFwuLywgJycpKVxuICAgICAgLmpvaW4oJ3wnKX0pYDtcbiAgICBjb25zdCBzb3J0ZWRCdW5kbGVJdGVtcyA9IChcbiAgICAgIGF3YWl0IGZzLmdsb2IoZ2xvYlBhdHRlcm4sIHtcbiAgICAgICAgY3dkOiB0bXBSb290LFxuICAgICAgICBzdHJpY3Q6IGZhbHNlLFxuICAgICAgICAvLyBHZXQgdGhlIHRvcCBsZXZlbCBtYXRjaFxuICAgICAgfSlcbiAgICApLnNvcnQoKGEsIGIpID0+IGEuc3BsaXQocGF0aC5zZXApLmxlbmd0aCAtIGIuc3BsaXQocGF0aC5zZXApLmxlbmd0aCk7XG4gICAgaWYgKF8uaXNFbXB0eShzb3J0ZWRCdW5kbGVJdGVtcykpIHtcbiAgICAgIGxvZ2dlci5lcnJvckFuZFRocm93KFxuICAgICAgICBgQXBwIHVuemlwcGVkIE9LLCBidXQgd2UgY291bGQgbm90IGZpbmQgYW55ICcke3N1cHBvcnRlZEFwcEV4dGVuc2lvbnN9JyBgICtcbiAgICAgICAgICB1dGlsLnBsdXJhbGl6ZSgnYnVuZGxlJywgc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucy5sZW5ndGgsIGZhbHNlKSArXG4gICAgICAgICAgYCBpbiBpdC4gTWFrZSBzdXJlIHlvdXIgYXJjaGl2ZSBjb250YWlucyBhdCBsZWFzdCBvbmUgcGFja2FnZSBoYXZpbmcgYCArXG4gICAgICAgICAgYCcke3N1cHBvcnRlZEFwcEV4dGVuc2lvbnN9JyAke3V0aWwucGx1cmFsaXplKFxuICAgICAgICAgICAgJ2V4dGVuc2lvbicsXG4gICAgICAgICAgICBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zLmxlbmd0aCxcbiAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgKX1gXG4gICAgICApO1xuICAgIH1cbiAgICBsb2dnZXIuZGVidWcoXG4gICAgICBgRXh0cmFjdGVkICR7dXRpbC5wbHVyYWxpemUoJ2J1bmRsZSBpdGVtJywgc29ydGVkQnVuZGxlSXRlbXMubGVuZ3RoLCB0cnVlKX0gYCArXG4gICAgICAgIGBmcm9tICcke3ppcFBhdGh9JyBpbiAke01hdGgucm91bmQoXG4gICAgICAgICAgdGltZXIuZ2V0RHVyYXRpb24oKS5hc01pbGxpU2Vjb25kc1xuICAgICAgICApfW1zOiAke3NvcnRlZEJ1bmRsZUl0ZW1zfWBcbiAgICApO1xuICAgIGNvbnN0IG1hdGNoZWRCdW5kbGUgPSAvKiogQHR5cGUge3N0cmluZ30gKi8gKF8uZmlyc3Qoc29ydGVkQnVuZGxlSXRlbXMpKTtcbiAgICBsb2dnZXIuaW5mbyhgQXNzdW1pbmcgJyR7bWF0Y2hlZEJ1bmRsZX0nIGlzIHRoZSBjb3JyZWN0IGJ1bmRsZWApO1xuICAgIGNvbnN0IGRzdFBhdGggPSBwYXRoLnJlc29sdmUoZHN0Um9vdCwgcGF0aC5iYXNlbmFtZShtYXRjaGVkQnVuZGxlKSk7XG4gICAgYXdhaXQgZnMubXYocGF0aC5yZXNvbHZlKHRtcFJvb3QsIG1hdGNoZWRCdW5kbGUpLCBkc3RQYXRoLCB7bWtkaXJwOiB0cnVlfSk7XG4gICAgcmV0dXJuIGRzdFBhdGg7XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgZnMucmltcmFmKHRtcFJvb3QpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzUGFja2FnZU9yQnVuZGxlKGFwcCkge1xuICByZXR1cm4gL14oW2EtekEtWjAtOVxcLV9dK1xcLlthLXpBLVowLTlcXC1fXSspKyQvLnRlc3QoYXBwKTtcbn1cblxuLyoqXG4gKiBGaW5kcyBhbGwgaW5zdGFuY2VzICdmaXJzdEtleScgYW5kIGNyZWF0ZSBhIGR1cGxpY2F0ZSB3aXRoIHRoZSBrZXkgJ3NlY29uZEtleScsXG4gKiBEbyB0aGUgc2FtZSB0aGluZyBpbiByZXZlcnNlLiBJZiB3ZSBmaW5kICdzZWNvbmRLZXknLCBjcmVhdGUgYSBkdXBsaWNhdGUgd2l0aCB0aGUga2V5ICdmaXJzdEtleScuXG4gKlxuICogVGhpcyB3aWxsIGNhdXNlIGtleXMgdG8gYmUgb3ZlcndyaXR0ZW4gaWYgdGhlIG9iamVjdCBjb250YWlucyAnZmlyc3RLZXknIGFuZCAnc2Vjb25kS2V5Jy5cblxuICogQHBhcmFtIHsqfSBpbnB1dCBBbnkgdHlwZSBvZiBpbnB1dFxuICogQHBhcmFtIHtTdHJpbmd9IGZpcnN0S2V5IFRoZSBmaXJzdCBrZXkgdG8gZHVwbGljYXRlXG4gKiBAcGFyYW0ge1N0cmluZ30gc2Vjb25kS2V5IFRoZSBzZWNvbmQga2V5IHRvIGR1cGxpY2F0ZVxuICovXG5mdW5jdGlvbiBkdXBsaWNhdGVLZXlzKGlucHV0LCBmaXJzdEtleSwgc2Vjb25kS2V5KSB7XG4gIC8vIElmIGFycmF5IHByb3ZpZGVkLCByZWN1cnNpdmVseSBjYWxsIG9uIGFsbCBlbGVtZW50c1xuICBpZiAoXy5pc0FycmF5KGlucHV0KSkge1xuICAgIHJldHVybiBpbnB1dC5tYXAoKGl0ZW0pID0+IGR1cGxpY2F0ZUtleXMoaXRlbSwgZmlyc3RLZXksIHNlY29uZEtleSkpO1xuICB9XG5cbiAgLy8gSWYgb2JqZWN0LCBjcmVhdGUgZHVwbGljYXRlcyBmb3Iga2V5cyBhbmQgdGhlbiByZWN1cnNpdmVseSBjYWxsIG9uIHZhbHVlc1xuICBpZiAoXy5pc1BsYWluT2JqZWN0KGlucHV0KSkge1xuICAgIGNvbnN0IHJlc3VsdE9iaiA9IHt9O1xuICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBfLnRvUGFpcnMoaW5wdXQpKSB7XG4gICAgICBjb25zdCByZWN1cnNpdmVseUNhbGxlZFZhbHVlID0gZHVwbGljYXRlS2V5cyh2YWx1ZSwgZmlyc3RLZXksIHNlY29uZEtleSk7XG4gICAgICBpZiAoa2V5ID09PSBmaXJzdEtleSkge1xuICAgICAgICByZXN1bHRPYmpbc2Vjb25kS2V5XSA9IHJlY3Vyc2l2ZWx5Q2FsbGVkVmFsdWU7XG4gICAgICB9IGVsc2UgaWYgKGtleSA9PT0gc2Vjb25kS2V5KSB7XG4gICAgICAgIHJlc3VsdE9ialtmaXJzdEtleV0gPSByZWN1cnNpdmVseUNhbGxlZFZhbHVlO1xuICAgICAgfVxuICAgICAgcmVzdWx0T2JqW2tleV0gPSByZWN1cnNpdmVseUNhbGxlZFZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0T2JqO1xuICB9XG5cbiAgLy8gQmFzZSBjYXNlLiBSZXR1cm4gcHJpbWl0aXZlcyB3aXRob3V0IGRvaW5nIGFueXRoaW5nLlxuICByZXR1cm4gaW5wdXQ7XG59XG5cbi8qKlxuICogVGFrZXMgYSBkZXNpcmVkIGNhcGFiaWxpdHkgYW5kIHRyaWVzIHRvIEpTT04ucGFyc2UgaXQgYXMgYW4gYXJyYXksXG4gKiBhbmQgZWl0aGVyIHJldHVybnMgdGhlIHBhcnNlZCBhcnJheSBvciBhIHNpbmdsZXRvbiBhcnJheS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3xBcnJheTxTdHJpbmc+fSBjYXAgQSBkZXNpcmVkIGNhcGFiaWxpdHlcbiAqL1xuZnVuY3Rpb24gcGFyc2VDYXBzQXJyYXkoY2FwKSB7XG4gIGlmIChfLmlzQXJyYXkoY2FwKSkge1xuICAgIHJldHVybiBjYXA7XG4gIH1cblxuICBsZXQgcGFyc2VkQ2FwcztcbiAgdHJ5IHtcbiAgICBwYXJzZWRDYXBzID0gSlNPTi5wYXJzZShjYXApO1xuICAgIGlmIChfLmlzQXJyYXkocGFyc2VkQ2FwcykpIHtcbiAgICAgIHJldHVybiBwYXJzZWRDYXBzO1xuICAgIH1cbiAgfSBjYXRjaCAoaWduKSB7XG4gICAgbG9nZ2VyLndhcm4oYEZhaWxlZCB0byBwYXJzZSBjYXBhYmlsaXR5IGFzIEpTT04gYXJyYXlgKTtcbiAgfVxuICBpZiAoXy5pc1N0cmluZyhjYXApKSB7XG4gICAgcmV0dXJuIFtjYXBdO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgbXVzdCBwcm92aWRlIGEgc3RyaW5nIG9yIEpTT04gQXJyYXk7IHJlY2VpdmVkICR7Y2FwfWApO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIGEgc3RyaW5nIHRoYXQgdW5pcXVlbHkgZGVzY3JpYmVzIGRyaXZlciBpbnN0YW5jZVxuICpcbiAqIEBwYXJhbSB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuQ29yZX0gb2JqIGRyaXZlciBpbnN0YW5jZVxuICogQHBhcmFtIHtzdHJpbmc/fSBzZXNzaW9uSWQgc2Vzc2lvbiBpZGVudGlmaWVyIChpZiBleGlzdHMpXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZURyaXZlckxvZ1ByZWZpeChvYmosIHNlc3Npb25JZCA9IG51bGwpIHtcbiAgY29uc3QgaW5zdGFuY2VOYW1lID0gYCR7b2JqLmNvbnN0cnVjdG9yLm5hbWV9QCR7bm9kZS5nZXRPYmplY3RJZChvYmopLnN1YnN0cmluZygwLCA0KX1gO1xuICByZXR1cm4gc2Vzc2lvbklkID8gYCR7aW5zdGFuY2VOYW1lfSAoJHtzZXNzaW9uSWQuc3Vic3RyaW5nKDAsIDgpfSlgIDogaW5zdGFuY2VOYW1lO1xufVxuXG4vKiogQHR5cGUge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkRyaXZlckhlbHBlcnN9ICovXG5leHBvcnQgZGVmYXVsdCB7XG4gIGNvbmZpZ3VyZUFwcCxcbiAgaXNQYWNrYWdlT3JCdW5kbGUsXG4gIGR1cGxpY2F0ZUtleXMsXG4gIHBhcnNlQ2Fwc0FycmF5LFxuICBnZW5lcmF0ZURyaXZlckxvZ1ByZWZpeCxcbn07XG5leHBvcnQge2NvbmZpZ3VyZUFwcCwgaXNQYWNrYWdlT3JCdW5kbGUsIGR1cGxpY2F0ZUtleXMsIHBhcnNlQ2Fwc0FycmF5LCBnZW5lcmF0ZURyaXZlckxvZ1ByZWZpeH07XG5cbi8qKlxuICogQHR5cGVkZWYgUmVtb3RlQXBwUHJvcHNcbiAqIEBwcm9wZXJ0eSB7RGF0ZT99IGxhc3RNb2RpZmllZFxuICogQHByb3BlcnR5IHtib29sZWFufSBpbW11dGFibGVcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyP30gbWF4QWdlXG4gKi9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLE9BQU8sR0FBRyxNQUFoQjtBQUNBLE1BQU1DLFFBQVEsR0FBRyxDQUFDLE1BQUQsRUFBU0QsT0FBVCxDQUFqQjtBQUNBLE1BQU1FLGNBQWMsR0FBRyxDQUFDLGlCQUFELEVBQW9CLDhCQUFwQixFQUFvRCxpQkFBcEQsQ0FBdkI7QUFDQSxNQUFNQyxtQkFBbUIsR0FBRyxPQUFPLEVBQVAsR0FBWSxFQUFaLEdBQWlCLEVBQTdDO0FBQ0EsTUFBTUMsZUFBZSxHQUFHLElBQXhCO0FBQ0EsTUFBTUMsa0JBQWtCLEdBQUcsSUFBSUMsaUJBQUosQ0FBUTtFQUNqQ0MsR0FBRyxFQUFFSCxlQUQ0QjtFQUVqQ0ksR0FBRyxFQUFFTCxtQkFGNEI7RUFHakNNLGNBQWMsRUFBRSxJQUhpQjtFQUlqQ0MsT0FBTyxFQUFFLENBQUNDLEdBQUQsRUFBTTtJQUFDQztFQUFELENBQU4sS0FBcUI7SUFDNUJDLGVBQUEsQ0FBT0MsSUFBUCxDQUNHLG9CQUFtQkgsR0FBSSxnQkFBZUMsUUFBUyxRQUFoRCxH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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../lib/basedriver/logger.js"],"names":[],"mappings":";AAEA
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../lib/basedriver/logger.js"],"names":[],"mappings":";AAEA,+DAA2C"}
|
|
@@ -13,4 +13,4 @@ const log = _support.logger.getLogger('BaseDriver');
|
|
|
13
13
|
|
|
14
14
|
var _default = log;
|
|
15
15
|
exports.default = _default;
|
|
16
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsb2ciLCJsb2dnZXIiLCJnZXRMb2dnZXIiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvYmFzZWRyaXZlci9sb2dnZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtsb2dnZXJ9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5cbmNvbnN0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ0Jhc2VEcml2ZXInKTtcbmV4cG9ydCBkZWZhdWx0IGxvZztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBRUEsTUFBTUEsR0FBRyxHQUFHQyxlQUFBLENBQU9DLFNBQVAsQ0FBaUIsWUFBakIsQ0FBWjs7ZUFDZUYsRyJ9
|
package/build/lib/constants.js
CHANGED
|
@@ -22,4 +22,4 @@ const PROTOCOLS = {
|
|
|
22
22
|
exports.PROTOCOLS = PROTOCOLS;
|
|
23
23
|
const DEFAULT_BASE_PATH = '';
|
|
24
24
|
exports.DEFAULT_BASE_PATH = DEFAULT_BASE_PATH;
|
|
25
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNQVhfTE9HX0JPRFlfTEVOR1RIIiwiTUpTT05XUF9FTEVNRU5UX0tFWSIsIlczQ19FTEVNRU5UX0tFWSIsInV0aWwiLCJXM0NfV0VCX0VMRU1FTlRfSURFTlRJRklFUiIsIlBST1RPQ09MUyIsIlczQyIsIk1KU09OV1AiLCJERUZBVUxUX0JBU0VfUEFUSCJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9jb25zdGFudHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt1dGlsfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuXG4vLyBUaGUgZGVmYXVsdCBtYXhpbXVtIGxlbmd0aCBvZiBhIHNpbmdsZSBsb2cgcmVjb3JkXG4vLyBjb250YWluaW5nIGh0dHAgcmVxdWVzdC9yZXNwb25zZSBib2R5XG4vLyBUaGlzIHZhbHVlIGNvdWxkIGJlIGdsb2JhbGx5IGN1c3RvbWl6ZWQgdXNpbmcgdGhlIC0tbG9nLWZpbHRlcnNcbi8vIHNlcnZlciBmZWF0dXJlLiBFeGFtcGxlIHJ1bGU6XG4vLyBcdHtcInBhdHRlcm5cIjogXCIoLnsxLDE1MH0pLipcIiwgXCJmbGFnc1wiOiBcInNcIiwgXCJyZXBsYWNlclwiOiBcIiQxXCJ9XG4vLyBeIGN1dHMgYWxsIGxvZyByZWNvcmRzIHRvIG1heGltdW0gMTUwIGNoYXJzXG5jb25zdCBNQVhfTE9HX0JPRFlfTEVOR1RIID0gMTAyNDtcbmNvbnN0IE1KU09OV1BfRUxFTUVOVF9LRVkgPSAnRUxFTUVOVCc7XG5jb25zdCBXM0NfRUxFTUVOVF9LRVkgPSB1dGlsLlczQ19XRUJfRUxFTUVOVF9JREVOVElGSUVSO1xuY29uc3QgUFJPVE9DT0xTID0ge1xuICBXM0M6ICdXM0MnLFxuICBNSlNPTldQOiAnTUpTT05XUCcsXG59O1xuXG4vLyBCZWZvcmUgQXBwaXVtIDIuMCwgdGhpcyBkZWZhdWx0IHZhbHVlIHdhcyAnL3dkL2h1YicgYnkgaGlzdG9yaWNhbCByZWFzb25zLlxuY29uc3QgREVGQVVMVF9CQVNFX1BBVEggPSAnJztcblxuZXhwb3J0IHtNQVhfTE9HX0JPRFlfTEVOR1RILCBNSlNPTldQX0VMRU1FTlRfS0VZLCBXM0NfRUxFTUVOVF9LRVksIFBST1RPQ09MUywgREVGQVVMVF9CQVNFX1BBVEh9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFRQSxNQUFNQSxtQkFBbUIsR0FBRyxJQUE1Qjs7QUFDQSxNQUFNQyxtQkFBbUIsR0FBRyxTQUE1Qjs7QUFDQSxNQUFNQyxlQUFlLEdBQUdDLGFBQUEsQ0FBS0MsMEJBQTdCOztBQUNBLE1BQU1DLFNBQVMsR0FBRztFQUNoQkMsR0FBRyxFQUFFLEtBRFc7RUFFaEJDLE9BQU8sRUFBRTtBQUZPLENBQWxCOztBQU1BLE1BQU1DLGlCQUFpQixHQUFHLEVBQTFCIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crash.d.ts","sourceRoot":"","sources":["../../../lib/express/crash.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"crash.d.ts","sourceRoot":"","sources":["../../../lib/express/crash.js"],"names":[],"mappings":"AAEA,qCAEC;AAED,qCAEC"}
|
|
@@ -17,4 +17,4 @@ function produceError() {
|
|
|
17
17
|
function produceCrash() {
|
|
18
18
|
throw new Error('We just tried to crash Appium!');
|
|
19
19
|
}
|
|
20
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwcm9kdWNlRXJyb3IiLCJlcnJvcnMiLCJVbmtub3duQ29tbWFuZEVycm9yIiwicHJvZHVjZUNyYXNoIiwiRXJyb3IiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZXhwcmVzcy9jcmFzaC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2Vycm9yc30gZnJvbSAnLi4vcHJvdG9jb2wnO1xuXG5mdW5jdGlvbiBwcm9kdWNlRXJyb3IoKSB7XG4gIHRocm93IG5ldyBlcnJvcnMuVW5rbm93bkNvbW1hbmRFcnJvcignUHJvZHVjZWQgZ2VuZXJpYyBlcnJvciBmb3IgdGVzdGluZycpO1xufVxuXG5mdW5jdGlvbiBwcm9kdWNlQ3Jhc2goKSB7XG4gIHRocm93IG5ldyBFcnJvcignV2UganVzdCB0cmllZCB0byBjcmFzaCBBcHBpdW0hJyk7XG59XG5cbmV4cG9ydCB7cHJvZHVjZUVycm9yLCBwcm9kdWNlQ3Jhc2h9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7O0FBRUEsU0FBU0EsWUFBVCxHQUF3QjtFQUN0QixNQUFNLElBQUlDLGdCQUFBLENBQU9DLG1CQUFYLENBQStCLG9DQUEvQixDQUFOO0FBQ0Q7O0FBRUQsU0FBU0MsWUFBVCxHQUF3QjtFQUN0QixNQUFNLElBQUlDLEtBQUosQ0FBVSxnQ0FBVixDQUFOO0FBQ0QifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"express-logging.d.ts","sourceRoot":"","sources":["../../../lib/express/express-logging.js"],"names":[],"mappings":"AAoCA,
|
|
1
|
+
{"version":3,"file":"express-logging.d.ts","sourceRoot":"","sources":["../../../lib/express/express-logging.js"],"names":[],"mappings":"AAoCA,kCAEG;AAIH,oCAcE"}
|
|
@@ -67,4 +67,4 @@ const startLogFormatter = (0, _morgan.default)((tokens, req, res) => {
|
|
|
67
67
|
immediate: true
|
|
68
68
|
});
|
|
69
69
|
exports.startLogFormatter = startLogFormatter;
|
|
70
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
70
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21waWxlIiwiZm10IiwicmVwbGFjZSIsIl8iLCJuYW1lIiwiYXJnIiwianMiLCJGdW5jdGlvbiIsInJlcXVlc3RFbmRMb2dnaW5nRm9ybWF0IiwidG9rZW5zIiwicmVxIiwicmVzIiwic3RhdHVzIiwic3RhdHVzQ29kZSIsInN0YXR1c1N0ciIsInJlZCIsInllbGxvdyIsImN5YW4iLCJncmVlbiIsImZuIiwid2hpdGUiLCJncmV5IiwiZW5kTG9nRm9ybWF0dGVyIiwibW9yZ2FuIiwibG9nIiwiaW5mbyIsImpzb25SZXNwIiwicmVxdWVzdFN0YXJ0TG9nZ2luZ0Zvcm1hdCIsInN0YXJ0TG9nRm9ybWF0dGVyIiwicmVxQm9keSIsImJvZHkiLCJ0cnVuY2F0ZSIsImlzU3RyaW5nIiwiSlNPTiIsInN0cmluZ2lmeSIsImxlbmd0aCIsIk1BWF9MT0dfQk9EWV9MRU5HVEgiLCJpZ24iLCJpbW1lZGlhdGUiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZXhwcmVzcy9leHByZXNzLWxvZ2dpbmcuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCAnQGNvbG9ycy9jb2xvcnMnO1xuaW1wb3J0IG1vcmdhbiBmcm9tICdtb3JnYW4nO1xuaW1wb3J0IGxvZyBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQge01BWF9MT0dfQk9EWV9MRU5HVEh9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbi8vIENvcGllZCB0aGUgbW9yZ2FuIGNvbXBpbGUgZnVuY3Rpb24gb3ZlciBzbyB0aGF0IGNvb2xlciBmb3JtYXRzXG4vLyBtYXkgYmUgY29uZmlndXJlZFxuZnVuY3Rpb24gY29tcGlsZShmbXQpIHtcbiAgLy8gZXNjYXBlIHF1b3Rlc1xuICBmbXQgPSBmbXQucmVwbGFjZSgvXCIvZywgJ1xcXFxcIicpO1xuICBmbXQgPSBmbXQucmVwbGFjZSgvOihbLVxcd117Mix9KSg/OlxcWyhbXlxcXV0rKVxcXSk/L2csIGZ1bmN0aW9uIHJlcGxhY2UoXywgbmFtZSwgYXJnKSB7XG4gICAgcmV0dXJuIGBcIlxcbiAgICArICh0b2tlbnNbXCIke25hbWV9XCJdKHJlcSwgcmVzLCBcIiR7YXJnfVwiKSB8fCBcIi1cIikgKyBcImA7XG4gIH0pO1xuICBsZXQganMgPSBgICByZXR1cm4gXCIke2ZtdH1cIjtgO1xuICByZXR1cm4gbmV3IEZ1bmN0aW9uKCd0b2tlbnMsIHJlcSwgcmVzJywganMpO1xufVxuXG5mdW5jdGlvbiByZXF1ZXN0RW5kTG9nZ2luZ0Zvcm1hdCh0b2tlbnMsIHJlcSwgcmVzKSB7XG4gIGxldCBzdGF0dXMgPSByZXMuc3RhdHVzQ29kZTtcbiAgbGV0IHN0YXR1c1N0ciA9ICc6c3RhdHVzJztcbiAgaWYgKHN0YXR1cyA+PSA1MDApIHtcbiAgICBzdGF0dXNTdHIgPSBzdGF0dXNTdHIucmVkO1xuICB9IGVsc2UgaWYgKHN0YXR1cyA+PSA0MDApIHtcbiAgICBzdGF0dXNTdHIgPSBzdGF0dXNTdHIueWVsbG93O1xuICB9IGVsc2UgaWYgKHN0YXR1cyA+PSAzMDApIHtcbiAgICBzdGF0dXNTdHIgPSBzdGF0dXNTdHIuY3lhbjtcbiAgfSBlbHNlIHtcbiAgICBzdGF0dXNTdHIgPSBzdGF0dXNTdHIuZ3JlZW47XG4gIH1cbiAgbGV0IGZuID0gY29tcGlsZShcbiAgICBgJHsnPC0tIDptZXRob2QgOnVybCAnLndoaXRlfSR7c3RhdHVzU3RyfSAkeyc6cmVzcG9uc2UtdGltZSBtcyAtIDpyZXNbY29udGVudC1sZW5ndGhdJy5ncmV5fWBcbiAgKTtcbiAgcmV0dXJuIGZuKHRva2VucywgcmVxLCByZXMpO1xufVxuXG5jb25zdCBlbmRMb2dGb3JtYXR0ZXIgPSBtb3JnYW4oKHRva2VucywgcmVxLCByZXMpID0+IHtcbiAgbG9nLmluZm8ocmVxdWVzdEVuZExvZ2dpbmdGb3JtYXQodG9rZW5zLCByZXEsIHJlcyksIChyZXMuanNvblJlc3AgfHwgJycpLmdyZXkpO1xufSk7XG5cbmNvbnN0IHJlcXVlc3RTdGFydExvZ2dpbmdGb3JtYXQgPSBjb21waWxlKGAkeyctLT4nLndoaXRlfSAkeyc6bWV0aG9kJy53aGl0ZX0gJHsnOnVybCcud2hpdGV9YCk7XG5cbmNvbnN0IHN0YXJ0TG9nRm9ybWF0dGVyID0gbW9yZ2FuKFxuICAodG9rZW5zLCByZXEsIHJlcykgPT4ge1xuICAgIC8vIG1vcmdhbiBvdXRwdXQgaXMgcmVkaXJlY3RlZCBzdHJhaWdodCB0byB3aW5zdG9uXG4gICAgbGV0IHJlcUJvZHkgPSAnJztcbiAgICBpZiAocmVxLmJvZHkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJlcUJvZHkgPSBfLnRydW5jYXRlKF8uaXNTdHJpbmcocmVxLmJvZHkpID8gcmVxLmJvZHkgOiBKU09OLnN0cmluZ2lmeShyZXEuYm9keSksIHtcbiAgICAgICAgICBsZW5ndGg6IE1BWF9MT0dfQk9EWV9MRU5HVEgsXG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoaWduKSB7fVxuICAgIH1cbiAgICBsb2cuaW5mbyhyZXF1ZXN0U3RhcnRMb2dnaW5nRm9ybWF0KHRva2VucywgcmVxLCByZXMpLCByZXFCb2R5LmdyZXkpO1xuICB9LFxuICB7aW1tZWRpYXRlOiB0cnVlfVxuKTtcblxuZXhwb3J0IHtlbmRMb2dGb3JtYXR0ZXIsIHN0YXJ0TG9nRm9ybWF0dGVyfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFJQSxTQUFTQSxPQUFULENBQWlCQyxHQUFqQixFQUFzQjtFQUVwQkEsR0FBRyxHQUFHQSxHQUFHLENBQUNDLE9BQUosQ0FBWSxJQUFaLEVBQWtCLEtBQWxCLENBQU47RUFDQUQsR0FBRyxHQUFHQSxHQUFHLENBQUNDLE9BQUosQ0FBWSxnQ0FBWixFQUE4QyxTQUFTQSxPQUFULENBQWlCQyxDQUFqQixFQUFvQkMsSUFBcEIsRUFBMEJDLEdBQTFCLEVBQStCO0lBQ2pGLE9BQVEscUJBQW9CRCxJQUFLLGlCQUFnQkMsR0FBSSxnQkFBckQ7RUFDRCxDQUZLLENBQU47RUFHQSxJQUFJQyxFQUFFLEdB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
|
|
@@ -190,4 +190,4 @@ async function handleIdempotency(req, res, next) {
|
|
|
190
190
|
});
|
|
191
191
|
}
|
|
192
192
|
}
|
|
193
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDQUNIRV9TSVpFIiwiSURFTVBPVEVOVF9SRVNQT05TRVMiLCJMUlUiLCJtYXgiLCJ1cGRhdGVBZ2VPbkdldCIsImRpc3Bvc2UiLCJrZXkiLCJyZXNwb25zZSIsImZzIiwicmltcmFmU3luYyIsIk1PTklUT1JFRF9NRVRIT0RTIiwiSURFTVBPVEVOQ1lfS0VZX0hFQURFUiIsInByb2Nlc3MiLCJvbiIsInJlc1BhdGhzIiwidmFsdWVzIiwibWFwIiwiZmlsdGVyIiwiQm9vbGVhbiIsInJlc1BhdGgiLCJpZ24iLCJjYWNoZVJlc3BvbnNlIiwicmVxIiwicmVzIiwicmVzcG9uc2VTdGF0ZUxpc3RlbmVyIiwiRXZlbnRFbWl0dGVyIiwic2V0IiwibWV0aG9kIiwicGF0aCIsInRtcEZpbGUiLCJyZXNvbHZlIiwib3MiLCJ0bXBkaXIiLCJ1dGlsIiwidXVpZFY0IiwicmVzcG9uc2VMaXN0ZW5lciIsImNyZWF0ZVdyaXRlU3RyZWFtIiwiZW1pdENsb3NlIiwib3JpZ2luYWxTb2NrZXRXcml0ZXIiLCJzb2NrZXQiLCJ3cml0ZSIsImJpbmQiLCJwYXRjaGVkV3JpdGVyIiwiY2h1bmsiLCJlbmNvZGluZyIsIm5leHQiLCJ3cml0YWJsZSIsIndyaXRlRXJyb3IiLCJpc1Jlc3BvbnNlRnVsbHlTZW50Iiwib25jZSIsImUiLCJlbmQiLCJoYXMiLCJsb2ciLCJpbmZvIiwiZW1pdCIsIm1lc3NhZ2UiLCJkZWxldGUiLCJnZXQiLCJoYW5kbGVJZGVtcG90ZW5jeSIsImhlYWRlcnMiLCJpbmNsdWRlcyIsImRlYnVnIiwic3RvcmVkTWV0aG9kIiwic3RvcmVkUGF0aCIsIndhcm4iLCJyZXJvdXRlQ2FjaGVkUmVzcG9uc2UiLCJjYWNoZWRSZXNQYXRoIiwiZXhpc3RzIiwiY3JlYXRlUmVhZFN0cmVhbSIsInBpcGUiLCJjYWNoZWRSZXNwb25zZVBhdGgiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZXhwcmVzcy9pZGVtcG90ZW5jeS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCBMUlUgZnJvbSAnbHJ1LWNhY2hlJztcbmltcG9ydCB7IGZzLCB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBvcyBmcm9tICdvcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5cblxuY29uc3QgQ0FDSEVfU0laRSA9IDEwMjQ7XG5jb25zdCBJREVNUE9URU5UX1JFU1BPTlNFUyA9IG5ldyBMUlUoe1xuICBtYXg6IENBQ0hFX1NJWkUsXG4gIHVwZGF0ZUFnZU9uR2V0OiB0cnVlLFxuICBkaXNwb3NlIChrZXksIHtyZXNwb25zZX0pIHtcbiAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgIGZzLnJpbXJhZlN5bmMocmVzcG9uc2UpO1xuICAgIH1cbiAgfSxcbn0pO1xuY29uc3QgTU9OSVRPUkVEX01FVEhPRFMgPSBbJ1BPU1QnLCAnUEFUQ0gnXTtcbmNvbnN0IElERU1QT1RFTkNZX0tFWV9IRUFERVIgPSAneC1pZGVtcG90ZW5jeS1rZXknO1xuXG5wcm9jZXNzLm9uKCdleGl0JywgKCkgPT4ge1xuICBjb25zdCByZXNQYXRocyA9IFsuLi5JREVNUE9URU5UX1JFU1BPTlNFUy52YWx1ZXMoKV1cbiAgICAubWFwKCh7cmVzcG9uc2V9KSA9PiByZXNwb25zZSlcbiAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICBmb3IgKGNvbnN0IHJlc1BhdGggb2YgcmVzUGF0aHMpIHtcbiAgICB0cnkge1xuICAgICAgLy8gQXN5bmNocm9ub3VzIGNhbGxzIGFyZSBub3Qgc3VwcG9ydGVkIGluIG9uRXhpdCBoYW5kbGVyXG4gICAgICBmcy5yaW1yYWZTeW5jKHJlc1BhdGgpO1xuICAgIH0gY2F0Y2ggKGlnbikge31cbiAgfVxufSk7XG5cblxuZnVuY3Rpb24gY2FjaGVSZXNwb25zZSAoa2V5LCByZXEsIHJlcykge1xuICBjb25zdCByZXNwb25zZVN0YXRlTGlzdGVuZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIElERU1QT1RFTlRfUkVTUE9OU0VTLnNldChrZXksIHtcbiAgICBtZXRob2Q6IHJlcS5tZXRob2QsXG4gICAgcGF0aDogcmVxLnBhdGgsXG4gICAgcmVzcG9uc2U6IG51bGwsXG4gICAgcmVzcG9uc2VTdGF0ZUxpc3RlbmVyLFxuICB9KTtcbiAgY29uc3QgdG1wRmlsZSA9IHBhdGgucmVzb2x2ZShvcy50bXBkaXIoKSwgYCR7dXRpbC51dWlkVjQoKX0ucmVzcG9uc2VgKTtcbiAgY29uc3QgcmVzcG9uc2VMaXN0ZW5lciA9IGZzLmNyZWF0ZVdyaXRlU3RyZWFtKHRtcEZpbGUsIHtcbiAgICBlbWl0Q2xvc2U6IHRydWUsXG4gIH0pO1xuICBjb25zdCBvcmlnaW5hbFNvY2tldFdyaXRlciA9IHJlcy5zb2NrZXQud3JpdGUuYmluZChyZXMuc29ja2V0KTtcbiAgY29uc3QgcGF0Y2hlZFdyaXRlciA9IChjaHVuaywgZW5jb2RpbmcsIG5leHQpID0+IHtcbiAgICBpZiAocmVzcG9uc2VMaXN0ZW5lci53cml0YWJsZSkge1xuICAgICAgcmVzcG9uc2VMaXN0ZW5lci53cml0ZShjaHVuayk7XG4gICAgfVxuICAgIHJldHVybiBvcmlnaW5hbFNvY2tldFdyaXRlcihjaHVuaywgZW5jb2RpbmcsIG5leHQpO1xuICB9O1xuICByZXMuc29ja2V0LndyaXRlID0gcGF0Y2hlZFdyaXRlcjtcbiAgbGV0IHdyaXRlRXJyb3IgPSBudWxsO1xuICBsZXQgaXNSZXNwb25zZUZ1bGx5U2VudCA9IGZhbHNlO1xuICByZXNwb25zZUxpc3RlbmVyLm9uY2UoJ2Vycm9yJywgKGUpID0+IHtcbiAgICB3cml0ZUVycm9yID0gZTtcbiAgfSk7XG4gIHJlcy5vbmNlKCdmaW5pc2gnLCAoKSA9PiB7XG4gICAgaXNSZXNwb25zZUZ1bGx5U2VudCA9IHRydWU7XG4gICAgcmVzcG9uc2VMaXN0ZW5lci5lbmQoKTtcbiAgfSk7XG4gIHJlcy5vbmNlKCdjbG9zZScsICgpID0+IHtcbiAgICBpZiAoIWlzUmVzcG9uc2VGdWxseVNlbnQpIHtcbiAgICAgIHJlc3BvbnNlTGlzdGVuZXIuZW5kKCk7XG4gICAgfVxuICB9KTtcbiAgcmVzcG9uc2VMaXN0ZW5lci5vbmNlKCdjbG9zZScsICgpID0+IHtcbiAgICBpZiAocmVzLnNvY2tldD8ud3JpdGUgPT09IHBhdGNoZWRXcml0ZXIpIHtcbiAgICAgIHJlcy5zb2NrZXQud3JpdGUgPSBvcmlnaW5hbFNvY2tldFdyaXRlcjtcbiAgICB9XG5cbiAgICBpZiAoIUlERU1QT1RFTlRfUkVTUE9OU0VTLmhhcyhrZXkpKSB7XG4gICAgICBsb2cuaW5mbyhgQ291bGQgbm90IGNhY2hlIHRoZSByZXNwb25zZSBpZGVudGlmaWVkIGJ5ICcke2tleX0nLiBgICtcbiAgICAgICAgYENhY2hlIGNvbnNpc3RlbmN5IGhhcyBiZWVuIGRhbWFnZWRgKTtcbiAgICAgIHJldHVybiByZXNwb25zZVN0YXRlTGlzdGVuZXIuZW1pdCgncmVhZHknLCBudWxsKTtcbiAgICB9XG4gICAgaWYgKHdyaXRlRXJyb3IpIHtcbiAgICAgIGxvZy5pbmZvKGBDb3VsZCBub3QgY2FjaGUgdGhlIHJlc3BvbnNlIGlkZW50aWZpZWQgYnkgJyR7a2V5fSc6ICR7d3JpdGVFcnJvci5tZXNzYWdlfWApO1xuICAgICAgSURFTVBPVEVOVF9SRVNQT05TRVMuZGVsZXRlKGtleSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2VTdGF0ZUxpc3RlbmVyLmVtaXQoJ3JlYWR5JywgbnVsbCk7XG4gICAgfVxuICAgIGlmICghaXNSZXNwb25zZUZ1bGx5U2VudCkge1xuICAgICAgbG9nLmluZm8oYENvdWxkIG5vdCBjYWNoZSB0aGUgcmVzcG9uc2UgaWRlbnRpZmllZCBieSAnJHtrZXl9JywgYCArXG4gICAgICAgIGBiZWNhdXNlIGl0IGhhcyBub3QgYmVlbiBjb21wbGV0ZWRgKTtcbiAgICAgIGxvZy5pbmZvKCdEb2VzIHRoZSBjbGllbnQgdGVybWluYXRlIGNvbm5lY3Rpb25zIHRvbyBlYXJseT8nKTtcbiAgICAgIElERU1QT1RFTlRfUkVTUE9OU0VTLmRlbGV0ZShrZXkpO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlU3RhdGVMaXN0ZW5lci5lbWl0KCdyZWFkeScsIG51bGwpO1xuICAgIH1cblxuICAgIElERU1QT1RFTlRfUkVTUE9OU0VTLmdldChrZXkpLnJlc3BvbnNlID0gdG1wRmlsZTtcbiAgICByZXNwb25zZVN0YXRlTGlzdGVuZXIuZW1pdCgncmVhZHknLCB0bXBGaWxlKTtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGhhbmRsZUlkZW1wb3RlbmN5IChyZXEsIHJlcywgbmV4dCkge1xuICBjb25zdCBrZXkgPSByZXEuaGVhZGVyc1tJREVNUE9URU5DWV9LRVlfSEVBREVSXTtcbiAgaWYgKCFrZXkpIHtcbiAgICByZXR1cm4gbmV4dCgpO1xuICB9XG4gIGlmICghTU9OSVRPUkVEX01FVEhPRFMuaW5jbHVkZXMocmVxLm1ldGhvZCkpIHtcbiAgICAvLyBHRVQsIERFTEVURSwgZXRjLiByZXF1ZXN0cyBhcmUgaWRlbXBvdGVudCBieSBkZWZhdWx0XG4gICAgLy8gdGhlcmUgaXMgbm8gbmVlZCB0byBjYWNoZSB0aGVtXG4gICAgcmV0dXJuIG5leHQoKTtcbiAgfVxuXG4gIGxvZy5kZWJ1ZyhgUmVxdWVzdCBpZGVtcG90ZW5jeSBrZXk6ICR7a2V5fWApO1xuICBpZiAoIUlERU1QT1RFTlRfUkVTUE9OU0VTLmhhcyhrZXkpKSB7XG4gICAgY2FjaGVSZXNwb25zZShrZXksIHJlcSwgcmVzKTtcbiAgICByZXR1cm4gbmV4dCgpO1xuICB9XG5cbiAgY29uc3Qge1xuICAgIG1ldGhvZDogc3RvcmVkTWV0aG9kLFxuICAgIHBhdGg6IHN0b3JlZFBhdGgsXG4gICAgcmVzcG9uc2UsXG4gICAgcmVzcG9uc2VTdGF0ZUxpc3RlbmVyLFxuICB9ID0gSURFTVBPVEVOVF9SRVNQT05TRVMuZ2V0KGtleSk7XG4gIGlmIChyZXEubWV0aG9kICE9PSBzdG9yZWRNZXRob2QgfHwgcmVxLnBhdGggIT09IHN0b3JlZFBhdGgpIHtcbiAgICBsb2cud2FybihgR290IHR3byBkaWZmZXJlbnQgcmVxdWVzdHMgd2l0aCB0aGUgc2FtZSBpZGVtcG90ZW5jeSBrZXkgJyR7a2V5fSdgKTtcbiAgICBsb2cud2FybignSXMgdGhlIGNsaWVudCBnZW5lcmF0aW5nIGlkZW1wb3RlbmN5IGtleXMgcHJvcGVybHk/Jyk7XG4gICAgcmV0dXJuIG5leHQoKTtcbiAgfVxuXG4gIGNvbnN0IHJlcm91dGVDYWNoZWRSZXNwb25zZSA9IGFzeW5jIChjYWNoZWRSZXNQYXRoKSA9PiB7XG4gICAgaWYgKCFhd2FpdCBmcy5leGlzdHMoY2FjaGVkUmVzUGF0aCkpIHtcbiAgICAgIElERU1QT1RFTlRfUkVTUE9OU0VTLmRlbGV0ZShrZXkpO1xuICAgICAgbG9nLndhcm4oYENvdWxkIG5vdCByZWFkIHRoZSBjYWNoZWQgcmVzcG9uc2UgaWRlbnRpZmllZCBieSBrZXkgJyR7a2V5fSdgKTtcbiAgICAgIGxvZy53YXJuKCdUaGUgdGVtcG9yYXJ5IHN0b3JhZ2UgaXMgbm90IGFjY2Vzc2libGUgYW55bW9yZScpO1xuICAgICAgcmV0dXJuIG5leHQoKTtcbiAgICB9XG4gICAgZnMuY3JlYXRlUmVhZFN0cmVhbShjYWNoZWRSZXNQYXRoKS5waXBlKHJlcy5zb2NrZXQpO1xuICB9O1xuXG4gIGlmIChyZXNwb25zZSkge1xuICAgIGxvZy5pbmZvKGBUaGUgc2FtZSByZXF1ZXN0IHdpdGggdGhlIGlkZW1wb3RlbmN5IGtleSAnJHtrZXl9JyBoYXMgYmVlbiBhbHJlYWR5IHByb2Nlc3NlZGApO1xuICAgIGxvZy5pbmZvKGBSZXJvdXRpbmcgaXRzIHJlc3BvbnNlIHRvIHRoZSBjdXJyZW50IHJlcXVlc3RgKTtcbiAgICBhd2FpdCByZXJvdXRlQ2FjaGVkUmVzcG9uc2UocmVzcG9uc2UpO1xuICB9IGVsc2Uge1xuICAgIGxvZy5pbmZvKGBUaGUgc2FtZSByZXF1ZXN0IHdpdGggdGhlIGlkZW1wb3RlbmN5IGtleSAnJHtrZXl9JyBpcyBiZWluZyBwcm9jZXNzZWRgKTtcbiAgICBsb2cuaW5mbyhgV2FpdGluZyBmb3IgdGhlIHJlc3BvbnNlIHRvIGJlIHJlcm91dGVkIHRvIHRoZSBjdXJyZW50IHJlcXVlc3RgKTtcbiAgICByZXNwb25zZVN0YXRlTGlzdGVuZXIub25jZSgncmVhZHknLCBhc3luYyAoY2FjaGVkUmVzcG9uc2VQYXRoKSA9PiB7XG4gICAgICBpZiAoIWNhY2hlZFJlc3BvbnNlUGF0aCkge1xuICAgICAgICByZXR1cm4gbmV4dCgpO1xuICAgICAgfVxuICAgICAgYXdhaXQgcmVyb3V0ZUNhY2hlZFJlc3BvbnNlKGNhY2hlZFJlc3BvbnNlUGF0aCk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IHsgaGFuZGxlSWRlbXBvdGVuY3kgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQSxNQUFNQSxVQUFVLEdBQUcsSUFBbkI7QUFDQSxNQUFNQyxvQkFBb0IsR0FBRyxJQUFJQyxpQkFBSixDQUFRO0VBQ25DQyxHQUFHLEVBQUVILFVBRDhCO0VBRW5DSSxjQUFjLEVBQUUsSUFGbUI7O0VBR25DQyxPQUFPLENBQUVDLEdBQUYsRUFBTztJQUFDQztFQUFELENBQVAsRUFBbUI7SUFDeEIsSUFBSUEsUUFBSixFQUFjO01BQ1pDLFlBQUdDLFVBQUgsQ0FBY0YsUUFBZDtJQUNEO0VBQ0Y7O0FBUGtDLENBQVIsQ0FBN0I7QUFTQSxNQUFNRyxpQkFBaUIsR0FBRyxDQUFDLE1BQUQsRUFBUyxPQUFULENBQTFCO0FBQ0EsTUFBTUMsc0JBQXNCLEdBQUcsbUJBQS9CO0FBRUFDLE9BQU8sQ0FBQ0MsRUFBUixDQUFXLE1BQVgsRUFBbUIsTUFBTTtFQUN2QixNQUFNQyxRQUFRLEdBQUcsQ0FBQyxHQUFHYixvQkFBb0IsQ0FBQ2MsTUFBckIsRUFBSixFQUNkQyxHQURjLENBQ1YsQ0FBQztJQUFDVDtFQUFELENBQUQsS0FBZ0JBLFFBRE4sRUFFZFUsTUFGYyxDQUVQQyxPQUZPLENBQWpCOztFQUdBLEtBQUssTUFBTUMsT0FBWCxJ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
|
|
193
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDQUNIRV9TSVpFIiwiSURFTVBPVEVOVF9SRVNQT05TRVMiLCJMUlUiLCJtYXgiLCJ1cGRhdGVBZ2VPbkdldCIsImRpc3Bvc2UiLCJrZXkiLCJyZXNwb25zZSIsImZzIiwicmltcmFmU3luYyIsIk1PTklUT1JFRF9NRVRIT0RTIiwiSURFTVBPVEVOQ1lfS0VZX0hFQURFUiIsInByb2Nlc3MiLCJvbiIsInJlc1BhdGhzIiwidmFsdWVzIiwibWFwIiwiZmlsdGVyIiwiQm9vbGVhbiIsInJlc1BhdGgiLCJpZ24iLCJjYWNoZVJlc3BvbnNlIiwicmVxIiwicmVzIiwicmVzcG9uc2VTdGF0ZUxpc3RlbmVyIiwiRXZlbnRFbWl0dGVyIiwic2V0IiwibWV0aG9kIiwicGF0aCIsInRtcEZpbGUiLCJyZXNvbHZlIiwib3MiLCJ0bXBkaXIiLCJ1dGlsIiwidXVpZFY0IiwicmVzcG9uc2VMaXN0ZW5lciIsImNyZWF0ZVdyaXRlU3RyZWFtIiwiZW1pdENsb3NlIiwib3JpZ2luYWxTb2NrZXRXcml0ZXIiLCJzb2NrZXQiLCJ3cml0ZSIsImJpbmQiLCJwYXRjaGVkV3JpdGVyIiwiY2h1bmsiLCJlbmNvZGluZyIsIm5leHQiLCJ3cml0YWJsZSIsIndyaXRlRXJyb3IiLCJpc1Jlc3BvbnNlRnVsbHlTZW50Iiwib25jZSIsImUiLCJlbmQiLCJoYXMiLCJsb2ciLCJpbmZvIiwiZW1pdCIsIm1lc3NhZ2UiLCJkZWxldGUiLCJnZXQiLCJoYW5kbGVJZGVtcG90ZW5jeSIsImhlYWRlcnMiLCJpbmNsdWRlcyIsImRlYnVnIiwic3RvcmVkTWV0aG9kIiwic3RvcmVkUGF0aCIsIndhcm4iLCJyZXJvdXRlQ2FjaGVkUmVzcG9uc2UiLCJjYWNoZWRSZXNQYXRoIiwiZXhpc3RzIiwiY3JlYXRlUmVhZFN0cmVhbSIsInBpcGUiLCJjYWNoZWRSZXNwb25zZVBhdGgiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZXhwcmVzcy9pZGVtcG90ZW5jeS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCBMUlUgZnJvbSAnbHJ1LWNhY2hlJztcbmltcG9ydCB7ZnMsIHV0aWx9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgb3MgZnJvbSAnb3MnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQge0V2ZW50RW1pdHRlcn0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgQ0FDSEVfU0laRSA9IDEwMjQ7XG5jb25zdCBJREVNUE9URU5UX1JFU1BPTlNFUyA9IG5ldyBMUlUoe1xuICBtYXg6IENBQ0hFX1NJWkUsXG4gIHVwZGF0ZUFnZU9uR2V0OiB0cnVlLFxuICBkaXNwb3NlKGtleSwge3Jlc3BvbnNlfSkge1xuICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgZnMucmltcmFmU3luYyhyZXNwb25zZSk7XG4gICAgfVxuICB9LFxufSk7XG5jb25zdCBNT05JVE9SRURfTUVUSE9EUyA9IFsnUE9TVCcsICdQQVRDSCddO1xuY29uc3QgSURFTVBPVEVOQ1lfS0VZX0hFQURFUiA9ICd4LWlkZW1wb3RlbmN5LWtleSc7XG5cbnByb2Nlc3Mub24oJ2V4aXQnLCAoKSA9PiB7XG4gIGNvbnN0IHJlc1BhdGhzID0gWy4uLklERU1QT1RFTlRfUkVTUE9OU0VTLnZhbHVlcygpXS5tYXAoKHtyZXNwb25zZX0pID0+IHJlc3BvbnNlKS5maWx0ZXIoQm9vbGVhbik7XG4gIGZvciAoY29uc3QgcmVzUGF0aCBvZiByZXNQYXRocykge1xuICAgIHRyeSB7XG4gICAgICAvLyBBc3luY2hyb25vdXMgY2FsbHMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gb25FeGl0IGhhbmRsZXJcbiAgICAgIGZzLnJpbXJhZlN5bmMocmVzUGF0aCk7XG4gICAgfSBjYXRjaCAoaWduKSB7fVxuICB9XG59KTtcblxuZnVuY3Rpb24gY2FjaGVSZXNwb25zZShrZXksIHJlcSwgcmVzKSB7XG4gIGNvbnN0IHJlc3BvbnNlU3RhdGVMaXN0ZW5lciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgSURFTVBPVEVOVF9SRVNQT05TRVMuc2V0KGtleSwge1xuICAgIG1ldGhvZDogcmVxLm1ldGhvZCxcbiAgICBwYXRoOiByZXEucGF0aCxcbiAgICByZXNwb25zZTogbnVsbCxcbiAgICByZXNwb25zZVN0YXRlTGlzdGVuZXIsXG4gIH0pO1xuICBjb25zdCB0bXBGaWxlID0gcGF0aC5yZXNvbHZlKG9zLnRtcGRpcigpLCBgJHt1dGlsLnV1aWRWNCgpfS5yZXNwb25zZWApO1xuICBjb25zdCByZXNwb25zZUxpc3RlbmVyID0gZnMuY3JlYXRlV3JpdGVTdHJlYW0odG1wRmlsZSwge1xuICAgIGVtaXRDbG9zZTogdHJ1ZSxcbiAgfSk7XG4gIGNvbnN0IG9yaWdpbmFsU29ja2V0V3JpdGVyID0gcmVzLnNvY2tldC53cml0ZS5iaW5kKHJlcy5zb2NrZXQpO1xuICBjb25zdCBwYXRjaGVkV3JpdGVyID0gKGNodW5rLCBlbmNvZGluZywgbmV4dCkgPT4ge1xuICAgIGlmIChyZXNwb25zZUxpc3RlbmVyLndyaXRhYmxlKSB7XG4gICAgICByZXNwb25zZUxpc3RlbmVyLndyaXRlKGNodW5rKTtcbiAgICB9XG4gICAgcmV0dXJuIG9yaWdpbmFsU29ja2V0V3JpdGVyKGNodW5rLCBlbmNvZGluZywgbmV4dCk7XG4gIH07XG4gIHJlcy5zb2NrZXQud3JpdGUgPSBwYXRjaGVkV3JpdGVyO1xuICBsZXQgd3JpdGVFcnJvciA9IG51bGw7XG4gIGxldCBpc1Jlc3BvbnNlRnVsbHlTZW50ID0gZmFsc2U7XG4gIHJlc3BvbnNlTGlzdGVuZXIub25jZSgnZXJyb3InLCAoZSkgPT4ge1xuICAgIHdyaXRlRXJyb3IgPSBlO1xuICB9KTtcbiAgcmVzLm9uY2UoJ2ZpbmlzaCcsICgpID0+IHtcbiAgICBpc1Jlc3BvbnNlRnVsbHlTZW50ID0gdHJ1ZTtcbiAgICByZXNwb25zZUxpc3RlbmVyLmVuZCgpO1xuICB9KTtcbiAgcmVzLm9uY2UoJ2Nsb3NlJywgKCkgPT4ge1xuICAgIGlmICghaXNSZXNwb25zZUZ1bGx5U2VudCkge1xuICAgICAgcmVzcG9uc2VMaXN0ZW5lci5lbmQoKTtcbiAgICB9XG4gIH0pO1xuICByZXNwb25zZUxpc3RlbmVyLm9uY2UoJ2Nsb3NlJywgKCkgPT4ge1xuICAgIGlmIChyZXMuc29ja2V0Py53cml0ZSA9PT0gcGF0Y2hlZFdyaXRlcikge1xuICAgICAgcmVzLnNvY2tldC53cml0ZSA9IG9yaWdpbmFsU29ja2V0V3JpdGVyO1xuICAgIH1cblxuICAgIGlmICghSURFTVBPVEVOVF9SRVNQT05TRVMuaGFzKGtleSkpIHtcbiAgICAgIGxvZy5pbmZvKFxuICAgICAgICBgQ291bGQgbm90IGNhY2hlIHRoZSByZXNwb25zZSBpZGVudGlmaWVkIGJ5ICcke2tleX0nLiBgICtcbiAgICAgICAgICBgQ2FjaGUgY29uc2lzdGVuY3kgaGFzIGJlZW4gZGFtYWdlZGBcbiAgICAgICk7XG4gICAgICByZXR1cm4gcmVzcG9uc2VTdGF0ZUxpc3RlbmVyLmVtaXQoJ3JlYWR5JywgbnVsbCk7XG4gICAgfVxuICAgIGlmICh3cml0ZUVycm9yKSB7XG4gICAgICBsb2cuaW5mbyhgQ291bGQgbm90IGNhY2hlIHRoZSByZXNwb25zZSBpZGVudGlmaWVkIGJ5ICcke2tleX0nOiAke3dyaXRlRXJyb3IubWVzc2FnZX1gKTtcbiAgICAgIElERU1QT1RFTlRfUkVTUE9OU0VTLmRlbGV0ZShrZXkpO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlU3RhdGVMaXN0ZW5lci5lbWl0KCdyZWFkeScsIG51bGwpO1xuICAgIH1cbiAgICBpZiAoIWlzUmVzcG9uc2VGdWxseVNlbnQpIHtcbiAgICAgIGxvZy5pbmZvKFxuICAgICAgICBgQ291bGQgbm90IGNhY2hlIHRoZSByZXNwb25zZSBpZGVudGlmaWVkIGJ5ICcke2tleX0nLCBgICtcbiAgICAgICAgICBgYmVjYXVzZSBpdCBoYXMgbm90IGJlZW4gY29tcGxldGVkYFxuICAgICAgKTtcbiAgICAgIGxvZy5pbmZvKCdEb2VzIHRoZSBjbGllbnQgdGVybWluYXRlIGNvbm5lY3Rpb25zIHRvbyBlYXJseT8nKTtcbiAgICAgIElERU1QT1RFTlRfUkVTUE9OU0VTLmRlbGV0ZShrZXkpO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlU3RhdGVMaXN0ZW5lci5lbWl0KCdyZWFkeScsIG51bGwpO1xuICAgIH1cblxuICAgIElERU1QT1RFTlRfUkVTUE9OU0VTLmdldChrZXkpLnJlc3BvbnNlID0gdG1wRmlsZTtcbiAgICByZXNwb25zZVN0YXRlTGlzdGVuZXIuZW1pdCgncmVhZHknLCB0bXBGaWxlKTtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGhhbmRsZUlkZW1wb3RlbmN5KHJlcSwgcmVzLCBuZXh0KSB7XG4gIGNvbnN0IGtleSA9IHJlcS5oZWFkZXJzW0lERU1QT1RFTkNZX0tFWV9IRUFERVJdO1xuICBpZiAoIWtleSkge1xuICAgIHJldHVybiBuZXh0KCk7XG4gIH1cbiAgaWYgKCFNT05JVE9SRURfTUVUSE9EUy5pbmNsdWRlcyhyZXEubWV0aG9kKSkge1xuICAgIC8vIEdFVCwgREVMRVRFLCBldGMuIHJlcXVlc3RzIGFyZSBpZGVtcG90ZW50IGJ5IGRlZmF1bHRcbiAgICAvLyB0aGVyZSBpcyBubyBuZWVkIHRvIGNhY2hlIHRoZW1cbiAgICByZXR1cm4gbmV4dCgpO1xuICB9XG5cbiAgbG9nLmRlYnVnKGBSZXF1ZXN0IGlkZW1wb3RlbmN5IGtleTogJHtrZXl9YCk7XG4gIGlmICghSURFTVBPVEVOVF9SRVNQT05TRVMuaGFzKGtleSkpIHtcbiAgICBjYWNoZVJlc3BvbnNlKGtleSwgcmVxLCByZXMpO1xuICAgIHJldHVybiBuZXh0KCk7XG4gIH1cblxuICBjb25zdCB7XG4gICAgbWV0aG9kOiBzdG9yZWRNZXRob2QsXG4gICAgcGF0aDogc3RvcmVkUGF0aCxcbiAgICByZXNwb25zZSxcbiAgICByZXNwb25zZVN0YXRlTGlzdGVuZXIsXG4gIH0gPSBJREVNUE9URU5UX1JFU1BPTlNFUy5nZXQoa2V5KTtcbiAgaWYgKHJlcS5tZXRob2QgIT09IHN0b3JlZE1ldGhvZCB8fCByZXEucGF0aCAhPT0gc3RvcmVkUGF0aCkge1xuICAgIGxvZy53YXJuKGBHb3QgdHdvIGRpZmZlcmVudCByZXF1ZXN0cyB3aXRoIHRoZSBzYW1lIGlkZW1wb3RlbmN5IGtleSAnJHtrZXl9J2ApO1xuICAgIGxvZy53YXJuKCdJcyB0aGUgY2xpZW50IGdlbmVyYXRpbmcgaWRlbXBvdGVuY3kga2V5cyBwcm9wZXJseT8nKTtcbiAgICByZXR1cm4gbmV4dCgpO1xuICB9XG5cbiAgY29uc3QgcmVyb3V0ZUNhY2hlZFJlc3BvbnNlID0gYXN5bmMgKGNhY2hlZFJlc1BhdGgpID0+IHtcbiAgICBpZiAoIShhd2FpdCBmcy5leGlzdHMoY2FjaGVkUmVzUGF0aCkpKSB7XG4gICAgICBJREVNUE9URU5UX1JFU1BPTlNFUy5kZWxldGUoa2V5KTtcbiAgICAgIGxvZy53YXJuKGBDb3VsZCBub3QgcmVhZCB0aGUgY2FjaGVkIHJlc3BvbnNlIGlkZW50aWZpZWQgYnkga2V5ICcke2tleX0nYCk7XG4gICAgICBsb2cud2FybignVGhlIHRlbXBvcmFyeSBzdG9yYWdlIGlzIG5vdCBhY2Nlc3NpYmxlIGFueW1vcmUnKTtcbiAgICAgIHJldHVybiBuZXh0KCk7XG4gICAgfVxuICAgIGZzLmNyZWF0ZVJlYWRTdHJlYW0oY2FjaGVkUmVzUGF0aCkucGlwZShyZXMuc29ja2V0KTtcbiAgfTtcblxuICBpZiAocmVzcG9uc2UpIHtcbiAgICBsb2cuaW5mbyhgVGhlIHNhbWUgcmVxdWVzdCB3aXRoIHRoZSBpZGVtcG90ZW5jeSBrZXkgJyR7a2V5fScgaGFzIGJlZW4gYWxyZWFkeSBwcm9jZXNzZWRgKTtcbiAgICBsb2cuaW5mbyhgUmVyb3V0aW5nIGl0cyByZXNwb25zZSB0byB0aGUgY3VycmVudCByZXF1ZXN0YCk7XG4gICAgYXdhaXQgcmVyb3V0ZUNhY2hlZFJlc3BvbnNlKHJlc3BvbnNlKTtcbiAgfSBlbHNlIHtcbiAgICBsb2cuaW5mbyhgVGhlIHNhbWUgcmVxdWVzdCB3aXRoIHRoZSBpZGVtcG90ZW5jeSBrZXkgJyR7a2V5fScgaXMgYmVpbmcgcHJvY2Vzc2VkYCk7XG4gICAgbG9nLmluZm8oYFdhaXRpbmcgZm9yIHRoZSByZXNwb25zZSB0byBiZSByZXJvdXRlZCB0byB0aGUgY3VycmVudCByZXF1ZXN0YCk7XG4gICAgcmVzcG9uc2VTdGF0ZUxpc3RlbmVyLm9uY2UoJ3JlYWR5JywgYXN5bmMgKGNhY2hlZFJlc3BvbnNlUGF0aCkgPT4ge1xuICAgICAgaWYgKCFjYWNoZWRSZXNwb25zZVBhdGgpIHtcbiAgICAgICAgcmV0dXJuIG5leHQoKTtcbiAgICAgIH1cbiAgICAgIGF3YWl0IHJlcm91dGVDYWNoZWRSZXNwb25zZShjYWNoZWRSZXNwb25zZVBhdGgpO1xuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCB7aGFuZGxlSWRlbXBvdGVuY3l9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLFVBQVUsR0FBRyxJQUFuQjtBQUNBLE1BQU1DLG9CQUFvQixHQUFHLElBQUlDLGlCQUFKLENBQVE7RUFDbkNDLEdBQUcsRUFBRUgsVUFEOEI7RUFFbkNJLGNBQWMsRUFBRSxJQUZtQjs7RUFHbkNDLE9BQU8sQ0FBQ0MsR0FBRCxFQUFNO0lBQUNDO0VBQUQsQ0FBTixFQUFrQjtJQUN2QixJQUFJQSxRQUFKLEVBQWM7TUFDWkMsV0FBQSxDQUFHQyxVQUFILENBQWNGLFFBQWQ7SUFDRDtFQUNGOztBQVBrQyxDQUFSLENBQTdCO0FBU0EsTUFBTUcsaUJBQWlCLEdBQUcsQ0FBQyxNQUFELEVBQVMsT0FBVCxDQUExQjtBQUNBLE1BQU1DLHNCQUFzQixHQUFHLG1CQUEvQjtBQUVBQyxPQUFPLENBQUNDLEVBQVIsQ0FBVyxNQUFYLEVBQW1CLE1BQU07RUFDdkIsTUFBTUMsUUFBUSxHQUFHLENBQUMsR0FBR2Isb0JBQW9CLENBQUNjLE1BQXJCLEVBQUosRUFBbUNDLEdBQW5DLENBQXVDLENBQUM7SUFBQ1Q7RUFBRCxDQUFELEtBQWdCQSxRQUF2RCxFQUFpRVUsTUFBakUsQ0FBd0VDLE9BQXhF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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../lib/express/logger.js"],"names":[],"mappings":";AAEA
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../lib/express/logger.js"],"names":[],"mappings":";AAEA,+DAAqC"}
|
|
@@ -13,4 +13,4 @@ const log = _support.logger.getLogger('HTTP');
|
|
|
13
13
|
|
|
14
14
|
var _default = log;
|
|
15
15
|
exports.default = _default;
|
|
16
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsb2ciLCJsb2dnZXIiLCJnZXRMb2dnZXIiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZXhwcmVzcy9sb2dnZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtsb2dnZXJ9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5cbmNvbnN0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ0hUVFAnKTtcbmV4cG9ydCBkZWZhdWx0IGxvZztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBRUEsTUFBTUEsR0FBRyxHQUFHQyxlQUFBLENBQU9DLFNBQVAsQ0FBaUIsTUFBakIsQ0FBWjs7ZUFDZUYsRyJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../lib/express/middleware.js"],"names":[],"mappings":"AAKA,
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../lib/express/middleware.js"],"names":[],"mappings":"AAKA,qEAiBC;AAgBD,6FAaC;AAED,8EAKC;AAED,8EAmBC;AAvDD,oGAYC;;AA6CD,0DAgBC"}
|
|
@@ -123,4 +123,4 @@ function patchWithSessionId(req, body) {
|
|
|
123
123
|
|
|
124
124
|
return body;
|
|
125
125
|
}
|
|
126
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
126
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhbGxvd0Nyb3NzRG9tYWluIiwicmVxIiwicmVzIiwibmV4dCIsImhlYWRlciIsIm1ldGhvZCIsInNlbmRTdGF0dXMiLCJlcnIiLCJsb2ciLCJlcnJvciIsInN0YWNrIiwiYWxsb3dDcm9zc0RvbWFpbkFzeW5jRXhlY3V0ZSIsImJhc2VQYXRoIiwicmVjZWl2ZUFzeW5jUmVzcG9uc2VSZWdFeHAiLCJSZWdFeHAiLCJfIiwiZXNjYXBlUmVnRXhwIiwidGVzdCIsInVybCIsImZpeFB5dGhvbkNvbnRlbnRUeXBlIiwicGF0aCIsImhlYWRlcnMiLCJkZWZhdWx0VG9KU09OQ29udGVudFR5cGUiLCJjYXRjaEFsbEhhbmRsZXIiLCJoZWFkZXJzU2VudCIsIm1lc3NhZ2UiLCJlcnJvcnMiLCJVbmtub3duRXJyb3IiLCJzdGF0dXMiLCJ3M2NTdGF0dXMiLCJqc29uIiwicGF0Y2hXaXRoU2Vzc2lvbklkIiwiY29kZSIsInZhbHVlIiwic3RhY2t0cmFjZSIsImNhdGNoNDA0SGFuZGxlciIsImRlYnVnIiwiVW5rbm93bkNvbW1hbmRFcnJvciIsIlNFU1NJT05fSURfUEFUVEVSTiIsImJvZHkiLCJtYXRjaCIsImV4ZWMiLCJzZXNzaW9uSWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZXhwcmVzcy9taWRkbGV3YXJlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7ZXJyb3JzfSBmcm9tICcuLi9wcm90b2NvbCc7XG5pbXBvcnQge2hhbmRsZUlkZW1wb3RlbmN5fSBmcm9tICcuL2lkZW1wb3RlbmN5JztcblxuZnVuY3Rpb24gYWxsb3dDcm9zc0RvbWFpbihyZXEsIHJlcywgbmV4dCkge1xuICB0cnkge1xuICAgIHJlcy5oZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbicsICcqJyk7XG4gICAgcmVzLmhlYWRlcignQWNjZXNzLUNvbnRyb2wtQWxsb3ctTWV0aG9kcycsICdHRVQsIFBPU1QsIFBVVCwgT1BUSU9OUywgREVMRVRFJyk7XG4gICAgcmVzLmhlYWRlcihcbiAgICAgICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzJyxcbiAgICAgICdDYWNoZS1Db250cm9sLCBQcmFnbWEsIE9yaWdpbiwgWC1SZXF1ZXN0ZWQtV2l0aCwgQ29udGVudC1UeXBlLCBBY2NlcHQsIFVzZXItQWdlbnQnXG4gICAgKTtcblxuICAgIC8vIG5lZWQgdG8gcmVzcG9uZCAyMDAgdG8gT1BUSU9OU1xuICAgIGlmICgnT1BUSU9OUycgPT09IHJlcS5tZXRob2QpIHtcbiAgICAgIHJldHVybiByZXMuc2VuZFN0YXR1cygyMDApO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nLmVycm9yKGBVbmV4cGVjdGVkIGVycm9yOiAke2Vyci5zdGFja31gKTtcbiAgfVxuICBuZXh0KCk7XG59XG5cbmZ1bmN0aW9uIGFsbG93Q3Jvc3NEb21haW5Bc3luY0V4ZWN1dGUoYmFzZVBhdGgpIHtcbiAgcmV0dXJuIChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIC8vIHRoZXJlIGFyZSB0d28gcGF0aHMgZm9yIGFzeW5jIHJlc3BvbnNlcywgc28gY292ZXIgYm90aFxuICAgIC8vIGh0dHBzOi8vcmVnZXgxMDEuY29tL3IvdHhZaUV6LzFcbiAgICBjb25zdCByZWNlaXZlQXN5bmNSZXNwb25zZVJlZ0V4cCA9IG5ldyBSZWdFeHAoXG4gICAgICBgJHtfLmVzY2FwZVJlZ0V4cChiYXNlUGF0aCl9L3Nlc3Npb24vW2EtZjAtOS1dKy8oYXBwaXVtLyk/cmVjZWl2ZV9hc3luY19yZXNwb25zZWBcbiAgICApO1xuICAgIGlmICghcmVjZWl2ZUFzeW5jUmVzcG9uc2VSZWdFeHAudGVzdChyZXEudXJsKSkge1xuICAgICAgcmV0dXJuIG5leHQoKTtcbiAgICB9XG4gICAgYWxsb3dDcm9zc0RvbWFpbihyZXEsIHJlcywgbmV4dCk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGZpeFB5dGhvbkNvbnRlbnRUeXBlKGJhc2VQYXRoKSB7XG4gIHJldHVybiAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICAvLyBoYWNrIGJlY2F1c2UgcHl0aG9uIGNsaWVudCBsaWJyYXJ5IGdpdmVzIHVzIHdyb25nIGNvbnRlbnQtdHlwZVxuICAgIGlmIChcbiAgICAgIG5ldyBSZWdFeHAoYF4ke18uZXNjYXBlUmVnRXhwKGJhc2VQYXRoKX1gKS50ZXN0KHJlcS5wYXRoKSAmJlxuICAgICAgL15QeXRob24vLnRlc3QocmVxLmhlYWRlcnNbJ3VzZXItYWdlbnQnXSlcbiAgICApIHtcbiAgICAgIGlmIChyZXEuaGVhZGVyc1snY29udGVudC10eXBlJ10gPT09ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnKSB7XG4gICAgICAgIHJlcS5oZWFkZXJzWydjb250ZW50LXR5cGUnXSA9ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04JztcbiAgICAgIH1cbiAgICB9XG4gICAgbmV4dCgpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0VG9KU09OQ29udGVudFR5cGUocmVxLCByZXMsIG5leHQpIHtcbiAgaWYgKCFyZXEuaGVhZGVyc1snY29udGVudC10eXBlJ10pIHtcbiAgICByZXEuaGVhZGVyc1snY29udGVudC10eXBlJ10gPSAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOCc7XG4gIH1cbiAgbmV4dCgpO1xufVxuXG5mdW5jdGlvbiBjYXRjaEFsbEhhbmRsZXIoZXJyLCByZXEsIHJlcywgbmV4dCkge1xuICBpZiAocmVzLmhlYWRlcnNTZW50KSB7XG4gICAgcmV0dXJuIG5leHQoZXJyKTtcbiAgfVxuXG4gIGxvZy5lcnJvcihgVW5jYXVnaHQgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIGxvZy5lcnJvcignU2VuZGluZyBnZW5lcmljIGVycm9yIHJlc3BvbnNlJyk7XG4gIGNvbnN0IGVycm9yID0gZXJyb3JzLlVua25vd25FcnJvcjtcbiAgcmVzLnN0YXR1cyhlcnJvci53M2NTdGF0dXMoKSkuanNvbihcbiAgICBwYXRjaFdpdGhTZXNzaW9uSWQocmVxLCB7XG4gICAgICBzdGF0dXM6IGVycm9yLmNvZGUoKSxcbiAgICAgIHZhbHVlOiB7XG4gICAgICAgIGVycm9yOiBlcnJvci5lcnJvcigpLFxuICAgICAgICBtZXNzYWdlOiBgQW4gdW5rbm93biBzZXJ2ZXItc2lkZSBlcnJvciBvY2N1cnJlZCB3aGlsZSBwcm9jZXNzaW5nIHRoZSBjb21tYW5kOiAke2Vyci5tZXNzYWdlfWAsXG4gICAgICAgIHN0YWNrdHJhY2U6IGVyci5zdGFjayxcbiAgICAgIH0sXG4gICAgfSlcbiAgKTtcbiAgbG9nLmVycm9yKGVycik7XG59XG5cbmZ1bmN0aW9uIGNhdGNoNDA0SGFuZGxlcihyZXEsIHJlcykge1xuICBsb2cuZGVidWcoYE5vIHJvdXRlIGZvdW5kIGZvciAke3JlcS51cmx9YCk7XG4gIGNvbnN0IGVycm9yID0gZXJyb3JzLlVua25vd25Db21tYW5kRXJyb3I7XG4gIHJlcy5zdGF0dXMoZXJyb3IudzNjU3RhdHVzKCkpLmpzb24oXG4gICAgcGF0Y2hXaXRoU2Vzc2lvbklkKHJlcSwge1xuICAgICAgc3RhdHVzOiBlcnJvci5jb2RlKCksXG4gICAgICB2YWx1ZToge1xuICAgICAgICBlcnJvcjogZXJyb3IuZXJyb3IoKSxcbiAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAnVGhlIHJlcXVlc3RlZCByZXNvdXJjZSBjb3VsZCBub3QgYmUgZm91bmQsIG9yIGEgcmVxdWVzdCB3YXMgJyArXG4gICAgICAgICAgJ3JlY2VpdmVkIHVzaW5nIGFuIEhUVFAgbWV0aG9kIHRoYXQgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgbWFwcGVkICcgK1xuICAgICAgICAgICdyZXNvdXJjZScsXG4gICAgICAgIHN0YWNrdHJhY2U6ICcnLFxuICAgICAgfSxcbiAgICB9KVxuICApO1xufVxuXG5jb25zdCBTRVNTSU9OX0lEX1BBVFRFUk4gPSAvXFwvc2Vzc2lvblxcLyhbXi9dKykvO1xuXG5mdW5jdGlvbiBwYXRjaFdpdGhTZXNzaW9uSWQocmVxLCBib2R5KSB7XG4gIGNvbnN0IG1hdGNoID0gU0VTU0lPTl9JRF9QQVRURVJOLmV4ZWMocmVxLnVybCk7XG4gIGlmIChtYXRjaCkge1xuICAgIGJvZHkuc2Vzc2lvbklkID0gbWF0Y2hbMV07XG4gIH1cbiAgcmV0dXJuIGJvZHk7XG59XG5cbmV4cG9ydCB7XG4gIGFsbG93Q3Jvc3NEb21haW4sXG4gIGZpeFB5dGhvbkNvbnRlbnRUeXBlLFxuICBkZWZhdWx0VG9KU09OQ29udGVudFR5cGUsXG4gIGNhdGNoQWxsSGFuZGxlcixcbiAgYWxsb3dDcm9zc0RvbWFpbkFzeW5jRXhlY3V0ZSxcbiAgaGFuZGxlSWRlbXBvdGVuY3ksXG4gIGNhdGNoNDA0SGFuZGxlcixcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxTQUFTQSxnQkFBVCxDQUEwQkMsR0FBMUIsRUFBK0JDLEdBQS9CLEVBQW9DQyxJQUFwQyxFQUEwQztFQUN4QyxJQUFJO0lBQ0ZELEdBQUcsQ0FBQ0UsTUFBSixDQUFXLDZCQUFYLEVBQTBDLEdBQTFDO0lBQ0FGLEdBQUcsQ0FBQ0UsTUFBSixDQUFXLDhCQUFYLEVBQTJDLGlDQUEzQztJQUNBRixHQUFHLENBQUNFLE1BQUosQ0FDRSw4QkFERixFQUVFLG1GQUZGOztJQU1BLElBQUksY0FBY0gsR0FBRyxDQUFDSSxNQUF0QixFQUE4QjtNQUM1QixPQUFPSCxHQUFHLENBQUNJLFVBQUosQ0FBZSxHQUFmLENBQVA7SUFDRDtFQUNGLENBWkQsQ0FZRSxPQUFPQyxHQUFQLEVBQVk7SUFDWkMsZUFBQSxDQUFJQyxLQUFKLENBQVcscUJBQW9CRixHQUFHLENBQUNHLEtBQU0sRUFBekM7RUFDRDs7RUFDRFAsSUFBSTtBQUNMOztBQUVELFNBQVNRLDRCQUFULENBQXNDQyxRQUF0QyxFQUFnRDtFQUM5QyxPQUFPLENBQUNYLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0lB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
|
|
@@ -1,3 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Options for {@linkcode startServer }.
|
|
3
|
+
*/
|
|
4
|
+
export type StartServerOpts = {
|
|
5
|
+
/**
|
|
6
|
+
* - HTTP server instance
|
|
7
|
+
*/
|
|
8
|
+
httpServer: import('http').Server;
|
|
9
|
+
/**
|
|
10
|
+
* - Port to run on
|
|
11
|
+
*/
|
|
12
|
+
port: number;
|
|
13
|
+
/**
|
|
14
|
+
* - Keep-alive timeout in milliseconds
|
|
15
|
+
*/
|
|
16
|
+
keepAliveTimeout: number;
|
|
17
|
+
/**
|
|
18
|
+
* - Optional hostname
|
|
19
|
+
*/
|
|
20
|
+
hostname?: string | undefined;
|
|
21
|
+
};
|
|
1
22
|
export function server(opts?: {}): Promise<any>;
|
|
2
23
|
export function configureServer({ app, addRoutes, allowCors, basePath, extraMethodMap, }: {
|
|
3
24
|
app: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../lib/express/server.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../lib/express/server.js"],"names":[],"mappings":";;;;;;;gBAyOc,OAAO,MAAM,EAAE,MAAM;;;;UACrB,MAAM;;;;sBACN,MAAM;;;;;;AA3MpB,gDA8CC;AAED;;;;;;SA6CC;AAqFD,sDAgBC"}
|