@fad-producto-portal/ng-fad-signature-fea 1.0.0-alpha.6 → 1.0.0-alpha.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/document-approval-list/document-approval-list.component.mjs +3 -3
- package/esm2022/lib/components/pdf-viewer-fea/pdf-viewer-fea.component.mjs +5 -5
- package/esm2022/lib/components/upload-e-signature/upload-e-signature.component.mjs +66 -54
- package/esm2022/lib/constants/errors/upload-e-signature/upload-e-signature-error-code.mjs +2 -1
- package/esm2022/lib/constants/errors/upload-e-signature/upload-e-signature-error-description.mjs +3 -1
- package/esm2022/lib/models/configuration/upload-e-signature/upload-e-signature-configuration.interface.mjs +1 -1
- package/fesm2022/fad-producto-portal-ng-fad-signature-fea.mjs +79 -64
- package/fesm2022/fad-producto-portal-ng-fad-signature-fea.mjs.map +1 -1
- package/lib/components/upload-e-signature/upload-e-signature.component.d.ts +3 -3
- package/lib/constants/errors/upload-e-signature/upload-e-signature-error-code.d.ts +2 -1
- package/lib/constants/errors/upload-e-signature/upload-e-signature-error-description.d.ts +1 -1
- package/lib/models/configuration/upload-e-signature/upload-e-signature-configuration.interface.d.ts +2 -0
- package/package.json +2 -2
|
@@ -172,11 +172,11 @@ export class DocumentApprovalListComponent {
|
|
|
172
172
|
this.configuration = Utils.mergeConfiguration(new Configuration(), DOCUMENT_APPROVAL_LIST_DEFAULT, this.configuration);
|
|
173
173
|
}
|
|
174
174
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DocumentApprovalListComponent, deps: [{ token: i0.ElementRef }, { token: i1.FadService }, { token: i0.ChangeDetectorRef }, { token: i2.NgFadPdfReaderService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
175
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DocumentApprovalListComponent, selector: "ng-fad-signature-fea-document-approval-list", inputs: { configuration: "configuration", rfc: "rfc" }, outputs: { onloader: "onloader", onevent: "onevent", onerror: "onerror" }, providers: [NgFadPdfReaderService], ngImport: i0, template: "\n <ng-container *ngFor=\"let requisition of requisitionsFea\">\n <div class=\"fad-portal-content\" >\n <div class=\"header\" >\n <div>\n <div class=\"fad-portal-title\">\n {{ requisition.name }} ({{requisition.documents.length}})\n </div>\n <div class=\"info\">\n {{configuration.customization?.moduleCustomization?.legends?.sendTo}} Alfredo Villanueva {{ requisition.sendBy }}\n </div>\n <div class=\"info\">\n {{ requisition.sendByEmail }}\n </div>\n </div>\n <div class=\"requisition-id\">\n <div class=\"fad-portal-content-bold\">ID {{ requisition.requisitionId }}</div>\n </div>\n </div>\n <div class=\"documents-container\">\n <ng-container *ngFor=\"let document of documentsApprovalList; let i = index\">\n <ng-container *ngIf=\"document.idRequisition === requisition.requisitionId\" >\n <div class=\"document\" >\n <div class=\"information\" >\n <div class=\"document-name fad-portal-content-bold\" >\n {{ document.doc?.name }}\n </div>\n <div class=\"validate\">\n \n <ng-fad-image-inline \n [src]=\"document.approved === false ? images.active.reject : images.inactive.reject\"\n (click)=\"toggleRejection(document)\">\n </ng-fad-image-inline>\n \n \n <ng-fad-image-inline \n [src]=\"document.approved === true ? images.active.approve : images.inactive.approve\"\n (click)=\"toggleApproval(document)\">\n </ng-fad-image-inline>\n </div>\n \n </div>\n <div class=\"actions\">\n <div>\n <div class=\"fad-portal-content-bold\" (click)=\"seeDocumentFea(document)\">\n {{ document.isVisible ? 'Ocultar documento' : 'Ver documento' }}\n </div>\n <div class=\"fad-portal-content-bold\" (click)=\"downloadDocumentFea(document)\">{{configuration.customization?.moduleCustomization?.legends?.download}}</div>\n </div>\n <div>\n {{ document.doc?.pages }} {{configuration.customization?.moduleCustomization?.legends?.pages}}\n </div>\n </div>\n \n <ng-fad-signature-fea-pdf-viewer-fea\n *ngIf=\"document.isVisible && document.doc?.file\"\n [file]=\"document.doc?.file\"\n [index]=\"i\"\n [id]=\"getDocumentId(document.id!)\"\n >\n </ng-fad-signature-fea-pdf-viewer-fea>\n \n </div>\n </ng-container>\n </ng-container>\n \n </div>\n \n </div>\n </ng-container>\n <div class=\"fad-portal-content selector-document\">\n <div class=\"document-status-bar\">\n \n <div *ngIf=\"getApprovedCount() === 0 && getRejectedCount() === 0\" class=\"document-status-message \">\n Aprueba los documentos para firmarlos con tu e.firma\n </div>\n \n \n <div *ngIf=\"getApprovedCount() > 0 || getRejectedCount() > 0\" class=\"document-status-content\">\n <div class=\"approve-all\">\n <ng-fad-image-inline \n [src]=\"approveAll ? images.active.approve : images.inactive.approve\"\n (click)=\"approveAllDocuments()\">\n </ng-fad-image-inline>\n <span (click)=\"approveAllDocuments()\">Aprobar todos los documentos ({{ documentsApprovalList.length }})</span>\n </div>\n \n \n <div class=\"document-counts\">\n <span *ngIf=\"getApprovedCount() > 0 && getRejectedCount() === 0\" class=\"fad-portal-informative-bold\">\n {{ getApprovedCount() }} documentos aprobados\n </span>\n <span *ngIf=\"getRejectedCount() > 0 && getApprovedCount() === 0\" class=\"fad-portal-informative-bold\">\n {{ getRejectedCount() }} documentos rechazados\n </span>\n \n <ng-container *ngIf=\"getApprovedCount() > 0 && getRejectedCount() > 0\" >\n <span class=\"fad-portal-informative-bold\">\n {{ getApprovedCount() }} documentos aprobados\n </span>\n <span class=\"fad-portal-informative-bold\">\n {{ getRejectedCount() }} documentos rechazados\n </span>\n </ng-container>\n </div>\n \n \n <button class=\"fad-portal-primary\" (click)=\"emitApprovedDocuments()\">Continuar</button>\n </div>\n </div>\n </div>\n \n\n", styles: [":host{box-sizing:border-box}:host .fad-portal-content{display:flex;flex-direction:column;justify-content:center;width:100%;box-sizing:border-box;margin-top:var(--fad-portal-common-separation-lg)}:host .fad-portal-content .header{display:flex;align-items:center;justify-content:space-between;width:100%;background-color:#f5f5f5;border-radius:var(--fad-portal-common-input-border-radius);padding:var(--fad-portal-common-separation-md);overflow:hidden;box-sizing:border-box}:host .fad-portal-content .header div:nth-child(1){display:flex;flex-direction:column;row-gap:var(--fad-portal-common-separation-xs)}:host .fad-portal-content .header .info{color:var(--fad-portal-common-tertiary-color)}@media (max-width: 992px){:host .fad-portal-content .header{flex-direction:column;align-items:start;justify-content:center;row-gap:var(--fad-portal-common-separation-xs);margin-bottom:var(--fad-portal-common-separation-md)}}:host .fad-portal-content .documents-container{box-sizing:border-box}:host .fad-portal-content .documents-container .document{display:flex;align-items:center;flex-direction:column;width:100%;margin-top:var(--fad-portal-common-separation-md);border-radius:var(--fad-portal-common-input-border-radius);border:1px solid #f5f5f5}:host .fad-portal-content .documents-container .document .information{padding:var(--fad-portal-common-separation-md);display:flex;align-items:center;justify-content:space-between;width:100%}:host .fad-portal-content .documents-container .document .information .validate{padding-left:var(--fad-portal-common-separation-md);padding-right:var(--fad-portal-common-separation-md);display:flex;column-gap:var(--fad-portal-common-separation-md)}:host .fad-portal-content .documents-container .document .information .document-name{padding-left:var(--fad-portal-common-separation-md);padding-right:var(--fad-portal-common-separation-md)}:host .fad-portal-content .documents-container .document .actions{display:flex;align-items:center;justify-content:space-between;width:100%;background-color:#f5f5f5;padding:var(--fad-portal-common-separation-md);box-sizing:border-box;border-radius:var(--fad-portal-common-input-border-radius);border-top-left-radius:0;border-top-right-radius:0}:host .fad-portal-content .documents-container .document .actions div:nth-child(1){display:flex;align-items:center;gap:var(--fad-portal-common-separation-md)}:host .fad-portal-content .documents-container .document .actions div:nth-child(1) div{color:var(--fad-portal-common-primary-color)!important;cursor:pointer}:host .selector-document{width:100%;background-color:var(--fad-portal-common-tertiary-color);color:#fff;padding:var(--fad-portal-common-separation-md);margin-top:var(--fad-portal-common-separation-md);display:flex;align-items:center;justify-content:space-between;border-radius:var(--fad-portal-common-input-border-radius);box-sizing:border-box}:host .selector-document .document-status-message{display:flex;align-items:center;justify-content:center;width:100%;gap:var(--fad-portal-common-separation-md)}:host .selector-document .document-status-bar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;width:100%;font-size:14px;box-sizing:border-box}:host .selector-document .document-status-bar .document-status-content{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;width:100%;font-size:14px;box-sizing:border-box}:host .selector-document .document-status-bar .approve-all{display:flex;align-items:center;gap:10px;cursor:pointer;box-sizing:border-box}:host .selector-document .document-status-bar .approve-all span{cursor:pointer;-webkit-user-select:none;user-select:none}:host .selector-document .document-status-bar .document-counts{display:flex;flex-direction:column;gap:var(--fad-portal-common-separation-xs);box-sizing:border-box}:host .selector-document .document-status-bar .document-counts span{color:#fff}:host .selector-document .document-status-bar .fad-portal-primary{min-width:0px;width:50%}@media (max-width: 992px){:host .selector-document .document-status-bar .fad-portal-primary{width:100%;margin-top:var(--fad-portal-common-separation-md)}}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.NgFadImageInlineComponent, selector: "ng-fad-image-inline", inputs: ["src"] }, { kind: "component", type: i5.PdfViewerFeaComponent, selector: "ng-fad-signature-fea-pdf-viewer-fea", inputs: ["configuration", "file", "index", "id"] }] }); }
|
|
175
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DocumentApprovalListComponent, selector: "ng-fad-signature-fea-document-approval-list", inputs: { configuration: "configuration", rfc: "rfc" }, outputs: { onloader: "onloader", onevent: "onevent", onerror: "onerror" }, providers: [NgFadPdfReaderService], ngImport: i0, template: "<ng-container *ngIf=\"requisitionsFea && requisitionsFea.length > 0\">\r\n <ng-container *ngFor=\"let requisition of requisitionsFea\">\r\n <div class=\"fad-portal-content\" >\r\n <div class=\"header\" >\r\n <div>\r\n <div class=\"fad-portal-title\">\r\n {{ requisition.name }} ({{requisition.documents.length}})\r\n </div>\r\n <div class=\"info\">\r\n {{configuration.customization?.moduleCustomization?.legends?.sendTo}} Alfredo Villanueva {{ requisition.sendBy }}\r\n </div>\r\n <div class=\"info\">\r\n {{ requisition.sendByEmail }}\r\n </div>\r\n </div>\r\n <div class=\"requisition-id\">\r\n <div class=\"fad-portal-content-bold\">ID {{ requisition.requisitionId }}</div>\r\n </div>\r\n </div>\r\n <div class=\"documents-container\">\r\n <ng-container *ngFor=\"let document of documentsApprovalList; let i = index\">\r\n <ng-container *ngIf=\"document.idRequisition === requisition.requisitionId\" >\r\n <div class=\"document\" >\r\n <div class=\"information\" >\r\n <div class=\"document-name fad-portal-content-bold\" >\r\n {{ document.doc?.name }}\r\n </div>\r\n <div class=\"validate\">\r\n \r\n <ng-fad-image-inline\r\n [src]=\"document.approved === false ? images.active.reject : images.inactive.reject\"\r\n (click)=\"toggleRejection(document)\">\r\n </ng-fad-image-inline>\r\n \r\n \r\n <ng-fad-image-inline\r\n [src]=\"document.approved === true ? images.active.approve : images.inactive.approve\"\r\n (click)=\"toggleApproval(document)\">\r\n </ng-fad-image-inline>\r\n </div>\r\n \r\n </div>\r\n <div class=\"actions\">\r\n <div>\r\n <div class=\"fad-portal-content-bold\" (click)=\"seeDocumentFea(document)\">\r\n {{ document.isVisible ? 'Ocultar documento' : 'Ver documento' }}\r\n </div>\r\n <div class=\"fad-portal-content-bold\" (click)=\"downloadDocumentFea(document)\">{{configuration.customization?.moduleCustomization?.legends?.download}}</div>\r\n </div>\r\n <div>\r\n {{ document.doc?.pages }} {{configuration.customization?.moduleCustomization?.legends?.pages}}\r\n </div>\r\n </div>\r\n \r\n <ng-fad-signature-fea-pdf-viewer-fea\r\n *ngIf=\"document.isVisible && document.doc?.file\"\r\n [file]=\"document.doc?.file\"\r\n [index]=\"i\"\r\n [id]=\"getDocumentId(document.id!)\"\r\n >\r\n </ng-fad-signature-fea-pdf-viewer-fea>\r\n \r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n \r\n </div>\r\n \r\n </div>\r\n </ng-container>\r\n <div class=\"fad-portal-content selector-document\">\r\n <div class=\"document-status-bar\">\r\n \r\n <div *ngIf=\"getApprovedCount() === 0 && getRejectedCount() === 0\" class=\"document-status-message \">\r\n Aprueba los documentos para firmarlos con tu e.firma\r\n </div>\r\n \r\n \r\n <div *ngIf=\"getApprovedCount() > 0 || getRejectedCount() > 0\" class=\"document-status-content\">\r\n <div class=\"approve-all\">\r\n <ng-fad-image-inline\r\n [src]=\"approveAll ? images.active.approve : images.inactive.approve\"\r\n (click)=\"approveAllDocuments()\">\r\n </ng-fad-image-inline>\r\n <span (click)=\"approveAllDocuments()\">Aprobar todos los documentos ({{ documentsApprovalList.length }})</span>\r\n </div>\r\n \r\n \r\n <div class=\"document-counts\">\r\n <span *ngIf=\"getApprovedCount() > 0 && getRejectedCount() === 0\" class=\"fad-portal-informative-bold\">\r\n {{ getApprovedCount() }} documentos aprobados\r\n </span>\r\n <span *ngIf=\"getRejectedCount() > 0 && getApprovedCount() === 0\" class=\"fad-portal-informative-bold\">\r\n {{ getRejectedCount() }} documentos rechazados\r\n </span>\r\n \r\n <ng-container *ngIf=\"getApprovedCount() > 0 && getRejectedCount() > 0\" >\r\n <span class=\"fad-portal-informative-bold\">\r\n {{ getApprovedCount() }} documentos aprobados\r\n </span>\r\n <span class=\"fad-portal-informative-bold\">\r\n {{ getRejectedCount() }} documentos rechazados\r\n </span>\r\n </ng-container>\r\n </div>\r\n \r\n \r\n <button class=\"fad-portal-primary\" (click)=\"emitApprovedDocuments()\">Continuar</button>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </ng-container>\r\n ", styles: [":host{box-sizing:border-box}:host .fad-portal-content{display:flex;flex-direction:column;justify-content:center;width:100%;box-sizing:border-box;margin-top:var(--fad-portal-common-separation-lg)}:host .fad-portal-content .header{display:flex;align-items:center;justify-content:space-between;width:100%;background-color:#f5f5f5;border-radius:var(--fad-portal-common-input-border-radius);padding:var(--fad-portal-common-separation-md);overflow:hidden;box-sizing:border-box}:host .fad-portal-content .header div:nth-child(1){display:flex;flex-direction:column;row-gap:var(--fad-portal-common-separation-xs)}:host .fad-portal-content .header .info{color:var(--fad-portal-common-tertiary-color)}@media (max-width: 992px){:host .fad-portal-content .header{flex-direction:column;align-items:start;justify-content:center;row-gap:var(--fad-portal-common-separation-xs);margin-bottom:var(--fad-portal-common-separation-md)}}:host .fad-portal-content .documents-container{box-sizing:border-box}:host .fad-portal-content .documents-container .document{display:flex;align-items:center;flex-direction:column;width:100%;margin-top:var(--fad-portal-common-separation-md);border-radius:var(--fad-portal-common-input-border-radius);border:1px solid #f5f5f5}:host .fad-portal-content .documents-container .document .information{padding:var(--fad-portal-common-separation-md);display:flex;align-items:center;justify-content:space-between;width:100%}:host .fad-portal-content .documents-container .document .information .validate{padding-left:var(--fad-portal-common-separation-md);padding-right:var(--fad-portal-common-separation-md);display:flex;column-gap:var(--fad-portal-common-separation-md)}:host .fad-portal-content .documents-container .document .information .document-name{padding-left:var(--fad-portal-common-separation-md);padding-right:var(--fad-portal-common-separation-md)}:host .fad-portal-content .documents-container .document .actions{display:flex;align-items:center;justify-content:space-between;width:100%;background-color:#f5f5f5;padding:var(--fad-portal-common-separation-md);box-sizing:border-box;border-radius:var(--fad-portal-common-input-border-radius);border-top-left-radius:0;border-top-right-radius:0}:host .fad-portal-content .documents-container .document .actions div:nth-child(1){display:flex;align-items:center;gap:var(--fad-portal-common-separation-md)}:host .fad-portal-content .documents-container .document .actions div:nth-child(1) div{color:var(--fad-portal-common-primary-color)!important;cursor:pointer}:host .selector-document{width:100%;background-color:var(--fad-portal-common-tertiary-color);color:#fff;padding:var(--fad-portal-common-separation-md);margin-top:var(--fad-portal-common-separation-md);display:flex;align-items:center;justify-content:space-between;border-radius:var(--fad-portal-common-input-border-radius);box-sizing:border-box}:host .selector-document .document-status-message{display:flex;align-items:center;justify-content:center;width:100%;gap:var(--fad-portal-common-separation-md)}:host .selector-document .document-status-bar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;width:100%;font-size:14px;box-sizing:border-box}:host .selector-document .document-status-bar .document-status-content{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;width:100%;font-size:14px;box-sizing:border-box}:host .selector-document .document-status-bar .approve-all{display:flex;align-items:center;gap:10px;cursor:pointer;box-sizing:border-box}:host .selector-document .document-status-bar .approve-all span{cursor:pointer;-webkit-user-select:none;user-select:none}:host .selector-document .document-status-bar .document-counts{display:flex;flex-direction:column;gap:var(--fad-portal-common-separation-xs);box-sizing:border-box}:host .selector-document .document-status-bar .document-counts span{color:#fff}:host .selector-document .document-status-bar .fad-portal-primary{min-width:0px;width:50%}@media (max-width: 992px){:host .selector-document .document-status-bar .fad-portal-primary{width:100%;margin-top:var(--fad-portal-common-separation-md)}}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.NgFadImageInlineComponent, selector: "ng-fad-image-inline", inputs: ["src"] }, { kind: "component", type: i5.PdfViewerFeaComponent, selector: "ng-fad-signature-fea-pdf-viewer-fea", inputs: ["configuration", "file", "index", "id"] }] }); }
|
|
176
176
|
}
|
|
177
177
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DocumentApprovalListComponent, decorators: [{
|
|
178
178
|
type: Component,
|
|
179
|
-
args: [{ selector: 'ng-fad-signature-fea-document-approval-list', providers: [NgFadPdfReaderService], template: "\n <ng-container *ngFor=\"let requisition of requisitionsFea\">\n <div class=\"fad-portal-content\" >\n <div class=\"header\" >\n <div>\n <div class=\"fad-portal-title\">\n {{ requisition.name }} ({{requisition.documents.length}})\n </div>\n <div class=\"info\">\n {{configuration.customization?.moduleCustomization?.legends?.sendTo}} Alfredo Villanueva {{ requisition.sendBy }}\n </div>\n <div class=\"info\">\n {{ requisition.sendByEmail }}\n </div>\n </div>\n <div class=\"requisition-id\">\n <div class=\"fad-portal-content-bold\">ID {{ requisition.requisitionId }}</div>\n </div>\n </div>\n <div class=\"documents-container\">\n <ng-container *ngFor=\"let document of documentsApprovalList; let i = index\">\n <ng-container *ngIf=\"document.idRequisition === requisition.requisitionId\" >\n <div class=\"document\" >\n <div class=\"information\" >\n <div class=\"document-name fad-portal-content-bold\" >\n {{ document.doc?.name }}\n </div>\n <div class=\"validate\">\n \n <ng-fad-image-inline \n [src]=\"document.approved === false ? images.active.reject : images.inactive.reject\"\n (click)=\"toggleRejection(document)\">\n </ng-fad-image-inline>\n \n \n <ng-fad-image-inline \n [src]=\"document.approved === true ? images.active.approve : images.inactive.approve\"\n (click)=\"toggleApproval(document)\">\n </ng-fad-image-inline>\n </div>\n \n </div>\n <div class=\"actions\">\n <div>\n <div class=\"fad-portal-content-bold\" (click)=\"seeDocumentFea(document)\">\n {{ document.isVisible ? 'Ocultar documento' : 'Ver documento' }}\n </div>\n <div class=\"fad-portal-content-bold\" (click)=\"downloadDocumentFea(document)\">{{configuration.customization?.moduleCustomization?.legends?.download}}</div>\n </div>\n <div>\n {{ document.doc?.pages }} {{configuration.customization?.moduleCustomization?.legends?.pages}}\n </div>\n </div>\n \n <ng-fad-signature-fea-pdf-viewer-fea\n *ngIf=\"document.isVisible && document.doc?.file\"\n [file]=\"document.doc?.file\"\n [index]=\"i\"\n [id]=\"getDocumentId(document.id!)\"\n >\n </ng-fad-signature-fea-pdf-viewer-fea>\n \n </div>\n </ng-container>\n </ng-container>\n \n </div>\n \n </div>\n </ng-container>\n <div class=\"fad-portal-content selector-document\">\n <div class=\"document-status-bar\">\n \n <div *ngIf=\"getApprovedCount() === 0 && getRejectedCount() === 0\" class=\"document-status-message \">\n Aprueba los documentos para firmarlos con tu e.firma\n </div>\n \n \n <div *ngIf=\"getApprovedCount() > 0 || getRejectedCount() > 0\" class=\"document-status-content\">\n <div class=\"approve-all\">\n <ng-fad-image-inline \n [src]=\"approveAll ? images.active.approve : images.inactive.approve\"\n (click)=\"approveAllDocuments()\">\n </ng-fad-image-inline>\n <span (click)=\"approveAllDocuments()\">Aprobar todos los documentos ({{ documentsApprovalList.length }})</span>\n </div>\n \n \n <div class=\"document-counts\">\n <span *ngIf=\"getApprovedCount() > 0 && getRejectedCount() === 0\" class=\"fad-portal-informative-bold\">\n {{ getApprovedCount() }} documentos aprobados\n </span>\n <span *ngIf=\"getRejectedCount() > 0 && getApprovedCount() === 0\" class=\"fad-portal-informative-bold\">\n {{ getRejectedCount() }} documentos rechazados\n </span>\n \n <ng-container *ngIf=\"getApprovedCount() > 0 && getRejectedCount() > 0\" >\n <span class=\"fad-portal-informative-bold\">\n {{ getApprovedCount() }} documentos aprobados\n </span>\n <span class=\"fad-portal-informative-bold\">\n {{ getRejectedCount() }} documentos rechazados\n </span>\n </ng-container>\n </div>\n \n \n <button class=\"fad-portal-primary\" (click)=\"emitApprovedDocuments()\">Continuar</button>\n </div>\n </div>\n </div>\n \n\n", styles: [":host{box-sizing:border-box}:host .fad-portal-content{display:flex;flex-direction:column;justify-content:center;width:100%;box-sizing:border-box;margin-top:var(--fad-portal-common-separation-lg)}:host .fad-portal-content .header{display:flex;align-items:center;justify-content:space-between;width:100%;background-color:#f5f5f5;border-radius:var(--fad-portal-common-input-border-radius);padding:var(--fad-portal-common-separation-md);overflow:hidden;box-sizing:border-box}:host .fad-portal-content .header div:nth-child(1){display:flex;flex-direction:column;row-gap:var(--fad-portal-common-separation-xs)}:host .fad-portal-content .header .info{color:var(--fad-portal-common-tertiary-color)}@media (max-width: 992px){:host .fad-portal-content .header{flex-direction:column;align-items:start;justify-content:center;row-gap:var(--fad-portal-common-separation-xs);margin-bottom:var(--fad-portal-common-separation-md)}}:host .fad-portal-content .documents-container{box-sizing:border-box}:host .fad-portal-content .documents-container .document{display:flex;align-items:center;flex-direction:column;width:100%;margin-top:var(--fad-portal-common-separation-md);border-radius:var(--fad-portal-common-input-border-radius);border:1px solid #f5f5f5}:host .fad-portal-content .documents-container .document .information{padding:var(--fad-portal-common-separation-md);display:flex;align-items:center;justify-content:space-between;width:100%}:host .fad-portal-content .documents-container .document .information .validate{padding-left:var(--fad-portal-common-separation-md);padding-right:var(--fad-portal-common-separation-md);display:flex;column-gap:var(--fad-portal-common-separation-md)}:host .fad-portal-content .documents-container .document .information .document-name{padding-left:var(--fad-portal-common-separation-md);padding-right:var(--fad-portal-common-separation-md)}:host .fad-portal-content .documents-container .document .actions{display:flex;align-items:center;justify-content:space-between;width:100%;background-color:#f5f5f5;padding:var(--fad-portal-common-separation-md);box-sizing:border-box;border-radius:var(--fad-portal-common-input-border-radius);border-top-left-radius:0;border-top-right-radius:0}:host .fad-portal-content .documents-container .document .actions div:nth-child(1){display:flex;align-items:center;gap:var(--fad-portal-common-separation-md)}:host .fad-portal-content .documents-container .document .actions div:nth-child(1) div{color:var(--fad-portal-common-primary-color)!important;cursor:pointer}:host .selector-document{width:100%;background-color:var(--fad-portal-common-tertiary-color);color:#fff;padding:var(--fad-portal-common-separation-md);margin-top:var(--fad-portal-common-separation-md);display:flex;align-items:center;justify-content:space-between;border-radius:var(--fad-portal-common-input-border-radius);box-sizing:border-box}:host .selector-document .document-status-message{display:flex;align-items:center;justify-content:center;width:100%;gap:var(--fad-portal-common-separation-md)}:host .selector-document .document-status-bar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;width:100%;font-size:14px;box-sizing:border-box}:host .selector-document .document-status-bar .document-status-content{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;width:100%;font-size:14px;box-sizing:border-box}:host .selector-document .document-status-bar .approve-all{display:flex;align-items:center;gap:10px;cursor:pointer;box-sizing:border-box}:host .selector-document .document-status-bar .approve-all span{cursor:pointer;-webkit-user-select:none;user-select:none}:host .selector-document .document-status-bar .document-counts{display:flex;flex-direction:column;gap:var(--fad-portal-common-separation-xs);box-sizing:border-box}:host .selector-document .document-status-bar .document-counts span{color:#fff}:host .selector-document .document-status-bar .fad-portal-primary{min-width:0px;width:50%}@media (max-width: 992px){:host .selector-document .document-status-bar .fad-portal-primary{width:100%;margin-top:var(--fad-portal-common-separation-md)}}\n"] }]
|
|
179
|
+
args: [{ selector: 'ng-fad-signature-fea-document-approval-list', providers: [NgFadPdfReaderService], template: "<ng-container *ngIf=\"requisitionsFea && requisitionsFea.length > 0\">\r\n <ng-container *ngFor=\"let requisition of requisitionsFea\">\r\n <div class=\"fad-portal-content\" >\r\n <div class=\"header\" >\r\n <div>\r\n <div class=\"fad-portal-title\">\r\n {{ requisition.name }} ({{requisition.documents.length}})\r\n </div>\r\n <div class=\"info\">\r\n {{configuration.customization?.moduleCustomization?.legends?.sendTo}} Alfredo Villanueva {{ requisition.sendBy }}\r\n </div>\r\n <div class=\"info\">\r\n {{ requisition.sendByEmail }}\r\n </div>\r\n </div>\r\n <div class=\"requisition-id\">\r\n <div class=\"fad-portal-content-bold\">ID {{ requisition.requisitionId }}</div>\r\n </div>\r\n </div>\r\n <div class=\"documents-container\">\r\n <ng-container *ngFor=\"let document of documentsApprovalList; let i = index\">\r\n <ng-container *ngIf=\"document.idRequisition === requisition.requisitionId\" >\r\n <div class=\"document\" >\r\n <div class=\"information\" >\r\n <div class=\"document-name fad-portal-content-bold\" >\r\n {{ document.doc?.name }}\r\n </div>\r\n <div class=\"validate\">\r\n \r\n <ng-fad-image-inline\r\n [src]=\"document.approved === false ? images.active.reject : images.inactive.reject\"\r\n (click)=\"toggleRejection(document)\">\r\n </ng-fad-image-inline>\r\n \r\n \r\n <ng-fad-image-inline\r\n [src]=\"document.approved === true ? images.active.approve : images.inactive.approve\"\r\n (click)=\"toggleApproval(document)\">\r\n </ng-fad-image-inline>\r\n </div>\r\n \r\n </div>\r\n <div class=\"actions\">\r\n <div>\r\n <div class=\"fad-portal-content-bold\" (click)=\"seeDocumentFea(document)\">\r\n {{ document.isVisible ? 'Ocultar documento' : 'Ver documento' }}\r\n </div>\r\n <div class=\"fad-portal-content-bold\" (click)=\"downloadDocumentFea(document)\">{{configuration.customization?.moduleCustomization?.legends?.download}}</div>\r\n </div>\r\n <div>\r\n {{ document.doc?.pages }} {{configuration.customization?.moduleCustomization?.legends?.pages}}\r\n </div>\r\n </div>\r\n \r\n <ng-fad-signature-fea-pdf-viewer-fea\r\n *ngIf=\"document.isVisible && document.doc?.file\"\r\n [file]=\"document.doc?.file\"\r\n [index]=\"i\"\r\n [id]=\"getDocumentId(document.id!)\"\r\n >\r\n </ng-fad-signature-fea-pdf-viewer-fea>\r\n \r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n \r\n </div>\r\n \r\n </div>\r\n </ng-container>\r\n <div class=\"fad-portal-content selector-document\">\r\n <div class=\"document-status-bar\">\r\n \r\n <div *ngIf=\"getApprovedCount() === 0 && getRejectedCount() === 0\" class=\"document-status-message \">\r\n Aprueba los documentos para firmarlos con tu e.firma\r\n </div>\r\n \r\n \r\n <div *ngIf=\"getApprovedCount() > 0 || getRejectedCount() > 0\" class=\"document-status-content\">\r\n <div class=\"approve-all\">\r\n <ng-fad-image-inline\r\n [src]=\"approveAll ? images.active.approve : images.inactive.approve\"\r\n (click)=\"approveAllDocuments()\">\r\n </ng-fad-image-inline>\r\n <span (click)=\"approveAllDocuments()\">Aprobar todos los documentos ({{ documentsApprovalList.length }})</span>\r\n </div>\r\n \r\n \r\n <div class=\"document-counts\">\r\n <span *ngIf=\"getApprovedCount() > 0 && getRejectedCount() === 0\" class=\"fad-portal-informative-bold\">\r\n {{ getApprovedCount() }} documentos aprobados\r\n </span>\r\n <span *ngIf=\"getRejectedCount() > 0 && getApprovedCount() === 0\" class=\"fad-portal-informative-bold\">\r\n {{ getRejectedCount() }} documentos rechazados\r\n </span>\r\n \r\n <ng-container *ngIf=\"getApprovedCount() > 0 && getRejectedCount() > 0\" >\r\n <span class=\"fad-portal-informative-bold\">\r\n {{ getApprovedCount() }} documentos aprobados\r\n </span>\r\n <span class=\"fad-portal-informative-bold\">\r\n {{ getRejectedCount() }} documentos rechazados\r\n </span>\r\n </ng-container>\r\n </div>\r\n \r\n \r\n <button class=\"fad-portal-primary\" (click)=\"emitApprovedDocuments()\">Continuar</button>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </ng-container>\r\n ", styles: [":host{box-sizing:border-box}:host .fad-portal-content{display:flex;flex-direction:column;justify-content:center;width:100%;box-sizing:border-box;margin-top:var(--fad-portal-common-separation-lg)}:host .fad-portal-content .header{display:flex;align-items:center;justify-content:space-between;width:100%;background-color:#f5f5f5;border-radius:var(--fad-portal-common-input-border-radius);padding:var(--fad-portal-common-separation-md);overflow:hidden;box-sizing:border-box}:host .fad-portal-content .header div:nth-child(1){display:flex;flex-direction:column;row-gap:var(--fad-portal-common-separation-xs)}:host .fad-portal-content .header .info{color:var(--fad-portal-common-tertiary-color)}@media (max-width: 992px){:host .fad-portal-content .header{flex-direction:column;align-items:start;justify-content:center;row-gap:var(--fad-portal-common-separation-xs);margin-bottom:var(--fad-portal-common-separation-md)}}:host .fad-portal-content .documents-container{box-sizing:border-box}:host .fad-portal-content .documents-container .document{display:flex;align-items:center;flex-direction:column;width:100%;margin-top:var(--fad-portal-common-separation-md);border-radius:var(--fad-portal-common-input-border-radius);border:1px solid #f5f5f5}:host .fad-portal-content .documents-container .document .information{padding:var(--fad-portal-common-separation-md);display:flex;align-items:center;justify-content:space-between;width:100%}:host .fad-portal-content .documents-container .document .information .validate{padding-left:var(--fad-portal-common-separation-md);padding-right:var(--fad-portal-common-separation-md);display:flex;column-gap:var(--fad-portal-common-separation-md)}:host .fad-portal-content .documents-container .document .information .document-name{padding-left:var(--fad-portal-common-separation-md);padding-right:var(--fad-portal-common-separation-md)}:host .fad-portal-content .documents-container .document .actions{display:flex;align-items:center;justify-content:space-between;width:100%;background-color:#f5f5f5;padding:var(--fad-portal-common-separation-md);box-sizing:border-box;border-radius:var(--fad-portal-common-input-border-radius);border-top-left-radius:0;border-top-right-radius:0}:host .fad-portal-content .documents-container .document .actions div:nth-child(1){display:flex;align-items:center;gap:var(--fad-portal-common-separation-md)}:host .fad-portal-content .documents-container .document .actions div:nth-child(1) div{color:var(--fad-portal-common-primary-color)!important;cursor:pointer}:host .selector-document{width:100%;background-color:var(--fad-portal-common-tertiary-color);color:#fff;padding:var(--fad-portal-common-separation-md);margin-top:var(--fad-portal-common-separation-md);display:flex;align-items:center;justify-content:space-between;border-radius:var(--fad-portal-common-input-border-radius);box-sizing:border-box}:host .selector-document .document-status-message{display:flex;align-items:center;justify-content:center;width:100%;gap:var(--fad-portal-common-separation-md)}:host .selector-document .document-status-bar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;width:100%;font-size:14px;box-sizing:border-box}:host .selector-document .document-status-bar .document-status-content{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;width:100%;font-size:14px;box-sizing:border-box}:host .selector-document .document-status-bar .approve-all{display:flex;align-items:center;gap:10px;cursor:pointer;box-sizing:border-box}:host .selector-document .document-status-bar .approve-all span{cursor:pointer;-webkit-user-select:none;user-select:none}:host .selector-document .document-status-bar .document-counts{display:flex;flex-direction:column;gap:var(--fad-portal-common-separation-xs);box-sizing:border-box}:host .selector-document .document-status-bar .document-counts span{color:#fff}:host .selector-document .document-status-bar .fad-portal-primary{min-width:0px;width:50%}@media (max-width: 992px){:host .selector-document .document-status-bar .fad-portal-primary{width:100%;margin-top:var(--fad-portal-common-separation-md)}}\n"] }]
|
|
180
180
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.FadService }, { type: i0.ChangeDetectorRef }, { type: i2.NgFadPdfReaderService }]; }, propDecorators: { configuration: [{
|
|
181
181
|
type: Input
|
|
182
182
|
}], rfc: [{
|
|
@@ -188,4 +188,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
188
188
|
}], onerror: [{
|
|
189
189
|
type: Output
|
|
190
190
|
}] } });
|
|
191
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtYXBwcm92YWwtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mYWQtcHJvZHVjdG8tcG9ydGFsL25nLWZhZC1zaWduYXR1cmUtZmVhL3NyYy9saWIvY29tcG9uZW50cy9kb2N1bWVudC1hcHByb3ZhbC1saXN0L2RvY3VtZW50LWFwcHJvdmFsLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFkLXByb2R1Y3RvLXBvcnRhbC9uZy1mYWQtc2lnbmF0dXJlLWZlYS9zcmMvbGliL2NvbXBvbmVudHMvZG9jdW1lbnQtYXBwcm92YWwtbGlzdC9kb2N1bWVudC1hcHByb3ZhbC1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFFNUUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLHVDQUF1QyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJMUcsT0FBTyxFQUFFLFFBQVEsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLHFCQUFxQixFQUFtQixNQUFNLGlDQUFpQyxDQUFDO0FBRXpGLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDaEYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7QUFRaEUsTUFBTSxPQUFPLDZCQUE2QjtJQXlCeEMsWUFBcUIsV0FBdUIsRUFBVSxHQUFlLEVBQVMsR0FBc0IsRUFBUyxVQUFpQztRQUF6SCxn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O2dCQUNHLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJ0BmYWQtcHJvZHVjdG8tcG9ydGFsL2ZhZC1jb21tb24vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbiB9IGZyb20gJ0BmYWQtcHJvZHVjdG8tcG9ydGFsL2ZhZC1jb21tb24vbW9kZWxzL2NvcmUnO1xuaW1wb3J0IHsgRG9jdW1lbnRBcHByb3ZhbEZlYSwgSURvY3VtZW50QXBwcm92YWxMaXN0Q29uZmlndXJhdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBET0NVTUVOVF9BUFBST1ZBTF9MSVNUX0RFRkFVTFQsIGdldERvY3VtZW50QXBwcm92YWxMaXN0RXJyb3JEZXNjcmlwdGlvbiB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBGYWRTZXJ2aWNlLCBSZXF1aXNpdGlvbnNGZWEsIFJlc3BvbnNlRGF0YSwgIFJlcXVpc2l0aW9uRmVhRGF0YSwgRG9jdW1lbnRGZWEgfSBmcm9tICdAZmFkLXByb2R1Y3RvLXBvcnRhbC9uZy1mYWQtc2VydmljZXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgR2VuZXJhbFBkZlZpZXdlckNvbXBvbmVudCBhcyBHZW5lcmFsUGRmVmlld2VyQ29tcG9uZW50TW9kdWxlLCBJUGRmTWluaVZpZXdDb25maWd1cmF0aW9uIH0gZnJvbSAnQGZhZC1wcm9kdWN0by1wb3J0YWwvbmctZmFkLXZpZXdlcidcbmltcG9ydCB7IGZpbmFsaXplLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE5nRmFkUGRmUmVhZGVyU2VydmljZSwgUmVzcG9uc2VTdWNjZXNzIH0gZnJvbSAnQGZhZC1wcm9kdWN0by9uZy1mYWQtcGRmLXJlYWRlcic7XG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IFJlc3BvbnNlRXJyb3IsIFNoYXJlZFV0aWxzIH0gZnJvbSAnQGZhZC1wcm9kdWN0by1wb3J0YWwvbmctZmFkLXNoYXJlZCc7XG5pbXBvcnQgeyBEb2N1bWVudEFwcHJvdmFsTGlzdEVycm9yQ29kZSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nLWZhZC1zaWduYXR1cmUtZmVhLWRvY3VtZW50LWFwcHJvdmFsLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vZG9jdW1lbnQtYXBwcm92YWwtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RvY3VtZW50LWFwcHJvdmFsLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbTmdGYWRQZGZSZWFkZXJTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBEb2N1bWVudEFwcHJvdmFsTGlzdENvbXBvbmVudCB7XG4gIFxuICBASW5wdXQoKSBjb25maWd1cmF0aW9uITogSURvY3VtZW50QXBwcm92YWxMaXN0Q29uZmlndXJhdGlvbjtcbiAgQElucHV0KCkgcmZjITogc3RyaW5nO1xuICBAT3V0cHV0KCkgb25sb2FkZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBvbmV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxEb2N1bWVudEFwcHJvdmFsRmVhW10+KCk7XG4gIEBPdXRwdXQoKSBvbmVycm9yOiBFdmVudEVtaXR0ZXI8UmVzcG9uc2VFcnJvcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHBhZ2VzTWFwOiBNYXA8c3RyaW5nLCBSZXNwb25zZVN1Y2Nlc3NbXT4gPSBuZXcgTWFwKCk7XG4gIHJlcXVpc2l0aW9uc0ZlYTogUmVxdWlzaXRpb25GZWFEYXRhW10gPSBbXTtcbiAgZG9jdW1lbnRzQXBwcm92YWxMaXN0OiBEb2N1bWVudEFwcHJvdmFsRmVhW10gPSBbXTtcbiAgYXBwcm92ZUFsbDogYm9vbGVhbiA9IGZhbHNlO1xuICBcbiAgaW1hZ2VzID0ge1xuICAgIGluYWN0aXZlOntcbiAgICAgIHJlamVjdDogJycsXG4gICAgICBhcHByb3ZlOiAnJ1xuICAgIH0sXG4gICAgYWN0aXZlOntcbiAgICAgIHJlamVjdDogJycsXG4gICAgICBhcHByb3ZlOiAnJyBcbiAgICB9XG4gIH1cblxuICBcblxuICBjb25zdHJ1Y3RvciggcHJpdmF0ZSBob3N0Q29udGV4dDogRWxlbWVudFJlZiwgcHJpdmF0ZSBmYWQ6IEZhZFNlcnZpY2UscHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLHByaXZhdGUgcGRmU2VydmljZTogTmdGYWRQZGZSZWFkZXJTZXJ2aWNlICkge31cbiAgXG4gIFxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zb2xlLmxvZyh0aGlzLmNvbmZpZ3VyYXRpb24sdGhpcy5yZmMpXG4gICAgdGhpcy5zZXRDdXN0b21pemF0aW9uU3R5bGUodGhpcy5ob3N0Q29udGV4dC5uYXRpdmVFbGVtZW50KTtcbiAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uPy5wYXRoRGVwZW5kZW5jaWVzPy5pbWFnZURpcmVjdG9yeSkge1xuICAgICAgdGhpcy5pbWFnZXMuaW5hY3RpdmUucmVqZWN0ID0gdGhpcy5jb25maWd1cmF0aW9uLnBhdGhEZXBlbmRlbmNpZXM/LmltYWdlcz8uaW5hY3RpdmVSZWplY3QgPz8gYCR7dGhpcy5jb25maWd1cmF0aW9uLnBhdGhEZXBlbmRlbmNpZXMuaW1hZ2VEaXJlY3Rvcnl9L2luYWN0aXZlUmVqZWN0LnBuZ2A7XG4gICAgICB0aGlzLmltYWdlcy5pbmFjdGl2ZS5hcHByb3ZlID0gdGhpcy5jb25maWd1cmF0aW9uLnBhdGhEZXBlbmRlbmNpZXM/LmltYWdlcz8uaW5hY3RpdmVBcHByb3ZlID8/IGAke3RoaXMuY29uZmlndXJhdGlvbi5wYXRoRGVwZW5kZW5jaWVzLmltYWdlRGlyZWN0b3J5fS9pbmFjdGl2ZUFwcHJvdmUucG5nYDtcbiAgICAgIHRoaXMuaW1hZ2VzLmFjdGl2ZS5yZWplY3QgPSB0aGlzLmNvbmZpZ3VyYXRpb24ucGF0aERlcGVuZGVuY2llcz8uaW1hZ2VzPy5hY3RpdmVSZWplY3QgPz8gYCR7dGhpcy5jb25maWd1cmF0aW9uLnBhdGhEZXBlbmRlbmNpZXMuaW1hZ2VEaXJlY3Rvcnl9L2FjdGl2ZVJlamVjdC5wbmdgO1xuICAgICAgdGhpcy5pbWFnZXMuYWN0aXZlLmFwcHJvdmUgPSB0aGlzLmNvbmZpZ3VyYXRpb24ucGF0aERlcGVuZGVuY2llcz8uaW1hZ2VzPy5hY3RpdmVBcHByb3ZlID8/IGAke3RoaXMuY29uZmlndXJhdGlvbi5wYXRoRGVwZW5kZW5jaWVzLmltYWdlRGlyZWN0b3J5fS9hY3RpdmVBcHByb3ZlLnBuZ2A7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgXG4gICAgdGhpcy5nZXRSZXF1aXNpdGlvbnNSZmMoKTtcbiAgfVxuXG4gIGdldFJlcXVpc2l0aW9uc1JmYygpIHtcbiAgICB0aGlzLm9ubG9hZGVyLmVtaXQodHJ1ZSk7IFxuICAgIFxuICAgIHRoaXMuZmFkLmdldFJlcXVpc2l0aW9uc1JmYyh0aGlzLnJmYylcbiAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHRoaXMub25sb2FkZXIuZW1pdChmYWxzZSkpKSBcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgICAgaWYgKHJlcy5zdWNjZXNzKSB7IFxuICAgICAgICAgICAgdGhpcy5yZXF1aXNpdGlvbnNGZWEgPSByZXMuZGF0YS5yZXF1aXNpdGlvbnM7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50c0FwcHJvdmFsTGlzdCA9IHRoaXMucmVxdWlzaXRpb25zRmVhLmZsYXRNYXAocmVxdWlzaXRpb24gPT4gXG4gICAgICAgICAgICAgIHJlcXVpc2l0aW9uLmRvY3VtZW50cy5tYXAoZG9jID0+ICh7XG4gICAgICAgICAgICAgICAgZG9jOiBkb2MsXG4gICAgICAgICAgICAgICAgaWQ6IGRvYy5kb2N1bWVudElkLFxuICAgICAgICAgICAgICAgIGlkUmVxdWlzaXRpb246IHJlcXVpc2l0aW9uLnJlcXVpc2l0aW9uSWQsXG4gICAgICAgICAgICAgICAgYXBwcm92ZWQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBpc1Zpc2libGU6IGZhbHNlXG4gICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmRvY3VtZW50c0FwcHJvdmFsTGlzdC5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgIHRoaXMubG9hZFNpbmdsZURvY3VtZW50KHRoaXMuZG9jdW1lbnRzQXBwcm92YWxMaXN0WzBdKTtcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihcbiAgICAgICAgICAgICAgRG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckNvZGUuU0VSVklDRSxcbiAgICAgICAgICAgICAgZ2V0RG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckRlc2NyaXB0aW9uKERvY3VtZW50QXBwcm92YWxMaXN0RXJyb3JDb2RlLlNFUlZJQ0UpLFxuICAgICAgICAgICAgICAnbmctZmFkLXBvcnRhbC1zaWduYXR1cmUtZmVhLWRvY3VtZW50LWFwcHJvdmFsLWxpc3QnXG4gICAgICAgICAgICApKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdGhpcy5vbmVycm9yLmVtaXQobmV3IFJlc3BvbnNlRXJyb3IoXG4gICAgICAgICAgICBEb2N1bWVudEFwcHJvdmFsTGlzdEVycm9yQ29kZS5IVFRQLFxuICAgICAgICAgICAgZ2V0RG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckRlc2NyaXB0aW9uKERvY3VtZW50QXBwcm92YWxMaXN0RXJyb3JDb2RlLkhUVFApLFxuICAgICAgICAgICAgJ25nLWZhZC1wb3J0YWwtc2lnbmF0dXJlLWZlYS1kb2N1bWVudC1hcHByb3ZhbC1saXN0J1xuICAgICAgICAgICkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIGxvYWRTaW5nbGVEb2N1bWVudChzaW5nbGVEb2N1bWVudDogRG9jdW1lbnRBcHByb3ZhbEZlYSl7XG4gICAgc2luZ2xlRG9jdW1lbnQuaXNWaXNpYmxlID0gdHJ1ZTtcblxuICAgIHRoaXMuZmFkLmdldERvY3VtZW50RmVhKHNpbmdsZURvY3VtZW50LmlkISwgeyBsb2FkZXI6IHRydWUsIGVycm9yOiB0cnVlIH0pXG4gICAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHRoaXMub25sb2FkZXIuZW1pdChmYWxzZSkpKVxuICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBpZiAoc2luZ2xlRG9jdW1lbnQuZG9jKSB7XG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZURvY3VtZW50LmRvYy5maWxlID0gXCJkYXRhOmFwcGxpY2F0aW9uL3BkZjtiYXNlNjQsXCIgKyByZXMuZGF0YS5maWxlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7IFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihcbiAgICAgICAgICAgICAgICBEb2N1bWVudEFwcHJvdmFsTGlzdEVycm9yQ29kZS5FUlJPUl9QREYsXG4gICAgICAgICAgICAgICAgZ2V0RG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckRlc2NyaXB0aW9uKERvY3VtZW50QXBwcm92YWxMaXN0RXJyb3JDb2RlLkVSUk9SX1BERiksXG4gICAgICAgICAgICAgICAgJ25nLWZhZC1wb3J0YWwtc2lnbmF0dXJlLWZlYS1kb2N1bWVudC1hcHByb3ZhbC1saXN0J1xuICAgICAgICAgICAgICApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gIH1cblxuICB0b2dnbGVBcHByb3ZhbChkb2N1bWVudDogRG9jdW1lbnRBcHByb3ZhbEZlYSkge1xuICAgIGRvY3VtZW50LmFwcHJvdmVkID0gZG9jdW1lbnQuYXBwcm92ZWQgPT09IHRydWUgPyB1bmRlZmluZWQgOiB0cnVlO1xuICAgIHRoaXMudXBkYXRlQXBwcm92ZUFsbFN0YXRlKCk7XG4gIH1cbiAgXG4gIHRvZ2dsZVJlamVjdGlvbihkb2N1bWVudDogRG9jdW1lbnRBcHByb3ZhbEZlYSkge1xuICAgIGRvY3VtZW50LmFwcHJvdmVkID0gZG9jdW1lbnQuYXBwcm92ZWQgPT09IGZhbHNlID8gdW5kZWZpbmVkIDogZmFsc2U7XG4gICAgdGhpcy51cGRhdGVBcHByb3ZlQWxsU3RhdGUoKTtcbiAgfVxuXG4gIHVwZGF0ZUFwcHJvdmVBbGxTdGF0ZSgpIHtcbiAgICB0aGlzLmFwcHJvdmVBbGwgPSB0aGlzLmRvY3VtZW50c0FwcHJvdmFsTGlzdC5ldmVyeShkb2MgPT4gZG9jLmFwcHJvdmVkID09PSB0cnVlKTtcbiAgfVxuXG4gIGFwcHJvdmVBbGxEb2N1bWVudHMoKSB7XG4gICAgdGhpcy5hcHByb3ZlQWxsID0gIXRoaXMuYXBwcm92ZUFsbDtcbiAgICB0aGlzLmRvY3VtZW50c0FwcHJvdmFsTGlzdC5mb3JFYWNoKGRvYyA9PiBkb2MuYXBwcm92ZWQgPSB0aGlzLmFwcHJvdmVBbGwgPyB0cnVlIDogdW5kZWZpbmVkKTtcbiAgfVxuXG4gIGdldEFwcHJvdmVkQ291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5kb2N1bWVudHNBcHByb3ZhbExpc3QuZmlsdGVyKGRvYyA9PiBkb2MuYXBwcm92ZWQgPT09IHRydWUpLmxlbmd0aDtcbiAgfVxuXG4gIGdldFJlamVjdGVkQ291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5kb2N1bWVudHNBcHByb3ZhbExpc3QuZmlsdGVyKGRvYyA9PiBkb2MuYXBwcm92ZWQgPT09IGZhbHNlKS5sZW5ndGg7XG4gIH1cblxuICBlbWl0QXBwcm92ZWREb2N1bWVudHMoKSB7XG4gICAgY29uc3QgYXBwcm92ZWREb2N1bWVudHMgPSB0aGlzLmRvY3VtZW50c0FwcHJvdmFsTGlzdC5maWx0ZXIoZG9jID0+IGRvYy5hcHByb3ZlZCAhPT0gdW5kZWZpbmVkKTtcbiAgICBjb25zb2xlLmxvZyhhcHByb3ZlZERvY3VtZW50cyk7XG4gICAgdGhpcy5vbmV2ZW50LmVtaXQoYXBwcm92ZWREb2N1bWVudHMpO1xuICB9XG4gIFxuICBzZWVEb2N1bWVudEZlYShkb2N1bWVudDogRG9jdW1lbnRBcHByb3ZhbEZlYSkge1xuICAgIGRvY3VtZW50LmlzVmlzaWJsZSA9ICFkb2N1bWVudC5pc1Zpc2libGU7XG5cbiAgICBpZiAoZG9jdW1lbnQuaXNWaXNpYmxlICYmICFkb2N1bWVudC5kb2M/LmZpbGUpIHtcbiAgICAgICAgdGhpcy5vbmxvYWRlci5lbWl0KHRydWUpO1xuICAgICAgICB0aGlzLmZhZC5nZXREb2N1bWVudEZlYShkb2N1bWVudC5pZCEsIHsgbG9hZGVyOiB0cnVlLCBlcnJvcjogdHJ1ZSB9KVxuICAgICAgICAgICAgLnBpcGUoZmluYWxpemUoKCkgPT4gdGhpcy5vbmxvYWRlci5lbWl0KGZhbHNlKSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5kb2MpIHtcbiAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2MuZmlsZSA9IFwiZGF0YTphcHBsaWNhdGlvbi9wZGY7YmFzZTY0LFwiICsgcmVzLmRhdGEuZmlsZTsgXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb2N1bWVudEFwcHJvdmFsTGlzdEVycm9yQ29kZS5TRVJWSUNFLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldERvY3VtZW50QXBwcm92YWxMaXN0RXJyb3JEZXNjcmlwdGlvbihEb2N1bWVudEFwcHJvdmFsTGlzdEVycm9yQ29kZS5TRVJWSUNFKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmctZmFkLXBvcnRhbC1zaWduYXR1cmUtZmVhLWRvY3VtZW50LWFwcHJvdmFsLWxpc3QnXG4gICAgICAgICAgICAgICAgICAgICAgICApKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbmVycm9yLmVtaXQobmV3IFJlc3BvbnNlRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICBEb2N1bWVudEFwcHJvdmFsTGlzdEVycm9yQ29kZS5IVFRQLFxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0RG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckRlc2NyaXB0aW9uKERvY3VtZW50QXBwcm92YWxMaXN0RXJyb3JDb2RlLkhUVFApLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25nLWZhZC1wb3J0YWwtc2lnbmF0dXJlLWZlYS1kb2N1bWVudC1hcHByb3ZhbC1saXN0J1xuICAgICAgICAgICAgICAgICAgICApKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG59XG5cbiBkb3dubG9hZERvY3VtZW50RmVhKGRvY3VtZW50OiBEb2N1bWVudEFwcHJvdmFsRmVhKSB7XG4gICAgdGhpcy5vbmxvYWRlci5lbWl0KHRydWUpOyBcbiAgICB0aGlzLmZhZC5nZXREb2N1bWVudEZlYShkb2N1bWVudC5pZCEpXG4gICAgICAucGlwZShmaW5hbGl6ZSgoKSA9PiB0aGlzLm9ubG9hZGVyLmVtaXQoZmFsc2UpKSkgXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogIGFzeW5jIChyZXMpID0+IHtcbiAgICAgICAgICBpZiAocmVzLnN1Y2Nlc3MgJiYgcmVzLmRhdGEuZmlsZSkge1xuICAgICAgICAgICAgY29uc3QgYnl0ZUNoYXJhY3RlcnMgPSBhdG9iKHJlcy5kYXRhLmZpbGUpO1xuICAgICAgICAgICAgY29uc3QgYnl0ZU51bWJlcnMgPSBuZXcgQXJyYXkoYnl0ZUNoYXJhY3RlcnMubGVuZ3RoKS5maWxsKDApLm1hcCgoXywgaSkgPT4gYnl0ZUNoYXJhY3RlcnMuY2hhckNvZGVBdChpKSk7XG4gICAgICAgICAgICBjb25zdCBieXRlQXJyYXkgPSBuZXcgVWludDhBcnJheShieXRlTnVtYmVycyk7XG4gICAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2J5dGVBcnJheV0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3BkZicgfSk7XG4gICAgICAgICAgICBhd2FpdCBTaGFyZWRVdGlscy5kb3dubG9hZEZpbGUoYmxvYixkb2N1bWVudC5kb2M/Lm5hbWUhKS50aGVuKHJlcz0+e1xuXG4gICAgICAgICAgICB9KS5jYXRjaChlcnJvcj0+e1xuICAgICAgICAgICAgICB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihcbiAgICAgICAgICAgICAgICBEb2N1bWVudEFwcHJvdmFsTGlzdEVycm9yQ29kZS5FUlJPUl9QREYsXG4gICAgICAgICAgICAgICAgZ2V0RG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckRlc2NyaXB0aW9uKERvY3VtZW50QXBwcm92YWxMaXN0RXJyb3JDb2RlLkVSUk9SX1BERiksXG4gICAgICAgICAgICAgICAgJ25nLWZhZC1wb3J0YWwtc2lnbmF0dXJlLWZlYS1kb2N1bWVudC1hcHByb3ZhbC1saXN0J1xuICAgICAgICAgICAgICApKTtcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vbmVycm9yLmVtaXQobmV3IFJlc3BvbnNlRXJyb3IoXG4gICAgICAgICAgICAgIERvY3VtZW50QXBwcm92YWxMaXN0RXJyb3JDb2RlLlNFUlZJQ0UsXG4gICAgICAgICAgICAgIGdldERvY3VtZW50QXBwcm92YWxMaXN0RXJyb3JEZXNjcmlwdGlvbihEb2N1bWVudEFwcHJvdmFsTGlzdEVycm9yQ29kZS5TRVJWSUNFKSxcbiAgICAgICAgICAgICAgJ25nLWZhZC1wb3J0YWwtc2lnbmF0dXJlLWZlYS1kb2N1bWVudC1hcHByb3ZhbC1saXN0J1xuICAgICAgICAgICAgKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICAgIHRoaXMub25lcnJvci5lbWl0KG5ldyBSZXNwb25zZUVycm9yKFxuICAgICAgICAgICAgRG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckNvZGUuSFRUUCxcbiAgICAgICAgICAgIGdldERvY3VtZW50QXBwcm92YWxMaXN0RXJyb3JEZXNjcmlwdGlvbihEb2N1bWVudEFwcHJvdmFsTGlzdEVycm9yQ29kZS5IVFRQKSxcbiAgICAgICAgICAgICduZy1mYWQtcG9ydGFsLXNpZ25hdHVyZS1mZWEtZG9jdW1lbnQtYXBwcm92YWwtbGlzdCdcbiAgICAgICAgICApKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cbiAgXG5cbiAgZ2V0RG9jdW1lbnRJZChpZDogc3RyaW5nKXtcbiAgICByZXR1cm4gXCJwZGZcIitpZCEucmVwbGFjZSgvLS9nLCAnJyk7XG4gIH1cbiAgc2V0Q3VzdG9taXphdGlvblN0eWxlKHRhcmdldEVsZW1lbnQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IFV0aWxzLm1lcmdlQ29uZmlndXJhdGlvbihcbiAgICAgICAgbmV3IENvbmZpZ3VyYXRpb24oKSxcbiAgICAgICAgRE9DVU1FTlRfQVBQUk9WQUxfTElTVF9ERUZBVUxULFxuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb25cbiAgICAgICk7XG4gICAgfVxufVxuIiwiXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcmVxdWlzaXRpb24gb2YgcmVxdWlzaXRpb25zRmVhXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmYWQtcG9ydGFsLWNvbnRlbnRcIiA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCIgPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmYWQtcG9ydGFsLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyByZXF1aXNpdGlvbi5uYW1lIH19ICh7e3JlcXVpc2l0aW9uLmRvY3VtZW50cy5sZW5ndGh9fSlcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e2NvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uc2VuZFRvfX0gQWxmcmVkbyBWaWxsYW51ZXZhICB7eyByZXF1aXNpdGlvbi5zZW5kQnkgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyByZXF1aXNpdGlvbi5zZW5kQnlFbWFpbCB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVxdWlzaXRpb24taWRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZhZC1wb3J0YWwtY29udGVudC1ib2xkXCI+SUQge3sgcmVxdWlzaXRpb24ucmVxdWlzaXRpb25JZCB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZG9jdW1lbnRzLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRvY3VtZW50IG9mIGRvY3VtZW50c0FwcHJvdmFsTGlzdDsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZG9jdW1lbnQuaWRSZXF1aXNpdGlvbiA9PT0gcmVxdWlzaXRpb24ucmVxdWlzaXRpb25JZFwiID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb2N1bWVudFwiICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm9ybWF0aW9uXCIgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZG9jdW1lbnQtbmFtZSBmYWQtcG9ydGFsLWNvbnRlbnQtYm9sZFwiID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRvY3VtZW50LmRvYz8ubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbGlkYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1mYWQtaW1hZ2UtaW5saW5lIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImRvY3VtZW50LmFwcHJvdmVkID09PSBmYWxzZSA/IGltYWdlcy5hY3RpdmUucmVqZWN0IDogaW1hZ2VzLmluYWN0aXZlLnJlamVjdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVSZWplY3Rpb24oZG9jdW1lbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWZhZC1pbWFnZS1pbmxpbmU+XG4gICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctZmFkLWltYWdlLWlubGluZSBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJkb2N1bWVudC5hcHByb3ZlZCA9PT0gdHJ1ZSA/IGltYWdlcy5hY3RpdmUuYXBwcm92ZSA6IGltYWdlcy5pbmFjdGl2ZS5hcHByb3ZlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFwcHJvdmFsKGRvY3VtZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1mYWQtaW1hZ2UtaW5saW5lPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmYWQtcG9ydGFsLWNvbnRlbnQtYm9sZFwiIChjbGljayk9XCJzZWVEb2N1bWVudEZlYShkb2N1bWVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBkb2N1bWVudC5pc1Zpc2libGUgPyAnT2N1bHRhciBkb2N1bWVudG8nIDogJ1ZlciBkb2N1bWVudG8nIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmYWQtcG9ydGFsLWNvbnRlbnQtYm9sZFwiIChjbGljayk9XCJkb3dubG9hZERvY3VtZW50RmVhKGRvY3VtZW50KVwiPnt7Y29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5kb3dubG9hZH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZG9jdW1lbnQuZG9jPy5wYWdlcyB9fSB7e2NvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8ucGFnZXN9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctZmFkLXNpZ25hdHVyZS1mZWEtcGRmLXZpZXdlci1mZWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImRvY3VtZW50LmlzVmlzaWJsZSAgJiYgZG9jdW1lbnQuZG9jPy5maWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmlsZV09XCJkb2N1bWVudC5kb2M/LmZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmRleF09XCJpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiZ2V0RG9jdW1lbnRJZChkb2N1bWVudC5pZCEpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1mYWQtc2lnbmF0dXJlLWZlYS1wZGYtdmlld2VyLWZlYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIFxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8ZGl2IGNsYXNzPVwiZmFkLXBvcnRhbC1jb250ZW50IHNlbGVjdG9yLWRvY3VtZW50XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkb2N1bWVudC1zdGF0dXMtYmFyXCI+XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJnZXRBcHByb3ZlZENvdW50KCkgPT09IDAgJiYgZ2V0UmVqZWN0ZWRDb3VudCgpID09PSAwXCIgY2xhc3M9XCJkb2N1bWVudC1zdGF0dXMtbWVzc2FnZSBcIj5cbiAgICAgICAgICAgICAgICBBcHJ1ZWJhIGxvcyBkb2N1bWVudG9zIHBhcmEgZmlybWFybG9zIGNvbiB0dSBlLmZpcm1hXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICBcbiAgICAgICAgICBcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJnZXRBcHByb3ZlZENvdW50KCkgPiAwIHx8IGdldFJlamVjdGVkQ291bnQoKSA+IDBcIiBjbGFzcz1cImRvY3VtZW50LXN0YXR1cy1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcHJvdmUtYWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1mYWQtaW1hZ2UtaW5saW5lIFxuICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJhcHByb3ZlQWxsID8gaW1hZ2VzLmFjdGl2ZS5hcHByb3ZlIDogaW1hZ2VzLmluYWN0aXZlLmFwcHJvdmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFwcHJvdmVBbGxEb2N1bWVudHMoKVwiPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWZhZC1pbWFnZS1pbmxpbmU+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJhcHByb3ZlQWxsRG9jdW1lbnRzKClcIj5BcHJvYmFyIHRvZG9zIGxvcyBkb2N1bWVudG9zICh7eyBkb2N1bWVudHNBcHByb3ZhbExpc3QubGVuZ3RoIH19KTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICBcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZG9jdW1lbnQtY291bnRzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2V0QXBwcm92ZWRDb3VudCgpID4gMCAmJiBnZXRSZWplY3RlZENvdW50KCkgPT09IDBcIiBjbGFzcz1cImZhZC1wb3J0YWwtaW5mb3JtYXRpdmUtYm9sZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0QXBwcm92ZWRDb3VudCgpIH19IGRvY3VtZW50b3MgYXByb2JhZG9zXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnZXRSZWplY3RlZENvdW50KCkgPiAwICYmIGdldEFwcHJvdmVkQ291bnQoKSA9PT0gMFwiIGNsYXNzPVwiZmFkLXBvcnRhbC1pbmZvcm1hdGl2ZS1ib2xkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRSZWplY3RlZENvdW50KCkgfX0gZG9jdW1lbnRvcyByZWNoYXphZG9zXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJnZXRBcHByb3ZlZENvdW50KCkgPiAwICYmIGdldFJlamVjdGVkQ291bnQoKSA+IDBcIiA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAgY2xhc3M9XCJmYWQtcG9ydGFsLWluZm9ybWF0aXZlLWJvbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRBcHByb3ZlZENvdW50KCkgfX0gZG9jdW1lbnRvcyBhcHJvYmFkb3NcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICBjbGFzcz1cImZhZC1wb3J0YWwtaW5mb3JtYXRpdmUtYm9sZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldFJlamVjdGVkQ291bnQoKSB9fSBkb2N1bWVudG9zIHJlY2hhemFkb3NcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgXG4gICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZmFkLXBvcnRhbC1wcmltYXJ5XCIgKGNsaWNrKT1cImVtaXRBcHByb3ZlZERvY3VtZW50cygpXCI+Q29udGludWFyPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgXG5cbiJdfQ==
|
|
191
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtYXBwcm92YWwtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mYWQtcHJvZHVjdG8tcG9ydGFsL25nLWZhZC1zaWduYXR1cmUtZmVhL3NyYy9saWIvY29tcG9uZW50cy9kb2N1bWVudC1hcHByb3ZhbC1saXN0L2RvY3VtZW50LWFwcHJvdmFsLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFkLXByb2R1Y3RvLXBvcnRhbC9uZy1mYWQtc2lnbmF0dXJlLWZlYS9zcmMvbGliL2NvbXBvbmVudHMvZG9jdW1lbnQtYXBwcm92YWwtbGlzdC9kb2N1bWVudC1hcHByb3ZhbC1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFFNUUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLHVDQUF1QyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJMUcsT0FBTyxFQUFFLFFBQVEsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLHFCQUFxQixFQUFtQixNQUFNLGlDQUFpQyxDQUFDO0FBRXpGLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDaEYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7QUFRaEUsTUFBTSxPQUFPLDZCQUE2QjtJQXlCeEMsWUFBcUIsV0FBdUIsRUFBVSxHQUFlLEVBQVMsR0FBc0IsRUFBUyxVQUFpQztRQUF6SCxn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O2dCQUNHLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJ0BmYWQtcHJvZHVjdG8tcG9ydGFsL2ZhZC1jb21tb24vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbiB9IGZyb20gJ0BmYWQtcHJvZHVjdG8tcG9ydGFsL2ZhZC1jb21tb24vbW9kZWxzL2NvcmUnO1xuaW1wb3J0IHsgRG9jdW1lbnRBcHByb3ZhbEZlYSwgSURvY3VtZW50QXBwcm92YWxMaXN0Q29uZmlndXJhdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBET0NVTUVOVF9BUFBST1ZBTF9MSVNUX0RFRkFVTFQsIGdldERvY3VtZW50QXBwcm92YWxMaXN0RXJyb3JEZXNjcmlwdGlvbiB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBGYWRTZXJ2aWNlLCBSZXF1aXNpdGlvbnNGZWEsIFJlc3BvbnNlRGF0YSwgIFJlcXVpc2l0aW9uRmVhRGF0YSwgRG9jdW1lbnRGZWEgfSBmcm9tICdAZmFkLXByb2R1Y3RvLXBvcnRhbC9uZy1mYWQtc2VydmljZXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgR2VuZXJhbFBkZlZpZXdlckNvbXBvbmVudCBhcyBHZW5lcmFsUGRmVmlld2VyQ29tcG9uZW50TW9kdWxlLCBJUGRmTWluaVZpZXdDb25maWd1cmF0aW9uIH0gZnJvbSAnQGZhZC1wcm9kdWN0by1wb3J0YWwvbmctZmFkLXZpZXdlcidcbmltcG9ydCB7IGZpbmFsaXplLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE5nRmFkUGRmUmVhZGVyU2VydmljZSwgUmVzcG9uc2VTdWNjZXNzIH0gZnJvbSAnQGZhZC1wcm9kdWN0by9uZy1mYWQtcGRmLXJlYWRlcic7XG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IFJlc3BvbnNlRXJyb3IsIFNoYXJlZFV0aWxzIH0gZnJvbSAnQGZhZC1wcm9kdWN0by1wb3J0YWwvbmctZmFkLXNoYXJlZCc7XG5pbXBvcnQgeyBEb2N1bWVudEFwcHJvdmFsTGlzdEVycm9yQ29kZSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nLWZhZC1zaWduYXR1cmUtZmVhLWRvY3VtZW50LWFwcHJvdmFsLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vZG9jdW1lbnQtYXBwcm92YWwtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RvY3VtZW50LWFwcHJvdmFsLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbTmdGYWRQZGZSZWFkZXJTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBEb2N1bWVudEFwcHJvdmFsTGlzdENvbXBvbmVudCB7XG4gIFxuICBASW5wdXQoKSBjb25maWd1cmF0aW9uITogSURvY3VtZW50QXBwcm92YWxMaXN0Q29uZmlndXJhdGlvbjtcbiAgQElucHV0KCkgcmZjITogc3RyaW5nO1xuICBAT3V0cHV0KCkgb25sb2FkZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBvbmV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxEb2N1bWVudEFwcHJvdmFsRmVhW10+KCk7XG4gIEBPdXRwdXQoKSBvbmVycm9yOiBFdmVudEVtaXR0ZXI8UmVzcG9uc2VFcnJvcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHBhZ2VzTWFwOiBNYXA8c3RyaW5nLCBSZXNwb25zZVN1Y2Nlc3NbXT4gPSBuZXcgTWFwKCk7XG4gIHJlcXVpc2l0aW9uc0ZlYTogUmVxdWlzaXRpb25GZWFEYXRhW10gPSBbXTtcbiAgZG9jdW1lbnRzQXBwcm92YWxMaXN0OiBEb2N1bWVudEFwcHJvdmFsRmVhW10gPSBbXTtcbiAgYXBwcm92ZUFsbDogYm9vbGVhbiA9IGZhbHNlO1xuICBcbiAgaW1hZ2VzID0ge1xuICAgIGluYWN0aXZlOntcbiAgICAgIHJlamVjdDogJycsXG4gICAgICBhcHByb3ZlOiAnJ1xuICAgIH0sXG4gICAgYWN0aXZlOntcbiAgICAgIHJlamVjdDogJycsXG4gICAgICBhcHByb3ZlOiAnJyBcbiAgICB9XG4gIH1cblxuICBcblxuICBjb25zdHJ1Y3RvciggcHJpdmF0ZSBob3N0Q29udGV4dDogRWxlbWVudFJlZiwgcHJpdmF0ZSBmYWQ6IEZhZFNlcnZpY2UscHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLHByaXZhdGUgcGRmU2VydmljZTogTmdGYWRQZGZSZWFkZXJTZXJ2aWNlICkge31cbiAgXG4gIFxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zb2xlLmxvZyh0aGlzLmNvbmZpZ3VyYXRpb24sdGhpcy5yZmMpXG4gICAgdGhpcy5zZXRDdXN0b21pemF0aW9uU3R5bGUodGhpcy5ob3N0Q29udGV4dC5uYXRpdmVFbGVtZW50KTtcbiAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uPy5wYXRoRGVwZW5kZW5jaWVzPy5pbWFnZURpcmVjdG9yeSkge1xuICAgICAgdGhpcy5pbWFnZXMuaW5hY3RpdmUucmVqZWN0ID0gdGhpcy5jb25maWd1cmF0aW9uLnBhdGhEZXBlbmRlbmNpZXM/LmltYWdlcz8uaW5hY3RpdmVSZWplY3QgPz8gYCR7dGhpcy5jb25maWd1cmF0aW9uLnBhdGhEZXBlbmRlbmNpZXMuaW1hZ2VEaXJlY3Rvcnl9L2luYWN0aXZlUmVqZWN0LnBuZ2A7XG4gICAgICB0aGlzLmltYWdlcy5pbmFjdGl2ZS5hcHByb3ZlID0gdGhpcy5jb25maWd1cmF0aW9uLnBhdGhEZXBlbmRlbmNpZXM/LmltYWdlcz8uaW5hY3RpdmVBcHByb3ZlID8/IGAke3RoaXMuY29uZmlndXJhdGlvbi5wYXRoRGVwZW5kZW5jaWVzLmltYWdlRGlyZWN0b3J5fS9pbmFjdGl2ZUFwcHJvdmUucG5nYDtcbiAgICAgIHRoaXMuaW1hZ2VzLmFjdGl2ZS5yZWplY3QgPSB0aGlzLmNvbmZpZ3VyYXRpb24ucGF0aERlcGVuZGVuY2llcz8uaW1hZ2VzPy5hY3RpdmVSZWplY3QgPz8gYCR7dGhpcy5jb25maWd1cmF0aW9uLnBhdGhEZXBlbmRlbmNpZXMuaW1hZ2VEaXJlY3Rvcnl9L2FjdGl2ZVJlamVjdC5wbmdgO1xuICAgICAgdGhpcy5pbWFnZXMuYWN0aXZlLmFwcHJvdmUgPSB0aGlzLmNvbmZpZ3VyYXRpb24ucGF0aERlcGVuZGVuY2llcz8uaW1hZ2VzPy5hY3RpdmVBcHByb3ZlID8/IGAke3RoaXMuY29uZmlndXJhdGlvbi5wYXRoRGVwZW5kZW5jaWVzLmltYWdlRGlyZWN0b3J5fS9hY3RpdmVBcHByb3ZlLnBuZ2A7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgXG4gICAgdGhpcy5nZXRSZXF1aXNpdGlvbnNSZmMoKTtcbiAgfVxuXG4gIGdldFJlcXVpc2l0aW9uc1JmYygpIHtcbiAgICB0aGlzLm9ubG9hZGVyLmVtaXQodHJ1ZSk7IFxuICAgIFxuICAgIHRoaXMuZmFkLmdldFJlcXVpc2l0aW9uc1JmYyh0aGlzLnJmYylcbiAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHRoaXMub25sb2FkZXIuZW1pdChmYWxzZSkpKSBcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgICAgaWYgKHJlcy5zdWNjZXNzKSB7IFxuICAgICAgICAgICAgdGhpcy5yZXF1aXNpdGlvbnNGZWEgPSByZXMuZGF0YS5yZXF1aXNpdGlvbnM7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50c0FwcHJvdmFsTGlzdCA9IHRoaXMucmVxdWlzaXRpb25zRmVhLmZsYXRNYXAocmVxdWlzaXRpb24gPT4gXG4gICAgICAgICAgICAgIHJlcXVpc2l0aW9uLmRvY3VtZW50cy5tYXAoZG9jID0+ICh7XG4gICAgICAgICAgICAgICAgZG9jOiBkb2MsXG4gICAgICAgICAgICAgICAgaWQ6IGRvYy5kb2N1bWVudElkLFxuICAgICAgICAgICAgICAgIGlkUmVxdWlzaXRpb246IHJlcXVpc2l0aW9uLnJlcXVpc2l0aW9uSWQsXG4gICAgICAgICAgICAgICAgYXBwcm92ZWQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBpc1Zpc2libGU6IGZhbHNlXG4gICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmRvY3VtZW50c0FwcHJvdmFsTGlzdC5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgIHRoaXMubG9hZFNpbmdsZURvY3VtZW50KHRoaXMuZG9jdW1lbnRzQXBwcm92YWxMaXN0WzBdKTtcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihcbiAgICAgICAgICAgICAgRG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckNvZGUuU0VSVklDRSxcbiAgICAgICAgICAgICAgZ2V0RG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckRlc2NyaXB0aW9uKERvY3VtZW50QXBwcm92YWxMaXN0RXJyb3JDb2RlLlNFUlZJQ0UpLFxuICAgICAgICAgICAgICAnbmctZmFkLXBvcnRhbC1zaWduYXR1cmUtZmVhLWRvY3VtZW50LWFwcHJvdmFsLWxpc3QnXG4gICAgICAgICAgICApKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdGhpcy5vbmVycm9yLmVtaXQobmV3IFJlc3BvbnNlRXJyb3IoXG4gICAgICAgICAgICBEb2N1bWVudEFwcHJvdmFsTGlzdEVycm9yQ29kZS5IVFRQLFxuICAgICAgICAgICAgZ2V0RG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckRlc2NyaXB0aW9uKERvY3VtZW50QXBwcm92YWxMaXN0RXJyb3JDb2RlLkhUVFApLFxuICAgICAgICAgICAgJ25nLWZhZC1wb3J0YWwtc2lnbmF0dXJlLWZlYS1kb2N1bWVudC1hcHByb3ZhbC1saXN0J1xuICAgICAgICAgICkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIGxvYWRTaW5nbGVEb2N1bWVudChzaW5nbGVEb2N1bWVudDogRG9jdW1lbnRBcHByb3ZhbEZlYSl7XG4gICAgc2luZ2xlRG9jdW1lbnQuaXNWaXNpYmxlID0gdHJ1ZTtcblxuICAgIHRoaXMuZmFkLmdldERvY3VtZW50RmVhKHNpbmdsZURvY3VtZW50LmlkISwgeyBsb2FkZXI6IHRydWUsIGVycm9yOiB0cnVlIH0pXG4gICAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHRoaXMub25sb2FkZXIuZW1pdChmYWxzZSkpKVxuICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBpZiAoc2luZ2xlRG9jdW1lbnQuZG9jKSB7XG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZURvY3VtZW50LmRvYy5maWxlID0gXCJkYXRhOmFwcGxpY2F0aW9uL3BkZjtiYXNlNjQsXCIgKyByZXMuZGF0YS5maWxlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7IFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihcbiAgICAgICAgICAgICAgICBEb2N1bWVudEFwcHJvdmFsTGlzdEVycm9yQ29kZS5FUlJPUl9QREYsXG4gICAgICAgICAgICAgICAgZ2V0RG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckRlc2NyaXB0aW9uKERvY3VtZW50QXBwcm92YWxMaXN0RXJyb3JDb2RlLkVSUk9SX1BERiksXG4gICAgICAgICAgICAgICAgJ25nLWZhZC1wb3J0YWwtc2lnbmF0dXJlLWZlYS1kb2N1bWVudC1hcHByb3ZhbC1saXN0J1xuICAgICAgICAgICAgICApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gIH1cblxuICB0b2dnbGVBcHByb3ZhbChkb2N1bWVudDogRG9jdW1lbnRBcHByb3ZhbEZlYSkge1xuICAgIGRvY3VtZW50LmFwcHJvdmVkID0gZG9jdW1lbnQuYXBwcm92ZWQgPT09IHRydWUgPyB1bmRlZmluZWQgOiB0cnVlO1xuICAgIHRoaXMudXBkYXRlQXBwcm92ZUFsbFN0YXRlKCk7XG4gIH1cbiAgXG4gIHRvZ2dsZVJlamVjdGlvbihkb2N1bWVudDogRG9jdW1lbnRBcHByb3ZhbEZlYSkge1xuICAgIGRvY3VtZW50LmFwcHJvdmVkID0gZG9jdW1lbnQuYXBwcm92ZWQgPT09IGZhbHNlID8gdW5kZWZpbmVkIDogZmFsc2U7XG4gICAgdGhpcy51cGRhdGVBcHByb3ZlQWxsU3RhdGUoKTtcbiAgfVxuXG4gIHVwZGF0ZUFwcHJvdmVBbGxTdGF0ZSgpIHtcbiAgICB0aGlzLmFwcHJvdmVBbGwgPSB0aGlzLmRvY3VtZW50c0FwcHJvdmFsTGlzdC5ldmVyeShkb2MgPT4gZG9jLmFwcHJvdmVkID09PSB0cnVlKTtcbiAgfVxuXG4gIGFwcHJvdmVBbGxEb2N1bWVudHMoKSB7XG4gICAgdGhpcy5hcHByb3ZlQWxsID0gIXRoaXMuYXBwcm92ZUFsbDtcbiAgICB0aGlzLmRvY3VtZW50c0FwcHJvdmFsTGlzdC5mb3JFYWNoKGRvYyA9PiBkb2MuYXBwcm92ZWQgPSB0aGlzLmFwcHJvdmVBbGwgPyB0cnVlIDogdW5kZWZpbmVkKTtcbiAgfVxuXG4gIGdldEFwcHJvdmVkQ291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5kb2N1bWVudHNBcHByb3ZhbExpc3QuZmlsdGVyKGRvYyA9PiBkb2MuYXBwcm92ZWQgPT09IHRydWUpLmxlbmd0aDtcbiAgfVxuXG4gIGdldFJlamVjdGVkQ291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5kb2N1bWVudHNBcHByb3ZhbExpc3QuZmlsdGVyKGRvYyA9PiBkb2MuYXBwcm92ZWQgPT09IGZhbHNlKS5sZW5ndGg7XG4gIH1cblxuICBlbWl0QXBwcm92ZWREb2N1bWVudHMoKSB7XG4gICAgY29uc3QgYXBwcm92ZWREb2N1bWVudHMgPSB0aGlzLmRvY3VtZW50c0FwcHJvdmFsTGlzdC5maWx0ZXIoZG9jID0+IGRvYy5hcHByb3ZlZCAhPT0gdW5kZWZpbmVkKTtcbiAgICBjb25zb2xlLmxvZyhhcHByb3ZlZERvY3VtZW50cyk7XG4gICAgdGhpcy5vbmV2ZW50LmVtaXQoYXBwcm92ZWREb2N1bWVudHMpO1xuICB9XG4gIFxuICBzZWVEb2N1bWVudEZlYShkb2N1bWVudDogRG9jdW1lbnRBcHByb3ZhbEZlYSkge1xuICAgIGRvY3VtZW50LmlzVmlzaWJsZSA9ICFkb2N1bWVudC5pc1Zpc2libGU7XG5cbiAgICBpZiAoZG9jdW1lbnQuaXNWaXNpYmxlICYmICFkb2N1bWVudC5kb2M/LmZpbGUpIHtcbiAgICAgICAgdGhpcy5vbmxvYWRlci5lbWl0KHRydWUpO1xuICAgICAgICB0aGlzLmZhZC5nZXREb2N1bWVudEZlYShkb2N1bWVudC5pZCEsIHsgbG9hZGVyOiB0cnVlLCBlcnJvcjogdHJ1ZSB9KVxuICAgICAgICAgICAgLnBpcGUoZmluYWxpemUoKCkgPT4gdGhpcy5vbmxvYWRlci5lbWl0KGZhbHNlKSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5kb2MpIHtcbiAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2MuZmlsZSA9IFwiZGF0YTphcHBsaWNhdGlvbi9wZGY7YmFzZTY0LFwiICsgcmVzLmRhdGEuZmlsZTsgXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb2N1bWVudEFwcHJvdmFsTGlzdEVycm9yQ29kZS5TRVJWSUNFLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldERvY3VtZW50QXBwcm92YWxMaXN0RXJyb3JEZXNjcmlwdGlvbihEb2N1bWVudEFwcHJvdmFsTGlzdEVycm9yQ29kZS5TRVJWSUNFKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmctZmFkLXBvcnRhbC1zaWduYXR1cmUtZmVhLWRvY3VtZW50LWFwcHJvdmFsLWxpc3QnXG4gICAgICAgICAgICAgICAgICAgICAgICApKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbmVycm9yLmVtaXQobmV3IFJlc3BvbnNlRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICBEb2N1bWVudEFwcHJvdmFsTGlzdEVycm9yQ29kZS5IVFRQLFxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0RG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckRlc2NyaXB0aW9uKERvY3VtZW50QXBwcm92YWxMaXN0RXJyb3JDb2RlLkhUVFApLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25nLWZhZC1wb3J0YWwtc2lnbmF0dXJlLWZlYS1kb2N1bWVudC1hcHByb3ZhbC1saXN0J1xuICAgICAgICAgICAgICAgICAgICApKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG59XG5cbiBkb3dubG9hZERvY3VtZW50RmVhKGRvY3VtZW50OiBEb2N1bWVudEFwcHJvdmFsRmVhKSB7XG4gICAgdGhpcy5vbmxvYWRlci5lbWl0KHRydWUpOyBcbiAgICB0aGlzLmZhZC5nZXREb2N1bWVudEZlYShkb2N1bWVudC5pZCEpXG4gICAgICAucGlwZShmaW5hbGl6ZSgoKSA9PiB0aGlzLm9ubG9hZGVyLmVtaXQoZmFsc2UpKSkgXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogIGFzeW5jIChyZXMpID0+IHtcbiAgICAgICAgICBpZiAocmVzLnN1Y2Nlc3MgJiYgcmVzLmRhdGEuZmlsZSkge1xuICAgICAgICAgICAgY29uc3QgYnl0ZUNoYXJhY3RlcnMgPSBhdG9iKHJlcy5kYXRhLmZpbGUpO1xuICAgICAgICAgICAgY29uc3QgYnl0ZU51bWJlcnMgPSBuZXcgQXJyYXkoYnl0ZUNoYXJhY3RlcnMubGVuZ3RoKS5maWxsKDApLm1hcCgoXywgaSkgPT4gYnl0ZUNoYXJhY3RlcnMuY2hhckNvZGVBdChpKSk7XG4gICAgICAgICAgICBjb25zdCBieXRlQXJyYXkgPSBuZXcgVWludDhBcnJheShieXRlTnVtYmVycyk7XG4gICAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2J5dGVBcnJheV0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3BkZicgfSk7XG4gICAgICAgICAgICBhd2FpdCBTaGFyZWRVdGlscy5kb3dubG9hZEZpbGUoYmxvYixkb2N1bWVudC5kb2M/Lm5hbWUhKS50aGVuKHJlcz0+e1xuXG4gICAgICAgICAgICB9KS5jYXRjaChlcnJvcj0+e1xuICAgICAgICAgICAgICB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihcbiAgICAgICAgICAgICAgICBEb2N1bWVudEFwcHJvdmFsTGlzdEVycm9yQ29kZS5FUlJPUl9QREYsXG4gICAgICAgICAgICAgICAgZ2V0RG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckRlc2NyaXB0aW9uKERvY3VtZW50QXBwcm92YWxMaXN0RXJyb3JDb2RlLkVSUk9SX1BERiksXG4gICAgICAgICAgICAgICAgJ25nLWZhZC1wb3J0YWwtc2lnbmF0dXJlLWZlYS1kb2N1bWVudC1hcHByb3ZhbC1saXN0J1xuICAgICAgICAgICAgICApKTtcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vbmVycm9yLmVtaXQobmV3IFJlc3BvbnNlRXJyb3IoXG4gICAgICAgICAgICAgIERvY3VtZW50QXBwcm92YWxMaXN0RXJyb3JDb2RlLlNFUlZJQ0UsXG4gICAgICAgICAgICAgIGdldERvY3VtZW50QXBwcm92YWxMaXN0RXJyb3JEZXNjcmlwdGlvbihEb2N1bWVudEFwcHJvdmFsTGlzdEVycm9yQ29kZS5TRVJWSUNFKSxcbiAgICAgICAgICAgICAgJ25nLWZhZC1wb3J0YWwtc2lnbmF0dXJlLWZlYS1kb2N1bWVudC1hcHByb3ZhbC1saXN0J1xuICAgICAgICAgICAgKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICAgIHRoaXMub25lcnJvci5lbWl0KG5ldyBSZXNwb25zZUVycm9yKFxuICAgICAgICAgICAgRG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckNvZGUuSFRUUCxcbiAgICAgICAgICAgIGdldERvY3VtZW50QXBwcm92YWxMaXN0RXJyb3JEZXNjcmlwdGlvbihEb2N1bWVudEFwcHJvdmFsTGlzdEVycm9yQ29kZS5IVFRQKSxcbiAgICAgICAgICAgICduZy1mYWQtcG9ydGFsLXNpZ25hdHVyZS1mZWEtZG9jdW1lbnQtYXBwcm92YWwtbGlzdCdcbiAgICAgICAgICApKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cbiAgXG5cbiAgZ2V0RG9jdW1lbnRJZChpZDogc3RyaW5nKXtcbiAgICByZXR1cm4gXCJwZGZcIitpZCEucmVwbGFjZSgvLS9nLCAnJyk7XG4gIH1cbiAgc2V0Q3VzdG9taXphdGlvblN0eWxlKHRhcmdldEVsZW1lbnQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IFV0aWxzLm1lcmdlQ29uZmlndXJhdGlvbihcbiAgICAgICAgbmV3IENvbmZpZ3VyYXRpb24oKSxcbiAgICAgICAgRE9DVU1FTlRfQVBQUk9WQUxfTElTVF9ERUZBVUxULFxuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb25cbiAgICAgICk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInJlcXVpc2l0aW9uc0ZlYSAmJiByZXF1aXNpdGlvbnNGZWEubGVuZ3RoID4gMFwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcmVxdWlzaXRpb24gb2YgcmVxdWlzaXRpb25zRmVhXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZhZC1wb3J0YWwtY29udGVudFwiID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlclwiID5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZhZC1wb3J0YWwtdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgcmVxdWlzaXRpb24ubmFtZSB9fSAoe3tyZXF1aXNpdGlvbi5kb2N1bWVudHMubGVuZ3RofX0pXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tjb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LnNlbmRUb319IEFsZnJlZG8gVmlsbGFudWV2YSAge3sgcmVxdWlzaXRpb24uc2VuZEJ5IH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgcmVxdWlzaXRpb24uc2VuZEJ5RW1haWwgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlcXVpc2l0aW9uLWlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZhZC1wb3J0YWwtY29udGVudC1ib2xkXCI+SUQge3sgcmVxdWlzaXRpb24ucmVxdWlzaXRpb25JZCB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZG9jdW1lbnRzLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZG9jdW1lbnQgb2YgZG9jdW1lbnRzQXBwcm92YWxMaXN0OyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRvY3VtZW50LmlkUmVxdWlzaXRpb24gPT09IHJlcXVpc2l0aW9uLnJlcXVpc2l0aW9uSWRcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb2N1bWVudFwiICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mb3JtYXRpb25cIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRvY3VtZW50LW5hbWUgZmFkLXBvcnRhbC1jb250ZW50LWJvbGRcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRvY3VtZW50LmRvYz8ubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWxpZGF0ZVwiPlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctZmFkLWltYWdlLWlubGluZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiZG9jdW1lbnQuYXBwcm92ZWQgPT09IGZhbHNlID8gaW1hZ2VzLmFjdGl2ZS5yZWplY3QgOiBpbWFnZXMuaW5hY3RpdmUucmVqZWN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlUmVqZWN0aW9uKGRvY3VtZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWZhZC1pbWFnZS1pbmxpbmU+XHJcbiAgXHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1mYWQtaW1hZ2UtaW5saW5lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJkb2N1bWVudC5hcHByb3ZlZCA9PT0gdHJ1ZSA/IGltYWdlcy5hY3RpdmUuYXBwcm92ZSA6IGltYWdlcy5pbmFjdGl2ZS5hcHByb3ZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQXBwcm92YWwoZG9jdW1lbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctZmFkLWltYWdlLWlubGluZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmFkLXBvcnRhbC1jb250ZW50LWJvbGRcIiAoY2xpY2spPVwic2VlRG9jdW1lbnRGZWEoZG9jdW1lbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBkb2N1bWVudC5pc1Zpc2libGUgPyAnT2N1bHRhciBkb2N1bWVudG8nIDogJ1ZlciBkb2N1bWVudG8nIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmFkLXBvcnRhbC1jb250ZW50LWJvbGRcIiAoY2xpY2spPVwiZG93bmxvYWREb2N1bWVudEZlYShkb2N1bWVudClcIj57e2NvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uZG93bmxvYWR9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRvY3VtZW50LmRvYz8ucGFnZXMgfX0ge3tjb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LnBhZ2VzfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWZhZC1zaWduYXR1cmUtZmVhLXBkZi12aWV3ZXItZmVhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImRvY3VtZW50LmlzVmlzaWJsZSAgJiYgZG9jdW1lbnQuZG9jPy5maWxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmaWxlXT1cImRvY3VtZW50LmRvYz8uZmlsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5kZXhdPVwiaVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiZ2V0RG9jdW1lbnRJZChkb2N1bWVudC5pZCEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctZmFkLXNpZ25hdHVyZS1mZWEtcGRmLXZpZXdlci1mZWE+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmFkLXBvcnRhbC1jb250ZW50IHNlbGVjdG9yLWRvY3VtZW50XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRvY3VtZW50LXN0YXR1cy1iYXJcIj5cclxuICBcclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdldEFwcHJvdmVkQ291bnQoKSA9PT0gMCAmJiBnZXRSZWplY3RlZENvdW50KCkgPT09IDBcIiBjbGFzcz1cImRvY3VtZW50LXN0YXR1cy1tZXNzYWdlIFwiPlxyXG4gICAgICAgICAgICAgICAgQXBydWViYSBsb3MgZG9jdW1lbnRvcyBwYXJhIGZpcm1hcmxvcyBjb24gdHUgZS5maXJtYVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICBcclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdldEFwcHJvdmVkQ291bnQoKSA+IDAgfHwgZ2V0UmVqZWN0ZWRDb3VudCgpID4gMFwiIGNsYXNzPVwiZG9jdW1lbnQtc3RhdHVzLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHByb3ZlLWFsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1mYWQtaW1hZ2UtaW5saW5lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiYXBwcm92ZUFsbCA/IGltYWdlcy5hY3RpdmUuYXBwcm92ZSA6IGltYWdlcy5pbmFjdGl2ZS5hcHByb3ZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFwcHJvdmVBbGxEb2N1bWVudHMoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctZmFkLWltYWdlLWlubGluZT5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwiYXBwcm92ZUFsbERvY3VtZW50cygpXCI+QXByb2JhciB0b2RvcyBsb3MgZG9jdW1lbnRvcyAoe3sgZG9jdW1lbnRzQXBwcm92YWxMaXN0Lmxlbmd0aCB9fSk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICBcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb2N1bWVudC1jb3VudHNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdldEFwcHJvdmVkQ291bnQoKSA+IDAgJiYgZ2V0UmVqZWN0ZWRDb3VudCgpID09PSAwXCIgY2xhc3M9XCJmYWQtcG9ydGFsLWluZm9ybWF0aXZlLWJvbGRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0QXBwcm92ZWRDb3VudCgpIH19IGRvY3VtZW50b3MgYXByb2JhZG9zXHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2V0UmVqZWN0ZWRDb3VudCgpID4gMCAmJiBnZXRBcHByb3ZlZENvdW50KCkgPT09IDBcIiBjbGFzcz1cImZhZC1wb3J0YWwtaW5mb3JtYXRpdmUtYm9sZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRSZWplY3RlZENvdW50KCkgfX0gZG9jdW1lbnRvcyByZWNoYXphZG9zXHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJnZXRBcHByb3ZlZENvdW50KCkgPiAwICYmIGdldFJlamVjdGVkQ291bnQoKSA+IDBcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICBjbGFzcz1cImZhZC1wb3J0YWwtaW5mb3JtYXRpdmUtYm9sZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0QXBwcm92ZWRDb3VudCgpIH19IGRvY3VtZW50b3MgYXByb2JhZG9zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gIGNsYXNzPVwiZmFkLXBvcnRhbC1pbmZvcm1hdGl2ZS1ib2xkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRSZWplY3RlZENvdW50KCkgfX0gZG9jdW1lbnRvcyByZWNoYXphZG9zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gIFxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImZhZC1wb3J0YWwtcHJpbWFyeVwiIChjbGljayk9XCJlbWl0QXBwcm92ZWREb2N1bWVudHMoKVwiPkNvbnRpbnVhcjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIFxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gICJdfQ==
|
|
@@ -42,10 +42,10 @@ export class PdfViewerFeaComponent {
|
|
|
42
42
|
return;
|
|
43
43
|
}
|
|
44
44
|
const observer = new MutationObserver(() => {
|
|
45
|
-
const viewerElement = containerElement.querySelector(`#fad-viewer-page-v1-1`);
|
|
45
|
+
const viewerElement = containerElement.querySelector(`#fad-viewer-page-v1-${data.id}-1`);
|
|
46
46
|
if (viewerElement) {
|
|
47
47
|
observer.disconnect();
|
|
48
|
-
const newHeight = viewerElement.clientHeight;
|
|
48
|
+
const newHeight = viewerElement.clientHeight + 30;
|
|
49
49
|
if (this.height !== newHeight) {
|
|
50
50
|
this.height = newHeight;
|
|
51
51
|
this.cdr.detectChanges();
|
|
@@ -59,11 +59,11 @@ export class PdfViewerFeaComponent {
|
|
|
59
59
|
this.configuration = Utils.mergeConfiguration(new Configuration(), PDF_VIEWER_FEA_DEFAULT, this.configuration);
|
|
60
60
|
}
|
|
61
61
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PdfViewerFeaComponent, deps: [{ token: i1.NgFadPdfReaderService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
62
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PdfViewerFeaComponent, selector: "ng-fad-signature-fea-pdf-viewer-fea", inputs: { configuration: "configuration", file: "file", index: "index", id: "id" }, providers: [NgFadPdfReaderService], viewQueries: [{ propertyName: "generalPdfViewerComponent", first: true, predicate: GeneralPdfViewerComponentModule, descendants: true }], ngImport: i0, template: "<div class=\"pdf-viewer\" [id]=\"id\" [style.height.px]=\"height\">\r\n <ng-fad-viewer-general-pdf-viewer\r\n [pages]=\"pages\"\r\n (onpagechange)=\"onPageChange($event)\"\r\n (onloadpage)=\"onLoadPage($event)\">\r\n \r\n <ng-fad-viewer-pdf-mini-view\r\n miniView\r\n [configuration]=\"miniViewConfig\"\r\n [pages]=\"pages\"\r\n [page]=\"page\"\r\n (onpagechange)=\"scrollToPage($event)\"\r\n >\r\n </ng-fad-viewer-pdf-mini-view>\r\n \r\n </ng-fad-viewer-general-pdf-viewer>\r\n</div>", styles: [""], dependencies: [{ kind: "component", type: i2.GeneralPdfViewerComponent, selector: "ng-fad-viewer-general-pdf-viewer", inputs: ["configuration", "onerror", "pages"], outputs: ["onpagechange", "onloadpage"] }, { kind: "component", type: i2.PdfMiniViewComponent, selector: "ng-fad-viewer-pdf-mini-view", inputs: ["configuration", "pages", "page"], outputs: ["onpagechange"] }] }); }
|
|
62
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PdfViewerFeaComponent, selector: "ng-fad-signature-fea-pdf-viewer-fea", inputs: { configuration: "configuration", file: "file", index: "index", id: "id" }, providers: [NgFadPdfReaderService], viewQueries: [{ propertyName: "generalPdfViewerComponent", first: true, predicate: GeneralPdfViewerComponentModule, descendants: true }], ngImport: i0, template: "<div class=\"pdf-viewer\" [id]=\"id\" [style.height.px]=\"height\">\r\n <ng-fad-viewer-general-pdf-viewer\r\n [pages]=\"pages\"\r\n (onpagechange)=\"onPageChange($event)\"\r\n (onloadpage)=\"onLoadPage($event)\">\r\n \r\n <ng-fad-viewer-pdf-mini-view\r\n miniView\r\n [configuration]=\"miniViewConfig\"\r\n [pages]=\"pages\"\r\n [page]=\"page\"\r\n (onpagechange)=\"scrollToPage($event)\"\r\n >\r\n </ng-fad-viewer-pdf-mini-view>\r\n \r\n </ng-fad-viewer-general-pdf-viewer>\r\n</div>", styles: ["ng-fad-viewer-general-pdf-viewer{padding:var(--fad-portal-common-separation-md);box-sizing:border-box}\n"], dependencies: [{ kind: "component", type: i2.GeneralPdfViewerComponent, selector: "ng-fad-viewer-general-pdf-viewer", inputs: ["configuration", "onerror", "pages"], outputs: ["onpagechange", "onloadpage"] }, { kind: "component", type: i2.PdfMiniViewComponent, selector: "ng-fad-viewer-pdf-mini-view", inputs: ["configuration", "pages", "page"], outputs: ["onpagechange"] }] }); }
|
|
63
63
|
}
|
|
64
64
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PdfViewerFeaComponent, decorators: [{
|
|
65
65
|
type: Component,
|
|
66
|
-
args: [{ selector: 'ng-fad-signature-fea-pdf-viewer-fea', providers: [NgFadPdfReaderService], template: "<div class=\"pdf-viewer\" [id]=\"id\" [style.height.px]=\"height\">\r\n <ng-fad-viewer-general-pdf-viewer\r\n [pages]=\"pages\"\r\n (onpagechange)=\"onPageChange($event)\"\r\n (onloadpage)=\"onLoadPage($event)\">\r\n \r\n <ng-fad-viewer-pdf-mini-view\r\n miniView\r\n [configuration]=\"miniViewConfig\"\r\n [pages]=\"pages\"\r\n [page]=\"page\"\r\n (onpagechange)=\"scrollToPage($event)\"\r\n >\r\n </ng-fad-viewer-pdf-mini-view>\r\n \r\n </ng-fad-viewer-general-pdf-viewer>\r\n</div>" }]
|
|
66
|
+
args: [{ selector: 'ng-fad-signature-fea-pdf-viewer-fea', providers: [NgFadPdfReaderService], template: "<div class=\"pdf-viewer\" [id]=\"id\" [style.height.px]=\"height\">\r\n <ng-fad-viewer-general-pdf-viewer\r\n [pages]=\"pages\"\r\n (onpagechange)=\"onPageChange($event)\"\r\n (onloadpage)=\"onLoadPage($event)\">\r\n \r\n <ng-fad-viewer-pdf-mini-view\r\n miniView\r\n [configuration]=\"miniViewConfig\"\r\n [pages]=\"pages\"\r\n [page]=\"page\"\r\n (onpagechange)=\"scrollToPage($event)\"\r\n >\r\n </ng-fad-viewer-pdf-mini-view>\r\n \r\n </ng-fad-viewer-general-pdf-viewer>\r\n</div>", styles: ["ng-fad-viewer-general-pdf-viewer{padding:var(--fad-portal-common-separation-md);box-sizing:border-box}\n"] }]
|
|
67
67
|
}], ctorParameters: function () { return [{ type: i1.NgFadPdfReaderService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { configuration: [{
|
|
68
68
|
type: Input
|
|
69
69
|
}], file: [{
|
|
@@ -76,4 +76,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
76
76
|
type: ViewChild,
|
|
77
77
|
args: [GeneralPdfViewerComponentModule]
|
|
78
78
|
}] } });
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLXZpZXdlci1mZWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFkLXByb2R1Y3RvLXBvcnRhbC9uZy1mYWQtc2lnbmF0dXJlLWZlYS9zcmMvbGliL2NvbXBvbmVudHMvcGRmLXZpZXdlci1mZWEvcGRmLXZpZXdlci1mZWEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFkLXByb2R1Y3RvLXBvcnRhbC9uZy1mYWQtc2lnbmF0dXJlLWZlYS9zcmMvbGliL2NvbXBvbmVudHMvcGRmLXZpZXdlci1mZWEvcGRmLXZpZXdlci1mZWEuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUscUJBQXFCLEVBQW1CLE1BQU0saUNBQWlDLENBQUM7QUFDekYsT0FBTyxFQUFFLHlCQUF5QixJQUFJLCtCQUErQixFQUFFLE1BQU0sb0NBQW9DLENBQUE7QUFDakgsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7OztBQVF6RCxNQUFNLE9BQU8scUJBQXFCO0lBYWhDLFlBQW9CLFVBQWlDLEVBQVMsR0FBc0I7UUFBaEUsZUFBVSxHQUFWLFVBQVUsQ0FBdUI7UUFBUyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQU5wRixVQUFLLEdBQXNCLEVBQUUsQ0FBQztRQUM5QixTQUFJLEdBQVcsQ0FBQyxDQUFDO1FBQ2pCLG1CQUFjLEdBQUcsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDM0MsV0FBTSxHQUFXLElBQUksQ0FBQztJQUdpRSxDQUFDO0lBRXhGLFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDYixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMvQjtJQUNILENBQUM7SUFFRCxhQUFhLENBQUMsU0FBaUI7UUFDN0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFFM0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDdEMsSUFBSSxHQUFHLEVBQUU7Z0JBQ1AsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQzthQUNuQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFZO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBWTtRQUN2QixJQUFJLENBQUMseUJBQXlCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxVQUFVLENBQUMsSUFBcUI7UUFDOUIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRTtZQUNuQixNQUFNLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBZ0IsQ0FBQztZQUN6RSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQ3JCLE9BQU87YUFDUjtZQUNELE1BQU0sUUFBUSxHQUFHLElBQUksZ0JBQWdCLENBQUMsR0FBRyxFQUFFO2dCQUN6QyxNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsdUJBQXVCLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBZ0IsQ0FBQztnQkFFeEcsSUFBSSxhQUFhLEVBQUU7b0JBQ2pCLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDdEIsTUFBTSxTQUFTLEdBQUcsYUFBYSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7b0JBRWxELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUU7d0JBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO3dCQUN4QixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO3FCQUMxQjtpQkFDRjtZQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0gsUUFBUSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7U0FDeEU7SUFDSCxDQUFDO0lBRUEscUJBQXFCLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxlQUFlO1FBQ3pELElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixDQUMzQyxJQUFJLGFBQWEsRUFBRSxFQUNuQixzQkFBc0IsRUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FDbkIsQ0FBQztJQUNQLENBQUM7K0dBcEVTLHFCQUFxQjttR0FBckIscUJBQXFCLGtKQUZyQixDQUFDLHFCQUFxQixDQUFDLHFGQWF2QiwrQkFBK0IsZ0RDeEI1QyxpakJBZ0JNOzs0RkRITyxxQkFBcUI7a0JBTmpDLFNBQVM7K0JBQ0UscUNBQXFDLGFBR3BDLENBQUMscUJBQXFCLENBQUM7NElBSXpCLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxFQUFFO3NCQUFWLEtBQUs7Z0JBTXNDLHlCQUF5QjtzQkFBcEUsU0FBUzt1QkFBQywrQkFBK0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nRmFkUGRmUmVhZGVyU2VydmljZSwgUmVzcG9uc2VTdWNjZXNzIH0gZnJvbSAnQGZhZC1wcm9kdWN0by9uZy1mYWQtcGRmLXJlYWRlcic7XHJcbmltcG9ydCB7IEdlbmVyYWxQZGZWaWV3ZXJDb21wb25lbnQgYXMgR2VuZXJhbFBkZlZpZXdlckNvbXBvbmVudE1vZHVsZSB9IGZyb20gJ0BmYWQtcHJvZHVjdG8tcG9ydGFsL25nLWZhZC12aWV3ZXInXHJcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnQGZhZC1wcm9kdWN0by1wb3J0YWwvZmFkLWNvbW1vbi91dGlscy91dGlscyc7XHJcbmltcG9ydCB7IENvbmZpZ3VyYXRpb24gfSBmcm9tICdAZmFkLXByb2R1Y3RvLXBvcnRhbC9mYWQtY29tbW9uL21vZGVscy9jb3JlJztcclxuaW1wb3J0IHsgUERGX1ZJRVdFUl9GRUFfREVGQVVMVCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ25nLWZhZC1zaWduYXR1cmUtZmVhLXBkZi12aWV3ZXItZmVhJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcGRmLXZpZXdlci1mZWEuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3BkZi12aWV3ZXItZmVhLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbTmdGYWRQZGZSZWFkZXJTZXJ2aWNlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGRmVmlld2VyRmVhQ29tcG9uZW50IHtcclxuXHJcbiAgQElucHV0KCkgY29uZmlndXJhdGlvbiE6IHN0cmluZztcclxuICBASW5wdXQoKSBmaWxlITogc3RyaW5nXHJcbiAgQElucHV0KCkgaW5kZXghOiBudW1iZXI7XHJcbiAgQElucHV0KCkgaWQhOiBzdHJpbmc7XHJcblxyXG4gIHBhZ2VzOiBSZXNwb25zZVN1Y2Nlc3NbXSA9IFtdO1xyXG4gIHBhZ2U6IG51bWJlciA9IDE7XHJcbiAgbWluaVZpZXdDb25maWcgPSB7IHNjcm9sbEludG9WaWV3OiBmYWxzZSB9O1xyXG4gIGhlaWdodDogbnVtYmVyID0gMTAwMDtcclxuICBAVmlld0NoaWxkKEdlbmVyYWxQZGZWaWV3ZXJDb21wb25lbnRNb2R1bGUpIGdlbmVyYWxQZGZWaWV3ZXJDb21wb25lbnQhOiBHZW5lcmFsUGRmVmlld2VyQ29tcG9uZW50TW9kdWxlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBkZlNlcnZpY2U6IE5nRmFkUGRmUmVhZGVyU2VydmljZSxwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZmlsZSkge1xyXG4gICAgICB0aGlzLmluaXRpYWxpemVQZGYodGhpcy5maWxlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluaXRpYWxpemVQZGYocGRmQmFzZTY0OiBzdHJpbmcpIHtcclxuICAgIHRoaXMucGRmU2VydmljZS5pbml0aWFsaXplKHBkZkJhc2U2NCwgYHBkZi0ke3RoaXMuaW5kZXh9YCk7XHJcblxyXG4gICAgdGhpcy5wZGZTZXJ2aWNlLnBhZ2VzLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICB0aGlzLnBhZ2VzID0gWy4uLnRoaXMucGFnZXMsIHJlc107XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25QYWdlQ2hhbmdlKHBhZ2U6IG51bWJlcikge1xyXG4gICAgdGhpcy5wYWdlID0gcGFnZTtcclxuICB9XHJcblxyXG4gIHNjcm9sbFRvUGFnZShwYWdlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuZ2VuZXJhbFBkZlZpZXdlckNvbXBvbmVudC5zY3JvbGxUb1BhZ2UocGFnZSk7XHJcbiAgfVxyXG5cclxuICBvbkxvYWRQYWdlKGRhdGE6IFJlc3BvbnNlU3VjY2Vzcykge1xyXG4gICAgaWYgKGRhdGEucGFnZSA9PT0gMSkge1xyXG4gICAgICBjb25zdCBjb250YWluZXJFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5pZCkgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgIGlmICghY29udGFpbmVyRWxlbWVudCkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKCgpID0+IHtcclxuICAgICAgICBjb25zdCB2aWV3ZXJFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC5xdWVyeVNlbGVjdG9yKGAjZmFkLXZpZXdlci1wYWdlLXYxLSR7ZGF0YS5pZH0tMWApIGFzIEhUTUxFbGVtZW50O1xyXG5cclxuICAgICAgICBpZiAodmlld2VyRWxlbWVudCkge1xyXG4gICAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xyXG4gICAgICAgICAgY29uc3QgbmV3SGVpZ2h0ID0gdmlld2VyRWxlbWVudC5jbGllbnRIZWlnaHQgKyAzMDtcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5oZWlnaHQgIT09IG5ld0hlaWdodCkge1xyXG4gICAgICAgICAgICB0aGlzLmhlaWdodCA9IG5ld0hlaWdodDtcclxuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIG9ic2VydmVyLm9ic2VydmUoY29udGFpbmVyRWxlbWVudCwgeyBjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6IHRydWUgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAgc2V0Q3VzdG9taXphdGlvblN0eWxlKHRhcmdldEVsZW1lbnQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBVdGlscy5tZXJnZUNvbmZpZ3VyYXRpb24oXHJcbiAgICAgICAgICBuZXcgQ29uZmlndXJhdGlvbigpLFxyXG4gICAgICAgICAgUERGX1ZJRVdFUl9GRUFfREVGQVVMVCxcclxuICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvblxyXG4gICAgICAgICk7XHJcbiAgIH1cclxuXHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJwZGYtdmlld2VyXCIgW2lkXT1cImlkXCIgW3N0eWxlLmhlaWdodC5weF09XCJoZWlnaHRcIj5cclxuICAgIDxuZy1mYWQtdmlld2VyLWdlbmVyYWwtcGRmLXZpZXdlclxyXG4gICAgICBbcGFnZXNdPVwicGFnZXNcIlxyXG4gICAgICAob25wYWdlY2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgKG9ubG9hZHBhZ2UpPVwib25Mb2FkUGFnZSgkZXZlbnQpXCI+XHJcbiAgXHJcbiAgICAgIDxuZy1mYWQtdmlld2VyLXBkZi1taW5pLXZpZXdcclxuICAgICAgICBtaW5pVmlld1xyXG4gICAgICAgIFtjb25maWd1cmF0aW9uXT1cIm1pbmlWaWV3Q29uZmlnXCJcclxuICAgICAgICBbcGFnZXNdPVwicGFnZXNcIlxyXG4gICAgICAgIFtwYWdlXT1cInBhZ2VcIlxyXG4gICAgICAgIChvbnBhZ2VjaGFuZ2UpPVwic2Nyb2xsVG9QYWdlKCRldmVudClcIlxyXG4gICAgICAgID5cclxuICAgICAgPC9uZy1mYWQtdmlld2VyLXBkZi1taW5pLXZpZXc+XHJcbiAgXHJcbiAgICA8L25nLWZhZC12aWV3ZXItZ2VuZXJhbC1wZGYtdmlld2VyPlxyXG48L2Rpdj4iXX0=
|