UNPKG

ngx-typed-js-aot

Version:

An Angular integration for [Typed.js](https://github.com/mattboldt/typed.js/).

217 lines 19.3 kB
import { __decorate, __metadata } from "tslib"; import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core'; import Typed from 'typed.js'; let NgxTypedJsComponent = class NgxTypedJsComponent { constructor() { this.completed = new EventEmitter(); this.preStringTyped = new EventEmitter(); this.stringTyped = new EventEmitter(); this.lastStringBackspaced = new EventEmitter(); this.typingPaused = new EventEmitter(); this.typingResumed = new EventEmitter(); this.reset = new EventEmitter(); this.stopped = new EventEmitter(); this.started = new EventEmitter(); this.destroyed = new EventEmitter(); } ngAfterViewInit() { this.typed = new Typed(this.content.nativeElement.querySelector('.typing'), this.options); if (this.showCursor !== false) { this.updateCursorStyle(); } } toggle() { this.typed.toggle(); } stop() { this.typed.stop(); } start() { this.typed.start(); } destroy() { this.typed.destroy(); } doReset(restart) { this.typed.reset(restart); } get options() { const emit = (emitter) => () => emitter.emit(); const emitIndex = (emitter) => (index) => emitter.emit(index); const opts = { strings: this.strings, stringsElement: this.stringsElement, typeSpeed: this.typeSpeed, startDelay: this.startDelay, backSpeed: this.backSpeed, smartBackspace: this.smartBackspace, shuffle: this.shuffle, backDelay: this.backDelay, fadeOut: this.fadeOut, fadeOutClass: this.fadeOutClass, fadeOutDelay: this.fadeOutDelay, loop: this.loop, loopCount: this.loopCount, showCursor: this.showCursor, autoInsertCss: this.autoInsertCss, attr: this.attr, bindInputFocusEvents: this.bindInputFocusEvents, contentType: this.contentType, onComplete: emit(this.completed), preStringTyped: emitIndex(this.preStringTyped), onStringTyped: emitIndex(this.stringTyped), onLastStringBackspaced: emit(this.lastStringBackspaced), onTypingPaused: emitIndex(this.typingPaused), onTypingResumed: emitIndex(this.typingResumed), onReset: emit(this.reset), onStop: emitIndex(this.stopped), onStart: emitIndex(this.started), onDestroy: emit(this.destroyed), }; Object.keys(opts).forEach(key => { if (opts[key] === undefined) { delete opts[key]; } }); return opts; } updateCursorStyle() { const textElementStyle = getComputedStyle(this.content.nativeElement.querySelector('.typing')); const cursorElementStyle = this.content.nativeElement.querySelector('.typed-cursor').style; cursorElementStyle.fontSize = textElementStyle.fontSize; cursorElementStyle.color = this.cursorColor || textElementStyle.color; } }; __decorate([ Input(), __metadata("design:type", String) ], NgxTypedJsComponent.prototype, "cursorColor", void 0); __decorate([ Input(), __metadata("design:type", Array) ], NgxTypedJsComponent.prototype, "strings", void 0); __decorate([ Input(), __metadata("design:type", String) ], NgxTypedJsComponent.prototype, "stringsElement", void 0); __decorate([ Input(), __metadata("design:type", Number) ], NgxTypedJsComponent.prototype, "typeSpeed", void 0); __decorate([ Input(), __metadata("design:type", Number) ], NgxTypedJsComponent.prototype, "startDelay", void 0); __decorate([ Input(), __metadata("design:type", Number) ], NgxTypedJsComponent.prototype, "backSpeed", void 0); __decorate([ Input(), __metadata("design:type", Boolean) ], NgxTypedJsComponent.prototype, "smartBackspace", void 0); __decorate([ Input(), __metadata("design:type", Boolean) ], NgxTypedJsComponent.prototype, "shuffle", void 0); __decorate([ Input(), __metadata("design:type", Number) ], NgxTypedJsComponent.prototype, "backDelay", void 0); __decorate([ Input(), __metadata("design:type", Boolean) ], NgxTypedJsComponent.prototype, "fadeOut", void 0); __decorate([ Input(), __metadata("design:type", String) ], NgxTypedJsComponent.prototype, "fadeOutClass", void 0); __decorate([ Input(), __metadata("design:type", Boolean) ], NgxTypedJsComponent.prototype, "fadeOutDelay", void 0); __decorate([ Input(), __metadata("design:type", Boolean) ], NgxTypedJsComponent.prototype, "loop", void 0); __decorate([ Input(), __metadata("design:type", Number) ], NgxTypedJsComponent.prototype, "loopCount", void 0); __decorate([ Input(), __metadata("design:type", Boolean) ], NgxTypedJsComponent.prototype, "showCursor", void 0); __decorate([ Input(), __metadata("design:type", String) ], NgxTypedJsComponent.prototype, "cursorChar", void 0); __decorate([ Input(), __metadata("design:type", Boolean) ], NgxTypedJsComponent.prototype, "autoInsertCss", void 0); __decorate([ Input(), __metadata("design:type", String) ], NgxTypedJsComponent.prototype, "attr", void 0); __decorate([ Input(), __metadata("design:type", Boolean) ], NgxTypedJsComponent.prototype, "bindInputFocusEvents", void 0); __decorate([ Input(), __metadata("design:type", String) ], NgxTypedJsComponent.prototype, "contentType", void 0); __decorate([ Output(), __metadata("design:type", EventEmitter) ], NgxTypedJsComponent.prototype, "completed", void 0); __decorate([ Output(), __metadata("design:type", EventEmitter) ], NgxTypedJsComponent.prototype, "preStringTyped", void 0); __decorate([ Output(), __metadata("design:type", EventEmitter) ], NgxTypedJsComponent.prototype, "stringTyped", void 0); __decorate([ Output(), __metadata("design:type", EventEmitter) ], NgxTypedJsComponent.prototype, "lastStringBackspaced", void 0); __decorate([ Output(), __metadata("design:type", EventEmitter) ], NgxTypedJsComponent.prototype, "typingPaused", void 0); __decorate([ Output(), __metadata("design:type", EventEmitter) ], NgxTypedJsComponent.prototype, "typingResumed", void 0); __decorate([ Output(), __metadata("design:type", EventEmitter) ], NgxTypedJsComponent.prototype, "reset", void 0); __decorate([ Output(), __metadata("design:type", EventEmitter) ], NgxTypedJsComponent.prototype, "stopped", void 0); __decorate([ Output(), __metadata("design:type", EventEmitter) ], NgxTypedJsComponent.prototype, "started", void 0); __decorate([ Output(), __metadata("design:type", EventEmitter) ], NgxTypedJsComponent.prototype, "destroyed", void 0); __decorate([ ViewChild('wrapper', { static: true }), __metadata("design:type", Object) ], NgxTypedJsComponent.prototype, "content", void 0); NgxTypedJsComponent = __decorate([ Component({ selector: 'ngx-typed-js', template: "<div #wrapper>\n <ng-content></ng-content>\n</div>\n", styles: [":host>>>.typing{display:inline}"] }) ], NgxTypedJsComponent); export { NgxTypedJsComponent }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXR5cGVkLWpzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC10eXBlZC1qcy1hb3QvIiwic291cmNlcyI6WyJsaWIvbmd4LXR5cGVkLWpzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFnQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sS0FBcUIsTUFBTSxVQUFVLENBQUM7QUFPN0MsSUFBYSxtQkFBbUIsR0FBaEMsTUFBYSxtQkFBbUI7SUFBaEM7UUF1Qm1CLGNBQVMsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN6RCxtQkFBYyxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ2xFLGdCQUFXLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDL0QseUJBQW9CLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFDcEUsaUJBQVksR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNoRSxrQkFBYSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ2pFLFVBQUssR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNyRCxZQUFPLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDM0QsWUFBTyxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzNELGNBQVMsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQTBGNUUsQ0FBQztJQXJGQyxlQUFlO1FBQ2IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxFQUNuRCxJQUFJLENBQUMsT0FBTyxDQUNiLENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssS0FBSyxFQUFFO1lBQzdCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxD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dUM7QUFDdEM7SUFBUixLQUFLLEVBQUU7O3dEQUE2QjtBQUUzQjtJQUFULE1BQU0sRUFBRTs4QkFBbUIsWUFBWTtzREFBa0M7QUFDaEU7SUFBVCxNQUFNLEVBQUU7OEJBQXdCLFlBQVk7MkRBQXNDO0FBQ3pFO0lBQVQsTUFBTSxFQUFFOzhCQUFxQixZQUFZO3dEQUFzQztBQUN0RTtJQUFULE1BQU0sRUFBRTs4QkFBOEIsWUFBWTtpRUFBa0M7QUFDM0U7SUFBVCxNQUFNLEVBQUU7OEJBQXNCLFlBQVk7eURBQXNDO0FBQ3ZFO0lBQVQsTUFBTSxFQUFFOzhCQUF1QixZQUFZOzBEQUFzQztBQUN4RTtJQUFULE1BQU0sRUFBRTs4QkFBZSxZQUFZO2tEQUFrQztBQUM1RDtJQUFULE1BQU0sRUFBRTs4QkFBaUIsWUFBWTtvREFBc0M7QUFDbEU7SUFBVCxNQUFNLEVBQUU7OEJBQWlCLFlBQVk7b0RBQXNDO0FBQ2xFO0lBQVQsTUFBTSxFQUFFOzhCQUFtQixZQUFZO3NEQUFrQztBQUdsQztJQUF2QyxTQUFTLENBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDOztvREFBaUI7QUFuQzdDLG1CQUFtQjtJQUwvQixTQUFTLENBQUM7UUFDVCxRQUFRLEVBQUUsY0FBYztRQUN4QixpRUFBMEM7O0tBRTNDLENBQUM7R0FDVyxtQkFBbUIsQ0EwSC9CO1NBMUhZLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgVHlwZWQsIHtUeXBlZE9wdGlvbnN9IGZyb20gJ3R5cGVkLmpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmd4LXR5cGVkLWpzJyxcbiAgdGVtcGxhdGVVcmw6ICduZ3gtdHlwZWQtanMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnbmd4LXR5cGVkLWpzLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3hUeXBlZEpzQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIHB1YmxpYyBjdXJzb3JDb2xvcj86IHN0cmluZztcblxuICBASW5wdXQoKSBwdWJsaWMgc3RyaW5ncz86IHN0cmluZ1tdO1xuICBASW5wdXQoKSBwdWJsaWMgc3RyaW5nc0VsZW1lbnQ/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyB0eXBlU3BlZWQ/OiBudW1iZXI7XG4gIEBJbnB1dCgpIHB1YmxpYyBzdGFydERlbGF5PzogbnVtYmVyO1xuICBASW5wdXQoKSBwdWJsaWMgYmFja1NwZWVkPzogbnVtYmVyO1xuICBASW5wdXQoKSBwdWJsaWMgc21hcnRCYWNrc3BhY2U/OiBib29sZWFuO1xuICBASW5wdXQoKSBwdWJsaWMgc2h1ZmZsZT86IGJvb2xlYW47XG4gIEBJbnB1dCgpIHB1YmxpYyBiYWNrRGVsYXk/OiBudW1iZXI7XG4gIEBJbnB1dCgpIHB1YmxpYyBmYWRlT3V0PzogYm9vbGVhbjtcbiAgQElucHV0KCkgcHVibGljIGZhZGVPdXRDbGFzcz86IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIGZhZGVPdXREZWxheT86IGJvb2xlYW47XG4gIEBJbnB1dCgpIHB1YmxpYyBsb29wPzogYm9vbGVhbjtcbiAgQElucHV0KCkgcHVibGljIGxvb3BDb3VudD86IG51bWJlcjtcbiAgQElucHV0KCkgcHVibGljIHNob3dDdXJzb3I/OiBib29sZWFuO1xuICBASW5wdXQoKSBwdWJsaWMgY3Vyc29yQ2hhcj86IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIGF1dG9JbnNlcnRDc3M/OiBib29sZWFuO1xuICBASW5wdXQoKSBwdWJsaWMgYXR0cj86IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIGJpbmRJbnB1dEZvY3VzRXZlbnRzPzogYm9vbGVhbjtcbiAgQElucHV0KCkgcHVibGljIGNvbnRlbnRUeXBlPzogc3RyaW5nO1xuXG4gIEBPdXRwdXQoKSBwdWJsaWMgY29tcGxldGVkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgcHJlU3RyaW5nVHlwZWQ6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgc3RyaW5nVHlwZWQ6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgbGFzdFN0cmluZ0JhY2tzcGFjZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyB0eXBpbmdQYXVzZWQ6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgdHlwaW5nUmVzdW1lZDogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyByZXNldDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgcHVibGljIHN0b3BwZWQ6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgc3RhcnRlZDogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBkZXN0cm95ZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBwcml2YXRlIHR5cGVkOiBUeXBlZDtcbiAgQFZpZXdDaGlsZCgnd3JhcHBlcicsIHsgc3RhdGljOiB0cnVlIH0pIHByaXZhdGUgY29udGVudDtcblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy50eXBlZCA9IG5ldyBUeXBlZChcbiAgICAgIHRoaXMuY29udGVudC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy50eXBpbmcnKSxcbiAgICAgIHRoaXMub3B0aW9ucyxcbiAgICApO1xuXG4gICAgaWYgKHRoaXMuc2hvd0N1cnNvciAhPT0gZmFsc2UpIHtcbiAgICAgIHRoaXMudXBkYXRlQ3Vyc29yU3R5bGUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlKCk6IHZvaWQge1xuICAgIHRoaXMudHlwZWQudG9nZ2xlKCk7XG4gIH1cblxuICBwdWJsaWMgc3RvcCgpOiB2b2lkIHtcbiAgICB0aGlzLnR5cGVkLnN0b3AoKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGFydCgpOiB2b2lkIHtcbiAgICB0aGlzLnR5cGVkLnN0YXJ0KCk7XG4gIH1cblxuICBwdWJsaWMgZGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnR5cGVkLmRlc3Ryb3koKTtcbiAgfVxuXG4gIHB1YmxpYyBkb1Jlc2V0KHJlc3RhcnQ/OiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy50eXBlZC5yZXNldChyZXN0YXJ0KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IG9wdGlvbnMoKTogVHlwZWRPcHRpb25zIHtcbiAgICBjb25zdCBlbWl0OiAoZW1pdHRlcjogRXZlbnRFbWl0dGVyPHZvaWQ+KSA9PiAoc2VsZjogVHlwZWQpID0+IHZvaWRcbiAgICAgID0gKGVtaXR0ZXI6IEV2ZW50RW1pdHRlcjx2b2lkPikgPT4gKCkgPT4gZW1pdHRlci5lbWl0KCk7XG5cbiAgICBjb25zdCBlbWl0SW5kZXg6IChlbWl0dGVyOiBFdmVudEVtaXR0ZXI8bnVtYmVyPikgPT4gKGluZGV4OiBudW1iZXIsIHNlbGY6IFR5cGVkKSA9PiB2b2lkXG4gICAgICA9IChlbWl0dGVyOiBFdmVudEVtaXR0ZXI8bnVtYmVyPikgPT4gKGluZGV4OiBudW1iZXIpID0+IGVtaXR0ZXIuZW1pdChpbmRleCk7XG5cbiAgICBjb25zdCBvcHRzID0ge1xuICAgICAgc3RyaW5nczogdGhpcy5zdHJpbmdzLFxuICAgICAgc3RyaW5nc0VsZW1lbnQ6IHRoaXMuc3RyaW5nc0VsZW1lbnQsXG4gICAgICB0eXBlU3BlZWQ6IHRoaXMudHlwZVNwZWVkLFxuICAgICAgc3RhcnREZWxheTogdGhpcy5zdGFydERlbGF5LFxuICAgICAgYmFja1NwZWVkOiB0aGlzLmJhY2tTcGVlZCxcbiAgICAgIHNtYXJ0QmFja3NwYWNlOiB0aGlzLnNtYXJ0QmFja3NwYWNlLFxuICAgICAgc2h1ZmZsZTogdGhpcy5zaHVmZmxlLFxuICAgICAgYmFja0RlbGF5OiB0aGlzLmJhY2tEZWxheSxcbiAgICAgIGZhZGVPdXQ6IHRoaXMuZmFkZU91dCxcbiAgICAgIGZhZGVPdXRDbGFzczogdGhpcy5mYWRlT3V0Q2xhc3MsXG4gICAgICBmYWRlT3V0RGVsYXk6IHRoaXMuZmFkZU91dERlbGF5LFxuICAgICAgbG9vcDogdGhpcy5sb29wLFxuICAgICAgbG9vcENvdW50OiB0aGlzLmxvb3BDb3VudCxcbiAgICAgIHNob3dDdXJzb3I6IHRoaXMuc2hvd0N1cnNvcixcbiAgICAgIGF1dG9JbnNlcnRDc3M6IHRoaXMuYXV0b0luc2VydENzcyxcbiAgICAgIGF0dHI6IHRoaXMuYXR0cixcbiAgICAgIGJpbmRJbnB1dEZvY3VzRXZlbnRzOiB0aGlzLmJpbmRJbnB1dEZvY3VzRXZlbnRzLFxuICAgICAgY29udGVudFR5cGU6IHRoaXMuY29udGVudFR5cGUsXG4gICAgICBvbkNvbXBsZXRlOiBlbWl0KHRoaXMuY29tcGxldGVkKSxcbiAgICAgIHByZVN0cmluZ1R5cGVkOiBlbWl0SW5kZXgodGhpcy5wcmVTdHJpbmdUeXBlZCksXG4gICAgICBvblN0cmluZ1R5cGVkOiBlbWl0SW5kZXgodGhpcy5zdHJpbmdUeXBlZCksXG4gICAgICBvbkxhc3RTdHJpbmdCYWNrc3BhY2VkOiBlbWl0KHRoaXMubGFzdFN0cmluZ0JhY2tzcGFjZWQpLFxuICAgICAgb25UeXBpbmdQYXVzZWQ6IGVtaXRJbmRleCh0aGlzLnR5cGluZ1BhdXNlZCksXG4gICAgICBvblR5cGluZ1Jlc3VtZWQ6IGVtaXRJbmRleCh0aGlzLnR5cGluZ1Jlc3VtZWQpLFxuICAgICAgb25SZXNldDogZW1pdCh0aGlzLnJlc2V0KSxcbiAgICAgIG9uU3RvcDogZW1pdEluZGV4KHRoaXMuc3RvcHBlZCksXG4gICAgICBvblN0YXJ0OiBlbWl0SW5kZXgodGhpcy5zdGFydGVkKSxcbiAgICAgIG9uRGVzdHJveTogZW1pdCh0aGlzLmRlc3Ryb3llZCksXG4gICAgfSBhcyBUeXBlZE9wdGlvbnM7XG5cbiAgICBPYmplY3Qua2V5cyhvcHRzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBpZiAob3B0c1trZXldID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZGVsZXRlIG9wdHNba2V5XTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBvcHRzO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDdXJzb3JTdHlsZSgpOiB2b2lkIHtcbiAgICBjb25zdCB0ZXh0RWxlbWVudFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmNvbnRlbnQubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcudHlwaW5nJykpO1xuICAgIGNvbnN0IGN1cnNvckVsZW1lbnRTdHlsZSA9IHRoaXMuY29udGVudC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy50eXBlZC1jdXJzb3InKS5zdHlsZTtcblxuICAgIGN1cnNvckVsZW1lbnRTdHlsZS5mb250U2l6ZSA9IHRleHRFbGVtZW50U3R5bGUuZm9udFNpemU7XG4gICAgY3Vyc29yRWxlbWVudFN0eWxlLmNvbG9yID0gdGhpcy5jdXJzb3JDb2xvciB8fCB0ZXh0RWxlbWVudFN0eWxlLmNvbG9yO1xuICB9XG59XG4iXX0=