@appium/base-driver 8.3.0 → 8.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/lib/basedriver/capabilities.js +2 -4
- package/build/lib/basedriver/commands/event.js +2 -4
- package/build/lib/basedriver/commands/find.js +2 -4
- package/build/lib/basedriver/commands/index.js +2 -4
- package/build/lib/basedriver/commands/log.js +2 -4
- package/build/lib/basedriver/commands/session.js +2 -4
- package/build/lib/basedriver/commands/settings.js +2 -4
- package/build/lib/basedriver/commands/timeout.js +2 -4
- package/build/lib/basedriver/desired-caps.js +2 -4
- package/build/lib/basedriver/device-settings.js +2 -4
- package/build/lib/basedriver/driver.js +17 -6
- package/build/lib/basedriver/helpers.js +2 -4
- package/build/lib/basedriver/logger.js +2 -4
- package/build/lib/constants.js +2 -4
- package/build/lib/express/crash.js +2 -4
- package/build/lib/express/express-logging.js +2 -4
- package/build/lib/express/idempotency.js +2 -4
- package/build/lib/express/logger.js +2 -4
- package/build/lib/express/middleware.js +2 -4
- package/build/lib/express/server.js +2 -4
- package/build/lib/express/static.js +2 -4
- package/build/lib/express/websocket.js +2 -4
- package/build/lib/helpers/capabilities.js +2 -4
- package/build/lib/index.js +2 -4
- package/build/lib/jsonwp-proxy/protocol-converter.js +2 -4
- package/build/lib/jsonwp-proxy/proxy.js +2 -4
- package/build/lib/jsonwp-status/status.js +2 -4
- package/build/lib/protocol/errors.js +2 -4
- package/build/lib/protocol/helpers.js +2 -4
- package/build/lib/protocol/index.js +2 -4
- package/build/lib/protocol/protocol.js +2 -4
- package/build/lib/protocol/routes.js +2 -4
- package/build/lib/protocol/validators.js +2 -4
- package/build/test/basedriver/README.md +5 -0
- package/build/test/basedriver/driver-e2e-tests.js +2 -4
- package/build/test/basedriver/driver-tests.js +2 -4
- package/build/test/basedriver/index.js +2 -4
- package/build/test/e2e/basedriver/driver.e2e.spec.js +15 -0
- package/build/test/e2e/basedriver/helpers.e2e.spec.js +192 -0
- package/build/test/e2e/basedriver/websockets.e2e.spec.js +82 -0
- package/build/test/e2e/express/server.e2e.spec.js +159 -0
- package/build/test/e2e/jsonwp-proxy/proxy.e2e.spec.js +59 -0
- package/build/test/e2e/protocol/fake-driver.js +163 -0
- package/build/test/e2e/protocol/helpers.js +25 -0
- package/build/test/e2e/protocol/protocol.e2e.spec.js +1186 -0
- package/build/test/helpers.js +2 -4
- package/build/test/unit/basedriver/capabilities.spec.js +672 -0
- package/build/test/unit/basedriver/capability.spec.js +353 -0
- package/build/test/unit/basedriver/commands/event.spec.js +110 -0
- package/build/test/unit/basedriver/commands/log.spec.js +85 -0
- package/build/test/unit/basedriver/driver.spec.js +15 -0
- package/build/test/unit/basedriver/helpers.spec.js +151 -0
- package/build/test/unit/basedriver/timeout.spec.js +135 -0
- package/build/test/unit/express/server.spec.js +155 -0
- package/build/test/unit/express/static.spec.js +26 -0
- package/build/test/unit/jsonwp-proxy/mock-request.js +91 -0
- package/build/test/unit/jsonwp-proxy/protocol-converter.spec.js +171 -0
- package/build/test/unit/jsonwp-proxy/proxy.spec.js +292 -0
- package/build/test/unit/jsonwp-proxy/url.spec.js +165 -0
- package/build/test/unit/jsonwp-status/status.spec.js +34 -0
- package/build/test/unit/protocol/errors.spec.js +390 -0
- package/build/test/unit/protocol/routes.spec.js +80 -0
- package/build/test/unit/protocol/validator.spec.js +149 -0
- package/lib/basedriver/driver.js +15 -4
- package/package.json +14 -9
- package/test/basedriver/README.md +5 -0
- package/test/basedriver/driver-e2e-tests.js +1 -1
- package/build/test/basedriver/capabilities-specs.js +0 -674
- package/build/test/basedriver/capability-specs.js +0 -355
- package/build/test/basedriver/commands/event-specs.js +0 -112
- package/build/test/basedriver/commands/log-specs.js +0 -87
- package/build/test/basedriver/driver-e2e-specs.js +0 -17
- package/build/test/basedriver/driver-specs.js +0 -17
- package/build/test/basedriver/helpers-e2e-specs.js +0 -194
- package/build/test/basedriver/helpers-specs.js +0 -153
- package/build/test/basedriver/timeout-specs.js +0 -137
- package/build/test/basedriver/websockets-e2e-specs.js +0 -84
- package/build/test/express/server-e2e-specs.js +0 -161
- package/build/test/express/server-specs.js +0 -157
- package/build/test/express/static-specs.js +0 -28
- package/build/test/jsonwp-proxy/mock-request.js +0 -93
- package/build/test/jsonwp-proxy/protocol-converter-specs.js +0 -173
- package/build/test/jsonwp-proxy/proxy-e2e-specs.js +0 -61
- package/build/test/jsonwp-proxy/proxy-specs.js +0 -294
- package/build/test/jsonwp-proxy/url-specs.js +0 -167
- package/build/test/jsonwp-status/status-specs.js +0 -36
- package/build/test/protocol/errors-specs.js +0 -388
- package/build/test/protocol/fake-driver.js +0 -165
- package/build/test/protocol/helpers.js +0 -27
- package/build/test/protocol/protocol-e2e-specs.js +0 -1188
- package/build/test/protocol/routes-specs.js +0 -82
- package/build/test/protocol/validator-specs.js +0 -151
- package/test/basedriver/capabilities-specs.js +0 -537
- package/test/basedriver/capability-specs.js +0 -383
- package/test/basedriver/commands/event-specs.js +0 -74
- package/test/basedriver/commands/log-specs.js +0 -79
- package/test/basedriver/driver-e2e-specs.js +0 -8
- package/test/basedriver/driver-specs.js +0 -8
- package/test/basedriver/fixtures/BadZippedApp.zip +0 -1
- package/test/basedriver/fixtures/FakeAndroidApp.apk +0 -1
- package/test/basedriver/fixtures/FakeAndroidApp.asd +0 -0
- package/test/basedriver/fixtures/FakeIOSApp.app +0 -1
- package/test/basedriver/fixtures/FakeIOSApp.app.zip +0 -0
- package/test/basedriver/fixtures/FakeIOSApp.ipa +0 -0
- package/test/basedriver/fixtures/custom-element-finder-bad.js +0 -5
- package/test/basedriver/fixtures/custom-element-finder.js +0 -29
- package/test/basedriver/helpers-e2e-specs.js +0 -187
- package/test/basedriver/helpers-specs.js +0 -137
- package/test/basedriver/timeout-specs.js +0 -128
- package/test/basedriver/websockets-e2e-specs.js +0 -75
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Driver Test Helpers
|
|
2
|
+
|
|
3
|
+
This directory contains modules which expose test suites that an external driver can use to test against the base implementation. They are published in the `@appium/base-driver` package.
|
|
4
|
+
|
|
5
|
+
Drivers wanting to leverage these suites will want to add `@appium/base-driver` to their `devDependencies`.
|
|
@@ -409,7 +409,5 @@ function baseDriverE2ETests(DriverClass, defaultCaps = {}) {
|
|
|
409
409
|
}
|
|
410
410
|
|
|
411
411
|
var _default = baseDriverE2ETests;
|
|
412
|
-
exports.default = _default;
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvYmFzZWRyaXZlci9kcml2ZXItZTJlLXRlc3RzLmpzIl0sIm5hbWVzIjpbIlBPU1QiLCJERUxFVEUiLCJNRVRIT0RTIiwiYmFzZURyaXZlckUyRVRlc3RzIiwiRHJpdmVyQ2xhc3MiLCJkZWZhdWx0Q2FwcyIsImFkZHJlc3MiLCJURVNUX0hPU1QiLCJwb3J0IiwiY2xhc3NOYW1lIiwibmFtZSIsImRlc2NyaWJlIiwiYmFzZVNlcnZlciIsImQiLCJuZXdTZXNzaW9uVVJMIiwiY3JlYXRlQXBwaXVtVGVzdFVSTCIsImNyZWF0ZVNlc3Npb25VUkwiLCJiZWZvcmUiLCJyb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24iLCJob3N0bmFtZSIsIl8iLCJhZnRlciIsImNsb3NlIiwic3RhcnRTZXNzaW9uIiwiY2FwcyIsInVybCIsIm1ldGhvZCIsImRhdGEiLCJjYXBhYmlsaXRpZXMiLCJhbHdheXNNYXRjaCIsImZpcnN0TWF0Y2giLCJ2YWx1ZSIsImVuZFNlc3Npb24iLCJpZCIsInZhbGlkYXRlU3RhdHVzIiwiZ2V0U2Vzc2lvbiIsIml0Iiwic2Vzc2lvbklkcyIsInRpbWVzIiwic2Vzc2lvbklkIiwiaGVhZGVycyIsInNpbXBsZSIsInJlc29sdmVXaXRoRnVsbFJlc3BvbnNlIiwicHVzaCIsInVuaXEiLCJsZW5ndGgiLCJzaG91bGQiLCJlcXVhbCIsInN0YXR1cyIsInJlcXMiLCJCIiwiYWxsIiwibWFwIiwieCIsImV4aXN0IiwicGxhdGZvcm1OYW1lIiwiZGV2aWNlTmFtZSIsInNraXAiLCJvcmlnaW5hbEZpbmRFbGVtZW50Iiwib3JpZ2luYWxGaW5kRWxlbWVudHMiLCJzdGFydFRpbWVvdXRTZXNzaW9uIiwidGltZW91dCIsImNsb25lRGVlcCIsImZpbmRFbGVtZW50IiwiYmluZCIsImZpbmRFbGVtZW50cyIsImRlbGF5IiwibmV3U2Vzc2lvbiIsIm5ld0NvbW1hbmRUaW1lb3V0TXMiLCJiZSIsImFib3ZlIiwic2Vzc2lvblVSTCIsInVzaW5nIiwiZXJyb3IiLCJyZXNwIiwic3RhcnQiLCJEYXRlIiwibm93IiwiZXFsIiwibm90Iiwibm9Db21tYW5kVGltZXIiLCJzZXR0aW5ncyIsIkRldmljZVNldHRpbmdzIiwiaWdub3JlVW5pbXBvcnRhbnRWaWV3cyIsImdldFNldHRpbmdzIiwiZmFsc2UiLCJ1cGRhdGUiLCJldmVudHVhbGx5IiwicmVqZWN0ZWRXaXRoIiwiX29sZEdldFN0YXR1cyIsImdldFN0YXR1cyIsInJlcVByb21pc2UiLCJzaHV0ZG93bkV2ZW50UHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJzZXRUaW1lb3V0IiwiRXJyb3IiLCJvblVuZXhwZWN0ZWRTaHV0ZG93biIsInN0YXJ0VW5leHBlY3RlZFNodXRkb3duIiwibWVzc2FnZSIsImNvbnRhaW4iLCJzZXNzaW9uIiwicmVzIiwiZXZlbnRzIiwiT2JqZWN0IiwiYXNzaWduIiwibmV3U2Vzc2lvblJlcXVlc3RlZCIsIm5ld1Nlc3Npb25TdGFydGVkIiwiYSIsIkJhc2VEcml2ZXIiLCJyZXQiLCJQUkVGSVhFRF9BUFBJVU1fT1BUU19DQVAiLCJwbGF0Zm9ybVZlcnNpb24iLCJvcHRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBLE1BQU07QUFBQ0EsRUFBQUEsSUFBRDtBQUFPQyxFQUFBQTtBQUFQLElBQWlCQyxnQkFBdkI7O0FBRUEsU0FBU0Msa0JBQVQsQ0FBNkJDLFdBQTdCLEVBQTBDQyxXQUFXLEdBQUcsRUFBeEQsRUFBNEQ7QUFBQTs7QUFDMUQsTUFBSUMsT0FBTywyQkFBR0QsV0FBVyxDQUFDLGdCQUFELENBQWQsdUVBQW9DRSxrQkFBL0M7QUFDQSxNQUFJQyxJQUFJLEdBQUdILFdBQVcsQ0FBQyxhQUFELENBQXRCO0FBQ0EsUUFBTUksU0FBUyxHQUFHTCxXQUFXLENBQUNNLElBQVosSUFBb0Isa0JBQXRDO0FBRUFDLEVBQUFBLFFBQVEsQ0FBRSxzQkFBcUJGLFNBQVUsR0FBakMsRUFBcUMsWUFBWTtBQUN2RCxR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dUUsa0JBQWtCO0FBQ3pGLGdCQUFNMEUsR0FBRyxHQUFHLE1BQU12RixZQUFZLENBQUM7QUFDN0JnQyxZQUFBQSxZQUFZLEVBQUUsS0FEZTtBQUU3QixhQUFDd0Qsc0NBQUQsR0FBNEI7QUFDMUJDLGNBQUFBLGVBQWUsRUFBRSxNQURTO0FBRTFCLG1DQUFxQjtBQUZLO0FBRkMsV0FBRCxDQUE5QjtBQU9BbkcsVUFBQUEsQ0FBQyxDQUFDb0csSUFBRixDQUFPRCxlQUFQLENBQXVCbEUsTUFBdkIsQ0FBOEJnQyxHQUE5QixDQUFrQyxNQUFsQztBQUNBakUsVUFBQUEsQ0FBQyxDQUFDb0csSUFBRixDQUFPekQsVUFBUCxDQUFrQlYsTUFBbEIsQ0FBeUJnQyxHQUF6QixDQUE2QixXQUE3QjtBQUNBLGdCQUFNOUMsVUFBVSxDQUFDOEUsR0FBRyxDQUFDdkUsU0FBTCxDQUFoQjtBQUNELFNBWEMsQ0FBRjtBQVlELE9BYk8sQ0FBUjtBQWNEO0FBQ0YsR0F4Vk8sQ0FBUjtBQXlWRDs7ZUFFY3BDLGtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEJhc2VEcml2ZXIsIHNlcnZlciwgcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uLCBEZXZpY2VTZXR0aW5ncyB9IGZyb20gJy4uLy4uL2xpYic7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IHtURVNUX0hPU1QsIGdldFRlc3RQb3J0LCBjcmVhdGVBcHBpdW1VUkwsIE1FVEhPRFN9IGZyb20gJy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgUFJFRklYRURfQVBQSVVNX09QVFNfQ0FQIH0gZnJvbSAnLi4vLi4vbGliL2Jhc2Vkcml2ZXIvY2FwYWJpbGl0aWVzJztcbmNvbnN0IHtQT1NULCBERUxFVEV9ID0gTUVUSE9EUztcblxuZnVuY3Rpb24gYmFzZURyaXZlckUyRVRlc3RzIChEcml2ZXJDbGFzcywgZGVmYXVsdENhcHMgPSB7fSkge1xuICBsZXQgYWRkcmVzcyA9IGRlZmF1bHRDYXBzWydhcHBpdW06YWRkcmVzcyddID8/IFRFU1RfSE9TVDtcbiAgbGV0IHBvcnQgPSBkZWZhdWx0Q2Fwc1snYXBwaXVtOnBvcnQnXTtcbiAgY29uc3QgY2xhc3NOYW1lID0gRHJpdmVyQ2xhc3MubmFtZSB8fCAnKHVua25vd24gZHJpdmVyKSc7XG5cbiAgZGVzY3JpYmUoYEJhc2VEcml2ZXIgRTJFIChhcyAke2NsYXNzTmFtZX0pYCwgZnVuY3Rpb24gKCkge1xuICAgIGxldCBiYXNlU2VydmVyLCBkO1xuICAgIC8qKlxuICAgICAgICogVGhpcyBVUkwgY3JlYXRlcyBhIG5ldyBzZXNzaW9uXG4gICAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAgICoqL1xuICAgIGxldCBuZXdTZXNzaW9uVVJMO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIFVSTCB3aXRoIGJhc2UgaG9zdC9wb3J0LiBTdXBwbHkgYHNlc3Npb25gIGFuZCBgcGF0aG5hbWVgXG4gICAgICogQHR5cGUge18uQ3VycmllZEZ1bmN0aW9uMjxzdHJpbmcsc3RyaW5nLHN0cmluZz59XG4gICAgICovXG4gICAgbGV0IGNyZWF0ZUFwcGl1bVRlc3RVUkw7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgVVJMIHdpdGggdGhlIGdpdmVuIHNlc3Npb24gSUQgYW5kIGEgYmxhbmsgcGF0aG5hbWU7XG4gICAgICogZS5nLiwgYGh0dHA6Ly9mb28uYmFyOjEyMy9zZXNzaW9uLzxzZXNzaW9uLWlkPmBcbiAgICAgKiAgQHR5cGUge18uQ3VycmllZEZ1bmN0aW9uMTxzdHJpbmcsc3RyaW5nPn1cbiAgICAgKi9cbiAgICBsZXQgY3JlYXRlU2Vzc2lvblVSTDtcblxuICAgIGJlZm9yZShhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBwb3J0ID0gcG9ydCA/PyBhd2FpdCBnZXRUZXN0UG9ydCgpO1xuICAgICAgZGVmYXVsdENhcHMgPSB7Li4uZGVmYXVsdENhcHMsICdhcHBpdW06cG9ydCc6IHBvcnR9O1xuICAgICAgZCA9IG5ldyBEcml2ZXJDbGFzcyh7cG9ydCwgYWRkcmVzc30pO1xuICAgICAgYmFzZVNlcnZlciA9IGF3YWl0IHNlcnZlcih7XG4gICAgICAgIHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbjogcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uKGQpLFxuICAgICAgICBwb3J0LFxuICAgICAgICBob3N0bmFtZTogVEVTVF9IT1NUXG4gICAgICB9KTtcbiAgICAgIGNyZWF0ZUFwcGl1bVRlc3RVUkwgPSBjcmVhdGVBcHBpdW1VUkwoYWRkcmVzcywgcG9ydCk7XG4gICAgICBuZXdTZXNzaW9uVVJMID0gY3JlYXRlQXBwaXVtVGVzdFVSTCgnJywgJ3Nlc3Npb24nKTtcbiAgICAgIGNyZWF0ZVNlc3Npb25VUkwgPSBjcmVhdGVBcHBpdW1UZXN0VVJMKF8sICcnKTtcbiAgICB9KTtcblxuICAgIGFmdGVyKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGJhc2VTZXJ2ZXIuY2xvc2UoKTtcbiAgICB9KTtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIHN0YXJ0U2Vzc2lvbiAoY2Fwcykge1xuICAgICAgcmV0dXJuIChhd2FpdCBheGlvcyh7XG4gICAgICAgIHVybDogbmV3U2Vzc2lvblVSTCxcbiAgICAgICAgbWV0aG9kOiBQT1NULFxuICAgICAgICBkYXRhOiB7Y2FwYWJpbGl0aWVzOiB7YWx3YXlzTWF0Y2g6IGNhcHMsIGZpcnN0TWF0Y2g6IFt7fV19fSxcbiAgICAgIH0pKS5kYXRhLnZhbHVlO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIGVuZFNlc3Npb24gKGlkKSB7XG4gICAgICByZXR1cm4gKGF3YWl0IGF4aW9zKHtcbiAgICAgICAgdXJsOiBjcmVhdGVTZXNzaW9uVVJMKGlkKSxcbiAgICAgICAgbWV0aG9kOiBERUxFVEUsXG4gICAgICAgIHZhbGlkYXRlU3RhdHVzOiBudWxsLFxuICAgICAgfSkpLmRhdGEudmFsdWU7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gZ2V0U2Vzc2lvbiAoaWQpIHtcbiAgICAgIHJldHVybiAoYXdhaXQgYXhpb3Moe1xuICAgICAgICB1cmw6IGNyZWF0ZVNlc3Npb25VUkwoaWQpLFxuICAgICAgfSkpLmRhdGEudmFsdWU7XG4gICAgfVxuXG4gICAgZGVzY3JpYmUoJ3Nlc3Npb24gaGFuZGxpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpdCgnc2hvdWxkIGhhbmRsZSBpZGVtcG90ZW5jeSB3aGlsZSBjcmVhdGluZyBzZXNzaW9ucycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3Qgc2Vzc2lvbklkcyA9IFtdO1xuICAgICAgICBsZXQgdGltZXMgPSAwO1xuICAgICAgICBkbyB7XG4gICAgICAgICAgY29uc3Qge3Nlc3Npb25JZH0gPSAoYXdhaXQgYXhpb3Moe1xuICAgICAgICAgICAgdXJsOiBuZXdTZXNzaW9uVVJMLFxuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAnWC1JZGVtcG90ZW5jeS1LZXknOiAnMTIzNDU2JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtZXRob2Q6IFBPU1QsXG4gICAgICAgICAgICBkYXRhOiB7Y2FwYWJpbGl0aWVzOiB7YWx3YXlzTWF0Y2g6IGRlZmF1bHRDYXBzLCBmaXJzdE1hdGNoOiBbe31dfX0sXG4gICAgICAgICAgICBzaW1wbGU6IGZhbHNlLFxuICAgICAgICAgICAgcmVzb2x2ZVdpdGhGdWxsUmVzcG9uc2U6IHRydWVcbiAgICAgICAgICB9KSkuZGF0YS52YWx1ZTtcblxuICAgICAgICAgIHNlc3Npb25JZHMucHVzaChzZXNzaW9uSWQpO1xuICAgICAgICAgIHRpbWVzKys7XG4gICAgICAgIH0gd2hpbGUgKHRpbWVzIDwgMik7XG4gICAgICAgIF8udW5pcShzZXNzaW9uSWRzKS5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuXG4gICAgICAgIGNvbnN0IHtzdGF0dXMsIGRhdGF9ID0gYXdhaXQgYXhpb3Moe1xuICAgICAgICAgIHVybDogY3JlYXRlU2Vzc2lvblVSTChzZXNzaW9uSWRzWzBdKSxcbiAgICAgICAgICBtZXRob2Q6IERFTEVURSxcbiAgICAgICAgfSk7XG4gICAgICAgIHN0YXR1cy5zaG91bGQuZXF1YWwoMjAwKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKGRhdGEudmFsdWUsIG51bGwpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgaGFuZGxlIGlkZW1wb3RlbmN5IHdoaWxlIGNyZWF0aW5nIHBhcmFsbGVsIHNlc3Npb25zJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCByZXFzID0gW107XG4gICAgICAgIGxldCB0aW1lcyA9IDA7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICByZXFzLnB1c2goYXhpb3Moe1xuICAgICAgICAgICAgdXJsOiBuZXdTZXNzaW9uVVJMLFxuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAnWC1JZGVtcG90ZW5jeS1LZXknOiAnMTIzNDUnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1ldGhvZDogUE9TVCxcbiAgICAgICAgICAgIGRhdGE6IHtjYXBhYmlsaXRpZXM6IHthbHdheXNNYXRjaDogZGVmYXVsdENhcHMsIGZpcnN0TWF0Y2g6IFt7fV19fSxcbiAgICAgICAgICB9KSk7XG4gICAgICAgICAgdGltZXMrKztcbiAgICAgICAgfSB3aGlsZSAodGltZXMgPCAyKTtcbiAgICAgICAgY29uc3Qgc2Vzc2lvbklkcyA9IChhd2FpdCBCLmFsbChyZXFzKSkubWFwKCh4KSA9PiB4LmRhdGEudmFsdWUuc2Vzc2lvbklkKTtcbiAgICAgICAgXy51bmlxKHNlc3Npb25JZHMpLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG5cbiAgICAgICAgY29uc3Qge3N0YXR1cywgZGF0YX0gPSBhd2FpdCBheGlvcyh7XG4gICAgICAgICAgdXJsOiBjcmVhdGVTZXNzaW9uVVJMKHNlc3Npb25JZHNbMF0pLFxuICAgICAgICAgIG1ldGhvZDogREVMRVRFLFxuICAgICAgICB9KTtcbiAgICAgICAgc3RhdHVzLnNob3VsZC5lcXVhbCgyMDApO1xuICAgICAgICBzaG91bGQuZXF1YWwoZGF0YS52YWx1ZSwgbnVsbCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBjcmVhdGUgc2Vzc2lvbiBhbmQgcmV0cmlldmUgYSBzZXNzaW9uIGlkLCB0aGVuIGRlbGV0ZSBpdCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgbGV0IHtzdGF0dXMsIGRhdGF9ID0gYXdhaXQgYXhpb3Moe1xuICAgICAgICAgIHVybDogbmV3U2Vzc2lvblVSTCxcbiAgICAgICAgICBtZXRob2Q6IFBPU1QsXG4gICAgICAgICAgZGF0YToge2NhcGFiaWxpdGllczoge2Fsd2F5c01hdGNoOiBkZWZhdWx0Q2FwcywgZmlyc3RNYXRjaDogW3t9XX19LFxuICAgICAgICB9KTtcblxuICAgICAgICBzdGF0dXMuc2hvdWxkLmVxdWFsKDIwMCk7XG4gICAgICAgIHNob3VsZC5leGlzdChkYXRhLnZhbHVlLnNlc3Npb25JZCk7XG4gICAgICAgIGRhdGEudmFsdWUuY2FwYWJpbGl0aWVzLnBsYXRmb3JtTmFtZS5zaG91bGQuZXF1YWwoZGVmYXVsdENhcHMucGxhdGZvcm1OYW1lKTtcbiAgICAgICAgZGF0YS52YWx1ZS5jYXBhYmlsaXRpZXMuZGV2aWNlTmFtZS5zaG91bGQuZXF1YWwoZGVmYXVsdENhcHNbJ2FwcGl1bTpkZXZpY2VOYW1lJ10pO1xuXG4gICAgICAgICh7c3RhdHVzLCBkYXRhfSA9IGF3YWl0IGF4aW9zKHtcbiAgICAgICAgICB1cmw6IGNyZWF0ZVNlc3Npb25VUkwoZC5zZXNzaW9uSWQpLFxuICAgICAgICAgIG1ldGhvZDogREVMRVRFLFxuICAgICAgICB9KSk7XG5cbiAgICAgICAgc3RhdHVzLnNob3VsZC5lcXVhbCgyMDApO1xuICAgICAgICBzaG91bGQuZXF1YWwoZGF0YS52YWx1ZSwgbnVsbCk7XG4gICAgICAgIHNob3VsZC5lcXVhbChkLnNlc3Npb25JZCwgbnVsbCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0LnNraXAoJ3Nob3VsZCB0aHJvdyBOWUkgZm9yIGNvbW1hbmRzIG5vdCBpbXBsZW1lbnRlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdjb21tYW5kIHRpbWVvdXRzJywgZnVuY3Rpb24gKCkge1xuICAgICAgbGV0IG9yaWdpbmFsRmluZEVsZW1lbnQsIG9yaWdpbmFsRmluZEVsZW1lbnRzO1xuXG4gICAgICBhc3luYyBmdW5jdGlvbiBzdGFydFRpbWVvdXRTZXNzaW9uICh0aW1lb3V0KSB7XG4gICAgICAgIGNvbnN0IGNhcHMgPSBfLmNsb25lRGVlcChkZWZhdWx0Q2Fwcyk7XG4gICAgICAgIGNhcHNbJ2FwcGl1bTpuZXdDb21tYW5kVGltZW91dCddID0gdGltZW91dDtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHN0YXJ0U2Vzc2lvbihjYXBzKTtcbiAgICAgIH1cblxuICAgICAgYmVmb3JlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgb3JpZ2luYWxGaW5kRWxlbWVudCA9IGQuZmluZEVsZW1lbnQ7XG4gICAgICAgIGQuZmluZEVsZW1lbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuICdmb28nO1xuICAgICAgICB9LmJpbmQoZCk7XG5cbiAgICAgICAgb3JpZ2luYWxGaW5kRWxlbWVudHMgPSBkLmZpbmRFbGVtZW50cztcbiAgICAgICAgZC5maW5kRWxlbWVudHMgPSBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgYXdhaXQgQi5kZWxheSgyMDApO1xuICAgICAgICAgIHJldHVybiBbJ2ZvbyddO1xuICAgICAgICB9LmJpbmQoZCk7XG4gICAgICB9KTtcblxuICAgICAgYWZ0ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgICBkLmZpbmRFbGVtZW50ID0gb3JpZ2luYWxGaW5kRWxlbWVudDtcbiAgICAgICAgZC5maW5kRWxlbWVudHMgPSBvcmlnaW5hbEZpbmRFbGVtZW50cztcbiAgICAgIH0pO1xuXG5cbiAgICAgIGl0KCdzaG91bGQgc2V0IGEgZGVmYXVsdCBjb21tYW5kVGltZW91dCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgbGV0IG5ld1Nlc3Npb24gPSBhd2FpdCBzdGFydFRpbWVvdXRTZXNzaW9uKCk7XG4gICAgICAgIGQubmV3Q29tbWFuZFRpbWVvdXRNcy5zaG91bGQuYmUuYWJvdmUoMCk7XG4gICAgICAgIGF3YWl0IGVuZFNlc3Npb24obmV3U2Vzc2lvbi5zZXNzaW9uSWQpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgdGltZW91dCBvbiBjb21tYW5kcyB1c2luZyBjb21tYW5kVGltZW91dCBjYXAnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGxldCBuZXdTZXNzaW9uID0gYXdhaXQgc3RhcnRUaW1lb3V0U2Vzc2lvbigwLjI1KTtcbiAgICAgICAgLy8gWFhYOiByYWNlIGNvbmRpdGlvbjogd2UgbXVzdCBidWlsZCB0aGlzIFVSTCBiZWZvcmUgLi4uc29tZXRoaW5nIGhhcHBlbnMuLi5cbiAgICAgICAgLy8gd2hpY2ggY2F1c2VzIGBkLnNlc3Npb25JZGAgdG8gYmUgbWlzc2luZ1xuICAgICAgICBsZXQgc2Vzc2lvblVSTCA9IGNyZWF0ZVNlc3Npb25VUkwoZC5zZXNzaW9uSWQpO1xuICAgICAgICBhd2FpdCBheGlvcyh7XG4gICAgICAgICAgdXJsOiBjcmVhdGVBcHBpdW1UZXN0VVJMKGQuc2Vzc2lvbklkLCAnZWxlbWVudCcpLFxuICAgICAgICAgIG1ldGhvZDogUE9TVCxcbiAgICAgICAgICBkYXRhOiB7dXNpbmc6ICduYW1lJywgdmFsdWU6ICdmb28nfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGF3YWl0IEIuZGVsYXkoNDAwKTtcbiAgICAgICAgY29uc3Qge2RhdGF9ID0gYXdhaXQgYXhpb3Moe1xuICAgICAgICAgIHVybDogc2Vzc2lvblVSTCxcbiAgICAgICAgICB2YWxpZGF0ZVN0YXR1czogbnVsbCxcbiAgICAgICAgfSk7XG4gICAgICAgIHNob3VsZC5lcXVhbChkYXRhLnZhbHVlLmVycm9yLCAnaW52YWxpZCBzZXNzaW9uIGlkJyk7XG4gICAgICAgIHNob3VsZC5lcXVhbChkLnNlc3Npb25JZCwgbnVsbCk7XG4gICAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCBlbmRTZXNzaW9uKG5ld1Nlc3Npb24uc2Vzc2lvbklkKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHJlc3AuZXJyb3IsICdpbnZhbGlkIHNlc3Npb24gaWQnKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIG5vdCB0aW1lb3V0IHdpdGggY29tbWFuZFRpbWVvdXQgb2YgZmFsc2UnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGxldCBuZXdTZXNzaW9uID0gYXdhaXQgc3RhcnRUaW1lb3V0U2Vzc2lvbigwLjEpO1xuICAgICAgICBsZXQgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgICAgICBjb25zdCB7dmFsdWV9ID0gKGF3YWl0IGF4aW9zKHtcbiAgICAgICAgICB1cmw6IGNyZWF0ZUFwcGl1bVRlc3RVUkwoZC5zZXNzaW9uSWQsICdlbGVtZW50cycpLFxuICAgICAgICAgIG1ldGhvZDogUE9TVCxcbiAgICAgICAgICBkYXRhOiB7dXNpbmc6ICduYW1lJywgdmFsdWU6ICdmb28nfSxcbiAgICAgICAgfSkpLmRhdGE7XG4gICAgICAgIChEYXRlLm5vdygpIC0gc3RhcnQpLnNob3VsZC5iZS5hYm92ZSgxNTApO1xuICAgICAgICB2YWx1ZS5zaG91bGQuZXFsKFsnZm9vJ10pO1xuICAgICAgICBhd2FpdCBlbmRTZXNzaW9uKG5ld1Nlc3Npb24uc2Vzc2lvbklkKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIG5vdCB0aW1lb3V0IHdpdGggY29tbWFuZFRpbWVvdXQgb2YgMCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZC5uZXdDb21tYW5kVGltZW91dE1zID0gMjtcbiAgICAgICAgbGV0IG5ld1Nlc3Npb24gPSBhd2FpdCBzdGFydFRpbWVvdXRTZXNzaW9uKDApO1xuXG4gICAgICAgIGF3YWl0IGF4aW9zKHtcbiAgICAgICAgICB1cmw6IGNyZWF0ZUFwcGl1bVRlc3RVUkwoZC5zZXNzaW9uSWQsICdlbGVtZW50JyksXG4gICAgICAgICAgbWV0aG9kOiBQT1NULFxuICAgICAgICAgIGRhdGE6IHt1c2luZzogJ25hbWUnLCB2YWx1ZTogJ2Zvbyd9LFxuICAgICAgICB9KTtcbiAgICAgICAgYXdhaXQgQi5kZWxheSg0MDApO1xuICAgICAgICBjb25zdCB7dmFsdWV9ID0gKGF3YWl0IGF4aW9zKHtcbiAgICAgICAgICB1cmw6IGNyZWF0ZVNlc3Npb25VUkwoZC5zZXNzaW9uSWQpLFxuICAgICAgICB9KSkuZGF0YTtcbiAgICAgICAgdmFsdWUucGxhdGZvcm1OYW1lLnNob3VsZC5lcXVhbChkZWZhdWx0Q2Fwcy5wbGF0Zm9ybU5hbWUpO1xuICAgICAgICBjb25zdCByZXNwID0gYXdhaXQgZW5kU2Vzc2lvbihuZXdTZXNzaW9uLnNlc3Npb25JZCk7XG4gICAgICAgIHNob3VsZC5lcXVhbChyZXNwLCBudWxsKTtcblxuICAgICAgICBkLm5ld0NvbW1hbmRUaW1lb3V0TXMgPSA2MCAqIDEwMDA7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBub3QgdGltZW91dCBpZiBpdHMganVzdCB0aGUgY29tbWFuZCB0YWtpbmcgYXdoaWxlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBsZXQgbmV3U2Vzc2lvbiA9IGF3YWl0IHN0YXJ0VGltZW91dFNlc3Npb24oMC4yNSk7XG4gICAgICAgIC8vIFhYWDogcmFjZSBjb25kaXRpb246IHdlIG11c3QgYnVpbGQgdGhpcyBVUkwgYmVmb3JlIC4uLnNvbWV0aGluZyBoYXBwZW5zLi4uXG4gICAgICAgIC8vIHdoaWNoIGNhdXNlcyBgZC5zZXNzaW9uSWRgIHRvIGJlIG1pc3NpbmdcbiAgICAgICAgbGV0IHNlc3Npb25VUkwgPSBjcmVhdGVTZXNzaW9uVVJMKGQuc2Vzc2lvbklkKTtcbiAgICAgICAgYXdhaXQgYXhpb3Moe1xuICAgICAgICAgIHVybDogY3JlYXRlQXBwaXVtVGVzdFVSTChkLnNlc3Npb25JZCwgJ2VsZW1lbnQnKSxcbiAgICAgICAgICBtZXRob2Q6IFBPU1QsXG4gICAgICAgICAgZGF0YToge3VzaW5nOiAnbmFtZScsIHZhbHVlOiAnZm9vJ30sXG4gICAgICAgIH0pO1xuICAgICAgICBhd2FpdCBCLmRlbGF5KDQwMCk7XG4gICAgICAgIGNvbnN0IHt2YWx1ZX0gPSAoYXdhaXQgYXhpb3Moe1xuICAgICAgICAgIHVybDogc2Vzc2lvblVSTCxcbiAgICAgICAgICB2YWxpZGF0ZVN0YXR1czogbnVsbCxcbiAgICAgICAgfSkpLmRhdGE7XG4gICAgICAgIHZhbHVlLmVycm9yLnNob3VsZC5lcXVhbCgnaW52YWxpZCBzZXNzaW9uIGlkJyk7XG4gICAgICAgIHNob3VsZC5lcXVhbChkLnNlc3Npb25JZCwgbnVsbCk7XG4gICAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCBlbmRTZXNzaW9uKG5ld1Nlc3Npb24uc2Vzc2lvbklkKTtcbiAgICAgICAgcmVzcC5lcnJvci5zaG91bGQuZXF1YWwoJ2ludmFsaWQgc2Vzc2lvbiBpZCcpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgbm90IGhhdmUgYSB0aW1lciBydW5uaW5nIGJlZm9yZSBvciBhZnRlciBhIHNlc3Npb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNob3VsZC5ub3QuZXhpc3QoZC5ub0NvbW1hbmRUaW1lcik7XG4gICAgICAgIGxldCBuZXdTZXNzaW9uID0gYXdhaXQgc3RhcnRUaW1lb3V0U2Vzc2lvbigwLjI1KTtcbiAgICAgICAgbmV3U2Vzc2lvbi5zZXNzaW9uSWQuc2hvdWxkLmVxdWFsKGQuc2Vzc2lvbklkKTtcbiAgICAgICAgc2hvdWxkLmV4aXN0KGQubm9Db21tYW5kVGltZXIpO1xuICAgICAgICBhd2FpdCBlbmRTZXNzaW9uKG5ld1Nlc3Npb24uc2Vzc2lvbklkKTtcbiAgICAgICAgc2hvdWxkLm5vdC5leGlzdChkLm5vQ29tbWFuZFRpbWVyKTtcbiAgICAgIH0pO1xuXG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnc2V0dGluZ3MgYXBpJywgZnVuY3Rpb24gKCkge1xuICAgICAgYmVmb3JlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZC5zZXR0aW5ncyA9IG5ldyBEZXZpY2VTZXR0aW5ncyh7aWdub3JlVW5pbXBvcnRhbnRWaWV3czogZmFsc2V9KTtcbiAgICAgIH0pO1xuICAgICAgaXQoJ3Nob3VsZCBiZSBhYmxlIHRvIGdldCBzZXR0aW5ncyBvYmplY3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGQuc2V0dGluZ3MuZ2V0U2V0dGluZ3MoKS5pZ25vcmVVbmltcG9ydGFudFZpZXdzLnNob3VsZC5iZS5mYWxzZTtcbiAgICAgIH0pO1xuICAgICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciB3aGVuIHVwZGF0ZVNldHRpbmdzIG1ldGhvZCBpcyBub3QgZGVmaW5lZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgZC5zZXR0aW5ncy51cGRhdGUoe2lnbm9yZVVuaW1wb3J0YW50Vmlld3M6IHRydWV9KS5zaG91bGQuZXZlbnR1YWxseVxuICAgICAgICAgICAgICAgIC5iZS5yZWplY3RlZFdpdGgoJ29uU2V0dGluZ3NVcGRhdGUnKTtcbiAgICAgIH0pO1xuICAgICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciBmb3IgaW52YWxpZCB1cGRhdGUgb2JqZWN0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBkLnNldHRpbmdzLnVwZGF0ZSgnaW52YWxpZCBqc29uJykuc2hvdWxkLmV2ZW50dWFsbHlcbiAgICAgICAgICAgICAgICAuYmUucmVqZWN0ZWRXaXRoKCdKU09OJyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCd1bmV4cGVjdGVkIGV4aXRzJywgZnVuY3Rpb24gKCkge1xuICAgICAgaXQoJ3Nob3VsZCByZWplY3QgYSBjdXJyZW50IGNvbW1hbmQgd2hlbiB0aGUgZHJpdmVyIGNyYXNoZXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGQuX29sZEdldFN0YXR1cyA9IGQuZ2V0U3RhdHVzO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGQuZ2V0U3RhdHVzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgYXdhaXQgQi5kZWxheSg1MDAwKTtcbiAgICAgICAgICB9LmJpbmQoZCk7XG4gICAgICAgICAgY29uc3QgcmVxUHJvbWlzZSA9IGF4aW9zKHtcbiAgICAgICAgICAgIHVybDogY3JlYXRlQXBwaXVtVGVzdFVSTCgnJywgJ3N0YXR1cycpLFxuICAgICAgICAgICAgdmFsaWRhdGVTdGF0dXM6IG51bGwsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgLy8gbWFrZSBzdXJlIHRoYXQgdGhlIHJlcXVlc3QgZ2V0cyB0byB0aGUgc2VydmVyIGJlZm9yZSBvdXIgc2h1dGRvd25cbiAgICAgICAgICBhd2FpdCBCLmRlbGF5KDEwMCk7XG4gICAgICAgICAgY29uc3Qgc2h1dGRvd25FdmVudFByb21pc2UgPSBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdChuZXcgRXJyb3IoJ29uVW5leHBlY3RlZFNodXRkb3duIGV2ZW50IGlzIGV4cGVjdGVkIHRvIGJlIGZpcmVkIHdpdGhpbiA1IHNlY29uZHMgdGltZW91dCcpKSwgNTAwMCk7XG4gICAgICAgICAgICBkLm9uVW5leHBlY3RlZFNodXRkb3duKHJlc29sdmUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGQuc3RhcnRVbmV4cGVjdGVkU2h1dGRvd24obmV3IEVycm9yKCdDcmFzaHl0aW1lcycpKTtcbiAgICAgICAgICBjb25zdCB7dmFsdWV9ID0gKGF3YWl0IHJlcVByb21pc2UpLmRhdGE7XG4gICAgICAgICAgdmFsdWUubWVzc2FnZS5zaG91bGQuY29udGFpbignQ3Jhc2h5dGltZXMnKTtcbiAgICAgICAgICBhd2FpdCBzaHV0ZG93bkV2ZW50UHJvbWlzZTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBkLmdldFN0YXR1cyA9IGQuX29sZEdldFN0YXR1cztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnZXZlbnQgdGltaW5ncycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGl0KCdzaG91bGQgbm90IGFkZCB0aW1pbmdzIGlmIG5vdCB1c2luZyBvcHQtaW4gY2FwJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBzZXNzaW9uID0gYXdhaXQgc3RhcnRTZXNzaW9uKGRlZmF1bHRDYXBzKTtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgZ2V0U2Vzc2lvbihzZXNzaW9uLnNlc3Npb25JZCk7XG4gICAgICAgIHNob3VsZC5ub3QuZXhpc3QocmVzLmV2ZW50cyk7XG4gICAgICAgIGF3YWl0IGVuZFNlc3Npb24oc2Vzc2lvbi5zZXNzaW9uSWQpO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIGFkZCBzdGFydCBzZXNzaW9uIHRpbWluZ3MnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IGNhcHMgPSBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0Q2FwcywgeydhcHBpdW06ZXZlbnRUaW1pbmdzJzogdHJ1ZX0pO1xuICAgICAgICBjb25zdCBzZXNzaW9uID0gYXdhaXQgc3RhcnRTZXNzaW9uKGNhcHMpO1xuICAgICAgICBjb25zdCByZXMgPSAoYXdhaXQgZ2V0U2Vzc2lvbihzZXNzaW9uLnNlc3Npb25JZCkpO1xuICAgICAgICBzaG91bGQuZXhpc3QocmVzLmV2ZW50cyk7XG4gICAgICAgIHNob3VsZC5leGlzdChyZXMuZXZlbnRzLm5ld1Nlc3Npb25SZXF1ZXN0ZWQpO1xuICAgICAgICBzaG91bGQuZXhpc3QocmVzLmV2ZW50cy5uZXdTZXNzaW9uU3RhcnRlZCk7XG4gICAgICAgIHJlcy5ldmVudHMubmV3U2Vzc2lvblJlcXVlc3RlZFswXS5zaG91bGQuYmUuYSgnbnVtYmVyJyk7XG4gICAgICAgIHJlcy5ldmVudHMubmV3U2Vzc2lvblN0YXJ0ZWRbMF0uc2hvdWxkLmJlLmEoJ251bWJlcicpO1xuICAgICAgICBhd2FpdCBlbmRTZXNzaW9uKHNlc3Npb24uc2Vzc2lvbklkKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaWYgKERyaXZlckNsYXNzID09PSBCYXNlRHJpdmVyKSB7XG4gICAgICAvLyBvbmx5IHJ1biB0aGlzIHRlc3Qgb24gYmFzZWRyaXZlciwgbm90IG90aGVyIGRyaXZlcnMgd2hpY2ggYWxzbyB1c2UgdGhlc2UgdGVzdHMsIHNpbmNlIHdlXG4gICAgICAvLyBkb24ndCB3YW50IHRoZW0gdG8gdHJ5IGFuZCBzdGFydCBzZXNzaW9ucyB3aXRoIHRoZXNlIHJhbmRvbSBjYXBhYmlsaXRpZXMgdGhhdCBhcmVcbiAgICAgIC8vIG5lY2Vzc2FyeSB0byB0ZXN0IHRoZSBhcHBpdW0gb3B0aW9ucyBsb2dpY1xuICAgICAgZGVzY3JpYmUoJ3NwZWNpYWwgYXBwaXVtOm9wdGlvbnMgY2FwYWJpbGl0eScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaXQoJ3Nob3VsZCBiZSBhYmxlIHRvIHN0YXJ0IGEgc2Vzc2lvbiB3aXRoIGNhcHMgaGVsZCBpbiBhcHBpdW06b3B0aW9ucycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjb25zdCByZXQgPSBhd2FpdCBzdGFydFNlc3Npb24oe1xuICAgICAgICAgICAgcGxhdGZvcm1OYW1lOiAnaU9TJyxcbiAgICAgICAgICAgIFtQUkVGSVhFRF9BUFBJVU1fT1BUU19DQVBdOiB7XG4gICAgICAgICAgICAgIHBsYXRmb3JtVmVyc2lvbjogJzExLjQnLFxuICAgICAgICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnaVBob25lIDExJyxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBkLm9wdHMucGxhdGZvcm1WZXJzaW9uLnNob3VsZC5lcWwoJzExLjQnKTtcbiAgICAgICAgICBkLm9wdHMuZGV2aWNlTmFtZS5zaG91bGQuZXFsKCdpUGhvbmUgMTEnKTtcbiAgICAgICAgICBhd2FpdCBlbmRTZXNzaW9uKHJldC5zZXNzaW9uSWQpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VEcml2ZXJFMkVUZXN0cztcbiJdLCJmaWxlIjoidGVzdC9iYXNlZHJpdmVyL2RyaXZlci1lMmUtdGVzdHMuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
|
|
412
|
+
exports.default = _default;
|
|
413
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvYmFzZWRyaXZlci9kcml2ZXItZTJlLXRlc3RzLmpzIl0sIm5hbWVzIjpbIlBPU1QiLCJERUxFVEUiLCJNRVRIT0RTIiwiYmFzZURyaXZlckUyRVRlc3RzIiwiRHJpdmVyQ2xhc3MiLCJkZWZhdWx0Q2FwcyIsImFkZHJlc3MiLCJURVNUX0hPU1QiLCJwb3J0IiwiY2xhc3NOYW1lIiwibmFtZSIsImRlc2NyaWJlIiwiYmFzZVNlcnZlciIsImQiLCJuZXdTZXNzaW9uVVJMIiwiY3JlYXRlQXBwaXVtVGVzdFVSTCIsImNyZWF0ZVNlc3Npb25VUkwiLCJiZWZvcmUiLCJyb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24iLCJob3N0bmFtZSIsIl8iLCJhZnRlciIsImNsb3NlIiwic3RhcnRTZXNzaW9uIiwiY2FwcyIsInVybCIsIm1ldGhvZCIsImRhdGEiLCJjYXBhYmlsaXRpZXMiLCJhbHdheXNNYXRjaCIsImZpcnN0TWF0Y2giLCJ2YWx1ZSIsImVuZFNlc3Npb24iLCJpZCIsInZhbGlkYXRlU3RhdHVzIiwiZ2V0U2Vzc2lvbiIsIml0Iiwic2Vzc2lvbklkcyIsInRpbWVzIiwic2Vzc2lvbklkIiwiaGVhZGVycyIsInNpbXBsZSIsInJlc29sdmVXaXRoRnVsbFJlc3BvbnNlIiwicHVzaCIsInVuaXEiLCJsZW5ndGgiLCJzaG91bGQiLCJlcXVhbCIsInN0YXR1cyIsInJlcXMiLCJCIiwiYWxsIiwibWFwIiwieCIsImV4aXN0IiwicGxhdGZvcm1OYW1lIiwiZGV2aWNlTmFtZSIsInNraXAiLCJvcmlnaW5hbEZpbmRFbGVtZW50Iiwib3JpZ2luYWxGaW5kRWxlbWVudHMiLCJzdGFydFRpbWVvdXRTZXNzaW9uIiwidGltZW91dCIsImNsb25lRGVlcCIsImZpbmRFbGVtZW50IiwiYmluZCIsImZpbmRFbGVtZW50cyIsImRlbGF5IiwibmV3U2Vzc2lvbiIsIm5ld0NvbW1hbmRUaW1lb3V0TXMiLCJiZSIsImFib3ZlIiwic2Vzc2lvblVSTCIsInVzaW5nIiwiZXJyb3IiLCJyZXNwIiwic3RhcnQiLCJEYXRlIiwibm93IiwiZXFsIiwibm90Iiwibm9Db21tYW5kVGltZXIiLCJzZXR0aW5ncyIsIkRldmljZVNldHRpbmdzIiwiaWdub3JlVW5pbXBvcnRhbnRWaWV3cyIsImdldFNldHRpbmdzIiwiZmFsc2UiLCJ1cGRhdGUiLCJldmVudHVhbGx5IiwicmVqZWN0ZWRXaXRoIiwiX29sZEdldFN0YXR1cyIsImdldFN0YXR1cyIsInJlcVByb21pc2UiLCJzaHV0ZG93bkV2ZW50UHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJzZXRUaW1lb3V0IiwiRXJyb3IiLCJvblVuZXhwZWN0ZWRTaHV0ZG93biIsInN0YXJ0VW5leHBlY3RlZFNodXRkb3duIiwibWVzc2FnZSIsImNvbnRhaW4iLCJzZXNzaW9uIiwicmVzIiwiZXZlbnRzIiwiT2JqZWN0IiwiYXNzaWduIiwibmV3U2Vzc2lvblJlcXVlc3RlZCIsIm5ld1Nlc3Npb25TdGFydGVkIiwiYSIsIkJhc2VEcml2ZXIiLCJyZXQiLCJQUkVGSVhFRF9BUFBJVU1fT1BUU19DQVAiLCJwbGF0Zm9ybVZlcnNpb24iLCJvcHRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBLE1BQU07QUFBQ0EsRUFBQUEsSUFBRDtBQUFPQyxFQUFBQTtBQUFQLElBQWlCQyxnQkFBdkI7O0FBRUEsU0FBU0Msa0JBQVQsQ0FBNkJDLFdBQTdCLEVBQTBDQyxXQUFXLEdBQUcsRUFBeEQsRUFBNEQ7QUFBQTs7QUFDMUQsTUFBSUMsT0FBTywyQkFBR0QsV0FBVyxDQUFDLGdCQUFELENBQWQsdUVBQW9DRSxrQkFBL0M7QUFDQSxNQUFJQyxJQUFJLEdBQUdILFdBQVcsQ0FBQyxhQUFELENBQXRCO0FBQ0EsUUFBTUksU0FBUyxHQUFHTCxXQUFXLENBQUNNLElBQVosSUFBb0Isa0JBQXRDO0FBRUFDLEVBQUFBLFFBQVEsQ0FBRSxzQkFBcUJGLFNBQVUsR0FBakMsRUFBcUMsWUFB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b0VBQUQsRUFBdUUsa0JBQWtCO0FBQ3pGLGdCQUFNMEUsR0FBRyxHQUFHLE1BQU12RixZQUFZLENBQUM7QUFDN0JnQyxZQUFBQSxZQUFZLEVBQUUsS0FEZTtBQUU3QixhQUFDd0Qsc0NBQUQsR0FBNEI7QUFDMUJDLGNBQUFBLGVBQWUsRUFBRSxNQURTO0FBRTFCLG1DQUFxQjtBQUZLO0FBRkMsV0FBRCxDQUE5QjtBQU9BbkcsVUFBQUEsQ0FBQyxDQUFDb0csSUFBRixDQUFPRCxlQUFQLENBQXVCbEUsTUFBdkIsQ0FBOEJnQyxHQUE5QixDQUFrQyxNQUFsQztBQUNBakUsVUFBQUEsQ0FBQyxDQUFDb0csSUFBRixDQUFPekQsVUFBUCxDQUFrQlYsTUFBbEIsQ0FBeUJnQyxHQUF6QixDQUE2QixXQUE3QjtBQUNBLGdCQUFNOUMsVUFBVSxDQUFDOEUsR0FBRyxDQUFDdkUsU0FBTCxDQUFoQjtBQUNELFNBWEMsQ0FBRjtBQVlELE9BYk8sQ0FBUjtBQWNEO0FBQ0YsR0F4Vk8sQ0FBUjtBQXlWRDs7ZUFFY3BDLGtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEJhc2VEcml2ZXIsIHNlcnZlciwgcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uLCBEZXZpY2VTZXR0aW5ncyB9IGZyb20gJy4uLy4uL2xpYic7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IHsgVEVTVF9IT1NULCBnZXRUZXN0UG9ydCwgY3JlYXRlQXBwaXVtVVJMLCBNRVRIT0RTIH0gZnJvbSAnLi4vaGVscGVycyc7XG5pbXBvcnQgeyBQUkVGSVhFRF9BUFBJVU1fT1BUU19DQVAgfSBmcm9tICcuLi8uLi9saWIvYmFzZWRyaXZlci9jYXBhYmlsaXRpZXMnO1xuY29uc3Qge1BPU1QsIERFTEVURX0gPSBNRVRIT0RTO1xuXG5mdW5jdGlvbiBiYXNlRHJpdmVyRTJFVGVzdHMgKERyaXZlckNsYXNzLCBkZWZhdWx0Q2FwcyA9IHt9KSB7XG4gIGxldCBhZGRyZXNzID0gZGVmYXVsdENhcHNbJ2FwcGl1bTphZGRyZXNzJ10gPz8gVEVTVF9IT1NUO1xuICBsZXQgcG9ydCA9IGRlZmF1bHRDYXBzWydhcHBpdW06cG9ydCddO1xuICBjb25zdCBjbGFzc05hbWUgPSBEcml2ZXJDbGFzcy5uYW1lIHx8ICcodW5rbm93biBkcml2ZXIpJztcblxuICBkZXNjcmliZShgQmFzZURyaXZlciBFMkUgKGFzICR7Y2xhc3NOYW1lfSlgLCBmdW5jdGlvbiAoKSB7XG4gICAgbGV0IGJhc2VTZXJ2ZXIsIGQ7XG4gICAgLyoqXG4gICAgICAgKiBUaGlzIFVSTCBjcmVhdGVzIGEgbmV3IHNlc3Npb25cbiAgICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICAgKiovXG4gICAgbGV0IG5ld1Nlc3Npb25VUkw7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgVVJMIHdpdGggYmFzZSBob3N0L3BvcnQuIFN1cHBseSBgc2Vzc2lvbmAgYW5kIGBwYXRobmFtZWBcbiAgICAgKiBAdHlwZSB7Xy5DdXJyaWVkRnVuY3Rpb24yPHN0cmluZyxzdHJpbmcsc3RyaW5nPn1cbiAgICAgKi9cbiAgICBsZXQgY3JlYXRlQXBwaXVtVGVzdFVSTDtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBVUkwgd2l0aCB0aGUgZ2l2ZW4gc2Vzc2lvbiBJRCBhbmQgYSBibGFuayBwYXRobmFtZTtcbiAgICAgKiBlLmcuLCBgaHR0cDovL2Zvby5iYXI6MTIzL3Nlc3Npb24vPHNlc3Npb24taWQ+YFxuICAgICAqICBAdHlwZSB7Xy5DdXJyaWVkRnVuY3Rpb24xPHN0cmluZyxzdHJpbmc+fVxuICAgICAqL1xuICAgIGxldCBjcmVhdGVTZXNzaW9uVVJMO1xuXG4gICAgYmVmb3JlKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIHBvcnQgPSBwb3J0ID8/IGF3YWl0IGdldFRlc3RQb3J0KCk7XG4gICAgICBkZWZhdWx0Q2FwcyA9IHsuLi5kZWZhdWx0Q2FwcywgJ2FwcGl1bTpwb3J0JzogcG9ydH07XG4gICAgICBkID0gbmV3IERyaXZlckNsYXNzKHtwb3J0LCBhZGRyZXNzfSk7XG4gICAgICBiYXNlU2VydmVyID0gYXdhaXQgc2VydmVyKHtcbiAgICAgICAgcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uOiByb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24oZCksXG4gICAgICAgIHBvcnQsXG4gICAgICAgIGhvc3RuYW1lOiBURVNUX0hPU1RcbiAgICAgIH0pO1xuICAgICAgY3JlYXRlQXBwaXVtVGVzdFVSTCA9IGNyZWF0ZUFwcGl1bVVSTChhZGRyZXNzLCBwb3J0KTtcbiAgICAgIG5ld1Nlc3Npb25VUkwgPSBjcmVhdGVBcHBpdW1UZXN0VVJMKCcnLCAnc2Vzc2lvbicpO1xuICAgICAgY3JlYXRlU2Vzc2lvblVSTCA9IGNyZWF0ZUFwcGl1bVRlc3RVUkwoXywgJycpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXIoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgYmFzZVNlcnZlci5jbG9zZSgpO1xuICAgIH0pO1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gc3RhcnRTZXNzaW9uIChjYXBzKSB7XG4gICAgICByZXR1cm4gKGF3YWl0IGF4aW9zKHtcbiAgICAgICAgdXJsOiBuZXdTZXNzaW9uVVJMLFxuICAgICAgICBtZXRob2Q6IFBPU1QsXG4gICAgICAgIGRhdGE6IHtjYXBhYmlsaXRpZXM6IHthbHdheXNNYXRjaDogY2FwcywgZmlyc3RNYXRjaDogW3t9XX19LFxuICAgICAgfSkpLmRhdGEudmFsdWU7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gZW5kU2Vzc2lvbiAoaWQpIHtcbiAgICAgIHJldHVybiAoYXdhaXQgYXhpb3Moe1xuICAgICAgICB1cmw6IGNyZWF0ZVNlc3Npb25VUkwoaWQpLFxuICAgICAgICBtZXRob2Q6IERFTEVURSxcbiAgICAgICAgdmFsaWRhdGVTdGF0dXM6IG51bGwsXG4gICAgICB9KSkuZGF0YS52YWx1ZTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBnZXRTZXNzaW9uIChpZCkge1xuICAgICAgcmV0dXJuIChhd2FpdCBheGlvcyh7XG4gICAgICAgIHVybDogY3JlYXRlU2Vzc2lvblVSTChpZCksXG4gICAgICB9KSkuZGF0YS52YWx1ZTtcbiAgICB9XG5cbiAgICBkZXNjcmliZSgnc2Vzc2lvbiBoYW5kbGluZycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGl0KCdzaG91bGQgaGFuZGxlIGlkZW1wb3RlbmN5IHdoaWxlIGNyZWF0aW5nIHNlc3Npb25zJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBzZXNzaW9uSWRzID0gW107XG4gICAgICAgIGxldCB0aW1lcyA9IDA7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICBjb25zdCB7c2Vzc2lvbklkfSA9IChhd2FpdCBheGlvcyh7XG4gICAgICAgICAgICB1cmw6IG5ld1Nlc3Npb25VUkwsXG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICdYLUlkZW1wb3RlbmN5LUtleSc6ICcxMjM0NTYnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1ldGhvZDogUE9TVCxcbiAgICAgICAgICAgIGRhdGE6IHtjYXBhYmlsaXRpZXM6IHthbHdheXNNYXRjaDogZGVmYXVsdENhcHMsIGZpcnN0TWF0Y2g6IFt7fV19fSxcbiAgICAgICAgICAgIHNpbXBsZTogZmFsc2UsXG4gICAgICAgICAgICByZXNvbHZlV2l0aEZ1bGxSZXNwb25zZTogdHJ1ZVxuICAgICAgICAgIH0pKS5kYXRhLnZhbHVlO1xuXG4gICAgICAgICAgc2Vzc2lvbklkcy5wdXNoKHNlc3Npb25JZCk7XG4gICAgICAgICAgdGltZXMrKztcbiAgICAgICAgfSB3aGlsZSAodGltZXMgPCAyKTtcbiAgICAgICAgXy51bmlxKHNlc3Npb25JZHMpLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG5cbiAgICAgICAgY29uc3Qge3N0YXR1cywgZGF0YX0gPSBhd2FpdCBheGlvcyh7XG4gICAgICAgICAgdXJsOiBjcmVhdGVTZXNzaW9uVVJMKHNlc3Npb25JZHNbMF0pLFxuICAgICAgICAgIG1ldGhvZDogREVMRVRFLFxuICAgICAgICB9KTtcbiAgICAgICAgc3RhdHVzLnNob3VsZC5lcXVhbCgyMDApO1xuICAgICAgICBzaG91bGQuZXF1YWwoZGF0YS52YWx1ZSwgbnVsbCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBoYW5kbGUgaWRlbXBvdGVuY3kgd2hpbGUgY3JlYXRpbmcgcGFyYWxsZWwgc2Vzc2lvbnMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHJlcXMgPSBbXTtcbiAgICAgICAgbGV0IHRpbWVzID0gMDtcbiAgICAgICAgZG8ge1xuICAgICAgICAgIHJlcXMucHVzaChheGlvcyh7XG4gICAgICAgICAgICB1cmw6IG5ld1Nlc3Npb25VUkwsXG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICdYLUlkZW1wb3RlbmN5LUtleSc6ICcxMjM0NScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbWV0aG9kOiBQT1NULFxuICAgICAgICAgICAgZGF0YToge2NhcGFiaWxpdGllczoge2Fsd2F5c01hdGNoOiBkZWZhdWx0Q2FwcywgZmlyc3RNYXRjaDogW3t9XX19LFxuICAgICAgICAgIH0pKTtcbiAgICAgICAgICB0aW1lcysrO1xuICAgICAgICB9IHdoaWxlICh0aW1lcyA8IDIpO1xuICAgICAgICBjb25zdCBzZXNzaW9uSWRzID0gKGF3YWl0IEIuYWxsKHJlcXMpKS5tYXAoKHgpID0+IHguZGF0YS52YWx1ZS5zZXNzaW9uSWQpO1xuICAgICAgICBfLnVuaXEoc2Vzc2lvbklkcykubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcblxuICAgICAgICBjb25zdCB7c3RhdHVzLCBkYXRhfSA9IGF3YWl0IGF4aW9zKHtcbiAgICAgICAgICB1cmw6IGNyZWF0ZVNlc3Npb25VUkwoc2Vzc2lvbklkc1swXSksXG4gICAgICAgICAgbWV0aG9kOiBERUxFVEUsXG4gICAgICAgIH0pO1xuICAgICAgICBzdGF0dXMuc2hvdWxkLmVxdWFsKDIwMCk7XG4gICAgICAgIHNob3VsZC5lcXVhbChkYXRhLnZhbHVlLCBudWxsKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIGNyZWF0ZSBzZXNzaW9uIGFuZCByZXRyaWV2ZSBhIHNlc3Npb24gaWQsIHRoZW4gZGVsZXRlIGl0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBsZXQge3N0YXR1cywgZGF0YX0gPSBhd2FpdCBheGlvcyh7XG4gICAgICAgICAgdXJsOiBuZXdTZXNzaW9uVVJMLFxuICAgICAgICAgIG1ldGhvZDogUE9TVCxcbiAgICAgICAgICBkYXRhOiB7Y2FwYWJpbGl0aWVzOiB7YWx3YXlzTWF0Y2g6IGRlZmF1bHRDYXBzLCBmaXJzdE1hdGNoOiBbe31dfX0sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHN0YXR1cy5zaG91bGQuZXF1YWwoMjAwKTtcbiAgICAgICAgc2hvdWxkLmV4aXN0KGRhdGEudmFsdWUuc2Vzc2lvbklkKTtcbiAgICAgICAgZGF0YS52YWx1ZS5jYXBhYmlsaXRpZXMucGxhdGZvcm1OYW1lLnNob3VsZC5lcXVhbChkZWZhdWx0Q2Fwcy5wbGF0Zm9ybU5hbWUpO1xuICAgICAgICBkYXRhLnZhbHVlLmNhcGFiaWxpdGllcy5kZXZpY2VOYW1lLnNob3VsZC5lcXVhbChkZWZhdWx0Q2Fwc1snYXBwaXVtOmRldmljZU5hbWUnXSk7XG5cbiAgICAgICAgKHtzdGF0dXMsIGRhdGF9ID0gYXdhaXQgYXhpb3Moe1xuICAgICAgICAgIHVybDogY3JlYXRlU2Vzc2lvblVSTChkLnNlc3Npb25JZCksXG4gICAgICAgICAgbWV0aG9kOiBERUxFVEUsXG4gICAgICAgIH0pKTtcblxuICAgICAgICBzdGF0dXMuc2hvdWxkLmVxdWFsKDIwMCk7XG4gICAgICAgIHNob3VsZC5lcXVhbChkYXRhLnZhbHVlLCBudWxsKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKGQuc2Vzc2lvbklkLCBudWxsKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQuc2tpcCgnc2hvdWxkIHRocm93IE5ZSSBmb3IgY29tbWFuZHMgbm90IGltcGxlbWVudGVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ2NvbW1hbmQgdGltZW91dHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBsZXQgb3JpZ2luYWxGaW5kRWxlbWVudCwgb3JpZ2luYWxGaW5kRWxlbWVudHM7XG5cbiAgICAgIGFzeW5jIGZ1bmN0aW9uIHN0YXJ0VGltZW91dFNlc3Npb24gKHRpbWVvdXQpIHtcbiAgICAgICAgY29uc3QgY2FwcyA9IF8uY2xvbmVEZWVwKGRlZmF1bHRDYXBzKTtcbiAgICAgICAgY2Fwc1snYXBwaXVtOm5ld0NvbW1hbmRUaW1lb3V0J10gPSB0aW1lb3V0O1xuICAgICAgICByZXR1cm4gYXdhaXQgc3RhcnRTZXNzaW9uKGNhcHMpO1xuICAgICAgfVxuXG4gICAgICBiZWZvcmUoZnVuY3Rpb24gKCkge1xuICAgICAgICBvcmlnaW5hbEZpbmRFbGVtZW50ID0gZC5maW5kRWxlbWVudDtcbiAgICAgICAgZC5maW5kRWxlbWVudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gJ2Zvbyc7XG4gICAgICAgIH0uYmluZChkKTtcblxuICAgICAgICBvcmlnaW5hbEZpbmRFbGVtZW50cyA9IGQuZmluZEVsZW1lbnRzO1xuICAgICAgICBkLmZpbmRFbGVtZW50cyA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBhd2FpdCBCLmRlbGF5KDIwMCk7XG4gICAgICAgICAgcmV0dXJuIFsnZm9vJ107XG4gICAgICAgIH0uYmluZChkKTtcbiAgICAgIH0pO1xuXG4gICAgICBhZnRlcihmdW5jdGlvbiAoKSB7XG4gICAgICAgIGQuZmluZEVsZW1lbnQgPSBvcmlnaW5hbEZpbmRFbGVtZW50O1xuICAgICAgICBkLmZpbmRFbGVtZW50cyA9IG9yaWdpbmFsRmluZEVsZW1lbnRzO1xuICAgICAgfSk7XG5cblxuICAgICAgaXQoJ3Nob3VsZCBzZXQgYSBkZWZhdWx0IGNvbW1hbmRUaW1lb3V0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBsZXQgbmV3U2Vzc2lvbiA9IGF3YWl0IHN0YXJ0VGltZW91dFNlc3Npb24oKTtcbiAgICAgICAgZC5uZXdDb21tYW5kVGltZW91dE1zLnNob3VsZC5iZS5hYm92ZSgwKTtcbiAgICAgICAgYXdhaXQgZW5kU2Vzc2lvbihuZXdTZXNzaW9uLnNlc3Npb25JZCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCB0aW1lb3V0IG9uIGNvbW1hbmRzIHVzaW5nIGNvbW1hbmRUaW1lb3V0IGNhcCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgbGV0IG5ld1Nlc3Npb24gPSBhd2FpdCBzdGFydFRpbWVvdXRTZXNzaW9uKDAuMjUpO1xuICAgICAgICAvLyBYWFg6IHJhY2UgY29uZGl0aW9uOiB3ZSBtdXN0IGJ1aWxkIHRoaXMgVVJMIGJlZm9yZSAuLi5zb21ldGhpbmcgaGFwcGVucy4uLlxuICAgICAgICAvLyB3aGljaCBjYXVzZXMgYGQuc2Vzc2lvbklkYCB0byBiZSBtaXNzaW5nXG4gICAgICAgIGxldCBzZXNzaW9uVVJMID0gY3JlYXRlU2Vzc2lvblVSTChkLnNlc3Npb25JZCk7XG4gICAgICAgIGF3YWl0IGF4aW9zKHtcbiAgICAgICAgICB1cmw6IGNyZWF0ZUFwcGl1bVRlc3RVUkwoZC5zZXNzaW9uSWQsICdlbGVtZW50JyksXG4gICAgICAgICAgbWV0aG9kOiBQT1NULFxuICAgICAgICAgIGRhdGE6IHt1c2luZzogJ25hbWUnLCB2YWx1ZTogJ2Zvbyd9LFxuICAgICAgICB9KTtcbiAgICAgICAgYXdhaXQgQi5kZWxheSg0MDApO1xuICAgICAgICBjb25zdCB7ZGF0YX0gPSBhd2FpdCBheGlvcyh7XG4gICAgICAgICAgdXJsOiBzZXNzaW9uVVJMLFxuICAgICAgICAgIHZhbGlkYXRlU3RhdHVzOiBudWxsLFxuICAgICAgICB9KTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKGRhdGEudmFsdWUuZXJyb3IsICdpbnZhbGlkIHNlc3Npb24gaWQnKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKGQuc2Vzc2lvbklkLCBudWxsKTtcbiAgICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IGVuZFNlc3Npb24obmV3U2Vzc2lvbi5zZXNzaW9uSWQpO1xuICAgICAgICBzaG91bGQuZXF1YWwocmVzcC5lcnJvciwgJ2ludmFsaWQgc2Vzc2lvbiBpZCcpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgbm90IHRpbWVvdXQgd2l0aCBjb21tYW5kVGltZW91dCBvZiBmYWxzZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgbGV0IG5ld1Nlc3Npb24gPSBhd2FpdCBzdGFydFRpbWVvdXRTZXNzaW9uKDAuMSk7XG4gICAgICAgIGxldCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgICAgIGNvbnN0IHt2YWx1ZX0gPSAoYXdhaXQgYXhpb3Moe1xuICAgICAgICAgIHVybDogY3JlYXRlQXBwaXVtVGVzdFVSTChkLnNlc3Npb25JZCwgJ2VsZW1lbnRzJyksXG4gICAgICAgICAgbWV0aG9kOiBQT1NULFxuICAgICAgICAgIGRhdGE6IHt1c2luZzogJ25hbWUnLCB2YWx1ZTogJ2Zvbyd9LFxuICAgICAgICB9KSkuZGF0YTtcbiAgICAgICAgKERhdGUubm93KCkgLSBzdGFydCkuc2hvdWxkLmJlLmFib3ZlKDE1MCk7XG4gICAgICAgIHZhbHVlLnNob3VsZC5lcWwoWydmb28nXSk7XG4gICAgICAgIGF3YWl0IGVuZFNlc3Npb24obmV3U2Vzc2lvbi5zZXNzaW9uSWQpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgbm90IHRpbWVvdXQgd2l0aCBjb21tYW5kVGltZW91dCBvZiAwJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBkLm5ld0NvbW1hbmRUaW1lb3V0TXMgPSAyO1xuICAgICAgICBsZXQgbmV3U2Vzc2lvbiA9IGF3YWl0IHN0YXJ0VGltZW91dFNlc3Npb24oMCk7XG5cbiAgICAgICAgYXdhaXQgYXhpb3Moe1xuICAgICAgICAgIHVybDogY3JlYXRlQXBwaXVtVGVzdFVSTChkLnNlc3Npb25JZCwgJ2VsZW1lbnQnKSxcbiAgICAgICAgICBtZXRob2Q6IFBPU1QsXG4gICAgICAgICAgZGF0YToge3VzaW5nOiAnbmFtZScsIHZhbHVlOiAnZm9vJ30sXG4gICAgICAgIH0pO1xuICAgICAgICBhd2FpdCBCLmRlbGF5KDQwMCk7XG4gICAgICAgIGNvbnN0IHt2YWx1ZX0gPSAoYXdhaXQgYXhpb3Moe1xuICAgICAgICAgIHVybDogY3JlYXRlU2Vzc2lvblVSTChkLnNlc3Npb25JZCksXG4gICAgICAgIH0pKS5kYXRhO1xuICAgICAgICB2YWx1ZS5wbGF0Zm9ybU5hbWUuc2hvdWxkLmVxdWFsKGRlZmF1bHRDYXBzLnBsYXRmb3JtTmFtZSk7XG4gICAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCBlbmRTZXNzaW9uKG5ld1Nlc3Npb24uc2Vzc2lvbklkKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHJlc3AsIG51bGwpO1xuXG4gICAgICAgIGQubmV3Q29tbWFuZFRpbWVvdXRNcyA9IDYwICogMTAwMDtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIG5vdCB0aW1lb3V0IGlmIGl0cyBqdXN0IHRoZSBjb21tYW5kIHRha2luZyBhd2hpbGUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGxldCBuZXdTZXNzaW9uID0gYXdhaXQgc3RhcnRUaW1lb3V0U2Vzc2lvbigwLjI1KTtcbiAgICAgICAgLy8gWFhYOiByYWNlIGNvbmRpdGlvbjogd2UgbXVzdCBidWlsZCB0aGlzIFVSTCBiZWZvcmUgLi4uc29tZXRoaW5nIGhhcHBlbnMuLi5cbiAgICAgICAgLy8gd2hpY2ggY2F1c2VzIGBkLnNlc3Npb25JZGAgdG8gYmUgbWlzc2luZ1xuICAgICAgICBsZXQgc2Vzc2lvblVSTCA9IGNyZWF0ZVNlc3Npb25VUkwoZC5zZXNzaW9uSWQpO1xuICAgICAgICBhd2FpdCBheGlvcyh7XG4gICAgICAgICAgdXJsOiBjcmVhdGVBcHBpdW1UZXN0VVJMKGQuc2Vzc2lvbklkLCAnZWxlbWVudCcpLFxuICAgICAgICAgIG1ldGhvZDogUE9TVCxcbiAgICAgICAgICBkYXRhOiB7dXNpbmc6ICduYW1lJywgdmFsdWU6ICdmb28nfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGF3YWl0IEIuZGVsYXkoNDAwKTtcbiAgICAgICAgY29uc3Qge3ZhbHVlfSA9IChhd2FpdCBheGlvcyh7XG4gICAgICAgICAgdXJsOiBzZXNzaW9uVVJMLFxuICAgICAgICAgIHZhbGlkYXRlU3RhdHVzOiBudWxsLFxuICAgICAgICB9KSkuZGF0YTtcbiAgICAgICAgdmFsdWUuZXJyb3Iuc2hvdWxkLmVxdWFsKCdpbnZhbGlkIHNlc3Npb24gaWQnKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKGQuc2Vzc2lvbklkLCBudWxsKTtcbiAgICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IGVuZFNlc3Npb24obmV3U2Vzc2lvbi5zZXNzaW9uSWQpO1xuICAgICAgICByZXNwLmVycm9yLnNob3VsZC5lcXVhbCgnaW52YWxpZCBzZXNzaW9uIGlkJyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBub3QgaGF2ZSBhIHRpbWVyIHJ1bm5pbmcgYmVmb3JlIG9yIGFmdGVyIGEgc2Vzc2lvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgc2hvdWxkLm5vdC5leGlzdChkLm5vQ29tbWFuZFRpbWVyKTtcbiAgICAgICAgbGV0IG5ld1Nlc3Npb24gPSBhd2FpdCBzdGFydFRpbWVvdXRTZXNzaW9uKDAuMjUpO1xuICAgICAgICBuZXdTZXNzaW9uLnNlc3Npb25JZC5zaG91bGQuZXF1YWwoZC5zZXNzaW9uSWQpO1xuICAgICAgICBzaG91bGQuZXhpc3QoZC5ub0NvbW1hbmRUaW1lcik7XG4gICAgICAgIGF3YWl0IGVuZFNlc3Npb24obmV3U2Vzc2lvbi5zZXNzaW9uSWQpO1xuICAgICAgICBzaG91bGQubm90LmV4aXN0KGQubm9Db21tYW5kVGltZXIpO1xuICAgICAgfSk7XG5cbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdzZXR0aW5ncyBhcGknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBiZWZvcmUoZnVuY3Rpb24gKCkge1xuICAgICAgICBkLnNldHRpbmdzID0gbmV3IERldmljZVNldHRpbmdzKHtpZ25vcmVVbmltcG9ydGFudFZpZXdzOiBmYWxzZX0pO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIGJlIGFibGUgdG8gZ2V0IHNldHRpbmdzIG9iamVjdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZC5zZXR0aW5ncy5nZXRTZXR0aW5ncygpLmlnbm9yZVVuaW1wb3J0YW50Vmlld3Muc2hvdWxkLmJlLmZhbHNlO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIHdoZW4gdXBkYXRlU2V0dGluZ3MgbWV0aG9kIGlzIG5vdCBkZWZpbmVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBkLnNldHRpbmdzLnVwZGF0ZSh7aWdub3JlVW5pbXBvcnRhbnRWaWV3czogdHJ1ZX0pLnNob3VsZC5ldmVudHVhbGx5XG4gICAgICAgICAgICAgICAgLmJlLnJlamVjdGVkV2l0aCgnb25TZXR0aW5nc1VwZGF0ZScpO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIGZvciBpbnZhbGlkIHVwZGF0ZSBvYmplY3QnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGF3YWl0IGQuc2V0dGluZ3MudXBkYXRlKCdpbnZhbGlkIGpzb24nKS5zaG91bGQuZXZlbnR1YWxseVxuICAgICAgICAgICAgICAgIC5iZS5yZWplY3RlZFdpdGgoJ0pTT04nKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3VuZXhwZWN0ZWQgZXhpdHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpdCgnc2hvdWxkIHJlamVjdCBhIGN1cnJlbnQgY29tbWFuZCB3aGVuIHRoZSBkcml2ZXIgY3Jhc2hlcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZC5fb2xkR2V0U3RhdHVzID0gZC5nZXRTdGF0dXM7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgZC5nZXRTdGF0dXMgPSBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBhd2FpdCBCLmRlbGF5KDUwMDApO1xuICAgICAgICAgIH0uYmluZChkKTtcbiAgICAgICAgICBjb25zdCByZXFQcm9taXNlID0gYXhpb3Moe1xuICAgICAgICAgICAgdXJsOiBjcmVhdGVBcHBpdW1UZXN0VVJMKCcnLCAnc3RhdHVzJyksXG4gICAgICAgICAgICB2YWxpZGF0ZVN0YXR1czogbnVsbCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICAvLyBtYWtlIHN1cmUgdGhhdCB0aGUgcmVxdWVzdCBnZXRzIHRvIHRoZSBzZXJ2ZXIgYmVmb3JlIG91ciBzaHV0ZG93blxuICAgICAgICAgIGF3YWl0IEIuZGVsYXkoMTAwKTtcbiAgICAgICAgICBjb25zdCBzaHV0ZG93bkV2ZW50UHJvbWlzZSA9IG5ldyBCKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KG5ldyBFcnJvcignb25VbmV4cGVjdGVkU2h1dGRvd24gZXZlbnQgaXMgZXhwZWN0ZWQgdG8gYmUgZmlyZWQgd2l0aGluIDUgc2Vjb25kcyB0aW1lb3V0JykpLCA1MDAwKTtcbiAgICAgICAgICAgIGQub25VbmV4cGVjdGVkU2h1dGRvd24ocmVzb2x2ZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZC5zdGFydFVuZXhwZWN0ZWRTaHV0ZG93bihuZXcgRXJyb3IoJ0NyYXNoeXRpbWVzJykpO1xuICAgICAgICAgIGNvbnN0IHt2YWx1ZX0gPSAoYXdhaXQgcmVxUHJvbWlzZSkuZGF0YTtcbiAgICAgICAgICB2YWx1ZS5tZXNzYWdlLnNob3VsZC5jb250YWluKCdDcmFzaHl0aW1lcycpO1xuICAgICAgICAgIGF3YWl0IHNodXRkb3duRXZlbnRQcm9taXNlO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIGQuZ2V0U3RhdHVzID0gZC5fb2xkR2V0U3RhdHVzO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdldmVudCB0aW1pbmdzJywgZnVuY3Rpb24gKCkge1xuICAgICAgaXQoJ3Nob3VsZCBub3QgYWRkIHRpbWluZ3MgaWYgbm90IHVzaW5nIG9wdC1pbiBjYXAnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHNlc3Npb24gPSBhd2FpdCBzdGFydFNlc3Npb24oZGVmYXVsdENhcHMpO1xuICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBnZXRTZXNzaW9uKHNlc3Npb24uc2Vzc2lvbklkKTtcbiAgICAgICAgc2hvdWxkLm5vdC5leGlzdChyZXMuZXZlbnRzKTtcbiAgICAgICAgYXdhaXQgZW5kU2Vzc2lvbihzZXNzaW9uLnNlc3Npb25JZCk7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgYWRkIHN0YXJ0IHNlc3Npb24gdGltaW5ncycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgY2FwcyA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRDYXBzLCB7J2FwcGl1bTpldmVudFRpbWluZ3MnOiB0cnVlfSk7XG4gICAgICAgIGNvbnN0IHNlc3Npb24gPSBhd2FpdCBzdGFydFNlc3Npb24oY2Fwcyk7XG4gICAgICAgIGNvbnN0IHJlcyA9IChhd2FpdCBnZXRTZXNzaW9uKHNlc3Npb24uc2Vzc2lvbklkKSk7XG4gICAgICAgIHNob3VsZC5leGlzdChyZXMuZXZlbnRzKTtcbiAgICAgICAgc2hvdWxkLmV4aXN0KHJlcy5ldmVudHMubmV3U2Vzc2lvblJlcXVlc3RlZCk7XG4gICAgICAgIHNob3VsZC5leGlzdChyZXMuZXZlbnRzLm5ld1Nlc3Npb25TdGFydGVkKTtcbiAgICAgICAgcmVzLmV2ZW50cy5uZXdTZXNzaW9uUmVxdWVzdGVkWzBdLnNob3VsZC5iZS5hKCdudW1iZXInKTtcbiAgICAgICAgcmVzLmV2ZW50cy5uZXdTZXNzaW9uU3RhcnRlZFswXS5zaG91bGQuYmUuYSgnbnVtYmVyJyk7XG4gICAgICAgIGF3YWl0IGVuZFNlc3Npb24oc2Vzc2lvbi5zZXNzaW9uSWQpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpZiAoRHJpdmVyQ2xhc3MgPT09IEJhc2VEcml2ZXIpIHtcbiAgICAgIC8vIG9ubHkgcnVuIHRoaXMgdGVzdCBvbiBiYXNlZHJpdmVyLCBub3Qgb3RoZXIgZHJpdmVycyB3aGljaCBhbHNvIHVzZSB0aGVzZSB0ZXN0cywgc2luY2Ugd2VcbiAgICAgIC8vIGRvbid0IHdhbnQgdGhlbSB0byB0cnkgYW5kIHN0YXJ0IHNlc3Npb25zIHdpdGggdGhlc2UgcmFuZG9tIGNhcGFiaWxpdGllcyB0aGF0IGFyZVxuICAgICAgLy8gbmVjZXNzYXJ5IHRvIHRlc3QgdGhlIGFwcGl1bSBvcHRpb25zIGxvZ2ljXG4gICAgICBkZXNjcmliZSgnc3BlY2lhbCBhcHBpdW06b3B0aW9ucyBjYXBhYmlsaXR5JywgZnVuY3Rpb24gKCkge1xuICAgICAgICBpdCgnc2hvdWxkIGJlIGFibGUgdG8gc3RhcnQgYSBzZXNzaW9uIHdpdGggY2FwcyBoZWxkIGluIGFwcGl1bTpvcHRpb25zJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IHJldCA9IGF3YWl0IHN0YXJ0U2Vzc2lvbih7XG4gICAgICAgICAgICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAgICAgICAgICAgW1BSRUZJWEVEX0FQUElVTV9PUFRTX0NBUF06IHtcbiAgICAgICAgICAgICAgcGxhdGZvcm1WZXJzaW9uOiAnMTEuNCcsXG4gICAgICAgICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdpUGhvbmUgMTEnLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGQub3B0cy5wbGF0Zm9ybVZlcnNpb24uc2hvdWxkLmVxbCgnMTEuNCcpO1xuICAgICAgICAgIGQub3B0cy5kZXZpY2VOYW1lLnNob3VsZC5lcWwoJ2lQaG9uZSAxMScpO1xuICAgICAgICAgIGF3YWl0IGVuZFNlc3Npb24ocmV0LnNlc3Npb25JZCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZURyaXZlckUyRVRlc3RzO1xuIl19
|
|
@@ -541,7 +541,5 @@ function baseDriverUnitTests(DriverClass, defaultCaps = {}) {
|
|
|
541
541
|
}
|
|
542
542
|
|
|
543
543
|
var _default = baseDriverUnitTests;
|
|
544
|
-
exports.default = _default;
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvYmFzZWRyaXZlci9kcml2ZXItdGVzdHMuanMiXSwibmFtZXMiOlsiYmFzZURyaXZlclVuaXRUZXN0cyIsIkRyaXZlckNsYXNzIiwiZGVmYXVsdENhcHMiLCJjbGFzc05hbWUiLCJuYW1lIiwiZGVzY3JpYmUiLCJkIiwidzNjQ2FwcyIsInNhbmRib3giLCJiZWZvcmVFYWNoIiwiYWx3YXlzTWF0Y2giLCJPYmplY3QiLCJhc3NpZ24iLCJwbGF0Zm9ybU5hbWUiLCJmaXJzdE1hdGNoIiwiYWZ0ZXJFYWNoIiwiZGVsZXRlU2Vzc2lvbiIsInJlc3RvcmUiLCJpdCIsInNob3VsZCIsImV4aXN0IiwiYmFzZVZlcnNpb24iLCJzdGF0dXMiLCJnZXRTdGF0dXMiLCJlcWwiLCJzZXNzSWQiLCJjcmVhdGVTZXNzaW9uIiwiYmUiLCJhIiwibGVuZ3RoIiwiYWJvdmUiLCJfIiwiY2xvbmVEZWVwIiwiZXZlbnR1YWxseSIsInJlamVjdGVkV2l0aCIsInNlc3Npb25JZDEiLCJlcXVhbCIsInNlc3Npb25JZCIsInNlc3Npb25JZDIiLCJub3QiLCJjYXBzIiwiZ2V0U2Vzc2lvbiIsInNlc3Npb25zIiwiZ2V0U2Vzc2lvbnMiLCJjbG9uZSIsImluY2x1ZGUiLCJpZCIsImNhcGFiaWxpdGllcyIsImRldmljZU5hbWUiLCJCIiwiZGVsYXkiLCJiaW5kIiwiY21kUHJvbWlzZSIsImV4ZWN1dGVDb21tYW5kIiwicCIsInJlc29sdmUiLCJyZWplY3QiLCJzZXRUaW1lb3V0IiwiRXJyb3IiLCJvblVuZXhwZWN0ZWRTaHV0ZG93biIsInN0YXJ0VW5leHBlY3RlZFNodXRkb3duIiwib2xkRGVsZXRlU2Vzc2lvbiIsInByb3RvY29sIiwiZHJpdmVyRm9yU2Vzc2lvbiIsIndhaXRNcyIsIkRhdGUiLCJub3ciLCJjbGVhck5ld0NvbW1hbmRUaW1lb3V0IiwibnVtQ21kcyIsImNtZHMiLCJpIiwicHVzaCIsInJlc3VsdHMiLCJhbGwiLCJzZXR0bGUiLCJ2YWx1ZSIsInJlYXNvbiIsIm1lc3NhZ2UiLCJjb250YWluIiwiYmVmb3JlIiwibmV3Q29tbWFuZFRpbWVvdXRNcyIsInRpbWVvdXRzIiwiaW1wbGljaXRXYWl0TXMiLCJ1bmRlZmluZWQiLCJnZXRUaW1lb3V0cyIsImhhdmUiLCJwcm9wZXJ0eSIsImRlZXAiLCJpbXBsaWNpdCIsImNvbW1hbmQiLCJuZXdDYXBzIiwicHJveHlBY3RpdmUiLCJhbiIsImluc3RhbmNlb2YiLCJGdW5jdGlvbiIsImZhbHNlIiwidGhyb3ciLCJnZXRQcm94eUF2b2lkTGlzdCIsIkFycmF5IiwiY2FuUHJveHkiLCJhdm9pZFN0dWIiLCJzdHViIiwicmV0dXJucyIsInByb3h5Um91dGVJc0F2b2lkZWQiLCJ0cnVlIiwiYmVmb3JlU3RhcnRUaW1lIiwic2hvdWxkVmFsaWRhdGVDYXBzIiwiZXZlbnRIaXN0b3J5IiwiY29tbWFuZHMiLCJuZXdTZXNzaW9uUmVxdWVzdGVkIiwibmV3U2Vzc2lvblN0YXJ0ZWQiLCJjbWQiLCJzdGFydFRpbWUiLCJlbmRUaW1lIiwibG9nRXZlbnQiLCJmb28iLCJiYXIiLCJyZXMiLCJldmVudHMiLCJldmVudFRpbWluZ3MiLCJyZXNldCIsIm9iaiIsImQxIiwiRGV2aWNlU2V0dGluZ3MiLCJkMiIsIl9zZXR0aW5ncyIsImRlbnlJbnNlY3VyZSIsImFsbG93SW5zZWN1cmUiLCJyZWxheGVkU2VjdXJpdHlFbmFibGVkIiwiaXNGZWF0dXJlRW5hYmxlZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFLQSxTQUFTQSxtQkFBVCxDQUE4QkMsV0FBOUIsRUFBMkNDLFdBQVcsR0FBRyxFQUF6RCxFQUE2RDtBQUUzRCxRQUFNQyxTQUFTLEdBQUdGLFdBQVcsQ0FBQ0csSUFBWixJQUFvQixrQkFBdEM7QUFHQUMsRUFBQUEsUUFBUSxDQUFFLGtCQUFpQkYsU0FBVSxHQUE3QixFQUFpQyxZQUFZO0FBQ25ELFFBQUlHLENBQUosRUFBT0MsT0FBUDtBQUVBLFFBQUlDLE9BQUo7QUFFQUMsSUFBQUEsVUFB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akMsQ0FBb0NvRSxLQUFwQztBQUNBekYsTUFBQUEsQ0FBQyxDQUFDMkgsZ0JBQUYsQ0FBbUIsS0FBbkIsRUFBMEI5RyxNQUExQixDQUFpQ1EsRUFBakMsQ0FBb0NvRSxLQUFwQztBQUNBekYsTUFBQUEsQ0FBQyxDQUFDMkgsZ0JBQUYsQ0FBbUIsS0FBbkIsRUFBMEI5RyxNQUExQixDQUFpQ1EsRUFBakMsQ0FBb0M2RSxJQUFwQztBQUNELEtBTkMsQ0FBRjtBQU9ELEdBM0NPLENBQVI7QUE0Q0Q7O2VBRWN4RyxtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgeyBEZXZpY2VTZXR0aW5ncyB9IGZyb20gJy4uLy4uL2xpYic7XG5pbXBvcnQgeyBjcmVhdGVTYW5kYm94IH0gZnJvbSAnc2lub24nO1xuXG5cbi8vIHdyYXAgdGhlc2UgdGVzdHMgaW4gYSBmdW5jdGlvbiBzbyB3ZSBjYW4gZXhwb3J0IHRoZSB0ZXN0cyBhbmQgcmUtdXNlIHRoZW1cbi8vIGZvciBhY3R1YWwgZHJpdmVyIGltcGxlbWVudGF0aW9uc1xuZnVuY3Rpb24gYmFzZURyaXZlclVuaXRUZXN0cyAoRHJpdmVyQ2xhc3MsIGRlZmF1bHRDYXBzID0ge30pIHtcbiAgLy8gdG8gZGlzcGxheSB0aGUgZHJpdmVyIHVuZGVyIHRlc3QgaW4gcmVwb3J0XG4gIGNvbnN0IGNsYXNzTmFtZSA9IERyaXZlckNsYXNzLm5hbWUgfHwgJyh1bmtub3duIGRyaXZlciknO1xuXG5cbiAgZGVzY3JpYmUoYEJhc2VEcml2ZXIgKGFzICR7Y2xhc3NOYW1lfSlgLCBmdW5jdGlvbiAoKSB7XG4gICAgbGV0IGQsIHczY0NhcHM7XG5cbiAgICBsZXQgc2FuZGJveDtcblxuICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgc2FuZGJveCA9IGNyZWF0ZVNhbmRib3goKTtcbiAgICAgIGQgPSBuZXcgRHJpdmVyQ2xhc3MoKTtcbiAgICAgIHczY0NhcHMgPSB7XG4gICAgICAgIGFsd2F5c01hdGNoOiBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0Q2Fwcywge1xuICAgICAgICAgIHBsYXRmb3JtTmFtZTogJ0Zha2UnLFxuICAgICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdDb21tb2RvcmUgNjQnLFxuICAgICAgICB9KSxcbiAgICAgICAgZmlyc3RNYXRjaDogW3t9XSxcbiAgICAgIH07XG4gICAgfSk7XG4gICAgYWZ0ZXJFYWNoKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGQuZGVsZXRlU2Vzc2lvbigpO1xuICAgICAgc2FuZGJveC5yZXN0b3JlKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlcG9ydCB0aGUgdmVyc2lvbiBvZiBCYXNlRHJpdmVyIHVzZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzaG91bGQuZXhpc3QoRHJpdmVyQ2xhc3MuYmFzZVZlcnNpb24pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYW4gZW1wdHkgc3RhdHVzIG9iamVjdCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCBzdGF0dXMgPSBhd2FpdCBkLmdldFN0YXR1cygpO1xuICAgICAgc3RhdHVzLnNob3VsZC5lcWwoe30pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYSBzZXNzaW9uSWQgZnJvbSBjcmVhdGVTZXNzaW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgbGV0IFtzZXNzSWRdID0gYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHczY0NhcHMpO1xuICAgICAgc2hvdWxkLmV4aXN0KHNlc3NJZCk7XG4gICAgICBzZXNzSWQuc2hvdWxkLmJlLmEoJ3N0cmluZycpO1xuICAgICAgc2Vzc0lkLmxlbmd0aC5zaG91bGQuYmUuYWJvdmUoNSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIG5vdCBiZSBhYmxlIHRvIHN0YXJ0IHR3byBzZXNzaW9ucyB3aXRob3V0IGNsb3NpbmcgdGhlIGZpcnN0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIF8uY2xvbmVEZWVwKHczY0NhcHMpKTtcbiAgICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCBfLmNsb25lRGVlcCh3M2NDYXBzKSkuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWRXaXRoKCdzZXNzaW9uJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJlIGFibGUgdG8gZGVsZXRlIGEgc2Vzc2lvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCBzZXNzaW9uSWQxID0gYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIF8uY2xvbmVEZWVwKHczY0NhcHMpKTtcbiAgICAgIGF3YWl0IGQuZGVsZXRlU2Vzc2lvbigpO1xuICAgICAgc2hvdWxkLmVxdWFsKGQuc2Vzc2lvbklkLCBudWxsKTtcbiAgICAgIGxldCBzZXNzaW9uSWQyID0gYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIF8uY2xvbmVEZWVwKHczY0NhcHMpKTtcbiAgICAgIHNlc3Npb25JZDEuc2hvdWxkLm5vdC5lcWwoc2Vzc2lvbklkMik7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGdldCB0aGUgY3VycmVudCBzZXNzaW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgbGV0IFssIGNhcHNdID0gYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHczY0NhcHMpO1xuICAgICAgY2Fwcy5zaG91bGQuZXF1YWwoYXdhaXQgZC5nZXRTZXNzaW9uKCkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gc2Vzc2lvbnMgaWYgbm8gc2Vzc2lvbiBleGlzdHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBsZXQgc2Vzc2lvbnMgPSBhd2FpdCBkLmdldFNlc3Npb25zKCk7XG4gICAgICBzZXNzaW9ucy5sZW5ndGguc2hvdWxkLmVxdWFsKDApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gc2Vzc2lvbnMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjYXBzID0gXy5jbG9uZSh3M2NDYXBzKTtcbiAgICAgIGNhcHMuYSA9ICdjYXAnO1xuICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIGNhcHMpO1xuICAgICAgbGV0IHNlc3Npb25zID0gYXdhaXQgZC5nZXRTZXNzaW9ucygpO1xuXG4gICAgICBzZXNzaW9ucy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgc2Vzc2lvbnNbMF0uc2hvdWxkLmluY2x1ZGUoe1xuICAgICAgICBpZDogZC5zZXNzaW9uSWRcbiAgICAgIH0pO1xuICAgICAgc2Vzc2lvbnNbMF0uY2FwYWJpbGl0aWVzLnNob3VsZC5pbmNsdWRlKHtcbiAgICAgICAgZGV2aWNlTmFtZTogJ0NvbW1vZG9yZSA2NCcsXG4gICAgICAgIHBsYXRmb3JtTmFtZTogJ0Zha2UnXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZnVsZmlsbCBhbiB1bmV4cGVjdGVkIGRyaXZlciBxdWl0IHByb21pc2UnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBtYWtlIGEgY29tbWFuZCB0aGF0IHdpbGwgd2FpdCBhIGJpdCBzbyB3ZSBjYW4gY3Jhc2ggd2hpbGUgaXQncyBydW5uaW5nXG4gICAgICBkLmdldFN0YXR1cyA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgQi5kZWxheSgxMDAwKTtcbiAgICAgICAgcmV0dXJuICdnb29kIHN0YXR1cyc7XG4gICAgICB9LmJpbmQoZCk7XG4gICAgICBsZXQgY21kUHJvbWlzZSA9IGQuZXhlY3V0ZUNvbW1hbmQoJ2dldFN0YXR1cycpO1xuICAgICAgYXdhaXQgQi5kZWxheSgxMCk7XG4gICAgICBjb25zdCBwID0gbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdChuZXcgRXJyb3IoJ29uVW5leHBlY3RlZFNodXRkb3duIGV2ZW50IGlzIGV4cGVjdGVkIHRvIGJlIGZpcmVkIHdpdGhpbiA1IHNlY29uZHMgdGltZW91dCcpKSwgNTAwMCk7XG4gICAgICAgIGQub25VbmV4cGVjdGVkU2h1dGRvd24ocmVzb2x2ZSk7XG4gICAgICB9KTtcbiAgICAgIGQuc3RhcnRVbmV4cGVjdGVkU2h1dGRvd24obmV3IEVycm9yKCdXZSBjcmFzaGVkJykpO1xuICAgICAgYXdhaXQgY21kUHJvbWlzZS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9XZSBjcmFzaGVkLyk7XG4gICAgICBhd2FpdCBwO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBub3QgYWxsb3cgY29tbWFuZHMgaW4gbWlkZGxlIG9mIHVuZXhwZWN0ZWQgc2h1dGRvd24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBtYWtlIGEgY29tbWFuZCB0aGF0IHdpbGwgd2FpdCBhIGJpdCBzbyB3ZSBjYW4gY3Jhc2ggd2hpbGUgaXQncyBydW5uaW5nXG4gICAgICBkLm9sZERlbGV0ZVNlc3Npb24gPSBkLmRlbGV0ZVNlc3Npb247XG4gICAgICBkLmRlbGV0ZVNlc3Npb24gPSBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGF3YWl0IEIuZGVsYXkoMTAwKTtcbiAgICAgICAgYXdhaXQgdGhpcy5vbGREZWxldGVTZXNzaW9uKCk7XG4gICAgICB9LmJpbmQoZCk7XG4gICAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwgdzNjQ2Fwcyk7XG4gICAgICBjb25zdCBwID0gbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdChuZXcgRXJyb3IoJ29uVW5leHBlY3RlZFNodXRkb3duIGV2ZW50IGlzIGV4cGVjdGVkIHRvIGJlIGZpcmVkIHdpdGhpbiA1IHNlY29uZHMgdGltZW91dCcpKSwgNTAwMCk7XG4gICAgICAgIGQub25VbmV4cGVjdGVkU2h1dGRvd24ocmVzb2x2ZSk7XG4gICAgICB9KTtcbiAgICAgIGQuc3RhcnRVbmV4cGVjdGVkU2h1dGRvd24obmV3IEVycm9yKCdXZSBjcmFzaGVkJykpO1xuICAgICAgYXdhaXQgcDtcbiAgICAgIGF3YWl0IGQuZXhlY3V0ZUNvbW1hbmQoJ2dldFNlc3Npb24nKS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9zaHV0IGRvd24vKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYWxsb3cgbmV3IGNvbW1hbmRzIGFmdGVyIGRvbmUgc2h1dHRpbmcgZG93bicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIG1ha2UgYSBjb21tYW5kIHRoYXQgd2lsbCB3YWl0IGEgYml0IHNvIHdlIGNhbiBjcmFzaCB3aGlsZSBpdCdzIHJ1bm5pbmdcbiAgICAgIGQub2xkRGVsZXRlU2Vzc2lvbiA9IGQuZGVsZXRlU2Vzc2lvbjtcbiAgICAgIGQuZGVsZXRlU2Vzc2lvbiA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgQi5kZWxheSgxMDApO1xuICAgICAgICBhd2FpdCB0aGlzLm9sZERlbGV0ZVNlc3Npb24oKTtcbiAgICAgIH0uYmluZChkKTtcblxuICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIF8uY2xvbmVEZWVwKHczY0NhcHMpKTtcbiAgICAgIGNvbnN0IHAgPSBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KG5ldyBFcnJvcignb25VbmV4cGVjdGVkU2h1dGRvd24gZXZlbnQgaXMgZXhwZWN0ZWQgdG8gYmUgZmlyZWQgd2l0aGluIDUgc2Vjb25kcyB0aW1lb3V0JykpLCA1MDAwKTtcbiAgICAgICAgZC5vblVuZXhwZWN0ZWRTaHV0ZG93bihyZXNvbHZlKTtcbiAgICAgIH0pO1xuICAgICAgZC5zdGFydFVuZXhwZWN0ZWRTaHV0ZG93bihuZXcgRXJyb3IoJ1dlIGNyYXNoZWQnKSk7XG4gICAgICBhd2FpdCBwO1xuXG4gICAgICBhd2FpdCBkLmV4ZWN1dGVDb21tYW5kKCdnZXRTZXNzaW9uJykuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvc2h1dCBkb3duLyk7XG4gICAgICBhd2FpdCBCLmRlbGF5KDUwMCk7XG5cbiAgICAgIGF3YWl0IGQuZXhlY3V0ZUNvbW1hbmQoJ2NyZWF0ZVNlc3Npb24nLCBudWxsLCBudWxsLCBfLmNsb25lRGVlcCh3M2NDYXBzKSk7XG4gICAgICBhd2FpdCBkLmRlbGV0ZVNlc3Npb24oKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZGlzdGluZ3Vpc2ggYmV0d2VlbiBXM0MgYW5kIEpTT05XUCBzZXNzaW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gVGVzdCBXM0MgKGxlYXZlIGZpcnN0IDIgYXJncyBudWxsIGJlY2F1c2UgdGhvc2UgYXJlIHRoZSBKU09OV1AgYXJncylcbiAgICAgIGF3YWl0IGQuZXhlY3V0ZUNvbW1hbmQoJ2NyZWF0ZVNlc3Npb24nLCBudWxsLCBudWxsLCB7XG4gICAgICAgIGFsd2F5c01hdGNoOiBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0Q2Fwcywge1xuICAgICAgICAgIHBsYXRmb3JtTmFtZTogJ0Zha2UnLFxuICAgICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdDb21tb2RvcmUgNjQnLFxuICAgICAgICB9KSxcbiAgICAgICAgZmlyc3RNYXRjaDogW3t9XSxcbiAgICAgIH0pO1xuXG4gICAgICBkLnByb3RvY29sLnNob3VsZC5lcXVhbCgnVzNDJyk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgncHJvdG9jb2wgZGV0ZWN0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgICAgaXQoJ3Nob3VsZCB1c2UgVzNDIGlmIG9ubHkgVzNDIGNhcHMgYXJlIHByb3ZpZGVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwge2Fsd2F5c01hdGNoOiBfLmNsb25lKGRlZmF1bHRDYXBzKSwgZmlyc3RNYXRjaDogW3t9XX0pO1xuICAgICAgICBkLnByb3RvY29sLnNob3VsZC5lcXVhbCgnVzNDJyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGF2ZSBhIG1ldGhvZCB0byBnZXQgZHJpdmVyIGZvciBhIHNlc3Npb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBsZXQgW3Nlc3NJZF0gPSBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwgdzNjQ2Fwcyk7XG4gICAgICBkLmRyaXZlckZvclNlc3Npb24oc2Vzc0lkKS5zaG91bGQuZXFsKGQpO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ2NvbW1hbmQgcXVldWUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBsZXQgZCA9IG5ldyBEcml2ZXJDbGFzcygpO1xuXG4gICAgICBsZXQgd2FpdE1zID0gMTA7XG4gICAgICBkLmdldFN0YXR1cyA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgQi5kZWxheSh3YWl0TXMpO1xuICAgICAgICByZXR1cm4gRGF0ZS5ub3coKTtcbiAgICAgIH0uYmluZChkKTtcblxuICAgICAgZC5nZXRTZXNzaW9ucyA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgQi5kZWxheSh3YWl0TXMpO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ211bHRpcGFzcycpO1xuICAgICAgfS5iaW5kKGQpO1xuXG4gICAgICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgICBkLmNsZWFyTmV3Q29tbWFuZFRpbWVvdXQoKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHF1ZXVlIGNvbW1hbmRzIGFuZC5leGVjdXRlQ29tbWFuZC9yZXNwb25kIGluIHRoZSBvcmRlciByZWNlaXZlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgbGV0IG51bUNtZHMgPSAxMDtcbiAgICAgICAgbGV0IGNtZHMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1DbWRzOyBpKyspIHtcbiAgICAgICAgICBjbWRzLnB1c2goZC5leGVjdXRlQ29tbWFuZCgnZ2V0U3RhdHVzJykpO1xuICAgICAgICB9XG4gICAgICAgIGxldCByZXN1bHRzID0gYXdhaXQgQi5hbGwoY21kcyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtQ21kczsgaSsrKSB7XG4gICAgICAgICAgaWYgKHJlc3VsdHNbaV0gPD0gcmVzdWx0c1tpIC0gMV0pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignR290IHJlc3VsdCBvdXQgb2Ygb3JkZXInKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIGhhbmRsZSBlcnJvcnMgY29ycmVjdGx5IHdoZW4gcXVldWluZycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgbGV0IG51bUNtZHMgPSAxMDtcbiAgICAgICAgbGV0IGNtZHMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1DbWRzOyBpKyspIHtcbiAgICAgICAgICBpZiAoaSA9PT0gNSkge1xuICAgICAgICAgICAgY21kcy5wdXNoKGQuZXhlY3V0ZUNvbW1hbmQoJ2dldFNlc3Npb25zJykpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjbWRzLnB1c2goZC5leGVjdXRlQ29tbWFuZCgnZ2V0U3RhdHVzJykpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgcmVzdWx0cyA9IGF3YWl0IEIuc2V0dGxlKGNtZHMpO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IDU7IGkrKykge1xuICAgICAgICAgIGlmIChyZXN1bHRzW2ldLnZhbHVlKCkgPD0gcmVzdWx0c1tpIC0gMV0udmFsdWUoKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdHb3QgcmVzdWx0IG91dCBvZiBvcmRlcicpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXN1bHRzWzVdLnJlYXNvbigpLm1lc3NhZ2Uuc2hvdWxkLmNvbnRhaW4oJ211bHRpcGFzcycpO1xuICAgICAgICBmb3IgKGxldCBpID0gNzsgaSA8IG51bUNtZHM7IGkrKykge1xuICAgICAgICAgIGlmIChyZXN1bHRzW2ldLnZhbHVlKCkgPD0gcmVzdWx0c1tpIC0gMV0udmFsdWUoKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdHb3QgcmVzdWx0IG91dCBvZiBvcmRlcicpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgbm90IGNhcmUgaWYgcXVldWUgZW1wdGllcyBmb3IgYSBiaXQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGxldCBudW1DbWRzID0gMTA7XG4gICAgICAgIGxldCBjbWRzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtQ21kczsgaSsrKSB7XG4gICAgICAgICAgY21kcy5wdXNoKGQuZXhlY3V0ZUNvbW1hbmQoJ2dldFN0YXR1cycpKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgcmVzdWx0cyA9IGF3YWl0IEIuYWxsKGNtZHMpO1xuICAgICAgICBjbWRzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtQ21kczsgaSsrKSB7XG4gICAgICAgICAgY21kcy5wdXNoKGQuZXhlY3V0ZUNvbW1hbmQoJ2dldFN0YXR1cycpKTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHRzID0gYXdhaXQgQi5hbGwoY21kcyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtQ21kczsgaSsrKSB7XG4gICAgICAgICAgaWYgKHJlc3VsdHNbaV0gPD0gcmVzdWx0c1tpIC0gMV0pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignR290IHJlc3VsdCBvdXQgb2Ygb3JkZXInKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3RpbWVvdXRzJywgZnVuY3Rpb24gKCkge1xuICAgICAgYmVmb3JlKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHczY0NhcHMpO1xuICAgICAgfSk7XG4gICAgICBkZXNjcmliZSgnY29tbWFuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaXQoJ3Nob3VsZCBleGlzdCBieSBkZWZhdWx0JywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGQubmV3Q29tbWFuZFRpbWVvdXRNcy5zaG91bGQuZXF1YWwoNjAwMDApO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCBiZSBzZXR0YWJsZSB0aHJvdWdoIGB0aW1lb3V0c2AnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgYXdhaXQgZC50aW1lb3V0cygnY29tbWFuZCcsIDIwKTtcbiAgICAgICAgICBkLm5ld0NvbW1hbmRUaW1lb3V0TXMuc2hvdWxkLmVxdWFsKDIwKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIGRlc2NyaWJlKCdpbXBsaWNpdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaXQoJ3Nob3VsZCBub3QgZXhpc3QgYnkgZGVmYXVsdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBkLmltcGxpY2l0V2FpdE1zLnNob3VsZC5lcXVhbCgwKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KCdzaG91bGQgYmUgc2V0dGFibGUgdGhyb3VnaCBgdGltZW91dHNgJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGF3YWl0IGQudGltZW91dHMoJ2ltcGxpY2l0JywgMjApO1xuICAgICAgICAgIGQuaW1wbGljaXRXYWl0TXMuc2hvdWxkLmVxdWFsKDIwKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCd0aW1lb3V0cyAoVzNDKScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGJlZm9yZUVhY2goYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwgdzNjQ2Fwcyk7XG4gICAgICB9KTtcbiAgICAgIGFmdGVyRWFjaChhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGF3YWl0IGQuZGVsZXRlU2Vzc2lvbigpO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIGdldCB0aW1lb3V0cyB0aGF0IHdlIHNldCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgZC50aW1lb3V0cyh1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIDEwMDApO1xuICAgICAgICBhd2FpdCBkLmdldFRpbWVvdXRzKCkuc2hvdWxkLmV2ZW50dWFsbHkuaGF2ZS5wcm9wZXJ0eSgnaW1wbGljaXQnLCAxMDAwKTtcbiAgICAgICAgYXdhaXQgZC50aW1lb3V0cygnY29tbWFuZCcsIDIwMDApO1xuICAgICAgICBhd2FpdCBkLmdldFRpbWVvdXRzKCkuc2hvdWxkLmV2ZW50dWFsbHkuZGVlcC5lcXVhbCh7XG4gICAgICAgICAgaW1wbGljaXQ6IDEwMDAsXG4gICAgICAgICAgY29tbWFuZDogMjAwMCxcbiAgICAgICAgfSk7XG4gICAgICAgIGF3YWl0IGQudGltZW91dHModW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCAzMDAwKTtcbiAgICAgICAgYXdhaXQgZC5nZXRUaW1lb3V0cygpLnNob3VsZC5ldmVudHVhbGx5LmRlZXAuZXF1YWwoe1xuICAgICAgICAgIGltcGxpY2l0OiAzMDAwLFxuICAgICAgICAgIGNvbW1hbmQ6IDIwMDAsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgncmVzZXQgY29tcGF0aWJpbGl0eScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGl0KCdzaG91bGQgbm90IGFsbG93IGJvdGggZnVsbFJlc2V0IGFuZCBub1Jlc2V0IHRvIGJlIHRydWUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IG5ld0NhcHMgPSB7XG4gICAgICAgICAgYWx3YXlzTWF0Y2g6IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRDYXBzLCB7XG4gICAgICAgICAgICBwbGF0Zm9ybU5hbWU6ICdGYWtlJyxcbiAgICAgICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdDb21tb2RvcmUgNjQnLFxuICAgICAgICAgICAgJ2FwcGl1bTpmdWxsUmVzZXQnOiB0cnVlLFxuICAgICAgICAgICAgJ2FwcGl1bTpub1Jlc2V0JzogdHJ1ZVxuICAgICAgICAgIH0pLFxuICAgICAgICB9O1xuICAgICAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwgbmV3Q2Fwcykuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWRXaXRoKFxuICAgICAgICAgICAgL25vUmVzZXQuK2Z1bGxSZXNldC8pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgncHJveHlpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBsZXQgc2Vzc0lkO1xuICAgICAgYmVmb3JlRWFjaChhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIFtzZXNzSWRdID0gYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHczY0NhcHMpO1xuICAgICAgfSk7XG4gICAgICBkZXNjcmliZSgnI3Byb3h5QWN0aXZlJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBpdCgnc2hvdWxkIGV4aXN0JywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGQucHJveHlBY3RpdmUuc2hvdWxkLmJlLmFuLmluc3RhbmNlb2YoRnVuY3Rpb24pO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgZC5wcm94eUFjdGl2ZShzZXNzSWQpLnNob3VsZC5iZS5mYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KCdzaG91bGQgdGhyb3cgYW4gZXJyb3Igd2hlbiBzZXNzaW9uSWQgaXMgd3JvbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgKCgpID0+IHsgZC5wcm94eUFjdGl2ZSgnYWFhJyk7IH0pLnNob3VsZC50aHJvdztcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgZGVzY3JpYmUoJyNnZXRQcm94eUF2b2lkTGlzdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaXQoJ3Nob3VsZCBleGlzdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBkLmdldFByb3h5QXZvaWRMaXN0LnNob3VsZC5iZS5hbi5pbnN0YW5jZW9mKEZ1bmN0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KCdzaG91bGQgcmV0dXJuIGFuIGFycmF5JywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGQuZ2V0UHJveHlBdm9pZExpc3Qoc2Vzc0lkKS5zaG91bGQuYmUuYW4uaW5zdGFuY2VvZihBcnJheSk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIHRocm93IGFuIGVycm9yIHdoZW4gc2Vzc2lvbklkIGlzIHdyb25nJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICgoKSA9PiB7IGQuZ2V0UHJveHlBdm9pZExpc3QoJ2FhYScpOyB9KS5zaG91bGQudGhyb3c7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGRlc2NyaWJlKCcjY2FuUHJveHknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGl0KCdzaG91bGQgaGF2ZSBhICNjYW5Qcm94eSBtZXRob2QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgZC5jYW5Qcm94eS5zaG91bGQuYmUuYW4uaW5zdGFuY2VvZihGdW5jdGlvbik7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIHJldHVybiBhIGJvb2xlYW4gZnJvbSAjY2FuUHJveHknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgZC5jYW5Qcm94eShzZXNzSWQpLnNob3VsZC5iZS5hKCdib29sZWFuJyk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIHRocm93IGFuIGVycm9yIHdoZW4gc2Vzc2lvbklkIGlzIHdyb25nJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICgoKSA9PiB7IGQuY2FuUHJveHkoKTsgfSkuc2hvdWxkLnRocm93O1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBkZXNjcmliZSgnI3Byb3h5Um91dGVJc0F2b2lkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgZm9ybSBvZiBhdm9pZGFuY2UgbGlzdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjb25zdCBhdm9pZFN0dWIgPSBzYW5kYm94LnN0dWIoZCwgJ2dldFByb3h5QXZvaWRMaXN0Jyk7XG4gICAgICAgICAgYXZvaWRTdHViLnJldHVybnMoW1snUE9TVCcsIC9cXC9mb28vXSwgWydHRVQnXV0pO1xuICAgICAgICAgICgoKSA9PiB7IGQucHJveHlSb3V0ZUlzQXZvaWRlZCgpOyB9KS5zaG91bGQudGhyb3c7XG4gICAgICAgICAgYXZvaWRTdHViLnJldHVybnMoW1snUE9TVCcsIC9cXC9mb28vXSwgWydHRVQnLCAvXmZvby8sICdiYXInXV0pO1xuICAgICAgICAgICgoKSA9PiB7IGQucHJveHlSb3V0ZUlzQXZvaWRlZCgpOyB9KS5zaG91bGQudGhyb3c7XG4gICAgICAgICAgYXZvaWRTdHViLnJlc3RvcmUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KCdzaG91bGQgcmVqZWN0IGJhZCBodHRwIG1ldGhvZHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3QgYXZvaWRTdHViID0gc2FuZGJveC5zdHViKGQsICdnZXRQcm94eUF2b2lkTGlzdCcpO1xuICAgICAgICAgIGF2b2lkU3R1Yi5yZXR1cm5zKFtbJ1BPU1QnLCAvXmZvby9dLCBbJ0JBWkVURScsIC9eYmFyL11dKTtcbiAgICAgICAgICAoKCkgPT4geyBkLnByb3h5Um91dGVJc0F2b2lkZWQoKTsgfSkuc2hvdWxkLnRocm93O1xuICAgICAgICAgIGF2b2lkU3R1Yi5yZXN0b3JlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIHJlamVjdCBub24tcmVnZXggcm91dGVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IGF2b2lkU3R1YiA9IHNhbmRib3guc3R1YihkLCAnZ2V0UHJveHlBdm9pZExpc3QnKTtcbiAgICAgICAgICBhdm9pZFN0dWIucmV0dXJucyhbWydQT1NUJywgL15mb28vXSwgWydHRVQnLCAnL2JhciddXSk7XG4gICAgICAgICAgKCgpID0+IHsgZC5wcm94eVJvdXRlSXNBdm9pZGVkKCk7IH0pLnNob3VsZC50aHJvdztcbiAgICAgICAgICBhdm9pZFN0dWIucmVzdG9yZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSBmb3Igcm91dGVzIGluIHRoZSBhdm9pZCBsaXN0JywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IGF2b2lkU3R1YiA9IHNhbmRib3guc3R1YihkLCAnZ2V0UHJveHlBdm9pZExpc3QnKTtcbiAgICAgICAgICBhdm9pZFN0dWIucmV0dXJucyhbWydQT1NUJywgL15cXC9mb28vXV0pO1xuICAgICAgICAgIGQucHJveHlSb3V0ZUlzQXZvaWRlZChudWxsLCAnUE9TVCcsICcvZm9vL2JhcicpLnNob3VsZC5iZS50cnVlO1xuICAgICAgICAgIGF2b2lkU3R1Yi5yZXN0b3JlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIHN0cmlwIGF3YXkgYW55IHdkL2h1YiBwcmVmaXgnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3QgYXZvaWRTdHViID0gc2FuZGJveC5zdHViKGQsICdnZXRQcm94eUF2b2lkTGlzdCcpO1xuICAgICAgICAgIGF2b2lkU3R1Yi5yZXR1cm5zKFtbJ1BPU1QnLCAvXlxcL2Zvby9dXSk7XG4gICAgICAgICAgZC5wcm94eVJvdXRlSXNBdm9pZGVkKG51bGwsICdQT1NUJywgJy9mb28vYmFyJykuc2hvdWxkLmJlLnRydWU7XG4gICAgICAgICAgYXZvaWRTdHViLnJlc3RvcmUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIGZvciByb3V0ZXMgbm90IGluIHRoZSBhdm9pZCBsaXN0JywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IGF2b2lkU3R1YiA9IHNhbmRib3guc3R1YihkLCAnZ2V0UHJveHlBdm9pZExpc3QnKTtcbiAgICAgICAgICBhdm9pZFN0dWIucmV0dXJucyhbWydQT1NUJywgL15cXC9mb28vXV0pO1xuICAgICAgICAgIGQucHJveHlSb3V0ZUlzQXZvaWRlZChudWxsLCAnR0VUJywgJy9mb28vYmFyJykuc2hvdWxkLmJlLmZhbHNlO1xuICAgICAgICAgIGQucHJveHlSb3V0ZUlzQXZvaWRlZChudWxsLCAnUE9TVCcsICcvYm9vJykuc2hvdWxkLmJlLmZhbHNlO1xuICAgICAgICAgIGF2b2lkU3R1Yi5yZXN0b3JlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnZXZlbnQgdGltaW5nIGZyYW1ld29yaycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCBiZWZvcmVTdGFydFRpbWU7XG4gICAgICBiZWZvcmVFYWNoKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYmVmb3JlU3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgZC5zaG91bGRWYWxpZGF0ZUNhcHMgPSBmYWxzZTtcbiAgICAgICAgYXdhaXQgZC5leGVjdXRlQ29tbWFuZCgnY3JlYXRlU2Vzc2lvbicsIG51bGwsIG51bGwsIHthbHdheXNNYXRjaDogey4uLmRlZmF1bHRDYXBzfSwgZmlyc3RNYXRjaDogW3t9XX0pO1xuICAgICAgfSk7XG4gICAgICBkZXNjcmliZSgnI2V2ZW50SGlzdG9yeScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaXQoJ3Nob3VsZCBoYXZlIGFuIGV2ZW50SGlzdG9yeSBwcm9wZXJ0eScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBzaG91bGQuZXhpc3QoZC5ldmVudEhpc3RvcnkpO1xuICAgICAgICAgIHNob3VsZC5leGlzdChkLmV2ZW50SGlzdG9yeS5jb21tYW5kcyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGl0KCdzaG91bGQgaGF2ZSBhIHNlc3Npb24gc3RhcnQgdGltaW5nIGFmdGVyIHNlc3Npb24gc3RhcnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgbGV0IHtuZXdTZXNzaW9uUmVxdWVzdGVkLCBuZXdTZXNzaW9uU3RhcnRlZH0gPSBkLmV2ZW50SGlzdG9yeTtcbiAgICAgICAgICBuZXdTZXNzaW9uUmVxdWVzdGVkLnNob3VsZC5oYXZlLmxlbmd0aCgxKTtcbiAgICAgICAgICBuZXdTZXNzaW9uU3RhcnRlZC5zaG91bGQuaGF2ZS5sZW5ndGgoMSk7XG4gICAgICAgICAgbmV3U2Vzc2lvblJlcXVlc3RlZFswXS5zaG91bGQuYmUuYSgnbnVtYmVyJyk7XG4gICAgICAgICAgbmV3U2Vzc2lvblN0YXJ0ZWRbMF0uc2hvdWxkLmJlLmEoJ251bWJlcicpO1xuICAgICAgICAgIChuZXdTZXNzaW9uUmVxdWVzdGVkWzBdID49IGJlZm9yZVN0YXJ0VGltZSkuc2hvdWxkLmJlLnRydWU7XG4gICAgICAgICAgKG5ld1Nlc3Npb25TdGFydGVkWzBdID49IG5ld1Nlc3Npb25SZXF1ZXN0ZWRbMF0pLnNob3VsZC5iZS50cnVlO1xuICAgICAgICB9KTtcblxuICAgICAgICBpdCgnc2hvdWxkIGluY2x1ZGUgYSBjb21tYW5kcyBsaXN0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGF3YWl0IGQuZXhlY3V0ZUNvbW1hbmQoJ2dldFN0YXR1cycsIFtdKTtcbiAgICAgICAgICBkLmV2ZW50SGlzdG9yeS5jb21tYW5kcy5sZW5ndGguc2hvdWxkLmVxdWFsKDIpO1xuICAgICAgICAgIGQuZXZlbnRIaXN0b3J5LmNvbW1hbmRzWzFdLmNtZC5zaG91bGQuZXF1YWwoJ2dldFN0YXR1cycpO1xuICAgICAgICAgIGQuZXZlbnRIaXN0b3J5LmNvbW1hbmRzWzFdLnN0YXJ0VGltZS5zaG91bGQuYmUuYSgnbnVtYmVyJyk7XG4gICAgICAgICAgZC5ldmVudEhpc3RvcnkuY29tbWFuZHNbMV0uZW5kVGltZS5zaG91bGQuYmUuYSgnbnVtYmVyJyk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICBkZXNjcmliZSgnI2xvZ0V2ZW50JywgZnVuY3Rpb24gKCkge1xuICAgICAgICBpdCgnc2hvdWxkIGFsbG93IGxvZ2dpbmcgYXJiaXRyYXJ5IGV2ZW50cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBkLmxvZ0V2ZW50KCdmb28nKTtcbiAgICAgICAgICBkLmV2ZW50SGlzdG9yeS5mb29bMF0uc2hvdWxkLmJlLmEoJ251bWJlcicpO1xuICAgICAgICAgIChkLmV2ZW50SGlzdG9yeS5mb29bMF0gPj0gYmVmb3JlU3RhcnRUaW1lKS5zaG91bGQuYmUudHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KCdzaG91bGQgbm90IGFsbG93IHJlc2VydmVkIG9yIG9kZGx5IGZvcm1lZCBldmVudCBuYW1lcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAoKCkgPT4ge1xuICAgICAgICAgICAgZC5sb2dFdmVudCgnY29tbWFuZHMnKTtcbiAgICAgICAgICB9KS5zaG91bGQudGhyb3coKTtcbiAgICAgICAgICAoKCkgPT4ge1xuICAgICAgICAgICAgZC5sb2dFdmVudCgxKTtcbiAgICAgICAgICB9KS5zaG91bGQudGhyb3coKTtcbiAgICAgICAgICAoKCkgPT4ge1xuICAgICAgICAgICAgZC5sb2dFdmVudCh7fSk7XG4gICAgICAgICAgfSkuc2hvdWxkLnRocm93KCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIGFsbG93IGxvZ2dpbmcgdGhlIHNhbWUgZXZlbnQgbXVsdGlwbGUgdGltZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGQubG9nRXZlbnQoJ2JhcicpO1xuICAgICAgICBkLmxvZ0V2ZW50KCdiYXInKTtcbiAgICAgICAgZC5ldmVudEhpc3RvcnkuYmFyLnNob3VsZC5oYXZlLmxlbmd0aCgyKTtcbiAgICAgICAgZC5ldmVudEhpc3RvcnkuYmFyWzFdLnNob3VsZC5iZS5hKCdudW1iZXInKTtcbiAgICAgICAgKGQuZXZlbnRIaXN0b3J5LmJhclsxXSA+PSBkLmV2ZW50SGlzdG9yeS5iYXJbMF0pLnNob3VsZC5iZS50cnVlO1xuICAgICAgfSk7XG4gICAgICBkZXNjcmliZSgnZ2V0U2Vzc2lvbiBkZWNvcmF0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBpdCgnc2hvdWxkIGRlY29yYXRlIGdldFNlc3Npb24gcmVzcG9uc2UgaWYgb3B0LWluIGNhcCBpcyBwcm92aWRlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBsZXQgcmVzID0gYXdhaXQgZC5nZXRTZXNzaW9uKCk7XG4gICAgICAgICAgc2hvdWxkLm5vdC5leGlzdChyZXMuZXZlbnRzKTtcblxuICAgICAgICAgIGQuY2Fwcy5ldmVudFRpbWluZ3MgPSB0cnVlO1xuICAgICAgICAgIHJlcyA9IGF3YWl0IGQuZ2V0U2Vzc2lvbigpO1xuICAgICAgICAgIHNob3VsZC5leGlzdChyZXMuZXZlbnRzKTtcbiAgICAgICAgICBzaG91bGQuZXhpc3QocmVzLmV2ZW50cy5uZXdTZXNzaW9uUmVxdWVzdGVkKTtcbiAgICAgICAgICByZXMuZXZlbnRzLm5ld1Nlc3Npb25SZXF1ZXN0ZWRbMF0uc2hvdWxkLmJlLmEoJ251bWJlcicpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGRlc2NyaWJlKCcucmVzZXQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpdCgnc2hvdWxkIHJlc2V0IGFzIFczQyBpZiB0aGUgb3JpZ2luYWwgc2Vzc2lvbiB3YXMgVzNDJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBjYXBzID0ge1xuICAgICAgICAgIGFsd2F5c01hdGNoOiBPYmplY3QuYXNzaWduKHt9LCB7XG4gICAgICAgICAgICAnYXBwaXVtOmFwcCc6ICdGYWtlJyxcbiAgICAgICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdGYWtlJyxcbiAgICAgICAgICAgICdhcHBpdW06YXV0b21hdGlvbk5hbWUnOiAnRmFrZScsXG4gICAgICAgICAgICBwbGF0Zm9ybU5hbWU6ICdGYWtlJyxcbiAgICAgICAgICB9LCBkZWZhdWx0Q2FwcyksXG4gICAgICAgICAgZmlyc3RNYXRjaDogW3t9XSxcbiAgICAgICAgfTtcbiAgICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBjYXBzKTtcbiAgICAgICAgZC5wcm90b2NvbC5zaG91bGQuZXF1YWwoJ1czQycpO1xuICAgICAgICBhd2FpdCBkLnJlc2V0KCk7XG4gICAgICAgIGQucHJvdG9jb2wuc2hvdWxkLmVxdWFsKCdXM0MnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnRGV2aWNlU2V0dGluZ3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBub3QgaG9sZCBvbiB0byByZWZlcmVuY2Ugb2YgZGVmYXVsdHMgaW4gY29uc3RydWN0b3InLCBmdW5jdGlvbiAoKSB7XG4gICAgICBsZXQgb2JqID0ge2ZvbzogJ2Jhcid9O1xuICAgICAgbGV0IGQxID0gbmV3IERldmljZVNldHRpbmdzKG9iaik7XG4gICAgICBsZXQgZDIgPSBuZXcgRGV2aWNlU2V0dGluZ3Mob2JqKTtcbiAgICAgIGQxLl9zZXR0aW5ncy5mb28gPSAnYmF6JztcbiAgICAgIGQxLl9zZXR0aW5ncy5zaG91bGQubm90LmVxbChkMi5fc2V0dGluZ3MpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnLmlzRmVhdHVyZUVuYWJsZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgZCA9IG5ldyBEcml2ZXJDbGFzcygpO1xuXG4gICAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIGQuZGVueUluc2VjdXJlID0gbnVsbDtcbiAgICAgIGQuYWxsb3dJbnNlY3VyZSA9IG51bGw7XG4gICAgICBkLnJlbGF4ZWRTZWN1cml0eUVuYWJsZWQgPSBudWxsO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBzYXkgYSBmZWF0dXJlIGlzIGVuYWJsZWQgd2hlbiBpdCBpcyBleHBsaWNpdGx5IGFsbG93ZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkLmFsbG93SW5zZWN1cmUgPSBbJ2ZvbycsICdiYXInXTtcbiAgICAgIGQuaXNGZWF0dXJlRW5hYmxlZCgnZm9vJykuc2hvdWxkLmJlLnRydWU7XG4gICAgICBkLmlzRmVhdHVyZUVuYWJsZWQoJ2JhcicpLnNob3VsZC5iZS50cnVlO1xuICAgICAgZC5pc0ZlYXR1cmVFbmFibGVkKCdiYXonKS5zaG91bGQuYmUuZmFsc2U7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHNheSBhIGZlYXR1cmUgaXMgbm90IGVuYWJsZWQgaWYgaXQgaXMgbm90IGVuYWJsZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkLmFsbG93SW5zZWN1cmUgPSBbXTtcbiAgICAgIGQuaXNGZWF0dXJlRW5hYmxlZCgnZm9vJykuc2hvdWxkLmJlLmZhbHNlO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwcmVmZXIgZGVueUluc2VjdXJlIHRvIGFsbG93SW5zZWN1cmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkLmFsbG93SW5zZWN1cmUgPSBbJ2ZvbycsICdiYXInXTtcbiAgICAgIGQuZGVueUluc2VjdXJlID0gWydmb28nXTtcbiAgICAgIGQuaXNGZWF0dXJlRW5hYmxlZCgnZm9vJykuc2hvdWxkLmJlLmZhbHNlO1xuICAgICAgZC5pc0ZlYXR1cmVFbmFibGVkKCdiYXInKS5zaG91bGQuYmUudHJ1ZTtcbiAgICAgIGQuaXNGZWF0dXJlRW5hYmxlZCgnYmF6Jykuc2hvdWxkLmJlLmZhbHNlO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBhbGxvdyBnbG9iYWwgc2V0dGluZyBmb3IgaW5zZWN1cml0eScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGQucmVsYXhlZFNlY3VyaXR5RW5hYmxlZCA9IHRydWU7XG4gICAgICBkLmlzRmVhdHVyZUVuYWJsZWQoJ2ZvbycpLnNob3VsZC5iZS50cnVlO1xuICAgICAgZC5pc0ZlYXR1cmVFbmFibGVkKCdiYXInKS5zaG91bGQuYmUudHJ1ZTtcbiAgICAgIGQuaXNGZWF0dXJlRW5hYmxlZCgnYmF6Jykuc2hvdWxkLmJlLnRydWU7XG4gICAgfSk7XG5cbiAgICBpdCgnZ2xvYmFsIHNldHRpbmcgc2hvdWxkIGJlIG92ZXJyaWRlYWJsZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGQucmVsYXhlZFNlY3VyaXR5RW5hYmxlZCA9IHRydWU7XG4gICAgICBkLmRlbnlJbnNlY3VyZSA9IFsnZm9vJywgJ2JhciddO1xuICAgICAgZC5pc0ZlYXR1cmVFbmFibGVkKCdmb28nKS5zaG91bGQuYmUuZmFsc2U7XG4gICAgICBkLmlzRmVhdHVyZUVuYWJsZWQoJ2JhcicpLnNob3VsZC5iZS5mYWxzZTtcbiAgICAgIGQuaXNGZWF0dXJlRW5hYmxlZCgnYmF6Jykuc2hvdWxkLmJlLnRydWU7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlRHJpdmVyVW5pdFRlc3RzO1xuIl0sImZpbGUiOiJ0ZXN0L2Jhc2Vkcml2ZXIvZHJpdmVyLXRlc3RzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
|
|
544
|
+
exports.default = _default;
|
|
545
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvYmFzZWRyaXZlci9kcml2ZXItdGVzdHMuanMiXSwibmFtZXMiOlsiYmFzZURyaXZlclVuaXRUZXN0cyIsIkRyaXZlckNsYXNzIiwiZGVmYXVsdENhcHMiLCJjbGFzc05hbWUiLCJuYW1lIiwiZGVzY3JpYmUiLCJkIiwidzNjQ2FwcyIsInNhbmRib3giLCJiZWZvcmVFYWNoIiwiYWx3YXlzTWF0Y2giLCJPYmplY3QiLCJhc3NpZ24iLCJwbGF0Zm9ybU5hbWUiLCJmaXJzdE1hdGNoIiwiYWZ0ZXJFYWNoIiwiZGVsZXRlU2Vzc2lvbiIsInJlc3RvcmUiLCJpdCIsInNob3VsZCIsImV4aXN0IiwiYmFzZVZlcnNpb24iLCJzdGF0dXMiLCJnZXRTdGF0dXMiLCJlcWwiLCJzZXNzSWQiLCJjcmVhdGVTZXNzaW9uIiwiYmUiLCJhIiwibGVuZ3RoIiwiYWJvdmUiLCJfIiwiY2xvbmVEZWVwIiwiZXZlbnR1YWxseSIsInJlamVjdGVkV2l0aCIsInNlc3Npb25JZDEiLCJlcXVhbCIsInNlc3Npb25JZCIsInNlc3Npb25JZDIiLCJub3QiLCJjYXBzIiwiZ2V0U2Vzc2lvbiIsInNlc3Npb25zIiwiZ2V0U2Vzc2lvbnMiLCJjbG9uZSIsImluY2x1ZGUiLCJpZCIsImNhcGFiaWxpdGllcyIsImRldmljZU5hbWUiLCJCIiwiZGVsYXkiLCJiaW5kIiwiY21kUHJvbWlzZSIsImV4ZWN1dGVDb21tYW5kIiwicCIsInJlc29sdmUiLCJyZWplY3QiLCJzZXRUaW1lb3V0IiwiRXJyb3IiLCJvblVuZXhwZWN0ZWRTaHV0ZG93biIsInN0YXJ0VW5leHBlY3RlZFNodXRkb3duIiwib2xkRGVsZXRlU2Vzc2lvbiIsInByb3RvY29sIiwiZHJpdmVyRm9yU2Vzc2lvbiIsIndhaXRNcyIsIkRhdGUiLCJub3ciLCJjbGVhck5ld0NvbW1hbmRUaW1lb3V0IiwibnVtQ21kcyIsImNtZHMiLCJpIiwicHVzaCIsInJlc3VsdHMiLCJhbGwiLCJzZXR0bGUiLCJ2YWx1ZSIsInJlYXNvbiIsIm1lc3NhZ2UiLCJjb250YWluIiwiYmVmb3JlIiwibmV3Q29tbWFuZFRpbWVvdXRNcyIsInRpbWVvdXRzIiwiaW1wbGljaXRXYWl0TXMiLCJ1bmRlZmluZWQiLCJnZXRUaW1lb3V0cyIsImhhdmUiLCJwcm9wZXJ0eSIsImRlZXAiLCJpbXBsaWNpdCIsImNvbW1hbmQiLCJuZXdDYXBzIiwicHJveHlBY3RpdmUiLCJhbiIsImluc3RhbmNlb2YiLCJGdW5jdGlvbiIsImZhbHNlIiwidGhyb3ciLCJnZXRQcm94eUF2b2lkTGlzdCIsIkFycmF5IiwiY2FuUHJveHkiLCJhdm9pZFN0dWIiLCJzdHViIiwicmV0dXJucyIsInByb3h5Um91dGVJc0F2b2lkZWQiLCJ0cnVlIiwiYmVmb3JlU3RhcnRUaW1lIiwic2hvdWxkVmFsaWRhdGVDYXBzIiwiZXZlbnRIaXN0b3J5IiwiY29tbWFuZHMiLCJuZXdTZXNzaW9uUmVxdWVzdGVkIiwibmV3U2Vzc2lvblN0YXJ0ZWQiLCJjbWQiLCJzdGFydFRpbWUiLCJlbmRUaW1lIiwibG9nRXZlbnQiLCJmb28iLCJiYXIiLCJyZXMiLCJldmVudHMiLCJldmVudFRpbWluZ3MiLCJyZXNldCIsIm9iaiIsImQxIiwiRGV2aWNlU2V0dGluZ3MiLCJkMiIsIl9zZXR0aW5ncyIsImRlbnlJbnNlY3VyZSIsImFsbG93SW5zZWN1cmUiLCJyZWxheGVkU2VjdXJpdHlFbmFibGVkIiwiaXNGZWF0dXJlRW5hYmxlZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFLQSxTQUFTQSxtQkFBVCxDQUE4QkMsV0FBOUIsRUFBMkNDLFdBQVcsR0FBRyxFQUF6RCxFQUE2RDtBQUUzRCxRQUFNQyxTQUFTLEdBQUdGLFdBQVcsQ0FBQ0csSUFBWixJQUFvQixrQkFBdEM7QUFHQUMsRUFBQUEsUUFBUSxDQUFFLGtCQUFpQkYsU0FBVSxHQUE3QixFQUFpQyxZQUFZO0FBQ25ELFFBQUlHLENBQUosRUFBT0MsT0FBUDtBQUVBLFFBQUlDLE9BQUo7QUFFQUMs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QUFpQ1EsRUFBakMsQ0FBb0NvRSxLQUFwQztBQUNBekYsTUFBQUEsQ0FBQyxDQUFDMkgsZ0JBQUYsQ0FBbUIsS0FBbkIsRUFBMEI5RyxNQUExQixDQUFpQ1EsRUFBakMsQ0FBb0NvRSxLQUFwQztBQUNBekYsTUFBQUEsQ0FBQyxDQUFDMkgsZ0JBQUYsQ0FBbUIsS0FBbkIsRUFBMEI5RyxNQUExQixDQUFpQ1EsRUFBakMsQ0FBb0M2RSxJQUFwQztBQUNELEtBTkMsQ0FBRjtBQU9ELEdBM0NPLENBQVI7QUE0Q0Q7O2VBRWN4RyxtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgeyBEZXZpY2VTZXR0aW5ncyB9IGZyb20gJy4uLy4uL2xpYic7XG5pbXBvcnQgeyBjcmVhdGVTYW5kYm94IH0gZnJvbSAnc2lub24nO1xuXG5cbi8vIHdyYXAgdGhlc2UgdGVzdHMgaW4gYSBmdW5jdGlvbiBzbyB3ZSBjYW4gZXhwb3J0IHRoZSB0ZXN0cyBhbmQgcmUtdXNlIHRoZW1cbi8vIGZvciBhY3R1YWwgZHJpdmVyIGltcGxlbWVudGF0aW9uc1xuZnVuY3Rpb24gYmFzZURyaXZlclVuaXRUZXN0cyAoRHJpdmVyQ2xhc3MsIGRlZmF1bHRDYXBzID0ge30pIHtcbiAgLy8gdG8gZGlzcGxheSB0aGUgZHJpdmVyIHVuZGVyIHRlc3QgaW4gcmVwb3J0XG4gIGNvbnN0IGNsYXNzTmFtZSA9IERyaXZlckNsYXNzLm5hbWUgfHwgJyh1bmtub3duIGRyaXZlciknO1xuXG5cbiAgZGVzY3JpYmUoYEJhc2VEcml2ZXIgKGFzICR7Y2xhc3NOYW1lfSlgLCBmdW5jdGlvbiAoKSB7XG4gICAgbGV0IGQsIHczY0NhcHM7XG5cbiAgICBsZXQgc2FuZGJveDtcblxuICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgc2FuZGJveCA9IGNyZWF0ZVNhbmRib3goKTtcbiAgICAgIGQgPSBuZXcgRHJpdmVyQ2xhc3MoKTtcbiAgICAgIHczY0NhcHMgPSB7XG4gICAgICAgIGFsd2F5c01hdGNoOiBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0Q2Fwcywge1xuICAgICAgICAgIHBsYXRmb3JtTmFtZTogJ0Zha2UnLFxuICAgICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdDb21tb2RvcmUgNjQnLFxuICAgICAgICB9KSxcbiAgICAgICAgZmlyc3RNYXRjaDogW3t9XSxcbiAgICAgIH07XG4gICAgfSk7XG4gICAgYWZ0ZXJFYWNoKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGQuZGVsZXRlU2Vzc2lvbigpO1xuICAgICAgc2FuZGJveC5yZXN0b3JlKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlcG9ydCB0aGUgdmVyc2lvbiBvZiBCYXNlRHJpdmVyIHVzZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzaG91bGQuZXhpc3QoRHJpdmVyQ2xhc3MuYmFzZVZlcnNpb24pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYW4gZW1wdHkgc3RhdHVzIG9iamVjdCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCBzdGF0dXMgPSBhd2FpdCBkLmdldFN0YXR1cygpO1xuICAgICAgc3RhdHVzLnNob3VsZC5lcWwoe30pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYSBzZXNzaW9uSWQgZnJvbSBjcmVhdGVTZXNzaW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgbGV0IFtzZXNzSWRdID0gYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHczY0NhcHMpO1xuICAgICAgc2hvdWxkLmV4aXN0KHNlc3NJZCk7XG4gICAgICBzZXNzSWQuc2hvdWxkLmJlLmEoJ3N0cmluZycpO1xuICAgICAgc2Vzc0lkLmxlbmd0aC5zaG91bGQuYmUuYWJvdmUoNSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIG5vdCBiZSBhYmxlIHRvIHN0YXJ0IHR3byBzZXNzaW9ucyB3aXRob3V0IGNsb3NpbmcgdGhlIGZpcnN0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIF8uY2xvbmVEZWVwKHczY0NhcHMpKTtcbiAgICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCBfLmNsb25lRGVlcCh3M2NDYXBzKSkuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWRXaXRoKCdzZXNzaW9uJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJlIGFibGUgdG8gZGVsZXRlIGEgc2Vzc2lvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCBzZXNzaW9uSWQxID0gYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIF8uY2xvbmVEZWVwKHczY0NhcHMpKTtcbiAgICAgIGF3YWl0IGQuZGVsZXRlU2Vzc2lvbigpO1xuICAgICAgc2hvdWxkLmVxdWFsKGQuc2Vzc2lvbklkLCBudWxsKTtcbiAgICAgIGxldCBzZXNzaW9uSWQyID0gYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIF8uY2xvbmVEZWVwKHczY0NhcHMpKTtcbiAgICAgIHNlc3Npb25JZDEuc2hvdWxkLm5vdC5lcWwoc2Vzc2lvbklkMik7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGdldCB0aGUgY3VycmVudCBzZXNzaW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgbGV0IFssIGNhcHNdID0gYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHczY0NhcHMpO1xuICAgICAgY2Fwcy5zaG91bGQuZXF1YWwoYXdhaXQgZC5nZXRTZXNzaW9uKCkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gc2Vzc2lvbnMgaWYgbm8gc2Vzc2lvbiBleGlzdHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBsZXQgc2Vzc2lvbnMgPSBhd2FpdCBkLmdldFNlc3Npb25zKCk7XG4gICAgICBzZXNzaW9ucy5sZW5ndGguc2hvdWxkLmVxdWFsKDApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gc2Vzc2lvbnMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjYXBzID0gXy5jbG9uZSh3M2NDYXBzKTtcbiAgICAgIGNhcHMuYSA9ICdjYXAnO1xuICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIGNhcHMpO1xuICAgICAgbGV0IHNlc3Npb25zID0gYXdhaXQgZC5nZXRTZXNzaW9ucygpO1xuXG4gICAgICBzZXNzaW9ucy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgc2Vzc2lvbnNbMF0uc2hvdWxkLmluY2x1ZGUoe1xuICAgICAgICBpZDogZC5zZXNzaW9uSWRcbiAgICAgIH0pO1xuICAgICAgc2Vzc2lvbnNbMF0uY2FwYWJpbGl0aWVzLnNob3VsZC5pbmNsdWRlKHtcbiAgICAgICAgZGV2aWNlTmFtZTogJ0NvbW1vZG9yZSA2NCcsXG4gICAgICAgIHBsYXRmb3JtTmFtZTogJ0Zha2UnXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZnVsZmlsbCBhbiB1bmV4cGVjdGVkIGRyaXZlciBxdWl0IHByb21pc2UnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBtYWtlIGEgY29tbWFuZCB0aGF0IHdpbGwgd2FpdCBhIGJpdCBzbyB3ZSBjYW4gY3Jhc2ggd2hpbGUgaXQncyBydW5uaW5nXG4gICAgICBkLmdldFN0YXR1cyA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgQi5kZWxheSgxMDAwKTtcbiAgICAgICAgcmV0dXJuICdnb29kIHN0YXR1cyc7XG4gICAgICB9LmJpbmQoZCk7XG4gICAgICBsZXQgY21kUHJvbWlzZSA9IGQuZXhlY3V0ZUNvbW1hbmQoJ2dldFN0YXR1cycpO1xuICAgICAgYXdhaXQgQi5kZWxheSgxMCk7XG4gICAgICBjb25zdCBwID0gbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdChuZXcgRXJyb3IoJ29uVW5leHBlY3RlZFNodXRkb3duIGV2ZW50IGlzIGV4cGVjdGVkIHRvIGJlIGZpcmVkIHdpdGhpbiA1IHNlY29uZHMgdGltZW91dCcpKSwgNTAwMCk7XG4gICAgICAgIGQub25VbmV4cGVjdGVkU2h1dGRvd24ocmVzb2x2ZSk7XG4gICAgICB9KTtcbiAgICAgIGQuc3RhcnRVbmV4cGVjdGVkU2h1dGRvd24obmV3IEVycm9yKCdXZSBjcmFzaGVkJykpO1xuICAgICAgYXdhaXQgY21kUHJvbWlzZS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9XZSBjcmFzaGVkLyk7XG4gICAgICBhd2FpdCBwO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBub3QgYWxsb3cgY29tbWFuZHMgaW4gbWlkZGxlIG9mIHVuZXhwZWN0ZWQgc2h1dGRvd24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBtYWtlIGEgY29tbWFuZCB0aGF0IHdpbGwgd2FpdCBhIGJpdCBzbyB3ZSBjYW4gY3Jhc2ggd2hpbGUgaXQncyBydW5uaW5nXG4gICAgICBkLm9sZERlbGV0ZVNlc3Npb24gPSBkLmRlbGV0ZVNlc3Npb247XG4gICAgICBkLmRlbGV0ZVNlc3Npb24gPSBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGF3YWl0IEIuZGVsYXkoMTAwKTtcbiAgICAgICAgYXdhaXQgdGhpcy5vbGREZWxldGVTZXNzaW9uKCk7XG4gICAgICB9LmJpbmQoZCk7XG4gICAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwgdzNjQ2Fwcyk7XG4gICAgICBjb25zdCBwID0gbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdChuZXcgRXJyb3IoJ29uVW5leHBlY3RlZFNodXRkb3duIGV2ZW50IGlzIGV4cGVjdGVkIHRvIGJlIGZpcmVkIHdpdGhpbiA1IHNlY29uZHMgdGltZW91dCcpKSwgNTAwMCk7XG4gICAgICAgIGQub25VbmV4cGVjdGVkU2h1dGRvd24ocmVzb2x2ZSk7XG4gICAgICB9KTtcbiAgICAgIGQuc3RhcnRVbmV4cGVjdGVkU2h1dGRvd24obmV3IEVycm9yKCdXZSBjcmFzaGVkJykpO1xuICAgICAgYXdhaXQgcDtcbiAgICAgIGF3YWl0IGQuZXhlY3V0ZUNvbW1hbmQoJ2dldFNlc3Npb24nKS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9zaHV0IGRvd24vKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYWxsb3cgbmV3IGNvbW1hbmRzIGFmdGVyIGRvbmUgc2h1dHRpbmcgZG93bicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIG1ha2UgYSBjb21tYW5kIHRoYXQgd2lsbCB3YWl0IGEgYml0IHNvIHdlIGNhbiBjcmFzaCB3aGlsZSBpdCdzIHJ1bm5pbmdcbiAgICAgIGQub2xkRGVsZXRlU2Vzc2lvbiA9IGQuZGVsZXRlU2Vzc2lvbjtcbiAgICAgIGQuZGVsZXRlU2Vzc2lvbiA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgQi5kZWxheSgxMDApO1xuICAgICAgICBhd2FpdCB0aGlzLm9sZERlbGV0ZVNlc3Npb24oKTtcbiAgICAgIH0uYmluZChkKTtcblxuICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIF8uY2xvbmVEZWVwKHczY0NhcHMpKTtcbiAgICAgIGNvbnN0IHAgPSBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KG5ldyBFcnJvcignb25VbmV4cGVjdGVkU2h1dGRvd24gZXZlbnQgaXMgZXhwZWN0ZWQgdG8gYmUgZmlyZWQgd2l0aGluIDUgc2Vjb25kcyB0aW1lb3V0JykpLCA1MDAwKTtcbiAgICAgICAgZC5vblVuZXhwZWN0ZWRTaHV0ZG93bihyZXNvbHZlKTtcbiAgICAgIH0pO1xuICAgICAgZC5zdGFydFVuZXhwZWN0ZWRTaHV0ZG93bihuZXcgRXJyb3IoJ1dlIGNyYXNoZWQnKSk7XG4gICAgICBhd2FpdCBwO1xuXG4gICAgICBhd2FpdCBkLmV4ZWN1dGVDb21tYW5kKCdnZXRTZXNzaW9uJykuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvc2h1dCBkb3duLyk7XG4gICAgICBhd2FpdCBCLmRlbGF5KDUwMCk7XG5cbiAgICAgIGF3YWl0IGQuZXhlY3V0ZUNvbW1hbmQoJ2NyZWF0ZVNlc3Npb24nLCBudWxsLCBudWxsLCBfLmNsb25lRGVlcCh3M2NDYXBzKSk7XG4gICAgICBhd2FpdCBkLmRlbGV0ZVNlc3Npb24oKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZGlzdGluZ3Vpc2ggYmV0d2VlbiBXM0MgYW5kIEpTT05XUCBzZXNzaW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gVGVzdCBXM0MgKGxlYXZlIGZpcnN0IDIgYXJncyBudWxsIGJlY2F1c2UgdGhvc2UgYXJlIHRoZSBKU09OV1AgYXJncylcbiAgICAgIGF3YWl0IGQuZXhlY3V0ZUNvbW1hbmQoJ2NyZWF0ZVNlc3Npb24nLCBudWxsLCBudWxsLCB7XG4gICAgICAgIGFsd2F5c01hdGNoOiBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0Q2Fwcywge1xuICAgICAgICAgIHBsYXRmb3JtTmFtZTogJ0Zha2UnLFxuICAgICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdDb21tb2RvcmUgNjQnLFxuICAgICAgICB9KSxcbiAgICAgICAgZmlyc3RNYXRjaDogW3t9XSxcbiAgICAgIH0pO1xuXG4gICAgICBkLnByb3RvY29sLnNob3VsZC5lcXVhbCgnVzNDJyk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgncHJvdG9jb2wgZGV0ZWN0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgICAgaXQoJ3Nob3VsZCB1c2UgVzNDIGlmIG9ubHkgVzNDIGNhcHMgYXJlIHByb3ZpZGVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwge2Fsd2F5c01hdGNoOiBfLmNsb25lKGRlZmF1bHRDYXBzKSwgZmlyc3RNYXRjaDogW3t9XX0pO1xuICAgICAgICBkLnByb3RvY29sLnNob3VsZC5lcXVhbCgnVzNDJyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGF2ZSBhIG1ldGhvZCB0byBnZXQgZHJpdmVyIGZvciBhIHNlc3Npb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBsZXQgW3Nlc3NJZF0gPSBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwgdzNjQ2Fwcyk7XG4gICAgICBkLmRyaXZlckZvclNlc3Npb24oc2Vzc0lkKS5zaG91bGQuZXFsKGQpO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ2NvbW1hbmQgcXVldWUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBsZXQgZCA9IG5ldyBEcml2ZXJDbGFzcygpO1xuXG4gICAgICBsZXQgd2FpdE1zID0gMTA7XG4gICAgICBkLmdldFN0YXR1cyA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgQi5kZWxheSh3YWl0TXMpO1xuICAgICAgICByZXR1cm4gRGF0ZS5ub3coKTtcbiAgICAgIH0uYmluZChkKTtcblxuICAgICAgZC5nZXRTZXNzaW9ucyA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgQi5kZWxheSh3YWl0TXMpO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ211bHRpcGFzcycpO1xuICAgICAgfS5iaW5kKGQpO1xuXG4gICAgICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgICBkLmNsZWFyTmV3Q29tbWFuZFRpbWVvdXQoKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHF1ZXVlIGNvbW1hbmRzIGFuZC5leGVjdXRlQ29tbWFuZC9yZXNwb25kIGluIHRoZSBvcmRlciByZWNlaXZlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgbGV0IG51bUNtZHMgPSAxMDtcbiAgICAgICAgbGV0IGNtZHMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1DbWRzOyBpKyspIHtcbiAgICAgICAgICBjbWRzLnB1c2goZC5leGVjdXRlQ29tbWFuZCgnZ2V0U3RhdHVzJykpO1xuICAgICAgICB9XG4gICAgICAgIGxldCByZXN1bHRzID0gYXdhaXQgQi5hbGwoY21kcyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtQ21kczsgaSsrKSB7XG4gICAgICAgICAgaWYgKHJlc3VsdHNbaV0gPD0gcmVzdWx0c1tpIC0gMV0pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignR290IHJlc3VsdCBvdXQgb2Ygb3JkZXInKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIGhhbmRsZSBlcnJvcnMgY29ycmVjdGx5IHdoZW4gcXVldWluZycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgbGV0IG51bUNtZHMgPSAxMDtcbiAgICAgICAgbGV0IGNtZHMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1DbWRzOyBpKyspIHtcbiAgICAgICAgICBpZiAoaSA9PT0gNSkge1xuICAgICAgICAgICAgY21kcy5wdXNoKGQuZXhlY3V0ZUNvbW1hbmQoJ2dldFNlc3Npb25zJykpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjbWRzLnB1c2goZC5leGVjdXRlQ29tbWFuZCgnZ2V0U3RhdHVzJykpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgcmVzdWx0cyA9IGF3YWl0IEIuc2V0dGxlKGNtZHMpO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IDU7IGkrKykge1xuICAgICAgICAgIGlmIChyZXN1bHRzW2ldLnZhbHVlKCkgPD0gcmVzdWx0c1tpIC0gMV0udmFsdWUoKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdHb3QgcmVzdWx0IG91dCBvZiBvcmRlcicpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXN1bHRzWzVdLnJlYXNvbigpLm1lc3NhZ2Uuc2hvdWxkLmNvbnRhaW4oJ211bHRpcGFzcycpO1xuICAgICAgICBmb3IgKGxldCBpID0gNzsgaSA8IG51bUNtZHM7IGkrKykge1xuICAgICAgICAgIGlmIChyZXN1bHRzW2ldLnZhbHVlKCkgPD0gcmVzdWx0c1tpIC0gMV0udmFsdWUoKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdHb3QgcmVzdWx0IG91dCBvZiBvcmRlcicpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgbm90IGNhcmUgaWYgcXVldWUgZW1wdGllcyBmb3IgYSBiaXQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGxldCBudW1DbWRzID0gMTA7XG4gICAgICAgIGxldCBjbWRzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtQ21kczsgaSsrKSB7XG4gICAgICAgICAgY21kcy5wdXNoKGQuZXhlY3V0ZUNvbW1hbmQoJ2dldFN0YXR1cycpKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgcmVzdWx0cyA9IGF3YWl0IEIuYWxsKGNtZHMpO1xuICAgICAgICBjbWRzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtQ21kczsgaSsrKSB7XG4gICAgICAgICAgY21kcy5wdXNoKGQuZXhlY3V0ZUNvbW1hbmQoJ2dldFN0YXR1cycpKTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHRzID0gYXdhaXQgQi5hbGwoY21kcyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtQ21kczsgaSsrKSB7XG4gICAgICAgICAgaWYgKHJlc3VsdHNbaV0gPD0gcmVzdWx0c1tpIC0gMV0pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignR290IHJlc3VsdCBvdXQgb2Ygb3JkZXInKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3RpbWVvdXRzJywgZnVuY3Rpb24gKCkge1xuICAgICAgYmVmb3JlKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHczY0NhcHMpO1xuICAgICAgfSk7XG4gICAgICBkZXNjcmliZSgnY29tbWFuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaXQoJ3Nob3VsZCBleGlzdCBieSBkZWZhdWx0JywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGQubmV3Q29tbWFuZFRpbWVvdXRNcy5zaG91bGQuZXF1YWwoNjAwMDApO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCBiZSBzZXR0YWJsZSB0aHJvdWdoIGB0aW1lb3V0c2AnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgYXdhaXQgZC50aW1lb3V0cygnY29tbWFuZCcsIDIwKTtcbiAgICAgICAgICBkLm5ld0NvbW1hbmRUaW1lb3V0TXMuc2hvdWxkLmVxdWFsKDIwKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIGRlc2NyaWJlKCdpbXBsaWNpdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaXQoJ3Nob3VsZCBub3QgZXhpc3QgYnkgZGVmYXVsdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBkLmltcGxpY2l0V2FpdE1zLnNob3VsZC5lcXVhbCgwKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KCdzaG91bGQgYmUgc2V0dGFibGUgdGhyb3VnaCBgdGltZW91dHNgJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGF3YWl0IGQudGltZW91dHMoJ2ltcGxpY2l0JywgMjApO1xuICAgICAgICAgIGQuaW1wbGljaXRXYWl0TXMuc2hvdWxkLmVxdWFsKDIwKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCd0aW1lb3V0cyAoVzNDKScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGJlZm9yZUVhY2goYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwgdzNjQ2Fwcyk7XG4gICAgICB9KTtcbiAgICAgIGFmdGVyRWFjaChhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGF3YWl0IGQuZGVsZXRlU2Vzc2lvbigpO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIGdldCB0aW1lb3V0cyB0aGF0IHdlIHNldCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgZC50aW1lb3V0cyh1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIDEwMDApO1xuICAgICAgICBhd2FpdCBkLmdldFRpbWVvdXRzKCkuc2hvdWxkLmV2ZW50dWFsbHkuaGF2ZS5wcm9wZXJ0eSgnaW1wbGljaXQnLCAxMDAwKTtcbiAgICAgICAgYXdhaXQgZC50aW1lb3V0cygnY29tbWFuZCcsIDIwMDApO1xuICAgICAgICBhd2FpdCBkLmdldFRpbWVvdXRzKCkuc2hvdWxkLmV2ZW50dWFsbHkuZGVlcC5lcXVhbCh7XG4gICAgICAgICAgaW1wbGljaXQ6IDEwMDAsXG4gICAgICAgICAgY29tbWFuZDogMjAwMCxcbiAgICAgICAgfSk7XG4gICAgICAgIGF3YWl0IGQudGltZW91dHModW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCAzMDAwKTtcbiAgICAgICAgYXdhaXQgZC5nZXRUaW1lb3V0cygpLnNob3VsZC5ldmVudHVhbGx5LmRlZXAuZXF1YWwoe1xuICAgICAgICAgIGltcGxpY2l0OiAzMDAwLFxuICAgICAgICAgIGNvbW1hbmQ6IDIwMDAsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgncmVzZXQgY29tcGF0aWJpbGl0eScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGl0KCdzaG91bGQgbm90IGFsbG93IGJvdGggZnVsbFJlc2V0IGFuZCBub1Jlc2V0IHRvIGJlIHRydWUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IG5ld0NhcHMgPSB7XG4gICAgICAgICAgYWx3YXlzTWF0Y2g6IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRDYXBzLCB7XG4gICAgICAgICAgICBwbGF0Zm9ybU5hbWU6ICdGYWtlJyxcbiAgICAgICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdDb21tb2RvcmUgNjQnLFxuICAgICAgICAgICAgJ2FwcGl1bTpmdWxsUmVzZXQnOiB0cnVlLFxuICAgICAgICAgICAgJ2FwcGl1bTpub1Jlc2V0JzogdHJ1ZVxuICAgICAgICAgIH0pLFxuICAgICAgICB9O1xuICAgICAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwgbmV3Q2Fwcykuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWRXaXRoKFxuICAgICAgICAgICAgL25vUmVzZXQuK2Z1bGxSZXNldC8pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgncHJveHlpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBsZXQgc2Vzc0lkO1xuICAgICAgYmVmb3JlRWFjaChhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIFtzZXNzSWRdID0gYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHczY0NhcHMpO1xuICAgICAgfSk7XG4gICAgICBkZXNjcmliZSgnI3Byb3h5QWN0aXZlJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBpdCgnc2hvdWxkIGV4aXN0JywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGQucHJveHlBY3RpdmUuc2hvdWxkLmJlLmFuLmluc3RhbmNlb2YoRnVuY3Rpb24pO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgZC5wcm94eUFjdGl2ZShzZXNzSWQpLnNob3VsZC5iZS5mYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KCdzaG91bGQgdGhyb3cgYW4gZXJyb3Igd2hlbiBzZXNzaW9uSWQgaXMgd3JvbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgKCgpID0+IHsgZC5wcm94eUFjdGl2ZSgnYWFhJyk7IH0pLnNob3VsZC50aHJvdztcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgZGVzY3JpYmUoJyNnZXRQcm94eUF2b2lkTGlzdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaXQoJ3Nob3VsZCBleGlzdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBkLmdldFByb3h5QXZvaWRMaXN0LnNob3VsZC5iZS5hbi5pbnN0YW5jZW9mKEZ1bmN0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KCdzaG91bGQgcmV0dXJuIGFuIGFycmF5JywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGQuZ2V0UHJveHlBdm9pZExpc3Qoc2Vzc0lkKS5zaG91bGQuYmUuYW4uaW5zdGFuY2VvZihBcnJheSk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIHRocm93IGFuIGVycm9yIHdoZW4gc2Vzc2lvbklkIGlzIHdyb25nJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICgoKSA9PiB7IGQuZ2V0UHJveHlBdm9pZExpc3QoJ2FhYScpOyB9KS5zaG91bGQudGhyb3c7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGRlc2NyaWJlKCcjY2FuUHJveHknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGl0KCdzaG91bGQgaGF2ZSBhICNjYW5Qcm94eSBtZXRob2QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgZC5jYW5Qcm94eS5zaG91bGQuYmUuYW4uaW5zdGFuY2VvZihGdW5jdGlvbik7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIHJldHVybiBhIGJvb2xlYW4gZnJvbSAjY2FuUHJveHknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgZC5jYW5Qcm94eShzZXNzSWQpLnNob3VsZC5iZS5hKCdib29sZWFuJyk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIHRocm93IGFuIGVycm9yIHdoZW4gc2Vzc2lvbklkIGlzIHdyb25nJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICgoKSA9PiB7IGQuY2FuUHJveHkoKTsgfSkuc2hvdWxkLnRocm93O1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBkZXNjcmliZSgnI3Byb3h5Um91dGVJc0F2b2lkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgZm9ybSBvZiBhdm9pZGFuY2UgbGlzdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjb25zdCBhdm9pZFN0dWIgPSBzYW5kYm94LnN0dWIoZCwgJ2dldFByb3h5QXZvaWRMaXN0Jyk7XG4gICAgICAgICAgYXZvaWRTdHViLnJldHVybnMoW1snUE9TVCcsIC9cXC9mb28vXSwgWydHRVQnXV0pO1xuICAgICAgICAgICgoKSA9PiB7IGQucHJveHlSb3V0ZUlzQXZvaWRlZCgpOyB9KS5zaG91bGQudGhyb3c7XG4gICAgICAgICAgYXZvaWRTdHViLnJldHVybnMoW1snUE9TVCcsIC9cXC9mb28vXSwgWydHRVQnLCAvXmZvby8sICdiYXInXV0pO1xuICAgICAgICAgICgoKSA9PiB7IGQucHJveHlSb3V0ZUlzQXZvaWRlZCgpOyB9KS5zaG91bGQudGhyb3c7XG4gICAgICAgICAgYXZvaWRTdHViLnJlc3RvcmUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KCdzaG91bGQgcmVqZWN0IGJhZCBodHRwIG1ldGhvZHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3QgYXZvaWRTdHViID0gc2FuZGJveC5zdHViKGQsICdnZXRQcm94eUF2b2lkTGlzdCcpO1xuICAgICAgICAgIGF2b2lkU3R1Yi5yZXR1cm5zKFtbJ1BPU1QnLCAvXmZvby9dLCBbJ0JBWkVURScsIC9eYmFyL11dKTtcbiAgICAgICAgICAoKCkgPT4geyBkLnByb3h5Um91dGVJc0F2b2lkZWQoKTsgfSkuc2hvdWxkLnRocm93O1xuICAgICAgICAgIGF2b2lkU3R1Yi5yZXN0b3JlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIHJlamVjdCBub24tcmVnZXggcm91dGVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IGF2b2lkU3R1YiA9IHNhbmRib3guc3R1YihkLCAnZ2V0UHJveHlBdm9pZExpc3QnKTtcbiAgICAgICAgICBhdm9pZFN0dWIucmV0dXJucyhbWydQT1NUJywgL15mb28vXSwgWydHRVQnLCAnL2JhciddXSk7XG4gICAgICAgICAgKCgpID0+IHsgZC5wcm94eVJvdXRlSXNBdm9pZGVkKCk7IH0pLnNob3VsZC50aHJvdztcbiAgICAgICAgICBhdm9pZFN0dWIucmVzdG9yZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSBmb3Igcm91dGVzIGluIHRoZSBhdm9pZCBsaXN0JywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IGF2b2lkU3R1YiA9IHNhbmRib3guc3R1YihkLCAnZ2V0UHJveHlBdm9pZExpc3QnKTtcbiAgICAgICAgICBhdm9pZFN0dWIucmV0dXJucyhbWydQT1NUJywgL15cXC9mb28vXV0pO1xuICAgICAgICAgIGQucHJveHlSb3V0ZUlzQXZvaWRlZChudWxsLCAnUE9TVCcsICcvZm9vL2JhcicpLnNob3VsZC5iZS50cnVlO1xuICAgICAgICAgIGF2b2lkU3R1Yi5yZXN0b3JlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIHN0cmlwIGF3YXkgYW55IHdkL2h1YiBwcmVmaXgnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3QgYXZvaWRTdHViID0gc2FuZGJveC5zdHViKGQsICdnZXRQcm94eUF2b2lkTGlzdCcpO1xuICAgICAgICAgIGF2b2lkU3R1Yi5yZXR1cm5zKFtbJ1BPU1QnLCAvXlxcL2Zvby9dXSk7XG4gICAgICAgICAgZC5wcm94eVJvdXRlSXNBdm9pZGVkKG51bGwsICdQT1NUJywgJy9mb28vYmFyJykuc2hvdWxkLmJlLnRydWU7XG4gICAgICAgICAgYXZvaWRTdHViLnJlc3RvcmUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIGZvciByb3V0ZXMgbm90IGluIHRoZSBhdm9pZCBsaXN0JywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IGF2b2lkU3R1YiA9IHNhbmRib3guc3R1YihkLCAnZ2V0UHJveHlBdm9pZExpc3QnKTtcbiAgICAgICAgICBhdm9pZFN0dWIucmV0dXJucyhbWydQT1NUJywgL15cXC9mb28vXV0pO1xuICAgICAgICAgIGQucHJveHlSb3V0ZUlzQXZvaWRlZChudWxsLCAnR0VUJywgJy9mb28vYmFyJykuc2hvdWxkLmJlLmZhbHNlO1xuICAgICAgICAgIGQucHJveHlSb3V0ZUlzQXZvaWRlZChudWxsLCAnUE9TVCcsICcvYm9vJykuc2hvdWxkLmJlLmZhbHNlO1xuICAgICAgICAgIGF2b2lkU3R1Yi5yZXN0b3JlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnZXZlbnQgdGltaW5nIGZyYW1ld29yaycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCBiZWZvcmVTdGFydFRpbWU7XG4gICAgICBiZWZvcmVFYWNoKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYmVmb3JlU3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgZC5zaG91bGRWYWxpZGF0ZUNhcHMgPSBmYWxzZTtcbiAgICAgICAgYXdhaXQgZC5leGVjdXRlQ29tbWFuZCgnY3JlYXRlU2Vzc2lvbicsIG51bGwsIG51bGwsIHthbHdheXNNYXRjaDogey4uLmRlZmF1bHRDYXBzfSwgZmlyc3RNYXRjaDogW3t9XX0pO1xuICAgICAgfSk7XG4gICAgICBkZXNjcmliZSgnI2V2ZW50SGlzdG9yeScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaXQoJ3Nob3VsZCBoYXZlIGFuIGV2ZW50SGlzdG9yeSBwcm9wZXJ0eScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBzaG91bGQuZXhpc3QoZC5ldmVudEhpc3RvcnkpO1xuICAgICAgICAgIHNob3VsZC5leGlzdChkLmV2ZW50SGlzdG9yeS5jb21tYW5kcyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGl0KCdzaG91bGQgaGF2ZSBhIHNlc3Npb24gc3RhcnQgdGltaW5nIGFmdGVyIHNlc3Npb24gc3RhcnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgbGV0IHtuZXdTZXNzaW9uUmVxdWVzdGVkLCBuZXdTZXNzaW9uU3RhcnRlZH0gPSBkLmV2ZW50SGlzdG9yeTtcbiAgICAgICAgICBuZXdTZXNzaW9uUmVxdWVzdGVkLnNob3VsZC5oYXZlLmxlbmd0aCgxKTtcbiAgICAgICAgICBuZXdTZXNzaW9uU3RhcnRlZC5zaG91bGQuaGF2ZS5sZW5ndGgoMSk7XG4gICAgICAgICAgbmV3U2Vzc2lvblJlcXVlc3RlZFswXS5zaG91bGQuYmUuYSgnbnVtYmVyJyk7XG4gICAgICAgICAgbmV3U2Vzc2lvblN0YXJ0ZWRbMF0uc2hvdWxkLmJlLmEoJ251bWJlcicpO1xuICAgICAgICAgIChuZXdTZXNzaW9uUmVxdWVzdGVkWzBdID49IGJlZm9yZVN0YXJ0VGltZSkuc2hvdWxkLmJlLnRydWU7XG4gICAgICAgICAgKG5ld1Nlc3Npb25TdGFydGVkWzBdID49IG5ld1Nlc3Npb25SZXF1ZXN0ZWRbMF0pLnNob3VsZC5iZS50cnVlO1xuICAgICAgICB9KTtcblxuICAgICAgICBpdCgnc2hvdWxkIGluY2x1ZGUgYSBjb21tYW5kcyBsaXN0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGF3YWl0IGQuZXhlY3V0ZUNvbW1hbmQoJ2dldFN0YXR1cycsIFtdKTtcbiAgICAgICAgICBkLmV2ZW50SGlzdG9yeS5jb21tYW5kcy5sZW5ndGguc2hvdWxkLmVxdWFsKDIpO1xuICAgICAgICAgIGQuZXZlbnRIaXN0b3J5LmNvbW1hbmRzWzFdLmNtZC5zaG91bGQuZXF1YWwoJ2dldFN0YXR1cycpO1xuICAgICAgICAgIGQuZXZlbnRIaXN0b3J5LmNvbW1hbmRzWzFdLnN0YXJ0VGltZS5zaG91bGQuYmUuYSgnbnVtYmVyJyk7XG4gICAgICAgICAgZC5ldmVudEhpc3RvcnkuY29tbWFuZHNbMV0uZW5kVGltZS5zaG91bGQuYmUuYSgnbnVtYmVyJyk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICBkZXNjcmliZSgnI2xvZ0V2ZW50JywgZnVuY3Rpb24gKCkge1xuICAgICAgICBpdCgnc2hvdWxkIGFsbG93IGxvZ2dpbmcgYXJiaXRyYXJ5IGV2ZW50cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBkLmxvZ0V2ZW50KCdmb28nKTtcbiAgICAgICAgICBkLmV2ZW50SGlzdG9yeS5mb29bMF0uc2hvdWxkLmJlLmEoJ251bWJlcicpO1xuICAgICAgICAgIChkLmV2ZW50SGlzdG9yeS5mb29bMF0gPj0gYmVmb3JlU3RhcnRUaW1lKS5zaG91bGQuYmUudHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KCdzaG91bGQgbm90IGFsbG93IHJlc2VydmVkIG9yIG9kZGx5IGZvcm1lZCBldmVudCBuYW1lcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAoKCkgPT4ge1xuICAgICAgICAgICAgZC5sb2dFdmVudCgnY29tbWFuZHMnKTtcbiAgICAgICAgICB9KS5zaG91bGQudGhyb3coKTtcbiAgICAgICAgICAoKCkgPT4ge1xuICAgICAgICAgICAgZC5sb2dFdmVudCgxKTtcbiAgICAgICAgICB9KS5zaG91bGQudGhyb3coKTtcbiAgICAgICAgICAoKCkgPT4ge1xuICAgICAgICAgICAgZC5sb2dFdmVudCh7fSk7XG4gICAgICAgICAgfSkuc2hvdWxkLnRocm93KCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIGFsbG93IGxvZ2dpbmcgdGhlIHNhbWUgZXZlbnQgbXVsdGlwbGUgdGltZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGQubG9nRXZlbnQoJ2JhcicpO1xuICAgICAgICBkLmxvZ0V2ZW50KCdiYXInKTtcbiAgICAgICAgZC5ldmVudEhpc3RvcnkuYmFyLnNob3VsZC5oYXZlLmxlbmd0aCgyKTtcbiAgICAgICAgZC5ldmVudEhpc3RvcnkuYmFyWzFdLnNob3VsZC5iZS5hKCdudW1iZXInKTtcbiAgICAgICAgKGQuZXZlbnRIaXN0b3J5LmJhclsxXSA+PSBkLmV2ZW50SGlzdG9yeS5iYXJbMF0pLnNob3VsZC5iZS50cnVlO1xuICAgICAgfSk7XG4gICAgICBkZXNjcmliZSgnZ2V0U2Vzc2lvbiBkZWNvcmF0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBpdCgnc2hvdWxkIGRlY29yYXRlIGdldFNlc3Npb24gcmVzcG9uc2UgaWYgb3B0LWluIGNhcCBpcyBwcm92aWRlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBsZXQgcmVzID0gYXdhaXQgZC5nZXRTZXNzaW9uKCk7XG4gICAgICAgICAgc2hvdWxkLm5vdC5leGlzdChyZXMuZXZlbnRzKTtcblxuICAgICAgICAgIGQuY2Fwcy5ldmVudFRpbWluZ3MgPSB0cnVlO1xuICAgICAgICAgIHJlcyA9IGF3YWl0IGQuZ2V0U2Vzc2lvbigpO1xuICAgICAgICAgIHNob3VsZC5leGlzdChyZXMuZXZlbnRzKTtcbiAgICAgICAgICBzaG91bGQuZXhpc3QocmVzLmV2ZW50cy5uZXdTZXNzaW9uUmVxdWVzdGVkKTtcbiAgICAgICAgICByZXMuZXZlbnRzLm5ld1Nlc3Npb25SZXF1ZXN0ZWRbMF0uc2hvdWxkLmJlLmEoJ251bWJlcicpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGRlc2NyaWJlKCcucmVzZXQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpdCgnc2hvdWxkIHJlc2V0IGFzIFczQyBpZiB0aGUgb3JpZ2luYWwgc2Vzc2lvbiB3YXMgVzNDJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBjYXBzID0ge1xuICAgICAgICAgIGFsd2F5c01hdGNoOiBPYmplY3QuYXNzaWduKHt9LCB7XG4gICAgICAgICAgICAnYXBwaXVtOmFwcCc6ICdGYWtlJyxcbiAgICAgICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdGYWtlJyxcbiAgICAgICAgICAgICdhcHBpdW06YXV0b21hdGlvbk5hbWUnOiAnRmFrZScsXG4gICAgICAgICAgICBwbGF0Zm9ybU5hbWU6ICdGYWtlJyxcbiAgICAgICAgICB9LCBkZWZhdWx0Q2FwcyksXG4gICAgICAgICAgZmlyc3RNYXRjaDogW3t9XSxcbiAgICAgICAgfTtcbiAgICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBjYXBzKTtcbiAgICAgICAgZC5wcm90b2NvbC5zaG91bGQuZXF1YWwoJ1czQycpO1xuICAgICAgICBhd2FpdCBkLnJlc2V0KCk7XG4gICAgICAgIGQucHJvdG9jb2wuc2hvdWxkLmVxdWFsKCdXM0MnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnRGV2aWNlU2V0dGluZ3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBub3QgaG9sZCBvbiB0byByZWZlcmVuY2Ugb2YgZGVmYXVsdHMgaW4gY29uc3RydWN0b3InLCBmdW5jdGlvbiAoKSB7XG4gICAgICBsZXQgb2JqID0ge2ZvbzogJ2Jhcid9O1xuICAgICAgbGV0IGQxID0gbmV3IERldmljZVNldHRpbmdzKG9iaik7XG4gICAgICBsZXQgZDIgPSBuZXcgRGV2aWNlU2V0dGluZ3Mob2JqKTtcbiAgICAgIGQxLl9zZXR0aW5ncy5mb28gPSAnYmF6JztcbiAgICAgIGQxLl9zZXR0aW5ncy5zaG91bGQubm90LmVxbChkMi5fc2V0dGluZ3MpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnLmlzRmVhdHVyZUVuYWJsZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgZCA9IG5ldyBEcml2ZXJDbGFzcygpO1xuXG4gICAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIGQuZGVueUluc2VjdXJlID0gbnVsbDtcbiAgICAgIGQuYWxsb3dJbnNlY3VyZSA9IG51bGw7XG4gICAgICBkLnJlbGF4ZWRTZWN1cml0eUVuYWJsZWQgPSBudWxsO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBzYXkgYSBmZWF0dXJlIGlzIGVuYWJsZWQgd2hlbiBpdCBpcyBleHBsaWNpdGx5IGFsbG93ZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkLmFsbG93SW5zZWN1cmUgPSBbJ2ZvbycsICdiYXInXTtcbiAgICAgIGQuaXNGZWF0dXJlRW5hYmxlZCgnZm9vJykuc2hvdWxkLmJlLnRydWU7XG4gICAgICBkLmlzRmVhdHVyZUVuYWJsZWQoJ2JhcicpLnNob3VsZC5iZS50cnVlO1xuICAgICAgZC5pc0ZlYXR1cmVFbmFibGVkKCdiYXonKS5zaG91bGQuYmUuZmFsc2U7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHNheSBhIGZlYXR1cmUgaXMgbm90IGVuYWJsZWQgaWYgaXQgaXMgbm90IGVuYWJsZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkLmFsbG93SW5zZWN1cmUgPSBbXTtcbiAgICAgIGQuaXNGZWF0dXJlRW5hYmxlZCgnZm9vJykuc2hvdWxkLmJlLmZhbHNlO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwcmVmZXIgZGVueUluc2VjdXJlIHRvIGFsbG93SW5zZWN1cmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkLmFsbG93SW5zZWN1cmUgPSBbJ2ZvbycsICdiYXInXTtcbiAgICAgIGQuZGVueUluc2VjdXJlID0gWydmb28nXTtcbiAgICAgIGQuaXNGZWF0dXJlRW5hYmxlZCgnZm9vJykuc2hvdWxkLmJlLmZhbHNlO1xuICAgICAgZC5pc0ZlYXR1cmVFbmFibGVkKCdiYXInKS5zaG91bGQuYmUudHJ1ZTtcbiAgICAgIGQuaXNGZWF0dXJlRW5hYmxlZCgnYmF6Jykuc2hvdWxkLmJlLmZhbHNlO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBhbGxvdyBnbG9iYWwgc2V0dGluZyBmb3IgaW5zZWN1cml0eScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGQucmVsYXhlZFNlY3VyaXR5RW5hYmxlZCA9IHRydWU7XG4gICAgICBkLmlzRmVhdHVyZUVuYWJsZWQoJ2ZvbycpLnNob3VsZC5iZS50cnVlO1xuICAgICAgZC5pc0ZlYXR1cmVFbmFibGVkKCdiYXInKS5zaG91bGQuYmUudHJ1ZTtcbiAgICAgIGQuaXNGZWF0dXJlRW5hYmxlZCgnYmF6Jykuc2hvdWxkLmJlLnRydWU7XG4gICAgfSk7XG5cbiAgICBpdCgnZ2xvYmFsIHNldHRpbmcgc2hvdWxkIGJlIG92ZXJyaWRlYWJsZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGQucmVsYXhlZFNlY3VyaXR5RW5hYmxlZCA9IHRydWU7XG4gICAgICBkLmRlbnlJbnNlY3VyZSA9IFsnZm9vJywgJ2JhciddO1xuICAgICAgZC5pc0ZlYXR1cmVFbmFibGVkKCdmb28nKS5zaG91bGQuYmUuZmFsc2U7XG4gICAgICBkLmlzRmVhdHVyZUVuYWJsZWQoJ2JhcicpLnNob3VsZC5iZS5mYWxzZTtcbiAgICAgIGQuaXNGZWF0dXJlRW5hYmxlZCgnYmF6Jykuc2hvdWxkLmJlLnRydWU7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlRHJpdmVyVW5pdFRlc3RzO1xuIl19
|
|
@@ -22,7 +22,5 @@ require("source-map-support/register");
|
|
|
22
22
|
|
|
23
23
|
var _driverTests = _interopRequireDefault(require("./driver-tests"));
|
|
24
24
|
|
|
25
|
-
var _driverE2eTests = _interopRequireDefault(require("./driver-e2e-tests"));
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvYmFzZWRyaXZlci9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7O0FBQ0EiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0cmFuc3BpbGU6bWFpblxuXG5pbXBvcnQgYmFzZURyaXZlclVuaXRUZXN0cyBmcm9tICcuL2RyaXZlci10ZXN0cyc7XG5pbXBvcnQgYmFzZURyaXZlckUyRVRlc3RzIGZyb20gJy4vZHJpdmVyLWUyZS10ZXN0cyc7XG5cbmV4cG9ydCB7IGJhc2VEcml2ZXJVbml0VGVzdHMsIGJhc2VEcml2ZXJFMkVUZXN0cyB9O1xuIl0sImZpbGUiOiJ0ZXN0L2Jhc2Vkcml2ZXIvaW5kZXguanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
|
|
25
|
+
var _driverE2eTests = _interopRequireDefault(require("./driver-e2e-tests"));
|
|
26
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvYmFzZWRyaXZlci9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7O0FBQ0EiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0cmFuc3BpbGU6bWFpblxuXG5pbXBvcnQgYmFzZURyaXZlclVuaXRUZXN0cyBmcm9tICcuL2RyaXZlci10ZXN0cyc7XG5pbXBvcnQgYmFzZURyaXZlckUyRVRlc3RzIGZyb20gJy4vZHJpdmVyLWUyZS10ZXN0cyc7XG5cbmV4cG9ydCB7IGJhc2VEcml2ZXJVbml0VGVzdHMsIGJhc2VEcml2ZXJFMkVUZXN0cyB9O1xuIl19
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
require("source-map-support/register");
|
|
6
|
+
|
|
7
|
+
var _lib = _interopRequireDefault(require("../../../lib"));
|
|
8
|
+
|
|
9
|
+
var _driverE2eTests = _interopRequireDefault(require("../../basedriver/driver-e2e-tests"));
|
|
10
|
+
|
|
11
|
+
(0, _driverE2eTests.default)(_lib.default, {
|
|
12
|
+
platformName: 'iOS',
|
|
13
|
+
'appium:deviceName': 'Delorean'
|
|
14
|
+
});
|
|
15
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvZTJlL2Jhc2Vkcml2ZXIvZHJpdmVyLmUyZS5zcGVjLmpzIl0sIm5hbWVzIjpbIkJhc2VEcml2ZXIiLCJwbGF0Zm9ybU5hbWUiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBOztBQUNBOztBQUNBLDZCQUFtQkEsWUFBbkIsRUFBK0I7QUFDN0JDLEVBQUFBLFlBQVksRUFBRSxLQURlO0FBRTdCLHVCQUFxQjtBQUZRLENBQS9CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHJhbnNwaWxlOm1vY2hhXG5cbmltcG9ydCBCYXNlRHJpdmVyIGZyb20gJy4uLy4uLy4uL2xpYic7XG5pbXBvcnQgYmFzZURyaXZlckUyRVRlc3RzIGZyb20gJy4uLy4uL2Jhc2Vkcml2ZXIvZHJpdmVyLWUyZS10ZXN0cyc7XG5iYXNlRHJpdmVyRTJFVGVzdHMoQmFzZURyaXZlciwge1xuICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRGVsb3JlYW4nXG59KTtcbiJdfQ==
|