UNPKG

lamb-web-lib

Version:

LambWebLib. Es un proyecto angular de tipo Librería. que contiene una Suit de componentes reutilizables para el proyecto [Lamb Financial](https://lamb.upeu.edu.pe).

283 lines 30.3 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc */ /** * @license * Copyright Lamb Team. All Rights Reserved. * Licensed under the MIT License. See License.txt in the project root for license information. */ import { Component, Input, QueryList, Directive, ContentChild, ContentChildren, TemplateRef, Output, EventEmitter, } from '@angular/core'; import { LambTabConfig } from './tab-config'; var LambTabGroupTitleDirective = /** @class */ (function () { function LambTabGroupTitleDirective(templateRef) { this.templateRef = templateRef; } LambTabGroupTitleDirective.decorators = [ { type: Directive, args: [{ selector: 'ng-template[lambTabGroupTitle]', },] }, ]; LambTabGroupTitleDirective.ctorParameters = function () { return [ { type: TemplateRef } ]; }; return LambTabGroupTitleDirective; }()); export { LambTabGroupTitleDirective }; if (false) { /** @type {?} */ LambTabGroupTitleDirective.prototype.templateRef; } var LambTabTitleDirective = /** @class */ (function () { function LambTabTitleDirective(templateRef) { this.templateRef = templateRef; } LambTabTitleDirective.decorators = [ { type: Directive, args: [{ selector: 'ng-template[lambTabTitle]', },] }, ]; LambTabTitleDirective.ctorParameters = function () { return [ { type: TemplateRef } ]; }; return LambTabTitleDirective; }()); export { LambTabTitleDirective }; if (false) { /** @type {?} */ LambTabTitleDirective.prototype.templateRef; } var LambTabContentDirective = /** @class */ (function () { function LambTabContentDirective(templateRef) { this.templateRef = templateRef; } LambTabContentDirective.decorators = [ { type: Directive, args: [{ selector: 'ng-template[lambTabContent]', },] }, ]; LambTabContentDirective.ctorParameters = function () { return [ { type: TemplateRef } ]; }; return LambTabContentDirective; }()); export { LambTabContentDirective }; if (false) { /** @type {?} */ LambTabContentDirective.prototype.templateRef; } /** @type {?} */ var nextId = 0; var LambTabDirective = /** @class */ (function () { function LambTabDirective() { this.id = "lamb-tab-" + nextId++; this.disabled = false; } LambTabDirective.decorators = [ { type: Directive, args: [{ // tslint:disable-next-line:directive-selector selector: 'lamb-tab', },] }, ]; LambTabDirective.propDecorators = { id: [{ type: Input }], title: [{ type: Input }], icon: [{ type: Input }], disabled: [{ type: Input }], contentTemplate: [{ type: ContentChild, args: [LambTabContentDirective,] }], titleTemplate: [{ type: ContentChild, args: [LambTabTitleDirective,] }] }; return LambTabDirective; }()); export { LambTabDirective }; if (false) { /** @type {?} */ LambTabDirective.prototype.id; /** @type {?} */ LambTabDirective.prototype.title; /** @type {?} */ LambTabDirective.prototype.icon; /** @type {?} */ LambTabDirective.prototype.disabled; /** @type {?} */ LambTabDirective.prototype.contentTemplate; /** @type {?} */ LambTabDirective.prototype.titleTemplate; } /** * @record */ export function LambTabChangeEvent() { } if (false) { /** * Id de la pestaña actualmente activa. * @type {?} */ LambTabChangeEvent.prototype.activeId; /** * Id de la pestaña recién seleccionada. * @type {?} */ LambTabChangeEvent.prototype.nextId; /** * Función que evitará el cambio de pertaña si se llama. * @type {?} */ LambTabChangeEvent.prototype.preventDefault; } var LambTabGroupComponent = /** @class */ (function () { function LambTabGroupComponent(config) { this.config = config; /** * Id del tab activo. */ // public currentActiveId: string; /** * Cuando cambia de tab se destruira el contenido anterior o solo se oculatará? */ this.destroyOnHide = true; /** * Emite cuando hay cambios de tabs. */ this.tabChange = new EventEmitter(); this.type = this.config.type; this.justify = this.config.justify; this.orientation = this.config.orientation; } Object.defineProperty(LambTabGroupComponent.prototype, "justify", { set: /** * @param {?} className * @return {?} */ function (className) { if (className === 'fill' || className === 'justified') { this.justifyClass = "nav-" + className; } else { this.justifyClass = "justify-content-" + className; } }, enumerable: true, configurable: true }); /** * @param {?} tabId * @return {?} */ LambTabGroupComponent.prototype.onSelect = /** * @param {?} tabId * @return {?} */ function (tabId) { /** @type {?} */ var selectedTab = this.getTabById(tabId); if (selectedTab && !selectedTab.disabled && this.activeId !== selectedTab.id) { /** @type {?} */ var defaultPrevented_1 = false; this.tabChange.emit({ activeId: this.activeId, nextId: selectedTab.id, preventDefault: function () { defaultPrevented_1 = true; }, }); if (!defaultPrevented_1) { this.activeId = selectedTab.id; // this.currentActiveId = this.activeId; } } }; /** * @return {?} */ LambTabGroupComponent.prototype.ngOnInit = /** * @return {?} */ function () { // this.currentActiveId = this.activeId; }; /** * @return {?} */ LambTabGroupComponent.prototype.ngAfterContentChecked = /** * @return {?} */ function () { /** @type {?} */ var activeTab = this.getTabById(this.activeId); this.activeId = activeTab ? activeTab.id : (this.tabs.length ? this.tabs.first.id : null); // this.currentActiveId = this.activeId; }; /** * @param {?} id * @return {?} */ LambTabGroupComponent.prototype.getTabById = /** * @param {?} id * @return {?} */ function (id) { /** @type {?} */ var tabsWithId = this.tabs.filter(function (tab) { return tab.id === id; }); return tabsWithId.length ? tabsWithId[0] : null; }; LambTabGroupComponent.decorators = [ { type: Component, args: [{ selector: 'lamb-tab-group', exportAs: 'lambTabset', template: "<!-- <ul class=\"nav justify-content-center\" id=\"myTab\" role=\"tablist\"> -->\n<div class=\"row\">\n <div [class]=\"'col-md-' + (orientation === 'horizontal' ? '12' : '2' ) \">\n <!-- <div class=\"card\">\n <div class=\"card-body\"> -->\n <ul *ngIf=\"orientation === 'horizontal' && tabGroupTitle?.templateRef\" class=\"nav flex-column lamb-nav-group-title\">\n <li class=\"nav-item-group-title\">\n <ng-template [ngTemplateOutlet]=\"tabGroupTitle?.templateRef\">\n </ng-template>\n </li>\n </ul>\n <ul [class]=\"'nav nav-' + type + (orientation === 'horizontal' ? ' ' + justifyClass + ' lamb-nav-horizontal' : ' flex-column lamb-ul-nav-vertical' )\"\n id=\"myTab\" role=\"tablist\">\n <li class=\"nav-item-group-title\" *ngIf=\"orientation === 'vertical' && tabGroupTitle?.templateRef\">\n <ng-template [ngTemplateOutlet]=\"tabGroupTitle?.templateRef\">\n </ng-template>\n </li>\n <!-- <li> -->\n <!-- <ul>hola</ul> -->\n <!-- </li> -->\n <li *ngFor=\"let tab of tabs\" class=\"nav-item\">\n <a [id]=\"tab.id\" [class]=\"'nav-link' + (orientation === 'horizontal'? ' lamb-nav-horizontal': ' lamb-nav-vertical' )\" [class.active]=\"tab.id === activeId\"\n [class.disabled]=\"tab.disabled\" (click)=\"!!onSelect(tab.id)\" role=\"tab\" [attr.tabindex]=\"(tab.disabled ? '-1': undefined)\"\n [attr.aria-controls]=\"(!destroyOnHide || tab.id === activeId ? tab.id + '-panel': null)\" [attr.aria-expanded]=\"tab.id === activeId\"\n [attr.aria-disabled]=\"tab.disabled\">\n <!-- data-toggle=\"tab\"\n aria-selected=\"true\" -->\n <ng-template [ngIf]=\"tab.icon\">\n <span>\n <i class=\"{{ tab.icon }} lamb-icon\"></i>\n </span>\n </ng-template>\n {{ tab.title }}\n <ng-template [ngTemplateOutlet]=\"tab.titleTemplate?.templateRef\"></ng-template>\n </a>\n </li>\n <!-- <ng-content select=\"lamb-tab-head\"></ng-content> -->\n </ul>\n <!-- </div>\n </div> -->\n </div>\n <div [class]=\"'col-md-' + (orientation === 'horizontal' ? '12' : '10' ) \">\n\n <div class=\"tab-content\" id=\"myTabContent\">\n <!-- <ng-content select=\"lamb-tab-body\"></ng-content> -->\n <ng-template ngFor let-tab [ngForOf]=\"tabs\">\n <!-- class=\"tab-pane fade {{ tab.id === activeId ? 'active': null }}\" -->\n <div class=\"tab-pane {{ tab.id === activeId ? 'active': null }}\" *ngIf=\"!destroyOnHide || tab.id === activeId\" role=\"tabpanel\"\n [attr.aria-labelledby]=\"tab.id\" id=\"{{ tab.id }}-panel\" [attr.aria-expanded]=\"tab.id === activeId\">\n <ng-template [ngTemplateOutlet]=\"tab.contentTemplate?.templateRef\"></ng-template>\n </div>\n </ng-template>\n </div>\n </div>\n</div>", styles: ["ul.nav{margin-bottom:.8rem;padding-left:0}ul.lamb-ul-nav-vertical{border-bottom:none}.nav-item-group-title{font-weight:400;text-transform:uppercase;padding:.5rem 1rem}.nav-item-group-title /deep/ i{width:50rem}.lamb-nav-group-title{margin-bottom:0!important;text-align:center}.nav-item{text-transform:uppercase;font-weight:400}.nav-item .nav-link{cursor:pointer;font-size:.7rem}.nav-item .nav-link.lamb-nav-vertical{border-right:.214rem solid transparent;display:flex;min-height:2.5rem}.nav-item .nav-link.lamb-nav-horizontal{border-bottom:.214rem solid transparent;display:flex}.nav-item .nav-link:not(.disabled).active,.nav-item .nav-link:not(.disabled).active:focus,.nav-item .nav-link:not(.disabled).active:hover{font-weight:500}.nav-item .nav-link ::ng-deep .lamb-icon{font-size:medium;margin-right:6px}.nav-item .nav-link.disabled{cursor:not-allowed}.nav-item .nav-link.disabled:focus,.nav-item .nav-link.disabled:hover{color:inherit}"], },] }, ]; LambTabGroupComponent.ctorParameters = function () { return [ { type: LambTabConfig } ]; }; LambTabGroupComponent.propDecorators = { tabs: [{ type: ContentChildren, args: [LambTabDirective,] }], tabGroupTitle: [{ type: ContentChild, args: [LambTabGroupTitleDirective,] }], activeId: [{ type: Input }], destroyOnHide: [{ type: Input }], tabChange: [{ type: Output }], justify: [{ type: Input }], orientation: [{ type: Input }], type: [{ type: Input }] }; return LambTabGroupComponent; }()); export { LambTabGroupComponent }; if (false) { /** @type {?} */ LambTabGroupComponent.prototype.justifyClass; /** @type {?} */ LambTabGroupComponent.prototype.tabs; /** @type {?} */ LambTabGroupComponent.prototype.tabGroupTitle; /** * Id del tab que saldrá activado por defecto. * @type {?} */ LambTabGroupComponent.prototype.activeId; /** * Cuando cambia de tab se destruira el contenido anterior o solo se oculatará? * @type {?} */ LambTabGroupComponent.prototype.destroyOnHide; /** * Emite cuando hay cambios de tabs. * @type {?} */ LambTabGroupComponent.prototype.tabChange; /** @type {?} */ LambTabGroupComponent.prototype.orientation; /** @type {?} */ LambTabGroupComponent.prototype.type; /** @type {?} */ LambTabGroupComponent.prototype.config; } /** @type {?} */ export var LAMB_TABS_COMPONENTS = [ LambTabGroupComponent, LambTabDirective, LambTabTitleDirective, LambTabContentDirective, LambTabGroupTitleDirective, ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9sYW1iLXdlYi1saWIvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy90YWJzL3RhYnMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQU9BLE9BQU8sRUFDSCxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFDM0IsU0FBUyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQ3hDLFdBQVcsRUFBdUIsTUFBTSxFQUFFLFlBQVksR0FDekQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU3QztJQUlJLG9DQUFtQixXQUE2QjtRQUE3QixnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7SUFBSSxDQUFDOztnQkFKeEQsU0FBUyxTQUFDO29CQUNQLFFBQVEsRUFBRSxnQ0FBZ0M7aUJBQzdDOzs7Z0JBTkcsV0FBVzs7SUFTZixpQ0FBQztDQUFBLEFBTEQsSUFLQztTQUZZLDBCQUEwQjs7O0lBQ3ZCLGlEQUFvQzs7QUFHcEQ7SUFJSSwrQkFBbUIsV0FBNkI7UUFBN0IsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO0lBQUksQ0FBQzs7Z0JBSnhELFNBQVMsU0FBQztvQkFDUCxRQUFRLEVBQUUsMkJBQTJCO2lCQUN4Qzs7O2dCQWJHLFdBQVc7O0lBZ0JmLDRCQUFDO0NBQUEsQUFMRCxJQUtDO1NBRlkscUJBQXFCOzs7SUFDbEIsNENBQW9DOztBQUdwRDtJQUlJLGlDQUFtQixXQUE2QjtRQUE3QixnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7SUFBSSxDQUFDOztnQkFKeEQsU0FBUyxTQUFDO29CQUNQLFFBQVEsRUFBRSw2QkFBNkI7aUJBQzFDOzs7Z0JBcEJHLFdBQVc7O0lBdUJmLDhCQUFDO0NBQUEsQUFMRCxJQUtDO1NBRlksdUJBQXVCOzs7SUFDcEIsOENBQW9DOzs7SUFHaEQsTUFBTSxHQUFHLENBQUM7QUFFZDtJQUFBO1FBTWEsT0FB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YW0uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXHJcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXHJcbiAqL1xyXG5cclxuaW1wb3J0IHtcclxuICAgIENvbXBvbmVudCwgSW5wdXQsIFF1ZXJ5TGlzdCxcclxuICAgIERpcmVjdGl2ZSwgQ29udGVudENoaWxkLCBDb250ZW50Q2hpbGRyZW4sXHJcbiAgICBUZW1wbGF0ZVJlZiwgQWZ0ZXJDb250ZW50Q2hlY2tlZCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTGFtYlRhYkNvbmZpZyB9IGZyb20gJy4vdGFiLWNvbmZpZyc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICAgIHNlbGVjdG9yOiAnbmctdGVtcGxhdGVbbGFtYlRhYkdyb3VwVGl0bGVdJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIExhbWJUYWJHcm91cFRpdGxlRGlyZWN0aXZlIHtcclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PikgeyB9XHJcbn1cclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6ICduZy10ZW1wbGF0ZVtsYW1iVGFiVGl0bGVdJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIExhbWJUYWJUaXRsZURpcmVjdGl2ZSB7XHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4pIHsgfVxyXG59XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICAgIHNlbGVjdG9yOiAnbmctdGVtcGxhdGVbbGFtYlRhYkNvbnRlbnRdJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIExhbWJUYWJDb250ZW50RGlyZWN0aXZlIHtcclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PikgeyB9XHJcbn1cclxuXHJcbmxldCBuZXh0SWQgPSAwO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6ZGlyZWN0aXZlLXNlbGVjdG9yXHJcbiAgICBzZWxlY3RvcjogJ2xhbWItdGFiJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIExhbWJUYWJEaXJlY3RpdmUge1xyXG5cclxuICAgIEBJbnB1dCgpIGlkID0gYGxhbWItdGFiLSR7bmV4dElkKyt9YDtcclxuXHJcbiAgICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xyXG5cclxuICAgIEBJbnB1dCgpIGljb246IHN0cmluZztcclxuXHJcbiAgICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xyXG5cclxuICAgIEBDb250ZW50Q2hpbGQoTGFtYlRhYkNvbnRlbnREaXJlY3RpdmUpIGNvbnRlbnRUZW1wbGF0ZTogTGFtYlRhYkNvbnRlbnREaXJlY3RpdmU7XHJcbiAgICBAQ29udGVudENoaWxkKExhbWJUYWJUaXRsZURpcmVjdGl2ZSkgdGl0bGVUZW1wbGF0ZTogTGFtYlRhYlRpdGxlRGlyZWN0aXZlO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIExhbWJUYWJDaGFuZ2VFdmVudCB7XHJcbiAgICAvKipcclxuICAgICAqIElkIGRlIGxhIHBlc3Rhw7FhIGFjdHVhbG1lbnRlIGFjdGl2YS5cclxuICAgICAqL1xyXG4gICAgYWN0aXZlSWQ6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIElkIGRlIGxhIHBlc3Rhw7FhIHJlY2nDqW4gc2VsZWNjaW9uYWRhLlxyXG4gICAgICovXHJcbiAgICBuZXh0SWQ6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZ1bmNpw7NuIHF1ZSBldml0YXLDoSBlbCBjYW1iaW8gZGUgcGVydGHDsWEgc2kgc2UgbGxhbWEuXHJcbiAgICAgKi9cclxuICAgIHByZXZlbnREZWZhdWx0OiAoKSA9PiB2b2lkO1xyXG5cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2xhbWItdGFiLWdyb3VwJyxcclxuICAgIGV4cG9ydEFzOiAnbGFtYlRhYnNldCcsXHJcbiAgICB0ZW1wbGF0ZTogYDwhLS0gPHVsIGNsYXNzPVwibmF2IGp1c3RpZnktY29udGVudC1jZW50ZXJcIiBpZD1cIm15VGFiXCIgcm9sZT1cInRhYmxpc3RcIj4gLS0+XHJcbjxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgIDxkaXYgW2NsYXNzXT1cIidjb2wtbWQtJyArIChvcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnID8gJzEyJyA6ICcyJyApIFwiPlxyXG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+IC0tPlxyXG4gICAgICAgIDx1bCAqbmdJZj1cIm9yaWVudGF0aW9uID09PSAnaG9yaXpvbnRhbCcgJiYgdGFiR3JvdXBUaXRsZT8udGVtcGxhdGVSZWZcIiBjbGFzcz1cIm5hdiBmbGV4LWNvbHVtbiBsYW1iLW5hdi1ncm91cC10aXRsZVwiPlxyXG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbS1ncm91cC10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRhYkdyb3VwVGl0bGU/LnRlbXBsYXRlUmVmXCI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICAgICAgPHVsIFtjbGFzc109XCInbmF2IG5hdi0nICsgdHlwZSArIChvcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnID8gJyAnICsganVzdGlmeUNsYXNzICsgJyBsYW1iLW5hdi1ob3Jpem9udGFsJyA6ICcgZmxleC1jb2x1bW4gbGFtYi11bC1uYXYtdmVydGljYWwnIClcIlxyXG4gICAgICAgICAgICBpZD1cIm15VGFiXCIgcm9sZT1cInRhYmxpc3RcIj5cclxuICAgICAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW0tZ3JvdXAtdGl0bGVcIiAqbmdJZj1cIm9yaWVudGF0aW9uID09PSAndmVydGljYWwnICYmIHRhYkdyb3VwVGl0bGU/LnRlbXBsYXRlUmVmXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFiR3JvdXBUaXRsZT8udGVtcGxhdGVSZWZcIj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwhLS0gPGxpPiAtLT5cclxuICAgICAgICAgICAgPCEtLSA8dWw+aG9sYTwvdWw+IC0tPlxyXG4gICAgICAgICAgICA8IS0tIDwvbGk+IC0tPlxyXG4gICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHRhYiBvZiB0YWJzXCIgY2xhc3M9XCJuYXYtaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgPGEgW2lkXT1cInRhYi5pZFwiIFtjbGFzc109XCInbmF2LWxpbmsnICsgKG9yaWVudGF0aW9uID09PSAnaG9yaXpvbnRhbCc/ICcgbGFtYi1uYXYtaG9yaXpvbnRhbCc6ICcgbGFtYi1uYXYtdmVydGljYWwnIClcIiBbY2xhc3MuYWN0aXZlXT1cInRhYi5pZCA9PT0gYWN0aXZlSWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJ0YWIuZGlzYWJsZWRcIiAoY2xpY2spPVwiISFvblNlbGVjdCh0YWIuaWQpXCIgcm9sZT1cInRhYlwiIFthdHRyLnRhYmluZGV4XT1cIih0YWIuZGlzYWJsZWQgPyAnLTEnOiB1bmRlZmluZWQpXCJcclxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cIighZGVzdHJveU9uSGlkZSB8fCB0YWIuaWQgPT09IGFjdGl2ZUlkID8gdGFiLmlkICsgJy1wYW5lbCc6IG51bGwpXCIgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJ0YWIuaWQgPT09IGFjdGl2ZUlkXCJcclxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cInRhYi5kaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gZGF0YS10b2dnbGU9XCJ0YWJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD1cInRydWVcIiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwidGFiLmljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInt7IHRhYi5pY29uIH19IGxhbWItaWNvblwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgdGFiLnRpdGxlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRhYi50aXRsZVRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwhLS0gPG5nLWNvbnRlbnQgc2VsZWN0PVwibGFtYi10YWItaGVhZFwiPjwvbmctY29udGVudD4gLS0+XHJcbiAgICAgICAgPC91bD5cclxuICAgICAgICA8IS0tIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IFtjbGFzc109XCInY29sLW1kLScgKyAob3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJyA/ICcxMicgOiAnMTAnICkgXCI+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWItY29udGVudFwiIGlkPVwibXlUYWJDb250ZW50XCI+XHJcbiAgICAgICAgICAgIDwhLS0gPG5nLWNvbnRlbnQgc2VsZWN0PVwibGFtYi10YWItYm9keVwiPjwvbmctY29udGVudD4gLS0+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtdGFiIFtuZ0Zvck9mXT1cInRhYnNcIj5cclxuICAgICAgICAgICAgICAgIDwhLS0gY2xhc3M9XCJ0YWItcGFuZSBmYWRlIHt7IHRhYi5pZCA9PT0gYWN0aXZlSWQgPyAnYWN0aXZlJzogbnVsbCB9fVwiIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYi1wYW5lIHt7IHRhYi5pZCA9PT0gYWN0aXZlSWQgPyAnYWN0aXZlJzogbnVsbCB9fVwiICpuZ0lmPVwiIWRlc3Ryb3lPbkhpZGUgfHwgdGFiLmlkID09PSBhY3RpdmVJZFwiIHJvbGU9XCJ0YWJwYW5lbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cInRhYi5pZFwiIGlkPVwie3sgdGFiLmlkIH19LXBhbmVsXCIgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJ0YWIuaWQgPT09IGFjdGl2ZUlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRhYi5jb250ZW50VGVtcGxhdGU/LnRlbXBsYXRlUmVmXCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PmAsXHJcbiAgICBzdHlsZXM6IFtgdWwubmF2e21hcmdpbi1ib3R0b206LjhyZW07cGFkZGluZy1sZWZ0OjB9dWwubGFtYi11bC1uYXYtdmVydGljYWx7Ym9yZGVyLWJvdHRvbTpub25lfS5uYXYtaXRlbS1ncm91cC10aXRsZXtmb250LXdlaWdodDo0MDA7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO3BhZGRpbmc6LjVyZW0gMXJlbX0ubmF2LWl0ZW0tZ3JvdXAtdGl0bGUgL2RlZXAvIGl7d2lkdGg6NTByZW19LmxhbWItbmF2LWdyb3VwLXRpdGxle21hcmdpbi1ib3R0b206MCFpbXBvcnRhbnQ7dGV4dC1hbGlnbjpjZW50ZXJ9Lm5hdi1pdGVte3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtmb250LXdlaWdodDo0MDB9Lm5hdi1pdGVtIC5uYXYtbGlua3tjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6LjdyZW19Lm5hdi1pdGVtIC5uYXYtbGluay5sYW1iLW5hdi12ZXJ0aWNhbHtib3JkZXItcmlnaHQ6LjIxNHJlbSBzb2xpZCB0cmFuc3BhcmVudDtkaXNwbGF5OmZsZXg7bWluLWhlaWdodDoyLjVyZW19Lm5hdi1pdGVtIC5uYXYtbGluay5sYW1iLW5hdi1ob3Jpem9udGFse2JvcmRlci1ib3R0b206LjIxNHJlbSBzb2xpZCB0cmFuc3BhcmVudDtkaXNwbGF5OmZsZXh9Lm5hdi1pdGVtIC5uYXYtbGluazpub3QoLmRpc2FibGVkKS5hY3RpdmUsLm5hdi1pdGVtIC5uYXYtbGluazpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsLm5hdi1pdGVtIC5uYXYtbGluazpub3QoLmRpc2FibGVkKS5hY3RpdmU6aG92ZXJ7Zm9udC13ZWlnaHQ6NTAwfS5uYXYtaXRlbSAubmF2LWxpbmsgOjpuZy1kZWVwIC5sYW1iLWljb257Zm9udC1zaXplOm1lZGl1bTttYXJnaW4tcmlnaHQ6NnB4fS5uYXYtaXRlbSAubmF2LWxpbmsuZGlzYWJsZWR7Y3Vyc29yOm5vdC1hbGxvd2VkfS5uYXYtaXRlbSAubmF2LWxpbmsuZGlzYWJsZWQ6Zm9jdXMsLm5hdi1pdGVtIC5uYXYtbGluay5kaXNhYmxlZDpob3Zlcntjb2xvcjppbmhlcml0fWBdLFxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIExhbWJUYWJHcm91cENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50Q2hlY2tlZCB7XHJcbiAgICBqdXN0aWZ5Q2xhc3M6IHN0cmluZztcclxuICAgIEBDb250ZW50Q2hpbGRyZW4oTGFtYlRhYkRpcmVjdGl2ZSkgdGFiczogUXVlcnlMaXN0PExhbWJUYWJEaXJlY3RpdmU+O1xyXG4gICAgQENvbnRlbnRDaGlsZChMYW1iVGFiR3JvdXBUaXRsZURpcmVjdGl2ZSkgdGFiR3JvdXBUaXRsZTogTGFtYlRhYkdyb3VwVGl0bGVEaXJlY3RpdmU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJZCBkZWwgdGFiIHF1ZSBzYWxkcsOhIGFjdGl2YWRvIHBvciBkZWZlY3RvLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBhY3RpdmVJZDogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSWQgZGVsIHRhYiBhY3Rpdm8uXHJcbiAgICAgKi9cclxuICAgIC8vIHB1YmxpYyBjdXJyZW50QWN0aXZlSWQ6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEN1YW5kbyBjYW1iaWEgZGUgdGFiIHNlIGRlc3RydWlyYSBlbCBjb250ZW5pZG8gYW50ZXJpb3IgbyBzb2xvIHNlIG9jdWxhdGFyw6E/XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIGRlc3Ryb3lPbkhpZGUgPSB0cnVlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRW1pdGUgY3VhbmRvIGhheSBjYW1iaW9zIGRlIHRhYnMuXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSB0YWJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPExhbWJUYWJDaGFuZ2VFdmVudD4oKTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgc2V0IGp1c3RpZnkoY2xhc3NOYW1lOiAnc3RhcnQnIHwgJ2NlbnRlcicgfCAnZW5kJyB8ICdmaWxsJyB8ICdqdXN0aWZpZWQnKSB7XHJcbiAgICAgICAgaWYgKGNsYXNzTmFtZSA9PT0gJ2ZpbGwnIHx8IGNsYXNzTmFtZSA9PT0gJ2p1c3RpZmllZCcpIHtcclxuICAgICAgICAgICAgdGhpcy5qdXN0aWZ5Q2xhc3MgPSBgbmF2LSR7Y2xhc3NOYW1lfWA7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5qdXN0aWZ5Q2xhc3MgPSBganVzdGlmeS1jb250ZW50LSR7Y2xhc3NOYW1lfWA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uU2VsZWN0KHRhYklkOiBzdHJpbmcpIHtcclxuICAgICAgICBjb25zdCBzZWxlY3RlZFRhYiA9IHRoaXMuZ2V0VGFiQnlJZCh0YWJJZCk7XHJcbiAgICAgICAgaWYgKHNlbGVjdGVkVGFiICYmICFzZWxlY3RlZFRhYi5kaXNhYmxlZCAmJiB0aGlzLmFjdGl2ZUlkICE9PSBzZWxlY3RlZFRhYi5pZCkge1xyXG4gICAgICAgICAgICBsZXQgZGVmYXVsdFByZXZlbnRlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnRhYkNoYW5nZS5lbWl0KFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZUlkOiB0aGlzLmFjdGl2ZUlkLFxyXG4gICAgICAgICAgICAgICAgICAgIG5leHRJZDogc2VsZWN0ZWRUYWIuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgcHJldmVudERlZmF1bHQ6ICgpID0+IHsgZGVmYXVsdFByZXZlbnRlZCA9IHRydWU7IH0sXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAoIWRlZmF1bHRQcmV2ZW50ZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlSWQgPSBzZWxlY3RlZFRhYi5pZDtcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMuY3VycmVudEFjdGl2ZUlkID0gdGhpcy5hY3RpdmVJZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY29uZmlnOiBMYW1iVGFiQ29uZmlnKSB7XHJcbiAgICAgICAgdGhpcy50eXBlID0gdGhpcy5jb25maWcudHlwZTtcclxuICAgICAgICB0aGlzLmp1c3RpZnkgPSB0aGlzLmNvbmZpZy5qdXN0aWZ5O1xyXG4gICAgICAgIHRoaXMub3JpZW50YXRpb24gPSB0aGlzLmNvbmZpZy5vcmllbnRhdGlvbjtcclxuICAgIH1cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIC8vIHRoaXMuY3VycmVudEFjdGl2ZUlkID0gdGhpcy5hY3RpdmVJZDtcclxuICAgIH1cclxuXHJcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bWVtYmVyLW9yZGVyaW5nXHJcbiAgICBASW5wdXQoKSBvcmllbnRhdGlvbjogJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJztcclxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptZW1iZXItb3JkZXJpbmdcclxuICAgIEBJbnB1dCgpIHR5cGU6ICd0YWJzcycgfCAncGlsbHMnO1xyXG5cclxuICAgIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpIHtcclxuICAgICAgICBjb25zdCBhY3RpdmVUYWIgPSB0aGlzLmdldFRhYkJ5SWQodGhpcy5hY3RpdmVJZCk7XHJcbiAgICAgICAgdGhpcy5hY3RpdmVJZCA9IGFjdGl2ZVRhYiA/IGFjdGl2ZVRhYi5pZCA6ICh0aGlzLnRhYnMubGVuZ3RoID8gdGhpcy50YWJzLmZpcnN0LmlkIDogbnVsbCk7XHJcbiAgICAgICAgLy8gdGhpcy5jdXJyZW50QWN0aXZlSWQgPSB0aGlzLmFjdGl2ZUlkO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0VGFiQnlJZChpZDogc3RyaW5nKTogTGFtYlRhYkRpcmVjdGl2ZSB7XHJcbiAgICAgICAgY29uc3QgdGFic1dpdGhJZDogTGFtYlRhYkRpcmVjdGl2ZVtdID0gdGhpcy50YWJzLmZpbHRlcih0YWIgPT4gdGFiLmlkID09PSBpZCk7XHJcbiAgICAgICAgcmV0dXJuIHRhYnNXaXRoSWQubGVuZ3RoID8gdGFic1dpdGhJZFswXSA6IG51bGw7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBMQU1CX1RBQlNfQ09NUE9ORU5UUyA9IFtcclxuICAgIExhbWJUYWJHcm91cENvbXBvbmVudCxcclxuICAgIExhbWJUYWJEaXJlY3RpdmUsXHJcbiAgICBMYW1iVGFiVGl0bGVEaXJlY3RpdmUsXHJcbiAgICBMYW1iVGFiQ29udGVudERpcmVjdGl2ZSxcclxuICAgIExhbWJUYWJHcm91cFRpdGxlRGlyZWN0aXZlLFxyXG5dO1xyXG5cclxuXHJcbiJdfQ==