@angular-mdl/core
Version:
Angular components, directives and styles based on material design lite https://getmdl.io.
193 lines • 23.7 kB
JavaScript
import { Directive, ElementRef, Input, Renderer2, } from "@angular/core";
import { MaterialRipple } from "./ripple.vendor";
import * as i0 from "@angular/core";
const RIPPLE = "mdl-ripple";
// known bugs: https://github.com/google/material-design-lite/issues/4215
export class MdlRippleDirective {
constructor(elementRef, renderer, cssContainerClasses) {
this.elementRef = elementRef;
this.renderer = renderer;
this.cssContainerClasses = cssContainerClasses;
this.rippleActive = true;
this.el = elementRef.nativeElement;
}
ngOnChanges() {
// remove any existing ripple container
if (this.rippleContainer) {
this.el.removeChild(this.rippleContainer);
delete this.rippleContainer;
delete this.ripple;
}
// if used as mdl-ripple without property binding it is an empty string
// otherwise (e.g. [mdl-ripple] it is a boolean - may be with the default value true.
if (this.rippleActive === "" || this.rippleActive) {
this.rippleContainer = this.renderer.createElement("span");
this.cssContainerClasses.forEach((cssClass) => {
this.renderer.addClass(this.rippleContainer, cssClass);
});
const rippleElement = this.renderer.createElement("span");
this.renderer.addClass(rippleElement, RIPPLE);
this.rippleContainer?.appendChild(rippleElement);
if (this.rippleContainer) {
this.el.appendChild(this.rippleContainer);
}
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
this.ripple = new MaterialRipple(this.renderer, this.el);
}
}
}
MdlRippleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlRippleDirective, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
MdlRippleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: MdlRippleDirective, usesOnChanges: true, ngImport: i0 });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlRippleDirective, decorators: [{
type: Directive
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: undefined }]; } });
export class MdlButtonRippleDirective extends MdlRippleDirective {
constructor(elementRef, renderer) {
super(elementRef, renderer, ["mdl-button__ripple-container"]);
// eslint-disable-next-line
this.rippleActive = true;
}
}
MdlButtonRippleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlButtonRippleDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
MdlButtonRippleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: MdlButtonRippleDirective, selector: "mdl-button[mdl-ripple], button[mdl-ripple]", inputs: { rippleActive: ["mdl-ripple", "rippleActive"] }, usesInheritance: true, ngImport: i0 });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlButtonRippleDirective, decorators: [{
type: Directive,
args: [{
// eslint-disable-next-line
selector: "mdl-button[mdl-ripple], button[mdl-ripple]",
}]
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { rippleActive: [{
type: Input,
args: ["mdl-ripple"]
}] } });
export class MdlCheckboxRippleDirective extends MdlRippleDirective {
constructor(elementRef, renderer) {
super(elementRef, renderer, [
"mdl-checkbox__ripple-container",
"mdl-ripple--center",
]);
// eslint-disable-next-line
this.rippleActive = true;
}
}
MdlCheckboxRippleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlCheckboxRippleDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
MdlCheckboxRippleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: MdlCheckboxRippleDirective, selector: "mdl-checkbox[mdl-ripple]", inputs: { rippleActive: ["mdl-ripple", "rippleActive"] }, usesInheritance: true, ngImport: i0 });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlCheckboxRippleDirective, decorators: [{
type: Directive,
args: [{
// eslint-disable-next-line
selector: "mdl-checkbox[mdl-ripple]",
}]
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { rippleActive: [{
type: Input,
args: ["mdl-ripple"]
}] } });
export class MdlRadioRippleDirective extends MdlRippleDirective {
constructor(elementRef, renderer) {
super(elementRef, renderer, [
"mdl-radio__ripple-container",
"mdl-ripple--center",
]);
// eslint-disable-next-line
this.rippleActive = true;
}
}
MdlRadioRippleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlRadioRippleDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
MdlRadioRippleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: MdlRadioRippleDirective, selector: "mdl-radio[mdl-ripple]", inputs: { rippleActive: ["mdl-ripple", "rippleActive"] }, usesInheritance: true, ngImport: i0 });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlRadioRippleDirective, decorators: [{
type: Directive,
args: [{
// eslint-disable-next-line
selector: "mdl-radio[mdl-ripple]",
}]
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { rippleActive: [{
type: Input,
args: ["mdl-ripple"]
}] } });
export class MdlIconToggleRippleDirective extends MdlRippleDirective {
constructor(elementRef, renderer) {
super(elementRef, renderer, [
"mdl-icon-toggle__ripple-container",
"mdl-ripple--center",
]);
// eslint-disable-next-line
this.rippleActive = true;
}
}
MdlIconToggleRippleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlIconToggleRippleDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
MdlIconToggleRippleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: MdlIconToggleRippleDirective, selector: "mdl-icon-toggle[mdl-ripple]", inputs: { rippleActive: ["mdl-ripple", "rippleActive"] }, usesInheritance: true, ngImport: i0 });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlIconToggleRippleDirective, decorators: [{
type: Directive,
args: [{
// eslint-disable-next-line
selector: "mdl-icon-toggle[mdl-ripple]",
}]
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { rippleActive: [{
type: Input,
args: ["mdl-ripple"]
}] } });
export class MdlSwitchRippleDirective extends MdlRippleDirective {
constructor(elementRef, renderer) {
super(elementRef, renderer, [
"mdl-switch__ripple-container",
"mdl-ripple--center",
]);
// eslint-disable-next-line
this.rippleActive = true;
}
}
MdlSwitchRippleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlSwitchRippleDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
MdlSwitchRippleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: MdlSwitchRippleDirective, selector: "mdl-switch[mdl-ripple]", inputs: { rippleActive: ["mdl-ripple", "rippleActive"] }, usesInheritance: true, ngImport: i0 });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlSwitchRippleDirective, decorators: [{
type: Directive,
args: [{
// eslint-disable-next-line
selector: "mdl-switch[mdl-ripple]",
}]
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { rippleActive: [{
type: Input,
args: ["mdl-ripple"]
}] } });
export class MdlMenuItemRippleDirective extends MdlRippleDirective {
constructor(elementRef, renderer) {
super(elementRef, renderer, ["mdl-menu__item--ripple-container"]);
// eslint-disable-next-line
this.rippleActive = true;
}
}
MdlMenuItemRippleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlMenuItemRippleDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
MdlMenuItemRippleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: MdlMenuItemRippleDirective, selector: "mdl-menu-item[mdl-ripple]", inputs: { rippleActive: ["mdl-ripple", "rippleActive"] }, usesInheritance: true, ngImport: i0 });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlMenuItemRippleDirective, decorators: [{
type: Directive,
args: [{
// eslint-disable-next-line
selector: "mdl-menu-item[mdl-ripple]",
}]
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { rippleActive: [{
type: Input,
args: ["mdl-ripple"]
}] } });
export class MdlAnchorRippleDirective extends MdlRippleDirective {
constructor(elementRef, renderer) {
super(elementRef, renderer, [
"mdl-tabs__ripple-container",
"mdl-layout__tab-ripple-container",
]);
// eslint-disable-next-line
this.rippleActive = true;
}
}
MdlAnchorRippleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlAnchorRippleDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
MdlAnchorRippleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: MdlAnchorRippleDirective, selector: "a[mdl-ripple],div[mdl-ripple]", inputs: { rippleActive: ["mdl-ripple", "rippleActive"] }, usesInheritance: true, ngImport: i0 });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlAnchorRippleDirective, decorators: [{
type: Directive,
args: [{
// eslint-disable-next-line
selector: "a[mdl-ripple],div[mdl-ripple]",
}]
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { rippleActive: [{
type: Input,
args: ["mdl-ripple"]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWRsLXJpcHBsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvcmlwcGxlL21kbC1yaXBwbGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFFTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUVqRCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUM7QUFFNUIseUVBQXlFO0FBRXpFLE1BQU0sT0FBTyxrQkFBa0I7SUFPN0IsWUFDVSxVQUFzQixFQUN2QixRQUFtQixFQUNsQixtQkFBNkI7UUFGN0IsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN2QixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ2xCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBVTtRQVJ2QyxpQkFBWSxHQUFxQixJQUFJLENBQUM7UUFVcEMsSUFBSSxDQUFDLEVBQUUsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxXQUFXO1FBQ1QsdUNBQXVDO1FBQ3ZDLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN4QixJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDMUMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQzVCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUNwQjtRQUVELHVFQUF1RTtRQUN2RSxxRkFBcUY7UUFDckYsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLEVBQUUsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ2pELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7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LENBQUM7UUFQTCwyQkFBMkI7UUFDVSxpQkFBWSxHQUFxQixJQUFJLENBQUM7SUFPM0UsQ0FBQzs7cUhBVFUsd0JBQXdCO3lHQUF4Qix3QkFBd0I7MkZBQXhCLHdCQUF3QjtrQkFKcEMsU0FBUzttQkFBQztvQkFDVCwyQkFBMkI7b0JBQzNCLFFBQVEsRUFBRSwrQkFBK0I7aUJBQzFDO3lIQUdzQyxZQUFZO3NCQUFoRCxLQUFLO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIFJlbmRlcmVyMixcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE1hdGVyaWFsUmlwcGxlIH0gZnJvbSBcIi4vcmlwcGxlLnZlbmRvclwiO1xuXG5jb25zdCBSSVBQTEUgPSBcIm1kbC1yaXBwbGVcIjtcblxuLy8ga25vd24gYnVnczogaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9tYXRlcmlhbC1kZXNpZ24tbGl0ZS9pc3N1ZXMvNDIxNVxuQERpcmVjdGl2ZSgpXG5leHBvcnQgY2xhc3MgTWRsUmlwcGxlRGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgcHVibGljIGVsOiBIVE1MRWxlbWVudDtcbiAgcmlwcGxlQWN0aXZlOiBib29sZWFuIHwgc3RyaW5nID0gdHJ1ZTtcblxuICBwcml2YXRlIHJpcHBsZUNvbnRhaW5lcjogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmlwcGxlOiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgY3NzQ29udGFpbmVyQ2xhc3Nlczogc3RyaW5nW11cbiAgKSB7XG4gICAgdGhpcy5lbCA9IGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIC8vIHJlbW92ZSBhbnkgZXhpc3RpbmcgcmlwcGxlIGNvbnRhaW5lclxuICAgIGlmICh0aGlzLnJpcHBsZUNvbnRhaW5lcikge1xuICAgICAgdGhpcy5lbC5yZW1vdmVDaGlsZCh0aGlzLnJpcHBsZUNvbnRhaW5lcik7XG4gICAgICBkZWxldGUgdGhpcy5yaXBwbGVDb250YWluZXI7XG4gICAgICBkZWxldGUgdGhpcy5yaXBwbGU7XG4gICAgfVxuXG4gICAgLy8gaWYgdXNlZCBhcyBtZGwtcmlwcGxlIHdpdGhvdXQgcHJvcGVydHkgYmluZGluZyBpdCBpcyBhbiBlbXB0eSBzdHJpbmdcbiAgICAvLyBvdGhlcndpc2UgKGUuZy4gW21kbC1yaXBwbGVdIGl0IGlzIGEgYm9vbGVhbiAtIG1heSBiZSB3aXRoIHRoZSBkZWZhdWx0IHZhbHVlIHRydWUuXG4gICAgaWYgKHRoaXMucmlwcGxlQWN0aXZlID09PSBcIlwiIHx8IHRoaXMucmlwcGxlQWN0aXZlKSB7XG4gICAgICB0aGlzLnJpcHBsZUNvbnRhaW5lciA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudChcInNwYW5cIik7XG4gICAgICB0aGlzLmNzc0NvbnRhaW5lckNsYXNzZXMuZm9yRWFjaCgoY3NzQ2xhc3MpID0+IHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLnJpcHBsZUNvbnRhaW5lciwgY3NzQ2xhc3MpO1xuICAgICAgfSk7XG4gICAgICBjb25zdCByaXBwbGVFbGVtZW50ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KFwic3BhblwiKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MocmlwcGxlRWxlbWVudCwgUklQUExFKTtcbiAgICAgIHRoaXMucmlwcGxlQ29udGFpbmVyPy5hcHBlbmRDaGlsZChyaXBwbGVFbGVtZW50KTtcbiAgICAgIGlmICh0aGlzLnJpcHBsZUNvbnRhaW5lcikge1xuICAgICAgICB0aGlzLmVsLmFwcGVuZENoaWxkKHRoaXMucmlwcGxlQ29udGFpbmVyKTtcbiAgICAgIH1cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRoaXMucmlwcGxlID0gbmV3IE1hdGVyaWFsUmlwcGxlKHRoaXMucmVuZGVyZXIsIHRoaXMuZWwpO1xuICAgIH1cbiAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIHNlbGVjdG9yOiBcIm1kbC1idXR0b25bbWRsLXJpcHBsZV0sIGJ1dHRvblttZGwtcmlwcGxlXVwiLFxufSlcbmV4cG9ydCBjbGFzcyBNZGxCdXR0b25SaXBwbGVEaXJlY3RpdmUgZXh0ZW5kcyBNZGxSaXBwbGVEaXJlY3RpdmUge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgQElucHV0KFwibWRsLXJpcHBsZVwiKSBwdWJsaWMgb3ZlcnJpZGUgcmlwcGxlQWN0aXZlOiBib29sZWFuIHwgc3RyaW5nID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihlbGVtZW50UmVmOiBFbGVtZW50UmVmLCByZW5kZXJlcjogUmVuZGVyZXIyKSB7XG4gICAgc3VwZXIoZWxlbWVudFJlZiwgcmVuZGVyZXIsIFtcIm1kbC1idXR0b25fX3JpcHBsZS1jb250YWluZXJcIl0pO1xuICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgc2VsZWN0b3I6IFwibWRsLWNoZWNrYm94W21kbC1yaXBwbGVdXCIsXG59KVxuZXhwb3J0IGNsYXNzIE1kbENoZWNrYm94UmlwcGxlRGlyZWN0aXZlIGV4dGVuZHMgTWRsUmlwcGxlRGlyZWN0aXZlIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIEBJbnB1dChcIm1kbC1yaXBwbGVcIikgcHVibGljIG92ZXJyaWRlIHJpcHBsZUFjdGl2ZTogYm9vbGVhbiB8IHN0cmluZyA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoZWxlbWVudFJlZjogRWxlbWVudFJlZiwgcmVuZGVyZXI6IFJlbmRlcmVyMikge1xuICAgIHN1cGVyKGVsZW1lbnRSZWYsIHJlbmRlcmVyLCBbXG4gICAgICBcIm1kbC1jaGVja2JveF9fcmlwcGxlLWNvbnRhaW5lclwiLFxuICAgICAgXCJtZGwtcmlwcGxlLS1jZW50ZXJcIixcbiAgICBdKTtcbiAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIHNlbGVjdG9yOiBcIm1kbC1yYWRpb1ttZGwtcmlwcGxlXVwiLFxufSlcbmV4cG9ydCBjbGFzcyBNZGxSYWRpb1JpcHBsZURpcmVjdGl2ZSBleHRlbmRzIE1kbFJpcHBsZURpcmVjdGl2ZSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICBASW5wdXQoXCJtZGwtcmlwcGxlXCIpIHB1YmxpYyBvdmVycmlkZSByaXBwbGVBY3RpdmU6IGJvb2xlYW4gfCBzdHJpbmcgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcbiAgICBzdXBlcihlbGVtZW50UmVmLCByZW5kZXJlciwgW1xuICAgICAgXCJtZGwtcmFkaW9fX3JpcHBsZS1jb250YWluZXJcIixcbiAgICAgIFwibWRsLXJpcHBsZS0tY2VudGVyXCIsXG4gICAgXSk7XG4gIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICBzZWxlY3RvcjogXCJtZGwtaWNvbi10b2dnbGVbbWRsLXJpcHBsZV1cIixcbn0pXG5leHBvcnQgY2xhc3MgTWRsSWNvblRvZ2dsZVJpcHBsZURpcmVjdGl2ZSBleHRlbmRzIE1kbFJpcHBsZURpcmVjdGl2ZSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICBASW5wdXQoXCJtZGwtcmlwcGxlXCIpIHB1YmxpYyBvdmVycmlkZSByaXBwbGVBY3RpdmU6IGJvb2xlYW4gfCBzdHJpbmcgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcbiAgICBzdXBlcihlbGVtZW50UmVmLCByZW5kZXJlciwgW1xuICAgICAgXCJtZGwtaWNvbi10b2dnbGVfX3JpcHBsZS1jb250YWluZXJcIixcbiAgICAgIFwibWRsLXJpcHBsZS0tY2VudGVyXCIsXG4gICAgXSk7XG4gIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICBzZWxlY3RvcjogXCJtZGwtc3dpdGNoW21kbC1yaXBwbGVdXCIsXG59KVxuZXhwb3J0IGNsYXNzIE1kbFN3aXRjaFJpcHBsZURpcmVjdGl2ZSBleHRlbmRzIE1kbFJpcHBsZURpcmVjdGl2ZSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICBASW5wdXQoXCJtZGwtcmlwcGxlXCIpIHB1YmxpYyBvdmVycmlkZSByaXBwbGVBY3RpdmU6IGJvb2xlYW4gfCBzdHJpbmcgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcbiAgICBzdXBlcihlbGVtZW50UmVmLCByZW5kZXJlciwgW1xuICAgICAgXCJtZGwtc3dpdGNoX19yaXBwbGUtY29udGFpbmVyXCIsXG4gICAgICBcIm1kbC1yaXBwbGUtLWNlbnRlclwiLFxuICAgIF0pO1xuICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgc2VsZWN0b3I6IFwibWRsLW1lbnUtaXRlbVttZGwtcmlwcGxlXVwiLFxufSlcbmV4cG9ydCBjbGFzcyBNZGxNZW51SXRlbVJpcHBsZURpcmVjdGl2ZSBleHRlbmRzIE1kbFJpcHBsZURpcmVjdGl2ZSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICBASW5wdXQoXCJtZGwtcmlwcGxlXCIpIHB1YmxpYyBvdmVycmlkZSByaXBwbGVBY3RpdmU6IGJvb2xlYW4gfCBzdHJpbmcgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcbiAgICBzdXBlcihlbGVtZW50UmVmLCByZW5kZXJlciwgW1wibWRsLW1lbnVfX2l0ZW0tLXJpcHBsZS1jb250YWluZXJcIl0pO1xuICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgc2VsZWN0b3I6IFwiYVttZGwtcmlwcGxlXSxkaXZbbWRsLXJpcHBsZV1cIixcbn0pXG5leHBvcnQgY2xhc3MgTWRsQW5jaG9yUmlwcGxlRGlyZWN0aXZlIGV4dGVuZHMgTWRsUmlwcGxlRGlyZWN0aXZlIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIEBJbnB1dChcIm1kbC1yaXBwbGVcIikgcHVibGljIG92ZXJyaWRlIHJpcHBsZUFjdGl2ZTogYm9vbGVhbiB8IHN0cmluZyA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoZWxlbWVudFJlZjogRWxlbWVudFJlZiwgcmVuZGVyZXI6IFJlbmRlcmVyMikge1xuICAgIHN1cGVyKGVsZW1lbnRSZWYsIHJlbmRlcmVyLCBbXG4gICAgICBcIm1kbC10YWJzX19yaXBwbGUtY29udGFpbmVyXCIsXG4gICAgICBcIm1kbC1sYXlvdXRfX3RhYi1yaXBwbGUtY29udGFpbmVyXCIsXG4gICAgXSk7XG4gIH1cbn1cbiJdfQ==