ngx-extended-pdf-viewer
Version:
Embedding PDF files in your Angular application. Highly configurable viewer including the toolbar, sidebar, and all the features you're used to.
62 lines • 17.2 kB
JavaScript
import { Component, effect, Input } from '@angular/core';
import { PositioningService } from '../../dynamic-css/positioning.service';
import { AnnotationEditorType } from '../../options/editor-annotations';
import * as i0 from "@angular/core";
import * as i1 from "../../pdf-notification-service";
import * as i2 from "../../focus-management.service";
import * as i3 from "../pdf-shy-button/pdf-shy-button.component";
import * as i4 from "../../responsive-visibility";
export class PdfEditorSignatureComponent {
cdr;
focusManagement;
show = true;
isSelected = false;
PDFViewerApplication;
constructor(notificationService, cdr, focusManagement) {
this.cdr = cdr;
this.focusManagement = focusManagement;
effect(() => {
this.PDFViewerApplication = notificationService.onPDFJSInitSignal();
if (this.PDFViewerApplication) {
this.onPdfJsInit();
}
});
}
onPdfJsInit() {
this.PDFViewerApplication?.eventBus.on('annotationeditormodechanged', ({ mode }) => {
setTimeout(() => {
const wasSelected = this.isSelected;
this.isSelected = mode === AnnotationEditorType.SIGNATURE;
// Focus management
if (!wasSelected && this.isSelected) {
// Dialog just opened
this.focusManagement.moveFocusToDialog('editorSignatureParamsToolbar', 'Signature editor toolbar opened', 'primaryEditorSignatureButton');
}
else if (wasSelected && !this.isSelected) {
// Dialog just closed
this.focusManagement.returnFocusToPrevious('Signature editor toolbar closed');
}
this.cdr.detectChanges();
});
});
}
onClick(event) {
const currentMode = this.PDFViewerApplication?.pdfViewer.annotationEditorMode;
this.PDFViewerApplication?.eventBus.dispatch('switchannotationeditormode', {
source: this,
mode: currentMode === AnnotationEditorType.SIGNATURE ? AnnotationEditorType.NONE : AnnotationEditorType.SIGNATURE,
isFromKeyboard: event.detail === 0,
});
const positioningService = new PositioningService();
positioningService.positionPopupBelowItsButton('primaryEditorSignatureButton', 'editorSignatureParamsToolbar');
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PdfEditorSignatureComponent, deps: [{ token: i1.PDFNotificationService }, { token: i0.ChangeDetectorRef }, { token: i2.FocusManagementService }], target: i0.ɵɵFactoryTarget.Component });
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PdfEditorSignatureComponent, selector: "pdf-editor-signature", inputs: { show: "show" }, ngImport: i0, template: "<pdf-shy-button\n title=\"Signature\"\n primaryToolbarId=\"primaryEditorSignatureButton\"\n [cssClass]=\"show | responsiveCSSClass : 'hiddenTinyView'\"\n l10nId=\"pdfjs-editor-signature-button\"\n l10nLabel=\"pdfjs-editor-signature-button-label\"\n role=\"radio\"\n ariaHasPopup=\"true\"\n ariaControls=\"editorSignatureParamsToolbar\"\n [order]=\"4000\"\n [action]=\"onClick\"\n [toggled]=\"isSelected\"\n [closeOnClick]=\"true\"\n image=\"<svg width='16' height='16' viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'><path d='M11.618 12.868L11.254 13.25H10.423C10.335 13.396 10.182 13.5 10 13.5H2C1.725 13.5 1.5 13.275 1.5 13V2C1.5 1.725 1.725 1.5 2 1.5H6.939L7 1.561V4.5C7 4.776 7.224 5 7.5 5H10.439L10.5 5.061V6.515L12 5.015V4.75C12 4.551 11.921 4.36 11.78 4.22L7.78 0.22C7.64 0.079 7.449 0 7.25 0H2C0.895 0 0 0.895 0 2V13C0 14.105 0.895 15 2 15H10C11.105 15 12 14.105 12 13V12.486L11.618 12.868Z' fill='black'/><path d='M13.836 4.946C13.962 4.819 14.13 4.75 14.309 4.75C14.487 4.75 14.655 4.819 14.782 4.945L15.805 5.969C15.931 6.094 16 6.262 16 6.441C16 6.621 15.931 6.789 15.805 6.915L14.9397 7.78033L12.9707 5.81134L13.836 4.946Z' fill='black'/><path d='M12.4403 6.34167L8.84 9.942C8.793 9.989 8.767 10.052 8.767 10.119V11.75C8.767 11.888 8.879 12 9.017 12H10.616L10.793 11.927L14.4093 8.31067L12.4403 6.34167Z' fill='black'/><path d='M7.517 9.84799V10.016H7.516V11.517C7.49168 11.4944 7.46584 11.4738 7.44007 11.4532C7.39062 11.4138 7.34148 11.3746 7.304 11.322L7.081 11.009C7.071 10.992 7.037 10.946 6.966 10.957C6.93 10.962 6.882 10.982 6.859 11.046C6.705 11.486 6.492 12.087 5.938 12.087H5.921C5.317 12.07 5.009 11.557 4.745 9.98599L4.382 10.954C4.146 11.585 3.535 12.009 2.861 12.009H2.5V10.759H2.861C3.017 10.759 3.158 10.661 3.213 10.515L3.883 8.72799C4.05 8.28199 4.494 8.01899 4.955 8.07299C5.434 8.12799 5.796 8.48599 5.858 8.96399C5.921 9.43699 5.98 9.80399 6.035 10.085C6.24 9.89099 6.504 9.76099 6.795 9.71999C7.048 9.68399 7.291 9.74599 7.517 9.84799Z' fill='black'/></svg>\">\n</pdf-shy-button>\n", styles: [""], dependencies: [{ kind: "component", type: i3.PdfShyButtonComponent, selector: "pdf-shy-button", inputs: ["primaryToolbarId", "secondaryMenuId", "cssClass", "eventBusName", "l10nId", "l10nLabel", "title", "toggled", "disabled", "order", "action", "closeOnClick", "onlySecondaryMenu", "ariaHasPopup", "ariaControls", "role", "image"] }, { kind: "pipe", type: i4.ResponsiveCSSClassPipe, name: "responsiveCSSClass" }] });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PdfEditorSignatureComponent, decorators: [{
type: Component,
args: [{ selector: 'pdf-editor-signature', template: "<pdf-shy-button\n title=\"Signature\"\n primaryToolbarId=\"primaryEditorSignatureButton\"\n [cssClass]=\"show | responsiveCSSClass : 'hiddenTinyView'\"\n l10nId=\"pdfjs-editor-signature-button\"\n l10nLabel=\"pdfjs-editor-signature-button-label\"\n role=\"radio\"\n ariaHasPopup=\"true\"\n ariaControls=\"editorSignatureParamsToolbar\"\n [order]=\"4000\"\n [action]=\"onClick\"\n [toggled]=\"isSelected\"\n [closeOnClick]=\"true\"\n image=\"<svg width='16' height='16' viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'><path d='M11.618 12.868L11.254 13.25H10.423C10.335 13.396 10.182 13.5 10 13.5H2C1.725 13.5 1.5 13.275 1.5 13V2C1.5 1.725 1.725 1.5 2 1.5H6.939L7 1.561V4.5C7 4.776 7.224 5 7.5 5H10.439L10.5 5.061V6.515L12 5.015V4.75C12 4.551 11.921 4.36 11.78 4.22L7.78 0.22C7.64 0.079 7.449 0 7.25 0H2C0.895 0 0 0.895 0 2V13C0 14.105 0.895 15 2 15H10C11.105 15 12 14.105 12 13V12.486L11.618 12.868Z' fill='black'/><path d='M13.836 4.946C13.962 4.819 14.13 4.75 14.309 4.75C14.487 4.75 14.655 4.819 14.782 4.945L15.805 5.969C15.931 6.094 16 6.262 16 6.441C16 6.621 15.931 6.789 15.805 6.915L14.9397 7.78033L12.9707 5.81134L13.836 4.946Z' fill='black'/><path d='M12.4403 6.34167L8.84 9.942C8.793 9.989 8.767 10.052 8.767 10.119V11.75C8.767 11.888 8.879 12 9.017 12H10.616L10.793 11.927L14.4093 8.31067L12.4403 6.34167Z' fill='black'/><path d='M7.517 9.84799V10.016H7.516V11.517C7.49168 11.4944 7.46584 11.4738 7.44007 11.4532C7.39062 11.4138 7.34148 11.3746 7.304 11.322L7.081 11.009C7.071 10.992 7.037 10.946 6.966 10.957C6.93 10.962 6.882 10.982 6.859 11.046C6.705 11.486 6.492 12.087 5.938 12.087H5.921C5.317 12.07 5.009 11.557 4.745 9.98599L4.382 10.954C4.146 11.585 3.535 12.009 2.861 12.009H2.5V10.759H2.861C3.017 10.759 3.158 10.661 3.213 10.515L3.883 8.72799C4.05 8.28199 4.494 8.01899 4.955 8.07299C5.434 8.12799 5.796 8.48599 5.858 8.96399C5.921 9.43699 5.98 9.80399 6.035 10.085C6.24 9.89099 6.504 9.76099 6.795 9.71999C7.048 9.68399 7.291 9.74599 7.517 9.84799Z' fill='black'/></svg>\">\n</pdf-shy-button>\n" }]
}], ctorParameters: () => [{ type: i1.PDFNotificationService }, { type: i0.ChangeDetectorRef }, { type: i2.FocusManagementService }], propDecorators: { show: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLWVkaXRvci1zaWduYXR1cmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWV4dGVuZGVkLXBkZi12aWV3ZXIvc3JjL2xpYi90b29sYmFyL3BkZi1lZGl0b3Itc2lnbmF0dXJlL3BkZi1lZGl0b3Itc2lnbmF0dXJlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1leHRlbmRlZC1wZGYtdmlld2VyL3NyYy9saWIvdG9vbGJhci9wZGYtZWRpdG9yLXNpZ25hdHVyZS9wZGYtZWRpdG9yLXNpZ25hdHVyZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRzNFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7QUFVeEUsTUFBTSxPQUFPLDJCQUEyQjtJQVVuQjtJQUNUO0lBVEgsSUFBSSxHQUF5QixJQUFJLENBQUM7SUFFbEMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUVsQixvQkFBb0IsQ0FBb0M7SUFFaEUsWUFDRSxtQkFBMkMsRUFDMUIsR0FBc0IsRUFDL0IsZUFBdUM7UUFEOUIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDL0Isb0JBQWUsR0FBZixlQUFlLENBQXdCO1FBRS9DLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixJQUFJLENBQUMsb0JBQW9CLEdBQUcsbUJBQW1CLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNwRSxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtnQkFDN0IsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2FBQ3BCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sV0FBVztRQUNqQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyw2QkFBNkIsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUEwQyxFQUFFLEVBQUU7WUFDekgsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO2dCQUNwQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksS0FBSyxvQkFBb0IsQ0FBQyxTQUFTLENBQUM7Z0JBRTFELG1CQUFtQjtnQkFDbkIsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO29CQUNuQyxxQkFBcUI7b0JBQ3JCLElBQUksQ0FBQyxlQUFlLENBQUMsaUJBQWlCLENBQUMsOEJBQThCLEVBQUUsaUNBQWlDLEVBQUUsOEJBQThCLENBQUMsQ0FBQztpQkFDM0k7cUJBQU0sSUFBSSxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO29CQUMxQyxxQkFBcUI7b0JBQ3JCLElBQUksQ0FBQyxlQUFlLENBQUMscUJBQXFCLENBQUMsaUNBQWlDLENBQUMsQ0FBQztpQkFDL0U7Z0JBRUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMzQixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLE9BQU8sQ0FBQyxLQUFtQjtRQUNoQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsU0FBUyxDQUFDLG9CQUFvQixDQUFDO1FBQzlFLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxRQUFRLENBQUMsUUFBUSxDQUFDLDRCQUE0QixFQUFFO1lBQ3pFLE1BQU0sRUFBRSxJQUFJO1lBQ1osSUFBSSxFQUFFLFdBQVcsS0FBSyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsU0FBUztZQUNqSCxjQUFjLEVBQUUsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDO1NBQ25DLENBQUMsQ0FBQztRQUNILE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1FBQ3BELGtCQUFrQixDQUFDLDJCQUEyQixDQUFDLDhCQUE4QixFQUFFLDhCQUE4QixDQUFDLENBQUM7SUFDakgsQ0FBQzt3R0FsRFUsMkJBQTJCOzRGQUEzQiwyQkFBMkIsc0ZDZHhDLG1nRUFlQTs7NEZERGEsMkJBQTJCO2tCQUx2QyxTQUFTOytCQUNFLHNCQUFzQjtnS0FNekIsSUFBSTtzQkFEVixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgZWZmZWN0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUG9zaXRpb25pbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZHluYW1pYy1jc3MvcG9zaXRpb25pbmcuc2VydmljZSc7XG5pbXBvcnQgeyBBbm5vdGF0aW9uRWRpdG9yRWRpdG9yTW9kZUNoYW5nZWRFdmVudCB9IGZyb20gJy4uLy4uL2V2ZW50cy9hbm5vdGF0aW9uLWVkaXRvci1tb2RlLWNoYW5nZWQtZXZlbnQnO1xuaW1wb3J0IHsgRm9jdXNNYW5hZ2VtZW50U2VydmljZSB9IGZyb20gJy4uLy4uL2ZvY3VzLW1hbmFnZW1lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBBbm5vdGF0aW9uRWRpdG9yVHlwZSB9IGZyb20gJy4uLy4uL29wdGlvbnMvZWRpdG9yLWFubm90YXRpb25zJztcbmltcG9ydCB7IElQREZWaWV3ZXJBcHBsaWNhdGlvbiB9IGZyb20gJy4uLy4uL29wdGlvbnMvcGRmLXZpZXdlci1hcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBQREZOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcGRmLW5vdGlmaWNhdGlvbi1zZXJ2aWNlJztcbmltcG9ydCB7IFJlc3BvbnNpdmVWaXNpYmlsaXR5IH0gZnJvbSAnLi4vLi4vcmVzcG9uc2l2ZS12aXNpYmlsaXR5JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRmLWVkaXRvci1zaWduYXR1cmUnLFxuICB0ZW1wbGF0ZVVybDogJy4vcGRmLWVkaXRvci1zaWduYXR1cmUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vcGRmLWVkaXRvci1zaWduYXR1cmUuY29tcG9uZW50LmNzcycsXG59KVxuZXhwb3J0IGNsYXNzIFBkZkVkaXRvclNpZ25hdHVyZUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaG93OiBSZXNwb25zaXZlVmlzaWJpbGl0eSA9IHRydWU7XG5cbiAgcHVibGljIGlzU2VsZWN0ZWQgPSBmYWxzZTtcblxuICBwcml2YXRlIFBERlZpZXdlckFwcGxpY2F0aW9uOiBJUERGVmlld2VyQXBwbGljYXRpb24gfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgbm90aWZpY2F0aW9uU2VydmljZTogUERGTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBmb2N1c01hbmFnZW1lbnQ6IEZvY3VzTWFuYWdlbWVudFNlcnZpY2UsXG4gICkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICB0aGlzLlBERlZpZXdlckFwcGxpY2F0aW9uID0gbm90aWZpY2F0aW9uU2VydmljZS5vblBERkpTSW5pdFNpZ25hbCgpO1xuICAgICAgaWYgKHRoaXMuUERGVmlld2VyQXBwbGljYXRpb24pIHtcbiAgICAgICAgdGhpcy5vblBkZkpzSW5pdCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvblBkZkpzSW5pdCgpIHtcbiAgICB0aGlzLlBERlZpZXdlckFwcGxpY2F0aW9uPy5ldmVudEJ1cy5vbignYW5ub3RhdGlvbmVkaXRvcm1vZGVjaGFuZ2VkJywgKHsgbW9kZSB9OiBBbm5vdGF0aW9uRWRpdG9yRWRpdG9yTW9kZUNoYW5nZWRFdmVudCkgPT4ge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHdhc1NlbGVjdGVkID0gdGhpcy5pc1NlbGVjdGVkO1xuICAgICAgICB0aGlzLmlzU2VsZWN0ZWQgPSBtb2RlID09PSBBbm5vdGF0aW9uRWRpdG9yVHlwZS5TSUdOQVRVUkU7XG5cbiAgICAgICAgLy8gRm9jdXMgbWFuYWdlbWVudFxuICAgICAgICBpZiAoIXdhc1NlbGVjdGVkICYmIHRoaXMuaXNTZWxlY3RlZCkge1xuICAgICAgICAgIC8vIERpYWxvZyBqdXN0IG9wZW5lZFxuICAgICAgICAgIHRoaXMuZm9jdXNNYW5hZ2VtZW50Lm1vdmVGb2N1c1RvRGlhbG9nKCdlZGl0b3JTaWduYXR1cmVQYXJhbXNUb29sYmFyJywgJ1NpZ25hdHVyZSBlZGl0b3IgdG9vbGJhciBvcGVuZWQnLCAncHJpbWFyeUVkaXRvclNpZ25hdHVyZUJ1dHRvbicpO1xuICAgICAgICB9IGVsc2UgaWYgKHdhc1NlbGVjdGVkICYmICF0aGlzLmlzU2VsZWN0ZWQpIHtcbiAgICAgICAgICAvLyBEaWFsb2cganVzdCBjbG9zZWRcbiAgICAgICAgICB0aGlzLmZvY3VzTWFuYWdlbWVudC5yZXR1cm5Gb2N1c1RvUHJldmlvdXMoJ1NpZ25hdHVyZSBlZGl0b3IgdG9vbGJhciBjbG9zZWQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uQ2xpY2soZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRNb2RlID0gdGhpcy5QREZWaWV3ZXJBcHBsaWNhdGlvbj8ucGRmVmlld2VyLmFubm90YXRpb25FZGl0b3JNb2RlO1xuICAgIHRoaXMuUERGVmlld2VyQXBwbGljYXRpb24/LmV2ZW50QnVzLmRpc3BhdGNoKCdzd2l0Y2hhbm5vdGF0aW9uZWRpdG9ybW9kZScsIHtcbiAgICAgIHNvdXJjZTogdGhpcyxcbiAgICAgIG1vZGU6IGN1cnJlbnRNb2RlID09PSBBbm5vdGF0aW9uRWRpdG9yVHlwZS5TSUdOQVRVUkUgPyBBbm5vdGF0aW9uRWRpdG9yVHlwZS5OT05FIDogQW5ub3RhdGlvbkVkaXRvclR5cGUuU0lHTkFUVVJFLFxuICAgICAgaXNGcm9tS2V5Ym9hcmQ6IGV2ZW50LmRldGFpbCA9PT0gMCxcbiAgICB9KTtcbiAgICBjb25zdCBwb3NpdGlvbmluZ1NlcnZpY2UgPSBuZXcgUG9zaXRpb25pbmdTZXJ2aWNlKCk7XG4gICAgcG9zaXRpb25pbmdTZXJ2aWNlLnBvc2l0aW9uUG9wdXBCZWxvd0l0c0J1dHRvbigncHJpbWFyeUVkaXRvclNpZ25hdHVyZUJ1dHRvbicsICdlZGl0b3JTaWduYXR1cmVQYXJhbXNUb29sYmFyJyk7XG4gIH1cbn1cbiIsIjxwZGYtc2h5LWJ1dHRvblxuICB0aXRsZT1cIlNpZ25hdHVyZVwiXG4gIHByaW1hcnlUb29sYmFySWQ9XCJwcmltYXJ5RWRpdG9yU2lnbmF0dXJlQnV0dG9uXCJcbiAgW2Nzc0NsYXNzXT1cInNob3cgfCByZXNwb25zaXZlQ1NTQ2xhc3MgOiAnaGlkZGVuVGlueVZpZXcnXCJcbiAgbDEwbklkPVwicGRmanMtZWRpdG9yLXNpZ25hdHVyZS1idXR0b25cIlxuICBsMTBuTGFiZWw9XCJwZGZqcy1lZGl0b3Itc2lnbmF0dXJlLWJ1dHRvbi1sYWJlbFwiXG4gIHJvbGU9XCJyYWRpb1wiXG4gIGFyaWFIYXNQb3B1cD1cInRydWVcIlxuICBhcmlhQ29udHJvbHM9XCJlZGl0b3JTaWduYXR1cmVQYXJhbXNUb29sYmFyXCJcbiAgW29yZGVyXT1cIjQwMDBcIlxuICBbYWN0aW9uXT1cIm9uQ2xpY2tcIlxuICBbdG9nZ2xlZF09XCJpc1NlbGVjdGVkXCJcbiAgW2Nsb3NlT25DbGlja109XCJ0cnVlXCJcbiAgaW1hZ2U9XCI8c3ZnIHdpZHRoPScxNicgaGVpZ2h0PScxNicgdmlld0JveD0nMCAwIDE2IDE2JyBmaWxsPSdub25lJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnPjxwYXRoIGQ9J00xMS42MTggMTIuODY4TDExLjI1NCAxMy4yNUgxMC40MjNDMTAuMzM1IDEzLjM5NiAxMC4xODIgMTMuNSAxMCAxMy41SDJDMS43MjUgMTMuNSAxLjUgMTMuMjc1IDEuNSAxM1YyQzEuNSAxLjcyNSAxLjcyNSAxLjUgMiAxLjVINi45MzlMNyAxLjU2MVY0LjVDNyA0Ljc3NiA3LjIyNCA1IDcuNSA1SDEwLjQzOUwxMC41IDUuMDYxVjYuNTE1TDEyIDUuMDE1VjQuNzVDMTIgNC41NTEgMTEuOTIxIDQuMzYgMTEuNzggNC4yMkw3Ljc4IDAuMjJDNy42NCAwLjA3OSA3LjQ0OSAwIDcuMjUgMEgyQzAuODk1IDAgMCAwLjg5NSAwIDJWMTNDMCAxNC4xMDUgMC44OTUgMTUgMiAxNUgxMEMxMS4xMDUgMTUgMTIgMTQuMTA1IDEyIDEzVjEyLjQ4NkwxMS42MTggMTIuODY4WicgZmlsbD0nYmxhY2snLz48cGF0aCBkPSdNMTMuODM2IDQuOTQ2QzEzLjk2MiA0LjgxOSAxNC4xMyA0Ljc1IDE0LjMwOSA0Ljc1QzE0LjQ4NyA0Ljc1IDE0LjY1NSA0LjgxOSAxNC43ODIgNC45NDVMMTUuODA1IDUuOTY5QzE1LjkzMSA2LjA5NCAxNiA2LjI2MiAxNiA2LjQ0MUMxNiA2LjYyMSAxNS45MzEgNi43ODkgMTUuODA1IDYuOTE1TDE0LjkzOTcgNy43ODAzM0wxMi45NzA3IDUuODExMzRMMTMuODM2IDQuOTQ2WicgZmlsbD0nYmxhY2snLz48cGF0aCBkPSdNMTIuNDQwMyA2LjM0MTY3TDguODQgOS45NDJDOC43OTMgOS45ODkgOC43NjcgMTAuMDUyIDguNzY3IDEwLjExOVYxMS43NUM4Ljc2NyAxMS44ODggOC44NzkgMTIgOS4wMTcgMTJIMTAuNjE2TDEwLjc5MyAxMS45MjdMMTQuNDA5MyA4LjMxMDY3TDEyLjQ0MDMgNi4zNDE2N1onIGZpbGw9J2JsYWNrJy8+PHBhdGggZD0nTTcuNTE3IDkuODQ3OTlWMTAuMDE2SDcuNTE2VjExLjUxN0M3LjQ5MTY4IDExLjQ5NDQgNy40NjU4NCAxMS40NzM4IDcuNDQwMDcgMTEuNDUzMkM3LjM5MDYyIDExLjQxMzggNy4zNDE0OCAxMS4zNzQ2IDcuMzA0IDExLjMyMkw3LjA4MSAxMS4wMDlDNy4wNzEgMTAuOTkyIDcuMDM3IDEwLjk0NiA2Ljk2NiAxMC45NTdDNi45MyAxMC45NjIgNi44ODIgMTAuOTgyIDYuODU5IDExLjA0NkM2LjcwNSAxMS40ODYgNi40OTIgMTIuMDg3IDUuOTM4IDEyLjA4N0g1LjkyMUM1LjMxNyAxMi4wNyA1LjAwOSAxMS41NTcgNC43NDUgOS45ODU5OUw0LjM4MiAxMC45NTRDNC4xNDYgMTEuNTg1IDMuNTM1IDEyLjAwOSAyLjg2MSAxMi4wMDlIMi41VjEwLjc1OUgyLjg2MUMzLjAxNyAxMC43NTkgMy4xNTggMTAuNjYxIDMuMjEzIDEwLjUxNUwzLjg4MyA4LjcyNzk5QzQuMDUgOC4yODE5OSA0LjQ5NCA4LjAxODk5IDQuOTU1IDguMDcyOTlDNS40MzQgOC4xMjc5OSA1Ljc5NiA4LjQ4NTk5IDUuODU4IDguOTYzOTlDNS45MjEgOS40MzY5OSA1Ljk4IDkuODAzOTkgNi4wMzUgMTAuMDg1QzYuMjQgOS44OTA5OSA2LjUwNCA5Ljc2MDk5IDYuNzk1IDkuNzE5OTlDNy4wNDggOS42ODM5OSA3LjI5MSA5Ljc0NTk5IDcuNTE3IDkuODQ3OTlaJyBmaWxsPSdibGFjaycvPjwvc3ZnPlwiPlxuPC9wZGYtc2h5LWJ1dHRvbj5cbiJdfQ==