ng-devui
Version:
DevUI components based on Angular
100 lines • 24.2 kB
JavaScript
import { __decorate, __metadata } from "tslib";
import { Component, ElementRef, forwardRef, Input, ViewChild } from '@angular/core';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
import { DevConfigService, WithConfig } from 'ng-devui/utils';
import { TextareaDirective } from './textarea.directive';
import * as i0 from "@angular/core";
import * as i1 from "ng-devui/utils";
import * as i2 from "@angular/forms";
import * as i3 from "./textarea.directive";
export class TextareaMaxLengthComponent {
constructor(el, devConfigService) {
this.el = el;
this.devConfigService = devConfigService;
this.disabled = false;
this.error = false;
this.maxLengthBlocker = false;
this.rows = 3;
this.resize = 'none';
this.styleType = 'default';
this.showGlowStyle = true;
this.onChange = (_) => null;
this.onTouch = () => null;
}
ngAfterViewInit() {
this.textareaElement = this.el.nativeElement.querySelector('textarea');
}
registerOnChange(fn) {
this.onChange = fn;
}
registerOnTouched(fn) {
this.onTouch = fn;
}
setDisabledState(isDisabled) {
this.disabled = isDisabled;
}
writeValue(val) {
this.value = val;
}
valueChanges(val) {
this.value = val;
this.onChange(val);
this.onTouch();
}
blurEvent() {
const event = new Event('blur', { bubbles: false, cancelable: true });
this.el.nativeElement.dispatchEvent(event);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TextareaMaxLengthComponent, deps: [{ token: i0.ElementRef }, { token: i1.DevConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TextareaMaxLengthComponent, selector: "d-textarea-max-length", inputs: { disabled: "disabled", error: "error", maxLength: "maxLength", maxLengthBlocker: "maxLengthBlocker", placeholder: "placeholder", rows: "rows", maxWidth: "maxWidth", maxHeight: "maxHeight", resize: "resize", styleType: "styleType", showGlowStyle: "showGlowStyle" }, providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => TextareaMaxLengthComponent),
multi: true,
},
], viewQueries: [{ propertyName: "textareaInstance", first: true, predicate: TextareaDirective, descendants: true }], ngImport: i0, template: "<div\r\n class=\"devui-textarea-container\"\r\n [class.devui-glow-style]=\"showGlowStyle\"\r\n [class.devui-gray-style]=\"styleType === 'gray'\"\r\n [class.error]=\"error\"\r\n [style.resize]=\"disabled ? 'none' : resize\"\r\n [style.max-width]=\"maxWidth\"\r\n [style.max-height]=\"maxHeight\"\r\n>\r\n <textarea\r\n dTextarea\r\n [disabled]=\"disabled\"\r\n [error]=\"error\"\r\n [maxLength]=\"maxLength\"\r\n [maxLengthBlocker]=\"maxLengthBlocker\"\r\n [maxLengthCounter]=\"true\"\r\n [placeholder]=\"placeholder\"\r\n [rows]=\"rows\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"valueChanges($event)\"\r\n (blur)=\"blurEvent()\"\r\n ></textarea>\r\n</div>\r\n", styles: [".devui-font-size-base{font-size:var(--devui-font-size, 12px)}.devui-font-base{font-size:var(--devui-font-size, 12px);font-weight:var(--devui-font-content-weight, normal);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-modal-title{font-size:var(--devui-font-size-modal-title, 18px)}.devui-font-modal-title{font-size:var(--devui-font-size-modal-title, 18px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-page-title{font-size:var(--devui-font-size-page-title, 16px)}.devui-font-page-title{font-size:var(--devui-font-size-page-title, 16px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-secondary-title{font-size:var(--devui-font-size-card-title, 14px)}.devui-font-secondary-title{font-size:var(--devui-font-size-card-title, 14px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}:host{display:block}:host ::ng-deep .devui-textarea-container{overflow:hidden;position:relative;width:100%;height:fit-content;min-width:160px;min-height:64px;border:1px solid var(--devui-form-control-line, #dbdbdb);border-radius:var(--devui-border-radius, 2px);color:var(--devui-text, #191919);outline:none;background-color:var(--devui-form-control-bg, #ffffff);box-shadow:0 0 0 0 var(--devui-form-control-interactive-outline, rgba(94, 124, 224, .08));transition:border-color .3s var(--devui-animation-ease-in-out-smooth, cubic-bezier(.645, .045, .355, 1)),box-shadow var(--devui-animation-duration-base, .2s) var(--devui-animation-ease-in, cubic-bezier(.5, 0, .84, .25))}:host ::ng-deep .devui-textarea-container.devui-glow-style:not([disabled]):not(.disabled):not(.devui-disabled):not(.error):not(.devui-error):not(.inner-input):hover{box-shadow:0 0 0 4px var(--devui-form-control-interactive-outline, rgba(94, 124, 224, .08))}:host ::ng-deep .devui-textarea-container.devui-glow-style:not([disabled]):not(.disabled):not(.devui-disabled):not(.error):not(.devui-error):not(.inner-input):focus-within{border-color:var(--devui-form-control-line-active, #0a59f7);box-shadow:0 0 0 4px var(--devui-form-control-interactive-outline, rgba(94, 124, 224, .08))}:host ::ng-deep .devui-textarea-container.devui-glow-style:not([disabled]):not(.disabled):not(.devui-disabled):not(.error):not(.devui-error):not(.inner-input):active{box-shadow:none}:host ::ng-deep .devui-textarea-container.devui-gray-style:not([disabled]){transition:all var(--devui-animation-duration-slow, .3s) var(--devui-animation-ease-in-out-smooth, cubic-bezier(.645, .045, .355, 1))}:host ::ng-deep .devui-textarea-container.devui-gray-style:not([disabled]):not(:focus-within){background:var(--devui-gray-form-control-bg, #f5f5f5)!important;border-color:var(--devui-gray-form-control-bg, #f5f5f5)!important}:host ::ng-deep .devui-textarea-container.devui-gray-style:not([disabled]):not(:focus-within):hover{background-color:var(--devui-gray-form-control-hover-bg, #dfdfdf)!important;border-color:var(--devui-gray-form-control-hover-bg, #dfdfdf)!important}:host ::ng-deep .devui-textarea-container.devui-gray-style[disabled]{background-color:var(--devui-disabled-bg, #f3f3f3)!important;border-color:transparent!important}:host ::ng-deep .devui-textarea-container:not(.devui-glow-style):not([disabled]):not(.disabled):not(.devui-disabled):not(.error):not(.devui-error):hover{border-color:var(--devui-form-control-line-hover, #808080)}:host ::ng-deep .devui-textarea-container:not(.devui-glow-style):not([disabled]):not(.disabled):not(.devui-disabled):not(.error):not(.devui-error):focus-within{border-color:var(--devui-form-control-line-active, #0a59f7)}:host ::ng-deep .devui-textarea-container::placeholder{color:var(--devui-placeholder, #808080)}:host ::ng-deep .devui-textarea-container:focus-within:placeholder-shown::placeholder{color:transparent;transition:all var(--devui-animation-duration-slow, .3s) var(--devui-animation-ease-in-out-smooth, cubic-bezier(.645, .045, .355, 1))}:host ::ng-deep .devui-textarea-container:not(.disabled):not(.devui-disabled).error,:host ::ng-deep .devui-textarea-container:not(.disabled):not(.devui-disabled).devui-error{border-color:var(--devui-danger-line, #e02128);background-color:var(--devui-danger-bg, #fabdc1)}:host ::ng-deep .devui-textarea-container textarea{box-sizing:border-box;padding:4px 8px;vertical-align:middle;border:none;border-bottom:solid 32px transparent!important;min-width:160px;min-height:64px;width:100%;height:100%}:host ::ng-deep .devui-textarea-container.disabled,:host ::ng-deep .devui-textarea-container.disabled:hover,:host ::ng-deep .devui-textarea-container.devui-disabled,:host ::ng-deep .devui-textarea-container.devui-disabled:hover{cursor:not-allowed;background-color:var(--devui-disabled-bg, #f3f3f3);border-color:var(--devui-disabled-line, #e6e6e6)}:host ::ng-deep .devui-textarea-container.disabled textarea[dTextarea],:host ::ng-deep .devui-textarea-container.disabled textarea[dTextarea]:hover,:host ::ng-deep .devui-textarea-container.devui-disabled textarea[dTextarea],:host ::ng-deep .devui-textarea-container.devui-disabled textarea[dTextarea]:hover{color:var(--devui-disabled-text, #c2c2c2)}:host ::ng-deep .devui-textarea-container .devui-textarea-counter{float:none;position:absolute}\n"], dependencies: [{ kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.TextareaDirective, selector: "[dTextarea]", inputs: ["maxLengthBlocker", "maxLengthCounter", "resize", "error", "rows", "styleType", "showGlowStyle"], exportAs: ["dTextarea"] }] }); }
}
__decorate([
WithConfig(),
__metadata("design:type", Object)
], TextareaMaxLengthComponent.prototype, "styleType", void 0);
__decorate([
WithConfig(),
__metadata("design:type", Object)
], TextareaMaxLengthComponent.prototype, "showGlowStyle", void 0);
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TextareaMaxLengthComponent, decorators: [{
type: Component,
args: [{ selector: 'd-textarea-max-length', providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => TextareaMaxLengthComponent),
multi: true,
},
], preserveWhitespaces: false, template: "<div\r\n class=\"devui-textarea-container\"\r\n [class.devui-glow-style]=\"showGlowStyle\"\r\n [class.devui-gray-style]=\"styleType === 'gray'\"\r\n [class.error]=\"error\"\r\n [style.resize]=\"disabled ? 'none' : resize\"\r\n [style.max-width]=\"maxWidth\"\r\n [style.max-height]=\"maxHeight\"\r\n>\r\n <textarea\r\n dTextarea\r\n [disabled]=\"disabled\"\r\n [error]=\"error\"\r\n [maxLength]=\"maxLength\"\r\n [maxLengthBlocker]=\"maxLengthBlocker\"\r\n [maxLengthCounter]=\"true\"\r\n [placeholder]=\"placeholder\"\r\n [rows]=\"rows\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"valueChanges($event)\"\r\n (blur)=\"blurEvent()\"\r\n ></textarea>\r\n</div>\r\n", styles: [".devui-font-size-base{font-size:var(--devui-font-size, 12px)}.devui-font-base{font-size:var(--devui-font-size, 12px);font-weight:var(--devui-font-content-weight, normal);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-modal-title{font-size:var(--devui-font-size-modal-title, 18px)}.devui-font-modal-title{font-size:var(--devui-font-size-modal-title, 18px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-page-title{font-size:var(--devui-font-size-page-title, 16px)}.devui-font-page-title{font-size:var(--devui-font-size-page-title, 16px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-secondary-title{font-size:var(--devui-font-size-card-title, 14px)}.devui-font-secondary-title{font-size:var(--devui-font-size-card-title, 14px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}:host{display:block}:host ::ng-deep .devui-textarea-container{overflow:hidden;position:relative;width:100%;height:fit-content;min-width:160px;min-height:64px;border:1px solid var(--devui-form-control-line, #dbdbdb);border-radius:var(--devui-border-radius, 2px);color:var(--devui-text, #191919);outline:none;background-color:var(--devui-form-control-bg, #ffffff);box-shadow:0 0 0 0 var(--devui-form-control-interactive-outline, rgba(94, 124, 224, .08));transition:border-color .3s var(--devui-animation-ease-in-out-smooth, cubic-bezier(.645, .045, .355, 1)),box-shadow var(--devui-animation-duration-base, .2s) var(--devui-animation-ease-in, cubic-bezier(.5, 0, .84, .25))}:host ::ng-deep .devui-textarea-container.devui-glow-style:not([disabled]):not(.disabled):not(.devui-disabled):not(.error):not(.devui-error):not(.inner-input):hover{box-shadow:0 0 0 4px var(--devui-form-control-interactive-outline, rgba(94, 124, 224, .08))}:host ::ng-deep .devui-textarea-container.devui-glow-style:not([disabled]):not(.disabled):not(.devui-disabled):not(.error):not(.devui-error):not(.inner-input):focus-within{border-color:var(--devui-form-control-line-active, #0a59f7);box-shadow:0 0 0 4px var(--devui-form-control-interactive-outline, rgba(94, 124, 224, .08))}:host ::ng-deep .devui-textarea-container.devui-glow-style:not([disabled]):not(.disabled):not(.devui-disabled):not(.error):not(.devui-error):not(.inner-input):active{box-shadow:none}:host ::ng-deep .devui-textarea-container.devui-gray-style:not([disabled]){transition:all var(--devui-animation-duration-slow, .3s) var(--devui-animation-ease-in-out-smooth, cubic-bezier(.645, .045, .355, 1))}:host ::ng-deep .devui-textarea-container.devui-gray-style:not([disabled]):not(:focus-within){background:var(--devui-gray-form-control-bg, #f5f5f5)!important;border-color:var(--devui-gray-form-control-bg, #f5f5f5)!important}:host ::ng-deep .devui-textarea-container.devui-gray-style:not([disabled]):not(:focus-within):hover{background-color:var(--devui-gray-form-control-hover-bg, #dfdfdf)!important;border-color:var(--devui-gray-form-control-hover-bg, #dfdfdf)!important}:host ::ng-deep .devui-textarea-container.devui-gray-style[disabled]{background-color:var(--devui-disabled-bg, #f3f3f3)!important;border-color:transparent!important}:host ::ng-deep .devui-textarea-container:not(.devui-glow-style):not([disabled]):not(.disabled):not(.devui-disabled):not(.error):not(.devui-error):hover{border-color:var(--devui-form-control-line-hover, #808080)}:host ::ng-deep .devui-textarea-container:not(.devui-glow-style):not([disabled]):not(.disabled):not(.devui-disabled):not(.error):not(.devui-error):focus-within{border-color:var(--devui-form-control-line-active, #0a59f7)}:host ::ng-deep .devui-textarea-container::placeholder{color:var(--devui-placeholder, #808080)}:host ::ng-deep .devui-textarea-container:focus-within:placeholder-shown::placeholder{color:transparent;transition:all var(--devui-animation-duration-slow, .3s) var(--devui-animation-ease-in-out-smooth, cubic-bezier(.645, .045, .355, 1))}:host ::ng-deep .devui-textarea-container:not(.disabled):not(.devui-disabled).error,:host ::ng-deep .devui-textarea-container:not(.disabled):not(.devui-disabled).devui-error{border-color:var(--devui-danger-line, #e02128);background-color:var(--devui-danger-bg, #fabdc1)}:host ::ng-deep .devui-textarea-container textarea{box-sizing:border-box;padding:4px 8px;vertical-align:middle;border:none;border-bottom:solid 32px transparent!important;min-width:160px;min-height:64px;width:100%;height:100%}:host ::ng-deep .devui-textarea-container.disabled,:host ::ng-deep .devui-textarea-container.disabled:hover,:host ::ng-deep .devui-textarea-container.devui-disabled,:host ::ng-deep .devui-textarea-container.devui-disabled:hover{cursor:not-allowed;background-color:var(--devui-disabled-bg, #f3f3f3);border-color:var(--devui-disabled-line, #e6e6e6)}:host ::ng-deep .devui-textarea-container.disabled textarea[dTextarea],:host ::ng-deep .devui-textarea-container.disabled textarea[dTextarea]:hover,:host ::ng-deep .devui-textarea-container.devui-disabled textarea[dTextarea],:host ::ng-deep .devui-textarea-container.devui-disabled textarea[dTextarea]:hover{color:var(--devui-disabled-text, #c2c2c2)}:host ::ng-deep .devui-textarea-container .devui-textarea-counter{float:none;position:absolute}\n"] }]
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.DevConfigService }], propDecorators: { textareaInstance: [{
type: ViewChild,
args: [TextareaDirective]
}], disabled: [{
type: Input
}], error: [{
type: Input
}], maxLength: [{
type: Input
}], maxLengthBlocker: [{
type: Input
}], placeholder: [{
type: Input
}], rows: [{
type: Input
}], maxWidth: [{
type: Input
}], maxHeight: [{
type: Input
}], resize: [{
type: Input
}], styleType: [{
type: Input
}], showGlowStyle: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEtbWF4LWxlbmd0aC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9kZXZ1aS90ZXh0YXJlYS90ZXh0YXJlYS1tYXgtbGVuZ3RoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL2RldnVpL3RleHRhcmVhL3RleHRhcmVhLW1heC1sZW5ndGguY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7OztBQWV6RCxNQUFNLE9BQU8sMEJBQTBCO0lBb0JyQyxZQUFvQixFQUFjLEVBQVUsZ0JBQWtDO1FBQTFELE9BQUUsR0FBRixFQUFFLENBQVk7UUFBVSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBbEJyRSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLFVBQUssR0FBRyxLQUFLLENBQUM7UUFFZCxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFFekIsU0FBSSxHQUFHLENBQUMsQ0FBQztRQUdULFdBQU0sR0FBNEQsTUFBTSxDQUFDO1FBQzNELGNBQVMsR0FBRyxTQUFTLENBQUM7UUFDdEIsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFLcEMsYUFBUSxHQUFHLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFDNUIsWUFBTyxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztJQUVvRCxDQUFDO0lBRWxGLGVBQWU7UUFDYixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsRUFBTztRQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBTztRQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsVUFBbUI7UUFDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7SUFDN0IsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFXO1FBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO0lBQ25CLENBQUM7SUFFRCxZQUFZLENBQUMsR0FBVztRQUN0QixJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztRQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQsU0FBUztRQUNQLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLENBQUM7K0dBbkRVLDBCQUEwQjttR0FBMUIsMEJBQTBCLGtVQVQxQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsMEJBQTBCLENBQUM7Z0JBQ3pELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRiw0RUFJVSxpQkFBaUIsZ0RDbkI5Qixvc0JBdUJBOztBRE15QjtJQUFiLFVBQVUsRUFBRTs7NkRBQXVCO0FBQ3RCO0lBQWIsVUFBVSxFQUFFOztpRUFBc0I7NEZBWmpDLDBCQUEwQjtrQkFidEMsU0FBUzsrQkFDRSx1QkFBdUIsYUFHdEI7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsMkJBQTJCLENBQUM7NEJBQ3pELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGLHVCQUNvQixLQUFLOzhHQUdJLGdCQUFnQjtzQkFBN0MsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBQ25CLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ2lCLFNBQVM7c0JBQS9CLEtBQUs7Z0JBQ2lCLGFBQWE7c0JBQW5DLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIGZvcndhcmRSZWYsIElucHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBEZXZDb25maWdTZXJ2aWNlLCBXaXRoQ29uZmlnIH0gZnJvbSAnbmctZGV2dWkvdXRpbHMnO1xyXG5pbXBvcnQgeyBUZXh0YXJlYURpcmVjdGl2ZSB9IGZyb20gJy4vdGV4dGFyZWEuZGlyZWN0aXZlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZC10ZXh0YXJlYS1tYXgtbGVuZ3RoJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGV4dGFyZWEtbWF4LWxlbmd0aC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGV4dGFyZWEtbWF4LWxlbmd0aC5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGV4dGFyZWFNYXhMZW5ndGhDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgXSxcclxuICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRleHRhcmVhTWF4TGVuZ3RoQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyVmlld0luaXQge1xyXG4gIEBWaWV3Q2hpbGQoVGV4dGFyZWFEaXJlY3RpdmUpIHRleHRhcmVhSW5zdGFuY2U6IFRleHRhcmVhRGlyZWN0aXZlO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZXJyb3IgPSBmYWxzZTtcclxuICBASW5wdXQoKSBtYXhMZW5ndGg6IG51bWJlcjtcclxuICBASW5wdXQoKSBtYXhMZW5ndGhCbG9ja2VyID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcclxuICBASW5wdXQoKSByb3dzID0gMztcclxuICBASW5wdXQoKSBtYXhXaWR0aDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG1heEhlaWdodDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHJlc2l6ZTogJ25vbmUnIHwgJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJyB8ICdib3RoJyB8ICdpbmhlcml0JyA9ICdub25lJztcclxuICBASW5wdXQoKSBAV2l0aENvbmZpZygpIHN0eWxlVHlwZSA9ICdkZWZhdWx0JztcclxuICBASW5wdXQoKSBAV2l0aENvbmZpZygpIHNob3dHbG93U3R5bGUgPSB0cnVlO1xyXG5cclxuICB0ZXh0YXJlYUVsZW1lbnQ6IEhUTUxUZXh0QXJlYUVsZW1lbnQ7XHJcbiAgdmFsdWU6IHN0cmluZztcclxuXHJcbiAgcHJpdmF0ZSBvbkNoYW5nZSA9IChfOiBhbnkpID0+IG51bGw7XHJcbiAgcHJpdmF0ZSBvblRvdWNoID0gKCkgPT4gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZiwgcHJpdmF0ZSBkZXZDb25maWdTZXJ2aWNlOiBEZXZDb25maWdTZXJ2aWNlKSB7fVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRleHRhcmVhRWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCd0ZXh0YXJlYScpO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2ggPSBmbjtcclxuICB9XHJcblxyXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHZhbDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlID0gdmFsO1xyXG4gIH1cclxuXHJcbiAgdmFsdWVDaGFuZ2VzKHZhbDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlID0gdmFsO1xyXG4gICAgdGhpcy5vbkNoYW5nZSh2YWwpO1xyXG4gICAgdGhpcy5vblRvdWNoKCk7XHJcbiAgfVxyXG5cclxuICBibHVyRXZlbnQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBldmVudCA9IG5ldyBFdmVudCgnYmx1cicsIHsgYnViYmxlczogZmFsc2UsIGNhbmNlbGFibGU6IHRydWUgfSk7XHJcbiAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChldmVudCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICBjbGFzcz1cImRldnVpLXRleHRhcmVhLWNvbnRhaW5lclwiXHJcbiAgW2NsYXNzLmRldnVpLWdsb3ctc3R5bGVdPVwic2hvd0dsb3dTdHlsZVwiXHJcbiAgW2NsYXNzLmRldnVpLWdyYXktc3R5bGVdPVwic3R5bGVUeXBlID09PSAnZ3JheSdcIlxyXG4gIFtjbGFzcy5lcnJvcl09XCJlcnJvclwiXHJcbiAgW3N0eWxlLnJlc2l6ZV09XCJkaXNhYmxlZCA/ICdub25lJyA6IHJlc2l6ZVwiXHJcbiAgW3N0eWxlLm1heC13aWR0aF09XCJtYXhXaWR0aFwiXHJcbiAgW3N0eWxlLm1heC1oZWlnaHRdPVwibWF4SGVpZ2h0XCJcclxuPlxyXG4gIDx0ZXh0YXJlYVxyXG4gICAgZFRleHRhcmVhXHJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgW2Vycm9yXT1cImVycm9yXCJcclxuICAgIFttYXhMZW5ndGhdPVwibWF4TGVuZ3RoXCJcclxuICAgIFttYXhMZW5ndGhCbG9ja2VyXT1cIm1heExlbmd0aEJsb2NrZXJcIlxyXG4gICAgW21heExlbmd0aENvdW50ZXJdPVwidHJ1ZVwiXHJcbiAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxyXG4gICAgW3Jvd3NdPVwicm93c1wiXHJcbiAgICBbbmdNb2RlbF09XCJ2YWx1ZVwiXHJcbiAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWx1ZUNoYW5nZXMoJGV2ZW50KVwiXHJcbiAgICAoYmx1cik9XCJibHVyRXZlbnQoKVwiXHJcbiAgPjwvdGV4dGFyZWE+XHJcbjwvZGl2PlxyXG4iXX0=