@appium/base-driver 8.2.3 → 8.3.1
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.js +2 -4
- package/build/lib/basedriver/commands/event.js +2 -4
- package/build/lib/basedriver/commands/find.js +5 -14
- package/build/lib/basedriver/commands/index.js +2 -4
- package/build/lib/basedriver/commands/log.js +4 -9
- package/build/lib/basedriver/commands/session.js +19 -30
- package/build/lib/basedriver/commands/settings.js +5 -11
- package/build/lib/basedriver/commands/timeout.js +11 -18
- package/build/lib/basedriver/desired-caps.js +2 -4
- package/build/lib/basedriver/device-settings.js +15 -5
- package/build/lib/basedriver/driver.js +36 -23
- package/build/lib/basedriver/helpers.js +10 -12
- package/build/lib/basedriver/logger.js +2 -4
- package/build/lib/constants.js +2 -4
- package/build/lib/express/crash.js +2 -4
- package/build/lib/express/express-logging.js +3 -5
- package/build/lib/express/idempotency.js +3 -5
- package/build/lib/express/logger.js +2 -4
- package/build/lib/express/middleware.js +2 -4
- package/build/lib/express/server.js +2 -4
- package/build/lib/express/static.js +2 -4
- package/build/lib/express/websocket.js +2 -4
- package/build/lib/helpers/capabilities.js +37 -0
- package/build/lib/index.js +4 -8
- package/build/lib/jsonwp-proxy/protocol-converter.js +19 -15
- package/build/lib/jsonwp-proxy/proxy.js +20 -15
- package/build/lib/jsonwp-status/status.js +2 -4
- package/build/lib/protocol/errors.js +2 -4
- package/build/lib/protocol/helpers.js +2 -4
- package/build/lib/protocol/index.js +2 -4
- package/build/lib/protocol/protocol.js +37 -30
- package/build/lib/protocol/routes.js +68 -4
- package/build/lib/protocol/validators.js +2 -4
- package/build/test/basedriver/README.md +5 -0
- package/build/test/basedriver/driver-e2e-tests.js +2 -4
- package/build/test/basedriver/driver-tests.js +12 -17
- package/build/test/basedriver/index.js +2 -4
- package/build/test/e2e/basedriver/driver.e2e.spec.js +15 -0
- package/build/test/e2e/basedriver/helpers.e2e.spec.js +192 -0
- package/build/test/e2e/basedriver/websockets.e2e.spec.js +82 -0
- package/build/test/e2e/express/server.e2e.spec.js +159 -0
- package/build/test/e2e/jsonwp-proxy/proxy.e2e.spec.js +59 -0
- package/build/test/e2e/protocol/fake-driver.js +163 -0
- package/build/test/e2e/protocol/helpers.js +25 -0
- package/build/test/e2e/protocol/protocol.e2e.spec.js +1186 -0
- package/build/test/helpers.js +2 -4
- package/build/test/unit/basedriver/capabilities.spec.js +672 -0
- package/build/test/unit/basedriver/capability.spec.js +353 -0
- package/build/test/unit/basedriver/commands/event.spec.js +110 -0
- package/build/test/unit/basedriver/commands/log.spec.js +85 -0
- package/build/test/unit/basedriver/driver.spec.js +15 -0
- package/build/test/unit/basedriver/helpers.spec.js +151 -0
- package/build/test/unit/basedriver/timeout.spec.js +135 -0
- package/build/test/unit/express/server.spec.js +155 -0
- package/build/test/unit/express/static.spec.js +26 -0
- package/build/test/unit/jsonwp-proxy/mock-request.js +91 -0
- package/build/test/unit/jsonwp-proxy/protocol-converter.spec.js +171 -0
- package/build/test/unit/jsonwp-proxy/proxy.spec.js +292 -0
- package/build/test/unit/jsonwp-proxy/url.spec.js +165 -0
- package/build/test/unit/jsonwp-status/status.spec.js +34 -0
- package/build/test/unit/protocol/errors.spec.js +390 -0
- package/build/test/unit/protocol/routes.spec.js +80 -0
- package/build/test/unit/protocol/validator.spec.js +149 -0
- package/lib/basedriver/commands/find.js +3 -6
- package/lib/basedriver/commands/log.js +2 -4
- package/lib/basedriver/commands/session.js +21 -22
- package/lib/basedriver/commands/settings.js +3 -5
- package/lib/basedriver/commands/timeout.js +9 -10
- package/lib/basedriver/device-settings.js +10 -1
- package/lib/basedriver/driver.js +36 -12
- package/lib/basedriver/helpers.js +13 -11
- package/lib/express/express-logging.js +1 -1
- package/lib/express/idempotency.js +1 -1
- package/lib/helpers/capabilities.js +25 -0
- package/lib/index.js +2 -2
- package/lib/jsonwp-proxy/protocol-converter.js +14 -13
- package/lib/jsonwp-proxy/proxy.js +16 -12
- package/lib/protocol/protocol.js +34 -29
- package/lib/protocol/routes.js +60 -1
- package/package.json +36 -24
- package/test/basedriver/README.md +5 -0
- package/test/basedriver/driver-e2e-tests.js +1 -1
- package/test/basedriver/driver-tests.js +12 -7
- package/build/lib/protocol/sessions-cache.js +0 -88
- package/build/test/basedriver/capabilities-specs.js +0 -632
- package/build/test/basedriver/capability-specs.js +0 -396
- package/build/test/basedriver/commands/event-specs.js +0 -112
- package/build/test/basedriver/commands/log-specs.js +0 -80
- package/build/test/basedriver/driver-e2e-specs.js +0 -17
- package/build/test/basedriver/driver-specs.js +0 -17
- package/build/test/basedriver/helpers-e2e-specs.js +0 -194
- package/build/test/basedriver/helpers-specs.js +0 -153
- package/build/test/basedriver/timeout-specs.js +0 -139
- package/build/test/basedriver/websockets-e2e-specs.js +0 -84
- package/build/test/express/server-e2e-specs.js +0 -156
- package/build/test/express/server-specs.js +0 -151
- package/build/test/express/static-specs.js +0 -23
- package/build/test/jsonwp-proxy/mock-request.js +0 -93
- package/build/test/jsonwp-proxy/protocol-converter-specs.js +0 -173
- package/build/test/jsonwp-proxy/proxy-e2e-specs.js +0 -61
- package/build/test/jsonwp-proxy/proxy-specs.js +0 -294
- package/build/test/jsonwp-proxy/url-specs.js +0 -167
- package/build/test/jsonwp-status/status-specs.js +0 -36
- package/build/test/protocol/errors-specs.js +0 -388
- package/build/test/protocol/fake-driver.js +0 -168
- package/build/test/protocol/helpers.js +0 -27
- package/build/test/protocol/protocol-e2e-specs.js +0 -1182
- package/build/test/protocol/routes-specs.js +0 -82
- package/build/test/protocol/validator-specs.js +0 -151
- package/lib/protocol/sessions-cache.js +0 -74
- package/test/basedriver/capabilities-specs.js +0 -505
- package/test/basedriver/capability-specs.js +0 -409
- package/test/basedriver/commands/event-specs.js +0 -74
- package/test/basedriver/commands/log-specs.js +0 -70
- package/test/basedriver/driver-e2e-specs.js +0 -8
- package/test/basedriver/driver-specs.js +0 -8
- package/test/basedriver/fixtures/BadZippedApp.zip +0 -1
- package/test/basedriver/fixtures/FakeAndroidApp.apk +0 -1
- package/test/basedriver/fixtures/FakeAndroidApp.asd +0 -0
- package/test/basedriver/fixtures/FakeIOSApp.app +0 -1
- package/test/basedriver/fixtures/FakeIOSApp.app.zip +0 -0
- package/test/basedriver/fixtures/FakeIOSApp.ipa +0 -0
- package/test/basedriver/fixtures/custom-element-finder-bad.js +0 -5
- package/test/basedriver/fixtures/custom-element-finder.js +0 -29
- package/test/basedriver/helpers-e2e-specs.js +0 -187
- package/test/basedriver/helpers-specs.js +0 -137
- package/test/basedriver/timeout-specs.js +0 -133
- package/test/basedriver/websockets-e2e-specs.js +0 -75
|
@@ -32,19 +32,19 @@ const IPA_EXT = '.ipa';
|
|
|
32
32
|
const ZIP_EXTS = ['.zip', IPA_EXT];
|
|
33
33
|
const ZIP_MIME_TYPES = ['application/zip', 'application/x-zip-compressed', 'multipart/x-zip'];
|
|
34
34
|
const CACHED_APPS_MAX_AGE = 1000 * 60 * 60 * 24;
|
|
35
|
+
const MAX_CACHED_APPS = 1024;
|
|
35
36
|
const APPLICATIONS_CACHE = new _lruCache.default({
|
|
36
|
-
|
|
37
|
+
max: MAX_CACHED_APPS,
|
|
38
|
+
ttl: CACHED_APPS_MAX_AGE,
|
|
37
39
|
updateAgeOnGet: true,
|
|
38
40
|
dispose: (app, {
|
|
39
41
|
fullPath
|
|
40
42
|
}) => {
|
|
41
43
|
_logger.default.info(`The application '${app}' cached at '${fullPath}' has ` + `expired after ${CACHED_APPS_MAX_AGE}ms`);
|
|
42
44
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
});
|
|
45
|
+
if (fullPath) {
|
|
46
|
+
_support.fs.rimraf(fullPath);
|
|
47
|
+
}
|
|
48
48
|
},
|
|
49
49
|
noDisposeOnSet: true
|
|
50
50
|
});
|
|
@@ -53,11 +53,11 @@ const SANITIZE_REPLACEMENT = '-';
|
|
|
53
53
|
const DEFAULT_BASENAME = 'appium-app';
|
|
54
54
|
const APP_DOWNLOAD_TIMEOUT_MS = 120 * 1000;
|
|
55
55
|
process.on('exit', () => {
|
|
56
|
-
if (APPLICATIONS_CACHE.
|
|
56
|
+
if (APPLICATIONS_CACHE.size === 0) {
|
|
57
57
|
return;
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
-
const appPaths = APPLICATIONS_CACHE.values().map(({
|
|
60
|
+
const appPaths = [...APPLICATIONS_CACHE.values()].map(({
|
|
61
61
|
fullPath
|
|
62
62
|
}) => fullPath);
|
|
63
63
|
|
|
@@ -528,7 +528,5 @@ function parseCapsArray(cap) {
|
|
|
528
528
|
}
|
|
529
529
|
|
|
530
530
|
throw new Error(`must provide a string or JSON Array; received ${cap}`);
|
|
531
|
-
}
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9iYXNlZHJpdmVyL2hlbHBlcnMuanMiXSwibmFtZXMiOlsiSVBBX0VYVCIsIlpJUF9FWFRTIiwiWklQX01JTUVfVFlQRVMiLCJDQUNIRURfQVBQU19NQVhfQUdFIiwiQVBQTElDQVRJT05TX0NBQ0hFIiwiTFJVIiwibWF4QWdlIiwidXBkYXRlQWdlT25HZXQiLCJkaXNwb3NlIiwiYXBwIiwiZnVsbFBhdGgiLCJsb2dnZXIiLCJpbmZvIiwic2V0VGltZW91dCIsImZzIiwicmltcmFmIiwibm9EaXNwb3NlT25TZXQiLCJBUFBMSUNBVElPTlNfQ0FDSEVfR1VBUkQiLCJBc3luY0xvY2siLCJTQU5JVElaRV9SRVBMQUNFTUVOVCIsIkRFRkFVTFRfQkFTRU5BTUUiLCJBUFBfRE9XTkxPQURfVElNRU9VVF9NUyIsInByb2Nlc3MiLCJvbiIsIml0ZW1Db3VudCIsImFwcFBhdGhzIiwidmFsdWVzIiwibWFwIiwiZGVidWciLCJsZW5ndGgiLCJ1dGlsIiwicGx1cmFsaXplIiwiYXBwUGF0aCIsInJpbXJhZlN5bmMiLCJlIiwid2FybiIsIm1lc3NhZ2UiLCJyZXRyaWV2ZUhlYWRlcnMiLCJsaW5rIiwidXJsIiwibWV0aG9kIiwidGltZW91dCIsImhlYWRlcnMiLCJnZXRDYWNoZWRBcHBsaWNhdGlvblBhdGgiLCJjdXJyZW50QXBwUHJvcHMiLCJjYWNoZWRBcHBJbmZvIiwicmVmcmVzaCIsIl8iLCJpc1BsYWluT2JqZWN0IiwibGFzdE1vZGlmaWVkIiwiY3VycmVudE1vZGlmaWVkIiwiaW1tdXRhYmxlIiwiY3VycmVudEltbXV0YWJsZSIsImN1cnJlbnRNYXhBZ2UiLCJ0aW1lc3RhbXAiLCJnZXRUaW1lIiwibXNMZWZ0IiwiRGF0ZSIsIm5vdyIsInBhdGgiLCJiYXNlbmFtZSIsInZlcmlmeUFwcEV4dGVuc2lvbiIsInN1cHBvcnRlZEFwcEV4dGVuc2lvbnMiLCJ0b0xvd2VyIiwiaW5jbHVkZXMiLCJleHRuYW1lIiwiRXJyb3IiLCJjYWxjdWxhdGVGb2xkZXJJbnRlZ3JpdHkiLCJmb2xkZXJQYXRoIiwiZ2xvYiIsImN3ZCIsInN0cmljdCIsIm5vc29ydCIsImNhbGN1bGF0ZUZpbGVJbnRlZ3JpdHkiLCJmaWxlUGF0aCIsImhhc2giLCJpc0FwcEludGVncml0eU9rIiwiY3VycmVudFBhdGgiLCJleHBlY3RlZEludGVncml0eSIsImV4aXN0cyIsInN0YXQiLCJpc0RpcmVjdG9yeSIsImZvbGRlciIsImZpbGUiLCJjb25maWd1cmVBcHAiLCJvcHRpb25zIiwiaXNTdHJpbmciLCJvblBvc3RQcm9jZXNzIiwiaXNBcnJheSIsInN1cHBvcnRlZEV4dGVuc2lvbnMiLCJpc0VtcHR5IiwibmV3QXBwIiwic2hvdWxkVW56aXBBcHAiLCJwYWNrYWdlSGFzaCIsInJlbW90ZUFwcFByb3BzIiwicHJvdG9jb2wiLCJwYXRobmFtZSIsInBhcnNlIiwiaXNVcmwiLCJnZXQiLCJhY3F1aXJlIiwidGVzdCIsIm1heEFnZU1hdGNoIiwiZXhlYyIsInBhcnNlSW50IiwiY2FjaGVkUGF0aCIsImludGVncml0eSIsImRlbCIsImZpbGVOYW1lIiwic2FuaXRpemVOYW1lIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwicmVwbGFjZW1lbnQiLCJjdCIsInNvbWUiLCJtaW1lVHlwZSIsIlJlZ0V4cCIsImVzY2FwZVJlZ0V4cCIsIm1hdGNoIiwicmVzdWx0aW5nTmFtZSIsInN1YnN0cmluZyIsInJlc3VsdGluZ0V4dCIsImZpcnN0IiwidGFyZ2V0UGF0aCIsInRlbXBEaXIiLCJwcmVmaXgiLCJzdWZmaXgiLCJkb3dubG9hZEFwcCIsImVycm9yTWVzc2FnZSIsImlzUGFja2FnZUFGaWxlIiwiaXNGaWxlIiwiaXNGdW5jdGlvbiIsImFyY2hpdmVQYXRoIiwidG1wUm9vdCIsIm9wZW5EaXIiLCJ1bnppcEFwcCIsImlzQWJzb2x1dGUiLCJyZXNvbHZlIiwic3RvcmVBcHBJbkNhY2hlIiwiYXBwUGF0aFRvQ2FjaGUiLCJjYWNoZWRGdWxsUGF0aCIsInNldCIsInJlc3VsdCIsImNsb25lIiwiQm9vbGVhbiIsImhyZWYiLCJuZXQiLCJkb3dubG9hZEZpbGUiLCJlcnIiLCJ6aXBQYXRoIiwiZHN0Um9vdCIsInppcCIsImFzc2VydFZhbGlkWmlwIiwidGltZXIiLCJ0aW1pbmciLCJUaW1lciIsInN0YXJ0IiwidXNlU3lzdGVtVW56aXBFbnYiLCJlbnYiLCJBUFBJVU1fUFJFRkVSX1NZU1RFTV9VTlpJUCIsInVzZVN5c3RlbVVuemlwIiwiZXh0cmFjdGlvbk9wdHMiLCJmaWxlTmFtZXNFbmNvZGluZyIsImV4dHJhY3RBbGxUbyIsImdsb2JQYXR0ZXJuIiwiZXh0IiwicmVwbGFjZSIsImpvaW4iLCJzb3J0ZWRCdW5kbGVJdGVtcyIsInNvcnQiLCJhIiwiYiIsInNwbGl0Iiwic2VwIiwiZXJyb3JBbmRUaHJvdyIsIk1hdGgiLCJyb3VuZCIsImdldER1cmF0aW9uIiwiYXNNaWxsaVNlY29uZHMiLCJtYXRjaGVkQnVuZGxlIiwiZHN0UGF0aCIsIm12IiwibWtkaXJwIiwiaXNQYWNrYWdlT3JCdW5kbGUiLCJkdXBsaWNhdGVLZXlzIiwiaW5wdXQiLCJmaXJzdEtleSIsInNlY29uZEtleSIsIml0ZW0iLCJyZXN1bHRPYmoiLCJrZXkiLCJ2YWx1ZSIsInRvUGFpcnMiLCJyZWN1cnNpdmVseUNhbGxlZFZhbHVlIiwicGFyc2VDYXBzQXJyYXkiLCJjYXAiLCJwYXJzZWRDYXBzIiwiSlNPTiIsImlnbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxPQUFPLEdBQUcsTUFBaEI7QUFDQSxNQUFNQyxRQUFRLEdBQUcsQ0FBQyxNQUFELEVBQVNELE9BQVQsQ0FBakI7QUFDQSxNQUFNRSxjQUFjLEdBQUcsQ0FDckIsaUJBRHFCLEVBRXJCLDhCQUZxQixFQUdyQixpQkFIcUIsQ0FBdkI7QUFLQSxNQUFNQyxtQkFBbUIsR0FBRyxPQUFPLEVBQVAsR0FBWSxFQUFaLEdBQWlCLEVBQTdDO0FBQ0EsTUFBTUMsa0JBQWtCLEdBQUcsSUFB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RUFBOEI7QUFDNUIsTUFBSW5KLGdCQUFFeUMsT0FBRixDQUFVMEcsR0FBVixDQUFKLEVBQW9CO0FBQ2xCLFdBQU9BLEdBQVA7QUFDRDs7QUFFRCxNQUFJQyxVQUFKOztBQUNBLE1BQUk7QUFDRkEsSUFBQUEsVUFBVSxHQUFHQyxJQUFJLENBQUNuRyxLQUFMLENBQVdpRyxHQUFYLENBQWI7O0FBQ0EsUUFBSW5KLGdCQUFFeUMsT0FBRixDQUFVMkcsVUFBVixDQUFKLEVBQTJCO0FBQ3pCLGFBQU9BLFVBQVA7QUFDRDtBQUNGLEdBTEQsQ0FLRSxPQUFPRSxHQUFQLEVBQVk7QUFDWjFMLG9CQUFPd0IsSUFBUCxDQUFhLDBDQUFiO0FBQ0Q7O0FBQ0QsTUFBSVksZ0JBQUV1QyxRQUFGLENBQVc0RyxHQUFYLENBQUosRUFBcUI7QUFDbkIsV0FBTyxDQUFDQSxHQUFELENBQVA7QUFDRDs7QUFDRCxRQUFNLElBQUloSSxLQUFKLENBQVcsaURBQWdEZ0ksR0FBSSxFQUEvRCxDQUFOO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgdXJsIGZyb20gJ3VybCc7XG5pbXBvcnQgbG9nZ2VyIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7IHRlbXBEaXIsIGZzLCB1dGlsLCB6aXAsIG5ldCwgdGltaW5nIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBMUlUgZnJvbSAnbHJ1LWNhY2hlJztcbmltcG9ydCBBc3luY0xvY2sgZnJvbSAnYXN5bmMtbG9jayc7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuXG5jb25zdCBJUEFfRVhUID0gJy5pcGEnO1xuY29uc3QgWklQX0VYVFMgPSBbJy56aXAnLCBJUEFfRVhUXTtcbmNvbnN0IFpJUF9NSU1FX1RZUEVTID0gW1xuICAnYXBwbGljYXRpb24vemlwJyxcbiAgJ2FwcGxpY2F0aW9uL3gtemlwLWNvbXByZXNzZWQnLFxuICAnbXVsdGlwYXJ0L3gtemlwJyxcbl07XG5jb25zdCBDQUNIRURfQVBQU19NQVhfQUdFID0gMTAwMCAqIDYwICogNjAgKiAyNDsgLy8gbXNcbmNvbnN0IEFQUExJQ0FUSU9OU19DQUNIRSA9IG5ldyBMUlUoe1xuICBtYXhBZ2U6IENBQ0hFRF9BUFBTX01BWF9BR0UsIC8vIGV4cGlyZSBhZnRlciAyNCBob3Vyc1xuICB1cGRhdGVBZ2VPbkdldDogdHJ1ZSxcbiAgZGlzcG9zZTogKGFwcCwge2Z1bGxQYXRofSkgPT4ge1xuICAgIGxvZ2dlci5pbmZvKGBUaGUgYXBwbGljYXRpb24gJyR7YXBwfScgY2FjaGVkIGF0ICcke2Z1bGxQYXRofScgaGFzIGAgK1xuICAgICAgYGV4cGlyZWQgYWZ0ZXIgJHtDQUNIRURfQVBQU19NQVhfQUdFfW1zYCk7XG4gICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICBpZiAoZnVsbFBhdGgpIHtcbiAgICAgICAgYXdhaXQgZnMucmltcmFmKGZ1bGxQYXRoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcbiAgbm9EaXNwb3NlT25TZXQ6IHRydWUsXG59KTtcbmNvbnN0IEFQUExJQ0FUSU9OU19DQUNIRV9HVUFSRCA9IG5ldyBBc3luY0xvY2soKTtcbmNvbnN0IFNBTklUSVpFX1JFUExBQ0VNRU5UID0gJy0nO1xuY29uc3QgREVGQVVMVF9CQVNFTkFNRSA9ICdhcHBpdW0tYXBwJztcbmNvbnN0IEFQUF9ET1dOTE9BRF9USU1FT1VUX01TID0gMTIwICogMTAwMDtcblxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgaWYgKEFQUExJQ0FUSU9OU19DQUNIRS5pdGVtQ291bnQgPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBhcHBQYXRocyA9IEFQUExJQ0FUSU9OU19DQUNIRS52YWx1ZXMoKVxuICAgIC5tYXAoKHtmdWxsUGF0aH0pID0+IGZ1bGxQYXRoKTtcbiAgbG9nZ2VyLmRlYnVnKGBQZXJmb3JtaW5nIGNsZWFudXAgb2YgJHthcHBQYXRocy5sZW5ndGh9IGNhY2hlZCBgICtcbiAgICB1dGlsLnBsdXJhbGl6ZSgnYXBwbGljYXRpb24nLCBhcHBQYXRocy5sZW5ndGgpKTtcbiAgZm9yIChjb25zdCBhcHBQYXRoIG9mIGFwcFBhdGhzKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIEFzeW5jaHJvbm91cyBjYWxscyBhcmUgbm90IHN1cHBvcnRlZCBpbiBvbkV4aXQgaGFuZGxlclxuICAgICAgZnMucmltcmFmU3luYyhhcHBQYXRoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBsb2dnZXIud2FybihlLm1lc3NhZ2UpO1xuICAgIH1cbiAgfVxufSk7XG5cblxuYXN5bmMgZnVuY3Rpb24gcmV0cmlldmVIZWFkZXJzIChsaW5rKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIChhd2FpdCBheGlvcyh7XG4gICAgICB1cmw6IGxpbmssXG4gICAgICBtZXRob2Q6ICdIRUFEJyxcbiAgICAgIHRpbWVvdXQ6IDUwMDAsXG4gICAgfSkpLmhlYWRlcnM7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2dnZXIuaW5mbyhgQ2Fubm90IHNlbmQgSEVBRCByZXF1ZXN0IHRvICcke2xpbmt9Jy4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWApO1xuICB9XG4gIHJldHVybiB7fTtcbn1cblxuZnVuY3Rpb24gZ2V0Q2FjaGVkQXBwbGljYXRpb25QYXRoIChsaW5rLCBjdXJyZW50QXBwUHJvcHMgPSB7fSwgY2FjaGVkQXBwSW5mbyA9IHt9KSB7XG4gIGNvbnN0IHJlZnJlc2ggPSAoKSA9PiB7XG4gICAgbG9nZ2VyLmRlYnVnKGBBIGZyZXNoIGNvcHkgb2YgdGhlIGFwcGxpY2F0aW9uIGlzIGdvaW5nIHRvIGJlIGRvd25sb2FkZWQgZnJvbSAke2xpbmt9YCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG5cbiAgaWYgKCFfLmlzUGxhaW5PYmplY3QoY2FjaGVkQXBwSW5mbykgfHwgIV8uaXNQbGFpbk9iamVjdChjdXJyZW50QXBwUHJvcHMpKSB7XG4gICAgLy8gaWYgYW4gaW52YWxpZCBhcmcgaXMgcGFzc2VkIHRoZW4gYXNzdW1lIGNhY2hlIG1pc3NcbiAgICByZXR1cm4gcmVmcmVzaCgpO1xuICB9XG5cbiAgY29uc3Qge1xuICAgIGxhc3RNb2RpZmllZDogY3VycmVudE1vZGlmaWVkLFxuICAgIGltbXV0YWJsZTogY3VycmVudEltbXV0YWJsZSxcbiAgICAvLyBtYXhBZ2UgaXMgaW4gc2Vjb25kc1xuICAgIG1heEFnZTogY3VycmVudE1heEFnZSxcbiAgfSA9IGN1cnJlbnRBcHBQcm9wcztcbiAgY29uc3Qge1xuICAgIC8vIERhdGUgaW5zdGFuY2VcbiAgICBsYXN0TW9kaWZpZWQsXG4gICAgLy8gYm9vbGVhblxuICAgIGltbXV0YWJsZSxcbiAgICAvLyBVbml4IHRpbWUgaW4gbWlsbGlzZWNvbmRzXG4gICAgdGltZXN0YW1wLFxuICAgIGZ1bGxQYXRoLFxuICB9ID0gY2FjaGVkQXBwSW5mbztcbiAgaWYgKGxhc3RNb2RpZmllZCAmJiBjdXJyZW50TW9kaWZpZWQpIHtcbiAgICBpZiAoY3VycmVudE1vZGlmaWVkLmdldFRpbWUoKSA8PSBsYXN0TW9kaWZpZWQuZ2V0VGltZSgpKSB7XG4gICAgICBsb2dnZXIuZGVidWcoYFRoZSBhcHBsaWNhdGlvbiBhdCAke2xpbmt9IGhhcyBub3QgYmVlbiBtb2RpZmllZCBzaW5jZSAke2xhc3RNb2RpZmllZH1gKTtcbiAgICAgIHJldHVybiBmdWxsUGF0aDtcbiAgICB9XG4gICAgbG9nZ2VyLmRlYnVnKGBUaGUgYXBwbGljYXRpb24gYXQgJHtsaW5rfSBoYXMgYmVlbiBtb2RpZmllZCBzaW5jZSAke2xhc3RNb2RpZmllZH1gKTtcbiAgICByZXR1cm4gcmVmcmVzaCgpO1xuICB9XG4gIGlmIChpbW11dGFibGUgJiYgY3VycmVudEltbXV0YWJsZSkge1xuICAgIGxvZ2dlci5kZWJ1ZyhgVGhlIGFwcGxpY2F0aW9uIGF0ICR7bGlua30gaXMgaW1tdXRhYmxlYCk7XG4gICAgcmV0dXJuIGZ1bGxQYXRoO1xuICB9XG4gIGlmIChjdXJyZW50TWF4QWdlICYmIHRpbWVzdGFtcCkge1xuICAgIGNvbnN0IG1zTGVmdCA9IHRpbWVzdGFtcCArIGN1cnJlbnRNYXhBZ2UgKiAxMDAwIC0gRGF0ZS5ub3coKTtcbiAgICBpZiAobXNMZWZ0ID4gMCkge1xuICAgICAgbG9nZ2VyLmRlYnVnKGBUaGUgY2FjaGVkIGFwcGxpY2F0aW9uICcke3BhdGguYmFzZW5hbWUoZnVsbFBhdGgpfScgd2lsbCBleHBpcmUgaW4gJHttc0xlZnQgLyAxMDAwfXNgKTtcbiAgICAgIHJldHVybiBmdWxsUGF0aDtcbiAgICB9XG4gICAgbG9nZ2VyLmRlYnVnKGBUaGUgY2FjaGVkIGFwcGxpY2F0aW9uICcke3BhdGguYmFzZW5hbWUoZnVsbFBhdGgpfScgaGFzIGV4cGlyZWRgKTtcbiAgfVxuICByZXR1cm4gcmVmcmVzaCgpO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlBcHBFeHRlbnNpb24gKGFwcCwgc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucykge1xuICBpZiAoc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucy5tYXAoXy50b0xvd2VyKS5pbmNsdWRlcyhfLnRvTG93ZXIocGF0aC5leHRuYW1lKGFwcCkpKSkge1xuICAgIHJldHVybiBhcHA7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBOZXcgYXBwIHBhdGggJyR7YXBwfScgZGlkIG5vdCBoYXZlIGAgK1xuICAgIGAke3V0aWwucGx1cmFsaXplKCdleHRlbnNpb24nLCBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zLmxlbmd0aCwgZmFsc2UpfTogYCArXG4gICAgc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNhbGN1bGF0ZUZvbGRlckludGVncml0eSAoZm9sZGVyUGF0aCkge1xuICByZXR1cm4gKGF3YWl0IGZzLmdsb2IoJyoqLyonLCB7Y3dkOiBmb2xkZXJQYXRoLCBzdHJpY3Q6IGZhbHNlLCBub3NvcnQ6IHRydWV9KSkubGVuZ3RoO1xufVxuXG5hc3luYyBmdW5jdGlvbiBjYWxjdWxhdGVGaWxlSW50ZWdyaXR5IChmaWxlUGF0aCkge1xuICByZXR1cm4gYXdhaXQgZnMuaGFzaChmaWxlUGF0aCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGlzQXBwSW50ZWdyaXR5T2sgKGN1cnJlbnRQYXRoLCBleHBlY3RlZEludGVncml0eSA9IHt9KSB7XG4gIGlmICghYXdhaXQgZnMuZXhpc3RzKGN1cnJlbnRQYXRoKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIEZvbGRlciBpbnRlZ3JpdHkgY2hlY2sgaXMgc2ltcGxlOlxuICAvLyBWZXJpZnkgdGhlIHByZXZpb3VzIGFtb3VudCBvZiBmaWxlcyBpcyBub3QgZ3JlYXRlciB0aGFuIHRoZSBjdXJyZW50IG9uZS5cbiAgLy8gV2UgZG9uJ3Qgd2FudCB0byB1c2UgZXF1YWxpdHkgY29tcGFyaXNvbiBiZWNhdXNlIG9mIGFuIGFzc3VtcHRpb24gdGhhdCB0aGUgT1MgbWlnaHRcbiAgLy8gY3JlYXRlIHNvbWUgdW53YW50ZWQgc2VydmljZSBmaWxlcy9jYWNoZWQgaW5zaWRlIG9mIHRoYXQgZm9sZGVyIG9yIGl0cyBzdWJmb2xkZXJzLlxuICAvLyBPZmMsIHZhbGlkYXRpbmcgdGhlIGhhc2ggc3VtIG9mIGVhY2ggZmlsZSAob3IgYXQgbGVhc3Qgb2YgZmlsZSBwYXRoKSB3b3VsZCBiZSBtdWNoXG4gIC8vIG1vcmUgcHJlY2lzZSwgYnV0IHdlIGRvbid0IG5lZWQgdG8gYmUgdmVyeSBwcmVjaXNlIGhlcmUgYW5kIGFsc28gZG9uJ3Qgd2FudCB0b1xuICAvLyBvdmVydXNlIFJBTSBhbmQgaGF2ZSBhIHBlcmZvcm1hbmNlIGRyb3AuXG4gIHJldHVybiAoYXdhaXQgZnMuc3RhdChjdXJyZW50UGF0aCkpLmlzRGlyZWN0b3J5KClcbiAgICA/IGF3YWl0IGNhbGN1bGF0ZUZvbGRlckludGVncml0eShjdXJyZW50UGF0aCkgPj0gZXhwZWN0ZWRJbnRlZ3JpdHk/LmZvbGRlclxuICAgIDogYXdhaXQgY2FsY3VsYXRlRmlsZUludGVncml0eShjdXJyZW50UGF0aCkgPT09IGV4cGVjdGVkSW50ZWdyaXR5Py5maWxlO1xufVxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFBvc3RQcm9jZXNzT3B0aW9uc1xuICogQHByb3BlcnR5IHs/T2JqZWN0fSBjYWNoZWRBcHBJbmZvIFRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcHJldmlvdXNseSBjYWNoZWQgYXBwIGluc3RhbmNlIChpZiBleGlzdHMpOlxuICogICAgLSBwYWNrYWdlSGFzaDogU0hBMSBoYXNoIG9mIHRoZSBwYWNrYWdlIGlmIGl0IGlzIGEgZmlsZSBhbmQgbm90IGEgZm9sZGVyXG4gKiAgICAtIGxhc3RNb2RpZmllZDogT3B0aW9uYWwgRGF0ZSBpbnN0YW5jZSwgdGhlIHZhbHVlIG9mIGZpbGUncyBgTGFzdC1Nb2RpZmllZGAgaGVhZGVyXG4gKiAgICAtIGltbXV0YWJsZTogT3B0aW9uYWwgYm9vbGVhbiB2YWx1ZS4gQ29udGFpbnMgdHJ1ZSBpZiB0aGUgZmlsZSBoYXMgYW4gYGltbXV0YWJsZWAgbWFya1xuICogICAgICAgICAgICAgICAgIGluIGBDYWNoZS1jb250cm9sYCBoZWFkZXJcbiAqICAgIC0gbWF4QWdlOiBPcHRpb25hbCBpbnRlZ2VyIHJlcHJlc2VudGF0aW9uIG9mIGBtYXhBZ2VgIHBhcmFtZXRlciBpbiBgQ2FjaGUtY29udHJvbGAgaGVhZGVyXG4gKiAgICAtIHRpbWVzdGFtcDogVGhlIHRpbWVzdGFtcCB0aGlzIGl0ZW0gaGFzIGJlZW4gYWRkZWQgdG8gdGhlIGNhY2hlIChtZWFzdXJlZCBpbiBVbml4IGVwb2NoXG4gKiAgICAgICAgICAgICAgICAgbWlsbGlzZWNvbmRzKVxuICogICAgLSBpbnRlZ3JpdHk6IEFuIG9iamVjdCBjb250YWluaW5nIGVpdGhlciBgZmlsZWAgcHJvcGVydHkgd2l0aCBTSEExIGhhc2ggb2YgdGhlIGZpbGVcbiAqICAgICAgICAgICAgICAgICBvciBgZm9sZGVyYCBwcm9wZXJ0eSB3aXRoIHRvdGFsIGFtb3VudCBvZiBjYWNoZWQgZmlsZXMgYW5kIHN1YmZvbGRlcnNcbiAqICAgIC0gZnVsbFBhdGg6IHRoZSBmdWxsIHBhdGggdG8gdGhlIGNhY2hlZCBhcHBcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gaXNVcmwgV2hldGhlciB0aGUgYXBwIGhhcyBiZWVuIGRvd25sb2FkZWQgZnJvbSBhIHJlbW90ZSBVUkxcbiAqIEBwcm9wZXJ0eSB7P09iamVjdH0gaGVhZGVycyBPcHRpb25hbCBoZWFkZXJzIG9iamVjdC4gT25seSBwcmVzZW50IGlmIGBpc1VybGAgaXMgdHJ1ZSBhbmQgaWYgdGhlIHNlcnZlclxuICogcmVzcG9uZHMgdG8gSEVBRCByZXF1ZXN0cy4gQWxsIGhlYWRlciBuYW1lcyBhcmUgbm9ybWFsaXplZCB0byBsb3dlcmNhc2UuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gYXBwUGF0aCBBIHN0cmluZyBjb250YWluaW5nIGZ1bGwgcGF0aCB0byB0aGUgcHJlcHJvY2Vzc2VkIGFwcGxpY2F0aW9uIHBhY2thZ2UgKGVpdGhlclxuICogZG93bmxvYWRlZCBvciBhIGxvY2FsIG9uZSlcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFBvc3RQcm9jZXNzUmVzdWx0XG4gKiBAcHJvcGVydHkge3N0cmluZ30gYXBwUGF0aCBUaGUgZnVsbCBwYXN0IHRvIHRoZSBwb3N0LXByb2Nlc3NlZCBhcHBsaWNhdGlvbiBwYWNrYWdlIG9uIHRoZVxuICogbG9jYWwgZmlsZSBzeXN0ZW0gKG1pZ2h0IGJlIGEgZmlsZSBvciBhIGZvbGRlciBwYXRoKVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gQ29uZmlndXJlQXBwT3B0aW9uc1xuICogQHByb3BlcnR5IHsob2JqOiBQb3N0UHJvY2Vzc09wdGlvbnMpID0+IChQcm9taXNlPFBvc3RQcm9jZXNzUmVzdWx0fHVuZGVmaW5lZD58UG9zdFByb2Nlc3NSZXN1bHR8dW5kZWZpbmVkKX0gb25Qb3N0UHJvY2Vzc1xuICogT3B0aW9uYWwgZnVuY3Rpb24sIHdoaWNoIHNob3VsZCBiZSBhcHBsaWVkXG4gKiB0byB0aGUgYXBwbGljYXRpb24gYWZ0ZXIgaXQgaXMgZG93bmxvYWRlZC9wcmVwcm9jZXNzZWQuIFRoaXMgZnVuY3Rpb24gbWF5IGJlIGFzeW5jXG4gKiBhbmQgaXMgZXhwZWN0ZWQgdG8gYWNjZXB0IHNpbmdsZSBvYmplY3QgcGFyYW1ldGVyLlxuICogVGhlIGZ1bmN0aW9uIGlzIGV4cGVjdGVkIHRvIGVpdGhlciByZXR1cm4gYSBmYWxzeSB2YWx1ZSwgd2hpY2ggbWVhbnMgdGhlIGFwcCBtdXN0IG5vdCBiZVxuICogY2FjaGVkIGFuZCBhIGZyZXNoIGNvcHkgb2YgaXQgaXMgZG93bmxvYWRlZCBlYWNoIHRpbWUuIElmIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBhbiBvYmplY3RcbiAqIGNvbnRhaW5pbmcgYGFwcFBhdGhgIHByb3BlcnR5IHRoZW4gdGhlIGludGVncml0eSBvZiBpdCB3aWxsIGJlIHZlcmlmaWVkIGFuZCBzdG9yZWQgaW50b1xuICogdGhlIGNhY2hlLlxuICogQHByb3BlcnR5IHtzdHJpbmdbXX0gc3VwcG9ydGVkRXh0ZW5zaW9ucyBMaXN0IG9mIHN1cHBvcnRlZCBhcHBsaWNhdGlvbiBleHRlbnNpb25zIChcbiAqIGluY2x1ZGluZyBzdGFydGluZyBkb3RzKS4gVGhpcyBwcm9wZXJ0eSBpcyBtYW5kYXRvcnkgYW5kIG11c3Qgbm90IGJlIGVtcHR5LlxuICovXG5cbi8qKlxuICogUHJlcGFyZXMgYW4gYXBwIHRvIGJlIHVzZWQgaW4gYW4gYXV0b21hdGVkIHRlc3QuIFRoZSBhcHAgZ2V0cyBjYWNoZWQgYXV0b21hdGljYWxseVxuICogaWYgaXQgaXMgYW4gYXJjaGl2ZSBvciBpZiBpdCBpcyBkb3dubG9hZGVkIGZyb20gYW4gVVJMLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcHAgRWl0aGVyIGEgZnVsbCBwYXRoIHRvIHRoZSBhcHAgb3IgYSByZW1vdGUgVVJMXG4gKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXXxDb25maWd1cmVBcHBPcHRpb25zfSBvcHRpb25zXG4gKiBAcmV0dXJucyBUaGUgZnVsbCBwYXRoIHRvIHRoZSByZXN1bHRpbmcgYXBwbGljYXRpb24gYnVuZGxlXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGNvbmZpZ3VyZUFwcCAoYXBwLCBvcHRpb25zID0ge30pIHtcbiAgaWYgKCFfLmlzU3RyaW5nKGFwcCkpIHtcbiAgICAvLyBpbW1lZGlhdGVseSBzaG9ydGNpcmN1aXQgaWYgbm90IGdpdmVuIGFuIGFwcFxuICAgIHJldHVybjtcbiAgfVxuXG4gIGxldCBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zO1xuICBjb25zdCB7XG4gICAgb25Qb3N0UHJvY2VzcyxcbiAgfSA9IF8uaXNQbGFpbk9iamVjdChvcHRpb25zKSA/IG9wdGlvbnMgOiB7fTtcbiAgaWYgKF8uaXNTdHJpbmcob3B0aW9ucykpIHtcbiAgICBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zID0gW29wdGlvbnNdO1xuICB9IGVsc2UgaWYgKF8uaXNBcnJheShvcHRpb25zKSkge1xuICAgIHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMgPSBvcHRpb25zO1xuICB9IGVsc2UgaWYgKF8uaXNQbGFpbk9iamVjdChvcHRpb25zKSkge1xuICAgIHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMgPSBvcHRpb25zLnN1cHBvcnRlZEV4dGVuc2lvbnM7XG4gIH1cbiAgaWYgKF8uaXNFbXB0eShzdXBwb3J0ZWRBcHBFeHRlbnNpb25zKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgT25lIG9yIG1vcmUgc3VwcG9ydGVkIGFwcCBleHRlbnNpb25zIG11c3QgYmUgcHJvdmlkZWRgKTtcbiAgfVxuXG4gIGxldCBuZXdBcHAgPSBhcHA7XG4gIGxldCBzaG91bGRVbnppcEFwcCA9IGZhbHNlO1xuICBsZXQgcGFja2FnZUhhc2ggPSBudWxsO1xuICBsZXQgaGVhZGVycyA9IG51bGw7XG4gIGNvbnN0IHJlbW90ZUFwcFByb3BzID0ge1xuICAgIGxhc3RNb2RpZmllZDogbnVsbCxcbiAgICBpbW11dGFibGU6IGZhbHNlLFxuICAgIG1heEFnZTogbnVsbCxcbiAgfTtcbiAgY29uc3Qge3Byb3RvY29sLCBwYXRobmFtZX0gPSB1cmwucGFyc2UobmV3QXBwKTtcbiAgY29uc3QgaXNVcmwgPSBbJ2h0dHA6JywgJ2h0dHBzOiddLmluY2x1ZGVzKHByb3RvY29sKTtcblxuICBjb25zdCBjYWNoZWRBcHBJbmZvID0gQVBQTElDQVRJT05TX0NBQ0hFLmdldChhcHApO1xuXG4gIHJldHVybiBhd2FpdCBBUFBMSUNBVElPTlNfQ0FDSEVfR1VBUkQuYWNxdWlyZShhcHAsIGFzeW5jICgpID0+IHtcbiAgICBpZiAoaXNVcmwpIHtcbiAgICAgIC8vIFVzZSB0aGUgYXBwIGZyb20gcmVtb3RlIFVSTFxuICAgICAgbG9nZ2VyLmluZm8oYFVzaW5nIGRvd25sb2FkYWJsZSBhcHAgJyR7bmV3QXBwfSdgKTtcbiAgICAgIGhlYWRlcnMgPSBhd2FpdCByZXRyaWV2ZUhlYWRlcnMobmV3QXBwKTtcbiAgICAgIGlmICghXy5pc0VtcHR5KGhlYWRlcnMpKSB7XG4gICAgICAgIGlmIChoZWFkZXJzWydsYXN0LW1vZGlmaWVkJ10pIHtcbiAgICAgICAgICByZW1vdGVBcHBQcm9wcy5sYXN0TW9kaWZpZWQgPSBuZXcgRGF0ZShoZWFkZXJzWydsYXN0LW1vZGlmaWVkJ10pO1xuICAgICAgICB9XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhgTGFzdC1Nb2RpZmllZDogJHtoZWFkZXJzWydsYXN0LW1vZGlmaWVkJ119YCk7XG4gICAgICAgIGlmIChoZWFkZXJzWydjYWNoZS1jb250cm9sJ10pIHtcbiAgICAgICAgICByZW1vdGVBcHBQcm9wcy5pbW11dGFibGUgPSAvXFxiaW1tdXRhYmxlXFxiL2kudGVzdChoZWFkZXJzWydjYWNoZS1jb250cm9sJ10pO1xuICAgICAgICAgIGNvbnN0IG1heEFnZU1hdGNoID0gL1xcYm1heC1hZ2U9KFxcZCspXFxiL2kuZXhlYyhoZWFkZXJzWydjYWNoZS1jb250cm9sJ10pO1xuICAgICAgICAgIGlmIChtYXhBZ2VNYXRjaCkge1xuICAgICAgICAgICAgcmVtb3RlQXBwUHJvcHMubWF4QWdlID0gcGFyc2VJbnQobWF4QWdlTWF0Y2hbMV0sIDEwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbG9nZ2VyLmRlYnVnKGBDYWNoZS1Db250cm9sOiAke2hlYWRlcnNbJ2NhY2hlLWNvbnRyb2wnXX1gKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNhY2hlZFBhdGggPSBnZXRDYWNoZWRBcHBsaWNhdGlvblBhdGgoYXBwLCByZW1vdGVBcHBQcm9wcywgY2FjaGVkQXBwSW5mbyk7XG4gICAgICBpZiAoY2FjaGVkUGF0aCkge1xuICAgICAgICBpZiAoYXdhaXQgaXNBcHBJbnRlZ3JpdHlPayhjYWNoZWRQYXRoLCBjYWNoZWRBcHBJbmZvPy5pbnRlZ3JpdHkpKSB7XG4gICAgICAgICAgbG9nZ2VyLmluZm8oYFJldXNpbmcgcHJldmlvdXNseSBkb3dubG9hZGVkIGFwcGxpY2F0aW9uIGF0ICcke2NhY2hlZFBhdGh9J2ApO1xuICAgICAgICAgIHJldHVybiB2ZXJpZnlBcHBFeHRlbnNpb24oY2FjaGVkUGF0aCwgc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgbG9nZ2VyLmluZm8oYFRoZSBhcHBsaWNhdGlvbiBhdCAnJHtjYWNoZWRQYXRofScgZG9lcyBub3QgZXhpc3QgYW55bW9yZSBgICtcbiAgICAgICAgICBgb3IgaXRzIGludGVncml0eSBoYXMgYmVlbiBkYW1hZ2VkLiBEZWxldGluZyBpdCBmcm9tIHRoZSBpbnRlcm5hbCBjYWNoZWApO1xuICAgICAgICBBUFBMSUNBVElPTlNfQ0FDSEUuZGVsKGFwcCk7XG4gICAgICB9XG5cbiAgICAgIGxldCBmaWxlTmFtZSA9IG51bGw7XG4gICAgICBjb25zdCBiYXNlbmFtZSA9IGZzLnNhbml0aXplTmFtZShwYXRoLmJhc2VuYW1lKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpLCB7XG4gICAgICAgIHJlcGxhY2VtZW50OiBTQU5JVElaRV9SRVBMQUNFTUVOVFxuICAgICAgfSk7XG4gICAgICBjb25zdCBleHRuYW1lID0gcGF0aC5leHRuYW1lKGJhc2VuYW1lKTtcbiAgICAgIC8vIHRvIGRldGVybWluZSBpZiB3ZSBuZWVkIHRvIHVuemlwIHRoZSBhcHAsIHdlIGhhdmUgYSBudW1iZXIgb2YgcGxhY2VzXG4gICAgICAvLyB0byBsb29rOiBjb250ZW50IHR5cGUsIGNvbnRlbnQgZGlzcG9zaXRpb24sIG9yIHRoZSBmaWxlIGV4dGVuc2lvblxuICAgICAgaWYgKFpJUF9FWFRTLmluY2x1ZGVzKGV4dG5hbWUpKSB7XG4gICAgICAgIGZpbGVOYW1lID0gYmFzZW5hbWU7XG4gICAgICAgIHNob3VsZFVuemlwQXBwID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChoZWFkZXJzWydjb250ZW50LXR5cGUnXSkge1xuICAgICAgICBjb25zdCBjdCA9IGhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddO1xuICAgICAgICBsb2dnZXIuZGVidWcoYENvbnRlbnQtVHlwZTogJHtjdH1gKTtcbiAgICAgICAgLy8gdGhlIGZpbGV0eXBlIG1heSBub3QgYmUgb2J2aW91cyBmb3IgY2VydGFpbiB1cmxzLCBzbyBjaGVjayB0aGUgbWltZSB0eXBlIHRvb1xuICAgICAgICBpZiAoWklQX01JTUVfVFlQRVMuc29tZSgobWltZVR5cGUpID0+IG5ldyBSZWdFeHAoYFxcXFxiJHtfLmVzY2FwZVJlZ0V4cChtaW1lVHlwZSl9XFxcXGJgKS50ZXN0KGN0KSkpIHtcbiAgICAgICAgICBpZiAoIWZpbGVOYW1lKSB7XG4gICAgICAgICAgICBmaWxlTmFtZSA9IGAke0RFRkFVTFRfQkFTRU5BTUV9LnppcGA7XG4gICAgICAgICAgfVxuICAgICAgICAgIHNob3VsZFVuemlwQXBwID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGhlYWRlcnNbJ2NvbnRlbnQtZGlzcG9zaXRpb24nXSAmJiAvXmF0dGFjaG1lbnQvaS50ZXN0KGhlYWRlcnNbJ2NvbnRlbnQtZGlzcG9zaXRpb24nXSkpIHtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKGBDb250ZW50LURpc3Bvc2l0aW9uOiAke2hlYWRlcnNbJ2NvbnRlbnQtZGlzcG9zaXRpb24nXX1gKTtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSAvZmlsZW5hbWU9XCIoW15cIl0rKS9pLmV4ZWMoaGVhZGVyc1snY29udGVudC1kaXNwb3NpdGlvbiddKTtcbiAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgZmlsZU5hbWUgPSBmcy5zYW5pdGl6ZU5hbWUobWF0Y2hbMV0sIHtcbiAgICAgICAgICAgIHJlcGxhY2VtZW50OiBTQU5JVElaRV9SRVBMQUNFTUVOVFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHNob3VsZFVuemlwQXBwID0gc2hvdWxkVW56aXBBcHAgfHwgWklQX0VYVFMuaW5jbHVkZXMocGF0aC5leHRuYW1lKGZpbGVOYW1lKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghZmlsZU5hbWUpIHtcbiAgICAgICAgLy8gYXNzaWduIHRoZSBkZWZhdWx0IGZpbGUgbmFtZSBhbmQgdGhlIGV4dGVuc2lvbiBpZiBub25lIGhhcyBiZWVuIGRldGVjdGVkXG4gICAgICAgIGNvbnN0IHJlc3VsdGluZ05hbWUgPSBiYXNlbmFtZVxuICAgICAgICAgID8gYmFzZW5hbWUuc3Vic3RyaW5nKDAsIGJhc2VuYW1lLmxlbmd0aCAtIGV4dG5hbWUubGVuZ3RoKVxuICAgICAgICAgIDogREVGQVVMVF9CQVNFTkFNRTtcbiAgICAgICAgbGV0IHJlc3VsdGluZ0V4dCA9IGV4dG5hbWU7XG4gICAgICAgIGlmICghc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucy5pbmNsdWRlcyhyZXN1bHRpbmdFeHQpKSB7XG4gICAgICAgICAgbG9nZ2VyLmluZm8oYFRoZSBjdXJyZW50IGZpbGUgZXh0ZW5zaW9uICcke3Jlc3VsdGluZ0V4dH0nIGlzIG5vdCBzdXBwb3J0ZWQuIGAgK1xuICAgICAgICAgICAgYERlZmF1bHRpbmcgdG8gJyR7Xy5maXJzdChzdXBwb3J0ZWRBcHBFeHRlbnNpb25zKX0nYCk7XG4gICAgICAgICAgcmVzdWx0aW5nRXh0ID0gXy5maXJzdChzdXBwb3J0ZWRBcHBFeHRlbnNpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBmaWxlTmFtZSA9IGAke3Jlc3VsdGluZ05hbWV9JHtyZXN1bHRpbmdFeHR9YDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHRhcmdldFBhdGggPSBhd2FpdCB0ZW1wRGlyLnBhdGgoe1xuICAgICAgICBwcmVmaXg6IGZpbGVOYW1lLFxuICAgICAgICBzdWZmaXg6ICcnLFxuICAgICAgfSk7XG4gICAgICBuZXdBcHAgPSBhd2FpdCBkb3dubG9hZEFwcChuZXdBcHAsIHRhcmdldFBhdGgpO1xuICAgIH0gZWxzZSBpZiAoYXdhaXQgZnMuZXhpc3RzKG5ld0FwcCkpIHtcbiAgICAgIC8vIFVzZSB0aGUgbG9jYWwgYXBwXG4gICAgICBsb2dnZXIuaW5mbyhgVXNpbmcgbG9jYWwgYXBwICcke25ld0FwcH0nYCk7XG4gICAgICBzaG91bGRVbnppcEFwcCA9IFpJUF9FWFRTLmluY2x1ZGVzKHBhdGguZXh0bmFtZShuZXdBcHApKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGVycm9yTWVzc2FnZSA9IGBUaGUgYXBwbGljYXRpb24gYXQgJyR7bmV3QXBwfScgZG9lcyBub3QgZXhpc3Qgb3IgaXMgbm90IGFjY2Vzc2libGVgO1xuICAgICAgLy8gcHJvdG9jb2wgdmFsdWUgZm9yICdDOlxcXFx0ZW1wJyBpcyAnYzonLCBzbyB3ZSBjaGVjayB0aGUgbGVuZ3RoIGFzIHdlbGxcbiAgICAgIGlmIChfLmlzU3RyaW5nKHByb3RvY29sKSAmJiBwcm90b2NvbC5sZW5ndGggPiAyKSB7XG4gICAgICAgIGVycm9yTWVzc2FnZSA9IGBUaGUgcHJvdG9jb2wgJyR7cHJvdG9jb2x9JyB1c2VkIGluICcke25ld0FwcH0nIGlzIG5vdCBzdXBwb3J0ZWQuIGAgK1xuICAgICAgICAgIGBPbmx5IGh0dHA6IGFuZCBodHRwczogcHJvdG9jb2xzIGFyZSBzdXBwb3J0ZWRgO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yTWVzc2FnZSk7XG4gICAgfVxuXG4gICAgY29uc3QgaXNQYWNrYWdlQUZpbGUgPSAoYXdhaXQgZnMuc3RhdChuZXdBcHApKS5pc0ZpbGUoKTtcbiAgICBpZiAoaXNQYWNrYWdlQUZpbGUpIHtcbiAgICAgIHBhY2thZ2VIYXNoID0gYXdhaXQgY2FsY3VsYXRlRmlsZUludGVncml0eShuZXdBcHApO1xuICAgIH1cblxuICAgIGlmIChpc1BhY2thZ2VBRmlsZSAmJiBzaG91bGRVbnppcEFwcCAmJiAhXy5pc0Z1bmN0aW9uKG9uUG9zdFByb2Nlc3MpKSB7XG4gICAgICBjb25zdCBhcmNoaXZlUGF0aCA9IG5ld0FwcDtcbiAgICAgIGlmIChwYWNrYWdlSGFzaCA9PT0gY2FjaGVkQXBwSW5mbz8ucGFja2FnZUhhc2gpIHtcbiAgICAgICAgY29uc3Qge2Z1bGxQYXRofSA9IGNhY2hlZEFwcEluZm87XG4gICAgICAgIGlmIChhd2FpdCBpc0FwcEludGVncml0eU9rKGZ1bGxQYXRoLCBjYWNoZWRBcHBJbmZvPy5pbnRlZ3JpdHkpKSB7XG4gICAgICAgICAgaWYgKGFyY2hpdmVQYXRoICE9PSBhcHApIHtcbiAgICAgICAgICAgIGF3YWl0IGZzLnJpbXJhZihhcmNoaXZlUGF0aCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxvZ2dlci5pbmZvKGBXaWxsIHJldXNlIHByZXZpb3VzbHkgY2FjaGVkIGFwcGxpY2F0aW9uIGF0ICcke2Z1bGxQYXRofSdgKTtcbiAgICAgICAgICByZXR1cm4gdmVyaWZ5QXBwRXh0ZW5zaW9uKGZ1bGxQYXRoLCBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBsb2dnZXIuaW5mbyhgVGhlIGFwcGxpY2F0aW9uIGF0ICcke2Z1bGxQYXRofScgZG9lcyBub3QgZXhpc3QgYW55bW9yZSBgICtcbiAgICAgICAgICBgb3IgaXRzIGludGVncml0eSBoYXMgYmVlbiBkYW1hZ2VkLiBEZWxldGluZyBpdCBmcm9tIHRoZSBjYWNoZWApO1xuICAgICAgICBBUFBMSUNBVElPTlNfQ0FDSEUuZGVsKGFwcCk7XG4gICAgICB9XG4gICAgICBjb25zdCB0bXBSb290ID0gYXdhaXQgdGVtcERpci5vcGVuRGlyKCk7XG4gICAgICB0cnkge1xuICAgICAgICBuZXdBcHAgPSBhd2FpdCB1bnppcEFwcChhcmNoaXZlUGF0aCwgdG1wUm9vdCwgc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucyk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpZiAobmV3QXBwICE9PSBhcmNoaXZlUGF0aCAmJiBhcmNoaXZlUGF0aCAhPT0gYXBwKSB7XG4gICAgICAgICAgYXdhaXQgZnMucmltcmFmKGFyY2hpdmVQYXRoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbG9nZ2VyLmluZm8oYFVuemlwcGVkIGxvY2FsIGFwcCB0byAnJHtuZXdBcHB9J2ApO1xuICAgIH0gZWxzZSBpZiAoIXBhdGguaXNBYnNvbHV0ZShuZXdBcHApKSB7XG4gICAgICBuZXdBcHAgPSBwYXRoLnJlc29sdmUocHJvY2Vzcy5jd2QoKSwgbmV3QXBwKTtcbiAgICAgIGxvZ2dlci53YXJuKGBUaGUgY3VycmVudCBhcHBsaWNhdGlvbiBwYXRoICcke2FwcH0nIGlzIG5vdCBhYnNvbHV0ZSBgICtcbiAgICAgICAgYGFuZCBoYXMgYmVlbiByZXdyaXR0ZW4gdG8gJyR7bmV3QXBwfScuIENvbnNpZGVyIHVzaW5nIGFic29sdXRlIHBhdGhzIHJhdGhlciB0aGFuIHJlbGF0aXZlYCk7XG4gICAgICBhcHAgPSBuZXdBcHA7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RvcmVBcHBJbkNhY2hlID0gYXN5bmMgKGFwcFBhdGhUb0NhY2hlKSA9PiB7XG4gICAgICBjb25zdCBjYWNoZWRGdWxsUGF0aCA9IGNhY2hlZEFwcEluZm8/LmZ1bGxQYXRoO1xuICAgICAgaWYgKGNhY2hlZEZ1bGxQYXRoICYmIGNhY2hlZEZ1bGxQYXRoICE9PSBhcHBQYXRoVG9DYWNoZSkge1xuICAgICAgICBhd2FpdCBmcy5yaW1yYWYoY2FjaGVkRnVsbFBhdGgpO1xuICAgICAgfVxuICAgICAgY29uc3QgaW50ZWdyaXR5ID0ge307XG4gICAgICBpZiAoKGF3YWl0IGZzLnN0YXQoYXBwUGF0aFRvQ2FjaGUpKS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgIGludGVncml0eS5mb2xkZXIgPSBhd2FpdCBjYWxjdWxhdGVGb2xkZXJJbnRlZ3JpdHkoYXBwUGF0aFRvQ2FjaGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW50ZWdyaXR5LmZpbGUgPSBhd2FpdCBjYWxjdWxhdGVGaWxlSW50ZWdyaXR5KGFwcFBhdGhUb0NhY2hlKTtcbiAgICAgIH1cbiAgICAgIEFQUExJQ0FUSU9OU19DQUNIRS5zZXQoYXBwLCB7XG4gICAgICAgIC4uLnJlbW90ZUFwcFByb3BzLFxuICAgICAgICB0aW1lc3RhbXA6IERhdGUubm93KCksXG4gICAgICAgIHBhY2thZ2VIYXNoLFxuICAgICAgICBpbnRlZ3JpdHksXG4gICAgICAgIGZ1bGxQYXRoOiBhcHBQYXRoVG9DYWNoZSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGFwcFBhdGhUb0NhY2hlO1xuICAgIH07XG5cbiAgICBpZiAoXy5pc0Z1bmN0aW9uKG9uUG9zdFByb2Nlc3MpKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBvblBvc3RQcm9jZXNzKHtcbiAgICAgICAgY2FjaGVkQXBwSW5mbzogXy5jbG9uZShjYWNoZWRBcHBJbmZvKSxcbiAgICAgICAgaXNVcmwsXG4gICAgICAgIGhlYWRlcnM6IF8uY2xvbmUoaGVhZGVycyksXG4gICAgICAgIGFwcFBhdGg6IG5ld0FwcCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuICghcmVzdWx0Py5hcHBQYXRoIHx8IGFwcCA9PT0gcmVzdWx0Py5hcHBQYXRoIHx8ICFhd2FpdCBmcy5leGlzdHMocmVzdWx0Py5hcHBQYXRoKSlcbiAgICAgICAgPyBuZXdBcHBcbiAgICAgICAgOiBhd2FpdCBzdG9yZUFwcEluQ2FjaGUocmVzdWx0LmFwcFBhdGgpO1xuICAgIH1cblxuICAgIHZlcmlmeUFwcEV4dGVuc2lvbihuZXdBcHAsIHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMpO1xuICAgIHJldHVybiAoYXBwICE9PSBuZXdBcHAgJiYgKHBhY2thZ2VIYXNoIHx8IF8udmFsdWVzKHJlbW90ZUFwcFByb3BzKS5zb21lKEJvb2xlYW4pKSlcbiAgICAgID8gYXdhaXQgc3RvcmVBcHBJbkNhY2hlKG5ld0FwcClcbiAgICAgIDogbmV3QXBwO1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZG93bmxvYWRBcHAgKGFwcCwgdGFyZ2V0UGF0aCkge1xuICBjb25zdCB7aHJlZn0gPSB1cmwucGFyc2UoYXBwKTtcbiAgdHJ5IHtcbiAgICBhd2FpdCBuZXQuZG93bmxvYWRGaWxlKGhyZWYsIHRhcmdldFBhdGgsIHtcbiAgICAgIHRpbWVvdXQ6IEFQUF9ET1dOTE9BRF9USU1FT1VUX01TLFxuICAgIH0pO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBkb3dubG9hZCB0aGUgYXBwOiAke2Vyci5tZXNzYWdlfWApO1xuICB9XG4gIHJldHVybiB0YXJnZXRQYXRoO1xufVxuXG4vKipcbiAqIEV4dHJhY3RzIHRoZSBidW5kbGUgZnJvbSBhbiBhcmNoaXZlIGludG8gdGhlIGdpdmVuIGZvbGRlclxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB6aXBQYXRoIEZ1bGwgcGF0aCB0byB0aGUgYXJjaGl2ZSBjb250YWluaW5nIHRoZSBidW5kbGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBkc3RSb290IEZ1bGwgcGF0aCB0byB0aGUgZm9sZGVyIHdoZXJlIHRoZSBleHRyYWN0ZWQgYnVuZGxlXG4gKiBzaG91bGQgYmUgcGxhY2VkXG4gKiBAcGFyYW0ge0FycmF5PHN0cmluZz58c3RyaW5nfSBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zIFRoZSBsaXN0IG9mIGV4dGVuc2lvbnNcbiAqIHRoZSB0YXJnZXQgYXBwbGljYXRpb24gYnVuZGxlIHN1cHBvcnRzLCBmb3IgZXhhbXBsZSBbJy5hcGsnLCAnLmFwa3MnXSBmb3JcbiAqIEFuZHJvaWQgcGFja2FnZXNcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEZ1bGwgcGF0aCB0byB0aGUgYnVuZGxlIGluIHRoZSBkZXN0aW5hdGlvbiBmb2xkZXJcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgZ2l2ZW4gYXJjaGl2ZSBpcyBpbnZhbGlkIG9yIG5vIGFwcGxpY2F0aW9uIGJ1bmRsZXNcbiAqIGhhdmUgYmVlbiBmb3VuZCBpbnNpZGVcbiAqL1xuYXN5bmMgZnVuY3Rpb24gdW56aXBBcHAgKHppcFBhdGgsIGRzdFJvb3QsIHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMpIHtcbiAgYXdhaXQgemlwLmFzc2VydFZhbGlkWmlwKHppcFBhdGgpO1xuXG4gIGlmICghXy5pc0FycmF5KHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMpKSB7XG4gICAgc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucyA9IFtzdXBwb3J0ZWRBcHBFeHRlbnNpb25zXTtcbiAgfVxuXG4gIGNvbnN0IHRtcFJvb3QgPSBhd2FpdCB0ZW1wRGlyLm9wZW5EaXIoKTtcbiAgdHJ5IHtcbiAgICBsb2dnZXIuZGVidWcoYFVuemlwcGluZyAnJHt6aXBQYXRofSdgKTtcbiAgICBjb25zdCB0aW1lciA9IG5ldyB0aW1pbmcuVGltZXIoKS5zdGFydCgpO1xuICAgIGNvbnN0IHVzZVN5c3RlbVVuemlwRW52ID0gcHJvY2Vzcy5lbnYuQVBQSVVNX1BSRUZFUl9TWVNURU1fVU5aSVA7XG4gICAgY29uc3QgdXNlU3lzdGVtVW56aXAgPSBfLmlzRW1wdHkodXNlU3lzdGVtVW56aXBFbnYpXG4gICAgICB8fCAhWycwJywgJ2ZhbHNlJ10uaW5jbHVkZXMoXy50b0xvd2VyKHVzZVN5c3RlbVVuemlwRW52KSk7XG4gICAgLyoqXG4gICAgICogQXR0ZW1wdCB0byB1c2UgdXNlIHRoZSBzeXN0ZW0gYHVuemlwYCAoZS5nLiwgYC91c3IvYmluL3VuemlwYCkgZHVlXG4gICAgICogdG8gdGhlIHNpZ25pZmljYW50IHBlcmZvcm1hbmNlIGltcHJvdmVtZW50IGl0IHByb3ZpZGVzIG92ZXIgdGhlIG5hdGl2ZVxuICAgICAqIEpTIFwidW56aXBcIiBpbXBsZW1lbnRhdGlvbi5cbiAgICAgKiBAdHlwZSB7aW1wb3J0KCdAYXBwaXVtL3N1cHBvcnQvbGliL3ppcCcpLkV4dHJhY3RBbGxPcHRpb25zfVxuICAgICAqL1xuICAgIGNvbnN0IGV4dHJhY3Rpb25PcHRzID0ge3VzZVN5c3RlbVVuemlwfTtcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYXBwaXVtL2FwcGl1bS9pc3N1ZXMvMTQxMDBcbiAgICBpZiAocGF0aC5leHRuYW1lKHppcFBhdGgpID09PSBJUEFfRVhUKSB7XG4gICAgICBsb2dnZXIuZGVidWcoYEVuZm9yY2luZyBVVEYtOCBlbmNvZGluZyBvbiB0aGUgZXh0cmFjdGVkIGZpbGUgbmFtZXMgZm9yICcke3BhdGguYmFzZW5hbWUoemlwUGF0aCl9J2ApO1xuICAgICAgZXh0cmFjdGlvbk9wdHMuZmlsZU5hbWVzRW5jb2RpbmcgPSAndXRmOCc7XG4gICAgfVxuICAgIGF3YWl0IHppcC5leHRyYWN0QWxsVG8oemlwUGF0aCwgdG1wUm9vdCwgZXh0cmFjdGlvbk9wdHMpO1xuICAgIGNvbnN0IGdsb2JQYXR0ZXJuID0gYCoqLyouKygke3N1cHBvcnRlZEFwcEV4dGVuc2lvbnMubWFwKChleHQpID0+IGV4dC5yZXBsYWNlKC9eXFwuLywgJycpKS5qb2luKCd8Jyl9KWA7XG4gICAgY29uc3Qgc29ydGVkQnVuZGxlSXRlbXMgPSAoYXdhaXQgZnMuZ2xvYihnbG9iUGF0dGVybiwge1xuICAgICAgY3dkOiB0bXBSb290LFxuICAgICAgc3RyaWN0OiBmYWxzZSxcbiAgICAvLyBHZXQgdGhlIHRvcCBsZXZlbCBtYXRjaFxuICAgIH0pKS5zb3J0KChhLCBiKSA9PiBhLnNwbGl0KHBhdGguc2VwKS5sZW5ndGggLSBiLnNwbGl0KHBhdGguc2VwKS5sZW5ndGgpO1xuICAgIGlmIChfLmlzRW1wdHkoc29ydGVkQnVuZGxlSXRlbXMpKSB7XG4gICAgICBsb2dnZXIuZXJyb3JBbmRUaHJvdyhgQXBwIHVuemlwcGVkIE9LLCBidXQgd2UgY291bGQgbm90IGZpbmQgYW55ICcke3N1cHBvcnRlZEFwcEV4dGVuc2lvbnN9JyBgICtcbiAgICAgICAgdXRpbC5wbHVyYWxpemUoJ2J1bmRsZScsIHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMubGVuZ3RoLCBmYWxzZSkgK1xuICAgICAgICBgIGluIGl0LiBNYWtlIHN1cmUgeW91ciBhcmNoaXZlIGNvbnRhaW5zIGF0IGxlYXN0IG9uZSBwYWNrYWdlIGhhdmluZyBgICtcbiAgICAgICAgYCcke3N1cHBvcnRlZEFwcEV4dGVuc2lvbnN9JyAke3V0aWwucGx1cmFsaXplKCdleHRlbnNpb24nLCBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zLmxlbmd0aCwgZmFsc2UpfWApO1xuICAgIH1cbiAgICBsb2dnZXIuZGVidWcoYEV4dHJhY3RlZCAke3V0aWwucGx1cmFsaXplKCdidW5kbGUgaXRlbScsIHNvcnRlZEJ1bmRsZUl0ZW1zLmxlbmd0aCwgdHJ1ZSl9IGAgK1xuICAgICAgYGZyb20gJyR7emlwUGF0aH0nIGluICR7TWF0aC5yb3VuZCh0aW1lci5nZXREdXJhdGlvbigpLmFzTWlsbGlTZWNvbmRzKX1tczogJHtzb3J0ZWRCdW5kbGVJdGVtc31gKTtcbiAgICBjb25zdCBtYXRjaGVkQnVuZGxlID0gXy5maXJzdChzb3J0ZWRCdW5kbGVJdGVtcyk7XG4gICAgbG9nZ2VyLmluZm8oYEFzc3VtaW5nICcke21hdGNoZWRCdW5kbGV9JyBpcyB0aGUgY29ycmVjdCBidW5kbGVgKTtcbiAgICBjb25zdCBkc3RQYXRoID0gcGF0aC5yZXNvbHZlKGRzdFJvb3QsIHBhdGguYmFzZW5hbWUobWF0Y2hlZEJ1bmRsZSkpO1xuICAgIGF3YWl0IGZzLm12KHBhdGgucmVzb2x2ZSh0bXBSb290LCBtYXRjaGVkQnVuZGxlKSwgZHN0UGF0aCwge21rZGlycDogdHJ1ZX0pO1xuICAgIHJldHVybiBkc3RQYXRoO1xuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IGZzLnJpbXJhZih0bXBSb290KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc1BhY2thZ2VPckJ1bmRsZSAoYXBwKSB7XG4gIHJldHVybiAoL14oW2EtekEtWjAtOVxcLV9dK1xcLlthLXpBLVowLTlcXC1fXSspKyQvKS50ZXN0KGFwcCk7XG59XG5cbi8qKlxuICogRmluZHMgYWxsIGluc3RhbmNlcyAnZmlyc3RLZXknIGFuZCBjcmVhdGUgYSBkdXBsaWNhdGUgd2l0aCB0aGUga2V5ICdzZWNvbmRLZXknLFxuICogRG8gdGhlIHNhbWUgdGhpbmcgaW4gcmV2ZXJzZS4gSWYgd2UgZmluZCAnc2Vjb25kS2V5JywgY3JlYXRlIGEgZHVwbGljYXRlIHdpdGggdGhlIGtleSAnZmlyc3RLZXknLlxuICpcbiAqIFRoaXMgd2lsbCBjYXVzZSBrZXlzIHRvIGJlIG92ZXJ3cml0dGVuIGlmIHRoZSBvYmplY3QgY29udGFpbnMgJ2ZpcnN0S2V5JyBhbmQgJ3NlY29uZEtleScuXG5cbiAqIEBwYXJhbSB7Kn0gaW5wdXQgQW55IHR5cGUgb2YgaW5wdXRcbiAqIEBwYXJhbSB7U3RyaW5nfSBmaXJzdEtleSBUaGUgZmlyc3Qga2V5IHRvIGR1cGxpY2F0ZVxuICogQHBhcmFtIHtTdHJpbmd9IHNlY29uZEtleSBUaGUgc2Vjb25kIGtleSB0byBkdXBsaWNhdGVcbiAqL1xuZnVuY3Rpb24gZHVwbGljYXRlS2V5cyAoaW5wdXQsIGZpcnN0S2V5LCBzZWNvbmRLZXkpIHtcbiAgLy8gSWYgYXJyYXkgcHJvdmlkZWQsIHJlY3Vyc2l2ZWx5IGNhbGwgb24gYWxsIGVsZW1lbnRzXG4gIGlmIChfLmlzQXJyYXkoaW5wdXQpKSB7XG4gICAgcmV0dXJuIGlucHV0Lm1hcCgoaXRlbSkgPT4gZHVwbGljYXRlS2V5cyhpdGVtLCBmaXJzdEtleSwgc2Vjb25kS2V5KSk7XG4gIH1cblxuICAvLyBJZiBvYmplY3QsIGNyZWF0ZSBkdXBsaWNhdGVzIGZvciBrZXlzIGFuZCB0aGVuIHJlY3Vyc2l2ZWx5IGNhbGwgb24gdmFsdWVzXG4gIGlmIChfLmlzUGxhaW5PYmplY3QoaW5wdXQpKSB7XG4gICAgY29uc3QgcmVzdWx0T2JqID0ge307XG4gICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIF8udG9QYWlycyhpbnB1dCkpIHtcbiAgICAgIGNvbnN0IHJlY3Vyc2l2ZWx5Q2FsbGVkVmFsdWUgPSBkdXBsaWNhdGVLZXlzKHZhbHVlLCBmaXJzdEtleSwgc2Vjb25kS2V5KTtcbiAgICAgIGlmIChrZXkgPT09IGZpcnN0S2V5KSB7XG4gICAgICAgIHJlc3VsdE9ialtzZWNvbmRLZXldID0gcmVjdXJzaXZlbHlDYWxsZWRWYWx1ZTtcbiAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSBzZWNvbmRLZXkpIHtcbiAgICAgICAgcmVzdWx0T2JqW2ZpcnN0S2V5XSA9IHJlY3Vyc2l2ZWx5Q2FsbGVkVmFsdWU7XG4gICAgICB9XG4gICAgICByZXN1bHRPYmpba2V5XSA9IHJlY3Vyc2l2ZWx5Q2FsbGVkVmFsdWU7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRPYmo7XG4gIH1cblxuICAvLyBCYXNlIGNhc2UuIFJldHVybiBwcmltaXRpdmVzIHdpdGhvdXQgZG9pbmcgYW55dGhpbmcuXG4gIHJldHVybiBpbnB1dDtcbn1cblxuLyoqXG4gKiBUYWtlcyBhIGRlc2lyZWQgY2FwYWJpbGl0eSBhbmQgdHJpZXMgdG8gSlNPTi5wYXJzZSBpdCBhcyBhbiBhcnJheSxcbiAqIGFuZCBlaXRoZXIgcmV0dXJucyB0aGUgcGFyc2VkIGFycmF5IG9yIGEgc2luZ2xldG9uIGFycmF5LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfEFycmF5PFN0cmluZz59IGNhcCBBIGRlc2lyZWQgY2FwYWJpbGl0eVxuICovXG5mdW5jdGlvbiBwYXJzZUNhcHNBcnJheSAoY2FwKSB7XG4gIGlmIChfLmlzQXJyYXkoY2FwKSkge1xuICAgIHJldHVybiBjYXA7XG4gIH1cblxuICBsZXQgcGFyc2VkQ2FwcztcbiAgdHJ5IHtcbiAgICBwYXJzZWRDYXBzID0gSlNPTi5wYXJzZShjYXApO1xuICAgIGlmIChfLmlzQXJyYXkocGFyc2VkQ2FwcykpIHtcbiAgICAgIHJldHVybiBwYXJzZWRDYXBzO1xuICAgIH1cbiAgfSBjYXRjaCAoaWduKSB7XG4gICAgbG9nZ2VyLndhcm4oYEZhaWxlZCB0byBwYXJzZSBjYXBhYmlsaXR5IGFzIEpTT04gYXJyYXlgKTtcbiAgfVxuICBpZiAoXy5pc1N0cmluZyhjYXApKSB7XG4gICAgcmV0dXJuIFtjYXBdO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgbXVzdCBwcm92aWRlIGEgc3RyaW5nIG9yIEpTT04gQXJyYXk7IHJlY2VpdmVkICR7Y2FwfWApO1xufVxuXG5leHBvcnQge1xuICBjb25maWd1cmVBcHAsIGlzUGFja2FnZU9yQnVuZGxlLCBkdXBsaWNhdGVLZXlzLCBwYXJzZUNhcHNBcnJheVxufTtcbiJdLCJmaWxlIjoibGliL2Jhc2Vkcml2ZXIvaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
|
|
531
|
+
}
|
|
532
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9iYXNlZHJpdmVyL2hlbHBlcnMuanMiXSwibmFtZXMiOlsiSVBBX0VYVCIsIlpJUF9FWFRTIiwiWklQX01JTUVfVFlQRVMiLCJDQUNIRURfQVBQU19NQVhfQUdFIiwiTUFYX0NBQ0hFRF9BUFBTIiwiQVBQTElDQVRJT05TX0NBQ0hFIiwiTFJVIiwibWF4IiwidHRsIiwidXBkYXRlQWdlT25HZXQiLCJkaXNwb3NlIiwiYXBwIiwiZnVsbFBhdGgiLCJsb2dnZXIiLCJpbmZvIiwiZnMiLCJyaW1yYWYiLCJub0Rpc3Bvc2VPblNldCIsIkFQUExJQ0FUSU9OU19DQUNIRV9HVUFSRCIsIkFzeW5jTG9jayIsIlNBTklUSVpFX1JFUExBQ0VNRU5UIiwiREVGQVVMVF9CQVNFTkFNRSIsIkFQUF9ET1dOTE9BRF9USU1FT1VUX01TIiwicHJvY2VzcyIsIm9uIiwic2l6ZSIsImFwcFBhdGhzIiwidmFsdWVzIiwibWFwIiwiZGVidWciLCJsZW5ndGgiLCJ1dGlsIiwicGx1cmFsaXplIiwiYXBwUGF0aCIsInJpbXJhZlN5bmMiLCJlIiwid2FybiIsIm1lc3NhZ2UiLCJyZXRyaWV2ZUhlYWRlcnMiLCJsaW5rIiwidXJsIiwibWV0aG9kIiwidGltZW91dCIsImhlYWRlcnMiLCJnZXRDYWNoZWRBcHBsaWNhdGlvblBhdGgiLCJjdXJyZW50QXBwUHJvcHMiLCJjYWNoZWRBcHBJbmZvIiwicmVmcmVzaCIsIl8iLCJpc1BsYWluT2JqZWN0IiwibGFzdE1vZGlmaWVkIiwiY3VycmVudE1vZGlmaWVkIiwiaW1tdXRhYmxlIiwiY3VycmVudEltbXV0YWJsZSIsIm1heEFnZSIsImN1cnJlbnRNYXhBZ2UiLCJ0aW1lc3RhbXAiLCJnZXRUaW1lIiwibXNMZWZ0IiwiRGF0ZSIsIm5vdyIsInBhdGgiLCJiYXNlbmFtZSIsInZlcmlmeUFwcEV4dGVuc2lvbiIsInN1cHBvcnRlZEFwcEV4dGVuc2lvbnMiLCJ0b0xvd2VyIiwiaW5jbHVkZXMiLCJleHRuYW1lIiwiRXJyb3IiLCJjYWxjdWxhdGVGb2xkZXJJbnRlZ3JpdHkiLCJmb2xkZXJQYXRoIiwiZ2xvYiIsImN3ZCIsInN0cmljdCIsIm5vc29ydCIsImNhbGN1bGF0ZUZpbGVJbnRlZ3JpdHkiLCJmaWxlUGF0aCIsImhhc2giLCJpc0FwcEludGVncml0eU9rIiwiY3VycmVudFBhdGgiLCJleHBlY3RlZEludGVncml0eSIsImV4aXN0cyIsInN0YXQiLCJpc0RpcmVjdG9yeSIsImZvbGRlciIsImZpbGUiLCJjb25maWd1cmVBcHAiLCJvcHRpb25zIiwiaXNTdHJpbmciLCJvblBvc3RQcm9jZXNzIiwiaXNBcnJheSIsInN1cHBvcnRlZEV4dGVuc2lvbnMiLCJpc0VtcHR5IiwibmV3QXBwIiwic2hvdWxkVW56aXBBcHAiLCJwYWNrYWdlSGFzaCIsInJlbW90ZUFwcFByb3BzIiwicHJvdG9jb2wiLCJwYXRobmFtZSIsInBhcnNlIiwiaXNVcmwiLCJnZXQiLCJhY3F1aXJlIiwidGVzdCIsIm1heEFnZU1hdGNoIiwiZXhlYyIsInBhcnNlSW50IiwiY2FjaGVkUGF0aCIsImludGVncml0eSIsImRlbCIsImZpbGVOYW1lIiwic2FuaXRpemVOYW1lIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwicmVwbGFjZW1lbnQiLCJjdCIsInNvbWUiLCJtaW1lVHlwZSIsIlJlZ0V4cCIsImVzY2FwZVJlZ0V4cCIsIm1hdGNoIiwicmVzdWx0aW5nTmFtZSIsInN1YnN0cmluZyIsInJlc3VsdGluZ0V4dCIsImZpcnN0IiwidGFyZ2V0UGF0aCIsInRlbXBEaXIiLCJwcmVmaXgiLCJzdWZmaXgiLCJkb3dubG9hZEFwcCIsImVycm9yTWVzc2FnZSIsImlzUGFja2FnZUFGaWxlIiwiaXNGaWxlIiwiaXNGdW5jdGlvbiIsImFyY2hpdmVQYXRoIiwidG1wUm9vdCIsIm9wZW5EaXIiLCJ1bnppcEFwcCIsImlzQWJzb2x1dGUiLCJyZXNvbHZlIiwic3RvcmVBcHBJbkNhY2hlIiwiYXBwUGF0aFRvQ2FjaGUiLCJjYWNoZWRGdWxsUGF0aCIsInNldCIsInJlc3VsdCIsImNsb25lIiwiQm9vbGVhbiIsImhyZWYiLCJuZXQiLCJkb3dubG9hZEZpbGUiLCJlcnIiLCJ6aXBQYXRoIiwiZHN0Um9vdCIsInppcCIsImFzc2VydFZhbGlkWmlwIiwidGltZXIiLCJ0aW1pbmciLCJUaW1lciIsInN0YXJ0IiwidXNlU3lzdGVtVW56aXBFbnYiLCJlbnYiLCJBUFBJVU1fUFJFRkVSX1NZU1RFTV9VTlpJUCIsInVzZVN5c3RlbVVuemlwIiwiZXh0cmFjdGlvbk9wdHMiLCJmaWxlTmFtZXNFbmNvZGluZyIsImV4dHJhY3RBbGxUbyIsImdsb2JQYXR0ZXJuIiwiZXh0IiwicmVwbGFjZSIsImpvaW4iLCJzb3J0ZWRCdW5kbGVJdGVtcyIsInNvcnQiLCJhIiwiYiIsInNwbGl0Iiwic2VwIiwiZXJyb3JBbmRUaHJvdyIsIk1hdGgiLCJyb3VuZCIsImdldER1cmF0aW9uIiwiYXNNaWxsaVNlY29uZHMiLCJtYXRjaGVkQnVuZGxlIiwiZHN0UGF0aCIsIm12IiwibWtkaXJwIiwiaXNQYWNrYWdlT3JCdW5kbGUiLCJkdXBsaWNhdGVLZXlzIiwiaW5wdXQiLCJmaXJzdEtleSIsInNlY29uZEtleSIsIml0ZW0iLCJyZXN1bHRPYmoiLCJrZXkiLCJ2YWx1ZSIsInRvUGFpcnMiLCJyZWN1cnNpdmVseUNhbGxlZFZhbHVlIiwicGFyc2VDYXBzQXJyYXkiLCJjYXAiLCJwYXJzZWRDYXBzIiwiSlNPTiIsImlnbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxPQUFPLEdBQUcsTUFBaEI7QUFDQSxNQUFNQyxRQUFRLEdBQUcsQ0FBQyxNQUFELEVBQVNELE9BQVQsQ0FBakI7QUFDQSxNQUFNRSxjQUFjLEdBQUcsQ0FDckIsaUJBRHFCLEVBRXJCLDhCQUZxQixFQUdyQixpQkFIcUIsQ0FBdkI7QUFLQSxNQUFNQyxtQkFBbUIsR0FBRyxPQUFPLEVBQVAsR0FBWSxFQUFaLEdBQWlCLEVBQTdDO0FBQ0Es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S0FBUDtBQUNEOztBQVFELFNBQVNTLGNBQVQsQ0FBeUJDLEdBQXpCLEVBQThCO0FBQzVCLE1BQUlwSixnQkFBRTBDLE9BQUYsQ0FBVTBHLEdBQVYsQ0FBSixFQUFvQjtBQUNsQixXQUFPQSxHQUFQO0FBQ0Q7O0FBRUQsTUFBSUMsVUFBSjs7QUFDQSxNQUFJO0FBQ0ZBLElBQUFBLFVBQVUsR0FBR0MsSUFBSSxDQUFDbkcsS0FBTCxDQUFXaUcsR0FBWCxDQUFiOztBQUNBLFFBQUlwSixnQkFBRTBDLE9BQUYsQ0FBVTJHLFVBQVYsQ0FBSixFQUEyQjtBQUN6QixhQUFPQSxVQUFQO0FBQ0Q7QUFDRixHQUxELENBS0UsT0FBT0UsR0FBUCxFQUFZO0FBQ1oxTCxvQkFBT3VCLElBQVAsQ0FBYSwwQ0FBYjtBQUNEOztBQUNELE1BQUlZLGdCQUFFd0MsUUFBRixDQUFXNEcsR0FBWCxDQUFKLEVBQXFCO0FBQ25CLFdBQU8sQ0FBQ0EsR0FBRCxDQUFQO0FBQ0Q7O0FBQ0QsUUFBTSxJQUFJaEksS0FBSixDQUFXLGlEQUFnRGdJLEdBQUksRUFBL0QsQ0FBTjtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHVybCBmcm9tICd1cmwnO1xuaW1wb3J0IGxvZ2dlciBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgeyB0ZW1wRGlyLCBmcywgdXRpbCwgemlwLCBuZXQsIHRpbWluZyB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgTFJVIGZyb20gJ2xydS1jYWNoZSc7XG5pbXBvcnQgQXN5bmNMb2NrIGZyb20gJ2FzeW5jLWxvY2snO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcblxuY29uc3QgSVBBX0VYVCA9ICcuaXBhJztcbmNvbnN0IFpJUF9FWFRTID0gWycuemlwJywgSVBBX0VYVF07XG5jb25zdCBaSVBfTUlNRV9UWVBFUyA9IFtcbiAgJ2FwcGxpY2F0aW9uL3ppcCcsXG4gICdhcHBsaWNhdGlvbi94LXppcC1jb21wcmVzc2VkJyxcbiAgJ211bHRpcGFydC94LXppcCcsXG5dO1xuY29uc3QgQ0FDSEVEX0FQUFNfTUFYX0FHRSA9IDEwMDAgKiA2MCAqIDYwICogMjQ7IC8vIG1zXG5jb25zdCBNQVhfQ0FDSEVEX0FQUFMgPSAxMDI0O1xuY29uc3QgQVBQTElDQVRJT05TX0NBQ0hFID0gbmV3IExSVSh7XG4gIG1heDogTUFYX0NBQ0hFRF9BUFBTLFxuICB0dGw6IENBQ0hFRF9BUFBTX01BWF9BR0UsIC8vIGV4cGlyZSBhZnRlciAyNCBob3Vyc1xuICB1cGRhdGVBZ2VPbkdldDogdHJ1ZSxcbiAgZGlzcG9zZTogKGFwcCwge2Z1bGxQYXRofSkgPT4ge1xuICAgIGxvZ2dlci5pbmZvKGBUaGUgYXBwbGljYXRpb24gJyR7YXBwfScgY2FjaGVkIGF0ICcke2Z1bGxQYXRofScgaGFzIGAgK1xuICAgICAgYGV4cGlyZWQgYWZ0ZXIgJHtDQUNIRURfQVBQU19NQVhfQUdFfW1zYCk7XG4gICAgaWYgKGZ1bGxQYXRoKSB7XG4gICAgICBmcy5yaW1yYWYoZnVsbFBhdGgpO1xuICAgIH1cbiAgfSxcbiAgbm9EaXNwb3NlT25TZXQ6IHRydWUsXG59KTtcbmNvbnN0IEFQUExJQ0FUSU9OU19DQUNIRV9HVUFSRCA9IG5ldyBBc3luY0xvY2soKTtcbmNvbnN0IFNBTklUSVpFX1JFUExBQ0VNRU5UID0gJy0nO1xuY29uc3QgREVGQVVMVF9CQVNFTkFNRSA9ICdhcHBpdW0tYXBwJztcbmNvbnN0IEFQUF9ET1dOTE9BRF9USU1FT1VUX01TID0gMTIwICogMTAwMDtcblxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgaWYgKEFQUExJQ0FUSU9OU19DQUNIRS5zaXplID09PSAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgYXBwUGF0aHMgPSBbLi4uQVBQTElDQVRJT05TX0NBQ0hFLnZhbHVlcygpXVxuICAgIC5tYXAoKHtmdWxsUGF0aH0pID0+IGZ1bGxQYXRoKTtcbiAgbG9nZ2VyLmRlYnVnKGBQZXJmb3JtaW5nIGNsZWFudXAgb2YgJHthcHBQYXRocy5sZW5ndGh9IGNhY2hlZCBgICtcbiAgICB1dGlsLnBsdXJhbGl6ZSgnYXBwbGljYXRpb24nLCBhcHBQYXRocy5sZW5ndGgpKTtcbiAgZm9yIChjb25zdCBhcHBQYXRoIG9mIGFwcFBhdGhzKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIEFzeW5jaHJvbm91cyBjYWxscyBhcmUgbm90IHN1cHBvcnRlZCBpbiBvbkV4aXQgaGFuZGxlclxuICAgICAgZnMucmltcmFmU3luYyhhcHBQYXRoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBsb2dnZXIud2FybihlLm1lc3NhZ2UpO1xuICAgIH1cbiAgfVxufSk7XG5cblxuYXN5bmMgZnVuY3Rpb24gcmV0cmlldmVIZWFkZXJzIChsaW5rKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIChhd2FpdCBheGlvcyh7XG4gICAgICB1cmw6IGxpbmssXG4gICAgICBtZXRob2Q6ICdIRUFEJyxcbiAgICAgIHRpbWVvdXQ6IDUwMDAsXG4gICAgfSkpLmhlYWRlcnM7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2dnZXIuaW5mbyhgQ2Fubm90IHNlbmQgSEVBRCByZXF1ZXN0IHRvICcke2xpbmt9Jy4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWApO1xuICB9XG4gIHJldHVybiB7fTtcbn1cblxuZnVuY3Rpb24gZ2V0Q2FjaGVkQXBwbGljYXRpb25QYXRoIChsaW5rLCBjdXJyZW50QXBwUHJvcHMgPSB7fSwgY2FjaGVkQXBwSW5mbyA9IHt9KSB7XG4gIGNvbnN0IHJlZnJlc2ggPSAoKSA9PiB7XG4gICAgbG9nZ2VyLmRlYnVnKGBBIGZyZXNoIGNvcHkgb2YgdGhlIGFwcGxpY2F0aW9uIGlzIGdvaW5nIHRvIGJlIGRvd25sb2FkZWQgZnJvbSAke2xpbmt9YCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG5cbiAgaWYgKCFfLmlzUGxhaW5PYmplY3QoY2FjaGVkQXBwSW5mbykgfHwgIV8uaXNQbGFpbk9iamVjdChjdXJyZW50QXBwUHJvcHMpKSB7XG4gICAgLy8gaWYgYW4gaW52YWxpZCBhcmcgaXMgcGFzc2VkIHRoZW4gYXNzdW1lIGNhY2hlIG1pc3NcbiAgICByZXR1cm4gcmVmcmVzaCgpO1xuICB9XG5cbiAgY29uc3Qge1xuICAgIGxhc3RNb2RpZmllZDogY3VycmVudE1vZGlmaWVkLFxuICAgIGltbXV0YWJsZTogY3VycmVudEltbXV0YWJsZSxcbiAgICAvLyBtYXhBZ2UgaXMgaW4gc2Vjb25kc1xuICAgIG1heEFnZTogY3VycmVudE1heEFnZSxcbiAgfSA9IGN1cnJlbnRBcHBQcm9wcztcbiAgY29uc3Qge1xuICAgIC8vIERhdGUgaW5zdGFuY2VcbiAgICBsYXN0TW9kaWZpZWQsXG4gICAgLy8gYm9vbGVhblxuICAgIGltbXV0YWJsZSxcbiAgICAvLyBVbml4IHRpbWUgaW4gbWlsbGlzZWNvbmRzXG4gICAgdGltZXN0YW1wLFxuICAgIGZ1bGxQYXRoLFxuICB9ID0gY2FjaGVkQXBwSW5mbztcbiAgaWYgKGxhc3RNb2RpZmllZCAmJiBjdXJyZW50TW9kaWZpZWQpIHtcbiAgICBpZiAoY3VycmVudE1vZGlmaWVkLmdldFRpbWUoKSA8PSBsYXN0TW9kaWZpZWQuZ2V0VGltZSgpKSB7XG4gICAgICBsb2dnZXIuZGVidWcoYFRoZSBhcHBsaWNhdGlvbiBhdCAke2xpbmt9IGhhcyBub3QgYmVlbiBtb2RpZmllZCBzaW5jZSAke2xhc3RNb2RpZmllZH1gKTtcbiAgICAgIHJldHVybiBmdWxsUGF0aDtcbiAgICB9XG4gICAgbG9nZ2VyLmRlYnVnKGBUaGUgYXBwbGljYXRpb24gYXQgJHtsaW5rfSBoYXMgYmVlbiBtb2RpZmllZCBzaW5jZSAke2xhc3RNb2RpZmllZH1gKTtcbiAgICByZXR1cm4gcmVmcmVzaCgpO1xuICB9XG4gIGlmIChpbW11dGFibGUgJiYgY3VycmVudEltbXV0YWJsZSkge1xuICAgIGxvZ2dlci5kZWJ1ZyhgVGhlIGFwcGxpY2F0aW9uIGF0ICR7bGlua30gaXMgaW1tdXRhYmxlYCk7XG4gICAgcmV0dXJuIGZ1bGxQYXRoO1xuICB9XG4gIGlmIChjdXJyZW50TWF4QWdlICYmIHRpbWVzdGFtcCkge1xuICAgIGNvbnN0IG1zTGVmdCA9IHRpbWVzdGFtcCArIGN1cnJlbnRNYXhBZ2UgKiAxMDAwIC0gRGF0ZS5ub3coKTtcbiAgICBpZiAobXNMZWZ0ID4gMCkge1xuICAgICAgbG9nZ2VyLmRlYnVnKGBUaGUgY2FjaGVkIGFwcGxpY2F0aW9uICcke3BhdGguYmFzZW5hbWUoZnVsbFBhdGgpfScgd2lsbCBleHBpcmUgaW4gJHttc0xlZnQgLyAxMDAwfXNgKTtcbiAgICAgIHJldHVybiBmdWxsUGF0aDtcbiAgICB9XG4gICAgbG9nZ2VyLmRlYnVnKGBUaGUgY2FjaGVkIGFwcGxpY2F0aW9uICcke3BhdGguYmFzZW5hbWUoZnVsbFBhdGgpfScgaGFzIGV4cGlyZWRgKTtcbiAgfVxuICByZXR1cm4gcmVmcmVzaCgpO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlBcHBFeHRlbnNpb24gKGFwcCwgc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucykge1xuICBpZiAoc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucy5tYXAoXy50b0xvd2VyKS5pbmNsdWRlcyhfLnRvTG93ZXIocGF0aC5leHRuYW1lKGFwcCkpKSkge1xuICAgIHJldHVybiBhcHA7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBOZXcgYXBwIHBhdGggJyR7YXBwfScgZGlkIG5vdCBoYXZlIGAgK1xuICAgIGAke3V0aWwucGx1cmFsaXplKCdleHRlbnNpb24nLCBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zLmxlbmd0aCwgZmFsc2UpfTogYCArXG4gICAgc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNhbGN1bGF0ZUZvbGRlckludGVncml0eSAoZm9sZGVyUGF0aCkge1xuICByZXR1cm4gKGF3YWl0IGZzLmdsb2IoJyoqLyonLCB7Y3dkOiBmb2xkZXJQYXRoLCBzdHJpY3Q6IGZhbHNlLCBub3NvcnQ6IHRydWV9KSkubGVuZ3RoO1xufVxuXG5hc3luYyBmdW5jdGlvbiBjYWxjdWxhdGVGaWxlSW50ZWdyaXR5IChmaWxlUGF0aCkge1xuICByZXR1cm4gYXdhaXQgZnMuaGFzaChmaWxlUGF0aCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGlzQXBwSW50ZWdyaXR5T2sgKGN1cnJlbnRQYXRoLCBleHBlY3RlZEludGVncml0eSA9IHt9KSB7XG4gIGlmICghYXdhaXQgZnMuZXhpc3RzKGN1cnJlbnRQYXRoKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIEZvbGRlciBpbnRlZ3JpdHkgY2hlY2sgaXMgc2ltcGxlOlxuICAvLyBWZXJpZnkgdGhlIHByZXZpb3VzIGFtb3VudCBvZiBmaWxlcyBpcyBub3QgZ3JlYXRlciB0aGFuIHRoZSBjdXJyZW50IG9uZS5cbiAgLy8gV2UgZG9uJ3Qgd2FudCB0byB1c2UgZXF1YWxpdHkgY29tcGFyaXNvbiBiZWNhdXNlIG9mIGFuIGFzc3VtcHRpb24gdGhhdCB0aGUgT1MgbWlnaHRcbiAgLy8gY3JlYXRlIHNvbWUgdW53YW50ZWQgc2VydmljZSBmaWxlcy9jYWNoZWQgaW5zaWRlIG9mIHRoYXQgZm9sZGVyIG9yIGl0cyBzdWJmb2xkZXJzLlxuICAvLyBPZmMsIHZhbGlkYXRpbmcgdGhlIGhhc2ggc3VtIG9mIGVhY2ggZmlsZSAob3IgYXQgbGVhc3Qgb2YgZmlsZSBwYXRoKSB3b3VsZCBiZSBtdWNoXG4gIC8vIG1vcmUgcHJlY2lzZSwgYnV0IHdlIGRvbid0IG5lZWQgdG8gYmUgdmVyeSBwcmVjaXNlIGhlcmUgYW5kIGFsc28gZG9uJ3Qgd2FudCB0b1xuICAvLyBvdmVydXNlIFJBTSBhbmQgaGF2ZSBhIHBlcmZvcm1hbmNlIGRyb3AuXG4gIHJldHVybiAoYXdhaXQgZnMuc3RhdChjdXJyZW50UGF0aCkpLmlzRGlyZWN0b3J5KClcbiAgICA/IGF3YWl0IGNhbGN1bGF0ZUZvbGRlckludGVncml0eShjdXJyZW50UGF0aCkgPj0gZXhwZWN0ZWRJbnRlZ3JpdHk/LmZvbGRlclxuICAgIDogYXdhaXQgY2FsY3VsYXRlRmlsZUludGVncml0eShjdXJyZW50UGF0aCkgPT09IGV4cGVjdGVkSW50ZWdyaXR5Py5maWxlO1xufVxuXG4vKipcbiAqIEB0eXBlZGVmIFBvc3RQcm9jZXNzT3B0aW9uc1xuICogQHByb3BlcnR5IHs/T2JqZWN0fSBjYWNoZWRBcHBJbmZvIFRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcHJldmlvdXNseSBjYWNoZWQgYXBwIGluc3RhbmNlIChpZiBleGlzdHMpOlxuICogICAgLSBwYWNrYWdlSGFzaDogU0hBMSBoYXNoIG9mIHRoZSBwYWNrYWdlIGlmIGl0IGlzIGEgZmlsZSBhbmQgbm90IGEgZm9sZGVyXG4gKiAgICAtIGxhc3RNb2RpZmllZDogT3B0aW9uYWwgRGF0ZSBpbnN0YW5jZSwgdGhlIHZhbHVlIG9mIGZpbGUncyBgTGFzdC1Nb2RpZmllZGAgaGVhZGVyXG4gKiAgICAtIGltbXV0YWJsZTogT3B0aW9uYWwgYm9vbGVhbiB2YWx1ZS4gQ29udGFpbnMgdHJ1ZSBpZiB0aGUgZmlsZSBoYXMgYW4gYGltbXV0YWJsZWAgbWFya1xuICogICAgICAgICAgICAgICAgIGluIGBDYWNoZS1jb250cm9sYCBoZWFkZXJcbiAqICAgIC0gbWF4QWdlOiBPcHRpb25hbCBpbnRlZ2VyIHJlcHJlc2VudGF0aW9uIG9mIGBtYXhBZ2VgIHBhcmFtZXRlciBpbiBgQ2FjaGUtY29udHJvbGAgaGVhZGVyXG4gKiAgICAtIHRpbWVzdGFtcDogVGhlIHRpbWVzdGFtcCB0aGlzIGl0ZW0gaGFzIGJlZW4gYWRkZWQgdG8gdGhlIGNhY2hlIChtZWFzdXJlZCBpbiBVbml4IGVwb2NoXG4gKiAgICAgICAgICAgICAgICAgbWlsbGlzZWNvbmRzKVxuICogICAgLSBpbnRlZ3JpdHk6IEFuIG9iamVjdCBjb250YWluaW5nIGVpdGhlciBgZmlsZWAgcHJvcGVydHkgd2l0aCBTSEExIGhhc2ggb2YgdGhlIGZpbGVcbiAqICAgICAgICAgICAgICAgICBvciBgZm9sZGVyYCBwcm9wZXJ0eSB3aXRoIHRvdGFsIGFtb3VudCBvZiBjYWNoZWQgZmlsZXMgYW5kIHN1YmZvbGRlcnNcbiAqICAgIC0gZnVsbFBhdGg6IHRoZSBmdWxsIHBhdGggdG8gdGhlIGNhY2hlZCBhcHBcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gaXNVcmwgV2hldGhlciB0aGUgYXBwIGhhcyBiZWVuIGRvd25sb2FkZWQgZnJvbSBhIHJlbW90ZSBVUkxcbiAqIEBwcm9wZXJ0eSB7P09iamVjdH0gaGVhZGVycyBPcHRpb25hbCBoZWFkZXJzIG9iamVjdC4gT25seSBwcmVzZW50IGlmIGBpc1VybGAgaXMgdHJ1ZSBhbmQgaWYgdGhlIHNlcnZlclxuICogcmVzcG9uZHMgdG8gSEVBRCByZXF1ZXN0cy4gQWxsIGhlYWRlciBuYW1lcyBhcmUgbm9ybWFsaXplZCB0byBsb3dlcmNhc2UuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gYXBwUGF0aCBBIHN0cmluZyBjb250YWluaW5nIGZ1bGwgcGF0aCB0byB0aGUgcHJlcHJvY2Vzc2VkIGFwcGxpY2F0aW9uIHBhY2thZ2UgKGVpdGhlclxuICogZG93bmxvYWRlZCBvciBhIGxvY2FsIG9uZSlcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIFBvc3RQcm9jZXNzUmVzdWx0XG4gKiBAcHJvcGVydHkge3N0cmluZ30gYXBwUGF0aCBUaGUgZnVsbCBwYXN0IHRvIHRoZSBwb3N0LXByb2Nlc3NlZCBhcHBsaWNhdGlvbiBwYWNrYWdlIG9uIHRoZVxuICogbG9jYWwgZmlsZSBzeXN0ZW0gKG1pZ2h0IGJlIGEgZmlsZSBvciBhIGZvbGRlciBwYXRoKVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYgQ29uZmlndXJlQXBwT3B0aW9uc1xuICogQHByb3BlcnR5IHsob2JqOiBQb3N0UHJvY2Vzc09wdGlvbnMpID0+IChQcm9taXNlPFBvc3RQcm9jZXNzUmVzdWx0fHVuZGVmaW5lZD58UG9zdFByb2Nlc3NSZXN1bHR8dW5kZWZpbmVkKX0gb25Qb3N0UHJvY2Vzc1xuICogT3B0aW9uYWwgZnVuY3Rpb24sIHdoaWNoIHNob3VsZCBiZSBhcHBsaWVkXG4gKiB0byB0aGUgYXBwbGljYXRpb24gYWZ0ZXIgaXQgaXMgZG93bmxvYWRlZC9wcmVwcm9jZXNzZWQuIFRoaXMgZnVuY3Rpb24gbWF5IGJlIGFzeW5jXG4gKiBhbmQgaXMgZXhwZWN0ZWQgdG8gYWNjZXB0IHNpbmdsZSBvYmplY3QgcGFyYW1ldGVyLlxuICogVGhlIGZ1bmN0aW9uIGlzIGV4cGVjdGVkIHRvIGVpdGhlciByZXR1cm4gYSBmYWxzeSB2YWx1ZSwgd2hpY2ggbWVhbnMgdGhlIGFwcCBtdXN0IG5vdCBiZVxuICogY2FjaGVkIGFuZCBhIGZyZXNoIGNvcHkgb2YgaXQgaXMgZG93bmxvYWRlZCBlYWNoIHRpbWUuIElmIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBhbiBvYmplY3RcbiAqIGNvbnRhaW5pbmcgYGFwcFBhdGhgIHByb3BlcnR5IHRoZW4gdGhlIGludGVncml0eSBvZiBpdCB3aWxsIGJlIHZlcmlmaWVkIGFuZCBzdG9yZWQgaW50b1xuICogdGhlIGNhY2hlLlxuICogQHByb3BlcnR5IHtzdHJpbmdbXX0gc3VwcG9ydGVkRXh0ZW5zaW9ucyBMaXN0IG9mIHN1cHBvcnRlZCBhcHBsaWNhdGlvbiBleHRlbnNpb25zIChcbiAqIGluY2x1ZGluZyBzdGFydGluZyBkb3RzKS4gVGhpcyBwcm9wZXJ0eSBpcyBtYW5kYXRvcnkgYW5kIG11c3Qgbm90IGJlIGVtcHR5LlxuICovXG5cbi8qKlxuICogUHJlcGFyZXMgYW4gYXBwIHRvIGJlIHVzZWQgaW4gYW4gYXV0b21hdGVkIHRlc3QuIFRoZSBhcHAgZ2V0cyBjYWNoZWQgYXV0b21hdGljYWxseVxuICogaWYgaXQgaXMgYW4gYXJjaGl2ZSBvciBpZiBpdCBpcyBkb3dubG9hZGVkIGZyb20gYW4gVVJMLlxuICogSWYgdGhlIGRvd25sb2FkZWQgYXBwIGhhcyBgLnppcGAgZXh0ZW5zaW9uLCB0aGlzIG1ldGhvZCB3aWxsIHVuemlwIGl0LlxuICogVGhlIHVuemlwIGRvZXMgbm90IHdvcmsgd2hlbiBgb25Qb3N0UHJvY2Vzc2AgaXMgcHJvdmlkZWQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFwcCBFaXRoZXIgYSBmdWxsIHBhdGggdG8gdGhlIGFwcCBvciBhIHJlbW90ZSBVUkxcbiAqIEBwYXJhbSB7c3RyaW5nfHN0cmluZ1tdfENvbmZpZ3VyZUFwcE9wdGlvbnN9IG9wdGlvbnNcbiAqIEByZXR1cm5zIFRoZSBmdWxsIHBhdGggdG8gdGhlIHJlc3VsdGluZyBhcHBsaWNhdGlvbiBidW5kbGVcbiAqL1xuYXN5bmMgZnVuY3Rpb24gY29uZmlndXJlQXBwIChhcHAsIG9wdGlvbnMgPSB7fSkge1xuICBpZiAoIV8uaXNTdHJpbmcoYXBwKSkge1xuICAgIC8vIGltbWVkaWF0ZWx5IHNob3J0Y2lyY3VpdCBpZiBub3QgZ2l2ZW4gYW4gYXBwXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbGV0IHN1cHBvcnRlZEFwcEV4dGVuc2lvbnM7XG4gIGNvbnN0IHtcbiAgICBvblBvc3RQcm9jZXNzLFxuICB9ID0gXy5pc1BsYWluT2JqZWN0KG9wdGlvbnMpID8gb3B0aW9ucyA6IHt9O1xuICBpZiAoXy5pc1N0cmluZyhvcHRpb25zKSkge1xuICAgIHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMgPSBbb3B0aW9uc107XG4gIH0gZWxzZSBpZiAoXy5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucyA9IG9wdGlvbnM7XG4gIH0gZWxzZSBpZiAoXy5pc1BsYWluT2JqZWN0KG9wdGlvbnMpKSB7XG4gICAgc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucyA9IG9wdGlvbnMuc3VwcG9ydGVkRXh0ZW5zaW9ucztcbiAgfVxuICBpZiAoXy5pc0VtcHR5KHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBPbmUgb3IgbW9yZSBzdXBwb3J0ZWQgYXBwIGV4dGVuc2lvbnMgbXVzdCBiZSBwcm92aWRlZGApO1xuICB9XG5cbiAgbGV0IG5ld0FwcCA9IGFwcDtcbiAgbGV0IHNob3VsZFVuemlwQXBwID0gZmFsc2U7XG4gIGxldCBwYWNrYWdlSGFzaCA9IG51bGw7XG4gIGxldCBoZWFkZXJzID0gbnVsbDtcbiAgY29uc3QgcmVtb3RlQXBwUHJvcHMgPSB7XG4gICAgbGFzdE1vZGlmaWVkOiBudWxsLFxuICAgIGltbXV0YWJsZTogZmFsc2UsXG4gICAgbWF4QWdlOiBudWxsLFxuICB9O1xuICBjb25zdCB7cHJvdG9jb2wsIHBhdGhuYW1lfSA9IHVybC5wYXJzZShuZXdBcHApO1xuICBjb25zdCBpc1VybCA9IFsnaHR0cDonLCAnaHR0cHM6J10uaW5jbHVkZXMocHJvdG9jb2wpO1xuXG4gIGNvbnN0IGNhY2hlZEFwcEluZm8gPSBBUFBMSUNBVElPTlNfQ0FDSEUuZ2V0KGFwcCk7XG5cbiAgcmV0dXJuIGF3YWl0IEFQUExJQ0FUSU9OU19DQUNIRV9HVUFSRC5hY3F1aXJlKGFwcCwgYXN5bmMgKCkgPT4ge1xuICAgIGlmIChpc1VybCkge1xuICAgICAgLy8gVXNlIHRoZSBhcHAgZnJvbSByZW1vdGUgVVJMXG4gICAgICBsb2dnZXIuaW5mbyhgVXNpbmcgZG93bmxvYWRhYmxlIGFwcCAnJHtuZXdBcHB9J2ApO1xuICAgICAgaGVhZGVycyA9IGF3YWl0IHJldHJpZXZlSGVhZGVycyhuZXdBcHApO1xuICAgICAgaWYgKCFfLmlzRW1wdHkoaGVhZGVycykpIHtcbiAgICAgICAgaWYgKGhlYWRlcnNbJ2xhc3QtbW9kaWZpZWQnXSkge1xuICAgICAgICAgIHJlbW90ZUFwcFByb3BzLmxhc3RNb2RpZmllZCA9IG5ldyBEYXRlKGhlYWRlcnNbJ2xhc3QtbW9kaWZpZWQnXSk7XG4gICAgICAgIH1cbiAgICAgICAgbG9nZ2VyLmRlYnVnKGBMYXN0LU1vZGlmaWVkOiAke2hlYWRlcnNbJ2xhc3QtbW9kaWZpZWQnXX1gKTtcbiAgICAgICAgaWYgKGhlYWRlcnNbJ2NhY2hlLWNvbnRyb2wnXSkge1xuICAgICAgICAgIHJlbW90ZUFwcFByb3BzLmltbXV0YWJsZSA9IC9cXGJpbW11dGFibGVcXGIvaS50ZXN0KGhlYWRlcnNbJ2NhY2hlLWNvbnRyb2wnXSk7XG4gICAgICAgICAgY29uc3QgbWF4QWdlTWF0Y2ggPSAvXFxibWF4LWFnZT0oXFxkKylcXGIvaS5leGVjKGhlYWRlcnNbJ2NhY2hlLWNvbnRyb2wnXSk7XG4gICAgICAgICAgaWYgKG1heEFnZU1hdGNoKSB7XG4gICAgICAgICAgICByZW1vdGVBcHBQcm9wcy5tYXhBZ2UgPSBwYXJzZUludChtYXhBZ2VNYXRjaFsxXSwgMTApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsb2dnZXIuZGVidWcoYENhY2hlLUNvbnRyb2w6ICR7aGVhZGVyc1snY2FjaGUtY29udHJvbCddfWApO1xuICAgICAgfVxuICAgICAgY29uc3QgY2FjaGVkUGF0aCA9IGdldENhY2hlZEFwcGxpY2F0aW9uUGF0aChhcHAsIHJlbW90ZUFwcFByb3BzLCBjYWNoZWRBcHBJbmZvKTtcbiAgICAgIGlmIChjYWNoZWRQYXRoKSB7XG4gICAgICAgIGlmIChhd2FpdCBpc0FwcEludGVncml0eU9rKGNhY2hlZFBhdGgsIGNhY2hlZEFwcEluZm8/LmludGVncml0eSkpIHtcbiAgICAgICAgICBsb2dnZXIuaW5mbyhgUmV1c2luZyBwcmV2aW91c2x5IGRvd25sb2FkZWQgYXBwbGljYXRpb24gYXQgJyR7Y2FjaGVkUGF0aH0nYCk7XG4gICAgICAgICAgcmV0dXJuIHZlcmlmeUFwcEV4dGVuc2lvbihjYWNoZWRQYXRoLCBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBsb2dnZXIuaW5mbyhgVGhlIGFwcGxpY2F0aW9uIGF0ICcke2NhY2hlZFBhdGh9JyBkb2VzIG5vdCBleGlzdCBhbnltb3JlIGAgK1xuICAgICAgICAgIGBvciBpdHMgaW50ZWdyaXR5IGhhcyBiZWVuIGRhbWFnZWQuIERlbGV0aW5nIGl0IGZyb20gdGhlIGludGVybmFsIGNhY2hlYCk7XG4gICAgICAgIEFQUExJQ0FUSU9OU19DQUNIRS5kZWwoYXBwKTtcbiAgICAgIH1cblxuICAgICAgbGV0IGZpbGVOYW1lID0gbnVsbDtcbiAgICAgIGNvbnN0IGJhc2VuYW1lID0gZnMuc2FuaXRpemVOYW1lKHBhdGguYmFzZW5hbWUoZGVjb2RlVVJJQ29tcG9uZW50KHBhdGhuYW1lKSksIHtcbiAgICAgICAgcmVwbGFjZW1lbnQ6IFNBTklUSVpFX1JFUExBQ0VNRU5UXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGV4dG5hbWUgPSBwYXRoLmV4dG5hbWUoYmFzZW5hbWUpO1xuICAgICAgLy8gdG8gZGV0ZXJtaW5lIGlmIHdlIG5lZWQgdG8gdW56aXAgdGhlIGFwcCwgd2UgaGF2ZSBhIG51bWJlciBvZiBwbGFjZXNcbiAgICAgIC8vIHRvIGxvb2s6IGNvbnRlbnQgdHlwZSwgY29udGVudCBkaXNwb3NpdGlvbiwgb3IgdGhlIGZpbGUgZXh0ZW5zaW9uXG4gICAgICBpZiAoWklQX0VYVFMuaW5jbHVkZXMoZXh0bmFtZSkpIHtcbiAgICAgICAgZmlsZU5hbWUgPSBiYXNlbmFtZTtcbiAgICAgICAgc2hvdWxkVW56aXBBcHAgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKGhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddKSB7XG4gICAgICAgIGNvbnN0IGN0ID0gaGVhZGVyc1snY29udGVudC10eXBlJ107XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhgQ29udGVudC1UeXBlOiAke2N0fWApO1xuICAgICAgICAvLyB0aGUgZmlsZXR5cGUgbWF5IG5vdCBiZSBvYnZpb3VzIGZvciBjZXJ0YWluIHVybHMsIHNvIGNoZWNrIHRoZSBtaW1lIHR5cGUgdG9vXG4gICAgICAgIGlmIChaSVBfTUlNRV9UWVBFUy5zb21lKChtaW1lVHlwZSkgPT4gbmV3IFJlZ0V4cChgXFxcXGIke18uZXNjYXBlUmVnRXhwKG1pbWVUeXBlKX1cXFxcYmApLnRlc3QoY3QpKSkge1xuICAgICAgICAgIGlmICghZmlsZU5hbWUpIHtcbiAgICAgICAgICAgIGZpbGVOYW1lID0gYCR7REVGQVVMVF9CQVNFTkFNRX0uemlwYDtcbiAgICAgICAgICB9XG4gICAgICAgICAgc2hvdWxkVW56aXBBcHAgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoaGVhZGVyc1snY29udGVudC1kaXNwb3NpdGlvbiddICYmIC9eYXR0YWNobWVudC9pLnRlc3QoaGVhZGVyc1snY29udGVudC1kaXNwb3NpdGlvbiddKSkge1xuICAgICAgICBsb2dnZXIuZGVidWcoYENvbnRlbnQtRGlzcG9zaXRpb246ICR7aGVhZGVyc1snY29udGVudC1kaXNwb3NpdGlvbiddfWApO1xuICAgICAgICBjb25zdCBtYXRjaCA9IC9maWxlbmFtZT1cIihbXlwiXSspL2kuZXhlYyhoZWFkZXJzWydjb250ZW50LWRpc3Bvc2l0aW9uJ10pO1xuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICBmaWxlTmFtZSA9IGZzLnNhbml0aXplTmFtZShtYXRjaFsxXSwge1xuICAgICAgICAgICAgcmVwbGFjZW1lbnQ6IFNBTklUSVpFX1JFUExBQ0VNRU5UXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgc2hvdWxkVW56aXBBcHAgPSBzaG91bGRVbnppcEFwcCB8fCBaSVBfRVhUUy5pbmNsdWRlcyhwYXRoLmV4dG5hbWUoZmlsZU5hbWUpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKCFmaWxlTmFtZSkge1xuICAgICAgICAvLyBhc3NpZ24gdGhlIGRlZmF1bHQgZmlsZSBuYW1lIGFuZCB0aGUgZXh0ZW5zaW9uIGlmIG5vbmUgaGFzIGJlZW4gZGV0ZWN0ZWRcbiAgICAgICAgY29uc3QgcmVzdWx0aW5nTmFtZSA9IGJhc2VuYW1lXG4gICAgICAgICAgPyBiYXNlbmFtZS5zdWJzdHJpbmcoMCwgYmFzZW5hbWUubGVuZ3RoIC0gZXh0bmFtZS5sZW5ndGgpXG4gICAgICAgICAgOiBERUZBVUxUX0JBU0VOQU1FO1xuICAgICAgICBsZXQgcmVzdWx0aW5nRXh0ID0gZXh0bmFtZTtcbiAgICAgICAgaWYgKCFzdXBwb3J0ZWRBcHBFeHRlbnNpb25zLmluY2x1ZGVzKHJlc3VsdGluZ0V4dCkpIHtcbiAgICAgICAgICBsb2dnZXIuaW5mbyhgVGhlIGN1cnJlbnQgZmlsZSBleHRlbnNpb24gJyR7cmVzdWx0aW5nRXh0fScgaXMgbm90IHN1cHBvcnRlZC4gYCArXG4gICAgICAgICAgICBgRGVmYXVsdGluZyB0byAnJHtfLmZpcnN0KHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMpfSdgKTtcbiAgICAgICAgICByZXN1bHRpbmdFeHQgPSBfLmZpcnN0KHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMpO1xuICAgICAgICB9XG4gICAgICAgIGZpbGVOYW1lID0gYCR7cmVzdWx0aW5nTmFtZX0ke3Jlc3VsdGluZ0V4dH1gO1xuICAgICAgfVxuICAgICAgY29uc3QgdGFyZ2V0UGF0aCA9IGF3YWl0IHRlbXBEaXIucGF0aCh7XG4gICAgICAgIHByZWZpeDogZmlsZU5hbWUsXG4gICAgICAgIHN1ZmZpeDogJycsXG4gICAgICB9KTtcbiAgICAgIG5ld0FwcCA9IGF3YWl0IGRvd25sb2FkQXBwKG5ld0FwcCwgdGFyZ2V0UGF0aCk7XG4gICAgfSBlbHNlIGlmIChhd2FpdCBmcy5leGlzdHMobmV3QXBwKSkge1xuICAgICAgLy8gVXNlIHRoZSBsb2NhbCBhcHBcbiAgICAgIGxvZ2dlci5pbmZvKGBVc2luZyBsb2NhbCBhcHAgJyR7bmV3QXBwfSdgKTtcbiAgICAgIHNob3VsZFVuemlwQXBwID0gWklQX0VYVFMuaW5jbHVkZXMocGF0aC5leHRuYW1lKG5ld0FwcCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgZXJyb3JNZXNzYWdlID0gYFRoZSBhcHBsaWNhdGlvbiBhdCAnJHtuZXdBcHB9JyBkb2VzIG5vdCBleGlzdCBvciBpcyBub3QgYWNjZXNzaWJsZWA7XG4gICAgICAvLyBwcm90b2NvbCB2YWx1ZSBmb3IgJ0M6XFxcXHRlbXAnIGlzICdjOicsIHNvIHdlIGNoZWNrIHRoZSBsZW5ndGggYXMgd2VsbFxuICAgICAgaWYgKF8uaXNTdHJpbmcocHJvdG9jb2wpICYmIHByb3RvY29sLmxlbmd0aCA+IDIpIHtcbiAgICAgICAgZXJyb3JNZXNzYWdlID0gYFRoZSBwcm90b2NvbCAnJHtwcm90b2NvbH0nIHVzZWQgaW4gJyR7bmV3QXBwfScgaXMgbm90IHN1cHBvcnRlZC4gYCArXG4gICAgICAgICAgYE9ubHkgaHR0cDogYW5kIGh0dHBzOiBwcm90b2NvbHMgYXJlIHN1cHBvcnRlZGA7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JNZXNzYWdlKTtcbiAgICB9XG5cbiAgICBjb25zdCBpc1BhY2thZ2VBRmlsZSA9IChhd2FpdCBmcy5zdGF0KG5ld0FwcCkpLmlzRmlsZSgpO1xuICAgIGlmIChpc1BhY2thZ2VBRmlsZSkge1xuICAgICAgcGFja2FnZUhhc2ggPSBhd2FpdCBjYWxjdWxhdGVGaWxlSW50ZWdyaXR5KG5ld0FwcCk7XG4gICAgfVxuXG4gICAgaWYgKGlzUGFja2FnZUFGaWxlICYmIHNob3VsZFVuemlwQXBwICYmICFfLmlzRnVuY3Rpb24ob25Qb3N0UHJvY2VzcykpIHtcbiAgICAgIGNvbnN0IGFyY2hpdmVQYXRoID0gbmV3QXBwO1xuICAgICAgaWYgKHBhY2thZ2VIYXNoID09PSBjYWNoZWRBcHBJbmZvPy5wYWNrYWdlSGFzaCkge1xuICAgICAgICBjb25zdCB7ZnVsbFBhdGh9ID0gY2FjaGVkQXBwSW5mbztcbiAgICAgICAgaWYgKGF3YWl0IGlzQXBwSW50ZWdyaXR5T2soZnVsbFBhdGgsIGNhY2hlZEFwcEluZm8/LmludGVncml0eSkpIHtcbiAgICAgICAgICBpZiAoYXJjaGl2ZVBhdGggIT09IGFwcCkge1xuICAgICAgICAgICAgYXdhaXQgZnMucmltcmFmKGFyY2hpdmVQYXRoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbG9nZ2VyLmluZm8oYFdpbGwgcmV1c2UgcHJldmlvdXNseSBjYWNoZWQgYXBwbGljYXRpb24gYXQgJyR7ZnVsbFBhdGh9J2ApO1xuICAgICAgICAgIHJldHVybiB2ZXJpZnlBcHBFeHRlbnNpb24oZnVsbFBhdGgsIHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMpO1xuICAgICAgICB9XG4gICAgICAgIGxvZ2dlci5pbmZvKGBUaGUgYXBwbGljYXRpb24gYXQgJyR7ZnVsbFBhdGh9JyBkb2VzIG5vdCBleGlzdCBhbnltb3JlIGAgK1xuICAgICAgICAgIGBvciBpdHMgaW50ZWdyaXR5IGhhcyBiZWVuIGRhbWFnZWQuIERlbGV0aW5nIGl0IGZyb20gdGhlIGNhY2hlYCk7XG4gICAgICAgIEFQUExJQ0FUSU9OU19DQUNIRS5kZWwoYXBwKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHRtcFJvb3QgPSBhd2FpdCB0ZW1wRGlyLm9wZW5EaXIoKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIG5ld0FwcCA9IGF3YWl0IHVuemlwQXBwKGFyY2hpdmVQYXRoLCB0bXBSb290LCBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmIChuZXdBcHAgIT09IGFyY2hpdmVQYXRoICYmIGFyY2hpdmVQYXRoICE9PSBhcHApIHtcbiAgICAgICAgICBhd2FpdCBmcy5yaW1yYWYoYXJjaGl2ZVBhdGgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBsb2dnZXIuaW5mbyhgVW56aXBwZWQgbG9jYWwgYXBwIHRvICcke25ld0FwcH0nYCk7XG4gICAgfSBlbHNlIGlmICghcGF0aC5pc0Fic29sdXRlKG5ld0FwcCkpIHtcbiAgICAgIG5ld0FwcCA9IHBhdGgucmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBuZXdBcHApO1xuICAgICAgbG9nZ2VyLndhcm4oYFRoZSBjdXJyZW50IGFwcGxpY2F0aW9uIHBhdGggJyR7YXBwfScgaXMgbm90IGFic29sdXRlIGAgK1xuICAgICAgICBgYW5kIGhhcyBiZWVuIHJld3JpdHRlbiB0byAnJHtuZXdBcHB9Jy4gQ29uc2lkZXIgdXNpbmcgYWJzb2x1dGUgcGF0aHMgcmF0aGVyIHRoYW4gcmVsYXRpdmVgKTtcbiAgICAgIGFwcCA9IG5ld0FwcDtcbiAgICB9XG5cbiAgICBjb25zdCBzdG9yZUFwcEluQ2FjaGUgPSBhc3luYyAoYXBwUGF0aFRvQ2FjaGUpID0+IHtcbiAgICAgIGNvbnN0IGNhY2hlZEZ1bGxQYXRoID0gY2FjaGVkQXBwSW5mbz8uZnVsbFBhdGg7XG4gICAgICBpZiAoY2FjaGVkRnVsbFBhdGggJiYgY2FjaGVkRnVsbFBhdGggIT09IGFwcFBhdGhUb0NhY2hlKSB7XG4gICAgICAgIGF3YWl0IGZzLnJpbXJhZihjYWNoZWRGdWxsUGF0aCk7XG4gICAgICB9XG4gICAgICBjb25zdCBpbnRlZ3JpdHkgPSB7fTtcbiAgICAgIGlmICgoYXdhaXQgZnMuc3RhdChhcHBQYXRoVG9DYWNoZSkpLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgaW50ZWdyaXR5LmZvbGRlciA9IGF3YWl0IGNhbGN1bGF0ZUZvbGRlckludGVncml0eShhcHBQYXRoVG9DYWNoZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbnRlZ3JpdHkuZmlsZSA9IGF3YWl0IGNhbGN1bGF0ZUZpbGVJbnRlZ3JpdHkoYXBwUGF0aFRvQ2FjaGUpO1xuICAgICAgfVxuICAgICAgQVBQTElDQVRJT05TX0NBQ0hFLnNldChhcHAsIHtcbiAgICAgICAgLi4ucmVtb3RlQXBwUHJvcHMsXG4gICAgICAgIHRpbWVzdGFtcDogRGF0ZS5ub3coKSxcbiAgICAgICAgcGFja2FnZUhhc2gsXG4gICAgICAgIGludGVncml0eSxcbiAgICAgICAgZnVsbFBhdGg6IGFwcFBhdGhUb0NhY2hlLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gYXBwUGF0aFRvQ2FjaGU7XG4gICAgfTtcblxuICAgIGlmIChfLmlzRnVuY3Rpb24ob25Qb3N0UHJvY2VzcykpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG9uUG9zdFByb2Nlc3Moe1xuICAgICAgICBjYWNoZWRBcHBJbmZvOiBfLmNsb25lKGNhY2hlZEFwcEluZm8pLFxuICAgICAgICBpc1VybCxcbiAgICAgICAgaGVhZGVyczogXy5jbG9uZShoZWFkZXJzKSxcbiAgICAgICAgYXBwUGF0aDogbmV3QXBwLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gKCFyZXN1bHQ/LmFwcFBhdGggfHwgYXBwID09PSByZXN1bHQ/LmFwcFBhdGggfHwgIWF3YWl0IGZzLmV4aXN0cyhyZXN1bHQ/LmFwcFBhdGgpKVxuICAgICAgICA/IG5ld0FwcFxuICAgICAgICA6IGF3YWl0IHN0b3JlQXBwSW5DYWNoZShyZXN1bHQuYXBwUGF0aCk7XG4gICAgfVxuXG4gICAgdmVyaWZ5QXBwRXh0ZW5zaW9uKG5ld0FwcCwgc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucyk7XG4gICAgcmV0dXJuIChhcHAgIT09IG5ld0FwcCAmJiAocGFja2FnZUhhc2ggfHwgXy52YWx1ZXMocmVtb3RlQXBwUHJvcHMpLnNvbWUoQm9vbGVhbikpKVxuICAgICAgPyBhd2FpdCBzdG9yZUFwcEluQ2FjaGUobmV3QXBwKVxuICAgICAgOiBuZXdBcHA7XG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBkb3dubG9hZEFwcCAoYXBwLCB0YXJnZXRQYXRoKSB7XG4gIGNvbnN0IHtocmVmfSA9IHVybC5wYXJzZShhcHApO1xuICB0cnkge1xuICAgIGF3YWl0IG5ldC5kb3dubG9hZEZpbGUoaHJlZiwgdGFyZ2V0UGF0aCwge1xuICAgICAgdGltZW91dDogQVBQX0RPV05MT0FEX1RJTUVPVVRfTVMsXG4gICAgfSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGRvd25sb2FkIHRoZSBhcHA6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIH1cbiAgcmV0dXJuIHRhcmdldFBhdGg7XG59XG5cbi8qKlxuICogRXh0cmFjdHMgdGhlIGJ1bmRsZSBmcm9tIGFuIGFyY2hpdmUgaW50byB0aGUgZ2l2ZW4gZm9sZGVyXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHppcFBhdGggRnVsbCBwYXRoIHRvIHRoZSBhcmNoaXZlIGNvbnRhaW5pbmcgdGhlIGJ1bmRsZVxuICogQHBhcmFtIHtzdHJpbmd9IGRzdFJvb3QgRnVsbCBwYXRoIHRvIHRoZSBmb2xkZXIgd2hlcmUgdGhlIGV4dHJhY3RlZCBidW5kbGVcbiAqIHNob3VsZCBiZSBwbGFjZWRcbiAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPnxzdHJpbmd9IHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMgVGhlIGxpc3Qgb2YgZXh0ZW5zaW9uc1xuICogdGhlIHRhcmdldCBhcHBsaWNhdGlvbiBidW5kbGUgc3VwcG9ydHMsIGZvciBleGFtcGxlIFsnLmFwaycsICcuYXBrcyddIGZvclxuICogQW5kcm9pZCBwYWNrYWdlc1xuICogQHJldHVybnMge3N0cmluZ30gRnVsbCBwYXRoIHRvIHRoZSBidW5kbGUgaW4gdGhlIGRlc3RpbmF0aW9uIGZvbGRlclxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBnaXZlbiBhcmNoaXZlIGlzIGludmFsaWQgb3Igbm8gYXBwbGljYXRpb24gYnVuZGxlc1xuICogaGF2ZSBiZWVuIGZvdW5kIGluc2lkZVxuICovXG5hc3luYyBmdW5jdGlvbiB1bnppcEFwcCAoemlwUGF0aCwgZHN0Um9vdCwgc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucykge1xuICBhd2FpdCB6aXAuYXNzZXJ0VmFsaWRaaXAoemlwUGF0aCk7XG5cbiAgaWYgKCFfLmlzQXJyYXkoc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucykpIHtcbiAgICBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zID0gW3N1cHBvcnRlZEFwcEV4dGVuc2lvbnNdO1xuICB9XG5cbiAgY29uc3QgdG1wUm9vdCA9IGF3YWl0IHRlbXBEaXIub3BlbkRpcigpO1xuICB0cnkge1xuICAgIGxvZ2dlci5kZWJ1ZyhgVW56aXBwaW5nICcke3ppcFBhdGh9J2ApO1xuICAgIGNvbnN0IHRpbWVyID0gbmV3IHRpbWluZy5UaW1lcigpLnN0YXJ0KCk7XG4gICAgY29uc3QgdXNlU3lzdGVtVW56aXBFbnYgPSBwcm9jZXNzLmVudi5BUFBJVU1fUFJFRkVSX1NZU1RFTV9VTlpJUDtcbiAgICBjb25zdCB1c2VTeXN0ZW1VbnppcCA9IF8uaXNFbXB0eSh1c2VTeXN0ZW1VbnppcEVudilcbiAgICAgIHx8ICFbJzAnLCAnZmFsc2UnXS5pbmNsdWRlcyhfLnRvTG93ZXIodXNlU3lzdGVtVW56aXBFbnYpKTtcbiAgICAvKipcbiAgICAgKiBBdHRlbXB0IHRvIHVzZSB1c2UgdGhlIHN5c3RlbSBgdW56aXBgIChlLmcuLCBgL3Vzci9iaW4vdW56aXBgKSBkdWVcbiAgICAgKiB0byB0aGUgc2lnbmlmaWNhbnQgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQgaXQgcHJvdmlkZXMgb3ZlciB0aGUgbmF0aXZlXG4gICAgICogSlMgXCJ1bnppcFwiIGltcGxlbWVudGF0aW9uLlxuICAgICAqIEB0eXBlIHtpbXBvcnQoJ0BhcHBpdW0vc3VwcG9ydC9saWIvemlwJykuRXh0cmFjdEFsbE9wdGlvbnN9XG4gICAgICovXG4gICAgY29uc3QgZXh0cmFjdGlvbk9wdHMgPSB7dXNlU3lzdGVtVW56aXB9O1xuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hcHBpdW0vYXBwaXVtL2lzc3Vlcy8xNDEwMFxuICAgIGlmIChwYXRoLmV4dG5hbWUoemlwUGF0aCkgPT09IElQQV9FWFQpIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhgRW5mb3JjaW5nIFVURi04IGVuY29kaW5nIG9uIHRoZSBleHRyYWN0ZWQgZmlsZSBuYW1lcyBmb3IgJyR7cGF0aC5iYXNlbmFtZSh6aXBQYXRoKX0nYCk7XG4gICAgICBleHRyYWN0aW9uT3B0cy5maWxlTmFtZXNFbmNvZGluZyA9ICd1dGY4JztcbiAgICB9XG4gICAgYXdhaXQgemlwLmV4dHJhY3RBbGxUbyh6aXBQYXRoLCB0bXBSb290LCBleHRyYWN0aW9uT3B0cyk7XG4gICAgY29uc3QgZ2xvYlBhdHRlcm4gPSBgKiovKi4rKCR7c3VwcG9ydGVkQXBwRXh0ZW5zaW9ucy5tYXAoKGV4dCkgPT4gZXh0LnJlcGxhY2UoL15cXC4vLCAnJykpLmpvaW4oJ3wnKX0pYDtcbiAgICBjb25zdCBzb3J0ZWRCdW5kbGVJdGVtcyA9IChhd2FpdCBmcy5nbG9iKGdsb2JQYXR0ZXJuLCB7XG4gICAgICBjd2Q6IHRtcFJvb3QsXG4gICAgICBzdHJpY3Q6IGZhbHNlLFxuICAgIC8vIEdldCB0aGUgdG9wIGxldmVsIG1hdGNoXG4gICAgfSkpLnNvcnQoKGEsIGIpID0+IGEuc3BsaXQocGF0aC5zZXApLmxlbmd0aCAtIGIuc3BsaXQocGF0aC5zZXApLmxlbmd0aCk7XG4gICAgaWYgKF8uaXNFbXB0eShzb3J0ZWRCdW5kbGVJdGVtcykpIHtcbiAgICAgIGxvZ2dlci5lcnJvckFuZFRocm93KGBBcHAgdW56aXBwZWQgT0ssIGJ1dCB3ZSBjb3VsZCBub3QgZmluZCBhbnkgJyR7c3VwcG9ydGVkQXBwRXh0ZW5zaW9uc30nIGAgK1xuICAgICAgICB1dGlsLnBsdXJhbGl6ZSgnYnVuZGxlJywgc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucy5sZW5ndGgsIGZhbHNlKSArXG4gICAgICAgIGAgaW4gaXQuIE1ha2Ugc3VyZSB5b3VyIGFyY2hpdmUgY29udGFpbnMgYXQgbGVhc3Qgb25lIHBhY2thZ2UgaGF2aW5nIGAgK1xuICAgICAgICBgJyR7c3VwcG9ydGVkQXBwRXh0ZW5zaW9uc30nICR7dXRpbC5wbHVyYWxpemUoJ2V4dGVuc2lvbicsIHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMubGVuZ3RoLCBmYWxzZSl9YCk7XG4gICAgfVxuICAgIGxvZ2dlci5kZWJ1ZyhgRXh0cmFjdGVkICR7dXRpbC5wbHVyYWxpemUoJ2J1bmRsZSBpdGVtJywgc29ydGVkQnVuZGxlSXRlbXMubGVuZ3RoLCB0cnVlKX0gYCArXG4gICAgICBgZnJvbSAnJHt6aXBQYXRofScgaW4gJHtNYXRoLnJvdW5kKHRpbWVyLmdldER1cmF0aW9uKCkuYXNNaWxsaVNlY29uZHMpfW1zOiAke3NvcnRlZEJ1bmRsZUl0ZW1zfWApO1xuICAgIGNvbnN0IG1hdGNoZWRCdW5kbGUgPSBfLmZpcnN0KHNvcnRlZEJ1bmRsZUl0ZW1zKTtcbiAgICBsb2dnZXIuaW5mbyhgQXNzdW1pbmcgJyR7bWF0Y2hlZEJ1bmRsZX0nIGlzIHRoZSBjb3JyZWN0IGJ1bmRsZWApO1xuICAgIGNvbnN0IGRzdFBhdGggPSBwYXRoLnJlc29sdmUoZHN0Um9vdCwgcGF0aC5iYXNlbmFtZShtYXRjaGVkQnVuZGxlKSk7XG4gICAgYXdhaXQgZnMubXYocGF0aC5yZXNvbHZlKHRtcFJvb3QsIG1hdGNoZWRCdW5kbGUpLCBkc3RQYXRoLCB7bWtkaXJwOiB0cnVlfSk7XG4gICAgcmV0dXJuIGRzdFBhdGg7XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgZnMucmltcmFmKHRtcFJvb3QpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzUGFja2FnZU9yQnVuZGxlIChhcHApIHtcbiAgcmV0dXJuICgvXihbYS16QS1aMC05XFwtX10rXFwuW2EtekEtWjAtOVxcLV9dKykrJC8pLnRlc3QoYXBwKTtcbn1cblxuLyoqXG4gKiBGaW5kcyBhbGwgaW5zdGFuY2VzICdmaXJzdEtleScgYW5kIGNyZWF0ZSBhIGR1cGxpY2F0ZSB3aXRoIHRoZSBrZXkgJ3NlY29uZEtleScsXG4gKiBEbyB0aGUgc2FtZSB0aGluZyBpbiByZXZlcnNlLiBJZiB3ZSBmaW5kICdzZWNvbmRLZXknLCBjcmVhdGUgYSBkdXBsaWNhdGUgd2l0aCB0aGUga2V5ICdmaXJzdEtleScuXG4gKlxuICogVGhpcyB3aWxsIGNhdXNlIGtleXMgdG8gYmUgb3ZlcndyaXR0ZW4gaWYgdGhlIG9iamVjdCBjb250YWlucyAnZmlyc3RLZXknIGFuZCAnc2Vjb25kS2V5Jy5cblxuICogQHBhcmFtIHsqfSBpbnB1dCBBbnkgdHlwZSBvZiBpbnB1dFxuICogQHBhcmFtIHtTdHJpbmd9IGZpcnN0S2V5IFRoZSBmaXJzdCBrZXkgdG8gZHVwbGljYXRlXG4gKiBAcGFyYW0ge1N0cmluZ30gc2Vjb25kS2V5IFRoZSBzZWNvbmQga2V5IHRvIGR1cGxpY2F0ZVxuICovXG5mdW5jdGlvbiBkdXBsaWNhdGVLZXlzIChpbnB1dCwgZmlyc3RLZXksIHNlY29uZEtleSkge1xuICAvLyBJZiBhcnJheSBwcm92aWRlZCwgcmVjdXJzaXZlbHkgY2FsbCBvbiBhbGwgZWxlbWVudHNcbiAgaWYgKF8uaXNBcnJheShpbnB1dCkpIHtcbiAgICByZXR1cm4gaW5wdXQubWFwKChpdGVtKSA9PiBkdXBsaWNhdGVLZXlzKGl0ZW0sIGZpcnN0S2V5LCBzZWNvbmRLZXkpKTtcbiAgfVxuXG4gIC8vIElmIG9iamVjdCwgY3JlYXRlIGR1cGxpY2F0ZXMgZm9yIGtleXMgYW5kIHRoZW4gcmVjdXJzaXZlbHkgY2FsbCBvbiB2YWx1ZXNcbiAgaWYgKF8uaXNQbGFpbk9iamVjdChpbnB1dCkpIHtcbiAgICBjb25zdCByZXN1bHRPYmogPSB7fTtcbiAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgXy50b1BhaXJzKGlucHV0KSkge1xuICAgICAgY29uc3QgcmVjdXJzaXZlbHlDYWxsZWRWYWx1ZSA9IGR1cGxpY2F0ZUtleXModmFsdWUsIGZpcnN0S2V5LCBzZWNvbmRLZXkpO1xuICAgICAgaWYgKGtleSA9PT0gZmlyc3RLZXkpIHtcbiAgICAgICAgcmVzdWx0T2JqW3NlY29uZEtleV0gPSByZWN1cnNpdmVseUNhbGxlZFZhbHVlO1xuICAgICAgfSBlbHNlIGlmIChrZXkgPT09IHNlY29uZEtleSkge1xuICAgICAgICByZXN1bHRPYmpbZmlyc3RLZXldID0gcmVjdXJzaXZlbHlDYWxsZWRWYWx1ZTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdE9ialtrZXldID0gcmVjdXJzaXZlbHlDYWxsZWRWYWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdE9iajtcbiAgfVxuXG4gIC8vIEJhc2UgY2FzZS4gUmV0dXJuIHByaW1pdGl2ZXMgd2l0aG91dCBkb2luZyBhbnl0aGluZy5cbiAgcmV0dXJuIGlucHV0O1xufVxuXG4vKipcbiAqIFRha2VzIGEgZGVzaXJlZCBjYXBhYmlsaXR5IGFuZCB0cmllcyB0byBKU09OLnBhcnNlIGl0IGFzIGFuIGFycmF5LFxuICogYW5kIGVpdGhlciByZXR1cm5zIHRoZSBwYXJzZWQgYXJyYXkgb3IgYSBzaW5nbGV0b24gYXJyYXkuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd8QXJyYXk8U3RyaW5nPn0gY2FwIEEgZGVzaXJlZCBjYXBhYmlsaXR5XG4gKi9cbmZ1bmN0aW9uIHBhcnNlQ2Fwc0FycmF5IChjYXApIHtcbiAgaWYgKF8uaXNBcnJheShjYXApKSB7XG4gICAgcmV0dXJuIGNhcDtcbiAgfVxuXG4gIGxldCBwYXJzZWRDYXBzO1xuICB0cnkge1xuICAgIHBhcnNlZENhcHMgPSBKU09OLnBhcnNlKGNhcCk7XG4gICAgaWYgKF8uaXNBcnJheShwYXJzZWRDYXBzKSkge1xuICAgICAgcmV0dXJuIHBhcnNlZENhcHM7XG4gICAgfVxuICB9IGNhdGNoIChpZ24pIHtcbiAgICBsb2dnZXIud2FybihgRmFpbGVkIHRvIHBhcnNlIGNhcGFiaWxpdHkgYXMgSlNPTiBhcnJheWApO1xuICB9XG4gIGlmIChfLmlzU3RyaW5nKGNhcCkpIHtcbiAgICByZXR1cm4gW2NhcF07XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBtdXN0IHByb3ZpZGUgYSBzdHJpbmcgb3IgSlNPTiBBcnJheTsgcmVjZWl2ZWQgJHtjYXB9YCk7XG59XG5cbmV4cG9ydCB7XG4gIGNvbmZpZ3VyZUFwcCwgaXNQYWNrYWdlT3JCdW5kbGUsIGR1cGxpY2F0ZUtleXMsIHBhcnNlQ2Fwc0FycmF5XG59O1xuIl19
|
|
@@ -12,7 +12,5 @@ var _support = require("@appium/support");
|
|
|
12
12
|
const log = _support.logger.getLogger('BaseDriver');
|
|
13
13
|
|
|
14
14
|
var _default = log;
|
|
15
|
-
exports.default = _default;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9iYXNlZHJpdmVyL2xvZ2dlci5qcyJdLCJuYW1lcyI6WyJsb2ciLCJsb2dnZXIiLCJnZXRMb2dnZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUVBLE1BQU1BLEdBQUcsR0FBR0MsZ0JBQU9DLFNBQVAsQ0FBaUIsWUFBakIsQ0FBWjs7ZUFDZUYsRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGxvZ2dlciB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5cbmNvbnN0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ0Jhc2VEcml2ZXInKTtcbmV4cG9ydCBkZWZhdWx0IGxvZztcbiJdLCJmaWxlIjoibGliL2Jhc2Vkcml2ZXIvbG9nZ2VyLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
|
|
15
|
+
exports.default = _default;
|
|
16
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9iYXNlZHJpdmVyL2xvZ2dlci5qcyJdLCJuYW1lcyI6WyJsb2ciLCJsb2dnZXIiLCJnZXRMb2dnZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUVBLE1BQU1BLEdBQUcsR0FBR0MsZ0JBQU9DLFNBQVAsQ0FBaUIsWUFBakIsQ0FBWjs7ZUFDZUYsRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGxvZ2dlciB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5cbmNvbnN0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ0Jhc2VEcml2ZXInKTtcbmV4cG9ydCBkZWZhdWx0IGxvZztcbiJdfQ==
|
package/build/lib/constants.js
CHANGED
|
@@ -21,7 +21,5 @@ const PROTOCOLS = {
|
|
|
21
21
|
};
|
|
22
22
|
exports.PROTOCOLS = PROTOCOLS;
|
|
23
23
|
const DEFAULT_BASE_PATH = '';
|
|
24
|
-
exports.DEFAULT_BASE_PATH = DEFAULT_BASE_PATH;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb25zdGFudHMuanMiXSwibmFtZXMiOlsiTUFYX0xPR19CT0RZX0xFTkdUSCIsIk1KU09OV1BfRUxFTUVOVF9LRVkiLCJXM0NfRUxFTUVOVF9LRVkiLCJ1dGlsIiwiVzNDX1dFQl9FTEVNRU5UX0lERU5USUZJRVIiLCJQUk9UT0NPTFMiLCJXM0MiLCJNSlNPTldQIiwiREVGQVVMVF9CQVNFX1BBVEgiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQVFBLE1BQU1BLG1CQUFtQixHQUFHLElBQTVCOztBQUNBLE1BQU1DLG1CQUFtQixHQUFHLFNBQTVCOztBQUNBLE1BQU1DLGVBQWUsR0FBR0MsY0FBS0MsMEJBQTdCOztBQUNBLE1BQU1DLFNBQVMsR0FBRztBQUNoQkMsRUFBQUEsR0FBRyxFQUFFLEtBRFc7QUFFaEJDLEVBQUFBLE9BQU8sRUFBRTtBQUZPLENBQWxCOztBQU1BLE1BQU1DLGlCQUFpQixHQUFHLEVBQTFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5cbi8vIFRoZSBkZWZhdWx0IG1heGltdW0gbGVuZ3RoIG9mIGEgc2luZ2xlIGxvZyByZWNvcmRcbi8vIGNvbnRhaW5pbmcgaHR0cCByZXF1ZXN0L3Jlc3BvbnNlIGJvZHlcbi8vIFRoaXMgdmFsdWUgY291bGQgYmUgZ2xvYmFsbHkgY3VzdG9taXplZCB1c2luZyB0aGUgLS1sb2ctZmlsdGVyc1xuLy8gc2VydmVyIGZlYXR1cmUuIEV4YW1wbGUgcnVsZTpcbi8vIFx0e1wicGF0dGVyblwiOiBcIiguezEsMTUwfSkuKlwiLCBcImZsYWdzXCI6IFwic1wiLCBcInJlcGxhY2VyXCI6IFwiJDFcIn1cbi8vIF4gY3V0cyBhbGwgbG9nIHJlY29yZHMgdG8gbWF4aW11bSAxNTAgY2hhcnNcbmNvbnN0IE1BWF9MT0dfQk9EWV9MRU5HVEggPSAxMDI0O1xuY29uc3QgTUpTT05XUF9FTEVNRU5UX0tFWSA9ICdFTEVNRU5UJztcbmNvbnN0IFczQ19FTEVNRU5UX0tFWSA9IHV0aWwuVzNDX1dFQl9FTEVNRU5UX0lERU5USUZJRVI7XG5jb25zdCBQUk9UT0NPTFMgPSB7XG4gIFczQzogJ1czQycsXG4gIE1KU09OV1A6ICdNSlNPTldQJyxcbn07XG5cbi8vIEJlZm9yZSBBcHBpdW0gMi4wLCB0aGlzIGRlZmF1bHQgdmFsdWUgd2FzICcvd2QvaHViJyBieSBoaXN0b3JpY2FsIHJlYXNvbnMuXG5jb25zdCBERUZBVUxUX0JBU0VfUEFUSCA9ICcnO1xuXG5cbmV4cG9ydCB7XG4gIE1BWF9MT0dfQk9EWV9MRU5HVEgsIE1KU09OV1BfRUxFTUVOVF9LRVksIFczQ19FTEVNRU5UX0tFWSxcbiAgUFJPVE9DT0xTLCBERUZBVUxUX0JBU0VfUEFUSFxufTtcbiJdLCJmaWxlIjoibGliL2NvbnN0YW50cy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLiJ9
|
|
24
|
+
exports.DEFAULT_BASE_PATH = DEFAULT_BASE_PATH;
|
|
25
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9jb25zdGFudHMuanMiXSwibmFtZXMiOlsiTUFYX0xPR19CT0RZX0xFTkdUSCIsIk1KU09OV1BfRUxFTUVOVF9LRVkiLCJXM0NfRUxFTUVOVF9LRVkiLCJ1dGlsIiwiVzNDX1dFQl9FTEVNRU5UX0lERU5USUZJRVIiLCJQUk9UT0NPTFMiLCJXM0MiLCJNSlNPTldQIiwiREVGQVVMVF9CQVNFX1BBVEgiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQVFBLE1BQU1BLG1CQUFtQixHQUFHLElBQTVCOztBQUNBLE1BQU1DLG1CQUFtQixHQUFHLFNBQTVCOztBQUNBLE1BQU1DLGVBQWUsR0FBR0MsY0FBS0MsMEJBQTdCOztBQUNBLE1BQU1DLFNBQVMsR0FBRztBQUNoQkMsRUFBQUEsR0FBRyxFQUFFLEtBRFc7QUFFaEJDLEVBQUFBLE9BQU8sRUFBRTtBQUZPLENBQWxCOztBQU1BLE1BQU1DLGlCQUFpQixHQUFHLEVBQTFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5cbi8vIFRoZSBkZWZhdWx0IG1heGltdW0gbGVuZ3RoIG9mIGEgc2luZ2xlIGxvZyByZWNvcmRcbi8vIGNvbnRhaW5pbmcgaHR0cCByZXF1ZXN0L3Jlc3BvbnNlIGJvZHlcbi8vIFRoaXMgdmFsdWUgY291bGQgYmUgZ2xvYmFsbHkgY3VzdG9taXplZCB1c2luZyB0aGUgLS1sb2ctZmlsdGVyc1xuLy8gc2VydmVyIGZlYXR1cmUuIEV4YW1wbGUgcnVsZTpcbi8vIFx0e1wicGF0dGVyblwiOiBcIiguezEsMTUwfSkuKlwiLCBcImZsYWdzXCI6IFwic1wiLCBcInJlcGxhY2VyXCI6IFwiJDFcIn1cbi8vIF4gY3V0cyBhbGwgbG9nIHJlY29yZHMgdG8gbWF4aW11bSAxNTAgY2hhcnNcbmNvbnN0IE1BWF9MT0dfQk9EWV9MRU5HVEggPSAxMDI0O1xuY29uc3QgTUpTT05XUF9FTEVNRU5UX0tFWSA9ICdFTEVNRU5UJztcbmNvbnN0IFczQ19FTEVNRU5UX0tFWSA9IHV0aWwuVzNDX1dFQl9FTEVNRU5UX0lERU5USUZJRVI7XG5jb25zdCBQUk9UT0NPTFMgPSB7XG4gIFczQzogJ1czQycsXG4gIE1KU09OV1A6ICdNSlNPTldQJyxcbn07XG5cbi8vIEJlZm9yZSBBcHBpdW0gMi4wLCB0aGlzIGRlZmF1bHQgdmFsdWUgd2FzICcvd2QvaHViJyBieSBoaXN0b3JpY2FsIHJlYXNvbnMuXG5jb25zdCBERUZBVUxUX0JBU0VfUEFUSCA9ICcnO1xuXG5cbmV4cG9ydCB7XG4gIE1BWF9MT0dfQk9EWV9MRU5HVEgsIE1KU09OV1BfRUxFTUVOVF9LRVksIFczQ19FTEVNRU5UX0tFWSxcbiAgUFJPVE9DT0xTLCBERUZBVUxUX0JBU0VfUEFUSFxufTtcbiJdfQ==
|
|
@@ -16,7 +16,5 @@ function produceError() {
|
|
|
16
16
|
|
|
17
17
|
function produceCrash() {
|
|
18
18
|
throw new Error('We just tried to crash Appium!');
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9leHByZXNzL2NyYXNoLmpzIl0sIm5hbWVzIjpbInByb2R1Y2VFcnJvciIsImVycm9ycyIsIlVua25vd25Db21tYW5kRXJyb3IiLCJwcm9kdWNlQ3Jhc2giLCJFcnJvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBOztBQUdBLFNBQVNBLFlBQVQsR0FBeUI7QUFDdkIsUUFBTSxJQUFJQyxpQkFBT0MsbUJBQVgsQ0FBK0Isb0NBQS9CLENBQU47QUFDRDs7QUFFRCxTQUFTQyxZQUFULEdBQXlCO0FBQ3ZCLFFBQU0sSUFBSUMsS0FBSixDQUFVLGdDQUFWLENBQU47QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVycm9ycyB9IGZyb20gJy4uL3Byb3RvY29sJztcblxuXG5mdW5jdGlvbiBwcm9kdWNlRXJyb3IgKCkge1xuICB0aHJvdyBuZXcgZXJyb3JzLlVua25vd25Db21tYW5kRXJyb3IoJ1Byb2R1Y2VkIGdlbmVyaWMgZXJyb3IgZm9yIHRlc3RpbmcnKTtcbn1cblxuZnVuY3Rpb24gcHJvZHVjZUNyYXNoICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdXZSBqdXN0IHRyaWVkIHRvIGNyYXNoIEFwcGl1bSEnKTtcbn1cblxuXG5leHBvcnQgeyBwcm9kdWNlRXJyb3IsIHByb2R1Y2VDcmFzaCB9O1xuIl0sImZpbGUiOiJsaWIvZXhwcmVzcy9jcmFzaC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9leHByZXNzL2NyYXNoLmpzIl0sIm5hbWVzIjpbInByb2R1Y2VFcnJvciIsImVycm9ycyIsIlVua25vd25Db21tYW5kRXJyb3IiLCJwcm9kdWNlQ3Jhc2giLCJFcnJvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBOztBQUdBLFNBQVNBLFlBQVQsR0FBeUI7QUFDdkIsUUFBTSxJQUFJQyxpQkFBT0MsbUJBQVgsQ0FBK0Isb0NBQS9CLENBQU47QUFDRDs7QUFFRCxTQUFTQyxZQUFULEdBQXlCO0FBQ3ZCLFFBQU0sSUFBSUMsS0FBSixDQUFVLGdDQUFWLENBQU47QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVycm9ycyB9IGZyb20gJy4uL3Byb3RvY29sJztcblxuXG5mdW5jdGlvbiBwcm9kdWNlRXJyb3IgKCkge1xuICB0aHJvdyBuZXcgZXJyb3JzLlVua25vd25Db21tYW5kRXJyb3IoJ1Byb2R1Y2VkIGdlbmVyaWMgZXJyb3IgZm9yIHRlc3RpbmcnKTtcbn1cblxuZnVuY3Rpb24gcHJvZHVjZUNyYXNoICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdXZSBqdXN0IHRyaWVkIHRvIGNyYXNoIEFwcGl1bSEnKTtcbn1cblxuXG5leHBvcnQgeyBwcm9kdWNlRXJyb3IsIHByb2R1Y2VDcmFzaCB9O1xuIl19
|
|
@@ -11,7 +11,7 @@ require("source-map-support/register");
|
|
|
11
11
|
|
|
12
12
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
13
13
|
|
|
14
|
-
require("@
|
|
14
|
+
require("@colors/colors");
|
|
15
15
|
|
|
16
16
|
var _morgan = _interopRequireDefault(require("morgan"));
|
|
17
17
|
|
|
@@ -66,7 +66,5 @@ const startLogFormatter = (0, _morgan.default)((tokens, req, res) => {
|
|
|
66
66
|
}, {
|
|
67
67
|
immediate: true
|
|
68
68
|
});
|
|
69
|
-
exports.startLogFormatter = startLogFormatter;
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9leHByZXNzL2V4cHJlc3MtbG9nZ2luZy5qcyJdLCJuYW1lcyI6WyJjb21waWxlIiwiZm10IiwicmVwbGFjZSIsIl8iLCJuYW1lIiwiYXJnIiwianMiLCJGdW5jdGlvbiIsInJlcXVlc3RFbmRMb2dnaW5nRm9ybWF0IiwidG9rZW5zIiwicmVxIiwicmVzIiwic3RhdHVzIiwic3RhdHVzQ29kZSIsInN0YXR1c1N0ciIsInJlZCIsInllbGxvdyIsImN5YW4iLCJncmVlbiIsImZuIiwid2hpdGUiLCJncmV5IiwiZW5kTG9nRm9ybWF0dGVyIiwibG9nIiwiaW5mbyIsImpzb25SZXNwIiwicmVxdWVzdFN0YXJ0TG9nZ2luZ0Zvcm1hdCIsInN0YXJ0TG9nRm9ybWF0dGVyIiwicmVxQm9keSIsImJvZHkiLCJ0cnVuY2F0ZSIsImlzU3RyaW5nIiwiSlNPTiIsInN0cmluZ2lmeSIsImxlbmd0aCIsIk1BWF9MT0dfQk9EWV9MRU5HVEgiLCJpZ24iLCJpbW1lZGlhdGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBS0EsU0FBU0EsT0FBVCxDQUFrQkMsR0FBbEIsRUFBdUI7QUFFckJBLEVBQUFBLEdBQUcsR0FBR0EsR0FBRyxDQUFDQyxPQUFKLENBQVksSUFBWixFQUFrQixLQUFsQixDQUFOO0FBQ0FELEVBQUFBLEdBQUcsR0FBR0EsR0FBRyxDQUFDQyxPQUFKLENBQVksZ0NBQVosRUFDSixTQUFTQSxPQUFULENBQWtCQyxDQUFsQixFQUFxQkMsSUFBckIsRUFBMkJDLEdBQTNCLEVBQWdDO0FBQzlCLFdBQVEscUJBQW9CRCxJQUFLLGlCQUFnQkMsR0FBSSxnQkFBckQ7QUFDRCxHQUhHLENBQU47QUFJQSxNQUFJQyxFQUFFLEdBQUksYUFBWUwsR0FBSSxJQUExQjtBQUNBLFNBQU8sSUFBSU0sUUFBSixDQUFhLGtCQUFiLEVBQWlDRCxFQUFqQyxDQUFQO0FBQ0Q7O0FBRUQsU0FBU0UsdUJBQVQsQ0FBa0NDLE1BQWxDLEVBQTBDQyxHQUExQyxFQUErQ0MsR0FBL0MsRUFBb0Q7QUFDbEQsTUFBSUMsTUFBTSxHQUFHRCxHQUFHLENBQUNFLFVBQWpCO0FBQ0EsTUFBSUMsU0FBUyxHQUFHLFNBQWhCOztBQUNBLE1BQUlGLE1BQU0sSUFBSSxHQUFkLEVBQW1CO0FBQ2pCRSxJQUFBQSxTQUFTLEdBQUdBLFNBQVMsQ0FBQ0MsR0FBdEI7QUFDRCxHQUZELE1BRU8sSUFBSUgsTUFBTSxJQUFJLEdBQWQsRUFBbUI7QUFDeEJFLElBQUFBLFNBQVMsR0FBR0EsU0FBUyxDQUFDRSxNQUF0QjtBQUNELEdBRk0sTUFFQSxJQUFJSixNQUFNLElBQUksR0FBZCxFQUFtQjtBQUN4QkUsSUFBQUEsU0FBUyxHQUFHQSxTQUFTLENBQUNHLElBQXRCO0FBQ0QsR0FGTSxNQUVBO0FBQ0xILElBQUFBLFNBQVMsR0FBR0EsU0FBUyxDQUFDSSxLQUF0QjtBQUNEOztBQUNELE1BQUlDLEVBQUUsR0FBR25CLE9BQU8sQ0FBRSxHQUFFLG9CQUFvQm9CLEtBQU0sR0FBRU4sU0FBVSxJQUFHLDJDQUEyQ08sSUFBSyxFQUE3RixDQUFoQjtBQUNBLFNBQU9GLEVBQUUsQ0FBQ1YsTUFBRCxFQUFTQyxHQUFULEVBQWNDLEdBQWQsQ0FBVDtBQUNEOztBQUVELE1BQU1XLGVBQWUsR0FBRyxxQkFBTyxDQUFDYixNQUFELEVBQVNDLEdBQVQsRUFBY0MsR0FBZCxLQUFzQjtBQUNuRFksa0JBQUlDLElBQUosQ0FBU2hCLHVCQUF1QixDQUFDQyxNQUFELEVBQVNDLEdBQVQsRUFBY0MsR0FBZCxDQUFoQyxFQUNFLENBQUNBLEdBQUcsQ0FBQ2MsUUFBSixJQUFnQixFQUFqQixFQUFxQkosSUFEdkI7QUFFRCxDQUh1QixDQUF4Qjs7QUFLQSxNQUFNSyx5QkFBeUIsR0FBRzFCLE9BQU8sQ0FBRSxHQUFFLE1BQU1vQixLQUFNLElBQUcsVUFBVUEsS0FBTSxJQUFHLE9BQU9BLEtBQU0sRUFBbkQsQ0FBekM7QUFFQSxNQUFNTyxpQkFBaUIsR0FBRyxxQkFBTyxDQUFDbEIsTUFBRCxFQUFTQyxHQUFULEVBQWNDLEdBQWQsS0FBc0I7QUFFckQsTUFBSWlCLE9BQU8sR0FBRyxFQUFkOztBQUNBLE1BQUlsQixHQUFHLENBQUNtQixJQUFSLEVBQWM7QUFDWixRQUFJO0FBQ0ZELE1BQUFBLE9BQU8sR0FBR3pCLGdCQUFFMkIsUUFBRixDQUFXM0IsZ0JBQUU0QixRQUFGLENBQVdyQixHQUFHLENBQUNtQixJQUFmLElBQXVCbkIsR0FBRyxDQUFDbUIsSUFBM0IsR0FBa0NHLElBQUksQ0FBQ0MsU0FBTCxDQUFldkIsR0FBRyxDQUFDbUIsSUFBbkIsQ0FBN0MsRUFBdUU7QUFDL0VLLFFBQUFBLE1BQU0sRUFBRUM7QUFEdUUsT0FBdkUsQ0FBVjtBQUdELEtBSkQsQ0FJRSxPQUFPQyxHQUFQLEVBQVksQ0FBRTtBQUNqQjs7QUFDRGIsa0JBQUlDLElBQUosQ0FBU0UseUJBQXlCLENBQUNqQixNQUFELEVBQVNDLEdBQVQsRUFBY0MsR0FBZCxDQUFsQyxFQUFzRGlCLE9BQU8sQ0FBQ1AsSUFBOUQ7QUFDRCxDQVh5QixFQVd2QjtBQUFDZ0IsRUFBQUEsU0FBUyxFQUFFO0FBQVosQ0FYdUIsQ0FBMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0ICdAZGFiaC9jb2xvcnMnO1xuaW1wb3J0IG1vcmdhbiBmcm9tICdtb3JnYW4nO1xuaW1wb3J0IGxvZyBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgeyBNQVhfTE9HX0JPRFlfTEVOR1RIIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxuXG4vLyBDb3BpZWQgdGhlIG1vcmdhbiBjb21waWxlIGZ1bmN0aW9uIG92ZXIgc28gdGhhdCBjb29sZXIgZm9ybWF0c1xuLy8gbWF5IGJlIGNvbmZpZ3VyZWRcbmZ1bmN0aW9uIGNvbXBpbGUgKGZtdCkge1xuICAvLyBlc2NhcGUgcXVvdGVzXG4gIGZtdCA9IGZtdC5yZXBsYWNlKC9cIi9nLCAnXFxcXFwiJyk7XG4gIGZtdCA9IGZtdC5yZXBsYWNlKC86KFstXFx3XXsyLH0pKD86XFxbKFteXFxdXSspXFxdKT8vZyxcbiAgICBmdW5jdGlvbiByZXBsYWNlIChfLCBuYW1lLCBhcmcpIHtcbiAgICAgIHJldHVybiBgXCJcXG4gICAgKyAodG9rZW5zW1wiJHtuYW1lfVwiXShyZXEsIHJlcywgXCIke2FyZ31cIikgfHwgXCItXCIpICsgXCJgO1xuICAgIH0pO1xuICBsZXQganMgPSBgICByZXR1cm4gXCIke2ZtdH1cIjtgO1xuICByZXR1cm4gbmV3IEZ1bmN0aW9uKCd0b2tlbnMsIHJlcSwgcmVzJywganMpO1xufVxuXG5mdW5jdGlvbiByZXF1ZXN0RW5kTG9nZ2luZ0Zvcm1hdCAodG9rZW5zLCByZXEsIHJlcykge1xuICBsZXQgc3RhdHVzID0gcmVzLnN0YXR1c0NvZGU7XG4gIGxldCBzdGF0dXNTdHIgPSAnOnN0YXR1cyc7XG4gIGlmIChzdGF0dXMgPj0gNTAwKSB7XG4gICAgc3RhdHVzU3RyID0gc3RhdHVzU3RyLnJlZDtcbiAgfSBlbHNlIGlmIChzdGF0dXMgPj0gNDAwKSB7XG4gICAgc3RhdHVzU3RyID0gc3RhdHVzU3RyLnllbGxvdztcbiAgfSBlbHNlIGlmIChzdGF0dXMgPj0gMzAwKSB7XG4gICAgc3RhdHVzU3RyID0gc3RhdHVzU3RyLmN5YW47XG4gIH0gZWxzZSB7XG4gICAgc3RhdHVzU3RyID0gc3RhdHVzU3RyLmdyZWVuO1xuICB9XG4gIGxldCBmbiA9IGNvbXBpbGUoYCR7JzwtLSA6bWV0aG9kIDp1cmwgJy53aGl0ZX0ke3N0YXR1c1N0cn0gJHsnOnJlc3BvbnNlLXRpbWUgbXMgLSA6cmVzW2NvbnRlbnQtbGVuZ3RoXScuZ3JleX1gKTtcbiAgcmV0dXJuIGZuKHRva2VucywgcmVxLCByZXMpO1xufVxuXG5jb25zdCBlbmRMb2dGb3JtYXR0ZXIgPSBtb3JnYW4oKHRva2VucywgcmVxLCByZXMpID0+IHtcbiAgbG9nLmluZm8ocmVxdWVzdEVuZExvZ2dpbmdGb3JtYXQodG9rZW5zLCByZXEsIHJlcyksXG4gICAgKHJlcy5qc29uUmVzcCB8fCAnJykuZ3JleSk7XG59KTtcblxuY29uc3QgcmVxdWVzdFN0YXJ0TG9nZ2luZ0Zvcm1hdCA9IGNvbXBpbGUoYCR7Jy0tPicud2hpdGV9ICR7JzptZXRob2QnLndoaXRlfSAkeyc6dXJsJy53aGl0ZX1gKTtcblxuY29uc3Qgc3RhcnRMb2dGb3JtYXR0ZXIgPSBtb3JnYW4oKHRva2VucywgcmVxLCByZXMpID0+IHtcbiAgLy8gbW9yZ2FuIG91dHB1dCBpcyByZWRpcmVjdGVkIHN0cmFpZ2h0IHRvIHdpbnN0b25cbiAgbGV0IHJlcUJvZHkgPSAnJztcbiAgaWYgKHJlcS5ib2R5KSB7XG4gICAgdHJ5IHtcbiAgICAgIHJlcUJvZHkgPSBfLnRydW5jYXRlKF8uaXNTdHJpbmcocmVxLmJvZHkpID8gcmVxLmJvZHkgOiBKU09OLnN0cmluZ2lmeShyZXEuYm9keSksIHtcbiAgICAgICAgbGVuZ3RoOiBNQVhfTE9HX0JPRFlfTEVOR1RILFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoaWduKSB7fVxuICB9XG4gIGxvZy5pbmZvKHJlcXVlc3RTdGFydExvZ2dpbmdGb3JtYXQodG9rZW5zLCByZXEsIHJlcyksIHJlcUJvZHkuZ3JleSk7XG59LCB7aW1tZWRpYXRlOiB0cnVlfSk7XG5cbmV4cG9ydCB7IGVuZExvZ0Zvcm1hdHRlciwgc3RhcnRMb2dGb3JtYXR0ZXIgfTtcbiJdLCJmaWxlIjoibGliL2V4cHJlc3MvZXhwcmVzcy1sb2dnaW5nLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
|
|
69
|
+
exports.startLogFormatter = startLogFormatter;
|
|
70
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9leHByZXNzL2V4cHJlc3MtbG9nZ2luZy5qcyJdLCJuYW1lcyI6WyJjb21waWxlIiwiZm10IiwicmVwbGFjZSIsIl8iLCJuYW1lIiwiYXJnIiwianMiLCJGdW5jdGlvbiIsInJlcXVlc3RFbmRMb2dnaW5nRm9ybWF0IiwidG9rZW5zIiwicmVxIiwicmVzIiwic3RhdHVzIiwic3RhdHVzQ29kZSIsInN0YXR1c1N0ciIsInJlZCIsInllbGxvdyIsImN5YW4iLCJncmVlbiIsImZuIiwid2hpdGUiLCJncmV5IiwiZW5kTG9nRm9ybWF0dGVyIiwibG9nIiwiaW5mbyIsImpzb25SZXNwIiwicmVxdWVzdFN0YXJ0TG9nZ2luZ0Zvcm1hdCIsInN0YXJ0TG9nRm9ybWF0dGVyIiwicmVxQm9keSIsImJvZHkiLCJ0cnVuY2F0ZSIsImlzU3RyaW5nIiwiSlNPTiIsInN0cmluZ2lmeSIsImxlbmd0aCIsIk1BWF9MT0dfQk9EWV9MRU5HVEgiLCJpZ24iLCJpbW1lZGlhdGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBS0EsU0FBU0EsT0FBVCxDQUFrQkMsR0FBbEIsRUFBdUI7QUFFckJBLEVBQUFBLEdBQUcsR0FBR0EsR0FBRyxDQUFDQyxPQUFKLENBQVksSUFBWixFQUFrQixLQUFsQixDQUFOO0FBQ0FELEVBQUFBLEdBQUcsR0FBR0EsR0FBRyxDQUFDQyxPQUFKLENBQVksZ0NBQVosRUFDSixTQUFTQSxPQUFULENBQWtCQyxDQUFsQixFQUFxQkMsSUFBckIsRUFBMkJDLEdBQTNCLEVBQWdDO0FBQzlCLFdBQVEscUJBQW9CRCxJQUFLLGlCQUFnQkMsR0FBSSxnQkFBckQ7QUFDRCxHQUhHLENBQU47QUFJQSxNQUFJQyxFQUFFLEdBQUksYUFBWUwsR0FBSSxJQUExQjtBQUNBLFNBQU8sSUFBSU0sUUFBSixDQUFhLGtCQUFiLEVBQWlDRCxFQUFqQyxDQUFQO0FBQ0Q7O0FBRUQsU0FBU0UsdUJBQVQsQ0FBa0NDLE1BQWxDLEVBQTBDQyxHQUExQyxFQUErQ0MsR0FBL0MsRUFBb0Q7QUFDbEQsTUFBSUMsTUFBTSxHQUFHRCxHQUFHLENBQUNFLFVBQWpCO0FBQ0EsTUFBSUMsU0FBUyxHQUFHLFNBQWhCOztBQUNBLE1BQUlGLE1BQU0sSUFBSSxHQUFkLEVBQW1CO0FBQ2pCRSxJQUFBQSxTQUFTLEdBQUdBLFNBQVMsQ0FBQ0MsR0FBdEI7QUFDRCxHQUZELE1BRU8sSUFBSUgsTUFBTSxJQUFJLEdBQWQsRUFBbUI7QUFDeEJFLElBQUFBLFNBQVMsR0FBR0EsU0FBUyxDQUFDRSxNQUF0QjtBQUNELEdBRk0sTUFFQSxJQUFJSixNQUFNLElBQUksR0FBZCxFQUFtQjtBQUN4QkUsSUFBQUEsU0FBUyxHQUFHQSxTQUFTLENBQUNHLElBQXRCO0FBQ0QsR0FGTSxNQUVBO0FBQ0xILElBQUFBLFNBQVMsR0FBR0EsU0FBUyxDQUFDSSxLQUF0QjtBQUNEOztBQUNELE1BQUlDLEVBQUUsR0FBR25CLE9BQU8sQ0FBRSxHQUFFLG9CQUFvQm9CLEtBQU0sR0FBRU4sU0FBVSxJQUFHLDJDQUEyQ08sSUFBSyxFQUE3RixDQUFoQjtBQUNBLFNBQU9GLEVBQUUsQ0FBQ1YsTUFBRCxFQUFTQyxHQUFULEVBQWNDLEdBQWQsQ0FBVDtBQUNEOztBQUVELE1BQU1XLGVBQWUsR0FBRyxxQkFBTyxDQUFDYixNQUFELEVBQVNDLEdBQVQsRUFBY0MsR0FBZCxLQUFzQjtBQUNuRFksa0JBQUlDLElBQUosQ0FBU2hCLHVCQUF1QixDQUFDQyxNQUFELEVBQVNDLEdBQVQsRUFBY0MsR0FBZCxDQUFoQyxFQUNFLENBQUNBLEdBQUcsQ0FBQ2MsUUFBSixJQUFnQixFQUFqQixFQUFxQkosSUFEdkI7QUFFRCxDQUh1QixDQUF4Qjs7QUFLQSxNQUFNSyx5QkFBeUIsR0FBRzFCLE9BQU8sQ0FBRSxHQUFFLE1BQU1vQixLQUFNLElBQUcsVUFBVUEsS0FBTSxJQUFHLE9BQU9BLEtBQU0sRUFBbkQsQ0FBekM7QUFFQSxNQUFNTyxpQkFBaUIsR0FBRyxxQkFBTyxDQUFDbEIsTUFBRCxFQUFTQyxHQUFULEVBQWNDLEdBQWQsS0FBc0I7QUFFckQsTUFBSWlCLE9BQU8sR0FBRyxFQUFkOztBQUNBLE1BQUlsQixHQUFHLENBQUNtQixJQUFSLEVBQWM7QUFDWixRQUFJO0FBQ0ZELE1BQUFBLE9BQU8sR0FBR3pCLGdCQUFFMkIsUUFBRixDQUFXM0IsZ0JBQUU0QixRQUFGLENBQVdyQixHQUFHLENBQUNtQixJQUFmLElBQXVCbkIsR0FBRyxDQUFDbUIsSUFBM0IsR0FBa0NHLElBQUksQ0FBQ0MsU0FBTCxDQUFldkIsR0FBRyxDQUFDbUIsSUFBbkIsQ0FBN0MsRUFBdUU7QUFDL0VLLFFBQUFBLE1BQU0sRUFBRUM7QUFEdUUsT0FBdkUsQ0FBVjtBQUdELEtBSkQsQ0FJRSxPQUFPQyxHQUFQLEVBQVksQ0FBRTtBQUNqQjs7QUFDRGIsa0JBQUlDLElBQUosQ0FBU0UseUJBQXlCLENBQUNqQixNQUFELEVBQVNDLEdBQVQsRUFBY0MsR0FBZCxDQUFsQyxFQUFzRGlCLE9BQU8sQ0FBQ1AsSUFBOUQ7QUFDRCxDQVh5QixFQVd2QjtBQUFDZ0IsRUFBQUEsU0FBUyxFQUFFO0FBQVosQ0FYdUIsQ0FBMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0ICdAY29sb3JzL2NvbG9ycyc7XG5pbXBvcnQgbW9yZ2FuIGZyb20gJ21vcmdhbic7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7IE1BWF9MT0dfQk9EWV9MRU5HVEggfSBmcm9tICcuLi9jb25zdGFudHMnO1xuXG5cbi8vIENvcGllZCB0aGUgbW9yZ2FuIGNvbXBpbGUgZnVuY3Rpb24gb3ZlciBzbyB0aGF0IGNvb2xlciBmb3JtYXRzXG4vLyBtYXkgYmUgY29uZmlndXJlZFxuZnVuY3Rpb24gY29tcGlsZSAoZm10KSB7XG4gIC8vIGVzY2FwZSBxdW90ZXNcbiAgZm10ID0gZm10LnJlcGxhY2UoL1wiL2csICdcXFxcXCInKTtcbiAgZm10ID0gZm10LnJlcGxhY2UoLzooWy1cXHddezIsfSkoPzpcXFsoW15cXF1dKylcXF0pPy9nLFxuICAgIGZ1bmN0aW9uIHJlcGxhY2UgKF8sIG5hbWUsIGFyZykge1xuICAgICAgcmV0dXJuIGBcIlxcbiAgICArICh0b2tlbnNbXCIke25hbWV9XCJdKHJlcSwgcmVzLCBcIiR7YXJnfVwiKSB8fCBcIi1cIikgKyBcImA7XG4gICAgfSk7XG4gIGxldCBqcyA9IGAgIHJldHVybiBcIiR7Zm10fVwiO2A7XG4gIHJldHVybiBuZXcgRnVuY3Rpb24oJ3Rva2VucywgcmVxLCByZXMnLCBqcyk7XG59XG5cbmZ1bmN0aW9uIHJlcXVlc3RFbmRMb2dnaW5nRm9ybWF0ICh0b2tlbnMsIHJlcSwgcmVzKSB7XG4gIGxldCBzdGF0dXMgPSByZXMuc3RhdHVzQ29kZTtcbiAgbGV0IHN0YXR1c1N0ciA9ICc6c3RhdHVzJztcbiAgaWYgKHN0YXR1cyA+PSA1MDApIHtcbiAgICBzdGF0dXNTdHIgPSBzdGF0dXNTdHIucmVkO1xuICB9IGVsc2UgaWYgKHN0YXR1cyA+PSA0MDApIHtcbiAgICBzdGF0dXNTdHIgPSBzdGF0dXNTdHIueWVsbG93O1xuICB9IGVsc2UgaWYgKHN0YXR1cyA+PSAzMDApIHtcbiAgICBzdGF0dXNTdHIgPSBzdGF0dXNTdHIuY3lhbjtcbiAgfSBlbHNlIHtcbiAgICBzdGF0dXNTdHIgPSBzdGF0dXNTdHIuZ3JlZW47XG4gIH1cbiAgbGV0IGZuID0gY29tcGlsZShgJHsnPC0tIDptZXRob2QgOnVybCAnLndoaXRlfSR7c3RhdHVzU3RyfSAkeyc6cmVzcG9uc2UtdGltZSBtcyAtIDpyZXNbY29udGVudC1sZW5ndGhdJy5ncmV5fWApO1xuICByZXR1cm4gZm4odG9rZW5zLCByZXEsIHJlcyk7XG59XG5cbmNvbnN0IGVuZExvZ0Zvcm1hdHRlciA9IG1vcmdhbigodG9rZW5zLCByZXEsIHJlcykgPT4ge1xuICBsb2cuaW5mbyhyZXF1ZXN0RW5kTG9nZ2luZ0Zvcm1hdCh0b2tlbnMsIHJlcSwgcmVzKSxcbiAgICAocmVzLmpzb25SZXNwIHx8ICcnKS5ncmV5KTtcbn0pO1xuXG5jb25zdCByZXF1ZXN0U3RhcnRMb2dnaW5nRm9ybWF0ID0gY29tcGlsZShgJHsnLS0+Jy53aGl0ZX0gJHsnOm1ldGhvZCcud2hpdGV9ICR7Jzp1cmwnLndoaXRlfWApO1xuXG5jb25zdCBzdGFydExvZ0Zvcm1hdHRlciA9IG1vcmdhbigodG9rZW5zLCByZXEsIHJlcykgPT4ge1xuICAvLyBtb3JnYW4gb3V0cHV0IGlzIHJlZGlyZWN0ZWQgc3RyYWlnaHQgdG8gd2luc3RvblxuICBsZXQgcmVxQm9keSA9ICcnO1xuICBpZiAocmVxLmJvZHkpIHtcbiAgICB0cnkge1xuICAgICAgcmVxQm9keSA9IF8udHJ1bmNhdGUoXy5pc1N0cmluZyhyZXEuYm9keSkgPyByZXEuYm9keSA6IEpTT04uc3RyaW5naWZ5KHJlcS5ib2R5KSwge1xuICAgICAgICBsZW5ndGg6IE1BWF9MT0dfQk9EWV9MRU5HVEgsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChpZ24pIHt9XG4gIH1cbiAgbG9nLmluZm8ocmVxdWVzdFN0YXJ0TG9nZ2luZ0Zvcm1hdCh0b2tlbnMsIHJlcSwgcmVzKSwgcmVxQm9keS5ncmV5KTtcbn0sIHtpbW1lZGlhdGU6IHRydWV9KTtcblxuZXhwb3J0IHsgZW5kTG9nRm9ybWF0dGVyLCBzdGFydExvZ0Zvcm1hdHRlciB9O1xuIl19
|
|
@@ -38,7 +38,7 @@ const IDEMPOTENT_RESPONSES = new _lruCache.default({
|
|
|
38
38
|
const MONITORED_METHODS = ['POST', 'PATCH'];
|
|
39
39
|
const IDEMPOTENCY_KEY_HEADER = 'x-idempotency-key';
|
|
40
40
|
process.on('exit', () => {
|
|
41
|
-
const resPaths = IDEMPOTENT_RESPONSES.values().map(({
|
|
41
|
+
const resPaths = [...IDEMPOTENT_RESPONSES.values()].map(({
|
|
42
42
|
response
|
|
43
43
|
}) => response).filter(Boolean);
|
|
44
44
|
|
|
@@ -189,7 +189,5 @@ async function handleIdempotency(req, res, next) {
|
|
|
189
189
|
await rerouteCachedResponse(cachedResponsePath);
|
|
190
190
|
});
|
|
191
191
|
}
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9leHByZXNzL2lkZW1wb3RlbmN5LmpzIl0sIm5hbWVzIjpbIkNBQ0hFX1NJWkUiLCJJREVNUE9URU5UX1JFU1BPTlNFUyIsIkxSVSIsIm1heCIsInVwZGF0ZUFnZU9uR2V0IiwiZGlzcG9zZSIsImtleSIsInJlc3BvbnNlIiwiZnMiLCJyaW1yYWZTeW5jIiwiTU9OSVRPUkVEX01FVEhPRFMiLCJJREVNUE9URU5DWV9LRVlfSEVBREVSIiwicHJvY2VzcyIsIm9uIiwicmVzUGF0aHMiLCJ2YWx1ZXMiLCJtYXAiLCJmaWx0ZXIiLCJCb29sZWFuIiwicmVzUGF0aCIsImlnbiIsImNhY2hlUmVzcG9uc2UiLCJyZXEiLCJyZXMiLCJyZXNwb25zZVN0YXRlTGlzdGVuZXIiLCJFdmVudEVtaXR0ZXIiLCJzZXQiLCJtZXRob2QiLCJwYXRoIiwidG1wRmlsZSIsInJlc29sdmUiLCJvcyIsInRtcGRpciIsInV0aWwiLCJ1dWlkVjQiLCJyZXNwb25zZUxpc3RlbmVyIiwiY3JlYXRlV3JpdGVTdHJlYW0iLCJlbWl0Q2xvc2UiLCJvcmlnaW5hbFNvY2tldFdyaXRlciIsInNvY2tldCIsIndyaXRlIiwiYmluZCIsInBhdGNoZWRXcml0ZXIiLCJjaHVuayIsImVuY29kaW5nIiwibmV4dCIsIndyaXRhYmxlIiwid3JpdGVFcnJvciIsImlzUmVzcG9uc2VGdWxseVNlbnQiLCJvbmNlIiwiZSIsImVuZCIsImhhcyIsImxvZyIsImluZm8iLCJlbWl0IiwibWVzc2FnZSIsImRlbCIsImdldCIsImhhbmRsZUlkZW1wb3RlbmN5IiwiaGVhZGVycyIsImluY2x1ZGVzIiwiZGVidWciLCJzdG9yZWRNZXRob2QiLCJzdG9yZWRQYXRoIiwid2FybiIsInJlcm91dGVDYWNoZWRSZXNwb25zZSIsImNhY2hlZFJlc1BhdGgiLCJleGlzdHMiLCJjcmVhdGVSZWFkU3RyZWFtIiwicGlwZSIsImNhY2hlZFJlc3BvbnNlUGF0aCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7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bSAnLi9sb2dnZXInO1xuaW1wb3J0IExSVSBmcm9tICdscnUtY2FjaGUnO1xuaW1wb3J0IHsgZnMsIHV0aWwgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IG9zIGZyb20gJ29zJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuXG5jb25zdCBDQUNIRV9TSVpFID0gMTAyNDtcbmNvbnN0IElERU1QT1RFTlRfUkVTUE9OU0VTID0gbmV3IExSVSh7XG4gIG1heDogQ0FDSEVfU0laRSxcbiAgdXBkYXRlQWdlT25HZXQ6IHRydWUsXG4gIGRpc3Bvc2UgKGtleSwge3Jlc3BvbnNlfSkge1xuICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgZnMucmltcmFmU3luYyhyZXNwb25zZSk7XG4gICAgfVxuICB9LFxufSk7XG5jb25zdCBNT05JVE9SRURfTUVUSE9EUyA9IFsnUE9TVCcsICdQQVRDSCddO1xuY29uc3QgSURFTVBPVEVOQ1lfS0VZX0hFQURFUiA9ICd4LWlkZW1wb3RlbmN5LWtleSc7XG5cbnByb2Nlc3Mub24oJ2V4aXQnLCAoKSA9PiB7XG4gIGNvbnN0IHJlc1BhdGhzID0gSURFTVBPVEVOVF9SRVNQT05TRVMudmFsdWVzKClcbiAgICAubWFwKCh7cmVzcG9uc2V9KSA9PiByZXNwb25zZSlcbiAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICBmb3IgKGNvbnN0IHJlc1BhdGggb2YgcmVzUGF0aHMpIHtcbiAgICB0cnkge1xuICAgICAgLy8gQXN5bmNocm9ub3VzIGNhbGxzIGFyZSBub3Qgc3VwcG9ydGVkIGluIG9uRXhpdCBoYW5kbGVyXG4gICAgICBmcy5yaW1yYWZTeW5jKHJlc1BhdGgpO1xuICAgIH0gY2F0Y2ggKGlnbikge31cbiAgfVxufSk7XG5cblxuZnVuY3Rpb24gY2FjaGVSZXNwb25zZSAoa2V5LCByZXEsIHJlcykge1xuICBjb25zdCByZXNwb25zZVN0YXRlTGlzdGVuZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIElERU1QT1RFTlRfUkVTUE9OU0VTLnNldChrZXksIHtcbiAgICBtZXRob2Q6IHJlcS5tZXRob2QsXG4gICAgcGF0aDogcmVxLnBhdGgsXG4gICAgcmVzcG9uc2U6IG51bGwsXG4gICAgcmVzcG9uc2VTdGF0ZUxpc3RlbmVyLFxuICB9KTtcbiAgY29uc3QgdG1wRmlsZSA9IHBhdGgucmVzb2x2ZShvcy50bXBkaXIoKSwgYCR7dXRpbC51dWlkVjQoKX0ucmVzcG9uc2VgKTtcbiAgY29uc3QgcmVzcG9uc2VMaXN0ZW5lciA9IGZzLmNyZWF0ZVdyaXRlU3RyZWFtKHRtcEZpbGUsIHtcbiAgICBlbWl0Q2xvc2U6IHRydWUsXG4gIH0pO1xuICBjb25zdCBvcmlnaW5hbFNvY2tldFdyaXRlciA9IHJlcy5zb2NrZXQud3JpdGUuYmluZChyZXMuc29ja2V0KTtcbiAgY29uc3QgcGF0Y2hlZFdyaXRlciA9IChjaHVuaywgZW5jb2RpbmcsIG5leHQpID0+IHtcbiAgICBpZiAocmVzcG9uc2VMaXN0ZW5lci53cml0YWJsZSkge1xuICAgICAgcmVzcG9uc2VMaXN0ZW5lci53cml0ZShjaHVuayk7XG4gICAgfVxuICAgIHJldHVybiBvcmlnaW5hbFNvY2tldFdyaXRlcihjaHVuaywgZW5jb2RpbmcsIG5leHQpO1xuICB9O1xuICByZXMuc29ja2V0LndyaXRlID0gcGF0Y2hlZFdyaXRlcjtcbiAgbGV0IHdyaXRlRXJyb3IgPSBudWxsO1xuICBsZXQgaXNSZXNwb25zZUZ1bGx5U2VudCA9IGZhbHNlO1xuICByZXNwb25zZUxpc3RlbmVyLm9uY2UoJ2Vycm9yJywgKGUpID0+IHtcbiAgICB3cml0ZUVycm9yID0gZTtcbiAgfSk7XG4gIHJlcy5vbmNlKCdmaW5pc2gnLCAoKSA9PiB7XG4gICAgaXNSZXNwb25zZUZ1bGx5U2VudCA9IHRydWU7XG4gICAgcmVzcG9uc2VMaXN0ZW5lci5lbmQoKTtcbiAgfSk7XG4gIHJlcy5vbmNlKCdjbG9zZScsICgpID0+IHtcbiAgICBpZiAoIWlzUmVzcG9uc2VGdWxseVNlbnQpIHtcbiAgICAgIHJlc3BvbnNlTGlzdGVuZXIuZW5kKCk7XG4gICAgfVxuICB9KTtcbiAgcmVzcG9uc2VMaXN0ZW5lci5vbmNlKCdjbG9zZScsICgpID0+IHtcbiAgICBpZiAocmVzLnNvY2tldD8ud3JpdGUgPT09IHBhdGNoZWRXcml0ZXIpIHtcbiAgICAgIHJlcy5zb2NrZXQud3JpdGUgPSBvcmlnaW5hbFNvY2tldFdyaXRlcjtcbiAgICB9XG5cbiAgICBpZiAoIUlERU1QT1RFTlRfUkVTUE9OU0VTLmhhcyhrZXkpKSB7XG4gICAgICBsb2cuaW5mbyhgQ291bGQgbm90IGNhY2hlIHRoZSByZXNwb25zZSBpZGVudGlmaWVkIGJ5ICcke2tleX0nLiBgICtcbiAgICAgICAgYENhY2hlIGNvbnNpc3RlbmN5IGhhcyBiZWVuIGRhbWFnZWRgKTtcbiAgICAgIHJldHVybiByZXNwb25zZVN0YXRlTGlzdGVuZXIuZW1pdCgncmVhZHknLCBudWxsKTtcbiAgICB9XG4gICAgaWYgKHdyaXRlRXJyb3IpIHtcbiAgICAgIGxvZy5pbmZvKGBDb3VsZCBub3QgY2FjaGUgdGhlIHJlc3BvbnNlIGlkZW50aWZpZWQgYnkgJyR7a2V5fSc6ICR7d3JpdGVFcnJvci5tZXNzYWdlfWApO1xuICAgICAgSURFTVBPVEVOVF9SRVNQT05TRVMuZGVsKGtleSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2VTdGF0ZUxpc3RlbmVyLmVtaXQoJ3JlYWR5JywgbnVsbCk7XG4gICAgfVxuICAgIGlmICghaXNSZXNwb25zZUZ1bGx5U2VudCkge1xuICAgICAgbG9nLmluZm8oYENvdWxkIG5vdCBjYWNoZSB0aGUgcmVzcG9uc2UgaWRlbnRpZmllZCBieSAnJHtrZXl9JywgYCArXG4gICAgICAgIGBiZWNhdXNlIGl0IGhhcyBub3QgYmVlbiBjb21wbGV0ZWRgKTtcbiAgICAgIGxvZy5pbmZvKCdEb2VzIHRoZSBjbGllbnQgdGVybWluYXRlIGNvbm5lY3Rpb25zIHRvbyBlYXJseT8nKTtcbiAgICAgIElERU1QT1RFTlRfUkVTUE9OU0VTLmRlbChrZXkpO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlU3RhdGVMaXN0ZW5lci5lbWl0KCdyZWFkeScsIG51bGwpO1xuICAgIH1cblxuICAgIElERU1QT1RFTlRfUkVTUE9OU0VTLmdldChrZXkpLnJlc3BvbnNlID0gdG1wRmlsZTtcbiAgICByZXNwb25zZVN0YXRlTGlzdGVuZXIuZW1pdCgncmVhZHknLCB0bXBGaWxlKTtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGhhbmRsZUlkZW1wb3RlbmN5IChyZXEsIHJlcywgbmV4dCkge1xuICBjb25zdCBrZXkgPSByZXEuaGVhZGVyc1tJREVNUE9URU5DWV9LRVlfSEVBREVSXTtcbiAgaWYgKCFrZXkpIHtcbiAgICByZXR1cm4gbmV4dCgpO1xuICB9XG4gIGlmICghTU9OSVRPUkVEX01FVEhPRFMuaW5jbHVkZXMocmVxLm1ldGhvZCkpIHtcbiAgICAvLyBHRVQsIERFTEVURSwgZXRjLiByZXF1ZXN0cyBhcmUgaWRlbXBvdGVudCBieSBkZWZhdWx0XG4gICAgLy8gdGhlcmUgaXMgbm8gbmVlZCB0byBjYWNoZSB0aGVtXG4gICAgcmV0dXJuIG5leHQoKTtcbiAgfVxuXG4gIGxvZy5kZWJ1ZyhgUmVxdWVzdCBpZGVtcG90ZW5jeSBrZXk6ICR7a2V5fWApO1xuICBpZiAoIUlERU1QT1RFTlRfUkVTUE9OU0VTLmhhcyhrZXkpKSB7XG4gICAgY2FjaGVSZXNwb25zZShrZXksIHJlcSwgcmVzKTtcbiAgICByZXR1cm4gbmV4dCgpO1xuICB9XG5cbiAgY29uc3Qge1xuICAgIG1ldGhvZDogc3RvcmVkTWV0aG9kLFxuICAgIHBhdGg6IHN0b3JlZFBhdGgsXG4gICAgcmVzcG9uc2UsXG4gICAgcmVzcG9uc2VTdGF0ZUxpc3RlbmVyLFxuICB9ID0gSURFTVBPVEVOVF9SRVNQT05TRVMuZ2V0KGtleSk7XG4gIGlmIChyZXEubWV0aG9kICE9PSBzdG9yZWRNZXRob2QgfHwgcmVxLnBhdGggIT09IHN0b3JlZFBhdGgpIHtcbiAgICBsb2cud2FybihgR290IHR3byBkaWZmZXJlbnQgcmVxdWVzdHMgd2l0aCB0aGUgc2FtZSBpZGVtcG90ZW5jeSBrZXkgJyR7a2V5fSdgKTtcbiAgICBsb2cud2FybignSXMgdGhlIGNsaWVudCBnZW5lcmF0aW5nIGlkZW1wb3RlbmN5IGtleXMgcHJvcGVybHk/Jyk7XG4gICAgcmV0dXJuIG5leHQoKTtcbiAgfVxuXG4gIGNvbnN0IHJlcm91dGVDYWNoZWRSZXNwb25zZSA9IGFzeW5jIChjYWNoZWRSZXNQYXRoKSA9PiB7XG4gICAgaWYgKCFhd2FpdCBmcy5leGlzdHMoY2FjaGVkUmVzUGF0aCkpIHtcbiAgICAgIElERU1QT1RFTlRfUkVTUE9OU0VTLmRlbChrZXkpO1xuICAgICAgbG9nLndhcm4oYENvdWxkIG5vdCByZWFkIHRoZSBjYWNoZWQgcmVzcG9uc2UgaWRlbnRpZmllZCBieSBrZXkgJyR7a2V5fSdgKTtcbiAgICAgIGxvZy53YXJuKCdUaGUgdGVtcG9yYXJ5IHN0b3JhZ2UgaXMgbm90IGFjY2Vzc2libGUgYW55bW9yZScpO1xuICAgICAgcmV0dXJuIG5leHQoKTtcbiAgICB9XG4gICAgZnMuY3JlYXRlUmVhZFN0cmVhbShjYWNoZWRSZXNQYXRoKS5waXBlKHJlcy5zb2NrZXQpO1xuICB9O1xuXG4gIGlmIChyZXNwb25zZSkge1xuICAgIGxvZy5pbmZvKGBUaGUgc2FtZSByZXF1ZXN0IHdpdGggdGhlIGlkZW1wb3RlbmN5IGtleSAnJHtrZXl9JyBoYXMgYmVlbiBhbHJlYWR5IHByb2Nlc3NlZGApO1xuICAgIGxvZy5pbmZvKGBSZXJvdXRpbmcgaXRzIHJlc3BvbnNlIHRvIHRoZSBjdXJyZW50IHJlcXVlc3RgKTtcbiAgICBhd2FpdCByZXJvdXRlQ2FjaGVkUmVzcG9uc2UocmVzcG9uc2UpO1xuICB9IGVsc2Uge1xuICAgIGxvZy5pbmZvKGBUaGUgc2FtZSByZXF1ZXN0IHdpdGggdGhlIGlkZW1wb3RlbmN5IGtleSAnJHtrZXl9JyBpcyBiZWluZyBwcm9jZXNzZWRgKTtcbiAgICBsb2cuaW5mbyhgV2FpdGluZyBmb3IgdGhlIHJlc3BvbnNlIHRvIGJlIHJlcm91dGVkIHRvIHRoZSBjdXJyZW50IHJlcXVlc3RgKTtcbiAgICByZXNwb25zZVN0YXRlTGlzdGVuZXIub25jZSgncmVhZHknLCBhc3luYyAoY2FjaGVkUmVzcG9uc2VQYXRoKSA9PiB7XG4gICAgICBpZiAoIWNhY2hlZFJlc3BvbnNlUGF0aCkge1xuICAgICAgICByZXR1cm4gbmV4dCgpO1xuICAgICAgfVxuICAgICAgYXdhaXQgcmVyb3V0ZUNhY2hlZFJlc3BvbnNlKGNhY2hlZFJlc3BvbnNlUGF0aCk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IHsgaGFuZGxlSWRlbXBvdGVuY3kgfTtcbiJdLCJmaWxlIjoibGliL2V4cHJlc3MvaWRlbXBvdGVuY3kuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
|
|
192
|
+
}
|
|
193
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9leHByZXNzL2lkZW1wb3RlbmN5LmpzIl0sIm5hbWVzIjpbIkNBQ0hFX1NJWkUiLCJJREVNUE9URU5UX1JFU1BPTlNFUyIsIkxSVSIsIm1heCIsInVwZGF0ZUFnZU9uR2V0IiwiZGlzcG9zZSIsImtleSIsInJlc3BvbnNlIiwiZnMiLCJyaW1yYWZTeW5jIiwiTU9OSVRPUkVEX01FVEhPRFMiLCJJREVNUE9URU5DWV9LRVlfSEVBREVSIiwicHJvY2VzcyIsIm9uIiwicmVzUGF0aHMiLCJ2YWx1ZXMiLCJtYXAiLCJmaWx0ZXIiLCJCb29sZWFuIiwicmVzUGF0aCIsImlnbiIsImNhY2hlUmVzcG9uc2UiLCJyZXEiLCJyZXMiLCJyZXNwb25zZVN0YXRlTGlzdGVuZXIiLCJFdmVudEVtaXR0ZXIiLCJzZXQiLCJtZXRob2QiLCJwYXRoIiwidG1wRmlsZSIsInJlc29sdmUiLCJvcyIsInRtcGRpciIsInV0aWwiLCJ1dWlkVjQiLCJyZXNwb25zZUxpc3RlbmVyIiwiY3JlYXRlV3JpdGVTdHJlYW0iLCJlbWl0Q2xvc2UiLCJvcmlnaW5hbFNvY2tldFdyaXRlciIsInNvY2tldCIsIndyaXRlIiwiYmluZCIsInBhdGNoZWRXcml0ZXIiLCJjaHVuayIsImVuY29kaW5nIiwibmV4dCIsIndyaXRhYmxlIiwid3JpdGVFcnJvciIsImlzUmVzcG9uc2VGdWxseVNlbnQiLCJvbmNlIiwiZSIsImVuZCIsImhhcyIsImxvZyIsImluZm8iLCJlbWl0IiwibWVzc2FnZSIsImRlbCIsImdldCIsImhhbmRsZUlkZW1wb3RlbmN5IiwiaGVhZGVycyIsImluY2x1ZGVzIiwiZGVidWciLCJzdG9yZWRNZXRob2QiLCJzdG9yZWRQYXRoIiwid2FybiIsInJlcm91dGVDYWNoZWRSZXNwb25zZSIsImNhY2hlZFJlc1BhdGgiLCJleGlzdHMiLCJjcmVhdGVSZWFkU3RyZWFtIiwicGlwZSIsImNhY2hlZFJlc3BvbnNlUGF0aCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFB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b250ZW50IjpbImltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IExSVSBmcm9tICdscnUtY2FjaGUnO1xuaW1wb3J0IHsgZnMsIHV0aWwgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IG9zIGZyb20gJ29zJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuXG5jb25zdCBDQUNIRV9TSVpFID0gMTAyNDtcbmNvbnN0IElERU1QT1RFTlRfUkVTUE9OU0VTID0gbmV3IExSVSh7XG4gIG1heDogQ0FDSEVfU0laRSxcbiAgdXBkYXRlQWdlT25HZXQ6IHRydWUsXG4gIGRpc3Bvc2UgKGtleSwge3Jlc3BvbnNlfSkge1xuICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgZnMucmltcmFmU3luYyhyZXNwb25zZSk7XG4gICAgfVxuICB9LFxufSk7XG5jb25zdCBNT05JVE9SRURfTUVUSE9EUyA9IFsnUE9TVCcsICdQQVRDSCddO1xuY29uc3QgSURFTVBPVEVOQ1lfS0VZX0hFQURFUiA9ICd4LWlkZW1wb3RlbmN5LWtleSc7XG5cbnByb2Nlc3Mub24oJ2V4aXQnLCAoKSA9PiB7XG4gIGNvbnN0IHJlc1BhdGhzID0gWy4uLklERU1QT1RFTlRfUkVTUE9OU0VTLnZhbHVlcygpXVxuICAgIC5tYXAoKHtyZXNwb25zZX0pID0+IHJlc3BvbnNlKVxuICAgIC5maWx0ZXIoQm9vbGVhbik7XG4gIGZvciAoY29uc3QgcmVzUGF0aCBvZiByZXNQYXRocykge1xuICAgIHRyeSB7XG4gICAgICAvLyBBc3luY2hyb25vdXMgY2FsbHMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gb25FeGl0IGhhbmRsZXJcbiAgICAgIGZzLnJpbXJhZlN5bmMocmVzUGF0aCk7XG4gICAgfSBjYXRjaCAoaWduKSB7fVxuICB9XG59KTtcblxuXG5mdW5jdGlvbiBjYWNoZVJlc3BvbnNlIChrZXksIHJlcSwgcmVzKSB7XG4gIGNvbnN0IHJlc3BvbnNlU3RhdGVMaXN0ZW5lciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgSURFTVBPVEVOVF9SRVNQT05TRVMuc2V0KGtleSwge1xuICAgIG1ldGhvZDogcmVxLm1ldGhvZCxcbiAgICBwYXRoOiByZXEucGF0aCxcbiAgICByZXNwb25zZTogbnVsbCxcbiAgICByZXNwb25zZVN0YXRlTGlzdGVuZXIsXG4gIH0pO1xuICBjb25zdCB0bXBGaWxlID0gcGF0aC5yZXNvbHZlKG9zLnRtcGRpcigpLCBgJHt1dGlsLnV1aWRWNCgpfS5yZXNwb25zZWApO1xuICBjb25zdCByZXNwb25zZUxpc3RlbmVyID0gZnMuY3JlYXRlV3JpdGVTdHJlYW0odG1wRmlsZSwge1xuICAgIGVtaXRDbG9zZTogdHJ1ZSxcbiAgfSk7XG4gIGNvbnN0IG9yaWdpbmFsU29ja2V0V3JpdGVyID0gcmVzLnNvY2tldC53cml0ZS5iaW5kKHJlcy5zb2NrZXQpO1xuICBjb25zdCBwYXRjaGVkV3JpdGVyID0gKGNodW5rLCBlbmNvZGluZywgbmV4dCkgPT4ge1xuICAgIGlmIChyZXNwb25zZUxpc3RlbmVyLndyaXRhYmxlKSB7XG4gICAgICByZXNwb25zZUxpc3RlbmVyLndyaXRlKGNodW5rKTtcbiAgICB9XG4gICAgcmV0dXJuIG9yaWdpbmFsU29ja2V0V3JpdGVyKGNodW5rLCBlbmNvZGluZywgbmV4dCk7XG4gIH07XG4gIHJlcy5zb2NrZXQud3JpdGUgPSBwYXRjaGVkV3JpdGVyO1xuICBsZXQgd3JpdGVFcnJvciA9IG51bGw7XG4gIGxldCBpc1Jlc3BvbnNlRnVsbHlTZW50ID0gZmFsc2U7XG4gIHJlc3BvbnNlTGlzdGVuZXIub25jZSgnZXJyb3InLCAoZSkgPT4ge1xuICAgIHdyaXRlRXJyb3IgPSBlO1xuICB9KTtcbiAgcmVzLm9uY2UoJ2ZpbmlzaCcsICgpID0+IHtcbiAgICBpc1Jlc3BvbnNlRnVsbHlTZW50ID0gdHJ1ZTtcbiAgICByZXNwb25zZUxpc3RlbmVyLmVuZCgpO1xuICB9KTtcbiAgcmVzLm9uY2UoJ2Nsb3NlJywgKCkgPT4ge1xuICAgIGlmICghaXNSZXNwb25zZUZ1bGx5U2VudCkge1xuICAgICAgcmVzcG9uc2VMaXN0ZW5lci5lbmQoKTtcbiAgICB9XG4gIH0pO1xuICByZXNwb25zZUxpc3RlbmVyLm9uY2UoJ2Nsb3NlJywgKCkgPT4ge1xuICAgIGlmIChyZXMuc29ja2V0Py53cml0ZSA9PT0gcGF0Y2hlZFdyaXRlcikge1xuICAgICAgcmVzLnNvY2tldC53cml0ZSA9IG9yaWdpbmFsU29ja2V0V3JpdGVyO1xuICAgIH1cblxuICAgIGlmICghSURFTVBPVEVOVF9SRVNQT05TRVMuaGFzKGtleSkpIHtcbiAgICAgIGxvZy5pbmZvKGBDb3VsZCBub3QgY2FjaGUgdGhlIHJlc3BvbnNlIGlkZW50aWZpZWQgYnkgJyR7a2V5fScuIGAgK1xuICAgICAgICBgQ2FjaGUgY29uc2lzdGVuY3kgaGFzIGJlZW4gZGFtYWdlZGApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlU3RhdGVMaXN0ZW5lci5lbWl0KCdyZWFkeScsIG51bGwpO1xuICAgIH1cbiAgICBpZiAod3JpdGVFcnJvcikge1xuICAgICAgbG9nLmluZm8oYENvdWxkIG5vdCBjYWNoZSB0aGUgcmVzcG9uc2UgaWRlbnRpZmllZCBieSAnJHtrZXl9JzogJHt3cml0ZUVycm9yLm1lc3NhZ2V9YCk7XG4gICAgICBJREVNUE9URU5UX1JFU1BPTlNFUy5kZWwoa2V5KTtcbiAgICAgIHJldHVybiByZXNwb25zZVN0YXRlTGlzdGVuZXIuZW1pdCgncmVhZHknLCBudWxsKTtcbiAgICB9XG4gICAgaWYgKCFpc1Jlc3BvbnNlRnVsbHlTZW50KSB7XG4gICAgICBsb2cuaW5mbyhgQ291bGQgbm90IGNhY2hlIHRoZSByZXNwb25zZSBpZGVudGlmaWVkIGJ5ICcke2tleX0nLCBgICtcbiAgICAgICAgYGJlY2F1c2UgaXQgaGFzIG5vdCBiZWVuIGNvbXBsZXRlZGApO1xuICAgICAgbG9nLmluZm8oJ0RvZXMgdGhlIGNsaWVudCB0ZXJtaW5hdGUgY29ubmVjdGlvbnMgdG9vIGVhcmx5PycpO1xuICAgICAgSURFTVBPVEVOVF9SRVNQT05TRVMuZGVsKGtleSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2VTdGF0ZUxpc3RlbmVyLmVtaXQoJ3JlYWR5JywgbnVsbCk7XG4gICAgfVxuXG4gICAgSURFTVBPVEVOVF9SRVNQT05TRVMuZ2V0KGtleSkucmVzcG9uc2UgPSB0bXBGaWxlO1xuICAgIHJlc3BvbnNlU3RhdGVMaXN0ZW5lci5lbWl0KCdyZWFkeScsIHRtcEZpbGUpO1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaGFuZGxlSWRlbXBvdGVuY3kgKHJlcSwgcmVzLCBuZXh0KSB7XG4gIGNvbnN0IGtleSA9IHJlcS5oZWFkZXJzW0lERU1QT1RFTkNZX0tFWV9IRUFERVJdO1xuICBpZiAoIWtleSkge1xuICAgIHJldHVybiBuZXh0KCk7XG4gIH1cbiAgaWYgKCFNT05JVE9SRURfTUVUSE9EUy5pbmNsdWRlcyhyZXEubWV0aG9kKSkge1xuICAgIC8vIEdFVCwgREVMRVRFLCBldGMuIHJlcXVlc3RzIGFyZSBpZGVtcG90ZW50IGJ5IGRlZmF1bHRcbiAgICAvLyB0aGVyZSBpcyBubyBuZWVkIHRvIGNhY2hlIHRoZW1cbiAgICByZXR1cm4gbmV4dCgpO1xuICB9XG5cbiAgbG9nLmRlYnVnKGBSZXF1ZXN0IGlkZW1wb3RlbmN5IGtleTogJHtrZXl9YCk7XG4gIGlmICghSURFTVBPVEVOVF9SRVNQT05TRVMuaGFzKGtleSkpIHtcbiAgICBjYWNoZVJlc3BvbnNlKGtleSwgcmVxLCByZXMpO1xuICAgIHJldHVybiBuZXh0KCk7XG4gIH1cblxuICBjb25zdCB7XG4gICAgbWV0aG9kOiBzdG9yZWRNZXRob2QsXG4gICAgcGF0aDogc3RvcmVkUGF0aCxcbiAgICByZXNwb25zZSxcbiAgICByZXNwb25zZVN0YXRlTGlzdGVuZXIsXG4gIH0gPSBJREVNUE9URU5UX1JFU1BPTlNFUy5nZXQoa2V5KTtcbiAgaWYgKHJlcS5tZXRob2QgIT09IHN0b3JlZE1ldGhvZCB8fCByZXEucGF0aCAhPT0gc3RvcmVkUGF0aCkge1xuICAgIGxvZy53YXJuKGBHb3QgdHdvIGRpZmZlcmVudCByZXF1ZXN0cyB3aXRoIHRoZSBzYW1lIGlkZW1wb3RlbmN5IGtleSAnJHtrZXl9J2ApO1xuICAgIGxvZy53YXJuKCdJcyB0aGUgY2xpZW50IGdlbmVyYXRpbmcgaWRlbXBvdGVuY3kga2V5cyBwcm9wZXJseT8nKTtcbiAgICByZXR1cm4gbmV4dCgpO1xuICB9XG5cbiAgY29uc3QgcmVyb3V0ZUNhY2hlZFJlc3BvbnNlID0gYXN5bmMgKGNhY2hlZFJlc1BhdGgpID0+IHtcbiAgICBpZiAoIWF3YWl0IGZzLmV4aXN0cyhjYWNoZWRSZXNQYXRoKSkge1xuICAgICAgSURFTVBPVEVOVF9SRVNQT05TRVMuZGVsKGtleSk7XG4gICAgICBsb2cud2FybihgQ291bGQgbm90IHJlYWQgdGhlIGNhY2hlZCByZXNwb25zZSBpZGVudGlmaWVkIGJ5IGtleSAnJHtrZXl9J2ApO1xuICAgICAgbG9nLndhcm4oJ1RoZSB0ZW1wb3Jhcnkgc3RvcmFnZSBpcyBub3QgYWNjZXNzaWJsZSBhbnltb3JlJyk7XG4gICAgICByZXR1cm4gbmV4dCgpO1xuICAgIH1cbiAgICBmcy5jcmVhdGVSZWFkU3RyZWFtKGNhY2hlZFJlc1BhdGgpLnBpcGUocmVzLnNvY2tldCk7XG4gIH07XG5cbiAgaWYgKHJlc3BvbnNlKSB7XG4gICAgbG9nLmluZm8oYFRoZSBzYW1lIHJlcXVlc3Qgd2l0aCB0aGUgaWRlbXBvdGVuY3kga2V5ICcke2tleX0nIGhhcyBiZWVuIGFscmVhZHkgcHJvY2Vzc2VkYCk7XG4gICAgbG9nLmluZm8oYFJlcm91dGluZyBpdHMgcmVzcG9uc2UgdG8gdGhlIGN1cnJlbnQgcmVxdWVzdGApO1xuICAgIGF3YWl0IHJlcm91dGVDYWNoZWRSZXNwb25zZShyZXNwb25zZSk7XG4gIH0gZWxzZSB7XG4gICAgbG9nLmluZm8oYFRoZSBzYW1lIHJlcXVlc3Qgd2l0aCB0aGUgaWRlbXBvdGVuY3kga2V5ICcke2tleX0nIGlzIGJlaW5nIHByb2Nlc3NlZGApO1xuICAgIGxvZy5pbmZvKGBXYWl0aW5nIGZvciB0aGUgcmVzcG9uc2UgdG8gYmUgcmVyb3V0ZWQgdG8gdGhlIGN1cnJlbnQgcmVxdWVzdGApO1xuICAgIHJlc3BvbnNlU3RhdGVMaXN0ZW5lci5vbmNlKCdyZWFkeScsIGFzeW5jIChjYWNoZWRSZXNwb25zZVBhdGgpID0+IHtcbiAgICAgIGlmICghY2FjaGVkUmVzcG9uc2VQYXRoKSB7XG4gICAgICAgIHJldHVybiBuZXh0KCk7XG4gICAgICB9XG4gICAgICBhd2FpdCByZXJvdXRlQ2FjaGVkUmVzcG9uc2UoY2FjaGVkUmVzcG9uc2VQYXRoKTtcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgeyBoYW5kbGVJZGVtcG90ZW5jeSB9O1xuIl19
|
|
@@ -12,7 +12,5 @@ var _support = require("@appium/support");
|
|
|
12
12
|
const log = _support.logger.getLogger('HTTP');
|
|
13
13
|
|
|
14
14
|
var _default = log;
|
|
15
|
-
exports.default = _default;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9leHByZXNzL2xvZ2dlci5qcyJdLCJuYW1lcyI6WyJsb2ciLCJsb2dnZXIiLCJnZXRMb2dnZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUVBLE1BQU1BLEdBQUcsR0FBR0MsZ0JBQU9DLFNBQVAsQ0FBaUIsTUFBakIsQ0FBWjs7ZUFDZUYsRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGxvZ2dlciB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5cbmNvbnN0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ0hUVFAnKTtcbmV4cG9ydCBkZWZhdWx0IGxvZztcbiJdLCJmaWxlIjoibGliL2V4cHJlc3MvbG9nZ2VyLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
|
|
15
|
+
exports.default = _default;
|
|
16
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9leHByZXNzL2xvZ2dlci5qcyJdLCJuYW1lcyI6WyJsb2ciLCJsb2dnZXIiLCJnZXRMb2dnZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUVBLE1BQU1BLEdBQUcsR0FBR0MsZ0JBQU9DLFNBQVAsQ0FBaUIsTUFBakIsQ0FBWjs7ZUFDZUYsRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGxvZ2dlciB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5cbmNvbnN0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ0hUVFAnKTtcbmV4cG9ydCBkZWZhdWx0IGxvZztcbiJdfQ==
|
|
@@ -122,7 +122,5 @@ function patchWithSessionId(req, body) {
|
|
|
122
122
|
}
|
|
123
123
|
|
|
124
124
|
return body;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9leHByZXNzL21pZGRsZXdhcmUuanMiXSwibmFtZXMiOlsiYWxsb3dDcm9zc0RvbWFpbiIsInJlcSIsInJlcyIsIm5leHQiLCJoZWFkZXIiLCJtZXRob2QiLCJzZW5kU3RhdHVzIiwiZXJyIiwibG9nIiwiZXJyb3IiLCJzdGFjayIsImFsbG93Q3Jvc3NEb21haW5Bc3luY0V4ZWN1dGUiLCJiYXNlUGF0aCIsInJlY2VpdmVBc3luY1Jlc3BvbnNlUmVnRXhwIiwiUmVnRXhwIiwiXyIsImVzY2FwZVJlZ0V4cCIsInRlc3QiLCJ1cmwiLCJmaXhQeXRob25Db250ZW50VHlwZSIsInBhdGgiLCJoZWFkZXJzIiwiZGVmYXVsdFRvSlNPTkNvbnRlbnRUeXBlIiwiY2F0Y2hBbGxIYW5kbGVyIiwiaGVhZGVyc1NlbnQiLCJtZXNzYWdlIiwiZXJyb3JzIiwiVW5rbm93bkVycm9yIiwic3RhdHVzIiwidzNjU3RhdHVzIiwianNvbiIsInBhdGNoV2l0aFNlc3Npb25JZCIsImNvZGUiLCJ2YWx1ZSIsInN0YWNrdHJhY2UiLCJjYXRjaDQwNEhhbmRsZXIiLCJkZWJ1ZyIsIlVua25vd25Db21tYW5kRXJyb3IiLCJTRVNTSU9OX0lEX1BBVFRFUk4iLCJib2R5IiwibWF0Y2giLCJleGVjIiwic2Vzc2lvbklkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsU0FBU0EsZ0JBQVQsQ0FBMkJDLEdBQTNCLEVBQWdDQyxHQUFoQyxFQUFxQ0MsSUFBckMsRUFBMkM7QUFDekMsTUFBSTtBQUNGRCxJQUFBQSxHQUFHLENBQUNFLE1BQUosQ0FBVyw2QkFBWCxFQUEwQyxHQUExQztBQUNBRixJQUFBQSxHQUFHLENBQUNFLE1BQUosQ0FBVyw4QkFBWCxFQUEyQyxpQ0FBM0M7QUFDQUYsSUFBQUEsR0FBRyxDQUFDRSxNQUFKLENBQVcsOEJBQVgsRUFBMkMsbUZBQTNDOztBQUdBLFFBQUksY0FBY0gsR0FBRyxDQUFDSSxN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VCxDQUEwQmxDLEdBQTFCLEVBQStCQyxHQUEvQixFQUFvQztBQUNsQ00sa0JBQUk0QixLQUFKLENBQVcsc0JBQXFCbkMsR0FBRyxDQUFDaUIsR0FBSSxFQUF4Qzs7QUFDQSxRQUFNVCxLQUFLLEdBQUdpQixpQkFBT1csbUJBQXJCO0FBQ0FuQyxFQUFBQSxHQUFHLENBQUMwQixNQUFKLENBQVduQixLQUFLLENBQUNvQixTQUFOLEVBQVgsRUFBOEJDLElBQTlCLENBQW1DQyxrQkFBa0IsQ0FBQzlCLEdBQUQsRUFBTTtBQUN6RDJCLElBQUFBLE1BQU0sRUFBRW5CLEtBQUssQ0FBQ3VCLElBQU4sRUFEaUQ7QUFFekRDLElBQUFBLEtBQUssRUFBRTtBQUNMeEIsTUFBQUEsS0FBSyxFQUFFQSxLQUFLLENBQUNBLEtBQU4sRUFERjtBQUVMZ0IsTUFBQUEsT0FBTyxFQUFFLGlFQUNQLG9FQURPLEdBRVAsVUFKRztBQUtMUyxNQUFBQSxVQUFVLEVBQUU7QUFMUDtBQUZrRCxHQUFOLENBQXJEO0FBVUQ7O0FBR0QsTUFBTUksa0JBQWtCLEdBQUcsb0JBQTNCOztBQUVBLFNBQVNQLGtCQUFULENBQTZCOUIsR0FBN0IsRUFBa0NzQyxJQUFsQyxFQUF3QztBQUN0QyxRQUFNQyxLQUFLLEdBQUdGLGtCQUFrQixDQUFDRyxJQUFuQixDQUF3QnhDLEdBQUcsQ0FBQ2lCLEdBQTVCLENBQWQ7O0FBQ0EsTUFBSXNCLEtBQUosRUFBVztBQUNURCxJQUFBQSxJQUFJLENBQUNHLFNBQUwsR0FBaUJGLEtBQUssQ0FBQyxDQUFELENBQXRCO0FBQ0Q7O0FBQ0QsU0FBT0QsSUFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnLi4vcHJvdG9jb2wnO1xuaW1wb3J0IHsgaGFuZGxlSWRlbXBvdGVuY3kgfSBmcm9tICcuL2lkZW1wb3RlbmN5JztcblxuZnVuY3Rpb24gYWxsb3dDcm9zc0RvbWFpbiAocmVxLCByZXMsIG5leHQpIHtcbiAgdHJ5IHtcbiAgICByZXMuaGVhZGVyKCdBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4nLCAnKicpO1xuICAgIHJlcy5oZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMnLCAnR0VULCBQT1NULCBQVVQsIE9QVElPTlMsIERFTEVURScpO1xuICAgIHJlcy5oZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMnLCAnQ2FjaGUtQ29udHJvbCwgUHJhZ21hLCBPcmlnaW4sIFgtUmVxdWVzdGVkLVdpdGgsIENvbnRlbnQtVHlwZSwgQWNjZXB0LCBVc2VyLUFnZW50Jyk7XG5cbiAgICAvLyBuZWVkIHRvIHJlc3BvbmQgMjAwIHRvIE9QVElPTlNcbiAgICBpZiAoJ09QVElPTlMnID09PSByZXEubWV0aG9kKSB7XG4gICAgICByZXR1cm4gcmVzLnNlbmRTdGF0dXMoMjAwKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZy5lcnJvcihgVW5leHBlY3RlZCBlcnJvcjogJHtlcnIuc3RhY2t9YCk7XG4gIH1cbiAgbmV4dCgpO1xufVxuXG5mdW5jdGlvbiBhbGxvd0Nyb3NzRG9tYWluQXN5bmNFeGVjdXRlIChiYXNlUGF0aCkge1xuICByZXR1cm4gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgLy8gdGhlcmUgYXJlIHR3byBwYXRocyBmb3IgYXN5bmMgcmVzcG9uc2VzLCBzbyBjb3ZlciBib3RoXG4gICAgLy8gaHR0cHM6Ly9yZWdleDEwMS5jb20vci90eFlpRXovMVxuICAgIGNvbnN0IHJlY2VpdmVBc3luY1Jlc3BvbnNlUmVnRXhwID0gbmV3IFJlZ0V4cChgJHtfLmVzY2FwZVJlZ0V4cChiYXNlUGF0aCl9L3Nlc3Npb24vW2EtZjAtOS1dKy8oYXBwaXVtLyk/cmVjZWl2ZV9hc3luY19yZXNwb25zZWApO1xuICAgIGlmICghcmVjZWl2ZUFzeW5jUmVzcG9uc2VSZWdFeHAudGVzdChyZXEudXJsKSkge1xuICAgICAgcmV0dXJuIG5leHQoKTtcbiAgICB9XG4gICAgYWxsb3dDcm9zc0RvbWFpbihyZXEsIHJlcywgbmV4dCk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGZpeFB5dGhvbkNvbnRlbnRUeXBlIChiYXNlUGF0aCkge1xuICByZXR1cm4gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgLy8gaGFjayBiZWNhdXNlIHB5dGhvbiBjbGllbnQgbGlicmFyeSBnaXZlcyB1cyB3cm9uZyBjb250ZW50LXR5cGVcbiAgICBpZiAobmV3IFJlZ0V4cChgXiR7Xy5lc2NhcGVSZWdFeHAoYmFzZVBhdGgpfWApLnRlc3QocmVxLnBhdGgpICYmIC9eUHl0aG9uLy50ZXN0KHJlcS5oZWFkZXJzWyd1c2VyLWFnZW50J10pKSB7XG4gICAgICBpZiAocmVxLmhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddID09PSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJykge1xuICAgICAgICByZXEuaGVhZGVyc1snY29udGVudC10eXBlJ10gPSAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOCc7XG4gICAgICB9XG4gICAgfVxuICAgIG5leHQoKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdFRvSlNPTkNvbnRlbnRUeXBlIChyZXEsIHJlcywgbmV4dCkge1xuICBpZiAoIXJlcS5oZWFkZXJzWydjb250ZW50LXR5cGUnXSkge1xuICAgIHJlcS5oZWFkZXJzWydjb250ZW50LXR5cGUnXSA9ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04JztcbiAgfVxuICBuZXh0KCk7XG59XG5cbmZ1bmN0aW9uIGNhdGNoQWxsSGFuZGxlciAoZXJyLCByZXEsIHJlcywgbmV4dCkge1xuICBpZiAocmVzLmhlYWRlcnNTZW50KSB7XG4gICAgcmV0dXJuIG5leHQoZXJyKTtcbiAgfVxuXG4gIGxvZy5lcnJvcihgVW5jYXVnaHQgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIGxvZy5lcnJvcignU2VuZGluZyBnZW5lcmljIGVycm9yIHJlc3BvbnNlJyk7XG4gIGNvbnN0IGVycm9yID0gZXJyb3JzLlVua25vd25FcnJvcjtcbiAgcmVzLnN0YXR1cyhlcnJvci53M2NTdGF0dXMoKSkuanNvbihwYXRjaFdpdGhTZXNzaW9uSWQocmVxLCB7XG4gICAgc3RhdHVzOiBlcnJvci5jb2RlKCksXG4gICAgdmFsdWU6IHtcbiAgICAgIGVycm9yOiBlcnJvci5lcnJvcigpLFxuICAgICAgbWVzc2FnZTogYEFuIHVua25vd24gc2VydmVyLXNpZGUgZXJyb3Igb2NjdXJyZWQgd2hpbGUgcHJvY2Vzc2luZyB0aGUgY29tbWFuZDogJHtlcnIubWVzc2FnZX1gLFxuICAgICAgc3RhY2t0cmFjZTogZXJyLnN0YWNrLFxuICAgIH1cbiAgfSkpO1xuICBsb2cuZXJyb3IoZXJyKTtcbn1cblxuZnVuY3Rpb24gY2F0Y2g0MDRIYW5kbGVyIChyZXEsIHJlcykge1xuICBsb2cuZGVidWcoYE5vIHJvdXRlIGZvdW5kIGZvciAke3JlcS51cmx9YCk7XG4gIGNvbnN0IGVycm9yID0gZXJyb3JzLlVua25vd25Db21tYW5kRXJyb3I7XG4gIHJlcy5zdGF0dXMoZXJyb3IudzNjU3RhdHVzKCkpLmpzb24ocGF0Y2hXaXRoU2Vzc2lvbklkKHJlcSwge1xuICAgIHN0YXR1czogZXJyb3IuY29kZSgpLFxuICAgIHZhbHVlOiB7XG4gICAgICBlcnJvcjogZXJyb3IuZXJyb3IoKSxcbiAgICAgIG1lc3NhZ2U6ICdUaGUgcmVxdWVzdGVkIHJlc291cmNlIGNvdWxkIG5vdCBiZSBmb3VuZCwgb3IgYSByZXF1ZXN0IHdhcyAnICtcbiAgICAgICAgJ3JlY2VpdmVkIHVzaW5nIGFuIEhUVFAgbWV0aG9kIHRoYXQgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgbWFwcGVkICcgK1xuICAgICAgICAncmVzb3VyY2UnLFxuICAgICAgc3RhY2t0cmFjZTogJycsXG4gICAgfVxuICB9KSk7XG59XG5cblxuY29uc3QgU0VTU0lPTl9JRF9QQVRURVJOID0gL1xcL3Nlc3Npb25cXC8oW14vXSspLztcblxuZnVuY3Rpb24gcGF0Y2hXaXRoU2Vzc2lvbklkIChyZXEsIGJvZHkpIHtcbiAgY29uc3QgbWF0Y2ggPSBTRVNTSU9OX0lEX1BBVFRFUk4uZXhlYyhyZXEudXJsKTtcbiAgaWYgKG1hdGNoKSB7XG4gICAgYm9keS5zZXNzaW9uSWQgPSBtYXRjaFsxXTtcbiAgfVxuICByZXR1cm4gYm9keTtcbn1cblxuZXhwb3J0IHtcbiAgYWxsb3dDcm9zc0RvbWFpbiwgZml4UHl0aG9uQ29udGVudFR5cGUsIGRlZmF1bHRUb0pTT05Db250ZW50VHlwZSxcbiAgY2F0Y2hBbGxIYW5kbGVyLCBhbGxvd0Nyb3NzRG9tYWluQXN5bmNFeGVjdXRlLCBoYW5kbGVJZGVtcG90ZW5jeSxcbiAgY2F0Y2g0MDRIYW5kbGVyLFxufTtcbiJdLCJmaWxlIjoibGliL2V4cHJlc3MvbWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9leHByZXNzL21pZGRsZXdhcmUuanMiXSwibmFtZXMiOlsiYWxsb3dDcm9zc0RvbWFpbiIsInJlcSIsInJlcyIsIm5leHQiLCJoZWFkZXIiLCJtZXRob2QiLCJzZW5kU3RhdHVzIiwiZXJyIiwibG9nIiwiZXJyb3IiLCJzdGFjayIsImFsbG93Q3Jvc3NEb21haW5Bc3luY0V4ZWN1dGUiLCJiYXNlUGF0aCIsInJlY2VpdmVBc3luY1Jlc3BvbnNlUmVnRXhwIiwiUmVnRXhwIiwiXyIsImVzY2FwZVJlZ0V4cCIsInRlc3QiLCJ1cmwiLCJmaXhQeXRob25Db250ZW50VHlwZSIsInBhdGgiLCJoZWFkZXJzIiwiZGVmYXVsdFRvSlNPTkNvbnRlbnRUeXBlIiwiY2F0Y2hBbGxIYW5kbGVyIiwiaGVhZGVyc1NlbnQiLCJtZXNzYWdlIiwiZXJyb3JzIiwiVW5rbm93bkVycm9yIiwic3RhdHVzIiwidzNjU3RhdHVzIiwianNvbiIsInBhdGNoV2l0aFNlc3Npb25JZCIsImNvZGUiLCJ2YWx1ZSIsInN0YWNrdHJhY2UiLCJjYXRjaDQwNEhhbmRsZXIiLCJkZWJ1ZyIsIlVua25vd25Db21tYW5kRXJyb3IiLCJTRVNTSU9OX0lEX1BBVFRFUk4iLCJib2R5IiwibWF0Y2giLCJleGVjIiwic2Vzc2lvbklkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsU0FBU0EsZ0JBQVQsQ0FBMkJDLEdBQTNCLEVBQWdDQyxHQUFoQyxFQUFxQ0MsSUFBckMsRUFBMkM7QUFDekMsTUFBSTtBQUNGRCxJQUFBQSxHQUFHLENBQUNFLE1BQUosQ0FBVyw2QkFBWCxFQUEwQyxHQUExQztBQUNBRixJQUFBQSxHQUFHLENBQUNFLE1BQUosQ0FBVyw4QkFBWCxFQUEyQyxpQ0FBM0M7QUFDQUYsSUFBQUEsR0FBRyxDQUFDRSxNQUFKLENBQVcsOEJBQVgsRUFBMkMsbUZBQTNDOztBQUdBLFFBQUksY0FBY0gsR0FBRyxDQUFDSSxNQUF0QixFQUE4QjtBQUM1QixhQUFPSCxHQUFHLENBQUNJLFVBQUosQ0FBZSxHQUFmLENBQVA7QUFDRDtBQUNGLEdBVEQsQ0FTRSxPQUFPQyxHQUFQLEVBQVk7QUFDWkMsb0JBQUlDLEtBQUosQ0FBVyxxQkFBb0JGLEdBQUcsQ0FBQ0csS0FBTSxFQUF6QztBQUNEOztBQUNEUCxFQUFBQSxJQUFJO0FBQ0w7O0FBRUQsU0FBU1EsNEJBQVQsQ0FBdUNDLFFBQXZDLEVBQWlEO0FBQy9DLFNBQU8sQ0FBQ1gsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFHekIsVUFBTVUsMEJBQTBCLEdBQUcsSUFBSUMsTUFBSixDQUFZLEdBQUVDLGdCQUFFQyxZQUFGLENBQWVKLFFBQWYsQ0FBeUIsc0RBQXZDLENBQW5DOztBQUNBLFFBQUksQ0FBQ0MsMEJBQTBCLENBQUNJLElBQTNCLENBQWdDaEIsR0FBRyxDQUFDaUIsR0FBcEMsQ0FBTCxFQUErQztBQUM3QyxhQUFPZixJQUFJLEVBQVg7QUFDRDs7QUFDREgsSUFBQUEsZ0JBQWdCLENBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLENBQWhCO0FBQ0QsR0FSRDtBQVNEOztBQUVELFNBQVNnQixvQkFBVCxDQUErQlAsUUFBL0IsRUFBeUM7QUFDdkMsU0FBTyxDQUFDWCxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUV6QixRQUFJLElBQUlXLE1BQUosQ0FBWSxJQUFHQyxnQkFBRUMsWUFBRixDQUFlSixRQUFmLENBQXlCLEVBQXhDLEVBQTJDSyxJQUEzQyxDQUFnRGhCLEdBQUcsQ0FBQ21CLElBQXBELEtBQTZELFVBQVVILElBQVYsQ0FBZWhCLEdBQUcsQ0FBQ29CLE9BQUosQ0FBWSxZQUFaLENBQWYsQ0FBakUsRUFBNEc7QUFDMUcsVUFBSXBCLEdBQUcsQ0FBQ29CLE9BQUosQ0FBWSxjQUFaLE1BQWdDLG1DQUFwQyxFQUF5RTtBQUN2RXBCLFFBQUFBLEdBQUcsQ0FBQ29CLE9BQUosQ0FBWSxjQUFaLElBQThCLGlDQUE5QjtBQUNEO0FBQ0Y7O0FBQ0RsQixJQUFBQSxJQUFJO0FBQ0wsR0FSRDtBQVNEOztBQUVELFNBQVNtQix3QkFBVCxDQUFtQ3JCLEdBQW5DLEVBQXdDQyxHQUF4QyxFQUE2Q0MsSUFBN0MsRUFBbUQ7QUFDakQsTUFBSSxDQUFDRixHQUFHLENBQUNvQixPQUFKLENBQVksY0FBWixDQUFMLEVBQWtDO0FBQ2hDcEIsSUFBQUEsR0FBRyxDQUFDb0IsT0FBSixDQUFZLGNBQVosSUFBOEIsaUNBQTlCO0FBQ0Q7O0FBQ0RsQixFQUFBQSxJQUFJO0FBQ0w7O0FBRUQsU0FBU29CLGVBQVQsQ0FBMEJoQixHQUExQixFQUErQk4sR0FBL0IsRUFBb0NDLEdBQXBDLEVBQXlDQyxJQUF6QyxFQUErQztBQUM3QyxNQUFJRCxHQUFHLENBQUNzQixXQUFSLEVBQXFCO0FBQ25CLFdBQU9yQixJQUFJLENBQUNJLEdBQUQsQ0FBWDtBQUNEOztBQUVEQyxrQkFBSUMsS0FBSixDQUFXLG1CQUFrQkYsR0FBRyxDQUFDa0IsT0FBUSxFQUF6Qzs7QUFDQWpCLGtCQUFJQyxLQUFKLENBQVUsZ0NBQVY7O0FBQ0EsUUFBTUEsS0FBSyxHQUFHaUIsaUJBQU9DLFlBQXJCO0FBQ0F6QixFQUFBQSxHQUFHLENBQUMwQixNQUFKLENBQVduQixLQUFLLENBQUNvQixTQUFOLEVBQVgsRUFBOEJDLElBQTlCLENBQW1DQyxrQkFBa0IsQ0FBQzlCLEdBQUQsRUFBTTtBQUN6RDJCLElBQUFBLE1BQU0sRUFBRW5CLEtBQUssQ0FBQ3VCLElBQU4sRUFEaUQ7QUFFekRDLElBQUFBLEtBQUssRUFBRTtBQUNMeEIsTUFBQUEsS0FBSyxFQUFFQSxLQUFLLENBQUNBLEtBQU4sRUFERjtBQUVMZ0IsTUFBQUEsT0FBTyxFQUFHLHVFQUFzRWxCLEdBQUcsQ0FBQ2tCLE9BQVEsRUFGdkY7QUFHTFMsTUFBQUEsVUFBVSxFQUFFM0IsR0FBRyxDQUFDRztBQUhYO0FBRmtELEdBQU4sQ0FBckQ7O0FBUUFGLGtCQUFJQyxLQUFKLENBQVVGLEdBQVY7QUFDRDs7QUFFRCxTQUFTNEIsZUFBVCxDQUEwQmxDLEdBQTFCLEVBQStCQyxHQUEvQixFQUFvQztBQUNsQ00sa0JBQUk0QixLQUFKLENBQVcsc0JBQXFCbkMsR0FBRyxDQUFDaUIsR0FBSSxFQUF4Qzs7QUFDQSxRQUFNVCxLQUFLLEdBQUdpQixpQkFBT1csbUJBQXJCO0FBQ0FuQyxFQUFBQSxHQUFHLENBQUMwQixNQUFKLENBQVduQixLQUFLLENBQUNvQixTQUFOLEVBQVgsRUFBOEJDLElBQTlCLENBQW1DQyxrQkFBa0IsQ0FBQzlCLEdBQUQsRUFBTTtBQUN6RDJCLElBQUFBLE1BQU0sRUFBRW5CLEtBQUssQ0FBQ3VCLElBQU4sRUFEaUQ7QUFFekRDLElBQUFBLEtBQUssRUFBRTtBQUNMeEIsTUFBQUEsS0FBSyxFQUFFQSxLQUFLLENBQUNBLEtBQU4sRUFERjtBQUVMZ0IsTUFBQUEsT0FBTyxFQUFFLGlFQUNQLG9FQURPLEdBRVAsVUFKRztBQUtMUyxNQUFBQSxVQUFVLEVBQUU7QUFMUDtBQUZrRCxHQUFOLENBQXJEO0FBVUQ7O0FBR0QsTUFBTUksa0JBQWtCLEdBQUcsb0JBQTNCOztBQUVBLFNBQVNQLGtCQUFULENBQTZCOUIsR0FBN0IsRUFBa0NzQyxJQUFsQyxFQUF3QztBQUN0QyxRQUFNQyxLQUFLLEdBQUdGLGtCQUFrQixDQUFDRyxJQUFuQixDQUF3QnhDLEdBQUcsQ0FBQ2lCLEdBQTVCLENBQWQ7O0FBQ0EsTUFBSXNCLEtBQUosRUFBVztBQUNURCxJQUFBQSxJQUFJLENBQUNHLFNBQUwsR0FBaUJGLEtBQUssQ0FBQyxDQUFELENBQXRCO0FBQ0Q7O0FBQ0QsU0FBT0QsSUFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnLi4vcHJvdG9jb2wnO1xuaW1wb3J0IHsgaGFuZGxlSWRlbXBvdGVuY3kgfSBmcm9tICcuL2lkZW1wb3RlbmN5JztcblxuZnVuY3Rpb24gYWxsb3dDcm9zc0RvbWFpbiAocmVxLCByZXMsIG5leHQpIHtcbiAgdHJ5IHtcbiAgICByZXMuaGVhZGVyKCdBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4nLCAnKicpO1xuICAgIHJlcy5oZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMnLCAnR0VULCBQT1NULCBQVVQsIE9QVElPTlMsIERFTEVURScpO1xuICAgIHJlcy5oZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMnLCAnQ2FjaGUtQ29udHJvbCwgUHJhZ21hLCBPcmlnaW4sIFgtUmVxdWVzdGVkLVdpdGgsIENvbnRlbnQtVHlwZSwgQWNjZXB0LCBVc2VyLUFnZW50Jyk7XG5cbiAgICAvLyBuZWVkIHRvIHJlc3BvbmQgMjAwIHRvIE9QVElPTlNcbiAgICBpZiAoJ09QVElPTlMnID09PSByZXEubWV0aG9kKSB7XG4gICAgICByZXR1cm4gcmVzLnNlbmRTdGF0dXMoMjAwKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZy5lcnJvcihgVW5leHBlY3RlZCBlcnJvcjogJHtlcnIuc3RhY2t9YCk7XG4gIH1cbiAgbmV4dCgpO1xufVxuXG5mdW5jdGlvbiBhbGxvd0Nyb3NzRG9tYWluQXN5bmNFeGVjdXRlIChiYXNlUGF0aCkge1xuICByZXR1cm4gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgLy8gdGhlcmUgYXJlIHR3byBwYXRocyBmb3IgYXN5bmMgcmVzcG9uc2VzLCBzbyBjb3ZlciBib3RoXG4gICAgLy8gaHR0cHM6Ly9yZWdleDEwMS5jb20vci90eFlpRXovMVxuICAgIGNvbnN0IHJlY2VpdmVBc3luY1Jlc3BvbnNlUmVnRXhwID0gbmV3IFJlZ0V4cChgJHtfLmVzY2FwZVJlZ0V4cChiYXNlUGF0aCl9L3Nlc3Npb24vW2EtZjAtOS1dKy8oYXBwaXVtLyk/cmVjZWl2ZV9hc3luY19yZXNwb25zZWApO1xuICAgIGlmICghcmVjZWl2ZUFzeW5jUmVzcG9uc2VSZWdFeHAudGVzdChyZXEudXJsKSkge1xuICAgICAgcmV0dXJuIG5leHQoKTtcbiAgICB9XG4gICAgYWxsb3dDcm9zc0RvbWFpbihyZXEsIHJlcywgbmV4dCk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGZpeFB5dGhvbkNvbnRlbnRUeXBlIChiYXNlUGF0aCkge1xuICByZXR1cm4gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgLy8gaGFjayBiZWNhdXNlIHB5dGhvbiBjbGllbnQgbGlicmFyeSBnaXZlcyB1cyB3cm9uZyBjb250ZW50LXR5cGVcbiAgICBpZiAobmV3IFJlZ0V4cChgXiR7Xy5lc2NhcGVSZWdFeHAoYmFzZVBhdGgpfWApLnRlc3QocmVxLnBhdGgpICYmIC9eUHl0aG9uLy50ZXN0KHJlcS5oZWFkZXJzWyd1c2VyLWFnZW50J10pKSB7XG4gICAgICBpZiAocmVxLmhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddID09PSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJykge1xuICAgICAgICByZXEuaGVhZGVyc1snY29udGVudC10eXBlJ10gPSAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOCc7XG4gICAgICB9XG4gICAgfVxuICAgIG5leHQoKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdFRvSlNPTkNvbnRlbnRUeXBlIChyZXEsIHJlcywgbmV4dCkge1xuICBpZiAoIXJlcS5oZWFkZXJzWydjb250ZW50LXR5cGUnXSkge1xuICAgIHJlcS5oZWFkZXJzWydjb250ZW50LXR5cGUnXSA9ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04JztcbiAgfVxuICBuZXh0KCk7XG59XG5cbmZ1bmN0aW9uIGNhdGNoQWxsSGFuZGxlciAoZXJyLCByZXEsIHJlcywgbmV4dCkge1xuICBpZiAocmVzLmhlYWRlcnNTZW50KSB7XG4gICAgcmV0dXJuIG5leHQoZXJyKTtcbiAgfVxuXG4gIGxvZy5lcnJvcihgVW5jYXVnaHQgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIGxvZy5lcnJvcignU2VuZGluZyBnZW5lcmljIGVycm9yIHJlc3BvbnNlJyk7XG4gIGNvbnN0IGVycm9yID0gZXJyb3JzLlVua25vd25FcnJvcjtcbiAgcmVzLnN0YXR1cyhlcnJvci53M2NTdGF0dXMoKSkuanNvbihwYXRjaFdpdGhTZXNzaW9uSWQocmVxLCB7XG4gICAgc3RhdHVzOiBlcnJvci5jb2RlKCksXG4gICAgdmFsdWU6IHtcbiAgICAgIGVycm9yOiBlcnJvci5lcnJvcigpLFxuICAgICAgbWVzc2FnZTogYEFuIHVua25vd24gc2VydmVyLXNpZGUgZXJyb3Igb2NjdXJyZWQgd2hpbGUgcHJvY2Vzc2luZyB0aGUgY29tbWFuZDogJHtlcnIubWVzc2FnZX1gLFxuICAgICAgc3RhY2t0cmFjZTogZXJyLnN0YWNrLFxuICAgIH1cbiAgfSkpO1xuICBsb2cuZXJyb3IoZXJyKTtcbn1cblxuZnVuY3Rpb24gY2F0Y2g0MDRIYW5kbGVyIChyZXEsIHJlcykge1xuICBsb2cuZGVidWcoYE5vIHJvdXRlIGZvdW5kIGZvciAke3JlcS51cmx9YCk7XG4gIGNvbnN0IGVycm9yID0gZXJyb3JzLlVua25vd25Db21tYW5kRXJyb3I7XG4gIHJlcy5zdGF0dXMoZXJyb3IudzNjU3RhdHVzKCkpLmpzb24ocGF0Y2hXaXRoU2Vzc2lvbklkKHJlcSwge1xuICAgIHN0YXR1czogZXJyb3IuY29kZSgpLFxuICAgIHZhbHVlOiB7XG4gICAgICBlcnJvcjogZXJyb3IuZXJyb3IoKSxcbiAgICAgIG1lc3NhZ2U6ICdUaGUgcmVxdWVzdGVkIHJlc291cmNlIGNvdWxkIG5vdCBiZSBmb3VuZCwgb3IgYSByZXF1ZXN0IHdhcyAnICtcbiAgICAgICAgJ3JlY2VpdmVkIHVzaW5nIGFuIEhUVFAgbWV0aG9kIHRoYXQgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgbWFwcGVkICcgK1xuICAgICAgICAncmVzb3VyY2UnLFxuICAgICAgc3RhY2t0cmFjZTogJycsXG4gICAgfVxuICB9KSk7XG59XG5cblxuY29uc3QgU0VTU0lPTl9JRF9QQVRURVJOID0gL1xcL3Nlc3Npb25cXC8oW14vXSspLztcblxuZnVuY3Rpb24gcGF0Y2hXaXRoU2Vzc2lvbklkIChyZXEsIGJvZHkpIHtcbiAgY29uc3QgbWF0Y2ggPSBTRVNTSU9OX0lEX1BBVFRFUk4uZXhlYyhyZXEudXJsKTtcbiAgaWYgKG1hdGNoKSB7XG4gICAgYm9keS5zZXNzaW9uSWQgPSBtYXRjaFsxXTtcbiAgfVxuICByZXR1cm4gYm9keTtcbn1cblxuZXhwb3J0IHtcbiAgYWxsb3dDcm9zc0RvbWFpbiwgZml4UHl0aG9uQ29udGVudFR5cGUsIGRlZmF1bHRUb0pTT05Db250ZW50VHlwZSxcbiAgY2F0Y2hBbGxIYW5kbGVyLCBhbGxvd0Nyb3NzRG9tYWluQXN5bmNFeGVjdXRlLCBoYW5kbGVJZGVtcG90ZW5jeSxcbiAgY2F0Y2g0MDRIYW5kbGVyLFxufTtcbiJdfQ==
|