UNPKG

ng-zorro-antd

Version:

An enterprise-class UI components based on Ant Design and Angular

743 lines 61 kB
/** * @fileoverview added by tsickle * Generated from: tree-node.component.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { __decorate, __metadata } from "tslib"; /** * @license * Copyright Alibaba.com All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE */ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Host, Input, NgZone, Optional, Output, Renderer2, TemplateRef } from '@angular/core'; import { NzNoAnimationDirective } from 'ng-zorro-antd/core/no-animation'; import { NzTreeBaseService, NzTreeNode } from 'ng-zorro-antd/core/tree'; import { InputBoolean } from 'ng-zorro-antd/core/util'; import { fromEvent, Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; var NzTreeNodeComponent = /** @class */ (function () { function NzTreeNodeComponent(nzTreeService, ngZone, renderer, elementRef, cdr, noAnimation) { this.nzTreeService = nzTreeService; this.ngZone = ngZone; this.renderer = renderer; this.elementRef = elementRef; this.cdr = cdr; this.noAnimation = noAnimation; this.nzHideUnMatched = false; this.nzNoAnimation = false; this.nzSelectMode = false; this.nzShowIcon = false; this.nzSearchValue = ''; this.nzClick = new EventEmitter(); this.nzDblClick = new EventEmitter(); this.nzContextMenu = new EventEmitter(); this.nzCheckBoxChange = new EventEmitter(); this.nzExpandChange = new EventEmitter(); this.nzOnDragStart = new EventEmitter(); this.nzOnDragEnter = new EventEmitter(); this.nzOnDragOver = new EventEmitter(); this.nzOnDragLeave = new EventEmitter(); this.nzOnDrop = new EventEmitter(); this.nzOnDragEnd = new EventEmitter(); /** * drag var */ this.destroy$ = new Subject(); this.dragPos = 2; this.dragPosClass = { '0': 'drag-over', '1': 'drag-over-gap-bottom', '-1': 'drag-over-gap-top' }; } Object.defineProperty(NzTreeNodeComponent.prototype, "displayStyle", { /** * default set */ get: /** * default set * @return {?} */ function () { // to hide unmatched nodes return this.nzSearchValue && this.nzHideUnMatched && !this.isMatched && !this.isExpanded && this.canHide ? 'none' : ''; }, enumerable: true, configurable: true }); Object.defineProperty(NzTreeNodeComponent.prototype, "isSwitcherOpen", { get: /** * @return {?} */ function () { return this.isExpanded && !this.isLeaf; }, enumerable: true, configurable: true }); Object.defineProperty(NzTreeNodeComponent.prototype, "isSwitcherClose", { get: /** * @return {?} */ function () { return !this.isExpanded && !this.isLeaf; }, enumerable: true, configurable: true }); /** * @param {?} event * @return {?} */ NzTreeNodeComponent.prototype.onMousedown = /** * @param {?} event * @return {?} */ function (event) { if (this.nzSelectMode) { event.preventDefault(); } }; /** * collapse node * @param event */ /** * collapse node * @param {?} event * @return {?} */ NzTreeNodeComponent.prototype.clickExpand = /** * collapse node * @param {?} event * @return {?} */ function (event) { event.preventDefault(); if (!this.isLoading && !this.isLeaf) { // set async state if (this.nzAsyncData && this.nzTreeNode.children.length === 0 && !this.isExpanded) { this.nzTreeNode.isLoading = true; } this.nzTreeNode.setExpanded(!this.isExpanded); } this.nzTreeService.setExpandedNodeList(this.nzTreeNode); /** @type {?} */ var eventNext = this.nzTreeService.formatEvent('expand', this.nzTreeNode, event); this.nzExpandChange.emit(eventNext); }; /** * @param {?} event * @return {?} */ NzTreeNodeComponent.prototype.clickSelect = /** * @param {?} event * @return {?} */ function (event) { event.preventDefault(); if (this.isSelectable && !this.isDisabled) { this.nzTreeNode.isSelected = !this.nzTreeNode.isSelected; } this.nzTreeService.setSelectedNodeList(this.nzTreeNode); /** @type {?} */ var eventNext = this.nzTreeService.formatEvent('click', this.nzTreeNode, event); this.nzClick.emit(eventNext); }; /** * @param {?} event * @return {?} */ NzTreeNodeComponent.prototype.dblClick = /** * @param {?} event * @return {?} */ function (event) { event.preventDefault(); /** @type {?} */ var eventNext = this.nzTreeService.formatEvent('dblclick', this.nzTreeNode, event); this.nzDblClick.emit(eventNext); }; /** * @param {?} event * @return {?} */ NzTreeNodeComponent.prototype.contextMenu = /** * @param {?} event * @return {?} */ function (event) { event.preventDefault(); /** @type {?} */ var eventNext = this.nzTreeService.formatEvent('contextmenu', this.nzTreeNode, event); this.nzContextMenu.emit(eventNext); }; /** * check node * @param event */ /** * check node * @param {?} event * @return {?} */ NzTreeNodeComponent.prototype.clickCheckBox = /** * check node * @param {?} event * @return {?} */ function (event) { event.preventDefault(); // return if node is disabled if (this.isDisabled || this.isDisableCheckbox) { return; } this.nzTreeNode.isChecked = !this.nzTreeNode.isChecked; this.nzTreeNode.isHalfChecked = false; this.nzTreeService.setCheckedNodeList(this.nzTreeNode); /** @type {?} */ var eventNext = this.nzTreeService.formatEvent('check', this.nzTreeNode, event); this.nzCheckBoxChange.emit(eventNext); }; /** * @return {?} */ NzTreeNodeComponent.prototype.clearDragClass = /** * @return {?} */ function () { var _this = this; /** @type {?} */ var dragClass = ['drag-over-gap-top', 'drag-over-gap-bottom', 'drag-over']; dragClass.forEach((/** * @param {?} e * @return {?} */ function (e) { _this.renderer.removeClass(_this.elementRef.nativeElement, e); })); }; /** * drag event * @param e */ /** * drag event * @param {?} e * @return {?} */ NzTreeNodeComponent.prototype.handleDragStart = /** * drag event * @param {?} e * @return {?} */ function (e) { try { // ie throw error // firefox-need-it (/** @type {?} */ (e.dataTransfer)).setData('text/plain', (/** @type {?} */ (this.nzTreeNode.key))); } catch (error) { // empty } this.nzTreeService.setSelectedNode(this.nzTreeNode); /** @type {?} */ var eventNext = this.nzTreeService.formatEvent('dragstart', this.nzTreeNode, e); this.nzOnDragStart.emit(eventNext); }; /** * @param {?} e * @return {?} */ NzTreeNodeComponent.prototype.handleDragEnter = /** * @param {?} e * @return {?} */ function (e) { var _this = this; e.preventDefault(); // reset position this.dragPos = 2; this.ngZone.run((/** * @return {?} */ function () { /** @type {?} */ var eventNext = _this.nzTreeService.formatEvent('dragenter', _this.nzTreeNode, e); _this.nzOnDragEnter.emit(eventNext); })); }; /** * @param {?} e * @return {?} */ NzTreeNodeComponent.prototype.handleDragOver = /** * @param {?} e * @return {?} */ function (e) { e.preventDefault(); /** @type {?} */ var dropPosition = this.nzTreeService.calcDropPosition(e); if (this.dragPos !== dropPosition) { this.clearDragClass(); this.dragPos = dropPosition; // leaf node will pass if (!(this.dragPos === 0 && this.isLeaf)) { this.renderer.addClass(this.elementRef.nativeElement, this.dragPosClass[this.dragPos]); } } /** @type {?} */ var eventNext = this.nzTreeService.formatEvent('dragover', this.nzTreeNode, e); this.nzOnDragOver.emit(eventNext); }; /** * @param {?} e * @return {?} */ NzTreeNodeComponent.prototype.handleDragLeave = /** * @param {?} e * @return {?} */ function (e) { e.preventDefault(); this.clearDragClass(); /** @type {?} */ var eventNext = this.nzTreeService.formatEvent('dragleave', this.nzTreeNode, e); this.nzOnDragLeave.emit(eventNext); }; /** * @param {?} e * @return {?} */ NzTreeNodeComponent.prototype.handleDragDrop = /** * @param {?} e * @return {?} */ function (e) { var _this = this; this.ngZone.run((/** * @return {?} */ function () { _this.clearDragClass(); /** @type {?} */ var node = _this.nzTreeService.getSelectedNode(); if (!node || (node && node.key === _this.nzTreeNode.key) || (_this.dragPos === 0 && _this.isLeaf)) { return; } // pass if node is leafNo /** @type {?} */ var dropEvent = _this.nzTreeService.formatEvent('drop', _this.nzTreeNode, e); /** @type {?} */ var dragEndEvent = _this.nzTreeService.formatEvent('dragend', _this.nzTreeNode, e); if (_this.nzBeforeDrop) { _this.nzBeforeDrop({ dragNode: (/** @type {?} */ (_this.nzTreeService.getSelectedNode())), node: _this.nzTreeNode, pos: _this.dragPos }).subscribe((/** * @param {?} canDrop * @return {?} */ function (canDrop) { if (canDrop) { _this.nzTreeService.dropAndApply(_this.nzTreeNode, _this.dragPos); } _this.nzOnDrop.emit(dropEvent); _this.nzOnDragEnd.emit(dragEndEvent); })); } else if (_this.nzTreeNode) { _this.nzTreeService.dropAndApply(_this.nzTreeNode, _this.dragPos); _this.nzOnDrop.emit(dropEvent); } })); }; /** * @param {?} e * @return {?} */ NzTreeNodeComponent.prototype.handleDragEnd = /** * @param {?} e * @return {?} */ function (e) { var _this = this; e.preventDefault(); this.ngZone.run((/** * @return {?} */ function () { // if user do not custom beforeDrop if (!_this.nzBeforeDrop) { /** @type {?} */ var eventNext = _this.nzTreeService.formatEvent('dragend', _this.nzTreeNode, e); _this.nzOnDragEnd.emit(eventNext); } })); }; /** * Listening to dragging events. */ /** * Listening to dragging events. * @return {?} */ NzTreeNodeComponent.prototype.handDragEvent = /** * Listening to dragging events. * @return {?} */ function () { var _this = this; this.ngZone.runOutsideAngular((/** * @return {?} */ function () { if (_this.nzDraggable) { /** @type {?} */ var nativeElement = _this.elementRef.nativeElement; _this.destroy$ = new Subject(); fromEvent(nativeElement, 'dragstart') .pipe(takeUntil(_this.destroy$)) .subscribe((/** * @param {?} e * @return {?} */ function (e) { return _this.handleDragStart(e); })); fromEvent(nativeElement, 'dragenter') .pipe(takeUntil(_this.destroy$)) .subscribe((/** * @param {?} e * @return {?} */ function (e) { return _this.handleDragEnter(e); })); fromEvent(nativeElement, 'dragover') .pipe(takeUntil(_this.destroy$)) .subscribe((/** * @param {?} e * @return {?} */ function (e) { return _this.handleDragOver(e); })); fromEvent(nativeElement, 'dragleave') .pipe(takeUntil(_this.destroy$)) .subscribe((/** * @param {?} e * @return {?} */ function (e) { return _this.handleDragLeave(e); })); fromEvent(nativeElement, 'drop') .pipe(takeUntil(_this.destroy$)) .subscribe((/** * @param {?} e * @return {?} */ function (e) { return _this.handleDragDrop(e); })); fromEvent(nativeElement, 'dragend') .pipe(takeUntil(_this.destroy$)) .subscribe((/** * @param {?} e * @return {?} */ function (e) { return _this.handleDragEnd(e); })); } else { _this.destroy$.next(); _this.destroy$.complete(); } })); }; /** * @return {?} */ NzTreeNodeComponent.prototype.markForCheck = /** * @return {?} */ function () { this.cdr.markForCheck(); }; /** * @return {?} */ NzTreeNodeComponent.prototype.ngOnInit = /** * @return {?} */ function () { this.nzTreeNode.component = this; }; /** * @param {?} changes * @return {?} */ NzTreeNodeComponent.prototype.ngOnChanges = /** * @param {?} changes * @return {?} */ function (changes) { var nzDraggable = changes.nzDraggable; if (nzDraggable) { this.handDragEvent(); } }; /** * @return {?} */ NzTreeNodeComponent.prototype.ngOnDestroy = /** * @return {?} */ function () { this.destroy$.next(); this.destroy$.complete(); }; NzTreeNodeComponent.decorators = [ { type: Component, args: [{ selector: 'nz-tree-node', exportAs: 'nzTreeNode', template: "\n <nz-tree-indent [nzTreeLevel]=\"nzTreeNode.level\" [nzSelectMode]=\"nzSelectMode\" [nzIsStart]=\"isStart\" [nzIsEnd]=\"isEnd\"></nz-tree-indent>\n <nz-tree-node-switcher\n *ngIf=\"nzShowExpand\"\n [nzShowExpand]=\"nzShowExpand\"\n [nzShowLine]=\"nzShowLine\"\n [nzExpandedIcon]=\"nzExpandedIcon\"\n [nzSelectMode]=\"nzSelectMode\"\n [context]=\"nzTreeNode\"\n [isLeaf]=\"isLeaf\"\n [isExpanded]=\"isExpanded\"\n [isLoading]=\"isLoading\"\n (click)=\"clickExpand($event)\"\n ></nz-tree-node-switcher>\n <nz-tree-node-checkbox\n *ngIf=\"nzCheckable\"\n (click)=\"clickCheckBox($event)\"\n [nzSelectMode]=\"nzSelectMode\"\n [isChecked]=\"isChecked\"\n [isHalfChecked]=\"isHalfChecked\"\n [isDisabled]=\"isDisabled\"\n [isDisableCheckbox]=\"isDisableCheckbox\"\n ></nz-tree-node-checkbox>\n <nz-tree-node-title\n [icon]=\"icon\"\n [title]=\"title\"\n [isLoading]=\"isLoading\"\n [isSelected]=\"isSelected\"\n [isDisabled]=\"isDisabled\"\n [isMatched]=\"isMatched\"\n [isExpanded]=\"isExpanded\"\n [isLeaf]=\"isLeaf\"\n [searchValue]=\"nzSearchValue\"\n [treeTemplate]=\"nzTreeTemplate\"\n [draggable]=\"nzDraggable\"\n [showIcon]=\"nzShowIcon\"\n [selectMode]=\"nzSelectMode\"\n [context]=\"nzTreeNode\"\n (dblclick)=\"dblClick($event)\"\n (click)=\"clickSelect($event)\"\n (contextmenu)=\"contextMenu($event)\"\n ></nz-tree-node-title>\n ", changeDetection: ChangeDetectionStrategy.OnPush, preserveWhitespaces: false, host: { '[class.ant-select-tree-treenode]': "nzSelectMode", '[class.ant-select-tree-treenode-disabled]': "nzSelectMode && isDisabled", '[class.ant-select-tree-treenode-switcher-open]': "nzSelectMode && isSwitcherOpen", '[class.ant-select-tree-treenode-switcher-close]': "nzSelectMode && isSwitcherClose", '[class.ant-select-tree-treenode-checkbox-checked]': "nzSelectMode && isChecked", '[class.ant-select-tree-treenode-checkbox-indeterminate]': "nzSelectMode && isHalfChecked", '[class.ant-select-tree-treenode-selected]': "nzSelectMode && isSelected", '[class.ant-select-tree-treenode-loading]': "nzSelectMode && isLoading", '[class.ant-tree-treenode]': "!nzSelectMode", '[class.ant-tree-treenode-disabled]': "!nzSelectMode && isDisabled", '[class.ant-tree-treenode-switcher-open]': "!nzSelectMode && isSwitcherOpen", '[class.ant-tree-treenode-switcher-close]': "!nzSelectMode && isSwitcherClose", '[class.ant-tree-treenode-checkbox-checked]': "!nzSelectMode && isChecked", '[class.ant-tree-treenode-checkbox-indeterminate]': "!nzSelectMode && isHalfChecked", '[class.ant-tree-treenode-selected]': "!nzSelectMode && isSelected", '[class.ant-tree-treenode-loading]': "!nzSelectMode && isLoading", '[style.display]': 'displayStyle', '(mousedown)': 'onMousedown($event)' } }] } ]; /** @nocollapse */ NzTreeNodeComponent.ctorParameters = function () { return [ { type: NzTreeBaseService }, { type: NgZone }, { type: Renderer2 }, { type: ElementRef }, { type: ChangeDetectorRef }, { type: NzNoAnimationDirective, decorators: [{ type: Host }, { type: Optional }] } ]; }; NzTreeNodeComponent.propDecorators = { icon: [{ type: Input }], title: [{ type: Input }], isLoading: [{ type: Input }], isSelected: [{ type: Input }], isDisabled: [{ type: Input }], isMatched: [{ type: Input }], isExpanded: [{ type: Input }], isLeaf: [{ type: Input }], isChecked: [{ type: Input }], isHalfChecked: [{ type: Input }], isDisableCheckbox: [{ type: Input }], isSelectable: [{ type: Input }], canHide: [{ type: Input }], isStart: [{ type: Input }], isEnd: [{ type: Input }], nzTreeNode: [{ type: Input }], nzShowLine: [{ type: Input }], nzShowExpand: [{ type: Input }], nzCheckable: [{ type: Input }], nzAsyncData: [{ type: Input }], nzHideUnMatched: [{ type: Input }], nzNoAnimation: [{ type: Input }], nzSelectMode: [{ type: Input }], nzShowIcon: [{ type: Input }], nzExpandedIcon: [{ type: Input }], nzTreeTemplate: [{ type: Input }], nzBeforeDrop: [{ type: Input }], nzSearchValue: [{ type: Input }], nzDraggable: [{ type: Input }], nzClick: [{ type: Output }], nzDblClick: [{ type: Output }], nzContextMenu: [{ type: Output }], nzCheckBoxChange: [{ type: Output }], nzExpandChange: [{ type: Output }], nzOnDragStart: [{ type: Output }], nzOnDragEnter: [{ type: Output }], nzOnDragOver: [{ type: Output }], nzOnDragLeave: [{ type: Output }], nzOnDrop: [{ type: Output }], nzOnDragEnd: [{ type: Output }] }; __decorate([ InputBoolean(), __metadata("design:type", Boolean) ], NzTreeNodeComponent.prototype, "nzShowLine", void 0); __decorate([ InputBoolean(), __metadata("design:type", Boolean) ], NzTreeNodeComponent.prototype, "nzShowExpand", void 0); __decorate([ InputBoolean(), __metadata("design:type", Boolean) ], NzTreeNodeComponent.prototype, "nzCheckable", void 0); __decorate([ InputBoolean(), __metadata("design:type", Boolean) ], NzTreeNodeComponent.prototype, "nzAsyncData", void 0); __decorate([ InputBoolean(), __metadata("design:type", Object) ], NzTreeNodeComponent.prototype, "nzHideUnMatched", void 0); __decorate([ InputBoolean(), __metadata("design:type", Object) ], NzTreeNodeComponent.prototype, "nzNoAnimation", void 0); __decorate([ InputBoolean(), __metadata("design:type", Object) ], NzTreeNodeComponent.prototype, "nzSelectMode", void 0); __decorate([ InputBoolean(), __metadata("design:type", Object) ], NzTreeNodeComponent.prototype, "nzShowIcon", void 0); return NzTreeNodeComponent; }()); export { NzTreeNodeComponent }; if (false) { /** @type {?} */ NzTreeNodeComponent.ngAcceptInputType_nzShowLine; /** @type {?} */ NzTreeNodeComponent.ngAcceptInputType_nzShowExpand; /** @type {?} */ NzTreeNodeComponent.ngAcceptInputType_nzCheckable; /** @type {?} */ NzTreeNodeComponent.ngAcceptInputType_nzAsyncData; /** @type {?} */ NzTreeNodeComponent.ngAcceptInputType_nzHideUnMatched; /** @type {?} */ NzTreeNodeComponent.ngAcceptInputType_nzNoAnimation; /** @type {?} */ NzTreeNodeComponent.ngAcceptInputType_nzSelectMode; /** @type {?} */ NzTreeNodeComponent.ngAcceptInputType_nzShowIcon; /** * for global property * @type {?} */ NzTreeNodeComponent.prototype.icon; /** @type {?} */ NzTreeNodeComponent.prototype.title; /** @type {?} */ NzTreeNodeComponent.prototype.isLoading; /** @type {?} */ NzTreeNodeComponent.prototype.isSelected; /** @type {?} */ NzTreeNodeComponent.prototype.isDisabled; /** @type {?} */ NzTreeNodeComponent.prototype.isMatched; /** @type {?} */ NzTreeNodeComponent.prototype.isExpanded; /** @type {?} */ NzTreeNodeComponent.prototype.isLeaf; /** @type {?} */ NzTreeNodeComponent.prototype.isChecked; /** @type {?} */ NzTreeNodeComponent.prototype.isHalfChecked; /** @type {?} */ NzTreeNodeComponent.prototype.isDisableCheckbox; /** @type {?} */ NzTreeNodeComponent.prototype.isSelectable; /** @type {?} */ NzTreeNodeComponent.prototype.canHide; /** @type {?} */ NzTreeNodeComponent.prototype.isStart; /** @type {?} */ NzTreeNodeComponent.prototype.isEnd; /** @type {?} */ NzTreeNodeComponent.prototype.nzTreeNode; /** @type {?} */ NzTreeNodeComponent.prototype.nzShowLine; /** @type {?} */ NzTreeNodeComponent.prototype.nzShowExpand; /** @type {?} */ NzTreeNodeComponent.prototype.nzCheckable; /** @type {?} */ NzTreeNodeComponent.prototype.nzAsyncData; /** @type {?} */ NzTreeNodeComponent.prototype.nzHideUnMatched; /** @type {?} */ NzTreeNodeComponent.prototype.nzNoAnimation; /** @type {?} */ NzTreeNodeComponent.prototype.nzSelectMode; /** @type {?} */ NzTreeNodeComponent.prototype.nzShowIcon; /** @type {?} */ NzTreeNodeComponent.prototype.nzExpandedIcon; /** @type {?} */ NzTreeNodeComponent.prototype.nzTreeTemplate; /** @type {?} */ NzTreeNodeComponent.prototype.nzBeforeDrop; /** @type {?} */ NzTreeNodeComponent.prototype.nzSearchValue; /** @type {?} */ NzTreeNodeComponent.prototype.nzDraggable; /** @type {?} */ NzTreeNodeComponent.prototype.nzClick; /** @type {?} */ NzTreeNodeComponent.prototype.nzDblClick; /** @type {?} */ NzTreeNodeComponent.prototype.nzContextMenu; /** @type {?} */ NzTreeNodeComponent.prototype.nzCheckBoxChange; /** @type {?} */ NzTreeNodeComponent.prototype.nzExpandChange; /** @type {?} */ NzTreeNodeComponent.prototype.nzOnDragStart; /** @type {?} */ NzTreeNodeComponent.prototype.nzOnDragEnter; /** @type {?} */ NzTreeNodeComponent.prototype.nzOnDragOver; /** @type {?} */ NzTreeNodeComponent.prototype.nzOnDragLeave; /** @type {?} */ NzTreeNodeComponent.prototype.nzOnDrop; /** @type {?} */ NzTreeNodeComponent.prototype.nzOnDragEnd; /** * drag var * @type {?} */ NzTreeNodeComponent.prototype.destroy$; /** @type {?} */ NzTreeNodeComponent.prototype.dragPos; /** @type {?} */ NzTreeNodeComponent.prototype.dragPosClass; /** @type {?} */ NzTreeNodeComponent.prototype.nzTreeService; /** * @type {?} * @private */ NzTreeNodeComponent.prototype.ngZone; /** * @type {?} * @private */ NzTreeNodeComponent.prototype.renderer; /** * @type {?} * @private */ NzTreeNodeComponent.prototype.elementRef; /** * @type {?} * @private */ NzTreeNodeComponent.prototype.cdr; /** @type {?} */ NzTreeNodeComponent.prototype.noAnimation; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1ub2RlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLXpvcnJvLWFudGQvdHJlZS8iLCJzb3VyY2VzIjpbInRyZWUtbm9kZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQVFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLElBQUksRUFDSixLQUFLLEVBQ0wsTUFBTSxFQUlOLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUVULFdBQVcsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUV6RSxPQUFPLEVBQThDLGlCQUFpQixFQUFFLFVBQVUsRUFBcUIsTUFBTSx5QkFBeUIsQ0FBQztBQUV2SSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDO0lBMFZFLDZCQUNTLGFBQWdDLEVBQy9CLE1BQWMsRUFDZCxRQUFtQixFQUNuQixVQUFzQixFQUN0QixHQUFzQixFQUNILFdBQW9DO1FBTHhELGtCQUFhLEdBQWIsYUFBYSxDQUFtQjtRQUMvQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ0gsZ0JBQVcsR0FBWCxXQUFXLENBQXlCO1FBMVB4QyxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4QixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixlQUFVLEdBQUcsS0FBSyxDQUFD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NEI7O0lBQzVCLHlDQUE2Qjs7SUFDN0IscUNBQXlCOztJQUN6Qix3Q0FBNEI7O0lBQzVCLDRDQUFnQzs7SUFDaEMsZ0RBQW9DOztJQUNwQywyQ0FBK0I7O0lBQy9CLHNDQUEwQjs7SUFDMUIsc0NBQTRCOztJQUM1QixvQ0FBMEI7O0lBQzFCLHlDQUFnQzs7SUFDaEMseUNBQTZDOztJQUM3QywyQ0FBK0M7O0lBQy9DLDBDQUE4Qzs7SUFDOUMsMENBQThDOztJQUM5Qyw4Q0FBaUQ7O0lBQ2pELDRDQUErQzs7SUFDL0MsMkNBQThDOztJQUM5Qyx5Q0FBNEM7O0lBQzVDLDZDQUEyRjs7SUFDM0YsNkNBQTJGOztJQUMzRiwyQ0FBaUY7O0lBQ2pGLDRDQUE0Qjs7SUFDNUIsMENBQThCOztJQUM5QixzQ0FBbUU7O0lBQ25FLHlDQUFzRTs7SUFDdEUsNENBQXlFOztJQUN6RSwrQ0FBNEU7O0lBQzVFLDZDQUEwRTs7SUFDMUUsNENBQXlFOztJQUN6RSw0Q0FBeUU7O0lBQ3pFLDJDQUF3RTs7SUFDeEUsNENBQXlFOztJQUN6RSx1Q0FBb0U7O0lBQ3BFLDBDQUF1RTs7Ozs7SUFLdkUsdUNBQXlCOztJQUN6QixzQ0FBWTs7SUFDWiwyQ0FJRTs7SUF1TkEsNENBQXVDOzs7OztJQUN2QyxxQ0FBc0I7Ozs7O0lBQ3RCLHVDQUEyQjs7Ozs7SUFDM0IseUNBQThCOzs7OztJQUM5QixrQ0FBOEI7O0lBQzlCLDBDQUErRCIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0LFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBSZW5kZXJlcjIsXG4gIFNpbXBsZUNoYW5nZSxcbiAgVGVtcGxhdGVSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOek5vQW5pbWF0aW9uRGlyZWN0aXZlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL25vLWFuaW1hdGlvbic7XG5cbmltcG9ydCB7IE56Rm9ybWF0QmVmb3JlRHJvcEV2ZW50LCBOekZvcm1hdEVtaXRFdmVudCwgTnpUcmVlQmFzZVNlcnZpY2UsIE56VHJlZU5vZGUsIE56VHJlZU5vZGVPcHRpb25zIH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3RyZWUnO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0IH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3R5cGVzJztcbmltcG9ydCB7IElucHV0Qm9vbGVhbiB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS91dGlsJztcbmltcG9ydCB7IGZyb21FdmVudCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduei10cmVlLW5vZGUnLFxuICBleHBvcnRBczogJ256VHJlZU5vZGUnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuei10cmVlLWluZGVudCBbbnpUcmVlTGV2ZWxdPVwibnpUcmVlTm9kZS5sZXZlbFwiIFtuelNlbGVjdE1vZGVdPVwibnpTZWxlY3RNb2RlXCIgW256SXNTdGFydF09XCJpc1N0YXJ0XCIgW256SXNFbmRdPVwiaXNFbmRcIj48L256LXRyZWUtaW5kZW50PlxuICAgIDxuei10cmVlLW5vZGUtc3dpdGNoZXJcbiAgICAgICpuZ0lmPVwibnpTaG93RXhwYW5kXCJcbiAgICAgIFtuelNob3dFeHBhbmRdPVwibnpTaG93RXhwYW5kXCJcbiAgICAgIFtuelNob3dMaW5lXT1cIm56U2hvd0xpbmVcIlxuICAgICAgW256RXhwYW5kZWRJY29uXT1cIm56RXhwYW5kZWRJY29uXCJcbiAgICAgIFtuelNlbGVjdE1vZGVdPVwibnpTZWxlY3RNb2RlXCJcbiAgICAgIFtjb250ZXh0XT1cIm56VHJlZU5vZGVcIlxuICAgICAgW2lzTGVhZl09XCJpc0xlYWZcIlxuICAgICAgW2lzRXhwYW5kZWRdPVwiaXNFeHBhbmRlZFwiXG4gICAgICBbaXNMb2FkaW5nXT1cImlzTG9hZGluZ1wiXG4gICAgICAoY2xpY2spPVwiY2xpY2tFeHBhbmQoJGV2ZW50KVwiXG4gICAgPjwvbnotdHJlZS1ub2RlLXN3aXRjaGVyPlxuICAgIDxuei10cmVlLW5vZGUtY2hlY2tib3hcbiAgICAgICpuZ0lmPVwibnpDaGVja2FibGVcIlxuICAgICAgKGNsaWNrKT1cImNsaWNrQ2hlY2tCb3goJGV2ZW50KVwiXG4gICAgICBbbnpTZWxlY3RNb2RlXT1cIm56U2VsZWN0TW9kZVwiXG4gICAgICBbaXNDaGVja2VkXT1cImlzQ2hlY2tlZFwiXG4gICAgICBbaXNIYWxmQ2hlY2tlZF09XCJpc0hhbGZDaGVja2VkXCJcbiAgICAgIFtpc0Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxuICAgICAgW2lzRGlzYWJsZUNoZWNrYm94XT1cImlzRGlzYWJsZUNoZWNrYm94XCJcbiAgICA+PC9uei10cmVlLW5vZGUtY2hlY2tib3g+XG4gICAgPG56LXRyZWUtbm9kZS10aXRsZVxuICAgICAgW2ljb25dPVwiaWNvblwiXG4gICAgICBbdGl0bGVdPVwidGl0bGVcIlxuICAgICAgW2lzTG9hZGluZ109XCJpc0xvYWRpbmdcIlxuICAgICAgW2lzU2VsZWN0ZWRdPVwiaXNTZWxlY3RlZFwiXG4gICAgICBbaXNEaXNhYmxlZF09XCJpc0Rpc2FibGVkXCJcbiAgICAgIFtpc01hdGNoZWRdPVwiaXNNYXRjaGVkXCJcbiAgICAgIFtpc0V4cGFuZGVkXT1cImlzRXhwYW5kZWRcIlxuICAgICAgW2lzTGVhZl09XCJpc0xlYWZcIlxuICAgICAgW3NlYXJjaFZhbHVlXT1cIm56U2VhcmNoVmFsdWVcIlxuICAgICAgW3RyZWVUZW1wbGF0ZV09XCJuelRyZWVUZW1wbGF0ZVwiXG4gICAgICBbZHJhZ2dhYmxlXT1cIm56RHJhZ2dhYmxlXCJcbiAgICAgIFtzaG93SWNvbl09XCJuelNob3dJY29uXCJcbiAgICAgIFtzZWxlY3RNb2RlXT1cIm56U2VsZWN0TW9kZVwiXG4gICAgICBbY29udGV4dF09XCJuelRyZWVOb2RlXCJcbiAgICAgIChkYmxjbGljayk9XCJkYmxDbGljaygkZXZlbnQpXCJcbiAgICAgIChjbGljayk9XCJjbGlja1NlbGVjdCgkZXZlbnQpXCJcbiAgICAgIChjb250ZXh0bWVudSk9XCJjb250ZXh0TWVudSgkZXZlbnQpXCJcbiAgICA+PC9uei10cmVlLW5vZGUtdGl0bGU+XG4gIGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3MuYW50LXNlbGVjdC10cmVlLXRyZWVub2RlXSc6IGBuelNlbGVjdE1vZGVgLFxuICAgICdbY2xhc3MuYW50LXNlbGVjdC10cmVlLXRyZWVub2RlLWRpc2FibGVkXSc6IGBuelNlbGVjdE1vZGUgJiYgaXNEaXNhYmxlZGAsXG4gICAgJ1tjbGFzcy5hbnQtc2VsZWN0LXRyZWUtdHJlZW5vZGUtc3dpdGNoZXItb3Blbl0nOiBgbnpTZWxlY3RNb2RlICYmIGlzU3dpdGNoZXJPcGVuYCxcbiAgICAnW2NsYXNzLmFudC1zZWxlY3QtdHJlZS10cmVlbm9kZS1zd2l0Y2hlci1jbG9zZV0nOiBgbnpTZWxlY3RNb2RlICYmIGlzU3dpdGNoZXJDbG9zZWAsXG4gICAgJ1tjbGFzcy5hbnQtc2VsZWN0LXRyZWUtdHJlZW5vZGUtY2hlY2tib3gtY2hlY2tlZF0nOiBgbnpTZWxlY3RNb2RlICYmIGlzQ2hlY2tlZGAsXG4gICAgJ1tjbGFzcy5hbnQtc2VsZWN0LXRyZWUtdHJlZW5vZGUtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZV0nOiBgbnpTZWxlY3RNb2RlICYmIGlzSGFsZkNoZWNrZWRgLFxuICAgICdbY2xhc3MuYW50LXNlbGVjdC10cmVlLXRyZWVub2RlLXNlbGVjdGVkXSc6IGBuelNlbGVjdE1vZGUgJiYgaXNTZWxlY3RlZGAsXG4gICAgJ1tjbGFzcy5hbnQtc2VsZWN0LXRyZWUtdHJlZW5vZGUtbG9hZGluZ10nOiBgbnpTZWxlY3RNb2RlICYmIGlzTG9hZGluZ2AsXG4gICAgJ1tjbGFzcy5hbnQtdHJlZS10cmVlbm9kZV0nOiBgIW56U2VsZWN0TW9kZWAsXG4gICAgJ1tjbGFzcy5hbnQtdHJlZS10cmVlbm9kZS1kaXNhYmxlZF0nOiBgIW56U2VsZWN0TW9kZSAmJiBpc0Rpc2FibGVkYCxcbiAgICAnW2NsYXNzLmFudC10cmVlLXRyZWVub2RlLXN3aXRjaGVyLW9wZW5dJzogYCFuelNlbGVjdE1vZGUgJiYgaXNTd2l0Y2hlck9wZW5gLFxuICAgICdbY2xhc3MuYW50LXRyZWUtdHJlZW5vZGUtc3dpdGNoZXItY2xvc2VdJzogYCFuelNlbGVjdE1vZGUgJiYgaXNTd2l0Y2hlckNsb3NlYCxcbiAgICAnW2NsYXNzLmFudC10cmVlLXRyZWVub2RlLWNoZWNrYm94LWNoZWNrZWRdJzogYCFuelNlbGVjdE1vZGUgJiYgaXNDaGVja2VkYCxcbiAgICAnW2NsYXNzLmFudC10cmVlLXRyZWVub2RlLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVdJzogYCFuelNlbGVjdE1vZGUgJiYgaXNIYWxmQ2hlY2tlZGAsXG4gICAgJ1tjbGFzcy5hbnQtdHJlZS10cmVlbm9kZS1zZWxlY3RlZF0nOiBgIW56U2VsZWN0TW9kZSAmJiBpc1NlbGVjdGVkYCxcbiAgICAnW2NsYXNzLmFudC10cmVlLXRyZWVub2RlLWxvYWRpbmddJzogYCFuelNlbGVjdE1vZGUgJiYgaXNMb2FkaW5nYCxcbiAgICAnW3N0eWxlLmRpc3BsYXldJzogJ2Rpc3BsYXlTdHlsZScsXG4gICAgJyhtb3VzZWRvd24pJzogJ29uTW91c2Vkb3duKCRldmVudCknXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgTnpUcmVlTm9kZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbnpTaG93TGluZTogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbnpTaG93RXhwYW5kOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9uekNoZWNrYWJsZTogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbnpBc3luY0RhdGE6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX256SGlkZVVuTWF0Y2hlZDogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbnpOb0FuaW1hdGlvbjogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbnpTZWxlY3RNb2RlOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9uelNob3dJY29uOiBCb29sZWFuSW5wdXQ7XG5cbiAgLyoqXG4gICAqIGZvciBnbG9iYWwgcHJvcGVydHlcbiAgICovXG4gIEBJbnB1dCgpIGljb246IHN0cmluZztcbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgaXNMb2FkaW5nOiBib29sZWFuO1xuICBASW5wdXQoKSBpc1NlbGVjdGVkOiBib29sZWFuO1xuICBASW5wdXQoKSBpc0Rpc2FibGVkOiBib29sZWFuO1xuICBASW5wdXQoKSBpc01hdGNoZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGlzRXhwYW5kZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGlzTGVhZjogYm9vbGVhbjtcbiAgQElucHV0KCkgaXNDaGVja2VkOiBib29sZWFuO1xuICBASW5wdXQoKSBpc0hhbGZDaGVja2VkOiBib29sZWFuO1xuICBASW5wdXQoKSBpc0Rpc2FibGVDaGVja2JveDogYm9vbGVhbjtcbiAgQElucHV0KCkgaXNTZWxlY3RhYmxlOiBib29sZWFuO1xuICBASW5wdXQoKSBjYW5IaWRlOiBib29sZWFuO1xuICBASW5wdXQoKSBpc1N0YXJ0OiBib29sZWFuW107XG4gIEBJbnB1dCgpIGlzRW5kOiBib29sZWFuW107XG4gIEBJbnB1dCgpIG56VHJlZU5vZGU6IE56VHJlZU5vZGU7XG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBuelNob3dMaW5lOiBib29sZWFuO1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgbnpTaG93RXhwYW5kOiBib29sZWFuO1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgbnpDaGVja2FibGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBuekFzeW5jRGF0YTogYm9vbGVhbjtcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIG56SGlkZVVuTWF0Y2hlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgbnpOb0FuaW1hdGlvbiA9IGZhbHNlO1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgbnpTZWxlY3RNb2RlID0gZmFsc2U7XG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBuelNob3dJY29uID0gZmFsc2U7XG4gIEBJbnB1dCgpIG56RXhwYW5kZWRJY29uOiBUZW1wbGF0ZVJlZjx7ICRpbXBsaWNpdDogTnpUcmVlTm9kZTsgb3JpZ2luOiBOelRyZWVOb2RlT3B0aW9ucyB9PjtcbiAgQElucHV0KCkgbnpUcmVlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHsgJGltcGxpY2l0OiBOelRyZWVOb2RlOyBvcmlnaW46IE56VHJlZU5vZGVPcHRpb25zIH0+O1xuICBASW5wdXQoKSBuekJlZm9yZURyb3A6IChjb25maXJtOiBOekZvcm1hdEJlZm9yZURyb3BFdmVudCkgPT4gT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgQElucHV0KCkgbnpTZWFyY2hWYWx1ZSA9ICcnO1xuICBASW5wdXQoKSBuekRyYWdnYWJsZTogYm9vbGVhbjtcbiAgQE91dHB1dCgpIHJlYWRvbmx5IG56Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPE56Rm9ybWF0RW1pdEV2ZW50PigpO1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgbnpEYmxDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8TnpGb3JtYXRFbWl0RXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSByZWFkb25seSBuekNvbnRleHRNZW51ID0gbmV3IEV2ZW50RW1pdHRlcjxOekZvcm1hdEVtaXRFdmVudD4oKTtcbiAgQE91dHB1dCgpIHJlYWRvbmx5IG56Q2hlY2tCb3hDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE56Rm9ybWF0RW1pdEV2ZW50PigpO1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgbnpFeHBhbmRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE56Rm9ybWF0RW1pdEV2ZW50PigpO1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgbnpPbkRyYWdTdGFydCA9IG5ldyBFdmVudEVtaXR0ZXI8TnpGb3JtYXRFbWl0RXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSByZWFkb25seSBuek9uRHJhZ0VudGVyID0gbmV3IEV2ZW50RW1pdHRlcj