oxygen-cli 1.22.0 → 1.99.0-alpha.0
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/CHANGELOG.md +0 -50
- package/build/core/OxygenCore.js +56 -145
- package/build/errors/OxygenError.js +5 -15
- package/build/errors/helper.js +45 -49
- package/build/index.js +14 -6
- package/build/lib/cli-util.js +19 -19
- package/build/lib/cli.js +4 -2
- package/build/lib/parallel-launcher.js +333 -0
- package/build/lib/param-manager.js +66 -47
- package/build/lib/util.js +38 -9
- package/build/ox_modules/index.js +1 -97
- package/build/ox_modules/module-assert.js +19 -9
- package/build/ox_modules/module-dns.js +220 -0
- package/build/ox_modules/module-http.js +39 -51
- package/build/ox_modules/module-shell.js +19 -75
- package/build/ox_modules/module-utils.js +1 -108
- package/build/ox_modules/utils.js +1 -357
- package/build/reporter/FileReporterBase.js +5 -5
- package/build/reporter/ReportAggregator.js +127 -4
- package/build/runners/WorkerProcess.js +15 -28
- package/build/runners/index.js +2 -6
- package/build/runners/oxygen/OxygenWorker.js +8 -8
- package/build/runners/oxygen/index.js +17 -18
- package/build/runners/oxygen/worker.js +10 -8
- package/package.json +12 -46
- package/build/lib/img-merge.js +0 -163
- package/build/ox_modules/module-db.js +0 -146
- package/build/ox_modules/module-email.js +0 -212
- package/build/ox_modules/module-eyes.js +0 -189
- package/build/ox_modules/module-mailinator.js +0 -207
- package/build/ox_modules/module-mob/commands/alertAccept.js +0 -35
- package/build/ox_modules/module-mob/commands/alertDismiss.js +0 -35
- package/build/ox_modules/module-mob/commands/assertAlert.js +0 -56
- package/build/ox_modules/module-mob/commands/assertText.js +0 -45
- package/build/ox_modules/module-mob/commands/assertTitle.js +0 -43
- package/build/ox_modules/module-mob/commands/assertValue.js +0 -66
- package/build/ox_modules/module-mob/commands/back.js +0 -27
- package/build/ox_modules/module-mob/commands/clear.js +0 -40
- package/build/ox_modules/module-mob/commands/click.js +0 -35
- package/build/ox_modules/module-mob/commands/clickHidden.js +0 -52
- package/build/ox_modules/module-mob/commands/clickLong.js +0 -34
- package/build/ox_modules/module-mob/commands/clickMultipleTimes.js +0 -37
- package/build/ox_modules/module-mob/commands/closeApp.js +0 -27
- package/build/ox_modules/module-mob/commands/debug.js +0 -26
- package/build/ox_modules/module-mob/commands/dragAndDrop.js +0 -38
- package/build/ox_modules/module-mob/commands/enableNetwork.js +0 -75
- package/build/ox_modules/module-mob/commands/execute.js +0 -32
- package/build/ox_modules/module-mob/commands/findElement.js +0 -36
- package/build/ox_modules/module-mob/commands/findElements.js +0 -39
- package/build/ox_modules/module-mob/commands/getAlertText.js +0 -31
- package/build/ox_modules/module-mob/commands/getAppiumLogs.js +0 -26
- package/build/ox_modules/module-mob/commands/getBrowserLogs.js +0 -66
- package/build/ox_modules/module-mob/commands/getCurrentActivity.js +0 -26
- package/build/ox_modules/module-mob/commands/getCurrentPackage.js +0 -26
- package/build/ox_modules/module-mob/commands/getDeviceLogs.js +0 -57
- package/build/ox_modules/module-mob/commands/getDeviceTime.js +0 -27
- package/build/ox_modules/module-mob/commands/getLocation.js +0 -32
- package/build/ox_modules/module-mob/commands/getSource.js +0 -26
- package/build/ox_modules/module-mob/commands/getText.js +0 -36
- package/build/ox_modules/module-mob/commands/getTitle.js +0 -24
- package/build/ox_modules/module-mob/commands/getUrl.js +0 -28
- package/build/ox_modules/module-mob/commands/getValue.js +0 -50
- package/build/ox_modules/module-mob/commands/getWindowHandles.js +0 -27
- package/build/ox_modules/module-mob/commands/hideKeyboard.js +0 -33
- package/build/ox_modules/module-mob/commands/index.js +0 -594
- package/build/ox_modules/module-mob/commands/installApp.js +0 -28
- package/build/ox_modules/module-mob/commands/isAppInstalled.js +0 -28
- package/build/ox_modules/module-mob/commands/isCheckable.js +0 -31
- package/build/ox_modules/module-mob/commands/isChecked.js +0 -31
- package/build/ox_modules/module-mob/commands/isClickable.js +0 -31
- package/build/ox_modules/module-mob/commands/isExist.js +0 -36
- package/build/ox_modules/module-mob/commands/isSelected.js +0 -36
- package/build/ox_modules/module-mob/commands/isVisible.js +0 -36
- package/build/ox_modules/module-mob/commands/isWebViewContext.js +0 -27
- package/build/ox_modules/module-mob/commands/launchApp.js +0 -26
- package/build/ox_modules/module-mob/commands/longPressKeyCode.js +0 -30
- package/build/ox_modules/module-mob/commands/open.js +0 -43
- package/build/ox_modules/module-mob/commands/pause.js +0 -27
- package/build/ox_modules/module-mob/commands/removeApp.js +0 -28
- package/build/ox_modules/module-mob/commands/resetApp.js +0 -26
- package/build/ox_modules/module-mob/commands/scrollIntoElement.js +0 -86
- package/build/ox_modules/module-mob/commands/scrollIntoView.js +0 -40
- package/build/ox_modules/module-mob/commands/select.js +0 -54
- package/build/ox_modules/module-mob/commands/selectFrame.js +0 -53
- package/build/ox_modules/module-mob/commands/selectWindow.js +0 -149
- package/build/ox_modules/module-mob/commands/sendKeys.js +0 -84
- package/build/ox_modules/module-mob/commands/setContext.js +0 -28
- package/build/ox_modules/module-mob/commands/setNativeContext.js +0 -26
- package/build/ox_modules/module-mob/commands/setTimeout.js +0 -33
- package/build/ox_modules/module-mob/commands/setWebViewContext.js +0 -39
- package/build/ox_modules/module-mob/commands/shake.js +0 -27
- package/build/ox_modules/module-mob/commands/smsClickLink.js +0 -32
- package/build/ox_modules/module-mob/commands/smsGetText.js +0 -45
- package/build/ox_modules/module-mob/commands/swipe.js +0 -58
- package/build/ox_modules/module-mob/commands/swipeElement.js +0 -58
- package/build/ox_modules/module-mob/commands/swipeScreen.js +0 -56
- package/build/ox_modules/module-mob/commands/takeScreenshot.js +0 -27
- package/build/ox_modules/module-mob/commands/tap.js +0 -34
- package/build/ox_modules/module-mob/commands/type.js +0 -67
- package/build/ox_modules/module-mob/commands/unlockPattern.js +0 -92
- package/build/ox_modules/module-mob/commands/waitForExist.js +0 -29
- package/build/ox_modules/module-mob/commands/waitForInteractable.js +0 -42
- package/build/ox_modules/module-mob/commands/waitForVisible.js +0 -28
- package/build/ox_modules/module-mob.js +0 -699
- package/build/ox_modules/module-pdf.js +0 -328
- package/build/ox_modules/module-proxy.js +0 -324
- package/build/ox_modules/module-serial.js +0 -187
- package/build/ox_modules/module-soap.js +0 -260
- package/build/ox_modules/module-twilio.js +0 -192
- package/build/ox_modules/module-web/commands/alertAccept.js +0 -35
- package/build/ox_modules/module-web/commands/alertDismiss.js +0 -35
- package/build/ox_modules/module-web/commands/assertAlert.js +0 -55
- package/build/ox_modules/module-web/commands/assertExist.js +0 -28
- package/build/ox_modules/module-web/commands/assertSelectedLabel.js +0 -51
- package/build/ox_modules/module-web/commands/assertSelectedValue.js +0 -45
- package/build/ox_modules/module-web/commands/assertText.js +0 -45
- package/build/ox_modules/module-web/commands/assertTextNotPresent.js +0 -56
- package/build/ox_modules/module-web/commands/assertTextPresent.js +0 -52
- package/build/ox_modules/module-web/commands/assertTitle.js +0 -42
- package/build/ox_modules/module-web/commands/assertValue.js +0 -44
- package/build/ox_modules/module-web/commands/back.js +0 -27
- package/build/ox_modules/module-web/commands/clear.js +0 -41
- package/build/ox_modules/module-web/commands/click.js +0 -112
- package/build/ox_modules/module-web/commands/clickHidden.js +0 -79
- package/build/ox_modules/module-web/commands/closeWindow.js +0 -25
- package/build/ox_modules/module-web/commands/debug.js +0 -25
- package/build/ox_modules/module-web/commands/deleteCookies.js +0 -22
- package/build/ox_modules/module-web/commands/deselect.js +0 -34
- package/build/ox_modules/module-web/commands/doubleClick.js +0 -65
- package/build/ox_modules/module-web/commands/dragAndDrop.js +0 -36
- package/build/ox_modules/module-web/commands/execute.js +0 -36
- package/build/ox_modules/module-web/commands/fileBrowse.js +0 -72
- package/build/ox_modules/module-web/commands/findElement.js +0 -35
- package/build/ox_modules/module-web/commands/findElements.js +0 -38
- package/build/ox_modules/module-web/commands/fullscreenWindow.js +0 -24
- package/build/ox_modules/module-web/commands/getAlertText.js +0 -30
- package/build/ox_modules/module-web/commands/getAttribute.js +0 -38
- package/build/ox_modules/module-web/commands/getBrowserLogs.js +0 -34
- package/build/ox_modules/module-web/commands/getCookies.js +0 -23
- package/build/ox_modules/module-web/commands/getCssValue.js +0 -38
- package/build/ox_modules/module-web/commands/getElementCount.js +0 -29
- package/build/ox_modules/module-web/commands/getHTML.js +0 -30
- package/build/ox_modules/module-web/commands/getSource.js +0 -26
- package/build/ox_modules/module-web/commands/getText.js +0 -36
- package/build/ox_modules/module-web/commands/getTitle.js +0 -22
- package/build/ox_modules/module-web/commands/getUrl.js +0 -26
- package/build/ox_modules/module-web/commands/getValue.js +0 -43
- package/build/ox_modules/module-web/commands/getWindowHandles.js +0 -26
- package/build/ox_modules/module-web/commands/getWindowSize.js +0 -26
- package/build/ox_modules/module-web/commands/getXMLPageSource.js +0 -51
- package/build/ox_modules/module-web/commands/index.js +0 -634
- package/build/ox_modules/module-web/commands/isAlertPresent.js +0 -31
- package/build/ox_modules/module-web/commands/isChecked.js +0 -30
- package/build/ox_modules/module-web/commands/isExist.js +0 -36
- package/build/ox_modules/module-web/commands/isSelected.js +0 -35
- package/build/ox_modules/module-web/commands/isVisible.js +0 -36
- package/build/ox_modules/module-web/commands/makeVisible.js +0 -74
- package/build/ox_modules/module-web/commands/maximizeWindow.js +0 -24
- package/build/ox_modules/module-web/commands/minimizeWindow.js +0 -24
- package/build/ox_modules/module-web/commands/newWindow.js +0 -27
- package/build/ox_modules/module-web/commands/open.js +0 -42
- package/build/ox_modules/module-web/commands/pause.js +0 -26
- package/build/ox_modules/module-web/commands/point.js +0 -37
- package/build/ox_modules/module-web/commands/pointJS.js +0 -56
- package/build/ox_modules/module-web/commands/refresh.js +0 -26
- package/build/ox_modules/module-web/commands/rightClick.js +0 -61
- package/build/ox_modules/module-web/commands/rightClickActions.js +0 -57
- package/build/ox_modules/module-web/commands/scrollToElement.js +0 -33
- package/build/ox_modules/module-web/commands/select.js +0 -55
- package/build/ox_modules/module-web/commands/selectFrame.js +0 -52
- package/build/ox_modules/module-web/commands/selectWindow.js +0 -148
- package/build/ox_modules/module-web/commands/sendKeys.js +0 -56
- package/build/ox_modules/module-web/commands/setAutoWaitForAngular.js +0 -33
- package/build/ox_modules/module-web/commands/setTimeout.js +0 -33
- package/build/ox_modules/module-web/commands/setWindowSize.js +0 -29
- package/build/ox_modules/module-web/commands/takeScreenshot.js +0 -37
- package/build/ox_modules/module-web/commands/type.js +0 -52
- package/build/ox_modules/module-web/commands/waitForAngular.js +0 -83
- package/build/ox_modules/module-web/commands/waitForExist.js +0 -28
- package/build/ox_modules/module-web/commands/waitForInteractable.js +0 -31
- package/build/ox_modules/module-web/commands/waitForNotExist.js +0 -57
- package/build/ox_modules/module-web/commands/waitForNotText.js +0 -45
- package/build/ox_modules/module-web/commands/waitForNotValue.js +0 -45
- package/build/ox_modules/module-web/commands/waitForText.js +0 -45
- package/build/ox_modules/module-web/commands/waitForValue.js +0 -45
- package/build/ox_modules/module-web/commands/waitForVisible.js +0 -28
- package/build/ox_modules/module-web/commands/waitForWindow.js +0 -118
- package/build/ox_modules/module-web.js +0 -909
- package/build/ox_modules/module-win/commands/assertText.js +0 -41
- package/build/ox_modules/module-win/commands/assertTitle.js +0 -38
- package/build/ox_modules/module-win/commands/assertValue.js +0 -62
- package/build/ox_modules/module-win/commands/back.js +0 -21
- package/build/ox_modules/module-win/commands/clear.js +0 -34
- package/build/ox_modules/module-win/commands/click.js +0 -25
- package/build/ox_modules/module-win/commands/clickLong.js +0 -30
- package/build/ox_modules/module-win/commands/clickMultipleTimes.js +0 -33
- package/build/ox_modules/module-win/commands/findElement.js +0 -31
- package/build/ox_modules/module-win/commands/findElements.js +0 -31
- package/build/ox_modules/module-win/commands/getAppiumLogs.js +0 -22
- package/build/ox_modules/module-win/commands/getCurrentWindowHandle.js +0 -25
- package/build/ox_modules/module-win/commands/getLocation.js +0 -26
- package/build/ox_modules/module-win/commands/getSource.js +0 -22
- package/build/ox_modules/module-win/commands/getText.js +0 -32
- package/build/ox_modules/module-win/commands/getValue.js +0 -46
- package/build/ox_modules/module-win/commands/getWindowHandles.js +0 -25
- package/build/ox_modules/module-win/commands/index.js +0 -298
- package/build/ox_modules/module-win/commands/isCheckable.js +0 -26
- package/build/ox_modules/module-win/commands/isChecked.js +0 -26
- package/build/ox_modules/module-win/commands/isClickable.js +0 -26
- package/build/ox_modules/module-win/commands/isExist.js +0 -32
- package/build/ox_modules/module-win/commands/isSelected.js +0 -26
- package/build/ox_modules/module-win/commands/isVisible.js +0 -32
- package/build/ox_modules/module-win/commands/open.js +0 -24
- package/build/ox_modules/module-win/commands/pause.js +0 -23
- package/build/ox_modules/module-win/commands/rightClick.js +0 -30
- package/build/ox_modules/module-win/commands/selectWindow.js +0 -97
- package/build/ox_modules/module-win/commands/sendKeys.js +0 -50
- package/build/ox_modules/module-win/commands/setTimeout.js +0 -29
- package/build/ox_modules/module-win/commands/takeScreenshot.js +0 -26
- package/build/ox_modules/module-win/commands/tap.js +0 -29
- package/build/ox_modules/module-win/commands/type.js +0 -38
- package/build/ox_modules/module-win/commands/waitForExist.js +0 -25
- package/build/ox_modules/module-win/commands/waitForInteractable.js +0 -43
- package/build/ox_modules/module-win/commands/waitForVisible.js +0 -24
- package/build/ox_modules/module-win.js +0 -367
- package/build/ox_services/service-devtools/submodule-network.js +0 -338
- package/build/ox_services/service-devtools.js +0 -83
- package/build/runners/cucumber/CucumberEventListener.js +0 -181
- package/build/runners/cucumber/CucumberReporter.js +0 -277
- package/build/runners/cucumber/CucumberWorker.js +0 -337
- package/build/runners/cucumber/index.js +0 -159
- package/build/runners/cucumber/worker.js +0 -184
|
@@ -69,20 +69,10 @@ class OxygenError extends Error {
|
|
|
69
69
|
if (this.orgErr && this.orgErr.stack) {
|
|
70
70
|
const anotherStack = stackTraceParser.parse(this.orgErr.stack);
|
|
71
71
|
|
|
72
|
-
if (anotherStack &&
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
if (anotherStack[i] && anotherStack[1 + i] && anotherStack[i]['file'] === anotherStack[1 + i]['file']) {
|
|
78
|
-
file = anotherStack[1 + i];
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
anotherFile = file['file'];
|
|
82
|
-
anotherLineNumber = file['lineNumber'];
|
|
83
|
-
anotherColumn = file['column'] || 1;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
72
|
+
if (anotherStack && anotherStack.length && anotherStack.length > 1 && anotherStack[1]['file'] && anotherStack[0]['file'] && anotherStack[1]['file'] === anotherStack[0]['file'] && anotherStack[1]['lineNumber'] && anotherStack[1]['column']) {
|
|
73
|
+
anotherFile = anotherStack[1]['file'];
|
|
74
|
+
anotherLineNumber = anotherStack[1]['lineNumber'];
|
|
75
|
+
anotherColumn = anotherStack[1]['column'];
|
|
86
76
|
}
|
|
87
77
|
}
|
|
88
78
|
|
|
@@ -150,4 +140,4 @@ class OxygenError extends Error {
|
|
|
150
140
|
}
|
|
151
141
|
|
|
152
142
|
exports.default = OxygenError;
|
|
153
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lcnJvcnMvT3h5Z2VuRXJyb3IuanMiXSwibmFtZXMiOlsiU1RBQ0tUUkFDRV9GSUxURVJTIiwiT3h5Z2VuRXJyb3IiLCJFcnJvciIsImNvbnN0cnVjdG9yIiwidHlwZSIsIm1lc3NhZ2UiLCJkYXRhIiwiaXNGYXRhbCIsIm9yZ0VyciIsInVuZGVmaW5lZCIsInN1YnR5cGUiLCJzY3JlZW5zaG90Iiwic3RhY2siLCJjYXB0dXJlU3RhY2tUcmFjZSIsImZpbHRlclN0YWNrVHJhY2UiLCJnZW5lcmF0ZUxvY2F0aW9uIiwic3BsaXQiLCJmaWx0ZXIiLCJfc3RhY2tUcmFjZUZpbHRlckZuIiwiam9pbiIsInZhbHVlIiwic29tZSIsImluY2x1ZGVzIiwiYW5vdGhlckZpbGUiLCJhbm90aGVyTGluZU51bWJlciIsImFub3RoZXJDb2x1bW4iLCJhbm90aGVyU3RhY2siLCJzdGFja1RyYWNlUGFyc2VyIiwicGFyc2UiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJpIiwiZnMiLCJleGlzdHNTeW5jIiwiZmlsZSIsInN0YWNrVHJhY2UiLCJTdGFja1RyYWNlIiwiaXRlbSIsImV4aXN0IiwiZmlsZU5hbWUiLCJjYWxsIiwibG9jYXRpb24iLCJsb2NhdGlvblNwbGl0IiwicGFyc2VJbnQiLCJzdGFja3RyYWNlIiwibWFwIiwicGF0Y2hGaWxlUGF0aE9uV2luZG93cyIsImdldEZpbGVOYW1lIiwiZ2V0TGluZU51bWJlciIsImdldENvbHVtbk51bWJlciIsImZpbGVQYXRoIiwicHJvY2VzcyIsInBsYXRmb3JtIiwicmVwbGFjZSIsImVyciIsImUiLCJjb25zb2xlIiwiZXJyb3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQVlBOztBQUNBOztBQUNBOzs7Ozs7OztBQUVBLE1BQU1BLGtCQUFrQixHQUFHLENBQUMsa0JBQUQsRUFBcUIsZ0JBQXJCLEVBQXVDLGVBQXZDLEVBQXdELGlCQUF4RCxFQUEyRSxZQUEzRSxFQUF5RixxQkFBekYsRUFBZ0gsZ0JB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QyxHQUF4QixFQUE2QnRELFdBQTdCO0FBQ0EsYUFBS1csS0FBTCxHQUFhMkMsR0FBRyxDQUFDM0MsS0FBakI7QUFFSCxPQVBELENBUUEsT0FBTzRDLENBQVAsRUFBVTtBQUNOQyxRQUFBQSxPQUFPLENBQUNDLEtBQVIsQ0FBY0YsQ0FBQyxDQUFDbkQsT0FBaEI7QUFDSDtBQUNKO0FBQ0o7O0FBeEswQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoQykgMjAxNS1wcmVzZW50IENsb3VkQmVhdCBMaW1pdGVkXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqL1xyXG5cclxuLypcclxuICogT3h5Z2VuIEVycm9yIGNsYXNzXHJcbiAqL1xyXG5pbXBvcnQgU3RhY2tUcmFjZSBmcm9tICdzdGFjay10cmFjZSc7XHJcbmltcG9ydCAqIGFzIHN0YWNrVHJhY2VQYXJzZXIgZnJvbSAnc3RhY2t0cmFjZS1wYXJzZXInO1xyXG5pbXBvcnQgZnMgZnJvbSAnZnMnO1xyXG5cclxuY29uc3QgU1RBQ0tUUkFDRV9GSUxURVJTID0gWydcXFxcbm9kZV9tb2R1bGVzXFxcXCcsICcvbm9kZV9tb2R1bGVzLycsICcvb3h5Z2VuLW5vZGUvJywgJ1xcXFxveHlnZW4tbm9kZVxcXFwnLCAnKG1vZHVsZS5qcycsICcoaW50ZXJuYWwvbW9kdWxlLmpzJywgJ2F0IDxhbm9ueW1vdXM+JywgJ2ludGVybmFsLycsICdpbnRlcm5hbFxcXFwnXTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE94eWdlbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xyXG4gICAgY29uc3RydWN0b3IodHlwZSwgbWVzc2FnZSwgZGF0YSwgaXNGYXRhbCwgb3JnRXJyID0gbnVsbCkge1xyXG4gICAgICAgIHN1cGVyKG1lc3NhZ2UgfHwgdW5kZWZpbmVkKTtcclxuICAgICAgICB0aGlzLnR5cGUgPSB0eXBlIHx8IHRoaXMudHlwZSB8fCBudWxsO1xyXG4gICAgICAgIHRoaXMub3JnRXJyID0gb3JnRXJyO1xyXG4gICAgICAgIC8vIHN1YnR5cGUgYWxsb3dzIHRvIHNwZWNpZnkgbW9yZSBwYXJ0aWN1bGFyIGVycm9yIGZvciBhIGdlbmVyYWwgT3h5Z2VuIGVycm9yIHR5cGVcclxuICAgICAgICAvLyBmb3IgZXhhbXBsZSwgc3BlY2lmeSBUeXBlRXJyb3IgYXMgc3VidHlwZSBmb3IgYSBnZW5lcmFsIFNDUklQVF9FUlJPUiBPeHlnZW4gdHlwZVxyXG4gICAgICAgIGlmIChvcmdFcnIgJiYgdHlwZW9mIG9yZ0VyciA9PT0gJ3N0cmluZycgJiYgdHlwZSAhPT0gb3JnRXJyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3VidHlwZSA9IG9yZ0VycjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAob3JnRXJyICYmIHR5cGVvZiBvcmdFcnIgPT09ICdvYmplY3QnICYmIG9yZ0Vyci50eXBlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3VidHlwZSA9IG9yZ0Vyci50eXBlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlIHx8IG51bGw7XHJcbiAgICAgICAgdGhpcy5kYXRhID0gZGF0YSB8fCBudWxsO1xyXG4gICAgICAgIHRoaXMuc2NyZWVuc2hvdCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5pc0ZhdGFsID0gKHR5cGVvZiBpc0ZhdGFsID09PSAndW5kZWZpbmVkJykgPyB0cnVlIDogaXNGYXRhbDtcclxuICAgICAgICBpZiAob3JnRXJyICYmIG9yZ0Vyci5zdGFjaykge1xyXG4gICAgICAgICAgICB0aGlzLnN0YWNrID0gb3JnRXJyLnN0YWNrO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gZG9uJ3QgZ2VuZXJhdGUgc3RhY2t0cmFjZSBpZiBPeHlnZW5FcnJvciBpcyB1c2VkIGluZGlyZWN0bHkgdGhyb3VnaCBpbmhlcml0YW5jZVxyXG4gICAgICAgIGlmICh0eXBlIHx8IG1lc3NhZ2UpIHtcclxuICAgICAgICAgICAgdGhpcy5jYXB0dXJlU3RhY2tUcmFjZSgpO1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlclN0YWNrVHJhY2UoKTtcclxuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUxvY2F0aW9uKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZpbHRlclN0YWNrVHJhY2UoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnN0YWNrKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2FwdHVyZVN0YWNrVHJhY2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zdGFjayA9IHRoaXMuc3RhY2suc3BsaXQoJ1xcbicpLmZpbHRlcih0aGlzLl9zdGFja1RyYWNlRmlsdGVyRm4pLmpvaW4oJ1xcbicpO1xyXG4gICAgfVxyXG5cclxuICAgIF9zdGFja1RyYWNlRmlsdGVyRm4odmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gIVNUQUNLVFJBQ0VfRklMVEVSUy5zb21lKGZpbHRlciA9PiB2YWx1ZS5pbmNsdWRlcyhmaWx0ZXIpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZW5lcmF0ZUxvY2F0aW9uKCkge1xyXG4gICAgICAgIGxldCBhbm90aGVyRmlsZTtcclxuICAgICAgICBsZXQgYW5vdGhlckxpbmVOdW1iZXI7XHJcbiAgICAgICAgbGV0IGFub3RoZXJDb2x1bW47XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm9yZ0VyciAmJiB0aGlzLm9yZ0Vyci5zdGFjaykge1xyXG4gICAgICAgICAgICBjb25zdCBhbm90aGVyU3RhY2sgPSBzdGFja1RyYWNlUGFyc2VyLnBhcnNlKHRoaXMub3JnRXJyLnN0YWNrKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgIGFub3RoZXJTdGFjayAmJlxyXG4gICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheShhbm90aGVyU3RhY2spICYmXHJcbiAgICAgICAgICAgICAgICBhbm90aGVyU3RhY2subGVuZ3RoID4gMFxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYW5vdGhlclN0YWNrLmxlbmd0aDsgaSsrKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgZnMuZXhpc3RzU3luYyhhbm90aGVyU3RhY2tbaV1bJ2ZpbGUnXSkgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgYW5vdGhlclN0YWNrW2ldWydsaW5lTnVtYmVyJ10gJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgIWFub3RoZXJGaWxlICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICFhbm90aGVyTGluZU51bWJlclxyXG4gICAgICAgICAgICAgICAgICAgICkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZpbGUgPSBhbm90aGVyU3RhY2tbaV07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FzZTogXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTogJyouanMnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZE5hbWU6ICc8dW5rbm93bj4nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50czogW10sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZU51bWJlcjogMSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW46IG51bGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTogJyouanMnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZE5hbWU6ICdPYmplY3QuPGFub255bW91cz4nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50czogW10sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZU51bWJlcjogMTEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uOiAxMFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbm90aGVyU3RhY2tbaV0gJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFub3RoZXJTdGFja1sxK2ldICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbm90aGVyU3RhY2tbaV1bJ2ZpbGUnXSA9PT0gYW5vdGhlclN0YWNrWzEraV1bJ2ZpbGUnXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgPSBhbm90aGVyU3RhY2tbMStpXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgYW5vdGhlckZpbGUgPSBmaWxlWydmaWxlJ107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFub3RoZXJMaW5lTnVtYmVyID0gZmlsZVsnbGluZU51bWJlciddO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhbm90aGVyQ29sdW1uID0gZmlsZVsnY29sdW1uJ10gfHwgMTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBzdGFja1RyYWNlID0gU3RhY2tUcmFjZS5wYXJzZSh0aGlzKSB8fCBbXTtcclxuICAgICAgICBzdGFja1RyYWNlID0gc3RhY2tUcmFjZS5maWx0ZXIoKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZXhpc3QgPSBmcy5leGlzdHNTeW5jKGl0ZW0uZmlsZU5hbWUpO1xyXG4gICAgICAgICAgICByZXR1cm4gZXhpc3Q7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKHN0YWNrVHJhY2UubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBjb25zdCBjYWxsID0gc3RhY2tUcmFjZVswXTtcclxuICAgICAgICAgICAgaWYgKGNhbGwgJiYgY2FsbC5maWxlTmFtZSA9PT0gJ3ZtLmpzJyAmJiB0aGlzLm9yZ0VyciAmJiB0aGlzLm9yZ0Vyci5zdGFjaykge1xyXG4gICAgICAgICAgICAgICAgbGV0IGxvY2F0aW9uID0gdGhpcy5vcmdFcnIuc3RhY2suc3BsaXQoJ1xcbicpWzBdO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IGxvY2F0aW9uU3BsaXQgPSBsb2NhdGlvbi5zcGxpdCgnOicpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChsb2NhdGlvblNwbGl0ICYmIGxvY2F0aW9uU3BsaXRbMF0pIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlSW50KGxvY2F0aW9uU3BsaXRbbG9jYXRpb25TcGxpdC5sZW5ndGgtMV0pICYmIHBhcnNlSW50KGxvY2F0aW9uU3BsaXRbbG9jYXRpb25TcGxpdC5sZW5ndGgtMl0pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxpbmUgYW5kIGNvbHVtbiBwcmVzZW50XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJzZUludChsb2NhdGlvblNwbGl0W2xvY2F0aW9uU3BsaXQubGVuZ3RoLTFdKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBsaW5lIHByZXNlbnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24gKz0gJzowJztcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBvbmx5IG5hbWUgcHJlc2VudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbiArPSAnOjA6MCc7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMubG9jYXRpb24gPSBsb2NhdGlvbjtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RhY2t0cmFjZSA9IFtcclxuICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbixcclxuICAgICAgICAgICAgICAgICAgICAuLi5zdGFja1RyYWNlLm1hcChjYWxsID0+IGAke3RoaXMucGF0Y2hGaWxlUGF0aE9uV2luZG93cyhjYWxsLmdldEZpbGVOYW1lKCkpfToke2NhbGwuZ2V0TGluZU51bWJlcigpfToke2NhbGwuZ2V0Q29sdW1uTnVtYmVyKCl9YClcclxuICAgICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYW5vdGhlckZpbGUgJiYgYW5vdGhlckxpbmVOdW1iZXIgJiYgYW5vdGhlckNvbHVtbikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhdGlvbiA9IGAke3RoaXMucGF0Y2hGaWxlUGF0aE9uV2luZG93cyhhbm90aGVyRmlsZSl9OiR7YW5vdGhlckxpbmVOdW1iZXJ9OiR7YW5vdGhlckNvbHVtbn1gO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGFja3RyYWNlID0gW3RoaXMubG9jYXRpb25dO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gYWRkIGV4dHJhIGxpbmUgaWYgd2UgYXJlIHJ1bm5pbmcgaW4gZGVidWdnZXIgbW9kZSAoVjggZGVidWdnZXIgYWRkcyBhbiBleHRyYSBsaW5lIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUpXHJcbiAgICAgICAgICAgICAgICAvL2NvbnN0IGV4dHJhTGluZSA9IG94dXRpbC5pc0luRGVidWdNb2RlKCkgPyAxIDogMDtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9jYXRpb24gPSBgJHt0aGlzLnBhdGNoRmlsZVBhdGhPbldpbmRvd3MoY2FsbC5nZXRGaWxlTmFtZSgpKX06JHtjYWxsLmdldExpbmVOdW1iZXIoKX06JHtjYWxsLmdldENvbHVtbk51bWJlcigpfWA7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0YWNrdHJhY2UgPSBzdGFja1RyYWNlLm1hcChjYWxsID0+IGAke3RoaXMucGF0Y2hGaWxlUGF0aE9uV2luZG93cyhjYWxsLmdldEZpbGVOYW1lKCkpfToke2NhbGwuZ2V0TGluZU51bWJlcigpfToke2NhbGwuZ2V0Q29sdW1uTnVtYmVyKCl9YCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKGFub3RoZXJGaWxlICYmIGFub3RoZXJMaW5lTnVtYmVyICYmIGFub3RoZXJDb2x1bW4pIHtcclxuICAgICAgICAgICAgdGhpcy5sb2NhdGlvbiA9IGAke3RoaXMucGF0Y2hGaWxlUGF0aE9uV2luZG93cyhhbm90aGVyRmlsZSl9OiR7YW5vdGhlckxpbmVOdW1iZXJ9OiR7YW5vdGhlckNvbHVtbn1gO1xyXG4gICAgICAgICAgICB0aGlzLnN0YWNrdHJhY2UgPSBbdGhpcy5sb2NhdGlvbl07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5sb2NhdGlvbiA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHBhdGNoRmlsZVBhdGhPbldpbmRvd3MoZmlsZVBhdGgpIHtcclxuICAgICAgICBpZiAoZmlsZVBhdGggJiYgcHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJyAmJiB0eXBlb2YoZmlsZVBhdGgpID09PSAnc3RyaW5nJyAmJiBmaWxlUGF0aC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmaWxlUGF0aC5yZXBsYWNlKC9cXC8vZywgJ1xcXFwnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZpbGVQYXRoO1xyXG4gICAgfVxyXG5cclxuICAgIGNhcHR1cmVTdGFja1RyYWNlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnN0YWNrKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAvL3ZhciBvcmlnID0gRXJyb3IucHJlcGFyZVN0YWNrVHJhY2U7XHJcbiAgICAgICAgICAgICAgICAvL0Vycm9yLnByZXBhcmVTdGFja1RyYWNlID0gZnVuY3Rpb24gKF8sIHN0YWNrKSB7IHJldHVybiBzdGFjazsgfTtcclxuICAgICAgICAgICAgICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoKTtcclxuICAgICAgICAgICAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKGVyciwgT3h5Z2VuRXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGFjayA9IGVyci5zdGFjaztcclxuICAgICAgICAgICAgICAgIC8vRXJyb3IucHJlcGFyZVN0YWNrVHJhY2UgPSBvcmlnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
143
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lcnJvcnMvT3h5Z2VuRXJyb3IuanMiXSwibmFtZXMiOlsiU1RBQ0tUUkFDRV9GSUxURVJTIiwiT3h5Z2VuRXJyb3IiLCJFcnJvciIsImNvbnN0cnVjdG9yIiwidHlwZSIsIm1lc3NhZ2UiLCJkYXRhIiwiaXNGYXRhbCIsIm9yZ0VyciIsInVuZGVmaW5lZCIsInN1YnR5cGUiLCJzY3JlZW5zaG90Iiwic3RhY2siLCJjYXB0dXJlU3RhY2tUcmFjZSIsImZpbHRlclN0YWNrVHJhY2UiLCJnZW5lcmF0ZUxvY2F0aW9uIiwic3BsaXQiLCJmaWx0ZXIiLCJfc3RhY2tUcmFjZUZpbHRlckZuIiwiam9pbiIsInZhbHVlIiwic29tZSIsImluY2x1ZGVzIiwiYW5vdGhlckZpbGUiLCJhbm90aGVyTGluZU51bWJlciIsImFub3RoZXJDb2x1bW4iLCJhbm90aGVyU3RhY2siLCJzdGFja1RyYWNlUGFyc2VyIiwicGFyc2UiLCJsZW5ndGgiLCJzdGFja1RyYWNlIiwiU3RhY2tUcmFjZSIsIml0ZW0iLCJleGlzdCIsImZzIiwiZXhpc3RzU3luYyIsImZpbGVOYW1lIiwiY2FsbCIsImxvY2F0aW9uIiwibG9jYXRpb25TcGxpdCIsInBhcnNlSW50Iiwic3RhY2t0cmFjZSIsIm1hcCIsInBhdGNoRmlsZVBhdGhPbldpbmRvd3MiLCJnZXRGaWxlTmFtZSIsImdldExpbmVOdW1iZXIiLCJnZXRDb2x1bW5OdW1iZXIiLCJmaWxlUGF0aCIsInByb2Nlc3MiLCJwbGF0Zm9ybSIsInJlcGxhY2UiLCJlcnIiLCJlIiwiY29uc29sZSIsImVycm9yIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFZQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7QUFFQSxNQUFNQSxrQkFBa0IsR0FBRyxDQUFDLGtCQUFELEVBQXFCLGdCQUFyQixFQUF1QyxlQUF2QyxFQUF3RCxpQkFBeEQsRUFBMkUsWUFBM0UsRUFBeUYscUJBQXpGLEVBQWdILGdCQUFoSCxFQUFrSSxXQUFsSSxFQUErSSxZQUEvSSxD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LElBQUl2QixXQUFXLElBQUlDLGlCQUFmLElBQW9DQyxhQUF4QyxFQUF1RDtBQUMxRCxXQUFLYSxRQUFMLEdBQWlCLEdBQUUsS0FBS0ssc0JBQUwsQ0FBNEJwQixXQUE1QixDQUF5QyxJQUFHQyxpQkFBa0IsSUFBR0MsYUFBYyxFQUFsRztBQUNBLFdBQUtnQixVQUFMLEdBQWtCLENBQUMsS0FBS0gsUUFBTixDQUFsQjtBQUNILEtBSE0sTUFHQTtBQUNILFdBQUtBLFFBQUwsR0FBZ0IsSUFBaEI7QUFDSDtBQUNKOztBQUVESyxFQUFBQSxzQkFBc0IsQ0FBQ0ksUUFBRCxFQUFXO0FBQzdCLFFBQUlBLFFBQVEsSUFBSUMsT0FBTyxDQUFDQyxRQUFSLEtBQXFCLE9BQWpDLElBQTRDLE9BQU9GLFFBQVAsS0FBcUIsUUFBakUsSUFBNkVBLFFBQVEsQ0FBQ2xCLE1BQVQsR0FBa0IsQ0FBbkcsRUFBc0c7QUFDbEcsYUFBT2tCLFFBQVEsQ0FBQ0csT0FBVCxDQUFpQixLQUFqQixFQUF3QixJQUF4QixDQUFQO0FBQ0g7O0FBQ0QsV0FBT0gsUUFBUDtBQUNIOztBQUVEbEMsRUFBQUEsaUJBQWlCLEdBQUc7QUFDaEIsUUFBSSxLQUFLRCxLQUFULEVBQWdCO0FBQ1o7QUFDSCxLQUZELE1BR0s7QUFDRCxVQUFJO0FBR0EsWUFBSXVDLEdBQUcsR0FBRyxJQUFJakQsS0FBSixFQUFWO0FBQ0FBLFFBQUFBLEtBQUssQ0FBQ1csaUJBQU4sQ0FBd0JzQyxHQUF4QixFQUE2QmxELFdBQTdCO0FBQ0EsYUFBS1csS0FBTCxHQUFhdUMsR0FBRyxDQUFDdkMsS0FBakI7QUFFSCxPQVBELENBUUEsT0FBT3dDLENBQVAsRUFBVTtBQUNOQyxRQUFBQSxPQUFPLENBQUNDLEtBQVIsQ0FBY0YsQ0FBQyxDQUFDL0MsT0FBaEI7QUFDSDtBQUNKO0FBQ0o7O0FBdkkwQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoQykgMjAxNS1wcmVzZW50IENsb3VkQmVhdCBMaW1pdGVkXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqL1xyXG5cclxuLypcclxuICogT3h5Z2VuIEVycm9yIGNsYXNzXHJcbiAqL1xyXG5pbXBvcnQgU3RhY2tUcmFjZSBmcm9tICdzdGFjay10cmFjZSc7XHJcbmltcG9ydCAqIGFzIHN0YWNrVHJhY2VQYXJzZXIgZnJvbSAnc3RhY2t0cmFjZS1wYXJzZXInO1xyXG5pbXBvcnQgZnMgZnJvbSAnZnMnO1xyXG5cclxuY29uc3QgU1RBQ0tUUkFDRV9GSUxURVJTID0gWydcXFxcbm9kZV9tb2R1bGVzXFxcXCcsICcvbm9kZV9tb2R1bGVzLycsICcvb3h5Z2VuLW5vZGUvJywgJ1xcXFxveHlnZW4tbm9kZVxcXFwnLCAnKG1vZHVsZS5qcycsICcoaW50ZXJuYWwvbW9kdWxlLmpzJywgJ2F0IDxhbm9ueW1vdXM+JywgJ2ludGVybmFsLycsICdpbnRlcm5hbFxcXFwnXTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE94eWdlbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xyXG4gICAgY29uc3RydWN0b3IodHlwZSwgbWVzc2FnZSwgZGF0YSwgaXNGYXRhbCwgb3JnRXJyID0gbnVsbCkge1xyXG4gICAgICAgIHN1cGVyKG1lc3NhZ2UgfHwgdW5kZWZpbmVkKTtcclxuICAgICAgICB0aGlzLnR5cGUgPSB0eXBlIHx8IHRoaXMudHlwZSB8fCBudWxsO1xyXG4gICAgICAgIHRoaXMub3JnRXJyID0gb3JnRXJyO1xyXG4gICAgICAgIC8vIHN1YnR5cGUgYWxsb3dzIHRvIHNwZWNpZnkgbW9yZSBwYXJ0aWN1bGFyIGVycm9yIGZvciBhIGdlbmVyYWwgT3h5Z2VuIGVycm9yIHR5cGVcclxuICAgICAgICAvLyBmb3IgZXhhbXBsZSwgc3BlY2lmeSBUeXBlRXJyb3IgYXMgc3VidHlwZSBmb3IgYSBnZW5lcmFsIFNDUklQVF9FUlJPUiBPeHlnZW4gdHlwZVxyXG4gICAgICAgIGlmIChvcmdFcnIgJiYgdHlwZW9mIG9yZ0VyciA9PT0gJ3N0cmluZycgJiYgdHlwZSAhPT0gb3JnRXJyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3VidHlwZSA9IG9yZ0VycjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAob3JnRXJyICYmIHR5cGVvZiBvcmdFcnIgPT09ICdvYmplY3QnICYmIG9yZ0Vyci50eXBlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3VidHlwZSA9IG9yZ0Vyci50eXBlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlIHx8IG51bGw7XHJcbiAgICAgICAgdGhpcy5kYXRhID0gZGF0YSB8fCBudWxsO1xyXG4gICAgICAgIHRoaXMuc2NyZWVuc2hvdCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5pc0ZhdGFsID0gKHR5cGVvZiBpc0ZhdGFsID09PSAndW5kZWZpbmVkJykgPyB0cnVlIDogaXNGYXRhbDtcclxuICAgICAgICBpZiAob3JnRXJyICYmIG9yZ0Vyci5zdGFjaykge1xyXG4gICAgICAgICAgICB0aGlzLnN0YWNrID0gb3JnRXJyLnN0YWNrO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gZG9uJ3QgZ2VuZXJhdGUgc3RhY2t0cmFjZSBpZiBPeHlnZW5FcnJvciBpcyB1c2VkIGluZGlyZWN0bHkgdGhyb3VnaCBpbmhlcml0YW5jZVxyXG4gICAgICAgIGlmICh0eXBlIHx8IG1lc3NhZ2UpIHtcclxuICAgICAgICAgICAgdGhpcy5jYXB0dXJlU3RhY2tUcmFjZSgpO1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlclN0YWNrVHJhY2UoKTtcclxuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUxvY2F0aW9uKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZpbHRlclN0YWNrVHJhY2UoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnN0YWNrKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2FwdHVyZVN0YWNrVHJhY2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zdGFjayA9IHRoaXMuc3RhY2suc3BsaXQoJ1xcbicpLmZpbHRlcih0aGlzLl9zdGFja1RyYWNlRmlsdGVyRm4pLmpvaW4oJ1xcbicpO1xyXG4gICAgfVxyXG5cclxuICAgIF9zdGFja1RyYWNlRmlsdGVyRm4odmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gIVNUQUNLVFJBQ0VfRklMVEVSUy5zb21lKGZpbHRlciA9PiB2YWx1ZS5pbmNsdWRlcyhmaWx0ZXIpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZW5lcmF0ZUxvY2F0aW9uKCkge1xyXG4gICAgICAgIGxldCBhbm90aGVyRmlsZTtcclxuICAgICAgICBsZXQgYW5vdGhlckxpbmVOdW1iZXI7XHJcbiAgICAgICAgbGV0IGFub3RoZXJDb2x1bW47XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm9yZ0VyciAmJiB0aGlzLm9yZ0Vyci5zdGFjaykge1xyXG4gICAgICAgICAgICBjb25zdCBhbm90aGVyU3RhY2sgPSBzdGFja1RyYWNlUGFyc2VyLnBhcnNlKHRoaXMub3JnRXJyLnN0YWNrKTtcclxuICAgICAgICAgICAgLy8gMCBlbGVtZW50IGRvbid0IGhhdmUgY29ycmVjdCBpbmZvcm1hdGlvbiBhYm91dCBsaW5lTnVtYmVyIGFuZCBjb2x1bW5cclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgYW5vdGhlclN0YWNrICYmXHJcbiAgICAgICAgICAgICAgICBhbm90aGVyU3RhY2subGVuZ3RoICYmXHJcbiAgICAgICAgICAgICAgICBhbm90aGVyU3RhY2subGVuZ3RoID4gMSAmJlxyXG4gICAgICAgICAgICAgICAgYW5vdGhlclN0YWNrWzFdWydmaWxlJ10gJiZcclxuICAgICAgICAgICAgICAgIGFub3RoZXJTdGFja1swXVsnZmlsZSddICYmXHJcbiAgICAgICAgICAgICAgICBhbm90aGVyU3RhY2tbMV1bJ2ZpbGUnXSA9PT0gYW5vdGhlclN0YWNrWzBdWydmaWxlJ10gJiZcclxuICAgICAgICAgICAgICAgIGFub3RoZXJTdGFja1sxXVsnbGluZU51bWJlciddICYmXHJcbiAgICAgICAgICAgICAgICBhbm90aGVyU3RhY2tbMV1bJ2NvbHVtbiddXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgYW5vdGhlckZpbGUgPSBhbm90aGVyU3RhY2tbMV1bJ2ZpbGUnXTtcclxuICAgICAgICAgICAgICAgIGFub3RoZXJMaW5lTnVtYmVyID0gYW5vdGhlclN0YWNrWzFdWydsaW5lTnVtYmVyJ107XHJcbiAgICAgICAgICAgICAgICBhbm90aGVyQ29sdW1uID0gYW5vdGhlclN0YWNrWzFdWydjb2x1bW4nXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHN0YWNrVHJhY2UgPSBTdGFja1RyYWNlLnBhcnNlKHRoaXMpIHx8IFtdO1xyXG4gICAgICAgIHN0YWNrVHJhY2UgPSBzdGFja1RyYWNlLmZpbHRlcigoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBleGlzdCA9IGZzLmV4aXN0c1N5bmMoaXRlbS5maWxlTmFtZSk7XHJcbiAgICAgICAgICAgIHJldHVybiBleGlzdDtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoc3RhY2tUcmFjZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNhbGwgPSBzdGFja1RyYWNlWzBdO1xyXG4gICAgICAgICAgICBpZiAoY2FsbCAmJiBjYWxsLmZpbGVOYW1lID09PSAndm0uanMnICYmIHRoaXMub3JnRXJyICYmIHRoaXMub3JnRXJyLnN0YWNrKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgbG9jYXRpb24gPSB0aGlzLm9yZ0Vyci5zdGFjay5zcGxpdCgnXFxuJylbMF07XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgbG9jYXRpb25TcGxpdCA9IGxvY2F0aW9uLnNwbGl0KCc6Jyk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGxvY2F0aW9uU3BsaXQgJiYgbG9jYXRpb25TcGxpdFswXSkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2VJbnQobG9jYXRpb25TcGxpdFtsb2NhdGlvblNwbGl0Lmxlbmd0aC0xXSkgJiYgcGFyc2VJbnQobG9jYXRpb25TcGxpdFtsb2NhdGlvblNwbGl0Lmxlbmd0aC0yXSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGluZSBhbmQgY29sdW1uIHByZXNlbnRcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGxvY2F0aW9uU3BsaXRbbG9jYXRpb25TcGxpdC5sZW5ndGgtMV0pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxpbmUgcHJlc2VudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbiArPSAnOjAnO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9ubHkgbmFtZSBwcmVzZW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uICs9ICc6MDowJztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhdGlvbiA9IGxvY2F0aW9uO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGFja3RyYWNlID0gW1xyXG4gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YWNrVHJhY2UubWFwKGNhbGwgPT4gYCR7dGhpcy5wYXRjaEZpbGVQYXRoT25XaW5kb3dzKGNhbGwuZ2V0RmlsZU5hbWUoKSl9OiR7Y2FsbC5nZXRMaW5lTnVtYmVyKCl9OiR7Y2FsbC5nZXRDb2x1bW5OdW1iZXIoKX1gKVxyXG4gICAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChhbm90aGVyRmlsZSAmJiBhbm90aGVyTGluZU51bWJlciAmJiBhbm90aGVyQ29sdW1uKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2F0aW9uID0gYCR7dGhpcy5wYXRjaEZpbGVQYXRoT25XaW5kb3dzKGFub3RoZXJGaWxlKX06JHthbm90aGVyTGluZU51bWJlcn06JHthbm90aGVyQ29sdW1ufWA7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0YWNrdHJhY2UgPSBbdGhpcy5sb2NhdGlvbl07XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBhZGQgZXh0cmEgbGluZSBpZiB3ZSBhcmUgcnVubmluZyBpbiBkZWJ1Z2dlciBtb2RlIChWOCBkZWJ1Z2dlciBhZGRzIGFuIGV4dHJhIGxpbmUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZSlcclxuICAgICAgICAgICAgICAgIC8vY29uc3QgZXh0cmFMaW5lID0gb3h1dGlsLmlzSW5EZWJ1Z01vZGUoKSA/IDEgOiAwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhdGlvbiA9IGAke3RoaXMucGF0Y2hGaWxlUGF0aE9uV2luZG93cyhjYWxsLmdldEZpbGVOYW1lKCkpfToke2NhbGwuZ2V0TGluZU51bWJlcigpfToke2NhbGwuZ2V0Q29sdW1uTnVtYmVyKCl9YDtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RhY2t0cmFjZSA9IHN0YWNrVHJhY2UubWFwKGNhbGwgPT4gYCR7dGhpcy5wYXRjaEZpbGVQYXRoT25XaW5kb3dzKGNhbGwuZ2V0RmlsZU5hbWUoKSl9OiR7Y2FsbC5nZXRMaW5lTnVtYmVyKCl9OiR7Y2FsbC5nZXRDb2x1bW5OdW1iZXIoKX1gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoYW5vdGhlckZpbGUgJiYgYW5vdGhlckxpbmVOdW1iZXIgJiYgYW5vdGhlckNvbHVtbikge1xyXG4gICAgICAgICAgICB0aGlzLmxvY2F0aW9uID0gYCR7dGhpcy5wYXRjaEZpbGVQYXRoT25XaW5kb3dzKGFub3RoZXJGaWxlKX06JHthbm90aGVyTGluZU51bWJlcn06JHthbm90aGVyQ29sdW1ufWA7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhY2t0cmFjZSA9IFt0aGlzLmxvY2F0aW9uXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmxvY2F0aW9uID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcGF0Y2hGaWxlUGF0aE9uV2luZG93cyhmaWxlUGF0aCkge1xyXG4gICAgICAgIGlmIChmaWxlUGF0aCAmJiBwcm9jZXNzLnBsYXRmb3JtID09PSAnd2luMzInICYmIHR5cGVvZihmaWxlUGF0aCkgPT09ICdzdHJpbmcnICYmIGZpbGVQYXRoLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZpbGVQYXRoLnJlcGxhY2UoL1xcLy9nLCAnXFxcXCcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmlsZVBhdGg7XHJcbiAgICB9XHJcblxyXG4gICAgY2FwdHVyZVN0YWNrVHJhY2UoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhY2spIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIC8vdmFyIG9yaWcgPSBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZTtcclxuICAgICAgICAgICAgICAgIC8vRXJyb3IucHJlcGFyZVN0YWNrVHJhY2UgPSBmdW5jdGlvbiAoXywgc3RhY2spIHsgcmV0dXJuIHN0YWNrOyB9O1xyXG4gICAgICAgICAgICAgICAgdmFyIGVyciA9IG5ldyBFcnJvcigpO1xyXG4gICAgICAgICAgICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoZXJyLCBPeHlnZW5FcnJvcik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0YWNrID0gZXJyLnN0YWNrO1xyXG4gICAgICAgICAgICAgICAgLy9FcnJvci5wcmVwYXJlU3RhY2tUcmFjZSA9IG9yaWc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
|
package/build/errors/helper.js
CHANGED
|
@@ -35,7 +35,6 @@ const ERROR_CODES = {
|
|
|
35
35
|
DB_CONNECTION_ERROR: 'DB_CONNECTION_ERROR',
|
|
36
36
|
DB_QUERY_ERROR: 'DB_QUERY_ERROR',
|
|
37
37
|
SOAP_ERROR: 'SOAP_ERROR',
|
|
38
|
-
SHELL_ERROR: 'SHELL_ERROR',
|
|
39
38
|
NOT_IMPLEMENTED_ERROR: 'NOT_IMPLEMENTED_ERROR',
|
|
40
39
|
SERIAL_PORT_ERROR: 'SERIAL_PORT_ERROR',
|
|
41
40
|
HTTP_ERROR: 'HTTP_ERROR',
|
|
@@ -64,9 +63,7 @@ const ERROR_CODES = {
|
|
|
64
63
|
FILE_BROWSE_ERROR: 'FILE_BROWSE_ERROR',
|
|
65
64
|
CSV_ERROR: 'CSV_ERROR',
|
|
66
65
|
CRYPTO_ERROR: 'CRYPTO_ERROR',
|
|
67
|
-
DNS_ERROR: 'DNS_ERROR'
|
|
68
|
-
CIRCULAR_ERROR: 'CIRCULAR_ERROR',
|
|
69
|
-
XML_ERROR: 'XML_ERROR'
|
|
66
|
+
DNS_ERROR: 'DNS_ERROR'
|
|
70
67
|
};
|
|
71
68
|
const CHAI_ERROR_CODES = {
|
|
72
69
|
AssertionError: ERROR_CODES.ASSERT_ERROR
|
|
@@ -121,50 +118,49 @@ module.exports = {
|
|
|
121
118
|
if (err.message && err.message.includes('because element wasn\'t found')) {
|
|
122
119
|
return new _OxygenError.default(ERROR_CODES.ELEMENT_NOT_FOUND, err.message, null, true, err);
|
|
123
120
|
} else if (err.message && err.message.includes('Unsupported locator strategy')) {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
}
|
|
121
|
+
let matches = err.message.match(/invalid argument: (.*)/i);
|
|
122
|
+
return new _OxygenError.default(ERROR_CODES.MOBILE_CONTEXT_ERROR, (matches.length === 2 ? matches[1] : err.message) + '. Make sure you are using the correct mobile context. See mob.setNativeContext and mob.setWebViewContext.');
|
|
123
|
+
} else if (err.message && err.message.includes('Unable to locate an element with the xpath expression')) {
|
|
124
|
+
let matches = err.message.match(/(The string '.*' is not a valid XPath expression.)/i);
|
|
125
|
+
return new _OxygenError.default(ERROR_CODES.SCRIPT_ERROR, matches && matches.length === 2 ? matches[1] : err.message);
|
|
126
|
+
} else if (err.message && err.message.includes('An invalid or illegal selector was specified')) {
|
|
127
|
+
return new _OxygenError.default(ERROR_CODES.SCRIPT_ERROR, 'An invalid or illegal selector was specified');
|
|
128
|
+
} else if (err.message && err.message.startsWith('Given css selector expression')) {
|
|
129
|
+
let matches = err.message.match(/(Given css selector expression ".*" is invalid).*/i);
|
|
130
|
+
return new _OxygenError.default(ERROR_CODES.SCRIPT_ERROR, matches && matches.length === 2 ? matches[1] : err.message);
|
|
131
|
+
} else if (err.message && (err.message.includes('Unable to automate Chrome version') || err.message.includes('No Chromedriver found that can automate'))) {
|
|
132
|
+
return new _OxygenError.default(ERROR_CODES.CHROMEDRIVER_ERROR, extractOriginalError(err.message));
|
|
133
|
+
} else if (err.message.includes(ORIGINAL_ERROR_MESSAGE)) {
|
|
134
|
+
return new _OxygenError.default(ERROR_CODES.UNKNOWN_ERROR, extractOriginalError(err.message), util.inspect(err));
|
|
135
|
+
} else if (err.message && err.message.includes('Invalid URL')) {
|
|
136
|
+
let matches = err.message.match(/( Invalid URL: .*$).*/i);
|
|
137
|
+
return new _OxygenError.default(ERROR_CODES.SCRIPT_ERROR, matches && matches.length === 2 ? matches[1] : err.message);
|
|
138
|
+
} else if (err.message && err.message.startsWith('element click intercepted')) {
|
|
139
|
+
let matches = err.message.match(/element click intercepted: (.*)/i);
|
|
140
|
+
return new _OxygenError.default(ERROR_CODES.ELEMENT_NOT_VISIBLE, matches && matches.length === 2 ? matches[1] : err.message);
|
|
141
|
+
} else if (err.message && err.message.startsWith('No active session with ID')) {
|
|
142
|
+
return new _OxygenError.default(ERROR_CODES.SELENIUM_SESSION_ERROR, 'Execution time exceeded the timeout set by Selenium');
|
|
143
|
+
} else if (err.message === 'java.net.ConnectException: Connection refused: connect') {
|
|
144
|
+
return new _OxygenError.default(ERROR_CODES.WEBDRIVER_ERROR, 'The underlying WebDriver seems to have crashed: ' + err.message);
|
|
145
|
+
} else if (err.name && err.name.includes('stale element reference')) {
|
|
146
|
+
return new _OxygenError.default(ERROR_CODES.STALE_ELEMENT_REFERENCE, err.name + ' ' + err.message);
|
|
147
|
+
} else if (err.code && err.code === 'MODULE_NOT_FOUND') {
|
|
148
|
+
return new _OxygenError.default(ERROR_CODES.MODULE_NOT_FOUND, err.message);
|
|
149
|
+
} else if (err.message && err.message.includes('no such window') && err.message.includes('target window already closed') && err.message.includes('web view not found')) {
|
|
150
|
+
return new _OxygenError.default(ERROR_CODES.WINDOW_NOT_FOUND, err.message);
|
|
151
|
+
} else if (err.message && err.message.includes('you trying to pass into the execute method wasn\'t found')) {
|
|
152
|
+
return new _OxygenError.default(ERROR_CODES.ELEMENT_NOT_FOUND, err.message);
|
|
153
|
+
} else if (err.message && err.message.includes('element not interactable')) {
|
|
154
|
+
return new _OxygenError.default(ERROR_CODES.ELEMENT_NOT_INTERACTABLE, err.message);
|
|
155
|
+
} else if (err.name && err.name === 'invalid selector') {
|
|
156
|
+
return new _OxygenError.default(ERROR_CODES.SCRIPT_ERROR, err.message);
|
|
157
|
+
} else if (err.message && err.message.includes('Timeout awaiting \'request\'')) {
|
|
158
|
+
return new _OxygenError.default(ERROR_CODES.SELENIUM_SESSION_TIMEOUT, err.message);
|
|
159
|
+
} else if (err && err.message.includes('socket hang up')) {
|
|
160
|
+
return new _OxygenError.default(ERROR_CODES.SELENIUM_SESSION_TIMEOUT, err.message);
|
|
161
|
+
} else if (err && err.message.includes('Timed out receiving message from rendere')) {
|
|
162
|
+
return new _OxygenError.default(ERROR_CODES.SELENIUM_SESSION_TIMEOUT, err.message);
|
|
163
|
+
}
|
|
168
164
|
|
|
169
165
|
var oxErrorCode = CHAI_ERROR_CODES[errType];
|
|
170
166
|
|
|
@@ -286,4 +282,4 @@ function extractOriginalError(msg) {
|
|
|
286
282
|
|
|
287
283
|
return msg;
|
|
288
284
|
}
|
|
289
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lcnJvcnMvaGVscGVyLmpzIl0sIm5hbWVzIjpbInV0aWwiLCJyZXF1aXJlIiwiRVJST1JfQ09ERVMiLCJTQ1JJUFRfRVJST1IiLCJVTktOT1dOX0VSUk9SIiwiQVNTRVJUX0VSUk9SIiwiUERGX0VSUk9SIiwiVkVSSUZZX0VSUk9SIiwiRUxFTUVOVF9OT1RfRk9VTkQiLCJGUkFNRV9OT1RfRk9VTkQiLCJVTktOT1dOX0NPTU1BTkRfRVJST1IiLCJTVEFMRV9FTEVNRU5UX1JFRkVSRU5DRSIsIkVMRU1FTlRfTk9UX1ZJU0lCTEUiLCJFTEVNRU5UX05PVF9JTlRFUkFDVEFCTEUiLCJMT0NBVE9SX01BVENIRVNfTVVMVElQTEVfRUxFTUVOVFMiLCJFTEVNRU5UX1NUSUxMX0VYSVNUUyIsIkJST1dTRVJfSlNfRVhFQ1VURV9FUlJPUiIsIlRJTUVPVVQiLCJXSU5ET1dfTk9UX0ZPVU5EIiwiVU5FWFBFQ1RFRF9BTEVSVF9PUEVOIiwiTk9fQUxFUlRfT1BFTl9FUlJPUiIsIk1BSUxJTkFUT1JfRVJST1IiLCJBUFBJVU1fVU5SRUFDSEFCTEVfRVJST1IiLCJTRUxFTklVTV9VTlJFQUNIQUJMRV9FUlJPUiIsIkNIUk9NRURSSVZFUl9FUlJPUiIsIldFQkRSSVZFUl9FUlJPUiIsIkRCX0NPTk5FQ1RJT05fRVJST1IiLCJEQl9RVUVSWV9FUlJPUiIsIlNPQVBfRVJST1IiLCJTSEVMTF9FUlJPUiIsIk5PVF9JTVBMRU1FTlRFRF9FUlJPUiIsIlNFUklBTF9QT1JUX0VSUk9SIiwiSFRUUF9FUlJPUiIsIkVNQUlMX0VSUk9SIiwiTU9EVUxFX05PVF9JTklUSUFMSVpFRF9FUlJPUiIsIkRFVklDRV9OT1RfRk9VTkQiLCJQQVJBTUVURVJTX0VSUk9SIiwiSU5WQUxJRF9DQVBBQklMSVRJRVMiLCJCUk9XU0VSX0NPTkZJR1VSQVRJT05fRVJST1IiLCJBUFBJVU1fQ09OTkVDVElPTl9FUlJPUiIsIkFQUElVTV9TRVNTSU9OX0VSUk9SIiwiU0VMRU5JVU1fU0VTU0lPTl9FUlJPUiIsIlNFTEVOSVVNX1NFU1NJT05fVElNRU9VVCIsIlNFTEVOSVVNX0NPTk5FQ1RJT05fRVJST1IiLCJVUkxfT1BFTl9FUlJPUiIsIk9QVElPTl9OT1RfRk9VTkQiLCJBVFRSSUJVVEVfTk9UX0ZPVU5EIiwiRUxFTUVOVF9TVEFURV9FUlJPUiIsIk1PQklMRV9DT05URVhUX0VSUk9SIiwiQVBQTElDQVRJT05fTk9UX0ZPVU5EX0VSUk9SIiwiVFdJTElPX0VSUk9SIiwiSE9PS19FUlJPUiIsIk5PVF9TVVBQT1JURUQiLCJBU1NFUlRfUEFTU0VEIiwiTU9EVUxFX05PVF9GT1VORCIsIkZJTEVfQlJPV1NFX0VSUk9SIiwiQ1NWX0VSUk9SIiwiQ1JZUFRPX0VSUk9SIiwiRE5TX0VSUk9SIiwiQ0lSQ1VMQVJfRVJST1IiLCJYTUxfRVJST1IiLCJDSEFJX0VSUk9SX0NPREVTIiwiQXNzZXJ0aW9uRXJyb3IiLCJTQ1JJUFRfRVJST1JfQ09ERVMiLCJUeXBlRXJyb3IiLCJTeW50YXhFcnJvciIsIlJlZmVyZW5jZUVycm9yIiwibW9kdWxlIiwiZXhwb3J0cyIsImdldEZhaWx1cmVGcm9tRXJyb3IiLCJlcnIiLCJPeEVycm9yIiwiZ2V0T3h5Z2VuRXJyb3IiLCJ0eXBlIiwibWVzc2FnZSIsImRhdGEiLCJsb2NhdGlvbiIsInN0YWNrdHJhY2UiLCJnZXREYkVycm9yTWVzc2FnZSIsIm9kYmNFcnJvcnMiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJtYXAiLCJpdGVtIiwiY21kIiwiYXJncyIsImVyclR5cGUiLCJuYW1lIiwiaW5jbHVkZXMiLCJtYXRjaGVzIiwibWF0Y2giLCJzdGFydHNXaXRoIiwiZXh0cmFjdE9yaWdpbmFsRXJyb3IiLCJPUklHSU5BTF9FUlJPUl9NRVNTQUdFIiwiaW5zcGVjdCIsImNvZGUiLCJlcnJNZXNzYWdlIiwicmVwbGFjZSIsIm94RXJyb3JDb2RlIiwiQVNTRVJUIiwiaW5kZXhPZiIsIlZFUklGWSIsImNvbnNvbGUiLCJsb2ciLCJnZXRTZWxlbml1bUluaXRFcnJvciIsImllWm9vbUVycm9yTXNnIiwidG9TdHJpbmciLCJjaHJvbWVEcml2ZXJNc2ciLCJnZXRBcHBpdW1Jbml0RXJyb3IiLCJnZXRBc3NlcnRFcnJvciIsImV4cGVjdGVkIiwiYWN0dWFsIiwiZXJyb3JDb2RlIiwiVU5LTk9XTl9FUlJPUl9NRVNTQUdFIiwibXNnIiwiZXJyb3JJbmRleDEiLCJlcnJvckluZGV4MiIsInN1YnN0cmluZyIsInVua25vd25FcnJvckluZGV4Il0sIm1hcHBpbmdzIjoiOzs7O0FBYUE7Ozs7QUFDQSxNQUFNQSxJQUFJLEdBQUdDLE9BQU8sQ0FBQyxNQUFELENBQXBCOztBQUVBLE1BQU1DLFdBQVcsR0FBRztBQUNoQkMsRUFBQUEsWUFBWSxFQUFFLGNBREU7QUFFaEJDLEVBQUFBLGFBQWEsRUFBRSxlQUZDO0FBR2hCQyxFQUFBQSxZQUFZLEVBQUUsY0FIRTtBQUloQkMsRUFBQUEsU0FBUyxFQUFFLFdBSks7QUFLaEJDLEVBQUFBLFlBQVksRUFBRSxjQUxFO0FBTWhCQyxFQUFBQSxpQkFBaUIsRUFBRSxtQkFOSDtBQU9oQkMsRUFBQUEsZUFBZSxFQUFFLGlCQVBEO0FBUWhCQyxFQUFBQSxxQkFBcUIsRUFBRSx1QkFSUDtBQVNoQkMsRUFBQUEsdUJBQXVCLEVBQUUseUJBVFQ7QUFVaEJDLEVBQUFBLG1CQUFtQixFQUFFLHFCQVZMO0FBV2hCQyxFQUFBQSx3QkFBd0IsRUFBRSwwQkFYVjtBQVloQkMsRUFBQUEsaUNBQWlDLEVBQUUsbUNBWm5CO0FBYWhCQyxFQUFBQSxvQkFBb0IsRUFBRSxzQkFiTjtBQWNoQkMsRUFBQUEsd0JBQXdCLEVBQUUsMEJBZFY7QUFlaEJDLEVBQUFBLE9BQU8sRUFBRSxTQWZPO0FBZ0JoQkMsRUFBQUEsZ0JBQWdCLEVBQUUsa0JBaEJGO0FBaUJoQkMsRUFBQUEscUJBQXFCLEVBQUUsdUJBakJQO0FBa0JoQkMsRUFBQUEsbUJBQW1CLEVBQUUscUJBbEJMO0FBbUJoQkMsRUFBQUEsZ0JBQWdCLEVBQUUsa0JBbkJGO0FBb0JoQkMsRUFBQUEsd0JBQXdCLEVB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QSxHQUFHLENBQUNHLFNBQUosQ0FBYyxDQUFDRCxXQUFXLEdBQUcsQ0FBQyxDQUFmLEdBQW1CQSxXQUFuQixHQUFpQ0QsV0FBbEMsSUFBa0R0QixzQkFBc0IsQ0FBQ1osTUFBdkYsQ0FBTjtBQUdBLE1BQUlxQyxpQkFBaUIsR0FBR0osR0FBRyxDQUFDZCxPQUFKLENBQVlhLHFCQUFaLENBQXhCOztBQUNBLE1BQUlLLGlCQUFpQixHQUFHLENBQUMsQ0FBekIsRUFBNEI7QUFDeEIsV0FBT0osR0FBRyxDQUFDRyxTQUFKLENBQWNDLGlCQUFpQixHQUFHTCxxQkFBcUIsQ0FBQ2hDLE1BQXhELENBQVA7QUFDSDs7QUFFRCxTQUFPaUMsR0FBUDtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChDKSAyMDE1LXByZXNlbnQgQ2xvdWRCZWF0IExpbWl0ZWRcclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICovXHJcblxyXG4vKipcclxuICogSGVscGVyIG1vZHVsZSBmb3IgaGFuZGxpbmcgYW5kIGNvbnZlcnRpbmcgdmFyaW91cyBlcnJvciB0eXBlc1xyXG4gKi9cclxuXHJcbmltcG9ydCBPeEVycm9yIGZyb20gJy4vT3h5Z2VuRXJyb3InO1xyXG5jb25zdCB1dGlsID0gcmVxdWlyZSgndXRpbCcpO1xyXG5cclxuY29uc3QgRVJST1JfQ09ERVMgPSB7XHJcbiAgICBTQ1JJUFRfRVJST1I6ICdTQ1JJUFRfRVJST1InLFxyXG4gICAgVU5LTk9XTl9FUlJPUjogJ1VOS05PV05fRVJST1InLFxyXG4gICAgQVNTRVJUX0VSUk9SOiAnQVNTRVJUX0VSUk9SJyxcclxuICAgIFBERl9FUlJPUjogJ1BERl9FUlJPUicsXHJcbiAgICBWRVJJRllfRVJST1I6ICdWRVJJRllfRVJST1InLFxyXG4gICAgRUxFTUVOVF9OT1RfRk9VTkQ6ICdFTEVNRU5UX05PVF9GT1VORCcsXHJcbiAgICBGUkFNRV9OT1RfRk9VTkQ6ICdGUkFNRV9OT1RfRk9VTkQnLFxyXG4gICAgVU5LTk9XTl9DT01NQU5EX0VSUk9SOiAnVU5LTk9XTl9DT01NQU5EX0VSUk9SJyxcclxuICAgIFNUQUxFX0VMRU1FTlRfUkVGRVJFTkNFOiAnU1RBTEVfRUxFTUVOVF9SRUZFUkVOQ0UnLFxyXG4gICAgRUxFTUVOVF9OT1RfVklTSUJMRTogJ0VMRU1FTlRfTk9UX1ZJU0lCTEUnLFxyXG4gICAgRUxFTUVOVF9OT1RfSU5URVJBQ1RBQkxFOiAnRUxFTUVOVF9OT1RfSU5URVJBQ1RBQkxFJyxcclxuICAgIExPQ0FUT1JfTUFUQ0hFU19NVUxUSVBMRV9FTEVNRU5UUzogJ0xPQ0FUT1JfTUFUQ0hFU19NVUxUSVBMRV9FTEVNRU5UUycsXHJcbiAgICBFTEVNRU5UX1NUSUxMX0VYSVNUUzogJ0VMRU1FTlRfU1RJTExfRVhJU1RTJyxcclxuICAgIEJST1dTRVJfSlNfRVhFQ1VURV9FUlJPUjogJ0JST1dTRVJfSlNfRVhFQ1VURV9FUlJPUicsXHJcbiAgICBUSU1FT1VUOiAnVElNRU9VVCcsXHJcbiAgICBXSU5ET1dfTk9UX0ZPVU5EOiAnV0lORE9XX05PVF9GT1VORCcsXHJcbiAgICBVTkVYUEVDVEVEX0FMRVJUX09QRU46ICdVTkVYUEVDVEVEX0FMRVJUX09QRU4nLFxyXG4gICAgTk9fQUxFUlRfT1BFTl9FUlJPUjogJ05PX0FMRVJUX09QRU5fRVJST1InLFxyXG4gICAgTUFJTElOQVRPUl9FUlJPUjogJ01BSUxJTkFUT1JfRVJST1InLFxyXG4gICAgQVBQSVVNX1VOUkVBQ0hBQkxFX0VSUk9SOiAnQVBQSVVNX1VOUkVBQ0hBQkxFX0VSUk9SJyxcclxuICAgIFNFTEVOSVVNX1VOUkVBQ0hBQkxFX0VSUk9SOiAnU0VMRU5JVU1fVU5SRUFDSEFCTEVfRVJST1InLFxyXG4gICAgQ0hST01FRFJJVkVSX0VSUk9SOiAnQ0hST01FRFJJVkVSX0VSUk9SJyxcclxuICAgIFdFQkRSSVZFUl9FUlJPUjogJ1dFQkRSSVZFUl9FUlJPUicsXHJcbiAgICBEQl9DT05ORUNUSU9OX0VSUk9SOiAnREJfQ09OTkVDVElPTl9FUlJPUicsXHJcbiAgICBEQl9RVUVSWV9FUlJPUjogJ0RCX1FVRVJZX0VSUk9SJyxcclxuICAgIFNPQVBfRVJST1I6ICdTT0FQX0VSUk9SJyxcclxuICAgIFNIRUxMX0VSUk9SOiAnU0hFTExfRVJST1InLFxyXG4gICAgTk9UX0lNUExFTUVOVEVEX0VSUk9SOiAnTk9UX0lNUExFTUVOVEVEX0VSUk9SJyxcclxuICAgIFNFUklBTF9QT1JUX0VSUk9SOiAnU0VSSUFMX1BPUlRfRVJST1InLFxyXG4gICAgSFRUUF9FUlJPUjogJ0hUVFBfRVJST1InLFxyXG4gICAgRU1BSUxfRVJST1I6ICdFTUFJTF9FUlJPUicsXHJcbiAgICBNT0RVTEVfTk9UX0lOSVRJQUxJWkVEX0VSUk9SOiAnTU9EVUxFX05PVF9JTklUSUFMSVpFRF9FUlJPUicsXHJcbiAgICBERVZJQ0VfTk9UX0ZPVU5EOiAnREVWSUNFX05PVF9GT1VORCcsXHJcbiAgICBQQVJBTUVURVJTX0VSUk9SOiAnUEFSQU1FVEVSU19FUlJPUicsXHJcbiAgICBJTlZBTElEX0NBUEFCSUxJVElFUzogJ0lOVkFMSURfQ0FQQUJJTElUSUVTJyxcclxuICAgIEJST1dTRVJfQ09ORklHVVJBVElPTl9FUlJPUjogJ0JST1dTRVJfQ09ORklHVVJBVElPTl9FUlJPUicsXHJcbiAgICBBUFBJVU1fQ09OTkVDVElPTl9FUlJPUjogJ0FQUElVTV9DT05ORUNUSU9OX0VSUk9SJyxcclxuICAgIEFQUElVTV9TRVNTSU9OX0VSUk9SOiAnQVBQSVVNX1NFU1NJT05fRVJST1InLFxyXG4gICAgU0VMRU5JVU1fU0VTU0lPTl9FUlJPUjogJ1NFTEVOSVVNX1NFU1NJT05fRVJST1InLFxyXG4gICAgU0VMRU5JVU1fU0VTU0lPTl9USU1FT1VUOiAnU0VMRU5JVU1fU0VTU0lPTl9USU1FT1VUJyxcclxuICAgIFNFTEVOSVVNX0NPTk5FQ1RJT05fRVJST1I6ICdTRUxFTklVTV9DT05ORUNUSU9OX0VSUk9SJyxcclxuICAgIFVSTF9PUEVOX0VSUk9SOiAnVVJMX09QRU5fRVJST1InLFxyXG4gICAgT1BUSU9OX05PVF9GT1VORDogJ09QVElPTl9OT1RfRk9VTkQnLFxyXG4gICAgQVRUUklCVVRFX05PVF9GT1VORDogJ0FUVFJJQlVURV9OT1RfRk9VTkQnLFxyXG4gICAgRUxFTUVOVF9TVEFURV9FUlJPUjogJ0VMRU1FTlRfU1RBVEVfRVJST1InLFxyXG4gICAgTU9CSUxFX0NPTlRFWFRfRVJST1I6ICdNT0JJTEVfQ09OVEVYVF9FUlJPUicsXHJcbiAgICBBUFBMSUNBVElPTl9OT1RfRk9VTkRfRVJST1I6ICdBUFBMSUNBVElPTl9OT1RfRk9VTkRfRVJST1InLFxyXG4gICAgVFdJTElPX0VSUk9SOiAnVFdJTElPX0VSUk9SJyxcclxuICAgIEhPT0tfRVJST1I6ICdIT09LX0VSUk9SJyxcclxuICAgIE5PVF9TVVBQT1JURUQ6ICdOT1RfU1VQUE9SVEVEJyxcclxuICAgIEFTU0VSVF9QQVNTRUQ6ICdBU1NFUlRfUEFTU0VEJyxcclxuICAgIE1PRFVMRV9OT1RfRk9VTkQ6ICdNT0RVTEVfTk9UX0ZPVU5EJyxcclxuICAgIEZJTEVfQlJPV1NFX0VSUk9SOiAnRklMRV9CUk9XU0VfRVJST1InLFxyXG4gICAgQ1NWX0VSUk9SOiAnQ1NWX0VSUk9SJyxcclxuICAgIENSWVBUT19FUlJPUjogJ0NSWVBUT19FUlJPUicsXHJcbiAgICBETlNfRVJST1I6ICdETlNfRVJST1InLFxyXG4gICAgQ0lSQ1VMQVJfRVJST1I6ICdDSVJDVUxBUl9FUlJPUicsXHJcbiAgICBYTUxfRVJST1I6ICdYTUxfRVJST1InXHJcbn07XHJcblxyXG4vLyBDaGFpIHRvIE94eWdlbiBlcnJvciBjb2RlcyBtYXBwaW5nXHJcbmNvbnN0IENIQUlfRVJST1JfQ09ERVMgPSB7XHJcbiAgICBBc3NlcnRpb25FcnJvcjogRVJST1JfQ09ERVMuQVNTRVJUX0VSUk9SXHJcbn07XHJcblxyXG4vLyBHZW5lcmFsIEphdmFTY3JpcHQgZXJyb3IgY29kZXMgbWFwcGluZ1xyXG5jb25zdCBTQ1JJUFRfRVJST1JfQ09ERVMgPSB7XHJcbiAgICBUeXBlRXJyb3I6IEVSUk9SX0NPREVTLlNDUklQVF9FUlJPUixcclxuICAgIFN5bnRheEVycm9yOiBFUlJPUl9DT0RFUy5TQ1JJUFRfRVJST1IsXHJcbiAgICBSZWZlcmVuY2VFcnJvcjogRVJST1JfQ09ERVMuU0NSSVBUX0VSUk9SLFxyXG59O1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSB7XHJcbiAgICBnZXRGYWlsdXJlRnJvbUVycm9yOiBmdW5jdGlvbihlcnIpIHtcclxuICAgICAgICBpZiAoIWVycikge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCEoZXJyIGluc3RhbmNlb2YgT3hFcnJvcikpIHtcclxuICAgICAgICAgICAgZXJyID0gdGhpcy5nZXRPeHlnZW5FcnJvcihlcnIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB0eXBlOiBlcnIudHlwZSxcclxuICAgICAgICAgICAgbWVzc2FnZTogZXJyLm1lc3NhZ2UsXHJcbiAgICAgICAgICAgIGRhdGE6IGVyci5kYXRhLFxyXG4gICAgICAgICAgICBsb2NhdGlvbjogZXJyLmxvY2F0aW9uLFxyXG4gICAgICAgICAgICBzdGFja3RyYWNlOiBlcnIuc3RhY2t0cmFjZSB8fCBudWxsXHJcbiAgICAgICAgfTtcclxuICAgIH0sXHJcbiAgICBnZXREYkVycm9yTWVzc2FnZTogZnVuY3Rpb24oZXJyKSB7XHJcbiAgICAgICAgbGV0IG1lc3NhZ2UgPSAnJztcclxuXHJcbiAgICAgICAgaWYgKGVyciAmJiBlcnIubWVzc2FnZSkge1xyXG4gICAgICAgICAgICBtZXNzYWdlICs9IGVyci5tZXNzYWdlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBlcnIgJiZcclxuICAgICAgICAgICAgZXJyLm9kYmNFcnJvcnMgJiZcclxuICAgICAgICAgICAgQXJyYXkuaXNBcnJheShlcnIub2RiY0Vycm9ycykgJiZcclxuICAgICAgICAgICAgZXJyLm9kYmNFcnJvcnMubGVuZ3RoID4gMFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICBlcnIub2RiY0Vycm9ycy5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICBpdGVtICYmXHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5tZXNzYWdlXHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlICs9ICc6ICcgK2l0ZW0ubWVzc2FnZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbWVzc2FnZTtcclxuICAgIH0sXHJcbiAgICBnZXRPeHlnZW5FcnJvcjogZnVuY3Rpb24oZXJyLCBtb2R1bGUsIGNtZCwgYXJncykge1xyXG4gICAgICAgIC8vIHJldHVybiB0aGUgZXJyb3IgYXMgaXMgaWYgaXQgaGFzIGJlZW4gYWxyZWFkeSBwcm9jZXNzZWRcclxuICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2YgT3hFcnJvcikge1xyXG4gICAgICAgICAgICByZXR1cm4gZXJyO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdmFyIGVyclR5cGUgPSBlcnIudHlwZSB8fCBlcnIubmFtZSB8fCB0eXBlb2YgZXJyO1xyXG4gICAgICAgIC8vIGhhbmRsZSBcIkNhbid0IGNhbGwgPGNvbW1hbmQ+IG9uIGVsZW1lbnQgd2l0aCBzZWxlY3RvciA8c2VsZWN0b3I+IGJlY2F1c2UgZWxlbWVudCB3YXNuJ3QgZm91bmRcIlxyXG4gICAgICAgIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygnYmVjYXVzZSBlbGVtZW50IHdhc25cXCd0IGZvdW5kJykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLkVMRU1FTlRfTk9UX0ZPVU5ELCBlcnIubWVzc2FnZSwgbnVsbCwgdHJ1ZSwgZXJyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gaGFuZGxlIFwiaW52YWxpZCBhcmd1bWVudDogVW5zdXBwb3J0ZWQgbG9jYXRvciBzdHJhdGVneTogLWFuZHJvaWQgdWlhdXRvbWF0b3JcIiBmb3IgbW9iaWxlLlxyXG4gICAgICAgIC8vIHVzdWFsbHkgZHVlIHRvIG5vdCB1c2luZyB0aGUgY29ycmVjdCBjb250ZXh0XHJcbiAgICAgICAgZWxzZSBpZiAoZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ1Vuc3VwcG9ydGVkIGxvY2F0b3Igc3RyYXRlZ3knKSkge1xyXG4gICAgICAgICAgICBsZXQgbWF0Y2hlcyA9IGVyci5tZXNzYWdlLm1hdGNoKC9pbnZhbGlkIGFyZ3VtZW50OiAoLiopL2kpO1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuTU9CSUxFX0NPTlRFWFRfRVJST1IsIChtYXRjaGVzLmxlbmd0aCA9PT0gMiA/IG1hdGNoZXNbMV0gOiBlcnIubWVzc2FnZSkgK1xyXG4gICAgICAgICAgICAgICAgJy4gTWFrZSBzdXJlIHlvdSBhcmUgdXNpbmcgdGhlIGNvcnJlY3QgbW9iaWxlIGNvbnRleHQuIFNlZSBtb2Iuc2V0TmF0aXZlQ29udGV4dCBhbmQgbW9iLnNldFdlYlZpZXdDb250ZXh0LicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBoYW5kbGUgXCJpbnZhbGlkIHNlbGVjdG9yOiBVbmFibGUgdG8gbG9jYXRlIGFuIGVsZW1lbnQgd2l0aCB0aGUgeHBhdGggZXhwcmVzc2lvblwiXHJcbiAgICAgICAgLy8gdXN1YWxseSBkdWUgdG8gaW52YWxpZCB4cGF0aFxyXG4gICAgICAgIGVsc2UgaWYgKGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLmluY2x1ZGVzKCdVbmFibGUgdG8gbG9jYXRlIGFuIGVsZW1lbnQgd2l0aCB0aGUgeHBhdGggZXhwcmVzc2lvbicpKSB7XHJcbiAgICAgICAgICAgIGxldCBtYXRjaGVzID0gZXJyLm1lc3NhZ2UubWF0Y2goLyhUaGUgc3RyaW5nICcuKicgaXMgbm90IGEgdmFsaWQgWFBhdGggZXhwcmVzc2lvbi4pL2kpO1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuU0NSSVBUX0VSUk9SLCAobWF0Y2hlcyAmJiBtYXRjaGVzLmxlbmd0aCA9PT0gMiA/IG1hdGNoZXNbMV0gOiBlcnIubWVzc2FnZSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBpbnZhbGlkIGNzcyBsb2NhdG9yIG9uIENocm9tZS9JRS4gZS5nLiBjc3M9I1xcOnAwXHJcbiAgICAgICAgZWxzZSBpZiAoZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ0FuIGludmFsaWQgb3IgaWxsZWdhbCBzZWxlY3RvciB3YXMgc3BlY2lmaWVkJykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlNDUklQVF9FUlJPUiwgJ0FuIGludmFsaWQgb3IgaWxsZWdhbCBzZWxlY3RvciB3YXMgc3BlY2lmaWVkJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGludmFsaWQgY3NzIGxvY2F0b3Igb24gRmlyZWZveC4gZS5nLiBjc3M9I1xcOnAwXHJcbiAgICAgICAgZWxzZSBpZiAoZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2Uuc3RhcnRzV2l0aCgnR2l2ZW4gY3NzIHNlbGVjdG9yIGV4cHJlc3Npb24nKSkge1xyXG4gICAgICAgICAgICBsZXQgbWF0Y2hlcyA9IGVyci5tZXNzYWdlLm1hdGNoKC8oR2l2ZW4gY3NzIHNlbGVjdG9yIGV4cHJlc3Npb24gXCIuKlwiIGlzIGludmFsaWQpLiovaSk7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5TQ1JJUFRfRVJST1IsIChtYXRjaGVzICYmIG1hdGNoZXMubGVuZ3RoID09PSAyID8gbWF0Y2hlc1sxXSA6IGVyci5tZXNzYWdlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGVyci5tZXNzYWdlICYmIChlcnIubWVzc2FnZS5pbmNsdWRlcygnVW5hYmxlIHRvIGF1dG9tYXRlIENocm9tZSB2ZXJzaW9uJykgfHxcclxuICAgICAgICAgICAgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ05vIENocm9tZWRyaXZlciBmb3VuZCB0aGF0IGNhbiBhdXRvbWF0ZScpKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuQ0hST01FRFJJVkVSX0VSUk9SLCBleHRyYWN0T3JpZ2luYWxFcnJvcihlcnIubWVzc2FnZSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBoYW5kbGUgdmFyaW91cyB0eXBlcyBvZiAnT3JpZ2luYWwgZXJyb3InXHJcbiAgICAgICAgZWxzZSBpZiAoZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoT1JJR0lOQUxfRVJST1JfTUVTU0FHRSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlVOS05PV05fRVJST1IsIGV4dHJhY3RPcmlnaW5hbEVycm9yKGVyci5tZXNzYWdlKSwgdXRpbC5pbnNwZWN0KGVycikpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBpbnZhbGlkIFVSTCBpbiBvcGVuIGNvbW1hbmRcclxuICAgICAgICBlbHNlIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygnSW52YWxpZCBVUkwnKSkge1xyXG4gICAgICAgICAgICBsZXQgbWF0Y2hlcyA9IGVyci5tZXNzYWdlLm1hdGNoKC8oIEludmFsaWQgVVJMOiAuKiQpLiovaSk7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5TQ1JJUFRfRVJST1IsIChtYXRjaGVzICYmIG1hdGNoZXMubGVuZ3RoID09PSAyID8gbWF0Y2hlc1sxXSA6IGVyci5tZXNzYWdlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHVzdWFsbHkgb24gbW9iaWxlIENocm9tZSB3aGVuIGVsZW1lbnQgaXMgb3ZlcmxhcHBlZCBieSBhbm90aGVyIGVsZW1lbnRcclxuICAgICAgICBlbHNlIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5zdGFydHNXaXRoKCdlbGVtZW50IGNsaWNrIGludGVyY2VwdGVkJykpIHtcclxuICAgICAgICAgICAgbGV0IG1hdGNoZXMgPSBlcnIubWVzc2FnZS5tYXRjaCgvZWxlbWVudCBjbGljayBpbnRlcmNlcHRlZDogKC4qKS9pKTtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLkVMRU1FTlRfTk9UX1ZJU0lCTEUsIChtYXRjaGVzICYmIG1hdGNoZXMubGVuZ3RoID09PSAyID8gbWF0Y2hlc1sxXSA6IGVyci5tZXNzYWdlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHVzdWFsbHkgYmVjYXVzZSBTZWxlbml1bSBoYXMga2lsbGVkIHRoZSBzZXNzaW9uIGR1ZSB0byBleGNlZWRpbmcgJy10aW1lb3V0JyB0aW1lb3V0XHJcbiAgICAgICAgZWxzZSBpZiAoZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2Uuc3RhcnRzV2l0aCgnTm8gYWN0aXZlIHNlc3Npb24gd2l0aCBJRCcpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5TRUxFTklVTV9TRVNTSU9OX0VSUk9SLCAnRXhlY3V0aW9uIHRpbWUgZXhjZWVkZWQgdGhlIHRpbWVvdXQgc2V0IGJ5IFNlbGVuaXVtJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHdoZW4gZHJpdmVyIChJRURyaXZlclNlcnZlciwgQ2hyb21lRHJpdmVyLCBldGMpIGNyYXNoZXNcclxuICAgICAgICBlbHNlIGlmIChlcnIubWVzc2FnZSA9PT0gJ2phdmEubmV0LkNvbm5lY3RFeGNlcHRpb246IENvbm5lY3Rpb24gcmVmdXNlZDogY29ubmVjdCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLldFQkRSSVZFUl9FUlJPUiwgJ1RoZSB1bmRlcmx5aW5nIFdlYkRyaXZlciBzZWVtcyB0byBoYXZlIGNyYXNoZWQ6ICcgKyBlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHN0YWxlIGVsZW1lbnQgcmVmZXJlbmNlXHJcbiAgICAgICAgZWxzZSBpZiAoZXJyLm5hbWUgJiYgZXJyLm5hbWUuaW5jbHVkZXMoJ3N0YWxlIGVsZW1lbnQgcmVmZXJlbmNlJykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlNUQUxFX0VMRU1FTlRfUkVGRVJFTkNFLCBlcnIubmFtZSArICcgJyArIGVyci5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoZXJyLmNvZGUgJiYgZXJyLmNvZGUgPT09ICdNT0RVTEVfTk9UX0ZPVU5EJykge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuTU9EVUxFX05PVF9GT1VORCwgZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyAgd2hlbiBkb2luZyBhbiBvcGVyYXRpb24gb24gYW4gZWxlbWVudCAoZS5nLiBjbGljaykgYnV0IHRoZSB3aW5kb3cgd2FzIGFscmVhZHkgY2xvc2VkXHJcbiAgICAgICAgZWxzZSBpZiAoZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ25vIHN1Y2ggd2luZG93JykgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ3RhcmdldCB3aW5kb3cgYWxyZWFkeSBjbG9zZWQnKSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygnd2ViIHZpZXcgbm90IGZvdW5kJykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLldJTkRPV19OT1RfRk9VTkQsIGVyci5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gZXhhbXBsZTogVGhlIGVsZW1lbnQgd2l0aCBzZWxlY3RvciAqKiogeW91IHRyeWluZyB0byBwYXNzIGludG8gdGhlIGV4ZWN1dGUgbWV0aG9kIHdhc24ndCBmb3VuZFxyXG4gICAgICAgIC8vIHdoZW4gZWxlbWVudCB3YXMgZGVsZXRlZCBmcm9tIERPTVxyXG4gICAgICAgIGVsc2UgaWYgKGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLmluY2x1ZGVzKCd5b3UgdHJ5aW5nIHRvIHBhc3MgaW50byB0aGUgZXhlY3V0ZSBtZXRob2Qgd2FzblxcJ3QgZm91bmQnKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuRUxFTUVOVF9OT1RfRk9VTkQsICBlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHdoZW4gZG9pbmcgYW4gb3BlcmF0aW9uIG9uIGFuIGVsZW1lbnQgcmVmZXJlbmNlIChlLmcuIGNsaWNrKSBidXQgdGhlIHBhZ2Ugd2FzIGFscmVhZHkgY2hhbmdlZFxyXG4gICAgICAgIGVsc2UgaWYgKGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLmluY2x1ZGVzKCdlbGVtZW50IG5vdCBpbnRlcmFjdGFibGUnKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuRUxFTUVOVF9OT1RfSU5URVJBQ1RBQkxFLCBlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGludmFsaWQgc2VsZWN0b3I6IGphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb246IFVuYWJsZSB0byBjb21waWxlIHNlbGVjdG9yIC4uLlxyXG4gICAgICAgIGVsc2UgaWYgKFxyXG4gICAgICAgICAgICBlcnIubmFtZSAmJlxyXG4gICAgICAgICAgICBlcnIubmFtZSA9PT0gJ2ludmFsaWQgc2VsZWN0b3InXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5TQ1JJUFRfRVJST1IsIGVyci5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gUmVxdWVzdEVycm9yOiBUaW1lb3V0IGF3YWl0aW5nICdyZXF1ZXN0JyBmb3IgMzEwMDAwbXMsIG5hbWU6ICdUaW1lb3V0RXJyb3InXHJcbiAgICAgICAgZWxzZSBpZiAoZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ1RpbWVvdXQgYXdhaXRpbmcgXFwncmVxdWVzdFxcJyBmb3InKSkge1xyXG4gICAgICAgICAgICBjb25zdCBlcnJNZXNzYWdlID0gZXJyLm1lc3NhZ2UucmVwbGFjZShcclxuICAgICAgICAgICAgICAgICdUaW1lb3V0IGF3YWl0aW5nIFxcJ3JlcXVlc3RcXCcgZm9yJyxcclxuICAgICAgICAgICAgICAgICdDb3VsZG5cXCd0IGdldCBhIHJlc3BvbnNlIGZyb20gU2VsZW5pdW0vV2ViRHJpdmVyIHdpdGhpbidcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlNFTEVOSVVNX1NFU1NJT05fVElNRU9VVCwgZXJyTWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGVyciAmJiBlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygnc29ja2V0IGhhbmcgdXAnKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuU0VMRU5JVU1fU0VTU0lPTl9USU1FT1VULCBlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChlcnIgJiYgZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ1RpbWVkIG91dCByZWNlaXZpbmcgbWVzc2FnZSBmcm9tIHJlbmRlcmUnKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuU0VMRU5JVU1fU0VTU0lPTl9USU1FT1VULCBlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyB0cnkgdG8gcmVzb2x2ZSBDaGFpIGVycm9yIGNvZGVcclxuICAgICAgICB2YXIgb3hFcnJvckNvZGUgPSBDSEFJX0VSUk9SX0NPREVTW2VyclR5cGVdO1xyXG4gICAgICAgIGlmIChveEVycm9yQ29kZSkge1xyXG4gICAgICAgICAgICAvLyB0aHJvdyBub24tZmF0YWwgZXJyb3IgaWYgaXQncyBhIFwidmVyaWZ5XCIgbW9kdWxlIG9yIG1ldGhvZCBcclxuICAgICAgICAgICAgaWYgKG94RXJyb3JDb2RlID09PSBFUlJPUl9DT0RFUy5BU1NFUlQgJiZcclxuXHRcdFx0XHQobW9kdWxlID09PSAndmVyaWZ5JyB8fCBjbWQuaW5kZXhPZigndmVyaWZ5JykgPT09IDApKSB7IC8vIHZlcmlmeS4qLCAqLnZlcmlmeSpcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5WRVJJRlksIGVyci5tZXNzYWdlLCBudWxsLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKG94RXJyb3JDb2RlLCBlcnIubWVzc2FnZSwgbnVsbCwgdHJ1ZSwgZXJyKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHRyeSB0byByZXNvbHZlIEphdmFTY3JpcHQgZXJyb3IgY29kZVxyXG4gICAgICAgIG94RXJyb3JDb2RlID0gU0NSSVBUX0VSUk9SX0NPREVTW2VyclR5cGVdO1xyXG4gICAgICAgIGlmIChveEVycm9yQ29kZSkge1xyXG4gICAgICAgICAgICAvLyB0aHJvdyBub24tZmF0YWwgZXJyb3IgaWYgaXQncyBhIFwidmVyaWZ5XCIgbW9kdWxlIG9yIG1ldGhvZCBcclxuICAgICAgICAgICAgaWYgKG94RXJyb3JDb2RlID09PSBFUlJPUl9DT0RFUy5BU1NFUlQgJiZcclxuXHRcdFx0XHQobW9kdWxlID09PSAndmVyaWZ5JyB8fCBjbWQuaW5kZXhPZigndmVyaWZ5JykgPT09IDApKSB7IC8vIHZlcmlmeS4qLCAqLnZlcmlmeSpcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5WRVJJRlksIGVyci5tZXNzYWdlLCBudWxsLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKG94RXJyb3JDb2RlLCBlcnIubWVzc2FnZSB8fCBudWxsLCBudWxsLCB0cnVlLCBlcnIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc29sZS5sb2coJz09PSBFcnJvciBEZXRhaWxzID09PScpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdUeXBlOiAnICsgZXJyLnR5cGUgKyAnIE5hbWU6ICcgKyBlcnIubmFtZSArICcgQ29kZTogJyArIGVyci5jb2RlICsgJyBNc2c6ICcgKyBlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgY29uc29sZS5sb2codXRpbC5pbnNwZWN0KGVycikpO1xyXG5cclxuICAgICAgICBjb25zdCBlcnJNZXNzYWdlID0gZXJyLm1lc3NhZ2UgPyBgJHtlcnJUeXBlfTogJHtlcnIubWVzc2FnZX1gIDogYCR7ZXJyVHlwZX1gO1xyXG4gICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5VTktOT1dOX0VSUk9SLCBlcnJNZXNzYWdlLCB1dGlsLmluc3BlY3QoZXJyKSwgdHJ1ZSwgZXJyKTtcclxuICAgIH0sXHJcbiAgICBnZXRTZWxlbml1bUluaXRFcnJvcjogZnVuY3Rpb24oZXJyKSB7XHJcbiAgICAgICAgaWYgKGVyci5tZXNzYWdlKSB7XHJcbiAgICAgICAgICAgIHZhciBpZVpvb21FcnJvck1zZyA9IGVyci5tZXNzYWdlLm1hdGNoKC8oVW5leHBlY3RlZCBlcnJvciBsYXVuY2hpbmcgSW50ZXJuZXQgRXhwbG9yZXJcXC4gQnJvd3NlciB6b29tIGxldmVsIHdhcyBzZXQgdG8gXFxkKyVcXC4gSXQgc2hvdWxkIGJlIHNldCB0byBcXGQrJSkvZ20pO1xyXG4gICAgICAgICAgICBpZiAoaWVab29tRXJyb3JNc2cpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5CUk9XU0VSX0NPTkZJR1VSQVRJT05fRVJST1IsIGllWm9vbUVycm9yTXNnLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ1VuYWJsZSB0byBjcmVhdGUgbmV3IHNlcnZpY2U6IENocm9tZURyaXZlclNlcnZpY2UnKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLkNIUk9NRURSSVZFUl9FUlJPUiwgZXJyLm1lc3NhZ2UsIG51bGwsIHRydWUsIGVycik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChlcnIubWVzc2FnZS5pbmNsdWRlcygnVW5hYmxlIHRvIGNyZWF0ZSBuZXcgc2VydmljZTonKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlNFTEVOSVVNX1VOUkVBQ0hBQkxFX0VSUk9SLCBlcnIubWVzc2FnZSwgbnVsbCwgdHJ1ZSwgZXJyKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdmFyIGNocm9tZURyaXZlck1zZyA9IGVyci5tZXNzYWdlLm1hdGNoKC8oVGhpcyB2ZXJzaW9uIG9mIENocm9tZURyaXZlciBvbmx5IHN1cHBvcnRzIENocm9tZSB2ZXJzaW9uIFswLTldKikvZ20pO1xyXG4gICAgICAgICAgICBpZiAoY2hyb21lRHJpdmVyTXNnKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuQ0hST01FRFJJVkVSX0VSUk9SLCBjaHJvbWVEcml2ZXJNc2cudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygnY2Fubm90IGZpbmQgQ2hyb21lIGJpbmFyeScpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5DSFJPTUVEUklWRVJfRVJST1IsICdDYW5ub3QgZmluZCBDaHJvbWUgYmluYXJ5Jyk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChlcnIuY29kZSA9PT0gJ0VDT05OUkVGVVNFRCcgfHwgZXJyLmNvZGUgPT09ICdFQ09OTlJFU0VUJyB8fCBlcnIuY29kZSA9PT0gJ0VOT1RGT1VORCcgfHwgZXJyLm1lc3NhZ2UgPT09ICdGYWlsZWQgdG8gY3JlYXRlIHNlc3Npb24uXFxuc29ja2V0IGhhbmcgdXAnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5TRUxFTklVTV9VTlJFQUNIQUJMRV9FUlJPUiwgXCJDb3VsZG4ndCBjb25uZWN0IHRvIFNlbGVuaXVtIHNlcnZlclwiKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGVyci5tZXNzYWdlID09PSAnQWxsIG1pbnV0ZXMgZm9yIHRoaXMgb3JnYW5pemF0aW9uIGhhcyBiZWVuIGV4YXVzdGVkJyB8fFxyXG4gICAgICAgICAgICBlcnIubWVzc2FnZSA9PT0gJzQwMSBVbmF1dGhvcml6ZWQnIHx8XHJcbiAgICAgICAgICAgIGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLnN0YXJ0c1dpdGgoJ0ZhaWxlZCB0byBjcmVhdGUgc2Vzc2lvbi4nKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuU0VMRU5JVU1fQ09OTkVDVElPTl9FUlJPUiwgZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ1VuYWJsZSB0byBjcmVhdGUgbmV3IHNlcnZpY2U6JykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlNFTEVOSVVNX0NPTk5FQ1RJT05fRVJST1IsIGVyci5tZXNzYWdlICsgJ1xcblxcblRoaXMgaXMgcHJvYmFibHkgZHVlIHRvIG1pc3NpbmcgQ2hyb21lRHJpdmVyL0lFRHJpdmVyU2VydmVyL0dlY2tvRHJpdmVyIGJpbmFyeS5cXG4nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnNvbGUubG9nKCc9PT0gRXJyb3IgRGV0YWlscyA9PT0nKTtcclxuICAgICAgICBjb25zb2xlLmxvZygnVHlwZTogJyArIGVyci50eXBlICsgJyBOYW1lOiAnICsgZXJyLm5hbWUgKyAnIENvZGU6ICcgKyBlcnIuY29kZSArICcgTXNnOiAnICsgZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHV0aWwuaW5zcGVjdChlcnIpKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlVOS05PV05fRVJST1IsIGVyci50eXBlICsgJzogJyArIGVyci5tZXNzYWdlLCB1dGlsLmluc3BlY3QoZXJyKSk7XHJcbiAgICB9LFxyXG4gICAgZ2V0QXBwaXVtSW5pdEVycm9yOiBmdW5jdGlvbihlcnIpIHtcclxuICAgICAgICBpZiAoZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ2Nhbm5vdCBmaW5kIENocm9tZSBiaW5hcnknKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuQ0hST01FRFJJVkVSX0VSUk9SLCAnQ2Fubm90IGZpbmQgQ2hyb21lIGJpbmFyeScpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXJyLmNvZGUgPT09ICdFQ09OTlJFRlVTRUQnIHx8IGVyci5jb2RlID09PSAnRUNPTk5SRVNFVCcgfHwgZXJyLmNvZGUgPT09ICdFTk9URk9VTkQnIHx8IGVyci5tZXNzYWdlID09PSAnRmFpbGVkIHRvIGNyZWF0ZSBzZXNzaW9uLlxcbnNvY2tldCBoYW5nIHVwJykge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuQVBQSVVNX1VOUkVBQ0hBQkxFX0VSUk9SLCBcIkNvdWxkbid0IGNvbm5lY3QgdG8gQXBwaXVtIHNlcnZlclwiKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLmluY2x1ZGVzKCdDb3VsZCBub3QgZmluZCBhIGNvbm5lY3RlZCBBbmRyb2lkIGRldmljZScpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5ERVZJQ0VfTk9UX0ZPVU5ELCAnQ291bGQgbm90IGZpbmQgYSBjb25uZWN0ZWQgQW5kcm9pZCBkZXZpY2UnKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLmluY2x1ZGVzKCdVbmFibGUgdG8gYXV0b21hdGUgQ2hyb21lIHZlcnNpb24nKSkgeyAgICAgICAgICAvLyBhcHBpdW0gPD0gMS4xNFxyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuQ0hST01FRFJJVkVSX0VSUk9SLCBleHRyYWN0T3JpZ2luYWxFcnJvcihlcnIubWVzc2FnZSkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ05vIENocm9tZWRyaXZlciBmb3VuZCB0aGF0IGNhbiBhdXRvbWF0ZScpKSB7ICAgIC8vIGFwcGl1bSA+PSAxLjE1XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5DSFJPTUVEUklWRVJfRVJST1IsIGV4dHJhY3RPcmlnaW5hbEVycm9yKGVyci5tZXNzYWdlKSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygnVW5hYmxlIHRvIGZpbmQgYW4gYWN0aXZlIGRldmljZSBvciBlbXVsYXRvciB3aXRoJykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLkRFVklDRV9OT1RfRk9VTkQsIGV4dHJhY3RPcmlnaW5hbEVycm9yKGVyci5tZXNzYWdlKSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygnaXMgbm90IGluc3RhbGxlZCBvbiBkZXZpY2UnKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuQVBQTElDQVRJT05fTk9UX0ZPVU5EX0VSUk9SLCBleHRyYWN0T3JpZ2luYWxFcnJvcihlcnIubWVzc2FnZSkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXJyLm1lc3NhZ2UgPT09ICdBbGwgbWludXRlcyBmb3IgdGhpcyBvcmdhbml6YXRpb24gaGFzIGJlZW4gZXhhdXN0ZWQnIHx8XHJcbiAgICAgICAgICAgIGVyci5tZXNzYWdlID09PSAnNDAxIFVuYXV0aG9yaXplZCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLkFQUElVTV9DT05ORUNUSU9OX0VSUk9SLCBlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChlcnIubWVzc2FnZSAmJiAoXHJcbiAgICAgICAgICAgICAgICBlcnIubWVzc2FnZS5pbmNsdWRlcygnQSBuZXcgc2Vzc2lvbiBjb3VsZCBub3QgYmUgY3JlYXRlZC4nKSB8fFxyXG4gICAgICAgICAgICAgICAgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ0ZhaWxlZCB0byBjcmVhdGUgc2Vzc2lvbi4nKSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLkFQUElVTV9TRVNTSU9OX0VSUk9SLCBleHRyYWN0T3JpZ2luYWxFcnJvcihlcnIubWVzc2FnZSksIG51bGwsIHRydWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc29sZS5sb2coJz09PSBFcnJvciBEZXRhaWxzID09PScpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdUeXBlOiAnICsgZXJyLnR5cGUgKyAnIE5hbWU6ICcgKyBlcnIubmFtZSArICcgQ29kZTogJyArIGVyci5jb2RlICsgJyBNc2c6ICcgKyBlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgY29uc29sZS5sb2codXRpbC5pbnNwZWN0KGVycikpO1xyXG5cclxuICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuVU5LTk9XTl9FUlJPUiwgZXh0cmFjdE9yaWdpbmFsRXJyb3IoZXJyLm1lc3NhZ2UpLCB1dGlsLmluc3BlY3QoZXJyKSk7XHJcbiAgICB9LFxyXG4gICAgZ2V0QXNzZXJ0RXJyb3I6IGZ1bmN0aW9uKGV4cGVjdGVkLCBhY3R1YWwpIHtcclxuICAgICAgICBhY3R1YWwgPSBhY3R1YWwudG9TdHJpbmcoKS5yZXBsYWNlKC9cXG4vZywgJ1xcXFxuJyk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLkFTU0VSVF9FUlJPUiwgYEV4cGVjdGVkOiBcIiR7ZXhwZWN0ZWR9XCIuIEdvdDogXCIke2FjdHVhbH1cImApO1xyXG4gICAgfSxcclxuICAgIGVycm9yQ29kZTogRVJST1JfQ09ERVNcclxufTtcclxuXHJcbmNvbnN0IE9SSUdJTkFMX0VSUk9SX01FU1NBR0UgPSAnT3JpZ2luYWwgZXJyb3I6ICc7XHJcbmNvbnN0IFVOS05PV05fRVJST1JfTUVTU0FHRSA9ICd1bmtub3duIGVycm9yOiAnO1xyXG5cclxuZnVuY3Rpb24gZXh0cmFjdE9yaWdpbmFsRXJyb3IobXNnKSB7XHJcbiAgICBpZiAoIW1zZykge1xyXG4gICAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuXHJcbiAgICB2YXIgZXJyb3JJbmRleDEgPSBtc2cuaW5kZXhPZihPUklHSU5BTF9FUlJPUl9NRVNTQUdFKTtcclxuICAgIGlmIChlcnJvckluZGV4MSA9PT0gLTEpIHtcclxuICAgICAgICByZXR1cm4gbXNnO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHRoZXJlIGNvdWxkIGFub3RoZSBuZXN0ZWQgXCJvcmlnaW5hbCBlcnJvclwiXHJcbiAgICB2YXIgZXJyb3JJbmRleDIgPSBtc2cuaW5kZXhPZihPUklHSU5BTF9FUlJPUl9NRVNTQUdFLCBlcnJvckluZGV4MSArIE9SSUdJTkFMX0VSUk9SX01FU1NBR0UubGVuZ3RoKTtcclxuXHJcbiAgICBtc2cgPSBtc2cuc3Vic3RyaW5nKChlcnJvckluZGV4MiA+IC0xID8gZXJyb3JJbmRleDIgOiBlcnJvckluZGV4MSkgICsgT1JJR0lOQUxfRVJST1JfTUVTU0FHRS5sZW5ndGgpO1xyXG5cclxuICAgIC8vIHN0cmlwICd1bmtub3duIGVycm9yOidcclxuICAgIHZhciB1bmtub3duRXJyb3JJbmRleCA9IG1zZy5pbmRleE9mKFVOS05PV05fRVJST1JfTUVTU0FHRSk7XHJcbiAgICBpZiAodW5rbm93bkVycm9ySW5kZXggPiAtMSkge1xyXG4gICAgICAgIHJldHVybiBtc2cuc3Vic3RyaW5nKHVua25vd25FcnJvckluZGV4ICsgVU5LTk9XTl9FUlJPUl9NRVNTQUdFLmxlbmd0aCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG1zZztcclxufVxyXG4iXX0=
|
|
285
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lcnJvcnMvaGVscGVyLmpzIl0sIm5hbWVzIjpbInV0aWwiLCJyZXF1aXJlIiwiRVJST1JfQ09ERVMiLCJTQ1JJUFRfRVJST1IiLCJVTktOT1dOX0VSUk9SIiwiQVNTRVJUX0VSUk9SIiwiUERGX0VSUk9SIiwiVkVSSUZZX0VSUk9SIiwiRUxFTUVOVF9OT1RfRk9VTkQiLCJGUkFNRV9OT1RfRk9VTkQiLCJVTktOT1dOX0NPTU1BTkRfRVJST1IiLCJTVEFMRV9FTEVNRU5UX1JFRkVSRU5DRSIsIkVMRU1FTlRfTk9UX1ZJU0lCTEUiLCJFTEVNRU5UX05PVF9JTlRFUkFDVEFCTEUiLCJMT0NBVE9SX01BVENIRVNfTVVMVElQTEVfRUxFTUVOVFMiLCJFTEVNRU5UX1NUSUxMX0VYSVNUUyIsIkJST1dTRVJfSlNfRVhFQ1VURV9FUlJPUiIsIlRJTUVPVVQiLCJXSU5ET1dfTk9UX0ZPVU5EIiwiVU5FWFBFQ1RFRF9BTEVSVF9PUEVOIiwiTk9fQUxFUlRfT1BFTl9FUlJPUiIsIk1BSUxJTkFUT1JfRVJST1IiLCJBUFBJVU1fVU5SRUFDSEFCTEVfRVJST1IiLCJTRUxFTklVTV9VTlJFQUNIQUJMRV9FUlJPUiIsIkNIUk9NRURSSVZFUl9FUlJPUiIsIldFQkRSSVZFUl9FUlJPUiIsIkRCX0NPTk5FQ1RJT05fRVJST1IiLCJEQl9RVUVSWV9FUlJPUiIsIlNPQVBfRVJST1IiLCJOT1RfSU1QTEVNRU5URURfRVJST1IiLCJTRVJJQUxfUE9SVF9FUlJPUiIsIkhUVFBfRVJST1IiLCJFTUFJTF9FUlJPUiIsIk1PRFVMRV9OT1RfSU5JVElBTElaRURfRVJST1IiLCJERVZJQ0VfTk9UX0ZPVU5EIiwiUEFSQU1FVEVSU19FUlJPUiIsIklOVkFMSURfQ0FQQUJJTElUSUVTIiwiQlJPV1NFUl9DT05GSUdVUkFUSU9OX0VSUk9SIiwiQVBQSVVNX0NPTk5FQ1RJT05fRVJST1IiLCJBUFBJVU1fU0VTU0lPTl9FUlJPUiIsIlNFTEVOSVVNX1NFU1NJT05fRVJST1IiLCJTRUxFTklVTV9TRVNTSU9OX1RJTUVPVVQiLCJTRUxFTklVTV9DT05ORUNUSU9OX0VSUk9SIiwiVVJMX09QRU5fRVJST1IiLCJPUFRJT05fTk9UX0ZPVU5EIiwiQVRUUklCVVRFX05PVF9GT1VORCIsIkVMRU1FTlRfU1RBVEVfRVJST1IiLCJNT0JJTEVfQ09OVEVYVF9FUlJPUiIsIkFQUExJQ0FUSU9OX05PVF9GT1VORF9FUlJPUiIsIlRXSUxJT19FUlJPUiIsIkhPT0tfRVJST1IiLCJOT1RfU1VQUE9SVEVEIiwiQVNTRVJUX1BBU1NFRCIsIk1PRFVMRV9OT1RfRk9VTkQiLCJGSUxFX0JST1dTRV9FUlJPUiIsIkNTVl9FUlJPUiIsIkNSWVBUT19FUlJPUiIsIkROU19FUlJPUiIsIkNIQUlfRVJST1JfQ09ERVMiLCJBc3NlcnRpb25FcnJvciIsIlNDUklQVF9FUlJPUl9DT0RFUyIsIlR5cGVFcnJvciIsIlN5bnRheEVycm9yIiwiUmVmZXJlbmNlRXJyb3IiLCJtb2R1bGUiLCJleHBvcnRzIiwiZ2V0RmFpbHVyZUZyb21FcnJvciIsImVyciIsIk94RXJyb3IiLCJnZXRPeHlnZW5FcnJvciIsInR5cGUiLCJtZXNzYWdlIiwiZGF0YSIsImxvY2F0aW9uIiwic3RhY2t0cmFjZSIsImdldERiRXJyb3JNZXNzYWdlIiwib2RiY0Vycm9ycyIsIkFycmF5IiwiaXNBcnJheSIsImxlbmd0aCIsIm1hcCIsIml0ZW0iLCJjbWQiLCJhcmdzIiwiZXJyVHlwZSIsIm5hbWUiLCJpbmNsdWRlcyIsIm1hdGNoZXMiLCJtYXRjaCIsInN0YXJ0c1dpdGgiLCJleHRyYWN0T3JpZ2luYWxFcnJvciIsIk9SSUdJTkFMX0VSUk9SX01FU1NBR0UiLCJpbnNwZWN0IiwiY29kZSIsIm94RXJyb3JDb2RlIiwiQVNTRVJUIiwiaW5kZXhPZiIsIlZFUklGWSIsImNvbnNvbGUiLCJsb2ciLCJlcnJNZXNzYWdlIiwiZ2V0U2VsZW5pdW1Jbml0RXJyb3IiLCJpZVpvb21FcnJvck1zZyIsInRvU3RyaW5nIiwiY2hyb21lRHJpdmVyTXNnIiwiZ2V0QXBwaXVtSW5pdEVycm9yIiwiZ2V0QXNzZXJ0RXJyb3IiLCJleHBlY3RlZCIsImFjdHVhbCIsInJlcGxhY2UiLCJlcnJvckNvZGUiLCJVTktOT1dOX0VSUk9SX01FU1NBR0UiLCJtc2ciLCJlcnJvckluZGV4MSIsImVycm9ySW5kZXgyIiwic3Vic3RyaW5nIiwidW5rbm93bkVycm9ySW5kZXgiXSwibWFwcGluZ3MiOiI7Ozs7QUFhQTs7OztBQUNBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBRUEsTUFBTUMsV0FBVyxHQUFHO0FBQ2hCQyxFQUFBQSxZQUFZLEVBQUUsY0FERTtBQUVoQkMsRUFBQUEsYUFBYSxFQUFFLGVBRkM7QUFHaEJDLEVBQUFBLFlBQVksRUFBRSxjQUhFO0FBSWhCQyxFQUFBQSxTQUFTLEVBQUUsV0FKSztBQUtoQkMsRUFBQUEsWUFBWSxFQUFFLGNBTEU7QUFNaEJDLEVBQUFBLGlCQUFpQixFQUFFLG1CQU5IO0FBT2hCQyxFQUFBQSxlQUFlLEVBQUUsaUJBUEQ7QUFRaEJDLEVBQUFBLHFCQUFxQixFQUFFLHVCQVJQO0FBU2hCQyxFQUFBQSx1QkFBdUIsRUFBRSx5QkFUVDtBQVVoQkMsRUFBQUEsbUJBQW1CLEVBQUUscUJBVkw7QUFXaEJDLEVBQUFBLHdCQUF3QixFQUFFLDBCQVhWO0FBWWhCQyxFQUFBQSxpQ0FBaUMsRUFBRSxtQ0FabkI7QUFhaEJDLEVBQUFBLG9CQUFvQixFQUFFLHNCQWJOO0FBY2hCQyxFQUFBQSx3QkFBd0IsRUFBRSwwQkFkVjtBQWVoQkMsRUFBQUEsT0FBTyxFQUFFLFNBZk87QUFnQmhCQyxFQUFBQSxnQkFBZ0IsRUFBRSxrQkFoQkY7QUFpQmhCQyxFQUFBQSxxQkFBcUIsRUFBRSx1QkFqQlA7QUFrQmhCQyxFQUFBQSxtQkFBbUIsRUFBRSxxQkFsQkw7QUFtQmhCQyxFQUFBQSxnQkFBZ0IsRUFBRSxrQkFuQkY7QUFvQmhCQyxFQUFBQSx3QkFBd0IsRUFBRSwwQkFwQlY7QUFxQmhCQyxFQUFBQSwwQkFBMEIsRUFBRSw0QkFyQlo7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InNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoQykgMjAxNS1wcmVzZW50IENsb3VkQmVhdCBMaW1pdGVkXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIEhlbHBlciBtb2R1bGUgZm9yIGhhbmRsaW5nIGFuZCBjb252ZXJ0aW5nIHZhcmlvdXMgZXJyb3IgdHlwZXNcclxuICovXHJcblxyXG5pbXBvcnQgT3hFcnJvciBmcm9tICcuL094eWdlbkVycm9yJztcclxuY29uc3QgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcclxuXHJcbmNvbnN0IEVSUk9SX0NPREVTID0ge1xyXG4gICAgU0NSSVBUX0VSUk9SOiAnU0NSSVBUX0VSUk9SJyxcclxuICAgIFVOS05PV05fRVJST1I6ICdVTktOT1dOX0VSUk9SJyxcclxuICAgIEFTU0VSVF9FUlJPUjogJ0FTU0VSVF9FUlJPUicsXHJcbiAgICBQREZfRVJST1I6ICdQREZfRVJST1InLFxyXG4gICAgVkVSSUZZX0VSUk9SOiAnVkVSSUZZX0VSUk9SJyxcclxuICAgIEVMRU1FTlRfTk9UX0ZPVU5EOiAnRUxFTUVOVF9OT1RfRk9VTkQnLFxyXG4gICAgRlJBTUVfTk9UX0ZPVU5EOiAnRlJBTUVfTk9UX0ZPVU5EJyxcclxuICAgIFVOS05PV05fQ09NTUFORF9FUlJPUjogJ1VOS05PV05fQ09NTUFORF9FUlJPUicsXHJcbiAgICBTVEFMRV9FTEVNRU5UX1JFRkVSRU5DRTogJ1NUQUxFX0VMRU1FTlRfUkVGRVJFTkNFJyxcclxuICAgIEVMRU1FTlRfTk9UX1ZJU0lCTEU6ICdFTEVNRU5UX05PVF9WSVNJQkxFJyxcclxuICAgIEVMRU1FTlRfTk9UX0lOVEVSQUNUQUJMRTogJ0VMRU1FTlRfTk9UX0lOVEVSQUNUQUJMRScsXHJcbiAgICBMT0NBVE9SX01BVENIRVNfTVVMVElQTEVfRUxFTUVOVFM6ICdMT0NBVE9SX01BVENIRVNfTVVMVElQTEVfRUxFTUVOVFMnLFxyXG4gICAgRUxFTUVOVF9TVElMTF9FWElTVFM6ICdFTEVNRU5UX1NUSUxMX0VYSVNUUycsXHJcbiAgICBCUk9XU0VSX0pTX0VYRUNVVEVfRVJST1I6ICdCUk9XU0VSX0pTX0VYRUNVVEVfRVJST1InLFxyXG4gICAgVElNRU9VVDogJ1RJTUVPVVQnLFxyXG4gICAgV0lORE9XX05PVF9GT1VORDogJ1dJTkRPV19OT1RfRk9VTkQnLFxyXG4gICAgVU5FWFBFQ1RFRF9BTEVSVF9PUEVOOiAnVU5FWFBFQ1RFRF9BTEVSVF9PUEVOJyxcclxuICAgIE5PX0FMRVJUX09QRU5fRVJST1I6ICdOT19BTEVSVF9PUEVOX0VSUk9SJyxcclxuICAgIE1BSUxJTkFUT1JfRVJST1I6ICdNQUlMSU5BVE9SX0VSUk9SJyxcclxuICAgIEFQUElVTV9VTlJFQUNIQUJMRV9FUlJPUjogJ0FQUElVTV9VTlJFQUNIQUJMRV9FUlJPUicsXHJcbiAgICBTRUxFTklVTV9VTlJFQUNIQUJMRV9FUlJPUjogJ1NFTEVOSVVNX1VOUkVBQ0hBQkxFX0VSUk9SJyxcclxuICAgIENIUk9NRURSSVZFUl9FUlJPUjogJ0NIUk9NRURSSVZFUl9FUlJPUicsXHJcbiAgICBXRUJEUklWRVJfRVJST1I6ICdXRUJEUklWRVJfRVJST1InLFxyXG4gICAgREJfQ09OTkVDVElPTl9FUlJPUjogJ0RCX0NPTk5FQ1RJT05fRVJST1InLFxyXG4gICAgREJfUVVFUllfRVJST1I6ICdEQl9RVUVSWV9FUlJPUicsXHJcbiAgICBTT0FQX0VSUk9SOiAnU09BUF9FUlJPUicsXHJcbiAgICBOT1RfSU1QTEVNRU5URURfRVJST1I6ICdOT1RfSU1QTEVNRU5URURfRVJST1InLFxyXG4gICAgU0VSSUFMX1BPUlRfRVJST1I6ICdTRVJJQUxfUE9SVF9FUlJPUicsXHJcbiAgICBIVFRQX0VSUk9SOiAnSFRUUF9FUlJPUicsXHJcbiAgICBFTUFJTF9FUlJPUjogJ0VNQUlMX0VSUk9SJyxcclxuICAgIE1PRFVMRV9OT1RfSU5JVElBTElaRURfRVJST1I6ICdNT0RVTEVfTk9UX0lOSVRJQUxJWkVEX0VSUk9SJyxcclxuICAgIERFVklDRV9OT1RfRk9VTkQ6ICdERVZJQ0VfTk9UX0ZPVU5EJyxcclxuICAgIFBBUkFNRVRFUlNfRVJST1I6ICdQQVJBTUVURVJTX0VSUk9SJyxcclxuICAgIElOVkFMSURfQ0FQQUJJTElUSUVTOiAnSU5WQUxJRF9DQVBBQklMSVRJRVMnLFxyXG4gICAgQlJPV1NFUl9DT05GSUdVUkFUSU9OX0VSUk9SOiAnQlJPV1NFUl9DT05GSUdVUkFUSU9OX0VSUk9SJyxcclxuICAgIEFQUElVTV9DT05ORUNUSU9OX0VSUk9SOiAnQVBQSVVNX0NPTk5FQ1RJT05fRVJST1InLFxyXG4gICAgQVBQSVVNX1NFU1NJT05fRVJST1I6ICdBUFBJVU1fU0VTU0lPTl9FUlJPUicsXHJcbiAgICBTRUxFTklVTV9TRVNTSU9OX0VSUk9SOiAnU0VMRU5JVU1fU0VTU0lPTl9FUlJPUicsXHJcbiAgICBTRUxFTklVTV9TRVNTSU9OX1RJTUVPVVQ6ICdTRUxFTklVTV9TRVNTSU9OX1RJTUVPVVQnLFxyXG4gICAgU0VMRU5JVU1fQ09OTkVDVElPTl9FUlJPUjogJ1NFTEVOSVVNX0NPTk5FQ1RJT05fRVJST1InLFxyXG4gICAgVVJMX09QRU5fRVJST1I6ICdVUkxfT1BFTl9FUlJPUicsXHJcbiAgICBPUFRJT05fTk9UX0ZPVU5EOiAnT1BUSU9OX05PVF9GT1VORCcsXHJcbiAgICBBVFRSSUJVVEVfTk9UX0ZPVU5EOiAnQVRUUklCVVRFX05PVF9GT1VORCcsXHJcbiAgICBFTEVNRU5UX1NUQVRFX0VSUk9SOiAnRUxFTUVOVF9TVEFURV9FUlJPUicsXHJcbiAgICBNT0JJTEVfQ09OVEVYVF9FUlJPUjogJ01PQklMRV9DT05URVhUX0VSUk9SJyxcclxuICAgIEFQUExJQ0FUSU9OX05PVF9GT1VORF9FUlJPUjogJ0FQUExJQ0FUSU9OX05PVF9GT1VORF9FUlJPUicsXHJcbiAgICBUV0lMSU9fRVJST1I6ICdUV0lMSU9fRVJST1InLFxyXG4gICAgSE9PS19FUlJPUjogJ0hPT0tfRVJST1InLFxyXG4gICAgTk9UX1NVUFBPUlRFRDogJ05PVF9TVVBQT1JURUQnLFxyXG4gICAgQVNTRVJUX1BBU1NFRDogJ0FTU0VSVF9QQVNTRUQnLFxyXG4gICAgTU9EVUxFX05PVF9GT1VORDogJ01PRFVMRV9OT1RfRk9VTkQnLFxyXG4gICAgRklMRV9CUk9XU0VfRVJST1I6ICdGSUxFX0JST1dTRV9FUlJPUicsXHJcbiAgICBDU1ZfRVJST1I6ICdDU1ZfRVJST1InLFxyXG4gICAgQ1JZUFRPX0VSUk9SOiAnQ1JZUFRPX0VSUk9SJyxcclxuICAgIEROU19FUlJPUjogJ0ROU19FUlJPUidcclxufTtcclxuXHJcbi8vIENoYWkgdG8gT3h5Z2VuIGVycm9yIGNvZGVzIG1hcHBpbmdcclxuY29uc3QgQ0hBSV9FUlJPUl9DT0RFUyA9IHtcclxuICAgIEFzc2VydGlvbkVycm9yOiBFUlJPUl9DT0RFUy5BU1NFUlRfRVJST1JcclxufTtcclxuXHJcbi8vIEdlbmVyYWwgSmF2YVNjcmlwdCBlcnJvciBjb2RlcyBtYXBwaW5nXHJcbmNvbnN0IFNDUklQVF9FUlJPUl9DT0RFUyA9IHtcclxuICAgIFR5cGVFcnJvcjogRVJST1JfQ09ERVMuU0NSSVBUX0VSUk9SLFxyXG4gICAgU3ludGF4RXJyb3I6IEVSUk9SX0NPREVTLlNDUklQVF9FUlJPUixcclxuICAgIFJlZmVyZW5jZUVycm9yOiBFUlJPUl9DT0RFUy5TQ1JJUFRfRVJST1IsXHJcbn07XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IHtcclxuICAgIGdldEZhaWx1cmVGcm9tRXJyb3I6IGZ1bmN0aW9uKGVycikge1xyXG4gICAgICAgIGlmICghZXJyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIShlcnIgaW5zdGFuY2VvZiBPeEVycm9yKSkge1xyXG4gICAgICAgICAgICBlcnIgPSB0aGlzLmdldE94eWdlbkVycm9yKGVycik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHR5cGU6IGVyci50eXBlLFxyXG4gICAgICAgICAgICBtZXNzYWdlOiBlcnIubWVzc2FnZSxcclxuICAgICAgICAgICAgZGF0YTogZXJyLmRhdGEsXHJcbiAgICAgICAgICAgIGxvY2F0aW9uOiBlcnIubG9jYXRpb24sXHJcbiAgICAgICAgICAgIHN0YWNrdHJhY2U6IGVyci5zdGFja3RyYWNlIHx8IG51bGxcclxuICAgICAgICB9O1xyXG4gICAgfSxcclxuICAgIGdldERiRXJyb3JNZXNzYWdlOiBmdW5jdGlvbihlcnIpIHtcclxuICAgICAgICBsZXQgbWVzc2FnZSA9ICcnO1xyXG5cclxuICAgICAgICBpZiAoZXJyICYmIGVyci5tZXNzYWdlKSB7XHJcbiAgICAgICAgICAgIG1lc3NhZ2UgKz0gZXJyLm1lc3NhZ2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGVyciAmJlxyXG4gICAgICAgICAgICBlcnIub2RiY0Vycm9ycyAmJlxyXG4gICAgICAgICAgICBBcnJheS5pc0FycmF5KGVyci5vZGJjRXJyb3JzKSAmJlxyXG4gICAgICAgICAgICBlcnIub2RiY0Vycm9ycy5sZW5ndGggPiAwXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGVyci5vZGJjRXJyb3JzLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0gJiZcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLm1lc3NhZ2VcclxuICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gJzogJyAraXRlbS5tZXNzYWdlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBtZXNzYWdlO1xyXG4gICAgfSxcclxuICAgIGdldE94eWdlbkVycm9yOiBmdW5jdGlvbihlcnIsIG1vZHVsZSwgY21kLCBhcmdzKSB7XHJcbiAgICAgICAgLy8gcmV0dXJuIHRoZSBlcnJvciBhcyBpcyBpZiBpdCBoYXMgYmVlbiBhbHJlYWR5IHByb2Nlc3NlZFxyXG4gICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBPeEVycm9yKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBlcnI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgZXJyVHlwZSA9IGVyci50eXBlIHx8IGVyci5uYW1lIHx8IHR5cGVvZiBlcnI7XHJcbiAgICAgICAgLy8gaGFuZGxlIFwiQ2FuJ3QgY2FsbCA8Y29tbWFuZD4gb24gZWxlbWVudCB3aXRoIHNlbGVjdG9yIDxzZWxlY3Rvcj4gYmVjYXVzZSBlbGVtZW50IHdhc24ndCBmb3VuZFwiXHJcbiAgICAgICAgaWYgKGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLmluY2x1ZGVzKCdiZWNhdXNlIGVsZW1lbnQgd2FzblxcJ3QgZm91bmQnKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuRUxFTUVOVF9OT1RfRk9VTkQsIGVyci5tZXNzYWdlLCBudWxsLCB0cnVlLCBlcnIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBoYW5kbGUgXCJpbnZhbGlkIGFyZ3VtZW50OiBVbnN1cHBvcnRlZCBsb2NhdG9yIHN0cmF0ZWd5OiAtYW5kcm9pZCB1aWF1dG9tYXRvclwiIGZvciBtb2JpbGUuXHJcbiAgICAgICAgLy8gdXN1YWxseSBkdWUgdG8gbm90IHVzaW5nIHRoZSBjb3JyZWN0IGNvbnRleHRcclxuICAgICAgICBlbHNlIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygnVW5zdXBwb3J0ZWQgbG9jYXRvciBzdHJhdGVneScpKSB7XHJcbiAgICAgICAgICAgIGxldCBtYXRjaGVzID0gZXJyLm1lc3NhZ2UubWF0Y2goL2ludmFsaWQgYXJndW1lbnQ6ICguKikvaSk7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5NT0JJTEVfQ09OVEVYVF9FUlJPUiwgKG1hdGNoZXMubGVuZ3RoID09PSAyID8gbWF0Y2hlc1sxXSA6IGVyci5tZXNzYWdlKSArXHJcbiAgICAgICAgICAgICAgICAnLiBNYWtlIHN1cmUgeW91IGFyZSB1c2luZyB0aGUgY29ycmVjdCBtb2JpbGUgY29udGV4dC4gU2VlIG1vYi5zZXROYXRpdmVDb250ZXh0IGFuZCBtb2Iuc2V0V2ViVmlld0NvbnRleHQuJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGhhbmRsZSBcImludmFsaWQgc2VsZWN0b3I6IFVuYWJsZSB0byBsb2NhdGUgYW4gZWxlbWVudCB3aXRoIHRoZSB4cGF0aCBleHByZXNzaW9uXCJcclxuICAgICAgICAvLyB1c3VhbGx5IGR1ZSB0byBpbnZhbGlkIHhwYXRoXHJcbiAgICAgICAgZWxzZSBpZiAoZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ1VuYWJsZSB0byBsb2NhdGUgYW4gZWxlbWVudCB3aXRoIHRoZSB4cGF0aCBleHByZXNzaW9uJykpIHtcclxuICAgICAgICAgICAgbGV0IG1hdGNoZXMgPSBlcnIubWVzc2FnZS5tYXRjaCgvKFRoZSBzdHJpbmcgJy4qJyBpcyBub3QgYSB2YWxpZCBYUGF0aCBleHByZXNzaW9uLikvaSk7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5TQ1JJUFRfRVJST1IsIChtYXRjaGVzICYmIG1hdGNoZXMubGVuZ3RoID09PSAyID8gbWF0Y2hlc1sxXSA6IGVyci5tZXNzYWdlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGludmFsaWQgY3NzIGxvY2F0b3Igb24gQ2hyb21lL0lFLiBlLmcuIGNzcz0jXFw6cDBcclxuICAgICAgICBlbHNlIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygnQW4gaW52YWxpZCBvciBpbGxlZ2FsIHNlbGVjdG9yIHdhcyBzcGVjaWZpZWQnKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuU0NSSVBUX0VSUk9SLCAnQW4gaW52YWxpZCBvciBpbGxlZ2FsIHNlbGVjdG9yIHdhcyBzcGVjaWZpZWQnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gaW52YWxpZCBjc3MgbG9jYXRvciBvbiBGaXJlZm94LiBlLmcuIGNzcz0jXFw6cDBcclxuICAgICAgICBlbHNlIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5zdGFydHNXaXRoKCdHaXZlbiBjc3Mgc2VsZWN0b3IgZXhwcmVzc2lvbicpKSB7XHJcbiAgICAgICAgICAgIGxldCBtYXRjaGVzID0gZXJyLm1lc3NhZ2UubWF0Y2goLyhHaXZlbiBjc3Mgc2VsZWN0b3IgZXhwcmVzc2lvbiBcIi4qXCIgaXMgaW52YWxpZCkuKi9pKTtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlNDUklQVF9FUlJPUiwgKG1hdGNoZXMgJiYgbWF0Y2hlcy5sZW5ndGggPT09IDIgPyBtYXRjaGVzWzFdIDogZXJyLm1lc3NhZ2UpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoZXJyLm1lc3NhZ2UgJiYgKGVyci5tZXNzYWdlLmluY2x1ZGVzKCdVbmFibGUgdG8gYXV0b21hdGUgQ2hyb21lIHZlcnNpb24nKSB8fFxyXG4gICAgICAgICAgICBlcnIubWVzc2FnZS5pbmNsdWRlcygnTm8gQ2hyb21lZHJpdmVyIGZvdW5kIHRoYXQgY2FuIGF1dG9tYXRlJykpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5DSFJPTUVEUklWRVJfRVJST1IsIGV4dHJhY3RPcmlnaW5hbEVycm9yKGVyci5tZXNzYWdlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGhhbmRsZSB2YXJpb3VzIHR5cGVzIG9mICdPcmlnaW5hbCBlcnJvcidcclxuICAgICAgICBlbHNlIGlmIChlcnIubWVzc2FnZS5pbmNsdWRlcyhPUklHSU5BTF9FUlJPUl9NRVNTQUdFKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuVU5LTk9XTl9FUlJPUiwgZXh0cmFjdE9yaWdpbmFsRXJyb3IoZXJyLm1lc3NhZ2UpLCB1dGlsLmluc3BlY3QoZXJyKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGludmFsaWQgVVJMIGluIG9wZW4gY29tbWFuZFxyXG4gICAgICAgIGVsc2UgaWYgKGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLmluY2x1ZGVzKCdJbnZhbGlkIFVSTCcpKSB7XHJcbiAgICAgICAgICAgIGxldCBtYXRjaGVzID0gZXJyLm1lc3NhZ2UubWF0Y2goLyggSW52YWxpZCBVUkw6IC4qJCkuKi9pKTtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlNDUklQVF9FUlJPUiwgKG1hdGNoZXMgJiYgbWF0Y2hlcy5sZW5ndGggPT09IDIgPyBtYXRjaGVzWzFdIDogZXJyLm1lc3NhZ2UpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gdXN1YWxseSBvbiBtb2JpbGUgQ2hyb21lIHdoZW4gZWxlbWVudCBpcyBvdmVybGFwcGVkIGJ5IGFub3RoZXIgZWxlbWVudFxyXG4gICAgICAgIGVsc2UgaWYgKGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLnN0YXJ0c1dpdGgoJ2VsZW1lbnQgY2xpY2sgaW50ZXJjZXB0ZWQnKSkge1xyXG4gICAgICAgICAgICBsZXQgbWF0Y2hlcyA9IGVyci5tZXNzYWdlLm1hdGNoKC9lbGVtZW50IGNsaWNrIGludGVyY2VwdGVkOiAoLiopL2kpO1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuRUxFTUVOVF9OT1RfVklTSUJMRSwgKG1hdGNoZXMgJiYgbWF0Y2hlcy5sZW5ndGggPT09IDIgPyBtYXRjaGVzWzFdIDogZXJyLm1lc3NhZ2UpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gdXN1YWxseSBiZWNhdXNlIFNlbGVuaXVtIGhhcyBraWxsZWQgdGhlIHNlc3Npb24gZHVlIHRvIGV4Y2VlZGluZyAnLXRpbWVvdXQnIHRpbWVvdXRcclxuICAgICAgICBlbHNlIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5zdGFydHNXaXRoKCdObyBhY3RpdmUgc2Vzc2lvbiB3aXRoIElEJykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlNFTEVOSVVNX1NFU1NJT05fRVJST1IsICdFeGVjdXRpb24gdGltZSBleGNlZWRlZCB0aGUgdGltZW91dCBzZXQgYnkgU2VsZW5pdW0nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gd2hlbiBkcml2ZXIgKElFRHJpdmVyU2VydmVyLCBDaHJvbWVEcml2ZXIsIGV0YykgY3Jhc2hlc1xyXG4gICAgICAgIGVsc2UgaWYgKGVyci5tZXNzYWdlID09PSAnamF2YS5uZXQuQ29ubmVjdEV4Y2VwdGlvbjogQ29ubmVjdGlvbiByZWZ1c2VkOiBjb25uZWN0Jykge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuV0VCRFJJVkVSX0VSUk9SLCAnVGhlIHVuZGVybHlpbmcgV2ViRHJpdmVyIHNlZW1zIHRvIGhhdmUgY3Jhc2hlZDogJyArIGVyci5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gc3RhbGUgZWxlbWVudCByZWZlcmVuY2VcclxuICAgICAgICBlbHNlIGlmIChlcnIubmFtZSAmJiBlcnIubmFtZS5pbmNsdWRlcygnc3RhbGUgZWxlbWVudCByZWZlcmVuY2UnKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuU1RBTEVfRUxFTUVOVF9SRUZFUkVOQ0UsIGVyci5uYW1lICsgJyAnICsgZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChlcnIuY29kZSAmJiBlcnIuY29kZSA9PT0gJ01PRFVMRV9OT1RfRk9VTkQnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5NT0RVTEVfTk9UX0ZPVU5ELCBlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vICB3aGVuIGRvaW5nIGFuIG9wZXJhdGlvbiBvbiBhbiBlbGVtZW50IChlLmcuIGNsaWNrKSBidXQgdGhlIHdpbmRvdyB3YXMgYWxyZWFkeSBjbG9zZWRcclxuICAgICAgICBlbHNlIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygnbm8gc3VjaCB3aW5kb3cnKSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygndGFyZ2V0IHdpbmRvdyBhbHJlYWR5IGNsb3NlZCcpICYmIGVyci5tZXNzYWdlLmluY2x1ZGVzKCd3ZWIgdmlldyBub3QgZm91bmQnKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuV0lORE9XX05PVF9GT1VORCwgZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBleGFtcGxlOiBUaGUgZWxlbWVudCB3aXRoIHNlbGVjdG9yICoqKiB5b3UgdHJ5aW5nIHRvIHBhc3MgaW50byB0aGUgZXhlY3V0ZSBtZXRob2Qgd2Fzbid0IGZvdW5kXHJcbiAgICAgICAgLy8gd2hlbiBlbGVtZW50IHdhcyBkZWxldGVkIGZyb20gRE9NXHJcbiAgICAgICAgZWxzZSBpZiAoZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ3lvdSB0cnlpbmcgdG8gcGFzcyBpbnRvIHRoZSBleGVjdXRlIG1ldGhvZCB3YXNuXFwndCBmb3VuZCcpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5FTEVNRU5UX05PVF9GT1VORCwgIGVyci5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gd2hlbiBkb2luZyBhbiBvcGVyYXRpb24gb24gYW4gZWxlbWVudCByZWZlcmVuY2UgKGUuZy4gY2xpY2spIGJ1dCB0aGUgcGFnZSB3YXMgYWxyZWFkeSBjaGFuZ2VkXHJcbiAgICAgICAgZWxzZSBpZiAoZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ2VsZW1lbnQgbm90IGludGVyYWN0YWJsZScpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5FTEVNRU5UX05PVF9JTlRFUkFDVEFCTEUsIGVyci5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gaW52YWxpZCBzZWxlY3RvcjogamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbjogVW5hYmxlIHRvIGNvbXBpbGUgc2VsZWN0b3IgLi4uXHJcbiAgICAgICAgZWxzZSBpZiAoXHJcbiAgICAgICAgICAgIGVyci5uYW1lICYmXHJcbiAgICAgICAgICAgIGVyci5uYW1lID09PSAnaW52YWxpZCBzZWxlY3RvcidcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlNDUklQVF9FUlJPUiwgZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBSZXF1ZXN0RXJyb3I6IFRpbWVvdXQgYXdhaXRpbmcgJ3JlcXVlc3QnIGZvciAzMTAwMDBtcywgbmFtZTogJ1RpbWVvdXRFcnJvcidcclxuICAgICAgICBlbHNlIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygnVGltZW91dCBhd2FpdGluZyBcXCdyZXF1ZXN0XFwnJykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlNFTEVOSVVNX1NFU1NJT05fVElNRU9VVCAsICBlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGVyciAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygnc29ja2V0IGhhbmcgdXAnKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuU0VMRU5JVU1fU0VTU0lPTl9USU1FT1VULCBlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChlcnIgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ1RpbWVkIG91dCByZWNlaXZpbmcgbWVzc2FnZSBmcm9tIHJlbmRlcmUnKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuU0VMRU5JVU1fU0VTU0lPTl9USU1FT1VULCBlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyB0cnkgdG8gcmVzb2x2ZSBDaGFpIGVycm9yIGNvZGVcclxuICAgICAgICB2YXIgb3hFcnJvckNvZGUgPSBDSEFJX0VSUk9SX0NPREVTW2VyclR5cGVdO1xyXG4gICAgICAgIGlmIChveEVycm9yQ29kZSkge1xyXG4gICAgICAgICAgICAvLyB0aHJvdyBub24tZmF0YWwgZXJyb3IgaWYgaXQncyBhIFwidmVyaWZ5XCIgbW9kdWxlIG9yIG1ldGhvZCBcclxuICAgICAgICAgICAgaWYgKG94RXJyb3JDb2RlID09PSBFUlJPUl9DT0RFUy5BU1NFUlQgJiZcclxuXHRcdFx0XHQobW9kdWxlID09PSAndmVyaWZ5JyB8fCBjbWQuaW5kZXhPZigndmVyaWZ5JykgPT09IDApKSB7IC8vIHZlcmlmeS4qLCAqLnZlcmlmeSpcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5WRVJJRlksIGVyci5tZXNzYWdlLCBudWxsLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKG94RXJyb3JDb2RlLCBlcnIubWVzc2FnZSwgbnVsbCwgdHJ1ZSwgZXJyKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHRyeSB0byByZXNvbHZlIEphdmFTY3JpcHQgZXJyb3IgY29kZVxyXG4gICAgICAgIG94RXJyb3JDb2RlID0gU0NSSVBUX0VSUk9SX0NPREVTW2VyclR5cGVdO1xyXG4gICAgICAgIGlmIChveEVycm9yQ29kZSkge1xyXG4gICAgICAgICAgICAvLyB0aHJvdyBub24tZmF0YWwgZXJyb3IgaWYgaXQncyBhIFwidmVyaWZ5XCIgbW9kdWxlIG9yIG1ldGhvZCBcclxuICAgICAgICAgICAgaWYgKG94RXJyb3JDb2RlID09PSBFUlJPUl9DT0RFUy5BU1NFUlQgJiZcclxuXHRcdFx0XHQobW9kdWxlID09PSAndmVyaWZ5JyB8fCBjbWQuaW5kZXhPZigndmVyaWZ5JykgPT09IDApKSB7IC8vIHZlcmlmeS4qLCAqLnZlcmlmeSpcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5WRVJJRlksIGVyci5tZXNzYWdlLCBudWxsLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKG94RXJyb3JDb2RlLCBlcnIubWVzc2FnZSB8fCBudWxsLCBudWxsLCB0cnVlLCBlcnIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc29sZS5sb2coJz09PSBFcnJvciBEZXRhaWxzID09PScpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdUeXBlOiAnICsgZXJyLnR5cGUgKyAnIE5hbWU6ICcgKyBlcnIubmFtZSArICcgQ29kZTogJyArIGVyci5jb2RlICsgJyBNc2c6ICcgKyBlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgY29uc29sZS5sb2codXRpbC5pbnNwZWN0KGVycikpO1xyXG5cclxuICAgICAgICBjb25zdCBlcnJNZXNzYWdlID0gZXJyLm1lc3NhZ2UgPyBgJHtlcnJUeXBlfTogJHtlcnIubWVzc2FnZX1gIDogYCR7ZXJyVHlwZX1gO1xyXG4gICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5VTktOT1dOX0VSUk9SLCBlcnJNZXNzYWdlLCB1dGlsLmluc3BlY3QoZXJyKSwgdHJ1ZSwgZXJyKTtcclxuICAgIH0sXHJcbiAgICBnZXRTZWxlbml1bUluaXRFcnJvcjogZnVuY3Rpb24oZXJyKSB7XHJcbiAgICAgICAgaWYgKGVyci5tZXNzYWdlKSB7XHJcbiAgICAgICAgICAgIHZhciBpZVpvb21FcnJvck1zZyA9IGVyci5tZXNzYWdlLm1hdGNoKC8oVW5leHBlY3RlZCBlcnJvciBsYXVuY2hpbmcgSW50ZXJuZXQgRXhwbG9yZXJcXC4gQnJvd3NlciB6b29tIGxldmVsIHdhcyBzZXQgdG8gXFxkKyVcXC4gSXQgc2hvdWxkIGJlIHNldCB0byBcXGQrJSkvZ20pO1xyXG4gICAgICAgICAgICBpZiAoaWVab29tRXJyb3JNc2cpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5CUk9XU0VSX0NPTkZJR1VSQVRJT05fRVJST1IsIGllWm9vbUVycm9yTXNnLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ1VuYWJsZSB0byBjcmVhdGUgbmV3IHNlcnZpY2U6IENocm9tZURyaXZlclNlcnZpY2UnKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLkNIUk9NRURSSVZFUl9FUlJPUiwgZXJyLm1lc3NhZ2UsIG51bGwsIHRydWUsIGVycik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChlcnIubWVzc2FnZS5pbmNsdWRlcygnVW5hYmxlIHRvIGNyZWF0ZSBuZXcgc2VydmljZTonKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlNFTEVOSVVNX1VOUkVBQ0hBQkxFX0VSUk9SLCBlcnIubWVzc2FnZSwgbnVsbCwgdHJ1ZSwgZXJyKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdmFyIGNocm9tZURyaXZlck1zZyA9IGVyci5tZXNzYWdlLm1hdGNoKC8oVGhpcyB2ZXJzaW9uIG9mIENocm9tZURyaXZlciBvbmx5IHN1cHBvcnRzIENocm9tZSB2ZXJzaW9uIFswLTldKikvZ20pO1xyXG4gICAgICAgICAgICBpZiAoY2hyb21lRHJpdmVyTXNnKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuQ0hST01FRFJJVkVSX0VSUk9SLCBjaHJvbWVEcml2ZXJNc2cudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygnY2Fubm90IGZpbmQgQ2hyb21lIGJpbmFyeScpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5DSFJPTUVEUklWRVJfRVJST1IsICdDYW5ub3QgZmluZCBDaHJvbWUgYmluYXJ5Jyk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChlcnIuY29kZSA9PT0gJ0VDT05OUkVGVVNFRCcgfHwgZXJyLmNvZGUgPT09ICdFQ09OTlJFU0VUJyB8fCBlcnIuY29kZSA9PT0gJ0VOT1RGT1VORCcgfHwgZXJyLm1lc3NhZ2UgPT09ICdGYWlsZWQgdG8gY3JlYXRlIHNlc3Npb24uXFxuc29ja2V0IGhhbmcgdXAnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5TRUxFTklVTV9VTlJFQUNIQUJMRV9FUlJPUiwgXCJDb3VsZG4ndCBjb25uZWN0IHRvIFNlbGVuaXVtIHNlcnZlclwiKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGVyci5tZXNzYWdlID09PSAnQWxsIG1pbnV0ZXMgZm9yIHRoaXMgb3JnYW5pemF0aW9uIGhhcyBiZWVuIGV4YXVzdGVkJyB8fFxyXG4gICAgICAgICAgICBlcnIubWVzc2FnZSA9PT0gJzQwMSBVbmF1dGhvcml6ZWQnIHx8XHJcbiAgICAgICAgICAgIGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLnN0YXJ0c1dpdGgoJ0ZhaWxlZCB0byBjcmVhdGUgc2Vzc2lvbi4nKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuU0VMRU5JVU1fQ09OTkVDVElPTl9FUlJPUiwgZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ1VuYWJsZSB0byBjcmVhdGUgbmV3IHNlcnZpY2U6JykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlNFTEVOSVVNX0NPTk5FQ1RJT05fRVJST1IsIGVyci5tZXNzYWdlICsgJ1xcblxcblRoaXMgaXMgcHJvYmFibHkgZHVlIHRvIG1pc3NpbmcgQ2hyb21lRHJpdmVyL0lFRHJpdmVyU2VydmVyL0dlY2tvRHJpdmVyIGJpbmFyeS5cXG4nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnNvbGUubG9nKCc9PT0gRXJyb3IgRGV0YWlscyA9PT0nKTtcclxuICAgICAgICBjb25zb2xlLmxvZygnVHlwZTogJyArIGVyci50eXBlICsgJyBOYW1lOiAnICsgZXJyLm5hbWUgKyAnIENvZGU6ICcgKyBlcnIuY29kZSArICcgTXNnOiAnICsgZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHV0aWwuaW5zcGVjdChlcnIpKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlVOS05PV05fRVJST1IsIGVyci50eXBlICsgJzogJyArIGVyci5tZXNzYWdlLCB1dGlsLmluc3BlY3QoZXJyKSk7XHJcbiAgICB9LFxyXG4gICAgZ2V0QXBwaXVtSW5pdEVycm9yOiBmdW5jdGlvbihlcnIpIHtcclxuICAgICAgICBpZiAoZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ2Nhbm5vdCBmaW5kIENocm9tZSBiaW5hcnknKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuQ0hST01FRFJJVkVSX0VSUk9SLCAnQ2Fubm90IGZpbmQgQ2hyb21lIGJpbmFyeScpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXJyLmNvZGUgPT09ICdFQ09OTlJFRlVTRUQnIHx8IGVyci5jb2RlID09PSAnRUNPTk5SRVNFVCcgfHwgZXJyLmNvZGUgPT09ICdFTk9URk9VTkQnIHx8IGVyci5tZXNzYWdlID09PSAnRmFpbGVkIHRvIGNyZWF0ZSBzZXNzaW9uLlxcbnNvY2tldCBoYW5nIHVwJykge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuQVBQSVVNX1VOUkVBQ0hBQkxFX0VSUk9SLCBcIkNvdWxkbid0IGNvbm5lY3QgdG8gQXBwaXVtIHNlcnZlclwiKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLmluY2x1ZGVzKCdDb3VsZCBub3QgZmluZCBhIGNvbm5lY3RlZCBBbmRyb2lkIGRldmljZScpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5ERVZJQ0VfTk9UX0ZPVU5ELCAnQ291bGQgbm90IGZpbmQgYSBjb25uZWN0ZWQgQW5kcm9pZCBkZXZpY2UnKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLmluY2x1ZGVzKCdVbmFibGUgdG8gYXV0b21hdGUgQ2hyb21lIHZlcnNpb24nKSkgeyAgICAgICAgICAvLyBhcHBpdW0gPD0gMS4xNFxyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuQ0hST01FRFJJVkVSX0VSUk9SLCBleHRyYWN0T3JpZ2luYWxFcnJvcihlcnIubWVzc2FnZSkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ05vIENocm9tZWRyaXZlciBmb3VuZCB0aGF0IGNhbiBhdXRvbWF0ZScpKSB7ICAgIC8vIGFwcGl1bSA+PSAxLjE1XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5DSFJPTUVEUklWRVJfRVJST1IsIGV4dHJhY3RPcmlnaW5hbEVycm9yKGVyci5tZXNzYWdlKSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygnVW5hYmxlIHRvIGZpbmQgYW4gYWN0aXZlIGRldmljZSBvciBlbXVsYXRvciB3aXRoJykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLkRFVklDRV9OT1RfRk9VTkQsIGV4dHJhY3RPcmlnaW5hbEVycm9yKGVyci5tZXNzYWdlKSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygnaXMgbm90IGluc3RhbGxlZCBvbiBkZXZpY2UnKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuQVBQTElDQVRJT05fTk9UX0ZPVU5EX0VSUk9SLCBleHRyYWN0T3JpZ2luYWxFcnJvcihlcnIubWVzc2FnZSkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXJyLm1lc3NhZ2UgPT09ICdBbGwgbWludXRlcyBmb3IgdGhpcyBvcmdhbml6YXRpb24gaGFzIGJlZW4gZXhhdXN0ZWQnIHx8XHJcbiAgICAgICAgICAgIGVyci5tZXNzYWdlID09PSAnNDAxIFVuYXV0aG9yaXplZCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLkFQUElVTV9DT05ORUNUSU9OX0VSUk9SLCBlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChlcnIubWVzc2FnZSAmJiAoXHJcbiAgICAgICAgICAgICAgICBlcnIubWVzc2FnZS5pbmNsdWRlcygnQSBuZXcgc2Vzc2lvbiBjb3VsZCBub3QgYmUgY3JlYXRlZC4nKSB8fFxyXG4gICAgICAgICAgICAgICAgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ0ZhaWxlZCB0byBjcmVhdGUgc2Vzc2lvbi4nKSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLkFQUElVTV9TRVNTSU9OX0VSUk9SLCBleHRyYWN0T3JpZ2luYWxFcnJvcihlcnIubWVzc2FnZSksIG51bGwsIHRydWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc29sZS5sb2coJz09PSBFcnJvciBEZXRhaWxzID09PScpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdUeXBlOiAnICsgZXJyLnR5cGUgKyAnIE5hbWU6ICcgKyBlcnIubmFtZSArICcgQ29kZTogJyArIGVyci5jb2RlICsgJyBNc2c6ICcgKyBlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgY29uc29sZS5sb2codXRpbC5pbnNwZWN0KGVycikpO1xyXG5cclxuICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuVU5LTk9XTl9FUlJPUiwgZXh0cmFjdE9yaWdpbmFsRXJyb3IoZXJyLm1lc3NhZ2UpLCB1dGlsLmluc3BlY3QoZXJyKSk7XHJcbiAgICB9LFxyXG4gICAgZ2V0QXNzZXJ0RXJyb3I6IGZ1bmN0aW9uKGV4cGVjdGVkLCBhY3R1YWwpIHtcclxuICAgICAgICBhY3R1YWwgPSBhY3R1YWwudG9TdHJpbmcoKS5yZXBsYWNlKC9cXG4vZywgJ1xcXFxuJyk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLkFTU0VSVF9FUlJPUiwgYEV4cGVjdGVkOiBcIiR7ZXhwZWN0ZWR9XCIuIEdvdDogXCIke2FjdHVhbH1cImApO1xyXG4gICAgfSxcclxuICAgIGVycm9yQ29kZTogRVJST1JfQ09ERVNcclxufTtcclxuXHJcbmNvbnN0IE9SSUdJTkFMX0VSUk9SX01FU1NBR0UgPSAnT3JpZ2luYWwgZXJyb3I6ICc7XHJcbmNvbnN0IFVOS05PV05fRVJST1JfTUVTU0FHRSA9ICd1bmtub3duIGVycm9yOiAnO1xyXG5cclxuZnVuY3Rpb24gZXh0cmFjdE9yaWdpbmFsRXJyb3IobXNnKSB7XHJcbiAgICBpZiAoIW1zZykge1xyXG4gICAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuXHJcbiAgICB2YXIgZXJyb3JJbmRleDEgPSBtc2cuaW5kZXhPZihPUklHSU5BTF9FUlJPUl9NRVNTQUdFKTtcclxuICAgIGlmIChlcnJvckluZGV4MSA9PT0gLTEpIHtcclxuICAgICAgICByZXR1cm4gbXNnO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHRoZXJlIGNvdWxkIGFub3RoZSBuZXN0ZWQgXCJvcmlnaW5hbCBlcnJvclwiXHJcbiAgICB2YXIgZXJyb3JJbmRleDIgPSBtc2cuaW5kZXhPZihPUklHSU5BTF9FUlJPUl9NRVNTQUdFLCBlcnJvckluZGV4MSArIE9SSUdJTkFMX0VSUk9SX01FU1NBR0UubGVuZ3RoKTtcclxuXHJcbiAgICBtc2cgPSBtc2cuc3Vic3RyaW5nKChlcnJvckluZGV4MiA+IC0xID8gZXJyb3JJbmRleDIgOiBlcnJvckluZGV4MSkgICsgT1JJR0lOQUxfRVJST1JfTUVTU0FHRS5sZW5ndGgpO1xyXG5cclxuICAgIC8vIHN0cmlwICd1bmtub3duIGVycm9yOidcclxuICAgIHZhciB1bmtub3duRXJyb3JJbmRleCA9IG1zZy5pbmRleE9mKFVOS05PV05fRVJST1JfTUVTU0FHRSk7XHJcbiAgICBpZiAodW5rbm93bkVycm9ySW5kZXggPiAtMSkge1xyXG4gICAgICAgIHJldHVybiBtc2cuc3Vic3RyaW5nKHVua25vd25FcnJvckluZGV4ICsgVU5LTk9XTl9FUlJPUl9NRVNTQUdFLmxlbmd0aCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG1zZztcclxufVxyXG4iXX0=
|
package/build/index.js
CHANGED
|
@@ -9,25 +9,31 @@ Object.defineProperty(exports, "Launcher", {
|
|
|
9
9
|
return _launcher.default;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
|
-
Object.defineProperty(exports, "
|
|
12
|
+
Object.defineProperty(exports, "ParallelLauncher", {
|
|
13
13
|
enumerable: true,
|
|
14
14
|
get: function () {
|
|
15
|
-
return
|
|
15
|
+
return _parallelLauncher.default;
|
|
16
16
|
}
|
|
17
17
|
});
|
|
18
|
-
Object.defineProperty(exports, "
|
|
18
|
+
Object.defineProperty(exports, "ReportAggregator", {
|
|
19
19
|
enumerable: true,
|
|
20
20
|
get: function () {
|
|
21
|
-
return
|
|
21
|
+
return _ReportAggregator.default;
|
|
22
22
|
}
|
|
23
23
|
});
|
|
24
|
+
exports.cliutil = exports.Runners = void 0;
|
|
24
25
|
Object.defineProperty(exports, "moduleRequire", {
|
|
25
26
|
enumerable: true,
|
|
26
27
|
get: function () {
|
|
27
28
|
return _moduleRequire.default;
|
|
28
29
|
}
|
|
29
30
|
});
|
|
30
|
-
|
|
31
|
+
Object.defineProperty(exports, "util", {
|
|
32
|
+
enumerable: true,
|
|
33
|
+
get: function () {
|
|
34
|
+
return _util.default;
|
|
35
|
+
}
|
|
36
|
+
});
|
|
31
37
|
|
|
32
38
|
require("source-map-support/register");
|
|
33
39
|
|
|
@@ -37,6 +43,8 @@ exports.Runners = Runners;
|
|
|
37
43
|
|
|
38
44
|
var _launcher = _interopRequireDefault(require("./lib/launcher"));
|
|
39
45
|
|
|
46
|
+
var _parallelLauncher = _interopRequireDefault(require("./lib/parallel-launcher"));
|
|
47
|
+
|
|
40
48
|
var _ReportAggregator = _interopRequireDefault(require("./reporter/ReportAggregator"));
|
|
41
49
|
|
|
42
50
|
var _util = _interopRequireDefault(require("./lib/util"));
|
|
@@ -52,4 +60,4 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
52
60
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
53
61
|
|
|
54
62
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
55
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7OztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7O0FBQ0EiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSdW5uZXJzIGZyb20gJy4vcnVubmVycyc7XHJcbmltcG9ydCBMYXVuY2hlciBmcm9tICcuL2xpYi9sYXVuY2hlcic7XHJcbmltcG9ydCBQYXJhbGxlbExhdW5jaGVyIGZyb20gJy4vbGliL3BhcmFsbGVsLWxhdW5jaGVyJztcclxuaW1wb3J0IFJlcG9ydEFnZ3JlZ2F0b3IgZnJvbSAnLi9yZXBvcnRlci9SZXBvcnRBZ2dyZWdhdG9yJztcclxuaW1wb3J0IHV0aWwgZnJvbSAnLi9saWIvdXRpbCc7XHJcbmltcG9ydCAqIGFzIGNsaXV0aWwgZnJvbSAnLi9saWIvY2xpLXV0aWwnO1xyXG5pbXBvcnQgbW9kdWxlUmVxdWlyZSBmcm9tICcuL2xpYi9tb2R1bGVSZXF1aXJlJztcclxuXHJcbmV4cG9ydCB7XHJcbiAgICBSdW5uZXJzLFxyXG4gICAgTGF1bmNoZXIsXHJcbiAgICBQYXJhbGxlbExhdW5jaGVyLFxyXG4gICAgUmVwb3J0QWdncmVnYXRvcixcclxuICAgIHV0aWwsXHJcbiAgICBjbGl1dGlsLFxyXG4gICAgbW9kdWxlUmVxdWlyZVxyXG59OyJdfQ==
|