@mintplayer/ng-bootstrap 15.20.3 → 15.20.4

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 (54) hide show
  1. package/calendar/src/calendar.component.d.ts +2 -0
  2. package/carousel/src/carousel/carousel.component.d.ts +2 -0
  3. package/carousel/src/carousel-image/carousel-image.directive.d.ts +3 -1
  4. package/esm2020/calendar/src/calendar.component.mjs +9 -3
  5. package/esm2020/carousel/src/carousel/carousel.component.mjs +7 -3
  6. package/esm2020/carousel/src/carousel-image/carousel-image.directive.mjs +7 -4
  7. package/esm2020/file-upload/src/component/file-upload.component.mjs +7 -4
  8. package/esm2020/file-upload/src/file-upload.mjs +1 -1
  9. package/esm2020/multiselect/src/component/multiselect.component.mjs +8 -3
  10. package/esm2020/multiselect/src/directives/button-template/button-template.directive.mjs +1 -1
  11. package/esm2020/multiselect/src/directives/footer-template/footer-template.directive.mjs +1 -1
  12. package/esm2020/multiselect/src/directives/header-template/header-template.directive.mjs +1 -1
  13. package/esm2020/pagination/src/component/pagination/pagination.component.mjs +6 -3
  14. package/esm2020/rating/src/component/rating.component.mjs +6 -3
  15. package/esm2020/scheduler/src/components/resource-group-presenter/resource-group-presenter.component.mjs +1 -1
  16. package/esm2020/scheduler/src/components/scheduler/scheduler.component.mjs +2 -1
  17. package/fesm2015/mintplayer-ng-bootstrap-calendar.mjs +8 -2
  18. package/fesm2015/mintplayer-ng-bootstrap-calendar.mjs.map +1 -1
  19. package/fesm2015/mintplayer-ng-bootstrap-carousel.mjs +10 -5
  20. package/fesm2015/mintplayer-ng-bootstrap-carousel.mjs.map +1 -1
  21. package/fesm2015/mintplayer-ng-bootstrap-file-upload.mjs +6 -3
  22. package/fesm2015/mintplayer-ng-bootstrap-file-upload.mjs.map +1 -1
  23. package/fesm2015/mintplayer-ng-bootstrap-multiselect.mjs +7 -2
  24. package/fesm2015/mintplayer-ng-bootstrap-multiselect.mjs.map +1 -1
  25. package/fesm2015/mintplayer-ng-bootstrap-pagination.mjs +5 -2
  26. package/fesm2015/mintplayer-ng-bootstrap-pagination.mjs.map +1 -1
  27. package/fesm2015/mintplayer-ng-bootstrap-rating.mjs +5 -2
  28. package/fesm2015/mintplayer-ng-bootstrap-rating.mjs.map +1 -1
  29. package/fesm2015/mintplayer-ng-bootstrap-scheduler.mjs +1 -0
  30. package/fesm2015/mintplayer-ng-bootstrap-scheduler.mjs.map +1 -1
  31. package/fesm2020/mintplayer-ng-bootstrap-calendar.mjs +8 -2
  32. package/fesm2020/mintplayer-ng-bootstrap-calendar.mjs.map +1 -1
  33. package/fesm2020/mintplayer-ng-bootstrap-carousel.mjs +10 -5
  34. package/fesm2020/mintplayer-ng-bootstrap-carousel.mjs.map +1 -1
  35. package/fesm2020/mintplayer-ng-bootstrap-file-upload.mjs +6 -3
  36. package/fesm2020/mintplayer-ng-bootstrap-file-upload.mjs.map +1 -1
  37. package/fesm2020/mintplayer-ng-bootstrap-multiselect.mjs +7 -2
  38. package/fesm2020/mintplayer-ng-bootstrap-multiselect.mjs.map +1 -1
  39. package/fesm2020/mintplayer-ng-bootstrap-pagination.mjs +5 -2
  40. package/fesm2020/mintplayer-ng-bootstrap-pagination.mjs.map +1 -1
  41. package/fesm2020/mintplayer-ng-bootstrap-rating.mjs +5 -2
  42. package/fesm2020/mintplayer-ng-bootstrap-rating.mjs.map +1 -1
  43. package/fesm2020/mintplayer-ng-bootstrap-scheduler.mjs +1 -0
  44. package/fesm2020/mintplayer-ng-bootstrap-scheduler.mjs.map +1 -1
  45. package/file-upload/src/component/file-upload.component.d.ts +1 -0
  46. package/file-upload/src/file-upload.d.ts +1 -0
  47. package/multiselect/src/component/multiselect.component.d.ts +9 -7
  48. package/multiselect/src/directives/button-template/button-template.directive.d.ts +4 -4
  49. package/multiselect/src/directives/footer-template/footer-template.directive.d.ts +4 -4
  50. package/multiselect/src/directives/header-template/header-template.directive.d.ts +4 -4
  51. package/package.json +1 -1
  52. package/pagination/src/component/pagination/pagination.component.d.ts +1 -0
  53. package/rating/src/component/rating.component.d.ts +1 -0
  54. package/scheduler/src/components/scheduler/scheduler.component.d.ts +1 -0
@@ -21,6 +21,8 @@ export declare class BsCalendarComponent implements OnDestroy {
21
21
  nextMonth(): boolean;
22
22
  isSameDate(date1: Date | null, date2: Date | null): boolean;
23
23
  goto(day: DateDayOfMonth | null): void;
24
+ trackByWeekDay(index: number, item: WeekDay): string;
25
+ trackByWeek(index: number, item: Week): number;
24
26
  static ɵfac: i0.ɵɵFactoryDeclaration<BsCalendarComponent, never>;
25
27
  static ɵcmp: i0.ɵɵComponentDeclaration<BsCalendarComponent, "bs-calendar", never, { "currentMonth": "currentMonth"; "selectedDate": "selectedDate"; }, { "currentMonthChange": "currentMonthChange"; "selectedDateChange": "selectedDateChange"; }, never, never, false, never>;
26
28
  }
@@ -25,6 +25,8 @@ export declare class BsCarouselComponent {
25
25
  onKeyPress(ev: KeyboardEvent): void;
26
26
  previousImage(): void;
27
27
  nextImage(): void;
28
+ imageCounter: number;
29
+ trackByImageId(index: number, item: BsCarouselImageDirective): number;
28
30
  static ɵfac: i0.ɵɵFactoryDeclaration<BsCarouselComponent, never>;
29
31
  static ɵcmp: i0.ɵɵComponentDeclaration<BsCarouselComponent, "bs-carousel", never, { "indicators": "indicators"; "keyboardEvents": "keyboardEvents"; "animation": "animation"; }, {}, ["images"], never, false, never>;
30
32
  }
@@ -1,9 +1,11 @@
1
1
  import { TemplateRef } from '@angular/core';
2
+ import { BsCarouselComponent } from '../carousel/carousel.component';
2
3
  import * as i0 from "@angular/core";
3
4
  export declare class BsCarouselImageDirective {
4
5
  private templateRef;
5
6
  itemTemplate: TemplateRef<any>;
6
- constructor(templateRef: TemplateRef<any>);
7
+ constructor(templateRef: TemplateRef<any>, carousel: BsCarouselComponent);
8
+ id: number;
7
9
  width100class: boolean;
8
10
  static ɵfac: i0.ɵɵFactoryDeclaration<BsCarouselImageDirective, never>;
9
11
  static ɵdir: i0.ɵɵDirectiveDeclaration<BsCarouselImageDirective, "*[bsCarouselImage]", never, {}, {}, never, never, false, never>;
@@ -87,12 +87,18 @@ export class BsCalendarComponent {
87
87
  this.selectedDate$.next(day.date);
88
88
  }
89
89
  }
90
+ trackByWeekDay(index, item) {
91
+ return item.long;
92
+ }
93
+ trackByWeek(index, item) {
94
+ return item.number;
95
+ }
90
96
  }
91
97
  BsCalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: BsCalendarComponent, deps: [{ token: i1.BsCalendarMonthService }], target: i0.ɵɵFactoryTarget.Component });
92
- BsCalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: BsCalendarComponent, selector: "bs-calendar", inputs: { currentMonth: "currentMonth", selectedDate: "selectedDate" }, outputs: { currentMonthChange: "currentMonthChange", selectedDateChange: "selectedDateChange" }, ngImport: i0, template: "<table class=\"table w-auto mb-0\">\n <tr>\n <td>\n <button class=\"btn btn-default\" (click)=\"previousMonth()\">\n <bs-icon [icon]=\"'chevron-left'\" class=\"fw-bolder\"></bs-icon>\n </button>\n </td>\n <td colspan=\"6\" class=\"fw-bolder\">\n {{ currentMonth$ | async | monthName | ucFirst }}\n {{ (currentMonth$ | async)?.getFullYear() }}\n </td>\n <td>\n <button class=\"btn btn-default border-bottom-0\" (click)=\"nextMonth()\">\n <bs-icon [icon]=\"'chevron-right'\" class=\"fw-bolder\"></bs-icon>\n </button>\n </td>\n </tr>\n <tr>\n <th></th>\n <th *ngFor=\"let dayOfWeek of shownDays$ | async\" [title]=\"dayOfWeek.long\">\n {{ dayOfWeek.short }}\n </th>\n </tr>\n <tr *ngFor=\"let week of (weeks$ | async)\">\n <th>\n {{ week.number }}\n </th>\n <td [class.selected]=\"day === null ? false : isSameDate(selectedDate$ | async, day.date)\" *ngFor=\"let day of week.days\" (click)=\"goto(day)\">\n <span *ngIf=\"day !== null\" [class.text-muted]=\"!day.isInMonth\">{{ day.dayOfMonth }}</span>\n </td>\n </tr>\n</table>", styles: [".text-muted{color:#9ea7af!important}table{border-collapse:collapse;border:1px solid rgba(0,0,0,.125);background:#fff}table td,table th{width:40px;height:40px;text-align:center}table td span,table th span{cursor:pointer;white-space:nowrap}table td.selected{background-color:#0d6efd;color:#fff}table th{background-color:#f8f9fa}table tr{border-top:none}table tr:first-child>td{border-bottom:1px solid rgba(0,0,0,.125)}table tr:nth-of-type(2)>th:not(:nth-of-type(1)){border-bottom:1px solid rgba(0,0,0,.125)}table tr:not(:nth-of-type(2))>th:nth-of-type(1){border-right:1px solid rgba(0,0,0,.125)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.BsIconComponent, selector: "bs-icon", inputs: ["icon"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.UcFirstPipe, name: "ucFirst" }, { kind: "pipe", type: i1.MonthNamePipe, name: "monthName" }] });
98
+ BsCalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: BsCalendarComponent, selector: "bs-calendar", inputs: { currentMonth: "currentMonth", selectedDate: "selectedDate" }, outputs: { currentMonthChange: "currentMonthChange", selectedDateChange: "selectedDateChange" }, ngImport: i0, template: "<table class=\"table w-auto mb-0\">\n <tr>\n <td>\n <button class=\"btn btn-default\" (click)=\"previousMonth()\">\n <bs-icon [icon]=\"'chevron-left'\" class=\"fw-bolder\"></bs-icon>\n </button>\n </td>\n <td colspan=\"6\" class=\"fw-bolder\">\n {{ currentMonth$ | async | monthName | ucFirst }}\n {{ (currentMonth$ | async)?.getFullYear() }}\n </td>\n <td>\n <button class=\"btn btn-default border-bottom-0\" (click)=\"nextMonth()\">\n <bs-icon [icon]=\"'chevron-right'\" class=\"fw-bolder\"></bs-icon>\n </button>\n </td>\n </tr>\n <tr>\n <th></th>\n <th *ngFor=\"let dayOfWeek of shownDays$ | async; trackBy: trackByWeekDay\" [title]=\"dayOfWeek.long\">\n {{ dayOfWeek.short }}\n </th>\n </tr>\n <tr *ngFor=\"let week of (weeks$ | async); trackBy: trackByWeek\">\n <th>\n {{ week.number }}\n </th>\n <td [class.selected]=\"day === null ? false : isSameDate(selectedDate$ | async, day.date)\" *ngFor=\"let day of week.days\" (click)=\"goto(day)\">\n <span *ngIf=\"day !== null\" [class.text-muted]=\"!day.isInMonth\">{{ day.dayOfMonth }}</span>\n </td>\n </tr>\n</table>", styles: [".text-muted{color:#9ea7af!important}table{border-collapse:collapse;border:1px solid rgba(0,0,0,.125);background:#fff}table td,table th{width:40px;height:40px;text-align:center}table td span,table th span{cursor:pointer;white-space:nowrap}table td.selected{background-color:#0d6efd;color:#fff}table th{background-color:#f8f9fa}table tr{border-top:none}table tr:first-child>td{border-bottom:1px solid rgba(0,0,0,.125)}table tr:nth-of-type(2)>th:not(:nth-of-type(1)){border-bottom:1px solid rgba(0,0,0,.125)}table tr:not(:nth-of-type(2))>th:nth-of-type(1){border-right:1px solid rgba(0,0,0,.125)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.BsIconComponent, selector: "bs-icon", inputs: ["icon"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.UcFirstPipe, name: "ucFirst" }, { kind: "pipe", type: i1.MonthNamePipe, name: "monthName" }] });
93
99
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: BsCalendarComponent, decorators: [{
94
100
  type: Component,
95
- args: [{ selector: 'bs-calendar', template: "<table class=\"table w-auto mb-0\">\n <tr>\n <td>\n <button class=\"btn btn-default\" (click)=\"previousMonth()\">\n <bs-icon [icon]=\"'chevron-left'\" class=\"fw-bolder\"></bs-icon>\n </button>\n </td>\n <td colspan=\"6\" class=\"fw-bolder\">\n {{ currentMonth$ | async | monthName | ucFirst }}\n {{ (currentMonth$ | async)?.getFullYear() }}\n </td>\n <td>\n <button class=\"btn btn-default border-bottom-0\" (click)=\"nextMonth()\">\n <bs-icon [icon]=\"'chevron-right'\" class=\"fw-bolder\"></bs-icon>\n </button>\n </td>\n </tr>\n <tr>\n <th></th>\n <th *ngFor=\"let dayOfWeek of shownDays$ | async\" [title]=\"dayOfWeek.long\">\n {{ dayOfWeek.short }}\n </th>\n </tr>\n <tr *ngFor=\"let week of (weeks$ | async)\">\n <th>\n {{ week.number }}\n </th>\n <td [class.selected]=\"day === null ? false : isSameDate(selectedDate$ | async, day.date)\" *ngFor=\"let day of week.days\" (click)=\"goto(day)\">\n <span *ngIf=\"day !== null\" [class.text-muted]=\"!day.isInMonth\">{{ day.dayOfMonth }}</span>\n </td>\n </tr>\n</table>", styles: [".text-muted{color:#9ea7af!important}table{border-collapse:collapse;border:1px solid rgba(0,0,0,.125);background:#fff}table td,table th{width:40px;height:40px;text-align:center}table td span,table th span{cursor:pointer;white-space:nowrap}table td.selected{background-color:#0d6efd;color:#fff}table th{background-color:#f8f9fa}table tr{border-top:none}table tr:first-child>td{border-bottom:1px solid rgba(0,0,0,.125)}table tr:nth-of-type(2)>th:not(:nth-of-type(1)){border-bottom:1px solid rgba(0,0,0,.125)}table tr:not(:nth-of-type(2))>th:nth-of-type(1){border-right:1px solid rgba(0,0,0,.125)}\n"] }]
101
+ args: [{ selector: 'bs-calendar', template: "<table class=\"table w-auto mb-0\">\n <tr>\n <td>\n <button class=\"btn btn-default\" (click)=\"previousMonth()\">\n <bs-icon [icon]=\"'chevron-left'\" class=\"fw-bolder\"></bs-icon>\n </button>\n </td>\n <td colspan=\"6\" class=\"fw-bolder\">\n {{ currentMonth$ | async | monthName | ucFirst }}\n {{ (currentMonth$ | async)?.getFullYear() }}\n </td>\n <td>\n <button class=\"btn btn-default border-bottom-0\" (click)=\"nextMonth()\">\n <bs-icon [icon]=\"'chevron-right'\" class=\"fw-bolder\"></bs-icon>\n </button>\n </td>\n </tr>\n <tr>\n <th></th>\n <th *ngFor=\"let dayOfWeek of shownDays$ | async; trackBy: trackByWeekDay\" [title]=\"dayOfWeek.long\">\n {{ dayOfWeek.short }}\n </th>\n </tr>\n <tr *ngFor=\"let week of (weeks$ | async); trackBy: trackByWeek\">\n <th>\n {{ week.number }}\n </th>\n <td [class.selected]=\"day === null ? false : isSameDate(selectedDate$ | async, day.date)\" *ngFor=\"let day of week.days\" (click)=\"goto(day)\">\n <span *ngIf=\"day !== null\" [class.text-muted]=\"!day.isInMonth\">{{ day.dayOfMonth }}</span>\n </td>\n </tr>\n</table>", styles: [".text-muted{color:#9ea7af!important}table{border-collapse:collapse;border:1px solid rgba(0,0,0,.125);background:#fff}table td,table th{width:40px;height:40px;text-align:center}table td span,table th span{cursor:pointer;white-space:nowrap}table td.selected{background-color:#0d6efd;color:#fff}table th{background-color:#f8f9fa}table tr{border-top:none}table tr:first-child>td{border-bottom:1px solid rgba(0,0,0,.125)}table tr:nth-of-type(2)>th:not(:nth-of-type(1)){border-bottom:1px solid rgba(0,0,0,.125)}table tr:not(:nth-of-type(2))>th:nth-of-type(1){border-right:1px solid rgba(0,0,0,.125)}\n"] }]
96
102
  }], ctorParameters: function () { return [{ type: i1.BsCalendarMonthService }]; }, propDecorators: { currentMonthChange: [{
97
103
  type: Output
98
104
  }], currentMonth: [{
@@ -102,4 +108,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
102
108
  }], selectedDate: [{
103
109
  type: Input
104
110
  }] } });
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9jYWxlbmRhci9zcmMvY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9jYWxlbmRhci9zcmMvY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQWMsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUYsT0FBTyxFQUFFLHNCQUFzQixFQUFpQyxNQUFNLHlDQUF5QyxDQUFDOzs7Ozs7QUFPaEgsTUFBTSxPQUFPLG1CQUFtQjtJQUM5QixZQUFvQixvQkFBNEM7UUFBNUMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUF3QjtRQW1DeEQsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFJbkMsc0JBQXNCO1FBQ3RCLGtCQUFhLEdBQUcsSUFBSSxlQUFlLENBQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3JDLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFPL0QsWUFBWTtRQUNaLHNCQUFzQjtRQUN0QixrQkFBYSxHQUFHLElBQUksZUFBZSxDQUFPLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNyQyx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBbEQ3RCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhO2FBQzdCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUMvRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU07YUFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQzthQUN6QyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDbkMsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ1gsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pCLElBQUksUUFBUSxFQUFFO2dCQUNaLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUNwQixNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FDbkIsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFDM0IsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFDeEIsQ0FBQyxFQUFFLFVBQVUsQ0FDZCxDQUFDO29CQUNGLE9BQWdCO3dCQUNkLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQzt3QkFDM0QsSUFBSSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDO3FCQUMxRCxDQUFDO2dCQUNKLENBQUMsQ0FBQyxDQUFDO2FBQ0o7aUJBQU07Z0JBQ0wsT0FBTyxFQUFFLENBQUM7YUFDWDtRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7UUFDSixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDckUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUN0RSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQVNELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7SUFDbEMsQ0FBQztJQUNELElBQWEsWUFBWSxDQUFDLEtBQVc7UUFDbkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUtELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7SUFDbEMsQ0FBQztJQUNELElBQWEsWUFBWSxDQUFDLEtBQVc7UUFDbkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUNELFlBQVk7SUFFWixXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDckIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQ3ZELENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDckIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQ3ZELENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFrQixFQUFFLEtBQWtCO1FBQy9DLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ2xELElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBRW5ELE9BQU8sQ0FDTCxLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssS0FBSyxDQUFDLFdBQVcsRUFBRTtZQUMzQyxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssS0FBSyxDQUFDLFFBQVEsRUFBRTtZQUNyQyxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUNwQyxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksQ0FBQyxHQUEwQjtRQUM3QixJQUFJLEdBQUcsRUFBRTtZQUNQLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNuQztJQUNILENBQUM7O2dIQXBHVSxtQkFBbUI7b0dBQW5CLG1CQUFtQiw0TkNUaEMsaXZDQStCUTsyRkR0QkssbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGFBQWE7NkdBOENOLGtCQUFrQjtzQkFBbEMsTUFBTTtnQkFJTSxZQUFZO3NCQUF4QixLQUFLO2dCQU1XLGtCQUFrQjtzQkFBbEMsTUFBTTtnQkFJTSxZQUFZO3NCQUF4QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCc0NhbGVuZGFyTW9udGhTZXJ2aWNlLCBEYXRlRGF5T2ZNb250aCwgV2VlaywgV2Vla0RheSB9IGZyb20gJ0BtaW50cGxheWVyL25nLWJvb3RzdHJhcC9jYWxlbmRhci1tb250aCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JzLWNhbGVuZGFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FsZW5kYXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnNDYWxlbmRhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2FsZW5kYXJNb250aFNlcnZpY2U6IEJzQ2FsZW5kYXJNb250aFNlcnZpY2UpIHtcbiAgICB0aGlzLndlZWtzJCA9IHRoaXMuY3VycmVudE1vbnRoJFxuICAgICAgLnBpcGUobWFwKChtb250aCkgPT4gdGhpcy5jYWxlbmRhck1vbnRoU2VydmljZS5nZXRXZWVrcyhtb250aCkpKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpO1xuICAgIHRoaXMuc2hvd25EYXlzJCA9IHRoaXMud2Vla3MkXG4gICAgICAucGlwZShmaWx0ZXIoKHdlZWtzKSA9PiB3ZWVrcy5sZW5ndGggPiAxKSlcbiAgICAgIC5waXBlKG1hcCgod2Vla3MpID0+IHdlZWtzWzFdLmRheXMpKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoZGF5cykgPT4ge1xuICAgICAgICAgIGNvbnN0IGZpcnN0RGF5ID0gZGF5c1swXTtcbiAgICAgICAgICBpZiAoZmlyc3REYXkpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXlzLm1hcCgoZCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoXG4gICAgICAgICAgICAgICAgZmlyc3REYXkuZGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgICAgICAgICAgIGZpcnN0RGF5LmRhdGUuZ2V0TW9udGgoKSxcbiAgICAgICAgICAgICAgICBkPy5kYXlPZk1vbnRoXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHJldHVybiA8V2Vla0RheT57XG4gICAgICAgICAgICAgICAgc2hvcnQ6IGRhdGUudG9Mb2NhbGVTdHJpbmcoJ2RlZmF1bHQnLCB7IHdlZWtkYXk6ICdzaG9ydCcgfSksXG4gICAgICAgICAgICAgICAgbG9uZzogZGF0ZS50b0xvY2FsZVN0cmluZygnZGVmYXVsdCcsIHsgd2Vla2RheTogJ2xvbmcnIH0pXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgdGhpcy5zZWxlY3RlZERhdGUkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZSgoZGF0ZSkgPT4ge1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGVDaGFuZ2UuZW1pdChkYXRlKTtcbiAgICB9KTtcbiAgICB0aGlzLmN1cnJlbnRNb250aCQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKChtb250aCkgPT4ge1xuICAgICAgdGhpcy5jdXJyZW50TW9udGhDaGFuZ2UuZW1pdChtb250aCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdCgpO1xuICB3ZWVrcyQ6IE9ic2VydmFibGU8V2Vla1tdPjtcbiAgc2hvd25EYXlzJDogT2JzZXJ2YWJsZTxXZWVrRGF5W10+O1xuXG4gIC8vI3JlZ2lvbiBDdXJyZW50TW9udGhcbiAgY3VycmVudE1vbnRoJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGF0ZT4obmV3IERhdGUoKSk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgY3VycmVudE1vbnRoQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuICBnZXQgY3VycmVudE1vbnRoKCkge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRNb250aCQudmFsdWU7XG4gIH1cbiAgQElucHV0KCkgc2V0IGN1cnJlbnRNb250aCh2YWx1ZTogRGF0ZSkge1xuICAgIHRoaXMuY3VycmVudE1vbnRoJC5uZXh0KHZhbHVlKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cbiAgLy8jcmVnaW9uIFNlbGVjdGVkRGF0ZVxuICBzZWxlY3RlZERhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYXRlPihuZXcgRGF0ZSgpKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBzZWxlY3RlZERhdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG4gIGdldCBzZWxlY3RlZERhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWREYXRlJC52YWx1ZTtcbiAgfVxuICBASW5wdXQoKSBzZXQgc2VsZWN0ZWREYXRlKHZhbHVlOiBEYXRlKSB7XG4gICAgdGhpcy5zZWxlY3RlZERhdGUkLm5leHQodmFsdWUpO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveWVkJC5uZXh0KHRydWUpO1xuICB9XG5cbiAgcHJldmlvdXNNb250aCgpIHtcbiAgICB0aGlzLmN1cnJlbnRNb250aCQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKG1vbnRoKSA9PiB7XG4gICAgICB0aGlzLmN1cnJlbnRNb250aCQubmV4dChcbiAgICAgICAgbmV3IERhdGUobW9udGguZ2V0RnVsbFllYXIoKSwgbW9udGguZ2V0TW9udGgoKSAtIDEsIDEpXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgbmV4dE1vbnRoKCkge1xuICAgIHRoaXMuY3VycmVudE1vbnRoJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgobW9udGgpID0+IHtcbiAgICAgIHRoaXMuY3VycmVudE1vbnRoJC5uZXh0KFxuICAgICAgICBuZXcgRGF0ZShtb250aC5nZXRGdWxsWWVhcigpLCBtb250aC5nZXRNb250aCgpICsgMSwgMSlcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpc1NhbWVEYXRlKGRhdGUxOiBEYXRlIHwgbnVsbCwgZGF0ZTI6IERhdGUgfCBudWxsKSB7XG4gICAgaWYgKGRhdGUxID09PSBudWxsICYmIGRhdGUyID09PSBudWxsKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoZGF0ZTEgPT09IG51bGwgfHwgZGF0ZTIgPT09IG51bGwpIHJldHVybiBmYWxzZTtcblxuICAgIHJldHVybiAoXG4gICAgICBkYXRlMS5nZXRGdWxsWWVhcigpID09PSBkYXRlMi5nZXRGdWxsWWVhcigpICYmXG4gICAgICBkYXRlMS5nZXRNb250aCgpID09PSBkYXRlMi5nZXRNb250aCgpICYmXG4gICAgICBkYXRlMS5nZXREYXRlKCkgPT09IGRhdGUyLmdldERhdGUoKVxuICAgICk7XG4gIH1cblxuICBnb3RvKGRheTogRGF0ZURheU9mTW9udGggfCBudWxsKSB7XG4gICAgaWYgKGRheSkge1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGUkLm5leHQoZGF5LmRhdGUpO1xuICAgIH1cbiAgfVxufVxuIiwiPHRhYmxlIGNsYXNzPVwidGFibGUgdy1hdXRvIG1iLTBcIj5cbiAgICA8dHI+XG4gICAgICAgIDx0ZD5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIiAoY2xpY2spPVwicHJldmlvdXNNb250aCgpXCI+XG4gICAgICAgICAgICAgICAgPGJzLWljb24gW2ljb25dPVwiJ2NoZXZyb24tbGVmdCdcIiBjbGFzcz1cImZ3LWJvbGRlclwiPjwvYnMtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L3RkPlxuICAgICAgICA8dGQgY29sc3Bhbj1cIjZcIiBjbGFzcz1cImZ3LWJvbGRlclwiPlxuICAgICAgICAgICAge3sgY3VycmVudE1vbnRoJCB8IGFzeW5jIHwgbW9udGhOYW1lIHwgdWNGaXJzdCB9fVxuICAgICAgICAgICAge3sgKGN1cnJlbnRNb250aCQgfCBhc3luYyk/LmdldEZ1bGxZZWFyKCkgfX1cbiAgICAgICAgPC90ZD5cbiAgICAgICAgPHRkPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBib3JkZXItYm90dG9tLTBcIiAoY2xpY2spPVwibmV4dE1vbnRoKClcIj5cbiAgICAgICAgICAgICAgICA8YnMtaWNvbiBbaWNvbl09XCInY2hldnJvbi1yaWdodCdcIiBjbGFzcz1cImZ3LWJvbGRlclwiPjwvYnMtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L3RkPlxuICAgIDwvdHI+XG4gICAgPHRyPlxuICAgICAgICA8dGg+PC90aD5cbiAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBkYXlPZldlZWsgb2Ygc2hvd25EYXlzJCB8IGFzeW5jXCIgW3RpdGxlXT1cImRheU9mV2Vlay5sb25nXCI+XG4gICAgICAgICAgICB7eyBkYXlPZldlZWsuc2hvcnQgfX1cbiAgICAgICAgPC90aD5cbiAgICA8L3RyPlxuICAgIDx0ciAqbmdGb3I9XCJsZXQgd2VlayBvZiAod2Vla3MkIHwgYXN5bmMpXCI+XG4gICAgICAgIDx0aD5cbiAgICAgICAgICAgIHt7IHdlZWsubnVtYmVyIH19XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0ZCBbY2xhc3Muc2VsZWN0ZWRdPVwiZGF5ID09PSBudWxsID8gZmFsc2UgOiBpc1NhbWVEYXRlKHNlbGVjdGVkRGF0ZSQgfCBhc3luYywgZGF5LmRhdGUpXCIgKm5nRm9yPVwibGV0IGRheSBvZiB3ZWVrLmRheXNcIiAoY2xpY2spPVwiZ290byhkYXkpXCI+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImRheSAhPT0gbnVsbFwiIFtjbGFzcy50ZXh0LW11dGVkXT1cIiFkYXkuaXNJbk1vbnRoXCI+e3sgZGF5LmRheU9mTW9udGggfX08L3NwYW4+XG4gICAgICAgIDwvdGQ+XG4gICAgPC90cj5cbjwvdGFibGU+Il19
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9jYWxlbmRhci9zcmMvY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9jYWxlbmRhci9zcmMvY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQWMsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUYsT0FBTyxFQUFFLHNCQUFzQixFQUFpQyxNQUFNLHlDQUF5QyxDQUFDOzs7Ozs7QUFPaEgsTUFBTSxPQUFPLG1CQUFtQjtJQUM5QixZQUFvQixvQkFBNEM7UUFBNUMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUF3QjtRQW1DeEQsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFJbkMsc0JBQXNCO1FBQ3RCLGtCQUFhLEdBQUcsSUFBSSxlQUFlLENBQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3JDLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFPL0QsWUFBWTtRQUNaLHNCQUFzQjtRQUN0QixrQkFBYSxHQUFHLElBQUksZUFBZSxDQUFPLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNyQyx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBbEQ3RCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhO2FBQzdCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFB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QUMsS0FBYSxFQUFFLElBQWE7UUFDekMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBYSxFQUFFLElBQVU7UUFDbkMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7O2dIQTVHVSxtQkFBbUI7b0dBQW5CLG1CQUFtQiw0TkNUaEMsZ3lDQStCUTsyRkR0QkssbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGFBQWE7NkdBOENOLGtCQUFrQjtzQkFBbEMsTUFBTTtnQkFJTSxZQUFZO3NCQUF4QixLQUFLO2dCQU1XLGtCQUFrQjtzQkFBbEMsTUFBTTtnQkFJTSxZQUFZO3NCQUF4QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCc0NhbGVuZGFyTW9udGhTZXJ2aWNlLCBEYXRlRGF5T2ZNb250aCwgV2VlaywgV2Vla0RheSB9IGZyb20gJ0BtaW50cGxheWVyL25nLWJvb3RzdHJhcC9jYWxlbmRhci1tb250aCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JzLWNhbGVuZGFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FsZW5kYXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnNDYWxlbmRhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2FsZW5kYXJNb250aFNlcnZpY2U6IEJzQ2FsZW5kYXJNb250aFNlcnZpY2UpIHtcbiAgICB0aGlzLndlZWtzJCA9IHRoaXMuY3VycmVudE1vbnRoJFxuICAgICAgLnBpcGUobWFwKChtb250aCkgPT4gdGhpcy5jYWxlbmRhck1vbnRoU2VydmljZS5nZXRXZWVrcyhtb250aCkpKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpO1xuICAgIHRoaXMuc2hvd25EYXlzJCA9IHRoaXMud2Vla3MkXG4gICAgICAucGlwZShmaWx0ZXIoKHdlZWtzKSA9PiB3ZWVrcy5sZW5ndGggPiAxKSlcbiAgICAgIC5waXBlKG1hcCgod2Vla3MpID0+IHdlZWtzWzFdLmRheXMpKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoZGF5cykgPT4ge1xuICAgICAgICAgIGNvbnN0IGZpcnN0RGF5ID0gZGF5c1swXTtcbiAgICAgICAgICBpZiAoZmlyc3REYXkpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXlzLm1hcCgoZCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoXG4gICAgICAgICAgICAgICAgZmlyc3REYXkuZGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgICAgICAgICAgIGZpcnN0RGF5LmRhdGUuZ2V0TW9udGgoKSxcbiAgICAgICAgICAgICAgICBkPy5kYXlPZk1vbnRoXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHJldHVybiA8V2Vla0RheT57XG4gICAgICAgICAgICAgICAgc2hvcnQ6IGRhdGUudG9Mb2NhbGVTdHJpbmcoJ2RlZmF1bHQnLCB7IHdlZWtkYXk6ICdzaG9ydCcgfSksXG4gICAgICAgICAgICAgICAgbG9uZzogZGF0ZS50b0xvY2FsZVN0cmluZygnZGVmYXVsdCcsIHsgd2Vla2RheTogJ2xvbmcnIH0pXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgdGhpcy5zZWxlY3RlZERhdGUkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZSgoZGF0ZSkgPT4ge1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGVDaGFuZ2UuZW1pdChkYXRlKTtcbiAgICB9KTtcbiAgICB0aGlzLmN1cnJlbnRNb250aCQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKChtb250aCkgPT4ge1xuICAgICAgdGhpcy5jdXJyZW50TW9udGhDaGFuZ2UuZW1pdChtb250aCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdCgpO1xuICB3ZWVrcyQ6IE9ic2VydmFibGU8V2Vla1tdPjtcbiAgc2hvd25EYXlzJDogT2JzZXJ2YWJsZTxXZWVrRGF5W10+O1xuXG4gIC8vI3JlZ2lvbiBDdXJyZW50TW9udGhcbiAgY3VycmVudE1vbnRoJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGF0ZT4obmV3IERhdGUoKSk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgY3VycmVudE1vbnRoQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuICBnZXQgY3VycmVudE1vbnRoKCkge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRNb250aCQudmFsdWU7XG4gIH1cbiAgQElucHV0KCkgc2V0IGN1cnJlbnRNb250aCh2YWx1ZTogRGF0ZSkge1xuICAgIHRoaXMuY3VycmVudE1vbnRoJC5uZXh0KHZhbHVlKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cbiAgLy8jcmVnaW9uIFNlbGVjdGVkRGF0ZVxuICBzZWxlY3RlZERhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYXRlPihuZXcgRGF0ZSgpKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBzZWxlY3RlZERhdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG4gIGdldCBzZWxlY3RlZERhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWREYXRlJC52YWx1ZTtcbiAgfVxuICBASW5wdXQoKSBzZXQgc2VsZWN0ZWREYXRlKHZhbHVlOiBEYXRlKSB7XG4gICAgdGhpcy5zZWxlY3RlZERhdGUkLm5leHQodmFsdWUpO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveWVkJC5uZXh0KHRydWUpO1xuICB9XG5cbiAgcHJldmlvdXNNb250aCgpIHtcbiAgICB0aGlzLmN1cnJlbnRNb250aCQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKG1vbnRoKSA9PiB7XG4gICAgICB0aGlzLmN1cnJlbnRNb250aCQubmV4dChcbiAgICAgICAgbmV3IERhdGUobW9udGguZ2V0RnVsbFllYXIoKSwgbW9udGguZ2V0TW9udGgoKSAtIDEsIDEpXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgbmV4dE1vbnRoKCkge1xuICAgIHRoaXMuY3VycmVudE1vbnRoJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgobW9udGgpID0+IHtcbiAgICAgIHRoaXMuY3VycmVudE1vbnRoJC5uZXh0KFxuICAgICAgICBuZXcgRGF0ZShtb250aC5nZXRGdWxsWWVhcigpLCBtb250aC5nZXRNb250aCgpICsgMSwgMSlcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpc1NhbWVEYXRlKGRhdGUxOiBEYXRlIHwgbnVsbCwgZGF0ZTI6IERhdGUgfCBudWxsKSB7XG4gICAgaWYgKGRhdGUxID09PSBudWxsICYmIGRhdGUyID09PSBudWxsKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoZGF0ZTEgPT09IG51bGwgfHwgZGF0ZTIgPT09IG51bGwpIHJldHVybiBmYWxzZTtcblxuICAgIHJldHVybiAoXG4gICAgICBkYXRlMS5nZXRGdWxsWWVhcigpID09PSBkYXRlMi5nZXRGdWxsWWVhcigpICYmXG4gICAgICBkYXRlMS5nZXRNb250aCgpID09PSBkYXRlMi5nZXRNb250aCgpICYmXG4gICAgICBkYXRlMS5nZXREYXRlKCkgPT09IGRhdGUyLmdldERhdGUoKVxuICAgICk7XG4gIH1cblxuICBnb3RvKGRheTogRGF0ZURheU9mTW9udGggfCBudWxsKSB7XG4gICAgaWYgKGRheSkge1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGUkLm5leHQoZGF5LmRhdGUpO1xuICAgIH1cbiAgfVxuICBcbiAgdHJhY2tCeVdlZWtEYXkoaW5kZXg6IG51bWJlciwgaXRlbTogV2Vla0RheSkge1xuICAgIHJldHVybiBpdGVtLmxvbmc7XG4gIH1cblxuICB0cmFja0J5V2VlayhpbmRleDogbnVtYmVyLCBpdGVtOiBXZWVrKSB7XG4gICAgcmV0dXJuIGl0ZW0ubnVtYmVyO1xuICB9XG59XG4iLCI8dGFibGUgY2xhc3M9XCJ0YWJsZSB3LWF1dG8gbWItMFwiPlxuICAgIDx0cj5cbiAgICAgICAgPHRkPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiIChjbGljayk9XCJwcmV2aW91c01vbnRoKClcIj5cbiAgICAgICAgICAgICAgICA8YnMtaWNvbiBbaWNvbl09XCInY2hldnJvbi1sZWZ0J1wiIGNsYXNzPVwiZnctYm9sZGVyXCI+PC9icy1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIDx0ZCBjb2xzcGFuPVwiNlwiIGNsYXNzPVwiZnctYm9sZGVyXCI+XG4gICAgICAgICAgICB7eyBjdXJyZW50TW9udGgkIHwgYXN5bmMgfCBtb250aE5hbWUgfCB1Y0ZpcnN0IH19XG4gICAgICAgICAgICB7eyAoY3VycmVudE1vbnRoJCB8IGFzeW5jKT8uZ2V0RnVsbFllYXIoKSB9fVxuICAgICAgICA8L3RkPlxuICAgICAgICA8dGQ+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJvcmRlci1ib3R0b20tMFwiIChjbGljayk9XCJuZXh0TW9udGgoKVwiPlxuICAgICAgICAgICAgICAgIDxicy1pY29uIFtpY29uXT1cIidjaGV2cm9uLXJpZ2h0J1wiIGNsYXNzPVwiZnctYm9sZGVyXCI+PC9icy1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvdGQ+XG4gICAgPC90cj5cbiAgICA8dHI+XG4gICAgICAgIDx0aD48L3RoPlxuICAgICAgICA8dGggKm5nRm9yPVwibGV0IGRheU9mV2VlayBvZiBzaG93bkRheXMkIHwgYXN5bmM7IHRyYWNrQnk6IHRyYWNrQnlXZWVrRGF5XCIgW3RpdGxlXT1cImRheU9mV2Vlay5sb25nXCI+XG4gICAgICAgICAgICB7eyBkYXlPZldlZWsuc2hvcnQgfX1cbiAgICAgICAgPC90aD5cbiAgICA8L3RyPlxuICAgIDx0ciAqbmdGb3I9XCJsZXQgd2VlayBvZiAod2Vla3MkIHwgYXN5bmMpOyB0cmFja0J5OiB0cmFja0J5V2Vla1wiPlxuICAgICAgICA8dGg+XG4gICAgICAgICAgICB7eyB3ZWVrLm51bWJlciB9fVxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGQgW2NsYXNzLnNlbGVjdGVkXT1cImRheSA9PT0gbnVsbCA/IGZhbHNlIDogaXNTYW1lRGF0ZShzZWxlY3RlZERhdGUkIHwgYXN5bmMsIGRheS5kYXRlKVwiICpuZ0Zvcj1cImxldCBkYXkgb2Ygd2Vlay5kYXlzXCIgKGNsaWNrKT1cImdvdG8oZGF5KVwiPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJkYXkgIT09IG51bGxcIiBbY2xhc3MudGV4dC1tdXRlZF09XCIhZGF5LmlzSW5Nb250aFwiPnt7IGRheS5kYXlPZk1vbnRoIH19PC9zcGFuPlxuICAgICAgICA8L3RkPlxuICAgIDwvdHI+XG48L3RhYmxlPiJdfQ==
@@ -20,6 +20,7 @@ export class BsCarouselComponent {
20
20
  //#region Animation
21
21
  this.animationsDisabled = false;
22
22
  this._animation = 'slide';
23
+ this.imageCounter = 1;
23
24
  this.isServerSide = isPlatformServer(platformId);
24
25
  this.imageCount$ = this.images$.pipe(map((images) => images?.length ?? 0));
25
26
  this.firstImageTemplate$ = this.images$.pipe(map((images) => {
@@ -99,12 +100,15 @@ export class BsCarouselComponent {
99
100
  break;
100
101
  }
101
102
  }
103
+ trackByImageId(index, item) {
104
+ return item.id;
105
+ }
102
106
  }
103
107
  BsCarouselComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: BsCarouselComponent, deps: [{ token: PLATFORM_ID }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
104
- BsCarouselComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: BsCarouselComponent, selector: "bs-carousel", inputs: { indicators: "indicators", keyboardEvents: "keyboardEvents", animation: "animation" }, host: { listeners: { "document:keydown.ArrowLeft": "onKeyPress($event)", "document:keydown.ArrowRight": "onKeyPress($event)" }, properties: { "@.disabled": "this.animationsDisabled" } }, queries: [{ propertyName: "images", predicate: i0.forwardRef(function () { return BsCarouselImageDirective; }) }], viewQueries: [{ propertyName: "swipeContainer", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"isServerSide\">\n <div class=\"carousel mx-auto noscript\">\n <div class=\"carousel-inner d-grid\" *ngIf=\"(imageCount$ | async) as imageCount\">\n <ng-container *ngFor=\"let image of (images$ | async); let i = index\">\n <input type=\"radio\" [id]=\"'car-' + i\" [name]=\"'car'\" class=\"car-radio d-none\" bsNoNoscript [checked]=\"i === 0\">\n <div class=\"carousel-item fade d-flex flex-row h-100 align-items-center\">\n <div class=\"w-100 position-relative\">\n <ng-container [ngTemplateOutlet]=\"image.itemTemplate\"></ng-container>\n <div *ngIf=\"indicators\" class=\"carousel-indicators\">\n <label *ngFor=\"let image of (images$ | async); let j = index\" [attr.for]=\"'car-' + (j % imageCount)\" [class.active]=\"i === j\" data-bs-target></label>\n </div>\n </div>\n </div>\n \n <label class=\"carousel-control-prev cursor-pointer\" [for]=\"'car-' + ((i - 1 + imageCount) % imageCount)\">\n <span class=\"carousel-control-prev-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Previous</span>\n </label>\n <label class=\"carousel-control-next cursor-pointer\" [for]=\"'car-' + ((i + 1) % imageCount)\">\n <span class=\"carousel-control-next-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Next</span>\n </label>\n </ng-container>\n </div>\n </div>\n</ng-container>\n<ng-container *ngIf=\"!isServerSide\">\n <div *ngIf=\"animation === 'slide'\" class=\"carousel slide mx-auto\" [style.height.px]=\"container.currentSlideHeight$ | async\">\n <div *ngIf=\"indicators\" class=\"carousel-indicators\">\n <button *ngFor=\"let image of (images$ | async); let i = index\" type=\"button\" (click)=\"container.goto(i)\"\n [class.active]=\"(container.imageIndex$ | async) === i\" data-bs-target\n [attr.aria-current]=\"(container.imageIndex$ | async) === i ? true : null\"\n [attr.aria-label]=\"'Slide ' + i\"></button>\n </div>\n <div class=\"carousel-inner overflow-hidden text-nowrap pe-none\">\n <div bsSwipeContainer #container=\"bsSwipeContainer\" [minimumOffset]=\"50\" [(imageIndex)]=\"currentImageIndex\">\n <div class=\"carousel-item d-inline-block float-none w-100 me-0 pe-auto\" bsSwipe [offside]=\"true\">\n <ng-container *ngTemplateOutlet=\"lastImageTemplate$ | async\"></ng-container>\n </div>\n <div *ngFor=\"let image of (images$ | async)\" class=\"carousel-item d-inline-block float-none w-100 me-0 pe-auto\" [class.active]=\"true\" bsSwipe>\n <ng-container *ngTemplateOutlet=\"image.itemTemplate\"></ng-container>\n </div>\n <div class=\"carousel-item d-inline-block float-none w-100 me-0 pe-auto\" bsSwipe [offside]=\"true\">\n <ng-container *ngTemplateOutlet=\"firstImageTemplate$ | async\"></ng-container>\n </div>\n </div>\n </div>\n <button class=\"carousel-control-prev\" type=\"button\" (click)=\"previousImage()\">\n <span class=\"carousel-control-prev-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Previous</span>\n </button>\n <button class=\"carousel-control-next\" type=\"button\" (click)=\"nextImage()\">\n <span class=\"carousel-control-next-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Next</span>\n </button>\n </div>\n <div *ngIf=\"animation === 'fade'\" class=\"carousel fade mx-auto\">\n <div *ngIf=\"indicators\" class=\"carousel-indicators\">\n <button *ngFor=\"let image of (images$ | async); let i = index\" type=\"button\" (click)=\"currentImageIndex = i\"\n [class.active]=\"currentImageIndex === i\" data-bs-target\n [attr.aria-current]=\"currentImageIndex === i ? true : null\"\n [attr.aria-label]=\"'Slide ' + i\"></button>\n </div>\n <div class=\"carousel-inner\">\n <ng-container *ngFor=\"let image of (images$ | async); let i = index\">\n <div class=\"carousel-item\" [class.active]=\"true\" @fadeInOut *ngIf=\"currentImageIndex === i\">\n <ng-container [ngTemplateOutlet]=\"image.itemTemplate\"></ng-container> \n </div>\n </ng-container>\n </div>\n <button class=\"carousel-control-prev\" type=\"button\" (click)=\"previousImage()\">\n <span class=\"carousel-control-prev-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Previous</span>\n </button>\n <button class=\"carousel-control-next\" type=\"button\" (click)=\"nextImage()\">\n <span class=\"carousel-control-next-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Next</span>\n </button>\n </div>\n</ng-container>", styles: [":host ::ng-deep .carousel{position:relative}:host ::ng-deep .carousel.pointer-event{touch-action:pan-y}:host ::ng-deep .carousel-inner{position:relative;width:100%;overflow:hidden}:host ::ng-deep .carousel-inner:after{display:block;clear:both;content:\"\"}:host ::ng-deep .carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion: reduce){:host ::ng-deep .carousel-item{transition:none}}:host ::ng-deep .carousel-item.active,:host ::ng-deep .carousel-item-next,:host ::ng-deep .carousel-item-prev{display:block}:host ::ng-deep .carousel-item-next:not(.carousel-item-start),:host ::ng-deep .active.carousel-item-end{transform:translate(100%)}:host ::ng-deep .carousel-item-prev:not(.carousel-item-end),:host ::ng-deep .active.carousel-item-start{transform:translate(-100%)}:host ::ng-deep .carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}:host ::ng-deep .carousel-fade .carousel-item.active,:host ::ng-deep .carousel-fade .carousel-item-next.carousel-item-start,:host ::ng-deep .carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}:host ::ng-deep .carousel-fade .active.carousel-item-start,:host ::ng-deep .carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion: reduce){:host ::ng-deep .carousel-fade .active.carousel-item-start,:host ::ng-deep .carousel-fade .active.carousel-item-end{transition:none}}:host ::ng-deep .carousel-control-prev,:host ::ng-deep .carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion: reduce){:host ::ng-deep .carousel-control-prev,:host ::ng-deep .carousel-control-next{transition:none}}:host ::ng-deep .carousel-control-prev:hover,:host ::ng-deep .carousel-control-prev:focus,:host ::ng-deep .carousel-control-next:hover,:host ::ng-deep .carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}:host ::ng-deep .carousel-control-prev{left:0}:host ::ng-deep .carousel-control-next{right:0}:host ::ng-deep .carousel-control-prev-icon,:host ::ng-deep .carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}:host ::ng-deep .carousel-control-prev-icon{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e\")}:host ::ng-deep .carousel-control-next-icon{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\")}:host ::ng-deep .carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}:host ::ng-deep .carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion: reduce){:host ::ng-deep .carousel-indicators [data-bs-target]{transition:none}}:host ::ng-deep .carousel-indicators .active{opacity:1}:host ::ng-deep .carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}:host ::ng-deep .carousel-dark .carousel-control-prev-icon,:host ::ng-deep .carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}:host ::ng-deep .carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}:host ::ng-deep .carousel-dark .carousel-caption{color:#000}:host ::ng-deep .carousel{min-height:100px;max-width:500px}:host ::ng-deep .carousel.noscript .carousel-inner{grid-template-rows:100%;grid-template-columns:100%}:host ::ng-deep .carousel.noscript .carousel-control-prev,:host ::ng-deep .carousel.noscript .carousel-control-next{display:none;z-index:10}:host ::ng-deep .carousel.noscript .carousel-item{display:block;opacity:0;transition:opacity .4s ease-in-out;grid-row:1;grid-column:1}:host ::ng-deep .carousel.noscript .car-radio.noscript:checked+.carousel-item{opacity:1;z-index:5}:host ::ng-deep .carousel.noscript .car-radio.noscript:checked+.carousel-item+label.carousel-control-prev,:host ::ng-deep .carousel.noscript .car-radio.noscript:checked+.carousel-item+label.carousel-control-prev+.carousel-control-next{display:flex}:host ::ng-deep .carousel.noscript .carousel-indicators{z-index:10}.wrapper{overflow:hidden}\n"], dependencies: [{ 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: "directive", type: i2.BsSwipeDirective, selector: "[bsSwipe]", inputs: ["offside"] }, { kind: "directive", type: i2.BsSwipeContainerDirective, selector: "[bsSwipeContainer]", inputs: ["minimumOffset", "imageIndex"], outputs: ["imageIndexChange"], exportAs: ["bsSwipeContainer"] }, { kind: "directive", type: i3.BsNoNoscriptDirective, selector: "[bsNoNoscript]" }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], animations: [FadeInOutAnimation] });
108
+ BsCarouselComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: BsCarouselComponent, selector: "bs-carousel", inputs: { indicators: "indicators", keyboardEvents: "keyboardEvents", animation: "animation" }, host: { listeners: { "document:keydown.ArrowLeft": "onKeyPress($event)", "document:keydown.ArrowRight": "onKeyPress($event)" }, properties: { "@.disabled": "this.animationsDisabled" } }, queries: [{ propertyName: "images", predicate: i0.forwardRef(function () { return BsCarouselImageDirective; }) }], viewQueries: [{ propertyName: "swipeContainer", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"isServerSide\">\n <div class=\"carousel mx-auto noscript\">\n <div class=\"carousel-inner d-grid\" *ngIf=\"(imageCount$ | async) as imageCount\">\n <ng-container *ngFor=\"let image of (images$ | async); trackBy: trackByImageId; let i = index\">\n <input type=\"radio\" [id]=\"'car-' + i\" [name]=\"'car'\" class=\"car-radio d-none\" bsNoNoscript [checked]=\"i === 0\">\n <div class=\"carousel-item fade d-flex flex-row h-100 align-items-center\">\n <div class=\"w-100 position-relative\">\n <ng-container [ngTemplateOutlet]=\"image.itemTemplate\"></ng-container>\n <div *ngIf=\"indicators\" class=\"carousel-indicators\">\n <label *ngFor=\"let image of (images$ | async); trackBy: trackByImageId; let j = index\" [attr.for]=\"'car-' + (j % imageCount)\" [class.active]=\"i === j\" data-bs-target></label>\n </div>\n </div>\n </div>\n \n <label class=\"carousel-control-prev cursor-pointer\" [for]=\"'car-' + ((i - 1 + imageCount) % imageCount)\">\n <span class=\"carousel-control-prev-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Previous</span>\n </label>\n <label class=\"carousel-control-next cursor-pointer\" [for]=\"'car-' + ((i + 1) % imageCount)\">\n <span class=\"carousel-control-next-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Next</span>\n </label>\n </ng-container>\n </div>\n </div>\n</ng-container>\n<ng-container *ngIf=\"!isServerSide\">\n <div *ngIf=\"animation === 'slide'\" class=\"carousel slide mx-auto\" [style.height.px]=\"container.currentSlideHeight$ | async\">\n <div *ngIf=\"indicators\" class=\"carousel-indicators\">\n <button *ngFor=\"let image of (images$ | async); trackBy: trackByImageId; let i = index\" type=\"button\" (click)=\"container.goto(i)\"\n [class.active]=\"(container.imageIndex$ | async) === i\" data-bs-target\n [attr.aria-current]=\"(container.imageIndex$ | async) === i ? true : null\"\n [attr.aria-label]=\"'Slide ' + i\"></button>\n </div>\n <div class=\"carousel-inner overflow-hidden text-nowrap pe-none\">\n <div bsSwipeContainer #container=\"bsSwipeContainer\" [minimumOffset]=\"50\" [(imageIndex)]=\"currentImageIndex\">\n <div class=\"carousel-item d-inline-block float-none w-100 me-0 pe-auto\" bsSwipe [offside]=\"true\">\n <ng-container *ngTemplateOutlet=\"lastImageTemplate$ | async\"></ng-container>\n </div>\n <div *ngFor=\"let image of (images$ | async); trackBy: trackByImageId\" class=\"carousel-item d-inline-block float-none w-100 me-0 pe-auto\" [class.active]=\"true\" bsSwipe>\n <ng-container *ngTemplateOutlet=\"image.itemTemplate\"></ng-container>\n </div>\n <div class=\"carousel-item d-inline-block float-none w-100 me-0 pe-auto\" bsSwipe [offside]=\"true\">\n <ng-container *ngTemplateOutlet=\"firstImageTemplate$ | async\"></ng-container>\n </div>\n </div>\n </div>\n <button class=\"carousel-control-prev\" type=\"button\" (click)=\"previousImage()\">\n <span class=\"carousel-control-prev-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Previous</span>\n </button>\n <button class=\"carousel-control-next\" type=\"button\" (click)=\"nextImage()\">\n <span class=\"carousel-control-next-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Next</span>\n </button>\n </div>\n <div *ngIf=\"animation === 'fade'\" class=\"carousel fade mx-auto\">\n <div *ngIf=\"indicators\" class=\"carousel-indicators\">\n <button *ngFor=\"let image of (images$ | async); trackBy: trackByImageId; let i = index\" type=\"button\" (click)=\"currentImageIndex = i\"\n [class.active]=\"currentImageIndex === i\" data-bs-target\n [attr.aria-current]=\"currentImageIndex === i ? true : null\"\n [attr.aria-label]=\"'Slide ' + i\"></button>\n </div>\n <div class=\"carousel-inner\">\n <ng-container *ngFor=\"let image of (images$ | async); trackBy: trackByImageId; let i = index\">\n <div class=\"carousel-item\" [class.active]=\"true\" @fadeInOut *ngIf=\"currentImageIndex === i\">\n <ng-container [ngTemplateOutlet]=\"image.itemTemplate\"></ng-container> \n </div>\n </ng-container>\n </div>\n <button class=\"carousel-control-prev\" type=\"button\" (click)=\"previousImage()\">\n <span class=\"carousel-control-prev-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Previous</span>\n </button>\n <button class=\"carousel-control-next\" type=\"button\" (click)=\"nextImage()\">\n <span class=\"carousel-control-next-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Next</span>\n </button>\n </div>\n</ng-container>", styles: [":host ::ng-deep .carousel{position:relative}:host ::ng-deep .carousel.pointer-event{touch-action:pan-y}:host ::ng-deep .carousel-inner{position:relative;width:100%;overflow:hidden}:host ::ng-deep .carousel-inner:after{display:block;clear:both;content:\"\"}:host ::ng-deep .carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion: reduce){:host ::ng-deep .carousel-item{transition:none}}:host ::ng-deep .carousel-item.active,:host ::ng-deep .carousel-item-next,:host ::ng-deep .carousel-item-prev{display:block}:host ::ng-deep .carousel-item-next:not(.carousel-item-start),:host ::ng-deep .active.carousel-item-end{transform:translate(100%)}:host ::ng-deep .carousel-item-prev:not(.carousel-item-end),:host ::ng-deep .active.carousel-item-start{transform:translate(-100%)}:host ::ng-deep .carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}:host ::ng-deep .carousel-fade .carousel-item.active,:host ::ng-deep .carousel-fade .carousel-item-next.carousel-item-start,:host ::ng-deep .carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}:host ::ng-deep .carousel-fade .active.carousel-item-start,:host ::ng-deep .carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion: reduce){:host ::ng-deep .carousel-fade .active.carousel-item-start,:host ::ng-deep .carousel-fade .active.carousel-item-end{transition:none}}:host ::ng-deep .carousel-control-prev,:host ::ng-deep .carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion: reduce){:host ::ng-deep .carousel-control-prev,:host ::ng-deep .carousel-control-next{transition:none}}:host ::ng-deep .carousel-control-prev:hover,:host ::ng-deep .carousel-control-prev:focus,:host ::ng-deep .carousel-control-next:hover,:host ::ng-deep .carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}:host ::ng-deep .carousel-control-prev{left:0}:host ::ng-deep .carousel-control-next{right:0}:host ::ng-deep .carousel-control-prev-icon,:host ::ng-deep .carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}:host ::ng-deep .carousel-control-prev-icon{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e\")}:host ::ng-deep .carousel-control-next-icon{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\")}:host ::ng-deep .carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}:host ::ng-deep .carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion: reduce){:host ::ng-deep .carousel-indicators [data-bs-target]{transition:none}}:host ::ng-deep .carousel-indicators .active{opacity:1}:host ::ng-deep .carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}:host ::ng-deep .carousel-dark .carousel-control-prev-icon,:host ::ng-deep .carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}:host ::ng-deep .carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}:host ::ng-deep .carousel-dark .carousel-caption{color:#000}:host ::ng-deep .carousel{min-height:100px;max-width:500px}:host ::ng-deep .carousel.noscript .carousel-inner{grid-template-rows:100%;grid-template-columns:100%}:host ::ng-deep .carousel.noscript .carousel-control-prev,:host ::ng-deep .carousel.noscript .carousel-control-next{display:none;z-index:10}:host ::ng-deep .carousel.noscript .carousel-item{display:block;opacity:0;transition:opacity .4s ease-in-out;grid-row:1;grid-column:1}:host ::ng-deep .carousel.noscript .car-radio.noscript:checked+.carousel-item{opacity:1;z-index:5}:host ::ng-deep .carousel.noscript .car-radio.noscript:checked+.carousel-item+label.carousel-control-prev,:host ::ng-deep .carousel.noscript .car-radio.noscript:checked+.carousel-item+label.carousel-control-prev+.carousel-control-next{display:flex}:host ::ng-deep .carousel.noscript .carousel-indicators{z-index:10}.wrapper{overflow:hidden}\n"], dependencies: [{ 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: "directive", type: i2.BsSwipeDirective, selector: "[bsSwipe]", inputs: ["offside"] }, { kind: "directive", type: i2.BsSwipeContainerDirective, selector: "[bsSwipeContainer]", inputs: ["minimumOffset", "imageIndex"], outputs: ["imageIndexChange"], exportAs: ["bsSwipeContainer"] }, { kind: "directive", type: i3.BsNoNoscriptDirective, selector: "[bsNoNoscript]" }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], animations: [FadeInOutAnimation] });
105
109
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: BsCarouselComponent, decorators: [{
106
110
  type: Component,
107
- args: [{ selector: 'bs-carousel', animations: [FadeInOutAnimation], template: "<ng-container *ngIf=\"isServerSide\">\n <div class=\"carousel mx-auto noscript\">\n <div class=\"carousel-inner d-grid\" *ngIf=\"(imageCount$ | async) as imageCount\">\n <ng-container *ngFor=\"let image of (images$ | async); let i = index\">\n <input type=\"radio\" [id]=\"'car-' + i\" [name]=\"'car'\" class=\"car-radio d-none\" bsNoNoscript [checked]=\"i === 0\">\n <div class=\"carousel-item fade d-flex flex-row h-100 align-items-center\">\n <div class=\"w-100 position-relative\">\n <ng-container [ngTemplateOutlet]=\"image.itemTemplate\"></ng-container>\n <div *ngIf=\"indicators\" class=\"carousel-indicators\">\n <label *ngFor=\"let image of (images$ | async); let j = index\" [attr.for]=\"'car-' + (j % imageCount)\" [class.active]=\"i === j\" data-bs-target></label>\n </div>\n </div>\n </div>\n \n <label class=\"carousel-control-prev cursor-pointer\" [for]=\"'car-' + ((i - 1 + imageCount) % imageCount)\">\n <span class=\"carousel-control-prev-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Previous</span>\n </label>\n <label class=\"carousel-control-next cursor-pointer\" [for]=\"'car-' + ((i + 1) % imageCount)\">\n <span class=\"carousel-control-next-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Next</span>\n </label>\n </ng-container>\n </div>\n </div>\n</ng-container>\n<ng-container *ngIf=\"!isServerSide\">\n <div *ngIf=\"animation === 'slide'\" class=\"carousel slide mx-auto\" [style.height.px]=\"container.currentSlideHeight$ | async\">\n <div *ngIf=\"indicators\" class=\"carousel-indicators\">\n <button *ngFor=\"let image of (images$ | async); let i = index\" type=\"button\" (click)=\"container.goto(i)\"\n [class.active]=\"(container.imageIndex$ | async) === i\" data-bs-target\n [attr.aria-current]=\"(container.imageIndex$ | async) === i ? true : null\"\n [attr.aria-label]=\"'Slide ' + i\"></button>\n </div>\n <div class=\"carousel-inner overflow-hidden text-nowrap pe-none\">\n <div bsSwipeContainer #container=\"bsSwipeContainer\" [minimumOffset]=\"50\" [(imageIndex)]=\"currentImageIndex\">\n <div class=\"carousel-item d-inline-block float-none w-100 me-0 pe-auto\" bsSwipe [offside]=\"true\">\n <ng-container *ngTemplateOutlet=\"lastImageTemplate$ | async\"></ng-container>\n </div>\n <div *ngFor=\"let image of (images$ | async)\" class=\"carousel-item d-inline-block float-none w-100 me-0 pe-auto\" [class.active]=\"true\" bsSwipe>\n <ng-container *ngTemplateOutlet=\"image.itemTemplate\"></ng-container>\n </div>\n <div class=\"carousel-item d-inline-block float-none w-100 me-0 pe-auto\" bsSwipe [offside]=\"true\">\n <ng-container *ngTemplateOutlet=\"firstImageTemplate$ | async\"></ng-container>\n </div>\n </div>\n </div>\n <button class=\"carousel-control-prev\" type=\"button\" (click)=\"previousImage()\">\n <span class=\"carousel-control-prev-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Previous</span>\n </button>\n <button class=\"carousel-control-next\" type=\"button\" (click)=\"nextImage()\">\n <span class=\"carousel-control-next-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Next</span>\n </button>\n </div>\n <div *ngIf=\"animation === 'fade'\" class=\"carousel fade mx-auto\">\n <div *ngIf=\"indicators\" class=\"carousel-indicators\">\n <button *ngFor=\"let image of (images$ | async); let i = index\" type=\"button\" (click)=\"currentImageIndex = i\"\n [class.active]=\"currentImageIndex === i\" data-bs-target\n [attr.aria-current]=\"currentImageIndex === i ? true : null\"\n [attr.aria-label]=\"'Slide ' + i\"></button>\n </div>\n <div class=\"carousel-inner\">\n <ng-container *ngFor=\"let image of (images$ | async); let i = index\">\n <div class=\"carousel-item\" [class.active]=\"true\" @fadeInOut *ngIf=\"currentImageIndex === i\">\n <ng-container [ngTemplateOutlet]=\"image.itemTemplate\"></ng-container> \n </div>\n </ng-container>\n </div>\n <button class=\"carousel-control-prev\" type=\"button\" (click)=\"previousImage()\">\n <span class=\"carousel-control-prev-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Previous</span>\n </button>\n <button class=\"carousel-control-next\" type=\"button\" (click)=\"nextImage()\">\n <span class=\"carousel-control-next-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Next</span>\n </button>\n </div>\n</ng-container>", styles: [":host ::ng-deep .carousel{position:relative}:host ::ng-deep .carousel.pointer-event{touch-action:pan-y}:host ::ng-deep .carousel-inner{position:relative;width:100%;overflow:hidden}:host ::ng-deep .carousel-inner:after{display:block;clear:both;content:\"\"}:host ::ng-deep .carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion: reduce){:host ::ng-deep .carousel-item{transition:none}}:host ::ng-deep .carousel-item.active,:host ::ng-deep .carousel-item-next,:host ::ng-deep .carousel-item-prev{display:block}:host ::ng-deep .carousel-item-next:not(.carousel-item-start),:host ::ng-deep .active.carousel-item-end{transform:translate(100%)}:host ::ng-deep .carousel-item-prev:not(.carousel-item-end),:host ::ng-deep .active.carousel-item-start{transform:translate(-100%)}:host ::ng-deep .carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}:host ::ng-deep .carousel-fade .carousel-item.active,:host ::ng-deep .carousel-fade .carousel-item-next.carousel-item-start,:host ::ng-deep .carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}:host ::ng-deep .carousel-fade .active.carousel-item-start,:host ::ng-deep .carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion: reduce){:host ::ng-deep .carousel-fade .active.carousel-item-start,:host ::ng-deep .carousel-fade .active.carousel-item-end{transition:none}}:host ::ng-deep .carousel-control-prev,:host ::ng-deep .carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion: reduce){:host ::ng-deep .carousel-control-prev,:host ::ng-deep .carousel-control-next{transition:none}}:host ::ng-deep .carousel-control-prev:hover,:host ::ng-deep .carousel-control-prev:focus,:host ::ng-deep .carousel-control-next:hover,:host ::ng-deep .carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}:host ::ng-deep .carousel-control-prev{left:0}:host ::ng-deep .carousel-control-next{right:0}:host ::ng-deep .carousel-control-prev-icon,:host ::ng-deep .carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}:host ::ng-deep .carousel-control-prev-icon{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e\")}:host ::ng-deep .carousel-control-next-icon{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\")}:host ::ng-deep .carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}:host ::ng-deep .carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion: reduce){:host ::ng-deep .carousel-indicators [data-bs-target]{transition:none}}:host ::ng-deep .carousel-indicators .active{opacity:1}:host ::ng-deep .carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}:host ::ng-deep .carousel-dark .carousel-control-prev-icon,:host ::ng-deep .carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}:host ::ng-deep .carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}:host ::ng-deep .carousel-dark .carousel-caption{color:#000}:host ::ng-deep .carousel{min-height:100px;max-width:500px}:host ::ng-deep .carousel.noscript .carousel-inner{grid-template-rows:100%;grid-template-columns:100%}:host ::ng-deep .carousel.noscript .carousel-control-prev,:host ::ng-deep .carousel.noscript .carousel-control-next{display:none;z-index:10}:host ::ng-deep .carousel.noscript .carousel-item{display:block;opacity:0;transition:opacity .4s ease-in-out;grid-row:1;grid-column:1}:host ::ng-deep .carousel.noscript .car-radio.noscript:checked+.carousel-item{opacity:1;z-index:5}:host ::ng-deep .carousel.noscript .car-radio.noscript:checked+.carousel-item+label.carousel-control-prev,:host ::ng-deep .carousel.noscript .car-radio.noscript:checked+.carousel-item+label.carousel-control-prev+.carousel-control-next{display:flex}:host ::ng-deep .carousel.noscript .carousel-indicators{z-index:10}.wrapper{overflow:hidden}\n"] }]
111
+ args: [{ selector: 'bs-carousel', animations: [FadeInOutAnimation], template: "<ng-container *ngIf=\"isServerSide\">\n <div class=\"carousel mx-auto noscript\">\n <div class=\"carousel-inner d-grid\" *ngIf=\"(imageCount$ | async) as imageCount\">\n <ng-container *ngFor=\"let image of (images$ | async); trackBy: trackByImageId; let i = index\">\n <input type=\"radio\" [id]=\"'car-' + i\" [name]=\"'car'\" class=\"car-radio d-none\" bsNoNoscript [checked]=\"i === 0\">\n <div class=\"carousel-item fade d-flex flex-row h-100 align-items-center\">\n <div class=\"w-100 position-relative\">\n <ng-container [ngTemplateOutlet]=\"image.itemTemplate\"></ng-container>\n <div *ngIf=\"indicators\" class=\"carousel-indicators\">\n <label *ngFor=\"let image of (images$ | async); trackBy: trackByImageId; let j = index\" [attr.for]=\"'car-' + (j % imageCount)\" [class.active]=\"i === j\" data-bs-target></label>\n </div>\n </div>\n </div>\n \n <label class=\"carousel-control-prev cursor-pointer\" [for]=\"'car-' + ((i - 1 + imageCount) % imageCount)\">\n <span class=\"carousel-control-prev-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Previous</span>\n </label>\n <label class=\"carousel-control-next cursor-pointer\" [for]=\"'car-' + ((i + 1) % imageCount)\">\n <span class=\"carousel-control-next-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Next</span>\n </label>\n </ng-container>\n </div>\n </div>\n</ng-container>\n<ng-container *ngIf=\"!isServerSide\">\n <div *ngIf=\"animation === 'slide'\" class=\"carousel slide mx-auto\" [style.height.px]=\"container.currentSlideHeight$ | async\">\n <div *ngIf=\"indicators\" class=\"carousel-indicators\">\n <button *ngFor=\"let image of (images$ | async); trackBy: trackByImageId; let i = index\" type=\"button\" (click)=\"container.goto(i)\"\n [class.active]=\"(container.imageIndex$ | async) === i\" data-bs-target\n [attr.aria-current]=\"(container.imageIndex$ | async) === i ? true : null\"\n [attr.aria-label]=\"'Slide ' + i\"></button>\n </div>\n <div class=\"carousel-inner overflow-hidden text-nowrap pe-none\">\n <div bsSwipeContainer #container=\"bsSwipeContainer\" [minimumOffset]=\"50\" [(imageIndex)]=\"currentImageIndex\">\n <div class=\"carousel-item d-inline-block float-none w-100 me-0 pe-auto\" bsSwipe [offside]=\"true\">\n <ng-container *ngTemplateOutlet=\"lastImageTemplate$ | async\"></ng-container>\n </div>\n <div *ngFor=\"let image of (images$ | async); trackBy: trackByImageId\" class=\"carousel-item d-inline-block float-none w-100 me-0 pe-auto\" [class.active]=\"true\" bsSwipe>\n <ng-container *ngTemplateOutlet=\"image.itemTemplate\"></ng-container>\n </div>\n <div class=\"carousel-item d-inline-block float-none w-100 me-0 pe-auto\" bsSwipe [offside]=\"true\">\n <ng-container *ngTemplateOutlet=\"firstImageTemplate$ | async\"></ng-container>\n </div>\n </div>\n </div>\n <button class=\"carousel-control-prev\" type=\"button\" (click)=\"previousImage()\">\n <span class=\"carousel-control-prev-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Previous</span>\n </button>\n <button class=\"carousel-control-next\" type=\"button\" (click)=\"nextImage()\">\n <span class=\"carousel-control-next-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Next</span>\n </button>\n </div>\n <div *ngIf=\"animation === 'fade'\" class=\"carousel fade mx-auto\">\n <div *ngIf=\"indicators\" class=\"carousel-indicators\">\n <button *ngFor=\"let image of (images$ | async); trackBy: trackByImageId; let i = index\" type=\"button\" (click)=\"currentImageIndex = i\"\n [class.active]=\"currentImageIndex === i\" data-bs-target\n [attr.aria-current]=\"currentImageIndex === i ? true : null\"\n [attr.aria-label]=\"'Slide ' + i\"></button>\n </div>\n <div class=\"carousel-inner\">\n <ng-container *ngFor=\"let image of (images$ | async); trackBy: trackByImageId; let i = index\">\n <div class=\"carousel-item\" [class.active]=\"true\" @fadeInOut *ngIf=\"currentImageIndex === i\">\n <ng-container [ngTemplateOutlet]=\"image.itemTemplate\"></ng-container> \n </div>\n </ng-container>\n </div>\n <button class=\"carousel-control-prev\" type=\"button\" (click)=\"previousImage()\">\n <span class=\"carousel-control-prev-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Previous</span>\n </button>\n <button class=\"carousel-control-next\" type=\"button\" (click)=\"nextImage()\">\n <span class=\"carousel-control-next-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Next</span>\n </button>\n </div>\n</ng-container>", styles: [":host ::ng-deep .carousel{position:relative}:host ::ng-deep .carousel.pointer-event{touch-action:pan-y}:host ::ng-deep .carousel-inner{position:relative;width:100%;overflow:hidden}:host ::ng-deep .carousel-inner:after{display:block;clear:both;content:\"\"}:host ::ng-deep .carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion: reduce){:host ::ng-deep .carousel-item{transition:none}}:host ::ng-deep .carousel-item.active,:host ::ng-deep .carousel-item-next,:host ::ng-deep .carousel-item-prev{display:block}:host ::ng-deep .carousel-item-next:not(.carousel-item-start),:host ::ng-deep .active.carousel-item-end{transform:translate(100%)}:host ::ng-deep .carousel-item-prev:not(.carousel-item-end),:host ::ng-deep .active.carousel-item-start{transform:translate(-100%)}:host ::ng-deep .carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}:host ::ng-deep .carousel-fade .carousel-item.active,:host ::ng-deep .carousel-fade .carousel-item-next.carousel-item-start,:host ::ng-deep .carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}:host ::ng-deep .carousel-fade .active.carousel-item-start,:host ::ng-deep .carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion: reduce){:host ::ng-deep .carousel-fade .active.carousel-item-start,:host ::ng-deep .carousel-fade .active.carousel-item-end{transition:none}}:host ::ng-deep .carousel-control-prev,:host ::ng-deep .carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion: reduce){:host ::ng-deep .carousel-control-prev,:host ::ng-deep .carousel-control-next{transition:none}}:host ::ng-deep .carousel-control-prev:hover,:host ::ng-deep .carousel-control-prev:focus,:host ::ng-deep .carousel-control-next:hover,:host ::ng-deep .carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}:host ::ng-deep .carousel-control-prev{left:0}:host ::ng-deep .carousel-control-next{right:0}:host ::ng-deep .carousel-control-prev-icon,:host ::ng-deep .carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}:host ::ng-deep .carousel-control-prev-icon{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e\")}:host ::ng-deep .carousel-control-next-icon{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\")}:host ::ng-deep .carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}:host ::ng-deep .carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion: reduce){:host ::ng-deep .carousel-indicators [data-bs-target]{transition:none}}:host ::ng-deep .carousel-indicators .active{opacity:1}:host ::ng-deep .carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}:host ::ng-deep .carousel-dark .carousel-control-prev-icon,:host ::ng-deep .carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}:host ::ng-deep .carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}:host ::ng-deep .carousel-dark .carousel-caption{color:#000}:host ::ng-deep .carousel{min-height:100px;max-width:500px}:host ::ng-deep .carousel.noscript .carousel-inner{grid-template-rows:100%;grid-template-columns:100%}:host ::ng-deep .carousel.noscript .carousel-control-prev,:host ::ng-deep .carousel.noscript .carousel-control-next{display:none;z-index:10}:host ::ng-deep .carousel.noscript .carousel-item{display:block;opacity:0;transition:opacity .4s ease-in-out;grid-row:1;grid-column:1}:host ::ng-deep .carousel.noscript .car-radio.noscript:checked+.carousel-item{opacity:1;z-index:5}:host ::ng-deep .carousel.noscript .car-radio.noscript:checked+.carousel-item+label.carousel-control-prev,:host ::ng-deep .carousel.noscript .car-radio.noscript:checked+.carousel-item+label.carousel-control-prev+.carousel-control-next{display:flex}:host ::ng-deep .carousel.noscript .carousel-indicators{z-index:10}.wrapper{overflow:hidden}\n"] }]
108
112
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
109
113
  type: Inject,
110
114
  args: [PLATFORM_ID]
@@ -130,4 +134,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
130
134
  type: HostListener,
131
135
  args: ['document:keydown.ArrowRight', ['$event']]
132
136
  }] } });
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9jYXJvdXNlbC9zcmMvY2Fyb3VzZWwvY2Fyb3VzZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9jYXJvdXNlbC9zcmMvY2Fyb3VzZWwvY2Fyb3VzZWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFlLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwTCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDakQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxHQUFHLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDeEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNENBQTRDLENBQUM7Ozs7O0FBUXRGLE1BQU0sT0FBTyxtQkFBbUI7SUFFOUIsWUFBaUMsVUFBZSxFQUFVLEtBQXdCO1FBQXhCLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBdUJsRixXQUFNLEdBQUcsS0FBSyxDQUFDO1FBRWYsc0JBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBNkMsSUFBSSxDQUFDLENBQUM7UUFLdkUsZUFBVSxH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Z0JBRUwsU0FBUztzQkFBNUIsS0FBSztnQkFhTixVQUFVO3NCQUZULFlBQVk7dUJBQUMsNEJBQTRCLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUNyRCxZQUFZO3VCQUFDLDZCQUE2QixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQbGF0Zm9ybVNlcnZlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGRyZW4sIGZvcndhcmRSZWYsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIEluamVjdCwgSW5wdXQsIFBMQVRGT1JNX0lELCBRdWVyeUxpc3QsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZhZGVJbk91dEFuaW1hdGlvbiB9IGZyb20gJ0BtaW50cGxheWVyL25nLWFuaW1hdGlvbnMnO1xuaW1wb3J0IHsgQ29sb3IgfSBmcm9tICdAbWludHBsYXllci9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgQnNTd2lwZUNvbnRhaW5lckRpcmVjdGl2ZSB9IGZyb20gJ0BtaW50cGxheWVyL25nLXN3aXBlcic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQnNDYXJvdXNlbEltYWdlRGlyZWN0aXZlIH0gZnJvbSAnLi4vY2Fyb3VzZWwtaW1hZ2UvY2Fyb3VzZWwtaW1hZ2UuZGlyZWN0aXZlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnMtY2Fyb3VzZWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2Fyb3VzZWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYXJvdXNlbC5jb21wb25lbnQuc2NzcyddLFxuICBhbmltYXRpb25zOiBbRmFkZUluT3V0QW5pbWF0aW9uXVxufSlcbmV4cG9ydCBjbGFzcyBCc0Nhcm91c2VsQ29tcG9uZW50IHtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KFBMQVRGT1JNX0lEKSBwbGF0Zm9ybUlkOiBhbnksIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgdGhpcy5pc1NlcnZlclNpZGUgPSBpc1BsYXRmb3JtU2VydmVyKHBsYXRmb3JtSWQpO1xuICAgIHRoaXMuaW1hZ2VDb3VudCQgPSB0aGlzLmltYWdlcyQucGlwZShtYXAoKGltYWdlcykgPT4gaW1hZ2VzPy5sZW5ndGggPz8gMCkpO1xuICAgIHRoaXMuZmlyc3RJbWFnZVRlbXBsYXRlJCA9IHRoaXMuaW1hZ2VzJC5waXBlKG1hcCgoaW1hZ2VzKSA9PiB7XG4gICAgICBpZiAoIWltYWdlcykgcmV0dXJuIG51bGw7XG4gICAgICBpZiAoaW1hZ2VzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7XG5cbiAgICAgIGNvbnN0IGltZyA9IGltYWdlcy5nZXQoMCk7XG4gICAgICBpZiAoIWltZykgcmV0dXJuIG51bGw7XG5cbiAgICAgIHJldHVybiBpbWcuaXRlbVRlbXBsYXRlO1xuICAgIH0pKTtcbiAgICB0aGlzLmxhc3RJbWFnZVRlbXBsYXRlJCA9IHRoaXMuaW1hZ2VzJC5waXBlKG1hcCgoaW1hZ2VzKSA9PiB7XG4gICAgICBpZiAoIWltYWdlcykgcmV0dXJuIG51bGw7XG4gICAgICBpZiAoaW1hZ2VzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7XG4gICAgICBcbiAgICAgIGNvbnN0IGltZyA9IGltYWdlcy5nZXQoaW1hZ2VzLmxlbmd0aCAtIDEpO1xuICAgICAgaWYgKCFpbWcpIHJldHVybiBudWxsO1xuXG4gICAgICByZXR1cm4gaW1nLml0ZW1UZW1wbGF0ZTtcbiAgICB9KSk7XG4gIH1cbiAgXG4gIGNvbG9ycyA9IENvbG9yO1xuICBpc1NlcnZlclNpZGU6IGJvb2xlYW47XG4gIGN1cnJlbnRJbWFnZUluZGV4ID0gMDtcbiAgaW1hZ2VzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UXVlcnlMaXN0PEJzQ2Fyb3VzZWxJbWFnZURpcmVjdGl2ZT4gfCBudWxsPihudWxsKTtcbiAgaW1hZ2VDb3VudCQ6IE9ic2VydmFibGU8bnVtYmVyPjtcbiAgZmlyc3RJbWFnZVRlbXBsYXRlJDogT2JzZXJ2YWJsZTxUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbD47XG4gIGxhc3RJbWFnZVRlbXBsYXRlJDogT2JzZXJ2YWJsZTxUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbD47XG5cbiAgQElucHV0KCkgaW5kaWNhdG9ycyA9IGZhbHNlO1xuICBASW5wdXQoKSBrZXlib2FyZEV2ZW50cyA9IHRydWU7XG5cbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyJykgc3dpcGVDb250YWluZXIhOiBCc1N3aXBlQ29udGFpbmVyRGlyZWN0aXZlO1xuICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gQnNDYXJvdXNlbEltYWdlRGlyZWN0aXZlKSkgc2V0IGltYWdlcyh2YWx1ZTogUXVlcnlMaXN0PEJzQ2Fyb3VzZWxJbWFnZURpcmVjdGl2ZT4pIHtcbiAgICB0aGlzLmltYWdlcyQubmV4dCh2YWx1ZSk7XG4gIH1cblxuICAvLyNyZWdpb24gQW5pbWF0aW9uXG4gIEBIb3N0QmluZGluZygnQC5kaXNhYmxlZCcpIHB1YmxpYyBhbmltYXRpb25zRGlzYWJsZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfYW5pbWF0aW9uOiAnZmFkZScgfCAnc2xpZGUnID0gJ3NsaWRlJztcbiAgQElucHV0KCkgcHVibGljIHNldCBhbmltYXRpb24odmFsdWU6ICdmYWRlJyB8ICdzbGlkZScpIHtcbiAgICB0aGlzLmFuaW1hdGlvbnNEaXNhYmxlZCA9IHRydWU7XG4gICAgdGhpcy5fYW5pbWF0aW9uID0gdmFsdWU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmFuaW1hdGlvbnNEaXNhYmxlZCA9IGZhbHNlLCAyMCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKSwgNTApO1xuICB9XG4gIHB1YmxpYyBnZXQgYW5pbWF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLl9hbmltYXRpb247XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5BcnJvd0xlZnQnLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLkFycm93UmlnaHQnLCBbJyRldmVudCddKVxuICBvbktleVByZXNzKGV2OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKHRoaXMua2V5Ym9hcmRFdmVudHMpIHtcbiAgICAgIHN3aXRjaCAoZXYua2V5KSB7XG4gICAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICAgICAgdGhpcy5wcmV2aW91c0ltYWdlKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICAgIHRoaXMubmV4dEltYWdlKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIHByZXZpb3VzSW1hZ2UoKSB7XG4gICAgc3dpdGNoICh0aGlzLmFuaW1hdGlvbikge1xuICAgICAgY2FzZSAnZmFkZSc6XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRJbWFnZUluZGV4ID4gMCkge1xuICAgICAgICAgIHRoaXMuY3VycmVudEltYWdlSW5kZXgtLTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRJbWFnZUluZGV4ID0gdGhpcy5pbWFnZXMkLnZhbHVlIS5sZW5ndGggLSAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc2xpZGUnOlxuICAgICAgICB0aGlzLnN3aXBlQ29udGFpbmVyLnByZXZpb3VzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIG5leHRJbWFnZSgpIHtcbiAgICBzd2l0Y2ggKHRoaXMuYW5pbWF0aW9uKSB7XG4gICAgICBjYXNlICdmYWRlJzpcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudEltYWdlSW5kZXggPCB0aGlzLmltYWdlcyQudmFsdWUhLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRJbWFnZUluZGV4Kys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5jdXJyZW50SW1hZ2VJbmRleCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzbGlkZSc6XG4gICAgICAgIHRoaXMuc3dpcGVDb250YWluZXIubmV4dCgpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuXG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiaXNTZXJ2ZXJTaWRlXCI+XG4gICAgPGRpdiBjbGFzcz1cImNhcm91c2VsIG14LWF1dG8gbm9zY3JpcHRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcm91c2VsLWlubmVyIGQtZ3JpZFwiICpuZ0lmPVwiKGltYWdlQ291bnQkIHwgYXN5bmMpIGFzIGltYWdlQ291bnRcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGltYWdlIG9mIChpbWFnZXMkIHwgYXN5bmMpOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJyYWRpb1wiIFtpZF09XCInY2FyLScgKyBpXCIgW25hbWVdPVwiJ2NhcidcIiBjbGFzcz1cImNhci1yYWRpbyBkLW5vbmVcIiBic05vTm9zY3JpcHQgW2NoZWNrZWRdPVwiaSA9PT0gMFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJvdXNlbC1pdGVtIGZhZGUgZC1mbGV4IGZsZXgtcm93IGgtMTAwIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgcG9zaXRpb24tcmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaW1hZ2UuaXRlbVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaW5kaWNhdG9yc1wiIGNsYXNzPVwiY2Fyb3VzZWwtaW5kaWNhdG9yc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCAqbmdGb3I9XCJsZXQgaW1hZ2Ugb2YgKGltYWdlcyQgfCBhc3luYyk7IGxldCBqID0gaW5kZXhcIiBbYXR0ci5mb3JdPVwiJ2Nhci0nICsgKGogJSBpbWFnZUNvdW50KVwiIFtjbGFzcy5hY3RpdmVdPVwiaSA9PT0galwiIGRhdGEtYnMtdGFyZ2V0PjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY2Fyb3VzZWwtY29udHJvbC1wcmV2IGN1cnNvci1wb2ludGVyXCIgW2Zvcl09XCInY2FyLScgKyAoKGkgLSAxICsgaW1hZ2VDb3VudCkgJSBpbWFnZUNvdW50KVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcm91c2VsLWNvbnRyb2wtcHJldi1pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPlByZXZpb3VzPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY2Fyb3VzZWwtY29udHJvbC1uZXh0IGN1cnNvci1wb2ludGVyXCIgW2Zvcl09XCInY2FyLScgKyAoKGkgKyAxKSAlIGltYWdlQ291bnQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2Fyb3VzZWwtY29udHJvbC1uZXh0LWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+TmV4dDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG48bmctY29udGFpbmVyICpuZ0lmPVwiIWlzU2VydmVyU2lkZVwiPlxuICAgIDxkaXYgKm5nSWY9XCJhbmltYXRpb24gPT09ICdzbGlkZSdcIiBjbGFzcz1cImNhcm91c2VsIHNsaWRlIG14LWF1dG9cIiBbc3R5bGUuaGVpZ2h0LnB4XT1cImNvbnRhaW5lci5jdXJyZW50U2xpZGVIZWlnaHQkIHwgYXN5bmNcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImluZGljYXRvcnNcIiBjbGFzcz1cImNhcm91c2VsLWluZGljYXRvcnNcIj5cbiAgICAgICAgICAgIDxidXR0b24gKm5nRm9yPVwibGV0IGltYWdlIG9mIChpbWFnZXMkIHwgYXN5bmMpOyBsZXQgaSA9IGluZGV4XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjb250YWluZXIuZ290byhpKVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCIoY29udGFpbmVyLmltYWdlSW5kZXgkIHwgYXN5bmMpID09PSBpXCIgZGF0YS1icy10YXJnZXRcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdPVwiKGNvbnRhaW5lci5pbWFnZUluZGV4JCB8IGFzeW5jKSA9PT0gaSA/IHRydWUgOiBudWxsXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidTbGlkZSAnICsgaVwiPjwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcm91c2VsLWlubmVyIG92ZXJmbG93LWhpZGRlbiB0ZXh0LW5vd3JhcCBwZS1ub25lXCI+XG4gICAgICAgICAgICA8ZGl2IGJzU3dpcGVDb250YWluZXIgI2NvbnRhaW5lcj1cImJzU3dpcGVDb250YWluZXJcIiBbbWluaW11bU9mZnNldF09XCI1MFwiIFsoaW1hZ2VJbmRleCldPVwiY3VycmVudEltYWdlSW5kZXhcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwtaXRlbSBkLWlubGluZS1ibG9jayBmbG9hdC1ub25lIHctMTAwIG1lLTAgcGUtYXV0b1wiIGJzU3dpcGUgW29mZnNpZGVdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibGFzdEltYWdlVGVtcGxhdGUkIHwgYXN5bmNcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpbWFnZSBvZiAoaW1hZ2VzJCB8IGFzeW5jKVwiIGNsYXNzPVwiY2Fyb3VzZWwtaXRlbSBkLWlubGluZS1ibG9jayBmbG9hdC1ub25lIHctMTAwIG1lLTAgcGUtYXV0b1wiIFtjbGFzcy5hY3RpdmVdPVwidHJ1ZVwiIGJzU3dpcGU+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbWFnZS5pdGVtVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwtaXRlbSBkLWlubGluZS1ibG9jayBmbG9hdC1ub25lIHctMTAwIG1lLTAgcGUtYXV0b1wiIGJzU3dpcGUgW29mZnNpZGVdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlyc3RJbWFnZVRlbXBsYXRlJCB8IGFzeW5jXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJjYXJvdXNlbC1jb250cm9sLXByZXZcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInByZXZpb3VzSW1hZ2UoKVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJvdXNlbC1jb250cm9sLXByZXYtaWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+UHJldmlvdXM8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2Fyb3VzZWwtY29udHJvbC1uZXh0XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJuZXh0SW1hZ2UoKVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJvdXNlbC1jb250cm9sLW5leHQtaWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+TmV4dDwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cImFuaW1hdGlvbiA9PT0gJ2ZhZGUnXCIgY2xhc3M9XCJjYXJvdXNlbCBmYWRlIG14LWF1dG9cIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImluZGljYXRvcnNcIiBjbGFzcz1cImNhcm91c2VsLWluZGljYXRvcnNcIj5cbiAgICAgICAgICAgIDxidXR0b24gKm5nRm9yPVwibGV0IGltYWdlIG9mIChpbWFnZXMkIHwgYXN5bmMpOyBsZXQgaSA9IGluZGV4XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjdXJyZW50SW1hZ2VJbmRleCA9IGlcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiY3VycmVudEltYWdlSW5kZXggPT09IGlcIiBkYXRhLWJzLXRhcmdldFxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtY3VycmVudF09XCJjdXJyZW50SW1hZ2VJbmRleCA9PT0gaSA/IHRydWUgOiBudWxsXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidTbGlkZSAnICsgaVwiPjwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcm91c2VsLWlubmVyXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpbWFnZSBvZiAoaW1hZ2VzJCB8IGFzeW5jKTsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJvdXNlbC1pdGVtXCIgW2NsYXNzLmFjdGl2ZV09XCJ0cnVlXCIgQGZhZGVJbk91dCAqbmdJZj1cImN1cnJlbnRJbWFnZUluZGV4ID09PSBpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaW1hZ2UuaXRlbVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+ICAgIFxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2Fyb3VzZWwtY29udHJvbC1wcmV2XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJwcmV2aW91c0ltYWdlKClcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2Fyb3VzZWwtY29udHJvbC1wcmV2LWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPlByZXZpb3VzPC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNhcm91c2VsLWNvbnRyb2wtbmV4dFwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwibmV4dEltYWdlKClcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2Fyb3VzZWwtY29udHJvbC1uZXh0LWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPk5leHQ8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9uZy1jb250YWluZXI+Il19
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9jYXJvdXNlbC9zcmMvY2Fyb3VzZWwvY2Fyb3VzZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9jYXJvdXNlbC9zcmMvY2Fyb3VzZWwvY2Fyb3VzZWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFlLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwTCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDakQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxHQUFHLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDeEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNENBQTRDLENBQUM7Ozs7O0FBUXRGLE1BQU0sT0FBTyxtQkFBbUI7SUFFOUIsWUFBaUMsVUFBZSxFQUFVLEtBQXdCO1FBQXhCLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBdUJsRixXQUFNLEdBQUcsS0FBSyxDQUFDO1FBRWYsc0JBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBNkMsSUFBSSxDQUFDLENBQUM7UUFLdkUsZUFBVSxH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MkMsTUFBTTtzQkFBdEUsZUFBZTt1QkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUM7Z0JBS3pCLGtCQUFrQjtzQkFBbkQsV0FBVzt1QkFBQyxZQUFZO2dCQUVMLFNBQVM7c0JBQTVCLEtBQUs7Z0JBYU4sVUFBVTtzQkFGVCxZQUFZO3VCQUFDLDRCQUE0QixFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDckQsWUFBWTt1QkFBQyw2QkFBNkIsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhdGZvcm1TZXJ2ZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBmb3J3YXJkUmVmLCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBJbmplY3QsIElucHV0LCBQTEFURk9STV9JRCwgUXVlcnlMaXN0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGYWRlSW5PdXRBbmltYXRpb24gfSBmcm9tICdAbWludHBsYXllci9uZy1hbmltYXRpb25zJztcbmltcG9ydCB7IENvbG9yIH0gZnJvbSAnQG1pbnRwbGF5ZXIvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IEJzU3dpcGVDb250YWluZXJEaXJlY3RpdmUgfSBmcm9tICdAbWludHBsYXllci9uZy1zd2lwZXInO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBtYXAsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJzQ2Fyb3VzZWxJbWFnZURpcmVjdGl2ZSB9IGZyb20gJy4uL2Nhcm91c2VsLWltYWdlL2Nhcm91c2VsLWltYWdlLmRpcmVjdGl2ZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JzLWNhcm91c2VsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Nhcm91c2VsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2Fyb3VzZWwuY29tcG9uZW50LnNjc3MnXSxcbiAgYW5pbWF0aW9uczogW0ZhZGVJbk91dEFuaW1hdGlvbl1cbn0pXG5leHBvcnQgY2xhc3MgQnNDYXJvdXNlbENvbXBvbmVudCB7XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChQTEFURk9STV9JRCkgcGxhdGZvcm1JZDogYW55LCBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHRoaXMuaXNTZXJ2ZXJTaWRlID0gaXNQbGF0Zm9ybVNlcnZlcihwbGF0Zm9ybUlkKTtcbiAgICB0aGlzLmltYWdlQ291bnQkID0gdGhpcy5pbWFnZXMkLnBpcGUobWFwKChpbWFnZXMpID0+IGltYWdlcz8ubGVuZ3RoID8/IDApKTtcbiAgICB0aGlzLmZpcnN0SW1hZ2VUZW1wbGF0ZSQgPSB0aGlzLmltYWdlcyQucGlwZShtYXAoKGltYWdlcykgPT4ge1xuICAgICAgaWYgKCFpbWFnZXMpIHJldHVybiBudWxsO1xuICAgICAgaWYgKGltYWdlcy5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xuXG4gICAgICBjb25zdCBpbWcgPSBpbWFnZXMuZ2V0KDApO1xuICAgICAgaWYgKCFpbWcpIHJldHVybiBudWxsO1xuXG4gICAgICByZXR1cm4gaW1nLml0ZW1UZW1wbGF0ZTtcbiAgICB9KSk7XG4gICAgdGhpcy5sYXN0SW1hZ2VUZW1wbGF0ZSQgPSB0aGlzLmltYWdlcyQucGlwZShtYXAoKGltYWdlcykgPT4ge1xuICAgICAgaWYgKCFpbWFnZXMpIHJldHVybiBudWxsO1xuICAgICAgaWYgKGltYWdlcy5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xuICAgICAgXG4gICAgICBjb25zdCBpbWcgPSBpbWFnZXMuZ2V0KGltYWdlcy5sZW5ndGggLSAxKTtcbiAgICAgIGlmICghaW1nKSByZXR1cm4gbnVsbDtcblxuICAgICAgcmV0dXJuIGltZy5pdGVtVGVtcGxhdGU7XG4gICAgfSkpO1xuICB9XG4gIFxuICBjb2xvcnMgPSBDb2xvcjtcbiAgaXNTZXJ2ZXJTaWRlOiBib29sZWFuO1xuICBjdXJyZW50SW1hZ2VJbmRleCA9IDA7XG4gIGltYWdlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFF1ZXJ5TGlzdDxCc0Nhcm91c2VsSW1hZ2VEaXJlY3RpdmU+IHwgbnVsbD4obnVsbCk7XG4gIGltYWdlQ291bnQkOiBPYnNlcnZhYmxlPG51bWJlcj47XG4gIGZpcnN0SW1hZ2VUZW1wbGF0ZSQ6IE9ic2VydmFibGU8VGVtcGxhdGVSZWY8YW55PiB8IG51bGw+O1xuICBsYXN0SW1hZ2VUZW1wbGF0ZSQ6IE9ic2VydmFibGU8VGVtcGxhdGVSZWY8YW55PiB8IG51bGw+O1xuXG4gIEBJbnB1dCgpIGluZGljYXRvcnMgPSBmYWxzZTtcbiAgQElucHV0KCkga2V5Ym9hcmRFdmVudHMgPSB0cnVlO1xuXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicpIHN3aXBlQ29udGFpbmVyITogQnNTd2lwZUNvbnRhaW5lckRpcmVjdGl2ZTtcbiAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IEJzQ2Fyb3VzZWxJbWFnZURpcmVjdGl2ZSkpIHNldCBpbWFnZXModmFsdWU6IFF1ZXJ5TGlzdDxCc0Nhcm91c2VsSW1hZ2VEaXJlY3RpdmU+KSB7XG4gICAgdGhpcy5pbWFnZXMkLm5leHQodmFsdWUpO1xuICB9XG5cbiAgLy8jcmVnaW9uIEFuaW1hdGlvblxuICBASG9zdEJpbmRpbmcoJ0AuZGlzYWJsZWQnKSBwdWJsaWMgYW5pbWF0aW9uc0Rpc2FibGVkID0gZmFsc2U7XG4gIHByaXZhdGUgX2FuaW1hdGlvbjogJ2ZhZGUnIHwgJ3NsaWRlJyA9ICdzbGlkZSc7XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgYW5pbWF0aW9uKHZhbHVlOiAnZmFkZScgfCAnc2xpZGUnKSB7XG4gICAgdGhpcy5hbmltYXRpb25zRGlzYWJsZWQgPSB0cnVlO1xuICAgIHRoaXMuX2FuaW1hdGlvbiA9IHZhbHVlO1xuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5hbmltYXRpb25zRGlzYWJsZWQgPSBmYWxzZSwgMjApO1xuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCksIDUwKTtcbiAgfVxuICBwdWJsaWMgZ2V0IGFuaW1hdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5fYW5pbWF0aW9uO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uQXJyb3dMZWZ0JywgWyckZXZlbnQnXSlcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5BcnJvd1JpZ2h0JywgWyckZXZlbnQnXSlcbiAgb25LZXlQcmVzcyhldjogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmICh0aGlzLmtleWJvYXJkRXZlbnRzKSB7XG4gICAgICBzd2l0Y2ggKGV2LmtleSkge1xuICAgICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICAgIHRoaXMucHJldmlvdXNJbWFnZSgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdBcnJvd1JpZ2h0JzpcbiAgICAgICAgICB0aGlzLm5leHRJbWFnZSgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZXYucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH1cblxuICBwcmV2aW91c0ltYWdlKCkge1xuICAgIHN3aXRjaCAodGhpcy5hbmltYXRpb24pIHtcbiAgICAgIGNhc2UgJ2ZhZGUnOlxuICAgICAgICBpZiAodGhpcy5jdXJyZW50SW1hZ2VJbmRleCA+IDApIHtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRJbWFnZUluZGV4LS07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5jdXJyZW50SW1hZ2VJbmRleCA9IHRoaXMuaW1hZ2VzJC52YWx1ZSEubGVuZ3RoIC0gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3NsaWRlJzpcbiAgICAgICAgdGhpcy5zd2lwZUNvbnRhaW5lci5wcmV2aW91cygpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBuZXh0SW1hZ2UoKSB7XG4gICAgc3dpdGNoICh0aGlzLmFuaW1hdGlvbikge1xuICAgICAgY2FzZSAnZmFkZSc6XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRJbWFnZUluZGV4IDwgdGhpcy5pbWFnZXMkLnZhbHVlIS5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgdGhpcy5jdXJyZW50SW1hZ2VJbmRleCsrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuY3VycmVudEltYWdlSW5kZXggPSAwO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc2xpZGUnOlxuICAgICAgICB0aGlzLnN3aXBlQ29udGFpbmVyLm5leHQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaW1hZ2VDb3VudGVyID0gMTtcbiAgdHJhY2tCeUltYWdlSWQoaW5kZXg6IG51bWJlciwgaXRlbTogQnNDYXJvdXNlbEltYWdlRGlyZWN0aXZlKSB7XG4gICAgcmV0dXJuIGl0ZW0uaWQ7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJpc1NlcnZlclNpZGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwgbXgtYXV0byBub3NjcmlwdFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwtaW5uZXIgZC1ncmlkXCIgKm5nSWY9XCIoaW1hZ2VDb3VudCQgfCBhc3luYykgYXMgaW1hZ2VDb3VudFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaW1hZ2Ugb2YgKGltYWdlcyQgfCBhc3luYyk7IHRyYWNrQnk6IHRyYWNrQnlJbWFnZUlkOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJyYWRpb1wiIFtpZF09XCInY2FyLScgKyBpXCIgW25hbWVdPVwiJ2NhcidcIiBjbGFzcz1cImNhci1yYWRpbyBkLW5vbmVcIiBic05vTm9zY3JpcHQgW2NoZWNrZWRdPVwiaSA9PT0gMFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJvdXNlbC1pdGVtIGZhZGUgZC1mbGV4IGZsZXgtcm93IGgtMTAwIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgcG9zaXRpb24tcmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaW1hZ2UuaXRlbVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaW5kaWNhdG9yc1wiIGNsYXNzPVwiY2Fyb3VzZWwtaW5kaWNhdG9yc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCAqbmdGb3I9XCJsZXQgaW1hZ2Ugb2YgKGltYWdlcyQgfCBhc3luYyk7IHRyYWNrQnk6IHRyYWNrQnlJbWFnZUlkOyBsZXQgaiA9IGluZGV4XCIgW2F0dHIuZm9yXT1cIidjYXItJyArIChqICUgaW1hZ2VDb3VudClcIiBbY2xhc3MuYWN0aXZlXT1cImkgPT09IGpcIiBkYXRhLWJzLXRhcmdldD48L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNhcm91c2VsLWNvbnRyb2wtcHJldiBjdXJzb3ItcG9pbnRlclwiIFtmb3JdPVwiJ2Nhci0nICsgKChpIC0gMSArIGltYWdlQ291bnQpICUgaW1hZ2VDb3VudClcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJvdXNlbC1jb250cm9sLXByZXYtaWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5QcmV2aW91czwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNhcm91c2VsLWNvbnRyb2wtbmV4dCBjdXJzb3ItcG9pbnRlclwiIFtmb3JdPVwiJ2Nhci0nICsgKChpICsgMSkgJSBpbWFnZUNvdW50KVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcm91c2VsLWNvbnRyb2wtbmV4dC1pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPk5leHQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1NlcnZlclNpZGVcIj5cbiAgICA8ZGl2ICpuZ0lmPVwiYW5pbWF0aW9uID09PSAnc2xpZGUnXCIgY2xhc3M9XCJjYXJvdXNlbCBzbGlkZSBteC1hdXRvXCIgW3N0eWxlLmhlaWdodC5weF09XCJjb250YWluZXIuY3VycmVudFNsaWRlSGVpZ2h0JCB8IGFzeW5jXCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJpbmRpY2F0b3JzXCIgY2xhc3M9XCJjYXJvdXNlbC1pbmRpY2F0b3JzXCI+XG4gICAgICAgICAgICA8YnV0dG9uICpuZ0Zvcj1cImxldCBpbWFnZSBvZiAoaW1hZ2VzJCB8IGFzeW5jKTsgdHJhY2tCeTogdHJhY2tCeUltYWdlSWQ7IGxldCBpID0gaW5kZXhcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNvbnRhaW5lci5nb3RvKGkpXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cIihjb250YWluZXIuaW1hZ2VJbmRleCQgfCBhc3luYykgPT09IGlcIiBkYXRhLWJzLXRhcmdldFxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtY3VycmVudF09XCIoY29udGFpbmVyLmltYWdlSW5kZXgkIHwgYXN5bmMpID09PSBpID8gdHJ1ZSA6IG51bGxcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1NsaWRlICcgKyBpXCI+PC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwtaW5uZXIgb3ZlcmZsb3ctaGlkZGVuIHRleHQtbm93cmFwIHBlLW5vbmVcIj5cbiAgICAgICAgICAgIDxkaXYgYnNTd2lwZUNvbnRhaW5lciAjY29udGFpbmVyPVwiYnNTd2lwZUNvbnRhaW5lclwiIFttaW5pbXVtT2Zmc2V0XT1cIjUwXCIgWyhpbWFnZUluZGV4KV09XCJjdXJyZW50SW1hZ2VJbmRleFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJvdXNlbC1pdGVtIGQtaW5saW5lLWJsb2NrIGZsb2F0LW5vbmUgdy0xMDAgbWUtMCBwZS1hdXRvXCIgYnNTd2lwZSBbb2Zmc2lkZV09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsYXN0SW1hZ2VUZW1wbGF0ZSQgfCBhc3luY1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGltYWdlIG9mIChpbWFnZXMkIHwgYXN5bmMpOyB0cmFja0J5OiB0cmFja0J5SW1hZ2VJZFwiIGNsYXNzPVwiY2Fyb3VzZWwtaXRlbSBkLWlubGluZS1ibG9jayBmbG9hdC1ub25lIHctMTAwIG1lLTAgcGUtYXV0b1wiIFtjbGFzcy5hY3RpdmVdPVwidHJ1ZVwiIGJzU3dpcGU+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbWFnZS5pdGVtVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwtaXRlbSBkLWlubGluZS1ibG9jayBmbG9hdC1ub25lIHctMTAwIG1lLTAgcGUtYXV0b1wiIGJzU3dpcGUgW29mZnNpZGVdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlyc3RJbWFnZVRlbXBsYXRlJCB8IGFzeW5jXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJjYXJvdXNlbC1jb250cm9sLXByZXZcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInByZXZpb3VzSW1hZ2UoKVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJvdXNlbC1jb250cm9sLXByZXYtaWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+UHJldmlvdXM8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2Fyb3VzZWwtY29udHJvbC1uZXh0XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJuZXh0SW1hZ2UoKVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJvdXNlbC1jb250cm9sLW5leHQtaWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+TmV4dDwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cImFuaW1hdGlvbiA9PT0gJ2ZhZGUnXCIgY2xhc3M9XCJjYXJvdXNlbCBmYWRlIG14LWF1dG9cIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImluZGljYXRvcnNcIiBjbGFzcz1cImNhcm91c2VsLWluZGljYXRvcnNcIj5cbiAgICAgICAgICAgIDxidXR0b24gKm5nRm9yPVwibGV0IGltYWdlIG9mIChpbWFnZXMkIHwgYXN5bmMpOyB0cmFja0J5OiB0cmFja0J5SW1hZ2VJZDsgbGV0IGkgPSBpbmRleFwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY3VycmVudEltYWdlSW5kZXggPSBpXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImN1cnJlbnRJbWFnZUluZGV4ID09PSBpXCIgZGF0YS1icy10YXJnZXRcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdPVwiY3VycmVudEltYWdlSW5kZXggPT09IGkgPyB0cnVlIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInU2xpZGUgJyArIGlcIj48L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJvdXNlbC1pbm5lclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaW1hZ2Ugb2YgKGltYWdlcyQgfCBhc3luYyk7IHRyYWNrQnk6IHRyYWNrQnlJbWFnZUlkOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcm91c2VsLWl0ZW1cIiBbY2xhc3MuYWN0aXZlXT1cInRydWVcIiBAZmFkZUluT3V0ICpuZ0lmPVwiY3VycmVudEltYWdlSW5kZXggPT09IGlcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJpbWFnZS5pdGVtVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj4gICAgXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJjYXJvdXNlbC1jb250cm9sLXByZXZcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInByZXZpb3VzSW1hZ2UoKVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJvdXNlbC1jb250cm9sLXByZXYtaWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+UHJldmlvdXM8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2Fyb3VzZWwtY29udHJvbC1uZXh0XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJuZXh0SW1hZ2UoKVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJvdXNlbC1jb250cm9sLW5leHQtaWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+TmV4dDwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj4iXX0=
@@ -1,21 +1,24 @@
1
1
  import { Directive, TemplateRef, HostBinding } from '@angular/core';
2
+ import { BsCarouselComponent } from '../carousel/carousel.component';
2
3
  import * as i0 from "@angular/core";
4
+ import * as i1 from "../carousel/carousel.component";
3
5
  export class BsCarouselImageDirective {
4
- constructor(templateRef) {
6
+ constructor(templateRef, carousel) {
5
7
  this.templateRef = templateRef;
6
8
  this.width100class = true;
7
9
  this.itemTemplate = this.templateRef;
10
+ this.id = carousel.imageCounter++;
8
11
  }
9
12
  }
10
- BsCarouselImageDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: BsCarouselImageDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
13
+ BsCarouselImageDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: BsCarouselImageDirective, deps: [{ token: i0.TemplateRef }, { token: i1.BsCarouselComponent }], target: i0.ɵɵFactoryTarget.Directive });
11
14
  BsCarouselImageDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: BsCarouselImageDirective, selector: "*[bsCarouselImage]", host: { properties: { "class.w-100": "this.width100class" } }, ngImport: i0 });
12
15
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: BsCarouselImageDirective, decorators: [{
13
16
  type: Directive,
14
17
  args: [{
15
18
  selector: '*[bsCarouselImage]'
16
19
  }]
17
- }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; }, propDecorators: { width100class: [{
20
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i1.BsCarouselComponent }]; }, propDecorators: { width100class: [{
18
21
  type: HostBinding,
19
22
  args: ['class.w-100']
20
23
  }] } });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwtaW1hZ2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9jYXJvdXNlbC9zcmMvY2Fyb3VzZWwtaW1hZ2UvY2Fyb3VzZWwtaW1hZ2UuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLcEUsTUFBTSxPQUFPLHdCQUF3QjtJQUluQyxZQUFvQixXQUE2QjtRQUE3QixnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7UUFJckIsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFIL0MsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQ3ZDLENBQUM7O3FIQU5VLHdCQUF3Qjt5R0FBeEIsd0JBQXdCOzJGQUF4Qix3QkFBd0I7a0JBSHBDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtpQkFDL0I7a0dBUzZCLGFBQWE7c0JBQXhDLFdBQVc7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgVGVtcGxhdGVSZWYsIEhvc3RCaW5kaW5nIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJypbYnNDYXJvdXNlbEltYWdlXSdcbn0pXG5leHBvcnQgY2xhc3MgQnNDYXJvdXNlbEltYWdlRGlyZWN0aXZlIHtcblxuICBwdWJsaWMgaXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgIHRoaXMuaXRlbVRlbXBsYXRlID0gdGhpcy50ZW1wbGF0ZVJlZjtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3Mudy0xMDAnKSB3aWR0aDEwMGNsYXNzID0gdHJ1ZTtcbn1cbiJdfQ==
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwtaW1hZ2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9jYXJvdXNlbC9zcmMvY2Fyb3VzZWwtaW1hZ2UvY2Fyb3VzZWwtaW1hZ2UuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7O0FBS3JFLE1BQU0sT0FBTyx3QkFBd0I7SUFJbkMsWUFBb0IsV0FBNkIsRUFBRSxRQUE2QjtRQUE1RCxnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7UUFNckIsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFML0MsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3BDLENBQUM7O3FIQVBVLHdCQUF3Qjt5R0FBeEIsd0JBQXdCOzJGQUF4Qix3QkFBd0I7a0JBSHBDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtpQkFDL0I7b0lBVzZCLGFBQWE7c0JBQXhDLFdBQVc7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgVGVtcGxhdGVSZWYsIEhvc3RCaW5kaW5nIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCc0Nhcm91c2VsQ29tcG9uZW50IH0gZnJvbSAnLi4vY2Fyb3VzZWwvY2Fyb3VzZWwuY29tcG9uZW50JztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnKltic0Nhcm91c2VsSW1hZ2VdJ1xufSlcbmV4cG9ydCBjbGFzcyBCc0Nhcm91c2VsSW1hZ2VEaXJlY3RpdmUge1xuXG4gIHB1YmxpYyBpdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIFxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LCBjYXJvdXNlbDogQnNDYXJvdXNlbENvbXBvbmVudCkge1xuICAgIHRoaXMuaXRlbVRlbXBsYXRlID0gdGhpcy50ZW1wbGF0ZVJlZjtcbiAgICB0aGlzLmlkID0gY2Fyb3VzZWwuaW1hZ2VDb3VudGVyKys7XG4gIH1cblxuICBpZDogbnVtYmVyO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnctMTAwJykgd2lkdGgxMDBjbGFzcyA9IHRydWU7XG59XG4iXX0=
@@ -53,16 +53,19 @@ export class BsFileUploadComponent {
53
53
  const newFiles = [...Array(fileList.length).keys()]
54
54
  .map(i => fileList.item(i))
55
55
  .filter(f => !!f)
56
- .map(f => ({ file: f, progress: 0 }));
56
+ .map((file, index) => ({ file, progress: 0, index: this.files.length + index }));
57
57
  this.files.push(...newFiles);
58
58
  this.filesDropped.emit(newFiles);
59
59
  }
60
+ trackByFile(index, file) {
61
+ return file.index;
62
+ }
60
63
  }
61
64
  BsFileUploadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: BsFileUploadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
62
- BsFileUploadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: BsFileUploadComponent, selector: "bs-file-upload", inputs: { dropFilesCaption: "dropFilesCaption", browseFilesCaption: "browseFilesCaption", placeholder: "placeholder", files: "files" }, outputs: { filesDropped: "filesDropped" }, host: { listeners: { "dragover": "onDragOver($event)", "dragleave": "onDragLeave($event)", "drop": "onDrop($event)" } }, ngImport: i0, template: "<div class=\"dropzone border position-relative p-5\" [class.dragging]=\"isDraggingFile\">\n <input type=\"file\" multiple #fileUpload (change)=\"onChange($event)\" [title]=\"placeholder\" [placeholder]=\"placeholder\" class=\"position-absolute w-100 h-100\">\n <!-- <img src=\"/assets/ic-file-upload.svg\" [alt]=\"placeholder\"> -->\n <span class=\"h3 d-block\">{{ dropFilesCaption }}</span>\n <label class=\"btn btn-primary position-relative\" [bsFor]=\"fileUpload\">{{ browseFilesCaption }}</label>\n</div>\n<bs-list-group class=\"files-list\">\n <bs-list-group-item *ngFor=\"let upload of files\">\n <ng-container *ngTemplateOutlet=\"fileTemplate ?? defaultFileTemplate; context: { $implicit: upload }\"></ng-container>\n </bs-list-group-item>\n</bs-list-group>\n\n<ng-template #defaultFileTemplate let-upload>\n <div class=\"d-flex flex-row mx-auto\">\n <div class=\"file-img\"></div>\n <div class=\"flex-grow-1 text-start px-2\">\n <span class=\"d-block text-truncate text-secondary\">{{ upload.file.name }}</span>\n <span class=\"d-block text-grey mb-0\">{{ upload.file.size | bsFormatBytes }}</span>\n <bs-progress [height]=\"4\">\n <bs-progress-bar [minimum]=\"0\" [maximum]=\"upload.file.size\" [value]=\"upload.progress\"></bs-progress-bar>\n </bs-progress>\n </div>\n </div>\n</ng-template>", styles: [".dropzone{z-index:1}.dropzone.dragging{border:4px solid #CB1535!important;background:#DC88A8;margin:-3px -3px -4px}.dropzone input{opacity:0;z-index:2;top:0;left:0}.dropzone .btn{z-index:5}.files-list{margin-top:-1px}.files-list .d-flex{max-width:400px}.text-grey{color:#999}.list-group span{margin:-5px auto}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.BsForDirective, selector: "[bsFor]", inputs: ["bsFor"] }, { kind: "component", type: i3.BsProgressBarComponent, selector: "bs-progress-bar", inputs: ["minimum", "maximum", "value", "color", "striped", "animated"] }, { kind: "component", type: i3.BsProgressComponent, selector: "bs-progress", inputs: ["height", "isIndeterminate"] }, { kind: "component", type: i4.BsListGroupComponent, selector: "bs-list-group" }, { kind: "component", type: i4.BsListGroupItemComponent, selector: "bs-list-group-item" }, { kind: "pipe", type: i5.BsFormatBytesPipe, name: "bsFormatBytes" }] });
65
+ BsFileUploadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: BsFileUploadComponent, selector: "bs-file-upload", inputs: { dropFilesCaption: "dropFilesCaption", browseFilesCaption: "browseFilesCaption", placeholder: "placeholder", files: "files" }, outputs: { filesDropped: "filesDropped" }, host: { listeners: { "dragover": "onDragOver($event)", "dragleave": "onDragLeave($event)", "drop": "onDrop($event)" } }, ngImport: i0, template: "<div class=\"dropzone border position-relative p-5\" [class.dragging]=\"isDraggingFile\">\n <input type=\"file\" multiple #fileUpload (change)=\"onChange($event)\" [title]=\"placeholder\" [placeholder]=\"placeholder\" class=\"position-absolute w-100 h-100\">\n <!-- <img src=\"/assets/ic-file-upload.svg\" [alt]=\"placeholder\"> -->\n <span class=\"h3 d-block\">{{ dropFilesCaption }}</span>\n <label class=\"btn btn-primary position-relative\" [bsFor]=\"fileUpload\">{{ browseFilesCaption }}</label>\n</div>\n<bs-list-group class=\"files-list\">\n <bs-list-group-item *ngFor=\"let upload of files; trackBy: trackByFile\">\n <ng-container *ngTemplateOutlet=\"fileTemplate ?? defaultFileTemplate; context: { $implicit: upload }\"></ng-container>\n </bs-list-group-item>\n</bs-list-group>\n\n<ng-template #defaultFileTemplate let-upload>\n <div class=\"d-flex flex-row mx-auto\">\n <div class=\"file-img\"></div>\n <div class=\"flex-grow-1 text-start px-2\">\n <span class=\"d-block text-truncate text-secondary\">{{ upload.file.name }}</span>\n <span class=\"d-block text-grey mb-0\">{{ upload.file.size | bsFormatBytes }}</span>\n <bs-progress [height]=\"4\">\n <bs-progress-bar [minimum]=\"0\" [maximum]=\"upload.file.size\" [value]=\"upload.progress\"></bs-progress-bar>\n </bs-progress>\n </div>\n </div>\n</ng-template>", styles: [".dropzone{z-index:1}.dropzone.dragging{border:4px solid #CB1535!important;background:#DC88A8;margin:-3px -3px -4px}.dropzone input{opacity:0;z-index:2;top:0;left:0}.dropzone .btn{z-index:5}.files-list{margin-top:-1px}.files-list .d-flex{max-width:400px}.text-grey{color:#999}.list-group span{margin:-5px auto}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.BsForDirective, selector: "[bsFor]", inputs: ["bsFor"] }, { kind: "component", type: i3.BsProgressBarComponent, selector: "bs-progress-bar", inputs: ["minimum", "maximum", "value", "color", "striped", "animated"] }, { kind: "component", type: i3.BsProgressComponent, selector: "bs-progress", inputs: ["height", "isIndeterminate"] }, { kind: "component", type: i4.BsListGroupComponent, selector: "bs-list-group" }, { kind: "component", type: i4.BsListGroupItemComponent, selector: "bs-list-group-item" }, { kind: "pipe", type: i5.BsFormatBytesPipe, name: "bsFormatBytes" }] });
63
66
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: BsFileUploadComponent, decorators: [{
64
67
  type: Component,
65
- args: [{ selector: 'bs-file-upload', template: "<div class=\"dropzone border position-relative p-5\" [class.dragging]=\"isDraggingFile\">\n <input type=\"file\" multiple #fileUpload (change)=\"onChange($event)\" [title]=\"placeholder\" [placeholder]=\"placeholder\" class=\"position-absolute w-100 h-100\">\n <!-- <img src=\"/assets/ic-file-upload.svg\" [alt]=\"placeholder\"> -->\n <span class=\"h3 d-block\">{{ dropFilesCaption }}</span>\n <label class=\"btn btn-primary position-relative\" [bsFor]=\"fileUpload\">{{ browseFilesCaption }}</label>\n</div>\n<bs-list-group class=\"files-list\">\n <bs-list-group-item *ngFor=\"let upload of files\">\n <ng-container *ngTemplateOutlet=\"fileTemplate ?? defaultFileTemplate; context: { $implicit: upload }\"></ng-container>\n </bs-list-group-item>\n</bs-list-group>\n\n<ng-template #defaultFileTemplate let-upload>\n <div class=\"d-flex flex-row mx-auto\">\n <div class=\"file-img\"></div>\n <div class=\"flex-grow-1 text-start px-2\">\n <span class=\"d-block text-truncate text-secondary\">{{ upload.file.name }}</span>\n <span class=\"d-block text-grey mb-0\">{{ upload.file.size | bsFormatBytes }}</span>\n <bs-progress [height]=\"4\">\n <bs-progress-bar [minimum]=\"0\" [maximum]=\"upload.file.size\" [value]=\"upload.progress\"></bs-progress-bar>\n </bs-progress>\n </div>\n </div>\n</ng-template>", styles: [".dropzone{z-index:1}.dropzone.dragging{border:4px solid #CB1535!important;background:#DC88A8;margin:-3px -3px -4px}.dropzone input{opacity:0;z-index:2;top:0;left:0}.dropzone .btn{z-index:5}.files-list{margin-top:-1px}.files-list .d-flex{max-width:400px}.text-grey{color:#999}.list-group span{margin:-5px auto}\n"] }]
68
+ args: [{ selector: 'bs-file-upload', template: "<div class=\"dropzone border position-relative p-5\" [class.dragging]=\"isDraggingFile\">\n <input type=\"file\" multiple #fileUpload (change)=\"onChange($event)\" [title]=\"placeholder\" [placeholder]=\"placeholder\" class=\"position-absolute w-100 h-100\">\n <!-- <img src=\"/assets/ic-file-upload.svg\" [alt]=\"placeholder\"> -->\n <span class=\"h3 d-block\">{{ dropFilesCaption }}</span>\n <label class=\"btn btn-primary position-relative\" [bsFor]=\"fileUpload\">{{ browseFilesCaption }}</label>\n</div>\n<bs-list-group class=\"files-list\">\n <bs-list-group-item *ngFor=\"let upload of files; trackBy: trackByFile\">\n <ng-container *ngTemplateOutlet=\"fileTemplate ?? defaultFileTemplate; context: { $implicit: upload }\"></ng-container>\n </bs-list-group-item>\n</bs-list-group>\n\n<ng-template #defaultFileTemplate let-upload>\n <div class=\"d-flex flex-row mx-auto\">\n <div class=\"file-img\"></div>\n <div class=\"flex-grow-1 text-start px-2\">\n <span class=\"d-block text-truncate text-secondary\">{{ upload.file.name }}</span>\n <span class=\"d-block text-grey mb-0\">{{ upload.file.size | bsFormatBytes }}</span>\n <bs-progress [height]=\"4\">\n <bs-progress-bar [minimum]=\"0\" [maximum]=\"upload.file.size\" [value]=\"upload.progress\"></bs-progress-bar>\n </bs-progress>\n </div>\n </div>\n</ng-template>", styles: [".dropzone{z-index:1}.dropzone.dragging{border:4px solid #CB1535!important;background:#DC88A8;margin:-3px -3px -4px}.dropzone input{opacity:0;z-index:2;top:0;left:0}.dropzone .btn{z-index:5}.files-list{margin-top:-1px}.files-list .d-flex{max-width:400px}.text-grey{color:#999}.list-group span{margin:-5px auto}\n"] }]
66
69
  }], propDecorators: { dropFilesCaption: [{
67
70
  type: Input
68
71
  }], browseFilesCaption: [{
@@ -83,4 +86,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
83
86
  type: HostListener,
84
87
  args: ['drop', ['$event']]
85
88
  }] } });
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9maWxlLXVwbG9hZC9zcmMvY29tcG9uZW50L2ZpbGUtdXBsb2FkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvZmlsZS11cGxvYWQvc3JjL2NvbXBvbmVudC9maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7QUFRakQsTUFBTSxPQUFPLHFCQUFxQjtJQUxsQztRQU9rQixxQkFBZ0IsR0FBRyxzQkFBc0IsQ0FBQztRQUMxQyx1QkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztRQUN4QyxnQkFBVyxHQUFHLHNCQUFzQixDQUFDO1FBRXJELFdBQU0sR0FBRyxLQUFLLENBQUM7UUFDZixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUVQLFVBQUssR0FBaUIsRUFBRSxDQUFDO1FBQ3hCLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQWdCLENBQUM7S0FrRGxFO0lBaERDLFFBQVEsQ0FBQyxLQUFZO1FBQ25CLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTTtZQUFFLE9BQU87UUFDMUIsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFBRSxPQUFPO1FBQ3ZDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztZQUFFLE9BQU87UUFFbkMsTUFBTSxLQUFLLEdBQXNCLEtBQUssQ0FBQyxNQUFPLENBQUMsS0FBSyxDQUFDO1FBQ3JELElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTztRQUVuQixJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUdELFVBQVUsQ0FBQyxLQUFnQjtRQUN6QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXhCLElBQUksS0FBSyxDQUFDLFlBQVksRUFBRTtZQUN0QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztZQUMzQixLQUFLLENBQUMsWUFBWSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUM7U0FDM0M7SUFDSCxDQUFDO0lBR0QsV0FBVyxDQUFDLEtBQWdCO1FBQzFCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDOUIsQ0FBQztJQUdELE1BQU0sQ0FBQyxLQUFnQjtRQUNyQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksS0FBSyxDQUFDLFlBQVksSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRTtZQUNsRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNwRDtJQUNILENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxRQUFrQjtRQUM1QyxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUNoRCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzFCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDaEIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBWSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFBLENBQUMsQ0FBQztRQUVsRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25DLENBQUM7O2tIQTNEVSxxQkFBcUI7c0dBQXJCLHFCQUFxQixrV0NUbEMsczRDQXVCYzsyRkRkRCxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0UsZ0JBQWdCOzhCQU1WLGdCQUFnQjtzQkFBL0IsS0FBSztnQkFDVSxrQkFBa0I7c0JBQWpDLEtBQUs7Z0JBQ1UsV0FBVztzQkFBMUIsS0FBSztnQkFLVSxLQUFLO3NCQUFwQixLQUFLO2dCQUNXLFlBQVk7c0JBQTVCLE1BQU07Z0JBY1AsVUFBVTtzQkFEVCxZQUFZO3VCQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFZcEMsV0FBVztzQkFEVixZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFRckMsTUFBTTtzQkFETCxZQUFZO3VCQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPdXRwdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb2xvciB9IGZyb20gJ0BtaW50cGxheWVyL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBGaWxlVXBsb2FkIH0gZnJvbSAnLi4vZmlsZS11cGxvYWQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicy1maWxlLXVwbG9hZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQnNGaWxlVXBsb2FkQ29tcG9uZW50IHtcblxuICBASW5wdXQoKSBwdWJsaWMgZHJvcEZpbGVzQ2FwdGlvbiA9ICdEcm9wIHlvdXIgZmlsZXMgaGVyZSc7XG4gIEBJbnB1dCgpIHB1YmxpYyBicm93c2VGaWxlc0NhcHRpb24gPSAnQnJvd3NlIGZvciBmaWxlcyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlciA9ICdEcm9wIGZpbGVzIHRvIHVwbG9hZCc7XG5cbiAgY29sb3JzID0gQ29sb3I7XG4gIGlzRHJhZ2dpbmdGaWxlID0gZmFsc2U7XG4gIGZpbGVUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPEZpbGVVcGxvYWQ+O1xuICBASW5wdXQoKSBwdWJsaWMgZmlsZXM6IEZpbGVVcGxvYWRbXSA9IFtdO1xuICBAT3V0cHV0KCkgcHVibGljIGZpbGVzRHJvcHBlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsZVVwbG9hZFtdPigpO1xuXG4gIG9uQ2hhbmdlKGV2ZW50OiBFdmVudCkge1xuICAgIGlmICghZXZlbnQudGFyZ2V0KSByZXR1cm47XG4gICAgaWYgKCEoJ2ZpbGVzJyBpbiBldmVudC50YXJnZXQpKSByZXR1cm47XG4gICAgaWYgKCFldmVudC50YXJnZXRbJ2ZpbGVzJ10pIHJldHVybjtcblxuICAgIGNvbnN0IGZpbGVzID0gKDxIVE1MSW5wdXRFbGVtZW50PmV2ZW50LnRhcmdldCkuZmlsZXM7XG4gICAgaWYgKCFmaWxlcykgcmV0dXJuO1xuICAgIFxuICAgIHRoaXMucHJvY2Vzc0Ryb3BwZWRGaWxlcyhmaWxlcyk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkcmFnb3ZlcicsIFsnJGV2ZW50J10pXG4gIG9uRHJhZ092ZXIoZXZlbnQ6IERyYWdFdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgXG4gICAgaWYgKGV2ZW50LmRhdGFUcmFuc2Zlcikge1xuICAgICAgdGhpcy5pc0RyYWdnaW5nRmlsZSA9IHRydWU7XG4gICAgICBldmVudC5kYXRhVHJhbnNmZXIuZWZmZWN0QWxsb3dlZCA9IFwiY29weVwiO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RyYWdsZWF2ZScsIFsnJGV2ZW50J10pXG4gIG9uRHJhZ0xlYXZlKGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuaXNEcmFnZ2luZ0ZpbGUgPSBmYWxzZTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2Ryb3AnLCBbJyRldmVudCddKVxuICBvbkRyb3AoZXZlbnQ6IERyYWdFdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5pc0RyYWdnaW5nRmlsZSA9IGZhbHNlO1xuICAgIGlmIChldmVudC5kYXRhVHJhbnNmZXIgJiYgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzKSB7XG4gICAgICB0aGlzLnByb2Nlc3NEcm9wcGVkRmlsZXMoZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NEcm9wcGVkRmlsZXMoZmlsZUxpc3Q6IEZpbGVMaXN0KSB7XG4gICAgY29uc3QgbmV3RmlsZXMgPSBbLi4uQXJyYXkoZmlsZUxpc3QubGVuZ3RoKS5rZXlzKCldXG4gICAgICAubWFwKGkgPT4gZmlsZUxpc3QuaXRlbShpKSlcbiAgICAgIC5maWx0ZXIoZiA9PiAhIWYpXG4gICAgICAubWFwKGYgPT4gPEZpbGVVcGxvYWQ+eyBmaWxlOiBmLCBwcm9ncmVzczogMCB9KTtcbiAgICBcbiAgICB0aGlzLmZpbGVzLnB1c2goLi4ubmV3RmlsZXMpO1xuICAgIHRoaXMuZmlsZXNEcm9wcGVkLmVtaXQobmV3RmlsZXMpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZHJvcHpvbmUgYm9yZGVyIHBvc2l0aW9uLXJlbGF0aXZlIHAtNVwiIFtjbGFzcy5kcmFnZ2luZ109XCJpc0RyYWdnaW5nRmlsZVwiPlxuICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiIG11bHRpcGxlICNmaWxlVXBsb2FkIChjaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiIFt0aXRsZV09XCJwbGFjZWhvbGRlclwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgdy0xMDAgaC0xMDBcIj5cbiAgICA8IS0tIDxpbWcgc3JjPVwiL2Fzc2V0cy9pYy1maWxlLXVwbG9hZC5zdmdcIiBbYWx0XT1cInBsYWNlaG9sZGVyXCI+IC0tPlxuICAgIDxzcGFuIGNsYXNzPVwiaDMgZC1ibG9ja1wiPnt7IGRyb3BGaWxlc0NhcHRpb24gfX08L3NwYW4+XG4gICAgPGxhYmVsIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHBvc2l0aW9uLXJlbGF0aXZlXCIgW2JzRm9yXT1cImZpbGVVcGxvYWRcIj57eyBicm93c2VGaWxlc0NhcHRpb24gfX08L2xhYmVsPlxuPC9kaXY+XG48YnMtbGlzdC1ncm91cCBjbGFzcz1cImZpbGVzLWxpc3RcIj5cbiAgICA8YnMtbGlzdC1ncm91cC1pdGVtICpuZ0Zvcj1cImxldCB1cGxvYWQgb2YgZmlsZXNcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZpbGVUZW1wbGF0ZSA/PyBkZWZhdWx0RmlsZVRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogdXBsb2FkIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2JzLWxpc3QtZ3JvdXAtaXRlbT5cbjwvYnMtbGlzdC1ncm91cD5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0RmlsZVRlbXBsYXRlIGxldC11cGxvYWQ+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXJvdyBteC1hdXRvXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWltZ1wiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTEgdGV4dC1zdGFydCBweC0yXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImQtYmxvY2sgdGV4dC10cnVuY2F0ZSB0ZXh0LXNlY29uZGFyeVwiPnt7IHVwbG9hZC5maWxlLm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImQtYmxvY2sgdGV4dC1ncmV5IG1iLTBcIj57eyB1cGxvYWQuZmlsZS5zaXplIHwgYnNGb3JtYXRCeXRlcyB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxicy1wcm9ncmVzcyBbaGVpZ2h0XT1cIjRcIj5cbiAgICAgICAgICAgICAgICA8YnMtcHJvZ3Jlc3MtYmFyIFttaW5pbXVtXT1cIjBcIiBbbWF4aW11bV09XCJ1cGxvYWQuZmlsZS5zaXplXCIgW3ZhbHVlXT1cInVwbG9hZC5wcm9ncmVzc1wiPjwvYnMtcHJvZ3Jlc3MtYmFyPlxuICAgICAgICAgICAgPC9icy1wcm9ncmVzcz5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPiJdfQ==
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9maWxlLXVwbG9hZC9zcmMvY29tcG9uZW50L2ZpbGUtdXBsb2FkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvZmlsZS11cGxvYWQvc3JjL2NvbXBvbmVudC9maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7QUFRakQsTUFBTSxPQUFPLHFCQUFxQjtJQUxsQztRQU9rQixxQkFBZ0IsR0FBRyxzQkFBc0IsQ0FBQztRQUMxQyx1QkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztRQUN4QyxnQkFBVyxHQUFHLHNCQUFzQixDQUFDO1FBRXJELFdBQU0sR0FBRyxLQUFLLENBQUM7UUFDZixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUVQLFVBQUssR0FBaUIsRUFBRSxDQUFDO1FBQ3hCLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQWdCLENBQUM7S0FzRGxFO0lBcERDLFFBQVEsQ0FBQyxLQUFZO1FBQ25CLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTTtZQUFFLE9BQU87UUFDMUIsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFBRSxPQUFPO1FBQ3ZDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztZQUFFLE9BQU87UUFFbkMsTUFBTSxLQUFLLEdBQXNCLEtBQUssQ0FBQyxNQUFPLENBQUMsS0FBSyxDQUFDO1FBQ3JELElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTztRQUVuQixJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUdELFVBQVUsQ0FBQyxLQUFnQjtRQUN6QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXhCLElBQUksS0FBSyxDQUFDLFlBQVksRUFBRTtZQUN0QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztZQUMzQixLQUFLLENBQUMsWUFBWSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUM7U0FDM0M7SUFDSCxDQUFDO0lBR0QsV0FBVyxDQUFDLEtBQWdCO1FBQzFCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDOUIsQ0FBQztJQUdELE1BQU0sQ0FBQyxLQUFnQjtRQUNyQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksS0FBSyxDQUFDLFlBQVksSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRTtZQUNsRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNwRDtJQUNILENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxRQUFrQjtRQUM1QyxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUNoRCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzFCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDaEIsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBWSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLEVBQUUsQ0FBQSxDQUFDLENBQUM7UUFFN0YsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWEsRUFBRSxJQUFnQjtRQUN6QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQzs7a0hBL0RVLHFCQUFxQjtzR0FBckIscUJBQXFCLGtXQ1RsQyw0NUNBdUJjOzJGRGRELHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxnQkFBZ0I7OEJBTVYsZ0JBQWdCO3NCQUEvQixLQUFLO2dCQUNVLGtCQUFrQjtzQkFBakMsS0FBSztnQkFDVSxXQUFXO3NCQUExQixLQUFLO2dCQUtVLEtBQUs7c0JBQXBCLEtBQUs7Z0JBQ1csWUFBWTtzQkFBNUIsTUFBTTtnQkFjUCxVQUFVO3NCQURULFlBQVk7dUJBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVlwQyxXQUFXO3NCQURWLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVFyQyxNQUFNO3NCQURMLFlBQVk7dUJBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE91dHB1dCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbG9yIH0gZnJvbSAnQG1pbnRwbGF5ZXIvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IEZpbGVVcGxvYWQgfSBmcm9tICcuLi9maWxlLXVwbG9hZCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JzLWZpbGUtdXBsb2FkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmlsZS11cGxvYWQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBCc0ZpbGVVcGxvYWRDb21wb25lbnQge1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBkcm9wRmlsZXNDYXB0aW9uID0gJ0Ryb3AgeW91ciBmaWxlcyBoZXJlJztcbiAgQElucHV0KCkgcHVibGljIGJyb3dzZUZpbGVzQ2FwdGlvbiA9ICdCcm93c2UgZm9yIGZpbGVzJztcbiAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVyID0gJ0Ryb3AgZmlsZXMgdG8gdXBsb2FkJztcblxuICBjb2xvcnMgPSBDb2xvcjtcbiAgaXNEcmFnZ2luZ0ZpbGUgPSBmYWxzZTtcbiAgZmlsZVRlbXBsYXRlPzogVGVtcGxhdGVSZWY8RmlsZVVwbG9hZD47XG4gIEBJbnB1dCgpIHB1YmxpYyBmaWxlczogRmlsZVVwbG9hZFtdID0gW107XG4gIEBPdXRwdXQoKSBwdWJsaWMgZmlsZXNEcm9wcGVkID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlVXBsb2FkW10+KCk7XG5cbiAgb25DaGFuZ2UoZXZlbnQ6IEV2ZW50KSB7XG4gICAgaWYgKCFldmVudC50YXJnZXQpIHJldHVybjtcbiAgICBpZiAoISgnZmlsZXMnIGluIGV2ZW50LnRhcmdldCkpIHJldHVybjtcbiAgICBpZiAoIWV2ZW50LnRhcmdldFsnZmlsZXMnXSkgcmV0dXJuO1xuXG4gICAgY29uc3QgZmlsZXMgPSAoPEhUTUxJbnB1dEVsZW1lbnQ+ZXZlbnQudGFyZ2V0KS5maWxlcztcbiAgICBpZiAoIWZpbGVzKSByZXR1cm47XG4gICAgXG4gICAgdGhpcy5wcm9jZXNzRHJvcHBlZEZpbGVzKGZpbGVzKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RyYWdvdmVyJywgWyckZXZlbnQnXSlcbiAgb25EcmFnT3ZlcihldmVudDogRHJhZ0V2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBcbiAgICBpZiAoZXZlbnQuZGF0YVRyYW5zZmVyKSB7XG4gICAgICB0aGlzLmlzRHJhZ2dpbmdGaWxlID0gdHJ1ZTtcbiAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkID0gXCJjb3B5XCI7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZHJhZ2xlYXZlJywgWyckZXZlbnQnXSlcbiAgb25EcmFnTGVhdmUoZXZlbnQ6IERyYWdFdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5pc0RyYWdnaW5nRmlsZSA9IGZhbHNlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZHJvcCcsIFsnJGV2ZW50J10pXG4gIG9uRHJvcChldmVudDogRHJhZ0V2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmlzRHJhZ2dpbmdGaWxlID0gZmFsc2U7XG4gICAgaWYgKGV2ZW50LmRhdGFUcmFuc2ZlciAmJiBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMpIHtcbiAgICAgIHRoaXMucHJvY2Vzc0Ryb3BwZWRGaWxlcyhldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc0Ryb3BwZWRGaWxlcyhmaWxlTGlzdDogRmlsZUxpc3QpIHtcbiAgICBjb25zdCBuZXdGaWxlcyA9IFsuLi5BcnJheShmaWxlTGlzdC5sZW5ndGgpLmtleXMoKV1cbiAgICAgIC5tYXAoaSA9PiBmaWxlTGlzdC5pdGVtKGkpKVxuICAgICAgLmZpbHRlcihmID0+ICEhZilcbiAgICAgIC5tYXAoKGZpbGUsIGluZGV4KSA9PiA8RmlsZVVwbG9hZD57IGZpbGUsIHByb2dyZXNzOiAwLCBpbmRleDogdGhpcy5maWxlcy5sZW5ndGggKyBpbmRleCB9KTtcbiAgICBcbiAgICB0aGlzLmZpbGVzLnB1c2goLi4ubmV3RmlsZXMpO1xuICAgIHRoaXMuZmlsZXNEcm9wcGVkLmVtaXQobmV3RmlsZXMpO1xuICB9XG5cbiAgdHJhY2tCeUZpbGUoaW5kZXg6IG51bWJlciwgZmlsZTogRmlsZVVwbG9hZCkge1xuICAgIHJldHVybiBmaWxlLmluZGV4O1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZHJvcHpvbmUgYm9yZGVyIHBvc2l0aW9uLXJlbGF0aXZlIHAtNVwiIFtjbGFzcy5kcmFnZ2luZ109XCJpc0RyYWdnaW5nRmlsZVwiPlxuICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiIG11bHRpcGxlICNmaWxlVXBsb2FkIChjaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiIFt0aXRsZV09XCJwbGFjZWhvbGRlclwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgdy0xMDAgaC0xMDBcIj5cbiAgICA8IS0tIDxpbWcgc3JjPVwiL2Fzc2V0cy9pYy1maWxlLXVwbG9hZC5zdmdcIiBbYWx0XT1cInBsYWNlaG9sZGVyXCI+IC0tPlxuICAgIDxzcGFuIGNsYXNzPVwiaDMgZC1ibG9ja1wiPnt7IGRyb3BGaWxlc0NhcHRpb24gfX08L3NwYW4+XG4gICAgPGxhYmVsIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHBvc2l0aW9uLXJlbGF0aXZlXCIgW2JzRm9yXT1cImZpbGVVcGxvYWRcIj57eyBicm93c2VGaWxlc0NhcHRpb24gfX08L2xhYmVsPlxuPC9kaXY+XG48YnMtbGlzdC1ncm91cCBjbGFzcz1cImZpbGVzLWxpc3RcIj5cbiAgICA8YnMtbGlzdC1ncm91cC1pdGVtICpuZ0Zvcj1cImxldCB1cGxvYWQgb2YgZmlsZXM7IHRyYWNrQnk6IHRyYWNrQnlGaWxlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWxlVGVtcGxhdGUgPz8gZGVmYXVsdEZpbGVUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHVwbG9hZCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9icy1saXN0LWdyb3VwLWl0ZW0+XG48L2JzLWxpc3QtZ3JvdXA+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdEZpbGVUZW1wbGF0ZSBsZXQtdXBsb2FkPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1yb3cgbXgtYXV0b1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1pbWdcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xIHRleHQtc3RhcnQgcHgtMlwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkLWJsb2NrIHRleHQtdHJ1bmNhdGUgdGV4dC1zZWNvbmRhcnlcIj57eyB1cGxvYWQuZmlsZS5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkLWJsb2NrIHRleHQtZ3JleSBtYi0wXCI+e3sgdXBsb2FkLmZpbGUuc2l6ZSB8IGJzRm9ybWF0Qnl0ZXMgfX08L3NwYW4+XG4gICAgICAgICAgICA8YnMtcHJvZ3Jlc3MgW2hlaWdodF09XCI0XCI+XG4gICAgICAgICAgICAgICAgPGJzLXByb2dyZXNzLWJhciBbbWluaW11bV09XCIwXCIgW21heGltdW1dPVwidXBsb2FkLmZpbGUuc2l6ZVwiIFt2YWx1ZV09XCJ1cGxvYWQucHJvZ3Jlc3NcIj48L2JzLXByb2dyZXNzLWJhcj5cbiAgICAgICAgICAgIDwvYnMtcHJvZ3Jlc3M+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL2ZpbGUtdXBsb2FkL3NyYy9maWxlLXVwbG9hZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBGaWxlVXBsb2FkIHtcbiAgICBmaWxlOiBGaWxlO1xuICAgIHByb2dyZXNzOiBudW1iZXI7XG59Il19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL2ZpbGUtdXBsb2FkL3NyYy9maWxlLXVwbG9hZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBGaWxlVXBsb2FkIHtcbiAgICBmaWxlOiBGaWxlO1xuICAgIHByb2dyZXNzOiBudW1iZXI7XG4gICAgaW5kZXg6IG51bWJlcjtcbn0iXX0=
@@ -23,12 +23,15 @@ export class BsMultiselectComponent {
23
23
  this.selectedItems.splice(this.selectedItems.findIndex((i) => i === item), 1);
24
24
  }
25
25
  }
26
+ defaultTrackBy(index, item) {
27
+ return item;
28
+ }
26
29
  }
27
30
  BsMultiselectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: BsMultiselectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
28
- BsMultiselectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: BsMultiselectComponent, selector: "bs-multiselect", inputs: { items: "items", selectedItems: "selectedItems" }, viewQueries: [{ propertyName: "defaultButtonTemplate", first: true, predicate: ["defaultButtonTemplate"], descendants: true }], ngImport: i0, template: "<bs-has-overlay></bs-has-overlay>\n<div bsDropdown [hasBackdrop]=\"true\" [closeOnClickOutside]=\"true\">\n <button bsDropdownToggle [color]=\"colors.primary\">\n <ng-container *ngTemplateOutlet=\"buttonTemplate ?? defaultButtonTemplate; context: { $implicit: selectedItems.length }\"></ng-container>\n </button>\n <div *bsDropdownMenu class=\"bg-white mw-250px p-3 border rounded shadow\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n <hr class=\"my-2\" *ngIf=\"headerTemplate\">\n <bs-toggle-button *ngFor=\"let item of items\" [ngModel]=\"selectedItems.indexOf(item) > -1\" (ngModelChange)=\"itemChange(item, $event)\" class=\"d-block\">{{ item }}</bs-toggle-button>\n <hr class=\"my-2\" *ngIf=\"footerTemplate\">\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </div>\n</div>\n<ng-template #defaultButtonTemplate let-count>\n {{ count }} selected\n</ng-template>", styles: [".mw-250px{min-width:250px}\n"], dependencies: [{ 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: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.BsDropdownDirective, selector: "[bsDropdown]", inputs: ["hasBackdrop", "sameWidth", "closeOnClickOutside", "sameDropdownWidth", "isOpen"], outputs: ["isOpenChange"] }, { kind: "directive", type: i3.BsDropdownToggleDirective, selector: "[bsDropdownToggle]" }, { kind: "directive", type: i3.BsDropdownMenuDirective, selector: "[bsDropdownMenu]" }, { kind: "component", type: i4.BsHasOverlayComponent, selector: "bs-has-overlay" }, { kind: "component", type: i5.BsToggleButtonComponent, selector: "bs-toggle-button", inputs: ["type", "isToggled", "disabled", "name", "value", "group"], outputs: ["isToggledChange"] }, { kind: "directive", type: i5.BsToggleButtonValueAccessor, selector: "bs-toggle-button" }, { kind: "directive", type: i6.BsButtonTypeDirective, selector: "button[color],input[type=\"button\"][color],input[type=\"submit\"][color]", inputs: ["color"] }] });
31
+ BsMultiselectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: BsMultiselectComponent, selector: "bs-multiselect", inputs: { items: "items", selectedItems: "selectedItems", itemsTrackBy: "itemsTrackBy" }, viewQueries: [{ propertyName: "defaultButtonTemplate", first: true, predicate: ["defaultButtonTemplate"], descendants: true }], ngImport: i0, template: "<bs-has-overlay></bs-has-overlay>\n<div bsDropdown [hasBackdrop]=\"true\" [closeOnClickOutside]=\"true\">\n <button bsDropdownToggle [color]=\"colors.primary\">\n <ng-container *ngTemplateOutlet=\"buttonTemplate ?? defaultButtonTemplate; context: { $implicit: selectedItems.length }\"></ng-container>\n </button>\n <div *bsDropdownMenu class=\"bg-white mw-250px p-3 border rounded shadow\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n <hr class=\"my-2\" *ngIf=\"headerTemplate\">\n <bs-toggle-button *ngFor=\"let item of items; trackBy: itemsTrackBy ?? defaultTrackBy\" [ngModel]=\"selectedItems.indexOf(item) > -1\" (ngModelChange)=\"itemChange(item, $event)\" class=\"d-block\">{{ item }}</bs-toggle-button>\n <hr class=\"my-2\" *ngIf=\"footerTemplate\">\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </div>\n</div>\n<ng-template #defaultButtonTemplate let-count>\n {{ count }} selected\n</ng-template>", styles: [".mw-250px{min-width:250px}\n"], dependencies: [{ 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: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.BsDropdownDirective, selector: "[bsDropdown]", inputs: ["hasBackdrop", "sameWidth", "closeOnClickOutside", "sameDropdownWidth", "isOpen"], outputs: ["isOpenChange"] }, { kind: "directive", type: i3.BsDropdownToggleDirective, selector: "[bsDropdownToggle]" }, { kind: "directive", type: i3.BsDropdownMenuDirective, selector: "[bsDropdownMenu]" }, { kind: "component", type: i4.BsHasOverlayComponent, selector: "bs-has-overlay" }, { kind: "component", type: i5.BsToggleButtonComponent, selector: "bs-toggle-button", inputs: ["type", "isToggled", "disabled", "name", "value", "group"], outputs: ["isToggledChange"] }, { kind: "directive", type: i5.BsToggleButtonValueAccessor, selector: "bs-toggle-button" }, { kind: "directive", type: i6.BsButtonTypeDirective, selector: "button[color],input[type=\"button\"][color],input[type=\"submit\"][color]", inputs: ["color"] }] });
29
32
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: BsMultiselectComponent, decorators: [{
30
33
  type: Component,
31
- args: [{ selector: 'bs-multiselect', template: "<bs-has-overlay></bs-has-overlay>\n<div bsDropdown [hasBackdrop]=\"true\" [closeOnClickOutside]=\"true\">\n <button bsDropdownToggle [color]=\"colors.primary\">\n <ng-container *ngTemplateOutlet=\"buttonTemplate ?? defaultButtonTemplate; context: { $implicit: selectedItems.length }\"></ng-container>\n </button>\n <div *bsDropdownMenu class=\"bg-white mw-250px p-3 border rounded shadow\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n <hr class=\"my-2\" *ngIf=\"headerTemplate\">\n <bs-toggle-button *ngFor=\"let item of items\" [ngModel]=\"selectedItems.indexOf(item) > -1\" (ngModelChange)=\"itemChange(item, $event)\" class=\"d-block\">{{ item }}</bs-toggle-button>\n <hr class=\"my-2\" *ngIf=\"footerTemplate\">\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </div>\n</div>\n<ng-template #defaultButtonTemplate let-count>\n {{ count }} selected\n</ng-template>", styles: [".mw-250px{min-width:250px}\n"] }]
34
+ args: [{ selector: 'bs-multiselect', template: "<bs-has-overlay></bs-has-overlay>\n<div bsDropdown [hasBackdrop]=\"true\" [closeOnClickOutside]=\"true\">\n <button bsDropdownToggle [color]=\"colors.primary\">\n <ng-container *ngTemplateOutlet=\"buttonTemplate ?? defaultButtonTemplate; context: { $implicit: selectedItems.length }\"></ng-container>\n </button>\n <div *bsDropdownMenu class=\"bg-white mw-250px p-3 border rounded shadow\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n <hr class=\"my-2\" *ngIf=\"headerTemplate\">\n <bs-toggle-button *ngFor=\"let item of items; trackBy: itemsTrackBy ?? defaultTrackBy\" [ngModel]=\"selectedItems.indexOf(item) > -1\" (ngModelChange)=\"itemChange(item, $event)\" class=\"d-block\">{{ item }}</bs-toggle-button>\n <hr class=\"my-2\" *ngIf=\"footerTemplate\">\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </div>\n</div>\n<ng-template #defaultButtonTemplate let-count>\n {{ count }} selected\n</ng-template>", styles: [".mw-250px{min-width:250px}\n"] }]
32
35
  }], propDecorators: { items: [{
33
36
  type: Input
34
37
  }], selectedItems: [{
@@ -36,5 +39,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
36
39
  }], defaultButtonTemplate: [{
37
40
  type: ViewChild,
38
41
  args: ['defaultButtonTemplate']
42
+ }], itemsTrackBy: [{
43
+ type: Input
39
44
  }] } });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlzZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9tdWx0aXNlbGVjdC9zcmMvY29tcG9uZW50L211bHRpc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvbXVsdGlzZWxlY3Qvc3JjL2NvbXBvbmVudC9tdWx0aXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7QUFPakQsTUFBTSxPQUFPLHNCQUFzQjtJQUxuQztRQVVFLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFHQyxVQUFLLEdBQVUsRUFBRSxDQUFDO1FBQ2xCLGtCQUFhLEdBQVUsRUFBRSxDQUFDO0tBYTNDO0lBVkMscUNBQXFDO0lBQ3JDLFVBQVUsQ0FBQyxJQUFTLEVBQUUsS0FBcUI7UUFDekMsMENBQTBDO1FBQzFDLElBQUksS0FBSyxFQUFFO1lBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDL0I7YUFBTTtZQUNMLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDL0U7SUFDSCxDQUFDOzttSEFwQlUsc0JBQXNCO3VHQUF0QixzQkFBc0Isa1BDUm5DLDg4QkFlYzsyRkRQRCxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0UsZ0JBQWdCOzhCQVlWLEtBQUs7c0JBQXBCLEtBQUs7Z0JBQ1UsYUFBYTtzQkFBNUIsS0FBSztnQkFDOEIscUJBQXFCO3NCQUF4RCxTQUFTO3VCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbG9yIH0gZnJvbSAnQG1pbnRwbGF5ZXIvbmctYm9vdHN0cmFwJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnMtbXVsdGlzZWxlY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vbXVsdGlzZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tdWx0aXNlbGVjdC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEJzTXVsdGlzZWxlY3RDb21wb25lbnQge1xuXG4gIGhlYWRlclRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcbiAgZm9vdGVyVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBidXR0b25UZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG4gIGNvbG9ycyA9IENvbG9yO1xuXG5cbiAgQElucHV0KCkgcHVibGljIGl0ZW1zOiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0ZWRJdGVtczogYW55W10gPSBbXTtcbiAgQFZpZXdDaGlsZCgnZGVmYXVsdEJ1dHRvblRlbXBsYXRlJykgZGVmYXVsdEJ1dHRvblRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvLyBpdGVtQ2hhbmdlKGl0ZW06IGFueSwgZXY6IEV2ZW50KSB7XG4gIGl0ZW1DaGFuZ2UoaXRlbTogYW55LCB2YWx1ZTogYm9vbGVhbiB8IG51bGwpIHtcbiAgICAvLyBjb25zdCB2YWx1ZSA9ICg8YW55PmV2LnRhcmdldCkuY2hlY2tlZDtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKGl0ZW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuc3BsaWNlKHRoaXMuc2VsZWN0ZWRJdGVtcy5maW5kSW5kZXgoKGkpID0+IGkgPT09IGl0ZW0pLCAxKTtcbiAgICB9XG4gIH1cbiAgXG59XG4iLCI8YnMtaGFzLW92ZXJsYXk+PC9icy1oYXMtb3ZlcmxheT5cbjxkaXYgYnNEcm9wZG93biBbaGFzQmFja2Ryb3BdPVwidHJ1ZVwiIFtjbG9zZU9uQ2xpY2tPdXRzaWRlXT1cInRydWVcIj5cbiAgICA8YnV0dG9uIGJzRHJvcGRvd25Ub2dnbGUgW2NvbG9yXT1cImNvbG9ycy5wcmltYXJ5XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidXR0b25UZW1wbGF0ZSA/PyBkZWZhdWx0QnV0dG9uVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBzZWxlY3RlZEl0ZW1zLmxlbmd0aCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9idXR0b24+XG4gICAgPGRpdiAqYnNEcm9wZG93bk1lbnUgY2xhc3M9XCJiZy13aGl0ZSBtdy0yNTBweCBwLTMgYm9yZGVyIHJvdW5kZWQgc2hhZG93XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8aHIgY2xhc3M9XCJteS0yXCIgKm5nSWY9XCJoZWFkZXJUZW1wbGF0ZVwiPlxuICAgICAgICA8YnMtdG9nZ2xlLWJ1dHRvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtc1wiIFtuZ01vZGVsXT1cInNlbGVjdGVkSXRlbXMuaW5kZXhPZihpdGVtKSA+IC0xXCIgKG5nTW9kZWxDaGFuZ2UpPVwiaXRlbUNoYW5nZShpdGVtLCAkZXZlbnQpXCIgY2xhc3M9XCJkLWJsb2NrXCI+e3sgaXRlbSB9fTwvYnMtdG9nZ2xlLWJ1dHRvbj5cbiAgICAgICAgPGhyIGNsYXNzPVwibXktMlwiICpuZ0lmPVwiZm9vdGVyVGVtcGxhdGVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvb3RlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdEJ1dHRvblRlbXBsYXRlIGxldC1jb3VudD5cbiAgICB7eyBjb3VudCB9fSBzZWxlY3RlZFxuPC9uZy10ZW1wbGF0ZT4iXX0=
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlzZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9tdWx0aXNlbGVjdC9zcmMvY29tcG9uZW50L211bHRpc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvbXVsdGlzZWxlY3Qvc3JjL2NvbXBvbmVudC9tdWx0aXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQW1CLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7O0FBT2pELE1BQU0sT0FBTyxzQkFBc0I7SUFMbkM7UUFVRSxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBR0MsVUFBSyxHQUFRLEVBQUUsQ0FBQztRQUNoQixrQkFBYSxHQUFRLEVBQUUsQ0FBQztLQWtCekM7SUFkQyxxQ0FBcUM7SUFDckMsVUFBVSxDQUFDLElBQU8sRUFBRSxLQUFxQjtRQUN2QywwQ0FBMEM7UUFDMUMsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMvQjthQUFNO1lBQ0wsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUMvRTtJQUNILENBQUM7SUFFRCxjQUFjLENBQUMsS0FBYSxFQUFFLElBQU87UUFDbkMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzttSEF6QlUsc0JBQXNCO3VHQUF0QixzQkFBc0IsZ1JDUm5DLHUvQkFlYzsyRkRQRCxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0UsZ0JBQWdCOzhCQVlWLEtBQUs7c0JBQXBCLEtBQUs7Z0JBQ1UsYUFBYTtzQkFBNUIsS0FBSztnQkFDOEIscUJBQXFCO3NCQUF4RCxTQUFTO3VCQUFDLHVCQUF1QjtnQkFDbEIsWUFBWTtzQkFBM0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIFRlbXBsYXRlUmVmLCBUcmFja0J5RnVuY3Rpb24sIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29sb3IgfSBmcm9tICdAbWludHBsYXllci9uZy1ib290c3RyYXAnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicy1tdWx0aXNlbGVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9tdWx0aXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL211bHRpc2VsZWN0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQnNNdWx0aXNlbGVjdENvbXBvbmVudDxUPiB7XG5cbiAgaGVhZGVyVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBmb290ZXJUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG4gIGJ1dHRvblRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcbiAgY29sb3JzID0gQ29sb3I7XG5cblxuICBASW5wdXQoKSBwdWJsaWMgaXRlbXM6IFRbXSA9IFtdO1xuICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0ZWRJdGVtczogVFtdID0gW107XG4gIEBWaWV3Q2hpbGQoJ2RlZmF1bHRCdXR0b25UZW1wbGF0ZScpIGRlZmF1bHRCdXR0b25UZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBJbnB1dCgpIHB1YmxpYyBpdGVtc1RyYWNrQnk/OiBUcmFja0J5RnVuY3Rpb248VD47XG5cbiAgLy8gaXRlbUNoYW5nZShpdGVtOiBhbnksIGV2OiBFdmVudCkge1xuICBpdGVtQ2hhbmdlKGl0ZW06IFQsIHZhbHVlOiBib29sZWFuIHwgbnVsbCkge1xuICAgIC8vIGNvbnN0IHZhbHVlID0gKDxhbnk+ZXYudGFyZ2V0KS5jaGVja2VkO1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5zcGxpY2UodGhpcy5zZWxlY3RlZEl0ZW1zLmZpbmRJbmRleCgoaSkgPT4gaSA9PT0gaXRlbSksIDEpO1xuICAgIH1cbiAgfVxuICBcbiAgZGVmYXVsdFRyYWNrQnkoaW5kZXg6IG51bWJlciwgaXRlbTogVCkge1xuICAgIHJldHVybiBpdGVtO1xuICB9XG5cbn1cbiIsIjxicy1oYXMtb3ZlcmxheT48L2JzLWhhcy1vdmVybGF5PlxuPGRpdiBic0Ryb3Bkb3duIFtoYXNCYWNrZHJvcF09XCJ0cnVlXCIgW2Nsb3NlT25DbGlja091dHNpZGVdPVwidHJ1ZVwiPlxuICAgIDxidXR0b24gYnNEcm9wZG93blRvZ2dsZSBbY29sb3JdPVwiY29sb3JzLnByaW1hcnlcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJ1dHRvblRlbXBsYXRlID8/IGRlZmF1bHRCdXR0b25UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHNlbGVjdGVkSXRlbXMubGVuZ3RoIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2J1dHRvbj5cbiAgICA8ZGl2ICpic0Ryb3Bkb3duTWVudSBjbGFzcz1cImJnLXdoaXRlIG13LTI1MHB4IHAtMyBib3JkZXIgcm91bmRlZCBzaGFkb3dcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDxociBjbGFzcz1cIm15LTJcIiAqbmdJZj1cImhlYWRlclRlbXBsYXRlXCI+XG4gICAgICAgIDxicy10b2dnbGUtYnV0dG9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zOyB0cmFja0J5OiBpdGVtc1RyYWNrQnkgPz8gZGVmYXVsdFRyYWNrQnlcIiBbbmdNb2RlbF09XCJzZWxlY3RlZEl0ZW1zLmluZGV4T2YoaXRlbSkgPiAtMVwiIChuZ01vZGVsQ2hhbmdlKT1cIml0ZW1DaGFuZ2UoaXRlbSwgJGV2ZW50KVwiIGNsYXNzPVwiZC1ibG9ja1wiPnt7IGl0ZW0gfX08L2JzLXRvZ2dsZS1idXR0b24+XG4gICAgICAgIDxociBjbGFzcz1cIm15LTJcIiAqbmdJZj1cImZvb3RlclRlbXBsYXRlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb290ZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuPC9kaXY+XG48bmctdGVtcGxhdGUgI2RlZmF1bHRCdXR0b25UZW1wbGF0ZSBsZXQtY291bnQ+XG4gICAge3sgY291bnQgfX0gc2VsZWN0ZWRcbjwvbmctdGVtcGxhdGU+Il19
@@ -15,4 +15,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
15
15
  selector: '[bsButtonTemplate]'
16
16
  }]
17
17
  }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i1.BsMultiselectComponent }]; } });
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLXRlbXBsYXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvbXVsdGlzZWxlY3Qvc3JjL2RpcmVjdGl2ZXMvYnV0dG9uLXRlbXBsYXRlL2J1dHRvbi10ZW1wbGF0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7OztBQUsvRSxNQUFNLE9BQU8seUJBQXlCO0lBRXBDLFlBQVksUUFBMEIsRUFBRSxXQUFtQztRQUN6RSxXQUFXLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQztJQUN4QyxDQUFDOztzSEFKVSx5QkFBeUI7MEdBQXpCLHlCQUF5QjsyRkFBekIseUJBQXlCO2tCQUhyQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7aUJBQy9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnNNdWx0aXNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudC9tdWx0aXNlbGVjdC5jb21wb25lbnQnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYnNCdXR0b25UZW1wbGF0ZV0nXG59KVxuZXhwb3J0IGNsYXNzIEJzQnV0dG9uVGVtcGxhdGVEaXJlY3RpdmUge1xuXG4gIGNvbnN0cnVjdG9yKHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+LCBtdWx0aXNlbGVjdDogQnNNdWx0aXNlbGVjdENvbXBvbmVudCkge1xuICAgIG11bHRpc2VsZWN0LmJ1dHRvblRlbXBsYXRlID0gdGVtcGxhdGU7XG4gIH1cblxufVxuIl19
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLXRlbXBsYXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvbXVsdGlzZWxlY3Qvc3JjL2RpcmVjdGl2ZXMvYnV0dG9uLXRlbXBsYXRlL2J1dHRvbi10ZW1wbGF0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7OztBQUsvRSxNQUFNLE9BQU8seUJBQXlCO0lBRXBDLFlBQVksUUFBMEIsRUFBRSxXQUFzQztRQUM1RSxXQUFXLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQztJQUN4QyxDQUFDOztzSEFKVSx5QkFBeUI7MEdBQXpCLHlCQUF5QjsyRkFBekIseUJBQXlCO2tCQUhyQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7aUJBQy9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnNNdWx0aXNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudC9tdWx0aXNlbGVjdC5jb21wb25lbnQnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYnNCdXR0b25UZW1wbGF0ZV0nXG59KVxuZXhwb3J0IGNsYXNzIEJzQnV0dG9uVGVtcGxhdGVEaXJlY3RpdmU8VD4ge1xuXG4gIGNvbnN0cnVjdG9yKHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+LCBtdWx0aXNlbGVjdDogQnNNdWx0aXNlbGVjdENvbXBvbmVudDxUPikge1xuICAgIG11bHRpc2VsZWN0LmJ1dHRvblRlbXBsYXRlID0gdGVtcGxhdGU7XG4gIH1cblxufVxuIl19