@rfprodz/client-d3-charts 1.2.21 → 1.2.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/interfaces/line-chart.interface.mjs +1 -1
- package/esm2020/lib/util/line-chart.util.mjs +20 -2
- package/fesm2015/rfprodz-client-d3-charts.mjs +19 -1
- package/fesm2015/rfprodz-client-d3-charts.mjs.map +1 -1
- package/fesm2020/rfprodz-client-d3-charts.mjs +19 -1
- package/fesm2020/rfprodz-client-d3-charts.mjs.map +1 -1
- package/lib/interfaces/line-chart.interface.d.ts +10 -0
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1jaGFydC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NsaWVudC1kMy1jaGFydHMvc3JjL2xpYi9pbnRlcmZhY2VzL2xpbmUtY2hhcnQuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxpbmVDaGFydERhdGFOb2RlIHtcbiAgdGltZXN0YW1wOiBudW1iZXI7XG4gIHZhbHVlOiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIFRMaW5lQ2hhcnREYXRhID0gSUxpbmVDaGFydERhdGFOb2RlW107XG5cbi8qKlxuICogRGF0ZSBmb3JtYXRzOlxuICogLSBkZWZhdWx0OiBgJHtkZH0vJHttbX0vJHt5eX0gJHtob3VyfToke21pbnV0ZX1gXG4gKiAtICdkZC9tbS95eXl5JzogYCR7ZGR9LyR7bW19LyR7eXl5eX1gXG4gKiAtICdkZC9tbS95eSc6IGAke2RkfS8ke21tfS8ke3l5fWBcbiAqIC0gJ21tL3l5eXknOiBgJHttbX0vJHt5eXl5fWBcbiAqIC0gJ3l5eXknOiBgJHt5eXl5fWBcbiAqL1xuZXhwb3J0IHR5cGUgVERhdGVGb3JtYXQgPSAnZGVmYXVsdCcgfCAnZGQvbW0veXl5eScgfCAnZGQvbW0veXknIHwgJ21tL3l5eXknIHwgJ3l5eXknO1xuXG5leHBvcnQgaW50ZXJmYWNlIElMaW5lQ2hhcnRPcHRpb25zIHtcbiAgY2hhcnRUaXRsZTogc3RyaW5nO1xuICB3aWR0aDogbnVtYmVyO1xuICBoZWlnaHQ6IG51bWJlcjtcbiAgbWFyZ2luOiB7XG4gICAgdG9wOiBudW1iZXI7XG4gICAgcmlnaHQ6IG51bWJlcjtcbiAgICBib3R0b206IG51bWJlcjtcbiAgICBsZWZ0OiBudW1iZXI7XG4gIH07XG4gIHRyYW5zaXRpb25EdXJhdGlvbjogbnVtYmVyO1xuICBkb3RSYWRpdXM6IG51bWJlcjtcbiAgeEF4aXNUaXRsZTogc3RyaW5nO1xuICB5QXhpc1RpdGxlOiBzdHJpbmc7XG4gIHRpY2tzOiB7XG4gICAgeDogbnVtYmVyO1xuICAgIHk6IG51bWJlcjtcbiAgfTtcbiAgZGlzcGxheUF4aXNMYWJlbHM6IGJvb2xlYW47XG4gIGRhdGVGb3JtYXQ6IFREYXRlRm9ybWF0O1xuICBsYWJlbFRleHRXcmFwV2lkdGg6IG51bWJlcjtcbiAgY29sb3I6IGQzLlNjYWxlT3JkaW5hbDxzdHJpbmcsIHN0cmluZz47XG59XG4iXX0=
|
|
@@ -22,6 +22,7 @@ export const defaultLineChartConfig = Object.freeze({
|
|
|
22
22
|
y: 10,
|
|
23
23
|
},
|
|
24
24
|
displayAxisLabels: true,
|
|
25
|
+
dateFormat: 'default',
|
|
25
26
|
labelTextWrapWidth: 20,
|
|
26
27
|
color: d3.scaleOrdinal(d3.schemeCategory10),
|
|
27
28
|
});
|
|
@@ -142,7 +143,24 @@ const createAxisX = (g, x, config) => {
|
|
|
142
143
|
const hour = hours < formattingOffset ? `0${hours}` : hours;
|
|
143
144
|
const minutes = date.getMinutes();
|
|
144
145
|
const minute = minutes < formattingOffset ? `0${minutes}` : minutes;
|
|
145
|
-
|
|
146
|
+
let formattedDate = `${dd}/${mm}/${yy} ${hour}:${minute}`;
|
|
147
|
+
switch (config.dateFormat) {
|
|
148
|
+
case 'dd/mm/yyyy':
|
|
149
|
+
formattedDate = `${dd}/${mm}/${year}`;
|
|
150
|
+
break;
|
|
151
|
+
case 'dd/mm/yy':
|
|
152
|
+
formattedDate = `${dd}/${mm}/${yy}`;
|
|
153
|
+
break;
|
|
154
|
+
case 'mm/yyyy':
|
|
155
|
+
formattedDate = `${mm}/${year}`;
|
|
156
|
+
break;
|
|
157
|
+
case 'yyyy':
|
|
158
|
+
formattedDate = `${year}`;
|
|
159
|
+
break;
|
|
160
|
+
default:
|
|
161
|
+
break;
|
|
162
|
+
}
|
|
163
|
+
return formattedDate;
|
|
146
164
|
}))
|
|
147
165
|
.append('text');
|
|
148
166
|
g.selectAll('text').call(wrapSvgText, config.labelTextWrapWidth);
|
|
@@ -263,4 +281,4 @@ export const drawLineChart = (container, data, options) => {
|
|
|
263
281
|
drawLinesDotsAndSetPointerEvents(g, x, y, config, data);
|
|
264
282
|
return config;
|
|
265
283
|
};
|
|
266
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1jaGFydC51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jbGllbnQtZDMtY2hhcnRzL3NyYy9saWIvdXRpbC9saW5lLWNoYXJ0LnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFHekIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFN0Q7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBc0IsTUFBTSxDQUFDLE1BQU0sQ0FBb0I7SUFDeEYsVUFBVSxFQUFFLEVBQUU7SUFDZCxLQUFLLEVBQUUsR0FBRztJQUNWLE1BQU0sRUFBRSxHQUFHO0lBQ1gsTUFBTSxFQUFFO1FBQ04sR0FBRyxFQUFFLEVBQUU7UUFDUCxLQUFLLEVBQUUsRUFBRTtRQUNULE1BQU0sRUFBRSxFQUFFO1FBQ1YsSUFBSSxFQUFFLEVBQUU7S0FDVDtJQUNELGtCQUFrQixFQUFFLEdBQUc7SUFDdkIsU0FBUyxFQUFFLEdBQUc7SUFDZCxVQUFVLEVBQUUsRUFBRTtJQUNkLFVBQVUsRUFBRSxFQUFFO0lBQ2QsS0FBSyxFQUFFO1FBQ0wsQ0FBQyxFQUFFLENBQUM7UUFDSixDQUFDLEVBQUUsRUFBRTtLQUNOO0lBQ0QsaUJBQWlCLEVBQUUsSUFBSTtJQUN2QixrQkFBa0IsRUFBRSxFQUFFO0lBQ3RCLEtBQUssRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztDQUM1QyxDQUFDLENBQUM7QUFFSDs7Ozs7R0FLRztBQUNILE1BQU0sZUFBZSxHQUFHLENBQUMsU0FBcUMsRUFBRSxNQUF5QixFQUFFLEVBQUU7SUFDM0YsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFLElBQUksUUFBUSxDQUFDO0lBRWxELEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEVB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LENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBRXhELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcblxuaW1wb3J0IHsgSUxpbmVDaGFydERhdGFOb2RlLCBJTGluZUNoYXJ0T3B0aW9ucywgVExpbmVDaGFydERhdGEgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2xpbmUtY2hhcnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IGdlbmVyYXRlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vY29uZmlndXJhdGlvbi51dGlsJztcblxuLyoqXG4gKiBUaGUgbGluZSBjaGFydCBkZWZhdWx0IGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBjb25zdCBkZWZhdWx0TGluZUNoYXJ0Q29uZmlnOiBJTGluZUNoYXJ0T3B0aW9ucyA9IE9iamVjdC5mcmVlemUoPElMaW5lQ2hhcnRPcHRpb25zPntcbiAgY2hhcnRUaXRsZTogJycsXG4gIHdpZHRoOiAzNTAsXG4gIGhlaWdodDogMzUwLFxuICBtYXJnaW46IHtcbiAgICB0b3A6IDcwLFxuICAgIHJpZ2h0OiA1MCxcbiAgICBib3R0b206IDUwLFxuICAgIGxlZnQ6IDUwLFxuICB9LFxuICB0cmFuc2l0aW9uRHVyYXRpb246IDQwMCxcbiAgZG90UmFkaXVzOiAzLjUsXG4gIHhBeGlzVGl0bGU6ICcnLFxuICB5QXhpc1RpdGxlOiAnJyxcbiAgdGlja3M6IHtcbiAgICB4OiA1LFxuICAgIHk6IDEwLFxuICB9LFxuICBkaXNwbGF5QXhpc0xhYmVsczogdHJ1ZSxcbiAgbGFiZWxUZXh0V3JhcFdpZHRoOiAyMCwgLy8gdGhlIG51bWJlciBvZiBwaXhlbHMgYWZ0ZXIgd2hpY2ggYSBsYWJlbCBuZWVkcyB0byBiZSBnaXZlbiBhIG5ldyBsaW5lXG4gIGNvbG9yOiBkMy5zY2FsZU9yZGluYWwoZDMuc2NoZW1lQ2F0ZWdvcnkxMCksXG59KTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY29udGFpbmVyIGZvciB0aGUgbGluZSBjaGFydC5cbiAqIEBwYXJhbSBjb250YWluZXIgdGhlIGNoYXJ0IGNvbnRhaW5lclxuICogQHBhcmFtIGNvbmZpZyB0aGUgY2hhcnQgY29uZmlndXJhdGlvblxuICogQHJldHVybnMgdGhlIG9iamVjdCB3aXRoIHRoZSBzdmcgZWxlbWVudCBhbmQgdGhlIGcgZWxlbWVudFxuICovXG5jb25zdCBjcmVhdGVDb250YWluZXIgPSAoY29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PiwgY29uZmlnOiBJTGluZUNoYXJ0T3B0aW9ucykgPT4ge1xuICBjb25zdCBpZCA9IGNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmlkID8/ICdsaW5lLTAnO1xuXG4gIGQzLnNlbGVjdChgIyR7aWR9YCkuc2VsZWN0KCdzdmcnKS5yZW1vdmUoKTtcbiAgY29uc3Qgc3ZnID0gZDNcbiAgICAuc2VsZWN0KGAjJHtpZH1gKVxuICAgIC5hcHBlbmQoJ3N2ZycpXG4gICAgLmF0dHIoJ3dpZHRoJywgY29uZmlnLndpZHRoICsgY29uZmlnLm1hcmdpbi5sZWZ0ICsgY29uZmlnLm1hcmdpbi5yaWdodClcbiAgICAuYXR0cignaGVpZ2h0JywgY29uZmlnLmhlaWdodCArIGNvbmZpZy5tYXJnaW4udG9wICsgY29uZmlnLm1hcmdpbi5ib3R0b20pXG4gICAgLmF0dHIoJ2NsYXNzJywgaWQpO1xuICBjb25zdCBnID0gc3ZnLmFwcGVuZCgnZycpLmF0dHIoJ3RyYW5zZm9ybScsIGB0cmFuc2xhdGUoJHtjb25maWcubWFyZ2luLmxlZnR9LCR7Y29uZmlnLm1hcmdpbi50b3AgLyAyfSlgKTtcblxuICByZXR1cm4geyBzdmcsIGcgfTtcbn07XG5cbi8qKlxuICogV3JhcHMgdGhlIGxpbmUgY2hhcnQgYXhpcyBsYWJlbHMgdGV4dC5cbiAqIEBwYXJhbSBzdmdUZXh0IHRoZSBzdmcgdGV4dCBlbGVtZW50c1xuICogQHBhcmFtIHdpZHRoIHRoZSBjaGFydCBheGlzIGxhYmVsIHdpZHRoXG4gKi9cbmNvbnN0IHdyYXBTdmdUZXh0ID0gKHN2Z1RleHQ6IGQzLlNlbGVjdGlvbjxkMy5CYXNlVHlwZSwgdW5rbm93biwgU1ZHR0VsZW1lbnQsIHVua25vd24+LCB3aWR0aDogbnVtYmVyKSA9PiB7XG4gIHN2Z1RleHQuZWFjaChmdW5jdGlvbiAodGhpczogZDMuQmFzZVR5cGUpIHtcbiAgICBjb25zdCB0ZXh0ID0gZDMuc2VsZWN0PGQzLkJhc2VUeXBlLCBzdHJpbmc+KHRoaXMpO1xuICAgIGNvbnN0IHdvcmRzID0gdGV4dC50ZXh0KCkuc3BsaXQoL1xccysvKS5yZXZlcnNlKCk7XG4gICAgbGV0IGxpbmU6IHN0cmluZ1tdID0gW107XG4gICAgbGV0IGxpbmVOdW1iZXIgPSAwO1xuICAgIGNvbnN0IGxpbmVIZWlnaHQgPSAxLjQ7XG4gICAgY29uc3QgeSA9IHRleHQuYXR0cigneScpO1xuICAgIGNvbnN0IHggPSB0ZXh0LmF0dHIoJ3gnKTtcbiAgICBjb25zdCBkeSA9IHBhcnNlRmxvYXQodGV4dC5hdHRyKCdkeScpID8/IDApO1xuICAgIGxldCB0c3BhbiA9IHRleHQudGV4dChudWxsKS5hcHBlbmQoJ3RzcGFuJykuYXR0cigneCcsIHgpLmF0dHIoJ3knLCB5KS5hdHRyKCdkeScsIGAke2R5fWVtYCk7IC8vIGF4aXMgbGFiZWxcblxuICAgIGxldCB3b3JkID0gd29yZHMucG9wKCk7XG5cbiAgICB3aGlsZSAodHlwZW9mIHdvcmQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBsaW5lLnB1c2god29yZCA/PyAnJyk7XG4gICAgICB0c3Bhbi50ZXh0KGxpbmUuam9pbignICcpKTtcbiAgICAgIGlmICgodHNwYW4ubm9kZSgpPy5nZXRDb21wdXRlZFRleHRMZW5ndGgoKSA/PyAwKSA+IHdpZHRoKSB7XG4gICAgICAgIGxpbmUucG9wKCk7XG4gICAgICAgIHRzcGFuLnRleHQobGluZS5qb2luKCcgJykpO1xuICAgICAgICBsaW5lID0gW3dvcmQgPz8gJyddO1xuICAgICAgICBsaW5lTnVtYmVyICs9IDE7XG4gICAgICAgIHRzcGFuID0gdGV4dFxuICAgICAgICAgIC5hcHBlbmQoJ3RzcGFuJylcbiAgICAgICAgICAuYXR0cigneCcsIDApXG4gICAgICAgICAgLmF0dHIoJ3knLCB5KVxuICAgICAgICAgIC5hdHRyKCdkeScsIGAke2xpbmVOdW1iZXIgKiBsaW5lSGVpZ2h0ICsgZHl9ZW1gKVxuICAgICAgICAgIC50ZXh0KHdvcmQgPz8gJycpO1xuICAgICAgfVxuICAgICAgd29yZCA9IHdvcmRzLnBvcCgpO1xuICAgIH1cbiAgfSk7XG59O1xuXG4vKipcbiAqIENyZWF0ZXMgdGhlIGxlZ2VuZC5cbiAqIEBwYXJhbSBnIHRoZSBzdmcgZyBlbGVtZW50XG4gKiBAcGFyYW0gY29uZmlnIHRoZSBjaGFydCBjb25maWd1cmF0aW9uXG4gKi9cbmNvbnN0IGNyZWF0ZUxlZ2VuZCA9IChnOiBkMy5TZWxlY3Rpb248U1ZHR0VsZW1lbnQsIHVua25vd24sIEhUTUxFbGVtZW50LCB1bmtub3duPiwgY29uZmlnOiBJTGluZUNoYXJ0T3B0aW9ucykgPT4ge1xuICBpZiAoY29uZmlnLmRpc3BsYXlBeGlzTGFiZWxzICYmIGNvbmZpZy54QXhpc1RpdGxlICE9PSAnJykge1xuICAgIGcuYXBwZW5kKCdnJylcbiAgICAgIC5hdHRyKCd0cmFuc2Zvcm0nLCBgdHJhbnNsYXRlKDAsICR7Y29uZmlnLmhlaWdodCArIGNvbmZpZy5tYXJnaW4uYm90dG9tfSlgKVxuICAgICAgLmFwcGVuZCgndGV4dCcpXG4gICAgICAuc3R5bGUoJ2ZvbnQtc2l6ZScsICcxMnB4JylcbiAgICAgIC5hdHRyKCdjbGFzcycsICdsZWdlbmQnKVxuICAgICAgLmF0dHIoJ2R4JywgJzEuNWVtJylcbiAgICAgIC5hdHRyKCdkeScsICcxZW0nKVxuICAgICAgLnRleHQoYHggLSAke2NvbmZpZy54QXhpc1RpdGxlfWApO1xuICB9XG5cbiAgaWYgKGNvbmZpZy5kaXNwbGF5QXhpc0xhYmVscyAmJiBjb25maWcueUF4aXNUaXRsZSAhPT0gJycpIHtcbiAgICBnLmFwcGVuZCgnZycpXG4gICAgICAuYXR0cigndHJhbnNmb3JtJywgYHRyYW5zbGF0ZSgwLCAke2NvbmZpZy5oZWlnaHQgKyBjb25maWcubWFyZ2luLmJvdHRvbX0pYClcbiAgICAgIC5hcHBlbmQoJ3RleHQnKVxuICAgICAgLnN0eWxlKCdmb250LXNpemUnLCAnMTJweCcpXG4gICAgICAuYXR0cignY2xhc3MnLCAnbGVnZW5kJylcbiAgICAgIC5hdHRyKCdkeCcsICcxLjVlbScpXG4gICAgICAuYXR0cignZHknLCAnMi41ZW0nKVxuICAgICAgLnRleHQoYHkgLSAke2NvbmZpZy55QXhpc1RpdGxlfWApO1xuICB9XG5cbiAgaWYgKGNvbmZpZy5jaGFydFRpdGxlICE9PSAnJykge1xuICAgIGcuYXBwZW5kKCdnJylcbiAgICAgIC5hdHRyKCd0cmFuc2Zvcm0nLCBgdHJhbnNsYXRlKDAsIDApYClcbiAgICAgIC5hcHBlbmQoJ3RleHQnKVxuICAgICAgLnN0eWxlKCdmb250LXNpemUnLCAnMTJweCcpXG4gICAgICAuYXR0cignY2xhc3MnLCAnbGVnZW5kJylcbiAgICAgIC5hdHRyKCdkeCcsICcxLjVlbScpXG4gICAgICAuYXR0cignZHknLCAnLTJlbScpXG4gICAgICAudGV4dChjb25maWcuY2hhcnRUaXRsZSk7XG4gIH1cbn07XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgeCBheGlzLlxuICogQHBhcmFtIGcgdGhlIHN2ZyBnIGVsZW1lbnRcbiAqIEBwYXJhbSB4IHRoZSB4IGF4aXMgc2NhbGVcbiAqIEBwYXJhbSBjb25maWcgdGhlIGNoYXJ0IGNvbmZpZ3VyYXRpb25cbiAqL1xuY29uc3QgY3JlYXRlQXhpc1ggPSAoXG4gIGc6IGQzLlNlbGVjdGlvbjxTVkdHRWxlbWVudCwgdW5rbm93biwgSFRNTEVsZW1lbnQsIHVua25vd24+LFxuICB4OiBkMy5TY2FsZVRpbWU8bnVtYmVyLCBudW1iZXI+LFxuICBjb25maWc6IElMaW5lQ2hhcnRPcHRpb25zLFxuKSA9PiB7XG4gIGNvbnN0IHhMYWJlbHMgPSBnXG4gICAgLmFwcGVuZCgnZycpXG4gICAgLmF0dHIoJ3RyYW5zZm9ybScsIGB0cmFuc2xhdGUoMCwgJHtjb25maWcuaGVpZ2h0fSlgKVxuICAgIC5jYWxsKFxuICAgICAgZDNcbiAgICAgICAgLmF4aXNCb3R0b20oeClcbiAgICAgICAgLnRpY2tzKGNvbmZpZy50aWNrcy54KVxuICAgICAgICAudGlja0Zvcm1hdChkID0+IHtcbiAgICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoZC52YWx1ZU9mKCkpO1xuICAgICAgICAgIGNvbnN0IGZvcm1hdHRpbmdPZmZzZXQgPSAxMDtcbiAgICAgICAgICBjb25zdCBkYXkgPSBkYXRlLmdldERhdGUoKTtcbiAgICAgICAgICBjb25zdCBkZCA9IGRheSA8IGZvcm1hdHRpbmdPZmZzZXQgPyBgMCR7ZGF5fWAgOiBkYXk7XG4gICAgICAgICAgY29uc3QgbW9udGggPSBkYXRlLmdldE1vbnRoKCkgKyAxO1xuICAgICAgICAgIGNvbnN0IG1tID0gbW9udGggPCBmb3JtYXR0aW5nT2Zmc2V0ID8gYDAke21vbnRofWAgOiBtb250aDtcbiAgICAgICAgICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgY29uc3QgeXkgPSB5ZWFyLnNsaWNlKDIpO1xuICAgICAgICAgIGNvbnN0IGhvdXJzID0gZGF0ZS5nZXRIb3VycygpO1xuICAgICAgICAgIGNvbnN0IGhvdXIgPSBob3VycyA8IGZvcm1hdHRpbmdPZmZzZXQgPyBgMCR7aG91cnN9YCA6IGhvdXJzO1xuICAgICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBkYXRlLmdldE1pbnV0ZXMoKTtcbiAgICAgICAgICBjb25zdCBtaW51dGUgPSBtaW51dGVzIDwgZm9ybWF0dGluZ09mZnNldCA/IGAwJHttaW51dGVzfWAgOiBtaW51dGVzO1xuICAgICAgICAgIHJldHVybiBgJHtkZH0vJHttbX0vJHt5eX0gJHtob3VyfToke21pbnV0ZX1gO1xuICAgICAgICB9KSxcbiAgICApXG4gICAgLmFwcGVuZCgndGV4dCcpO1xuXG4gIGcuc2VsZWN0QWxsKCd0ZXh0JykuY2FsbCh3cmFwU3ZnVGV4dCwgY29uZmlnLmxhYmVsVGV4dFdyYXBXaWR0aCk7XG5cbiAgaWYgKGNvbmZpZy5kaXNwbGF5QXhpc0xhYmVscykge1xuICAgIHhMYWJlbHMuYXR0cigndHJhbnNmb3JtJywgYHRyYW5zbGF0ZSgke2NvbmZpZy53aWR0aH0sIDApYCkuYXR0cignY2xhc3MnLCAnbGVnZW5kJykuYXR0cignZHgnLCAnMS41ZW0nKS5hdHRyKCdkeScsICcwLjdlbScpLnRleHQoJ3gnKTtcbiAgfVxufTtcblxuLyoqXG4gKiBDcmVhdGVzIHRoZSB5IGF4aXMuXG4gKiBAcGFyYW0gZyB0aGUgc3ZnIGcgZWxlbWVudFxuICogQHBhcmFtIHkgdGhlIHkgYXhpcyBzY2FsZVxuICogQHBhcmFtIGNvbmZpZyB0aGUgY2hhcnQgY29uZmlndXJhdGlvblxuICovXG5jb25zdCBjcmVhdGVBeGlzWSA9IChcbiAgZzogZDMuU2VsZWN0aW9uPFNWR0dFbGVtZW50LCB1bmtub3duLCBIVE1MRWxlbWVudCwgdW5rbm93bj4sXG4gIHk6IGQzLlNjYWxlTGluZWFyPG51bWJlciwgbnVtYmVyPixcbiAgY29uZmlnOiBJTGluZUNoYXJ0T3B0aW9ucyxcbikgPT4ge1xuICBjb25zdCB5TGFiZWxzID0gZ1xuICAgIC5hcHBlbmQoJ2cnKVxuICAgIC5jYWxsKFxuICAgICAgZDNcbiAgICAgICAgLmF4aXNMZWZ0KHkpXG4gICAgICAgIC50aWNrcyhjb25maWcudGlja3MueSlcbiAgICAgICAgLnRpY2tGb3JtYXQoZCA9PiBgJHtkfWApLFxuICAgIClcbiAgICAuYXBwZW5kKCd0ZXh0Jyk7XG5cbiAgaWYgKGNvbmZpZy5kaXNwbGF5QXhpc0xhYmVscykge1xuICAgIHlMYWJlbHMuYXR0cignY2xhc3MnLCAnbGVnZW5kJykuYXR0cignZHknLCAnLTEuNWVtJykuYXR0cignY2xhc3MnLCAnbGVnZW5kJykudGV4dCgneScpO1xuICB9XG59O1xuXG4vKipcbiAqIFRoZSBtb3VzZSBvdmVyIGV2ZW50IGhhbmRsZXIuXG4gKiBAcGFyYW0gc2VsZiBhbiBzdmcgY2lyY2xlIGVsZW1lbnRcbiAqIEBwYXJhbSBkIHRoZSBjaGFydCBkYXRhIG5vZGVcbiAqIEBwYXJhbSBnIHRoZSBzdmcgZyBlbGVtZW50XG4gKiBAcGFyYW0gY29uZmlnIHRoZSBjaGFydCBjb25maWd1cmF0aW9uXG4gKi9cbmNvbnN0IG9uTW91c2VPdmVyID0gKFxuICBzZWxmOiBTVkdDaXJjbGVFbGVtZW50LFxuICBkOiBJTGluZUNoYXJ0RGF0YU5vZGUsXG4gIGc6IGQzLlNlbGVjdGlvbjxTVkdHRWxlbWVudCwgdW5rbm93biwgSFRNTEVsZW1lbnQsIHVua25vd24+LFxuICBjb25maWc6IElMaW5lQ2hhcnRPcHRpb25zLFxuKSA9PiB7XG4gIGNvbnN0IGR1cmF0aW9uID0gNDAwO1xuICBkMy5zZWxlY3Qoc2VsZilcbiAgICAudHJhbnNpdGlvbigpXG4gICAgLmR1cmF0aW9uKGR1cmF0aW9uKVxuICAgIC5hdHRyKCdyJywgY29uZmlnLmRvdFJhZGl1cyAqIDIpO1xuXG4gIGNvbnN0IHRvb2x0aXBTaGlmdCA9IDQ7XG4gIGNvbnN0IHRvb2x0aXBEeSA9IC0xMDtcbiAgZy5hcHBlbmQoJ3RleHQnKVxuICAgIC5hdHRyKCdjbGFzcycsICd2YWwnKVxuICAgIC5zdHlsZSgnZm9udC1zaXplJywgJzExcHgnKVxuICAgIC5hdHRyKCdkeCcsICgpID0+IChjb25maWcud2lkdGggLSBjb25maWcubWFyZ2luLmxlZnQgLSBjb25maWcubWFyZ2luLnJpZ2h0KSAvIHRvb2x0aXBTaGlmdClcbiAgICAuYXR0cignZHknLCAoKSA9PiB0b29sdGlwRHkpXG4gICAgLnRleHQoKCkgPT4gYCR7ZC52YWx1ZX0gKCR7bmV3IERhdGUoZC50aW1lc3RhbXApLnRvVVRDU3RyaW5nKCl9KWApO1xufTtcblxuLyoqXG4gKiBUaGUgbW91c2Ugb3V0IGV2ZW50IGhhbmRsZXIuXG4gKiBAcGFyYW0gc2VsZiBhbiBzdmcgY2lyY2xlIGVsZW1lbnRcbiAqIEBwYXJhbSBjb25maWcgdGhlIGNoYXJ0IGNvbmZpZ3VyYXRpb25cbiAqL1xuY29uc3Qgb25Nb3VzZU91dCA9IChzZWxmOiBTVkdDaXJjbGVFbGVtZW50LCBjb25maWc6IElMaW5lQ2hhcnRPcHRpb25zKSA9PiB7XG4gIGNvbnN0IGR1cmF0aW9uID0gNDAwO1xuICBkMy5zZWxlY3Qoc2VsZikuYXR0cignY2xhc3MnLCAnZG90Jyk7XG4gIGQzLnNlbGVjdChzZWxmKS50cmFuc2l0aW9uKCkuZHVyYXRpb24oZHVyYXRpb24pLmF0dHIoJ3InLCBjb25maWcuZG90UmFkaXVzKTtcblxuICBkMy5zZWxlY3RBbGwoJy52YWwnKS5yZW1vdmUoKTtcbn07XG5cbi8qKlxuICogRHJhd3MgdGhlIGNoYXJ0IGxpbmVzLCBkb3RzLCBhbmQgc2V0cyB0aGUgbW91c2UgcG9pbnRlciBldmVudHMuXG4gKiBAcGFyYW0gZyB0aGUgc3ZnIGcgZWxlbWVudFxuICogQHBhcmFtIHggdGhlIHggYXhpcyBzY2FsZVxuICogQHBhcmFtIHkgdGhlIHkgYXhpcyBzY2FsZVxuICogQHBhcmFtIGNvbmZpZyB0aGUgY2hhcnQgY29uZmlndXJhdGlvblxuICogQHBhcmFtIGRhdGEgdGhlIGNoYXJ0IGRhdGFcbiAqL1xuY29uc3QgZHJhd0xpbmVzRG90c0FuZFNldFBvaW50ZXJFdmVudHMgPSAoXG4gIGc6IGQzLlNlbGVjdGlvbjxTVkdHRWxlbWVudCwgdW5rbm93biwgSFRNTEVsZW1lbnQsIHVua25vd24+LFxuICB4OiBkMy5TY2FsZVRpbWU8bnVtYmVyLCBudW1iZXI+LFxuICB5OiBkMy5TY2FsZUxpbmVhcjxudW1iZXIsIG51bWJlcj4sXG4gIGNvbmZpZzogSUxpbmVDaGFydE9wdGlvbnMsXG4gIGRhdGE6IFRMaW5lQ2hhcnREYXRhLFxuKSA9PiB7XG4gIGNvbnN0IGxpbmUgPSBkM1xuICAgIC5saW5lPElMaW5lQ2hhcnREYXRhTm9kZT4oKVxuICAgIC54KGQgPT4geChkLnRpbWVzdGFtcCkpXG4gICAgLnkoZCA9PiB5KGQudmFsdWUpKVxuICAgIC5jdXJ2ZShkMy5jdXJ2ZU1vbm90b25lWCk7XG5cbiAgZy5hcHBlbmQoJ3BhdGgnKS5hdHRyKCdpZCcsICdsaW5lJykuc3R5bGUoJ2ZpbGwnLCAnbm9uZScpLnN0eWxlKCdzdHJva2UnLCAncmVkJykuc3R5bGUoJ3N0cm9rZS13aWR0aCcsICcycHgnKS5hdHRyKCdkJywgbGluZShkYXRhKSk7XG5cbiAgZy5zZWxlY3RBbGwoJy5kb3QnKVxuICAgIC5kYXRhKGRhdGEpXG4gICAgLmVudGVyKClcbiAgICAuYXBwZW5kKCdjaXJjbGUnKVxuICAgIC5hdHRyKCdjbGFzcycsICdkb3QnKVxuICAgIC5zdHlsZSgncG9pbnRlci1ldmVudHMnLCAnYWxsJylcbiAgICAuc3R5bGUoJ2ZpbGwnLCAoZCwgaSkgPT4gY29uZmlnLmNvbG9yKGkudG9TdHJpbmcoKSkpXG4gICAgLm9uKCdtb3VzZW92ZXInLCBmdW5jdGlvbiAodGhpcywgZXZlbnQsIGQpIHtcbiAgICAgIHJldHVybiBvbk1vdXNlT3Zlcih0aGlzLCBkLCBnLCBjb25maWcpO1xuICAgIH0pXG4gICAgLm9uKCdtb3VzZW91dCcsIGZ1bmN0aW9uICh0aGlzKSB7XG4gICAgICByZXR1cm4gb25Nb3VzZU91dCh0aGlzLCBjb25maWcpO1xuICAgIH0pXG4gICAgLmF0dHIoJ2N4JywgZnVuY3Rpb24gKHRoaXMsIGQpIHtcbiAgICAgIHJldHVybiB4KGQudGltZXN0YW1wKTtcbiAgICB9KVxuICAgIC5hdHRyKCdjeScsIGZ1bmN0aW9uICh0aGlzLCBkKSB7XG4gICAgICByZXR1cm4geShkLnZhbHVlKTtcbiAgICB9KVxuICAgIC5hdHRyKCdyJywgMClcbiAgICAudHJhbnNpdGlvbigpXG4gICAgLmVhc2UoZDMuZWFzZUxpbmVhcilcbiAgICAuZHVyYXRpb24oY29uZmlnLnRyYW5zaXRpb25EdXJhdGlvbilcbiAgICAuZGVsYXkoKGQsIGkpID0+IHtcbiAgICAgIGNvbnN0IG11bHRpcGxpZXIgPSA1MDtcbiAgICAgIHJldHVybiBpICogbXVsdGlwbGllcjtcbiAgICB9KVxuICAgIC5hdHRyKCdyJywgY29uZmlnLmRvdFJhZGl1cyk7XG59O1xuXG4vKipcbiAqIERyYXdzIHRoZSBsaW5lIGNoYXJ0LlxuICogQHBhcmFtIGNvbnRhaW5lciB0aGUgY2hhcnQgY29udGFpbmVyXG4gKiBAcGFyYW0gZGF0YSB0aGUgY2hhcnQgZGF0YVxuICogQHBhcmFtIG9wdGlvbnMgdGhlIGNoYXJ0IG9wdGlvbnNcbiAqIEByZXR1cm5zIHRoZSBjaGFydCBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBkcmF3TGluZUNoYXJ0ID0gKGNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4sIGRhdGE6IFRMaW5lQ2hhcnREYXRhLCBvcHRpb25zPzogUGFydGlhbDxJTGluZUNoYXJ0T3B0aW9ucz4pID0+IHtcbiAgY29uc3QgY29uZmlnOiBJTGluZUNoYXJ0T3B0aW9ucyA9IGdlbmVyYXRlQ29uZmlndXJhdGlvbjxJTGluZUNoYXJ0T3B0aW9ucz4oZGVmYXVsdExpbmVDaGFydENvbmZpZywgb3B0aW9ucywge30pO1xuXG4gIGNvbnN0IHsgZyB9ID0gY3JlYXRlQ29udGFpbmVyKGNvbnRhaW5lciwgY29uZmlnKTtcblxuICBjb25zdCB4ID0gZDMuc2NhbGVUaW1lKFswLCBjb25maWcud2lkdGhdKS5kb21haW4oW01hdGgubWluKC4uLmRhdGEubWFwKGQgPT4gZC50aW1lc3RhbXApKSwgTWF0aC5tYXgoLi4uZGF0YS5tYXAoZCA9PiBkLnRpbWVzdGFtcCkpXSk7XG4gIGNvbnN0IHkgPSBkMy5zY2FsZUxpbmVhcihbY29uZmlnLmhlaWdodCwgMF0pLmRvbWFpbihbMCwgZDMubWF4KGRhdGEsIGQgPT4gZC52YWx1ZSkgPz8gMV0pO1xuXG4gIGNyZWF0ZUF4aXNYKGcsIHgsIGNvbmZpZyk7XG5cbiAgY3JlYXRlQXhpc1koZywgeSwgY29uZmlnKTtcblxuICBjcmVhdGVMZWdlbmQoZywgY29uZmlnKTtcblxuICBkcmF3TGluZXNEb3RzQW5kU2V0UG9pbnRlckV2ZW50cyhnLCB4LCB5LCBjb25maWcsIGRhdGEpO1xuXG4gIHJldHVybiBjb25maWc7XG59O1xuIl19
|
|
284
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1jaGFydC51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jbGllbnQtZDMtY2hhcnRzL3NyYy9saWIvdXRpbC9saW5lLWNoYXJ0LnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFHekIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFN0Q7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBc0IsTUFBTSxDQUFDLE1BQU0sQ0FBb0I7SUFDeEYsVUFBVSxFQUFFLEVBQUU7SUFDZCxLQUFLLEVBQUUsR0FBRztJQUNWLE1BQU0sRUFBRSxHQUFHO0lBQ1gsTUFBTSxFQUFFO1FBQ04sR0FBRyxFQUFFLEVBQUU7UUFDUCxLQUFLLEVBQUUsRUFBRTtRQUNULE1BQU0sRUFBRSxFQUFFO1FBQ1YsSUFBSSxFQUFFLEVBQUU7S0FDVDtJQUNELGtCQUFrQixFQUFFLEdBQUc7SUFDdkIsU0FBUyxFQUFFLEdBQUc7SUFDZCxVQUFVLEVBQUUsRUFBRTtJQUNkLFVBQVUsRUFBRSxFQUFFO0lBQ2QsS0FBSyxFQUFFO1FBQ0wsQ0FBQyxFQUFFLENBQUM7UUFDSixDQUFDLEVBQUUsRUFBRTtLQUNOO0lBQ0QsaUJBQWlCLEVBQUUsSUFBSTtJQUN2QixVQUFVLEVBQUUsU0FBUztJQUNyQixrQkFBa0IsRUFBRSxFQUFFO0lBQ3RCLEtBQUssRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztDQUM1QyxDQUFDLENBQUM7QUFFSDs7Ozs7R0FLRztBQUNILE1BQU0sZUFBZSxHQUFHLENBQUMsU0FBcUMsRUFBRSxNQUF5QixFQUFFLEVBQUU7SUFDM0YsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFLElBQUksUUFBUSxDQUFDO0lBRWxELEVBQUUsQ0FBQyxN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Q0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckksTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUUxRixXQUFXLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUUxQixXQUFXLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUUxQixZQUFZLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRXhCLGdDQUFnQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUV4RCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XG5cbmltcG9ydCB7IElMaW5lQ2hhcnREYXRhTm9kZSwgSUxpbmVDaGFydE9wdGlvbnMsIFRMaW5lQ2hhcnREYXRhIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9saW5lLWNoYXJ0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBnZW5lcmF0ZUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuL2NvbmZpZ3VyYXRpb24udXRpbCc7XG5cbi8qKlxuICogVGhlIGxpbmUgY2hhcnQgZGVmYXVsdCBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgY29uc3QgZGVmYXVsdExpbmVDaGFydENvbmZpZzogSUxpbmVDaGFydE9wdGlvbnMgPSBPYmplY3QuZnJlZXplKDxJTGluZUNoYXJ0T3B0aW9ucz57XG4gIGNoYXJ0VGl0bGU6ICcnLFxuICB3aWR0aDogMzUwLFxuICBoZWlnaHQ6IDM1MCxcbiAgbWFyZ2luOiB7XG4gICAgdG9wOiA3MCxcbiAgICByaWdodDogNTAsXG4gICAgYm90dG9tOiA1MCxcbiAgICBsZWZ0OiA1MCxcbiAgfSxcbiAgdHJhbnNpdGlvbkR1cmF0aW9uOiA0MDAsXG4gIGRvdFJhZGl1czogMy41LFxuICB4QXhpc1RpdGxlOiAnJyxcbiAgeUF4aXNUaXRsZTogJycsXG4gIHRpY2tzOiB7XG4gICAgeDogNSxcbiAgICB5OiAxMCxcbiAgfSxcbiAgZGlzcGxheUF4aXNMYWJlbHM6IHRydWUsXG4gIGRhdGVGb3JtYXQ6ICdkZWZhdWx0JyxcbiAgbGFiZWxUZXh0V3JhcFdpZHRoOiAyMCwgLy8gdGhlIG51bWJlciBvZiBwaXhlbHMgYWZ0ZXIgd2hpY2ggYSBsYWJlbCBuZWVkcyB0byBiZSBnaXZlbiBhIG5ldyBsaW5lXG4gIGNvbG9yOiBkMy5zY2FsZU9yZGluYWwoZDMuc2NoZW1lQ2F0ZWdvcnkxMCksXG59KTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY29udGFpbmVyIGZvciB0aGUgbGluZSBjaGFydC5cbiAqIEBwYXJhbSBjb250YWluZXIgdGhlIGNoYXJ0IGNvbnRhaW5lclxuICogQHBhcmFtIGNvbmZpZyB0aGUgY2hhcnQgY29uZmlndXJhdGlvblxuICogQHJldHVybnMgdGhlIG9iamVjdCB3aXRoIHRoZSBzdmcgZWxlbWVudCBhbmQgdGhlIGcgZWxlbWVudFxuICovXG5jb25zdCBjcmVhdGVDb250YWluZXIgPSAoY29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PiwgY29uZmlnOiBJTGluZUNoYXJ0T3B0aW9ucykgPT4ge1xuICBjb25zdCBpZCA9IGNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmlkID8/ICdsaW5lLTAnO1xuXG4gIGQzLnNlbGVjdChgIyR7aWR9YCkuc2VsZWN0KCdzdmcnKS5yZW1vdmUoKTtcbiAgY29uc3Qgc3ZnID0gZDNcbiAgICAuc2VsZWN0KGAjJHtpZH1gKVxuICAgIC5hcHBlbmQoJ3N2ZycpXG4gICAgLmF0dHIoJ3dpZHRoJywgY29uZmlnLndpZHRoICsgY29uZmlnLm1hcmdpbi5sZWZ0ICsgY29uZmlnLm1hcmdpbi5yaWdodClcbiAgICAuYXR0cignaGVpZ2h0JywgY29uZmlnLmhlaWdodCArIGNvbmZpZy5tYXJnaW4udG9wICsgY29uZmlnLm1hcmdpbi5ib3R0b20pXG4gICAgLmF0dHIoJ2NsYXNzJywgaWQpO1xuICBjb25zdCBnID0gc3ZnLmFwcGVuZCgnZycpLmF0dHIoJ3RyYW5zZm9ybScsIGB0cmFuc2xhdGUoJHtjb25maWcubWFyZ2luLmxlZnR9LCR7Y29uZmlnLm1hcmdpbi50b3AgLyAyfSlgKTtcblxuICByZXR1cm4geyBzdmcsIGcgfTtcbn07XG5cbi8qKlxuICogV3JhcHMgdGhlIGxpbmUgY2hhcnQgYXhpcyBsYWJlbHMgdGV4dC5cbiAqIEBwYXJhbSBzdmdUZXh0IHRoZSBzdmcgdGV4dCBlbGVtZW50c1xuICogQHBhcmFtIHdpZHRoIHRoZSBjaGFydCBheGlzIGxhYmVsIHdpZHRoXG4gKi9cbmNvbnN0IHdyYXBTdmdUZXh0ID0gKHN2Z1RleHQ6IGQzLlNlbGVjdGlvbjxkMy5CYXNlVHlwZSwgdW5rbm93biwgU1ZHR0VsZW1lbnQsIHVua25vd24+LCB3aWR0aDogbnVtYmVyKSA9PiB7XG4gIHN2Z1RleHQuZWFjaChmdW5jdGlvbiAodGhpczogZDMuQmFzZVR5cGUpIHtcbiAgICBjb25zdCB0ZXh0ID0gZDMuc2VsZWN0PGQzLkJhc2VUeXBlLCBzdHJpbmc+KHRoaXMpO1xuICAgIGNvbnN0IHdvcmRzID0gdGV4dC50ZXh0KCkuc3BsaXQoL1xccysvKS5yZXZlcnNlKCk7XG4gICAgbGV0IGxpbmU6IHN0cmluZ1tdID0gW107XG4gICAgbGV0IGxpbmVOdW1iZXIgPSAwO1xuICAgIGNvbnN0IGxpbmVIZWlnaHQgPSAxLjQ7XG4gICAgY29uc3QgeSA9IHRleHQuYXR0cigneScpO1xuICAgIGNvbnN0IHggPSB0ZXh0LmF0dHIoJ3gnKTtcbiAgICBjb25zdCBkeSA9IHBhcnNlRmxvYXQodGV4dC5hdHRyKCdkeScpID8/IDApO1xuICAgIGxldCB0c3BhbiA9IHRleHQudGV4dChudWxsKS5hcHBlbmQoJ3RzcGFuJykuYXR0cigneCcsIHgpLmF0dHIoJ3knLCB5KS5hdHRyKCdkeScsIGAke2R5fWVtYCk7IC8vIGF4aXMgbGFiZWxcblxuICAgIGxldCB3b3JkID0gd29yZHMucG9wKCk7XG5cbiAgICB3aGlsZSAodHlwZW9mIHdvcmQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBsaW5lLnB1c2god29yZCA/PyAnJyk7XG4gICAgICB0c3Bhbi50ZXh0KGxpbmUuam9pbignICcpKTtcbiAgICAgIGlmICgodHNwYW4ubm9kZSgpPy5nZXRDb21wdXRlZFRleHRMZW5ndGgoKSA/PyAwKSA+IHdpZHRoKSB7XG4gICAgICAgIGxpbmUucG9wKCk7XG4gICAgICAgIHRzcGFuLnRleHQobGluZS5qb2luKCcgJykpO1xuICAgICAgICBsaW5lID0gW3dvcmQgPz8gJyddO1xuICAgICAgICBsaW5lTnVtYmVyICs9IDE7XG4gICAgICAgIHRzcGFuID0gdGV4dFxuICAgICAgICAgIC5hcHBlbmQoJ3RzcGFuJylcbiAgICAgICAgICAuYXR0cigneCcsIDApXG4gICAgICAgICAgLmF0dHIoJ3knLCB5KVxuICAgICAgICAgIC5hdHRyKCdkeScsIGAke2xpbmVOdW1iZXIgKiBsaW5lSGVpZ2h0ICsgZHl9ZW1gKVxuICAgICAgICAgIC50ZXh0KHdvcmQgPz8gJycpO1xuICAgICAgfVxuICAgICAgd29yZCA9IHdvcmRzLnBvcCgpO1xuICAgIH1cbiAgfSk7XG59O1xuXG4vKipcbiAqIENyZWF0ZXMgdGhlIGxlZ2VuZC5cbiAqIEBwYXJhbSBnIHRoZSBzdmcgZyBlbGVtZW50XG4gKiBAcGFyYW0gY29uZmlnIHRoZSBjaGFydCBjb25maWd1cmF0aW9uXG4gKi9cbmNvbnN0IGNyZWF0ZUxlZ2VuZCA9IChnOiBkMy5TZWxlY3Rpb248U1ZHR0VsZW1lbnQsIHVua25vd24sIEhUTUxFbGVtZW50LCB1bmtub3duPiwgY29uZmlnOiBJTGluZUNoYXJ0T3B0aW9ucykgPT4ge1xuICBpZiAoY29uZmlnLmRpc3BsYXlBeGlzTGFiZWxzICYmIGNvbmZpZy54QXhpc1RpdGxlICE9PSAnJykge1xuICAgIGcuYXBwZW5kKCdnJylcbiAgICAgIC5hdHRyKCd0cmFuc2Zvcm0nLCBgdHJhbnNsYXRlKDAsICR7Y29uZmlnLmhlaWdodCArIGNvbmZpZy5tYXJnaW4uYm90dG9tfSlgKVxuICAgICAgLmFwcGVuZCgndGV4dCcpXG4gICAgICAuc3R5bGUoJ2ZvbnQtc2l6ZScsICcxMnB4JylcbiAgICAgIC5hdHRyKCdjbGFzcycsICdsZWdlbmQnKVxuICAgICAgLmF0dHIoJ2R4JywgJzEuNWVtJylcbiAgICAgIC5hdHRyKCdkeScsICcxZW0nKVxuICAgICAgLnRleHQoYHggLSAke2NvbmZpZy54QXhpc1RpdGxlfWApO1xuICB9XG5cbiAgaWYgKGNvbmZpZy5kaXNwbGF5QXhpc0xhYmVscyAmJiBjb25maWcueUF4aXNUaXRsZSAhPT0gJycpIHtcbiAgICBnLmFwcGVuZCgnZycpXG4gICAgICAuYXR0cigndHJhbnNmb3JtJywgYHRyYW5zbGF0ZSgwLCAke2NvbmZpZy5oZWlnaHQgKyBjb25maWcubWFyZ2luLmJvdHRvbX0pYClcbiAgICAgIC5hcHBlbmQoJ3RleHQnKVxuICAgICAgLnN0eWxlKCdmb250LXNpemUnLCAnMTJweCcpXG4gICAgICAuYXR0cignY2xhc3MnLCAnbGVnZW5kJylcbiAgICAgIC5hdHRyKCdkeCcsICcxLjVlbScpXG4gICAgICAuYXR0cignZHknLCAnMi41ZW0nKVxuICAgICAgLnRleHQoYHkgLSAke2NvbmZpZy55QXhpc1RpdGxlfWApO1xuICB9XG5cbiAgaWYgKGNvbmZpZy5jaGFydFRpdGxlICE9PSAnJykge1xuICAgIGcuYXBwZW5kKCdnJylcbiAgICAgIC5hdHRyKCd0cmFuc2Zvcm0nLCBgdHJhbnNsYXRlKDAsIDApYClcbiAgICAgIC5hcHBlbmQoJ3RleHQnKVxuICAgICAgLnN0eWxlKCdmb250LXNpemUnLCAnMTJweCcpXG4gICAgICAuYXR0cignY2xhc3MnLCAnbGVnZW5kJylcbiAgICAgIC5hdHRyKCdkeCcsICcxLjVlbScpXG4gICAgICAuYXR0cignZHknLCAnLTJlbScpXG4gICAgICAudGV4dChjb25maWcuY2hhcnRUaXRsZSk7XG4gIH1cbn07XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgeCBheGlzLlxuICogQHBhcmFtIGcgdGhlIHN2ZyBnIGVsZW1lbnRcbiAqIEBwYXJhbSB4IHRoZSB4IGF4aXMgc2NhbGVcbiAqIEBwYXJhbSBjb25maWcgdGhlIGNoYXJ0IGNvbmZpZ3VyYXRpb25cbiAqL1xuY29uc3QgY3JlYXRlQXhpc1ggPSAoXG4gIGc6IGQzLlNlbGVjdGlvbjxTVkdHRWxlbWVudCwgdW5rbm93biwgSFRNTEVsZW1lbnQsIHVua25vd24+LFxuICB4OiBkMy5TY2FsZVRpbWU8bnVtYmVyLCBudW1iZXI+LFxuICBjb25maWc6IElMaW5lQ2hhcnRPcHRpb25zLFxuKSA9PiB7XG4gIGNvbnN0IHhMYWJlbHMgPSBnXG4gICAgLmFwcGVuZCgnZycpXG4gICAgLmF0dHIoJ3RyYW5zZm9ybScsIGB0cmFuc2xhdGUoMCwgJHtjb25maWcuaGVpZ2h0fSlgKVxuICAgIC5jYWxsKFxuICAgICAgZDNcbiAgICAgICAgLmF4aXNCb3R0b20oeClcbiAgICAgICAgLnRpY2tzKGNvbmZpZy50aWNrcy54KVxuICAgICAgICAudGlja0Zvcm1hdChkID0+IHtcbiAgICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoZC52YWx1ZU9mKCkpO1xuICAgICAgICAgIGNvbnN0IGZvcm1hdHRpbmdPZmZzZXQgPSAxMDtcbiAgICAgICAgICBjb25zdCBkYXkgPSBkYXRlLmdldERhdGUoKTtcbiAgICAgICAgICBjb25zdCBkZCA9IGRheSA8IGZvcm1hdHRpbmdPZmZzZXQgPyBgMCR7ZGF5fWAgOiBkYXk7XG4gICAgICAgICAgY29uc3QgbW9udGggPSBkYXRlLmdldE1vbnRoKCkgKyAxO1xuICAgICAgICAgIGNvbnN0IG1tID0gbW9udGggPCBmb3JtYXR0aW5nT2Zmc2V0ID8gYDAke21vbnRofWAgOiBtb250aDtcbiAgICAgICAgICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgY29uc3QgeXkgPSB5ZWFyLnNsaWNlKDIpO1xuICAgICAgICAgIGNvbnN0IGhvdXJzID0gZGF0ZS5nZXRIb3VycygpO1xuICAgICAgICAgIGNvbnN0IGhvdXIgPSBob3VycyA8IGZvcm1hdHRpbmdPZmZzZXQgPyBgMCR7aG91cnN9YCA6IGhvdXJzO1xuICAgICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBkYXRlLmdldE1pbnV0ZXMoKTtcbiAgICAgICAgICBjb25zdCBtaW51dGUgPSBtaW51dGVzIDwgZm9ybWF0dGluZ09mZnNldCA/IGAwJHttaW51dGVzfWAgOiBtaW51dGVzO1xuICAgICAgICAgIGxldCBmb3JtYXR0ZWREYXRlID0gYCR7ZGR9LyR7bW19LyR7eXl9ICR7aG91cn06JHttaW51dGV9YDtcbiAgICAgICAgICBzd2l0Y2ggKGNvbmZpZy5kYXRlRm9ybWF0KSB7XG4gICAgICAgICAgICBjYXNlICdkZC9tbS95eXl5JzpcbiAgICAgICAgICAgICAgZm9ybWF0dGVkRGF0ZSA9IGAke2RkfS8ke21tfS8ke3llYXJ9YDtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdkZC9tbS95eSc6XG4gICAgICAgICAgICAgIGZvcm1hdHRlZERhdGUgPSBgJHtkZH0vJHttbX0vJHt5eX1gO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21tL3l5eXknOlxuICAgICAgICAgICAgICBmb3JtYXR0ZWREYXRlID0gYCR7bW19LyR7eWVhcn1gO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3l5eXknOlxuICAgICAgICAgICAgICBmb3JtYXR0ZWREYXRlID0gYCR7eWVhcn1gO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZm9ybWF0dGVkRGF0ZTtcbiAgICAgICAgfSksXG4gICAgKVxuICAgIC5hcHBlbmQoJ3RleHQnKTtcblxuICBnLnNlbGVjdEFsbCgndGV4dCcpLmNhbGwod3JhcFN2Z1RleHQsIGNvbmZpZy5sYWJlbFRleHRXcmFwV2lkdGgpO1xuXG4gIGlmIChjb25maWcuZGlzcGxheUF4aXNMYWJlbHMpIHtcbiAgICB4TGFiZWxzLmF0dHIoJ3RyYW5zZm9ybScsIGB0cmFuc2xhdGUoJHtjb25maWcud2lkdGh9LCAwKWApLmF0dHIoJ2NsYXNzJywgJ2xlZ2VuZCcpLmF0dHIoJ2R4JywgJzEuNWVtJykuYXR0cignZHknLCAnMC43ZW0nKS50ZXh0KCd4Jyk7XG4gIH1cbn07XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgeSBheGlzLlxuICogQHBhcmFtIGcgdGhlIHN2ZyBnIGVsZW1lbnRcbiAqIEBwYXJhbSB5IHRoZSB5IGF4aXMgc2NhbGVcbiAqIEBwYXJhbSBjb25maWcgdGhlIGNoYXJ0IGNvbmZpZ3VyYXRpb25cbiAqL1xuY29uc3QgY3JlYXRlQXhpc1kgPSAoXG4gIGc6IGQzLlNlbGVjdGlvbjxTVkdHRWxlbWVudCwgdW5rbm93biwgSFRNTEVsZW1lbnQsIHVua25vd24+LFxuICB5OiBkMy5TY2FsZUxpbmVhcjxudW1iZXIsIG51bWJlcj4sXG4gIGNvbmZpZzogSUxpbmVDaGFydE9wdGlvbnMsXG4pID0+IHtcbiAgY29uc3QgeUxhYmVscyA9IGdcbiAgICAuYXBwZW5kKCdnJylcbiAgICAuY2FsbChcbiAgICAgIGQzXG4gICAgICAgIC5heGlzTGVmdCh5KVxuICAgICAgICAudGlja3MoY29uZmlnLnRpY2tzLnkpXG4gICAgICAgIC50aWNrRm9ybWF0KGQgPT4gYCR7ZH1gKSxcbiAgICApXG4gICAgLmFwcGVuZCgndGV4dCcpO1xuXG4gIGlmIChjb25maWcuZGlzcGxheUF4aXNMYWJlbHMpIHtcbiAgICB5TGFiZWxzLmF0dHIoJ2NsYXNzJywgJ2xlZ2VuZCcpLmF0dHIoJ2R5JywgJy0xLjVlbScpLmF0dHIoJ2NsYXNzJywgJ2xlZ2VuZCcpLnRleHQoJ3knKTtcbiAgfVxufTtcblxuLyoqXG4gKiBUaGUgbW91c2Ugb3ZlciBldmVudCBoYW5kbGVyLlxuICogQHBhcmFtIHNlbGYgYW4gc3ZnIGNpcmNsZSBlbGVtZW50XG4gKiBAcGFyYW0gZCB0aGUgY2hhcnQgZGF0YSBub2RlXG4gKiBAcGFyYW0gZyB0aGUgc3ZnIGcgZWxlbWVudFxuICogQHBhcmFtIGNvbmZpZyB0aGUgY2hhcnQgY29uZmlndXJhdGlvblxuICovXG5jb25zdCBvbk1vdXNlT3ZlciA9IChcbiAgc2VsZjogU1ZHQ2lyY2xlRWxlbWVudCxcbiAgZDogSUxpbmVDaGFydERhdGFOb2RlLFxuICBnOiBkMy5TZWxlY3Rpb248U1ZHR0VsZW1lbnQsIHVua25vd24sIEhUTUxFbGVtZW50LCB1bmtub3duPixcbiAgY29uZmlnOiBJTGluZUNoYXJ0T3B0aW9ucyxcbikgPT4ge1xuICBjb25zdCBkdXJhdGlvbiA9IDQwMDtcbiAgZDMuc2VsZWN0KHNlbGYpXG4gICAgLnRyYW5zaXRpb24oKVxuICAgIC5kdXJhdGlvbihkdXJhdGlvbilcbiAgICAuYXR0cigncicsIGNvbmZpZy5kb3RSYWRpdXMgKiAyKTtcblxuICBjb25zdCB0b29sdGlwU2hpZnQgPSA0O1xuICBjb25zdCB0b29sdGlwRHkgPSAtMTA7XG4gIGcuYXBwZW5kKCd0ZXh0JylcbiAgICAuYXR0cignY2xhc3MnLCAndmFsJylcbiAgICAuc3R5bGUoJ2ZvbnQtc2l6ZScsICcxMXB4JylcbiAgICAuYXR0cignZHgnLCAoKSA9PiAoY29uZmlnLndpZHRoIC0gY29uZmlnLm1hcmdpbi5sZWZ0IC0gY29uZmlnLm1hcmdpbi5yaWdodCkgLyB0b29sdGlwU2hpZnQpXG4gICAgLmF0dHIoJ2R5JywgKCkgPT4gdG9vbHRpcER5KVxuICAgIC50ZXh0KCgpID0+IGAke2QudmFsdWV9ICgke25ldyBEYXRlKGQudGltZXN0YW1wKS50b1VUQ1N0cmluZygpfSlgKTtcbn07XG5cbi8qKlxuICogVGhlIG1vdXNlIG91dCBldmVudCBoYW5kbGVyLlxuICogQHBhcmFtIHNlbGYgYW4gc3ZnIGNpcmNsZSBlbGVtZW50XG4gKiBAcGFyYW0gY29uZmlnIHRoZSBjaGFydCBjb25maWd1cmF0aW9uXG4gKi9cbmNvbnN0IG9uTW91c2VPdXQgPSAoc2VsZjogU1ZHQ2lyY2xlRWxlbWVudCwgY29uZmlnOiBJTGluZUNoYXJ0T3B0aW9ucykgPT4ge1xuICBjb25zdCBkdXJhdGlvbiA9IDQwMDtcbiAgZDMuc2VsZWN0KHNlbGYpLmF0dHIoJ2NsYXNzJywgJ2RvdCcpO1xuICBkMy5zZWxlY3Qoc2VsZikudHJhbnNpdGlvbigpLmR1cmF0aW9uKGR1cmF0aW9uKS5hdHRyKCdyJywgY29uZmlnLmRvdFJhZGl1cyk7XG5cbiAgZDMuc2VsZWN0QWxsKCcudmFsJykucmVtb3ZlKCk7XG59O1xuXG4vKipcbiAqIERyYXdzIHRoZSBjaGFydCBsaW5lcywgZG90cywgYW5kIHNldHMgdGhlIG1vdXNlIHBvaW50ZXIgZXZlbnRzLlxuICogQHBhcmFtIGcgdGhlIHN2ZyBnIGVsZW1lbnRcbiAqIEBwYXJhbSB4IHRoZSB4IGF4aXMgc2NhbGVcbiAqIEBwYXJhbSB5IHRoZSB5IGF4aXMgc2NhbGVcbiAqIEBwYXJhbSBjb25maWcgdGhlIGNoYXJ0IGNvbmZpZ3VyYXRpb25cbiAqIEBwYXJhbSBkYXRhIHRoZSBjaGFydCBkYXRhXG4gKi9cbmNvbnN0IGRyYXdMaW5lc0RvdHNBbmRTZXRQb2ludGVyRXZlbnRzID0gKFxuICBnOiBkMy5TZWxlY3Rpb248U1ZHR0VsZW1lbnQsIHVua25vd24sIEhUTUxFbGVtZW50LCB1bmtub3duPixcbiAgeDogZDMuU2NhbGVUaW1lPG51bWJlciwgbnVtYmVyPixcbiAgeTogZDMuU2NhbGVMaW5lYXI8bnVtYmVyLCBudW1iZXI+LFxuICBjb25maWc6IElMaW5lQ2hhcnRPcHRpb25zLFxuICBkYXRhOiBUTGluZUNoYXJ0RGF0YSxcbikgPT4ge1xuICBjb25zdCBsaW5lID0gZDNcbiAgICAubGluZTxJTGluZUNoYXJ0RGF0YU5vZGU+KClcbiAgICAueChkID0+IHgoZC50aW1lc3RhbXApKVxuICAgIC55KGQgPT4geShkLnZhbHVlKSlcbiAgICAuY3VydmUoZDMuY3VydmVNb25vdG9uZVgpO1xuXG4gIGcuYXBwZW5kKCdwYXRoJykuYXR0cignaWQnLCAnbGluZScpLnN0eWxlKCdmaWxsJywgJ25vbmUnKS5zdHlsZSgnc3Ryb2tlJywgJ3JlZCcpLnN0eWxlKCdzdHJva2Utd2lkdGgnLCAnMnB4JykuYXR0cignZCcsIGxpbmUoZGF0YSkpO1xuXG4gIGcuc2VsZWN0QWxsKCcuZG90JylcbiAgICAuZGF0YShkYXRhKVxuICAgIC5lbnRlcigpXG4gICAgLmFwcGVuZCgnY2lyY2xlJylcbiAgICAuYXR0cignY2xhc3MnLCAnZG90JylcbiAgICAuc3R5bGUoJ3BvaW50ZXItZXZlbnRzJywgJ2FsbCcpXG4gICAgLnN0eWxlKCdmaWxsJywgKGQsIGkpID0+IGNvbmZpZy5jb2xvcihpLnRvU3RyaW5nKCkpKVxuICAgIC5vbignbW91c2VvdmVyJywgZnVuY3Rpb24gKHRoaXMsIGV2ZW50LCBkKSB7XG4gICAgICByZXR1cm4gb25Nb3VzZU92ZXIodGhpcywgZCwgZywgY29uZmlnKTtcbiAgICB9KVxuICAgIC5vbignbW91c2VvdXQnLCBmdW5jdGlvbiAodGhpcykge1xuICAgICAgcmV0dXJuIG9uTW91c2VPdXQodGhpcywgY29uZmlnKTtcbiAgICB9KVxuICAgIC5hdHRyKCdjeCcsIGZ1bmN0aW9uICh0aGlzLCBkKSB7XG4gICAgICByZXR1cm4geChkLnRpbWVzdGFtcCk7XG4gICAgfSlcbiAgICAuYXR0cignY3knLCBmdW5jdGlvbiAodGhpcywgZCkge1xuICAgICAgcmV0dXJuIHkoZC52YWx1ZSk7XG4gICAgfSlcbiAgICAuYXR0cigncicsIDApXG4gICAgLnRyYW5zaXRpb24oKVxuICAgIC5lYXNlKGQzLmVhc2VMaW5lYXIpXG4gICAgLmR1cmF0aW9uKGNvbmZpZy50cmFuc2l0aW9uRHVyYXRpb24pXG4gICAgLmRlbGF5KChkLCBpKSA9PiB7XG4gICAgICBjb25zdCBtdWx0aXBsaWVyID0gNTA7XG4gICAgICByZXR1cm4gaSAqIG11bHRpcGxpZXI7XG4gICAgfSlcbiAgICAuYXR0cigncicsIGNvbmZpZy5kb3RSYWRpdXMpO1xufTtcblxuLyoqXG4gKiBEcmF3cyB0aGUgbGluZSBjaGFydC5cbiAqIEBwYXJhbSBjb250YWluZXIgdGhlIGNoYXJ0IGNvbnRhaW5lclxuICogQHBhcmFtIGRhdGEgdGhlIGNoYXJ0IGRhdGFcbiAqIEBwYXJhbSBvcHRpb25zIHRoZSBjaGFydCBvcHRpb25zXG4gKiBAcmV0dXJucyB0aGUgY2hhcnQgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgY29uc3QgZHJhd0xpbmVDaGFydCA9IChjb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+LCBkYXRhOiBUTGluZUNoYXJ0RGF0YSwgb3B0aW9ucz86IFBhcnRpYWw8SUxpbmVDaGFydE9wdGlvbnM+KSA9PiB7XG4gIGNvbnN0IGNvbmZpZzogSUxpbmVDaGFydE9wdGlvbnMgPSBnZW5lcmF0ZUNvbmZpZ3VyYXRpb248SUxpbmVDaGFydE9wdGlvbnM+KGRlZmF1bHRMaW5lQ2hhcnRDb25maWcsIG9wdGlvbnMsIHt9KTtcblxuICBjb25zdCB7IGcgfSA9IGNyZWF0ZUNvbnRhaW5lcihjb250YWluZXIsIGNvbmZpZyk7XG5cbiAgY29uc3QgeCA9IGQzLnNjYWxlVGltZShbMCwgY29uZmlnLndpZHRoXSkuZG9tYWluKFtNYXRoLm1pbiguLi5kYXRhLm1hcChkID0+IGQudGltZXN0YW1wKSksIE1hdGgubWF4KC4uLmRhdGEubWFwKGQgPT4gZC50aW1lc3RhbXApKV0pO1xuICBjb25zdCB5ID0gZDMuc2NhbGVMaW5lYXIoW2NvbmZpZy5oZWlnaHQsIDBdKS5kb21haW4oWzAsIGQzLm1heChkYXRhLCBkID0+IGQudmFsdWUpID8/IDFdKTtcblxuICBjcmVhdGVBeGlzWChnLCB4LCBjb25maWcpO1xuXG4gIGNyZWF0ZUF4aXNZKGcsIHksIGNvbmZpZyk7XG5cbiAgY3JlYXRlTGVnZW5kKGcsIGNvbmZpZyk7XG5cbiAgZHJhd0xpbmVzRG90c0FuZFNldFBvaW50ZXJFdmVudHMoZywgeCwgeSwgY29uZmlnLCBkYXRhKTtcblxuICByZXR1cm4gY29uZmlnO1xufTtcbiJdfQ==
|
|
@@ -572,6 +572,7 @@ const defaultLineChartConfig = Object.freeze({
|
|
|
572
572
|
y: 10,
|
|
573
573
|
},
|
|
574
574
|
displayAxisLabels: true,
|
|
575
|
+
dateFormat: 'default',
|
|
575
576
|
labelTextWrapWidth: 20,
|
|
576
577
|
color: d3.scaleOrdinal(d3.schemeCategory10),
|
|
577
578
|
});
|
|
@@ -694,7 +695,24 @@ const createAxisX = (g, x, config) => {
|
|
|
694
695
|
const hour = hours < formattingOffset ? `0${hours}` : hours;
|
|
695
696
|
const minutes = date.getMinutes();
|
|
696
697
|
const minute = minutes < formattingOffset ? `0${minutes}` : minutes;
|
|
697
|
-
|
|
698
|
+
let formattedDate = `${dd}/${mm}/${yy} ${hour}:${minute}`;
|
|
699
|
+
switch (config.dateFormat) {
|
|
700
|
+
case 'dd/mm/yyyy':
|
|
701
|
+
formattedDate = `${dd}/${mm}/${year}`;
|
|
702
|
+
break;
|
|
703
|
+
case 'dd/mm/yy':
|
|
704
|
+
formattedDate = `${dd}/${mm}/${yy}`;
|
|
705
|
+
break;
|
|
706
|
+
case 'mm/yyyy':
|
|
707
|
+
formattedDate = `${mm}/${year}`;
|
|
708
|
+
break;
|
|
709
|
+
case 'yyyy':
|
|
710
|
+
formattedDate = `${year}`;
|
|
711
|
+
break;
|
|
712
|
+
default:
|
|
713
|
+
break;
|
|
714
|
+
}
|
|
715
|
+
return formattedDate;
|
|
698
716
|
}))
|
|
699
717
|
.append('text');
|
|
700
718
|
g.selectAll('text').call(wrapSvgText$1, config.labelTextWrapWidth);
|