appium 2.0.0-beta.4 → 2.0.0-beta.40

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 (151) hide show
  1. package/README.md +10 -11
  2. package/build/lib/appium.d.ts +204 -0
  3. package/build/lib/appium.d.ts.map +1 -0
  4. package/build/lib/appium.js +257 -131
  5. package/build/lib/cli/args.d.ts +20 -0
  6. package/build/lib/cli/args.d.ts.map +1 -0
  7. package/build/lib/cli/args.js +96 -282
  8. package/build/lib/cli/driver-command.d.ts +36 -0
  9. package/build/lib/cli/driver-command.d.ts.map +1 -0
  10. package/build/lib/cli/driver-command.js +25 -18
  11. package/build/lib/cli/extension-command.d.ts +372 -0
  12. package/build/lib/cli/extension-command.d.ts.map +1 -0
  13. package/build/lib/cli/extension-command.js +286 -156
  14. package/build/lib/cli/extension.d.ts +18 -0
  15. package/build/lib/cli/extension.d.ts.map +1 -0
  16. package/build/lib/cli/extension.js +30 -17
  17. package/build/lib/cli/parser.d.ts +80 -0
  18. package/build/lib/cli/parser.d.ts.map +1 -0
  19. package/build/lib/cli/parser.js +152 -95
  20. package/build/lib/cli/plugin-command.d.ts +33 -0
  21. package/build/lib/cli/plugin-command.d.ts.map +1 -0
  22. package/build/lib/cli/plugin-command.js +24 -19
  23. package/build/lib/cli/utils.d.ts +29 -0
  24. package/build/lib/cli/utils.d.ts.map +1 -0
  25. package/build/lib/cli/utils.js +27 -3
  26. package/build/lib/config-file.d.ts +100 -0
  27. package/build/lib/config-file.d.ts.map +1 -0
  28. package/build/lib/config-file.js +136 -0
  29. package/build/lib/config.d.ts +41 -0
  30. package/build/lib/config.d.ts.map +1 -0
  31. package/build/lib/config.js +92 -67
  32. package/build/lib/constants.d.ts +48 -0
  33. package/build/lib/constants.d.ts.map +1 -0
  34. package/build/lib/constants.js +60 -0
  35. package/build/lib/extension/driver-config.d.ts +81 -0
  36. package/build/lib/extension/driver-config.d.ts.map +1 -0
  37. package/build/lib/extension/driver-config.js +177 -0
  38. package/build/lib/extension/extension-config.d.ts +242 -0
  39. package/build/lib/extension/extension-config.d.ts.map +1 -0
  40. package/build/lib/extension/extension-config.js +436 -0
  41. package/build/lib/extension/index.d.ts +48 -0
  42. package/build/lib/extension/index.d.ts.map +1 -0
  43. package/build/lib/extension/index.js +74 -0
  44. package/build/lib/extension/manifest.d.ts +174 -0
  45. package/build/lib/extension/manifest.d.ts.map +1 -0
  46. package/build/lib/extension/manifest.js +256 -0
  47. package/build/lib/extension/package-changed.d.ts +11 -0
  48. package/build/lib/extension/package-changed.d.ts.map +1 -0
  49. package/build/lib/extension/package-changed.js +68 -0
  50. package/build/lib/extension/plugin-config.d.ts +57 -0
  51. package/build/lib/extension/plugin-config.d.ts.map +1 -0
  52. package/build/lib/extension/plugin-config.js +78 -0
  53. package/build/lib/grid-register.d.ts +10 -0
  54. package/build/lib/grid-register.d.ts.map +1 -0
  55. package/build/lib/grid-register.js +21 -25
  56. package/build/lib/logger.d.ts +3 -0
  57. package/build/lib/logger.d.ts.map +1 -0
  58. package/build/lib/logger.js +4 -6
  59. package/build/lib/logsink.d.ts +4 -0
  60. package/build/lib/logsink.d.ts.map +1 -0
  61. package/build/lib/logsink.js +14 -17
  62. package/build/lib/main.d.ts +55 -0
  63. package/build/lib/main.d.ts.map +1 -0
  64. package/build/lib/main.js +189 -90
  65. package/build/lib/schema/arg-spec.d.ts +143 -0
  66. package/build/lib/schema/arg-spec.d.ts.map +1 -0
  67. package/build/lib/schema/arg-spec.js +119 -0
  68. package/build/lib/schema/cli-args.d.ts +19 -0
  69. package/build/lib/schema/cli-args.d.ts.map +1 -0
  70. package/build/lib/schema/cli-args.js +180 -0
  71. package/build/lib/schema/cli-transformers.d.ts +5 -0
  72. package/build/lib/schema/cli-transformers.d.ts.map +1 -0
  73. package/build/lib/schema/cli-transformers.js +74 -0
  74. package/build/lib/schema/index.d.ts +3 -0
  75. package/build/lib/schema/index.d.ts.map +1 -0
  76. package/build/lib/schema/index.js +34 -0
  77. package/build/lib/schema/keywords.d.ts +24 -0
  78. package/build/lib/schema/keywords.d.ts.map +1 -0
  79. package/build/lib/schema/keywords.js +70 -0
  80. package/build/lib/schema/schema.d.ts +259 -0
  81. package/build/lib/schema/schema.d.ts.map +1 -0
  82. package/build/lib/schema/schema.js +452 -0
  83. package/build/lib/utils.d.ts +66 -0
  84. package/build/lib/utils.d.ts.map +1 -0
  85. package/build/lib/utils.js +35 -139
  86. package/build/tsconfig.tsbuildinfo +1 -0
  87. package/build/types/appium-manifest.d.ts +59 -0
  88. package/build/types/appium-manifest.d.ts.map +1 -0
  89. package/build/types/cli.d.ts +112 -0
  90. package/build/types/cli.d.ts.map +1 -0
  91. package/build/types/extension-manifest.d.ts +55 -0
  92. package/build/types/extension-manifest.d.ts.map +1 -0
  93. package/build/types/index.d.ts +16 -0
  94. package/build/types/index.d.ts.map +1 -0
  95. package/driver.d.ts +1 -0
  96. package/driver.js +14 -0
  97. package/index.js +11 -0
  98. package/lib/appium.js +517 -186
  99. package/lib/cli/args.js +269 -422
  100. package/lib/cli/driver-command.js +58 -23
  101. package/lib/cli/extension-command.js +612 -260
  102. package/lib/cli/extension.js +34 -16
  103. package/lib/cli/parser.js +241 -83
  104. package/lib/cli/plugin-command.js +48 -20
  105. package/lib/cli/utils.js +24 -10
  106. package/lib/config-file.js +219 -0
  107. package/lib/config.js +210 -91
  108. package/lib/constants.js +69 -0
  109. package/lib/extension/driver-config.js +249 -0
  110. package/lib/extension/extension-config.js +679 -0
  111. package/lib/extension/index.js +116 -0
  112. package/lib/extension/manifest.js +475 -0
  113. package/lib/extension/package-changed.js +64 -0
  114. package/lib/extension/plugin-config.js +113 -0
  115. package/lib/grid-register.js +49 -35
  116. package/lib/logger.js +1 -2
  117. package/lib/logsink.js +38 -33
  118. package/lib/main.js +303 -100
  119. package/lib/schema/arg-spec.js +229 -0
  120. package/lib/schema/cli-args.js +238 -0
  121. package/lib/schema/cli-transformers.js +115 -0
  122. package/lib/schema/index.js +2 -0
  123. package/lib/schema/keywords.js +136 -0
  124. package/lib/schema/schema.js +717 -0
  125. package/lib/utils.js +121 -140
  126. package/package.json +75 -85
  127. package/plugin.d.ts +1 -0
  128. package/plugin.js +13 -0
  129. package/scripts/autoinstall-extensions.js +177 -0
  130. package/support.d.ts +1 -0
  131. package/support.js +13 -0
  132. package/types/appium-manifest.ts +73 -0
  133. package/types/cli.ts +146 -0
  134. package/types/extension-manifest.ts +64 -0
  135. package/types/index.ts +21 -0
  136. package/CHANGELOG.md +0 -3515
  137. package/bin/ios-webkit-debug-proxy-launcher.js +0 -71
  138. package/build/lib/cli/npm.js +0 -206
  139. package/build/lib/cli/parser-helpers.js +0 -82
  140. package/build/lib/driver-config.js +0 -77
  141. package/build/lib/drivers.js +0 -96
  142. package/build/lib/extension-config.js +0 -253
  143. package/build/lib/plugin-config.js +0 -59
  144. package/build/lib/plugins.js +0 -14
  145. package/lib/cli/npm.js +0 -183
  146. package/lib/cli/parser-helpers.js +0 -79
  147. package/lib/driver-config.js +0 -46
  148. package/lib/drivers.js +0 -81
  149. package/lib/extension-config.js +0 -209
  150. package/lib/plugin-config.js +0 -34
  151. package/lib/plugins.js +0 -10
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.packageDidChange = packageDidChange;
9
+
10
+ require("source-map-support/register");
11
+
12
+ var _support = require("@appium/support");
13
+
14
+ var _packageChanged = require("package-changed");
15
+
16
+ var _path = _interopRequireDefault(require("path"));
17
+
18
+ var _constants = require("../constants");
19
+
20
+ var _logger = _interopRequireDefault(require("../logger"));
21
+
22
+ async function packageDidChange(appiumHome) {
23
+ const hashFilename = _path.default.join(appiumHome, _constants.PKG_HASHFILE_RELATIVE_PATH);
24
+
25
+ let isChanged;
26
+ let writeHash;
27
+ let hash;
28
+ let oldHash;
29
+
30
+ const hashFilenameDir = _path.default.dirname(hashFilename);
31
+
32
+ _logger.default.debug(`Creating hash file directory: ${hashFilenameDir}`);
33
+
34
+ try {
35
+ await _support.fs.mkdirp(hashFilenameDir);
36
+ } catch (err) {
37
+ throw new Error(`Appium could not create the directory for hash file: ${hashFilenameDir}. Original error: ${err.message}`);
38
+ }
39
+
40
+ try {
41
+ ({
42
+ isChanged,
43
+ writeHash,
44
+ oldHash,
45
+ hash
46
+ } = await (0, _packageChanged.isPackageChanged)({
47
+ cwd: appiumHome,
48
+ hashFilename: _constants.PKG_HASHFILE_RELATIVE_PATH
49
+ }));
50
+ } catch {
51
+ return true;
52
+ }
53
+
54
+ if (isChanged) {
55
+ try {
56
+ var _oldHash;
57
+
58
+ writeHash();
59
+
60
+ _logger.default.debug(`Updated hash of ${appiumHome}/package.json from: ${(_oldHash = oldHash) !== null && _oldHash !== void 0 ? _oldHash : '(none)'} to: ${hash}`);
61
+ } catch (err) {
62
+ throw new Error(`Appium could not write hash file: ${hashFilenameDir}. Original error: ${err.message}`);
63
+ }
64
+ }
65
+
66
+ return isChanged;
67
+ }
68
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYWNrYWdlRGlkQ2hhbmdlIiwiYXBwaXVtSG9tZSIsImhhc2hGaWxlbmFtZSIsInBhdGgiLCJqb2luIiwiUEtHX0hBU0hGSUxFX1JFTEFUSVZFX1BBVEgiLCJpc0NoYW5nZWQiLCJ3cml0ZUhhc2giLCJoYXNoIiwib2xkSGFzaCIsImhhc2hGaWxlbmFtZURpciIsImRpcm5hbWUiLCJsb2ciLCJkZWJ1ZyIsImZzIiwibWtkaXJwIiwiZXJyIiwiRXJyb3IiLCJtZXNzYWdlIiwiaXNQYWNrYWdlQ2hhbmdlZCIsImN3ZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9leHRlbnNpb24vcGFja2FnZS1jaGFuZ2VkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZnN9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQge2lzUGFja2FnZUNoYW5nZWR9IGZyb20gJ3BhY2thZ2UtY2hhbmdlZCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7UEtHX0hBU0hGSUxFX1JFTEFUSVZFX1BBVEh9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBpZiBleHRlbnNpb25zIGhhdmUgY2hhbmdlZCwgYW5kIHVwZGF0ZXMgYSBoYXNoIHRoZSBgcGFja2FnZS5qc29uYCBpbiBgYXBwaXVtSG9tZWAgaWYgc28uXG4gKlxuICogSWYgdGhleSBoYXZlLCB3ZSBuZWVkIHRvIHN5bmMgdGhlbSB3aXRoIHRoZSBgZXh0ZW5zaW9ucy55YW1sYCBtYW5pZmVzdC5cbiAqXG4gKiBfV2FybmluZzogdGhpcyBtYWtlcyBhIGJsb2NraW5nIGNhbGwgdG8gYHdyaXRlRmlsZVN5bmNgLl9cbiAqIEBwYXJhbSB7c3RyaW5nfSBhcHBpdW1Ib21lXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn0gYHRydWVgIGlmIGBwYWNrYWdlLmpzb25gIGBhcHBpdW1Ib21lYCBjaGFuZ2VkXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwYWNrYWdlRGlkQ2hhbmdlKGFwcGl1bUhvbWUpIHtcbiAgY29uc3QgaGFzaEZpbGVuYW1lID0gcGF0aC5qb2luKGFwcGl1bUhvbWUsIFBLR19IQVNIRklMRV9SRUxBVElWRV9QQVRIKTtcblxuICAvLyBYWFg6IHRoZSB0eXBlcyBpbiBgcGFja2FnZS1jaGFuZ2VkYCBzZWVtIHRvIGJlIHdyb25nLlxuXG4gIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi9cbiAgbGV0IGlzQ2hhbmdlZDtcbiAgLyoqIEB0eXBlIHsoKSA9PiB2b2lkfSAqL1xuICBsZXQgd3JpdGVIYXNoO1xuICAvKiogQHR5cGUge3N0cmluZ30gKi9cbiAgbGV0IGhhc2g7XG4gIC8qKiBAdHlwZSB7c3RyaW5nfHVuZGVmaW5lZH0gKi9cbiAgbGV0IG9sZEhhc2g7XG5cbiAgLy8gZmlyc3QgbWtkaXJwIHRoZSB0YXJnZXQgZGlyLlxuICBjb25zdCBoYXNoRmlsZW5hbWVEaXIgPSBwYXRoLmRpcm5hbWUoaGFzaEZpbGVuYW1lKTtcbiAgbG9nLmRlYnVnKGBDcmVhdGluZyBoYXNoIGZpbGUgZGlyZWN0b3J5OiAke2hhc2hGaWxlbmFtZURpcn1gKTtcbiAgdHJ5IHtcbiAgICBhd2FpdCBmcy5ta2RpcnAoaGFzaEZpbGVuYW1lRGlyKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEFwcGl1bSBjb3VsZCBub3QgY3JlYXRlIHRoZSBkaXJlY3RvcnkgZm9yIGhhc2ggZmlsZTogJHtoYXNoRmlsZW5hbWVEaXJ9LiBPcmlnaW5hbCBlcnJvcjogJHtlcnIubWVzc2FnZX1gXG4gICAgKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgKHtpc0NoYW5nZWQsIHdyaXRlSGFzaCwgb2xkSGFzaCwgaGFzaH0gPSBhd2FpdCBpc1BhY2thZ2VDaGFuZ2VkKHtcbiAgICAgIGN3ZDogYXBwaXVtSG9tZSxcbiAgICAgIGhhc2hGaWxlbmFtZTogUEtHX0hBU0hGSUxFX1JFTEFUSVZFX1BBVEgsXG4gICAgfSkpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmIChpc0NoYW5nZWQpIHtcbiAgICB0cnkge1xuICAgICAgd3JpdGVIYXNoKCk7XG4gICAgICBsb2cuZGVidWcoXG4gICAgICAgIGBVcGRhdGVkIGhhc2ggb2YgJHthcHBpdW1Ib21lfS9wYWNrYWdlLmpzb24gZnJvbTogJHtvbGRIYXNoID8/ICcobm9uZSknfSB0bzogJHtoYXNofWBcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBBcHBpdW0gY291bGQgbm90IHdyaXRlIGhhc2ggZmlsZTogJHtoYXNoRmlsZW5hbWVEaXJ9LiBPcmlnaW5hbCBlcnJvcjogJHtlcnIubWVzc2FnZX1gXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBpc0NoYW5nZWQ7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBV08sZUFBZUEsZ0JBQWYsQ0FBZ0NDLFVBQWhDLEVBQTRDO0VBQ2pELE1BQU1DLFlBQVksR0FBR0MsYUFBQSxDQUFLQyxJQUFMLENBQVVILFVBQVYsRUFBc0JJLHFDQUF0QixDQUFyQjs7RUFLQSxJQUFJQyxTQUFKO0VBRUEsSUFBSUMsU0FBSjtFQUVBLElBQUlDLElBQUo7RUFFQSxJQUFJQyxPQUFKOztFQUdBLE1BQU1DLGVBQWUsR0FBR1AsYUFBQSxDQUFLUSxPQUFMLENBQWFULFlBQWIsQ0FBeEI7O0VBQ0FVLGVBQUEsQ0FBSUMsS0FBSixDQUFXLGlDQUFnQ0gsZUFBZ0IsRUFBM0Q7O0VBQ0EsSUFBSTtJQUNGLE1BQU1JLFdBQUEsQ0FBR0MsTUFBSCxDQUFVTCxlQUFWLENBQU47RUFDRCxDQUZELENBRUUsT0FBT00sR0FBUCxFQUFZO0lBQ1osTUFBTSxJQUFJQyxLQUFKLENBQ0gsd0RBQXVEUCxlQUFnQixxQkFBb0JNLEdBQUcsQ0FBQ0UsT0FBUSxFQURwRyxDQUFOO0VBR0Q7O0VBRUQsSUFBSTtJQUNGLENBQUM7TUFBQ1osU0FBRDtNQUFZQyxTQUFaO01BQXVCRSxPQUF2QjtNQUFnQ0Q7SUFBaEMsSUFBd0MsTUFBTSxJQUFBVyxnQ0FBQSxFQUFpQjtNQUM5REMsR0FBRyxFQUFFbkIsVUFEeUQ7TUFFOURDLFlBQVksRUFBRUc7SUFGZ0QsQ0FBakIsQ0FBL0M7RUFJRCxDQUxELENBS0UsTUFBTTtJQUNOLE9BQU8sSUFBUDtFQUNEOztFQUVELElBQUlDLFNBQUosRUFBZTtJQUNiLElBQUk7TUFBQTs7TUFDRkMsU0FBUzs7TUFDVEssZUFBQSxDQUFJQyxLQUFKLENBQ0csbUJBQWtCWixVQUFXLHVCQUE5QixZQUFvRFEsT0FBcEQsK0NBQStELFFBQVMsUUFBT0QsSUFBSyxFQUR0RjtJQUdELENBTEQsQ0FLRSxPQUFPUSxHQUFQLEVBQVk7TUFDWixNQUFNLElBQUlDLEtBQUosQ0FDSCxxQ0FBb0NQLGVBQWdCLHFCQUFvQk0sR0FBRyxDQUFDRSxPQUFRLEVBRGpGLENBQU47SUFHRDtFQUNGOztFQUVELE9BQU9aLFNBQVA7QUFDRCJ9
@@ -0,0 +1,57 @@
1
+ /**
2
+ * @extends {ExtensionConfig<PluginType>}
3
+ */
4
+ export class PluginConfig extends ExtensionConfig<"plugin"> {
5
+ /**
6
+ * A mapping of {@link Manifest} instances to {@link PluginConfig} instances.
7
+ *
8
+ * `Manifest` and {@link ExtensionConfig} have a one-to-many relationship; each `Manifest` should be associated with a `DriverConfig` and a `PluginConfig`; no more, no less.
9
+ *
10
+ * This variable tracks the `Manifest`-to-`PluginConfig` portion.
11
+ *
12
+ * @type {WeakMap<Manifest,PluginConfig>}
13
+ * @private
14
+ */
15
+ private static _instances;
16
+ /**
17
+ * Creates a new {@link PluginConfig} instance for a {@link Manifest} instance.
18
+ *
19
+ * @param {Manifest} manifest
20
+ * @throws If `manifest` already associated with a `PluginConfig`
21
+ * @returns {PluginConfig}
22
+ */
23
+ static create(manifest: Manifest): PluginConfig;
24
+ /**
25
+ * Returns a PluginConfig associated with a Manifest
26
+ * @param {Manifest} manifest
27
+ * @returns {PluginConfig|undefined}
28
+ */
29
+ static getInstance(manifest: Manifest): PluginConfig | undefined;
30
+ /**
31
+ * Call {@link PluginConfig.create} instead.
32
+ *
33
+ * Just calls the superclass' constructor with the correct extension type
34
+ * @private
35
+ * @param {Manifest} manifest - IO object
36
+ */
37
+ private constructor();
38
+ validate(): Promise<import("./extension-config").ExtRecord<"plugin">>;
39
+ /**
40
+ *
41
+ * @param {(keyof PluginRecord)[]} activeNames
42
+ * @returns {void}
43
+ */
44
+ print(activeNames: (keyof PluginRecord)[]): void;
45
+ }
46
+ export type PluginConfigOptions = {
47
+ /**
48
+ * - Optional logging function
49
+ */
50
+ logFn?: import("./extension-config").ExtensionLogFn | undefined;
51
+ };
52
+ export type PluginRecord = import('appium/types').PluginRecord;
53
+ export type PluginType = import('@appium/types').PluginType;
54
+ export type PluginMetadata = import('appium/types').ExtMetadata<PluginType>;
55
+ export type Manifest = import('./manifest').Manifest;
56
+ import { ExtensionConfig } from "./extension-config";
57
+ //# sourceMappingURL=plugin-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-config.d.ts","sourceRoot":"","sources":["../../../lib/extension/plugin-config.js"],"names":[],"mappings":"AAKA;;GAEG;AACH;IACE;;;;;;;;;OASG;IACH,0BAAkC;IAiBlC;;;;;;OAMG;IACH,wBAJW,QAAQ,GAEN,YAAY,CAWxB;IAED;;;;OAIG;IACH,6BAHW,QAAQ,GACN,YAAY,GAAC,SAAS,CAIlC;IAxCD;;;;;;OAMG;IACH,sBAEC;IAED,sEAEC;IAsCD;;;;OAIG;IACH,mBAHW,CAAC,MAAM,YAAY,CAAC,EAAE,GACpB,IAAI,CAwBhB;CACF;;;;;;;2BAQY,OAAO,cAAc,EAAE,YAAY;yBACnC,OAAO,eAAe,EAAE,UAAU;6BAClC,OAAO,cAAc,EAAE,WAAW,CAAC,UAAU,CAAC;uBAC9C,OAAO,YAAY,EAAE,QAAQ"}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.PluginConfig = void 0;
9
+
10
+ require("source-map-support/register");
11
+
12
+ var _lodash = _interopRequireDefault(require("lodash"));
13
+
14
+ var _extensionConfig = require("./extension-config");
15
+
16
+ var _logger = _interopRequireDefault(require("../logger"));
17
+
18
+ var _constants = require("../constants");
19
+
20
+ class PluginConfig extends _extensionConfig.ExtensionConfig {
21
+ static _instances = new WeakMap();
22
+
23
+ constructor(manifest) {
24
+ super(_constants.PLUGIN_TYPE, manifest);
25
+ }
26
+
27
+ async validate() {
28
+ return await super._validate(this.manifest.getExtensionData(_constants.PLUGIN_TYPE));
29
+ }
30
+
31
+ static create(manifest) {
32
+ const instance = new PluginConfig(manifest);
33
+
34
+ if (PluginConfig.getInstance(manifest)) {
35
+ throw new Error(`Manifest with APPIUM_HOME ${manifest.appiumHome} already has a PluginConfig; use PluginConfig.getInstance() to retrieve it.`);
36
+ }
37
+
38
+ PluginConfig._instances.set(manifest, instance);
39
+
40
+ return instance;
41
+ }
42
+
43
+ static getInstance(manifest) {
44
+ return PluginConfig._instances.get(manifest);
45
+ }
46
+
47
+ extensionDesc(pluginName, {
48
+ version
49
+ }) {
50
+ return `${pluginName}@${version}`;
51
+ }
52
+
53
+ print(activeNames) {
54
+ const pluginNames = Object.keys(this.installedExtensions);
55
+
56
+ if (_lodash.default.isEmpty(pluginNames)) {
57
+ _logger.default.info(`No plugins have been installed. Use the "appium plugin" ` + 'command to install the one(s) you want to use.');
58
+
59
+ return;
60
+ }
61
+
62
+ _logger.default.info(`Available plugins:`);
63
+
64
+ for (const [pluginName, pluginData] of _lodash.default.toPairs(this.installedExtensions)) {
65
+ const activeTxt = _lodash.default.includes(activeNames, pluginName) ? ' (ACTIVE)' : '';
66
+
67
+ _logger.default.info(` - ${this.extensionDesc(pluginName, pluginData)}${activeTxt}`);
68
+ }
69
+
70
+ if (_lodash.default.isEmpty(activeNames)) {
71
+ _logger.default.info('No plugins activated. Use the --use-plugins flag with names of plugins to activate');
72
+ }
73
+ }
74
+
75
+ }
76
+
77
+ exports.PluginConfig = PluginConfig;
78
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQbHVnaW5Db25maWciLCJFeHRlbnNpb25Db25maWciLCJfaW5zdGFuY2VzIiwiV2Vha01hcCIsImNvbnN0cnVjdG9yIiwibWFuaWZlc3QiLCJQTFVHSU5fVFlQRSIsInZhbGlkYXRlIiwiX3ZhbGlkYXRlIiwiZ2V0RXh0ZW5zaW9uRGF0YSIsImNyZWF0ZSIsImluc3RhbmNlIiwiZ2V0SW5zdGFuY2UiLCJFcnJvciIsImFwcGl1bUhvbWUiLCJzZXQiLCJnZXQiLCJleHRlbnNpb25EZXNjIiwicGx1Z2luTmFtZSIsInZlcnNpb24iLCJwcmludCIsImFjdGl2ZU5hbWVzIiwicGx1Z2luTmFtZXMiLCJPYmplY3QiLCJrZXlzIiwiaW5zdGFsbGVkRXh0ZW5zaW9ucyIsIl8iLCJpc0VtcHR5IiwibG9nIiwiaW5mbyIsInBsdWdpbkRhdGEiLCJ0b1BhaXJzIiwiYWN0aXZlVHh0IiwiaW5jbHVkZXMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZXh0ZW5zaW9uL3BsdWdpbi1jb25maWcuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7RXh0ZW5zaW9uQ29uZmlnfSBmcm9tICcuL2V4dGVuc2lvbi1jb25maWcnO1xuaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IHtQTFVHSU5fVFlQRX0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxuLyoqXG4gKiBAZXh0ZW5kcyB7RXh0ZW5zaW9uQ29uZmlnPFBsdWdpblR5cGU+fVxuICovXG5leHBvcnQgY2xhc3MgUGx1Z2luQ29uZmlnIGV4dGVuZHMgRXh0ZW5zaW9uQ29uZmlnIHtcbiAgLyoqXG4gICAqIEEgbWFwcGluZyBvZiB7QGxpbmsgTWFuaWZlc3R9IGluc3RhbmNlcyB0byB7QGxpbmsgUGx1Z2luQ29uZmlnfSBpbnN0YW5jZXMuXG4gICAqXG4gICAqIGBNYW5pZmVzdGAgYW5kIHtAbGluayBFeHRlbnNpb25Db25maWd9IGhhdmUgYSBvbmUtdG8tbWFueSByZWxhdGlvbnNoaXA7IGVhY2ggYE1hbmlmZXN0YCBzaG91bGQgYmUgYXNzb2NpYXRlZCB3aXRoIGEgYERyaXZlckNvbmZpZ2AgYW5kIGEgYFBsdWdpbkNvbmZpZ2A7IG5vIG1vcmUsIG5vIGxlc3MuXG4gICAqXG4gICAqIFRoaXMgdmFyaWFibGUgdHJhY2tzIHRoZSBgTWFuaWZlc3RgLXRvLWBQbHVnaW5Db25maWdgIHBvcnRpb24uXG4gICAqXG4gICAqIEB0eXBlIHtXZWFrTWFwPE1hbmlmZXN0LFBsdWdpbkNvbmZpZz59XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBzdGF0aWMgX2luc3RhbmNlcyA9IG5ldyBXZWFrTWFwKCk7XG5cbiAgLyoqXG4gICAqIENhbGwge0BsaW5rIFBsdWdpbkNvbmZpZy5jcmVhdGV9IGluc3RlYWQuXG4gICAqXG4gICAqIEp1c3QgY2FsbHMgdGhlIHN1cGVyY2xhc3MnIGNvbnN0cnVjdG9yIHdpdGggdGhlIGNvcnJlY3QgZXh0ZW5zaW9uIHR5cGVcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtNYW5pZmVzdH0gbWFuaWZlc3QgLSBJTyBvYmplY3RcbiAgICovXG4gIGNvbnN0cnVjdG9yKG1hbmlmZXN0KSB7XG4gICAgc3VwZXIoUExVR0lOX1RZUEUsIG1hbmlmZXN0KTtcbiAgfVxuXG4gIGFzeW5jIHZhbGlkYXRlKCkge1xuICAgIHJldHVybiBhd2FpdCBzdXBlci5fdmFsaWRhdGUodGhpcy5tYW5pZmVzdC5nZXRFeHRlbnNpb25EYXRhKFBMVUdJTl9UWVBFKSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyB7QGxpbmsgUGx1Z2luQ29uZmlnfSBpbnN0YW5jZSBmb3IgYSB7QGxpbmsgTWFuaWZlc3R9IGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0ge01hbmlmZXN0fSBtYW5pZmVzdFxuICAgKiBAdGhyb3dzIElmIGBtYW5pZmVzdGAgYWxyZWFkeSBhc3NvY2lhdGVkIHdpdGggYSBgUGx1Z2luQ29uZmlnYFxuICAgKiBAcmV0dXJucyB7UGx1Z2luQ29uZmlnfVxuICAgKi9cbiAgc3RhdGljIGNyZWF0ZShtYW5pZmVzdCkge1xuICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IFBsdWdpbkNvbmZpZyhtYW5pZmVzdCk7XG4gICAgaWYgKFBsdWdpbkNvbmZpZy5nZXRJbnN0YW5jZShtYW5pZmVzdCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYE1hbmlmZXN0IHdpdGggQVBQSVVNX0hPTUUgJHttYW5pZmVzdC5hcHBpdW1Ib21lfSBhbHJlYWR5IGhhcyBhIFBsdWdpbkNvbmZpZzsgdXNlIFBsdWdpbkNvbmZpZy5nZXRJbnN0YW5jZSgpIHRvIHJldHJpZXZlIGl0LmBcbiAgICAgICk7XG4gICAgfVxuICAgIFBsdWdpbkNvbmZpZy5faW5zdGFuY2VzLnNldChtYW5pZmVzdCwgaW5zdGFuY2UpO1xuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgUGx1Z2luQ29uZmlnIGFzc29jaWF0ZWQgd2l0aCBhIE1hbmlmZXN0XG4gICAqIEBwYXJhbSB7TWFuaWZlc3R9IG1hbmlmZXN0XG4gICAqIEByZXR1cm5zIHtQbHVnaW5Db25maWd8dW5kZWZpbmVkfVxuICAgKi9cbiAgc3RhdGljIGdldEluc3RhbmNlKG1hbmlmZXN0KSB7XG4gICAgcmV0dXJuIFBsdWdpbkNvbmZpZy5faW5zdGFuY2VzLmdldChtYW5pZmVzdCk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBsdWdpbk5hbWVcbiAgICogQHBhcmFtIHtpbXBvcnQoJ2FwcGl1bS90eXBlcycpLkV4dE1hbmlmZXN0PFBsdWdpblR5cGU+fSBwbHVnaW5EYXRhXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAqL1xuICBleHRlbnNpb25EZXNjKHBsdWdpbk5hbWUsIHt2ZXJzaW9ufSkge1xuICAgIHJldHVybiBgJHtwbHVnaW5OYW1lfUAke3ZlcnNpb259YDtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0geyhrZXlvZiBQbHVnaW5SZWNvcmQpW119IGFjdGl2ZU5hbWVzXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgcHJpbnQoYWN0aXZlTmFtZXMpIHtcbiAgICBjb25zdCBwbHVnaW5OYW1lcyA9IE9iamVjdC5rZXlzKHRoaXMuaW5zdGFsbGVkRXh0ZW5zaW9ucyk7XG5cbiAgICBpZiAoXy5pc0VtcHR5KHBsdWdpbk5hbWVzKSkge1xuICAgICAgbG9nLmluZm8oXG4gICAgICAgIGBObyBwbHVnaW5zIGhhdmUgYmVlbiBpbnN0YWxsZWQuIFVzZSB0aGUgXCJhcHBpdW0gcGx1Z2luXCIgYCArXG4gICAgICAgICAgJ2NvbW1hbmQgdG8gaW5zdGFsbCB0aGUgb25lKHMpIHlvdSB3YW50IHRvIHVzZS4nXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxvZy5pbmZvKGBBdmFpbGFibGUgcGx1Z2luczpgKTtcbiAgICBmb3IgKGNvbnN0IFtwbHVnaW5OYW1lLCBwbHVnaW5EYXRhXSBvZiBfLnRvUGFpcnModGhpcy5pbnN0YWxsZWRFeHRlbnNpb25zKSkge1xuICAgICAgY29uc3QgYWN0aXZlVHh0ID0gXy5pbmNsdWRlcyhhY3RpdmVOYW1lcywgcGx1Z2luTmFtZSkgPyAnIChBQ1RJVkUpJyA6ICcnO1xuICAgICAgbG9nLmluZm8oYCAgLSAke3RoaXMuZXh0ZW5zaW9uRGVzYyhwbHVnaW5OYW1lLCBwbHVnaW5EYXRhKX0ke2FjdGl2ZVR4dH1gKTtcbiAgICB9XG5cbiAgICBpZiAoXy5pc0VtcHR5KGFjdGl2ZU5hbWVzKSkge1xuICAgICAgbG9nLmluZm8oXG4gICAgICAgICdObyBwbHVnaW5zIGFjdGl2YXRlZC4gVXNlIHRoZSAtLXVzZS1wbHVnaW5zIGZsYWcgd2l0aCBuYW1lcyBvZiBwbHVnaW5zIHRvIGFjdGl2YXRlJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBAdHlwZWRlZiBQbHVnaW5Db25maWdPcHRpb25zXG4gKiBAcHJvcGVydHkge2ltcG9ydCgnLi9leHRlbnNpb24tY29uZmlnJykuRXh0ZW5zaW9uTG9nRm59IFtsb2dGbl0gLSBPcHRpb25hbCBsb2dnaW5nIGZ1bmN0aW9uXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdhcHBpdW0vdHlwZXMnKS5QbHVnaW5SZWNvcmR9IFBsdWdpblJlY29yZFxuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLlBsdWdpblR5cGV9IFBsdWdpblR5cGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ2FwcGl1bS90eXBlcycpLkV4dE1ldGFkYXRhPFBsdWdpblR5cGU+fSBQbHVnaW5NZXRhZGF0YVxuICogQHR5cGVkZWYge2ltcG9ydCgnLi9tYW5pZmVzdCcpLk1hbmlmZXN0fSBNYW5pZmVzdFxuICovXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBS08sTUFBTUEsWUFBTixTQUEyQkMsZ0NBQTNCLENBQTJDO0VBVy9CLE9BQVZDLFVBQVUsR0FBRyxJQUFJQyxPQUFKLEVBQUg7O0VBU2pCQyxXQUFXLENBQUNDLFFBQUQsRUFBVztJQUNwQixNQUFNQyxzQkFBTixFQUFtQkQsUUFBbkI7RUFDRDs7RUFFYSxNQUFSRSxRQUFRLEdBQUc7SUFDZixPQUFPLE1BQU0sTUFBTUMsU0FBTixDQUFnQixLQUFLSCxRQUFMLENBQWNJLGdCQUFkLENBQStCSCxzQkFBL0IsQ0FBaEIsQ0FBYjtFQUNEOztFQVNZLE9BQU5JLE1BQU0sQ0FBQ0wsUUFBRCxFQUFXO0lBQ3RCLE1BQU1NLFFBQVEsR0FBRyxJQUFJWCxZQUFKLENBQWlCSyxRQUFqQixDQUFqQjs7SUFDQSxJQUFJTCxZQUFZLENBQUNZLFdBQWIsQ0FBeUJQLFFBQXpCLENBQUosRUFBd0M7TUFDdEMsTUFBTSxJQUFJUSxLQUFKLENBQ0gsNkJBQTRCUixRQUFRLENBQUNTLFVBQVcsNkVBRDdDLENBQU47SUFHRDs7SUFDRGQsWUFBWSxDQUFDRSxVQUFiLENBQXdCYSxHQUF4QixDQUE0QlYsUUFBNUIsRUFBc0NNLFFBQXRDOztJQUNBLE9BQU9BLFFBQVA7RUFDRDs7RUFPaUIsT0FBWEMsV0FBVyxDQUFDUCxRQUFELEVBQVc7SUFDM0IsT0FBT0wsWUFBWSxDQUFDRSxVQUFiLENBQXdCYyxHQUF4QixDQUE0QlgsUUFBNUIsQ0FBUDtFQUNEOztFQU9EWSxhQUFhLENBQUNDLFVBQUQsRUFBYTtJQUFDQztFQUFELENBQWIsRUFBd0I7SUFDbkMsT0FBUSxHQUFFRCxVQUFXLElBQUdDLE9BQVEsRUFBaEM7RUFDRDs7RUFPREMsS0FBSyxDQUFDQyxXQUFELEVBQWM7SUFDakIsTUFBTUMsV0FBVyxHQUFHQyxNQUFNLENBQUNDLElBQVAsQ0FBWSxLQUFLQyxtQkFBakIsQ0FBcEI7O0lBRUEsSUFBSUMsZUFBQSxDQUFFQyxPQUFGLENBQVVMLFdBQVYsQ0FBSixFQUE0QjtNQUMxQk0sZUFBQSxDQUFJQyxJQUFKLENBQ0csMERBQUQsR0FDRSxnREFGSjs7TUFJQTtJQUNEOztJQUVERCxlQUFBLENBQUlDLElBQUosQ0FBVSxvQkFBVjs7SUFDQSxLQUFLLE1BQU0sQ0FBQ1gsVUFBRCxFQUFhWSxVQUFiLENBQVgsSUFBdUNKLGVBQUEsQ0FBRUssT0FBRixDQUFVLEtBQUtOLG1CQUFmLENBQXZDLEVBQTRFO01BQzFFLE1BQU1PLFNBQVMsR0FBR04sZUFBQSxDQUFFTyxRQUFGLENBQVdaLFdBQVgsRUFBd0JILFVBQXhCLElBQXNDLFdBQXRDLEdBQW9ELEVBQXRFOztNQUNBVSxlQUFBLENBQUlDLElBQUosQ0FBVSxPQUFNLEtBQUtaLGFBQUwsQ0FBbUJDLFVBQW5CLEVBQStCWSxVQUEvQixDQUEyQyxHQUFFRSxTQUFVLEVBQXZFO0lBQ0Q7O0lBRUQsSUFBSU4sZUFBQSxDQUFFQyxPQUFGLENBQVVOLFdBQVYsQ0FBSixFQUE0QjtNQUMxQk8sZUFBQSxDQUFJQyxJQUFKLENBQ0Usb0ZBREY7SUFHRDtFQUNGOztBQTNGK0MifQ==
@@ -0,0 +1,10 @@
1
+ export default registerNode;
2
+ /**
3
+ * Registers a new node with a selenium grid
4
+ * @param {string|object} data - Path or object representing selenium grid node config file. If a `string`, all subsequent arguments are required!
5
+ * @param {string} [addr] - Bind to this address
6
+ * @param {number} [port] - Bind to this port
7
+ * @param {string} [basePath] - Base path for the grid
8
+ */
9
+ declare function registerNode(data: string | object, addr?: string | undefined, port?: number | undefined, basePath?: string | undefined): Promise<void>;
10
+ //# sourceMappingURL=grid-register.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid-register.d.ts","sourceRoot":"","sources":["../../lib/grid-register.js"],"names":[],"mappings":";AAUA;;;;;;GAMG;AACH,oCALW,MAAM,GAAC,MAAM,sGA4BvB"}
@@ -11,7 +11,7 @@ require("source-map-support/register");
11
11
 
12
12
  var _axios = _interopRequireDefault(require("axios"));
13
13
 
14
- var _appiumSupport = require("appium-support");
14
+ var _support = require("@appium/support");
15
15
 
16
16
  var _logger = _interopRequireDefault(require("./logger"));
17
17
 
@@ -22,21 +22,27 @@ const hubUri = config => {
22
22
  return `${protocol}://${config.hubHost}:${config.hubPort}`;
23
23
  };
24
24
 
25
- async function registerNode(configFile, addr, port, basePath) {
26
- let data;
25
+ async function registerNode(data, addr, port, basePath) {
26
+ let configFilePath;
27
27
 
28
- try {
29
- data = await _appiumSupport.fs.readFile(configFile, 'utf-8');
30
- } catch (err) {
31
- _logger.default.error(`Unable to load node configuration file to register with grid: ${err.message}`);
28
+ if (_lodash.default.isString(data)) {
29
+ configFilePath = data;
32
30
 
33
- return;
34
- }
31
+ try {
32
+ data = await _support.fs.readFile(data, 'utf-8');
33
+ } catch (err) {
34
+ _logger.default.error(`Unable to load node configuration file ${configFilePath} to register with grid: ${err.message}`);
35
35
 
36
- if (!data) {
37
- _logger.default.error('No data found in the node configuration file to send to the grid');
36
+ return;
37
+ }
38
38
 
39
- return;
39
+ try {
40
+ data = JSON.parse(data);
41
+ } catch (err) {
42
+ _logger.default.errorAndThrow(`Syntax error in node configuration file ${configFilePath}: ${err.message}`);
43
+
44
+ return;
45
+ }
40
46
  }
41
47
 
42
48
  postRequest(data, addr, port, basePath);
@@ -58,15 +64,7 @@ async function registerToGrid(postOptions, configHolder) {
58
64
  }
59
65
  }
60
66
 
61
- function postRequest(data, addr, port, basePath) {
62
- let configHolder;
63
-
64
- try {
65
- configHolder = JSON.parse(data);
66
- } catch (err) {
67
- _logger.default.errorAndThrow(`Syntax error in node configuration file: ${err.message}`);
68
- }
69
-
67
+ function postRequest(configHolder, addr, port, basePath) {
70
68
  if (!_lodash.default.has(configHolder, 'configuration')) {
71
69
  let configuration = {};
72
70
 
@@ -151,7 +149,5 @@ async function isAlreadyRegistered(configHolder) {
151
149
  }
152
150
 
153
151
  var _default = registerNode;
154
- exports.default = _default;require('source-map-support').install();
155
-
156
-
157
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9ncmlkLXJlZ2lzdGVyLmpzIl0sIm5hbWVzIjpbImh1YlVyaSIsImNvbmZpZyIsInByb3RvY29sIiwiaHViUHJvdG9jb2wiLCJodWJIb3N0IiwiaHViUG9ydCIsInJlZ2lzdGVyTm9kZSIsImNvbmZpZ0ZpbGUiLCJhZGRyIiwicG9ydCIsImJhc2VQYXRoIiwiZGF0YSIsImZzIiwicmVhZEZpbGUiLCJlcnIiLCJsb2dnZXIiLCJlcnJvciIsIm1lc3NhZ2UiLCJwb3N0UmVxdWVzdCIsInJlZ2lzdGVyVG9HcmlkIiwicG9zdE9wdGlvbnMiLCJjb25maWdIb2xkZXIiLCJzdGF0dXMiLCJFcnJvciIsImRlYnVnIiwiY29uZmlndXJhdGlvbiIsIkpTT04iLCJwYXJzZSIsImVycm9yQW5kVGhyb3ciLCJfIiwiaGFzIiwicHJvcGVydHkiLCJ1cmwiLCJob3N0IiwiaWQiLCJyZWdSZXF1ZXN0IiwibWV0aG9kIiwicmVnaXN0ZXIiLCJyZWdpc3RlckN5Y2xlSW50ZXJ2YWwiLCJyZWdpc3RlckN5Y2xlIiwiaXNOYU4iLCJ3YXJuIiwiZmlyc3QiLCJzZXRJbnRlcnZhbCIsInJlZ2lzdGVyUmV0cnkiLCJpc0FscmVhZHlSZWdpc3RlcmVkIiwidGltZW91dCIsInN1Y2Nlc3MiLCJtc2ciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTUEsTUFBTSxHQUFJQyxNQUFELElBQVk7QUFDekIsUUFBTUMsUUFBUSxHQUFHRCxNQUFNLENBQUNFLFdBQVAsSUFBc0IsTUFBdkM7QUFDQSxTQUFRLEdBQUVELFFBQVMsTUFBS0QsTUFBTSxDQUFDRyxPQUFRLElBQUdILE1BQU0sQ0FBQ0ksT0FBUSxFQUF6RDtBQUNELENBSEQ7O0FBS0EsZUFBZUMsWUFBZixDQUE2QkMsVUFBN0IsRUFBeUNDLElBQXpDLEVBQStDQyxJQUEvQyxFQUFxREMsUUFBckQsRUFBK0Q7QUFDN0QsTUFBSUMsSUFBSjs7QUFDQSxNQUFJO0FBQ0ZBLElBQUFB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SSxhQUFiLENBQTJCUyxFQUF0Qzs7QUFDQSxNQUFJO0FBQ0YsVUFBTTtBQUFDdkIsTUFBQUEsSUFBRDtBQUFPVyxNQUFBQTtBQUFQLFFBQWlCLE1BQU0sb0JBQU07QUFDakNVLE1BQUFBLEdBQUcsRUFBRyxHQUFFaEMsTUFBTSxDQUFDcUIsWUFBWSxDQUFDSSxhQUFkLENBQTZCLHNCQUFxQlMsRUFBRyxFQURsQztBQUVqQ1ksTUFBQUEsT0FBTyxFQUFFO0FBRndCLEtBQU4sQ0FBN0I7O0FBSUEsUUFBSXhCLE1BQU0sS0FBSyxHQUFmLEVBQW9CO0FBQ2xCLFlBQU0sSUFBSUMsS0FBSixDQUFXLDRCQUEyQkQsTUFBTyxFQUE3QyxDQUFOO0FBQ0Q7O0FBQ0QsUUFBSSxDQUFDWCxJQUFJLENBQUNvQyxPQUFWLEVBQW1CO0FBRWpCaEMsc0JBQU9TLEtBQVAsQ0FBYyw0QkFBMkJiLElBQUksQ0FBQ3FDLEdBQUksRUFBbEQ7QUFDRDs7QUFDRCxXQUFPckMsSUFBSSxDQUFDb0MsT0FBWjtBQUNELEdBYkQsQ0FhRSxPQUFPakMsR0FBUCxFQUFZO0FBQ1pDLG9CQUFPUyxLQUFQLENBQWMsK0JBQThCVixHQUFHLENBQUNHLE9BQVEsRUFBeEQ7QUFDRDtBQUNGOztlQUdjWCxZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IGZzIH0gZnJvbSAnYXBwaXVtLXN1cHBvcnQnO1xuaW1wb3J0IGxvZ2dlciBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5cbmNvbnN0IGh1YlVyaSA9IChjb25maWcpID0+IHtcbiAgY29uc3QgcHJvdG9jb2wgPSBjb25maWcuaHViUHJvdG9jb2wgfHwgJ2h0dHAnO1xuICByZXR1cm4gYCR7cHJvdG9jb2x9Oi8vJHtjb25maWcuaHViSG9zdH06JHtjb25maWcuaHViUG9ydH1gO1xufTtcblxuYXN5bmMgZnVuY3Rpb24gcmVnaXN0ZXJOb2RlIChjb25maWdGaWxlLCBhZGRyLCBwb3J0LCBiYXNlUGF0aCkge1xuICBsZXQgZGF0YTtcbiAgdHJ5IHtcbiAgICBkYXRhID0gYXdhaXQgZnMucmVhZEZpbGUoY29uZmlnRmlsZSwgJ3V0Zi04Jyk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZ2dlci5lcnJvcihgVW5hYmxlIHRvIGxvYWQgbm9kZSBjb25maWd1cmF0aW9uIGZpbGUgdG8gcmVnaXN0ZXIgd2l0aCBncmlkOiAke2Vyci5tZXNzYWdlfWApO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIENoZWNrIHByZXNlbmNlIG9mIGRhdGEgYmVmb3JlIHBvc3RpbmcgIGl0IHRvIHRoZSBzZWxlbml1bSBncmlkXG4gIGlmICghZGF0YSkge1xuICAgIGxvZ2dlci5lcnJvcignTm8gZGF0YSBmb3VuZCBpbiB0aGUgbm9kZSBjb25maWd1cmF0aW9uIGZpbGUgdG8gc2VuZCB0byB0aGUgZ3JpZCcpO1xuICAgIHJldHVybjtcbiAgfVxuICBwb3N0UmVxdWVzdChkYXRhLCBhZGRyLCBwb3J0LCBiYXNlUGF0aCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlZ2lzdGVyVG9HcmlkIChwb3N0T3B0aW9ucywgY29uZmlnSG9sZGVyKSB7XG4gIHRyeSB7XG4gICAgY29uc3Qge3N0YXR1c30gPSBhd2FpdCBheGlvcyhwb3N0T3B0aW9ucyk7XG4gICAgaWYgKHN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFJlcXVlc3QgZmFpbGVkIHdpdGggY29kZSAke3N0YXR1c31gKTtcbiAgICB9XG4gICAgbG9nZ2VyLmRlYnVnKGBBcHBpdW0gc3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQgd2l0aCB0aGUgdGhlIGdyaWQgb24gYCArXG4gICAgICBodWJVcmkoY29uZmlnSG9sZGVyLmNvbmZpZ3VyYXRpb24pKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nZ2VyLmVycm9yKGBBbiBhdHRlbXB0IHRvIHJlZ2lzdGVyIHdpdGggdGhlIGdyaWQgd2FzIHVuc3VjY2Vzc2Z1bDogJHtlcnIubWVzc2FnZX1gKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwb3N0UmVxdWVzdCAoZGF0YSwgYWRkciwgcG9ydCwgYmFzZVBhdGgpIHtcbiAgLy8gcGFyc2UganNvbiB0byBnZXQgaHViIGhvc3QgYW5kIHBvcnRcbiAgbGV0IGNvbmZpZ0hvbGRlcjtcbiAgdHJ5IHtcbiAgICBjb25maWdIb2xkZXIgPSBKU09OLnBhcnNlKGRhdGEpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2dnZXIuZXJyb3JBbmRUaHJvdyhgU3ludGF4IGVycm9yIGluIG5vZGUgY29uZmlndXJhdGlvbiBmaWxlOiAke2Vyci5tZXNzYWdlfWApO1xuICB9XG5cbiAgLy8gTW92ZSBTZWxlbml1bSAzIGNvbmZpZ3VyYXRpb24gcHJvcGVydGllcyB0byBjb25maWd1cmF0aW9uIG9iamVjdFxuICBpZiAoIV8uaGFzKGNvbmZpZ0hvbGRlciwgJ2NvbmZpZ3VyYXRpb24nKSkge1xuICAgIGxldCBjb25maWd1cmF0aW9uID0ge307XG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBjb25maWdIb2xkZXIpIHtcbiAgICAgIGlmIChfLmhhcyhjb25maWdIb2xkZXIsIHByb3BlcnR5KSAmJiBwcm9wZXJ0eSAhPT0gJ2NhcGFiaWxpdGllcycpIHtcbiAgICAgICAgY29uZmlndXJhdGlvbltwcm9wZXJ0eV0gPSBjb25maWdIb2xkZXJbcHJvcGVydHldO1xuICAgICAgICBkZWxldGUgY29uZmlnSG9sZGVyW3Byb3BlcnR5XTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uZmlnSG9sZGVyLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uO1xuICB9XG5cbiAgLy8gaWYgdGhlIG5vZGUgY29uZmlnIGRvZXMgbm90IGhhdmUgdGhlIGFwcGl1bS93ZWJkcml2ZXIgdXJsLCBob3N0LCBhbmQgcG9ydCxcbiAgLy8gYXV0b21hdGljYWxseSBhZGQgaXQgYmFzZWQgb24gaG93IGFwcGl1bSB3YXMgaW5pdGlhbGl6ZWRcbiAgLy8gb3RoZXJ3aXNlLCB3ZSB3aWxsIHRha2Ugd2hhdGV2ZXIgdGhlIHVzZXIgc2V0dXBcbiAgLy8gYmVjYXVzZSB3ZSB3aWxsIGFsd2F5cyBzZXQgbG9jYWxob3N0LzEyNy4wLjAuMS4gdGhpcyB3b24ndCB3b3JrIGlmIHlvdXJcbiAgLy8gbm9kZSBhbmQgZ3JpZCBhcmVuJ3QgaW4gdGhlIHNhbWUgcGxhY2VcbiAgaWYgKCFjb25maWdIb2xkZXIuY29uZmlndXJhdGlvbi51cmwgfHwgIWNvbmZpZ0hvbGRlci5jb25maWd1cmF0aW9uLmhvc3QgfHwgIWNvbmZpZ0hvbGRlci5jb25maWd1cmF0aW9uLnBvcnQpIHtcbiAgICBjb25maWdIb2xkZXIuY29uZmlndXJhdGlvbi51cmwgPSBgaHR0cDovLyR7YWRkcn06JHtwb3J0fSR7YmFzZVBhdGh9YDtcbiAgICBjb25maWdIb2xkZXIuY29uZmlndXJhdGlvbi5ob3N0ID0gYWRkcjtcbiAgICBjb25maWdIb2xkZXIuY29uZmlndXJhdGlvbi5wb3J0ID0gcG9ydDtcbiAgfVxuICAvLyBpZiB0aGUgbm9kZSBjb25maWcgZG9lcyBub3QgaGF2ZSBpZCBhdXRvbWF0aWNhbGx5IGFkZCBpdFxuICBpZiAoIWNvbmZpZ0hvbGRlci5jb25maWd1cmF0aW9uLmlkKSB7XG4gICAgY29uZmlnSG9sZGVyLmNvbmZpZ3VyYXRpb24uaWQgPSBgaHR0cDovLyR7Y29uZmlnSG9sZGVyLmNvbmZpZ3VyYXRpb24uaG9zdH06JHtjb25maWdIb2xkZXIuY29uZmlndXJhdGlvbi5wb3J0fWA7XG4gIH1cblxuICAvLyB0aGUgcG9zdCBvcHRpb25zXG4gIGNvbnN0IHJlZ1JlcXVlc3QgPSB7XG4gICAgdXJsOiBgJHtodWJVcmkoY29uZmlnSG9sZGVyLmNvbmZpZ3VyYXRpb24pfS9ncmlkL3JlZ2lzdGVyYCxcbiAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICBkYXRhOiBjb25maWdIb2xkZXIsXG4gIH07XG5cbiAgaWYgKGNvbmZpZ0hvbGRlci5jb25maWd1cmF0aW9uLnJlZ2lzdGVyICE9PSB0cnVlKSB7XG4gICAgbG9nZ2VyLmRlYnVnKGBObyByZWdpc3RyYXRpb24gc2VudCAoJHtjb25maWdIb2xkZXIuY29uZmlndXJhdGlvbi5yZWdpc3Rlcn0gPSBmYWxzZSlgKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCByZWdpc3RlckN5Y2xlSW50ZXJ2YWwgPSBjb25maWdIb2xkZXIuY29uZmlndXJhdGlvbi5yZWdpc3RlckN5Y2xlO1xuICBpZiAoaXNOYU4ocmVnaXN0ZXJDeWNsZUludGVydmFsKSB8fCByZWdpc3RlckN5Y2xlSW50ZXJ2YWwgPD0gMCkge1xuICAgIGxvZ2dlci53YXJuKGAncmVnaXN0ZXJDeWNsZScgaXMgbm90IGEgdmFsaWQgcG9zaXRpdmUgbnVtYmVyLiBgICtcbiAgICAgIGBObyByZWdpc3RyYXRpb24gcmVxdWVzdCB3aWxsIGJlIHNlbnQgdG8gdGhlIGdyaWQuYCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIC8vIGluaXRpYXRlIGEgbmV3IFRocmVhZFxuICBsZXQgZmlyc3QgPSB0cnVlO1xuICBsb2dnZXIuZGVidWcoYFN0YXJ0aW5nIGF1dG8gcmVnaXN0ZXIgdGhyZWFkIGZvciB0aGUgZ3JpZC4gYCArXG4gICAgYFdpbGwgdHJ5IHRvIHJlZ2lzdGVyIGV2ZXJ5ICR7cmVnaXN0ZXJDeWNsZUludGVydmFsfSBtcy5gKTtcbiAgc2V0SW50ZXJ2YWwoYXN5bmMgZnVuY3Rpb24gcmVnaXN0ZXJSZXRyeSAoKSB7XG4gICAgaWYgKGZpcnN0KSB7XG4gICAgICBmaXJzdCA9IGZhbHNlO1xuICAgICAgYXdhaXQgcmVnaXN0ZXJUb0dyaWQocmVnUmVxdWVzdCwgY29uZmlnSG9sZGVyKTtcbiAgICB9IGVsc2UgaWYgKCFhd2FpdCBpc0FscmVhZHlSZWdpc3RlcmVkKGNvbmZpZ0hvbGRlcikpIHtcbiAgICAgIC8vIG1ha2UgdGhlIGh0dHAgUE9TVCB0byB0aGUgZ3JpZCBmb3IgcmVnaXN0cmF0aW9uXG4gICAgICBhd2FpdCByZWdpc3RlclRvR3JpZChyZWdSZXF1ZXN0LCBjb25maWdIb2xkZXIpO1xuICAgIH1cbiAgfSwgcmVnaXN0ZXJDeWNsZUludGVydmFsKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaXNBbHJlYWR5UmVnaXN0ZXJlZCAoY29uZmlnSG9sZGVyKSB7XG4gIC8vY2hlY2sgaWYgbm9kZSBpcyBhbHJlYWR5IHJlZ2lzdGVyZWRcbiAgY29uc3QgaWQgPSBjb25maWdIb2xkZXIuY29uZmlndXJhdGlvbi5pZDtcbiAgdHJ5IHtcbiAgICBjb25zdCB7ZGF0YSwgc3RhdHVzfSA9IGF3YWl0IGF4aW9zKHtcbiAgICAgIHVybDogYCR7aHViVXJpKGNvbmZpZ0hvbGRlci5jb25maWd1cmF0aW9uKX0vZ3JpZC9hcGkvcHJveHk/aWQ9JHtpZH1gLFxuICAgICAgdGltZW91dDogMTAwMDAsXG4gICAgfSk7XG4gICAgaWYgKHN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFJlcXVlc3QgZmFpbGVkIHdpdGggY29kZSAke3N0YXR1c31gKTtcbiAgICB9XG4gICAgaWYgKCFkYXRhLnN1Y2Nlc3MpIHtcbiAgICAgIC8vIGlmIHJlZ2lzdGVyIGZhaWwsIHByaW50IHRoZSBkZWJ1ZyBtc2dcbiAgICAgIGxvZ2dlci5kZWJ1ZyhgR3JpZCByZWdpc3RyYXRpb24gZXJyb3I6ICR7ZGF0YS5tc2d9YCk7XG4gICAgfVxuICAgIHJldHVybiBkYXRhLnN1Y2Nlc3M7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZ2dlci5kZWJ1ZyhgSHViIGRvd24gb3Igbm90IHJlc3BvbmRpbmc6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVmYXVsdCByZWdpc3Rlck5vZGU7XG4iXSwiZmlsZSI6ImxpYi9ncmlkLXJlZ2lzdGVyLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
152
+ exports.default = _default;
153
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJodWJVcmkiLCJjb25maWciLCJwcm90b2NvbCIsImh1YlByb3RvY29sIiwiaHViSG9zdCIsImh1YlBvcnQiLCJyZWdpc3Rlck5vZGUiLCJkYXRhIiwiYWRkciIsInBvcnQiLCJiYXNlUGF0aCIsImNvbmZpZ0ZpbGVQYXRoIiwiXyIsImlzU3RyaW5nIiwiZnMiLCJyZWFkRmlsZSIsImVyciIsImxvZ2dlciIsImVycm9yIiwibWVzc2FnZSIsIkpTT04iLCJwYXJzZSIsImVycm9yQW5kVGhyb3ciLCJwb3N0UmVxdWVzdCIsInJlZ2lzdGVyVG9HcmlkIiwicG9zdE9wdGlvbnMiLCJjb25maWdIb2xkZXIiLCJzdGF0dXMiLCJheGlvcyIsIkVycm9yIiwiZGVidWciLCJjb25maWd1cmF0aW9uIiwiaGFzIiwicHJvcGVydHkiLCJ1cmwiLCJob3N0IiwiaWQiLCJyZWdSZXF1ZXN0IiwibWV0aG9kIiwicmVnaXN0ZXIiLCJyZWdpc3RlckN5Y2xlSW50ZXJ2YWwiLCJyZWdpc3RlckN5Y2xlIiwiaXNOYU4iLCJ3YXJuIiwiZmlyc3QiLCJzZXRJbnRlcnZhbCIsInJlZ2lzdGVyUmV0cnkiLCJpc0FscmVhZHlSZWdpc3RlcmVkIiwidGltZW91dCIsInN1Y2Nlc3MiLCJtc2ciXSwic291cmNlcyI6WyIuLi8uLi9saWIvZ3JpZC1yZWdpc3Rlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHtmc30gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBsb2dnZXIgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuY29uc3QgaHViVXJpID0gKGNvbmZpZykgPT4ge1xuICBjb25zdCBwcm90b2NvbCA9IGNvbmZpZy5odWJQcm90b2NvbCB8fCAnaHR0cCc7XG4gIHJldHVybiBgJHtwcm90b2NvbH06Ly8ke2NvbmZpZy5odWJIb3N0fToke2NvbmZpZy5odWJQb3J0fWA7XG59O1xuXG4vKipcbiAqIFJlZ2lzdGVycyBhIG5ldyBub2RlIHdpdGggYSBzZWxlbml1bSBncmlkXG4gKiBAcGFyYW0ge3N0cmluZ3xvYmplY3R9IGRhdGEgLSBQYXRoIG9yIG9iamVjdCByZXByZXNlbnRpbmcgc2VsZW5pdW0gZ3JpZCBub2RlIGNvbmZpZyBmaWxlLiBJZiBhIGBzdHJpbmdgLCBhbGwgc3Vic2VxdWVudCBhcmd1bWVudHMgYXJlIHJlcXVpcmVkIVxuICogQHBhcmFtIHtzdHJpbmd9IFthZGRyXSAtIEJpbmQgdG8gdGhpcyBhZGRyZXNzXG4gKiBAcGFyYW0ge251bWJlcn0gW3BvcnRdIC0gQmluZCB0byB0aGlzIHBvcnRcbiAqIEBwYXJhbSB7c3RyaW5nfSBbYmFzZVBhdGhdIC0gQmFzZSBwYXRoIGZvciB0aGUgZ3JpZFxuICovXG5hc3luYyBmdW5jdGlvbiByZWdpc3Rlck5vZGUoZGF0YSwgYWRkciwgcG9ydCwgYmFzZVBhdGgpIHtcbiAgbGV0IGNvbmZpZ0ZpbGVQYXRoO1xuICBpZiAoXy5pc1N0cmluZyhkYXRhKSkge1xuICAgIGNvbmZpZ0ZpbGVQYXRoID0gZGF0YTtcbiAgICB0cnkge1xuICAgICAgZGF0YSA9IGF3YWl0IGZzLnJlYWRGaWxlKGRhdGEsICd1dGYtOCcpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nZ2VyLmVycm9yKFxuICAgICAgICBgVW5hYmxlIHRvIGxvYWQgbm9kZSBjb25maWd1cmF0aW9uIGZpbGUgJHtjb25maWdGaWxlUGF0aH0gdG8gcmVnaXN0ZXIgd2l0aCBncmlkOiAke2Vyci5tZXNzYWdlfWBcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBkYXRhID0gSlNPTi5wYXJzZShkYXRhKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvZ2dlci5lcnJvckFuZFRocm93KFxuICAgICAgICBgU3ludGF4IGVycm9yIGluIG5vZGUgY29uZmlndXJhdGlvbiBmaWxlICR7Y29uZmlnRmlsZVBhdGh9OiAke2Vyci5tZXNzYWdlfWBcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgcG9zdFJlcXVlc3QoZGF0YSwgYWRkciwgcG9ydCwgYmFzZVBhdGgpO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZWdpc3RlclRvR3JpZChwb3N0T3B0aW9ucywgY29uZmlnSG9sZGVyKSB7XG4gIHRyeSB7XG4gICAgY29uc3Qge3N0YXR1c30gPSBhd2FpdCBheGlvcyhwb3N0T3B0aW9ucyk7XG4gICAgaWYgKHN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFJlcXVlc3QgZmFpbGVkIHdpdGggY29kZSAke3N0YXR1c31gKTtcbiAgICB9XG4gICAgbG9nZ2VyLmRlYnVnKFxuICAgICAgYEFwcGl1bSBzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCB3aXRoIHRoZSB0aGUgZ3JpZCBvbiBgICsgaHViVXJpKGNvbmZpZ0hvbGRlci5jb25maWd1cmF0aW9uKVxuICAgICk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZ2dlci5lcnJvcihgQW4gYXR0ZW1wdCB0byByZWdpc3RlciB3aXRoIHRoZSBncmlkIHdhcyB1bnN1Y2Nlc3NmdWw6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcG9zdFJlcXVlc3QoY29uZmlnSG9sZGVyLCBhZGRyLCBwb3J0LCBiYXNlUGF0aCkge1xuICAvLyBNb3ZlIFNlbGVuaXVtIDMgY29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIHRvIGNvbmZpZ3VyYXRpb24gb2JqZWN0XG4gIGlmICghXy5oYXMoY29uZmlnSG9sZGVyLCAnY29uZmlndXJhdGlvbicpKSB7XG4gICAgbGV0IGNvbmZpZ3VyYXRpb24gPSB7fTtcbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5IGluIGNvbmZpZ0hvbGRlcikge1xuICAgICAgaWYgKF8uaGFzKGNvbmZpZ0hvbGRlciwgcHJvcGVydHkpICYmIHByb3BlcnR5ICE9PSAnY2FwYWJpbGl0aWVzJykge1xuICAgICAgICBjb25maWd1cmF0aW9uW3Byb3BlcnR5XSA9IGNvbmZpZ0hvbGRlcltwcm9wZXJ0eV07XG4gICAgICAgIGRlbGV0ZSBjb25maWdIb2xkZXJbcHJvcGVydHldO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25maWdIb2xkZXIuY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb247XG4gIH1cblxuICAvLyBpZiB0aGUgbm9kZSBjb25maWcgZG9lcyBub3QgaGF2ZSB0aGUgYXBwaXVtL3dlYmRyaXZlciB1cmwsIGhvc3QsIGFuZCBwb3J0LFxuICAvLyBhdXRvbWF0aWNhbGx5IGFkZCBpdCBiYXNlZCBvbiBob3cgYXBwaXVtIHdhcyBpbml0aWFsaXplZFxuICAvLyBvdGhlcndpc2UsIHdlIHdpbGwgdGFrZSB3aGF0ZXZlciB0aGUgdXNlciBzZXR1cFxuICAvLyBiZWNhdXNlIHdlIHdpbGwgYWx3YXlzIHNldCBsb2NhbGhvc3QvMTI3LjAuMC4xLiB0aGlzIHdvbid0IHdvcmsgaWYgeW91clxuICAvLyBub2RlIGFuZCBncmlkIGFyZW4ndCBpbiB0aGUgc2FtZSBwbGFjZVxuICBpZiAoXG4gICAgIWNvbmZpZ0hvbGRlci5jb25maWd1cmF0aW9uLnVybCB8fFxuICAgICFjb25maWdIb2xkZXIuY29uZmlndXJhdGlvbi5ob3N0IHx8XG4gICAgIWNvbmZpZ0hvbGRlci5jb25maWd1cmF0aW9uLnBvcnRcbiAgKSB7XG4gICAgY29uZmlnSG9sZGVyLmNvbmZpZ3VyYXRpb24udXJsID0gYGh0dHA6Ly8ke2FkZHJ9OiR7cG9ydH0ke2Jhc2VQYXRofWA7XG4gICAgY29uZmlnSG9sZGVyLmNvbmZpZ3VyYXRpb24uaG9zdCA9IGFkZHI7XG4gICAgY29uZmlnSG9sZGVyLmNvbmZpZ3VyYXRpb24ucG9ydCA9IHBvcnQ7XG4gIH1cbiAgLy8gaWYgdGhlIG5vZGUgY29uZmlnIGRvZXMgbm90IGhhdmUgaWQgYXV0b21hdGljYWxseSBhZGQgaXRcbiAgaWYgKCFjb25maWdIb2xkZXIuY29uZmlndXJhdGlvbi5pZCkge1xuICAgIGNvbmZpZ0hvbGRlci5jb25maWd1cmF0aW9uLmlkID0gYGh0dHA6Ly8ke2NvbmZpZ0hvbGRlci5jb25maWd1cmF0aW9uLmhvc3R9OiR7Y29uZmlnSG9sZGVyLmNvbmZpZ3VyYXRpb24ucG9ydH1gO1xuICB9XG5cbiAgLy8gdGhlIHBvc3Qgb3B0aW9uc1xuICBjb25zdCByZWdSZXF1ZXN0ID0ge1xuICAgIHVybDogYCR7aHViVXJpKGNvbmZpZ0hvbGRlci5jb25maWd1cmF0aW9uKX0vZ3JpZC9yZWdpc3RlcmAsXG4gICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgZGF0YTogY29uZmlnSG9sZGVyLFxuICB9O1xuXG4gIGlmIChjb25maWdIb2xkZXIuY29uZmlndXJhdGlvbi5yZWdpc3RlciAhPT0gdHJ1ZSkge1xuICAgIGxvZ2dlci5kZWJ1ZyhgTm8gcmVnaXN0cmF0aW9uIHNlbnQgKCR7Y29uZmlnSG9sZGVyLmNvbmZpZ3VyYXRpb24ucmVnaXN0ZXJ9ID0gZmFsc2UpYCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVnaXN0ZXJDeWNsZUludGVydmFsID0gY29uZmlnSG9sZGVyLmNvbmZpZ3VyYXRpb24ucmVnaXN0ZXJDeWNsZTtcbiAgaWYgKGlzTmFOKHJlZ2lzdGVyQ3ljbGVJbnRlcnZhbCkgfHwgcmVnaXN0ZXJDeWNsZUludGVydmFsIDw9IDApIHtcbiAgICBsb2dnZXIud2FybihcbiAgICAgIGAncmVnaXN0ZXJDeWNsZScgaXMgbm90IGEgdmFsaWQgcG9zaXRpdmUgbnVtYmVyLiBgICtcbiAgICAgICAgYE5vIHJlZ2lzdHJhdGlvbiByZXF1ZXN0IHdpbGwgYmUgc2VudCB0byB0aGUgZ3JpZC5gXG4gICAgKTtcbiAgICByZXR1cm47XG4gIH1cbiAgLy8gaW5pdGlhdGUgYSBuZXcgVGhyZWFkXG4gIGxldCBmaXJzdCA9IHRydWU7XG4gIGxvZ2dlci5kZWJ1ZyhcbiAgICBgU3RhcnRpbmcgYXV0byByZWdpc3RlciB0aHJlYWQgZm9yIHRoZSBncmlkLiBgICtcbiAgICAgIGBXaWxsIHRyeSB0byByZWdpc3RlciBldmVyeSAke3JlZ2lzdGVyQ3ljbGVJbnRlcnZhbH0gbXMuYFxuICApO1xuICBzZXRJbnRlcnZhbChhc3luYyBmdW5jdGlvbiByZWdpc3RlclJldHJ5KCkge1xuICAgIGlmIChmaXJzdCkge1xuICAgICAgZmlyc3QgPSBmYWxzZTtcbiAgICAgIGF3YWl0IHJlZ2lzdGVyVG9HcmlkKHJlZ1JlcXVlc3QsIGNvbmZpZ0hvbGRlcik7XG4gICAgfSBlbHNlIGlmICghKGF3YWl0IGlzQWxyZWFkeVJlZ2lzdGVyZWQoY29uZmlnSG9sZGVyKSkpIHtcbiAgICAgIC8vIG1ha2UgdGhlIGh0dHAgUE9TVCB0byB0aGUgZ3JpZCBmb3IgcmVnaXN0cmF0aW9uXG4gICAgICBhd2FpdCByZWdpc3RlclRvR3JpZChyZWdSZXF1ZXN0LCBjb25maWdIb2xkZXIpO1xuICAgIH1cbiAgfSwgcmVnaXN0ZXJDeWNsZUludGVydmFsKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaXNBbHJlYWR5UmVnaXN0ZXJlZChjb25maWdIb2xkZXIpIHtcbiAgLy9jaGVjayBpZiBub2RlIGlzIGFscmVhZHkgcmVnaXN0ZXJlZFxuICBjb25zdCBpZCA9IGNvbmZpZ0hvbGRlci5jb25maWd1cmF0aW9uLmlkO1xuICB0cnkge1xuICAgIGNvbnN0IHtkYXRhLCBzdGF0dXN9ID0gYXdhaXQgYXhpb3Moe1xuICAgICAgdXJsOiBgJHtodWJVcmkoY29uZmlnSG9sZGVyLmNvbmZpZ3VyYXRpb24pfS9ncmlkL2FwaS9wcm94eT9pZD0ke2lkfWAsXG4gICAgICB0aW1lb3V0OiAxMDAwMCxcbiAgICB9KTtcbiAgICBpZiAoc3RhdHVzICE9PSAyMDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUmVxdWVzdCBmYWlsZWQgd2l0aCBjb2RlICR7c3RhdHVzfWApO1xuICAgIH1cbiAgICBpZiAoIWRhdGEuc3VjY2Vzcykge1xuICAgICAgLy8gaWYgcmVnaXN0ZXIgZmFpbCwgcHJpbnQgdGhlIGRlYnVnIG1zZ1xuICAgICAgbG9nZ2VyLmRlYnVnKGBHcmlkIHJlZ2lzdHJhdGlvbiBlcnJvcjogJHtkYXRhLm1zZ31gKTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGEuc3VjY2VzcztcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nZ2VyLmRlYnVnKGBIdWIgZG93biBvciBub3QgcmVzcG9uZGluZzogJHtlcnIubWVzc2FnZX1gKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCByZWdpc3Rlck5vZGU7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsTUFBTSxHQUFJQyxNQUFELElBQVk7RUFDekIsTUFBTUMsUUFBUSxHQUFHRCxNQUFNLENBQUNFLFdBQVAsSUFBc0IsTUFBdkM7RUFDQSxPQUFRLEdBQUVELFFBQVMsTUFBS0QsTUFBTSxDQUFDRyxPQUFRLElBQUdILE1BQU0sQ0FBQ0ksT0FBUSxFQUF6RDtBQUNELENBSEQ7O0FBWUEsZUFBZUMsWUFBZixDQUE0QkMsSUFBNUIsRUFBa0NDLElBQWxDLEVBQXdDQyxJQUF4QyxFQUE4Q0MsUUFBOUMsRUFBd0Q7RUFDdEQsSUFBSUMsY0FBSjs7RUFDQSxJQUFJQyxlQUFBLENBQUVDLFFBQUYsQ0FBV04sSUFBWCxDQUFKLEVBQXNCO0lBQ3BCSSxjQUFjLEdBQUdKLElBQWpCOztJQUNBLElBQUk7TUFDRkEsSUFBSSxHQUFHLE1BQU1PLFdBQUEsQ0FBR0MsUUFBSCxDQUFZUixJQUFaLEVBQWtCLE9BQWxCLENBQWI7SUFDRCxDQUZELENBRUUsT0FBT1MsR0FBUCxFQUFZO01BQ1pDLGVBQUEsQ0FBT0MsS0FBUCxDQUNHLDBDQUF5Q1AsY0FBZSwyQkFBMEJLLEdBQUcsQ0FBQ0csT0FBUSxFQURqRzs7TUFHQTtJQUNEOztJQUNELElBQUk7TUFDRlosSUFBSSxHQUFHYSxJQUFJLENBQUNDLEtBQUwsQ0FBV2QsSUFBWCxDQUFQO0lBQ0QsQ0FGRCxDQUVFLE9BQU9TLEdBQVAsRUFBWTtNQUNaQyxlQUFBLENBQU9LLGFBQVAsQ0FDRywyQ0FBMENYLGNBQWUsS0FBSUssR0FBRyxDQUFD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
@@ -0,0 +1,3 @@
1
+ export default log;
2
+ declare let log: import("../../types/build").AppiumLogger;
3
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../lib/logger.js"],"names":[],"mappings":";AAEA,0DAAqC"}
@@ -7,12 +7,10 @@ exports.default = void 0;
7
7
 
8
8
  require("source-map-support/register");
9
9
 
10
- var _appiumSupport = require("appium-support");
10
+ var _support = require("@appium/support");
11
11
 
12
- let log = _appiumSupport.logger.getLogger('Appium');
12
+ let log = _support.logger.getLogger('Appium');
13
13
 
14
14
  var _default = log;
15
- exports.default = _default;require('source-map-support').install();
16
-
17
-
18
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9sb2dnZXIuanMiXSwibmFtZXMiOlsibG9nIiwibG9nZ2VyIiwiZ2V0TG9nZ2VyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFHQSxJQUFJQSxHQUFHLEdBQUdDLHNCQUFPQyxTQUFQLENBQWlCLFFBQWpCLENBQVY7O2VBRWVGLEciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsb2dnZXIgfSBmcm9tICdhcHBpdW0tc3VwcG9ydCc7XG5cblxubGV0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ0FwcGl1bScpO1xuXG5leHBvcnQgZGVmYXVsdCBsb2c7XG4iXSwiZmlsZSI6ImxpYi9sb2dnZXIuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
15
+ exports.default = _default;
16
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsb2ciLCJsb2dnZXIiLCJnZXRMb2dnZXIiXSwic291cmNlcyI6WyIuLi8uLi9saWIvbG9nZ2VyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7bG9nZ2VyfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuXG5sZXQgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignQXBwaXVtJyk7XG5cbmV4cG9ydCBkZWZhdWx0IGxvZztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBRUEsSUFBSUEsR0FBRyxHQUFHQyxlQUFBLENBQU9DLFNBQVAsQ0FBaUIsUUFBakIsQ0FBVjs7ZUFFZUYsRyJ9
@@ -0,0 +1,4 @@
1
+ export default init;
2
+ export function init(args: any): Promise<void>;
3
+ export function clear(): void;
4
+ //# sourceMappingURL=logsink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logsink.d.ts","sourceRoot":"","sources":["../../lib/logsink.js"],"names":[],"mappings":";AA4LA,+CA0BC;AAED,8BAOC"}
@@ -5,9 +5,9 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.init = init;
9
8
  exports.clear = clear;
10
9
  exports.default = void 0;
10
+ exports.init = init;
11
11
 
12
12
  require("source-map-support/register");
13
13
 
@@ -15,16 +15,14 @@ var _npmlog = _interopRequireDefault(require("npmlog"));
15
15
 
16
16
  var _winston = require("winston");
17
17
 
18
- var _appiumSupport = require("appium-support");
19
-
20
- var _dateformat = _interopRequireDefault(require("dateformat"));
18
+ var _support = require("@appium/support");
21
19
 
22
20
  var _lodash = _interopRequireDefault(require("lodash"));
23
21
 
24
- _appiumSupport.logger.patchLogger(_npmlog.default);
22
+ _support.logger.patchLogger(_npmlog.default);
25
23
 
26
24
  global._global_npmlog = _npmlog.default;
27
- _npmlog.default.level = 'silent';
25
+ _npmlog.default.level = 'info';
28
26
  const levels = {
29
27
  debug: 4,
30
28
  info: 3,
@@ -47,17 +45,17 @@ const npmToWinstonLevels = {
47
45
  error: 'error'
48
46
  };
49
47
  let log = null;
50
- let timeZone = null;
48
+ let useLocalTimeZone = false;
51
49
 
52
50
  const timestampFormat = _winston.format.timestamp({
53
51
  format() {
54
52
  let date = new Date();
55
53
 
56
- if (!timeZone) {
57
- date = new Date(date.valueOf() + date.getTimezoneOffset() * 60000);
54
+ if (useLocalTimeZone) {
55
+ date = new Date(date.valueOf() - date.getTimezoneOffset() * 60000);
58
56
  }
59
57
 
60
- return (0, _dateformat.default)(date, 'yyyy-mm-dd HH:MM:ss:l');
58
+ return date.toISOString().replace(/[TZ]/g, ' ').replace(/\./g, ':').trim();
61
59
  }
62
60
 
63
61
  });
@@ -150,8 +148,8 @@ async function createTransports(args) {
150
148
 
151
149
  if (args.logFile) {
152
150
  try {
153
- if (await _appiumSupport.fs.exists(args.logFile)) {
154
- await _appiumSupport.fs.unlink(args.logFile);
151
+ if (await _support.fs.exists(args.logFile)) {
152
+ await _support.fs.unlink(args.logFile);
155
153
  }
156
154
 
157
155
  transports.push(createFileTransport(args, fileLogLevel));
@@ -172,7 +170,8 @@ async function createTransports(args) {
172
170
  }
173
171
 
174
172
  async function init(args) {
175
- timeZone = args.localTimezone;
173
+ _npmlog.default.level = 'silent';
174
+ useLocalTimeZone = args.localTimezone;
176
175
  clear();
177
176
  log = (0, _winston.createLogger)({
178
177
  transports: await createTransports(args),
@@ -207,7 +206,5 @@ function clear() {
207
206
  }
208
207
 
209
208
  var _default = init;
210
- exports.default = _default;require('source-map-support').install();
211
-
212
-
213
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9sb2dzaW5rLmpzIl0sIm5hbWVzIjpbImxvZ2dlciIsInBhdGNoTG9nZ2VyIiwibnBtbG9nIiwiZ2xvYmFsIiwiX2dsb2JhbF9ucG1sb2ciLCJsZXZlbCIsImxldmVscyIsImRlYnVnIiwiaW5mbyIsIndhcm4iLCJlcnJvciIsImNvbG9ycyIsIm5wbVRvV2luc3RvbkxldmVscyIsInNpbGx5IiwidmVyYm9zZSIsImh0dHAiLCJsb2ciLCJ0aW1lWm9uZSIsInRpbWVzdGFtcEZvcm1hdCIsImZvcm1hdCIsInRpbWVzdGFtcCIsImRhdGUiLCJEYXRlIiwidmFsdWVPZiIsImdldFRpbWV6b25lT2Zmc2V0IiwiY29sb3JpemVGb3JtYXQiLCJjb2xvcml6ZSIsInN0cmlwQ29sb3JGb3JtYXQiLCJzdHJpcENvbG9yIiwiY29kZSIsIm1lc3NhZ2UiLCJyZXBsYWNlIiwiY3JlYXRlQ29uc29sZVRyYW5zcG9ydCIsImFyZ3MiLCJsb2dMdmwiLCJ0cmFuc3BvcnRzIiwiQ29uc29sZSIsIm5hbWUiLCJoYW5kbGVFeGNlcHRpb25zIiwiZXhpdE9uRXJyb3IiLCJqc29uIiwic3RkZXJyTGV2ZWxzIiwiY29tYmluZSIsImFkanVzdERlYnVnIiwibG9nTm9Db2xvcnMiLCJwcmludGYiLCJwcmludEluZm8iLCJsb2dUaW1lc3RhbXAiLCJjcmVhdGVGaWxlVHJhbnNwb3J0IiwiRmlsZSIsImZpbGVuYW1lIiwibG9nRmlsZSIsIm1heEZpbGVzIiwiY3JlYXRlSHR0cFRyYW5zcG9ydCIsImhvc3QiLCJwb3J0Iiwid2ViaG9vayIsIm1hdGNoIiwiaG9zdEFuZFBvcnQiLCJzcGxpdCIsInBhcnNlSW50IiwiSHR0cCIsInBhdGgiLCJjcmVhdGVUcmFuc3BvcnRzIiwiY29uc29sZUxvZ0xldmVsIiwiZmlsZUxvZ0xldmVsIiwibG9nbGV2ZWwiLCJsdmxQYWlyIiwicHVzaCIsImZzIiwiZXhpc3RzIiwidW5saW5rIiwiZSIsImNvbnNvbGUiLCJpbml0IiwibG9jYWxUaW1lem9uZSIsImNsZWFyIiwib24iLCJsb2dPYmoiLCJ3aW5zdG9uTGV2ZWwiLCJtc2ciLCJwcmVmaXgiLCJtYWdlbnRhIiwibG9nSGFuZGxlciIsIl8iLCJpc0Z1bmN0aW9uIiwidHJhbnNwb3J0Iiwia2V5cyIsInJlbW92ZSIsInJlbW92ZUFsbExpc3RlbmVycyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUlBQSxzQkFBT0MsV0FBUCxDQUFtQkMsZUFBbkI7O0FBQ0FDLE1BQU0sQ0FBQ0MsY0FBUCxHQUF3QkYsZUFBeEI7QUFHQUEsZ0JBQU9HLEtBQVAsR0FBZSxRQUFmO0FBQ0EsTUFBTUMsTUFBTSxHQUFHO0FBQ2JDLEVBQUFBLEtBQUssRUFBRSxDQURNO0FBRWJDLEVBQUFBLElBQUksRUFBRSxDQUZPO0FBR2JDLEVBQUFBLElBQUksRUFBRSxDQUhPO0FBSWJDLEVBQUFBLEtBQUssRUFBRTtBQUpNLENBQWY7QUFPQSxNQUFNQyxNQUFNLEdBQUc7QUFDYkgsRUFBQUEsSUFBSSxFQUFFLE1BRE87QUFFYkQsRUFBQUEsS0FBSyxFQUFFLE1BRk07QUFHYkUsRUFBQUEsSUFBSSxFQUFFLFFBSE87QUFJYkMsRUFBQUEsS0FBSyxFQUFFO0FBSk0sQ0FBZjtBQU9BLE1BQU1FLGtCQUFrQixHQUFHO0FBQ3pCQyxFQUFBQSxLQUFLLEVBQUUsT0FEa0I7QUFFekJDLEVBQUFBLE9BQU8sRUFBRSxPQUZnQjtBQUd6QlAsRUFBQUEsS0FBSyxFQUFFLE9BSGtCO0FBSXpCQyxFQUFBQSxJQUFJLEVBQUUsTUFKbUI7QUFLekJPLEVBQUFBLElBQUksRUFBRSxNQUxtQjtBQU16Qk4sRUFBQUEsSUFBSSxFQUFFLE1BTm1CO0FBT3pCQyxFQUFBQSxLQUFLLEVBQUU7QUFQa0IsQ0FBM0I7QUFVQSxJQUFJTSxHQUFHLEdBQUcsSUFBVjtBQUNBLElBQUlDLFFBQVEsR0FBRyxJQUFmOztBQUdBLE1BQU1DLGVBQWUsR0FBR0MsZ0JBQU9DLFNBQVAsQ0FBaUI7QUFDdkNELEVBQUFBLE1B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bEI7O0FBQ0EsUUFBSS9DLElBQUksQ0FBQ2tELFVBQUwsSUFBbUJDLGdCQUFFQyxVQUFGLENBQWFwRCxJQUFJLENBQUNrRCxVQUFsQixDQUF2QixFQUFzRDtBQUNwRGxELE1BQUFBLElBQUksQ0FBQ2tELFVBQUwsQ0FBZ0JMLE1BQU0sQ0FBQ3pFLEtBQXZCLEVBQThCMkUsR0FBOUI7QUFDRDtBQUVGLEdBWkQ7QUFhRDs7QUFFRCxTQUFTSixLQUFULEdBQWtCO0FBQ2hCLE1BQUk1RCxHQUFKLEVBQVM7QUFDUCxTQUFLLElBQUlzRSxTQUFULElBQXNCRixnQkFBRUcsSUFBRixDQUFPdkUsR0FBRyxDQUFDbUIsVUFBWCxDQUF0QixFQUE4QztBQUM1Q25CLE1BQUFBLEdBQUcsQ0FBQ3dFLE1BQUosQ0FBV0YsU0FBWDtBQUNEO0FBQ0Y7O0FBQ0RwRixrQkFBT3VGLGtCQUFQLENBQTBCLEtBQTFCO0FBQ0Q7O2VBSWNmLEkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbnBtbG9nIGZyb20gJ25wbWxvZyc7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIsIGZvcm1hdCwgdHJhbnNwb3J0cyB9IGZyb20gJ3dpbnN0b24nO1xuaW1wb3J0IHsgZnMsIGxvZ2dlciB9IGZyb20gJ2FwcGl1bS1zdXBwb3J0JztcbmltcG9ydCBkYXRlZm9ybWF0IGZyb20gJ2RhdGVmb3JtYXQnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuXG4vLyBzZXQgdXAgZGlzdHJpYnV0ZWQgbG9nZ2luZyBiZWZvcmUgZXZlcnl0aGluZyBlbHNlXG5sb2dnZXIucGF0Y2hMb2dnZXIobnBtbG9nKTtcbmdsb2JhbC5fZ2xvYmFsX25wbWxvZyA9IG5wbWxvZztcblxuLy8gbnBtbG9nIGlzIHVzZWQgb25seSBmb3IgZW1pdHRpbmcsIHdlIHVzZSB3aW5zdG9uIGZvciBvdXRwdXRcbm5wbWxvZy5sZXZlbCA9ICdzaWxlbnQnO1xuY29uc3QgbGV2ZWxzID0ge1xuICBkZWJ1ZzogNCxcbiAgaW5mbzogMyxcbiAgd2FybjogMixcbiAgZXJyb3I6IDEsXG59O1xuXG5jb25zdCBjb2xvcnMgPSB7XG4gIGluZm86ICdjeWFuJyxcbiAgZGVidWc6ICdncmV5JyxcbiAgd2FybjogJ3llbGxvdycsXG4gIGVycm9yOiAncmVkJyxcbn07XG5cbmNvbnN0IG5wbVRvV2luc3RvbkxldmVscyA9IHtcbiAgc2lsbHk6ICdkZWJ1ZycsXG4gIHZlcmJvc2U6ICdkZWJ1ZycsXG4gIGRlYnVnOiAnZGVidWcnLFxuICBpbmZvOiAnaW5mbycsXG4gIGh0dHA6ICdpbmZvJyxcbiAgd2FybjogJ3dhcm4nLFxuICBlcnJvcjogJ2Vycm9yJyxcbn07XG5cbmxldCBsb2cgPSBudWxsO1xubGV0IHRpbWVab25lID0gbnVsbDtcblxuLy8gYWRkIHRoZSB0aW1lc3RhbXAgaW4gdGhlIGNvcnJlY3QgZm9ybWF0IHRvIHRoZSBsb2cgaW5mbyBvYmplY3RcbmNvbnN0IHRpbWVzdGFtcEZvcm1hdCA9IGZvcm1hdC50aW1lc3RhbXAoe1xuICBmb3JtYXQgKCkge1xuICAgIGxldCBkYXRlID0gbmV3IERhdGUoKTtcbiAgICBpZiAoIXRpbWVab25lKSB7XG4gICAgICBkYXRlID0gbmV3IERhdGUoZGF0ZS52YWx1ZU9mKCkgKyBkYXRlLmdldFRpbWV6b25lT2Zmc2V0KCkgKiA2MDAwMCk7XG4gICAgfVxuICAgIHJldHVybiBkYXRlZm9ybWF0KGRhdGUsICd5eXl5LW1tLWRkIEhIOk1NOnNzOmwnKTtcbiAgfSxcbn0pO1xuXG4vLyBzZXQgdGhlIGN1c3RvbSBjb2xvcnNcbmNvbnN0IGNvbG9yaXplRm9ybWF0ID0gZm9ybWF0LmNvbG9yaXplKHtcbiAgY29sb3JzLFxufSk7XG5cbi8vIFN0cmlwIHRoZSBjb2xvciBtYXJraW5nIHdpdGhpbiBtZXNzYWdlc1xuY29uc3Qgc3RyaXBDb2xvckZvcm1hdCA9IGZvcm1hdChmdW5jdGlvbiBzdHJpcENvbG9yIChpbmZvKSB7XG4gIGNvbnN0IGNvZGUgPSAvXFx1MDAxYlxcWyhcXGQrKDtcXGQrKSopP20vZzsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb250cm9sLXJlZ2V4XG4gIGluZm8ubWVzc2FnZSA9IGluZm8ubWVzc2FnZS5yZXBsYWNlKGNvZGUsICcnKTtcbiAgcmV0dXJuIGluZm87XG59KSgpO1xuXG5mdW5jdGlvbiBjcmVhdGVDb25zb2xlVHJhbnNwb3J0IChhcmdzLCBsb2dMdmwpIHtcbiAgcmV0dXJuIG5ldyAodHJhbnNwb3J0cy5Db25zb2xlKSh7XG4gICAgbmFtZTogJ2NvbnNvbGUnLFxuICAgIGhhbmRsZUV4Y2VwdGlvbnM6IHRydWUsXG4gICAgZXhpdE9uRXJyb3I6IGZhbHNlLFxuICAgIGpzb246IGZhbHNlLFxuICAgIGxldmVsOiBsb2dMdmwsXG4gICAgc3RkZXJyTGV2ZWxzOiBbJ2Vycm9yJ10sXG4gICAgZm9ybWF0OiBmb3JtYXQuY29tYmluZShcbiAgICAgIGZvcm1hdChmdW5jdGlvbiBhZGp1c3REZWJ1ZyAoaW5mbykge1xuICAgICAgICAvLyBwcmVwZW5kIGRlYnVnIG1hcmtlciwgYW5kIHNoaWZ0IHRvIGBpbmZvYCBsb2cgbGV2ZWxcbiAgICAgICAgaWYgKGluZm8ubGV2ZWwgPT09ICdkZWJ1ZycpIHtcbiAgICAgICAgICBpbmZvLmxldmVsID0gJ2luZm8nO1xuICAgICAgICAgIGluZm8ubWVzc2FnZSA9IGBbZGVidWddICR7aW5mby5tZXNzYWdlfWA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGluZm87XG4gICAgICB9KSgpLFxuICAgICAgdGltZXN0YW1wRm9ybWF0LFxuICAgICAgYXJncy5sb2dOb0NvbG9ycyA/IHN0cmlwQ29sb3JGb3JtYXQgOiBjb2xvcml6ZUZvcm1hdCxcbiAgICAgIGZvcm1hdC5wcmludGYoZnVuY3Rpb24gcHJpbnRJbmZvIChpbmZvKSB7XG4gICAgICAgIHJldHVybiBgJHthcmdzLmxvZ1RpbWVzdGFtcCA/IGAke2luZm8udGltZXN0YW1wfSAtIGAgOiAnJ30ke2luZm8ubWVzc2FnZX1gO1xuICAgICAgfSlcbiAgICApLFxuICB9KTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlRmlsZVRyYW5zcG9ydCAoYXJncywgbG9nTHZsKSB7XG4gIHJldHVybiBuZXcgKHRyYW5zcG9ydHMuRmlsZSkoe1xuICAgIG5hbWU6ICdmaWxlJyxcbiAgICBmaWxlbmFtZTogYXJncy5sb2dGaWxlLFxuICAgIG1heEZpbGVzOiAxLFxuICAgIGhhbmRsZUV4Y2VwdGlvbnM6IHRydWUsXG4gICAgZXhpdE9uRXJyb3I6IGZhbHNlLFxuICAgIGpzb246IGZhbHNlLFxuICAgIGxldmVsOiBsb2dMdmwsXG4gICAgZm9ybWF0OiBmb3JtYXQuY29tYmluZShcbiAgICAgIHN0cmlwQ29sb3JGb3JtYXQsXG4gICAgICB0aW1lc3RhbXBGb3JtYXQsXG4gICAgICBmb3JtYXQucHJpbnRmKGZ1bmN0aW9uIHByaW50SW5mbyAoaW5mbykge1xuICAgICAgICByZXR1cm4gYCR7aW5mby50aW1lc3RhbXB9ICR7aW5mby5tZXNzYWdlfWA7XG4gICAgICB9KVxuICAgIClcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUh0dHBUcmFuc3BvcnQgKGFyZ3MsIGxvZ0x2bCkge1xuICBsZXQgaG9zdCA9ICcxMjcuMC4wLjEnO1xuICBsZXQgcG9ydCA9IDkwMDM7XG5cbiAgaWYgKGFyZ3Mud2ViaG9vay5tYXRjaCgnOicpKSB7XG4gICAgY29uc3QgaG9zdEFuZFBvcnQgPSBhcmdzLndlYmhvb2suc3BsaXQoJzonKTtcbiAgICBob3N0ID0gaG9zdEFuZFBvcnRbMF07XG4gICAgcG9ydCA9IHBhcnNlSW50KGhvc3RBbmRQb3J0WzFdLCAxMCk7XG4gIH1cblxuICByZXR1cm4gbmV3ICh0cmFuc3BvcnRzLkh0dHApKHtcbiAgICBuYW1lOiAnaHR0cCcsXG4gICAgaG9zdCxcbiAgICBwb3J0LFxuICAgIHBhdGg6ICcvJyxcbiAgICBoYW5kbGVFeGNlcHRpb25zOiB0cnVlLFxuICAgIGV4aXRPbkVycm9yOiBmYWxzZSxcbiAgICBqc29uOiBmYWxzZSxcbiAgICBsZXZlbDogbG9nTHZsLFxuICAgIGZvcm1hdDogZm9ybWF0LmNvbWJpbmUoXG4gICAgICBzdHJpcENvbG9yRm9ybWF0LFxuICAgICAgZm9ybWF0LnByaW50ZihmdW5jdGlvbiBwcmludEluZm8gKGluZm8pIHtcbiAgICAgICAgcmV0dXJuIGAke2luZm8udGltZXN0YW1wfSAke2luZm8ubWVzc2FnZX1gO1xuICAgICAgfSlcbiAgICApLFxuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlVHJhbnNwb3J0cyAoYXJncykge1xuICBsZXQgdHJhbnNwb3J0cyA9IFtdO1xuICBsZXQgY29uc29sZUxvZ0xldmVsID0gbnVsbDtcbiAgbGV0IGZpbGVMb2dMZXZlbCA9IG51bGw7XG5cbiAgaWYgKGFyZ3MubG9nbGV2ZWwgJiYgYXJncy5sb2dsZXZlbC5tYXRjaCgnOicpKSB7XG4gICAgLy8gLS1sb2ctbGV2ZWwgYXJnIGNhbiBvcHRpb25hbGx5IHByb3ZpZGUgZGlmZiBsb2dnaW5nIGxldmVscyBmb3IgY29uc29sZSBhbmQgZmlsZSwgc2VwYXJhdGVkIGJ5IGEgY29sb25cbiAgICBjb25zdCBsdmxQYWlyID0gYXJncy5sb2dsZXZlbC5zcGxpdCgnOicpO1xuICAgIGNvbnNvbGVMb2dMZXZlbCA9IGx2bFBhaXJbMF0gfHwgY29uc29sZUxvZ0xldmVsO1xuICAgIGZpbGVMb2dMZXZlbCA9IGx2bFBhaXJbMV0gfHwgZmlsZUxvZ0xldmVsO1xuICB9IGVsc2Uge1xuICAgIGNvbnNvbGVMb2dMZXZlbCA9IGZpbGVMb2dMZXZlbCA9IGFyZ3MubG9nbGV2ZWw7XG4gIH1cblxuICB0cmFuc3BvcnRzLnB1c2goY3JlYXRlQ29uc29sZVRyYW5zcG9ydChhcmdzLCBjb25zb2xlTG9nTGV2ZWwpKTtcblxuICBpZiAoYXJncy5sb2dGaWxlKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIGlmIHdlIGRvbid0IGRlbGV0ZSB0aGUgbG9nIGZpbGUsIHdpbnN0b24gd2lsbCBhbHdheXMgYXBwZW5kIGFuZCBpdCB3aWxsIGdyb3cgaW5maW5pdGVseSBsYXJnZTtcbiAgICAgIC8vIHdpbnN0b24gYWxsb3dzIGZvciBsaW1pdGluZyBsb2cgZmlsZSBzaXplLCBidXQgYXMgb2YgOS4yLjE0IHRoZXJlJ3MgYSBzZXJpb3VzIGJ1ZyB3aGVuIHVzaW5nXG4gICAgICAvLyBtYXhGaWxlcyBhbmQgbWF4U2l6ZSB0b2dldGhlci4gaHR0cHM6Ly9naXRodWIuY29tL2ZsYXRpcm9uL3dpbnN0b24vaXNzdWVzLzM5N1xuICAgICAgaWYgKGF3YWl0IGZzLmV4aXN0cyhhcmdzLmxvZ0ZpbGUpKSB7XG4gICAgICAgIGF3YWl0IGZzLnVubGluayhhcmdzLmxvZ0ZpbGUpO1xuICAgICAgfVxuXG4gICAgICB0cmFuc3BvcnRzLnB1c2goY3JlYXRlRmlsZVRyYW5zcG9ydChhcmdzLCBmaWxlTG9nTGV2ZWwpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS5sb2coYFRyaWVkIHRvIGF0dGFjaCBsb2dnaW5nIHRvIGZpbGUgJyR7YXJncy5sb2dGaWxlfScgYnV0IGFuIGVycm9yIGAgK1xuICAgICAgICAgICAgICAgICAgYG9jY3VycmVkOiAke2UubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICBpZiAoYXJncy53ZWJob29rKSB7XG4gICAgdHJ5IHtcbiAgICAgIHRyYW5zcG9ydHMucHVzaChjcmVhdGVIdHRwVHJhbnNwb3J0KGFyZ3MsIGZpbGVMb2dMZXZlbCkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLmxvZyhgVHJpZWQgdG8gYXR0YWNoIGxvZ2dpbmcgdG8gSHR0cCBhdCAke2FyZ3Mud2ViaG9va30gYnV0IGAgK1xuICAgICAgICAgICAgICAgICAgYGFuIGVycm9yIG9jY3VycmVkOiAke2UubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJhbnNwb3J0cztcbn1cblxuYXN5bmMgZnVuY3Rpb24gaW5pdCAoYXJncykge1xuICAvLyBzZXQgZGUgZmFjdG8gcGFyYW0gcGFzc2VkIHRvIHRpbWVzdGFtcCBmdW5jdGlvblxuICB0aW1lWm9uZSA9IGFyZ3MubG9jYWxUaW1lem9uZTtcblxuICAvLyBjbGVhbiB1cCBpbiBjYXNlIHdlIGhhdmUgaW5pdGlhdGVkIGJlZm9yZSBzaW5jZSBucG1sb2cgaXMgYSBnbG9iYWwgb2JqZWN0XG4gIGNsZWFyKCk7XG5cbiAgbG9nID0gY3JlYXRlTG9nZ2VyKHtcbiAgICB0cmFuc3BvcnRzOiBhd2FpdCBjcmVhdGVUcmFuc3BvcnRzKGFyZ3MpLFxuICAgIGxldmVscyxcbiAgfSk7XG5cbiAgLy8gQ2FwdHVyZSBsb2dzIGVtaXR0ZWQgdmlhIG5wbWxvZyBhbmQgcGFzcyB0aGVtIHRocm91Z2ggd2luc3RvblxuICBucG1sb2cub24oJ2xvZycsIChsb2dPYmopID0+IHtcbiAgICBjb25zdCB3aW5zdG9uTGV2ZWwgPSBucG1Ub1dpbnN0b25MZXZlbHNbbG9nT2JqLmxldmVsXSB8fCAnaW5mbyc7XG4gICAgbGV0IG1zZyA9IGxvZ09iai5tZXNzYWdlO1xuICAgIGlmIChsb2dPYmoucHJlZml4KSB7XG4gICAgICBjb25zdCBwcmVmaXggPSBgWyR7bG9nT2JqLnByZWZpeH1dYDtcbiAgICAgIG1zZyA9IGAke2FyZ3MubG9nTm9Db2xvcnMgPyBwcmVmaXggOiBwcmVmaXgubWFnZW50YX0gJHttc2d9YDtcbiAgICB9XG4gICAgbG9nW3dpbnN0b25MZXZlbF0obXNnKTtcbiAgICBpZiAoYXJncy5sb2dIYW5kbGVyICYmIF8uaXNGdW5jdGlvbihhcmdzLmxvZ0hhbmRsZXIpKSB7XG4gICAgICBhcmdzLmxvZ0hhbmRsZXIobG9nT2JqLmxldmVsLCBtc2cpO1xuICAgIH1cblxuICB9KTtcbn1cblxuZnVuY3Rpb24gY2xlYXIgKCkge1xuICBpZiAobG9nKSB7XG4gICAgZm9yIChsZXQgdHJhbnNwb3J0IG9mIF8ua2V5cyhsb2cudHJhbnNwb3J0cykpIHtcbiAgICAgIGxvZy5yZW1vdmUodHJhbnNwb3J0KTtcbiAgICB9XG4gIH1cbiAgbnBtbG9nLnJlbW92ZUFsbExpc3RlbmVycygnbG9nJyk7XG59XG5cblxuZXhwb3J0IHsgaW5pdCwgY2xlYXIgfTtcbmV4cG9ydCBkZWZhdWx0IGluaXQ7XG4iXSwiZmlsZSI6ImxpYi9sb2dzaW5rLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
209
+ exports.default = _default;
210
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsb2dnZXIiLCJwYXRjaExvZ2dlciIsIm5wbWxvZyIsImdsb2JhbCIsIl9nbG9iYWxfbnBtbG9nIiwibGV2ZWwiLCJsZXZlbHMiLCJkZWJ1ZyIsImluZm8iLCJ3YXJuIiwiZXJyb3IiLCJjb2xvcnMiLCJucG1Ub1dpbnN0b25MZXZlbHMiLCJzaWxseSIsInZlcmJvc2UiLCJodHRwIiwibG9nIiwidXNlTG9jYWxUaW1lWm9uZSIsInRpbWVzdGFtcEZvcm1hdCIsImZvcm1hdCIsInRpbWVzdGFtcCIsImRhdGUiLCJEYXRlIiwidmFsdWVPZiIsImdldFRpbWV6b25lT2Zmc2V0IiwidG9JU09TdHJpbmciLCJyZXBsYWNlIiwidHJpbSIsImNvbG9yaXplRm9ybWF0IiwiY29sb3JpemUiLCJzdHJpcENvbG9yRm9ybWF0Iiwic3RyaXBDb2xvciIsImNvZGUiLCJtZXNzYWdlIiwiY3JlYXRlQ29uc29sZVRyYW5zcG9ydCIsImFyZ3MiLCJsb2dMdmwiLCJ0cmFuc3BvcnRzIiwiQ29uc29sZSIsIm5hbWUiLCJoYW5kbGVFeGNlcHRpb25zIiwiZXhpdE9uRXJyb3IiLCJqc29uIiwic3RkZXJyTGV2ZWxzIiwiY29tYmluZSIsImFkanVzdERlYnVnIiwibG9nTm9Db2xvcnMiLCJwcmludGYiLCJwcmludEluZm8iLCJsb2dUaW1lc3RhbXAiLCJjcmVhdGVGaWxlVHJhbnNwb3J0IiwiRmlsZSIsImZpbGVuYW1lIiwibG9nRmlsZSIsIm1heEZpbGVzIiwiY3JlYXRlSHR0cFRyYW5zcG9ydCIsImhvc3QiLCJwb3J0Iiwid2ViaG9vayIsIm1hdGNoIiwiaG9zdEFuZFBvcnQiLCJzcGxpdCIsInBhcnNlSW50IiwiSHR0cCIsInBhdGgiLCJjcmVhdGVUcmFuc3BvcnRzIiwiY29uc29sZUxvZ0xldmVsIiwiZmlsZUxvZ0xldmVsIiwibG9nbGV2ZWwiLCJsdmxQYWlyIiwicHVzaCIsImZzIiwiZXhpc3RzIiwidW5saW5rIiwiZSIsImNvbnNvbGUiLCJpbml0IiwibG9jYWxUaW1lem9uZSIsImNsZWFyIiwiY3JlYXRlTG9nZ2VyIiwib24iLCJsb2dPYmoiLCJ3aW5zdG9uTGV2ZWwiLCJtc2ciLCJwcmVmaXgiLCJtYWdlbnRhIiwibG9nSGFuZGxlciIsIl8iLCJpc0Z1bmN0aW9uIiwidHJhbnNwb3J0Iiwia2V5cyIsInJlbW92ZSIsInJlbW92ZUFsbExpc3RlbmVycyJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9sb2dzaW5rLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBucG1sb2cgZnJvbSAnbnBtbG9nJztcbmltcG9ydCB7Y3JlYXRlTG9nZ2VyLCBmb3JtYXQsIHRyYW5zcG9ydHN9IGZyb20gJ3dpbnN0b24nO1xuaW1wb3J0IHtmcywgbG9nZ2VyfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuLy8gc2V0IHVwIGRpc3RyaWJ1dGVkIGxvZ2dpbmcgYmVmb3JlIGV2ZXJ5dGhpbmcgZWxzZVxubG9nZ2VyLnBhdGNoTG9nZ2VyKG5wbWxvZyk7XG5nbG9iYWwuX2dsb2JhbF9ucG1sb2cgPSBucG1sb2c7XG5cbi8vIG5wbWxvZyBpcyB1c2VkIG9ubHkgZm9yIGVtaXR0aW5nLCB3ZSB1c2Ugd2luc3RvbiBmb3Igb3V0cHV0XG5ucG1sb2cubGV2ZWwgPSAnaW5mbyc7XG5jb25zdCBsZXZlbHMgPSB7XG4gIGRlYnVnOiA0LFxuICBpbmZvOiAzLFxuICB3YXJuOiAyLFxuICBlcnJvcjogMSxcbn07XG5cbmNvbnN0IGNvbG9ycyA9IHtcbiAgaW5mbzogJ2N5YW4nLFxuICBkZWJ1ZzogJ2dyZXknLFxuICB3YXJuOiAneWVsbG93JyxcbiAgZXJyb3I6ICdyZWQnLFxufTtcblxuY29uc3QgbnBtVG9XaW5zdG9uTGV2ZWxzID0ge1xuICBzaWxseTogJ2RlYnVnJyxcbiAgdmVyYm9zZTogJ2RlYnVnJyxcbiAgZGVidWc6ICdkZWJ1ZycsXG4gIGluZm86ICdpbmZvJyxcbiAgaHR0cDogJ2luZm8nLFxuICB3YXJuOiAnd2FybicsXG4gIGVycm9yOiAnZXJyb3InLFxufTtcblxubGV0IGxvZyA9IG51bGw7XG5sZXQgdXNlTG9jYWxUaW1lWm9uZSA9IGZhbHNlO1xuXG4vLyBhZGQgdGhlIHRpbWVzdGFtcCBpbiB0aGUgY29ycmVjdCBmb3JtYXQgdG8gdGhlIGxvZyBpbmZvIG9iamVjdFxuY29uc3QgdGltZXN0YW1wRm9ybWF0ID0gZm9ybWF0LnRpbWVzdGFtcCh7XG4gIGZvcm1hdCgpIHtcbiAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgaWYgKHVzZUxvY2FsVGltZVpvbmUpIHtcbiAgICAgIGRhdGUgPSBuZXcgRGF0ZShkYXRlLnZhbHVlT2YoKSAtIGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIDYwMDAwKTtcbiAgICB9XG4gICAgLy8gJzIwMTItMTEtMDRUMTQ6NTE6MDYuMTU3WicgLT4gJzIwMTItMTEtMDQgMTQ6NTE6MDY6MTU3J1xuICAgIHJldHVybiBkYXRlLnRvSVNPU3RyaW5nKCkucmVwbGFjZSgvW1RaXS9nLCAnICcpLnJlcGxhY2UoL1xcLi9nLCAnOicpLnRyaW0oKTtcbiAgfSxcbn0pO1xuXG4vLyBzZXQgdGhlIGN1c3RvbSBjb2xvcnNcbmNvbnN0IGNvbG9yaXplRm9ybWF0ID0gZm9ybWF0LmNvbG9yaXplKHtcbiAgY29sb3JzLFxufSk7XG5cbi8vIFN0cmlwIHRoZSBjb2xvciBtYXJraW5nIHdpdGhpbiBtZXNzYWdlc1xuY29uc3Qgc3RyaXBDb2xvckZvcm1hdCA9IGZvcm1hdChmdW5jdGlvbiBzdHJpcENvbG9yKGluZm8pIHtcbiAgY29uc3QgY29kZSA9IC9cXHUwMDFiXFxbKFxcZCsoO1xcZCspKik/bS9nOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnRyb2wtcmVnZXhcbiAgaW5mby5tZXNzYWdlID0gaW5mby5tZXNzYWdlLnJlcGxhY2UoY29kZSwgJycpO1xuICByZXR1cm4gaW5mbztcbn0pKCk7XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbnNvbGVUcmFuc3BvcnQoYXJncywgbG9nTHZsKSB7XG4gIHJldHVybiBuZXcgdHJhbnNwb3J0cy5Db25zb2xlKHtcbiAgICAvLyBgbmFtZWAgaXMgdW5zdXBwb3J0ZWQgcGVyIHdpbnN0b24ncyB0eXBlIGRlY2xhcmF0aW9uc1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICBuYW1lOiAnY29uc29sZScsXG4gICAgaGFuZGxlRXhjZXB0aW9uczogdHJ1ZSxcbiAgICBleGl0T25FcnJvcjogZmFsc2UsXG4gICAganNvbjogZmFsc2UsXG4gICAgbGV2ZWw6IGxvZ0x2bCxcbiAgICBzdGRlcnJMZXZlbHM6IFsnZXJyb3InXSxcbiAgICBmb3JtYXQ6IGZvcm1hdC5jb21iaW5lKFxuICAgICAgZm9ybWF0KGZ1bmN0aW9uIGFkanVzdERlYnVnKGluZm8pIHtcbiAgICAgICAgLy8gcHJlcGVuZCBkZWJ1ZyBtYXJrZXIsIGFuZCBzaGlmdCB0byBgaW5mb2AgbG9nIGxldmVsXG4gICAgICAgIGlmIChpbmZvLmxldmVsID09PSAnZGVidWcnKSB7XG4gICAgICAgICAgaW5mby5sZXZlbCA9ICdpbmZvJztcbiAgICAgICAgICBpbmZvLm1lc3NhZ2UgPSBgW2RlYnVnXSAke2luZm8ubWVzc2FnZX1gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpbmZvO1xuICAgICAgfSkoKSxcbiAgICAgIHRpbWVzdGFtcEZvcm1hdCxcbiAgICAgIGFyZ3MubG9nTm9Db2xvcnMgPyBzdHJpcENvbG9yRm9ybWF0IDogY29sb3JpemVGb3JtYXQsXG4gICAgICBmb3JtYXQucHJpbnRmKGZ1bmN0aW9uIHByaW50SW5mbyhpbmZvKSB7XG4gICAgICAgIHJldHVybiBgJHthcmdzLmxvZ1RpbWVzdGFtcCA/IGAke2luZm8udGltZXN0YW1wfSAtIGAgOiAnJ30ke2luZm8ubWVzc2FnZX1gO1xuICAgICAgfSlcbiAgICApLFxuICB9KTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlRmlsZVRyYW5zcG9ydChhcmdzLCBsb2dMdmwpIHtcbiAgcmV0dXJuIG5ldyB0cmFuc3BvcnRzLkZpbGUoe1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICBuYW1lOiAnZmlsZScsXG4gICAgZmlsZW5hbWU6IGFyZ3MubG9nRmlsZSxcbiAgICBtYXhGaWxlczogMSxcbiAgICBoYW5kbGVFeGNlcHRpb25zOiB0cnVlLFxuICAgIGV4aXRPbkVycm9yOiBmYWxzZSxcbiAgICBqc29uOiBmYWxzZSxcbiAgICBsZXZlbDogbG9nTHZsLFxuICAgIGZvcm1hdDogZm9ybWF0LmNvbWJpbmUoXG4gICAgICBzdHJpcENvbG9yRm9ybWF0LFxuICAgICAgdGltZXN0YW1wRm9ybWF0LFxuICAgICAgZm9ybWF0LnByaW50ZihmdW5jdGlvbiBwcmludEluZm8oaW5mbykge1xuICAgICAgICByZXR1cm4gYCR7aW5mby50aW1lc3RhbXB9ICR7aW5mby5tZXNzYWdlfWA7XG4gICAgICB9KVxuICAgICksXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVIdHRwVHJhbnNwb3J0KGFyZ3MsIGxvZ0x2bCkge1xuICBsZXQgaG9zdCA9ICcxMjcuMC4wLjEnO1xuICBsZXQgcG9ydCA9IDkwMDM7XG5cbiAgaWYgKGFyZ3Mud2ViaG9vay5tYXRjaCgnOicpKSB7XG4gICAgY29uc3QgaG9zdEFuZFBvcnQgPSBhcmdzLndlYmhvb2suc3BsaXQoJzonKTtcbiAgICBob3N0ID0gaG9zdEFuZFBvcnRbMF07XG4gICAgcG9ydCA9IHBhcnNlSW50KGhvc3RBbmRQb3J0WzFdLCAxMCk7XG4gIH1cblxuICByZXR1cm4gbmV3IHRyYW5zcG9ydHMuSHR0cCh7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIG5hbWU6ICdodHRwJyxcbiAgICBob3N0LFxuICAgIHBvcnQsXG4gICAgcGF0aDogJy8nLFxuICAgIGhhbmRsZUV4Y2VwdGlvbnM6IHRydWUsXG4gICAgZXhpdE9uRXJyb3I6IGZhbHNlLFxuICAgIGpzb246IGZhbHNlLFxuICAgIGxldmVsOiBsb2dMdmwsXG4gICAgZm9ybWF0OiBmb3JtYXQuY29tYmluZShcbiAgICAgIHN0cmlwQ29sb3JGb3JtYXQsXG4gICAgICBmb3JtYXQucHJpbnRmKGZ1bmN0aW9uIHByaW50SW5mbyhpbmZvKSB7XG4gICAgICAgIHJldHVybiBgJHtpbmZvLnRpbWVzdGFtcH0gJHtpbmZvLm1lc3NhZ2V9YDtcbiAgICAgIH0pXG4gICAgKSxcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVRyYW5zcG9ydHMoYXJncykge1xuICBsZXQgdHJhbnNwb3J0cyA9IFtdO1xuICBsZXQgY29uc29sZUxvZ0xldmVsID0gbnVsbDtcbiAgbGV0IGZpbGVMb2dMZXZlbCA9IG51bGw7XG5cbiAgaWYgKGFyZ3MubG9nbGV2ZWwgJiYgYXJncy5sb2dsZXZlbC5tYXRjaCgnOicpKSB7XG4gICAgLy8gLS1sb2ctbGV2ZWwgYXJnIGNhbiBvcHRpb25hbGx5IHByb3ZpZGUgZGlmZiBsb2dnaW5nIGxldmVscyBmb3IgY29uc29sZSBhbmQgZmlsZSwgc2VwYXJhdGVkIGJ5IGEgY29sb25cbiAgICBjb25zdCBsdmxQYWlyID0gYXJncy5sb2dsZXZlbC5zcGxpdCgnOicpO1xuICAgIGNvbnNvbGVMb2dMZXZlbCA9IGx2bFBhaXJbMF0gfHwgY29uc29sZUxvZ0xldmVsO1xuICAgIGZpbGVMb2dMZXZlbCA9IGx2bFBhaXJbMV0gfHwgZmlsZUxvZ0xldmVsO1xuICB9IGVsc2Uge1xuICAgIGNvbnNvbGVMb2dMZXZlbCA9IGZpbGVMb2dMZXZlbCA9IGFyZ3MubG9nbGV2ZWw7XG4gIH1cblxuICB0cmFuc3BvcnRzLnB1c2goY3JlYXRlQ29uc29sZVRyYW5zcG9ydChhcmdzLCBjb25zb2xlTG9nTGV2ZWwpKTtcblxuICBpZiAoYXJncy5sb2dGaWxlKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIGlmIHdlIGRvbid0IGRlbGV0ZSB0aGUgbG9nIGZpbGUsIHdpbnN0b24gd2lsbCBhbHdheXMgYXBwZW5kIGFuZCBpdCB3aWxsIGdyb3cgaW5maW5pdGVseSBsYXJnZTtcbiAgICAgIC8vIHdpbnN0b24gYWxsb3dzIGZvciBsaW1pdGluZyBsb2cgZmlsZSBzaXplLCBidXQgYXMgb2YgOS4yLjE0IHRoZXJlJ3MgYSBzZXJpb3VzIGJ1ZyB3aGVuIHVzaW5nXG4gICAgICAvLyBtYXhGaWxlcyBhbmQgbWF4U2l6ZSB0b2dldGhlci4gaHR0cHM6Ly9naXRodWIuY29tL2ZsYXRpcm9uL3dpbnN0b24vaXNzdWVzLzM5N1xuICAgICAgaWYgKGF3YWl0IGZzLmV4aXN0cyhhcmdzLmxvZ0ZpbGUpKSB7XG4gICAgICAgIGF3YWl0IGZzLnVubGluayhhcmdzLmxvZ0ZpbGUpO1xuICAgICAgfVxuXG4gICAgICB0cmFuc3BvcnRzLnB1c2goY3JlYXRlRmlsZVRyYW5zcG9ydChhcmdzLCBmaWxlTG9nTGV2ZWwpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGBUcmllZCB0byBhdHRhY2ggbG9nZ2luZyB0byBmaWxlICcke2FyZ3MubG9nRmlsZX0nIGJ1dCBhbiBlcnJvciBgICsgYG9jY3VycmVkOiAke2UubWVzc2FnZX1gXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGlmIChhcmdzLndlYmhvb2spIHtcbiAgICB0cnkge1xuICAgICAgdHJhbnNwb3J0cy5wdXNoKGNyZWF0ZUh0dHBUcmFuc3BvcnQoYXJncywgZmlsZUxvZ0xldmVsKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgVHJpZWQgdG8gYXR0YWNoIGxvZ2dpbmcgdG8gSHR0cCBhdCAke2FyZ3Mud2ViaG9va30gYnV0IGAgK1xuICAgICAgICAgIGBhbiBlcnJvciBvY2N1cnJlZDogJHtlLm1lc3NhZ2V9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJhbnNwb3J0cztcbn1cblxuYXN5bmMgZnVuY3Rpb24gaW5pdChhcmdzKSB7XG4gIG5wbWxvZy5sZXZlbCA9ICdzaWxlbnQnO1xuICAvLyBzZXQgZGUgZmFjdG8gcGFyYW0gcGFzc2VkIHRvIHRpbWVzdGFtcCBmdW5jdGlvblxuICB1c2VMb2NhbFRpbWVab25lID0gYXJncy5sb2NhbFRpbWV6b25lO1xuXG4gIC8vIGNsZWFuIHVwIGluIGNhc2Ugd2UgaGF2ZSBpbml0aWF0ZWQgYmVmb3JlIHNpbmNlIG5wbWxvZyBpcyBhIGdsb2JhbCBvYmplY3RcbiAgY2xlYXIoKTtcblxuICBsb2cgPSBjcmVhdGVMb2dnZXIoe1xuICAgIHRyYW5zcG9ydHM6IGF3YWl0IGNyZWF0ZVRyYW5zcG9ydHMoYXJncyksXG4gICAgbGV2ZWxzLFxuICB9KTtcblxuICAvLyBDYXB0dXJlIGxvZ3MgZW1pdHRlZCB2aWEgbnBtbG9nIGFuZCBwYXNzIHRoZW0gdGhyb3VnaCB3aW5zdG9uXG4gIG5wbWxvZy5vbignbG9nJywgKGxvZ09iaikgPT4ge1xuICAgIGNvbnN0IHdpbnN0b25MZXZlbCA9IG5wbVRvV2luc3RvbkxldmVsc1tsb2dPYmoubGV2ZWxdIHx8ICdpbmZvJztcbiAgICBsZXQgbXNnID0gbG9nT2JqLm1lc3NhZ2U7XG4gICAgaWYgKGxvZ09iai5wcmVmaXgpIHtcbiAgICAgIGNvbnN0IHByZWZpeCA9IGBbJHtsb2dPYmoucHJlZml4fV1gO1xuICAgICAgbXNnID0gYCR7YXJncy5sb2dOb0NvbG9ycyA/IHByZWZpeCA6IHByZWZpeC5tYWdlbnRhfSAke21zZ31gO1xuICAgIH1cbiAgICBsb2dbd2luc3RvbkxldmVsXShtc2cpO1xuICAgIGlmIChhcmdzLmxvZ0hhbmRsZXIgJiYgXy5pc0Z1bmN0aW9uKGFyZ3MubG9nSGFuZGxlcikpIHtcbiAgICAgIGFyZ3MubG9nSGFuZGxlcihsb2dPYmoubGV2ZWwsIG1zZyk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gY2xlYXIoKSB7XG4gIGlmIChsb2cpIHtcbiAgICBmb3IgKGxldCB0cmFuc3BvcnQgb2YgXy5rZXlzKGxvZy50cmFuc3BvcnRzKSkge1xuICAgICAgbG9nLnJlbW92ZSh0cmFuc3BvcnQpO1xuICAgIH1cbiAgfVxuICBucG1sb2cucmVtb3ZlQWxsTGlzdGVuZXJzKCdsb2cnKTtcbn1cblxuZXhwb3J0IHtpbml0LCBjbGVhcn07XG5leHBvcnQgZGVmYXVsdCBpbml0O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0FBLGVBQUEsQ0FBT0MsV0FBUCxDQUFtQkMsZUFBbkI7O0FBQ0FDLE1BQU0sQ0FBQ0MsY0FBUCxHQUF3QkYsZUFBeEI7QUFHQUEsZUFBQSxDQUFPRyxLQUFQLEdBQWUsTUFBZjtBQUNBLE1BQU1DLE1BQU0sR0FBRztFQUNiQyxLQUFLLEVBQUUsQ0FETTtFQUViQyxJQUFJLEVBQUUsQ0FGTztFQUdiQyxJQUFJLEVBQUUsQ0FITztFQUliQyxLQUFLLEVBQUU7QUFKTSxDQUFmO0FBT0EsTUFBTUMsTUFBTSxHQUFHO0VBQ2JILElBQUksRUFBRSxNQURPO0VBRWJELEtBQUssRUFBRSxNQUZNO0VBR2JFLElBQUksRUFBRSxRQUhPO0VBSWJDLEtBQUssRUFBRTtBQUpNLENBQWY7QUFPQSxNQUFNRSxrQkFBa0IsR0FBRztFQUN6QkMsS0FBSyxFQUFFLE9BRGtCO0VBRXpCQyxPQUFPLEVBQUUsT0FGZ0I7RUFHekJQLEtBQUssRUFBRSxPQUhrQjtFQUl6QkMsSUFBSSxFQUFFLE1BSm1CO0VBS3pCTyxJQUFJLEVBQUUsTUFMbUI7RUFNekJOLElBQUksRUFBRSxNQU5tQjtFQU96QkMsS0FBSyxFQUFFO0FBUGtCLENBQTNCO0FBVUEsSUFBSU0sR0FBRyxHQUFHLElBQVY7QUFDQSxJQUFJQyxnQkFBZ0IsR0FBRyxLQUF2Qjs7QUFHQSxNQUFNQyxlQUFlLEdBQUdDLGVBQUEsQ0FBT0MsU0FBUCxDQUFpQjtFQUN2Q0QsTUFBTSxHQUFHO0lBQ1AsSUFBSUUsSUFBSSxHQUFHLElBQUlDLElBQUosRUFBWDs7SUFDQSxJQUFJTCxnQkFBSixFQUFzQjtNQUNwQkksSUFBSSxHQUFHLElBQUlDLElBQUosQ0FBU0QsSUFBSSxDQUFDRSxP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
@@ -0,0 +1,55 @@
1
+ #!/usr/bin/env node
2
+ export { readConfigFile } from "./config-file";
3
+ export type DriverType = import('@appium/types').DriverType;
4
+ export type PluginType = import('@appium/types').PluginType;
5
+ export type DriverClass = import('@appium/types').DriverClass;
6
+ export type PluginClass = import('@appium/types').PluginClass;
7
+ export type WithServerSubcommand = import('appium/types').WithServerSubcommand;
8
+ export type DriverNameMap = import('./extension').DriverNameMap;
9
+ export type PluginNameMap = import('./extension').PluginNameMap;
10
+ /**
11
+ * Literally an empty object
12
+ */
13
+ export type ExtCommandInitResult = {};
14
+ export type ServerInitData = {
15
+ /**
16
+ * - The Appium driver
17
+ */
18
+ appiumDriver: import('./appium').AppiumDriver;
19
+ /**
20
+ * - The parsed arguments
21
+ */
22
+ parsedArgs: import('appium/types').ParsedArgs;
23
+ };
24
+ export type ServerInitResult = ServerInitData & import('./extension').ExtensionConfigs;
25
+ export type Args<T = import("appium/types").WithServerSubcommand> = import('appium/types').Args<T>;
26
+ export type ParsedArgs<T = import("appium/types").WithServerSubcommand> = import('appium/types').ParsedArgs<T>;
27
+ /**
28
+ * Initializes Appium's config. Starts server if appropriate and resolves the
29
+ * server instance if so; otherwise resolves w/ `undefined`.
30
+ * @template [T=WithServerSubcommand]
31
+ * @param {Args<T>} [args] - Arguments from CLI or otherwise
32
+ * @returns {Promise<import('@appium/types').AppiumServer|undefined>}
33
+ */
34
+ export function main<T = import("appium/types").WithServerSubcommand>(args?: Args<T> | undefined): Promise<import('@appium/types').AppiumServer | undefined>;
35
+ /**
36
+ * Initializes Appium, but does not start the server.
37
+ *
38
+ * Use this to get at the configuration schema.
39
+ *
40
+ * If `args` contains a non-empty `subcommand` which is not `server`, this function will return an empty object.
41
+ *
42
+ * @template [T=WithServerSubcommand]
43
+ * @param {Args<T>} [args] - Partial args (progammatic usage only)
44
+ * @returns {Promise<ServerInitResult | ExtCommandInitResult>}
45
+ * @example
46
+ * import {init, getSchema} from 'appium';
47
+ * const options = {}; // config object
48
+ * await init(options);
49
+ * const schema = getSchema(); // entire config schema including plugins and drivers
50
+ */
51
+ export function init<T = import("appium/types").WithServerSubcommand>(args?: Args<T> | undefined): Promise<ServerInitResult | ExtCommandInitResult>;
52
+ export const resolveAppiumHome: ((cwd?: string | undefined) => Promise<string>) & _.MemoizedFunction;
53
+ import _ from "lodash";
54
+ export { finalizeSchema, getSchema, validate } from "./schema/schema";
55
+ //# sourceMappingURL=main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../lib/main.js"],"names":[],"mappings":";;yBAkYa,OAAO,eAAe,EAAE,UAAU;yBAClC,OAAO,eAAe,EAAE,UAAU;0BAClC,OAAO,eAAe,EAAE,WAAW;0BACnC,OAAO,eAAe,EAAE,WAAW;mCACnC,OAAO,cAAc,EAAE,oBAAoB;4BAC3C,OAAO,aAAa,EAAE,aAAa;4BACnC,OAAO,aAAa,EAAE,aAAa;;;;mCAKlC,EAAE;;;;;kBAKF,OAAO,UAAU,EAAE,YAAY;;;;gBAC/B,OAAO,cAAc,EAAE,UAAU;;+BAIlC,cAAc,GAAG,OAAO,aAAa,EAAE,gBAAgB;oEAKvD,OAAO,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC;0EAK9B,OAAO,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC;AAjJjD;;;;;;GAMG;AACH,mGAFa,QAAQ,OAAO,eAAe,EAAE,YAAY,GAAC,SAAS,CAAC,CA8FnE;AA1ND;;;;;;;;;;;;;;;GAeG;AACH,mGAPa,QAAQ,gBAAgB,GAAG,oBAAoB,CAAC,CA4G5D"}