oxygen-cli 1.25.0 → 1.27.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 +14 -0
- package/build/core/OxygenCore.js +266 -37
- package/build/core/OxygenEvents.js +11 -1
- package/build/core/OxygenModule.js +14 -1
- package/build/core/OxygenService.js +12 -1
- package/build/core/OxygenSubModule.js +10 -1
- package/build/core/WebDriverModule.js +30 -1
- package/build/core/utils.js +17 -1
- package/build/errors/HookError.js +7 -1
- package/build/errors/ModuleError.js +7 -1
- package/build/errors/ModuleUnavailableError.js +3 -1
- package/build/errors/OxygenError.js +33 -1
- package/build/errors/ScriptNotFound.js +7 -1
- package/build/errors/helper.js +77 -45
- package/build/index.js +18 -6
- package/build/lib/cli-util.js +90 -28
- package/build/lib/cli.js +23 -1
- package/build/lib/debugger.js +144 -1
- package/build/lib/img-merge.js +15 -1
- package/build/lib/launcher.js +28 -1
- package/build/lib/moduleRequire.js +4 -1
- package/build/lib/param-manager.js +28 -1
- package/build/lib/param-reader-csv.js +15 -1
- package/build/lib/param-reader-excel.js +14 -1
- package/build/lib/param-reader-json.js +10 -1
- package/build/lib/text-to-image.js +183 -0
- package/build/lib/util.js +58 -3
- package/build/model/case-result.js +4 -2
- package/build/model/failure.js +2 -1
- package/build/model/status.js +2 -1
- package/build/model/step-result.js +2 -1
- package/build/model/suite-result.js +2 -1
- package/build/model/test-result.js +2 -1
- package/build/model/testcase.js +2 -1
- package/build/model/testsuite.js +2 -1
- package/build/ox_modules/index.js +33 -13
- package/build/ox_modules/module-assert.js +24 -8
- package/build/ox_modules/module-date.js +8 -3
- package/build/ox_modules/module-db.js +28 -7
- package/build/ox_modules/module-email.js +36 -10
- package/build/ox_modules/module-eyes.js +46 -5
- package/build/ox_modules/module-http.js +102 -41
- package/build/ox_modules/module-log.js +22 -5
- package/build/ox_modules/module-mailinator.js +32 -10
- package/build/ox_modules/module-mob/commands/alertAccept.js +2 -1
- package/build/ox_modules/module-mob/commands/alertDismiss.js +2 -1
- package/build/ox_modules/module-mob/commands/assertAlert.js +6 -1
- package/build/ox_modules/module-mob/commands/assertText.js +3 -1
- package/build/ox_modules/module-mob/commands/assertTitle.js +4 -1
- package/build/ox_modules/module-mob/commands/assertValue.js +15 -9
- package/build/ox_modules/module-mob/commands/back.js +2 -1
- package/build/ox_modules/module-mob/commands/clear.js +4 -1
- package/build/ox_modules/module-mob/commands/click.js +4 -3
- package/build/ox_modules/module-mob/commands/clickHidden.js +9 -3
- package/build/ox_modules/module-mob/commands/clickLong.js +2 -1
- package/build/ox_modules/module-mob/commands/clickMultipleTimes.js +4 -1
- package/build/ox_modules/module-mob/commands/closeApp.js +2 -1
- package/build/ox_modules/module-mob/commands/debug.js +2 -2
- package/build/ox_modules/module-mob/commands/dragAndDrop.js +2 -1
- package/build/ox_modules/module-mob/commands/enableNetwork.js +12 -4
- package/build/ox_modules/module-mob/commands/execute.js +2 -1
- package/build/ox_modules/module-mob/commands/findElement.js +3 -1
- package/build/ox_modules/module-mob/commands/findElements.js +4 -1
- package/build/ox_modules/module-mob/commands/getAlertText.js +2 -1
- package/build/ox_modules/module-mob/commands/getAppiumLogs.js +2 -1
- package/build/ox_modules/module-mob/commands/getBrowserLogs.js +10 -1
- package/build/ox_modules/module-mob/commands/getCurrentActivity.js +2 -1
- package/build/ox_modules/module-mob/commands/getCurrentPackage.js +2 -1
- package/build/ox_modules/module-mob/commands/getDeviceLogs.js +9 -1
- package/build/ox_modules/module-mob/commands/getDeviceTime.js +2 -1
- package/build/ox_modules/module-mob/commands/getLocation.js +2 -1
- package/build/ox_modules/module-mob/commands/getSource.js +2 -1
- package/build/ox_modules/module-mob/commands/getText.js +4 -1
- package/build/ox_modules/module-mob/commands/getTitle.js +2 -1
- package/build/ox_modules/module-mob/commands/getUrl.js +2 -1
- package/build/ox_modules/module-mob/commands/getValue.js +9 -5
- package/build/ox_modules/module-mob/commands/getWindowHandles.js +2 -1
- package/build/ox_modules/module-mob/commands/hideKeyboard.js +2 -1
- package/build/ox_modules/module-mob/commands/index.js +94 -19
- package/build/ox_modules/module-mob/commands/installApp.js +2 -1
- package/build/ox_modules/module-mob/commands/isAppInstalled.js +2 -1
- package/build/ox_modules/module-mob/commands/isCheckable.js +2 -1
- package/build/ox_modules/module-mob/commands/isChecked.js +2 -1
- package/build/ox_modules/module-mob/commands/isClickable.js +2 -1
- package/build/ox_modules/module-mob/commands/isExist.js +3 -1
- package/build/ox_modules/module-mob/commands/isSelected.js +2 -1
- package/build/ox_modules/module-mob/commands/isVisible.js +3 -1
- package/build/ox_modules/module-mob/commands/isWebViewContext.js +2 -1
- package/build/ox_modules/module-mob/commands/launchApp.js +2 -1
- package/build/ox_modules/module-mob/commands/longPressKeyCode.js +2 -1
- package/build/ox_modules/module-mob/commands/open.js +3 -1
- package/build/ox_modules/module-mob/commands/pause.js +2 -1
- package/build/ox_modules/module-mob/commands/removeApp.js +2 -1
- package/build/ox_modules/module-mob/commands/resetApp.js +2 -1
- package/build/ox_modules/module-mob/commands/scrollIntoElement.js +6 -1
- package/build/ox_modules/module-mob/commands/scrollIntoView.js +2 -1
- package/build/ox_modules/module-mob/commands/select.js +4 -1
- package/build/ox_modules/module-mob/commands/selectFrame.js +4 -1
- package/build/ox_modules/module-mob/commands/selectWindow.js +26 -5
- package/build/ox_modules/module-mob/commands/sendKeys.js +9 -6
- package/build/ox_modules/module-mob/commands/setContext.js +2 -1
- package/build/ox_modules/module-mob/commands/setNativeContext.js +2 -1
- package/build/ox_modules/module-mob/commands/setTimeout.js +2 -1
- package/build/ox_modules/module-mob/commands/setWebViewContext.js +6 -3
- package/build/ox_modules/module-mob/commands/shake.js +2 -1
- package/build/ox_modules/module-mob/commands/smsClickLink.js +2 -1
- package/build/ox_modules/module-mob/commands/smsGetText.js +6 -3
- package/build/ox_modules/module-mob/commands/swipe.js +2 -1
- package/build/ox_modules/module-mob/commands/swipeElement.js +2 -1
- package/build/ox_modules/module-mob/commands/swipeScreen.js +2 -1
- package/build/ox_modules/module-mob/commands/takeScreenshot.js +2 -1
- package/build/ox_modules/module-mob/commands/tap.js +2 -1
- package/build/ox_modules/module-mob/commands/type.js +7 -3
- package/build/ox_modules/module-mob/commands/unlockPattern.js +10 -9
- package/build/ox_modules/module-mob/commands/waitForExist.js +2 -1
- package/build/ox_modules/module-mob/commands/waitForInteractable.js +3 -1
- package/build/ox_modules/module-mob/commands/waitForVisible.js +2 -1
- package/build/ox_modules/module-mob.js +141 -72
- package/build/ox_modules/module-pdf.js +62 -23
- package/build/ox_modules/module-proxy.js +68 -8
- package/build/ox_modules/module-serial.js +32 -7
- package/build/ox_modules/module-shell.js +27 -8
- package/build/ox_modules/module-soap.js +47 -14
- package/build/ox_modules/module-twilio.js +53 -10
- package/build/ox_modules/module-utils.js +51 -16
- package/build/ox_modules/module-web/commands/alertAccept.js +2 -1
- package/build/ox_modules/module-web/commands/alertDismiss.js +2 -1
- package/build/ox_modules/module-web/commands/assertAlert.js +6 -1
- package/build/ox_modules/module-web/commands/assertExist.js +2 -1
- package/build/ox_modules/module-web/commands/assertSelectedLabel.js +4 -1
- package/build/ox_modules/module-web/commands/assertSelectedValue.js +3 -1
- package/build/ox_modules/module-web/commands/assertText.js +3 -1
- package/build/ox_modules/module-web/commands/assertTextNotPresent.js +6 -1
- package/build/ox_modules/module-web/commands/assertTextPresent.js +6 -1
- package/build/ox_modules/module-web/commands/assertTitle.js +3 -1
- package/build/ox_modules/module-web/commands/assertValue.js +3 -1
- package/build/ox_modules/module-web/commands/back.js +2 -1
- package/build/ox_modules/module-web/commands/clear.js +5 -1
- package/build/ox_modules/module-web/commands/click.js +13 -4
- package/build/ox_modules/module-web/commands/clickHidden.js +7 -2
- package/build/ox_modules/module-web/commands/closeWindow.js +2 -1
- package/build/ox_modules/module-web/commands/debug.js +2 -2
- package/build/ox_modules/module-web/commands/deleteCookies.js +2 -1
- package/build/ox_modules/module-web/commands/deselect.js +2 -1
- package/build/ox_modules/module-web/commands/doubleClick.js +9 -3
- package/build/ox_modules/module-web/commands/dragAndDrop.js +2 -1
- package/build/ox_modules/module-web/commands/execute.js +2 -1
- package/build/ox_modules/module-web/commands/fileBrowse.js +10 -4
- package/build/ox_modules/module-web/commands/findElement.js +3 -1
- package/build/ox_modules/module-web/commands/findElements.js +4 -1
- package/build/ox_modules/module-web/commands/fullscreenWindow.js +2 -1
- package/build/ox_modules/module-web/commands/getAlertText.js +2 -1
- package/build/ox_modules/module-web/commands/getAttribute.js +4 -1
- package/build/ox_modules/module-web/commands/getBrowserLogs.js +3 -1
- package/build/ox_modules/module-web/commands/getCookies.js +2 -1
- package/build/ox_modules/module-web/commands/getCssValue.js +4 -1
- package/build/ox_modules/module-web/commands/getElementCount.js +2 -1
- package/build/ox_modules/module-web/commands/getHTML.js +2 -1
- package/build/ox_modules/module-web/commands/getSource.js +2 -1
- package/build/ox_modules/module-web/commands/getText.js +4 -1
- package/build/ox_modules/module-web/commands/getTitle.js +2 -1
- package/build/ox_modules/module-web/commands/getUrl.js +2 -1
- package/build/ox_modules/module-web/commands/getValue.js +5 -1
- package/build/ox_modules/module-web/commands/getWindowHandles.js +2 -1
- package/build/ox_modules/module-web/commands/getWindowSize.js +2 -1
- package/build/ox_modules/module-web/commands/getXMLPageSource.js +5 -1
- package/build/ox_modules/module-web/commands/index.js +100 -19
- package/build/ox_modules/module-web/commands/isAlertPresent.js +2 -1
- package/build/ox_modules/module-web/commands/isChecked.js +2 -1
- package/build/ox_modules/module-web/commands/isExist.js +3 -1
- package/build/ox_modules/module-web/commands/isInteractable.js +2 -1
- package/build/ox_modules/module-web/commands/isSelected.js +2 -1
- package/build/ox_modules/module-web/commands/isVisible.js +3 -1
- package/build/ox_modules/module-web/commands/makeVisible.js +10 -2
- package/build/ox_modules/module-web/commands/maximizeWindow.js +2 -1
- package/build/ox_modules/module-web/commands/minimizeWindow.js +2 -1
- package/build/ox_modules/module-web/commands/newWindow.js +2 -1
- package/build/ox_modules/module-web/commands/open.js +4 -1
- package/build/ox_modules/module-web/commands/pause.js +2 -1
- package/build/ox_modules/module-web/commands/point.js +2 -1
- package/build/ox_modules/module-web/commands/pointJS.js +8 -2
- package/build/ox_modules/module-web/commands/refresh.js +2 -1
- package/build/ox_modules/module-web/commands/rightClick.js +8 -3
- package/build/ox_modules/module-web/commands/rightClickActions.js +2 -1
- package/build/ox_modules/module-web/commands/scrollToElement.js +2 -1
- package/build/ox_modules/module-web/commands/select.js +5 -1
- package/build/ox_modules/module-web/commands/selectFrame.js +3 -1
- package/build/ox_modules/module-web/commands/selectWindow.js +26 -5
- package/build/ox_modules/module-web/commands/sendKeys.js +6 -3
- package/build/ox_modules/module-web/commands/setAutoWaitForAngular.js +2 -2
- package/build/ox_modules/module-web/commands/setTimeout.js +2 -1
- package/build/ox_modules/module-web/commands/setWindowSize.js +2 -1
- package/build/ox_modules/module-web/commands/takeScreenshot.js +5 -3
- package/build/ox_modules/module-web/commands/type.js +5 -1
- package/build/ox_modules/module-web/commands/waitForAngular.js +11 -6
- package/build/ox_modules/module-web/commands/waitForExist.js +2 -1
- package/build/ox_modules/module-web/commands/waitForInteractable.js +2 -1
- package/build/ox_modules/module-web/commands/waitForNotExist.js +8 -1
- package/build/ox_modules/module-web/commands/waitForNotText.js +3 -1
- package/build/ox_modules/module-web/commands/waitForNotValue.js +3 -1
- package/build/ox_modules/module-web/commands/waitForText.js +3 -1
- package/build/ox_modules/module-web/commands/waitForValue.js +3 -1
- package/build/ox_modules/module-web/commands/waitForVisible.js +2 -1
- package/build/ox_modules/module-web/commands/waitForWindow.js +21 -4
- package/build/ox_modules/module-web.js +181 -82
- package/build/ox_modules/module-win/commands/assertText.js +3 -1
- package/build/ox_modules/module-win/commands/assertTitle.js +4 -1
- package/build/ox_modules/module-win/commands/assertValue.js +15 -9
- package/build/ox_modules/module-win/commands/back.js +2 -1
- package/build/ox_modules/module-win/commands/clear.js +4 -1
- package/build/ox_modules/module-win/commands/click.js +2 -1
- package/build/ox_modules/module-win/commands/clickLong.js +2 -1
- package/build/ox_modules/module-win/commands/clickMultipleTimes.js +4 -1
- package/build/ox_modules/module-win/commands/findElement.js +3 -1
- package/build/ox_modules/module-win/commands/findElements.js +4 -1
- package/build/ox_modules/module-win/commands/getAppiumLogs.js +2 -1
- package/build/ox_modules/module-win/commands/getCurrentWindowHandle.js +2 -1
- package/build/ox_modules/module-win/commands/getLocation.js +2 -1
- package/build/ox_modules/module-win/commands/getSource.js +2 -1
- package/build/ox_modules/module-win/commands/getText.js +4 -1
- package/build/ox_modules/module-win/commands/getValue.js +9 -5
- package/build/ox_modules/module-win/commands/getWindowHandles.js +2 -1
- package/build/ox_modules/module-win/commands/index.js +43 -5
- package/build/ox_modules/module-win/commands/isCheckable.js +2 -1
- package/build/ox_modules/module-win/commands/isChecked.js +2 -1
- package/build/ox_modules/module-win/commands/isClickable.js +2 -1
- package/build/ox_modules/module-win/commands/isExist.js +3 -1
- package/build/ox_modules/module-win/commands/isSelected.js +2 -1
- package/build/ox_modules/module-win/commands/isVisible.js +3 -1
- package/build/ox_modules/module-win/commands/open.js +2 -1
- package/build/ox_modules/module-win/commands/pause.js +2 -1
- package/build/ox_modules/module-win/commands/rightClick.js +2 -1
- package/build/ox_modules/module-win/commands/selectWindow.js +15 -1
- package/build/ox_modules/module-win/commands/sendKeys.js +4 -1
- package/build/ox_modules/module-win/commands/setTimeout.js +2 -1
- package/build/ox_modules/module-win/commands/takeScreenshot.js +2 -1
- package/build/ox_modules/module-win/commands/tap.js +2 -1
- package/build/ox_modules/module-win/commands/type.js +4 -1
- package/build/ox_modules/module-win/commands/waitForExist.js +2 -1
- package/build/ox_modules/module-win/commands/waitForInteractable.js +4 -1
- package/build/ox_modules/module-win/commands/waitForVisible.js +2 -1
- package/build/ox_modules/module-win.js +87 -48
- package/build/ox_modules/utils.js +76 -22
- package/build/ox_reporters/reporter-excel.js +58 -1
- package/build/ox_reporters/reporter-html.js +28 -1
- package/build/ox_reporters/reporter-json.js +14 -1
- package/build/ox_reporters/reporter-junit.js +24 -1
- package/build/ox_reporters/reporter-pdf.js +19 -1
- package/build/ox_reporters/reporter-xml.js +17 -1
- package/build/ox_services/service-devtools/submodule-network.js +91 -4
- package/build/ox_services/service-devtools.js +23 -1
- package/build/reporter/FileReporterBase.js +44 -5
- package/build/reporter/ReportAggregator.js +65 -1
- package/build/reporter/ReporterBase.js +6 -1
- package/build/runners/WorkerProcess.js +99 -1
- package/build/runners/cucumber/CucumberEventListener.js +29 -4
- package/build/runners/cucumber/CucumberReporter.js +56 -1
- package/build/runners/cucumber/CucumberWorker.js +66 -1
- package/build/runners/cucumber/index.js +30 -1
- package/build/runners/cucumber/worker.js +18 -1
- package/build/runners/index.js +6 -1
- package/build/runners/oxygen/OxygenWorker.js +60 -3
- package/build/runners/oxygen/index.js +178 -17
- package/build/runners/oxygen/worker.js +25 -2
- package/package.json +8 -8
- package/.babelrc +0 -28
- package/.eslintrc.json +0 -25
- package/.husky/pre-commit +0 -4
- package/CONTRIBUTE.md +0 -1
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
require("source-map-support/register");
|
|
4
|
+
|
|
4
5
|
var _CucumberWorker = _interopRequireDefault(require("./CucumberWorker"));
|
|
6
|
+
|
|
5
7
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
8
|
+
|
|
6
9
|
const oxutil = require('../../lib/util');
|
|
10
|
+
|
|
7
11
|
const errorHelper = require('../../errors/helper');
|
|
12
|
+
|
|
8
13
|
const {
|
|
9
14
|
LEVELS,
|
|
10
15
|
DEFAULT_LOGGER_ISSUER,
|
|
11
16
|
ISSUERS
|
|
12
17
|
} = require('../../lib/logger');
|
|
18
|
+
|
|
13
19
|
global.browser = {};
|
|
14
20
|
const logger = {
|
|
15
21
|
info: function (message, src = DEFAULT_LOGGER_ISSUER) {
|
|
@@ -80,10 +86,13 @@ const reporter = {
|
|
|
80
86
|
emitReporterEvent('onLogEntry', args);
|
|
81
87
|
}
|
|
82
88
|
};
|
|
89
|
+
|
|
83
90
|
function stringify(obj) {
|
|
84
91
|
return typeof obj === 'string' || obj instanceof String ? obj : JSON.stringify(obj, null, 2);
|
|
85
92
|
}
|
|
93
|
+
|
|
86
94
|
let _worker = new _CucumberWorker.default(reporter);
|
|
95
|
+
|
|
87
96
|
oxutil.hookLogs(logger);
|
|
88
97
|
process.on('uncaughtException', async (err, origin) => {
|
|
89
98
|
logger.error(err.message, ISSUERS.USER);
|
|
@@ -101,6 +110,7 @@ process.on('message', async function (msg) {
|
|
|
101
110
|
if (!msg.type) {
|
|
102
111
|
return;
|
|
103
112
|
}
|
|
113
|
+
|
|
104
114
|
if (msg.type === 'invoke' && msg.method) {
|
|
105
115
|
const {
|
|
106
116
|
callId,
|
|
@@ -122,6 +132,7 @@ process.on('message', async function (msg) {
|
|
|
122
132
|
dispose(msg.status || null);
|
|
123
133
|
}
|
|
124
134
|
});
|
|
135
|
+
|
|
125
136
|
function processSend(msg) {
|
|
126
137
|
try {
|
|
127
138
|
process.send({
|
|
@@ -130,6 +141,7 @@ function processSend(msg) {
|
|
|
130
141
|
});
|
|
131
142
|
} catch (e) {}
|
|
132
143
|
}
|
|
144
|
+
|
|
133
145
|
function emitReporterEvent(method, args) {
|
|
134
146
|
processSend({
|
|
135
147
|
event: 'reporter',
|
|
@@ -137,6 +149,7 @@ function emitReporterEvent(method, args) {
|
|
|
137
149
|
args: args
|
|
138
150
|
});
|
|
139
151
|
}
|
|
152
|
+
|
|
140
153
|
async function dispose(status = null) {
|
|
141
154
|
if (_worker) {
|
|
142
155
|
try {
|
|
@@ -144,8 +157,10 @@ async function dispose(status = null) {
|
|
|
144
157
|
} catch (e) {}
|
|
145
158
|
}
|
|
146
159
|
}
|
|
160
|
+
|
|
147
161
|
async function invoke(method, args) {
|
|
148
162
|
let retval, error;
|
|
163
|
+
|
|
149
164
|
if (_worker && _worker[method] && typeof _worker[method] === 'function') {
|
|
150
165
|
try {
|
|
151
166
|
retval = await _worker[method].apply(_worker, args || []);
|
|
@@ -156,12 +171,14 @@ async function invoke(method, args) {
|
|
|
156
171
|
} else {
|
|
157
172
|
error = new Error(`Method "${method}" does not exist`);
|
|
158
173
|
}
|
|
174
|
+
|
|
159
175
|
if (error) {
|
|
160
176
|
error = errorHelper.getFailureFromError(error);
|
|
161
177
|
}
|
|
178
|
+
|
|
162
179
|
return {
|
|
163
180
|
retval,
|
|
164
181
|
error
|
|
165
182
|
};
|
|
166
183
|
}
|
|
167
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJveHV0aWwiLCJyZXF1aXJlIiwiZXJyb3JIZWxwZXIiLCJMRVZFTFMiLCJERUZBVUxUX0xPR0dFUl9JU1NVRVIiLCJJU1NVRVJTIiwiZ2xvYmFsIiwiYnJvd3NlciIsImxvZ2dlciIsImluZm8iLCJtZXNzYWdlIiwic3JjIiwidHMiLCJnZXRUaW1lU3RhbXAiLCJwcm9jZXNzU2VuZCIsInRpbWUiLCJldmVudCIsImxldmVsIiwiSU5GTyIsIm1zZyIsInN0cmluZ2lmeSIsImRlYnVnIiwiREVCVUciLCJlcnJvciIsImVyciIsIkVSUk9SIiwid2FybiIsIldBUk4iLCJyZXBvcnRlciIsIm9uU3VpdGVTdGFydCIsImFyZ3MiLCJlbWl0UmVwb3J0ZXJFdmVudCIsIm9uU3VpdGVFbmQiLCJvbkNhc2VTdGFydCIsIm9uQ2FzZUVuZCIsIm9uU3RlcFN0YXJ0Iiwib25TdGVwRW5kIiwib25SdW5uZXJFbmQiLCJvbkxvZ0VudHJ5Iiwib2JqIiwiU3RyaW5nIiwiSlNPTiIsIl93b3JrZXIiLCJDdWN1bWJlcldvcmtlciIsImhvb2tMb2dzIiwicHJvY2VzcyIsIm9uIiwib3JpZ2luIiwiVVNFUiIsImVyck1lc3NhZ2UiLCJjb25zb2xlIiwibG9nIiwiZGlzcG9zZSIsImV4aXQiLCJ0eXBlIiwibWV0aG9kIiwiY2FsbElkIiwicmV0dmFsIiwiaW52b2tlIiwic3RhdHVzIiwic2VuZCIsImUiLCJhcHBseSIsIkVycm9yIiwiZ2V0RmFpbHVyZUZyb21FcnJvciJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ydW5uZXJzL2N1Y3VtYmVyL3dvcmtlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBveHV0aWwgPSByZXF1aXJlKCcuLi8uLi9saWIvdXRpbCcpO1xyXG5jb25zdCBlcnJvckhlbHBlciA9IHJlcXVpcmUoJy4uLy4uL2Vycm9ycy9oZWxwZXInKTtcclxuY29uc3QgeyBMRVZFTFMsIERFRkFVTFRfTE9HR0VSX0lTU1VFUiwgSVNTVUVSUyB9ID0gcmVxdWlyZSgnLi4vLi4vbGliL2xvZ2dlcicpO1xyXG5pbXBvcnQgQ3VjdW1iZXJXb3JrZXIgIGZyb20gJy4vQ3VjdW1iZXJXb3JrZXInO1xyXG5cclxuLy8gbW9ja3VwIGdsb2JiYWwuYnJvd3NlciBvYmplY3QgZm9yIGludGVybmFsIFdESU8gZnVuY3Rpb25zIHRvIHdvcmsgcHJvcGVybHlcclxuZ2xvYmFsLmJyb3dzZXIgPSB7fTtcclxuXHJcbmNvbnN0IGxvZ2dlciA9IHtcclxuICAgIGluZm86IGZ1bmN0aW9uKG1lc3NhZ2UsIHNyYyA9IERFRkFVTFRfTE9HR0VSX0lTU1VFUikge1xyXG4gICAgICAgIGNvbnN0IHRzID0gb3h1dGlsLmdldFRpbWVTdGFtcCgpO1xyXG4gICAgICAgIHByb2Nlc3NTZW5kKHsgdGltZTogdHMsIGV2ZW50OiAnbG9nJywgbGV2ZWw6IExFVkVMUy5JTkZPLCBtc2c6IHN0cmluZ2lmeShtZXNzYWdlKSwgc3JjIH0pO1xyXG4gICAgfSxcclxuICAgIGRlYnVnOiBmdW5jdGlvbihtZXNzYWdlLCBzcmMgPSBERUZBVUxUX0xPR0dFUl9JU1NVRVIpIHtcclxuICAgICAgICBjb25zdCB0cyA9IG94dXRpbC5nZXRUaW1lU3RhbXAoKTtcclxuICAgICAgICBwcm9jZXNzU2VuZCh7IHRpbWU6IHRzLCBldmVudDogJ2xvZycsIGxldmVsOiBMRVZFTFMuREVCVUcsIG1zZzogc3RyaW5naWZ5KG1lc3NhZ2UpLCBzcmMgfSk7XHJcbiAgICB9LFxyXG4gICAgZXJyb3I6IGZ1bmN0aW9uKG1lc3NhZ2UsIHNyYyA9IERFRkFVTFRfTE9HR0VSX0lTU1VFUiwgZXJyID0gbnVsbCkge1xyXG4gICAgICAgIGNvbnN0IHRzID0gb3h1dGlsLmdldFRpbWVTdGFtcCgpO1xyXG4gICAgICAgIHByb2Nlc3NTZW5kKHsgdGltZTogdHMsIGV2ZW50OiAnbG9nJywgbGV2ZWw6IExFVkVMUy5FUlJPUiwgbXNnOiBzdHJpbmdpZnkobWVzc2FnZSksIHNyYywgZXJyOiBlcnIgfSk7XHJcbiAgICB9LFxyXG4gICAgd2FybjogZnVuY3Rpb24obWVzc2FnZSwgc3JjID0gREVGQVVMVF9MT0dHRVJfSVNTVUVSKSB7XHJcbiAgICAgICAgY29uc3QgdHMgPSBveHV0aWwuZ2V0VGltZVN0YW1wKCk7XHJcbiAgICAgICAgcHJvY2Vzc1NlbmQoeyB0aW1lOiB0cywgZXZlbnQ6ICdsb2cnLCBsZXZlbDogTEVWRUxTLldBUk4sIG1zZzogc3RyaW5naWZ5KG1lc3NhZ2UpLCBzcmMgfSk7XHJcbiAgICB9XHJcbn07XHJcblxyXG5jb25zdCByZXBvcnRlciA9IHtcclxuICAgIG9uU3VpdGVTdGFydDogZnVuY3Rpb24oLi4uYXJncykge1xyXG4gICAgICAgIGVtaXRSZXBvcnRlckV2ZW50KCdvblN1aXRlU3RhcnQnLCBhcmdzKTtcclxuICAgIH0sXHJcbiAgICBvblN1aXRlRW5kOiBmdW5jdGlvbiguLi5hcmdzKSB7XHJcbiAgICAgICAgZW1pdFJlcG9ydGVyRXZlbnQoJ29uU3VpdGVFbmQnLCBhcmdzKTtcclxuICAgIH0sXHJcbiAgICBvbkNhc2VTdGFydDogZnVuY3Rpb24oLi4uYXJncykge1xyXG4gICAgICAgIGVtaXRSZXBvcnRlckV2ZW50KCdvbkNhc2VTdGFydCcsIGFyZ3MpO1xyXG4gICAgfSxcclxuICAgIG9uQ2FzZUVuZDogZnVuY3Rpb24oLi4uYXJncykge1xyXG4gICAgICAgIGVtaXRSZXBvcnRlckV2ZW50KCdvbkNhc2VFbmQnLCBhcmdzKTtcclxuICAgIH0sXHJcbiAgICBvblN0ZXBTdGFydDogZnVuY3Rpb24oLi4uYXJncykge1xyXG4gICAgICAgIGVtaXRSZXBvcnRlckV2ZW50KCdvblN0ZXBTdGFydCcsIGFyZ3MpO1xyXG4gICAgfSxcclxuICAgIG9uU3RlcEVuZDogZnVuY3Rpb24oLi4uYXJncykge1xyXG4gICAgICAgIGVtaXRSZXBvcnRlckV2ZW50KCdvblN0ZXBFbmQnLCBhcmdzKTtcclxuICAgIH0sXHJcbiAgICBvblJ1bm5lckVuZDogZnVuY3Rpb24oLi4uYXJncykge1xyXG4gICAgICAgIGVtaXRSZXBvcnRlckV2ZW50KCdvblJ1bm5lckVuZCcsIGFyZ3MpO1xyXG4gICAgfSxcclxuICAgIG9uTG9nRW50cnk6IGZ1bmN0aW9uKC4uLmFyZ3MpIHtcclxuICAgICAgICBlbWl0UmVwb3J0ZXJFdmVudCgnb25Mb2dFbnRyeScsIGFyZ3MpO1xyXG4gICAgfVxyXG59O1xyXG5cclxuZnVuY3Rpb24gc3RyaW5naWZ5KG9iaikge1xyXG4gICAgcmV0dXJuICh0eXBlb2Ygb2JqID09PSAnc3RyaW5nJyB8fCBvYmogaW5zdGFuY2VvZiBTdHJpbmcgPyBvYmogOiBKU09OLnN0cmluZ2lmeShvYmosIG51bGwsIDIpKTtcclxufVxyXG5cclxuLy8gcmVkaXJlY3Qgc3Rkb3V0IGFuZCBzdGRlcnIgdG8gdGhlIGxvZ2dlclxyXG4vL3Byb2Nlc3Muc3Rkb3V0LndyaXRlID0gbG9nZ2VyLmRlYnVnO1xyXG4vL3Byb2Nlc3Muc3RkZXJyLndyaXRlID0gbG9nZ2VyLmVycm9yO1xyXG5cclxubGV0IF93b3JrZXIgPSBuZXcgQ3VjdW1iZXJXb3JrZXIocmVwb3J0ZXIpO1xyXG5cclxub3h1dGlsLmhvb2tMb2dzKGxvZ2dlcik7XHJcblxyXG5wcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbicsIGFzeW5jKGVyciwgb3JpZ2luKSA9PiB7XHJcbiAgICBsb2dnZXIuZXJyb3IoZXJyLm1lc3NhZ2UsIElTU1VFUlMuVVNFUik7XHJcbiAgICBwcm9jZXNzU2VuZCh7XHJcbiAgICAgICAgZXZlbnQ6ICd3b3JrZXJFcnJvcicsXHJcbiAgICAgICAgZXJyTWVzc2FnZTogZXJyLm1lc3NhZ2UsXHJcbiAgICB9KTtcclxufSk7XHJcblxyXG5wcm9jZXNzLm9uKCdTSUdJTlQnLCBhc3luYyBmdW5jdGlvbigpIHtcclxuICAgIGNvbnNvbGUubG9nKCdTSUdJTlQgcmVjZWl2ZWQnKTtcclxuICAgIGF3YWl0IGRpc3Bvc2UoJ0NBTkNFTEVEJyk7XHJcbiAgICBwcm9jZXNzLmV4aXQoMCk7XHJcbn0pO1xyXG5cclxucHJvY2Vzcy5vbignbWVzc2FnZScsIGFzeW5jIGZ1bmN0aW9uIChtc2cpIHtcclxuICAgIGlmICghbXNnLnR5cGUpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAobXNnLnR5cGUgPT09ICdpbnZva2UnICYmIG1zZy5tZXRob2QpIHtcclxuICAgICAgICBjb25zdCB7IGNhbGxJZCwgbWV0aG9kLCBhcmdzIH0gPSBtc2c7XHJcbiAgICAgICAgY29uc3QgeyByZXR2YWwsIGVycm9yIH0gPSBhd2FpdCBpbnZva2UobWV0aG9kLCBhcmdzKTtcclxuICAgICAgICBwcm9jZXNzU2VuZCh7XHJcbiAgICAgICAgICAgIGV2ZW50OiAnaW52b2tlOnJlc3VsdCcsXHJcbiAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kLFxyXG4gICAgICAgICAgICBjYWxsSWQ6IGNhbGxJZCxcclxuICAgICAgICAgICAgZXJyb3I6IGVycm9yLFxyXG4gICAgICAgICAgICByZXR2YWw6IHJldHZhbFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAobXNnLnR5cGUgPT09ICdleGl0Jykge1xyXG4gICAgICAgIGRpc3Bvc2UobXNnLnN0YXR1cyB8fCBudWxsKTtcclxuICAgIH1cclxufSk7XHJcblxyXG5mdW5jdGlvbiBwcm9jZXNzU2VuZChtc2cpIHtcclxuICAgIC8vIHdyYXAgcHJvY2Vzcy5zZW5kIHdpdGggdHJ5L2NhdGNoIGFzIHNvbWV0aW1lcyB3ZSBtaWdodCBjYWxsIHByb2Nlc3Muc2VuZCBcclxuICAgIC8vIHdoZW4gcGFyZW50IHByb2Nlc3MgaXMgYWxyZWFkeSBkaXNjb25uZWN0ZWQgKHdoZW4gdXNlIGtpbGxzIHRoZSBtYWluIHByb2Nlc3MpXHJcbiAgICB0cnkge1xyXG4gICAgICAgIC8vIGFkZCB1dGMgdGltZXN0YW1wXHJcbiAgICAgICAgcHJvY2Vzcy5zZW5kKHsgdGltZTogb3h1dGlsLmdldFRpbWVTdGFtcCgpLCAuLi5tc2cgfSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgIC8vIGlnbm9yZVxyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBlbWl0UmVwb3J0ZXJFdmVudChtZXRob2QsIGFyZ3MpIHtcclxuICAgIHByb2Nlc3NTZW5kKHtcclxuICAgICAgICBldmVudDogJ3JlcG9ydGVyJyxcclxuICAgICAgICBtZXRob2Q6IG1ldGhvZCxcclxuICAgICAgICBhcmdzOiBhcmdzXHJcbiAgICB9KTtcclxufVxyXG5cclxuYXN5bmMgZnVuY3Rpb24gZGlzcG9zZShzdGF0dXM9IG51bGwpIHtcclxuICAgIGlmIChfd29ya2VyKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgYXdhaXQgX3dvcmtlci5kaXNwb3NlKHN0YXR1cyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIC8vIGlnbm9yZVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuYXN5bmMgZnVuY3Rpb24gaW52b2tlKG1ldGhvZCwgYXJncykge1xyXG4gICAgbGV0IHJldHZhbCwgZXJyb3I7XHJcbiAgICBpZiAoX3dvcmtlciAmJiBfd29ya2VyW21ldGhvZF0gJiYgdHlwZW9mIF93b3JrZXJbbWV0aG9kXSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHJldHZhbCA9IGF3YWl0IF93b3JrZXJbbWV0aG9kXS5hcHBseShfd29ya2VyLCBhcmdzIHx8IFtdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coYEZhaWxlZCB0byBpbnZva2UgXCIke21ldGhvZH1cIiBtZXRob2Q6YCwgZSk7XHJcbiAgICAgICAgICAgIGVycm9yID0gZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBlcnJvciA9IG5ldyBFcnJvcihgTWV0aG9kIFwiJHttZXRob2R9XCIgZG9lcyBub3QgZXhpc3RgKTtcclxuICAgIH1cclxuICAgIC8vIGNvbnZlcnQgSlMgZXJyb3IgdG8gT3h5Z2VuIEZhaWx1cmUgb2JqZWN0XHJcbiAgICBpZiAoZXJyb3IpIHtcclxuICAgICAgICBlcnJvciA9IGVycm9ySGVscGVyLmdldEZhaWx1cmVGcm9tRXJyb3IoZXJyb3IpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsgcmV0dmFsLCBlcnJvciB9O1xyXG59Il0sIm1hcHBpbmdzIjoiOzs7QUFHQTtBQUErQztBQUgvQyxNQUFNQSxNQUFNLEdBQUdDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztBQUN4QyxNQUFNQyxXQUFXLEdBQUdELE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQztBQUNsRCxNQUFNO0VBQUVFLE1BQU07RUFBRUMscUJBQXFCO0VBQUVDO0FBQVEsQ0FBQyxHQUFHSixPQUFPLENBQUMsa0JBQWtCLENBQUM7QUFJOUVLLE1BQU0sQ0FBQ0MsT0FBTyxHQUFHLENBQUMsQ0FBQztBQUVuQixNQUFNQyxNQUFNLEdBQUc7RUFDWEMsSUFBSSxFQUFFLFVBQVNDLE9BQU8sRUFBRUMsR0FBRyxHQUFHUCxxQkFBcUIsRUFBRTtJQUNqRCxNQUFNUSxFQUFFLEdBQUdaLE1BQU0sQ0FBQ2EsWUFBWSxFQUFFO0lBQ2hDQyxXQUFXLENBQUM7TUFBRUMsSUFBSSxFQUFFSCxFQUFFO01BQUVJLEtBQUssRUFBRSxLQUFLO01BQUVDLEtBQUssRUFBRWQsTUFBTSxDQUFDZSxJQUFJO01BQUVDLEdBQUcsRUFBRUMsU0FBUyxDQUFDVixPQUFPLENBQUM7TUFBRUM7SUFBSSxDQUFDLENBQUM7RUFDN0YsQ0FBQztFQUNEVSxLQUFLLEVBQUUsVUFBU1gsT0FBTyxFQUFFQyxHQUFHLEdBQUdQLHFCQUFxQixFQUFFO0lBQ2xELE1BQU1RLEVBQUUsR0FBR1osTUFBTSxDQUFDYSxZQUFZLEVBQUU7SUFDaENDLFdBQVcsQ0FBQztNQUFFQyxJQUFJLEVBQUVILEVBQUU7TUFBRUksS0FBSyxFQUFFLEtBQUs7TUFBRUMsS0FBSyxFQUFFZCxNQUFNLENBQUNtQixLQUFLO01BQUVILEdB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
|
|
184
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ydW5uZXJzL2N1Y3VtYmVyL3dvcmtlci5qcyJdLCJuYW1lcyI6WyJveHV0aWwiLCJyZXF1aXJlIiwiZXJyb3JIZWxwZXIiLCJMRVZFTFMiLCJERUZBVUxUX0xPR0dFUl9JU1NVRVIiLCJJU1NVRVJTIiwiZ2xvYmFsIiwiYnJvd3NlciIsImxvZ2dlciIsImluZm8iLCJtZXNzYWdlIiwic3JjIiwidHMiLCJnZXRUaW1lU3RhbXAiLCJwcm9jZXNzU2VuZCIsInRpbWUiLCJldmVudCIsImxldmVsIiwiSU5GTyIsIm1zZyIsInN0cmluZ2lmeSIsImRlYnVnIiwiREVCVUciLCJlcnJvciIsImVyciIsIkVSUk9SIiwid2FybiIsIldBUk4iLCJyZXBvcnRlciIsIm9uU3VpdGVTdGFydCIsImFyZ3MiLCJlbWl0UmVwb3J0ZXJFdmVudCIsIm9uU3VpdGVFbmQiLCJvbkNhc2VTdGFydCIsIm9uQ2FzZUVuZCIsIm9uU3RlcFN0YXJ0Iiwib25TdGVwRW5kIiwib25SdW5uZXJFbmQiLCJvbkxvZ0VudHJ5Iiwib2JqIiwiU3RyaW5nIiwiSlNPTiIsIl93b3JrZXIiLCJDdWN1bWJlcldvcmtlciIsImhvb2tMb2dzIiwicHJvY2VzcyIsIm9uIiwib3JpZ2luIiwiVVNFUiIsImVyck1lc3NhZ2UiLCJjb25zb2xlIiwibG9nIiwiZGlzcG9zZSIsImV4aXQiLCJ0eXBlIiwibWV0aG9kIiwiY2FsbElkIiwicmV0dmFsIiwiaW52b2tlIiwic3RhdHVzIiwic2VuZCIsImUiLCJhcHBseSIsIkVycm9yIiwiZ2V0RmFpbHVyZUZyb21FcnJvciJdLCJtYXBwaW5ncyI6Ijs7OztBQUdBOzs7O0FBSEEsTUFBTUEsTUFBTSxHQUFHQyxPQUFPLENBQUMsZ0JBQUQsQ0FBdEI7O0FBQ0EsTUFBTUMsV0FBVyxHQUFHRCxPQUFPLENBQUMscUJBQUQsQ0FBM0I7O0FBQ0EsTUFBTTtBQUFFRSxFQUFBQSxNQUFGO0FBQVVDLEVBQUFBLHFCQUFWO0FBQWlDQyxFQUFBQTtBQUFqQyxJQUE2Q0osT0FBTyxDQUFDLGtCQUFELENBQTFEOztBQUlBSyxNQUFNLENBQUNDLE9BQVAsR0FBaUIsRUFBakI7QUFFQSxNQUFNQyxNQUFNLEdBQUc7QUFDWEMsRUFBQUEsSUFBSSxFQUFFLFVBQVNDLE9BQVQsRUFBa0JDLEdBQUcsR0FBR1AscUJBQXhCLEVBQStDO0FBQ2pELFVBQU1RLEVBQUUsR0FBR1osTUFBTSxDQUFDYSxZQUFQLEVBQVg7QUFDQUMsSUFBQUEsV0FBVyxDQUFDO0FBQUVDLE1BQUFBLElBQUksRUFBRUgsRUFBUjtBQUFZSSxNQUFBQSxLQUFLLEVBQUUsS0FBbkI7QUFBMEJDLE1BQUFBLEtBQUssRUFBRWQsTUFBTSxDQUFDZSxJQUF4QztBQUE4Q0MsTUFBQUEsR0FBRyxFQUFFQyxTQUFTLENBQUNWLE9BQUQsQ0FBNUQ7QUFBdUVDLE1BQUFBO0FBQXZFLEtBQUQsQ0FBWDtBQUNILEdBSlU7QUFLWFUsRUFBQUEsS0FBSyxFQUFFLFVBQVNYLE9BQVQsRUFBa0JDLEdBQUcsR0FBR1AscUJBQXhCLEVBQStDO0FBQ2xELFVBQU1RLEVBQUUsR0FBR1osTUFBTSxDQUFDYSxZQUFQLEVBQVg7QUFDQUMsSUFBQUEsV0FBVyxDQUFDO0FBQUVDLE1BQUFBLElBQUksRUFBRUgsRUFBUjtBQUFZSSxNQUFBQSxLQUFLLEVBQUUsS0FBbkI7QUFBMEJDLE1BQUFBLEtBQUssRUFBRWQsTUFBTSxDQUFDbUIsS0FBeEM7QUFBK0NILE1BQUFBLEdBQUcsRUFBRUMsU0FBUyxDQUFDVixPQUFELENBQTdEO0FBQXdFQyxNQUFBQTtBQUF4RSxLQUFELENBQVg7QUFDSCxHQVJVO0FBU1hZLEVBQUFBLEtBQUssRUFBRSxVQUFTYixPQUFULEVBQWtCQyxHQUFHLEdBQUdQLHFCQUF4QixFQUErQ29CLEdBQUcsR0FBRyxJQUFyRCxFQUEyRDtBQUM5RCxVQUFNWixFQUFFLEdBQUdaLE1BQU0sQ0FBQ2EsWUFBUCxFQUFYO0FBQ0FDLElBQUFBLFdBQVcsQ0FBQztBQUFFQyxNQUFBQSxJQUFJLEVBQUVILEVBQVI7QUFBWUksTUFBQUEsS0FBSyxFQUFFLEtBQW5CO0FBQTBCQyxNQUFBQSxLQUFLLEVBQUVkLE1BQU0sQ0FBQ3NCLEtBQXhDO0FBQStDTixNQUFBQSxHQUFHLEVBQUVDLFNBQVMsQ0FBQ1YsT0FBRCxDQUE3RDtBQUF3RUMsTUFBQUEsR0FBeEU7QUFBNkVhLE1BQUFBLEdBQUcsRUFBRUE7QUFBbEYsS0FBRCxDQUFYO0FBQ0gsR0FaVTtBQWFYRSxFQUFBQSxJQUFJLEVBQUUsVUFBU2hCLE9BQVQsRUFBa0JDLEdBQUcsR0FBR1AscUJBQXhCLEVBQStDO0FBQ2pELFVBQU1RLEVBQUUsR0FBR1osTUFBTSxDQUFDYSxZQUFQLEVBQVg7QUFDQUMsSUFBQUEsV0FBVyxDQUFDO0FBQUVDLE1BQUFBLElBQUksRUFBRUgsRUFBUjtBQUFZSSxNQUFBQSxLQUFLLEVBQUUsS0FBbkI7QUFBMEJDLE1BQUFBLEtBQUssRUFBRWQsTUFBTSxDQUFDd0IsSUFBeEM7QUFBOENSLE1BQUFBLEdBQUcsRUFBRUMsU0FBUyxDQUFDVixPQUFELENBQTVEO0FBQXVFQyxNQUFBQTtBQUF2RSxLQUFELENBQVg7QUFDSDtBQWhCVSxDQUFmO0FBbUJBLE1BQU1pQixRQUFRLEdBQUc7QUFDYkMsRUFBQUEsWUFBWSxFQUFFLFVBQVMsR0FBR0MsSUFBWixFQUFrQjtBQUM1QkMsSUFBQUEsaUJBQWlCLENBQUMsY0FBRCxFQUFpQkQsSUFBakIsQ0FBakI7QUFDSCxHQUhZO0FBSWJFLEVBQUFBLFVBQVUsRUFBRSxVQUFTLEdBQUdGLElBQVosRUFBa0I7QUFDMUJDLElBQUFBLGlCQUFpQixDQUFDLFlBQUQsRUFBZUQsSUFBZixDQUFqQjtBQUNILEdBTlk7QUFPYkcsRUFBQUEsV0FBVyxFQUFFLFVBQVMsR0FBR0gsSUFBWixFQUFrQjtBQUMzQkMsSUFBQUEsaUJBQWlCLENBQUMsYUFBRCxFQUFnQkQsSUFBaEIsQ0FBakI7QUFDSCxHQVRZO0FBVWJJLEVBQUFBLFNBQVMsRUFBRSxVQUFTLEdBQUdKLElBQVosRUFBa0I7QUFDekJDLElBQUFBLGlCQUFpQixDQUFDLFdBQUQsRUFBY0QsSUFBZCxDQUFqQjtBQUNILEdBWlk7QUFhYkssRUFBQUEsV0FBVyxFQUFFLFVBQVMsR0FBR0wsSUFBWixFQUFrQjtBQUMzQkMsSUFBQUEsaUJBQWlCLENBQUMsYUFBRCxFQUFnQkQsSUFBaEIsQ0FBakI7QUFDSCxHQWZZO0FBZ0JiTSxFQUFBQSxTQUFTLEVBQUUsVUFBUyxHQUFHTixJQUFaLEVBQWtCO0FBQ3pCQyxJQUFBQSxpQkFBaUIsQ0FBQyxXQUFELEVBQWNELElBQWQsQ0FBakI7QUFDSCxHQWxCWTtBQW1CYk8sRUFBQUEsV0FBVyxFQUFFLFVBQVMsR0FBR1AsSUFBWixFQUFrQjtBQUMzQkMsSUFBQUEsaUJBQWlCLENBQUMsYUFBRCxFQUFnQkQsSUFBaEIsQ0FBakI7QUFDSCxHQXJCWTtBQXNCYlEsRUFBQUEsVUFBVSxFQUFFLFVBQVMsR0FBR1IsSUFBWixFQUFrQjtBQUMxQkMsSUFBQUEsaUJBQWlCLENBQUMsWUFBRCxFQUFlRCxJQUFmLENBQWpCO0FBQ0g7QUF4QlksQ0FBakI7O0FBMkJBLFNBQVNWLFNBQVQsQ0FBbUJtQixHQUFuQixFQUF3QjtBQUNwQixTQUFRLE9BQU9BLEdBQVAsS0FBZSxRQUFmLElBQTJCQSxHQUFHLFlBQVlDLE1BQTFDLEdBQW1ERCxHQUFuRCxHQUF5REUsSUFBSSxDQUFDckIsU0FBTCxDQUFlbUIsR0FBZixFQUFvQixJQUFwQixFQUEwQixDQUExQixDQUFqRTtBQUNIOztBQU1ELElBQUlHLE9BQU8sR0FBRyxJQUFJQyx1QkFBSixDQUFtQmYsUUFBbkIsQ0FBZDs7QUFFQTVCLE1BQU0sQ0FBQzRDLFFBQVAsQ0FBZ0JwQyxNQUFoQjtBQUVBcUMsT0FBTyxDQUFDQyxFQUFSLENBQVcsbUJBQVgsRUFBZ0MsT0FBTXRCLEdBQU4sRUFBV3VCLE1BQVgsS0FBc0I7QUFDbER2QyxFQUFBQSxNQUFNLENBQUNlLEtBQVAsQ0FBYUMsR0FBRyxDQUFDZCxPQUFqQixFQUEwQkwsT0FBTyxDQUFDMkMsSUFBbEM7QUFDQWxDLEVBQUFBLFdBQVcsQ0FBQztBQUNSRSxJQUFBQSxLQUFLLEVBQUUsYUFEQztBQUVSaUMsSUFBQUEsVUFBVSxFQUFFekIsR0FBRyxDQUFDZDtBQUZSLEdBQUQsQ0FBWDtBQUlILENBTkQ7QUFRQW1DLE9BQU8sQ0FBQ0MsRUFBUixDQUFXLFFBQVgsRUFBcUIsa0JBQWlCO0FBQ2xDSSxFQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBWSxpQkFBWjtBQUNBLFFBQU1DLE9BQU8sQ0FBQyxVQUFELENBQWI7QUFDQVAsRUFBQUEsT0FBTyxDQUFDUSxJQUFSLENBQWEsQ0FBYjtBQUNILENBSkQ7QUFNQVIsT0FBTyxDQUFDQyxFQUFSLENBQVcsU0FBWCxFQUFzQixnQkFBZ0IzQixHQUFoQixFQUFxQjtBQUN2QyxNQUFJLENBQUNBLEdBQUcsQ0FBQ21DLElBQVQsRUFBZTtBQUNYO0FBQ0g7O0FBQ0QsTUFBSW5DLEdBQUcsQ0FBQ21DLElBQUosS0FBYSxRQUFiLElBQXlCbkMsR0FBRyxDQUFDb0MsTUFBakMsRUFBeUM7QUFDckMsVUFBTTtBQUFFQyxNQUFBQSxNQUFGO0FBQVVELE1BQUFBLE1BQVY7QUFBa0J6QixNQUFBQTtBQUFsQixRQUEyQlgsR0FBakM7QUFDQSxVQUFNO0FBQUVzQyxNQUFBQSxNQUFGO0FBQVVsQyxNQUFBQTtBQUFWLFFBQW9CLE1BQU1tQyxNQUFNLENBQUNILE1BQUQsRUFBU3pCLElBQVQsQ0FBdEM7QUFDQWhCLElBQUFBLFdBQVcsQ0FBQztBQUNSRSxNQUFBQSxLQUFLLEVBQUUsZUFEQztBQUVSdUMsTUFBQUEsTUFBTSxFQUFFQSxNQUZBO0FBR1JDLE1BQUFBLE1BQU0sRUFBRUEsTUFIQTtBQUlSakMsTUFBQUEsS0FBSyxFQUFFQSxLQUpDO0FBS1JrQyxNQUFBQSxNQUFNLEVBQUVBO0FBTEEsS0FBRCxDQUFYO0FBT0gsR0FWRCxNQVdLLElBQUl0QyxHQUFHLENBQUNtQyxJQUFKLEtBQWEsTUFBakIsRUFBeUI7QUFDMUJGLElBQUFBLE9BQU8sQ0FBQ2pDLEdBQUcsQ0FBQ3dDLE1BQUosSUFBYyxJQUFmLENBQVA7QUFDSDtBQUNKLENBbEJEOztBQW9CQSxTQUFTN0MsV0FBVCxDQUFxQkssR0FBckIsRUFBMEI7QUFHdEIsTUFBSTtBQUVBMEIsSUFBQUEsT0FBTyxDQUFDZSxJQUFSLENBQWE7QUFBRTdDLE1BQUFBLElBQUksRUFBRWYsTUFBTSxDQUFDYSxZQUFQLEVBQVI7QUFBK0IsU0FBR007QUFBbEMsS0FBYjtBQUNILEdBSEQsQ0FJQSxPQUFPMEMsQ0FBUCxFQUFVLENBRVQ7QUFDSjs7QUFFRCxTQUFTOUIsaUJBQVQsQ0FBMkJ3QixNQUEzQixFQUFtQ3pCLElBQW5DLEVBQXlDO0FBQ3JDaEIsRUFBQUEsV0FBVyxDQUFDO0FBQ1JFLElBQUFBLEtBQUssRUFBRSxVQURDO0FBRVJ1QyxJQUFBQSxNQUFNLEVBQUVBLE1BRkE7QUFHUnpCLElBQUFBLElBQUksRUFBRUE7QUFIRSxHQUFELENBQVg7QUFLSDs7QUFFRCxlQUFlc0IsT0FBZixDQUF1Qk8sTUFBTSxHQUFFLElBQS9CLEVBQXFDO0FBQ2pDLE1BQUlqQixPQUFKLEVBQWE7QUFDVCxRQUFJO0FBQ0EsWUFBTUEsT0FBTyxDQUFDVSxPQUFSLENBQWdCTyxNQUFoQixDQUFOO0FBQ0gsS0FGRCxDQUdBLE9BQU9FLENBQVAsRUFBVSxDQUVUO0FBQ0o7QUFDSjs7QUFFRCxlQUFlSCxNQUFmLENBQXNCSCxNQUF0QixFQUE4QnpCLElBQTlCLEVBQW9DO0FBQ2hDLE1BQUkyQixNQUFKLEVBQVlsQyxLQUFaOztBQUNBLE1BQUltQixPQUFPLElBQUlBLE9BQU8sQ0FBQ2EsTUFBRCxDQUFsQixJQUE4QixPQUFPYixPQUFPLENBQUNhLE1BQUQsQ0FBZCxLQUEyQixVQUE3RCxFQUF5RTtBQUNyRSxRQUFJO0FBQ0FFLE1BQUFBLE1BQU0sR0FBRyxNQUFNZixPQUFPLENBQUNhLE1BQUQsQ0FBUCxDQUFnQk8sS0FBaEIsQ0FBc0JwQixPQUF0QixFQUErQlosSUFBSSxJQUFJLEVBQXZDLENBQWY7QUFDSCxLQUZELENBR0EsT0FBTytCLENBQVAsRUFBVTtBQUNOWCxNQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBYSxxQkFBb0JJLE1BQU8sV0FBeEMsRUFBb0RNLENBQXBEO0FBQ0F0QyxNQUFBQSxLQUFLLEdBQUdzQyxDQUFSO0FBQ0g7QUFDSixHQVJELE1BU0s7QUFDRHRDLElBQUFBLEtBQUssR0FBRyxJQUFJd0MsS0FBSixDQUFXLFdBQVVSLE1BQU8sa0JBQTVCLENBQVI7QUFDSDs7QUFFRCxNQUFJaEMsS0FBSixFQUFXO0FBQ1BBLElBQUFBLEtBQUssR0FBR3JCLFdBQVcsQ0FBQzhELG1CQUFaLENBQWdDekMsS0FBaEMsQ0FBUjtBQUNIOztBQUNELFNBQU87QUFBRWtDLElBQUFBLE1BQUY7QUFBVWxDLElBQUFBO0FBQVYsR0FBUDtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3Qgb3h1dGlsID0gcmVxdWlyZSgnLi4vLi4vbGliL3V0aWwnKTtcclxuY29uc3QgZXJyb3JIZWxwZXIgPSByZXF1aXJlKCcuLi8uLi9lcnJvcnMvaGVscGVyJyk7XHJcbmNvbnN0IHsgTEVWRUxTLCBERUZBVUxUX0xPR0dFUl9JU1NVRVIsIElTU1VFUlMgfSA9IHJlcXVpcmUoJy4uLy4uL2xpYi9sb2dnZXInKTtcclxuaW1wb3J0IEN1Y3VtYmVyV29ya2VyICBmcm9tICcuL0N1Y3VtYmVyV29ya2VyJztcclxuXHJcbi8vIG1vY2t1cCBnbG9iYmFsLmJyb3dzZXIgb2JqZWN0IGZvciBpbnRlcm5hbCBXRElPIGZ1bmN0aW9ucyB0byB3b3JrIHByb3Blcmx5XHJcbmdsb2JhbC5icm93c2VyID0ge307XHJcblxyXG5jb25zdCBsb2dnZXIgPSB7XHJcbiAgICBpbmZvOiBmdW5jdGlvbihtZXNzYWdlLCBzcmMgPSBERUZBVUxUX0xPR0dFUl9JU1NVRVIpIHtcclxuICAgICAgICBjb25zdCB0cyA9IG94dXRpbC5nZXRUaW1lU3RhbXAoKTtcclxuICAgICAgICBwcm9jZXNzU2VuZCh7IHRpbWU6IHRzLCBldmVudDogJ2xvZycsIGxldmVsOiBMRVZFTFMuSU5GTywgbXNnOiBzdHJpbmdpZnkobWVzc2FnZSksIHNyYyB9KTtcclxuICAgIH0sXHJcbiAgICBkZWJ1ZzogZnVuY3Rpb24obWVzc2FnZSwgc3JjID0gREVGQVVMVF9MT0dHRVJfSVNTVUVSKSB7XHJcbiAgICAgICAgY29uc3QgdHMgPSBveHV0aWwuZ2V0VGltZVN0YW1wKCk7XHJcbiAgICAgICAgcHJvY2Vzc1NlbmQoeyB0aW1lOiB0cywgZXZlbnQ6ICdsb2cnLCBsZXZlbDogTEVWRUxTLkRFQlVHLCBtc2c6IHN0cmluZ2lmeShtZXNzYWdlKSwgc3JjIH0pO1xyXG4gICAgfSxcclxuICAgIGVycm9yOiBmdW5jdGlvbihtZXNzYWdlLCBzcmMgPSBERUZBVUxUX0xPR0dFUl9JU1NVRVIsIGVyciA9IG51bGwpIHtcclxuICAgICAgICBjb25zdCB0cyA9IG94dXRpbC5nZXRUaW1lU3RhbXAoKTtcclxuICAgICAgICBwcm9jZXNzU2VuZCh7IHRpbWU6IHRzLCBldmVudDogJ2xvZycsIGxldmVsOiBMRVZFTFMuRVJST1IsIG1zZzogc3RyaW5naWZ5KG1lc3NhZ2UpLCBzcmMsIGVycjogZXJyIH0pO1xyXG4gICAgfSxcclxuICAgIHdhcm46IGZ1bmN0aW9uKG1lc3NhZ2UsIHNyYyA9IERFRkFVTFRfTE9HR0VSX0lTU1VFUikge1xyXG4gICAgICAgIGNvbnN0IHRzID0gb3h1dGlsLmdldFRpbWVTdGFtcCgpO1xyXG4gICAgICAgIHByb2Nlc3NTZW5kKHsgdGltZTogdHMsIGV2ZW50OiAnbG9nJywgbGV2ZWw6IExFVkVMUy5XQVJOLCBtc2c6IHN0cmluZ2lmeShtZXNzYWdlKSwgc3JjIH0pO1xyXG4gICAgfVxyXG59O1xyXG5cclxuY29uc3QgcmVwb3J0ZXIgPSB7XHJcbiAgICBvblN1aXRlU3RhcnQ6IGZ1bmN0aW9uKC4uLmFyZ3MpIHtcclxuICAgICAgICBlbWl0UmVwb3J0ZXJFdmVudCgnb25TdWl0ZVN0YXJ0JywgYXJncyk7XHJcbiAgICB9LFxyXG4gICAgb25TdWl0ZUVuZDogZnVuY3Rpb24oLi4uYXJncykge1xyXG4gICAgICAgIGVtaXRSZXBvcnRlckV2ZW50KCdvblN1aXRlRW5kJywgYXJncyk7XHJcbiAgICB9LFxyXG4gICAgb25DYXNlU3RhcnQ6IGZ1bmN0aW9uKC4uLmFyZ3MpIHtcclxuICAgICAgICBlbWl0UmVwb3J0ZXJFdmVudCgnb25DYXNlU3RhcnQnLCBhcmdzKTtcclxuICAgIH0sXHJcbiAgICBvbkNhc2VFbmQ6IGZ1bmN0aW9uKC4uLmFyZ3MpIHtcclxuICAgICAgICBlbWl0UmVwb3J0ZXJFdmVudCgnb25DYXNlRW5kJywgYXJncyk7XHJcbiAgICB9LFxyXG4gICAgb25TdGVwU3RhcnQ6IGZ1bmN0aW9uKC4uLmFyZ3MpIHtcclxuICAgICAgICBlbWl0UmVwb3J0ZXJFdmVudCgnb25TdGVwU3RhcnQnLCBhcmdzKTtcclxuICAgIH0sXHJcbiAgICBvblN0ZXBFbmQ6IGZ1bmN0aW9uKC4uLmFyZ3MpIHtcclxuICAgICAgICBlbWl0UmVwb3J0ZXJFdmVudCgnb25TdGVwRW5kJywgYXJncyk7XHJcbiAgICB9LFxyXG4gICAgb25SdW5uZXJFbmQ6IGZ1bmN0aW9uKC4uLmFyZ3MpIHtcclxuICAgICAgICBlbWl0UmVwb3J0ZXJFdmVudCgnb25SdW5uZXJFbmQnLCBhcmdzKTtcclxuICAgIH0sXHJcbiAgICBvbkxvZ0VudHJ5OiBmdW5jdGlvbiguLi5hcmdzKSB7XHJcbiAgICAgICAgZW1pdFJlcG9ydGVyRXZlbnQoJ29uTG9nRW50cnknLCBhcmdzKTtcclxuICAgIH1cclxufTtcclxuXHJcbmZ1bmN0aW9uIHN0cmluZ2lmeShvYmopIHtcclxuICAgIHJldHVybiAodHlwZW9mIG9iaiA9PT0gJ3N0cmluZycgfHwgb2JqIGluc3RhbmNlb2YgU3RyaW5nID8gb2JqIDogSlNPTi5zdHJpbmdpZnkob2JqLCBudWxsLCAyKSk7XHJcbn1cclxuXHJcbi8vIHJlZGlyZWN0IHN0ZG91dCBhbmQgc3RkZXJyIHRvIHRoZSBsb2dnZXJcclxuLy9wcm9jZXNzLnN0ZG91dC53cml0ZSA9IGxvZ2dlci5kZWJ1ZztcclxuLy9wcm9jZXNzLnN0ZGVyci53cml0ZSA9IGxvZ2dlci5lcnJvcjtcclxuXHJcbmxldCBfd29ya2VyID0gbmV3IEN1Y3VtYmVyV29ya2VyKHJlcG9ydGVyKTtcclxuXHJcbm94dXRpbC5ob29rTG9ncyhsb2dnZXIpO1xyXG5cclxucHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCBhc3luYyhlcnIsIG9yaWdpbikgPT4ge1xyXG4gICAgbG9nZ2VyLmVycm9yKGVyci5tZXNzYWdlLCBJU1NVRVJTLlVTRVIpO1xyXG4gICAgcHJvY2Vzc1NlbmQoe1xyXG4gICAgICAgIGV2ZW50OiAnd29ya2VyRXJyb3InLFxyXG4gICAgICAgIGVyck1lc3NhZ2U6IGVyci5tZXNzYWdlLFxyXG4gICAgfSk7XHJcbn0pO1xyXG5cclxucHJvY2Vzcy5vbignU0lHSU5UJywgYXN5bmMgZnVuY3Rpb24oKSB7XHJcbiAgICBjb25zb2xlLmxvZygnU0lHSU5UIHJlY2VpdmVkJyk7XHJcbiAgICBhd2FpdCBkaXNwb3NlKCdDQU5DRUxFRCcpO1xyXG4gICAgcHJvY2Vzcy5leGl0KDApO1xyXG59KTtcclxuXHJcbnByb2Nlc3Mub24oJ21lc3NhZ2UnLCBhc3luYyBmdW5jdGlvbiAobXNnKSB7XHJcbiAgICBpZiAoIW1zZy50eXBlKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKG1zZy50eXBlID09PSAnaW52b2tlJyAmJiBtc2cubWV0aG9kKSB7XHJcbiAgICAgICAgY29uc3QgeyBjYWxsSWQsIG1ldGhvZCwgYXJncyB9ID0gbXNnO1xyXG4gICAgICAgIGNvbnN0IHsgcmV0dmFsLCBlcnJvciB9ID0gYXdhaXQgaW52b2tlKG1ldGhvZCwgYXJncyk7XHJcbiAgICAgICAgcHJvY2Vzc1NlbmQoe1xyXG4gICAgICAgICAgICBldmVudDogJ2ludm9rZTpyZXN1bHQnLFxyXG4gICAgICAgICAgICBtZXRob2Q6IG1ldGhvZCxcclxuICAgICAgICAgICAgY2FsbElkOiBjYWxsSWQsXHJcbiAgICAgICAgICAgIGVycm9yOiBlcnJvcixcclxuICAgICAgICAgICAgcmV0dmFsOiByZXR2YWxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKG1zZy50eXBlID09PSAnZXhpdCcpIHtcclxuICAgICAgICBkaXNwb3NlKG1zZy5zdGF0dXMgfHwgbnVsbCk7XHJcbiAgICB9XHJcbn0pO1xyXG5cclxuZnVuY3Rpb24gcHJvY2Vzc1NlbmQobXNnKSB7XHJcbiAgICAvLyB3cmFwIHByb2Nlc3Muc2VuZCB3aXRoIHRyeS9jYXRjaCBhcyBzb21ldGltZXMgd2UgbWlnaHQgY2FsbCBwcm9jZXNzLnNlbmQgXHJcbiAgICAvLyB3aGVuIHBhcmVudCBwcm9jZXNzIGlzIGFscmVhZHkgZGlzY29ubmVjdGVkICh3aGVuIHVzZSBraWxscyB0aGUgbWFpbiBwcm9jZXNzKVxyXG4gICAgdHJ5IHtcclxuICAgICAgICAvLyBhZGQgdXRjIHRpbWVzdGFtcFxyXG4gICAgICAgIHByb2Nlc3Muc2VuZCh7IHRpbWU6IG94dXRpbC5nZXRUaW1lU3RhbXAoKSwgLi4ubXNnIH0pO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAvLyBpZ25vcmVcclxuICAgIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZW1pdFJlcG9ydGVyRXZlbnQobWV0aG9kLCBhcmdzKSB7XHJcbiAgICBwcm9jZXNzU2VuZCh7XHJcbiAgICAgICAgZXZlbnQ6ICdyZXBvcnRlcicsXHJcbiAgICAgICAgbWV0aG9kOiBtZXRob2QsXHJcbiAgICAgICAgYXJnczogYXJnc1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbmFzeW5jIGZ1bmN0aW9uIGRpc3Bvc2Uoc3RhdHVzPSBudWxsKSB7XHJcbiAgICBpZiAoX3dvcmtlcikge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGF3YWl0IF93b3JrZXIuZGlzcG9zZShzdGF0dXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAvLyBpZ25vcmVcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmFzeW5jIGZ1bmN0aW9uIGludm9rZShtZXRob2QsIGFyZ3MpIHtcclxuICAgIGxldCByZXR2YWwsIGVycm9yO1xyXG4gICAgaWYgKF93b3JrZXIgJiYgX3dvcmtlclttZXRob2RdICYmIHR5cGVvZiBfd29ya2VyW21ldGhvZF0gPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICByZXR2YWwgPSBhd2FpdCBfd29ya2VyW21ldGhvZF0uYXBwbHkoX3dvcmtlciwgYXJncyB8fCBbXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBGYWlsZWQgdG8gaW52b2tlIFwiJHttZXRob2R9XCIgbWV0aG9kOmAsIGUpO1xyXG4gICAgICAgICAgICBlcnJvciA9IGU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoYE1ldGhvZCBcIiR7bWV0aG9kfVwiIGRvZXMgbm90IGV4aXN0YCk7XHJcbiAgICB9XHJcbiAgICAvLyBjb252ZXJ0IEpTIGVycm9yIHRvIE94eWdlbiBGYWlsdXJlIG9iamVjdFxyXG4gICAgaWYgKGVycm9yKSB7XHJcbiAgICAgICAgZXJyb3IgPSBlcnJvckhlbHBlci5nZXRGYWlsdXJlRnJvbUVycm9yKGVycm9yKTtcclxuICAgIH1cclxuICAgIHJldHVybiB7IHJldHZhbCwgZXJyb3IgfTtcclxufSJdfQ==
|
package/build/runners/index.js
CHANGED
|
@@ -4,12 +4,17 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.oxygen = exports.cucumber = void 0;
|
|
7
|
+
|
|
7
8
|
require("source-map-support/register");
|
|
9
|
+
|
|
8
10
|
var _cucumber = _interopRequireDefault(require("./cucumber"));
|
|
11
|
+
|
|
9
12
|
var _oxygen = _interopRequireDefault(require("./oxygen"));
|
|
13
|
+
|
|
10
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
+
|
|
11
16
|
const cucumber = _cucumber.default;
|
|
12
17
|
exports.cucumber = cucumber;
|
|
13
18
|
const oxygen = _oxygen.default;
|
|
14
19
|
exports.oxygen = oxygen;
|
|
15
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydW5uZXJzL2luZGV4LmpzIl0sIm5hbWVzIjpbImN1Y3VtYmVyIiwiQ3VjdW1iZXJSdW5uZXIiLCJveHlnZW4iLCJPeHlnZW5SdW5uZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUNBOzs7O0FBRU8sTUFBTUEsUUFBUSxHQUFHQyxpQkFBakI7O0FBQ0EsTUFBTUMsTUFBTSxHQUFHQyxlQUFmIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEN1Y3VtYmVyUnVubmVyIGZyb20gJy4vY3VjdW1iZXInO1xyXG5pbXBvcnQgT3h5Z2VuUnVubmVyIGZyb20gJy4vb3h5Z2VuJztcclxuXHJcbmV4cG9ydCBjb25zdCBjdWN1bWJlciA9IEN1Y3VtYmVyUnVubmVyO1xyXG5leHBvcnQgY29uc3Qgb3h5Z2VuID0gT3h5Z2VuUnVubmVyO1xyXG4iXX0=
|
|
@@ -4,18 +4,28 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
+
|
|
7
8
|
require("source-map-support/register");
|
|
9
|
+
|
|
8
10
|
const Fiber = require('fibers');
|
|
11
|
+
|
|
9
12
|
const path = require('path');
|
|
13
|
+
|
|
10
14
|
const fs = require('fs');
|
|
15
|
+
|
|
11
16
|
const {
|
|
12
17
|
EventEmitter
|
|
13
18
|
} = require('events');
|
|
19
|
+
|
|
14
20
|
const Oxygen = require('../../core/OxygenCore').default;
|
|
21
|
+
|
|
15
22
|
const oxutil = require('../../lib/util');
|
|
23
|
+
|
|
16
24
|
const errorHelper = require('../../errors/helper');
|
|
25
|
+
|
|
17
26
|
require = require('esm')(module);
|
|
18
27
|
global.browser = {};
|
|
28
|
+
|
|
19
29
|
class OxygenWorker extends EventEmitter {
|
|
20
30
|
constructor(reporter, logger) {
|
|
21
31
|
super();
|
|
@@ -26,25 +36,34 @@ class OxygenWorker extends EventEmitter {
|
|
|
26
36
|
this._reporter = reporter;
|
|
27
37
|
this._runId = null;
|
|
28
38
|
}
|
|
39
|
+
|
|
29
40
|
async init(runId, options, caps) {
|
|
30
41
|
this._runId = runId;
|
|
31
42
|
this._opts = options;
|
|
32
43
|
this._cwd = this._opts.cwd || process.cwd();
|
|
44
|
+
|
|
33
45
|
if (!this._oxygen) {
|
|
34
46
|
try {
|
|
35
47
|
this._oxygen = new Oxygen();
|
|
48
|
+
|
|
36
49
|
this._oxygen.on('command:before', this._handleBeforeCommand.bind(this));
|
|
50
|
+
|
|
37
51
|
this._oxygen.on('command:after', this._handleAfterCommand.bind(this));
|
|
52
|
+
|
|
38
53
|
this._oxygen.on('log', this._handleLogEntry.bind(this));
|
|
54
|
+
|
|
39
55
|
await this._oxygen.init(options, caps);
|
|
40
56
|
this._testHooks = oxutil.loadTestHooks(options);
|
|
57
|
+
|
|
41
58
|
this._logger.debug('Oxygen initialization completed');
|
|
42
59
|
} catch (e) {
|
|
43
60
|
this._logger.debug(`Oxygen initialization failed: ${e.toString()}`);
|
|
61
|
+
|
|
44
62
|
throw e;
|
|
45
63
|
}
|
|
46
64
|
}
|
|
47
65
|
}
|
|
66
|
+
|
|
48
67
|
async run({
|
|
49
68
|
scriptPath,
|
|
50
69
|
context,
|
|
@@ -53,23 +72,33 @@ class OxygenWorker extends EventEmitter {
|
|
|
53
72
|
if (!this._oxygen) {
|
|
54
73
|
throw Error('Oxygen is not initialized');
|
|
55
74
|
}
|
|
75
|
+
|
|
56
76
|
this._oxygen.context = context;
|
|
77
|
+
|
|
57
78
|
this._oxygen.loadPageObjectFile(poFile);
|
|
79
|
+
|
|
58
80
|
this._steps = [];
|
|
81
|
+
|
|
59
82
|
if (this._cwd && !path.isAbsolute(scriptPath)) {
|
|
60
83
|
scriptPath = path.resolve(this._cwd, scriptPath);
|
|
61
84
|
}
|
|
85
|
+
|
|
62
86
|
let error = null;
|
|
63
87
|
let cwd = fs.realpathSync(this._cwd);
|
|
88
|
+
|
|
64
89
|
try {
|
|
65
90
|
this._oxygen && this._oxygen.onBeforeCase && (await this._oxygen.onBeforeCase(context));
|
|
66
91
|
await this._runFnInFiberContext(() => {
|
|
67
92
|
try {
|
|
68
93
|
require.cache[require.resolve(scriptPath)] && delete require.cache[require.resolve(scriptPath)];
|
|
94
|
+
|
|
69
95
|
const Module = require('module');
|
|
96
|
+
|
|
70
97
|
const originalRequire = Module.prototype.require;
|
|
98
|
+
|
|
71
99
|
Module.prototype.require = function () {
|
|
72
100
|
const script = arguments['0'];
|
|
101
|
+
|
|
73
102
|
if (script && script.startsWith('.')) {
|
|
74
103
|
for (const key in require.cache) {
|
|
75
104
|
if (key.startsWith && key.startsWith(cwd)) {
|
|
@@ -79,8 +108,10 @@ class OxygenWorker extends EventEmitter {
|
|
|
79
108
|
}
|
|
80
109
|
}
|
|
81
110
|
}
|
|
111
|
+
|
|
82
112
|
return originalRequire.apply(this, arguments);
|
|
83
113
|
};
|
|
114
|
+
|
|
84
115
|
require(scriptPath);
|
|
85
116
|
} catch (e) {
|
|
86
117
|
if (e && e.type && e.type === errorHelper.errorCode.ASSERT_PASSED) {} else {
|
|
@@ -91,29 +122,38 @@ class OxygenWorker extends EventEmitter {
|
|
|
91
122
|
} catch (e) {
|
|
92
123
|
error = e;
|
|
93
124
|
}
|
|
125
|
+
|
|
94
126
|
await this._oxygen._waitStepResult();
|
|
127
|
+
|
|
95
128
|
if (error) {
|
|
96
129
|
error = errorHelper.getFailureFromError(error);
|
|
97
130
|
}
|
|
131
|
+
|
|
98
132
|
let moduleCaps = {};
|
|
133
|
+
|
|
99
134
|
if (this._oxygen && this._oxygen.getModulesCapabilities) {
|
|
100
135
|
moduleCaps = this._oxygen.getModulesCapabilities();
|
|
101
136
|
}
|
|
137
|
+
|
|
102
138
|
this._oxygen && this._oxygen.onAfterCase && (await this._oxygen.onAfterCase(error));
|
|
103
139
|
let resultStore = {};
|
|
140
|
+
|
|
104
141
|
if (this._oxygen && this._oxygen.results) {
|
|
105
|
-
resultStore = {
|
|
106
|
-
...this._oxygen.results
|
|
142
|
+
resultStore = { ...this._oxygen.results
|
|
107
143
|
};
|
|
108
144
|
}
|
|
145
|
+
|
|
109
146
|
if (this._oxygen && this._oxygen.resetResults) {
|
|
110
147
|
this._oxygen.resetResults();
|
|
111
148
|
}
|
|
149
|
+
|
|
112
150
|
this._steps = null;
|
|
113
151
|
let oxContext = {};
|
|
152
|
+
|
|
114
153
|
if (this._oxygen && this._oxygen.context) {
|
|
115
154
|
oxContext = this._oxygen.context;
|
|
116
155
|
}
|
|
156
|
+
|
|
117
157
|
oxContext.vars = global.vars;
|
|
118
158
|
return {
|
|
119
159
|
error,
|
|
@@ -122,6 +162,7 @@ class OxygenWorker extends EventEmitter {
|
|
|
122
162
|
context: oxContext
|
|
123
163
|
};
|
|
124
164
|
}
|
|
165
|
+
|
|
125
166
|
async dispose(status = null) {
|
|
126
167
|
if (this._oxygen) {
|
|
127
168
|
try {
|
|
@@ -133,6 +174,7 @@ class OxygenWorker extends EventEmitter {
|
|
|
133
174
|
}
|
|
134
175
|
}
|
|
135
176
|
}
|
|
177
|
+
|
|
136
178
|
async disposeModules(status = null) {
|
|
137
179
|
if (this._oxygen) {
|
|
138
180
|
try {
|
|
@@ -144,12 +186,15 @@ class OxygenWorker extends EventEmitter {
|
|
|
144
186
|
}
|
|
145
187
|
}
|
|
146
188
|
}
|
|
189
|
+
|
|
147
190
|
async callTestHook(hookName, hookArgs) {
|
|
148
191
|
if (!this._testHooks || !this._testHooks[hookName] || typeof this._testHooks[hookName] !== 'function') {
|
|
149
192
|
throw new Error(`Hook does not exist: ${hookName}`);
|
|
150
193
|
}
|
|
194
|
+
|
|
151
195
|
await oxutil.executeTestHook(this._testHooks, hookName, hookArgs);
|
|
152
196
|
}
|
|
197
|
+
|
|
153
198
|
async _runFnInFiberContext(fn) {
|
|
154
199
|
return new Promise((resolve, reject) => Fiber(() => {
|
|
155
200
|
try {
|
|
@@ -160,18 +205,22 @@ class OxygenWorker extends EventEmitter {
|
|
|
160
205
|
}
|
|
161
206
|
}).run());
|
|
162
207
|
}
|
|
208
|
+
|
|
163
209
|
async replStart() {
|
|
164
210
|
let commandResolve = () => {};
|
|
211
|
+
|
|
165
212
|
setTimeout(async () => {
|
|
166
213
|
if (this._oxygen && this._oxygen.modules) {
|
|
167
214
|
const keys = Object.keys(this._oxygen.modules);
|
|
168
215
|
let debug;
|
|
169
216
|
keys.map(item => {
|
|
170
217
|
const driver = this._oxygen.modules[item]['getDriver'] && this._oxygen.modules[item]['getDriver']();
|
|
218
|
+
|
|
171
219
|
if (driver) {
|
|
172
220
|
debug = this._oxygen.modules[item]['debug'];
|
|
173
221
|
}
|
|
174
222
|
});
|
|
223
|
+
|
|
175
224
|
if (debug) {
|
|
176
225
|
await debug();
|
|
177
226
|
commandResolve();
|
|
@@ -184,29 +233,37 @@ class OxygenWorker extends EventEmitter {
|
|
|
184
233
|
}, 10);
|
|
185
234
|
return new Promise(resolve => commandResolve = resolve);
|
|
186
235
|
}
|
|
236
|
+
|
|
187
237
|
_handleBeforeCommand(e) {
|
|
188
238
|
if (!e) {
|
|
189
239
|
return;
|
|
190
240
|
}
|
|
241
|
+
|
|
191
242
|
this.emit('command:before', e);
|
|
192
243
|
}
|
|
244
|
+
|
|
193
245
|
_handleAfterCommand(e) {
|
|
194
246
|
if (!e || !e.result) {
|
|
195
247
|
return;
|
|
196
248
|
}
|
|
249
|
+
|
|
197
250
|
this._steps && this._steps.push(e.result);
|
|
198
251
|
this.emit('command:after', e);
|
|
199
252
|
}
|
|
253
|
+
|
|
200
254
|
_handleLogEntry(e) {
|
|
201
255
|
if (!e || !e.level || !e.message) {
|
|
202
256
|
return;
|
|
203
257
|
}
|
|
258
|
+
|
|
204
259
|
if (e && e.level && e.level === 'error') {
|
|
205
260
|
this._logger[e.level](e.message, e.src, e.err);
|
|
206
261
|
} else {
|
|
207
262
|
this._logger[e.level](e.message, e.src);
|
|
208
263
|
}
|
|
209
264
|
}
|
|
265
|
+
|
|
210
266
|
}
|
|
267
|
+
|
|
211
268
|
exports.default = OxygenWorker;
|
|
212
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGaWJlciIsInJlcXVpcmUiLCJwYXRoIiwiZnMiLCJFdmVudEVtaXR0ZXIiLCJPeHlnZW4iLCJkZWZhdWx0Iiwib3h1dGlsIiwiZXJyb3JIZWxwZXIiLCJtb2R1bGUiLCJnbG9iYWwiLCJicm93c2VyIiwiT3h5Z2VuV29ya2VyIiwiY29uc3RydWN0b3IiLCJyZXBvcnRlciIsImxvZ2dlciIsIl9veHlnZW4iLCJfb3B0cyIsIl9sb2dnZXIiLCJfdGVzdEhvb2tzIiwiX3JlcG9ydGVyIiwiX3J1bklkIiwiaW5pdCIsInJ1bklkIiwib3B0aW9ucyIsImNhcHMiLCJfY3dkIiwiY3dkIiwicHJvY2VzcyIsIm9uIiwiX2hhbmRsZUJlZm9yZUNvbW1hbmQiLCJiaW5kIiwiX2hhbmRsZUFmdGVyQ29tbWFuZCIsIl9oYW5kbGVMb2dFbnRyeSIsImxvYWRUZXN0SG9va3MiLCJkZWJ1ZyIsImUiLCJ0b1N0cmluZyIsInJ1biIsInNjcmlwdFBhdGgiLCJjb250ZXh0IiwicG9GaWxlIiwiRXJyb3IiLCJsb2FkUGFnZU9iamVjdEZpbGUiLCJfc3RlcHMiLCJpc0Fic29sdXRlIiwicmVzb2x2ZSIsImVycm9yIiwicmVhbHBhdGhTeW5jIiwib25CZWZvcmVDYXNlIiwiX3J1bkZuSW5GaWJlckNvbnRleHQiLCJjYWNoZSIsIk1vZHVsZSIsIm9yaWdpbmFsUmVxdWlyZSIsInByb3RvdHlwZSIsInNjcmlwdCIsImFyZ3VtZW50cyIsInN0YXJ0c1dpdGgiLCJrZXkiLCJleGkiLCJhcHBseSIsInR5cGUiLCJlcnJvckNvZGUiLCJBU1NFUlRfUEFTU0VEIiwiX3dhaXRTdGVwUmVzdWx0IiwiZ2V0RmFpbHVyZUZyb21FcnJvciIsIm1vZHVsZUNhcHMiLCJnZXRNb2R1bGVzQ2FwYWJpbGl0aWVzIiwib25BZnRlckNhc2UiLCJyZXN1bHRTdG9yZSIsInJlc3VsdHMiLCJyZXNldFJlc3VsdHMiLCJveENvbnRleHQiLCJ2YXJzIiwiZGlzcG9zZSIsInN0YXR1cyIsImRpc3Bvc2VNb2R1bGVzIiwiY2FsbFRlc3RIb29rIiwiaG9va05hbWUiLCJob29rQXJncyIsImV4ZWN1dGVUZXN0SG9vayIsImZuIiwiUHJvbWlzZSIsInJlamVjdCIsInJlc3VsdCIsImVyciIsInJlcGxTdGFydCIsImNvbW1hbmRSZXNvbHZlIiwic2V0VGltZW91dCIsIm1vZHVsZXMiLCJrZXlzIiwiT2JqZWN0IiwibWFwIiwiaXRlbSIsImRyaXZlciIsImVtaXQiLCJwdXNoIiwibGV2ZWwiLCJtZXNzYWdlIiwic3JjIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3J1bm5lcnMvb3h5Z2VuL094eWdlbldvcmtlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTktcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKlxyXG4gKiBCYXNlZCBvbjpcclxuICogQ29weXJpZ2h0IChjKSBPcGVuSlMgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzLiBMaWNlbnNlZCB1bmRlciBNSVQuXHJcbiAqL1xyXG5cclxuY29uc3QgRmliZXIgPSByZXF1aXJlKCdmaWJlcnMnKTtcclxuY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcclxuY29uc3QgZnMgPSByZXF1aXJlKCdmcycpO1xyXG5jb25zdCB7IEV2ZW50RW1pdHRlciB9ID0gcmVxdWlyZSgnZXZlbnRzJyk7XHJcblxyXG5jb25zdCBPeHlnZW4gPSByZXF1aXJlKCcuLi8uLi9jb3JlL094eWdlbkNvcmUnKS5kZWZhdWx0O1xyXG5jb25zdCBveHV0aWwgPSByZXF1aXJlKCcuLi8uLi9saWIvdXRpbCcpO1xyXG5jb25zdCBlcnJvckhlbHBlciA9IHJlcXVpcmUoJy4uLy4uL2Vycm9ycy9oZWxwZXInKTtcclxuXHJcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1nbG9iYWwtYXNzaWduXHJcbnJlcXVpcmUgPSByZXF1aXJlKCdlc20nKShtb2R1bGUpO1xyXG5cclxuLy8gbW9ja3VwIGdsb2JiYWwuYnJvd3NlciBvYmplY3QgZm9yIGludGVybmFsIFdESU8gZnVuY3Rpb25zIHRvIHdvcmsgcHJvcGVybHlcclxuZ2xvYmFsLmJyb3dzZXIgPSB7fTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE94eWdlbldvcmtlciBleHRlbmRzIEV2ZW50RW1pdHRlciB7XHJcbiAgICBjb25zdHJ1Y3RvciAocmVwb3J0ZXIsIGxvZ2dlcikge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy5fb3h5Z2VuID0gbnVsbDtcclxuICAgICAgICB0aGlzLl9vcHRzID0gbnVsbDtcclxuICAgICAgICB0aGlzLl9sb2dnZXIgPSBsb2dnZXI7XHJcbiAgICAgICAgdGhpcy5fdGVzdEhvb2tzID0ge307XHJcbiAgICAgICAgdGhpcy5fcmVwb3J0ZXIgPSByZXBvcnRlcjtcclxuICAgICAgICB0aGlzLl9ydW5JZCA9IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgaW5pdChydW5JZCwgb3B0aW9ucywgY2Fwcykge1xyXG4gICAgICAgIHRoaXMuX3J1bklkID0gcnVuSWQ7XHJcbiAgICAgICAgdGhpcy5fb3B0cyA9IG9wdGlvbnM7XHJcbiAgICAgICAgdGhpcy5fY3dkID0gdGhpcy5fb3B0cy5jd2QgfHwgcHJvY2Vzcy5jd2QoKTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLl9veHlnZW4pIHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX294eWdlbiA9IG5ldyBPeHlnZW4oKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX294eWdlbi5vbignY29tbWFuZDpiZWZvcmUnLCB0aGlzLl9oYW5kbGVCZWZvcmVDb21tYW5kLmJpbmQodGhpcykpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fb3h5Z2VuLm9uKCdjb21tYW5kOmFmdGVyJywgdGhpcy5faGFuZGxlQWZ0ZXJDb21tYW5kLmJpbmQodGhpcykpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fb3h5Z2VuLm9uKCdsb2cnLCB0aGlzLl9oYW5kbGVMb2dFbnRyeS5iaW5kKHRoaXMpKTtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuX294eWdlbi5pbml0KG9wdGlvbnMsIGNhcHMpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fdGVzdEhvb2tzID0gb3h1dGlsLmxvYWRUZXN0SG9va3Mob3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICAvL21ha2VNb2R1bGVzR2xvYmFsKG9wdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdPeHlnZW4gaW5pdGlhbGl6YXRpb24gY29tcGxldGVkJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZyhgT3h5Z2VuIGluaXRpYWxpemF0aW9uIGZhaWxlZDogJHtlLnRvU3RyaW5nKCl9YCk7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHJ1bih7IHNjcmlwdFBhdGgsIGNvbnRleHQsIHBvRmlsZSA9IG51bGwgfSkge1xyXG4gICAgICAgIC8vIGFzc2lnbiB1cCB0byBkYXRlIGNvbnRleHQgdG8gT3h5Z2VuIENvcmUgdG8gcmVmbGVjdCBuZXcgcGFyYW1ldGVycyBhbmQgb3RoZXIgY29udGV4dCBkYXRhXHJcbiAgICAgICAgaWYgKCF0aGlzLl9veHlnZW4pIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IgKCdPeHlnZW4gaXMgbm90IGluaXRpYWxpemVkJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX294eWdlbi5jb250ZXh0ID0gY29udGV4dDtcclxuICAgICAgICB0aGlzLl9veHlnZW4ubG9hZFBhZ2VPYmplY3RGaWxlKHBvRmlsZSk7XHJcbiAgICAgICAgdGhpcy5fc3RlcHMgPSBbXTtcclxuICAgICAgICBpZiAodGhpcy5fY3dkICYmICFwYXRoLmlzQWJzb2x1dGUoc2NyaXB0UGF0aCkpIHtcclxuICAgICAgICAgICAgc2NyaXB0UGF0aCA9IHBhdGgucmVzb2x2ZSh0aGlzLl9jd2QsIHNjcmlwdFBhdGgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgZXJyb3IgPSBudWxsO1xyXG5cclxuICAgICAgICAvLyBvbiBPU1ggY3dkIHdpbGwgYmUgYSBzeW1saW5rOiBcIi92YXIvZm9sZGVycy8uLlwiIGluc3RlYWQgb2YgXCIvcHJpdmF0ZS92YXIvZm9sZGVycy8uLlwiICh0aGlzIGNvdWxkIGFsc28gaGFwcGVuIG9uIG90aGVyIHBsYXRmb3JtcyB0b28pXHJcbiAgICAgICAgLy8gc28gd2UgbmVlZCB0byByZXNvbHZlIGl0IHRvIHJlYWwgcGF0aFxyXG4gICAgICAgIGxldCBjd2QgPSBmcy5yZWFscGF0aFN5bmModGhpcy5fY3dkKTtcclxuXHJcbiAgICAgICAgLy8gbG9hZCBhbmQgcnVuIHRoZSB0ZXN0IHNjcmlwdFxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHRoaXMuX294eWdlbiAmJiB0aGlzLl9veHlnZW4ub25CZWZvcmVDYXNlICYmIGF3YWl0IHRoaXMuX294eWdlbi5vbkJlZm9yZUNhc2UoY29udGV4dCk7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX3J1bkZuSW5GaWJlckNvbnRleHQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgdG8gY2xlYXIgcmVxdWlyZSBjYWNoZSBzbyB0aGUgc2NyaXB0IHdpbGwgYmUgZXhlY3V0ZWQgb24gZWFjaCBpdGVyYXRpb25cclxuICAgICAgICAgICAgICAgICAgICByZXF1aXJlLmNhY2hlW3JlcXVpcmUucmVzb2x2ZShzY3JpcHRQYXRoKV0gJiYgZGVsZXRlIHJlcXVpcmUuY2FjaGVbcmVxdWlyZS5yZXNvbHZlKHNjcmlwdFBhdGgpXTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgdXNlciB1c2VzIHJlcXVpcmUoJy4vc29tZXNjcmlwdC5qcycpIGluIG11bHRpcGxlIHRlc3Qgc2NyaXB0cyAoY2FzZXMpLCBhbmQgc29tZXNjcmlwdC5qcyBjb250YWlucyB3ZWIvbW9iLmluaXRcclxuICAgICAgICAgICAgICAgICAgICAvLyB0aGVuLCB3aGVuIHRob3NlIHNjcmlwdHMgYXJlIGV4ZWN1dGVkIGluIGEgc3VpdGUsIG9ubHkgZmlyc3QgY2FzZSB3aWxsIHBhc3MsIHRoZSByZXN0IHdpbGwgZmFpbCB3aXRoIE1PRFVMRV9OT1RfSU5JVElBTElaRUQgZXJyb3IuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBpcyBiZWNhdXNlICdyZXF1aXJlJyBpcyBjYWNoZWQsIGFuZCB3aGVuIHRoZSBmaXJzdCBjYXNlIGlzIGZpbmlzaGVkLCB0aGUgbW9kdWxlIGlzIG1hcmtlZCBhcyBpc0luaXRpYWxpemVkID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAvLyBhbmQgbm90IHJlLWluaXRpYWxpemVkIGJhY2sgb24gbmV4dCBjYXNlLlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRodXMgd2UgY2xlYW4gdXNlciBsZXZlbCBzY3JpcHRzIGZyb20gJ3JlcXVpcmUnIGNhY2hlLlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiB3ZWIuaW5pdCBhbmQgb3RoZXIgbW9kdWxlcyBzaG91bGQgYmUgcHJvYmFibHkgZml4ZWQgKHByb3Blcmx5IGRpc3Bvc2VkKVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IHRoaXMgb2J2aW91c2x5IHJlbGF0ZXMgbm90IG9ubHkgdG8gd2ViLCBldGMgbW9kdWxlLiB0aGlzIGlzIGEgZ2VuZXJhbCBpc3N1ZS5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBvcmlnaW5hbFJlcXVpcmUgPSBNb2R1bGUucHJvdG90eXBlLnJlcXVpcmU7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIE1vZHVsZS5wcm90b3R5cGUucmVxdWlyZSA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzY3JpcHQgPSBhcmd1bWVudHNbJzAnXTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludmFsaWRhdGUgY2FjaGUgb25seSB3aGVuIHdlIHRyeSB0byBsb2FkIHVzZXItbGV2ZWwgc2NyaXB0cyAodGhvc2Ugc3RhcnRpbmcgd2l0aCAnLi8nIG9yICcuLi8nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NyaXB0ICYmIHNjcmlwdC5zdGFydHNXaXRoKCcuJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbW92ZSBldmVyeXRoaW5nIHVzZXIgcmVsYXRlZCBmcm9tIHRoZSBjYWNoZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcmVxdWlyZS5jYWNoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXkuc3RhcnRzV2l0aCAmJiBrZXkuc3RhcnRzV2l0aChjd2QpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgcmVxdWlyZS5jYWNoZVtrZXldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChleGkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlnbm9yZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsUmVxdWlyZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZShzY3JpcHRQYXRoKTtcclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBlcnJvciA9IGUuY29kZSAmJiBlLmNvZGUgPT09ICdNT0RVTEVfTk9UX0ZPVU5EJyA/IG5ldyBTY3JpcHROb3RGb3VuZEVycm9yKHNjcmlwdFBhdGgpIDogZTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGUgJiYgZS50eXBlICYmIGUudHlwZSA9PT0gZXJyb3JIZWxwZXIuZXJyb3JDb2RlLkFTU0VSVF9QQVNTRUQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9pZ25vcmVcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvciA9IGU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGVycm9yID0gZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIEluIHNvbWUgY2FzZXMgc3RlcCByZXN1bHQgZ2VuZXJhdGlvbiB0YWtlcyBzb21lIHRpbWUgdG8gbWFrZSBzY3JlZW5zaG90XHJcbiAgICAgICAgYXdhaXQgdGhpcy5fb3h5Z2VuLl93YWl0U3RlcFJlc3VsdCgpO1xyXG5cclxuICAgICAgICBpZiAoZXJyb3IpIHtcclxuICAgICAgICAgICAgZXJyb3IgPSBlcnJvckhlbHBlci5nZXRGYWlsdXJlRnJvbUVycm9yKGVycm9yKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBtb2R1bGVDYXBzID0ge307XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9veHlnZW4gJiYgdGhpcy5fb3h5Z2VuLmdldE1vZHVsZXNDYXBhYmlsaXRpZXMpIHtcclxuICAgICAgICAgICAgbW9kdWxlQ2FwcyA9IHRoaXMuX294eWdlbi5nZXRNb2R1bGVzQ2FwYWJpbGl0aWVzKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9veHlnZW4gJiYgdGhpcy5fb3h5Z2VuLm9uQWZ0ZXJDYXNlICYmIGF3YWl0IHRoaXMuX294eWdlbi5vbkFmdGVyQ2FzZShlcnJvcik7XHJcblxyXG4gICAgICAgIC8vIGNsb25lIHRoZSByZXN1bHRzLCBvdGhlcndpc2UgcmVzdWx0U3RvcmUgd2lsbCBiZSBlbXB0eSBhZnRlciB0aGUgZm9sbG93aW5nIHRoaXMuX294eWdlbi5yZXNldFJlc3VsdHMoKSBjYWxsXHJcblxyXG4gICAgICAgIGxldCByZXN1bHRTdG9yZSA9IHt9O1xyXG5cclxuICAgICAgICBpZiAodGhpcy5fb3h5Z2VuICYmIHRoaXMuX294eWdlbi5yZXN1bHRzKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdFN0b3JlID0geyAuLi50aGlzLl9veHlnZW4ucmVzdWx0cyB9O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX294eWdlbiAmJiB0aGlzLl9veHlnZW4ucmVzZXRSZXN1bHRzKSB7XHJcbiAgICAgICAgICAgIC8vIHJlc2V0IHN0ZXBzIGFuZCBvdGhlciByZXN1bHQgZGF0YVxyXG4gICAgICAgICAgICB0aGlzLl9veHlnZW4ucmVzZXRSZXN1bHRzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX3N0ZXBzID0gbnVsbDtcclxuXHJcbiAgICAgICAgbGV0IG94Q29udGV4dCA9IHt9O1xyXG4gICAgICAgIGlmICh0aGlzLl9veHlnZW4gJiYgdGhpcy5fb3h5Z2VuLmNvbnRleHQpIHtcclxuICAgICAgICAgICAgb3hDb250ZXh0ID0gdGhpcy5fb3h5Z2VuLmNvbnRleHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG94Q29udGV4dC52YXJzID0gZ2xvYmFsLnZhcnM7XHJcblxyXG4gICAgICAgIHJldHVybiB7IGVycm9yLCBtb2R1bGVDYXBzLCByZXN1bHRTdG9yZSwgY29udGV4dDogb3hDb250ZXh0IH07XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZGlzcG9zZShzdGF0dXMgPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX294eWdlbikge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fb3h5Z2VuLmRpc3Bvc2Uoc3RhdHVzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gZGlzcG9zZSBPeHlnZW4nLCBudWxsLCBlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmaW5hbGx5IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3N0ZXBzID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBkaXNwb3NlTW9kdWxlcyhzdGF0dXMgPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX294eWdlbikge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fb3h5Z2VuLmRpc3Bvc2VNb2R1bGVzKHN0YXR1cyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIGRpc3Bvc2UgT3h5Z2VuIG1vZHVsZXMnLCBudWxsLCBlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmaW5hbGx5IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX294eWdlbi5yZXNldFJlc3VsdHMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBjYWxsVGVzdEhvb2soaG9va05hbWUsIGhvb2tBcmdzKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl90ZXN0SG9va3MgfHwgIXRoaXMuX3Rlc3RIb29rc1tob29rTmFtZV0gfHwgdHlwZW9mIHRoaXMuX3Rlc3RIb29rc1tob29rTmFtZV0gIT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBIb29rIGRvZXMgbm90IGV4aXN0OiAke2hvb2tOYW1lfWApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhd2FpdCBveHV0aWwuZXhlY3V0ZVRlc3RIb29rKHRoaXMuX3Rlc3RIb29rcywgaG9va05hbWUsIGhvb2tBcmdzKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBfcnVuRm5JbkZpYmVyQ29udGV4dCAoZm4pIHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gRmliZXIoKCkgPT4ge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gZm4uYXBwbHkodGhpcyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShyZXN1bHQpO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pLnJ1bigpKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyByZXBsU3RhcnQoKSB7XHJcbiAgICAgICAgbGV0IGNvbW1hbmRSZXNvbHZlID0gKCkgPT4geyB9O1xyXG5cclxuICAgICAgICBzZXRUaW1lb3V0KGFzeW5jKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fb3h5Z2VuICYmIHRoaXMuX294eWdlbi5tb2R1bGVzKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModGhpcy5fb3h5Z2VuLm1vZHVsZXMpO1xyXG4gICAgICAgICAgICAgICAgbGV0IGRlYnVnO1xyXG4gICAgICAgICAgICAgICAga2V5cy5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkcml2ZXIgPSB0aGlzLl9veHlnZW4ubW9kdWxlc1tpdGVtXVsnZ2V0RHJpdmVyJ10gJiYgdGhpcy5fb3h5Z2VuLm1vZHVsZXNbaXRlbV1bJ2dldERyaXZlciddKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRyaXZlcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyA9IHRoaXMuX294eWdlbi5tb2R1bGVzW2l0ZW1dWydkZWJ1ZyddO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChkZWJ1Zykge1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGRlYnVnKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29tbWFuZFJlc29sdmUoKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29tbWFuZFJlc29sdmUoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbW1hbmRSZXNvbHZlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LCAxMCk7XHJcblxyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gKGNvbW1hbmRSZXNvbHZlID0gcmVzb2x2ZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIF9oYW5kbGVCZWZvcmVDb21tYW5kKGUpIHtcclxuICAgICAgICBpZiAoIWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmVtaXQoJ2NvbW1hbmQ6YmVmb3JlJywgZSk7XHJcbiAgICB9XHJcblxyXG4gICAgX2hhbmRsZUFmdGVyQ29tbWFuZChlKSB7XHJcbiAgICAgICAgaWYgKCFlIHx8ICFlLnJlc3VsdCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9zdGVwcyAmJiB0aGlzLl9zdGVwcy5wdXNoKGUucmVzdWx0KTtcclxuICAgICAgICB0aGlzLmVtaXQoJ2NvbW1hbmQ6YWZ0ZXInLCBlKTtcclxuICAgIH1cclxuXHJcbiAgICBfaGFuZGxlTG9nRW50cnkoZSkge1xyXG4gICAgICAgIGlmICghZSB8fCAhZS5sZXZlbCB8fCAhZS5tZXNzYWdlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGUgJiYgZS5sZXZlbCAmJiBlLmxldmVsID09PSAnZXJyb3InKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlcltlLmxldmVsXShlLm1lc3NhZ2UsIGUuc3JjLCBlLmVycik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyW2UubGV2ZWxdKGUubWVzc2FnZSwgZS5zcmMpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4i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
|
|
269
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ydW5uZXJzL294eWdlbi9PeHlnZW5Xb3JrZXIuanMiXSwibmFtZXMiOlsiRmliZXIiLCJyZXF1aXJlIiwicGF0aCIsImZzIiwiRXZlbnRFbWl0dGVyIiwiT3h5Z2VuIiwiZGVmYXVsdCIsIm94dXRpbCIsImVycm9ySGVscGVyIiwibW9kdWxlIiwiZ2xvYmFsIiwiYnJvd3NlciIsIk94eWdlbldvcmtlciIsImNvbnN0cnVjdG9yIiwicmVwb3J0ZXIiLCJsb2dnZXIiLCJfb3h5Z2VuIiwiX29wdHMiLCJfbG9nZ2VyIiwiX3Rlc3RIb29rcyIsIl9yZXBvcnRlciIsIl9ydW5JZCIsImluaXQiLCJydW5JZCIsIm9wdGlvbnMiLCJjYXBzIiwiX2N3ZCIsImN3ZCIsInByb2Nlc3MiLCJvbiIsIl9oYW5kbGVCZWZvcmVDb21tYW5kIiwiYmluZCIsIl9oYW5kbGVBZnRlckNvbW1hbmQiLCJfaGFuZGxlTG9nRW50cnkiLCJsb2FkVGVzdEhvb2tzIiwiZGVidWciLCJlIiwidG9TdHJpbmciLCJydW4iLCJzY3JpcHRQYXRoIiwiY29udGV4dCIsInBvRmlsZSIsIkVycm9yIiwibG9hZFBhZ2VPYmplY3RGaWxlIiwiX3N0ZXBzIiwiaXNBYnNvbHV0ZSIsInJlc29sdmUiLCJlcnJvciIsInJlYWxwYXRoU3luYyIsIm9uQmVmb3JlQ2FzZSIsIl9ydW5GbkluRmliZXJDb250ZXh0IiwiY2FjaGUiLCJNb2R1bGUiLCJvcmlnaW5hbFJlcXVpcmUiLCJwcm90b3R5cGUiLCJzY3JpcHQiLCJhcmd1bWVudHMiLCJzdGFydHNXaXRoIiwia2V5IiwiZXhpIiwiYXBwbHkiLCJ0eXBlIiwiZXJyb3JDb2RlIiwiQVNTRVJUX1BBU1NFRCIsIl93YWl0U3RlcFJlc3VsdCIsImdldEZhaWx1cmVGcm9tRXJyb3IiLCJtb2R1bGVDYXBzIiwiZ2V0TW9kdWxlc0NhcGFiaWxpdGllcyIsIm9uQWZ0ZXJDYXNlIiwicmVzdWx0U3RvcmUiLCJyZXN1bHRzIiwicmVzZXRSZXN1bHRzIiwib3hDb250ZXh0IiwidmFycyIsImRpc3Bvc2UiLCJzdGF0dXMiLCJkaXNwb3NlTW9kdWxlcyIsImNhbGxUZXN0SG9vayIsImhvb2tOYW1lIiwiaG9va0FyZ3MiLCJleGVjdXRlVGVzdEhvb2siLCJmbiIsIlByb21pc2UiLCJyZWplY3QiLCJyZXN1bHQiLCJlcnIiLCJyZXBsU3RhcnQiLCJjb21tYW5kUmVzb2x2ZSIsInNldFRpbWVvdXQiLCJtb2R1bGVzIiwia2V5cyIsIk9iamVjdCIsIm1hcCIsIml0ZW0iLCJkcml2ZXIiLCJlbWl0IiwicHVzaCIsImxldmVsIiwibWVzc2FnZSIsInNyYyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBWUEsTUFBTUEsS0FBSyxHQUFHQyxPQUFPLENBQUMsUUFBRCxDQUFyQjs7QUFDQSxNQUFNQyxJQUFJLEdBQUdELE9BQU8sQ0FBQyxNQUFELENBQXBCOztBQUNBLE1BQU1FLEVBQUUsR0FBR0YsT0FBTyxDQUFDLElBQUQsQ0FBbEI7O0FBQ0EsTUFBTTtBQUFFRyxFQUFBQTtBQUFGLElBQW1CSCxPQUFPLENBQUMsUUFBRCxDQUFoQzs7QUFFQSxNQUFNSSxNQUFNLEdBQUdKLE9BQU8sQ0FBQyx1QkFBRCxDQUFQLENBQWlDSyxPQUFoRDs7QUFDQSxNQUFNQyxNQUFNLEdBQUdOLE9BQU8sQ0FBQyxnQkFBRCxDQUF0Qjs7QUFDQSxNQUFNTyxXQUFXLEdBQUdQLE9BQU8sQ0FBQyxxQkFBRCxDQUEzQjs7QUFHQUEsT0FBTyxHQUFHQSxPQUFPLENBQUMsS0FBRCxDQUFQLENBQWVRLE1BQWYsQ0FBVjtBQUdBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUIsRUFBakI7O0FBRWUsTUFBTUMsWUFBTixTQUEyQlIsWUFBM0IsQ0FBd0M7QUFDbkRTLEVBQUFBLFdBQVcsQ0FBRUMsUUFBRixFQUFZQyxNQUFaLEVBQW9CO0FBQzNCO0FBQ0EsU0FBS0MsT0FBTCxHQUFlLElBQWY7QUFDQSxTQUFLQyxLQUFMLEdBQWEsSUFBYjtBQUNBLFNBQUtDLE9BQUwsR0FBZUgsTUFBZjtBQUNBLFNBQUtJ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bkUsT0FBTCxDQUFha0IsQ0FBQyxDQUFDNkQsS0FBZixFQUFzQjdELENBQUMsQ0FBQzhELE9BQXhCLEVBQWlDOUQsQ0FBQyxDQUFDK0QsR0FBbkM7QUFDSDtBQUNKOztBQWhQa0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTktcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKlxyXG4gKiBCYXNlZCBvbjpcclxuICogQ29weXJpZ2h0IChjKSBPcGVuSlMgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzLiBMaWNlbnNlZCB1bmRlciBNSVQuXHJcbiAqL1xyXG5cclxuY29uc3QgRmliZXIgPSByZXF1aXJlKCdmaWJlcnMnKTtcclxuY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcclxuY29uc3QgZnMgPSByZXF1aXJlKCdmcycpO1xyXG5jb25zdCB7IEV2ZW50RW1pdHRlciB9ID0gcmVxdWlyZSgnZXZlbnRzJyk7XHJcblxyXG5jb25zdCBPeHlnZW4gPSByZXF1aXJlKCcuLi8uLi9jb3JlL094eWdlbkNvcmUnKS5kZWZhdWx0O1xyXG5jb25zdCBveHV0aWwgPSByZXF1aXJlKCcuLi8uLi9saWIvdXRpbCcpO1xyXG5jb25zdCBlcnJvckhlbHBlciA9IHJlcXVpcmUoJy4uLy4uL2Vycm9ycy9oZWxwZXInKTtcclxuXHJcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1nbG9iYWwtYXNzaWduXHJcbnJlcXVpcmUgPSByZXF1aXJlKCdlc20nKShtb2R1bGUpO1xyXG5cclxuLy8gbW9ja3VwIGdsb2JiYWwuYnJvd3NlciBvYmplY3QgZm9yIGludGVybmFsIFdESU8gZnVuY3Rpb25zIHRvIHdvcmsgcHJvcGVybHlcclxuZ2xvYmFsLmJyb3dzZXIgPSB7fTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE94eWdlbldvcmtlciBleHRlbmRzIEV2ZW50RW1pdHRlciB7XHJcbiAgICBjb25zdHJ1Y3RvciAocmVwb3J0ZXIsIGxvZ2dlcikge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy5fb3h5Z2VuID0gbnVsbDtcclxuICAgICAgICB0aGlzLl9vcHRzID0gbnVsbDtcclxuICAgICAgICB0aGlzLl9sb2dnZXIgPSBsb2dnZXI7XHJcbiAgICAgICAgdGhpcy5fdGVzdEhvb2tzID0ge307XHJcbiAgICAgICAgdGhpcy5fcmVwb3J0ZXIgPSByZXBvcnRlcjtcclxuICAgICAgICB0aGlzLl9ydW5JZCA9IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgaW5pdChydW5JZCwgb3B0aW9ucywgY2Fwcykge1xyXG4gICAgICAgIHRoaXMuX3J1bklkID0gcnVuSWQ7XHJcbiAgICAgICAgdGhpcy5fb3B0cyA9IG9wdGlvbnM7XHJcbiAgICAgICAgdGhpcy5fY3dkID0gdGhpcy5fb3B0cy5jd2QgfHwgcHJvY2Vzcy5jd2QoKTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLl9veHlnZW4pIHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX294eWdlbiA9IG5ldyBPeHlnZW4oKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX294eWdlbi5vbignY29tbWFuZDpiZWZvcmUnLCB0aGlzLl9oYW5kbGVCZWZvcmVDb21tYW5kLmJpbmQodGhpcykpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fb3h5Z2VuLm9uKCdjb21tYW5kOmFmdGVyJywgdGhpcy5faGFuZGxlQWZ0ZXJDb21tYW5kLmJpbmQodGhpcykpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fb3h5Z2VuLm9uKCdsb2cnLCB0aGlzLl9oYW5kbGVMb2dFbnRyeS5iaW5kKHRoaXMpKTtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuX294eWdlbi5pbml0KG9wdGlvbnMsIGNhcHMpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fdGVzdEhvb2tzID0gb3h1dGlsLmxvYWRUZXN0SG9va3Mob3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICAvL21ha2VNb2R1bGVzR2xvYmFsKG9wdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdPeHlnZW4gaW5pdGlhbGl6YXRpb24gY29tcGxldGVkJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZyhgT3h5Z2VuIGluaXRpYWxpemF0aW9uIGZhaWxlZDogJHtlLnRvU3RyaW5nKCl9YCk7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHJ1bih7IHNjcmlwdFBhdGgsIGNvbnRleHQsIHBvRmlsZSA9IG51bGwgfSkge1xyXG4gICAgICAgIC8vIGFzc2lnbiB1cCB0byBkYXRlIGNvbnRleHQgdG8gT3h5Z2VuIENvcmUgdG8gcmVmbGVjdCBuZXcgcGFyYW1ldGVycyBhbmQgb3RoZXIgY29udGV4dCBkYXRhXHJcbiAgICAgICAgaWYgKCF0aGlzLl9veHlnZW4pIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IgKCdPeHlnZW4gaXMgbm90IGluaXRpYWxpemVkJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX294eWdlbi5jb250ZXh0ID0gY29udGV4dDtcclxuICAgICAgICB0aGlzLl9veHlnZW4ubG9hZFBhZ2VPYmplY3RGaWxlKHBvRmlsZSk7XHJcbiAgICAgICAgdGhpcy5fc3RlcHMgPSBbXTtcclxuICAgICAgICBpZiAodGhpcy5fY3dkICYmICFwYXRoLmlzQWJzb2x1dGUoc2NyaXB0UGF0aCkpIHtcclxuICAgICAgICAgICAgc2NyaXB0UGF0aCA9IHBhdGgucmVzb2x2ZSh0aGlzLl9jd2QsIHNjcmlwdFBhdGgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgZXJyb3IgPSBudWxsO1xyXG5cclxuICAgICAgICAvLyBvbiBPU1ggY3dkIHdpbGwgYmUgYSBzeW1saW5rOiBcIi92YXIvZm9sZGVycy8uLlwiIGluc3RlYWQgb2YgXCIvcHJpdmF0ZS92YXIvZm9sZGVycy8uLlwiICh0aGlzIGNvdWxkIGFsc28gaGFwcGVuIG9uIG90aGVyIHBsYXRmb3JtcyB0b28pXHJcbiAgICAgICAgLy8gc28gd2UgbmVlZCB0byByZXNvbHZlIGl0IHRvIHJlYWwgcGF0aFxyXG4gICAgICAgIGxldCBjd2QgPSBmcy5yZWFscGF0aFN5bmModGhpcy5fY3dkKTtcclxuXHJcbiAgICAgICAgLy8gbG9hZCBhbmQgcnVuIHRoZSB0ZXN0IHNjcmlwdFxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHRoaXMuX294eWdlbiAmJiB0aGlzLl9veHlnZW4ub25CZWZvcmVDYXNlICYmIGF3YWl0IHRoaXMuX294eWdlbi5vbkJlZm9yZUNhc2UoY29udGV4dCk7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX3J1bkZuSW5GaWJlckNvbnRleHQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgdG8gY2xlYXIgcmVxdWlyZSBjYWNoZSBzbyB0aGUgc2NyaXB0IHdpbGwgYmUgZXhlY3V0ZWQgb24gZWFjaCBpdGVyYXRpb25cclxuICAgICAgICAgICAgICAgICAgICByZXF1aXJlLmNhY2hlW3JlcXVpcmUucmVzb2x2ZShzY3JpcHRQYXRoKV0gJiYgZGVsZXRlIHJlcXVpcmUuY2FjaGVbcmVxdWlyZS5yZXNvbHZlKHNjcmlwdFBhdGgpXTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgdXNlciB1c2VzIHJlcXVpcmUoJy4vc29tZXNjcmlwdC5qcycpIGluIG11bHRpcGxlIHRlc3Qgc2NyaXB0cyAoY2FzZXMpLCBhbmQgc29tZXNjcmlwdC5qcyBjb250YWlucyB3ZWIvbW9iLmluaXRcclxuICAgICAgICAgICAgICAgICAgICAvLyB0aGVuLCB3aGVuIHRob3NlIHNjcmlwdHMgYXJlIGV4ZWN1dGVkIGluIGEgc3VpdGUsIG9ubHkgZmlyc3QgY2FzZSB3aWxsIHBhc3MsIHRoZSByZXN0IHdpbGwgZmFpbCB3aXRoIE1PRFVMRV9OT1RfSU5JVElBTElaRUQgZXJyb3IuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBpcyBiZWNhdXNlICdyZXF1aXJlJyBpcyBjYWNoZWQsIGFuZCB3aGVuIHRoZSBmaXJzdCBjYXNlIGlzIGZpbmlzaGVkLCB0aGUgbW9kdWxlIGlzIG1hcmtlZCBhcyBpc0luaXRpYWxpemVkID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAvLyBhbmQgbm90IHJlLWluaXRpYWxpemVkIGJhY2sgb24gbmV4dCBjYXNlLlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRodXMgd2UgY2xlYW4gdXNlciBsZXZlbCBzY3JpcHRzIGZyb20gJ3JlcXVpcmUnIGNhY2hlLlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiB3ZWIuaW5pdCBhbmQgb3RoZXIgbW9kdWxlcyBzaG91bGQgYmUgcHJvYmFibHkgZml4ZWQgKHByb3Blcmx5IGRpc3Bvc2VkKVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IHRoaXMgb2J2aW91c2x5IHJlbGF0ZXMgbm90IG9ubHkgdG8gd2ViLCBldGMgbW9kdWxlLiB0aGlzIGlzIGEgZ2VuZXJhbCBpc3N1ZS5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBvcmlnaW5hbFJlcXVpcmUgPSBNb2R1bGUucHJvdG90eXBlLnJlcXVpcmU7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIE1vZHVsZS5wcm90b3R5cGUucmVxdWlyZSA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzY3JpcHQgPSBhcmd1bWVudHNbJzAnXTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludmFsaWRhdGUgY2FjaGUgb25seSB3aGVuIHdlIHRyeSB0byBsb2FkIHVzZXItbGV2ZWwgc2NyaXB0cyAodGhvc2Ugc3RhcnRpbmcgd2l0aCAnLi8nIG9yICcuLi8nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NyaXB0ICYmIHNjcmlwdC5zdGFydHNXaXRoKCcuJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbW92ZSBldmVyeXRoaW5nIHVzZXIgcmVsYXRlZCBmcm9tIHRoZSBjYWNoZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcmVxdWlyZS5jYWNoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXkuc3RhcnRzV2l0aCAmJiBrZXkuc3RhcnRzV2l0aChjd2QpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgcmVxdWlyZS5jYWNoZVtrZXldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChleGkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlnbm9yZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsUmVxdWlyZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZShzY3JpcHRQYXRoKTtcclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBlcnJvciA9IGUuY29kZSAmJiBlLmNvZGUgPT09ICdNT0RVTEVfTk9UX0ZPVU5EJyA/IG5ldyBTY3JpcHROb3RGb3VuZEVycm9yKHNjcmlwdFBhdGgpIDogZTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGUgJiYgZS50eXBlICYmIGUudHlwZSA9PT0gZXJyb3JIZWxwZXIuZXJyb3JDb2RlLkFTU0VSVF9QQVNTRUQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9pZ25vcmVcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvciA9IGU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGVycm9yID0gZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIEluIHNvbWUgY2FzZXMgc3RlcCByZXN1bHQgZ2VuZXJhdGlvbiB0YWtlcyBzb21lIHRpbWUgdG8gbWFrZSBzY3JlZW5zaG90XHJcbiAgICAgICAgYXdhaXQgdGhpcy5fb3h5Z2VuLl93YWl0U3RlcFJlc3VsdCgpO1xyXG5cclxuICAgICAgICBpZiAoZXJyb3IpIHtcclxuICAgICAgICAgICAgZXJyb3IgPSBlcnJvckhlbHBlci5nZXRGYWlsdXJlRnJvbUVycm9yKGVycm9yKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBtb2R1bGVDYXBzID0ge307XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9veHlnZW4gJiYgdGhpcy5fb3h5Z2VuLmdldE1vZHVsZXNDYXBhYmlsaXRpZXMpIHtcclxuICAgICAgICAgICAgbW9kdWxlQ2FwcyA9IHRoaXMuX294eWdlbi5nZXRNb2R1bGVzQ2FwYWJpbGl0aWVzKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9veHlnZW4gJiYgdGhpcy5fb3h5Z2VuLm9uQWZ0ZXJDYXNlICYmIGF3YWl0IHRoaXMuX294eWdlbi5vbkFmdGVyQ2FzZShlcnJvcik7XHJcblxyXG4gICAgICAgIC8vIGNsb25lIHRoZSByZXN1bHRzLCBvdGhlcndpc2UgcmVzdWx0U3RvcmUgd2lsbCBiZSBlbXB0eSBhZnRlciB0aGUgZm9sbG93aW5nIHRoaXMuX294eWdlbi5yZXNldFJlc3VsdHMoKSBjYWxsXHJcblxyXG4gICAgICAgIGxldCByZXN1bHRTdG9yZSA9IHt9O1xyXG5cclxuICAgICAgICBpZiAodGhpcy5fb3h5Z2VuICYmIHRoaXMuX294eWdlbi5yZXN1bHRzKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdFN0b3JlID0geyAuLi50aGlzLl9veHlnZW4ucmVzdWx0cyB9O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX294eWdlbiAmJiB0aGlzLl9veHlnZW4ucmVzZXRSZXN1bHRzKSB7XHJcbiAgICAgICAgICAgIC8vIHJlc2V0IHN0ZXBzIGFuZCBvdGhlciByZXN1bHQgZGF0YVxyXG4gICAgICAgICAgICB0aGlzLl9veHlnZW4ucmVzZXRSZXN1bHRzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX3N0ZXBzID0gbnVsbDtcclxuXHJcbiAgICAgICAgbGV0IG94Q29udGV4dCA9IHt9O1xyXG4gICAgICAgIGlmICh0aGlzLl9veHlnZW4gJiYgdGhpcy5fb3h5Z2VuLmNvbnRleHQpIHtcclxuICAgICAgICAgICAgb3hDb250ZXh0ID0gdGhpcy5fb3h5Z2VuLmNvbnRleHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG94Q29udGV4dC52YXJzID0gZ2xvYmFsLnZhcnM7XHJcblxyXG4gICAgICAgIHJldHVybiB7IGVycm9yLCBtb2R1bGVDYXBzLCByZXN1bHRTdG9yZSwgY29udGV4dDogb3hDb250ZXh0IH07XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZGlzcG9zZShzdGF0dXMgPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX294eWdlbikge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fb3h5Z2VuLmRpc3Bvc2Uoc3RhdHVzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gZGlzcG9zZSBPeHlnZW4nLCBudWxsLCBlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmaW5hbGx5IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3N0ZXBzID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBkaXNwb3NlTW9kdWxlcyhzdGF0dXMgPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX294eWdlbikge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fb3h5Z2VuLmRpc3Bvc2VNb2R1bGVzKHN0YXR1cyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIGRpc3Bvc2UgT3h5Z2VuIG1vZHVsZXMnLCBudWxsLCBlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmaW5hbGx5IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX294eWdlbi5yZXNldFJlc3VsdHMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBjYWxsVGVzdEhvb2soaG9va05hbWUsIGhvb2tBcmdzKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl90ZXN0SG9va3MgfHwgIXRoaXMuX3Rlc3RIb29rc1tob29rTmFtZV0gfHwgdHlwZW9mIHRoaXMuX3Rlc3RIb29rc1tob29rTmFtZV0gIT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBIb29rIGRvZXMgbm90IGV4aXN0OiAke2hvb2tOYW1lfWApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhd2FpdCBveHV0aWwuZXhlY3V0ZVRlc3RIb29rKHRoaXMuX3Rlc3RIb29rcywgaG9va05hbWUsIGhvb2tBcmdzKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBfcnVuRm5JbkZpYmVyQ29udGV4dCAoZm4pIHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gRmliZXIoKCkgPT4ge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gZm4uYXBwbHkodGhpcyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShyZXN1bHQpO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pLnJ1bigpKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyByZXBsU3RhcnQoKSB7XHJcbiAgICAgICAgbGV0IGNvbW1hbmRSZXNvbHZlID0gKCkgPT4geyB9O1xyXG5cclxuICAgICAgICBzZXRUaW1lb3V0KGFzeW5jKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fb3h5Z2VuICYmIHRoaXMuX294eWdlbi5tb2R1bGVzKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModGhpcy5fb3h5Z2VuLm1vZHVsZXMpO1xyXG4gICAgICAgICAgICAgICAgbGV0IGRlYnVnO1xyXG4gICAgICAgICAgICAgICAga2V5cy5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkcml2ZXIgPSB0aGlzLl9veHlnZW4ubW9kdWxlc1tpdGVtXVsnZ2V0RHJpdmVyJ10gJiYgdGhpcy5fb3h5Z2VuLm1vZHVsZXNbaXRlbV1bJ2dldERyaXZlciddKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRyaXZlcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyA9IHRoaXMuX294eWdlbi5tb2R1bGVzW2l0ZW1dWydkZWJ1ZyddO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChkZWJ1Zykge1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGRlYnVnKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29tbWFuZFJlc29sdmUoKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29tbWFuZFJlc29sdmUoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbW1hbmRSZXNvbHZlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LCAxMCk7XHJcblxyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gKGNvbW1hbmRSZXNvbHZlID0gcmVzb2x2ZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIF9oYW5kbGVCZWZvcmVDb21tYW5kKGUpIHtcclxuICAgICAgICBpZiAoIWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmVtaXQoJ2NvbW1hbmQ6YmVmb3JlJywgZSk7XHJcbiAgICB9XHJcblxyXG4gICAgX2hhbmRsZUFmdGVyQ29tbWFuZChlKSB7XHJcbiAgICAgICAgaWYgKCFlIHx8ICFlLnJlc3VsdCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9zdGVwcyAmJiB0aGlzLl9zdGVwcy5wdXNoKGUucmVzdWx0KTtcclxuICAgICAgICB0aGlzLmVtaXQoJ2NvbW1hbmQ6YWZ0ZXInLCBlKTtcclxuICAgIH1cclxuXHJcbiAgICBfaGFuZGxlTG9nRW50cnkoZSkge1xyXG4gICAgICAgIGlmICghZSB8fCAhZS5sZXZlbCB8fCAhZS5tZXNzYWdlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGUgJiYgZS5sZXZlbCAmJiBlLmxldmVsID09PSAnZXJyb3InKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlcltlLmxldmVsXShlLm1lc3NhZ2UsIGUuc3JjLCBlLmVycik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyW2UubGV2ZWxdKGUubWVzc2FnZSwgZS5zcmMpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
|