@appium/base-driver 8.2.2 → 8.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/lib/basedriver/capabilities.js +3 -1
- package/build/lib/basedriver/commands/find.js +4 -11
- package/build/lib/basedriver/commands/log.js +3 -6
- package/build/lib/basedriver/commands/session.js +18 -27
- package/build/lib/basedriver/commands/settings.js +4 -8
- package/build/lib/basedriver/commands/timeout.js +10 -15
- package/build/lib/basedriver/device-settings.js +14 -2
- package/build/lib/basedriver/driver.js +25 -23
- package/build/lib/basedriver/helpers.js +140 -84
- package/build/lib/express/express-logging.js +2 -2
- package/build/lib/express/idempotency.js +2 -2
- package/build/lib/helpers/capabilities.js +39 -0
- package/build/lib/index.js +7 -7
- package/build/lib/jsonwp-proxy/protocol-converter.js +19 -16
- package/build/lib/jsonwp-proxy/proxy.js +20 -16
- package/build/lib/protocol/errors.js +4 -2
- package/build/lib/protocol/helpers.js +3 -20
- package/build/lib/protocol/protocol.js +44 -45
- package/build/lib/protocol/routes.js +67 -1
- package/build/test/basedriver/capabilities-specs.js +43 -1
- package/build/test/basedriver/capability-specs.js +126 -167
- package/build/test/basedriver/commands/log-specs.js +12 -5
- package/build/test/basedriver/driver-tests.js +11 -14
- package/build/test/basedriver/helpers-specs.js +5 -1
- package/build/test/basedriver/timeout-specs.js +7 -9
- package/build/test/express/server-e2e-specs.js +10 -5
- package/build/test/express/server-specs.js +22 -16
- package/build/test/express/static-specs.js +10 -5
- package/build/test/jsonwp-proxy/proxy-e2e-specs.js +1 -2
- package/build/test/jsonwp-proxy/proxy-specs.js +1 -6
- package/build/test/protocol/fake-driver.js +12 -15
- package/build/test/protocol/protocol-e2e-specs.js +49 -103
- package/build/test/protocol/routes-specs.js +2 -2
- package/lib/basedriver/capabilities.js +3 -0
- package/lib/basedriver/commands/find.js +3 -6
- package/lib/basedriver/commands/log.js +2 -4
- package/lib/basedriver/commands/session.js +21 -22
- package/lib/basedriver/commands/settings.js +3 -5
- package/lib/basedriver/commands/timeout.js +9 -10
- package/lib/basedriver/device-settings.js +10 -1
- package/lib/basedriver/driver.js +29 -16
- package/lib/basedriver/helpers.js +201 -83
- package/lib/express/express-logging.js +1 -1
- package/lib/express/idempotency.js +1 -1
- package/lib/helpers/capabilities.js +25 -0
- package/lib/index.js +6 -4
- package/lib/jsonwp-proxy/protocol-converter.js +15 -18
- package/lib/jsonwp-proxy/proxy.js +17 -15
- package/lib/protocol/errors.js +1 -1
- package/lib/protocol/helpers.js +5 -25
- package/lib/protocol/protocol.js +43 -54
- package/lib/protocol/routes.js +60 -1
- package/package.json +29 -22
- package/test/basedriver/capabilities-specs.js +34 -2
- package/test/basedriver/capability-specs.js +120 -146
- package/test/basedriver/commands/log-specs.js +12 -3
- package/test/basedriver/driver-tests.js +12 -7
- package/test/basedriver/helpers-specs.js +4 -0
- package/test/basedriver/timeout-specs.js +6 -11
- package/build/lib/protocol/sessions-cache.js +0 -88
- package/lib/protocol/sessions-cache.js +0 -74
|
@@ -4,11 +4,13 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
|
|
5
5
|
require("source-map-support/register");
|
|
6
6
|
|
|
7
|
+
var _bluebird = _interopRequireDefault(require("bluebird"));
|
|
8
|
+
|
|
7
9
|
var _lib = _interopRequireWildcard(require("../../lib"));
|
|
8
10
|
|
|
9
11
|
var _logger = _interopRequireDefault(require("../../lib/basedriver/logger"));
|
|
10
12
|
|
|
11
|
-
var _sinon =
|
|
13
|
+
var _sinon = require("sinon");
|
|
12
14
|
|
|
13
15
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
14
16
|
|
|
@@ -16,37 +18,27 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
16
18
|
|
|
17
19
|
describe('Desired Capabilities', function () {
|
|
18
20
|
let d;
|
|
21
|
+
let sandbox;
|
|
19
22
|
beforeEach(function () {
|
|
20
23
|
d = new _lib.default();
|
|
21
|
-
|
|
22
|
-
|
|
24
|
+
sandbox = (0, _sinon.createSandbox)();
|
|
25
|
+
sandbox.spy(d.log, 'warn');
|
|
26
|
+
sandbox.spy(_logger.default, 'warn');
|
|
23
27
|
});
|
|
24
28
|
afterEach(function () {
|
|
25
|
-
|
|
29
|
+
sandbox.restore();
|
|
26
30
|
});
|
|
27
31
|
it('should require platformName and deviceName', async function () {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
}
|
|
31
|
-
e.should.be.instanceof(_lib.errors.SessionNotCreatedError);
|
|
32
|
-
e.message.should.contain('platformName');
|
|
33
|
-
return;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
should.fail('error should have been thrown');
|
|
32
|
+
await d.createSession({
|
|
33
|
+
firstMatch: [{}]
|
|
34
|
+
}).should.eventually.be.rejectedWith(_lib.errors.SessionNotCreatedError, /platformName/);
|
|
37
35
|
});
|
|
38
36
|
it('should require platformName', async function () {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
'deviceName': 'Delorean'
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
e.should.be.instanceof(_lib.errors.SessionNotCreatedError);
|
|
45
|
-
e.message.should.contain('platformName');
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
should.fail('error should have been thrown');
|
|
37
|
+
await d.createSession({
|
|
38
|
+
alwaysMatch: {
|
|
39
|
+
'appium:deviceName': 'Delorean'
|
|
40
|
+
}
|
|
41
|
+
}).should.eventually.be.rejectedWith(_lib.errors.SessionNotCreatedError, /platformName/);
|
|
50
42
|
});
|
|
51
43
|
it('should not care about cap order', async function () {
|
|
52
44
|
await d.createSession(null, null, {
|
|
@@ -54,7 +46,7 @@ describe('Desired Capabilities', function () {
|
|
|
54
46
|
'appium:deviceName': 'Delorean',
|
|
55
47
|
platformName: 'iOS'
|
|
56
48
|
}
|
|
57
|
-
});
|
|
49
|
+
}).should.eventually.be.fulfilled;
|
|
58
50
|
});
|
|
59
51
|
it('should check required caps which are added to driver', async function () {
|
|
60
52
|
d.desiredCapConstraints = {
|
|
@@ -67,22 +59,12 @@ describe('Desired Capabilities', function () {
|
|
|
67
59
|
inclusion: ['Delorean', 'Reventon']
|
|
68
60
|
}
|
|
69
61
|
};
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
|
-
} catch (e) {
|
|
79
|
-
e.should.be.instanceof(_lib.errors.SessionNotCreatedError);
|
|
80
|
-
e.message.should.contain('necessary');
|
|
81
|
-
e.message.should.contain('proper');
|
|
82
|
-
return;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
should.fail('error should have been thrown');
|
|
62
|
+
await d.createSession(null, null, {
|
|
63
|
+
alwaysMatch: {
|
|
64
|
+
'platformName': 'iOS',
|
|
65
|
+
'appium:deviceName': 'Delorean'
|
|
66
|
+
}
|
|
67
|
+
}).should.eventually.be.rejectedWith(_lib.errors.SessionNotCreatedError, /necessary.*proper/);
|
|
86
68
|
});
|
|
87
69
|
it('should check added required caps in addition to base', async function () {
|
|
88
70
|
d.desiredCapConstraints = {
|
|
@@ -95,20 +77,11 @@ describe('Desired Capabilities', function () {
|
|
|
95
77
|
inclusion: ['Delorean', 'Reventon']
|
|
96
78
|
}
|
|
97
79
|
};
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
}
|
|
104
|
-
});
|
|
105
|
-
} catch (e) {
|
|
106
|
-
e.should.be.instanceof(_lib.errors.SessionNotCreatedError);
|
|
107
|
-
e.message.should.contain('platformName');
|
|
108
|
-
return;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
should.fail('error should have been thrown');
|
|
80
|
+
await d.createSession(null, null, {
|
|
81
|
+
alwaysMatch: {
|
|
82
|
+
'appium:necessary': 'yup'
|
|
83
|
+
}
|
|
84
|
+
}).should.eventually.be.rejectedWith(_lib.errors.SessionNotCreatedError, /platformName/);
|
|
112
85
|
});
|
|
113
86
|
it('should accept extra capabilities', async function () {
|
|
114
87
|
await d.createSession(null, null, {
|
|
@@ -118,7 +91,7 @@ describe('Desired Capabilities', function () {
|
|
|
118
91
|
'appium:extra': 'cheese',
|
|
119
92
|
'appium:hold the': 'sauce'
|
|
120
93
|
}
|
|
121
|
-
});
|
|
94
|
+
}).should.eventually.be.fulfilled;
|
|
122
95
|
});
|
|
123
96
|
it('should log the use of extra caps', async function () {
|
|
124
97
|
this.timeout(500);
|
|
@@ -130,24 +103,15 @@ describe('Desired Capabilities', function () {
|
|
|
130
103
|
'appium:hold the': 'sauce'
|
|
131
104
|
}
|
|
132
105
|
});
|
|
133
|
-
|
|
134
|
-
_logger.default.warn.callCount.should.be.above(0);
|
|
106
|
+
d.log.warn.should.have.been.called;
|
|
135
107
|
});
|
|
136
108
|
it('should be sensitive to the case of caps', async function () {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
});
|
|
144
|
-
} catch (e) {
|
|
145
|
-
e.should.be.instanceof(_lib.errors.SessionNotCreatedError);
|
|
146
|
-
e.message.should.contain('platformName');
|
|
147
|
-
return;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
should.fail('error should have been thrown');
|
|
109
|
+
await d.createSession(null, null, {
|
|
110
|
+
alwaysMatch: {
|
|
111
|
+
'platformname': 'iOS',
|
|
112
|
+
'appium:deviceName': 'Delorean'
|
|
113
|
+
}
|
|
114
|
+
}).should.eventually.be.rejectedWith(_lib.errors.SessionNotCreatedError, /platformName/);
|
|
151
115
|
});
|
|
152
116
|
describe('boolean capabilities', function () {
|
|
153
117
|
it('should allow a string "false"', async function () {
|
|
@@ -158,9 +122,7 @@ describe('Desired Capabilities', function () {
|
|
|
158
122
|
'appium:noReset': 'false'
|
|
159
123
|
}
|
|
160
124
|
});
|
|
161
|
-
|
|
162
|
-
_logger.default.warn.callCount.should.be.above(0);
|
|
163
|
-
|
|
125
|
+
d.log.warn.should.have.been.called;
|
|
164
126
|
let sessions = await d.getSessions();
|
|
165
127
|
sessions[0].capabilities.noReset.should.eql(false);
|
|
166
128
|
});
|
|
@@ -172,9 +134,7 @@ describe('Desired Capabilities', function () {
|
|
|
172
134
|
'appium:noReset': 'true'
|
|
173
135
|
}
|
|
174
136
|
});
|
|
175
|
-
|
|
176
|
-
_logger.default.warn.callCount.should.be.above(0);
|
|
177
|
-
|
|
137
|
+
d.log.warn.should.have.been.called;
|
|
178
138
|
let sessions = await d.getSessions();
|
|
179
139
|
sessions[0].capabilities.noReset.should.eql(true);
|
|
180
140
|
});
|
|
@@ -186,9 +146,7 @@ describe('Desired Capabilities', function () {
|
|
|
186
146
|
'appium:language': 'true'
|
|
187
147
|
}
|
|
188
148
|
});
|
|
189
|
-
|
|
190
|
-
_logger.default.warn.callCount.should.equal(0);
|
|
191
|
-
|
|
149
|
+
d.log.warn.should.not.have.been.called;
|
|
192
150
|
let sessions = await d.getSessions();
|
|
193
151
|
sessions[0].capabilities.language.should.eql('true');
|
|
194
152
|
});
|
|
@@ -202,9 +160,7 @@ describe('Desired Capabilities', function () {
|
|
|
202
160
|
'appium:newCommandTimeout': '1'
|
|
203
161
|
}
|
|
204
162
|
});
|
|
205
|
-
|
|
206
|
-
_logger.default.warn.callCount.should.be.above(0);
|
|
207
|
-
|
|
163
|
+
d.log.warn.should.have.been.called;
|
|
208
164
|
let sessions = await d.getSessions();
|
|
209
165
|
sessions[0].capabilities.newCommandTimeout.should.eql(1);
|
|
210
166
|
});
|
|
@@ -216,9 +172,7 @@ describe('Desired Capabilities', function () {
|
|
|
216
172
|
'appium:newCommandTimeout': '1.1'
|
|
217
173
|
}
|
|
218
174
|
});
|
|
219
|
-
|
|
220
|
-
_logger.default.warn.callCount.should.be.above(0);
|
|
221
|
-
|
|
175
|
+
d.log.warn.should.have.been.called;
|
|
222
176
|
let sessions = await d.getSessions();
|
|
223
177
|
sessions[0].capabilities.newCommandTimeout.should.eql(1.1);
|
|
224
178
|
});
|
|
@@ -230,30 +184,20 @@ describe('Desired Capabilities', function () {
|
|
|
230
184
|
'appium:language': '1'
|
|
231
185
|
}
|
|
232
186
|
});
|
|
233
|
-
|
|
234
|
-
_logger.default.warn.callCount.should.equal(0);
|
|
235
|
-
|
|
187
|
+
d.log.warn.should.not.have.been.called;
|
|
236
188
|
let sessions = await d.getSessions();
|
|
237
189
|
sessions[0].capabilities.language.should.eql('1');
|
|
238
190
|
});
|
|
239
191
|
});
|
|
240
192
|
it('should error if objects in caps', async function () {
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
'
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
});
|
|
250
|
-
} catch (e) {
|
|
251
|
-
e.should.be.instanceof(_lib.errors.SessionNotCreatedError);
|
|
252
|
-
e.message.should.contain('platformName');
|
|
253
|
-
return;
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
should.fail('error should have been thrown');
|
|
193
|
+
await d.createSession(null, null, {
|
|
194
|
+
alwaysMatch: {
|
|
195
|
+
'platformName': {
|
|
196
|
+
a: 'iOS'
|
|
197
|
+
},
|
|
198
|
+
'appium:deviceName': 'Delorean'
|
|
199
|
+
}
|
|
200
|
+
}).should.eventually.be.rejectedWith(_lib.errors.SessionNotCreatedError, /platformName/i);
|
|
257
201
|
});
|
|
258
202
|
it('should check for deprecated caps', async function () {
|
|
259
203
|
this.timeout(500);
|
|
@@ -269,8 +213,7 @@ describe('Desired Capabilities', function () {
|
|
|
269
213
|
'appium:lynx-version': 5
|
|
270
214
|
}
|
|
271
215
|
});
|
|
272
|
-
|
|
273
|
-
_logger.default.warn.callCount.should.be.above(0);
|
|
216
|
+
_logger.default.warn.should.have.been.called;
|
|
274
217
|
});
|
|
275
218
|
it('should not warn if deprecated=false', async function () {
|
|
276
219
|
this.timeout(500);
|
|
@@ -286,8 +229,7 @@ describe('Desired Capabilities', function () {
|
|
|
286
229
|
'appium:lynx-version': 5
|
|
287
230
|
}
|
|
288
231
|
});
|
|
289
|
-
|
|
290
|
-
_logger.default.warn.callCount.should.equal(0);
|
|
232
|
+
d.log.warn.should.not.have.been.called;
|
|
291
233
|
});
|
|
292
234
|
it('should not validate against null/undefined caps', async function () {
|
|
293
235
|
d.desiredCapConstraints = {
|
|
@@ -295,14 +237,19 @@ describe('Desired Capabilities', function () {
|
|
|
295
237
|
isString: true
|
|
296
238
|
}
|
|
297
239
|
};
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
240
|
+
|
|
241
|
+
try {
|
|
242
|
+
await d.createSession(null, null, {
|
|
243
|
+
alwaysMatch: {
|
|
244
|
+
platformName: 'iOS',
|
|
245
|
+
'appium:deviceName': 'Dumb',
|
|
246
|
+
'appium:foo': null
|
|
247
|
+
}
|
|
248
|
+
});
|
|
249
|
+
} finally {
|
|
250
|
+
await d.deleteSession();
|
|
251
|
+
}
|
|
252
|
+
|
|
306
253
|
await d.createSession(null, null, {
|
|
307
254
|
alwaysMatch: {
|
|
308
255
|
platformName: 'iOS',
|
|
@@ -310,22 +257,30 @@ describe('Desired Capabilities', function () {
|
|
|
310
257
|
'appium:foo': 1
|
|
311
258
|
}
|
|
312
259
|
}).should.eventually.be.rejectedWith(/'foo' must be of type string/);
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
260
|
+
|
|
261
|
+
try {
|
|
262
|
+
await d.createSession(null, null, {
|
|
263
|
+
alwaysMatch: {
|
|
264
|
+
platformName: 'iOS',
|
|
265
|
+
'appium:deviceName': 'Dumb',
|
|
266
|
+
'appium:foo': undefined
|
|
267
|
+
}
|
|
268
|
+
});
|
|
269
|
+
} finally {
|
|
270
|
+
await d.deleteSession();
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
try {
|
|
274
|
+
await d.createSession(null, null, {
|
|
275
|
+
alwaysMatch: {
|
|
276
|
+
platformName: 'iOS',
|
|
277
|
+
'appium:deviceName': 'Dumb',
|
|
278
|
+
'appium:foo': ''
|
|
279
|
+
}
|
|
280
|
+
});
|
|
281
|
+
} finally {
|
|
282
|
+
await d.deleteSession();
|
|
283
|
+
}
|
|
329
284
|
});
|
|
330
285
|
it('should still validate null/undefined/empty caps whose presence is required', async function () {
|
|
331
286
|
d.desiredCapConstraints = {
|
|
@@ -340,25 +295,33 @@ describe('Desired Capabilities', function () {
|
|
|
340
295
|
'appium:foo': null
|
|
341
296
|
}
|
|
342
297
|
}).should.eventually.be.rejectedWith(/blank/);
|
|
343
|
-
await d.createSession(null,
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
298
|
+
await d.createSession(null, {
|
|
299
|
+
alwaysMatch: {
|
|
300
|
+
platformName: 'iOS',
|
|
301
|
+
'appium:deviceName': 'Dumb',
|
|
302
|
+
'appium:foo': ''
|
|
303
|
+
}
|
|
347
304
|
}).should.eventually.be.rejectedWith(/blank/);
|
|
348
|
-
await d.createSession(
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
305
|
+
await d.createSession({
|
|
306
|
+
firstMatch: [{
|
|
307
|
+
platformName: 'iOS',
|
|
308
|
+
'appium:deviceName': 'Dumb',
|
|
309
|
+
'appium:foo': {}
|
|
310
|
+
}]
|
|
352
311
|
}).should.eventually.be.rejectedWith(/blank/);
|
|
353
|
-
await d.createSession(
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
312
|
+
await d.createSession({
|
|
313
|
+
alwaysMatch: {
|
|
314
|
+
platformName: 'iOS',
|
|
315
|
+
'appium:deviceName': 'Dumb',
|
|
316
|
+
'appium:foo': []
|
|
317
|
+
}
|
|
357
318
|
}).should.eventually.be.rejectedWith(/blank/);
|
|
358
|
-
await d.createSession(
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
319
|
+
await d.createSession({
|
|
320
|
+
alwaysMatch: {
|
|
321
|
+
platformName: 'iOS',
|
|
322
|
+
'appium:deviceName': 'Dumb',
|
|
323
|
+
'appium:foo': ' '
|
|
324
|
+
}
|
|
362
325
|
}).should.eventually.be.rejectedWith(/blank/);
|
|
363
326
|
});
|
|
364
327
|
describe('w3c', function () {
|
|
@@ -370,27 +333,23 @@ describe('Desired Capabilities', function () {
|
|
|
370
333
|
},
|
|
371
334
|
firstMatch: [{}]
|
|
372
335
|
});
|
|
373
|
-
sessionId.should.exist;
|
|
374
|
-
caps.should.eql({
|
|
375
|
-
platformName: 'iOS',
|
|
376
|
-
deviceName: 'Delorean'
|
|
377
|
-
});
|
|
378
|
-
await d.deleteSession();
|
|
379
|
-
});
|
|
380
|
-
it('should raise an error if w3c capabilities is not a plain JSON object', async function () {
|
|
381
|
-
for (const val of [true, 'string', [], 100]) {
|
|
382
|
-
try {
|
|
383
|
-
await d.createSession(null, null, val);
|
|
384
|
-
} catch (e) {
|
|
385
|
-
e.should.be.instanceof(_lib.errors.SessionNotCreatedError);
|
|
386
|
-
continue;
|
|
387
|
-
}
|
|
388
336
|
|
|
389
|
-
|
|
337
|
+
try {
|
|
338
|
+
sessionId.should.exist;
|
|
339
|
+
caps.should.eql({
|
|
340
|
+
platformName: 'iOS',
|
|
341
|
+
deviceName: 'Delorean'
|
|
342
|
+
});
|
|
343
|
+
} finally {
|
|
344
|
+
await d.deleteSession();
|
|
390
345
|
}
|
|
391
346
|
});
|
|
347
|
+
it('should raise an error if w3c capabilities is not a plain JSON object', async function () {
|
|
348
|
+
const testValues = [true, 'string', [], 100];
|
|
349
|
+
await _bluebird.default.map(testValues, val => d.createSession(null, null, val).should.eventually.be.rejectedWith(_lib.errors.SessionNotCreatedError));
|
|
350
|
+
});
|
|
392
351
|
});
|
|
393
352
|
});require('source-map-support').install();
|
|
394
353
|
|
|
395
354
|
|
|
396
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvYmFzZWRyaXZlci9jYXBhYmlsaXR5LXNwZWNzLmpzIl0sIm5hbWVzIjpbImRlc2NyaWJlIiwiZCIsImJlZm9yZUVhY2giLCJCYXNlRHJpdmVyIiwic2lub24iLCJzcHkiLCJsb2dnZXIiLCJhZnRlckVhY2giLCJ3YXJuIiwicmVzdG9yZSIsIml0IiwiY3JlYXRlU2Vzc2lvbiIsImUiLCJzaG91bGQiLCJiZSIsImluc3RhbmNlb2YiLCJlcnJvcnMiLCJTZXNzaW9uTm90Q3JlYXRlZEVycm9yIiwibWVzc2FnZSIsImNvbnRhaW4iLCJmYWlsIiwiYWx3YXlzTWF0Y2giLCJwbGF0Zm9ybU5hbWUiLCJkZXNpcmVkQ2FwQ29uc3RyYWludHMiLCJuZWNlc3NhcnkiLCJwcmVzZW5jZSIsInByb3BlciIsImlzU3RyaW5nIiwiaW5jbHVzaW9uIiwidGltZW91dCIsImNhbGxDb3VudCIsImFib3ZlIiwic2Vzc2lvbnMiLCJnZXRTZXNzaW9ucyIsImNhcGFiaWxpdGllcyIsIm5vUmVzZXQiLCJlcWwiLCJlcXVhbCIsImxhbmd1YWdlIiwibmV3Q29tbWFuZFRpbWVvdXQiLCJhIiwiZGVwcmVjYXRlZCIsImRlbGV0ZVNlc3Npb24iLCJldmVudHVhbGx5IiwicmVqZWN0ZWRXaXRoIiwidW5kZWZpbmVkIiwiZm9vIiwic2Vzc2lvbklkIiwiY2FwcyIsImZpcnN0TWF0Y2giLCJleGlzdCIsImRldmljZU5hbWUiLCJ2YWwiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOztBQUNBOztBQUNBOzs7Ozs7QUFHQUEsUUFBUSxDQUFDLHNCQUFELEVBQXlCLFlBQVk7QUFDM0MsTUFBSUMsQ0FBSjtBQUVBQyxFQUFBQSxVQUFVLENBQUMsWUFBWTtBQUNyQkQsSUFBQUEsQ0FBQyxHQUFHLElBQUlFLFlBQUosRUFBSjs7QUFDQUMsbUJBQU1DLEdBQU4sQ0FBVUMsZUFBVixFQUFrQixNQUFsQjtBQUNELEdBSFMsQ0FBVjtBQUtBQyxFQUFBQSxTQUFTLENBQUMsWUFBWTtBQUNwQkQsb0JBQU9FLElBQVAsQ0FBWUMsT0FBWjtBQUNELEdBRlEsQ0FBVDtBQUlBQyxFQUFBQSxFQUFFLENBQUMsNENBQUQsRUFBK0Msa0JBQWtCO0FBQ2pFLFFBQUk7QUFDRixZQUFNVCxDQUFDLENBQUNVLGFBQUYsQ0FBZ0IsSUFBaEIsRUFBc0IsSUFBdEIsRUFBNEIsRUFBNUIsQ0FBTjtBQUNELEtBRkQsQ0FFRSxPQUFPQyxDQUFQLEVBQVU7QUFDVkEsTUFBQUEsQ0FBQyxDQUFDQyxNQUFGLENBQVNDLEVBQVQsQ0FBWUMsVUFBWixDQUF1QkMsWUFBT0Msc0JBQTlCO0FBQ0FMLE1BQUFBLENBQUMsQ0FBQ00sT0FBRixDQUFVTCxNQUFWLENBQWlCTSxPQUFqQixDQUF5QixjQUF6QjtBQUNBO0FBQ0Q7O0FBRUROLElBQUFBLE1BQU0sQ0FBQ08sSUFBUCxDQUFZLCtCQUFaO0FBQ0QsR0FWQyxDQUFGO0FBYUFWLEVBQUFBLEVBQUUsQ0FBQyw2QkFBRCxFQUFnQyxrQkFBa0I7QUFDbEQsUUFBSTtBQUNGLFlBQU1ULENBQUMsQ0FBQ1UsYUFBRixDQUFnQixJQUFoQixFQUFzQixJQUF0QixFQUE0QjtBQUFDLHNCQUFjO0FBQWYsT0FBNUIsQ0FBTjtBQUNELEtBRkQsQ0FFRSxPQUFPQyxDQUFQLEVBQVU7QUFDVkEsTUFBQUEsQ0FBQyxDQUFDQyxNQUFGLENBQVNDLEVBQVQsQ0FBWUMsVUFBWixDQUF1QkMsWUFBT0Msc0JBQTlCO0FBQ0FMLE1BQUFBLENBQUMsQ0FBQ00sT0FBRixDQUFVTCxNQUFWLENBQWlCTSxPQUFqQixDQUF5QixjQUF6QjtBQUNBO0FBQ0Q7O0FBRUROLElBQUFBLE1BQU0sQ0FBQ08sSUFBUCxDQUFZLCtCQUFaO0FBQ0QsR0FWQyxDQUFGO0FBWUFWLEVBQUFBLEVBQUUsQ0FBQyxpQ0FBRCxFQUFvQyxrQkFBa0I7QUFFdEQsVUFBTVQsQ0FBQyxDQUFDVSxhQUFGLENBQWdCLElBQWhCLEVBQXNCLElBQXRCLEVBQTRCO0FBQ2hDVSxNQUFBQSxXQUFXLEVBQUU7QUFDWCw2QkFBcUIsVUFEVjtBQUVYQyxRQUFBQSxZQUFZLEVBQUU7QUFGSDtBQURtQixLQUE1QixDQUFOO0FBT0QsR0FUQyxDQUFGO0FBV0FaLEVBQUFBLEVBQUUsQ0FBQyxzREFBRCxFQUF5RCxrQkFBa0I7QUFDM0VULElBQUFBLENBQUMsQ0FBQ3NCLHFCQUFGLEdBQTBCO0FBQ3hCQyxNQUFBQSxTQUFTLEVBQUU7QUFDVEMsUUFBQUEsUUFBUSxFQUFFO0FBREQsT0FEYTtBQUl4QkMsTUFBQUEsTUFBTSxFQUFFO0FBQ05ELFFBQUFBLFFBQVEsRUFBRSxJQURKO0FBRU5FLFFBQUFBLFFBQVEsRUFBRSxJQUZKO0FBR05DLFFBQUFBLFNBQVMsRUFBRSxDQUFDLFVBQUQsRUFBYSxVQUFiO0FBSEw7QUFKZ0IsS0FBMUI7O0FBV0EsUUFBSTtBQUNGLFlBQU0zQixDQUFDLENBQUNVLGFBQUYsQ0FBZ0IsSUFBaEIsRUFBc0IsSUFBdEIsRUFBNEI7QUFDaENVLFFBQUFBLFdBQVcsRUFBRTtBQUNYLDBCQUFnQixLQURMO0FBRVgsK0JBQXFCO0FBRlY7QUFEbUIsT0FBNUIsQ0FBTjtBQU1ELEtBUEQsQ0FPRSxPQUFPVCxDQUFQLEVBQVU7QUFDVkEsTUFBQUEsQ0FBQyxDQUFDQyxNQUFGLENBQVNDLEVBQVQsQ0FBWUMsVUFBWixDQUF1QkMsWUFBT0Msc0JBQTlCO0FBQ0FMLE1BQUFBLENBQUMsQ0FBQ00sT0FBRixDQUFVTCxNQUFWLENBQWlCTSxPQUFqQixDQUF5QixXQUF6QjtBQUNBUCxNQUFBQSxDQUFDLENBQUNNLE9BQUYsQ0FBVUwsTUFBVixDQUFpQk0sT0FBakIsQ0FBeUIsUUFBekI7QUFDQTtBQUNEOztBQUVETixJQUFBQSxNQUFNLENBQUNPLElBQVAsQ0FBWSwrQkFBWjtBQUNELEdBM0JDLENBQUY7QUE2QkFWLEVBQUFBLEVBQUUsQ0FBQyxzREFBRCxFQUF5RCxrQkFBa0I7QUFDM0VULElBQUFBLENBQUMsQ0FBQ3NCLHFCQUFGLEdBQTBCO0FBQ3hCQyxNQUFBQSxTQUFTLEVBQUU7QUFDVEMsUUFBQUEsUUFBUSxFQUFFO0FBREQsT0FEYTtBQUl4QkMsTUFBQUEsTUFBTSxFQUFFO0FBQ05ELFFBQUFBLFFBQVEsRUFBRSxJQURKO0FBRU5FLFFBQUFBLFFBQVEsRUFBRSxJQUZKO0FBR05DLFFBQUFBLFNBQVMsRUFBRSxDQUFDLFVBQUQsRUFBYSxVQUFiO0FBSEw7QUFKZ0IsS0FBMUI7O0FBV0EsUUFBSTtBQUNGLFlBQU0zQixDQUFDLENBQUNVLGFBQUYsQ0FBZ0IsSUFBaEIsRUFBc0IsSUFBdEIsRUFBNEI7QUFDaENVLFFBQUFBLFdBQVcsRUFBRTtBQUNYLDhCQUFvQjtBQURUO0FBRG1CLE9BQTVCLENBQU47QUFLRCxLQU5ELENBTUUsT0FBT1QsQ0FBUCxFQUFVO0FBQ1ZBLE1BQUFBLENBQUMsQ0FBQ0MsTUFBRixDQUFTQyxFQUFULENBQVlDLFVBQVosQ0FBdUJDLFlBQU9DLHNCQUE5QjtBQUNBTCxNQUFBQSxDQUFDLENBQUNNLE9BQUYsQ0FBVUwsTUFBVixDQUFpQk0sT0FBakIsQ0FBeUIsY0FBekI7QUFDQTtBQUNEOztBQUVETixJQUFBQSxNQUFNLENBQUNPLElBQVAsQ0FBWSwrQkFBWjtBQUNELEdBekJDLENBQUY7QUEyQkFWLEVBQUFBLEVBQUUsQ0FBQyxrQ0FBRCxFQUFxQyxrQkFBa0I7QUFDdkQsVUFBTVQsQ0FBQyxDQUFDVSxhQUFGLENBQWdCLElBQWhCLEVBQXNCLElBQXRCLEVBQTRCO0FBQ2hDVSxNQUFBQSxXQUFXLEVBQUU7QUFDWCx3QkFBZ0IsS0FETDtBQUVYLDZCQUFxQixVQUZWO0FBR1gsd0JBQWdCLFFBSEw7QUFJWCwyQkFBbUI7QUFKUjtBQURtQixLQUE1QixDQUFOO0FBUUQsR0FUQyxDQUFGO0FBV0FYLEVBQUFBLEVBQUUsQ0FBQyxrQ0FBRCxFQUFxQyxrQkFBa0I7QUFDdkQsU0FBS21CLE9BQUwsQ0FBYSxHQUFiO0FBRUEsVUFBTTVCLENBQUMsQ0FBQ1UsYUFBRixDQUFnQixJQUFoQixFQUFzQixJQUF0QixFQUE0QjtBQUNoQ1UsTUFBQUEsV0FBVyxFQUFFO0FBQ1gsd0JBQWdCLEtBREw7QUFFWCw2QkFBcUIsVUFGVjtBQUdYLHdCQUFnQixRQUhMO0FBSVgsMkJBQW1CO0FBSlI7QUFEbUIsS0FBNUIsQ0FBTjs7QUFTQWYsb0JBQU9FLElBQVAsQ0FBWXNCLFNBQVosQ0FBc0JqQixNQUF0QixDQUE2QkMsRUFBN0IsQ0FBZ0NpQixLQUFoQyxDQUFzQyxDQUF0QztBQUNELEdBYkMsQ0FBRjtBQWVBckIsRUFBQUEsRUFBRSxDQUFDLHlDQUFELEVBQTRDLGtCQUFrQjtBQUM5RCxRQUFJO0FBQ0YsWUFBTVQsQ0FBQyxDQUFDVSxhQUFGLENBQWdCLElBQWhCLEVBQXNCLElBQXRCLEVBQTRCO0FBQ2hDVSxRQUFBQSxXQUFXLEVBQUU7QUFDWCwwQkFBZ0IsS0FETDtBQUVYLCtCQUFxQjtBQUZWO0FBRG1CLE9BQTVCLENBQU47QUFNRCxLQVBELENBT0UsT0FBT1QsQ0FBUCxFQUFVO0FBQ1ZBLE1BQUFBLENBQUMsQ0FBQ0MsTUFBRixDQUFTQyxFQUFULENBQVlDLFVBQVosQ0FBdUJDLFlBQU9DLHNCQUE5QjtBQUNBTCxNQUFBQSxDQUFDLENBQUNNLE9BQUYsQ0FBVUwsTUFBVixDQUFpQk0sT0FBakIsQ0FBeUIsY0FBekI7QUFDQTtBQUNEOztBQUVETixJQUFBQSxNQUFNLENBQUNPLElBQVAsQ0FBWSwrQkFBWjtBQUNELEdBZkMsQ0FBRjtBQWlCQXBCLEVBQUFBLFFBQVEsQ0FBQyxzQkFBRCxFQUF5QixZQUFZO0FBQzNDVSxJQUFBQSxFQUFFLENBQUMsK0JBQUQsRUFBa0Msa0JBQWtCO0FBQ3BELFlBQU1ULENBQUMsQ0FBQ1UsYUFBRixDQUFnQixJQUFoQixFQUFzQixJQUF0QixFQUE0QjtBQUNoQ1UsUUFBQUEsV0FBVyxFQUFFO0FBQ1gsMEJBQWdCLEtBREw7QUFFWCwrQkFBcUIsVUFGVjtBQUdYLDRCQUFrQjtBQUhQO0FBRG1CLE9BQTVCLENBQU47O0FBT0FmLHNCQUFPRSxJQUFQLENBQVlzQixTQUFaLENBQXNCakIsTUFBdEIsQ0FBNkJDLEVBQTdCLENBQWdDaUIsS0FBaEMsQ0FBc0MsQ0FBdEM7O0FBRUEsVUFBSUMsUUFBUSxHQUFHLE1BQU0vQixDQUFDLENBQUNnQyxXQUFGLEVBQXJCO0FBQ0FELE1BQUFBLFFBQVEsQ0FBQyxDQUFELENBQVIsQ0FBWUUsWUFBWixDQUF5QkMsT0FBekIsQ0FBaUN0QixNQUFqQyxDQUF3Q3VCLEdBQXhDLENBQTRDLEtBQTVDO0FBQ0QsS0FaQyxDQUFGO0FBY0ExQixJQUFBQSxFQUFFLENBQUMsOEJBQUQsRUFBaUMsa0JBQWtCO0FBQ25ELFlBQU1ULENBQUMsQ0FBQ1UsYUFBRixDQUFnQixJQUFoQixFQUFzQixJQUF0QixFQUE0QjtBQUNoQ1UsUUFBQUEsV0FBVyxFQUFFO0FBQ1gsMEJBQWdCLEtBREw7QUFFWCwrQkFBcUIsVUFGVjtBQUdYLDRCQUFrQjtBQUhQO0FBRG1CLE9BQTVCLENBQU47O0FBT0FmLHNCQUFPRSxJQUFQLENBQVlzQixTQUFaLENBQXNCakIsTUFBdEIsQ0FBNkJDLEVBQTdCLENBQWdDaUIsS0FBaEMsQ0FBc0MsQ0FBdEM7O0FBRUEsVUFBSUMsUUFBUSxHQUFHLE1BQU0vQixDQUFDLENBQUNnQyxXQUFGLEVBQXJCO0FBQ0FELE1BQUFBLFFBQVEsQ0FBQyxDQUFELENBQVIsQ0FBWUUsWUFBWixDQUF5QkMsT0FBekIsQ0FBaUN0QixNQUFqQyxDQUF3Q3VCLEdBQXhDLENBQTRDLElBQTVDO0FBQ0QsS0FaQyxDQUFGO0FBY0ExQixJQUFBQSxFQUFFLENBQUMscURBQUQsRUFBd0Qsa0JBQWtCO0FBQzFFLFlBQU1ULENBQUMsQ0FBQ1UsYUFBRixDQUFnQixJQUFoQixFQUFzQixJQUF0QixFQUE0QjtBQUNoQ1UsUUFBQUEsV0FBVyxFQUFFO0FBQ1gsMEJBQWdCLEtBREw7QUFFWCwrQkFBcUIsVUFGVjtBQUdYLDZCQUFtQjtBQUhSO0FBRG1CLE9BQTVCLENBQU47O0FBT0FmLHNCQUFPRSxJQUFQLENBQVlzQixTQUFaLENBQXNCakIsTUFBdEIsQ0FBNkJ3QixLQUE3QixDQUFtQyxDQUFuQzs7QUFFQSxVQUFJTCxRQUFRLEdBQUcsTUFBTS9CLENBQUMsQ0FBQ2dDLFdBQUYsRUFBckI7QUFDQUQsTUFBQUEsUUFBUSxDQUFDLENBQUQsQ0FBUixDQUFZRSxZQUFaLENBQXlCSSxRQUF6QixDQUFrQ3pCLE1BQWxDLENBQXlDdUIsR0FBekMsQ0FBNkMsTUFBN0M7QUFDRCxLQVpDLENBQUY7QUFhRCxHQTFDTyxDQUFSO0FBNENBcEMsRUFBQUEsUUFBUSxDQUFDLHFCQUFELEVBQXdCLFlBQVk7QUFDMUNVLElBQUFBLEVBQUUsQ0FBQywyQkFBRCxFQUE4QixrQkFBa0I7QUFDaEQsWUFBTVQsQ0FBQyxDQUFDVSxhQUFGLENBQWdCLElBQWhCLEVBQXNCLElBQXRCLEVBQTRCO0FBQ2hDVSxRQUFBQSxXQUFXLEVBQUU7QUFDWCwwQkFBZ0IsS0FETDtBQUVYLCtCQUFxQixVQUZWO0FBR1gsc0NBQTRCO0FBSGpCO0FBRG1CLE9BQTVCLENBQU47O0FBT0FmLHNCQUFPRSxJQUFQLENBQVlzQixTQUFaLENBQXNCakIsTUFBdEIsQ0FBNkJDLEVBQTdCLENBQWdDaUIsS0FBaEMsQ0FBc0MsQ0FBdEM7O0FBRUEsVUFBSUMsUUFBUSxHQUFHLE1BQU0vQixDQUFDLENBQUNnQyxXQUFGLEVBQXJCO0FBQ0FELE1BQUFBLFFBQVEsQ0FBQyxDQUFELENBQVIsQ0FBWUUsWUFBWixDQUF5QkssaUJBQXpCLENBQTJDMUIsTUFBM0MsQ0FBa0R1QixHQUFsRCxDQUFzRCxDQUF0RDtBQUNELEtBWkMsQ0FBRjtBQWNBMUIsSUFBQUEsRUFBRSxDQUFDLDZCQUFELEVBQWdDLGtCQUFrQjtBQUNsRCxZQUFNVCxDQUFDLENBQUNVLGFBQUYsQ0FBZ0IsSUFBaEIsRUFBc0IsSUFBdEIsRUFBNEI7QUFDaENVLFFBQUFBLFdBQVcsRUFBRTtBQUNYLDBCQUFnQixLQURMO0FBRVgsK0JBQXFCLFVBRlY7QUFHWCxzQ0FBNEI7QUFIakI7QUFEbUIsT0FBNUIsQ0FBTjs7QUFPQWYsc0JBQU9FLElBQVAsQ0FBWXNCLFNBQVosQ0FBc0JqQixNQUF0QixDQUE2QkMsRUFBN0IsQ0FBZ0NpQixLQUFoQyxDQUFzQyxDQUF0Qzs7QUFFQSxVQUFJQyxRQUFRLEdBQUcsTUFBTS9CLENBQUMsQ0FBQ2dDLFdBQUYsRUFBckI7QUFDQUQsTUFBQUEsUUFBUSxDQUFDLENBQUQsQ0FBUixDQUFZRSxZQUFaLENBQXlCSyxpQkFBekIsQ0FBMkMxQixNQUEzQyxDQUFrRHVCLEdBQWxELENBQXNELEdBQXREO0FBQ0QsS0FaQyxDQUFGO0FBY0ExQixJQUFBQSxFQUFFLENBQUMsa0RBQUQsRUFBcUQsa0JBQWtCO0FBQ3ZFLFlBQU1ULENBQUMsQ0FBQ1UsYUFBRixDQUFnQixJQUFoQixFQUFzQixJQUF0QixFQUE0QjtBQUNoQ1UsUUFBQUEsV0FBVyxFQUFFO0FBQ1gsMEJBQWdCLEtBREw7QUFFWCwrQkFBcUIsVUFGVjtBQUdYLDZCQUFtQjtBQUhSO0FBRG1CLE9BQTVCLENBQU47O0FBT0FmLHNCQUFPRSxJQUFQLENBQVlzQixTQUFaLENBQXNCakIsTUFBdEIsQ0FBNkJ3QixLQUE3QixDQUFtQyxDQUFuQzs7QUFFQSxVQUFJTCxRQUFRLEdBQUcsTUFBTS9CLENBQUMsQ0FBQ2dDLFdBQUYsRUFBckI7QUFDQUQsTUFBQUEsUUFBUSxDQUFDLENBQUQsQ0FBUixDQUFZRSxZQUFaLENBQXlCSSxRQUF6QixDQUFrQ3pCLE1BQWxDLENBQXlDdUIsR0FBekMsQ0FBNkMsR0FBN0M7QUFDRCxLQVpDLENBQUY7QUFhRCxHQTFDTyxDQUFSO0FBNENBMUIsRUFBQUEsRUFBRSxDQUFFLGlDQUFGLEVBQXFDLGtCQUFrQjtBQUN2RCxRQUFJO0FBQ0YsWUFBTVQsQ0FBQyxDQUFDVSxhQUFGLENBQWdCLElBQWhCLEVBQXNCLElBQXRCLEVBQTRCO0FBQ2hDVSxRQUFBQSxXQUFXLEVBQUU7QUFDWCwwQkFBZ0I7QUFBQ21CLFlBQUFBLENBQUMsRUFBRTtBQUFKLFdBREw7QUFFWCwrQkFBcUI7QUFGVjtBQURtQixPQUE1QixDQUFOO0FBTUQsS0FQRCxDQU9FLE9BQU81QixDQUFQLEVBQVU7QUFDVkEsTUFBQUEsQ0FBQyxDQUFDQyxNQUFGLENBQVNDLEVBQVQsQ0FBWUMsVUFBWixDQUF1QkMsWUFBT0Msc0JBQTlCO0FBQ0FMLE1BQUFBLENBQUMsQ0FBQ00sT0FBRixDQUFVTCxNQUFWLENBQWlCTSxPQUFqQixDQUF5QixjQUF6QjtBQUNBO0FBQ0Q7O0FBRUROLElBQUFBLE1BQU0sQ0FBQ08sSUFBUCxDQUFZLCtCQUFaO0FBQ0QsR0FmQyxDQUFGO0FBaUJBVixFQUFBQSxFQUFFLENBQUMsa0NBQUQsRUFBcUMsa0JBQWtCO0FBQ3ZELFNBQUttQixPQUFMLENBQWEsR0FBYjtBQUVBNUIsSUFBQUEsQ0FBQyxDQUFDc0IscUJBQUYsR0FBMEI7QUFDeEIsc0JBQWdCO0FBQ2RrQixRQUFBQSxVQUFVLEVBQUU7QUFERTtBQURRLEtBQTFCO0FBTUEsVUFBTXhDLENBQUMsQ0FBQ1UsYUFBRixDQUFnQixJQUFoQixFQUFzQixJQUF0QixFQUE0QjtBQUNoQ1UsTUFBQUEsV0FBVyxFQUFFO0FBQ1gsd0JBQWdCLEtBREw7QUFFWCw2QkFBcUIsVUFGVjtBQUdYLCtCQUF1QjtBQUhaO0FBRG1CLEtBQTVCLENBQU47O0FBUUFmLG9CQUFPRSxJQUFQLENBQVlzQixTQUFaLENBQXNCakIsTUFBdEIsQ0FBNkJDLEVBQTdCLENBQWdDaUIsS0FBaEMsQ0FBc0MsQ0FBdEM7QUFDRCxHQWxCQyxDQUFGO0FBb0JBckIsRUFBQUEsRUFBRSxDQUFDLHFDQUFELEVBQXdDLGtCQUFrQjtBQUMxRCxTQUFLbUIsT0FBTCxDQUFhLEdBQWI7QUFFQTVCLElBQUFBLENBQUMsQ0FBQ3NCLHFCQUFGLEdBQTBCO0FBQ3hCLHNCQUFnQjtBQUNka0IsUUFBQUEsVUFBVSxFQUFFO0FBREU7QUFEUSxLQUExQjtBQU1BLFVBQU14QyxDQUFDLENBQUNVLGFBQUYsQ0FBZ0IsSUFBaEIsRUFBc0IsSUFBdEIsRUFBNEI7QUFDaENVLE1BQUFBLFdBQVcsRUFBRTtBQUNYLHdCQUFnQixLQURMO0FBRVgsNkJBQXFCLFVBRlY7QUFHWCwrQkFBdUI7QUFIWjtBQURtQixLQUE1QixDQUFOOztBQVFBZixvQkFBT0UsSUFBUCxDQUFZc0IsU0FBWixDQUFzQmpCLE1BQXRCLENBQTZCd0IsS0FBN0IsQ0FBbUMsQ0FBbkM7QUFDRCxHQWxCQyxDQUFGO0FBb0JBM0IsRUFBQUEsRUFBRSxDQUFDLGlEQUFELEVBQW9ELGtCQUFrQjtBQUN0RVQsSUFBQUEsQ0FBQyxDQUFDc0IscUJBQUYsR0FBMEI7QUFDeEIsYUFBTztBQUNMSSxRQUFBQSxRQUFRLEVBQUU7QUFETDtBQURpQixLQUExQjtBQU1BLFVBQU0xQixDQUFDLENBQUNVLGFBQUYsQ0FBZ0IsSUFBaEIsRUFBc0IsSUFBdEIsRUFBNEI7QUFDaENVLE1BQUFBLFdBQVcsRUFBRTtBQUNYQyxRQUFBQSxZQUFZLEVBQUUsS0FESDtBQUVYLDZCQUFxQixNQUZWO0FBR1gsc0JBQWM7QUFISDtBQURtQixLQUE1QixDQUFOO0FBT0EsVUFBTXJCLENBQUMsQ0FBQ3lDLGFBQUYsRUFBTjtBQUVBLFVBQU16QyxDQUFDLENBQUNVLGFBQUYsQ0FBZ0IsSUFBaEIsRUFBc0IsSUFBdEIsRUFBNEI7QUFDaENVLE1BQUFBLFdBQVcsRUFBRTtBQUNYQyxRQUFBQSxZQUFZLEVBQUUsS0FESDtBQUVYLDZCQUFxQixNQUZWO0FBR1gsc0JBQWM7QUFISDtBQURtQixLQUE1QixFQU1IVCxNQU5HLENBTUk4QixVQU5KLENBTWU3QixFQU5mLENBTWtCOEIsWUFObEIsQ0FNK0IsOEJBTi9CLENBQU47QUFRQSxVQUFNM0MsQ0FBQyxDQUFDVSxhQUFGLENBQWdCLElBQWhCLEVBQXNCLElBQXRCLEVBQTRCO0FBQ2hDVSxNQUFBQSxXQUFXLEVBQUU7QUFDWEMsUUFBQUEsWUFBWSxFQUFFLEtBREg7QUFFWCw2QkFBcUIsTUFGVjtBQUdYLHNCQUFjdUI7QUFISDtBQURtQixLQUE1QixDQUFOO0FBT0EsVUFBTTVDLENBQUMsQ0FBQ3lDLGFBQUYsRUFBTjtBQUVBLFVBQU16QyxDQUFDLENBQUNVLGFBQUYsQ0FBZ0IsSUFBaEIsRUFBc0IsSUFBdEIsRUFBNEI7QUFDaENVLE1BQUFBLFdBQVcsRUFBRTtBQUNYQyxRQUFBQSxZQUFZLEVBQUUsS0FESDtBQUVYLDZCQUFxQixNQUZWO0FBR1gsc0JBQWM7QUFISDtBQURtQixLQUE1QixDQUFOO0FBT0EsVUFBTXJCLENBQUMsQ0FBQ3lDLGFBQUYsRUFBTjtBQUNELEdBekNDLENBQUY7QUEyQ0FoQyxFQUFBQSxFQUFFLENBQUMsNEVBQUQsRUFBK0Usa0JBQWtCO0FBQ2pHVCxJQUFBQSxDQUFDLENBQUNzQixxQkFBRixHQUEwQjtBQUN4QnVCLE1BQUFBLEdBQUcsRUFBRTtBQUNIckIsUUFBQUEsUUFBUSxFQUFFO0FBRFA7QUFEbUIsS0FBMUI7QUFNQSxVQUFNeEIsQ0FBQyxDQUFDVSxhQUFGLENBQWdCLElBQWhCLEVBQXNCLElBQXRCLEVBQTRCO0FBQ2hDVSxNQUFBQSxXQUFXLEVBQUU7QUFDWEMsUUFBQUEsWUFBWSxFQUFFLEtBREg7QUFFWCw2QkFBcUIsTUFGVjtBQUdYLHNCQUFjO0FBSEg7QUFEbUIsS0FBNUIsRUFNSFQsTUFORyxDQU1JOEIsVUFOSixDQU1lN0IsRUFOZixDQU1rQjhCLFlBTmxCLENBTStCLE9BTi9CLENBQU47QUFRQSxVQUFNM0MsQ0FBQyxDQUFDVSxhQUFGLENBQWdCLElBQWhCLEVBQXNCLElBQXRCLEVBQTRCO0FBQ2hDVyxNQUFBQSxZQUFZLEVBQUUsS0FEa0I7QUFFaEMsMkJBQXFCLE1BRlc7QUFHaEMsb0JBQWM7QUFIa0IsS0FBNUIsRUFJSFQsTUFKRyxDQUlJOEIsVUFKSixDQUllN0IsRUFKZixDQUlrQjhCLFlBSmxCLENBSStCLE9BSi9CLENBQU47QUFNQSxVQUFNM0MsQ0FBQyxDQUFDVSxhQUFGLENBQWdCLElBQWhCLEVBQXNCLElBQXRCLEVBQTRCO0FBQ2hDVyxNQUFBQSxZQUFZLEVBQUUsS0FEa0I7QUFFaEMsMkJBQXFCLE1BRlc7QUFHaEMsb0JBQWM7QUFIa0IsS0FBNUIsRUFJSFQsTUFKRyxDQUlJOEIsVUFKSixDQUllN0IsRUFKZixDQUlrQjhCLFlBSmxCLENBSStCLE9BSi9CLENBQU47QUFNQSxVQUFNM0MsQ0FBQyxDQUFDVSxhQUFGLENBQWdCLElBQWhCLEVBQXNCLElBQXRCLEVBQTRCO0FBQ2hDVyxNQUFBQSxZQUFZLEVBQUUsS0FEa0I7QUFFaEMsMkJBQXFCLE1BRlc7QUFHaEMsb0JBQWM7QUFIa0IsS0FBNUIsRUFJSFQsTUFKRyxDQUlJOEIsVUFKSixDQUllN0IsRUFKZixDQUlrQjhCLFlBSmxCLENBSStCLE9BSi9CLENBQU47QUFNQSxVQUFNM0MsQ0FBQyxDQUFDVSxhQUFGLENBQWdCLElBQWhCLEVBQXNCLElBQXRCLEVBQTRCO0FBQ2hDVyxNQUFBQSxZQUFZLEVBQUUsS0FEa0I7QUFFaEMsMkJBQXFCLE1BRlc7QUFHaEMsb0JBQWM7QUFIa0IsS0FBNUIsRUFJSFQsTUFKRyxDQUlJOEIsVUFKSixDQUllN0IsRUFKZixDQUlrQjhCLFlBSmxCLENBSStCLE9BSi9CLENBQU47QUFLRCxHQXRDQyxDQUFGO0FBd0NBNUMsRUFBQUEsUUFBUSxDQUFDLEtBQUQsRUFBUSxZQUFZO0FBQzFCVSxJQUFBQSxFQUFFLENBQUMsZ0NBQUQsRUFBbUMsa0JBQWtCO0FBQ3JELFlBQU0sQ0FBQ3FDLFNBQUQsRUFBWUMsSUFBWixJQUFvQixNQUFNL0MsQ0FBQyxDQUFDVSxhQUFGLENBQWdCLElBQWhCLEVBQXNCLElBQXRCLEVBQTRCO0FBQzFEVSxRQUFBQSxXQUFXLEVBQUU7QUFDWEMsVUFBQUEsWUFBWSxFQUFFLEtBREg7QUFFWCwrQkFBcUI7QUFGVixTQUQ2QztBQUl2RDJCLFFBQUFBLFVBQVUsRUFBRSxDQUFDLEVBQUQ7QUFKMkMsT0FBNUIsQ0FBaEM7QUFNQUYsTUFBQUEsU0FBUyxDQUFDbEMsTUFBVixDQUFpQnFDLEtBQWpCO0FBQ0FGLE1BQUFBLElBQUksQ0FBQ25DLE1BQUwsQ0FBWXVCLEdBQVosQ0FBZ0I7QUFDZGQsUUFBQUEsWUFBWSxFQUFFLEtBREE7QUFFZDZCLFFBQUFBLFVBQVUsRUFBRTtBQUZFLE9BQWhCO0FBSUEsWUFBTWxELENBQUMsQ0FBQ3lDLGFBQUYsRUFBTjtBQUNELEtBYkMsQ0FBRjtBQWVBaEMsSUFBQUEsRUFBRSxDQUFDLHNFQUFELEVBQXlFLGtCQUFrQjtBQUMzRixXQUFLLE1BQU0wQyxHQUFYLElBQWtCLENBQUMsSUFBRCxFQUFPLFFBQVAsRUFBaUIsRUFBakIsRUFBcUIsR0FBckIsQ0FBbEIsRUFBNkM7QUFDM0MsWUFBSTtBQUNGLGdCQUFNbkQsQ0FBQyxDQUFDVSxhQUFGLENBQWdCLElBQWhCLEVBQXNCLElBQXRCLEVBQTRCeUMsR0FBNUIsQ0FBTjtBQUNELFNBRkQsQ0FFRSxPQUFPeEMsQ0FBUCxFQUFVO0FBQ1ZBLFVBQUFBLENBQUMsQ0FBQ0MsTUFBRixDQUFTQyxFQUFULENBQVlDLFVBQVosQ0FBdUJDLFlBQU9DLHNCQUE5QjtBQUNBO0FBQ0Q7O0FBQ0RKLFFBQUFBLE1BQU0sQ0FBQ08sSUFBUCxDQUFZLCtCQUFaO0FBQ0Q7QUFDRixLQVZDLENBQUY7QUFXRCxHQTNCTyxDQUFSO0FBNEJELENBblpPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZWZhdWx0IGFzIEJhc2VEcml2ZXIsIGVycm9ycyB9IGZyb20gJy4uLy4uL2xpYic7XG5pbXBvcnQgbG9nZ2VyIGZyb20gJy4uLy4uL2xpYi9iYXNlZHJpdmVyL2xvZ2dlcic7XG5pbXBvcnQgc2lub24gZnJvbSAnc2lub24nO1xuXG5cbmRlc2NyaWJlKCdEZXNpcmVkIENhcGFiaWxpdGllcycsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IGQ7XG5cbiAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgZCA9IG5ldyBCYXNlRHJpdmVyKCk7XG4gICAgc2lub24uc3B5KGxvZ2dlciwgJ3dhcm4nKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBsb2dnZXIud2Fybi5yZXN0b3JlKCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmVxdWlyZSBwbGF0Zm9ybU5hbWUgYW5kIGRldmljZU5hbWUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7fSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgZS5zaG91bGQuYmUuaW5zdGFuY2VvZihlcnJvcnMuU2Vzc2lvbk5vdENyZWF0ZWRFcnJvcik7XG4gICAgICBlLm1lc3NhZ2Uuc2hvdWxkLmNvbnRhaW4oJ3BsYXRmb3JtTmFtZScpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHNob3VsZC5mYWlsKCdlcnJvciBzaG91bGQgaGF2ZSBiZWVuIHRocm93bicpO1xuICB9KTtcblxuXG4gIGl0KCdzaG91bGQgcmVxdWlyZSBwbGF0Zm9ybU5hbWUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7J2RldmljZU5hbWUnOiAnRGVsb3JlYW4nfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgZS5zaG91bGQuYmUuaW5zdGFuY2VvZihlcnJvcnMuU2Vzc2lvbk5vdENyZWF0ZWRFcnJvcik7XG4gICAgICBlLm1lc3NhZ2Uuc2hvdWxkLmNvbnRhaW4oJ3BsYXRmb3JtTmFtZScpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHNob3VsZC5mYWlsKCdlcnJvciBzaG91bGQgaGF2ZSBiZWVuIHRocm93bicpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIG5vdCBjYXJlIGFib3V0IGNhcCBvcmRlcicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcblxuICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7XG4gICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRGVsb3JlYW4nLFxuICAgICAgICBwbGF0Zm9ybU5hbWU6ICdpT1MnXG4gICAgICB9XG4gICAgfSk7XG5cbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBjaGVjayByZXF1aXJlZCBjYXBzIHdoaWNoIGFyZSBhZGRlZCB0byBkcml2ZXInLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgZC5kZXNpcmVkQ2FwQ29uc3RyYWludHMgPSB7XG4gICAgICBuZWNlc3Nhcnk6IHtcbiAgICAgICAgcHJlc2VuY2U6IHRydWVcbiAgICAgIH0sXG4gICAgICBwcm9wZXI6IHtcbiAgICAgICAgcHJlc2VuY2U6IHRydWUsXG4gICAgICAgIGlzU3RyaW5nOiB0cnVlLFxuICAgICAgICBpbmNsdXNpb246IFsnRGVsb3JlYW4nLCAnUmV2ZW50b24nXVxuICAgICAgfVxuICAgIH07XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgICAncGxhdGZvcm1OYW1lJzogJ2lPUycsXG4gICAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0RlbG9yZWFuJ1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBlLnNob3VsZC5iZS5pbnN0YW5jZW9mKGVycm9ycy5TZXNzaW9uTm90Q3JlYXRlZEVycm9yKTtcbiAgICAgIGUubWVzc2FnZS5zaG91bGQuY29udGFpbignbmVjZXNzYXJ5Jyk7XG4gICAgICBlLm1lc3NhZ2Uuc2hvdWxkLmNvbnRhaW4oJ3Byb3BlcicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHNob3VsZC5mYWlsKCdlcnJvciBzaG91bGQgaGF2ZSBiZWVuIHRocm93bicpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNoZWNrIGFkZGVkIHJlcXVpcmVkIGNhcHMgaW4gYWRkaXRpb24gdG8gYmFzZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBkLmRlc2lyZWRDYXBDb25zdHJhaW50cyA9IHtcbiAgICAgIG5lY2Vzc2FyeToge1xuICAgICAgICBwcmVzZW5jZTogdHJ1ZVxuICAgICAgfSxcbiAgICAgIHByb3Blcjoge1xuICAgICAgICBwcmVzZW5jZTogdHJ1ZSxcbiAgICAgICAgaXNTdHJpbmc6IHRydWUsXG4gICAgICAgIGluY2x1c2lvbjogWydEZWxvcmVhbicsICdSZXZlbnRvbiddXG4gICAgICB9XG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwge1xuICAgICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICAgICdhcHBpdW06bmVjZXNzYXJ5JzogJ3l1cCdcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgZS5zaG91bGQuYmUuaW5zdGFuY2VvZihlcnJvcnMuU2Vzc2lvbk5vdENyZWF0ZWRFcnJvcik7XG4gICAgICBlLm1lc3NhZ2Uuc2hvdWxkLmNvbnRhaW4oJ3BsYXRmb3JtTmFtZScpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHNob3VsZC5mYWlsKCdlcnJvciBzaG91bGQgaGF2ZSBiZWVuIHRocm93bicpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGFjY2VwdCBleHRyYSBjYXBhYmlsaXRpZXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgIGFsd2F5c01hdGNoOiB7XG4gICAgICAgICdwbGF0Zm9ybU5hbWUnOiAnaU9TJyxcbiAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0RlbG9yZWFuJyxcbiAgICAgICAgJ2FwcGl1bTpleHRyYSc6ICdjaGVlc2UnLFxuICAgICAgICAnYXBwaXVtOmhvbGQgdGhlJzogJ3NhdWNlJ1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGxvZyB0aGUgdXNlIG9mIGV4dHJhIGNhcHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy50aW1lb3V0KDUwMCk7XG5cbiAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwge1xuICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgJ3BsYXRmb3JtTmFtZSc6ICdpT1MnLFxuICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRGVsb3JlYW4nLFxuICAgICAgICAnYXBwaXVtOmV4dHJhJzogJ2NoZWVzZScsXG4gICAgICAgICdhcHBpdW06aG9sZCB0aGUnOiAnc2F1Y2UnXG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBsb2dnZXIud2Fybi5jYWxsQ291bnQuc2hvdWxkLmJlLmFib3ZlKDApO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGJlIHNlbnNpdGl2ZSB0byB0aGUgY2FzZSBvZiBjYXBzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwge1xuICAgICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICAgICdwbGF0Zm9ybW5hbWUnOiAnaU9TJyxcbiAgICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRGVsb3JlYW4nXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGUuc2hvdWxkLmJlLmluc3RhbmNlb2YoZXJyb3JzLlNlc3Npb25Ob3RDcmVhdGVkRXJyb3IpO1xuICAgICAgZS5tZXNzYWdlLnNob3VsZC5jb250YWluKCdwbGF0Zm9ybU5hbWUnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzaG91bGQuZmFpbCgnZXJyb3Igc2hvdWxkIGhhdmUgYmVlbiB0aHJvd24nKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2Jvb2xlYW4gY2FwYWJpbGl0aWVzJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgYWxsb3cgYSBzdHJpbmcgXCJmYWxzZVwiJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgICAncGxhdGZvcm1OYW1lJzogJ2lPUycsXG4gICAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0RlbG9yZWFuJyxcbiAgICAgICAgICAnYXBwaXVtOm5vUmVzZXQnOiAnZmFsc2UnXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgbG9nZ2VyLndhcm4uY2FsbENvdW50LnNob3VsZC5iZS5hYm92ZSgwKTtcblxuICAgICAgbGV0IHNlc3Npb25zID0gYXdhaXQgZC5nZXRTZXNzaW9ucygpO1xuICAgICAgc2Vzc2lvbnNbMF0uY2FwYWJpbGl0aWVzLm5vUmVzZXQuc2hvdWxkLmVxbChmYWxzZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGFsbG93IGEgc3RyaW5nIFwidHJ1ZVwiJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgICAncGxhdGZvcm1OYW1lJzogJ2lPUycsXG4gICAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0RlbG9yZWFuJyxcbiAgICAgICAgICAnYXBwaXVtOm5vUmVzZXQnOiAndHJ1ZSdcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBsb2dnZXIud2Fybi5jYWxsQ291bnQuc2hvdWxkLmJlLmFib3ZlKDApO1xuXG4gICAgICBsZXQgc2Vzc2lvbnMgPSBhd2FpdCBkLmdldFNlc3Npb25zKCk7XG4gICAgICBzZXNzaW9uc1swXS5jYXBhYmlsaXRpZXMubm9SZXNldC5zaG91bGQuZXFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBhbGxvdyBhIHN0cmluZyBcInRydWVcIiBpbiBzdHJpbmcgY2FwYWJpbGl0aWVzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgICAncGxhdGZvcm1OYW1lJzogJ2lPUycsXG4gICAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0RlbG9yZWFuJyxcbiAgICAgICAgICAnYXBwaXVtOmxhbmd1YWdlJzogJ3RydWUnXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgbG9nZ2VyLndhcm4uY2FsbENvdW50LnNob3VsZC5lcXVhbCgwKTtcblxuICAgICAgbGV0IHNlc3Npb25zID0gYXdhaXQgZC5nZXRTZXNzaW9ucygpO1xuICAgICAgc2Vzc2lvbnNbMF0uY2FwYWJpbGl0aWVzLmxhbmd1YWdlLnNob3VsZC5lcWwoJ3RydWUnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ251bWJlciBjYXBhYmlsaXRpZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBhbGxvdyBhIHN0cmluZyBcIjFcIicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7XG4gICAgICAgIGFsd2F5c01hdGNoOiB7XG4gICAgICAgICAgJ3BsYXRmb3JtTmFtZSc6ICdpT1MnLFxuICAgICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEZWxvcmVhbicsXG4gICAgICAgICAgJ2FwcGl1bTpuZXdDb21tYW5kVGltZW91dCc6ICcxJ1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGxvZ2dlci53YXJuLmNhbGxDb3VudC5zaG91bGQuYmUuYWJvdmUoMCk7XG5cbiAgICAgIGxldCBzZXNzaW9ucyA9IGF3YWl0IGQuZ2V0U2Vzc2lvbnMoKTtcbiAgICAgIHNlc3Npb25zWzBdLmNhcGFiaWxpdGllcy5uZXdDb21tYW5kVGltZW91dC5zaG91bGQuZXFsKDEpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBhbGxvdyBhIHN0cmluZyBcIjEuMVwiJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgICAncGxhdGZvcm1OYW1lJzogJ2lPUycsXG4gICAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0RlbG9yZWFuJyxcbiAgICAgICAgICAnYXBwaXVtOm5ld0NvbW1hbmRUaW1lb3V0JzogJzEuMSdcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBsb2dnZXIud2Fybi5jYWxsQ291bnQuc2hvdWxkLmJlLmFib3ZlKDApO1xuXG4gICAgICBsZXQgc2Vzc2lvbnMgPSBhd2FpdCBkLmdldFNlc3Npb25zKCk7XG4gICAgICBzZXNzaW9uc1swXS5jYXBhYmlsaXRpZXMubmV3Q29tbWFuZFRpbWVvdXQuc2hvdWxkLmVxbCgxLjEpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBhbGxvdyBhIHN0cmluZyBcIjFcIiBpbiBzdHJpbmcgY2FwYWJpbGl0aWVzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgICAncGxhdGZvcm1OYW1lJzogJ2lPUycsXG4gICAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0RlbG9yZWFuJyxcbiAgICAgICAgICAnYXBwaXVtOmxhbmd1YWdlJzogJzEnXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgbG9nZ2VyLndhcm4uY2FsbENvdW50LnNob3VsZC5lcXVhbCgwKTtcblxuICAgICAgbGV0IHNlc3Npb25zID0gYXdhaXQgZC5nZXRTZXNzaW9ucygpO1xuICAgICAgc2Vzc2lvbnNbMF0uY2FwYWJpbGl0aWVzLmxhbmd1YWdlLnNob3VsZC5lcWwoJzEnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQgKCdzaG91bGQgZXJyb3IgaWYgb2JqZWN0cyBpbiBjYXBzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwge1xuICAgICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICAgICdwbGF0Zm9ybU5hbWUnOiB7YTogJ2lPUyd9LFxuICAgICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEZWxvcmVhbidcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgZS5zaG91bGQuYmUuaW5zdGFuY2VvZihlcnJvcnMuU2Vzc2lvbk5vdENyZWF0ZWRFcnJvcik7XG4gICAgICBlLm1lc3NhZ2Uuc2hvdWxkLmNvbnRhaW4oJ3BsYXRmb3JtTmFtZScpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHNob3VsZC5mYWlsKCdlcnJvciBzaG91bGQgaGF2ZSBiZWVuIHRocm93bicpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNoZWNrIGZvciBkZXByZWNhdGVkIGNhcHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy50aW1lb3V0KDUwMCk7XG5cbiAgICBkLmRlc2lyZWRDYXBDb25zdHJhaW50cyA9IHtcbiAgICAgICdseW54LXZlcnNpb24nOiB7XG4gICAgICAgIGRlcHJlY2F0ZWQ6IHRydWVcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgIGFsd2F5c01hdGNoOiB7XG4gICAgICAgICdwbGF0Zm9ybU5hbWUnOiAnaU9TJyxcbiAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0RlbG9yZWFuJyxcbiAgICAgICAgJ2FwcGl1bTpseW54LXZlcnNpb24nOiA1XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBsb2dnZXIud2Fybi5jYWxsQ291bnQuc2hvdWxkLmJlLmFib3ZlKDApO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIG5vdCB3YXJuIGlmIGRlcHJlY2F0ZWQ9ZmFsc2UnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy50aW1lb3V0KDUwMCk7XG5cbiAgICBkLmRlc2lyZWRDYXBDb25zdHJhaW50cyA9IHtcbiAgICAgICdseW54LXZlcnNpb24nOiB7XG4gICAgICAgIGRlcHJlY2F0ZWQ6IGZhbHNlXG4gICAgICB9XG4gICAgfTtcblxuICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7XG4gICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICAncGxhdGZvcm1OYW1lJzogJ2lPUycsXG4gICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEZWxvcmVhbicsXG4gICAgICAgICdhcHBpdW06bHlueC12ZXJzaW9uJzogNVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgbG9nZ2VyLndhcm4uY2FsbENvdW50LnNob3VsZC5lcXVhbCgwKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBub3QgdmFsaWRhdGUgYWdhaW5zdCBudWxsL3VuZGVmaW5lZCBjYXBzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGQuZGVzaXJlZENhcENvbnN0cmFpbnRzID0ge1xuICAgICAgJ2Zvbyc6IHtcbiAgICAgICAgaXNTdHJpbmc6IHRydWVcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgIGFsd2F5c01hdGNoOiB7XG4gICAgICAgIHBsYXRmb3JtTmFtZTogJ2lPUycsXG4gICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEdW1iJyxcbiAgICAgICAgJ2FwcGl1bTpmb28nOiBudWxsXG4gICAgICB9XG4gICAgfSk7XG4gICAgYXdhaXQgZC5kZWxldGVTZXNzaW9uKCk7XG5cbiAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwge1xuICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgcGxhdGZvcm1OYW1lOiAnaU9TJyxcbiAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0R1bWInLFxuICAgICAgICAnYXBwaXVtOmZvbyc6IDFcbiAgICAgIH1cbiAgICB9KS5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoLydmb28nIG11c3QgYmUgb2YgdHlwZSBzdHJpbmcvKTtcblxuICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7XG4gICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRHVtYicsXG4gICAgICAgICdhcHBpdW06Zm9vJzogdW5kZWZpbmVkXG4gICAgICB9XG4gICAgfSk7XG4gICAgYXdhaXQgZC5kZWxldGVTZXNzaW9uKCk7XG5cbiAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwge1xuICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgcGxhdGZvcm1OYW1lOiAnaU9TJyxcbiAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0R1bWInLFxuICAgICAgICAnYXBwaXVtOmZvbyc6ICcnXG4gICAgICB9XG4gICAgfSk7XG4gICAgYXdhaXQgZC5kZWxldGVTZXNzaW9uKCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgc3RpbGwgdmFsaWRhdGUgbnVsbC91bmRlZmluZWQvZW1wdHkgY2FwcyB3aG9zZSBwcmVzZW5jZSBpcyByZXF1aXJlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBkLmRlc2lyZWRDYXBDb25zdHJhaW50cyA9IHtcbiAgICAgIGZvbzoge1xuICAgICAgICBwcmVzZW5jZTogdHJ1ZVxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgIGFsd2F5c01hdGNoOiB7XG4gICAgICAgIHBsYXRmb3JtTmFtZTogJ2lPUycsXG4gICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEdW1iJyxcbiAgICAgICAgJ2FwcGl1bTpmb28nOiBudWxsXG4gICAgICB9XG4gICAgfSkuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWRXaXRoKC9ibGFuay8pO1xuXG4gICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgIHBsYXRmb3JtTmFtZTogJ2lPUycsXG4gICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRHVtYicsXG4gICAgICAnYXBwaXVtOmZvbyc6ICcnXG4gICAgfSkuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWRXaXRoKC9ibGFuay8pO1xuXG4gICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgIHBsYXRmb3JtTmFtZTogJ2lPUycsXG4gICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRHVtYicsXG4gICAgICAnYXBwaXVtOmZvbyc6IHt9XG4gICAgfSkuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWRXaXRoKC9ibGFuay8pO1xuXG4gICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgIHBsYXRmb3JtTmFtZTogJ2lPUycsXG4gICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRHVtYicsXG4gICAgICAnYXBwaXVtOmZvbyc6IFtdXG4gICAgfSkuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWRXaXRoKC9ibGFuay8pO1xuXG4gICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgIHBsYXRmb3JtTmFtZTogJ2lPUycsXG4gICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRHVtYicsXG4gICAgICAnYXBwaXVtOmZvbyc6ICcgICdcbiAgICB9KS5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoL2JsYW5rLyk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCd3M2MnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBhY2NlcHQgdzNjIGNhcGFiaWxpdGllcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IFtzZXNzaW9uSWQsIGNhcHNdID0gYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAgICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEZWxvcmVhbidcbiAgICAgICAgfSwgZmlyc3RNYXRjaDogW3t9XSxcbiAgICAgIH0pO1xuICAgICAgc2Vzc2lvbklkLnNob3VsZC5leGlzdDtcbiAgICAgIGNhcHMuc2hvdWxkLmVxbCh7XG4gICAgICAgIHBsYXRmb3JtTmFtZTogJ2lPUycsXG4gICAgICAgIGRldmljZU5hbWU6ICdEZWxvcmVhbicsXG4gICAgICB9KTtcbiAgICAgIGF3YWl0IGQuZGVsZXRlU2Vzc2lvbigpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByYWlzZSBhbiBlcnJvciBpZiB3M2MgY2FwYWJpbGl0aWVzIGlzIG5vdCBhIHBsYWluIEpTT04gb2JqZWN0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgZm9yIChjb25zdCB2YWwgb2YgW3RydWUsICdzdHJpbmcnLCBbXSwgMTAwXSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB2YWwpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgZS5zaG91bGQuYmUuaW5zdGFuY2VvZihlcnJvcnMuU2Vzc2lvbk5vdENyZWF0ZWRFcnJvcik7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgc2hvdWxkLmZhaWwoJ2Vycm9yIHNob3VsZCBoYXZlIGJlZW4gdGhyb3duJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwiZmlsZSI6InRlc3QvYmFzZWRyaXZlci9jYXBhYmlsaXR5LXNwZWNzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
|
|
355
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvYmFzZWRyaXZlci9jYXBhYmlsaXR5LXNwZWNzLmpzIl0sIm5hbWVzIjpbImRlc2NyaWJlIiwiZCIsInNhbmRib3giLCJiZWZvcmVFYWNoIiwiQmFzZURyaXZlciIsInNweSIsImxvZyIsImxvZ2dlciIsImFmdGVyRWFjaCIsInJlc3RvcmUiLCJpdCIsImNyZWF0ZVNlc3Npb24iLCJmaXJzdE1hdGNoIiwic2hvdWxkIiwiZXZlbnR1YWxseSIsImJlIiwicmVqZWN0ZWRXaXRoIiwiZXJyb3JzIiwiU2Vzc2lvbk5vdENyZWF0ZWRFcnJvciIsImFsd2F5c01hdGNoIiwicGxhdGZvcm1OYW1lIiwiZnVsZmlsbGVkIiwiZGVzaXJlZENhcENvbnN0cmFpbnRzIiwibmVjZXNzYXJ5IiwicHJlc2VuY2UiLCJwcm9wZXIiLCJpc1N0cmluZyIsImluY2x1c2lvbiIsInRpbWVvdXQiLCJ3YXJuIiwiaGF2ZSIsImJlZW4iLCJjYWxsZWQiLCJzZXNzaW9ucyIsImdldFNlc3Npb25zIiwiY2FwYWJpbGl0aWVzIiwibm9SZXNldCIsImVxbCIsIm5vdCIsImxhbmd1YWdlIiwibmV3Q29tbWFuZFRpbWVvdXQiLCJhIiwiZGVwcmVjYXRlZCIsImRlbGV0ZVNlc3Npb24iLCJ1bmRlZmluZWQiLCJmb28iLCJzZXNzaW9uSWQiLCJjYXBzIiwiZXhpc3QiLCJkZXZpY2VOYW1lIiwidGVzdFZhbHVlcyIsIkIiLCJtYXAiLCJ2YWwiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7QUFFQUEsUUFBUSxDQUFDLHNCQUFELEVBQXlCLFlBQVk7QUFDM0MsTUFBSUMsQ0FBSjtBQUNBLE1BQUlDLE9BQUo7QUFFQUMsRUFBQUEsVUFBVSxDQUFDLFlBQVk7QUFDckJGLElBQUFBLENBQUMsR0FBRyxJQUFJRyxZQUFKLEVBQUo7QUFDQUYsSUFBQUEsT0FBTyxHQUFHLDJCQUFWO0FBQ0FBLElBQUFBLE9BQU8sQ0FBQ0csR0FBUixDQUFZSixDQUFDLENBQUNL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QUFBLFdBQVcsRUFBRTtBQUNYQyxVQUFBQSxZQUFZLEVBQUUsS0FESDtBQUVYLCtCQUFxQjtBQUZWLFNBRDZDO0FBSXZEUixRQUFBQSxVQUFVLEVBQUUsQ0FBQyxFQUFEO0FBSjJDLE9BQTVCLENBQWhDOztBQU1BLFVBQUk7QUFDRmtDLFFBQUFBLFNBQVMsQ0FBQ2pDLE1BQVYsQ0FBaUJtQyxLQUFqQjtBQUNBRCxRQUFBQSxJQUFJLENBQUNsQyxNQUFMLENBQVl3QixHQUFaLENBQWdCO0FBQ2RqQixVQUFBQSxZQUFZLEVBQUUsS0FEQTtBQUVkNkIsVUFBQUEsVUFBVSxFQUFFO0FBRkUsU0FBaEI7QUFJRCxPQU5ELFNBTVU7QUFDUixjQUFNaEQsQ0FBQyxDQUFDMEMsYUFBRixFQUFOO0FBQ0Q7QUFDRixLQWhCQyxDQUFGO0FBa0JBakMsSUFBQUEsRUFBRSxDQUFDLHNFQUFELEVBQXlFLGtCQUFrQjtBQUMzRixZQUFNd0MsVUFBVSxHQUFHLENBQUMsSUFBRCxFQUFPLFFBQVAsRUFBaUIsRUFBakIsRUFBcUIsR0FBckIsQ0FBbkI7QUFFQSxZQUFNQyxrQkFBRUMsR0FBRixDQUFNRixVQUFOLEVBQW1CRyxHQUFELElBQVNwRCxDQUFDLENBQUNVLGFBQUYsQ0FBZ0IsSUFBaEIsRUFBc0IsSUFBdEIsRUFBNEIwQyxHQUE1QixFQUFpQ3hDLE1BQWpDLENBQXdDQyxVQUF4QyxDQUFtREMsRUFBbkQsQ0FBc0RDLFlBQXRELENBQW1FQyxZQUFPQyxzQkFBMUUsQ0FBM0IsQ0FBTjtBQUNELEtBSkMsQ0FBRjtBQUtELEdBeEJPLENBQVI7QUF5QkQsQ0F2WE8sQ0FBUiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIEJhc2VEcml2ZXIsIGVycm9ycyB9IGZyb20gJy4uLy4uL2xpYic7XG5pbXBvcnQgbG9nZ2VyIGZyb20gJy4uLy4uL2xpYi9iYXNlZHJpdmVyL2xvZ2dlcic7XG5pbXBvcnQgeyBjcmVhdGVTYW5kYm94IH0gZnJvbSAnc2lub24nO1xuXG5kZXNjcmliZSgnRGVzaXJlZCBDYXBhYmlsaXRpZXMnLCBmdW5jdGlvbiAoKSB7XG4gIGxldCBkO1xuICBsZXQgc2FuZGJveDtcblxuICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBkID0gbmV3IEJhc2VEcml2ZXIoKTtcbiAgICBzYW5kYm94ID0gY3JlYXRlU2FuZGJveCgpO1xuICAgIHNhbmRib3guc3B5KGQubG9nLCAnd2FybicpO1xuICAgIHNhbmRib3guc3B5KGxvZ2dlciwgJ3dhcm4nKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBzYW5kYm94LnJlc3RvcmUoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXF1aXJlIHBsYXRmb3JtTmFtZSBhbmQgZGV2aWNlTmFtZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24oe1xuICAgICAgZmlyc3RNYXRjaDogW3t9XVxuICAgIH0pLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkV2l0aChlcnJvcnMuU2Vzc2lvbk5vdENyZWF0ZWRFcnJvciwgL3BsYXRmb3JtTmFtZS8pO1xuICB9KTtcblxuXG4gIGl0KCdzaG91bGQgcmVxdWlyZSBwbGF0Zm9ybU5hbWUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKHtcbiAgICAgIGFsd2F5c01hdGNoOiB7XG4gICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEZWxvcmVhbidcbiAgICAgIH1cbiAgICB9KS5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoZXJyb3JzLlNlc3Npb25Ob3RDcmVhdGVkRXJyb3IsIC9wbGF0Zm9ybU5hbWUvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBub3QgY2FyZSBhYm91dCBjYXAgb3JkZXInLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgIGFsd2F5c01hdGNoOiB7XG4gICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEZWxvcmVhbicsXG4gICAgICAgIHBsYXRmb3JtTmFtZTogJ2lPUydcbiAgICAgIH1cbiAgICB9KS5zaG91bGQuZXZlbnR1YWxseS5iZS5mdWxmaWxsZWQ7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY2hlY2sgcmVxdWlyZWQgY2FwcyB3aGljaCBhcmUgYWRkZWQgdG8gZHJpdmVyJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGQuZGVzaXJlZENhcENvbnN0cmFpbnRzID0ge1xuICAgICAgbmVjZXNzYXJ5OiB7XG4gICAgICAgIHByZXNlbmNlOiB0cnVlXG4gICAgICB9LFxuICAgICAgcHJvcGVyOiB7XG4gICAgICAgIHByZXNlbmNlOiB0cnVlLFxuICAgICAgICBpc1N0cmluZzogdHJ1ZSxcbiAgICAgICAgaW5jbHVzaW9uOiBbJ0RlbG9yZWFuJywgJ1JldmVudG9uJ11cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgIGFsd2F5c01hdGNoOiB7XG4gICAgICAgICdwbGF0Zm9ybU5hbWUnOiAnaU9TJyxcbiAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0RlbG9yZWFuJ1xuICAgICAgfVxuICAgIH0pLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkV2l0aChlcnJvcnMuU2Vzc2lvbk5vdENyZWF0ZWRFcnJvciwgL25lY2Vzc2FyeS4qcHJvcGVyLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY2hlY2sgYWRkZWQgcmVxdWlyZWQgY2FwcyBpbiBhZGRpdGlvbiB0byBiYXNlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGQuZGVzaXJlZENhcENvbnN0cmFpbnRzID0ge1xuICAgICAgbmVjZXNzYXJ5OiB7XG4gICAgICAgIHByZXNlbmNlOiB0cnVlXG4gICAgICB9LFxuICAgICAgcHJvcGVyOiB7XG4gICAgICAgIHByZXNlbmNlOiB0cnVlLFxuICAgICAgICBpc1N0cmluZzogdHJ1ZSxcbiAgICAgICAgaW5jbHVzaW9uOiBbJ0RlbG9yZWFuJywgJ1JldmVudG9uJ11cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgIGFsd2F5c01hdGNoOiB7XG4gICAgICAgICdhcHBpdW06bmVjZXNzYXJ5JzogJ3l1cCdcbiAgICAgIH1cbiAgICB9KS5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoZXJyb3JzLlNlc3Npb25Ob3RDcmVhdGVkRXJyb3IsIC9wbGF0Zm9ybU5hbWUvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBhY2NlcHQgZXh0cmEgY2FwYWJpbGl0aWVzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7XG4gICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICAncGxhdGZvcm1OYW1lJzogJ2lPUycsXG4gICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEZWxvcmVhbicsXG4gICAgICAgICdhcHBpdW06ZXh0cmEnOiAnY2hlZXNlJyxcbiAgICAgICAgJ2FwcGl1bTpob2xkIHRoZSc6ICdzYXVjZSdcbiAgICAgIH1cbiAgICB9KS5zaG91bGQuZXZlbnR1YWxseS5iZS5mdWxmaWxsZWQ7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgbG9nIHRoZSB1c2Ugb2YgZXh0cmEgY2FwcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnRpbWVvdXQoNTAwKTtcblxuICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7XG4gICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICAncGxhdGZvcm1OYW1lJzogJ2lPUycsXG4gICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEZWxvcmVhbicsXG4gICAgICAgICdhcHBpdW06ZXh0cmEnOiAnY2hlZXNlJyxcbiAgICAgICAgJ2FwcGl1bTpob2xkIHRoZSc6ICdzYXVjZSdcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGQubG9nLndhcm4uc2hvdWxkLmhhdmUuYmVlbi5jYWxsZWQ7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYmUgc2Vuc2l0aXZlIHRvIHRoZSBjYXNlIG9mIGNhcHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgIGFsd2F5c01hdGNoOiB7XG4gICAgICAgICdwbGF0Zm9ybW5hbWUnOiAnaU9TJyxcbiAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0RlbG9yZWFuJ1xuICAgICAgfVxuICAgIH0pLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkV2l0aChlcnJvcnMuU2Vzc2lvbk5vdENyZWF0ZWRFcnJvciwgL3BsYXRmb3JtTmFtZS8pO1xuICB9KTtcblxuICBkZXNjcmliZSgnYm9vbGVhbiBjYXBhYmlsaXRpZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBhbGxvdyBhIHN0cmluZyBcImZhbHNlXCInLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwge1xuICAgICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICAgICdwbGF0Zm9ybU5hbWUnOiAnaU9TJyxcbiAgICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRGVsb3JlYW4nLFxuICAgICAgICAgICdhcHBpdW06bm9SZXNldCc6ICdmYWxzZSdcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBkLmxvZy53YXJuLnNob3VsZC5oYXZlLmJlZW4uY2FsbGVkO1xuXG4gICAgICBsZXQgc2Vzc2lvbnMgPSBhd2FpdCBkLmdldFNlc3Npb25zKCk7XG4gICAgICBzZXNzaW9uc1swXS5jYXBhYmlsaXRpZXMubm9SZXNldC5zaG91bGQuZXFsKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYWxsb3cgYSBzdHJpbmcgXCJ0cnVlXCInLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwge1xuICAgICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICAgICdwbGF0Zm9ybU5hbWUnOiAnaU9TJyxcbiAgICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRGVsb3JlYW4nLFxuICAgICAgICAgICdhcHBpdW06bm9SZXNldCc6ICd0cnVlJ1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGQubG9nLndhcm4uc2hvdWxkLmhhdmUuYmVlbi5jYWxsZWQ7XG5cbiAgICAgIGxldCBzZXNzaW9ucyA9IGF3YWl0IGQuZ2V0U2Vzc2lvbnMoKTtcbiAgICAgIHNlc3Npb25zWzBdLmNhcGFiaWxpdGllcy5ub1Jlc2V0LnNob3VsZC5lcWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGFsbG93IGEgc3RyaW5nIFwidHJ1ZVwiIGluIHN0cmluZyBjYXBhYmlsaXRpZXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwge1xuICAgICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICAgICdwbGF0Zm9ybU5hbWUnOiAnaU9TJyxcbiAgICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRGVsb3JlYW4nLFxuICAgICAgICAgICdhcHBpdW06bGFuZ3VhZ2UnOiAndHJ1ZSdcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBkLmxvZy53YXJuLnNob3VsZC5ub3QuaGF2ZS5iZWVuLmNhbGxlZDtcblxuICAgICAgbGV0IHNlc3Npb25zID0gYXdhaXQgZC5nZXRTZXNzaW9ucygpO1xuICAgICAgc2Vzc2lvbnNbMF0uY2FwYWJpbGl0aWVzLmxhbmd1YWdlLnNob3VsZC5lcWwoJ3RydWUnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ251bWJlciBjYXBhYmlsaXRpZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBhbGxvdyBhIHN0cmluZyBcIjFcIicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7XG4gICAgICAgIGFsd2F5c01hdGNoOiB7XG4gICAgICAgICAgJ3BsYXRmb3JtTmFtZSc6ICdpT1MnLFxuICAgICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEZWxvcmVhbicsXG4gICAgICAgICAgJ2FwcGl1bTpuZXdDb21tYW5kVGltZW91dCc6ICcxJ1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGQubG9nLndhcm4uc2hvdWxkLmhhdmUuYmVlbi5jYWxsZWQ7XG5cbiAgICAgIGxldCBzZXNzaW9ucyA9IGF3YWl0IGQuZ2V0U2Vzc2lvbnMoKTtcbiAgICAgIHNlc3Npb25zWzBdLmNhcGFiaWxpdGllcy5uZXdDb21tYW5kVGltZW91dC5zaG91bGQuZXFsKDEpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBhbGxvdyBhIHN0cmluZyBcIjEuMVwiJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgICAncGxhdGZvcm1OYW1lJzogJ2lPUycsXG4gICAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0RlbG9yZWFuJyxcbiAgICAgICAgICAnYXBwaXVtOm5ld0NvbW1hbmRUaW1lb3V0JzogJzEuMSdcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBkLmxvZy53YXJuLnNob3VsZC5oYXZlLmJlZW4uY2FsbGVkO1xuXG4gICAgICBsZXQgc2Vzc2lvbnMgPSBhd2FpdCBkLmdldFNlc3Npb25zKCk7XG4gICAgICBzZXNzaW9uc1swXS5jYXBhYmlsaXRpZXMubmV3Q29tbWFuZFRpbWVvdXQuc2hvdWxkLmVxbCgxLjEpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBhbGxvdyBhIHN0cmluZyBcIjFcIiBpbiBzdHJpbmcgY2FwYWJpbGl0aWVzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgICAncGxhdGZvcm1OYW1lJzogJ2lPUycsXG4gICAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0RlbG9yZWFuJyxcbiAgICAgICAgICAnYXBwaXVtOmxhbmd1YWdlJzogJzEnXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgZC5sb2cud2Fybi5zaG91bGQubm90LmhhdmUuYmVlbi5jYWxsZWQ7XG5cbiAgICAgIGxldCBzZXNzaW9ucyA9IGF3YWl0IGQuZ2V0U2Vzc2lvbnMoKTtcbiAgICAgIHNlc3Npb25zWzBdLmNhcGFiaWxpdGllcy5sYW5ndWFnZS5zaG91bGQuZXFsKCcxJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0ICgnc2hvdWxkIGVycm9yIGlmIG9iamVjdHMgaW4gY2FwcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwge1xuICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgJ3BsYXRmb3JtTmFtZSc6IHthOiAnaU9TJ30sXG4gICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEZWxvcmVhbidcbiAgICAgIH1cbiAgICB9KS5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoZXJyb3JzLlNlc3Npb25Ob3RDcmVhdGVkRXJyb3IsIC9wbGF0Zm9ybU5hbWUvaSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY2hlY2sgZm9yIGRlcHJlY2F0ZWQgY2FwcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnRpbWVvdXQoNTAwKTtcblxuICAgIGQuZGVzaXJlZENhcENvbnN0cmFpbnRzID0ge1xuICAgICAgJ2x5bngtdmVyc2lvbic6IHtcbiAgICAgICAgZGVwcmVjYXRlZDogdHJ1ZVxuICAgICAgfVxuICAgIH07XG5cbiAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwge1xuICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgJ3BsYXRmb3JtTmFtZSc6ICdpT1MnLFxuICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRGVsb3JlYW4nLFxuICAgICAgICAnYXBwaXVtOmx5bngtdmVyc2lvbic6IDVcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGxvZ2dlci53YXJuLnNob3VsZC5oYXZlLmJlZW4uY2FsbGVkO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIG5vdCB3YXJuIGlmIGRlcHJlY2F0ZWQ9ZmFsc2UnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy50aW1lb3V0KDUwMCk7XG5cbiAgICBkLmRlc2lyZWRDYXBDb25zdHJhaW50cyA9IHtcbiAgICAgICdseW54LXZlcnNpb24nOiB7XG4gICAgICAgIGRlcHJlY2F0ZWQ6IGZhbHNlXG4gICAgICB9XG4gICAgfTtcblxuICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7XG4gICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICAncGxhdGZvcm1OYW1lJzogJ2lPUycsXG4gICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEZWxvcmVhbicsXG4gICAgICAgICdhcHBpdW06bHlueC12ZXJzaW9uJzogNVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgZC5sb2cud2Fybi5zaG91bGQubm90LmhhdmUuYmVlbi5jYWxsZWQ7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgbm90IHZhbGlkYXRlIGFnYWluc3QgbnVsbC91bmRlZmluZWQgY2FwcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBkLmRlc2lyZWRDYXBDb25zdHJhaW50cyA9IHtcbiAgICAgICdmb28nOiB7XG4gICAgICAgIGlzU3RyaW5nOiB0cnVlXG4gICAgICB9XG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwge1xuICAgICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICAgIHBsYXRmb3JtTmFtZTogJ2lPUycsXG4gICAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0R1bWInLFxuICAgICAgICAgICdhcHBpdW06Zm9vJzogbnVsbFxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgZC5kZWxldGVTZXNzaW9uKCk7XG4gICAgfVxuXG4gICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgIGFsd2F5c01hdGNoOiB7XG4gICAgICAgIHBsYXRmb3JtTmFtZTogJ2lPUycsXG4gICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEdW1iJyxcbiAgICAgICAgJ2FwcGl1bTpmb28nOiAxXG4gICAgICB9XG4gICAgfSkuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWRXaXRoKC8nZm9vJyBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nLyk7XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAgICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEdW1iJyxcbiAgICAgICAgICAnYXBwaXVtOmZvbyc6IHVuZGVmaW5lZFxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgZC5kZWxldGVTZXNzaW9uKCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7XG4gICAgICAgIGFsd2F5c01hdGNoOiB7XG4gICAgICAgICAgcGxhdGZvcm1OYW1lOiAnaU9TJyxcbiAgICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRHVtYicsXG4gICAgICAgICAgJ2FwcGl1bTpmb28nOiAnJ1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgZC5kZWxldGVTZXNzaW9uKCk7XG4gICAgfVxuICB9KTtcblxuICBpdCgnc2hvdWxkIHN0aWxsIHZhbGlkYXRlIG51bGwvdW5kZWZpbmVkL2VtcHR5IGNhcHMgd2hvc2UgcHJlc2VuY2UgaXMgcmVxdWlyZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgZC5kZXNpcmVkQ2FwQ29uc3RyYWludHMgPSB7XG4gICAgICBmb286IHtcbiAgICAgICAgcHJlc2VuY2U6IHRydWVcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7XG4gICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRHVtYicsXG4gICAgICAgICdhcHBpdW06Zm9vJzogbnVsbFxuICAgICAgfVxuICAgIH0pLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkV2l0aCgvYmxhbmsvKTtcblxuICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCB7XG4gICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRHVtYicsXG4gICAgICAgICdhcHBpdW06Zm9vJzogJydcbiAgICAgIH1cbiAgICB9KS5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoL2JsYW5rLyk7XG5cbiAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24oe1xuICAgICAgZmlyc3RNYXRjaDogW3tcbiAgICAgICAgcGxhdGZvcm1OYW1lOiAnaU9TJyxcbiAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0R1bWInLFxuICAgICAgICAnYXBwaXVtOmZvbyc6IHt9XG4gICAgICB9XVxuICAgIH0pLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkV2l0aCgvYmxhbmsvKTtcblxuICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbih7XG4gICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRHVtYicsXG4gICAgICAgICdhcHBpdW06Zm9vJzogW11cbiAgICAgIH1cbiAgICB9KS5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoL2JsYW5rLyk7XG5cbiAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24oe1xuICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgcGxhdGZvcm1OYW1lOiAnaU9TJyxcbiAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0R1bWInLFxuICAgICAgICAnYXBwaXVtOmZvbyc6ICcgICdcbiAgICAgIH1cbiAgICB9KS5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoL2JsYW5rLyk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCd3M2MnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBhY2NlcHQgdzNjIGNhcGFiaWxpdGllcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IFtzZXNzaW9uSWQsIGNhcHNdID0gYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAgICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEZWxvcmVhbidcbiAgICAgICAgfSwgZmlyc3RNYXRjaDogW3t9XSxcbiAgICAgIH0pO1xuICAgICAgdHJ5IHtcbiAgICAgICAgc2Vzc2lvbklkLnNob3VsZC5leGlzdDtcbiAgICAgICAgY2Fwcy5zaG91bGQuZXFsKHtcbiAgICAgICAgICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAgICAgICAgIGRldmljZU5hbWU6ICdEZWxvcmVhbicsXG4gICAgICAgIH0pO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgYXdhaXQgZC5kZWxldGVTZXNzaW9uKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJhaXNlIGFuIGVycm9yIGlmIHczYyBjYXBhYmlsaXRpZXMgaXMgbm90IGEgcGxhaW4gSlNPTiBvYmplY3QnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0ZXN0VmFsdWVzID0gW3RydWUsICdzdHJpbmcnLCBbXSwgMTAwXTtcbiAgICAgIC8vIHRoaXMgbG9vcCBydW5zIGluIHBhcmFsbGVsLCBhbmQgZG9lcyBub3QgZ3VhcmFudGVlIGFsbCBhc3NlcnRpb25zIHdpbGwgYmUgbWFkZVxuICAgICAgYXdhaXQgQi5tYXAodGVzdFZhbHVlcywgKHZhbCkgPT4gZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHZhbCkuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWRXaXRoKGVycm9ycy5TZXNzaW9uTm90Q3JlYXRlZEVycm9yKSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwiZmlsZSI6InRlc3QvYmFzZWRyaXZlci9jYXBhYmlsaXR5LXNwZWNzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
|
|
@@ -6,7 +6,7 @@ require("source-map-support/register");
|
|
|
6
6
|
|
|
7
7
|
var _log = _interopRequireDefault(require("../../../lib/basedriver/commands/log"));
|
|
8
8
|
|
|
9
|
-
var _sinon =
|
|
9
|
+
var _sinon = require("sinon");
|
|
10
10
|
|
|
11
11
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
12
12
|
|
|
@@ -24,8 +24,16 @@ const SUPPORTED_LOG_TYPES = {
|
|
|
24
24
|
}
|
|
25
25
|
};
|
|
26
26
|
describe('log commands -', function () {
|
|
27
|
+
let sandbox;
|
|
27
28
|
beforeEach(function () {
|
|
29
|
+
sandbox = (0, _sinon.createSandbox)();
|
|
28
30
|
_log.default.supportedLogTypes = {};
|
|
31
|
+
_log.default.log = {
|
|
32
|
+
debug: _lodash.default.noop
|
|
33
|
+
};
|
|
34
|
+
});
|
|
35
|
+
afterEach(function () {
|
|
36
|
+
sandbox.restore();
|
|
29
37
|
});
|
|
30
38
|
describe('getLogTypes', function () {
|
|
31
39
|
it('should return empty array when no supported log types', async function () {
|
|
@@ -38,9 +46,8 @@ describe('log commands -', function () {
|
|
|
38
46
|
});
|
|
39
47
|
describe('getLog', function () {
|
|
40
48
|
beforeEach(function () {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
_sinon.default.spy(SUPPORTED_LOG_TYPES.two, 'getter');
|
|
49
|
+
sandbox.spy(SUPPORTED_LOG_TYPES.one, 'getter');
|
|
50
|
+
sandbox.spy(SUPPORTED_LOG_TYPES.two, 'getter');
|
|
44
51
|
});
|
|
45
52
|
afterEach(function () {
|
|
46
53
|
SUPPORTED_LOG_TYPES.one.getter.restore();
|
|
@@ -77,4 +84,4 @@ describe('log commands -', function () {
|
|
|
77
84
|
});require('source-map-support').install();
|
|
78
85
|
|
|
79
86
|
|
|
80
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
87
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvYmFzZWRyaXZlci9jb21tYW5kcy9sb2ctc3BlY3MuanMiXSwibmFtZXMiOlsiZXhwZWN0IiwiY2hhaSIsIkZJUlNUX0xPR1MiLCJTRUNPTkRfTE9HUyIsIlNVUFBPUlRFRF9MT0dfVFlQRVMiLCJvbmUiLCJkZXNjcmlwdGlvbiIsImdldHRlciIsIl8iLCJjbG9uZSIsInR3byIsImRlc2NyaWJlIiwic2FuZGJveCIsImJlZm9yZUVhY2giLCJsb2dDb21tYW5kcyIsInN1cHBvcnRlZExvZ1R5cGVzIiwibG9nIiwiZGVidWciLCJub29wIiwiYWZ0ZXJFYWNoIiwicmVzdG9yZSIsIml0IiwiZ2V0TG9nVHlwZXMiLCJzaG91bGQiLCJlcWwiLCJzcHkiLCJnZXRMb2ciLCJldmVudHVhbGx5IiwiYmUiLCJyZWplY3RlZCIsImNhbGxlZCIsImZhbHNlIiwiZXJyIiwiX2VyciIsInRvIiwiZXhpc3QiLCJtZXNzYWdlIiwibG9ncyIsInRydWUiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUdBLE1BQU1BLE1BQU0sR0FBR0MsSUFBSSxDQUFDRCxNQUFwQjtBQUVBLE1BQU1FLFVBQVUsR0FBRyxDQUFDLE9BQUQsRUFBVSxNQUFWLENBQW5CO0FBQ0EsTUFBTUMsV0FBVyxHQUFHLENBQUMsUUFBRCxFQUFXLE1BQVgsQ0FBcEI7QUFDQSxNQUFNQyxtQkFBbUIsR0FBRztBQUMxQkMsRUFBQUEsR0FBRyxFQUFFO0FBQ0hDLElBQUFBLFdBQVcsRUFBRSxZQURWO0FBRUhDLElBQUFBLE1BQU0sRUFBRSxNQUFNQyxnQkFBRUMsS0FBRixDQUFRUCxVQUFSO0FBRlgsR0FEcUI7QUFLMUJRLEVBQUFBLEdBQUcsRUFBRTtBQUNISixJQUFBQSxXQUFXLEVBQUUsY0FEVjtBQUVIQyxJQUFBQSxNQUFNLEVBQUUsTUFBTUMsZ0JBQUVDLEtBQUYsQ0FBUU4sV0FBUjtBQUZYO0FBTHFCLENBQTVCO0FBV0FRLFFBQVEsQ0FBQyxnQkFBRCxFQUFtQixZQUFZO0FB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K0J1QixNQUEvQixDQUFzQ1AsTUFBdEMsQ0FBNkNLLEVBQTdDLENBQWdERyxLQUFoRDtBQUNELEtBWkMsQ0FBRjtBQWFBVixJQUFBQSxFQUFFLENBQUMsa0RBQUQsRUFBcUQsa0JBQWtCO0FBQ3ZFUCxtQkFBWUMsaUJBQVosR0FBZ0NYLG1CQUFoQztBQUNBLFVBQUlpQyxJQUFJLEdBQUcsTUFBTXZCLGFBQVlZLE1BQVosQ0FBbUIsS0FBbkIsQ0FBakI7QUFDQVcsTUFBQUEsSUFBSSxDQUFDZCxNQUFMLENBQVlDLEdBQVosQ0FBZ0J0QixVQUFoQjtBQUNBRSxNQUFBQSxtQkFBbUIsQ0FBQ0MsR0FBcEIsQ0FBd0JFLE1BQXhCLENBQStCdUIsTUFBL0IsQ0FBc0NQLE1BQXRDLENBQTZDSyxFQUE3QyxDQUFnRFUsSUFBaEQ7QUFDQWxDLE1BQUFBLG1CQUFtQixDQUFDTSxHQUFwQixDQUF3QkgsTUFBeEIsQ0FBK0J1QixNQUEvQixDQUFzQ1AsTUFBdEMsQ0FBNkNLLEVBQTdDLENBQWdERyxLQUFoRDtBQUNELEtBTkMsQ0FBRjtBQU9ELEdBbENPLENBQVI7QUFtQ0QsQ0ExRE8sQ0FBUiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2dDb21tYW5kcyBmcm9tICcuLi8uLi8uLi9saWIvYmFzZWRyaXZlci9jb21tYW5kcy9sb2cnO1xuaW1wb3J0IHsgY3JlYXRlU2FuZGJveCB9IGZyb20gJ3Npbm9uJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cblxuY29uc3QgZXhwZWN0ID0gY2hhaS5leHBlY3Q7XG5cbmNvbnN0IEZJUlNUX0xPR1MgPSBbJ2ZpcnN0JywgJ2xvZ3MnXTtcbmNvbnN0IFNFQ09ORF9MT0dTID0gWydzZWNvbmQnLCAnbG9ncyddO1xuY29uc3QgU1VQUE9SVEVEX0xPR19UWVBFUyA9IHtcbiAgb25lOiB7XG4gICAgZGVzY3JpcHRpb246ICdGaXJzdCBsb2dzJyxcbiAgICBnZXR0ZXI6ICgpID0+IF8uY2xvbmUoRklSU1RfTE9HUyksXG4gIH0sXG4gIHR3bzoge1xuICAgIGRlc2NyaXB0aW9uOiAnU2Vjb25kcyBsb2dzJyxcbiAgICBnZXR0ZXI6ICgpID0+IF8uY2xvbmUoU0VDT05EX0xPR1MpLFxuICB9LFxufTtcblxuZGVzY3JpYmUoJ2xvZyBjb21tYW5kcyAtJywgZnVuY3Rpb24gKCkge1xuICBsZXQgc2FuZGJveDtcblxuICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBzYW5kYm94ID0gY3JlYXRlU2FuZGJveCgpO1xuICAgIC8vIHJlc2V0IHRoZSBzdXBwb3J0ZWQgbG9nIHR5cGVzXG4gICAgbG9nQ29tbWFuZHMuc3VwcG9ydGVkTG9nVHlwZXMgPSB7fTtcbiAgICBsb2dDb21tYW5kcy5sb2cgPSB7ZGVidWc6IF8ubm9vcH07XG4gIH0pO1xuXG4gIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgc2FuZGJveC5yZXN0b3JlKCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdnZXRMb2dUeXBlcycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIHJldHVybiBlbXB0eSBhcnJheSB3aGVuIG5vIHN1cHBvcnRlZCBsb2cgdHlwZXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAoYXdhaXQgbG9nQ29tbWFuZHMuZ2V0TG9nVHlwZXMoKSkuc2hvdWxkLmVxbChbXSk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4ga2V5cyB0byBsb2cgdHlwZSBvYmplY3QnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBsb2dDb21tYW5kcy5zdXBwb3J0ZWRMb2dUeXBlcyA9IFNVUFBPUlRFRF9MT0dfVFlQRVM7XG4gICAgICAoYXdhaXQgbG9nQ29tbWFuZHMuZ2V0TG9nVHlwZXMoKSkuc2hvdWxkLmVxbChbJ29uZScsICd0d28nXSk7XG4gICAgfSk7XG4gIH0pO1xuICBkZXNjcmliZSgnZ2V0TG9nJywgZnVuY3Rpb24gKCkge1xuICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgc2FuZGJveC5zcHkoU1VQUE9SVEVEX0xPR19UWVBFUy5vbmUsICdnZXR0ZXInKTtcbiAgICAgIHNhbmRib3guc3B5KFNVUFBPUlRFRF9MT0dfVFlQRVMudHdvLCAnZ2V0dGVyJyk7XG4gICAgfSk7XG4gICAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIFNVUFBPUlRFRF9MT0dfVFlQRVMub25lLmdldHRlci5yZXN0b3JlKCk7XG4gICAgICBTVVBQT1JURURfTE9HX1RZUEVTLnR3by5nZXR0ZXIucmVzdG9yZSgpO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgdGhyb3cgZXJyb3IgaWYgbG9nIHR5cGUgbm90IHN1cHBvcnRlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGxvZ0NvbW1hbmRzLmdldExvZygnb25lJykuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWQ7XG4gICAgICBTVVBQT1JURURfTE9HX1RZUEVTLm9uZS5nZXR0ZXIuY2FsbGVkLnNob3VsZC5iZS5mYWxzZTtcbiAgICAgIFNVUFBPUlRFRF9MT0dfVFlQRVMudHdvLmdldHRlci5jYWxsZWQuc2hvdWxkLmJlLmZhbHNlO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgdGhyb3cgYW4gZXJyb3Igd2l0aCBhdmFpbGFibGUgbG9nIHR5cGVzIGlmIGxvZyB0eXBlIG5vdCBzdXBwb3J0ZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBsb2dDb21tYW5kcy5zdXBwb3J0ZWRMb2dUeXBlcyA9IFNVUFBPUlRFRF9MT0dfVFlQRVM7XG4gICAgICBsZXQgZXJyO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgbG9nQ29tbWFuZHMuZ2V0TG9nKCd0aHJlZScpO1xuICAgICAgfSBjYXRjaCAoX2Vycikge1xuICAgICAgICBlcnIgPSBfZXJyO1xuICAgICAgfVxuICAgICAgZXhwZWN0KGVycikudG8uZXhpc3Q7XG4gICAgICBlcnIubWVzc2FnZS5zaG91bGQuZXFsKGBVbnN1cHBvcnRlZCBsb2cgdHlwZSAndGhyZWUnLiBTdXBwb3J0ZWQgdHlwZXM6IHtcIm9uZVwiOlwiRmlyc3QgbG9nc1wiLFwidHdvXCI6XCJTZWNvbmRzIGxvZ3NcIn1gKTtcbiAgICAgIFNVUFBPUlRFRF9MT0dfVFlQRVMub25lLmdldHRlci5jYWxsZWQuc2hvdWxkLmJlLmZhbHNlO1xuICAgICAgU1VQUE9SVEVEX0xPR19UWVBFUy50d28uZ2V0dGVyLmNhbGxlZC5zaG91bGQuYmUuZmFsc2U7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBjYWxsIGdldHRlciBvbiBhcHByb3ByaWF0ZSBsb2cgd2hlbiBmb3VuZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxvZ0NvbW1hbmRzLnN1cHBvcnRlZExvZ1R5cGVzID0gU1VQUE9SVEVEX0xPR19UWVBFUztcbiAgICAgIGxldCBsb2dzID0gYXdhaXQgbG9nQ29tbWFuZHMuZ2V0TG9nKCdvbmUnKTtcbiAgICAgIGxvZ3Muc2hvdWxkLmVxbChGSVJTVF9MT0dTKTtcbiAgICAgIFNVUFBPUlRFRF9MT0dfVFlQRVMub25lLmdldHRlci5jYWxsZWQuc2hvdWxkLmJlLnRydWU7XG4gICAgICBTVVBQT1JURURfTE9HX1RZUEVTLnR3by5nZXR0ZXIuY2FsbGVkLnNob3VsZC5iZS5mYWxzZTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLCJmaWxlIjoidGVzdC9iYXNlZHJpdmVyL2NvbW1hbmRzL2xvZy1zcGVjcy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLiJ9
|