@covalent/echarts
Version:
Teradata UI Platform Echarts Module
233 lines • 27.3 kB
JavaScript
import { Component, Input, ChangeDetectionStrategy, forwardRef, } from '@angular/core';
import { assignDefined, TdChartOptionsService, TdSeriesDirective, } from '@covalent/echarts/base';
import * as ecStat from 'echarts-stat';
import * as i0 from "@angular/core";
import * as i1 from "@covalent/echarts/base";
export class TdChartSeriesClusteringComponent extends TdSeriesDirective {
constructor(_optionsService) {
super('scatter', _optionsService);
}
ngOnChanges() {
if (this.originalData) {
this.data = this.originalData;
}
else {
this.originalData = this.data;
}
const output = this.data;
const result = ecStat.clustering.hierarchicalKMeans(output, this.clusterCount, false);
const series = [];
for (let i = 0; i < result.centroids.length; i++) {
series.push({
name: `cluster ${i + 1}`,
type: 'scatter',
data: result.pointsInCluster[i],
markPoint: this.showCentroids
? {
symbolSize: 30,
itemStyle: {
normal: {
opacity: 0.8,
},
},
data: [
{
coord: result.centroids[i],
label: { show: false },
name: `centroid ${i + 1}`,
value: result.centroids[i],
},
],
}
: {},
});
}
this.optionsService.setOption('series', series);
this.data = [];
this.setOptions();
}
getConfig() {
return {
clusterCount: this.clusterCount,
showCentroids: this.showCentroids,
bottom: this.bottom,
calendarIndex: this.calendarIndex,
circular: this.circular,
coordinateSystem: this.coordinateSystem,
cursor: this.cursor,
edgeLabel: this.edgeLabel,
edges: this.edges,
edgeSymbol: this.edgeSymbol,
edgeSymbolSize: this.edgeSymbolSize,
emphasis: this.emphasis,
focusNodeAdjacency: this.focusNodeAdjacency,
geoIndex: this.geoIndex,
height: this.height,
hoverAnimation: this.hoverAnimation,
itemStyle: this.itemStyle,
label: this.label,
left: this.left,
legendHoverLink: this.legendHoverLink,
lineStyle: this.lineStyle,
links: this.links,
markArea: this.markArea,
markLine: this.markLine,
markPoint: this.markPoint,
nodes: this.nodes,
nodeScaleRatio: this.nodeScaleRatio,
polarIndex: this.polarIndex,
right: this.right,
silent: this.silent,
symbol: this.symbol,
symbolKeepAspect: this.symbolKeepAspect,
symbolOffset: this.symbolOffset,
symbolRotate: this.symbolRotate,
symbolSize: this.symbolSize,
top: this.top,
width: this.width,
xAxisIndex: this.xAxisIndex,
yAxisIndex: this.yAxisIndex,
z: this.z,
zlevel: this.zlevel,
};
}
setOptions() {
const config = assignDefined(this._state, {
id: this.id,
type: this.type,
name: this.name,
color: this.color,
data: this.data,
animation: this.animation,
animationThreshold: this.animationThreshold,
animationDuration: this.animationDuration,
animationEasing: this.animationEasing,
animationDelay: this.animationDelay,
animationDurationUpdate: this.animationDurationUpdate,
animationEasingUpdate: this.animationEasingUpdate,
animationDelayUpdate: this.animationDelayUpdate,
tooltip: this.tooltip,
}, this.getConfig(), this._options, this.config ? this.config : {});
this.optionsService.setArrayOption('scatter', config);
}
}
TdChartSeriesClusteringComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TdChartSeriesClusteringComponent, deps: [{ token: i1.TdChartOptionsService }], target: i0.ɵɵFactoryTarget.Component });
TdChartSeriesClusteringComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TdChartSeriesClusteringComponent, selector: "td-chart-series[td-clustering]", inputs: { config: "config", id: "id", name: "name", color: "color", data: "data", animation: "animation", animationThreshold: "animationThreshold", animationDuration: "animationDuration", animationEasing: "animationEasing", animationDelay: "animationDelay", animationDurationUpdate: "animationDurationUpdate", animationEasingUpdate: "animationEasingUpdate", animationDelayUpdate: "animationDelayUpdate", tooltip: "tooltip", clusterCount: "clusterCount", showCentroids: "showCentroids", bottom: "bottom", calendarIndex: "calendarIndex", circular: "circular", coordinateSystem: "coordinateSystem", cursor: "cursor", edgeLabel: "edgeLabel", edges: "edges", edgeSymbol: "edgeSymbol", edgeSymbolSize: "edgeSymbolSize", emphasis: "emphasis", focusNodeAdjacency: "focusNodeAdjacency", geoIndex: "geoIndex", height: "height", hoverAnimation: "hoverAnimation", itemStyle: "itemStyle", label: "label", left: "left", legendHoverLink: "legendHoverLink", lineStyle: "lineStyle", links: "links", markArea: "markArea", markLine: "markLine", markPoint: "markPoint", nodes: "nodes", nodeScaleRatio: "nodeScaleRatio", polarIndex: "polarIndex", right: "right", silent: "silent", symbol: "symbol", symbolKeepAspect: "symbolKeepAspect", symbolOffset: "symbolOffset", symbolRotate: "symbolRotate", symbolSize: "symbolSize", top: "top", width: "width", xAxisIndex: "xAxisIndex", yAxisIndex: "yAxisIndex", z: "z", zlevel: "zlevel" }, providers: [
{
provide: TdSeriesDirective,
useExisting: forwardRef(() => TdChartSeriesClusteringComponent),
},
], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TdChartSeriesClusteringComponent, decorators: [{
type: Component,
args: [{
selector: 'td-chart-series[td-clustering]',
template: '',
changeDetection: ChangeDetectionStrategy.OnPush,
inputs: [
'config',
'id',
'name',
'color',
'data',
'animation',
'animationThreshold',
'animationDuration',
'animationEasing',
'animationDelay',
'animationDurationUpdate',
'animationEasingUpdate',
'animationDelayUpdate',
'tooltip',
],
providers: [
{
provide: TdSeriesDirective,
useExisting: forwardRef(() => TdChartSeriesClusteringComponent),
},
],
}]
}], ctorParameters: function () { return [{ type: i1.TdChartOptionsService }]; }, propDecorators: { clusterCount: [{
type: Input
}], showCentroids: [{
type: Input
}], bottom: [{
type: Input
}], calendarIndex: [{
type: Input
}], circular: [{
type: Input
}], coordinateSystem: [{
type: Input
}], cursor: [{
type: Input
}], edgeLabel: [{
type: Input
}], edges: [{
type: Input
}], edgeSymbol: [{
type: Input
}], edgeSymbolSize: [{
type: Input
}], emphasis: [{
type: Input
}], focusNodeAdjacency: [{
type: Input
}], geoIndex: [{
type: Input
}], height: [{
type: Input
}], hoverAnimation: [{
type: Input
}], itemStyle: [{
type: Input
}], label: [{
type: Input
}], left: [{
type: Input
}], legendHoverLink: [{
type: Input
}], lineStyle: [{
type: Input
}], links: [{
type: Input
}], markArea: [{
type: Input
}], markLine: [{
type: Input
}], markPoint: [{
type: Input
}], nodes: [{
type: Input
}], nodeScaleRatio: [{
type: Input
}], polarIndex: [{
type: Input
}], right: [{
type: Input
}], silent: [{
type: Input
}], symbol: [{
type: Input
}], symbolKeepAspect: [{
type: Input
}], symbolOffset: [{
type: Input
}], symbolRotate: [{
type: Input
}], symbolSize: [{
type: Input
}], top: [{
type: Input
}], width: [{
type: Input
}], xAxisIndex: [{
type: Input
}], yAxisIndex: [{
type: Input
}], z: [{
type: Input
}], zlevel: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2x1c3RlcmluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItZWNoYXJ0cy9jbHVzdGVyaW5nL3NyYy9jbHVzdGVyaW5nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCx1QkFBdUIsRUFDdkIsVUFBVSxHQUVYLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDTCxhQUFhLEVBVWIscUJBQXFCLEVBR3JCLGlCQUFpQixHQUNsQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sS0FBSyxNQUFNLE1BQU0sY0FBYyxDQUFDOzs7QUFrRnZDLE1BQU0sT0FBTyxnQ0FDWCxTQUFRLGlCQUFpQjtJQThDekIsWUFBWSxlQUFzQztRQUNoRCxLQUFLLENBQUMsU0FBUyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFUSxXQUFXO1FBQ2xCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7U0FDL0I7YUFBTTtZQUNMLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztTQUMvQjtRQUNELE1BQU0sTUFBTSxHQUFRLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDOUIsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FDakQsTUFBTSxFQUNOLElBQUksQ0FBQyxZQUFZLEVBQ2pCLEtBQUssQ0FDTixDQUFDO1FBQ0YsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBRWxCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNoRCxNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUNW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O2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLENBQUM7c0JBQVQsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgZm9yd2FyZFJlZixcbiAgT25DaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgYXNzaWduRGVmaW5lZCxcbiAgSVRkRWRnZUxhYmVsLFxuICBJVGRFbXBoYXNpcyxcbiAgSVRkSXRlbVN0eWxlLFxuICBJVGRMYWJlbCxcbiAgSVRkTGluZVN0eWxlLFxuICBJVGRNYXJrQXJlYSxcbiAgSVRkTWFya0xpbmUsXG4gIElUZE1hcmtQb2ludCxcbiAgSVRkU2VyaWVzLFxuICBUZENoYXJ0T3B0aW9uc1NlcnZpY2UsXG4gIFRkQ29vcmRpbmF0ZVN5c3RlbSxcbiAgVGRNYXJrUG9pbnRTeW1ib2wsXG4gIFRkU2VyaWVzRGlyZWN0aXZlLFxufSBmcm9tICdAY292YWxlbnQvZWNoYXJ0cy9iYXNlJztcbmltcG9ydCAqIGFzIGVjU3RhdCBmcm9tICdlY2hhcnRzLXN0YXQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElUZENsdXN0ZXJpbmdTZXJpZXMgZXh0ZW5kcyBJVGRTZXJpZXMge1xuICBjbHVzdGVyQ291bnQ6IG51bWJlcjtcbiAgc2hvd0NlbnRyb2lkczogYm9vbGVhbjtcbiAgYW5pbWF0aW9uPzogYm9vbGVhbjtcbiAgYW5pbWF0aW9uRGVsYXk/OiBudW1iZXIgfCBGdW5jdGlvbjtcbiAgYW5pbWF0aW9uRGVsYXlVcGRhdGU/OiBudW1iZXIgfCBGdW5jdGlvbjtcbiAgYW5pbWF0aW9uRHVyYXRpb24/OiBudW1iZXIgfCBGdW5jdGlvbjtcbiAgYW5pbWF0aW9uRHVyYXRpb25VcGRhdGU/OiBudW1iZXIgfCBGdW5jdGlvbjtcbiAgYW5pbWF0aW9uRWFzaW5nPzogc3RyaW5nO1xuICBhbmltYXRpb25FYXNpbmdVcGRhdGU/OiBzdHJpbmc7XG4gIGFuaW1hdGlvblRocmVzaG9sZD86IG51bWJlcjtcbiAgYm90dG9tPzogc3RyaW5nIHwgbnVtYmVyO1xuICBjYWxlbmRhckluZGV4PzogbnVtYmVyO1xuICBjaXJjdWxhcj86IG9iamVjdDtcbiAgY29vcmRpbmF0ZVN5c3RlbT86IFRkQ29vcmRpbmF0ZVN5c3RlbTtcbiAgY3Vyc29yPzogc3RyaW5nO1xuICBlZGdlTGFiZWw/OiBJVGRFZGdlTGFiZWw7XG4gIGVkZ2VzPzogYW55W107XG4gIGVkZ2VTeW1ib2w/OiBhbnlbXSB8IHN0cmluZztcbiAgZWRnZVN5bWJvbFNpemU/OiBudW1iZXI7XG4gIGVtcGhhc2lzPzogSVRkRW1waGFzaXM7XG4gIGZvY3VzTm9kZUFkamFjZW5jeT86IGJvb2xlYW47XG4gIGdlb0luZGV4PzogbnVtYmVyO1xuICBoZWlnaHQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gIGhvdmVyQW5pbWF0aW9uPzogYm9vbGVhbjtcbiAgaXRlbVN0eWxlPzogSVRkSXRlbVN0eWxlO1xuICBsYWJlbD86IElUZExhYmVsO1xuICBsZWZ0Pzogc3RyaW5nIHwgbnVtYmVyO1xuICBsZWdlbmRIb3Zlckxpbms/OiBib29sZWFuO1xuICBsaW5lU3R5bGU/OiBJVGRMaW5lU3R5bGU7XG4gIGxpbmtzPzogYW55W107XG4gIG1hcmtBcmVhPzogSVRkTWFya0FyZWE7XG4gIG1hcmtMaW5lPzogSVRkTWFya0xpbmU7XG4gIG1hcmtQb2ludD86IElUZE1hcmtQb2ludDtcbiAgbm9kZXM/OiBhbnlbXTtcbiAgbm9kZVNjYWxlUmF0aW8/OiBib29sZWFuO1xuICBwb2xhckluZGV4PzogbnVtYmVyO1xuICByaWdodD86IHN0cmluZyB8IG51bWJlcjtcbiAgc2lsZW50PzogYm9vbGVhbjtcbiAgc3ltYm9sPzogVGRNYXJrUG9pbnRTeW1ib2wgfCBzdHJpbmc7XG4gIHN5bWJvbEtlZXBBc3BlY3Q/OiBib29sZWFuO1xuICBzeW1ib2xPZmZzZXQ/OiBhbnlbXTtcbiAgc3ltYm9sUm90YXRlPzogbnVtYmVyO1xuICBzeW1ib2xTaXplPzogbnVtYmVyIHwgYW55W10gfCBGdW5jdGlvbjtcbiAgdG9wPzogc3RyaW5nIHwgbnVtYmVyO1xuICB3aWR0aD86IHN0cmluZyB8IG51bWJlcjtcbiAgeEF4aXNJbmRleD86IG51bWJlcjtcbiAgeUF4aXNJbmRleD86IG51bWJlcjtcbiAgej86IG51bWJlcjtcbiAgemxldmVsPzogbnVtYmVyO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0ZC1jaGFydC1zZXJpZXNbdGQtY2x1c3RlcmluZ10nLFxuICB0ZW1wbGF0ZTogJycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbnB1dHM6IFtcbiAgICAnY29uZmlnJyxcbiAgICAnaWQnLFxuICAgICduYW1lJyxcbiAgICAnY29sb3InLFxuICAgICdkYXRhJyxcblxuICAgICdhbmltYXRpb24nLFxuICAgICdhbmltYXRpb25UaHJlc2hvbGQnLFxuICAgICdhbmltYXRpb25EdXJhdGlvbicsXG4gICAgJ2FuaW1hdGlvbkVhc2luZycsXG4gICAgJ2FuaW1hdGlvbkRlbGF5JyxcbiAgICAnYW5pbWF0aW9uRHVyYXRpb25VcGRhdGUnLFxuICAgICdhbmltYXRpb25FYXNpbmdVcGRhdGUnLFxuICAgICdhbmltYXRpb25EZWxheVVwZGF0ZScsXG4gICAgJ3Rvb2x0aXAnLFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBUZFNlcmllc0RpcmVjdGl2ZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRkQ2hhcnRTZXJpZXNDbHVzdGVyaW5nQ29tcG9uZW50KSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBUZENoYXJ0U2VyaWVzQ2x1c3RlcmluZ0NvbXBvbmVudFxuICBleHRlbmRzIFRkU2VyaWVzRGlyZWN0aXZlXG4gIGltcGxlbWVudHMgSVRkQ2x1c3RlcmluZ1NlcmllcywgT25DaGFuZ2VzXG57XG4gIEBJbnB1dCgpIGNsdXN0ZXJDb3VudCE6IG51bWJlcjtcbiAgQElucHV0KCkgc2hvd0NlbnRyb2lkcyE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGJvdHRvbT86IHN0cmluZyB8IG51bWJlcjtcbiAgQElucHV0KCkgY2FsZW5kYXJJbmRleD86IG51bWJlcjtcbiAgQElucHV0KCkgY2lyY3VsYXI/OiBvYmplY3Q7XG4gIEBJbnB1dCgpIGNvb3JkaW5hdGVTeXN0ZW0/OiBUZENvb3JkaW5hdGVTeXN0ZW07XG4gIEBJbnB1dCgpIGN1cnNvcj86IHN0cmluZztcbiAgQElucHV0KCkgZWRnZUxhYmVsPzogSVRkRWRnZUxhYmVsO1xuICBASW5wdXQoKSBlZGdlcz86IGFueVtdO1xuICBASW5wdXQoKSBlZGdlU3ltYm9sPzogYW55W10gfCBzdHJpbmc7XG4gIEBJbnB1dCgpIGVkZ2VTeW1ib2xTaXplPzogbnVtYmVyO1xuICBASW5wdXQoKSBlbXBoYXNpcz86IElUZEVtcGhhc2lzO1xuICBASW5wdXQoKSBmb2N1c05vZGVBZGphY2VuY3k/OiBib29sZWFuO1xuICBASW5wdXQoKSBnZW9JbmRleD86IG51bWJlcjtcbiAgQElucHV0KCkgaGVpZ2h0Pzogc3RyaW5nIHwgbnVtYmVyO1xuICBASW5wdXQoKSBob3ZlckFuaW1hdGlvbj86IGJvb2xlYW47XG4gIEBJbnB1dCgpIGl0ZW1TdHlsZT86IElUZEl0ZW1TdHlsZTtcbiAgQElucHV0KCkgbGFiZWw/OiBJVGRMYWJlbDtcbiAgQElucHV0KCkgbGVmdD86IHN0cmluZyB8IG51bWJlcjtcbiAgQElucHV0KCkgbGVnZW5kSG92ZXJMaW5rPzogYm9vbGVhbjtcbiAgQElucHV0KCkgbGluZVN0eWxlPzogSVRkTGluZVN0eWxlO1xuICBASW5wdXQoKSBsaW5rcz86IGFueVtdO1xuICBASW5wdXQoKSBtYXJrQXJlYT86IElUZE1hcmtBcmVhO1xuICBASW5wdXQoKSBtYXJrTGluZT86IElUZE1hcmtMaW5lO1xuICBASW5wdXQoKSBtYXJrUG9pbnQ/OiBJVGRNYXJrUG9pbnQ7XG4gIEBJbnB1dCgpIG5vZGVzPzogYW55W107XG4gIEBJbnB1dCgpIG5vZGVTY2FsZVJhdGlvPzogYm9vbGVhbjtcbiAgQElucHV0KCkgcG9sYXJJbmRleD86IG51bWJlcjtcbiAgQElucHV0KCkgcmlnaHQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gIEBJbnB1dCgpIHNpbGVudD86IGJvb2xlYW47XG4gIEBJbnB1dCgpIHN5bWJvbD86IFRkTWFya1BvaW50U3ltYm9sIHwgc3RyaW5nO1xuICBASW5wdXQoKSBzeW1ib2xLZWVwQXNwZWN0PzogYm9vbGVhbjtcbiAgQElucHV0KCkgc3ltYm9sT2Zmc2V0PzogYW55W107XG4gIEBJbnB1dCgpIHN5bWJvbFJvdGF0ZT86IG51bWJlcjtcbiAgQElucHV0KCkgc3ltYm9sU2l6ZT86IG51bWJlciB8IGFueVtdIHwgRnVuY3Rpb247XG4gIEBJbnB1dCgpIHRvcD86IHN0cmluZyB8IG51bWJlcjtcbiAgQElucHV0KCkgd2lkdGg/OiBzdHJpbmcgfCBudW1iZXI7XG4gIEBJbnB1dCgpIHhBeGlzSW5kZXg/OiBudW1iZXI7XG4gIEBJbnB1dCgpIHlBeGlzSW5kZXg/OiBudW1iZXI7XG4gIEBJbnB1dCgpIHo/OiBudW1iZXI7XG4gIEBJbnB1dCgpIHpsZXZlbD86IG51bWJlcjtcbiAgb3JpZ2luYWxEYXRhOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoX29wdGlvbnNTZXJ2aWNlOiBUZENoYXJ0T3B0aW9uc1NlcnZpY2UpIHtcbiAgICBzdXBlcignc2NhdHRlcicsIF9vcHRpb25zU2VydmljZSk7XG4gIH1cblxuICBvdmVycmlkZSBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vcmlnaW5hbERhdGEpIHtcbiAgICAgIHRoaXMuZGF0YSA9IHRoaXMub3JpZ2luYWxEYXRhO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9yaWdpbmFsRGF0YSA9IHRoaXMuZGF0YTtcbiAgICB9XG4gICAgY29uc3Qgb3V0cHV0OiBhbnkgPSB0aGlzLmRhdGE7XG4gICAgY29uc3QgcmVzdWx0ID0gZWNTdGF0LmNsdXN0ZXJpbmcuaGllcmFyY2hpY2FsS01lYW5zKFxuICAgICAgb3V0cHV0LFxuICAgICAgdGhpcy5jbHVzdGVyQ291bnQsXG4gICAgICBmYWxzZVxuICAgICk7XG4gICAgY29uc3Qgc2VyaWVzID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc3VsdC5jZW50cm9pZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHNlcmllcy5wdXNoKHtcbiAgICAgICAgbmFtZTogYGNsdXN0ZXIgJHtpICsgMX1gLFxuICAgICAgICB0eXBlOiAnc2NhdHRlcicsXG4gICAgICAgIGRhdGE6IHJlc3VsdC5wb2ludHNJbkNsdXN0ZXJbaV0sXG4gICAgICAgIG1hcmtQb2ludDogdGhpcy5zaG93Q2VudHJvaWRzXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIHN5bWJvbFNpemU6IDMwLFxuICAgICAgICAgICAgICBpdGVtU3R5bGU6IHtcbiAgICAgICAgICAgICAgICBub3JtYWw6IHtcbiAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuOCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBkYXRhOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgY29vcmQ6IHJlc3VsdC5jZW50cm9pZHNbaV0sXG4gICAgICAgICAgICAgICAgICBsYWJlbDogeyBzaG93OiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgbmFtZTogYGNlbnRyb2lkICR7aSArIDF9YCxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiByZXN1bHQuY2VudHJvaWRzW2ldLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB7fSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLm9wdGlvbnNTZXJ2aWNlLnNldE9wdGlvbignc2VyaWVzJywgc2VyaWVzKTtcbiAgICB0aGlzLmRhdGEgPSBbXTtcbiAgICB0aGlzLnNldE9wdGlvbnMoKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGdldENvbmZpZygpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBjbHVzdGVyQ291bnQ6IHRoaXMuY2x1c3RlckNvdW50LFxuICAgICAgc2hvd0NlbnRyb2lkczogdGhpcy5zaG93Q2VudHJvaWRzLFxuICAgICAgYm90dG9tOiB0aGlzLmJvdHRvbSxcbiAgICAgIGNhbGVuZGFySW5kZXg6IHRoaXMuY2FsZW5kYXJJbmRleCxcbiAgICAgIGNpcmN1bGFyOiB0aGlzLmNpcmN1bGFyLFxuICAgICAgY29vcmRpbmF0ZVN5c3RlbTogdGhpcy5jb29yZGluYXRlU3lzdGVtLFxuICAgICAgY3Vyc29yOiB0aGlzLmN1cnNvcixcbiAgICAgIGVkZ2VMYWJlbDogdGhpcy5lZGdlTGFiZWwsXG4gICAgICBlZGdlczogdGhpcy5lZGdlcyxcbiAgICAgIGVkZ2VTeW1ib2w6IHRoaXMuZWRnZVN5bWJvbCxcbiAgICAgIGVkZ2VTeW1ib2xTaXplOiB0aGlzLmVkZ2VTeW1ib2xTaXplLFxuICAgICAgZW1waGFzaXM6IHRoaXMuZW1waGFzaXMsXG4gICAgICBmb2N1c05vZGVBZGphY2VuY3k6IHRoaXMuZm9jdXNOb2RlQWRqYWNlbmN5LFxuICAgICAgZ2VvSW5kZXg6IHRoaXMuZ2VvSW5kZXgsXG4gICAgICBoZWlnaHQ6IHRoaXMuaGVpZ2h0LFxuICAgICAgaG92ZXJBbmltYXRpb246IHRoaXMuaG92ZXJBbmltYXRpb24sXG4gICAgICBpdGVtU3R5bGU6IHRoaXMuaXRlbVN0eWxlLFxuICAgICAgbGFiZWw6IHRoaXMubGFiZWwsXG4gICAgICBsZWZ0OiB0aGlzLmxlZnQsXG4gICAgICBsZWdlbmRIb3Zlckxpbms6IHRoaXMubGVnZW5kSG92ZXJMaW5rLFxuICAgICAgbGluZVN0eWxlOiB0aGlzLmxpbmVTdHlsZSxcbiAgICAgIGxpbmtzOiB0aGlzLmxpbmtzLFxuICAgICAgbWFya0FyZWE6IHRoaXMubWFya0FyZWEsXG4gICAgICBtYXJrTGluZTogdGhpcy5tYXJrTGluZSxcbiAgICAgIG1hcmtQb2ludDogdGhpcy5tYXJrUG9pbnQsXG4gICAgICBub2RlczogdGhpcy5ub2RlcyxcbiAgICAgIG5vZGVTY2FsZVJhdGlvOiB0aGlzLm5vZGVTY2FsZVJhdGlvLFxuICAgICAgcG9sYXJJbmRleDogdGhpcy5wb2xhckluZGV4LFxuICAgICAgcmlnaHQ6IHRoaXMucmlnaHQsXG4gICAgICBzaWxlbnQ6IHRoaXMuc2lsZW50LFxuICAgICAgc3ltYm9sOiB0aGlzLnN5bWJvbCxcbiAgICAgIHN5bWJvbEtlZXBBc3BlY3Q6IHRoaXMuc3ltYm9sS2VlcEFzcGVjdCxcbiAgICAgIHN5bWJvbE9mZnNldDogdGhpcy5zeW1ib2xPZmZzZXQsXG4gICAgICBzeW1ib2xSb3RhdGU6IHRoaXMuc3ltYm9sUm90YXRlLFxuICAgICAgc3ltYm9sU2l6ZTogdGhpcy5zeW1ib2xTaXplLFxuICAgICAgdG9wOiB0aGlzLnRvcCxcbiAgICAgIHdpZHRoOiB0aGlzLndpZHRoLFxuICAgICAgeEF4aXNJbmRleDogdGhpcy54QXhpc0luZGV4LFxuICAgICAgeUF4aXNJbmRleDogdGhpcy55QXhpc0luZGV4LFxuICAgICAgejogdGhpcy56LFxuICAgICAgemxldmVsOiB0aGlzLnpsZXZlbCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRPcHRpb25zKCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbmZpZzogYW55ID0gYXNzaWduRGVmaW5lZChcbiAgICAgIHRoaXMuX3N0YXRlLFxuICAgICAge1xuICAgICAgICBpZDogdGhpcy5pZCxcbiAgICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICAgIGNvbG9yOiB0aGlzLmNvbG9yLFxuICAgICAgICBkYXRhOiB0aGlzLmRhdGEsXG4gICAgICAgIGFuaW1hdGlvbjogdGhpcy5hbmltYXRpb24sXG4gICAgICAgIGFuaW1hdGlvblRocmVzaG9sZDogdGhpcy5hbmltYXRpb25UaHJlc2hvbGQsXG4gICAgICAgIGFuaW1hdGlvbkR1cmF0aW9uOiB0aGlzLmFuaW1hdGlvbkR1cmF0aW9uLFxuICAgICAgICBhbmltYXRpb25FYXNpbmc6IHRoaXMuYW5pbWF0aW9uRWFzaW5nLFxuICAgICAgICBhbmltYXRpb25EZWxheTogdGhpcy5hbmltYXRpb25EZWxheSxcbiAgICAgICAgYW5pbWF0aW9uRHVyYXRpb25VcGRhdGU6IHRoaXMuYW5pbWF0aW9uRHVyYXRpb25VcGRhdGUsXG4gICAgICAgIGFuaW1hdGlvbkVhc2luZ1VwZGF0ZTogdGhpcy5hbmltYXRpb25FYXNpbmdVcGRhdGUsXG4gICAgICAgIGFuaW1hdGlvbkRlbGF5VXBkYXRlOiB0aGlzLmFuaW1hdGlvbkRlbGF5VXBkYXRlLFxuICAgICAgICB0b29sdGlwOiB0aGlzLnRvb2x0aXAsXG4gICAgICB9LFxuICAgICAgdGhpcy5nZXRDb25maWcoKSxcbiAgICAgIHRoaXMuX29wdGlvbnMsXG4gICAgICB0aGlzLmNvbmZpZyA/IHRoaXMuY29uZmlnIDoge31cbiAgICApO1xuICAgIHRoaXMub3B0aW9uc1NlcnZpY2Uuc2V0QXJyYXlPcHRpb24oJ3NjYXR0ZXInLCBjb25maWcpO1xuICB9XG59XG4iXX0=