UNPKG

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.

201 lines (186 loc) 14.6 kB
import { DOCUMENT } from '@angular/common'; import { Component, Inject, Input } from '@angular/core'; import * as i0 from "@angular/core"; export class DynamicCssComponent { constructor(renderer, document) { this.renderer = renderer; this.document = document; this.zoom = 1.0; this.width = 100; this.xs = 490; this.sm = 560; this.md = 610; this.lg = 660; this.xl = 740; this.xxl = 830; } get style() { return ` @media all and (max-width: ${this.xl}px) { #toolbarViewerMiddle { display: table; margin: auto; left: auto; position: inherit; transform: none; } } @media all and (max-width: 840px) { #sidebarContent { background-color: rgba(0, 0, 0, 0.7); } html[dir='ltr'] #outerContainer.sidebarOpen #viewerContainer { left: 0px !important; } html[dir='rtl'] #outerContainer.sidebarOpen #viewerContainer { right: 0px !important; } #outerContainer .hiddenLargeView, #outerContainer .hiddenMediumView { display: inherit; } #outerContainer .visibleLargeView, #outerContainer .visibleMediumView { display: none; } } @media all and (max-width: ${this.lg}px) { .toolbarButtonSpacer { width: 15px; } #outerContainer .hiddenLargeView { display: none; } #outerContainer .visibleLargeView { display: inherit; } } @media all and (max-width: ${this.md}px) { .toolbarButtonSpacer { display: none; } #outerContainer .hiddenMediumView { display: none; } #outerContainer .visibleMediumView { display: inherit; } } @media all and (max-width: ${this.sm}px) { #outerContainer .hiddenSmallView, #outerContainer .hiddenSmallView * { display: none; } #outerContainer .visibleSmallView { display: inherit; } .toolbarButtonSpacer { width: 0; } html[dir='ltr'] .findbar { left: 38px; } html[dir='rtl'] .findbar { right: 38px; } } @media all and (max-width: ${this.xs}px) { #scaleSelectContainer { display: none; } } #outerContainer .visibleXLView, #outerContainer .visibleXXLView, #outerContainer .visibleTinyView { display: none; } #outerContainer .hiddenXLView, #outerContainer .hiddenXXLView { display: unset; } @media all and (max-width: ${this.xl}px) { #outerContainer .hiddenXLView { display: none; } #outerContainer .visibleXLView { display: inherit; } #toolbarViewerMiddle { -webkit-transform: translateX(-36%); transform: translateX(-36%); display: unset; margin: unset; left: 50%; position: absolute; } } @media all and (max-width: ${this.xxl}px) { #outerContainer .hiddenXXLView { display: none; } #outerContainer .visibleXXLView { display: inherit; } } @media all and (max-width: ${this.md}px) { #toolbarViewerMiddle { -webkit-transform: translateX(-26%); transform: translateX(-26%); } } @media all and (max-width: ${this.xs}px) { #outerContainer .hiddenTinyView, #outerContainer .hiddenTinyView * { display: none; } #outerContainer .visibleTinyView { display: inherit; } } `; } ngOnInit() { this.injectStyle(); } ngOnChanges() { const fullWith = this.document.body.clientWidth; const partialViewScale = fullWith / this.width; const scaleFactor = partialViewScale * (this.zoom ? this.zoom : 1); this.xs = scaleFactor * 490; this.sm = scaleFactor * 560; this.md = scaleFactor * 610; this.lg = scaleFactor * 660; this.xl = scaleFactor * 740; this.xxl = scaleFactor * 830; const styles = this.document.getElementById('pdf-dynamic-css'); if (styles) { styles.innerHTML = this.style; } } injectStyle() { const styles = this.document.createElement('STYLE'); styles.id = 'pdf-dynamic-css'; styles.innerHTML = this.style; this.renderer.appendChild(this.document.head, styles); } ngOnDestroy() { const styles = this.document.getElementById('pdf-dynamic-css'); if (styles && styles.parentElement) { styles.parentElement.removeChild(styles); } } } DynamicCssComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: DynamicCssComponent, deps: [{ token: i0.Renderer2 }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); DynamicCssComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: DynamicCssComponent, selector: "pdf-dynamic-css", inputs: { zoom: "zoom", width: "width" }, usesOnChanges: true, ngImport: i0, template: "", styles: [""] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: DynamicCssComponent, decorators: [{ type: Component, args: [{ selector: 'pdf-dynamic-css', template: "", styles: [""] }] }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT] }] }]; }, propDecorators: { zoom: [{ type: Input }], width: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1jc3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWV4dGVuZGVkLXBkZi12aWV3ZXIvc3JjL2xpYi9keW5hbWljLWNzcy9keW5hbWljLWNzcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZXh0ZW5kZWQtcGRmLXZpZXdlci9zcmMvbGliL2R5bmFtaWMtY3NzL2R5bmFtaWMtY3NzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQTJDLE1BQU0sZUFBZSxDQUFDOztBQU9sRyxNQUFNLE9BQU8sbUJBQW1CO0lBZ0s5QixZQUFvQixRQUFtQixFQUE0QixRQUFhO1FBQTVELGFBQVEsR0FBUixRQUFRLENBQVc7UUFBNEIsYUFBUSxHQUFSLFFBQVEsQ0FBSztRQTlKekUsU0FBSSxHQUFHLEdBQUcsQ0FBQztRQUdYLFVBQUssR0FBRyxHQUFHLENBQUM7UUFFWixPQUFFLEdBQUcsR0FBRyxDQUFDO1FBRVQsT0FBRSxHQUFHLEdBQUcsQ0FBQztRQUVULE9BQUUsR0FBRyxHQUFHLENBQUM7UUFFVCxPQUFFLEdBQUcsR0FBRyxDQUFDO1FBRVQsT0FBRSxHQUFHLEdBQUcsQ0FBQztRQUVULFFBQUcsR0FBRyxHQUFHLENBQUM7SUErSWtFLENBQUM7SUE3SXBGLElBQVcsS0FBSztRQUNkLE9BQU87NkJBQ2tCLElBQUksQ0FBQyxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2QkFnQ1AsSUFBSSxDQUFDLEVBQUU7Ozs7Ozs7Ozs7Ozs7NkJBYVAsSUFBSSxDQUFDLEVBQUU7Ozs7Ozs7Ozs7Ozs2QkFZUCxJQUFJLENBQUMsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2QkFtQlAsSUFBSSxDQUFDLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7OzZCQWlCUCxJQUFJLENBQUMsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7OzZCQWtCUCxJQUFJLENBQUMsR0FBRzs7Ozs7Ozs7OzZCQVNSLElBQUksQ0FBQyxFQUFFOzs7Ozs7OzZCQU9QLElBQUksQ0FBQyxFQUFFOzs7Ozs7Ozs7R0FTakMsQ0FBQztJQUNKLENBQUM7SUFJQyxRQUFRO1FBQ04sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxXQUFXO1FBQ1QsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ2hELE1BQU0sZ0JBQWdCLEdBQUcsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDL0MsTUFBTSxXQUFXLEdBQUcsZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVuRSxJQUFJLENBQUMsRUFBRSxHQUFHLFdBQVcsR0FBRyxHQUFHLENBQUM7UUFDNUIsSUFBSSxDQUFDLEVBQUUsR0FBRyxXQUFXLEdBQUcsR0FBRyxDQUFDO1FBQzVCLElBQUksQ0FBQyxFQUFFLEdBQUcsV0FBVyxHQUFHLEdBQUcsQ0FBQztRQUM1QixJQUFJLENBQUMsRUFBRSxHQUFHLFdBQVcsR0FBRyxHQUFHLENBQUM7UUFDNUIsSUFBSSxDQUFDLEVBQUUsR0FBRyxXQUFXLEdBQUcsR0FBRyxDQUFDO1FBQzVCLElBQUksQ0FBQyxHQUFHLEdBQUcsV0FBVyxHQUFHLEdBQUcsQ0FBQztRQUU3QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQy9ELElBQUksTUFBTSxFQUFFO1lBQ1YsTUFBTSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQy9CO0lBQ0gsQ0FBQztJQUVPLFdBQVc7UUFDakIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFxQixDQUFDO1FBQ3hFLE1BQU0sQ0FBQyxFQUFFLEdBQUcsaUJBQWlCLENBQUM7UUFDOUIsTUFBTSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzlCLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFTSxXQUFXO1FBQ2hCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFnQixDQUFDO1FBQzlFLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxhQUFhLEVBQUU7WUFDakMsTUFBTSxDQUFDLGFBQXFCLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ25EO0lBQ0gsQ0FBQzs7Z0hBcE1VLG1CQUFtQiwyQ0FnS21CLFFBQVE7b0dBaEs5QyxtQkFBbUIsc0hDUmhDLEVBQUE7MkZEUWEsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGlCQUFpQjs7MEJBb0tlLE1BQU07MkJBQUMsUUFBUTs0Q0E5SmxELElBQUk7c0JBRFYsS0FBSztnQkFJQyxLQUFLO3NCQURYLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZGYtZHluYW1pYy1jc3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vZHluYW1pYy1jc3MuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9keW5hbWljLWNzcy5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY0Nzc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKVxuICBwdWJsaWMgem9vbSA9IDEuMDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgd2lkdGggPSAxMDA7XG5cbiAgcHVibGljIHhzID0gNDkwO1xuXG4gIHB1YmxpYyBzbSA9IDU2MDtcblxuICBwdWJsaWMgbWQgPSA2MTA7XG5cbiAgcHVibGljIGxnID0gNjYwO1xuXG4gIHB1YmxpYyB4bCA9IDc0MDtcblxuICBwdWJsaWMgeHhsID0gODMwO1xuXG4gIHB1YmxpYyBnZXQgc3R5bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYFxuQG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDogJHt0aGlzLnhsfXB4KSB7XG4gICN0b29sYmFyVmlld2VyTWlkZGxlIHtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBtYXJnaW46IGF1dG87XG4gICAgbGVmdDogYXV0bztcbiAgICBwb3NpdGlvbjogaW5oZXJpdDtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cbn1cblxuQG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDogODQwcHgpIHtcbiAgI3NpZGViYXJDb250ZW50IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNyk7XG4gIH1cblxuICBodG1sW2Rpcj0nbHRyJ10gI291dGVyQ29udGFpbmVyLnNpZGViYXJPcGVuICN2aWV3ZXJDb250YWluZXIge1xuICAgIGxlZnQ6IDBweCAhaW1wb3J0YW50O1xuICB9XG4gIGh0bWxbZGlyPSdydGwnXSAjb3V0ZXJDb250YWluZXIuc2lkZWJhck9wZW4gI3ZpZXdlckNvbnRhaW5lciB7XG4gICAgcmlnaHQ6IDBweCAhaW1wb3J0YW50O1xuICB9XG5cbiAgI291dGVyQ29udGFpbmVyIC5oaWRkZW5MYXJnZVZpZXcsXG4gICNvdXRlckNvbnRhaW5lciAuaGlkZGVuTWVkaXVtVmlldyB7XG4gICAgZGlzcGxheTogaW5oZXJpdDtcbiAgfVxuICAjb3V0ZXJDb250YWluZXIgLnZpc2libGVMYXJnZVZpZXcsXG4gICNvdXRlckNvbnRhaW5lciAudmlzaWJsZU1lZGl1bVZpZXcge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuQG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDogJHt0aGlzLmxnfXB4KSB7XG4gIC50b29sYmFyQnV0dG9uU3BhY2VyIHtcbiAgICB3aWR0aDogMTVweDtcbiAgfVxuXG4gICNvdXRlckNvbnRhaW5lciAuaGlkZGVuTGFyZ2VWaWV3IHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gICNvdXRlckNvbnRhaW5lciAudmlzaWJsZUxhcmdlVmlldyB7XG4gICAgZGlzcGxheTogaW5oZXJpdDtcbiAgfVxufVxuXG5AbWVkaWEgYWxsIGFuZCAobWF4LXdpZHRoOiAke3RoaXMubWR9cHgpIHtcbiAgLnRvb2xiYXJCdXR0b25TcGFjZXIge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbiAgI291dGVyQ29udGFpbmVyIC5oaWRkZW5NZWRpdW1WaWV3IHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gICNvdXRlckNvbnRhaW5lciAudmlzaWJsZU1lZGl1bVZpZXcge1xuICAgIGRpc3BsYXk6IGluaGVyaXQ7XG4gIH1cbn1cblxuQG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDogJHt0aGlzLnNtfXB4KSB7XG4gICNvdXRlckNvbnRhaW5lciAuaGlkZGVuU21hbGxWaWV3LFxuICAjb3V0ZXJDb250YWluZXIgLmhpZGRlblNtYWxsVmlldyAqIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gICNvdXRlckNvbnRhaW5lciAudmlzaWJsZVNtYWxsVmlldyB7XG4gICAgZGlzcGxheTogaW5oZXJpdDtcbiAgfVxuICAudG9vbGJhckJ1dHRvblNwYWNlciB7XG4gICAgd2lkdGg6IDA7XG4gIH1cbiAgaHRtbFtkaXI9J2x0ciddIC5maW5kYmFyIHtcbiAgICBsZWZ0OiAzOHB4O1xuICB9XG4gIGh0bWxbZGlyPSdydGwnXSAuZmluZGJhciB7XG4gICAgcmlnaHQ6IDM4cHg7XG4gIH1cbn1cblxuQG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDogJHt0aGlzLnhzfXB4KSB7XG4gICNzY2FsZVNlbGVjdENvbnRhaW5lciB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4jb3V0ZXJDb250YWluZXIgLnZpc2libGVYTFZpZXcsXG4jb3V0ZXJDb250YWluZXIgLnZpc2libGVYWExWaWV3LFxuI291dGVyQ29udGFpbmVyIC52aXNpYmxlVGlueVZpZXcge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4jb3V0ZXJDb250YWluZXIgLmhpZGRlblhMVmlldyxcbiNvdXRlckNvbnRhaW5lciAuaGlkZGVuWFhMVmlldyB7XG4gIGRpc3BsYXk6IHVuc2V0O1xufVxuXG5AbWVkaWEgYWxsIGFuZCAobWF4LXdpZHRoOiAke3RoaXMueGx9cHgpIHtcbiAgI291dGVyQ29udGFpbmVyIC5oaWRkZW5YTFZpZXcge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbiAgI291dGVyQ29udGFpbmVyIC52aXNpYmxlWExWaWV3IHtcbiAgICBkaXNwbGF5OiBpbmhlcml0O1xuICB9XG5cbiAgI3Rvb2xiYXJWaWV3ZXJNaWRkbGUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0zNiUpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMzYlKTtcbiAgICBkaXNwbGF5OiB1bnNldDtcbiAgICBtYXJnaW46IHVuc2V0O1xuICAgIGxlZnQ6IDUwJTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIH1cbn1cblxuQG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDogJHt0aGlzLnh4bH1weCkge1xuICAjb3V0ZXJDb250YWluZXIgLmhpZGRlblhYTFZpZXcge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbiAgI291dGVyQ29udGFpbmVyIC52aXNpYmxlWFhMVmlldyB7XG4gICAgZGlzcGxheTogaW5oZXJpdDtcbiAgfVxufVxuXG5AbWVkaWEgYWxsIGFuZCAobWF4LXdpZHRoOiAke3RoaXMubWR9cHgpIHtcbiAgI3Rvb2xiYXJWaWV3ZXJNaWRkbGUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0yNiUpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMjYlKTtcbiAgfVxufVxuXG5AbWVkaWEgYWxsIGFuZCAobWF4LXdpZHRoOiAke3RoaXMueHN9cHgpIHtcbiAgI291dGVyQ29udGFpbmVyIC5oaWRkZW5UaW55VmlldyxcbiAgI291dGVyQ29udGFpbmVyIC5oaWRkZW5UaW55VmlldyAqIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gICNvdXRlckNvbnRhaW5lciAudmlzaWJsZVRpbnlWaWV3IHtcbiAgICBkaXNwbGF5OiBpbmhlcml0O1xuICB9XG59XG4gIGA7XG59XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLCBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBhbnkpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pbmplY3RTdHlsZSgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgY29uc3QgZnVsbFdpdGggPSB0aGlzLmRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGg7XG4gICAgY29uc3QgcGFydGlhbFZpZXdTY2FsZSA9IGZ1bGxXaXRoIC8gdGhpcy53aWR0aDtcbiAgICBjb25zdCBzY2FsZUZhY3RvciA9IHBhcnRpYWxWaWV3U2NhbGUgKiAodGhpcy56b29tID8gdGhpcy56b29tIDogMSk7XG5cbiAgICB0aGlzLnhzID0gc2NhbGVGYWN0b3IgKiA0OTA7XG4gICAgdGhpcy5zbSA9IHNjYWxlRmFjdG9yICogNTYwO1xuICAgIHRoaXMubWQgPSBzY2FsZUZhY3RvciAqIDYxMDtcbiAgICB0aGlzLmxnID0gc2NhbGVGYWN0b3IgKiA2NjA7XG4gICAgdGhpcy54bCA9IHNjYWxlRmFjdG9yICogNzQwO1xuICAgIHRoaXMueHhsID0gc2NhbGVGYWN0b3IgKiA4MzA7XG5cbiAgICBjb25zdCBzdHlsZXMgPSB0aGlzLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwZGYtZHluYW1pYy1jc3MnKTtcbiAgICBpZiAoc3R5bGVzKSB7XG4gICAgICBzdHlsZXMuaW5uZXJIVE1MID0gdGhpcy5zdHlsZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluamVjdFN0eWxlKCkge1xuICAgIGNvbnN0IHN0eWxlcyA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnU1RZTEUnKSBhcyBIVE1MU3R5bGVFbGVtZW50O1xuICAgIHN0eWxlcy5pZCA9ICdwZGYtZHluYW1pYy1jc3MnO1xuICAgIHN0eWxlcy5pbm5lckhUTUwgPSB0aGlzLnN0eWxlO1xuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5kb2N1bWVudC5oZWFkLCBzdHlsZXMpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIGNvbnN0IHN0eWxlcyA9IHRoaXMuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BkZi1keW5hbWljLWNzcycpIGFzIEhUTUxFbGVtZW50O1xuICAgIGlmIChzdHlsZXMgJiYgc3R5bGVzLnBhcmVudEVsZW1lbnQpIHtcbiAgICAgIChzdHlsZXMucGFyZW50RWxlbWVudCBhcyBhbnkpLnJlbW92ZUNoaWxkKHN0eWxlcyk7XG4gICAgfVxuICB9XG59XG4iLCIiXX0=