@cqa-lib/cqa-ui 1.1.199 → 1.1.201

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/esm2020/lib/custom-input/custom-input.component.mjs +3 -3
  2. package/esm2020/lib/test-case-details/condition-step/condition-step.component.mjs +7 -3
  3. package/esm2020/lib/test-case-details/element-list/element-list.component.mjs +67 -5
  4. package/esm2020/lib/test-case-details/element-popup/element-popup-data.mjs +1 -1
  5. package/esm2020/lib/test-case-details/element-popup/element-popup-form-data.mjs +2 -0
  6. package/esm2020/lib/test-case-details/element-popup/element-popup.component.mjs +289 -99
  7. package/esm2020/lib/test-case-details/loop-step/loop-step.component.mjs +7 -3
  8. package/esm2020/lib/test-case-details/normal-step/normal-step.component.mjs +26 -27
  9. package/esm2020/lib/test-case-details/step-group/step-group.component.mjs +1 -1
  10. package/esm2020/lib/test-case-details/test-case-details-renderer/test-case-details-renderer.component.mjs +24 -4
  11. package/esm2020/lib/test-case-details/test-case-step.models.mjs +1 -1
  12. package/esm2020/public-api.mjs +2 -1
  13. package/fesm2015/cqa-lib-cqa-ui.mjs +431 -140
  14. package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
  15. package/fesm2020/cqa-lib-cqa-ui.mjs +417 -138
  16. package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
  17. package/lib/test-case-details/condition-step/condition-step.component.d.ts +6 -1
  18. package/lib/test-case-details/element-list/element-list.component.d.ts +15 -3
  19. package/lib/test-case-details/element-popup/element-popup-data.d.ts +3 -0
  20. package/lib/test-case-details/element-popup/element-popup-form-data.d.ts +22 -0
  21. package/lib/test-case-details/element-popup/element-popup.component.d.ts +72 -19
  22. package/lib/test-case-details/loop-step/loop-step.component.d.ts +6 -1
  23. package/lib/test-case-details/normal-step/normal-step.component.d.ts +1 -0
  24. package/lib/test-case-details/test-case-details-renderer/test-case-details-renderer.component.d.ts +7 -2
  25. package/lib/test-case-details/test-case-step.models.d.ts +7 -0
  26. package/package.json +1 -1
  27. package/public-api.d.ts +1 -0
  28. package/styles.css +1 -1
@@ -1,4 +1,4 @@
1
- import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';
1
+ import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ViewChild } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "@angular/common";
4
4
  export class ElementListComponent {
@@ -13,8 +13,14 @@ export class ElementListComponent {
13
13
  this.labelsKey = 'labels';
14
14
  /** Maximum height for the scrollable container (default: '200px') */
15
15
  this.maxHeight = '200px';
16
+ /** Whether more items can be loaded */
17
+ this.hasMore = false;
16
18
  /** Emitted when an item is clicked */
17
19
  this.itemClick = new EventEmitter();
20
+ /** Emitted when user scrolls near the bottom and more items should be loaded */
21
+ this.loadMore = new EventEmitter();
22
+ /** Skip the first intersection callback (fires immediately when observe() is called) to prevent duplicate API calls on load */
23
+ this.skipNextIntersection = false;
18
24
  }
19
25
  /**
20
26
  * Get the value from an item using the specified key
@@ -28,13 +34,65 @@ export class ElementListComponent {
28
34
  onItemClick(item) {
29
35
  this.itemClick.emit(item);
30
36
  }
37
+ ngAfterViewInit() {
38
+ if (this.hasMore) {
39
+ setTimeout(() => this.setupScrollObserver(), 0);
40
+ }
41
+ }
42
+ ngOnChanges(changes) {
43
+ if (changes['hasMore'] && this.hasMore && this.scrollContainer) {
44
+ setTimeout(() => this.setupScrollObserver(), 0);
45
+ }
46
+ }
47
+ ngOnDestroy() {
48
+ if (this.scrollObserver) {
49
+ this.scrollObserver.disconnect();
50
+ }
51
+ }
52
+ setupScrollObserver() {
53
+ if (!this.hasMore || !this.scrollContainer) {
54
+ return;
55
+ }
56
+ // Find the sentinel element (loading indicator)
57
+ const sentinel = this.scrollContainer.nativeElement.querySelector('.load-more-sentinel');
58
+ if (!sentinel) {
59
+ return;
60
+ }
61
+ // Disconnect existing observer if any
62
+ if (this.scrollObserver) {
63
+ this.scrollObserver.disconnect();
64
+ }
65
+ // Skip the first intersection callback - it fires immediately when observe() is called
66
+ // if the sentinel is already in view, causing duplicate API calls (page 0 + page 1) on load
67
+ this.skipNextIntersection = true;
68
+ // Create IntersectionObserver to detect when sentinel comes into view
69
+ this.scrollObserver = new IntersectionObserver((entries) => {
70
+ for (const entry of entries) {
71
+ if (entry.isIntersecting && this.hasMore) {
72
+ if (this.skipNextIntersection) {
73
+ this.skipNextIntersection = false;
74
+ return;
75
+ }
76
+ this.loadMore.emit();
77
+ }
78
+ }
79
+ }, {
80
+ root: this.scrollContainer.nativeElement,
81
+ rootMargin: '50px',
82
+ threshold: 0.1
83
+ });
84
+ this.scrollObserver.observe(sentinel);
85
+ }
31
86
  }
32
87
  ElementListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ElementListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
33
- ElementListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: ElementListComponent, selector: "cqa-element-list", inputs: { items: "items", titleKey: "titleKey", selectorKey: "selectorKey", labelsKey: "labelsKey", maxHeight: "maxHeight" }, outputs: { itemClick: "itemClick" }, host: { classAttribute: "cqa-ui-root" }, ngImport: i0, template: "<div \n class=\"cqa-max-h-[200px] cqa-overflow-y-auto cqa-scrollbar-thin cqa-scrollbar-track-transparent cqa-scrollbar-thumb-[#E5E7EB] cqa-scrollbar-thumb-rounded-full cqa-scrollbar-thumb-hover:cqa-bg-[#D1D5DB] cqa-flex cqa-flex-col cqa-gap-2\"\n [style.max-height]=\"maxHeight\">\n <div *ngFor=\"let item of items\" (click)=\"onItemClick(item)\">\n <div class=\"hover:cqa-bg-[#F5F5F5] cqa-flex cqa-items-center cqa-justify-between cqa-border cqa-border-[#FDE68A]\n cqa-rounded-lg cqa-p-3 cqa-cursor-pointer\">\n <div>\n <h6 class=\"cqa-text-[12px] cqa-leading-[100%] cqa-font-[400] cqa-text-[#171717]\">\n {{ getItemValue(item, titleKey) }}\n </h6>\n <span class=\"cqa-text-[10px] cqa-leading-[100%] cqa-text-[#6B7280]\">\n {{ getItemValue(item, selectorKey) }}\n </span>\n </div>\n <div class=\"cqa-flex cqa-gap-1\">\n <span \n *ngFor=\"let tag of getItemValue(item, labelsKey)\" \n class=\"cqa-text-[11px] cqa-text-[#4b74ec] cqa-rounded-full cqa-px-2 cqa-bg-[#eff6ff] cqa-border cqa-border-solid cqa-border-[#c8e0ff]\">\n {{ tag }}\n </span>\n </div>\n </div>\n </div>\n</div>\n\n", directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
88
+ ElementListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: ElementListComponent, selector: "cqa-element-list", inputs: { items: "items", titleKey: "titleKey", selectorKey: "selectorKey", labelsKey: "labelsKey", maxHeight: "maxHeight", hasMore: "hasMore" }, outputs: { itemClick: "itemClick", loadMore: "loadMore" }, host: { classAttribute: "cqa-ui-root" }, viewQueries: [{ propertyName: "scrollContainer", first: true, predicate: ["scrollContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div \n #scrollContainer\n class=\"cqa-max-h-[200px] cqa-overflow-y-auto cqa-scrollbar-thin cqa-scrollbar-track-transparent cqa-scrollbar-thumb-[#E5E7EB] cqa-scrollbar-thumb-rounded-full cqa-scrollbar-thumb-hover:cqa-bg-[#D1D5DB] cqa-flex cqa-flex-col cqa-gap-2\"\n [style.max-height]=\"maxHeight\">\n <div *ngFor=\"let item of items\" (click)=\"onItemClick(item)\">\n <div class=\"hover:cqa-bg-[#F5F5F5] cqa-flex cqa-items-center cqa-justify-between cqa-border cqa-border-[#FDE68A]\n cqa-rounded-lg cqa-p-3 cqa-cursor-pointer cqa-gap-1\" style=\"word-break: break-word;\">\n <div>\n <h6 class=\"cqa-text-[12px] cqa-leading-[100%] cqa-font-[400] cqa-text-[#171717]\">\n {{ getItemValue(item, titleKey) }}\n </h6>\n <span class=\"cqa-text-[10px] cqa-leading-[100%] cqa-text-[#6B7280]\">\n {{ getItemValue(item, selectorKey) }}\n </span>\n </div>\n <div class=\"cqa-flex cqa-gap-1\">\n <span \n *ngFor=\"let tag of getItemValue(item, labelsKey)\" \n class=\"cqa-text-[11px] cqa-text-[#4b74ec] cqa-rounded-full cqa-px-2 cqa-bg-[#eff6ff] cqa-border cqa-border-solid cqa-border-[#c8e0ff]\">\n {{ tag }}\n </span>\n </div>\n </div>\n </div>\n <!-- No elements found message -->\n <div *ngIf=\"items.length === 0 && !hasMore\" class=\"cqa-flex cqa-justify-center cqa-items-center cqa-py-4 cqa-text-[12px] cqa-text-[#6B7280]\">\n No elements found\n </div>\n <!-- Sentinel element for infinite scroll -->\n <div *ngIf=\"hasMore\" class=\"load-more-sentinel cqa-flex cqa-flex-col cqa-items-center cqa-justify-center cqa-gap-3 cqa-py-2\">\n <svg class=\"cqa-animate-spin cqa-h-6 cqa-w-6 cqa-text-[#3F43EE]\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle class=\"cqa-opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\n <path class=\"cqa-opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"></path>\n </svg>\n <span class=\"cqa-text-[12px] cqa-text-[#6B7280]\">{{ items.length === 0 ? 'Loading...' : 'Loading more...' }}</span>\n </div>\n</div>\n\n", directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
34
89
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ElementListComponent, decorators: [{
35
90
  type: Component,
36
- args: [{ selector: 'cqa-element-list', host: { class: 'cqa-ui-root' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div \n class=\"cqa-max-h-[200px] cqa-overflow-y-auto cqa-scrollbar-thin cqa-scrollbar-track-transparent cqa-scrollbar-thumb-[#E5E7EB] cqa-scrollbar-thumb-rounded-full cqa-scrollbar-thumb-hover:cqa-bg-[#D1D5DB] cqa-flex cqa-flex-col cqa-gap-2\"\n [style.max-height]=\"maxHeight\">\n <div *ngFor=\"let item of items\" (click)=\"onItemClick(item)\">\n <div class=\"hover:cqa-bg-[#F5F5F5] cqa-flex cqa-items-center cqa-justify-between cqa-border cqa-border-[#FDE68A]\n cqa-rounded-lg cqa-p-3 cqa-cursor-pointer\">\n <div>\n <h6 class=\"cqa-text-[12px] cqa-leading-[100%] cqa-font-[400] cqa-text-[#171717]\">\n {{ getItemValue(item, titleKey) }}\n </h6>\n <span class=\"cqa-text-[10px] cqa-leading-[100%] cqa-text-[#6B7280]\">\n {{ getItemValue(item, selectorKey) }}\n </span>\n </div>\n <div class=\"cqa-flex cqa-gap-1\">\n <span \n *ngFor=\"let tag of getItemValue(item, labelsKey)\" \n class=\"cqa-text-[11px] cqa-text-[#4b74ec] cqa-rounded-full cqa-px-2 cqa-bg-[#eff6ff] cqa-border cqa-border-solid cqa-border-[#c8e0ff]\">\n {{ tag }}\n </span>\n </div>\n </div>\n </div>\n</div>\n\n" }]
37
- }], propDecorators: { items: [{
91
+ args: [{ selector: 'cqa-element-list', host: { class: 'cqa-ui-root' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div \n #scrollContainer\n class=\"cqa-max-h-[200px] cqa-overflow-y-auto cqa-scrollbar-thin cqa-scrollbar-track-transparent cqa-scrollbar-thumb-[#E5E7EB] cqa-scrollbar-thumb-rounded-full cqa-scrollbar-thumb-hover:cqa-bg-[#D1D5DB] cqa-flex cqa-flex-col cqa-gap-2\"\n [style.max-height]=\"maxHeight\">\n <div *ngFor=\"let item of items\" (click)=\"onItemClick(item)\">\n <div class=\"hover:cqa-bg-[#F5F5F5] cqa-flex cqa-items-center cqa-justify-between cqa-border cqa-border-[#FDE68A]\n cqa-rounded-lg cqa-p-3 cqa-cursor-pointer cqa-gap-1\" style=\"word-break: break-word;\">\n <div>\n <h6 class=\"cqa-text-[12px] cqa-leading-[100%] cqa-font-[400] cqa-text-[#171717]\">\n {{ getItemValue(item, titleKey) }}\n </h6>\n <span class=\"cqa-text-[10px] cqa-leading-[100%] cqa-text-[#6B7280]\">\n {{ getItemValue(item, selectorKey) }}\n </span>\n </div>\n <div class=\"cqa-flex cqa-gap-1\">\n <span \n *ngFor=\"let tag of getItemValue(item, labelsKey)\" \n class=\"cqa-text-[11px] cqa-text-[#4b74ec] cqa-rounded-full cqa-px-2 cqa-bg-[#eff6ff] cqa-border cqa-border-solid cqa-border-[#c8e0ff]\">\n {{ tag }}\n </span>\n </div>\n </div>\n </div>\n <!-- No elements found message -->\n <div *ngIf=\"items.length === 0 && !hasMore\" class=\"cqa-flex cqa-justify-center cqa-items-center cqa-py-4 cqa-text-[12px] cqa-text-[#6B7280]\">\n No elements found\n </div>\n <!-- Sentinel element for infinite scroll -->\n <div *ngIf=\"hasMore\" class=\"load-more-sentinel cqa-flex cqa-flex-col cqa-items-center cqa-justify-center cqa-gap-3 cqa-py-2\">\n <svg class=\"cqa-animate-spin cqa-h-6 cqa-w-6 cqa-text-[#3F43EE]\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle class=\"cqa-opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\n <path class=\"cqa-opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"></path>\n </svg>\n <span class=\"cqa-text-[12px] cqa-text-[#6B7280]\">{{ items.length === 0 ? 'Loading...' : 'Loading more...' }}</span>\n </div>\n</div>\n\n" }]
92
+ }], propDecorators: { scrollContainer: [{
93
+ type: ViewChild,
94
+ args: ['scrollContainer', { static: false }]
95
+ }], items: [{
38
96
  type: Input
39
97
  }], titleKey: [{
40
98
  type: Input
@@ -44,7 +102,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
44
102
  type: Input
45
103
  }], maxHeight: [{
46
104
  type: Input
105
+ }], hasMore: [{
106
+ type: Input
47
107
  }], itemClick: [{
48
108
  type: Output
109
+ }], loadMore: [{
110
+ type: Output
49
111
  }] } });
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvdGVzdC1jYXNlLWRldGFpbHMvZWxlbWVudC1saXN0L2VsZW1lbnQtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3Rlc3QtY2FzZS1kZXRhaWxzL2VsZW1lbnQtbGlzdC9lbGVtZW50LWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBUWhHLE1BQU0sT0FBTyxvQkFBb0I7SUFOakM7UUFPRSxnQ0FBZ0M7UUFDdkIsVUFBSyxHQUFVLEVBQUUsQ0FBQztRQUUzQix5RUFBeUU7UUFDaEUsYUFBUSxHQUFXLE9BQU8sQ0FBQztRQUVwQywrRUFBK0U7UUFDdEUsZ0JBQVcsR0FBVyxVQUFVLENBQUM7UUFFMUMsd0VBQXdFO1FBQy9ELGNBQVMsR0FBVyxRQUFRLENBQUM7UUFFdEMscUVBQXFFO1FBQzVELGNBQVMsR0FBVyxPQUFPLENBQUM7UUFFckMsc0NBQXNDO1FBQzVCLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0tBZS9DO0lBYkM7O09BRUc7SUFDSCxZQUFZLENBQUMsSUFBUyxFQUFFLEdBQVc7UUFDakMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXLENBQUMsSUFBUztRQUNuQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDOztpSEEvQlUsb0JBQW9CO3FHQUFwQixvQkFBb0Isb1FDUmpDLDhyQ0F5QkE7MkZEakJhLG9CQUFvQjtrQkFOaEMsU0FBUzsrQkFDRSxrQkFBa0IsUUFFdEIsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLG1CQUNiLHVCQUF1QixDQUFDLE1BQU07OEJBSXRDLEtBQUs7c0JBQWIsS0FBSztnQkFHRyxRQUFRO3NCQUFoQixLQUFLO2dCQUdHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR0csU0FBUztzQkFBakIsS0FBSztnQkFHRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdJLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLWVsZW1lbnQtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9lbGVtZW50LWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBob3N0OiB7IGNsYXNzOiAnY3FhLXVpLXJvb3QnIH0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBFbGVtZW50TGlzdENvbXBvbmVudCB7XG4gIC8qKiBBcnJheSBvZiBpdGVtcyB0byBkaXNwbGF5ICovXG4gIEBJbnB1dCgpIGl0ZW1zOiBhbnlbXSA9IFtdO1xuICBcbiAgLyoqIEtleSB0byBhY2Nlc3MgdGhlIHRpdGxlIHByb3BlcnR5IGZyb20gZWFjaCBpdGVtIChkZWZhdWx0OiAndGl0bGUnKSAqL1xuICBASW5wdXQoKSB0aXRsZUtleTogc3RyaW5nID0gJ3RpdGxlJztcbiAgXG4gIC8qKiBLZXkgdG8gYWNjZXNzIHRoZSBzZWxlY3RvciBwcm9wZXJ0eSBmcm9tIGVhY2ggaXRlbSAoZGVmYXVsdDogJ3NlbGVjdG9yJykgKi9cbiAgQElucHV0KCkgc2VsZWN0b3JLZXk6IHN0cmluZyA9ICdzZWxlY3Rvcic7XG4gIFxuICAvKiogS2V5IHRvIGFjY2VzcyB0aGUgbGFiZWxzIGFycmF5IGZyb20gZWFjaCBpdGVtIChkZWZhdWx0OiAnbGFiZWxzJykgKi9cbiAgQElucHV0KCkgbGFiZWxzS2V5OiBzdHJpbmcgPSAnbGFiZWxzJztcbiAgXG4gIC8qKiBNYXhpbXVtIGhlaWdodCBmb3IgdGhlIHNjcm9sbGFibGUgY29udGFpbmVyIChkZWZhdWx0OiAnMjAwcHgnKSAqL1xuICBASW5wdXQoKSBtYXhIZWlnaHQ6IHN0cmluZyA9ICcyMDBweCc7XG5cbiAgLyoqIEVtaXR0ZWQgd2hlbiBhbiBpdGVtIGlzIGNsaWNrZWQgKi9cbiAgQE91dHB1dCgpIGl0ZW1DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHZhbHVlIGZyb20gYW4gaXRlbSB1c2luZyB0aGUgc3BlY2lmaWVkIGtleVxuICAgKi9cbiAgZ2V0SXRlbVZhbHVlKGl0ZW06IGFueSwga2V5OiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiBpdGVtPy5ba2V5XTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgaXRlbSBjbGlja1xuICAgKi9cbiAgb25JdGVtQ2xpY2soaXRlbTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5pdGVtQ2xpY2suZW1pdChpdGVtKTtcbiAgfVxufVxuXG4iLCI8ZGl2IFxuICBjbGFzcz1cImNxYS1tYXgtaC1bMjAwcHhdIGNxYS1vdmVyZmxvdy15LWF1dG8gY3FhLXNjcm9sbGJhci10aGluIGNxYS1zY3JvbGxiYXItdHJhY2stdHJhbnNwYXJlbnQgY3FhLXNjcm9sbGJhci10aHVtYi1bI0U1RTdFQl0gY3FhLXNjcm9sbGJhci10aHVtYi1yb3VuZGVkLWZ1bGwgY3FhLXNjcm9sbGJhci10aHVtYi1ob3ZlcjpjcWEtYmctWyNEMUQ1REJdIGNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTJcIlxuICBbc3R5bGUubWF4LWhlaWdodF09XCJtYXhIZWlnaHRcIj5cbiAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtc1wiIChjbGljayk9XCJvbkl0ZW1DbGljayhpdGVtKVwiPlxuICAgIDxkaXYgY2xhc3M9XCJob3ZlcjpjcWEtYmctWyNGNUY1RjVdIGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktYmV0d2VlbiBjcWEtYm9yZGVyIGNxYS1ib3JkZXItWyNGREU2OEFdXG4gICAgICAgICAgICAgY3FhLXJvdW5kZWQtbGcgY3FhLXAtMyBjcWEtY3Vyc29yLXBvaW50ZXJcIj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxoNiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtbGVhZGluZy1bMTAwJV0gY3FhLWZvbnQtWzQwMF0gY3FhLXRleHQtWyMxNzE3MTddXCI+XG4gICAgICAgICAge3sgZ2V0SXRlbVZhbHVlKGl0ZW0sIHRpdGxlS2V5KSB9fVxuICAgICAgICA8L2g2PlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTAwJV0gY3FhLXRleHQtWyM2QjcyODBdXCI+XG4gICAgICAgICAge3sgZ2V0SXRlbVZhbHVlKGl0ZW0sIHNlbGVjdG9yS2V5KSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZ2FwLTFcIj5cbiAgICAgICAgPHNwYW4gXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHRhZyBvZiBnZXRJdGVtVmFsdWUoaXRlbSwgbGFiZWxzS2V5KVwiIFxuICAgICAgICAgIGNsYXNzPVwiY3FhLXRleHQtWzExcHhdIGNxYS10ZXh0LVsjNGI3NGVjXSBjcWEtcm91bmRlZC1mdWxsIGNxYS1weC0yIGNxYS1iZy1bI2VmZjZmZl0gY3FhLWJvcmRlciBjcWEtYm9yZGVyLXNvbGlkIGNxYS1ib3JkZXItWyNjOGUwZmZdXCI+XG4gICAgICAgICAge3sgdGFnIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG4iXX0=
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvdGVzdC1jYXNlLWRldGFpbHMvZWxlbWVudC1saXN0L2VsZW1lbnQtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3Rlc3QtY2FzZS1kZXRhaWxzL2VsZW1lbnQtbGlzdC9lbGVtZW50LWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSx1QkFBdUIsRUFBNEIsU0FBUyxFQUF3QyxNQUFNLGVBQWUsQ0FBQzs7O0FBUTNLLE1BQU0sT0FBTyxvQkFBb0I7SUFOakM7UUFTRSxnQ0FBZ0M7UUFDdkIsVUFBSyxHQUFVLEVBQUUsQ0FBQztRQUUzQix5RUFBeUU7UUFDaEUsYUFBUSxHQUFXLE9BQU8sQ0FBQztRQUVwQywrRUFBK0U7UUFDdEUsZ0JBQVcsR0FBVyxVQUFVLENBQUM7UUFFMUMsd0VBQXdFO1FBQy9ELGNBQVMsR0FBVyxRQUFRLENBQUM7UUFFdEMscUVBQXFFO1FBQzVELGNBQVMsR0FBVyxPQUFPLENBQUM7UUFFckMsdUNBQXVDO1FBQzlCLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFFbEMsc0NBQXNDO1FBQzVCLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRTlDLGdGQUFnRjtRQUN0RSxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUc5QywrSEFBK0g7UUFDdkgseUJBQW9CLEdBQUcsS0FBSyxDQUFDO0tBNEV0QztJQTFFQzs7T0FFRztJQUNILFlBQVksQ0FBQyxJQUFTLEVBQUUsR0FBVztRQUNqQyxPQUFPLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVcsQ0FBQyxJQUFTO1FBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNqRDtJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQzlELFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNqRDtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDbEM7SUFDSCxDQUFDO0lBRU8sbUJBQW1CO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUMxQyxPQUFPO1NBQ1I7UUFFRCxnREFBZ0Q7UUFDaEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLHFCQUFxQixDQUF1QixDQUFDO1FBQy9HLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDYixPQUFPO1NBQ1I7UUFFRCxzQ0FBc0M7UUFDdEMsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDbEM7UUFFRCx1RkFBdUY7UUFDdkYsNEZBQTRGO1FBQzVGLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7UUFFakMsc0VBQXNFO1FBQ3RFLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxvQkFBb0IsQ0FDNUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNWLEtBQUssTUFBTSxLQUFLLElBQUksT0FBTyxFQUFFO2dCQUMzQixJQUFJLEtBQUssQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtvQkFDeEMsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7d0JBQzdCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7d0JBQ2xDLE9BQU87cUJBQ1I7b0JBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztpQkFDdEI7YUFDRjtRQUNILENBQUMsRUFDRDtZQUNFLElBQUksRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWE7WUFDeEMsVUFBVSxFQUFFLE1BQU07WUFDbEIsU0FBUyxFQUFFLEdBQUc7U0FDZixDQUNGLENBQUM7UUFFRixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN4QyxDQUFDOztpSEF4R1Usb0JBQW9CO3FHQUFwQixvQkFBb0IsdWJDUmpDLHV1RUFzQ0E7MkZEOUJhLG9CQUFvQjtrQkFOaEMsU0FBUzsrQkFDRSxrQkFBa0IsUUFFdEIsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLG1CQUNiLHVCQUF1QixDQUFDLE1BQU07OEJBR0UsZUFBZTtzQkFBL0QsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBR3RDLEtBQUs7c0JBQWIsS0FBSztnQkFHRyxRQUFRO3NCQUFoQixLQUFLO2dCQUdHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR0csU0FBUztzQkFBakIsS0FBSztnQkFHRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdHLE9BQU87c0JBQWYsS0FBSztnQkFHSSxTQUFTO3NCQUFsQixNQUFNO2dCQUdHLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLWVsZW1lbnQtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9lbGVtZW50LWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBob3N0OiB7IGNsYXNzOiAnY3FhLXVpLXJvb3QnIH0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBFbGVtZW50TGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgQFZpZXdDaGlsZCgnc2Nyb2xsQ29udGFpbmVyJywgeyBzdGF0aWM6IGZhbHNlIH0pIHNjcm9sbENvbnRhaW5lcj86IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBcbiAgLyoqIEFycmF5IG9mIGl0ZW1zIHRvIGRpc3BsYXkgKi9cbiAgQElucHV0KCkgaXRlbXM6IGFueVtdID0gW107XG4gIFxuICAvKiogS2V5IHRvIGFjY2VzcyB0aGUgdGl0bGUgcHJvcGVydHkgZnJvbSBlYWNoIGl0ZW0gKGRlZmF1bHQ6ICd0aXRsZScpICovXG4gIEBJbnB1dCgpIHRpdGxlS2V5OiBzdHJpbmcgPSAndGl0bGUnO1xuICBcbiAgLyoqIEtleSB0byBhY2Nlc3MgdGhlIHNlbGVjdG9yIHByb3BlcnR5IGZyb20gZWFjaCBpdGVtIChkZWZhdWx0OiAnc2VsZWN0b3InKSAqL1xuICBASW5wdXQoKSBzZWxlY3RvcktleTogc3RyaW5nID0gJ3NlbGVjdG9yJztcbiAgXG4gIC8qKiBLZXkgdG8gYWNjZXNzIHRoZSBsYWJlbHMgYXJyYXkgZnJvbSBlYWNoIGl0ZW0gKGRlZmF1bHQ6ICdsYWJlbHMnKSAqL1xuICBASW5wdXQoKSBsYWJlbHNLZXk6IHN0cmluZyA9ICdsYWJlbHMnO1xuICBcbiAgLyoqIE1heGltdW0gaGVpZ2h0IGZvciB0aGUgc2Nyb2xsYWJsZSBjb250YWluZXIgKGRlZmF1bHQ6ICcyMDBweCcpICovXG4gIEBJbnB1dCgpIG1heEhlaWdodDogc3RyaW5nID0gJzIwMHB4JztcblxuICAvKiogV2hldGhlciBtb3JlIGl0ZW1zIGNhbiBiZSBsb2FkZWQgKi9cbiAgQElucHV0KCkgaGFzTW9yZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBFbWl0dGVkIHdoZW4gYW4gaXRlbSBpcyBjbGlja2VkICovXG4gIEBPdXRwdXQoKSBpdGVtQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvKiogRW1pdHRlZCB3aGVuIHVzZXIgc2Nyb2xscyBuZWFyIHRoZSBib3R0b20gYW5kIG1vcmUgaXRlbXMgc2hvdWxkIGJlIGxvYWRlZCAqL1xuICBAT3V0cHV0KCkgbG9hZE1vcmUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBzY3JvbGxPYnNlcnZlcj86IEludGVyc2VjdGlvbk9ic2VydmVyO1xuICAvKiogU2tpcCB0aGUgZmlyc3QgaW50ZXJzZWN0aW9uIGNhbGxiYWNrIChmaXJlcyBpbW1lZGlhdGVseSB3aGVuIG9ic2VydmUoKSBpcyBjYWxsZWQpIHRvIHByZXZlbnQgZHVwbGljYXRlIEFQSSBjYWxscyBvbiBsb2FkICovXG4gIHByaXZhdGUgc2tpcE5leHRJbnRlcnNlY3Rpb24gPSBmYWxzZTtcblxuICAvKipcbiAgICogR2V0IHRoZSB2YWx1ZSBmcm9tIGFuIGl0ZW0gdXNpbmcgdGhlIHNwZWNpZmllZCBrZXlcbiAgICovXG4gIGdldEl0ZW1WYWx1ZShpdGVtOiBhbnksIGtleTogc3RyaW5nKTogYW55IHtcbiAgICByZXR1cm4gaXRlbT8uW2tleV07XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIGl0ZW0gY2xpY2tcbiAgICovXG4gIG9uSXRlbUNsaWNrKGl0ZW06IGFueSk6IHZvaWQge1xuICAgIHRoaXMuaXRlbUNsaWNrLmVtaXQoaXRlbSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFzTW9yZSkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNldHVwU2Nyb2xsT2JzZXJ2ZXIoKSwgMCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydoYXNNb3JlJ10gJiYgdGhpcy5oYXNNb3JlICYmIHRoaXMuc2Nyb2xsQ29udGFpbmVyKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2V0dXBTY3JvbGxPYnNlcnZlcigpLCAwKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zY3JvbGxPYnNlcnZlcikge1xuICAgICAgdGhpcy5zY3JvbGxPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cFNjcm9sbE9ic2VydmVyKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5oYXNNb3JlIHx8ICF0aGlzLnNjcm9sbENvbnRhaW5lcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEZpbmQgdGhlIHNlbnRpbmVsIGVsZW1lbnQgKGxvYWRpbmcgaW5kaWNhdG9yKVxuICAgIGNvbnN0IHNlbnRpbmVsID0gdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcubG9hZC1tb3JlLXNlbnRpbmVsJykgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuICAgIGlmICghc2VudGluZWwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBEaXNjb25uZWN0IGV4aXN0aW5nIG9ic2VydmVyIGlmIGFueVxuICAgIGlmICh0aGlzLnNjcm9sbE9ic2VydmVyKSB7XG4gICAgICB0aGlzLnNjcm9sbE9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICB9XG5cbiAgICAvLyBTa2lwIHRoZSBmaXJzdCBpbnRlcnNlY3Rpb24gY2FsbGJhY2sgLSBpdCBmaXJlcyBpbW1lZGlhdGVseSB3aGVuIG9ic2VydmUoKSBpcyBjYWxsZWRcbiAgICAvLyBpZiB0aGUgc2VudGluZWwgaXMgYWxyZWFkeSBpbiB2aWV3LCBjYXVzaW5nIGR1cGxpY2F0ZSBBUEkgY2FsbHMgKHBhZ2UgMCArIHBhZ2UgMSkgb24gbG9hZFxuICAgIHRoaXMuc2tpcE5leHRJbnRlcnNlY3Rpb24gPSB0cnVlO1xuXG4gICAgLy8gQ3JlYXRlIEludGVyc2VjdGlvbk9ic2VydmVyIHRvIGRldGVjdCB3aGVuIHNlbnRpbmVsIGNvbWVzIGludG8gdmlld1xuICAgIHRoaXMuc2Nyb2xsT2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoXG4gICAgICAoZW50cmllcykgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgICAgICBpZiAoZW50cnkuaXNJbnRlcnNlY3RpbmcgJiYgdGhpcy5oYXNNb3JlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5za2lwTmV4dEludGVyc2VjdGlvbikge1xuICAgICAgICAgICAgICB0aGlzLnNraXBOZXh0SW50ZXJzZWN0aW9uID0gZmFsc2U7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubG9hZE1vcmUuZW1pdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcm9vdDogdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudCxcbiAgICAgICAgcm9vdE1hcmdpbjogJzUwcHgnLFxuICAgICAgICB0aHJlc2hvbGQ6IDAuMVxuICAgICAgfVxuICAgICk7XG5cbiAgICB0aGlzLnNjcm9sbE9ic2VydmVyLm9ic2VydmUoc2VudGluZWwpO1xuICB9XG59XG5cbiIsIjxkaXYgXG4gICNzY3JvbGxDb250YWluZXJcbiAgY2xhc3M9XCJjcWEtbWF4LWgtWzIwMHB4XSBjcWEtb3ZlcmZsb3cteS1hdXRvIGNxYS1zY3JvbGxiYXItdGhpbiBjcWEtc2Nyb2xsYmFyLXRyYWNrLXRyYW5zcGFyZW50IGNxYS1zY3JvbGxiYXItdGh1bWItWyNFNUU3RUJdIGNxYS1zY3JvbGxiYXItdGh1bWItcm91bmRlZC1mdWxsIGNxYS1zY3JvbGxiYXItdGh1bWItaG92ZXI6Y3FhLWJnLVsjRDFENURCXSBjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0yXCJcbiAgW3N0eWxlLm1heC1oZWlnaHRdPVwibWF4SGVpZ2h0XCI+XG4gIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNcIiAoY2xpY2spPVwib25JdGVtQ2xpY2soaXRlbSlcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaG92ZXI6Y3FhLWJnLVsjRjVGNUY1XSBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWJldHdlZW4gY3FhLWJvcmRlciBjcWEtYm9yZGVyLVsjRkRFNjhBXVxuICAgICAgICAgICAgIGNxYS1yb3VuZGVkLWxnIGNxYS1wLTMgY3FhLWN1cnNvci1wb2ludGVyIGNxYS1nYXAtMVwiIHN0eWxlPVwid29yZC1icmVhazogYnJlYWstd29yZDtcIj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxoNiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtbGVhZGluZy1bMTAwJV0gY3FhLWZvbnQtWzQwMF0gY3FhLXRleHQtWyMxNzE3MTddXCI+XG4gICAgICAgICAge3sgZ2V0SXRlbVZhbHVlKGl0ZW0sIHRpdGxlS2V5KSB9fVxuICAgICAgICA8L2g2PlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTAwJV0gY3FhLXRleHQtWyM2QjcyODBdXCI+XG4gICAgICAgICAge3sgZ2V0SXRlbVZhbHVlKGl0ZW0sIHNlbGVjdG9yS2V5KSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZ2FwLTFcIj5cbiAgICAgICAgPHNwYW4gXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHRhZyBvZiBnZXRJdGVtVmFsdWUoaXRlbSwgbGFiZWxzS2V5KVwiIFxuICAgICAgICAgIGNsYXNzPVwiY3FhLXRleHQtWzExcHhdIGNxYS10ZXh0LVsjNGI3NGVjXSBjcWEtcm91bmRlZC1mdWxsIGNxYS1weC0yIGNxYS1iZy1bI2VmZjZmZl0gY3FhLWJvcmRlciBjcWEtYm9yZGVyLXNvbGlkIGNxYS1ib3JkZXItWyNjOGUwZmZdXCI+XG4gICAgICAgICAge3sgdGFnIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPCEtLSBObyBlbGVtZW50cyBmb3VuZCBtZXNzYWdlIC0tPlxuICA8ZGl2ICpuZ0lmPVwiaXRlbXMubGVuZ3RoID09PSAwICYmICFoYXNNb3JlXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLWl0ZW1zLWNlbnRlciBjcWEtcHktNCBjcWEtdGV4dC1bMTJweF0gY3FhLXRleHQtWyM2QjcyODBdXCI+XG4gICAgTm8gZWxlbWVudHMgZm91bmRcbiAgPC9kaXY+XG4gIDwhLS0gU2VudGluZWwgZWxlbWVudCBmb3IgaW5maW5pdGUgc2Nyb2xsIC0tPlxuICA8ZGl2ICpuZ0lmPVwiaGFzTW9yZVwiIGNsYXNzPVwibG9hZC1tb3JlLXNlbnRpbmVsIGNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtZ2FwLTMgY3FhLXB5LTJcIj5cbiAgICA8c3ZnIGNsYXNzPVwiY3FhLWFuaW1hdGUtc3BpbiBjcWEtaC02IGNxYS13LTYgY3FhLXRleHQtWyMzRjQzRUVdXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgPGNpcmNsZSBjbGFzcz1cImNxYS1vcGFjaXR5LTI1XCIgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMTBcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCI0XCI+PC9jaXJjbGU+XG4gICAgICA8cGF0aCBjbGFzcz1cImNxYS1vcGFjaXR5LTc1XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIGQ9XCJNNCAxMmE4IDggMCAwMTgtOFYwQzUuMzczIDAgMCA1LjM3MyAwIDEyaDR6bTIgNS4yOTFBNy45NjIgNy45NjIgMCAwMTQgMTJIMGMwIDMuMDQyIDEuMTM1IDUuODI0IDMgNy45MzhsMy0yLjY0N3pcIj48L3BhdGg+XG4gICAgPC9zdmc+XG4gICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bMTJweF0gY3FhLXRleHQtWyM2QjcyODBdXCI+e3sgaXRlbXMubGVuZ3RoID09PSAwID8gJ0xvYWRpbmcuLi4nIDogJ0xvYWRpbmcgbW9yZS4uLicgfX08L3NwYW4+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbiJdfQ==
@@ -2,4 +2,4 @@ import { InjectionToken } from '@angular/core';
2
2
  /** Sentinel returned from afterClosed() when user clicked "Edit in depth". */
3
3
  export const ELEMENT_POPUP_EDIT_IN_DEPTH = Symbol('ElementPopupEditInDepth');
4
4
  export const ELEMENT_POPUP_DATA = new InjectionToken('ELEMENT_POPUP_DATA');
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC1wb3B1cC1kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi90ZXN0LWNhc2UtZGV0YWlscy9lbGVtZW50LXBvcHVwL2VsZW1lbnQtcG9wdXAtZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBZ0IvQyw4RUFBOEU7QUFDOUUsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7QUFFN0UsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxjQUFjLENBQ2xELG9CQUFvQixDQUNyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVsZW1lbnRQb3B1cERhdGEge1xuICBlbGVtZW50PzogRWxlbWVudFBvcHVwRGF0YUVsZW1lbnRzO1xuICBsYWJlbHM6IHN0cmluZ1tdO1xuICBlbGVtZW50czogRWxlbWVudFBvcHVwRGF0YUVsZW1lbnRzW107XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGhlbHBVcmw/OiBzdHJpbmc7XG59XG5cblxuZXhwb3J0IGludGVyZmFjZSBFbGVtZW50UG9wdXBEYXRhRWxlbWVudHMge1xuICBsYWJlbHM6IHN0cmluZ1tdO1xuICB0aXRsZTogc3RyaW5nO1xuICBzZWxlY3Rvcj86IHN0cmluZztcbn1cbi8qKiBTZW50aW5lbCByZXR1cm5lZCBmcm9tIGFmdGVyQ2xvc2VkKCkgd2hlbiB1c2VyIGNsaWNrZWQgXCJFZGl0IGluIGRlcHRoXCIuICovXG5leHBvcnQgY29uc3QgRUxFTUVOVF9QT1BVUF9FRElUX0lOX0RFUFRIID0gU3ltYm9sKCdFbGVtZW50UG9wdXBFZGl0SW5EZXB0aCcpO1xuXG5leHBvcnQgY29uc3QgRUxFTUVOVF9QT1BVUF9EQVRBID0gbmV3IEluamVjdGlvblRva2VuPEVsZW1lbnRQb3B1cERhdGE+KFxuICAnRUxFTUVOVF9QT1BVUF9EQVRBJ1xuKTtcbiJdfQ==
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC1wb3B1cC1kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi90ZXN0LWNhc2UtZGV0YWlscy9lbGVtZW50LXBvcHVwL2VsZW1lbnQtcG9wdXAtZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBbUIvQyw4RUFBOEU7QUFDOUUsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7QUFFN0UsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxjQUFjLENBQ2xELG9CQUFvQixDQUNyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVsZW1lbnRQb3B1cERhdGEge1xuICBlbGVtZW50PzogRWxlbWVudFBvcHVwRGF0YUVsZW1lbnRzO1xuICBsYWJlbHM6IHN0cmluZ1tdO1xuICBlbGVtZW50czogRWxlbWVudFBvcHVwRGF0YUVsZW1lbnRzW107XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGhlbHBVcmw/OiBzdHJpbmc7XG59XG5cblxuZXhwb3J0IGludGVyZmFjZSBFbGVtZW50UG9wdXBEYXRhRWxlbWVudHMge1xuICBsYWJlbHM6IHN0cmluZ1tdO1xuICB0aXRsZTogc3RyaW5nO1xuICBzZWxlY3Rvcj86IHN0cmluZztcbiAgaWQ/OiBudW1iZXI7XG4gIHNjcmVlbk5hbWU/OiBzdHJpbmc7XG4gIHNjcmVlbk5hbWVJZD86IG51bWJlcjtcbn1cbi8qKiBTZW50aW5lbCByZXR1cm5lZCBmcm9tIGFmdGVyQ2xvc2VkKCkgd2hlbiB1c2VyIGNsaWNrZWQgXCJFZGl0IGluIGRlcHRoXCIuICovXG5leHBvcnQgY29uc3QgRUxFTUVOVF9QT1BVUF9FRElUX0lOX0RFUFRIID0gU3ltYm9sKCdFbGVtZW50UG9wdXBFZGl0SW5EZXB0aCcpO1xuXG5leHBvcnQgY29uc3QgRUxFTUVOVF9QT1BVUF9EQVRBID0gbmV3IEluamVjdGlvblRva2VuPEVsZW1lbnRQb3B1cERhdGE+KFxuICAnRUxFTUVOVF9QT1BVUF9EQVRBJ1xuKTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC1wb3B1cC1mb3JtLWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3Rlc3QtY2FzZS1kZXRhaWxzL2VsZW1lbnQtcG9wdXAvZWxlbWVudC1wb3B1cC1mb3JtLWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBQYXlsb2FkIGVtaXR0ZWQgd2hlbiB1c2VyIGNyZWF0ZXMgYSBuZXcgZWxlbWVudCAqL1xuZXhwb3J0IGludGVyZmFjZSBFbGVtZW50Q3JlYXRlUGF5bG9hZCB7XG4gIG5hbWU6IHN0cmluZztcbiAgc2NyZWVuTmFtZUlkPzogbnVtYmVyO1xuICBzY3JlZW5OYW1lTmFtZTogc3RyaW5nO1xuICBsb2NhdG9yVmFsdWU6IHN0cmluZztcbiAgbGFiZWxzOiBzdHJpbmdbXTtcbn1cblxuLyoqIFBheWxvYWQgZW1pdHRlZCB3aGVuIHVzZXIgdXBkYXRlcyBhbiBleGlzdGluZyBlbGVtZW50ICovXG5leHBvcnQgaW50ZXJmYWNlIEVsZW1lbnRVcGRhdGVQYXlsb2FkIHtcbiAgZWxlbWVudElkOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcbiAgc2NyZWVuTmFtZUlkPzogbnVtYmVyO1xuICBzY3JlZW5OYW1lTmFtZTogc3RyaW5nO1xuICBsb2NhdG9yVmFsdWU6IHN0cmluZztcbiAgbGFiZWxzOiBzdHJpbmdbXTtcbn1cblxuLyoqIFNjcmVlbiBuYW1lIG9wdGlvbiBmb3IgYXV0b2NvbXBsZXRlICovXG5leHBvcnQgaW50ZXJmYWNlIFNjcmVlbk5hbWVPcHRpb24ge1xuICBpZD86IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xufVxuIl19