UNPKG

ng-materialgrammi

Version:

An Angular framework which follows

514 lines 70.6 kB
import { Injectable } from '@angular/core'; import { BehaviorSubject } from 'rxjs'; import * as i0 from "@angular/core"; ; ; ; ; export class MaterialgrammiService { constructor() { this.widgets = []; this.collapse = []; this.dropdown = []; this.megamenu = []; this.modal = []; this.overlay = []; this.wizard = []; this.slideshow = []; this.offcanvas = []; this.tab = []; this.notifications = { topRight: { status: new BehaviorSubject([]), data: [] }, topLeft: { status: new BehaviorSubject([]), data: [] }, topCenter: { status: new BehaviorSubject([]), data: [] }, bottomRight: { status: new BehaviorSubject([]), data: [] }, bottomLeft: { status: new BehaviorSubject([]), data: [] }, bottomCenter: { status: new BehaviorSubject([]), data: [] }, centerRight: { status: new BehaviorSubject([]), data: [] }, centerLeft: { status: new BehaviorSubject([]), data: [] }, centerCenter: { status: new BehaviorSubject([]), data: [] } }; this.slideshowv2 = []; /* options: { timer: 0 | 1-any-number, class: "", size: "s | m | l" } */ this.notificationOptionsDefaults = { timer: 2000, class: "blueGrey8 text-grey2 radius-5 pad-10 marginT-10 outline-grey7 shadow-1", size: "m" }; } addNotification(position = "topRight", message = "demo notification", options = {}) { options.timer = !options.timer ? this.notificationOptionsDefaults.timer : options.timer; options.class = !options.class ? this.notificationOptionsDefaults.class : options.class; options.size = !options.size ? this.notificationOptionsDefaults.size : options.size; let notify = { message, options, id: this.makeid(10, this.makeid(3, "notification")) }; const allowedPositions = Object.keys(this.notifications); if (allowedPositions.includes(position)) { this.notifications[position].data = [notify, ...this.notifications[position].data]; this.notifications[position].status.next(this.notifications[position].data); } if (notify.options.timer !== 0) { var $this = this; setTimeout(function () { $this.deleteNotification(position, notify.id); }, notify.options.timer); } } watchNotification(position = "topRight") { return Object.keys(this.notifications).includes(position) ? this.notifications[position].status.asObservable() : false; } deleteNotification(position = "topRight", id) { if (Object.keys(this.notifications).includes(position)) { this.notifications[position].data = this.notifications[position].data.filter((d) => { return d.id != id; }); } this.notifications[position].status.next(this.notifications[position].data); } makeid(length, str) { str = typeof str == "string" ? str.split(" ").join("") : str; var result = ''; var characters = 'ABCDEFGHIJKLMNOP+QRSTUVWXYZabcdefgh_ijklmnopqrst=uvwxyz0123456789-'; var charactersLength = characters.length; for (var i = 0; i < length; i++) { result += characters.charAt(Math.floor(Math.random() * charactersLength)); } return result + '-' + str; } registerSlideShowv2(id, items, active = items[0]) { id = id === "" ? this.makeid(10, "slideshowv2") : id; this.slideshowv2[id] = { items, current: active, active: new BehaviorSubject(active) }; for (let i = 0; i < items.length; i++) { this.registerWidget(items[i], "slideshowv2", id); } this.openWidget(active, "slideshowv2", id); return id; } watchSlideShowv2(id) { return this.slideshowv2[id].active.asObservable(); } nextSlideV2(id) { let current = this.slideshowv2[id].current; let next = ""; for (let i = 0; i < this.slideshowv2[id].items.length; i++) { if (this.slideshowv2[id].items[i] === current) { next = this.slideshowv2[id].items[i + 1] ? this.slideshowv2[id].items[i + 1] : this.slideshowv2[id].items[0]; } this.closeWidget(this.slideshowv2[id].items[i], "slideshowv2", id); } this.slideshowv2[id].current = next; this.openWidget(next, "slideshowv2", id); this.slideshowv2[id].active.next(next); } prevSlideV2(id) { let current = this.slideshowv2[id].current; let next = ""; for (let i = 0; i < this.slideshowv2[id].items.length; i++) { if (this.slideshowv2[id].items[i] === current) { next = this.slideshowv2[id].items[i - 1] ? this.slideshowv2[id].items[i - 1] : this.slideshowv2[id].items[this.slideshowv2[id].items.length - 1]; this.closeWidget(this.slideshowv2[id].items[i], "slideshowv2", id); } } this.slideshowv2[id].current = next; this.openWidget(next, "slideshowv2", id); this.slideshowv2[id].active.next(next); } registerTab(id, components, active) { this.tab[id] = { components, active: new BehaviorSubject(active) }; for (let i = 0; i < components.length; i++) { this.registerWidget(components[i], "tab", id); } this.openTab(id, components[0]); } openTab(id, component_id) { this.closeAllTab(id); this.openWidget(component_id, "tab", id); this.tab[id].active.next(component_id); } closeAllTab(id) { if (this.tab && this.tab[id]) { for (let i = 0; i < this.tab[id].components.length; i++) { this.closeWidget(this.tab[id].components[i], "tab", id); } } } watchTab(id) { return this.tab[id].active.asObservable(); } registerOffCanvas(id, status) { this.offcanvas[id] = { id, status: new BehaviorSubject(status) }; } openCanvas(id) { this.offcanvas[id].status.next(true); } closeCanvas(id) { this.offcanvas[id].status.next(false); } watchCanvas(id) { return this.offcanvas[id].status.asObservable(); } registerSlideshow(id, activePage, play, next, previous, playInterval, timer) { var obj = { id, playInterval, timer, next: new BehaviorSubject(next), previous: new BehaviorSubject(previous), active: new BehaviorSubject(activePage), play: new BehaviorSubject(play) }; this.slideshow[id] = obj; } watchSlideshowPlay(id) { return this.slideshow[id].play.asObservable(); } watchSlideshowNext(id) { return this.slideshow[id].next.asObservable(); } watchSlideshowPrevious(id) { return this.slideshow[id].previous.asObservable(); } watchSlideshowActivePage(id) { return this.slideshow[id].active.asObservable(); } nextSlide(id) { this.slideshow[id].next.next(true); } previousSlide(id) { this.slideshow[id].previous.next(true); } changeSlidePlay(id, play) { this.slideshow[id].play.next(play); } changeSlideActivePage(id, activePage) { this.slideshow[id].active.next(activePage); } playSlideShow(id) { var selected = this.slideshow[id]; if (selected) { if (selected.playInterval) { this.pauseSlideshow(id); } selected.play.next(true); var _this = this; this.nextSlide(id); selected.playInterval = setInterval(() => { _this.nextSlide(id); }, selected.timer); } } pauseSlideshow(id) { var selected = this.slideshow[id]; if (selected && selected.playInterval) { clearInterval(selected.playInterval); selected.playInterval = false; } } registerWizard(wizardId, components, active = 0) { let next = {}; let prev = {}; if (components[active]) { next = { index: components && components[active + 1] ? active + 1 : active, id: components && components[active + 1] ? components[active + 1] : components[active] }; prev = { index: components && components[active - 1] ? active - 1 : active, id: components && components[active - 1] ? components[active - 1] : components[active] }; } else { // defaults active = 0; next = { index: components && components[1] ? 1 : 0, id: components && components[1] ? components[1] : components[0] }; prev = { index: 0, id: components[0] }; } this.wizard[wizardId] = { active: new BehaviorSubject(0), on: active, completed: new BehaviorSubject(false), next, prev, components }; for (let i = 0; i < components.length; i++) { this.registerWidget(components[i], "wizard", wizardId); } this.openWidget(components[0], "wizard", wizardId); } wizardNextStep(wizardId) { let activateIndex = this.wizard[wizardId].on + 1; this.activateWizardStep(wizardId, activateIndex); } WizardPreviousStep(wizardId) { let activateIndex = this.wizard[wizardId].on - 1; this.activateWizardStep(wizardId, activateIndex); } WizardCloseAll(wizardId) { if (this.wizard[wizardId] && this.wizard[wizardId].components) { for (let i = 0; i < this.wizard[wizardId].components.length; i++) { this.closeWidget(this.wizard[wizardId].components[i], "wizard", wizardId); } } } activateWizardStep(wizardId, index) { if (this.wizard[wizardId].components[index]) { if (index >= this.wizard[wizardId].components.length - 1) { this.isWizardComplete(wizardId); } else { this.isWizardNotComplete(wizardId); } this.wizard[wizardId].on = index; this.wizard[wizardId].prev.index = this.wizard[wizardId].components[index - 1] ? index - 1 : index; this.wizard[wizardId].next.index = this.wizard[wizardId].components[index + 1] ? index + 1 : index; this.wizard[wizardId].prev.id = this.wizard[wizardId].components[index - 1] ? this.wizard[wizardId].components[index - 1] : this.wizard[wizardId].components[index]; this.wizard[wizardId].next.id = this.wizard[wizardId].components[index + 1] ? this.wizard[wizardId].components[index + 1] : this.wizard[wizardId].components[index]; ; this.WizardCloseAll(wizardId); this.openWidget(this.wizard[wizardId].components[index], "wizard", wizardId); this.watchWidget(this.wizard[wizardId].components[index], "wizard", wizardId).subscribe((data) => { if (data) { this.wizard[wizardId].active.next(index); } }); } } isWizardComplete(wizardId) { this.wizard[wizardId].completed.next(true); } isWizardNotComplete(wizardId) { this.wizard[wizardId].completed.next(false); } watchWizardActive(wizardId) { return this.wizard[wizardId].active.asObservable(); } watchWizardCompleted(wizardId) { return this.wizard[wizardId].completed.asObservable(); } registerOverlay(id, status) { this.overlay[id] = { id, status: new BehaviorSubject(status) }; } openOverlay(id) { this.overlay[id].status.next(true); } closeOverlay(id) { this.overlay[id].status.next(false); } watchOverlay(id) { return this.overlay[id].status.asObservable(); } registerModal(id, status) { this.modal[id] = { id, status: new BehaviorSubject(status) }; } openModal(id) { this.modal[id].status.next(true); } closeModal(id) { this.modal[id].status.next(false); } watchModal(id) { return this.modal[id].status.asObservable(); } registerDropDown(id, status) { this.dropdown[id] = { id, status: new BehaviorSubject(status) }; } openDropDown(id) { this.dropdown[id].status.next(true); } closeDropDown(id) { this.dropdown[id].status.next(false); } watchDropDown(id) { return this.dropdown[id].status.asObservable(); } registerCollapse(id, status) { this.collapse[id] = { id, status: new BehaviorSubject(status) }; } openCollapse(id) { this.collapse[id].status.next(true); } closeCollapse(id) { this.collapse[id].status.next(false); } watchCollapse(id) { return this.collapse[id].status.asObservable(); } getWidgetId(id, type, parent_id) { return id + '_' + type + '_' + parent_id; } widgetExists(id, parent_type, parent_id) { return this.widgets[this.getWidgetId(id, parent_type, parent_id)] ? true : false; } registerWidget(id, parent_type, parent_id, options = {}) { let mywidgetid = this.getWidgetId(id, parent_type, parent_id); this.widgets[mywidgetid] = { id, type: parent_type, parent_id: parent_id, options: new BehaviorSubject(options), status: new BehaviorSubject(false) }; } openWidget(id, parent_type, parent_id) { let mywidgetid = this.getWidgetId(id, parent_type, parent_id); if (this.widgets && this.widgets[mywidgetid]) { this.widgets[mywidgetid].status.next(true); } } closeWidget(id, parent_type, parent_id) { let mywidgetid = this.getWidgetId(id, parent_type, parent_id); if (this.widgets && this.widgets[mywidgetid]) { this.widgets[mywidgetid].status.next(false); } } closeAllParentWidgets(parent_type, parent_id) { let allWidgetIds = Object.keys(this.widgets); for (let i = 0; i < allWidgetIds.length; i++) { if (this.widgets[allWidgetIds[i]].type == parent_type && this.widgets[allWidgetIds[i]].parent_id == parent_id) { this.closeWidget(this.widgets[allWidgetIds[i]].id, parent_type, parent_id); } } } watchWidget(id, parent_type, parent_id) { return this.widgets[this.getWidgetId(id, parent_type, parent_id)].status.asObservable(); } watchOptions(id, parent_type, parent_id) { return this.widgets[this.getWidgetId(id, parent_type, parent_id)].options.asObservable(); } registerMegaMenu(id, links) { this.megamenu[id] = { id, active: new BehaviorSubject("") }; for (let i = 0; i < links.length; i++) { this.registerWidget(links[i], "megamenu", id); } } watchMegaMenu(id) { return this.megamenu[id].active.asObservable(); } openMegaMenu(id, targetid) { this.megamenu[id].active.next(targetid); if (this.widgetExists(targetid, "megamenu", id)) { this.closeMegaMenu(id); this.openWidget(targetid, "megamenu", id); } } closeMegaMenu(id) { this.closeAllParentWidgets("megamenu", id); this.megamenu[id].active.next(false); } fallbackCopyTextToClipboard(text) { var textArea = document.createElement("textarea"); textArea.value = text; // Avoid scrolling to bottom textArea.style.top = "0"; textArea.style.left = "0"; textArea.style.position = "fixed"; document.body.appendChild(textArea); textArea.focus(); textArea.select(); try { var successful = document.execCommand('copy'); var msg = successful ? 'successful' : 'unsuccessful'; console.log('Fallback: Copying text command was ' + msg); } catch (err) { console.error('Fallback: Oops, unable to copy', err); } document.body.removeChild(textArea); } copyToClipboard(text) { if (!navigator.clipboard) { this.fallbackCopyTextToClipboard(text); return; } navigator.clipboard.writeText(text).then(function () { console.log('Async: Copying to clipboard was successful!'); }, function (err) { console.error('Async: Could not copy text: ', err); }); } scrollTo(query) { if (document.querySelectorAll(query)[0]) { document.querySelectorAll(query)[0].scrollIntoView({ behavior: "smooth", block: "start", inline: "nearest" }); } } } MaterialgrammiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: MaterialgrammiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); MaterialgrammiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: MaterialgrammiService, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: MaterialgrammiService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: function () { return []; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWxncmFtbWkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21hdGVyaWFsZ3JhbW1pL3NyYy9saWIvbWF0ZXJpYWxncmFtbWkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQXVCLE1BQU0sTUFBTSxDQUFDOztBQU8zRCxDQUFDO0FBS0QsQ0FBQztBQU1ELENBQUM7QUEyQ0QsQ0FBQztBQXlCRixNQUFNLE9BQU8scUJBQXFCO0lBcURoQztRQW5EUSxZQUFPLEdBQW1CLEVBQUUsQ0FBQztRQUM3QixhQUFRLEdBQXFCLEVBQUUsQ0FBQztRQUNoQyxhQUFRLEdBQXFCLEVBQUUsQ0FBQztRQUNoQyxhQUFRLEdBQXFCLEVBQUUsQ0FBQztRQUNoQyxVQUFLLEdBQWtCLEVBQUUsQ0FBQztRQUMxQixZQUFPLEdBQW9CLEVBQUUsQ0FBQztRQUM5QixXQUFNLEdBQW1CLEVBQUUsQ0FBQztRQUM1QixjQUFTLEdBQXNCLEVBQUUsQ0FBQztRQUNsQyxjQUFTLEdBQXNCLEVBQUUsQ0FBQztRQUNsQyxRQUFHLEdBQWdCLEVBQUUsQ0FBQztRQUN0QixrQkFBYSxHQUFRO1lBQzNCLFFBQVEsRUFBRTtnQkFDUixNQUFNLEVBQUUsSUFBSSxlQUFlLENBQUMsRUFBRSxDQUFDO2dCQUMvQixJQUFJLEVBQUUsRUFBRTthQUNUO1lBQ0QsT0FBTyxFQUFDO2dCQUNOLE1BQU0sRUFBRSxJQUFJLGVBQWUsQ0FBQyxFQUFFLENBQUM7Z0JBQy9CLElBQUksRUFBRSxFQUFFO2FBQ1Q7WUFDRCxTQUFTLEVBQUU7Z0JBQ1QsTUFBTSxFQUFFLElBQUksZUFBZSxDQUFDLEVBQUUsQ0FBQztnQkFDL0IsSUFBSSxFQUFFLEVBQUU7YUFDVDtZQUNELFdBQVcsRUFBRTtnQkFDWCxNQUFNLEVBQUUsSUFBSSxl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QUFDLEVBQUU7WUFDdEMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxFQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFDLENBQUMsQ0FBQztTQUM3RztJQUNILENBQUM7O2tIQXprQlUscUJBQXFCO3NIQUFyQixxQkFBcUIsY0FGcEIsTUFBTTsyRkFFUCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2lkZ2V0IHtcbiAgaWQ6IHN0cmluZyxcbiAgdHlwZTogc3RyaW5nLFxuICBvcHRpb25zPzogQmVoYXZpb3JTdWJqZWN0PGFueT4sXG4gIHN0YXR1czogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEFjY29yZGlvbkl0ZW0ge1xuICAvLyB3aWRnZXRJZFxuICBpZD86IHN0cmluZ1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBBY2NvcmRpb24ge1xuICBpZDogc3RyaW5nLFxuICBpdGVtcz86IFtBY2NvcmRpb25JdGVtXSxcbiAgYWN0aXZlSXRlbT86IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPlxufTtcblxuZXhwb3J0IGludGVyZmFjZSBDb2xsYXBzZSB7XG4gIGlkOiBzdHJpbmcsXG4gIHN0YXR1czogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHJvcGRvd24ge1xuICBpZDogc3RyaW5nLFxuICBzdGF0dXM6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1lZ2FNZW51IHtcbiAgaWQ6IHN0cmluZyxcbiAgYWN0aXZlOiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgYm9vbGVhbj5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBNb2RhbCB7XG4gIGlkOiBzdHJpbmcsXG4gIHN0YXR1czogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3ZlcmxheSB7XG4gIGlkOiBzdHJpbmcsXG4gIHN0YXR1czogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+XG59XG5cblxuXG5leHBvcnQgaW50ZXJmYWNlIFdpemFyZCB7XG4gIGlkOiBzdHJpbmcsXG4gIGFjdGl2ZTogQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4sXG4gIG9uOiBudW1iZXIsXG4gIGNvbXBsZXRlZDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+LFxuICBuZXh0OiB7XG4gICAgaW5kZXg6IG51bWJlcixcbiAgICBpZDogc3RyaW5nXG4gIH0sXG4gIHByZXY6IHtcbiAgICBpbmRleDogbnVtYmVyLFxuICAgIGlkOiBzdHJpbmdcbiAgfSxcbiAgY29tcG9uZW50czogW3N0cmluZ11cbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2xpZGVzaG93IHtcbiAgaWQ6IHN0cmluZyxcbiAgcGxheUludGVydmFsOiBhbnksXG4gIHRpbWVyOiBudW1iZXIsXG4gIG5leHQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPixcbiAgcHJldmlvdXM6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPixcbiAgYWN0aXZlOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPixcbiAgcGxheTogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2ZmQ2FudmFzIHtcbiAgaWQ6IHN0cmluZyxcbiAgc3RhdHVzOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWIge1xuICBhY3RpdmU6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+LFxuICBjb21wb25lbnRzOiBbc3RyaW5nXVxufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBNYXRlcmlhbGdyYW1taVNlcnZpY2Uge1xuXG4gIHByaXZhdGUgd2lkZ2V0czogW1dpZGdldF0gfCBhbnkgPSBbXTtcbiAgcHJpdmF0ZSBjb2xsYXBzZTogW0NvbGxhcHNlXSB8IGFueSA9IFtdO1xuICBwcml2YXRlIGRyb3Bkb3duOiBbRHJvcGRvd25dIHwgYW55ID0gW107XG4gIHByaXZhdGUgbWVnYW1lbnU6IFtNZWdhTWVudV0gfCBhbnkgPSBbXTtcbiAgcHJpdmF0ZSBtb2RhbDogW01vZGFsXSB8IGFueSA9IFtdO1xuICBwcml2YXRlIG92ZXJsYXk6IFtPdmVybGF5XSB8IGFueSA9IFtdO1xuICBwcml2YXRlIHdpemFyZDogW1dpemFyZF0gfCBhbnkgPSBbXTtcbiAgcHJpdmF0ZSBzbGlkZXNob3c6IFtTbGlkZXNob3ddIHwgYW55ID0gW107XG4gIHByaXZhdGUgb2ZmY2FudmFzOiBbT2ZmQ2FudmFzXSB8IGFueSA9IFtdO1xuICBwcml2YXRlIHRhYjogW1RhYl0gfCBhbnkgPSBbXTtcbiAgcHJpdmF0ZSBub3RpZmljYXRpb25zOiBhbnkgPSB7XG4gICAgdG9wUmlnaHQ6IHtcbiAgICAgIHN0YXR1czogbmV3IEJlaGF2aW9yU3ViamVjdChbXSksXG4gICAgICBkYXRhOiBbXVxuICAgIH0sXG4gICAgdG9wTGVmdDp7XG4gICAgICBzdGF0dXM6IG5ldyBCZWhhdmlvclN1YmplY3QoW10pLFxuICAgICAgZGF0YTogW11cbiAgICB9LFxuICAgIHRvcENlbnRlcjoge1xuICAgICAgc3RhdHVzOiBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdKSxcbiAgICAgIGRhdGE6IFtdXG4gICAgfSxcbiAgICBib3R0b21SaWdodDoge1xuICAgICAgc3RhdHVzOiBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdKSxcbiAgICAgIGRhdGE6IFtdXG4gICAgfSxcbiAgICBib3R0b21MZWZ0OiB7XG4gICAgICBzdGF0dXM6IG5ldyBCZWhhdmlvclN1YmplY3QoW10pLFxuICAgICAgZGF0YTogW11cbiAgICB9LFxuICAgIGJvdHRvbUNlbnRlcjoge1xuICAgICAgc3RhdHVzOiBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdKSxcbiAgICAgIGRhdGE6IFtdXG4gICAgfSxcbiAgICBjZW50ZXJSaWdodDoge1xuICAgICAgc3RhdHVzOiBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdKSxcbiAgICAgIGRhdGE6IFtdXG4gICAgfSxcbiAgICBjZW50ZXJMZWZ0OiB7XG4gICAgICBzdGF0dXM6IG5ldyBCZWhhdmlvclN1YmplY3QoW10pLFxuICAgICAgZGF0YTogW11cbiAgICB9LFxuICAgIGNlbnRlckNlbnRlcjoge1xuICAgICAgc3RhdHVzOiBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdKSxcbiAgICAgIGRhdGE6IFtdXG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgc2xpZGVzaG93djI6YW55ID0gW107XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICAvKlxuICAgIG9wdGlvbnM6IHtcbiAgICAgIHRpbWVyOiAwIHwgMS1hbnktbnVtYmVyLFxuICAgICAgY2xhc3M6IFwiXCIsXG4gICAgICBzaXplOiBcInMgfCBtIHwgbFwiXG4gICAgfVxuICAqL1xuXG4gIG5vdGlmaWNhdGlvbk9wdGlvbnNEZWZhdWx0cyA9IHtcbiAgICAgIHRpbWVyOiAyMDAwLFxuICAgICAgY2xhc3M6IFwiYmx1ZUdyZXk4IHRleHQtZ3JleTIgcmFkaXVzLTUgcGFkLTEwIG1hcmdpblQtMTAgb3V0bGluZS1ncmV5NyBzaGFkb3ctMVwiLFxuICAgICAgc2l6ZTogXCJtXCJcbiAgICB9O1xuXG4gIGFkZE5vdGlmaWNhdGlvbihwb3NpdGlvbiA9IFwidG9wUmlnaHRcIiwgbWVzc2FnZSA9IFwiZGVtbyBub3RpZmljYXRpb25cIiwgb3B0aW9uczphbnkgPSB7fSl7XG4gICAgXG4gICAgb3B0aW9ucy50aW1lciA9ICFvcHRpb25zLnRpbWVyID8gdGhpcy5ub3RpZmljYXRpb25PcHRpb25zRGVmYXVsdHMudGltZXIgOiBvcHRpb25zLnRpbWVyO1xuICAgIG9wdGlvbnMuY2xhc3MgPSAhb3B0aW9ucy5jbGFzcyA/IHRoaXMubm90aWZpY2F0aW9uT3B0aW9uc0RlZmF1bHRzLmNsYXNzIDogb3B0aW9ucy5jbGFzcztcbiAgICBvcHRpb25zLnNpemUgPSAhb3B0aW9ucy5zaXplID8gdGhpc