@dsivd/prestations-ng 14.5.12 → 14.5.14-beta3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3 @@
1
+ export class FoehnTableColumnConfiguration {
2
+ }
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tdGFibGUtY29sdW1uLWNvbmZpZ3VyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tdGFibGUvZm9laG4tdGFibGUtY29sdW1uLWNvbmZpZ3VyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLDZCQUE2QjtDQU96QyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBGb2VoblRhYmxlQ29sdW1uQ29uZmlndXJhdGlvbjxUPiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBjb2x1bW5MYWJlbEtleTogc3RyaW5nO1xuICAgIGlzSW1wb3J0YW50PzogKGl0ZW06IFQpID0+IGJvb2xlYW47XG4gICAgdmFsdWVHZXR0ZXI6IChpdGVtOiBUKSA9PiBzdHJpbmc7XG4gICAgcm91dGVyTGlua0dldHRlcj86IChpdGVtOiBUKSA9PiBzdHJpbmc7XG4gICAgc29ydEF0dHJpYnV0ZT86IHN0cmluZztcbn1cbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export class FoehnTablePageChangeEvent {
2
+ }
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tdGFibGUtcGFnZS1jaGFuZ2UtZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tdGFibGUvZm9laG4tdGFibGUtcGFnZS1jaGFuZ2UtZXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLHlCQUF5QjtDQUlyQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBGb2VoblRhYmxlUGFnZUNoYW5nZUV2ZW50IHtcbiAgICBwcmV2aW91c1BhZ2U6IG51bWJlcjtcbiAgICBjdXJyZW50UGFnZTogbnVtYmVyO1xuICAgIHBhZ2VDb3VudDogbnVtYmVyO1xufVxuIl19
@@ -0,0 +1,148 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../foehn-icons/foehn-icon-chevron-up.component";
4
+ import * as i2 from "../foehn-icons/foehn-icon-chevron-down.component";
5
+ import * as i3 from "../foehn-icons/foehn-icon-chevron-left.component";
6
+ import * as i4 from "../foehn-icons/foehn-icon-chevron-right.component";
7
+ import * as i5 from "@angular/common";
8
+ import * as i6 from "@angular/router";
9
+ import * as i7 from "../sdk-dictionary/sdk-dictionary.pipe";
10
+ const hasInputChanged = (change) => !(!change ||
11
+ !change.currentValue ||
12
+ change.previousValue === change.currentValue);
13
+ export class FoehnTableComponent {
14
+ constructor() {
15
+ this.itemsPerPage = 10;
16
+ this.id = 'foehn-table';
17
+ this.previousLabel = 'Précédent';
18
+ this.nextLabel = 'Suivant';
19
+ this.pageChange = new EventEmitter();
20
+ this.sortChange = new EventEmitter();
21
+ this.currentPage = 1;
22
+ this.filteredList = [];
23
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
24
+ this.trackByFn = (index, item) => index;
25
+ }
26
+ set list(list) {
27
+ this._list = list;
28
+ }
29
+ ngOnChanges(changes) {
30
+ const itemsPerPageChange = changes.itemsPerPage;
31
+ const listChange = changes.list;
32
+ const fixedPageCountChange = changes.fixedPageCount;
33
+ if (!hasInputChanged(itemsPerPageChange) &&
34
+ !hasInputChanged(listChange) &&
35
+ !hasInputChanged(fixedPageCountChange)) {
36
+ return;
37
+ }
38
+ this.buildFilteredList();
39
+ }
40
+ previousPage() {
41
+ this.currentPage = this.currentPage - 1;
42
+ this.buildFilteredList();
43
+ this.pageChange.next({
44
+ previousPage: this.currentPage + 1,
45
+ currentPage: this.currentPage,
46
+ pageCount: this.pagesCount()
47
+ });
48
+ }
49
+ hasPreviousPage() {
50
+ return this.currentPage > 1;
51
+ }
52
+ nextPage() {
53
+ this.currentPage = this.currentPage + 1;
54
+ this.buildFilteredList();
55
+ this.pageChange.next({
56
+ previousPage: this.currentPage - 1,
57
+ currentPage: this.currentPage,
58
+ pageCount: this.pagesCount()
59
+ });
60
+ }
61
+ hasNextPage() {
62
+ return this.currentPage < this.pagesCount();
63
+ }
64
+ showPage(page, emitPageChangeEvent = false) {
65
+ if (this.currentPage === page) {
66
+ return;
67
+ }
68
+ const previousPage = this.currentPage;
69
+ this.currentPage = page;
70
+ this.buildFilteredList();
71
+ if (emitPageChangeEvent) {
72
+ this.pageChange.next({
73
+ previousPage,
74
+ currentPage: this.currentPage,
75
+ pageCount: this.pagesCount()
76
+ });
77
+ }
78
+ }
79
+ pagesCount() {
80
+ if (!!this.fixedPageCount) {
81
+ return this.fixedPageCount;
82
+ }
83
+ return this._list
84
+ ? Math.ceil(this._list.length / this.itemsPerPage)
85
+ : 0;
86
+ }
87
+ triggerSort(sortAttribute) {
88
+ let sortDirection = 'DESC';
89
+ if (this.sort.sortAttribute === sortAttribute) {
90
+ sortDirection = this.sort.sortDirection === 'DESC' ? 'ASC' : 'DESC';
91
+ }
92
+ this.sortChange.next({
93
+ sortDirection,
94
+ sortAttribute
95
+ });
96
+ }
97
+ buildFilteredList() {
98
+ if (!!this.fixedPageCount) {
99
+ this.filteredList = this._list;
100
+ return;
101
+ }
102
+ const currentPageExists = (this.currentPage - 1) * this.itemsPerPage <= this._list.length;
103
+ if (!currentPageExists) {
104
+ this.currentPage = 1;
105
+ }
106
+ const start = (this.currentPage - 1) * this.itemsPerPage;
107
+ this.filteredList = this._list
108
+ ? this._list.slice(start, start + this.itemsPerPage)
109
+ : [];
110
+ }
111
+ }
112
+ FoehnTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: FoehnTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
113
+ FoehnTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.4", type: FoehnTableComponent, selector: "foehn-table", inputs: { itemsPerPage: "itemsPerPage", id: "id", previousLabel: "previousLabel", nextLabel: "nextLabel", totalElements: "totalElements", fixedPageCount: "fixedPageCount", columnsConfiguration: "columnsConfiguration", sort: "sort", trackByFn: "trackByFn", list: "list" }, outputs: { pageChange: "pageChange", sortChange: "sortChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"row\" [id]=\"id\">\n <div class=\"col-12\">\n <h4 *ngIf=\"!!totalElements && totalElements === 1\">\n {{ 'foehn-table.totalElements.1' | fromDictionary }}\n </h4>\n <h4 *ngIf=\"!!totalElements && totalElements !== 1\">\n {{\n 'foehn-table.totalElements'\n | fromDictionary: { total: totalElements.toString() }\n }}\n </h4>\n </div>\n\n <div class=\"col-12 table-responsive\">\n <table class=\"table table-hover\">\n <thead class=\"vd-bg-pattern-bars-gray\">\n <tr>\n <th\n scope=\"col\"\n *ngFor=\"let col of columnsConfiguration\"\n [id]=\"col.id\"\n >\n <ng-container *ngIf=\"!col.sortAttribute\">\n <span\n [innerHTML]=\"\n col.columnLabelKey | fromDictionary\n \"\n ></span>\n </ng-container>\n\n <ng-container *ngIf=\"!!col.sortAttribute\">\n <a\n href=\"#\"\n class=\"vd-text-thin\"\n (click)=\"\n $event.preventDefault();\n triggerSort(col.sortAttribute)\n \"\n [title]=\"\n 'Trier par ' +\n (col.columnLabelKey | fromDictionary)\n \"\n >\n <span\n [innerHTML]=\"\n col.columnLabelKey | fromDictionary\n \"\n ></span>\n <ng-container\n *ngIf=\"\n sort.sortAttribute === col.sortAttribute\n \"\n >\n <span\n class=\"ml-3\"\n *ngIf=\"sort.sortDirection === 'ASC'\"\n >\n <foehn-icon-chevron-up></foehn-icon-chevron-up>\n </span>\n <span\n class=\"ml-3\"\n *ngIf=\"sort.sortDirection === 'DESC'\"\n >\n <foehn-icon-chevron-down></foehn-icon-chevron-down>\n </span>\n </ng-container>\n </a>\n </ng-container>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"\n let item of filteredList;\n let index = index;\n trackBy: trackByFn\n \"\n >\n <td\n *ngFor=\"let col of columnsConfiguration\"\n [id]=\"col.id + '-' + index\"\n >\n <ng-container *ngIf=\"!!col.isImportant\">\n <span\n *ngIf=\"col.isImportant(item)\"\n class=\"cell-vertical-align-middle\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"30\"\n height=\"30\"\n style=\"color: var(--red)\"\n fill=\"currentColor\"\n class=\"bi bi-exclamation\"\n viewBox=\"0 0 16 16\"\n >\n <path\n d=\"M7.002 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0zM7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.553.553 0 0 1-1.1 0L7.1 4.995z\"\n />\n </svg>\n </span>\n </ng-container>\n\n <ng-container *ngIf=\"!col.routerLinkGetter\">\n <span\n [innerHTML]=\"col.valueGetter(item)\"\n class=\"cell-vertical-align-middle\"\n ></span>\n </ng-container>\n\n <ng-container *ngIf=\"!!col.routerLinkGetter\">\n <a\n [routerLink]=\"col.routerLinkGetter(item)\"\n queryParamsHandling=\"merge\"\n class=\"cell-vertical-align-middle\"\n >\n <span\n [innerHTML]=\"col.valueGetter(item)\"\n ></span>\n </a>\n </ng-container>\n </td>\n </tr>\n <tr *ngIf=\"!filteredList.length\">\n <td [colSpan]=\"columnsConfiguration.length\">\n <div class=\"w-100 text-center\">\n {{ 'foehn-table.totalElements.0' | fromDictionary }}\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n\n <div class=\"row d-flex justify-content-between p-1\">\n <div class=\"col-lg-3 col-md-3 col-sm-6 col-xs-6\">\n <nav\n class=\"vd-pagination\"\n aria-label=\"Pagination\"\n *ngIf=\"hasPreviousPage()\"\n >\n <ul class=\"vd-pagination__list\">\n <li\n class=\"vd-pagination__item vd-pagination__item--previous\"\n >\n <button\n class=\"btn-link vd-pagination__link btn-no-extra vd-pagination__link-reset\"\n (click)=\"previousPage()\"\n >\n <span class=\"vd-pagination__title\">\n <foehn-icon-chevron-left></foehn-icon-chevron-left>\n {{ previousLabel }}\n </span>\n <span class=\"sr-only\">:</span>\n <span class=\"vd-pagination__label\">\n {{ currentPage - 1 }} sur {{ pagesCount() }}\n </span>\n </button>\n </li>\n </ul>\n </nav>\n </div>\n\n <div class=\"col-lg-3 col-md-3 col-sm-6 col-xs-6\">\n <nav\n class=\"vd-pagination\"\n aria-label=\"Pagination\"\n *ngIf=\"hasNextPage()\"\n >\n <ul class=\"vd-pagination__list\">\n <li\n class=\"vd-pagination__item vd-pagination__item--next\"\n >\n <button\n class=\"btn-link vd-pagination__link btn-no-extra vd-pagination__link-reset\"\n (click)=\"nextPage()\"\n >\n <span class=\"vd-pagination__title\">\n {{ nextLabel }}\n <foehn-icon-chevron-right></foehn-icon-chevron-right>\n </span>\n <span class=\"sr-only\">:</span>\n <span class=\"vd-pagination__label\">\n {{ currentPage + 1 }} sur {{ pagesCount() }}\n </span>\n </button>\n </li>\n </ul>\n </nav>\n </div>\n </div>\n </div>\n</div>\n", styles: [".btn-no-extra{padding:0;border:none;font-weight:400;-webkit-text-decoration-line:none;text-decoration-line:none}.vd-pagination__link-reset{background:none;border:none;font-weight:inherit;-webkit-text-decoration-line:none;text-decoration-line:none;text-align:inherit;cursor:pointer}.vd-pagination__link-reset:focus{background-color:#ffbf47}.cell-vertical-align-middle{vertical-align:middle}\n"], components: [{ type: i1.FoehnIconChevronUpComponent, selector: "foehn-icon-chevron-up" }, { type: i2.FoehnIconChevronDownComponent, selector: "foehn-icon-chevron-down" }, { type: i3.FoehnIconChevronLeftComponent, selector: "foehn-icon-chevron-left" }, { type: i4.FoehnIconChevronRightComponent, selector: "foehn-icon-chevron-right" }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["routerLink", "target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }], pipes: { "fromDictionary": i7.SdkDictionaryPipe } });
114
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: FoehnTableComponent, decorators: [{
115
+ type: Component,
116
+ args: [{
117
+ selector: 'foehn-table',
118
+ templateUrl: './foehn-table.component.html',
119
+ styleUrls: ['./foehn-table.component.css']
120
+ }]
121
+ }], propDecorators: { itemsPerPage: [{
122
+ type: Input
123
+ }], id: [{
124
+ type: Input
125
+ }], previousLabel: [{
126
+ type: Input
127
+ }], nextLabel: [{
128
+ type: Input
129
+ }], totalElements: [{
130
+ type: Input
131
+ }], fixedPageCount: [{
132
+ type: Input
133
+ }], columnsConfiguration: [{
134
+ type: Input
135
+ }], pageChange: [{
136
+ type: Output
137
+ }], sort: [{
138
+ type: Input
139
+ }], sortChange: [{
140
+ type: Output
141
+ }],
142
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
143
+ trackByFn: [{
144
+ type: Input
145
+ }], list: [{
146
+ type: Input
147
+ }] } });
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLXRhYmxlL2ZvZWhuLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi10YWJsZS9mb2Vobi10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUdULE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7QUFLdkIsTUFBTSxlQUFlLEdBQUcsQ0FBQyxNQUFvQixFQUFXLEVBQUUsQ0FDdEQsQ0FBQyxDQUNHLENBQUMsTUFBTTtJQUNQLENBQUMsTUFBTSxDQUFDLFlBQVk7SUFDcEIsTUFBTSxDQUFDLGFBQWEsS0FBSyxNQUFNLENBQUMsWUFBWSxDQUMvQyxDQUFDO0FBT04sTUFBTSxPQUFPLG1CQUFtQjtJQUxoQztRQU9JLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBR2xCLE9BQUUsR0FBRyxhQUFhLENBQUM7UUFHbkIsa0JBQWEsR0FBRyxXQUFXLENBQUM7UUFHNUIsY0FBUyxHQUFHLFNBQVMsQ0FBQztRQVl0QixlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQTZCLENBQUM7UUFNM0QsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFhLENBQUM7UUFFM0MsZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFFaEIsaUJBQVksR0FBYyxFQUFFLENBQUM7UUFLN0IsNkRBQTZEO1FBQzdELGNBQVMsR0FBRyxDQUFDLEtBQWEsRUFBRSxJQUFhLEVBQVUsRUFBRSxDQUFDLEtBQUssQ0FBQztLQTRHL0Q7SUExR0csSUFDSSxJQUFJLENBQUMsSUFBZTtRQUNwQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztJQUN0QixDQUFDO0lBRUQs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QUFjO3NCQURiLEtBQUs7Z0JBSU4sb0JBQW9CO3NCQURuQixLQUFLO2dCQUlOLFVBQVU7c0JBRFQsTUFBTTtnQkFJUCxJQUFJO3NCQURILEtBQUs7Z0JBSU4sVUFBVTtzQkFEVCxNQUFNOztRQVVQLDZEQUE2RDtRQUM3RCxTQUFTO3NCQUZSLEtBQUs7Z0JBS0YsSUFBSTtzQkFEUCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlLFxuICAgIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb2VoblRhYmxlUGFnZUNoYW5nZUV2ZW50IH0gZnJvbSAnLi9mb2Vobi10YWJsZS1wYWdlLWNoYW5nZS1ldmVudCc7XG5pbXBvcnQgeyBGb2VoblRhYmxlQ29sdW1uQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vZm9laG4tdGFibGUtY29sdW1uLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHsgVGFibGVTb3J0IH0gZnJvbSAnLi90YWJsZVNvcnQnO1xuXG5jb25zdCBoYXNJbnB1dENoYW5nZWQgPSAoY2hhbmdlOiBTaW1wbGVDaGFuZ2UpOiBib29sZWFuID0+XG4gICAgIShcbiAgICAgICAgIWNoYW5nZSB8fFxuICAgICAgICAhY2hhbmdlLmN1cnJlbnRWYWx1ZSB8fFxuICAgICAgICBjaGFuZ2UucHJldmlvdXNWYWx1ZSA9PT0gY2hhbmdlLmN1cnJlbnRWYWx1ZVxuICAgICk7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZm9laG4tdGFibGUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb2Vobi10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZm9laG4tdGFibGUuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIEZvZWhuVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAgIEBJbnB1dCgpXG4gICAgaXRlbXNQZXJQYWdlID0gMTA7XG5cbiAgICBASW5wdXQoKVxuICAgIGlkID0gJ2ZvZWhuLXRhYmxlJztcblxuICAgIEBJbnB1dCgpXG4gICAgcHJldmlvdXNMYWJlbCA9ICdQcsOpY8OpZGVudCc7XG5cbiAgICBASW5wdXQoKVxuICAgIG5leHRMYWJlbCA9ICdTdWl2YW50JztcblxuICAgIEBJbnB1dCgpXG4gICAgdG90YWxFbGVtZW50czogbnVtYmVyO1xuXG4gICAgQElucHV0KClcbiAgICBmaXhlZFBhZ2VDb3VudDogbnVtYmVyO1xuXG4gICAgQElucHV0KClcbiAgICBjb2x1bW5zQ29uZmlndXJhdGlvbjogRm9laG5UYWJsZUNvbHVtbkNvbmZpZ3VyYXRpb248dW5rbm93bj5bXTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHBhZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEZvZWhuVGFibGVQYWdlQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgICBASW5wdXQoKVxuICAgIHNvcnQ6IFRhYmxlU29ydDtcblxuICAgIEBPdXRwdXQoKVxuICAgIHNvcnRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFRhYmxlU29ydD4oKTtcblxuICAgIGN1cnJlbnRQYWdlID0gMTtcblxuICAgIGZpbHRlcmVkTGlzdDogdW5rbm93bltdID0gW107XG5cbiAgICBwcml2YXRlIF9saXN0OiB1bmtub3duW107XG5cbiAgICBASW5wdXQoKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICB0cmFja0J5Rm4gPSAoaW5kZXg6IG51bWJlciwgaXRlbTogdW5rbm93bik6IG51bWJlciA9PiBpbmRleDtcblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGxpc3QobGlzdDogdW5rbm93bltdKSB7XG4gICAgICAgIHRoaXMuX2xpc3QgPSBsaXN0O1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaXRlbXNQZXJQYWdlQ2hhbmdlOiBTaW1wbGVDaGFuZ2UgPSBjaGFuZ2VzLml0ZW1zUGVyUGFnZTtcbiAgICAgICAgY29uc3QgbGlzdENoYW5nZTogU2ltcGxlQ2hhbmdlID0gY2hhbmdlcy5saXN0O1xuICAgICAgICBjb25zdCBmaXhlZFBhZ2VDb3VudENoYW5nZTogU2ltcGxlQ2hhbmdlID0gY2hhbmdlcy5maXhlZFBhZ2VDb3VudDtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhaGFzSW5wdXRDaGFuZ2VkKGl0ZW1zUGVyUGFnZUNoYW5nZSkgJiZcbiAgICAgICAgICAgICFoYXNJbnB1dENoYW5nZWQobGlzdENoYW5nZSkgJiZcbiAgICAgICAgICAgICFoYXNJbnB1dENoYW5nZWQoZml4ZWRQYWdlQ291bnRDaGFuZ2UpXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5idWlsZEZpbHRlcmVkTGlzdCgpO1xuICAgIH1cblxuICAgIHByZXZpb3VzUGFnZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IHRoaXMuY3VycmVudFBhZ2UgLSAxO1xuICAgICAgICB0aGlzLmJ1aWxkRmlsdGVyZWRMaXN0KCk7XG4gICAgICAgIHRoaXMucGFnZUNoYW5nZS5uZXh0KHtcbiAgICAgICAgICAgIHByZXZpb3VzUGFnZTogdGhpcy5jdXJyZW50UGFnZSArIDEsXG4gICAgICAgICAgICBjdXJyZW50UGFnZTogdGhpcy5jdXJyZW50UGFnZSxcbiAgICAgICAgICAgIHBhZ2VDb3VudDogdGhpcy5wYWdlc0NvdW50KClcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaGFzUHJldmlvdXNQYWdlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50UGFnZSA+IDE7XG4gICAgfVxuXG4gICAgbmV4dFBhZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlICsgMTtcbiAgICAgICAgdGhpcy5idWlsZEZpbHRlcmVkTGlzdCgpO1xuXG4gICAgICAgIHRoaXMucGFnZUNoYW5nZS5uZXh0KHtcbiAgICAgICAgICAgIHByZXZpb3VzUGFnZTogdGhpcy5jdXJyZW50UGFnZSAtIDEsXG4gICAgICAgICAgICBjdXJyZW50UGFnZTogdGhpcy5jdXJyZW50UGFnZSxcbiAgICAgICAgICAgIHBhZ2VDb3VudDogdGhpcy5wYWdlc0NvdW50KClcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaGFzTmV4dFBhZ2UoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRQYWdlIDwgdGhpcy5wYWdlc0NvdW50KCk7XG4gICAgfVxuXG4gICAgc2hvd1BhZ2UocGFnZTogbnVtYmVyLCBlbWl0UGFnZUNoYW5nZUV2ZW50OiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFBhZ2UgPT09IHBhZ2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByZXZpb3VzUGFnZSA9IHRoaXMuY3VycmVudFBhZ2U7XG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSBwYWdlO1xuICAgICAgICB0aGlzLmJ1aWxkRmlsdGVyZWRMaXN0KCk7XG5cbiAgICAgICAgaWYgKGVtaXRQYWdlQ2hhbmdlRXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMucGFnZUNoYW5nZS5uZXh0KHtcbiAgICAgICAgICAgICAgICBwcmV2aW91c1BhZ2UsXG4gICAgICAgICAgICAgICAgY3VycmVudFBhZ2U6IHRoaXMuY3VycmVudFBhZ2UsXG4gICAgICAgICAgICAgICAgcGFnZUNvdW50OiB0aGlzLnBhZ2VzQ291bnQoKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwYWdlc0NvdW50KCk6IG51bWJlciB7XG4gICAgICAgIGlmICghIXRoaXMuZml4ZWRQYWdlQ291bnQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZpeGVkUGFnZUNvdW50O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2xpc3RcbiAgICAgICAgICAgID8gTWF0aC5jZWlsKHRoaXMuX2xpc3QubGVuZ3RoIC8gdGhpcy5pdGVtc1BlclBhZ2UpXG4gICAgICAgICAgICA6IDA7XG4gICAgfVxuXG4gICAgdHJpZ2dlclNvcnQoc29ydEF0dHJpYnV0ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGxldCBzb3J0RGlyZWN0aW9uOiAnREVTQycgfCAnQVNDJyA9ICdERVNDJztcbiAgICAgICAgaWYgKHRoaXMuc29ydC5zb3J0QXR0cmlidXRlID09PSBzb3J0QXR0cmlidXRlKSB7XG4gICAgICAgICAgICBzb3J0RGlyZWN0aW9uID0gdGhpcy5zb3J0LnNvcnREaXJlY3Rpb24gPT09ICdERVNDJyA/ICdBU0MnIDogJ0RFU0MnO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zb3J0Q2hhbmdlLm5leHQoe1xuICAgICAgICAgICAgc29ydERpcmVjdGlvbixcbiAgICAgICAgICAgIHNvcnRBdHRyaWJ1dGVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBidWlsZEZpbHRlcmVkTGlzdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCEhdGhpcy5maXhlZFBhZ2VDb3VudCkge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJlZExpc3QgPSB0aGlzLl9saXN0O1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY3VycmVudFBhZ2VFeGlzdHMgPVxuICAgICAgICAgICAgKHRoaXMuY3VycmVudFBhZ2UgLSAxKSAqIHRoaXMuaXRlbXNQZXJQYWdlIDw9IHRoaXMuX2xpc3QubGVuZ3RoO1xuICAgICAgICBpZiAoIWN1cnJlbnRQYWdlRXhpc3RzKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdGFydCA9ICh0aGlzLmN1cnJlbnRQYWdlIC0gMSkgKiB0aGlzLml0ZW1zUGVyUGFnZTtcbiAgICAgICAgdGhpcy5maWx0ZXJlZExpc3QgPSB0aGlzLl9saXN0XG4gICAgICAgICAgICA/IHRoaXMuX2xpc3Quc2xpY2Uoc3RhcnQsIHN0YXJ0ICsgdGhpcy5pdGVtc1BlclBhZ2UpXG4gICAgICAgICAgICA6IFtdO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJyb3dcIiBbaWRdPVwiaWRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XG4gICAgICAgIDxoNCAqbmdJZj1cIiEhdG90YWxFbGVtZW50cyAmJiB0b3RhbEVsZW1lbnRzID09PSAxXCI+XG4gICAgICAgICAgICB7eyAnZm9laG4tdGFibGUudG90YWxFbGVtZW50cy4xJyB8IGZyb21EaWN0aW9uYXJ5IH19XG4gICAgICAgIDwvaDQ+XG4gICAgICAgIDxoNCAqbmdJZj1cIiEhdG90YWxFbGVtZW50cyAmJiB0b3RhbEVsZW1lbnRzICE9PSAxXCI+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICdmb2Vobi10YWJsZS50b3RhbEVsZW1lbnRzJ1xuICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5OiB7IHRvdGFsOiB0b3RhbEVsZW1lbnRzLnRvU3RyaW5nKCkgfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgPC9oND5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgdGFibGUtcmVzcG9uc2l2ZVwiPlxuICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1ob3ZlclwiPlxuICAgICAgICAgICAgPHRoZWFkIGNsYXNzPVwidmQtYmctcGF0dGVybi1iYXJzLWdyYXlcIj5cbiAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGU9XCJjb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zQ29uZmlndXJhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiY29sLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2wuc29ydEF0dHJpYnV0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2wuY29sdW1uTGFiZWxLZXkgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiEhY29sLnNvcnRBdHRyaWJ1dGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPVwiI1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmQtdGV4dC10aGluXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyU29ydChjb2wuc29ydEF0dHJpYnV0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RyaWVyIHBhciAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb2wuY29sdW1uTGFiZWxLZXkgfCBmcm9tRGljdGlvbmFyeSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbC5jb2x1bW5MYWJlbEtleSB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQuc29ydEF0dHJpYnV0ZSA9PT0gY29sLnNvcnRBdHRyaWJ1dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtbC0zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNvcnQuc29ydERpcmVjdGlvbiA9PT0gJ0FTQydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb2Vobi1pY29uLWNoZXZyb24tdXA+PC9mb2Vobi1pY29uLWNoZXZyb24tdXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWwtM1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzb3J0LnNvcnREaXJlY3Rpb24gPT09ICdERVNDJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvZWhuLWljb24tY2hldnJvbi1kb3duPjwvZm9laG4taWNvbi1jaGV2cm9uLWRvd24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICAgIDx0clxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpdGVtIG9mIGZpbHRlcmVkTGlzdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUZuXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc0NvbmZpZ3VyYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImNvbC5pZCArICctJyArIGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiEhY29sLmlzSW1wb3J0YW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2wuaXNJbXBvcnRhbnQoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNlbGwtdmVydGljYWwtYWxpZ24tbWlkZGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIzMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIzMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImNvbG9yOiB2YXIoLS1yZWQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiaSBiaS1leGNsYW1hdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTcuMDAyIDExYTEgMSAwIDEgMSAyIDAgMSAxIDAgMCAxLTIgMHpNNy4xIDQuOTk1YS45MDUuOTA1IDAgMSAxIDEuOCAwbC0uMzUgMy41MDdhLjU1My41NTMgMCAwIDEtMS4xIDBMNy4xIDQuOTk1elwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2wucm91dGVyTGlua0dldHRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiY29sLnZhbHVlR2V0dGVyKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjZWxsLXZlcnRpY2FsLWFsaWduLW1pZGRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiISFjb2wucm91dGVyTGlua0dldHRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cImNvbC5yb3V0ZXJMaW5rR2V0dGVyKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZz1cIm1lcmdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjZWxsLXZlcnRpY2FsLWFsaWduLW1pZGRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJjb2wudmFsdWVHZXR0ZXIoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPHRyICpuZ0lmPVwiIWZpbHRlcmVkTGlzdC5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRkIFtjb2xTcGFuXT1cImNvbHVtbnNDb25maWd1cmF0aW9uLmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2ZvZWhuLXRhYmxlLnRvdGFsRWxlbWVudHMuMCcgfCBmcm9tRGljdGlvbmFyeSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgIDwvdGFibGU+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gcC0xXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTMgY29sLW1kLTMgY29sLXNtLTYgY29sLXhzLTZcIj5cbiAgICAgICAgICAgICAgICA8bmF2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmQtcGFnaW5hdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJQYWdpbmF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJoYXNQcmV2aW91c1BhZ2UoKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJ2ZC1wYWdpbmF0aW9uX19saXN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZkLXBhZ2luYXRpb25fX2l0ZW0gdmQtcGFnaW5hdGlvbl9faXRlbS0tcHJldmlvdXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4tbGluayB2ZC1wYWdpbmF0aW9uX19saW5rIGJ0bi1uby1leHRyYSB2ZC1wYWdpbmF0aW9uX19saW5rLXJlc2V0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInByZXZpb3VzUGFnZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmQtcGFnaW5hdGlvbl9fdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb2Vobi1pY29uLWNoZXZyb24tbGVmdD48L2ZvZWhuLWljb24tY2hldnJvbi1sZWZ0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcHJldmlvdXNMYWJlbCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPjo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmQtcGFnaW5hdGlvbl9fbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGN1cnJlbnRQYWdlIC0gMSB9fSBzdXIge3sgcGFnZXNDb3VudCgpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgPC9uYXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0zIGNvbC1tZC0zIGNvbC1zbS02IGNvbC14cy02XCI+XG4gICAgICAgICAgICAgICAgPG5hdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZkLXBhZ2luYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiUGFnaW5hdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaGFzTmV4dFBhZ2UoKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJ2ZC1wYWdpbmF0aW9uX19saXN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZkLXBhZ2luYXRpb25fX2l0ZW0gdmQtcGFnaW5hdGlvbl9faXRlbS0tbmV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1saW5rIHZkLXBhZ2luYXRpb25fX2xpbmsgYnRuLW5vLWV4dHJhIHZkLXBhZ2luYXRpb25fX2xpbmstcmVzZXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibmV4dFBhZ2UoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZkLXBhZ2luYXRpb25fX3RpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBuZXh0TGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb2Vobi1pY29uLWNoZXZyb24tcmlnaHQ+PC9mb2Vobi1pY29uLWNoZXZyb24tcmlnaHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+Ojwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2ZC1wYWdpbmF0aW9uX19sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY3VycmVudFBhZ2UgKyAxIH19IHN1ciB7eyBwYWdlc0NvdW50KCkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICA8L25hdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,34 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { FoehnTableComponent } from './foehn-table.component';
4
+ import { RouterModule } from '@angular/router';
5
+ import { FoehnIconsModule } from '../foehn-icons/foehn-icons.module';
6
+ import { SdkDictionaryModule } from '../sdk-dictionary/sdk-dictionary.module';
7
+ import * as i0 from "@angular/core";
8
+ export class FoehnTableModule {
9
+ }
10
+ FoehnTableModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: FoehnTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
11
+ FoehnTableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: FoehnTableModule, declarations: [FoehnTableComponent], imports: [CommonModule,
12
+ FoehnIconsModule,
13
+ SdkDictionaryModule,
14
+ RouterModule], exports: [FoehnTableComponent] });
15
+ FoehnTableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: FoehnTableModule, imports: [[
16
+ CommonModule,
17
+ FoehnIconsModule,
18
+ SdkDictionaryModule,
19
+ RouterModule
20
+ ]] });
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: FoehnTableModule, decorators: [{
22
+ type: NgModule,
23
+ args: [{
24
+ imports: [
25
+ CommonModule,
26
+ FoehnIconsModule,
27
+ SdkDictionaryModule,
28
+ RouterModule
29
+ ],
30
+ declarations: [FoehnTableComponent],
31
+ exports: [FoehnTableComponent]
32
+ }]
33
+ }] });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tdGFibGUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLXRhYmxlL2ZvZWhuLXRhYmxlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7O0FBWTlFLE1BQU0sT0FBTyxnQkFBZ0I7OzZHQUFoQixnQkFBZ0I7OEdBQWhCLGdCQUFnQixpQkFIVixtQkFBbUIsYUFMOUIsWUFBWTtRQUNaLGdCQUFnQjtRQUNoQixtQkFBbUI7UUFDbkIsWUFBWSxhQUdOLG1CQUFtQjs4R0FFcEIsZ0JBQWdCLFlBVGhCO1lBQ0wsWUFBWTtZQUNaLGdCQUFnQjtZQUNoQixtQkFBbUI7WUFDbkIsWUFBWTtTQUNmOzJGQUlRLGdCQUFnQjtrQkFWNUIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsWUFBWTtxQkFDZjtvQkFDRCxZQUFZLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztvQkFDbkMsT0FBTyxFQUFFLENBQUMsbUJBQW1CLENBQUM7aUJBQ2pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IEZvZWhuVGFibGVDb21wb25lbnQgfSBmcm9tICcuL2ZvZWhuLXRhYmxlLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBGb2Vobkljb25zTW9kdWxlIH0gZnJvbSAnLi4vZm9laG4taWNvbnMvZm9laG4taWNvbnMubW9kdWxlJztcbmltcG9ydCB7IFNka0RpY3Rpb25hcnlNb2R1bGUgfSBmcm9tICcuLi9zZGstZGljdGlvbmFyeS9zZGstZGljdGlvbmFyeS5tb2R1bGUnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBGb2Vobkljb25zTW9kdWxlLFxuICAgICAgICBTZGtEaWN0aW9uYXJ5TW9kdWxlLFxuICAgICAgICBSb3V0ZXJNb2R1bGVcbiAgICBdLFxuICAgIGRlY2xhcmF0aW9uczogW0ZvZWhuVGFibGVDb21wb25lbnRdLFxuICAgIGV4cG9ydHM6IFtGb2VoblRhYmxlQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBGb2VoblRhYmxlTW9kdWxlIHt9XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export class TableSort {
2
+ }
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGVTb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLXRhYmxlL3RhYmxlU29ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sU0FBUztDQUdyQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBUYWJsZVNvcnQge1xuICAgIHNvcnREaXJlY3Rpb246ICdERVNDJyB8ICdBU0MnO1xuICAgIHNvcnRBdHRyaWJ1dGU6IHN0cmluZztcbn1cbiJdfQ==
@@ -0,0 +1,164 @@
1
+ import { Component, forwardRef, Input } from '@angular/core';
2
+ import { distinctUntilChanged, filter } from 'rxjs/operators';
3
+ import { FoehnInputComponent } from '../../foehn-input/foehn-input.component';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../../foehn-growl/growl-broker.service";
6
+ import * as i2 from "../../foehn-upload/foehn-multi-upload/multi-upload.service";
7
+ import * as i3 from "../../sdk-dictionary/sdk-dictionary.service";
8
+ import * as i4 from "../../foehn-validation-alerts/foehn-validation-alerts.component";
9
+ import * as i5 from "ngx-image-cropper";
10
+ import * as i6 from "@angular/common";
11
+ import * as i7 from "@angular/forms";
12
+ import * as i8 from "../../sdk-dictionary/sdk-dictionary.pipe";
13
+ const blobToFile = (blobData, fileName) => {
14
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
15
+ const blob = blobData;
16
+ blob.name = fileName;
17
+ return blob;
18
+ };
19
+ const convertBase64UrlToFile = (croppedImageasBase64Url, filename) => {
20
+ const arr = croppedImageasBase64Url.split(',');
21
+ const mime = arr[0].match(/:(.*?);/)[1];
22
+ const bstr = atob(arr[1]);
23
+ let n = bstr.length;
24
+ const u8arr = new Uint8Array(n);
25
+ while (n--) {
26
+ u8arr[n] = bstr.charCodeAt(n);
27
+ }
28
+ if (!navigator.msSaveBlob) {
29
+ // detect if not Edge
30
+ return new File([u8arr], filename, { type: mime });
31
+ }
32
+ else {
33
+ // Edge support the FileAPI but not the File constructor.
34
+ return blobToFile(new Blob([u8arr], { type: mime }), filename);
35
+ }
36
+ };
37
+ export class FoehnPictureUploadComponent extends FoehnInputComponent {
38
+ constructor(growlService, uploadService, dictionaryService) {
39
+ super();
40
+ this.growlService = growlService;
41
+ this.uploadService = uploadService;
42
+ this.dictionaryService = dictionaryService;
43
+ this.baseUrl = 'api/document';
44
+ this.croppedPictureFilename = 'photo.png';
45
+ this.resizeToWidth = 300;
46
+ this.resizeToHeight = 0;
47
+ this.loading = false;
48
+ }
49
+ ngOnInit() {
50
+ super.ngOnInit();
51
+ this.currentLanguageSubscription = this.dictionaryService
52
+ .getCurrentLanguageCode()
53
+ .pipe(distinctUntilChanged())
54
+ .subscribe(language => {
55
+ this.currentLanguage = language;
56
+ });
57
+ }
58
+ onPictureSelection(imgEvent) {
59
+ this.refreshErrors([[], true]);
60
+ this.pictureToCrop = imgEvent;
61
+ this.loading = true;
62
+ }
63
+ onPictureSelectionFailed() {
64
+ const errors = [
65
+ {
66
+ name: this.name,
67
+ code: 'LoadingFailure',
68
+ message: this.dictionaryService.getKeySync('foehn-picture-upload.loading-failure-label')
69
+ }
70
+ ];
71
+ this.refreshErrors([errors, true]);
72
+ this.resetPictureSelection();
73
+ }
74
+ onImageCropped(croppedEvent) {
75
+ this.croppedPictureAsBase64Url = croppedEvent.base64;
76
+ }
77
+ resetPictureSelection() {
78
+ this.croppedPictureAsBase64Url = null;
79
+ this.pictureToCrop = null;
80
+ this.loading = false;
81
+ }
82
+ savePicture() {
83
+ this.markAsPristine();
84
+ const photo = convertBase64UrlToFile(this.croppedPictureAsBase64Url, this.croppedPictureFilename);
85
+ this.uploadService
86
+ .uploadDocuments(this.baseUrl, this.name, this.label, [photo], this.key, false, this.currentLanguage)
87
+ .pipe(filter(result => !!result))
88
+ .subscribe(({ documents, errors }) => {
89
+ this.resetPictureSelection();
90
+ if (!!documents.length) {
91
+ this.markAsDirty();
92
+ this.model = documents;
93
+ this.refreshErrors([[], true]);
94
+ }
95
+ else {
96
+ this.model = [];
97
+ this.refreshErrors([errors, true]);
98
+ }
99
+ });
100
+ }
101
+ deleteFile() {
102
+ this.uploadService
103
+ .deleteDocument(this.baseUrl, this.model[0])
104
+ .subscribe(() => {
105
+ this.model = [];
106
+ this.resetPictureSelection();
107
+ });
108
+ }
109
+ getDownloadUrl() {
110
+ return this.uploadService.getDownloadUrl(this.baseUrl, this.model[0]);
111
+ }
112
+ get hasPicture() {
113
+ return this.model && this.model.length && !!this.model[0].reference;
114
+ }
115
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
116
+ refreshErrors(results) {
117
+ const errors = results[0];
118
+ const isInSelectionMode = !this.hasPicture && !!this.croppedPictureAsBase64Url;
119
+ if (isInSelectionMode) {
120
+ const notNullError = errors.find(e => e.name === this.name && e.code === 'NotEmpty');
121
+ if (notNullError) {
122
+ notNullError.message = this.dictionaryService.getKeySync('foehn-picture-upload.selection-not-validated-label');
123
+ }
124
+ }
125
+ super.refreshErrors(results);
126
+ }
127
+ }
128
+ FoehnPictureUploadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: FoehnPictureUploadComponent, deps: [{ token: i1.GrowlBrokerService }, { token: i2.MultiUploadService }, { token: i3.SdkDictionaryService }], target: i0.ɵɵFactoryTarget.Component });
129
+ FoehnPictureUploadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.4", type: FoehnPictureUploadComponent, selector: "foehn-picture-upload", inputs: { name: "name", key: "key", label: "label", baseUrl: "baseUrl", croppedPictureFilename: "croppedPictureFilename", resizeToWidth: "resizeToWidth", resizeToHeight: "resizeToHeight" }, providers: [
130
+ {
131
+ provide: FoehnInputComponent,
132
+ useExisting: forwardRef(() => FoehnPictureUploadComponent),
133
+ multi: true
134
+ }
135
+ ], usesInheritance: true, ngImport: i0, template: "<div\n [attr.id]=\"buildId('Container')\"\n [class.has-danger]=\"hasErrors()\"\n [class.vd-form-group-danger]=\"hasErrors()\"\n class=\"form-group clearable-input-form-group\"\n tabindex=\"-1\"\n>\n <label\n [attr.for]=\"buildChildId()\"\n *ngIf=\"!!label\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : labelStyleModifier\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </label>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <input type=\"hidden\" [name]=\"name || label\" [ngModel]=\"model\" />\n\n <ng-content></ng-content>\n\n <div *ngIf=\"hasPicture\" class=\"row\">\n <div class=\"col-md-6\">\n <img\n [id]=\"buildChildId('Picture')\"\n [attr.alt]=\"label\"\n [src]=\"getDownloadUrl()\"\n />\n </div>\n <div class=\"col-md-4\">\n <button\n type=\"button\"\n class=\"btn btn-danger w-100\"\n [attr.id]=\"buildChildId('DeleteButton')\"\n (click)=\"deleteFile()\"\n >\n {{\n 'foehn-picture-upload.delete-picture-label' | fromDictionary\n }}\n </button>\n </div>\n </div>\n\n <div *ngIf=\"!hasPicture && !croppedPictureAsBase64Url\">\n <input\n #inputFile\n type=\"file\"\n class=\"form-control-file d-none\"\n [attr.id]=\"name\"\n [attr.accept]=\"'.jpeg,.jpg,.png'\"\n [multiple]=\"false\"\n [name]=\"name\"\n (change)=\"onPictureSelection($event)\"\n />\n\n <button\n type=\"button\"\n class=\"btn btn-primary my-2\"\n [attr.id]=\"buildChildId('ChooseButton')\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-describedby]=\"buildId('ErrorsContainer')\"\n (click)=\"inputFile.click()\"\n [disabled]=\"loading\"\n >\n {{ 'foehn-picture-upload.choose-button-label' | fromDictionary }}\n </button>\n </div>\n\n <div *ngIf=\"loading\">\n {{ 'foehn-picture-upload.loading-label' | fromDictionary }}\n </div>\n\n <div *ngIf=\"!hasPicture\" class=\"row\">\n <div class=\"col-md-6\">\n <image-cropper\n [id]=\"buildChildId('Cropper')\"\n (cropperReady)=\"loading = false\"\n (imageCropped)=\"onImageCropped($event)\"\n (loadImageFailed)=\"onPictureSelectionFailed()\"\n [aspectRatio]=\"3 / 4\"\n [imageChangedEvent]=\"pictureToCrop\"\n [maintainAspectRatio]=\"true\"\n [resizeToWidth]=\"resizeToWidth\"\n [resizeToHeight]=\"resizeToHeight\"\n [onlyScaleDown]=\"true\"\n format=\"png\"\n ></image-cropper>\n </div>\n\n <div *ngIf=\"!hasPicture\" class=\"col-md-4\">\n <div class=\"row mb-3\">\n <button\n *ngIf=\"croppedPictureAsBase64Url\"\n type=\"button\"\n class=\"btn btn-primary w-100\"\n [attr.id]=\"buildChildId('SaveButton')\"\n (click)=\"savePicture()\"\n >\n {{\n 'foehn-picture-upload.validate-selection-label'\n | fromDictionary\n }}\n </button>\n </div>\n <div class=\"row\">\n <button\n *ngIf=\"croppedPictureAsBase64Url\"\n type=\"button\"\n class=\"btn btn-secondary w-100\"\n [attr.id]=\"buildChildId('CancelButton')\"\n (click)=\"resetPictureSelection()\"\n >\n {{\n 'foehn-picture-upload.cancel-selection-label'\n | fromDictionary\n }}\n </button>\n </div>\n </div>\n </div>\n</div>\n", components: [{ type: i4.FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }, { type: i5.ImageCropperComponent, selector: "image-cropper", inputs: ["format", "transform", "maintainAspectRatio", "aspectRatio", "resizeToWidth", "resizeToHeight", "cropperMinWidth", "cropperMinHeight", "cropperMaxHeight", "cropperMaxWidth", "cropperStaticWidth", "cropperStaticHeight", "canvasRotation", "initialStepSize", "roundCropper", "onlyScaleDown", "imageQuality", "autoCrop", "backgroundColor", "containWithinAspectRatio", "hideResizeSquares", "cropper", "alignImage", "disabled", "imageChangedEvent", "imageURL", "imageBase64", "imageFile"], outputs: ["imageCropped", "startCropImage", "imageLoaded", "cropperReady", "loadImageFailed"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "fromDictionary": i8.SdkDictionaryPipe } });
136
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: FoehnPictureUploadComponent, decorators: [{
137
+ type: Component,
138
+ args: [{
139
+ selector: 'foehn-picture-upload',
140
+ templateUrl: './foehn-picture-upload.component.html',
141
+ providers: [
142
+ {
143
+ provide: FoehnInputComponent,
144
+ useExisting: forwardRef(() => FoehnPictureUploadComponent),
145
+ multi: true
146
+ }
147
+ ]
148
+ }]
149
+ }], ctorParameters: function () { return [{ type: i1.GrowlBrokerService }, { type: i2.MultiUploadService }, { type: i3.SdkDictionaryService }]; }, propDecorators: { name: [{
150
+ type: Input
151
+ }], key: [{
152
+ type: Input
153
+ }], label: [{
154
+ type: Input
155
+ }], baseUrl: [{
156
+ type: Input
157
+ }], croppedPictureFilename: [{
158
+ type: Input
159
+ }], resizeToWidth: [{
160
+ type: Input
161
+ }], resizeToHeight: [{
162
+ type: Input
163
+ }] } });
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tcGljdHVyZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLXVwbG9hZC9mb2Vobi1waWN0dXJlLXVwbG9hZC9mb2Vobi1waWN0dXJlLXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tdXBsb2FkL2ZvZWhuLXBpY3R1cmUtdXBsb2FkL2ZvZWhuLXBpY3R1cmUtdXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHOUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7Ozs7Ozs7QUFROUUsTUFBTSxVQUFVLEdBQUcsQ0FBQyxRQUFjLEVBQUUsUUFBZ0IsRUFBUSxFQUFFO0lBQzFELDhEQUE4RDtJQUM5RCxNQUFNLElBQUksR0FBUSxRQUFRLENBQUM7SUFDM0IsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7SUFDckIsT0FBTyxJQUFZLENBQUM7QUFDeEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxzQkFBc0IsR0FBRyxDQUMzQix1QkFBK0IsRUFDL0IsUUFBZ0IsRUFDWixFQUFFO0lBQ04sTUFBTSxHQUFHLEdBQUcsdUJBQXVCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9DLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxD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O1NBQ2Q7S0FDSixpRENsREwsMCtJQXNJQTsyRkRsRmEsMkJBQTJCO2tCQVh2QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFdBQVcsRUFBRSx1Q0FBdUM7b0JBQ3BELFNBQVMsRUFBRTt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsbUJBQW1COzRCQUM1QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSw0QkFBNEIsQ0FBQzs0QkFDMUQsS0FBSyxFQUFFLElBQUk7eUJBQ2Q7cUJBQ0o7aUJBQ0o7NktBS0csSUFBSTtzQkFESCxLQUFLO2dCQUlOLEdBQUc7c0JBREYsS0FBSztnQkFJTixLQUFLO3NCQURKLEtBQUs7Z0JBSU4sT0FBTztzQkFETixLQUFLO2dCQUlOLHNCQUFzQjtzQkFEckIsS0FBSztnQkFJTixhQUFhO3NCQURaLEtBQUs7Z0JBSU4sY0FBYztzQkFEYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZvZWhuSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9mb2Vobi1pbnB1dC9mb2Vobi1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRG9jdW1lbnRSZWZlcmVuY2UgfSBmcm9tICcuLi8uLi9mb2Vobi11cGxvYWQvZG9jdW1lbnQtcmVmZXJlbmNlJztcbmltcG9ydCB7IEdyb3dsQnJva2VyU2VydmljZSB9IGZyb20gJy4uLy4uL2ZvZWhuLWdyb3dsL2dyb3dsLWJyb2tlci5zZXJ2aWNlJztcbmltcG9ydCB7IE11bHRpVXBsb2FkU2VydmljZSB9IGZyb20gJy4uLy4uL2ZvZWhuLXVwbG9hZC9mb2Vobi1tdWx0aS11cGxvYWQvbXVsdGktdXBsb2FkLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2RrRGljdGlvbmFyeVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZGstZGljdGlvbmFyeS9zZGstZGljdGlvbmFyeS5zZXJ2aWNlJztcbmltcG9ydCB7IEVycm9yVGVtcGxhdGUgfSBmcm9tICcuLi8uLi9lcnJvci10ZW1wbGF0ZSc7XG5pbXBvcnQgeyBJbWFnZUNyb3BwZWRFdmVudCB9IGZyb20gJ25neC1pbWFnZS1jcm9wcGVyJztcblxuY29uc3QgYmxvYlRvRmlsZSA9IChibG9iRGF0YTogQmxvYiwgZmlsZU5hbWU6IHN0cmluZyk6IEZpbGUgPT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgY29uc3QgYmxvYjogYW55ID0gYmxvYkRhdGE7XG4gICAgYmxvYi5uYW1lID0gZmlsZU5hbWU7XG4gICAgcmV0dXJuIGJsb2IgYXMgRmlsZTtcbn07XG5cbmNvbnN0IGNvbnZlcnRCYXNlNjRVcmxUb0ZpbGUgPSAoXG4gICAgY3JvcHBlZEltYWdlYXNCYXNlNjRVcmw6IHN0cmluZyxcbiAgICBmaWxlbmFtZTogc3RyaW5nXG4pOiBGaWxlID0+IHtcbiAgICBjb25zdCBhcnIgPSBjcm9wcGVkSW1hZ2Vhc0Jhc2U2NFVybC5zcGxpdCgnLCcpO1xuICAgIGNvbnN0IG1pbWUgPSBhcnJbMF0ubWF0Y2goLzooLio/KTsvKVsxXTtcbiAgICBjb25zdCBic3RyID0gYXRvYihhcnJbMV0pO1xuICAgIGxldCBuID0gYnN0ci5sZW5ndGg7XG4gICAgY29uc3QgdThhcnIgPSBuZXcgVWludDhBcnJheShuKTtcbiAgICB3aGlsZSAobi0tKSB7XG4gICAgICAgIHU4YXJyW25dID0gYnN0ci5jaGFyQ29kZUF0KG4pO1xuICAgIH1cblxuICAgIGlmICghbmF2aWdhdG9yLm1zU2F2ZUJsb2IpIHtcbiAgICAgICAgLy8gZGV0ZWN0IGlmIG5vdCBFZGdlXG4gICAgICAgIHJldHVybiBuZXcgRmlsZShbdThhcnJdLCBmaWxlbmFtZSwgeyB0eXBlOiBtaW1lIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEVkZ2Ugc3VwcG9ydCB0aGUgRmlsZUFQSSBidXQgbm90IHRoZSBGaWxlIGNvbnN0cnVjdG9yLlxuICAgICAgICByZXR1cm4gYmxvYlRvRmlsZShuZXcgQmxvYihbdThhcnJdLCB7IHR5cGU6IG1pbWUgfSksIGZpbGVuYW1lKTtcbiAgICB9XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZvZWhuLXBpY3R1cmUtdXBsb2FkJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4tcGljdHVyZS11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGb2VobklucHV0Q29tcG9uZW50LFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRm9laG5QaWN0dXJlVXBsb2FkQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEZvZWhuUGljdHVyZVVwbG9hZENvbXBvbmVudFxuICAgIGV4dGVuZHMgRm9laG5JbnB1dENvbXBvbmVudDxEb2N1bWVudFJlZmVyZW5jZVtdPlxuICAgIGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASW5wdXQoKVxuICAgIG5hbWU6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAga2V5OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIGxhYmVsOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIGJhc2VVcmwgPSAnYXBpL2RvY3VtZW50JztcblxuICAgIEBJbnB1dCgpXG4gICAgY3JvcHBlZFBpY3R1cmVGaWxlbmFtZSA9ICdwaG90by5wbmcnO1xuXG4gICAgQElucHV0KClcbiAgICByZXNpemVUb1dpZHRoID0gMzAwO1xuXG4gICAgQElucHV0KClcbiAgICByZXNpemVUb0hlaWdodCA9IDA7XG5cbiAgICBwaWN0dXJlVG9Dcm9wOiBFdmVudDtcbiAgICBjcm9wcGVkUGljdHVyZUFzQmFzZTY0VXJsOiBzdHJpbmc7XG4gICAgbG9hZGluZyA9IGZhbHNlO1xuXG4gICAgcHJvdGVjdGVkIGN1cnJlbnRMYW5ndWFnZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAgIHByb3RlY3RlZCBjdXJyZW50TGFuZ3VhZ2U6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGdyb3dsU2VydmljZTogR3Jvd2xCcm9rZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHVwbG9hZFNlcnZpY2U6IE11bHRpVXBsb2FkU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBkaWN0aW9uYXJ5U2VydmljZTogU2RrRGljdGlvbmFyeVNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5jdXJyZW50TGFuZ3VhZ2VTdWJzY3JpcHRpb24gPSB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0Q3VycmVudExhbmd1YWdlQ29kZSgpXG4gICAgICAgICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgICAgICAgICAgLnN1YnNjcmliZShsYW5ndWFnZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50TGFuZ3VhZ2UgPSBsYW5ndWFnZTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uUGljdHVyZVNlbGVjdGlvbihpbWdFdmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZWZyZXNoRXJyb3JzKFtbXSwgdHJ1ZV0pO1xuICAgICAgICB0aGlzLnBpY3R1cmVUb0Nyb3AgPSBpbWdFdmVudDtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBvblBpY3R1cmVTZWxlY3Rpb25GYWlsZWQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGVycm9ycyA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICAgICAgICAgICAgY29kZTogJ0xvYWRpbmdGYWlsdXJlJyxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoXG4gICAgICAgICAgICAgICAgICAgICdmb2Vobi1waWN0dXJlLXVwbG9hZC5sb2FkaW5nLWZhaWx1cmUtbGFiZWwnXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICBdO1xuICAgICAgICB0aGlzLnJlZnJlc2hFcnJvcnMoW2Vycm9ycywgdHJ1ZV0pO1xuICAgICAgICB0aGlzLnJlc2V0UGljdHVyZVNlbGVjdGlvbigpO1xuICAgIH1cblxuICAgIG9uSW1hZ2VDcm9wcGVkKGNyb3BwZWRFdmVudDogSW1hZ2VDcm9wcGVkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jcm9wcGVkUGljdHVyZUFzQmFzZTY0VXJsID0gY3JvcHBlZEV2ZW50LmJhc2U2NDtcbiAgICB9XG5cbiAgICByZXNldFBpY3R1cmVTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3JvcHBlZFBpY3R1cmVBc0Jhc2U2NFVybCA9IG51bGw7XG4gICAgICAgIHRoaXMucGljdHVyZVRvQ3JvcCA9IG51bGw7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIH1cblxuICAgIHNhdmVQaWN0dXJlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1hcmtBc1ByaXN0aW5lKCk7XG5cbiAgICAgICAgY29uc3QgcGhvdG8gPSBjb252ZXJ0QmFzZTY0VXJsVG9GaWxlKFxuICAgICAgICAgICAgdGhpcy5jcm9wcGVkUGljdHVyZUFzQmFzZTY0VXJsLFxuICAgICAgICAgICAgdGhpcy5jcm9wcGVkUGljdHVyZUZpbGVuYW1lXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlXG4gICAgICAgICAgICAudXBsb2FkRG9jdW1lbnRzKFxuICAgICAgICAgICAgICAgIHRoaXMuYmFzZVVybCxcbiAgICAgICAgICAgICAgICB0aGlzLm5hbWUsXG4gICAgICAgICAgICAgICAgdGhpcy5sYWJlbCxcbiAgICAgICAgICAgICAgICBbcGhvdG9dLFxuICAgICAgICAgICAgICAgIHRoaXMua2V5LFxuICAgICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudExhbmd1YWdlXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAucGlwZShmaWx0ZXIocmVzdWx0ID0+ICEhcmVzdWx0KSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHsgZG9jdW1lbnRzLCBlcnJvcnMgfSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVzZXRQaWN0dXJlU2VsZWN0aW9uKCk7XG4gICAgICAgICAgICAgICAgaWYgKCEhZG9jdW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcmtBc0RpcnR5KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9kZWwgPSBkb2N1bWVudHM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaEVycm9ycyhbW10sIHRydWVdKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vZGVsID0gW107XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaEVycm9ycyhbZXJyb3JzLCB0cnVlXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZGVsZXRlRmlsZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlXG4gICAgICAgICAgICAuZGVsZXRlRG9jdW1lbnQodGhpcy5iYXNlVXJsLCB0aGlzLm1vZGVsWzBdKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5tb2RlbCA9IFtdO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzZXRQaWN0dXJlU2VsZWN0aW9uKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXREb3dubG9hZFVybCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRTZXJ2aWNlLmdldERvd25sb2FkVXJsKHRoaXMuYmFzZVVybCwgdGhpcy5tb2RlbFswXSk7XG4gICAgfVxuXG4gICAgZ2V0IGhhc1BpY3R1cmUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZGVsICYmIHRoaXMubW9kZWwubGVuZ3RoICYmICEhdGhpcy5tb2RlbFswXS5yZWZlcmVuY2U7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICByZWZyZXNoRXJyb3JzKHJlc3VsdHM6IGFueVtdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGVycm9yczogRXJyb3JUZW1wbGF0ZVtdID0gcmVzdWx0c1swXTtcblxuICAgICAgICBjb25zdCBpc0luU2VsZWN0aW9uTW9kZSA9XG4gICAgICAgICAgICAhdGhpcy5oYXNQaWN0dXJlICYmICEhdGhpcy5jcm9wcGVkUGljdHVyZUFzQmFzZTY0VXJsO1xuICAgICAgICBpZiAoaXNJblNlbGVjdGlvbk1vZGUpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vdE51bGxFcnJvciA9IGVycm9ycy5maW5kKFxuICAgICAgICAgICAgICAgIGUgPT4gZS5uYW1lID09PSB0aGlzLm5hbWUgJiYgZS5jb2RlID09PSAnTm90RW1wdHknXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKG5vdE51bGxFcnJvcikge1xuICAgICAgICAgICAgICAgIG5vdE51bGxFcnJvci5tZXNzYWdlID0gdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgICAgICAgICAnZm9laG4tcGljdHVyZS11cGxvYWQuc2VsZWN0aW9uLW5vdC12YWxpZGF0ZWQtbGFiZWwnXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHN1cGVyLnJlZnJlc2hFcnJvcnMocmVzdWx0cyk7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIFthdHRyLmlkXT1cImJ1aWxkSWQoJ0NvbnRhaW5lcicpXCJcbiAgICBbY2xhc3MuaGFzLWRhbmdlcl09XCJoYXNFcnJvcnMoKVwiXG4gICAgW2NsYXNzLnZkLWZvcm0tZ3JvdXAtZGFuZ2VyXT1cImhhc0Vycm9ycygpXCJcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAgY2xlYXJhYmxlLWlucHV0LWZvcm0tZ3JvdXBcIlxuICAgIHRhYmluZGV4PVwiLTFcIlxuPlxuICAgIDxsYWJlbFxuICAgICAgICBbYXR0ci5mb3JdPVwiYnVpbGRDaGlsZElkKClcIlxuICAgICAgICAqbmdJZj1cIiEhbGFiZWxcIlxuICAgICAgICBbbmdDbGFzc109XCJpc0xhYmVsU3JPbmx5ID8gJ3NyLW9ubHknIDogbGFiZWxTdHlsZU1vZGlmaWVyXCJcbiAgICA+XG4gICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwibGFiZWxcIj48L3NwYW4+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICAqbmdJZj1cIiFyZXF1aXJlZCAmJiAhaGlkZU5vdFJlcXVpcmVkRXh0cmFMYWJlbFwiXG4gICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyAnZm9laG4taW5wdXQub3B0aW9uYWwnIHwgZnJvbURpY3Rpb25hcnkgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgIDwvbGFiZWw+XG5cbiAgICA8Zm9laG4tdmFsaWRhdGlvbi1hbGVydHMgW2NvbXBvbmVudF09XCJ0aGlzXCI+PC9mb2Vobi12YWxpZGF0aW9uLWFsZXJ0cz5cblxuICAgIDxzbWFsbFxuICAgICAgICAqbmdJZj1cImhlbHBUZXh0XCJcbiAgICAgICAgW2F0dHIuaWRdPVwiYnVpbGRDaGlsZElkKCkgKyAnSGVscCdcIlxuICAgICAgICBjbGFzcz1cImZvcm0tdGV4dCB0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgIFtpbm5lckhUTUxdPVwiaGVscFRleHRcIlxuICAgID48L3NtYWxsPlxuXG4gICAgPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBbbmFtZV09XCJuYW1lIHx8IGxhYmVsXCIgW25nTW9kZWxdPVwibW9kZWxcIiAvPlxuXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG4gICAgPGRpdiAqbmdJZj1cImhhc1BpY3R1cmVcIiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBbaWRdPVwiYnVpbGRDaGlsZElkKCdQaWN0dXJlJylcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFsdF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgW3NyY109XCJnZXREb3dubG9hZFVybCgpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGFuZ2VyIHctMTAwXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJidWlsZENoaWxkSWQoJ0RlbGV0ZUJ1dHRvbicpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlRmlsZSgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAnZm9laG4tcGljdHVyZS11cGxvYWQuZGVsZXRlLXBpY3R1cmUtbGFiZWwnIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj1cIiFoYXNQaWN0dXJlICYmICFjcm9wcGVkUGljdHVyZUFzQmFzZTY0VXJsXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgI2lucHV0RmlsZVxuICAgICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wtZmlsZSBkLW5vbmVcIlxuICAgICAgICAgICAgW2F0dHIuaWRdPVwibmFtZVwiXG4gICAgICAgICAgICBbYXR0ci5hY2NlcHRdPVwiJy5qcGVnLC5qcGcsLnBuZydcIlxuICAgICAgICAgICAgW211bHRpcGxlXT1cImZhbHNlXCJcbiAgICAgICAgICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJvblBpY3R1cmVTZWxlY3Rpb24oJGV2ZW50KVwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBteS0yXCJcbiAgICAgICAgICAgIFthdHRyLmlkXT1cImJ1aWxkQ2hpbGRJZCgnQ2hvb3NlQnV0dG9uJylcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpIHx8IG51bGxcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJidWlsZElkKCdFcnJvcnNDb250YWluZXInKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiaW5wdXRGaWxlLmNsaWNrKClcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmdcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyAnZm9laG4tcGljdHVyZS11cGxvYWQuY2hvb3NlLWJ1dHRvbi1sYWJlbCcgfCBmcm9tRGljdGlvbmFyeSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCJsb2FkaW5nXCI+XG4gICAgICAgIHt7ICdmb2Vobi1waWN0dXJlLXVwbG9hZC5sb2FkaW5nLWxhYmVsJyB8IGZyb21EaWN0aW9uYXJ5IH19XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwiIWhhc1BpY3R1cmVcIiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cbiAgICAgICAgICAgIDxpbWFnZS1jcm9wcGVyXG4gICAgICAgICAgICAgICAgW2lkXT1cImJ1aWxkQ2hpbGRJZCgnQ3JvcHBlcicpXCJcbiAgICAgICAgICAgICAgICAoY3JvcHBlclJlYWR5KT1cImxvYWRpbmcgPSBmYWxzZVwiXG4gICAgICAgICAgICAgICAgKGltYWdlQ3JvcHBlZCk9XCJvbkltYWdlQ3JvcHBlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAobG9hZEltYWdlRmFpbGVkKT1cIm9uUGljdHVyZVNlbGVjdGlvbkZhaWxlZCgpXCJcbiAgICAgICAgICAgICAgICBbYXNwZWN0UmF0aW9dPVwiMyAvIDRcIlxuICAgICAgICAgICAgICAgIFtpbWFnZUNoYW5nZWRFdmVudF09XCJwaWN0dXJlVG9Dcm9wXCJcbiAgICAgICAgICAgICAgICBbbWFpbnRhaW5Bc3BlY3RSYXRpb109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbcmVzaXplVG9XaWR0aF09XCJyZXNpemVUb1dpZHRoXCJcbiAgICAgICAgICAgICAgICBbcmVzaXplVG9IZWlnaHRdPVwicmVzaXplVG9IZWlnaHRcIlxuICAgICAgICAgICAgICAgIFtvbmx5U2NhbGVEb3duXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIGZvcm1hdD1cInBuZ1wiXG4gICAgICAgICAgICA+PC9pbWFnZS1jcm9wcGVyPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWhhc1BpY3R1cmVcIiBjbGFzcz1cImNvbC1tZC00XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTNcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY3JvcHBlZFBpY3R1cmVBc0Jhc2U2NFVybFwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSB3LTEwMFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cImJ1aWxkQ2hpbGRJZCgnU2F2ZUJ1dHRvbicpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNhdmVQaWN0dXJlKClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICdmb2Vobi1waWN0dXJlLXVwbG9hZC52YWxpZGF0ZS1zZWxlY3Rpb24tbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNyb3BwZWRQaWN0dXJlQXNCYXNlNjRVcmxcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeSB3LTEwMFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cImJ1aWxkQ2hpbGRJZCgnQ2FuY2VsQnV0dG9uJylcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVzZXRQaWN0dXJlU2VsZWN0aW9uKClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICdmb2Vobi1waWN0dXJlLXVwbG9hZC5jYW5jZWwtc2VsZWN0aW9uLWxhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,42 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { FoehnIconsModule } from '../../foehn-icons/foehn-icons.module';
4
+ import { FoehnValidationAlertsModule } from '../../foehn-validation-alerts/foehn-validation-alerts.module';
5
+ import { SdkDictionaryModule } from '../../sdk-dictionary/sdk-dictionary.module';
6
+ import { FormsModule } from '@angular/forms';
7
+ import { FoehnPictureUploadComponent } from './foehn-picture-upload.component';
8
+ import { ImageCropperModule } from 'ngx-image-cropper';
9
+ import * as i0 from "@angular/core";
10
+ export class FoehnPictureUploadModule {
11
+ }
12
+ FoehnPictureUploadModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: FoehnPictureUploadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
13
+ FoehnPictureUploadModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: FoehnPictureUploadModule, declarations: [FoehnPictureUploadComponent], imports: [CommonModule,
14
+ FoehnIconsModule,
15
+ FoehnValidationAlertsModule,
16
+ SdkDictionaryModule,
17
+ FormsModule,
18
+ ImageCropperModule], exports: [FoehnPictureUploadComponent] });
19
+ FoehnPictureUploadModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: FoehnPictureUploadModule, imports: [[
20
+ CommonModule,
21
+ FoehnIconsModule,
22
+ FoehnValidationAlertsModule,
23
+ SdkDictionaryModule,
24
+ FormsModule,
25
+ ImageCropperModule
26
+ ]] });
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: FoehnPictureUploadModule, decorators: [{
28
+ type: NgModule,
29
+ args: [{
30
+ imports: [
31
+ CommonModule,
32
+ FoehnIconsModule,
33
+ FoehnValidationAlertsModule,
34
+ SdkDictionaryModule,
35
+ FormsModule,
36
+ ImageCropperModule
37
+ ],
38
+ declarations: [FoehnPictureUploadComponent],
39
+ exports: [FoehnPictureUploadComponent]
40
+ }]
41
+ }] });
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tcGljdHVyZS11cGxvYWQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLXVwbG9hZC9mb2Vobi1waWN0dXJlLXVwbG9hZC9mb2Vobi1waWN0dXJlLXVwbG9hZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDeEUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDM0csT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDakYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQWN2RCxNQUFNLE9BQU8sd0JBQXdCOztxSEFBeEIsd0JBQXdCO3NIQUF4Qix3QkFBd0IsaUJBSGxCLDJCQUEyQixhQVB0QyxZQUFZO1FBQ1osZ0JBQWdCO1FBQ2hCLDJCQUEyQjtRQUMzQixtQkFBbUI7UUFDbkIsV0FBVztRQUNYLGtCQUFrQixhQUdaLDJCQUEyQjtzSEFFNUIsd0JBQXdCLFlBWHhCO1lBQ0wsWUFBWTtZQUNaLGdCQUFnQjtZQUNoQiwyQkFBMkI7WUFDM0IsbUJBQW1CO1lBQ25CLFdBQVc7WUFDWCxrQkFBa0I7U0FDckI7MkZBSVEsd0JBQXdCO2tCQVpwQyxRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsMkJBQTJCO3dCQUMzQixtQkFBbUI7d0JBQ25CLFdBQVc7d0JBQ1gsa0JBQWtCO3FCQUNyQjtvQkFDRCxZQUFZLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztvQkFDM0MsT0FBTyxFQUFFLENBQUMsMkJBQTJCLENBQUM7aUJBQ3pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb2Vobkljb25zTW9kdWxlIH0gZnJvbSAnLi4vLi4vZm9laG4taWNvbnMvZm9laG4taWNvbnMubW9kdWxlJztcbmltcG9ydCB7IEZvZWhuVmFsaWRhdGlvbkFsZXJ0c01vZHVsZSB9IGZyb20gJy4uLy4uL2ZvZWhuLXZhbGlkYXRpb24tYWxlcnRzL2ZvZWhuLXZhbGlkYXRpb24tYWxlcnRzLm1vZHVsZSc7XG5pbXBvcnQgeyBTZGtEaWN0aW9uYXJ5TW9kdWxlIH0gZnJvbSAnLi4vLi4vc2RrLWRpY3Rpb25hcnkvc2RrLWRpY3Rpb25hcnkubW9kdWxlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9laG5QaWN0dXJlVXBsb2FkQ29tcG9uZW50IH0gZnJvbSAnLi9mb2Vobi1waWN0dXJlLXVwbG9hZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW1hZ2VDcm9wcGVyTW9kdWxlIH0gZnJvbSAnbmd4LWltYWdlLWNyb3BwZXInO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBGb2Vobkljb25zTW9kdWxlLFxuICAgICAgICBGb2VoblZhbGlkYXRpb25BbGVydHNNb2R1bGUsXG4gICAgICAgIFNka0RpY3Rpb25hcnlNb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBJbWFnZUNyb3BwZXJNb2R1bGVcbiAgICBdLFxuICAgIGRlY2xhcmF0aW9uczogW0ZvZWhuUGljdHVyZVVwbG9hZENvbXBvbmVudF0sXG4gICAgZXhwb3J0czogW0ZvZWhuUGljdHVyZVVwbG9hZENvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgRm9laG5QaWN0dXJlVXBsb2FkTW9kdWxlIHt9XG4iXX0=