ngx-chartist
Version:
> ### ANGULAR 6+ CHARTIST
609 lines (597 loc) • 96.3 kB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('chartist'), require('@angular/common')) :
typeof define === 'function' && define.amd ? define('ngx-chartist', ['exports', '@angular/core', 'chartist', '@angular/common'], factory) :
(factory((global['ngx-chartist'] = {}),global.ng.core,null,global.ng.common));
}(this, (function (exports,i0,Chartist,common) { 'use strict';
/*! *****************************************************************************
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of the
License at http://www.apache.org/licenses/LICENSE-2.0
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABLITY OR NON-INFRINGEMENT.
See the Apache Version 2.0 License for specific language governing permissions
and limitations under the License.
***************************************************************************** */
function __values(o) {
var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0;
if (m)
return m.call(o);
return {
next: function () {
if (o && i >= o.length)
o = void 0;
return { value: o && o[i++], done: !o };
}
};
}
function __read(o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m)
return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done)
ar.push(r.value);
}
catch (error) {
e = { error: error };
}
finally {
try {
if (r && !r.done && (m = i["return"]))
m.call(i);
}
finally {
if (e)
throw e.error;
}
}
return ar;
}
function __spread() {
for (var ar = [], i = 0; i < arguments.length; i++)
ar = ar.concat(__read(arguments[i]));
return ar;
}
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
var NgxChartistService = /** @class */ (function () {
function NgxChartistService() {
}
/**
* @return {?}
*/
NgxChartistService.prototype.getPrecision = /**
* @return {?}
*/
function () {
return Chartist.precision;
};
/**
* @return {?}
*/
NgxChartistService.prototype.getEscapingMap = /**
* @return {?}
*/
function () {
return Chartist.escapingMap;
};
/**
* @return {?}
*/
NgxChartistService.prototype.getPie = /**
* @return {?}
*/
function () {
return Chartist.Pie;
};
/**
* @return {?}
*/
NgxChartistService.prototype.getBar = /**
* @return {?}
*/
function () {
return Chartist.Bar;
};
/**
* @return {?}
*/
NgxChartistService.prototype.getLine = /**
* @return {?}
*/
function () {
return Chartist.Line;
};
/**
* @return {?}
*/
NgxChartistService.prototype.getCandle = /**
* @return {?}
*/
function () {
return Chartist.Candle;
};
/**
* @return {?}
*/
NgxChartistService.prototype.getFixedScaleAxis = /**
* @return {?}
*/
function () {
return Chartist.FixedScaleAxis;
};
/**
* @return {?}
*/
NgxChartistService.prototype.getAutoScaleAxis = /**
* @return {?}
*/
function () {
return Chartist.AutoScaleAxis;
};
/**
* @return {?}
*/
NgxChartistService.prototype.getStepAxis = /**
* @return {?}
*/
function () {
return Chartist.StepAxis;
};
/**
* @return {?}
*/
NgxChartistService.prototype.getSvg = /**
* @return {?}
*/
function () {
return Chartist.Svg;
};
/**
* @return {?}
*/
NgxChartistService.prototype.getInterpolation = /**
* @return {?}
*/
function () {
return Chartist.Interpolation;
};
/**
* @return {?}
*/
NgxChartistService.prototype.getNoop = /**
* @return {?}
*/
function () {
return Chartist.noop;
};
/**
* @return {?}
*/
NgxChartistService.prototype.getPlugins = /**
* @return {?}
*/
function () {
return Chartist.plugins;
};
/**
* @param {?} n
* @return {?}
*/
NgxChartistService.prototype.alphaNumerate = /**
* @param {?} n
* @return {?}
*/
function (n) {
return Chartist.alphaNumerate(n);
};
/**
* @param {?} target
* @param {...?} sources
* @return {?}
*/
NgxChartistService.prototype.extend = /**
* @param {?} target
* @param {...?} sources
* @return {?}
*/
function (target) {
var sources = [];
for (var _i = 1; _i < arguments.length; _i++) {
sources[_i - 1] = arguments[_i];
}
return Chartist.extend.apply(Chartist, __spread([target], sources));
};
/**
* @param {?} str
* @param {?} subStr
* @param {?} newSubStr
* @return {?}
*/
NgxChartistService.prototype.replaceAll = /**
* @param {?} str
* @param {?} subStr
* @param {?} newSubStr
* @return {?}
*/
function (str, subStr, newSubStr) {
return Chartist.replaceAll(str, subStr, newSubStr);
};
/**
* @param {?} value
* @param {?} unit
* @return {?}
*/
NgxChartistService.prototype.ensureUnit = /**
* @param {?} value
* @param {?} unit
* @return {?}
*/
function (value, unit) {
return Chartist.ensureUnit(value, unit);
};
/**
* @param {?} input
* @return {?}
*/
NgxChartistService.prototype.quantity = /**
* @param {?} input
* @return {?}
*/
function (input) {
return Chartist.quantity(input);
};
/**
* @param {?} query
* @return {?}
*/
NgxChartistService.prototype.query = /**
* @param {?} query
* @return {?}
*/
function (query) {
return Chartist.query(query);
};
/**
* @param {?} length
* @return {?}
*/
NgxChartistService.prototype.times = /**
* @param {?} length
* @return {?}
*/
function (length) {
return Chartist.times(length);
};
/**
* @param {?} previous
* @param {?} current
* @return {?}
*/
NgxChartistService.prototype.sum = /**
* @param {?} previous
* @param {?} current
* @return {?}
*/
function (previous, current) {
return Chartist.sum(previous, current);
};
/**
* @param {?} factor
* @return {?}
*/
NgxChartistService.prototype.mapMultiply = /**
* @param {?} factor
* @return {?}
*/
function (factor) {
return Chartist.mapMultiply(factor);
};
/**
* @param {?} addend
* @return {?}
*/
NgxChartistService.prototype.mapAdd = /**
* @param {?} addend
* @return {?}
*/
function (addend) {
return Chartist.mapAdd(addend);
};
/**
* @param {?} arr
* @param {?} cb
* @return {?}
*/
NgxChartistService.prototype.serialMap = /**
* @param {?} arr
* @param {?} cb
* @return {?}
*/
function (arr, cb) {
return Chartist.serialMap(arr, cb);
};
/**
* @param {?} value
* @param {?=} digits
* @return {?}
*/
NgxChartistService.prototype.roundWithPrecision = /**
* @param {?} value
* @param {?=} digits
* @return {?}
*/
function (value, digits) {
return Chartist.roundWithPrecision(value, digits);
};
/**
* @param {?} value
* @param {?=} dimension
* @return {?}
*/
NgxChartistService.prototype.getMultiValue = /**
* @param {?} value
* @param {?=} dimension
* @return {?}
*/
function (value, dimension) {
return Chartist.getMultiValue(value, dimension);
};
/**
* @param {?} data
* @return {?}
*/
NgxChartistService.prototype.serialize = /**
* @param {?} data
* @return {?}
*/
function (data) {
return Chartist.serialize(data);
};
/**
* @param {?} data
* @return {?}
*/
NgxChartistService.prototype.deserialize = /**
* @param {?} data
* @return {?}
*/
function (data) {
return Chartist.deserialize(data);
};
/**
* @param {?} container
* @param {?} width
* @param {?} height
* @param {?} className
* @return {?}
*/
NgxChartistService.prototype.createSvg = /**
* @param {?} container
* @param {?} width
* @param {?} height
* @param {?} className
* @return {?}
*/
function (container, width, height, className) {
return Chartist.createSvg(container, width, height, className);
};
NgxChartistService.decorators = [
{ type: i0.Injectable, args: [{
providedIn: 'root'
},] }
];
NgxChartistService.ctorParameters = function () { return []; };
/** @nocollapse */ NgxChartistService.ngInjectableDef = i0.defineInjectable({ factory: function NgxChartistService_Factory() { return new NgxChartistService(); }, token: NgxChartistService, providedIn: "root" });
return NgxChartistService;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
var NgxChartistComponent = /** @class */ (function () {
function NgxChartistComponent(element) {
this.element = element.nativeElement;
}
/**
* @return {?}
*/
NgxChartistComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
var _this = this;
if (!this.type || !this.data) {
Promise.reject('Expected at least type and data.');
}
return this.renderChart().then(function (chart) {
if (_this.events !== undefined) {
_this.bindEvents(chart);
}
return chart;
});
};
/**
* @param {?} changes
* @return {?}
*/
NgxChartistComponent.prototype.ngOnChanges = /**
* @param {?} changes
* @return {?}
*/
function (changes) {
if (this.element) {
this.update(changes);
}
};
/**
* @return {?}
*/
NgxChartistComponent.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
if (this.chart) {
this.chart.detach();
}
};
/**
* @return {?}
*/
NgxChartistComponent.prototype.renderChart = /**
* @return {?}
*/
function () {
var _this = this;
/** @type {?} */
var promises = [
this.type,
this.element,
this.data,
this.options,
this.responsiveOptions
];
if (this.lineSmooth) {
switch (this.lineSmooth['interpolation']) {
case 'cardinal': {
this.options['lineSmooth'] = Chartist.Interpolation.cardinal(this.lineSmooth['data']);
break;
}
case 'simple': {
this.options['lineSmooth'] = Chartist.Interpolation.simple(this.lineSmooth['data']);
break;
}
case 'none': {
this.options['lineSmooth'] = Chartist.Interpolation.none(this.lineSmooth['data']);
break;
}
case 'step': {
this.options['lineSmooth'] = Chartist.Interpolation.step(this.lineSmooth['data']);
break;
}
}
}
return Promise.all(promises).then(function (values) {
var _a = __read(values), type = _a[0], args = _a.slice(1);
if (!(type in Chartist)) {
throw new Error(type + " is not a valid chart type");
}
_this.chart = (( /** @type {?} */(Chartist)))[type].apply((( /** @type {?} */(Chartist))), __spread(args));
return _this.chart;
});
};
/**
* @param {?} changes
* @return {?}
*/
NgxChartistComponent.prototype.update = /**
* @param {?} changes
* @return {?}
*/
function (changes) {
if (!this.chart || 'type' in changes) {
this.renderChart();
}
else {
if (changes.data) {
this.data = changes.data.currentValue;
}
if (changes.options) {
this.options = changes.options.currentValue;
}
(( /** @type {?} */(this.chart))).update(this.data, this.options);
}
};
/**
* @param {?} chart
* @return {?}
*/
NgxChartistComponent.prototype.bindEvents = /**
* @param {?} chart
* @return {?}
*/
function (chart) {
var e_1, _a;
try {
for (var _b = __values(Object.keys(this.events)), _c = _b.next(); !_c.done; _c = _b.next()) {
var event_1 = _c.value;
chart.on(event_1, this.events[event_1]);
}
}
catch (e_1_1) {
e_1 = { error: e_1_1 };
}
finally {
try {
if (_c && !_c.done && (_a = _b.return))
_a.call(_b);
}
finally {
if (e_1)
throw e_1.error;
}
}
};
NgxChartistComponent.decorators = [
{ type: i0.Component, args: [{
selector: 'lib-ngx-chartist',
template: '',
styles: [":host:not(.without-styles) ::ng-deep .ct-label{fill:rgba(0,0,0,.4);color:rgba(0,0,0,.4);font-size:.75rem;line-height:1}:host:not(.without-styles) ::ng-deep .ct-chart-bar .ct-label,:host:not(.without-styles) ::ng-deep .ct-chart-line .ct-label{display:block;display:flex}:host:not(.without-styles) ::ng-deep .ct-chart-donut .ct-label,:host:not(.without-styles) ::ng-deep .ct-chart-pie .ct-label{dominant-baseline:central}:host:not(.without-styles) ::ng-deep .ct-label.ct-horizontal.ct-start{align-items:flex-end;justify-content:flex-start;text-align:left;text-anchor:start}:host:not(.without-styles) ::ng-deep .ct-label.ct-horizontal.ct-end{align-items:flex-start;justify-content:flex-start;text-align:left;text-anchor:start}:host:not(.without-styles) ::ng-deep .ct-label.ct-vertical.ct-start{align-items:flex-end;justify-content:flex-end;text-align:right;text-anchor:end}:host:not(.without-styles) ::ng-deep .ct-label.ct-vertical.ct-end{align-items:flex-end;justify-content:flex-start;text-align:left;text-anchor:start}:host:not(.without-styles) ::ng-deep .ct-chart-bar .ct-label.ct-horizontal.ct-start{align-items:flex-end;justify-content:center;text-align:center;text-anchor:start}:host:not(.without-styles) ::ng-deep .ct-chart-bar .ct-label.ct-horizontal.ct-end{align-items:flex-start;justify-content:center;text-align:center;text-anchor:start}:host:not(.without-styles) ::ng-deep .ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-start{align-items:flex-end;justify-content:flex-start;text-align:left;text-anchor:start}:host:not(.without-styles) ::ng-deep .ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-end{align-items:flex-start;justify-content:flex-start;text-align:left;text-anchor:start}:host:not(.without-styles) ::ng-deep .ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-start{align-items:center;justify-content:flex-end;text-align:right;text-anchor:end}:host:not(.without-styles) ::ng-deep .ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-end{align-items:center;justify-content:flex-start;text-align:left;text-anchor:end}:host:not(.without-styles) ::ng-deep .ct-grid{stroke:rgba(0,0,0,.2);stroke-width:1px;stroke-dasharray:2px}:host:not(.without-styles) ::ng-deep .ct-grid-background{fill:none}:host:not(.without-styles) ::ng-deep .ct-point{stroke-width:10px;stroke-linecap:round}:host:not(.without-styles) ::ng-deep .ct-line{fill:none;stroke-width:4px}:host:not(.without-styles) ::ng-deep .ct-area{stroke:none;fill-opacity:.1}:host:not(.without-styles) ::ng-deep .ct-bar{fill:none;stroke-width:10px}:host:not(.without-styles) ::ng-deep .ct-slice-donut{fill:none;stroke-width:60px}:host:not(.without-styles) ::ng-deep .ct-series-a .ct-bar,:host:not(.without-styles) ::ng-deep .ct-series-a .ct-line,:host:not(.without-styles) ::ng-deep .ct-series-a .ct-point,:host:not(.without-styles) ::ng-deep .ct-series-a .ct-slice-donut{stroke:#d70206}:host:not(.without-styles) ::ng-deep .ct-series-a .ct-area,:host:not(.without-styles) ::ng-deep .ct-series-a .ct-slice-donut-solid,:host:not(.without-styles) ::ng-deep .ct-series-a .ct-slice-pie{fill:#d70206}:host:not(.without-styles) ::ng-deep .ct-series-b .ct-bar,:host:not(.without-styles) ::ng-deep .ct-series-b .ct-line,:host:not(.without-styles) ::ng-deep .ct-series-b .ct-point,:host:not(.without-styles) ::ng-deep .ct-series-b .ct-slice-donut{stroke:#f05b4f}:host:not(.without-styles) ::ng-deep .ct-series-b .ct-area,:host:not(.without-styles) ::ng-deep .ct-series-b .ct-slice-donut-solid,:host:not(.without-styles) ::ng-deep .ct-series-b .ct-slice-pie{fill:#f05b4f}:host:not(.without-styles) ::ng-deep .ct-series-c .ct-bar,:host:not(.without-styles) ::ng-deep .ct-series-c .ct-line,:host:not(.without-styles) ::ng-deep .ct-series-c .ct-point,:host:not(.without-styles) ::ng-deep .ct-series-c .ct-slice-donut{stroke:#f4c63d}:host:not(.without-styles) ::ng-deep .ct-series-c .ct-area,:host:not(.without-styles) ::ng-deep .ct-series-c .ct-slice-donut-solid,:host:not(.without-styles) ::ng-deep .ct-series-c .ct-slice-pie{fill:#f4c63d}:host:not(.without-styles) ::ng-deep .ct-series-d .ct-bar,:host:not(.without-styles) ::ng-deep .ct-series-d .ct-line,:host:not(.without-styles) ::ng-deep .ct-series-d .ct-point,:host:not(.without-styles) ::ng-deep .ct-series-d .ct-slice-donut{stroke:#d17905}:host:not(.without-styles) ::ng-deep .ct-series-d .ct-area,:host:not(.without-styles) ::ng-deep .ct-series-d .ct-slice-donut-solid,:host:not(.without-styles) ::ng-deep .ct-series-d .ct-slice-pie{fill:#d17905}:host:not(.without-styles) ::ng-deep .ct-series-e .ct-bar,:host:not(.without-styles) ::ng-deep .ct-series-e .ct-line,:host:not(.without-styles) ::ng-deep .ct-series-e .ct-point,:host:not(.without-styles) ::ng-deep .ct-series-e .ct-slice-donut{stroke:#453d3f}:host:not(.without-styles) ::ng-deep .ct-series-e .ct-area,:host:not(.without-styles) ::ng-deep .ct-series-e .ct-slice-donut-solid,:host:not(.without-styles) ::ng-deep .ct-series-e .ct-slice-pie{fill:#453d3f}:host:not(.without-styles) ::ng-deep .ct-series-f .ct-bar,:host:not(.without-styles) ::ng-deep .ct-series-f .ct-line,:host:not(.without-styles) ::ng-deep .ct-series-f .ct-point,:host:not(.without-styles) ::ng-deep .ct-series-f .ct-slice-donut{stroke:#59922b}:host:not(.without-styles) ::ng-deep .ct-series-f .ct-area,:host:not(.without-styles) ::ng-deep .ct-series-f .ct-slice-donut-solid,:host:not(.without-styles) ::ng-deep .ct-series-f .ct-slice-pie{fill:#59922b}:host:not(.without-styles) ::ng-deep .ct-series-g .ct-bar,:host:not(.without-styles) ::ng-deep .ct-series-g .ct-line,:host:not(.without-styles) ::ng-deep .ct-series-g .ct-point,:host:not(.without-styles) ::ng-deep .ct-series-g .ct-slice-donut{stroke:#0544d3}:host:not(.without-styles) ::ng-deep .ct-series-g .ct-area,:host:not(.without-styles) ::ng-deep .ct-series-g .ct-slice-donut-solid,:host:not(.without-styles) ::ng-deep .ct-series-g .ct-slice-pie{fill:#0544d3}:host:not(.without-styles) ::ng-deep .ct-series-h .ct-bar,:host:not(.without-styles) ::ng-deep .ct-series-h .ct-line,:host:not(.without-styles) ::ng-deep .ct-series-h .ct-point,:host:not(.without-styles) ::ng-deep .ct-series-h .ct-slice-donut{stroke:#6b0392}:host:not(.without-styles) ::ng-deep .ct-series-h .ct-area,:host:not(.without-styles) ::ng-deep .ct-series-h .ct-slice-donut-solid,:host:not(.without-styles) ::ng-deep .ct-series-h .ct-slice-pie{fill:#6b0392}:host:not(.without-styles) ::ng-deep .ct-series-i .ct-bar,:host:not(.without-styles) ::ng-deep .ct-series-i .ct-line,:host:not(.without-styles) ::ng-deep .ct-series-i .ct-point,:host:not(.without-styles) ::ng-deep .ct-series-i .ct-slice-donut{stroke:#f05b4f}:host:not(.without-styles) ::ng-deep .ct-series-i .ct-area,:host:not(.without-styles) ::ng-deep .ct-series-i .ct-slice-donut-solid,:host:not(.without-styles) ::ng-deep .ct-series-i .ct-slice-pie{fill:#f05b4f}:host:not(.without-styles) ::ng-deep .ct-series-j .ct-bar,:host:not(.without-styles) ::ng-deep .ct-series-j .ct-line,:host:not(.without-styles) ::ng-deep .ct-series-j .ct-point,:host:not(.without-styles) ::ng-deep .ct-series-j .ct-slice-donut{stroke:#dda458}:host:not(.without-styles) ::ng-deep .ct-series-j .ct-area,:host:not(.without-styles) ::ng-deep .ct-series-j .ct-slice-donut-solid,:host:not(.without-styles) ::ng-deep .ct-series-j .ct-slice-pie{fill:#dda458}:host:not(.without-styles) ::ng-deep .ct-series-k .ct-bar,:host:not(.without-styles) ::ng-deep .ct-series-k .ct-line,:host:not(.without-styles) ::ng-deep .ct-series-k .ct-point,:host:not(.without-styles) ::ng-deep .ct-series-k .ct-slice-donut{stroke:#eacf7d}:host:not(.without-styles) ::ng-deep .ct-series-k .ct-area,:host:not(.without-styles) ::ng-deep .ct-series-k .ct-slice-donut-solid,:host:not(.without-styles) ::ng-deep .ct-series-k .ct-slice-pie{fill:#eacf7d}:host:not(.without-styles) ::ng-deep .ct-series-l .ct-bar,:host:not(.without-styles) ::ng-deep .ct-series-l .ct-line,:host:not(.without-styles) ::ng-deep .ct-series-l .ct-point,:host:not(.without-styles) ::ng-deep .ct-series-l .ct-slice-donut{stroke:#86797d}:host:not(.without-styles) ::ng-deep .ct-series-l .ct-area,:host:not(.without-styles) ::ng-deep .ct-series-l .ct-slice-donut-solid,:host:not(.without-styles) ::ng-deep .ct-series-l .ct-slice-pie{fill:#86797d}:host:not(.without-styles) ::ng-deep .ct-series-m .ct-bar,:host:not(.without-styles) ::ng-deep .ct-series-m .ct-line,:host:not(.without-styles) ::ng-deep .ct-series-m .ct-point,:host:not(.without-styles) ::ng-deep .ct-series-m .ct-slice-donut{stroke:#b2c326}:host:not(.without-styles) ::ng-deep .ct-series-m .ct-area,:host:not(.without-styles) ::ng-deep .ct-series-m .ct-slice-donut-solid,:host:not(.without-styles) ::ng-deep .ct-series-m .ct-slice-pie{fill:#b2c326}:host:not(.without-styles) ::ng-deep .ct-series-n .ct-bar,:host:not(.without-styles) ::ng-deep .ct-series-n .ct-line,:host:not(.without-styles) ::ng-deep .ct-series-n .ct-point,:host:not(.without-styles) ::ng-deep .ct-series-n .ct-slice-donut{stroke:#6188e2}:host:not(.without-styles) ::ng-deep .ct-series-n .ct-area,:host:not(.without-styles) ::ng-deep .ct-series-n .ct-slice-donut-solid,:host:not(.without-styles) ::ng-deep .ct-series-n .ct-slice-pie{fill:#6188e2}:host:not(.without-styles) ::ng-deep .ct-series-o .ct-bar,:host:not(.without-styles) ::ng-deep .ct-series-o .ct-line,:host:not(.without-styles) ::ng-deep .ct-series-o .ct-point,:host:not(.without-styles) ::ng-deep .ct-series-o .ct-slice-donut{stroke:#a748ca}:host:not(.without-styles) ::ng-deep .ct-series-o .ct-area,:host:not(.without-styles) ::ng-deep .ct-series-o .ct-slice-donut-solid,:host:not(.without-styles) ::ng-deep .ct-series-o .ct-slice-pie{fill:#a748ca}:host:not(.without-styles) ::ng-deep .ct-square{display:block;position:relative;width:100%}:host:not(.without-styles) ::ng-deep .ct-square:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:100%}:host:not(.without-styles) ::ng-deep .ct-square:after{content:\"\";display:table;clear:both}:host:not(.without-styles) ::ng-deep .ct-square>svg{display:block;position:absolute;top:0;left:0}:host:not(.without-styles) ::ng-deep .ct-minor-second{display:block;position:relative;width:100%}:host:not(.without-styles) ::ng-deep .ct-minor-second:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:93.75%}:host:not(.without-styles) ::ng-deep .ct-minor-second:after{content:\"\";display:table;clear:both}:host:not(.without-styles) ::ng-deep .ct-minor-second>svg{display:block;position:absolute;top:0;left:0}:host:not(.without-styles) ::ng-deep .ct-major-second{display:block;position:relative;width:100%}:host:not(.without-styles) ::ng-deep .ct-major-second:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:88.88889%}:host:not(.without-styles) ::ng-deep .ct-major-second:after{content:\"\";display:table;clear:both}:host:not(.without-styles) ::ng-deep .ct-major-second>svg{display:block;position:absolute;top:0;left:0}:host:not(.without-styles) ::ng-deep .ct-minor-third{display:block;position:relative;width:100%}:host:not(.without-styles) ::ng-deep .ct-minor-third:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:83.33333%}:host:not(.without-styles) ::ng-deep .ct-minor-third:after{content:\"\";display:table;clear:both}:host:not(.without-styles) ::ng-deep .ct-minor-third>svg{display:block;position:absolute;top:0;left:0}:host:not(.without-styles) ::ng-deep .ct-major-third{display:block;position:relative;width:100%}:host:not(.without-styles) ::ng-deep .ct-major-third:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:80%}:host:not(.without-styles) ::ng-deep .ct-major-third:after{content:\"\";display:table;clear:both}:host:not(.without-styles) ::ng-deep .ct-major-third>svg{display:block;position:absolute;top:0;left:0}:host:not(.without-styles) ::ng-deep .ct-perfect-fourth{display:block;position:relative;width:100%}:host:not(.without-styles) ::ng-deep .ct-perfect-fourth:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:75%}:host:not(.without-styles) ::ng-deep .ct-perfect-fourth:after{content:\"\";display:table;clear:both}:host:not(.without-styles) ::ng-deep .ct-perfect-fourth>svg{display:block;position:absolute;top:0;left:0}:host:not(.without-styles) ::ng-deep .ct-perfect-fifth{display:block;position:relative;width:100%}:host:not(.without-styles) ::ng-deep .ct-perfect-fifth:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:66.66667%}:host:not(.without-styles) ::ng-deep .ct-perfect-fifth:after{content:\"\";display:table;clear:both}:host:not(.without-styles) ::ng-deep .ct-perfect-fifth>svg{display:block;position:absolute;top:0;left:0}:host:not(.without-styles) ::ng-deep .ct-minor-sixth{display:block;position:relative;width:100%}:host:not(.without-styles) ::ng-deep .ct-minor-sixth:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:62.5%}:host:not(.without-styles) ::ng-deep .ct-minor-sixth:after{content:\"\";display:table;clear:both}:host:not(.without-styles) ::ng-deep .ct-minor-sixth>svg{display:block;position:absolute;top:0;left:0}:host:not(.without-styles) ::ng-deep .ct-golden-section{display:block;position:relative;width:100%}:host:not(.without-styles) ::ng-deep .ct-golden-section:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:61.8047%}:host:not(.without-styles) ::ng-deep .ct-golden-section:after{content:\"\";display:table;clear:both}:host:not(.without-styles) ::ng-deep .ct-golden-section>svg{display:block;position:absolute;top:0;left:0}:host:not(.without-styles) ::ng-deep .ct-major-sixth{display:block;position:relative;width:100%}:host:not(.without-styles) ::ng-deep .ct-major-sixth:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:60%}:host:not(.without-styles) ::ng-deep .ct-major-sixth:after{content:\"\";display:table;clear:both}:host:not(.without-styles) ::ng-deep .ct-major-sixth>svg{display:block;position:absolute;top:0;left:0}:host:not(.without-styles) ::ng-deep .ct-minor-seventh{display:block;position:relative;width:100%}:host:not(.without-styles) ::ng-deep .ct-minor-seventh:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:56.25%}:host:not(.without-styles) ::ng-deep .ct-minor-seventh:after{content:\"\";display:table;clear:both}:host:not(.without-styles) ::ng-deep .ct-minor-seventh>svg{display:block;position:absolute;top:0;left:0}:host:not(.without-styles) ::ng-deep .ct-major-seventh{display:block;position:relative;width:100%}:host:not(.without-styles) ::ng-deep .ct-major-seventh:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:53.33333%}:host:not(.without-styles) ::ng-deep .ct-major-seventh:after{content:\"\";display:table;clear:both}:host:not(.without-styles) ::ng-deep .ct-major-seventh>svg{display:block;position:absolute;top:0;left:0}:host:not(.without-styles) ::ng-deep .ct-octave{display:block;position:relative;width:100%}:host:not(.without-styles) ::ng-deep .ct-octave:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:50%}:host:not(.without-styles) ::ng-deep .ct-octave:after{content:\"\";display:table;clear:both}:host:not(.without-styles) ::ng-deep .ct-octave>svg{display:block;position:absolute;top:0;left:0}:host:not(.without-styles) ::ng-deep .ct-major-tenth{display:block;position:relative;width:100%}:host:not(.without-styles) ::ng-deep .ct-major-tenth:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:40%}:host:not(.without-styles) ::ng-deep .ct-major-tenth:after{content:\"\";display:table;clear:both}:host:not(.without-styles) ::ng-deep .ct-major-tenth>svg{display:block;position:absolute;top:0;left:0}:host:not(.without-styles) ::ng-deep .ct-major-eleventh{display:block;position:relative;width:100%}:host:not(.without-styles) ::ng-deep .ct-major-eleventh:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:37.5%}:host:not(.without-styles) ::ng-deep .ct-major-eleventh:after{content:\"\";display:table;clear:both}:host:not(.without-styles) ::ng-deep .ct-major-eleventh>svg{display:block;position:absolute;top:0;left:0}:host:not(.without-styles) ::ng-deep .ct-major-twelfth{display:block;position:relative;width:100%}:host:not(.without-styles) ::ng-deep .ct-major-twelfth:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:33.33333%}:host:not(.without-styles) ::ng-deep .ct-major-twelfth:after{content:\"\";display:table;clear:both}:host:not(.without-styles) ::ng-deep .ct-major-twelfth>svg{display:block;position:absolute;top:0;left:0}:host:not(.without-styles) ::ng-deep .ct-double-octave{display:block;position:relative;width:100%}:host:not(.without-styles) ::ng-deep .ct-double-octave:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:25%}:host:not(.without-styles) ::ng-deep .ct-double-octave:after{content:\"\";display:table;clear:both}:host:not(.without-styles) ::ng-deep .ct-double-octave>svg{display:block;position:absolute;top:0;left:0}"]
}] }
];
NgxChartistComponent.ctorParameters = function () {
return [
{ type: i0.ElementRef }
];
};
NgxChartistComponent.propDecorators = {
data: [{ type: i0.Input }],
type: [{ type: i0.Input }],
options: [{ type: i0.Input }],
lineSmooth: [{ type: i0.Input }],
responsiveOptions: [{ type: i0.Input }],
events: [{ type: i0.Input }]
};
return NgxChartistComponent;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
var NgxChartistModule = /** @class */ (function () {
function NgxChartistModule() {
}
NgxChartistModule.decorators = [
{ type: i0.NgModule, args: [{
imports: [
common.CommonModule
],
declarations: [NgxChartistComponent],
exports: [NgxChartistComponent],
providers: [
NgxChartistService
]
},] }
];
return NgxChartistModule;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
exports.NgxChartistService = NgxChartistService;
exports.NgxChartistComponent = NgxChartistComponent;
exports.NgxChartistModule = NgxChartistModule;
Object.defineProperty(exports, '__esModule', { value: true });
})));
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWNoYXJ0aXN0LnVtZC5qcy5tYXAiLCJzb3VyY2VzIjpbbnVsbCwibmc6Ly9uZ3gtY2hhcnRpc3QvbGliL25neC1jaGFydGlzdC5zZXJ2aWNlLnRzIiwibmc6Ly9uZ3gtY2hhcnRpc3QvbGliL25neC1jaGFydGlzdC5jb21wb25lbnQudHMiLCJuZzovL25neC1jaGFydGlzdC9saWIvbmd4LWNoYXJ0aXN0Lm1vZHVsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90IHVzZVxyXG50aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZVxyXG5MaWNlbnNlIGF0IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG5cclxuVEhJUyBDT0RFIElTIFBST1ZJREVEIE9OIEFOICpBUyBJUyogQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWVxyXG5LSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OIEFOWSBJTVBMSUVEXHJcbldBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBUSVRMRSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsXHJcbk1FUkNIQU5UQUJMSVRZIE9SIE5PTi1JTkZSSU5HRU1FTlQuXHJcblxyXG5TZWUgdGhlIEFwYWNoZSBWZXJzaW9uIDIuMCBMaWNlbnNlIGZvciBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcclxuYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG4vKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSAqL1xyXG5cclxudmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbihkLCBiKSB7XHJcbiAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XHJcbiAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxyXG4gICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcclxuICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cclxuICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcclxufVxyXG5cclxuZXhwb3J0IHZhciBfX2Fzc2lnbiA9IGZ1bmN0aW9uKCkge1xyXG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uIF9fYXNzaWduKHQpIHtcclxuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcclxuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVzdChzLCBlKSB7XHJcbiAgICB2YXIgdCA9IHt9O1xyXG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXHJcbiAgICAgICAgdFtwXSA9IHNbcF07XHJcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDApXHJcbiAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xyXG4gICAgcmV0dXJuIHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2RlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKSB7XHJcbiAgICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0LmRlY29yYXRlID09PSBcImZ1bmN0aW9uXCIpIHIgPSBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKTtcclxuICAgIGVsc2UgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGlmIChkID0gZGVjb3JhdG9yc1tpXSkgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XHJcbiAgICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19wYXJhbShwYXJhbUluZGV4LCBkZWNvcmF0b3IpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHsgZGVjb3JhdG9yKHRhcmdldCwga2V5LCBwYXJhbUluZGV4KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSkge1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUocmVzdWx0LnZhbHVlKTsgfSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxyXG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19nZW5lcmF0b3IodGhpc0FyZywgYm9keSkge1xyXG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcclxuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XHJcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xyXG4gICAgICAgIHdoaWxlIChfKSB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XHJcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcclxuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XHJcbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgZXhwb3J0cykge1xyXG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAoIWV4cG9ydHMuaGFzT3duUHJvcGVydHkocCkpIGV4cG9ydHNbcF0gPSBtW3BdO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX192YWx1ZXMobykge1xyXG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdLCBpID0gMDtcclxuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XHJcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZWFkKG8sIG4pIHtcclxuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcclxuICAgIGlmICghbSkgcmV0dXJuIG87XHJcbiAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cclxuICAgIGZpbmFsbHkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cclxuICAgIH1cclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkKCkge1xyXG4gICAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdCh2KSB7XHJcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNHZW5lcmF0b3IodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpZiAoZ1tuXSkgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxyXG4gICAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyB9XHJcbiAgICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jRGVsZWdhdG9yKG8pIHtcclxuICAgIHZhciBpLCBwO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpW25dID0gb1tuXSA/IGZ1bmN0aW9uICh2KSB7IHJldHVybiAocCA9ICFwKSA/IHsgdmFsdWU6IF9fYXdhaXQob1tuXSh2KSksIGRvbmU6IG4gPT09IFwicmV0dXJuXCIgfSA6IGYgPyBmKHYpIDogdjsgfSA6IGY7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNWYWx1ZXMobykge1xyXG4gICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgIHZhciBtID0gb1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0sIGk7XHJcbiAgICByZXR1cm4gbSA/IG0uY2FsbChvKSA6IChvID0gdHlwZW9mIF9fdmFsdWVzID09PSBcImZ1bmN0aW9uXCIgPyBfX3ZhbHVlcyhvKSA6IG9bU3ltYm9sLml0ZXJhdG9yXSgpLCBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaSk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgaVtuXSA9IG9bbl0gJiYgZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgdiA9IG9bbl0odiksIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHYuZG9uZSwgdi52YWx1ZSk7IH0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCBkLCB2KSB7IFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGZ1bmN0aW9uKHYpIHsgcmVzb2x2ZSh7IHZhbHVlOiB2LCBkb25lOiBkIH0pOyB9LCByZWplY3QpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ha2VUZW1wbGF0ZU9iamVjdChjb29rZWQsIHJhdykge1xyXG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cclxuICAgIHJldHVybiBjb29rZWQ7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnRTdGFyKG1vZCkge1xyXG4gICAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcclxuICAgIHZhciByZXN1bHQgPSB7fTtcclxuICAgIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayBpbiBtb2QpIGlmIChPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSByZXN1bHRba10gPSBtb2Rba107XHJcbiAgICByZXN1bHQuZGVmYXVsdCA9IG1vZDtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XHJcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xyXG59XHJcbiIsImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIENoYXJ0aXN0IGZyb20gJ2NoYXJ0aXN0JztcblxuZXhwb3J0IHR5cGUgSUNoYXJ0aXN0RXNjYXBlTWFwID0gQ2hhcnRpc3QuSUNoYXJ0aXN0RXNjYXBlTWFwO1xuZXhwb3J0IHR5cGUgSUNoYXJ0aXN0UGllQ2hhcnQgPSBDaGFydGlzdC5JQ2hhcnRpc3RQaWVDaGFydDtcbmV4cG9ydCB0eXBlIElDaGFydGlzdEJhckNoYXJ0ID0gQ2hhcnRpc3QuSUNoYXJ0aXN0QmFyQ2hhcnQ7XG5leHBvcnQgdHlwZSBJQ2hhcnRpc3RMaW5lQ2hhcnQgPSBDaGFydGlzdC5JQ2hhcnRpc3RMaW5lQ2hhcnQ7XG5leHBvcnQgdHlwZSBJQ2hhcnRpc3RDYW5kbGVDaGFydCA9IENoYXJ0aXN0LklDaGFydGlzdENhbmRsZUNoYXJ0O1xuZXhwb3J0IHR5cGUgSUZpeGVkU2NhbGVBeGlzU3RhdGljID0gQ2hhcnRpc3QuSUZpeGVkU2NhbGVBeGlzU3RhdGljO1xuZXhwb3J0IHR5cGUgSUF1dG9TY2FsZUF4aXNTdGF0aWMgPSBDaGFydGlzdC5JQXV0b1NjYWxlQXhpc1N0YXRpYztcbmV4cG9ydCB0eXBlIElTdGVwQXhpc1N0YXRpYyA9IENoYXJ0aXN0LklTdGVwQXhpc1N0YXRpYztcbmV4cG9ydCB0eXBlIElDaGFydGlzdFN2Z1N0YXRpYyA9IENoYXJ0aXN0LkNoYXJ0aXN0U3ZnU3RhdGljO1xuZXhwb3J0IHR5cGUgSUNoYXJ0aXN0SW50ZXJwb2xhdGlvblN0YXRpYyA9IENoYXJ0aXN0LkNoYXJ0aXN0SW50ZXJwb2xhdGlvblN0YXRpYztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTmd4Q2hhcnRpc3RTZXJ2aWNlIHtcblxuICBjb25zd