oxygen-cli 1.37.7 → 1.37.9
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 +1687 -1682
- package/LICENSE +672 -672
- package/README.md +37 -37
- package/build/core/OxygenCore.js +8 -2
- package/build/core/OxygenEvents.js +4 -2
- package/build/core/OxygenModule.js +1 -1
- package/build/core/OxygenService.js +1 -1
- package/build/core/OxygenSubModule.js +1 -1
- package/build/core/WebDriverModule.js +1 -1
- package/build/core/utils.js +1 -1
- package/build/errors/HookError.js +1 -1
- package/build/errors/ModuleError.js +1 -1
- package/build/errors/ModuleUnavailableError.js +1 -1
- package/build/errors/OxygenError.js +1 -1
- package/build/errors/ScriptNotFound.js +1 -1
- package/build/errors/helper.js +1 -1
- package/build/index.js +1 -1
- package/build/lib/cli-util.js +25 -6
- package/build/lib/cli.js +2 -2
- package/build/lib/debugger.js +1 -1
- package/build/lib/img-merge.js +1 -1
- package/build/lib/launcher.js +1 -1
- package/build/lib/logger.js +43 -43
- package/build/lib/moduleRequire.js +1 -1
- package/build/lib/parallel-launcher.js +1 -1
- package/build/lib/param-manager.js +1 -1
- package/build/lib/param-reader-csv.js +1 -1
- package/build/lib/param-reader-excel.js +1 -1
- package/build/lib/param-reader-json.js +1 -1
- package/build/lib/text-to-image.js +1 -1
- package/build/lib/util.js +2 -2
- package/build/model/case-result.js +1 -1
- package/build/model/failure.js +1 -1
- package/build/model/status.js +1 -1
- package/build/model/step-result.js +1 -1
- package/build/model/suite-result.js +2 -1
- package/build/model/test-result.js +1 -1
- package/build/model/testcase.js +1 -1
- package/build/model/testsuite.js +1 -1
- package/build/ox_modules/index.js +1 -1
- package/build/ox_modules/module-assert.js +37 -37
- package/build/ox_modules/module-date.js +24 -24
- package/build/ox_modules/module-db.js +52 -52
- package/build/ox_modules/module-email.js +59 -59
- package/build/ox_modules/module-eyes.js +34 -34
- package/build/ox_modules/module-http/ntlm-util.js +10 -10
- package/build/ox_modules/module-http/ntlm.js +15 -15
- package/build/ox_modules/module-http.js +132 -132
- package/build/ox_modules/module-log.js +27 -27
- package/build/ox_modules/module-mailinator.js +87 -87
- package/build/ox_modules/module-mob/commands/alertAccept.js +17 -17
- package/build/ox_modules/module-mob/commands/alertDismiss.js +17 -17
- package/build/ox_modules/module-mob/commands/assertAlert.js +20 -20
- package/build/ox_modules/module-mob/commands/assertText.js +21 -21
- package/build/ox_modules/module-mob/commands/assertTitle.js +19 -19
- package/build/ox_modules/module-mob/commands/assertValue.js +18 -18
- package/build/ox_modules/module-mob/commands/back.js +16 -16
- package/build/ox_modules/module-mob/commands/clear.js +19 -19
- package/build/ox_modules/module-mob/commands/click.js +17 -17
- package/build/ox_modules/module-mob/commands/clickHidden.js +17 -17
- package/build/ox_modules/module-mob/commands/clickLong.js +18 -18
- package/build/ox_modules/module-mob/commands/clickMultipleTimes.js +18 -18
- package/build/ox_modules/module-mob/commands/closeApp.js +16 -16
- package/build/ox_modules/module-mob/commands/debug.js +16 -16
- package/build/ox_modules/module-mob/commands/dragAndDrop.js +19 -19
- package/build/ox_modules/module-mob/commands/enableNetwork.js +27 -27
- package/build/ox_modules/module-mob/commands/execute.js +21 -21
- package/build/ox_modules/module-mob/commands/findElement.js +20 -20
- package/build/ox_modules/module-mob/commands/findElements.js +23 -23
- package/build/ox_modules/module-mob/commands/getAlertText.js +17 -17
- package/build/ox_modules/module-mob/commands/getAppiumLogs.js +16 -16
- package/build/ox_modules/module-mob/commands/getBrowserLogs.js +16 -16
- package/build/ox_modules/module-mob/commands/getCurrentActivity.js +15 -15
- package/build/ox_modules/module-mob/commands/getCurrentPackage.js +15 -15
- package/build/ox_modules/module-mob/commands/getDeviceLogs.js +16 -16
- package/build/ox_modules/module-mob/commands/getDeviceTime.js +16 -16
- package/build/ox_modules/module-mob/commands/getLocation.js +20 -20
- package/build/ox_modules/module-mob/commands/getSource.js +16 -16
- package/build/ox_modules/module-mob/commands/getText.js +18 -18
- package/build/ox_modules/module-mob/commands/getTitle.js +13 -13
- package/build/ox_modules/module-mob/commands/getUrl.js +17 -17
- package/build/ox_modules/module-mob/commands/getValue.js +18 -18
- package/build/ox_modules/module-mob/commands/getWindowHandles.js +17 -17
- package/build/ox_modules/module-mob/commands/hideKeyboard.js +21 -21
- package/build/ox_modules/module-mob/commands/index.js +1 -1
- package/build/ox_modules/module-mob/commands/installApp.js +16 -16
- package/build/ox_modules/module-mob/commands/isAppInstalled.js +16 -16
- package/build/ox_modules/module-mob/commands/isCheckable.js +18 -18
- package/build/ox_modules/module-mob/commands/isChecked.js +18 -18
- package/build/ox_modules/module-mob/commands/isClickable.js +18 -18
- package/build/ox_modules/module-mob/commands/isExist.js +19 -19
- package/build/ox_modules/module-mob/commands/isSelected.js +23 -23
- package/build/ox_modules/module-mob/commands/isVisible.js +19 -19
- package/build/ox_modules/module-mob/commands/isWebViewContext.js +16 -16
- package/build/ox_modules/module-mob/commands/launchApp.js +15 -15
- package/build/ox_modules/module-mob/commands/longPressKeyCode.js +18 -18
- package/build/ox_modules/module-mob/commands/open.js +17 -17
- package/build/ox_modules/module-mob/commands/pause.js +16 -16
- package/build/ox_modules/module-mob/commands/removeApp.js +16 -16
- package/build/ox_modules/module-mob/commands/resetApp.js +15 -15
- package/build/ox_modules/module-mob/commands/scrollIntoElement.js +22 -22
- package/build/ox_modules/module-mob/commands/scrollIntoView.js +27 -27
- package/build/ox_modules/module-mob/commands/select.js +24 -24
- package/build/ox_modules/module-mob/commands/selectFrame.js +23 -23
- package/build/ox_modules/module-mob/commands/selectWindow.js +28 -28
- package/build/ox_modules/module-mob/commands/sendKeys.js +29 -29
- package/build/ox_modules/module-mob/commands/setContext.js +16 -16
- package/build/ox_modules/module-mob/commands/setNativeContext.js +15 -15
- package/build/ox_modules/module-mob/commands/setTimeout.js +21 -21
- package/build/ox_modules/module-mob/commands/setWebViewContext.js +16 -16
- package/build/ox_modules/module-mob/commands/shake.js +16 -16
- package/build/ox_modules/module-mob/commands/smsClickLink.js +19 -19
- package/build/ox_modules/module-mob/commands/smsGetText.js +20 -20
- package/build/ox_modules/module-mob/commands/swipe.js +20 -20
- package/build/ox_modules/module-mob/commands/swipeElement.js +20 -20
- package/build/ox_modules/module-mob/commands/swipeScreen.js +20 -20
- package/build/ox_modules/module-mob/commands/takeScreenshot.js +17 -17
- package/build/ox_modules/module-mob/commands/tap.js +17 -17
- package/build/ox_modules/module-mob/commands/type.js +20 -20
- package/build/ox_modules/module-mob/commands/unlockPattern.js +22 -22
- package/build/ox_modules/module-mob/commands/waitForExist.js +18 -18
- package/build/ox_modules/module-mob/commands/waitForInteractable.js +17 -17
- package/build/ox_modules/module-mob/commands/waitForVisible.js +17 -17
- package/build/ox_modules/module-mob.js +83 -79
- package/build/ox_modules/module-pdf.js +35 -35
- package/build/ox_modules/module-proxy.js +77 -77
- package/build/ox_modules/module-serial.js +55 -55
- package/build/ox_modules/module-shell.js +25 -25
- package/build/ox_modules/module-soap.js +72 -72
- package/build/ox_modules/module-twilio.js +41 -41
- package/build/ox_modules/module-utils.js +91 -91
- package/build/ox_modules/module-web/commands/alertAccept.js +17 -17
- package/build/ox_modules/module-web/commands/alertDismiss.js +17 -17
- package/build/ox_modules/module-web/commands/assertAlert.js +20 -20
- package/build/ox_modules/module-web/commands/assertExist.js +17 -17
- package/build/ox_modules/module-web/commands/assertSelectedLabel.js +21 -21
- package/build/ox_modules/module-web/commands/assertSelectedValue.js +21 -21
- package/build/ox_modules/module-web/commands/assertText.js +21 -21
- package/build/ox_modules/module-web/commands/assertTextNotPresent.js +18 -18
- package/build/ox_modules/module-web/commands/assertTextPresent.js +18 -18
- package/build/ox_modules/module-web/commands/assertTitle.js +19 -19
- package/build/ox_modules/module-web/commands/assertValue.js +20 -20
- package/build/ox_modules/module-web/commands/back.js +16 -16
- package/build/ox_modules/module-web/commands/clear.js +18 -18
- package/build/ox_modules/module-web/commands/click.js +25 -25
- package/build/ox_modules/module-web/commands/clickHidden.js +23 -23
- package/build/ox_modules/module-web/commands/closeWindow.js +15 -15
- package/build/ox_modules/module-web/commands/debug.js +15 -15
- package/build/ox_modules/module-web/commands/deleteCookies.js +12 -12
- package/build/ox_modules/module-web/commands/deselect.js +22 -22
- package/build/ox_modules/module-web/commands/doubleClick.js +17 -17
- package/build/ox_modules/module-web/commands/dragAndDrop.js +20 -20
- package/build/ox_modules/module-web/commands/execute.js +24 -24
- package/build/ox_modules/module-web/commands/fileBrowse.js +18 -18
- package/build/ox_modules/module-web/commands/findElement.js +19 -19
- package/build/ox_modules/module-web/commands/findElements.js +22 -22
- package/build/ox_modules/module-web/commands/fullscreenWindow.js +14 -14
- package/build/ox_modules/module-web/commands/getAlertText.js +16 -16
- package/build/ox_modules/module-web/commands/getAttribute.js +19 -19
- package/build/ox_modules/module-web/commands/getBrowserLogs.js +17 -17
- package/build/ox_modules/module-web/commands/getCookies.js +13 -13
- package/build/ox_modules/module-web/commands/getCssValue.js +19 -19
- package/build/ox_modules/module-web/commands/getElementCount.js +17 -17
- package/build/ox_modules/module-web/commands/getHTML.js +17 -17
- package/build/ox_modules/module-web/commands/getSource.js +16 -16
- package/build/ox_modules/module-web/commands/getText.js +18 -18
- package/build/ox_modules/module-web/commands/getTitle.js +12 -12
- package/build/ox_modules/module-web/commands/getUrl.js +16 -16
- package/build/ox_modules/module-web/commands/getValue.js +18 -18
- package/build/ox_modules/module-web/commands/getWindowHandles.js +16 -16
- package/build/ox_modules/module-web/commands/getWindowSize.js +16 -16
- package/build/ox_modules/module-web/commands/getXMLPageSource.js +16 -16
- package/build/ox_modules/module-web/commands/index.js +1 -1
- package/build/ox_modules/module-web/commands/isAlertPresent.js +16 -16
- package/build/ox_modules/module-web/commands/isChecked.js +18 -18
- package/build/ox_modules/module-web/commands/isExist.js +19 -19
- package/build/ox_modules/module-web/commands/isInteractable.js +22 -22
- package/build/ox_modules/module-web/commands/isSelected.js +23 -23
- package/build/ox_modules/module-web/commands/isVisible.js +19 -19
- package/build/ox_modules/module-web/commands/makeVisible.js +25 -25
- package/build/ox_modules/module-web/commands/maximizeWindow.js +14 -14
- package/build/ox_modules/module-web/commands/minimizeWindow.js +14 -14
- package/build/ox_modules/module-web/commands/mock.js +20 -20
- package/build/ox_modules/module-web/commands/mockClearAll.js +12 -12
- package/build/ox_modules/module-web/commands/mockRestoreAll.js +12 -12
- package/build/ox_modules/module-web/commands/newWindow.js +16 -16
- package/build/ox_modules/module-web/commands/open.js +16 -16
- package/build/ox_modules/module-web/commands/pause.js +15 -15
- package/build/ox_modules/module-web/commands/point.js +21 -21
- package/build/ox_modules/module-web/commands/pointJS.js +15 -15
- package/build/ox_modules/module-web/commands/refresh.js +15 -15
- package/build/ox_modules/module-web/commands/rightClick.js +17 -17
- package/build/ox_modules/module-web/commands/rightClickActions.js +19 -19
- package/build/ox_modules/module-web/commands/scrollToElement.js +21 -21
- package/build/ox_modules/module-web/commands/select.js +23 -23
- package/build/ox_modules/module-web/commands/selectFrame.js +24 -24
- package/build/ox_modules/module-web/commands/selectWindow.js +27 -27
- package/build/ox_modules/module-web/commands/sendKeys.js +22 -22
- package/build/ox_modules/module-web/commands/setAutoWaitForAngular.js +20 -20
- package/build/ox_modules/module-web/commands/setTimeout.js +21 -21
- package/build/ox_modules/module-web/commands/setWindowSize.js +17 -17
- package/build/ox_modules/module-web/commands/takeScreenshot.js +17 -17
- package/build/ox_modules/module-web/commands/type.js +20 -20
- package/build/ox_modules/module-web/commands/verifyAlert.js +20 -20
- package/build/ox_modules/module-web/commands/verifyExist.js +17 -17
- package/build/ox_modules/module-web/commands/verifySelectedLabel.js +21 -21
- package/build/ox_modules/module-web/commands/verifySelectedValue.js +21 -21
- package/build/ox_modules/module-web/commands/verifyText.js +21 -21
- package/build/ox_modules/module-web/commands/verifyTextNotPresent.js +18 -18
- package/build/ox_modules/module-web/commands/verifyTextPresent.js +18 -18
- package/build/ox_modules/module-web/commands/verifyTitle.js +19 -19
- package/build/ox_modules/module-web/commands/verifyValue.js +20 -20
- package/build/ox_modules/module-web/commands/waitForAngular.js +19 -19
- package/build/ox_modules/module-web/commands/waitForExist.js +17 -17
- package/build/ox_modules/module-web/commands/waitForInteractable.js +17 -17
- package/build/ox_modules/module-web/commands/waitForNotExist.js +17 -17
- package/build/ox_modules/module-web/commands/waitForNotText.js +20 -20
- package/build/ox_modules/module-web/commands/waitForNotValue.js +20 -20
- package/build/ox_modules/module-web/commands/waitForText.js +20 -20
- package/build/ox_modules/module-web/commands/waitForValue.js +20 -20
- package/build/ox_modules/module-web/commands/waitForVisible.js +17 -17
- package/build/ox_modules/module-web/commands/waitForWindow.js +22 -22
- package/build/ox_modules/module-web.js +105 -100
- package/build/ox_modules/module-win/commands/assertText.js +17 -17
- package/build/ox_modules/module-win/commands/assertTitle.js +15 -15
- package/build/ox_modules/module-win/commands/assertValue.js +14 -14
- package/build/ox_modules/module-win/commands/back.js +11 -11
- package/build/ox_modules/module-win/commands/clear.js +13 -13
- package/build/ox_modules/module-win/commands/click.js +13 -13
- package/build/ox_modules/module-win/commands/clickLong.js +14 -14
- package/build/ox_modules/module-win/commands/clickMultipleTimes.js +14 -14
- package/build/ox_modules/module-win/commands/findElement.js +15 -15
- package/build/ox_modules/module-win/commands/findElements.js +15 -15
- package/build/ox_modules/module-win/commands/getAppiumLogs.js +12 -12
- package/build/ox_modules/module-win/commands/getCurrentWindowHandle.js +15 -15
- package/build/ox_modules/module-win/commands/getLocation.js +14 -14
- package/build/ox_modules/module-win/commands/getSource.js +12 -12
- package/build/ox_modules/module-win/commands/getText.js +14 -14
- package/build/ox_modules/module-win/commands/getValue.js +14 -14
- package/build/ox_modules/module-win/commands/getWindowHandles.js +15 -15
- package/build/ox_modules/module-win/commands/index.js +1 -1
- package/build/ox_modules/module-win/commands/isCheckable.js +14 -14
- package/build/ox_modules/module-win/commands/isChecked.js +14 -14
- package/build/ox_modules/module-win/commands/isClickable.js +14 -14
- package/build/ox_modules/module-win/commands/isExist.js +15 -15
- package/build/ox_modules/module-win/commands/isSelected.js +14 -14
- package/build/ox_modules/module-win/commands/isVisible.js +15 -15
- package/build/ox_modules/module-win/commands/open.js +13 -13
- package/build/ox_modules/module-win/commands/pause.js +12 -12
- package/build/ox_modules/module-win/commands/rightClick.js +13 -13
- package/build/ox_modules/module-win/commands/selectWindow.js +23 -23
- package/build/ox_modules/module-win/commands/sendKeys.js +22 -22
- package/build/ox_modules/module-win/commands/setTimeout.js +17 -17
- package/build/ox_modules/module-win/commands/takeScreenshot.js +16 -16
- package/build/ox_modules/module-win/commands/tap.js +13 -13
- package/build/ox_modules/module-win/commands/type.js +16 -16
- package/build/ox_modules/module-win/commands/waitForExist.js +14 -14
- package/build/ox_modules/module-win/commands/waitForInteractable.js +16 -16
- package/build/ox_modules/module-win/commands/waitForVisible.js +13 -13
- package/build/ox_modules/module-win.js +47 -47
- package/build/ox_modules/utils.js +8 -8
- package/build/ox_reporters/excel/template.json +48 -48
- package/build/ox_reporters/html/index.ejs +163 -163
- package/build/ox_reporters/html/summary.ejs +77 -77
- package/build/ox_reporters/html/tests-details.ejs +134 -134
- package/build/ox_reporters/html/tests-devices-browsers.ejs +83 -83
- package/build/ox_reporters/reporter-excel.js +1 -1
- package/build/ox_reporters/reporter-html.js +1 -1
- package/build/ox_reporters/reporter-json.js +1 -1
- package/build/ox_reporters/reporter-junit.js +1 -1
- package/build/ox_reporters/reporter-pdf.js +1 -1
- package/build/ox_reporters/reporter-rp.js +376 -0
- package/build/ox_reporters/reporter-xml.js +1 -1
- package/build/ox_services/service-devtools/submodule-network.js +1 -1
- package/build/ox_services/service-devtools.js +1 -1
- package/build/reporter/FileReporterBase.js +1 -1
- package/build/reporter/ReportAggregator.js +110 -43
- package/build/reporter/ReporterBase.js +2 -2
- package/build/runners/WorkerProcess.js +1 -1
- package/build/runners/cucumber/CucumberEventListener.js +1 -1
- package/build/runners/cucumber/CucumberReporter.js +1 -1
- package/build/runners/cucumber/CucumberWorker.js +1 -1
- package/build/runners/cucumber/index.js +1 -1
- package/build/runners/cucumber/worker.js +1 -1
- package/build/runners/index.js +1 -1
- package/build/runners/oxygen/OxygenWorker.js +1 -1
- package/build/runners/oxygen/index.js +37 -22
- package/build/runners/oxygen/worker.js +1 -1
- package/config/default.json +6 -6
- package/log.txt +1614 -0
- package/package.json +136 -135
- package/types/index.d.ts +70 -70
- package/types/module-eyes.d.ts +39 -39
- package/types/module-http.d.ts +163 -163
- package/types/module-log.d.ts +34 -34
- package/types/module-mob.d.ts +966 -966
- package/types/module-pdf.d.ts +40 -40
- package/types/module-proxy.d.ts +100 -100
- package/types/module-shell.d.ts +24 -24
- package/types/module-utils.d.ts +99 -99
- package/types/module-web.d.ts +1053 -1053
- package/types/module-win.d.ts +352 -352
- package/types/oxygen.d.ts +53 -53
|
@@ -17,18 +17,18 @@ var _helper = _interopRequireDefault(require("../errors/helper"));
|
|
|
17
17
|
|
|
18
18
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
19
|
|
|
20
|
-
/*
|
|
21
|
-
* Copyright (C) 2015-present CloudBeat Limited
|
|
22
|
-
*
|
|
23
|
-
* This program is free software: you can redistribute it and/or modify
|
|
24
|
-
* it under the terms of the GNU General Public License as published by
|
|
25
|
-
* the Free Software Foundation, either version 3 of the License, or
|
|
26
|
-
* (at your option) any later version.
|
|
20
|
+
/*
|
|
21
|
+
* Copyright (C) 2015-present CloudBeat Limited
|
|
22
|
+
*
|
|
23
|
+
* This program is free software: you can redistribute it and/or modify
|
|
24
|
+
* it under the terms of the GNU General Public License as published by
|
|
25
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
26
|
+
* (at your option) any later version.
|
|
27
27
|
*/
|
|
28
28
|
|
|
29
|
-
/**
|
|
30
|
-
* @name eyes
|
|
31
|
-
* @description Provides access to Applitools Eyes service.
|
|
29
|
+
/**
|
|
30
|
+
* @name eyes
|
|
31
|
+
* @description Provides access to Applitools Eyes service.
|
|
32
32
|
*/
|
|
33
33
|
const DEFAULT_VIEWPORT = {
|
|
34
34
|
width: 1440,
|
|
@@ -46,12 +46,12 @@ class ApplitoolsModule extends _OxygenModule.default {
|
|
|
46
46
|
get name() {
|
|
47
47
|
return MODULE_NAME;
|
|
48
48
|
}
|
|
49
|
-
/**
|
|
50
|
-
* @summary Initializes Applitools Eyes session.
|
|
51
|
-
* @function init
|
|
52
|
-
* @param {string|object} module - A module name or a reference to the mododule to be associated with Eyes current session.
|
|
53
|
-
* @param {apiKey} [apiKey] - An optional Applitools API Key.
|
|
54
|
-
* If this parameter is not provided, API Key must be specified in the test configuration file.
|
|
49
|
+
/**
|
|
50
|
+
* @summary Initializes Applitools Eyes session.
|
|
51
|
+
* @function init
|
|
52
|
+
* @param {string|object} module - A module name or a reference to the mododule to be associated with Eyes current session.
|
|
53
|
+
* @param {apiKey} [apiKey] - An optional Applitools API Key.
|
|
54
|
+
* If this parameter is not provided, API Key must be specified in the test configuration file.
|
|
55
55
|
*/
|
|
56
56
|
|
|
57
57
|
|
|
@@ -109,10 +109,10 @@ class ApplitoolsModule extends _OxygenModule.default {
|
|
|
109
109
|
|
|
110
110
|
super.init();
|
|
111
111
|
}
|
|
112
|
-
/**
|
|
113
|
-
* @summary Closes Applitools Eyes session, terminates the sequence of checkpoints, and then waits for and returns the test results.
|
|
114
|
-
* @function dispose
|
|
115
|
-
* @return {TestResult} Eyes test result.
|
|
112
|
+
/**
|
|
113
|
+
* @summary Closes Applitools Eyes session, terminates the sequence of checkpoints, and then waits for and returns the test results.
|
|
114
|
+
* @function dispose
|
|
115
|
+
* @return {TestResult} Eyes test result.
|
|
116
116
|
*/
|
|
117
117
|
|
|
118
118
|
|
|
@@ -133,12 +133,12 @@ class ApplitoolsModule extends _OxygenModule.default {
|
|
|
133
133
|
super.dispose();
|
|
134
134
|
return results;
|
|
135
135
|
}
|
|
136
|
-
/**
|
|
137
|
-
* @summary Preform visual validation for a certain target.
|
|
138
|
-
* @function check
|
|
139
|
-
* @param {string} name - A name to be associated with the match.
|
|
140
|
-
* @param {Target} [target] - An optional target instance which describes whether we want a window/region/frame.
|
|
141
|
-
* @return {boolean} A promise which is resolved when the validation is finished.
|
|
136
|
+
/**
|
|
137
|
+
* @summary Preform visual validation for a certain target.
|
|
138
|
+
* @function check
|
|
139
|
+
* @param {string} name - A name to be associated with the match.
|
|
140
|
+
* @param {Target} [target] - An optional target instance which describes whether we want a window/region/frame.
|
|
141
|
+
* @return {boolean} A promise which is resolved when the validation is finished.
|
|
142
142
|
*/
|
|
143
143
|
|
|
144
144
|
|
|
@@ -157,13 +157,13 @@ class ApplitoolsModule extends _OxygenModule.default {
|
|
|
157
157
|
|
|
158
158
|
throw new _OxygenError.default(_helper.default.errorCode.ASSERT_ERROR, null);
|
|
159
159
|
}
|
|
160
|
-
/**
|
|
161
|
-
* @summary Takes a snapshot of the application under test and matches it with
|
|
162
|
-
* the expected output.
|
|
163
|
-
* @function checkWindow
|
|
164
|
-
* @param {string} [name=] - An optional tag to be associated with the snapshot.
|
|
165
|
-
* @param {number} [matchTimeout=-1] - The amount of time to retry matching (Milliseconds).
|
|
166
|
-
* @return {boolean} A promise which is resolved when the validation is finished.
|
|
160
|
+
/**
|
|
161
|
+
* @summary Takes a snapshot of the application under test and matches it with
|
|
162
|
+
* the expected output.
|
|
163
|
+
* @function checkWindow
|
|
164
|
+
* @param {string} [name=] - An optional tag to be associated with the snapshot.
|
|
165
|
+
* @param {number} [matchTimeout=-1] - The amount of time to retry matching (Milliseconds).
|
|
166
|
+
* @return {boolean} A promise which is resolved when the validation is finished.
|
|
167
167
|
*/
|
|
168
168
|
|
|
169
169
|
|
|
@@ -186,4 +186,4 @@ class ApplitoolsModule extends _OxygenModule.default {
|
|
|
186
186
|
}
|
|
187
187
|
|
|
188
188
|
exports.default = ApplitoolsModule;
|
|
189
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1leWVzLmpzIl0sIm5hbWVzIjpbIkRFRkFVTFRfVklFV1BPUlQiLCJ3aWR0aCIsImhlaWdodCIsIk1PRFVMRV9OQU1FIiwiQXBwbGl0b29sc01vZHVsZSIsIk94eWdlbk1vZHVsZSIsImNvbnN0cnVjdG9yIiwib3B0aW9ucyIsImNvbnRleHQiLCJycyIsImxvZ2dlciIsIm1vZHVsZXMiLCJzZXJ2aWNlcyIsIl9leWVzIiwibmFtZSIsImluaXQiLCJtb2R1bGUiLCJhcGlLZXkiLCJfZXllc0NvbmZpZyIsImFwcGxpdG9vbHNPcHRzIiwiTW9kdWxlRXJyb3IiLCJfdmlld3BvcnQiLCJPYmplY3QiLCJhc3NpZ24iLCJ2aWV3cG9ydCIsIl9hcGlLZXkiLCJhcHBsaXRvb2xzS2V5Iiwia2V5IiwicHJvY2VzcyIsImVudiIsIkFQUExJVE9PTFNfS0VZIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZ2V0RHJpdmVyIiwiZHJpdmVyIiwiX2RyaXZlciIsIkV5ZXMiLCJyZXF1aXJlIiwic2V0QXBpS2V5IiwiYXBwTmFtZSIsInRlc3ROYW1lIiwib3BlbiIsImUiLCJtZXNzYWdlIiwiZGlzcG9zZSIsImlzSW5pdGlhbGl6ZWQiLCJyZXN1bHRzIiwiY2xvc2UiLCJhYm9ydElmTm90Q2xvc2VkIiwiY2hlY2siLCJ0YXJnZXQiLCJUYXJnZXQiLCJyZXN1bHQiLCJ3aW5kb3ciLCJmdWxseSIsIl9hc0V4cGVjdGVkIiwiT3hFcnJvciIsImVyckhlbHBlciIsImVycm9yQ29kZSIsIkFTU0VSVF9FUlJPUiIsImNoZWNrV2luZG93IiwibWF0Y2hUaW1lb3V0IiwiYXNFeHBlY3RlZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBY0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7QUFqQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQU9BLE1BQU1BLGdCQUFn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LENBQXdDYyxNQUF2RDs7QUFDQSxVQUFNQyxNQUFNLEdBQUksTUFBTSxLQUFLeEMsS0FBTCxDQUFXcUMsS0FBWCxDQUFpQnBDLElBQWpCLEVBQXVCcUMsTUFBTSxJQUFJQyxNQUFNLENBQUNFLE1BQVAsR0FBZ0JDLEtBQWhCLEVBQWpDLENBQXRCOztBQUNBLFFBQUlGLE1BQU0sQ0FBQ0csV0FBWCxFQUF3QjtBQUNwQixhQUFPLElBQVA7QUFDSDs7QUFDRCxVQUFNLElBQUlDLG9CQUFKLENBQVlDLGdCQUFVQyxTQUFWLENBQW9CQyxZQUFoQyxFQUE4QyxJQUE5QyxDQUFOO0FBQ0g7QUFFRDtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDcUIsUUFBWEMsV0FBVyxDQUFDL0MsSUFBRCxFQUFPZ0QsWUFBUCxFQUFxQjtBQUNsQyxRQUFJLENBQUMsS0FBS2pELEtBQVYsRUFBaUI7QUFDYixhQUFPLEtBQVA7QUFDSDs7QUFFRCxVQUFNd0MsTUFBTSxHQUFHLE1BQU0sS0FBS2pCLE9BQUwsQ0FBYUgsSUFBYixDQUFrQixZQUFXO0FBQzlDLGFBQU8sTUFBTSxLQUFLcEIsS0FBTCxDQUFXZ0QsV0FBWCxDQUF1Qi9DLElBQXZCLEVBQTZCZ0QsWUFBN0IsQ0FBYjtBQUNILEtBRm9CLENBQXJCOztBQUdBLFFBQUlULE1BQU0sSUFBSUEsTUFBTSxDQUFDVSxVQUFyQixFQUFpQztBQUM3QixhQUFPLElBQVA7QUFDSDs7QUFDRCxVQUFNLElBQUlOLG9CQUFKLENBQVlDLGdCQUFVQyxTQUFWLENBQW9CQyxZQUFoQyxFQUE4QyxJQUE5QyxDQUFOO0FBQ0g7O0FBNUhzRCIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoQykgMjAxNS1wcmVzZW50IENsb3VkQmVhdCBMaW1pdGVkXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIEBuYW1lIGV5ZXNcclxuICogQGRlc2NyaXB0aW9uIFByb3ZpZGVzIGFjY2VzcyB0byBBcHBsaXRvb2xzIEV5ZXMgc2VydmljZS5cclxuICovXHJcblxyXG5pbXBvcnQgT3h5Z2VuTW9kdWxlIGZyb20gJy4uL2NvcmUvT3h5Z2VuTW9kdWxlJztcclxuaW1wb3J0IE1vZHVsZUVycm9yIGZyb20gJy4uL2Vycm9ycy9Nb2R1bGVFcnJvcic7XHJcbmltcG9ydCBPeEVycm9yIGZyb20gJy4uL2Vycm9ycy9PeHlnZW5FcnJvcic7XHJcbmltcG9ydCBlcnJIZWxwZXIgZnJvbSAnLi4vZXJyb3JzL2hlbHBlcic7XHJcblxyXG5jb25zdCBERUZBVUxUX1ZJRVdQT1JUID0ge1xyXG4gICAgd2lkdGg6IDE0NDAsXHJcbiAgICBoZWlnaHQ6IDkwMFxyXG59O1xyXG5jb25zdCBNT0RVTEVfTkFNRSA9ICdleWVzJztcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFwcGxpdG9vbHNNb2R1bGUgZXh0ZW5kcyBPeHlnZW5Nb2R1bGUge1xyXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucywgY29udGV4dCwgcnMsIGxvZ2dlciwgbW9kdWxlcywgc2VydmljZXMpIHtcclxuICAgICAgICBzdXBlcihvcHRpb25zLCBjb250ZXh0LCBycywgbG9nZ2VyLCBtb2R1bGVzLCBzZXJ2aWNlcyk7XHJcbiAgICAgICAgLy8gdGhpcyBtb2R1bGUgZG9lc24ndCByZXF1aXJlIGNhbGxpbmcgaW5pdCgpIG1ldGhvZFxyXG4gICAgICAgIHRoaXMuX2V5ZXMgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgZ2V0IG5hbWUoKSB7XHJcbiAgICAgICAgcmV0dXJuIE1PRFVMRV9OQU1FO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBJbml0aWFsaXplcyBBcHBsaXRvb2xzIEV5ZXMgc2Vzc2lvbi5cclxuICAgICAqIEBmdW5jdGlvbiBpbml0XHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ3xvYmplY3R9IG1vZHVsZSAtIEEgbW9kdWxlIG5hbWUgb3IgYSByZWZlcmVuY2UgdG8gdGhlIG1vZG9kdWxlIHRvIGJlIGFzc29jaWF0ZWQgd2l0aCBFeWVzIGN1cnJlbnQgc2Vzc2lvbi5cclxuICAgICAqIEBwYXJhbSB7YXBpS2V5fSBbYXBpS2V5XSAtIEFuIG9wdGlvbmFsIEFwcGxpdG9vbHMgQVBJIEtleS4gXHJcbiAgICAgKiBJZiB0aGlzIHBhcmFtZXRlciBpcyBub3QgcHJvdmlkZWQsIEFQSSBLZXkgbXVzdCBiZSBzcGVjaWZpZWQgaW4gdGhlIHRlc3QgY29uZmlndXJhdGlvbiBmaWxlLlxyXG4gICAgICovXHJcbiAgICBhc3luYyBpbml0KG1vZHVsZSwgYXBpS2V5ID0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuX2V5ZXNDb25maWcgPSB0aGlzLm9wdGlvbnMuYXBwbGl0b29sc09wdHMgfHwge307XHJcbiAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuYXBwbGl0b29sc09wdHMgJiYgIWFwaUtleSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgTW9kdWxlRXJyb3IoJ0FwcGxpdG9vbHMgc2V0dGluZ3MgYXJlIG1pc3NpbmcuJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX3ZpZXdwb3J0ID0gT2JqZWN0LmFzc2lnbihERUZBVUxUX1ZJRVdQT1JULCB0aGlzLl9leWVzQ29uZmlnLnZpZXdwb3J0IHx8IHt9KTtcclxuICAgICAgICB0aGlzLl9hcGlLZXkgPSBhcGlLZXkgfHwgdGhpcy5vcHRpb25zLmFwcGxpdG9vbHNLZXkgfHwgdGhpcy5fZXllc0NvbmZpZy5rZXkgfHwgcHJvY2Vzcy5lbnYuQVBQTElUT09MU19LRVkgfHwgbnVsbDtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLl9hcGlLZXkpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE1vZHVsZUVycm9yKCdBUEkga2V5IGlzIG1pc3NpbmcuIFRvIHVzZSBBcHBsaXRvb2xzIHNlcnZpY2UsIHlvdSBtdXN0IHNwZWNpZnkgQXBwbGl0b29scyBBUEkga2V5LicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodHlwZW9mIG1vZHVsZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLm1vZHVsZXMsIG1vZHVsZSkpIHtcclxuICAgICAgICAgICAgICAgIG1vZHVsZSA9IHRoaXMubW9kdWxlc1ttb2R1bGVdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IE1vZHVsZUVycm9yKGBNb2R1bGUgbm90IGZvdW5kOiAke21vZHVsZX0uYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGVvZiBtb2R1bGUuZ2V0RHJpdmVyICE9PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBNb2R1bGVFcnJvcihgVGhlIG1vZHVsZSBcIiR7bW9kdWxlLm5hbWV9XCIgZG9lcyBub3QgaGF2ZSBcImdldERyaXZlclwiIGZ1bmN0aW9uIGltcGxlbWVudGVkLmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBkcml2ZXIgPSBtb2R1bGUuZ2V0RHJpdmVyKCk7XHJcbiAgICAgICAgdGhpcy5fZHJpdmVyID0gZHJpdmVyO1xyXG5cclxuICAgICAgICBjb25zdCBFeWVzID0gcmVxdWlyZSgnQGFwcGxpdG9vbHMvZXllcy13ZWJkcml2ZXJpbycpLkV5ZXM7XHJcbiAgICAgICAgdGhpcy5fZXllcyA9IG5ldyBFeWVzKCk7XHJcbiAgICAgICAgdGhpcy5fZXllcy5zZXRBcGlLZXkodGhpcy5fYXBpS2V5KTtcclxuXHJcbiAgICAgICAgbGV0IGFwcE5hbWUgPSAnT3h5Z2VuIEFwcCc7XHJcbiAgICAgICAgbGV0IHRlc3ROYW1lID0gJ094eWdlbiBUZXN0JztcclxuXHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5hcHBOYW1lICYmIHR5cGVvZiB0aGlzLm9wdGlvbnMuYXBwTmFtZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgYXBwTmFtZSA9IHRoaXMub3B0aW9ucy5hcHBOYW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLm5hbWUgJiYgdHlwZW9mIHRoaXMub3B0aW9ucy5uYW1lID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICB0ZXN0TmFtZSA9IHRoaXMub3B0aW9ucy5uYW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBhd2FpdCBkcml2ZXIuY2FsbCgoKSA9PiB0aGlzLl9leWVzLm9wZW4oZHJpdmVyLCBhcHBOYW1lLCB0ZXN0TmFtZSwgdGhpcy5fdmlld3BvcnQpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE1vZHVsZUVycm9yKGBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBcImV5ZXNcIiBtb2R1bGU6ICR7ZS5tZXNzYWdlfWApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzdXBlci5pbml0KCk7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IENsb3NlcyBBcHBsaXRvb2xzIEV5ZXMgc2Vzc2lvbiwgdGVybWluYXRlcyB0aGUgc2VxdWVuY2Ugb2YgY2hlY2twb2ludHMsIGFuZCB0aGVuIHdhaXRzIGZvciBhbmQgcmV0dXJucyB0aGUgdGVzdCByZXN1bHRzLlxyXG4gICAgICogQGZ1bmN0aW9uIGRpc3Bvc2VcclxuICAgICAqIEByZXR1cm4ge1Rlc3RSZXN1bHR9IEV5ZXMgdGVzdCByZXN1bHQuXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGRpc3Bvc2UoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzSW5pdGlhbGl6ZWQgfHwgIXRoaXMuX2V5ZXMpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHJlc3VsdHMgPSBudWxsO1xyXG5cclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICByZXN1bHRzID0gdGhpcy5fZXllcy5jbG9zZShmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbmFsbHkge1xyXG4gICAgICAgICAgICB0aGlzLl9leWVzLmFib3J0SWZOb3RDbG9zZWQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fZXllcyA9IG51bGw7XHJcbiAgICAgICAgc3VwZXIuZGlzcG9zZSgpO1xyXG5cclxuICAgICAgICByZXR1cm4gcmVzdWx0cztcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgUHJlZm9ybSB2aXN1YWwgdmFsaWRhdGlvbiBmb3IgYSBjZXJ0YWluIHRhcmdldC5cclxuICAgICAqIEBmdW5jdGlvbiBjaGVja1xyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBBIG5hbWUgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBtYXRjaC5cclxuICAgICAqIEBwYXJhbSB7VGFyZ2V0fSBbdGFyZ2V0XSAtIEFuIG9wdGlvbmFsIHRhcmdldCBpbnN0YW5jZSB3aGljaCBkZXNjcmliZXMgd2hldGhlciB3ZSB3YW50IGEgd2luZG93L3JlZ2lvbi9mcmFtZS5cclxuICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IEEgcHJvbWlzZSB3aGljaCBpcyByZXNvbHZlZCB3aGVuIHRoZSB2YWxpZGF0aW9uIGlzIGZpbmlzaGVkLlxyXG4gICAgICovXHJcbiAgICBhc3luYyBjaGVjayhuYW1lLCB0YXJnZXQgPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9leWVzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgVGFyZ2V0ID0gcmVxdWlyZSgnQGFwcGxpdG9vbHMvZXllcy13ZWJkcml2ZXJpbycpLlRhcmdldDtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSAgYXdhaXQgdGhpcy5fZXllcy5jaGVjayhuYW1lLCB0YXJnZXQgfHwgVGFyZ2V0LndpbmRvdygpLmZ1bGx5KCkpO1xyXG4gICAgICAgIGlmIChyZXN1bHQuX2FzRXhwZWN0ZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuQVNTRVJUX0VSUk9SLCBudWxsKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFRha2VzIGEgc25hcHNob3Qgb2YgdGhlIGFwcGxpY2F0aW9uIHVuZGVyIHRlc3QgYW5kIG1hdGNoZXMgaXQgd2l0aFxyXG4gICAgICogdGhlIGV4cGVjdGVkIG91dHB1dC5cclxuICAgICAqIEBmdW5jdGlvbiBjaGVja1dpbmRvd1xyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtuYW1lPV0gLSBBbiBvcHRpb25hbCB0YWcgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBzbmFwc2hvdC5cclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbWF0Y2hUaW1lb3V0PS0xXSAtIFRoZSBhbW91bnQgb2YgdGltZSB0byByZXRyeSBtYXRjaGluZyAoTWlsbGlzZWNvbmRzKS5cclxuICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IEEgcHJvbWlzZSB3aGljaCBpcyByZXNvbHZlZCB3aGVuIHRoZSB2YWxpZGF0aW9uIGlzIGZpbmlzaGVkLlxyXG4gICAgICovXHJcbiAgICBhc3luYyBjaGVja1dpbmRvdyhuYW1lLCBtYXRjaFRpbWVvdXQpIHtcclxuICAgICAgICBpZiAoIXRoaXMuX2V5ZXMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5fZHJpdmVyLmNhbGwoYXN5bmMoKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLl9leWVzLmNoZWNrV2luZG93KG5hbWUsIG1hdGNoVGltZW91dCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQuYXNFeHBlY3RlZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5BU1NFUlRfRVJST1IsIG51bGwpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
189
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1leWVzLmpzIl0sIm5hbWVzIjpbIkRFRkFVTFRfVklFV1BPUlQiLCJ3aWR0aCIsImhlaWdodCIsIk1PRFVMRV9OQU1FIiwiQXBwbGl0b29sc01vZHVsZSIsIk94eWdlbk1vZHVsZSIsImNvbnN0cnVjdG9yIiwib3B0aW9ucyIsImNvbnRleHQiLCJycyIsImxvZ2dlciIsIm1vZHVsZXMiLCJzZXJ2aWNlcyIsIl9leWVzIiwibmFtZSIsImluaXQiLCJtb2R1bGUiLCJhcGlLZXkiLCJfZXllc0NvbmZpZyIsImFwcGxpdG9vbHNPcHRzIiwiTW9kdWxlRXJyb3IiLCJfdmlld3BvcnQiLCJPYmplY3QiLCJhc3NpZ24iLCJ2aWV3cG9ydCIsIl9hcGlLZXkiLCJhcHBsaXRvb2xzS2V5Iiwia2V5IiwicHJvY2VzcyIsImVudiIsIkFQUExJVE9PTFNfS0VZIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZ2V0RHJpdmVyIiwiZHJpdmVyIiwiX2RyaXZlciIsIkV5ZXMiLCJyZXF1aXJlIiwic2V0QXBpS2V5IiwiYXBwTmFtZSIsInRlc3ROYW1lIiwib3BlbiIsImUiLCJtZXNzYWdlIiwiZGlzcG9zZSIsImlzSW5pdGlhbGl6ZWQiLCJyZXN1bHRzIiwiY2xvc2UiLCJhYm9ydElmTm90Q2xvc2VkIiwiY2hlY2siLCJ0YXJnZXQiLCJUYXJnZXQiLCJyZXN1bHQiLCJ3aW5kb3ciLCJmdWxseSIsIl9hc0V4cGVjdGVkIiwiT3hFcnJvciIsImVyckhlbHBlciIsImVycm9yQ29kZSIsIkFTU0VSVF9FUlJPUiIsImNoZWNrV2luZG93IiwibWF0Y2hUaW1lb3V0IiwiYXNFeHBlY3RlZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBY0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7QUFqQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQU9BLE1BQU1BLGdCQUFn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LENBQXdDYyxNQUF2RDs7QUFDQSxVQUFNQyxNQUFNLEdBQUksTUFBTSxLQUFLeEMsS0FBTCxDQUFXcUMsS0FBWCxDQUFpQnBDLElBQWpCLEVBQXVCcUMsTUFBTSxJQUFJQyxNQUFNLENBQUNFLE1BQVAsR0FBZ0JDLEtBQWhCLEVBQWpDLENBQXRCOztBQUNBLFFBQUlGLE1BQU0sQ0FBQ0csV0FBWCxFQUF3QjtBQUNwQixhQUFPLElBQVA7QUFDSDs7QUFDRCxVQUFNLElBQUlDLG9CQUFKLENBQVlDLGdCQUFVQyxTQUFWLENBQW9CQyxZQUFoQyxFQUE4QyxJQUE5QyxDQUFOO0FBQ0g7QUFFRDtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDcUIsUUFBWEMsV0FBVyxDQUFDL0MsSUFBRCxFQUFPZ0QsWUFBUCxFQUFxQjtBQUNsQyxRQUFJLENBQUMsS0FBS2pELEtBQVYsRUFBaUI7QUFDYixhQUFPLEtBQVA7QUFDSDs7QUFFRCxVQUFNd0MsTUFBTSxHQUFHLE1BQU0sS0FBS2pCLE9BQUwsQ0FBYUgsSUFBYixDQUFrQixZQUFXO0FBQzlDLGFBQU8sTUFBTSxLQUFLcEIsS0FBTCxDQUFXZ0QsV0FBWCxDQUF1Qi9DLElBQXZCLEVBQTZCZ0QsWUFBN0IsQ0FBYjtBQUNILEtBRm9CLENBQXJCOztBQUdBLFFBQUlULE1BQU0sSUFBSUEsTUFBTSxDQUFDVSxVQUFyQixFQUFpQztBQUM3QixhQUFPLElBQVA7QUFDSDs7QUFDRCxVQUFNLElBQUlOLG9CQUFKLENBQVlDLGdCQUFVQyxTQUFWLENBQW9CQyxZQUFoQyxFQUE4QyxJQUE5QyxDQUFOO0FBQ0g7O0FBNUhzRCIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKi9cblxuLyoqXG4gKiBAbmFtZSBleWVzXG4gKiBAZGVzY3JpcHRpb24gUHJvdmlkZXMgYWNjZXNzIHRvIEFwcGxpdG9vbHMgRXllcyBzZXJ2aWNlLlxuICovXG5cbmltcG9ydCBPeHlnZW5Nb2R1bGUgZnJvbSAnLi4vY29yZS9PeHlnZW5Nb2R1bGUnO1xuaW1wb3J0IE1vZHVsZUVycm9yIGZyb20gJy4uL2Vycm9ycy9Nb2R1bGVFcnJvcic7XG5pbXBvcnQgT3hFcnJvciBmcm9tICcuLi9lcnJvcnMvT3h5Z2VuRXJyb3InO1xuaW1wb3J0IGVyckhlbHBlciBmcm9tICcuLi9lcnJvcnMvaGVscGVyJztcblxuY29uc3QgREVGQVVMVF9WSUVXUE9SVCA9IHtcbiAgICB3aWR0aDogMTQ0MCxcbiAgICBoZWlnaHQ6IDkwMFxufTtcbmNvbnN0IE1PRFVMRV9OQU1FID0gJ2V5ZXMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBcHBsaXRvb2xzTW9kdWxlIGV4dGVuZHMgT3h5Z2VuTW9kdWxlIHtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zLCBjb250ZXh0LCBycywgbG9nZ2VyLCBtb2R1bGVzLCBzZXJ2aWNlcykge1xuICAgICAgICBzdXBlcihvcHRpb25zLCBjb250ZXh0LCBycywgbG9nZ2VyLCBtb2R1bGVzLCBzZXJ2aWNlcyk7XG4gICAgICAgIC8vIHRoaXMgbW9kdWxlIGRvZXNuJ3QgcmVxdWlyZSBjYWxsaW5nIGluaXQoKSBtZXRob2RcbiAgICAgICAgdGhpcy5fZXllcyA9IG51bGw7XG4gICAgfVxuICAgIGdldCBuYW1lKCkge1xuICAgICAgICByZXR1cm4gTU9EVUxFX05BTUU7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBzdW1tYXJ5IEluaXRpYWxpemVzIEFwcGxpdG9vbHMgRXllcyBzZXNzaW9uLlxuICAgICAqIEBmdW5jdGlvbiBpbml0XG4gICAgICogQHBhcmFtIHtzdHJpbmd8b2JqZWN0fSBtb2R1bGUgLSBBIG1vZHVsZSBuYW1lIG9yIGEgcmVmZXJlbmNlIHRvIHRoZSBtb2RvZHVsZSB0byBiZSBhc3NvY2lhdGVkIHdpdGggRXllcyBjdXJyZW50IHNlc3Npb24uXG4gICAgICogQHBhcmFtIHthcGlLZXl9IFthcGlLZXldIC0gQW4gb3B0aW9uYWwgQXBwbGl0b29scyBBUEkgS2V5LiBcbiAgICAgKiBJZiB0aGlzIHBhcmFtZXRlciBpcyBub3QgcHJvdmlkZWQsIEFQSSBLZXkgbXVzdCBiZSBzcGVjaWZpZWQgaW4gdGhlIHRlc3QgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgICAqL1xuICAgIGFzeW5jIGluaXQobW9kdWxlLCBhcGlLZXkgPSBudWxsKSB7XG4gICAgICAgIHRoaXMuX2V5ZXNDb25maWcgPSB0aGlzLm9wdGlvbnMuYXBwbGl0b29sc09wdHMgfHwge307XG4gICAgICAgIGlmICghdGhpcy5vcHRpb25zLmFwcGxpdG9vbHNPcHRzICYmICFhcGlLZXkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBNb2R1bGVFcnJvcignQXBwbGl0b29scyBzZXR0aW5ncyBhcmUgbWlzc2luZy4nKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl92aWV3cG9ydCA9IE9iamVjdC5hc3NpZ24oREVGQVVMVF9WSUVXUE9SVCwgdGhpcy5fZXllc0NvbmZpZy52aWV3cG9ydCB8fCB7fSk7XG4gICAgICAgIHRoaXMuX2FwaUtleSA9IGFwaUtleSB8fCB0aGlzLm9wdGlvbnMuYXBwbGl0b29sc0tleSB8fCB0aGlzLl9leWVzQ29uZmlnLmtleSB8fCBwcm9jZXNzLmVudi5BUFBMSVRPT0xTX0tFWSB8fCBudWxsO1xuXG4gICAgICAgIGlmICghdGhpcy5fYXBpS2V5KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgTW9kdWxlRXJyb3IoJ0FQSSBrZXkgaXMgbWlzc2luZy4gVG8gdXNlIEFwcGxpdG9vbHMgc2VydmljZSwgeW91IG11c3Qgc3BlY2lmeSBBcHBsaXRvb2xzIEFQSSBrZXkuJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBtb2R1bGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMubW9kdWxlcywgbW9kdWxlKSkge1xuICAgICAgICAgICAgICAgIG1vZHVsZSA9IHRoaXMubW9kdWxlc1ttb2R1bGVdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IE1vZHVsZUVycm9yKGBNb2R1bGUgbm90IGZvdW5kOiAke21vZHVsZX0uYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBtb2R1bGUuZ2V0RHJpdmVyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgTW9kdWxlRXJyb3IoYFRoZSBtb2R1bGUgXCIke21vZHVsZS5uYW1lfVwiIGRvZXMgbm90IGhhdmUgXCJnZXREcml2ZXJcIiBmdW5jdGlvbiBpbXBsZW1lbnRlZC5gKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkcml2ZXIgPSBtb2R1bGUuZ2V0RHJpdmVyKCk7XG4gICAgICAgIHRoaXMuX2RyaXZlciA9IGRyaXZlcjtcblxuICAgICAgICBjb25zdCBFeWVzID0gcmVxdWlyZSgnQGFwcGxpdG9vbHMvZXllcy13ZWJkcml2ZXJpbycpLkV5ZXM7XG4gICAgICAgIHRoaXMuX2V5ZXMgPSBuZXcgRXllcygpO1xuICAgICAgICB0aGlzLl9leWVzLnNldEFwaUtleSh0aGlzLl9hcGlLZXkpO1xuXG4gICAgICAgIGxldCBhcHBOYW1lID0gJ094eWdlbiBBcHAnO1xuICAgICAgICBsZXQgdGVzdE5hbWUgPSAnT3h5Z2VuIFRlc3QnO1xuXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYXBwTmFtZSAmJiB0eXBlb2YgdGhpcy5vcHRpb25zLmFwcE5hbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBhcHBOYW1lID0gdGhpcy5vcHRpb25zLmFwcE5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5uYW1lICYmIHR5cGVvZiB0aGlzLm9wdGlvbnMubmFtZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHRlc3ROYW1lID0gdGhpcy5vcHRpb25zLm5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IGRyaXZlci5jYWxsKCgpID0+IHRoaXMuX2V5ZXMub3Blbihkcml2ZXIsIGFwcE5hbWUsIHRlc3ROYW1lLCB0aGlzLl92aWV3cG9ydCkpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgTW9kdWxlRXJyb3IoYEZhaWxlZCB0byBpbml0aWFsaXplIFwiZXllc1wiIG1vZHVsZTogJHtlLm1lc3NhZ2V9YCk7XG4gICAgICAgIH1cbiAgICAgICAgc3VwZXIuaW5pdCgpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAc3VtbWFyeSBDbG9zZXMgQXBwbGl0b29scyBFeWVzIHNlc3Npb24sIHRlcm1pbmF0ZXMgdGhlIHNlcXVlbmNlIG9mIGNoZWNrcG9pbnRzLCBhbmQgdGhlbiB3YWl0cyBmb3IgYW5kIHJldHVybnMgdGhlIHRlc3QgcmVzdWx0cy5cbiAgICAgKiBAZnVuY3Rpb24gZGlzcG9zZVxuICAgICAqIEByZXR1cm4ge1Rlc3RSZXN1bHR9IEV5ZXMgdGVzdCByZXN1bHQuXG4gICAgICovXG4gICAgYXN5bmMgZGlzcG9zZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzSW5pdGlhbGl6ZWQgfHwgIXRoaXMuX2V5ZXMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCByZXN1bHRzID0gbnVsbDtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmVzdWx0cyA9IHRoaXMuX2V5ZXMuY2xvc2UoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy5fZXllcy5hYm9ydElmTm90Q2xvc2VkKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZXllcyA9IG51bGw7XG4gICAgICAgIHN1cGVyLmRpc3Bvc2UoKTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQHN1bW1hcnkgUHJlZm9ybSB2aXN1YWwgdmFsaWRhdGlvbiBmb3IgYSBjZXJ0YWluIHRhcmdldC5cbiAgICAgKiBAZnVuY3Rpb24gY2hlY2tcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIEEgbmFtZSB0byBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIG1hdGNoLlxuICAgICAqIEBwYXJhbSB7VGFyZ2V0fSBbdGFyZ2V0XSAtIEFuIG9wdGlvbmFsIHRhcmdldCBpbnN0YW5jZSB3aGljaCBkZXNjcmliZXMgd2hldGhlciB3ZSB3YW50IGEgd2luZG93L3JlZ2lvbi9mcmFtZS5cbiAgICAgKiBAcmV0dXJuIHtib29sZWFufSBBIHByb21pc2Ugd2hpY2ggaXMgcmVzb2x2ZWQgd2hlbiB0aGUgdmFsaWRhdGlvbiBpcyBmaW5pc2hlZC5cbiAgICAgKi9cbiAgICBhc3luYyBjaGVjayhuYW1lLCB0YXJnZXQgPSBudWxsKSB7XG4gICAgICAgIGlmICghdGhpcy5fZXllcykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IFRhcmdldCA9IHJlcXVpcmUoJ0BhcHBsaXRvb2xzL2V5ZXMtd2ViZHJpdmVyaW8nKS5UYXJnZXQ7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9ICBhd2FpdCB0aGlzLl9leWVzLmNoZWNrKG5hbWUsIHRhcmdldCB8fCBUYXJnZXQud2luZG93KCkuZnVsbHkoKSk7XG4gICAgICAgIGlmIChyZXN1bHQuX2FzRXhwZWN0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuQVNTRVJUX0VSUk9SLCBudWxsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAc3VtbWFyeSBUYWtlcyBhIHNuYXBzaG90IG9mIHRoZSBhcHBsaWNhdGlvbiB1bmRlciB0ZXN0IGFuZCBtYXRjaGVzIGl0IHdpdGhcbiAgICAgKiB0aGUgZXhwZWN0ZWQgb3V0cHV0LlxuICAgICAqIEBmdW5jdGlvbiBjaGVja1dpbmRvd1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbbmFtZT1dIC0gQW4gb3B0aW9uYWwgdGFnIHRvIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgc25hcHNob3QuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFttYXRjaFRpbWVvdXQ9LTFdIC0gVGhlIGFtb3VudCBvZiB0aW1lIHRvIHJldHJ5IG1hdGNoaW5nIChNaWxsaXNlY29uZHMpLlxuICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IEEgcHJvbWlzZSB3aGljaCBpcyByZXNvbHZlZCB3aGVuIHRoZSB2YWxpZGF0aW9uIGlzIGZpbmlzaGVkLlxuICAgICAqL1xuICAgIGFzeW5jIGNoZWNrV2luZG93KG5hbWUsIG1hdGNoVGltZW91dCkge1xuICAgICAgICBpZiAoIXRoaXMuX2V5ZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuX2RyaXZlci5jYWxsKGFzeW5jKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX2V5ZXMuY2hlY2tXaW5kb3cobmFtZSwgbWF0Y2hUaW1lb3V0KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LmFzRXhwZWN0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuQVNTRVJUX0VSUk9SLCBudWxsKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -8,25 +8,25 @@ exports.createBasicMessage = createBasicMessage;
|
|
|
8
8
|
|
|
9
9
|
require("source-map-support/register");
|
|
10
10
|
|
|
11
|
-
/**
|
|
12
|
-
* Returns a list of authentication methods
|
|
13
|
-
* @param response param
|
|
14
|
-
* @return an array of lower-case authentication methods
|
|
11
|
+
/**
|
|
12
|
+
* Returns a list of authentication methods
|
|
13
|
+
* @param response param
|
|
14
|
+
* @return an array of lower-case authentication methods
|
|
15
15
|
*/
|
|
16
16
|
function getAuthenticateMethods(response) {
|
|
17
17
|
var _response$headers, _response$headers$www;
|
|
18
18
|
|
|
19
19
|
return response === null || response === void 0 ? void 0 : (_response$headers = response.headers) === null || _response$headers === void 0 ? void 0 : (_response$headers$www = _response$headers['www-authenticate']) === null || _response$headers$www === void 0 ? void 0 : _response$headers$www.split(',').map(i => i.trim().toLowerCase());
|
|
20
20
|
}
|
|
21
|
-
/**
|
|
22
|
-
* Returns the basic auth header
|
|
23
|
-
* @param user the username
|
|
24
|
-
* @param pwd the password
|
|
25
|
-
* @return the basic auth header
|
|
21
|
+
/**
|
|
22
|
+
* Returns the basic auth header
|
|
23
|
+
* @param user the username
|
|
24
|
+
* @param pwd the password
|
|
25
|
+
* @return the basic auth header
|
|
26
26
|
*/
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
function createBasicMessage(user, pwd) {
|
|
30
30
|
return 'Basic ' + Buffer.from(user + ':' + pwd, 'utf8').toString('base64');
|
|
31
31
|
}
|
|
32
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1odHRwL250bG0tdXRpbC5qcyJdLCJuYW1lcyI6WyJnZXRBdXRoZW50aWNhdGVNZXRob2RzIiwicmVzcG9uc2UiLCJoZWFkZXJzIiwic3BsaXQiLCJtYXAiLCJpIiwidHJpbSIsInRvTG93ZXJDYXNlIiwiY3JlYXRlQmFzaWNNZXNzYWdlIiwidXNlciIsInB3ZCIsIkJ1ZmZlciIsImZyb20iLCJ0b1N0cmluZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTQSxzQkFBVCxDQUFnQ0MsUUFBaEMsRUFBMEM7QUFBQTs7QUFDN0MsU0FBT0EsUUFBUCxhQUFPQSxRQUFQLDRDQUFPQSxRQUFRLENBQUVDLE9BQWpCLCtFQUFPLGtCQUFvQixrQkFBcEIsQ0FBUCwwREFBTyxzQkFBeUNDLEtBQXpDLENBQStDLEdBQS9DLEVBQW9EQyxHQUFwRCxDQUF5REMsQ0FBRCxJQUFPQSxDQUFDLENBQUNDLElBQUYsR0FBU0MsV0FBVCxFQUEvRCxDQUFQO0FBQ0g7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLFNBQVNDLGtCQUFULENBQTRCQyxJQUE1QixFQUFrQ0MsR0FBbEMsRUFBdUM7QUFDMUMsU0FBTyxXQUFXQyxNQUFNLENBQUNDLElBQVAsQ0FBWUgsSUFBSSxHQUFHLEdBQVAsR0FBYUMsR0FBekIsRUFBOEIsTUFBOUIsRUFBc0NHLFFBQXRDLENBQStDLFFBQS9DLENBQWxCO0FBQ0giLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJldHVybnMgYSBsaXN0IG9mIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHNcbiAqIEBwYXJhbSByZXNwb25zZSBwYXJhbVxuICogQHJldHVybiBhbiBhcnJheSBvZiBsb3dlci1jYXNlIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEF1dGhlbnRpY2F0ZU1ldGhvZHMocmVzcG9uc2UpIHtcbiAgICByZXR1cm4gcmVzcG9uc2U/LmhlYWRlcnM/Llsnd3d3LWF1dGhlbnRpY2F0ZSddPy5zcGxpdCgnLCcpLm1hcCgoaSkgPT4gaS50cmltKCkudG9Mb3dlckNhc2UoKSk7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgYmFzaWMgYXV0aCBoZWFkZXJcbiAqIEBwYXJhbSB1c2VyIHRoZSB1c2VybmFtZVxuICogQHBhcmFtIHB3ZCB0aGUgcGFzc3dvcmRcbiAqIEByZXR1cm4gdGhlIGJhc2ljIGF1dGggaGVhZGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVCYXNpY01lc3NhZ2UodXNlciwgcHdkKSB7XG4gICAgcmV0dXJuICdCYXNpYyAnICsgQnVmZmVyLmZyb20odXNlciArICc6JyArIHB3ZCwgJ3V0ZjgnKS50b1N0cmluZygnYmFzZTY0Jyk7XG59Il19
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
require("source-map-support/register");
|
|
4
4
|
|
|
5
|
-
/**
|
|
6
|
-
* Copyright (c) 2013 Sam Decrock https://github.com/SamDecrock/
|
|
7
|
-
* All rights reserved.
|
|
8
|
-
*
|
|
9
|
-
* This source code is licensed under the MIT license found in the
|
|
10
|
-
* LICENSE file in the root directory of this source tree.
|
|
5
|
+
/**
|
|
6
|
+
* Copyright (c) 2013 Sam Decrock https://github.com/SamDecrock/
|
|
7
|
+
* All rights reserved.
|
|
8
|
+
*
|
|
9
|
+
* This source code is licensed under the MIT license found in the
|
|
10
|
+
* LICENSE file in the root directory of this source tree.
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
13
|
/* eslint-disable */
|
|
@@ -194,14 +194,14 @@ function createType3Message(msg2, options) {
|
|
|
194
194
|
var ntChallengeResponse = calc_resp(nt_password != null ? nt_password : create_NT_hashed_password_v1(password), nonce);
|
|
195
195
|
|
|
196
196
|
if (isNegotiateExtendedSecurity) {
|
|
197
|
-
/*
|
|
198
|
-
* NTLMv2 extended security is enabled. While this technically can mean NTLMv2 extended security with NTLMv1 protocol,
|
|
199
|
-
* servers that support extended security likely also support NTLMv2, so use NTLMv2.
|
|
200
|
-
* This is also how curl implements NTLMv2 "detection".
|
|
201
|
-
* By using NTLMv2, this supports communication with servers that forbid the use of NTLMv1 (e.g. via windows policies)
|
|
202
|
-
*
|
|
203
|
-
* However, the target info is needed to construct the NTLMv2 response so if it can't be negotiated,
|
|
204
|
-
* fall back to NTLMv1 with NTLMv2 extended security.
|
|
197
|
+
/*
|
|
198
|
+
* NTLMv2 extended security is enabled. While this technically can mean NTLMv2 extended security with NTLMv1 protocol,
|
|
199
|
+
* servers that support extended security likely also support NTLMv2, so use NTLMv2.
|
|
200
|
+
* This is also how curl implements NTLMv2 "detection".
|
|
201
|
+
* By using NTLMv2, this supports communication with servers that forbid the use of NTLMv1 (e.g. via windows policies)
|
|
202
|
+
*
|
|
203
|
+
* However, the target info is needed to construct the NTLMv2 response so if it can't be negotiated,
|
|
204
|
+
* fall back to NTLMv1 with NTLMv2 extended security.
|
|
205
205
|
*/
|
|
206
206
|
var pwhash = nt_password != null ? nt_password : create_NT_hashed_password_v1(password);
|
|
207
207
|
var clientChallenge = "";
|
|
@@ -511,4 +511,4 @@ exports.createType3Message = createType3Message;
|
|
|
511
511
|
exports.create_NT_hashed_password = create_NT_hashed_password_v1;
|
|
512
512
|
exports.create_LM_hashed_password = create_LM_hashed_password_v1;
|
|
513
513
|
/* eslint-enable */
|
|
514
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1odHRwL250bG0uanMiXSwibmFtZXMiOlsiY3J5cHRvIiwicmVxdWlyZSIsImpzbWQ0IiwiZGVzanMiLCJmbGFncyIsIk5UTE1fTmVnb3RpYXRlVW5pY29kZSIsIk5UTE1fTmVnb3RpYXRlT0VNIiwiTlRMTV9SZXF1ZXN0VGFyZ2V0IiwiTlRMTV9Vbmtub3duOSIsIk5UTE1fTmVnb3RpYXRlU2lnbiIsIk5UTE1fTmVnb3RpYXRlU2VhbCIsIk5UTE1fTmVnb3RpYXRlRGF0YWdyYW0iLCJOVExNX05lZ290aWF0ZUxhbk1hbmFnZXJLZXkiLCJOVExNX1Vua25vd244IiwiTlRMTV9OZWdvdGlhdGVOVExNIiwiTlRMTV9OZWdvdGlhdGVOVE9ubHkiLCJOVExNX0Fub255bW91cyIsIk5UTE1fTmVnb3RpYXRlT2VtRG9tYWluU3VwcGxpZWQiLCJOVExNX05lZ290aWF0ZU9lbVdvcmtzdGF0aW9uU3VwcGxpZWQiLCJOVExNX1Vua25vd242IiwiTlRMTV9OZWdvdGlhdGVBbHdheXNTaWduIiwiTlRMTV9UYXJnZXRUeXBlRG9tYWluIiwiTlRMTV9UYXJnZXRUeXBlU2VydmVyIiwiTlRMTV9UYXJnZXRUeXBlU2hhcmUiLCJOVExNX05lZ290aWF0ZUV4dGVuZGVkU2VjdXJpdHkiLCJOVExNX05lZ290aWF0ZUlkZW50aWZ5IiwiTlRMTV9Vbmtub3duNSIsIk5UTE1fUmVxdWVzdE5vbk5UU2Vzc2lvbktleSIsIk5UTE1fTmVnb3RpYXRlVGFyZ2V0SW5mbyIsIk5UTE1fVW5rbm93bjQiLCJOVExNX05lZ290aWF0ZVZlcnNpb24iLCJOVExNX1Vua25vd24zIiwiTlRMTV9Vbmtub3duMiIsIk5UTE1fVW5rbm93bjEiLCJOVExNX05lZ290aWF0ZTEyOCIsIk5UTE1fTmVnb3RpYXRlS2V5RXhjaGFuZ2UiLCJOVExNX05lZ290aWF0ZTU2IiwidHlwZWZsYWdzIiwiTlRMTV9UWVBFMV9GTEFHUyIsIk5UTE1fVFlQRTJfRkxBR1MiLCJjcmVhdGVUeXBlMU1lc3NhZ2UiLCJvcHRpb25zIiwiZG9tYWluIiwid29ya3N0YXRpb24iLCJlc2NhcGUiLCJ0b1VwcGVyQ2FzZSIsInByb3RvY29sIiwiQk9EWV9MRU5HVEgiLCJ0eXBlMWZsYWdzIiwicG9zIiwiYnVmIiwiQnVmZmVyIiwiYWxsb2MiLCJsZW5ndGgiLCJ3cml0ZSIsIndyaXRlVUludDMyTEUiLCJ3cml0ZVVJbnQxNkxFIiwid3JpdGVVSW50OCIsInRvU3RyaW5nIiwicGFyc2VUeXBlMk1lc3NhZ2UiLCJyYXdtc2ciLCJtYXRjaCIsIkVycm9yIiwiZnJvbSIsIm1zZyIsInNpZ25hdHVyZSIsInNsaWNlIiwidHlwZSIsInJlYWRJbnQxNkxFIiwidGFyZ2V0TmFtZUxlbiIsInRhcmdldE5hbWVNYXhMZW4iLCJ0YXJnZXROYW1lT2Zmc2V0IiwicmVhZEludDMyTEUiLCJ0YXJnZXROYW1lIiwibmVnb3RpYXRlRmxhZ3MiLCJzZXJ2ZXJDaGFsbGVuZ2UiLCJyZXNlcnZlZCIsInRhcmdldEluZm9MZW4iLCJ0YXJnZXRJbmZvTWF4TGVuIiwidGFyZ2V0SW5mb09mZnNldCIsInRhcmdldEluZm8iLCJjcmVhdGVUeXBlM01lc3NhZ2UiLCJtc2cyIiwidXNlcm5hbWUiLCJwYXNzd29yZCIsIm5vbmNlIiwibG1fcGFzc3dvcmQiLCJudF9wYXNzd29yZCIsImlzVW5pY29kZSIsImlzTmVnb3RpYXRlRXh0ZW5kZWRTZWN1cml0eSIsImRvbWFpbk5hbWUiLCJ3b3Jrc3RhdGlvbkJ5dGVzIiwiZG9tYWluTmFtZUJ5dGVzIiwidXNlcm5hbWVCeXRlcyIsImVuY3J5cHRlZFJhbmRvbVNlc3Npb25LZXlCeXRlcyIsImVuY3J5cHRlZFJhbmRvbVNlc3Npb25LZXkiLCJsbUNoYWxsZW5nZVJlc3BvbnNlIiwiY2FsY19yZXNwIiwiY3JlYXRlX0xNX2hhc2hlZF9wYXNzd29yZF92MSIsIm50Q2hhbGxlbmdlUmVzcG9uc2UiLCJjcmVhdGVfTlRfaGFzaGVkX3Bhc3N3b3JkX3YxIiwicHdoYXNoIiwiY2xpZW50Q2hhbGxlbmdlIiwiaSIsIlN0cmluZyIsImZyb21DaGFyQ29kZSIsIk1hdGgiLCJmbG9vciIsInJhbmRvbSIsImNsaWVudENoYWxsZW5nZUJ5dGVzIiwiY2hhbGxlbmdlcyIsImNhbGNfbnRsbXYyX3Jlc3AiLCJudGxtMnNyX2NhbGNfcmVzcCIsImZsYWdzVG9Xcml0ZSIsImNvcHkiLCJwYXNzd29yZEJ5dGVzIiwicGFzc3dvcmRCeXRlc1BhZGRlZCIsImZpbGwiLCJzb3VyY2VFbmQiLCJmaXJzdFBhcnQiLCJzZWNvbmRQYXJ0IiwiZW5jcnlwdCIsImtleSIsImluc2VydFplcm9zRXZlcnk3Qml0cyIsImRlcyIsIkRFUyIsImNyZWF0ZSIsIm1hZ2ljS2V5IiwiZW5jcnlwdGVkIiwidXBkYXRlIiwiZmlyc3RQYXJ0RW5jcnlwdGVkIiwic2Vjb25kUGFydEVuY3J5cHRlZCIsImNvbmNhdCIsImJpbmFyeUFycmF5IiwiYnl0ZXMyYmluYXJ5QXJyYXkiLCJuZXdCaW5hcnlBcnJheSIsInB1c2giLCJiaW5hcnlBcnJheTJieXRlcyIsImhleDJiaW5hcnkiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJoZXhTdHJpbmciLCJhcnJheSIsImhleGNoYXIiLCJjaGFyQXQiLCJiaW5hcnkyaGV4IiwiYnVmQXJyYXkiLCJiaW5TdHJpbmcxIiwiYmluU3RyaW5nMiIsImhleGNoYXIxIiwiaGV4Y2hhcjIiLCJtZDQiLCJkaWdlc3QiLCJwYXNzd29yZF9oYXNoIiwic2VydmVyX2NoYWxsZW5nZSIsInBhc3NIYXNoUGFkZGVkIiwicmVzQXJyYXkiLCJobWFjX21kNSIsImRhdGEiLCJobWFjIiwiY3JlYXRlSG1hYyIsInJlc3BvbnNlS2V5TlQiLCJtZDUiLCJjcmVhdGVIYXNoIiwic2VzcyIsInJlc3BvbnNlS2V5TlRMTSIsIk5UT1dGdjIiLCJsbVYyQ2hhbGxlbmdlUmVzcG9uc2UiLCJub3ciLCJEYXRlIiwidGltZXN0YW1wIiwiQmlnSW50IiwidGltZXN0YW1wQnVmZmVyIiwid3JpdGVCaWdVSW50NjRMRSIsInplcm8zMkJpdCIsInRlbXAiLCJwcm9vZlN0cmluZyIsIm50VjJDaGFsbGVuZ2VSZXNwb25zZSIsInVzZXIiLCJleHBvcnRzIiwiY3JlYXRlX05UX2hhc2hlZF9wYXNzd29yZCIsImNyZWF0ZV9MTV9oYXNoZWRfcGFzc3dvcmQiXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQTtBQUNBLElBQUlBLE1BQU0sR0FBR0MsT0FBTyxDQUFDLFFBQUQsQ0FBcEI7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHRCxPQUFPLENBQUMsUUFBRCxDQUFuQjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdGLE9BQU8sQ0FBQyxRQUFELENBQW5COztBQUVBLElBQUlHLEtBQUssR0FBRztBQUNYQyxFQUFBQSxxQkFBcUIsRUFBbUIsVUFEN0I7QUFFWEMsRUFBQUEsaUJBQWlCLEVBQXVCLFVBRjdCO0FBR1hDLEVBQUFBLGtCQUFrQixFQUFzQixVQUg3QjtBQUlYQyxFQUFBQSxhQUFhLEVBQTJCLFVBSjdCO0FBS1hDLEVBQUFBLGtCQUFrQixFQUFzQixVQUw3QjtBQU1YQyxFQUFBQSxrQkFBa0IsRUFBc0IsVUFON0I7QUFPWEMsRUFBQUEsc0JBQXNCLEVBQWtCLFVBUDdCO0FBUVhDLEVBQUFBLDJCQUEyQixFQUFhLFVBUjdCO0FBU1hDLEVBQUFBLGFBQWEsRUFBMkIsVUFUN0I7QUFVWEMsRUFBQUEsa0JBQWtCLEVBQXNCLFVBVjdCO0FBV1hDLEVBQUFBLG9CQUFvQixFQUFvQixVQVg3QjtBQVlYQyxFQUFBQSxjQUFjLEVBQTBCLFVBWjdCO0FBYVhDLEVBQUFBLCtCQUErQixFQUFTLFVBYjdCO0FBY1hDLEVBQUFBLG9DQUFvQyxFQUFJLFVBZDdCO0FBZVhDLEVBQUFBLGFBQWEsRUFBMkIsVUFmN0I7QUFnQlhDLEVBQUFBLHdCQUF3QixFQUFnQixVQWhCN0I7QUFpQlhDLEVBQUFBLHFCQUFxQixFQUFtQixVQWpCN0I7QUFrQlhDLEVBQUFBLHFCQUFxQixFQUFtQixVQWxCN0I7QUFtQlhDLEVBQUFB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bUJBQW1CLEVBQUUyRSxxQkFEZjtBQUVOeEUsSUFBQUEsbUJBQW1CLEVBQUVrRjtBQUZmLEdBQVA7QUFJSDs7QUFFRCxTQUFTWCxPQUFULENBQWlCckUsTUFBakIsRUFBeUJpRixJQUF6QixFQUErQjVJLE1BQS9CLEVBQXNDO0FBQ3JDLFNBQU91SCxRQUFRLENBQUM1RCxNQUFELEVBQVNsRCxNQUFNLENBQUNZLElBQVAsQ0FBWXVILElBQUksQ0FBQ3pJLFdBQUwsS0FBcUJILE1BQWpDLEVBQXlDLFNBQXpDLENBQVQsQ0FBZjtBQUNBOztBQUVENkksT0FBTyxDQUFDL0ksa0JBQVIsR0FBNkJBLGtCQUE3QjtBQUNBK0ksT0FBTyxDQUFDNUgsaUJBQVIsR0FBNEJBLGlCQUE1QjtBQUNBNEgsT0FBTyxDQUFDdEcsa0JBQVIsR0FBNkJBLGtCQUE3QjtBQUNBc0csT0FBTyxDQUFDQyx5QkFBUixHQUFvQ3BGLDRCQUFwQztBQUNBbUYsT0FBTyxDQUFDRSx5QkFBUixHQUFvQ3ZGLDRCQUFwQztBQUNBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIENvcHlyaWdodCAoYykgMjAxMyBTYW0gRGVjcm9jayBodHRwczovL2dpdGh1Yi5jb20vU2FtRGVjcm9jay9cclxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuICpcclxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXHJcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cclxuICovXHJcbi8qIGVzbGludC1kaXNhYmxlICovXHJcbnZhciBjcnlwdG8gPSByZXF1aXJlKCdjcnlwdG8nKTtcclxudmFyIGpzbWQ0ID0gcmVxdWlyZShcImpzLW1kNFwiKTtcclxudmFyIGRlc2pzID0gcmVxdWlyZShcImRlcy5qc1wiKTtcclxuXHJcbnZhciBmbGFncyA9IHtcclxuXHROVExNX05lZ290aWF0ZVVuaWNvZGUgICAgICAgICAgICAgICAgOiAgMHgwMDAwMDAwMSxcclxuXHROVExNX05lZ290aWF0ZU9FTSAgICAgICAgICAgICAgICAgICAgOiAgMHgwMDAwMDAwMixcclxuXHROVExNX1JlcXVlc3RUYXJnZXQgICAgICAgICAgICAgICAgICAgOiAgMHgwMDAwMDAwNCxcclxuXHROVExNX1Vua25vd245ICAgICAgICAgICAgICAgICAgICAgICAgOiAgMHgwMDAwMDAwOCxcclxuXHROVExNX05lZ290aWF0ZVNpZ24gICAgICAgICAgICAgICAgICAgOiAgMHgwMDAwMDAxMCxcclxuXHROVExNX05lZ290aWF0ZVNlYWwgICAgICAgICAgICAgICAgICAgOiAgMHgwMDAwMDAyMCxcclxuXHROVExNX05lZ290aWF0ZURhdGFncmFtICAgICAgICAgICAgICAgOiAgMHgwMDAwMDA0MCxcclxuXHROVExNX05lZ290aWF0ZUxhbk1hbmFnZXJLZXkgICAgICAgICAgOiAgMHgwMDAwMDA4MCxcclxuXHROVExNX1Vua25vd244ICAgICAgICAgICAgICAgICAgICAgICAgOiAgMHgwMDAwMDEwMCxcclxuXHROVExNX05lZ290aWF0ZU5UTE0gICAgICAgICAgICAgICAgICAgOiAgMHgwMDAwMDIwMCxcclxuXHROVExNX05lZ290aWF0ZU5UT25seSAgICAgICAgICAgICAgICAgOiAgMHgwMDAwMDQwMCxcclxuXHROVExNX0Fub255bW91cyAgICAgICAgICAgICAgICAgICAgICAgOiAgMHgwMDAwMDgwMCxcclxuXHROVExNX05lZ290aWF0ZU9lbURvbWFpblN1cHBsaWVkICAgICAgOiAgMHgwMDAwMTAwMCxcclxuXHROVExNX05lZ290aWF0ZU9lbVdvcmtzdGF0aW9uU3VwcGxpZWQgOiAgMHgwMDAwMjAwMCxcclxuXHROVExNX1Vua25vd242ICAgICAgICAgICAgICAgICAgICAgICAgOiAgMHgwMDAwNDAwMCxcclxuXHROVExNX05lZ290aWF0ZUFsd2F5c1NpZ24gICAgICAgICAgICAgOiAgMHgwMDAwODAwMCxcclxuXHROVExNX1RhcmdldFR5cGVEb21haW4gICAgICAgICAgICAgICAgOiAgMHgwMDAxMDAwMCxcclxuXHROVExNX1RhcmdldFR5cGVTZXJ2ZXIgICAgICAgICAgICAgICAgOiAgMHgwMDAyMDAwMCxcclxuXHROVExNX1RhcmdldFR5cGVTaGFyZSAgICAgICAgICAgICAgICAgOiAgMHgwMDA0MDAwMCxcclxuXHROVExNX05lZ290aWF0ZUV4dGVuZGVkU2VjdXJpdHkgICAgICAgOiAgMHgwMDA4MDAwMCxcclxuXHROVExNX05lZ290aWF0ZUlkZW50aWZ5ICAgICAgICAgICAgICAgOiAgMHgwMDEwMDAwMCxcclxuXHROVExNX1Vua25vd241ICAgICAgICAgICAgICAgICAgICAgICAgOiAgMHgwMDIwMDAwMCxcclxuXHROVExNX1JlcXVlc3ROb25OVFNlc3Npb25LZXkgICAgICAgICAgOiAgMHgwMDQwMDAwMCxcclxuXHROVExNX05lZ290aWF0ZVRhcmdldEluZm8gICAgICAgICAgICAgOiAgMHgwMDgwMDAwMCxcclxuXHROVExNX1Vua25vd240ICAgICAgICAgICAgICAgICAgICAgICAgOiAgMHgwMTAwMDAwMCxcclxuXHROVExNX05lZ290aWF0ZVZlcnNpb24gICAgICAgICAgICAgICAgOiAgMHgwMjAwMDAwMCxcclxuXHROVExNX1Vua25vd24zICAgICAgICAgICAgICAgICAgICAgICAgOiAgMHgwNDAwMDAwMCxcclxuXHROVExNX1Vua25vd24yICAgICAgICAgICAgICAgICAgICAgICAgOiAgMHgwODAwMDAwMCxcclxuXHROVExNX1Vua25vd24xICAgICAgICAgICAgICAgICAgICAgICAgOiAgMHgxMDAwMDAwMCxcclxuXHROVExNX05lZ290aWF0ZTEyOCAgICAgICAgICAgICAgICAgICAgOiAgMHgyMDAwMDAwMCxcclxuXHROVExNX05lZ290aWF0ZUtleUV4Y2hhbmdlICAgICAgICAgICAgOiAgMHg0MDAwMDAwMCxcclxuXHROVExNX05lZ290aWF0ZTU2ICAgICAgICAgICAgICAgICAgICAgOiAgMHg4MDAwMDAwMFxyXG59O1xyXG52YXIgdHlwZWZsYWdzID0ge1xyXG5cdE5UTE1fVFlQRTFfRkxBR1MgOiBcdCAgZmxhZ3MuTlRMTV9OZWdvdGlhdGVVbmljb2RlXHJcblx0XHRcdFx0XHRcdCsgZmxhZ3MuTlRMTV9OZWdvdGlhdGVPRU1cclxuXHRcdFx0XHRcdFx0KyBmbGFncy5OVExNX1JlcXVlc3RUYXJnZXRcclxuXHRcdFx0XHRcdFx0KyBmbGFncy5OVExNX05lZ290aWF0ZU5UTE1cclxuXHRcdFx0XHRcdFx0KyBmbGFncy5OVExNX05lZ290aWF0ZU9lbURvbWFpblN1cHBsaWVkXHJcblx0XHRcdFx0XHRcdCsgZmxhZ3MuTlRMTV9OZWdvdGlhdGVPZW1Xb3Jrc3RhdGlvblN1cHBsaWVkXHJcblx0XHRcdFx0XHRcdCsgZmxhZ3MuTlRMTV9OZWdvdGlhdGVBbHdheXNTaWduXHJcblx0XHRcdFx0XHRcdCsgZmxhZ3MuTlRMTV9OZWdvdGlhdGVFeHRlbmRlZFNlY3VyaXR5XHJcblx0XHRcdFx0XHRcdCsgZmxhZ3MuTlRMTV9OZWdvdGlhdGVWZXJzaW9uXHJcblx0XHRcdFx0XHRcdCsgZmxhZ3MuTlRMTV9OZWdvdGlhdGUxMjhcclxuXHRcdFx0XHRcdFx0KyBmbGFncy5OVExNX05lZ290aWF0ZTU2LFxyXG5cclxuXHROVExNX1RZUEUyX0ZMQUdTIDogICAgZmxhZ3MuTlRMTV9OZWdvdGlhdGVVbmljb2RlXHJcblx0XHRcdFx0XHRcdCsgZmxhZ3MuTlRMTV9SZXF1ZXN0VGFyZ2V0XHJcblx0XHRcdFx0XHRcdCsgZmxhZ3MuTlRMTV9OZWdvdGlhdGVOVExNXHJcblx0XHRcdFx0XHRcdCsgZmxhZ3MuTlRMTV9OZWdvdGlhdGVBbHdheXNTaWduXHJcblx0XHRcdFx0XHRcdCsgZmxhZ3MuTlRMTV9OZWdvdGlhdGVFeHRlbmRlZFNlY3VyaXR5XHJcblx0XHRcdFx0XHRcdCsgZmxhZ3MuTlRMTV9OZWdvdGlhdGVUYXJnZXRJbmZvXHJcblx0XHRcdFx0XHRcdCsgZmxhZ3MuTlRMTV9OZWdvdGlhdGVWZXJzaW9uXHJcblx0XHRcdFx0XHRcdCsgZmxhZ3MuTlRMTV9OZWdvdGlhdGUxMjhcclxuXHRcdFx0XHRcdFx0KyBmbGFncy5OVExNX05lZ290aWF0ZTU2XHJcbn07XHJcblxyXG5mdW5jdGlvbiBjcmVhdGVUeXBlMU1lc3NhZ2Uob3B0aW9ucyl7XHJcblx0aWYoIW9wdGlvbnMuZG9tYWluKSBvcHRpb25zLmRvbWFpbiA9ICcnO1xyXG5cdGlmKCFvcHRpb25zLndvcmtzdGF0aW9uKSBvcHRpb25zLndvcmtzdGF0aW9uID0gJyc7XHJcblxyXG5cdHZhciBkb21haW4gPSBlc2NhcGUob3B0aW9ucy5kb21haW4udG9VcHBlckNhc2UoKSk7XHJcblx0dmFyIHdvcmtzdGF0aW9uID0gZXNjYXBlKG9wdGlvbnMud29ya3N0YXRpb24udG9VcHBlckNhc2UoKSk7XHJcblx0dmFyIHByb3RvY29sID0gJ05UTE1TU1BcXDAnO1xyXG5cclxuXHR2YXIgQk9EWV9MRU5HVEggPSA0MDtcclxuXHJcblx0dmFyIHR5cGUxZmxhZ3MgPSB0eXBlZmxhZ3MuTlRMTV9UWVBFMV9GTEFHUztcclxuXHRpZighZG9tYWluIHx8IGRvbWFpbiA9PT0gJycpXHJcblx0XHR0eXBlMWZsYWdzID0gdHlwZTFmbGFncyAtIGZsYWdzLk5UTE1fTmVnb3RpYXRlT2VtRG9tYWluU3VwcGxpZWQ7XHJcblxyXG5cdHZhciBwb3MgPSAwO1xyXG5cdHZhciBidWYgPSBCdWZmZXIuYWxsb2MoQk9EWV9MRU5HVEggKyBkb21haW4ubGVuZ3RoICsgd29ya3N0YXRpb24ubGVuZ3RoKTtcclxuXHJcblxyXG5cdGJ1Zi53cml0ZShwcm90b2NvbCwgcG9zLCBwcm90b2NvbC5sZW5ndGgpOyBwb3MgKz0gcHJvdG9jb2wubGVuZ3RoOyAvLyBwcm90b2NvbFxyXG5cdGJ1Zi53cml0ZVVJbnQzMkxFKDEsIHBvcyk7IHBvcyArPSA0OyAgICAgICAgICAvLyB0eXBlIDFcclxuXHRidWYud3JpdGVVSW50MzJMRSh0eXBlMWZsYWdzLCBwb3MpOyBwb3MgKz0gNDsgLy8gVFlQRTEgZmxhZ1xyXG5cclxuXHRidWYud3JpdGVVSW50MTZMRShkb21haW4ubGVuZ3RoLCBwb3MpOyBwb3MgKz0gMjsgLy8gZG9tYWluIGxlbmd0aFxyXG5cdGJ1Zi53cml0ZVVJbnQxNkxFKGRvbWFpbi5sZW5ndGgsIHBvcyk7IHBvcyArPSAyOyAvLyBkb21haW4gbWF4IGxlbmd0aFxyXG5cdGJ1Zi53cml0ZVVJbnQzMkxFKEJPRFlfTEVOR1RIICsgd29ya3N0YXRpb24ubGVuZ3RoLCBwb3MpOyBwb3MgKz0gNDsgLy8gZG9tYWluIGJ1ZmZlciBvZmZzZXRcclxuXHJcblx0YnVmLndyaXRlVUludDE2TEUod29ya3N0YXRpb24ubGVuZ3RoLCBwb3MpOyBwb3MgKz0gMjsgLy8gd29ya3N0YXRpb24gbGVuZ3RoXHJcblx0YnVmLndyaXRlVUludDE2TEUod29ya3N0YXRpb24ubGVuZ3RoLCBwb3MpOyBwb3MgKz0gMjsgLy8gd29ya3N0YXRpb24gbWF4IGxlbmd0aFxyXG5cdGJ1Zi53cml0ZVVJbnQzMkxFKEJPRFlfTEVOR1RILCBwb3MpOyBwb3MgKz0gNDsgLy8gd29ya3N0YXRpb24gYnVmZmVyIG9mZnNldFxyXG5cclxuXHRidWYud3JpdGVVSW50OCg1LCBwb3MpOyBwb3MgKz0gMTsgICAgICAvL1Byb2R1Y3RNYWpvclZlcnNpb25cclxuXHRidWYud3JpdGVVSW50OCgxLCBwb3MpOyBwb3MgKz0gMTsgICAgICAvL1Byb2R1Y3RNaW5vclZlcnNpb25cclxuXHRidWYud3JpdGVVSW50MTZMRSgyNjAwLCBwb3MpOyBwb3MgKz0gMjsgLy9Qcm9kdWN0QnVpbGRcclxuXHJcblx0YnVmLndyaXRlVUludDgoMCAsIHBvcyk7IHBvcyArPSAxOyAvL1ZlcnNpb25SZXNlcnZlZDFcclxuXHRidWYud3JpdGVVSW50OCgwICwgcG9zKTsgcG9zICs9IDE7IC8vVmVyc2lvblJlc2VydmVkMlxyXG5cdGJ1Zi53cml0ZVVJbnQ4KDAgLCBwb3MpOyBwb3MgKz0gMTsgLy9WZXJzaW9uUmVzZXJ2ZWQzXHJcblx0YnVmLndyaXRlVUludDgoMTUsIHBvcyk7IHBvcyArPSAxOyAvL05UTE1SZXZpc2lvbkN1cnJlbnRcclxuXHJcblxyXG5cdC8vIGxlbmd0aCBjaGVja3MgaXMgdG8gZml4IGlzc3VlICM0NiBhbmQgcG9zc2libHkgIzU3XHJcblx0aWYod29ya3N0YXRpb24ubGVuZ3RoICE9MCkgYnVmLndyaXRlKHdvcmtzdGF0aW9uLCBwb3MsIHdvcmtzdGF0aW9uLmxlbmd0aCwgJ2FzY2lpJyk7IHBvcyArPSB3b3Jrc3RhdGlvbi5sZW5ndGg7IC8vIHdvcmtzdGF0aW9uIHN0cmluZ1xyXG5cdGlmKGRvbWFpbi5sZW5ndGggIT0wKSAgICAgIGJ1Zi53cml0ZShkb21haW4gICAgICwgcG9zLCBkb21haW4ubGVuZ3RoICAgICAsICdhc2NpaScpOyBwb3MgKz0gZG9tYWluLmxlbmd0aDsgLy8gZG9tYWluIHN0cmluZ1xyXG5cclxuXHRyZXR1cm4gJ05UTE0gJyArIGJ1Zi50b1N0cmluZygnYmFzZTY0Jyk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHBhcnNlVHlwZTJNZXNzYWdlKHJhd21zZyl7XHJcblx0dmFyIG1hdGNoID0gcmF3bXNnLm1hdGNoKC9OVExNICguKyk/Lyk7XHJcblx0aWYoIW1hdGNoIHx8ICFtYXRjaFsxXSkge1xyXG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiQ291bGRuJ3QgZmluZCBOVExNIGluIHRoZSBtZXNzYWdlIHR5cGUyIGNvbWluZyBmcm9tIHRoZSBzZXJ2ZXJcIik7XHJcblx0fVxyXG5cclxuXHR2YXIgYnVmID0gQnVmZmVyLmZyb20obWF0Y2hbMV0sICdiYXNlNjQnKTtcclxuXHJcblx0dmFyIG1zZyA9IHt9O1xyXG5cclxuXHRtc2cuc2lnbmF0dXJlID0gYnVmLnNsaWNlKDAsIDgpO1xyXG5cdG1zZy50eXBlID0gYnVmLnJlYWRJbnQxNkxFKDgpO1xyXG5cclxuXHRpZihtc2cudHlwZSAhPSAyKSB7XHJcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJTZXJ2ZXIgZGlkbid0IHJldHVybiBhIHR5cGUgMiBtZXNzYWdlXCIpO1xyXG5cdH1cclxuXHJcblx0bXNnLnRhcmdldE5hbWVMZW4gPSBidWYucmVhZEludDE2TEUoMTIpO1xyXG5cdG1zZy50YXJnZXROYW1lTWF4TGVuID0gYnVmLnJlYWRJbnQxNkxFKDE0KTtcclxuXHRtc2cudGFyZ2V0TmFtZU9mZnNldCA9IGJ1Zi5yZWFkSW50MzJMRSgxNik7XHJcblx0bXNnLnRhcmdldE5hbWUgID0gYnVmLnNsaWNlKG1zZy50YXJnZXROYW1lT2Zmc2V0LCBtc2cudGFyZ2V0TmFtZU9mZnNldCArIG1zZy50YXJnZXROYW1lTWF4TGVuKTtcclxuXHJcbiAgICBtc2cubmVnb3RpYXRlRmxhZ3MgPSBidWYucmVhZEludDMyTEUoMjApO1xyXG4gICAgbXNnLnNlcnZlckNoYWxsZW5nZSA9IGJ1Zi5zbGljZSgyNCwgMzIpO1xyXG4gICAgbXNnLnJlc2VydmVkID0gYnVmLnNsaWNlKDMyLCA0MCk7XHJcblxyXG4gICAgaWYobXNnLm5lZ290aWF0ZUZsYWdzICYgZmxhZ3MuTlRMTV9OZWdvdGlhdGVUYXJnZXRJbmZvKXtcclxuICAgIFx0bXNnLnRhcmdldEluZm9MZW4gPSBidWYucmVhZEludDE2TEUoNDApO1xyXG4gICAgXHRtc2cudGFyZ2V0SW5mb01heExlbiA9IGJ1Zi5yZWFkSW50MTZMRSg0Mik7XHJcbiAgICBcdG1zZy50YXJnZXRJbmZvT2Zmc2V0ID0gYnVmLnJlYWRJbnQzMkxFKDQ0KTtcclxuICAgIFx0bXNnLnRhcmdldEluZm8gPSBidWYuc2xpY2UobXNnLnRhcmdldEluZm9PZmZzZXQsIG1zZy50YXJnZXRJbmZvT2Zmc2V0ICsgbXNnLnRhcmdldEluZm9MZW4pO1xyXG4gICAgfVxyXG5cdHJldHVybiBtc2c7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNyZWF0ZVR5cGUzTWVzc2FnZShtc2cyLCBvcHRpb25zKXtcclxuXHRpZighb3B0aW9ucy5kb21haW4pIG9wdGlvbnMuZG9tYWluID0gJyc7XHJcblx0aWYoIW9wdGlvbnMud29ya3N0YXRpb24pIG9wdGlvbnMud29ya3N0YXRpb24gPSAnJztcclxuXHRpZighb3B0aW9ucy51c2VybmFtZSkgb3B0aW9ucy51c2VybmFtZSA9ICcnO1xyXG5cdGlmKCFvcHRpb25zLnBhc3N3b3JkKSBvcHRpb25zLnBhc3N3b3JkID0gJyc7XHJcblxyXG5cdHZhciBub25jZSA9IG1zZzIuc2VydmVyQ2hhbGxlbmdlO1xyXG5cdHZhciB1c2VybmFtZSA9IG9wdGlvbnMudXNlcm5hbWU7XHJcblx0dmFyIHBhc3N3b3JkID0gb3B0aW9ucy5wYXNzd29yZDtcclxuXHR2YXIgbG1fcGFzc3dvcmQgPSBvcHRpb25zLmxtX3Bhc3N3b3JkO1xyXG5cdHZhciBudF9wYXNzd29yZCA9IG9wdGlvbnMubnRfcGFzc3dvcmQ7XHJcblx0dmFyIG5lZ290aWF0ZUZsYWdzID0gbXNnMi5uZWdvdGlhdGVGbGFncztcclxuXHJcblx0dmFyIGlzVW5pY29kZSA9IG5lZ290aWF0ZUZsYWdzICYgZmxhZ3MuTlRMTV9OZWdvdGlhdGVVbmljb2RlO1xyXG5cdHZhciBpc05lZ290aWF0ZUV4dGVuZGVkU2VjdXJpdHkgPSBuZWdvdGlhdGVGbGFncyAmIGZsYWdzLk5UTE1fTmVnb3RpYXRlRXh0ZW5kZWRTZWN1cml0eTtcclxuXHJcblx0dmFyIEJPRFlfTEVOR1RIID0gNzI7XHJcblxyXG5cdHZhciBkb21haW5OYW1lID0gZXNjYXBlKG9wdGlvbnMuZG9tYWluLnRvVXBwZXJDYXNlKCkpO1xyXG5cdHZhciB3b3Jrc3RhdGlvbiA9IGVzY2FwZShvcHRpb25zLndvcmtzdGF0aW9uLnRvVXBwZXJDYXNlKCkpO1xyXG5cclxuXHR2YXIgd29ya3N0YXRpb25CeXRlcywgZG9tYWluTmFtZUJ5dGVzLCB1c2VybmFtZUJ5dGVzLCBlbmNyeXB0ZWRSYW5kb21TZXNzaW9uS2V5Qnl0ZXM7XHJcblxyXG5cdHZhciBlbmNyeXB0ZWRSYW5kb21TZXNzaW9uS2V5ID0gXCJcIjtcclxuXHRpZihpc1VuaWNvZGUpe1xyXG5cdFx0d29ya3N0YXRpb25CeXRlcyA9IEJ1ZmZlci5mcm9tKHdvcmtzdGF0aW9uLCAndXRmMTZsZScpO1xyXG5cdFx0ZG9tYWluTmFtZUJ5dGVzID0gQnVmZmVyLmZyb20oZG9tYWluTmFtZSwgJ3V0ZjE2bGUnKTtcclxuXHRcdHVzZXJuYW1lQnl0ZXMgPSBCdWZmZXIuZnJvbSh1c2VybmFtZSwgJ3V0ZjE2bGUnKTtcclxuXHRcdGVuY3J5cHRlZFJhbmRvbVNlc3Npb25LZXlCeXRlcyA9IEJ1ZmZlci5mcm9tKGVuY3J5cHRlZFJhbmRvbVNlc3Npb25LZXksICd1dGYxNmxlJyk7XHJcblx0fWVsc2V7XHJcblx0XHR3b3Jrc3RhdGlvbkJ5dGVzID0gQnVmZmVyLmZyb20od29ya3N0YXRpb24sICdhc2NpaScpO1xyXG5cdFx0ZG9tYWluTmFtZUJ5dGVzID0gQnVmZmVyLmZyb20oZG9tYWluTmFtZSwgJ2FzY2lpJyk7XHJcblx0XHR1c2VybmFtZUJ5dGVzID0gQnVmZmVyLmZyb20odXNlcm5hbWUsICdhc2NpaScpO1xyXG5cdFx0ZW5jcnlwdGVkUmFuZG9tU2Vzc2lvbktleUJ5dGVzID0gQnVmZmVyLmZyb20oZW5jcnlwdGVkUmFuZG9tU2Vzc2lvbktleSwgJ2FzY2lpJyk7XHJcblx0fVxyXG5cclxuXHR2YXIgbG1DaGFsbGVuZ2VSZXNwb25zZSA9IGNhbGNfcmVzcCgobG1fcGFzc3dvcmQhPW51bGwpP2xtX3Bhc3N3b3JkOmNyZWF0ZV9MTV9oYXNoZWRfcGFzc3dvcmRfdjEocGFzc3dvcmQpLCBub25jZSk7XHJcblx0dmFyIG50Q2hhbGxlbmdlUmVzcG9uc2UgPSBjYWxjX3Jlc3AoKG50X3Bhc3N3b3JkIT1udWxsKT9udF9wYXNzd29yZDpjcmVhdGVfTlRfaGFzaGVkX3Bhc3N3b3JkX3YxKHBhc3N3b3JkKSwgbm9uY2UpO1xyXG5cclxuXHRpZihpc05lZ290aWF0ZUV4dGVuZGVkU2VjdXJpdHkpe1xyXG5cdFx0LypcclxuXHRcdCAqIE5UTE12MiBleHRlbmRlZCBzZWN1cml0eSBpcyBlbmFibGVkLiBXaGlsZSB0aGlzIHRlY2huaWNhbGx5IGNhbiBtZWFuIE5UTE12MiBleHRlbmRlZCBzZWN1cml0eSB3aXRoIE5UTE12MSBwcm90b2NvbCxcclxuXHRcdCAqIHNlcnZlcnMgdGhhdCBzdXBwb3J0IGV4dGVuZGVkIHNlY3VyaXR5IGxpa2VseSBhbHNvIHN1cHBvcnQgTlRMTXYyLCBzbyB1c2UgTlRMTXYyLlxyXG5cdFx0ICogVGhpcyBpcyBhbHNvIGhvdyBjdXJsIGltcGxlbWVudHMgTlRMTXYyIFwiZGV0ZWN0aW9uXCIuXHJcblx0XHQgKiBCeSB1c2luZyBOVExNdjIsIHRoaXMgc3VwcG9ydHMgY29tbXVuaWNhdGlvbiB3aXRoIHNlcnZlcnMgdGhhdCBmb3JiaWQgdGhlIHVzZSBvZiBOVExNdjEgKGUuZy4gdmlhIHdpbmRvd3MgcG9saWNpZXMpXHJcblx0XHQgKlxyXG5cdFx0ICogSG93ZXZlciwgdGhlIHRhcmdldCBpbmZvIGlzIG5lZWRlZCB0byBjb25zdHJ1Y3QgdGhlIE5UTE12MiByZXNwb25zZSBzbyBpZiBpdCBjYW4ndCBiZSBuZWdvdGlhdGVkLFxyXG5cdFx0ICogZmFsbCBiYWNrIHRvIE5UTE12MSB3aXRoIE5UTE12MiBleHRlbmRlZCBzZWN1cml0eS5cclxuXHRcdCAqL1xyXG5cdFx0dmFyIHB3aGFzaCA9IChudF9wYXNzd29yZCE9bnVsbCk/bnRfcGFzc3dvcmQ6Y3JlYXRlX05UX2hhc2hlZF9wYXNzd29yZF92MShwYXNzd29yZCk7XHJcblx0XHR2YXIgY2xpZW50Q2hhbGxlbmdlID0gXCJcIjtcclxuXHQgXHRmb3IodmFyIGk9MDsgaSA8IDg7IGkrKyl7XHJcblx0IFx0XHRjbGllbnRDaGFsbGVuZ2UgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSggTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjI1NikgKTtcclxuXHQgICBcdH1cclxuXHQgICBcdHZhciBjbGllbnRDaGFsbGVuZ2VCeXRlcyA9IEJ1ZmZlci5mcm9tKGNsaWVudENoYWxsZW5nZSwgJ2FzY2lpJyk7XHJcblx0XHR2YXIgY2hhbGxlbmdlcyA9IG1zZzIudGFyZ2V0SW5mb1xyXG5cdFx0XHQ/IGNhbGNfbnRsbXYyX3Jlc3AocHdoYXNoLCB1c2VybmFtZSwgZG9tYWluTmFtZSwgbXNnMi50YXJnZXRJbmZvLCBub25jZSwgY2xpZW50Q2hhbGxlbmdlQnl0ZXMpXHJcblx0XHRcdDogbnRsbTJzcl9jYWxjX3Jlc3AocHdoYXNoLCBub25jZSwgY2xpZW50Q2hhbGxlbmdlQnl0ZXMpO1xyXG5cdCAgICBsbUNoYWxsZW5nZVJlc3BvbnNlID0gY2hhbGxlbmdlcy5sbUNoYWxsZW5nZVJlc3BvbnNlO1xyXG5cdCAgICBudENoYWxsZW5nZVJlc3BvbnNlID0gY2hhbGxlbmdlcy5udENoYWxsZW5nZVJlc3BvbnNlO1xyXG5cdH1cclxuXHJcblx0dmFyIHNpZ25hdHVyZSA9ICdOVExNU1NQXFwwJztcclxuXHJcblx0dmFyIHBvcyA9IDA7XHJcblx0dmFyIGJ1ZiA9IEJ1ZmZlci5hbGxvYyhCT0RZX0xFTkdUSCArIGRvbWFpbk5hbWVCeXRlcy5sZW5ndGggKyB1c2VybmFtZUJ5dGVzLmxlbmd0aCArIHdvcmtzdGF0aW9uQnl0ZXMubGVuZ3RoICsgbG1DaGFsbGVuZ2VSZXNwb25zZS5sZW5ndGggKyBudENoYWxsZW5nZVJlc3BvbnNlLmxlbmd0aCArIGVuY3J5cHRlZFJhbmRvbVNlc3Npb25LZXlCeXRlcy5sZW5ndGgpO1xyXG5cclxuXHRidWYud3JpdGUoc2lnbmF0dXJlLCBwb3MsIHNpZ25hdHVyZS5sZW5ndGgpOyBwb3MgKz0gc2lnbmF0dXJlLmxlbmd0aDtcclxuXHRidWYud3JpdGVVSW50MzJMRSgzLCBwb3MpOyBwb3MgKz0gNDsgICAgICAgICAgLy8gdHlwZSAxXHJcblxyXG5cdGJ1Zi53cml0ZVVJbnQxNkxFKGxtQ2hhbGxlbmdlUmVzcG9uc2UubGVuZ3RoLCBwb3MpOyBwb3MgKz0gMjsgLy8gTG1DaGFsbGVuZ2VSZXNwb25zZUxlblxyXG5cdGJ1Zi53cml0ZVVJbnQxNkxFKGxtQ2hhbGxlbmdlUmVzcG9uc2UubGVuZ3RoLCBwb3MpOyBwb3MgKz0gMjsgLy8gTG1DaGFsbGVuZ2VSZXNwb25zZU1heExlblxyXG5cdGJ1Zi53cml0ZVVJbnQzMkxFKEJPRFlfTEVOR1RIICsgZG9tYWluTmFtZUJ5dGVzLmxlbmd0aCArIHVzZXJuYW1lQnl0ZXMubGVuZ3RoICsgd29ya3N0YXRpb25CeXRlcy5sZW5ndGgsIHBvcyk7IHBvcyArPSA0OyAvLyBMbUNoYWxsZW5nZVJlc3BvbnNlT2Zmc2V0XHJcblxyXG5cdGJ1Zi53cml0ZVVJbnQxNkxFKG50Q2hhbGxlbmdlUmVzcG9uc2UubGVuZ3RoLCBwb3MpOyBwb3MgKz0gMjsgLy8gTnRDaGFsbGVuZ2VSZXNwb25zZUxlblxyXG5cdGJ1Zi53cml0ZVVJbnQxNkxFKG50Q2hhbGxlbmdlUmVzcG9uc2UubGVuZ3RoLCBwb3MpOyBwb3MgKz0gMjsgLy8gTnRDaGFsbGVuZ2VSZXNwb25zZU1heExlblxyXG5cdGJ1Zi53cml0ZVVJbnQzMkxFKEJPRFlfTEVOR1RIICsgZG9tYWluTmFtZUJ5dGVzLmxlbmd0aCArIHVzZXJuYW1lQnl0ZXMubGVuZ3RoICsgd29ya3N0YXRpb25CeXRlcy5sZW5ndGggKyBsbUNoYWxsZW5nZVJlc3BvbnNlLmxlbmd0aCwgcG9zKTsgcG9zICs9IDQ7IC8vIE50Q2hhbGxlbmdlUmVzcG9uc2VPZmZzZXRcclxuXHJcblx0YnVmLndyaXRlVUludDE2TEUoZG9tYWluTmFtZUJ5dGVzLmxlbmd0aCwgcG9zKTsgcG9zICs9IDI7IC8vIERvbWFpbk5hbWVMZW5cclxuXHRidWYud3JpdGVVSW50MTZMRShkb21haW5OYW1lQnl0ZXMubGVuZ3RoLCBwb3MpOyBwb3MgKz0gMjsgLy8gRG9tYWluTmFtZU1heExlblxyXG5cdGJ1Zi53cml0ZVVJbnQzMkxFKEJPRFlfTEVOR1RILCBwb3MpOyBwb3MgKz0gNDsgXHRcdFx0ICAvLyBEb21haW5OYW1lT2Zmc2V0XHJcblxyXG5cdGJ1Zi53cml0ZVVJbnQxNkxFKHVzZXJuYW1lQnl0ZXMubGVuZ3RoLCBwb3MpOyBwb3MgKz0gMjsgLy8gVXNlck5hbWVMZW5cclxuXHRidWYud3JpdGVVSW50MTZMRSh1c2VybmFtZUJ5dGVzLmxlbmd0aCwgcG9zKTsgcG9zICs9IDI7IC8vIFVzZXJOYW1lTWF4TGVuXHJcblx0YnVmLndyaXRlVUludDMyTEUoQk9EWV9MRU5HVEggKyBkb21haW5OYW1lQnl0ZXMubGVuZ3RoLCBwb3MpOyBwb3MgKz0gNDsgLy8gVXNlck5hbWVPZmZzZXRcclxuXHJcblx0YnVmLndyaXRlVUludDE2TEUod29ya3N0YXRpb25CeXRlcy5sZW5ndGgsIHBvcyk7IHBvcyArPSAyOyAvLyBXb3Jrc3RhdGlvbkxlblxyXG5cdGJ1Zi53cml0ZVVJbnQxNkxFKHdvcmtzdGF0aW9uQnl0ZXMubGVuZ3RoLCBwb3MpOyBwb3MgKz0gMjsgLy8gV29ya3N0YXRpb25NYXhMZW5cclxuXHRidWYud3JpdGVVSW50MzJMRShCT0RZX0xFTkdUSCArIGRvbWFpbk5hbWVCeXRlcy5sZW5ndGggKyB1c2VybmFtZUJ5dGVzLmxlbmd0aCwgcG9zKTsgcG9zICs9IDQ7IC8vIFdvcmtzdGF0aW9uT2Zmc2V0XHJcblxyXG5cdGJ1Zi53cml0ZVVJbnQxNkxFKGVuY3J5cHRlZFJhbmRvbVNlc3Npb25LZXlCeXRlcy5sZW5ndGgsIHBvcyk7IHBvcyArPSAyOyAvLyBFbmNyeXB0ZWRSYW5kb21TZXNzaW9uS2V5TGVuXHJcblx0YnVmLndyaXRlVUludDE2TEUoZW5jcnlwdGVkUmFuZG9tU2Vzc2lvbktleUJ5dGVzLmxlbmd0aCwgcG9zKTsgcG9zICs9IDI7IC8vIEVuY3J5cHRlZFJhbmRvbVNlc3Npb25LZXlNYXhMZW5cclxuXHRidWYud3JpdGVVSW50MzJMRShCT0RZX0xFTkdUSCArIGRvbWFpbk5hbWVCeXRlcy5sZW5ndGggKyB1c2VybmFtZUJ5dGVzLmxlbmd0aCArIHdvcmtzdGF0aW9uQnl0ZXMubGVuZ3RoICsgbG1DaGFsbGVuZ2VSZXNwb25zZS5sZW5ndGggKyBudENoYWxsZW5nZVJlc3BvbnNlLmxlbmd0aCwgcG9zKTsgcG9zICs9IDQ7IC8vIEVuY3J5cHRlZFJhbmRvbVNlc3Npb25LZXlPZmZzZXRcclxuXHJcblx0Ly8gRml4ICM5OFxyXG5cdHZhciBmbGFnc1RvV3JpdGUgPSBpc1VuaWNvZGVcclxuXHQgICAgPyB0eXBlZmxhZ3MuTlRMTV9UWVBFMl9GTEFHU1xyXG5cdCAgICA6IHR5cGVmbGFncy5OVExNX1RZUEUyX0ZMQUdTIC0gZmxhZ3MuTlRMTV9OZWdvdGlhdGVVbmljb2RlO1xyXG5cdGJ1Zi53cml0ZVVJbnQzMkxFKGZsYWdzVG9Xcml0ZSAsIHBvcyk7IHBvcyArPSA0OyAvLyBOZWdvdGlhdGVGbGFnc1xyXG5cclxuXHRidWYud3JpdGVVSW50OCg1LCBwb3MpOyBwb3MrKzsgLy8gUHJvZHVjdE1ham9yVmVyc2lvblxyXG5cdGJ1Zi53cml0ZVVJbnQ4KDEsIHBvcyk7IHBvcysrOyAvLyBQcm9kdWN0TWlub3JWZXJzaW9uXHJcblx0YnVmLndyaXRlVUludDE2TEUoMjYwMCwgcG9zKTsgcG9zICs9IDI7IC8vIFByb2R1Y3RCdWlsZFxyXG5cdGJ1Zi53cml0ZVVJbnQ4KDAsIHBvcyk7IHBvcysrOyAvLyBWZXJzaW9uUmVzZXJ2ZWQxXHJcblx0YnVmLndyaXRlVUludDgoMCwgcG9zKTsgcG9zKys7IC8vIFZlcnNpb25SZXNlcnZlZDJcclxuXHRidWYud3JpdGVVSW50OCgwLCBwb3MpOyBwb3MrKzsgLy8gVmVyc2lvblJlc2VydmVkM1xyXG5cdGJ1Zi53cml0ZVVJbnQ4KDE1LCBwb3MpOyBwb3MrKzsgLy8gTlRMTVJldmlzaW9uQ3VycmVudFxyXG5cclxuXHRkb21haW5OYW1lQnl0ZXMuY29weShidWYsIHBvcyk7IHBvcyArPSBkb21haW5OYW1lQnl0ZXMubGVuZ3RoO1xyXG5cdHVzZXJuYW1lQnl0ZXMuY29weShidWYsIHBvcyk7IHBvcyArPSB1c2VybmFtZUJ5dGVzLmxlbmd0aDtcclxuXHR3b3Jrc3RhdGlvbkJ5dGVzLmNvcHkoYnVmLCBwb3MpOyBwb3MgKz0gd29ya3N0YXRpb25CeXRlcy5sZW5ndGg7XHJcblx0bG1DaGFsbGVuZ2VSZXNwb25zZS5jb3B5KGJ1ZiwgcG9zKTsgcG9zICs9IGxtQ2hhbGxlbmdlUmVzcG9uc2UubGVuZ3RoO1xyXG5cdG50Q2hhbGxlbmdlUmVzcG9uc2UuY29weShidWYsIHBvcyk7IHBvcyArPSBudENoYWxsZW5nZVJlc3BvbnNlLmxlbmd0aDtcclxuXHRlbmNyeXB0ZWRSYW5kb21TZXNzaW9uS2V5Qnl0ZXMuY29weShidWYsIHBvcyk7IHBvcyArPSBlbmNyeXB0ZWRSYW5kb21TZXNzaW9uS2V5Qnl0ZXMubGVuZ3RoO1xyXG5cclxuXHRyZXR1cm4gJ05UTE0gJyArIGJ1Zi50b1N0cmluZygnYmFzZTY0Jyk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNyZWF0ZV9MTV9oYXNoZWRfcGFzc3dvcmRfdjEocGFzc3dvcmQpe1xyXG5cdC8vIGZpeCB0aGUgcGFzc3dvcmQgbGVuZ3RoIHRvIDE0IGJ5dGVzXHJcblx0cGFzc3dvcmQgPSBwYXNzd29yZC50b1VwcGVyQ2FzZSgpO1xyXG5cdHZhciBwYXNzd29yZEJ5dGVzID0gQnVmZmVyLmZyb20ocGFzc3dvcmQsICdhc2NpaScpO1xyXG5cclxuXHR2YXIgcGFzc3dvcmRCeXRlc1BhZGRlZCA9IEJ1ZmZlci5hbGxvYygxNCk7XHJcblx0cGFzc3dvcmRCeXRlc1BhZGRlZC5maWxsKFwiXFwwXCIpO1xyXG5cdHZhciBzb3VyY2VFbmQgPSAxNDtcclxuXHRpZihwYXNzd29yZEJ5dGVzLmxlbmd0aCA8IDE0KSBzb3VyY2VFbmQgPSBwYXNzd29yZEJ5dGVzLmxlbmd0aDtcclxuXHRwYXNzd29yZEJ5dGVzLmNvcHkocGFzc3dvcmRCeXRlc1BhZGRlZCwgMCwgMCwgc291cmNlRW5kKTtcclxuXHJcblx0Ly8gc3BsaXQgaW50byAyIHBhcnRzIG9mIDcgYnl0ZXM6XHJcblx0dmFyIGZpcnN0UGFydCA9IHBhc3N3b3JkQnl0ZXNQYWRkZWQuc2xpY2UoMCw3KTtcclxuXHR2YXIgc2Vjb25kUGFydCA9IHBhc3N3b3JkQnl0ZXNQYWRkZWQuc2xpY2UoNyk7XHJcblxyXG5cdGZ1bmN0aW9uIGVuY3J5cHQoYnVmKXtcclxuXHRcdHZhciBrZXkgPSBpbnNlcnRaZXJvc0V2ZXJ5N0JpdHMoYnVmKTtcclxuXHRcdHZhciBkZXMgPSBkZXNqcy5ERVMuY3JlYXRlKHt0eXBlOiAnZW5jcnlwdCcsIGtleToga2V5fSk7XHJcblx0XHR2YXIgbWFnaWNLZXkgPSBCdWZmZXIuZnJvbSgnS0dTIUAjJCUnLCAnYXNjaWknKTsgLy8gcGFnZSA1NyBpbiBbTVMtTkxNUF1cclxuXHRcdHZhciBlbmNyeXB0ZWQgPSBkZXMudXBkYXRlKG1hZ2ljS2V5KTtcclxuXHRcdHJldHVybiBCdWZmZXIuZnJvbShlbmNyeXB0ZWQpO1xyXG5cdH1cclxuXHJcblx0dmFyIGZpcnN0UGFydEVuY3J5cHRlZCA9IGVuY3J5cHQoZmlyc3RQYXJ0KTtcclxuXHR2YXIgc2Vjb25kUGFydEVuY3J5cHRlZCA9IGVuY3J5cHQoc2Vjb25kUGFydCk7XHJcblxyXG5cdHJldHVybiBCdWZmZXIuY29uY2F0KFtmaXJzdFBhcnRFbmNyeXB0ZWQsIHNlY29uZFBhcnRFbmNyeXB0ZWRdKTtcclxufVxyXG5cclxuZnVuY3Rpb24gaW5zZXJ0WmVyb3NFdmVyeTdCaXRzKGJ1Zil7XHJcblx0dmFyIGJpbmFyeUFycmF5ID0gYnl0ZXMyYmluYXJ5QXJyYXkoYnVmKTtcclxuXHR2YXIgbmV3QmluYXJ5QXJyYXkgPSBbXTtcclxuXHRmb3IodmFyIGk9MDsgaTxiaW5hcnlBcnJheS5sZW5ndGg7IGkrKyl7XHJcblx0XHRuZXdCaW5hcnlBcnJheS5wdXNoKGJpbmFyeUFycmF5W2ldKTtcclxuXHJcblx0XHRpZigoaSsxKSU3ID09PSAwKXtcclxuXHRcdFx0bmV3QmluYXJ5QXJyYXkucHVzaCgwKTtcclxuXHRcdH1cclxuXHR9XHJcblx0cmV0dXJuIGJpbmFyeUFycmF5MmJ5dGVzKG5ld0JpbmFyeUFycmF5KTtcclxufVxyXG5cclxuZnVuY3Rpb24gYnl0ZXMyYmluYXJ5QXJyYXkoYnVmKXtcclxuXHR2YXIgaGV4MmJpbmFyeSA9IHtcclxuXHRcdDA6IFswLDAsMCwwXSxcclxuXHRcdDE6IFswLDAsMCwxXSxcclxuXHRcdDI6IFswLDAsMSwwXSxcclxuXHRcdDM6IFswLDAsMSwxXSxcclxuXHRcdDQ6IFswLDEsMCwwXSxcclxuXHRcdDU6IFswLDEsMCwxXSxcclxuXHRcdDY6IFswLDEsMSwwXSxcclxuXHRcdDc6IFswLDEsMSwxXSxcclxuXHRcdDg6IFsxLDAsMCwwXSxcclxuXHRcdDk6IFsxLDAsMCwxXSxcclxuXHRcdEE6IFsxLDAsMSwwXSxcclxuXHRcdEI6IFsxLDAsMSwxXSxcclxuXHRcdEM6IFsxLDEsMCwwXSxcclxuXHRcdEQ6IFsxLDEsMCwxXSxcclxuXHRcdEU6IFsxLDEsMSwwXSxcclxuXHRcdEY6IFsxLDEsMSwxXVxyXG5cdH07XHJcblxyXG5cdHZhciBoZXhTdHJpbmcgPSBidWYudG9TdHJpbmcoJ2hleCcpLnRvVXBwZXJDYXNlKCk7XHJcblx0dmFyIGFycmF5ID0gW107XHJcblx0Zm9yKHZhciBpPTA7IGk8aGV4U3RyaW5nLmxlbmd0aDsgaSsrKXtcclxuICAgXHRcdHZhciBoZXhjaGFyID0gaGV4U3RyaW5nLmNoYXJBdChpKTtcclxuICAgXHRcdGFycmF5ID0gYXJyYXkuY29uY2F0KGhleDJiaW5hcnlbaGV4Y2hhcl0pO1xyXG4gICBcdH1cclxuICAgXHRyZXR1cm4gYXJyYXk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGJpbmFyeUFycmF5MmJ5dGVzKGFycmF5KXtcclxuXHR2YXIgYmluYXJ5MmhleCA9IHtcclxuXHRcdCcwMDAwJzogMCxcclxuXHRcdCcwMDAxJzogMSxcclxuXHRcdCcwMDEwJzogMixcclxuXHRcdCcwMDExJzogMyxcclxuXHRcdCcwMTAwJzogNCxcclxuXHRcdCcwMTAxJzogNSxcclxuXHRcdCcwMTEwJzogNixcclxuXHRcdCcwMTExJzogNyxcclxuXHRcdCcxMDAwJzogOCxcclxuXHRcdCcxMDAxJzogOSxcclxuXHRcdCcxMDEwJzogJ0EnLFxyXG5cdFx0JzEwMTEnOiAnQicsXHJcblx0XHQnMTEwMCc6ICdDJyxcclxuXHRcdCcxMTAxJzogJ0QnLFxyXG5cdFx0JzExMTAnOiAnRScsXHJcblx0XHQnMTExMSc6ICdGJ1xyXG5cdH07XHJcblxyXG4gXHR2YXIgYnVmQXJyYXkgPSBbXTtcclxuXHJcblx0Zm9yKHZhciBpPTA7IGk8YXJyYXkubGVuZ3RoOyBpICs9OCApe1xyXG5cdFx0aWYoKGkrNykgPiBhcnJheS5sZW5ndGgpXHJcblx0XHRcdGJyZWFrO1xyXG5cclxuXHRcdHZhciBiaW5TdHJpbmcxID0gJycgKyBhcnJheVtpXSArICcnICsgYXJyYXlbaSsxXSArICcnICsgYXJyYXlbaSsyXSArICcnICsgYXJyYXlbaSszXTtcclxuXHRcdHZhciBiaW5TdHJpbmcyID0gJycgKyBhcnJheVtpKzRdICsgJycgKyBhcnJheVtpKzVdICsgJycgKyBhcnJheVtpKzZdICsgJycgKyBhcnJheVtpKzddO1xyXG4gICBcdFx0dmFyIGhleGNoYXIxID0gYmluYXJ5MmhleFtiaW5TdHJpbmcxXTtcclxuICAgXHRcdHZhciBoZXhjaGFyMiA9IGJpbmFyeTJoZXhbYmluU3RyaW5nMl07XHJcblxyXG4gICBcdFx0dmFyIGJ1ZiA9IEJ1ZmZlci5mcm9tKGhleGNoYXIxICsgJycgKyBoZXhjaGFyMiwgJ2hleCcpO1xyXG4gICBcdFx0YnVmQXJyYXkucHVzaChidWYpO1xyXG4gICBcdH1cclxuXHJcbiAgIFx0cmV0dXJuIEJ1ZmZlci5jb25jYXQoYnVmQXJyYXkpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjcmVhdGVfTlRfaGFzaGVkX3Bhc3N3b3JkX3YxKHBhc3N3b3JkKXtcclxuXHR2YXIgYnVmID0gQnVmZmVyLmZyb20ocGFzc3dvcmQsICd1dGYxNmxlJyk7XHJcblx0dmFyIG1kNCA9IGpzbWQ0LmNyZWF0ZSgpO1xyXG5cdG1kNC51cGRhdGUoYnVmKTtcclxuXHRyZXR1cm4gQnVmZmVyLmZyb20obWQ0LmRpZ2VzdCgpKTtcclxufVxyXG5cclxuZnVuY3Rpb24gY2FsY19yZXNwKHBhc3N3b3JkX2hhc2gsIHNlcnZlcl9jaGFsbGVuZ2Upe1xyXG4gICAgLy8gcGFkZGluZyB3aXRoIHplcm9zIHRvIG1ha2UgdGhlIGhhc2ggMjEgYnl0ZXMgbG9uZ1xyXG4gICAgdmFyIHBhc3NIYXNoUGFkZGVkID0gQnVmZmVyLmFsbG9jKDIxKTtcclxuICAgIHBhc3NIYXNoUGFkZGVkLmZpbGwoXCJcXDBcIik7XHJcbiAgICBwYXNzd29yZF9oYXNoLmNvcHkocGFzc0hhc2hQYWRkZWQsIDAsIDAsIHBhc3N3b3JkX2hhc2gubGVuZ3RoKTtcclxuXHJcbiAgICB2YXIgcmVzQXJyYXkgPSBbXTtcclxuXHJcblx0dmFyIGRlcyA9IGRlc2pzLkRFUy5jcmVhdGUoe3R5cGU6ICdlbmNyeXB0Jywga2V5OiBpbnNlcnRaZXJvc0V2ZXJ5N0JpdHMocGFzc0hhc2hQYWRkZWQuc2xpY2UoMCw3KSl9KTtcclxuXHRyZXNBcnJheS5wdXNoKCBCdWZmZXIuZnJvbShkZXMudXBkYXRlKHNlcnZlcl9jaGFsbGVuZ2Uuc2xpY2UoMCw4KSkpICk7XHJcblxyXG5cdGRlcyA9IGRlc2pzLkRFUy5jcmVhdGUoe3R5cGU6ICdlbmNyeXB0Jywga2V5OiBpbnNlcnRaZXJvc0V2ZXJ5N0JpdHMocGFzc0hhc2hQYWRkZWQuc2xpY2UoNywxNCkpfSk7XHJcblx0cmVzQXJyYXkucHVzaCggQnVmZmVyLmZyb20oZGVzLnVwZGF0ZShzZXJ2ZXJfY2hhbGxlbmdlLnNsaWNlKDAsOCkpKSApO1xyXG5cclxuXHRkZXMgPSBkZXNqcy5ERVMuY3JlYXRlKHt0eXBlOiAnZW5jcnlwdCcsIGtleTogaW5zZXJ0WmVyb3NFdmVyeTdCaXRzKHBhc3NIYXNoUGFkZGVkLnNsaWNlKDE0LDIxKSl9KTtcclxuXHRyZXNBcnJheS5wdXNoKCBCdWZmZXIuZnJvbShkZXMudXBkYXRlKHNlcnZlcl9jaGFsbGVuZ2Uuc2xpY2UoMCw4KSkpICk7XHJcblxyXG4gICBcdHJldHVybiBCdWZmZXIuY29uY2F0KHJlc0FycmF5KTtcclxufVxyXG5cclxuZnVuY3Rpb24gaG1hY19tZDUoa2V5LCBkYXRhKXtcclxuXHR2YXIgaG1hYyA9IGNyeXB0by5jcmVhdGVIbWFjKCdtZDUnLCBrZXkpO1xyXG5cdGhtYWMudXBkYXRlKGRhdGEpO1xyXG5cdHJldHVybiBobWFjLmRpZ2VzdCgpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBudGxtMnNyX2NhbGNfcmVzcChyZXNwb25zZUtleU5ULCBzZXJ2ZXJDaGFsbGVuZ2UsIGNsaWVudENoYWxsZW5nZSl7XHJcblx0Ly8gcGFkZGluZyB3aXRoIHplcm9zIHRvIG1ha2UgdGhlIGhhc2ggMTYgYnl0ZXMgbG9uZ2VyXHJcbiAgICB2YXIgbG1DaGFsbGVuZ2VSZXNwb25zZSA9IEJ1ZmZlci5hbGxvYyhjbGllbnRDaGFsbGVuZ2UubGVuZ3RoICsgMTYpO1xyXG4gICAgbG1DaGFsbGVuZ2VSZXNwb25zZS5maWxsKFwiXFwwXCIpO1xyXG4gICAgY2xpZW50Q2hhbGxlbmdlLmNvcHkobG1DaGFsbGVuZ2VSZXNwb25zZSwgMCwgMCwgY2xpZW50Q2hhbGxlbmdlLmxlbmd0aCk7XHJcblxyXG4gICAgdmFyIGJ1ZiA9IEJ1ZmZlci5jb25jYXQoW3NlcnZlckNoYWxsZW5nZSwgY2xpZW50Q2hhbGxlbmdlXSk7XHJcbiAgICB2YXIgbWQ1ID0gY3J5cHRvLmNyZWF0ZUhhc2goJ21kNScpO1xyXG4gICAgbWQ1LnVwZGF0ZShidWYpO1xyXG4gICAgdmFyIHNlc3MgPSBtZDUuZGlnZXN0KCk7XHJcbiAgICB2YXIgbnRDaGFsbGVuZ2VSZXNwb25zZSA9IGNhbGNfcmVzcChyZXNwb25zZUtleU5ULCBzZXNzLnNsaWNlKDAsOCkpO1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICBcdGxtQ2hhbGxlbmdlUmVzcG9uc2U6IGxtQ2hhbGxlbmdlUmVzcG9uc2UsXHJcbiAgICBcdG50Q2hhbGxlbmdlUmVzcG9uc2U6IG50Q2hhbGxlbmdlUmVzcG9uc2VcclxuICAgIH07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNhbGNfbnRsbXYyX3Jlc3AocHdoYXNoLCB1c2VybmFtZSwgZG9tYWluLCB0YXJnZXRJbmZvLCBzZXJ2ZXJDaGFsbGVuZ2UsIGNsaWVudENoYWxsZW5nZSl7XHJcblx0dmFyIHJlc3BvbnNlS2V5TlRMTSA9IE5UT1dGdjIocHdoYXNoLCB1c2VybmFtZSwgZG9tYWluKTtcclxuXHJcblx0dmFyIGxtVjJDaGFsbGVuZ2VSZXNwb25zZSA9IEJ1ZmZlci5jb25jYXQoW1xyXG5cdFx0aG1hY19tZDUocmVzcG9uc2VLZXlOVExNLCBCdWZmZXIuY29uY2F0KFtzZXJ2ZXJDaGFsbGVuZ2UsIGNsaWVudENoYWxsZW5nZV0pKSxcclxuXHRcdGNsaWVudENoYWxsZW5nZVxyXG5cdF0pO1xyXG5cclxuXHQvLyAxMTY0NDQ3MzYwMDAwMCA9IGRpZmYgYmV0d2VlbiAxOTcwIGFuZCAxNjAxXHJcblx0dmFyIG5vdyA9IERhdGUubm93KCk7XHJcblx0dmFyIHRpbWVzdGFtcCA9ICgoQmlnSW50KG5vdykgKyBCaWdJbnQoMTE2NDQ0NzM2MDAwMDApKSAqIEJpZ0ludCgxMDAwMCkpOyAgLy8gd2UgbmVlZCBCaWdJbnQgdG8gYmUgYWJsZSB0byB3cml0ZSBpdCB0byBhIGJ1ZmZlclxyXG5cdHZhciB0aW1lc3RhbXBCdWZmZXIgPSBCdWZmZXIuYWxsb2MoOCk7XHJcblx0dGltZXN0YW1wQnVmZmVyLndyaXRlQmlnVUludDY0TEUodGltZXN0YW1wKTtcclxuXHJcblx0dmFyIHplcm8zMkJpdCA9IEJ1ZmZlci5hbGxvYyg0LCAwKVxyXG5cdHZhciB0ZW1wID0gQnVmZmVyLmNvbmNhdChbXHJcblx0XHQvLyBWZXJzaW9uXHJcblx0XHRCdWZmZXIuZnJvbShbMHgwMSwgMHgwMSwgMHgwMCwgMHgwMF0pLFxyXG5cdFx0emVybzMyQml0LFxyXG5cdFx0dGltZXN0YW1wQnVmZmVyLFxyXG5cdFx0Y2xpZW50Q2hhbGxlbmdlLFxyXG5cdFx0emVybzMyQml0LFxyXG5cdFx0dGFyZ2V0SW5mbyxcclxuXHRcdHplcm8zMkJpdFxyXG5cdF0pO1xyXG5cdHZhciBwcm9vZlN0cmluZyA9IGhtYWNfbWQ1KHJlc3BvbnNlS2V5TlRMTSwgQnVmZmVyLmNvbmNhdChbc2VydmVyQ2hhbGxlbmdlLCB0ZW1wXSkpO1xyXG5cdHZhciBudFYyQ2hhbGxlbmdlUmVzcG9uc2UgPSBCdWZmZXIuY29uY2F0KFtwcm9vZlN0cmluZywgdGVtcF0pO1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICBcdGxtQ2hhbGxlbmdlUmVzcG9uc2U6IGxtVjJDaGFsbGVuZ2VSZXNwb25zZSxcclxuICAgIFx0bnRDaGFsbGVuZ2VSZXNwb25zZTogbnRWMkNoYWxsZW5nZVJlc3BvbnNlXHJcbiAgICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBOVE9XRnYyKHB3aGFzaCwgdXNlciwgZG9tYWluKXtcclxuXHRyZXR1cm4gaG1hY19tZDUocHdoYXNoLCBCdWZmZXIuZnJvbSh1c2VyLnRvVXBwZXJDYXNlKCkgKyBkb21haW4sICd1dGYxNmxlJykpO1xyXG59XHJcblxyXG5leHBvcnRzLmNyZWF0ZVR5cGUxTWVzc2FnZSA9IGNyZWF0ZVR5cGUxTWVzc2FnZTtcclxuZXhwb3J0cy5wYXJzZVR5cGUyTWVzc2FnZSA9IHBhcnNlVHlwZTJNZXNzYWdlO1xyXG5leHBvcnRzLmNyZWF0ZVR5cGUzTWVzc2FnZSA9IGNyZWF0ZVR5cGUzTWVzc2FnZTtcclxuZXhwb3J0cy5jcmVhdGVfTlRfaGFzaGVkX3Bhc3N3b3JkID0gY3JlYXRlX05UX2hhc2hlZF9wYXNzd29yZF92MTtcclxuZXhwb3J0cy5jcmVhdGVfTE1faGFzaGVkX3Bhc3N3b3JkID0gY3JlYXRlX0xNX2hhc2hlZF9wYXNzd29yZF92MTtcclxuLyogZXNsaW50LWVuYWJsZSAqL1xyXG4iXX0=
|
|
514
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1odHRwL250bG0uanMiXSwibmFtZXMiOlsiY3J5cHRvIiwicmVxdWlyZSIsImpzbWQ0IiwiZGVzanMiLCJmbGFncyIsIk5UTE1fTmVnb3RpYXRlVW5pY29kZSIsIk5UTE1fTmVnb3RpYXRlT0VNIiwiTlRMTV9SZXF1ZXN0VGFyZ2V0IiwiTlRMTV9Vbmtub3duOSIsIk5UTE1fTmVnb3RpYXRlU2lnbiIsIk5UTE1fTmVnb3RpYXRlU2VhbCIsIk5UTE1fTmVnb3RpYXRlRGF0YWdyYW0iLCJOVExNX05lZ290aWF0ZUxhbk1hbmFnZXJLZXkiLCJOVExNX1Vua25vd244IiwiTlRMTV9OZWdvdGlhdGVOVExNIiwiTlRMTV9OZWdvdGlhdGVOVE9ubHkiLCJOVExNX0Fub255bW91cyIsIk5UTE1fTmVnb3RpYXRlT2VtRG9tYWluU3VwcGxpZWQiLCJOVExNX05lZ290aWF0ZU9lbVdvcmtzdGF0aW9uU3VwcGxpZWQiLCJOVExNX1Vua25vd242IiwiTlRMTV9OZWdvdGlhdGVBbHdheXNTaWduIiwiTlRMTV9UYXJnZXRUeXBlRG9tYWluIiwiTlRMTV9UYXJnZXRUeXBlU2VydmVyIiwiTlRMTV9UYXJnZXRUeXBlU2hhcmUiLCJOVExNX05lZ290aWF0ZUV4dGVuZGVkU2VjdXJpdHkiLCJOVExNX05lZ290aWF0ZUlkZW50aWZ5IiwiTlRMTV9Vbmtub3duNSIsIk5UTE1fUmVxdWVzdE5vbk5UU2Vzc2lvbktleSIsIk5UTE1fTmVnb3RpYXRlVGFyZ2V0SW5mbyIsIk5UTE1fVW5rbm93bjQiLCJOVExNX05lZ290aWF0ZVZlcnNpb24iLCJOVExNX1Vua25vd24zIiwiTlRMTV9Vbmtub3duMiIsIk5UTE1fVW5rbm93bjEiLCJOVExNX05lZ290aWF0ZTEyOCIsIk5UTE1fTmVnb3RpYXRlS2V5RXhjaGFuZ2UiLCJOVExNX05lZ290aWF0ZTU2IiwidHlwZWZsYWdzIiwiTlRMTV9UWVBFMV9GTEFHUyIsIk5UTE1fVFlQRTJfRkxBR1MiLCJjcmVhdGVUeXBlMU1lc3NhZ2UiLCJvcHRpb25zIiwiZG9tYWluIiwid29ya3N0YXRpb24iLCJlc2NhcGUiLCJ0b1VwcGVyQ2FzZSIsInByb3RvY29sIiwiQk9EWV9MRU5HVEgiLCJ0eXBlMWZsYWdzIiwicG9zIiwiYnVmIiwiQnVmZmVyIiwiYWxsb2MiLCJsZW5ndGgiLCJ3cml0ZSIsIndyaXRlVUludDMyTEUiLCJ3cml0ZVVJbnQxNkxFIiwid3JpdGVVSW50OCIsInRvU3RyaW5nIiwicGFyc2VUeXBlMk1lc3NhZ2UiLCJyYXdtc2ciLCJtYXRjaCIsIkVycm9yIiwiZnJvbSIsIm1zZyIsInNpZ25hdHVyZSIsInNsaWNlIiwidHlwZSIsInJlYWRJbnQxNkxFIiwidGFyZ2V0TmFtZUxlbiIsInRhcmdldE5hbWVNYXhMZW4iLCJ0YXJnZXROYW1lT2Zmc2V0IiwicmVhZEludDMyTEUiLCJ0YXJnZXROYW1lIiwibmVnb3RpYXRlRmxhZ3MiLCJzZXJ2ZXJDaGFsbGVuZ2UiLCJyZXNlcnZlZCIsInRhcmdldEluZm9MZW4iLCJ0YXJnZXRJbmZvTWF4TGVuIiwidGFyZ2V0SW5mb09mZnNldCIsInRhcmdldEluZm8iLCJjcmVhdGVUeXBlM01lc3NhZ2UiLCJtc2cyIiwidXNlcm5hbWUiLCJwYXNzd29yZCIsIm5vbmNlIiwibG1fcGFzc3dvcmQiLCJudF9wYXNzd29yZCIsImlzVW5pY29kZSIsImlzTmVnb3RpYXRlRXh0ZW5kZWRTZWN1cml0eSIsImRvbWFpbk5hbWUiLCJ3b3Jrc3RhdGlvbkJ5dGVzIiwiZG9tYWluTmFtZUJ5dGVzIiwidXNlcm5hbWVCeXRlcyIsImVuY3J5cHRlZFJhbmRvbVNlc3Npb25LZXlCeXRlcyIsImVuY3J5cHRlZFJhbmRvbVNlc3Npb25LZXkiLCJsbUNoYWxsZW5nZVJlc3BvbnNlIiwiY2FsY19yZXNwIiwiY3JlYXRlX0xNX2hhc2hlZF9wYXNzd29yZF92MSIsIm50Q2hhbGxlbmdlUmVzcG9uc2UiLCJjcmVhdGVfTlRfaGFzaGVkX3Bhc3N3b3JkX3YxIiwicHdoYXNoIiwiY2xpZW50Q2hhbGxlbmdlIiwiaSIsIlN0cmluZyIsImZyb21DaGFyQ29kZSIsIk1hdGgiLCJmbG9vciIsInJhbmRvbSIsImNsaWVudENoYWxsZW5nZUJ5dGVzIiwiY2hhbGxlbmdlcyIsImNhbGNfbnRsbXYyX3Jlc3AiLCJudGxtMnNyX2NhbGNfcmVzcCIsImZsYWdzVG9Xcml0ZSIsImNvcHkiLCJwYXNzd29yZEJ5dGVzIiwicGFzc3dvcmRCeXRlc1BhZGRlZCIsImZpbGwiLCJzb3VyY2VFbmQiLCJmaXJzdFBhcnQiLCJzZWNvbmRQYXJ0IiwiZW5jcnlwdCIsImtleSIsImluc2VydFplcm9zRXZlcnk3Qml0cyIsImRlcyIsIkRFUyIsImNyZWF0ZSIsIm1hZ2ljS2V5IiwiZW5jcnlwdGVkIiwidXBkYXRlIiwiZmlyc3RQYXJ0RW5jcnlwdGVkIiwic2Vjb25kUGFydEVuY3J5cHRlZCIsImNvbmNhdCIsImJpbmFyeUFycmF5IiwiYnl0ZXMyYmluYXJ5QXJyYXkiLCJuZXdCaW5hcnlBcnJheSIsInB1c2giLCJiaW5hcnlBcnJheTJieXRlcyIsImhleDJiaW5hcnkiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJoZXhTdHJpbmciLCJhcnJheSIsImhleGNoYXIiLCJjaGFyQXQiLCJiaW5hcnkyaGV4IiwiYnVmQXJyYXkiLCJiaW5TdHJpbmcxIiwiYmluU3RyaW5nMiIsImhleGNoYXIxIiwiaGV4Y2hhcjIiLCJtZDQiLCJkaWdlc3QiLCJwYXNzd29yZF9oYXNoIiwic2VydmVyX2NoYWxsZW5nZSIsInBhc3NIYXNoUGFkZGVkIiwicmVzQXJyYXkiLCJobWFjX21kNSIsImRhdGEiLCJobWFjIiwiY3JlYXRlSG1hYyIsInJlc3BvbnNlS2V5TlQiLCJtZDUiLCJjcmVhdGVIYXNoIiwic2VzcyIsInJlc3BvbnNlS2V5TlRMTSIsIk5UT1dGdjIiLCJsbVYyQ2hhbGxlbmdlUmVzcG9uc2UiLCJub3ciLCJEYXRlIiwidGltZXN0YW1wIiwiQmlnSW50IiwidGltZXN0YW1wQnVmZmVyIiwid3JpdGVCaWdVSW50NjRMRSIsInplcm8zMkJpdCIsInRlbXAiLCJwcm9vZlN0cmluZyIsIm50VjJDaGFsbGVuZ2VSZXNwb25zZSIsInVzZXIiLCJleHBvcnRzIiwiY3JlYXRlX05UX2hhc2hlZF9wYXNzd29yZCIsImNyZWF0ZV9MTV9oYXNoZWRfcGFzc3dvcmQiXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQTtBQUNBLElBQUlBLE1BQU0sR0FBR0MsT0FBTyxDQUFDLFFBQUQsQ0FBcEI7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHRCxPQUFPLENBQUMsUUFBRCxDQUFuQjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdGLE9BQU8sQ0FBQyxRQUFELENBQW5COztBQUVBLElBQUlHLEtBQUssR0FBRztBQUNYQyxFQUFBQSxxQkFBcUIsRUFBbUIsVUFEN0I7QUFFWEMsRUFBQUEsaUJBQWlCLEVBQXVCLFVBRjdCO0FBR1hDLEVBQUFBLGtCQUFrQixFQUFzQixVQUg3QjtBQUlYQyxFQUFBQSxhQUFhLEVBQTJCLFVBSjdCO0FBS1hDLEVBQUFBLGtCQUFrQixFQUFzQixVQUw3QjtBQU1YQyxFQUFBQSxrQkFBa0IsRUFBc0IsVUFON0I7QUFPWEMsRUFBQUEsc0JBQXNCLEVBQWtCLFVBUDdCO0FBUVhDLEVBQUFBLDJCQUEyQixFQUFhLFVBUjdCO0FBU1hDLEVBQUFBLGFBQWEsRUFBMkIsVUFUN0I7QUFVWEMsRUFBQUEsa0JBQWtCLEVBQXNCLFVBVjdCO0FBV1hDLEVBQUFBLG9CQUFvQixFQUFvQixVQVg3QjtBQVlYQyxFQUFBQSxjQUFjLEVBQTBCLFVBWjdCO0FBYVhDLEVBQUFBLCtCQUErQixFQUFTLFVBYjdCO0FBY1hDLEVBQUFBLG9DQUFvQyxFQUFJLFVBZDdCO0FBZVhDLEVBQUFBLGFBQWEsRUFBMkIsVUFmN0I7QUFnQlhDLEVBQUFBLHdCQUF3QixFQUFnQixVQWhCN0I7QUFpQlhDLEVBQUFBLHFCQUFxQixFQUFtQixVQWpCN0I7QUFrQlhDLEVBQUFBLHFCQUFxQixFQUFtQixVQWxCN0I7QUFtQlhDLEVBQUFB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bUJBQW1CLEVBQUUyRSxxQkFEZjtBQUVOeEUsSUFBQUEsbUJBQW1CLEVBQUVrRjtBQUZmLEdBQVA7QUFJSDs7QUFFRCxTQUFTWCxPQUFULENBQWlCckUsTUFBakIsRUFBeUJpRixJQUF6QixFQUErQjVJLE1BQS9CLEVBQXNDO0FBQ3JDLFNBQU91SCxRQUFRLENBQUM1RCxNQUFELEVBQVNsRCxNQUFNLENBQUNZLElBQVAsQ0FBWXVILElBQUksQ0FBQ3pJLFdBQUwsS0FBcUJILE1BQWpDLEVBQXlDLFNBQXpDLENBQVQsQ0FBZjtBQUNBOztBQUVENkksT0FBTyxDQUFDL0ksa0JBQVIsR0FBNkJBLGtCQUE3QjtBQUNBK0ksT0FBTyxDQUFDNUgsaUJBQVIsR0FBNEJBLGlCQUE1QjtBQUNBNEgsT0FBTyxDQUFDdEcsa0JBQVIsR0FBNkJBLGtCQUE3QjtBQUNBc0csT0FBTyxDQUFDQyx5QkFBUixHQUFvQ3BGLDRCQUFwQztBQUNBbUYsT0FBTyxDQUFDRSx5QkFBUixHQUFvQ3ZGLDRCQUFwQztBQUNBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMgU2FtIERlY3JvY2sgaHR0cHM6Ly9naXRodWIuY29tL1NhbURlY3JvY2svXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSAqL1xudmFyIGNyeXB0byA9IHJlcXVpcmUoJ2NyeXB0bycpO1xudmFyIGpzbWQ0ID0gcmVxdWlyZShcImpzLW1kNFwiKTtcbnZhciBkZXNqcyA9IHJlcXVpcmUoXCJkZXMuanNcIik7XG5cbnZhciBmbGFncyA9IHtcblx0TlRMTV9OZWdvdGlhdGVVbmljb2RlICAgICAgICAgICAgICAgIDogIDB4MDAwMDAwMDEsXG5cdE5UTE1fTmVnb3RpYXRlT0VNICAgICAgICAgICAgICAgICAgICA6ICAweDAwMDAwMDAyLFxuXHROVExNX1JlcXVlc3RUYXJnZXQgICAgICAgICAgICAgICAgICAgOiAgMHgwMDAwMDAwNCxcblx0TlRMTV9Vbmtub3duOSAgICAgICAgICAgICAgICAgICAgICAgIDogIDB4MDAwMDAwMDgsXG5cdE5UTE1fTmVnb3RpYXRlU2lnbiAgICAgICAgICAgICAgICAgICA6ICAweDAwMDAwMDEwLFxuXHROVExNX05lZ290aWF0ZVNlYWwgICAgICAgICAgICAgICAgICAgOiAgMHgwMDAwMDAyMCxcblx0TlRMTV9OZWdvdGlhdGVEYXRhZ3JhbSAgICAgICAgICAgICAgIDogIDB4MDAwMDAwNDAsXG5cdE5UTE1fTmVnb3RpYXRlTGFuTWFuYWdlcktleSAgICAgICAgICA6ICAweDAwMDAwMDgwLFxuXHROVExNX1Vua25vd244ICAgICAgICAgICAgICAgICAgICAgICAgOiAgMHgwMDAwMDEwMCxcblx0TlRMTV9OZWdvdGlhdGVOVExNICAgICAgICAgICAgICAgICAgIDogIDB4MDAwMDAyMDAsXG5cdE5UTE1fTmVnb3RpYXRlTlRPbmx5ICAgICAgICAgICAgICAgICA6ICAweDAwMDAwNDAwLFxuXHROVExNX0Fub255bW91cyAgICAgICAgICAgICAgICAgICAgICAgOiAgMHgwMDAwMDgwMCxcblx0TlRMTV9OZWdvdGlhdGVPZW1Eb21haW5TdXBwbGllZCAgICAgIDogIDB4MDAwMDEwMDAsXG5cdE5UTE1fTmVnb3RpYXRlT2VtV29ya3N0YXRpb25TdXBwbGllZCA6ICAweDAwMDAyMDAwLFxuXHROVExNX1Vua25vd242ICAgICAgICAgICAgICAgICAgICAgICAgOiAgMHgwMDAwNDAwMCxcblx0TlRMTV9OZWdvdGlhdGVBbHdheXNTaWduICAgICAgICAgICAgIDogIDB4MDAwMDgwMDAsXG5cdE5UTE1fVGFyZ2V0VHlwZURvbWFpbiAgICAgICAgICAgICAgICA6ICAweDAwMDEwMDAwLFxuXHROVExNX1RhcmdldFR5cGVTZXJ2ZXIgICAgICAgICAgICAgICAgOiAgMHgwMDAyMDAwMCxcblx0TlRMTV9UYXJnZXRUeXBlU2hhcmUgICAgICAgICAgICAgICAgIDogIDB4MDAwNDAwMDAsXG5cdE5UTE1fTmVnb3RpYXRlRXh0ZW5kZWRTZWN1cml0eSAgICAgICA6ICAweDAwMDgwMDAwLFxuXHROVExNX05lZ290aWF0ZUlkZW50aWZ5ICAgICAgICAgICAgICAgOiAgMHgwMDEwMDAwMCxcblx0TlRMTV9Vbmtub3duNSAgICAgICAgICAgICAgICAgICAgICAgIDogIDB4MDAyMDAwMDAsXG5cdE5UTE1fUmVxdWVzdE5vbk5UU2Vzc2lvbktleSAgICAgICAgICA6ICAweDAwNDAwMDAwLFxuXHROVExNX05lZ290aWF0ZVRhcmdldEluZm8gICAgICAgICAgICAgOiAgMHgwMDgwMDAwMCxcblx0TlRMTV9Vbmtub3duNCAgICAgICAgICAgICAgICAgICAgICAgIDogIDB4MDEwMDAwMDAsXG5cdE5UTE1fTmVnb3RpYXRlVmVyc2lvbiAgICAgICAgICAgICAgICA6ICAweDAyMDAwMDAwLFxuXHROVExNX1Vua25vd24zICAgICAgICAgICAgICAgICAgICAgICAgOiAgMHgwNDAwMDAwMCxcblx0TlRMTV9Vbmtub3duMiAgICAgICAgICAgICAgICAgICAgICAgIDogIDB4MDgwMDAwMDAsXG5cdE5UTE1fVW5rbm93bjEgICAgICAgICAgICAgICAgICAgICAgICA6ICAweDEwMDAwMDAwLFxuXHROVExNX05lZ290aWF0ZTEyOCAgICAgICAgICAgICAgICAgICAgOiAgMHgyMDAwMDAwMCxcblx0TlRMTV9OZWdvdGlhdGVLZXlFeGNoYW5nZSAgICAgICAgICAgIDogIDB4NDAwMDAwMDAsXG5cdE5UTE1fTmVnb3RpYXRlNTYgICAgICAgICAgICAgICAgICAgICA6ICAweDgwMDAwMDAwXG59O1xudmFyIHR5cGVmbGFncyA9IHtcblx0TlRMTV9UWVBFMV9GTEFHUyA6IFx0ICBmbGFncy5OVExNX05lZ290aWF0ZVVuaWNvZGVcblx0XHRcdFx0XHRcdCsgZmxhZ3MuTlRMTV9OZWdvdGlhdGVPRU1cblx0XHRcdFx0XHRcdCsgZmxhZ3MuTlRMTV9SZXF1ZXN0VGFyZ2V0XG5cdFx0XHRcdFx0XHQrIGZsYWdzLk5UTE1fTmVnb3RpYXRlTlRMTVxuXHRcdFx0XHRcdFx0KyBmbGFncy5OVExNX05lZ290aWF0ZU9lbURvbWFpblN1cHBsaWVkXG5cdFx0XHRcdFx0XHQrIGZsYWdzLk5UTE1fTmVnb3RpYXRlT2VtV29ya3N0YXRpb25TdXBwbGllZFxuXHRcdFx0XHRcdFx0KyBmbGFncy5OVExNX05lZ290aWF0ZUFsd2F5c1NpZ25cblx0XHRcdFx0XHRcdCsgZmxhZ3MuTlRMTV9OZWdvdGlhdGVFeHRlbmRlZFNlY3VyaXR5XG5cdFx0XHRcdFx0XHQrIGZsYWdzLk5UTE1fTmVnb3RpYXRlVmVyc2lvblxuXHRcdFx0XHRcdFx0KyBmbGFncy5OVExNX05lZ290aWF0ZTEyOFxuXHRcdFx0XHRcdFx0KyBmbGFncy5OVExNX05lZ290aWF0ZTU2LFxuXG5cdE5UTE1fVFlQRTJfRkxBR1MgOiAgICBmbGFncy5OVExNX05lZ290aWF0ZVVuaWNvZGVcblx0XHRcdFx0XHRcdCsgZmxhZ3MuTlRMTV9SZXF1ZXN0VGFyZ2V0XG5cdFx0XHRcdFx0XHQrIGZsYWdzLk5UTE1fTmVnb3RpYXRlTlRMTVxuXHRcdFx0XHRcdFx0KyBmbGFncy5OVExNX05lZ290aWF0ZUFsd2F5c1NpZ25cblx0XHRcdFx0XHRcdCsgZmxhZ3MuTlRMTV9OZWdvdGlhdGVFeHRlbmRlZFNlY3VyaXR5XG5cdFx0XHRcdFx0XHQrIGZsYWdzLk5UTE1fTmVnb3RpYXRlVGFyZ2V0SW5mb1xuXHRcdFx0XHRcdFx0KyBmbGFncy5OVExNX05lZ290aWF0ZVZlcnNpb25cblx0XHRcdFx0XHRcdCsgZmxhZ3MuTlRMTV9OZWdvdGlhdGUxMjhcblx0XHRcdFx0XHRcdCsgZmxhZ3MuTlRMTV9OZWdvdGlhdGU1NlxufTtcblxuZnVuY3Rpb24gY3JlYXRlVHlwZTFNZXNzYWdlKG9wdGlvbnMpe1xuXHRpZighb3B0aW9ucy5kb21haW4pIG9wdGlvbnMuZG9tYWluID0gJyc7XG5cdGlmKCFvcHRpb25zLndvcmtzdGF0aW9uKSBvcHRpb25zLndvcmtzdGF0aW9uID0gJyc7XG5cblx0dmFyIGRvbWFpbiA9IGVzY2FwZShvcHRpb25zLmRvbWFpbi50b1VwcGVyQ2FzZSgpKTtcblx0dmFyIHdvcmtzdGF0aW9uID0gZXNjYXBlKG9wdGlvbnMud29ya3N0YXRpb24udG9VcHBlckNhc2UoKSk7XG5cdHZhciBwcm90b2NvbCA9ICdOVExNU1NQXFwwJztcblxuXHR2YXIgQk9EWV9MRU5HVEggPSA0MDtcblxuXHR2YXIgdHlwZTFmbGFncyA9IHR5cGVmbGFncy5OVExNX1RZUEUxX0ZMQUdTO1xuXHRpZighZG9tYWluIHx8IGRvbWFpbiA9PT0gJycpXG5cdFx0dHlwZTFmbGFncyA9IHR5cGUxZmxhZ3MgLSBmbGFncy5OVExNX05lZ290aWF0ZU9lbURvbWFpblN1cHBsaWVkO1xuXG5cdHZhciBwb3MgPSAwO1xuXHR2YXIgYnVmID0gQnVmZmVyLmFsbG9jKEJPRFlfTEVOR1RIICsgZG9tYWluLmxlbmd0aCArIHdvcmtzdGF0aW9uLmxlbmd0aCk7XG5cblxuXHRidWYud3JpdGUocHJvdG9jb2wsIHBvcywgcHJvdG9jb2wubGVuZ3RoKTsgcG9zICs9IHByb3RvY29sLmxlbmd0aDsgLy8gcHJvdG9jb2xcblx0YnVmLndyaXRlVUludDMyTEUoMSwgcG9zKTsgcG9zICs9IDQ7ICAgICAgICAgIC8vIHR5cGUgMVxuXHRidWYud3JpdGVVSW50MzJMRSh0eXBlMWZsYWdzLCBwb3MpOyBwb3MgKz0gNDsgLy8gVFlQRTEgZmxhZ1xuXG5cdGJ1Zi53cml0ZVVJbnQxNkxFKGRvbWFpbi5sZW5ndGgsIHBvcyk7IHBvcyArPSAyOyAvLyBkb21haW4gbGVuZ3RoXG5cdGJ1Zi53cml0ZVVJbnQxNkxFKGRvbWFpbi5sZW5ndGgsIHBvcyk7IHBvcyArPSAyOyAvLyBkb21haW4gbWF4IGxlbmd0aFxuXHRidWYud3JpdGVVSW50MzJMRShCT0RZX0xFTkdUSCArIHdvcmtzdGF0aW9uLmxlbmd0aCwgcG9zKTsgcG9zICs9IDQ7IC8vIGRvbWFpbiBidWZmZXIgb2Zmc2V0XG5cblx0YnVmLndyaXRlVUludDE2TEUod29ya3N0YXRpb24ubGVuZ3RoLCBwb3MpOyBwb3MgKz0gMjsgLy8gd29ya3N0YXRpb24gbGVuZ3RoXG5cdGJ1Zi53cml0ZVVJbnQxNkxFKHdvcmtzdGF0aW9uLmxlbmd0aCwgcG9zKTsgcG9zICs9IDI7IC8vIHdvcmtzdGF0aW9uIG1heCBsZW5ndGhcblx0YnVmLndyaXRlVUludDMyTEUoQk9EWV9MRU5HVEgsIHBvcyk7IHBvcyArPSA0OyAvLyB3b3Jrc3RhdGlvbiBidWZmZXIgb2Zmc2V0XG5cblx0YnVmLndyaXRlVUludDgoNSwgcG9zKTsgcG9zICs9IDE7ICAgICAgLy9Qcm9kdWN0TWFqb3JWZXJzaW9uXG5cdGJ1Zi53cml0ZVVJbnQ4KDEsIHBvcyk7IHBvcyArPSAxOyAgICAgIC8vUHJvZHVjdE1pbm9yVmVyc2lvblxuXHRidWYud3JpdGVVSW50MTZMRSgyNjAwLCBwb3MpOyBwb3MgKz0gMjsgLy9Qcm9kdWN0QnVpbGRcblxuXHRidWYud3JpdGVVSW50OCgwICwgcG9zKTsgcG9zICs9IDE7IC8vVmVyc2lvblJlc2VydmVkMVxuXHRidWYud3JpdGVVSW50OCgwICwgcG9zKTsgcG9zICs9IDE7IC8vVmVyc2lvblJlc2VydmVkMlxuXHRidWYud3JpdGVVSW50OCgwICwgcG9zKTsgcG9zICs9IDE7IC8vVmVyc2lvblJlc2VydmVkM1xuXHRidWYud3JpdGVVSW50OCgxNSwgcG9zKTsgcG9zICs9IDE7IC8vTlRMTVJldmlzaW9uQ3VycmVudFxuXG5cblx0Ly8gbGVuZ3RoIGNoZWNrcyBpcyB0byBmaXggaXNzdWUgIzQ2IGFuZCBwb3NzaWJseSAjNTdcblx0aWYod29ya3N0YXRpb24ubGVuZ3RoICE9MCkgYnVmLndyaXRlKHdvcmtzdGF0aW9uLCBwb3MsIHdvcmtzdGF0aW9uLmxlbmd0aCwgJ2FzY2lpJyk7IHBvcyArPSB3b3Jrc3RhdGlvbi5sZW5ndGg7IC8vIHdvcmtzdGF0aW9uIHN0cmluZ1xuXHRpZihkb21haW4ubGVuZ3RoICE9MCkgICAgICBidWYud3JpdGUoZG9tYWluICAgICAsIHBvcywgZG9tYWluLmxlbmd0aCAgICAgLCAnYXNjaWknKTsgcG9zICs9IGRvbWFpbi5sZW5ndGg7IC8vIGRvbWFpbiBzdHJpbmdcblxuXHRyZXR1cm4gJ05UTE0gJyArIGJ1Zi50b1N0cmluZygnYmFzZTY0Jyk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlVHlwZTJNZXNzYWdlKHJhd21zZyl7XG5cdHZhciBtYXRjaCA9IHJhd21zZy5tYXRjaCgvTlRMTSAoLispPy8pO1xuXHRpZighbWF0Y2ggfHwgIW1hdGNoWzFdKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiQ291bGRuJ3QgZmluZCBOVExNIGluIHRoZSBtZXNzYWdlIHR5cGUyIGNvbWluZyBmcm9tIHRoZSBzZXJ2ZXJcIik7XG5cdH1cblxuXHR2YXIgYnVmID0gQnVmZmVyLmZyb20obWF0Y2hbMV0sICdiYXNlNjQnKTtcblxuXHR2YXIgbXNnID0ge307XG5cblx0bXNnLnNpZ25hdHVyZSA9IGJ1Zi5zbGljZSgwLCA4KTtcblx0bXNnLnR5cGUgPSBidWYucmVhZEludDE2TEUoOCk7XG5cblx0aWYobXNnLnR5cGUgIT0gMikge1xuXHRcdHRocm93IG5ldyBFcnJvcihcIlNlcnZlciBkaWRuJ3QgcmV0dXJuIGEgdHlwZSAyIG1lc3NhZ2VcIik7XG5cdH1cblxuXHRtc2cudGFyZ2V0TmFtZUxlbiA9IGJ1Zi5yZWFkSW50MTZMRSgxMik7XG5cdG1zZy50YXJnZXROYW1lTWF4TGVuID0gYnVmLnJlYWRJbnQxNkxFKDE0KTtcblx0bXNnLnRhcmdldE5hbWVPZmZzZXQgPSBidWYucmVhZEludDMyTEUoMTYpO1xuXHRtc2cudGFyZ2V0TmFtZSAgPSBidWYuc2xpY2UobXNnLnRhcmdldE5hbWVPZmZzZXQsIG1zZy50YXJnZXROYW1lT2Zmc2V0ICsgbXNnLnRhcmdldE5hbWVNYXhMZW4pO1xuXG4gICAgbXNnLm5lZ290aWF0ZUZsYWdzID0gYnVmLnJlYWRJbnQzMkxFKDIwKTtcbiAgICBtc2cuc2VydmVyQ2hhbGxlbmdlID0gYnVmLnNsaWNlKDI0LCAzMik7XG4gICAgbXNnLnJlc2VydmVkID0gYnVmLnNsaWNlKDMyLCA0MCk7XG5cbiAgICBpZihtc2cubmVnb3RpYXRlRmxhZ3MgJiBmbGFncy5OVExNX05lZ290aWF0ZVRhcmdldEluZm8pe1xuICAgIFx0bXNnLnRhcmdldEluZm9MZW4gPSBidWYucmVhZEludDE2TEUoNDApO1xuICAgIFx0bXNnLnRhcmdldEluZm9NYXhMZW4gPSBidWYucmVhZEludDE2TEUoNDIpO1xuICAgIFx0bXNnLnRhcmdldEluZm9PZmZzZXQgPSBidWYucmVhZEludDMyTEUoNDQpO1xuICAgIFx0bXNnLnRhcmdldEluZm8gPSBidWYuc2xpY2UobXNnLnRhcmdldEluZm9PZmZzZXQsIG1zZy50YXJnZXRJbmZvT2Zmc2V0ICsgbXNnLnRhcmdldEluZm9MZW4pO1xuICAgIH1cblx0cmV0dXJuIG1zZztcbn1cblxuZnVuY3Rpb24gY3JlYXRlVHlwZTNNZXNzYWdlKG1zZzIsIG9wdGlvbnMpe1xuXHRpZighb3B0aW9ucy5kb21haW4pIG9wdGlvbnMuZG9tYWluID0gJyc7XG5cdGlmKCFvcHRpb25zLndvcmtzdGF0aW9uKSBvcHRpb25zLndvcmtzdGF0aW9uID0gJyc7XG5cdGlmKCFvcHRpb25zLnVzZXJuYW1lKSBvcHRpb25zLnVzZXJuYW1lID0gJyc7XG5cdGlmKCFvcHRpb25zLnBhc3N3b3JkKSBvcHRpb25zLnBhc3N3b3JkID0gJyc7XG5cblx0dmFyIG5vbmNlID0gbXNnMi5zZXJ2ZXJDaGFsbGVuZ2U7XG5cdHZhciB1c2VybmFtZSA9IG9wdGlvbnMudXNlcm5hbWU7XG5cdHZhciBwYXNzd29yZCA9IG9wdGlvbnMucGFzc3dvcmQ7XG5cdHZhciBsbV9wYXNzd29yZCA9IG9wdGlvbnMubG1fcGFzc3dvcmQ7XG5cdHZhciBudF9wYXNzd29yZCA9IG9wdGlvbnMubnRfcGFzc3dvcmQ7XG5cdHZhciBuZWdvdGlhdGVGbGFncyA9IG1zZzIubmVnb3RpYXRlRmxhZ3M7XG5cblx0dmFyIGlzVW5pY29kZSA9IG5lZ290aWF0ZUZsYWdzICYgZmxhZ3MuTlRMTV9OZWdvdGlhdGVVbmljb2RlO1xuXHR2YXIgaXNOZWdvdGlhdGVFeHRlbmRlZFNlY3VyaXR5ID0gbmVnb3RpYXRlRmxhZ3MgJiBmbGFncy5OVExNX05lZ290aWF0ZUV4dGVuZGVkU2VjdXJpdHk7XG5cblx0dmFyIEJPRFlfTEVOR1RIID0gNzI7XG5cblx0dmFyIGRvbWFpbk5hbWUgPSBlc2NhcGUob3B0aW9ucy5kb21haW4udG9VcHBlckNhc2UoKSk7XG5cdHZhciB3b3Jrc3RhdGlvbiA9IGVzY2FwZShvcHRpb25zLndvcmtzdGF0aW9uLnRvVXBwZXJDYXNlKCkpO1xuXG5cdHZhciB3b3Jrc3RhdGlvbkJ5dGVzLCBkb21haW5OYW1lQnl0ZXMsIHVzZXJuYW1lQnl0ZXMsIGVuY3J5cHRlZFJhbmRvbVNlc3Npb25LZXlCeXRlcztcblxuXHR2YXIgZW5jcnlwdGVkUmFuZG9tU2Vzc2lvbktleSA9IFwiXCI7XG5cdGlmKGlzVW5pY29kZSl7XG5cdFx0d29ya3N0YXRpb25CeXRlcyA9IEJ1ZmZlci5mcm9tKHdvcmtzdGF0aW9uLCAndXRmMTZsZScpO1xuXHRcdGRvbWFpbk5hbWVCeXRlcyA9IEJ1ZmZlci5mcm9tKGRvbWFpbk5hbWUsICd1dGYxNmxlJyk7XG5cdFx0dXNlcm5hbWVCeXRlcyA9IEJ1ZmZlci5mcm9tKHVzZXJuYW1lLCAndXRmMTZsZScpO1xuXHRcdGVuY3J5cHRlZFJhbmRvbVNlc3Npb25LZXlCeXRlcyA9IEJ1ZmZlci5mcm9tKGVuY3J5cHRlZFJhbmRvbVNlc3Npb25LZXksICd1dGYxNmxlJyk7XG5cdH1lbHNle1xuXHRcdHdvcmtzdGF0aW9uQnl0ZXMgPSBCdWZmZXIuZnJvbSh3b3Jrc3RhdGlvbiwgJ2FzY2lpJyk7XG5cdFx0ZG9tYWluTmFtZUJ5dGVzID0gQnVmZmVyLmZyb20oZG9tYWluTmFtZSwgJ2FzY2lpJyk7XG5cdFx0dXNlcm5hbWVCeXRlcyA9IEJ1ZmZlci5mcm9tKHVzZXJuYW1lLCAnYXNjaWknKTtcblx0XHRlbmNyeXB0ZWRSYW5kb21TZXNzaW9uS2V5Qnl0ZXMgPSBCdWZmZXIuZnJvbShlbmNyeXB0ZWRSYW5kb21TZXNzaW9uS2V5LCAnYXNjaWknKTtcblx0fVxuXG5cdHZhciBsbUNoYWxsZW5nZVJlc3BvbnNlID0gY2FsY19yZXNwKChsbV9wYXNzd29yZCE9bnVsbCk/bG1fcGFzc3dvcmQ6Y3JlYXRlX0xNX2hhc2hlZF9wYXNzd29yZF92MShwYXNzd29yZCksIG5vbmNlKTtcblx0dmFyIG50Q2hhbGxlbmdlUmVzcG9uc2UgPSBjYWxjX3Jlc3AoKG50X3Bhc3N3b3JkIT1udWxsKT9udF9wYXNzd29yZDpjcmVhdGVfTlRfaGFzaGVkX3Bhc3N3b3JkX3YxKHBhc3N3b3JkKSwgbm9uY2UpO1xuXG5cdGlmKGlzTmVnb3RpYXRlRXh0ZW5kZWRTZWN1cml0eSl7XG5cdFx0Lypcblx0XHQgKiBOVExNdjIgZXh0ZW5kZWQgc2VjdXJpdHkgaXMgZW5hYmxlZC4gV2hpbGUgdGhpcyB0ZWNobmljYWxseSBjYW4gbWVhbiBOVExNdjIgZXh0ZW5kZWQgc2VjdXJpdHkgd2l0aCBOVExNdjEgcHJvdG9jb2wsXG5cdFx0ICogc2VydmVycyB0aGF0IHN1cHBvcnQgZXh0ZW5kZWQgc2VjdXJpdHkgbGlrZWx5IGFsc28gc3VwcG9ydCBOVExNdjIsIHNvIHVzZSBOVExNdjIuXG5cdFx0ICogVGhpcyBpcyBhbHNvIGhvdyBjdXJsIGltcGxlbWVudHMgTlRMTXYyIFwiZGV0ZWN0aW9uXCIuXG5cdFx0ICogQnkgdXNpbmcgTlRMTXYyLCB0aGlzIHN1cHBvcnRzIGNvbW11bmljYXRpb24gd2l0aCBzZXJ2ZXJzIHRoYXQgZm9yYmlkIHRoZSB1c2Ugb2YgTlRMTXYxIChlLmcuIHZpYSB3aW5kb3dzIHBvbGljaWVzKVxuXHRcdCAqXG5cdFx0ICogSG93ZXZlciwgdGhlIHRhcmdldCBpbmZvIGlzIG5lZWRlZCB0byBjb25zdHJ1Y3QgdGhlIE5UTE12MiByZXNwb25zZSBzbyBpZiBpdCBjYW4ndCBiZSBuZWdvdGlhdGVkLFxuXHRcdCAqIGZhbGwgYmFjayB0byBOVExNdjEgd2l0aCBOVExNdjIgZXh0ZW5kZWQgc2VjdXJpdHkuXG5cdFx0ICovXG5cdFx0dmFyIHB3aGFzaCA9IChudF9wYXNzd29yZCE9bnVsbCk/bnRfcGFzc3dvcmQ6Y3JlYXRlX05UX2hhc2hlZF9wYXNzd29yZF92MShwYXNzd29yZCk7XG5cdFx0dmFyIGNsaWVudENoYWxsZW5nZSA9IFwiXCI7XG5cdCBcdGZvcih2YXIgaT0wOyBpIDwgODsgaSsrKXtcblx0IFx0XHRjbGllbnRDaGFsbGVuZ2UgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSggTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjI1NikgKTtcblx0ICAgXHR9XG5cdCAgIFx0dmFyIGNsaWVudENoYWxsZW5nZUJ5dGVzID0gQnVmZmVyLmZyb20oY2xpZW50Q2hhbGxlbmdlLCAnYXNjaWknKTtcblx0XHR2YXIgY2hhbGxlbmdlcyA9IG1zZzIudGFyZ2V0SW5mb1xuXHRcdFx0PyBjYWxjX250bG12Ml9yZXNwKHB3aGFzaCwgdXNlcm5hbWUsIGRvbWFpbk5hbWUsIG1zZzIudGFyZ2V0SW5mbywgbm9uY2UsIGNsaWVudENoYWxsZW5nZUJ5dGVzKVxuXHRcdFx0OiBudGxtMnNyX2NhbGNfcmVzcChwd2hhc2gsIG5vbmNlLCBjbGllbnRDaGFsbGVuZ2VCeXRlcyk7XG5cdCAgICBsbUNoYWxsZW5nZVJlc3BvbnNlID0gY2hhbGxlbmdlcy5sbUNoYWxsZW5nZVJlc3BvbnNlO1xuXHQgICAgbnRDaGFsbGVuZ2VSZXNwb25zZSA9IGNoYWxsZW5nZXMubnRDaGFsbGVuZ2VSZXNwb25zZTtcblx0fVxuXG5cdHZhciBzaWduYXR1cmUgPSAnTlRMTVNTUFxcMCc7XG5cblx0dmFyIHBvcyA9IDA7XG5cdHZhciBidWYgPSBCdWZmZXIuYWxsb2MoQk9EWV9MRU5HVEggKyBkb21haW5OYW1lQnl0ZXMubGVuZ3RoICsgdXNlcm5hbWVCeXRlcy5sZW5ndGggKyB3b3Jrc3RhdGlvbkJ5dGVzLmxlbmd0aCArIGxtQ2hhbGxlbmdlUmVzcG9uc2UubGVuZ3RoICsgbnRDaGFsbGVuZ2VSZXNwb25zZS5sZW5ndGggKyBlbmNyeXB0ZWRSYW5kb21TZXNzaW9uS2V5Qnl0ZXMubGVuZ3RoKTtcblxuXHRidWYud3JpdGUoc2lnbmF0dXJlLCBwb3MsIHNpZ25hdHVyZS5sZW5ndGgpOyBwb3MgKz0gc2lnbmF0dXJlLmxlbmd0aDtcblx0YnVmLndyaXRlVUludDMyTEUoMywgcG9zKTsgcG9zICs9IDQ7ICAgICAgICAgIC8vIHR5cGUgMVxuXG5cdGJ1Zi53cml0ZVVJbnQxNkxFKGxtQ2hhbGxlbmdlUmVzcG9uc2UubGVuZ3RoLCBwb3MpOyBwb3MgKz0gMjsgLy8gTG1DaGFsbGVuZ2VSZXNwb25zZUxlblxuXHRidWYud3JpdGVVSW50MTZMRShsbUNoYWxsZW5nZVJlc3BvbnNlLmxlbmd0aCwgcG9zKTsgcG9zICs9IDI7IC8vIExtQ2hhbGxlbmdlUmVzcG9uc2VNYXhMZW5cblx0YnVmLndyaXRlVUludDMyTEUoQk9EWV9MRU5HVEggKyBkb21haW5OYW1lQnl0ZXMubGVuZ3RoICsgdXNlcm5hbWVCeXRlcy5sZW5ndGggKyB3b3Jrc3RhdGlvbkJ5dGVzLmxlbmd0aCwgcG9zKTsgcG9zICs9IDQ7IC8vIExtQ2hhbGxlbmdlUmVzcG9uc2VPZmZzZXRcblxuXHRidWYud3JpdGVVSW50MTZMRShudENoYWxsZW5nZVJlc3BvbnNlLmxlbmd0aCwgcG9zKTsgcG9zICs9IDI7IC8vIE50Q2hhbGxlbmdlUmVzcG9uc2VMZW5cblx0YnVmLndyaXRlVUludDE2TEUobnRDaGFsbGVuZ2VSZXNwb25zZS5sZW5ndGgsIHBvcyk7IHBvcyArPSAyOyAvLyBOdENoYWxsZW5nZVJlc3BvbnNlTWF4TGVuXG5cdGJ1Zi53cml0ZVVJbnQzMkxFKEJPRFlfTEVOR1RIICsgZG9tYWluTmFtZUJ5dGVzLmxlbmd0aCArIHVzZXJuYW1lQnl0ZXMubGVuZ3RoICsgd29ya3N0YXRpb25CeXRlcy5sZW5ndGggKyBsbUNoYWxsZW5nZVJlc3BvbnNlLmxlbmd0aCwgcG9zKTsgcG9zICs9IDQ7IC8vIE50Q2hhbGxlbmdlUmVzcG9uc2VPZmZzZXRcblxuXHRidWYud3JpdGVVSW50MTZMRShkb21haW5OYW1lQnl0ZXMubGVuZ3RoLCBwb3MpOyBwb3MgKz0gMjsgLy8gRG9tYWluTmFtZUxlblxuXHRidWYud3JpdGVVSW50MTZMRShkb21haW5OYW1lQnl0ZXMubGVuZ3RoLCBwb3MpOyBwb3MgKz0gMjsgLy8gRG9tYWluTmFtZU1heExlblxuXHRidWYud3JpdGVVSW50MzJMRShCT0RZX0xFTkdUSCwgcG9zKTsgcG9zICs9IDQ7IFx0XHRcdCAgLy8gRG9tYWluTmFtZU9mZnNldFxuXG5cdGJ1Zi53cml0ZVVJbnQxNkxFKHVzZXJuYW1lQnl0ZXMubGVuZ3RoLCBwb3MpOyBwb3MgKz0gMjsgLy8gVXNlck5hbWVMZW5cblx0YnVmLndyaXRlVUludDE2TEUodXNlcm5hbWVCeXRlcy5sZW5ndGgsIHBvcyk7IHBvcyArPSAyOyAvLyBVc2VyTmFtZU1heExlblxuXHRidWYud3JpdGVVSW50MzJMRShCT0RZX0xFTkdUSCArIGRvbWFpbk5hbWVCeXRlcy5sZW5ndGgsIHBvcyk7IHBvcyArPSA0OyAvLyBVc2VyTmFtZU9mZnNldFxuXG5cdGJ1Zi53cml0ZVVJbnQxNkxFKHdvcmtzdGF0aW9uQnl0ZXMubGVuZ3RoLCBwb3MpOyBwb3MgKz0gMjsgLy8gV29ya3N0YXRpb25MZW5cblx0YnVmLndyaXRlVUludDE2TEUod29ya3N0YXRpb25CeXRlcy5sZW5ndGgsIHBvcyk7IHBvcyArPSAyOyAvLyBXb3Jrc3RhdGlvbk1heExlblxuXHRidWYud3JpdGVVSW50MzJMRShCT0RZX0xFTkdUSCArIGRvbWFpbk5hbWVCeXRlcy5sZW5ndGggKyB1c2VybmFtZUJ5dGVzLmxlbmd0aCwgcG9zKTsgcG9zICs9IDQ7IC8vIFdvcmtzdGF0aW9uT2Zmc2V0XG5cblx0YnVmLndyaXRlVUludDE2TEUoZW5jcnlwdGVkUmFuZG9tU2Vzc2lvbktleUJ5dGVzLmxlbmd0aCwgcG9zKTsgcG9zICs9IDI7IC8vIEVuY3J5cHRlZFJhbmRvbVNlc3Npb25LZXlMZW5cblx0YnVmLndyaXRlVUludDE2TEUoZW5jcnlwdGVkUmFuZG9tU2Vzc2lvbktleUJ5dGVzLmxlbmd0aCwgcG9zKTsgcG9zICs9IDI7IC8vIEVuY3J5cHRlZFJhbmRvbVNlc3Npb25LZXlNYXhMZW5cblx0YnVmLndyaXRlVUludDMyTEUoQk9EWV9MRU5HVEggKyBkb21haW5OYW1lQnl0ZXMubGVuZ3RoICsgdXNlcm5hbWVCeXRlcy5sZW5ndGggKyB3b3Jrc3RhdGlvbkJ5dGVzLmxlbmd0aCArIGxtQ2hhbGxlbmdlUmVzcG9uc2UubGVuZ3RoICsgbnRDaGFsbGVuZ2VSZXNwb25zZS5sZW5ndGgsIHBvcyk7IHBvcyArPSA0OyAvLyBFbmNyeXB0ZWRSYW5kb21TZXNzaW9uS2V5T2Zmc2V0XG5cblx0Ly8gRml4ICM5OFxuXHR2YXIgZmxhZ3NUb1dyaXRlID0gaXNVbmljb2RlXG5cdCAgICA/IHR5cGVmbGFncy5OVExNX1RZUEUyX0ZMQUdTXG5cdCAgICA6IHR5cGVmbGFncy5OVExNX1RZUEUyX0ZMQUdTIC0gZmxhZ3MuTlRMTV9OZWdvdGlhdGVVbmljb2RlO1xuXHRidWYud3JpdGVVSW50MzJMRShmbGFnc1RvV3JpdGUgLCBwb3MpOyBwb3MgKz0gNDsgLy8gTmVnb3RpYXRlRmxhZ3NcblxuXHRidWYud3JpdGVVSW50OCg1LCBwb3MpOyBwb3MrKzsgLy8gUHJvZHVjdE1ham9yVmVyc2lvblxuXHRidWYud3JpdGVVSW50OCgxLCBwb3MpOyBwb3MrKzsgLy8gUHJvZHVjdE1pbm9yVmVyc2lvblxuXHRidWYud3JpdGVVSW50MTZMRSgyNjAwLCBwb3MpOyBwb3MgKz0gMjsgLy8gUHJvZHVjdEJ1aWxkXG5cdGJ1Zi53cml0ZVVJbnQ4KDAsIHBvcyk7IHBvcysrOyAvLyBWZXJzaW9uUmVzZXJ2ZWQxXG5cdGJ1Zi53cml0ZVVJbnQ4KDAsIHBvcyk7IHBvcysrOyAvLyBWZXJzaW9uUmVzZXJ2ZWQyXG5cdGJ1Zi53cml0ZVVJbnQ4KDAsIHBvcyk7IHBvcysrOyAvLyBWZXJzaW9uUmVzZXJ2ZWQzXG5cdGJ1Zi53cml0ZVVJbnQ4KDE1LCBwb3MpOyBwb3MrKzsgLy8gTlRMTVJldmlzaW9uQ3VycmVudFxuXG5cdGRvbWFpbk5hbWVCeXRlcy5jb3B5KGJ1ZiwgcG9zKTsgcG9zICs9IGRvbWFpbk5hbWVCeXRlcy5sZW5ndGg7XG5cdHVzZXJuYW1lQnl0ZXMuY29weShidWYsIHBvcyk7IHBvcyArPSB1c2VybmFtZUJ5dGVzLmxlbmd0aDtcblx0d29ya3N0YXRpb25CeXRlcy5jb3B5KGJ1ZiwgcG9zKTsgcG9zICs9IHdvcmtzdGF0aW9uQnl0ZXMubGVuZ3RoO1xuXHRsbUNoYWxsZW5nZVJlc3BvbnNlLmNvcHkoYnVmLCBwb3MpOyBwb3MgKz0gbG1DaGFsbGVuZ2VSZXNwb25zZS5sZW5ndGg7XG5cdG50Q2hhbGxlbmdlUmVzcG9uc2UuY29weShidWYsIHBvcyk7IHBvcyArPSBudENoYWxsZW5nZVJlc3BvbnNlLmxlbmd0aDtcblx0ZW5jcnlwdGVkUmFuZG9tU2Vzc2lvbktleUJ5dGVzLmNvcHkoYnVmLCBwb3MpOyBwb3MgKz0gZW5jcnlwdGVkUmFuZG9tU2Vzc2lvbktleUJ5dGVzLmxlbmd0aDtcblxuXHRyZXR1cm4gJ05UTE0gJyArIGJ1Zi50b1N0cmluZygnYmFzZTY0Jyk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZV9MTV9oYXNoZWRfcGFzc3dvcmRfdjEocGFzc3dvcmQpe1xuXHQvLyBmaXggdGhlIHBhc3N3b3JkIGxlbmd0aCB0byAxNCBieXRlc1xuXHRwYXNzd29yZCA9IHBhc3N3b3JkLnRvVXBwZXJDYXNlKCk7XG5cdHZhciBwYXNzd29yZEJ5dGVzID0gQnVmZmVyLmZyb20ocGFzc3dvcmQsICdhc2NpaScpO1xuXG5cdHZhciBwYXNzd29yZEJ5dGVzUGFkZGVkID0gQnVmZmVyLmFsbG9jKDE0KTtcblx0cGFzc3dvcmRCeXRlc1BhZGRlZC5maWxsKFwiXFwwXCIpO1xuXHR2YXIgc291cmNlRW5kID0gMTQ7XG5cdGlmKHBhc3N3b3JkQnl0ZXMubGVuZ3RoIDwgMTQpIHNvdXJjZUVuZCA9IHBhc3N3b3JkQnl0ZXMubGVuZ3RoO1xuXHRwYXNzd29yZEJ5dGVzLmNvcHkocGFzc3dvcmRCeXRlc1BhZGRlZCwgMCwgMCwgc291cmNlRW5kKTtcblxuXHQvLyBzcGxpdCBpbnRvIDIgcGFydHMgb2YgNyBieXRlczpcblx0dmFyIGZpcnN0UGFydCA9IHBhc3N3b3JkQnl0ZXNQYWRkZWQuc2xpY2UoMCw3KTtcblx0dmFyIHNlY29uZFBhcnQgPSBwYXNzd29yZEJ5dGVzUGFkZGVkLnNsaWNlKDcpO1xuXG5cdGZ1bmN0aW9uIGVuY3J5cHQoYnVmKXtcblx0XHR2YXIga2V5ID0gaW5zZXJ0WmVyb3NFdmVyeTdCaXRzKGJ1Zik7XG5cdFx0dmFyIGRlcyA9IGRlc2pzLkRFUy5jcmVhdGUoe3R5cGU6ICdlbmNyeXB0Jywga2V5OiBrZXl9KTtcblx0XHR2YXIgbWFnaWNLZXkgPSBCdWZmZXIuZnJvbSgnS0dTIUAjJCUnLCAnYXNjaWknKTsgLy8gcGFnZSA1NyBpbiBbTVMtTkxNUF1cblx0XHR2YXIgZW5jcnlwdGVkID0gZGVzLnVwZGF0ZShtYWdpY0tleSk7XG5cdFx0cmV0dXJuIEJ1ZmZlci5mcm9tKGVuY3J5cHRlZCk7XG5cdH1cblxuXHR2YXIgZmlyc3RQYXJ0RW5jcnlwdGVkID0gZW5jcnlwdChmaXJzdFBhcnQpO1xuXHR2YXIgc2Vjb25kUGFydEVuY3J5cHRlZCA9IGVuY3J5cHQoc2Vjb25kUGFydCk7XG5cblx0cmV0dXJuIEJ1ZmZlci5jb25jYXQoW2ZpcnN0UGFydEVuY3J5cHRlZCwgc2Vjb25kUGFydEVuY3J5cHRlZF0pO1xufVxuXG5mdW5jdGlvbiBpbnNlcnRaZXJvc0V2ZXJ5N0JpdHMoYnVmKXtcblx0dmFyIGJpbmFyeUFycmF5ID0gYnl0ZXMyYmluYXJ5QXJyYXkoYnVmKTtcblx0dmFyIG5ld0JpbmFyeUFycmF5ID0gW107XG5cdGZvcih2YXIgaT0wOyBpPGJpbmFyeUFycmF5Lmxlbmd0aDsgaSsrKXtcblx0XHRuZXdCaW5hcnlBcnJheS5wdXNoKGJpbmFyeUFycmF5W2ldKTtcblxuXHRcdGlmKChpKzEpJTcgPT09IDApe1xuXHRcdFx0bmV3QmluYXJ5QXJyYXkucHVzaCgwKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGJpbmFyeUFycmF5MmJ5dGVzKG5ld0JpbmFyeUFycmF5KTtcbn1cblxuZnVuY3Rpb24gYnl0ZXMyYmluYXJ5QXJyYXkoYnVmKXtcblx0dmFyIGhleDJiaW5hcnkgPSB7XG5cdFx0MDogWzAsMCwwLDBdLFxuXHRcdDE6IFswLDAsMCwxXSxcblx0XHQyOiBbMCwwLDEsMF0sXG5cdFx0MzogWzAsMCwxLDFdLFxuXHRcdDQ6IFswLDEsMCwwXSxcblx0XHQ1OiBbMCwxLDAsMV0sXG5cdFx0NjogWzAsMSwxLDBdLFxuXHRcdDc6IFswLDEsMSwxXSxcblx0XHQ4OiBbMSwwLDAsMF0sXG5cdFx0OTogWzEsMCwwLDFdLFxuXHRcdEE6IFsxLDAsMSwwXSxcblx0XHRCOiBbMSwwLDEsMV0sXG5cdFx0QzogWzEsMSwwLDBdLFxuXHRcdEQ6IFsxLDEsMCwxXSxcblx0XHRFOiBbMSwxLDEsMF0sXG5cdFx0RjogWzEsMSwxLDFdXG5cdH07XG5cblx0dmFyIGhleFN0cmluZyA9IGJ1Zi50b1N0cmluZygnaGV4JykudG9VcHBlckNhc2UoKTtcblx0dmFyIGFycmF5ID0gW107XG5cdGZvcih2YXIgaT0wOyBpPGhleFN0cmluZy5sZW5ndGg7IGkrKyl7XG4gICBcdFx0dmFyIGhleGNoYXIgPSBoZXhTdHJpbmcuY2hhckF0KGkpO1xuICAgXHRcdGFycmF5ID0gYXJyYXkuY29uY2F0KGhleDJiaW5hcnlbaGV4Y2hhcl0pO1xuICAgXHR9XG4gICBcdHJldHVybiBhcnJheTtcbn1cblxuZnVuY3Rpb24gYmluYXJ5QXJyYXkyYnl0ZXMoYXJyYXkpe1xuXHR2YXIgYmluYXJ5MmhleCA9IHtcblx0XHQnMDAwMCc6IDAsXG5cdFx0JzAwMDEnOiAxLFxuXHRcdCcwMDEwJzogMixcblx0XHQnMDAxMSc6IDMsXG5cdFx0JzAxMDAnOiA0LFxuXHRcdCcwMTAxJzogNSxcblx0XHQnMDExMCc6IDYsXG5cdFx0JzAxMTEnOiA3LFxuXHRcdCcxMDAwJzogOCxcblx0XHQnMTAwMSc6IDksXG5cdFx0JzEwMTAnOiAnQScsXG5cdFx0JzEwMTEnOiAnQicsXG5cdFx0JzExMDAnOiAnQycsXG5cdFx0JzExMDEnOiAnRCcsXG5cdFx0JzExMTAnOiAnRScsXG5cdFx0JzExMTEnOiAnRidcblx0fTtcblxuIFx0dmFyIGJ1ZkFycmF5ID0gW107XG5cblx0Zm9yKHZhciBpPTA7IGk8YXJyYXkubGVuZ3RoOyBpICs9OCApe1xuXHRcdGlmKChpKzcpID4gYXJyYXkubGVuZ3RoKVxuXHRcdFx0YnJlYWs7XG5cblx0XHR2YXIgYmluU3RyaW5nMSA9ICcnICsgYXJyYXlbaV0gKyAnJyArIGFycmF5W2krMV0gKyAnJyArIGFycmF5W2krMl0gKyAnJyArIGFycmF5W2krM107XG5cdFx0dmFyIGJpblN0cmluZzIgPSAnJyArIGFycmF5W2krNF0gKyAnJyArIGFycmF5W2krNV0gKyAnJyArIGFycmF5W2krNl0gKyAnJyArIGFycmF5W2krN107XG4gICBcdFx0dmFyIGhleGNoYXIxID0gYmluYXJ5MmhleFtiaW5TdHJpbmcxXTtcbiAgIFx0XHR2YXIgaGV4Y2hhcjIgPSBiaW5hcnkyaGV4W2JpblN0cmluZzJdO1xuXG4gICBcdFx0dmFyIGJ1ZiA9IEJ1ZmZlci5mcm9tKGhleGNoYXIxICsgJycgKyBoZXhjaGFyMiwgJ2hleCcpO1xuICAgXHRcdGJ1ZkFycmF5LnB1c2goYnVmKTtcbiAgIFx0fVxuXG4gICBcdHJldHVybiBCdWZmZXIuY29uY2F0KGJ1ZkFycmF5KTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlX05UX2hhc2hlZF9wYXNzd29yZF92MShwYXNzd29yZCl7XG5cdHZhciBidWYgPSBCdWZmZXIuZnJvbShwYXNzd29yZCwgJ3V0ZjE2bGUnKTtcblx0dmFyIG1kNCA9IGpzbWQ0LmNyZWF0ZSgpO1xuXHRtZDQudXBkYXRlKGJ1Zik7XG5cdHJldHVybiBCdWZmZXIuZnJvbShtZDQuZGlnZXN0KCkpO1xufVxuXG5mdW5jdGlvbiBjYWxjX3Jlc3AocGFzc3dvcmRfaGFzaCwgc2VydmVyX2NoYWxsZW5nZSl7XG4gICAgLy8gcGFkZGluZyB3aXRoIHplcm9zIHRvIG1ha2UgdGhlIGhhc2ggMjEgYnl0ZXMgbG9uZ1xuICAgIHZhciBwYXNzSGFzaFBhZGRlZCA9IEJ1ZmZlci5hbGxvYygyMSk7XG4gICAgcGFzc0hhc2hQYWRkZWQuZmlsbChcIlxcMFwiKTtcbiAgICBwYXNzd29yZF9oYXNoLmNvcHkocGFzc0hhc2hQYWRkZWQsIDAsIDAsIHBhc3N3b3JkX2hhc2gubGVuZ3RoKTtcblxuICAgIHZhciByZXNBcnJheSA9IFtdO1xuXG5cdHZhciBkZXMgPSBkZXNqcy5ERVMuY3JlYXRlKHt0eXBlOiAnZW5jcnlwdCcsIGtleTogaW5zZXJ0WmVyb3NFdmVyeTdCaXRzKHBhc3NIYXNoUGFkZGVkLnNsaWNlKDAsNykpfSk7XG5cdHJlc0FycmF5LnB1c2goIEJ1ZmZlci5mcm9tKGRlcy51cGRhdGUoc2VydmVyX2NoYWxsZW5nZS5zbGljZSgwLDgpKSkgKTtcblxuXHRkZXMgPSBkZXNqcy5ERVMuY3JlYXRlKHt0eXBlOiAnZW5jcnlwdCcsIGtleTogaW5zZXJ0WmVyb3NFdmVyeTdCaXRzKHBhc3NIYXNoUGFkZGVkLnNsaWNlKDcsMTQpKX0pO1xuXHRyZXNBcnJheS5wdXNoKCBCdWZmZXIuZnJvbShkZXMudXBkYXRlKHNlcnZlcl9jaGFsbGVuZ2Uuc2xpY2UoMCw4KSkpICk7XG5cblx0ZGVzID0gZGVzanMuREVTLmNyZWF0ZSh7dHlwZTogJ2VuY3J5cHQnLCBrZXk6IGluc2VydFplcm9zRXZlcnk3Qml0cyhwYXNzSGFzaFBhZGRlZC5zbGljZSgxNCwyMSkpfSk7XG5cdHJlc0FycmF5LnB1c2goIEJ1ZmZlci5mcm9tKGRlcy51cGRhdGUoc2VydmVyX2NoYWxsZW5nZS5zbGljZSgwLDgpKSkgKTtcblxuICAgXHRyZXR1cm4gQnVmZmVyLmNvbmNhdChyZXNBcnJheSk7XG59XG5cbmZ1bmN0aW9uIGhtYWNfbWQ1KGtleSwgZGF0YSl7XG5cdHZhciBobWFjID0gY3J5cHRvLmNyZWF0ZUhtYWMoJ21kNScsIGtleSk7XG5cdGhtYWMudXBkYXRlKGRhdGEpO1xuXHRyZXR1cm4gaG1hYy5kaWdlc3QoKTtcbn1cblxuZnVuY3Rpb24gbnRsbTJzcl9jYWxjX3Jlc3AocmVzcG9uc2VLZXlOVCwgc2VydmVyQ2hhbGxlbmdlLCBjbGllbnRDaGFsbGVuZ2Upe1xuXHQvLyBwYWRkaW5nIHdpdGggemVyb3MgdG8gbWFrZSB0aGUgaGFzaCAxNiBieXRlcyBsb25nZXJcbiAgICB2YXIgbG1DaGFsbGVuZ2VSZXNwb25zZSA9IEJ1ZmZlci5hbGxvYyhjbGllbnRDaGFsbGVuZ2UubGVuZ3RoICsgMTYpO1xuICAgIGxtQ2hhbGxlbmdlUmVzcG9uc2UuZmlsbChcIlxcMFwiKTtcbiAgICBjbGllbnRDaGFsbGVuZ2UuY29weShsbUNoYWxsZW5nZVJlc3BvbnNlLCAwLCAwLCBjbGllbnRDaGFsbGVuZ2UubGVuZ3RoKTtcblxuICAgIHZhciBidWYgPSBCdWZmZXIuY29uY2F0KFtzZXJ2ZXJDaGFsbGVuZ2UsIGNsaWVudENoYWxsZW5nZV0pO1xuICAgIHZhciBtZDUgPSBjcnlwdG8uY3JlYXRlSGFzaCgnbWQ1Jyk7XG4gICAgbWQ1LnVwZGF0ZShidWYpO1xuICAgIHZhciBzZXNzID0gbWQ1LmRpZ2VzdCgpO1xuICAgIHZhciBudENoYWxsZW5nZVJlc3BvbnNlID0gY2FsY19yZXNwKHJlc3BvbnNlS2V5TlQsIHNlc3Muc2xpY2UoMCw4KSk7XG5cbiAgICByZXR1cm4ge1xuICAgIFx0bG1DaGFsbGVuZ2VSZXNwb25zZTogbG1DaGFsbGVuZ2VSZXNwb25zZSxcbiAgICBcdG50Q2hhbGxlbmdlUmVzcG9uc2U6IG50Q2hhbGxlbmdlUmVzcG9uc2VcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBjYWxjX250bG12Ml9yZXNwKHB3aGFzaCwgdXNlcm5hbWUsIGRvbWFpbiwgdGFyZ2V0SW5mbywgc2VydmVyQ2hhbGxlbmdlLCBjbGllbnRDaGFsbGVuZ2Upe1xuXHR2YXIgcmVzcG9uc2VLZXlOVExNID0gTlRPV0Z2Mihwd2hhc2gsIHVzZXJuYW1lLCBkb21haW4pO1xuXG5cdHZhciBsbVYyQ2hhbGxlbmdlUmVzcG9uc2UgPSBCdWZmZXIuY29uY2F0KFtcblx0XHRobWFjX21kNShyZXNwb25zZUtleU5UTE0sIEJ1ZmZlci5jb25jYXQoW3NlcnZlckNoYWxsZW5nZSwgY2xpZW50Q2hhbGxlbmdlXSkpLFxuXHRcdGNsaWVudENoYWxsZW5nZVxuXHRdKTtcblxuXHQvLyAxMTY0NDQ3MzYwMDAwMCA9IGRpZmYgYmV0d2VlbiAxOTcwIGFuZCAxNjAxXG5cdHZhciBub3cgPSBEYXRlLm5vdygpO1xuXHR2YXIgdGltZXN0YW1wID0gKChCaWdJbnQobm93KSArIEJpZ0ludCgxMTY0NDQ3MzYwMDAwMCkpICogQmlnSW50KDEwMDAwKSk7ICAvLyB3ZSBuZWVkIEJpZ0ludCB0byBiZSBhYmxlIHRvIHdyaXRlIGl0IHRvIGEgYnVmZmVyXG5cdHZhciB0aW1lc3RhbXBCdWZmZXIgPSBCdWZmZXIuYWxsb2MoOCk7XG5cdHRpbWVzdGFtcEJ1ZmZlci53cml0ZUJpZ1VJbnQ2NExFKHRpbWVzdGFtcCk7XG5cblx0dmFyIHplcm8zMkJpdCA9IEJ1ZmZlci5hbGxvYyg0LCAwKVxuXHR2YXIgdGVtcCA9IEJ1ZmZlci5jb25jYXQoW1xuXHRcdC8vIFZlcnNpb25cblx0XHRCdWZmZXIuZnJvbShbMHgwMSwgMHgwMSwgMHgwMCwgMHgwMF0pLFxuXHRcdHplcm8zMkJpdCxcblx0XHR0aW1lc3RhbXBCdWZmZXIsXG5cdFx0Y2xpZW50Q2hhbGxlbmdlLFxuXHRcdHplcm8zMkJpdCxcblx0XHR0YXJnZXRJbmZvLFxuXHRcdHplcm8zMkJpdFxuXHRdKTtcblx0dmFyIHByb29mU3RyaW5nID0gaG1hY19tZDUocmVzcG9uc2VLZXlOVExNLCBCdWZmZXIuY29uY2F0KFtzZXJ2ZXJDaGFsbGVuZ2UsIHRlbXBdKSk7XG5cdHZhciBudFYyQ2hhbGxlbmdlUmVzcG9uc2UgPSBCdWZmZXIuY29uY2F0KFtwcm9vZlN0cmluZywgdGVtcF0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICBcdGxtQ2hhbGxlbmdlUmVzcG9uc2U6IGxtVjJDaGFsbGVuZ2VSZXNwb25zZSxcbiAgICBcdG50Q2hhbGxlbmdlUmVzcG9uc2U6IG50VjJDaGFsbGVuZ2VSZXNwb25zZVxuICAgIH07XG59XG5cbmZ1bmN0aW9uIE5UT1dGdjIocHdoYXNoLCB1c2VyLCBkb21haW4pe1xuXHRyZXR1cm4gaG1hY19tZDUocHdoYXNoLCBCdWZmZXIuZnJvbSh1c2VyLnRvVXBwZXJDYXNlKCkgKyBkb21haW4sICd1dGYxNmxlJykpO1xufVxuXG5leHBvcnRzLmNyZWF0ZVR5cGUxTWVzc2FnZSA9IGNyZWF0ZVR5cGUxTWVzc2FnZTtcbmV4cG9ydHMucGFyc2VUeXBlMk1lc3NhZ2UgPSBwYXJzZVR5cGUyTWVzc2FnZTtcbmV4cG9ydHMuY3JlYXRlVHlwZTNNZXNzYWdlID0gY3JlYXRlVHlwZTNNZXNzYWdlO1xuZXhwb3J0cy5jcmVhdGVfTlRfaGFzaGVkX3Bhc3N3b3JkID0gY3JlYXRlX05UX2hhc2hlZF9wYXNzd29yZF92MTtcbmV4cG9ydHMuY3JlYXRlX0xNX2hhc2hlZF9wYXNzd29yZCA9IGNyZWF0ZV9MTV9oYXNoZWRfcGFzc3dvcmRfdjE7XG4vKiBlc2xpbnQtZW5hYmxlICovXG4iXX0=
|