ngx-scandoc 18.0.2 → 19.0.1

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 (48) hide show
  1. package/fesm2022/ngx-scandoc.mjs +130 -130
  2. package/fesm2022/ngx-scandoc.mjs.map +1 -1
  3. package/package.json +9 -11
  4. package/esm2022/core/app.worker.mjs +0 -236
  5. package/esm2022/core/components/base.component.mjs +0 -15
  6. package/esm2022/core/components/camera-switch/camera-switch.component.mjs +0 -25
  7. package/esm2022/core/components/components.module.mjs +0 -69
  8. package/esm2022/core/components/manual-scan/manual-scan.component.mjs +0 -290
  9. package/esm2022/core/components/scan/scan.component.mjs +0 -733
  10. package/esm2022/core/components/scan-results/scan-results.component.mjs +0 -65
  11. package/esm2022/core/components/webcam/domain/webcam-image.mjs +0 -58
  12. package/esm2022/core/components/webcam/domain/webcam-init-error.mjs +0 -3
  13. package/esm2022/core/components/webcam/domain/webcam-mirror-properties.mjs +0 -3
  14. package/esm2022/core/components/webcam/util/webcam.util.mjs +0 -50
  15. package/esm2022/core/components/webcam/webcam/webcam.component.mjs +0 -543
  16. package/esm2022/core/components/webcam/webcam.module.mjs +0 -29
  17. package/esm2022/core/helpers/object-utils.mjs +0 -100
  18. package/esm2022/core/interfaces/config.mjs +0 -2
  19. package/esm2022/core/interfaces/guest.data.mjs +0 -2
  20. package/esm2022/core/pipes/pipes.module.mjs +0 -19
  21. package/esm2022/core/pipes/safeResourceUrl.pipe.mjs +0 -20
  22. package/esm2022/core/shared/material.module.mjs +0 -162
  23. package/esm2022/core/tokens/config.tokens.mjs +0 -4
  24. package/esm2022/dialogs/components/blank/blank.component.mjs +0 -46
  25. package/esm2022/dialogs/components/confirm/confirm.component.mjs +0 -51
  26. package/esm2022/dialogs/components/loading/loading.component.mjs +0 -12
  27. package/esm2022/dialogs/components/prompt-manual/prompt-manual.component.mjs +0 -30
  28. package/esm2022/dialogs/components/scan-profile/scan-profile.component.mjs +0 -79
  29. package/esm2022/dialogs/components/scan-selfie/scan-selfie.component.mjs +0 -95
  30. package/esm2022/dialogs/components/turn-document/turn-document.component.mjs +0 -31
  31. package/esm2022/dialogs/dialogs.core.provider.mjs +0 -120
  32. package/esm2022/dialogs/dialogs.module.mjs +0 -102
  33. package/esm2022/forms/form.module.mjs +0 -87
  34. package/esm2022/forms/types/avatar.type.mjs +0 -58
  35. package/esm2022/forms/types/profile.image.type.mjs +0 -64
  36. package/esm2022/forms/types/title.type.mjs +0 -32
  37. package/esm2022/lib/ngx-scandoc.module.mjs +0 -44
  38. package/esm2022/ngx-scandoc.mjs +0 -5
  39. package/esm2022/providers/auth.provider.mjs +0 -113
  40. package/esm2022/providers/camera.provider.mjs +0 -87
  41. package/esm2022/providers/interceptor.provider.mjs +0 -77
  42. package/esm2022/providers/layout.provider.mjs +0 -30
  43. package/esm2022/providers/scan.form.mjs +0 -347
  44. package/esm2022/providers/scan.provider.mjs +0 -756
  45. package/esm2022/providers/translate-loader.provider.mjs +0 -126
  46. package/esm2022/providers/translation.provider.mjs +0 -133
  47. package/esm2022/providers/webrtc.provider.mjs +0 -58
  48. package/esm2022/public-api.mjs +0 -33
@@ -1,65 +0,0 @@
1
- import { Component, EventEmitter, Input, Output, } from '@angular/core';
2
- import { FormGroup } from '@angular/forms';
3
- import { BaseComponent } from '../base.component';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "../../../providers/camera.provider";
6
- import * as i2 from "../../../providers/scan.form";
7
- import * as i3 from "../../../providers/scan.provider";
8
- import * as i4 from "@angular/common";
9
- import * as i5 from "@angular/forms";
10
- import * as i6 from "@angular/material/card";
11
- import * as i7 from "@ngx-formly/core";
12
- import * as i8 from "@ngx-translate/core";
13
- export class ScanResultsComponent extends BaseComponent {
14
- constructor(cameraProvider, formProvider, provider, cd, zone) {
15
- super();
16
- this.cameraProvider = cameraProvider;
17
- this.formProvider = formProvider;
18
- this.provider = provider;
19
- this.cd = cd;
20
- this.zone = zone;
21
- this.action = new EventEmitter();
22
- }
23
- ngOnInit() {
24
- console.time('fields');
25
- this.fields = this.formProvider.document();
26
- console.timeEnd('fields');
27
- this.__subs(this.data).subscribe((resp) => {
28
- this.zone.run(() => {
29
- switch (resp.type) {
30
- case 'avatar':
31
- this.model._avatar = resp.data;
32
- this.form = new FormGroup({});
33
- console.log(this.model);
34
- break;
35
- case 'model':
36
- this.model = resp.data;
37
- break;
38
- }
39
- console.timeEnd('results');
40
- this.cd.detectChanges();
41
- });
42
- });
43
- }
44
- ngOnDestroy() {
45
- this.__destroy();
46
- }
47
- selfie() {
48
- this.action.emit({ selfie: true });
49
- }
50
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScanResultsComponent, deps: [{ token: i1.NgxScandocCameraProvider }, { token: i2.NgxScandocFieldsProvider }, { token: i3.ScanProvider }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
51
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ScanResultsComponent, selector: "ngx-scan-results", inputs: { data: "data", images: "images", form: "form" }, outputs: { action: "action" }, usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"model\" class=\"wraper\">\n <div style=\"flex: 1\">\n\n\n <form class=\"py-0 w-100-p\" [formGroup]=\"form\">\n <formly-form fxFlex [form]=\"form\" [fields]=\"fields\" [model]=\"model\">\n </formly-form>\n </form>\n </div>\n <div style=\"flex: 1\" >\n <mat-card appearance=\"outlined\" style=\"margin:0px 4px; padding: 16px\" class=\"images\">\n <h3>{{ \"scandoc.result.images\" | translate }}</h3>\n <ng-container *ngFor=\"let img of model.images\">\n <div fxLayout=\"column\">\n <ng-container *ngIf=\"img.side === 0\">\n <div class=\"title\">\n {{ \"scandoc.result.frontSide\" | translate }}\n </div>\n </ng-container>\n <ng-container *ngIf=\"img.side === 1\">\n <div class=\"title\">{{ \"scandoc.result.backSide\" | translate }}</div>\n </ng-container>\n <img\n class=\"preview\"\n style=\"max-width: 460px; border-radius: 1rem\"\n [src]=\"img.data\"\n />\n </div>\n </ng-container>\n </mat-card>\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:column!important;flex:1;overflow-y:auto;overflow-x:hidden}.images .title{padding:8px 0;font-weight:600}.images img{margin-bottom:16px;width:100%}.wraper{padding:4px;flex:1;display:flex;flex-direction:row}mat-card{box-shadow:none!important}.selfieContainer{display:flex;flex-direction:row;align-items:center}.selfieContainer .selfie{width:150px}.selfieContainer .selfie .preview{width:120px;height:120px;border-radius:80px}.selfieContainer .button{box-shadow:none;border:1px solid rgba(0,0,0,.1)}\n"], dependencies: [{ 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: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i6.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "component", type: i7.FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }] }); }
52
- }
53
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScanResultsComponent, decorators: [{
54
- type: Component,
55
- args: [{ selector: 'ngx-scan-results', template: "<div *ngIf=\"model\" class=\"wraper\">\n <div style=\"flex: 1\">\n\n\n <form class=\"py-0 w-100-p\" [formGroup]=\"form\">\n <formly-form fxFlex [form]=\"form\" [fields]=\"fields\" [model]=\"model\">\n </formly-form>\n </form>\n </div>\n <div style=\"flex: 1\" >\n <mat-card appearance=\"outlined\" style=\"margin:0px 4px; padding: 16px\" class=\"images\">\n <h3>{{ \"scandoc.result.images\" | translate }}</h3>\n <ng-container *ngFor=\"let img of model.images\">\n <div fxLayout=\"column\">\n <ng-container *ngIf=\"img.side === 0\">\n <div class=\"title\">\n {{ \"scandoc.result.frontSide\" | translate }}\n </div>\n </ng-container>\n <ng-container *ngIf=\"img.side === 1\">\n <div class=\"title\">{{ \"scandoc.result.backSide\" | translate }}</div>\n </ng-container>\n <img\n class=\"preview\"\n style=\"max-width: 460px; border-radius: 1rem\"\n [src]=\"img.data\"\n />\n </div>\n </ng-container>\n </mat-card>\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:column!important;flex:1;overflow-y:auto;overflow-x:hidden}.images .title{padding:8px 0;font-weight:600}.images img{margin-bottom:16px;width:100%}.wraper{padding:4px;flex:1;display:flex;flex-direction:row}mat-card{box-shadow:none!important}.selfieContainer{display:flex;flex-direction:row;align-items:center}.selfieContainer .selfie{width:150px}.selfieContainer .selfie .preview{width:120px;height:120px;border-radius:80px}.selfieContainer .button{box-shadow:none;border:1px solid rgba(0,0,0,.1)}\n"] }]
56
- }], ctorParameters: () => [{ type: i1.NgxScandocCameraProvider }, { type: i2.NgxScandocFieldsProvider }, { type: i3.ScanProvider }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }], propDecorators: { data: [{
57
- type: Input
58
- }], images: [{
59
- type: Input
60
- }], form: [{
61
- type: Input
62
- }], action: [{
63
- type: Output
64
- }] } });
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbi1yZXN1bHRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zY2FuZG9jL3NyYy9jb3JlL2NvbXBvbmVudHMvc2Nhbi1yZXN1bHRzL3NjYW4tcmVzdWx0cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NhbmRvYy9zcmMvY29yZS9jb21wb25lbnRzL3NjYW4tcmVzdWx0cy9zY2FuLXJlc3VsdHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBR1osS0FBSyxFQUdMLE1BQU0sR0FHUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7Ozs7O0FBU2xELE1BQU0sT0FBTyxvQkFDWCxTQUFRLGFBQWE7SUFXckIsWUFDUyxjQUF3QyxFQUN2QyxZQUFzQyxFQUN0QyxRQUFzQixFQUN0QixFQUFxQixFQUNyQixJQUFZO1FBRXBCLEtBQUssRUFBRSxDQUFDO1FBTkQsbUJBQWMsR0FBZCxjQUFjLENBQTBCO1FBQ3ZDLGlCQUFZLEdBQVosWUFBWSxDQUEwQjtRQUN0QyxhQUFRLEdBQVIsUUFBUSxDQUFjO1FBQ3RCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ3JCLFNBQUksR0FBSixJQUFJLENBQVE7UUFQWixXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQVV0QyxDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzNDLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO2dCQUNqQixRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDbEIsS0FBSyxRQUFRO3dCQUNYLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7d0JBRS9CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7d0JBQzlCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUN4QixNQUFNO29CQUNSLEtBQUssT0FBTzt3QkFDVixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7d0JBQ3ZCLE1BQU07Z0JBQ1YsQ0FBQztnQkFFRCxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUUzQixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzFCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDckMsQ0FBQzsrR0F0RFUsb0JBQW9CO21HQUFwQixvQkFBb0Isd0tDekJqQyxnbUNBZ0NBOzs0RkRQYSxvQkFBb0I7a0JBTmhDLFNBQVM7K0JBQ0Usa0JBQWtCO29OQVNuQixJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUdHLElBQUk7c0JBQVosS0FBSztnQkFDSSxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgTmdab25lLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5neFNjYW5kb2NDYW1lcmFQcm92aWRlciB9IGZyb20gJy4uLy4uLy4uL3Byb3ZpZGVycy9jYW1lcmEucHJvdmlkZXInO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTmd4U2NhbmRvY0ZpZWxkc1Byb3ZpZGVyIH0gZnJvbSAnLi4vLi4vLi4vcHJvdmlkZXJzL3NjYW4uZm9ybSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2NhblByb3ZpZGVyIH0gZnJvbSAnLi4vLi4vLi4vcHJvdmlkZXJzL3NjYW4ucHJvdmlkZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3gtc2Nhbi1yZXN1bHRzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NjYW4tcmVzdWx0cy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NjYW4tcmVzdWx0cy5jb21wb25lbnQuc2NzcyddLFxuICAvLyBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2NhblJlc3VsdHNDb21wb25lbnRcbiAgZXh0ZW5kcyBCYXNlQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3lcbntcbiAgQElucHV0KCkgZGF0YSE6IFN1YmplY3Q8YW55PjtcbiAgbW9kZWw6IGFueTtcbiAgQElucHV0KCkgaW1hZ2VzOiBhbnk7XG4gIGZpZWxkczogYW55O1xuXG4gIEBJbnB1dCgpIGZvcm0hOiBGb3JtR3JvdXA7XG4gIEBPdXRwdXQoKSBhY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGNhbWVyYVByb3ZpZGVyOiBOZ3hTY2FuZG9jQ2FtZXJhUHJvdmlkZXIsXG4gICAgcHJpdmF0ZSBmb3JtUHJvdmlkZXI6IE5neFNjYW5kb2NGaWVsZHNQcm92aWRlcixcbiAgICBwcml2YXRlIHByb3ZpZGVyOiBTY2FuUHJvdmlkZXIsXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmVcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnNvbGUudGltZSgnZmllbGRzJyk7XG4gICAgdGhpcy5maWVsZHMgPSB0aGlzLmZvcm1Qcm92aWRlci5kb2N1bWVudCgpO1xuICAgIGNvbnNvbGUudGltZUVuZCgnZmllbGRzJyk7XG5cbiAgICB0aGlzLl9fc3Vicyh0aGlzLmRhdGEpLnN1YnNjcmliZSgocmVzcCkgPT4ge1xuICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgIHN3aXRjaCAocmVzcC50eXBlKSB7XG4gICAgICAgICAgY2FzZSAnYXZhdGFyJzpcbiAgICAgICAgICAgIHRoaXMubW9kZWwuX2F2YXRhciA9IHJlc3AuZGF0YTtcblxuICAgICAgICAgICAgdGhpcy5mb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLm1vZGVsKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ21vZGVsJzpcbiAgICAgICAgICAgIHRoaXMubW9kZWwgPSByZXNwLmRhdGE7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUudGltZUVuZCgncmVzdWx0cycpO1xuXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9fZGVzdHJveSgpO1xuICB9XG5cbiAgc2VsZmllKCkge1xuICAgIHRoaXMuYWN0aW9uLmVtaXQoeyBzZWxmaWU6IHRydWUgfSk7XG4gIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCJtb2RlbFwiIGNsYXNzPVwid3JhcGVyXCI+XG4gIDxkaXYgc3R5bGU9XCJmbGV4OiAxXCI+XG5cblxuICAgIDxmb3JtIGNsYXNzPVwicHktMCB3LTEwMC1wXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gICAgICA8Zm9ybWx5LWZvcm0gZnhGbGV4IFtmb3JtXT1cImZvcm1cIiBbZmllbGRzXT1cImZpZWxkc1wiIFttb2RlbF09XCJtb2RlbFwiPlxuICAgICAgPC9mb3JtbHktZm9ybT5cbiAgICA8L2Zvcm0+XG4gIDwvZGl2PlxuICA8ZGl2IHN0eWxlPVwiZmxleDogMVwiID5cbiAgICA8bWF0LWNhcmQgYXBwZWFyYW5jZT1cIm91dGxpbmVkXCIgc3R5bGU9XCJtYXJnaW46MHB4IDRweDsgcGFkZGluZzogMTZweFwiIGNsYXNzPVwiaW1hZ2VzXCI+XG4gICAgICA8aDM+e3sgXCJzY2FuZG9jLnJlc3VsdC5pbWFnZXNcIiB8IHRyYW5zbGF0ZSB9fTwvaDM+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpbWcgb2YgbW9kZWwuaW1hZ2VzXCI+XG4gICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW1nLnNpZGUgPT09IDBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPlxuICAgICAgICAgICAgICB7eyBcInNjYW5kb2MucmVzdWx0LmZyb250U2lkZVwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW1nLnNpZGUgPT09IDFcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPnt7IFwic2NhbmRvYy5yZXN1bHQuYmFja1NpZGVcIiB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgIGNsYXNzPVwicHJldmlld1wiXG4gICAgICAgICAgICBzdHlsZT1cIm1heC13aWR0aDogNDYwcHg7IGJvcmRlci1yYWRpdXM6IDFyZW1cIlxuICAgICAgICAgICAgW3NyY109XCJpbWcuZGF0YVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L21hdC1jYXJkPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -1,58 +0,0 @@
1
- /**
2
- * Container class for a captured webcam image
3
- * @author basst314, davidshen84
4
- */
5
- export class WebcamImage {
6
- constructor(imageAsDataUrl, mimeType, imageData, resized) {
7
- this._mimeType = mimeType;
8
- this._imageAsDataUrl = imageAsDataUrl;
9
- this._imageData = imageData;
10
- this._imageResized = resized;
11
- }
12
- /**
13
- * Extracts the Base64 data out of the given dataUrl.
14
- * @param dataUrl the given dataUrl
15
- * @param mimeType the mimeType of the data
16
- */
17
- static getDataFromDataUrl(dataUrl, mimeType) {
18
- return dataUrl.replace(`data:${mimeType};base64,`, '');
19
- }
20
- /**
21
- * Get the base64 encoded image data
22
- * @returns base64 data of the image
23
- */
24
- get imageAsBase64() {
25
- return this._imageAsBase64
26
- ? this._imageAsBase64
27
- : (this._imageAsBase64 = WebcamImage.getDataFromDataUrl(this._imageAsDataUrl, this._mimeType));
28
- }
29
- /**
30
- * Get the encoded image as dataUrl
31
- * @returns the dataUrl of the image
32
- */
33
- get imageAsDataUrl() {
34
- return this._imageAsDataUrl;
35
- }
36
- /**
37
- * Get the ImageData object associated with the canvas' 2d context.
38
- * @returns the ImageData of the canvas's 2d context.
39
- */
40
- get imageData() {
41
- return this._imageData;
42
- }
43
- get imageResized() {
44
- return this._imageResized;
45
- }
46
- get dataUrl() {
47
- const canvas = document.createElement('canvas');
48
- const { width, height } = this._imageData;
49
- canvas.width = width;
50
- canvas.height = height;
51
- const ctx = canvas.getContext('2d');
52
- if (ctx) {
53
- ctx.putImageData(this._imageData, 0, 0);
54
- }
55
- return canvas.toDataURL(this._mimeType, 1);
56
- }
57
- }
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViY2FtLWltYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNjYW5kb2Mvc3JjL2NvcmUvY29tcG9uZW50cy93ZWJjYW0vZG9tYWluL3dlYmNhbS1pbWFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sV0FBVztJQUN0QixZQUNFLGNBQXNCLEVBQ3RCLFFBQWdCLEVBQ2hCLFNBQWMsRUFDZCxPQUFZO1FBRVosSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7UUFDMUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxjQUFjLENBQUM7UUFDdEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUM7SUFDL0IsQ0FBQztJQVNEOzs7O09BSUc7SUFDSyxNQUFNLENBQUMsa0JBQWtCLENBQUMsT0FBZSxFQUFFLFFBQWdCO1FBQ2pFLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLFFBQVEsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFXLGFBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsY0FBYztZQUN4QixDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWM7WUFDckIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUMsa0JBQWtCLENBQ25ELElBQUksQ0FBQyxlQUFlLEVBQ3BCLElBQUksQ0FBQyxTQUFTLENBQ2YsQ0FBQyxDQUFDO0lBQ1QsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQVcsY0FBYztRQUN2QixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELElBQVcsWUFBWTtRQUNyQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQVcsT0FBTztRQUNoQixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWhELE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUMxQyxNQUFNLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNyQixNQUFNLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUV2QixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BDLElBQUksR0FBRyxFQUFFLENBQUM7WUFDUixHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM3QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbnRhaW5lciBjbGFzcyBmb3IgYSBjYXB0dXJlZCB3ZWJjYW0gaW1hZ2VcbiAqIEBhdXRob3IgYmFzc3QzMTQsIGRhdmlkc2hlbjg0XG4gKi9cbmV4cG9ydCBjbGFzcyBXZWJjYW1JbWFnZSB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBpbWFnZUFzRGF0YVVybDogc3RyaW5nLFxuICAgIG1pbWVUeXBlOiBzdHJpbmcsXG4gICAgaW1hZ2VEYXRhOiBhbnksXG4gICAgcmVzaXplZDogYW55XG4gICkge1xuICAgIHRoaXMuX21pbWVUeXBlID0gbWltZVR5cGU7XG4gICAgdGhpcy5faW1hZ2VBc0RhdGFVcmwgPSBpbWFnZUFzRGF0YVVybDtcbiAgICB0aGlzLl9pbWFnZURhdGEgPSBpbWFnZURhdGE7XG4gICAgdGhpcy5faW1hZ2VSZXNpemVkID0gcmVzaXplZDtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX21pbWVUeXBlOiBzdHJpbmc7XG4gIHByaXZhdGUgX2ltYWdlQXNCYXNlNjQ/OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ltYWdlQXNEYXRhVXJsOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ltYWdlRGF0YTogSW1hZ2VEYXRhO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pbWFnZVJlc2l6ZWQ6IHN0cmluZztcblxuXG4gIC8qKlxuICAgKiBFeHRyYWN0cyB0aGUgQmFzZTY0IGRhdGEgb3V0IG9mIHRoZSBnaXZlbiBkYXRhVXJsLlxuICAgKiBAcGFyYW0gZGF0YVVybCB0aGUgZ2l2ZW4gZGF0YVVybFxuICAgKiBAcGFyYW0gbWltZVR5cGUgdGhlIG1pbWVUeXBlIG9mIHRoZSBkYXRhXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBnZXREYXRhRnJvbURhdGFVcmwoZGF0YVVybDogc3RyaW5nLCBtaW1lVHlwZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGRhdGFVcmwucmVwbGFjZShgZGF0YToke21pbWVUeXBlfTtiYXNlNjQsYCwgJycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgYmFzZTY0IGVuY29kZWQgaW1hZ2UgZGF0YVxuICAgKiBAcmV0dXJucyBiYXNlNjQgZGF0YSBvZiB0aGUgaW1hZ2VcbiAgICovXG4gIHB1YmxpYyBnZXQgaW1hZ2VBc0Jhc2U2NCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9pbWFnZUFzQmFzZTY0XG4gICAgICA/IHRoaXMuX2ltYWdlQXNCYXNlNjRcbiAgICAgIDogKHRoaXMuX2ltYWdlQXNCYXNlNjQgPSBXZWJjYW1JbWFnZS5nZXREYXRhRnJvbURhdGFVcmwoXG4gICAgICAgICAgdGhpcy5faW1hZ2VBc0RhdGFVcmwsXG4gICAgICAgICAgdGhpcy5fbWltZVR5cGVcbiAgICAgICAgKSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBlbmNvZGVkIGltYWdlIGFzIGRhdGFVcmxcbiAgICogQHJldHVybnMgdGhlIGRhdGFVcmwgb2YgdGhlIGltYWdlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGltYWdlQXNEYXRhVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2ltYWdlQXNEYXRhVXJsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgSW1hZ2VEYXRhIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhlIGNhbnZhcycgMmQgY29udGV4dC5cbiAgICogQHJldHVybnMgdGhlIEltYWdlRGF0YSBvZiB0aGUgY2FudmFzJ3MgMmQgY29udGV4dC5cbiAgICovXG4gIHB1YmxpYyBnZXQgaW1hZ2VEYXRhKCk6IEltYWdlRGF0YSB7XG4gICAgcmV0dXJuIHRoaXMuX2ltYWdlRGF0YTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaW1hZ2VSZXNpemVkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2ltYWdlUmVzaXplZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGF0YVVybCgpIHtcbiAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcblxuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gdGhpcy5faW1hZ2VEYXRhO1xuICAgIGNhbnZhcy53aWR0aCA9IHdpZHRoO1xuICAgIGNhbnZhcy5oZWlnaHQgPSBoZWlnaHQ7XG5cbiAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICBpZiAoY3R4KSB7XG4gICAgICBjdHgucHV0SW1hZ2VEYXRhKHRoaXMuX2ltYWdlRGF0YSwgMCwgMCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNhbnZhcy50b0RhdGFVUkwodGhpcy5fbWltZVR5cGUsIDEpO1xuICB9XG59XG4iXX0=
@@ -1,3 +0,0 @@
1
- export class WebcamInitError {
2
- }
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViY2FtLWluaXQtZXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NhbmRvYy9zcmMvY29yZS9jb21wb25lbnRzL3dlYmNhbS9kb21haW4vd2ViY2FtLWluaXQtZXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLGVBQWU7Q0FHM0IiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgV2ViY2FtSW5pdEVycm9yIHtcbiAgcHVibGljIG1lc3NhZ2U/OiBzdHJpbmc7XG4gIHB1YmxpYyBtZWRpYVN0cmVhbUVycm9yPzphbnk7XG59XG4iXX0=
@@ -1,3 +0,0 @@
1
- export class WebcamMirrorProperties {
2
- }
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViY2FtLW1pcnJvci1wcm9wZXJ0aWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNjYW5kb2Mvc3JjL2NvcmUvY29tcG9uZW50cy93ZWJjYW0vZG9tYWluL3dlYmNhbS1taXJyb3ItcHJvcGVydGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sc0JBQXNCO0NBRWxDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFdlYmNhbU1pcnJvclByb3BlcnRpZXMge1xuICBwdWJsaWMgeD86IHN0cmluZzsgIC8vIFtcImF1dG9cIiwgXCJhbHdheXNcIiwgXCJuZXZlclwiXVxufVxuIl19
@@ -1,50 +0,0 @@
1
- import { from, Observable } from 'rxjs';
2
- import { switchMap, tap } from 'rxjs/operators';
3
- export class WebcamUtil {
4
- /**
5
- * Lists available videoInput devices
6
- * @returns a list of media device info.
7
- */
8
- static getAvailableVideoInputs(facingMode = 'environment') {
9
- return new Observable((observer) => {
10
- if (!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices) {
11
- return observer.error(null);
12
- }
13
- const _window = window;
14
- let streams;
15
- from(navigator.mediaDevices.getUserMedia({
16
- video: { facingMode, deviceId: undefined },
17
- }))
18
- .pipe(tap((s) => {
19
- streams = s;
20
- }), switchMap((s) => from(navigator.mediaDevices.enumerateDevices())))
21
- .subscribe((devices) => {
22
- // console.log(devices);
23
- if (streams) {
24
- streams.getTracks().forEach((track) => {
25
- track.stop();
26
- });
27
- }
28
- observer.next(devices.filter((device) => device.kind === 'videoinput'));
29
- });
30
- });
31
- // return new Promise((resolve, reject) => {
32
- // navigator.mediaDevices.getUserMedia({
33
- // video: undefined,
34
- // });
35
- // navigator.mediaDevices
36
- // .enumerateDevices()
37
- // .then((devices: MediaDeviceInfo[]) => {
38
- // resolve(
39
- // devices.filter(
40
- // (device: MediaDeviceInfo) => device.kind === 'videoinput'
41
- // )
42
- // );
43
- // })
44
- // .catch((err) => {
45
- // reject(err.message || err);
46
- // });
47
- // });
48
- }
49
- }
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViY2FtLnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NhbmRvYy9zcmMvY29yZS9jb21wb25lbnRzL3dlYmNhbS91dGlsL3dlYmNhbS51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFNLE1BQU0sTUFBTSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEQsTUFBTSxPQUFPLFVBQVU7SUFDckI7OztPQUdHO0lBRUksTUFBTSxDQUFDLHVCQUF1QixDQUNuQyxhQUFxQyxhQUFhO1FBRWxELE9BQU8sSUFBSSxVQUFVLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNqQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDeEUsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzlCLENBQUM7WUFDRCxNQUFNLE9BQU8sR0FBUSxNQUFNLENBQUM7WUFDNUIsSUFBSSxPQUFZLENBQUM7WUFDakIsSUFBSSxDQUNGLFNBQVMsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDO2dCQUNsQyxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRTthQUMxQyxDQUFDLENBQ0g7aUJBQ0UsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNSLE9BQU8sR0FBRyxDQUFDLENBQUM7WUFDZCxDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUNsRTtpQkFDQSxTQUFTLENBQUMsQ0FBQyxPQUEwQixFQUFFLEVBQUU7Z0JBQ3ZDLHdCQUF3QjtnQkFFekIsSUFBSSxPQUFPLEVBQUUsQ0FBQztvQkFDWixPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7d0JBQ3pDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDZixDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDO2dCQUNELFFBQVEsQ0FBQyxJQUFJLENBQ1gsT0FBTyxDQUFDLE1BQU0sQ0FDWixDQUFDLE1BQXVCLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUMxRCxDQUNGLENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO1FBRUgsNENBQTRDO1FBQzVDLDBDQUEwQztRQUMxQyx3QkFBd0I7UUFDeEIsUUFBUTtRQUNSLDJCQUEyQjtRQUMzQiwwQkFBMEI7UUFDMUIsOENBQThDO1FBQzlDLGlCQUFpQjtRQUNqQiwwQkFBMEI7UUFDMUIsc0VBQXNFO1FBQ3RFLFlBQVk7UUFDWixXQUFXO1FBQ1gsU0FBUztRQUNULHdCQUF3QjtRQUN4QixvQ0FBb0M7UUFDcEMsVUFBVTtRQUNWLE1BQU07SUFDUixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCBjbGFzcyBXZWJjYW1VdGlsIHtcbiAgLyoqXG4gICAqIExpc3RzIGF2YWlsYWJsZSB2aWRlb0lucHV0IGRldmljZXNcbiAgICogQHJldHVybnMgYSBsaXN0IG9mIG1lZGlhIGRldmljZSBpbmZvLlxuICAgKi9cblxuICBwdWJsaWMgc3RhdGljIGdldEF2YWlsYWJsZVZpZGVvSW5wdXRzKFxuICAgIGZhY2luZ01vZGU6ICd1c2VyJyB8ICdlbnZpcm9ubWVudCcgPSAnZW52aXJvbm1lbnQnXG4gICk6IE9ic2VydmFibGU8TWVkaWFEZXZpY2VJbmZvW10+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKG9ic2VydmVyKSA9PiB7XG4gICAgICBpZiAoIW5hdmlnYXRvci5tZWRpYURldmljZXMgfHwgIW5hdmlnYXRvci5tZWRpYURldmljZXMuZW51bWVyYXRlRGV2aWNlcykge1xuICAgICAgICByZXR1cm4gb2JzZXJ2ZXIuZXJyb3IobnVsbCk7XG4gICAgICB9XG4gICAgICBjb25zdCBfd2luZG93OiBhbnkgPSB3aW5kb3c7XG4gICAgICBsZXQgc3RyZWFtczogYW55O1xuICAgICAgZnJvbShcbiAgICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe1xuICAgICAgICAgIHZpZGVvOiB7IGZhY2luZ01vZGUsZGV2aWNlSWQ6IHVuZGVmaW5lZCB9LFxuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YXAoKHMpID0+IHtcbiAgICAgICAgICAgIHN0cmVhbXMgPSBzO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIHN3aXRjaE1hcCgocykgPT4gZnJvbShuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMoKSkpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoZGV2aWNlczogTWVkaWFEZXZpY2VJbmZvW10pID0+IHtcbiAgICAgICAgICAgLy8gY29uc29sZS5sb2coZGV2aWNlcyk7XG5cbiAgICAgICAgICBpZiAoc3RyZWFtcykge1xuICAgICAgICAgICAgc3RyZWFtcy5nZXRUcmFja3MoKS5mb3JFYWNoKCh0cmFjazogYW55KSA9PiB7XG4gICAgICAgICAgICAgIHRyYWNrLnN0b3AoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvYnNlcnZlci5uZXh0KFxuICAgICAgICAgICAgZGV2aWNlcy5maWx0ZXIoXG4gICAgICAgICAgICAgIChkZXZpY2U6IE1lZGlhRGV2aWNlSW5mbykgPT4gZGV2aWNlLmtpbmQgPT09ICd2aWRlb2lucHV0J1xuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLy8gcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAvLyAgIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHtcbiAgICAvLyAgICAgdmlkZW86IHVuZGVmaW5lZCxcbiAgICAvLyAgIH0pO1xuICAgIC8vICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlc1xuICAgIC8vICAgICAuZW51bWVyYXRlRGV2aWNlcygpXG4gICAgLy8gICAgIC50aGVuKChkZXZpY2VzOiBNZWRpYURldmljZUluZm9bXSkgPT4ge1xuICAgIC8vICAgICAgIHJlc29sdmUoXG4gICAgLy8gICAgICAgICBkZXZpY2VzLmZpbHRlcihcbiAgICAvLyAgICAgICAgICAgKGRldmljZTogTWVkaWFEZXZpY2VJbmZvKSA9PiBkZXZpY2Uua2luZCA9PT0gJ3ZpZGVvaW5wdXQnXG4gICAgLy8gICAgICAgICApXG4gICAgLy8gICAgICAgKTtcbiAgICAvLyAgICAgfSlcbiAgICAvLyAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAvLyAgICAgICByZWplY3QoZXJyLm1lc3NhZ2UgfHwgZXJyKTtcbiAgICAvLyAgICAgfSk7XG4gICAgLy8gfSk7XG4gIH1cbn1cbiJdfQ==