UNPKG

carbon-components-angular

Version:
204 lines 16.3 kB
import { Component, HostBinding, Input, ViewEncapsulation } from "@angular/core"; import * as i0 from "@angular/core"; import * as i1 from "carbon-components-angular/i18n"; import * as i2 from "@angular/common"; import * as i3 from "./sidenav-item.component"; import * as i4 from "./sidenav-menu.component"; /** * `Sidenav` is a fixed left navigation that may contain `SideNavItem`s or `SideNavMenu`s * * [See demo](../../?path=/story/components-ui-shell--side-navigation) */ export class SideNav { constructor(i18n) { this.i18n = i18n; this.hostClass = true; this.ariaLabel = "Side navigation"; /** * Controls the expanded (`true`) or collapsed (`false`) state when on a small screen. */ this.expanded = true; /** * Controls the hidden (`true`) or visible (`false`) state */ this.hidden = false; this.rail = false; this.ux = true; this.allowExpansion = false; /** * Use the routerLink attribute on <a> tag for navigation instead of using event handlers */ this.useRouter = false; } toggle() { this.expanded = !this.expanded; } } SideNav.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SideNav, deps: [{ token: i1.I18n }], target: i0.ɵɵFactoryTarget.Component }); SideNav.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: SideNav, selector: "cds-sidenav, ibm-sidenav", inputs: { ariaLabel: "ariaLabel", expanded: "expanded", hidden: "hidden", rail: "rail", allowExpansion: "allowExpansion", navigationItems: "navigationItems", useRouter: "useRouter" }, host: { properties: { "class.cds--side-nav": "this.hostClass", "class.cds--side-nav--expanded": "this.expanded", "class.cds--side-nav--hidden": "this.hidden", "class.cds--side-nav--rail": "this.rail", "class.cds--side-nav__navigation": "this.ux" } }, ngImport: i0, template: ` <nav class="cds--side-nav__items" [attr.aria-label]="ariaLabel"> <ng-content select="cds-sidenav-header,ibm-sidenav-header"></ng-content> <div role="list"> <div class="cds--side-nav__header-navigation cds--side-nav__header-divider"> <ng-container *ngFor="let navigationItem of navigationItems"> <cds-sidenav-item *ngIf="navigationItem.type === 'item'" [href]="navigationItem.href" [route]="navigationItem.route" [routeExtras]="navigationItem.routeExtras" [useRouter]="useRouter" [title]="navigationItem.title"> {{ navigationItem.content }} </cds-sidenav-item> <cds-sidenav-menu *ngIf="navigationItem.type === 'menu'" [title]="navigationItem.title" [useRouter]="useRouter" [menuItems]="navigationItem.menuItems"> </cds-sidenav-menu> </ng-container> </div> <ng-content></ng-content> </div> <footer class="cds--side-nav__footer"> <button *ngIf="allowExpansion" class="cds--side-nav__toggle" type="button" [title]="(expanded ? i18n.get('UI_SHELL.SIDE_NAV.TOGGLE_CLOSE') : i18n.get('UI_SHELL.SIDE_NAV.TOGGLE_OPEN')) | async" (click)="toggle()"> <div class="cds--side-nav__icon"> <svg *ngIf="expanded" focusable="false" preserveAspectRatio="xMidYMid meet" style="will-change: transform;" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 32 32" aria-hidden="true"> <path d="M24 9.4L22.6 8 16 14.6 9.4 8 8 9.4l6.6 6.6L8 22.6 9.4 24l6.6-6.6 6.6 6.6 1.4-1.4-6.6-6.6L24 9.4z"></path> </svg> <svg *ngIf="!expanded" focusable="false" preserveAspectRatio="xMidYMid meet" style="will-change: transform;" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 32 32" aria-hidden="true"> <path d="M22 16L12 26l-1.4-1.4 8.6-8.6-8.6-8.6L12 6z"></path> </svg> </div> <span class="cds--assistive-text"> {{(expanded ? i18n.get('UI_SHELL.SIDE_NAV.TOGGLE_CLOSE') : i18n.get('UI_SHELL.SIDE_NAV.TOGGLE_OPEN')) | async}} </span> </button> </footer> </nav> `, isInline: true, dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.SideNavItem, selector: "cds-sidenav-item, ibm-sidenav-item", inputs: ["href", "useRouter", "active", "route", "isSubMenu", "routeExtras", "title"], outputs: ["navigation", "selected"] }, { kind: "component", type: i4.SideNavMenu, selector: "cds-sidenav-menu, ibm-sidenav-menu", inputs: ["useRouter", "title", "expanded", "hasActiveChild", "menuItems"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SideNav, decorators: [{ type: Component, args: [{ selector: "cds-sidenav, ibm-sidenav", template: ` <nav class="cds--side-nav__items" [attr.aria-label]="ariaLabel"> <ng-content select="cds-sidenav-header,ibm-sidenav-header"></ng-content> <div role="list"> <div class="cds--side-nav__header-navigation cds--side-nav__header-divider"> <ng-container *ngFor="let navigationItem of navigationItems"> <cds-sidenav-item *ngIf="navigationItem.type === 'item'" [href]="navigationItem.href" [route]="navigationItem.route" [routeExtras]="navigationItem.routeExtras" [useRouter]="useRouter" [title]="navigationItem.title"> {{ navigationItem.content }} </cds-sidenav-item> <cds-sidenav-menu *ngIf="navigationItem.type === 'menu'" [title]="navigationItem.title" [useRouter]="useRouter" [menuItems]="navigationItem.menuItems"> </cds-sidenav-menu> </ng-container> </div> <ng-content></ng-content> </div> <footer class="cds--side-nav__footer"> <button *ngIf="allowExpansion" class="cds--side-nav__toggle" type="button" [title]="(expanded ? i18n.get('UI_SHELL.SIDE_NAV.TOGGLE_CLOSE') : i18n.get('UI_SHELL.SIDE_NAV.TOGGLE_OPEN')) | async" (click)="toggle()"> <div class="cds--side-nav__icon"> <svg *ngIf="expanded" focusable="false" preserveAspectRatio="xMidYMid meet" style="will-change: transform;" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 32 32" aria-hidden="true"> <path d="M24 9.4L22.6 8 16 14.6 9.4 8 8 9.4l6.6 6.6L8 22.6 9.4 24l6.6-6.6 6.6 6.6 1.4-1.4-6.6-6.6L24 9.4z"></path> </svg> <svg *ngIf="!expanded" focusable="false" preserveAspectRatio="xMidYMid meet" style="will-change: transform;" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 32 32" aria-hidden="true"> <path d="M22 16L12 26l-1.4-1.4 8.6-8.6-8.6-8.6L12 6z"></path> </svg> </div> <span class="cds--assistive-text"> {{(expanded ? i18n.get('UI_SHELL.SIDE_NAV.TOGGLE_CLOSE') : i18n.get('UI_SHELL.SIDE_NAV.TOGGLE_OPEN')) | async}} </span> </button> </footer> </nav> `, encapsulation: ViewEncapsulation.None }] }], ctorParameters: function () { return [{ type: i1.I18n }]; }, propDecorators: { hostClass: [{ type: HostBinding, args: ["class.cds--side-nav"] }], ariaLabel: [{ type: Input }], expanded: [{ type: HostBinding, args: ["class.cds--side-nav--expanded"] }, { type: Input }], hidden: [{ type: HostBinding, args: ["class.cds--side-nav--hidden"] }, { type: Input }], rail: [{ type: HostBinding, args: ["class.cds--side-nav--rail"] }, { type: Input }], ux: [{ type: HostBinding, args: ["class.cds--side-nav__navigation"] }], allowExpansion: [{ type: Input }], navigationItems: [{ type: Input }], useRouter: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZW5hdi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdWktc2hlbGwvc2lkZW5hdi9zaWRlbmF2LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sU0FBUyxFQUNULFdBQVcsRUFDWCxLQUFLLEVBQ0wsaUJBQWlCLEVBQ2pCLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFJdkI7Ozs7R0FJRztBQXNFSCxNQUFNLE9BQU8sT0FBTztJQTJCbkIsWUFBbUIsSUFBVTtRQUFWLFNBQUksR0FBSixJQUFJLENBQU07UUExQk8sY0FBUyxHQUFHLElBQUksQ0FBQztRQUM1QyxjQUFTLEdBQUcsaUJBQWlCLENBQUM7UUFDdkM7O1dBRUc7UUFDb0QsYUFBUSxHQUFHLElBQUksQ0FBQztRQUN2RTs7V0FFRztRQUNrRCxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLFNBQUksR0FBRyxLQUFLLENBQUM7UUFDaEIsT0FBRSxHQUFHLElBQUksQ0FBQztRQUNqRCxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQVNoQzs7V0FFRztRQUNNLGNBQVMsR0FBRyxLQUFLLENBQUM7SUFFTSxDQUFDO0lBRWxDLE1BQU07UUFDTCxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUNoQyxDQUFDOztvR0EvQlcsT0FBTzt3RkFBUCxPQUFPLG1mQW5FVDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQWdFVDsyRkFHVyxPQUFPO2tCQXJFbkIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsMEJBQTBCO29CQUNwQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFnRVQ7b0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7aUJBQ3JDOzJGQUVvQyxTQUFTO3NCQUE1QyxXQUFXO3VCQUFDLHFCQUFxQjtnQkFDekIsU0FBUztzQkFBakIsS0FBSztnQkFJaUQsUUFBUTtzQkFBOUQsV0FBVzt1QkFBQywrQkFBK0I7O3NCQUFHLEtBQUs7Z0JBSUMsTUFBTTtzQkFBMUQsV0FBVzt1QkFBQyw2QkFBNkI7O3NCQUFHLEtBQUs7Z0JBQ0MsSUFBSTtzQkFBdEQsV0FBVzt1QkFBQywyQkFBMkI7O3NCQUFHLEtBQUs7Z0JBQ0EsRUFBRTtzQkFBakQsV0FBVzt1QkFBQyxpQ0FBaUM7Z0JBQ3JDLGNBQWM7c0JBQXRCLEtBQUs7Z0JBT0csZUFBZTtzQkFBdkIsS0FBSztnQkFLRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q29tcG9uZW50LFxuXHRIb3N0QmluZGluZyxcblx0SW5wdXQsXG5cdFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBJMThuIH0gZnJvbSBcImNhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXIvaTE4blwiO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkl0ZW0gfSBmcm9tIFwiLi4vaGVhZGVyL2hlYWRlci1uYXZpZ2F0aW9uLWl0ZW1zLmludGVyZmFjZVwiO1xuXG4vKipcbiAqIGBTaWRlbmF2YCBpcyBhIGZpeGVkIGxlZnQgbmF2aWdhdGlvbiB0aGF0IG1heSBjb250YWluIGBTaWRlTmF2SXRlbWBzIG9yIGBTaWRlTmF2TWVudWBzXG4gKlxuICogW1NlZSBkZW1vXSguLi8uLi8/cGF0aD0vc3RvcnkvY29tcG9uZW50cy11aS1zaGVsbC0tc2lkZS1uYXZpZ2F0aW9uKVxuICovXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6IFwiY2RzLXNpZGVuYXYsIGlibS1zaWRlbmF2XCIsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5hdiBjbGFzcz1cImNkcy0tc2lkZS1uYXZfX2l0ZW1zXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIj5cblx0XHRcdDxuZy1jb250ZW50IHNlbGVjdD1cImNkcy1zaWRlbmF2LWhlYWRlcixpYm0tc2lkZW5hdi1oZWFkZXJcIj48L25nLWNvbnRlbnQ+XG5cdFx0XHQ8ZGl2IHJvbGU9XCJsaXN0XCI+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJjZHMtLXNpZGUtbmF2X19oZWFkZXItbmF2aWdhdGlvbiBjZHMtLXNpZGUtbmF2X19oZWFkZXItZGl2aWRlclwiPlxuXHRcdFx0XHRcdDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG5hdmlnYXRpb25JdGVtIG9mIG5hdmlnYXRpb25JdGVtc1wiPlxuXHRcdFx0XHRcdFx0PGNkcy1zaWRlbmF2LWl0ZW1cblx0XHRcdFx0XHRcdFx0Km5nSWY9XCJuYXZpZ2F0aW9uSXRlbS50eXBlID09PSAnaXRlbSdcIlxuXHRcdFx0XHRcdFx0XHRbaHJlZl09XCJuYXZpZ2F0aW9uSXRlbS5ocmVmXCJcblx0XHRcdFx0XHRcdFx0W3JvdXRlXT1cIm5hdmlnYXRpb25JdGVtLnJvdXRlXCJcblx0XHRcdFx0XHRcdFx0W3JvdXRlRXh0cmFzXT1cIm5hdmlnYXRpb25JdGVtLnJvdXRlRXh0cmFzXCJcblx0XHRcdFx0XHRcdFx0W3VzZVJvdXRlcl09XCJ1c2VSb3V0ZXJcIlxuXHRcdFx0XHRcdFx0XHRbdGl0bGVdPVwibmF2aWdhdGlvbkl0ZW0udGl0bGVcIj5cblx0XHRcdFx0XHRcdFx0e3sgbmF2aWdhdGlvbkl0ZW0uY29udGVudCB9fVxuXHRcdFx0XHRcdFx0PC9jZHMtc2lkZW5hdi1pdGVtPlxuXHRcdFx0XHRcdFx0PGNkcy1zaWRlbmF2LW1lbnVcblx0XHRcdFx0XHRcdFx0Km5nSWY9XCJuYXZpZ2F0aW9uSXRlbS50eXBlID09PSAnbWVudSdcIlxuXHRcdFx0XHRcdFx0XHRbdGl0bGVdPVwibmF2aWdhdGlvbkl0ZW0udGl0bGVcIlxuXHRcdFx0XHRcdFx0XHRbdXNlUm91dGVyXT1cInVzZVJvdXRlclwiXG5cdFx0XHRcdFx0XHRcdFttZW51SXRlbXNdPVwibmF2aWdhdGlvbkl0ZW0ubWVudUl0ZW1zXCI+XG5cdFx0XHRcdFx0XHQ8L2Nkcy1zaWRlbmF2LW1lbnU+XG5cdFx0XHRcdFx0PC9uZy1jb250YWluZXI+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cdFx0XHQ8L2Rpdj5cblx0XHRcdDxmb290ZXIgY2xhc3M9XCJjZHMtLXNpZGUtbmF2X19mb290ZXJcIj5cblx0XHRcdFx0PGJ1dHRvblxuXHRcdFx0XHRcdCpuZ0lmPVwiYWxsb3dFeHBhbnNpb25cIlxuXHRcdFx0XHRcdGNsYXNzPVwiY2RzLS1zaWRlLW5hdl9fdG9nZ2xlXCJcblx0XHRcdFx0XHR0eXBlPVwiYnV0dG9uXCJcblx0XHRcdFx0XHRbdGl0bGVdPVwiKGV4cGFuZGVkID8gaTE4bi5nZXQoJ1VJX1NIRUxMLlNJREVfTkFWLlRPR0dMRV9DTE9TRScpIDogaTE4bi5nZXQoJ1VJX1NIRUxMLlNJREVfTkFWLlRPR0dMRV9PUEVOJykpIHwgYXN5bmNcIlxuXHRcdFx0XHRcdChjbGljayk9XCJ0b2dnbGUoKVwiPlxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJjZHMtLXNpZGUtbmF2X19pY29uXCI+XG5cdFx0XHRcdFx0XHQ8c3ZnXG5cdFx0XHRcdFx0XHRcdCpuZ0lmPVwiZXhwYW5kZWRcIlxuXHRcdFx0XHRcdFx0XHRmb2N1c2FibGU9XCJmYWxzZVwiXG5cdFx0XHRcdFx0XHRcdHByZXNlcnZlQXNwZWN0UmF0aW89XCJ4TWlkWU1pZCBtZWV0XCJcblx0XHRcdFx0XHRcdFx0c3R5bGU9XCJ3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1wiXG5cdFx0XHRcdFx0XHRcdHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuXHRcdFx0XHRcdFx0XHR3aWR0aD1cIjIwXCJcblx0XHRcdFx0XHRcdFx0aGVpZ2h0PVwiMjBcIlxuXHRcdFx0XHRcdFx0XHR2aWV3Qm94PVwiMCAwIDMyIDMyXCJcblx0XHRcdFx0XHRcdFx0YXJpYS1oaWRkZW49XCJ0cnVlXCI+XG5cdFx0XHRcdFx0XHRcdDxwYXRoIGQ9XCJNMjQgOS40TDIyLjYgOCAxNiAxNC42IDkuNCA4IDggOS40bDYuNiA2LjZMOCAyMi42IDkuNCAyNGw2LjYtNi42IDYuNiA2LjYgMS40LTEuNC02LjYtNi42TDI0IDkuNHpcIj48L3BhdGg+XG5cdFx0XHRcdFx0XHQ8L3N2Zz5cblx0XHRcdFx0XHRcdDxzdmdcblx0XHRcdFx0XHRcdFx0Km5nSWY9XCIhZXhwYW5kZWRcIlxuXHRcdFx0XHRcdFx0XHRmb2N1c2FibGU9XCJmYWxzZVwiXG5cdFx0XHRcdFx0XHRcdHByZXNlcnZlQXNwZWN0UmF0aW89XCJ4TWlkWU1pZCBtZWV0XCJcblx0XHRcdFx0XHRcdFx0c3R5bGU9XCJ3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1wiXG5cdFx0XHRcdFx0XHRcdHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuXHRcdFx0XHRcdFx0XHR3aWR0aD1cIjIwXCJcblx0XHRcdFx0XHRcdFx0aGVpZ2h0PVwiMjBcIlxuXHRcdFx0XHRcdFx0XHR2aWV3Qm94PVwiMCAwIDMyIDMyXCJcblx0XHRcdFx0XHRcdFx0YXJpYS1oaWRkZW49XCJ0cnVlXCI+XG5cdFx0XHRcdFx0XHRcdDxwYXRoIGQ9XCJNMjIgMTZMMTIgMjZsLTEuNC0xLjQgOC42LTguNi04LjYtOC42TDEyIDZ6XCI+PC9wYXRoPlxuXHRcdFx0XHRcdFx0PC9zdmc+XG5cdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJjZHMtLWFzc2lzdGl2ZS10ZXh0XCI+XG5cdFx0XHRcdFx0XHR7eyhleHBhbmRlZCA/IGkxOG4uZ2V0KCdVSV9TSEVMTC5TSURFX05BVi5UT0dHTEVfQ0xPU0UnKSA6IGkxOG4uZ2V0KCdVSV9TSEVMTC5TSURFX05BVi5UT0dHTEVfT1BFTicpKSB8IGFzeW5jfX1cblx0XHRcdFx0XHQ8L3NwYW4+XG5cdFx0XHRcdDwvYnV0dG9uPlxuXHRcdFx0PC9mb290ZXI+XG5cdFx0PC9uYXY+XG5cdGAsXG5cdGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgU2lkZU5hdiB7XG5cdEBIb3N0QmluZGluZyhcImNsYXNzLmNkcy0tc2lkZS1uYXZcIikgaG9zdENsYXNzID0gdHJ1ZTtcblx0QElucHV0KCkgYXJpYUxhYmVsID0gXCJTaWRlIG5hdmlnYXRpb25cIjtcblx0LyoqXG5cdCAqIENvbnRyb2xzIHRoZSBleHBhbmRlZCAoYHRydWVgKSBvciBjb2xsYXBzZWQgKGBmYWxzZWApIHN0YXRlIHdoZW4gb24gYSBzbWFsbCBzY3JlZW4uXG5cdCAqL1xuXHRASG9zdEJpbmRpbmcoXCJjbGFzcy5jZHMtLXNpZGUtbmF2LS1leHBhbmRlZFwiKSBASW5wdXQoKSBleHBhbmRlZCA9IHRydWU7XG5cdC8qKlxuXHQgKiBDb250cm9scyB0aGUgaGlkZGVuIChgdHJ1ZWApIG9yIHZpc2libGUgKGBmYWxzZWApIHN0YXRlXG5cdCAqL1xuXHRASG9zdEJpbmRpbmcoXCJjbGFzcy5jZHMtLXNpZGUtbmF2LS1oaWRkZW5cIikgQElucHV0KCkgaGlkZGVuID0gZmFsc2U7XG5cdEBIb3N0QmluZGluZyhcImNsYXNzLmNkcy0tc2lkZS1uYXYtLXJhaWxcIikgQElucHV0KCkgcmFpbCA9IGZhbHNlO1xuXHRASG9zdEJpbmRpbmcoXCJjbGFzcy5jZHMtLXNpZGUtbmF2X19uYXZpZ2F0aW9uXCIpIHV4ID0gdHJ1ZTtcblx0QElucHV0KCkgYWxsb3dFeHBhbnNpb24gPSBmYWxzZTtcblxuXHQvKipcblx0ICogTmF2aWdhdGlvbkl0ZW1zIGZyb20gdGhlIGhlYWRlciBuYXZpZ2F0aW9uIGNvbXBvbmVudCB3aGljaCBhcmUgZGlzcGxheWVkIG9uIHRoZSBzaWRlbmF2IHdoZW4gdGhlIHdpbmRvd1xuXHQgKiBpbm5lcldpZHRoIGlzIHNtYWxsIGVub3VnaC4gU2lkZW5hdiBpdGVtcyBhbmQgbWVudXMgYXJlIGNyZWF0ZWQgdXNpbmcgdGhlIG1vZGVsIHVzZWQgdG8gY3JlYXRlIGhlYWRlclxuXHQgKiBuYXZpZ2F0aW9uIGl0ZW1zLlxuXHQgKi9cblx0QElucHV0KCkgbmF2aWdhdGlvbkl0ZW1zOiBOYXZpZ2F0aW9uSXRlbVtdO1xuXG5cdC8qKlxuXHQgKiBVc2UgdGhlIHJvdXRlckxpbmsgYXR0cmlidXRlIG9uIDxhPiB0YWcgZm9yIG5hdmlnYXRpb24gaW5zdGVhZCBvZiB1c2luZyBldmVudCBoYW5kbGVyc1xuXHQgKi9cblx0QElucHV0KCkgdXNlUm91dGVyID0gZmFsc2U7XG5cblx0Y29uc3RydWN0b3IocHVibGljIGkxOG46IEkxOG4pIHsgfVxuXG5cdHRvZ2dsZSgpIHtcblx0XHR0aGlzLmV4cGFuZGVkID0gIXRoaXMuZXhwYW5kZWQ7XG5cdH1cbn1cbiJdfQ==