UNPKG

@duoduo-oba/ng-devui

Version:

DevUI components based on Angular

370 lines 31.1 kB
/** * @fileoverview added by tsickle * Generated from: accordion.component.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core'; import { I18nService } from '@duoduo-oba/ng-devui/i18n'; var AccordionComponent = /** @class */ (function () { function AccordionComponent(i18n) { var _this = this; this.i18n = i18n; /* Key值定义, 用于自定义数据结构 */ this.titleKey = 'title'; // 标题的key,item[titleKey]类型为string,为标题显示内容 // 标题的key,item[titleKey]类型为string,为标题显示内容 this.loadingKey = 'loading'; // 子菜单动态加载item[loadingKey]类型为boolean // 子菜单动态加载item[loadingKey]类型为boolean this.childrenKey = 'children'; // 子菜单Key // 子菜单Key this.disabledKey = 'disabled'; // 是否禁用Key // 是否禁用Key this.activeKey = 'active'; // 菜单是否激活/选中 // 菜单是否激活/选中 this.openKey = 'open'; // 菜单是否打开 // 可点击菜单内容条模板 this.menuToggle = new EventEmitter(); // 可展开菜单展开事件 // 可展开菜单展开事件 this.itemClick = new EventEmitter(); // 可点击菜单点击事件 // 可点击菜单点击事件 this.activeItemChange = new EventEmitter(); /** * 高级选项和模板 */ this.restrictOneOpen = false; // 限制一级菜单同时只能打开一个 // 限制一级菜单同时只能打开一个 this.autoOpenActiveMenu = false; // 自动展开活跃菜单 // 自动展开活跃菜单 this.showNoContent = true; // 没有内容的时候是否显示没有数据 // 可折叠菜单内容完全自定义,用做折叠面板 /* 内置路由/链接/动态判断路由或链接类型 */ this.linkType = ''; this.linkTypeKey = 'linkType'; // linkType为'dependOnLinkTypeKey'时指定对象linkType定义区 // linkType为'dependOnLinkTypeKey'时指定对象linkType定义区 this.linkKey = 'link'; // 链接内容的key // 链接内容的key this.linkTargetKey = 'target'; // 链接目标窗口的key // 链接目标窗口的key this.linkDefaultTarget = '_self'; // 不设置target的时候target默认值 // 点击了可点击菜单 this.itemClickFn = (/** * @param {?} itemEvent * @return {?} */ function (itemEvent) { /** @type {?} */ var prevActiveItem = _this.activeItem; _this.activeItemFn(itemEvent.item); _this.itemClick.emit(tslib_1.__assign({}, itemEvent, { prevActiveItem: prevActiveItem })); }); this.linkItemClickFn = (/** * @param {?} itemEvent * @return {?} */ function (itemEvent) { /** @type {?} */ var prevActiveItem = _this.activeItem; _this.activeItem = itemEvent.item; _this.itemClick.emit(tslib_1.__assign({}, itemEvent, { prevActiveItem: prevActiveItem })); }); // 打开或关闭可折叠菜单 this.menuToggleFn = (/** * @param {?} menuEvent * @return {?} */ function (menuEvent) { _this.openMenuFn(menuEvent.item, menuEvent.open); _this.menuToggle.emit(menuEvent); }); } /** * @param {?} changes * @return {?} */ AccordionComponent.prototype.ngOnChanges = /** * @param {?} changes * @return {?} */ function (changes) { if (changes['data']) { this.initActiveItem(); } if (changes['autoOpenActiveMenu']) { if (this.autoOpenActiveMenu && changes['autoOpenActiveMenu'].previousValue === false) { this.cleanOpenData(); } } }; /** * @return {?} */ AccordionComponent.prototype.ngOnInit = /** * @return {?} */ function () { var _this = this; if (this.data) { this.initActiveItem(); } this.i18nCommonText = this.i18n.getI18nText().common; this.i18nSubscription = this.i18n.langChange().subscribe((/** * @param {?} data * @return {?} */ function (data) { _this.i18nCommonText = data.common; })); }; /** * @return {?} */ AccordionComponent.prototype.ngOnDestroy = /** * @return {?} */ function () { if (this.i18nSubscription) { this.i18nSubscription.unsubscribe(); } }; /** * @private * @param {?} arr * @param {?=} childrenKey * @param {?=} includeParent * @param {?=} includeLeaf * @return {?} */ AccordionComponent.prototype.flatten = /** * @private * @param {?} arr * @param {?=} childrenKey * @param {?=} includeParent * @param {?=} includeLeaf * @return {?} */ function (arr, childrenKey, includeParent, includeLeaf) { var _this = this; if (childrenKey === void 0) { childrenKey = 'children'; } if (includeParent === void 0) { includeParent = false; } if (includeLeaf === void 0) { includeLeaf = true; } return arr.reduce((/** * @param {?} acc * @param {?} cur * @return {?} */ function (acc, cur) { /** @type {?} */ var children = cur[childrenKey]; if (children === undefined) { if (includeLeaf) { acc.push(cur); } } else { if (includeParent) { acc.push(cur); } if (Array.isArray(children)) { acc.push.apply(acc, tslib_1.__spread(_this.flatten(children, childrenKey, includeParent))); } } return acc; }), []); }; /** * @private * @return {?} */ AccordionComponent.prototype.cleanOpenData = /** * @private * @return {?} */ function () { var _this = this; this.flatten(this.data, this.childrenKey, true, false).forEach((/** * @param {?} item * @return {?} */ function (item) { return item[_this.openKey] = undefined; })); }; // 默认激活 // 默认激活 /** * @return {?} */ AccordionComponent.prototype.initActiveItem = // 默认激活 /** * @return {?} */ function () { var _this = this; /** @type {?} */ var activeItem = this.flatten(this.data, this.childrenKey) .filter((/** * @param {?} item * @return {?} */ function (item) { return item[_this.activeKey]; })).pop(); if (activeItem) { if (!this.activeItem) { this.activeItemFn(activeItem); } } else { this.activeItem = undefined; } }; // 激活子菜单项并去掉其他子菜单的激活 // 激活子菜单项并去掉其他子菜单的激活 /** * @param {?} item * @return {?} */ AccordionComponent.prototype.activeItemFn = // 激活子菜单项并去掉其他子菜单的激活 /** * @param {?} item * @return {?} */ function (item) { if (this.activeItem && this.activeItem[this.activeKey]) { this.activeItem[this.activeKey] = false; } item[this.activeKey] = true; this.activeItem = item; this.activeItemChange.emit(this.activeItem); }; // 打开或关闭一级菜单,如果有限制只能展开一项则关闭其他一级菜单 // 打开或关闭一级菜单,如果有限制只能展开一项则关闭其他一级菜单 /** * @param {?} item * @param {?} open * @return {?} */ AccordionComponent.prototype.openMenuFn = // 打开或关闭一级菜单,如果有限制只能展开一项则关闭其他一级菜单 /** * @param {?} item * @param {?} open * @return {?} */ function (item, open) { var _this = this; if (open && this.restrictOneOpen) { ((/** @type {?} */ ((this.data)))).forEach((/** * @param {?} itemtemp * @return {?} */ function (itemtemp) { itemtemp[_this.openKey] = false; })); } item[this.openKey] = open; }; AccordionComponent.decorators = [ { type: Component, args: [{ selector: 'd-accordion', template: "<d-accordion-list class=\"devui-accordion-menu devui-scrollbar\" [data]=\"data\" [deepth]=\"0\" [parent]=\"null\"> </d-accordion-list>\r\n", styles: ["@charset \"UTF-8\";:host{display:block}:host ::ng-deep d-accordion-item,:host ::ng-deep d-accordion-item-hreflink,:host ::ng-deep d-accordion-item-routerlink,:host ::ng-deep d-accordion-list,:host ::ng-deep d-accordion-menu{display:block}:host ::ng-deep .devui-accordion-menu{display:block;background:#fff;box-shadow:0 1px 2px 0 rgba(41,48,64,.2);width:100%;overflow-y:auto}:host ::ng-deep .devui-accordion-menu>.devui-accordion-list>.devui-accordion-item>.devui-accordion-item-title,:host ::ng-deep .devui-accordion-menu>.devui-accordion-list>.devui-accordion-item>.devui-accordion-menu-item>.devui-accordion-item-title{font-weight:700}:host ::ng-deep .devui-accordion-menu .devui-over-flow-ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}:host ::ng-deep .devui-accordion-submenu{background:#fff;width:100%}:host ::ng-deep .devui-accordion-item-title{display:block;height:40px;width:100%;padding:0 10px 0 20px;font-weight:400;line-height:40px;color:#252b3a;background:0 0;cursor:pointer}:host ::ng-deep .devui-accordion-item-title.disabled{opacity:.3;cursor:default}:host ::ng-deep .devui-accordion-item-title:not(.disabled):hover{background:#f2f5fc}:host ::ng-deep .devui-accordion-item-title:not(.disabled).active,:host ::ng-deep .devui-accordion-item-title:not(.disabled).devui-router-active{color:#5e7ce0;background:#f2f5fc}:host ::ng-deep .devui-accordion-item-title:not(.disabled).active>a,:host ::ng-deep .devui-accordion-item-title:not(.disabled).devui-router-active>a{color:#5e7ce0}:host ::ng-deep .devui-accordion-item-title>a{text-decoration:none;display:block;width:100%;color:#252b3a}:host ::ng-deep .devui-accordion-item-title>a:hover{color:inherit;text-decoration:none}:host ::ng-deep d-accordion-item-hreflink.devui-accordion-item-title,:host ::ng-deep d-accordion-item-routerlink.devui-accordion-item-title{padding:0}:host ::ng-deep d-accordion-item-hreflink.devui-accordion-item-title>a,:host ::ng-deep d-accordion-item-routerlink.devui-accordion-item-title>a{padding:0 10px 0 20px}:host ::ng-deep .devui-accordion-menu-item>.devui-accordion-item-title{position:relative;padding-right:30px}:host ::ng-deep .devui-accordion-menu-item>.devui-accordion-item-title>.devui-accordion-open-icon{display:inline-block;text-indent:0;pointer-events:none;position:absolute;right:10px;top:12px;width:16px;height:16px;line-height:16px;-webkit-transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out}:host ::ng-deep .devui-accordion-menu-item>.devui-accordion-item-title>.devui-accordion-open-icon>svg{width:16px;height:16px}:host ::ng-deep .devui-accordion-menu-item>.devui-accordion-item-title>.devui-accordion-open-icon>svg polygon{fill:#252b3a}:host ::ng-deep .devui-accordion-menu-item>.devui-accordion-item-title:not(.open)>.devui-accordion-open-icon{-webkit-transform:rotate(-90deg);transform:rotate(-90deg);-webkit-transform-origin:center;transform-origin:center}:host ::ng-deep .devui-accordion-menu-item>.devui-accordion-item-title.disabled>.devui-accordion-open-icon{opacity:.3}:host ::ng-deep .devui-accordion-menu-item>.devui-accordion-item-title.active{color:#5e7ce0;background:0 0}:host ::ng-deep d-accordion-list.devui-accordion-menu-hidden{display:none}"] }] } ]; /** @nocollapse */ AccordionComponent.ctorParameters = function () { return [ { type: I18nService } ]; }; AccordionComponent.propDecorators = { data: [{ type: Input }], titleKey: [{ type: Input }], loadingKey: [{ type: Input }], childrenKey: [{ type: Input }], disabledKey: [{ type: Input }], activeKey: [{ type: Input }], openKey: [{ type: Input }], menuItemTemplate: [{ type: Input }], itemTemplate: [{ type: Input }], menuToggle: [{ type: Output }], itemClick: [{ type: Output }], activeItemChange: [{ type: Output }], restrictOneOpen: [{ type: Input }], autoOpenActiveMenu: [{ type: Input }], showNoContent: [{ type: Input }], noContentTemplate: [{ type: Input }], loadingTemplate: [{ type: Input }], innerListTemplate: [{ type: Input }], linkType: [{ type: Input }], linkTypeKey: [{ type: Input }], linkKey: [{ type: Input }], linkTargetKey: [{ type: Input }], linkDefaultTarget: [{ type: Input }] }; return AccordionComponent; }()); export { AccordionComponent }; if (false) { /** @type {?} */ AccordionComponent.prototype.data; /** @type {?} */ AccordionComponent.prototype.titleKey; /** @type {?} */ AccordionComponent.prototype.loadingKey; /** @type {?} */ AccordionComponent.prototype.childrenKey; /** @type {?} */ AccordionComponent.prototype.disabledKey; /** @type {?} */ AccordionComponent.prototype.activeKey; /** @type {?} */ AccordionComponent.prototype.openKey; /** @type {?} */ AccordionComponent.prototype.menuItemTemplate; /** @type {?} */ AccordionComponent.prototype.itemTemplate; /** @type {?} */ AccordionComponent.prototype.menuToggle; /** @type {?} */ AccordionComponent.prototype.itemClick; /** @type {?} */ AccordionComponent.prototype.activeItemChange; /** * 高级选项和模板 * @type {?} */ AccordionComponent.prototype.restrictOneOpen; /** @type {?} */ AccordionComponent.prototype.autoOpenActiveMenu; /** @type {?} */ AccordionComponent.prototype.showNoContent; /** @type {?} */ AccordionComponent.prototype.noContentTemplate; /** @type {?} */ AccordionComponent.prototype.loadingTemplate; /** @type {?} */ AccordionComponent.prototype.innerListTemplate; /** @type {?} */ AccordionComponent.prototype.linkType; /** @type {?} */ AccordionComponent.prototype.linkTypeKey; /** @type {?} */ AccordionComponent.prototype.linkKey; /** @type {?} */ AccordionComponent.prototype.linkTargetKey; /** @type {?} */ AccordionComponent.prototype.linkDefaultTarget; /** @type {?} */ AccordionComponent.prototype.activeItem; /** @type {?} */ AccordionComponent.prototype.i18nCommonText; /** @type {?} */ AccordionComponent.prototype.i18nSubscription; /** @type {?} */ AccordionComponent.prototype.itemClickFn; /** @type {?} */ AccordionComponent.prototype.linkItemClickFn; /** @type {?} */ AccordionComponent.prototype.menuToggleFn; /** * @type {?} * @private */ AccordionComponent.prototype.i18n; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWRldnVpL2FjY29yZGlvbi8iLCJzb3VyY2VzIjpbImFjY29yZGlvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLFdBQVcsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUVqSSxPQUFPLEVBQUUsV0FBVyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUczRDtJQTBDRSw0QkFBb0IsSUFBaUI7UUFBckMsaUJBQ0M7UUFEbUIsU0FBSSxHQUFKLElBQUksQ0FBYTs7UUFsQzVCLGFBQVEsR0FBRyxPQUFPLENBQUMsQ0FBQyx5Q0FBeUM7O1FBQzdELGVBQVUsR0FBRyxTQUFTLENBQUMsQ0FBQyxvQ0FBb0M7O1FBQzVELGdCQUFXLEdBQUcsVUFBVSxDQUFDLENBQUMsU0FBUzs7UUFDbkMsZ0JBQVcsR0FBRyxVQUFVLENBQUMsQ0FBQyxVQUFVOztRQUNwQyxjQUFTLEdBQUcsUUFBUSxDQUFDLENBQUMsWUFBWTs7UUFDbEMsWUFBTyxHQUFHLE1BQU0sQ0FBQyxDQUFDLFNBQVM7O1FBTTFCLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBNEIsQ0FBQyxDQUFDLFlBQVk7O1FBQ3ZFLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBMkIsQ0FBQyxDQUFDLFlBQVk7O1FBQ3JFLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7Ozs7UUFHNUMsb0JBQWUsR0FBRyxLQUFLLENBQUMsQ0FBQyxpQkFBaUI7O1FBQzFDLHVCQUFrQixHQUFHLEtBQUssQ0FBQyxDQUFDLFdBQVc7O1FBQ3ZDLGtCQUFhLEdBQUcsSUFBSSxDQUFDLENBQUMsa0JBQWtCOzs7UUFNeEMsYUFBUSxHQUFxRSxFQUFFLENBQUM7UUFDaEYsZ0JBQVcsR0FBRyxVQUFVLENBQUMsQ0FBQyxpREFBaUQ7O1FBQzNFLFlB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TCxLQUFLO2tDQUNMLEtBQUs7b0NBQ0wsS0FBSzsyQkFHTCxLQUFLOzhCQUNMLEtBQUs7MEJBQ0wsS0FBSztnQ0FDTCxLQUFLO29DQUNMLEtBQUs7O0lBNkdSLHlCQUFDO0NBQUEsQUFqSkQsSUFpSkM7U0E1SVksa0JBQWtCOzs7SUFDN0Isa0NBQThDOztJQUU5QyxzQ0FBNEI7O0lBQzVCLHdDQUFnQzs7SUFDaEMseUNBQWtDOztJQUNsQyx5Q0FBa0M7O0lBQ2xDLHVDQUE4Qjs7SUFDOUIscUNBQTBCOztJQUcxQiw4Q0FBNEM7O0lBQzVDLDBDQUF3Qzs7SUFFeEMsd0NBQW9FOztJQUNwRSx1Q0FBa0U7O0lBQ2xFLDhDQUFxRDs7Ozs7SUFHckQsNkNBQWlDOztJQUNqQyxnREFBb0M7O0lBQ3BDLDJDQUE4Qjs7SUFDOUIsK0NBQTZDOztJQUM3Qyw2Q0FBMkM7O0lBQzNDLCtDQUE2Qzs7SUFHN0Msc0NBQXlGOztJQUN6Rix5Q0FBa0M7O0lBQ2xDLHFDQUEwQjs7SUFDMUIsMkNBQWtDOztJQUNsQywrQ0FBcUM7O0lBRXJDLHdDQUFXOztJQUNYLDRDQUF3Qzs7SUFDeEMsOENBQStCOztJQXNFL0IseUNBSUM7O0lBRUQsNkNBSUM7O0lBR0QsMENBR0M7Ozs7O0lBcEZXLGtDQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVGVtcGxhdGVSZWYsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY2NvcmRpb25NZW51VHlwZSwgQWNjb3JkaW9uTWVudVRvZ2dsZUV2ZW50LCBBY2NvcmRpb25JdGVtQ2xpY2tFdmVudCwgQWNjb3JkaW9uT3B0aW9uc30gZnJvbSAnLi9hY2NvcmRpb24udHlwZSc7XHJcbmltcG9ydCB7IEkxOG5TZXJ2aWNlLCBJMThuSW50ZXJmYWNlIH0gZnJvbSAnbmctZGV2dWkvaTE4bic7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkLWFjY29yZGlvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2FjY29yZGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYWNjb3JkaW9uLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBY2NvcmRpb25Db21wb25lbnQgaW1wbGVtZW50cyBBY2NvcmRpb25PcHRpb25zLCBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBkYXRhOiBBcnJheTxhbnk+IHwgQWNjb3JkaW9uTWVudVR5cGU7XHJcbiAgLyogS2V55YC85a6a5LmJLCDnlKjkuo7oh6rlrprkuYnmlbDmja7nu5PmnoQgKi9cclxuICBASW5wdXQoKSB0aXRsZUtleSA9ICd0aXRsZSc7IC8vIOagh+mimOeahGtlee+8jGl0ZW1bdGl0bGVLZXld57G75Z6L5Li6c3RyaW5n77yM5Li65qCH6aKY5pi+56S65YaF5a65XHJcbiAgQElucHV0KCkgbG9hZGluZ0tleSA9ICdsb2FkaW5nJzsgLy8g5a2Q6I+c5Y2V5Yqo5oCB5Yqg6L29aXRlbVtsb2FkaW5nS2V5Xeexu+Wei+S4umJvb2xlYW5cclxuICBASW5wdXQoKSBjaGlsZHJlbktleSA9ICdjaGlsZHJlbic7IC8vIOWtkOiPnOWNlUtleVxyXG4gIEBJbnB1dCgpIGRpc2FibGVkS2V5ID0gJ2Rpc2FibGVkJzsgLy8g5piv5ZCm56aB55SoS2V5XHJcbiAgQElucHV0KCkgYWN0aXZlS2V5ID0gJ2FjdGl2ZSc7IC8vIOiPnOWNleaYr+WQpua/gOa0uy/pgInkuK1cclxuICBASW5wdXQoKSBvcGVuS2V5ID0gJ29wZW4nOyAvLyDoj5zljZXmmK/lkKbmiZPlvIBcclxuXHJcbiAgLyog6I+c5Y2V5qih5p2/ICovXHJcbiAgQElucHV0KCkgbWVudUl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjsgLy8g5Y+v5bGV5byA6I+c5Y2V5YaF5a655p2h5qih5p2/XHJcbiAgQElucHV0KCkgaXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+OyAvLyDlj6/ngrnlh7voj5zljZXlhoXlrrnmnaHmqKHmnb9cclxuXHJcbiAgQE91dHB1dCgpIG1lbnVUb2dnbGUgPSBuZXcgRXZlbnRFbWl0dGVyPEFjY29yZGlvbk1lbnVUb2dnbGVFdmVudD4oKTsgLy8g5Y+v5bGV5byA6I+c5Y2V5bGV5byA5LqL5Lu2XHJcbiAgQE91dHB1dCgpIGl0ZW1DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8QWNjb3JkaW9uSXRlbUNsaWNrRXZlbnQ+KCk7IC8vIOWPr+eCueWHu+iPnOWNleeCueWHu+S6i+S7tlxyXG4gIEBPdXRwdXQoKSBhY3RpdmVJdGVtQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIC8qKiDpq5jnuqfpgInpobnlkozmqKHmnb8gKi9cclxuICBASW5wdXQoKSByZXN0cmljdE9uZU9wZW4gPSBmYWxzZTsgLy8g6ZmQ5Yi25LiA57qn6I+c5Y2V5ZCM5pe25Y+q6IO95omT5byA5LiA5LiqXHJcbiAgQElucHV0KCkgYXV0b09wZW5BY3RpdmVNZW51ID0gZmFsc2U7IC8vIOiHquWKqOWxleW8gOa0u+i3g+iPnOWNlVxyXG4gIEBJbnB1dCgpIHNob3dOb0NvbnRlbnQgPSB0cnVlOyAvLyDmsqHmnInlhoXlrrnnmoTml7blgJnmmK/lkKbmmL7npLrmsqHmnInmlbDmja5cclxuICBASW5wdXQoKSBub0NvbnRlbnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjsgLy8g5rKh5pyJ5YaF5a6555qE5pe25YCZ5L2/55So6Ieq5a6a5LmJ5qih5p2/XHJcbiAgQElucHV0KCkgbG9hZGluZ1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+OyAvLyDliqDovb3kuK3kvb/nlKjoh6rlrprkuYnmqKHmnb9cclxuICBASW5wdXQoKSBpbm5lckxpc3RUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjsgLy8g5Y+v5oqY5Y+g6I+c5Y2V5YaF5a655a6M5YWo6Ieq5a6a5LmJ77yM55So5YGa5oqY5Y+g6Z2i5p2/XHJcblxyXG4gIC8qIOWGhee9rui3r+eUsS/pk77mjqUv5Yqo5oCB5Yik5pat6Lev55Sx5oiW6ZO+5o6l57G75Z6LICovXHJcbiAgQElucHV0KCkgbGlua1R5cGU6ICdyb3V0ZXJMaW5rJyB8ICdocmVmTGluaycgfCAnZGVwZW5kT25MaW5rVHlwZUtleScgfCAnJyB8IHN0cmluZyAgPSAnJztcclxuICBASW5wdXQoKSBsaW5rVHlwZUtleSA9ICdsaW5rVHlwZSc7IC8vIGxpbmtUeXBl5Li6J2RlcGVuZE9uTGlua1R5cGVLZXkn5pe25oyH5a6a5a+56LGhbGlua1R5cGXlrprkuYnljLpcclxuICBASW5wdXQoKSBsaW5rS2V5ID0gJ2xpbmsnOyAvLyDpk77mjqXlhoXlrrnnmoRrZXlcclxuICBASW5wdXQoKSBsaW5rVGFyZ2V0S2V5ID0gJ3RhcmdldCc7IC8vIOmTvuaOpeebruagh+eql+WPo+eahGtleVxyXG4gIEBJbnB1dCgpIGxpbmtEZWZhdWx0VGFyZ2V0ID0gJ19zZWxmJzsgLy8g5LiN6K6+572udGFyZ2V055qE5pe25YCZdGFyZ2V06buY6K6k5YC8XHJcblxyXG4gIGFjdGl2ZUl0ZW07IC8vIOiusOW9leeUqOaIt+eCueWHu+eahOa/gOa0u+iPnOWNlemhuVxyXG4gIGkxOG5Db21tb25UZXh0OiBJMThuSW50ZXJmYWNlWydjb21tb24nXTtcclxuICBpMThuU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaTE4bjogSTE4blNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmIChjaGFuZ2VzWydkYXRhJ10pIHtcclxuICAgICAgIHRoaXMuaW5pdEFjdGl2ZUl0ZW0oKTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydhdXRvT3BlbkFjdGl2ZU1lbnUnXSkge1xyXG4gICAgICBpZiAodGhpcy5hdXRvT3BlbkFjdGl2ZU1lbnUgJiYgY2hhbmdlc1snYXV0b09wZW5BY3RpdmVNZW51J10ucHJldmlvdXNWYWx1ZSA9PT0gZmFsc2UpIHtcclxuICAgICAgICB0aGlzLmNsZWFuT3BlbkRhdGEoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAodGhpcy5kYXRhKSB7XHJcbiAgICAgIHRoaXMuaW5pdEFjdGl2ZUl0ZW0oKTtcclxuICAgIH1cclxuICAgIHRoaXMuaTE4bkNvbW1vblRleHQgPSB0aGlzLmkxOG4uZ2V0STE4blRleHQoKS5jb21tb247XHJcbiAgICB0aGlzLmkxOG5TdWJzY3JpcHRpb24gPSB0aGlzLmkxOG4ubGFuZ0NoYW5nZSgpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgdGhpcy5pMThuQ29tbW9uVGV4dCA9IGRhdGEuY29tbW9uO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIGlmICh0aGlzLmkxOG5TdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy5pMThuU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZsYXR0ZW4oYXJyOiBBcnJheTxhbnk+LCBjaGlsZHJlbktleSA9ICdjaGlsZHJlbicsIGluY2x1ZGVQYXJlbnQgPSBmYWxzZSwgaW5jbHVkZUxlYWYgPSB0cnVlKSB7XHJcbiAgICByZXR1cm4gYXJyLnJlZHVjZSgoYWNjLCBjdXIpID0+IHtcclxuICAgICAgY29uc3QgY2hpbGRyZW4gPSBjdXJbY2hpbGRyZW5LZXldO1xyXG4gICAgICBpZiAoIGNoaWxkcmVuID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBpZiAoaW5jbHVkZUxlYWYpIHtcclxuICAgICAgICAgIGFjYy5wdXNoKGN1cik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChpbmNsdWRlUGFyZW50KSB7XHJcbiAgICAgICAgICBhY2MucHVzaChjdXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcclxuICAgICAgICAgIGFjYy5wdXNoKC4uLnRoaXMuZmxhdHRlbihjaGlsZHJlbiwgY2hpbGRyZW5LZXksIGluY2x1ZGVQYXJlbnQpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGFjYztcclxuICAgIH0sIFtdKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xlYW5PcGVuRGF0YSgpIHtcclxuICAgIHRoaXMuZmxhdHRlbih0aGlzLmRhdGEsIHRoaXMuY2hpbGRyZW5LZXksIHRydWUsIGZhbHNlKS5mb3JFYWNoKFxyXG4gICAgICBpdGVtID0+IGl0ZW1bdGhpcy5vcGVuS2V5XSA9IHVuZGVmaW5lZFxyXG4gICAgKTtcclxuICB9XHJcbiAgLy8g6buY6K6k5r+A5rS7XHJcbiAgaW5pdEFjdGl2ZUl0ZW0oKSB7XHJcbiAgICBjb25zdCBhY3RpdmVJdGVtID0gdGhpcy5mbGF0dGVuKHRoaXMuZGF0YSwgdGhpcy5jaGlsZHJlbktleSlcclxuICAgICAgLmZpbHRlcihpdGVtID0+IGl0ZW1bdGhpcy5hY3RpdmVLZXldKS5wb3AoKTtcclxuICAgIGlmIChhY3RpdmVJdGVtKSB7XHJcbiAgICAgIGlmICghdGhpcy5hY3RpdmVJdGVtKSB7XHJcbiAgICAgICAgdGhpcy5hY3RpdmVJdGVtRm4oYWN0aXZlSXRlbSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlSXRlbSA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIOeCueWHu+S6huWPr+eCueWHu+iPnOWNlVxyXG4gIHB1YmxpYyBpdGVtQ2xpY2tGbiA9IChpdGVtRXZlbnQ6IEFjY29yZGlvbkl0ZW1DbGlja0V2ZW50KSA9PiB7XHJcbiAgICBjb25zdCBwcmV2QWN0aXZlSXRlbSA9IHRoaXMuYWN0aXZlSXRlbTtcclxuICAgIHRoaXMuYWN0aXZlSXRlbUZuKGl0ZW1FdmVudC5pdGVtKTtcclxuICAgIHRoaXMuaXRlbUNsaWNrLmVtaXQoey4uLml0ZW1FdmVudCwgcHJldkFjdGl2ZUl0ZW06IHByZXZBY3RpdmVJdGVtfSk7XHJcbiAgfVxyXG5cclxuICBsaW5rSXRlbUNsaWNrRm4gPSAoaXRlbUV2ZW50OiBBY2NvcmRpb25JdGVtQ2xpY2tFdmVudCkgPT4ge1xyXG4gICAgY29uc3QgcHJldkFjdGl2ZUl0ZW0gPSB0aGlzLmFjdGl2ZUl0ZW07XHJcbiAgICB0aGlzLmFjdGl2ZUl0ZW0gPSBpdGVtRXZlbnQuaXRlbTtcclxuICAgIHRoaXMuaXRlbUNsaWNrLmVtaXQoey4uLml0ZW1FdmVudCwgcHJldkFjdGl2ZUl0ZW06IHByZXZBY3RpdmVJdGVtfSk7XHJcbiAgfVxyXG5cclxuICAvLyDmiZPlvIDmiJblhbPpl63lj6/mipjlj6Doj5zljZVcclxuICBwdWJsaWMgbWVudVRvZ2dsZUZuID0gKG1lbnVFdmVudDogQWNjb3JkaW9uTWVudVRvZ2dsZUV2ZW50KSA9PiB7XHJcbiAgICB0aGlzLm9wZW5NZW51Rm4obWVudUV2ZW50Lml0ZW0sIG1lbnVFdmVudC5vcGVuKTtcclxuICAgIHRoaXMubWVudVRvZ2dsZS5lbWl0KG1lbnVFdmVudCk7XHJcbiAgfVxyXG5cclxuICAvLyDmv4DmtLvlrZDoj5zljZXpobnlubbljrvmjonlhbbku5blrZDoj5zljZXnmoTmv4DmtLtcclxuICBhY3RpdmVJdGVtRm4oaXRlbSkge1xyXG4gICAgaWYgKHRoaXMuYWN0aXZlSXRlbSAmJiB0aGlzLmFjdGl2ZUl0ZW1bdGhpcy5hY3RpdmVLZXldKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlSXRlbVt0aGlzLmFjdGl2ZUtleV0gPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGl0ZW1bdGhpcy5hY3RpdmVLZXldID0gdHJ1ZTtcclxuICAgIHRoaXMuYWN0aXZlSXRlbSA9IGl0ZW07XHJcbiAgICB0aGlzLmFjdGl2ZUl0ZW1DaGFuZ2UuZW1pdCh0aGlzLmFjdGl2ZUl0ZW0pO1xyXG4gIH1cclxuXHJcbiAgLy8g5omT5byA5oiW5YWz6Zet5LiA57qn6I+c5Y2V77yM5aaC5p6c5pyJ6ZmQ5Yi25Y+q6IO95bGV5byA5LiA6aG55YiZ5YWz6Zet5YW25LuW5LiA57qn6I+c5Y2VXHJcbiAgb3Blbk1lbnVGbihpdGVtLCBvcGVuKSB7XHJcbiAgICBpZiAob3BlbiAmJiB0aGlzLnJlc3RyaWN0T25lT3Blbikge1xyXG4gICAgICAoPEFycmF5PGFueT4+KHRoaXMuZGF0YSkpLmZvckVhY2goaXRlbXRlbXAgPT4geyBpdGVtdGVtcFt0aGlzLm9wZW5LZXldID0gZmFsc2U7IH0pO1xyXG4gICAgfVxyXG4gICAgaXRlbVt0aGlzLm9wZW5LZXldID0gb3BlbjtcclxuICB9XHJcbn1cclxuIl19