appium 2.0.0-beta.21 → 2.0.0-beta.22

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 (75) hide show
  1. package/LICENSE +201 -0
  2. package/build/check-npm-pack-files.js +23 -0
  3. package/build/commands-yml/parse.js +319 -0
  4. package/build/commands-yml/validator.js +130 -0
  5. package/build/index.js +19 -0
  6. package/build/lib/cli/parser.js +6 -2
  7. package/build/lib/config.js +1 -28
  8. package/build/lib/main.js +1 -1
  9. package/build/lib/plugin-config.js +2 -2
  10. package/build/lib/schema/appium-config-schema.js +3 -2
  11. package/build/lib/schema/arg-spec.js +1 -1
  12. package/build/lib/schema/cli-args.js +20 -5
  13. package/build/lib/schema/keywords.js +14 -4
  14. package/build/postinstall.js +90 -0
  15. package/build/test/cli/cli-e2e-specs.js +221 -0
  16. package/build/test/cli/cli-helpers.js +86 -0
  17. package/build/test/cli/cli-specs.js +71 -0
  18. package/build/test/cli/fixtures/test-driver/package.json +27 -0
  19. package/build/test/cli/schema-args-specs.js +48 -0
  20. package/build/test/cli/schema-e2e-specs.js +47 -0
  21. package/build/test/config-e2e-specs.js +112 -0
  22. package/build/test/config-file-e2e-specs.js +209 -0
  23. package/build/test/config-file-specs.js +281 -0
  24. package/build/test/config-specs.js +159 -0
  25. package/build/test/driver-e2e-specs.js +435 -0
  26. package/build/test/driver-specs.js +321 -0
  27. package/build/test/ext-config-io-specs.js +181 -0
  28. package/build/test/extension-config-specs.js +365 -0
  29. package/build/test/fixtures/allow-feat.txt +5 -0
  30. package/build/test/fixtures/caps.json +3 -0
  31. package/build/test/fixtures/config/allow-insecure.txt +3 -0
  32. package/build/test/fixtures/config/appium.config.bad-nodeconfig.json +5 -0
  33. package/build/test/fixtures/config/appium.config.bad.json +32 -0
  34. package/build/test/fixtures/config/appium.config.ext-good.json +9 -0
  35. package/build/test/fixtures/config/appium.config.ext-unknown-props.json +10 -0
  36. package/build/test/fixtures/config/appium.config.good.js +40 -0
  37. package/build/test/fixtures/config/appium.config.good.json +33 -0
  38. package/build/test/fixtures/config/appium.config.good.yaml +30 -0
  39. package/build/test/fixtures/config/appium.config.invalid.json +31 -0
  40. package/build/test/fixtures/config/appium.config.security-array.json +5 -0
  41. package/build/test/fixtures/config/appium.config.security-delimited.json +5 -0
  42. package/build/test/fixtures/config/appium.config.security-path.json +5 -0
  43. package/build/test/fixtures/config/driver-fake.config.json +8 -0
  44. package/build/test/fixtures/config/nodeconfig.json +3 -0
  45. package/build/test/fixtures/config/plugin-fake.config.json +0 -0
  46. package/build/test/fixtures/default-args.js +35 -0
  47. package/build/test/fixtures/deny-feat.txt +5 -0
  48. package/build/test/fixtures/driver.schema.js +20 -0
  49. package/build/test/fixtures/extensions.yaml +27 -0
  50. package/build/test/fixtures/flattened-schema.js +504 -0
  51. package/build/test/fixtures/plugin.schema.js +20 -0
  52. package/build/test/fixtures/schema-with-extensions.js +28 -0
  53. package/build/test/grid-register-specs.js +74 -0
  54. package/build/test/helpers.js +75 -0
  55. package/build/test/logger-specs.js +76 -0
  56. package/build/test/npm-specs.js +20 -0
  57. package/build/test/parser-specs.js +314 -0
  58. package/build/test/plugin-e2e-specs.js +316 -0
  59. package/build/test/schema/arg-spec-specs.js +70 -0
  60. package/build/test/schema/cli-args-specs.js +431 -0
  61. package/build/test/schema/schema-specs.js +389 -0
  62. package/build/test/utils-specs.js +266 -0
  63. package/index.js +11 -0
  64. package/lib/appium-config.schema.json +2 -1
  65. package/lib/cli/parser.js +4 -1
  66. package/lib/config.js +1 -27
  67. package/lib/main.js +6 -3
  68. package/lib/plugin-config.js +1 -1
  69. package/lib/schema/appium-config-schema.js +1 -0
  70. package/lib/schema/arg-spec.js +4 -0
  71. package/lib/schema/cli-args.js +16 -4
  72. package/lib/schema/keywords.js +20 -4
  73. package/package.json +9 -14
  74. package/build/lib/cli/argparse-actions.js +0 -104
  75. package/lib/cli/argparse-actions.js +0 -77
@@ -0,0 +1,504 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ require("source-map-support/register");
9
+
10
+ var _default = [{
11
+ argSpec: {
12
+ arg: 'address',
13
+ defaultValue: '0.0.0.0',
14
+ dest: 'address',
15
+ extName: undefined,
16
+ extType: undefined,
17
+ name: 'address',
18
+ ref: 'appium.json#/properties/server/properties/address'
19
+ },
20
+ schema: {
21
+ $comment: 'I think hostname covers both DNS and IPv4...could be wrong',
22
+ appiumCliAliases: ['a'],
23
+ default: '0.0.0.0',
24
+ description: 'IP address to listen on',
25
+ format: 'hostname',
26
+ title: 'address config',
27
+ type: 'string'
28
+ }
29
+ }, {
30
+ argSpec: {
31
+ arg: 'allow-cors',
32
+ defaultValue: false,
33
+ dest: 'allowCors',
34
+ extName: undefined,
35
+ extType: undefined,
36
+ name: 'allow-cors',
37
+ ref: 'appium.json#/properties/server/properties/allow-cors'
38
+ },
39
+ schema: {
40
+ default: false,
41
+ description: 'Whether the Appium server should allow web browser connections from any host',
42
+ title: 'allow-cors config',
43
+ type: 'boolean'
44
+ }
45
+ }, {
46
+ argSpec: {
47
+ arg: 'allow-insecure',
48
+ defaultValue: [],
49
+ dest: 'allowInsecure',
50
+ extName: undefined,
51
+ extType: undefined,
52
+ name: 'allow-insecure',
53
+ ref: 'appium.json#/properties/server/properties/allow-insecure'
54
+ },
55
+ schema: {
56
+ appiumCliTransformer: 'csv',
57
+ default: [],
58
+ description: 'Set which insecure features are allowed to run in this server\'s sessions. Features are defined on a driver level; see documentation for more details. Note that features defined via "deny-insecure" will be disabled, even if also listed here. If string, a path to a text file containing policy or a comma-delimited list.',
59
+ items: {
60
+ type: 'string'
61
+ },
62
+ title: 'allow-insecure config',
63
+ type: 'array',
64
+ uniqueItems: true
65
+ }
66
+ }, {
67
+ argSpec: {
68
+ arg: 'base-path',
69
+ defaultValue: '',
70
+ dest: 'basePath',
71
+ extName: undefined,
72
+ extType: undefined,
73
+ name: 'base-path',
74
+ ref: 'appium.json#/properties/server/properties/base-path'
75
+ },
76
+ schema: {
77
+ appiumCliAliases: ['pa'],
78
+ default: '',
79
+ description: 'Base path to use as the prefix for all webdriver routes running on the server',
80
+ title: 'base-path config',
81
+ type: 'string'
82
+ }
83
+ }, {
84
+ argSpec: {
85
+ arg: 'callback-address',
86
+ defaultValue: undefined,
87
+ dest: 'callbackAddress',
88
+ extName: undefined,
89
+ extType: undefined,
90
+ name: 'callback-address',
91
+ ref: 'appium.json#/properties/server/properties/callback-address'
92
+ },
93
+ schema: {
94
+ appiumCliAliases: ['ca'],
95
+ description: 'Callback IP address (default: same as "address")',
96
+ title: 'callback-address config',
97
+ type: 'string'
98
+ }
99
+ }, {
100
+ argSpec: {
101
+ arg: 'callback-port',
102
+ defaultValue: 4723,
103
+ dest: 'callbackPort',
104
+ extName: undefined,
105
+ extType: undefined,
106
+ name: 'callback-port',
107
+ ref: 'appium.json#/properties/server/properties/callback-port'
108
+ },
109
+ schema: {
110
+ appiumCliAliases: ['cp'],
111
+ default: 4723,
112
+ description: 'Callback port (default: same as "port")',
113
+ maximum: 65535,
114
+ minimum: 1,
115
+ title: 'callback-port config',
116
+ type: 'integer'
117
+ }
118
+ }, {
119
+ argSpec: {
120
+ arg: 'debug-log-spacing',
121
+ defaultValue: false,
122
+ dest: 'debugLogSpacing',
123
+ extName: undefined,
124
+ extType: undefined,
125
+ name: 'debug-log-spacing',
126
+ ref: 'appium.json#/properties/server/properties/debug-log-spacing'
127
+ },
128
+ schema: {
129
+ default: false,
130
+ description: 'Add exaggerated spacing in logs to help with visual inspection',
131
+ title: 'debug-log-spacing config',
132
+ type: 'boolean'
133
+ }
134
+ }, {
135
+ argSpec: {
136
+ arg: 'default-capabilities',
137
+ defaultValue: undefined,
138
+ dest: 'defaultCapabilities',
139
+ extName: undefined,
140
+ extType: undefined,
141
+ name: 'default-capabilities',
142
+ ref: 'appium.json#/properties/server/properties/default-capabilities'
143
+ },
144
+ schema: {
145
+ $comment: 'TODO',
146
+ appiumCliAliases: ['dc'],
147
+ description: 'Set the default desired capabilities, which will be set on each session unless overridden by received capabilities. If a string, a path to a JSON file containing the capabilities, or raw JSON.',
148
+ title: 'default-capabilities config',
149
+ type: 'object'
150
+ }
151
+ }, {
152
+ argSpec: {
153
+ arg: 'deny-insecure',
154
+ defaultValue: [],
155
+ dest: 'denyInsecure',
156
+ extName: undefined,
157
+ extType: undefined,
158
+ name: 'deny-insecure',
159
+ ref: 'appium.json#/properties/server/properties/deny-insecure'
160
+ },
161
+ schema: {
162
+ $comment: 'Allowed values are defined by drivers',
163
+ appiumCliTransformer: 'csv',
164
+ default: [],
165
+ description: 'Set which insecure features are not allowed to run in this server\'s sessions. Features are defined on a driver level; see documentation for more details. Features listed here will not be enabled even if also listed in "allow-insecure", and even if "relaxed-security" is enabled. If string, a path to a text file containing policy or a comma-delimited list.',
166
+ items: {
167
+ type: 'string'
168
+ },
169
+ title: 'deny-insecure config',
170
+ type: 'array',
171
+ uniqueItems: true
172
+ }
173
+ }, {
174
+ argSpec: {
175
+ arg: 'keep-alive-timeout',
176
+ defaultValue: 600,
177
+ dest: 'keepAliveTimeout',
178
+ extName: undefined,
179
+ extType: undefined,
180
+ name: 'keep-alive-timeout',
181
+ ref: 'appium.json#/properties/server/properties/keep-alive-timeout'
182
+ },
183
+ schema: {
184
+ appiumCliAliases: ['ka'],
185
+ default: 600,
186
+ description: 'Number of seconds the Appium server should apply as both the keep-alive timeout and the connection timeout for all requests. A value of 0 disables the timeout.',
187
+ minimum: 0,
188
+ title: 'keep-alive-timeout config',
189
+ type: 'integer'
190
+ }
191
+ }, {
192
+ argSpec: {
193
+ arg: 'local-timezone',
194
+ defaultValue: false,
195
+ dest: 'localTimezone',
196
+ extName: undefined,
197
+ extType: undefined,
198
+ name: 'local-timezone',
199
+ ref: 'appium.json#/properties/server/properties/local-timezone'
200
+ },
201
+ schema: {
202
+ default: false,
203
+ description: 'Use local timezone for timestamps',
204
+ title: 'local-timezone config',
205
+ type: 'boolean'
206
+ }
207
+ }, {
208
+ argSpec: {
209
+ arg: 'log',
210
+ defaultValue: undefined,
211
+ dest: 'logFile',
212
+ extName: undefined,
213
+ extType: undefined,
214
+ name: 'log',
215
+ ref: 'appium.json#/properties/server/properties/log'
216
+ },
217
+ schema: {
218
+ appiumCliAliases: ['g'],
219
+ appiumCliDest: 'logFile',
220
+ description: 'Also send log output to this file',
221
+ title: 'log config',
222
+ type: 'string'
223
+ }
224
+ }, {
225
+ argSpec: {
226
+ arg: 'log-filters',
227
+ defaultValue: undefined,
228
+ dest: 'logFilters',
229
+ extName: undefined,
230
+ extType: undefined,
231
+ name: 'log-filters',
232
+ ref: 'appium.json#/properties/server/properties/log-filters'
233
+ },
234
+ schema: {
235
+ $comment: 'TODO',
236
+ description: 'One or more log filtering rules',
237
+ items: {
238
+ type: 'string'
239
+ },
240
+ title: 'log-filters config',
241
+ type: 'array'
242
+ }
243
+ }, {
244
+ argSpec: {
245
+ arg: 'log-level',
246
+ defaultValue: 'debug',
247
+ dest: 'loglevel',
248
+ extName: undefined,
249
+ extType: undefined,
250
+ name: 'log-level',
251
+ ref: 'appium.json#/properties/server/properties/log-level'
252
+ },
253
+ schema: {
254
+ appiumCliDest: 'loglevel',
255
+ default: 'debug',
256
+ description: 'Log level (console[:file])',
257
+ enum: ['info', 'info:debug', 'info:info', 'info:warn', 'info:error', 'warn', 'warn:debug', 'warn:info', 'warn:warn', 'warn:error', 'error', 'error:debug', 'error:info', 'error:warn', 'error:error', 'debug', 'debug:debug', 'debug:info', 'debug:warn', 'debug:error'],
258
+ title: 'log-level config',
259
+ type: 'string'
260
+ }
261
+ }, {
262
+ argSpec: {
263
+ arg: 'log-no-colors',
264
+ defaultValue: false,
265
+ dest: 'logNoColors',
266
+ extName: undefined,
267
+ extType: undefined,
268
+ name: 'log-no-colors',
269
+ ref: 'appium.json#/properties/server/properties/log-no-colors'
270
+ },
271
+ schema: {
272
+ default: false,
273
+ description: 'Do not use color in console output',
274
+ title: 'log-no-colors config',
275
+ type: 'boolean'
276
+ }
277
+ }, {
278
+ argSpec: {
279
+ arg: 'log-timestamp',
280
+ defaultValue: false,
281
+ dest: 'logTimestamp',
282
+ extName: undefined,
283
+ extType: undefined,
284
+ name: 'log-timestamp',
285
+ ref: 'appium.json#/properties/server/properties/log-timestamp'
286
+ },
287
+ schema: {
288
+ default: false,
289
+ description: 'Show timestamps in console output',
290
+ title: 'log-timestamp config',
291
+ type: 'boolean'
292
+ }
293
+ }, {
294
+ argSpec: {
295
+ arg: 'long-stacktrace',
296
+ defaultValue: false,
297
+ dest: 'longStacktrace',
298
+ extName: undefined,
299
+ extType: undefined,
300
+ name: 'long-stacktrace',
301
+ ref: 'appium.json#/properties/server/properties/long-stacktrace'
302
+ },
303
+ schema: {
304
+ default: false,
305
+ description: 'Add long stack traces to log entries. Recommended for debugging only.',
306
+ title: 'long-stacktrace config',
307
+ type: 'boolean'
308
+ }
309
+ }, {
310
+ argSpec: {
311
+ arg: 'no-perms-check',
312
+ defaultValue: false,
313
+ dest: 'noPermsCheck',
314
+ extName: undefined,
315
+ extType: undefined,
316
+ name: 'no-perms-check',
317
+ ref: 'appium.json#/properties/server/properties/no-perms-check'
318
+ },
319
+ schema: {
320
+ default: false,
321
+ description: 'Do not check that needed files are readable and/or writable',
322
+ title: 'no-perms-check config',
323
+ type: 'boolean'
324
+ }
325
+ }, {
326
+ argSpec: {
327
+ arg: 'nodeconfig',
328
+ defaultValue: undefined,
329
+ dest: 'nodeconfig',
330
+ extName: undefined,
331
+ extType: undefined,
332
+ name: 'nodeconfig',
333
+ ref: 'appium.json#/properties/server/properties/nodeconfig'
334
+ },
335
+ schema: {
336
+ $comment: 'Selenium Grid 3 is unmaintained and Selenium Grid 4 no longer supports this file.',
337
+ description: 'Path to configuration JSON file to register Appium as a node with Selenium Grid 3; otherwise the configuration itself',
338
+ title: 'nodeconfig config',
339
+ type: 'object'
340
+ }
341
+ }, {
342
+ argSpec: {
343
+ arg: 'port',
344
+ defaultValue: 4723,
345
+ dest: 'port',
346
+ extName: undefined,
347
+ extType: undefined,
348
+ name: 'port',
349
+ ref: 'appium.json#/properties/server/properties/port'
350
+ },
351
+ schema: {
352
+ appiumCliAliases: ['p'],
353
+ default: 4723,
354
+ description: 'Port to listen on',
355
+ maximum: 65535,
356
+ minimum: 1,
357
+ title: 'port config',
358
+ type: 'integer'
359
+ }
360
+ }, {
361
+ argSpec: {
362
+ arg: 'relaxed-security',
363
+ defaultValue: false,
364
+ dest: 'relaxedSecurityEnabled',
365
+ extName: undefined,
366
+ extType: undefined,
367
+ name: 'relaxed-security',
368
+ ref: 'appium.json#/properties/server/properties/relaxed-security'
369
+ },
370
+ schema: {
371
+ default: false,
372
+ description: 'Disable additional security checks, so it is possible to use some advanced features, provided by drivers supporting this option. Only enable it if all the clients are in the trusted network and it\'s not the case if a client could potentially break out of the session sandbox. Specific features can be overridden by using "deny-insecure"',
373
+ title: 'relaxed-security config',
374
+ type: 'boolean',
375
+ appiumCliDest: 'relaxedSecurityEnabled'
376
+ }
377
+ }, {
378
+ argSpec: {
379
+ arg: 'session-override',
380
+ defaultValue: false,
381
+ dest: 'sessionOverride',
382
+ extName: undefined,
383
+ extType: undefined,
384
+ name: 'session-override',
385
+ ref: 'appium.json#/properties/server/properties/session-override'
386
+ },
387
+ schema: {
388
+ default: false,
389
+ description: 'Enables session override (clobbering)',
390
+ title: 'session-override config',
391
+ type: 'boolean'
392
+ }
393
+ }, {
394
+ argSpec: {
395
+ arg: 'strict-caps',
396
+ defaultValue: false,
397
+ dest: 'strictCaps',
398
+ extName: undefined,
399
+ extType: undefined,
400
+ name: 'strict-caps',
401
+ ref: 'appium.json#/properties/server/properties/strict-caps'
402
+ },
403
+ schema: {
404
+ default: false,
405
+ description: 'Cause sessions to fail if desired caps are sent in that Appium does not recognize as valid for the selected device',
406
+ title: 'strict-caps config',
407
+ type: 'boolean'
408
+ }
409
+ }, {
410
+ argSpec: {
411
+ arg: 'tmp',
412
+ defaultValue: undefined,
413
+ dest: 'tmpDir',
414
+ extName: undefined,
415
+ extType: undefined,
416
+ name: 'tmp',
417
+ ref: 'appium.json#/properties/server/properties/tmp'
418
+ },
419
+ schema: {
420
+ appiumCliDest: 'tmpDir',
421
+ description: 'Absolute path to directory Appium can use to manage temp files. Defaults to C:\\Windows\\Temp on Windows and /tmp otherwise.',
422
+ title: 'tmp config',
423
+ type: 'string'
424
+ }
425
+ }, {
426
+ argSpec: {
427
+ arg: 'trace-dir',
428
+ defaultValue: undefined,
429
+ dest: 'traceDir',
430
+ extName: undefined,
431
+ extType: undefined,
432
+ name: 'trace-dir',
433
+ ref: 'appium.json#/properties/server/properties/trace-dir'
434
+ },
435
+ schema: {
436
+ description: 'Absolute path to directory Appium can use to save iOS instrument traces; defaults to <tmp>/appium-instruments',
437
+ title: 'trace-dir config',
438
+ type: 'string'
439
+ }
440
+ }, {
441
+ argSpec: {
442
+ arg: 'use-drivers',
443
+ defaultValue: [],
444
+ dest: 'useDrivers',
445
+ extName: undefined,
446
+ extType: undefined,
447
+ name: 'use-drivers',
448
+ ref: 'appium.json#/properties/server/properties/use-drivers'
449
+ },
450
+ schema: {
451
+ appiumCliDescription: 'A list of drivers to activate. Can be a comma-delimited string or path to CSV file. By default, all installed drivers will be activated.',
452
+ default: [],
453
+ description: 'A list of drivers to activate. By default, all installed drivers will be activated.',
454
+ items: {
455
+ type: 'string'
456
+ },
457
+ title: 'use-drivers config',
458
+ type: 'array',
459
+ uniqueItems: true
460
+ }
461
+ }, {
462
+ argSpec: {
463
+ arg: 'use-plugins',
464
+ defaultValue: [],
465
+ dest: 'usePlugins',
466
+ extName: undefined,
467
+ extType: undefined,
468
+ name: 'use-plugins',
469
+ ref: 'appium.json#/properties/server/properties/use-plugins'
470
+ },
471
+ schema: {
472
+ appiumCliDescription: 'A list of plugins to activate. Can be a comma-delimited string, path to CSV file, or the string "all" to use all installed plugins.',
473
+ default: [],
474
+ description: 'A list of plugins to activate. To activate all plugins, the value should be an array with a single item "all".',
475
+ items: {
476
+ type: 'string'
477
+ },
478
+ title: 'use-plugins config',
479
+ type: 'array',
480
+ uniqueItems: true
481
+ }
482
+ }, {
483
+ argSpec: {
484
+ arg: 'webhook',
485
+ defaultValue: undefined,
486
+ dest: 'webhook',
487
+ extName: undefined,
488
+ extType: undefined,
489
+ name: 'webhook',
490
+ ref: 'appium.json#/properties/server/properties/webhook'
491
+ },
492
+ schema: {
493
+ $comment: 'This should probably use a uri-template format to restrict the protocol to http/https',
494
+ appiumCliAliases: ['G'],
495
+ description: 'Also send log output to this http listener',
496
+ format: 'uri',
497
+ title: 'webhook config',
498
+ type: 'string'
499
+ }
500
+ }];
501
+ exports.default = _default;require('source-map-support').install();
502
+
503
+
504
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvZml4dHVyZXMvZmxhdHRlbmVkLXNjaGVtYS5qcyJdLCJuYW1lcyI6WyJhcmdTcGVjIiwiYXJnIiwiZGVmYXVsdFZhbHVlIiwiZGVzdCIsImV4dE5hbWUiLCJ1bmRlZmluZWQiLCJleHRUeXBlIiwibmFtZSIsInJlZiIsInNjaGVtYSIsIiRjb21tZW50IiwiYXBwaXVtQ2xpQWxpYXNlcyIsImRlZmF1bHQiLCJkZXNjcmlwdGlvbiIsImZvcm1hdCIsInRpdGxlIiwidHlwZSIsImFwcGl1bUNsaVRyYW5zZm9ybWVyIiwiaXRlbXMiLCJ1bmlxdWVJdGVtcyIsIm1heGltdW0iLCJtaW5pbXVtIiwiYXBwaXVtQ2xpRGVzdCIsImVudW0iLCJhcHBpdW1DbGlEZXNjcmlwdGlvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O2VBQWUsQ0FDYjtBQUNFQSxFQUFBQSxPQUFPLEVBQUU7QUFDUEMsSUFBQUEsR0FBRyxFQUFFLFNBREU7QUFFUEMsSUFBQUEsWUFBWSxFQUFFLFNBRlA7QUFHUEMsSUFBQUEsSUFBSSxFQUFFLFNBSEM7QUFJUEMsSUFBQUEsT0FBTyxFQUFFQyxTQUpGO0FBS1BDLElBQUFBLE9BQU8sRUFBRUQsU0FMRjtBQU1QRSxJQUFBQSxJQUFJLEVBQUUsU0FOQztBQU9QQyxJQUFBQSxHQUFHLEVBQUU7QUFQRSxHQURYO0FBVUVDLEVBQUFBLE1BQU0sRUFBRTtBQUNOQyxJQUFBQSxRQUFRLEVBQUUsNERBREo7QUFFTkMsSUFBQUEsZ0JBQWdCLEVBQUUsQ0FBQyxHQUFELENBRlo7QUFHTkMsSUFBQUEsT0FBTyxFQUFFLFNBSEg7QUFJTkMsSUFBQUEsV0FBVyxFQUFFLHlCQUpQO0FBS05DLElBQUFBLE1BQU0sRUFBRSxVQUxGO0FBTU5DLElBQUFBLEtBQUssRUFBRSxnQkFORDtBQU9OQyxJQUFBQSxJQUFJLEVBQUU7QUFQQTtBQVZWLENBRGEsRUFxQmI7QUFDRWhCLEVBQUFBLE9BQU8sRUFBRTtBQUNQQyxJQUFBQSxHQUFHLEVBQUUsWUFERTtBQUVQQyxJ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QUdQRixJQUFBQSxJQUFJLEVBQUUsU0FIQztBQUlQQyxJQUFBQSxPQUFPLEVBQUVDLFNBSkY7QUFLUEMsSUFBQUEsT0FBTyxFQUFFRCxTQUxGO0FBTVBFLElBQUFBLElBQUksRUFBRSxTQU5DO0FBT1BDLElBQUFBLEdBQUcsRUFBRTtBQVBFLEdBRFg7QUFVRUMsRUFBQUEsTUFBTSxFQUFFO0FBQ05DLElBQUFBLFFBQVEsRUFDTix1RkFGSTtBQUdOQyxJQUFBQSxnQkFBZ0IsRUFBRSxDQUFDLEdBQUQsQ0FIWjtBQUlORSxJQUFBQSxXQUFXLEVBQUUsNENBSlA7QUFLTkMsSUFBQUEsTUFBTSxFQUFFLEtBTEY7QUFNTkMsSUFBQUEsS0FBSyxFQUFFLGdCQU5EO0FBT05DLElBQUFBLElBQUksRUFBRTtBQVBBO0FBVlYsQ0FsaEJhLEMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBbXG4gIHtcbiAgICBhcmdTcGVjOiB7XG4gICAgICBhcmc6ICdhZGRyZXNzJyxcbiAgICAgIGRlZmF1bHRWYWx1ZTogJzAuMC4wLjAnLFxuICAgICAgZGVzdDogJ2FkZHJlc3MnLFxuICAgICAgZXh0TmFtZTogdW5kZWZpbmVkLFxuICAgICAgZXh0VHlwZTogdW5kZWZpbmVkLFxuICAgICAgbmFtZTogJ2FkZHJlc3MnLFxuICAgICAgcmVmOiAnYXBwaXVtLmpzb24jL3Byb3BlcnRpZXMvc2VydmVyL3Byb3BlcnRpZXMvYWRkcmVzcycsXG4gICAgfSxcbiAgICBzY2hlbWE6IHtcbiAgICAgICRjb21tZW50OiAnSSB0aGluayBob3N0bmFtZSBjb3ZlcnMgYm90aCBETlMgYW5kIElQdjQuLi5jb3VsZCBiZSB3cm9uZycsXG4gICAgICBhcHBpdW1DbGlBbGlhc2VzOiBbJ2EnXSxcbiAgICAgIGRlZmF1bHQ6ICcwLjAuMC4wJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnSVAgYWRkcmVzcyB0byBsaXN0ZW4gb24nLFxuICAgICAgZm9ybWF0OiAnaG9zdG5hbWUnLFxuICAgICAgdGl0bGU6ICdhZGRyZXNzIGNvbmZpZycsXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICB9LFxuICB9LFxuICB7XG4gICAgYXJnU3BlYzoge1xuICAgICAgYXJnOiAnYWxsb3ctY29ycycsXG4gICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgICAgZGVzdDogJ2FsbG93Q29ycycsXG4gICAgICBleHROYW1lOiB1bmRlZmluZWQsXG4gICAgICBleHRUeXBlOiB1bmRlZmluZWQsXG4gICAgICBuYW1lOiAnYWxsb3ctY29ycycsXG4gICAgICByZWY6ICdhcHBpdW0uanNvbiMvcHJvcGVydGllcy9zZXJ2ZXIvcHJvcGVydGllcy9hbGxvdy1jb3JzJyxcbiAgICB9LFxuICAgIHNjaGVtYToge1xuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ1doZXRoZXIgdGhlIEFwcGl1bSBzZXJ2ZXIgc2hvdWxkIGFsbG93IHdlYiBicm93c2VyIGNvbm5lY3Rpb25zIGZyb20gYW55IGhvc3QnLFxuICAgICAgdGl0bGU6ICdhbGxvdy1jb3JzIGNvbmZpZycsXG4gICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgfSxcbiAgfSxcbiAge1xuICAgIGFyZ1NwZWM6IHtcbiAgICAgIGFyZzogJ2FsbG93LWluc2VjdXJlJyxcbiAgICAgIGRlZmF1bHRWYWx1ZTogW10sXG4gICAgICBkZXN0OiAnYWxsb3dJbnNlY3VyZScsXG4gICAgICBleHROYW1lOiB1bmRlZmluZWQsXG4gICAgICBleHRUeXBlOiB1bmRlZmluZWQsXG4gICAgICBuYW1lOiAnYWxsb3ctaW5zZWN1cmUnLFxuICAgICAgcmVmOiAnYXBwaXVtLmpzb24jL3Byb3BlcnRpZXMvc2VydmVyL3Byb3BlcnRpZXMvYWxsb3ctaW5zZWN1cmUnLFxuICAgIH0sXG4gICAgc2NoZW1hOiB7XG4gICAgICBhcHBpdW1DbGlUcmFuc2Zvcm1lcjogJ2NzdicsXG4gICAgICBkZWZhdWx0OiBbXSxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnU2V0IHdoaWNoIGluc2VjdXJlIGZlYXR1cmVzIGFyZSBhbGxvd2VkIHRvIHJ1biBpbiB0aGlzIHNlcnZlclxcJ3Mgc2Vzc2lvbnMuIEZlYXR1cmVzIGFyZSBkZWZpbmVkIG9uIGEgZHJpdmVyIGxldmVsOyBzZWUgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBkZXRhaWxzLiBOb3RlIHRoYXQgZmVhdHVyZXMgZGVmaW5lZCB2aWEgXCJkZW55LWluc2VjdXJlXCIgd2lsbCBiZSBkaXNhYmxlZCwgZXZlbiBpZiBhbHNvIGxpc3RlZCBoZXJlLiBJZiBzdHJpbmcsIGEgcGF0aCB0byBhIHRleHQgZmlsZSBjb250YWluaW5nIHBvbGljeSBvciBhIGNvbW1hLWRlbGltaXRlZCBsaXN0LicsXG4gICAgICBpdGVtczoge3R5cGU6ICdzdHJpbmcnfSxcbiAgICAgIHRpdGxlOiAnYWxsb3ctaW5zZWN1cmUgY29uZmlnJyxcbiAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICB1bmlxdWVJdGVtczogdHJ1ZSxcbiAgICB9LFxuICB9LFxuICB7XG4gICAgYXJnU3BlYzoge1xuICAgICAgYXJnOiAnYmFzZS1wYXRoJyxcbiAgICAgIGRlZmF1bHRWYWx1ZTogJycsXG4gICAgICBkZXN0OiAnYmFzZVBhdGgnLFxuICAgICAgZXh0TmFtZTogdW5kZWZpbmVkLFxuICAgICAgZXh0VHlwZTogdW5kZWZpbmVkLFxuICAgICAgbmFtZTogJ2Jhc2UtcGF0aCcsXG4gICAgICByZWY6ICdhcHBpdW0uanNvbiMvcHJvcGVydGllcy9zZXJ2ZXIvcHJvcGVydGllcy9iYXNlLXBhdGgnLFxuICAgIH0sXG4gICAgc2NoZW1hOiB7XG4gICAgICBhcHBpdW1DbGlBbGlhc2VzOiBbJ3BhJ10sXG4gICAgICBkZWZhdWx0OiAnJyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnQmFzZSBwYXRoIHRvIHVzZSBhcyB0aGUgcHJlZml4IGZvciBhbGwgd2ViZHJpdmVyIHJvdXRlcyBydW5uaW5nIG9uIHRoZSBzZXJ2ZXInLFxuICAgICAgdGl0bGU6ICdiYXNlLXBhdGggY29uZmlnJyxcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgIH0sXG4gIH0sXG4gIHtcbiAgICBhcmdTcGVjOiB7XG4gICAgICBhcmc6ICdjYWxsYmFjay1hZGRyZXNzJyxcbiAgICAgIGRlZmF1bHRWYWx1ZTogdW5kZWZpbmVkLFxuICAgICAgZGVzdDogJ2NhbGxiYWNrQWRkcmVzcycsXG4gICAgICBleHROYW1lOiB1bmRlZmluZWQsXG4gICAgICBleHRUeXBlOiB1bmRlZmluZWQsXG4gICAgICBuYW1lOiAnY2FsbGJhY2stYWRkcmVzcycsXG4gICAgICByZWY6ICdhcHBpdW0uanNvbiMvcHJvcGVydGllcy9zZXJ2ZXIvcHJvcGVydGllcy9jYWxsYmFjay1hZGRyZXNzJyxcbiAgICB9LFxuICAgIHNjaGVtYToge1xuICAgICAgYXBwaXVtQ2xpQWxpYXNlczogWydjYSddLFxuICAgICAgZGVzY3JpcHRpb246ICdDYWxsYmFjayBJUCBhZGRyZXNzIChkZWZhdWx0OiBzYW1lIGFzIFwiYWRkcmVzc1wiKScsXG4gICAgICB0aXRsZTogJ2NhbGxiYWNrLWFkZHJlc3MgY29uZmlnJyxcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgIH0sXG4gIH0sXG4gIHtcbiAgICBhcmdTcGVjOiB7XG4gICAgICBhcmc6ICdjYWxsYmFjay1wb3J0JyxcbiAgICAgIGRlZmF1bHRWYWx1ZTogNDcyMyxcbiAgICAgIGRlc3Q6ICdjYWxsYmFja1BvcnQnLFxuICAgICAgZXh0TmFtZTogdW5kZWZpbmVkLFxuICAgICAgZXh0VHlwZTogdW5kZWZpbmVkLFxuICAgICAgbmFtZTogJ2NhbGxiYWNrLXBvcnQnLFxuICAgICAgcmVmOiAnYXBwaXVtLmpzb24jL3Byb3BlcnRpZXMvc2VydmVyL3Byb3BlcnRpZXMvY2FsbGJhY2stcG9ydCcsXG4gICAgfSxcbiAgICBzY2hlbWE6IHtcbiAgICAgIGFwcGl1bUNsaUFsaWFzZXM6IFsnY3AnXSxcbiAgICAgIGRlZmF1bHQ6IDQ3MjMsXG4gICAgICBkZXNjcmlwdGlvbjogJ0NhbGxiYWNrIHBvcnQgKGRlZmF1bHQ6IHNhbWUgYXMgXCJwb3J0XCIpJyxcbiAgICAgIG1heGltdW06IDY1NTM1LFxuICAgICAgbWluaW11bTogMSxcbiAgICAgIHRpdGxlOiAnY2FsbGJhY2stcG9ydCBjb25maWcnLFxuICAgICAgdHlwZTogJ2ludGVnZXInLFxuICAgIH0sXG4gIH0sXG4gIHtcbiAgICBhcmdTcGVjOiB7XG4gICAgICBhcmc6ICdkZWJ1Zy1sb2ctc3BhY2luZycsXG4gICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgICAgZGVzdDogJ2RlYnVnTG9nU3BhY2luZycsXG4gICAgICBleHROYW1lOiB1bmRlZmluZWQsXG4gICAgICBleHRUeXBlOiB1bmRlZmluZWQsXG4gICAgICBuYW1lOiAnZGVidWctbG9nLXNwYWNpbmcnLFxuICAgICAgcmVmOiAnYXBwaXVtLmpzb24jL3Byb3BlcnRpZXMvc2VydmVyL3Byb3BlcnRpZXMvZGVidWctbG9nLXNwYWNpbmcnLFxuICAgIH0sXG4gICAgc2NoZW1hOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnQWRkIGV4YWdnZXJhdGVkIHNwYWNpbmcgaW4gbG9ncyB0byBoZWxwIHdpdGggdmlzdWFsIGluc3BlY3Rpb24nLFxuICAgICAgdGl0bGU6ICdkZWJ1Zy1sb2ctc3BhY2luZyBjb25maWcnLFxuICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgIH0sXG4gIH0sXG4gIHtcbiAgICBhcmdTcGVjOiB7XG4gICAgICBhcmc6ICdkZWZhdWx0LWNhcGFiaWxpdGllcycsXG4gICAgICBkZWZhdWx0VmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgIGRlc3Q6ICdkZWZhdWx0Q2FwYWJpbGl0aWVzJyxcbiAgICAgIGV4dE5hbWU6IHVuZGVmaW5lZCxcbiAgICAgIGV4dFR5cGU6IHVuZGVmaW5lZCxcbiAgICAgIG5hbWU6ICdkZWZhdWx0LWNhcGFiaWxpdGllcycsXG4gICAgICByZWY6ICdhcHBpdW0uanNvbiMvcHJvcGVydGllcy9zZXJ2ZXIvcHJvcGVydGllcy9kZWZhdWx0LWNhcGFiaWxpdGllcycsXG4gICAgfSxcbiAgICBzY2hlbWE6IHtcbiAgICAgICRjb21tZW50OiAnVE9ETycsXG4gICAgICBhcHBpdW1DbGlBbGlhc2VzOiBbJ2RjJ10sXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ1NldCB0aGUgZGVmYXVsdCBkZXNpcmVkIGNhcGFiaWxpdGllcywgd2hpY2ggd2lsbCBiZSBzZXQgb24gZWFjaCBzZXNzaW9uIHVubGVzcyBvdmVycmlkZGVuIGJ5IHJlY2VpdmVkIGNhcGFiaWxpdGllcy4gSWYgYSBzdHJpbmcsIGEgcGF0aCB0byBhIEpTT04gZmlsZSBjb250YWluaW5nIHRoZSBjYXBhYmlsaXRpZXMsIG9yIHJhdyBKU09OLicsXG4gICAgICB0aXRsZTogJ2RlZmF1bHQtY2FwYWJpbGl0aWVzIGNvbmZpZycsXG4gICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICB9LFxuICB9LFxuICB7XG4gICAgYXJnU3BlYzoge1xuICAgICAgYXJnOiAnZGVueS1pbnNlY3VyZScsXG4gICAgICBkZWZhdWx0VmFsdWU6IFtdLFxuICAgICAgZGVzdDogJ2RlbnlJbnNlY3VyZScsXG4gICAgICBleHROYW1lOiB1bmRlZmluZWQsXG4gICAgICBleHRUeXBlOiB1bmRlZmluZWQsXG4gICAgICBuYW1lOiAnZGVueS1pbnNlY3VyZScsXG4gICAgICByZWY6ICdhcHBpdW0uanNvbiMvcHJvcGVydGllcy9zZXJ2ZXIvcHJvcGVydGllcy9kZW55LWluc2VjdXJlJyxcbiAgICB9LFxuICAgIHNjaGVtYToge1xuICAgICAgJGNvbW1lbnQ6ICdBbGxvd2VkIHZhbHVlcyBhcmUgZGVmaW5lZCBieSBkcml2ZXJzJyxcbiAgICAgIGFwcGl1bUNsaVRyYW5zZm9ybWVyOiAnY3N2JyxcbiAgICAgIGRlZmF1bHQ6IFtdLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdTZXQgd2hpY2ggaW5zZWN1cmUgZmVhdHVyZXMgYXJlIG5vdCBhbGxvd2VkIHRvIHJ1biBpbiB0aGlzIHNlcnZlclxcJ3Mgc2Vzc2lvbnMuIEZlYXR1cmVzIGFyZSBkZWZpbmVkIG9uIGEgZHJpdmVyIGxldmVsOyBzZWUgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBkZXRhaWxzLiBGZWF0dXJlcyBsaXN0ZWQgaGVyZSB3aWxsIG5vdCBiZSBlbmFibGVkIGV2ZW4gaWYgYWxzbyBsaXN0ZWQgaW4gXCJhbGxvdy1pbnNlY3VyZVwiLCBhbmQgZXZlbiBpZiBcInJlbGF4ZWQtc2VjdXJpdHlcIiBpcyBlbmFibGVkLiBJZiBzdHJpbmcsIGEgcGF0aCB0byBhIHRleHQgZmlsZSBjb250YWluaW5nIHBvbGljeSBvciBhIGNvbW1hLWRlbGltaXRlZCBsaXN0LicsXG4gICAgICBpdGVtczoge3R5cGU6ICdzdHJpbmcnfSxcbiAgICAgIHRpdGxlOiAnZGVueS1pbnNlY3VyZSBjb25maWcnLFxuICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgIHVuaXF1ZUl0ZW1zOiB0cnVlLFxuICAgIH0sXG4gIH0sXG4gIHtcbiAgICBhcmdTcGVjOiB7XG4gICAgICBhcmc6ICdrZWVwLWFsaXZlLXRpbWVvdXQnLFxuICAgICAgZGVmYXVsdFZhbHVlOiA2MDAsXG4gICAgICBkZXN0OiAna2VlcEFsaXZlVGltZW91dCcsXG4gICAgICBleHROYW1lOiB1bmRlZmluZWQsXG4gICAgICBleHRUeXBlOiB1bmRlZmluZWQsXG4gICAgICBuYW1lOiAna2VlcC1hbGl2ZS10aW1lb3V0JyxcbiAgICAgIHJlZjogJ2FwcGl1bS5qc29uIy9wcm9wZXJ0aWVzL3NlcnZlci9wcm9wZXJ0aWVzL2tlZXAtYWxpdmUtdGltZW91dCcsXG4gICAgfSxcbiAgICBzY2hlbWE6IHtcbiAgICAgIGFwcGl1bUNsaUFsaWFzZXM6IFsna2EnXSxcbiAgICAgIGRlZmF1bHQ6IDYwMCxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnTnVtYmVyIG9mIHNlY29uZHMgdGhlIEFwcGl1bSBzZXJ2ZXIgc2hvdWxkIGFwcGx5IGFzIGJvdGggdGhlIGtlZXAtYWxpdmUgdGltZW91dCBhbmQgdGhlIGNvbm5lY3Rpb24gdGltZW91dCBmb3IgYWxsIHJlcXVlc3RzLiBBIHZhbHVlIG9mIDAgZGlzYWJsZXMgdGhlIHRpbWVvdXQuJyxcbiAgICAgIG1pbmltdW06IDAsXG4gICAgICB0aXRsZTogJ2tlZXAtYWxpdmUtdGltZW91dCBjb25maWcnLFxuICAgICAgdHlwZTogJ2ludGVnZXInLFxuICAgIH0sXG4gIH0sXG4gIHtcbiAgICBhcmdTcGVjOiB7XG4gICAgICBhcmc6ICdsb2NhbC10aW1lem9uZScsXG4gICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgICAgZGVzdDogJ2xvY2FsVGltZXpvbmUnLFxuICAgICAgZXh0TmFtZTogdW5kZWZpbmVkLFxuICAgICAgZXh0VHlwZTogdW5kZWZpbmVkLFxuICAgICAgbmFtZTogJ2xvY2FsLXRpbWV6b25lJyxcbiAgICAgIHJlZjogJ2FwcGl1bS5qc29uIy9wcm9wZXJ0aWVzL3NlcnZlci9wcm9wZXJ0aWVzL2xvY2FsLXRpbWV6b25lJyxcbiAgICB9LFxuICAgIHNjaGVtYToge1xuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICBkZXNjcmlwdGlvbjogJ1VzZSBsb2NhbCB0aW1lem9uZSBmb3IgdGltZXN0YW1wcycsXG4gICAgICB0aXRsZTogJ2xvY2FsLXRpbWV6b25lIGNvbmZpZycsXG4gICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgfSxcbiAgfSxcbiAge1xuICAgIGFyZ1NwZWM6IHtcbiAgICAgIGFyZzogJ2xvZycsXG4gICAgICBkZWZhdWx0VmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgIGRlc3Q6ICdsb2dGaWxlJyxcbiAgICAgIGV4dE5hbWU6IHVuZGVmaW5lZCxcbiAgICAgIGV4dFR5cGU6IHVuZGVmaW5lZCxcbiAgICAgIG5hbWU6ICdsb2cnLFxuICAgICAgcmVmOiAnYXBwaXVtLmpzb24jL3Byb3BlcnRpZXMvc2VydmVyL3Byb3BlcnRpZXMvbG9nJyxcbiAgICB9LFxuICAgIHNjaGVtYToge1xuICAgICAgYXBwaXVtQ2xpQWxpYXNlczogWydnJ10sXG4gICAgICBhcHBpdW1DbGlEZXN0OiAnbG9nRmlsZScsXG4gICAgICBkZXNjcmlwdGlvbjogJ0Fsc28gc2VuZCBsb2cgb3V0cHV0IHRvIHRoaXMgZmlsZScsXG4gICAgICB0aXRsZTogJ2xvZyBjb25maWcnLFxuICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgfSxcbiAgfSxcbiAge1xuICAgIGFyZ1NwZWM6IHtcbiAgICAgIGFyZzogJ2xvZy1maWx0ZXJzJyxcbiAgICAgIGRlZmF1bHRWYWx1ZTogdW5kZWZpbmVkLFxuICAgICAgZGVzdDogJ2xvZ0ZpbHRlcnMnLFxuICAgICAgZXh0TmFtZTogdW5kZWZpbmVkLFxuICAgICAgZXh0VHlwZTogdW5kZWZpbmVkLFxuICAgICAgbmFtZTogJ2xvZy1maWx0ZXJzJyxcbiAgICAgIHJlZjogJ2FwcGl1bS5qc29uIy9wcm9wZXJ0aWVzL3NlcnZlci9wcm9wZXJ0aWVzL2xvZy1maWx0ZXJzJyxcbiAgICB9LFxuICAgIHNjaGVtYToge1xuICAgICAgJGNvbW1lbnQ6ICdUT0RPJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnT25lIG9yIG1vcmUgbG9nIGZpbHRlcmluZyBydWxlcycsXG4gICAgICBpdGVtczoge3R5cGU6ICdzdHJpbmcnfSxcbiAgICAgIHRpdGxlOiAnbG9nLWZpbHRlcnMgY29uZmlnJyxcbiAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgfSxcbiAgfSxcbiAge1xuICAgIGFyZ1NwZWM6IHtcbiAgICAgIGFyZzogJ2xvZy1sZXZlbCcsXG4gICAgICBkZWZhdWx0VmFsdWU6ICdkZWJ1ZycsXG4gICAgICBkZXN0OiAnbG9nbGV2ZWwnLFxuICAgICAgZXh0TmFtZTogdW5kZWZpbmVkLFxuICAgICAgZXh0VHlwZTogdW5kZWZpbmVkLFxuICAgICAgbmFtZTogJ2xvZy1sZXZlbCcsXG4gICAgICByZWY6ICdhcHBpdW0uanNvbiMvcHJvcGVydGllcy9zZXJ2ZXIvcHJvcGVydGllcy9sb2ctbGV2ZWwnLFxuICAgIH0sXG4gICAgc2NoZW1hOiB7XG4gICAgICBhcHBpdW1DbGlEZXN0OiAnbG9nbGV2ZWwnLFxuICAgICAgZGVmYXVsdDogJ2RlYnVnJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnTG9nIGxldmVsIChjb25zb2xlWzpmaWxlXSknLFxuICAgICAgZW51bTogW1xuICAgICAgICAnaW5mbycsXG4gICAgICAgICdpbmZvOmRlYnVnJyxcbiAgICAgICAgJ2luZm86aW5mbycsXG4gICAgICAgICdpbmZvOndhcm4nLFxuICAgICAgICAnaW5mbzplcnJvcicsXG4gICAgICAgICd3YXJuJyxcbiAgICAgICAgJ3dhcm46ZGVidWcnLFxuICAgICAgICAnd2FybjppbmZvJyxcbiAgICAgICAgJ3dhcm46d2FybicsXG4gICAgICAgICd3YXJuOmVycm9yJyxcbiAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgJ2Vycm9yOmRlYnVnJyxcbiAgICAgICAgJ2Vycm9yOmluZm8nLFxuICAgICAgICAnZXJyb3I6d2FybicsXG4gICAgICAgICdlcnJvcjplcnJvcicsXG4gICAgICAgICdkZWJ1ZycsXG4gICAgICAgICdkZWJ1ZzpkZWJ1ZycsXG4gICAgICAgICdkZWJ1ZzppbmZvJyxcbiAgICAgICAgJ2RlYnVnOndhcm4nLFxuICAgICAgICAnZGVidWc6ZXJyb3InLFxuICAgICAgXSxcbiAgICAgIHRpdGxlOiAnbG9nLWxldmVsIGNvbmZpZycsXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICB9LFxuICB9LFxuICB7XG4gICAgYXJnU3BlYzoge1xuICAgICAgYXJnOiAnbG9nLW5vLWNvbG9ycycsXG4gICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgICAgZGVzdDogJ2xvZ05vQ29sb3JzJyxcbiAgICAgIGV4dE5hbWU6IHVuZGVmaW5lZCxcbiAgICAgIGV4dFR5cGU6IHVuZGVmaW5lZCxcbiAgICAgIG5hbWU6ICdsb2ctbm8tY29sb3JzJyxcbiAgICAgIHJlZjogJ2FwcGl1bS5qc29uIy9wcm9wZXJ0aWVzL3NlcnZlci9wcm9wZXJ0aWVzL2xvZy1uby1jb2xvcnMnLFxuICAgIH0sXG4gICAgc2NoZW1hOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRG8gbm90IHVzZSBjb2xvciBpbiBjb25zb2xlIG91dHB1dCcsXG4gICAgICB0aXRsZTogJ2xvZy1uby1jb2xvcnMgY29uZmlnJyxcbiAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICB9LFxuICB9LFxuICB7XG4gICAgYXJnU3BlYzoge1xuICAgICAgYXJnOiAnbG9nLXRpbWVzdGFtcCcsXG4gICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgICAgZGVzdDogJ2xvZ1RpbWVzdGFtcCcsXG4gICAgICBleHROYW1lOiB1bmRlZmluZWQsXG4gICAgICBleHRUeXBlOiB1bmRlZmluZWQsXG4gICAgICBuYW1lOiAnbG9nLXRpbWVzdGFtcCcsXG4gICAgICByZWY6ICdhcHBpdW0uanNvbiMvcHJvcGVydGllcy9zZXJ2ZXIvcHJvcGVydGllcy9sb2ctdGltZXN0YW1wJyxcbiAgICB9LFxuICAgIHNjaGVtYToge1xuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICBkZXNjcmlwdGlvbjogJ1Nob3cgdGltZXN0YW1wcyBpbiBjb25zb2xlIG91dHB1dCcsXG4gICAgICB0aXRsZTogJ2xvZy10aW1lc3RhbXAgY29uZmlnJyxcbiAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICB9LFxuICB9LFxuICB7XG4gICAgYXJnU3BlYzoge1xuICAgICAgYXJnOiAnbG9uZy1zdGFja3RyYWNlJyxcbiAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgICBkZXN0OiAnbG9uZ1N0YWNrdHJhY2UnLFxuICAgICAgZXh0TmFtZTogdW5kZWZpbmVkLFxuICAgICAgZXh0VHlwZTogdW5kZWZpbmVkLFxuICAgICAgbmFtZTogJ2xvbmctc3RhY2t0cmFjZScsXG4gICAgICByZWY6ICdhcHBpdW0uanNvbiMvcHJvcGVydGllcy9zZXJ2ZXIvcHJvcGVydGllcy9sb25nLXN0YWNrdHJhY2UnLFxuICAgIH0sXG4gICAgc2NoZW1hOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnQWRkIGxvbmcgc3RhY2sgdHJhY2VzIHRvIGxvZyBlbnRyaWVzLiBSZWNvbW1lbmRlZCBmb3IgZGVidWdnaW5nIG9ubHkuJyxcbiAgICAgIHRpdGxlOiAnbG9uZy1zdGFja3RyYWNlIGNvbmZpZycsXG4gICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgfSxcbiAgfSxcbiAge1xuICAgIGFyZ1NwZWM6IHtcbiAgICAgIGFyZzogJ25vLXBlcm1zLWNoZWNrJyxcbiAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgICBkZXN0OiAnbm9QZXJtc0NoZWNrJyxcbiAgICAgIGV4dE5hbWU6IHVuZGVmaW5lZCxcbiAgICAgIGV4dFR5cGU6IHVuZGVmaW5lZCxcbiAgICAgIG5hbWU6ICduby1wZXJtcy1jaGVjaycsXG4gICAgICByZWY6ICdhcHBpdW0uanNvbiMvcHJvcGVydGllcy9zZXJ2ZXIvcHJvcGVydGllcy9uby1wZXJtcy1jaGVjaycsXG4gICAgfSxcbiAgICBzY2hlbWE6IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdEbyBub3QgY2hlY2sgdGhhdCBuZWVkZWQgZmlsZXMgYXJlIHJlYWRhYmxlIGFuZC9vciB3cml0YWJsZScsXG4gICAgICB0aXRsZTogJ25vLXBlcm1zLWNoZWNrIGNvbmZpZycsXG4gICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgfSxcbiAgfSxcbiAge1xuICAgIGFyZ1NwZWM6IHtcbiAgICAgIGFyZzogJ25vZGVjb25maWcnLFxuICAgICAgZGVmYXVsdFZhbHVlOiB1bmRlZmluZWQsXG4gICAgICBkZXN0OiAnbm9kZWNvbmZpZycsXG4gICAgICBleHROYW1lOiB1bmRlZmluZWQsXG4gICAgICBleHRUeXBlOiB1bmRlZmluZWQsXG4gICAgICBuYW1lOiAnbm9kZWNvbmZpZycsXG4gICAgICByZWY6ICdhcHBpdW0uanNvbiMvcHJvcGVydGllcy9zZXJ2ZXIvcHJvcGVydGllcy9ub2RlY29uZmlnJyxcbiAgICB9LFxuICAgIHNjaGVtYToge1xuICAgICAgJGNvbW1lbnQ6XG4gICAgICAgICdTZWxlbml1bSBHcmlkIDMgaXMgdW5tYWludGFpbmVkIGFuZCBTZWxlbml1bSBHcmlkIDQgbm8gbG9uZ2VyIHN1cHBvcnRzIHRoaXMgZmlsZS4nLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdQYXRoIHRvIGNvbmZpZ3VyYXRpb24gSlNPTiBmaWxlIHRvIHJlZ2lzdGVyIEFwcGl1bSBhcyBhIG5vZGUgd2l0aCBTZWxlbml1bSBHcmlkIDM7IG90aGVyd2lzZSB0aGUgY29uZmlndXJhdGlvbiBpdHNlbGYnLFxuICAgICAgdGl0bGU6ICdub2RlY29uZmlnIGNvbmZpZycsXG4gICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICB9LFxuICB9LFxuICB7XG4gICAgYXJnU3BlYzoge1xuICAgICAgYXJnOiAncG9ydCcsXG4gICAgICBkZWZhdWx0VmFsdWU6IDQ3MjMsXG4gICAgICBkZXN0OiAncG9ydCcsXG4gICAgICBleHROYW1lOiB1bmRlZmluZWQsXG4gICAgICBleHRUeXBlOiB1bmRlZmluZWQsXG4gICAgICBuYW1lOiAncG9ydCcsXG4gICAgICByZWY6ICdhcHBpdW0uanNvbiMvcHJvcGVydGllcy9zZXJ2ZXIvcHJvcGVydGllcy9wb3J0JyxcbiAgICB9LFxuICAgIHNjaGVtYToge1xuICAgICAgYXBwaXVtQ2xpQWxpYXNlczogWydwJ10sXG4gICAgICBkZWZhdWx0OiA0NzIzLFxuICAgICAgZGVzY3JpcHRpb246ICdQb3J0IHRvIGxpc3RlbiBvbicsXG4gICAgICBtYXhpbXVtOiA2NTUzNSxcbiAgICAgIG1pbmltdW06IDEsXG4gICAgICB0aXRsZTogJ3BvcnQgY29uZmlnJyxcbiAgICAgIHR5cGU6ICdpbnRlZ2VyJyxcbiAgICB9LFxuICB9LFxuICB7XG4gICAgYXJnU3BlYzoge1xuICAgICAgYXJnOiAncmVsYXhlZC1zZWN1cml0eScsXG4gICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgICAgZGVzdDogJ3JlbGF4ZWRTZWN1cml0eUVuYWJsZWQnLFxuICAgICAgZXh0TmFtZTogdW5kZWZpbmVkLFxuICAgICAgZXh0VHlwZTogdW5kZWZpbmVkLFxuICAgICAgbmFtZTogJ3JlbGF4ZWQtc2VjdXJpdHknLFxuICAgICAgcmVmOiAnYXBwaXVtLmpzb24jL3Byb3BlcnRpZXMvc2VydmVyL3Byb3BlcnRpZXMvcmVsYXhlZC1zZWN1cml0eScsXG4gICAgfSxcbiAgICBzY2hlbWE6IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdEaXNhYmxlIGFkZGl0aW9uYWwgc2VjdXJpdHkgY2hlY2tzLCBzbyBpdCBpcyBwb3NzaWJsZSB0byB1c2Ugc29tZSBhZHZhbmNlZCBmZWF0dXJlcywgcHJvdmlkZWQgYnkgZHJpdmVycyBzdXBwb3J0aW5nIHRoaXMgb3B0aW9uLiBPbmx5IGVuYWJsZSBpdCBpZiBhbGwgdGhlIGNsaWVudHMgYXJlIGluIHRoZSB0cnVzdGVkIG5ldHdvcmsgYW5kIGl0XFwncyBub3QgdGhlIGNhc2UgaWYgYSBjbGllbnQgY291bGQgcG90ZW50aWFsbHkgYnJlYWsgb3V0IG9mIHRoZSBzZXNzaW9uIHNhbmRib3guIFNwZWNpZmljIGZlYXR1cmVzIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHVzaW5nIFwiZGVueS1pbnNlY3VyZVwiJyxcbiAgICAgIHRpdGxlOiAncmVsYXhlZC1zZWN1cml0eSBjb25maWcnLFxuICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgYXBwaXVtQ2xpRGVzdDogJ3JlbGF4ZWRTZWN1cml0eUVuYWJsZWQnXG4gICAgfSxcbiAgfSxcbiAge1xuICAgIGFyZ1NwZWM6IHtcbiAgICAgIGFyZzogJ3Nlc3Npb24tb3ZlcnJpZGUnLFxuICAgICAgZGVmYXVsdFZhbHVlOiBmYWxzZSxcbiAgICAgIGRlc3Q6ICdzZXNzaW9uT3ZlcnJpZGUnLFxuICAgICAgZXh0TmFtZTogdW5kZWZpbmVkLFxuICAgICAgZXh0VHlwZTogdW5kZWZpbmVkLFxuICAgICAgbmFtZTogJ3Nlc3Npb24tb3ZlcnJpZGUnLFxuICAgICAgcmVmOiAnYXBwaXVtLmpzb24jL3Byb3BlcnRpZXMvc2VydmVyL3Byb3BlcnRpZXMvc2Vzc2lvbi1vdmVycmlkZScsXG4gICAgfSxcbiAgICBzY2hlbWE6IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgZGVzY3JpcHRpb246ICdFbmFibGVzIHNlc3Npb24gb3ZlcnJpZGUgKGNsb2JiZXJpbmcpJyxcbiAgICAgIHRpdGxlOiAnc2Vzc2lvbi1vdmVycmlkZSBjb25maWcnLFxuICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgIH0sXG4gIH0sXG4gIHtcbiAgICBhcmdTcGVjOiB7XG4gICAgICBhcmc6ICdzdHJpY3QtY2FwcycsXG4gICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgICAgZGVzdDogJ3N0cmljdENhcHMnLFxuICAgICAgZXh0TmFtZTogdW5kZWZpbmVkLFxuICAgICAgZXh0VHlwZTogdW5kZWZpbmVkLFxuICAgICAgbmFtZTogJ3N0cmljdC1jYXBzJyxcbiAgICAgIHJlZjogJ2FwcGl1bS5qc29uIy9wcm9wZXJ0aWVzL3NlcnZlci9wcm9wZXJ0aWVzL3N0cmljdC1jYXBzJyxcbiAgICB9LFxuICAgIHNjaGVtYToge1xuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0NhdXNlIHNlc3Npb25zIHRvIGZhaWwgaWYgZGVzaXJlZCBjYXBzIGFyZSBzZW50IGluIHRoYXQgQXBwaXVtIGRvZXMgbm90IHJlY29nbml6ZSBhcyB2YWxpZCBmb3IgdGhlIHNlbGVjdGVkIGRldmljZScsXG4gICAgICB0aXRsZTogJ3N0cmljdC1jYXBzIGNvbmZpZycsXG4gICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgfSxcbiAgfSxcbiAge1xuICAgIGFyZ1NwZWM6IHtcbiAgICAgIGFyZzogJ3RtcCcsXG4gICAgICBkZWZhdWx0VmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgIGRlc3Q6ICd0bXBEaXInLFxuICAgICAgZXh0TmFtZTogdW5kZWZpbmVkLFxuICAgICAgZXh0VHlwZTogdW5kZWZpbmVkLFxuICAgICAgbmFtZTogJ3RtcCcsXG4gICAgICByZWY6ICdhcHBpdW0uanNvbiMvcHJvcGVydGllcy9zZXJ2ZXIvcHJvcGVydGllcy90bXAnLFxuICAgIH0sXG4gICAgc2NoZW1hOiB7XG4gICAgICBhcHBpdW1DbGlEZXN0OiAndG1wRGlyJyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnQWJzb2x1dGUgcGF0aCB0byBkaXJlY3RvcnkgQXBwaXVtIGNhbiB1c2UgdG8gbWFuYWdlIHRlbXAgZmlsZXMuIERlZmF1bHRzIHRvIEM6XFxcXFdpbmRvd3NcXFxcVGVtcCBvbiBXaW5kb3dzIGFuZCAvdG1wIG90aGVyd2lzZS4nLFxuICAgICAgdGl0bGU6ICd0bXAgY29uZmlnJyxcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgIH0sXG4gIH0sXG4gIHtcbiAgICBhcmdTcGVjOiB7XG4gICAgICBhcmc6ICd0cmFjZS1kaXInLFxuICAgICAgZGVmYXVsdFZhbHVlOiB1bmRlZmluZWQsXG4gICAgICBkZXN0OiAndHJhY2VEaXInLFxuICAgICAgZXh0TmFtZTogdW5kZWZpbmVkLFxuICAgICAgZXh0VHlwZTogdW5kZWZpbmVkLFxuICAgICAgbmFtZTogJ3RyYWNlLWRpcicsXG4gICAgICByZWY6ICdhcHBpdW0uanNvbiMvcHJvcGVydGllcy9zZXJ2ZXIvcHJvcGVydGllcy90cmFjZS1kaXInLFxuICAgIH0sXG4gICAgc2NoZW1hOiB7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0Fic29sdXRlIHBhdGggdG8gZGlyZWN0b3J5IEFwcGl1bSBjYW4gdXNlIHRvIHNhdmUgaU9TIGluc3RydW1lbnQgdHJhY2VzOyBkZWZhdWx0cyB0byA8dG1wPi9hcHBpdW0taW5zdHJ1bWVudHMnLFxuICAgICAgdGl0bGU6ICd0cmFjZS1kaXIgY29uZmlnJyxcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgIH0sXG4gIH0sXG4gIHtcbiAgICBhcmdTcGVjOiB7XG4gICAgICBhcmc6ICd1c2UtZHJpdmVycycsXG4gICAgICBkZWZhdWx0VmFsdWU6IFtdLFxuICAgICAgZGVzdDogJ3VzZURyaXZlcnMnLFxuICAgICAgZXh0TmFtZTogdW5kZWZpbmVkLFxuICAgICAgZXh0VHlwZTogdW5kZWZpbmVkLFxuICAgICAgbmFtZTogJ3VzZS1kcml2ZXJzJyxcbiAgICAgIHJlZjogJ2FwcGl1bS5qc29uIy9wcm9wZXJ0aWVzL3NlcnZlci9wcm9wZXJ0aWVzL3VzZS1kcml2ZXJzJyxcbiAgICB9LFxuICAgIHNjaGVtYToge1xuICAgICAgYXBwaXVtQ2xpRGVzY3JpcHRpb246XG4gICAgICAgICdBIGxpc3Qgb2YgZHJpdmVycyB0byBhY3RpdmF0ZS4gQ2FuIGJlIGEgY29tbWEtZGVsaW1pdGVkIHN0cmluZyBvciBwYXRoIHRvIENTViBmaWxlLiBCeSBkZWZhdWx0LCBhbGwgaW5zdGFsbGVkIGRyaXZlcnMgd2lsbCBiZSBhY3RpdmF0ZWQuJyxcbiAgICAgIGRlZmF1bHQ6IFtdLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdBIGxpc3Qgb2YgZHJpdmVycyB0byBhY3RpdmF0ZS4gQnkgZGVmYXVsdCwgYWxsIGluc3RhbGxlZCBkcml2ZXJzIHdpbGwgYmUgYWN0aXZhdGVkLicsXG4gICAgICBpdGVtczoge3R5cGU6ICdzdHJpbmcnfSxcbiAgICAgIHRpdGxlOiAndXNlLWRyaXZlcnMgY29uZmlnJyxcbiAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICB1bmlxdWVJdGVtczogdHJ1ZSxcbiAgICB9LFxuICB9LFxuICB7XG4gICAgYXJnU3BlYzoge1xuICAgICAgYXJnOiAndXNlLXBsdWdpbnMnLFxuICAgICAgZGVmYXVsdFZhbHVlOiBbXSxcbiAgICAgIGRlc3Q6ICd1c2VQbHVnaW5zJyxcbiAgICAgIGV4dE5hbWU6IHVuZGVmaW5lZCxcbiAgICAgIGV4dFR5cGU6IHVuZGVmaW5lZCxcbiAgICAgIG5hbWU6ICd1c2UtcGx1Z2lucycsXG4gICAgICByZWY6ICdhcHBpdW0uanNvbiMvcHJvcGVydGllcy9zZXJ2ZXIvcHJvcGVydGllcy91c2UtcGx1Z2lucycsXG4gICAgfSxcbiAgICBzY2hlbWE6IHtcbiAgICAgIGFwcGl1bUNsaURlc2NyaXB0aW9uOlxuICAgICAgICAnQSBsaXN0IG9mIHBsdWdpbnMgdG8gYWN0aXZhdGUuIENhbiBiZSBhIGNvbW1hLWRlbGltaXRlZCBzdHJpbmcsIHBhdGggdG8gQ1NWIGZpbGUsIG9yIHRoZSBzdHJpbmcgXCJhbGxcIiB0byB1c2UgYWxsIGluc3RhbGxlZCBwbHVnaW5zLicsXG4gICAgICBkZWZhdWx0OiBbXSxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnQSBsaXN0IG9mIHBsdWdpbnMgdG8gYWN0aXZhdGUuIFRvIGFjdGl2YXRlIGFsbCBwbHVnaW5zLCB0aGUgdmFsdWUgc2hvdWxkIGJlIGFuIGFycmF5IHdpdGggYSBzaW5nbGUgaXRlbSBcImFsbFwiLicsXG4gICAgICBpdGVtczoge3R5cGU6ICdzdHJpbmcnfSxcbiAgICAgIHRpdGxlOiAndXNlLXBsdWdpbnMgY29uZmlnJyxcbiAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICB1bmlxdWVJdGVtczogdHJ1ZSxcbiAgICB9LFxuICB9LFxuICB7XG4gICAgYXJnU3BlYzoge1xuICAgICAgYXJnOiAnd2ViaG9vaycsXG4gICAgICBkZWZhdWx0VmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgIGRlc3Q6ICd3ZWJob29rJyxcbiAgICAgIGV4dE5hbWU6IHVuZGVmaW5lZCxcbiAgICAgIGV4dFR5cGU6IHVuZGVmaW5lZCxcbiAgICAgIG5hbWU6ICd3ZWJob29rJyxcbiAgICAgIHJlZjogJ2FwcGl1bS5qc29uIy9wcm9wZXJ0aWVzL3NlcnZlci9wcm9wZXJ0aWVzL3dlYmhvb2snLFxuICAgIH0sXG4gICAgc2NoZW1hOiB7XG4gICAgICAkY29tbWVudDpcbiAgICAgICAgJ1RoaXMgc2hvdWxkIHByb2JhYmx5IHVzZSBhIHVyaS10ZW1wbGF0ZSBmb3JtYXQgdG8gcmVzdHJpY3QgdGhlIHByb3RvY29sIHRvIGh0dHAvaHR0cHMnLFxuICAgICAgYXBwaXVtQ2xpQWxpYXNlczogWydHJ10sXG4gICAgICBkZXNjcmlwdGlvbjogJ0Fsc28gc2VuZCBsb2cgb3V0cHV0IHRvIHRoaXMgaHR0cCBsaXN0ZW5lcicsXG4gICAgICBmb3JtYXQ6ICd1cmknLFxuICAgICAgdGl0bGU6ICd3ZWJob29rIGNvbmZpZycsXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICB9LFxuICB9LFxuXTtcbiJdLCJmaWxlIjoidGVzdC9maXh0dXJlcy9mbGF0dGVuZWQtc2NoZW1hLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ require("source-map-support/register");
4
+
5
+ module.exports = {
6
+ type: 'object',
7
+ required: ['answer'],
8
+ properties: {
9
+ answer: {
10
+ type: 'number',
11
+ minimum: 0,
12
+ maximum: 100,
13
+ default: 50,
14
+ description: 'The answer to the Ultimate Question of Life, The Universe, and Everything'
15
+ }
16
+ }
17
+ };require('source-map-support').install();
18
+
19
+
20
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvZml4dHVyZXMvcGx1Z2luLnNjaGVtYS5qcyJdLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwidHlwZSIsInJlcXVpcmVkIiwicHJvcGVydGllcyIsImFuc3dlciIsIm1pbmltdW0iLCJtYXhpbXVtIiwiZGVmYXVsdCIsImRlc2NyaXB0aW9uIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUFBLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQjtBQUNmQyxFQUFBQSxJQUFJLEVBQUUsUUFEUztBQUVmQyxFQUFBQSxRQUFRLEVBQUUsQ0FBQyxRQUFELENBRks7QUFHZkMsRUFBQUEsVUFBVSxFQUFFO0FBQ1ZDLElBQUFBLE1BQU0sRUFBRTtBQUNOSCxNQUFBQSxJQUFJLEVBQUUsUUFEQTtBQUVOSSxNQUFBQSxPQUFPLEVBQUUsQ0FGSDtBQUdOQyxNQUFBQSxPQUFPLEVBQUUsR0FISDtBQUlOQyxNQUFBQSxPQUFPLEVBQUUsRUFKSDtBQUtOQyxNQUFBQSxXQUFXLEVBQ1Q7QUFOSTtBQURFO0FBSEcsQ0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgdHlwZTogJ29iamVjdCcsXG4gIHJlcXVpcmVkOiBbJ2Fuc3dlciddLFxuICBwcm9wZXJ0aWVzOiB7XG4gICAgYW5zd2VyOiB7XG4gICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgIG1pbmltdW06IDAsXG4gICAgICBtYXhpbXVtOiAxMDAsXG4gICAgICBkZWZhdWx0OiA1MCxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnVGhlIGFuc3dlciB0byB0aGUgVWx0aW1hdGUgUXVlc3Rpb24gb2YgTGlmZSwgVGhlIFVuaXZlcnNlLCBhbmQgRXZlcnl0aGluZycsXG4gICAgfSxcbiAgfSxcbn07XG4iXSwiZmlsZSI6InRlc3QvZml4dHVyZXMvcGx1Z2luLnNjaGVtYS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ require("source-map-support/register");
11
+
12
+ var _lodash = _interopRequireDefault(require("lodash"));
13
+
14
+ var _appiumConfigSchema = _interopRequireDefault(require("../../lib/schema/appium-config-schema"));
15
+
16
+ const {
17
+ default: fakeDriverSchema
18
+ } = require('@appium/fake-driver/build/lib/fake-driver-schema');
19
+
20
+ const schema = _lodash.default.cloneDeep(_appiumConfigSchema.default);
21
+
22
+ _lodash.default.set(schema, 'properties.driver.properties.fake', fakeDriverSchema);
23
+
24
+ var _default = schema;
25
+ exports.default = _default;require('source-map-support').install();
26
+
27
+
28
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvZml4dHVyZXMvc2NoZW1hLXdpdGgtZXh0ZW5zaW9ucy5qcyJdLCJuYW1lcyI6WyJkZWZhdWx0IiwiZmFrZURyaXZlclNjaGVtYSIsInJlcXVpcmUiLCJzY2hlbWEiLCJfIiwiY2xvbmVEZWVwIiwiYXBwaXVtQ29uZmlnU2NoZW1hIiwic2V0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUNBOztBQUNBOztBQUlBLE1BQU07QUFBQ0EsRUFBQUEsT0FBTyxFQUFFQztBQUFWLElBQThCQyxPQUFPLENBQUMsa0RBQUQsQ0FBM0M7O0FBRUEsTUFBTUMsTUFBTSxHQUFHQyxnQkFBRUMsU0FBRixDQUFZQywyQkFBWixDQUFmOztBQUNBRixnQkFBRUcsR0FBRixDQUFNSixNQUFOLEVBQWMsbUNBQWQsRUFBbURGLGdCQUFuRDs7ZUFFZUUsTSIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRoaXMgZml4dHVyZSBjb21iaW5lcyB0aGUgYmFzZSBjb25maWcgc2NoZW1hIGFuZCB0aGUgZmFrZS1kcml2ZXIgc2NoZW1hLCBhcyB3b3VsZCBoYXBwZW4gaW4gYSByZWFsIHVzZSBjYXNlLlxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBhcHBpdW1Db25maWdTY2hlbWEgZnJvbSAnLi4vLi4vbGliL3NjaGVtYS9hcHBpdW0tY29uZmlnLXNjaGVtYSc7XG5cbi8vIHRoaXMgbXVzdCBiZSBhIGByZXF1aXJlYCBiZWNhdXNlIGJhYmVsIHdpbGwgbm90IGNvbXBpbGUgYG5vZGVfbW9kdWxlc2Bcbi8vIFRPT0Q6IGNvbnNpZGVyIGp1c3QgY29weWluZyB0aGlzIGludG8gZml4dHVyZXMgc28gd2UgY2FuIG1ha2UgaXQgRVNNXG5jb25zdCB7ZGVmYXVsdDogZmFrZURyaXZlclNjaGVtYX0gPSByZXF1aXJlKCdAYXBwaXVtL2Zha2UtZHJpdmVyL2J1aWxkL2xpYi9mYWtlLWRyaXZlci1zY2hlbWEnKTtcblxuY29uc3Qgc2NoZW1hID0gXy5jbG9uZURlZXAoYXBwaXVtQ29uZmlnU2NoZW1hKTtcbl8uc2V0KHNjaGVtYSwgJ3Byb3BlcnRpZXMuZHJpdmVyLnByb3BlcnRpZXMuZmFrZScsIGZha2VEcml2ZXJTY2hlbWEpO1xuXG5leHBvcnQgZGVmYXVsdCBzY2hlbWE7XG4iXSwiZmlsZSI6InRlc3QvZml4dHVyZXMvc2NoZW1hLXdpdGgtZXh0ZW5zaW9ucy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9