@pie-lib/mask-markup 3.1.6-beta.14 → 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.
@@ -10,9 +10,9 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
10
10
  // Mock @dnd-kit hooks to avoid DndContext requirement
11
11
  jest.mock('@dnd-kit/core', function () {
12
12
  return {
13
- useDraggable: jest.fn(function () {
13
+ useDraggable: jest.fn(function (options) {
14
14
  return {
15
- attributes: {},
15
+ attributes: (options === null || options === void 0 ? void 0 : options.attributes) || {},
16
16
  listeners: {},
17
17
  setNodeRef: jest.fn(),
18
18
  transform: null,
@@ -204,8 +204,9 @@ describe('Blank', function () {
204
204
  (0, _react2.act)(function () {
205
205
  jest.runAllTimers();
206
206
  });
207
- var wrapper = container.firstChild; // StyledContent
208
- var chip = wrapper && wrapper.firstChild; // StyledChip (rootRef)
207
+ var wrapper = container.firstChild; // StyledContent (outer droppable/click node)
208
+ var dragHandle = wrapper && wrapper.firstChild; // StyledDragHandle (inner draggable node)
209
+ var chip = dragHandle && dragHandle.firstChild; // StyledChip (rootRef)
209
210
 
210
211
  // Width and height should include padding (24px) around measured content
211
212
  expect(chip.style.width).toBe('129px');
@@ -289,5 +290,260 @@ describe('Blank', function () {
289
290
  // Should show visual feedback for drag over
290
291
  });
291
292
  });
293
+ describe('click-to-select and click-to-place', function () {
294
+ var _require2 = require('@dnd-kit/core'),
295
+ useDroppable = _require2.useDroppable;
296
+ afterEach(function () {
297
+ useDroppable.mockReturnValue({
298
+ setNodeRef: jest.fn(),
299
+ isOver: false,
300
+ active: null
301
+ });
302
+ });
303
+ it('is a native tab stop (role=button, tabIndex=0) when empty and not disabled', function () {
304
+ var _render1 = (0, _react2.render)(/*#__PURE__*/React.createElement(_blank["default"], (0, _extends2["default"])({}, defaultProps, {
305
+ choice: undefined
306
+ }))),
307
+ container = _render1.container;
308
+ var outer = container.firstChild;
309
+ expect(outer.getAttribute('role')).toBe('button');
310
+ expect(outer.getAttribute('tabindex')).toBe('0');
311
+ });
312
+ it('is not a tab stop when it already holds a choice (relies on the inner draggable node)', function () {
313
+ var _render10 = (0, _react2.render)(/*#__PURE__*/React.createElement(_blank["default"], defaultProps)),
314
+ container = _render10.container;
315
+ var outer = container.firstChild;
316
+ expect(outer.getAttribute('role')).toBeNull();
317
+ expect(outer.getAttribute('tabindex')).toBe('-1');
318
+ });
319
+ it('is not a tab stop when disabled, even if empty', function () {
320
+ var _render11 = (0, _react2.render)(/*#__PURE__*/React.createElement(_blank["default"], (0, _extends2["default"])({}, defaultProps, {
321
+ choice: undefined,
322
+ disabled: true
323
+ }))),
324
+ container = _render11.container;
325
+ var outer = container.firstChild;
326
+ expect(outer.getAttribute('tabindex')).toBe('-1');
327
+ });
328
+ it('does not make the inner draggable node a second tab stop when the blank is empty', function () {
329
+ var _render12 = (0, _react2.render)(/*#__PURE__*/React.createElement(_blank["default"], (0, _extends2["default"])({}, defaultProps, {
330
+ choice: undefined,
331
+ selectedItem: null
332
+ }))),
333
+ container = _render12.container;
334
+ var outer = container.firstChild;
335
+ var inner = outer.firstElementChild;
336
+ expect(outer.getAttribute('tabindex')).toBe('0');
337
+ // dragAttributes (which carries tabIndex) is only spread onto the inner node when
338
+ // it's the live tab stop (filled and not disabled) — otherwise it's omitted
339
+ // entirely, so no tabindex attribute is present at all here.
340
+ expect(inner.getAttribute('tabindex')).toBeNull();
341
+ });
342
+ it('makes the inner draggable node the tab stop when the blank is filled and not disabled', function () {
343
+ var _render13 = (0, _react2.render)(/*#__PURE__*/React.createElement(_blank["default"], (0, _extends2["default"])({}, defaultProps, {
344
+ selectedItem: null
345
+ }))),
346
+ container = _render13.container;
347
+ var outer = container.firstChild;
348
+ var inner = outer.firstElementChild;
349
+ expect(inner.getAttribute('tabindex')).toBe('0');
350
+ });
351
+ it('selects this blank\'s content on click when nothing else is selected', function () {
352
+ var onSelectClick = jest.fn();
353
+ var _render14 = (0, _react2.render)(/*#__PURE__*/React.createElement(_blank["default"], (0, _extends2["default"])({}, defaultProps, {
354
+ id: "3",
355
+ selectedItem: null,
356
+ onSelectClick: onSelectClick
357
+ }))),
358
+ container = _render14.container;
359
+ _react2.fireEvent.click(container.firstChild);
360
+ expect(onSelectClick).toHaveBeenCalledWith({
361
+ id: '3',
362
+ choice: defaultProps.choice,
363
+ instanceId: undefined,
364
+ fromChoice: false,
365
+ type: 'MaskBlank'
366
+ });
367
+ });
368
+ it('toggles off when clicking its own already-selected content', function () {
369
+ var onSelectClick = jest.fn();
370
+ var selectedItem = {
371
+ id: '3',
372
+ choice: defaultProps.choice,
373
+ instanceId: undefined,
374
+ fromChoice: false,
375
+ type: 'MaskBlank'
376
+ };
377
+ var _render15 = (0, _react2.render)(/*#__PURE__*/React.createElement(_blank["default"], (0, _extends2["default"])({}, defaultProps, {
378
+ id: "3",
379
+ selectedItem: selectedItem,
380
+ onSelectClick: onSelectClick
381
+ }))),
382
+ container = _render15.container;
383
+ _react2.fireEvent.click(container.firstChild);
384
+ expect(onSelectClick).toHaveBeenCalledWith(selectedItem);
385
+ });
386
+ it('places the current selection here when clicking a different, already-filled blank', function () {
387
+ var onPlacementClick = jest.fn();
388
+ var selectedItem = {
389
+ choice: {
390
+ value: 'Other'
391
+ },
392
+ instanceId: undefined,
393
+ fromChoice: true,
394
+ type: 'MaskBlank'
395
+ };
396
+ var _render16 = (0, _react2.render)(/*#__PURE__*/React.createElement(_blank["default"], (0, _extends2["default"])({}, defaultProps, {
397
+ id: "3",
398
+ selectedItem: selectedItem,
399
+ onPlacementClick: onPlacementClick
400
+ }))),
401
+ container = _render16.container;
402
+ _react2.fireEvent.click(container.firstChild);
403
+ expect(onPlacementClick).toHaveBeenCalledWith('3');
404
+ });
405
+ it('places the current selection here on Space/Enter when empty', function () {
406
+ var onPlacementClick = jest.fn();
407
+ var selectedItem = {
408
+ choice: {
409
+ value: 'Other'
410
+ },
411
+ instanceId: undefined,
412
+ fromChoice: true,
413
+ type: 'MaskBlank'
414
+ };
415
+ var _render17 = (0, _react2.render)(/*#__PURE__*/React.createElement(_blank["default"], (0, _extends2["default"])({}, defaultProps, {
416
+ id: "3",
417
+ choice: undefined,
418
+ selectedItem: selectedItem,
419
+ onPlacementClick: onPlacementClick
420
+ }))),
421
+ container = _render17.container;
422
+ _react2.fireEvent.keyDown(container.firstChild, {
423
+ code: 'Space'
424
+ });
425
+ expect(onPlacementClick).toHaveBeenCalledWith('3');
426
+ });
427
+ it('does nothing on click when empty and nothing is selected', function () {
428
+ var onSelectClick = jest.fn();
429
+ var onPlacementClick = jest.fn();
430
+ var _render18 = (0, _react2.render)(/*#__PURE__*/React.createElement(_blank["default"], (0, _extends2["default"])({}, defaultProps, {
431
+ choice: undefined,
432
+ selectedItem: null,
433
+ onSelectClick: onSelectClick,
434
+ onPlacementClick: onPlacementClick
435
+ }))),
436
+ container = _render18.container;
437
+ _react2.fireEvent.click(container.firstChild);
438
+ expect(onSelectClick).not.toHaveBeenCalled();
439
+ expect(onPlacementClick).not.toHaveBeenCalled();
440
+ });
441
+ it('does nothing on click when disabled', function () {
442
+ var onSelectClick = jest.fn();
443
+ var selectedItem = {
444
+ choice: {
445
+ value: 'Other'
446
+ },
447
+ instanceId: undefined,
448
+ fromChoice: true,
449
+ type: 'MaskBlank'
450
+ };
451
+ var _render19 = (0, _react2.render)(/*#__PURE__*/React.createElement(_blank["default"], (0, _extends2["default"])({}, defaultProps, {
452
+ disabled: true,
453
+ selectedItem: selectedItem,
454
+ onSelectClick: onSelectClick
455
+ }))),
456
+ container = _render19.container;
457
+ _react2.fireEvent.click(container.firstChild);
458
+ expect(onSelectClick).not.toHaveBeenCalled();
459
+ });
460
+ it('folds click-selection hover into the same highlight a live drag-over shows', function () {
461
+ var selectedItem = {
462
+ choice: {
463
+ value: 'Other'
464
+ },
465
+ instanceId: undefined,
466
+ fromChoice: true,
467
+ type: 'MaskBlank'
468
+ };
469
+ var _render20 = (0, _react2.render)(/*#__PURE__*/React.createElement(_blank["default"], (0, _extends2["default"])({}, defaultProps, {
470
+ id: "3",
471
+ selectedItem: selectedItem
472
+ }))),
473
+ container = _render20.container;
474
+ var outer = container.firstChild;
475
+ _react2.fireEvent.mouseEnter(outer);
476
+ // The "over" prop drives the same CSS the real isOver-driven highlight uses —
477
+ // assert via the rendered chip's className, since StyledContent forwards `over`.
478
+ // Re-render check: BlankContent receives the folded isOver as true while hovered
479
+ // with a selection active — verified indirectly via the "over" chip class it sets.
480
+ expect(_react2.screen.getByText('Cow').closest('.over')).not.toBeNull();
481
+ _react2.fireEvent.mouseLeave(outer);
482
+ expect(_react2.screen.getByText('Cow').closest('.over')).toBeNull();
483
+ });
484
+ it('shows a pointer cursor on hover when something is selected', function () {
485
+ var selectedItem = {
486
+ choice: {
487
+ value: 'Other'
488
+ },
489
+ instanceId: undefined,
490
+ fromChoice: true,
491
+ type: 'MaskBlank'
492
+ };
493
+ var _render21 = (0, _react2.render)(/*#__PURE__*/React.createElement(_blank["default"], (0, _extends2["default"])({}, defaultProps, {
494
+ id: "3",
495
+ selectedItem: selectedItem
496
+ }))),
497
+ container = _render21.container;
498
+ var outer = container.firstChild;
499
+ var className = Array.from(outer.classList).find(function (c) {
500
+ return c.startsWith('css-');
501
+ });
502
+ var hoverRule = collectEmotionRules().find(function (r) {
503
+ return r.includes(".".concat(className, ":hover"));
504
+ });
505
+ expect(hoverRule).toBeDefined();
506
+ expect(hoverRule).toMatch(/cursor:\s*pointer/);
507
+ });
508
+ it('keeps the default cursor on hover when nothing is selected', function () {
509
+ var _render22 = (0, _react2.render)(/*#__PURE__*/React.createElement(_blank["default"], (0, _extends2["default"])({}, defaultProps, {
510
+ id: "3",
511
+ selectedItem: null
512
+ }))),
513
+ container = _render22.container;
514
+ var outer = container.firstChild;
515
+ var className = Array.from(outer.classList).find(function (c) {
516
+ return c.startsWith('css-');
517
+ });
518
+ var hoverRule = collectEmotionRules().find(function (r) {
519
+ return r.includes(".".concat(className, ":hover"));
520
+ });
521
+ expect(hoverRule).toBeUndefined();
522
+ });
523
+ it('keeps the default cursor on hover when disabled, even with something selected', function () {
524
+ var selectedItem = {
525
+ choice: {
526
+ value: 'Other'
527
+ },
528
+ instanceId: undefined,
529
+ fromChoice: true,
530
+ type: 'MaskBlank'
531
+ };
532
+ var _render23 = (0, _react2.render)(/*#__PURE__*/React.createElement(_blank["default"], (0, _extends2["default"])({}, defaultProps, {
533
+ id: "3",
534
+ disabled: true,
535
+ selectedItem: selectedItem
536
+ }))),
537
+ container = _render23.container;
538
+ var outer = container.firstChild;
539
+ var className = Array.from(outer.classList).find(function (c) {
540
+ return c.startsWith('css-');
541
+ });
542
+ var hoverRule = collectEmotionRules().find(function (r) {
543
+ return r.includes(".".concat(className, ":hover"));
544
+ });
545
+ expect(hoverRule).toBeUndefined();
546
+ });
547
+ });
292
548
  });
293
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfYmxhbmsiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiZSIsInQiLCJXZWFrTWFwIiwiciIsIm4iLCJfX2VzTW9kdWxlIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiX3R5cGVvZiIsImhhcyIsImdldCIsInNldCIsIl90IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJqZXN0IiwibW9jayIsInVzZURyYWdnYWJsZSIsImZuIiwiYXR0cmlidXRlcyIsImxpc3RlbmVycyIsInNldE5vZGVSZWYiLCJ0cmFuc2Zvcm0iLCJpc0RyYWdnaW5nIiwidXNlRHJvcHBhYmxlIiwiaXNPdmVyIiwiYWN0aXZlIiwiQ1NTIiwiVHJhbnNsYXRlIiwidG9TdHJpbmciLCJyZW5kZXJNYXRoIiwiY29sbGVjdEVtb3Rpb25SdWxlcyIsInJ1bGVzIiwiX2kiLCJfQXJyYXkkZnJvbSIsIkFycmF5IiwiZnJvbSIsImRvY3VtZW50Iiwic3R5bGVTaGVldHMiLCJsZW5ndGgiLCJzaGVldCIsIl9pMiIsIl9BcnJheSRmcm9tMiIsImNzc1J1bGVzIiwicnVsZSIsInB1c2giLCJjc3NUZXh0IiwiZGVzY3JpYmUiLCJfcmVxdWlyZSIsIm9uQ2hhbmdlIiwiZGVmYXVsdFByb3BzIiwiZGlzYWJsZWQiLCJjaG9pY2UiLCJ2YWx1ZSIsImRyYWdJdGVtIiwiY29ycmVjdCIsImJlZm9yZUVhY2giLCJtb2NrQ2xlYXIiLCJpdCIsIl9yZW5kZXIiLCJyZW5kZXIiLCJjcmVhdGVFbGVtZW50IiwiY29udGFpbmVyIiwiZXhwZWN0IiwiZmlyc3RDaGlsZCIsInRvQmVJblRoZURvY3VtZW50Iiwic2NyZWVuIiwiZ2V0QnlUZXh0IiwiX2V4dGVuZHMyIiwicXVlcnlCeVJvbGUiLCJuYW1lIiwibm90IiwiX3JlbmRlcjIiLCJfcmVuZGVyMyIsInVuZGVmaW5lZCIsImRlbGV0ZUJ1dHRvbiIsIl9yZW5kZXI0IiwiZW1wdHlSZXNwb25zZUFyZWFIZWlnaHQiLCJlbXB0eVJlc3BvbnNlQXJlYVdpZHRoIiwiZWxlbWVudCIsIl9yZW5kZXI1IiwiX3JlbmRlcjYiLCJ1c2VGYWtlVGltZXJzIiwicmVjdFNweSIsInNweU9uIiwiSFRNTEVsZW1lbnQiLCJwcm90b3R5cGUiLCJtb2NrUmV0dXJuVmFsdWUiLCJ3aWR0aCIsImhlaWdodCIsInRvcCIsImxlZnQiLCJyaWdodCIsImJvdHRvbSIsIl9yZW5kZXI3IiwiYWN0IiwicnVuQWxsVGltZXJzIiwid3JhcHBlciIsImNoaXAiLCJzdHlsZSIsInRvQmUiLCJtb2NrUmVzdG9yZSIsInVzZVJlYWxUaW1lcnMiLCJ0b0hhdmVCZWVuQ2FsbGVkIiwiX3JlbmRlcjgiLCJyZXJlbmRlciIsImNhbGxzQWZ0ZXJNb3VudCIsImNhbGxzIiwidG9CZUdyZWF0ZXJUaGFuIiwiX3JlbmRlcjkiLCJmaW5kIiwiaW5jbHVkZXMiLCJ0b0JlRGVmaW5lZCIsInRvTWF0Y2giLCJ0ZXN0IiwiX3JlbmRlcjAiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9fX3Rlc3RzX18vYmxhbmsudGVzdC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyByZW5kZXIsIHNjcmVlbiwgYWN0IH0gZnJvbSAnQHRlc3RpbmctbGlicmFyeS9yZWFjdCc7XG5pbXBvcnQgQmxhbmsgZnJvbSAnLi4vYmxhbmsnO1xuXG4vLyBNb2NrIEBkbmQta2l0IGhvb2tzIHRvIGF2b2lkIERuZENvbnRleHQgcmVxdWlyZW1lbnRcbmplc3QubW9jaygnQGRuZC1raXQvY29yZScsICgpID0+ICh7XG4gIHVzZURyYWdnYWJsZTogamVzdC5mbigoKSA9PiAoe1xuICAgIGF0dHJpYnV0ZXM6IHt9LFxuICAgIGxpc3RlbmVyczoge30sXG4gICAgc2V0Tm9kZVJlZjogamVzdC5mbigpLFxuICAgIHRyYW5zZm9ybTogbnVsbCxcbiAgICBpc0RyYWdnaW5nOiBmYWxzZSxcbiAgfSkpLFxuICB1c2VEcm9wcGFibGU6IGplc3QuZm4oKCkgPT4gKHtcbiAgICBzZXROb2RlUmVmOiBqZXN0LmZuKCksXG4gICAgaXNPdmVyOiBmYWxzZSxcbiAgICBhY3RpdmU6IG51bGwsXG4gIH0pKSxcbn0pKTtcblxuamVzdC5tb2NrKCdAZG5kLWtpdC91dGlsaXRpZXMnLCAoKSA9PiAoe1xuICBDU1M6IHtcbiAgICBUcmFuc2xhdGU6IHtcbiAgICAgIHRvU3RyaW5nOiBqZXN0LmZuKCgpID0+ICd0cmFuc2xhdGUzZCgwLCAwLCAwKScpLFxuICAgIH0sXG4gIH0sXG59KSk7XG5cbmplc3QubW9jaygnQHBpZS1saWIvbWF0aC1yZW5kZXJpbmcnLCAoKSA9PiAoe1xuICByZW5kZXJNYXRoOiBqZXN0LmZuKCksXG59KSk7XG5cbi8vIENvbGxlY3QgdGhlIENTUyBydWxlcyBlbW90aW9uL01VSSBpbmplY3RlZCBpbnRvIHRoZSBkb2N1bWVudCAoanNkb20gdXNlcyBpbnNlcnRSdWxlKS5cbmNvbnN0IGNvbGxlY3RFbW90aW9uUnVsZXMgPSAoKSA9PiB7XG4gIGNvbnN0IHJ1bGVzID0gW107XG4gIGZvciAoY29uc3Qgc2hlZXQgb2YgQXJyYXkuZnJvbShkb2N1bWVudC5zdHlsZVNoZWV0cykpIHtcbiAgICB0cnkge1xuICAgICAgZm9yIChjb25zdCBydWxlIG9mIEFycmF5LmZyb20oc2hlZXQuY3NzUnVsZXMpKSB7XG4gICAgICAgIHJ1bGVzLnB1c2gocnVsZS5jc3NUZXh0KTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvKiBpbmFjY2Vzc2libGUgc3R5bGVzaGVldCAqL1xuICAgIH1cbiAgfVxuICByZXR1cm4gcnVsZXM7XG59O1xuXG5kZXNjcmliZSgnQmxhbmsnLCAoKSA9PiB7XG4gIGNvbnN0IHsgcmVuZGVyTWF0aCB9ID0gcmVxdWlyZSgnQHBpZS1saWIvbWF0aC1yZW5kZXJpbmcnKTtcbiAgY29uc3Qgb25DaGFuZ2UgPSBqZXN0LmZuKCk7XG4gIGNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgY2hvaWNlOiB7IHZhbHVlOiAnQ293JyB9LFxuICAgIGlzT3ZlcjogZmFsc2UsXG4gICAgZHJhZ0l0ZW06IHt9LFxuICAgIGNvcnJlY3Q6IGZhbHNlLFxuICAgIG9uQ2hhbmdlLFxuICB9O1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIG9uQ2hhbmdlLm1vY2tDbGVhcigpO1xuICAgIHJlbmRlck1hdGgubW9ja0NsZWFyKCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdyZW5kZXJpbmcnLCAoKSA9PiB7XG4gICAgaXQoJ3JlbmRlcnMgd2l0aCBkZWZhdWx0IHByb3BzJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8Qmxhbmsgey4uLmRlZmF1bHRQcm9wc30gLz4pO1xuICAgICAgZXhwZWN0KGNvbnRhaW5lci5maXJzdENoaWxkKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2Rpc3BsYXlzIHRoZSB2YWx1ZSB3aGVuIHByb3ZpZGVkJywgKCkgPT4ge1xuICAgICAgcmVuZGVyKDxCbGFuayB7Li4uZGVmYXVsdFByb3BzfSAvPik7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnQ293JykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyBhcyBkaXNhYmxlZCB3aGVuIGRpc2FibGVkIHByb3AgaXMgdHJ1ZScsICgpID0+IHtcbiAgICAgIHJlbmRlcig8Qmxhbmsgey4uLmRlZmF1bHRQcm9wc30gZGlzYWJsZWQ9e3RydWV9IC8+KTtcbiAgICAgIC8vIENoZWNrIHRoYXQgZGVsZXRlIGJ1dHRvbiBpcyBub3QgcHJlc2VudCB3aGVuIGRpc2FibGVkXG4gICAgICBleHBlY3Qoc2NyZWVuLnF1ZXJ5QnlSb2xlKCdidXR0b24nLCB7IG5hbWU6IC9kZWxldGUvaSB9KSkubm90LnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB3aXRoIGRyYWdnZWQgaXRlbSBwcmV2aWV3JywgKCkgPT4ge1xuICAgICAgcmVuZGVyKDxCbGFuayB7Li4uZGVmYXVsdFByb3BzfSBkcmFnSXRlbT17eyBjaG9pY2U6IHsgdmFsdWU6ICdEb2cnIH0gfX0gLz4pO1xuICAgICAgLy8gQmxhbmsgY29tcG9uZW50IHNob3VsZCByZW5kZXJcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdDb3cnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG93cyBob3ZlciBzdGF0ZSB3aGVuIGlzT3ZlciBpcyB0cnVlJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8Qmxhbmsgey4uLmRlZmF1bHRQcm9wc30gZHJhZ0l0ZW09e3sgY2hvaWNlOiB7IHZhbHVlOiAnRG9nJyB9IH19IGlzT3Zlcj17dHJ1ZX0gLz4pO1xuICAgICAgLy8gQ29tcG9uZW50IHNob3VsZCBoYXZlIGhvdmVyIHN0eWxpbmdcbiAgICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG93cyBjb3JyZWN0IHN0YXRlIHdoZW4gY29ycmVjdCBpcyB0cnVlJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8Qmxhbmsgey4uLmRlZmF1bHRQcm9wc30gY29ycmVjdD17dHJ1ZX0gLz4pO1xuICAgICAgLy8gQ29tcG9uZW50IHNob3VsZCBpbmRpY2F0ZSBjb3JyZWN0bmVzc1xuICAgICAgZXhwZWN0KGNvbnRhaW5lci5maXJzdENoaWxkKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZGVsZXRlIGZ1bmN0aW9uYWxpdHknLCAoKSA9PiB7XG4gICAgaXQoJ2RvZXMgbm90IHNob3cgZGVsZXRlIGJ1dHRvbiB3aGVuIGRpc2FibGVkJywgKCkgPT4ge1xuICAgICAgcmVuZGVyKDxCbGFuayB7Li4uZGVmYXVsdFByb3BzfSBkaXNhYmxlZD17dHJ1ZX0gLz4pO1xuICAgICAgZXhwZWN0KHNjcmVlbi5xdWVyeUJ5Um9sZSgnYnV0dG9uJywgeyBuYW1lOiAvZGVsZXRlL2kgfSkpLm5vdC50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RvZXMgbm90IHNob3cgZGVsZXRlIGJ1dHRvbiB3aGVuIG5vIHZhbHVlIGlzIHNldCcsICgpID0+IHtcbiAgICAgIHJlbmRlcig8Qmxhbmsgey4uLmRlZmF1bHRQcm9wc30gY2hvaWNlPXt1bmRlZmluZWR9IC8+KTtcbiAgICAgIGV4cGVjdChzY3JlZW4ucXVlcnlCeVJvbGUoJ2J1dHRvbicsIHsgbmFtZTogL2RlbGV0ZS9pIH0pKS5ub3QudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG93cyBkZWxldGUgYnV0dG9uIHdoZW4gdmFsdWUgaXMgcHJlc2VudCBhbmQgbm90IGRpc2FibGVkJywgKCkgPT4ge1xuICAgICAgcmVuZGVyKDxCbGFuayB7Li4uZGVmYXVsdFByb3BzfSAvPik7XG4gICAgICAvLyBJZiBkZWxldGUgYnV0dG9uIGlzIHByZXNlbnQsIGl0IHNob3VsZCBiZSBjbGlja2FibGVcbiAgICAgIGNvbnN0IGRlbGV0ZUJ1dHRvbiA9IHNjcmVlbi5xdWVyeUJ5Um9sZSgnYnV0dG9uJyk7XG4gICAgICBpZiAoZGVsZXRlQnV0dG9uKSB7XG4gICAgICAgIGV4cGVjdChkZWxldGVCdXR0b24pLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdkaW1lbnNpb25zJywgKCkgPT4ge1xuICAgIGl0KCdyZW5kZXJzIHdpdGggY3VzdG9tIGRpbWVuc2lvbnMgd2hlbiBwcm92aWRlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoXG4gICAgICAgIDxCbGFuayB7Li4uZGVmYXVsdFByb3BzfSBlbXB0eVJlc3BvbnNlQXJlYUhlaWdodD17MTAwfSBlbXB0eVJlc3BvbnNlQXJlYVdpZHRoPXsyMDB9IC8+LFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBjb250YWluZXIuZmlyc3RDaGlsZDtcbiAgICAgIGV4cGVjdChlbGVtZW50KS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlbmRlcnMgd2l0aCBtaW4gZGltZW5zaW9ucyBieSBkZWZhdWx0JywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8Qmxhbmsgey4uLmRlZmF1bHRQcm9wc30gLz4pO1xuICAgICAgY29uc3QgZWxlbWVudCA9IGNvbnRhaW5lci5maXJzdENoaWxkO1xuICAgICAgZXhwZWN0KGVsZW1lbnQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICAvLyBDb21wb25lbnQgc2hvdWxkIGhhdmUgbWluaW11bSBkaW1lbnNpb25zIGFwcGxpZWRcbiAgICB9KTtcblxuICAgIGl0KCdoYW5kbGVzIG5vbi1udW1lcmljIGRpbWVuc2lvbiBwcm9wcyBncmFjZWZ1bGx5JywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPEJsYW5rIHsuLi5kZWZhdWx0UHJvcHN9IGVtcHR5UmVzcG9uc2VBcmVhSGVpZ2h0PVwibm9uLW51bWVyaWNcIiBlbXB0eVJlc3BvbnNlQXJlYVdpZHRoPVwibm9uLW51bWVyaWNcIiAvPixcbiAgICAgICk7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnY29tcHV0ZXMgY2hpcCBkaW1lbnNpb25zIGJhc2VkIG9uIGNvbnRlbnQgd2hlbiBubyBlbXB0eVJlc3BvbnNlQXJlYSBzaXplIGlzIHByb3ZpZGVkJywgKCkgPT4ge1xuICAgICAgamVzdC51c2VGYWtlVGltZXJzKCk7XG4gICAgICAvLyBNb2NrIGdldEJvdW5kaW5nQ2xpZW50UmVjdCB0byBzaW11bGF0ZSBtZWFzdXJlZCBjb250ZW50IHNpemVcbiAgICAgIGNvbnN0IHJlY3RTcHkgPSBqZXN0XG4gICAgICAgIC5zcHlPbihIVE1MRWxlbWVudC5wcm90b3R5cGUsICdnZXRCb3VuZGluZ0NsaWVudFJlY3QnKVxuICAgICAgICAubW9ja1JldHVyblZhbHVlKHsgd2lkdGg6IDEwMCwgaGVpZ2h0OiAyMCwgdG9wOiAwLCBsZWZ0OiAwLCByaWdodDogMTAwLCBib3R0b206IDIwIH0pO1xuXG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgICA8QmxhbmtcbiAgICAgICAgICB7Li4uZGVmYXVsdFByb3BzfVxuICAgICAgICAgIC8vIEZvcmNlIG1lYXN1cmVtZW50IHBhdGggdGhhdCB1c2VzIGdldE1lYXN1cmVOb2RlIC8gdXBkYXRlRGltZW5zaW9uc1xuICAgICAgICAgIGVtcHR5UmVzcG9uc2VBcmVhSGVpZ2h0PXswfVxuICAgICAgICAgIGVtcHR5UmVzcG9uc2VBcmVhV2lkdGg9ezB9XG4gICAgICAgIC8+LFxuICAgICAgKTtcblxuICAgICAgLy8gTGV0IHRoZSBpbnRlcm5hbCB0aW1lb3V0IGluIGhhbmRsZUVsZW1lbnRzIC8gdXBkYXRlRGltZW5zaW9ucyBydW5cbiAgICAgIGFjdCgoKSA9PiB7XG4gICAgICAgIGplc3QucnVuQWxsVGltZXJzKCk7XG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgd3JhcHBlciA9IGNvbnRhaW5lci5maXJzdENoaWxkOyAvLyBTdHlsZWRDb250ZW50XG4gICAgICBjb25zdCBjaGlwID0gd3JhcHBlciAmJiB3cmFwcGVyLmZpcnN0Q2hpbGQ7IC8vIFN0eWxlZENoaXAgKHJvb3RSZWYpXG5cbiAgICAgIC8vIFdpZHRoIGFuZCBoZWlnaHQgc2hvdWxkIGluY2x1ZGUgcGFkZGluZyAoMjRweCkgYXJvdW5kIG1lYXN1cmVkIGNvbnRlbnRcbiAgICAgIGV4cGVjdChjaGlwLnN0eWxlLndpZHRoKS50b0JlKCcxMjlweCcpO1xuICAgICAgZXhwZWN0KGNoaXAuc3R5bGUuaGVpZ2h0KS50b0JlKCc0OXB4Jyk7XG5cbiAgICAgIHJlY3RTcHkubW9ja1Jlc3RvcmUoKTtcbiAgICAgIGplc3QudXNlUmVhbFRpbWVycygpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnbWF0aCByZW5kZXJpbmcnLCAoKSA9PiB7XG4gICAgaXQoJ2NhbGxzIHJlbmRlck1hdGggb24gbW91bnQgd2hlbiBjaG9pY2UgaGFzIGNvbnRlbnQnLCAoKSA9PiB7XG4gICAgICByZW5kZXIoPEJsYW5rIHsuLi5kZWZhdWx0UHJvcHN9IC8+KTtcbiAgICAgIGV4cGVjdChyZW5kZXJNYXRoKS50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnY2FsbHMgcmVuZGVyTWF0aCBhZ2FpbiB3aGVuIGNvcnJlY3QgY2hhbmdlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgcmVyZW5kZXIgfSA9IHJlbmRlcig8Qmxhbmsgey4uLmRlZmF1bHRQcm9wc30gY29ycmVjdD17ZmFsc2V9IC8+KTtcbiAgICAgIGNvbnN0IGNhbGxzQWZ0ZXJNb3VudCA9IHJlbmRlck1hdGgubW9jay5jYWxscy5sZW5ndGg7XG4gICAgICBleHBlY3QoY2FsbHNBZnRlck1vdW50KS50b0JlR3JlYXRlclRoYW4oMCk7XG5cbiAgICAgIHJlcmVuZGVyKDxCbGFuayB7Li4uZGVmYXVsdFByb3BzfSBjb3JyZWN0PXt0cnVlfSAvPik7XG4gICAgICBleHBlY3QocmVuZGVyTWF0aC5tb2NrLmNhbGxzLmxlbmd0aCkudG9CZUdyZWF0ZXJUaGFuKGNhbGxzQWZ0ZXJNb3VudCk7XG4gICAgfSk7XG5cbiAgICBpdCgnZG9lcyBub3QgY2FsbCByZW5kZXJNYXRoIGFnYWluIHdoZW4gY29ycmVjdCBpcyB1bmNoYW5nZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IHJlcmVuZGVyIH0gPSByZW5kZXIoPEJsYW5rIHsuLi5kZWZhdWx0UHJvcHN9IGNvcnJlY3Q9e3RydWV9IC8+KTtcbiAgICAgIGNvbnN0IGNhbGxzQWZ0ZXJNb3VudCA9IHJlbmRlck1hdGgubW9jay5jYWxscy5sZW5ndGg7XG5cbiAgICAgIHJlcmVuZGVyKDxCbGFuayB7Li4uZGVmYXVsdFByb3BzfSBjb3JyZWN0PXt0cnVlfSAvPik7XG4gICAgICBleHBlY3QocmVuZGVyTWF0aC5tb2NrLmNhbGxzLmxlbmd0aCkudG9CZShjYWxsc0FmdGVyTW91bnQpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZnJhY3Rpb24gbWF0aCBzdHlsaW5nJywgKCkgPT4ge1xuICAgIGl0KCdlbmxhcmdlcyBudW1lcmF0b3IvZGVub21pbmF0b3IgZGlnaXRzIGFkamFjZW50IHRvIGEgZnJhY3Rpb24gdG8gMTIwJScsICgpID0+IHtcbiAgICAgIHJlbmRlcig8Qmxhbmsgey4uLmRlZmF1bHRQcm9wc30gLz4pO1xuICAgICAgY29uc3QgcnVsZSA9IGNvbGxlY3RFbW90aW9uUnVsZXMoKS5maW5kKChyKSA9PiByLmluY2x1ZGVzKCdtangtbW4nKSAmJiByLmluY2x1ZGVzKCdtangtbWZyYWMnKSk7XG4gICAgICBleHBlY3QocnVsZSkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChydWxlKS50b01hdGNoKC9tangtbW46aGFzXFwoflxccyptangtbWZyYWNcXCkvKTtcbiAgICAgIGV4cGVjdChydWxlKS50b01hdGNoKC9tangtbWZyYWNcXHMqflxccyptangtbW4vKTtcbiAgICAgIGV4cGVjdChydWxlKS50b01hdGNoKC9mb250LXNpemU6XFxzKjEyMCVcXHMqIWltcG9ydGFudC9pKTtcbiAgICB9KTtcblxuICAgIGl0KCdrZWVwcyB0aGUgZXhpc3RpbmcgbWp4LWZyYWMgMTIwJSBydWxlJywgKCkgPT4ge1xuICAgICAgcmVuZGVyKDxCbGFuayB7Li4uZGVmYXVsdFByb3BzfSAvPik7XG4gICAgICBjb25zdCBydWxlID0gY29sbGVjdEVtb3Rpb25SdWxlcygpLmZpbmQoKHIpID0+IC8oXnxbXi1dKW1qeC1mcmFjLy50ZXN0KHIpICYmICFyLmluY2x1ZGVzKCdtangtbWZyYWMnKSk7XG4gICAgICBleHBlY3QocnVsZSkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChydWxlKS50b01hdGNoKC9mb250LXNpemU6XFxzKjEyMCVcXHMqIWltcG9ydGFudC9pKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2RyYWcgYW5kIGRyb3AnLCAoKSA9PiB7XG4gICAgaXQoJ2FjY2VwdHMgZHJhZyBpdGVtIHdoZW4gbm90IGRpc2FibGVkJywgKCkgPT4ge1xuICAgICAgcmVuZGVyKDxCbGFuayB7Li4uZGVmYXVsdFByb3BzfSBpc092ZXI9e3RydWV9IGRyYWdJdGVtPXt7IGNob2ljZTogeyB2YWx1ZTogJ0RvZycgfSB9fSAvPik7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnQ293JykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvd3MgZHJhZyBwcmV2aWV3IHdoZW4gZHJhZ2dpbmcgb3ZlcicsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPEJsYW5rIHsuLi5kZWZhdWx0UHJvcHN9IGlzT3Zlcj17dHJ1ZX0gZHJhZ0l0ZW09e3sgY2hvaWNlOiB7IHZhbHVlOiAnRG9nJyB9IH19IC8+KTtcbiAgICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIC8vIFNob3VsZCBzaG93IHZpc3VhbCBmZWVkYmFjayBmb3IgZHJhZyBvdmVyXG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsSUFBQUEsS0FBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFB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LGVBQUN2RSxLQUFBLENBQUF3RSxhQUFBLENBQUNwRSxNQUFBLFdBQUssRUFBS3lELFlBQWUsQ0FBQyxDQUFDO01BQ25DLElBQU1OLElBQUksR0FBR2IsbUJBQW1CLENBQUMsQ0FBQyxDQUFDK0UsSUFBSSxDQUFDLFVBQUNoSCxDQUFDO1FBQUEsT0FBSyxrQkFBa0IsQ0FBQ29ILElBQUksQ0FBQ3BILENBQUMsQ0FBQyxJQUFJLENBQUNBLENBQUMsQ0FBQ2lILFFBQVEsQ0FBQyxXQUFXLENBQUM7TUFBQSxFQUFDO01BQ3RHaEQsTUFBTSxDQUFDbkIsSUFBSSxDQUFDLENBQUNvRSxXQUFXLENBQUMsQ0FBQztNQUMxQmpELE1BQU0sQ0FBQ25CLElBQUksQ0FBQyxDQUFDcUUsT0FBTyxDQUFDLGlDQUFpQyxDQUFDO0lBQ3pELENBQUMsQ0FBQztFQUNKLENBQUMsQ0FBQztFQUVGbEUsUUFBUSxDQUFDLGVBQWUsRUFBRSxZQUFNO0lBQzlCVyxFQUFFLENBQUMscUNBQXFDLEVBQUUsWUFBTTtNQUM5QyxJQUFBRSxjQUFNLGVBQUN2RSxLQUFBLENBQUF3RSxhQUFBLENBQUNwRSxNQUFBLFdBQUssTUFBQTJFLFNBQUEsaUJBQUtsQixZQUFZO1FBQUV6QixNQUFNLEVBQUUsSUFBSztRQUFDNkIsUUFBUSxFQUFFO1VBQUVGLE1BQU0sRUFBRTtZQUFFQyxLQUFLLEVBQUU7VUFBTTtRQUFFO01BQUUsRUFBRSxDQUFDLENBQUM7TUFDekZVLE1BQU0sQ0FBQ0csY0FBTSxDQUFDQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQ0YsaUJBQWlCLENBQUMsQ0FBQztJQUNyRCxDQUFDLENBQUM7SUFFRlAsRUFBRSxDQUFDLHVDQUF1QyxFQUFFLFlBQU07TUFDaEQsSUFBQXlELFFBQUEsR0FBc0IsSUFBQXZELGNBQU0sZUFBQ3ZFLEtBQUEsQ0FBQXdFLGFBQUEsQ0FBQ3BFLE1BQUEsV0FBSyxNQUFBMkUsU0FBQSxpQkFBS2xCLFlBQVk7VUFBRXpCLE1BQU0sRUFBRSxJQUFLO1VBQUM2QixRQUFRLEVBQUU7WUFBRUYsTUFBTSxFQUFFO2NBQUVDLEtBQUssRUFBRTtZQUFNO1VBQUU7UUFBRSxFQUFFLENBQUMsQ0FBQztRQUF2R1MsU0FBUyxHQUFBcUQsUUFBQSxDQUFUckQsU0FBUztNQUNqQkMsTUFBTSxDQUFDRCxTQUFTLENBQUNFLFVBQVUsQ0FBQyxDQUFDQyxpQkFBaUIsQ0FBQyxDQUFDO01BQ2hEO0lBQ0YsQ0FBQyxDQUFDO0VBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwiaWdub3JlTGlzdCI6W119
549
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfYmxhbmsiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiZSIsInQiLCJXZWFrTWFwIiwiciIsIm4iLCJfX2VzTW9kdWxlIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiX3R5cGVvZiIsImhhcyIsImdldCIsInNldCIsIl90IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJqZXN0IiwibW9jayIsInVzZURyYWdnYWJsZSIsImZuIiwib3B0aW9ucyIsImF0dHJpYnV0ZXMiLCJsaXN0ZW5lcnMiLCJzZXROb2RlUmVmIiwidHJhbnNmb3JtIiwiaXNEcmFnZ2luZyIsInVzZURyb3BwYWJsZSIsImlzT3ZlciIsImFjdGl2ZSIsIkNTUyIsIlRyYW5zbGF0ZSIsInRvU3RyaW5nIiwicmVuZGVyTWF0aCIsImNvbGxlY3RFbW90aW9uUnVsZXMiLCJydWxlcyIsIl9pIiwiX0FycmF5JGZyb20iLCJBcnJheSIsImZyb20iLCJkb2N1bWVudCIsInN0eWxlU2hlZXRzIiwibGVuZ3RoIiwic2hlZXQiLCJfaTIiLCJfQXJyYXkkZnJvbTIiLCJjc3NSdWxlcyIsInJ1bGUiLCJwdXNoIiwiY3NzVGV4dCIsImRlc2NyaWJlIiwiX3JlcXVpcmUiLCJvbkNoYW5nZSIsImRlZmF1bHRQcm9wcyIsImRpc2FibGVkIiwiY2hvaWNlIiwidmFsdWUiLCJkcmFnSXRlbSIsImNvcnJlY3QiLCJiZWZvcmVFYWNoIiwibW9ja0NsZWFyIiwiaXQiLCJfcmVuZGVyIiwicmVuZGVyIiwiY3JlYXRlRWxlbWVudCIsImNvbnRhaW5lciIsImV4cGVjdCIsImZpcnN0Q2hpbGQiLCJ0b0JlSW5UaGVEb2N1bWVudCIsInNjcmVlbiIsImdldEJ5VGV4dCIsIl9leHRlbmRzMiIsInF1ZXJ5QnlSb2xlIiwibmFtZSIsIm5vdCIsIl9yZW5kZXIyIiwiX3JlbmRlcjMiLCJ1bmRlZmluZWQiLCJkZWxldGVCdXR0b24iLCJfcmVuZGVyNCIsImVtcHR5UmVzcG9uc2VBcmVhSGVpZ2h0IiwiZW1wdHlSZXNwb25zZUFyZWFXaWR0aCIsImVsZW1lbnQiLCJfcmVuZGVyNSIsIl9yZW5kZXI2IiwidXNlRmFrZVRpbWVycyIsInJlY3RTcHkiLCJzcHlPbiIsIkhUTUxFbGVtZW50IiwicHJvdG90eXBlIiwibW9ja1JldHVyblZhbHVlIiwid2lkdGgiLCJoZWlnaHQiLCJ0b3AiLCJsZWZ0IiwicmlnaHQiLCJib3R0b20iLCJfcmVuZGVyNyIsImFjdCIsInJ1bkFsbFRpbWVycyIsIndyYXBwZXIiLCJkcmFnSGFuZGxlIiwiY2hpcCIsInN0eWxlIiwidG9CZSIsIm1vY2tSZXN0b3JlIiwidXNlUmVhbFRpbWVycyIsInRvSGF2ZUJlZW5DYWxsZWQiLCJfcmVuZGVyOCIsInJlcmVuZGVyIiwiY2FsbHNBZnRlck1vdW50IiwiY2FsbHMiLCJ0b0JlR3JlYXRlclRoYW4iLCJfcmVuZGVyOSIsImZpbmQiLCJpbmNsdWRlcyIsInRvQmVEZWZpbmVkIiwidG9NYXRjaCIsInRlc3QiLCJfcmVuZGVyMCIsIl9yZXF1aXJlMiIsImFmdGVyRWFjaCIsIl9yZW5kZXIxIiwib3V0ZXIiLCJnZXRBdHRyaWJ1dGUiLCJfcmVuZGVyMTAiLCJ0b0JlTnVsbCIsIl9yZW5kZXIxMSIsIl9yZW5kZXIxMiIsInNlbGVjdGVkSXRlbSIsImlubmVyIiwiZmlyc3RFbGVtZW50Q2hpbGQiLCJfcmVuZGVyMTMiLCJvblNlbGVjdENsaWNrIiwiX3JlbmRlcjE0IiwiaWQiLCJmaXJlRXZlbnQiLCJjbGljayIsInRvSGF2ZUJlZW5DYWxsZWRXaXRoIiwiaW5zdGFuY2VJZCIsImZyb21DaG9pY2UiLCJ0eXBlIiwiX3JlbmRlcjE1Iiwib25QbGFjZW1lbnRDbGljayIsIl9yZW5kZXIxNiIsIl9yZW5kZXIxNyIsImtleURvd24iLCJjb2RlIiwiX3JlbmRlcjE4IiwiX3JlbmRlcjE5IiwiX3JlbmRlcjIwIiwibW91c2VFbnRlciIsImNsb3Nlc3QiLCJtb3VzZUxlYXZlIiwiX3JlbmRlcjIxIiwiY2xhc3NOYW1lIiwiY2xhc3NMaXN0IiwiYyIsInN0YXJ0c1dpdGgiLCJob3ZlclJ1bGUiLCJjb25jYXQiLCJfcmVuZGVyMjIiLCJ0b0JlVW5kZWZpbmVkIiwiX3JlbmRlcjIzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvX190ZXN0c19fL2JsYW5rLnRlc3QuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgcmVuZGVyLCBzY3JlZW4sIGFjdCwgZmlyZUV2ZW50IH0gZnJvbSAnQHRlc3RpbmctbGlicmFyeS9yZWFjdCc7XG5pbXBvcnQgQmxhbmsgZnJvbSAnLi4vYmxhbmsnO1xuXG4vLyBNb2NrIEBkbmQta2l0IGhvb2tzIHRvIGF2b2lkIERuZENvbnRleHQgcmVxdWlyZW1lbnRcbmplc3QubW9jaygnQGRuZC1raXQvY29yZScsICgpID0+ICh7XG4gIHVzZURyYWdnYWJsZTogamVzdC5mbigob3B0aW9ucykgPT4gKHtcbiAgICBhdHRyaWJ1dGVzOiBvcHRpb25zPy5hdHRyaWJ1dGVzIHx8IHt9LFxuICAgIGxpc3RlbmVyczoge30sXG4gICAgc2V0Tm9kZVJlZjogamVzdC5mbigpLFxuICAgIHRyYW5zZm9ybTogbnVsbCxcbiAgICBpc0RyYWdnaW5nOiBmYWxzZSxcbiAgfSkpLFxuICB1c2VEcm9wcGFibGU6IGplc3QuZm4oKCkgPT4gKHtcbiAgICBzZXROb2RlUmVmOiBqZXN0LmZuKCksXG4gICAgaXNPdmVyOiBmYWxzZSxcbiAgICBhY3RpdmU6IG51bGwsXG4gIH0pKSxcbn0pKTtcblxuamVzdC5tb2NrKCdAZG5kLWtpdC91dGlsaXRpZXMnLCAoKSA9PiAoe1xuICBDU1M6IHtcbiAgICBUcmFuc2xhdGU6IHtcbiAgICAgIHRvU3RyaW5nOiBqZXN0LmZuKCgpID0+ICd0cmFuc2xhdGUzZCgwLCAwLCAwKScpLFxuICAgIH0sXG4gIH0sXG59KSk7XG5cbmplc3QubW9jaygnQHBpZS1saWIvbWF0aC1yZW5kZXJpbmcnLCAoKSA9PiAoe1xuICByZW5kZXJNYXRoOiBqZXN0LmZuKCksXG59KSk7XG5cbi8vIENvbGxlY3QgdGhlIENTUyBydWxlcyBlbW90aW9uL01VSSBpbmplY3RlZCBpbnRvIHRoZSBkb2N1bWVudCAoanNkb20gdXNlcyBpbnNlcnRSdWxlKS5cbmNvbnN0IGNvbGxlY3RFbW90aW9uUnVsZXMgPSAoKSA9PiB7XG4gIGNvbnN0IHJ1bGVzID0gW107XG4gIGZvciAoY29uc3Qgc2hlZXQgb2YgQXJyYXkuZnJvbShkb2N1bWVudC5zdHlsZVNoZWV0cykpIHtcbiAgICB0cnkge1xuICAgICAgZm9yIChjb25zdCBydWxlIG9mIEFycmF5LmZyb20oc2hlZXQuY3NzUnVsZXMpKSB7XG4gICAgICAgIHJ1bGVzLnB1c2gocnVsZS5jc3NUZXh0KTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvKiBpbmFjY2Vzc2libGUgc3R5bGVzaGVldCAqL1xuICAgIH1cbiAgfVxuICByZXR1cm4gcnVsZXM7XG59O1xuXG5kZXNjcmliZSgnQmxhbmsnLCAoKSA9PiB7XG4gIGNvbnN0IHsgcmVuZGVyTWF0aCB9ID0gcmVxdWlyZSgnQHBpZS1saWIvbWF0aC1yZW5kZXJpbmcnKTtcbiAgY29uc3Qgb25DaGFuZ2UgPSBqZXN0LmZuKCk7XG4gIGNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgY2hvaWNlOiB7IHZhbHVlOiAnQ293JyB9LFxuICAgIGlzT3ZlcjogZmFsc2UsXG4gICAgZHJhZ0l0ZW06IHt9LFxuICAgIGNvcnJlY3Q6IGZhbHNlLFxuICAgIG9uQ2hhbmdlLFxuICB9O1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIG9uQ2hhbmdlLm1vY2tDbGVhcigpO1xuICAgIHJlbmRlck1hdGgubW9ja0NsZWFyKCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdyZW5kZXJpbmcnLCAoKSA9PiB7XG4gICAgaXQoJ3JlbmRlcnMgd2l0aCBkZWZhdWx0IHByb3BzJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8Qmxhbmsgey4uLmRlZmF1bHRQcm9wc30gLz4pO1xuICAgICAgZXhwZWN0KGNvbnRhaW5lci5maXJzdENoaWxkKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2Rpc3BsYXlzIHRoZSB2YWx1ZSB3aGVuIHByb3ZpZGVkJywgKCkgPT4ge1xuICAgICAgcmVuZGVyKDxCbGFuayB7Li4uZGVmYXVsdFByb3BzfSAvPik7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnQ293JykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyBhcyBkaXNhYmxlZCB3aGVuIGRpc2FibGVkIHByb3AgaXMgdHJ1ZScsICgpID0+IHtcbiAgICAgIHJlbmRlcig8Qmxhbmsgey4uLmRlZmF1bHRQcm9wc30gZGlzYWJsZWQ9e3RydWV9IC8+KTtcbiAgICAgIC8vIENoZWNrIHRoYXQgZGVsZXRlIGJ1dHRvbiBpcyBub3QgcHJlc2VudCB3aGVuIGRpc2FibGVkXG4gICAgICBleHBlY3Qoc2NyZWVuLnF1ZXJ5QnlSb2xlKCdidXR0b24nLCB7IG5hbWU6IC9kZWxldGUvaSB9KSkubm90LnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB3aXRoIGRyYWdnZWQgaXRlbSBwcmV2aWV3JywgKCkgPT4ge1xuICAgICAgcmVuZGVyKDxCbGFuayB7Li4uZGVmYXVsdFByb3BzfSBkcmFnSXRlbT17eyBjaG9pY2U6IHsgdmFsdWU6ICdEb2cnIH0gfX0gLz4pO1xuICAgICAgLy8gQmxhbmsgY29tcG9uZW50IHNob3VsZCByZW5kZXJcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdDb3cnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG93cyBob3ZlciBzdGF0ZSB3aGVuIGlzT3ZlciBpcyB0cnVlJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8Qmxhbmsgey4uLmRlZmF1bHRQcm9wc30gZHJhZ0l0ZW09e3sgY2hvaWNlOiB7IHZhbHVlOiAnRG9nJyB9IH19IGlzT3Zlcj17dHJ1ZX0gLz4pO1xuICAgICAgLy8gQ29tcG9uZW50IHNob3VsZCBoYXZlIGhvdmVyIHN0eWxpbmdcbiAgICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG93cyBjb3JyZWN0IHN0YXRlIHdoZW4gY29ycmVjdCBpcyB0cnVlJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8Qmxhbmsgey4uLmRlZmF1bHRQcm9wc30gY29ycmVjdD17dHJ1ZX0gLz4pO1xuICAgICAgLy8gQ29tcG9uZW50IHNob3VsZCBpbmRpY2F0ZSBjb3JyZWN0bmVzc1xuICAgICAgZXhwZWN0KGNvbnRhaW5lci5maXJzdENoaWxkKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZGVsZXRlIGZ1bmN0aW9uYWxpdHknLCAoKSA9PiB7XG4gICAgaXQoJ2RvZXMgbm90IHNob3cgZGVsZXRlIGJ1dHRvbiB3aGVuIGRpc2FibGVkJywgKCkgPT4ge1xuICAgICAgcmVuZGVyKDxCbGFuayB7Li4uZGVmYXVsdFByb3BzfSBkaXNhYmxlZD17dHJ1ZX0gLz4pO1xuICAgICAgZXhwZWN0KHNjcmVlbi5xdWVyeUJ5Um9sZSgnYnV0dG9uJywgeyBuYW1lOiAvZGVsZXRlL2kgfSkpLm5vdC50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RvZXMgbm90IHNob3cgZGVsZXRlIGJ1dHRvbiB3aGVuIG5vIHZhbHVlIGlzIHNldCcsICgpID0+IHtcbiAgICAgIHJlbmRlcig8Qmxhbmsgey4uLmRlZmF1bHRQcm9wc30gY2hvaWNlPXt1bmRlZmluZWR9IC8+KTtcbiAgICAgIGV4cGVjdChzY3JlZW4ucXVlcnlCeVJvbGUoJ2J1dHRvbicsIHsgbmFtZTogL2RlbGV0ZS9pIH0pKS5ub3QudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG93cyBkZWxldGUgYnV0dG9uIHdoZW4gdmFsdWUgaXMgcHJlc2VudCBhbmQgbm90IGRpc2FibGVkJywgKCkgPT4ge1xuICAgICAgcmVuZGVyKDxCbGFuayB7Li4uZGVmYXVsdFByb3BzfSAvPik7XG4gICAgICAvLyBJZiBkZWxldGUgYnV0dG9uIGlzIHByZXNlbnQsIGl0IHNob3VsZCBiZSBjbGlja2FibGVcbiAgICAgIGNvbnN0IGRlbGV0ZUJ1dHRvbiA9IHNjcmVlbi5xdWVyeUJ5Um9sZSgnYnV0dG9uJyk7XG4gICAgICBpZiAoZGVsZXRlQnV0dG9uKSB7XG4gICAgICAgIGV4cGVjdChkZWxldGVCdXR0b24pLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdkaW1lbnNpb25zJywgKCkgPT4ge1xuICAgIGl0KCdyZW5kZXJzIHdpdGggY3VzdG9tIGRpbWVuc2lvbnMgd2hlbiBwcm92aWRlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoXG4gICAgICAgIDxCbGFuayB7Li4uZGVmYXVsdFByb3BzfSBlbXB0eVJlc3BvbnNlQXJlYUhlaWdodD17MTAwfSBlbXB0eVJlc3BvbnNlQXJlYVdpZHRoPXsyMDB9IC8+LFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBjb250YWluZXIuZmlyc3RDaGlsZDtcbiAgICAgIGV4cGVjdChlbGVtZW50KS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlbmRlcnMgd2l0aCBtaW4gZGltZW5zaW9ucyBieSBkZWZhdWx0JywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8Qmxhbmsgey4uLmRlZmF1bHRQcm9wc30gLz4pO1xuICAgICAgY29uc3QgZWxlbWVudCA9IGNvbnRhaW5lci5maXJzdENoaWxkO1xuICAgICAgZXhwZWN0KGVsZW1lbnQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICAvLyBDb21wb25lbnQgc2hvdWxkIGhhdmUgbWluaW11bSBkaW1lbnNpb25zIGFwcGxpZWRcbiAgICB9KTtcblxuICAgIGl0KCdoYW5kbGVzIG5vbi1udW1lcmljIGRpbWVuc2lvbiBwcm9wcyBncmFjZWZ1bGx5JywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPEJsYW5rIHsuLi5kZWZhdWx0UHJvcHN9IGVtcHR5UmVzcG9uc2VBcmVhSGVpZ2h0PVwibm9uLW51bWVyaWNcIiBlbXB0eVJlc3BvbnNlQXJlYVdpZHRoPVwibm9uLW51bWVyaWNcIiAvPixcbiAgICAgICk7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnY29tcHV0ZXMgY2hpcCBkaW1lbnNpb25zIGJhc2VkIG9uIGNvbnRlbnQgd2hlbiBubyBlbXB0eVJlc3BvbnNlQXJlYSBzaXplIGlzIHByb3ZpZGVkJywgKCkgPT4ge1xuICAgICAgamVzdC51c2VGYWtlVGltZXJzKCk7XG4gICAgICAvLyBNb2NrIGdldEJvdW5kaW5nQ2xpZW50UmVjdCB0byBzaW11bGF0ZSBtZWFzdXJlZCBjb250ZW50IHNpemVcbiAgICAgIGNvbnN0IHJlY3RTcHkgPSBqZXN0XG4gICAgICAgIC5zcHlPbihIVE1MRWxlbWVudC5wcm90b3R5cGUsICdnZXRCb3VuZGluZ0NsaWVudFJlY3QnKVxuICAgICAgICAubW9ja1JldHVyblZhbHVlKHsgd2lkdGg6IDEwMCwgaGVpZ2h0OiAyMCwgdG9wOiAwLCBsZWZ0OiAwLCByaWdodDogMTAwLCBib3R0b206IDIwIH0pO1xuXG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgICA8QmxhbmtcbiAgICAgICAgICB7Li4uZGVmYXVsdFByb3BzfVxuICAgICAgICAgIC8vIEZvcmNlIG1lYXN1cmVtZW50IHBhdGggdGhhdCB1c2VzIGdldE1lYXN1cmVOb2RlIC8gdXBkYXRlRGltZW5zaW9uc1xuICAgICAgICAgIGVtcHR5UmVzcG9uc2VBcmVhSGVpZ2h0PXswfVxuICAgICAgICAgIGVtcHR5UmVzcG9uc2VBcmVhV2lkdGg9ezB9XG4gICAgICAgIC8+LFxuICAgICAgKTtcblxuICAgICAgLy8gTGV0IHRoZSBpbnRlcm5hbCB0aW1lb3V0IGluIGhhbmRsZUVsZW1lbnRzIC8gdXBkYXRlRGltZW5zaW9ucyBydW5cbiAgICAgIGFjdCgoKSA9PiB7XG4gICAgICAgIGplc3QucnVuQWxsVGltZXJzKCk7XG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgd3JhcHBlciA9IGNvbnRhaW5lci5maXJzdENoaWxkOyAvLyBTdHlsZWRDb250ZW50IChvdXRlciBkcm9wcGFibGUvY2xpY2sgbm9kZSlcbiAgICAgIGNvbnN0IGRyYWdIYW5kbGUgPSB3cmFwcGVyICYmIHdyYXBwZXIuZmlyc3RDaGlsZDsgLy8gU3R5bGVkRHJhZ0hhbmRsZSAoaW5uZXIgZHJhZ2dhYmxlIG5vZGUpXG4gICAgICBjb25zdCBjaGlwID0gZHJhZ0hhbmRsZSAmJiBkcmFnSGFuZGxlLmZpcnN0Q2hpbGQ7IC8vIFN0eWxlZENoaXAgKHJvb3RSZWYpXG5cbiAgICAgIC8vIFdpZHRoIGFuZCBoZWlnaHQgc2hvdWxkIGluY2x1ZGUgcGFkZGluZyAoMjRweCkgYXJvdW5kIG1lYXN1cmVkIGNvbnRlbnRcbiAgICAgIGV4cGVjdChjaGlwLnN0eWxlLndpZHRoKS50b0JlKCcxMjlweCcpO1xuICAgICAgZXhwZWN0KGNoaXAuc3R5bGUuaGVpZ2h0KS50b0JlKCc0OXB4Jyk7XG5cbiAgICAgIHJlY3RTcHkubW9ja1Jlc3RvcmUoKTtcbiAgICAgIGplc3QudXNlUmVhbFRpbWVycygpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnbWF0aCByZW5kZXJpbmcnLCAoKSA9PiB7XG4gICAgaXQoJ2NhbGxzIHJlbmRlck1hdGggb24gbW91bnQgd2hlbiBjaG9pY2UgaGFzIGNvbnRlbnQnLCAoKSA9PiB7XG4gICAgICByZW5kZXIoPEJsYW5rIHsuLi5kZWZhdWx0UHJvcHN9IC8+KTtcbiAgICAgIGV4cGVjdChyZW5kZXJNYXRoKS50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnY2FsbHMgcmVuZGVyTWF0aCBhZ2FpbiB3aGVuIGNvcnJlY3QgY2hhbmdlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgcmVyZW5kZXIgfSA9IHJlbmRlcig8Qmxhbmsgey4uLmRlZmF1bHRQcm9wc30gY29ycmVjdD17ZmFsc2V9IC8+KTtcbiAgICAgIGNvbnN0IGNhbGxzQWZ0ZXJNb3VudCA9IHJlbmRlck1hdGgubW9jay5jYWxscy5sZW5ndGg7XG4gICAgICBleHBlY3QoY2FsbHNBZnRlck1vdW50KS50b0JlR3JlYXRlclRoYW4oMCk7XG5cbiAgICAgIHJlcmVuZGVyKDxCbGFuayB7Li4uZGVmYXVsdFByb3BzfSBjb3JyZWN0PXt0cnVlfSAvPik7XG4gICAgICBleHBlY3QocmVuZGVyTWF0aC5tb2NrLmNhbGxzLmxlbmd0aCkudG9CZUdyZWF0ZXJUaGFuKGNhbGxzQWZ0ZXJNb3VudCk7XG4gICAgfSk7XG5cbiAgICBpdCgnZG9lcyBub3QgY2FsbCByZW5kZXJNYXRoIGFnYWluIHdoZW4gY29ycmVjdCBpcyB1bmNoYW5nZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IHJlcmVuZGVyIH0gPSByZW5kZXIoPEJsYW5rIHsuLi5kZWZhdWx0UHJvcHN9IGNvcnJlY3Q9e3RydWV9IC8+KTtcbiAgICAgIGNvbnN0IGNhbGxzQWZ0ZXJNb3VudCA9IHJlbmRlck1hdGgubW9jay5jYWxscy5sZW5ndGg7XG5cbiAgICAgIHJlcmVuZGVyKDxCbGFuayB7Li4uZGVmYXVsdFByb3BzfSBjb3JyZWN0PXt0cnVlfSAvPik7XG4gICAgICBleHBlY3QocmVuZGVyTWF0aC5tb2NrLmNhbGxzLmxlbmd0aCkudG9CZShjYWxsc0FmdGVyTW91bnQpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZnJhY3Rpb24gbWF0aCBzdHlsaW5nJywgKCkgPT4ge1xuICAgIGl0KCdlbmxhcmdlcyBudW1lcmF0b3IvZGVub21pbmF0b3IgZGlnaXRzIGFkamFjZW50IHRvIGEgZnJhY3Rpb24gdG8gMTIwJScsICgpID0+IHtcbiAgICAgIHJlbmRlcig8Qmxhbmsgey4uLmRlZmF1bHRQcm9wc30gLz4pO1xuICAgICAgY29uc3QgcnVsZSA9IGNvbGxlY3RFbW90aW9uUnVsZXMoKS5maW5kKChyKSA9PiByLmluY2x1ZGVzKCdtangtbW4nKSAmJiByLmluY2x1ZGVzKCdtangtbWZyYWMnKSk7XG4gICAgICBleHBlY3QocnVsZSkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChydWxlKS50b01hdGNoKC9tangtbW46aGFzXFwoflxccyptangtbWZyYWNcXCkvKTtcbiAgICAgIGV4cGVjdChydWxlKS50b01hdGNoKC9tangtbWZyYWNcXHMqflxccyptangtbW4vKTtcbiAgICAgIGV4cGVjdChydWxlKS50b01hdGNoKC9mb250LXNpemU6XFxzKjEyMCVcXHMqIWltcG9ydGFudC9pKTtcbiAgICB9KTtcblxuICAgIGl0KCdrZWVwcyB0aGUgZXhpc3RpbmcgbWp4LWZyYWMgMTIwJSBydWxlJywgKCkgPT4ge1xuICAgICAgcmVuZGVyKDxCbGFuayB7Li4uZGVmYXVsdFByb3BzfSAvPik7XG4gICAgICBjb25zdCBydWxlID0gY29sbGVjdEVtb3Rpb25SdWxlcygpLmZpbmQoKHIpID0+IC8oXnxbXi1dKW1qeC1mcmFjLy50ZXN0KHIpICYmICFyLmluY2x1ZGVzKCdtangtbWZyYWMnKSk7XG4gICAgICBleHBlY3QocnVsZSkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChydWxlKS50b01hdGNoKC9mb250LXNpemU6XFxzKjEyMCVcXHMqIWltcG9ydGFudC9pKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2RyYWcgYW5kIGRyb3AnLCAoKSA9PiB7XG4gICAgaXQoJ2FjY2VwdHMgZHJhZyBpdGVtIHdoZW4gbm90IGRpc2FibGVkJywgKCkgPT4ge1xuICAgICAgcmVuZGVyKDxCbGFuayB7Li4uZGVmYXVsdFByb3BzfSBpc092ZXI9e3RydWV9IGRyYWdJdGVtPXt7IGNob2ljZTogeyB2YWx1ZTogJ0RvZycgfSB9fSAvPik7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnQ293JykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvd3MgZHJhZyBwcmV2aWV3IHdoZW4gZHJhZ2dpbmcgb3ZlcicsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPEJsYW5rIHsuLi5kZWZhdWx0UHJvcHN9IGlzT3Zlcj17dHJ1ZX0gZHJhZ0l0ZW09e3sgY2hvaWNlOiB7IHZhbHVlOiAnRG9nJyB9IH19IC8+KTtcbiAgICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIC8vIFNob3VsZCBzaG93IHZpc3VhbCBmZWVkYmFjayBmb3IgZHJhZyBvdmVyXG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdjbGljay10by1zZWxlY3QgYW5kIGNsaWNrLXRvLXBsYWNlJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgdXNlRHJvcHBhYmxlIH0gPSByZXF1aXJlKCdAZG5kLWtpdC9jb3JlJyk7XG5cbiAgICBhZnRlckVhY2goKCkgPT4ge1xuICAgICAgdXNlRHJvcHBhYmxlLm1vY2tSZXR1cm5WYWx1ZSh7IHNldE5vZGVSZWY6IGplc3QuZm4oKSwgaXNPdmVyOiBmYWxzZSwgYWN0aXZlOiBudWxsIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2lzIGEgbmF0aXZlIHRhYiBzdG9wIChyb2xlPWJ1dHRvbiwgdGFiSW5kZXg9MCkgd2hlbiBlbXB0eSBhbmQgbm90IGRpc2FibGVkJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8Qmxhbmsgey4uLmRlZmF1bHRQcm9wc30gY2hvaWNlPXt1bmRlZmluZWR9IC8+KTtcbiAgICAgIGNvbnN0IG91dGVyID0gY29udGFpbmVyLmZpcnN0Q2hpbGQ7XG5cbiAgICAgIGV4cGVjdChvdXRlci5nZXRBdHRyaWJ1dGUoJ3JvbGUnKSkudG9CZSgnYnV0dG9uJyk7XG4gICAgICBleHBlY3Qob3V0ZXIuZ2V0QXR0cmlidXRlKCd0YWJpbmRleCcpKS50b0JlKCcwJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnaXMgbm90IGEgdGFiIHN0b3Agd2hlbiBpdCBhbHJlYWR5IGhvbGRzIGEgY2hvaWNlIChyZWxpZXMgb24gdGhlIGlubmVyIGRyYWdnYWJsZSBub2RlKScsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPEJsYW5rIHsuLi5kZWZhdWx0UHJvcHN9IC8+KTtcbiAgICAgIGNvbnN0IG91dGVyID0gY29udGFpbmVyLmZpcnN0Q2hpbGQ7XG5cbiAgICAgIGV4cGVjdChvdXRlci5nZXRBdHRyaWJ1dGUoJ3JvbGUnKSkudG9CZU51bGwoKTtcbiAgICAgIGV4cGVjdChvdXRlci5nZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JykpLnRvQmUoJy0xJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnaXMgbm90IGEgdGFiIHN0b3Agd2hlbiBkaXNhYmxlZCwgZXZlbiBpZiBlbXB0eScsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPEJsYW5rIHsuLi5kZWZhdWx0UHJvcHN9IGNob2ljZT17dW5kZWZpbmVkfSBkaXNhYmxlZD17dHJ1ZX0gLz4pO1xuICAgICAgY29uc3Qgb3V0ZXIgPSBjb250YWluZXIuZmlyc3RDaGlsZDtcblxuICAgICAgZXhwZWN0KG91dGVyLmdldEF0dHJpYnV0ZSgndGFiaW5kZXgnKSkudG9CZSgnLTEnKTtcbiAgICB9KTtcblxuICAgIGl0KCdkb2VzIG5vdCBtYWtlIHRoZSBpbm5lciBkcmFnZ2FibGUgbm9kZSBhIHNlY29uZCB0YWIgc3RvcCB3aGVuIHRoZSBibGFuayBpcyBlbXB0eScsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPEJsYW5rIHsuLi5kZWZhdWx0UHJvcHN9IGNob2ljZT17dW5kZWZpbmVkfSBzZWxlY3RlZEl0ZW09e251bGx9IC8+KTtcbiAgICAgIGNvbnN0IG91dGVyID0gY29udGFpbmVyLmZpcnN0Q2hpbGQ7XG4gICAgICBjb25zdCBpbm5lciA9IG91dGVyLmZpcnN0RWxlbWVudENoaWxkO1xuXG4gICAgICBleHBlY3Qob3V0ZXIuZ2V0QXR0cmlidXRlKCd0YWJpbmRleCcpKS50b0JlKCcwJyk7XG4gICAgICAvLyBkcmFnQXR0cmlidXRlcyAod2hpY2ggY2FycmllcyB0YWJJbmRleCkgaXMgb25seSBzcHJlYWQgb250byB0aGUgaW5uZXIgbm9kZSB3aGVuXG4gICAgICAvLyBpdCdzIHRoZSBsaXZlIHRhYiBzdG9wIChmaWxsZWQgYW5kIG5vdCBkaXNhYmxlZCkg4oCUIG90aGVyd2lzZSBpdCdzIG9taXR0ZWRcbiAgICAgIC8vIGVudGlyZWx5LCBzbyBubyB0YWJpbmRleCBhdHRyaWJ1dGUgaXMgcHJlc2VudCBhdCBhbGwgaGVyZS5cbiAgICAgIGV4cGVjdChpbm5lci5nZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JykpLnRvQmVOdWxsKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnbWFrZXMgdGhlIGlubmVyIGRyYWdnYWJsZSBub2RlIHRoZSB0YWIgc3RvcCB3aGVuIHRoZSBibGFuayBpcyBmaWxsZWQgYW5kIG5vdCBkaXNhYmxlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPEJsYW5rIHsuLi5kZWZhdWx0UHJvcHN9IHNlbGVjdGVkSXRlbT17bnVsbH0gLz4pO1xuICAgICAgY29uc3Qgb3V0ZXIgPSBjb250YWluZXIuZmlyc3RDaGlsZDtcbiAgICAgIGNvbnN0IGlubmVyID0gb3V0ZXIuZmlyc3RFbGVtZW50Q2hpbGQ7XG5cbiAgICAgIGV4cGVjdChpbm5lci5nZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JykpLnRvQmUoJzAnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzZWxlY3RzIHRoaXMgYmxhbmtcXCdzIGNvbnRlbnQgb24gY2xpY2sgd2hlbiBub3RoaW5nIGVsc2UgaXMgc2VsZWN0ZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBvblNlbGVjdENsaWNrID0gamVzdC5mbigpO1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPEJsYW5rIHsuLi5kZWZhdWx0UHJvcHN9IGlkPVwiM1wiIHNlbGVjdGVkSXRlbT17bnVsbH0gb25TZWxlY3RDbGljaz17b25TZWxlY3RDbGlja30gLz4sXG4gICAgICApO1xuXG4gICAgICBmaXJlRXZlbnQuY2xpY2soY29udGFpbmVyLmZpcnN0Q2hpbGQpO1xuXG4gICAgICBleHBlY3Qob25TZWxlY3RDbGljaykudG9IYXZlQmVlbkNhbGxlZFdpdGgoe1xuICAgICAgICBpZDogJzMnLFxuICAgICAgICBjaG9pY2U6IGRlZmF1bHRQcm9wcy5jaG9pY2UsXG4gICAgICAgIGluc3RhbmNlSWQ6IHVuZGVmaW5lZCxcbiAgICAgICAgZnJvbUNob2ljZTogZmFsc2UsXG4gICAgICAgIHR5cGU6ICdNYXNrQmxhbmsnLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgndG9nZ2xlcyBvZmYgd2hlbiBjbGlja2luZyBpdHMgb3duIGFscmVhZHktc2VsZWN0ZWQgY29udGVudCcsICgpID0+IHtcbiAgICAgIGNvbnN0IG9uU2VsZWN0Q2xpY2sgPSBqZXN0LmZuKCk7XG4gICAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSB7IGlkOiAnMycsIGNob2ljZTogZGVmYXVsdFByb3BzLmNob2ljZSwgaW5zdGFuY2VJZDogdW5kZWZpbmVkLCBmcm9tQ2hvaWNlOiBmYWxzZSwgdHlwZTogJ01hc2tCbGFuaycgfTtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoXG4gICAgICAgIDxCbGFuayB7Li4uZGVmYXVsdFByb3BzfSBpZD1cIjNcIiBzZWxlY3RlZEl0ZW09e3NlbGVjdGVkSXRlbX0gb25TZWxlY3RDbGljaz17b25TZWxlY3RDbGlja30gLz4sXG4gICAgICApO1xuXG4gICAgICBmaXJlRXZlbnQuY2xpY2soY29udGFpbmVyLmZpcnN0Q2hpbGQpO1xuXG4gICAgICBleHBlY3Qob25TZWxlY3RDbGljaykudG9IYXZlQmVlbkNhbGxlZFdpdGgoc2VsZWN0ZWRJdGVtKTtcbiAgICB9KTtcblxuICAgIGl0KCdwbGFjZXMgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIGhlcmUgd2hlbiBjbGlja2luZyBhIGRpZmZlcmVudCwgYWxyZWFkeS1maWxsZWQgYmxhbmsnLCAoKSA9PiB7XG4gICAgICBjb25zdCBvblBsYWNlbWVudENsaWNrID0gamVzdC5mbigpO1xuICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0geyBjaG9pY2U6IHsgdmFsdWU6ICdPdGhlcicgfSwgaW5zdGFuY2VJZDogdW5kZWZpbmVkLCBmcm9tQ2hvaWNlOiB0cnVlLCB0eXBlOiAnTWFza0JsYW5rJyB9O1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPEJsYW5rIHsuLi5kZWZhdWx0UHJvcHN9IGlkPVwiM1wiIHNlbGVjdGVkSXRlbT17c2VsZWN0ZWRJdGVtfSBvblBsYWNlbWVudENsaWNrPXtvblBsYWNlbWVudENsaWNrfSAvPixcbiAgICAgICk7XG5cbiAgICAgIGZpcmVFdmVudC5jbGljayhjb250YWluZXIuZmlyc3RDaGlsZCk7XG5cbiAgICAgIGV4cGVjdChvblBsYWNlbWVudENsaWNrKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgnMycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3BsYWNlcyB0aGUgY3VycmVudCBzZWxlY3Rpb24gaGVyZSBvbiBTcGFjZS9FbnRlciB3aGVuIGVtcHR5JywgKCkgPT4ge1xuICAgICAgY29uc3Qgb25QbGFjZW1lbnRDbGljayA9IGplc3QuZm4oKTtcbiAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbSA9IHsgY2hvaWNlOiB7IHZhbHVlOiAnT3RoZXInIH0sIGluc3RhbmNlSWQ6IHVuZGVmaW5lZCwgZnJvbUNob2ljZTogdHJ1ZSwgdHlwZTogJ01hc2tCbGFuaycgfTtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoXG4gICAgICAgIDxCbGFuayB7Li4uZGVmYXVsdFByb3BzfSBpZD1cIjNcIiBjaG9pY2U9e3VuZGVmaW5lZH0gc2VsZWN0ZWRJdGVtPXtzZWxlY3RlZEl0ZW19IG9uUGxhY2VtZW50Q2xpY2s9e29uUGxhY2VtZW50Q2xpY2t9IC8+LFxuICAgICAgKTtcblxuICAgICAgZmlyZUV2ZW50LmtleURvd24oY29udGFpbmVyLmZpcnN0Q2hpbGQsIHsgY29kZTogJ1NwYWNlJyB9KTtcblxuICAgICAgZXhwZWN0KG9uUGxhY2VtZW50Q2xpY2spLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCczJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnZG9lcyBub3RoaW5nIG9uIGNsaWNrIHdoZW4gZW1wdHkgYW5kIG5vdGhpbmcgaXMgc2VsZWN0ZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBvblNlbGVjdENsaWNrID0gamVzdC5mbigpO1xuICAgICAgY29uc3Qgb25QbGFjZW1lbnRDbGljayA9IGplc3QuZm4oKTtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoXG4gICAgICAgIDxCbGFuayB7Li4uZGVmYXVsdFByb3BzfSBjaG9pY2U9e3VuZGVmaW5lZH0gc2VsZWN0ZWRJdGVtPXtudWxsfSBvblNlbGVjdENsaWNrPXtvblNlbGVjdENsaWNrfSBvblBsYWNlbWVudENsaWNrPXtvblBsYWNlbWVudENsaWNrfSAvPixcbiAgICAgICk7XG5cbiAgICAgIGZpcmVFdmVudC5jbGljayhjb250YWluZXIuZmlyc3RDaGlsZCk7XG5cbiAgICAgIGV4cGVjdChvblNlbGVjdENsaWNrKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgICAgZXhwZWN0KG9uUGxhY2VtZW50Q2xpY2spLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnZG9lcyBub3RoaW5nIG9uIGNsaWNrIHdoZW4gZGlzYWJsZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBvblNlbGVjdENsaWNrID0gamVzdC5mbigpO1xuICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0geyBjaG9pY2U6IHsgdmFsdWU6ICdPdGhlcicgfSwgaW5zdGFuY2VJZDogdW5kZWZpbmVkLCBmcm9tQ2hvaWNlOiB0cnVlLCB0eXBlOiAnTWFza0JsYW5rJyB9O1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPEJsYW5rIHsuLi5kZWZhdWx0UHJvcHN9IGRpc2FibGVkPXt0cnVlfSBzZWxlY3RlZEl0ZW09e3NlbGVjdGVkSXRlbX0gb25TZWxlY3RDbGljaz17b25TZWxlY3RDbGlja30gLz4sXG4gICAgICApO1xuXG4gICAgICBmaXJlRXZlbnQuY2xpY2soY29udGFpbmVyLmZpcnN0Q2hpbGQpO1xuXG4gICAgICBleHBlY3Qob25TZWxlY3RDbGljaykubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdmb2xkcyBjbGljay1zZWxlY3Rpb24gaG92ZXIgaW50byB0aGUgc2FtZSBoaWdobGlnaHQgYSBsaXZlIGRyYWctb3ZlciBzaG93cycsICgpID0+IHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbSA9IHsgY2hvaWNlOiB7IHZhbHVlOiAnT3RoZXInIH0sIGluc3RhbmNlSWQ6IHVuZGVmaW5lZCwgZnJvbUNob2ljZTogdHJ1ZSwgdHlwZTogJ01hc2tCbGFuaycgfTtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPEJsYW5rIHsuLi5kZWZhdWx0UHJvcHN9IGlkPVwiM1wiIHNlbGVjdGVkSXRlbT17c2VsZWN0ZWRJdGVtfSAvPik7XG4gICAgICBjb25zdCBvdXRlciA9IGNvbnRhaW5lci5maXJzdENoaWxkO1xuXG4gICAgICBmaXJlRXZlbnQubW91c2VFbnRlcihvdXRlcik7XG4gICAgICAvLyBUaGUgXCJvdmVyXCIgcHJvcCBkcml2ZXMgdGhlIHNhbWUgQ1NTIHRoZSByZWFsIGlzT3Zlci1kcml2ZW4gaGlnaGxpZ2h0IHVzZXMg4oCUXG4gICAgICAvLyBhc3NlcnQgdmlhIHRoZSByZW5kZXJlZCBjaGlwJ3MgY2xhc3NOYW1lLCBzaW5jZSBTdHlsZWRDb250ZW50IGZvcndhcmRzIGBvdmVyYC5cbiAgICAgIC8vIFJlLXJlbmRlciBjaGVjazogQmxhbmtDb250ZW50IHJlY2VpdmVzIHRoZSBmb2xkZWQgaXNPdmVyIGFzIHRydWUgd2hpbGUgaG92ZXJlZFxuICAgICAgLy8gd2l0aCBhIHNlbGVjdGlvbiBhY3RpdmUg4oCUIHZlcmlmaWVkIGluZGlyZWN0bHkgdmlhIHRoZSBcIm92ZXJcIiBjaGlwIGNsYXNzIGl0IHNldHMuXG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnQ293JykuY2xvc2VzdCgnLm92ZXInKSkubm90LnRvQmVOdWxsKCk7XG5cbiAgICAgIGZpcmVFdmVudC5tb3VzZUxlYXZlKG91dGVyKTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdDb3cnKS5jbG9zZXN0KCcub3ZlcicpKS50b0JlTnVsbCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3dzIGEgcG9pbnRlciBjdXJzb3Igb24gaG92ZXIgd2hlbiBzb21ldGhpbmcgaXMgc2VsZWN0ZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSB7IGNob2ljZTogeyB2YWx1ZTogJ090aGVyJyB9LCBpbnN0YW5jZUlkOiB1bmRlZmluZWQsIGZyb21DaG9pY2U6IHRydWUsIHR5cGU6ICdNYXNrQmxhbmsnIH07XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxCbGFuayB7Li4uZGVmYXVsdFByb3BzfSBpZD1cIjNcIiBzZWxlY3RlZEl0ZW09e3NlbGVjdGVkSXRlbX0gLz4pO1xuICAgICAgY29uc3Qgb3V0ZXIgPSBjb250YWluZXIuZmlyc3RDaGlsZDtcbiAgICAgIGNvbnN0IGNsYXNzTmFtZSA9IEFycmF5LmZyb20ob3V0ZXIuY2xhc3NMaXN0KS5maW5kKChjKSA9PiBjLnN0YXJ0c1dpdGgoJ2Nzcy0nKSk7XG5cbiAgICAgIGNvbnN0IGhvdmVyUnVsZSA9IGNvbGxlY3RFbW90aW9uUnVsZXMoKS5maW5kKChyKSA9PiByLmluY2x1ZGVzKGAuJHtjbGFzc05hbWV9OmhvdmVyYCkpO1xuXG4gICAgICBleHBlY3QoaG92ZXJSdWxlKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KGhvdmVyUnVsZSkudG9NYXRjaCgvY3Vyc29yOlxccypwb2ludGVyLyk7XG4gICAgfSk7XG5cbiAgICBpdCgna2VlcHMgdGhlIGRlZmF1bHQgY3Vyc29yIG9uIGhvdmVyIHdoZW4gbm90aGluZyBpcyBzZWxlY3RlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPEJsYW5rIHsuLi5kZWZhdWx0UHJvcHN9IGlkPVwiM1wiIHNlbGVjdGVkSXRlbT17bnVsbH0gLz4pO1xuICAgICAgY29uc3Qgb3V0ZXIgPSBjb250YWluZXIuZmlyc3RDaGlsZDtcbiAgICAgIGNvbnN0IGNsYXNzTmFtZSA9IEFycmF5LmZyb20ob3V0ZXIuY2xhc3NMaXN0KS5maW5kKChjKSA9PiBjLnN0YXJ0c1dpdGgoJ2Nzcy0nKSk7XG5cbiAgICAgIGNvbnN0IGhvdmVyUnVsZSA9IGNvbGxlY3RFbW90aW9uUnVsZXMoKS5maW5kKChyKSA9PiByLmluY2x1ZGVzKGAuJHtjbGFzc05hbWV9OmhvdmVyYCkpO1xuXG4gICAgICBleHBlY3QoaG92ZXJSdWxlKS50b0JlVW5kZWZpbmVkKCk7XG4gICAgfSk7XG5cbiAgICBpdCgna2VlcHMgdGhlIGRlZmF1bHQgY3Vyc29yIG9uIGhvdmVyIHdoZW4gZGlzYWJsZWQsIGV2ZW4gd2l0aCBzb21ldGhpbmcgc2VsZWN0ZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSB7IGNob2ljZTogeyB2YWx1ZTogJ090aGVyJyB9LCBpbnN0YW5jZUlkOiB1bmRlZmluZWQsIGZyb21DaG9pY2U6IHRydWUsIHR5cGU6ICdNYXNrQmxhbmsnIH07XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgICA8Qmxhbmsgey4uLmRlZmF1bHRQcm9wc30gaWQ9XCIzXCIgZGlzYWJsZWQ9e3RydWV9IHNlbGVjdGVkSXRlbT17c2VsZWN0ZWRJdGVtfSAvPixcbiAgICAgICk7XG4gICAgICBjb25zdCBvdXRlciA9IGNvbnRhaW5lci5maXJzdENoaWxkO1xuICAgICAgY29uc3QgY2xhc3NOYW1lID0gQXJyYXkuZnJvbShvdXRlci5jbGFzc0xpc3QpLmZpbmQoKGMpID0+IGMuc3RhcnRzV2l0aCgnY3NzLScpKTtcblxuICAgICAgY29uc3QgaG92ZXJSdWxlID0gY29sbGVjdEVtb3Rpb25SdWxlcygpLmZpbmQoKHIpID0+IHIuaW5jbHVkZXMoYC4ke2NsYXNzTmFtZX06aG92ZXJgKSk7XG5cbiAgICAgIGV4cGVjdChob3ZlclJ1bGUpLnRvQmVVbmRlZmluZWQoKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxNQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFBNkIsU0FBQUQsd0JBQUFLLENBQUEsRUFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxNQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFQLHVCQUFBLFlBQUFBLHdCQUFBSyxDQUFBLEVBQUFDLENBQUEs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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pie-lib/mask-markup",
3
- "version": "3.1.6-beta.14",
3
+ "version": "3.1.6-beta.15",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "module": "src/index.js",
@@ -14,7 +14,7 @@
14
14
  "@mui/icons-material": "^7.3.4",
15
15
  "@mui/material": "^7.3.4",
16
16
  "@pie-lib/drag": "^4.0.2",
17
- "@pie-lib/editable-html-tip-tap": "^2.1.20-beta.14",
17
+ "@pie-lib/editable-html-tip-tap": "^2.1.20-beta.15",
18
18
  "@pie-lib/math-rendering": "^5.0.2",
19
19
  "@pie-lib/render-ui": "^6.1.0",
20
20
  "classnames": "^2.2.6",