http-request-manager 15.0.4 → 15.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (22) hide show
  1. package/README.md +13 -0
  2. package/esm2022/lib/file-downloader-action/download-action/download-action.component.mjs +79 -0
  3. package/esm2022/lib/file-downloader-action/file-download-action.component.mjs +78 -0
  4. package/esm2022/lib/file-downloader-action/file-download-action.module.mjs +42 -0
  5. package/esm2022/lib/file-downloader-action/models/download-labels-model.mjs +11 -0
  6. package/esm2022/lib/file-downloader-action/spinner/spinner.component.mjs +29 -0
  7. package/esm2022/lib/http-request-manager.module.mjs +2 -2
  8. package/esm2022/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.mjs +1 -1
  9. package/esm2022/lib/services/utils/encryption/asymmetrical-encryption.service.mjs +1 -1
  10. package/esm2022/lib/services/utils/encryption/symmetrical-encryption.service.mjs +163 -27
  11. package/fesm2022/http-request-manager.mjs +383 -36
  12. package/fesm2022/http-request-manager.mjs.map +1 -1
  13. package/http-request-manager-15.0.9.tgz +0 -0
  14. package/lib/file-downloader-action/download-action/download-action.component.d.ts +26 -0
  15. package/lib/file-downloader-action/file-download-action.component.d.ts +22 -0
  16. package/lib/file-downloader-action/file-download-action.module.d.ts +13 -0
  17. package/lib/file-downloader-action/models/download-labels-model.d.ts +12 -0
  18. package/lib/file-downloader-action/spinner/spinner.component.d.ts +16 -0
  19. package/lib/http-request-manager.module.d.ts +1 -1
  20. package/lib/services/utils/encryption/symmetrical-encryption.service.d.ts +12 -1
  21. package/package.json +2 -4
  22. package/http-request-manager-15.0.4.tgz +0 -0
package/README.md CHANGED
@@ -3,6 +3,19 @@
3
3
  ## Summary of the Lib
4
4
  The HTTPManagerService is designed to handle HTTP requests and return Observables, providing an efficient and streamlined way to interact with external APIs or services in your Angular application. This service can be imported and used directly or extended to suit your specific needs.
5
5
 
6
+ ## Required Configuration
7
+
8
+ App.module.ts add the following providers - AppService
9
+ This will allow the `http-request-manager` to use the app-id you assign as a encryption/decryption key for the `local-storage-manager`
10
+
11
+ ```
12
+ {
13
+ provide: APP_ID,
14
+ useValue: '561324eb4fadb840330cd5ac4db67bef', // Replace with your unique application ID
15
+ },
16
+ AppService
17
+ ```
18
+
6
19
  ## Features of the Lib
7
20
  ### Error Handling
8
21
  The example defines an errorRetry$ observable that captures errors using the catchError operator and enables retry logic. This observable can be utilized in your component templates to handle and display errors, making error management more flexible.
@@ -0,0 +1,79 @@
1
+ import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';
2
+ import { Subscription, timer } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "@angular/material/icon";
6
+ import * as i3 from "@angular/material/progress-spinner";
7
+ import * as i4 from "@angular/material/button";
8
+ export class DownloaderActionComponent {
9
+ constructor() {
10
+ this.subscriptions = new Subscription();
11
+ this.displayError = 3; // seconds
12
+ this.diameter = 32;
13
+ this.mode = 'determinate';
14
+ this.isPending = false;
15
+ this.active = false;
16
+ this.disabled = false;
17
+ this.error = new EventEmitter();
18
+ this._progress = 0;
19
+ this._hasError = false;
20
+ this.errorTimerActive = false;
21
+ }
22
+ set progress(value) {
23
+ this._progress = value ?? 0;
24
+ }
25
+ get progress() {
26
+ return this._progress;
27
+ }
28
+ set hasError(value) {
29
+ this._hasError = !!value;
30
+ if (this._hasError && !this.errorTimerActive) {
31
+ this.errorTimerActive = true;
32
+ this.error.emit();
33
+ this.subscriptions.add(timer(this.displayError * 1000)
34
+ .subscribe((err) => {
35
+ this._hasError = false;
36
+ this.errorTimerActive = false;
37
+ }));
38
+ }
39
+ }
40
+ get hasError() {
41
+ return this._hasError;
42
+ }
43
+ ngOnInit() { }
44
+ onAction() {
45
+ this.isPending = false;
46
+ if (this.event)
47
+ this.event();
48
+ }
49
+ ngOnDestroy() {
50
+ this.subscriptions.unsubscribe();
51
+ }
52
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DownloaderActionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
53
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DownloaderActionComponent, selector: "app-downloader-action", inputs: { event: "event", displayError: "displayError", diameter: "diameter", mode: "mode", isPending: "isPending", active: "active", disabled: "disabled", progress: "progress", hasError: "hasError" }, outputs: { error: "error" }, ngImport: i0, template: "<ng-container *ngIf=\"!isPending; else DOWNLOADING\">\n <ng-container *ngIf=\"hasError; else NORMAL\">\n <div class=\"width center-txt\" style=\"margin-bottom: 4px;\">\n <mat-icon color=\"warn\" class=\"warn-icon\">warning</mat-icon>\n </div>\n </ng-container>\n <ng-template #NORMAL>\n <ng-container *ngIf=\"active; else ACTION\">\n\n <div class=\"container-obj\">\n <div class=\"centered-obj-div\">\n <mat-progress-spinner\n color=\"primary\"\n mode=\"indeterminate\"\n [diameter]=\"44\"\n ></mat-progress-spinner>\n </div>\n </div>\n\n </ng-container>\n <ng-template #ACTION>\n <button data-tracking=\"export-btn\" mat-icon-button (click)=\"onAction()\" class=\"icon-button\" [disabled]=\"disabled\">\n <mat-icon class=\"custom-icon\">file_download</mat-icon>\n </button>\n </ng-template>\n </ng-template>\n</ng-container>\n\n<ng-template #DOWNLOADING>\n <div\n class=\"spinner-container\"\n *ngIf=\"(progress > 0 && progress < 100); else INDETERMINATE\"\n >\n <div class=\"spinner-background\">\n {{progress}}%\n </div>\n <mat-progress-spinner\n color=\"primary\"\n [mode]=\"mode\"\n [value]=\"progress\"\n [diameter]=\"44\"\n ></mat-progress-spinner>\n </div>\n <ng-template #INDETERMINATE>\n <div class=\"container-obj\">\n <div class=\"centered-obj-div\">\n <mat-progress-spinner\n color=\"primary\"\n mode=\"indeterminate\"\n [diameter]=\"44\"\n ></mat-progress-spinner>\n </div>\n </div>\n </ng-template>\n\n</ng-template>\n\n\n\n\n", styles: [":not(spinner-container).spinner-container{position:relative}:not(spinner-container).spinner-container .spinner-background{position:absolute;width:44px;height:44px;font-size:12px;line-height:32px;text-align:center;overflow:hidden;border-radius:50%;border:solid 5px whitesmoke}.center-txt{align-content:center;text-align:-webkit-center}.width{width:48px;height:48px}.icon-button{display:flex;align-items:center;justify-content:center;width:48px;height:48px;padding:0}.container-obj{display:flex;justify-content:center;align-items:center;width:48px;height:48px}.centered-obj-div{text-align:center}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], encapsulation: i0.ViewEncapsulation.None }); }
54
+ }
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DownloaderActionComponent, decorators: [{
56
+ type: Component,
57
+ args: [{ selector: 'app-downloader-action', encapsulation: ViewEncapsulation.None, template: "<ng-container *ngIf=\"!isPending; else DOWNLOADING\">\n <ng-container *ngIf=\"hasError; else NORMAL\">\n <div class=\"width center-txt\" style=\"margin-bottom: 4px;\">\n <mat-icon color=\"warn\" class=\"warn-icon\">warning</mat-icon>\n </div>\n </ng-container>\n <ng-template #NORMAL>\n <ng-container *ngIf=\"active; else ACTION\">\n\n <div class=\"container-obj\">\n <div class=\"centered-obj-div\">\n <mat-progress-spinner\n color=\"primary\"\n mode=\"indeterminate\"\n [diameter]=\"44\"\n ></mat-progress-spinner>\n </div>\n </div>\n\n </ng-container>\n <ng-template #ACTION>\n <button data-tracking=\"export-btn\" mat-icon-button (click)=\"onAction()\" class=\"icon-button\" [disabled]=\"disabled\">\n <mat-icon class=\"custom-icon\">file_download</mat-icon>\n </button>\n </ng-template>\n </ng-template>\n</ng-container>\n\n<ng-template #DOWNLOADING>\n <div\n class=\"spinner-container\"\n *ngIf=\"(progress > 0 && progress < 100); else INDETERMINATE\"\n >\n <div class=\"spinner-background\">\n {{progress}}%\n </div>\n <mat-progress-spinner\n color=\"primary\"\n [mode]=\"mode\"\n [value]=\"progress\"\n [diameter]=\"44\"\n ></mat-progress-spinner>\n </div>\n <ng-template #INDETERMINATE>\n <div class=\"container-obj\">\n <div class=\"centered-obj-div\">\n <mat-progress-spinner\n color=\"primary\"\n mode=\"indeterminate\"\n [diameter]=\"44\"\n ></mat-progress-spinner>\n </div>\n </div>\n </ng-template>\n\n</ng-template>\n\n\n\n\n", styles: [":not(spinner-container).spinner-container{position:relative}:not(spinner-container).spinner-container .spinner-background{position:absolute;width:44px;height:44px;font-size:12px;line-height:32px;text-align:center;overflow:hidden;border-radius:50%;border:solid 5px whitesmoke}.center-txt{align-content:center;text-align:-webkit-center}.width{width:48px;height:48px}.icon-button{display:flex;align-items:center;justify-content:center;width:48px;height:48px;padding:0}.container-obj{display:flex;justify-content:center;align-items:center;width:48px;height:48px}.centered-obj-div{text-align:center}\n"] }]
58
+ }], propDecorators: { event: [{
59
+ type: Input
60
+ }], displayError: [{
61
+ type: Input
62
+ }], diameter: [{
63
+ type: Input
64
+ }], mode: [{
65
+ type: Input
66
+ }], isPending: [{
67
+ type: Input
68
+ }], active: [{
69
+ type: Input
70
+ }], disabled: [{
71
+ type: Input
72
+ }], error: [{
73
+ type: Output
74
+ }], progress: [{
75
+ type: Input
76
+ }], hasError: [{
77
+ type: Input
78
+ }] } });
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG93bmxvYWQtYWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2h0dHAtcmVxdWVzdC1tYW5hZ2VyL3NyYy9saWIvZmlsZS1kb3dubG9hZGVyLWFjdGlvbi9kb3dubG9hZC1hY3Rpb24vZG93bmxvYWQtYWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2h0dHAtcmVxdWVzdC1tYW5hZ2VyL3NyYy9saWIvZmlsZS1kb3dubG9hZGVyLWFjdGlvbi9kb3dubG9hZC1hY3Rpb24vZG93bmxvYWQtYWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbEcsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7OztBQVEzQyxNQUFNLE9BQU8seUJBQXlCO0lBTnRDO1FBUVUsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBR2xDLGlCQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVTtRQUM1QixhQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2QsU0FBSSxHQUF3QixhQUFhLENBQUM7UUFDMUMsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUVsQixXQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2YsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVoQixVQUFLLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUVuQyxjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBU2QsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixxQkFBZ0IsR0FBRyxLQUFLLENBQUM7S0FrQ2xDO0lBM0NDLElBQWEsUUFBUSxDQUFDLEtBQVU7UUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUtELElBQWEsUUFBUSxDQUFDLEtBQW9CO1FBRXhDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUV6QixJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDNUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztZQUM3QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFBO1lBQ2pCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUNwQixLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7aUJBQzlCLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNqQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDdkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztZQUNoQyxDQUFDLENBQUMsQ0FDSCxDQUFDO1NBQ0g7SUFFSCxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxRQUFRLEtBQUksQ0FBQztJQUViLFFBQVE7UUFDTixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQTtRQUN0QixJQUFJLElBQUksQ0FBQyxLQUFLO1lBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQzlCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUNsQyxDQUFDOytHQTFEVSx5QkFBeUI7bUdBQXpCLHlCQUF5QixvU0NWdEMsdW5EQTREQTs7NEZEbERhLHlCQUF5QjtrQkFOckMsU0FBUzsrQkFDRSx1QkFBdUIsaUJBR2xCLGlCQUFpQixDQUFDLElBQUk7OEJBTTVCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksS0FBSztzQkFBZCxNQUFNO2dCQUdNLFFBQVE7c0JBQXBCLEtBQUs7Z0JBV08sUUFBUTtzQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQcm9ncmVzc1NwaW5uZXJNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1kb3dubG9hZGVyLWFjdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kb3dubG9hZC1hY3Rpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kb3dubG9hZC1hY3Rpb24uY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgRG93bmxvYWRlckFjdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIEBJbnB1dCgpIGV2ZW50PzogRnVuY3Rpb247XG4gIEBJbnB1dCgpIGRpc3BsYXlFcnJvciA9IDM7IC8vIHNlY29uZHNcbiAgQElucHV0KCkgZGlhbWV0ZXIgPSAzMjtcbiAgQElucHV0KCkgbW9kZTogUHJvZ3Jlc3NTcGlubmVyTW9kZSA9ICdkZXRlcm1pbmF0ZSc7XG4gIEBJbnB1dCgpIGlzUGVuZGluZyA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGFjdGl2ZSA9IGZhbHNlO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBlcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBwcml2YXRlIF9wcm9ncmVzcyA9IDA7XG4gIEBJbnB1dCgpIHNldCBwcm9ncmVzcyh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5fcHJvZ3Jlc3MgPSB2YWx1ZSA/PyAwO1xuICB9XG5cbiAgZ2V0IHByb2dyZXNzKCkge1xuICAgIHJldHVybiB0aGlzLl9wcm9ncmVzcztcbiAgfVxuXG4gIHByaXZhdGUgX2hhc0Vycm9yID0gZmFsc2U7XG4gIHByaXZhdGUgZXJyb3JUaW1lckFjdGl2ZSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHNldCBoYXNFcnJvcih2YWx1ZTogYm9vbGVhbiB8IGFueSkge1xuXG4gICAgdGhpcy5faGFzRXJyb3IgPSAhIXZhbHVlO1xuXG4gICAgaWYgKHRoaXMuX2hhc0Vycm9yICYmICF0aGlzLmVycm9yVGltZXJBY3RpdmUpIHtcbiAgICAgIHRoaXMuZXJyb3JUaW1lckFjdGl2ZSA9IHRydWU7XG4gICAgICB0aGlzLmVycm9yLmVtaXQoKVxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgdGltZXIodGhpcy5kaXNwbGF5RXJyb3IgKiAxMDAwKVxuICAgICAgICAuc3Vic2NyaWJlKChlcnIpID0+IHtcbiAgICAgICAgICB0aGlzLl9oYXNFcnJvciA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZXJyb3JUaW1lckFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG5cbiAgfVxuXG4gIGdldCBoYXNFcnJvcigpIHtcbiAgICByZXR1cm4gdGhpcy5faGFzRXJyb3I7XG4gIH1cblxuICBuZ09uSW5pdCgpIHt9XG5cbiAgb25BY3Rpb24oKSB7XG4gICAgdGhpcy5pc1BlbmRpbmcgPSBmYWxzZVxuICAgIGlmICh0aGlzLmV2ZW50KSB0aGlzLmV2ZW50KClcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpXG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNQZW5kaW5nOyBlbHNlIERPV05MT0FESU5HXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNFcnJvcjsgZWxzZSBOT1JNQUxcIj5cbiAgICA8ZGl2IGNsYXNzPVwid2lkdGggY2VudGVyLXR4dFwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogNHB4O1wiPlxuICAgICAgPG1hdC1pY29uIGNvbG9yPVwid2FyblwiIGNsYXNzPVwid2Fybi1pY29uXCI+d2FybmluZzwvbWF0LWljb24+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctdGVtcGxhdGUgI05PUk1BTD5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aXZlOyBlbHNlIEFDVElPTlwiPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLW9ialwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2VudGVyZWQtb2JqLWRpdlwiPlxuICAgICAgICAgIDxtYXQtcHJvZ3Jlc3Mtc3Bpbm5lclxuICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgIG1vZGU9XCJpbmRldGVybWluYXRlXCJcbiAgICAgICAgICAgIFtkaWFtZXRlcl09XCI0NFwiXG4gICAgICAgICAgPjwvbWF0LXByb2dyZXNzLXNwaW5uZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy10ZW1wbGF0ZSAjQUNUSU9OPlxuICAgIDxidXR0b24gZGF0YS10cmFja2luZz1cImV4cG9ydC1idG5cIiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm9uQWN0aW9uKClcIiBjbGFzcz1cImljb24tYnV0dG9uXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJjdXN0b20taWNvblwiPmZpbGVfZG93bmxvYWQ8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L25nLXRlbXBsYXRlPlxuICA8L25nLXRlbXBsYXRlPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjRE9XTkxPQURJTkc+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNwaW5uZXItY29udGFpbmVyXCJcbiAgICAqbmdJZj1cIihwcm9ncmVzcyA+IDAgJiYgcHJvZ3Jlc3MgPCAxMDApOyBlbHNlIElOREVURVJNSU5BVEVcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cInNwaW5uZXItYmFja2dyb3VuZFwiPlxuICAgICAge3twcm9ncmVzc319JVxuICAgIDwvZGl2PlxuICAgIDxtYXQtcHJvZ3Jlc3Mtc3Bpbm5lclxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIFttb2RlXT1cIm1vZGVcIlxuICAgICAgW3ZhbHVlXT1cInByb2dyZXNzXCJcbiAgICAgIFtkaWFtZXRlcl09XCI0NFwiXG4gICAgPjwvbWF0LXByb2dyZXNzLXNwaW5uZXI+XG4gIDwvZGl2PlxuICA8bmctdGVtcGxhdGUgI0lOREVURVJNSU5BVEU+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1vYmpcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjZW50ZXJlZC1vYmotZGl2XCI+XG4gICAgICAgIDxtYXQtcHJvZ3Jlc3Mtc3Bpbm5lclxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgbW9kZT1cImluZGV0ZXJtaW5hdGVcIlxuICAgICAgICAgIFtkaWFtZXRlcl09XCI0NFwiXG4gICAgICAgID48L21hdC1wcm9ncmVzcy1zcGlubmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG5cbjwvbmctdGVtcGxhdGU+XG5cblxuXG5cbiJdfQ==
@@ -0,0 +1,78 @@
1
+ import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';
2
+ import { catchError, distinctUntilChanged } from 'rxjs/operators';
3
+ import { DownloadLabels } from './models/download-labels-model';
4
+ import { ToastDisplay, ToastColors } from 'toast-message-display';
5
+ import { HTTPManagerService } from '../services/request-manager-services';
6
+ import { ApiRequest } from '../services/request-manager-state-service';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "./download-action/download-action.component";
9
+ import * as i2 from "@angular/common";
10
+ export class FileDownloadActionComponent extends HTTPManagerService {
11
+ set labels(value) {
12
+ this._labels = (value) ? DownloadLabels.adapt(value) : DownloadLabels.adapt();
13
+ }
14
+ get labels() {
15
+ return this._labels;
16
+ }
17
+ constructor() {
18
+ super();
19
+ this.delayError = 3;
20
+ this.apiRequest = ApiRequest.adapt();
21
+ this.displayErrorMessage = false;
22
+ this._labels = DownloadLabels.adapt();
23
+ this.active = false;
24
+ this.completed = new EventEmitter();
25
+ this.disabled = false;
26
+ }
27
+ ngOnInit() {
28
+ this.error$.subscribe((err) => {
29
+ console.log('err', err);
30
+ });
31
+ }
32
+ onDownloadStreaming() {
33
+ if (this.active)
34
+ return;
35
+ this.active = true;
36
+ return this.downloadRequest(this.apiRequest)
37
+ .pipe(distinctUntilChanged(), catchError((err) => {
38
+ this.onError(err.message);
39
+ return err;
40
+ })).subscribe((res) => {
41
+ if (res === 100) {
42
+ this.active = false;
43
+ this.completed.emit();
44
+ }
45
+ });
46
+ }
47
+ onError(message) {
48
+ if (!message || !this.displayErrorMessage)
49
+ return;
50
+ const display = ToastDisplay.adapt({
51
+ message,
52
+ action: 'Ok',
53
+ color: ToastColors.ERROR,
54
+ icon: 'error',
55
+ });
56
+ this.active = false;
57
+ this.toastMessage.toastMessage(display);
58
+ }
59
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileDownloadActionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
60
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FileDownloadActionComponent, selector: "app-file-downloader-action", inputs: { delayError: "delayError", apiRequest: "apiRequest", displayErrorMessage: "displayErrorMessage", labels: "labels", disabled: "disabled" }, outputs: { completed: "completed" }, usesInheritance: true, ngImport: i0, template: "<app-downloader-action\n [disabled]=\"disabled\"\n [displayError]=\"3\"\n [event]=\"onDownloadStreaming.bind(this)\"\n [isPending]=\"(isPending$ | async) || false\"\n [progress]=\"(progress$ | async)\"\n [hasError]=\"(error$ | async)\"\n (error)=\"onError(labels.error)\"\n [active]=\"active\"\n></app-downloader-action>\n", styles: [".snackBarInfo{background-color:#f44336;color:#fff}.mat-simple-snackbar>span{font-weight:700}.mat-simple-snackbar-action .mat-button .mat-button-wrapper{color:#fff}.cdk-overlay-pane>.mat-snack-bar-container{width:100%}.mat-snack-bar-container{max-width:100%!important;width:100%}\n"], dependencies: [{ kind: "component", type: i1.DownloaderActionComponent, selector: "app-downloader-action", inputs: ["event", "displayError", "diameter", "mode", "isPending", "active", "disabled", "progress", "hasError"], outputs: ["error"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None }); }
61
+ }
62
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileDownloadActionComponent, decorators: [{
63
+ type: Component,
64
+ args: [{ selector: 'app-file-downloader-action', encapsulation: ViewEncapsulation.None, template: "<app-downloader-action\n [disabled]=\"disabled\"\n [displayError]=\"3\"\n [event]=\"onDownloadStreaming.bind(this)\"\n [isPending]=\"(isPending$ | async) || false\"\n [progress]=\"(progress$ | async)\"\n [hasError]=\"(error$ | async)\"\n (error)=\"onError(labels.error)\"\n [active]=\"active\"\n></app-downloader-action>\n", styles: [".snackBarInfo{background-color:#f44336;color:#fff}.mat-simple-snackbar>span{font-weight:700}.mat-simple-snackbar-action .mat-button .mat-button-wrapper{color:#fff}.cdk-overlay-pane>.mat-snack-bar-container{width:100%}.mat-snack-bar-container{max-width:100%!important;width:100%}\n"] }]
65
+ }], ctorParameters: function () { return []; }, propDecorators: { delayError: [{
66
+ type: Input
67
+ }], apiRequest: [{
68
+ type: Input
69
+ }], displayErrorMessage: [{
70
+ type: Input
71
+ }], labels: [{
72
+ type: Input
73
+ }], completed: [{
74
+ type: Output
75
+ }], disabled: [{
76
+ type: Input
77
+ }] } });
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1kb3dubG9hZC1hY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9maWxlLWRvd25sb2FkZXItYWN0aW9uL2ZpbGUtZG93bmxvYWQtYWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2h0dHAtcmVxdWVzdC1tYW5hZ2VyL3NyYy9saWIvZmlsZS1kb3dubG9hZGVyLWFjdGlvbi9maWxlLWRvd25sb2FkLWFjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxVQUFVLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7Ozs7QUFRdkUsTUFBTSxPQUFPLDJCQUE0QixTQUFRLGtCQUF1QjtJQU90RSxJQUFhLE1BQU0sQ0FBQyxLQUFxQjtRQUN2QyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUMvRSxDQUFDO0lBSUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFBO0lBQ3JCLENBQUM7SUFNRDtRQUNFLEtBQUssRUFBRSxDQUFBO1FBcEJBLGVBQVUsR0FBRyxDQUFDLENBQUE7UUFDZCxlQUFVLEdBQWUsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFBO1FBQzNDLHdCQUFtQixHQUFHLEtBQUssQ0FBQTtRQUVwQyxZQUFPLEdBQUcsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFBO1FBS2hDLFdBQU0sR0FBRyxLQUFLLENBQUE7UUFNSixjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQTtRQUVyQyxhQUFRLEdBQUcsS0FBSyxDQUFBO0lBSXpCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUM1QixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQTtRQUN6QixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxtQkFBbUI7UUFFakIsSUFBRyxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU07UUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUE7UUFFbEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7YUFDM0MsSUFBSSxDQUNILG9CQUFvQixFQUFFLEVBQ3RCLFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1lBQ3pCLE9BQU8sR0FBRyxDQUFBO1FBQ1osQ0FBQyxDQUFDLENBQ0gsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUV2QixJQUFHLEdBQUcsS0FBSyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUE7Z0JBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUE7YUFDdEI7UUFFSCxDQUFDLENBQUMsQ0FBQTtJQUVKLENBQUM7SUFFRCxPQUFPLENBQUMsT0FBZTtRQUVyQixJQUFHLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQjtZQUFFLE9BQU07UUFFaEQsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQztZQUNqQyxPQUFPO1lBQ1AsTUFBTSxFQUFFLElBQUk7WUFDWixLQUFLLEVBQUUsV0FBVyxDQUFDLEtBQUs7WUFDeEIsSUFBSSxFQUFFLE9BQU87U0FDZCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQTtRQUVuQixJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUUxQyxDQUFDOytHQXJFVSwyQkFBMkI7bUdBQTNCLDJCQUEyQixrUkNmeEMsNFVBVUE7OzRGREthLDJCQUEyQjtrQkFOdkMsU0FBUzsrQkFDRSw0QkFBNEIsaUJBR3ZCLGlCQUFpQixDQUFDLElBQUk7MEVBSTVCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBR08sTUFBTTtzQkFBbEIsS0FBSztnQkFVSSxTQUFTO3NCQUFsQixNQUFNO2dCQUVFLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cblxuaW1wb3J0IHsgRG93bmxvYWRMYWJlbHMgfSBmcm9tICcuL21vZGVscy9kb3dubG9hZC1sYWJlbHMtbW9kZWwnO1xuaW1wb3J0IHsgVG9hc3REaXNwbGF5LCBUb2FzdENvbG9ycyB9IGZyb20gJ3RvYXN0LW1lc3NhZ2UtZGlzcGxheSc7XG5pbXBvcnQgeyBIVFRQTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9yZXF1ZXN0LW1hbmFnZXItc2VydmljZXMnO1xuaW1wb3J0IHsgQXBpUmVxdWVzdCB9IGZyb20gJy4uL3NlcnZpY2VzL3JlcXVlc3QtbWFuYWdlci1zdGF0ZS1zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWZpbGUtZG93bmxvYWRlci1hY3Rpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZS1kb3dubG9hZC1hY3Rpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWxlLWRvd25sb2FkLWFjdGlvbi5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBGaWxlRG93bmxvYWRBY3Rpb25Db21wb25lbnQgZXh0ZW5kcyBIVFRQTWFuYWdlclNlcnZpY2U8YW55PiBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KCkgZGVsYXlFcnJvciA9IDNcbiAgQElucHV0KCkgYXBpUmVxdWVzdDogQXBpUmVxdWVzdCA9IEFwaVJlcXVlc3QuYWRhcHQoKVxuICBASW5wdXQoKSBkaXNwbGF5RXJyb3JNZXNzYWdlID0gZmFsc2VcblxuICBfbGFiZWxzID0gRG93bmxvYWRMYWJlbHMuYWRhcHQoKVxuICBASW5wdXQoKSBzZXQgbGFiZWxzKHZhbHVlOiBEb3dubG9hZExhYmVscykge1xuICAgIHRoaXMuX2xhYmVscyA9ICh2YWx1ZSkgPyBEb3dubG9hZExhYmVscy5hZGFwdCh2YWx1ZSkgOiBEb3dubG9hZExhYmVscy5hZGFwdCgpXG4gIH1cblxuICBhY3RpdmUgPSBmYWxzZVxuXG4gIGdldCBsYWJlbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xhYmVsc1xuICB9XG5cbiAgQE91dHB1dCgpIGNvbXBsZXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKVxuXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2VcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpXG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmVycm9yJC5zdWJzY3JpYmUoKGVycikgPT4ge1xuICAgICAgY29uc29sZS5sb2coJ2VycicsIGVycilcbiAgICB9KVxuICB9XG5cbiAgb25Eb3dubG9hZFN0cmVhbWluZygpIHtcblxuICAgIGlmKHRoaXMuYWN0aXZlKSByZXR1cm5cbiAgICB0aGlzLmFjdGl2ZSA9IHRydWVcblxuICAgIHJldHVybiB0aGlzLmRvd25sb2FkUmVxdWVzdCh0aGlzLmFwaVJlcXVlc3QpXG4gICAgLnBpcGUoXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgIHRoaXMub25FcnJvcihlcnIubWVzc2FnZSlcbiAgICAgICAgcmV0dXJuIGVyclxuICAgICAgfSlcbiAgICApLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcblxuICAgICAgaWYocmVzID09PSAxMDApIHtcbiAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZVxuICAgICAgICB0aGlzLmNvbXBsZXRlZC5lbWl0KClcbiAgICAgIH1cblxuICAgIH0pXG5cbiAgfVxuXG4gIG9uRXJyb3IobWVzc2FnZTogc3RyaW5nKSB7XG5cbiAgICBpZighbWVzc2FnZSB8fCAhdGhpcy5kaXNwbGF5RXJyb3JNZXNzYWdlKSByZXR1cm5cblxuICAgIGNvbnN0IGRpc3BsYXkgPSBUb2FzdERpc3BsYXkuYWRhcHQoe1xuICAgICAgbWVzc2FnZSxcbiAgICAgIGFjdGlvbjogJ09rJyxcbiAgICAgIGNvbG9yOiBUb2FzdENvbG9ycy5FUlJPUixcbiAgICAgIGljb246ICdlcnJvcicsXG4gICAgfSk7XG5cbiAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlXG5cbiAgICB0aGlzLnRvYXN0TWVzc2FnZS50b2FzdE1lc3NhZ2UoZGlzcGxheSk7XG5cbiAgfVxuXG59XG4iLCI8YXBwLWRvd25sb2FkZXItYWN0aW9uXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFtkaXNwbGF5RXJyb3JdPVwiM1wiXG4gIFtldmVudF09XCJvbkRvd25sb2FkU3RyZWFtaW5nLmJpbmQodGhpcylcIlxuICBbaXNQZW5kaW5nXT1cIihpc1BlbmRpbmckIHwgYXN5bmMpIHx8IGZhbHNlXCJcbiAgW3Byb2dyZXNzXT1cIihwcm9ncmVzcyQgfCBhc3luYylcIlxuICBbaGFzRXJyb3JdPVwiKGVycm9yJCB8IGFzeW5jKVwiXG4gIChlcnJvcik9XCJvbkVycm9yKGxhYmVscy5lcnJvcilcIlxuICBbYWN0aXZlXT1cImFjdGl2ZVwiXG4+PC9hcHAtZG93bmxvYWRlci1hY3Rpb24+XG4iXX0=
@@ -0,0 +1,42 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { SpinnerComponent } from './spinner/spinner.component';
4
+ import { MatIconModule } from '@angular/material/icon';
5
+ import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
6
+ import { MatButtonModule } from '@angular/material/button';
7
+ import { DownloaderActionComponent } from './download-action/download-action.component';
8
+ import { FileDownloadActionComponent } from './file-download-action.component';
9
+ import * as i0 from "@angular/core";
10
+ export class FileDownloaderActionModule {
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileDownloaderActionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
12
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: FileDownloaderActionModule, declarations: [SpinnerComponent,
13
+ DownloaderActionComponent,
14
+ FileDownloadActionComponent], imports: [CommonModule,
15
+ MatIconModule,
16
+ MatProgressSpinnerModule,
17
+ MatButtonModule], exports: [FileDownloadActionComponent] }); }
18
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileDownloaderActionModule, imports: [CommonModule,
19
+ MatIconModule,
20
+ MatProgressSpinnerModule,
21
+ MatButtonModule] }); }
22
+ }
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileDownloaderActionModule, decorators: [{
24
+ type: NgModule,
25
+ args: [{
26
+ imports: [
27
+ CommonModule,
28
+ MatIconModule,
29
+ MatProgressSpinnerModule,
30
+ MatButtonModule,
31
+ ],
32
+ declarations: [
33
+ SpinnerComponent,
34
+ DownloaderActionComponent,
35
+ FileDownloadActionComponent,
36
+ ],
37
+ exports: [
38
+ FileDownloadActionComponent
39
+ ]
40
+ }]
41
+ }] });
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1kb3dubG9hZC1hY3Rpb24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9maWxlLWRvd25sb2FkZXItYWN0aW9uL2ZpbGUtZG93bmxvYWQtYWN0aW9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTNELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOztBQW1CL0UsTUFBTSxPQUFPLDBCQUEwQjsrR0FBMUIsMEJBQTBCO2dIQUExQiwwQkFBMEIsaUJBUm5DLGdCQUFnQjtZQUNoQix5QkFBeUI7WUFDekIsMkJBQTJCLGFBUjNCLFlBQVk7WUFDWixhQUFhO1lBQ2Isd0JBQXdCO1lBQ3hCLGVBQWUsYUFRZiwyQkFBMkI7Z0hBR2xCLDBCQUEwQixZQWRuQyxZQUFZO1lBQ1osYUFBYTtZQUNiLHdCQUF3QjtZQUN4QixlQUFlOzs0RkFXTiwwQkFBMEI7a0JBaEJ0QyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGFBQWE7d0JBQ2Isd0JBQXdCO3dCQUN4QixlQUFlO3FCQUNoQjtvQkFDRCxZQUFZLEVBQUU7d0JBQ1osZ0JBQWdCO3dCQUNoQix5QkFBeUI7d0JBQ3pCLDJCQUEyQjtxQkFDNUI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLDJCQUEyQjtxQkFDNUI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHsgU3Bpbm5lckNvbXBvbmVudCB9IGZyb20gJy4vc3Bpbm5lci9zcGlubmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5cbmltcG9ydCB7IERvd25sb2FkZXJBY3Rpb25Db21wb25lbnQgfSBmcm9tICcuL2Rvd25sb2FkLWFjdGlvbi9kb3dubG9hZC1hY3Rpb24uY29tcG9uZW50JztcbmltcG9ydCB7IEZpbGVEb3dubG9hZEFjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vZmlsZS1kb3dubG9hZC1hY3Rpb24uY29tcG9uZW50JztcblxuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgU3Bpbm5lckNvbXBvbmVudCxcbiAgICBEb3dubG9hZGVyQWN0aW9uQ29tcG9uZW50LFxuICAgIEZpbGVEb3dubG9hZEFjdGlvbkNvbXBvbmVudCxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIEZpbGVEb3dubG9hZEFjdGlvbkNvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVEb3dubG9hZGVyQWN0aW9uTW9kdWxlIHsgfVxuIl19
@@ -0,0 +1,11 @@
1
+ export class DownloadLabels {
2
+ constructor(error = '', action = '', icon = 'error') {
3
+ this.error = error;
4
+ this.action = action;
5
+ this.icon = icon;
6
+ }
7
+ static adapt(item) {
8
+ return new DownloadLabels(item?.error, item?.action, item?.icon);
9
+ }
10
+ }
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG93bmxvYWQtbGFiZWxzLW1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9maWxlLWRvd25sb2FkZXItYWN0aW9uL21vZGVscy9kb3dubG9hZC1sYWJlbHMtbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsTUFBTSxPQUFPLGNBQWM7SUFDekIsWUFDUyxRQUFRLEVBQUUsRUFDVixTQUFTLEVBQUUsRUFDWCxPQUFPLE9BQU87UUFGZCxVQUFLLEdBQUwsS0FBSyxDQUFLO1FBQ1YsV0FBTSxHQUFOLE1BQU0sQ0FBSztRQUNYLFNBQUksR0FBSixJQUFJLENBQVU7SUFDcEIsQ0FBQztJQUVMLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBVTtRQUNwQixPQUFPLElBQUksY0FBYyxDQUN2QixJQUFJLEVBQUUsS0FBSyxFQUNYLElBQUksRUFBRSxNQUFNLEVBQ1osSUFBSSxFQUFFLElBQUksQ0FDWCxDQUFBO0lBRUgsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBEb3dubG9hZExhYmVsc0ludGVyZmFjZSB7XG4gIGVycm9yOiBzdHJpbmc7XG4gIGFjdGlvbjogc3RyaW5nO1xuICBpY29uOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBEb3dubG9hZExhYmVscyBpbXBsZW1lbnRzIERvd25sb2FkTGFiZWxzSW50ZXJmYWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGVycm9yID0gJycsXG4gICAgcHVibGljIGFjdGlvbiA9ICcnLFxuICAgIHB1YmxpYyBpY29uID0gJ2Vycm9yJyxcbiAgKSB7fVxuXG4gc3RhdGljIGFkYXB0KGl0ZW0/OiBhbnkpOiBEb3dubG9hZExhYmVsc0ludGVyZmFjZSB7XG4gICAgcmV0dXJuIG5ldyBEb3dubG9hZExhYmVscyhcbiAgICAgIGl0ZW0/LmVycm9yLFxuICAgICAgaXRlbT8uYWN0aW9uLFxuICAgICAgaXRlbT8uaWNvbixcbiAgICApXG5cbiAgfVxufVxuIl19
@@ -0,0 +1,29 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/material/progress-spinner";
4
+ export class SpinnerComponent {
5
+ constructor() {
6
+ this.value = 0;
7
+ }
8
+ ngOnInit() {
9
+ }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SpinnerComponent, selector: "app-spinner", inputs: { color: "color", diameter: "diameter", display: "display", mode: "mode", strokeWidth: "strokeWidth", value: "value" }, ngImport: i0, template: "<div class=\"spinner-background\">{{display}}</div>\n<mat-progress-spinner\n [color]=\"color\"\n [diameter]=\"diameter\"\n [mode]=\"mode || 'indeterminate'\"\n [strokeWidth]=\"strokeWidth\"\n [value]=\"value\">\n</mat-progress-spinner>\n", styles: [".example-h2{margin:24px 0}:not(spinner-container).spinner-container{position:relative}:not(spinner-container).spinner-container .spinner-background{position:absolute;width:80px;height:80px;line-height:80px;text-align:center;overflow:hidden;border-color:#673ab71f;border-radius:50%;border-style:solid;border-width:10px}\n"], dependencies: [{ kind: "component", type: i1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }] }); }
12
+ }
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SpinnerComponent, decorators: [{
14
+ type: Component,
15
+ args: [{ selector: 'app-spinner', template: "<div class=\"spinner-background\">{{display}}</div>\n<mat-progress-spinner\n [color]=\"color\"\n [diameter]=\"diameter\"\n [mode]=\"mode || 'indeterminate'\"\n [strokeWidth]=\"strokeWidth\"\n [value]=\"value\">\n</mat-progress-spinner>\n", styles: [".example-h2{margin:24px 0}:not(spinner-container).spinner-container{position:relative}:not(spinner-container).spinner-container .spinner-background{position:absolute;width:80px;height:80px;line-height:80px;text-align:center;overflow:hidden;border-color:#673ab71f;border-radius:50%;border-style:solid;border-width:10px}\n"] }]
16
+ }], ctorParameters: function () { return []; }, propDecorators: { color: [{
17
+ type: Input
18
+ }], diameter: [{
19
+ type: Input
20
+ }], display: [{
21
+ type: Input
22
+ }], mode: [{
23
+ type: Input
24
+ }], strokeWidth: [{
25
+ type: Input
26
+ }], value: [{
27
+ type: Input
28
+ }] } });
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bpbm5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL2ZpbGUtZG93bmxvYWRlci1hY3Rpb24vc3Bpbm5lci9zcGlubmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2h0dHAtcmVxdWVzdC1tYW5hZ2VyL3NyYy9saWIvZmlsZS1kb3dubG9hZGVyLWFjdGlvbi9zcGlubmVyL3NwaW5uZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7OztBQVN6RCxNQUFNLE9BQU8sZ0JBQWdCO0lBVTNCO1FBRlMsVUFBSyxHQUFHLENBQUMsQ0FBQTtJQUVGLENBQUM7SUFFakIsUUFBUTtJQUNSLENBQUM7K0dBYlUsZ0JBQWdCO21HQUFoQixnQkFBZ0IsbUxDVDdCLDhQQVFBOzs0RkRDYSxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0UsYUFBYTswRUFNZCxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaGVtZVBhbGV0dGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IFByb2dyZXNzU3Bpbm5lck1vZGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXNwaW5uZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vc3Bpbm5lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NwaW5uZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTcGlubmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKSBjb2xvcjogVGhlbWVQYWxldHRlO1xuXG4gIEBJbnB1dCgpIGRpYW1ldGVyPzogbnVtYmVyO1xuICBASW5wdXQoKSBkaXNwbGF5Pzogc3RyaW5nIHwgbnVtYmVyO1xuICBASW5wdXQoKSBtb2RlPzogUHJvZ3Jlc3NTcGlubmVyTW9kZTtcbiAgQElucHV0KCkgc3Ryb2tlV2lkdGg/OiBudW1iZXI7XG4gIEBJbnB1dCgpIHZhbHVlID0gMFxuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cInNwaW5uZXItYmFja2dyb3VuZFwiPnt7ZGlzcGxheX19PC9kaXY+XG48bWF0LXByb2dyZXNzLXNwaW5uZXJcbiAgICBbY29sb3JdPVwiY29sb3JcIlxuICAgIFtkaWFtZXRlcl09XCJkaWFtZXRlclwiXG4gICAgW21vZGVdPVwibW9kZSB8fCAnaW5kZXRlcm1pbmF0ZSdcIlxuICAgIFtzdHJva2VXaWR0aF09XCJzdHJva2VXaWR0aFwiXG4gICAgW3ZhbHVlXT1cInZhbHVlXCI+XG48L21hdC1wcm9ncmVzcy1zcGlubmVyPlxuIl19
@@ -29,7 +29,7 @@ import { HttpRequestServicesDemoComponent } from './http-request-services-demo/h
29
29
  import { ConfigOptions } from './models';
30
30
  import { CONFIG_SETTINGS_TOKEN } from './models/config-token.model';
31
31
  import { HTTPManagerService, LocalStorageManagerService } from './services';
32
- import { FileDownloaderActionModule } from 'file-downloader-action';
32
+ import { FileDownloaderActionModule } from './file-downloader-action/file-download-action.module';
33
33
  import * as i0 from "@angular/core";
34
34
  import * as i1 from "@ngx-translate/core";
35
35
  export class HttpRequestManagerModule {
@@ -143,4 +143,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
143
143
  ],
144
144
  }]
145
145
  }] });
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1yZXF1ZXN0LW1hbmFnZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9odHRwLXJlcXVlc3QtbWFuYWdlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHOUQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtGQUFrRixDQUFDO0FBQy9ILE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDhGQUE4RixDQUFDO0FBQ2hKLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDhFQUE4RSxDQUFDO0FBQ3pILGtIQUFrSDtBQUVsSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFF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USxFQUFFLGFBQWEsQ0FBQyxLQUFLLEVBQUUsRUFBRTt3QkFDbkUsa0JBQWtCLEVBQUUsMEJBQTBCO3FCQUMvQztpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEhUVFBfSU5URVJDRVBUT1JTIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuXG5pbXBvcnQgeyBXaXRoQ3JlZGVudGlhbHNJbnRlcmNlcHRvciwgUmVxdWVzdEhlYWRlcnNJbnRlcmNlcHRvciB9IGZyb20gJy4vaW50ZXJjZXB0b3JzJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5pbXBvcnQgeyBSZXF1ZXN0TWFuYWdlckRlbW9Db21wb25lbnQgfSBmcm9tICcuL2h0dHAtcmVxdWVzdC1zZXJ2aWNlcy1kZW1vL3JlcXVlc3QtbWFuYWdlci1kZW1vL3JlcXVlc3QtbWFuYWdlci1kZW1vLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZXF1ZXN0TWFuYWdlclN0YXRlRGVtb0NvbXBvbmVudCB9IGZyb20gJy4vaHR0cC1yZXF1ZXN0LXNlcnZpY2VzLWRlbW8vcmVxdWVzdC1tYW5hZ2VyLXN0YXRlLWRlbW8vcmVxdWVzdC1tYW5hZ2VyLXN0YXRlLWRlbW8uY29tcG9uZW50JztcbmltcG9ydCB7IExvY2FsU3RvcmFnZURlbW9Db21wb25lbnQgfSBmcm9tICcuL2h0dHAtcmVxdWVzdC1zZXJ2aWNlcy1kZW1vL2xvY2FsLXN0b3JhZ2UtZGVtby9sb2NhbC1zdG9yYWdlLWRlbW8uY29tcG9uZW50Jztcbi8vIGltcG9ydCB7IERhdGFiYXNlRGF0YURlbW9Db21wb25lbnQgfSBmcm9tICcuL2dsb2JhbC1kYXRhLWRlbW8vZGF0YWJhc2UtZGF0YS1kZW1vL2RhdGFiYXNlLWRhdGEtZGVtby5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVG9hc3RNZXNzYWdlRGlzcGxheU1vZHVsZSB9IGZyb20gJ3RvYXN0LW1lc3NhZ2UtZGlzcGxheSc7XG5cbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRDaGlwc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzJztcbmltcG9ydCB7IE1hdERpdmlkZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaXZpZGVyJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc0Jhck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLWJhcic7XG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHsgTWF0U2lkZW5hdk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NpZGVuYXYnO1xuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGUnO1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgTWF0VG9vbGJhck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2xiYXInO1xuaW1wb3J0IHsgTWF0VGFibGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Ub2dnbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24tdG9nZ2xlJztcbmltcG9ydCB7IFByb3h5RGVidWdnZXJJbnRlcmNlcHRvciB9IGZyb20gJy4vaW50ZXJjZXB0b3JzL3Byb3h5LWRlYnVnZ2VyLmludGVyY2VwdG9yJztcblxuaW1wb3J0IHsgSHR0cFJlcXVlc3RTZXJ2aWNlc0RlbW9Db21wb25lbnQgfSBmcm9tICcuL2h0dHAtcmVxdWVzdC1zZXJ2aWNlcy1kZW1vL2h0dHAtcmVxdWVzdC1zZXJ2aWNlcy1kZW1vLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IENvbmZpZ09wdGlvbnMgfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQgeyBDT05GSUdfU0VUVElOR1NfVE9LRU4gfSBmcm9tICcuL21vZGVscy9jb25maWctdG9rZW4ubW9kZWwnO1xuaW1wb3J0IHsgSFRUUE1hbmFnZXJTZXJ2aWNlLCBMb2NhbFN0b3JhZ2VNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMnO1xuXG5pbXBvcnQgeyBGaWxlRG93bmxvYWRlckFjdGlvbk1vZHVsZSB9IGZyb20gJ2ZpbGUtZG93bmxvYWRlci1hY3Rpb24nO1xuXG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgVG9hc3RNZXNzYWdlRGlzcGxheU1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRTZWxlY3RNb2R1bGUsXG4gICAgTWF0Q2hpcHNNb2R1bGUsXG4gICAgTWF0TWVudU1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdFRhYmxlTW9kdWxlLFxuICAgIE1hdEJ1dHRvblRvZ2dsZU1vZHVsZSxcbiAgICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXG4gICAgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUsXG4gICAgTWF0U2xpZGVUb2dnbGVNb2R1bGUsXG4gICAgTWF0RGl2aWRlck1vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTWF0VG9vbGJhck1vZHVsZSxcbiAgICBNYXRTbGlkZVRvZ2dsZU1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUuZm9yUm9vdCgpLFxuICAgIE1hdFNpZGVuYXZNb2R1bGUsXG4gICAgRmlsZURvd25sb2FkZXJBY3Rpb25Nb2R1bGUsXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEh0dHBSZXF1ZXN0U2VydmljZXNEZW1vQ29tcG9uZW50LFxuICAgIFJlcXVlc3RNYW5hZ2VyU3RhdGVEZW1vQ29tcG9uZW50LFxuICAgIFJlcXVlc3RNYW5hZ2VyRGVtb0NvbXBvbmVudCxcbiAgICBMb2NhbFN0b3JhZ2VEZW1vQ29tcG9uZW50XG4gICAgLy8gRGF0YWJhc2VEYXRhRGVtb0NvbXBvbmVudCxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIEh0dHBSZXF1ZXN0U2VydmljZXNEZW1vQ29tcG9uZW50LFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLCB1c2VDbGFzczogV2l0aENyZWRlbnRpYWxzSW50ZXJjZXB0b3IsIG11bHRpOiB0cnVlIH0sXG4gICAgeyBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUywgdXNlQ2xhc3M6IFJlcXVlc3RIZWFkZXJzSW50ZXJjZXB0b3IsIG11bHRpOiB0cnVlIH0sXG4gICAgeyBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUywgdXNlQ2xhc3M6IFByb3h5RGVidWdnZXJJbnRlcmNlcHRvciwgbXVsdGk6IHRydWUgfSxcbiAgICB7IHByb3ZpZGU6IENPTkZJR19TRVRUSU5HU19UT0tFTiwgdXNlVmFsdWU6IENvbmZpZ09wdGlvbnMuYWRhcHQoKSB9LFxuICAgIEhUVFBNYW5hZ2VyU2VydmljZSwgTG9jYWxTdG9yYWdlTWFuYWdlclNlcnZpY2VcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgSHR0cFJlcXVlc3RNYW5hZ2VyTW9kdWxlIHtcblxuICBzdGF0aWMgZm9yUm9vdChjb25maWc6IENvbmZpZ09wdGlvbnMgPSBDb25maWdPcHRpb25zLmFkYXB0KCkpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEh0dHBSZXF1ZXN0TWFuYWdlck1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogSHR0cFJlcXVlc3RNYW5hZ2VyTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogQ09ORklHX1NFVFRJTkdTX1RPS0VOLCB1c2VWYWx1ZTogQ29uZmlnT3B0aW9ucy5hZGFwdChjb25maWcpIH0sXG4gICAgICAgIEhUVFBNYW5hZ2VyU2VydmljZSwgTG9jYWxTdG9yYWdlTWFuYWdlclNlcnZpY2UgLy9hbGwgc2VydmljZXMgdGhhdCBuZWVkIGFjY2VzcyB0byBjb25maWdcbiAgICAgIF0sXG4gICAgfTtcbiAgICB9XG5cbn1cblxuXG4iXX0=
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1yZXF1ZXN0LW1hbmFnZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9odHRwLXJlcXVlc3QtbWFuYWdlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHOUQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtGQUFrRixDQUFDO0FBQy9ILE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDhGQUE4RixDQUFDO0FBQ2hKLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDhFQUE4RSxDQUFDO0FBQ3pILGtIQUFrSDtBQUVsSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFF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USxFQUFFLGFBQWEsQ0FBQyxLQUFLLEVBQUUsRUFBRTt3QkFDbkUsa0JBQWtCLEVBQUUsMEJBQTBCO3FCQUMvQztpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEhUVFBfSU5URVJDRVBUT1JTIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuXG5pbXBvcnQgeyBXaXRoQ3JlZGVudGlhbHNJbnRlcmNlcHRvciwgUmVxdWVzdEhlYWRlcnNJbnRlcmNlcHRvciB9IGZyb20gJy4vaW50ZXJjZXB0b3JzJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5pbXBvcnQgeyBSZXF1ZXN0TWFuYWdlckRlbW9Db21wb25lbnQgfSBmcm9tICcuL2h0dHAtcmVxdWVzdC1zZXJ2aWNlcy1kZW1vL3JlcXVlc3QtbWFuYWdlci1kZW1vL3JlcXVlc3QtbWFuYWdlci1kZW1vLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZXF1ZXN0TWFuYWdlclN0YXRlRGVtb0NvbXBvbmVudCB9IGZyb20gJy4vaHR0cC1yZXF1ZXN0LXNlcnZpY2VzLWRlbW8vcmVxdWVzdC1tYW5hZ2VyLXN0YXRlLWRlbW8vcmVxdWVzdC1tYW5hZ2VyLXN0YXRlLWRlbW8uY29tcG9uZW50JztcbmltcG9ydCB7IExvY2FsU3RvcmFnZURlbW9Db21wb25lbnQgfSBmcm9tICcuL2h0dHAtcmVxdWVzdC1zZXJ2aWNlcy1kZW1vL2xvY2FsLXN0b3JhZ2UtZGVtby9sb2NhbC1zdG9yYWdlLWRlbW8uY29tcG9uZW50Jztcbi8vIGltcG9ydCB7IERhdGFiYXNlRGF0YURlbW9Db21wb25lbnQgfSBmcm9tICcuL2dsb2JhbC1kYXRhLWRlbW8vZGF0YWJhc2UtZGF0YS1kZW1vL2RhdGFiYXNlLWRhdGEtZGVtby5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVG9hc3RNZXNzYWdlRGlzcGxheU1vZHVsZSB9IGZyb20gJ3RvYXN0LW1lc3NhZ2UtZGlzcGxheSc7XG5cbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRDaGlwc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzJztcbmltcG9ydCB7IE1hdERpdmlkZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaXZpZGVyJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc0Jhck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLWJhcic7XG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHsgTWF0U2lkZW5hdk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NpZGVuYXYnO1xuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGUnO1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgTWF0VG9vbGJhck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2xiYXInO1xuaW1wb3J0IHsgTWF0VGFibGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Ub2dnbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24tdG9nZ2xlJztcbmltcG9ydCB7IFByb3h5RGVidWdnZXJJbnRlcmNlcHRvciB9IGZyb20gJy4vaW50ZXJjZXB0b3JzL3Byb3h5LWRlYnVnZ2VyLmludGVyY2VwdG9yJztcblxuaW1wb3J0IHsgSHR0cFJlcXVlc3RTZXJ2aWNlc0RlbW9Db21wb25lbnQgfSBmcm9tICcuL2h0dHAtcmVxdWVzdC1zZXJ2aWNlcy1kZW1vL2h0dHAtcmVxdWVzdC1zZXJ2aWNlcy1kZW1vLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IENvbmZpZ09wdGlvbnMgfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQgeyBDT05GSUdfU0VUVElOR1NfVE9LRU4gfSBmcm9tICcuL21vZGVscy9jb25maWctdG9rZW4ubW9kZWwnO1xuaW1wb3J0IHsgSFRUUE1hbmFnZXJTZXJ2aWNlLCBMb2NhbFN0b3JhZ2VNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMnO1xuaW1wb3J0IHsgRmlsZURvd25sb2FkZXJBY3Rpb25Nb2R1bGUgfSBmcm9tICcuL2ZpbGUtZG93bmxvYWRlci1hY3Rpb24vZmlsZS1kb3dubG9hZC1hY3Rpb24ubW9kdWxlJztcblxuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFRvYXN0TWVzc2FnZURpc3BsYXlNb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxuICAgIE1hdENoaXBzTW9kdWxlLFxuICAgIE1hdE1lbnVNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRUYWJsZU1vZHVsZSxcbiAgICBNYXRCdXR0b25Ub2dnbGVNb2R1bGUsXG4gICAgTWF0QXV0b2NvbXBsZXRlTW9kdWxlLFxuICAgIE1hdFByb2dyZXNzQmFyTW9kdWxlLFxuICAgIE1hdFNsaWRlVG9nZ2xlTW9kdWxlLFxuICAgIE1hdERpdmlkZXJNb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIE1hdFRvb2xiYXJNb2R1bGUsXG4gICAgTWF0U2xpZGVUb2dnbGVNb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLmZvclJvb3QoKSxcbiAgICBNYXRTaWRlbmF2TW9kdWxlLFxuICAgIEZpbGVEb3dubG9hZGVyQWN0aW9uTW9kdWxlLFxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBIdHRwUmVxdWVzdFNlcnZpY2VzRGVtb0NvbXBvbmVudCxcbiAgICBSZXF1ZXN0TWFuYWdlclN0YXRlRGVtb0NvbXBvbmVudCxcbiAgICBSZXF1ZXN0TWFuYWdlckRlbW9Db21wb25lbnQsXG4gICAgTG9jYWxTdG9yYWdlRGVtb0NvbXBvbmVudFxuICAgIC8vIERhdGFiYXNlRGF0YURlbW9Db21wb25lbnQsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBIdHRwUmVxdWVzdFNlcnZpY2VzRGVtb0NvbXBvbmVudCxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUywgdXNlQ2xhc3M6IFdpdGhDcmVkZW50aWFsc0ludGVyY2VwdG9yLCBtdWx0aTogdHJ1ZSB9LFxuICAgIHsgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsIHVzZUNsYXNzOiBSZXF1ZXN0SGVhZGVyc0ludGVyY2VwdG9yLCBtdWx0aTogdHJ1ZSB9LFxuICAgIHsgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsIHVzZUNsYXNzOiBQcm94eURlYnVnZ2VySW50ZXJjZXB0b3IsIG11bHRpOiB0cnVlIH0sXG4gICAgeyBwcm92aWRlOiBDT05GSUdfU0VUVElOR1NfVE9LRU4sIHVzZVZhbHVlOiBDb25maWdPcHRpb25zLmFkYXB0KCkgfSxcbiAgICBIVFRQTWFuYWdlclNlcnZpY2UsIExvY2FsU3RvcmFnZU1hbmFnZXJTZXJ2aWNlXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEh0dHBSZXF1ZXN0TWFuYWdlck1vZHVsZSB7XG5cbiAgc3RhdGljIGZvclJvb3QoY29uZmlnOiBDb25maWdPcHRpb25zID0gQ29uZmlnT3B0aW9ucy5hZGFwdCgpKTogTW9kdWxlV2l0aFByb3ZpZGVyczxIdHRwUmVxdWVzdE1hbmFnZXJNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEh0dHBSZXF1ZXN0TWFuYWdlck1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7IHByb3ZpZGU6IENPTkZJR19TRVRUSU5HU19UT0tFTiwgdXNlVmFsdWU6IENvbmZpZ09wdGlvbnMuYWRhcHQoY29uZmlnKSB9LFxuICAgICAgICBIVFRQTWFuYWdlclNlcnZpY2UsIExvY2FsU3RvcmFnZU1hbmFnZXJTZXJ2aWNlIC8vYWxsIHNlcnZpY2VzIHRoYXQgbmVlZCBhY2Nlc3MgdG8gY29uZmlnXG4gICAgICBdLFxuICAgIH07XG4gICAgfVxuXG59XG5cblxuIl19
@@ -20,7 +20,7 @@ import * as i9 from "@angular/material/progress-bar";
20
20
  import * as i10 from "@angular/material/slide-toggle";
21
21
  import * as i11 from "@angular/material/divider";
22
22
  import * as i12 from "@angular/material/input";
23
- import * as i13 from "file-downloader-action";
23
+ import * as i13 from "../../file-downloader-action/file-download-action.component";
24
24
  export class RequestManagerDemoComponent {
25
25
  get retry() {
26
26
  return this.requestForm.get('retry')?.value;
@@ -183,4 +183,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
183
183
  providedIn: 'root'
184
184
  }]
185
185
  }], ctorParameters: function () { return []; } });
186
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bW1ldHJpY2FsLWVuY3J5cHRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2h0dHAtcmVxdWVzdC1tYW5hZ2VyL3NyYy9saWIvc2VydmljZXMvdXRpbHMvZW5jcnlwdGlvbi9hc3ltbWV0cmljYWwtZW5jcnlwdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQWMsSUFBSSxFQUFNLE1BQU0sTUFBTSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBS2pELE1BQU0sT0FBTyw2QkFBNkI7SUFFeEMsZ0JBQWUsQ0FBQztJQUVoQixlQUFlLENBQUMsYUFBYSxHQUFHLElBQUk7UUFFbEMsbUNBQW1DO1FBQ25DLGlCQUFpQjtRQUVsQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FDbEM7WUFDRSxJQUFJLEVBQUUsVUFBVTtZQUNoQixhQUFhO1lBQ2IsY0FBYyxFQUFFLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN6QyxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO1NBQzFCLEVBQ0QsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FDdkIsQ0FBQyxDQUFBO0lBRUosQ0FBQztJQUVELFdBQVcsQ0FBQyxTQUFvQixFQUFFLElBQVk7UUFFNUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7UUFFbEQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxP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QUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFFbEIsa0NBQWtDO1lBRWxDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQztpQkFDekIsSUFBSSxDQUNILFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDZixPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDNUIsT0FBTyxLQUFLLENBQUE7WUFDZCxDQUFDLENBQUMsQ0FDSCxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNsQixPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQixFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUN2QyxZQUFZLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUM7WUFDaEQsQ0FBQyxDQUFDLENBQUE7UUFFSixDQUFDLENBQUMsQ0FBQTtRQUVGLE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFBQSxDQUFDOytHQWhSUyw2QkFBNkI7bUhBQTdCLDZCQUE2QixjQUY1QixNQUFNOzs0RkFFUCw2QkFBNkI7a0JBSHpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIEVNUFRZLCBPYnNlcnZhYmxlLCBmcm9tLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBc3ltbWV0cmljYWxFbmNyeXB0aW9uU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIGdlbmVyYXRlS2V5UGFpcihtb2R1bHVzTGVuZ3RoID0gMjA0OCk6IE9ic2VydmFibGU8Q3J5cHRvS2V5UGFpcj4ge1xuICBcbiAgICAvLyBtb2R1bHVzTGVuZ3RoIC0gMTAyNCwgMjA0OCwgNDA5NlxuICAgIC8vIGhhc2ggLSBTSEEtMjU2XG5cbiAgIHJldHVybiBmcm9tKGNyeXB0by5zdWJ0bGUuZ2VuZXJhdGVLZXkoXG4gICAgICB7XG4gICAgICAgIG5hbWU6IFwiUlNBLU9BRVBcIixcbiAgICAgICAgbW9kdWx1c0xlbmd0aCxcbiAgICAgICAgcHVibGljRXhwb25lbnQ6IG5ldyBVaW50OEFycmF5KFsxLCAwLCAxXSksIC8vIDY1NTM3XG4gICAgICAgIGhhc2g6IHsgbmFtZTogXCJTSEEtMjU2XCIgfVxuICAgICAgfSxcbiAgICAgIHRydWUsIC8vIEV4dHJhY3RhYmxlIGtleXNcbiAgICAgIFtcImVuY3J5cHRcIiwgXCJkZWNyeXB0XCJdXG4gICAgKSlcblxuICB9XG5cbiAgZW5jcnlwdERhdGEocHVibGljS2V5OiBDcnlwdG9LZXksIGRhdGE6IHN0cmluZykge1xuXG4gICAgY29uc3QgZW5jb2RlZERhdGEgPSBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoZGF0YSlcblxuICAgIHJldHVybiBmcm9tKGNyeXB0by5zdWJ0bGUuZW5jcnlwdChcbiAgICAgIHtcbiAgICAgICAgbmFtZTogXCJSU0EtT0FFUFwiXG4gICAgICB9LFxuICAgICAgcHVibGljS2V5LFxuICAgICAgZW5jb2RlZERhdGFcbiAgICApKS5waXBlKFxuICAgICAgbWFwKGVuYyA9PiB0aGlzLmFycmF5QnVmZmVyVG9CYXNlNjQoZW5jKSlcbiAgICApXG5cbiAgfVxuXG4gIGRlY3J5cHREYXRhKHByaXZhdGVLZXk6IENyeXB0b0tleSwgZW5jcnlwdGVkRGF0YTogc3RyaW5nKSB7XG5cbiAgICBjb25zdCBlbmNTdHIgPSB0aGlzLmJhc2U2NFRvQXJyYXlCdWZmZXIoZW5jcnlwdGVkRGF0YSlcblxuICAgIHJldHVybiBmcm9tKGNyeXB0by5zdWJ0bGUuZGVjcnlwdChcbiAgICAgIHtcbiAgICAgICAgbmFtZTogXCJSU0EtT0FFUFwiXG4gICAgICB9LFxuICAgICAgcHJpdmF0ZUtleSxcbiAgICAgIGVuY1N0clxuICAgICkudGhlbihkZWNyeXB0ZWREYXRhID0+IHtcbiAgICAgIHJldHVybiBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoZGVjcnlwdGVkRGF0YSlcbiAgICB9KSlcblxuICB9XG5cbiAgcGVtVG9BcnJheUJ1ZmZlcihwZW06IHN0cmluZyk6IEFycmF5QnVmZmVyIHtcblxuICAgIGNvbnN0IGI2NCA9IHBlbS5yZXBsYWNlKC8oLS0tLS1CRUdJTiAoUlNBICk/KFBSSVZBVEV8UFVCTElDKSBLRVktLS0tLXwtLS0tLUVORCAoUlNBICk/KFBSSVZBVEV8UFVCTElDKSBLRVktLS0tLXxcXG4pL2csICcnKVxuICAgIGNvbnN0IGJpbmFyeVN0cmluZyA9IGF0b2IoYjY0KVxuICAgIGNvbnN0IGxlbiA9IGJpbmFyeVN0cmluZy5sZW5ndGhcbiAgICBjb25zdCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIobGVuKVxuICAgIGNvbnN0IHZpZXcgPSBuZXcgVWludDhBcnJheShidWZmZXIpXG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICB2aWV3W2ldID0gYmluYXJ5U3RyaW5nLmNoYXJDb2RlQXQoaSlcbiAgICB9XG5cbiAgICByZXR1cm4gYnVmZmVyXG5cbiAgfVxuXG4gIGJhc2U2NFRvQXJyYXlCdWZmZXIoYmFzZTY0OiBzdHJpbmcpOiBBcnJheUJ1ZmZlciB7XG4gICAgXG4gICAgY29uc3QgYmluYXJ5U3RyaW5nID0gYXRvYihiYXNlNjQpO1xuICAgIGNvbnN0IGxlbiA9IGJpbmFyeVN0cmluZy5sZW5ndGg7XG4gICAgY29uc3QgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKGxlbik7XG4gICAgY29uc3QgdmlldyA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIHZpZXdbaV0gPSBiaW5hcnlTdHJpbmcuY2hhckNvZGVBdChpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYnVmZmVyO1xuICB9XG5cbiAgYXJyYXlCdWZmZXJUb0Jhc2U2NChidWZmZXI6IEFycmF5QnVmZmVyKTogc3RyaW5nIHtcblxuICAgIGxldCBiaW5hcnkgPSAnJztcbiAgICBjb25zdCBieXRlcyA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7XG4gICAgY29uc3QgbGVuID0gYnl0ZXMuYnl0ZUxlbmd0aDtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGJpbmFyeSArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ5dGVzW2ldKTtcbiAgICB9XG5cbiAgICByZXR1cm4gd2luZG93LmJ0b2EoYmluYXJ5KVxuXG4gIH1cblxuICBiYXNlNjRUb1BFTShiYXNlNjRLZXk6IHN0cmluZywgcHVibGljS2V5ID0gdHJ1ZSkge1xuXG4gICAgY29uc3Qga2V5VHlwZSA9IChwdWJsaWNLZXkpID8gJ1BVQkxJQycgOiAnUFJJVkFURSdcblxuICAgIGNvbnN0IGhlYWRlciA9IGAtLS0tLUJFR0lOICR7a2V5VHlwZX0gS0VZLS0tLS1cXG5gXG4gICAgY29uc3QgZm9vdGVyID0gYFxcbi0tLS0tRU5EICR7a2V5VHlwZX0gS0VZLS0tLS1gXG5cbiAgICBjb25zdCBrZXlCb2R5ID0gYmFzZTY0S2V5Lm1hdGNoKC8uezEsNjR9L2cpPy5qb2luKFwiXFxuXCIpIHx8IFwiXCJcblxuICAgIHJldHVybiBoZWFkZXIgKyBrZXlCb2R5ICsgZm9vdGVyXG5cbiAgfVxuXG4gIHBlbVRvQ3J5cHRvS2V5KFxuICAgIHBlbTogc3RyaW5nLCBcbiAgICBhbGdvcml0aG06IFJzYUhhc2hlZEtleUdlblBhcmFtcywgXG4gICAgZXh0cmFjdGFibGU6IGJvb2xlYW4sIFxuICAgIGtleVVzYWdlczogS2V5VXNhZ2VbXSxcbiAgICBmb3JtYXQ6IGFueSA9IFwicGtjczhcIiAvL1wicmF3XCIgfCBcInBrY3M4XCIgfCBcInNwa2lcIlxuICAgICkge1xuICAgIFxuICAgIGNvbnN0IGJ1ZmZlciA9IHRoaXMucGVtVG9BcnJheUJ1ZmZlcihwZW0pO1xuXG4gICAgY29uc29sZS5sb2coJ2J1ZmZlciBmb3VuZCAnLCBidWZmZXIpO1xuICAgIFxuICAgIHJldHVybiBmcm9tKGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KFxuICAgICAgZm9ybWF0LFxuICAgICAgYnVmZmVyLFxuICAgICAgYWxnb3JpdGhtLFxuICAgICAgZXh0cmFjdGFibGUsXG4gICAgICBrZXlVc2FnZXNcbiAgICApKVxuXG4gIH1cbiAgXG4gIC8vIFRFU1RJTkdcblxuICB0ZXN0R2VuZXJhdGVLZXlzKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgY29uc3QgdGVzdFNlcXVlbmNlOiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPihcIlwiKTtcbiAgICBjb25zdCB0ZXN0U2VxdWVuY2UkOiBPYnNlcnZhYmxlPHN0cmluZz4gPSB0ZXN0U2VxdWVuY2UuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGVzdFNlcXVlbmNlLm5leHQoXCJUZXN0IEdlbmVyYXRpbmcgS2V5c1wiKTtcblxuICAgIC8vIEdFTkVSQVRFIEtFWVNcbiAgICB0aGlzLmdlbmVyYXRlS2V5UGFpcigpLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuXG4gICAgICBjb25zb2xlLmxvZyhcIkdFTi1HRU5FUkFURUQgS0VZUzogXCIsIGRhdGEpXG5cbiAgICAgIGNyeXB0by5zdWJ0bGUuZXhwb3J0S2V5KCdzcGtpJywgZGF0YS5wdWJsaWNLZXkpXG4gICAgICAudGhlbihrZXkgPT4ge1xuICAgICAgICBjb25zdCBwdWJsaWNLZXlCYXNlNjQgPSB0aGlzLmFycmF5QnVmZmVyVG9CYXNlNjQoa2V5KTtcbiAgICAgICAgY29uc29sZS5sb2coXCJHRU4tRVhQT1JUIFBVQkxJQyBLRVk6IFwiLCB0aGlzLmJhc2U2NFRvUEVNKHB1YmxpY0tleUJhc2U2NCwgdHJ1ZSkpO1xuICAgICAgfSlcblxuICAgICAgY3J5cHRvLnN1YnRsZS5leHBvcnRLZXkoJ3BrY3M4JywgZGF0YS5wcml2YXRlS2V5KVxuICAgICAgLnRoZW4oa2V5ID0+IHtcbiAgICAgICAgY29uc3QgcHJpdmF0ZUtleUJhc2U2NCA9IHRoaXMuYXJyYXlCdWZmZXJUb0Jhc2U2NChrZXkpO1xuICAgICAgICBjb25zb2xlLmxvZyhcIkdFTi1FWFBPUlQgUFJJVkFURSBLRVk6IFwiLCB0aGlzLmJhc2U2NFRvUEVNKHByaXZhdGVLZXlCYXNlNjQsIGZhbHNlKSk7XG4gICAgICB9KTtcblxuICAgICAgLy8gVEVTVCBXSVRIIEdFTkVSQVRFRCBLRVlTXG4gICAgICB0aGlzLmVuY3J5cHREYXRhKGRhdGEucHVibGljS2V5LCBcIlNhbXBsZSBEYXRhIGhlcmUgLSBNaWtlIEJvbmlmYWNpb1wiKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKGVuYykgPT4ge1xuXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIkdFTi1FTkNSWVBUPT0+OiBcIiwgZW5jKVxuXG4gICAgICAgICAgICB0aGlzLmRlY3J5cHREYXRhKGRhdGEucHJpdmF0ZUtleSwgZW5jKS5zdWJzY3JpYmUoKGRlYykgPT4ge1xuICAgICAgICAgICAgICB0ZXN0U2VxdWVuY2UubmV4dCgnVGVzdCBQYXNzZWQnKTtcbiAgICAgICAgICAgICAgdGVzdFNlcXVlbmNlLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgfSlcblxuICAgIH0pXG4gICAgcmV0dXJuIHRlc3RTZXF1ZW5jZSQ7XG5cbiAgfVxuXG4gIHRlc3REZWNyeXB0aW9uV2l0aEtleXMoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICBjb25zdCB0ZXN0U2VxdWVuY2U6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KFwiXCIpO1xuICAgIGNvbnN0IHRlc3RTZXF1ZW5jZSQ6IE9ic2VydmFibGU8c3RyaW5nPiA9IHRlc3RTZXF1ZW5jZS5hc09ic2VydmFibGUoKTtcbiAgICB0ZXN0U2VxdWVuY2UubmV4dChcIlRlc3QgR2VuZXJhdGluZyBLZXlzXCIpO1xuXG4gICAgY29uc3QgcHJpdmF0ZUtleSA9IGAtLS0tLUJFR0lOIFBSSVZBVEUgS0VZLS0tLS1cbiAgICBNSUlFdndJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0JLa3dnZ1NsQWdFQUFvSUJBUURLVkJrQ1dOYjllSFZGXG4gICAgdHdBQTVtZEF5dlhGaXgzV2F2ZHJzb1lSa3Z0Q2w4b2dEQlFmOGY2TjBiUmtERjF6Y1ZIUnJOQUV5b3pYRHR1RFxuICAgIGtGZ1NpaXZCRlJFSTdmaVMzc092ZHVxNkZhR1h6WDBJWTZvYVZNdThvT1BnRHZDMHl2b29oUiswUXhxMmQ2bFBcbiAgICBTUHlIZUtRYXhQNEt4ekNKSnpCMVhBY2JkMmVGelVVRHYyNW1ObHdkVmttVzhGSS9zQXhuSkxnUFRXNzhkemZYXG4gICAgRGRmaytueGRJcXhWS1NMQVRuTDBrTU43YUdKeDI0VW96aW9BSXB6dnZ2RjUvKzdIVGQxZ2k2TmVDcXJBWXIzZ1xuICAgIGlQMzY0QUUyNkNGd0Z2SG5hZk85dU5RaGxRK3VpTm5Pb0luWEJ5ZkZHVlArUmlkU3BmTHpheERqczZSRHdwb2xcbiAgICBoMDk4YnRPTkFnTUJBQUVDZ2dFQUFWaEhNMk9ENUlrVXR1b3d3Y0tOYUNUS0dtckNsUkUzZ011ekplQnNTSkV5XG4gICAgdUFSZVVGSUxaeWxjbmhlZ0R5dFN0aTJ2REE5VDd4cXRPNkNVMHAzVjhMcFU4OUpNT1BSYi9kZWlySTRVWFNweFxuICAgIHhiTnlqaXJPTzZibnJObE9XZktleGRRUXNpa1lQekYyaU0xU2NwcjF1OVpEQ0haT2wxWllTcmt2ZTVNeTRjb1BcbiAgICAzR3g2dFRCcUwwalFCZmNwZjRFUzhCSDNKU2F3Ui9NZ3F6RFM3NCtiSTJWSCtrdnVQQUMxTDRmQmdhVjNWVXYwXG4gICAgbkZ6aW01QTNzNVZhWFBnSmJFSWdoUDlCa1lHRmtlVDltYTNubGlFWldjOTZBenNtb3dGbjFheUN2ck5WUG85UlxuICAgIEVDRDJObnR0QmlDSlp0M0g5M3NSOStPVGVBOEJscythWkdsS2Q1bUxBUUtCZ1FEcGY4bklZVW0vWm1sczcvbFFcbiAgICBRQlVTR0hFWXJiak5zRWVqUXNQZ05EdGcyRVZTeGRVa3ZUbjdXYitIRXhUazA5WjViTnZoYU8yNTMyL0ZIOXk4XG4gICAgYWhTWGFmaU1YcGZSMm9sd1hkT0I5eVhYbDRGNUMwTEdubXpHaW00T1NlV3pBWDBKQ0w0NzBLYVMwUU4zRW1vR1xuICAgIDlGMFlDZk1uWlhOVHdlU1N4NHh2bE82Z2dRS0JnUURkMDF1SW9sbTd6MURJV0N3TkVSQVhQMkdEd2N2eHl6WUtcbiAgICBZcUpmS0RlSHQydDZ5SXpaTU1vdG5QRHkrT2xjZEdzcElJSGtCNWErU1pONU50N0RVS2cvTW55T1ozS2JWcTQxXG4gICAgazdkUjRLYTNMUm5Ha2VzeTdsU3I3ZWYxcmZxdXlSNzVPWEpRY1BXdmtGY0x1MFRNaVFodnB0YXRaOFZOK0Y0blxuICAgIGZEUUVMUm90RFFLQmdRQ2dOK0FVVDdWVDBRamNDQm5SVi9kZFVFb2lQZW5Gc1lTbVlNU1l6aDVFU0lIZzF3QjJcbiAgICAwaVM3OUl3NE9mNm5PVGc4WDFiTTU3dmZRNUtrOTBUMlArL2JLWXF6ZnFDOERURXJXaVlzVXBLenlUQzlCdDROXG4gICAgL1Z6MEtyNXpyWDhnZ2cveXAvNG9ldlloWGF2OEF6V2ZpZ05xNEVEcE1uS2M4VGxQQWYrNS9MNTBnUUtCZ1FDMlxuICAgIG1MUGhQaHIxZ1VzekQzbDdiQTg5dzd1R2xMRkhvUW9qOUZ0S1R6V2VydnAzUUx6SVQrUXROZUlWYjVYUXVEZzVcbiAgICB5M3VBZEVxKzZwdk5qTUJFTUpHK0s5WGg5ditkSlBZVVBqc0oyQTREL01rWjdxV1g4QjJjeFNKSzF1TGltOFcyXG4gICAgUzNaeEJ2c0dnSjlXbGRtbE1DdlVsSlprZVdZdHI0UDVwc0MrcTAyL3hRS0JnUUNESUkvamNWMitsUk0yaU5UZVxuICAgIHZCaWpaU2FOTUVXT0svWSsvSEZLOEdZS1huQit4Tldocm04cktnV0d6cERKQVVQTWg5VHQrbGVXOUxLRUJ1ekZcbiAgICBZMWJHYmxtR20xenNQV3BJeDA1RmR0djllT0ptRm5YYkd6SXNZeWhhZFpuUGNRT1docXh0cFZ4U3V1bDBKYzdRXG4gICAgWE5xNHFQYVBYaGJRQXNoZ3R5QnQ3NURNa3c9PVxuICAgIC0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS1gXG4gICAgXG4gICAgICAgIGNvbnN0IHB1YktleSA9IGAtLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLVxuICAgIE1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBeWxRWkFsalcvWGgxUmJjQUFPWm5cbiAgICBRTXIxeFlzZDFtcjNhN0tHRVpMN1FwZktJQXdVSC9IK2pkRzBaQXhkYzNGUjBhelFCTXFNMXc3Ymc1QllFb29yXG4gICAgd1JVUkNPMzRrdDdEcjNicXVoV2hsODE5Q0dPcUdsVEx2S0RqNEE3d3RNcjZLSVVmdEVNYXRuZXBUMGo4aDNpa1xuICAgIEdzVCtDc2N3aVNjd2RWd0hHM2RuaGMxRkE3OXVaalpjSFZaSmx2QlNQN0FNWnlTNEQwMXUvSGMzMXczWDVQcDhcbiAgICBYU0tzVlNraXdFNXk5SkREZTJoaWNkdUZLTTRxQUNLYzc3N3hlZi91eDAzZFlJdWpYZ3Fxd0dLOTRJajkrdUFCXG4gICAgTnVnaGNCYng1Mm56dmJqVUlaVVByb2paenFDSjF3Y254UmxUL2tZblVxWHk4MnNRNDdPa1E4S2FKWWRQZkc3VFxuICAgIGpRSURBUUFCXG4gICAgLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tYFxuXG4gICAgY29uc3QgYWxnb3JpdGhtOiBSc2FIYXNoZWRLZXlHZW5QYXJhbXMgPSB7XG4gICAgICBuYW1lOiBcIlJTQS1PQUVQXCIsXG4gICAgICBtb2R1bHVzTGVuZ3RoOiAyMDQ4LFxuICAgICAgcHVibGljRXhwb25lbnQ6IG5ldyBVaW50OEFycmF5KFsxLCAwLCAxXSksXG4gICAgICBoYXNoOiBcIlNIQS0yNTZcIlxuICAgIH07XG5cbiAgICAvLyBFTkNSWVBUXG4gICAgdGhpcy5wZW1Ub0NyeXB0b0tleShcbiAgICAgIHB1YktleSxcbiAgICAgIGFsZ29yaXRobSxcbiAgICAgIHRydWUsXG4gICAgICBbXCJlbmNyeXB0XCJdLFxuICAgICAgXCJzcGtpXCJcbiAgICApLnN1YnNjcmliZSgoa2V5UHVibGljKSA9PiB7XG5cbiAgICAgIC8vIGNvbnNvbGUubG9nKFwiUFVCTElDIEtFWTogXCIsIGtleVB1YmxpYylcblxuICAgICAgdGhpcy5lbmNyeXB0RGF0YShrZXlQdWJsaWMsIFwiU2FtcGxlIERhdGEgaGVyZSAtIE1pa2UgQm9uaWZhY2lvXCIpXG4gICAgICAuc3Vic2NyaWJlKChzdHIpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coXCJFTkNSWVBURUQgU1RSSU5HOiBcIiwgc3RyKTtcbiAgICAgICAgdGVzdFNlcXVlbmNlLm5leHQoJ2VuY3J5cHRlZCBzdHJpbmcgc3VjY2VzcycpO1xuICAgICAgfSlcblxuICAgIH0pXG5cbiAgICBjb25zdCBlbmMgPSBcInI3VU91RUdCWjZqYlZUT0lCdXY5akZPRXRSaWVkbVMyN2hmVzQwazdYS0NUc1E1VmhXdXAwcXUyQkEyQU5aYUdLaWkvdWVoSi9SU1BpeWZHYko2bGVKcmF0MG1BMWhQcUgvWG9kYUJ6TE1EaWd2ZFlNMU5TWEZaTURhNDBPcExVSVhiUGxBdnliamNHdTdCYWwrTE1BOGh0SHJGdS9PbU0vZkhJNjZ4T3p6cHVYU1l4ME9rV2p0WTgxclVRMUZGa3Zya3gyakdGUFowcCtOdy92M1E0Y0puZXQ2VjYzdkN1ZUZsRDc0OVZNY1ZYbzdwdno0QUlQcEIrSU95M2tieGFZVFBha0xWaW9KRVJVNkdGTVhXa0VDdVJ2b2hoUzlDRVRjT1JadFJWUmt2aGNIazNseGdJaGZxb2pVS1lnRDZLNWRERUxEUHNXSVMraVRHMVhJUUlsZz09XCI7XG5cbiAgICAvLyBERUNSWVBUSU9OXG4gICAgdGhpcy5wZW1Ub0NyeXB0b0tleShcbiAgICAgIHByaXZhdGVLZXksXG4gICAgICBhbGdvcml0aG0sXG4gICAgICBmYWxzZSxcbiAgICAgIFtcImRlY3J5cHRcIl0sXG4gICAgICBcInBrY3M4XCJcbiAgICApLnN1YnNjcmliZSgoa2V5KSA9PiB7XG5cbiAgICAgIC8vIGNvbnNvbGUubG9nKFwiREVDUllQVCA9PT1cIiwga2V5KVxuXG4gICAgICB0aGlzLmRlY3J5cHREYXRhKGtleSwgZW5jKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcIkVSUk9SOiBcIiwgZXJyKTtcbiAgICAgICAgICByZXR1cm4gRU1QVFlcbiAgICAgICAgfSlcbiAgICAgICkuc3Vic2NyaWJlKChzdHIpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coXCJERUNSWVBURUQgU1RSSU5HOiBcIiwgc3RyKTtcbiAgICAgICAgdGVzdFNlcXVlbmNlLm5leHQoJ2RlY3J5cHRlZCBzdHJpbmcgc3VjY2VzcycpO1xuICAgICAgfSlcblxuICAgIH0pXG5cbiAgICByZXR1cm4gdGVzdFNlcXVlbmNlJDtcbiAgfTtcbn1cbiJdfQ==
186
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bW1ldHJpY2FsLWVuY3J5cHRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2h0dHAtcmVxdWVzdC1tYW5hZ2VyL3NyYy9saWIvc2VydmljZXMvdXRpbHMvZW5jcnlwdGlvbi9hc3ltbWV0cmljYWwtZW5jcnlwdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQWMsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBS2pELE1BQU0sT0FBTyw2QkFBNkI7SUFFeEMsZ0JBQWUsQ0FBQztJQUVoQixlQUFlLENBQUMsYUFBYSxHQUFHLElBQUk7UUFFbEMsbUNBQW1DO1FBQ25DLGlCQUFpQjtRQUVsQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FDbEM7WUFDRSxJQUFJLEVBQUUsVUFBVTtZQUNoQixhQUFhO1lBQ2IsY0FBYyxFQUFFLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN6QyxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO1NBQzFCLEVBQ0QsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FDdkIsQ0FBQyxDQUFBO0lBRUosQ0FBQztJQUVELFdBQVcsQ0FBQyxTQUFvQixFQUFFLElBQVk7UUFFNUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7UUFFbEQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxP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QUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFFbEIsa0NBQWtDO1lBRWxDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQztpQkFDekIsSUFBSSxDQUNILFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDZixPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDNUIsT0FBTyxLQUFLLENBQUE7WUFDZCxDQUFDLENBQUMsQ0FDSCxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNsQixPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQixFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUN2QyxZQUFZLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUM7WUFDaEQsQ0FBQyxDQUFDLENBQUE7UUFFSixDQUFDLENBQUMsQ0FBQTtRQUVGLE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFBQSxDQUFDOytHQWhSUyw2QkFBNkI7bUhBQTdCLDZCQUE2QixjQUY1QixNQUFNOzs0RkFFUCw2QkFBNkI7a0JBSHpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIEVNUFRZLCBPYnNlcnZhYmxlLCBmcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFzeW1tZXRyaWNhbEVuY3J5cHRpb25TZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgZ2VuZXJhdGVLZXlQYWlyKG1vZHVsdXNMZW5ndGggPSAyMDQ4KTogT2JzZXJ2YWJsZTxDcnlwdG9LZXlQYWlyPiB7XG5cbiAgICAvLyBtb2R1bHVzTGVuZ3RoIC0gMTAyNCwgMjA0OCwgNDA5NlxuICAgIC8vIGhhc2ggLSBTSEEtMjU2XG5cbiAgIHJldHVybiBmcm9tKGNyeXB0by5zdWJ0bGUuZ2VuZXJhdGVLZXkoXG4gICAgICB7XG4gICAgICAgIG5hbWU6IFwiUlNBLU9BRVBcIixcbiAgICAgICAgbW9kdWx1c0xlbmd0aCxcbiAgICAgICAgcHVibGljRXhwb25lbnQ6IG5ldyBVaW50OEFycmF5KFsxLCAwLCAxXSksIC8vIDY1NTM3XG4gICAgICAgIGhhc2g6IHsgbmFtZTogXCJTSEEtMjU2XCIgfVxuICAgICAgfSxcbiAgICAgIHRydWUsIC8vIEV4dHJhY3RhYmxlIGtleXNcbiAgICAgIFtcImVuY3J5cHRcIiwgXCJkZWNyeXB0XCJdXG4gICAgKSlcblxuICB9XG5cbiAgZW5jcnlwdERhdGEocHVibGljS2V5OiBDcnlwdG9LZXksIGRhdGE6IHN0cmluZykge1xuXG4gICAgY29uc3QgZW5jb2RlZERhdGEgPSBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoZGF0YSlcblxuICAgIHJldHVybiBmcm9tKGNyeXB0by5zdWJ0bGUuZW5jcnlwdChcbiAgICAgIHtcbiAgICAgICAgbmFtZTogXCJSU0EtT0FFUFwiXG4gICAgICB9LFxuICAgICAgcHVibGljS2V5LFxuICAgICAgZW5jb2RlZERhdGFcbiAgICApKS5waXBlKFxuICAgICAgbWFwKGVuYyA9PiB0aGlzLmFycmF5QnVmZmVyVG9CYXNlNjQoZW5jKSlcbiAgICApXG5cbiAgfVxuXG4gIGRlY3J5cHREYXRhKHByaXZhdGVLZXk6IENyeXB0b0tleSwgZW5jcnlwdGVkRGF0YTogc3RyaW5nKSB7XG5cbiAgICBjb25zdCBlbmNTdHIgPSB0aGlzLmJhc2U2NFRvQXJyYXlCdWZmZXIoZW5jcnlwdGVkRGF0YSlcblxuICAgIHJldHVybiBmcm9tKGNyeXB0by5zdWJ0bGUuZGVjcnlwdChcbiAgICAgIHtcbiAgICAgICAgbmFtZTogXCJSU0EtT0FFUFwiXG4gICAgICB9LFxuICAgICAgcHJpdmF0ZUtleSxcbiAgICAgIGVuY1N0clxuICAgICkudGhlbihkZWNyeXB0ZWREYXRhID0+IHtcbiAgICAgIHJldHVybiBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoZGVjcnlwdGVkRGF0YSlcbiAgICB9KSlcblxuICB9XG5cbiAgcGVtVG9BcnJheUJ1ZmZlcihwZW06IHN0cmluZyk6IEFycmF5QnVmZmVyIHtcblxuICAgIGNvbnN0IGI2NCA9IHBlbS5yZXBsYWNlKC8oLS0tLS1CRUdJTiAoUlNBICk/KFBSSVZBVEV8UFVCTElDKSBLRVktLS0tLXwtLS0tLUVORCAoUlNBICk/KFBSSVZBVEV8UFVCTElDKSBLRVktLS0tLXxcXG4pL2csICcnKVxuICAgIGNvbnN0IGJpbmFyeVN0cmluZyA9IGF0b2IoYjY0KVxuICAgIGNvbnN0IGxlbiA9IGJpbmFyeVN0cmluZy5sZW5ndGhcbiAgICBjb25zdCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIobGVuKVxuICAgIGNvbnN0IHZpZXcgPSBuZXcgVWludDhBcnJheShidWZmZXIpXG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICB2aWV3W2ldID0gYmluYXJ5U3RyaW5nLmNoYXJDb2RlQXQoaSlcbiAgICB9XG5cbiAgICByZXR1cm4gYnVmZmVyXG5cbiAgfVxuXG4gIGJhc2U2NFRvQXJyYXlCdWZmZXIoYmFzZTY0OiBzdHJpbmcpOiBBcnJheUJ1ZmZlciB7XG5cbiAgICBjb25zdCBiaW5hcnlTdHJpbmcgPSBhdG9iKGJhc2U2NCk7XG4gICAgY29uc3QgbGVuID0gYmluYXJ5U3RyaW5nLmxlbmd0aDtcbiAgICBjb25zdCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIobGVuKTtcbiAgICBjb25zdCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgdmlld1tpXSA9IGJpbmFyeVN0cmluZy5jaGFyQ29kZUF0KGkpO1xuICAgIH1cblxuICAgIHJldHVybiBidWZmZXI7XG4gIH1cblxuICBhcnJheUJ1ZmZlclRvQmFzZTY0KGJ1ZmZlcjogQXJyYXlCdWZmZXIpOiBzdHJpbmcge1xuXG4gICAgbGV0IGJpbmFyeSA9ICcnO1xuICAgIGNvbnN0IGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTtcbiAgICBjb25zdCBsZW4gPSBieXRlcy5ieXRlTGVuZ3RoO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgYmluYXJ5ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZXNbaV0pO1xuICAgIH1cblxuICAgIHJldHVybiB3aW5kb3cuYnRvYShiaW5hcnkpXG5cbiAgfVxuXG4gIGJhc2U2NFRvUEVNKGJhc2U2NEtleTogc3RyaW5nLCBwdWJsaWNLZXkgPSB0cnVlKSB7XG5cbiAgICBjb25zdCBrZXlUeXBlID0gKHB1YmxpY0tleSkgPyAnUFVCTElDJyA6ICdQUklWQVRFJ1xuXG4gICAgY29uc3QgaGVhZGVyID0gYC0tLS0tQkVHSU4gJHtrZXlUeXBlfSBLRVktLS0tLVxcbmBcbiAgICBjb25zdCBmb290ZXIgPSBgXFxuLS0tLS1FTkQgJHtrZXlUeXBlfSBLRVktLS0tLWBcblxuICAgIGNvbnN0IGtleUJvZHkgPSBiYXNlNjRLZXkubWF0Y2goLy57MSw2NH0vZyk/LmpvaW4oXCJcXG5cIikgfHwgXCJcIlxuXG4gICAgcmV0dXJuIGhlYWRlciArIGtleUJvZHkgKyBmb290ZXJcblxuICB9XG5cbiAgcGVtVG9DcnlwdG9LZXkoXG4gICAgcGVtOiBzdHJpbmcsXG4gICAgYWxnb3JpdGhtOiBSc2FIYXNoZWRLZXlHZW5QYXJhbXMsXG4gICAgZXh0cmFjdGFibGU6IGJvb2xlYW4sXG4gICAga2V5VXNhZ2VzOiBLZXlVc2FnZVtdLFxuICAgIGZvcm1hdDogYW55ID0gXCJwa2NzOFwiIC8vXCJyYXdcIiB8IFwicGtjczhcIiB8IFwic3BraVwiXG4gICAgKSB7XG5cbiAgICBjb25zdCBidWZmZXIgPSB0aGlzLnBlbVRvQXJyYXlCdWZmZXIocGVtKTtcblxuICAgIGNvbnNvbGUubG9nKCdidWZmZXIgZm91bmQgJywgYnVmZmVyKTtcblxuICAgIHJldHVybiBmcm9tKGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KFxuICAgICAgZm9ybWF0LFxuICAgICAgYnVmZmVyLFxuICAgICAgYWxnb3JpdGhtLFxuICAgICAgZXh0cmFjdGFibGUsXG4gICAgICBrZXlVc2FnZXNcbiAgICApKVxuXG4gIH1cblxuICAvLyBURVNUSU5HXG5cbiAgdGVzdEdlbmVyYXRlS2V5cygpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIGNvbnN0IHRlc3RTZXF1ZW5jZTogQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oXCJcIik7XG4gICAgY29uc3QgdGVzdFNlcXVlbmNlJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGVzdFNlcXVlbmNlLmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRlc3RTZXF1ZW5jZS5uZXh0KFwiVGVzdCBHZW5lcmF0aW5nIEtleXNcIik7XG5cbiAgICAvLyBHRU5FUkFURSBLRVlTXG4gICAgdGhpcy5nZW5lcmF0ZUtleVBhaXIoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcblxuICAgICAgY29uc29sZS5sb2coXCJHRU4tR0VORVJBVEVEIEtFWVM6IFwiLCBkYXRhKVxuXG4gICAgICBjcnlwdG8uc3VidGxlLmV4cG9ydEtleSgnc3BraScsIGRhdGEucHVibGljS2V5KVxuICAgICAgLnRoZW4oa2V5ID0+IHtcbiAgICAgICAgY29uc3QgcHVibGljS2V5QmFzZTY0ID0gdGhpcy5hcnJheUJ1ZmZlclRvQmFzZTY0KGtleSk7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiR0VOLUVYUE9SVCBQVUJMSUMgS0VZOiBcIiwgdGhpcy5iYXNlNjRUb1BFTShwdWJsaWNLZXlCYXNlNjQsIHRydWUpKTtcbiAgICAgIH0pXG5cbiAgICAgIGNyeXB0by5zdWJ0bGUuZXhwb3J0S2V5KCdwa2NzOCcsIGRhdGEucHJpdmF0ZUtleSlcbiAgICAgIC50aGVuKGtleSA9PiB7XG4gICAgICAgIGNvbnN0IHByaXZhdGVLZXlCYXNlNjQgPSB0aGlzLmFycmF5QnVmZmVyVG9CYXNlNjQoa2V5KTtcbiAgICAgICAgY29uc29sZS5sb2coXCJHRU4tRVhQT1JUIFBSSVZBVEUgS0VZOiBcIiwgdGhpcy5iYXNlNjRUb1BFTShwcml2YXRlS2V5QmFzZTY0LCBmYWxzZSkpO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIFRFU1QgV0lUSCBHRU5FUkFURUQgS0VZU1xuICAgICAgdGhpcy5lbmNyeXB0RGF0YShkYXRhLnB1YmxpY0tleSwgXCJTYW1wbGUgRGF0YSBoZXJlIC0gTWlrZSBCb25pZmFjaW9cIilcbiAgICAgICAgICAuc3Vic2NyaWJlKChlbmMpID0+IHtcblxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJHRU4tRU5DUllQVD09PjogXCIsIGVuYylcblxuICAgICAgICAgICAgdGhpcy5kZWNyeXB0RGF0YShkYXRhLnByaXZhdGVLZXksIGVuYykuc3Vic2NyaWJlKChkZWMpID0+IHtcbiAgICAgICAgICAgICAgdGVzdFNlcXVlbmNlLm5leHQoJ1Rlc3QgUGFzc2VkJyk7XG4gICAgICAgICAgICAgIHRlc3RTZXF1ZW5jZS5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfSlcblxuICAgICAgICAgIH0pXG5cbiAgICB9KVxuICAgIHJldHVybiB0ZXN0U2VxdWVuY2UkO1xuXG4gIH1cblxuICB0ZXN0RGVjcnlwdGlvbldpdGhLZXlzKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgY29uc3QgdGVzdFNlcXVlbmNlOiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPihcIlwiKTtcbiAgICBjb25zdCB0ZXN0U2VxdWVuY2UkOiBPYnNlcnZhYmxlPHN0cmluZz4gPSB0ZXN0U2VxdWVuY2UuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGVzdFNlcXVlbmNlLm5leHQoXCJUZXN0IEdlbmVyYXRpbmcgS2V5c1wiKTtcblxuICAgIGNvbnN0IHByaXZhdGVLZXkgPSBgLS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tXG4gICAgTUlJRXZ3SUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0NCS2t3Z2dTbEFnRUFBb0lCQVFES1ZCa0NXTmI5ZUhWRlxuICAgIHR3QUE1bWRBeXZYRml4M1dhdmRyc29ZUmt2dENsOG9nREJRZjhmNk4wYlJrREYxemNWSFJyTkFFeW96WER0dURcbiAgICBrRmdTaWl2QkZSRUk3ZmlTM3NPdmR1cTZGYUdYelgwSVk2b2FWTXU4b09QZ0R2QzB5dm9vaFIrMFF4cTJkNmxQXG4gICAgU1B5SGVLUWF4UDRLeHpDSkp6QjFYQWNiZDJlRnpVVUR2MjVtTmx3ZFZrbVc4Rkkvc0F4bkpMZ1BUVzc4ZHpmWFxuICAgIERkZmsrbnhkSXF4VktTTEFUbkwwa01ON2FHSngyNFVvemlvQUlwenZ2dkY1Lys3SFRkMWdpNk5lQ3FyQVlyM2dcbiAgICBpUDM2NEFFMjZDRndGdkhuYWZPOXVOUWhsUSt1aU5uT29JblhCeWZGR1ZQK1JpZFNwZkx6YXhEanM2UkR3cG9sXG4gICAgaDA5OGJ0T05BZ01CQUFFQ2dnRUFBVmhITTJPRDVJa1V0dW93d2NLTmFDVEtHbXJDbFJFM2dNdXpKZUJzU0pFeVxuICAgIHVBUmVVRklMWnlsY25oZWdEeXRTdGkydkRBOVQ3eHF0TzZDVTBwM1Y4THBVODlKTU9QUmIvZGVpckk0VVhTcHhcbiAgICB4Yk55amlyT082Ym5yTmxPV2ZLZXhkUVFzaWtZUHpGMmlNMVNjcHIxdTlaRENIWk9sMVpZU3JrdmU1TXk0Y29QXG4gICAgM0d4NnRUQnFMMGpRQmZjcGY0RVM4QkgzSlNhd1IvTWdxekRTNzQrYkkyVkgra3Z1UEFDMUw0ZkJnYVYzVlV2MFxuICAgIG5GemltNUEzczVWYVhQZ0piRUlnaFA5QmtZR0ZrZVQ5bWEzbmxpRVpXYzk2QXpzbW93Rm4xYXlDdnJOVlBvOVJcbiAgICBFQ0QyTm50dEJpQ0padDNIOTNzUjkrT1RlQThCbHMrYVpHbEtkNW1MQVFLQmdRRHBmOG5JWVVtL1ptbHM3L2xRXG4gICAgUUJVU0dIRVlyYmpOc0VlalFzUGdORHRnMkVWU3hkVWt2VG43V2IrSEV4VGswOVo1Yk52aGFPMjUzMi9GSDl5OFxuICAgIGFoU1hhZmlNWHBmUjJvbHdYZE9COXlYWGw0RjVDMExHbm16R2ltNE9TZVd6QVgwSkNMNDcwS2FTMFFOM0Vtb0dcbiAgICA5RjBZQ2ZNblpYTlR3ZVNTeDR4dmxPNmdnUUtCZ1FEZDAxdUlvbG03ejFESVdDd05FUkFYUDJHRHdjdnh5ellLXG4gICAgWXFKZktEZUh0MnQ2eUl6Wk1Nb3RuUER5K09sY2RHc3BJSUhrQjVhK1NaTjVOdDdEVUtnL01ueU9aM0tiVnE0MVxuICAgIGs3ZFI0S2EzTFJuR2tlc3k3bFNyN2VmMXJmcXV5Ujc1T1hKUWNQV3ZrRmNMdTBUTWlRaHZwdGF0WjhWTitGNG5cbiAgICBmRFFFTFJvdERRS0JnUUNnTitBVVQ3VlQwUWpjQ0JuUlYvZGRVRW9pUGVuRnNZU21ZTVNZemg1RVNJSGcxd0IyXG4gICAgMGlTNzlJdzRPZjZuT1RnOFgxYk01N3ZmUTVLazkwVDJQKy9iS1lxemZxQzhEVEVyV2lZc1VwS3p5VEM5QnQ0TlxuICAgIC9WejBLcjV6clg4Z2dnL3lwLzRvZXZZaFhhdjhBeldmaWdOcTRFRHBNbktjOFRsUEFmKzUvTDUwZ1FLQmdRQzJcbiAgICBtTFBoUGhyMWdVc3pEM2w3YkE4OXc3dUdsTEZIb1FvajlGdEtUeldlcnZwM1FMeklUK1F0TmVJVmI1WFF1RGc1XG4gICAgeTN1QWRFcSs2cHZOak1CRU1KRytLOVhoOXYrZEpQWVVQanNKMkE0RC9Na1o3cVdYOEIyY3hTSksxdUxpbThXMlxuICAgIFMzWnhCdnNHZ0o5V2xkbWxNQ3ZVbEpaa2VXWXRyNFA1cHNDK3EwMi94UUtCZ1FDRElJL2pjVjIrbFJNMmlOVGVcbiAgICB2QmlqWlNhTk1FV09LL1krL0hGSzhHWUtYbkIreE5XaHJtOHJLZ1dHenBESkFVUE1oOVR0K2xlVzlMS0VCdXpGXG4gICAgWTFiR2JsbUdtMXpzUFdwSXgwNUZkdHY5ZU9KbUZuWGJHeklzWXloYWRablBjUU9XaHF4dHBWeFN1dWwwSmM3UVxuICAgIFhOcTRxUGFQWGhiUUFzaGd0eUJ0NzVETWt3PT1cbiAgICAtLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tYFxuXG4gICAgICAgIGNvbnN0IHB1YktleSA9IGAtLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLVxuICAgIE1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBeWxRWkFsalcvWGgxUmJjQUFPWm5cbiAgICBRTXIxeFlzZDFtcjNhN0tHRVpMN1FwZktJQXdVSC9IK2pkRzBaQXhkYzNGUjBhelFCTXFNMXc3Ymc1QllFb29yXG4gICAgd1JVUkNPMzRrdDdEcjNicXVoV2hsODE5Q0dPcUdsVEx2S0RqNEE3d3RNcjZLSVVmdEVNYXRuZXBUMGo4aDNpa1xuICAgIEdzVCtDc2N3aVNjd2RWd0hHM2RuaGMxRkE3OXVaalpjSFZaSmx2QlNQN0FNWnlTNEQwMXUvSGMzMXczWDVQcDhcbiAgICBYU0tzVlNraXdFNXk5SkREZTJoaWNkdUZLTTRxQUNLYzc3N3hlZi91eDAzZFlJdWpYZ3Fxd0dLOTRJajkrdUFCXG4gICAgTnVnaGNCYng1Mm56dmJqVUlaVVByb2paenFDSjF3Y254UmxUL2tZblVxWHk4MnNRNDdPa1E4S2FKWWRQZkc3VFxuICAgIGpRSURBUUFCXG4gICAgLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tYFxuXG4gICAgY29uc3QgYWxnb3JpdGhtOiBSc2FIYXNoZWRLZXlHZW5QYXJhbXMgPSB7XG4gICAgICBuYW1lOiBcIlJTQS1PQUVQXCIsXG4gICAgICBtb2R1bHVzTGVuZ3RoOiAyMDQ4LFxuICAgICAgcHVibGljRXhwb25lbnQ6IG5ldyBVaW50OEFycmF5KFsxLCAwLCAxXSksXG4gICAgICBoYXNoOiBcIlNIQS0yNTZcIlxuICAgIH07XG5cbiAgICAvLyBFTkNSWVBUXG4gICAgdGhpcy5wZW1Ub0NyeXB0b0tleShcbiAgICAgIHB1YktleSxcbiAgICAgIGFsZ29yaXRobSxcbiAgICAgIHRydWUsXG4gICAgICBbXCJlbmNyeXB0XCJdLFxuICAgICAgXCJzcGtpXCJcbiAgICApLnN1YnNjcmliZSgoa2V5UHVibGljKSA9PiB7XG5cbiAgICAgIC8vIGNvbnNvbGUubG9nKFwiUFVCTElDIEtFWTogXCIsIGtleVB1YmxpYylcblxuICAgICAgdGhpcy5lbmNyeXB0RGF0YShrZXlQdWJsaWMsIFwiU2FtcGxlIERhdGEgaGVyZSAtIE1pa2UgQm9uaWZhY2lvXCIpXG4gICAgICAuc3Vic2NyaWJlKChzdHIpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coXCJFTkNSWVBURUQgU1RSSU5HOiBcIiwgc3RyKTtcbiAgICAgICAgdGVzdFNlcXVlbmNlLm5leHQoJ2VuY3J5cHRlZCBzdHJpbmcgc3VjY2VzcycpO1xuICAgICAgfSlcblxuICAgIH0pXG5cbiAgICBjb25zdCBlbmMgPSBcInI3VU91RUdCWjZqYlZUT0lCdXY5akZPRXRSaWVkbVMyN2hmVzQwazdYS0NUc1E1VmhXdXAwcXUyQkEyQU5aYUdLaWkvdWVoSi9SU1BpeWZHYko2bGVKcmF0MG1BMWhQcUgvWG9kYUJ6TE1EaWd2ZFlNMU5TWEZaTURhNDBPcExVSVhiUGxBdnliamNHdTdCYWwrTE1BOGh0SHJGdS9PbU0vZkhJNjZ4T3p6cHVYU1l4ME9rV2p0WTgxclVRMUZGa3Zya3gyakdGUFowcCtOdy92M1E0Y0puZXQ2VjYzdkN1ZUZsRDc0OVZNY1ZYbzdwdno0QUlQcEIrSU95M2tieGFZVFBha0xWaW9KRVJVNkdGTVhXa0VDdVJ2b2hoUzlDRVRjT1JadFJWUmt2aGNIazNseGdJaGZxb2pVS1lnRDZLNWRERUxEUHNXSVMraVRHMVhJUUlsZz09XCI7XG5cbiAgICAvLyBERUNSWVBUSU9OXG4gICAgdGhpcy5wZW1Ub0NyeXB0b0tleShcbiAgICAgIHByaXZhdGVLZXksXG4gICAgICBhbGdvcml0aG0sXG4gICAgICBmYWxzZSxcbiAgICAgIFtcImRlY3J5cHRcIl0sXG4gICAgICBcInBrY3M4XCJcbiAgICApLnN1YnNjcmliZSgoa2V5KSA9PiB7XG5cbiAgICAgIC8vIGNvbnNvbGUubG9nKFwiREVDUllQVCA9PT1cIiwga2V5KVxuXG4gICAgICB0aGlzLmRlY3J5cHREYXRhKGtleSwgZW5jKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcIkVSUk9SOiBcIiwgZXJyKTtcbiAgICAgICAgICByZXR1cm4gRU1QVFlcbiAgICAgICAgfSlcbiAgICAgICkuc3Vic2NyaWJlKChzdHIpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coXCJERUNSWVBURUQgU1RSSU5HOiBcIiwgc3RyKTtcbiAgICAgICAgdGVzdFNlcXVlbmNlLm5leHQoJ2RlY3J5cHRlZCBzdHJpbmcgc3VjY2VzcycpO1xuICAgICAgfSlcblxuICAgIH0pXG5cbiAgICByZXR1cm4gdGVzdFNlcXVlbmNlJDtcbiAgfTtcbn1cbiJdfQ==