webdriverio-automation
Version:
WebdriverIO-Automation android ios project
257 lines (206 loc) • 31.9 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = getRemoteCommand;
var _remoteDebugger = require("./remote-debugger");
var _lodash = _interopRequireDefault(require("lodash"));
function setConnectionKey(connId) {
return {
__argument: {
WIRConnectionIdentifierKey: connId
},
__selector: '_rpc_reportIdentifier:'
};
}
function connectToApp(connId, appIdKey) {
return {
__argument: {
WIRConnectionIdentifierKey: connId,
WIRApplicationIdentifierKey: appIdKey
},
__selector: '_rpc_forwardGetListing:'
};
}
function setSenderKey(connId, senderId, appIdKey, pageIdKey) {
return {
__argument: {
WIRApplicationIdentifierKey: appIdKey,
WIRConnectionIdentifierKey: connId,
WIRSenderKey: senderId,
WIRPageIdentifierKey: pageIdKey,
WIRAutomaticallyPause: false
},
__selector: '_rpc_forwardSocketSetup:'
};
}
function indicateWebView(connId, appIdKey, pageIdKey, enabled) {
return {
__argument: {
WIRApplicationIdentifierKey: appIdKey,
WIRIndicateEnabledKey: _lodash.default.isUndefined(enabled) ? true : enabled,
WIRConnectionIdentifierKey: connId,
WIRPageIdentifierKey: pageIdKey
},
__selector: '_rpc_forwardIndicateWebView:'
};
}
function sendJSCommand(connId, senderId, appIdKey, pageIdKey, debuggerType, js) {
return command('Runtime.evaluate', {
expression: js,
returnByValue: true
}, appIdKey, connId, senderId, pageIdKey, debuggerType);
}
function callJSFunction(connId, senderId, appIdKey, pageIdKey, debuggerType, objId, fn, args) {
return command('Runtime.callFunctionOn', {
objectId: objId,
functionDeclaration: fn,
arguments: args,
returnByValue: true
}, appIdKey, connId, senderId, pageIdKey, debuggerType);
}
function setUrl(connId, senderId, appIdKey, pageIdKey, debuggerType, url) {
return command('Page.navigate', {
url
}, appIdKey, connId, senderId, pageIdKey, debuggerType);
}
function enablePage(connId, senderId, appIdKey, pageIdKey, debuggerType) {
return command('Page.enable', {}, appIdKey, connId, senderId, pageIdKey, debuggerType);
}
function startTimeline(connId, senderId, appIdKey, pageIdKey, debuggerType) {
return command('Timeline.start', {}, appIdKey, connId, senderId, pageIdKey, debuggerType);
}
function stopTimeline(connId, senderId, appIdKey, pageIdKey, debuggerType) {
return command('Timeline.stop', {}, appIdKey, connId, senderId, pageIdKey, debuggerType);
}
function startConsole(connId, senderId, appIdKey, pageIdKey, debuggerType) {
return command('Console.enable', {}, appIdKey, connId, senderId, pageIdKey, debuggerType);
}
function stopConsole(connId, senderId, appIdKey, pageIdKey, debuggerType) {
return command('Console.disable', {}, appIdKey, connId, senderId, pageIdKey, debuggerType);
}
function startNetwork(connId, senderId, appIdKey, pageIdKey, debuggerType) {
return command('Network.enable', {}, appIdKey, connId, senderId, pageIdKey, debuggerType);
}
function stopNetwork(connId, senderId, appIdKey, pageIdKey, debuggerType) {
return command('Network.disable', {}, appIdKey, connId, senderId, pageIdKey, debuggerType);
}
function getCookies(connId, senderId, appIdKey, pageIdKey, debuggerType, urls) {
return command('Page.getCookies', {
urls
}, appIdKey, connId, senderId, pageIdKey, debuggerType);
}
function deleteCookie(connId, senderId, appIdKey, pageIdKey, debuggerType, cookieName, url) {
return command('Page.deleteCookie', {
cookieName,
url
}, appIdKey, connId, senderId, pageIdKey, debuggerType);
}
function garbageCollect(connId, senderId, appIdKey, pageIdKey, debuggerType) {
return command('Heap.gc', {}, appIdKey, connId, senderId, pageIdKey, debuggerType);
}
function command(method, params, appIdKey, connId, senderId, pageIdKey, debuggerType) {
if (debuggerType !== null && debuggerType === _remoteDebugger.DEBUGGER_TYPES.webkit) {
return commandWebKit(method, params);
} else {
return commandWebInspector(method, params, appIdKey, connId, senderId, pageIdKey);
}
}
function commandWebInspector(method, params, appIdKey, connId, senderId, pageIdKey) {
let plist = {
__argument: {
WIRApplicationIdentifierKey: appIdKey,
WIRSocketDataKey: {
method,
params: {
objectGroup: 'console',
includeCommandLineAPI: true,
doNotPauseOnExceptionsAndMuteConsole: true
}
},
WIRConnectionIdentifierKey: connId,
WIRSenderKey: senderId,
WIRPageIdentifierKey: pageIdKey
},
__selector: '_rpc_forwardSocketData:'
};
if (params) {
plist.__argument.WIRSocketDataKey.params = _lodash.default.extend(plist.__argument.WIRSocketDataKey.params, params);
}
return plist;
}
function commandWebKit(method, params) {
let jsonRequest = {
method,
params: {
objectGroup: 'console',
includeCommandLineAPI: true,
doNotPauseOnExceptionsAndMuteConsole: true
}
};
if (params) {
jsonRequest.params = _lodash.default.extend(jsonRequest.params, params);
}
return jsonRequest;
}
function getRemoteCommand(command, opts) {
let cmd;
switch (command) {
case 'setConnectionKey':
cmd = setConnectionKey(opts.connId);
break;
case 'connectToApp':
cmd = connectToApp(opts.connId, opts.appIdKey);
break;
case 'setSenderKey':
cmd = setSenderKey(opts.connId, opts.senderId, opts.appIdKey, opts.pageIdKey);
break;
case 'indicateWebView':
cmd = indicateWebView(opts.connId, opts.appIdKey, opts.pageIdKey, opts.enabled);
break;
case 'sendJSCommand':
cmd = sendJSCommand(opts.connId, opts.senderId, opts.appIdKey, opts.pageIdKey, opts.debuggerType, opts.command);
break;
case 'callJSFunction':
cmd = callJSFunction(opts.connId, opts.senderId, opts.appIdKey, opts.pageIdKey, opts.debuggerType, opts.objId, opts.fn, opts.args);
break;
case 'setUrl':
cmd = setUrl(opts.connId, opts.senderId, opts.appIdKey, opts.pageIdKey, opts.debuggerType, opts.url);
break;
case 'enablePage':
cmd = enablePage(opts.connId, opts.senderId, opts.appIdKey, opts.pageIdKey, opts.debuggerType);
break;
case 'startTimeline':
cmd = startTimeline(opts.connId, opts.senderId, opts.appIdKey, opts.pageIdKey, opts.debuggerType);
break;
case 'stopTimeline':
cmd = stopTimeline(opts.connId, opts.senderId, opts.appIdKey, opts.pageIdKey, opts.debuggerType);
break;
case 'startConsole':
cmd = startConsole(opts.connId, opts.senderId, opts.appIdKey, opts.pageIdKey, opts.debuggerType);
break;
case 'stopConsole':
cmd = stopConsole(opts.connId, opts.senderId, opts.appIdKey, opts.pageIdKey, opts.debuggerType);
break;
case 'startNetwork':
cmd = startNetwork(opts.connId, opts.senderId, opts.appIdKey, opts.pageIdKey, opts.debuggerType);
break;
case 'stopNetwork':
cmd = stopNetwork(opts.connId, opts.senderId, opts.appIdKey, opts.pageIdKey, opts.debuggerType);
break;
case 'getCookies':
cmd = getCookies(opts.connId, opts.senderId, opts.appIdKey, opts.pageIdKey, opts.debuggerType, opts.urls);
break;
case 'deleteCookie':
cmd = deleteCookie(opts.connId, opts.senderId, opts.appIdKey, opts.pageIdKey, opts.debuggerType, opts.cookieName, opts.url);
break;
case 'garbageCollect':
cmd = garbageCollect(opts.connId, opts.senderId, opts.appIdKey, opts.pageIdKey, opts.debuggerType);
break;
default:
throw new Error(`Unknown command: ${command}`);
}
return cmd;
}require('source-map-support').install();
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9yZW1vdGUtbWVzc2FnZXMuanMiXSwibmFtZXMiOlsic2V0Q29ubmVjdGlvbktleSIsImNvbm5JZCIsIl9fYXJndW1lbnQiLCJXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleSIsIl9fc2VsZWN0b3IiLCJjb25uZWN0VG9BcHAiLCJhcHBJZEtleSIsIldJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleSIsInNldFNlbmRlcktleSIsInNlbmRlcklkIiwicGFnZUlkS2V5IiwiV0lSU2VuZGVyS2V5IiwiV0lSUGFnZUlkZW50aWZpZXJLZXkiLCJXSVJBdXRvbWF0aWNhbGx5UGF1c2UiLCJpbmRpY2F0ZVdlYlZpZXciLCJlbmFibGVkIiwiV0lSSW5kaWNhdGVFbmFibGVkS2V5IiwiXyIsImlzVW5kZWZpbmVkIiwic2VuZEpTQ29tbWFuZCIsImRlYnVnZ2VyVHlwZSIsImpzIiwiY29tbWFuZCIsImV4cHJlc3Npb24iLCJyZXR1cm5CeVZhbHVlIiwiY2FsbEpTRnVuY3Rpb24iLCJvYmpJZCIsImZuIiwiYXJncyIsIm9iamVjdElkIiwiZnVuY3Rpb25EZWNsYXJhdGlvbiIsImFyZ3VtZW50cyIsInNldFVybCIsInVybCIsImVuYWJsZVBhZ2UiLCJzdGFydFRpbWVsaW5lIiwic3RvcFRpbWVsaW5lIiwic3RhcnRDb25zb2xlIiwic3RvcENvbnNvbGUiLCJzdGFydE5ldHdvcmsiLCJzdG9wTmV0d29yayIsImdldENvb2tpZXMiLCJ1cmxzIiwiZGVsZXRlQ29va2llIiwiY29va2llTmFtZSIsImdhcmJhZ2VDb2xsZWN0IiwibWV0aG9kIiwicGFyYW1zIiwiREVCVUdHRVJfVFlQRVMiLCJ3ZWJraXQiLCJjb21tYW5kV2ViS2l0IiwiY29tbWFuZFdlYkluc3BlY3RvciIsInBsaXN0IiwiV0lSU29ja2V0RGF0YUtleSIsIm9iamVjdEdyb3VwIiwiaW5jbHVkZUNvbW1hbmRMaW5lQVBJIiwiZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlIiwiZXh0ZW5k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RGhDLENBQWhCO0FBRUE7O0FBQ0YsU0FBSyxjQUFMO0FBQ0VtQixNQUFBQSxHQUFHLEdBQUdsQixZQUFZLENBQUNpQixJQUFJLENBQUMzRCxNQUFOLEVBQWMyRCxJQUFJLENBQUNuRCxRQUFuQixFQUE2Qm1ELElBQUksQ0FBQ3RELFFBQWxDLEVBQ1ZzRCxJQUFJLENBQUNsRCxTQURLLEVBQ01rRCxJQUFJLENBQUN4QyxZQURYLEVBQ3lCd0MsSUFBSSxDQUFDaEIsVUFEOUIsRUFDMENnQixJQUFJLENBQUMzQixHQUQvQyxDQUFsQjtBQUVBOztBQUNGLFNBQUssZ0JBQUw7QUFDRTRCLE1BQUFBLEdBQUcsR0FBR2hCLGNBQWMsQ0FBQ2UsSUFBSSxDQUFDM0QsTUFBTixFQUFjMkQsSUFBSSxDQUFDbkQsUUFBbkIsRUFBNkJtRCxJQUFJLENBQUN0RCxRQUFsQyxFQUNac0QsSUFBSSxDQUFDbEQsU0FETyxFQUNJa0QsSUFBSSxDQUFDeEMsWUFEVCxDQUFwQjtBQUVBOztBQUNGO0FBQ0UsWUFBTSxJQUFJMEMsS0FBSixDQUFXLG9CQUFtQnhDLE9BQVEsRUFBdEMsQ0FBTjtBQXJFSjs7QUF3RUEsU0FBT3VDLEdBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBERUJVR0dFUl9UWVBFUyB9IGZyb20gJy4vcmVtb3RlLWRlYnVnZ2VyJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbi8qXG4gKiBDb25uZWN0aW9uIGZ1bmN0aW9uc1xuICovXG5cbmZ1bmN0aW9uIHNldENvbm5lY3Rpb25LZXkgKGNvbm5JZCkge1xuICByZXR1cm4ge1xuICAgIF9fYXJndW1lbnQ6IHtcbiAgICAgIFdJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5OiBjb25uSWRcbiAgICB9LFxuICAgIF9fc2VsZWN0b3I6ICdfcnBjX3JlcG9ydElkZW50aWZpZXI6J1xuICB9O1xufVxuXG5mdW5jdGlvbiBjb25uZWN0VG9BcHAgKGNvbm5JZCwgYXBwSWRLZXkpIHtcbiAgcmV0dXJuIHtcbiAgICBfX2FyZ3VtZW50OiB7XG4gICAgICBXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleTogY29ubklkLFxuICAgICAgV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5OiBhcHBJZEtleVxuICAgIH0sXG4gICAgX19zZWxlY3RvcjogJ19ycGNfZm9yd2FyZEdldExpc3Rpbmc6J1xuICB9O1xufVxuXG5mdW5jdGlvbiBzZXRTZW5kZXJLZXkgKGNvbm5JZCwgc2VuZGVySWQsIGFwcElkS2V5LCBwYWdlSWRLZXkpIHtcbiAgcmV0dXJuIHtcbiAgICBfX2FyZ3VtZW50OiB7XG4gICAgICBXSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXk6IGFwcElkS2V5LFxuICAgICAgV0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXk6IGNvbm5JZCxcbiAgICAgIFdJUlNlbmRlcktleTogc2VuZGVySWQsXG4gICAgICBXSVJQYWdlSWRlbnRpZmllcktleTogcGFnZUlkS2V5LFxuICAgICAgV0lSQXV0b21hdGljYWxseVBhdXNlOiBmYWxzZVxuICAgIH0sXG4gICAgX19zZWxlY3RvcjogJ19ycGNfZm9yd2FyZFNvY2tldFNldHVwOidcbiAgfTtcbn1cblxuLypcbiAqIEFjdGlvbiBmdW5jdGlvbnNcbiAqL1xuXG5mdW5jdGlvbiBpbmRpY2F0ZVdlYlZpZXcgKGNvbm5JZCwgYXBwSWRLZXksIHBhZ2VJZEtleSwgZW5hYmxlZCkge1xuICByZXR1cm4ge1xuICAgIF9fYXJndW1lbnQ6IHtcbiAgICAgIFdJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleTogYXBwSWRLZXksXG4gICAgICBXSVJJbmRpY2F0ZUVuYWJsZWRLZXk6IF8uaXNVbmRlZmluZWQoZW5hYmxlZCkgPyB0cnVlIDogZW5hYmxlZCxcbiAgICAgIFdJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5OiBjb25uSWQsXG4gICAgICBXSVJQYWdlSWRlbnRpZmllcktleTogcGFnZUlkS2V5XG4gICAgfSxcbiAgICBfX3NlbGVjdG9yOiAnX3JwY19mb3J3YXJkSW5kaWNhdGVXZWJWaWV3OidcbiAgfTtcbn1cblxuZnVuY3Rpb24gc2VuZEpTQ29tbWFuZCAoY29ubklkLCBzZW5kZXJJZCwgYXBwSWRLZXksIHBhZ2VJZEtleSwgZGVidWdnZXJUeXBlLCBqcykge1xuICByZXR1cm4gY29tbWFuZCgnUnVudGltZS5ldmFsdWF0ZScsXG4gICAgICB7ZXhwcmVzc2lvbjoganMsIHJldHVybkJ5VmFsdWU6IHRydWV9LCBhcHBJZEtleSwgY29ubklkLCBzZW5kZXJJZCwgcGFnZUlkS2V5LCBkZWJ1Z2dlclR5cGUpO1xufVxuXG5mdW5jdGlvbiBjYWxsSlNGdW5jdGlvbiAoY29ubklkLCBzZW5kZXJJZCwgYXBwSWRLZXksIHBhZ2VJZEtleSwgZGVidWdnZXJUeXBlLCBvYmpJZCwgZm4sIGFyZ3MpIHtcbiAgcmV0dXJuIGNvbW1hbmQoJ1J1bnRpbWUuY2FsbEZ1bmN0aW9uT24nLFxuICAgICAge29iamVjdElkOiBvYmpJZCwgZnVuY3Rpb25EZWNsYXJhdGlvbjogZm4sIGFyZ3VtZW50czogYXJncywgcmV0dXJuQnlWYWx1ZTogdHJ1ZX0sXG4gICAgICBhcHBJZEtleSwgY29ubklkLCBzZW5kZXJJZCwgcGFnZUlkS2V5LCBkZWJ1Z2dlclR5cGUpO1xufVxuXG5mdW5jdGlvbiBzZXRVcmwgKGNvbm5JZCwgc2VuZGVySWQsIGFwcElkS2V5LCBwYWdlSWRLZXksIGRlYnVnZ2VyVHlwZSwgdXJsKSB7XG4gIHJldHVybiBjb21tYW5kKCdQYWdlLm5hdmlnYXRlJywge3VybH0sIGFwcElkS2V5LCBjb25uSWQsXG4gICAgICBzZW5kZXJJZCwgcGFnZUlkS2V5LCBkZWJ1Z2dlclR5cGUpO1xufVxuXG5mdW5jdGlvbiBlbmFibGVQYWdlIChjb25uSWQsIHNlbmRlcklkLCBhcHBJZEtleSwgcGFnZUlkS2V5LCBkZWJ1Z2dlclR5cGUpIHtcbiAgcmV0dXJuIGNvbW1hbmQoJ1BhZ2UuZW5hYmxlJywge30sIGFwcElkS2V5LCBjb25uSWQsIHNlbmRlcklkLFxuICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VJZEtleSwgZGVidWdnZXJUeXBlKTtcbn1cblxuZnVuY3Rpb24gc3RhcnRUaW1lbGluZSAoY29ubklkLCBzZW5kZXJJZCwgYXBwSWRLZXksIHBhZ2VJZEtleSwgZGVidWdnZXJUeXBlKSB7XG4gIHJldHVybiBjb21tYW5kKCdUaW1lbGluZS5zdGFydCcsIHt9LCBhcHBJZEtleSwgY29ubklkLCBzZW5kZXJJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlSWRLZXksIGRlYnVnZ2VyVHlwZSk7XG59XG5cbmZ1bmN0aW9uIHN0b3BUaW1lbGluZSAoY29ubklkLCBzZW5kZXJJZCwgYXBwSWRLZXksIHBhZ2VJZEtleSwgZGVidWdnZXJUeXBlKSB7XG4gIHJldHVybiBjb21tYW5kKCdUaW1lbGluZS5zdG9wJywge30sIGFwcElkS2V5LCBjb25uSWQsIHNlbmRlcklkLFxuICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VJZEtleSwgZGVidWdnZXJUeXBlKTtcbn1cblxuZnVuY3Rpb24gc3RhcnRDb25zb2xlIChjb25uSWQsIHNlbmRlcklkLCBhcHBJZEtleSwgcGFnZUlkS2V5LCBkZWJ1Z2dlclR5cGUpIHtcbiAgcmV0dXJuIGNvbW1hbmQoJ0NvbnNvbGUuZW5hYmxlJywge30sIGFwcElkS2V5LCBjb25uSWQsIHNlbmRlcklkLFxuICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VJZEtleSwgZGVidWdnZXJUeXBlKTtcbn1cblxuZnVuY3Rpb24gc3RvcENvbnNvbGUgKGNvbm5JZCwgc2VuZGVySWQsIGFwcElkS2V5LCBwYWdlSWRLZXksIGRlYnVnZ2VyVHlwZSkge1xuICByZXR1cm4gY29tbWFuZCgnQ29uc29sZS5kaXNhYmxlJywge30sIGFwcElkS2V5LCBjb25uSWQsIHNlbmRlcklkLFxuICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VJZEtleSwgZGVidWdnZXJUeXBlKTtcbn1cblxuZnVuY3Rpb24gc3RhcnROZXR3b3JrIChjb25uSWQsIHNlbmRlcklkLCBhcHBJZEtleSwgcGFnZUlkS2V5LCBkZWJ1Z2dlclR5cGUpIHtcbiAgcmV0dXJuIGNvbW1hbmQoJ05ldHdvcmsuZW5hYmxlJywge30sIGFwcElkS2V5LCBjb25uSWQsIHNlbmRlcklkLFxuICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VJZEtleSwgZGVidWdnZXJUeXBlKTtcbn1cblxuZnVuY3Rpb24gc3RvcE5ldHdvcmsgKGNvbm5JZCwgc2VuZGVySWQsIGFwcElkS2V5LCBwYWdlSWRLZXksIGRlYnVnZ2VyVHlwZSkge1xuICByZXR1cm4gY29tbWFuZCgnTmV0d29yay5kaXNhYmxlJywge30sIGFwcElkS2V5LCBjb25uSWQsIHNlbmRlcklkLFxuICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VJZEtleSwgZGVidWdnZXJUeXBlKTtcbn1cblxuZnVuY3Rpb24gZ2V0Q29va2llcyAoY29ubklkLCBzZW5kZXJJZCwgYXBwSWRLZXksIHBhZ2VJZEtleSwgZGVidWdnZXJUeXBlLCB1cmxzKSB7XG4gIHJldHVybiBjb21tYW5kKCdQYWdlLmdldENvb2tpZXMnLCB7dXJsc30sIGFwcElkS2V5LCBjb25uSWQsIHNlbmRlcklkLFxuICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VJZEtleSwgZGVidWdnZXJUeXBlKTtcbn1cblxuZnVuY3Rpb24gZGVsZXRlQ29va2llIChjb25uSWQsIHNlbmRlcklkLCBhcHBJZEtleSwgcGFnZUlkS2V5LCBkZWJ1Z2dlclR5cGUsIGNvb2tpZU5hbWUsIHVybCkge1xuICByZXR1cm4gY29tbWFuZCgnUGFnZS5kZWxldGVDb29raWUnLCB7Y29va2llTmFtZSwgdXJsfSwgYXBwSWRLZXksIGNvbm5JZCwgc2VuZGVySWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgcGFnZUlkS2V5LCBkZWJ1Z2dlclR5cGUpO1xufVxuXG5mdW5jdGlvbiBnYXJiYWdlQ29sbGVjdCAoY29ubklkLCBzZW5kZXJJZCwgYXBwSWRLZXksIHBhZ2VJZEtleSwgZGVidWdnZXJUeXBlKSB7XG4gIHJldHVybiBjb21tYW5kKCdIZWFwLmdjJywge30sIGFwcElkS2V5LCBjb25uSWQsIHNlbmRlcklkLFxuICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VJZEtleSwgZGVidWdnZXJUeXBlKTtcbn1cblxuXG4vKlxuICogSW50ZXJuYWwgZnVuY3Rpb25zXG4gKi9cblxuZnVuY3Rpb24gY29tbWFuZCAobWV0aG9kLCBwYXJhbXMsIGFwcElkS2V5LCBjb25uSWQsIHNlbmRlcklkLCBwYWdlSWRLZXksIGRlYnVnZ2VyVHlwZSkge1xuICBpZiAoZGVidWdnZXJUeXBlICE9PSBudWxsICYmIGRlYnVnZ2VyVHlwZSA9PT0gREVCVUdHRVJfVFlQRVMud2Via2l0KSB7XG4gICAgcmV0dXJuIGNvbW1hbmRXZWJLaXQobWV0aG9kLCBwYXJhbXMpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBjb21tYW5kV2ViSW5zcGVjdG9yKG1ldGhvZCwgcGFyYW1zLCBhcHBJZEtleSwgY29ubklkLCBzZW5kZXJJZCwgcGFnZUlkS2V5KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjb21tYW5kV2ViSW5zcGVjdG9yIChtZXRob2QsIHBhcmFtcywgYXBwSWRLZXksIGNvbm5JZCwgc2VuZGVySWQsIHBhZ2VJZEtleSkge1xuICBsZXQgcGxpc3QgPSB7XG4gICAgX19hcmd1bWVudDoge1xuICAgICAgV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5OiBhcHBJZEtleSxcbiAgICAgIFdJUlNvY2tldERhdGFLZXk6IHtcbiAgICAgICAgbWV0aG9kLFxuICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICBvYmplY3RHcm91cDogJ2NvbnNvbGUnLFxuICAgICAgICAgIGluY2x1ZGVDb21tYW5kTGluZUFQSTogdHJ1ZSxcbiAgICAgICAgICBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGU6IHRydWUsXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleTogY29ubklkLFxuICAgICAgV0lSU2VuZGVyS2V5OiBzZW5kZXJJZCxcbiAgICAgIFdJUlBhZ2VJZGVudGlmaWVyS2V5OiBwYWdlSWRLZXlcbiAgICB9LFxuICAgIF9fc2VsZWN0b3I6ICdfcnBjX2ZvcndhcmRTb2NrZXREYXRhOidcbiAgfTtcbiAgaWYgKHBhcmFtcykge1xuICAgIHBsaXN0Ll9fYXJndW1lbnQuV0lSU29ja2V0RGF0YUtleS5wYXJhbXMgPVxuICAgICAgXy5leHRlbmQocGxpc3QuX19hcmd1bWVudC5XSVJTb2NrZXREYXRhS2V5LnBhcmFtcywgcGFyYW1zKTtcbiAgfVxuICByZXR1cm4gcGxpc3Q7XG59XG5cbi8vZ2VuZXJhdGUgYSBqc29uIHJlcXVlc3QgdXNpbmcgdGhlIHdlYmtpdCBwcm90b2NvbFxuZnVuY3Rpb24gY29tbWFuZFdlYktpdCAobWV0aG9kLCBwYXJhbXMpIHtcbiAgbGV0IGpzb25SZXF1ZXN0ID0ge1xuICAgIG1ldGhvZCxcbiAgICBwYXJhbXM6IHtcbiAgICAgIG9iamVjdEdyb3VwOiAnY29uc29sZScsXG4gICAgICBpbmNsdWRlQ29tbWFuZExpbmVBUEk6IHRydWUsXG4gICAgICBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGU6IHRydWVcbiAgICB9XG4gIH07XG4gIGlmIChwYXJhbXMpIHtcbiAgICAvL2lmIHRoZXJlIGFueSBwYXJhbWV0ZXJzIGFkZCB0aGVtXG4gICAganNvblJlcXVlc3QucGFyYW1zID0gXy5leHRlbmQoanNvblJlcXVlc3QucGFyYW1zLCBwYXJhbXMpO1xuICB9XG4gIHJldHVybiBqc29uUmVxdWVzdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0UmVtb3RlQ29tbWFuZCAoY29tbWFuZCwgb3B0cykge1xuICBsZXQgY21kO1xuXG4gIHN3aXRjaCAoY29tbWFuZCkge1xuICAgIGNhc2UgJ3NldENvbm5lY3Rpb25LZXknOlxuICAgICAgY21kID0gc2V0Q29ubmVjdGlvbktleShvcHRzLmNvbm5JZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdjb25uZWN0VG9BcHAnOlxuICAgICAgY21kID0gY29ubmVjdFRvQXBwKG9wdHMuY29ubklkLCBvcHRzLmFwcElkS2V5KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3NldFNlbmRlcktleSc6XG4gICAgICBjbWQgPSBzZXRTZW5kZXJLZXkob3B0cy5jb25uSWQsIG9wdHMuc2VuZGVySWQsIG9wdHMuYXBwSWRLZXksXG4gICAgICAgICAgICAgIG9wdHMucGFnZUlkS2V5KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2luZGljYXRlV2ViVmlldyc6XG4gICAgICBjbWQgPSBpbmRpY2F0ZVdlYlZpZXcob3B0cy5jb25uSWQsIG9wdHMuYXBwSWRLZXksIG9wdHMucGFnZUlkS2V5LFxuICAgICAgICAgICAgICBvcHRzLmVuYWJsZWQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnc2VuZEpTQ29tbWFuZCc6XG4gICAgICBjbWQgPSBzZW5kSlNDb21tYW5kKG9wdHMuY29ubklkLCBvcHRzLnNlbmRlcklkLCBvcHRzLmFwcElkS2V5LFxuICAgICAgICAgICAgICBvcHRzLnBhZ2VJZEtleSwgb3B0cy5kZWJ1Z2dlclR5cGUsIG9wdHMuY29tbWFuZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdjYWxsSlNGdW5jdGlvbic6XG4gICAgICBjbWQgPSBjYWxsSlNGdW5jdGlvbihvcHRzLmNvbm5JZCwgb3B0cy5zZW5kZXJJZCwgb3B0cy5hcHBJZEtleSxcbiAgICAgICAgICAgICAgb3B0cy5wYWdlSWRLZXksIG9wdHMuZGVidWdnZXJUeXBlLCBvcHRzLm9iaklkLCBvcHRzLmZuLFxuICAgICAgICAgICAgICBvcHRzLmFyZ3MpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnc2V0VXJsJzpcbiAgICAgIGNtZCA9IHNldFVybChvcHRzLmNvbm5JZCwgb3B0cy5zZW5kZXJJZCwgb3B0cy5hcHBJZEtleSwgb3B0cy5wYWdlSWRLZXksXG4gICAgICAgICAgICAgIG9wdHMuZGVidWdnZXJUeXBlLCBvcHRzLnVybCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdlbmFibGVQYWdlJzpcbiAgICAgIGNtZCA9IGVuYWJsZVBhZ2Uob3B0cy5jb25uSWQsIG9wdHMuc2VuZGVySWQsIG9wdHMuYXBwSWRLZXksXG4gICAgICAgICAgICAgIG9wdHMucGFnZUlkS2V5LCBvcHRzLmRlYnVnZ2VyVHlwZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdzdGFydFRpbWVsaW5lJzpcbiAgICAgIGNtZCA9IHN0YXJ0VGltZWxpbmUob3B0cy5jb25uSWQsIG9wdHMuc2VuZGVySWQsIG9wdHMuYXBwSWRLZXksXG4gICAgICAgICAgICAgIG9wdHMucGFnZUlkS2V5LCBvcHRzLmRlYnVnZ2VyVHlwZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdzdG9wVGltZWxpbmUnOlxuICAgICAgY21kID0gc3RvcFRpbWVsaW5lKG9wdHMuY29ubklkLCBvcHRzLnNlbmRlcklkLCBvcHRzLmFwcElkS2V5LFxuICAgICAgICAgICAgICBvcHRzLnBhZ2VJZEtleSwgb3B0cy5kZWJ1Z2dlclR5cGUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnc3RhcnRDb25zb2xlJzpcbiAgICAgIGNtZCA9IHN0YXJ0Q29uc29sZShvcHRzLmNvbm5JZCwgb3B0cy5zZW5kZXJJZCwgb3B0cy5hcHBJZEtleSxcbiAgICAgICAgICAgICAgb3B0cy5wYWdlSWRLZXksIG9wdHMuZGVidWdnZXJUeXBlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3N0b3BDb25zb2xlJzpcbiAgICAgIGNtZCA9IHN0b3BDb25zb2xlKG9wdHMuY29ubklkLCBvcHRzLnNlbmRlcklkLCBvcHRzLmFwcElkS2V5LFxuICAgICAgICAgICAgICBvcHRzLnBhZ2VJZEtleSwgb3B0cy5kZWJ1Z2dlclR5cGUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnc3RhcnROZXR3b3JrJzpcbiAgICAgIGNtZCA9IHN0YXJ0TmV0d29yayhvcHRzLmNvbm5JZCwgb3B0cy5zZW5kZXJJZCwgb3B0cy5hcHBJZEtleSxcbiAgICAgICAgICAgICAgb3B0cy5wYWdlSWRLZXksIG9wdHMuZGVidWdnZXJUeXBlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3N0b3BOZXR3b3JrJzpcbiAgICAgIGNtZCA9IHN0b3BOZXR3b3JrKG9wdHMuY29ubklkLCBvcHRzLnNlbmRlcklkLCBvcHRzLmFwcElkS2V5LFxuICAgICAgICAgICAgICBvcHRzLnBhZ2VJZEtleSwgb3B0cy5kZWJ1Z2dlclR5cGUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZ2V0Q29va2llcyc6XG4gICAgICBjbWQgPSBnZXRDb29raWVzKG9wdHMuY29ubklkLCBvcHRzLnNlbmRlcklkLCBvcHRzLmFwcElkS2V5LFxuICAgICAgICAgICAgICBvcHRzLnBhZ2VJZEtleSwgb3B0cy5kZWJ1Z2dlclR5cGUsIG9wdHMudXJscyk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdkZWxldGVDb29raWUnOlxuICAgICAgY21kID0gZGVsZXRlQ29va2llKG9wdHMuY29ubklkLCBvcHRzLnNlbmRlcklkLCBvcHRzLmFwcElkS2V5LFxuICAgICAgICAgICAgICBvcHRzLnBhZ2VJZEtleSwgb3B0cy5kZWJ1Z2dlclR5cGUsIG9wdHMuY29va2llTmFtZSwgb3B0cy51cmwpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZ2FyYmFnZUNvbGxlY3QnOlxuICAgICAgY21kID0gZ2FyYmFnZUNvbGxlY3Qob3B0cy5jb25uSWQsIG9wdHMuc2VuZGVySWQsIG9wdHMuYXBwSWRLZXksXG4gICAgICAgICAgICAgIG9wdHMucGFnZUlkS2V5LCBvcHRzLmRlYnVnZ2VyVHlwZSk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGNvbW1hbmQ6ICR7Y29tbWFuZH1gKTtcbiAgfVxuXG4gIHJldHVybiBjbWQ7XG59XG4iXSwiZmlsZSI6ImxpYi9yZW1vdGUtbWVzc2FnZXMuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==