@libs-ui/components-inputs-quill2x 0.2.357-16 → 0.2.357-18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -216,6 +216,40 @@ export class MyComponent {
216
216
  </libs_ui-components-inputs-quill2x>
217
217
  ```
218
218
 
219
+ #### 3.1. Mention dạng chip (icon + nhãn)
220
+
221
+ Mặc định node mention render text thuần (giá trị trả về từ `mentionSelect`). Truyền thêm `mentionInsertData` trả về key `chip` — chuỗi JSON của `Array<IQuill2xMentionChipPiece>` — để blot dựng chip pill (icon + nhãn) thay cho text.
222
+
223
+ ```typescript
224
+ // component.ts
225
+ import { IMentionConfig } from '@libs-ui/components-inputs-mention';
226
+ import { IQuill2xMentionChipPiece } from '@libs-ui/components-inputs-quill2x';
227
+
228
+ protected mentionConfig: IMentionConfig = {
229
+ items: [{ id: '1', name: 'Deal ABC' }],
230
+ triggerChar: '@',
231
+ labelKey: 'name',
232
+ mentionSelect: (item: Record<string, string>) => `@${item['name']}`,
233
+ mentionInsertData: (item: Record<string, string>) => {
234
+ const pieces: Array<IQuill2xMentionChipPiece> = [
235
+ { className: 'libs-ui-icon-deal' },
236
+ { className: 'libs-ui-font-h7r', text: item['name'] },
237
+ ];
238
+
239
+ return { chip: JSON.stringify(pieces) };
240
+ },
241
+ };
242
+ ```
243
+
244
+ | Hành vi | Kết quả |
245
+ |---|---|
246
+ | Không truyền `mentionInsertData` | Node mention giữ nguyên text thuần (không breaking change) |
247
+ | `chip` là JSON mảng hợp lệ | Render `<span>` wrapper dạng pill, mỗi piece là 1 `<span>` con |
248
+ | `chip` JSON hỏng hoặc mảng rỗng | Fallback về text `value` như mention thường |
249
+ | Nội dung piece | Gán bằng `textContent` — không dùng `innerHTML`, an toàn XSS |
250
+
251
+ > ⚠️ **Chip được persist trong HTML**: attribute `chip` nằm trên node mention và được `static value()` đọc lại, nên nội dung lưu xuống DB và load lại vẫn giữ đúng chip.
252
+
219
253
  ### 4. Upload ảnh — custom upload function
220
254
 
221
255
  ```typescript
@@ -452,6 +486,7 @@ import {
452
486
  IQuill2xBlotRegister,
453
487
  IQuill2xSelectionChange,
454
488
  IQuill2xTextChange,
489
+ IQuill2xMentionChipPiece,
455
490
  QUILL2X_TYPE_MODE_BAR_CONFIG_OPTION,
456
491
  } from '@libs-ui/components-inputs-quill2x';
457
492
  import { WritableSignal } from '@angular/core';
@@ -548,6 +583,14 @@ interface IQuill2xTextChange {
548
583
  quill: Quill2x;
549
584
  delta: Delta;
550
585
  }
586
+
587
+ // 1 mảnh nội dung trong chip mention — xem ví dụ 3.1
588
+ // Mảnh icon: chỉ cần className. Mảnh nhãn: className (tuỳ chọn) + text.
589
+ // Mảng các mảnh này được JSON.stringify rồi truyền qua IMentionItem.mentionInsertData() dưới key `chip`.
590
+ interface IQuill2xMentionChipPiece {
591
+ className?: string;
592
+ text?: string;
593
+ }
551
594
  ```
552
595
 
553
596
  ## Utility Functions
@@ -7,8 +7,10 @@ export declare class QuillMention2xBlot extends Embed {
7
7
  id: string;
8
8
  feId: string;
9
9
  value: string;
10
+ chip?: string;
10
11
  }): any;
11
12
  static value(domNode: HTMLElement): {
13
+ chip?: string | undefined;
12
14
  id: string | null;
13
15
  feId: string | null;
14
16
  value: string | null;
@@ -1,23 +1,63 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
2
  import Quill2x from 'quill2x';
3
3
  const Embed = Quill2x.import('blots/embed');
4
+ // Đặt trên WRAPPER riêng vì Embed constructor của quill 2 sẽ bọc children vào contentNode — style
5
+ // để trên node ngoài sẽ không còn ôm trực tiếp các piece sau khi bị bọc.
6
+ const CHIP_WRAPPER_STYLE = 'display:inline-flex;align-items:center;gap:4px;padding:0 6px;height:20px;max-width:100%;overflow:hidden;border-radius:4px;background:#f1f3f5;vertical-align:middle;white-space:nowrap;user-select:none';
7
+ // Dựng nội dung chip từ attr `chip` (JSON mảng pieces) — textContent thuần, KHÔNG innerHTML (an toàn XSS).
8
+ // JSON hỏng → fallback hiển thị text `value` như blot thường.
9
+ const buildChipContent = (node, chip, value) => {
10
+ let pieces;
11
+ try {
12
+ pieces = JSON.parse(chip);
13
+ }
14
+ catch {
15
+ node.innerText += value;
16
+ return;
17
+ }
18
+ if (!Array.isArray(pieces) || !pieces.length) {
19
+ node.innerText += value;
20
+ return;
21
+ }
22
+ const wrapper = document.createElement('span');
23
+ wrapper.setAttribute('style', CHIP_WRAPPER_STYLE);
24
+ pieces.forEach((piece) => {
25
+ const span = document.createElement('span');
26
+ if (piece.className) {
27
+ span.className = piece.className;
28
+ }
29
+ if (piece.text !== undefined) {
30
+ span.textContent = piece.text;
31
+ }
32
+ wrapper.appendChild(span);
33
+ });
34
+ node.appendChild(wrapper);
35
+ };
4
36
  export class QuillMention2xBlot extends Embed {
5
37
  static blotName = 'mention';
6
38
  static tagName = 'span';
7
39
  static className = 'libs-ui-quill-mention';
8
40
  static create(data) {
9
41
  const node = super.create();
10
- node.innerText += data.value;
11
42
  node.setAttribute('id', data.id);
12
43
  node.setAttribute('feId', data.feId);
13
44
  node.setAttribute('value', data.value);
45
+ if (data.chip) {
46
+ // Chip giàu (icon + nhãn) — pieces do consumer cấp qua IMentionItem.mentionInsertData.
47
+ node.setAttribute('chip', data.chip);
48
+ buildChipContent(node, data.chip, data.value);
49
+ return node;
50
+ }
51
+ node.innerText += data.value;
14
52
  return node;
15
53
  }
16
54
  static value(domNode) {
55
+ const chip = domNode.getAttribute('chip');
17
56
  return {
18
57
  id: domNode.getAttribute('id'),
19
58
  feId: domNode.getAttribute('feId'),
20
59
  value: domNode.getAttribute('value'),
60
+ ...(chip ? { chip } : {}),
21
61
  };
22
62
  }
23
63
  attach() {
@@ -32,4 +72,4 @@ export class QuillMention2xBlot extends Embed {
32
72
  event.stopPropagation();
33
73
  }
34
74
  }
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudGlvbjJ4LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9pbnB1dHMvcXVpbGwyeC9zcmMvYmxvdHMtY3VzdG9tL21lbnRpb24yeC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sT0FBTyxNQUFNLFNBQVMsQ0FBQztBQUU5QixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBUSxDQUFDO0FBRW5ELE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxLQUFLO0lBQzNDLE1BQU0sQ0FBVSxRQUFRLEdBQUcsU0FBUyxDQUFDO0lBQ3JDLE1BQU0sQ0FBVSxPQUFPLEdBQUcsTUFBTSxDQUFDO0lBQ2pDLE1BQU0sQ0FBVSxTQUFTLEdBQUcsdUJBQXVCLENBQUM7SUFDcEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFpRDtRQUM3RCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzdCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBb0I7UUFDL0IsT0FBTztZQUNMLEVBQUUsRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztZQUM5QixJQUFJLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7WUFDbEMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDO1NBQ3JDLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTTtRQUNKLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDcEIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbkUsQ0FBQztJQUNILENBQUM7SUFFRCxlQUFlLENBQUMsS0FBWTtRQUMxQixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDMUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCBRdWlsbDJ4IGZyb20gJ3F1aWxsMngnO1xuXG5jb25zdCBFbWJlZCA9IFF1aWxsMnguaW1wb3J0KCdibG90cy9lbWJlZCcpIGFzIGFueTtcblxuZXhwb3J0IGNsYXNzIFF1aWxsTWVudGlvbjJ4QmxvdCBleHRlbmRzIEVtYmVkIHtcbiAgc3RhdGljIHJlYWRvbmx5IGJsb3ROYW1lID0gJ21lbnRpb24nO1xuICBzdGF0aWMgcmVhZG9ubHkgdGFnTmFtZSA9ICdzcGFuJztcbiAgc3RhdGljIHJlYWRvbmx5IGNsYXNzTmFtZSA9ICdsaWJzLXVpLXF1aWxsLW1lbnRpb24nO1xuICBzdGF0aWMgY3JlYXRlKGRhdGE6IHsgaWQ6IHN0cmluZzsgZmVJZDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0pIHtcbiAgICBjb25zdCBub2RlID0gc3VwZXIuY3JlYXRlKCk7XG4gICAgbm9kZS5pbm5lclRleHQgKz0gZGF0YS52YWx1ZTtcbiAgICBub2RlLnNldEF0dHJpYnV0ZSgnaWQnLCBkYXRhLmlkKTtcbiAgICBub2RlLnNldEF0dHJpYnV0ZSgnZmVJZCcsIGRhdGEuZmVJZCk7XG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgZGF0YS52YWx1ZSk7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBzdGF0aWMgdmFsdWUoZG9tTm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGRvbU5vZGUuZ2V0QXR0cmlidXRlKCdpZCcpLFxuICAgICAgZmVJZDogZG9tTm9kZS5nZXRBdHRyaWJ1dGUoJ2ZlSWQnKSxcbiAgICAgIHZhbHVlOiBkb21Ob2RlLmdldEF0dHJpYnV0ZSgndmFsdWUnKSxcbiAgICB9O1xuICB9XG5cbiAgYXR0YWNoKCkge1xuICAgIHN1cGVyLmF0dGFjaCgpO1xuICAgIGlmICghdGhpcy5tb3VudGVkKSB7XG4gICAgICB0aGlzLm1vdW50ZWQgPSB0cnVlO1xuICAgICAgdGhpcy5jbGlja0hhbmRsZXIgPSB0aGlzLmdldENsaWNrSGFuZGxlcjtcbiAgICAgIHRoaXMuZG9tTm9kZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuY2xpY2tIYW5kbGVyLCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0Q2xpY2tIYW5kbGVyKGV2ZW50OiBFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG59XG4iXX0=
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudGlvbjJ4LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9pbnB1dHMvcXVpbGwyeC9zcmMvYmxvdHMtY3VzdG9tL21lbnRpb24yeC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sT0FBTyxNQUFNLFNBQVMsQ0FBQztBQUc5QixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBUSxDQUFDO0FBRW5ELGtHQUFrRztBQUNsRyx5RUFBeUU7QUFDekUsTUFBTSxrQkFBa0IsR0FBRyx3TUFBd00sQ0FBQztBQUVwTywyR0FBMkc7QUFDM0csOERBQThEO0FBQzlELE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxJQUFpQixFQUFFLElBQVksRUFBRSxLQUFhLEVBQVEsRUFBRTtJQUNoRixJQUFJLE1BQXVDLENBQUM7SUFDNUMsSUFBSSxDQUFDO1FBQ0gsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLElBQUksQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDO1FBQ3hCLE9BQU87SUFDVCxDQUFDO0lBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDN0MsSUFBSSxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUM7UUFDeEIsT0FBTztJQUNULENBQUM7SUFDRCxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9DLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFDbEQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ3ZCLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUMsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQ25DLENBQUM7UUFDRCxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ2hDLENBQUM7UUFDRCxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUMsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM1QixDQUFDLENBQUM7QUFFRixNQUFNLE9BQU8sa0JBQW1CLFNBQVEsS0FBSztJQUMzQyxNQUFNLENBQVUsUUFBUSxHQUFHLFNBQVMsQ0FBQztJQUNyQyxNQUFNLENBQVUsT0FBTyxHQUFHLE1BQU0sQ0FBQztJQUNqQyxNQUFNLENBQVUsU0FBUyxHQUFHLHVCQUF1QixDQUFDO0lBQ3BELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBZ0U7UUFDNUUsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2QsdUZBQXVGO1lBQ3ZGLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUMsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBb0I7UUFDL0IsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxQyxPQUFPO1lBQ0wsRUFBRSxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO1lBQzlCLElBQUksRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztZQUNsQyxLQUFLLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUM7WUFDcEMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQzFCLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTTtRQUNKLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDcEIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbkUsQ0FBQztJQUNILENBQUM7SUFFRCxlQUFlLENBQUMsS0FBWTtRQUMxQixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDMUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCBRdWlsbDJ4IGZyb20gJ3F1aWxsMngnO1xuaW1wb3J0IHsgSVF1aWxsMnhNZW50aW9uQ2hpcFBpZWNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9xdWlsbDJ4LmludGVyZmFjZSc7XG5cbmNvbnN0IEVtYmVkID0gUXVpbGwyeC5pbXBvcnQoJ2Jsb3RzL2VtYmVkJykgYXMgYW55O1xuXG4vLyDEkOG6t3QgdHLDqm4gV1JBUFBFUiByacOqbmcgdsOsIEVtYmVkIGNvbnN0cnVjdG9yIGPhu6dhIHF1aWxsIDIgc+G6vSBi4buNYyBjaGlsZHJlbiB2w6BvIGNvbnRlbnROb2RlIOKAlCBzdHlsZVxuLy8gxJHhu4MgdHLDqm4gbm9kZSBuZ2/DoGkgc+G6vSBraMO0bmcgY8OybiDDtG0gdHLhu7FjIHRp4bq/cCBjw6FjIHBpZWNlIHNhdSBraGkgYuG7iyBi4buNYy5cbmNvbnN0IENISVBfV1JBUFBFUl9TVFlMRSA9ICdkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NHB4O3BhZGRpbmc6MCA2cHg7aGVpZ2h0OjIwcHg7bWF4LXdpZHRoOjEwMCU7b3ZlcmZsb3c6aGlkZGVuO2JvcmRlci1yYWRpdXM6NHB4O2JhY2tncm91bmQ6I2YxZjNmNTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7d2hpdGUtc3BhY2U6bm93cmFwO3VzZXItc2VsZWN0Om5vbmUnO1xuXG4vLyBE4buxbmcgbuG7mWkgZHVuZyBjaGlwIHThu6sgYXR0ciBgY2hpcGAgKEpTT04gbeG6o25nIHBpZWNlcykg4oCUIHRleHRDb250ZW50IHRodeG6p24sIEtIw5RORyBpbm5lckhUTUwgKGFuIHRvw6BuIFhTUykuXG4vLyBKU09OIGjhu49uZyDihpIgZmFsbGJhY2sgaGnhu4NuIHRo4buLIHRleHQgYHZhbHVlYCBuaMawIGJsb3QgdGjGsOG7nW5nLlxuY29uc3QgYnVpbGRDaGlwQ29udGVudCA9IChub2RlOiBIVE1MRWxlbWVudCwgY2hpcDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCA9PiB7XG4gIGxldCBwaWVjZXM6IEFycmF5PElRdWlsbDJ4TWVudGlvbkNoaXBQaWVjZT47XG4gIHRyeSB7XG4gICAgcGllY2VzID0gSlNPTi5wYXJzZShjaGlwKTtcbiAgfSBjYXRjaCB7XG4gICAgbm9kZS5pbm5lclRleHQgKz0gdmFsdWU7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmICghQXJyYXkuaXNBcnJheShwaWVjZXMpIHx8ICFwaWVjZXMubGVuZ3RoKSB7XG4gICAgbm9kZS5pbm5lclRleHQgKz0gdmFsdWU7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IHdyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gIHdyYXBwZXIuc2V0QXR0cmlidXRlKCdzdHlsZScsIENISVBfV1JBUFBFUl9TVFlMRSk7XG4gIHBpZWNlcy5mb3JFYWNoKChwaWVjZSkgPT4ge1xuICAgIGNvbnN0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgaWYgKHBpZWNlLmNsYXNzTmFtZSkge1xuICAgICAgc3Bhbi5jbGFzc05hbWUgPSBwaWVjZS5jbGFzc05hbWU7XG4gICAgfVxuICAgIGlmIChwaWVjZS50ZXh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHNwYW4udGV4dENvbnRlbnQgPSBwaWVjZS50ZXh0O1xuICAgIH1cbiAgICB3cmFwcGVyLmFwcGVuZENoaWxkKHNwYW4pO1xuICB9KTtcbiAgbm9kZS5hcHBlbmRDaGlsZCh3cmFwcGVyKTtcbn07XG5cbmV4cG9ydCBjbGFzcyBRdWlsbE1lbnRpb24yeEJsb3QgZXh0ZW5kcyBFbWJlZCB7XG4gIHN0YXRpYyByZWFkb25seSBibG90TmFtZSA9ICdtZW50aW9uJztcbiAgc3RhdGljIHJlYWRvbmx5IHRhZ05hbWUgPSAnc3Bhbic7XG4gIHN0YXRpYyByZWFkb25seSBjbGFzc05hbWUgPSAnbGlicy11aS1xdWlsbC1tZW50aW9uJztcbiAgc3RhdGljIGNyZWF0ZShkYXRhOiB7IGlkOiBzdHJpbmc7IGZlSWQ6IHN0cmluZzsgdmFsdWU6IHN0cmluZzsgY2hpcD86IHN0cmluZyB9KSB7XG4gICAgY29uc3Qgbm9kZSA9IHN1cGVyLmNyZWF0ZSgpO1xuICAgIG5vZGUuc2V0QXR0cmlidXRlKCdpZCcsIGRhdGEuaWQpO1xuICAgIG5vZGUuc2V0QXR0cmlidXRlKCdmZUlkJywgZGF0YS5mZUlkKTtcbiAgICBub2RlLnNldEF0dHJpYnV0ZSgndmFsdWUnLCBkYXRhLnZhbHVlKTtcbiAgICBpZiAoZGF0YS5jaGlwKSB7XG4gICAgICAvLyBDaGlwIGdpw6B1IChpY29uICsgbmjDo24pIOKAlCBwaWVjZXMgZG8gY29uc3VtZXIgY+G6pXAgcXVhIElNZW50aW9uSXRlbS5tZW50aW9uSW5zZXJ0RGF0YS5cbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKCdjaGlwJywgZGF0YS5jaGlwKTtcbiAgICAgIGJ1aWxkQ2hpcENvbnRlbnQobm9kZSwgZGF0YS5jaGlwLCBkYXRhLnZhbHVlKTtcbiAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbiAgICBub2RlLmlubmVyVGV4dCArPSBkYXRhLnZhbHVlO1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgc3RhdGljIHZhbHVlKGRvbU5vZGU6IEhUTUxFbGVtZW50KSB7XG4gICAgY29uc3QgY2hpcCA9IGRvbU5vZGUuZ2V0QXR0cmlidXRlKCdjaGlwJyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBkb21Ob2RlLmdldEF0dHJpYnV0ZSgnaWQnKSxcbiAgICAgIGZlSWQ6IGRvbU5vZGUuZ2V0QXR0cmlidXRlKCdmZUlkJyksXG4gICAgICB2YWx1ZTogZG9tTm9kZS5nZXRBdHRyaWJ1dGUoJ3ZhbHVlJyksXG4gICAgICAuLi4oY2hpcCA/IHsgY2hpcCB9IDoge30pLFxuICAgIH07XG4gIH1cblxuICBhdHRhY2goKSB7XG4gICAgc3VwZXIuYXR0YWNoKCk7XG4gICAgaWYgKCF0aGlzLm1vdW50ZWQpIHtcbiAgICAgIHRoaXMubW91bnRlZCA9IHRydWU7XG4gICAgICB0aGlzLmNsaWNrSGFuZGxlciA9IHRoaXMuZ2V0Q2xpY2tIYW5kbGVyO1xuICAgICAgdGhpcy5kb21Ob2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5jbGlja0hhbmRsZXIsIGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBnZXRDbGlja0hhbmRsZXIoZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpbGwyeC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvaW5wdXRzL3F1aWxsMngvc3JjL2ludGVyZmFjZXMvcXVpbGwyeC5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJTGFiZWwgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLWxhYmVsJztcbmltcG9ydCBEZWx0YSBmcm9tICdxdWlsbC1kZWx0YSc7XG5pbXBvcnQgUXVpbGwyeCwgeyBFbWl0dGVyU291cmNlLCBSYW5nZSB9IGZyb20gJ3F1aWxsMngnO1xuZXhwb3J0IHR5cGUgUVVJTEwyWF9UWVBFX01PREVfQkFSX0NPTkZJR19PUFRJT04gPSAnYWxsJyB8ICdkZWZhdWx0JyB8ICdiYXNpYycgfCAnY3VzdG9tJztcblxuZXhwb3J0IGludGVyZmFjZSBJUXVpbGwyeEN1c3RvbUNvbmZpZyB7XG4gIGNsYXNzQ29udGFpbmVyPzogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbiAgdG9vbGJhcj86IFdyaXRhYmxlU2lnbmFsPHtcbiAgICBwb3NpdGlvbkZpeGVkPzogV3JpdGFibGVTaWduYWw8e1xuICAgICAgZXZlbnQ6IFdyaXRhYmxlU2lnbmFsPCdjbGljaycgfCAnbW91c2VlbnRlcic+O1xuICAgICAgZWxlbWVudFNob3c6IFdyaXRhYmxlU2lnbmFsPEhUTUxFbGVtZW50PjtcbiAgICAgIHBvc2l0aW9uPzogV3JpdGFibGVTaWduYWw8J3RvcCcgfCAnYm90dG9tJz47XG4gICAgICBhbGlnbj86IFdyaXRhYmxlU2lnbmFsPCdsZWZ0JyB8ICdjZW50ZXInIHwgJ3JpZ2h0Jz47XG4gICAgICB6SW5kZXg6IFdyaXRhYmxlU2lnbmFsPG51bWJlcj47XG4gICAgICB3aWR0aDogV3JpdGFibGVTaWduYWw8bnVtYmVyPjtcbiAgICAgIGdhcFZlcnRpY2FsPzogV3JpdGFibGVTaWduYWw8bnVtYmVyPjtcbiAgICAgIGdhcEhvcml6b250YWw/OiBXcml0YWJsZVNpZ25hbDxudW1iZXI+O1xuICAgIH0+O1xuICAgIHN0eWxlcz86IFdyaXRhYmxlU2lnbmFsPFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgICB0eXBlOiBXcml0YWJsZVNpZ25hbDxRVUlMTDJYX1RZUEVfTU9ERV9CQVJfQ09ORklHX09QVElPTj47XG4gICAgb3B0aW9ucz86IFdyaXRhYmxlU2lnbmFsPEFycmF5PElRdWlsbDJ4VG9vbGJhckNvbmZpZz4+O1xuICAgIGNsYXNzQ3VzdG9tQ29udGFpbmVyVG9vbGJhcj86IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4gICAgbGVzc1dpZHRoVG9vbGJhclJlY2FsbENhbGN1bGF0b3I/OiBXcml0YWJsZVNpZ25hbDxudW1iZXI+O1xuICAgIG1heGltdW1SZWNhbGxDYWxjdWxhdG9yPzogV3JpdGFibGVTaWduYWw8bnVtYmVyPjtcbiAgfT47XG4gIGVkaXRvcj86IFdyaXRhYmxlU2lnbmFsPHtcbiAgICBjbGFzc0N1c3RvbUNvbnRhaW5lckVkaXRvcj86IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4gIH0+O1xufVxuZXhwb3J0IGludGVyZmFjZSBJUXVpbGwyeFRvb2xiYXJDb25maWcge1xuICB0eXBlOiBzdHJpbmc7XG4gIG1vZGU/OiBBcnJheTxRVUlMTDJYX1RZUEVfTU9ERV9CQVJfQ09ORklHX09QVElPTj47XG4gIHdpZHRoOiBudW1iZXI7XG4gIGRpc3BsYXk/OiBib29sZWFuO1xuICBjbGFzc0luY2x1ZGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVF1aWxsMnhFdmVudFNhdmUge1xuICBsaW5rOiBzdHJpbmc7XG4gIHdpZHRoPzogbnVtYmVyO1xuICBoZWlnaHQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVF1aWxsMnhVcGxvYWRJbWFnZUNvbmZpZyB7XG4gIG1vZGVDdXN0b206IGJvb2xlYW47XG4gIHNob3dJY29uPzogYm9vbGVhbjtcbiAgekluZGV4PzogbnVtYmVyO1xuICBtYXhJbWFnZVNpemU/OiBudW1iZXI7XG4gIGxhYmVsPzogSUxhYmVsO1xuICBvbmx5QWNjZXB0SW1hZ2VIdHRwc0xpbms/OiBib29sZWFuO1xuICBmdW5jdGlvblVwbG9hZEltYWdlPzogKGZpbGVzOiBBcnJheTxGaWxlPikgPT4gUHJvbWlzZTxBcnJheTxzdHJpbmcgfCBBcnJheUJ1ZmZlcj4+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElRdWlsbDJ4RnVuY3Rpb25Db250cm9sRXZlbnQge1xuICBjaGVja0lzVmFsaWQ6ICgpID0+IFByb21pc2U8Ym9vbGVhbj47XG4gIHJlZnJlc2hJdGVtVmFsdWU6ICgpID0+IHZvaWQ7XG4gIHNldENvbnRlbnQ6IChjb250ZW50OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGluc2VydFRleHQ6ICh2YWx1ZTogc3RyaW5nLCBpbmRleD86IG51bWJlciwgZm9jdXNMdD86IGJvb2xlYW4pID0+IFByb21pc2U8dm9pZD47XG4gIGluc2VydExpbms6ICh2YWx1ZTogc3RyaW5nLCB1cmw6IHN0cmluZywgaW5kZXg/OiBudW1iZXIpID0+IFByb21pc2U8dm9pZD47XG4gIGluc2VydEltYWdlOiAoY29udGVudDogc3RyaW5nLCBpbmRleD86IG51bWJlcikgPT4gUHJvbWlzZTx2b2lkPjtcbiAgc2V0Rm9udFNpemU6IChzaXplOiBudW1iZXIpID0+IFByb21pc2U8RGVsdGEgfCB1bmRlZmluZWQ+O1xuICBzZXRDb2xvcjogKGNvbG9yOiBzdHJpbmcpID0+IFByb21pc2U8RGVsdGEgfCB1bmRlZmluZWQ+O1xuICBzZXRCYWNrZ3JvdW5kOiAoY29sb3I6IHN0cmluZykgPT4gUHJvbWlzZTxEZWx0YSB8IHVuZGVmaW5lZD47XG4gIHNldE1lc3NhZ2VFcnJvcjogKG1lc3NhZ2U6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgcXVpbGw6ICgpID0+IFF1aWxsMnggfCB1bmRlZmluZWQ7XG4gIHJlQ2FsY3VsYXRvclRvb2xiYXI6ICgpID0+IFByb21pc2U8dm9pZD47XG4gIHVwZGF0ZVBvc2l0aW9uVG9vbGJhcjogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUXVpbGwyeExpbmsge1xuICB0aXRsZTogc3RyaW5nO1xuICB1cmw6IHN0cmluZztcbiAgcmFuZ2U6IHtcbiAgICBpbmRleDogbnVtYmVyO1xuICAgIGxlbmd0aDogbnVtYmVyO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElRdWlsbDJ4QmxvdFJlZ2lzdGVyIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgY29tcG9uZW50OiBhbnk7XG4gIGNsYXNzTmFtZTogc3RyaW5nO1xuICBzdHlsZTogc3RyaW5nO1xuICBpZ25vcmVEZWxldGU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElRdWlsbDJ4U2VsZWN0aW9uQ2hhbmdlIHtcbiAgcXVpbGw6IFF1aWxsMng7XG4gIHJhbmdlOiBSYW5nZTtcbiAgb2xkUmFuZ2U6IFJhbmdlO1xuICBzb3VyY2U6IEVtaXR0ZXJTb3VyY2U7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVF1aWxsMnhUZXh0Q2hhbmdlIHtcbiAgcXVpbGw6IFF1aWxsMng7XG4gIGRlbHRhOiBEZWx0YTtcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpbGwyeC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvaW5wdXRzL3F1aWxsMngvc3JjL2ludGVyZmFjZXMvcXVpbGwyeC5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJTGFiZWwgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLWxhYmVsJztcbmltcG9ydCBEZWx0YSBmcm9tICdxdWlsbC1kZWx0YSc7XG5pbXBvcnQgUXVpbGwyeCwgeyBFbWl0dGVyU291cmNlLCBSYW5nZSB9IGZyb20gJ3F1aWxsMngnO1xuZXhwb3J0IHR5cGUgUVVJTEwyWF9UWVBFX01PREVfQkFSX0NPTkZJR19PUFRJT04gPSAnYWxsJyB8ICdkZWZhdWx0JyB8ICdiYXNpYycgfCAnY3VzdG9tJztcblxuZXhwb3J0IGludGVyZmFjZSBJUXVpbGwyeEN1c3RvbUNvbmZpZyB7XG4gIGNsYXNzQ29udGFpbmVyPzogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbiAgdG9vbGJhcj86IFdyaXRhYmxlU2lnbmFsPHtcbiAgICBwb3NpdGlvbkZpeGVkPzogV3JpdGFibGVTaWduYWw8e1xuICAgICAgZXZlbnQ6IFdyaXRhYmxlU2lnbmFsPCdjbGljaycgfCAnbW91c2VlbnRlcic+O1xuICAgICAgZWxlbWVudFNob3c6IFdyaXRhYmxlU2lnbmFsPEhUTUxFbGVtZW50PjtcbiAgICAgIHBvc2l0aW9uPzogV3JpdGFibGVTaWduYWw8J3RvcCcgfCAnYm90dG9tJz47XG4gICAgICBhbGlnbj86IFdyaXRhYmxlU2lnbmFsPCdsZWZ0JyB8ICdjZW50ZXInIHwgJ3JpZ2h0Jz47XG4gICAgICB6SW5kZXg6IFdyaXRhYmxlU2lnbmFsPG51bWJlcj47XG4gICAgICB3aWR0aDogV3JpdGFibGVTaWduYWw8bnVtYmVyPjtcbiAgICAgIGdhcFZlcnRpY2FsPzogV3JpdGFibGVTaWduYWw8bnVtYmVyPjtcbiAgICAgIGdhcEhvcml6b250YWw/OiBXcml0YWJsZVNpZ25hbDxudW1iZXI+O1xuICAgIH0+O1xuICAgIHN0eWxlcz86IFdyaXRhYmxlU2lnbmFsPFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgICB0eXBlOiBXcml0YWJsZVNpZ25hbDxRVUlMTDJYX1RZUEVfTU9ERV9CQVJfQ09ORklHX09QVElPTj47XG4gICAgb3B0aW9ucz86IFdyaXRhYmxlU2lnbmFsPEFycmF5PElRdWlsbDJ4VG9vbGJhckNvbmZpZz4+O1xuICAgIGNsYXNzQ3VzdG9tQ29udGFpbmVyVG9vbGJhcj86IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4gICAgbGVzc1dpZHRoVG9vbGJhclJlY2FsbENhbGN1bGF0b3I/OiBXcml0YWJsZVNpZ25hbDxudW1iZXI+O1xuICAgIG1heGltdW1SZWNhbGxDYWxjdWxhdG9yPzogV3JpdGFibGVTaWduYWw8bnVtYmVyPjtcbiAgfT47XG4gIGVkaXRvcj86IFdyaXRhYmxlU2lnbmFsPHtcbiAgICBjbGFzc0N1c3RvbUNvbnRhaW5lckVkaXRvcj86IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4gIH0+O1xufVxuZXhwb3J0IGludGVyZmFjZSBJUXVpbGwyeFRvb2xiYXJDb25maWcge1xuICB0eXBlOiBzdHJpbmc7XG4gIG1vZGU/OiBBcnJheTxRVUlMTDJYX1RZUEVfTU9ERV9CQVJfQ09ORklHX09QVElPTj47XG4gIHdpZHRoOiBudW1iZXI7XG4gIGRpc3BsYXk/OiBib29sZWFuO1xuICBjbGFzc0luY2x1ZGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVF1aWxsMnhFdmVudFNhdmUge1xuICBsaW5rOiBzdHJpbmc7XG4gIHdpZHRoPzogbnVtYmVyO1xuICBoZWlnaHQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVF1aWxsMnhVcGxvYWRJbWFnZUNvbmZpZyB7XG4gIG1vZGVDdXN0b206IGJvb2xlYW47XG4gIHNob3dJY29uPzogYm9vbGVhbjtcbiAgekluZGV4PzogbnVtYmVyO1xuICBtYXhJbWFnZVNpemU/OiBudW1iZXI7XG4gIGxhYmVsPzogSUxhYmVsO1xuICBvbmx5QWNjZXB0SW1hZ2VIdHRwc0xpbms/OiBib29sZWFuO1xuICBmdW5jdGlvblVwbG9hZEltYWdlPzogKGZpbGVzOiBBcnJheTxGaWxlPikgPT4gUHJvbWlzZTxBcnJheTxzdHJpbmcgfCBBcnJheUJ1ZmZlcj4+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElRdWlsbDJ4RnVuY3Rpb25Db250cm9sRXZlbnQge1xuICBjaGVja0lzVmFsaWQ6ICgpID0+IFByb21pc2U8Ym9vbGVhbj47XG4gIHJlZnJlc2hJdGVtVmFsdWU6ICgpID0+IHZvaWQ7XG4gIHNldENvbnRlbnQ6IChjb250ZW50OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGluc2VydFRleHQ6ICh2YWx1ZTogc3RyaW5nLCBpbmRleD86IG51bWJlciwgZm9jdXNMdD86IGJvb2xlYW4pID0+IFByb21pc2U8dm9pZD47XG4gIGluc2VydExpbms6ICh2YWx1ZTogc3RyaW5nLCB1cmw6IHN0cmluZywgaW5kZXg/OiBudW1iZXIpID0+IFByb21pc2U8dm9pZD47XG4gIGluc2VydEltYWdlOiAoY29udGVudDogc3RyaW5nLCBpbmRleD86IG51bWJlcikgPT4gUHJvbWlzZTx2b2lkPjtcbiAgc2V0Rm9udFNpemU6IChzaXplOiBudW1iZXIpID0+IFByb21pc2U8RGVsdGEgfCB1bmRlZmluZWQ+O1xuICBzZXRDb2xvcjogKGNvbG9yOiBzdHJpbmcpID0+IFByb21pc2U8RGVsdGEgfCB1bmRlZmluZWQ+O1xuICBzZXRCYWNrZ3JvdW5kOiAoY29sb3I6IHN0cmluZykgPT4gUHJvbWlzZTxEZWx0YSB8IHVuZGVmaW5lZD47XG4gIHNldE1lc3NhZ2VFcnJvcjogKG1lc3NhZ2U6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgcXVpbGw6ICgpID0+IFF1aWxsMnggfCB1bmRlZmluZWQ7XG4gIHJlQ2FsY3VsYXRvclRvb2xiYXI6ICgpID0+IFByb21pc2U8dm9pZD47XG4gIHVwZGF0ZVBvc2l0aW9uVG9vbGJhcjogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUXVpbGwyeExpbmsge1xuICB0aXRsZTogc3RyaW5nO1xuICB1cmw6IHN0cmluZztcbiAgcmFuZ2U6IHtcbiAgICBpbmRleDogbnVtYmVyO1xuICAgIGxlbmd0aDogbnVtYmVyO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElRdWlsbDJ4QmxvdFJlZ2lzdGVyIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgY29tcG9uZW50OiBhbnk7XG4gIGNsYXNzTmFtZTogc3RyaW5nO1xuICBzdHlsZTogc3RyaW5nO1xuICBpZ25vcmVEZWxldGU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElRdWlsbDJ4U2VsZWN0aW9uQ2hhbmdlIHtcbiAgcXVpbGw6IFF1aWxsMng7XG4gIHJhbmdlOiBSYW5nZTtcbiAgb2xkUmFuZ2U6IFJhbmdlO1xuICBzb3VyY2U6IEVtaXR0ZXJTb3VyY2U7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVF1aWxsMnhUZXh0Q2hhbmdlIHtcbiAgcXVpbGw6IFF1aWxsMng7XG4gIGRlbHRhOiBEZWx0YTtcbn1cblxuLyoqXG4gKiAxIG3huqNuaCBu4buZaSBkdW5nIGLDqm4gdHJvbmcgY2hpcCBtZW50aW9uIGPhu6dhIGJsb3QgYG1lbnRpb25gLlxuICogLSBN4bqjbmggaWNvbjogY2jhu4kgY+G6p24gYGNsYXNzTmFtZWAuXG4gKiAtIE3huqNuaCBuaMOjbjogYGNsYXNzTmFtZWAgKHR14buzIGNo4buNbikgKyBgdGV4dGAuXG4gKlxuICogTeG6o25nIGPDoWMgbeG6o25oIG7DoHkgxJHGsOG7o2MgSlNPTi5zdHJpbmdpZnkgcuG7k2kgdHJ1eeG7gW4gcXVhIGBJTWVudGlvbkl0ZW0ubWVudGlvbkluc2VydERhdGEoKWBcbiAqIGTGsOG7m2kga2V5IGBjaGlwYCDEkeG7gyBibG90IGThu7FuZyBjaGlwIGdpw6B1IHRoYXkgY2hvIHRleHQgdGh14bqnbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUXVpbGwyeE1lbnRpb25DaGlwUGllY2Uge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHRleHQ/OiBzdHJpbmc7XG59XG4iXX0=