ng2-pdf-viewer
Version:
Angular 5+ component for rendering PDF
147 lines • 22.3 kB
JavaScript
import { fromEvent } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
// interface EventBus {
// on(eventName: string, listener: Function): void;
// off(eventName: string, listener: Function): void;
// _listeners: any;
// dispatch(eventName: string, data: Object): void;
// _on(eventName: any, listener: any, options?: null): void;
// _off(eventName: any, listener: any, options?: null): void;
// }
export function createEventBus(pdfJsViewer, destroy$) {
const globalEventBus = new pdfJsViewer.EventBus();
attachDOMEventsToEventBus(globalEventBus, destroy$);
return globalEventBus;
}
function attachDOMEventsToEventBus(eventBus, destroy$) {
fromEvent(eventBus, 'documentload')
.pipe(takeUntil(destroy$))
.subscribe(() => {
const event = document.createEvent('CustomEvent');
event.initCustomEvent('documentload', true, true, {});
window.dispatchEvent(event);
});
fromEvent(eventBus, 'pagerendered')
.pipe(takeUntil(destroy$))
.subscribe(({ pageNumber, cssTransform, source }) => {
const event = document.createEvent('CustomEvent');
event.initCustomEvent('pagerendered', true, true, {
pageNumber,
cssTransform,
});
source.div.dispatchEvent(event);
});
fromEvent(eventBus, 'textlayerrendered')
.pipe(takeUntil(destroy$))
.subscribe(({ pageNumber, source }) => {
const event = document.createEvent('CustomEvent');
event.initCustomEvent('textlayerrendered', true, true, { pageNumber });
source.textLayerDiv?.dispatchEvent(event);
});
fromEvent(eventBus, 'pagechanging')
.pipe(takeUntil(destroy$))
.subscribe(({ pageNumber, source }) => {
const event = document.createEvent('UIEvents');
event.initEvent('pagechanging', true, true);
/* tslint:disable:no-string-literal */
event['pageNumber'] = pageNumber;
source.container.dispatchEvent(event);
});
fromEvent(eventBus, 'pagesinit')
.pipe(takeUntil(destroy$))
.subscribe(({ source }) => {
const event = document.createEvent('CustomEvent');
event.initCustomEvent('pagesinit', true, true, null);
source.container.dispatchEvent(event);
});
fromEvent(eventBus, 'pagesloaded')
.pipe(takeUntil(destroy$))
.subscribe(({ pagesCount, source }) => {
const event = document.createEvent('CustomEvent');
event.initCustomEvent('pagesloaded', true, true, { pagesCount });
source.container.dispatchEvent(event);
});
fromEvent(eventBus, 'scalechange')
.pipe(takeUntil(destroy$))
.subscribe(({ scale, presetValue, source }) => {
const event = document.createEvent('UIEvents');
event.initEvent('scalechange', true, true);
/* tslint:disable:no-string-literal */
event['scale'] = scale;
/* tslint:disable:no-string-literal */
event['presetValue'] = presetValue;
source.container.dispatchEvent(event);
});
fromEvent(eventBus, 'updateviewarea')
.pipe(takeUntil(destroy$))
.subscribe(({ location, source }) => {
const event = document.createEvent('UIEvents');
event.initEvent('updateviewarea', true, true);
event['location'] = location;
source.container.dispatchEvent(event);
});
fromEvent(eventBus, 'find')
.pipe(takeUntil(destroy$))
.subscribe(({ source, type, query, phraseSearch, caseSensitive, highlightAll, findPrevious, }) => {
if (source === window) {
return; // event comes from FirefoxCom, no need to replicate
}
const event = document.createEvent('CustomEvent');
event.initCustomEvent('find' + type, true, true, {
query,
phraseSearch,
caseSensitive,
highlightAll,
findPrevious,
});
window.dispatchEvent(event);
});
fromEvent(eventBus, 'attachmentsloaded')
.pipe(takeUntil(destroy$))
.subscribe(({ attachmentsCount, source }) => {
const event = document.createEvent('CustomEvent');
event.initCustomEvent('attachmentsloaded', true, true, {
attachmentsCount,
});
source.container.dispatchEvent(event);
});
fromEvent(eventBus, 'sidebarviewchanged')
.pipe(takeUntil(destroy$))
.subscribe(({ view, source }) => {
const event = document.createEvent('CustomEvent');
event.initCustomEvent('sidebarviewchanged', true, true, { view });
source.outerContainer.dispatchEvent(event);
});
fromEvent(eventBus, 'pagemode')
.pipe(takeUntil(destroy$))
.subscribe(({ mode, source }) => {
const event = document.createEvent('CustomEvent');
event.initCustomEvent('pagemode', true, true, { mode });
source.pdfViewer.container.dispatchEvent(event);
});
fromEvent(eventBus, 'namedaction')
.pipe(takeUntil(destroy$))
.subscribe(({ action, source }) => {
const event = document.createEvent('CustomEvent');
event.initCustomEvent('namedaction', true, true, { action });
source.pdfViewer.container.dispatchEvent(event);
});
fromEvent(eventBus, 'presentationmodechanged')
.pipe(takeUntil(destroy$))
.subscribe(({ active, switchInProgress }) => {
const event = document.createEvent('CustomEvent');
event.initCustomEvent('presentationmodechanged', true, true, {
active,
switchInProgress,
});
window.dispatchEvent(event);
});
fromEvent(eventBus, 'outlineloaded')
.pipe(takeUntil(destroy$))
.subscribe(({ outlineCount, source }) => {
const event = document.createEvent('CustomEvent');
event.initCustomEvent('outlineloaded', true, true, { outlineCount });
source.container.dispatchEvent(event);
});
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtYnVzLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC91dGlscy9ldmVudC1idXMtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVyxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJM0MsdUJBQXVCO0FBQ3ZCLHFEQUFxRDtBQUNyRCxzREFBc0Q7QUFDdEQscUJBQXFCO0FBQ3JCLHFEQUFxRDtBQUNyRCw4REFBOEQ7QUFDOUQsK0RBQStEO0FBQy9ELElBQUk7QUFFSixNQUFNLFVBQVUsY0FBYyxDQUFDLFdBQWdCLEVBQUUsUUFBdUI7SUFDdEUsTUFBTSxjQUFjLEdBQWEsSUFBSSxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUQseUJBQXlCLENBQUMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3BELE9BQU8sY0FBYyxDQUFDO0FBQ3hCLENBQUM7QUFFRCxTQUFTLHlCQUF5QixDQUNoQyxRQUFrQixFQUNsQixRQUF1QjtJQUV2QixTQUFTLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQztTQUNoQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3pCLFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDZCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2xELEtBQUssQ0FBQyxlQUFlLENBQUMsY0FBYyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdEQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDLENBQUMsQ0FBQztJQUVMLFNBQVMsQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDO1NBQ2hDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENB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L0MsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNsRCxLQUFLLENBQUMsZUFBZSxDQUFDLHlCQUF5QixFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7WUFDM0QsTUFBTTtZQUNOLGdCQUFnQjtTQUNqQixDQUFDLENBQUM7UUFDSCxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUMsQ0FBQyxDQUFDO0lBRUwsU0FBUyxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUM7U0FDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN6QixTQUFTLENBQUMsQ0FBQyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQU8sRUFBRSxFQUFFO1FBQzNDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDbEQsS0FBSyxDQUFDLGVBQWUsQ0FBQyxlQUFlLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDckUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZnJvbUV2ZW50LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB0eXBlIHsgRXZlbnRCdXMgfSBmcm9tICdwZGZqcy1kaXN0L3dlYi9wZGZfdmlld2VyLm1qcyc7XG5cbi8vIGludGVyZmFjZSBFdmVudEJ1cyB7XG4vLyAgIG9uKGV2ZW50TmFtZTogc3RyaW5nLCBsaXN0ZW5lcjogRnVuY3Rpb24pOiB2b2lkO1xuLy8gICBvZmYoZXZlbnROYW1lOiBzdHJpbmcsIGxpc3RlbmVyOiBGdW5jdGlvbik6IHZvaWQ7XG4vLyAgIF9saXN0ZW5lcnM6IGFueTtcbi8vICAgZGlzcGF0Y2goZXZlbnROYW1lOiBzdHJpbmcsIGRhdGE6IE9iamVjdCk6IHZvaWQ7XG4vLyAgIF9vbihldmVudE5hbWU6IGFueSwgbGlzdGVuZXI6IGFueSwgb3B0aW9ucz86IG51bGwpOiB2b2lkO1xuLy8gICBfb2ZmKGV2ZW50TmFtZTogYW55LCBsaXN0ZW5lcjogYW55LCBvcHRpb25zPzogbnVsbCk6IHZvaWQ7XG4vLyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFdmVudEJ1cyhwZGZKc1ZpZXdlcjogYW55LCBkZXN0cm95JDogU3ViamVjdDx2b2lkPikge1xuICBjb25zdCBnbG9iYWxFdmVudEJ1czogRXZlbnRCdXMgPSBuZXcgcGRmSnNWaWV3ZXIuRXZlbnRCdXMoKTtcbiAgYXR0YWNoRE9NRXZlbnRzVG9FdmVudEJ1cyhnbG9iYWxFdmVudEJ1cywgZGVzdHJveSQpO1xuICByZXR1cm4gZ2xvYmFsRXZlbnRCdXM7XG59XG5cbmZ1bmN0aW9uIGF0dGFjaERPTUV2ZW50c1RvRXZlbnRCdXMoXG4gIGV2ZW50QnVzOiBFdmVudEJ1cyxcbiAgZGVzdHJveSQ6IFN1YmplY3Q8dm9pZD5cbik6IHZvaWQge1xuICBmcm9tRXZlbnQoZXZlbnRCdXMsICdkb2N1bWVudGxvYWQnKVxuICAgIC5waXBlKHRha2VVbnRpbChkZXN0cm95JCkpXG4gICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBjb25zdCBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdDdXN0b21FdmVudCcpO1xuICAgICAgZXZlbnQuaW5pdEN1c3RvbUV2ZW50KCdkb2N1bWVudGxvYWQnLCB0cnVlLCB0cnVlLCB7fSk7XG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgfSk7XG5cbiAgZnJvbUV2ZW50KGV2ZW50QnVzLCAncGFnZXJlbmRlcmVkJylcbiAgICAucGlwZSh0YWtlVW50aWwoZGVzdHJveSQpKVxuICAgIC5zdWJzY3JpYmUoKHsgcGFnZU51bWJlciwgY3NzVHJhbnNmb3JtLCBzb3VyY2UgfTogYW55KSA9PiB7XG4gICAgICBjb25zdCBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdDdXN0b21FdmVudCcpO1xuICAgICAgZXZlbnQuaW5pdEN1c3RvbUV2ZW50KCdwYWdlcmVuZGVyZWQnLCB0cnVlLCB0cnVlLCB7XG4gICAgICAgIHBhZ2VOdW1iZXIsXG4gICAgICAgIGNzc1RyYW5zZm9ybSxcbiAgICAgIH0pO1xuICAgICAgc291cmNlLmRpdi5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgICB9KTtcblxuICBmcm9tRXZlbnQoZXZlbnRCdXMsICd0ZXh0bGF5ZXJyZW5kZXJlZCcpXG4gICAgLnBpcGUodGFrZVVudGlsKGRlc3Ryb3kkKSlcbiAgICAuc3Vic2NyaWJlKCh7IHBhZ2VOdW1iZXIsIHNvdXJjZSB9OiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0N1c3RvbUV2ZW50Jyk7XG4gICAgICBldmVudC5pbml0Q3VzdG9tRXZlbnQoJ3RleHRsYXllcnJlbmRlcmVkJywgdHJ1ZSwgdHJ1ZSwgeyBwYWdlTnVtYmVyIH0pO1xuICAgICAgc291cmNlLnRleHRMYXllckRpdj8uZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgfSk7XG5cbiAgZnJvbUV2ZW50KGV2ZW50QnVzLCAncGFnZWNoYW5naW5nJylcbiAgICAucGlwZSh0YWtlVW50aWwoZGVzdHJveSQpKVxuICAgIC5zdWJzY3JpYmUoKHsgcGFnZU51bWJlciwgc291cmNlIH06IGFueSkgPT4ge1xuICAgICAgY29uc3QgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnVUlFdmVudHMnKSBhcyBhbnk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ3BhZ2VjaGFuZ2luZycsIHRydWUsIHRydWUpO1xuICAgICAgLyogdHNsaW50OmRpc2FibGU6bm8tc3RyaW5nLWxpdGVyYWwgKi9cbiAgICAgIGV2ZW50WydwYWdlTnVtYmVyJ10gPSBwYWdlTnVtYmVyO1xuICAgICAgc291cmNlLmNvbnRhaW5lci5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgICB9KTtcblxuICBmcm9tRXZlbnQoZXZlbnRCdXMsICdwYWdlc2luaXQnKVxuICAgIC5waXBlKHRha2VVbnRpbChkZXN0cm95JCkpXG4gICAgLnN1YnNjcmliZSgoeyBzb3VyY2UgfTogYW55KSA9PiB7XG4gICAgICBjb25zdCBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdDdXN0b21FdmVudCcpO1xuICAgICAgZXZlbnQuaW5pdEN1c3RvbUV2ZW50KCdwYWdlc2luaXQnLCB0cnVlLCB0cnVlLCBudWxsKTtcbiAgICAgIHNvdXJjZS5jb250YWluZXIuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgfSk7XG5cbiAgZnJvbUV2ZW50KGV2ZW50QnVzLCAncGFnZXNsb2FkZWQnKVxuICAgIC5waXBlKHRha2VVbnRpbChkZXN0cm95JCkpXG4gICAgLnN1YnNjcmliZSgoeyBwYWdlc0NvdW50LCBzb3VyY2UgfTogYW55KSA9PiB7XG4gICAgICBjb25zdCBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdDdXN0b21FdmVudCcpO1xuICAgICAgZXZlbnQuaW5pdEN1c3RvbUV2ZW50KCdwYWdlc2xvYWRlZCcsIHRydWUsIHRydWUsIHsgcGFnZXNDb3VudCB9KTtcbiAgICAgIHNvdXJjZS5jb250YWluZXIuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgfSk7XG5cbiAgZnJvbUV2ZW50KGV2ZW50QnVzLCAnc2NhbGVjaGFuZ2UnKVxuICAgIC5waXBlKHRha2VVbnRpbChkZXN0cm95JCkpXG4gICAgLnN1YnNjcmliZSgoeyBzY2FsZSwgcHJlc2V0VmFsdWUsIHNvdXJjZSB9OiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ1VJRXZlbnRzJykgYXMgYW55O1xuICAgICAgZXZlbnQuaW5pdEV2ZW50KCdzY2FsZWNoYW5nZScsIHRydWUsIHRydWUpO1xuICAgICAgLyogdHNsaW50OmRpc2FibGU6bm8tc3RyaW5nLWxpdGVyYWwgKi9cbiAgICAgIGV2ZW50WydzY2FsZSddID0gc2NhbGU7XG4gICAgICAvKiB0c2xpbnQ6ZGlzYWJsZTpuby1zdHJpbmctbGl0ZXJhbCAqL1xuICAgICAgZXZlbnRbJ3ByZXNldFZhbHVlJ10gPSBwcmVzZXRWYWx1ZTtcbiAgICAgIHNvdXJjZS5jb250YWluZXIuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgfSk7XG5cbiAgZnJvbUV2ZW50KGV2ZW50QnVzLCAndXBkYXRldmlld2FyZWEnKVxuICAgIC5waXBlKHRha2VVbnRpbChkZXN0cm95JCkpXG4gICAgLnN1YnNjcmliZSgoeyBsb2NhdGlvbiwgc291cmNlIH06IGFueSkgPT4ge1xuICAgICAgY29uc3QgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnVUlFdmVudHMnKSBhcyBhbnk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ3VwZGF0ZXZpZXdhcmVhJywgdHJ1ZSwgdHJ1ZSk7XG4gICAgICBldmVudFsnbG9jYXRpb24nXSA9IGxvY2F0aW9uO1xuICAgICAgc291cmNlLmNvbnRhaW5lci5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgICB9KTtcblxuICBmcm9tRXZlbnQoZXZlbnRCdXMsICdmaW5kJylcbiAgICAucGlwZSh0YWtlVW50aWwoZGVzdHJveSQpKVxuICAgIC5zdWJzY3JpYmUoXG4gICAgICAoe1xuICAgICAgICBzb3VyY2UsXG4gICAgICAgIHR5cGUsXG4gICAgICAgIHF1ZXJ5LFxuICAgICAgICBwaHJhc2VTZWFyY2gsXG4gICAgICAgIGNhc2VTZW5zaXRpdmUsXG4gICAgICAgIGhpZ2hsaWdodEFsbCxcbiAgICAgICAgZmluZFByZXZpb3VzLFxuICAgICAgfTogYW55KSA9PiB7XG4gICAgICAgIGlmIChzb3VyY2UgPT09IHdpbmRvdykge1xuICAgICAgICAgIHJldHVybjsgLy8gZXZlbnQgY29tZXMgZnJvbSBGaXJlZm94Q29tLCBubyBuZWVkIHRvIHJlcGxpY2F0ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0N1c3RvbUV2ZW50Jyk7XG4gICAgICAgIGV2ZW50LmluaXRDdXN0b21FdmVudCgnZmluZCcgKyB0eXBlLCB0cnVlLCB0cnVlLCB7XG4gICAgICAgICAgcXVlcnksXG4gICAgICAgICAgcGhyYXNlU2VhcmNoLFxuICAgICAgICAgIGNhc2VTZW5zaXRpdmUsXG4gICAgICAgICAgaGlnaGxpZ2h0QWxsLFxuICAgICAgICAgIGZpbmRQcmV2aW91cyxcbiAgICAgICAgfSk7XG4gICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgICAgIH1cbiAgICApO1xuXG4gIGZyb21FdmVudChldmVudEJ1cywgJ2F0dGFjaG1lbnRzbG9hZGVkJylcbiAgICAucGlwZSh0YWtlVW50aWwoZGVzdHJveSQpKVxuICAgIC5zdWJzY3JpYmUoKHsgYXR0YWNobWVudHNDb3VudCwgc291cmNlIH06IGFueSkgPT4ge1xuICAgICAgY29uc3QgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnQ3VzdG9tRXZlbnQnKTtcbiAgICAgIGV2ZW50LmluaXRDdXN0b21FdmVudCgnYXR0YWNobWVudHNsb2FkZWQnLCB0cnVlLCB0cnVlLCB7XG4gICAgICAgIGF0dGFjaG1lbnRzQ291bnQsXG4gICAgICB9KTtcbiAgICAgIHNvdXJjZS5jb250YWluZXIuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgfSk7XG5cbiAgZnJvbUV2ZW50KGV2ZW50QnVzLCAnc2lkZWJhcnZpZXdjaGFuZ2VkJylcbiAgICAucGlwZSh0YWtlVW50aWwoZGVzdHJveSQpKVxuICAgIC5zdWJzY3JpYmUoKHsgdmlldywgc291cmNlIH06IGFueSkgPT4ge1xuICAgICAgY29uc3QgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnQ3VzdG9tRXZlbnQnKTtcbiAgICAgIGV2ZW50LmluaXRDdXN0b21FdmVudCgnc2lkZWJhcnZpZXdjaGFuZ2VkJywgdHJ1ZSwgdHJ1ZSwgeyB2aWV3IH0pO1xuICAgICAgc291cmNlLm91dGVyQ29udGFpbmVyLmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICAgIH0pO1xuXG4gIGZyb21FdmVudChldmVudEJ1cywgJ3BhZ2Vtb2RlJylcbiAgICAucGlwZSh0YWtlVW50aWwoZGVzdHJveSQpKVxuICAgIC5zdWJzY3JpYmUoKHsgbW9kZSwgc291cmNlIH06IGFueSkgPT4ge1xuICAgICAgY29uc3QgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnQ3VzdG9tRXZlbnQnKTtcbiAgICAgIGV2ZW50LmluaXRDdXN0b21FdmVudCgncGFnZW1vZGUnLCB0cnVlLCB0cnVlLCB7IG1vZGUgfSk7XG4gICAgICBzb3VyY2UucGRmVmlld2VyLmNvbnRhaW5lci5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgICB9KTtcblxuICBmcm9tRXZlbnQoZXZlbnRCdXMsICduYW1lZGFjdGlvbicpXG4gICAgLnBpcGUodGFrZVVudGlsKGRlc3Ryb3kkKSlcbiAgICAuc3Vic2NyaWJlKCh7IGFjdGlvbiwgc291cmNlIH06IGFueSkgPT4ge1xuICAgICAgY29uc3QgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnQ3VzdG9tRXZlbnQnKTtcbiAgICAgIGV2ZW50LmluaXRDdXN0b21FdmVudCgnbmFtZWRhY3Rpb24nLCB0cnVlLCB0cnVlLCB7IGFjdGlvbiB9KTtcbiAgICAgIHNvdXJjZS5wZGZWaWV3ZXIuY29udGFpbmVyLmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICAgIH0pO1xuXG4gIGZyb21FdmVudChldmVudEJ1cywgJ3ByZXNlbnRhdGlvbm1vZGVjaGFuZ2VkJylcbiAgICAucGlwZSh0YWtlVW50aWwoZGVzdHJveSQpKVxuICAgIC5zdWJzY3JpYmUoKHsgYWN0aXZlLCBzd2l0Y2hJblByb2dyZXNzIH06IGFueSkgPT4ge1xuICAgICAgY29uc3QgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnQ3VzdG9tRXZlbnQnKTtcbiAgICAgIGV2ZW50LmluaXRDdXN0b21FdmVudCgncHJlc2VudGF0aW9ubW9kZWNoYW5nZWQnLCB0cnVlLCB0cnVlLCB7XG4gICAgICAgIGFjdGl2ZSxcbiAgICAgICAgc3dpdGNoSW5Qcm9ncmVzcyxcbiAgICAgIH0pO1xuICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICAgIH0pO1xuXG4gIGZyb21FdmVudChldmVudEJ1cywgJ291dGxpbmVsb2FkZWQnKVxuICAgIC5waXBlKHRha2VVbnRpbChkZXN0cm95JCkpXG4gICAgLnN1YnNjcmliZSgoeyBvdXRsaW5lQ291bnQsIHNvdXJjZSB9OiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0N1c3RvbUV2ZW50Jyk7XG4gICAgICBldmVudC5pbml0Q3VzdG9tRXZlbnQoJ291dGxpbmVsb2FkZWQnLCB0cnVlLCB0cnVlLCB7IG91dGxpbmVDb3VudCB9KTtcbiAgICAgIHNvdXJjZS5jb250YWluZXIuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgfSk7XG59XG4iXX0=