UNPKG

@syncfusion/ej2-angular-charts

Version:

Feature-rich chart control with built-in support for over 25 chart types, technical indictors, trendline, zooming, tooltip, selection, crosshair and trackball. for Angular

58 lines 31.5 kB
import { Directive, ContentChildren, ContentChild } from '@angular/core'; import { ComplexBase, ArrayBase, setValue } from '@syncfusion/ej2-angular-base'; import { StripLinesDirective } from './striplines.directive'; import { MultiLevelLabelsDirective } from './multilevellabels.directive'; import * as i0 from "@angular/core"; let input = ['border', 'coefficient', 'columnIndex', 'crossesAt', 'crossesInAxis', 'crosshairTooltip', 'description', 'desiredIntervals', 'edgeLabelPlacement', 'enableAutoIntervalOnZooming', 'enableScrollbarOnZooming', 'enableTrim', 'enableWrap', 'interval', 'intervalType', 'isIndexed', 'isInversed', 'labelFormat', 'labelIntersectAction', 'labelPadding', 'labelPlacement', 'labelPosition', 'labelRotation', 'labelStyle', 'lineBreakAlignment', 'lineStyle', 'logBase', 'majorGridLines', 'majorTickLines', 'maximum', 'maximumLabelWidth', 'maximumLabels', 'minimum', 'minorGridLines', 'minorTickLines', 'minorTicksPerInterval', 'multiLevelLabels', 'name', 'opposedPosition', 'placeNextToAxisLine', 'plotOffset', 'plotOffsetBottom', 'plotOffsetLeft', 'plotOffsetRight', 'plotOffsetTop', 'rangePadding', 'rowIndex', 'scrollbarSettings', 'skeleton', 'skeletonType', 'span', 'startAngle', 'startFromZero', 'stripLines', 'tabIndex', 'tickPosition', 'title', 'titlePadding', 'titleRotation', 'titleStyle', 'valueType', 'visible', 'zoomFactor', 'zoomPosition']; let outputs = []; /** * Axis Directive * ```html * <e-axes><e-axis></e-axis></e-axes> * ``` */ export class AxisDirective extends ComplexBase { constructor(viewContainerRef) { super(); this.viewContainerRef = viewContainerRef; this.tags = ['stripLines', 'multiLevelLabels']; setValue('currentInstance', this, this.viewContainerRef); this.registerEvents(outputs); this.directivePropList = input; } } AxisDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: AxisDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); AxisDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: AxisDirective, selector: "e-axes>e-axis", inputs: { border: "border", coefficient: "coefficient", columnIndex: "columnIndex", crossesAt: "crossesAt", crossesInAxis: "crossesInAxis", crosshairTooltip: "crosshairTooltip", description: "description", desiredIntervals: "desiredIntervals", edgeLabelPlacement: "edgeLabelPlacement", enableAutoIntervalOnZooming: "enableAutoIntervalOnZooming", enableScrollbarOnZooming: "enableScrollbarOnZooming", enableTrim: "enableTrim", enableWrap: "enableWrap", interval: "interval", intervalType: "intervalType", isIndexed: "isIndexed", isInversed: "isInversed", labelFormat: "labelFormat", labelIntersectAction: "labelIntersectAction", labelPadding: "labelPadding", labelPlacement: "labelPlacement", labelPosition: "labelPosition", labelRotation: "labelRotation", labelStyle: "labelStyle", lineBreakAlignment: "lineBreakAlignment", lineStyle: "lineStyle", logBase: "logBase", majorGridLines: "majorGridLines", majorTickLines: "majorTickLines", maximum: "maximum", maximumLabelWidth: "maximumLabelWidth", maximumLabels: "maximumLabels", minimum: "minimum", minorGridLines: "minorGridLines", minorTickLines: "minorTickLines", minorTicksPerInterval: "minorTicksPerInterval", multiLevelLabels: "multiLevelLabels", name: "name", opposedPosition: "opposedPosition", placeNextToAxisLine: "placeNextToAxisLine", plotOffset: "plotOffset", plotOffsetBottom: "plotOffsetBottom", plotOffsetLeft: "plotOffsetLeft", plotOffsetRight: "plotOffsetRight", plotOffsetTop: "plotOffsetTop", rangePadding: "rangePadding", rowIndex: "rowIndex", scrollbarSettings: "scrollbarSettings", skeleton: "skeleton", skeletonType: "skeletonType", span: "span", startAngle: "startAngle", startFromZero: "startFromZero", stripLines: "stripLines", tabIndex: "tabIndex", tickPosition: "tickPosition", title: "title", titlePadding: "titlePadding", titleRotation: "titleRotation", titleStyle: "titleStyle", valueType: "valueType", visible: "visible", zoomFactor: "zoomFactor", zoomPosition: "zoomPosition" }, queries: [{ propertyName: "childStripLines", first: true, predicate: StripLinesDirective, descendants: true }, { propertyName: "childMultiLevelLabels", first: true, predicate: MultiLevelLabelsDirective, descendants: true }], usesInheritance: true, ngImport: i0 }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: AxisDirective, decorators: [{ type: Directive, args: [{ selector: 'e-axes>e-axis', inputs: input, outputs: outputs, queries: { childStripLines: new ContentChild(StripLinesDirective), childMultiLevelLabels: new ContentChild(MultiLevelLabelsDirective) } }] }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; } }); /** * Axis Array Directive * @private */ export class AxesDirective extends ArrayBase { constructor() { super('axes'); } } AxesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: AxesDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); AxesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: AxesDirective, selector: "ejs-chart>e-axes", queries: [{ propertyName: "children", predicate: AxisDirective }], usesInheritance: true, ngImport: i0 }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: AxesDirective, decorators: [{ type: Directive, args: [{ selector: 'ejs-chart>e-axes', queries: { children: new ContentChildren(AxisDirective) }, }] }], ctorParameters: function () { return []; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXhlcy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY2hhcnQvYXhlcy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBb0IsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUVoRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUFFekUsSUFBSSxLQUFLLEdBQWEsQ0FBQyxRQUFRLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSw2QkFBNkIsRUFBRSwwQkFBMEIsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsc0JBQXNCLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsdUJBQXVCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLHFCQUFxQixFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxjQUFjLENBQUMsQ0FBQztBQUN0aUMsSUFBSSxPQUFPLEdBQWEsRUFBRSxDQUFDO0FBQzNCOzs7OztHQUtHO0FBVUgsTUFBTSxPQUFPLGFBQWMsU0FBUSxXQUEwQjtJQThXekQsWUFBb0IsZ0JBQWlDO1FBQ2pELEtBQUssRUFBRSxDQUFDO1FBRFEscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQXpXOUMsU0FBSSxHQUFhLENBQUMsWUFBWSxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUEyV3ZELFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBQ25DLENBQUM7OzBHQW5YUSxhQUFhOzhGQUFiLGFBQWEsNGdFQUpnQixtQkFBbUIsd0ZBQ2IseUJBQXlCOzJGQUc1RCxhQUFhO2tCQVR6QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxlQUFlO29CQUN6QixNQUFNLEVBQUUsS0FBSztvQkFDYixPQUFPLEVBQUUsT0FBTztvQkFDaEIsT0FBTyxFQUFFO3dCQUNMLGVBQWUsRUFBRSxJQUFJLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQzt3QkFDdEQscUJBQXFCLEVBQUUsSUFBSSxZQUFZLENBQUMseUJBQXlCLENBQUM7cUJBQ3JFO2lCQUNKOztBQXVYRDs7O0dBR0c7QUFPSCxNQUFNLE9BQU8sYUFBYyxTQUFRLFNBQXdCO0lBQ3ZEO1FBQ0ksS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xCLENBQUM7OzBHQUhRLGFBQWE7OEZBQWIsYUFBYSxpRkFIWSxhQUFhOzJGQUd0QyxhQUFhO2tCQU56QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLE9BQU8sRUFBRTt3QkFDTCxRQUFRLEVBQUUsSUFBSSxlQUFlLENBQUMsYUFBYSxDQUFDO3FCQUMvQztpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgVmlld0NvbnRhaW5lclJlZiwgQ29udGVudENoaWxkcmVuLCBDb250ZW50Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbXBsZXhCYXNlLCBBcnJheUJhc2UsIHNldFZhbHVlIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItYmFzZSc7XG5cbmltcG9ydCB7IFN0cmlwTGluZXNEaXJlY3RpdmUgfSBmcm9tICcuL3N0cmlwbGluZXMuZGlyZWN0aXZlJztcbmltcG9ydCB7IE11bHRpTGV2ZWxMYWJlbHNEaXJlY3RpdmUgfSBmcm9tICcuL211bHRpbGV2ZWxsYWJlbHMuZGlyZWN0aXZlJztcblxubGV0IGlucHV0OiBzdHJpbmdbXSA9IFsnYm9yZGVyJywgJ2NvZWZmaWNpZW50JywgJ2NvbHVtbkluZGV4JywgJ2Nyb3NzZXNBdCcsICdjcm9zc2VzSW5BeGlzJywgJ2Nyb3NzaGFpclRvb2x0aXAnLCAnZGVzY3JpcHRpb24nLCAnZGVzaXJlZEludGVydmFscycsICdlZGdlTGFiZWxQbGFjZW1lbnQnLCAnZW5hYmxlQXV0b0ludGVydmFsT25ab29taW5nJywgJ2VuYWJsZVNjcm9sbGJhck9uWm9vbWluZycsICdlbmFibGVUcmltJywgJ2VuYWJsZVdyYXAnLCAnaW50ZXJ2YWwnLCAnaW50ZXJ2YWxUeXBlJywgJ2lzSW5kZXhlZCcsICdpc0ludmVyc2VkJywgJ2xhYmVsRm9ybWF0JywgJ2xhYmVsSW50ZXJzZWN0QWN0aW9uJywgJ2xhYmVsUGFkZGluZycsICdsYWJlbFBsYWNlbWVudCcsICdsYWJlbFBvc2l0aW9uJywgJ2xhYmVsUm90YXRpb24nLCAnbGFiZWxTdHlsZScsICdsaW5lQnJlYWtBbGlnbm1lbnQnLCAnbGluZVN0eWxlJywgJ2xvZ0Jhc2UnLCAnbWFqb3JHcmlkTGluZXMnLCAnbWFqb3JUaWNrTGluZXMnLCAnbWF4aW11bScsICdtYXhpbXVtTGFiZWxXaWR0aCcsICdtYXhpbXVtTGFiZWxzJywgJ21pbmltdW0nLCAnbWlub3JHcmlkTGluZXMnLCAnbWlub3JUaWNrTGluZXMnLCAnbWlub3JUaWNrc1BlckludGVydmFsJywgJ211bHRpTGV2ZWxMYWJlbHMnLCAnbmFtZScsICdvcHBvc2VkUG9zaXRpb24nLCAncGxhY2VOZXh0VG9BeGlzTGluZScsICdwbG90T2Zmc2V0JywgJ3Bsb3RPZmZzZXRCb3R0b20nLCAncGxvdE9mZnNldExlZnQnLCAncGxvdE9mZnNldFJpZ2h0JywgJ3Bsb3RPZmZzZXRUb3AnLCAncmFuZ2VQYWRkaW5nJywgJ3Jvd0luZGV4JywgJ3Njcm9sbGJhclNldHRpbmdzJywgJ3NrZWxldG9uJywgJ3NrZWxldG9uVHlwZScsICdzcGFuJywgJ3N0YXJ0QW5nbGUnLCAnc3RhcnRGcm9tWmVybycsICdzdHJpcExpbmVzJywgJ3RhYkluZGV4JywgJ3RpY2tQb3NpdGlvbicsICd0aXRsZScsICd0aXRsZVBhZGRpbmcnLCAndGl0bGVSb3RhdGlvbicsICd0aXRsZVN0eWxlJywgJ3ZhbHVlVHlwZScsICd2aXNpYmxlJywgJ3pvb21GYWN0b3InLCAnem9vbVBvc2l0aW9uJ107XG5sZXQgb3V0cHV0czogc3RyaW5nW10gPSBbXTtcbi8qKlxuICogQXhpcyBEaXJlY3RpdmVcbiAqIGBgYGh0bWxcbiAqIDxlLWF4ZXM+PGUtYXhpcz48L2UtYXhpcz48L2UtYXhlcz5cbiAqIGBgYFxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ2UtYXhlcz5lLWF4aXMnLFxuICAgIGlucHV0czogaW5wdXQsXG4gICAgb3V0cHV0czogb3V0cHV0cywgICAgXG4gICAgcXVlcmllczoge1xuICAgICAgICBjaGlsZFN0cmlwTGluZXM6IG5ldyBDb250ZW50Q2hpbGQoU3RyaXBMaW5lc0RpcmVjdGl2ZSksIFxuICAgICAgICBjaGlsZE11bHRpTGV2ZWxMYWJlbHM6IG5ldyBDb250ZW50Q2hpbGQoTXVsdGlMZXZlbExhYmVsc0RpcmVjdGl2ZSlcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEF4aXNEaXJlY3RpdmUgZXh0ZW5kcyBDb21wbGV4QmFzZTxBeGlzRGlyZWN0aXZlPiB7XG4gICAgcHVibGljIGRpcmVjdGl2ZVByb3BMaXN0OiBhbnk7XG5cdFxuICAgIHB1YmxpYyBjaGlsZFN0cmlwTGluZXM6IGFueTtcbiAgICBwdWJsaWMgY2hpbGRNdWx0aUxldmVsTGFiZWxzOiBhbnk7XG4gICAgcHVibGljIHRhZ3M6IHN0cmluZ1tdID0gWydzdHJpcExpbmVzJywgJ211bHRpTGV2ZWxMYWJlbHMnXTtcbiAgICAvKiogXG4gICAgICogQ29uZmlndXJlcyB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgYm9yZGVyIGFyb3VuZCBtdWx0aS1sZXZlbCBsYWJlbHMsIGluY2x1ZGluZyB0aGUgY29sb3IsIHdpZHRoLCBhbmQgdHlwZSBvZiB0aGUgYm9yZGVyLlxuICAgICAqL1xuICAgIHB1YmxpYyBib3JkZXI6IGFueTtcbiAgICAvKiogXG4gICAgICogVGhlIGBjb2VmZmljaWVudGAgdmFsdWUgYWRqdXN0cyB0aGUgc2l6ZSBvZiB0aGUgcG9sYXIgcmFkYXIgY2hhcnQncyByYWRpdXMuIEEgaGlnaGVyIHZhbHVlIGluY3JlYXNlcyB0aGUgcmFkaXVzIHNpemUsIHdoaWxlIGEgc21hbGxlciB2YWx1ZSBkZWNyZWFzZXMgaXQuXG4gICAgICogQGRlZmF1bHQgMTAwXG4gICAgICovXG4gICAgcHVibGljIGNvZWZmaWNpZW50OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgaW5kZXggb2YgdGhlIGNvbHVtbiB3aGVyZSB0aGUgYXhpcyBpcyBhc3NvY2lhdGVkIHdoZW4gdGhlIGNoYXJ0IGFyZWEgaXMgZGl2aWRlZCBpbnRvIG11bHRpcGxlIHBsb3QgYXJlYXMgdXNpbmcgYGNvbHVtbnNgLiBcbiAgICAgKiBcbiAgICAgKiBAZGVmYXVsdCAwXG4gICAgICovXG4gICAgcHVibGljIGNvbHVtbkluZGV4OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgdmFsdWUgYXQgd2hpY2ggdGhlIGF4aXMgbGluZSBpbnRlcnNlY3RzIHdpdGggdGhlIHZlcnRpY2FsIGF4aXMgb3IgdmljZSB2ZXJzYS5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIGNyb3NzZXNBdDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBTcGVjaWZpZXMgdGhlIG5hbWUgb2YgdGhlIGF4aXMgd2l0aCB3aGljaCB0aGUgYXhpcyBsaW5lIHNob3VsZCBpbnRlcnNlY3QuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBjcm9zc2VzSW5BeGlzOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIE9wdGlvbnMgdG8gY3VzdG9taXplIHRoZSBhcHBlYXJhbmNlIGFuZCBiZWhhdmlvciBvZiB0aGUgY3Jvc3NoYWlyIHRvb2x0aXAgdGhhdCBhcHBlYXJzIHdoZW4gaG92ZXJpbmcgb3ZlciB0aGUgY2hhcnQuXG4gICAgICovXG4gICAgcHVibGljIGNyb3NzaGFpclRvb2x0aXA6IGFueTtcbiAgICAvKiogXG4gICAgICogQSBkZXNjcmlwdGlvbiBmb3IgdGhlIGF4aXMgdGhhdCBwcm92aWRlcyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IGl0cyBjb250ZW50IGZvciBzY3JlZW4gcmVhZGVycy5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIGRlc2NyaXB0aW9uOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSBgZGVzaXJlZEludGVydmFsc2AgcHJvcGVydHkgYWxsb3dzIHRoZSBheGlzIHRvIGNhbGN1bGF0ZSBpbnRlcnZhbHMgdGhhdCBhcmUgcm91Z2hseSBlcXVhbCB0byB0aGUgc3BlY2lmaWVkIG51bWJlciwgcHJvbW90aW5nIGEgbW9yZSByZWFkYWJsZSBhbmQgZXZlbmx5IHNwYWNlZCBheGlzLlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKiBAYXNwZGVmYXVsdHZhbHVlaWdub3JlIFxuICAgICAqL1xuICAgIHB1YmxpYyBkZXNpcmVkSW50ZXJ2YWxzOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSBgZWRnZUxhYmVsUGxhY2VtZW50YCBwcm9wZXJ0eSBlbnN1cmVzIHRoYXQgbGFiZWxzIHBvc2l0aW9uZWQgYXQgdGhlIGVkZ2VzIG9mIHRoZSBheGlzIGRvIG5vdCBvdmVybGFwIHdpdGggdGhlIGF4aXMgYm91bmRhcmllcyBvciBvdGhlciBjaGFydCBlbGVtZW50cywgb2ZmZXJpbmcgc2V2ZXJhbCBvcHRpb25zIHRvIGltcHJvdmUgY2hhcnQgcmVhZGFiaWxpdHkgYnkgbWFuYWdpbmcgZWRnZSBsYWJlbHMgZWZmZWN0aXZlbHkuIFxuICAgICAqIEF2YWlsYWJsZSBvcHRpb25zIGFyZTogXG4gICAgICogKiBOb25lOiBObyBhY3Rpb24gd2lsbCBiZSBwZXJmb3JtZWQgb24gZWRnZSBsYWJlbHMuIFxuICAgICAqICogSGlkZTogRWRnZSBsYWJlbHMgd2lsbCBiZSBoaWRkZW4gdG8gcHJldmVudCBvdmVybGFwLiBcbiAgICAgKiAqIFNoaWZ0OiBFZGdlIGxhYmVscyB3aWxsIGJlIHNoaWZ0ZWQgdG8gZml0IHdpdGhpbiB0aGUgYXhpcyBib3VuZHMgd2l0aG91dCBvdmVybGFwcGluZy5cbiAgICAgKiBAZGVmYXVsdCAnU2hpZnQnXG4gICAgICovXG4gICAgcHVibGljIGVkZ2VMYWJlbFBsYWNlbWVudDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJZiBzZXQgdG8gdHJ1ZSwgdGhlIGF4aXMgaW50ZXJ2YWwgd2lsbCBiZSBjYWxjdWxhdGVkIGF1dG9tYXRpY2FsbHkgYmFzZWQgb24gdGhlIHpvb21lZCByYW5nZS5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgcHVibGljIGVuYWJsZUF1dG9JbnRlcnZhbE9uWm9vbWluZzogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJZiBzZXQgdG8gdHJ1ZSwgYSBzY3JvbGxiYXIgd2lsbCBhcHBlYXIgd2hpbGUgem9vbWluZyB0byBoZWxwIG5hdmlnYXRlIHRocm91Z2ggdGhlIHpvb21lZCBjb250ZW50LlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBwdWJsaWMgZW5hYmxlU2Nyb2xsYmFyT25ab29taW5nOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIElmIHNldCB0byB0cnVlLCBheGlzIGxhYmVscyB3aWxsIGJlIHRyaW1tZWQgYmFzZWQgb24gdGhlIGBtYXhpbXVtTGFiZWxXaWR0aGAuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgZW5hYmxlVHJpbTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBTcGVjaWZpZXMgd2hldGhlciB0aGUgYXhpcyBsYWJlbHMgc2hvdWxkIGJlIHdyYXBwZWQgYmFzZWQgb24gdGhlIHNwZWNpZmllZCBgbWF4aW11bUxhYmVsV2lkdGhgLiBcbiAgICAgKiBXaGVuIHNldCB0byBgdHJ1ZWAsIHRoZSBheGlzIGxhYmVscyB3aWxsIGF1dG9tYXRpY2FsbHkgd3JhcCB0byBmaXQgd2l0aGluIHRoZSBhdmFpbGFibGUgd2lkdGggZGVmaW5lZCBieSBgbWF4aW11bUxhYmVsV2lkdGhgLlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcHVibGljIGVuYWJsZVdyYXA6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBpbnRlcnZhbCBmb3IgdGhlIGF4aXMuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqIEBhc3BkZWZhdWx0dmFsdWVpZ25vcmUgXG4gICAgICovXG4gICAgcHVibGljIGludGVydmFsOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSBgaW50ZXJ2YWxUeXBlYCBwcm9wZXJ0eSBkZWZpbmVzIGhvdyB0aGUgaW50ZXJ2YWxzIG9uIGEgZGF0ZS10aW1lIGF4aXMgYXJlIGNhbGN1bGF0ZWQgYW5kIGRpc3BsYXllZC4gXG4gICAgICogQXZhaWxhYmxlIG9wdGlvbnMgYXJlOiBcbiAgICAgKiAqIEF1dG86IEF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lcyB0aGUgaW50ZXJ2YWwgdHlwZSBiYXNlZCBvbiB0aGUgZGF0YSBhbmQgY2hhcnQgc2V0dGluZ3MuIFxuICAgICAqICogWWVhcnM6IFNldHMgdGhlIGludGVydmFsIG9mIHRoZSBheGlzIGluIHllYXJzLiBcbiAgICAgKiAqIE1vbnRoczogU2V0cyB0aGUgaW50ZXJ2YWwgb2YgdGhlIGF4aXMgaW4gbW9udGhzLiBcbiAgICAgKiAqIERheXM6IFNldHMgdGhlIGludGVydmFsIG9mIHRoZSBheGlzIGluIGRheXMuIFxuICAgICAqICogSG91cnM6IFNldHMgdGhlIGludGVydmFsIG9mIHRoZSBheGlzIGluIGhvdXJzLiBcbiAgICAgKiAqIE1pbnV0ZXM6IFNldHMgdGhlIGludGVydmFsIG9mIHRoZSBheGlzIGluIG1pbnV0ZXMuXG4gICAgICogQGRlZmF1bHQgJ0F1dG8nXG4gICAgICovXG4gICAgcHVibGljIGludGVydmFsVHlwZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJZiBzZXQgdG8gdHJ1ZSwgZGF0YSBwb2ludHMgYXJlIHJlbmRlcmVkIGJhc2VkIG9uIHRoZWlyIGluZGV4LlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcHVibGljIGlzSW5kZXhlZDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJZiBzZXQgdG8gdHJ1ZSwgdGhlIGF4aXMgd2lsbCBiZSByZW5kZXJlZCBpbiBhbiBpbnZlcnNlZCBtYW5uZXIuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNJbnZlcnNlZDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBVc2VkIHRvIGZvcm1hdCB0aGUgYXhpcyBsYWJlbC4gVGhpcyBwcm9wZXJ0eSBhY2NlcHRzIGdsb2JhbCBzdHJpbmcgZm9ybWF0cyBzdWNoIGFzIGBDYCwgYG4xYCwgYFBgLCBldGMuIFxuICAgICAqIEl0IGFsc28gYWNjZXB0cyBwbGFjZWhvbGRlcnMgbGlrZSBge3ZhbHVlfcKwQ2AsIHdoZXJlIGB7dmFsdWV9YCByZXByZXNlbnRzIHRoZSBheGlzIGxhYmVsIChlLmcuLCAyMMKwQykuXG4gICAgICogQGRlZmF1bHQgJydcbiAgICAgKi9cbiAgICBwdWJsaWMgbGFiZWxGb3JtYXQ6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBhY3Rpb24gdG8gdGFrZSB3aGVuIGF4aXMgbGFiZWxzIGludGVyc2VjdCB3aXRoIGVhY2ggb3RoZXIuIFxuICAgICAqIFRoZSBhdmFpbGFibGUgb3B0aW9ucyBhcmU6IFxuICAgICAqICogTm9uZTogU2hvd3MgYWxsIGxhYmVscyB3aXRob3V0IGFueSBtb2RpZmljYXRpb24uIFxuICAgICAqICogSGlkZTogSGlkZXMgdGhlIGxhYmVsIGlmIGl0IGludGVyc2VjdHMgd2l0aCBhbm90aGVyIGxhYmVsLiBcbiAgICAgKiAqIFRyaW06IFRyaW1zIHRoZSBsYWJlbCB0ZXh0IHRvIGZpdCB3aXRoaW4gdGhlIGF2YWlsYWJsZSBzcGFjZS4gXG4gICAgICogKiBXcmFwOiBXcmFwcyB0aGUgbGFiZWwgdGV4dCB0byBmaXQgd2l0aGluIHRoZSBhdmFpbGFibGUgc3BhY2UuIFxuICAgICAqICogTXVsdGlwbGVSb3dzOiBEaXNwbGF5cyB0aGUgbGFiZWwgdGV4dCBpbiBtdWx0aXBsZSByb3dzIHRvIGF2b2lkIGludGVyc2VjdGlvbi4gXG4gICAgICogKiBSb3RhdGU0NTogUm90YXRlcyB0aGUgbGFiZWwgdGV4dCBieSA0NSBkZWdyZWVzIHRvIGF2b2lkIGludGVyc2VjdGlvbi4gXG4gICAgICogKiBSb3RhdGU5MDogUm90YXRlcyB0aGUgbGFiZWwgdGV4dCBieSA5MCBkZWdyZWVzIHRvIGF2b2lkIGludGVyc2VjdGlvbi5cbiAgICAgKiBAZGVmYXVsdCBUcmltXG4gICAgICovXG4gICAgcHVibGljIGxhYmVsSW50ZXJzZWN0QWN0aW9uOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSBgbGFiZWxQYWRkaW5nYCBwcm9wZXJ0eSBhZGp1c3RzIHRoZSBkaXN0YW5jZSB0byBlbnN1cmUgYSBjbGVhciBzcGFjZSBiZXR3ZWVuIHRoZSBheGlzIGxhYmVscyBhbmQgdGhlIGF4aXMgbGluZS5cbiAgICAgKiBAZGVmYXVsdCA1XG4gICAgICovXG4gICAgcHVibGljIGxhYmVsUGFkZGluZzogYW55O1xuICAgIC8qKiBcbiAgICAgKiBUaGUgYGxhYmVsUGxhY2VtZW50YCBwcm9wZXJ0eSBjb250cm9scyB3aGVyZSB0aGUgY2F0ZWdvcnkgYXhpcyBsYWJlbHMgYXJlIHJlbmRlcmVkIGluIHJlbGF0aW9uIHRvIHRoZSBheGlzIHRpY2tzLiBcbiAgICAgKiBBdmFpbGFibGUgb3B0aW9ucyBhcmU6IFxuICAgICAqICogQmV0d2VlblRpY2tzOiBSZW5kZXJzIHRoZSBsYWJlbCBiZXR3ZWVuIHRoZSBheGlzIHRpY2tzLiBcbiAgICAgKiAqIE9uVGlja3M6IFJlbmRlcnMgdGhlIGxhYmVsIGRpcmVjdGx5IG9uIHRoZSBheGlzIHRpY2tzLlxuICAgICAqIEBkZWZhdWx0ICdCZXR3ZWVuVGlja3MnXG4gICAgICovXG4gICAgcHVibGljIGxhYmVsUGxhY2VtZW50OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSBgbGFiZWxQb3NpdGlvbmAgcHJvcGVydHkgZGV0ZXJtaW5lcyB3aGVyZSB0aGUgYXhpcyBsYWJlbHMgYXJlIHJlbmRlcmVkIGluIHJlbGF0aW9uIHRvIHRoZSBheGlzIGxpbmUuIFxuICAgICAqIEF2YWlsYWJsZSBvcHRpb25zIGFyZTogXG4gICAgICogKiBJbnNpZGU6IFJlbmRlcnMgdGhlIGxhYmVscyBpbnNpZGUgdGhlIGF4aXMgbGluZS4gXG4gICAgICogKiBPdXRzaWRlOiBSZW5kZXJzIHRoZSBsYWJlbHMgb3V0c2lkZSB0aGUgYXhpcyBsaW5lLlxuICAgICAqIEBkZWZhdWx0ICdPdXRzaWRlJ1xuICAgICAqL1xuICAgIHB1YmxpYyBsYWJlbFBvc2l0aW9uOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSBhbmdsZSB0byB3aGljaCB0aGUgYXhpcyBsYWJlbCBnZXRzIHJvdGF0ZWQuXG4gICAgICogQGRlZmF1bHQgMFxuICAgICAqL1xuICAgIHB1YmxpYyBsYWJlbFJvdGF0aW9uOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoaXMgcHJvcGVydHkgYWxsb3dzIGRlZmluaW5nIHZhcmlvdXMgZm9udCBzZXR0aW5ncyB0byBjb250cm9sIGhvdyB0aGUgbGFiZWxzIGFyZSBkaXNwbGF5ZWQgb24gdGhlIGF4aXMuXG4gICAgICovXG4gICAgcHVibGljIGxhYmVsU3R5bGU6IGFueTtcbiAgICAvKiogXG4gICAgICogRGV0ZXJtaW5lcyB0aGUgYWxpZ25tZW50IG9mIGxhYmVscyB3aGVuIGEgbGluZSBicmVhayBvY2N1cnMgaW4gdGhlIGF4aXMgbGFiZWxzLlxuICAgICAqIEBkZWZhdWx0ICdDZW50ZXInXG4gICAgICovXG4gICAgcHVibGljIGxpbmVCcmVha0FsaWdubWVudDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBPcHRpb25zIGZvciBjdXN0b21pemluZyB0aGUgYXhpcyBsaW5lcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgbGluZVN0eWxlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgYmFzZSB2YWx1ZSBmb3IgYSBsb2dhcml0aG1pYyBheGlzLiBcbiAgICAgKiA+IE5vdGUgdGhhdCBgdmFsdWVUeXBlYCBtdXN0IGJlIHNldCB0byBgTG9nYXJpdGhtaWNgIGZvciB0aGlzIGZlYXR1cmUgdG8gd29yay5cbiAgICAgKiBAZGVmYXVsdCAxMFxuICAgICAqL1xuICAgIHB1YmxpYyBsb2dCYXNlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIE9wdGlvbnMgZm9yIGN1c3RvbWl6aW5nIG1ham9yIGdyaWQgbGluZXMgb24gdGhlIGF4aXMuXG4gICAgICovXG4gICAgcHVibGljIG1ham9yR3JpZExpbmVzOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIE9wdGlvbnMgZm9yIGN1c3RvbWl6aW5nIG1ham9yIHRpY2sgbGluZXMgb24gdGhlIGF4aXMuXG4gICAgICovXG4gICAgcHVibGljIG1ham9yVGlja0xpbmVzOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgYXhpcyByYW5nZSwgd2hpY2ggc2V0cyB0aGUgdXBwZXIgYm91bmQgb2YgdGhlIGF4aXMgYW5kIGRlZmluZXMgdGhlIGxhcmdlc3QgdmFsdWUgZGlzcGxheWVkIG9uIHRoZSBjaGFydCwgaGVscGluZyB0byBjb250cm9sIHRoZSB2aXNpYmxlIHJhbmdlIG9mIGRhdGEuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBtYXhpbXVtOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgbWF4aW11bSB3aWR0aCBvZiBhbiBheGlzIGxhYmVsLlxuICAgICAqIEBkZWZhdWx0IDM0LlxuICAgICAqL1xuICAgIHB1YmxpYyBtYXhpbXVtTGFiZWxXaWR0aDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBTcGVjaWZpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGxhYmVscyBwZXIgMTAwIHBpeGVscyByZWxhdGl2ZSB0byB0aGUgYXhpcyBsZW5ndGguXG4gICAgICogQGRlZmF1bHQgM1xuICAgICAqL1xuICAgIHB1YmxpYyBtYXhpbXVtTGFiZWxzOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgbWluaW11bSB2YWx1ZSBvZiB0aGUgYXhpcyByYW5nZSwgd2hpY2ggc2V0cyB0aGUgbG93ZXIgYm91bmQgb2YgdGhlIGF4aXMgYW5kIGRlZmluZXMgdGhlIHNtYWxsZXN0IHZhbHVlIHRoYXQgd2lsbCBiZSBkaXNwbGF5ZWQgb24gdGhlIGNoYXJ0IHRvIGNvbnRyb2wgdGhlIHZpc2libGUgcmFuZ2Ugb2YgZGF0YS5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIG1pbmltdW06IGFueTtcbiAgICAvKiogXG4gICAgICogT3B0aW9ucyBmb3IgY3VzdG9taXppbmcgbWlub3IgZ3JpZCBsaW5lcyBvbiB0aGUgYXhpcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgbWlub3JHcmlkTGluZXM6IGFueTtcbiAgICAvKiogXG4gICAgICogT3B0aW9ucyBmb3IgY3VzdG9taXppbmcgbWlub3IgdGljayBsaW5lcyBvbiB0aGUgYXhpcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgbWlub3JUaWNrTGluZXM6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgbWlub3IgdGlja3MgcGVyIGludGVydmFsLlxuICAgICAqIEBkZWZhdWx0IDBcbiAgICAgKi9cbiAgICBwdWJsaWMgbWlub3JUaWNrc1BlckludGVydmFsOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIE11bHRpLWxldmVsIGxhYmVscyBhcmUgdXNlZCB0byBkaXNwbGF5IGhpZXJhcmNoaWNhbCBvciBncm91cGVkIGxhYmVscyBvbiB0aGUgYXhpcywgYWxsb3dpbmcgZm9yIGEgbW9yZSBkZXRhaWxlZCBhbmQgc3RydWN0dXJlZCBkYXRhIHJlcHJlc2VudGF0aW9uLlxuICAgICAqL1xuICAgIHB1YmxpYyBtdWx0aUxldmVsTGFiZWxzOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIGFuIGF4aXMuIFRvIGFzc29jaWF0ZSBhbiBheGlzIHdpdGggYSBzZXJpZXMsIHNldCB0aGlzIG5hbWUgdG8gdGhlIGB4QXhpc05hbWVgIG9yIGB5QXhpc05hbWVgIHByb3BlcnRpZXMgb2YgdGhlIHNlcmllcy5cbiAgICAgKiBAZGVmYXVsdCAnJ1xuICAgICAqL1xuICAgIHB1YmxpYyBuYW1lOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIElmIHNldCB0byB0cnVlLCB0aGUgYXhpcyB3aWxsIHJlbmRlciBvbiB0aGUgb3Bwb3NpdGUgc2lkZSBvZiBpdHMgZGVmYXVsdCBwb3NpdGlvbi5cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIHB1YmxpYyBvcHBvc2VkUG9zaXRpb246IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHdoZXRoZXIgYXhpcyBlbGVtZW50cywgc3VjaCBhcyBheGlzIGxhYmVscyBhbmQgdGhlIGF4aXMgdGl0bGUsIHNob3VsZCBiZSBjcm9zc2VkIGJ5IHRoZSBheGlzIGxpbmUuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIHB1YmxpYyBwbGFjZU5leHRUb0F4aXNMaW5lOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgcGFkZGluZyBvbiB0aGUgdG9wLCBib3R0b20sIGxlZnQgYW5kIHJpZ2h0IHNpZGVzIG9mIHRoZSBjaGFydCBhcmVhLCBpbiBwaXhlbHMuXG4gICAgICogQGRlZmF1bHQgMFxuICAgICAqL1xuICAgIHB1YmxpYyBwbG90T2Zmc2V0OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgYm90dG9tIHBhZGRpbmcgZm9yIHRoZSBjaGFydCBhcmVhLCBpbiBwaXhlbHMuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBwbG90T2Zmc2V0Qm90dG9tOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgbGVmdCBwYWRkaW5nIGZvciB0aGUgY2hhcnQgYXJlYSwgaW4gcGl4ZWxzLlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgcGxvdE9mZnNldExlZnQ6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSByaWdodCBwYWRkaW5nIGZvciB0aGUgY2hhcnQgYXJlYSwgaW4gcGl4ZWxzLlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgcGxvdE9mZnNldFJpZ2h0OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgdG9wIHBhZGRpbmcgZm9yIHRoZSBjaGFydCBhcmVhLCBpbiBwaXhlbHMuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBwbG90T2Zmc2V0VG9wOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSBgcmFuZ2VQYWRkaW5nYCBwcm9wZXJ0eSBkZXRlcm1pbmVzIGhvdyBwYWRkaW5nIGlzIGFwcGxpZWQgdG8gdGhlIGF4aXMgcmFuZ2UsIGFmZmVjdGluZyB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgY2hhcnQgYnkgYWRqdXN0aW5nIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIHZhbHVlcyBvZiB0aGUgYXhpcy4gXG4gICAgICogQXZhaWxhYmxlIG9wdGlvbnMgYXJlOiBcbiAgICAgKiAqIE5vbmU6IE5vIHBhZGRpbmcgaXMgYXBwbGllZCB0byB0aGUgYXhpcy4gXG4gICAgICogKiBOb3JtYWw6IFBhZGRpbmcgaXMgYXBwbGllZCBiYXNlZCBvbiB0aGUgcmFuZ2UgY2FsY3VsYXRpb24uIFxuICAgICAqICogQWRkaXRpb25hbDogVGhlIGludGVydmFsIG9mIHRoZSBheGlzIGlzIGFkZGVkIGFzIHBhZGRpbmcgdG8gYm90aCB0aGUgbWluaW11bSBhbmQgbWF4aW11bSB2YWx1ZXMgb2YgdGhlIHJhbmdlLiBcbiAgICAgKiAqIFJvdW5kOiBUaGUgYXhpcyByYW5nZSBpcyByb3VuZGVkIHRvIHRoZSBuZWFyZXN0IHBvc3NpYmxlIHZhbHVlIHRoYXQgaXMgZGl2aXNpYmxlIGJ5IHRoZSBpbnRlcnZhbC5cbiAgICAgKiBAZGVmYXVsdCAnQXV0bydcbiAgICAgKi9cbiAgICBwdWJsaWMgcmFuZ2VQYWRkaW5nOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgaW5kZXggb2YgdGhlIHJvdyB3aGVyZSB0aGUgYXhpcyBpcyBhc3NvY2lhdGVkIHdoZW4gdGhlIGNoYXJ0IGFyZWEgaXMgZGl2aWRlZCBpbnRvIG11bHRpcGxlIHBsb3QgYXJlYXMgdXNpbmcgYHJvd3NgLiBcbiAgICAgKiBcbiAgICAgKiBAZGVmYXVsdCAwXG4gICAgICovXG4gICAgcHVibGljIHJvd0luZGV4OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIENvbmZpZ3VyZXMgdGhlIHNjcm9sbGJhciB3aXRoIG9wdGlvbnMgZm9yIGN1c3RvbWl6YXRpb24sIGluY2x1ZGluZyBhcHBlYXJhbmNlLCBiZWhhdmlvciwgYW5kIGxhenkgbG9hZGluZyBzZXR0aW5ncy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2Nyb2xsYmFyU2V0dGluZ3M6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBza2VsZXRvbiBmb3JtYXQgdXNlZCBmb3IgcHJvY2Vzc2luZyBkYXRlLXRpbWUgdmFsdWVzLlxuICAgICAqIEBkZWZhdWx0ICcnXG4gICAgICovXG4gICAgcHVibGljIHNrZWxldG9uOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgZm9ybWF0IHR5cGUgdG8gYmUgdXNlZCBpbiBkYXRlLXRpbWUgZm9ybWF0dGluZy5cbiAgICAgKiBAZGVmYXVsdCAnRGF0ZVRpbWUnXG4gICAgICogQGRlcHJlY2F0ZWQgXG4gICAgICovXG4gICAgcHVibGljIHNrZWxldG9uVHlwZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBgY29sdW1uc2Agb3IgYHJvd3NgIHRoYXQgYW4gYXhpcyBzcGFucyBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseS5cbiAgICAgKiBAZGVmYXVsdCAxXG4gICAgICovXG4gICAgcHVibGljIHNwYW46IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBzdGFydCBhbmdsZSBmb3IgdGhlIHNlcmllcyBpbiBhIHBvbGFyIG9yIHJhZGFyIGNoYXJ0LCBtZWFzdXJlZCBpbiBkZWdyZWVzIGZyb20gdGhlIGhvcml6b250YWwgYXhpcywgZGV0ZXJtaW5pbmcgdGhlIGluaXRpYWwgYW5nbGUgZnJvbSB3aGljaCB0aGUgc2VyaWVzIGJlZ2lucy5cbiAgICAgKiBAZGVmYXVsdCAwXG4gICAgICovXG4gICAgcHVibGljIHN0YXJ0QW5nbGU6IGFueTtcbiAgICAvKiogXG4gICAgICogSWYgc2V0IHRvIHRydWUsIHRoZSBheGlzIHN0YXJ0cyBmcm9tIHplcm8uIFxuICAgICAqIElmIHNldCB0byBmYWxzZSwgdGhlIGF4aXMgc3RhcnRzIGZyb20gdGhlIG1pbmltdW0gdmFsdWUgb2YgdGhlIGRhdGEuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIHB1YmxpYyBzdGFydEZyb21aZXJvOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgY29sbGVjdGlvbiBvZiBzdHJpcCBsaW5lcyBmb3IgdGhlIGF4aXMsIHdoaWNoIGFyZSB2aXN1YWwgZWxlbWVudHMgdXNlZCB0byBtYXJrIG9yIGhpZ2hsaWdodCBzcGVjaWZpYyByYW5nZXMuXG4gICAgICovXG4gICAgcHVibGljIHN0cmlwTGluZXM6IGFueTtcbiAgICAvKiogXG4gICAgICogVGhlIGB0YWJJbmRleGAgdmFsdWUgZm9yIHRoZSBheGlzLCBkZXRlcm1pbmluZyBpdHMgcG9zaXRpb24gaW4gdGhlIHRhYiBvcmRlci5cbiAgICAgKiBAZGVmYXVsdCAyXG4gICAgICovXG4gICAgcHVibGljIHRhYkluZGV4OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSBgdGlja1Bvc2l0aW9uYCBwcm9wZXJ0eSBkZXRlcm1pbmVzIHdoZXJlIHRoZSBheGlzIHRpY2tzIGFyZSByZW5kZXJlZCBpbiByZWxhdGlvbiB0byB0aGUgYXhpcyBsaW5lLiBcbiAgICAgKiBBdmFpbGFibGUgb3B0aW9ucyBhcmU6IFxuICAgICAqICogSW5zaWRlOiBSZW5kZXJzIHRoZSB0aWNrcyBpbnNpZGUgdGhlIGF4aXMgbGluZS4gXG4gICAgICogKiBPdXRzaWRlOiBSZW5kZXJzIHRoZSB0aWNrcyBvdXRzaWRlIHRoZSBheGlzIGxpbmUuXG4gICAgICogQGRlZmF1bHQgJ091dHNpZGUnXG4gICAgICovXG4gICAgcHVibGljIHRpY2tQb3NpdGlvbjogYW55O1xuICAgIC8qKiBcbiAgICAgKiBTcGVjaWZpZXMgdGhlIHRpdGxlIG9mIGFuIGF4aXMsIGRpc3BsYXllZCBhbG9uZyB0aGUgYXhpcyB0byBwcm92aWRlIGNvbnRleHQgYWJvdXQgdGhlIHJlcHJlc2VudGVkIGRhdGEuXG4gICAgICogQGRlZmF1bHQgJydcbiAgICAgKi9cbiAgICBwdWJsaWMgdGl0bGU6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBwYWRkaW5nIGJldHdlZW4gdGhlIGF4aXMgdGl0bGUgYW5kIHRoZSBheGlzIGxhYmVscy5cbiAgICAgKiBAZGVmYXVsdCA1XG4gICAgICovXG4gICAgcHVibGljIHRpdGxlUGFkZGluZzogYW55O1xuICAgIC8qKiBcbiAgICAgKiBEZWZpbmVzIGFuIGFuZ2xlIGZvciByb3RhdGluZyB0aGUgYXhpcyB0aXRsZS4gQnkgZGVmYXVsdCwgdGhlIGFuZ2xlIGlzIGNhbGN1bGF0ZWQgYmFzZWQgb24gdGhlIHBvc2l0aW9uIGFuZCBvcmllbnRhdGlvbiBvZiB0aGUgYXhpcy5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIHRpdGxlUm90YXRpb246IGFueTtcbiAgICAvKiogXG4gICAgICogT3B0aW9ucyBmb3IgY3VzdG9taXppbmcgdGhlIGFwcGVhcmFuY2Ugb2YgdGhlIGF4aXMgdGl0bGUsIGluY2x1ZGluZyBmb250IGZhbWlseSwgc2l6ZSwgc3R5bGUsIHdlaWdodCwgYW5kIGNvbG9yLlxuICAgICAqL1xuICAgIHB1YmxpYyB0aXRsZVN0eWxlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSBgdmFsdWVUeXBlYCBwcm9wZXJ0eSBkZWZpbmVzIHRoZSB0eXBlIG9mIGRhdGEgdGhhdCB0aGUgYXhpcyBjYW4gbWFuYWdlLCBlbnN1cmluZyBjb3JyZWN0IHJlbmRlcmluZyBiYXNlZCBvbiB0aGUgZGF0YSB0eXBlLiBUaGlzIHByb3BlcnR5IHN1cHBvcnRzIG11bHRpcGxlIGRhdGEgdHlwZXMsIGVhY2ggc3VpdGVkIGZvciBkaWZmZXJlbnQga2luZHMgb2YgZGF0YSB2aXN1YWxpemF0aW9uLiBcbiAgICAgKiBBdmFpbGFibGUgb3B0aW9ucyBpbmNsdWRlOiBcbiAgICAgKiAqIERvdWJsZTogVXNlZCBmb3IgcmVuZGVyaW5nIGEgbnVtZXJpYyBheGlzIHRvIGFjY29tbW9kYXRlIG51bWVyaWMgZGF0YS4gXG4gICAgICogKiBEYXRlVGltZTogVXRpbGl6ZWQgZm9yIHJlbmRlcmluZyBhIGRhdGUtdGltZSBheGlzIHRvIG1hbmFnZSBkYXRlLXRpbWUgZGF0YS4gXG4gICAgICogKiBDYXRlZ29yeTogRW1wbG95ZWQgZm9yIHJlbmRlcmluZyBhIGNhdGVnb3J5IGF4aXMgdG8gbWFuYWdlIGNhdGVnb3JpY2FsIGRhdGEuIFxuICAgICAqICogTG9nYXJpdGhtaWM6IEFwcGxpZWQgZm9yIHJlbmRlcmluZyBhIGxvZ2FyaXRobWljIGF4aXMgdG8gaGFuZGxlIGEgd2lkZSByYW5nZSBvZiB2YWx1ZXMuIFxuICAgICAqICogRGF0ZVRpbWVDYXRlZ29yeTogVXNlZCB0byByZW5kZXIgYSBkYXRlLXRpbWUgY2F0ZWdvcnkgYXhpcyBmb3IgbWFuYWdpbmcgYnVzaW5lc3MgZGF5cy5cbiAgICAgKiBAZGVmYXVsdCAnRG91YmxlJ1xuICAgICAqIEBibGF6b3J0eXBlIFN5bmNmdXNpb24uRUoyLkJsYXpvci5DaGFydHMuVmFsdWVUeXBlXG4gICAgICogQGlzZW51bWVyYXRpb24gdHJ1ZVxuICAgICAqL1xuICAgIHB1YmxpYyB2YWx1ZVR5cGU6IGFueTtcbiAgICAvKiogXG4gICAgICogSWYgc2V0IHRvIHRydWUsIGF4aXMgbGFiZWxzIHdpbGwgYmUgdmlzaWJsZSBpbiB0aGUgY2hhcnQuIEJ5IGRlZmF1bHQsIGF4aXMgbGFiZWxzIGFyZSBlbmFibGVkLlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBwdWJsaWMgdmlzaWJsZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBUaGUgYXhpcyBpcyBzY2FsZWQgYnkgdGhpcyBmYWN0b3IuIFdoZW4gYHpvb21GYWN0b3JgIGlzIDAuNSwgdGhlIGNoYXJ0IGlzIHNjYWxlZCBieSAyMDAlIGFsb25nIHRoaXMgYXhpcy4gXG4gICAgICogPiBOb3RlIHRoZSB2YWx1ZSByYW5nZXMgZnJvbSAwIHRvIDEuXG4gICAgICogQGRlZmF1bHQgMVxuICAgICAqL1xuICAgIHB1YmxpYyB6b29tRmFjdG9yOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNldHMgdGhlIHBvc2l0aW9uIG9mIHRoZSB6b29tZWQgYXhpcyBvbiB0aGUgY2hhcnQsIHdpdGggdGhlIGB6b29tUG9zaXRpb25gIHByb3BlcnR5IHNwZWNpZnlpbmcgdGhlIHBvc2l0aW9uIHdpdGhpbiB0aGUgem9vbWVkIHJhbmdlLCBmcm9tIDAgKHN0YXJ0KSB0byAxIChlbmQpLlxuICAgICAqIEBkZWZhdWx0IDBcbiAgICAgKi9cbiAgICBwdWJsaWMgem9vbVBvc2l0aW9uOiBhbnk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHZpZXdDb250YWluZXJSZWY6Vmlld0NvbnRhaW5lclJlZikge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBzZXRWYWx1ZSgnY3VycmVudEluc3RhbmNlJywgdGhpcywgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlckV2ZW50cyhvdXRwdXRzKTtcbiAgICAgICAgdGhpcy5kaXJlY3RpdmVQcm9wTGlzdCA9IGlucHV0O1xuICAgIH1cbn1cblxuLyoqXG4gKiBBeGlzIEFycmF5IERpcmVjdGl2ZVxuICogQHByaXZhdGVcbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdlanMtY2hhcnQ+ZS1heGVzJyxcbiAgICBxdWVyaWVzOiB7XG4gICAgICAgIGNoaWxkcmVuOiBuZXcgQ29udGVudENoaWxkcmVuKEF4aXNEaXJlY3RpdmUpXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgQXhlc0RpcmVjdGl2ZSBleHRlbmRzIEFycmF5QmFzZTxBeGVzRGlyZWN0aXZlPiB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCdheGVzJyk7XG4gICAgfVxufSJdfQ==