@onemrvapublic/design-system 18.2.12-develop.1 → 18.2.12-develop.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/mat-file-upload/src/components/onemrva-mat-file-upload/onemrva-mat-file-upload.component.mjs +3 -3
- package/esm2022/mat-file-upload/src/onemrva-mat-file-upload.store.mjs +11 -5
- package/fesm2022/onemrvapublic-design-system-mat-file-upload.mjs +11 -5
- package/fesm2022/onemrvapublic-design-system-mat-file-upload.mjs.map +1 -1
- package/mat-file-upload/src/components/onemrva-mat-file-upload/onemrva-mat-file-upload.component.scss +20 -46
- package/package.json +1 -1
|
@@ -113,7 +113,7 @@ export class OnemrvaMatFileUploadComponent {
|
|
|
113
113
|
});
|
|
114
114
|
}
|
|
115
115
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: OnemrvaMatFileUploadComponent, deps: [{ token: i1.MatDialog }, { token: i2.TranslateService }, { token: i3.OnemrvaMatFileUploadStore }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
116
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: OnemrvaMatFileUploadComponent, selector: "onemrva-mat-file-upload", inputs: { accept: "accept", maxFileSize: "maxFileSize", numberOfFiles: "numberOfFiles", uploadOnDrop: "uploadOnDrop", initialFiles: "initialFiles", errorMessage: "errorMessage", dropFilesHereTextTranslationKey: "dropFilesHereTextTranslationKey", filePanelTemplate: "filePanelTemplate", dataCy: "dataCy" }, host: { properties: { "attr.data-cy": "this.dataCy" } }, viewQueries: [{ propertyName: "fileDropRef", first: true, predicate: ["fileDropRef"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"files$ | async as files\">\n <div\n class=\"onemrva-mat-file-upload-drop-area\"\n appDnd\n (fileDropped)=\"onFileDropped($event)\"\n [ngClass]=\"{\n 'fu-error': errorMessage !== '',\n filein: files.length > 0,\n }\"\n >\n <input\n type=\"file\"\n #fileDropRef\n [attr.id]=\"inputId\"\n role=\"button\"\n multiple\n (change)=\"fileBrowseHandler($event)\"\n accept=\"{{ acceptString }}\"\n />\n <
|
|
116
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: OnemrvaMatFileUploadComponent, selector: "onemrva-mat-file-upload", inputs: { accept: "accept", maxFileSize: "maxFileSize", numberOfFiles: "numberOfFiles", uploadOnDrop: "uploadOnDrop", initialFiles: "initialFiles", errorMessage: "errorMessage", dropFilesHereTextTranslationKey: "dropFilesHereTextTranslationKey", filePanelTemplate: "filePanelTemplate", dataCy: "dataCy" }, host: { properties: { "attr.data-cy": "this.dataCy" } }, viewQueries: [{ propertyName: "fileDropRef", first: true, predicate: ["fileDropRef"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"files$ | async as files\">\n <div\n class=\"onemrva-mat-file-upload-drop-area\"\n appDnd\n (fileDropped)=\"onFileDropped($event)\"\n [ngClass]=\"{\n 'fu-error': errorMessage !== '',\n filein: files.length > 0,\n }\"\n >\n <input\n type=\"file\"\n #fileDropRef\n [attr.id]=\"inputId\"\n role=\"button\"\n multiple\n (change)=\"fileBrowseHandler($event)\"\n accept=\"{{ acceptString }}\"\n />\n <div\n class=\"download-outer\"\n *ngIf=\"numberOfFiles === 0 || numberOfFiles > files.length\"\n >\n <div class=\"download-icon\">\n <mat-icon class=\"onemrva-upload xxlarge\">download</mat-icon>\n </div>\n\n <div class=\"download-text\">\n {{ dropFilesHereTextTranslationKey | translate }}\n {{ 'file.upload.or' | translate }}\n <label for=\"{{ inputId }}\" class=\"content\">\n {{ 'file.upload.browse.for.file' | translate }} </label\n ><br />\n <span class=\"restrictions\" *ngIf=\"maxFileSize > 0\">\n {{ 'file.upload.maximum' | translate }}\n {{ maxFileSizeFormatted }}\n\n <span *ngIf=\"acceptString.length > 0\">{{ '| ' }}</span>\n\n {{ acceptString }}\n </span>\n </div>\n </div>\n <ul class=\"files-list\">\n <li *ngFor=\"let file of files\">\n <ng-container\n *ngTemplateOutlet=\"\n filePanelTemplate;\n context: { file, $implicit: file }\n \"\n ></ng-container>\n </li>\n </ul>\n </div>\n\n <mat-error *ngIf=\"errorMessage\">{{ errorMessage | translate }}</mat-error>\n\n <mat-error *ngIf=\"fileUploadErrorMessage$ | async as fileUploadErrorMessage\">\n {{ fileUploadErrorMessage | translate }}\n </mat-error>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i6.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i7.DndDirective, selector: "[appDnd]", outputs: ["fileDropped"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], animations: [
|
|
117
117
|
trigger('inOutAnimation', [
|
|
118
118
|
state('in', style({ opacity: 1 })),
|
|
119
119
|
transition(':enter', [
|
|
@@ -161,7 +161,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
161
161
|
])),
|
|
162
162
|
]),
|
|
163
163
|
]),
|
|
164
|
-
], template: "<ng-container *ngIf=\"files$ | async as files\">\n <div\n class=\"onemrva-mat-file-upload-drop-area\"\n appDnd\n (fileDropped)=\"onFileDropped($event)\"\n [ngClass]=\"{\n 'fu-error': errorMessage !== '',\n filein: files.length > 0,\n }\"\n >\n <input\n type=\"file\"\n #fileDropRef\n [attr.id]=\"inputId\"\n role=\"button\"\n multiple\n (change)=\"fileBrowseHandler($event)\"\n accept=\"{{ acceptString }}\"\n />\n <
|
|
164
|
+
], template: "<ng-container *ngIf=\"files$ | async as files\">\n <div\n class=\"onemrva-mat-file-upload-drop-area\"\n appDnd\n (fileDropped)=\"onFileDropped($event)\"\n [ngClass]=\"{\n 'fu-error': errorMessage !== '',\n filein: files.length > 0,\n }\"\n >\n <input\n type=\"file\"\n #fileDropRef\n [attr.id]=\"inputId\"\n role=\"button\"\n multiple\n (change)=\"fileBrowseHandler($event)\"\n accept=\"{{ acceptString }}\"\n />\n <div\n class=\"download-outer\"\n *ngIf=\"numberOfFiles === 0 || numberOfFiles > files.length\"\n >\n <div class=\"download-icon\">\n <mat-icon class=\"onemrva-upload xxlarge\">download</mat-icon>\n </div>\n\n <div class=\"download-text\">\n {{ dropFilesHereTextTranslationKey | translate }}\n {{ 'file.upload.or' | translate }}\n <label for=\"{{ inputId }}\" class=\"content\">\n {{ 'file.upload.browse.for.file' | translate }} </label\n ><br />\n <span class=\"restrictions\" *ngIf=\"maxFileSize > 0\">\n {{ 'file.upload.maximum' | translate }}\n {{ maxFileSizeFormatted }}\n\n <span *ngIf=\"acceptString.length > 0\">{{ '| ' }}</span>\n\n {{ acceptString }}\n </span>\n </div>\n </div>\n <ul class=\"files-list\">\n <li *ngFor=\"let file of files\">\n <ng-container\n *ngTemplateOutlet=\"\n filePanelTemplate;\n context: { file, $implicit: file }\n \"\n ></ng-container>\n </li>\n </ul>\n </div>\n\n <mat-error *ngIf=\"errorMessage\">{{ errorMessage | translate }}</mat-error>\n\n <mat-error *ngIf=\"fileUploadErrorMessage$ | async as fileUploadErrorMessage\">\n {{ fileUploadErrorMessage | translate }}\n </mat-error>\n</ng-container>\n" }]
|
|
165
165
|
}], ctorParameters: () => [{ type: i1.MatDialog }, { type: i2.TranslateService }, { type: i3.OnemrvaMatFileUploadStore }], propDecorators: { accept: [{
|
|
166
166
|
type: Input
|
|
167
167
|
}], maxFileSize: [{
|
|
@@ -187,4 +187,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
187
187
|
type: ViewChild,
|
|
188
188
|
args: [`fileDropRef`]
|
|
189
189
|
}] } });
|
|
190
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lbXJ2YS1tYXQtZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25lbXJ2YS9kZXNpZ24tc3lzdGVtL21hdC1maWxlLXVwbG9hZC9zcmMvY29tcG9uZW50cy9vbmVtcnZhLW1hdC1maWxlLXVwbG9hZC9vbmVtcnZhLW1hdC1maWxlLXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vbWF0LWZpbGUtdXBsb2FkL3NyYy9jb21wb25lbnRzL29uZW1ydmEtbWF0LWZpbGUtdXBsb2FkL29uZW1ydmEtbWF0LWZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBR0wsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBYyxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUNMLEtBQUssRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE9BQU8sRUFDUCxPQUFPLEVBQ1AsVUFBVSxHQUNYLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUNMLFdBQVcsR0FHWixNQUFNLGtDQUFrQyxDQUFDO0FBRzFDLE9BQU8sS0FBSyxJQUFJLE1BQU0sWUFBWSxDQUFDOzs7Ozs7Ozs7QUFFbkMsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBbUNoQixNQUFNLE9BQU8sNkJBQTZCO0lBaUR4QyxZQUNTLE1BQWlCLEVBQ2hCLFNBQTJCLEVBQzNCLGVBQTBDO1FBRjNDLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDaEIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0Isb0JBQWUsR0FBZixlQUFlLENBQTJCO1FBbERwRCxXQUFN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TUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO2lDQUNqQyxDQUFDLENBQ0g7NkJBQ0YsQ0FBQzt5QkFDSCxDQUFDO3FCQUNIO3FKQUlELE1BQU07c0JBREwsS0FBSztnQkFLTixXQUFXO3NCQURWLEtBQUs7Z0JBSU4sYUFBYTtzQkFEWixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLCtCQUErQjtzQkFEOUIsS0FBSztnQkFPRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBY0MsTUFBTTtzQkFGWixXQUFXO3VCQUFDLGNBQWM7O3NCQUMxQixLQUFLO2dCQUlOLFdBQVc7c0JBRFYsU0FBUzt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0YWtlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBzdGF0ZSxcbiAga2V5ZnJhbWVzLFxuICBzdHlsZSxcbiAgYW5pbWF0ZSxcbiAgdHJpZ2dlcixcbiAgdHJhbnNpdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1xuICBmb3JtYXRCeXRlcyxcbiAgUHJvZ3Jlc3NGaWxlLFxuICBSZWZlcmVuY2VkUHJvZ3Jlc3NGaWxlLFxufSBmcm9tICcuLi8uLi9tb2RlbHMvcHJvZ3Jlc3MtZmlsZS5tb2RlbCc7XG5pbXBvcnQgeyBPbmVtcnZhTWF0RmlsZVVwbG9hZFN0b3JlIH0gZnJvbSAnLi4vLi4vb25lbXJ2YS1tYXQtZmlsZS11cGxvYWQuc3RvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0ICogYXMgbWltZSBmcm9tICdtaW1lLXR5cGVzJztcblxubGV0IE5FWFRfSUQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvbmVtcnZhLW1hdC1maWxlLXVwbG9hZCcsXG4gIHRlbXBsYXRlVXJsOiAnb25lbXJ2YS1tYXQtZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignaW5PdXRBbmltYXRpb24nLCBbXG4gICAgICBzdGF0ZSgnaW4nLCBzdHlsZSh7IG9wYWNpdHk6IDEgfSkpLFxuICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xuICAgICAgICBhbmltYXRlKFxuICAgICAgICAgIDMwMCxcbiAgICAgICAgICBrZXlmcmFtZXMoW1xuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCBvZmZzZXQ6IDAgfSksXG4gICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAuMjUsIG9mZnNldDogMC4yNSB9KSxcbiAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMC41LCBvZmZzZXQ6IDAuNSB9KSxcbiAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMC43NSwgb2Zmc2V0OiAwLjc1IH0pLFxuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCBvZmZzZXQ6IDEgfSksXG4gICAgICAgICAgXSksXG4gICAgICAgICksXG4gICAgICBdKSxcbiAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcbiAgICAgICAgYW5pbWF0ZShcbiAgICAgICAgICAzMDAsXG4gICAgICAgICAga2V5ZnJhbWVzKFtcbiAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMSwgb2Zmc2V0OiAwIH0pLFxuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLjc1LCBvZmZzZXQ6IDAuMjUgfSksXG4gICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAuNSwgb2Zmc2V0OiAwLjUgfSksXG4gICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAuMjUsIG9mZnNldDogMC43NSB9KSxcbiAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgb2Zmc2V0OiAxIH0pLFxuICAgICAgICAgIF0pLFxuICAgICAgICApLFxuICAgICAgXSksXG4gICAgXSksXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE9uZW1ydmFNYXRGaWxlVXBsb2FkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KClcbiAgYWNjZXB0OiBzdHJpbmdbXSA9IFtdO1xuICBhY2NlcHRTdHJpbmcgPSAnJztcblxuICBASW5wdXQoKVxuICBtYXhGaWxlU2l6ZSA9IDA7XG5cbiAgQElucHV0KClcbiAgbnVtYmVyT2ZGaWxlcyA9IDA7XG5cbiAgQElucHV0KClcbiAgdXBsb2FkT25Ecm9wID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBpbml0aWFsRmlsZXM6IFByb2dyZXNzRmlsZVtdID0gW107XG5cbiAgQElucHV0KClcbiAgZXJyb3JNZXNzYWdlID0gJyc7XG5cbiAgQElucHV0KClcbiAgZHJvcEZpbGVzSGVyZVRleHRUcmFuc2xhdGlvbktleSA9ICdmaWxlLnVwbG9hZC5kcmFnLmFuZC5kcm9wJztcblxuICBmaWxlVXBsb2FkRXJyb3JNZXNzYWdlJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIGZpbGVzJDogT2JzZXJ2YWJsZTxSZWZlcmVuY2VkUHJvZ3Jlc3NGaWxlW10+O1xuXG4gIEBJbnB1dCgpIGZpbGVQYW5lbFRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcblxuICByZXRyeUZpbGUgPSBuZXcgRXZlbnRFbWl0dGVyPHsgaW5kZXg6IG51bWJlcjsgY21wUmVmOiBzeW1ib2wgfT4oKTtcblxuICAvKipcbiAgICogU2V0cyB0aGUgYGRhdGEtY3lgIG9mIHRoZSBlbGVtZW50LiBJZiBub3Qgc2V0LCB0aGUgZmlyc3QgY29tcG9uZW50IGluc3RhbmNlIHdpbGwgaGF2ZSBgZGF0YS1jeWAgPSBgXCJvbmVtcnZhLW1hdC1tdWx0aS1zZWxlY3QtMFwiYC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgaHRtbFxuICAgKiA8b25lbXJ2YS1tYXQtbXVsdGktc2VsZWN0IGlkPVwibXktZmlyc3QtbXVsdGktc2VsZWN0XCI+PC9vbmVtcnZhLW1hdC1tdWx0aS1zZWxlY3Q+XG4gICAqIGBgYFxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtY3knKVxuICBASW5wdXQoKVxuICBwdWJsaWMgZGF0YUN5ID0gYG9uZW1ydmEtbWF0LW11bHRpLXNlbGVjdC0ke05FWFRfSUQrK31gO1xuXG4gIEBWaWV3Q2hpbGQoYGZpbGVEcm9wUmVmYClcbiAgZmlsZURyb3BSZWYhOiBFbGVtZW50UmVmO1xuXG4gIGlucHV0SWQgPSBgZmlsZURyb3BSZWYtJHtORVhUX0lEfWA7XG4gIG1heEZpbGVTaXplRm9ybWF0dGVkID0gJyc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmlsZVVwbG9hZFN0b3JlOiBPbmVtcnZhTWF0RmlsZVVwbG9hZFN0b3JlLFxuICApIHtcbiAgICB0aGlzLmZpbGVzJCA9IGZpbGVVcGxvYWRTdG9yZS5maWxlcyQ7XG5cbiAgICB0aGlzLmZpbGVVcGxvYWRFcnJvck1lc3NhZ2UkID0gdGhpcy5maWxlVXBsb2FkU3RvcmUuZmlsZVVwbG9hZEVycm9yJDtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFjY2VwdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmFjY2VwdFN0cmluZyA9IHRoaXMuYWNjZXB0XG4gICAgICAgIC5tYXAodmFsID0+IHtcbiAgICAgICAgICBjb25zdCB0ID0gbWltZS5leHRlbnNpb24odmFsIHx8ICcnKTtcbiAgICAgICAgICByZXR1cm4gYC4ke3R9YDtcbiAgICAgICAgfSlcbiAgICAgICAgLmZpbHRlcih2YWwgPT4ge1xuICAgICAgICAgIHJldHVybiB2YWwubGVuZ3RoID4gMTtcbiAgICAgICAgfSlcbiAgICAgICAgLmpvaW4oJywgJyk7XG5cbiAgICAgIHRoaXMuZmlsZVVwbG9hZFN0b3JlLnNldEFjY2VwdCh0aGlzLmFjY2VwdCk7XG4gICAgfVxuXG4gICAgdGhpcy5tYXhGaWxlU2l6ZUZvcm1hdHRlZCA9IGZvcm1hdEJ5dGVzKHRoaXMubWF4RmlsZVNpemUpO1xuICAgIHRoaXMuZmlsZVVwbG9hZFN0b3JlLnNldE1heEZpbGVTaXplKHRoaXMubWF4RmlsZVNpemUpO1xuICB9XG5cbiAgLyoqXG4gICAqIG9uIGZpbGUgZHJvcCBoYW5kbGVyXG4gICAqL1xuICBvbkZpbGVEcm9wcGVkKCRldmVudDogRmlsZUxpc3QpIHtcbiAgICB0aGlzLnByZXBhcmVGaWxlc0xpc3QoJGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBoYW5kbGUgZmlsZSBmcm9tIGJyb3dzaW5nXG4gICAqL1xuICBmaWxlQnJvd3NlSGFuZGxlcigkZXZlbnQ6IEV2ZW50KSB7XG4gICAgY29uc3QgZWxtID0gJGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50LFxuICAgICAgZmlsZXMgPSBlbG0uZmlsZXMgYXMgRmlsZUxpc3Q7XG5cbiAgICB0aGlzLnByZXBhcmVGaWxlc0xpc3QoZmlsZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgRmlsZXMgbGlzdCB0byBub3JtYWwgYXJyYXkgbGlzdFxuICAgKiBAcGFyYW0gZmlsZXMgKEZpbGVzIExpc3QpXG4gICAqL1xuICBwcmVwYXJlRmlsZXNMaXN0KGZpbGVzOiBGaWxlTGlzdCkge1xuICAgIHRoaXMuZmlsZVVwbG9hZFN0b3JlLmZpbGVzJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAvLyBpZiBudW1iZXJPZmZpbGVzIGlzIHNldCBhbmQgdGhlIHRvdGFsIGxlbmd0aCBvZiBmaWxlcyBpcyBzbWFsbGVyIHRoYW4gaXRcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5udW1iZXJPZkZpbGVzID4gMCAmJlxuICAgICAgICBmaWxlcy5sZW5ndGggKyB2YWx1ZS5sZW5ndGggPiB0aGlzLm51bWJlck9mRmlsZXNcbiAgICAgICkge1xuICAgICAgICAvLyB0b28gbWFueSBmaWxlc1xuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgJ2ZpbGUudXBsb2FkLnRvby5tYW55LmZpbGVzJyxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGNsZWFyIGVycm9yIG1lc3NhZ2VcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnJztcblxuICAgICAgICBjb25zdCBmczogUHJvZ3Jlc3NGaWxlW10gPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGNvbnN0IGZpbGUgPSBmaWxlcy5pdGVtKGkpO1xuICAgICAgICAgIGlmIChmaWxlID09PSBudWxsKSBjb250aW51ZTtcblxuICAgICAgICAgIGNvbnN0IGl0ZW06IFByb2dyZXNzRmlsZSA9IHtcbiAgICAgICAgICAgIGZpbGUsXG4gICAgICAgICAgICBwcm9ncmVzczogMCxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICAgICAgICAgIHVybDogbnVsbCxcbiAgICAgICAgICAgIGlkOiBudWxsLFxuICAgICAgICAgICAgZW5hYmxlUHJvZ3Jlc3NCYXI6IHRoaXMudXBsb2FkT25Ecm9wLFxuXG4gICAgICAgICAgICBuYW1lOiBmaWxlIS5uYW1lLFxuICAgICAgICAgICAgbGFzdE1vZGlmaWVkOiBmaWxlIS5sYXN0TW9kaWZpZWQsXG4gICAgICAgICAgICBzaXplOiBmaWxlIS5zaXplLFxuICAgICAgICAgICAgdHlwZTogZmlsZSEudHlwZSxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgZnMucHVzaChpdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnVwbG9hZE9uRHJvcCkgdGhpcy5maWxlVXBsb2FkU3RvcmUudXBsb2FkRmlsZXMoZnMpO1xuICAgICAgICBlbHNlIHRoaXMuZmlsZVVwbG9hZFN0b3JlLmFkZFNldmVyYWxGb3JQb3RlbnRpYWxVcGxvYWQoZnMpO1xuXG4gICAgICAgIHRoaXMuZmlsZURyb3BSZWYubmF0aXZlRWxlbWVudC52YWx1ZSA9IG51bGw7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJmaWxlcyQgfCBhc3luYyBhcyBmaWxlc1wiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJvbmVtcnZhLW1hdC1maWxlLXVwbG9hZC1kcm9wLWFyZWFcIlxuICAgIGFwcERuZFxuICAgIChmaWxlRHJvcHBlZCk9XCJvbkZpbGVEcm9wcGVkKCRldmVudClcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdmdS1lcnJvcic6IGVycm9yTWVzc2FnZSAhPT0gJycsXG4gICAgICBmaWxlaW46IGZpbGVzLmxlbmd0aCA+IDAsXG4gICAgfVwiXG4gID5cbiAgICA8aW5wdXRcbiAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICNmaWxlRHJvcFJlZlxuICAgICAgW2F0dHIuaWRdPVwiaW5wdXRJZFwiXG4gICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgIG11bHRpcGxlXG4gICAgICAoY2hhbmdlKT1cImZpbGVCcm93c2VIYW5kbGVyKCRldmVudClcIlxuICAgICAgYWNjZXB0PVwie3sgYWNjZXB0U3RyaW5nIH19XCJcbiAgICAvPlxuICAgIDxwXG4gICAgICBjbGFzcz1cIm91dGVyXCJcbiAgICAgICpuZ0lmPVwibnVtYmVyT2ZGaWxlcyA9PT0gMCB8fCBudW1iZXJPZkZpbGVzID4gZmlsZXMubGVuZ3RoXCJcbiAgICA+XG4gICAgICA8c3BhbiBjbGFzcz1cImlubmVyXCI+XG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm9uZW1ydmEtdXBsb2FkXCI+ZG93bmxvYWQ8L21hdC1pY29uPlxuICAgICAgPC9zcGFuPlxuXG4gICAgICA8c3BhbiBjbGFzcz1cImlubmVyXCI+XG4gICAgICAgIHt7IGRyb3BGaWxlc0hlcmVUZXh0VHJhbnNsYXRpb25LZXkgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPHNwYW4gY2xhc3M9XCJpbm5lclwiPlxuICAgICAgICB7eyAnZmlsZS51cGxvYWQub3InIHwgdHJhbnNsYXRlIH19XG5cbiAgICAgICAgPGxhYmVsIGZvcj1cInt7IGlucHV0SWQgfX1cIiBjbGFzcz1cImNvbnRlbnRcIj5cbiAgICAgICAgICB7eyAnZmlsZS51cGxvYWQuYnJvd3NlLmZvci5maWxlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2xhYmVsPlxuICAgICAgPC9zcGFuPlxuXG4gICAgICA8c3BhbiBjbGFzcz1cImlubmVyXCIgYXJpYS1kaXNhYmxlZD1cInRydWVcIj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJtYXhGaWxlU2l6ZSA+IDBcIj5cbiAgICAgICAgICB7eyAnZmlsZS51cGxvYWQubWF4aW11bScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICB7eyBtYXhGaWxlU2l6ZUZvcm1hdHRlZCB9fVxuXG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJhY2NlcHRTdHJpbmcubGVuZ3RoID4gMFwiPnt7ICd8ICcgfX08L3NwYW4+XG5cbiAgICAgICAgICB7eyBhY2NlcHRTdHJpbmcgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgIDwvcD5cbiAgICA8dWwgY2xhc3M9XCJmaWxlcy1saXN0XCI+XG4gICAgICA8bGkgKm5nRm9yPVwibGV0IGZpbGUgb2YgZmlsZXNcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICBmaWxlUGFuZWxUZW1wbGF0ZTtcbiAgICAgICAgICAgIGNvbnRleHQ6IHsgZmlsZSwgJGltcGxpY2l0OiBmaWxlIH1cbiAgICAgICAgICBcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvZGl2PlxuXG4gIDxtYXQtZXJyb3IgKm5nSWY9XCJlcnJvck1lc3NhZ2VcIj57eyBlcnJvck1lc3NhZ2UgfCB0cmFuc2xhdGUgfX08L21hdC1lcnJvcj5cblxuICA8bWF0LWVycm9yICpuZ0lmPVwiZmlsZVVwbG9hZEVycm9yTWVzc2FnZSQgfCBhc3luYyBhcyBmaWxlVXBsb2FkRXJyb3JNZXNzYWdlXCI+XG4gICAge3sgZmlsZVVwbG9hZEVycm9yTWVzc2FnZSB8IHRyYW5zbGF0ZSB9fVxuICA8L21hdC1lcnJvcj5cbjwvbmctY29udGFpbmVyPlxuIl19
|
|
190
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lbXJ2YS1tYXQtZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25lbXJ2YS9kZXNpZ24tc3lzdGVtL21hdC1maWxlLXVwbG9hZC9zcmMvY29tcG9uZW50cy9vbmVtcnZhLW1hdC1maWxlLXVwbG9hZC9vbmVtcnZhLW1hdC1maWxlLXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vbWF0LWZpbGUtdXBsb2FkL3NyYy9jb21wb25lbnRzL29uZW1ydmEtbWF0LWZpbGUtdXBsb2FkL29uZW1ydmEtbWF0LWZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBR0wsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBYyxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUNMLEtBQUssRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE9BQU8sRUFDUCxPQUFPLEVBQ1AsVUFBVSxHQUNYLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUNMLFdBQVcsR0FHWixNQUFNLGtDQUFrQyxDQUFDO0FBRzFDLE9BQU8sS0FBSyxJQUFJLE1BQU0sWUFBWSxDQUFDOzs7Ozs7Ozs7QUFFbkMsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBbUNoQixNQUFNLE9BQU8sNkJBQTZCO0lBaUR4QyxZQUNTLE1BQWlCLEVBQ2hCLFNBQTJCLEVBQzNCLGVBQTBDO1FBRjNDLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDaEIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0Isb0JBQWUsR0FBZixlQUFlLENBQTJCO1FBbERwRCxXQUFN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TUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO2lDQUNqQyxDQUFDLENBQ0g7NkJBQ0YsQ0FBQzt5QkFDSCxDQUFDO3FCQUNIO3FKQUlELE1BQU07c0JBREwsS0FBSztnQkFLTixXQUFXO3NCQURWLEtBQUs7Z0JBSU4sYUFBYTtzQkFEWixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLCtCQUErQjtzQkFEOUIsS0FBSztnQkFPRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBY0MsTUFBTTtzQkFGWixXQUFXO3VCQUFDLGNBQWM7O3NCQUMxQixLQUFLO2dCQUlOLFdBQVc7c0JBRFYsU0FBUzt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0YWtlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBzdGF0ZSxcbiAga2V5ZnJhbWVzLFxuICBzdHlsZSxcbiAgYW5pbWF0ZSxcbiAgdHJpZ2dlcixcbiAgdHJhbnNpdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1xuICBmb3JtYXRCeXRlcyxcbiAgUHJvZ3Jlc3NGaWxlLFxuICBSZWZlcmVuY2VkUHJvZ3Jlc3NGaWxlLFxufSBmcm9tICcuLi8uLi9tb2RlbHMvcHJvZ3Jlc3MtZmlsZS5tb2RlbCc7XG5pbXBvcnQgeyBPbmVtcnZhTWF0RmlsZVVwbG9hZFN0b3JlIH0gZnJvbSAnLi4vLi4vb25lbXJ2YS1tYXQtZmlsZS11cGxvYWQuc3RvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0ICogYXMgbWltZSBmcm9tICdtaW1lLXR5cGVzJztcblxubGV0IE5FWFRfSUQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvbmVtcnZhLW1hdC1maWxlLXVwbG9hZCcsXG4gIHRlbXBsYXRlVXJsOiAnb25lbXJ2YS1tYXQtZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignaW5PdXRBbmltYXRpb24nLCBbXG4gICAgICBzdGF0ZSgnaW4nLCBzdHlsZSh7IG9wYWNpdHk6IDEgfSkpLFxuICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xuICAgICAgICBhbmltYXRlKFxuICAgICAgICAgIDMwMCxcbiAgICAgICAgICBrZXlmcmFtZXMoW1xuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCBvZmZzZXQ6IDAgfSksXG4gICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAuMjUsIG9mZnNldDogMC4yNSB9KSxcbiAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMC41LCBvZmZzZXQ6IDAuNSB9KSxcbiAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMC43NSwgb2Zmc2V0OiAwLjc1IH0pLFxuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCBvZmZzZXQ6IDEgfSksXG4gICAgICAgICAgXSksXG4gICAgICAgICksXG4gICAgICBdKSxcbiAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcbiAgICAgICAgYW5pbWF0ZShcbiAgICAgICAgICAzMDAsXG4gICAgICAgICAga2V5ZnJhbWVzKFtcbiAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMSwgb2Zmc2V0OiAwIH0pLFxuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLjc1LCBvZmZzZXQ6IDAuMjUgfSksXG4gICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAuNSwgb2Zmc2V0OiAwLjUgfSksXG4gICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAuMjUsIG9mZnNldDogMC43NSB9KSxcbiAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgb2Zmc2V0OiAxIH0pLFxuICAgICAgICAgIF0pLFxuICAgICAgICApLFxuICAgICAgXSksXG4gICAgXSksXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE9uZW1ydmFNYXRGaWxlVXBsb2FkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KClcbiAgYWNjZXB0OiBzdHJpbmdbXSA9IFtdO1xuICBhY2NlcHRTdHJpbmcgPSAnJztcblxuICBASW5wdXQoKVxuICBtYXhGaWxlU2l6ZSA9IDA7XG5cbiAgQElucHV0KClcbiAgbnVtYmVyT2ZGaWxlcyA9IDA7XG5cbiAgQElucHV0KClcbiAgdXBsb2FkT25Ecm9wID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBpbml0aWFsRmlsZXM6IFByb2dyZXNzRmlsZVtdID0gW107XG5cbiAgQElucHV0KClcbiAgZXJyb3JNZXNzYWdlID0gJyc7XG5cbiAgQElucHV0KClcbiAgZHJvcEZpbGVzSGVyZVRleHRUcmFuc2xhdGlvbktleSA9ICdmaWxlLnVwbG9hZC5kcmFnLmFuZC5kcm9wJztcblxuICBmaWxlVXBsb2FkRXJyb3JNZXNzYWdlJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIGZpbGVzJDogT2JzZXJ2YWJsZTxSZWZlcmVuY2VkUHJvZ3Jlc3NGaWxlW10+O1xuXG4gIEBJbnB1dCgpIGZpbGVQYW5lbFRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcblxuICByZXRyeUZpbGUgPSBuZXcgRXZlbnRFbWl0dGVyPHsgaW5kZXg6IG51bWJlcjsgY21wUmVmOiBzeW1ib2wgfT4oKTtcblxuICAvKipcbiAgICogU2V0cyB0aGUgYGRhdGEtY3lgIG9mIHRoZSBlbGVtZW50LiBJZiBub3Qgc2V0LCB0aGUgZmlyc3QgY29tcG9uZW50IGluc3RhbmNlIHdpbGwgaGF2ZSBgZGF0YS1jeWAgPSBgXCJvbmVtcnZhLW1hdC1tdWx0aS1zZWxlY3QtMFwiYC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgaHRtbFxuICAgKiA8b25lbXJ2YS1tYXQtbXVsdGktc2VsZWN0IGlkPVwibXktZmlyc3QtbXVsdGktc2VsZWN0XCI+PC9vbmVtcnZhLW1hdC1tdWx0aS1zZWxlY3Q+XG4gICAqIGBgYFxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtY3knKVxuICBASW5wdXQoKVxuICBwdWJsaWMgZGF0YUN5ID0gYG9uZW1ydmEtbWF0LW11bHRpLXNlbGVjdC0ke05FWFRfSUQrK31gO1xuXG4gIEBWaWV3Q2hpbGQoYGZpbGVEcm9wUmVmYClcbiAgZmlsZURyb3BSZWYhOiBFbGVtZW50UmVmO1xuXG4gIGlucHV0SWQgPSBgZmlsZURyb3BSZWYtJHtORVhUX0lEfWA7XG4gIG1heEZpbGVTaXplRm9ybWF0dGVkID0gJyc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmlsZVVwbG9hZFN0b3JlOiBPbmVtcnZhTWF0RmlsZVVwbG9hZFN0b3JlLFxuICApIHtcbiAgICB0aGlzLmZpbGVzJCA9IGZpbGVVcGxvYWRTdG9yZS5maWxlcyQ7XG5cbiAgICB0aGlzLmZpbGVVcGxvYWRFcnJvck1lc3NhZ2UkID0gdGhpcy5maWxlVXBsb2FkU3RvcmUuZmlsZVVwbG9hZEVycm9yJDtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFjY2VwdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmFjY2VwdFN0cmluZyA9IHRoaXMuYWNjZXB0XG4gICAgICAgIC5tYXAodmFsID0+IHtcbiAgICAgICAgICBjb25zdCB0ID0gbWltZS5leHRlbnNpb24odmFsIHx8ICcnKTtcbiAgICAgICAgICByZXR1cm4gYC4ke3R9YDtcbiAgICAgICAgfSlcbiAgICAgICAgLmZpbHRlcih2YWwgPT4ge1xuICAgICAgICAgIHJldHVybiB2YWwubGVuZ3RoID4gMTtcbiAgICAgICAgfSlcbiAgICAgICAgLmpvaW4oJywgJyk7XG5cbiAgICAgIHRoaXMuZmlsZVVwbG9hZFN0b3JlLnNldEFjY2VwdCh0aGlzLmFjY2VwdCk7XG4gICAgfVxuXG4gICAgdGhpcy5tYXhGaWxlU2l6ZUZvcm1hdHRlZCA9IGZvcm1hdEJ5dGVzKHRoaXMubWF4RmlsZVNpemUpO1xuICAgIHRoaXMuZmlsZVVwbG9hZFN0b3JlLnNldE1heEZpbGVTaXplKHRoaXMubWF4RmlsZVNpemUpO1xuICB9XG5cbiAgLyoqXG4gICAqIG9uIGZpbGUgZHJvcCBoYW5kbGVyXG4gICAqL1xuICBvbkZpbGVEcm9wcGVkKCRldmVudDogRmlsZUxpc3QpIHtcbiAgICB0aGlzLnByZXBhcmVGaWxlc0xpc3QoJGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBoYW5kbGUgZmlsZSBmcm9tIGJyb3dzaW5nXG4gICAqL1xuICBmaWxlQnJvd3NlSGFuZGxlcigkZXZlbnQ6IEV2ZW50KSB7XG4gICAgY29uc3QgZWxtID0gJGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50LFxuICAgICAgZmlsZXMgPSBlbG0uZmlsZXMgYXMgRmlsZUxpc3Q7XG5cbiAgICB0aGlzLnByZXBhcmVGaWxlc0xpc3QoZmlsZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgRmlsZXMgbGlzdCB0byBub3JtYWwgYXJyYXkgbGlzdFxuICAgKiBAcGFyYW0gZmlsZXMgKEZpbGVzIExpc3QpXG4gICAqL1xuICBwcmVwYXJlRmlsZXNMaXN0KGZpbGVzOiBGaWxlTGlzdCkge1xuICAgIHRoaXMuZmlsZVVwbG9hZFN0b3JlLmZpbGVzJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAvLyBpZiBudW1iZXJPZmZpbGVzIGlzIHNldCBhbmQgdGhlIHRvdGFsIGxlbmd0aCBvZiBmaWxlcyBpcyBzbWFsbGVyIHRoYW4gaXRcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5udW1iZXJPZkZpbGVzID4gMCAmJlxuICAgICAgICBmaWxlcy5sZW5ndGggKyB2YWx1ZS5sZW5ndGggPiB0aGlzLm51bWJlck9mRmlsZXNcbiAgICAgICkge1xuICAgICAgICAvLyB0b28gbWFueSBmaWxlc1xuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgJ2ZpbGUudXBsb2FkLnRvby5tYW55LmZpbGVzJyxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGNsZWFyIGVycm9yIG1lc3NhZ2VcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnJztcblxuICAgICAgICBjb25zdCBmczogUHJvZ3Jlc3NGaWxlW10gPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGNvbnN0IGZpbGUgPSBmaWxlcy5pdGVtKGkpO1xuICAgICAgICAgIGlmIChmaWxlID09PSBudWxsKSBjb250aW51ZTtcblxuICAgICAgICAgIGNvbnN0IGl0ZW06IFByb2dyZXNzRmlsZSA9IHtcbiAgICAgICAgICAgIGZpbGUsXG4gICAgICAgICAgICBwcm9ncmVzczogMCxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICAgICAgICAgIHVybDogbnVsbCxcbiAgICAgICAgICAgIGlkOiBudWxsLFxuICAgICAgICAgICAgZW5hYmxlUHJvZ3Jlc3NCYXI6IHRoaXMudXBsb2FkT25Ecm9wLFxuXG4gICAgICAgICAgICBuYW1lOiBmaWxlIS5uYW1lLFxuICAgICAgICAgICAgbGFzdE1vZGlmaWVkOiBmaWxlIS5sYXN0TW9kaWZpZWQsXG4gICAgICAgICAgICBzaXplOiBmaWxlIS5zaXplLFxuICAgICAgICAgICAgdHlwZTogZmlsZSEudHlwZSxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgZnMucHVzaChpdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnVwbG9hZE9uRHJvcCkgdGhpcy5maWxlVXBsb2FkU3RvcmUudXBsb2FkRmlsZXMoZnMpO1xuICAgICAgICBlbHNlIHRoaXMuZmlsZVVwbG9hZFN0b3JlLmFkZFNldmVyYWxGb3JQb3RlbnRpYWxVcGxvYWQoZnMpO1xuXG4gICAgICAgIHRoaXMuZmlsZURyb3BSZWYubmF0aXZlRWxlbWVudC52YWx1ZSA9IG51bGw7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJmaWxlcyQgfCBhc3luYyBhcyBmaWxlc1wiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJvbmVtcnZhLW1hdC1maWxlLXVwbG9hZC1kcm9wLWFyZWFcIlxuICAgIGFwcERuZFxuICAgIChmaWxlRHJvcHBlZCk9XCJvbkZpbGVEcm9wcGVkKCRldmVudClcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdmdS1lcnJvcic6IGVycm9yTWVzc2FnZSAhPT0gJycsXG4gICAgICBmaWxlaW46IGZpbGVzLmxlbmd0aCA+IDAsXG4gICAgfVwiXG4gID5cbiAgICA8aW5wdXRcbiAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICNmaWxlRHJvcFJlZlxuICAgICAgW2F0dHIuaWRdPVwiaW5wdXRJZFwiXG4gICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgIG11bHRpcGxlXG4gICAgICAoY2hhbmdlKT1cImZpbGVCcm93c2VIYW5kbGVyKCRldmVudClcIlxuICAgICAgYWNjZXB0PVwie3sgYWNjZXB0U3RyaW5nIH19XCJcbiAgICAvPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZG93bmxvYWQtb3V0ZXJcIlxuICAgICAgKm5nSWY9XCJudW1iZXJPZkZpbGVzID09PSAwIHx8IG51bWJlck9mRmlsZXMgPiBmaWxlcy5sZW5ndGhcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJkb3dubG9hZC1pY29uXCI+XG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm9uZW1ydmEtdXBsb2FkIHh4bGFyZ2VcIj5kb3dubG9hZDwvbWF0LWljb24+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImRvd25sb2FkLXRleHRcIj5cbiAgICAgICAge3sgZHJvcEZpbGVzSGVyZVRleHRUcmFuc2xhdGlvbktleSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICB7eyAnZmlsZS51cGxvYWQub3InIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDxsYWJlbCBmb3I9XCJ7eyBpbnB1dElkIH19XCIgY2xhc3M9XCJjb250ZW50XCI+XG4gICAgICAgICAge3sgJ2ZpbGUudXBsb2FkLmJyb3dzZS5mb3IuZmlsZScgfCB0cmFuc2xhdGUgfX0gPC9sYWJlbFxuICAgICAgICA+PGJyIC8+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwicmVzdHJpY3Rpb25zXCIgKm5nSWY9XCJtYXhGaWxlU2l6ZSA+IDBcIj5cbiAgICAgICAgICB7eyAnZmlsZS51cGxvYWQubWF4aW11bScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICB7eyBtYXhGaWxlU2l6ZUZvcm1hdHRlZCB9fVxuXG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJhY2NlcHRTdHJpbmcubGVuZ3RoID4gMFwiPnt7ICd8ICcgfX08L3NwYW4+XG5cbiAgICAgICAgICB7eyBhY2NlcHRTdHJpbmcgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPHVsIGNsYXNzPVwiZmlsZXMtbGlzdFwiPlxuICAgICAgPGxpICpuZ0Zvcj1cImxldCBmaWxlIG9mIGZpbGVzXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgZmlsZVBhbmVsVGVtcGxhdGU7XG4gICAgICAgICAgICBjb250ZXh0OiB7IGZpbGUsICRpbXBsaWNpdDogZmlsZSB9XG4gICAgICAgICAgXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICA8L2Rpdj5cblxuICA8bWF0LWVycm9yICpuZ0lmPVwiZXJyb3JNZXNzYWdlXCI+e3sgZXJyb3JNZXNzYWdlIHwgdHJhbnNsYXRlIH19PC9tYXQtZXJyb3I+XG5cbiAgPG1hdC1lcnJvciAqbmdJZj1cImZpbGVVcGxvYWRFcnJvck1lc3NhZ2UkIHwgYXN5bmMgYXMgZmlsZVVwbG9hZEVycm9yTWVzc2FnZVwiPlxuICAgIHt7IGZpbGVVcGxvYWRFcnJvck1lc3NhZ2UgfCB0cmFuc2xhdGUgfX1cbiAgPC9tYXQtZXJyb3I+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Inject, Injectable, InjectionToken, Optional } from '@angular/core';
|
|
2
2
|
import { ComponentStore } from '@ngrx/component-store';
|
|
3
|
-
import { catchError, filter, forkJoin, interval, map, merge, mergeMap, of, switchMap,
|
|
3
|
+
import { catchError, filter, forkJoin, interval, map, merge, mergeMap, of, switchMap, takeWhile, tap, throttle, withLatestFrom, } from 'rxjs';
|
|
4
4
|
import { formattedSize, } from './models/progress-file.model';
|
|
5
5
|
import { HttpEventType } from '@angular/common/http';
|
|
6
6
|
import { OnemrvaMatColor } from '@onemrvapublic/design-system/utils';
|
|
@@ -165,7 +165,11 @@ export class OnemrvaMatFileUploadStore extends ComponentStore {
|
|
|
165
165
|
return inputs$.pipe(tap(() => {
|
|
166
166
|
this.emptyList();
|
|
167
167
|
}), mergeMap((inputs) => {
|
|
168
|
-
return this.fileUploadService.listUploadedFiles(inputs).pipe(
|
|
168
|
+
return this.fileUploadService.listUploadedFiles(inputs).pipe(
|
|
169
|
+
//take(1),
|
|
170
|
+
withLatestFrom(this.files$), tap(() => {
|
|
171
|
+
// added to avoid ide errors
|
|
172
|
+
}), tap(([newfiles, registeredFiles]) => {
|
|
169
173
|
newfiles.forEach(file => {
|
|
170
174
|
if (registeredFiles.findIndex(rfile => rfile.id === file.id) < 0) {
|
|
171
175
|
this.pushFile({
|
|
@@ -186,7 +190,9 @@ export class OnemrvaMatFileUploadStore extends ComponentStore {
|
|
|
186
190
|
this.deleteFile = this.effect((file$) => {
|
|
187
191
|
return file$.pipe(tap(() => {
|
|
188
192
|
this.clearFileUploadError();
|
|
189
|
-
}), withLatestFrom(this.files$), map(this.fn), mergeMap((file) => this.fileUploadService.deleteFile(file.id).pipe(
|
|
193
|
+
}), withLatestFrom(this.files$), map(this.fn), mergeMap((file) => this.fileUploadService.deleteFile(file.id).pipe(
|
|
194
|
+
//take(1),
|
|
195
|
+
tap(() => {
|
|
190
196
|
this.remove(file);
|
|
191
197
|
}), catchError(() => {
|
|
192
198
|
this.setFail({
|
|
@@ -250,7 +256,7 @@ export class OnemrvaMatFileUploadStore extends ComponentStore {
|
|
|
250
256
|
this.setFileUploadError(x.message.replace('ERROR:', '').trim());
|
|
251
257
|
else
|
|
252
258
|
this.clearFileUploadError();
|
|
253
|
-
}), filter(x => !x.message.startsWith('ERROR'))
|
|
259
|
+
}), filter(x => !x.message.startsWith('ERROR')));
|
|
254
260
|
};
|
|
255
261
|
this.loadStep = (file) => {
|
|
256
262
|
if (file.color === OnemrvaMatColor.WARN)
|
|
@@ -310,4 +316,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
310
316
|
type: Inject,
|
|
311
317
|
args: [CUSTOM_VALIDATION_FN]
|
|
312
318
|
}] }] });
|
|
313
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lbXJ2YS1tYXQtZmlsZS11cGxvYWQuc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vbWF0LWZpbGUtdXBsb2FkL3NyYy9vbmVtcnZhLW1hdC1maWxlLXVwbG9hZC5zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RCxPQUFPLEVBQ0wsVUFBVSxFQUNWLE1BQU0sRUFDTixRQUFRLEVBQ1IsUUFBUSxFQUNSLEdBQUcsRUFDSCxLQUFLLEVBQ0wsUUFBUSxFQUVSLEVBQUUsRUFDRixTQUFTLEVBQ1QsSUFBSSxFQUNKLFNBQVMsRUFDVCxHQUFHLEVBQ0gsUUFBUSxFQUNSLGNBQWMsR0FDZixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFDTCxhQUFhLEdBR2QsTUFBTSw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQWEsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7O0FBZXJFLE1BQU0sVUFBVSxHQUFnQjtJQUM5QixNQUFNLEVBQUUsRUFBRTtJQUNWLE1BQU0sRUFBRSxFQUFFO0lBQ1YsV0FBVyxFQUFFLENBQUM7SUFDZCxlQUFlLEVBQUUsRUFBRTtJQUNuQixLQUFLLEVBQUU7UUFDTCxJQUFJLEVBQUUsTUFBTTtLQUNiO0NBQ0YsQ0FBQztBQU1GLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLElBQUksY0FBYyxDQUNwRCwrQkFBK0IsQ0FDaEMsQ0FBQztBQUdGLE1BQU0sT0FBTyx5QkFDWCxTQUFRLGNBQTJCO0lBU25DLFlBQ1UsaUJBQThDLEVBQzlD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b2tlbiwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudFN0b3JlIH0gZnJvbSAnQG5ncngvY29tcG9uZW50LXN0b3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7XG4gIGNhdGNoRXJyb3IsXG4gIGZpbHRlcixcbiAgZm9ya0pvaW4sXG4gIGludGVydmFsLFxuICBtYXAsXG4gIG1lcmdlLFxuICBtZXJnZU1hcCxcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG4gIHN3aXRjaE1hcCxcbiAgdGFrZSxcbiAgdGFrZVdoaWxlLFxuICB0YXAsXG4gIHRocm90dGxlLFxuICB3aXRoTGF0ZXN0RnJvbSxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBPbmVtcnZhTWF0RmlsZVVwbG9hZFNlcnZpY2UgfSBmcm9tICcuL29uZW1ydmEtbWF0LWZpbGUtdXBsb2FkLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgZm9ybWF0dGVkU2l6ZSxcbiAgUHJvZ3Jlc3NGaWxlLFxuICBSZWZlcmVuY2VkUHJvZ3Jlc3NGaWxlLFxufSBmcm9tICcuL21vZGVscy9wcm9ncmVzcy1maWxlLm1vZGVsJztcbmltcG9ydCB7IEh0dHBFdmVudCwgSHR0cEV2ZW50VHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9uZW1ydmFNYXRGaWxlVXBsb2FkU3RvcmVJdGYgfSBmcm9tICcuL29uZW1ydmEtbWF0LWZpbGUtdXBsb2FkLWl0Zi5zdG9yZSc7XG5pbXBvcnQgeyBPbmVtcnZhTWF0Q29sb3IgfSBmcm9tICdAb25lbXJ2YXB1YmxpYy9kZXNpZ24tc3lzdGVtL3V0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBGaWxlVXBsb2FkU3RvcmVFdmVudCB7XG4gIHR5cGU6IHN0cmluZztcbiAgcGF5bG9hZD86IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGxvYWRTdGF0ZSB7XG4gIHVwbG9hZDogUmVmZXJlbmNlZFByb2dyZXNzRmlsZVtdO1xuICBhY2NlcHQ6IHN0cmluZ1tdO1xuICBtYXhGaWxlU2l6ZTogbnVtYmVyO1xuICBmaWxlVXBsb2FkRXJyb3I6IHN0cmluZztcbiAgZXZlbnQ6IEZpbGVVcGxvYWRTdG9yZUV2ZW50O1xufVxuXG5jb25zdCBJTklUX1NUQVRFOiBVcGxvYWRTdGF0ZSA9IHtcbiAgdXBsb2FkOiBbXSxcbiAgYWNjZXB0OiBbXSxcbiAgbWF4RmlsZVNpemU6IDAsXG4gIGZpbGVVcGxvYWRFcnJvcjogJycsXG4gIGV2ZW50OiB7XG4gICAgdHlwZTogJ0lOSVQnLFxuICB9LFxufTtcblxuZXhwb3J0IHR5cGUgQ3VzdG9tVmFsaWRhdGlvbkZuID0gKFxuICBpbnB1dDogW1JlZmVyZW5jZWRQcm9ncmVzc0ZpbGUsIFJlZmVyZW5jZWRQcm9ncmVzc0ZpbGVbXV0sXG4pID0+IFJlZmVyZW5jZWRQcm9ncmVzc0ZpbGU7XG5cbmV4cG9ydCBjb25zdCBDVVNUT01fVkFMSURBVElPTl9GTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxDdXN0b21WYWxpZGF0aW9uRm4+KFxuICAneDEsIHgyID0gKC1iIC0rIHNxcnQocmhvKSkvMmEnLFxuKTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE9uZW1ydmFNYXRGaWxlVXBsb2FkU3RvcmVcbiAgZXh0ZW5kcyBDb21wb25lbnRTdG9yZTxVcGxvYWRTdGF0ZT5cbiAgaW1wbGVtZW50cyBPbmVtcnZhTWF0RmlsZVVwbG9hZFN0b3JlSXRmXG57XG4gIHByaXZhdGUgZm46IEN1c3RvbVZhbGlkYXRpb25GbiA9IChcbiAgICB4OiBbUmVmZXJlbmNlZFByb2dyZXNzRmlsZSwgUmVmZXJlbmNlZFByb2dyZXNzRmlsZVtdXSxcbiAgKSA9PiB7XG4gICAgcmV0dXJuIHhbMF07XG4gIH07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmaWxlVXBsb2FkU2VydmljZTogT25lbXJ2YU1hdEZpbGVVcGxvYWRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBJbmplY3QoQ1VTVE9NX1ZBTElEQVRJT05fRk4pXG4gICAgcHVibGljIGN1c3RvbVZhbGlkYXRpb25GbjogQ3VzdG9tVmFsaWRhdGlvbkZuLFxuICApIHtcbiAgICBzdXBlcihJTklUX1NUQVRFKTtcbiAgICBpZiAoY3VzdG9tVmFsaWRhdGlvbkZuKSB0aGlzLmZuID0gY3VzdG9tVmFsaWRhdGlvbkZuO1xuICB9XG5cbiAgLypcbiAgICogVSBQIEQgQSBUIEUgUiBTXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2V0QWNjZXB0ID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgYWNjZXB0OiBzdHJpbmdbXSkgPT4gKHtcbiAgICAuLi5zdGF0ZSxcbiAgICBhY2NlcHQsXG4gICAgZXZlbnQ6IHtcbiAgICAgIHR5cGU6ICdzZXRBY2NlcHQnLFxuICAgICAgcGF5bG9hZDogYWNjZXB0LFxuICAgIH0sXG4gIH0pKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgc2V0TWF4RmlsZVNpemUgPSB0aGlzLnVwZGF0ZXIoXG4gICAgKHN0YXRlLCBtYXhGaWxlU2l6ZTogbnVtYmVyKSA9PiAoe1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBtYXhGaWxlU2l6ZSxcbiAgICAgIGV2ZW50OiB7XG4gICAgICAgIHR5cGU6ICdzZXRNYXhGaWxlU2l6ZScsXG4gICAgICAgIHBheWxvYWQ6IG1heEZpbGVTaXplLFxuICAgICAgfSxcbiAgICB9KSxcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGVtcHR5TGlzdCA9IHRoaXMudXBkYXRlcihzdGF0ZSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgdXBsb2FkOiBbXSxcbiAgICAgIGV2ZW50OiB7XG4gICAgICAgIHR5cGU6ICdlbXB0eUxpc3QnLFxuICAgICAgfSxcbiAgICB9O1xuICB9KTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHB1c2hGaWxlID0gdGhpcy51cGRhdGVyKFxuICAgIChzdGF0ZSwgcGF5bG9hZDogUmVmZXJlbmNlZFByb2dyZXNzRmlsZSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHVwbG9hZDogWy4uLnN0YXRlLnVwbG9hZCwgeyAuLi5wYXlsb2FkIH1dLFxuICAgICAgICBldmVudDoge1xuICAgICAgICAgIHR5cGU6ICdwdXNoRmlsZScsXG4gICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfSxcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgc2V0RGF0YSA9IHRoaXMudXBkYXRlcihcbiAgICAoc3RhdGUsIHBheWxvYWQ6IHsgcmVmOiBzeW1ib2w7IGRhdGE6IGFueSB9KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgdXBsb2FkOiBzdGF0ZS51cGxvYWQubWFwKChmaWxlOiBSZWZlcmVuY2VkUHJvZ3Jlc3NGaWxlKSA9PlxuICAgICAgICAgIGZpbGUucmVmID09PSBwYXlsb2FkLnJlZiA/IHsgLi4uZmlsZSwgZGF0YTogcGF5bG9hZC5kYXRhIH0gOiBmaWxlLFxuICAgICAgICApLFxuICAgICAgICBldmVudDoge1xuICAgICAgICAgIHR5cGU6ICdzZXREYXRhJyxcbiAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9LFxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2V0U3VjY2VzcyA9IHRoaXMudXBkYXRlcihcbiAgICAoc3RhdGUsIHBheWxvYWQ6IHsgcmVmOiBzeW1ib2w7IGJvZHk6IGFueSB9KSA9PiB7XG4gICAgICBjb25zdCBuZXdGaWxlID0ge1xuICAgICAgICAuLi5zdGF0ZS51cGxvYWQuZmluZChmID0+IGYucmVmID09PSBwYXlsb2FkLnJlZiksXG4gICAgICAgIC4uLnBheWxvYWQuYm9keSxcbiAgICAgICAgY29sb3I6ICdzdWNjZXNzJyxcbiAgICAgICAgcHJvZ3Jlc3M6IDEwMCxcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICB1cGxvYWQ6IHN0YXRlLnVwbG9hZC5tYXAoZmlsZSA9PlxuICAgICAgICAgIGZpbGUucmVmID09PSBwYXlsb2FkLnJlZiA/IG5ld0ZpbGUgOiBmaWxlLFxuICAgICAgICApLFxuICAgICAgICBldmVudDoge1xuICAgICAgICAgIHR5cGU6ICdzZXREYXRhJyxcbiAgICAgICAgICBwYXlsb2FkOiBuZXdGaWxlLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9LFxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2V0RmFpbCA9IHRoaXMudXBkYXRlcihcbiAgICAoXG4gICAgICBzdGF0ZSxcbiAgICAgIHBheWxvYWQ6IHsgcmVmOiBzeW1ib2w7IG1lc3NhZ2U6IHN0cmluZzsgY29sb3I6IE9uZW1ydmFNYXRDb2xvciB9LFxuICAgICkgPT4gKHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgdXBsb2FkOiBzdGF0ZS51cGxvYWQubWFwKGZpbGUgPT5cbiAgICAgICAgZmlsZS5yZWYgPT09IHBheWxvYWQucmVmXG4gICAgICAgICAgPyB7IC4uLmZpbGUsIG1lc3NhZ2U6IHBheWxvYWQubWVzc2FnZSwgY29sb3I6IHBheWxvYWQuY29sb3IgfVxuICAgICAgICAgIDogZmlsZSxcbiAgICAgICksXG4gICAgICBldmVudDoge1xuICAgICAgICB0eXBlOiAnc2V0RmFpbCcsXG4gICAgICAgIHBheWxvYWQsXG4gICAgICB9LFxuICAgIH0pLFxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2V0UHJvZ3Jlc3MgPSB0aGlzLnVwZGF0ZXIoXG4gICAgKHN0YXRlLCBwYXlsb2FkOiB7IHJlZjogc3ltYm9sOyBwcm9ncmVzczogbnVtYmVyIH0pID0+ICh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHVwbG9hZDogc3RhdGUudXBsb2FkLm1hcChmaWxlID0+XG4gICAgICAgIGZpbGUucmVmID09PSBwYXlsb2FkLnJlZlxuICAgICAgICAgID8geyAuLi5maWxlLCBwcm9ncmVzczogcGF5bG9hZC5wcm9ncmVzcyB9XG4gICAgICAgICAgOiBmaWxlLFxuICAgICAgKSxcbiAgICAgIGV2ZW50OiB7XG4gICAgICAgIHR5cGU6ICdzZXRQcm9ncmVzcycsXG4gICAgICAgIHBheWxvYWQsXG4gICAgICB9LFxuICAgIH0pLFxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVzZXQgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCByZWY6IHN5bWJvbCkgPT4gKHtcbiAgICAuLi5zdGF0ZSxcbiAgICB1cGxvYWQ6IHN0YXRlLnVwbG9hZC5tYXAoZmlsZSA9PlxuICAgICAgZmlsZS5yZWYgPT09IHJlZlxuICAgICAgICA/IHsgLi4uZmlsZSwgcHJvZ3Jlc3M6IDAsIG1lc3NhZ2U6ICcnLCBjb2xvcjogJycgfVxuICAgICAgICA6IGZpbGUsXG4gICAgKSxcbiAgICBldmVudDoge1xuICAgICAgdHlwZTogJ3Jlc2V0JyxcbiAgICAgIHBheWxvYWQ6IHJlZixcbiAgICB9LFxuICB9KSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSByZW1vdmUgPSB0aGlzLnVwZGF0ZXIoXG4gICAgKHN0YXRlLCBwYXlsb2FkOiBSZWZlcmVuY2VkUHJvZ3Jlc3NGaWxlKSA9PiAoe1xuICAgICAgLi4uc3RhdGUsXG4gICAgICB1cGxvYWQ6IHN0YXRlLnVwbG9hZC5maWx0ZXIoZiA9PiBmLnJlZiAhPT0gcGF5bG9hZC5yZWYpLFxuICAgICAgZXZlbnQ6IHtcbiAgICAgICAgdHlwZTogJ3JlbW92ZScsXG4gICAgICAgIHBheWxvYWQsXG4gICAgICB9LFxuICAgIH0pLFxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZW5hYmxlUHJvZ3Jlc3NCYXIgPSB0aGlzLnVwZGF0ZXIoc3RhdGUgPT4gKHtcbiAgICAuLi5zdGF0ZSxcbiAgICB1cGxvYWQ6IHN0YXRlLnVwbG9hZC5tYXAoZmlsZSA9PiAoeyAuLi5maWxlLCBlbmFibGVQcm9ncmVzc0JhcjogdHJ1ZSB9KSksXG4gICAgZXZlbnQ6IHtcbiAgICAgIHR5cGU6ICdlbmFibGVQcm9ncmVzc0JhcicsXG4gICAgfSxcbiAgfSkpO1xuXG4gIHB1YmxpYyByZWFkb25seSBzZXRGaWxlVXBsb2FkRXJyb3IgPSB0aGlzLnVwZGF0ZXIoXG4gICAgKHN0YXRlLCBmaWxlVXBsb2FkRXJyb3I6IHN0cmluZykgPT4gKHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgZmlsZVVwbG9hZEVycm9yLFxuICAgICAgZXZlbnQ6IHtcbiAgICAgICAgdHlwZTogJ3NldEZpbGVVcGxvYWRFcnJvcicsXG4gICAgICAgIHBheWxvYWQ6IGZpbGVVcGxvYWRFcnJvcixcbiAgICAgIH0sXG4gICAgfSksXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNsZWFyRmlsZVVwbG9hZEVycm9yID0gdGhpcy51cGRhdGVyKHN0YXRlID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgZmlsZVVwbG9hZEVycm9yOiAnJyxcbiAgICBldmVudDoge1xuICAgICAgdHlwZTogJ2NsZWFyRmlsZVVwbG9hZEVycm9yJyxcbiAgICB9LFxuICB9KSk7XG5cbiAgLypcbiAgICogUyBFIEwgRSBDIFQgTyBSIFNcbiAgICovXG4gIHJlYWRvbmx5IGZpbGVzJCA9IHRoaXMuc2VsZWN0KHN0YXRlID0+IHN0YXRlLnVwbG9hZCk7XG4gIHJlYWRvbmx5IGFjY2VwdCQgPSB0aGlzLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS5hY2NlcHQpO1xuICByZWFkb25seSBldmVudCQgPSB0aGlzLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS5ldmVudCk7XG4gIHJlYWRvbmx5IG1heEZpbGVTaXplJCA9IHRoaXMuc2VsZWN0KHN0YXRlID0+IHN0YXRlLm1heEZpbGVTaXplKTtcbiAgcmVhZG9ubHkgZmlsZVVwbG9hZEVycm9yJCA9IHRoaXMuc2VsZWN0KHN0YXRlID0+IHN0YXRlLmZpbGVVcGxvYWRFcnJvcik7XG5cbiAgLypcbiAgICogQSBDIFQgSSBPIE4gUyAgIC8gICBFIEYgRiBFIEMgVCBTXG4gICAqL1xuICByZWFkb25seSBsaXN0VXBsb2FkZWRGaWxlcyA9IHRoaXMuZWZmZWN0KChpbnB1dHMkOiBPYnNlcnZhYmxlPGFueT4pID0+IHtcbiAgICByZXR1cm4gaW5wdXRzJC5waXBlKFxuICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgdGhpcy5lbXB0eUxpc3QoKTtcbiAgICAgIH0pLFxuICAgICAgbWVyZ2VNYXAoKGlucHV0czogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbGVVcGxvYWRTZXJ2aWNlLmxpc3RVcGxvYWRlZEZpbGVzKGlucHV0cykucGlwZShcbiAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuZmlsZXMkKSxcbiAgICAgICAgICB0YXAoKFtuZXdmaWxlcywgcmVnaXN0ZXJlZEZpbGVzXSkgPT4ge1xuICAgICAgICAgICAgbmV3ZmlsZXMuZm9yRWFjaChmaWxlID0+IHtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHJlZ2lzdGVyZWRGaWxlcy5maW5kSW5kZXgocmZpbGUgPT4gcmZpbGUuaWQgPT09IGZpbGUuaWQpIDwgMFxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnB1c2hGaWxlKHtcbiAgICAgICAgICAgICAgICAgIC4uLmZpbGUsXG4gICAgICAgICAgICAgICAgICBjb2xvcjogJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgICAgICAgcHJvZ3Jlc3M6IDEwMCxcbiAgICAgICAgICAgICAgICAgIHJlZjogU3ltYm9sKCdILnBzaSA9IEUucHNpJyksXG4gICAgICAgICAgICAgICAgICBuYW1lOiBmaWxlIS5uYW1lLFxuICAgICAgICAgICAgICAgICAgbGFzdE1vZGlmaWVkOiBmaWxlIS5sYXN0TW9kaWZpZWQsXG4gICAgICAgICAgICAgICAgICBzaXplOiBmaWxlIS5zaXplLFxuICAgICAgICAgICAgICAgICAgdHlwZTogZmlsZSEudHlwZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZihbXSkpLFxuICAgICAgICApO1xuICAgICAgfSksXG4gICAgKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgZGVsZXRlRmlsZSA9IHRoaXMuZWZmZWN0KFxuICAgIChmaWxlJDogT2JzZXJ2YWJsZTxSZWZlcmVuY2VkUHJvZ3Jlc3NGaWxlPikgPT4ge1xuICAgICAgcmV0dXJuIGZpbGUkLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jbGVhckZpbGVVcGxvYWRFcnJvcigpO1xuICAgICAgICB9KSxcbiAgICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5maWxlcyQpLFxuICAgICAgICBtYXAodGhpcy5mbiksXG4gICAgICAgIG1lcmdlTWFwKChmaWxlOiBhbnkpID0+XG4gICAgICAgICAgdGhpcy5maWxlVXBsb2FkU2VydmljZS5kZWxldGVGaWxlKGZpbGUuaWQpLnBpcGUoXG4gICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5yZW1vdmUoZmlsZSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnNldEZhaWwoe1xuICAgICAgICAgICAgICAgIHJlZjogZmlsZS5yZWYsXG4gICAgICAgICAgICAgICAgY29sb3I6IE9uZW1ydmFNYXRDb2xvci5XQVJOLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdmaWxlLnVwbG9hZC5kZWxldGUuZXJyb3InLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfSxcbiAgKTtcblxuICByZWFkb25seSByZW1vdmVGaWxlID0gdGhpcy5lZmZlY3QoXG4gICAgKGZpbGUkOiBPYnNlcnZhYmxlPFJlZmVyZW5jZWRQcm9ncmVzc0ZpbGU+KSA9PiB7XG4gICAgICByZXR1cm4gZmlsZSQucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmNsZWFyRmlsZVVwbG9hZEVycm9yKCk7XG4gICAgICAgIH0pLFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmZpbGVzJCksXG4gICAgICAgIG1hcCh0aGlzLmZuKSxcbiAgICAgICAgdGFwKGZpbGUgPT4ge1xuICAgICAgICAgIHRoaXMucmVtb3ZlKGZpbGUpO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfSxcbiAgKTtcblxuICBwcml2YXRlIHByb2dyZXNzRmlsZUNoZWNrZXIgPSAoZmlsZSQ6IE9ic2VydmFibGU8YW55PikgPT4ge1xuICAgIHJldHVybiBmaWxlJC5waXBlKFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5hY2NlcHQkKSxcbiAgICAgIG1hcCgoW2ZpbGUsIGFjY2VwdF0pID0+IHtcbiAgICAgICAgLy8gU3RlcCAxIC0gQWRkIGEgbmV3IGZpbGUgaW4gdGhlIHZpZXdcbiAgICAgICAgbGV0IGY6IFJlZmVyZW5jZWRQcm9ncmVzc0ZpbGUgPSB7IC4uLmZpbGUgfTtcbiAgICAgICAgaWYgKGZpbGUucmVmID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBmID0ge1xuICAgICAgICAgICAgLi4uZixcbiAgICAgICAgICAgIHJlZjogU3ltYm9sKCd2X3NvdW5kID0gc3FydChnYW1tYS5QIC8gcmhvKScpLFxuICAgICAgICAgICAgbmFtZTogZmlsZSEubmFtZSxcbiAgICAgICAgICAgIGxhc3RNb2RpZmllZDogZmlsZSEubGFzdE1vZGlmaWVkLFxuICAgICAgICAgICAgc2l6ZTogZmlsZSEuc2l6ZSxcbiAgICAgICAgICAgIHR5cGU6IGZpbGUhLnR5cGUsXG4gICAgICAgICAgfTtcbiAgICAgICAgICB0aGlzLnB1c2hGaWxlKGYpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU3RlcCAyIC0gQ2hlY2sgZmlsZSBleHRlbnNpb25cbiAgICAgICAgaWYgKCFhY2NlcHQuaW5jbHVkZXMoZmlsZS5maWxlIS50eXBlKSkge1xuICAgICAgICAgIHRoaXMuc2V0RmFpbCh7XG4gICAgICAgICAgICByZWY6IGYucmVmLFxuICAgICAgICAgICAgY29sb3I6IE9uZW1ydmFNYXRDb2xvci5FUlJPUixcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICAgICAnZmlsZS51cGxvYWQudHlwZS5ub3Quc3VwcG9ydGVkJyxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgLy8gVGhpcyB0cmljayBjb3VwbGVkIHdpdGggdGhlIG5leHQgZmlsdGVyIGlzIHVzZWQgdG8gYXZvaWQgY2F0Y2hFcnJvciwgd2hpY2ggd291bGQgYnJlYWsgdGhlIGVmZmVjdFxuICAgICAgICAgIHJldHVybiB7IC4uLmYsIG1lc3NhZ2U6ICdFUlJPUicgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZjtcbiAgICAgIH0pLFxuICAgICAgZmlsdGVyKHggPT4geC5tZXNzYWdlICE9PSAnRVJST1InKSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMubWF4RmlsZVNpemUkKSxcbiAgICAgIG1hcCgoW3JlZkZpbGUsIG1heEZpbGVTaXplXSkgPT4ge1xuICAgICAgICAvLyBTdGVwIDMgLSBDaGVjayBmaWxlIHNpemVcbiAgICAgICAgaWYgKG1heEZpbGVTaXplICE9PSAwICYmIHJlZkZpbGUuc2l6ZSA+IG1heEZpbGVTaXplKSB7XG4gICAgICAgICAgdGhpcy5zZXRGYWlsKHtcbiAgICAgICAgICAgIHJlZjogcmVmRmlsZS5yZWYsXG4gICAgICAgICAgICBjb2xvcjogT25lbXJ2YU1hdENvbG9yLkVSUk9SLFxuICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2ZpbGUudXBsb2FkLnRvby5iaWcnKSArXG4gICAgICAgICAgICAgICcgJyArXG4gICAgICAgICAgICAgIGZvcm1hdHRlZFNpemUocmVmRmlsZS5zaXplKSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICAvLyBTYW1lIHRyaWNrIGZvciBlcnJvciBtYW5hZ2VtZW50XG4gICAgICAgICAgcmV0dXJuIHsgLi4ucmVmRmlsZSwgbWVzc2FnZTogJ0VSUk9SJyB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZWZGaWxlO1xuICAgICAgfSksXG4gICAgICBmaWx0ZXIoeCA9PiB4Lm1lc3NhZ2UgIT09ICdFUlJPUicpLFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5maWxlcyQpLFxuICAgICAgbWFwKHRoaXMuZm4pLCAvLyBGb3IgY3VzdG9tIHZhbGlkYXRpb25zXG4gICAgICB0YXAoeCA9PiB7XG4gICAgICAgIGlmICghIXgubWVzc2FnZSAmJiB4Lm1lc3NhZ2Uuc3RhcnRzV2l0aCgnRVJST1I6JykpXG4gICAgICAgICAgdGhpcy5zZXRGaWxlVXBsb2FkRXJyb3IoeC5tZXNzYWdlLnJlcGxhY2UoJ0VSUk9SOicsICcnKS50cmltKCkpO1xuICAgICAgICBlbHNlIHRoaXMuY2xlYXJGaWxlVXBsb2FkRXJyb3IoKTtcbiAgICAgIH0pLFxuICAgICAgZmlsdGVyKHggPT4gIXgubWVzc2FnZS5zdGFydHNXaXRoKCdFUlJPUicpKSxcbiAgICAgIHRha2UoMSksXG4gICAgKTtcbiAgfTtcblxuICBwcml2YXRlIGxvYWRTdGVwID0gKGZpbGU6IGFueSkgPT4ge1xuICAgIGlmIChmaWxlLmNvbG9yID09PSBPbmVtcnZhTWF0Q29sb3IuV0FSTikgdGhpcy5yZXNldChmaWxlLnJlZik7XG5cbiAgICB0aGlzLmVuYWJsZVByb2dyZXNzQmFyKCk7XG5cbiAgICByZXR1cm4gdGhpcy5maWxlVXBsb2FkU2VydmljZS51cGxvYWQoZmlsZSkucGlwZShcbiAgICAgIHRocm90dGxlKCgpID0+IGludGVydmFsKDIwMCksIHsgbGVhZGluZzogdHJ1ZSwgdHJhaWxpbmc6IHRydWUgfSksXG4gICAgICB0YXAoKGV2ZW50OiBIdHRwRXZlbnQ8YW55PikgPT4ge1xuICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5VcGxvYWRQcm9ncmVzcykge1xuICAgICAgICAgIHRoaXMuc2V0UHJvZ3Jlc3Moe1xuICAgICAgICAgICAgcmVmOiBmaWxlLnJlZixcbiAgICAgICAgICAgIHByb2dyZXNzOiBNYXRoLnJvdW5kKCgxMDAgKiBldmVudC5sb2FkZWQpIC8gZXZlbnQudG90YWwhKSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlKSB7XG4gICAgICAgICAgdGhpcy5zZXRTdWNjZXNzKHsgcmVmOiBmaWxlLnJlZiwgYm9keTogZXZlbnQuYm9keSB9KTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICB0YWtlV2hpbGUoXG4gICAgICAgIChldmVudDogSHR0cEV2ZW50PGFueT4pID0+IGV2ZW50LnR5cGUgPT09IEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3MsXG4gICAgICApLFxuICAgICAgY2F0Y2hFcnJvcigoKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0RmFpbCh7XG4gICAgICAgICAgcmVmOiBmaWxlLnJlZixcbiAgICAgICAgICBjb2xvcjogT25lbXJ2YU1hdENvbG9yLldBUk4sXG4gICAgICAgICAgbWVzc2FnZTogJ2ZpbGUudXBsb2FkLnJldHJ5LmVycm9yJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEZvciBhZGRpbmcgb25lIGZpbGUgcGFuZWwgKGNyZWF0aW9uIG9mIGZpbGUgcGFuZWwgcmVmZXJlbmNlIHNraXBwZWQgaWYgYWxyZWFkeSBjcmVhdGVkKSBhdCBhIHRpbWUuXG4gICAqIFVwbG9hZCB0byBCRSBub3QgdHJpZ2dlcmVkXG4gICAqL1xuICByZWFkb25seSBhZGRGb3JQb3RlbnRpYWxVcGxvYWQgPSB0aGlzLmVmZmVjdChcbiAgICAoZmlsZSQ6IE9ic2VydmFibGU8UHJvZ3Jlc3NGaWxlPikgPT4gdGhpcy5wcm9ncmVzc0ZpbGVDaGVja2VyKGZpbGUkKSxcbiAgKTtcblxuICAvKipcbiAgICogRm9yIGFkZGluZyBhbiBhcnJheSBvZiBmaWxlIHBhbmVscyAoY3JlYXRpb24gb2YgZmlsZSBwYW5lbHMgcmVmZXJlbmNlIHNraXBwZWQgaWYgYWxyZWFkeSBjcmVhdGVkKS5cbiAgICogVXBsb2FkcyB0byBCRSBub3QgdHJpZ2dlcmVkXG4gICAqL1xuICByZWFkb25seSBhZGRTZXZlcmFsRm9yUG90ZW50aWFsVXBsb2FkID0gdGhpcy5lZmZlY3QoXG4gICAgKGZpbGVzJDogT2JzZXJ2YWJsZTxQcm9ncmVzc0ZpbGVbXT4pID0+XG4gICAgICBmaWxlcyQucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKGZpbGVzID0+XG4gICAgICAgICAgZm9ya0pvaW4oZmlsZXMubWFwKGZpbGUgPT4gdGhpcy5wcm9ncmVzc0ZpbGVDaGVja2VyKG9mKGZpbGUpKSkpLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgKTtcblxuICAvKipcbiAgICogRm9yIGFkZGluZyBhIGZpbGUgcGFuZWwgKGNyZWF0aW9uIG9mIGZpbGUgcGFuZWxzIHJlZmVyZW5jZSBza2lwcGVkIGlmIGFscmVhZHkgY3JlYXRlZCkgdGhlbiB1cGxvYWRpbmcgaXRcbiAgICovXG4gIHJlYWRvbmx5IHVwbG9hZEZpbGUgPSB0aGlzLmVmZmVjdCgoZmlsZSQ6IE9ic2VydmFibGU8UHJvZ3Jlc3NGaWxlPikgPT4ge1xuICAgIHJldHVybiB0aGlzLnByb2dyZXNzRmlsZUNoZWNrZXIoZmlsZSQpLnBpcGUobWVyZ2VNYXAodGhpcy5sb2FkU3RlcCkpO1xuICB9KTtcblxuICByZWFkb25seSByZXRyeUZpbGUgPSB0aGlzLmVmZmVjdChcbiAgICAoZmlsZSQ6IE9ic2VydmFibGU8UmVmZXJlbmNlZFByb2dyZXNzRmlsZT4pID0+XG4gICAgICB0aGlzLnByb2dyZXNzRmlsZUNoZWNrZXIoZmlsZSQpLnBpcGUobWVyZ2VNYXAodGhpcy5sb2FkU3RlcCkpLFxuICApO1xuXG4gIC8qKlxuICAgKiBGb3IgYWRkaW5nIHNldmVyYWwgZmlsZSBwYW5lbHMgKGNyZWF0aW9uIG9mIGZpbGUgcGFuZWxzIHJlZmVyZW5jZSBza2lwcGVkIGlmIGFscmVhZHkgY3JlYXRlZCkgdGhlbiB1cGxvYWRpbmcgdGhlbVxuICAgKi9cbiAgcmVhZG9ubHkgdXBsb2FkRmlsZXMgPSB0aGlzLmVmZmVjdCgoZmlsZXMkOiBPYnNlcnZhYmxlPFByb2dyZXNzRmlsZVtdPikgPT5cbiAgICBmaWxlcyQucGlwZShcbiAgICAgIHN3aXRjaE1hcChmaWxlcyA9PlxuICAgICAgICBtZXJnZShcbiAgICAgICAgICAuLi5maWxlcy5tYXAoZmlsZSA9PlxuICAgICAgICAgICAgdGhpcy5wcm9ncmVzc0ZpbGVDaGVja2VyKG9mKGZpbGUpKS5waXBlKHN3aXRjaE1hcCh0aGlzLmxvYWRTdGVwKSksXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgKSxcbiAgKTtcbn1cbiJdfQ==
|
|
319
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lbXJ2YS1tYXQtZmlsZS11cGxvYWQuc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vbWF0LWZpbGUtdXBsb2FkL3NyYy9vbmVtcnZhLW1hdC1maWxlLXVwbG9hZC5zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RCxPQUFPLEVBQ0wsVUFBVSxFQUNWLE1BQU0sRUFDTixRQUFRLEVBQ1IsUUFBUSxFQUNSLEdBQUcsRUFDSCxLQUFLLEVBQ0wsUUFBUSxFQUVSLEVBQUUsRUFDRixTQUFTLEVBRVQsU0FBUyxFQUNULEdBQUcsRUFDSCxRQUFRLEVBQ1IsY0FBYyxHQUNmLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUNMLGFBQWEsR0FHZCxNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sRUFBYSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7QUFlckUsTUFBTSxVQUFVLEdBQWdCO0lBQzlCLE1BQU0sRUFBRSxFQUFFO0lBQ1YsTUFBTSxFQUFFLEVBQUU7SUFDVixXQUFXLEVBQUUsQ0FBQztJQUNkLGVBQWUsRUFBRSxFQUFFO0lBQ25CLEtBQUssRUFBRTtRQUNMLElBQUksRUFBRSxNQUFNO0tBQ2I7Q0FDRixDQUFDO0FBTUYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxjQUFjLENBQ3BELCtCQUErQixDQUNoQyxDQUFDO0FBR0YsTUFBTSxPQUFPLHlCQUNYLFNBQVEsY0FBMkI7SUFTbkMsWUFDVSxpQkFBOEMsRUFDOUMsZ0JBQWtDLEVB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dGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRTdG9yZSB9IGZyb20gJ0BuZ3J4L2NvbXBvbmVudC1zdG9yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge1xuICBjYXRjaEVycm9yLFxuICBmaWx0ZXIsXG4gIGZvcmtKb2luLFxuICBpbnRlcnZhbCxcbiAgbWFwLFxuICBtZXJnZSxcbiAgbWVyZ2VNYXAsXG4gIE9ic2VydmFibGUsXG4gIG9mLFxuICBzd2l0Y2hNYXAsXG4gIHRha2UsXG4gIHRha2VXaGlsZSxcbiAgdGFwLFxuICB0aHJvdHRsZSxcbiAgd2l0aExhdGVzdEZyb20sXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgT25lbXJ2YU1hdEZpbGVVcGxvYWRTZXJ2aWNlIH0gZnJvbSAnLi9vbmVtcnZhLW1hdC1maWxlLXVwbG9hZC5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIGZvcm1hdHRlZFNpemUsXG4gIFByb2dyZXNzRmlsZSxcbiAgUmVmZXJlbmNlZFByb2dyZXNzRmlsZSxcbn0gZnJvbSAnLi9tb2RlbHMvcHJvZ3Jlc3MtZmlsZS5tb2RlbCc7XG5pbXBvcnQgeyBIdHRwRXZlbnQsIEh0dHBFdmVudFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPbmVtcnZhTWF0RmlsZVVwbG9hZFN0b3JlSXRmIH0gZnJvbSAnLi9vbmVtcnZhLW1hdC1maWxlLXVwbG9hZC1pdGYuc3RvcmUnO1xuaW1wb3J0IHsgT25lbXJ2YU1hdENvbG9yIH0gZnJvbSAnQG9uZW1ydmFwdWJsaWMvZGVzaWduLXN5c3RlbS91dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZVVwbG9hZFN0b3JlRXZlbnQge1xuICB0eXBlOiBzdHJpbmc7XG4gIHBheWxvYWQ/OiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBsb2FkU3RhdGUge1xuICB1cGxvYWQ6IFJlZmVyZW5jZWRQcm9ncmVzc0ZpbGVbXTtcbiAgYWNjZXB0OiBzdHJpbmdbXTtcbiAgbWF4RmlsZVNpemU6IG51bWJlcjtcbiAgZmlsZVVwbG9hZEVycm9yOiBzdHJpbmc7XG4gIGV2ZW50OiBGaWxlVXBsb2FkU3RvcmVFdmVudDtcbn1cblxuY29uc3QgSU5JVF9TVEFURTogVXBsb2FkU3RhdGUgPSB7XG4gIHVwbG9hZDogW10sXG4gIGFjY2VwdDogW10sXG4gIG1heEZpbGVTaXplOiAwLFxuICBmaWxlVXBsb2FkRXJyb3I6ICcnLFxuICBldmVudDoge1xuICAgIHR5cGU6ICdJTklUJyxcbiAgfSxcbn07XG5cbmV4cG9ydCB0eXBlIEN1c3RvbVZhbGlkYXRpb25GbiA9IChcbiAgaW5wdXQ6IFtSZWZlcmVuY2VkUHJvZ3Jlc3NGaWxlLCBSZWZlcmVuY2VkUHJvZ3Jlc3NGaWxlW11dLFxuKSA9PiBSZWZlcmVuY2VkUHJvZ3Jlc3NGaWxlO1xuXG5leHBvcnQgY29uc3QgQ1VTVE9NX1ZBTElEQVRJT05fRk4gPSBuZXcgSW5qZWN0aW9uVG9rZW48Q3VzdG9tVmFsaWRhdGlvbkZuPihcbiAgJ3gxLCB4MiA9ICgtYiAtKyBzcXJ0KHJobykpLzJhJyxcbik7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBPbmVtcnZhTWF0RmlsZVVwbG9hZFN0b3JlXG4gIGV4dGVuZHMgQ29tcG9uZW50U3RvcmU8VXBsb2FkU3RhdGU+XG4gIGltcGxlbWVudHMgT25lbXJ2YU1hdEZpbGVVcGxvYWRTdG9yZUl0Zlxue1xuICBwcml2YXRlIGZuOiBDdXN0b21WYWxpZGF0aW9uRm4gPSAoXG4gICAgeDogW1JlZmVyZW5jZWRQcm9ncmVzc0ZpbGUsIFJlZmVyZW5jZWRQcm9ncmVzc0ZpbGVbXV0sXG4gICkgPT4ge1xuICAgIHJldHVybiB4WzBdO1xuICB9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmlsZVVwbG9hZFNlcnZpY2U6IE9uZW1ydmFNYXRGaWxlVXBsb2FkU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KENVU1RPTV9WQUxJREFUSU9OX0ZOKVxuICAgIHB1YmxpYyBjdXN0b21WYWxpZGF0aW9uRm46IEN1c3RvbVZhbGlkYXRpb25GbixcbiAgKSB7XG4gICAgc3VwZXIoSU5JVF9TVEFURSk7XG4gICAgaWYgKGN1c3RvbVZhbGlkYXRpb25GbikgdGhpcy5mbiA9IGN1c3RvbVZhbGlkYXRpb25GbjtcbiAgfVxuXG4gIC8qXG4gICAqIFUgUCBEIEEgVCBFIFIgU1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNldEFjY2VwdCA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGFjY2VwdDogc3RyaW5nW10pID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgYWNjZXB0LFxuICAgIGV2ZW50OiB7XG4gICAgICB0eXBlOiAnc2V0QWNjZXB0JyxcbiAgICAgIHBheWxvYWQ6IGFjY2VwdCxcbiAgICB9LFxuICB9KSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHNldE1heEZpbGVTaXplID0gdGhpcy51cGRhdGVyKFxuICAgIChzdGF0ZSwgbWF4RmlsZVNpemU6IG51bWJlcikgPT4gKHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgbWF4RmlsZVNpemUsXG4gICAgICBldmVudDoge1xuICAgICAgICB0eXBlOiAnc2V0TWF4RmlsZVNpemUnLFxuICAgICAgICBwYXlsb2FkOiBtYXhGaWxlU2l6ZSxcbiAgICAgIH0sXG4gICAgfSksXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBlbXB0eUxpc3QgPSB0aGlzLnVwZGF0ZXIoc3RhdGUgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHVwbG9hZDogW10sXG4gICAgICBldmVudDoge1xuICAgICAgICB0eXBlOiAnZW1wdHlMaXN0JyxcbiAgICAgIH0sXG4gICAgfTtcbiAgfSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBwdXNoRmlsZSA9IHRoaXMudXBkYXRlcihcbiAgICAoc3RhdGUsIHBheWxvYWQ6IFJlZmVyZW5jZWRQcm9ncmVzc0ZpbGUpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICB1cGxvYWQ6IFsuLi5zdGF0ZS51cGxvYWQsIHsgLi4ucGF5bG9hZCB9XSxcbiAgICAgICAgZXZlbnQ6IHtcbiAgICAgICAgICB0eXBlOiAncHVzaEZpbGUnLFxuICAgICAgICAgIHBheWxvYWQsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0sXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHNldERhdGEgPSB0aGlzLnVwZGF0ZXIoXG4gICAgKHN0YXRlLCBwYXlsb2FkOiB7IHJlZjogc3ltYm9sOyBkYXRhOiBhbnkgfSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHVwbG9hZDogc3RhdGUudXBsb2FkLm1hcCgoZmlsZTogUmVmZXJlbmNlZFByb2dyZXNzRmlsZSkgPT5cbiAgICAgICAgICBmaWxlLnJlZiA9PT0gcGF5bG9hZC5yZWYgPyB7IC4uLmZpbGUsIGRhdGE6IHBheWxvYWQuZGF0YSB9IDogZmlsZSxcbiAgICAgICAgKSxcbiAgICAgICAgZXZlbnQ6IHtcbiAgICAgICAgICB0eXBlOiAnc2V0RGF0YScsXG4gICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfSxcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHNldFN1Y2Nlc3MgPSB0aGlzLnVwZGF0ZXIoXG4gICAgKHN0YXRlLCBwYXlsb2FkOiB7IHJlZjogc3ltYm9sOyBib2R5OiBhbnkgfSkgPT4ge1xuICAgICAgY29uc3QgbmV3RmlsZSA9IHtcbiAgICAgICAgLi4uc3RhdGUudXBsb2FkLmZpbmQoZiA9PiBmLnJlZiA9PT0gcGF5bG9hZC5yZWYpLFxuICAgICAgICAuLi5wYXlsb2FkLmJvZHksXG4gICAgICAgIGNvbG9yOiAnc3VjY2VzcycsXG4gICAgICAgIHByb2dyZXNzOiAxMDAsXG4gICAgICB9O1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgdXBsb2FkOiBzdGF0ZS51cGxvYWQubWFwKGZpbGUgPT5cbiAgICAgICAgICBmaWxlLnJlZiA9PT0gcGF5bG9hZC5yZWYgPyBuZXdGaWxlIDogZmlsZSxcbiAgICAgICAgKSxcbiAgICAgICAgZXZlbnQ6IHtcbiAgICAgICAgICB0eXBlOiAnc2V0RGF0YScsXG4gICAgICAgICAgcGF5bG9hZDogbmV3RmlsZSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfSxcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHNldEZhaWwgPSB0aGlzLnVwZGF0ZXIoXG4gICAgKFxuICAgICAgc3RhdGUsXG4gICAgICBwYXlsb2FkOiB7IHJlZjogc3ltYm9sOyBtZXNzYWdlOiBzdHJpbmc7IGNvbG9yOiBPbmVtcnZhTWF0Q29sb3IgfSxcbiAgICApID0+ICh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHVwbG9hZDogc3RhdGUudXBsb2FkLm1hcChmaWxlID0+XG4gICAgICAgIGZpbGUucmVmID09PSBwYXlsb2FkLnJlZlxuICAgICAgICAgID8geyAuLi5maWxlLCBtZXNzYWdlOiBwYXlsb2FkLm1lc3NhZ2UsIGNvbG9yOiBwYXlsb2FkLmNvbG9yIH1cbiAgICAgICAgICA6IGZpbGUsXG4gICAgICApLFxuICAgICAgZXZlbnQ6IHtcbiAgICAgICAgdHlwZTogJ3NldEZhaWwnLFxuICAgICAgICBwYXlsb2FkLFxuICAgICAgfSxcbiAgICB9KSxcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHNldFByb2dyZXNzID0gdGhpcy51cGRhdGVyKFxuICAgIChzdGF0ZSwgcGF5bG9hZDogeyByZWY6IHN5bWJvbDsgcHJvZ3Jlc3M6IG51bWJlciB9KSA9PiAoe1xuICAgICAgLi4uc3RhdGUsXG4gICAgICB1cGxvYWQ6IHN0YXRlLnVwbG9hZC5tYXAoZmlsZSA9PlxuICAgICAgICBmaWxlLnJlZiA9PT0gcGF5bG9hZC5yZWZcbiAgICAgICAgICA/IHsgLi4uZmlsZSwgcHJvZ3Jlc3M6IHBheWxvYWQucHJvZ3Jlc3MgfVxuICAgICAgICAgIDogZmlsZSxcbiAgICAgICksXG4gICAgICBldmVudDoge1xuICAgICAgICB0eXBlOiAnc2V0UHJvZ3Jlc3MnLFxuICAgICAgICBwYXlsb2FkLFxuICAgICAgfSxcbiAgICB9KSxcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHJlc2V0ID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgcmVmOiBzeW1ib2wpID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgdXBsb2FkOiBzdGF0ZS51cGxvYWQubWFwKGZpbGUgPT5cbiAgICAgIGZpbGUucmVmID09PSByZWZcbiAgICAgICAgPyB7IC4uLmZpbGUsIHByb2dyZXNzOiAwLCBtZXNzYWdlOiAnJywgY29sb3I6ICcnIH1cbiAgICAgICAgOiBmaWxlLFxuICAgICksXG4gICAgZXZlbnQ6IHtcbiAgICAgIHR5cGU6ICdyZXNldCcsXG4gICAgICBwYXlsb2FkOiByZWYsXG4gICAgfSxcbiAgfSkpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVtb3ZlID0gdGhpcy51cGRhdGVyKFxuICAgIChzdGF0ZSwgcGF5bG9hZDogUmVmZXJlbmNlZFByb2dyZXNzRmlsZSkgPT4gKHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgdXBsb2FkOiBzdGF0ZS51cGxvYWQuZmlsdGVyKGYgPT4gZi5yZWYgIT09IHBheWxvYWQucmVmKSxcbiAgICAgIGV2ZW50OiB7XG4gICAgICAgIHR5cGU6ICdyZW1vdmUnLFxuICAgICAgICBwYXlsb2FkLFxuICAgICAgfSxcbiAgICB9KSxcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGVuYWJsZVByb2dyZXNzQmFyID0gdGhpcy51cGRhdGVyKHN0YXRlID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgdXBsb2FkOiBzdGF0ZS51cGxvYWQubWFwKGZpbGUgPT4gKHsgLi4uZmlsZSwgZW5hYmxlUHJvZ3Jlc3NCYXI6IHRydWUgfSkpLFxuICAgIGV2ZW50OiB7XG4gICAgICB0eXBlOiAnZW5hYmxlUHJvZ3Jlc3NCYXInLFxuICAgIH0sXG4gIH0pKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgc2V0RmlsZVVwbG9hZEVycm9yID0gdGhpcy51cGRhdGVyKFxuICAgIChzdGF0ZSwgZmlsZVVwbG9hZEVycm9yOiBzdHJpbmcpID0+ICh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGZpbGVVcGxvYWRFcnJvcixcbiAgICAgIGV2ZW50OiB7XG4gICAgICAgIHR5cGU6ICdzZXRGaWxlVXBsb2FkRXJyb3InLFxuICAgICAgICBwYXlsb2FkOiBmaWxlVXBsb2FkRXJyb3IsXG4gICAgICB9LFxuICAgIH0pLFxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBjbGVhckZpbGVVcGxvYWRFcnJvciA9IHRoaXMudXBkYXRlcihzdGF0ZSA9PiAoe1xuICAgIC4uLnN0YXRlLFxuICAgIGZpbGVVcGxvYWRFcnJvcjogJycsXG4gICAgZXZlbnQ6IHtcbiAgICAgIHR5cGU6ICdjbGVhckZpbGVVcGxvYWRFcnJvcicsXG4gICAgfSxcbiAgfSkpO1xuXG4gIC8qXG4gICAqIFMgRSBMIEUgQyBUIE8gUiBTXG4gICAqL1xuICByZWFkb25seSBmaWxlcyQgPSB0aGlzLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS51cGxvYWQpO1xuICByZWFkb25seSBhY2NlcHQkID0gdGhpcy5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUuYWNjZXB0KTtcbiAgcmVhZG9ubHkgZXZlbnQkID0gdGhpcy5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUuZXZlbnQpO1xuICByZWFkb25seSBtYXhGaWxlU2l6ZSQgPSB0aGlzLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS5tYXhGaWxlU2l6ZSk7XG4gIHJlYWRvbmx5IGZpbGVVcGxvYWRFcnJvciQgPSB0aGlzLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS5maWxlVXBsb2FkRXJyb3IpO1xuXG4gIC8qXG4gICAqIEEgQyBUIEkgTyBOIFMgICAvICAgRSBGIEYgRSBDIFQgU1xuICAgKi9cbiAgcmVhZG9ubHkgbGlzdFVwbG9hZGVkRmlsZXMgPSB0aGlzLmVmZmVjdCgoaW5wdXRzJDogT2JzZXJ2YWJsZTxhbnk+KSA9PiB7XG4gICAgcmV0dXJuIGlucHV0cyQucGlwZShcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIHRoaXMuZW1wdHlMaXN0KCk7XG4gICAgICB9KSxcbiAgICAgIG1lcmdlTWFwKChpbnB1dHM6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5maWxlVXBsb2FkU2VydmljZS5saXN0VXBsb2FkZWRGaWxlcyhpbnB1dHMpLnBpcGUoXG4gICAgICAgICAgLy90YWtlKDEpLFxuICAgICAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuZmlsZXMkKSxcbiAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgLy8gYWRkZWQgdG8gYXZvaWQgaWRlIGVycm9yc1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIHRhcCgoW25ld2ZpbGVzLCByZWdpc3RlcmVkRmlsZXNdKSA9PiB7XG4gICAgICAgICAgICBuZXdmaWxlcy5mb3JFYWNoKGZpbGUgPT4ge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgcmVnaXN0ZXJlZEZpbGVzLmZpbmRJbmRleChyZmlsZSA9PiByZmlsZS5pZCA9PT0gZmlsZS5pZCkgPCAwXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMucHVzaEZpbGUoe1xuICAgICAgICAgICAgICAgICAgLi4uZmlsZSxcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiAnc3VjY2VzcycsXG4gICAgICAgICAgICAgICAgICBwcm9ncmVzczogMTAwLFxuICAgICAgICAgICAgICAgICAgcmVmOiBTeW1ib2woJ0gucHNpID0gRS5wc2knKSxcbiAgICAgICAgICAgICAgICAgIG5hbWU6IGZpbGUhLm5hbWUsXG4gICAgICAgICAgICAgICAgICBsYXN0TW9kaWZpZWQ6IGZpbGUhLmxhc3RNb2RpZmllZCxcbiAgICAgICAgICAgICAgICAgIHNpemU6IGZpbGUhLnNpemUsXG4gICAgICAgICAgICAgICAgICB0eXBlOiBmaWxlIS50eXBlLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IG9mKFtdKSksXG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICApO1xuICB9KTtcblxuICByZWFkb25seSBkZWxldGVGaWxlID0gdGhpcy5lZmZlY3QoXG4gICAgKGZpbGUkOiBPYnNlcnZhYmxlPFJlZmVyZW5jZWRQcm9ncmVzc0ZpbGU+KSA9PiB7XG4gICAgICByZXR1cm4gZmlsZSQucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmNsZWFyRmlsZVVwbG9hZEVycm9yKCk7XG4gICAgICAgIH0pLFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmZpbGVzJCksXG4gICAgICAgIG1hcCh0aGlzLmZuKSxcbiAgICAgICAgbWVyZ2VNYXAoKGZpbGU6IGFueSkgPT5cbiAgICAgICAgICB0aGlzLmZpbGVVcGxvYWRTZXJ2aWNlLmRlbGV0ZUZpbGUoZmlsZS5pZCkucGlwZShcbiAgICAgICAgICAgIC8vdGFrZSgxKSxcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMucmVtb3ZlKGZpbGUpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5zZXRGYWlsKHtcbiAgICAgICAgICAgICAgICByZWY6IGZpbGUucmVmLFxuICAgICAgICAgICAgICAgIGNvbG9yOiBPbmVtcnZhTWF0Q29sb3IuV0FSTixcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiAnZmlsZS51cGxvYWQuZGVsZXRlLmVycm9yJyxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH0sXG4gICk7XG5cbiAgcmVhZG9ubHkgcmVtb3ZlRmlsZSA9IHRoaXMuZWZmZWN0KFxuICAgIChmaWxlJDogT2JzZXJ2YWJsZTxSZWZlcmVuY2VkUHJvZ3Jlc3NGaWxlPikgPT4ge1xuICAgICAgcmV0dXJuIGZpbGUkLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jbGVhckZpbGVVcGxvYWRFcnJvcigpO1xuICAgICAgICB9KSxcbiAgICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5maWxlcyQpLFxuICAgICAgICBtYXAodGhpcy5mbiksXG4gICAgICAgIHRhcChmaWxlID0+IHtcbiAgICAgICAgICB0aGlzLnJlbW92ZShmaWxlKTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH0sXG4gICk7XG5cbiAgcHJpdmF0ZSBwcm9ncmVzc0ZpbGVDaGVja2VyID0gKGZpbGUkOiBPYnNlcnZhYmxlPGFueT4pID0+IHtcbiAgICByZXR1cm4gZmlsZSQucGlwZShcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuYWNjZXB0JCksXG5cbiAgICAgIG1hcCgoW2ZpbGUsIGFjY2VwdF0pID0+IHtcbiAgICAgICAgLy8gU3RlcCAxIC0gQWRkIGEgbmV3IGZpbGUgaW4gdGhlIHZpZXdcbiAgICAgICAgbGV0IGY6IFJlZmVyZW5jZWRQcm9ncmVzc0ZpbGUgPSB7IC4uLmZpbGUgfTtcbiAgICAgICAgaWYgKGZpbGUucmVmID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBmID0ge1xuICAgICAgICAgICAgLi4uZixcbiAgICAgICAgICAgIHJlZjogU3ltYm9sKCd2X3NvdW5kID0gc3FydChnYW1tYS5QIC8gcmhvKScpLFxuICAgICAgICAgICAgbmFtZTogZmlsZSEubmFtZSxcbiAgICAgICAgICAgIGxhc3RNb2RpZmllZDogZmlsZSEubGFzdE1vZGlmaWVkLFxuICAgICAgICAgICAgc2l6ZTogZmlsZSEuc2l6ZSxcbiAgICAgICAgICAgIHR5cGU6IGZpbGUhLnR5cGUsXG4gICAgICAgICAgfTtcbiAgICAgICAgICB0aGlzLnB1c2hGaWxlKGYpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU3RlcCAyIC0gQ2hlY2sgZmlsZSBleHRlbnNpb25cbiAgICAgICAgaWYgKCFhY2NlcHQuaW5jbHVkZXMoZmlsZS5maWxlIS50eXBlKSkge1xuICAgICAgICAgIHRoaXMuc2V0RmFpbCh7XG4gICAgICAgICAgICByZWY6IGYucmVmLFxuICAgICAgICAgICAgY29sb3I6IE9uZW1ydmFNYXRDb2xvci5FUlJPUixcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICAgICAnZmlsZS51cGxvYWQudHlwZS5ub3Quc3VwcG9ydGVkJyxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgLy8gVGhpcyB0cmljayBjb3VwbGVkIHdpdGggdGhlIG5leHQgZmlsdGVyIGlzIHVzZWQgdG8gYXZvaWQgY2F0Y2hFcnJvciwgd2hpY2ggd291bGQgYnJlYWsgdGhlIGVmZmVjdFxuICAgICAgICAgIHJldHVybiB7IC4uLmYsIG1lc3NhZ2U6ICdFUlJPUicgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZjtcbiAgICAgIH0pLFxuICAgICAgZmlsdGVyKHggPT4geC5tZXNzYWdlICE9PSAnRVJST1InKSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMubWF4RmlsZVNpemUkKSxcblxuICAgICAgbWFwKChbcmVmRmlsZSwgbWF4RmlsZVNpemVdKSA9PiB7XG4gICAgICAgIC8vIFN0ZXAgMyAtIENoZWNrIGZpbGUgc2l6ZVxuICAgICAgICBpZiAobWF4RmlsZVNpemUgIT09IDAgJiYgcmVmRmlsZS5zaXplID4gbWF4RmlsZVNpemUpIHtcbiAgICAgICAgICB0aGlzLnNldEZhaWwoe1xuICAgICAgICAgICAgcmVmOiByZWZGaWxlLnJlZixcbiAgICAgICAgICAgIGNvbG9yOiBPbmVtcnZhTWF0Q29sb3IuRVJST1IsXG4gICAgICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnZmlsZS51cGxvYWQudG9vLmJpZycpICtcbiAgICAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgICAgZm9ybWF0dGVkU2l6ZShyZWZGaWxlLnNpemUpLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIC8vIFNhbWUgdHJpY2sgZm9yIGVycm9yIG1hbmFnZW1lbnRcbiAgICAgICAgICByZXR1cm4geyAuLi5yZWZGaWxlLCBtZXNzYWdlOiAnRVJST1InIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlZkZpbGU7XG4gICAgICB9KSxcbiAgICAgIGZpbHRlcih4ID0+IHgubWVzc2FnZSAhPT0gJ0VSUk9SJyksXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmZpbGVzJCksXG4gICAgICBtYXAodGhpcy5mbiksIC8vIEZvciBjdXN0b20gdmFsaWRhdGlvbnNcbiAgICAgIHRhcCh4ID0+IHtcbiAgICAgICAgaWYgKCEheC5tZXNzYWdlICYmIHgubWVzc2FnZS5zdGFydHNXaXRoKCdFUlJPUjonKSlcbiAgICAgICAgICB0aGlzLnNldEZpbGVVcGxvYWRFcnJvcih4Lm1lc3NhZ2UucmVwbGFjZSgnRVJST1I6JywgJycpLnRyaW0oKSk7XG4gICAgICAgIGVsc2UgdGhpcy5jbGVhckZpbGVVcGxvYWRFcnJvcigpO1xuICAgICAgfSksXG4gICAgICBmaWx0ZXIoeCA9PiAheC5tZXNzYWdlLnN0YXJ0c1dpdGgoJ0VSUk9SJykpLFxuICAgICk7XG4gIH07XG5cbiAgcHJpdmF0ZSBsb2FkU3RlcCA9IChmaWxlOiBhbnkpID0+IHtcbiAgICBpZiAoZmlsZS5jb2xvciA9PT0gT25lbXJ2YU1hdENvbG9yLldBUk4pIHRoaXMucmVzZXQoZmlsZS5yZWYpO1xuXG4gICAgdGhpcy5lbmFibGVQcm9ncmVzc0JhcigpO1xuXG4gICAgcmV0dXJuIHRoaXMuZmlsZVVwbG9hZFNlcnZpY2UudXBsb2FkKGZpbGUpLnBpcGUoXG4gICAgICB0aHJvdHRsZSgoKSA9PiBpbnRlcnZhbCgyMDApLCB7IGxlYWRpbmc6IHRydWUsIHRyYWlsaW5nOiB0cnVlIH0pLFxuICAgICAgdGFwKChldmVudDogSHR0cEV2ZW50PGFueT4pID0+IHtcbiAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09IEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3MpIHtcbiAgICAgICAgICB0aGlzLnNldFByb2dyZXNzKHtcbiAgICAgICAgICAgIHJlZjogZmlsZS5yZWYsXG4gICAgICAgICAgICBwcm9ncmVzczogTWF0aC5yb3VuZCgoMTAwICogZXZlbnQubG9hZGVkKSAvIGV2ZW50LnRvdGFsISksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5SZXNwb25zZSkge1xuICAgICAgICAgIHRoaXMuc2V0U3VjY2Vzcyh7IHJlZjogZmlsZS5yZWYsIGJvZHk6IGV2ZW50LmJvZHkgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgdGFrZVdoaWxlKFxuICAgICAgICAoZXZlbnQ6IEh0dHBFdmVudDxhbnk+KSA9PiBldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzLFxuICAgICAgKSxcbiAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xuICAgICAgICB0aGlzLnNldEZhaWwoe1xuICAgICAgICAgIHJlZjogZmlsZS5yZWYsXG4gICAgICAgICAgY29sb3I6IE9uZW1ydmFNYXRDb2xvci5XQVJOLFxuICAgICAgICAgIG1lc3NhZ2U6ICdmaWxlLnVwbG9hZC5yZXRyeS5lcnJvcicsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICB9KSxcbiAgICApO1xuICB9O1xuXG4gIC8qKlxuICAgKiBGb3IgYWRkaW5nIG9uZSBmaWxlIHBhbmVsIChjcmVhdGlvbiBvZiBmaWxlIHBhbmVsIHJlZmVyZW5jZSBza2lwcGVkIGlmIGFscmVhZHkgY3JlYXRlZCkgYXQgYSB0aW1lLlxuICAgKiBVcGxvYWQgdG8gQkUgbm90IHRyaWdnZXJlZFxuICAgKi9cbiAgcmVhZG9ubHkgYWRkRm9yUG90ZW50aWFsVXBsb2FkID0gdGhpcy5lZmZlY3QoXG4gICAgKGZpbGUkOiBPYnNlcnZhYmxlPFByb2dyZXNzRmlsZT4pID0+IHRoaXMucHJvZ3Jlc3NGaWxlQ2hlY2tlcihmaWxlJCksXG4gICk7XG5cbiAgLyoqXG4gICAqIEZvciBhZGRpbmcgYW4gYXJyYXkgb2YgZmlsZSBwYW5lbHMgKGNyZWF0aW9uIG9mIGZpbGUgcGFuZWxzIHJlZmVyZW5jZSBza2lwcGVkIGlmIGFscmVhZHkgY3JlYXRlZCkuXG4gICAqIFVwbG9hZHMgdG8gQkUgbm90IHRyaWdnZXJlZFxuICAgKi9cbiAgcmVhZG9ubHkgYWRkU2V2ZXJhbEZvclBvdGVudGlhbFVwbG9hZCA9IHRoaXMuZWZmZWN0KFxuICAgIChmaWxlcyQ6IE9ic2VydmFibGU8UHJvZ3Jlc3NGaWxlW10+KSA9PlxuICAgICAgZmlsZXMkLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcChmaWxlcyA9PlxuICAgICAgICAgIGZvcmtKb2luKGZpbGVzLm1hcChmaWxlID0+IHRoaXMucHJvZ3Jlc3NGaWxlQ2hlY2tlcihvZihmaWxlKSkpKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICk7XG5cbiAgLyoqXG4gICAqIEZvciBhZGRpbmcgYSBmaWxlIHBhbmVsIChjcmVhdGlvbiBvZiBmaWxlIHBhbmVscyByZWZlcmVuY2Ugc2tpcHBlZCBpZiBhbHJlYWR5IGNyZWF0ZWQpIHRoZW4gdXBsb2FkaW5nIGl0XG4gICAqL1xuICByZWFkb25seSB1cGxvYWRGaWxlID0gdGhpcy5lZmZlY3QoKGZpbGUkOiBPYnNlcnZhYmxlPFByb2dyZXNzRmlsZT4pID0+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9ncmVzc0ZpbGVDaGVja2VyKGZpbGUkKS5waXBlKG1lcmdlTWFwKHRoaXMubG9hZFN0ZXApKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgcmV0cnlGaWxlID0gdGhpcy5lZmZlY3QoXG4gICAgKGZpbGUkOiBPYnNlcnZhYmxlPFJlZmVyZW5jZWRQcm9ncmVzc0ZpbGU+KSA9PlxuICAgICAgdGhpcy5wcm9ncmVzc0ZpbGVDaGVja2VyKGZpbGUkKS5waXBlKG1lcmdlTWFwKHRoaXMubG9hZFN0ZXApKSxcbiAgKTtcblxuICAvKipcbiAgICogRm9yIGFkZGluZyBzZXZlcmFsIGZpbGUgcGFuZWxzIChjcmVhdGlvbiBvZiBmaWxlIHBhbmVscyByZWZlcmVuY2Ugc2tpcHBlZCBpZiBhbHJlYWR5IGNyZWF0ZWQpIHRoZW4gdXBsb2FkaW5nIHRoZW1cbiAgICovXG4gIHJlYWRvbmx5IHVwbG9hZEZpbGVzID0gdGhpcy5lZmZlY3QoKGZpbGVzJDogT2JzZXJ2YWJsZTxQcm9ncmVzc0ZpbGVbXT4pID0+XG4gICAgZmlsZXMkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoZmlsZXMgPT5cbiAgICAgICAgbWVyZ2UoXG4gICAgICAgICAgLi4uZmlsZXMubWFwKGZpbGUgPT5cbiAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3NGaWxlQ2hlY2tlcihvZihmaWxlKSkucGlwZShzd2l0Y2hNYXAodGhpcy5sb2FkU3RlcCkpLFxuICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICApLFxuICAgICksXG4gICk7XG59XG4iXX0=
|
|
@@ -350,7 +350,11 @@ class OnemrvaMatFileUploadStore extends ComponentStore {
|
|
|
350
350
|
return inputs$.pipe(tap(() => {
|
|
351
351
|
this.emptyList();
|
|
352
352
|
}), mergeMap((inputs) => {
|
|
353
|
-
return this.fileUploadService.listUploadedFiles(inputs).pipe(
|
|
353
|
+
return this.fileUploadService.listUploadedFiles(inputs).pipe(
|
|
354
|
+
//take(1),
|
|
355
|
+
withLatestFrom(this.files$), tap(() => {
|
|
356
|
+
// added to avoid ide errors
|
|
357
|
+
}), tap(([newfiles, registeredFiles]) => {
|
|
354
358
|
newfiles.forEach(file => {
|
|
355
359
|
if (registeredFiles.findIndex(rfile => rfile.id === file.id) < 0) {
|
|
356
360
|
this.pushFile({
|
|
@@ -371,7 +375,9 @@ class OnemrvaMatFileUploadStore extends ComponentStore {
|
|
|
371
375
|
this.deleteFile = this.effect((file$) => {
|
|
372
376
|
return file$.pipe(tap(() => {
|
|
373
377
|
this.clearFileUploadError();
|
|
374
|
-
}), withLatestFrom(this.files$), map(this.fn), mergeMap((file) => this.fileUploadService.deleteFile(file.id).pipe(
|
|
378
|
+
}), withLatestFrom(this.files$), map(this.fn), mergeMap((file) => this.fileUploadService.deleteFile(file.id).pipe(
|
|
379
|
+
//take(1),
|
|
380
|
+
tap(() => {
|
|
375
381
|
this.remove(file);
|
|
376
382
|
}), catchError(() => {
|
|
377
383
|
this.setFail({
|
|
@@ -435,7 +441,7 @@ class OnemrvaMatFileUploadStore extends ComponentStore {
|
|
|
435
441
|
this.setFileUploadError(x.message.replace('ERROR:', '').trim());
|
|
436
442
|
else
|
|
437
443
|
this.clearFileUploadError();
|
|
438
|
-
}), filter(x => !x.message.startsWith('ERROR'))
|
|
444
|
+
}), filter(x => !x.message.startsWith('ERROR')));
|
|
439
445
|
};
|
|
440
446
|
this.loadStep = (file) => {
|
|
441
447
|
if (file.color === OnemrvaMatColor.WARN)
|
|
@@ -649,7 +655,7 @@ class OnemrvaMatFileUploadComponent {
|
|
|
649
655
|
});
|
|
650
656
|
}
|
|
651
657
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: OnemrvaMatFileUploadComponent, deps: [{ token: i1$1.MatDialog }, { token: i2$1.TranslateService }, { token: OnemrvaMatFileUploadStore }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
652
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: OnemrvaMatFileUploadComponent, selector: "onemrva-mat-file-upload", inputs: { accept: "accept", maxFileSize: "maxFileSize", numberOfFiles: "numberOfFiles", uploadOnDrop: "uploadOnDrop", initialFiles: "initialFiles", errorMessage: "errorMessage", dropFilesHereTextTranslationKey: "dropFilesHereTextTranslationKey", filePanelTemplate: "filePanelTemplate", dataCy: "dataCy" }, host: { properties: { "attr.data-cy": "this.dataCy" } }, viewQueries: [{ propertyName: "fileDropRef", first: true, predicate: ["fileDropRef"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"files$ | async as files\">\n <div\n class=\"onemrva-mat-file-upload-drop-area\"\n appDnd\n (fileDropped)=\"onFileDropped($event)\"\n [ngClass]=\"{\n 'fu-error': errorMessage !== '',\n filein: files.length > 0,\n }\"\n >\n <input\n type=\"file\"\n #fileDropRef\n [attr.id]=\"inputId\"\n role=\"button\"\n multiple\n (change)=\"fileBrowseHandler($event)\"\n accept=\"{{ acceptString }}\"\n />\n <
|
|
658
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: OnemrvaMatFileUploadComponent, selector: "onemrva-mat-file-upload", inputs: { accept: "accept", maxFileSize: "maxFileSize", numberOfFiles: "numberOfFiles", uploadOnDrop: "uploadOnDrop", initialFiles: "initialFiles", errorMessage: "errorMessage", dropFilesHereTextTranslationKey: "dropFilesHereTextTranslationKey", filePanelTemplate: "filePanelTemplate", dataCy: "dataCy" }, host: { properties: { "attr.data-cy": "this.dataCy" } }, viewQueries: [{ propertyName: "fileDropRef", first: true, predicate: ["fileDropRef"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"files$ | async as files\">\n <div\n class=\"onemrva-mat-file-upload-drop-area\"\n appDnd\n (fileDropped)=\"onFileDropped($event)\"\n [ngClass]=\"{\n 'fu-error': errorMessage !== '',\n filein: files.length > 0,\n }\"\n >\n <input\n type=\"file\"\n #fileDropRef\n [attr.id]=\"inputId\"\n role=\"button\"\n multiple\n (change)=\"fileBrowseHandler($event)\"\n accept=\"{{ acceptString }}\"\n />\n <div\n class=\"download-outer\"\n *ngIf=\"numberOfFiles === 0 || numberOfFiles > files.length\"\n >\n <div class=\"download-icon\">\n <mat-icon class=\"onemrva-upload xxlarge\">download</mat-icon>\n </div>\n\n <div class=\"download-text\">\n {{ dropFilesHereTextTranslationKey | translate }}\n {{ 'file.upload.or' | translate }}\n <label for=\"{{ inputId }}\" class=\"content\">\n {{ 'file.upload.browse.for.file' | translate }} </label\n ><br />\n <span class=\"restrictions\" *ngIf=\"maxFileSize > 0\">\n {{ 'file.upload.maximum' | translate }}\n {{ maxFileSizeFormatted }}\n\n <span *ngIf=\"acceptString.length > 0\">{{ '| ' }}</span>\n\n {{ acceptString }}\n </span>\n </div>\n </div>\n <ul class=\"files-list\">\n <li *ngFor=\"let file of files\">\n <ng-container\n *ngTemplateOutlet=\"\n filePanelTemplate;\n context: { file, $implicit: file }\n \"\n ></ng-container>\n </li>\n </ul>\n </div>\n\n <mat-error *ngIf=\"errorMessage\">{{ errorMessage | translate }}</mat-error>\n\n <mat-error *ngIf=\"fileUploadErrorMessage$ | async as fileUploadErrorMessage\">\n {{ fileUploadErrorMessage | translate }}\n </mat-error>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i6.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: DndDirective, selector: "[appDnd]", outputs: ["fileDropped"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i2$1.TranslatePipe, name: "translate" }], animations: [
|
|
653
659
|
trigger('inOutAnimation', [
|
|
654
660
|
state('in', style({ opacity: 1 })),
|
|
655
661
|
transition(':enter', [
|
|
@@ -697,7 +703,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
697
703
|
])),
|
|
698
704
|
]),
|
|
699
705
|
]),
|
|
700
|
-
], template: "<ng-container *ngIf=\"files$ | async as files\">\n <div\n class=\"onemrva-mat-file-upload-drop-area\"\n appDnd\n (fileDropped)=\"onFileDropped($event)\"\n [ngClass]=\"{\n 'fu-error': errorMessage !== '',\n filein: files.length > 0,\n }\"\n >\n <input\n type=\"file\"\n #fileDropRef\n [attr.id]=\"inputId\"\n role=\"button\"\n multiple\n (change)=\"fileBrowseHandler($event)\"\n accept=\"{{ acceptString }}\"\n />\n <
|
|
706
|
+
], template: "<ng-container *ngIf=\"files$ | async as files\">\n <div\n class=\"onemrva-mat-file-upload-drop-area\"\n appDnd\n (fileDropped)=\"onFileDropped($event)\"\n [ngClass]=\"{\n 'fu-error': errorMessage !== '',\n filein: files.length > 0,\n }\"\n >\n <input\n type=\"file\"\n #fileDropRef\n [attr.id]=\"inputId\"\n role=\"button\"\n multiple\n (change)=\"fileBrowseHandler($event)\"\n accept=\"{{ acceptString }}\"\n />\n <div\n class=\"download-outer\"\n *ngIf=\"numberOfFiles === 0 || numberOfFiles > files.length\"\n >\n <div class=\"download-icon\">\n <mat-icon class=\"onemrva-upload xxlarge\">download</mat-icon>\n </div>\n\n <div class=\"download-text\">\n {{ dropFilesHereTextTranslationKey | translate }}\n {{ 'file.upload.or' | translate }}\n <label for=\"{{ inputId }}\" class=\"content\">\n {{ 'file.upload.browse.for.file' | translate }} </label\n ><br />\n <span class=\"restrictions\" *ngIf=\"maxFileSize > 0\">\n {{ 'file.upload.maximum' | translate }}\n {{ maxFileSizeFormatted }}\n\n <span *ngIf=\"acceptString.length > 0\">{{ '| ' }}</span>\n\n {{ acceptString }}\n </span>\n </div>\n </div>\n <ul class=\"files-list\">\n <li *ngFor=\"let file of files\">\n <ng-container\n *ngTemplateOutlet=\"\n filePanelTemplate;\n context: { file, $implicit: file }\n \"\n ></ng-container>\n </li>\n </ul>\n </div>\n\n <mat-error *ngIf=\"errorMessage\">{{ errorMessage | translate }}</mat-error>\n\n <mat-error *ngIf=\"fileUploadErrorMessage$ | async as fileUploadErrorMessage\">\n {{ fileUploadErrorMessage | translate }}\n </mat-error>\n</ng-container>\n" }]
|
|
701
707
|
}], ctorParameters: () => [{ type: i1$1.MatDialog }, { type: i2$1.TranslateService }, { type: OnemrvaMatFileUploadStore }], propDecorators: { accept: [{
|
|
702
708
|
type: Input
|
|
703
709
|
}], maxFileSize: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onemrvapublic-design-system-mat-file-upload.mjs","sources":["../../../../projects/onemrva/design-system/mat-file-upload/src/models/progress-file.model.ts","../../../../projects/onemrva/design-system/mat-file-upload/src/components/onemrva-mat-file-panel/onemrva-file-panel.component.ts","../../../../projects/onemrva/design-system/mat-file-upload/src/components/onemrva-mat-file-panel/onemrva-file-panel.component.html","../../../../projects/onemrva/design-system/mat-file-upload/src/onemrva-mat-file-upload.service.ts","../../../../projects/onemrva/design-system/mat-file-upload/src/onemrva-mat-file-upload.store.ts","../../../../projects/onemrva/design-system/mat-file-upload/src/directives/dnd.directive.ts","../../../../projects/onemrva/design-system/mat-file-upload/src/components/onemrva-mat-file-upload/onemrva-mat-file-upload.component.ts","../../../../projects/onemrva/design-system/mat-file-upload/src/components/onemrva-mat-file-upload/onemrva-mat-file-upload.component.html","../../../../projects/onemrva/design-system/mat-file-upload/src/components/index.ts","../../../../projects/onemrva/design-system/mat-file-upload/src/onemrva-mat-file-upload.module.ts","../../../../projects/onemrva/design-system/mat-file-upload/index.ts","../../../../projects/onemrva/design-system/mat-file-upload/onemrvapublic-design-system-mat-file-upload.ts"],"sourcesContent":["import { OnemrvaMatColor } from '@onemrvapublic/design-system/utils';\n\nexport interface ProgressFile {\n file?: File;\n message: string;\n progress: number;\n color: OnemrvaMatColor; // color 1 - 1 with status\n url: string | null;\n id: string | null; // backend identifier\n enableProgressBar: boolean;\n data?: any;\n\n name: string;\n lastModified?: number;\n size: number;\n type: string;\n}\n\nexport interface ReferencedProgressFile extends ProgressFile {\n ref: symbol; // ref is a frontend identifier\n}\n\n/**\n * format bytes\n * @param bytes (File size in bytes)\n * @param decimals (Decimals point)\n */\nexport function formatBytes(bytes: number, decimals = 2) {\n if (bytes === 0) {\n return '0 Bytes';\n }\n const k = 1024;\n const dm = decimals <= 0 ? 0 : decimals || 2;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\n}\n\nexport function formattedSize(size: number, decimals = 2) {\n return formatBytes(size, decimals);\n}\n\nexport function convertToProgressFile(\n id: string,\n name: string,\n message = '',\n progress = 100,\n color = OnemrvaMatColor.PRIMARY,\n url: string | null = null,\n enableProgressBar = false,\n data: string | null = null,\n size = 0,\n type = '',\n): ProgressFile {\n return {\n id: id!,\n name: name!,\n message: message,\n progress: progress,\n color: color,\n url: url,\n enableProgressBar: enableProgressBar,\n data: data,\n size: size,\n type: type,\n };\n}\n\nexport function convertToReferencedProgressFile(\n id: string,\n name: string,\n message = '',\n progress = 100,\n color = OnemrvaMatColor.PRIMARY,\n url: string | null = null,\n enableProgressBar = false,\n data: string | null = null,\n size = 0,\n type = '',\n): ReferencedProgressFile {\n return {\n id: id!,\n ref: Symbol(name),\n name: name!,\n message: message,\n progress: progress,\n color: color,\n url: url,\n enableProgressBar: enableProgressBar,\n data: data,\n size: size,\n type: type,\n };\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n} from '@angular/core';\nimport { OnemrvaMatColor } from '@onemrvapublic/design-system/utils';\nimport { of } from 'rxjs';\nimport { ActionConfig } from '../../models/action-config.model';\nimport {\n formattedSize,\n ReferencedProgressFile,\n} from '../../models/progress-file.model';\n\nlet NEXT_ID = 0;\n\n@Component({\n selector: 'file-panel',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['./onemrva-file-panel.component.scss'],\n templateUrl: './onemrva-file-panel.component.html',\n})\nexport class OnemrvaFilePanelComponent {\n @HostBinding('attr.id')\n @Input()\n public id = `onemrva-file-panel-${NEXT_ID++}`;\n\n @HostBinding('attr.data-cy')\n @Input()\n dataCy: string = 'onemrva-file-panel-' + NEXT_ID;\n\n @Input()\n file!: ReferencedProgressFile;\n\n @Input()\n actions: ActionConfig[] = [];\n\n @Input()\n showProgress = true;\n\n @Input()\n displayDate = '';\n\n get progress$() {\n return of(this.file.progress);\n }\n\n get size() {\n return formattedSize(this.file.size);\n }\n\n get color(): OnemrvaMatColor {\n return this.file.color;\n }\n\n /** @hidden @internal */\n @HostBinding('mat-accent')\n public get _colorAccent(): boolean {\n return this.color === OnemrvaMatColor.ACCENT;\n }\n\n /** @hidden @internal */\n @HostBinding('class.mat-error')\n public get _isError(): boolean {\n return this.color === OnemrvaMatColor.ERROR;\n }\n /** @hidden @internal */\n @HostBinding('class.mat-warn')\n public get _isWarn(): boolean {\n return this.color === OnemrvaMatColor.WARN;\n }\n /** @hidden @internal */\n @HostBinding('class.mat-success')\n public get _isSuccess(): boolean {\n return this.color === OnemrvaMatColor.SUCCESS;\n }\n /** @hidden @internal */\n @HostBinding('class.mat-primary')\n public get _isPrimary(): boolean {\n return this.color === OnemrvaMatColor.PRIMARY;\n }\n}\n","<div class=\"file-panel-title\" [attr.data-cy]=\"dataCy\">\n <div class=\"file-panel-title-left\">\n <mat-icon *ngIf=\"file.color === 'error'\" class=\"filled mat-error\"\n >error</mat-icon\n >\n <mat-icon *ngIf=\"file.color === 'success'\" class=\"filled mat-success\"\n >check_circle</mat-icon\n >\n <mat-icon *ngIf=\"file.color === 'warn'\" class=\"filled mat-warn\"\n >warning</mat-icon\n >\n <span class=\"file-name\">\n {{ file.name }}\n </span>\n </div>\n <div class=\"file-panel-title-action\">\n <ng-container *ngIf=\"actions.length > 0\">\n <ng-container *ngFor=\"let action of actions\">\n <mat-icon\n *ngIf=\"action.showAction(file)\"\n role=\"button\"\n color=\"primary\"\n [attr.data-cy]=\"action.dataCy\"\n matTooltip=\"{{ action.tooltipCode | translate }}\"\n [attr.aria-label]=\"action.ariaCode | translate\"\n class=\"clickable\"\n (click)=\"action.clickHandler(file)\"\n >{{ action.iconName }}</mat-icon\n >\n </ng-container>\n </ng-container>\n </div>\n</div>\n<div class=\"file-panel-content\">\n <ng-container *ngIf=\"file.message === ''\">\n <div class=\"fileInfos\">\n <span>{{ displayDate }}</span>\n\n <span class=\"float-right\" *ngIf=\"file.size > 0\">{{ size }}</span>\n </div>\n\n <div\n class=\"onemrva-progress-bar\"\n *ngIf=\"showProgress && file.enableProgressBar\"\n >\n <div class=\"onemrva-progress-bar-outer mt-s\" #onemrvaProgressBar>\n <div\n class=\"onemrva-progress-bar-inner\"\n [ngStyle]=\"{ width: (progress$ | async) + '%' }\"\n [ngClass]=\"{\n 'progress-success': (progress$ | async)! >= 100,\n }\"\n data-cy=\"file-upload-progress\"\n [attr.value]=\"progress$ | async\"\n ></div>\n </div>\n </div>\n </ng-container>\n <p *ngIf=\"file.message !== ''\" class=\"message\">{{ file.message }}</p>\n</div>\n","import {\n HttpEvent,\n HttpEventType,\n HttpProgressEvent,\n HttpResponse,\n} from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { catchError, interval, map, Observable, of, take } from 'rxjs';\nimport { ProgressFile } from './models/progress-file.model';\n\nexport interface OnemrvaMatFileUploadInterface {\n listUploadedFiles: (inputs: any) => Observable<ProgressFile[]>;\n upload: (file: ProgressFile) => Observable<HttpEvent<any>>;\n deleteFile: (id: any) => Observable<any>;\n retry: (file: any) => Observable<any>;\n downloadFile?: (id: any) => Observable<any>;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class OnemrvaMatFileUploadService\n implements OnemrvaMatFileUploadInterface\n{\n constructor() {\n alert(\n \"Don't forget to add a provider in your component with your own implementation of OnemrvaMatFileUploadInterface. Check out the demo to have an example of how to do it\",\n );\n }\n\n listUploadedFiles(_inputs: any): Observable<ProgressFile[]> {\n return of([]);\n }\n\n upload(_file: ProgressFile): Observable<HttpEvent<any>> {\n return interval(50).pipe(\n take(101),\n map(i => {\n if (i < 100) {\n return {\n type: HttpEventType.UploadProgress,\n loaded: i,\n total: 100,\n } as HttpProgressEvent;\n } else {\n if (i >= 100 && Math.random() > 0.5) {\n throw 'Fake error thrown';\n }\n return new HttpResponse<any>();\n }\n }),\n catchError(() => of(new HttpResponse<any>({ body: {}, status: 500 }))),\n );\n }\n\n deleteFile(_id: any): Observable<any> {\n return of('F = m.a');\n }\n\n retry(file: any): Observable<any> {\n return of(file);\n }\n\n downloadFile(id: any): Observable<any> {\n alert(`Missing download implementation for file ID ${id}`);\n return of(true);\n }\n}\n","import { Inject, Injectable, InjectionToken, Optional } from '@angular/core';\nimport { ComponentStore } from '@ngrx/component-store';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n catchError,\n filter,\n forkJoin,\n interval,\n map,\n merge,\n mergeMap,\n Observable,\n of,\n switchMap,\n take,\n takeWhile,\n tap,\n throttle,\n withLatestFrom,\n} from 'rxjs';\nimport { OnemrvaMatFileUploadService } from './onemrva-mat-file-upload.service';\nimport {\n formattedSize,\n ProgressFile,\n ReferencedProgressFile,\n} from './models/progress-file.model';\nimport { HttpEvent, HttpEventType } from '@angular/common/http';\nimport { OnemrvaMatFileUploadStoreItf } from './onemrva-mat-file-upload-itf.store';\nimport { OnemrvaMatColor } from '@onemrvapublic/design-system/utils';\n\nexport interface FileUploadStoreEvent {\n type: string;\n payload?: any;\n}\n\nexport interface UploadState {\n upload: ReferencedProgressFile[];\n accept: string[];\n maxFileSize: number;\n fileUploadError: string;\n event: FileUploadStoreEvent;\n}\n\nconst INIT_STATE: UploadState = {\n upload: [],\n accept: [],\n maxFileSize: 0,\n fileUploadError: '',\n event: {\n type: 'INIT',\n },\n};\n\nexport type CustomValidationFn = (\n input: [ReferencedProgressFile, ReferencedProgressFile[]],\n) => ReferencedProgressFile;\n\nexport const CUSTOM_VALIDATION_FN = new InjectionToken<CustomValidationFn>(\n 'x1, x2 = (-b -+ sqrt(rho))/2a',\n);\n\n@Injectable()\nexport class OnemrvaMatFileUploadStore\n extends ComponentStore<UploadState>\n implements OnemrvaMatFileUploadStoreItf\n{\n private fn: CustomValidationFn = (\n x: [ReferencedProgressFile, ReferencedProgressFile[]],\n ) => {\n return x[0];\n };\n\n constructor(\n private fileUploadService: OnemrvaMatFileUploadService,\n private translateService: TranslateService,\n @Optional()\n @Inject(CUSTOM_VALIDATION_FN)\n public customValidationFn: CustomValidationFn,\n ) {\n super(INIT_STATE);\n if (customValidationFn) this.fn = customValidationFn;\n }\n\n /*\n * U P D A T E R S\n */\n public readonly setAccept = this.updater((state, accept: string[]) => ({\n ...state,\n accept,\n event: {\n type: 'setAccept',\n payload: accept,\n },\n }));\n\n public readonly setMaxFileSize = this.updater(\n (state, maxFileSize: number) => ({\n ...state,\n maxFileSize,\n event: {\n type: 'setMaxFileSize',\n payload: maxFileSize,\n },\n }),\n );\n\n private readonly emptyList = this.updater(state => {\n return {\n ...state,\n upload: [],\n event: {\n type: 'emptyList',\n },\n };\n });\n\n private readonly pushFile = this.updater(\n (state, payload: ReferencedProgressFile) => {\n return {\n ...state,\n upload: [...state.upload, { ...payload }],\n event: {\n type: 'pushFile',\n payload,\n },\n };\n },\n );\n\n public readonly setData = this.updater(\n (state, payload: { ref: symbol; data: any }) => {\n return {\n ...state,\n upload: state.upload.map((file: ReferencedProgressFile) =>\n file.ref === payload.ref ? { ...file, data: payload.data } : file,\n ),\n event: {\n type: 'setData',\n payload,\n },\n };\n },\n );\n\n private readonly setSuccess = this.updater(\n (state, payload: { ref: symbol; body: any }) => {\n const newFile = {\n ...state.upload.find(f => f.ref === payload.ref),\n ...payload.body,\n color: 'success',\n progress: 100,\n };\n\n return {\n ...state,\n upload: state.upload.map(file =>\n file.ref === payload.ref ? newFile : file,\n ),\n event: {\n type: 'setData',\n payload: newFile,\n },\n };\n },\n );\n\n private readonly setFail = this.updater(\n (\n state,\n payload: { ref: symbol; message: string; color: OnemrvaMatColor },\n ) => ({\n ...state,\n upload: state.upload.map(file =>\n file.ref === payload.ref\n ? { ...file, message: payload.message, color: payload.color }\n : file,\n ),\n event: {\n type: 'setFail',\n payload,\n },\n }),\n );\n\n private readonly setProgress = this.updater(\n (state, payload: { ref: symbol; progress: number }) => ({\n ...state,\n upload: state.upload.map(file =>\n file.ref === payload.ref\n ? { ...file, progress: payload.progress }\n : file,\n ),\n event: {\n type: 'setProgress',\n payload,\n },\n }),\n );\n\n private readonly reset = this.updater((state, ref: symbol) => ({\n ...state,\n upload: state.upload.map(file =>\n file.ref === ref\n ? { ...file, progress: 0, message: '', color: '' }\n : file,\n ),\n event: {\n type: 'reset',\n payload: ref,\n },\n }));\n\n private readonly remove = this.updater(\n (state, payload: ReferencedProgressFile) => ({\n ...state,\n upload: state.upload.filter(f => f.ref !== payload.ref),\n event: {\n type: 'remove',\n payload,\n },\n }),\n );\n\n private readonly enableProgressBar = this.updater(state => ({\n ...state,\n upload: state.upload.map(file => ({ ...file, enableProgressBar: true })),\n event: {\n type: 'enableProgressBar',\n },\n }));\n\n public readonly setFileUploadError = this.updater(\n (state, fileUploadError: string) => ({\n ...state,\n fileUploadError,\n event: {\n type: 'setFileUploadError',\n payload: fileUploadError,\n },\n }),\n );\n\n public readonly clearFileUploadError = this.updater(state => ({\n ...state,\n fileUploadError: '',\n event: {\n type: 'clearFileUploadError',\n },\n }));\n\n /*\n * S E L E C T O R S\n */\n readonly files$ = this.select(state => state.upload);\n readonly accept$ = this.select(state => state.accept);\n readonly event$ = this.select(state => state.event);\n readonly maxFileSize$ = this.select(state => state.maxFileSize);\n readonly fileUploadError$ = this.select(state => state.fileUploadError);\n\n /*\n * A C T I O N S / E F F E C T S\n */\n readonly listUploadedFiles = this.effect((inputs$: Observable<any>) => {\n return inputs$.pipe(\n tap(() => {\n this.emptyList();\n }),\n mergeMap((inputs: any) => {\n return this.fileUploadService.listUploadedFiles(inputs).pipe(\n take(1),\n withLatestFrom(this.files$),\n tap(([newfiles, registeredFiles]) => {\n newfiles.forEach(file => {\n if (\n registeredFiles.findIndex(rfile => rfile.id === file.id) < 0\n ) {\n this.pushFile({\n ...file,\n color: 'success',\n progress: 100,\n ref: Symbol('H.psi = E.psi'),\n name: file!.name,\n lastModified: file!.lastModified,\n size: file!.size,\n type: file!.type,\n });\n }\n });\n }),\n catchError(() => of([])),\n );\n }),\n );\n });\n\n readonly deleteFile = this.effect(\n (file$: Observable<ReferencedProgressFile>) => {\n return file$.pipe(\n tap(() => {\n this.clearFileUploadError();\n }),\n withLatestFrom(this.files$),\n map(this.fn),\n mergeMap((file: any) =>\n this.fileUploadService.deleteFile(file.id).pipe(\n take(1),\n tap(() => {\n this.remove(file);\n }),\n catchError(() => {\n this.setFail({\n ref: file.ref,\n color: OnemrvaMatColor.WARN,\n message: 'file.upload.delete.error',\n });\n return of(null);\n }),\n ),\n ),\n );\n },\n );\n\n readonly removeFile = this.effect(\n (file$: Observable<ReferencedProgressFile>) => {\n return file$.pipe(\n tap(() => {\n this.clearFileUploadError();\n }),\n withLatestFrom(this.files$),\n map(this.fn),\n tap(file => {\n this.remove(file);\n }),\n );\n },\n );\n\n private progressFileChecker = (file$: Observable<any>) => {\n return file$.pipe(\n withLatestFrom(this.accept$),\n map(([file, accept]) => {\n // Step 1 - Add a new file in the view\n let f: ReferencedProgressFile = { ...file };\n if (file.ref === undefined) {\n f = {\n ...f,\n ref: Symbol('v_sound = sqrt(gamma.P / rho)'),\n name: file!.name,\n lastModified: file!.lastModified,\n size: file!.size,\n type: file!.type,\n };\n this.pushFile(f);\n }\n\n // Step 2 - Check file extension\n if (!accept.includes(file.file!.type)) {\n this.setFail({\n ref: f.ref,\n color: OnemrvaMatColor.ERROR,\n message: this.translateService.instant(\n 'file.upload.type.not.supported',\n ),\n });\n // This trick coupled with the next filter is used to avoid catchError, which would break the effect\n return { ...f, message: 'ERROR' };\n }\n return f;\n }),\n filter(x => x.message !== 'ERROR'),\n withLatestFrom(this.maxFileSize$),\n map(([refFile, maxFileSize]) => {\n // Step 3 - Check file size\n if (maxFileSize !== 0 && refFile.size > maxFileSize) {\n this.setFail({\n ref: refFile.ref,\n color: OnemrvaMatColor.ERROR,\n message:\n this.translateService.instant('file.upload.too.big') +\n ' ' +\n formattedSize(refFile.size),\n });\n // Same trick for error management\n return { ...refFile, message: 'ERROR' };\n }\n return refFile;\n }),\n filter(x => x.message !== 'ERROR'),\n withLatestFrom(this.files$),\n map(this.fn), // For custom validations\n tap(x => {\n if (!!x.message && x.message.startsWith('ERROR:'))\n this.setFileUploadError(x.message.replace('ERROR:', '').trim());\n else this.clearFileUploadError();\n }),\n filter(x => !x.message.startsWith('ERROR')),\n take(1),\n );\n };\n\n private loadStep = (file: any) => {\n if (file.color === OnemrvaMatColor.WARN) this.reset(file.ref);\n\n this.enableProgressBar();\n\n return this.fileUploadService.upload(file).pipe(\n throttle(() => interval(200), { leading: true, trailing: true }),\n tap((event: HttpEvent<any>) => {\n if (event.type === HttpEventType.UploadProgress) {\n this.setProgress({\n ref: file.ref,\n progress: Math.round((100 * event.loaded) / event.total!),\n });\n }\n\n if (event.type === HttpEventType.Response) {\n this.setSuccess({ ref: file.ref, body: event.body });\n }\n }),\n takeWhile(\n (event: HttpEvent<any>) => event.type === HttpEventType.UploadProgress,\n ),\n catchError(() => {\n this.setFail({\n ref: file.ref,\n color: OnemrvaMatColor.WARN,\n message: 'file.upload.retry.error',\n });\n return of(null);\n }),\n );\n };\n\n /**\n * For adding one file panel (creation of file panel reference skipped if already created) at a time.\n * Upload to BE not triggered\n */\n readonly addForPotentialUpload = this.effect(\n (file$: Observable<ProgressFile>) => this.progressFileChecker(file$),\n );\n\n /**\n * For adding an array of file panels (creation of file panels reference skipped if already created).\n * Uploads to BE not triggered\n */\n readonly addSeveralForPotentialUpload = this.effect(\n (files$: Observable<ProgressFile[]>) =>\n files$.pipe(\n switchMap(files =>\n forkJoin(files.map(file => this.progressFileChecker(of(file)))),\n ),\n ),\n );\n\n /**\n * For adding a file panel (creation of file panels reference skipped if already created) then uploading it\n */\n readonly uploadFile = this.effect((file$: Observable<ProgressFile>) => {\n return this.progressFileChecker(file$).pipe(mergeMap(this.loadStep));\n });\n\n readonly retryFile = this.effect(\n (file$: Observable<ReferencedProgressFile>) =>\n this.progressFileChecker(file$).pipe(mergeMap(this.loadStep)),\n );\n\n /**\n * For adding several file panels (creation of file panels reference skipped if already created) then uploading them\n */\n readonly uploadFiles = this.effect((files$: Observable<ProgressFile[]>) =>\n files$.pipe(\n switchMap(files =>\n merge(\n ...files.map(file =>\n this.progressFileChecker(of(file)).pipe(switchMap(this.loadStep)),\n ),\n ),\n ),\n ),\n );\n}\n","import {\n Directive,\n Output,\n EventEmitter,\n HostBinding,\n HostListener,\n} from '@angular/core';\n\n@Directive({\n selector: '[appDnd]',\n})\nexport class DndDirective {\n @HostBinding('class.fileover') fileOver = false;\n\n @Output() fileDropped = new EventEmitter<any>();\n\n // Dragover listener\n @HostListener('dragover', ['$event']) onDragOver(evt: Event) {\n evt.preventDefault();\n evt.stopPropagation();\n this.fileOver = true;\n }\n\n // Dragleave listener\n @HostListener('dragleave', ['$event']) public onDragLeave(evt: Event) {\n evt.preventDefault();\n evt.stopPropagation();\n this.fileOver = false;\n }\n\n // Drop listener\n @HostListener('drop', ['$event']) public ondrop(evt: any) {\n evt.preventDefault();\n evt.stopPropagation();\n this.fileOver = false;\n const files = evt.dataTransfer.files;\n if (files.length > 0) {\n this.fileDropped.emit(files);\n }\n }\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnInit,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Observable, take } from 'rxjs';\nimport {\n state,\n keyframes,\n style,\n animate,\n trigger,\n transition,\n} from '@angular/animations';\nimport {\n formatBytes,\n ProgressFile,\n ReferencedProgressFile,\n} from '../../models/progress-file.model';\nimport { OnemrvaMatFileUploadStore } from '../../onemrva-mat-file-upload.store';\nimport { TranslateService } from '@ngx-translate/core';\nimport * as mime from 'mime-types';\n\nlet NEXT_ID = 0;\n\n@Component({\n selector: 'onemrva-mat-file-upload',\n templateUrl: 'onemrva-mat-file-upload.component.html',\n animations: [\n trigger('inOutAnimation', [\n state('in', style({ opacity: 1 })),\n transition(':enter', [\n animate(\n 300,\n keyframes([\n style({ opacity: 0, offset: 0 }),\n style({ opacity: 0.25, offset: 0.25 }),\n style({ opacity: 0.5, offset: 0.5 }),\n style({ opacity: 0.75, offset: 0.75 }),\n style({ opacity: 1, offset: 1 }),\n ]),\n ),\n ]),\n transition(':leave', [\n animate(\n 300,\n keyframes([\n style({ opacity: 1, offset: 0 }),\n style({ opacity: 0.75, offset: 0.25 }),\n style({ opacity: 0.5, offset: 0.5 }),\n style({ opacity: 0.25, offset: 0.75 }),\n style({ opacity: 0, offset: 1 }),\n ]),\n ),\n ]),\n ]),\n ],\n})\nexport class OnemrvaMatFileUploadComponent implements OnInit {\n @Input()\n accept: string[] = [];\n acceptString = '';\n\n @Input()\n maxFileSize = 0;\n\n @Input()\n numberOfFiles = 0;\n\n @Input()\n uploadOnDrop = true;\n\n @Input()\n initialFiles: ProgressFile[] = [];\n\n @Input()\n errorMessage = '';\n\n @Input()\n dropFilesHereTextTranslationKey = 'file.upload.drag.and.drop';\n\n fileUploadErrorMessage$: Observable<string>;\n\n files$: Observable<ReferencedProgressFile[]>;\n\n @Input() filePanelTemplate!: TemplateRef<any>;\n\n retryFile = new EventEmitter<{ index: number; cmpRef: symbol }>();\n\n /**\n * Sets the `data-cy` of the element. If not set, the first component instance will have `data-cy` = `\"onemrva-mat-multi-select-0\"`.\n *\n * @example\n * ```html\n * <onemrva-mat-multi-select id=\"my-first-multi-select\"></onemrva-mat-multi-select>\n * ```\n */\n @HostBinding('attr.data-cy')\n @Input()\n public dataCy = `onemrva-mat-multi-select-${NEXT_ID++}`;\n\n @ViewChild(`fileDropRef`)\n fileDropRef!: ElementRef;\n\n inputId = `fileDropRef-${NEXT_ID}`;\n maxFileSizeFormatted = '';\n\n constructor(\n public dialog: MatDialog,\n private translate: TranslateService,\n private fileUploadStore: OnemrvaMatFileUploadStore,\n ) {\n this.files$ = fileUploadStore.files$;\n\n this.fileUploadErrorMessage$ = this.fileUploadStore.fileUploadError$;\n }\n\n ngOnInit(): void {\n if (this.accept.length > 0) {\n this.acceptString = this.accept\n .map(val => {\n const t = mime.extension(val || '');\n return `.${t}`;\n })\n .filter(val => {\n return val.length > 1;\n })\n .join(', ');\n\n this.fileUploadStore.setAccept(this.accept);\n }\n\n this.maxFileSizeFormatted = formatBytes(this.maxFileSize);\n this.fileUploadStore.setMaxFileSize(this.maxFileSize);\n }\n\n /**\n * on file drop handler\n */\n onFileDropped($event: FileList) {\n this.prepareFilesList($event);\n }\n\n /**\n * handle file from browsing\n */\n fileBrowseHandler($event: Event) {\n const elm = $event.target as HTMLInputElement,\n files = elm.files as FileList;\n\n this.prepareFilesList(files);\n }\n\n /**\n * Convert Files list to normal array list\n * @param files (Files List)\n */\n prepareFilesList(files: FileList) {\n this.fileUploadStore.files$.pipe(take(1)).subscribe(value => {\n // if numberOffiles is set and the total length of files is smaller than it\n if (\n this.numberOfFiles > 0 &&\n files.length + value.length > this.numberOfFiles\n ) {\n // too many files\n this.errorMessage = this.translate.instant(\n 'file.upload.too.many.files',\n );\n } else {\n // clear error message\n this.errorMessage = '';\n\n const fs: ProgressFile[] = [];\n for (let i = 0; i < files.length; i++) {\n const file = files.item(i);\n if (file === null) continue;\n\n const item: ProgressFile = {\n file,\n progress: 0,\n message: '',\n color: 'primary',\n url: null,\n id: null,\n enableProgressBar: this.uploadOnDrop,\n\n name: file!.name,\n lastModified: file!.lastModified,\n size: file!.size,\n type: file!.type,\n };\n\n fs.push(item);\n }\n\n if (this.uploadOnDrop) this.fileUploadStore.uploadFiles(fs);\n else this.fileUploadStore.addSeveralForPotentialUpload(fs);\n\n this.fileDropRef.nativeElement.value = null;\n }\n });\n }\n}\n","<ng-container *ngIf=\"files$ | async as files\">\n <div\n class=\"onemrva-mat-file-upload-drop-area\"\n appDnd\n (fileDropped)=\"onFileDropped($event)\"\n [ngClass]=\"{\n 'fu-error': errorMessage !== '',\n filein: files.length > 0,\n }\"\n >\n <input\n type=\"file\"\n #fileDropRef\n [attr.id]=\"inputId\"\n role=\"button\"\n multiple\n (change)=\"fileBrowseHandler($event)\"\n accept=\"{{ acceptString }}\"\n />\n <p\n class=\"outer\"\n *ngIf=\"numberOfFiles === 0 || numberOfFiles > files.length\"\n >\n <span class=\"inner\">\n <mat-icon class=\"onemrva-upload\">download</mat-icon>\n </span>\n\n <span class=\"inner\">\n {{ dropFilesHereTextTranslationKey | translate }}\n </span>\n\n <span class=\"inner\">\n {{ 'file.upload.or' | translate }}\n\n <label for=\"{{ inputId }}\" class=\"content\">\n {{ 'file.upload.browse.for.file' | translate }}\n </label>\n </span>\n\n <span class=\"inner\" aria-disabled=\"true\">\n <span *ngIf=\"maxFileSize > 0\">\n {{ 'file.upload.maximum' | translate }}\n {{ maxFileSizeFormatted }}\n\n <span *ngIf=\"acceptString.length > 0\">{{ '| ' }}</span>\n\n {{ acceptString }}\n </span>\n </span>\n </p>\n <ul class=\"files-list\">\n <li *ngFor=\"let file of files\">\n <ng-container\n *ngTemplateOutlet=\"\n filePanelTemplate;\n context: { file, $implicit: file }\n \"\n ></ng-container>\n </li>\n </ul>\n </div>\n\n <mat-error *ngIf=\"errorMessage\">{{ errorMessage | translate }}</mat-error>\n\n <mat-error *ngIf=\"fileUploadErrorMessage$ | async as fileUploadErrorMessage\">\n {{ fileUploadErrorMessage | translate }}\n </mat-error>\n</ng-container>\n","import { OnemrvaFilePanelComponent } from './onemrva-mat-file-panel/onemrva-file-panel.component';\nimport { OnemrvaMatFileUploadComponent } from './onemrva-mat-file-upload/onemrva-mat-file-upload.component';\n\nexport const components: any[] = [\n OnemrvaFilePanelComponent,\n OnemrvaMatFileUploadComponent,\n];\n\nexport * from './onemrva-mat-file-panel/onemrva-file-panel.component';\nexport * from './onemrva-mat-file-upload/onemrva-mat-file-upload.component';\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DndDirective } from './directives/dnd.directive';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { components } from './components';\nimport { MatInputModule } from '@angular/material/input';\n\n@NgModule({\n declarations: [components, DndDirective],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatButtonModule,\n MatTooltipModule,\n MatDialogModule,\n TranslateModule,\n MatIconModule,\n MatInputModule,\n ],\n exports: [components],\n})\nexport class OnemrvaMatFileUploadModule {}\n","/*\n * Public API Surface of mat-file upload\n */\n\nexport * from './src/components';\nexport * from './src/onemrva-mat-file-upload.module';\nexport * from './src/onemrva-mat-file-upload.store';\nexport * from './src/onemrva-mat-file-upload.service';\nexport * from './src/models/progress-file.model';\nexport * from './src/models/action-config.model';\nexport * from './src/onemrva-mat-file-upload-itf.store';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["NEXT_ID","i4","i1","i2","i3.OnemrvaMatFileUploadStore","i5","i7.DndDirective","i1.OnemrvaFilePanelComponent","i2.OnemrvaMatFileUploadComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAsBA;;;;AAIG;SACa,WAAW,CAAC,KAAa,EAAE,QAAQ,GAAG,CAAC,EAAA;AACrD,IAAA,IAAI,KAAK,KAAK,CAAC,EAAE;AACf,QAAA,OAAO,SAAS,CAAC;KAClB;IACD,MAAM,CAAC,GAAG,IAAI,CAAC;AACf,IAAA,MAAM,EAAE,GAAG,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,IAAI,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACxE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,OAAO,UAAU,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3E,CAAC;SAEe,aAAa,CAAC,IAAY,EAAE,QAAQ,GAAG,CAAC,EAAA;AACtD,IAAA,OAAO,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACrC,CAAC;SAEe,qBAAqB,CACnC,EAAU,EACV,IAAY,EACZ,OAAO,GAAG,EAAE,EACZ,QAAQ,GAAG,GAAG,EACd,KAAK,GAAG,eAAe,CAAC,OAAO,EAC/B,GAAqB,GAAA,IAAI,EACzB,iBAAiB,GAAG,KAAK,EACzB,IAAsB,GAAA,IAAI,EAC1B,IAAI,GAAG,CAAC,EACR,IAAI,GAAG,EAAE,EAAA;IAET,OAAO;AACL,QAAA,EAAE,EAAE,EAAG;AACP,QAAA,IAAI,EAAE,IAAK;AACX,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,KAAK,EAAE,KAAK;AACZ,QAAA,GAAG,EAAE,GAAG;AACR,QAAA,iBAAiB,EAAE,iBAAiB;AACpC,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,IAAI,EAAE,IAAI;KACX,CAAC;AACJ,CAAC;SAEe,+BAA+B,CAC7C,EAAU,EACV,IAAY,EACZ,OAAO,GAAG,EAAE,EACZ,QAAQ,GAAG,GAAG,EACd,KAAK,GAAG,eAAe,CAAC,OAAO,EAC/B,GAAqB,GAAA,IAAI,EACzB,iBAAiB,GAAG,KAAK,EACzB,IAAsB,GAAA,IAAI,EAC1B,IAAI,GAAG,CAAC,EACR,IAAI,GAAG,EAAE,EAAA;IAET,OAAO;AACL,QAAA,EAAE,EAAE,EAAG;AACP,QAAA,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC;AACjB,QAAA,IAAI,EAAE,IAAK;AACX,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,KAAK,EAAE,KAAK;AACZ,QAAA,GAAG,EAAE,GAAG;AACR,QAAA,iBAAiB,EAAE,iBAAiB;AACpC,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,IAAI,EAAE,IAAI;KACX,CAAC;AACJ;;AC/EA,IAAIA,SAAO,GAAG,CAAC,CAAC;MAQH,yBAAyB,CAAA;AANtC,IAAA,WAAA,GAAA;AASS,QAAA,IAAA,CAAA,EAAE,GAAG,CAAA,mBAAA,EAAsBA,SAAO,EAAE,EAAE,CAAC;AAI9C,QAAA,IAAA,CAAA,MAAM,GAAW,qBAAqB,GAAGA,SAAO,CAAC;QAMjD,IAAO,CAAA,OAAA,GAAmB,EAAE,CAAC;QAG7B,IAAY,CAAA,YAAA,GAAG,IAAI,CAAC;QAGpB,IAAW,CAAA,WAAA,GAAG,EAAE,CAAC;AAwClB,KAAA;AAtCC,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC/B;AAED,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACtC;AAED,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;KACxB;;AAGD,IAAA,IACW,YAAY,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,eAAe,CAAC,MAAM,CAAC;KAC9C;;AAGD,IAAA,IACW,QAAQ,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,eAAe,CAAC,KAAK,CAAC;KAC7C;;AAED,IAAA,IACW,OAAO,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,eAAe,CAAC,IAAI,CAAC;KAC5C;;AAED,IAAA,IACW,UAAU,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,eAAe,CAAC,OAAO,CAAC;KAC/C;;AAED,IAAA,IACW,UAAU,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,eAAe,CAAC,OAAO,CAAC;KAC/C;8GA1DU,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,8bCtBtC,q/DA4DA,EAAA,MAAA,EAAA,CAAA,kQAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FDtCa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;+BACE,YAAY,EAAA,eAAA,EACL,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,q/DAAA,EAAA,MAAA,EAAA,CAAA,kQAAA,CAAA,EAAA,CAAA;8BAOxC,EAAE,EAAA,CAAA;sBAFR,WAAW;uBAAC,SAAS,CAAA;;sBACrB,KAAK;gBAKN,MAAM,EAAA,CAAA;sBAFL,WAAW;uBAAC,cAAc,CAAA;;sBAC1B,KAAK;gBAIN,IAAI,EAAA,CAAA;sBADH,KAAK;gBAIN,OAAO,EAAA,CAAA;sBADN,KAAK;gBAIN,YAAY,EAAA,CAAA;sBADX,KAAK;gBAIN,WAAW,EAAA,CAAA;sBADV,KAAK;gBAiBK,YAAY,EAAA,CAAA;sBADtB,WAAW;uBAAC,YAAY,CAAA;gBAOd,QAAQ,EAAA,CAAA;sBADlB,WAAW;uBAAC,iBAAiB,CAAA;gBAMnB,OAAO,EAAA,CAAA;sBADjB,WAAW;uBAAC,gBAAgB,CAAA;gBAMlB,UAAU,EAAA,CAAA;sBADpB,WAAW;uBAAC,mBAAmB,CAAA;gBAMrB,UAAU,EAAA,CAAA;sBADpB,WAAW;uBAAC,mBAAmB,CAAA;;;MExDrB,2BAA2B,CAAA;AAGtC,IAAA,WAAA,GAAA;QACE,KAAK,CACH,uKAAuK,CACxK,CAAC;KACH;AAED,IAAA,iBAAiB,CAAC,OAAY,EAAA;AAC5B,QAAA,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;KACf;AAED,IAAA,MAAM,CAAC,KAAmB,EAAA;AACxB,QAAA,OAAO,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CACtB,IAAI,CAAC,GAAG,CAAC,EACT,GAAG,CAAC,CAAC,IAAG;AACN,YAAA,IAAI,CAAC,GAAG,GAAG,EAAE;gBACX,OAAO;oBACL,IAAI,EAAE,aAAa,CAAC,cAAc;AAClC,oBAAA,MAAM,EAAE,CAAC;AACT,oBAAA,KAAK,EAAE,GAAG;iBACU,CAAC;aACxB;iBAAM;gBACL,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,EAAE;AACnC,oBAAA,MAAM,mBAAmB,CAAC;iBAC3B;gBACD,OAAO,IAAI,YAAY,EAAO,CAAC;aAChC;SACF,CAAC,EACF,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,YAAY,CAAM,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CACvE,CAAC;KACH;AAED,IAAA,UAAU,CAAC,GAAQ,EAAA;AACjB,QAAA,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;KACtB;AAED,IAAA,KAAK,CAAC,IAAS,EAAA;AACb,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;KACjB;AAED,IAAA,YAAY,CAAC,EAAO,EAAA;AAClB,QAAA,KAAK,CAAC,CAAA,4CAAA,EAA+C,EAAE,CAAA,CAAE,CAAC,CAAC;AAC3D,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;KACjB;8GA7CU,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,cAF1B,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEP,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAHvC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACuBD,MAAM,UAAU,GAAgB;AAC9B,IAAA,MAAM,EAAE,EAAE;AACV,IAAA,MAAM,EAAE,EAAE;AACV,IAAA,WAAW,EAAE,CAAC;AACd,IAAA,eAAe,EAAE,EAAE;AACnB,IAAA,KAAK,EAAE;AACL,QAAA,IAAI,EAAE,MAAM;AACb,KAAA;CACF,CAAC;MAMW,oBAAoB,GAAG,IAAI,cAAc,CACpD,+BAA+B,EAC/B;AAGI,MAAO,yBACX,SAAQ,cAA2B,CAAA;AASnC,IAAA,WAAA,CACU,iBAA8C,EAC9C,gBAAkC,EAGnC,kBAAsC,EAAA;QAE7C,KAAK,CAAC,UAAU,CAAC,CAAC;QANV,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAA6B;QAC9C,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAGnC,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;AAXvC,QAAA,IAAA,CAAA,EAAE,GAAuB,CAC/B,CAAqD,KACnD;AACF,YAAA,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACd,SAAC,CAAC;AAaF;;AAEG;AACa,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,MAAgB,MAAM;AACrE,YAAA,GAAG,KAAK;YACR,MAAM;AACN,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;AACF,SAAA,CAAC,CAAC,CAAC;AAEY,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,CAAC,OAAO,CAC3C,CAAC,KAAK,EAAE,WAAmB,MAAM;AAC/B,YAAA,GAAG,KAAK;YACR,WAAW;AACX,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,gBAAgB;AACtB,gBAAA,OAAO,EAAE,WAAW;AACrB,aAAA;AACF,SAAA,CAAC,CACH,CAAC;AAEe,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,IAAG;YAChD,OAAO;AACL,gBAAA,GAAG,KAAK;AACR,gBAAA,MAAM,EAAE,EAAE;AACV,gBAAA,KAAK,EAAE;AACL,oBAAA,IAAI,EAAE,WAAW;AAClB,iBAAA;aACF,CAAC;AACJ,SAAC,CAAC,CAAC;QAEc,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC,OAAO,CACtC,CAAC,KAAK,EAAE,OAA+B,KAAI;YACzC,OAAO;AACL,gBAAA,GAAG,KAAK;gBACR,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC;AACzC,gBAAA,KAAK,EAAE;AACL,oBAAA,IAAI,EAAE,UAAU;oBAChB,OAAO;AACR,iBAAA;aACF,CAAC;AACJ,SAAC,CACF,CAAC;QAEc,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC,OAAO,CACpC,CAAC,KAAK,EAAE,OAAmC,KAAI;YAC7C,OAAO;AACL,gBAAA,GAAG,KAAK;AACR,gBAAA,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAA4B,KACpD,IAAI,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI,CAClE;AACD,gBAAA,KAAK,EAAE;AACL,oBAAA,IAAI,EAAE,SAAS;oBACf,OAAO;AACR,iBAAA;aACF,CAAC;AACJ,SAAC,CACF,CAAC;QAEe,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC,OAAO,CACxC,CAAC,KAAK,EAAE,OAAmC,KAAI;AAC7C,YAAA,MAAM,OAAO,GAAG;AACd,gBAAA,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC;gBAChD,GAAG,OAAO,CAAC,IAAI;AACf,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,QAAQ,EAAE,GAAG;aACd,CAAC;YAEF,OAAO;AACL,gBAAA,GAAG,KAAK;gBACR,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAC3B,IAAI,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,GAAG,OAAO,GAAG,IAAI,CAC1C;AACD,gBAAA,KAAK,EAAE;AACL,oBAAA,IAAI,EAAE,SAAS;AACf,oBAAA,OAAO,EAAE,OAAO;AACjB,iBAAA;aACF,CAAC;AACJ,SAAC,CACF,CAAC;AAEe,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,OAAO,CACrC,CACE,KAAK,EACL,OAAiE,MAC7D;AACJ,YAAA,GAAG,KAAK;AACR,YAAA,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAC3B,IAAI,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG;AACtB,kBAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE;kBAC3D,IAAI,CACT;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,SAAS;gBACf,OAAO;AACR,aAAA;AACF,SAAA,CAAC,CACH,CAAC;AAEe,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,OAAO,CACzC,CAAC,KAAK,EAAE,OAA0C,MAAM;AACtD,YAAA,GAAG,KAAK;AACR,YAAA,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAC3B,IAAI,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG;kBACpB,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;kBACvC,IAAI,CACT;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,aAAa;gBACnB,OAAO;AACR,aAAA;AACF,SAAA,CAAC,CACH,CAAC;AAEe,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAW,MAAM;AAC7D,YAAA,GAAG,KAAK;AACR,YAAA,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAC3B,IAAI,CAAC,GAAG,KAAK,GAAG;AACd,kBAAE,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;kBAChD,IAAI,CACT;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,OAAO,EAAE,GAAG;AACb,aAAA;AACF,SAAA,CAAC,CAAC,CAAC;AAEa,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,OAAO,CACpC,CAAC,KAAK,EAAE,OAA+B,MAAM;AAC3C,YAAA,GAAG,KAAK;AACR,YAAA,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC;AACvD,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,QAAQ;gBACd,OAAO;AACR,aAAA;AACF,SAAA,CAAC,CACH,CAAC;QAEe,IAAiB,CAAA,iBAAA,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK;AAC1D,YAAA,GAAG,KAAK;YACR,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,GAAG,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;AACxE,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,mBAAmB;AAC1B,aAAA;AACF,SAAA,CAAC,CAAC,CAAC;AAEY,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAC/C,CAAC,KAAK,EAAE,eAAuB,MAAM;AACnC,YAAA,GAAG,KAAK;YACR,eAAe;AACf,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,oBAAoB;AAC1B,gBAAA,OAAO,EAAE,eAAe;AACzB,aAAA;AACF,SAAA,CAAC,CACH,CAAC;QAEc,IAAoB,CAAA,oBAAA,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK;AAC5D,YAAA,GAAG,KAAK;AACR,YAAA,eAAe,EAAE,EAAE;AACnB,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,sBAAsB;AAC7B,aAAA;AACF,SAAA,CAAC,CAAC,CAAC;AAEJ;;AAEG;AACM,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;AAC5C,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;AAC7C,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;AAC3C,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;AACvD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;AAExE;;AAEG;QACM,IAAiB,CAAA,iBAAA,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,OAAwB,KAAI;AACpE,YAAA,OAAO,OAAO,CAAC,IAAI,CACjB,GAAG,CAAC,MAAK;gBACP,IAAI,CAAC,SAAS,EAAE,CAAC;AACnB,aAAC,CAAC,EACF,QAAQ,CAAC,CAAC,MAAW,KAAI;AACvB,gBAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,IAAI,CAC1D,IAAI,CAAC,CAAC,CAAC,EACP,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAC3B,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,eAAe,CAAC,KAAI;AAClC,oBAAA,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAG;AACtB,wBAAA,IACE,eAAe,CAAC,SAAS,CAAC,KAAK,IAAI,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAC5D;4BACA,IAAI,CAAC,QAAQ,CAAC;AACZ,gCAAA,GAAG,IAAI;AACP,gCAAA,KAAK,EAAE,SAAS;AAChB,gCAAA,QAAQ,EAAE,GAAG;AACb,gCAAA,GAAG,EAAE,MAAM,CAAC,eAAe,CAAC;gCAC5B,IAAI,EAAE,IAAK,CAAC,IAAI;gCAChB,YAAY,EAAE,IAAK,CAAC,YAAY;gCAChC,IAAI,EAAE,IAAK,CAAC,IAAI;gCAChB,IAAI,EAAE,IAAK,CAAC,IAAI;AACjB,6BAAA,CAAC,CAAC;yBACJ;AACH,qBAAC,CAAC,CAAC;AACL,iBAAC,CAAC,EACF,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CACzB,CAAC;aACH,CAAC,CACH,CAAC;AACJ,SAAC,CAAC,CAAC;QAEM,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC,MAAM,CAC/B,CAAC,KAAyC,KAAI;AAC5C,YAAA,OAAO,KAAK,CAAC,IAAI,CACf,GAAG,CAAC,MAAK;gBACP,IAAI,CAAC,oBAAoB,EAAE,CAAC;aAC7B,CAAC,EACF,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAC3B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EACZ,QAAQ,CAAC,CAAC,IAAS,KACjB,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAC7C,IAAI,CAAC,CAAC,CAAC,EACP,GAAG,CAAC,MAAK;AACP,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACpB,aAAC,CAAC,EACF,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,OAAO,CAAC;oBACX,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,KAAK,EAAE,eAAe,CAAC,IAAI;AAC3B,oBAAA,OAAO,EAAE,0BAA0B;AACpC,iBAAA,CAAC,CAAC;AACH,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AAClB,aAAC,CAAC,CACH,CACF,CACF,CAAC;AACJ,SAAC,CACF,CAAC;QAEO,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC,MAAM,CAC/B,CAAC,KAAyC,KAAI;AAC5C,YAAA,OAAO,KAAK,CAAC,IAAI,CACf,GAAG,CAAC,MAAK;gBACP,IAAI,CAAC,oBAAoB,EAAE,CAAC;aAC7B,CAAC,EACF,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAC3B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EACZ,GAAG,CAAC,IAAI,IAAG;AACT,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aACnB,CAAC,CACH,CAAC;AACJ,SAAC,CACF,CAAC;AAEM,QAAA,IAAA,CAAA,mBAAmB,GAAG,CAAC,KAAsB,KAAI;YACvD,OAAO,KAAK,CAAC,IAAI,CACf,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAC5B,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,KAAI;;AAErB,gBAAA,IAAI,CAAC,GAA2B,EAAE,GAAG,IAAI,EAAE,CAAC;AAC5C,gBAAA,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE;AAC1B,oBAAA,CAAC,GAAG;AACF,wBAAA,GAAG,CAAC;AACJ,wBAAA,GAAG,EAAE,MAAM,CAAC,+BAA+B,CAAC;wBAC5C,IAAI,EAAE,IAAK,CAAC,IAAI;wBAChB,YAAY,EAAE,IAAK,CAAC,YAAY;wBAChC,IAAI,EAAE,IAAK,CAAC,IAAI;wBAChB,IAAI,EAAE,IAAK,CAAC,IAAI;qBACjB,CAAC;AACF,oBAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;iBAClB;;AAGD,gBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAK,CAAC,IAAI,CAAC,EAAE;oBACrC,IAAI,CAAC,OAAO,CAAC;wBACX,GAAG,EAAE,CAAC,CAAC,GAAG;wBACV,KAAK,EAAE,eAAe,CAAC,KAAK;wBAC5B,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACpC,gCAAgC,CACjC;AACF,qBAAA,CAAC,CAAC;;oBAEH,OAAO,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;iBACnC;AACD,gBAAA,OAAO,CAAC,CAAC;AACX,aAAC,CAAC,EACF,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,EAClC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,EACjC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,KAAI;;gBAE7B,IAAI,WAAW,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,GAAG,WAAW,EAAE;oBACnD,IAAI,CAAC,OAAO,CAAC;wBACX,GAAG,EAAE,OAAO,CAAC,GAAG;wBAChB,KAAK,EAAE,eAAe,CAAC,KAAK;wBAC5B,OAAO,EACL,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,qBAAqB,CAAC;4BACpD,GAAG;AACH,4BAAA,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC;AAC9B,qBAAA,CAAC,CAAC;;oBAEH,OAAO,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;iBACzC;AACD,gBAAA,OAAO,OAAO,CAAC;AACjB,aAAC,CAAC,EACF,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,EAClC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAC3B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACZ,GAAG,CAAC,CAAC,IAAG;AACN,gBAAA,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC;AAC/C,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;;oBAC7D,IAAI,CAAC,oBAAoB,EAAE,CAAC;aAClC,CAAC,EACF,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAC3C,IAAI,CAAC,CAAC,CAAC,CACR,CAAC;AACJ,SAAC,CAAC;AAEM,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,IAAS,KAAI;AAC/B,YAAA,IAAI,IAAI,CAAC,KAAK,KAAK,eAAe,CAAC,IAAI;AAAE,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAE9D,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAEzB,YAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAC7C,QAAQ,CAAC,MAAM,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAChE,GAAG,CAAC,CAAC,KAAqB,KAAI;gBAC5B,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,cAAc,EAAE;oBAC/C,IAAI,CAAC,WAAW,CAAC;wBACf,GAAG,EAAE,IAAI,CAAC,GAAG;AACb,wBAAA,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAM,CAAC;AAC1D,qBAAA,CAAC,CAAC;iBACJ;gBAED,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,QAAQ,EAAE;AACzC,oBAAA,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;iBACtD;aACF,CAAC,EACF,SAAS,CACP,CAAC,KAAqB,KAAK,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,cAAc,CACvE,EACD,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,OAAO,CAAC;oBACX,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,KAAK,EAAE,eAAe,CAAC,IAAI;AAC3B,oBAAA,OAAO,EAAE,yBAAyB;AACnC,iBAAA,CAAC,CAAC;AACH,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;aACjB,CAAC,CACH,CAAC;AACJ,SAAC,CAAC;AAEF;;;AAGG;AACM,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAC1C,CAAC,KAA+B,KAAK,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CACrE,CAAC;AAEF;;;AAGG;QACM,IAA4B,CAAA,4BAAA,GAAG,IAAI,CAAC,MAAM,CACjD,CAAC,MAAkC,KACjC,MAAM,CAAC,IAAI,CACT,SAAS,CAAC,KAAK,IACb,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAChE,CACF,CACJ,CAAC;AAEF;;AAEG;QACM,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,KAA+B,KAAI;AACpE,YAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AACvE,SAAC,CAAC,CAAC;QAEM,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC,MAAM,CAC9B,CAAC,KAAyC,KACxC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAChE,CAAC;AAEF;;AAEG;QACM,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,MAAkC,KACpE,MAAM,CAAC,IAAI,CACT,SAAS,CAAC,KAAK,IACb,KAAK,CACH,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,IACf,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAClE,CACF,CACF,CACF,CACF,CAAC;AAhZA,QAAA,IAAI,kBAAkB;AAAE,YAAA,IAAI,CAAC,EAAE,GAAG,kBAAkB,CAAC;KACtD;AAnBU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,4FAc1B,oBAAoB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAdnB,yBAAyB,EAAA,CAAA,CAAA,EAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC,UAAU;;0BAcN,QAAQ;;0BACR,MAAM;2BAAC,oBAAoB,CAAA;;;MCjEnB,YAAY,CAAA;AAHzB,IAAA,WAAA,GAAA;QAIiC,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AAEtC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAO,CAAC;AA0BjD,KAAA;;AAvBuC,IAAA,UAAU,CAAC,GAAU,EAAA;QACzD,GAAG,CAAC,cAAc,EAAE,CAAC;QACrB,GAAG,CAAC,eAAe,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;KACtB;;AAG6C,IAAA,WAAW,CAAC,GAAU,EAAA;QAClE,GAAG,CAAC,cAAc,EAAE,CAAC;QACrB,GAAG,CAAC,eAAe,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACvB;;AAGwC,IAAA,MAAM,CAAC,GAAQ,EAAA;QACtD,GAAG,CAAC,cAAc,EAAE,CAAC;QACrB,GAAG,CAAC,eAAe,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACtB,QAAA,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC;AACrC,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACpB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC9B;KACF;8GA5BU,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAZ,YAAY,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,UAAU;AACrB,iBAAA,CAAA;8BAEgC,QAAQ,EAAA,CAAA;sBAAtC,WAAW;uBAAC,gBAAgB,CAAA;gBAEnB,WAAW,EAAA,CAAA;sBAApB,MAAM;gBAG+B,UAAU,EAAA,CAAA;sBAA/C,YAAY;uBAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAOU,WAAW,EAAA,CAAA;sBAAxD,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAOI,MAAM,EAAA,CAAA;sBAA9C,YAAY;uBAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAA;;;ACFlC,IAAI,OAAO,GAAG,CAAC,CAAC;MAmCH,6BAA6B,CAAA;AAiDxC,IAAA,WAAA,CACS,MAAiB,EAChB,SAA2B,EAC3B,eAA0C,EAAA;QAF3C,IAAM,CAAA,MAAA,GAAN,MAAM,CAAW;QAChB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;QAC3B,IAAe,CAAA,eAAA,GAAf,eAAe,CAA2B;QAlDpD,IAAM,CAAA,MAAA,GAAa,EAAE,CAAC;QACtB,IAAY,CAAA,YAAA,GAAG,EAAE,CAAC;QAGlB,IAAW,CAAA,WAAA,GAAG,CAAC,CAAC;QAGhB,IAAa,CAAA,aAAA,GAAG,CAAC,CAAC;QAGlB,IAAY,CAAA,YAAA,GAAG,IAAI,CAAC;QAGpB,IAAY,CAAA,YAAA,GAAmB,EAAE,CAAC;QAGlC,IAAY,CAAA,YAAA,GAAG,EAAE,CAAC;QAGlB,IAA+B,CAAA,+BAAA,GAAG,2BAA2B,CAAC;AAQ9D,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAqC,CAAC;AAElE;;;;;;;AAOG;AAGI,QAAA,IAAA,CAAA,MAAM,GAAG,CAAA,yBAAA,EAA4B,OAAO,EAAE,EAAE,CAAC;AAKxD,QAAA,IAAA,CAAA,OAAO,GAAG,CAAA,YAAA,EAAe,OAAO,CAAA,CAAE,CAAC;QACnC,IAAoB,CAAA,oBAAA,GAAG,EAAE,CAAC;AAOxB,QAAA,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;QAErC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC;KACtE;IAED,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1B,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM;iBAC5B,GAAG,CAAC,GAAG,IAAG;gBACT,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;gBACpC,OAAO,CAAA,CAAA,EAAI,CAAC,CAAA,CAAE,CAAC;AACjB,aAAC,CAAC;iBACD,MAAM,CAAC,GAAG,IAAG;AACZ,gBAAA,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;AACxB,aAAC,CAAC;iBACD,IAAI,CAAC,IAAI,CAAC,CAAC;YAEd,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC7C;QAED,IAAI,CAAC,oBAAoB,GAAG,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1D,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACvD;AAED;;AAEG;AACH,IAAA,aAAa,CAAC,MAAgB,EAAA;AAC5B,QAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;KAC/B;AAED;;AAEG;AACH,IAAA,iBAAiB,CAAC,MAAa,EAAA;QAC7B,MAAM,GAAG,GAAG,MAAM,CAAC,MAA0B,EAC3C,KAAK,GAAG,GAAG,CAAC,KAAiB,CAAC;AAEhC,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;KAC9B;AAED;;;AAGG;AACH,IAAA,gBAAgB,CAAC,KAAe,EAAA;AAC9B,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,IAAG;;AAE1D,YAAA,IACE,IAAI,CAAC,aAAa,GAAG,CAAC;gBACtB,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,EAChD;;gBAEA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CACxC,4BAA4B,CAC7B,CAAC;aACH;iBAAM;;AAEL,gBAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;gBAEvB,MAAM,EAAE,GAAmB,EAAE,CAAC;AAC9B,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACrC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC3B,IAAI,IAAI,KAAK,IAAI;wBAAE,SAAS;AAE5B,oBAAA,MAAM,IAAI,GAAiB;wBACzB,IAAI;AACJ,wBAAA,QAAQ,EAAE,CAAC;AACX,wBAAA,OAAO,EAAE,EAAE;AACX,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,GAAG,EAAE,IAAI;AACT,wBAAA,EAAE,EAAE,IAAI;wBACR,iBAAiB,EAAE,IAAI,CAAC,YAAY;wBAEpC,IAAI,EAAE,IAAK,CAAC,IAAI;wBAChB,YAAY,EAAE,IAAK,CAAC,YAAY;wBAChC,IAAI,EAAE,IAAK,CAAC,IAAI;wBAChB,IAAI,EAAE,IAAK,CAAC,IAAI;qBACjB,CAAC;AAEF,oBAAA,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACf;gBAED,IAAI,IAAI,CAAC,YAAY;AAAE,oBAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;;AACvD,oBAAA,IAAI,CAAC,eAAe,CAAC,4BAA4B,CAAC,EAAE,CAAC,CAAC;gBAE3D,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC;aAC7C;AACH,SAAC,CAAC,CAAC;KACJ;8GA/IU,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,yBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA7B,6BAA6B,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,+BAAA,EAAA,iCAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,aAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChE1C,m2DAoEA,EDlCc,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,UAAA,EAAA;YACV,OAAO,CAAC,gBAAgB,EAAE;gBACxB,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;gBAClC,UAAU,CAAC,QAAQ,EAAE;AACnB,oBAAA,OAAO,CACL,GAAG,EACH,SAAS,CAAC;wBACR,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;wBAChC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;wBACtC,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;wBACpC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;wBACtC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AACjC,qBAAA,CAAC,CACH;iBACF,CAAC;gBACF,UAAU,CAAC,QAAQ,EAAE;AACnB,oBAAA,OAAO,CACL,GAAG,EACH,SAAS,CAAC;wBACR,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;wBAChC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;wBACtC,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;wBACpC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;wBACtC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AACjC,qBAAA,CAAC,CACH;iBACF,CAAC;aACH,CAAC;AACH,SAAA,EAAA,CAAA,CAAA,EAAA;;2FAEU,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAjCzC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,EAEvB,UAAA,EAAA;wBACV,OAAO,CAAC,gBAAgB,EAAE;4BACxB,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;4BAClC,UAAU,CAAC,QAAQ,EAAE;AACnB,gCAAA,OAAO,CACL,GAAG,EACH,SAAS,CAAC;oCACR,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;oCAChC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;oCACtC,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;oCACpC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;oCACtC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AACjC,iCAAA,CAAC,CACH;6BACF,CAAC;4BACF,UAAU,CAAC,QAAQ,EAAE;AACnB,gCAAA,OAAO,CACL,GAAG,EACH,SAAS,CAAC;oCACR,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;oCAChC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;oCACtC,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;oCACpC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;oCACtC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AACjC,iCAAA,CAAC,CACH;6BACF,CAAC;yBACH,CAAC;AACH,qBAAA,EAAA,QAAA,EAAA,m2DAAA,EAAA,CAAA;sJAID,MAAM,EAAA,CAAA;sBADL,KAAK;gBAKN,WAAW,EAAA,CAAA;sBADV,KAAK;gBAIN,aAAa,EAAA,CAAA;sBADZ,KAAK;gBAIN,YAAY,EAAA,CAAA;sBADX,KAAK;gBAIN,YAAY,EAAA,CAAA;sBADX,KAAK;gBAIN,YAAY,EAAA,CAAA;sBADX,KAAK;gBAIN,+BAA+B,EAAA,CAAA;sBAD9B,KAAK;gBAOG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBAcC,MAAM,EAAA,CAAA;sBAFZ,WAAW;uBAAC,cAAc,CAAA;;sBAC1B,KAAK;gBAIN,WAAW,EAAA,CAAA;sBADV,SAAS;uBAAC,CAAa,WAAA,CAAA,CAAA;;;AExGb,MAAA,UAAU,GAAU;IAC/B,yBAAyB;IACzB,6BAA6B;;;MCsBlB,0BAA0B,CAAA;8GAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAA1B,0BAA0B,EAAA,YAAA,EAAA,CAAAI,yBAAA,EAAAC,6BAAA,EAbV,YAAY,CAAA,EAAA,OAAA,EAAA,CAErC,YAAY;YACZ,mBAAmB;YACnB,eAAe;YACf,gBAAgB;YAChB,eAAe;YACf,eAAe;YACf,aAAa;YACb,cAAc,CAAA,EAAA,OAAA,EAAA,CAAAD,yBAAA,EAAAC,6BAAA,CAAA,EAAA,CAAA,CAAA,EAAA;AAIL,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,YAXnC,YAAY;YACZ,mBAAmB;YACnB,eAAe;YACf,gBAAgB;YAChB,eAAe;YACf,eAAe;YACf,aAAa;YACb,cAAc,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAIL,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAdtC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,UAAU,EAAE,YAAY,CAAC;AACxC,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,eAAe;wBACf,gBAAgB;wBAChB,eAAe;wBACf,eAAe;wBACf,aAAa;wBACb,cAAc;AACf,qBAAA;oBACD,OAAO,EAAE,CAAC,UAAU,CAAC;AACtB,iBAAA,CAAA;;;AC1BD;;AAEG;;ACFH;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"onemrvapublic-design-system-mat-file-upload.mjs","sources":["../../../../projects/onemrva/design-system/mat-file-upload/src/models/progress-file.model.ts","../../../../projects/onemrva/design-system/mat-file-upload/src/components/onemrva-mat-file-panel/onemrva-file-panel.component.ts","../../../../projects/onemrva/design-system/mat-file-upload/src/components/onemrva-mat-file-panel/onemrva-file-panel.component.html","../../../../projects/onemrva/design-system/mat-file-upload/src/onemrva-mat-file-upload.service.ts","../../../../projects/onemrva/design-system/mat-file-upload/src/onemrva-mat-file-upload.store.ts","../../../../projects/onemrva/design-system/mat-file-upload/src/directives/dnd.directive.ts","../../../../projects/onemrva/design-system/mat-file-upload/src/components/onemrva-mat-file-upload/onemrva-mat-file-upload.component.ts","../../../../projects/onemrva/design-system/mat-file-upload/src/components/onemrva-mat-file-upload/onemrva-mat-file-upload.component.html","../../../../projects/onemrva/design-system/mat-file-upload/src/components/index.ts","../../../../projects/onemrva/design-system/mat-file-upload/src/onemrva-mat-file-upload.module.ts","../../../../projects/onemrva/design-system/mat-file-upload/index.ts","../../../../projects/onemrva/design-system/mat-file-upload/onemrvapublic-design-system-mat-file-upload.ts"],"sourcesContent":["import { OnemrvaMatColor } from '@onemrvapublic/design-system/utils';\n\nexport interface ProgressFile {\n file?: File;\n message: string;\n progress: number;\n color: OnemrvaMatColor; // color 1 - 1 with status\n url: string | null;\n id: string | null; // backend identifier\n enableProgressBar: boolean;\n data?: any;\n\n name: string;\n lastModified?: number;\n size: number;\n type: string;\n}\n\nexport interface ReferencedProgressFile extends ProgressFile {\n ref: symbol; // ref is a frontend identifier\n}\n\n/**\n * format bytes\n * @param bytes (File size in bytes)\n * @param decimals (Decimals point)\n */\nexport function formatBytes(bytes: number, decimals = 2) {\n if (bytes === 0) {\n return '0 Bytes';\n }\n const k = 1024;\n const dm = decimals <= 0 ? 0 : decimals || 2;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\n}\n\nexport function formattedSize(size: number, decimals = 2) {\n return formatBytes(size, decimals);\n}\n\nexport function convertToProgressFile(\n id: string,\n name: string,\n message = '',\n progress = 100,\n color = OnemrvaMatColor.PRIMARY,\n url: string | null = null,\n enableProgressBar = false,\n data: string | null = null,\n size = 0,\n type = '',\n): ProgressFile {\n return {\n id: id!,\n name: name!,\n message: message,\n progress: progress,\n color: color,\n url: url,\n enableProgressBar: enableProgressBar,\n data: data,\n size: size,\n type: type,\n };\n}\n\nexport function convertToReferencedProgressFile(\n id: string,\n name: string,\n message = '',\n progress = 100,\n color = OnemrvaMatColor.PRIMARY,\n url: string | null = null,\n enableProgressBar = false,\n data: string | null = null,\n size = 0,\n type = '',\n): ReferencedProgressFile {\n return {\n id: id!,\n ref: Symbol(name),\n name: name!,\n message: message,\n progress: progress,\n color: color,\n url: url,\n enableProgressBar: enableProgressBar,\n data: data,\n size: size,\n type: type,\n };\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n} from '@angular/core';\nimport { OnemrvaMatColor } from '@onemrvapublic/design-system/utils';\nimport { of } from 'rxjs';\nimport { ActionConfig } from '../../models/action-config.model';\nimport {\n formattedSize,\n ReferencedProgressFile,\n} from '../../models/progress-file.model';\n\nlet NEXT_ID = 0;\n\n@Component({\n selector: 'file-panel',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['./onemrva-file-panel.component.scss'],\n templateUrl: './onemrva-file-panel.component.html',\n})\nexport class OnemrvaFilePanelComponent {\n @HostBinding('attr.id')\n @Input()\n public id = `onemrva-file-panel-${NEXT_ID++}`;\n\n @HostBinding('attr.data-cy')\n @Input()\n dataCy: string = 'onemrva-file-panel-' + NEXT_ID;\n\n @Input()\n file!: ReferencedProgressFile;\n\n @Input()\n actions: ActionConfig[] = [];\n\n @Input()\n showProgress = true;\n\n @Input()\n displayDate = '';\n\n get progress$() {\n return of(this.file.progress);\n }\n\n get size() {\n return formattedSize(this.file.size);\n }\n\n get color(): OnemrvaMatColor {\n return this.file.color;\n }\n\n /** @hidden @internal */\n @HostBinding('mat-accent')\n public get _colorAccent(): boolean {\n return this.color === OnemrvaMatColor.ACCENT;\n }\n\n /** @hidden @internal */\n @HostBinding('class.mat-error')\n public get _isError(): boolean {\n return this.color === OnemrvaMatColor.ERROR;\n }\n /** @hidden @internal */\n @HostBinding('class.mat-warn')\n public get _isWarn(): boolean {\n return this.color === OnemrvaMatColor.WARN;\n }\n /** @hidden @internal */\n @HostBinding('class.mat-success')\n public get _isSuccess(): boolean {\n return this.color === OnemrvaMatColor.SUCCESS;\n }\n /** @hidden @internal */\n @HostBinding('class.mat-primary')\n public get _isPrimary(): boolean {\n return this.color === OnemrvaMatColor.PRIMARY;\n }\n}\n","<div class=\"file-panel-title\" [attr.data-cy]=\"dataCy\">\n <div class=\"file-panel-title-left\">\n <mat-icon *ngIf=\"file.color === 'error'\" class=\"filled mat-error\"\n >error</mat-icon\n >\n <mat-icon *ngIf=\"file.color === 'success'\" class=\"filled mat-success\"\n >check_circle</mat-icon\n >\n <mat-icon *ngIf=\"file.color === 'warn'\" class=\"filled mat-warn\"\n >warning</mat-icon\n >\n <span class=\"file-name\">\n {{ file.name }}\n </span>\n </div>\n <div class=\"file-panel-title-action\">\n <ng-container *ngIf=\"actions.length > 0\">\n <ng-container *ngFor=\"let action of actions\">\n <mat-icon\n *ngIf=\"action.showAction(file)\"\n role=\"button\"\n color=\"primary\"\n [attr.data-cy]=\"action.dataCy\"\n matTooltip=\"{{ action.tooltipCode | translate }}\"\n [attr.aria-label]=\"action.ariaCode | translate\"\n class=\"clickable\"\n (click)=\"action.clickHandler(file)\"\n >{{ action.iconName }}</mat-icon\n >\n </ng-container>\n </ng-container>\n </div>\n</div>\n<div class=\"file-panel-content\">\n <ng-container *ngIf=\"file.message === ''\">\n <div class=\"fileInfos\">\n <span>{{ displayDate }}</span>\n\n <span class=\"float-right\" *ngIf=\"file.size > 0\">{{ size }}</span>\n </div>\n\n <div\n class=\"onemrva-progress-bar\"\n *ngIf=\"showProgress && file.enableProgressBar\"\n >\n <div class=\"onemrva-progress-bar-outer mt-s\" #onemrvaProgressBar>\n <div\n class=\"onemrva-progress-bar-inner\"\n [ngStyle]=\"{ width: (progress$ | async) + '%' }\"\n [ngClass]=\"{\n 'progress-success': (progress$ | async)! >= 100,\n }\"\n data-cy=\"file-upload-progress\"\n [attr.value]=\"progress$ | async\"\n ></div>\n </div>\n </div>\n </ng-container>\n <p *ngIf=\"file.message !== ''\" class=\"message\">{{ file.message }}</p>\n</div>\n","import {\n HttpEvent,\n HttpEventType,\n HttpProgressEvent,\n HttpResponse,\n} from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { catchError, interval, map, Observable, of, take } from 'rxjs';\nimport { ProgressFile } from './models/progress-file.model';\n\nexport interface OnemrvaMatFileUploadInterface {\n listUploadedFiles: (inputs: any) => Observable<ProgressFile[]>;\n upload: (file: ProgressFile) => Observable<HttpEvent<any>>;\n deleteFile: (id: any) => Observable<any>;\n retry: (file: any) => Observable<any>;\n downloadFile?: (id: any) => Observable<any>;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class OnemrvaMatFileUploadService\n implements OnemrvaMatFileUploadInterface\n{\n constructor() {\n alert(\n \"Don't forget to add a provider in your component with your own implementation of OnemrvaMatFileUploadInterface. Check out the demo to have an example of how to do it\",\n );\n }\n\n listUploadedFiles(_inputs: any): Observable<ProgressFile[]> {\n return of([]);\n }\n\n upload(_file: ProgressFile): Observable<HttpEvent<any>> {\n return interval(50).pipe(\n take(101),\n map(i => {\n if (i < 100) {\n return {\n type: HttpEventType.UploadProgress,\n loaded: i,\n total: 100,\n } as HttpProgressEvent;\n } else {\n if (i >= 100 && Math.random() > 0.5) {\n throw 'Fake error thrown';\n }\n return new HttpResponse<any>();\n }\n }),\n catchError(() => of(new HttpResponse<any>({ body: {}, status: 500 }))),\n );\n }\n\n deleteFile(_id: any): Observable<any> {\n return of('F = m.a');\n }\n\n retry(file: any): Observable<any> {\n return of(file);\n }\n\n downloadFile(id: any): Observable<any> {\n alert(`Missing download implementation for file ID ${id}`);\n return of(true);\n }\n}\n","import { Inject, Injectable, InjectionToken, Optional } from '@angular/core';\nimport { ComponentStore } from '@ngrx/component-store';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n catchError,\n filter,\n forkJoin,\n interval,\n map,\n merge,\n mergeMap,\n Observable,\n of,\n switchMap,\n take,\n takeWhile,\n tap,\n throttle,\n withLatestFrom,\n} from 'rxjs';\nimport { OnemrvaMatFileUploadService } from './onemrva-mat-file-upload.service';\nimport {\n formattedSize,\n ProgressFile,\n ReferencedProgressFile,\n} from './models/progress-file.model';\nimport { HttpEvent, HttpEventType } from '@angular/common/http';\nimport { OnemrvaMatFileUploadStoreItf } from './onemrva-mat-file-upload-itf.store';\nimport { OnemrvaMatColor } from '@onemrvapublic/design-system/utils';\n\nexport interface FileUploadStoreEvent {\n type: string;\n payload?: any;\n}\n\nexport interface UploadState {\n upload: ReferencedProgressFile[];\n accept: string[];\n maxFileSize: number;\n fileUploadError: string;\n event: FileUploadStoreEvent;\n}\n\nconst INIT_STATE: UploadState = {\n upload: [],\n accept: [],\n maxFileSize: 0,\n fileUploadError: '',\n event: {\n type: 'INIT',\n },\n};\n\nexport type CustomValidationFn = (\n input: [ReferencedProgressFile, ReferencedProgressFile[]],\n) => ReferencedProgressFile;\n\nexport const CUSTOM_VALIDATION_FN = new InjectionToken<CustomValidationFn>(\n 'x1, x2 = (-b -+ sqrt(rho))/2a',\n);\n\n@Injectable()\nexport class OnemrvaMatFileUploadStore\n extends ComponentStore<UploadState>\n implements OnemrvaMatFileUploadStoreItf\n{\n private fn: CustomValidationFn = (\n x: [ReferencedProgressFile, ReferencedProgressFile[]],\n ) => {\n return x[0];\n };\n\n constructor(\n private fileUploadService: OnemrvaMatFileUploadService,\n private translateService: TranslateService,\n @Optional()\n @Inject(CUSTOM_VALIDATION_FN)\n public customValidationFn: CustomValidationFn,\n ) {\n super(INIT_STATE);\n if (customValidationFn) this.fn = customValidationFn;\n }\n\n /*\n * U P D A T E R S\n */\n public readonly setAccept = this.updater((state, accept: string[]) => ({\n ...state,\n accept,\n event: {\n type: 'setAccept',\n payload: accept,\n },\n }));\n\n public readonly setMaxFileSize = this.updater(\n (state, maxFileSize: number) => ({\n ...state,\n maxFileSize,\n event: {\n type: 'setMaxFileSize',\n payload: maxFileSize,\n },\n }),\n );\n\n private readonly emptyList = this.updater(state => {\n return {\n ...state,\n upload: [],\n event: {\n type: 'emptyList',\n },\n };\n });\n\n private readonly pushFile = this.updater(\n (state, payload: ReferencedProgressFile) => {\n return {\n ...state,\n upload: [...state.upload, { ...payload }],\n event: {\n type: 'pushFile',\n payload,\n },\n };\n },\n );\n\n public readonly setData = this.updater(\n (state, payload: { ref: symbol; data: any }) => {\n return {\n ...state,\n upload: state.upload.map((file: ReferencedProgressFile) =>\n file.ref === payload.ref ? { ...file, data: payload.data } : file,\n ),\n event: {\n type: 'setData',\n payload,\n },\n };\n },\n );\n\n private readonly setSuccess = this.updater(\n (state, payload: { ref: symbol; body: any }) => {\n const newFile = {\n ...state.upload.find(f => f.ref === payload.ref),\n ...payload.body,\n color: 'success',\n progress: 100,\n };\n\n return {\n ...state,\n upload: state.upload.map(file =>\n file.ref === payload.ref ? newFile : file,\n ),\n event: {\n type: 'setData',\n payload: newFile,\n },\n };\n },\n );\n\n private readonly setFail = this.updater(\n (\n state,\n payload: { ref: symbol; message: string; color: OnemrvaMatColor },\n ) => ({\n ...state,\n upload: state.upload.map(file =>\n file.ref === payload.ref\n ? { ...file, message: payload.message, color: payload.color }\n : file,\n ),\n event: {\n type: 'setFail',\n payload,\n },\n }),\n );\n\n private readonly setProgress = this.updater(\n (state, payload: { ref: symbol; progress: number }) => ({\n ...state,\n upload: state.upload.map(file =>\n file.ref === payload.ref\n ? { ...file, progress: payload.progress }\n : file,\n ),\n event: {\n type: 'setProgress',\n payload,\n },\n }),\n );\n\n private readonly reset = this.updater((state, ref: symbol) => ({\n ...state,\n upload: state.upload.map(file =>\n file.ref === ref\n ? { ...file, progress: 0, message: '', color: '' }\n : file,\n ),\n event: {\n type: 'reset',\n payload: ref,\n },\n }));\n\n private readonly remove = this.updater(\n (state, payload: ReferencedProgressFile) => ({\n ...state,\n upload: state.upload.filter(f => f.ref !== payload.ref),\n event: {\n type: 'remove',\n payload,\n },\n }),\n );\n\n private readonly enableProgressBar = this.updater(state => ({\n ...state,\n upload: state.upload.map(file => ({ ...file, enableProgressBar: true })),\n event: {\n type: 'enableProgressBar',\n },\n }));\n\n public readonly setFileUploadError = this.updater(\n (state, fileUploadError: string) => ({\n ...state,\n fileUploadError,\n event: {\n type: 'setFileUploadError',\n payload: fileUploadError,\n },\n }),\n );\n\n public readonly clearFileUploadError = this.updater(state => ({\n ...state,\n fileUploadError: '',\n event: {\n type: 'clearFileUploadError',\n },\n }));\n\n /*\n * S E L E C T O R S\n */\n readonly files$ = this.select(state => state.upload);\n readonly accept$ = this.select(state => state.accept);\n readonly event$ = this.select(state => state.event);\n readonly maxFileSize$ = this.select(state => state.maxFileSize);\n readonly fileUploadError$ = this.select(state => state.fileUploadError);\n\n /*\n * A C T I O N S / E F F E C T S\n */\n readonly listUploadedFiles = this.effect((inputs$: Observable<any>) => {\n return inputs$.pipe(\n tap(() => {\n this.emptyList();\n }),\n mergeMap((inputs: any) => {\n return this.fileUploadService.listUploadedFiles(inputs).pipe(\n //take(1),\n withLatestFrom(this.files$),\n tap(() => {\n // added to avoid ide errors\n }),\n tap(([newfiles, registeredFiles]) => {\n newfiles.forEach(file => {\n if (\n registeredFiles.findIndex(rfile => rfile.id === file.id) < 0\n ) {\n this.pushFile({\n ...file,\n color: 'success',\n progress: 100,\n ref: Symbol('H.psi = E.psi'),\n name: file!.name,\n lastModified: file!.lastModified,\n size: file!.size,\n type: file!.type,\n });\n }\n });\n }),\n catchError(() => of([])),\n );\n }),\n );\n });\n\n readonly deleteFile = this.effect(\n (file$: Observable<ReferencedProgressFile>) => {\n return file$.pipe(\n tap(() => {\n this.clearFileUploadError();\n }),\n withLatestFrom(this.files$),\n map(this.fn),\n mergeMap((file: any) =>\n this.fileUploadService.deleteFile(file.id).pipe(\n //take(1),\n tap(() => {\n this.remove(file);\n }),\n catchError(() => {\n this.setFail({\n ref: file.ref,\n color: OnemrvaMatColor.WARN,\n message: 'file.upload.delete.error',\n });\n return of(null);\n }),\n ),\n ),\n );\n },\n );\n\n readonly removeFile = this.effect(\n (file$: Observable<ReferencedProgressFile>) => {\n return file$.pipe(\n tap(() => {\n this.clearFileUploadError();\n }),\n withLatestFrom(this.files$),\n map(this.fn),\n tap(file => {\n this.remove(file);\n }),\n );\n },\n );\n\n private progressFileChecker = (file$: Observable<any>) => {\n return file$.pipe(\n withLatestFrom(this.accept$),\n\n map(([file, accept]) => {\n // Step 1 - Add a new file in the view\n let f: ReferencedProgressFile = { ...file };\n if (file.ref === undefined) {\n f = {\n ...f,\n ref: Symbol('v_sound = sqrt(gamma.P / rho)'),\n name: file!.name,\n lastModified: file!.lastModified,\n size: file!.size,\n type: file!.type,\n };\n this.pushFile(f);\n }\n\n // Step 2 - Check file extension\n if (!accept.includes(file.file!.type)) {\n this.setFail({\n ref: f.ref,\n color: OnemrvaMatColor.ERROR,\n message: this.translateService.instant(\n 'file.upload.type.not.supported',\n ),\n });\n // This trick coupled with the next filter is used to avoid catchError, which would break the effect\n return { ...f, message: 'ERROR' };\n }\n return f;\n }),\n filter(x => x.message !== 'ERROR'),\n withLatestFrom(this.maxFileSize$),\n\n map(([refFile, maxFileSize]) => {\n // Step 3 - Check file size\n if (maxFileSize !== 0 && refFile.size > maxFileSize) {\n this.setFail({\n ref: refFile.ref,\n color: OnemrvaMatColor.ERROR,\n message:\n this.translateService.instant('file.upload.too.big') +\n ' ' +\n formattedSize(refFile.size),\n });\n // Same trick for error management\n return { ...refFile, message: 'ERROR' };\n }\n return refFile;\n }),\n filter(x => x.message !== 'ERROR'),\n withLatestFrom(this.files$),\n map(this.fn), // For custom validations\n tap(x => {\n if (!!x.message && x.message.startsWith('ERROR:'))\n this.setFileUploadError(x.message.replace('ERROR:', '').trim());\n else this.clearFileUploadError();\n }),\n filter(x => !x.message.startsWith('ERROR')),\n );\n };\n\n private loadStep = (file: any) => {\n if (file.color === OnemrvaMatColor.WARN) this.reset(file.ref);\n\n this.enableProgressBar();\n\n return this.fileUploadService.upload(file).pipe(\n throttle(() => interval(200), { leading: true, trailing: true }),\n tap((event: HttpEvent<any>) => {\n if (event.type === HttpEventType.UploadProgress) {\n this.setProgress({\n ref: file.ref,\n progress: Math.round((100 * event.loaded) / event.total!),\n });\n }\n\n if (event.type === HttpEventType.Response) {\n this.setSuccess({ ref: file.ref, body: event.body });\n }\n }),\n takeWhile(\n (event: HttpEvent<any>) => event.type === HttpEventType.UploadProgress,\n ),\n catchError(() => {\n this.setFail({\n ref: file.ref,\n color: OnemrvaMatColor.WARN,\n message: 'file.upload.retry.error',\n });\n return of(null);\n }),\n );\n };\n\n /**\n * For adding one file panel (creation of file panel reference skipped if already created) at a time.\n * Upload to BE not triggered\n */\n readonly addForPotentialUpload = this.effect(\n (file$: Observable<ProgressFile>) => this.progressFileChecker(file$),\n );\n\n /**\n * For adding an array of file panels (creation of file panels reference skipped if already created).\n * Uploads to BE not triggered\n */\n readonly addSeveralForPotentialUpload = this.effect(\n (files$: Observable<ProgressFile[]>) =>\n files$.pipe(\n switchMap(files =>\n forkJoin(files.map(file => this.progressFileChecker(of(file)))),\n ),\n ),\n );\n\n /**\n * For adding a file panel (creation of file panels reference skipped if already created) then uploading it\n */\n readonly uploadFile = this.effect((file$: Observable<ProgressFile>) => {\n return this.progressFileChecker(file$).pipe(mergeMap(this.loadStep));\n });\n\n readonly retryFile = this.effect(\n (file$: Observable<ReferencedProgressFile>) =>\n this.progressFileChecker(file$).pipe(mergeMap(this.loadStep)),\n );\n\n /**\n * For adding several file panels (creation of file panels reference skipped if already created) then uploading them\n */\n readonly uploadFiles = this.effect((files$: Observable<ProgressFile[]>) =>\n files$.pipe(\n switchMap(files =>\n merge(\n ...files.map(file =>\n this.progressFileChecker(of(file)).pipe(switchMap(this.loadStep)),\n ),\n ),\n ),\n ),\n );\n}\n","import {\n Directive,\n Output,\n EventEmitter,\n HostBinding,\n HostListener,\n} from '@angular/core';\n\n@Directive({\n selector: '[appDnd]',\n})\nexport class DndDirective {\n @HostBinding('class.fileover') fileOver = false;\n\n @Output() fileDropped = new EventEmitter<any>();\n\n // Dragover listener\n @HostListener('dragover', ['$event']) onDragOver(evt: Event) {\n evt.preventDefault();\n evt.stopPropagation();\n this.fileOver = true;\n }\n\n // Dragleave listener\n @HostListener('dragleave', ['$event']) public onDragLeave(evt: Event) {\n evt.preventDefault();\n evt.stopPropagation();\n this.fileOver = false;\n }\n\n // Drop listener\n @HostListener('drop', ['$event']) public ondrop(evt: any) {\n evt.preventDefault();\n evt.stopPropagation();\n this.fileOver = false;\n const files = evt.dataTransfer.files;\n if (files.length > 0) {\n this.fileDropped.emit(files);\n }\n }\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnInit,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Observable, take } from 'rxjs';\nimport {\n state,\n keyframes,\n style,\n animate,\n trigger,\n transition,\n} from '@angular/animations';\nimport {\n formatBytes,\n ProgressFile,\n ReferencedProgressFile,\n} from '../../models/progress-file.model';\nimport { OnemrvaMatFileUploadStore } from '../../onemrva-mat-file-upload.store';\nimport { TranslateService } from '@ngx-translate/core';\nimport * as mime from 'mime-types';\n\nlet NEXT_ID = 0;\n\n@Component({\n selector: 'onemrva-mat-file-upload',\n templateUrl: 'onemrva-mat-file-upload.component.html',\n animations: [\n trigger('inOutAnimation', [\n state('in', style({ opacity: 1 })),\n transition(':enter', [\n animate(\n 300,\n keyframes([\n style({ opacity: 0, offset: 0 }),\n style({ opacity: 0.25, offset: 0.25 }),\n style({ opacity: 0.5, offset: 0.5 }),\n style({ opacity: 0.75, offset: 0.75 }),\n style({ opacity: 1, offset: 1 }),\n ]),\n ),\n ]),\n transition(':leave', [\n animate(\n 300,\n keyframes([\n style({ opacity: 1, offset: 0 }),\n style({ opacity: 0.75, offset: 0.25 }),\n style({ opacity: 0.5, offset: 0.5 }),\n style({ opacity: 0.25, offset: 0.75 }),\n style({ opacity: 0, offset: 1 }),\n ]),\n ),\n ]),\n ]),\n ],\n})\nexport class OnemrvaMatFileUploadComponent implements OnInit {\n @Input()\n accept: string[] = [];\n acceptString = '';\n\n @Input()\n maxFileSize = 0;\n\n @Input()\n numberOfFiles = 0;\n\n @Input()\n uploadOnDrop = true;\n\n @Input()\n initialFiles: ProgressFile[] = [];\n\n @Input()\n errorMessage = '';\n\n @Input()\n dropFilesHereTextTranslationKey = 'file.upload.drag.and.drop';\n\n fileUploadErrorMessage$: Observable<string>;\n\n files$: Observable<ReferencedProgressFile[]>;\n\n @Input() filePanelTemplate!: TemplateRef<any>;\n\n retryFile = new EventEmitter<{ index: number; cmpRef: symbol }>();\n\n /**\n * Sets the `data-cy` of the element. If not set, the first component instance will have `data-cy` = `\"onemrva-mat-multi-select-0\"`.\n *\n * @example\n * ```html\n * <onemrva-mat-multi-select id=\"my-first-multi-select\"></onemrva-mat-multi-select>\n * ```\n */\n @HostBinding('attr.data-cy')\n @Input()\n public dataCy = `onemrva-mat-multi-select-${NEXT_ID++}`;\n\n @ViewChild(`fileDropRef`)\n fileDropRef!: ElementRef;\n\n inputId = `fileDropRef-${NEXT_ID}`;\n maxFileSizeFormatted = '';\n\n constructor(\n public dialog: MatDialog,\n private translate: TranslateService,\n private fileUploadStore: OnemrvaMatFileUploadStore,\n ) {\n this.files$ = fileUploadStore.files$;\n\n this.fileUploadErrorMessage$ = this.fileUploadStore.fileUploadError$;\n }\n\n ngOnInit(): void {\n if (this.accept.length > 0) {\n this.acceptString = this.accept\n .map(val => {\n const t = mime.extension(val || '');\n return `.${t}`;\n })\n .filter(val => {\n return val.length > 1;\n })\n .join(', ');\n\n this.fileUploadStore.setAccept(this.accept);\n }\n\n this.maxFileSizeFormatted = formatBytes(this.maxFileSize);\n this.fileUploadStore.setMaxFileSize(this.maxFileSize);\n }\n\n /**\n * on file drop handler\n */\n onFileDropped($event: FileList) {\n this.prepareFilesList($event);\n }\n\n /**\n * handle file from browsing\n */\n fileBrowseHandler($event: Event) {\n const elm = $event.target as HTMLInputElement,\n files = elm.files as FileList;\n\n this.prepareFilesList(files);\n }\n\n /**\n * Convert Files list to normal array list\n * @param files (Files List)\n */\n prepareFilesList(files: FileList) {\n this.fileUploadStore.files$.pipe(take(1)).subscribe(value => {\n // if numberOffiles is set and the total length of files is smaller than it\n if (\n this.numberOfFiles > 0 &&\n files.length + value.length > this.numberOfFiles\n ) {\n // too many files\n this.errorMessage = this.translate.instant(\n 'file.upload.too.many.files',\n );\n } else {\n // clear error message\n this.errorMessage = '';\n\n const fs: ProgressFile[] = [];\n for (let i = 0; i < files.length; i++) {\n const file = files.item(i);\n if (file === null) continue;\n\n const item: ProgressFile = {\n file,\n progress: 0,\n message: '',\n color: 'primary',\n url: null,\n id: null,\n enableProgressBar: this.uploadOnDrop,\n\n name: file!.name,\n lastModified: file!.lastModified,\n size: file!.size,\n type: file!.type,\n };\n\n fs.push(item);\n }\n\n if (this.uploadOnDrop) this.fileUploadStore.uploadFiles(fs);\n else this.fileUploadStore.addSeveralForPotentialUpload(fs);\n\n this.fileDropRef.nativeElement.value = null;\n }\n });\n }\n}\n","<ng-container *ngIf=\"files$ | async as files\">\n <div\n class=\"onemrva-mat-file-upload-drop-area\"\n appDnd\n (fileDropped)=\"onFileDropped($event)\"\n [ngClass]=\"{\n 'fu-error': errorMessage !== '',\n filein: files.length > 0,\n }\"\n >\n <input\n type=\"file\"\n #fileDropRef\n [attr.id]=\"inputId\"\n role=\"button\"\n multiple\n (change)=\"fileBrowseHandler($event)\"\n accept=\"{{ acceptString }}\"\n />\n <div\n class=\"download-outer\"\n *ngIf=\"numberOfFiles === 0 || numberOfFiles > files.length\"\n >\n <div class=\"download-icon\">\n <mat-icon class=\"onemrva-upload xxlarge\">download</mat-icon>\n </div>\n\n <div class=\"download-text\">\n {{ dropFilesHereTextTranslationKey | translate }}\n {{ 'file.upload.or' | translate }}\n <label for=\"{{ inputId }}\" class=\"content\">\n {{ 'file.upload.browse.for.file' | translate }} </label\n ><br />\n <span class=\"restrictions\" *ngIf=\"maxFileSize > 0\">\n {{ 'file.upload.maximum' | translate }}\n {{ maxFileSizeFormatted }}\n\n <span *ngIf=\"acceptString.length > 0\">{{ '| ' }}</span>\n\n {{ acceptString }}\n </span>\n </div>\n </div>\n <ul class=\"files-list\">\n <li *ngFor=\"let file of files\">\n <ng-container\n *ngTemplateOutlet=\"\n filePanelTemplate;\n context: { file, $implicit: file }\n \"\n ></ng-container>\n </li>\n </ul>\n </div>\n\n <mat-error *ngIf=\"errorMessage\">{{ errorMessage | translate }}</mat-error>\n\n <mat-error *ngIf=\"fileUploadErrorMessage$ | async as fileUploadErrorMessage\">\n {{ fileUploadErrorMessage | translate }}\n </mat-error>\n</ng-container>\n","import { OnemrvaFilePanelComponent } from './onemrva-mat-file-panel/onemrva-file-panel.component';\nimport { OnemrvaMatFileUploadComponent } from './onemrva-mat-file-upload/onemrva-mat-file-upload.component';\n\nexport const components: any[] = [\n OnemrvaFilePanelComponent,\n OnemrvaMatFileUploadComponent,\n];\n\nexport * from './onemrva-mat-file-panel/onemrva-file-panel.component';\nexport * from './onemrva-mat-file-upload/onemrva-mat-file-upload.component';\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DndDirective } from './directives/dnd.directive';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { components } from './components';\nimport { MatInputModule } from '@angular/material/input';\n\n@NgModule({\n declarations: [components, DndDirective],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatButtonModule,\n MatTooltipModule,\n MatDialogModule,\n TranslateModule,\n MatIconModule,\n MatInputModule,\n ],\n exports: [components],\n})\nexport class OnemrvaMatFileUploadModule {}\n","/*\n * Public API Surface of mat-file upload\n */\n\nexport * from './src/components';\nexport * from './src/onemrva-mat-file-upload.module';\nexport * from './src/onemrva-mat-file-upload.store';\nexport * from './src/onemrva-mat-file-upload.service';\nexport * from './src/models/progress-file.model';\nexport * from './src/models/action-config.model';\nexport * from './src/onemrva-mat-file-upload-itf.store';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["NEXT_ID","i4","i1","i2","i3.OnemrvaMatFileUploadStore","i5","i7.DndDirective","i1.OnemrvaFilePanelComponent","i2.OnemrvaMatFileUploadComponent"],"mappings":"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"}
|
|
@@ -86,59 +86,33 @@
|
|
|
86
86
|
&.fu-error {
|
|
87
87
|
border: dashed 2px utils.palette($theme, 'error', 600);
|
|
88
88
|
}
|
|
89
|
-
mat-icon.onemrva-upload {
|
|
90
|
-
color: utils.palette($theme, 'grayscale', 700);
|
|
91
|
-
width: 60px;
|
|
92
|
-
height: 40px;
|
|
93
|
-
line-height: 40px;
|
|
94
|
-
font-size: 64px;
|
|
95
|
-
}
|
|
96
89
|
input[type='file'] {
|
|
97
90
|
display: none;
|
|
98
91
|
}
|
|
99
|
-
.outer {
|
|
100
|
-
display:
|
|
101
|
-
width: 100%;
|
|
102
|
-
margin: 0 0 3 * $spacer 0;
|
|
103
|
-
}
|
|
104
|
-
.inner {
|
|
105
|
-
display: inline-block;
|
|
92
|
+
.download-outer {
|
|
93
|
+
display: flex;
|
|
106
94
|
width: 100%;
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
95
|
+
margin: 0;
|
|
96
|
+
.download-icon {
|
|
97
|
+
padding-right: $spacer;
|
|
98
|
+
}
|
|
99
|
+
.download-text {
|
|
100
|
+
label {
|
|
101
|
+
color: utils.palette($theme, 'primary', 500);
|
|
102
|
+
text-decoration: underline;
|
|
103
|
+
cursor: pointer;
|
|
104
|
+
font-weight: bold;
|
|
105
|
+
}
|
|
106
|
+
.restrictions {
|
|
107
|
+
display: block;
|
|
108
|
+
color: utils.palette($theme, 'grayscale', 500);
|
|
109
|
+
margin-bottom: 0;
|
|
110
|
+
}
|
|
123
111
|
}
|
|
124
112
|
}
|
|
125
113
|
&.filein {
|
|
126
|
-
.
|
|
127
|
-
|
|
128
|
-
animation-fill-mode: forwards;
|
|
129
|
-
&:nth-child(1) {
|
|
130
|
-
margin-bottom: 0;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
mat-icon {
|
|
134
|
-
width: 24px;
|
|
135
|
-
height: 24px;
|
|
136
|
-
line-height: 24px;
|
|
137
|
-
font-size: 24px;
|
|
138
|
-
}
|
|
139
|
-
&:nth-child(4) {
|
|
140
|
-
padding-left: 30px;
|
|
141
|
-
}
|
|
114
|
+
.download-outer {
|
|
115
|
+
margin: 0 0 3 * $spacer 0;
|
|
142
116
|
}
|
|
143
117
|
}
|
|
144
118
|
&.fileover {
|