@pie-lib/mask-markup 3.1.6-beta.13 → 3.1.6-beta.15
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.
|
@@ -159,6 +159,129 @@ describe('Mask', function () {
|
|
|
159
159
|
expect(container.querySelector('tr')).toBeInTheDocument();
|
|
160
160
|
});
|
|
161
161
|
});
|
|
162
|
+
describe('mark rendering', function () {
|
|
163
|
+
var markedLayout = function markedLayout(marks) {
|
|
164
|
+
var text = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'x';
|
|
165
|
+
return {
|
|
166
|
+
nodes: [{
|
|
167
|
+
object: 'text',
|
|
168
|
+
leaves: [{
|
|
169
|
+
marks: marks,
|
|
170
|
+
text: text
|
|
171
|
+
}]
|
|
172
|
+
}]
|
|
173
|
+
};
|
|
174
|
+
};
|
|
175
|
+
it('renders a mark as an element, not as escaped html text', function () {
|
|
176
|
+
var _render6 = (0, _react2.render)(/*#__PURE__*/React.createElement(_mask["default"], (0, _extends2["default"])({}, defaultProps, {
|
|
177
|
+
layout: markedLayout([{
|
|
178
|
+
type: 'bold'
|
|
179
|
+
}])
|
|
180
|
+
}))),
|
|
181
|
+
container = _render6.container;
|
|
182
|
+
var b = container.querySelector('b');
|
|
183
|
+
expect(b).toBeInTheDocument();
|
|
184
|
+
expect(b.textContent).toBe('x');
|
|
185
|
+
// the tag must not leak into the text content
|
|
186
|
+
expect(container.textContent).toBe('x');
|
|
187
|
+
});
|
|
188
|
+
it.each([['bold', 'b'], ['italic', 'em'], ['underline', 'u'], ['strikethrough', 's'], ['code', 'code'], ['strong', 'strong']])('maps the %s mark to a <%s> element', function (markType, tag) {
|
|
189
|
+
var _render7 = (0, _react2.render)(/*#__PURE__*/React.createElement(_mask["default"], (0, _extends2["default"])({}, defaultProps, {
|
|
190
|
+
layout: markedLayout([{
|
|
191
|
+
type: markType
|
|
192
|
+
}])
|
|
193
|
+
}))),
|
|
194
|
+
container = _render7.container;
|
|
195
|
+
var el = container.querySelector(tag);
|
|
196
|
+
expect(el).toBeInTheDocument();
|
|
197
|
+
expect(el.textContent).toBe('x');
|
|
198
|
+
});
|
|
199
|
+
it('nests multiple marks, keeping the first mark as the outermost tag', function () {
|
|
200
|
+
var _render8 = (0, _react2.render)(/*#__PURE__*/React.createElement(_mask["default"], (0, _extends2["default"])({}, defaultProps, {
|
|
201
|
+
layout: markedLayout([{
|
|
202
|
+
type: 'bold'
|
|
203
|
+
}, {
|
|
204
|
+
type: 'italic'
|
|
205
|
+
}])
|
|
206
|
+
}))),
|
|
207
|
+
container = _render8.container;
|
|
208
|
+
var nested = container.querySelector('b > em');
|
|
209
|
+
expect(nested).toBeInTheDocument();
|
|
210
|
+
expect(nested.textContent).toBe('x');
|
|
211
|
+
expect(container.textContent).toBe('x');
|
|
212
|
+
});
|
|
213
|
+
it('nests three marks in mark order', function () {
|
|
214
|
+
var _render9 = (0, _react2.render)(/*#__PURE__*/React.createElement(_mask["default"], (0, _extends2["default"])({}, defaultProps, {
|
|
215
|
+
layout: markedLayout([{
|
|
216
|
+
type: 'underline'
|
|
217
|
+
}, {
|
|
218
|
+
type: 'strikethrough'
|
|
219
|
+
}, {
|
|
220
|
+
type: 'italic'
|
|
221
|
+
}])
|
|
222
|
+
}))),
|
|
223
|
+
container = _render9.container;
|
|
224
|
+
var nested = container.querySelector('u > s > em');
|
|
225
|
+
expect(nested).toBeInTheDocument();
|
|
226
|
+
expect(nested.textContent).toBe('x');
|
|
227
|
+
});
|
|
228
|
+
it('renders plain text when no mark maps to a tag', function () {
|
|
229
|
+
var _render0 = (0, _react2.render)(/*#__PURE__*/React.createElement(_mask["default"], (0, _extends2["default"])({}, defaultProps, {
|
|
230
|
+
layout: markedLayout([{
|
|
231
|
+
type: 'unknown-mark'
|
|
232
|
+
}])
|
|
233
|
+
}))),
|
|
234
|
+
container = _render0.container;
|
|
235
|
+
expect(container.textContent).toBe('x');
|
|
236
|
+
expect(container.firstChild.childNodes[0].nodeType).toBe(Node.TEXT_NODE);
|
|
237
|
+
});
|
|
238
|
+
it('wraps only the marks that map to a tag', function () {
|
|
239
|
+
var _render1 = (0, _react2.render)(/*#__PURE__*/React.createElement(_mask["default"], (0, _extends2["default"])({}, defaultProps, {
|
|
240
|
+
layout: markedLayout([{
|
|
241
|
+
type: 'unknown-mark'
|
|
242
|
+
}, {
|
|
243
|
+
type: 'bold'
|
|
244
|
+
}])
|
|
245
|
+
}))),
|
|
246
|
+
container = _render1.container;
|
|
247
|
+
var b = container.querySelector('b');
|
|
248
|
+
expect(b).toBeInTheDocument();
|
|
249
|
+
expect(b.textContent).toBe('x');
|
|
250
|
+
expect(container.textContent).toBe('x');
|
|
251
|
+
});
|
|
252
|
+
it('renders marked text inline alongside unmarked text', function () {
|
|
253
|
+
var _render10 = (0, _react2.render)(/*#__PURE__*/React.createElement(_mask["default"], (0, _extends2["default"])({}, defaultProps, {
|
|
254
|
+
layout: {
|
|
255
|
+
nodes: [{
|
|
256
|
+
object: 'text',
|
|
257
|
+
leaves: [{
|
|
258
|
+
text: 'Foo '
|
|
259
|
+
}]
|
|
260
|
+
}, {
|
|
261
|
+
object: 'text',
|
|
262
|
+
leaves: [{
|
|
263
|
+
marks: [{
|
|
264
|
+
type: 'bold'
|
|
265
|
+
}, {
|
|
266
|
+
type: 'italic'
|
|
267
|
+
}],
|
|
268
|
+
text: 'x'
|
|
269
|
+
}]
|
|
270
|
+
}, {
|
|
271
|
+
object: 'text',
|
|
272
|
+
leaves: [{
|
|
273
|
+
text: ' bar'
|
|
274
|
+
}]
|
|
275
|
+
}],
|
|
276
|
+
object: 'block',
|
|
277
|
+
type: 'div'
|
|
278
|
+
}
|
|
279
|
+
}))),
|
|
280
|
+
container = _render10.container;
|
|
281
|
+
expect(container.querySelector('b > em').textContent).toBe('x');
|
|
282
|
+
expect(container.textContent).toBe('Foo x bar');
|
|
283
|
+
});
|
|
284
|
+
});
|
|
162
285
|
describe('spacer rendering for DnD components', function () {
|
|
163
286
|
it('adds spacers before and after DnD blank components', function () {
|
|
164
287
|
var mockRenderChildren = jest.fn(function (n) {
|
|
@@ -170,7 +293,7 @@ describe('Mask', function () {
|
|
|
170
293
|
}
|
|
171
294
|
return null;
|
|
172
295
|
});
|
|
173
|
-
var
|
|
296
|
+
var _render11 = (0, _react2.render)(/*#__PURE__*/React.createElement(_mask["default"], (0, _extends2["default"])({}, defaultProps, {
|
|
174
297
|
renderChildren: mockRenderChildren,
|
|
175
298
|
layout: {
|
|
176
299
|
nodes: [{
|
|
@@ -185,7 +308,7 @@ describe('Mask', function () {
|
|
|
185
308
|
}]
|
|
186
309
|
}
|
|
187
310
|
}))),
|
|
188
|
-
container =
|
|
311
|
+
container = _render11.container;
|
|
189
312
|
|
|
190
313
|
// Check that renderChildren was called and spacers are present
|
|
191
314
|
// Count all children in the container - should be: spacer + blank + spacer = 3 elements
|
|
@@ -199,7 +322,7 @@ describe('Mask', function () {
|
|
|
199
322
|
"data-testid": "regular-component"
|
|
200
323
|
}, "Regular");
|
|
201
324
|
});
|
|
202
|
-
var
|
|
325
|
+
var _render12 = (0, _react2.render)(/*#__PURE__*/React.createElement(_mask["default"], (0, _extends2["default"])({}, defaultProps, {
|
|
203
326
|
renderChildren: mockRenderChildren,
|
|
204
327
|
layout: {
|
|
205
328
|
nodes: [{
|
|
@@ -211,7 +334,7 @@ describe('Mask', function () {
|
|
|
211
334
|
}]
|
|
212
335
|
}
|
|
213
336
|
}))),
|
|
214
|
-
container =
|
|
337
|
+
container = _render12.container;
|
|
215
338
|
|
|
216
339
|
// Should not have spacers - only the regular component
|
|
217
340
|
var maskContainer = container.firstChild;
|
|
@@ -228,7 +351,7 @@ describe('Mask', function () {
|
|
|
228
351
|
}
|
|
229
352
|
return null;
|
|
230
353
|
});
|
|
231
|
-
var
|
|
354
|
+
var _render13 = (0, _react2.render)(/*#__PURE__*/React.createElement(_mask["default"], (0, _extends2["default"])({}, defaultProps, {
|
|
232
355
|
renderChildren: mockRenderChildren,
|
|
233
356
|
elementType: "drag-in-the-blank",
|
|
234
357
|
layout: {
|
|
@@ -268,7 +391,7 @@ describe('Mask', function () {
|
|
|
268
391
|
}]
|
|
269
392
|
}
|
|
270
393
|
}))),
|
|
271
|
-
container =
|
|
394
|
+
container = _render13.container;
|
|
272
395
|
|
|
273
396
|
// Should have spacers even inside td element
|
|
274
397
|
var td = container.querySelector('td');
|
|
@@ -276,7 +399,7 @@ describe('Mask', function () {
|
|
|
276
399
|
expect(_react2.screen.getByTestId('blank-in-td')).toBeInTheDocument();
|
|
277
400
|
});
|
|
278
401
|
it('does not add spacers for text content', function () {
|
|
279
|
-
var
|
|
402
|
+
var _render14 = (0, _react2.render)(/*#__PURE__*/React.createElement(_mask["default"], (0, _extends2["default"])({}, defaultProps, {
|
|
280
403
|
elementType: "drag-in-the-blank",
|
|
281
404
|
layout: {
|
|
282
405
|
nodes: [{
|
|
@@ -287,7 +410,7 @@ describe('Mask', function () {
|
|
|
287
410
|
}]
|
|
288
411
|
}
|
|
289
412
|
}))),
|
|
290
|
-
container =
|
|
413
|
+
container = _render14.container;
|
|
291
414
|
|
|
292
415
|
// Should not have spacers for plain text - just text node
|
|
293
416
|
var maskContainer = container.firstChild;
|
|
@@ -305,7 +428,7 @@ describe('Mask', function () {
|
|
|
305
428
|
}
|
|
306
429
|
return null;
|
|
307
430
|
});
|
|
308
|
-
var
|
|
431
|
+
var _render15 = (0, _react2.render)(/*#__PURE__*/React.createElement(_mask["default"], (0, _extends2["default"])({}, defaultProps, {
|
|
309
432
|
renderChildren: mockRenderChildren,
|
|
310
433
|
layout: {
|
|
311
434
|
nodes: [{
|
|
@@ -331,7 +454,7 @@ describe('Mask', function () {
|
|
|
331
454
|
}]
|
|
332
455
|
}
|
|
333
456
|
}))),
|
|
334
|
-
container =
|
|
457
|
+
container = _render15.container;
|
|
335
458
|
|
|
336
459
|
// Should have 2 spacers per component = 4 spacers + 2 blanks = 6 total children
|
|
337
460
|
var maskContainer = container.firstChild;
|
|
@@ -341,4 +464,4 @@ describe('Mask', function () {
|
|
|
341
464
|
});
|
|
342
465
|
});
|
|
343
466
|
});
|
|
344
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfbWFzayIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJfdHlwZW9mIiwiaGFzIiwiZ2V0Iiwic2V0IiwiX3QiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVzY3JpYmUiLCJvbkNoYW5nZSIsImplc3QiLCJmbiIsImRlZmF1bHRQcm9wcyIsImxheW91dCIsIm5vZGVzIiwib2JqZWN0IiwibGVhdmVzIiwidGV4dCIsInZhbHVlIiwiYmVmb3JlRWFjaCIsIm1vY2tDbGVhciIsIml0IiwiX3JlbmRlciIsInJlbmRlciIsImNyZWF0ZUVsZW1lbnQiLCJjb250YWluZXIiLCJleHBlY3QiLCJmaXJzdENoaWxkIiwidG9CZUluVGhlRG9jdW1lbnQiLCJzY3JlZW4iLCJnZXRCeVRleHQiLCJfcmVuZGVyMiIsIl9leHRlbmRzMiIsInR5cGUiLCJfcmVuZGVyMyIsImRhdGEiLCJhdHRyaWJ1dGVzIiwicXVlcnlTZWxlY3RvciIsIl9yZW5kZXI0IiwibWFya3MiLCJ1bmRlZmluZWQiLCJlbSIsInRleHRDb250ZW50IiwidG9CZSIsImRhIiwiX3JlbmRlcjUiLCJtb2NrUmVuZGVyQ2hpbGRyZW4iLCJfbiRkYXRhIiwiZGF0YXNldCIsImNvbXBvbmVudCIsIl9yZW5kZXI2IiwicmVuZGVyQ2hpbGRyZW4iLCJtYXNrQ29udGFpbmVyIiwiY2hpbGROb2RlcyIsImdldEJ5VGVzdElkIiwiX3JlbmRlcjciLCJfbiRkYXRhMiIsIl9yZW5kZXI4IiwiZWxlbWVudFR5cGUiLCJ0ZCIsIl9yZW5kZXI5Iiwibm9kZVR5cGUiLCJOb2RlIiwiVEVYVF9OT0RFIiwiX24kZGF0YTMiLCJjb25jYXQiLCJ0ZXN0SWQiLCJfcmVuZGVyMCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vbWFzay50ZXN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHJlbmRlciwgc2NyZWVuIH0gZnJvbSAnQHRlc3RpbmctbGlicmFyeS9yZWFjdCc7XG5pbXBvcnQgTWFzayBmcm9tICcuLi9tYXNrJztcblxuZGVzY3JpYmUoJ01hc2snLCAoKSA9PiB7XG4gIC8vIERvbid0IG1vY2sgcmVuZGVyQ2hpbGRyZW4gLSBsZXQgdGhlIGNvbXBvbmVudCByZW5kZXIgbmF0dXJhbGx5XG4gIGNvbnN0IG9uQ2hhbmdlID0gamVzdC5mbigpO1xuICBjb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gICAgb25DaGFuZ2UsXG4gICAgbGF5b3V0OiB7XG4gICAgICBub2RlczogW1xuICAgICAgICB7XG4gICAgICAgICAgb2JqZWN0OiAndGV4dCcsXG4gICAgICAgICAgbGVhdmVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRleHQ6ICdGb28nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgIHZhbHVlOiB7fSxcbiAgfTtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBvbkNoYW5nZS5tb2NrQ2xlYXIoKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3JlbmRlcmluZycsICgpID0+IHtcbiAgICBpdCgncmVuZGVycyB3aXRoIGRlZmF1bHQgcHJvcHMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxNYXNrIHsuLi5kZWZhdWx0UHJvcHN9IC8+KTtcbiAgICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIHRleHQgY29udGVudCcsICgpID0+IHtcbiAgICAgIHJlbmRlcig8TWFzayB7Li4uZGVmYXVsdFByb3BzfSAvPik7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnRm9vJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyBhIHBhcmFncmFwaCBlbGVtZW50JywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPE1hc2tcbiAgICAgICAgICB7Li4uZGVmYXVsdFByb3BzfVxuICAgICAgICAgIGxheW91dD17e1xuICAgICAgICAgICAgbm9kZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdwJyxcbiAgICAgICAgICAgICAgICBub2RlczogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBvYmplY3Q6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgbGVhdmVzOiBbXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogJ0ZvbycsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfX1cbiAgICAgICAgLz4sXG4gICAgICApO1xuXG4gICAgICAvLyBQYXJhZ3JhcGggaXMgcmVuZGVyZWQgYXMgYSBzdHlsZWQgZGl2LCBub3QgYSA8cD4gdGFnXG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnRm9vJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyBuZXN0ZWQgZGl2IGFuZCBwYXJhZ3JhcGgnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgICA8TWFza1xuICAgICAgICAgIHsuLi5kZWZhdWx0UHJvcHN9XG4gICAgICAgICAgbGF5b3V0PXt7XG4gICAgICAgICAgICBub2RlczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ2RpdicsXG4gICAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgICAgYXR0cmlidXRlczoge30sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBub2RlczogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAncCcsXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgbm9kZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlYXZlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogJ0ZvbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH19XG4gICAgICAgIC8+LFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdkaXYnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIC8vIFBhcmFncmFwaCBpcyByZW5kZXJlZCBhcyBhIHN0eWxlZCBkaXYsIG5vdCBhIDxwPiB0YWdcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdGb28nKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIHRleHQgd2l0aCBpdGFsaWMgbWFya3MnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgICA8TWFza1xuICAgICAgICAgIHsuLi5kZWZhdWx0UHJvcHN9XG4gICAgICAgICAgbGF5b3V0PXt7XG4gICAgICAgICAgICBub2RlczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGVhdmVzOiBbeyB0ZXh0OiAnRm9vICcgfV0sXG4gICAgICAgICAgICAgICAgb2JqZWN0OiAndGV4dCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsZWF2ZXM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbWFya3M6IFtcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnaXRhbGljJyxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiAneCcsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgb2JqZWN0OiAndGV4dCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsZWF2ZXM6IFt7IHRleHQ6ICcgYmFyJyB9XSxcbiAgICAgICAgICAgICAgICBvYmplY3Q6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBvYmplY3Q6ICdibG9jaycsXG4gICAgICAgICAgICB0eXBlOiAnZGl2JyxcbiAgICAgICAgICB9fVxuICAgICAgICAvPixcbiAgICAgICk7XG5cbiAgICAgIC8vIFRleHQgXCJGb28gXCIgaXMgc3BsaXQgd2l0aCBzcGFjZXMsIHVzZSByZWdleFxuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoL0Zvby8pKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ3gnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KC9iYXIvKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIC8vIENoZWNrIGZvciBpdGFsaWMvZW0gZWxlbWVudFxuICAgICAgY29uc3QgZW0gPSBjb250YWluZXIucXVlcnlTZWxlY3RvcignZW0sIGknKTtcbiAgICAgIGV4cGVjdChlbSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChlbS50ZXh0Q29udGVudCkudG9CZSgneCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlbmRlcnMgdGJvZHkgd2l0aG91dCBleHRyYSBzcGFjZScsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhID0gKCkgPT4gKHsgZGF0YTogeyBhdHRyaWJ1dGVzOiB7fSB9IH0pO1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPE1hc2tcbiAgICAgICAgICB7Li4uZGVmYXVsdFByb3BzfVxuICAgICAgICAgIGxheW91dD17e1xuICAgICAgICAgICAgbm9kZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6ICd0YWJsZScsXG4gICAgICAgICAgICAgICAgLi4uZGEoKSxcbiAgICAgICAgICAgICAgICBub2RlczogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGJvZHknLFxuICAgICAgICAgICAgICAgICAgICAuLi5kYSgpLFxuICAgICAgICAgICAgICAgICAgICBub2RlczogW1xuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGVhdmVzOiBbeyB0ZXh0OiAnICcgfV0sXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICd0cicsIC4uLmRhKCksIG5vZGVzOiBbXSB9LFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9fVxuICAgICAgICAvPixcbiAgICAgICk7XG5cbiAgICAgIGV4cGVjdChjb250YWluZXIucXVlcnlTZWxlY3RvcigndGFibGUnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChjb250YWluZXIucXVlcnlTZWxlY3RvcigndGJvZHknKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChjb250YWluZXIucXVlcnlTZWxlY3RvcigndHInKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3NwYWNlciByZW5kZXJpbmcgZm9yIERuRCBjb21wb25lbnRzJywgKCkgPT4ge1xuICAgIGl0KCdhZGRzIHNwYWNlcnMgYmVmb3JlIGFuZCBhZnRlciBEbkQgYmxhbmsgY29tcG9uZW50cycsICgpID0+IHtcbiAgICAgIGNvbnN0IG1vY2tSZW5kZXJDaGlsZHJlbiA9IGplc3QuZm4oKG4pID0+IHtcbiAgICAgICAgaWYgKG4uZGF0YT8uZGF0YXNldD8uY29tcG9uZW50ID09PSAnYmxhbmsnKSB7XG4gICAgICAgICAgcmV0dXJuIDxzcGFuIGRhdGEtdGVzdGlkPVwiYmxhbmstY29tcG9uZW50XCI+Qmxhbms8L3NwYW4+O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoXG4gICAgICAgIDxNYXNrXG4gICAgICAgICAgey4uLmRlZmF1bHRQcm9wc31cbiAgICAgICAgICByZW5kZXJDaGlsZHJlbj17bW9ja1JlbmRlckNoaWxkcmVufVxuICAgICAgICAgIGxheW91dD17e1xuICAgICAgICAgICAgbm9kZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdkaXYnLFxuICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgIGRhdGFzZXQ6IHsgY29tcG9uZW50OiAnYmxhbmsnIH0sXG4gICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7fSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG5vZGVzOiBbXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfX1cbiAgICAgICAgLz4sXG4gICAgICApO1xuXG4gICAgICAvLyBDaGVjayB0aGF0IHJlbmRlckNoaWxkcmVuIHdhcyBjYWxsZWQgYW5kIHNwYWNlcnMgYXJlIHByZXNlbnRcbiAgICAgIC8vIENvdW50IGFsbCBjaGlsZHJlbiBpbiB0aGUgY29udGFpbmVyIC0gc2hvdWxkIGJlOiBzcGFjZXIgKyBibGFuayArIHNwYWNlciA9IDMgZWxlbWVudHNcbiAgICAgIGNvbnN0IG1hc2tDb250YWluZXIgPSBjb250YWluZXIuZmlyc3RDaGlsZDtcbiAgICAgIGV4cGVjdChtYXNrQ29udGFpbmVyLmNoaWxkTm9kZXMubGVuZ3RoKS50b0JlKDMpO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRlc3RJZCgnYmxhbmstY29tcG9uZW50JykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnZG9lcyBub3QgYWRkIHNwYWNlcnMgZm9yIG5vbi1EbkQgY29tcG9uZW50cycsICgpID0+IHtcbiAgICAgIGNvbnN0IG1vY2tSZW5kZXJDaGlsZHJlbiA9IGplc3QuZm4oKG4pID0+IHtcbiAgICAgICAgcmV0dXJuIDxzcGFuIGRhdGEtdGVzdGlkPVwicmVndWxhci1jb21wb25lbnRcIj5SZWd1bGFyPC9zcGFuPjtcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgICA8TWFza1xuICAgICAgICAgIHsuLi5kZWZhdWx0UHJvcHN9XG4gICAgICAgICAgcmVuZGVyQ2hpbGRyZW49e21vY2tSZW5kZXJDaGlsZHJlbn1cbiAgICAgICAgICBsYXlvdXQ9e3tcbiAgICAgICAgICAgIG5vZGVzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnZGl2JyxcbiAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7fSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG5vZGVzOiBbXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfX1cbiAgICAgICAgLz4sXG4gICAgICApO1xuXG4gICAgICAvLyBTaG91bGQgbm90IGhhdmUgc3BhY2VycyAtIG9ubHkgdGhlIHJlZ3VsYXIgY29tcG9uZW50XG4gICAgICBjb25zdCBtYXNrQ29udGFpbmVyID0gY29udGFpbmVyLmZpcnN0Q2hpbGQ7XG4gICAgICBleHBlY3QobWFza0NvbnRhaW5lci5jaGlsZE5vZGVzLmxlbmd0aCkudG9CZSgxKTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXN0SWQoJ3JlZ3VsYXItY29tcG9uZW50JykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnYWRkcyBzcGFjZXJzIHJlZ2FyZGxlc3Mgb2YgcGFyZW50IG5vZGUgdHlwZScsICgpID0+IHtcbiAgICAgIGNvbnN0IG1vY2tSZW5kZXJDaGlsZHJlbiA9IGplc3QuZm4oKG4pID0+IHtcbiAgICAgICAgaWYgKG4uZGF0YT8uZGF0YXNldD8uY29tcG9uZW50ID09PSAnYmxhbmsnKSB7XG4gICAgICAgICAgcmV0dXJuIDxzcGFuIGRhdGEtdGVzdGlkPVwiYmxhbmstaW4tdGRcIj5CbGFuayBpbiBURDwvc3Bhbj47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9KTtcblxuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPE1hc2tcbiAgICAgICAgICB7Li4uZGVmYXVsdFByb3BzfVxuICAgICAgICAgIHJlbmRlckNoaWxkcmVuPXttb2NrUmVuZGVyQ2hpbGRyZW59XG4gICAgICAgICAgZWxlbWVudFR5cGU9XCJkcmFnLWluLXRoZS1ibGFua1wiXG4gICAgICAgICAgbGF5b3V0PXt7XG4gICAgICAgICAgICBub2RlczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ3RhYmxlJyxcbiAgICAgICAgICAgICAgICBkYXRhOiB7IGF0dHJpYnV0ZXM6IHt9IH0sXG4gICAgICAgICAgICAgICAgbm9kZXM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3Rib2R5JyxcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogeyBhdHRyaWJ1dGVzOiB7fSB9LFxuICAgICAgICAgICAgICAgICAgICBub2RlczogW1xuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0cicsXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7IGF0dHJpYnV0ZXM6IHt9IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7IGF0dHJpYnV0ZXM6IHt9IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2RpdicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhc2V0OiB7IGNvbXBvbmVudDogJ2JsYW5rJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlczogW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH19XG4gICAgICAgIC8+LFxuICAgICAgKTtcblxuICAgICAgLy8gU2hvdWxkIGhhdmUgc3BhY2VycyBldmVuIGluc2lkZSB0ZCBlbGVtZW50XG4gICAgICBjb25zdCB0ZCA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCd0ZCcpO1xuICAgICAgZXhwZWN0KHRkLmNoaWxkTm9kZXMubGVuZ3RoKS50b0JlKDMpOyAvLyBzcGFjZXIgKyBibGFuayArIHNwYWNlclxuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRlc3RJZCgnYmxhbmstaW4tdGQnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdkb2VzIG5vdCBhZGQgc3BhY2VycyBmb3IgdGV4dCBjb250ZW50JywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPE1hc2tcbiAgICAgICAgICB7Li4uZGVmYXVsdFByb3BzfVxuICAgICAgICAgIGVsZW1lbnRUeXBlPVwiZHJhZy1pbi10aGUtYmxhbmtcIlxuICAgICAgICAgIGxheW91dD17e1xuICAgICAgICAgICAgbm9kZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG9iamVjdDogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGxlYXZlczogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0OiAnU29tZSB0ZXh0JyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfX1cbiAgICAgICAgLz4sXG4gICAgICApO1xuXG4gICAgICAvLyBTaG91bGQgbm90IGhhdmUgc3BhY2VycyBmb3IgcGxhaW4gdGV4dCAtIGp1c3QgdGV4dCBub2RlXG4gICAgICBjb25zdCBtYXNrQ29udGFpbmVyID0gY29udGFpbmVyLmZpcnN0Q2hpbGQ7XG4gICAgICBleHBlY3QobWFza0NvbnRhaW5lci5jaGlsZE5vZGVzLmxlbmd0aCkudG9CZSgxKTtcbiAgICAgIGV4cGVjdChtYXNrQ29udGFpbmVyLmNoaWxkTm9kZXNbMF0ubm9kZVR5cGUpLnRvQmUoTm9kZS5URVhUX05PREUpO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ1NvbWUgdGV4dCcpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2hhbmRsZXMgbXVsdGlwbGUgRG5EIGNvbXBvbmVudHMgd2l0aCBjb3JyZWN0IHNwYWNlciBwbGFjZW1lbnQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBtb2NrUmVuZGVyQ2hpbGRyZW4gPSBqZXN0LmZuKChuKSA9PiB7XG4gICAgICAgIGlmIChuLmRhdGE/LmRhdGFzZXQ/LmNvbXBvbmVudCA9PT0gJ2JsYW5rJykge1xuICAgICAgICAgIHJldHVybiA8c3BhbiBkYXRhLXRlc3RpZD17YGJsYW5rLSR7bi5kYXRhLnRlc3RJZH1gfT5CbGFuazwvc3Bhbj47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9KTtcblxuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPE1hc2tcbiAgICAgICAgICB7Li4uZGVmYXVsdFByb3BzfVxuICAgICAgICAgIHJlbmRlckNoaWxkcmVuPXttb2NrUmVuZGVyQ2hpbGRyZW59XG4gICAgICAgICAgbGF5b3V0PXt7XG4gICAgICAgICAgICBub2RlczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ2RpdicsXG4gICAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgICAgZGF0YXNldDogeyBjb21wb25lbnQ6ICdibGFuaycgfSxcbiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHt9LFxuICAgICAgICAgICAgICAgICAgdGVzdElkOiAnMScsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBub2RlczogW10sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnZGl2JyxcbiAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICBkYXRhc2V0OiB7IGNvbXBvbmVudDogJ2JsYW5rJyB9LFxuICAgICAgICAgICAgICAgICAgYXR0cmlidXRlczoge30sXG4gICAgICAgICAgICAgICAgICB0ZXN0SWQ6ICcyJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG5vZGVzOiBbXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfX1cbiAgICAgICAgLz4sXG4gICAgICApO1xuXG4gICAgICAvLyBTaG91bGQgaGF2ZSAyIHNwYWNlcnMgcGVyIGNvbXBvbmVudCA9IDQgc3BhY2VycyArIDIgYmxhbmtzID0gNiB0b3RhbCBjaGlsZHJlblxuICAgICAgY29uc3QgbWFza0NvbnRhaW5lciA9IGNvbnRhaW5lci5maXJzdENoaWxkO1xuICAgICAgZXhwZWN0KG1hc2tDb250YWluZXIuY2hpbGROb2Rlcy5sZW5ndGgpLnRvQmUoNik7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGVzdElkKCdibGFuay0xJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGVzdElkKCdibGFuay0yJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLEtBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUEyQixTQUFBRCx3QkFBQUssQ0FBQSxFQUFBQyxDQUFBLDZCQUFBQyxPQUFBLE1BQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQVAsdUJBQUEs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
|
|
467
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfbWFzayIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJfdHlwZW9mIiwiaGFzIiwiZ2V0Iiwic2V0IiwiX3QiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVzY3JpYmUiLCJvbkNoYW5nZSIsImplc3QiLCJmbiIsImRlZmF1bHRQcm9wcyIsImxheW91dCIsIm5vZGVzIiwib2JqZWN0IiwibGVhdmVzIiwidGV4dCIsInZhbHVlIiwiYmVmb3JlRWFjaCIsIm1vY2tDbGVhciIsIml0IiwiX3JlbmRlciIsInJlbmRlciIsImNyZWF0ZUVsZW1lbnQiLCJjb250YWluZXIiLCJleHBlY3QiLCJmaXJzdENoaWxkIiwidG9CZUluVGhlRG9jdW1lbnQiLCJzY3JlZW4iLCJnZXRCeVRleHQiLCJfcmVuZGVyMiIsIl9leHRlbmRzMiIsInR5cGUiLCJfcmVuZGVyMyIsImRhdGEiLCJhdHRyaWJ1dGVzIiwicXVlcnlTZWxlY3RvciIsIl9yZW5kZXI0IiwibWFya3MiLCJ1bmRlZmluZWQiLCJlbSIsInRleHRDb250ZW50IiwidG9CZSIsImRhIiwiX3JlbmRlcjUiLCJtYXJrZWRMYXlvdXQiLCJfcmVuZGVyNiIsImIiLCJlYWNoIiwibWFya1R5cGUiLCJ0YWciLCJfcmVuZGVyNyIsImVsIiwiX3JlbmRlcjgiLCJuZXN0ZWQiLCJfcmVuZGVyOSIsIl9yZW5kZXIwIiwiY2hpbGROb2RlcyIsIm5vZGVUeXBlIiwiTm9kZSIsIlRFWFRfTk9ERSIsIl9yZW5kZXIxIiwiX3JlbmRlcjEwIiwibW9ja1JlbmRlckNoaWxkcmVuIiwiX24kZGF0YSIsImRhdGFzZXQiLCJjb21wb25lbnQiLCJfcmVuZGVyMTEiLCJyZW5kZXJDaGlsZHJlbiIsIm1hc2tDb250YWluZXIiLCJnZXRCeVRlc3RJZCIsIl9yZW5kZXIxMiIsIl9uJGRhdGEyIiwiX3JlbmRlcjEzIiwiZWxlbWVudFR5cGUiLCJ0ZCIsIl9yZW5kZXIxNCIsIl9uJGRhdGEzIiwiY29uY2F0IiwidGVzdElkIiwiX3JlbmRlcjE1Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL19fdGVzdHNfXy9tYXNrLnRlc3QuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgcmVuZGVyLCBzY3JlZW4gfSBmcm9tICdAdGVzdGluZy1saWJyYXJ5L3JlYWN0JztcbmltcG9ydCBNYXNrIGZyb20gJy4uL21hc2snO1xuXG5kZXNjcmliZSgnTWFzaycsICgpID0+IHtcbiAgLy8gRG9uJ3QgbW9jayByZW5kZXJDaGlsZHJlbiAtIGxldCB0aGUgY29tcG9uZW50IHJlbmRlciBuYXR1cmFsbHlcbiAgY29uc3Qgb25DaGFuZ2UgPSBqZXN0LmZuKCk7XG4gIGNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgICBvbkNoYW5nZSxcbiAgICBsYXlvdXQ6IHtcbiAgICAgIG5vZGVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBvYmplY3Q6ICd0ZXh0JyxcbiAgICAgICAgICBsZWF2ZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdGV4dDogJ0ZvbycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gICAgdmFsdWU6IHt9LFxuICB9O1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIG9uQ2hhbmdlLm1vY2tDbGVhcigpO1xuICB9KTtcblxuICBkZXNjcmliZSgncmVuZGVyaW5nJywgKCkgPT4ge1xuICAgIGl0KCdyZW5kZXJzIHdpdGggZGVmYXVsdCBwcm9wcycsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPE1hc2sgey4uLmRlZmF1bHRQcm9wc30gLz4pO1xuICAgICAgZXhwZWN0KGNvbnRhaW5lci5maXJzdENoaWxkKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlbmRlcnMgdGV4dCBjb250ZW50JywgKCkgPT4ge1xuICAgICAgcmVuZGVyKDxNYXNrIHsuLi5kZWZhdWx0UHJvcHN9IC8+KTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdGb28nKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIGEgcGFyYWdyYXBoIGVsZW1lbnQnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgICA8TWFza1xuICAgICAgICAgIHsuLi5kZWZhdWx0UHJvcHN9XG4gICAgICAgICAgbGF5b3V0PXt7XG4gICAgICAgICAgICBub2RlczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ3AnLFxuICAgICAgICAgICAgICAgIG5vZGVzOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG9iamVjdDogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICBsZWF2ZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiAnRm9vJyxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9fVxuICAgICAgICAvPixcbiAgICAgICk7XG5cbiAgICAgIC8vIFBhcmFncmFwaCBpcyByZW5kZXJlZCBhcyBhIHN0eWxlZCBkaXYsIG5vdCBhIDxwPiB0YWdcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdGb28nKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIG5lc3RlZCBkaXYgYW5kIHBhcmFncmFwaCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoXG4gICAgICAgIDxNYXNrXG4gICAgICAgICAgey4uLmRlZmF1bHRQcm9wc31cbiAgICAgICAgICBsYXlvdXQ9e3tcbiAgICAgICAgICAgIG5vZGVzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnZGl2JyxcbiAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7fSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG5vZGVzOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdwJyxcbiAgICAgICAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHt9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBub2RlczogW1xuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGVhdmVzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiAnRm9vJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfX1cbiAgICAgICAgLz4sXG4gICAgICApO1xuXG4gICAgICBleHBlY3QoY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ2RpdicpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgLy8gUGFyYWdyYXBoIGlzIHJlbmRlcmVkIGFzIGEgc3R5bGVkIGRpdiwgbm90IGEgPHA+IHRhZ1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ0ZvbycpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlbmRlcnMgdGV4dCB3aXRoIGl0YWxpYyBtYXJrcycsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoXG4gICAgICAgIDxNYXNrXG4gICAgICAgICAgey4uLmRlZmF1bHRQcm9wc31cbiAgICAgICAgICBsYXlvdXQ9e3tcbiAgICAgICAgICAgIG5vZGVzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsZWF2ZXM6IFt7IHRleHQ6ICdGb28gJyB9XSxcbiAgICAgICAgICAgICAgICBvYmplY3Q6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxlYXZlczogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBtYXJrczogW1xuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdpdGFsaWMnLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6ICd4JyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBvYmplY3Q6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxlYXZlczogW3sgdGV4dDogJyBiYXInIH1dLFxuICAgICAgICAgICAgICAgIG9iamVjdDogJ3RleHQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIG9iamVjdDogJ2Jsb2NrJyxcbiAgICAgICAgICAgIHR5cGU6ICdkaXYnLFxuICAgICAgICAgIH19XG4gICAgICAgIC8+LFxuICAgICAgKTtcblxuICAgICAgLy8gVGV4dCBcIkZvbyBcIiBpcyBzcGxpdCB3aXRoIHNwYWNlcywgdXNlIHJlZ2V4XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgvRm9vLykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgneCcpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoL2Jhci8pKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgLy8gQ2hlY2sgZm9yIGl0YWxpYy9lbSBlbGVtZW50XG4gICAgICBjb25zdCBlbSA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdlbSwgaScpO1xuICAgICAgZXhwZWN0KGVtKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgZXhwZWN0KGVtLnRleHRDb250ZW50KS50b0JlKCd4Jyk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB0Ym9keSB3aXRob3V0IGV4dHJhIHNwYWNlJywgKCkgPT4ge1xuICAgICAgY29uc3QgZGEgPSAoKSA9PiAoeyBkYXRhOiB7IGF0dHJpYnV0ZXM6IHt9IH0gfSk7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgICA8TWFza1xuICAgICAgICAgIHsuLi5kZWZhdWx0UHJvcHN9XG4gICAgICAgICAgbGF5b3V0PXt7XG4gICAgICAgICAgICBub2RlczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ3RhYmxlJyxcbiAgICAgICAgICAgICAgICAuLi5kYSgpLFxuICAgICAgICAgICAgICAgIG5vZGVzOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0Ym9keScsXG4gICAgICAgICAgICAgICAgICAgIC4uLmRhKCksXG4gICAgICAgICAgICAgICAgICAgIG5vZGVzOiBbXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0OiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBsZWF2ZXM6IFt7IHRleHQ6ICcgJyB9XSxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdHlwZTogJ3RyJywgLi4uZGEoKSwgbm9kZXM6IFtdIH0sXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH19XG4gICAgICAgIC8+LFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCd0YWJsZScpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgZXhwZWN0KGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCd0Ym9keScpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgZXhwZWN0KGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCd0cicpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnbWFyayByZW5kZXJpbmcnLCAoKSA9PiB7XG4gICAgY29uc3QgbWFya2VkTGF5b3V0ID0gKG1hcmtzLCB0ZXh0ID0gJ3gnKSA9PiAoe1xuICAgICAgbm9kZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG9iamVjdDogJ3RleHQnLFxuICAgICAgICAgIGxlYXZlczogW3sgbWFya3MsIHRleHQgfV0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgaXQoJ3JlbmRlcnMgYSBtYXJrIGFzIGFuIGVsZW1lbnQsIG5vdCBhcyBlc2NhcGVkIGh0bWwgdGV4dCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPE1hc2sgey4uLmRlZmF1bHRQcm9wc30gbGF5b3V0PXttYXJrZWRMYXlvdXQoW3sgdHlwZTogJ2JvbGQnIH1dKX0gLz4pO1xuXG4gICAgICBjb25zdCBiID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ2InKTtcbiAgICAgIGV4cGVjdChiKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgZXhwZWN0KGIudGV4dENvbnRlbnQpLnRvQmUoJ3gnKTtcbiAgICAgIC8vIHRoZSB0YWcgbXVzdCBub3QgbGVhayBpbnRvIHRoZSB0ZXh0IGNvbnRlbnRcbiAgICAgIGV4cGVjdChjb250YWluZXIudGV4dENvbnRlbnQpLnRvQmUoJ3gnKTtcbiAgICB9KTtcblxuICAgIGl0LmVhY2goW1xuICAgICAgWydib2xkJywgJ2InXSxcbiAgICAgIFsnaXRhbGljJywgJ2VtJ10sXG4gICAgICBbJ3VuZGVybGluZScsICd1J10sXG4gICAgICBbJ3N0cmlrZXRocm91Z2gnLCAncyddLFxuICAgICAgWydjb2RlJywgJ2NvZGUnXSxcbiAgICAgIFsnc3Ryb25nJywgJ3N0cm9uZyddLFxuICAgIF0pKCdtYXBzIHRoZSAlcyBtYXJrIHRvIGEgPCVzPiBlbGVtZW50JywgKG1hcmtUeXBlLCB0YWcpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPE1hc2sgey4uLmRlZmF1bHRQcm9wc30gbGF5b3V0PXttYXJrZWRMYXlvdXQoW3sgdHlwZTogbWFya1R5cGUgfV0pfSAvPik7XG5cbiAgICAgIGNvbnN0IGVsID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IodGFnKTtcbiAgICAgIGV4cGVjdChlbCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChlbC50ZXh0Q29udGVudCkudG9CZSgneCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ25lc3RzIG11bHRpcGxlIG1hcmtzLCBrZWVwaW5nIHRoZSBmaXJzdCBtYXJrIGFzIHRoZSBvdXRlcm1vc3QgdGFnJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPE1hc2sgey4uLmRlZmF1bHRQcm9wc30gbGF5b3V0PXttYXJrZWRMYXlvdXQoW3sgdHlwZTogJ2JvbGQnIH0sIHsgdHlwZTogJ2l0YWxpYycgfV0pfSAvPixcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IG5lc3RlZCA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdiID4gZW0nKTtcbiAgICAgIGV4cGVjdChuZXN0ZWQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3QobmVzdGVkLnRleHRDb250ZW50KS50b0JlKCd4Jyk7XG4gICAgICBleHBlY3QoY29udGFpbmVyLnRleHRDb250ZW50KS50b0JlKCd4Jyk7XG4gICAgfSk7XG5cbiAgICBpdCgnbmVzdHMgdGhyZWUgbWFya3MgaW4gbWFyayBvcmRlcicsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoXG4gICAgICAgIDxNYXNrXG4gICAgICAgICAgey4uLmRlZmF1bHRQcm9wc31cbiAgICAgICAgICBsYXlvdXQ9e21hcmtlZExheW91dChbeyB0eXBlOiAndW5kZXJsaW5lJyB9LCB7IHR5cGU6ICdzdHJpa2V0aHJvdWdoJyB9LCB7IHR5cGU6ICdpdGFsaWMnIH1dKX1cbiAgICAgICAgLz4sXG4gICAgICApO1xuXG4gICAgICBjb25zdCBuZXN0ZWQgPSBjb250YWluZXIucXVlcnlTZWxlY3RvcigndSA+IHMgPiBlbScpO1xuICAgICAgZXhwZWN0KG5lc3RlZCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChuZXN0ZWQudGV4dENvbnRlbnQpLnRvQmUoJ3gnKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIHBsYWluIHRleHQgd2hlbiBubyBtYXJrIG1hcHMgdG8gYSB0YWcnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxNYXNrIHsuLi5kZWZhdWx0UHJvcHN9IGxheW91dD17bWFya2VkTGF5b3V0KFt7IHR5cGU6ICd1bmtub3duLW1hcmsnIH1dKX0gLz4pO1xuXG4gICAgICBleHBlY3QoY29udGFpbmVyLnRleHRDb250ZW50KS50b0JlKCd4Jyk7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQuY2hpbGROb2Rlc1swXS5ub2RlVHlwZSkudG9CZShOb2RlLlRFWFRfTk9ERSk7XG4gICAgfSk7XG5cbiAgICBpdCgnd3JhcHMgb25seSB0aGUgbWFya3MgdGhhdCBtYXAgdG8gYSB0YWcnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgICA8TWFzayB7Li4uZGVmYXVsdFByb3BzfSBsYXlvdXQ9e21hcmtlZExheW91dChbeyB0eXBlOiAndW5rbm93bi1tYXJrJyB9LCB7IHR5cGU6ICdib2xkJyB9XSl9IC8+LFxuICAgICAgKTtcblxuICAgICAgY29uc3QgYiA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdiJyk7XG4gICAgICBleHBlY3QoYikudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChiLnRleHRDb250ZW50KS50b0JlKCd4Jyk7XG4gICAgICBleHBlY3QoY29udGFpbmVyLnRleHRDb250ZW50KS50b0JlKCd4Jyk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyBtYXJrZWQgdGV4dCBpbmxpbmUgYWxvbmdzaWRlIHVubWFya2VkIHRleHQnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgICA8TWFza1xuICAgICAgICAgIHsuLi5kZWZhdWx0UHJvcHN9XG4gICAgICAgICAgbGF5b3V0PXt7XG4gICAgICAgICAgICBub2RlczogW1xuICAgICAgICAgICAgICB7IG9iamVjdDogJ3RleHQnLCBsZWF2ZXM6IFt7IHRleHQ6ICdGb28gJyB9XSB9LFxuICAgICAgICAgICAgICB7IG9iamVjdDogJ3RleHQnLCBsZWF2ZXM6IFt7IG1hcmtzOiBbeyB0eXBlOiAnYm9sZCcgfSwgeyB0eXBlOiAnaXRhbGljJyB9XSwgdGV4dDogJ3gnIH1dIH0sXG4gICAgICAgICAgICAgIHsgb2JqZWN0OiAndGV4dCcsIGxlYXZlczogW3sgdGV4dDogJyBiYXInIH1dIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgb2JqZWN0OiAnYmxvY2snLFxuICAgICAgICAgICAgdHlwZTogJ2RpdicsXG4gICAgICAgICAgfX1cbiAgICAgICAgLz4sXG4gICAgICApO1xuXG4gICAgICBleHBlY3QoY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ2IgPiBlbScpLnRleHRDb250ZW50KS50b0JlKCd4Jyk7XG4gICAgICBleHBlY3QoY29udGFpbmVyLnRleHRDb250ZW50KS50b0JlKCdGb28geCBiYXInKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3NwYWNlciByZW5kZXJpbmcgZm9yIERuRCBjb21wb25lbnRzJywgKCkgPT4ge1xuICAgIGl0KCdhZGRzIHNwYWNlcnMgYmVmb3JlIGFuZCBhZnRlciBEbkQgYmxhbmsgY29tcG9uZW50cycsICgpID0+IHtcbiAgICAgIGNvbnN0IG1vY2tSZW5kZXJDaGlsZHJlbiA9IGplc3QuZm4oKG4pID0+IHtcbiAgICAgICAgaWYgKG4uZGF0YT8uZGF0YXNldD8uY29tcG9uZW50ID09PSAnYmxhbmsnKSB7XG4gICAgICAgICAgcmV0dXJuIDxzcGFuIGRhdGEtdGVzdGlkPVwiYmxhbmstY29tcG9uZW50XCI+Qmxhbms8L3NwYW4+O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoXG4gICAgICAgIDxNYXNrXG4gICAgICAgICAgey4uLmRlZmF1bHRQcm9wc31cbiAgICAgICAgICByZW5kZXJDaGlsZHJlbj17bW9ja1JlbmRlckNoaWxkcmVufVxuICAgICAgICAgIGxheW91dD17e1xuICAgICAgICAgICAgbm9kZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdkaXYnLFxuICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgIGRhdGFzZXQ6IHsgY29tcG9uZW50OiAnYmxhbmsnIH0sXG4gICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7fSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG5vZGVzOiBbXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfX1cbiAgICAgICAgLz4sXG4gICAgICApO1xuXG4gICAgICAvLyBDaGVjayB0aGF0IHJlbmRlckNoaWxkcmVuIHdhcyBjYWxsZWQgYW5kIHNwYWNlcnMgYXJlIHByZXNlbnRcbiAgICAgIC8vIENvdW50IGFsbCBjaGlsZHJlbiBpbiB0aGUgY29udGFpbmVyIC0gc2hvdWxkIGJlOiBzcGFjZXIgKyBibGFuayArIHNwYWNlciA9IDMgZWxlbWVudHNcbiAgICAgIGNvbnN0IG1hc2tDb250YWluZXIgPSBjb250YWluZXIuZmlyc3RDaGlsZDtcbiAgICAgIGV4cGVjdChtYXNrQ29udGFpbmVyLmNoaWxkTm9kZXMubGVuZ3RoKS50b0JlKDMpO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRlc3RJZCgnYmxhbmstY29tcG9uZW50JykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnZG9lcyBub3QgYWRkIHNwYWNlcnMgZm9yIG5vbi1EbkQgY29tcG9uZW50cycsICgpID0+IHtcbiAgICAgIGNvbnN0IG1vY2tSZW5kZXJDaGlsZHJlbiA9IGplc3QuZm4oKG4pID0+IHtcbiAgICAgICAgcmV0dXJuIDxzcGFuIGRhdGEtdGVzdGlkPVwicmVndWxhci1jb21wb25lbnRcIj5SZWd1bGFyPC9zcGFuPjtcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgICA8TWFza1xuICAgICAgICAgIHsuLi5kZWZhdWx0UHJvcHN9XG4gICAgICAgICAgcmVuZGVyQ2hpbGRyZW49e21vY2tSZW5kZXJDaGlsZHJlbn1cbiAgICAgICAgICBsYXlvdXQ9e3tcbiAgICAgICAgICAgIG5vZGVzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnZGl2JyxcbiAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7fSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG5vZGVzOiBbXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfX1cbiAgICAgICAgLz4sXG4gICAgICApO1xuXG4gICAgICAvLyBTaG91bGQgbm90IGhhdmUgc3BhY2VycyAtIG9ubHkgdGhlIHJlZ3VsYXIgY29tcG9uZW50XG4gICAgICBjb25zdCBtYXNrQ29udGFpbmVyID0gY29udGFpbmVyLmZpcnN0Q2hpbGQ7XG4gICAgICBleHBlY3QobWFza0NvbnRhaW5lci5jaGlsZE5vZGVzLmxlbmd0aCkudG9CZSgxKTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXN0SWQoJ3JlZ3VsYXItY29tcG9uZW50JykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnYWRkcyBzcGFjZXJzIHJlZ2FyZGxlc3Mgb2YgcGFyZW50IG5vZGUgdHlwZScsICgpID0+IHtcbiAgICAgIGNvbnN0IG1vY2tSZW5kZXJDaGlsZHJlbiA9IGplc3QuZm4oKG4pID0+IHtcbiAgICAgICAgaWYgKG4uZGF0YT8uZGF0YXNldD8uY29tcG9uZW50ID09PSAnYmxhbmsnKSB7XG4gICAgICAgICAgcmV0dXJuIDxzcGFuIGRhdGEtdGVzdGlkPVwiYmxhbmstaW4tdGRcIj5CbGFuayBpbiBURDwvc3Bhbj47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9KTtcblxuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPE1hc2tcbiAgICAgICAgICB7Li4uZGVmYXVsdFByb3BzfVxuICAgICAgICAgIHJlbmRlckNoaWxkcmVuPXttb2NrUmVuZGVyQ2hpbGRyZW59XG4gICAgICAgICAgZWxlbWVudFR5cGU9XCJkcmFnLWluLXRoZS1ibGFua1wiXG4gICAgICAgICAgbGF5b3V0PXt7XG4gICAgICAgICAgICBub2RlczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ3RhYmxlJyxcbiAgICAgICAgICAgICAgICBkYXRhOiB7IGF0dHJpYnV0ZXM6IHt9IH0sXG4gICAgICAgICAgICAgICAgbm9kZXM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3Rib2R5JyxcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogeyBhdHRyaWJ1dGVzOiB7fSB9LFxuICAgICAgICAgICAgICAgICAgICBub2RlczogW1xuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0cicsXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7IGF0dHJpYnV0ZXM6IHt9IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7IGF0dHJpYnV0ZXM6IHt9IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2RpdicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhc2V0OiB7IGNvbXBvbmVudDogJ2JsYW5rJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlczogW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH19XG4gICAgICAgIC8+LFxuICAgICAgKTtcblxuICAgICAgLy8gU2hvdWxkIGhhdmUgc3BhY2VycyBldmVuIGluc2lkZSB0ZCBlbGVtZW50XG4gICAgICBjb25zdCB0ZCA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCd0ZCcpO1xuICAgICAgZXhwZWN0KHRkLmNoaWxkTm9kZXMubGVuZ3RoKS50b0JlKDMpOyAvLyBzcGFjZXIgKyBibGFuayArIHNwYWNlclxuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRlc3RJZCgnYmxhbmstaW4tdGQnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdkb2VzIG5vdCBhZGQgc3BhY2VycyBmb3IgdGV4dCBjb250ZW50JywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPE1hc2tcbiAgICAgICAgICB7Li4uZGVmYXVsdFByb3BzfVxuICAgICAgICAgIGVsZW1lbnRUeXBlPVwiZHJhZy1pbi10aGUtYmxhbmtcIlxuICAgICAgICAgIGxheW91dD17e1xuICAgICAgICAgICAgbm9kZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG9iamVjdDogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGxlYXZlczogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0OiAnU29tZSB0ZXh0JyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfX1cbiAgICAgICAgLz4sXG4gICAgICApO1xuXG4gICAgICAvLyBTaG91bGQgbm90IGhhdmUgc3BhY2VycyBmb3IgcGxhaW4gdGV4dCAtIGp1c3QgdGV4dCBub2RlXG4gICAgICBjb25zdCBtYXNrQ29udGFpbmVyID0gY29udGFpbmVyLmZpcnN0Q2hpbGQ7XG4gICAgICBleHBlY3QobWFza0NvbnRhaW5lci5jaGlsZE5vZGVzLmxlbmd0aCkudG9CZSgxKTtcbiAgICAgIGV4cGVjdChtYXNrQ29udGFpbmVyLmNoaWxkTm9kZXNbMF0ubm9kZVR5cGUpLnRvQmUoTm9kZS5URVhUX05PREUpO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ1NvbWUgdGV4dCcpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2hhbmRsZXMgbXVsdGlwbGUgRG5EIGNvbXBvbmVudHMgd2l0aCBjb3JyZWN0IHNwYWNlciBwbGFjZW1lbnQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBtb2NrUmVuZGVyQ2hpbGRyZW4gPSBqZXN0LmZuKChuKSA9PiB7XG4gICAgICAgIGlmIChuLmRhdGE/LmRhdGFzZXQ/LmNvbXBvbmVudCA9PT0gJ2JsYW5rJykge1xuICAgICAgICAgIHJldHVybiA8c3BhbiBkYXRhLXRlc3RpZD17YGJsYW5rLSR7bi5kYXRhLnRlc3RJZH1gfT5CbGFuazwvc3Bhbj47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9KTtcblxuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPE1hc2tcbiAgICAgICAgICB7Li4uZGVmYXVsdFByb3BzfVxuICAgICAgICAgIHJlbmRlckNoaWxkcmVuPXttb2NrUmVuZGVyQ2hpbGRyZW59XG4gICAgICAgICAgbGF5b3V0PXt7XG4gICAgICAgICAgICBub2RlczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ2RpdicsXG4gICAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgICAgZGF0YXNldDogeyBjb21wb25lbnQ6ICdibGFuaycgfSxcbiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHt9LFxuICAgICAgICAgICAgICAgICAgdGVzdElkOiAnMScsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBub2RlczogW10sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnZGl2JyxcbiAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICBkYXRhc2V0OiB7IGNvbXBvbmVudDogJ2JsYW5rJyB9LFxuICAgICAgICAgICAgICAgICAgYXR0cmlidXRlczoge30sXG4gICAgICAgICAgICAgICAgICB0ZXN0SWQ6ICcyJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG5vZGVzOiBbXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfX1cbiAgICAgICAgLz4sXG4gICAgICApO1xuXG4gICAgICAvLyBTaG91bGQgaGF2ZSAyIHNwYWNlcnMgcGVyIGNvbXBvbmVudCA9IDQgc3BhY2VycyArIDIgYmxhbmtzID0gNiB0b3RhbCBjaGlsZHJlblxuICAgICAgY29uc3QgbWFza0NvbnRhaW5lciA9IGNvbnRhaW5lci5maXJzdENoaWxkO1xuICAgICAgZXhwZWN0KG1hc2tDb250YWluZXIuY2hpbGROb2Rlcy5sZW5ndGgpLnRvQmUoNik7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGVzdElkKCdibGFuay0xJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGVzdElkKCdibGFuay0yJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLEtBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUEyQixTQUFBRCx3QkFBQUssQ0FBQSxFQUFBQyxDQUFBLDZCQUFBQyxPQUFBLE1BQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQVAsdUJBQUEsWUFBQUEsd0JBQUFLLENBQUEsRUFBQUMsQ0FBQSxTQUFBQSxDQUFBLElBQUFELENBQUEsSUFBQUEsQ0FBQSxDQUFBSyxVQUFB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
|
|
@@ -91,6 +91,49 @@ describe('index', function () {
|
|
|
91
91
|
container = _render4.container;
|
|
92
92
|
expect(container.firstChild).toBeInTheDocument();
|
|
93
93
|
});
|
|
94
|
+
describe('click-to-place into the pool', function () {
|
|
95
|
+
it('places the selection into the pool when clicking the pool background', function () {
|
|
96
|
+
var onPlacementClick = jest.fn();
|
|
97
|
+
var selectedItem = {
|
|
98
|
+
id: 'some-blank',
|
|
99
|
+
fromChoice: false,
|
|
100
|
+
type: 'MaskBlank'
|
|
101
|
+
};
|
|
102
|
+
var _render5 = (0, _react2.render)(/*#__PURE__*/React.createElement(_index["default"], (0, _extends2["default"])({}, defaultProps, {
|
|
103
|
+
selectedItem: selectedItem,
|
|
104
|
+
onPlacementClick: onPlacementClick
|
|
105
|
+
}))),
|
|
106
|
+
container = _render5.container;
|
|
107
|
+
_react2.fireEvent.click(container.firstChild);
|
|
108
|
+
expect(onPlacementClick).toHaveBeenCalledWith(undefined);
|
|
109
|
+
});
|
|
110
|
+
it('does nothing when clicking the pool background with nothing selected', function () {
|
|
111
|
+
var onPlacementClick = jest.fn();
|
|
112
|
+
var _render6 = (0, _react2.render)(/*#__PURE__*/React.createElement(_index["default"], (0, _extends2["default"])({}, defaultProps, {
|
|
113
|
+
onPlacementClick: onPlacementClick
|
|
114
|
+
}))),
|
|
115
|
+
container = _render6.container;
|
|
116
|
+
_react2.fireEvent.click(container.firstChild);
|
|
117
|
+
expect(onPlacementClick).not.toHaveBeenCalled();
|
|
118
|
+
});
|
|
119
|
+
it('clicking a specific choice selects it, not the pool background handler', function () {
|
|
120
|
+
var onPlacementClick = jest.fn();
|
|
121
|
+
var onSelectClick = jest.fn();
|
|
122
|
+
var selectedItem = {
|
|
123
|
+
id: 'some-blank',
|
|
124
|
+
fromChoice: false,
|
|
125
|
+
type: 'MaskBlank'
|
|
126
|
+
};
|
|
127
|
+
(0, _react2.render)(/*#__PURE__*/React.createElement(_index["default"], (0, _extends2["default"])({}, defaultProps, {
|
|
128
|
+
selectedItem: selectedItem,
|
|
129
|
+
onSelectClick: onSelectClick,
|
|
130
|
+
onPlacementClick: onPlacementClick
|
|
131
|
+
})));
|
|
132
|
+
_react2.fireEvent.click(_react2.screen.getByText('Jumped'));
|
|
133
|
+
expect(onSelectClick).toHaveBeenCalled();
|
|
134
|
+
expect(onPlacementClick).not.toHaveBeenCalled();
|
|
135
|
+
});
|
|
136
|
+
});
|
|
94
137
|
});
|
|
95
138
|
describe('Choice', function () {
|
|
96
139
|
var defaultProps = {
|
|
@@ -100,16 +143,16 @@ describe('index', function () {
|
|
|
100
143
|
};
|
|
101
144
|
describe('render', function () {
|
|
102
145
|
it('renders correctly with default props', function () {
|
|
103
|
-
var
|
|
104
|
-
container =
|
|
146
|
+
var _render7 = (0, _react2.render)(/*#__PURE__*/React.createElement(_choice["default"], defaultProps)),
|
|
147
|
+
container = _render7.container;
|
|
105
148
|
expect(container.firstChild).toBeInTheDocument();
|
|
106
149
|
expect(_react2.screen.getByText('Label')).toBeInTheDocument();
|
|
107
150
|
});
|
|
108
151
|
it('renders correctly with disabled prop as true', function () {
|
|
109
|
-
var
|
|
152
|
+
var _render8 = (0, _react2.render)(/*#__PURE__*/React.createElement(_choice["default"], (0, _extends2["default"])({}, defaultProps, {
|
|
110
153
|
disabled: true
|
|
111
154
|
}))),
|
|
112
|
-
container =
|
|
155
|
+
container = _render8.container;
|
|
113
156
|
expect(container.firstChild).toBeInTheDocument();
|
|
114
157
|
});
|
|
115
158
|
});
|
|
@@ -134,6 +177,75 @@ describe('index', function () {
|
|
|
134
177
|
expect(rule).toMatch(/font-size:\s*120%\s*!important/i);
|
|
135
178
|
});
|
|
136
179
|
});
|
|
180
|
+
describe('click-to-select', function () {
|
|
181
|
+
it('selects this choice on click when nothing else is selected', function () {
|
|
182
|
+
var onSelectClick = jest.fn();
|
|
183
|
+
var _render9 = (0, _react2.render)(/*#__PURE__*/React.createElement(_choice["default"], (0, _extends2["default"])({}, defaultProps, {
|
|
184
|
+
selectedItem: null,
|
|
185
|
+
onSelectClick: onSelectClick
|
|
186
|
+
}))),
|
|
187
|
+
container = _render9.container;
|
|
188
|
+
_react2.fireEvent.click(container.firstChild);
|
|
189
|
+
expect(onSelectClick).toHaveBeenCalledWith({
|
|
190
|
+
choice: defaultProps.choice,
|
|
191
|
+
instanceId: defaultProps.instanceId,
|
|
192
|
+
fromChoice: true,
|
|
193
|
+
type: 'MaskBlank'
|
|
194
|
+
});
|
|
195
|
+
});
|
|
196
|
+
it('toggles off (calls onSelectClick again) when clicking the already-selected choice', function () {
|
|
197
|
+
var onSelectClick = jest.fn();
|
|
198
|
+
var selectedItem = {
|
|
199
|
+
choice: defaultProps.choice,
|
|
200
|
+
instanceId: defaultProps.instanceId,
|
|
201
|
+
fromChoice: true,
|
|
202
|
+
type: 'MaskBlank'
|
|
203
|
+
};
|
|
204
|
+
var _render0 = (0, _react2.render)(/*#__PURE__*/React.createElement(_choice["default"], (0, _extends2["default"])({}, defaultProps, {
|
|
205
|
+
selectedItem: selectedItem,
|
|
206
|
+
onSelectClick: onSelectClick
|
|
207
|
+
}))),
|
|
208
|
+
container = _render0.container;
|
|
209
|
+
_react2.fireEvent.click(container.firstChild);
|
|
210
|
+
expect(onSelectClick).toHaveBeenCalledWith({
|
|
211
|
+
choice: defaultProps.choice,
|
|
212
|
+
instanceId: defaultProps.instanceId,
|
|
213
|
+
fromChoice: true,
|
|
214
|
+
type: 'MaskBlank'
|
|
215
|
+
});
|
|
216
|
+
});
|
|
217
|
+
it('selects this choice even while a different item is already selected (pool items are never placement targets)', function () {
|
|
218
|
+
var onSelectClick = jest.fn();
|
|
219
|
+
var selectedItem = {
|
|
220
|
+
id: 'some-blank',
|
|
221
|
+
fromChoice: false,
|
|
222
|
+
type: 'MaskBlank'
|
|
223
|
+
};
|
|
224
|
+
var _render1 = (0, _react2.render)(/*#__PURE__*/React.createElement(_choice["default"], (0, _extends2["default"])({}, defaultProps, {
|
|
225
|
+
selectedItem: selectedItem,
|
|
226
|
+
onSelectClick: onSelectClick
|
|
227
|
+
}))),
|
|
228
|
+
container = _render1.container;
|
|
229
|
+
_react2.fireEvent.click(container.firstChild);
|
|
230
|
+
expect(onSelectClick).toHaveBeenCalledWith({
|
|
231
|
+
choice: defaultProps.choice,
|
|
232
|
+
instanceId: defaultProps.instanceId,
|
|
233
|
+
fromChoice: true,
|
|
234
|
+
type: 'MaskBlank'
|
|
235
|
+
});
|
|
236
|
+
});
|
|
237
|
+
it('does nothing on click when disabled', function () {
|
|
238
|
+
var onSelectClick = jest.fn();
|
|
239
|
+
var _render10 = (0, _react2.render)(/*#__PURE__*/React.createElement(_choice["default"], (0, _extends2["default"])({}, defaultProps, {
|
|
240
|
+
disabled: true,
|
|
241
|
+
selectedItem: null,
|
|
242
|
+
onSelectClick: onSelectClick
|
|
243
|
+
}))),
|
|
244
|
+
container = _render10.container;
|
|
245
|
+
_react2.fireEvent.click(container.firstChild);
|
|
246
|
+
expect(onSelectClick).not.toHaveBeenCalled();
|
|
247
|
+
});
|
|
248
|
+
});
|
|
137
249
|
});
|
|
138
250
|
});
|
|
139
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfY2hvaWNlIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl91dGlscyIsIl9pbmRleCIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJzZXQiLCJfdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiY29sbGVjdEVtb3Rpb25SdWxlcyIsInJ1bGVzIiwiX2kiLCJfQXJyYXkkZnJvbSIsIkFycmF5IiwiZnJvbSIsImRvY3VtZW50Iiwic3R5bGVTaGVldHMiLCJsZW5ndGgiLCJzaGVldCIsIl9pMiIsIl9BcnJheSRmcm9tMiIsImNzc1J1bGVzIiwicnVsZSIsInB1c2giLCJjc3NUZXh0IiwiamVzdCIsIm1vY2siLCJ1c2VEcmFnZ2FibGUiLCJmbiIsImF0dHJpYnV0ZXMiLCJsaXN0ZW5lcnMiLCJzZXROb2RlUmVmIiwiaXNEcmFnZ2luZyIsInVzZURyb3BwYWJsZSIsImlzT3ZlciIsImFjdGl2ZSIsImRlc2NyaWJlIiwiZGVmYXVsdFByb3BzIiwiZGlzYWJsZWQiLCJjaG9pY2VzIiwiY2hvaWNlIiwiY2hvaWNlUG9zaXRpb24iLCJpbnN0YW5jZUlkIiwiaXQiLCJfcmVuZGVyIiwicmVuZGVyIiwiY3JlYXRlRWxlbWVudCIsImNvbnRhaW5lciIsImV4cGVjdCIsImZpcnN0Q2hpbGQiLCJ0b0JlSW5UaGVEb2N1bWVudCIsInNjcmVlbiIsImdldEJ5VGV4dCIsIl9yZW5kZXIyIiwiX2V4dGVuZHMyIiwiX3JlbmRlcjMiLCJkdXBsaWNhdGVzIiwidW5kZWZpbmVkIiwidmFsdWUiLCJfcmVuZGVyNCIsIl9yZW5kZXI1IiwiX3JlbmRlcjYiLCJmaW5kIiwiaW5jbHVkZXMiLCJ0b0JlRGVmaW5lZCIsInRvTWF0Y2giLCJ0ZXN0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Nob2ljZXMvX190ZXN0c19fL2luZGV4LnRlc3QuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgcmVuZGVyLCBzY3JlZW4gfSBmcm9tICdAdGVzdGluZy1saWJyYXJ5L3JlYWN0JztcbmltcG9ydCBDaG9pY2UgZnJvbSAnLi4vY2hvaWNlJztcbmltcG9ydCB7IGNob2ljZSB9IGZyb20gJy4uLy4uL19fdGVzdHNfXy91dGlscyc7XG5pbXBvcnQgQ2hvaWNlcyBmcm9tICcuLi9pbmRleCc7XG5cbi8vIENvbGxlY3QgdGhlIENTUyBydWxlcyBlbW90aW9uL01VSSBpbmplY3RlZCBpbnRvIHRoZSBkb2N1bWVudCAoanNkb20gdXNlcyBpbnNlcnRSdWxlKS5cbmNvbnN0IGNvbGxlY3RFbW90aW9uUnVsZXMgPSAoKSA9PiB7XG4gIGNvbnN0IHJ1bGVzID0gW107XG4gIGZvciAoY29uc3Qgc2hlZXQgb2YgQXJyYXkuZnJvbShkb2N1bWVudC5zdHlsZVNoZWV0cykpIHtcbiAgICB0cnkge1xuICAgICAgZm9yIChjb25zdCBydWxlIG9mIEFycmF5LmZyb20oc2hlZXQuY3NzUnVsZXMpKSB7XG4gICAgICAgIHJ1bGVzLnB1c2gocnVsZS5jc3NUZXh0KTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvKiBpbmFjY2Vzc2libGUgc3R5bGVzaGVldCAqL1xuICAgIH1cbiAgfVxuICByZXR1cm4gcnVsZXM7XG59O1xuXG4vLyBNb2NrIEBkbmQta2l0IGhvb2tzIHRvIGF2b2lkIERuZENvbnRleHQgcmVxdWlyZW1lbnRcbmplc3QubW9jaygnQGRuZC1raXQvY29yZScsICgpID0+ICh7XG4gIHVzZURyYWdnYWJsZTogamVzdC5mbigoKSA9PiAoe1xuICAgIGF0dHJpYnV0ZXM6IHt9LFxuICAgIGxpc3RlbmVyczoge30sXG4gICAgc2V0Tm9kZVJlZjogamVzdC5mbigpLFxuICAgIGlzRHJhZ2dpbmc6IGZhbHNlLFxuICB9KSksXG4gIHVzZURyb3BwYWJsZTogamVzdC5mbigoKSA9PiAoe1xuICAgIHNldE5vZGVSZWY6IGplc3QuZm4oKSxcbiAgICBpc092ZXI6IGZhbHNlLFxuICAgIGFjdGl2ZTogbnVsbCxcbiAgfSkpLFxufSkpO1xuXG5kZXNjcmliZSgnaW5kZXgnLCAoKSA9PiB7XG4gIGRlc2NyaWJlKCdDaG9pY2VzJywgKCkgPT4ge1xuICAgIGNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgIGNob2ljZXM6IFtjaG9pY2UoJ0p1bXBlZCcsICcwJyksIGNob2ljZSgnTGF1Z2hlZCcsICcxJyksIGNob2ljZSgnU3Bvb24nLCAnMicpXSxcbiAgICAgIGNob2ljZVBvc2l0aW9uOiAnYmVsb3cnLFxuICAgICAgaW5zdGFuY2VJZDogJ3Rlc3QtaW5zdGFuY2UnLFxuICAgIH07XG5cbiAgICBpdCgncmVuZGVycyBjb3JyZWN0bHkgd2l0aCBkZWZhdWx0IHByb3BzJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8Q2hvaWNlcyB7Li4uZGVmYXVsdFByb3BzfSAvPik7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnSnVtcGVkJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnTGF1Z2hlZCcpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ1Nwb29uJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyBjb3JyZWN0bHkgd2l0aCBkaXNhYmxlZCBwcm9wIGFzIHRydWUnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxDaG9pY2VzIHsuLi5kZWZhdWx0UHJvcHN9IGRpc2FibGVkPXt0cnVlfSAvPik7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB3aXRob3V0IGR1cGxpY2F0ZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxDaG9pY2VzIHsuLi5kZWZhdWx0UHJvcHN9IGR1cGxpY2F0ZXM9e3VuZGVmaW5lZH0gdmFsdWU9e3sgMDogJzAnLCAxOiAnMScgfX0gLz4pO1xuICAgICAgZXhwZWN0KGNvbnRhaW5lci5maXJzdENoaWxkKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlbmRlcnMgd2l0aCBkdXBsaWNhdGVzJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8Q2hvaWNlcyB7Li4uZGVmYXVsdFByb3BzfSBkdXBsaWNhdGVzPXt0cnVlfSB2YWx1ZT17eyAwOiAnMCcsIDE6ICcxJyB9fSAvPik7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdDaG9pY2UnLCAoKSA9PiB7XG4gICAgY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgY2hvaWNlOiBjaG9pY2UoJ0xhYmVsJywgJzEnKSxcbiAgICAgIGluc3RhbmNlSWQ6ICd0ZXN0LWluc3RhbmNlJyxcbiAgICB9O1xuXG4gICAgZGVzY3JpYmUoJ3JlbmRlcicsICgpID0+IHtcbiAgICAgIGl0KCdyZW5kZXJzIGNvcnJlY3RseSB3aXRoIGRlZmF1bHQgcHJvcHMnLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPENob2ljZSB7Li4uZGVmYXVsdFByb3BzfSAvPik7XG4gICAgICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ0xhYmVsJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3JlbmRlcnMgY29ycmVjdGx5IHdpdGggZGlzYWJsZWQgcHJvcCBhcyB0cnVlJywgKCkgPT4ge1xuICAgICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxDaG9pY2Ugey4uLmRlZmF1bHRQcm9wc30gZGlzYWJsZWQ9e3RydWV9IC8+KTtcbiAgICAgICAgZXhwZWN0KGNvbnRhaW5lci5maXJzdENoaWxkKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnZnJhY3Rpb24gbWF0aCBzdHlsaW5nJywgKCkgPT4ge1xuICAgICAgaXQoJ2VubGFyZ2VzIG51bWVyYXRvci9kZW5vbWluYXRvciBkaWdpdHMgYWRqYWNlbnQgdG8gYSBmcmFjdGlvbiB0byAxMjAlJywgKCkgPT4ge1xuICAgICAgICByZW5kZXIoPENob2ljZSB7Li4uZGVmYXVsdFByb3BzfSAvPik7XG4gICAgICAgIC8vIFRoZSBuZXcgcnVsZSB0YXJnZXRzIG1qeC1tbiBkaWdpdHMgdGhhdCBzaXQgbmV4dCB0byBhbiBtangtbWZyYWMuXG4gICAgICAgIGNvbnN0IHJ1bGUgPSBjb2xsZWN0RW1vdGlvblJ1bGVzKCkuZmluZCgocikgPT4gci5pbmNsdWRlcygnbWp4LW1uJykgJiYgci5pbmNsdWRlcygnbWp4LW1mcmFjJykpO1xuICAgICAgICBleHBlY3QocnVsZSkudG9CZURlZmluZWQoKTtcbiAgICAgICAgZXhwZWN0KHJ1bGUpLnRvTWF0Y2goL21qeC1tbjpoYXNcXCh+XFxzKm1qeC1tZnJhY1xcKS8pO1xuICAgICAgICBleHBlY3QocnVsZSkudG9NYXRjaCgvbWp4LW1mcmFjXFxzKn5cXHMqbWp4LW1uLyk7XG4gICAgICAgIGV4cGVjdChydWxlKS50b01hdGNoKC9mb250LXNpemU6XFxzKjEyMCVcXHMqIWltcG9ydGFudC9pKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgna2VlcHMgdGhlIGV4aXN0aW5nIG1qeC1mcmFjIDEyMCUgcnVsZScsICgpID0+IHtcbiAgICAgICAgcmVuZGVyKDxDaG9pY2Ugey4uLmRlZmF1bHRQcm9wc30gLz4pO1xuICAgICAgICBjb25zdCBydWxlID0gY29sbGVjdEVtb3Rpb25SdWxlcygpLmZpbmQoKHIpID0+IC8oXnxbXi1dKW1qeC1mcmFjLy50ZXN0KHIpICYmICFyLmluY2x1ZGVzKCdtangtbWZyYWMnKSk7XG4gICAgICAgIGV4cGVjdChydWxlKS50b0JlRGVmaW5lZCgpO1xuICAgICAgICBleHBlY3QocnVsZSkudG9NYXRjaCgvZm9udC1zaXplOlxccyoxMjAlXFxzKiFpbXBvcnRhbnQvaSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxPQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSxNQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxNQUFBLEdBQUFGLHNCQUFBLENBQUFILE9BQUE7QUFBK0IsU0FBQUQsd0JBQUFPLENBQUEsRUFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxNQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFULHVCQUFBLFlBQUFBLHdCQUFBTyxDQUFBLEVBQUFDLENBQUEsU0FBQUEsQ0FBQSxJQUFBRCxDQUFBLElBQUFBLENBQUEsQ0FBQUssVUFBQSxTQUFBTCxDQUFBLE1BQUFNLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLEtBQUFDLFNBQUEsbUJBQUFULENBQUEs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
|
|
251
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfY2hvaWNlIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl91dGlscyIsIl9pbmRleCIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJzZXQiLCJfdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiY29sbGVjdEVtb3Rpb25SdWxlcyIsInJ1bGVzIiwiX2kiLCJfQXJyYXkkZnJvbSIsIkFycmF5IiwiZnJvbSIsImRvY3VtZW50Iiwic3R5bGVTaGVldHMiLCJsZW5ndGgiLCJzaGVldCIsIl9pMiIsIl9BcnJheSRmcm9tMiIsImNzc1J1bGVzIiwicnVsZSIsInB1c2giLCJjc3NUZXh0IiwiamVzdCIsIm1vY2siLCJ1c2VEcmFnZ2FibGUiLCJmbiIsImF0dHJpYnV0ZXMiLCJsaXN0ZW5lcnMiLCJzZXROb2RlUmVmIiwiaXNEcmFnZ2luZyIsInVzZURyb3BwYWJsZSIsImlzT3ZlciIsImFjdGl2ZSIsImRlc2NyaWJlIiwiZGVmYXVsdFByb3BzIiwiZGlzYWJsZWQiLCJjaG9pY2VzIiwiY2hvaWNlIiwiY2hvaWNlUG9zaXRpb24iLCJpbnN0YW5jZUlkIiwiaXQiLCJfcmVuZGVyIiwicmVuZGVyIiwiY3JlYXRlRWxlbWVudCIsImNvbnRhaW5lciIsImV4cGVjdCIsImZpcnN0Q2hpbGQiLCJ0b0JlSW5UaGVEb2N1bWVudCIsInNjcmVlbiIsImdldEJ5VGV4dCIsIl9yZW5kZXIyIiwiX2V4dGVuZHMyIiwiX3JlbmRlcjMiLCJkdXBsaWNhdGVzIiwidW5kZWZpbmVkIiwidmFsdWUiLCJfcmVuZGVyNCIsIm9uUGxhY2VtZW50Q2xpY2siLCJzZWxlY3RlZEl0ZW0iLCJpZCIsImZyb21DaG9pY2UiLCJ0eXBlIiwiX3JlbmRlcjUiLCJmaXJlRXZlbnQiLCJjbGljayIsInRvSGF2ZUJlZW5DYWxsZWRXaXRoIiwiX3JlbmRlcjYiLCJub3QiLCJ0b0hhdmVCZWVuQ2FsbGVkIiwib25TZWxlY3RDbGljayIsIl9yZW5kZXI3IiwiX3JlbmRlcjgiLCJmaW5kIiwiaW5jbHVkZXMiLCJ0b0JlRGVmaW5lZCIsInRvTWF0Y2giLCJ0ZXN0IiwiX3JlbmRlcjkiLCJfcmVuZGVyMCIsIl9yZW5kZXIxIiwiX3JlbmRlcjEwIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Nob2ljZXMvX190ZXN0c19fL2luZGV4LnRlc3QuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgcmVuZGVyLCBzY3JlZW4sIGZpcmVFdmVudCB9IGZyb20gJ0B0ZXN0aW5nLWxpYnJhcnkvcmVhY3QnO1xuaW1wb3J0IENob2ljZSBmcm9tICcuLi9jaG9pY2UnO1xuaW1wb3J0IHsgY2hvaWNlIH0gZnJvbSAnLi4vLi4vX190ZXN0c19fL3V0aWxzJztcbmltcG9ydCBDaG9pY2VzIGZyb20gJy4uL2luZGV4JztcblxuLy8gQ29sbGVjdCB0aGUgQ1NTIHJ1bGVzIGVtb3Rpb24vTVVJIGluamVjdGVkIGludG8gdGhlIGRvY3VtZW50IChqc2RvbSB1c2VzIGluc2VydFJ1bGUpLlxuY29uc3QgY29sbGVjdEVtb3Rpb25SdWxlcyA9ICgpID0+IHtcbiAgY29uc3QgcnVsZXMgPSBbXTtcbiAgZm9yIChjb25zdCBzaGVldCBvZiBBcnJheS5mcm9tKGRvY3VtZW50LnN0eWxlU2hlZXRzKSkge1xuICAgIHRyeSB7XG4gICAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgQXJyYXkuZnJvbShzaGVldC5jc3NSdWxlcykpIHtcbiAgICAgICAgcnVsZXMucHVzaChydWxlLmNzc1RleHQpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8qIGluYWNjZXNzaWJsZSBzdHlsZXNoZWV0ICovXG4gICAgfVxuICB9XG4gIHJldHVybiBydWxlcztcbn07XG5cbi8vIE1vY2sgQGRuZC1raXQgaG9va3MgdG8gYXZvaWQgRG5kQ29udGV4dCByZXF1aXJlbWVudFxuamVzdC5tb2NrKCdAZG5kLWtpdC9jb3JlJywgKCkgPT4gKHtcbiAgdXNlRHJhZ2dhYmxlOiBqZXN0LmZuKCgpID0+ICh7XG4gICAgYXR0cmlidXRlczoge30sXG4gICAgbGlzdGVuZXJzOiB7fSxcbiAgICBzZXROb2RlUmVmOiBqZXN0LmZuKCksXG4gICAgaXNEcmFnZ2luZzogZmFsc2UsXG4gIH0pKSxcbiAgdXNlRHJvcHBhYmxlOiBqZXN0LmZuKCgpID0+ICh7XG4gICAgc2V0Tm9kZVJlZjogamVzdC5mbigpLFxuICAgIGlzT3ZlcjogZmFsc2UsXG4gICAgYWN0aXZlOiBudWxsLFxuICB9KSksXG59KSk7XG5cbmRlc2NyaWJlKCdpbmRleCcsICgpID0+IHtcbiAgZGVzY3JpYmUoJ0Nob2ljZXMnLCAoKSA9PiB7XG4gICAgY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgY2hvaWNlczogW2Nob2ljZSgnSnVtcGVkJywgJzAnKSwgY2hvaWNlKCdMYXVnaGVkJywgJzEnKSwgY2hvaWNlKCdTcG9vbicsICcyJyldLFxuICAgICAgY2hvaWNlUG9zaXRpb246ICdiZWxvdycsXG4gICAgICBpbnN0YW5jZUlkOiAndGVzdC1pbnN0YW5jZScsXG4gICAgfTtcblxuICAgIGl0KCdyZW5kZXJzIGNvcnJlY3RseSB3aXRoIGRlZmF1bHQgcHJvcHMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxDaG9pY2VzIHsuLi5kZWZhdWx0UHJvcHN9IC8+KTtcbiAgICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdKdW1wZWQnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdMYXVnaGVkJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnU3Bvb24nKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIGNvcnJlY3RseSB3aXRoIGRpc2FibGVkIHByb3AgYXMgdHJ1ZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPENob2ljZXMgey4uLmRlZmF1bHRQcm9wc30gZGlzYWJsZWQ9e3RydWV9IC8+KTtcbiAgICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIHdpdGhvdXQgZHVwbGljYXRlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPENob2ljZXMgey4uLmRlZmF1bHRQcm9wc30gZHVwbGljYXRlcz17dW5kZWZpbmVkfSB2YWx1ZT17eyAwOiAnMCcsIDE6ICcxJyB9fSAvPik7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB3aXRoIGR1cGxpY2F0ZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxDaG9pY2VzIHsuLi5kZWZhdWx0UHJvcHN9IGR1cGxpY2F0ZXM9e3RydWV9IHZhbHVlPXt7IDA6ICcwJywgMTogJzEnIH19IC8+KTtcbiAgICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdjbGljay10by1wbGFjZSBpbnRvIHRoZSBwb29sJywgKCkgPT4ge1xuICAgICAgaXQoJ3BsYWNlcyB0aGUgc2VsZWN0aW9uIGludG8gdGhlIHBvb2wgd2hlbiBjbGlja2luZyB0aGUgcG9vbCBiYWNrZ3JvdW5kJywgKCkgPT4ge1xuICAgICAgICBjb25zdCBvblBsYWNlbWVudENsaWNrID0gamVzdC5mbigpO1xuICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSB7IGlkOiAnc29tZS1ibGFuaycsIGZyb21DaG9pY2U6IGZhbHNlLCB0eXBlOiAnTWFza0JsYW5rJyB9O1xuICAgICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgICAgIDxDaG9pY2VzIHsuLi5kZWZhdWx0UHJvcHN9IHNlbGVjdGVkSXRlbT17c2VsZWN0ZWRJdGVtfSBvblBsYWNlbWVudENsaWNrPXtvblBsYWNlbWVudENsaWNrfSAvPixcbiAgICAgICAgKTtcblxuICAgICAgICBmaXJlRXZlbnQuY2xpY2soY29udGFpbmVyLmZpcnN0Q2hpbGQpO1xuXG4gICAgICAgIGV4cGVjdChvblBsYWNlbWVudENsaWNrKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh1bmRlZmluZWQpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdkb2VzIG5vdGhpbmcgd2hlbiBjbGlja2luZyB0aGUgcG9vbCBiYWNrZ3JvdW5kIHdpdGggbm90aGluZyBzZWxlY3RlZCcsICgpID0+IHtcbiAgICAgICAgY29uc3Qgb25QbGFjZW1lbnRDbGljayA9IGplc3QuZm4oKTtcbiAgICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8Q2hvaWNlcyB7Li4uZGVmYXVsdFByb3BzfSBvblBsYWNlbWVudENsaWNrPXtvblBsYWNlbWVudENsaWNrfSAvPik7XG5cbiAgICAgICAgZmlyZUV2ZW50LmNsaWNrKGNvbnRhaW5lci5maXJzdENoaWxkKTtcblxuICAgICAgICBleHBlY3Qob25QbGFjZW1lbnRDbGljaykubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnY2xpY2tpbmcgYSBzcGVjaWZpYyBjaG9pY2Ugc2VsZWN0cyBpdCwgbm90IHRoZSBwb29sIGJhY2tncm91bmQgaGFuZGxlcicsICgpID0+IHtcbiAgICAgICAgY29uc3Qgb25QbGFjZW1lbnRDbGljayA9IGplc3QuZm4oKTtcbiAgICAgICAgY29uc3Qgb25TZWxlY3RDbGljayA9IGplc3QuZm4oKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0geyBpZDogJ3NvbWUtYmxhbmsnLCBmcm9tQ2hvaWNlOiBmYWxzZSwgdHlwZTogJ01hc2tCbGFuaycgfTtcbiAgICAgICAgcmVuZGVyKFxuICAgICAgICAgIDxDaG9pY2VzXG4gICAgICAgICAgICB7Li4uZGVmYXVsdFByb3BzfVxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtPXtzZWxlY3RlZEl0ZW19XG4gICAgICAgICAgICBvblNlbGVjdENsaWNrPXtvblNlbGVjdENsaWNrfVxuICAgICAgICAgICAgb25QbGFjZW1lbnRDbGljaz17b25QbGFjZW1lbnRDbGlja31cbiAgICAgICAgICAvPixcbiAgICAgICAgKTtcblxuICAgICAgICBmaXJlRXZlbnQuY2xpY2soc2NyZWVuLmdldEJ5VGV4dCgnSnVtcGVkJykpO1xuXG4gICAgICAgIGV4cGVjdChvblNlbGVjdENsaWNrKS50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgICAgIGV4cGVjdChvblBsYWNlbWVudENsaWNrKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdDaG9pY2UnLCAoKSA9PiB7XG4gICAgY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgY2hvaWNlOiBjaG9pY2UoJ0xhYmVsJywgJzEnKSxcbiAgICAgIGluc3RhbmNlSWQ6ICd0ZXN0LWluc3RhbmNlJyxcbiAgICB9O1xuXG4gICAgZGVzY3JpYmUoJ3JlbmRlcicsICgpID0+IHtcbiAgICAgIGl0KCdyZW5kZXJzIGNvcnJlY3RseSB3aXRoIGRlZmF1bHQgcHJvcHMnLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPENob2ljZSB7Li4uZGVmYXVsdFByb3BzfSAvPik7XG4gICAgICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ0xhYmVsJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3JlbmRlcnMgY29ycmVjdGx5IHdpdGggZGlzYWJsZWQgcHJvcCBhcyB0cnVlJywgKCkgPT4ge1xuICAgICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxDaG9pY2Ugey4uLmRlZmF1bHRQcm9wc30gZGlzYWJsZWQ9e3RydWV9IC8+KTtcbiAgICAgICAgZXhwZWN0KGNvbnRhaW5lci5maXJzdENoaWxkKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnZnJhY3Rpb24gbWF0aCBzdHlsaW5nJywgKCkgPT4ge1xuICAgICAgaXQoJ2VubGFyZ2VzIG51bWVyYXRvci9kZW5vbWluYXRvciBkaWdpdHMgYWRqYWNlbnQgdG8gYSBmcmFjdGlvbiB0byAxMjAlJywgKCkgPT4ge1xuICAgICAgICByZW5kZXIoPENob2ljZSB7Li4uZGVmYXVsdFByb3BzfSAvPik7XG4gICAgICAgIC8vIFRoZSBuZXcgcnVsZSB0YXJnZXRzIG1qeC1tbiBkaWdpdHMgdGhhdCBzaXQgbmV4dCB0byBhbiBtangtbWZyYWMuXG4gICAgICAgIGNvbnN0IHJ1bGUgPSBjb2xsZWN0RW1vdGlvblJ1bGVzKCkuZmluZCgocikgPT4gci5pbmNsdWRlcygnbWp4LW1uJykgJiYgci5pbmNsdWRlcygnbWp4LW1mcmFjJykpO1xuICAgICAgICBleHBlY3QocnVsZSkudG9CZURlZmluZWQoKTtcbiAgICAgICAgZXhwZWN0KHJ1bGUpLnRvTWF0Y2goL21qeC1tbjpoYXNcXCh+XFxzKm1qeC1tZnJhY1xcKS8pO1xuICAgICAgICBleHBlY3QocnVsZSkudG9NYXRjaCgvbWp4LW1mcmFjXFxzKn5cXHMqbWp4LW1uLyk7XG4gICAgICAgIGV4cGVjdChydWxlKS50b01hdGNoKC9mb250LXNpemU6XFxzKjEyMCVcXHMqIWltcG9ydGFudC9pKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgna2VlcHMgdGhlIGV4aXN0aW5nIG1qeC1mcmFjIDEyMCUgcnVsZScsICgpID0+IHtcbiAgICAgICAgcmVuZGVyKDxDaG9pY2Ugey4uLmRlZmF1bHRQcm9wc30gLz4pO1xuICAgICAgICBjb25zdCBydWxlID0gY29sbGVjdEVtb3Rpb25SdWxlcygpLmZpbmQoKHIpID0+IC8oXnxbXi1dKW1qeC1mcmFjLy50ZXN0KHIpICYmICFyLmluY2x1ZGVzKCdtangtbWZyYWMnKSk7XG4gICAgICAgIGV4cGVjdChydWxlKS50b0JlRGVmaW5lZCgpO1xuICAgICAgICBleHBlY3QocnVsZSkudG9NYXRjaCgvZm9udC1zaXplOlxccyoxMjAlXFxzKiFpbXBvcnRhbnQvaSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdjbGljay10by1zZWxlY3QnLCAoKSA9PiB7XG4gICAgICBpdCgnc2VsZWN0cyB0aGlzIGNob2ljZSBvbiBjbGljayB3aGVuIG5vdGhpbmcgZWxzZSBpcyBzZWxlY3RlZCcsICgpID0+IHtcbiAgICAgICAgY29uc3Qgb25TZWxlY3RDbGljayA9IGplc3QuZm4oKTtcbiAgICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8Q2hvaWNlIHsuLi5kZWZhdWx0UHJvcHN9IHNlbGVjdGVkSXRlbT17bnVsbH0gb25TZWxlY3RDbGljaz17b25TZWxlY3RDbGlja30gLz4pO1xuXG4gICAgICAgIGZpcmVFdmVudC5jbGljayhjb250YWluZXIuZmlyc3RDaGlsZCk7XG5cbiAgICAgICAgZXhwZWN0KG9uU2VsZWN0Q2xpY2spLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHtcbiAgICAgICAgICBjaG9pY2U6IGRlZmF1bHRQcm9wcy5jaG9pY2UsXG4gICAgICAgICAgaW5zdGFuY2VJZDogZGVmYXVsdFByb3BzLmluc3RhbmNlSWQsXG4gICAgICAgICAgZnJvbUNob2ljZTogdHJ1ZSxcbiAgICAgICAgICB0eXBlOiAnTWFza0JsYW5rJyxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3RvZ2dsZXMgb2ZmIChjYWxscyBvblNlbGVjdENsaWNrIGFnYWluKSB3aGVuIGNsaWNraW5nIHRoZSBhbHJlYWR5LXNlbGVjdGVkIGNob2ljZScsICgpID0+IHtcbiAgICAgICAgY29uc3Qgb25TZWxlY3RDbGljayA9IGplc3QuZm4oKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0geyBjaG9pY2U6IGRlZmF1bHRQcm9wcy5jaG9pY2UsIGluc3RhbmNlSWQ6IGRlZmF1bHRQcm9wcy5pbnN0YW5jZUlkLCBmcm9tQ2hvaWNlOiB0cnVlLCB0eXBlOiAnTWFza0JsYW5rJyB9O1xuICAgICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgICAgIDxDaG9pY2Ugey4uLmRlZmF1bHRQcm9wc30gc2VsZWN0ZWRJdGVtPXtzZWxlY3RlZEl0ZW19IG9uU2VsZWN0Q2xpY2s9e29uU2VsZWN0Q2xpY2t9IC8+LFxuICAgICAgICApO1xuXG4gICAgICAgIGZpcmVFdmVudC5jbGljayhjb250YWluZXIuZmlyc3RDaGlsZCk7XG5cbiAgICAgICAgZXhwZWN0KG9uU2VsZWN0Q2xpY2spLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHtcbiAgICAgICAgICBjaG9pY2U6IGRlZmF1bHRQcm9wcy5jaG9pY2UsXG4gICAgICAgICAgaW5zdGFuY2VJZDogZGVmYXVsdFByb3BzLmluc3RhbmNlSWQsXG4gICAgICAgICAgZnJvbUNob2ljZTogdHJ1ZSxcbiAgICAgICAgICB0eXBlOiAnTWFza0JsYW5rJyxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3NlbGVjdHMgdGhpcyBjaG9pY2UgZXZlbiB3aGlsZSBhIGRpZmZlcmVudCBpdGVtIGlzIGFscmVhZHkgc2VsZWN0ZWQgKHBvb2wgaXRlbXMgYXJlIG5ldmVyIHBsYWNlbWVudCB0YXJnZXRzKScsICgpID0+IHtcbiAgICAgICAgY29uc3Qgb25TZWxlY3RDbGljayA9IGplc3QuZm4oKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0geyBpZDogJ3NvbWUtYmxhbmsnLCBmcm9tQ2hvaWNlOiBmYWxzZSwgdHlwZTogJ01hc2tCbGFuaycgfTtcbiAgICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgICA8Q2hvaWNlIHsuLi5kZWZhdWx0UHJvcHN9IHNlbGVjdGVkSXRlbT17c2VsZWN0ZWRJdGVtfSBvblNlbGVjdENsaWNrPXtvblNlbGVjdENsaWNrfSAvPixcbiAgICAgICAgKTtcblxuICAgICAgICBmaXJlRXZlbnQuY2xpY2soY29udGFpbmVyLmZpcnN0Q2hpbGQpO1xuXG4gICAgICAgIGV4cGVjdChvblNlbGVjdENsaWNrKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7XG4gICAgICAgICAgY2hvaWNlOiBkZWZhdWx0UHJvcHMuY2hvaWNlLFxuICAgICAgICAgIGluc3RhbmNlSWQ6IGRlZmF1bHRQcm9wcy5pbnN0YW5jZUlkLFxuICAgICAgICAgIGZyb21DaG9pY2U6IHRydWUsXG4gICAgICAgICAgdHlwZTogJ01hc2tCbGFuaycsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdkb2VzIG5vdGhpbmcgb24gY2xpY2sgd2hlbiBkaXNhYmxlZCcsICgpID0+IHtcbiAgICAgICAgY29uc3Qgb25TZWxlY3RDbGljayA9IGplc3QuZm4oKTtcbiAgICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgICA8Q2hvaWNlIHsuLi5kZWZhdWx0UHJvcHN9IGRpc2FibGVkPXt0cnVlfSBzZWxlY3RlZEl0ZW09e251bGx9IG9uU2VsZWN0Q2xpY2s9e29uU2VsZWN0Q2xpY2t9IC8+LFxuICAgICAgICApO1xuXG4gICAgICAgIGZpcmVFdmVudC5jbGljayhjb250YWluZXIuZmlyc3RDaGlsZCk7XG5cbiAgICAgICAgZXhwZWN0KG9uU2VsZWN0Q2xpY2spLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxPQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSxNQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxNQUFBLEdBQUFGLHNCQUFBLENBQUFILE9BQUE7QUFBK0IsU0FBQUQsd0JBQUFPLENBQUEsRUFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxNQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFULHVCQUFBLFlBQUFBLHdCQUFBTyxDQUFBLEVBQUFDLENBQUEsU0FBQUEsQ0FBQSxJQUFBRCxDQUFBLElBQUFBLENBQUEsQ0FBQUssVUFBQSxTQUFBTCxDQUFBLE1BQUFNLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLEtBQUFDLFNBQUEsbUJBQUFULENBQUEsaUJBQUFBLENBQUEsZ0JBQUFVLE9BQUEsQ0FBQVYsQ0FBQSwwQkFBQUEsQ0FBQSxTQUFBUSxDQUFBLE1BQUFGLENBQUEsR0FBQUwsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsUUFBQUcsQ0FBQSxDQUFBSyxHQUFBLENBQUFYLENBQUEsVUFBQU0sQ0FBQSxDQUFBTSxHQUFBLENBQUFaLENBQUEsR0FBQU0sQ0FBQSxDQUFBTyxHQUFBLENBQUFiLENBQUEsRUFBQVEsQ0FBQSxjQUFBTSxFQUFBLElBQUFkLENBQUEsZ0JBQUFjLEVBQUEsT0FBQUMsY0FBQSxDQUFBQyxJQUFBLENBQUFoQixDQUFBLEVBQUFjLEVBQUEsT0FBQVAsQ0FBQSxJQUFBRCxDQUFB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
|