UNPKG

@hxui/angular

Version:

* * *

169 lines 20.9 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc */ import { Component, Input, Output, ViewChild, EventEmitter } from '@angular/core'; import { FilterType } from './filters-type.enum'; import { DropdownDirective } from '../dropdown/dropdown.directive'; import { animate, state, style, transition, trigger } from '@angular/animations'; var FiltersCollapsedComponent = /** @class */ (function () { function FiltersCollapsedComponent() { this.FilterType = FilterType; this.activePane = 'left'; this.data = []; this.onFilter = new EventEmitter(); this.onSearchFilter = new EventEmitter(); } /** * @return {?} */ FiltersCollapsedComponent.prototype.ngOnInit = /** * @return {?} */ function () { }; /** * @param {?} filter * @return {?} */ FiltersCollapsedComponent.prototype.clearSearch = /** * @param {?} filter * @return {?} */ function (filter) { filter.value = ''; this.onSearchFilter.emit({ filter: filter, value: filter.value }); }; /** * @param {?} filter * @return {?} */ FiltersCollapsedComponent.prototype.changeFilterSelection = /** * @param {?} filter * @return {?} */ function (filter) { this.selectedFilter = filter; this.activePane = 'right'; }; /** * @param {?} option * @return {?} */ FiltersCollapsedComponent.prototype.selectFilterOption = /** * @param {?} option * @return {?} */ function (option) { this.onFilter.emit({ filter: this.selectedFilter, option: option }); this.back(); }; /** * @param {?} filter * @return {?} */ FiltersCollapsedComponent.prototype.searchFilter = /** * @param {?} filter * @return {?} */ function (filter) { this.onSearchFilter.emit({ filter: filter }); }; /** * @return {?} */ FiltersCollapsedComponent.prototype.back = /** * @return {?} */ function () { this.activePane = 'left'; }; /** * @param {?} $event * @return {?} */ FiltersCollapsedComponent.prototype.onSlideDone = /** * @param {?} $event * @return {?} */ function ($event) { if ($event.toState === 'left') { this.selectedFilter = null; } }; /** * @return {?} */ FiltersCollapsedComponent.prototype.totalActiveFilters = /** * @return {?} */ function () { /** @type {?} */ var count = 0; this.data.forEach(function (filter, index) { if (!filter.isDefaultOptionActive()) { count++; } }); return count; }; /** * Used for track by and boost performance */ /** * Used for track by and boost performance * @param {?} index * @param {?} action * @return {?} */ FiltersCollapsedComponent.prototype.trackByFn = /** * Used for track by and boost performance * @param {?} index * @param {?} action * @return {?} */ function (index, action) { return index; }; FiltersCollapsedComponent.decorators = [ { type: Component, args: [{ selector: 'hxa-filters-collapsed', template: "<div class=\"hx-dropdown ml-1 collapsedFilter\" #dropdown=\"hx-dropdown\" hxaDropdown [autoClose]=\"false\" >\n <button id=\"collapsedFilterTrigger\" type=\"button\" class=\"hx-button hx-button-dropdown\" hxaDropdownToggle>\n <span>{{(totalActiveFilters() > 0)? 'Filtered ('+totalActiveFilters()+')' : 'Filters' }}</span>\n <span class=\"hx-icon-control\"><i class=\"icon icon-caret-down\"></i></span>\n </button>\n <div class=\"hx-dropdown-menu has-limited-width collapsedFilter__menu panes\" *hxaDropdownMenu>\n <ul class=\"panes__inner\" [@slide]=\"activePane\" (@slide.done)=\"onSlideDone($event)\">\n <li id=\"filterSelections\" class=\"panes__item\">\n <ng-container *ngFor=\"let filter of data;trackBy: trackByFn;let lastItem = last;\">\n\n <div class=\"hx-dropdown-header itemHeader\">{{filter.label}}</div>\n\n <!-- single select -->\n <ng-container *ngIf=\"filter.type === FilterType.SingleSelect\">\n <ul class=\"hx-list-group\">\n <li>\n <a [id]=\"filter?.id + '-trigger'\" (click)=\"changeFilterSelection(filter)\" title=\"{{filter.selected?.label}}\">\n <div class=\"hx-list-action\" *ngIf=\"filter.selected?.icon\">\n <i class=\"{{filter.selected?.icon}}\"></i>\n </div>\n <div class=\"hx-list-content pl-1 is-text-ellipsed is-text-weight-bolder\">{{filter.selected?.label}}</div>\n <div class=\"hx-list-action\">\n <i class=\"icon icon-angle-right\"></i>\n </div>\n </a>\n </li>\n </ul>\n </ng-container>\n\n <!-- search filter -->\n <div *ngIf=\"filter.type === FilterType.Search\" class=\"pl-3 pr-4\">\n <div [id]=\"filter.id\" class=\"hx-input-group\">\n <i class=\"hx-icon icon-search mt-1\"></i>\n <div class=\"hx-input-control my-0\">\n <input class=\"hx-input\"\n type=\"search\"\n (input)=\"searchFilter(filter)\"\n [(ngModel)]=\"filter.value\">\n <label class=\"hx-label\"></label>\n <div class=\"hx-help\"></div>\n </div>\n <div class=\"hx-input-actions\" *ngIf=\"filter.value\">\n <div class=\"hx-button-group\">\n <button class=\"hx-button is-flat\" (click)=\"clearSearch(filter)\"><span class=\"hx-icon-control\"><i class=\"icon icon-close-empty\"></i></span></button>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n </li>\n <li id=\"filterOptions\" class=\"panes__item\">\n <div class=\"hx-toolbar is-xsmall\">\n <button id=\"paneBack\" class=\"hx-button is-flat\" (click)=\"back()\"><i class=\"hx-icon icon-arrow-left\"></i></button>\n <span>{{selectedFilter?.label}}</span>\n </div>\n <ul [id]=\"selectedFilter?.id + '-options'\" class=\"hx-list-group options\">\n <li class=\"options__item\" *ngFor=\"let option of selectedFilter?.options;trackBy: trackByFn\">\n <a hxaDropdownItem (click)=\"selectFilterOption(option)\" title=\"{{option?.label}}\">\n <div class=\"hx-list-action\" *ngIf=\"option?.icon\">\n <i class=\"{{option?.icon}}\"></i>\n </div>\n <div class=\"hx-list-content pl-1 is-text-ellipsed\">{{option?.label}}</div>\n </a>\n </li>\n </ul>\n </li>\n </ul>\n </div>\n</div>\n", styles: [".collapsedFilter__menu.panes{width:15rem;overflow:hidden}.collapsedFilter__menu.panes .panes__inner{display:flex;list-style:none;padding:0;margin-top:0}.collapsedFilter__menu.panes .panes__item{min-width:15rem;max-width:15rem}.collapsedFilter__menu.panes .panes__item>ul{max-height:20rem;overflow-y:auto;overflow-x:hidden}.collapsedFilter__menu.panes .panes__item>ul>li:last-child:not(:first-child) a{border-bottom:none}"], animations: [ trigger('slide', [ state('left', style({ transform: 'translateX(0)' })), state('right', style({ transform: 'translateX(-100%)' })), transition('* => *', animate(200)) ]) ] },] }, ]; /** @nocollapse */ FiltersCollapsedComponent.ctorParameters = function () { return []; }; FiltersCollapsedComponent.propDecorators = { dropdown: [{ type: ViewChild, args: ['dropdown',] }], data: [{ type: Input }], onFilter: [{ type: Output }], onSearchFilter: [{ type: Output }] }; return FiltersCollapsedComponent; }()); export { FiltersCollapsedComponent }; if (false) { /** @type {?} */ FiltersCollapsedComponent.prototype.dropdown; /** @type {?} */ FiltersCollapsedComponent.prototype.FilterType; /** @type {?} */ FiltersCollapsedComponent.prototype.activePane; /** @type {?} */ FiltersCollapsedComponent.prototype.selectedFilter; /** @type {?} */ FiltersCollapsedComponent.prototype.data; /** @type {?} */ FiltersCollapsedComponent.prototype.onFilter; /** @type {?} */ FiltersCollapsedComponent.prototype.onSearchFilter; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVycy1jb2xsYXBzZWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGh4dWkvYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi9maWx0ZXJzL2ZpbHRlcnMtY29sbGFwc2VkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFVLFNBQVMsRUFBRSxZQUFZLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEYsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRy9DLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFJL0U7SUE4RkU7UUFUQSxlQUFVLEdBQUcsVUFBVSxDQUFDO1FBQ3hCLGVBQVUsR0FBRyxNQUFNLENBQUM7UUFHWCxTQUFJLEdBQW1CLEVBQUUsQ0FBQztRQUV6QixhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM5QixtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFFOUIsQ0FBQzs7OztJQUVqQiw0Q0FBUTs7O0lBQVI7SUFDQSxDQUFDOzs7OztJQUVELCtDQUFXOzs7O0lBQVgsVUFBWSxNQUFvQjtRQUM5QixNQUFNLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7Ozs7O0lBRUQseURBQXFCOzs7O0lBQXJCLFVBQXNCLE1BQW9CO1FBQ3hDLElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDO1FBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDO0lBQzVCLENBQUM7Ozs7O0lBRUQsc0RBQWtCOzs7O0lBQWxCLFVBQW9CLE1BQXFCO1FBQ3ZDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBQyxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2QsQ0FBQzs7Ozs7SUFFRCxnREFBWTs7OztJQUFaLFVBQWEsTUFBb0I7UUFDL0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBQyxNQUFNLEVBQUUsTUFBTSxFQUFDLENBQUMsQ0FBQztJQUM3QyxDQUFDOzs7O0lBRUQsd0NBQUk7OztJQUFKO1FBQ0UsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUM7SUFDM0IsQ0FBQzs7Ozs7SUFFRCwrQ0FBVzs7OztJQUFYLFVBQVksTUFBTTtRQUNoQixJQUFJLE1BQU0sQ0FBQyxPQUFPLEtBQUssTUFBTSxFQUFFO1lBQzdCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1NBQzVCO0lBQ0gsQ0FBQzs7OztJQUVELHNEQUFrQjs7O0lBQWxCOztZQUNNLEtBQUssR0FBRyxDQUFDO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBQyxNQUFvQixFQUFFLEtBQWE7WUFDbEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxFQUFFO2dCQUNuQyxLQUFLLEVBQUUsQ0FBQzthQUNUO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFHRDs7T0FFRzs7Ozs7OztJQUNILDZDQUFTOzs7Ozs7SUFBVCxVQUFVLEtBQUssRUFBRSxNQUFNO1FBQ3JCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7Z0JBaEpGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxRQUFRLEVBQUUsbWpIQXFFWDtvQkFDQyxNQUFNLEVBQUUsQ0FBQyxzYUFBc2EsQ0FBQztvQkFDaGIsVUFBVSxFQUFFO3dCQUNWLE9BQU8sQ0FBQyxPQUFPLEVBQUU7NEJBQ2YsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQzs0QkFDcEQsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDOzRCQUN6RCxVQUFVLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQzt5QkFDbkMsQ0FBQztxQkFDRjtpQkFDSDs7Ozs7MkJBR0UsU0FBUyxTQUFDLFVBQVU7dUJBTXBCLEtBQUs7MkJBRUwsTUFBTTtpQ0FDTixNQUFNOztJQXFEVCxnQ0FBQztDQUFBLEFBakpELElBaUpDO1NBaEVZLHlCQUF5Qjs7O0lBRXBDLDZDQUFtRDs7SUFFbkQsK0NBQXdCOztJQUN4QiwrQ0FBb0I7O0lBQ3BCLG1EQUE2Qjs7SUFFN0IseUNBQW1DOztJQUVuQyw2Q0FBd0M7O0lBQ3hDLG1EQUE4QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBPbkluaXQsIFZpZXdDaGlsZCwgRXZlbnRFbWl0dGVyfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtGaWx0ZXJUeXBlfSBmcm9tICcuL2ZpbHRlcnMtdHlwZS5lbnVtJztcclxuaW1wb3J0IHtGaWx0ZXJzTW9kZWx9IGZyb20gJy4vZmlsdGVycy5tb2RlbCc7XHJcbmltcG9ydCB7SUZpbHRlck9wdGlvbiwgSUZpbHRlcnNDb25maWd9IGZyb20gJy4vZmlsdGVycy1jb25maWcuaW50ZXJmYWNlJztcclxuaW1wb3J0IHtEcm9wZG93bkRpcmVjdGl2ZX0gZnJvbSAnLi4vZHJvcGRvd24vZHJvcGRvd24uZGlyZWN0aXZlJztcclxuaW1wb3J0IHthbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXJ9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5cclxudHlwZSBQYW5lVHlwZSA9ICdsZWZ0JyB8ICdyaWdodCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2h4YS1maWx0ZXJzLWNvbGxhcHNlZCcsXHJcbiAgdGVtcGxhdGU6IGA8ZGl2IGNsYXNzPVwiaHgtZHJvcGRvd24gIG1sLTEgY29sbGFwc2VkRmlsdGVyXCIgI2Ryb3Bkb3duPVwiaHgtZHJvcGRvd25cIiAgaHhhRHJvcGRvd24gIFthdXRvQ2xvc2VdPVwiZmFsc2VcIiA+XHJcbiAgPGJ1dHRvbiBpZD1cImNvbGxhcHNlZEZpbHRlclRyaWdnZXJcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJoeC1idXR0b24gaHgtYnV0dG9uLWRyb3Bkb3duXCIgaHhhRHJvcGRvd25Ub2dnbGU+XHJcbiAgICA8c3Bhbj57eyh0b3RhbEFjdGl2ZUZpbHRlcnMoKSA+IDApPyAnRmlsdGVyZWQgKCcrdG90YWxBY3RpdmVGaWx0ZXJzKCkrJyknIDogJ0ZpbHRlcnMnIH19PC9zcGFuPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJoeC1pY29uLWNvbnRyb2xcIj48aSBjbGFzcz1cImljb24gaWNvbi1jYXJldC1kb3duXCI+PC9pPjwvc3Bhbj5cclxuICA8L2J1dHRvbj5cclxuICA8ZGl2IGNsYXNzPVwiaHgtZHJvcGRvd24tbWVudSBoYXMtbGltaXRlZC13aWR0aCBjb2xsYXBzZWRGaWx0ZXJfX21lbnUgcGFuZXNcIiAqaHhhRHJvcGRvd25NZW51PlxyXG4gICAgPHVsIGNsYXNzPVwicGFuZXNfX2lubmVyXCIgW0BzbGlkZV09XCJhY3RpdmVQYW5lXCIgKEBzbGlkZS5kb25lKT1cIm9uU2xpZGVEb25lKCRldmVudClcIj5cclxuICAgICAgPGxpIGlkPVwiZmlsdGVyU2VsZWN0aW9uc1wiIGNsYXNzPVwicGFuZXNfX2l0ZW1cIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWx0ZXIgb2YgZGF0YTt0cmFja0J5OiB0cmFja0J5Rm47bGV0IGxhc3RJdGVtID0gbGFzdDtcIj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaHgtZHJvcGRvd24taGVhZGVyIGl0ZW1IZWFkZXJcIj57e2ZpbHRlci5sYWJlbH19PC9kaXY+XHJcblxyXG4gICAgICAgICAgPCEtLSBzaW5nbGUgc2VsZWN0IC0tPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci50eXBlID09PSBGaWx0ZXJUeXBlLlNpbmdsZVNlbGVjdFwiPlxyXG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJoeC1saXN0LWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICAgICAgPGEgW2lkXT1cImZpbHRlcj8uaWQgKyAnLXRyaWdnZXInXCIgKGNsaWNrKT1cImNoYW5nZUZpbHRlclNlbGVjdGlvbihmaWx0ZXIpXCIgdGl0bGU9XCJ7e2ZpbHRlci5zZWxlY3RlZD8ubGFiZWx9fVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaHgtbGlzdC1hY3Rpb25cIiAqbmdJZj1cImZpbHRlci5zZWxlY3RlZD8uaWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwie3tmaWx0ZXIuc2VsZWN0ZWQ/Lmljb259fVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoeC1saXN0LWNvbnRlbnQgcGwtMSBpcy10ZXh0LWVsbGlwc2VkIGlzLXRleHQtd2VpZ2h0LWJvbGRlclwiPnt7ZmlsdGVyLnNlbGVjdGVkPy5sYWJlbH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoeC1saXN0LWFjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbiBpY29uLWFuZ2xlLXJpZ2h0XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPCEtLSBzZWFyY2ggZmlsdGVyIC0tPlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cImZpbHRlci50eXBlID09PSBGaWx0ZXJUeXBlLlNlYXJjaFwiIGNsYXNzPVwicGwtMyBwci00XCI+XHJcbiAgICAgICAgICAgIDxkaXYgW2lkXT1cImZpbHRlci5pZFwiICBjbGFzcz1cImh4LWlucHV0LWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJoeC1pY29uIGljb24tc2VhcmNoIG10LTFcIj48L2k+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImh4LWlucHV0LWNvbnRyb2wgbXktMFwiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaHgtaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJzZWFyY2hGaWx0ZXIoZmlsdGVyKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWx0ZXIudmFsdWVcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImh4LWxhYmVsXCI+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoeC1oZWxwXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImh4LWlucHV0LWFjdGlvbnNcIiAqbmdJZj1cImZpbHRlci52YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImh4LWJ1dHRvbi1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiaHgtYnV0dG9uIGlzLWZsYXRcIiAoY2xpY2spPVwiY2xlYXJTZWFyY2goZmlsdGVyKVwiPjxzcGFuIGNsYXNzPVwiaHgtaWNvbi1jb250cm9sXCI+PGkgY2xhc3M9XCJpY29uIGljb24tY2xvc2UtZW1wdHlcIj48L2k+PC9zcGFuPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbGk+XHJcbiAgICAgIDxsaSBpZD1cImZpbHRlck9wdGlvbnNcIiBjbGFzcz1cInBhbmVzX19pdGVtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImh4LXRvb2xiYXIgaXMteHNtYWxsXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIGlkPVwicGFuZUJhY2tcIiBjbGFzcz1cImh4LWJ1dHRvbiBpcy1mbGF0XCIgKGNsaWNrKT1cImJhY2soKVwiPjxpIGNsYXNzPVwiaHgtaWNvbiBpY29uLWFycm93LWxlZnRcIj48L2k+PC9idXR0b24+XHJcbiAgICAgICAgICA8c3Bhbj57e3NlbGVjdGVkRmlsdGVyPy5sYWJlbH19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDx1bCBbaWRdPVwic2VsZWN0ZWRGaWx0ZXI/LmlkICsgJy1vcHRpb25zJ1wiIGNsYXNzPVwiaHgtbGlzdC1ncm91cCBvcHRpb25zXCI+XHJcbiAgICAgICAgICA8bGkgY2xhc3M9XCJvcHRpb25zX19pdGVtXCIgICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygc2VsZWN0ZWRGaWx0ZXI/Lm9wdGlvbnM7dHJhY2tCeTogdHJhY2tCeUZuXCI+XHJcbiAgICAgICAgICAgIDxhIGh4YURyb3Bkb3duSXRlbSAoY2xpY2spPVwic2VsZWN0RmlsdGVyT3B0aW9uKG9wdGlvbilcIiB0aXRsZT1cInt7b3B0aW9uPy5sYWJlbH19XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImh4LWxpc3QtYWN0aW9uXCIgKm5nSWY9XCJvcHRpb24/Lmljb25cIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwie3tvcHRpb24/Lmljb259fVwiPjwvaT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaHgtbGlzdC1jb250ZW50IHBsLTEgaXMtdGV4dC1lbGxpcHNlZFwiPnt7b3B0aW9uPy5sYWJlbH19PC9kaXY+XHJcbiAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgPC91bD5cclxuICAgICAgPC9saT5cclxuICAgIDwvdWw+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5gLFxyXG4gIHN0eWxlczogW2AuY29sbGFwc2VkRmlsdGVyX19tZW51LnBhbmVze3dpZHRoOjE1cmVtO292ZXJmbG93OmhpZGRlbn0uY29sbGFwc2VkRmlsdGVyX19tZW51LnBhbmVzIC5wYW5lc19faW5uZXJ7ZGlzcGxheTpmbGV4O2xpc3Qtc3R5bGU6bm9uZTtwYWRkaW5nOjA7bWFyZ2luLXRvcDowfS5jb2xsYXBzZWRGaWx0ZXJfX21lbnUucGFuZXMgLnBhbmVzX19pdGVte21pbi13aWR0aDoxNXJlbTttYXgtd2lkdGg6MTVyZW19LmNvbGxhcHNlZEZpbHRlcl9fbWVudS5wYW5lcyAucGFuZXNfX2l0ZW0+dWx7bWF4LWhlaWdodDoyMHJlbTtvdmVyZmxvdy15OmF1dG87b3ZlcmZsb3cteDpoaWRkZW59LmNvbGxhcHNlZEZpbHRlcl9fbWVudS5wYW5lcyAucGFuZXNfX2l0ZW0+dWw+bGk6bGFzdC1jaGlsZDpub3QoOmZpcnN0LWNoaWxkKSBhe2JvcmRlci1ib3R0b206bm9uZX1gXSxcclxuICBhbmltYXRpb25zOiBbXHJcbiAgICB0cmlnZ2VyKCdzbGlkZScsIFtcclxuICAgICAgc3RhdGUoJ2xlZnQnLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCknIH0pKSxcclxuICAgICAgc3RhdGUoJ3JpZ2h0Jywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKC0xMDAlKScgfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKCcqID0+IConLCBhbmltYXRlKDIwMCkpXHJcbiAgICBdKVxyXG4gICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaWx0ZXJzQ29sbGFwc2VkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQFZpZXdDaGlsZCgnZHJvcGRvd24nKSBkcm9wZG93bjogRHJvcGRvd25EaXJlY3RpdmU7XHJcblxyXG4gIEZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlO1xyXG4gIGFjdGl2ZVBhbmUgPSAnbGVmdCc7XHJcbiAgc2VsZWN0ZWRGaWx0ZXI6IEZpbHRlcnNNb2RlbDtcclxuXHJcbiAgQElucHV0KCkgZGF0YTogRmlsdGVyc01vZGVsW10gPSBbXTtcclxuXHJcbiAgQE91dHB1dCgpIG9uRmlsdGVyID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvblNlYXJjaEZpbHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgfVxyXG5cclxuICBjbGVhclNlYXJjaChmaWx0ZXI6IEZpbHRlcnNNb2RlbCkge1xyXG4gICAgZmlsdGVyLnZhbHVlID0gJyc7XHJcbiAgICB0aGlzLm9uU2VhcmNoRmlsdGVyLmVtaXQoe2ZpbHRlcjogZmlsdGVyLCB2YWx1ZTogZmlsdGVyLnZhbHVlfSk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VGaWx0ZXJTZWxlY3Rpb24oZmlsdGVyOiBGaWx0ZXJzTW9kZWwpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXIgPSBmaWx0ZXI7XHJcbiAgICB0aGlzLmFjdGl2ZVBhbmUgPSAncmlnaHQnO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0RmlsdGVyT3B0aW9uKCBvcHRpb246IElGaWx0ZXJPcHRpb24pIHtcclxuICAgIHRoaXMub25GaWx0ZXIuZW1pdCh7ZmlsdGVyOiB0aGlzLnNlbGVjdGVkRmlsdGVyLCBvcHRpb246IG9wdGlvbn0pO1xyXG4gICAgdGhpcy5iYWNrKCk7XHJcbiAgfVxyXG5cclxuICBzZWFyY2hGaWx0ZXIoZmlsdGVyOiBGaWx0ZXJzTW9kZWwpIHtcclxuICAgIHRoaXMub25TZWFyY2hGaWx0ZXIuZW1pdCh7ZmlsdGVyOiBmaWx0ZXJ9KTtcclxuICB9XHJcblxyXG4gIGJhY2soKSB7XHJcbiAgICB0aGlzLmFjdGl2ZVBhbmUgPSAnbGVmdCc7XHJcbiAgfVxyXG5cclxuICBvblNsaWRlRG9uZSgkZXZlbnQpIHtcclxuICAgIGlmICgkZXZlbnQudG9TdGF0ZSA9PT0gJ2xlZnQnKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXIgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdG90YWxBY3RpdmVGaWx0ZXJzKCk6IG51bWJlciB7XHJcbiAgICBsZXQgY291bnQgPSAwO1xyXG4gICAgdGhpcy5kYXRhLmZvckVhY2goKGZpbHRlcjogRmlsdGVyc01vZGVsLCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgaWYgKCFmaWx0ZXIuaXNEZWZhdWx0T3B0aW9uQWN0aXZlKCkpIHtcclxuICAgICAgICAgIGNvdW50Kys7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gY291bnQ7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogVXNlZCBmb3IgdHJhY2sgYnkgYW5kIGJvb3N0IHBlcmZvcm1hbmNlXHJcbiAgICovXHJcbiAgdHJhY2tCeUZuKGluZGV4LCBhY3Rpb24pIHtcclxuICAgIHJldHVybiBpbmRleDtcclxuICB9XHJcbn1cclxuIl19