UNPKG

@sedeh/into-pipes

Version:

Have you ever wanted to transform data in different parts of your application into interactive objects without writing a single line of code?

120 lines 19.3 kB
import { Component, Output, EventEmitter } from '@angular/core'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common"; export class SliderComponent { constructor() { this.disabled = false; this.active = true; this.validate = (item, newValue) => true; this.onIntoComponentChange = new EventEmitter(); } onchange(event) { if (!this.disabled) { const code = event.which; if (!code || ((code >= 48) && (code <= 90)) || ((code >= 96) && (code <= 111)) || ((code == 32) || (code == 8)) || ((code >= 186) && (code <= 222))) { this.source = event.target.value; } else if (this.vertical) { if (code === 38) { this.source = this.source + 1; } else if (code === 40) { this.source = this.source - 1; } } else { if (code === 39) { this.source = this.source + 1; } else if (code === 37) { this.source = this.source - 1; } } } if (!this.disabled && this.validate(this.data, this.source)) { this.original = this.source; this.onIntoComponentChange.emit({ id: this.id, name: this.name, value: this.source, type: "slider", item: this.data }); } else { this.source = this.original; } event.target.value = this.source; } static settingsPatterns() { return ['slider::false:true::']; //length, vertical/horixontal, show range, min, max } transform(source, data, args) { this.source = parseInt(source, 10); this.original = this.source; this.data = data; this.length = (args.length && args[0].length) ? parseFloat(args[0]) : 200; this.vertical = args.length > 1 ? String(args[1]) === 'true' : false; this.showRange = args.length > 2 ? String(args[2]) === 'true' : false; this.min = (args.length > 3 && args[3].length) ? args[3] : 0; this.max = (args.length > 4 && args[4].length) ? args[4] : 100; } } SliderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SliderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); SliderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: SliderComponent, selector: "slider-component", outputs: { onIntoComponentChange: "onIntoComponentChange" }, ngImport: i0, template: ` <span class="slidecontainer {{disabled ? 'disabled' : ''}}" [style.width]="!vertical ? length + 'px' : null" [style.height]="vertical ? length + 'px' : null" [class.vertical]="vertical"> <span class="range" *ngIf="showRange"> <span class="min" [textContent]="min"></span> <span class="value" [textContent]="source"></span> <span class="max" [textContent]="max"></span> </span> <input type="range" class="slider" tabindex="{{active ? 0 : -1}}" (change)="onchange($event)" [disabled]="disabled" [attr.value]="source" [attr.min]="min" [attr.max]="max" [attr.id]="id" /> </span> `, isInline: true, styles: [":host .slidecontainer{display:table}:host .slidecontainer.disabled{opacity:var(-sedeh-hover-opacity, .5)}:host .slidecontainer .range{position:relative;display:table;height:12px;font-size:.8rem;width:100%}:host .slidecontainer .range .min{position:absolute;left:0;top:0}:host .slidecontainer .range .value{position:absolute;left:50%;top:0}:host .slidecontainer .range .max{position:absolute;right:0;top:0}:host .slidecontainer .slider{-webkit-appearance:none;background:#d3d3d3;outline:none;opacity:.7;transition:opacity .2s;border:2px inset #aaa;border-radius:33%;width:100%;height:1px}:host .slidecontainer.vertical .slider{transform:rotate(270deg);margin:50% -50%}:host .slidecontainer.vertical .range{width:33px;height:85%;float:left}:host .slidecontainer.vertical .range .min{top:inherit;right:5px;bottom:0}:host .slidecontainer.vertical .range .value{left:inherit;right:5px;top:50%}:host .slidecontainer.vertical .range .max{right:5px;top:0}:host .slider:focus{border-color:var(--sedeh-focus-color, darkblue)!important}:host .slider:hover{opacity:1}:host .slider::-webkit-slider-thumb{appearance:none;background:#444;background-image:linear-gradient(#444,#ddd,#444);cursor:pointer;border-radius:5px;border:2px solid #000;width:22px;height:12px}:host .slider::-moz-range-thumb{background:#444;background-image:linear-gradient(#444,#ddd,#444);border-radius:5px;border:2px solid #000;cursor:pointer;width:22px;height:10px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SliderComponent, decorators: [{ type: Component, args: [{ selector: 'slider-component', template: ` <span class="slidecontainer {{disabled ? 'disabled' : ''}}" [style.width]="!vertical ? length + 'px' : null" [style.height]="vertical ? length + 'px' : null" [class.vertical]="vertical"> <span class="range" *ngIf="showRange"> <span class="min" [textContent]="min"></span> <span class="value" [textContent]="source"></span> <span class="max" [textContent]="max"></span> </span> <input type="range" class="slider" tabindex="{{active ? 0 : -1}}" (change)="onchange($event)" [disabled]="disabled" [attr.value]="source" [attr.min]="min" [attr.max]="max" [attr.id]="id" /> </span> `, styles: [":host .slidecontainer{display:table}:host .slidecontainer.disabled{opacity:var(-sedeh-hover-opacity, .5)}:host .slidecontainer .range{position:relative;display:table;height:12px;font-size:.8rem;width:100%}:host .slidecontainer .range .min{position:absolute;left:0;top:0}:host .slidecontainer .range .value{position:absolute;left:50%;top:0}:host .slidecontainer .range .max{position:absolute;right:0;top:0}:host .slidecontainer .slider{-webkit-appearance:none;background:#d3d3d3;outline:none;opacity:.7;transition:opacity .2s;border:2px inset #aaa;border-radius:33%;width:100%;height:1px}:host .slidecontainer.vertical .slider{transform:rotate(270deg);margin:50% -50%}:host .slidecontainer.vertical .range{width:33px;height:85%;float:left}:host .slidecontainer.vertical .range .min{top:inherit;right:5px;bottom:0}:host .slidecontainer.vertical .range .value{left:inherit;right:5px;top:50%}:host .slidecontainer.vertical .range .max{right:5px;top:0}:host .slider:focus{border-color:var(--sedeh-focus-color, darkblue)!important}:host .slider:hover{opacity:1}:host .slider::-webkit-slider-thumb{appearance:none;background:#444;background-image:linear-gradient(#444,#ddd,#444);cursor:pointer;border-radius:5px;border:2px solid #000;width:22px;height:12px}:host .slider::-moz-range-thumb{background:#444;background-image:linear-gradient(#444,#ddd,#444);border-radius:5px;border:2px solid #000;cursor:pointer;width:22px;height:10px}\n"] }] }], propDecorators: { onIntoComponentChange: [{ type: Output, args: ["onIntoComponentChange"] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludG8tcGlwZXMvc3JjL2xpYi9zbGlkZXIvc2xpZGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUF3QixNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUE4RXRGLE1BQU0sT0FBTyxlQUFlO0lBM0U1QjtRQXVGRSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFDZCxhQUFRLEdBQUcsQ0FBQyxJQUFTLEVBQUUsUUFBYSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFHOUMsMEJBQXFCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztLQXFENUM7SUFuREMsUUFBUSxDQUFDLEtBQVU7UUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztZQUN6QixJQUFJLENBQUMsSUFBSTtnQkFDUCxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUM5QixDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDO2dCQUMvQixDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUM3QixDQUFDLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7YUFDbEM7aUJBQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUN4QixJQUFJLElBQUksS0FBSyxFQUFFLEVBQUU7b0JBQ2YsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztpQkFDL0I7cUJBQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxFQUFFO29CQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO2lCQUMvQjthQUNGO2lCQUFNO2dCQUNMLElBQUksSUFBSSxLQUFLLEVBQUUsRUFBRTtvQkFDZixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO2lCQUMvQjtxQkFBTSxJQUFJLElBQUksS0FBSyxFQUFFLEVBQUU7b0JBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7aUJBQy9CO2FBQ0Y7U0FDRjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDM0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQzVCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUM7Z0JBQzlCLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtnQkFDWCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0JBQ2YsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNO2dCQUNsQixJQUFJLEVBQUUsUUFBUTtnQkFDZCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7YUFDaEIsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUM3QjtRQUNELEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDbkMsQ0FBQztJQUVELE1BQU0sQ0FBQyxnQkFBZ0I7UUFDckIsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxtREFBbUQ7SUFDdEYsQ0FBQztJQUNELFNBQVMsQ0FBQyxNQUFXLEVBQUUsSUFBUyxFQUFFLElBQVc7UUFDM0MsSUFBSSxDQUFDLE1BQU0sR0FBRSxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUM1QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsTUFBTSxHQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQzFFLElBQUksQ0FBQyxRQUFRLEdBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNyRSxJQUFJLENBQUMsU0FBUyxHQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDdEUsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDakUsQ0FBQzs7NkdBckVVLGVBQWU7aUdBQWYsZUFBZSxxSEF6RWQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FzQlQ7NEZBbURRLGVBQWU7a0JBM0UzQixTQUFTOytCQUNJLGtCQUFrQixZQUNsQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXNCVDs4QkFvRUgscUJBQXFCO3NCQURwQixNQUFNO3VCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkLCBSZW5kZXJlcjIsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFBpcGVDb21wb25lbnRJbnRlcmZhY2UgfSBmcm9tICcuLi9jb21tb24vcGlwZS5jb21wb25lbnQuaW50ZXJmYWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzbGlkZXItY29tcG9uZW50JyxcclxuICAgIHRlbXBsYXRlOiBgXHJcbiAgICA8c3BhbiBcclxuICAgICAgY2xhc3M9XCJzbGlkZWNvbnRhaW5lciB7e2Rpc2FibGVkID8gJ2Rpc2FibGVkJyA6ICcnfX1cIiBcclxuICAgICAgW3N0eWxlLndpZHRoXT1cIiF2ZXJ0aWNhbCA/IGxlbmd0aCArICdweCcgOiBudWxsXCJcclxuICAgICAgW3N0eWxlLmhlaWdodF09XCJ2ZXJ0aWNhbCA/IGxlbmd0aCArICdweCcgOiBudWxsXCJcclxuICAgICAgW2NsYXNzLnZlcnRpY2FsXT1cInZlcnRpY2FsXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwicmFuZ2VcIiAqbmdJZj1cInNob3dSYW5nZVwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWluXCIgW3RleHRDb250ZW50XT1cIm1pblwiPjwvc3Bhbj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCIgW3RleHRDb250ZW50XT1cInNvdXJjZVwiPjwvc3Bhbj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1heFwiIFt0ZXh0Q29udGVudF09XCJtYXhcIj48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgICAgPGlucHV0IFxyXG4gICAgICAgIHR5cGU9XCJyYW5nZVwiXHJcbiAgICAgICAgY2xhc3M9XCJzbGlkZXJcIiBcclxuICAgICAgICB0YWJpbmRleD1cInt7YWN0aXZlID8gMCA6IC0xfX1cIiBcclxuICAgICAgICAoY2hhbmdlKT1cIm9uY2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgW2F0dHIudmFsdWVdPVwic291cmNlXCIgXHJcbiAgICAgICAgW2F0dHIubWluXT1cIm1pblwiIFxyXG4gICAgICAgIFthdHRyLm1heF09XCJtYXhcIiBcclxuICAgICAgICBbYXR0ci5pZF09XCJpZFwiIC8+XHJcbiAgICA8L3NwYW4+XHJcbiAgICBgLFxyXG4gICAgc3R5bGVzOiBbXHJcbiAgICAgICAgYFxyXG4gICAgICAgIDpob3N0IC5zbGlkZWNvbnRhaW5lciB7ZGlzcGxheTogdGFibGU7fVxyXG4gICAgICAgIDpob3N0IC5zbGlkZWNvbnRhaW5lci5kaXNhYmxlZCB7b3BhY2l0eTogdmFyKC1zZWRlaC1ob3Zlci1vcGFjaXR5LCAwLjUpO31cclxuICAgICAgICA6aG9zdCAuc2xpZGVjb250YWluZXIgLnJhbmdlIHtwb3NpdGlvbjogcmVsYXRpdmU7IGRpc3BsYXk6IHRhYmxlOyBoZWlnaHQ6IDEycHg7IGZvbnQtc2l6ZTogMC44cmVtO3dpZHRoOiAxMDAlfVxyXG4gICAgICAgIDpob3N0IC5zbGlkZWNvbnRhaW5lciAucmFuZ2UgLm1pbiB7cG9zaXRpb246IGFic29sdXRlO2xlZnQ6IDA7dG9wOiAwfVxyXG4gICAgICAgIDpob3N0IC5zbGlkZWNvbnRhaW5lciAucmFuZ2UgLnZhbHVlIHtwb3NpdGlvbjogYWJzb2x1dGU7bGVmdDogNTAlO3RvcDogMH1cclxuICAgICAgICA6aG9zdCAuc2xpZGVjb250YWluZXIgLnJhbmdlIC5tYXgge3Bvc2l0aW9uOiBhYnNvbHV0ZTtyaWdodDogMDt0b3A6IDB9XHJcbiAgICAgICAgOmhvc3QgLnNsaWRlY29udGFpbmVyIC5zbGlkZXIge1xyXG4gICAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xyXG4gICAgICAgICAgYmFja2dyb3VuZDogI2QzZDNkMztcclxuICAgICAgICAgIG91dGxpbmU6IG5vbmU7XHJcbiAgICAgICAgICBvcGFjaXR5OiAwLjc7XHJcbiAgICAgICAgICAtd2Via2l0LXRyYW5zaXRpb246IC4ycztcclxuICAgICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgLjJzO1xyXG4gICAgICAgICAgYm9yZGVyOiAycHggaW5zZXQgI2FhYTtcclxuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDMzJTtcclxuICAgICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgICAgaGVpZ2h0OiAxcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIDpob3N0IC5zbGlkZWNvbnRhaW5lci52ZXJ0aWNhbCAuc2xpZGVyIHt0cmFuc2Zvcm06IHJvdGF0ZSgyNzBkZWcpOyBtYXJnaW46IDUwJSAtNTAlO31cclxuICAgICAgICA6aG9zdCAuc2xpZGVjb250YWluZXIudmVydGljYWwgLnJhbmdlIHt3aWR0aDogMzNweDtoZWlnaHQ6IDg1JTsgZmxvYXQ6IGxlZnR9XHJcbiAgICAgICAgOmhvc3QgLnNsaWRlY29udGFpbmVyLnZlcnRpY2FsIC5yYW5nZSAubWluIHt0b3A6IGluaGVyaXQ7IHJpZ2h0OjVweDsgYm90dG9tOiAwO31cclxuICAgICAgICA6aG9zdCAuc2xpZGVjb250YWluZXIudmVydGljYWwgLnJhbmdlIC52YWx1ZSB7bGVmdDogaW5oZXJpdDtyaWdodDogNXB4O3RvcDogNTAlfVxyXG4gICAgICAgIDpob3N0IC5zbGlkZWNvbnRhaW5lci52ZXJ0aWNhbCAucmFuZ2UgLm1heCB7cmlnaHQ6NXB4OyB0b3A6IDA7fVxyXG4gICAgICAgIDpob3N0IC5zbGlkZXI6Zm9jdXMge2JvcmRlci1jb2xvcjogdmFyKC0tc2VkZWgtZm9jdXMtY29sb3IsIGRhcmtibHVlKSAhaW1wb3J0YW50O31cclxuICAgICAgICA6aG9zdCAuc2xpZGVyOmhvdmVyIHtvcGFjaXR5OiAxO31cclxuICAgICAgICA6aG9zdCAuc2xpZGVyOjotd2Via2l0LXNsaWRlci10aHVtYiB7XHJcbiAgICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XHJcbiAgICAgICAgICBhcHBlYXJhbmNlOiBub25lO1xyXG4gICAgICAgICAgYmFja2dyb3VuZDogIzQ0NDtcclxuICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgjNDQ0LCAjZGRkLCAjNDQ0KTtcclxuICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcclxuICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkICMwMDA7XHJcbiAgICAgICAgICB3aWR0aDogMjJweDtcclxuICAgICAgICAgIGhlaWdodDogMTJweDtcclxuICAgICAgICB9XHJcbiAgICAgICAgOmhvc3QgLnNsaWRlcjo6LW1vei1yYW5nZS10aHVtYiB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAjNDQ0O1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KCM0NDQsICNkZGQsICM0NDQpO1xyXG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG4gICAgICAgICAgYm9yZGVyOiAycHggc29saWQgIzAwMDtcclxuICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICAgIHdpZHRoOiAyMnB4O1xyXG4gICAgICAgICAgaGVpZ2h0OiAxMHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgICBgXHJcbiAgICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbGlkZXJDb21wb25lbnQgaW1wbGVtZW50cyBQaXBlQ29tcG9uZW50SW50ZXJmYWNlIHtcclxuXHJcbiAgZGF0YTogYW55O1xyXG4gIHNvdXJjZSE6IG51bWJlcjtcclxuICBvcmlnaW5hbCE6IG51bWJlcjtcclxuICBpZCE6IHN0cmluZztcclxuICBuYW1lITogc3RyaW5nO1xyXG4gIHZlcnRpY2FsITogYm9vbGVhbjtcclxuICBzaG93UmFuZ2UhOiBib29sZWFuO1xyXG4gIGxlbmd0aCE6IG51bWJlcjtcclxuICBtaW4hOiBzdHJpbmc7XHJcbiAgbWF4ITogc3RyaW5nO1xyXG4gIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgYWN0aXZlID0gdHJ1ZTtcclxuICB2YWxpZGF0ZSA9IChpdGVtOiBhbnksIG5ld1ZhbHVlOiBhbnkpID0+IHRydWU7XHJcblxyXG4gIEBPdXRwdXQoXCJvbkludG9Db21wb25lbnRDaGFuZ2VcIilcclxuICBvbkludG9Db21wb25lbnRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIG9uY2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICBjb25zdCBjb2RlID0gZXZlbnQud2hpY2g7XHJcbiAgICAgIGlmICghY29kZSB8fCBcclxuICAgICAgICAoKGNvZGUgPj0gNDgpICYmIChjb2RlIDw9IDkwKSkgfHxcclxuICAgICAgICAoKGNvZGUgPj0gOTYpICYmIChjb2RlIDw9IDExMSkpIHx8XHJcbiAgICAgICAgKChjb2RlID09IDMyKSB8fCAoY29kZSA9PSA4KSkgfHxcclxuICAgICAgICAoKGNvZGUgPj0gMTg2KSAmJiAoY29kZSA8PSAyMjIpKSkge1xyXG4gICAgICAgIHRoaXMuc291cmNlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMudmVydGljYWwpIHtcclxuICAgICAgICBpZiAoY29kZSA9PT0gMzgpIHtcclxuICAgICAgICAgIHRoaXMuc291cmNlID0gdGhpcy5zb3VyY2UgKyAxO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PT0gNDApIHtcclxuICAgICAgICAgIHRoaXMuc291cmNlID0gdGhpcy5zb3VyY2UgLSAxO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoY29kZSA9PT0gMzkpIHtcclxuICAgICAgICAgIHRoaXMuc291cmNlID0gdGhpcy5zb3VyY2UgKyAxO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PT0gMzcpIHtcclxuICAgICAgICAgIHRoaXMuc291cmNlID0gdGhpcy5zb3VyY2UgLSAxO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkICYmIHRoaXMudmFsaWRhdGUodGhpcy5kYXRhLCB0aGlzLnNvdXJjZSkpIHtcclxuICAgICAgdGhpcy5vcmlnaW5hbCA9IHRoaXMuc291cmNlO1xyXG4gICAgICB0aGlzLm9uSW50b0NvbXBvbmVudENoYW5nZS5lbWl0KHtcclxuICAgICAgICBpZDogdGhpcy5pZCxcclxuICAgICAgICBuYW1lOiB0aGlzLm5hbWUsXHJcbiAgICAgICAgdmFsdWU6IHRoaXMuc291cmNlLFxyXG4gICAgICAgIHR5cGU6IFwic2xpZGVyXCIsXHJcbiAgICAgICAgaXRlbTogdGhpcy5kYXRhXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zb3VyY2UgPSB0aGlzLm9yaWdpbmFsOyBcclxuICAgIH1cclxuICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9IHRoaXMuc291cmNlO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHNldHRpbmdzUGF0dGVybnMoKSB7XHJcbiAgICByZXR1cm4gWydzbGlkZXI6OmZhbHNlOnRydWU6OiddOyAvL2xlbmd0aCwgdmVydGljYWwvaG9yaXhvbnRhbCwgc2hvdyByYW5nZSwgbWluLCBtYXhcclxuICB9XHJcbiAgdHJhbnNmb3JtKHNvdXJjZTogYW55LCBkYXRhOiBhbnksIGFyZ3M6IGFueVtdKSB7XHJcbiAgICB0aGlzLnNvdXJjZT0gcGFyc2VJbnQoc291cmNlLCAxMCk7XHJcbiAgICB0aGlzLm9yaWdpbmFsID0gdGhpcy5zb3VyY2U7XHJcbiAgICB0aGlzLmRhdGEgPSBkYXRhO1xyXG4gICAgdGhpcy5sZW5ndGg9IChhcmdzLmxlbmd0aCAmJiBhcmdzWzBdLmxlbmd0aCkgPyAgcGFyc2VGbG9hdChhcmdzWzBdKSA6IDIwMDtcclxuICAgIHRoaXMudmVydGljYWw9IGFyZ3MubGVuZ3RoID4gMSA/ICBTdHJpbmcoYXJnc1sxXSkgPT09ICd0cnVlJyA6IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93UmFuZ2U9IGFyZ3MubGVuZ3RoID4gMiA/ICBTdHJpbmcoYXJnc1syXSkgPT09ICd0cnVlJyA6IGZhbHNlO1xyXG4gICAgdGhpcy5taW4gPSAoYXJncy5sZW5ndGggPiAzICYmIGFyZ3NbM10ubGVuZ3RoKSA/IGFyZ3NbM10gOiAwO1xyXG4gICAgdGhpcy5tYXggPSAoYXJncy5sZW5ndGggPiA0ICYmIGFyZ3NbNF0ubGVuZ3RoKSA/IGFyZ3NbNF0gOiAxMDA7XHJcbiAgfVxyXG59XHJcblxyXG4iXX0=