ng-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
726 lines (725 loc) • 62.5 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: tree.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 { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, EventEmitter, forwardRef, Host, Input, Optional, Output, SkipSelf, TemplateRef, ViewChild } from '@angular/core';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
import { treeCollapseMotion } from 'ng-zorro-antd/core/animation';
import { NzConfigService, WithConfig } from 'ng-zorro-antd/core/config';
import { NzNoAnimationDirective } from 'ng-zorro-antd/core/no-animation';
import { flattenTreeData, NzTreeBase, NzTreeBaseService, NzTreeHigherOrderServiceToken } from 'ng-zorro-antd/core/tree';
import { InputBoolean } from 'ng-zorro-antd/core/util';
import { Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
import { NzTreeService } from './tree.service';
/**
* @param {?} higherOrderService
* @param {?} treeService
* @return {?}
*/
export function NzTreeServiceFactory(higherOrderService, treeService) {
return higherOrderService ? higherOrderService : treeService;
}
/** @type {?} */
const NZ_CONFIG_COMPONENT_NAME = 'tree';
export class NzTreeComponent extends NzTreeBase {
// Handle emit event end
/**
* @param {?} nzTreeService
* @param {?} nzConfigService
* @param {?} cdr
* @param {?=} noAnimation
*/
constructor(nzTreeService, nzConfigService, cdr, noAnimation) {
super(nzTreeService);
this.nzConfigService = nzConfigService;
this.cdr = cdr;
this.noAnimation = noAnimation;
this.nzShowIcon = false;
this.nzHideUnMatched = false;
this.nzBlockNode = false;
this.nzExpandAll = false;
this.nzSelectMode = false;
this.nzCheckStrictly = false;
this.nzShowExpand = true;
this.nzShowLine = false;
this.nzCheckable = false;
this.nzAsyncData = false;
this.nzDraggable = false;
this.nzMultiple = false;
this.nzVirtualItemSize = 28;
this.nzVirtualMaxBufferPx = 500;
this.nzVirtualMinBufferPx = 28;
this.nzVirtualHeight = null;
this.nzData = [];
this.nzExpandedKeys = [];
this.nzSelectedKeys = [];
this.nzCheckedKeys = [];
this.nzFlattenNodes = [];
this.beforeInit = true;
this.nzExpandedKeysChange = new EventEmitter();
this.nzSelectedKeysChange = new EventEmitter();
this.nzCheckedKeysChange = new EventEmitter();
this.nzSearchValueChange = new EventEmitter();
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();
this.HIDDEN_STYLE = {
width: 0,
height: 0,
display: 'flex',
overflow: 'hidden',
opacity: 0,
border: 0,
padding: 0,
margin: 0
};
this.destroy$ = new Subject();
this.onChange = (/**
* @return {?}
*/
() => null);
this.onTouched = (/**
* @return {?}
*/
() => null);
}
/**
* @param {?} value
* @return {?}
*/
writeValue(value) {
this.handleNzData(value);
}
/**
* @param {?} fn
* @return {?}
*/
registerOnChange(fn) {
this.onChange = fn;
}
/**
* @param {?} fn
* @return {?}
*/
registerOnTouched(fn) {
this.onTouched = fn;
}
/**
* Render all properties of nzTree
* @param {?} changes
* @return {?}
*/
renderTreeProperties(changes) {
/** @type {?} */
let useDefaultExpandedKeys = false;
/** @type {?} */
let expandAll = false;
const { nzData, nzExpandedKeys, nzSelectedKeys, nzCheckedKeys, nzCheckStrictly, nzExpandAll, nzMultiple, nzSearchValue } = changes;
if (nzExpandAll) {
useDefaultExpandedKeys = true;
expandAll = this.nzExpandAll;
}
if (nzMultiple) {
this.nzTreeService.isMultiple = this.nzMultiple;
}
if (nzCheckStrictly) {
this.nzTreeService.isCheckStrictly = this.nzCheckStrictly;
}
if (nzData) {
this.handleNzData(this.nzData);
}
if (nzCheckedKeys || nzCheckStrictly) {
this.handleCheckedKeys(this.nzCheckedKeys);
}
if (nzExpandedKeys || nzExpandAll) {
useDefaultExpandedKeys = true;
this.handleExpandedKeys(expandAll || this.nzExpandedKeys);
}
if (nzSelectedKeys) {
this.handleSelectedKeys(this.nzSelectedKeys, this.nzMultiple);
}
if (nzSearchValue) {
if (!(nzSearchValue.firstChange && !this.nzSearchValue)) {
useDefaultExpandedKeys = false;
this.handleSearchValue(nzSearchValue.currentValue, this.nzSearchFunc);
this.nzSearchValueChange.emit(this.nzTreeService.formatEvent('search', null, null));
}
}
// flatten data
/** @type {?} */
const currentExpandedKeys = this.getExpandedNodeList().map((/**
* @param {?} v
* @return {?}
*/
v => v.key));
/** @type {?} */
const newExpandedKeys = useDefaultExpandedKeys ? expandAll || this.nzExpandedKeys : currentExpandedKeys;
this.handleFlattenNodes(this.nzTreeService.rootNodes, newExpandedKeys);
}
/**
* @param {?} _
* @param {?} node
* @return {?}
*/
trackByFlattenNode(_, node) {
return node.key;
}
// Deal with properties
/**
* nzData
* @param {?} value
* @return {?}
*/
handleNzData(value) {
if (Array.isArray(value)) {
/** @type {?} */
const data = this.coerceTreeNodes(value);
this.nzTreeService.initTree(data);
}
}
/**
* @param {?} data
* @param {?=} expandKeys
* @return {?}
*/
handleFlattenNodes(data, expandKeys = []) {
this.nzTreeService.flattenTreeData(data, expandKeys);
}
/**
* @param {?} keys
* @return {?}
*/
handleCheckedKeys(keys) {
this.nzTreeService.conductCheck(keys, this.nzCheckStrictly);
}
/**
* @param {?=} keys
* @return {?}
*/
handleExpandedKeys(keys = []) {
this.nzTreeService.conductExpandedKeys(keys);
}
/**
* @param {?} keys
* @param {?} isMulti
* @return {?}
*/
handleSelectedKeys(keys, isMulti) {
this.nzTreeService.conductSelectedKeys(keys, isMulti);
}
/**
* @param {?} value
* @param {?=} searchFunc
* @return {?}
*/
handleSearchValue(value, searchFunc) {
/** @type {?} */
const dataList = flattenTreeData(this.nzTreeService.rootNodes, true).map((/**
* @param {?} v
* @return {?}
*/
v => v.data));
/** @type {?} */
const checkIfMatched = (/**
* @param {?} node
* @return {?}
*/
(node) => {
if (searchFunc) {
return searchFunc(node.origin);
}
return !value || !node.title.toLowerCase().includes(value.toLowerCase()) ? false : true;
});
dataList.forEach((/**
* @param {?} v
* @return {?}
*/
v => {
v.isMatched = checkIfMatched(v);
v.canHide = !v.isMatched;
if (!v.isMatched) {
v.setExpanded(false);
this.nzTreeService.setExpandedNodeList(v);
}
else {
// expand
this.nzTreeService.expandNodeAllParentBySearch(v);
}
this.nzTreeService.setMatchedNodeList(v);
}));
}
/**
* Handle emit event
* @param {?} event
* handle each event
* @return {?}
*/
eventTriggerChanged(event) {
/** @type {?} */
const node = (/** @type {?} */ (event.node));
switch (event.eventName) {
case 'expand':
this.renderTree();
this.nzExpandChange.emit(event);
break;
case 'click':
this.nzClick.emit(event);
break;
case 'dblclick':
this.nzDblClick.emit(event);
break;
case 'contextmenu':
this.nzContextMenu.emit(event);
break;
case 'check':
// Render checked state with nodes' property `isChecked`
this.nzTreeService.setCheckedNodeList(node);
if (!this.nzCheckStrictly) {
this.nzTreeService.conduct(node);
}
// Cause check method will rerender list, so we need recover it and next the new event to user
/** @type {?} */
const eventNext = this.nzTreeService.formatEvent('check', node, (/** @type {?} */ (event.event)));
this.nzCheckBoxChange.emit(eventNext);
break;
case 'dragstart':
// if node is expanded
if (node.isExpanded) {
node.setExpanded(!node.isExpanded);
this.renderTree();
}
this.nzOnDragStart.emit(event);
break;
case 'dragenter':
/** @type {?} */
const selectedNode = this.nzTreeService.getSelectedNode();
if (selectedNode && selectedNode.key !== node.key && !node.isExpanded && !node.isLeaf) {
node.setExpanded(true);
this.renderTree();
}
this.nzOnDragEnter.emit(event);
break;
case 'dragover':
this.nzOnDragOver.emit(event);
break;
case 'dragleave':
this.nzOnDragLeave.emit(event);
break;
case 'dragend':
this.nzOnDragEnd.emit(event);
break;
case 'drop':
this.renderTree();
this.nzOnDrop.emit(event);
break;
}
}
/**
* Click expand icon
* @return {?}
*/
renderTree() {
this.handleFlattenNodes(this.nzTreeService.rootNodes, this.getExpandedNodeList().map((/**
* @param {?} v
* @return {?}
*/
v => v.key)));
this.cdr.markForCheck();
}
/**
* @return {?}
*/
ngOnInit() {
this.nzTreeService.flattenNodes$.pipe(takeUntil(this.destroy$)).subscribe((/**
* @param {?} data
* @return {?}
*/
data => {
this.nzFlattenNodes = data;
this.cdr.markForCheck();
}));
}
/**
* @param {?} changes
* @return {?}
*/
ngOnChanges(changes) {
this.renderTreeProperties(changes);
}
/**
* @return {?}
*/
ngAfterViewInit() {
this.beforeInit = false;
}
/**
* @return {?}
*/
ngOnDestroy() {
this.destroy$.next();
this.destroy$.complete();
}
}
NzTreeComponent.decorators = [
{ type: Component, args: [{
selector: 'nz-tree',
exportAs: 'nzTree',
animations: [treeCollapseMotion],
template: `
<div role="tree">
<input [ngStyle]="HIDDEN_STYLE" />
</div>
<div [class.ant-select-tree-list]="nzSelectMode" [class.ant-tree-list]="nzSelectMode">
<div>
<cdk-virtual-scroll-viewport
*ngIf="nzVirtualHeight"
[class.ant-select-tree-list-holder-inner]="nzSelectMode"
[class.ant-tree-list-holder-inner]="nzSelectMode"
[itemSize]="nzVirtualItemSize"
[minBufferPx]="nzVirtualMinBufferPx"
[maxBufferPx]="nzVirtualMaxBufferPx"
[style.height]="nzVirtualHeight"
>
<ng-container *cdkVirtualFor="let node of nzFlattenNodes; trackBy: trackByFlattenNode">
<ng-template [ngTemplateOutlet]="nodeTemplate" [ngTemplateOutletContext]="{ $implicit: node }"></ng-template>
</ng-container>
</cdk-virtual-scroll-viewport>
<div
*ngIf="!nzVirtualHeight"
[class.ant-select-tree-list-holder-inner]="nzSelectMode"
[class.ant-tree-list-holder-inner]="nzSelectMode"
[@.disabled]="beforeInit || noAnimation?.nzNoAnimation"
[nzNoAnimation]="noAnimation?.nzNoAnimation"
[@treeCollapseMotion]="nzFlattenNodes.length"
>
<ng-container *ngFor="let node of nzFlattenNodes; trackBy: trackByFlattenNode">
<ng-template [ngTemplateOutlet]="nodeTemplate" [ngTemplateOutletContext]="{ $implicit: node }"></ng-template>
</ng-container>
</div>
</div>
</div>
<ng-template #nodeTemplate let-treeNode>
<nz-tree-node
[icon]="treeNode.icon"
[title]="treeNode.title"
[isLoading]="treeNode.isLoading"
[isSelected]="treeNode.isSelected"
[isDisabled]="treeNode.isDisabled"
[isMatched]="treeNode.isMatched"
[isExpanded]="treeNode.isExpanded"
[isLeaf]="treeNode.isLeaf"
[isStart]="treeNode.isStart"
[isEnd]="treeNode.isEnd"
[isChecked]="treeNode.isChecked"
[isHalfChecked]="treeNode.isHalfChecked"
[isDisableCheckbox]="treeNode.isDisableCheckbox"
[isSelectable]="treeNode.isSelectable"
[canHide]="treeNode.canHide"
[nzTreeNode]="treeNode"
[nzSelectMode]="nzSelectMode"
[nzShowLine]="nzShowLine"
[nzExpandedIcon]="nzExpandedIcon"
[nzDraggable]="nzDraggable"
[nzCheckable]="nzCheckable"
[nzShowExpand]="nzShowExpand"
[nzAsyncData]="nzAsyncData"
[nzSearchValue]="nzSearchValue"
[nzHideUnMatched]="nzHideUnMatched"
[nzBeforeDrop]="nzBeforeDrop"
[nzShowIcon]="nzShowIcon"
[nzTreeTemplate]="nzTreeTemplate || nzTreeTemplateChild"
(nzExpandChange)="eventTriggerChanged($event)"
(nzClick)="eventTriggerChanged($event)"
(nzDblClick)="eventTriggerChanged($event)"
(nzContextMenu)="eventTriggerChanged($event)"
(nzCheckBoxChange)="eventTriggerChanged($event)"
(nzOnDragStart)="eventTriggerChanged($event)"
(nzOnDragEnter)="eventTriggerChanged($event)"
(nzOnDragOver)="eventTriggerChanged($event)"
(nzOnDragLeave)="eventTriggerChanged($event)"
(nzOnDragEnd)="eventTriggerChanged($event)"
(nzOnDrop)="eventTriggerChanged($event)"
>
</nz-tree-node>
</ng-template>
`,
changeDetection: ChangeDetectionStrategy.OnPush,
providers: [
NzTreeService,
{
provide: NzTreeBaseService,
useFactory: NzTreeServiceFactory,
deps: [[new SkipSelf(), new Optional(), NzTreeHigherOrderServiceToken], NzTreeService]
},
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef((/**
* @return {?}
*/
() => NzTreeComponent)),
multi: true
}
],
host: {
'[class.ant-select-tree]': `nzSelectMode`,
'[class.ant-select-tree-show-line]': `nzSelectMode && nzShowLine`,
'[class.ant-select-tree-icon-hide]': `nzSelectMode && !nzShowIcon`,
'[class.ant-select-tree-block-node]': `nzSelectMode && nzBlockNode`,
'[class.ant-tree]': `!nzSelectMode`,
'[class.ant-tree-show-line]': `!nzSelectMode && nzShowLine`,
'[class.ant-tree-icon-hide]': `!nzSelectMode && !nzShowIcon`,
'[class.ant-tree-block-node]': `!nzSelectMode && nzBlockNode`,
'[class.draggable-tree]': `nzDraggable`
}
}] }
];
/** @nocollapse */
NzTreeComponent.ctorParameters = () => [
{ type: NzTreeBaseService },
{ type: NzConfigService },
{ type: ChangeDetectorRef },
{ type: NzNoAnimationDirective, decorators: [{ type: Host }, { type: Optional }] }
];
NzTreeComponent.propDecorators = {
nzShowIcon: [{ type: Input }],
nzHideUnMatched: [{ type: Input }],
nzBlockNode: [{ type: Input }],
nzExpandAll: [{ type: Input }],
nzSelectMode: [{ type: Input }],
nzCheckStrictly: [{ type: Input }],
nzShowExpand: [{ type: Input }],
nzShowLine: [{ type: Input }],
nzCheckable: [{ type: Input }],
nzAsyncData: [{ type: Input }],
nzDraggable: [{ type: Input }],
nzMultiple: [{ type: Input }],
nzExpandedIcon: [{ type: Input }],
nzVirtualItemSize: [{ type: Input }],
nzVirtualMaxBufferPx: [{ type: Input }],
nzVirtualMinBufferPx: [{ type: Input }],
nzVirtualHeight: [{ type: Input }],
nzTreeTemplate: [{ type: Input }],
nzBeforeDrop: [{ type: Input }],
nzData: [{ type: Input }],
nzExpandedKeys: [{ type: Input }],
nzSelectedKeys: [{ type: Input }],
nzCheckedKeys: [{ type: Input }],
nzSearchValue: [{ type: Input }],
nzSearchFunc: [{ type: Input }],
nzTreeTemplateChild: [{ type: ContentChild, args: ['nzTreeTemplate', { static: true },] }],
cdkVirtualScrollViewport: [{ type: ViewChild, args: [CdkVirtualScrollViewport, { read: CdkVirtualScrollViewport },] }],
nzExpandedKeysChange: [{ type: Output }],
nzSelectedKeysChange: [{ type: Output }],
nzCheckedKeysChange: [{ type: Output }],
nzSearchValueChange: [{ type: Output }],
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(), WithConfig(NZ_CONFIG_COMPONENT_NAME),
__metadata("design:type", Boolean)
], NzTreeComponent.prototype, "nzShowIcon", void 0);
__decorate([
InputBoolean(), WithConfig(NZ_CONFIG_COMPONENT_NAME),
__metadata("design:type", Boolean)
], NzTreeComponent.prototype, "nzHideUnMatched", void 0);
__decorate([
InputBoolean(), WithConfig(NZ_CONFIG_COMPONENT_NAME),
__metadata("design:type", Boolean)
], NzTreeComponent.prototype, "nzBlockNode", void 0);
__decorate([
InputBoolean(),
__metadata("design:type", Object)
], NzTreeComponent.prototype, "nzExpandAll", void 0);
__decorate([
InputBoolean(),
__metadata("design:type", Object)
], NzTreeComponent.prototype, "nzSelectMode", void 0);
__decorate([
InputBoolean(),
__metadata("design:type", Object)
], NzTreeComponent.prototype, "nzCheckStrictly", void 0);
__decorate([
InputBoolean(),
__metadata("design:type", Boolean)
], NzTreeComponent.prototype, "nzShowExpand", void 0);
__decorate([
InputBoolean(),
__metadata("design:type", Object)
], NzTreeComponent.prototype, "nzShowLine", void 0);
__decorate([
InputBoolean(),
__metadata("design:type", Object)
], NzTreeComponent.prototype, "nzCheckable", void 0);
__decorate([
InputBoolean(),
__metadata("design:type", Object)
], NzTreeComponent.prototype, "nzAsyncData", void 0);
__decorate([
InputBoolean(),
__metadata("design:type", Boolean)
], NzTreeComponent.prototype, "nzDraggable", void 0);
__decorate([
InputBoolean(),
__metadata("design:type", Object)
], NzTreeComponent.prototype, "nzMultiple", void 0);
if (false) {
/** @type {?} */
NzTreeComponent.ngAcceptInputType_nzShowIcon;
/** @type {?} */
NzTreeComponent.ngAcceptInputType_nzHideUnMatched;
/** @type {?} */
NzTreeComponent.ngAcceptInputType_nzBlockNode;
/** @type {?} */
NzTreeComponent.ngAcceptInputType_nzExpandAll;
/** @type {?} */
NzTreeComponent.ngAcceptInputType_nzSelectMode;
/** @type {?} */
NzTreeComponent.ngAcceptInputType_nzCheckStrictly;
/** @type {?} */
NzTreeComponent.ngAcceptInputType_nzShowExpand;
/** @type {?} */
NzTreeComponent.ngAcceptInputType_nzShowLine;
/** @type {?} */
NzTreeComponent.ngAcceptInputType_nzCheckable;
/** @type {?} */
NzTreeComponent.ngAcceptInputType_nzAsyncData;
/** @type {?} */
NzTreeComponent.ngAcceptInputType_nzDraggable;
/** @type {?} */
NzTreeComponent.ngAcceptInputType_nzMultiple;
/** @type {?} */
NzTreeComponent.prototype.nzShowIcon;
/** @type {?} */
NzTreeComponent.prototype.nzHideUnMatched;
/** @type {?} */
NzTreeComponent.prototype.nzBlockNode;
/** @type {?} */
NzTreeComponent.prototype.nzExpandAll;
/** @type {?} */
NzTreeComponent.prototype.nzSelectMode;
/** @type {?} */
NzTreeComponent.prototype.nzCheckStrictly;
/** @type {?} */
NzTreeComponent.prototype.nzShowExpand;
/** @type {?} */
NzTreeComponent.prototype.nzShowLine;
/** @type {?} */
NzTreeComponent.prototype.nzCheckable;
/** @type {?} */
NzTreeComponent.prototype.nzAsyncData;
/** @type {?} */
NzTreeComponent.prototype.nzDraggable;
/** @type {?} */
NzTreeComponent.prototype.nzMultiple;
/** @type {?} */
NzTreeComponent.prototype.nzExpandedIcon;
/** @type {?} */
NzTreeComponent.prototype.nzVirtualItemSize;
/** @type {?} */
NzTreeComponent.prototype.nzVirtualMaxBufferPx;
/** @type {?} */
NzTreeComponent.prototype.nzVirtualMinBufferPx;
/** @type {?} */
NzTreeComponent.prototype.nzVirtualHeight;
/** @type {?} */
NzTreeComponent.prototype.nzTreeTemplate;
/** @type {?} */
NzTreeComponent.prototype.nzBeforeDrop;
/** @type {?} */
NzTreeComponent.prototype.nzData;
/** @type {?} */
NzTreeComponent.prototype.nzExpandedKeys;
/** @type {?} */
NzTreeComponent.prototype.nzSelectedKeys;
/** @type {?} */
NzTreeComponent.prototype.nzCheckedKeys;
/** @type {?} */
NzTreeComponent.prototype.nzSearchValue;
/** @type {?} */
NzTreeComponent.prototype.nzSearchFunc;
/** @type {?} */
NzTreeComponent.prototype.nzTreeTemplateChild;
/** @type {?} */
NzTreeComponent.prototype.cdkVirtualScrollViewport;
/** @type {?} */
NzTreeComponent.prototype.nzFlattenNodes;
/** @type {?} */
NzTreeComponent.prototype.beforeInit;
/** @type {?} */
NzTreeComponent.prototype.nzExpandedKeysChange;
/** @type {?} */
NzTreeComponent.prototype.nzSelectedKeysChange;
/** @type {?} */
NzTreeComponent.prototype.nzCheckedKeysChange;
/** @type {?} */
NzTreeComponent.prototype.nzSearchValueChange;
/** @type {?} */
NzTreeComponent.prototype.nzClick;
/** @type {?} */
NzTreeComponent.prototype.nzDblClick;
/** @type {?} */
NzTreeComponent.prototype.nzContextMenu;
/** @type {?} */
NzTreeComponent.prototype.nzCheckBoxChange;
/** @type {?} */
NzTreeComponent.prototype.nzExpandChange;
/** @type {?} */
NzTreeComponent.prototype.nzOnDragStart;
/** @type {?} */
NzTreeComponent.prototype.nzOnDragEnter;
/** @type {?} */
NzTreeComponent.prototype.nzOnDragOver;
/** @type {?} */
NzTreeComponent.prototype.nzOnDragLeave;
/** @type {?} */
NzTreeComponent.prototype.nzOnDrop;
/** @type {?} */
NzTreeComponent.prototype.nzOnDragEnd;
/** @type {?} */
NzTreeComponent.prototype.HIDDEN_STYLE;
/** @type {?} */
NzTreeComponent.prototype.destroy$;
/** @type {?} */
NzTreeComponent.prototype.onChange;
/** @type {?} */
NzTreeComponent.prototype.onTouched;
/** @type {?} */
NzTreeComponent.prototype.nzConfigService;
/**
* @type {?}
* @private
*/
NzTreeComponent.prototype.cdr;
/** @type {?} */
NzTreeComponent.prototype.noAnimation;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy16b3Jyby1hbnRkL3RyZWUvIiwic291cmNlcyI6WyJ0cmVlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBUUEsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbEUsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osVUFBVSxFQUNWLElBQUksRUFDSixLQUFLLEVBSUwsUUFBUSxFQUNSLE1BQU0sRUFFTixRQUFRLEVBQ1IsV0FBVyxFQUNYLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6RSxPQUFPLEVBQ0wsZUFBZSxFQUdmLFVBQVUsRUFDVixpQkFBaUIsRUFDakIsNkJBQTZCLEVBSTlCLE1BQU0seUJBQXlCLENBQUM7QUFFakMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBRS9DLE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxrQkFBcUMsRUFBRSxXQUEwQjtJQUNwRyxPQUFPLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENB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LHdDQUF5RTs7SUFDekUsdUNBQXdFOztJQUN4RSx3Q0FBeUU7O0lBQ3pFLG1DQUFvRTs7SUFDcEUsc0NBQXVFOztJQUV2RSx1Q0FTRTs7SUFFRixtQ0FBeUI7O0lBRXpCLG1DQUFxRDs7SUFDckQsb0NBQW1DOztJQXFNakMsMENBQXVDOzs7OztJQUN2Qyw4QkFBOEI7O0lBQzlCLHNDQUErRCIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgeyBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSG9zdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZSxcbiAgU2tpcFNlbGYsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyB0cmVlQ29sbGFwc2VNb3Rpb24gfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvYW5pbWF0aW9uJztcbmltcG9ydCB7IE56Q29uZmlnU2VydmljZSwgV2l0aENvbmZpZyB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS9jb25maWcnO1xuaW1wb3J0IHsgTnpOb0FuaW1hdGlvbkRpcmVjdGl2ZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS9uby1hbmltYXRpb24nO1xuaW1wb3J0IHtcbiAgZmxhdHRlblRyZWVEYXRhLFxuICBOekZvcm1hdEJlZm9yZURyb3BFdmVudCxcbiAgTnpGb3JtYXRFbWl0RXZlbnQsXG4gIE56VHJlZUJhc2UsXG4gIE56VHJlZUJhc2VTZXJ2aWNlLFxuICBOelRyZWVIaWdoZXJPcmRlclNlcnZpY2VUb2tlbixcbiAgTnpUcmVlTm9kZSxcbiAgTnpUcmVlTm9kZUtleSxcbiAgTnpUcmVlTm9kZU9wdGlvbnNcbn0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3RyZWUnO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBOelNhZmVBbnkgfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvdHlwZXMnO1xuaW1wb3J0IHsgSW5wdXRCb29sZWFuIH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3V0aWwnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTnpUcmVlU2VydmljZSB9IGZyb20gJy4vdHJlZS5zZXJ2aWNlJztcblxuZXhwb3J0IGZ1bmN0aW9uIE56VHJlZVNlcnZpY2VGYWN0b3J5KGhpZ2hlck9yZGVyU2VydmljZTogTnpUcmVlQmFzZVNlcnZpY2UsIHRyZWVTZXJ2aWNlOiBOelRyZWVTZXJ2aWNlKTogTnpUcmVlQmFzZVNlcnZpY2Uge1xuICByZXR1cm4gaGlnaGVyT3JkZXJTZXJ2aWNlID8gaGlnaGVyT3JkZXJTZXJ2aWNlIDogdHJlZVNlcnZpY2U7XG59XG5cbmNvbnN0IE5aX0NPTkZJR19DT01QT05FTlRfTkFNRSA9ICd0cmVlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnotdHJlZScsXG4gIGV4cG9ydEFzOiAnbnpUcmVlJyxcbiAgYW5pbWF0aW9uczogW3RyZWVDb2xsYXBzZU1vdGlvbl0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiByb2xlPVwidHJlZVwiPlxuICAgICAgPGlucHV0IFtuZ1N0eWxlXT1cIkhJRERFTl9TVFlMRVwiIC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBbY2xhc3MuYW50LXNlbGVjdC10cmVlLWxpc3RdPVwibnpTZWxlY3RNb2RlXCIgW2NsYXNzLmFudC10cmVlLWxpc3RdPVwibnpTZWxlY3RNb2RlXCI+XG4gICAgICA8ZGl2PlxuICAgICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XG4gICAgICAgICAgKm5nSWY9XCJuelZpcnR1YWxIZWlnaHRcIlxuICAgICAgICAgIFtjbGFzcy5hbnQtc2VsZWN0LXRyZWUtbGlzdC1ob2xkZXItaW5uZXJdPVwibnpTZWxlY3RNb2RlXCJcbiAgICAgICAgICBbY2xhc3MuYW50LXRyZWUtbGlzdC1ob2xkZXItaW5uZXJdPVwibnpTZWxlY3RNb2RlXCJcbiAgICAgICAgICBbaXRlbVNpemVdPVwibnpWaXJ0dWFsSXRlbVNpemVcIlxuICAgICAgICAgIFttaW5CdWZmZXJQeF09XCJuelZpcnR1YWxNaW5CdWZmZXJQeFwiXG4gICAgICAgICAgW21heEJ1ZmZlclB4XT1cIm56VmlydHVhbE1heEJ1ZmZlclB4XCJcbiAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cIm56VmlydHVhbEhlaWdodFwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpjZGtWaXJ0dWFsRm9yPVwibGV0IG5vZGUgb2YgbnpGbGF0dGVuTm9kZXM7IHRyYWNrQnk6IHRyYWNrQnlGbGF0dGVuTm9kZVwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm5vZGVUZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogbm9kZSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwiIW56VmlydHVhbEhlaWdodFwiXG4gICAgICAgICAgW2NsYXNzLmFudC1zZWxlY3QtdHJlZS1saXN0LWhvbGRlci1pbm5lcl09XCJuelNlbGVjdE1vZGVcIlxuICAgICAgICAgIFtjbGFzcy5hbnQtdHJlZS1saXN0LWhvbGRlci1pbm5lcl09XCJuelNlbGVjdE1vZGVcIlxuICAgICAgICAgIFtALmRpc2FibGVkXT1cImJlZm9yZUluaXQgfHwgbm9BbmltYXRpb24/Lm56Tm9BbmltYXRpb25cIlxuICAgICAgICAgIFtuek5vQW5pbWF0aW9uXT1cIm5vQW5pbWF0aW9uPy5uek5vQW5pbWF0aW9uXCJcbiAgICAgICAgICBbQHRyZWVDb2xsYXBzZU1vdGlvbl09XCJuekZsYXR0ZW5Ob2Rlcy5sZW5ndGhcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbm9kZSBvZiBuekZsYXR0ZW5Ob2RlczsgdHJhY2tCeTogdHJhY2tCeUZsYXR0ZW5Ob2RlXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibm9kZVRlbXBsYXRlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBub2RlIH1cIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxuZy10ZW1wbGF0ZSAjbm9kZVRlbXBsYXRlIGxldC10cmVlTm9kZT5cbiAgICAgIDxuei10cmVlLW5vZGVcbiAgICAgICAgW2ljb25dPVwidHJlZU5vZGUuaWNvblwiXG4gICAgICAgIFt0aXRsZV09XCJ0cmVlTm9kZS50aXRsZVwiXG4gICAgICAgIFtpc0xvYWRpbmddPVwidHJlZU5vZGUuaXNMb2FkaW5nXCJcbiAgICAgICAgW2lzU2VsZWN0ZWRdPVwidHJlZU5vZGUuaXNTZWxlY3RlZFwiXG4gICAgICAgIFtpc0Rpc2FibGVkXT1cInRyZWVOb2RlLmlzRGlzYWJsZWRcIlxuICAgICAgICBbaXNNYXRjaGVkXT1cInRyZWVOb2RlLmlzTWF0Y2hlZFwiXG4gICAgICAgIFtpc0V4cGFuZGVkXT1cInRyZWVOb2RlLmlzRXhwYW5kZWRcIlxuICAgICAgICBbaXNMZWFmXT1cInRyZWVOb2RlLmlzTGVhZlwiXG4gICAgICAgIFtpc1N0YXJ0XT1cInRyZWVOb2RlLmlzU3RhcnRcIlxuICAgICAgICBbaXNFbmRdPVwidHJlZU5vZGUuaXNFbmRcIlxuICAgICAgICBbaXNDaGVja2VkXT1cInRyZWVOb2RlLmlzQ2hlY2tlZFwiXG4gICAgICAgIFtpc0hhbGZDaGVja2VkXT1cInRyZWVOb2RlLmlzSGFsZkNoZWNrZWRcIlxuICAgICAgICBbaXNEaXNhYmxlQ2hlY2tib3hdPVwidHJlZU5vZGUuaXNEaXNhYmxlQ2hlY2tib3hcIlxuICAgICAgICBbaXNTZWxlY3RhYmxlXT1cInRyZWVOb2RlLmlzU2VsZWN0YWJsZVwiXG4gICAgICAgIFtjYW5IaWRlXT1cInRyZWVOb2RlLmNhbkhpZGVcIlxuICAgICAgICBbbnpUcmVlTm9kZV09XCJ0cmVlTm9kZVwiXG4gICAgICAgIFtuelNlbGVjdE1vZGVdPVwibnpTZWxlY3RNb2RlXCJcbiAgICAgICAgW256U2hvd0xpbmVdPVwibnpTaG93TGluZVwiXG4gICAgICAgIFtuekV4cGFuZGVkSWNvbl09XCJuekV4cGFuZGVkSWNvblwiXG4gICAgICAgIFtuekRyYWdnYWJsZV09XCJuekRyYWdnYWJsZVwiXG4gICAgICAgIFtuekNoZWNrYWJsZV09XCJuekNoZWNrYWJsZVwiXG4gICAgICAgIFtuelNob3dFeHBhbmRdPVwibnpTaG93RXhwYW5kXCJcbiAgICAgICAgW256QXN5bmNEYXRhXT1cIm56QXN5bmNEYXRhXCJcbiAgICAgICAgW256U2VhcmNoVmFsdWVdPVwibnpTZWFyY2hWYWx1ZVwiXG4gICAgICAgIFtuekhpZGVVbk1hdGNoZWRdPVwibnpIaWRlVW5NYXRjaGVkXCJcbiAgICAgICAgW256QmVmb3JlRHJvcF09XCJuekJlZm9yZURyb3BcIlxuICAgICAgICBbbnpTaG93SWNvbl09XCJuelNob3dJY29uXCJcbiAgICAgICAgW256VHJlZVRlbXBsYXRlXT1cIm56VHJlZVRlbXBsYXRlIHx8IG56VHJlZVRlbXBsYXRlQ2hpbGRcIlxuICAgICAgICAobnpFeHBhbmRDaGFuZ2UpPVwiZXZlbnRUcmlnZ2VyQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgKG56Q2xpY2spPVwiZXZlbnRUcmlnZ2VyQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgKG56RGJsQ2xpY2spPVwiZXZlbnRUcmlnZ2VyQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgKG56Q29udGV4dE1lbnUpPVwiZXZlbnRUcmlnZ2VyQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgKG56Q2hlY2tCb3hDaGFuZ2UpPVwiZXZlbnRUcmlnZ2VyQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgKG56T25EcmFnU3RhcnQpPVwiZXZlbnRUcmlnZ2VyQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgKG56T25EcmFnRW50ZXIpPVwiZXZlbnRUcmlnZ2VyQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgKG56T25EcmFnT3Zlcik9XCJldmVudFRyaWdnZXJDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAobnpPbkRyYWdMZWF2ZSk9XCJldmVudFRyaWdnZXJDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAobnpPbkRyYWdFbmQpPVwiZXZlbnRUcmlnZ2VyQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgKG56T25Ecm9wKT1cImV2ZW50VHJpZ2dlckNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICA8L256LXRyZWUtbm9kZT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICBgLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAgTnpUcmVlU2VydmljZSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOelRyZWVCYXNlU2VydmljZSxcbiAgICAgIHVzZUZhY3Rvcnk6IE56VHJlZVNlcnZpY2VGYWN0b3J5LFxuICAgICAgZGVwczogW1tuZXcgU2tpcFNlbGYoKSwgbmV3IE9wdGlvbmFsKCksIE56VHJlZUhpZ2hlck9yZGVyU2VydmljZVRva2VuXSwgTnpUcmVlU2VydmljZV1cbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTnpUcmVlQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5hbnQtc2VsZWN0LXRyZWVdJzogYG56U2VsZWN0TW9kZWAsXG4gICAgJ1tjbGFzcy5hbnQtc2VsZWN0LXRyZWUtc2hvdy1saW5lXSc6IGBuelNlbGVjdE1vZGUgJiYgbnpTaG93TGluZWAsXG4gICAgJ1tjbGFzcy5hbnQtc2VsZWN0LXRyZWUtaWNvbi1oaWRlXSc6IGBuelNlbGVjdE1vZGUgJiYgIW56U2hvd0ljb25gLFxuICAgICdbY2xhc3MuYW50LXNlbGVjdC10cmVlLWJsb2NrLW5vZGVdJzogYG56U2VsZWN0TW9kZSAmJiBuekJsb2NrTm9kZWAsXG4gICAgJ1tjbGFzcy5hbnQtdHJlZV0nOiBgIW56U2VsZWN0TW9kZWAsXG4gICAgJ1tjbGFzcy5hbnQtdHJlZS1zaG93LWxpbmVdJzogYCFuelNlbGVjdE1vZGUgJiYgbnpTaG93TGluZWAsXG4gICAgJ1tjbGFzcy5hbnQtdHJlZS1pY29uLWhpZGVdJzogYCFuelNlbGVjdE1vZGUgJiYgIW56U2hvd0ljb25gLFxuICAgICdbY2xhc3MuYW50LXRyZWUtYmxvY2stbm9kZV0nOiBgIW56U2VsZWN0TW9kZSAmJiBuekJsb2NrTm9kZWAsXG4gICAgJ1tjbGFzcy5kcmFnZ2FibGUtdHJlZV0nOiBgbnpEcmFnZ2FibGVgXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgTnpUcmVlQ29tcG9uZW50IGV4dGVuZHMgTnpUcmVlQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX256U2hvd0ljb246IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX256SGlkZVVuTWF0Y2hlZDogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbnpCbG9ja05vZGU6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX256RXhwYW5kQWxsOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9uelNlbGVjdE1vZGU6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX256Q2hlY2tTdHJpY3RseTogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbnpTaG93RXhwYW5kOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9uelNob3dMaW5lOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9uekNoZWNrYWJsZTogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbnpBc3luY0RhdGE6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX256RHJhZ2dhYmxlOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9uek11bHRpcGxlOiBCb29sZWFuSW5wdXQ7XG5cbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIEBXaXRoQ29uZmlnKE5aX0NPTkZJR19DT01QT05FTlRfTkFNRSkgbnpTaG93SWNvbjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgQFdpdGhDb25maWcoTlpfQ09ORklHX0NPTVBPTkVOVF9OQU1FKSBuekhpZGVVbk1hdGNoZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIEBXaXRoQ29uZmlnKE5aX0NPTkZJR19DT01QT05FTlRfTkFNRSkgbnpCbG9ja05vZGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIG56RXhwYW5kQWxsID0gZmFsc2U7XG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBuelNlbGVjdE1vZGUgPSBmYWxzZTtcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIG56Q2hlY2tTdHJpY3RseSA9IGZhbHNlO1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgbnpTaG93RXhwYW5kOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIG56U2hvd0xpbmUgPSBmYWxzZTtcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIG56Q2hlY2thYmxlID0gZmFsc2U7XG4gIEBJbnB1