UNPKG

@angular-mdl/core

Version:

Angular components, directives and styles based on material design lite https://getmdl.io.

263 lines 29.8 kB
import { Component, Directive, HostBinding, Input, Optional, ViewEncapsulation, } from "@angular/core"; import { MdlError, MdlStructureError } from "../common/mdl-error"; import { toNumber } from "../common/number.property"; import * as i0 from "@angular/core"; export class MdlUnsupportedCountOfListItemLinesError extends MdlError { constructor(lines) { /* istanbul ignore next */ super(`"${lines}" is not supported - max 3 lines please.`); } } export class MdlListComponent { constructor() { this.isMdlList = true; } } MdlListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); MdlListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: MdlListComponent, selector: "mdl-list", host: { properties: { "class.mdl-list": "this.isMdlList" } }, ngImport: i0, template: "<ng-content></ng-content>", isInline: true, encapsulation: i0.ViewEncapsulation.None }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlListComponent, decorators: [{ type: Component, args: [{ selector: "mdl-list", template: "<ng-content></ng-content>", encapsulation: ViewEncapsulation.None, }] }], propDecorators: { isMdlList: [{ type: HostBinding, args: ["class.mdl-list"] }] } }); export class MdlListItemComponent { constructor() { this.isMdlListItem = true; this.linesIntern = 1; } get lines() { return this.linesIntern; } set lines(value) { this.linesIntern = toNumber(value) ?? 1; } get lines2() { return this.lines === 2; } get lines3() { return this.lines === 3; } ngOnChanges() { if (this.lines && this.lines > 3) { throw new MdlUnsupportedCountOfListItemLinesError(this.lines); } } } MdlListItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlListItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); MdlListItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: MdlListItemComponent, selector: "mdl-list-item", inputs: { lines: "lines" }, host: { properties: { "class.mdl-list__item": "this.isMdlListItem", "class.mdl-list__item--two-line": "this.lines2", "class.mdl-list__item--three-line": "this.lines3" } }, usesOnChanges: true, ngImport: i0, template: "<ng-content></ng-content>", isInline: true, encapsulation: i0.ViewEncapsulation.None }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlListItemComponent, decorators: [{ type: Component, args: [{ selector: "mdl-list-item", template: "<ng-content></ng-content>", encapsulation: ViewEncapsulation.None, }] }], propDecorators: { isMdlListItem: [{ type: HostBinding, args: ["class.mdl-list__item"] }], lines: [{ type: Input }], lines2: [{ type: HostBinding, args: ["class.mdl-list__item--two-line"] }], lines3: [{ type: HostBinding, args: ["class.mdl-list__item--three-line"] }] } }); export class MdlListItemPrimaryContentComponent { constructor(mdlListItemComponent) { this.mdlListItemComponent = mdlListItemComponent; this.isPrimaryContent = true; } ngOnInit() { if (this.mdlListItemComponent === null) { throw new MdlStructureError("mdl-list-item-primary-content", "mdl-list-item"); } } } MdlListItemPrimaryContentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlListItemPrimaryContentComponent, deps: [{ token: MdlListItemComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component }); MdlListItemPrimaryContentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: MdlListItemPrimaryContentComponent, selector: "mdl-list-item-primary-content", host: { properties: { "class.mdl-list__item-primary-content": "this.isPrimaryContent" } }, ngImport: i0, template: "<ng-content></ng-content>", isInline: true, encapsulation: i0.ViewEncapsulation.None }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlListItemPrimaryContentComponent, decorators: [{ type: Component, args: [{ selector: "mdl-list-item-primary-content", template: "<ng-content></ng-content>", encapsulation: ViewEncapsulation.None, }] }], ctorParameters: function () { return [{ type: MdlListItemComponent, decorators: [{ type: Optional }] }]; }, propDecorators: { isPrimaryContent: [{ type: HostBinding, args: ["class.mdl-list__item-primary-content"] }] } }); export class MdlListItemSecondaryContentComponent { constructor(mdlListItemComponent) { this.mdlListItemComponent = mdlListItemComponent; this.isSecondaryContent = true; } ngOnInit() { if (this.mdlListItemComponent === null) { throw new MdlStructureError("mdl-list-item-secondary-content", "mdl-list-item"); } } } MdlListItemSecondaryContentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlListItemSecondaryContentComponent, deps: [{ token: MdlListItemComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component }); MdlListItemSecondaryContentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: MdlListItemSecondaryContentComponent, selector: "mdl-list-item-secondary-content", host: { properties: { "class.mdl-list__item-secondary-content": "this.isSecondaryContent" } }, ngImport: i0, template: "<ng-content></ng-content>", isInline: true, encapsulation: i0.ViewEncapsulation.None }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlListItemSecondaryContentComponent, decorators: [{ type: Component, args: [{ selector: "mdl-list-item-secondary-content", template: "<ng-content></ng-content>", encapsulation: ViewEncapsulation.None, }] }], ctorParameters: function () { return [{ type: MdlListItemComponent, decorators: [{ type: Optional }] }]; }, propDecorators: { isSecondaryContent: [{ type: HostBinding, args: ["class.mdl-list__item-secondary-content"] }] } }); export class MdlListItemSecondaryActionComponent { constructor(mdlListItemComponent) { this.mdlListItemComponent = mdlListItemComponent; this.isSecondaryAction = true; } ngOnInit() { if (this.mdlListItemComponent === null) { throw new MdlStructureError("mdl-list-item-secondary-action", "mdl-list-item"); } } } MdlListItemSecondaryActionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlListItemSecondaryActionComponent, deps: [{ token: MdlListItemComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component }); MdlListItemSecondaryActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: MdlListItemSecondaryActionComponent, selector: "mdl-list-item-secondary-action", host: { properties: { "class.mdl-list__item-secondary-action": "this.isSecondaryAction" } }, ngImport: i0, template: "<ng-content></ng-content>", isInline: true, encapsulation: i0.ViewEncapsulation.None }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlListItemSecondaryActionComponent, decorators: [{ type: Component, args: [{ selector: "mdl-list-item-secondary-action", template: "<ng-content></ng-content>", encapsulation: ViewEncapsulation.None, }] }], ctorParameters: function () { return [{ type: MdlListItemComponent, decorators: [{ type: Optional }] }]; }, propDecorators: { isSecondaryAction: [{ type: HostBinding, args: ["class.mdl-list__item-secondary-action"] }] } }); export class MdlListItemSubTitleComponent { constructor(mdlListItemComponent) { this.mdlListItemComponent = mdlListItemComponent; this.isSubTitle = true; } ngOnInit() { if (this.mdlListItemComponent === null) { throw new MdlStructureError("mdl-list-item-sub-title", "mdl-list-item-primary-content"); } } } MdlListItemSubTitleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlListItemSubTitleComponent, deps: [{ token: MdlListItemPrimaryContentComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component }); MdlListItemSubTitleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: MdlListItemSubTitleComponent, selector: "mdl-list-item-sub-title", host: { properties: { "class.mdl-list__item-sub-title": "this.isSubTitle" } }, ngImport: i0, template: "<ng-content></ng-content>", isInline: true, encapsulation: i0.ViewEncapsulation.None }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlListItemSubTitleComponent, decorators: [{ type: Component, args: [{ selector: "mdl-list-item-sub-title", template: "<ng-content></ng-content>", encapsulation: ViewEncapsulation.None, }] }], ctorParameters: function () { return [{ type: MdlListItemPrimaryContentComponent, decorators: [{ type: Optional }] }]; }, propDecorators: { isSubTitle: [{ type: HostBinding, args: ["class.mdl-list__item-sub-title"] }] } }); export class MdlListItemSecondaryInfoComponent { constructor(mdlListItemComponent) { this.mdlListItemComponent = mdlListItemComponent; this.isSecondaryInfo = true; } ngOnInit() { if (this.mdlListItemComponent === null) { throw new MdlStructureError("mdl-list-item-secondary-info", "mdl-list-item-secondary-content"); } } } MdlListItemSecondaryInfoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlListItemSecondaryInfoComponent, deps: [{ token: MdlListItemSecondaryContentComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component }); MdlListItemSecondaryInfoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: MdlListItemSecondaryInfoComponent, selector: "mdl-list-item-secondary-info", host: { properties: { "class.mdl-list__item-secondary-info": "this.isSecondaryInfo" } }, ngImport: i0, template: "<ng-content></ng-content>", isInline: true, encapsulation: i0.ViewEncapsulation.None }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlListItemSecondaryInfoComponent, decorators: [{ type: Component, args: [{ selector: "mdl-list-item-secondary-info", template: "<ng-content></ng-content>", encapsulation: ViewEncapsulation.None, }] }], ctorParameters: function () { return [{ type: MdlListItemSecondaryContentComponent, decorators: [{ type: Optional }] }]; }, propDecorators: { isSecondaryInfo: [{ type: HostBinding, args: ["class.mdl-list__item-secondary-info"] }] } }); export class MdlListItemTextBodyComponent { constructor(mdlListItemComponent) { this.mdlListItemComponent = mdlListItemComponent; this.isTextBody = true; } ngOnInit() { if (this.mdlListItemComponent === null) { throw new MdlStructureError("mdl-list-item-text-body", "mdl-list-item"); } } } MdlListItemTextBodyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlListItemTextBodyComponent, deps: [{ token: MdlListItemComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component }); MdlListItemTextBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: MdlListItemTextBodyComponent, selector: "mdl-list-item-text-body", host: { properties: { "class.mdl-list__item-text-body": "this.isTextBody" } }, ngImport: i0, template: "<ng-content></ng-content>", isInline: true, encapsulation: i0.ViewEncapsulation.None }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlListItemTextBodyComponent, decorators: [{ type: Component, args: [{ selector: "mdl-list-item-text-body", template: "<ng-content></ng-content>", encapsulation: ViewEncapsulation.None, }] }], ctorParameters: function () { return [{ type: MdlListItemComponent, decorators: [{ type: Optional }] }]; }, propDecorators: { isTextBody: [{ type: HostBinding, args: ["class.mdl-list__item-text-body"] }] } }); export class MdlListItemIconDirective { constructor() { this.isItemIcon = true; } } MdlListItemIconDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlListItemIconDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); MdlListItemIconDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: MdlListItemIconDirective, selector: "mdl-icon[mdl-list-item-icon]", host: { properties: { "class.mdl-list__item-icon": "this.isItemIcon" } }, ngImport: i0 }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlListItemIconDirective, decorators: [{ type: Directive, args: [{ // eslint-disable-next-line selector: "mdl-icon[mdl-list-item-icon]", }] }], propDecorators: { isItemIcon: [{ type: HostBinding, args: ["class.mdl-list__item-icon"] }] } }); export class MdlListItemAvatarDirective { constructor() { this.isItemAvatar = true; } } MdlListItemAvatarDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlListItemAvatarDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); MdlListItemAvatarDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: MdlListItemAvatarDirective, selector: "mdl-icon[mdl-list-item-avatar]", host: { properties: { "class.mdl-list__item-avatar": "this.isItemAvatar" } }, ngImport: i0 }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlListItemAvatarDirective, decorators: [{ type: Directive, args: [{ // eslint-disable-next-line selector: "mdl-icon[mdl-list-item-avatar]", }] }], propDecorators: { isItemAvatar: [{ type: HostBinding, args: ["class.mdl-list__item-avatar"] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWRsLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL2xpc3QvbWRsLWxpc3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUNULFdBQVcsRUFDWCxLQUFLLEVBR0wsUUFBUSxFQUNSLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQUVyRCxNQUFNLE9BQU8sdUNBQXdDLFNBQVEsUUFBUTtJQUNuRSxZQUFZLEtBQXNCO1FBQ2hDLDBCQUEwQjtRQUMxQixLQUFLLENBQUMsSUFBSSxLQUFLLDBDQUEwQyxDQUFDLENBQUM7SUFDN0QsQ0FBQztDQUNGO0FBT0QsTUFBTSxPQUFPLGdCQUFnQjtJQUw3QjtRQU9FLGNBQVMsR0FBRyxJQUFJLENBQUM7S0FDbEI7OzZHQUhZLGdCQUFnQjtpR0FBaEIsZ0JBQWdCLDhHQUhqQiwyQkFBMkI7MkZBRzFCLGdCQUFnQjtrQkFMNUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsVUFBVTtvQkFDcEIsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7aUJBQ3RDOzhCQUdDLFNBQVM7c0JBRFIsV0FBVzt1QkFBQyxnQkFBZ0I7O0FBUy9CLE1BQU0sT0FBTyxvQkFBb0I7SUFMakM7UUFPRSxrQkFBYSxHQUFHLElBQUksQ0FBQztRQUViLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO0tBd0J6QjtJQXRCQyxJQUNJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksS0FBSyxDQUFDLEtB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LENBQUM7S0FDckI7O3VIQUhZLDBCQUEwQjsyR0FBMUIsMEJBQTBCOzJGQUExQiwwQkFBMEI7a0JBSnRDLFNBQVM7bUJBQUM7b0JBQ1QsMkJBQTJCO29CQUMzQixRQUFRLEVBQUUsZ0NBQWdDO2lCQUMzQzs4QkFHQyxZQUFZO3NCQURYLFdBQVc7dUJBQUMsNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBEaXJlY3RpdmUsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE1kbEVycm9yLCBNZGxTdHJ1Y3R1cmVFcnJvciB9IGZyb20gXCIuLi9jb21tb24vbWRsLWVycm9yXCI7XG5pbXBvcnQgeyB0b051bWJlciB9IGZyb20gXCIuLi9jb21tb24vbnVtYmVyLnByb3BlcnR5XCI7XG5cbmV4cG9ydCBjbGFzcyBNZGxVbnN1cHBvcnRlZENvdW50T2ZMaXN0SXRlbUxpbmVzRXJyb3IgZXh0ZW5kcyBNZGxFcnJvciB7XG4gIGNvbnN0cnVjdG9yKGxpbmVzOiBudW1iZXIgfCBzdHJpbmcpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHN1cGVyKGBcIiR7bGluZXN9XCIgaXMgbm90IHN1cHBvcnRlZCAtIG1heCAzIGxpbmVzIHBsZWFzZS5gKTtcbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwibWRsLWxpc3RcIixcbiAgdGVtcGxhdGU6IFwiPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlwiLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBNZGxMaXN0Q29tcG9uZW50IHtcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MubWRsLWxpc3RcIilcbiAgaXNNZGxMaXN0ID0gdHJ1ZTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcIm1kbC1saXN0LWl0ZW1cIixcbiAgdGVtcGxhdGU6IFwiPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlwiLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBNZGxMaXN0SXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBIb3N0QmluZGluZyhcImNsYXNzLm1kbC1saXN0X19pdGVtXCIpXG4gIGlzTWRsTGlzdEl0ZW0gPSB0cnVlO1xuXG4gIHByaXZhdGUgbGluZXNJbnRlcm4gPSAxO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBsaW5lcygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmxpbmVzSW50ZXJuO1xuICB9XG5cbiAgc2V0IGxpbmVzKHZhbHVlOiBudW1iZXIgfCBzdHJpbmcpIHtcbiAgICB0aGlzLmxpbmVzSW50ZXJuID0gdG9OdW1iZXIodmFsdWUpID8/IDE7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5tZGwtbGlzdF9faXRlbS0tdHdvLWxpbmVcIikgZ2V0IGxpbmVzMigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5saW5lcyA9PT0gMjtcbiAgfVxuXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLm1kbC1saXN0X19pdGVtLS10aHJlZS1saW5lXCIpIGdldCBsaW5lczMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubGluZXMgPT09IDM7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5saW5lcyAmJiB0aGlzLmxpbmVzID4gMykge1xuICAgICAgdGhyb3cgbmV3IE1kbFVuc3VwcG9ydGVkQ291bnRPZkxpc3RJdGVtTGluZXNFcnJvcih0aGlzLmxpbmVzKTtcbiAgICB9XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcIm1kbC1saXN0LWl0ZW0tcHJpbWFyeS1jb250ZW50XCIsXG4gIHRlbXBsYXRlOiBcIjxuZy1jb250ZW50PjwvbmctY29udGVudD5cIixcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgTWRsTGlzdEl0ZW1QcmltYXJ5Q29udGVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBIb3N0QmluZGluZyhcImNsYXNzLm1kbC1saXN0X19pdGVtLXByaW1hcnktY29udGVudFwiKVxuICBpc1ByaW1hcnlDb250ZW50ID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBwcml2YXRlIG1kbExpc3RJdGVtQ29tcG9uZW50OiBNZGxMaXN0SXRlbUNvbXBvbmVudCkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tZGxMaXN0SXRlbUNvbXBvbmVudCA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IE1kbFN0cnVjdHVyZUVycm9yKFxuICAgICAgICBcIm1kbC1saXN0LWl0ZW0tcHJpbWFyeS1jb250ZW50XCIsXG4gICAgICAgIFwibWRsLWxpc3QtaXRlbVwiXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwibWRsLWxpc3QtaXRlbS1zZWNvbmRhcnktY29udGVudFwiLFxuICB0ZW1wbGF0ZTogXCI8bmctY29udGVudD48L25nLWNvbnRlbnQ+XCIsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIE1kbExpc3RJdGVtU2Vjb25kYXJ5Q29udGVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBIb3N0QmluZGluZyhcImNsYXNzLm1kbC1saXN0X19pdGVtLXNlY29uZGFyeS1jb250ZW50XCIpXG4gIGlzU2Vjb25kYXJ5Q29udGVudCA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgcHJpdmF0ZSBtZGxMaXN0SXRlbUNvbXBvbmVudDogTWRsTGlzdEl0ZW1Db21wb25lbnQpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubWRsTGlzdEl0ZW1Db21wb25lbnQgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBNZGxTdHJ1Y3R1cmVFcnJvcihcbiAgICAgICAgXCJtZGwtbGlzdC1pdGVtLXNlY29uZGFyeS1jb250ZW50XCIsXG4gICAgICAgIFwibWRsLWxpc3QtaXRlbVwiXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwibWRsLWxpc3QtaXRlbS1zZWNvbmRhcnktYWN0aW9uXCIsXG4gIHRlbXBsYXRlOiBcIjxuZy1jb250ZW50PjwvbmctY29udGVudD5cIixcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgTWRsTGlzdEl0ZW1TZWNvbmRhcnlBY3Rpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5tZGwtbGlzdF9faXRlbS1zZWNvbmRhcnktYWN0aW9uXCIpXG4gIGlzU2Vjb25kYXJ5QWN0aW9uID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBwcml2YXRlIG1kbExpc3RJdGVtQ29tcG9uZW50OiBNZGxMaXN0SXRlbUNvbXBvbmVudCkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tZGxMaXN0SXRlbUNvbXBvbmVudCA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IE1kbFN0cnVjdHVyZUVycm9yKFxuICAgICAgICBcIm1kbC1saXN0LWl0ZW0tc2Vjb25kYXJ5LWFjdGlvblwiLFxuICAgICAgICBcIm1kbC1saXN0LWl0ZW1cIlxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcIm1kbC1saXN0LWl0ZW0tc3ViLXRpdGxlXCIsXG4gIHRlbXBsYXRlOiBcIjxuZy1jb250ZW50PjwvbmctY29udGVudD5cIixcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgTWRsTGlzdEl0ZW1TdWJUaXRsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBIb3N0QmluZGluZyhcImNsYXNzLm1kbC1saXN0X19pdGVtLXN1Yi10aXRsZVwiKVxuICBpc1N1YlRpdGxlID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIG1kbExpc3RJdGVtQ29tcG9uZW50OiBNZGxMaXN0SXRlbVByaW1hcnlDb250ZW50Q29tcG9uZW50XG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tZGxMaXN0SXRlbUNvbXBvbmVudCA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IE1kbFN0cnVjdHVyZUVycm9yKFxuICAgICAgICBcIm1kbC1saXN0LWl0ZW0tc3ViLXRpdGxlXCIsXG4gICAgICAgIFwibWRsLWxpc3QtaXRlbS1wcmltYXJ5LWNvbnRlbnRcIlxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcIm1kbC1saXN0LWl0ZW0tc2Vjb25kYXJ5LWluZm9cIixcbiAgdGVtcGxhdGU6IFwiPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlwiLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBNZGxMaXN0SXRlbVNlY29uZGFyeUluZm9Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5tZGwtbGlzdF9faXRlbS1zZWNvbmRhcnktaW5mb1wiKVxuICBpc1NlY29uZGFyeUluZm8gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpXG4gICAgcHJpdmF0ZSBtZGxMaXN0SXRlbUNvbXBvbmVudDogTWRsTGlzdEl0ZW1TZWNvbmRhcnlDb250ZW50Q29tcG9uZW50XG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tZGxMaXN0SXRlbUNvbXBvbmVudCA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IE1kbFN0cnVjdHVyZUVycm9yKFxuICAgICAgICBcIm1kbC1saXN0LWl0ZW0tc2Vjb25kYXJ5LWluZm9cIixcbiAgICAgICAgXCJtZGwtbGlzdC1pdGVtLXNlY29uZGFyeS1jb250ZW50XCJcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJtZGwtbGlzdC1pdGVtLXRleHQtYm9keVwiLFxuICB0ZW1wbGF0ZTogXCI8bmctY29udGVudD48L25nLWNvbnRlbnQ+XCIsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIE1kbExpc3RJdGVtVGV4dEJvZHlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5tZGwtbGlzdF9faXRlbS10ZXh0LWJvZHlcIilcbiAgaXNUZXh0Qm9keSA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgcHJpdmF0ZSBtZGxMaXN0SXRlbUNvbXBvbmVudDogTWRsTGlzdEl0ZW1Db21wb25lbnQpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubWRsTGlzdEl0ZW1Db21wb25lbnQgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBNZGxTdHJ1Y3R1cmVFcnJvcihcIm1kbC1saXN0LWl0ZW0tdGV4dC1ib2R5XCIsIFwibWRsLWxpc3QtaXRlbVwiKTtcbiAgICB9XG4gIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICBzZWxlY3RvcjogXCJtZGwtaWNvblttZGwtbGlzdC1pdGVtLWljb25dXCIsXG59KVxuZXhwb3J0IGNsYXNzIE1kbExpc3RJdGVtSWNvbkRpcmVjdGl2ZSB7XG4gIEBIb3N0QmluZGluZyhcImNsYXNzLm1kbC1saXN0X19pdGVtLWljb25cIilcbiAgaXNJdGVtSWNvbiA9IHRydWU7XG59XG5cbkBEaXJlY3RpdmUoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgc2VsZWN0b3I6IFwibWRsLWljb25bbWRsLWxpc3QtaXRlbS1hdmF0YXJdXCIsXG59KVxuZXhwb3J0IGNsYXNzIE1kbExpc3RJdGVtQXZhdGFyRGlyZWN0aXZlIHtcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MubWRsLWxpc3RfX2l0ZW0tYXZhdGFyXCIpXG4gIGlzSXRlbUF2YXRhciA9IHRydWU7XG59XG4iXX0=