@seniorsistemas/components-ai 2.2.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,319 @@
1
+ import { Component, Input, Output, EventEmitter, ContentChild, ViewChild } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { DragDropModule, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';
4
+ import { ButtonModule } from 'primeng/button';
5
+ import { CardModule } from 'primeng/card';
6
+ import { TagModule } from 'primeng/tag';
7
+ import { TooltipModule } from 'primeng/tooltip';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/common";
10
+ import * as i2 from "@angular/cdk/drag-drop";
11
+ import * as i3 from "primeng/button";
12
+ import * as i4 from "primeng/tag";
13
+ import * as i5 from "primeng/tooltip";
14
+ export class KanbanBoardComponent {
15
+ ngZone;
16
+ columns = [];
17
+ allowReorder = true;
18
+ allowDrag = true;
19
+ showAddButton = false;
20
+ showEditButton = false;
21
+ showDeleteButton = false;
22
+ canDeleteColumn;
23
+ emptyMessage = 'No items';
24
+ minColumnWidth = '280px';
25
+ maxColumnWidth = '350px';
26
+ /** Show scroll hint arrows when columns overflow horizontally. */
27
+ showScrollHints = true;
28
+ /** Enable item selection mode. Adds selected state management and CSS class on cards. */
29
+ selectable = false;
30
+ itemMoved = new EventEmitter();
31
+ itemClicked = new EventEmitter();
32
+ addItem = new EventEmitter();
33
+ editColumn = new EventEmitter();
34
+ deleteColumn = new EventEmitter();
35
+ /** Emitted when selection changes. Payload is the full array of selected KanbanItems. */
36
+ selectionChange = new EventEmitter();
37
+ /** Custom template for the column header. Context: { $implicit: KanbanColumn } */
38
+ columnHeaderTemplate;
39
+ /**
40
+ * Custom template for each item card.
41
+ * Context: { $implicit: KanbanItem, column: KanbanColumn, selected: boolean, toggle: () => void }
42
+ */
43
+ itemTemplate;
44
+ scrollContainer;
45
+ columnIds = [];
46
+ // Scroll state
47
+ hasHorizontalScroll = false;
48
+ scrollPosition = 'start';
49
+ // Selection state
50
+ selectedIds = new Set();
51
+ // Auto-scroll during drag
52
+ autoScrollActive = false;
53
+ autoScrollSpeed = 0;
54
+ autoScrollRaf = null;
55
+ resizeObserver;
56
+ constructor(ngZone) {
57
+ this.ngZone = ngZone;
58
+ }
59
+ ngOnInit() {
60
+ this.updateColumnIds();
61
+ }
62
+ ngAfterViewInit() {
63
+ if (this.showScrollHints) {
64
+ this.checkScroll();
65
+ this.ngZone.runOutsideAngular(() => {
66
+ this.resizeObserver = new ResizeObserver(() => {
67
+ this.ngZone.run(() => this.checkScroll());
68
+ });
69
+ if (this.scrollContainer?.nativeElement) {
70
+ this.resizeObserver.observe(this.scrollContainer.nativeElement);
71
+ }
72
+ });
73
+ }
74
+ }
75
+ ngOnDestroy() {
76
+ this.resizeObserver?.disconnect();
77
+ this.stopAutoScroll();
78
+ }
79
+ ngOnChanges() {
80
+ this.updateColumnIds();
81
+ setTimeout(() => this.checkScroll(), 50);
82
+ }
83
+ updateColumnIds() {
84
+ this.columnIds = this.columns.map(col => col.id);
85
+ }
86
+ // ==================== SELECTION ====================
87
+ isSelected(item) {
88
+ return this.selectedIds.has(item.id);
89
+ }
90
+ toggleSelection(item) {
91
+ if (this.selectedIds.has(item.id)) {
92
+ this.selectedIds.delete(item.id);
93
+ }
94
+ else {
95
+ this.selectedIds.add(item.id);
96
+ }
97
+ this.emitSelectionChange();
98
+ }
99
+ /** Clear all selections. Can be called externally via ViewChild. */
100
+ clearSelection() {
101
+ this.selectedIds.clear();
102
+ this.emitSelectionChange();
103
+ }
104
+ /** Get current selected items. */
105
+ getSelectedItems() {
106
+ const allItems = this.columns.flatMap(col => col.items);
107
+ return allItems.filter(item => this.selectedIds.has(item.id));
108
+ }
109
+ emitSelectionChange() {
110
+ this.selectionChange.emit(this.getSelectedItems());
111
+ }
112
+ /** Returns the template context for an item (used in the template). */
113
+ getItemContext(item, column) {
114
+ return {
115
+ $implicit: item,
116
+ column,
117
+ selected: this.isSelected(item),
118
+ toggle: () => this.toggleSelection(item)
119
+ };
120
+ }
121
+ // ==================== SCROLL ====================
122
+ onScroll() {
123
+ this.checkScroll();
124
+ }
125
+ checkScroll() {
126
+ const el = this.scrollContainer?.nativeElement;
127
+ if (!el)
128
+ return;
129
+ const { scrollLeft, scrollWidth, clientWidth } = el;
130
+ this.hasHorizontalScroll = scrollWidth > clientWidth + 2;
131
+ if (scrollLeft <= 2) {
132
+ this.scrollPosition = 'start';
133
+ }
134
+ else if (scrollLeft + clientWidth >= scrollWidth - 2) {
135
+ this.scrollPosition = 'end';
136
+ }
137
+ else {
138
+ this.scrollPosition = 'middle';
139
+ }
140
+ }
141
+ scrollLeft() {
142
+ const el = this.scrollContainer?.nativeElement;
143
+ if (!el)
144
+ return;
145
+ const column = el.querySelector('.kanban-column');
146
+ const scrollAmount = column ? column.offsetWidth + 16 : 300;
147
+ el.scrollBy({ left: -scrollAmount, behavior: 'smooth' });
148
+ }
149
+ scrollRight() {
150
+ const el = this.scrollContainer?.nativeElement;
151
+ if (!el)
152
+ return;
153
+ const column = el.querySelector('.kanban-column');
154
+ const scrollAmount = column ? column.offsetWidth + 16 : 300;
155
+ el.scrollBy({ left: scrollAmount, behavior: 'smooth' });
156
+ }
157
+ // ==================== AUTO-SCROLL DURING DRAG ====================
158
+ onDragMoved(event) {
159
+ const el = this.scrollContainer?.nativeElement;
160
+ if (!el)
161
+ return;
162
+ const rect = el.getBoundingClientRect();
163
+ const pointerX = event.pointerPosition.x;
164
+ const edgeZone = 80; // pixels from edge to trigger scroll
165
+ if (pointerX < rect.left + edgeZone) {
166
+ // Near left edge
167
+ const proximity = 1 - (pointerX - rect.left) / edgeZone;
168
+ this.autoScrollSpeed = -Math.max(3, proximity * 15);
169
+ this.startAutoScroll();
170
+ }
171
+ else if (pointerX > rect.right - edgeZone) {
172
+ // Near right edge
173
+ const proximity = 1 - (rect.right - pointerX) / edgeZone;
174
+ this.autoScrollSpeed = Math.max(3, proximity * 15);
175
+ this.startAutoScroll();
176
+ }
177
+ else {
178
+ this.stopAutoScroll();
179
+ }
180
+ }
181
+ onDragEnded() {
182
+ this.stopAutoScroll();
183
+ }
184
+ startAutoScroll() {
185
+ if (this.autoScrollActive)
186
+ return;
187
+ this.autoScrollActive = true;
188
+ this.runAutoScroll();
189
+ }
190
+ stopAutoScroll() {
191
+ this.autoScrollActive = false;
192
+ this.autoScrollSpeed = 0;
193
+ if (this.autoScrollRaf) {
194
+ cancelAnimationFrame(this.autoScrollRaf);
195
+ this.autoScrollRaf = null;
196
+ }
197
+ }
198
+ runAutoScroll() {
199
+ if (!this.autoScrollActive)
200
+ return;
201
+ const el = this.scrollContainer?.nativeElement;
202
+ if (el) {
203
+ el.scrollLeft += this.autoScrollSpeed;
204
+ }
205
+ this.autoScrollRaf = requestAnimationFrame(() => this.runAutoScroll());
206
+ }
207
+ // ==================== DRAG & DROP ====================
208
+ onDrop(event, column) {
209
+ if (!this.allowDrag)
210
+ return;
211
+ const previousColumn = this.columns.find(col => col.id === event.previousContainer.id);
212
+ if (event.previousContainer === event.container) {
213
+ moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);
214
+ }
215
+ else {
216
+ if (column.allowDrop === false)
217
+ return;
218
+ if (column.maxItems && event.container.data.length >= column.maxItems)
219
+ return;
220
+ const item = event.previousContainer.data[event.previousIndex];
221
+ transferArrayItem(event.previousContainer.data, event.container.data, event.previousIndex, event.currentIndex);
222
+ if (previousColumn) {
223
+ this.itemMoved.emit({
224
+ item,
225
+ previousColumn,
226
+ currentColumn: column,
227
+ previousIndex: event.previousIndex,
228
+ currentIndex: event.currentIndex
229
+ });
230
+ }
231
+ }
232
+ }
233
+ onItemClick(item) {
234
+ this.itemClicked.emit(item);
235
+ }
236
+ onAddItem(column) {
237
+ this.addItem.emit(column);
238
+ }
239
+ onEditColumn(column) {
240
+ this.editColumn.emit(column);
241
+ }
242
+ onDeleteColumn(column) {
243
+ this.deleteColumn.emit(column);
244
+ }
245
+ canShowDeleteButton(column) {
246
+ if (!this.showDeleteButton)
247
+ return false;
248
+ if (this.canDeleteColumn) {
249
+ return this.canDeleteColumn(column);
250
+ }
251
+ return true;
252
+ }
253
+ getColumnStyle(column) {
254
+ return {
255
+ 'min-width': this.minColumnWidth,
256
+ 'max-width': this.maxColumnWidth,
257
+ 'border-top': column.color ? `3px solid ${column.color}` : '3px solid #dee2e6'
258
+ };
259
+ }
260
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KanbanBoardComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
261
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: KanbanBoardComponent, isStandalone: true, selector: "sia-kanban-board", inputs: { columns: "columns", allowReorder: "allowReorder", allowDrag: "allowDrag", showAddButton: "showAddButton", showEditButton: "showEditButton", showDeleteButton: "showDeleteButton", canDeleteColumn: "canDeleteColumn", emptyMessage: "emptyMessage", minColumnWidth: "minColumnWidth", maxColumnWidth: "maxColumnWidth", showScrollHints: "showScrollHints", selectable: "selectable" }, outputs: { itemMoved: "itemMoved", itemClicked: "itemClicked", addItem: "addItem", editColumn: "editColumn", deleteColumn: "deleteColumn", selectionChange: "selectionChange" }, queries: [{ propertyName: "columnHeaderTemplate", first: true, predicate: ["columnHeaderTemplate"], descendants: true }, { propertyName: "itemTemplate", first: true, predicate: ["itemTemplate"], descendants: true }], viewQueries: [{ propertyName: "scrollContainer", first: true, predicate: ["scrollContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"kanban-board\">\n <!-- Scroll hint arrows -->\n <div class=\"kanban-scroll-controls\" *ngIf=\"showScrollHints && hasHorizontalScroll\">\n <button\n *ngIf=\"scrollPosition !== 'start'\"\n pButton\n type=\"button\"\n icon=\"pi pi-chevron-left\"\n [rounded]=\"true\"\n class=\"scroll-hint scroll-hint-left\"\n (click)=\"scrollLeft()\">\n </button>\n <button\n *ngIf=\"scrollPosition !== 'end'\"\n pButton\n type=\"button\"\n icon=\"pi pi-chevron-right\"\n [rounded]=\"true\"\n class=\"scroll-hint scroll-hint-right\"\n (click)=\"scrollRight()\">\n </button>\n </div>\n\n <!-- Scrollable columns container -->\n <div class=\"kanban-columns\" #scrollContainer (scroll)=\"onScroll()\">\n <div \n *ngFor=\"let column of columns\" \n class=\"kanban-column\"\n [style]=\"getColumnStyle(column)\">\n \n <!-- Column Header -->\n <div class=\"column-header\">\n <!-- Custom header template -->\n <ng-container *ngIf=\"columnHeaderTemplate; else defaultColumnHeader\"\n [ngTemplateOutlet]=\"columnHeaderTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: column }\">\n </ng-container>\n\n <ng-template #defaultColumnHeader>\n <div class=\"column-title\">\n <i *ngIf=\"column.icon\" [class]=\"'pi ' + column.icon\"></i>\n <span>{{ column.title }}</span>\n <span class=\"item-count\">{{ column.items.length }}</span>\n </div>\n <div class=\"column-actions\">\n <button \n *ngIf=\"showAddButton\"\n pButton \n type=\"button\" \n icon=\"pi pi-plus\" \n class=\"p-button-text p-button-sm p-button-rounded\"\n (click)=\"onAddItem(column)\"\n [pTooltip]=\"'Add item'\"\n tooltipPosition=\"top\">\n </button>\n <button \n *ngIf=\"showEditButton\"\n pButton \n type=\"button\" \n icon=\"pi pi-pencil\" \n class=\"p-button-text p-button-sm p-button-rounded\"\n (click)=\"onEditColumn(column)\"\n [pTooltip]=\"'Edit column'\"\n tooltipPosition=\"top\">\n </button>\n <button \n *ngIf=\"canShowDeleteButton(column)\"\n pButton \n type=\"button\" \n icon=\"pi pi-trash\" \n class=\"p-button-text p-button-sm p-button-rounded p-button-danger\"\n (click)=\"onDeleteColumn(column)\"\n [pTooltip]=\"'Delete column'\"\n tooltipPosition=\"top\">\n </button>\n </div>\n </ng-template>\n </div>\n\n <!-- Column Content -->\n <div \n class=\"column-content\"\n cdkDropList\n [id]=\"column.id\"\n [cdkDropListData]=\"column.items\"\n [cdkDropListConnectedTo]=\"columnIds\"\n (cdkDropListDropped)=\"onDrop($event, column)\">\n \n <!-- Items -->\n <div \n *ngFor=\"let item of column.items\"\n class=\"kanban-item\"\n [class.kanban-item--selected]=\"selectable && isSelected(item)\"\n cdkDrag\n [cdkDragDisabled]=\"!allowDrag\"\n (cdkDragMoved)=\"onDragMoved($event)\"\n (cdkDragEnded)=\"onDragEnded()\"\n (click)=\"onItemClick(item)\">\n \n <!-- Custom item template with selection context -->\n <ng-container *ngIf=\"itemTemplate; else defaultItem\"\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"getItemContext(item, column)\">\n </ng-container>\n\n <ng-template #defaultItem>\n <div class=\"item-content\">\n <div class=\"item-title\">{{ item.title }}</div>\n <div *ngIf=\"item.description\" class=\"item-description\">\n {{ item.description }}\n </div>\n <div *ngIf=\"item.tags && item.tags.length > 0\" class=\"item-tags\">\n <p-tag \n *ngFor=\"let tag of item.tags\"\n [value]=\"tag.label\"\n [severity]=\"tag.severity || 'secondary'\"\n styleClass=\"item-tag\">\n </p-tag>\n </div>\n </div>\n </ng-template>\n\n <!-- Drag Placeholder -->\n <div class=\"item-placeholder\" *cdkDragPlaceholder></div>\n </div>\n\n <!-- Empty State -->\n <div *ngIf=\"column.items.length === 0\" class=\"empty-column\">\n <i class=\"pi pi-inbox\"></i>\n <p>{{ emptyMessage }}</p>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".kanban-board{position:relative;width:100%;height:100%;padding:1rem}.kanban-board .kanban-scroll-controls{position:absolute;inset:0;pointer-events:none;z-index:10}.kanban-board .kanban-scroll-controls .scroll-hint{position:absolute;top:50%;transform:translateY(-50%);pointer-events:auto;box-shadow:0 4px 12px #00000026;transition:all .3s ease}.kanban-board .kanban-scroll-controls .scroll-hint:hover{transform:translateY(-50%) scale(1.1);box-shadow:0 6px 16px #0003}.kanban-board .kanban-scroll-controls .scroll-hint.scroll-hint-left{left:.5rem}.kanban-board .kanban-scroll-controls .scroll-hint.scroll-hint-right{right:.5rem}.kanban-board .kanban-columns{display:flex;gap:1rem;min-height:500px;padding-bottom:1rem;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin}.kanban-board .kanban-columns::-webkit-scrollbar{height:6px}.kanban-board .kanban-columns::-webkit-scrollbar-track{background:transparent}.kanban-board .kanban-columns::-webkit-scrollbar-thumb{background:#94a3b84d;border-radius:3px}.kanban-board .kanban-columns::-webkit-scrollbar-thumb:hover{background:#94a3b880}.kanban-board .kanban-column{flex-shrink:0;display:flex;flex-direction:column;background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a}.kanban-board .kanban-column .column-header{display:flex;justify-content:space-between;align-items:center;padding:1rem;border-bottom:1px solid #e9ecef;background:#fafbfc;border-radius:8px 8px 0 0}.kanban-board .kanban-column .column-header .column-title{display:flex;align-items:center;gap:.5rem;font-weight:600;color:#2c3e50;font-size:.95rem}.kanban-board .kanban-column .column-header .column-title .pi{font-size:.875rem;color:#6c757d}.kanban-board .kanban-column .column-header .column-title .item-count{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 .5rem;background:#e9ecef;border-radius:12px;font-size:.75rem;font-weight:600;color:#495057}.kanban-board .kanban-column .column-header .column-actions{display:flex;gap:.25rem}.kanban-board .kanban-column .column-content{flex:1;padding:.75rem;overflow-y:auto;min-height:200px}.kanban-board .kanban-column .column-content .kanban-item{background:#fff;border:1px solid #e9ecef;border-radius:6px;padding:.875rem;margin-bottom:.75rem;cursor:pointer;transition:all .2s ease;box-shadow:0 1px 2px #0000000d}.kanban-board .kanban-column .column-content .kanban-item:hover{border-color:#007bff;box-shadow:0 2px 8px #007bff26;transform:translateY(-1px)}.kanban-board .kanban-column .column-content .kanban-item:last-child{margin-bottom:0}.kanban-board .kanban-column .column-content .kanban-item.kanban-item--selected{border-left:3px solid #007bff;background:#f0f7ff}.kanban-board .kanban-column .column-content .kanban-item .item-content .item-title{font-weight:500;color:#2c3e50;font-size:.875rem;margin-bottom:.5rem;line-height:1.4}.kanban-board .kanban-column .column-content .kanban-item .item-content .item-description{font-size:.8rem;color:#6c757d;margin-bottom:.5rem;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.kanban-board .kanban-column .column-content .kanban-item .item-content .item-tags{display:flex;flex-wrap:wrap;gap:.375rem;margin-top:.5rem}.kanban-board .kanban-column .column-content .kanban-item .item-content .item-tags ::ng-deep .item-tag{font-size:.7rem;padding:.25rem .5rem}.kanban-board .kanban-column .column-content .kanban-item .item-placeholder{background:#e9ecef;border:2px dashed #adb5bd;border-radius:6px;min-height:80px}.kanban-board .kanban-column .column-content .empty-column{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem 1rem;color:#adb5bd;text-align:center}.kanban-board .kanban-column .column-content .empty-column .pi{font-size:2.5rem;margin-bottom:.5rem;opacity:.5}.kanban-board .kanban-column .column-content .empty-column p{font-size:.875rem;margin:0}::ng-deep .cdk-drag-preview{background:#fff;border:1px solid #007bff;border-radius:6px;padding:.875rem;box-shadow:0 4px 12px #007bff4d;opacity:.9;cursor:grabbing}::ng-deep .cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}::ng-deep .cdk-drop-list-dragging .kanban-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}@media (max-width: 768px){.kanban-board .kanban-columns{flex-direction:column}.kanban-board .kanban-column{min-width:100%!important;max-width:100%!important}.kanban-board .kanban-scroll-controls{display:none}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i2.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i2.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i2.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain", "fluid", "label", "icon", "buttonProps"] }, { kind: "ngmodule", type: CardModule }, { kind: "ngmodule", type: TagModule }, { kind: "component", type: i4.Tag, selector: "p-tag", inputs: ["style", "styleClass", "severity", "value", "icon", "rounded"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }] });
262
+ }
263
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KanbanBoardComponent, decorators: [{
264
+ type: Component,
265
+ args: [{ selector: 'sia-kanban-board', standalone: true, imports: [
266
+ CommonModule,
267
+ DragDropModule,
268
+ ButtonModule,
269
+ CardModule,
270
+ TagModule,
271
+ TooltipModule
272
+ ], template: "<div class=\"kanban-board\">\n <!-- Scroll hint arrows -->\n <div class=\"kanban-scroll-controls\" *ngIf=\"showScrollHints && hasHorizontalScroll\">\n <button\n *ngIf=\"scrollPosition !== 'start'\"\n pButton\n type=\"button\"\n icon=\"pi pi-chevron-left\"\n [rounded]=\"true\"\n class=\"scroll-hint scroll-hint-left\"\n (click)=\"scrollLeft()\">\n </button>\n <button\n *ngIf=\"scrollPosition !== 'end'\"\n pButton\n type=\"button\"\n icon=\"pi pi-chevron-right\"\n [rounded]=\"true\"\n class=\"scroll-hint scroll-hint-right\"\n (click)=\"scrollRight()\">\n </button>\n </div>\n\n <!-- Scrollable columns container -->\n <div class=\"kanban-columns\" #scrollContainer (scroll)=\"onScroll()\">\n <div \n *ngFor=\"let column of columns\" \n class=\"kanban-column\"\n [style]=\"getColumnStyle(column)\">\n \n <!-- Column Header -->\n <div class=\"column-header\">\n <!-- Custom header template -->\n <ng-container *ngIf=\"columnHeaderTemplate; else defaultColumnHeader\"\n [ngTemplateOutlet]=\"columnHeaderTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: column }\">\n </ng-container>\n\n <ng-template #defaultColumnHeader>\n <div class=\"column-title\">\n <i *ngIf=\"column.icon\" [class]=\"'pi ' + column.icon\"></i>\n <span>{{ column.title }}</span>\n <span class=\"item-count\">{{ column.items.length }}</span>\n </div>\n <div class=\"column-actions\">\n <button \n *ngIf=\"showAddButton\"\n pButton \n type=\"button\" \n icon=\"pi pi-plus\" \n class=\"p-button-text p-button-sm p-button-rounded\"\n (click)=\"onAddItem(column)\"\n [pTooltip]=\"'Add item'\"\n tooltipPosition=\"top\">\n </button>\n <button \n *ngIf=\"showEditButton\"\n pButton \n type=\"button\" \n icon=\"pi pi-pencil\" \n class=\"p-button-text p-button-sm p-button-rounded\"\n (click)=\"onEditColumn(column)\"\n [pTooltip]=\"'Edit column'\"\n tooltipPosition=\"top\">\n </button>\n <button \n *ngIf=\"canShowDeleteButton(column)\"\n pButton \n type=\"button\" \n icon=\"pi pi-trash\" \n class=\"p-button-text p-button-sm p-button-rounded p-button-danger\"\n (click)=\"onDeleteColumn(column)\"\n [pTooltip]=\"'Delete column'\"\n tooltipPosition=\"top\">\n </button>\n </div>\n </ng-template>\n </div>\n\n <!-- Column Content -->\n <div \n class=\"column-content\"\n cdkDropList\n [id]=\"column.id\"\n [cdkDropListData]=\"column.items\"\n [cdkDropListConnectedTo]=\"columnIds\"\n (cdkDropListDropped)=\"onDrop($event, column)\">\n \n <!-- Items -->\n <div \n *ngFor=\"let item of column.items\"\n class=\"kanban-item\"\n [class.kanban-item--selected]=\"selectable && isSelected(item)\"\n cdkDrag\n [cdkDragDisabled]=\"!allowDrag\"\n (cdkDragMoved)=\"onDragMoved($event)\"\n (cdkDragEnded)=\"onDragEnded()\"\n (click)=\"onItemClick(item)\">\n \n <!-- Custom item template with selection context -->\n <ng-container *ngIf=\"itemTemplate; else defaultItem\"\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"getItemContext(item, column)\">\n </ng-container>\n\n <ng-template #defaultItem>\n <div class=\"item-content\">\n <div class=\"item-title\">{{ item.title }}</div>\n <div *ngIf=\"item.description\" class=\"item-description\">\n {{ item.description }}\n </div>\n <div *ngIf=\"item.tags && item.tags.length > 0\" class=\"item-tags\">\n <p-tag \n *ngFor=\"let tag of item.tags\"\n [value]=\"tag.label\"\n [severity]=\"tag.severity || 'secondary'\"\n styleClass=\"item-tag\">\n </p-tag>\n </div>\n </div>\n </ng-template>\n\n <!-- Drag Placeholder -->\n <div class=\"item-placeholder\" *cdkDragPlaceholder></div>\n </div>\n\n <!-- Empty State -->\n <div *ngIf=\"column.items.length === 0\" class=\"empty-column\">\n <i class=\"pi pi-inbox\"></i>\n <p>{{ emptyMessage }}</p>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".kanban-board{position:relative;width:100%;height:100%;padding:1rem}.kanban-board .kanban-scroll-controls{position:absolute;inset:0;pointer-events:none;z-index:10}.kanban-board .kanban-scroll-controls .scroll-hint{position:absolute;top:50%;transform:translateY(-50%);pointer-events:auto;box-shadow:0 4px 12px #00000026;transition:all .3s ease}.kanban-board .kanban-scroll-controls .scroll-hint:hover{transform:translateY(-50%) scale(1.1);box-shadow:0 6px 16px #0003}.kanban-board .kanban-scroll-controls .scroll-hint.scroll-hint-left{left:.5rem}.kanban-board .kanban-scroll-controls .scroll-hint.scroll-hint-right{right:.5rem}.kanban-board .kanban-columns{display:flex;gap:1rem;min-height:500px;padding-bottom:1rem;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin}.kanban-board .kanban-columns::-webkit-scrollbar{height:6px}.kanban-board .kanban-columns::-webkit-scrollbar-track{background:transparent}.kanban-board .kanban-columns::-webkit-scrollbar-thumb{background:#94a3b84d;border-radius:3px}.kanban-board .kanban-columns::-webkit-scrollbar-thumb:hover{background:#94a3b880}.kanban-board .kanban-column{flex-shrink:0;display:flex;flex-direction:column;background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a}.kanban-board .kanban-column .column-header{display:flex;justify-content:space-between;align-items:center;padding:1rem;border-bottom:1px solid #e9ecef;background:#fafbfc;border-radius:8px 8px 0 0}.kanban-board .kanban-column .column-header .column-title{display:flex;align-items:center;gap:.5rem;font-weight:600;color:#2c3e50;font-size:.95rem}.kanban-board .kanban-column .column-header .column-title .pi{font-size:.875rem;color:#6c757d}.kanban-board .kanban-column .column-header .column-title .item-count{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 .5rem;background:#e9ecef;border-radius:12px;font-size:.75rem;font-weight:600;color:#495057}.kanban-board .kanban-column .column-header .column-actions{display:flex;gap:.25rem}.kanban-board .kanban-column .column-content{flex:1;padding:.75rem;overflow-y:auto;min-height:200px}.kanban-board .kanban-column .column-content .kanban-item{background:#fff;border:1px solid #e9ecef;border-radius:6px;padding:.875rem;margin-bottom:.75rem;cursor:pointer;transition:all .2s ease;box-shadow:0 1px 2px #0000000d}.kanban-board .kanban-column .column-content .kanban-item:hover{border-color:#007bff;box-shadow:0 2px 8px #007bff26;transform:translateY(-1px)}.kanban-board .kanban-column .column-content .kanban-item:last-child{margin-bottom:0}.kanban-board .kanban-column .column-content .kanban-item.kanban-item--selected{border-left:3px solid #007bff;background:#f0f7ff}.kanban-board .kanban-column .column-content .kanban-item .item-content .item-title{font-weight:500;color:#2c3e50;font-size:.875rem;margin-bottom:.5rem;line-height:1.4}.kanban-board .kanban-column .column-content .kanban-item .item-content .item-description{font-size:.8rem;color:#6c757d;margin-bottom:.5rem;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.kanban-board .kanban-column .column-content .kanban-item .item-content .item-tags{display:flex;flex-wrap:wrap;gap:.375rem;margin-top:.5rem}.kanban-board .kanban-column .column-content .kanban-item .item-content .item-tags ::ng-deep .item-tag{font-size:.7rem;padding:.25rem .5rem}.kanban-board .kanban-column .column-content .kanban-item .item-placeholder{background:#e9ecef;border:2px dashed #adb5bd;border-radius:6px;min-height:80px}.kanban-board .kanban-column .column-content .empty-column{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem 1rem;color:#adb5bd;text-align:center}.kanban-board .kanban-column .column-content .empty-column .pi{font-size:2.5rem;margin-bottom:.5rem;opacity:.5}.kanban-board .kanban-column .column-content .empty-column p{font-size:.875rem;margin:0}::ng-deep .cdk-drag-preview{background:#fff;border:1px solid #007bff;border-radius:6px;padding:.875rem;box-shadow:0 4px 12px #007bff4d;opacity:.9;cursor:grabbing}::ng-deep .cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}::ng-deep .cdk-drop-list-dragging .kanban-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}@media (max-width: 768px){.kanban-board .kanban-columns{flex-direction:column}.kanban-board .kanban-column{min-width:100%!important;max-width:100%!important}.kanban-board .kanban-scroll-controls{display:none}}\n"] }]
273
+ }], ctorParameters: () => [{ type: i0.NgZone }], propDecorators: { columns: [{
274
+ type: Input
275
+ }], allowReorder: [{
276
+ type: Input
277
+ }], allowDrag: [{
278
+ type: Input
279
+ }], showAddButton: [{
280
+ type: Input
281
+ }], showEditButton: [{
282
+ type: Input
283
+ }], showDeleteButton: [{
284
+ type: Input
285
+ }], canDeleteColumn: [{
286
+ type: Input
287
+ }], emptyMessage: [{
288
+ type: Input
289
+ }], minColumnWidth: [{
290
+ type: Input
291
+ }], maxColumnWidth: [{
292
+ type: Input
293
+ }], showScrollHints: [{
294
+ type: Input
295
+ }], selectable: [{
296
+ type: Input
297
+ }], itemMoved: [{
298
+ type: Output
299
+ }], itemClicked: [{
300
+ type: Output
301
+ }], addItem: [{
302
+ type: Output
303
+ }], editColumn: [{
304
+ type: Output
305
+ }], deleteColumn: [{
306
+ type: Output
307
+ }], selectionChange: [{
308
+ type: Output
309
+ }], columnHeaderTemplate: [{
310
+ type: ContentChild,
311
+ args: ['columnHeaderTemplate']
312
+ }], itemTemplate: [{
313
+ type: ContentChild,
314
+ args: ['itemTemplate']
315
+ }], scrollContainer: [{
316
+ type: ViewChild,
317
+ args: ['scrollContainer', { static: false }]
318
+ }] } });
319
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2FuYmFuLWJvYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMtYWkvc3JjL2xpYi9jb21wb25lbnRzL2thbmJhbi1ib2FyZC9rYW5iYW4tYm9hcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy1haS9zcmMvbGliL2NvbXBvbmVudHMva2FuYmFuLWJvYXJkL2thbmJhbi1ib2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFVLFlBQVksRUFDNUQsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQTRCLGNBQWMsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0SCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7OztBQWdEaEQsTUFBTSxPQUFPLG9CQUFvQjtJQXNEWDtJQXJEWCxPQUFPLEdBQW1CLEVBQUUsQ0FBQztJQUM3QixZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDakIsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUN0QixjQUFjLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLGdCQUFnQixHQUFHLEtBQUssQ0FBQztJQUN6QixlQUFlLENBQXFDO0lBQ3BELFlBQVksR0FBRyxVQUFVLENB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QWRoQyxTQUFTOytCQUNFLGtCQUFrQixjQUNoQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixjQUFjO3dCQUNkLFlBQVk7d0JBQ1osVUFBVTt3QkFDVixTQUFTO3dCQUNULGFBQWE7cUJBQ2Q7MkVBS1EsT0FBTztzQkFBZixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBR0csZUFBZTtzQkFBdkIsS0FBSztnQkFHRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVJLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFHRyxlQUFlO3NCQUF4QixNQUFNO2dCQUcrQixvQkFBb0I7c0JBQXpELFlBQVk7dUJBQUMsc0JBQXNCO2dCQU1OLFlBQVk7c0JBQXpDLFlBQVk7dUJBQUMsY0FBYztnQkFFcUIsZUFBZTtzQkFBL0QsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBDb250ZW50Q2hpbGQsIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgTmdab25lLCBIb3N0TGlzdGVuZXJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIENka0RyYWdNb3ZlLCBEcmFnRHJvcE1vZHVsZSwgbW92ZUl0ZW1JbkFycmF5LCB0cmFuc2ZlckFycmF5SXRlbSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuaW1wb3J0IHsgQ2FyZE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY2FyZCc7XG5pbXBvcnQgeyBUYWdNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RhZyc7XG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b29sdGlwJztcblxuZXhwb3J0IGludGVyZmFjZSBLYW5iYW5Db2x1bW4ge1xuICBpZDogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBjb2xvcj86IHN0cmluZztcbiAgaWNvbj86IHN0cmluZztcbiAgaXRlbXM6IEthbmJhbkl0ZW1bXTtcbiAgbWF4SXRlbXM/OiBudW1iZXI7XG4gIGFsbG93RHJvcD86IGJvb2xlYW47XG4gIG1ldGFkYXRhPzogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEthbmJhbkl0ZW0ge1xuICBpZDogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgdGFncz86IEthbmJhblRhZ1tdO1xuICBtZXRhZGF0YT86IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLYW5iYW5UYWcge1xuICBsYWJlbDogc3RyaW5nO1xuICBzZXZlcml0eT86ICdzdWNjZXNzJyB8ICdpbmZvJyB8ICd3YXJuJyB8ICdkYW5nZXInIHwgJ3NlY29uZGFyeScgfCAnY29udHJhc3QnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEthbmJhbkRyb3BFdmVudCB7XG4gIGl0ZW06IEthbmJhbkl0ZW07XG4gIHByZXZpb3VzQ29sdW1uOiBLYW5iYW5Db2x1bW47XG4gIGN1cnJlbnRDb2x1bW46IEthbmJhbkNvbHVtbjtcbiAgcHJldmlvdXNJbmRleDogbnVtYmVyO1xuICBjdXJyZW50SW5kZXg6IG51bWJlcjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2lhLWthbmJhbi1ib2FyZCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRHJhZ0Ryb3BNb2R1bGUsXG4gICAgQnV0dG9uTW9kdWxlLFxuICAgIENhcmRNb2R1bGUsXG4gICAgVGFnTW9kdWxlLFxuICAgIFRvb2x0aXBNb2R1bGVcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2thbmJhbi1ib2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2thbmJhbi1ib2FyZC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEthbmJhbkJvYXJkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBjb2x1bW5zOiBLYW5iYW5Db2x1bW5bXSA9IFtdO1xuICBASW5wdXQoKSBhbGxvd1Jlb3JkZXIgPSB0cnVlO1xuICBASW5wdXQoKSBhbGxvd0RyYWcgPSB0cnVlO1xuICBASW5wdXQoKSBzaG93QWRkQnV0dG9uID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dFZGl0QnV0dG9uID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dEZWxldGVCdXR0b24gPSBmYWxzZTtcbiAgQElucHV0KCkgY2FuRGVsZXRlQ29sdW1uPzogKGNvbHVtbjogS2FuYmFuQ29sdW1uKSA9PiBib29sZWFuO1xuICBASW5wdXQoKSBlbXB0eU1lc3NhZ2UgPSAnTm8gaXRlbXMnO1xuICBASW5wdXQoKSBtaW5Db2x1bW5XaWR0aCA9ICcyODBweCc7XG4gIEBJbnB1dCgpIG1heENvbHVtbldpZHRoID0gJzM1MHB4JztcblxuICAvKiogU2hvdyBzY3JvbGwgaGludCBhcnJvd3Mgd2hlbiBjb2x1bW5zIG92ZXJmbG93IGhvcml6b250YWxseS4gKi9cbiAgQElucHV0KCkgc2hvd1Njcm9sbEhpbnRzID0gdHJ1ZTtcblxuICAvKiogRW5hYmxlIGl0ZW0gc2VsZWN0aW9uIG1vZGUuIEFkZHMgc2VsZWN0ZWQgc3RhdGUgbWFuYWdlbWVudCBhbmQgQ1NTIGNsYXNzIG9uIGNhcmRzLiAqL1xuICBASW5wdXQoKSBzZWxlY3RhYmxlID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIGl0ZW1Nb3ZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8S2FuYmFuRHJvcEV2ZW50PigpO1xuICBAT3V0cHV0KCkgaXRlbUNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEthbmJhbkl0ZW0+KCk7XG4gIEBPdXRwdXQoKSBhZGRJdGVtID0gbmV3IEV2ZW50RW1pdHRlcjxLYW5iYW5Db2x1bW4+KCk7XG4gIEBPdXRwdXQoKSBlZGl0Q29sdW1uID0gbmV3IEV2ZW50RW1pdHRlcjxLYW5iYW5Db2x1bW4+KCk7XG4gIEBPdXRwdXQoKSBkZWxldGVDb2x1bW4gPSBuZXcgRXZlbnRFbWl0dGVyPEthbmJhbkNvbHVtbj4oKTtcblxuICAvKiogRW1pdHRlZCB3aGVuIHNlbGVjdGlvbiBjaGFuZ2VzLiBQYXlsb2FkIGlzIHRoZSBmdWxsIGFycmF5IG9mIHNlbGVjdGVkIEthbmJhbkl0ZW1zLiAqL1xuICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxLYW5iYW5JdGVtW10+KCk7XG5cbiAgLyoqIEN1c3RvbSB0ZW1wbGF0ZSBmb3IgdGhlIGNvbHVtbiBoZWFkZXIuIENvbnRleHQ6IHsgJGltcGxpY2l0OiBLYW5iYW5Db2x1bW4gfSAqL1xuICBAQ29udGVudENoaWxkKCdjb2x1bW5IZWFkZXJUZW1wbGF0ZScpIGNvbHVtbkhlYWRlclRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvKipcbiAgICogQ3VzdG9tIHRlbXBsYXRlIGZvciBlYWNoIGl0ZW0gY2FyZC5cbiAgICogQ29udGV4dDogeyAkaW1wbGljaXQ6IEthbmJhbkl0ZW0sIGNvbHVtbjogS2FuYmFuQ29sdW1uLCBzZWxlY3RlZDogYm9vbGVhbiwgdG9nZ2xlOiAoKSA9PiB2b2lkIH1cbiAgICovXG4gIEBDb250ZW50Q2hpbGQoJ2l0ZW1UZW1wbGF0ZScpIGl0ZW1UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQFZpZXdDaGlsZCgnc2Nyb2xsQ29udGFpbmVyJywgeyBzdGF0aWM6IGZhbHNlIH0pIHNjcm9sbENvbnRhaW5lcj86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIGNvbHVtbklkczogc3RyaW5nW10gPSBbXTtcblxuICAvLyBTY3JvbGwgc3RhdGVcbiAgaGFzSG9yaXpvbnRhbFNjcm9sbCA9IGZhbHNlO1xuICBzY3JvbGxQb3NpdGlvbjogJ3N0YXJ0JyB8ICdtaWRkbGUnIHwgJ2VuZCcgPSAnc3RhcnQnO1xuXG4gIC8vIFNlbGVjdGlvbiBzdGF0ZVxuICBwcml2YXRlIHNlbGVjdGVkSWRzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgLy8gQXV0by1zY3JvbGwgZHVyaW5nIGRyYWdcbiAgcHJpdmF0ZSBhdXRvU2Nyb2xsQWN0aXZlID0gZmFsc2U7XG4gIHByaXZhdGUgYXV0b1Njcm9sbFNwZWVkID0gMDtcbiAgcHJpdmF0ZSBhdXRvU2Nyb2xsUmFmOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZUNvbHVtbklkcygpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNob3dTY3JvbGxIaW50cykge1xuICAgICAgdGhpcy5jaGVja1Njcm9sbCgpO1xuICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKCgpID0+IHtcbiAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5jaGVja1Njcm9sbCgpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0aGlzLnNjcm9sbENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgIHRoaXMuc3RvcEF1dG9TY3JvbGwoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlQ29sdW1uSWRzKCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmNoZWNrU2Nyb2xsKCksIDUwKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ29sdW1uSWRzKCk6IHZvaWQge1xuICAgIHRoaXMuY29sdW1uSWRzID0gdGhpcy5jb2x1bW5zLm1hcChjb2wgPT4gY29sLmlkKTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09IFNFTEVDVElPTiA9PT09PT09PT09PT09PT09PT09PVxuXG4gIGlzU2VsZWN0ZWQoaXRlbTogS2FuYmFuSXRlbSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSWRzLmhhcyhpdGVtLmlkKTtcbiAgfVxuXG4gIHRvZ2dsZVNlbGVjdGlvbihpdGVtOiBLYW5iYW5JdGVtKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJZHMuaGFzKGl0ZW0uaWQpKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSWRzLmRlbGV0ZShpdGVtLmlkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZElkcy5hZGQoaXRlbS5pZCk7XG4gICAgfVxuICAgIHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZSgpO1xuICB9XG5cbiAgLyoqIENsZWFyIGFsbCBzZWxlY3Rpb25zLiBDYW4gYmUgY2FsbGVkIGV4dGVybmFsbHkgdmlhIFZpZXdDaGlsZC4gKi9cbiAgY2xlYXJTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZElkcy5jbGVhcigpO1xuICAgIHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZSgpO1xuICB9XG5cbiAgLyoqIEdldCBjdXJyZW50IHNlbGVjdGVkIGl0ZW1zLiAqL1xuICBnZXRTZWxlY3RlZEl0ZW1zKCk6IEthbmJhbkl0ZW1bXSB7XG4gICAgY29uc3QgYWxsSXRlbXMgPSB0aGlzLmNvbHVtbnMuZmxhdE1hcChjb2wgPT4gY29sLml0ZW1zKTtcbiAgICByZXR1cm4gYWxsSXRlbXMuZmlsdGVyKGl0ZW0gPT4gdGhpcy5zZWxlY3RlZElkcy5oYXMoaXRlbS5pZCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0U2VsZWN0aW9uQ2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5nZXRTZWxlY3RlZEl0ZW1zKCkpO1xuICB9XG5cbiAgLyoqIFJldHVybnMgdGhlIHRlbXBsYXRlIGNvbnRleHQgZm9yIGFuIGl0ZW0gKHVzZWQgaW4gdGhlIHRlbXBsYXRlKS4gKi9cbiAgZ2V0SXRlbUNvbnRleHQoaXRlbTogS2FuYmFuSXRlbSwgY29sdW1uOiBLYW5iYW5Db2x1bW4pOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICAkaW1wbGljaXQ6IGl0ZW0sXG4gICAgICBjb2x1bW4sXG4gICAgICBzZWxlY3RlZDogdGhpcy5pc1NlbGVjdGVkKGl0ZW0pLFxuICAgICAgdG9nZ2xlOiAoKSA9PiB0aGlzLnRvZ2dsZVNlbGVjdGlvbihpdGVtKVxuICAgIH07XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PSBTQ1JPTEwgPT09PT09PT09PT09PT09PT09PT1cblxuICBvblNjcm9sbCgpOiB2b2lkIHtcbiAgICB0aGlzLmNoZWNrU2Nyb2xsKCk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrU2Nyb2xsKCk6IHZvaWQge1xuICAgIGNvbnN0IGVsID0gdGhpcy5zY3JvbGxDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKCFlbCkgcmV0dXJuO1xuXG4gICAgY29uc3QgeyBzY3JvbGxMZWZ0LCBzY3JvbGxXaWR0aCwgY2xpZW50V2lkdGggfSA9IGVsO1xuICAgIHRoaXMuaGFzSG9yaXpvbnRhbFNjcm9sbCA9IHNjcm9sbFdpZHRoID4gY2xpZW50V2lkdGggKyAyO1xuXG4gICAgaWYgKHNjcm9sbExlZnQgPD0gMikge1xuICAgICAgdGhpcy5zY3JvbGxQb3NpdGlvbiA9ICdzdGFydCc7XG4gICAgfSBlbHNlIGlmIChzY3JvbGxMZWZ0ICsgY2xpZW50V2lkdGggPj0gc2Nyb2xsV2lkdGggLSAyKSB7XG4gICAgICB0aGlzLnNjcm9sbFBvc2l0aW9uID0gJ2VuZCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2Nyb2xsUG9zaXRpb24gPSAnbWlkZGxlJztcbiAgICB9XG4gIH1cblxuICBzY3JvbGxMZWZ0KCk6IHZvaWQge1xuICAgIGNvbnN0IGVsID0gdGhpcy5zY3JvbGxDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKCFlbCkgcmV0dXJuO1xuICAgIGNvbnN0IGNvbHVtbiA9IGVsLnF1ZXJ5U2VsZWN0b3IoJy5rYW5iYW4tY29sdW1uJykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgY29uc3Qgc2Nyb2xsQW1vdW50ID0gY29sdW1uID8gY29sdW1uLm9mZnNldFdpZHRoICsgMTYgOiAzMDA7XG4gICAgZWwuc2Nyb2xsQnkoeyBsZWZ0OiAtc2Nyb2xsQW1vdW50LCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gIH1cblxuICBzY3JvbGxSaWdodCgpOiB2b2lkIHtcbiAgICBjb25zdCBlbCA9IHRoaXMuc2Nyb2xsQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50O1xuICAgIGlmICghZWwpIHJldHVybjtcbiAgICBjb25zdCBjb2x1bW4gPSBlbC5xdWVyeVNlbGVjdG9yKCcua2FuYmFuLWNvbHVtbicpIGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IHNjcm9sbEFtb3VudCA9IGNvbHVtbiA/IGNvbHVtbi5vZmZzZXRXaWR0aCArIDE2IDogMzAwO1xuICAgIGVsLnNjcm9sbEJ5KHsgbGVmdDogc2Nyb2xsQW1vdW50LCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PSBBVVRPLVNDUk9MTCBEVVJJTkcgRFJBRyA9PT09PT09PT09PT09PT09PT09PVxuXG4gIG9uRHJhZ01vdmVkKGV2ZW50OiBDZGtEcmFnTW92ZSk6IHZvaWQge1xuICAgIGNvbnN0IGVsID0gdGhpcy5zY3JvbGxDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKCFlbCkgcmV0dXJuO1xuXG4gICAgY29uc3QgcmVjdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHBvaW50ZXJYID0gZXZlbnQucG9pbnRlclBvc2l0aW9uLng7XG4gICAgY29uc3QgZWRnZVpvbmUgPSA4MDsgLy8gcGl4ZWxzIGZyb20gZWRnZSB0byB0cmlnZ2VyIHNjcm9sbFxuXG4gICAgaWYgKHBvaW50ZXJYIDwgcmVjdC5sZWZ0ICsgZWRnZVpvbmUpIHtcbiAgICAgIC8vIE5lYXIgbGVmdCBlZGdlXG4gICAgICBjb25zdCBwcm94aW1pdHkgPSAxIC0gKHBvaW50ZXJYIC0gcmVjdC5sZWZ0KSAvIGVkZ2Vab25lO1xuICAgICAgdGhpcy5hdXRvU2Nyb2xsU3BlZWQgPSAtTWF0aC5tYXgoMywgcHJveGltaXR5ICogMTUpO1xuICAgICAgdGhpcy5zdGFydEF1dG9TY3JvbGwoKTtcbiAgICB9IGVsc2UgaWYgKHBvaW50ZXJYID4gcmVjdC5yaWdodCAtIGVkZ2Vab25lKSB7XG4gICAgICAvLyBOZWFyIHJpZ2h0IGVkZ2VcbiAgICAgIGNvbnN0IHByb3hpbWl0eSA9IDEgLSAocmVjdC5yaWdodCAtIHBvaW50ZXJYKSAvIGVkZ2Vab25lO1xuICAgICAgdGhpcy5hdXRvU2Nyb2xsU3BlZWQgPSBNYXRoLm1heCgzLCBwcm94aW1pdHkgKiAxNSk7XG4gICAgICB0aGlzLnN0YXJ0QXV0b1Njcm9sbCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0b3BBdXRvU2Nyb2xsKCk7XG4gICAgfVxuICB9XG5cbiAgb25EcmFnRW5kZWQoKTogdm9pZCB7XG4gICAgdGhpcy5zdG9wQXV0b1Njcm9sbCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFydEF1dG9TY3JvbGwoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYXV0b1Njcm9sbEFjdGl2ZSkgcmV0dXJuO1xuICAgIHRoaXMuYXV0b1Njcm9sbEFjdGl2ZSA9IHRydWU7XG4gICAgdGhpcy5ydW5BdXRvU2Nyb2xsKCk7XG4gIH1cblxuICBwcml2YXRlIHN0b3BBdXRvU2Nyb2xsKCk6IHZvaWQge1xuICAgIHRoaXMuYXV0b1Njcm9sbEFjdGl2ZSA9IGZhbHNlO1xuICAgIHRoaXMuYXV0b1Njcm9sbFNwZWVkID0gMDtcbiAgICBpZiAodGhpcy5hdXRvU2Nyb2xsUmFmKSB7XG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLmF1dG9TY3JvbGxSYWYpO1xuICAgICAgdGhpcy5hdXRvU2Nyb2xsUmFmID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJ1bkF1dG9TY3JvbGwoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmF1dG9TY3JvbGxBY3RpdmUpIHJldHVybjtcbiAgICBjb25zdCBlbCA9IHRoaXMuc2Nyb2xsQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50O1xuICAgIGlmIChlbCkge1xuICAgICAgZWwuc2Nyb2xsTGVmdCArPSB0aGlzLmF1dG9TY3JvbGxTcGVlZDtcbiAgICB9XG4gICAgdGhpcy5hdXRvU2Nyb2xsUmFmID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHRoaXMucnVuQXV0b1Njcm9sbCgpKTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09IERSQUcgJiBEUk9QID09PT09PT09PT09PT09PT09PT09XG5cbiAgb25Ecm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxLYW5iYW5JdGVtW10+LCBjb2x1bW46IEthbmJhbkNvbHVtbik6IHZvaWQge1xuICAgIGlmICghdGhpcy5hbGxvd0RyYWcpIHJldHVybjtcblxuICAgIGNvbnN0IHByZXZpb3VzQ29sdW1uID0gdGhpcy5jb2x1bW5zLmZpbmQoY29sID0+IGNvbC5pZCA9PT0gZXZlbnQucHJldmlvdXNDb250YWluZXIuaWQpO1xuXG4gICAgaWYgKGV2ZW50LnByZXZpb3VzQ29udGFpbmVyID09PSBldmVudC5jb250YWluZXIpIHtcbiAgICAgIG1vdmVJdGVtSW5BcnJheShldmVudC5jb250YWluZXIuZGF0YSwgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGNvbHVtbi5hbGxvd0Ryb3AgPT09IGZhbHNlKSByZXR1cm47XG4gICAgICBpZiAoY29sdW1uLm1heEl0ZW1zICYmIGV2ZW50LmNvbnRhaW5lci5kYXRhLmxlbmd0aCA+PSBjb2x1bW4ubWF4SXRlbXMpIHJldHVybjtcblxuICAgICAgY29uc3QgaXRlbSA9IGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGFbZXZlbnQucHJldmlvdXNJbmRleF07XG5cbiAgICAgIHRyYW5zZmVyQXJyYXlJdGVtKFxuICAgICAgICBldmVudC5wcmV2aW91c0NvbnRhaW5lci5kYXRhLFxuICAgICAgICBldmVudC5jb250YWluZXIuZGF0YSxcbiAgICAgICAgZXZlbnQucHJldmlvdXNJbmRleCxcbiAgICAgICAgZXZlbnQuY3VycmVudEluZGV4XG4gICAgICApO1xuXG4gICAgICBpZiAocHJldmlvdXNDb2x1bW4pIHtcbiAgICAgICAgdGhpcy5pdGVtTW92ZWQuZW1pdCh7XG4gICAgICAgICAgaXRlbSxcbiAgICAgICAgICBwcmV2aW91c0NvbHVtbixcbiAgICAgICAgICBjdXJyZW50Q29sdW1uOiBjb2x1bW4sXG4gICAgICAgICAgcHJldmlvdXNJbmRleDogZXZlbnQucHJldmlvdXNJbmRleCxcbiAgICAgICAgICBjdXJyZW50SW5kZXg6IGV2ZW50LmN1cnJlbnRJbmRleFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvbkl0ZW1DbGljayhpdGVtOiBLYW5iYW5JdGVtKTogdm9pZCB7XG4gICAgdGhpcy5pdGVtQ2xpY2tlZC5lbWl0KGl0ZW0pO1xuICB9XG5cbiAgb25BZGRJdGVtKGNvbHVtbjogS2FuYmFuQ29sdW1uKTogdm9pZCB7XG4gICAgdGhpcy5hZGRJdGVtLmVtaXQoY29sdW1uKTtcbiAgfVxuXG4gIG9uRWRpdENvbHVtbihjb2x1bW46IEthbmJhbkNvbHVtbik6IHZvaWQge1xuICAgIHRoaXMuZWRpdENvbHVtbi5lbWl0KGNvbHVtbik7XG4gIH1cblxuICBvbkRlbGV0ZUNvbHVtbihjb2x1bW46IEthbmJhbkNvbHVtbik6IHZvaWQge1xuICAgIHRoaXMuZGVsZXRlQ29sdW1uLmVtaXQoY29sdW1uKTtcbiAgfVxuXG4gIGNhblNob3dEZWxldGVCdXR0b24oY29sdW1uOiBLYW5iYW5Db2x1bW4pOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuc2hvd0RlbGV0ZUJ1dHRvbikgcmV0dXJuIGZhbHNlO1xuICAgIGlmICh0aGlzLmNhbkRlbGV0ZUNvbHVtbikge1xuICAgICAgcmV0dXJuIHRoaXMuY2FuRGVsZXRlQ29sdW1uKGNvbHVtbik7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgZ2V0Q29sdW1uU3R5bGUoY29sdW1uOiBLYW5iYW5Db2x1bW4pOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICAnbWluLXdpZHRoJzogdGhpcy5taW5Db2x1bW5XaWR0aCxcbiAgICAgICdtYXgtd2lkdGgnOiB0aGlzLm1heENvbHVtbldpZHRoLFxuICAgICAgJ2JvcmRlci10b3AnOiBjb2x1bW4uY29sb3IgPyBgM3B4IHNvbGlkICR7Y29sdW1uLmNvbG9yfWAgOiAnM3B4IHNvbGlkICNkZWUyZTYnXG4gICAgfTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImthbmJhbi1ib2FyZFwiPlxuICA8IS0tIFNjcm9sbCBoaW50IGFycm93cyAtLT5cbiAgPGRpdiBjbGFzcz1cImthbmJhbi1zY3JvbGwtY29udHJvbHNcIiAqbmdJZj1cInNob3dTY3JvbGxIaW50cyAmJiBoYXNIb3Jpem9udGFsU2Nyb2xsXCI+XG4gICAgPGJ1dHRvblxuICAgICAgKm5nSWY9XCJzY3JvbGxQb3NpdGlvbiAhPT0gJ3N0YXJ0J1wiXG4gICAgICBwQnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGljb249XCJwaSBwaS1jaGV2cm9uLWxlZnRcIlxuICAgICAgW3JvdW5kZWRdPVwidHJ1ZVwiXG4gICAgICBjbGFzcz1cInNjcm9sbC1oaW50IHNjcm9sbC1oaW50LWxlZnRcIlxuICAgICAgKGNsaWNrKT1cInNjcm9sbExlZnQoKVwiPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwic2Nyb2xsUG9zaXRpb24gIT09ICdlbmQnXCJcbiAgICAgIHBCdXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgaWNvbj1cInBpIHBpLWNoZXZyb24tcmlnaHRcIlxuICAgICAgW3JvdW5kZWRdPVwidHJ1ZVwiXG4gICAgICBjbGFzcz1cInNjcm9sbC1oaW50IHNjcm9sbC1oaW50LXJpZ2h0XCJcbiAgICAgIChjbGljayk9XCJzY3JvbGxSaWdodCgpXCI+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuXG4gIDwhLS0gU2Nyb2xsYWJsZSBjb2x1bW5zIGNvbnRhaW5lciAtLT5cbiAgPGRpdiBjbGFzcz1cImthbmJhbi1jb2x1bW5zXCIgI3Njcm9sbENvbnRhaW5lciAoc2Nyb2xsKT1cIm9uU2Nyb2xsKClcIj5cbiAgICA8ZGl2IFxuICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zXCIgXG4gICAgICBjbGFzcz1cImthbmJhbi1jb2x1bW5cIlxuICAgICAgW3N0eWxlXT1cImdldENvbHVtblN0eWxlKGNvbHVtbilcIj5cbiAgICAgIFxuICAgICAgPCEtLSBDb2x1bW4gSGVhZGVyIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbi1oZWFkZXJcIj5cbiAgICAgICAgPCEtLSBDdXN0b20gaGVhZGVyIHRlbXBsYXRlIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uSGVhZGVyVGVtcGxhdGU7IGVsc2UgZGVmYXVsdENvbHVtbkhlYWRlclwiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29sdW1uSGVhZGVyVGVtcGxhdGVcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29sdW1uIH1cIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Q29sdW1uSGVhZGVyPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4tdGl0bGVcIj5cbiAgICAgICAgICAgIDxpICpuZ0lmPVwiY29sdW1uLmljb25cIiBbY2xhc3NdPVwiJ3BpICcgKyBjb2x1bW4uaWNvblwiPjwvaT5cbiAgICAgICAgICAgIDxzcGFuPnt7IGNvbHVtbi50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaXRlbS1jb3VudFwiPnt7IGNvbHVtbi5pdGVtcy5sZW5ndGggfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbi1hY3Rpb25zXCI+XG4gICAgICAgICAgICA8YnV0dG9uIFxuICAgICAgICAgICAgICAqbmdJZj1cInNob3dBZGRCdXR0b25cIlxuICAgICAgICAgICAgICBwQnV0dG9uIFxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgXG4gICAgICAgICAgICAgIGljb249XCJwaSBwaS1wbHVzXCIgXG4gICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tdGV4dCBwLWJ1dHRvbi1zbSBwLWJ1dHRvbi1yb3VuZGVkXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQWRkSXRlbShjb2x1bW4pXCJcbiAgICAgICAgICAgICAgW3BUb29sdGlwXT1cIidBZGQgaXRlbSdcIlxuICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBcbiAgICAgICAgICAgICAgKm5nSWY9XCJzaG93RWRpdEJ1dHRvblwiXG4gICAgICAgICAgICAgIHBCdXR0b24gXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIiBcbiAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLXBlbmNpbFwiIFxuICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24tc20gcC1idXR0b24tcm91bmRlZFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkVkaXRDb2x1bW4oY29sdW1uKVwiXG4gICAgICAgICAgICAgIFtwVG9vbHRpcF09XCInRWRpdCBjb2x1bW4nXCJcbiAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCI+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gXG4gICAgICAgICAgICAgICpuZ0lmPVwiY2FuU2hvd0RlbGV0ZUJ1dHRvbihjb2x1bW4pXCJcbiAgICAgICAgICAgICAgcEJ1dHRvbiBcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiIFxuICAgICAgICAgICAgICBpY29uPVwicGkgcGktdHJhc2hcIiBcbiAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXNtIHAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tZGFuZ2VyXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGVsZXRlQ29sdW1uKGNvbHVtbilcIlxuICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiJ0RlbGV0ZSBjb2x1bW4nXCJcbiAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCI+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIENvbHVtbiBDb250ZW50IC0tPlxuICAgICAgPGRpdiBcbiAgICAgICAgY2xhc3M9XCJjb2x1bW4tY29udGVudFwiXG4gICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgIFtpZF09XCJjb2x1bW4uaWRcIlxuICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cImNvbHVtbi5pdGVtc1wiXG4gICAgICAgIFtjZGtEcm9wTGlzdENvbm5lY3RlZFRvXT1cImNvbHVtbklkc1wiXG4gICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25Ecm9wKCRldmVudCwgY29sdW1uKVwiPlxuICAgICAgICBcbiAgICAgICAgPCEtLSBJdGVtcyAtLT5cbiAgICAgICAgPGRpdiBcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjb2x1bW4uaXRlbXNcIlxuICAgICAgICAgIGNsYXNzPVwia2FuYmFuLWl0ZW1cIlxuICAgICAgICAgIFtjbGFzcy5rYW5iYW4taXRlbS0tc2VsZWN0ZWRdPVwic2VsZWN0YWJsZSAmJiBpc1NlbGVjdGVkKGl0ZW0pXCJcbiAgICAgICAgICBjZGtEcmFnXG4gICAgICAgICAgW2Nka0RyYWdEaXNhYmxlZF09XCIhYWxsb3dEcmFnXCJcbiAgICAgICAgICAoY2RrRHJhZ01vdmVkKT1cIm9uRHJhZ01vdmVkKCRldmVudClcIlxuICAgICAgICAgIChjZGtEcmFnRW5kZWQpPVwib25EcmFnRW5kZWQoKVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKGl0ZW0pXCI+XG4gICAgICAgICAgXG4gICAgICAgICAgPCEtLSBDdXN0b20gaXRlbSB0ZW1wbGF0ZSB3aXRoIHNlbGVjdGlvbiBjb250ZXh0IC0tPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtVGVtcGxhdGU7IGVsc2UgZGVmYXVsdEl0ZW1cIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbVRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJnZXRJdGVtQ29udGV4dChpdGVtLCBjb2x1bW4pXCI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRJdGVtPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tY29udGVudFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS10aXRsZVwiPnt7IGl0ZW0udGl0bGUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0uZGVzY3JpcHRpb25cIiBjbGFzcz1cIml0ZW0tZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICB7eyBpdGVtLmRlc2NyaXB0aW9uIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS50YWdzICYmIGl0ZW0udGFncy5sZW5ndGggPiAwXCIgY2xhc3M9XCJpdGVtLXRhZ3NcIj5cbiAgICAgICAgICAgICAgICA8cC10YWcgXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgdGFnIG9mIGl0ZW0udGFnc1wiXG4gICAgICAgICAgICAgICAgICBbdmFsdWVdPVwidGFnLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgIFtzZXZlcml0eV09XCJ0YWcuc2V2ZXJpdHkgfHwgJ3NlY29uZGFyeSdcIlxuICAgICAgICAgICAgICAgICAgc3R5bGVDbGFzcz1cIml0ZW0tdGFnXCI+XG4gICAgICAgICAgICAgICAgPC9wLXRhZz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgPCEtLSBEcmFnIFBsYWNlaG9sZGVyIC0tPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLXBsYWNlaG9sZGVyXCIgKmNka0RyYWdQbGFjZWhvbGRlcj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBFbXB0eSBTdGF0ZSAtLT5cbiAgICAgICAgPGRpdiAqbmdJZj1cImNvbHVtbi5pdGVtcy5sZW5ndGggPT09IDBcIiBjbGFzcz1cImVtcHR5LWNvbHVtblwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktaW5ib3hcIj48L2k+XG4gICAgICAgICAgPHA+e3sgZW1wdHlNZXNzYWdlIH19PC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -30,6 +30,8 @@ export { BreadcrumbComponent } from './lib/components/breadcrumb/breadcrumb.comp
30
30
  export { LoadingComponent } from './lib/components/loading/loading.component';
31
31
  export { IassistIconComponent } from './lib/components/loading/iassist-icon.component';
32
32
  export { EntityListBaseComponent } from './lib/components/base/entity-list-base.component';
33
+ // Kanban Board
34
+ export { KanbanBoardComponent } from './lib/components/kanban-board/kanban-board.component';
33
35
  // Dynamic Form
34
36
  export { DynamicFormComponent } from './lib/components/dynamic-form/dynamic-form.component';
35
37
  export * from './lib/components/dynamic-form/models/dynamic-form.models';
@@ -106,4 +108,4 @@ export { FieldType, mergeUnique, getTypeInformation, isValidFilter, getProp, set
106
108
  // export * from './lib/i18n/translation.config';
107
109
  // export * from './lib/i18n/locale.config';
108
110
  // export * from './lib/i18n/fallback';
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMtYWkvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCwrRUFBK0U7QUFDL0UsU0FBUztBQUNULCtFQUErRTtBQUMvRSxjQUFjLGlDQUFpQyxDQUFDO0FBRWhELCtFQUErRTtBQUMvRSxXQUFXO0FBQ1gsK0VBQStFO0FBQy9FLE9BQU8sRUFBRSxhQUFhLEVBQW9JLE1BQU0sK0JBQStCLENBQUM7QUFDaE0sT0FBTyxFQUFFLFdBQVcsRUFBa0IsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGlCQUFpQixFQUFpSSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JNLE9BQU8sRUFBRSxrQkFBa0IsRUFBd0IsTUFBTSxxQ0FBcUMsQ0FBQztBQUMvRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFrRCxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUEyQyxNQUFNLGtDQUFrQyxDQUFDO0FBRTdHLCtFQUErRTtBQUMvRSxhQUFhO0FBQ2IsK0VBQStFO0FBQy9FLE9BQU8sRUFBRSxxQkFBcUIsRUFBcUIsTUFBTSx3REFBd0QsQ0FBQztBQUNsSCxPQUFPLEVBQUUseUJBQXlCLEVBQWlELE1BQU0sa0VBQWtFLENBQUM7QUFDNUosT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDdkYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNENBQTRD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O0FBQ2pCLGtEQUFrRDtBQUNsRCx1REFBdUQ7QUFFdkQsUUFBUTtBQUNSLHFDQUFxQztBQUVyQyxPQUFPO0FBQ1AsaURBQWlEO0FBQ2pELDRDQUE0QztBQUM1Qyx1Q0FBdUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIEBzZW5pb3JzaXN0ZW1hcy9jb21wb25lbnRzLWFpXG4gKiBcbiAqIEVzdGUgYXJxdWl2byBzZXLDoSBwb3B1bGFkbyBjb25mb3JtZSBvcyBjb21wb25lbnRlcyBmb3JlbSBtaWdyYWRvcy5cbiAqIFBvciBlbnF1YW50bywgZXhwb3J0YSBhcGVuYXMgbyBtw7NkdWxvIHByaW5jaXBhbC5cbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNT0RVTEVcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmV4cG9ydCAqIGZyb20gJy4vbGliL2FuZ3VsYXItY29tcG9uZW50cy5tb2R1bGUnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTRVJWSUNFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0IHsgRW50aXR5U2VydmljZSwgdHlwZSBTb3J0TWV0YSwgdHlwZSBMaXN0UGFyYW1zLCB0eXBlIEJvZHlQYXJhbXMsIHR5cGUgRW50aXR5TGlzdFJlc3BvbnNlLCB0eXBlIFRyYW5zbGF0aW9uU2VydmljZSBhcyBUcmFuc2xhdGlvblNlcnZpY2VJbnRlcmZhY2UgfSBmcm9tICcuL2xpYi9zZXJ2aWNlcy9lbnRpdHkuc2VydmljZSc7XG5leHBvcnQgeyBBdXRoU2VydmljZSwgdHlwZSBVc2VyVG9rZW4gfSBmcm9tICcuL2xpYi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xuZXhwb3J0IHsgQ29va2llU2VydmljZSB9IGZyb20gJy4vbGliL3NlcnZpY2VzL2Nvb2tpZS5zZXJ2aWNlJztcbmV4cG9ydCB7IFBlcm1pc3Npb25TZXJ2aWNlLCB0eXBlIFBlcm1pc3Npb25SZXF1ZXN0LCB0eXBlIFBlcm1pc3Npb25SZXNwb25zZSwgdHlwZSBDaGVja0FjY2Vzc1JlcXVlc3QsIHR5cGUgQ2hlY2tBY2Nlc3NSZXNwb25zZSwgdHlwZSBBdXRoU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4vbGliL3NlcnZpY2VzL3Blcm1pc3Npb24uc2VydmljZSc7XG5leHBvcnQgeyBTZW5pb3JUb2tlblNlcnZpY2UsIHR5cGUgU2VuaW9yVG9rZW5EYXRhIH0gZnJvbSAnLi9saWIvc2VydmljZXMvc2VuaW9yLXRva2VuLnNlcnZpY2UnO1xuZXhwb3J0IHsgVGhlbWVTZXJ2aWNlIH0gZnJvbSAnLi9saWIvc2VydmljZXMvdGhlbWUuc2VydmljZSc7XG5leHBvcnQgeyBUcmFuc2xhdGlvblNlcnZpY2UsIHR5cGUgU3VwcG9ydGVkTGFuZ3VhZ2UsIHR5cGUgVHJhbnNsYXRpb25Mb2FkZXIgfSBmcm9tICcuL2xpYi9zZXJ2aWNlcy90cmFuc2xhdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCB7IE1hc2tTZXJ2aWNlIH0gZnJvbSAnLi9saWIvc2VydmljZXMvbWFzay5zZXJ2aWNlJztcbmV4cG9ydCB7IExvY2FsZVNlcnZpY2UgfSBmcm9tICcuL2xpYi9zZXJ2aWNlcy9sb2NhbGUuc2VydmljZSc7XG5leHBvcnQgeyBXZWJTb2NrZXRTZXJ2aWNlLCB0eXBlIFdlYlNvY2tldENvbmZpZywgdHlwZSBTdG9tcE1lc3NhZ2UgfSBmcm9tICcuL2xpYi9zZXJ2aWNlcy93ZWJzb2NrZXQuc2VydmljZSc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENPTVBPTkVOVFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmV4cG9ydCB7IEV4cG9ydERpYWxvZ0NvbXBvbmVudCwgdHlwZSBDb2x1bW5PcHRpb24gfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL2V4cG9ydC1kaWFsb2cvZXhwb3J0LWRpYWxvZy5jb21wb25lbnQnO1xuZXhwb3J0IHsgQnVsa0RlbGV0ZURpYWxvZ0NvbXBvbmVudCwgdHlwZSBFbnRpdHlTZXJ2aWNlIGFzIEJ1bGtEZWxldGVFbnRpdHlTZXJ2aWNlIH0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9idWxrLWRlbGV0ZS1kaWFsb2cvYnVsay1kZWxldGUtZGlhbG9nLmNvbXBvbmVudCc7XG5leHBvcnQgeyBCcmVhZGNydW1iQ29tcG9uZW50IH0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9icmVhZGNydW1iL2JyZWFkY3J1bWIuY29tcG9uZW50JztcbmV4cG9ydCB7IExvYWRpbmdDb21wb25lbnQgfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL2xvYWRpbmcvbG9hZGluZy5jb21wb25lbnQnO1xuZXhwb3J0IHsgSWFzc2lzdEljb25Db21wb25lbnQgfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL2xvYWRpbmcvaWFzc2lzdC1pY29uLmNvbXBvbmVudCc7XG5leHBvcnQgeyBFbnRpdHlMaXN0QmFzZUNvbXBvbmVudCB9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvYmFzZS9lbnRpdHktbGlzdC1iYXNlLmNvbXBvbmVudCc7XG5cbi8vIER5bmFtaWMgRm9ybVxuZXhwb3J0IHsgRHluYW1pY0Zvcm1Db21wb25lbnQgfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9keW5hbWljLWZvcm0uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL21vZGVscy9keW5hbWljLWZvcm0ubW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2ZpZWxkcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1PREVMU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0IHR5cGUgeyBCYXNlRW50aXR5IH0gZnJvbSAnLi9saWIvbW9kZWxzL2Jhc2UtZW50aXR5LmludGVyZmFjZSc7XG5leHBvcnQgdHlwZSB7IFxuICBUYWJsZUNvbHVtbiwgXG4gIEZvcm1GaWVsZCBhcyBFbnRpdHlGb3JtRmllbGQsIFxuICBGaWx0ZXJGaWVsZCwgXG4gIEV4cG9ydEZpZWxkLCBcbiAgRW50aXR5Q29uZmlnIFxufSBmcm9tICcuL2xpYi9tb2RlbHMvZW50aXR5LWNvbmZpZy5pbnRlcmZhY2UnO1xuZXhwb3J0IHR5cGUgeyBcbiAgQ29sdW1uQ29uZmlnLCBcbiAgTG9va3VwQ29sdW1uLCBcbiAgRmlsdGVyRmllbGRTaXplLCBcbiAgRmlsdGVyU2VjdGlvbiwgXG4gIEZpbHRlckNvbmZpZywgXG4gIEZvcm1GaWVsZENvbmZpZyBhcyBFbnRpdHlGb3JtRmllbGRDb25maWcsIFxuICBFbnRpdHlMaXN0Q29uZmlnIFxufSBmcm9tICcuL2xpYi9tb2RlbHMvZW50aXR5LWxpc3QuY29uZmlnJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ09ORklHXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5leHBvcnQgeyBUUkFOU0xBVElPTl9DT05GSUcsIFNVUFBPUlRFRF9MQU5HVUFHRVMsIERFRkFVTFRfTEFOR1VBR0UsIG1hcFRva2VuTG9jYWxlVG9MYW5ndWFnZSwgZ2V0TGFuZ3VhZ2VJbmZvLCB0eXBlIExhbmd1YWdlQ29uZmlnIH0gZnJvbSAnLi9saWIvY29uZmlnL3RyYW5zbGF0aW9uLmNvbmZpZyc7XG5leHBvcnQgeyBwcm92aWRlU2VuaW9yUHJpbWVORywgU2VuaW9yUHJlc2V0LCB0eXBlIFNlbmlvclByaW1lTkdDb25maWcgfSBmcm9tICcuL2xpYi9jb25maWcvcHJpbWVuZy5jb25maWcnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBJTlRFUkNFUFRPUlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmV4cG9ydCB7IGFwaUludGVyY2VwdG9yIH0gZnJvbSAnLi9saWIvaW50ZXJjZXB0b3JzL2FwaS5pbnRlcmNlcHRvcic7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE5PVEE6IE9zIGV4cG9ydHMgYWJhaXhvIHNlcsOjbyBkZXNjb21lbnRhZG9zIGNvbmZvcm1lIG9zIGFycXVpdm9zIGZvcmVtIG1pZ3JhZG9zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIENPTVBPTkVOVFMgLSBCQVNFXG4vLyBleHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2Jhc2UvZW50aXR5LWxpc3QtYmFzZS9lbnRpdHktbGlzdC1iYXNlLmNvbXBvbmVudCc7XG4vLyBleHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2Jhc2UvZW50aXR5LWZvcm0tYmFzZS9lbnRpdHktZm9ybS1iYXNlLmNvbXBvbmVudCc7XG5cbi8vIENPTVBPTkVOVFMgLSBGT1JNU1xuLy8gZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9mb3Jtcy9lbnRpdHktZm9ybS1maWVsZHMvZW50aXR5LWZvcm0tZmllbGRzLmNvbXBvbmVudCc7XG4vLyBleHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2Zvcm1zL2VudGl0eS1mb3JtLWRpYWxvZy9lbnRpdHktZm9ybS1kaWFsb2cuY29tcG9uZW50Jztcbi8vIGV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZm9ybXMvZW50aXR5LWZvcm0tZHJhd2VyL2VudGl0eS1mb3JtLWRyYXdlci5jb21wb25lbnQnO1xuLy8gZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9mb3Jtcy9zdWItcmVzb3VyY2UtZm9ybS1kaWFsb2cvc3ViLXJlc291cmNlLWZvcm0tZGlhbG9nLmNvbXBvbmVudCc7XG5cbi8vIENPTVBPTkVOVFMgLSBMSVNUU1xuLy8gZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9saXN0cy9mb3JtLWZpbHRlci9mb3JtLWZpbHRlci5jb21wb25lbnQnO1xuLy8gZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9saXN0cy9leHBvcnQtZGlhbG9nL2V4cG9ydC1kaWFsb2cuY29tcG9uZW50Jztcbi8vIGV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbGlzdHMvYnVsay1kZWxldGUtZGlhbG9nL2J1bGstZGVsZXRlLWRpYWxvZy5jb21wb25lbnQnO1xuXG4vLyBDT01QT05FTlRTIC0gVUlcbi8vIGV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdWkvYnJlYWRjcnVtYi9icmVhZGNydW1iLmNvbXBvbmVudCc7XG4vLyBleHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3VpL2VkaXQtaW5saW5lL2VkaXQtaW5saW5lLmNvbXBvbmVudCc7XG4vLyBleHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3VpL2xvb2t1cC1maWVsZC9sb29rdXAtZmllbGQuY29tcG9uZW50Jztcbi8vIGV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdWkva2FuYmFuLWJvYXJkL2thbmJhbi1ib2FyZC5jb21wb25lbnQnO1xuLy8gZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy91aS90aGVtZS10b2dnbGUvdGhlbWUtdG9nZ2xlLmNvbXBvbmVudCc7XG5cbi8vIFNFUlZJQ0VTXG4vLyBleHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9lbnRpdHkuc2VydmljZSc7XG4vLyBleHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xuLy8gZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvdHJhbnNsYXRpb24uc2VydmljZSc7XG4vLyBleHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy90aGVtZS5zZXJ2aWNlJztcbi8vIGV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3Blcm1pc3Npb24uc2VydmljZSc7XG4vLyBleHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9jb29raWUuc2VydmljZSc7XG4vLyBleHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9zZW5pb3ItdG9rZW4uc2VydmljZSc7XG4vLyBleHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9tYXNrLnNlcnZpY2UnO1xuXG4vLyBESVJFQ1RJVkVTXG5leHBvcnQgeyBQb3N0YWxDb2RlTWFza0RpcmVjdGl2ZSB9IGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvcG9zdGFsLWNvZGUtbWFzay5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgRG9jdW1lbnRNYXNrRGlyZWN0aXZlIH0gZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9kb2N1bWVudC1tYXNrLmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBQaG9uZU1hc2tEaXJlY3RpdmUgfSBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL3Bob25lLW1hc2suZGlyZWN0aXZlJztcbmV4cG9ydCB7IE1vbmV5TWFza0RpcmVjdGl2ZSB9IGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvbW9uZXktbWFzay5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgVGFibGVMb2FkaW5nRGlyZWN0aXZlIH0gZnJvbSAnLi9saWIvZGlyZWN0aXZlcy90YWJsZS1sb2FkaW5nL3RhYmxlLWxvYWRpbmcuZGlyZWN0aXZlJztcblxuLy8gUElQRVNcbmV4cG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuL2xpYi9waXBlcy90cmFuc2xhdGUucGlwZSc7XG5leHBvcnQgeyBDcGZQaXBlIH0gZnJvbSAnLi9saWIvcGlwZXMvY3BmLnBpcGUnO1xuZXhwb3J0IHsgQ25walBpcGUgfSBmcm9tICcuL2xpYi9waXBlcy9jbnBqLnBpcGUnO1xuZXhwb3J0IHsgRG9jdW1lbnRQaXBlIH0gZnJvbSAnLi9saWIvcGlwZXMvZG9jdW1lbnQucGlwZSc7XG5leHBvcnQgeyBQaG9uZVBpcGUgfSBmcm9tICcuL2xpYi9waXBlcy9waG9uZS5waXBlJztcbmV4cG9ydCB7IFBvc3RhbENvZGVQaXBlIH0gZnJvbSAnLi9saWIvcGlwZXMvcG9zdGFsLWNvZGUucGlwZSc7XG5leHBvcnQgeyBNb25leVBpcGUgfSBmcm9tICcuL2xpYi9waXBlcy9tb25leS5waXBlJztcbmV4cG9ydCB7IERhdGVGb3JtYXRQaXBlIH0gZnJvbSAnLi9saWIvcGlwZXMvZGF0ZS1mb3JtYXQucGlwZSc7XG5cbi8vIFVUSUxTXG5leHBvcnQgeyBUcmFuc2xhdGlvbkhlbHBlciB9IGZyb20gJy4vbGliL3V0aWxzL3RyYW5zbGF0aW9uLmhlbHBlcic7XG5leHBvcnQgeyBcbiAgRmllbGRUeXBlLFxuICB0eXBlIEZvcm1GaWVsZCBhcyBVdGlsc0Zvcm1GaWVsZCxcbiAgdHlwZSBPcHRpb24sXG4gIHR5cGUgRmlsdGVyVG9rZW4sXG4gIG1lcmdlVW5pcXVlLFxuICBnZXRUeXBlSW5mb3JtYXRpb24sXG4gIGlzVmFsaWRGaWx0ZXIsXG4gIGdldFByb3AsXG4gIHNldFByb3AsXG4gIGdldExhYmVsVmFsdWVSZXF1ZXN0LFxuICBnZXRTdWdnZXN0aW9uVmFsdWUsXG4gIGdldEVudW1RdWVyeSxcbiAgZXNjYXBlRmlsdGVyVmFsdWUsXG4gIGNyZWF0ZUZpbHRlclN0cmluZyxcbiAgY3JlYXRlRmlsdGVyVG9rZW5zLFxuICByZXNvbHZlUmVmcyxcbiAgZGVlcENsb25lLFxuICBkZWVwRXF1YWwsXG4gIGRlYm91bmNlLFxuICB0aHJvdHRsZVxufSBmcm9tICcuL2xpYi91dGlscy91dGlscyc7XG5cbi8vIElOVEVSQ0VQVE9SU1xuLy8gZXhwb3J0ICogZnJvbSAnLi9saWIvaW50ZXJjZXB0b3JzL2FwaS5pbnRlcmNlcHRvcic7XG5cbi8vIE1PREVMUyAtIElOVEVSRkFDRVNcbi8vIGV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9pbnRlcmZhY2VzL2Jhc2UtZW50aXR5LmludGVyZmFjZSc7XG4vLyBleHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvaW50ZXJmYWNlcy9lbnRpdHktY29uZmlnLmludGVyZmFjZSc7XG4vLyBleHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvaW50ZXJmYWNlcy9lbnRpdHktbGlzdC5jb25maWcnO1xuXG4vLyBNT0RFTFMgLSBFTlVNU1xuLy8gZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL2VudW1zL3N0YXR1cy5lbnVtJztcbi8vIGV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9lbnVtcy90eXBlLXBlcnNvbi5lbnVtJztcblxuLy8gVVRJTFNcbi8vIGV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL3V0aWxzJztcblxuLy8gSTE4TlxuLy8gZXhwb3J0ICogZnJvbSAnLi9saWIvaTE4bi90cmFuc2xhdGlvbi5jb25maWcnO1xuLy8gZXhwb3J0ICogZnJvbSAnLi9saWIvaTE4bi9sb2NhbGUuY29uZmlnJztcbi8vIGV4cG9ydCAqIGZyb20gJy4vbGliL2kxOG4vZmFsbGJhY2snO1xuIl19
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMtYWkvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCwrRUFBK0U7QUFDL0UsU0FBUztBQUNULCtFQUErRTtBQUMvRSxjQUFjLGlDQUFpQyxDQUFDO0FBRWhELCtFQUErRTtBQUMvRSxXQUFXO0FBQ1gsK0VBQStFO0FBQy9FLE9BQU8sRUFBRSxhQUFhLEVBQW9JLE1BQU0sK0JBQStCLENBQUM7QUFDaE0sT0FBTyxFQUFFLFdBQVcsRUFBa0IsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGlCQUFpQixFQUFpSSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JNLE9BQU8sRUFBRSxrQkFBa0IsRUFBd0IsTUFBTSxxQ0FBcUMsQ0FBQztBQUMvRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFrRCxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUEyQyxNQUFNLGtDQUFrQyxDQUFDO0FBRTdHLCtFQUErRTtBQUMvRSxhQUFhO0FBQ2IsK0VBQStFO0FBQy9FLE9BQU8sRUFBRSxxQkFBcUIsRUFBcUIsTUFBTSx3REFBd0QsQ0FBQztBQUNsSCxPQUFPLEVBQUUseUJBQXlCLEVBQWlELE1BQU0sa0VBQWtFLENBQUM7QUFDNUosT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDdkYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNENBQTRD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QUFzQjtBQUN0QixpRUFBaUU7QUFDakUsbUVBQW1FO0FBQ25FLDhEQUE4RDtBQUU5RCxpQkFBaUI7QUFDakIsa0RBQWtEO0FBQ2xELHVEQUF1RDtBQUV2RCxRQUFRO0FBQ1IscUNBQXFDO0FBRXJDLE9BQU87QUFDUCxpREFBaUQ7QUFDakQsNENBQTRDO0FBQzVDLHVDQUF1QyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgQHNlbmlvcnNpc3RlbWFzL2NvbXBvbmVudHMtYWlcbiAqIFxuICogRXN0ZSBhcnF1aXZvIHNlcsOhIHBvcHVsYWRvIGNvbmZvcm1lIG9zIGNvbXBvbmVudGVzIGZvcmVtIG1pZ3JhZG9zLlxuICogUG9yIGVucXVhbnRvLCBleHBvcnRhIGFwZW5hcyBvIG3Ds2R1bG8gcHJpbmNpcGFsLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1PRFVMRVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0ICogZnJvbSAnLi9saWIvYW5ndWxhci1jb21wb25lbnRzLm1vZHVsZSc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNFUlZJQ0VTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5leHBvcnQgeyBFbnRpdHlTZXJ2aWNlLCB0eXBlIFNvcnRNZXRhLCB0eXBlIExpc3RQYXJhbXMsIHR5cGUgQm9keVBhcmFtcywgdHlwZSBFbnRpdHlMaXN0UmVzcG9uc2UsIHR5cGUgVHJhbnNsYXRpb25TZXJ2aWNlIGFzIFRyYW5zbGF0aW9uU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4vbGliL3NlcnZpY2VzL2VudGl0eS5zZXJ2aWNlJztcbmV4cG9ydCB7IEF1dGhTZXJ2aWNlLCB0eXBlIFVzZXJUb2tlbiB9IGZyb20gJy4vbGliL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XG5leHBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSAnLi9saWIvc2VydmljZXMvY29va2llLnNlcnZpY2UnO1xuZXhwb3J0IHsgUGVybWlzc2lvblNlcnZpY2UsIHR5cGUgUGVybWlzc2lvblJlcXVlc3QsIHR5cGUgUGVybWlzc2lvblJlc3BvbnNlLCB0eXBlIENoZWNrQWNjZXNzUmVxdWVzdCwgdHlwZSBDaGVja0FjY2Vzc1Jlc3BvbnNlLCB0eXBlIEF1dGhTZXJ2aWNlSW50ZXJmYWNlIH0gZnJvbSAnLi9saWIvc2VydmljZXMvcGVybWlzc2lvbi5zZXJ2aWNlJztcbmV4cG9ydCB7IFNlbmlvclRva2VuU2VydmljZSwgdHlwZSBTZW5pb3JUb2tlbkRhdGEgfSBmcm9tICcuL2xpYi9zZXJ2aWNlcy9zZW5pb3ItdG9rZW4uc2VydmljZSc7XG5leHBvcnQgeyBUaGVtZVNlcnZpY2UgfSBmcm9tICcuL2xpYi9zZXJ2aWNlcy90aGVtZS5zZXJ2aWNlJztcbmV4cG9ydCB7IFRyYW5zbGF0aW9uU2VydmljZSwgdHlwZSBTdXBwb3J0ZWRMYW5ndWFnZSwgdHlwZSBUcmFuc2xhdGlvbkxvYWRlciB9IGZyb20gJy4vbGliL3NlcnZpY2VzL3RyYW5zbGF0aW9uLnNlcnZpY2UnO1xuZXhwb3J0IHsgTWFza1NlcnZpY2UgfSBmcm9tICcuL2xpYi9zZXJ2aWNlcy9tYXNrLnNlcnZpY2UnO1xuZXhwb3J0IHsgTG9jYWxlU2VydmljZSB9IGZyb20gJy4vbGliL3NlcnZpY2VzL2xvY2FsZS5zZXJ2aWNlJztcbmV4cG9ydCB7IFdlYlNvY2tldFNlcnZpY2UsIHR5cGUgV2ViU29ja2V0Q29uZmlnLCB0eXBlIFN0b21wTWVzc2FnZSB9IGZyb20gJy4vbGliL3NlcnZpY2VzL3dlYnNvY2tldC5zZXJ2aWNlJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ09NUE9ORU5UU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0IHsgRXhwb3J0RGlhbG9nQ29tcG9uZW50LCB0eXBlIENvbHVtbk9wdGlvbiB9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvZXhwb3J0LWRpYWxvZy9leHBvcnQtZGlhbG9nLmNvbXBvbmVudCc7XG5leHBvcnQgeyBCdWxrRGVsZXRlRGlhbG9nQ29tcG9uZW50LCB0eXBlIEVudGl0eVNlcnZpY2UgYXMgQnVsa0RlbGV0ZUVudGl0eVNlcnZpY2UgfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL2J1bGstZGVsZXRlLWRpYWxvZy9idWxrLWRlbGV0ZS1kaWFsb2cuY29tcG9uZW50JztcbmV4cG9ydCB7IEJyZWFkY3J1bWJDb21wb25lbnQgfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi5jb21wb25lbnQnO1xuZXhwb3J0IHsgTG9hZGluZ0NvbXBvbmVudCB9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvbG9hZGluZy9sb2FkaW5nLmNvbXBvbmVudCc7XG5leHBvcnQgeyBJYXNzaXN0SWNvbkNvbXBvbmVudCB9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvbG9hZGluZy9pYXNzaXN0LWljb24uY29tcG9uZW50JztcbmV4cG9ydCB7IEVudGl0eUxpc3RCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9iYXNlL2VudGl0eS1saXN0LWJhc2UuY29tcG9uZW50JztcblxuLy8gS2FuYmFuIEJvYXJkXG5leHBvcnQge1xuICBLYW5iYW5Cb2FyZENvbXBvbmVudCxcbiAgdHlwZSBLYW5iYW5Db2x1bW4sXG4gIHR5cGUgS2FuYmFuSXRlbSxcbiAgdHlwZSBLYW5iYW5UYWcsXG4gIHR5cGUgS2FuYmFuRHJvcEV2ZW50XG59IGZyb20gJy4vbGliL2NvbXBvbmVudHMva2FuYmFuLWJvYXJkL2thbmJhbi1ib2FyZC5jb21wb25lbnQnO1xuXG4vLyBEeW5hbWljIEZvcm1cbmV4cG9ydCB7IER5bmFtaWNGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vZHluYW1pYy1mb3JtLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9tb2RlbHMvZHluYW1pYy1mb3JtLm1vZGVscyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9maWVsZHMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNT0RFTFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmV4cG9ydCB0eXBlIHsgQmFzZUVudGl0eSB9IGZyb20gJy4vbGliL21vZGVscy9iYXNlLWVudGl0eS5pbnRlcmZhY2UnO1xuZXhwb3J0IHR5cGUgeyBcbiAgVGFibGVDb2x1bW4sIFxuICBGb3JtRmllbGQgYXMgRW50aXR5Rm9ybUZpZWxkLCBcbiAgRmlsdGVyRmllbGQsIFxuICBFeHBvcnRGaWVsZCwgXG4gIEVudGl0eUNvbmZpZyBcbn0gZnJvbSAnLi9saWIvbW9kZWxzL2VudGl0eS1jb25maWcuaW50ZXJmYWNlJztcbmV4cG9ydCB0eXBlIHsgXG4gIENvbHVtbkNvbmZpZywgXG4gIExvb2t1cENvbHVtbiwgXG4gIEZpbHRlckZpZWxkU2l6ZSwgXG4gIEZpbHRlclNlY3Rpb24sIFxuICBGaWx0ZXJDb25maWcsIFxuICBGb3JtRmllbGRDb25maWcgYXMgRW50aXR5Rm9ybUZpZWxkQ29uZmlnLCBcbiAgRW50aXR5TGlzdENvbmZpZyBcbn0gZnJvbSAnLi9saWIvbW9kZWxzL2VudGl0eS1saXN0LmNvbmZpZyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENPTkZJR1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0IHsgVFJBTlNMQVRJT05fQ09ORklHLCBTVVBQT1JURURfTEFOR1VBR0VTLCBERUZBVUxUX0xBTkdVQUdFLCBtYXBUb2tlbkxvY2FsZVRvTGFuZ3VhZ2UsIGdldExhbmd1YWdlSW5mbywgdHlwZSBMYW5ndWFnZUNvbmZpZyB9IGZyb20gJy4vbGliL2NvbmZpZy90cmFuc2xhdGlvbi5jb25maWcnO1xuZXhwb3J0IHsgcHJvdmlkZVNlbmlvclByaW1lTkcsIFNlbmlvclByZXNldCwgdHlwZSBTZW5pb3JQcmltZU5HQ29uZmlnIH0gZnJvbSAnLi9saWIvY29uZmlnL3ByaW1lbmcuY29uZmlnJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSU5URVJDRVBUT1JTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5leHBvcnQgeyBhcGlJbnRlcmNlcHRvciB9IGZyb20gJy4vbGliL2ludGVyY2VwdG9ycy9hcGkuaW50ZXJjZXB0b3InO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBOT1RBOiBPcyBleHBvcnRzIGFiYWl4byBzZXLDo28gZGVzY29tZW50YWRvcyBjb25mb3JtZSBvcyBhcnF1aXZvcyBmb3JlbSBtaWdyYWRvc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBDT01QT05FTlRTIC0gQkFTRVxuLy8gZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9iYXNlL2VudGl0eS1saXN0LWJhc2UvZW50aXR5LWxpc3QtYmFzZS5jb21wb25lbnQnO1xuLy8gZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9iYXNlL2VudGl0eS1mb3JtLWJhc2UvZW50aXR5LWZvcm0tYmFzZS5jb21wb25lbnQnO1xuXG4vLyBDT01QT05FTlRTIC0gRk9STVNcbi8vIGV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZm9ybXMvZW50aXR5LWZvcm0tZmllbGRzL2VudGl0eS1mb3JtLWZpZWxkcy5jb21wb25lbnQnO1xuLy8gZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9mb3Jtcy9lbnRpdHktZm9ybS1kaWFsb2cvZW50aXR5LWZvcm0tZGlhbG9nLmNvbXBvbmVudCc7XG4vLyBleHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2Zvcm1zL2VudGl0eS1mb3JtLWRyYXdlci9lbnRpdHktZm9ybS1kcmF3ZXIuY29tcG9uZW50Jztcbi8vIGV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZm9ybXMvc3ViLXJlc291cmNlLWZvcm0tZGlhbG9nL3N1Yi1yZXNvdXJjZS1mb3JtLWRpYWxvZy5jb21wb25lbnQnO1xuXG4vLyBDT01QT05FTlRTIC0gTElTVFNcbi8vIGV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbGlzdHMvZm9ybS1maWx0ZXIvZm9ybS1maWx0ZXIuY29tcG9uZW50Jztcbi8vIGV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbGlzdHMvZXhwb3J0LWRpYWxvZy9leHBvcnQtZGlhbG9nLmNvbXBvbmVudCc7XG4vLyBleHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2xpc3RzL2J1bGstZGVsZXRlLWRpYWxvZy9idWxrLWRlbGV0ZS1kaWFsb2cuY29tcG9uZW50JztcblxuLy8gQ09NUE9ORU5UUyAtIFVJXG4vLyBleHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3VpL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi5jb21wb25lbnQnO1xuLy8gZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy91aS9lZGl0LWlubGluZS9lZGl0LWlubGluZS5jb21wb25lbnQnO1xuLy8gZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy91aS9sb29rdXAtZmllbGQvbG9va3VwLWZpZWxkLmNvbXBvbmVudCc7XG4vLyBleHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3VpL2thbmJhbi1ib2FyZC9rYW5iYW4tYm9hcmQuY29tcG9uZW50Jztcbi8vIGV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdWkvdGhlbWUtdG9nZ2xlL3RoZW1lLXRvZ2dsZS5jb21wb25lbnQnO1xuXG4vLyBTRVJWSUNFU1xuLy8gZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvZW50aXR5LnNlcnZpY2UnO1xuLy8gZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcbi8vIGV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3RyYW5zbGF0aW9uLnNlcnZpY2UnO1xuLy8gZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvdGhlbWUuc2VydmljZSc7XG4vLyBleHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9wZXJtaXNzaW9uLnNlcnZpY2UnO1xuLy8gZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvY29va2llLnNlcnZpY2UnO1xuLy8gZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvc2VuaW9yLXRva2VuLnNlcnZpY2UnO1xuLy8gZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvbWFzay5zZXJ2aWNlJztcblxuLy8gRElSRUNUSVZFU1xuZXhwb3J0IHsgUG9zdGFsQ29kZU1hc2tEaXJlY3RpdmUgfSBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL3Bvc3RhbC1jb2RlLW1hc2suZGlyZWN0aXZlJztcbmV4cG9ydCB7IERvY3VtZW50TWFza0RpcmVjdGl2ZSB9IGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvZG9jdW1lbnQtbWFzay5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgUGhvbmVNYXNrRGlyZWN0aXZlIH0gZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9waG9uZS1tYXNrLmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBNb25leU1hc2tEaXJlY3RpdmUgfSBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL21vbmV5LW1hc2suZGlyZWN0aXZlJztcbmV4cG9ydCB7IFRhYmxlTG9hZGluZ0RpcmVjdGl2ZSB9IGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvdGFibGUtbG9hZGluZy90YWJsZS1sb2FkaW5nLmRpcmVjdGl2ZSc7XG5cbi8vIFBJUEVTXG5leHBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi9saWIvcGlwZXMvdHJhbnNsYXRlLnBpcGUnO1xuZXhwb3J0IHsgQ3BmUGlwZSB9IGZyb20gJy4vbGliL3BpcGVzL2NwZi5waXBlJztcbmV4cG9ydCB7IENucGpQaXBlIH0gZnJvbSAnLi9saWIvcGlwZXMvY25wai5waXBlJztcbmV4cG9ydCB7IERvY3VtZW50UGlwZSB9IGZyb20gJy4vbGliL3BpcGVzL2RvY3VtZW50LnBpcGUnO1xuZXhwb3J0IHsgUGhvbmVQaXBlIH0gZnJvbSAnLi9saWIvcGlwZXMvcGhvbmUucGlwZSc7XG5leHBvcnQgeyBQb3N0YWxDb2RlUGlwZSB9IGZyb20gJy4vbGliL3BpcGVzL3Bvc3RhbC1jb2RlLnBpcGUnO1xuZXhwb3J0IHsgTW9uZXlQaXBlIH0gZnJvbSAnLi9saWIvcGlwZXMvbW9uZXkucGlwZSc7XG5leHBvcnQgeyBEYXRlRm9ybWF0UGlwZSB9IGZyb20gJy4vbGliL3BpcGVzL2RhdGUtZm9ybWF0LnBpcGUnO1xuXG4vLyBVVElMU1xuZXhwb3J0IHsgVHJhbnNsYXRpb25IZWxwZXIgfSBmcm9tICcuL2xpYi91dGlscy90cmFuc2xhdGlvbi5oZWxwZXInO1xuZXhwb3J0IHsgXG4gIEZpZWxkVHlwZSxcbiAgdHlwZSBGb3JtRmllbGQgYXMgVXRpbHNGb3JtRmllbGQsXG4gIHR5cGUgT3B0aW9uLFxuICB0eXBlIEZpbHRlclRva2VuLFxuICBtZXJnZVVuaXF1ZSxcbiAgZ2V0VHlwZUluZm9ybWF0aW9uLFxuICBpc1ZhbGlkRmlsdGVyLFxuICBnZXRQcm9wLFxuICBzZXRQcm9wLFxuICBnZXRMYWJlbFZhbHVlUmVxdWVzdCxcbiAgZ2V0U3VnZ2VzdGlvblZhbHVlLFxuICBnZXRFbnVtUXVlcnksXG4gIGVzY2FwZUZpbHRlclZhbHVlLFxuICBjcmVhdGVGaWx0ZXJTdHJpbmcsXG4gIGNyZWF0ZUZpbHRlclRva2VucyxcbiAgcmVzb2x2ZVJlZnMsXG4gIGRlZXBDbG9uZSxcbiAgZGVlcEVxdWFsLFxuICBkZWJvdW5jZSxcbiAgdGhyb3R0bGVcbn0gZnJvbSAnLi9saWIvdXRpbHMvdXRpbHMnO1xuXG4vLyBJTlRFUkNFUFRPUlNcbi8vIGV4cG9ydCAqIGZyb20gJy4vbGliL2ludGVyY2VwdG9ycy9hcGkuaW50ZXJjZXB0b3InO1xuXG4vLyBNT0RFTFMgLSBJTlRFUkZBQ0VTXG4vLyBleHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvaW50ZXJmYWNlcy9iYXNlLWVudGl0eS5pbnRlcmZhY2UnO1xuLy8gZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL2ludGVyZmFjZXMvZW50aXR5LWNvbmZpZy5pbnRlcmZhY2UnO1xuLy8gZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL2ludGVyZmFjZXMvZW50aXR5LWxpc3QuY29uZmlnJztcblxuLy8gTU9ERUxTIC0gRU5VTVNcbi8vIGV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9lbnVtcy9zdGF0dXMuZW51bSc7XG4vLyBleHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvZW51bXMvdHlwZS1wZXJzb24uZW51bSc7XG5cbi8vIFVUSUxTXG4vLyBleHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy91dGlscyc7XG5cbi8vIEkxOE5cbi8vIGV4cG9ydCAqIGZyb20gJy4vbGliL2kxOG4vdHJhbnNsYXRpb24uY29uZmlnJztcbi8vIGV4cG9ydCAqIGZyb20gJy4vbGliL2kxOG4vbG9jYWxlLmNvbmZpZyc7XG4vLyBleHBvcnQgKiBmcm9tICcuL2xpYi9pMThuL2ZhbGxiYWNrJztcbiJdfQ==