@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.
Files changed (110) hide show
  1. package/build/lib/basedriver/capabilities.js +2 -4
  2. package/build/lib/basedriver/commands/event.js +2 -4
  3. package/build/lib/basedriver/commands/find.js +2 -4
  4. package/build/lib/basedriver/commands/index.js +2 -4
  5. package/build/lib/basedriver/commands/log.js +2 -4
  6. package/build/lib/basedriver/commands/session.js +2 -4
  7. package/build/lib/basedriver/commands/settings.js +2 -4
  8. package/build/lib/basedriver/commands/timeout.js +2 -4
  9. package/build/lib/basedriver/desired-caps.js +2 -4
  10. package/build/lib/basedriver/device-settings.js +2 -4
  11. package/build/lib/basedriver/driver.js +17 -6
  12. package/build/lib/basedriver/helpers.js +2 -4
  13. package/build/lib/basedriver/logger.js +2 -4
  14. package/build/lib/constants.js +2 -4
  15. package/build/lib/express/crash.js +2 -4
  16. package/build/lib/express/express-logging.js +2 -4
  17. package/build/lib/express/idempotency.js +2 -4
  18. package/build/lib/express/logger.js +2 -4
  19. package/build/lib/express/middleware.js +2 -4
  20. package/build/lib/express/server.js +2 -4
  21. package/build/lib/express/static.js +2 -4
  22. package/build/lib/express/websocket.js +2 -4
  23. package/build/lib/helpers/capabilities.js +2 -4
  24. package/build/lib/index.js +2 -4
  25. package/build/lib/jsonwp-proxy/protocol-converter.js +2 -4
  26. package/build/lib/jsonwp-proxy/proxy.js +2 -4
  27. package/build/lib/jsonwp-status/status.js +2 -4
  28. package/build/lib/protocol/errors.js +2 -4
  29. package/build/lib/protocol/helpers.js +2 -4
  30. package/build/lib/protocol/index.js +2 -4
  31. package/build/lib/protocol/protocol.js +2 -4
  32. package/build/lib/protocol/routes.js +2 -4
  33. package/build/lib/protocol/validators.js +2 -4
  34. package/build/test/basedriver/README.md +5 -0
  35. package/build/test/basedriver/driver-e2e-tests.js +2 -4
  36. package/build/test/basedriver/driver-tests.js +2 -4
  37. package/build/test/basedriver/index.js +2 -4
  38. package/build/test/e2e/basedriver/driver.e2e.spec.js +15 -0
  39. package/build/test/e2e/basedriver/helpers.e2e.spec.js +192 -0
  40. package/build/test/e2e/basedriver/websockets.e2e.spec.js +82 -0
  41. package/build/test/e2e/express/server.e2e.spec.js +159 -0
  42. package/build/test/e2e/jsonwp-proxy/proxy.e2e.spec.js +59 -0
  43. package/build/test/e2e/protocol/fake-driver.js +163 -0
  44. package/build/test/e2e/protocol/helpers.js +25 -0
  45. package/build/test/e2e/protocol/protocol.e2e.spec.js +1186 -0
  46. package/build/test/helpers.js +2 -4
  47. package/build/test/unit/basedriver/capabilities.spec.js +672 -0
  48. package/build/test/unit/basedriver/capability.spec.js +353 -0
  49. package/build/test/unit/basedriver/commands/event.spec.js +110 -0
  50. package/build/test/unit/basedriver/commands/log.spec.js +85 -0
  51. package/build/test/unit/basedriver/driver.spec.js +15 -0
  52. package/build/test/unit/basedriver/helpers.spec.js +151 -0
  53. package/build/test/unit/basedriver/timeout.spec.js +135 -0
  54. package/build/test/unit/express/server.spec.js +155 -0
  55. package/build/test/unit/express/static.spec.js +26 -0
  56. package/build/test/unit/jsonwp-proxy/mock-request.js +91 -0
  57. package/build/test/unit/jsonwp-proxy/protocol-converter.spec.js +171 -0
  58. package/build/test/unit/jsonwp-proxy/proxy.spec.js +292 -0
  59. package/build/test/unit/jsonwp-proxy/url.spec.js +165 -0
  60. package/build/test/unit/jsonwp-status/status.spec.js +34 -0
  61. package/build/test/unit/protocol/errors.spec.js +390 -0
  62. package/build/test/unit/protocol/routes.spec.js +80 -0
  63. package/build/test/unit/protocol/validator.spec.js +149 -0
  64. package/lib/basedriver/driver.js +15 -4
  65. package/package.json +14 -9
  66. package/test/basedriver/README.md +5 -0
  67. package/test/basedriver/driver-e2e-tests.js +1 -1
  68. package/build/test/basedriver/capabilities-specs.js +0 -674
  69. package/build/test/basedriver/capability-specs.js +0 -355
  70. package/build/test/basedriver/commands/event-specs.js +0 -112
  71. package/build/test/basedriver/commands/log-specs.js +0 -87
  72. package/build/test/basedriver/driver-e2e-specs.js +0 -17
  73. package/build/test/basedriver/driver-specs.js +0 -17
  74. package/build/test/basedriver/helpers-e2e-specs.js +0 -194
  75. package/build/test/basedriver/helpers-specs.js +0 -153
  76. package/build/test/basedriver/timeout-specs.js +0 -137
  77. package/build/test/basedriver/websockets-e2e-specs.js +0 -84
  78. package/build/test/express/server-e2e-specs.js +0 -161
  79. package/build/test/express/server-specs.js +0 -157
  80. package/build/test/express/static-specs.js +0 -28
  81. package/build/test/jsonwp-proxy/mock-request.js +0 -93
  82. package/build/test/jsonwp-proxy/protocol-converter-specs.js +0 -173
  83. package/build/test/jsonwp-proxy/proxy-e2e-specs.js +0 -61
  84. package/build/test/jsonwp-proxy/proxy-specs.js +0 -294
  85. package/build/test/jsonwp-proxy/url-specs.js +0 -167
  86. package/build/test/jsonwp-status/status-specs.js +0 -36
  87. package/build/test/protocol/errors-specs.js +0 -388
  88. package/build/test/protocol/fake-driver.js +0 -165
  89. package/build/test/protocol/helpers.js +0 -27
  90. package/build/test/protocol/protocol-e2e-specs.js +0 -1188
  91. package/build/test/protocol/routes-specs.js +0 -82
  92. package/build/test/protocol/validator-specs.js +0 -151
  93. package/test/basedriver/capabilities-specs.js +0 -537
  94. package/test/basedriver/capability-specs.js +0 -383
  95. package/test/basedriver/commands/event-specs.js +0 -74
  96. package/test/basedriver/commands/log-specs.js +0 -79
  97. package/test/basedriver/driver-e2e-specs.js +0 -8
  98. package/test/basedriver/driver-specs.js +0 -8
  99. package/test/basedriver/fixtures/BadZippedApp.zip +0 -1
  100. package/test/basedriver/fixtures/FakeAndroidApp.apk +0 -1
  101. package/test/basedriver/fixtures/FakeAndroidApp.asd +0 -0
  102. package/test/basedriver/fixtures/FakeIOSApp.app +0 -1
  103. package/test/basedriver/fixtures/FakeIOSApp.app.zip +0 -0
  104. package/test/basedriver/fixtures/FakeIOSApp.ipa +0 -0
  105. package/test/basedriver/fixtures/custom-element-finder-bad.js +0 -5
  106. package/test/basedriver/fixtures/custom-element-finder.js +0 -29
  107. package/test/basedriver/helpers-e2e-specs.js +0 -187
  108. package/test/basedriver/helpers-specs.js +0 -137
  109. package/test/basedriver/timeout-specs.js +0 -128
  110. package/test/basedriver/websockets-e2e-specs.js +0 -75
@@ -51,7 +51,5 @@ const createAppiumURL = (0, _lodash.curry)((address, port, session, pathname) =>
51
51
  let url = new URL(path, `${address}:${port}`);
52
52
  return url.href;
53
53
  }, 4);
54
- exports.createAppiumURL = createAppiumURL;require('source-map-support').install();
55
-
56
-
57
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvaGVscGVycy5qcyJdLCJuYW1lcyI6WyJURVNUX0hPU1QiLCJNRVRIT0RTIiwiUE9TVCIsIkRFTEVURSIsInRlc3RQb3J0IiwiZ2V0VGVzdFBvcnQiLCJmb3JjZSIsInBvcnQiLCJjcmVhdGVBcHBpdW1VUkwiLCJhZGRyZXNzIiwic2Vzc2lvbiIsInBhdGhuYW1lIiwidGVzdCIsInBhdGgiLCJ1cmwiLCJVUkwiLCJocmVmIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQSxNQUFNQSxTQUFTLEdBQUcsV0FBbEI7O0FBS0EsTUFBTUMsT0FBTyxHQUFHO0FBQ2RDLEVBQUFBLElBQUksRUFBRSxNQURRO0FBRWRDLEVBQUFBLE1BQU0sRUFBRTtBQUZNLENBQWhCOztBQUtBLElBQUlDLFFBQUo7O0FBTUEsZUFBZUMsV0FBZixDQUE0QkMsS0FBSyxHQUFHLEtBQXBDLEVBQTJDO0FBQ3pDLE1BQUlBLEtBQUssSUFBSSxDQUFDRixRQUFkLEVBQXdCO0FBQ3RCLFFBQUlHLElBQUksR0FBRyxNQUFNLHVCQUFqQjs7QUFDQSxRQUFJLENBQUNILFFBQUwsRUFBZTtBQUNiQSxNQUFBQSxRQUFRLEdBQUdHLElBQVg7QUFDRDs7QUFDRCxXQUFPQSxJQUFQO0FBQ0Q7O0FBQ0QsU0FBT0gsUUFBUDtBQUNEOztBQUVELE1BQU1JLGVBQWUsR0FBRyxtQkEyQnRCLENBQUNDLE9BQUQsRUFBVUYsSUFBVixFQUFnQkcsT0FBaEIsRUFBeUJDLFFBQXpCLEtBQXNDO0FBQ3BDLE1BQUksQ0FBQyxlQUFlQyxJQUFmLENBQW9CSCxPQUFwQixDQUFMLEVBQW1DO0FBQ2pDQSxJQUFBQSxPQUFPLEdBQUksVUFBU0EsT0FBUSxFQUE1QjtBQUNEOztBQUNELE1BQUlJLElBQUksR0FBR0gsT0FBTyxHQUFJLFdBQVVBLE9BQVEsRUFBdEIsR0FBMEIsRUFBNUM7O0FBQ0EsTUFBSUMsUUFBSixFQUFjO0FBQ1pFLElBQUFBLElBQUksR0FBSSxHQUFFQSxJQUFLLElBQUdGLFFBQVMsRUFBM0I7QUFDRDs7QUFDRCxNQUFJRyxHQUFHLEdBQUcsSUFBSUMsR0FBSixDQUFRRixJQUFSLEVBQWUsR0FBRUosT0FBUSxJQUFHRixJQUFLLEVBQWpDLENBQVY7QUFDQSxTQUFPTyxHQUFHLENBQUNFLElBQVg7QUFDRCxDQXJDcUIsRUFzQ3RCLENBdENzQixDQUF4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBnZXRQb3J0IGZyb20gJ2dldC1wb3J0JztcbmltcG9ydCB7Y3Vycnl9IGZyb20gJ2xvZGFzaCc7XG5cbmNvbnN0IFRFU1RfSE9TVCA9ICcxMjcuMC4wLjEnO1xuXG4vKipcbiAqIFNvbWUgSFRUUCBtZXRob2RzLCBmb3IgeW91ciBwbGVhc3VyZVxuICovXG5jb25zdCBNRVRIT0RTID0ge1xuICBQT1NUOiAnUE9TVCcsXG4gIERFTEVURTogJ0RFTEVURSdcbn07XG5cbmxldCB0ZXN0UG9ydDtcbi8qKlxuICogUmV0dXJucyBhIGZyZWUgcG9ydDsgb25lIHBlciBwcm9jZXNzXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtmb3JjZV0gLSBJZiB0cnVlLCBkbyBub3QgcmV1c2UgdGhlIHBvcnQgKGlmIGl0IGFscmVhZHkgZXhpc3RzKVxuICogQHJldHVybnMge1Byb21pc2U8bnVtYmVyPn0gYSBmcmVlIHBvcnRcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0VGVzdFBvcnQgKGZvcmNlID0gZmFsc2UpIHtcbiAgaWYgKGZvcmNlIHx8ICF0ZXN0UG9ydCkge1xuICAgIGxldCBwb3J0ID0gYXdhaXQgZ2V0UG9ydCgpO1xuICAgIGlmICghdGVzdFBvcnQpIHtcbiAgICAgIHRlc3RQb3J0ID0gcG9ydDtcbiAgICB9XG4gICAgcmV0dXJuIHBvcnQ7XG4gIH1cbiAgcmV0dXJuIHRlc3RQb3J0O1xufVxuXG5jb25zdCBjcmVhdGVBcHBpdW1VUkwgPSBjdXJyeShcbiAgLyoqXG4gICAqIEJ1aWxkIGFuIEFwcGl1bSBVUkwgZnJvbSBjb21wb25lbnRzLlxuICAgKlxuICAgKiAqKkFsbCoqIHBhcmFtZXRlcnMgYXJlIHJlcXVpcmVkLiAgUHJvdmlkZSBhbiBlbXB0eSBzdHJpbmcgKGAnJ2ApIGlmIHlvdSBkb24ndCBuZWVkIG9uZS5cbiAgICogVG8gcmVhcnJhbmdlIGFyZ3VtZW50cyAoaWYgbmVlZGVkKSwgdXNlIHRoZSBwbGFjZWhvbGRlciAoYF9gKS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgLSBCYXNlIGFkZHJlc3MgKHcvIG9wdGlvbmFsIHByb3RvY29sKVxuICAgKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IHBvcnQgLSBQb3J0IG51bWJlclxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2Vzc2lvbiAtIFNlc3Npb24gSURcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGhuYW1lIC0gRXh0cmEgcGF0aFxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBOZXcgVVJMXG4gICAqIEBleGFtcGxlXG4gICAqXG4gICAqIGltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG4gICAqXG4gICAqIC8vIGh0dHA6Ly8xMjcuMC4wLjE6MzEzMzcvc2Vzc2lvblxuICAgKiBjcmVhdGVBcHBpdW1VUkwoJzEyNy4wLjAuMScsIDMxMzM3LCAnJywgJ3Nlc3Npb24nKVxuICAgKlxuICAgKiAvLyBodHRwOi8vMTI3LjAuMC4xOjMxMzM3L3Nlc3Npb24vYXNkZmdqa2xcbiAgICogY29uc3QgY3JlYXRlU2Vzc2lvblVSTCA9IGNyZWF0ZUFwcGl1bVVSTCgnMTI3LjAuMC4xJywgMzEzMzcsIF8sICdzZXNzaW9uJylcbiAgICogY3JlYXRlU2Vzc2lvblVSTCgnYXNkZmdqa2wnKVxuICAgKlxuICAgKiAvLyBodHRwOi8vMTI3LjAuMC4xOjMxMzM3L3Nlc3Npb24vYXNkZmdqa2wvYXBwaXVtL2V4ZWN1dGVcbiAgICogY29uc3QgY3JlYXRlVVJMV2l0aFBhdGggPSBjcmVhdGVBcHBpdW1VUkwoJzEyNy4wLjAuMScsIDMxMzM3LCAnYXNkZmdqa2wnKTtcbiAgICogY3JlYXRlVVJMV2l0aFBhdGgoJ2FwcGl1bS9leGVjdXRlJylcbiAgICovXG4gIChhZGRyZXNzLCBwb3J0LCBzZXNzaW9uLCBwYXRobmFtZSkgPT4ge1xuICAgIGlmICghL15odHRwcz86XFwvXFwvLy50ZXN0KGFkZHJlc3MpKSB7XG4gICAgICBhZGRyZXNzID0gYGh0dHA6Ly8ke2FkZHJlc3N9YDtcbiAgICB9XG4gICAgbGV0IHBhdGggPSBzZXNzaW9uID8gYHNlc3Npb24vJHtzZXNzaW9ufWAgOiAnJztcbiAgICBpZiAocGF0aG5hbWUpIHtcbiAgICAgIHBhdGggPSBgJHtwYXRofS8ke3BhdGhuYW1lfWA7XG4gICAgfVxuICAgIGxldCB1cmwgPSBuZXcgVVJMKHBhdGgsIGAke2FkZHJlc3N9OiR7cG9ydH1gKTtcbiAgICByZXR1cm4gdXJsLmhyZWY7XG4gIH0sXG4gIDQsXG4pO1xuXG5leHBvcnQge1RFU1RfSE9TVCwgTUVUSE9EUywgZ2V0VGVzdFBvcnQsIGNyZWF0ZUFwcGl1bVVSTH07XG4iXSwiZmlsZSI6InRlc3QvaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLiJ9
54
+ exports.createAppiumURL = createAppiumURL;
55
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3Rlc3QvaGVscGVycy5qcyJdLCJuYW1lcyI6WyJURVNUX0hPU1QiLCJNRVRIT0RTIiwiUE9TVCIsIkRFTEVURSIsInRlc3RQb3J0IiwiZ2V0VGVzdFBvcnQiLCJmb3JjZSIsInBvcnQiLCJjcmVhdGVBcHBpdW1VUkwiLCJhZGRyZXNzIiwic2Vzc2lvbiIsInBhdGhuYW1lIiwidGVzdCIsInBhdGgiLCJ1cmwiLCJVUkwiLCJocmVmIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQSxNQUFNQSxTQUFTLEdBQUcsV0FBbEI7O0FBS0EsTUFBTUMsT0FBTyxHQUFHO0FBQ2RDLEVBQUFBLElBQUksRUFBRSxNQURRO0FBRWRDLEVBQUFBLE1BQU0sRUFBRTtBQUZNLENBQWhCOztBQUtBLElBQUlDLFFBQUo7O0FBTUEsZUFBZUMsV0FBZixDQUE0QkMsS0FBSyxHQUFHLEtBQXBDLEVBQTJDO0FBQ3pDLE1BQUlBLEtBQUssSUFBSSxDQUFDRixRQUFkLEVBQXdCO0FBQ3RCLFFBQUlHLElBQUksR0FBRyxNQUFNLHVCQUFqQjs7QUFDQSxRQUFJLENBQUNILFFBQUwsRUFBZTtBQUNiQSxNQUFBQSxRQUFRLEdBQUdHLElBQVg7QUFDRDs7QUFDRCxXQUFPQSxJQUFQO0FBQ0Q7O0FBQ0QsU0FBT0gsUUFBUDtBQUNEOztBQUVELE1BQU1JLGVBQWUsR0FBRyxtQkEyQnRCLENBQUNDLE9BQUQsRUFBVUYsSUFBVixFQUFnQkcsT0FBaEIsRUFBeUJDLFFBQXpCLEtBQXNDO0FBQ3BDLE1BQUksQ0FBQyxlQUFlQyxJQUFmLENBQW9CSCxPQUFwQixDQUFMLEVBQW1DO0FBQ2pDQSxJQUFBQSxPQUFPLEdBQUksVUFBU0EsT0FBUSxFQUE1QjtBQUNEOztBQUNELE1BQUlJLElBQUksR0FBR0gsT0FBTyxHQUFJLFdBQVVBLE9BQVEsRUFBdEIsR0FBMEIsRUFBNUM7O0FBQ0EsTUFBSUMsUUFBSixFQUFjO0FBQ1pFLElBQUFBLElBQUksR0FBSSxHQUFFQSxJQUFLLElBQUdGLFFBQVMsRUFBM0I7QUFDRDs7QUFDRCxNQUFJRyxHQUFHLEdBQUcsSUFBSUMsR0FBSixDQUFRRixJQUFSLEVBQWUsR0FBRUosT0FBUSxJQUFHRixJQUFLLEVBQWpDLENBQVY7QUFDQSxTQUFPTyxHQUFHLENBQUNFLElBQVg7QUFDRCxDQXJDcUIsRUFzQ3RCLENBdENzQixDQUF4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBnZXRQb3J0IGZyb20gJ2dldC1wb3J0JztcbmltcG9ydCB7Y3Vycnl9IGZyb20gJ2xvZGFzaCc7XG5cbmNvbnN0IFRFU1RfSE9TVCA9ICcxMjcuMC4wLjEnO1xuXG4vKipcbiAqIFNvbWUgSFRUUCBtZXRob2RzLCBmb3IgeW91ciBwbGVhc3VyZVxuICovXG5jb25zdCBNRVRIT0RTID0ge1xuICBQT1NUOiAnUE9TVCcsXG4gIERFTEVURTogJ0RFTEVURSdcbn07XG5cbmxldCB0ZXN0UG9ydDtcbi8qKlxuICogUmV0dXJucyBhIGZyZWUgcG9ydDsgb25lIHBlciBwcm9jZXNzXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtmb3JjZV0gLSBJZiB0cnVlLCBkbyBub3QgcmV1c2UgdGhlIHBvcnQgKGlmIGl0IGFscmVhZHkgZXhpc3RzKVxuICogQHJldHVybnMge1Byb21pc2U8bnVtYmVyPn0gYSBmcmVlIHBvcnRcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0VGVzdFBvcnQgKGZvcmNlID0gZmFsc2UpIHtcbiAgaWYgKGZvcmNlIHx8ICF0ZXN0UG9ydCkge1xuICAgIGxldCBwb3J0ID0gYXdhaXQgZ2V0UG9ydCgpO1xuICAgIGlmICghdGVzdFBvcnQpIHtcbiAgICAgIHRlc3RQb3J0ID0gcG9ydDtcbiAgICB9XG4gICAgcmV0dXJuIHBvcnQ7XG4gIH1cbiAgcmV0dXJuIHRlc3RQb3J0O1xufVxuXG5jb25zdCBjcmVhdGVBcHBpdW1VUkwgPSBjdXJyeShcbiAgLyoqXG4gICAqIEJ1aWxkIGFuIEFwcGl1bSBVUkwgZnJvbSBjb21wb25lbnRzLlxuICAgKlxuICAgKiAqKkFsbCoqIHBhcmFtZXRlcnMgYXJlIHJlcXVpcmVkLiAgUHJvdmlkZSBhbiBlbXB0eSBzdHJpbmcgKGAnJ2ApIGlmIHlvdSBkb24ndCBuZWVkIG9uZS5cbiAgICogVG8gcmVhcnJhbmdlIGFyZ3VtZW50cyAoaWYgbmVlZGVkKSwgdXNlIHRoZSBwbGFjZWhvbGRlciAoYF9gKS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgLSBCYXNlIGFkZHJlc3MgKHcvIG9wdGlvbmFsIHByb3RvY29sKVxuICAgKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IHBvcnQgLSBQb3J0IG51bWJlclxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2Vzc2lvbiAtIFNlc3Npb24gSURcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGhuYW1lIC0gRXh0cmEgcGF0aFxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBOZXcgVVJMXG4gICAqIEBleGFtcGxlXG4gICAqXG4gICAqIGltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG4gICAqXG4gICAqIC8vIGh0dHA6Ly8xMjcuMC4wLjE6MzEzMzcvc2Vzc2lvblxuICAgKiBjcmVhdGVBcHBpdW1VUkwoJzEyNy4wLjAuMScsIDMxMzM3LCAnJywgJ3Nlc3Npb24nKVxuICAgKlxuICAgKiAvLyBodHRwOi8vMTI3LjAuMC4xOjMxMzM3L3Nlc3Npb24vYXNkZmdqa2xcbiAgICogY29uc3QgY3JlYXRlU2Vzc2lvblVSTCA9IGNyZWF0ZUFwcGl1bVVSTCgnMTI3LjAuMC4xJywgMzEzMzcsIF8sICdzZXNzaW9uJylcbiAgICogY3JlYXRlU2Vzc2lvblVSTCgnYXNkZmdqa2wnKVxuICAgKlxuICAgKiAvLyBodHRwOi8vMTI3LjAuMC4xOjMxMzM3L3Nlc3Npb24vYXNkZmdqa2wvYXBwaXVtL2V4ZWN1dGVcbiAgICogY29uc3QgY3JlYXRlVVJMV2l0aFBhdGggPSBjcmVhdGVBcHBpdW1VUkwoJzEyNy4wLjAuMScsIDMxMzM3LCAnYXNkZmdqa2wnKTtcbiAgICogY3JlYXRlVVJMV2l0aFBhdGgoJ2FwcGl1bS9leGVjdXRlJylcbiAgICovXG4gIChhZGRyZXNzLCBwb3J0LCBzZXNzaW9uLCBwYXRobmFtZSkgPT4ge1xuICAgIGlmICghL15odHRwcz86XFwvXFwvLy50ZXN0KGFkZHJlc3MpKSB7XG4gICAgICBhZGRyZXNzID0gYGh0dHA6Ly8ke2FkZHJlc3N9YDtcbiAgICB9XG4gICAgbGV0IHBhdGggPSBzZXNzaW9uID8gYHNlc3Npb24vJHtzZXNzaW9ufWAgOiAnJztcbiAgICBpZiAocGF0aG5hbWUpIHtcbiAgICAgIHBhdGggPSBgJHtwYXRofS8ke3BhdGhuYW1lfWA7XG4gICAgfVxuICAgIGxldCB1cmwgPSBuZXcgVVJMKHBhdGgsIGAke2FkZHJlc3N9OiR7cG9ydH1gKTtcbiAgICByZXR1cm4gdXJsLmhyZWY7XG4gIH0sXG4gIDQsXG4pO1xuXG5leHBvcnQge1RFU1RfSE9TVCwgTUVUSE9EUywgZ2V0VGVzdFBvcnQsIGNyZWF0ZUFwcGl1bVVSTH07XG4iXX0=