react-autoql 3.2.1 → 3.4.0
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/dist/autoql.esm.css +86 -9
- package/dist/autoql.esm.js +695 -219
- package/package.json +33 -18
- package/CHANGELOG.md +0 -279
package/dist/autoql.esm.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React, { Fragment, Component } from 'react';
|
|
2
|
+
import LocalizedStrings from 'react-localization';
|
|
2
3
|
import PropTypes, { shape, string, number, bool, oneOf, arrayOf, func, instanceOf, oneOfType, array } from 'prop-types';
|
|
3
4
|
import uuid from 'uuid';
|
|
4
5
|
import Drawer from 'rc-drawer';
|
|
@@ -28,6 +29,7 @@ import Autosuggest from 'react-autosuggest';
|
|
|
28
29
|
import SpeechRecognition from 'react-speech-recognition';
|
|
29
30
|
import _cloneDeep from 'lodash.clonedeep';
|
|
30
31
|
import disableScroll from 'disable-scroll';
|
|
32
|
+
import HTMLRenderer from 'react-html-renderer';
|
|
31
33
|
import { scaleOrdinal, scaleBand, scaleLinear } from 'd3-scale';
|
|
32
34
|
import { ReactTabulator } from 'react-tabulator';
|
|
33
35
|
import 'react-tabulator/lib/styles.css';
|
|
@@ -1047,7 +1049,7 @@ var getSupportedDisplayTypes = function getSupportedDisplayTypes(response, chart
|
|
|
1047
1049
|
// There should be 3 types: data, suggestion, help
|
|
1048
1050
|
var displayType = response.data.data.display_type;
|
|
1049
1051
|
|
|
1050
|
-
if (displayType === 'suggestion' || displayType === 'help') {
|
|
1052
|
+
if (displayType === 'suggestion' || displayType === 'help' || displayType === 'html') {
|
|
1051
1053
|
return [displayType];
|
|
1052
1054
|
}
|
|
1053
1055
|
|
|
@@ -1121,6 +1123,7 @@ var isDisplayTypeValid = function isDisplayTypeValid(response, displayType) {
|
|
|
1121
1123
|
if (!isValid) {
|
|
1122
1124
|
console.warn('Warning: provided display type is not valid for this response data');
|
|
1123
1125
|
}
|
|
1126
|
+
|
|
1124
1127
|
return isValid;
|
|
1125
1128
|
};
|
|
1126
1129
|
|
|
@@ -1140,7 +1143,7 @@ var getDefaultDisplayType = function getDefaultDisplayType(response, defaultToCh
|
|
|
1140
1143
|
var responseDisplayType = _get(response, 'data.data.display_type');
|
|
1141
1144
|
|
|
1142
1145
|
// If the display type is a recognized non-chart or non-table type
|
|
1143
|
-
if (responseDisplayType === 'suggestion' || responseDisplayType === 'help') {
|
|
1146
|
+
if (responseDisplayType === 'suggestion' || responseDisplayType === 'help' || responseDisplayType === 'html') {
|
|
1144
1147
|
return responseDisplayType;
|
|
1145
1148
|
}
|
|
1146
1149
|
|
|
@@ -1485,7 +1488,89 @@ var errorMessages = {
|
|
|
1485
1488
|
)
|
|
1486
1489
|
};
|
|
1487
1490
|
|
|
1488
|
-
var chataBubblesSVG = 'data:image/svg+xml;base64,Y29uc3QgaW1nID0gImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM2MlM2Z4bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0ndXRmLTgnJTNmJTNlJTNjIS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMjIuMS4wJTJjIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApIC0tJTNlJTNjc3ZnIHZlcnNpb249JzEuMScgaWQ9J0xheWVyXzEnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgeG1sbnM6eGxpbms9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsnIHg9JzBweCcgeT0nMHB4JyB3aWR0aD0nMjRweCcgaGVpZ2h0PScyNHB4JyB2aWV3Qm94PScwIDAgMjQgMjQnIGVuYWJsZS1iYWNrZ3JvdW5kPSduZXcgMCAwIDI0IDI0JyB4bWw6c3BhY2U9J3ByZXNlcnZlJyUzZSUzY2clM2UgJTNjZyUzZSAlM2NnJTNlICUzY3BhdGggZmlsbD0nJTIzMjZBN0RGJyBkPSdNMTYlMmM1QzE0LjglMmMyLjMlMmMxMiUyYzAuNCUyYzguOCUyYzAuNGMtNC40JTJjMC03LjYlMmMzLjUtNy42JTJjNy45djRjMCUyYzIuOC0xJTJjMy42LTElMmMzLjZjMS4zJTJjMC4xJTJjMi45LTAuNCUyYzQtMS41IGMwLjQlMmMwLjQlMmMxJTJjMC44JTJjMS42JTJjMWMwLjUlMmMwLjIlMmMxJTJjMC40JTJjMS42JTJjMC41YzAtMC4yLTAuMS0wLjUtMC4xLTAuN2MwLTAuMiUyYzAtMC41JTJjMC0wLjdjMC0xLjYlMmMwLjUtMy4yJTJjMS4zLTQuNCBjMC4zLTAuNCUyYzAuNi0wLjglMmMxLTEuMmMwLjItMC4yJTJjMC40LTAuMyUyYzAuNi0wLjVjMC40LTAuMyUyYzAuOC0wLjYlMmMxLjItMC44YzAuNC0wLjIlMmMwLjktMC40JTJjMS40LTAuNmMwLjctMC4yJTJjMS41LTAuMyUyYzIuMy0wLjNsMCUyYzAgYzAuMyUyYzAlMmMwLjUlMmMwJTJjMC43JTJjMGMwLjIlMmMwJTJjMC41JTJjMC4xJTJjMC43JTJjMC4xQzE2LjQlMmM2JTJjMTYuMiUyYzUuNSUyYzE2JTJjNXonLyUzZSAlM2MvZyUzZSAlM2MvZyUzZSAlM2NnJTNlICUzY3BhdGggZmlsbD0nJTIzQTNDQzM5JyBkPSdNMjIuNyUyYzE4LjN2LTRjMC0zLjMtMS44LTYtNC42LTcuMmMtMC41LTAuMi0xLTAuNC0xLjYtMC41YzAuMSUyYzAuNSUyYzAuMiUyYzEuMSUyYzAuMiUyYzEuN2MwJTJjMS45LTAuNyUyYzMuNi0xLjglMmM0LjkgYy0wLjUlMmMwLjYtMSUyYzEtMS43JTJjMS41Yy0wLjQlMmMwLjMtMC45JTJjMC41LTEuMyUyYzAuN2MtMC41JTJjMC4yLTElMmMwLjMtMS41JTJjMC40Yy0wLjUlMmMwLjEtMSUyYzAuMi0xLjYlMmMwLjJjLTAuMyUyYzAtMC41JTJjMC0wLjclMmMwIGMtMC4zJTJjMC0wLjUtMC4xLTAuNy0wLjFjMC4xJTJjMC42JTJjMC4zJTJjMS4xJTJjMC41JTJjMS42YzEuMiUyYzIuOCUyYzMuOSUyYzQuNiUyYzcuMiUyYzQuNmMxLjglMmMwJTJjMy41LTAuNSUyYzQuNi0xLjZjMSUyYzElMmMyLjklMmMxLjglMmM0LjElMmMxLjUgQzIzLjglMmMyMS45JTJjMjIuNyUyYzIxLjMlMmMyMi43JTJjMTguM3onLyUzZSAlM2MvZyUzZSAlM2NnJTNlICUzY3BhdGggZmlsbD0nbm9uZScgZD0nTTE1LjElMmM2LjVjLTQuNCUyYzAtNy44JTJjMy41LTcuOCUyYzcuOWMwJTJjMC41JTJjMC4xJTJjMSUyYzAuMSUyYzEuNWMwLjUlMmMwLjElMmMxJTJjMC4xJTJjMS41JTJjMC4xYzQuNCUyYzAlMmM3LjgtMy4zJTJjNy44LTcuNiBjMC0wLjYtMC4xLTEuMS0wLjItMS43QzE2LjElMmM2LjUlMmMxNS42JTJjNi41JTJjMTUuMSUyYzYuNXonLyUzZSAlM2MvZyUzZSAlM2NnJTNlICUzY3BhdGggZmlsbD0nbm9uZScgZD0nTTE2LjMlMmM4LjJDMTYuMyUyYzguMiUyYzE2LjIlMmM4LjIlMmMxNi4zJTJjOC4yYy0wLjElMmMwLTAuMSUyYzAtMC4yJTJjMGMwJTJjMC0wLjElMmMwLjEtMC4xJTJjMC4yYzAlMmMwLjElMmMwJTJjMC4yJTJjMCUyYzAuMyBjMCUyYzAuMSUyYzAlMmMwLjMlMmMwLjElMmMwLjNjMCUyYzAuMSUyYzAuMSUyYzAuMSUyYzAuMSUyYzAuMWMwJTJjMCUyYzAuMSUyYzAlMmMwLjElMmMwYzAlMmMwJTJjMC4xLTAuMSUyYzAuMS0wLjFjMC0wLjElMmMwLTAuMiUyYzAtMC40YzAtMC4xJTJjMC0wLjIlMmMwLTAuMyBDMTYuMyUyYzguMyUyYzE2LjMlMmM4LjIlMmMxNi4zJTJjOC4yeicvJTNlICUzY3BhdGggZmlsbD0nbm9uZScgZD0nTTEzLjQlMmMxMUMxMy40JTJjMTElMmMxMy40JTJjMTElMmMxMy40JTJjMTFjLTAuMSUyYzAtMC4xJTJjMC0wLjIlMmMwYzAlMmMwLTAuMSUyYzAuMS0wLjElMmMwLjJjMCUyYzAuMSUyYzAlMmMwLjIlMmMwJTJjMC4zIGMwJTJjMC4yJTJjMCUyYzAuMyUyYzAuMSUyYzAuNGMwJTJjMC4xJTJjMC4xJTJjMC4xJTJjMC4xJTJjMC4xYzAlMmMwJTJjMC4xJTJjMCUyYzAuMSUyYzBjMCUyYzAlMmMwLjEtMC4xJTJjMC4xLTAuMWMwLTAuMSUyYzAtMC4yJTJjMC0wLjRjMC0wLjElMmMwLTAuMiUyYzAtMC4zIEMxMy41JTJjMTEuMSUyYzEzLjUlMmMxMS4xJTJjMTMuNCUyYzExeicvJTNlICUzY3BhdGggZmlsbD0nbm9uZScgZD0nTTEzLjMlMmM5LjFDMTMuNCUyYzkuMSUyYzEzLjQlMmM5LjElMmMxMy4zJTJjOS4xQzEzLjUlMmM5LjElMmMxMy41JTJjOSUyYzEzLjUlMmM5YzAtMC4xJTJjMC0wLjIlMmMwLTAuNGMwLTAuMSUyYzAtMC4yJTJjMC0wLjMgYzAtMC4xJTJjMC0wLjEtMC4xLTAuMWMwJTJjMCUyYzAlMmMwLTAuMSUyYzBjMCUyYzAtMC4xJTJjMC0wLjElMmMwYzAlMmMwLTAuMSUyYzAuMS0wLjElMmMwLjJjMCUyYzAuMSUyYzAlMmMwLjIlMmMwJTJjMC4zYzAlMmMwLjElMmMwJTJjMC4zJTJjMC4xJTJjMC4zIEMxMy4yJTJjOS4xJTJjMTMuMyUyYzkuMSUyYzEzLjMlMmM5LjF6Jy8lM2UgJTNjcGF0aCBmaWxsPSdub25lJyBkPSdNMTEuOSUyYzEwLjZDMTEuOSUyYzEwLjYlMmMxMiUyYzEwLjYlMmMxMS45JTJjMTAuNmMwLjEtMC4xJTJjMC4xLTAuMSUyYzAuMi0wLjJjMC0wLjElMmMwLTAuMiUyYzAtMC40YzAtMC4xJTJjMC0wLjIlMmMwLTAuMyBjMC0wLjElMmMwLTAuMS0wLjEtMC4xYzAlMmMwJTJjMCUyYzAtMC4xJTJjMGMwJTJjMC0wLjElMmMwLTAuMSUyYzBjMCUyYzAtMC4xJTJjMC4xLTAuMSUyYzAuMmMwJTJjMC4xJTJjMCUyYzAuMiUyYzAlMmMwLjNjMCUyYzAuMSUyYzAlMmMwLjMlMmMwLjElMmMwLjMgQzExLjglMmMxMC42JTJjMTEuOSUyYzEwLjYlMmMxMS45JTJjMTAuNnonLyUzZSAlM2NwYXRoIGZpbGw9J25vbmUnIGQ9J005LjElMmMxMi41QzkuMSUyYzEyLjUlMmM5LjElMmMxMi41JTJjOS4xJTJjMTIuNWMtMC4xJTJjMC0wLjElMmMwLTAuMiUyYzBjMCUyYzAtMC4xJTJjMC4xLTAuMSUyYzAuMmMwJTJjMC4xJTJjMCUyYzAuMiUyYzAlMmMwLjMgYzAlMmMwLjElMmMwJTJjMC4zJTJjMC4xJTJjMC4zYzAlMmMwLjElMmMwLjElMmMwLjElMmMwLjElMmMwLjFjMCUyYzAlMmMwLjElMmMwJTJjMC4xJTJjMGMwJTJjMCUyYzAuMS0wLjElMmMwLjEtMC4xYzAtMC4xJTJjMC0wLjIlMmMwLTAuNGMwLTAuMSUyYzAtMC4yJTJjMC0wLjMgQzkuMiUyYzEyLjYlMmM5LjIlMmMxMi41JTJjOS4xJTJjMTIuNXonLyUzZSAlM2NwYXRoIGZpbGw9J25vbmUnIGQ9J00xMC41JTJjMTAuNkMxMC41JTJjMTAuNiUyYzEwLjUlMmMxMC42JTJjMTAuNSUyYzEwLjZjMC4xLTAuMSUyYzAuMS0wLjElMmMwLjItMC4yYzAtMC4xJTJjMC0wLjIlMmMwLTAuNGMwLTAuMSUyYzAtMC4yJTJjMC0wLjMgYzAtMC4xJTJjMC0wLjEtMC4xLTAuMWMwJTJjMCUyYzAlMmMwLTAuMSUyYzBjMCUyYzAtMC4xJTJjMC0wLjElMmMwYzAlMmMwLTAuMSUyYzAuMS0wLjElMmMwLjJjMCUyYzAuMSUyYzAlMmMwLjIlMmMwJTJjMC4zYzAlMmMwLjElMmMwJTJjMC4zJTJjMC4xJTJjMC4zIEMxMC40JTJjMTAuNSUyYzEwLjQlMmMxMC42JTJjMTAuNSUyYzEwLjZ6Jy8lM2UgJTNjcGF0aCBmaWxsPSdub25lJyBkPSdNNy42JTJjMTQuOUM3LjYlMmMxNC45JTJjNy43JTJjMTQuOSUyYzcuNiUyYzE0LjljMC4xLTAuMSUyYzAuMS0wLjElMmMwLjItMC4yYzAtMC4xJTJjMC0wLjIlMmMwLTAuNGMwLTAuMSUyYzAtMC4yJTJjMC0wLjMgYzAtMC4xJTJjMC0wLjEtMC4xLTAuMWMwJTJjMCUyYzAlMmMwLTAuMSUyYzBjMCUyYzAtMC4xJTJjMC0wLjElMmMwYzAlMmMwLTAuMSUyYzAuMS0wLjElMmMwLjJjMCUyYzAuMSUyYzAlMmMwLjIlMmMwJTJjMC4zYzAlMmMwLjElMmMwJTJjMC4zJTJjMC4xJTJjMC4zIEM3LjUlMmMxNC44JTJjNy42JTJjMTQuOSUyYzcuNiUyYzE0Ljl6Jy8lM2UgJTNjcGF0aCBmaWxsPSdub25lJyBkPSdNNy42JTJjMTMuNEM3LjYlMmMxMy40JTJjNy43JTJjMTMuNCUyYzcuNiUyYzEzLjRjMC4xLTAuMSUyYzAuMS0wLjElMmMwLjItMC4yYzAtMC4xJTJjMC0wLjIlMmMwLTAuNGMwLTAuMSUyYzAtMC4yJTJjMC0wLjMgYzAtMC4xJTJjMC0wLjEtMC4xLTAuMWMwJTJjMCUyYzAlMmMwLTAuMSUyYzBjMCUyYzAtMC4xJTJjMC0wLjElMmMwYzAlMmMwLTAuMSUyYzAuMS0wLjElMmMwLjJjMCUyYzAuMSUyYzAlMmMwLjIlMmMwJTJjMC4zYzAlMmMwLjElMmMwJTJjMC4zJTJjMC4xJTJjMC4zIEM3LjUlMmMxMy40JTJjNy42JTJjMTMuNCUyYzcuNiUyYzEzLjR6Jy8lM2UgJTNjcGF0aCBmaWxsPSdub25lJyBkPSdNMTEuOSUyYzkuMUMxMS45JTJjOS4xJTJjMTIlMmM5LjElMmMxMS45JTJjOS4xQzEyJTJjOS4xJTJjMTIuMSUyYzklMmMxMi4xJTJjOWMwLTAuMSUyYzAtMC4yJTJjMC0wLjRjMC0wLjElMmMwLTAuMiUyYzAtMC4zIGMwLTAuMSUyYzAtMC4xLTAuMS0wLjFjMCUyYzAlMmMwJTJjMC0wLjElMmMwYzAlMmMwLTAuMSUyYzAtMC4xJTJjMGMwJTJjMC0wLjElMmMwLjEtMC4xJTJjMC4yYzAlMmMwLjElMmMwJTJjMC4yJTJjMCUyYzAuM2MwJTJjMC4xJTJjMCUyYzAuMyUyYzAuMSUyYzAuMyBDMTEuOCUyYzkuMSUyYzExLjklMmM5LjElMmMxMS45JTJjOS4xeicvJTNlICUzY3BhdGggZmlsbD0nbm9uZScgZD0nTTExLjklMmMxMy41QzExLjklMmMxMy41JTJjMTIlMmMxMy41JTJjMTEuOSUyYzEzLjVjMC4xLTAuMSUyYzAuMS0wLjElMmMwLjItMC4yYzAtMC4xJTJjMC0wLjIlMmMwLTAuNGMwLTAuMSUyYzAtMC4yJTJjMC0wLjMgYzAtMC4xJTJjMC0wLjEtMC4xLTAuMWMwJTJjMC0wLjElMmMwLTAuMSUyYzBjMCUyYzAtMC4xJTJjMC0wLjElMmMwLjFjMCUyYzAtMC4xJTJjMC4xLTAuMSUyYzAuMmMwJTJjMC4xJTJjMCUyYzAuMiUyYzAlMmMwLjNjMCUyYzAuMiUyYzAlMmMwLjMlMmMwLjElMmMwLjQgQzExLjglMmMxMy41JTJjMTEuOCUyYzEzLjUlMmMxMS45JTJjMTMuNXonLyUzZSAlM2NwYXRoIGZpbGw9J25vbmUnIGQ9J00xMS45JTJjMTIuMUMxMS45JTJjMTIuMSUyYzEyJTJjMTIlMmMxMS45JTJjMTIuMWMwLjEtMC4xJTJjMC4xLTAuMSUyYzAuMi0wLjJjMC0wLjElMmMwLTAuMiUyYzAtMC40YzAtMC4xJTJjMC0wLjIlMmMwLTAuMyBjMC0wLjElMmMwLTAuMS0wLjEtMC4xYzAlMmMwJTJjMCUyYzAtMC4xJTJjMHMtMC4xJTJjMC0wLjElMmMwYzAlMmMwLTAuMSUyYzAuMS0wLjElMmMwLjJjMCUyYzAuMSUyYzAlMmMwLjIlMmMwJTJjMC4zYzAlMmMwLjIlMmMwJTJjMC4zJTJjMC4xJTJjMC40IEMxMS44JTJjMTIlMmMxMS45JTJjMTIuMSUyYzExLjklMmMxMi4xeicvJTNlICUzY3BhdGggZmlsbD0nbm9uZScgZD0nTTE2JTJjNy4yYzAlMmMwLjElMmMwJTJjMC4yJTJjMCUyYzAuM2MwJTJjMC4xJTJjMC4xJTJjMC4xJTJjMC4xJTJjMC4xYzAlMmMwJTJjMC4xJTJjMCUyYzAuMSUyYzBjMCUyYzAlMmMwLTAuMSUyYzAuMS0wLjFjMC0wLjElMmMwLTAuMiUyYzAtMC4zIGMwLTAuMSUyYzAtMC4yJTJjMC0wLjNjMC0wLjElMmMwLTAuMS0wLjEtMC4xYzAlMmMwJTJjMCUyYzAtMC4xJTJjMGMwJTJjMC0wLjElMmMwLTAuMSUyYzBjMCUyYzAtMC4xJTJjMC4xLTAuMSUyYzAuMkMxNi4xJTJjNy4xJTJjMTYlMmM3LjIlMmMxNiUyYzcuMnonLyUzZSAlM2NwYXRoIGZpbGw9J25vbmUnIGQ9J00xMS45JTJjMTVDMTEuOSUyYzE1JTJjMTIlMmMxNC45JTJjMTEuOSUyYzE1YzAuMS0wLjElMmMwLjItMC4xJTJjMC4yLTAuMmMwLTAuMSUyYzAtMC4yJTJjMC0wLjRjMC0wLjElMmMwLTAuMiUyYzAtMC4zIGMwLTAuMSUyYzAtMC4xLTAuMS0wLjFjMCUyYzAtMC4xJTJjMC0wLjElMmMwYzAlMmMwLTAuMSUyYzAtMC4xJTJjMC4xYzAlMmMwLTAuMSUyYzAuMS0wLjElMmMwLjJjMCUyYzAuMSUyYzAlMmMwLjIlMmMwJTJjMC4zYzAlMmMwLjIlMmMwJTJjMC4zJTJjMC4xJTJjMC40IEMxMS44JTJjMTQuOSUyYzExLjglMmMxNSUyYzExLjklMmMxNXonLyUzZSAlM2NwYXRoIGZpbGw9J25vbmUnIGQ9J00xNi4zJTJjOS42QzE2LjMlMmM5LjYlMmMxNi4yJTJjOS42JTJjMTYuMyUyYzkuNmMtMC4xJTJjMC0wLjElMmMwLTAuMiUyYzBjMCUyYzAtMC4xJTJjMC4xLTAuMSUyYzAuMmMwJTJjMC4xJTJjMCUyYzAuMiUyYzAlMmMwLjMgYzAlMmMwLjElMmMwJTJjMC4zJTJjMC4xJTJjMC40YzAlMmMwLjElMmMwLjElMmMwLjElMmMwLjElMmMwLjFjMCUyYzAlMmMwLjElMmMwJTJjMC4xJTJjMHMwLjEtMC4xJTJjMC4xLTAuMWMwLTAuMSUyYzAtMC4yJTJjMC0wLjRjMC0wLjElMmMwLTAuMiUyYzAtMC4zIEMxNi4zJTJjOS43JTJjMTYuMyUyYzkuNiUyYzE2LjMlMmM5LjZ6Jy8lM2UgJTNjcGF0aCBmaWxsPSclMjNBM0NDMzknIGQ9J00xMS43JTJjNy42YzAuMSUyYzAuMSUyYzAuMSUyYzAuMiUyYzAuMiUyYzAuMmMwJTJjMCUyYzAuMSUyYzAlMmMwLjEtMC4xYzAlMmMwJTJjMC4xLTAuMSUyYzAuMS0wLjJjMC0wLjElMmMwLTAuMiUyYzAtMC4zIGMwLTAuMSUyYzAtMC4xJTJjMC0wLjJjMCUyYzAtMC4xJTJjMC0wLjElMmMwYzAlMmMwJTJjMCUyYzAuMSUyYzAlMmMwLjFjMCUyYzAuMSUyYzAlMmMwLjMlMmMwJTJjMC4zYzAlMmMwLjElMmMwJTJjMC4xLTAuMSUyYzAuMWMwJTJjMC0wLjElMmMwLTAuMSUyYzAgQzExLjglMmM3LjclMmMxMS44JTJjNy42JTJjMTEuNyUyYzcuNmMwLjEtMC4xJTJjMC4xLTAuMiUyYzAuMS0wLjNjMCUyYzAlMmMwJTJjMCUyYzAlMmMwYzAlMmMwLTAuMSUyYzAtMC4xJTJjMC4xQzExLjYlMmM3LjQlMmMxMS42JTJjNy41JTJjMTEuNyUyYzcuNnonLyUzZSAlM2NwYXRoIGZpbGw9JyUyM0EzQ0MzOScgZD0nTTEzLjQlMmM2LjdsLTAuMiUyYzAuMWwwJTJjMGMwJTJjMCUyYzAuMSUyYzAlMmMwLjElMmMwYzAlMmMwJTJjMCUyYzAlMmMwJTJjMGMwJTJjMCUyYzAlMmMwJTJjMCUyYzBjMCUyYzAlMmMwJTJjMC4xJTJjMCUyYzAuMXYwLjVjMCUyYzAuMSUyYzAlMmMwLjElMmMwJTJjMC4xIGMwJTJjMCUyYzAlMmMwJTJjMCUyYzBjMCUyYzAlMmMwJTJjMC0wLjElMmMwdjBoMC40djBjMCUyYzAtMC4xJTJjMC0wLjElMmMwYzAlMmMwJTJjMCUyYzAlMmMwJTJjMGMwJTJjMCUyYzAlMmMwJTJjMC0wLjFMMTMuNCUyYzYuN0wxMy40JTJjNi43eicvJTNlICUzY3BhdGggZmlsbD0nJTIzQTNDQzM5JyBkPSdNMTQuOCUyYzYuN2wtMC4yJTJjMC4xbDAlMmMwYzAlMmMwJTJjMC4xJTJjMCUyYzAuMSUyYzBjMCUyYzAlMmMwJTJjMCUyYzAlMmMwYzAlMmMwJTJjMCUyYzAlMmMwJTJjMGMwJTJjMCUyYzAlMmMwLjElMmMwJTJjMC4xdjAuNWMwJTJjMC4xJTJjMCUyYzAuMSUyYzAlMmMwLjEgYzAlMmMwJTJjMCUyYzAlMmMwJTJjMGMwJTJjMCUyYzAlMmMwLTAuMSUyYzB2MEgxNXYwYzAlMmMwLTAuMSUyYzAtMC4xJTJjMHMwJTJjMCUyYzAlMmMwYzAlMmMwJTJjMCUyYzAlMmMwLTAuMUwxNC44JTJjNi43TDE0LjglMmM2Ljd6Jy8lM2UgJTNjcGF0aCBmaWxsPSclMjNBM0NDMzknIGQ9J00xNiUyYzdjMCUyYzAuMS0wLjElMmMwLjItMC4xJTJjMC4zYzAlMmMwLjElMmMwJTJjMC4yJTJjMC4xJTJjMC4zYzAuMSUyYzAuMSUyYzAuMSUyYzAuMiUyYzAuMiUyYzAuMmMwJTJjMCUyYzAuMSUyYzAlMmMwLjEtMC4xIGMwLjElMmMwJTJjMC4xLTAuMSUyYzAuMS0wLjJjMC0wLjElMmMwLTAuMiUyYzAtMC4zYzAtMC4yJTJjMC0wLjMtMC4xLTAuNGMtMC4xLTAuMS0wLjEtMC4xLTAuMi0wLjFjMCUyYzAtMC4xJTJjMC0wLjElMmMwQzE2JTJjNi44JTJjMTYlMmM2LjklMmMxNiUyYzd6IE0xNi4yJTJjNi44QzE2LjIlMmM2LjglMmMxNi4zJTJjNi44JTJjMTYuMiUyYzYuOGMwLjElMmMwJTJjMC4xJTJjMC4xJTJjMC4xJTJjMC4xYzAlMmMwLjElMmMwJTJjMC4yJTJjMCUyYzAuM2MwJTJjMC4yJTJjMCUyYzAuMyUyYzAlMmMwLjNjMCUyYzAuMSUyYzAlMmMwLjEtMC4xJTJjMC4xIGMwJTJjMC0wLjElMmMwLTAuMSUyYzBjLTAuMSUyYzAtMC4xJTJjMC0wLjEtMC4xYzAtMC4xJTJjMC0wLjIlMmMwLTAuM2MwLTAuMSUyYzAtMC4yJTJjMC0wLjNDMTYuMSUyYzYuOSUyYzE2LjElMmM2LjklMmMxNi4yJTJjNi44IEMxNi4xJTJjNi44JTJjMTYuMiUyYzYuOCUyYzE2LjIlMmM2Ljh6Jy8lM2UgJTNjcGF0aCBmaWxsPSclMjNBM0NDMzknIGQ9J00xMC40JTJjOS4xQzEwLjQlMmM5LjElMmMxMC40JTJjOS4xJTJjMTAuNCUyYzkuMWMwJTJjMC0wLjElMmMwLTAuMSUyYzB2MGgwLjR2MGMwJTJjMC0wLjElMmMwLTAuMSUyYzBjMCUyYzAlMmMwJTJjMCUyYzAlMmMwYzAlMmMwJTJjMCUyYzAlMmMwLTAuMSBWOC4yaDBsLTAuMiUyYzAuMWwwJTJjMGMwJTJjMCUyYzAuMSUyYzAlMmMwLjElMmMwYzAlMmMwJTJjMCUyYzAlMmMwJTJjMGMwJTJjMCUyYzAlMmMwJTJjMCUyYzBjMCUyYzAlMmMwJTJjMC4xJTJjMCUyYzAuMVY5LjFDMTAuNCUyYzklMmMxMC40JTJjOS4xJTJjMTAuNCUyYzkuMXonLyUzZSAlM2NwYXRoIGZpbGw9JyUyM0EzQ0MzOScgZD0nTTExLjklMmM5LjJjMCUyYzAlMmMwLjElMmMwJTJjMC4yLTAuMWMwLjElMmMwJTJjMC4xLTAuMSUyYzAuMS0wLjJjMC0wLjElMmMwLjEtMC4yJTJjMC4xLTAuM2MwLTAuMiUyYzAtMC4zLTAuMS0wLjQgYy0wLjEtMC4xLTAuMS0wLjEtMC4yLTAuMWMwJTJjMC0wLjElMmMwLTAuMSUyYzBjLTAuMSUyYzAtMC4xJTJjMC4xLTAuMSUyYzAuMnMtMC4xJTJjMC4yLTAuMSUyYzAuM2MwJTJjMC4xJTJjMCUyYzAuMyUyYzAuMSUyYzAuMyBDMTEuNyUyYzkuMSUyYzExLjglMmM5LjIlMmMxMS45JTJjOS4yeiBNMTEuOCUyYzguNGMwLTAuMSUyYzAtMC4yJTJjMC4xLTAuMmMwJTJjMCUyYzAuMSUyYzAlMmMwLjElMmMwYzAlMmMwJTJjMC4xJTJjMCUyYzAuMSUyYzBjMCUyYzAlMmMwLjElMmMwLjElMmMwLjElMmMwLjEgYzAlMmMwLjElMmMwJTJjMC4yJTJjMCUyYzAuM2MwJTJjMC4yJTJjMCUyYzAuMyUyYzAlMmMwLjRjMCUyYzAuMSUyYzAlMmMwLjEtMC4xJTJjMC4xYzAlMmMwLTAuMSUyYzAtMC4xJTJjMGMtMC4xJTJjMC0wLjElMmMwLTAuMS0wLjFjMC0wLjEtMC4xLTAuMi0wLjEtMC4zIEMxMS43JTJjOC42JTJjMTEuNyUyYzguNSUyYzExLjglMmM4LjR6Jy8lM2UgJTNjcGF0aCBmaWxsPSclMjNBM0NDMzknIGQ9J00xMyUyYzguN2MwJTJjMC4xJTJjMCUyYzAuMyUyYzAuMSUyYzAuM2MwLjElMmMwLjElMmMwLjElMmMwLjIlMmMwLjIlMmMwLjJjMCUyYzAlMmMwLjElMmMwJTJjMC4yLTAuMVMxMy42JTJjOSUyYzEzLjYlMmM5IGMwLTAuMSUyYzAuMS0wLjIlMmMwLjEtMC4zYzAtMC4yJTJjMC0wLjMtMC4xLTAuNGMtMC4xLTAuMS0wLjEtMC4xLTAuMi0wLjFjMCUyYzAtMC4xJTJjMC0wLjElMmMwYy0wLjElMmMwLTAuMSUyYzAuMS0wLjElMmMwLjIgQzEzJTJjOC41JTJjMTMlMmM4LjYlMmMxMyUyYzguN3ogTTEzLjIlMmM4LjRjMC0wLjElMmMwLTAuMiUyYzAuMS0wLjJjMCUyYzAlMmMwLjElMmMwJTJjMC4xJTJjMGMwJTJjMCUyYzAuMSUyYzAlMmMwLjElMmMwYzAlMmMwJTJjMC4xJTJjMC4xJTJjMC4xJTJjMC4xYzAlMmMwLjElMmMwJTJjMC4yJTJjMCUyYzAuMyBjMCUyYzAuMiUyYzAlMmMwLjMlMmMwJTJjMC40YzAlMmMwLjElMmMwJTJjMC4xLTAuMSUyYzAuMWMwJTJjMC0wLjElMmMwLTAuMSUyYzBjLTAuMSUyYzAtMC4xJTJjMC0wLjEtMC4xYzAtMC4xLTAuMS0wLjItMC4xLTAuM0MxMy4yJTJjOC42JTJjMTMuMiUyYzguNSUyYzEzLjIlMmM4LjR6ICcvJTNlICUzY3BhdGggZmlsbD0nJTIzQTNDQzM5JyBkPSdNMTQuNiUyYzguM0MxNC42JTJjOC4zJTJjMTQuNiUyYzguMyUyYzE0LjYlMmM4LjNjMC4xJTJjMCUyYzAuMSUyYzAlMmMwLjElMmMwYzAlMmMwJTJjMCUyYzAlMmMwJTJjMGMwJTJjMCUyYzAlMmMwLjElMmMwJTJjMC4xVjljMCUyYzAuMSUyYzAlMmMwLjElMmMwJTJjMC4xIGMwJTJjMCUyYzAlMmMwJTJjMCUyYzBjMCUyYzAlMmMwJTJjMC0wLjElMmMwdjBIMTV2MGMwJTJjMC0wLjElMmMwLTAuMSUyYzBjMCUyYzAlMmMwJTJjMCUyYzAlMmMwYzAlMmMwJTJjMC0wLjElMmMwLTAuMVY4LjFoMEwxNC42JTJjOC4zTDE0LjYlMmM4LjN6Jy8lM2UgJTNjcGF0aCBmaWxsPSclMjNBM0NDMzknIGQ9J00xNi4yJTJjOC4xYzAlMmMwLTAuMSUyYzAtMC4xJTJjMGMtMC4xJTJjMC0wLjElMmMwLjEtMC4xJTJjMC4yYzAlMmMwLjEtMC4xJTJjMC4yLTAuMSUyYzAuM2MwJTJjMC4xJTJjMCUyYzAuMyUyYzAuMSUyYzAuMyBjMC4xJTJjMC4xJTJjMC4xJTJjMC4yJTJjMC4yJTJjMC4yYzAlMmMwJTJjMC4xJTJjMCUyYzAuMi0wLjFjMC4xJTJjMCUyYzAuMS0wLjElMmMwLjEtMC4yYzAtMC4xJTJjMC4xLTAuMiUyYzAuMS0wLjNjMC0wLjIlMmMwLTAuMy0wLjEtMC40IEMxNi40JTJjOC4yJTJjMTYuMyUyYzguMSUyYzE2LjIlMmM4LjF6IE0xNi40JTJjOWMwJTJjMC4xJTJjMCUyYzAuMS0wLjElMmMwLjFjMCUyYzAtMC4xJTJjMC0wLjElMmMwYy0wLjElMmMwLTAuMSUyYzAtMC4xLTAuMUMxNiUyYzguOSUyYzE2JTJjOC44JTJjMTYlMmM4LjcgYzAtMC4xJTJjMC0wLjIlMmMwLTAuM2MwLTAuMSUyYzAtMC4yJTJjMC4xLTAuMmMwJTJjMCUyYzAuMSUyYzAlMmMwLjElMmMwczAuMSUyYzAlMmMwLjElMmMwYzAlMmMwJTJjMC4xJTJjMC4xJTJjMC4xJTJjMC4xYzAlMmMwLjElMmMwJTJjMC4yJTJjMCUyYzAuMyBDMTYuNCUyYzguOCUyYzE2LjQlMmM4LjklMmMxNi40JTJjOXonLyUzZSAlM2NwYXRoIGZpbGw9JyUyM0EzQ0MzOScgZD0nTTkuMSUyYzkuNkw4LjklMmM5LjdsMCUyYzBjMCUyYzAlMmMwLjElMmMwJTJjMC4xJTJjMGMwJTJjMCUyYzAlMmMwJTJjMCUyYzBjMCUyYzAlMmMwJTJjMCUyYzAlMmMwYzAlMmMwJTJjMCUyYzAuMSUyYzAlMmMwLjF2MC41YzAlMmMwLjElMmMwJTJjMC4xJTJjMCUyYzAuMSBjMCUyYzAlMmMwJTJjMCUyYzAlMmMwYzAlMmMwJTJjMCUyYzAtMC4xJTJjMHYwaDAuNHYwYzAlMmMwLTAuMSUyYzAtMC4xJTJjMHMwJTJjMCUyYzAlMmMwYzAlMmMwJTJjMCUyYzAlMmMwLTAuMUw5LjElMmM5LjZMOS4xJTJjOS42TDkuMSUyYzkuNnonLyUzZSAlM2NwYXRoIGZpbGw9JyUyM0EzQ0MzOScgZD0nTTEwLjUlMmMxMC42YzAlMmMwJTJjMC4xJTJjMCUyYzAuMi0wLjFjMC4xJTJjMCUyYzAuMS0wLjElMmMwLjEtMC4yYzAtMC4xJTJjMC4xLTAuMiUyYzAuMS0wLjNjMC0wLjIlMmMwLTAuMy0wLjEtMC40IGMtMC4xLTAuMS0wLjEtMC4xLTAuMi0wLjFjMCUyYzAtMC4xJTJjMC0wLjElMmMwYy0wLjElMmMwLTAuMSUyYzAuMS0wLjElMmMwLjJjMCUyYzAuMS0wLjElMmMwLjItMC4xJTJjMC4zYzAlMmMwLjElMmMwJTJjMC4zJTJjMC4xJTJjMC4zIEMxMC4zJTJjMTAuNiUyYzEwLjQlMmMxMC42JTJjMTAuNSUyYzEwLjZ6IE0xMC4zJTJjOS45YzAtMC4xJTJjMC0wLjIlMmMwLjEtMC4yYzAlMmMwJTJjMC4xJTJjMCUyYzAuMSUyYzBjMCUyYzAlMmMwLjElMmMwJTJjMC4xJTJjMGMwJTJjMCUyYzAuMSUyYzAuMSUyYzAuMSUyYzAuMSBjMCUyYzAuMSUyYzAlMmMwLjIlMmMwJTJjMC4zYzAlMmMwLjIlMmMwJTJjMC4zJTJjMCUyYzAuNGMwJTJjMC4xJTJjMCUyYzAuMS0wLjElMmMwLjFjMCUyYzAtMC4xJTJjMC0wLjElMmMwYy0wLjElMmMwLTAuMSUyYzAtMC4xLTAuMWMwLTAuMS0wLjEtMC4yLTAuMS0wLjMgQzEwLjMlMmMxMCUyYzEwLjMlMmMxMCUyYzEwLjMlMmM5Ljl6Jy8lM2UgJTNjcGF0aCBmaWxsPSclMjNBM0NDMzknIGQ9J00xMS43JTJjMTAuNWMwLjElMmMwLjElMmMwLjIlMmMwLjIlMmMwLjMlMmMwLjJjMC4xJTJjMCUyYzAuMSUyYzAlMmMwLjItMC4xYzAuMSUyYzAlMmMwLjEtMC4xJTJjMC4xLTAuMnMwLjEtMC4yJTJjMC4xLTAuMyBjMC0wLjIlMmMwLTAuMy0wLjEtMC40Yy0wLjEtMC4xLTAuMS0wLjEtMC4yLTAuMWMwJTJjMC0wLjElMmMwLTAuMSUyYzAuMWMtMC4xJTJjMC0wLjElMmMwLjEtMC4xJTJjMC4yYzAlMmMwLjEtMC4xJTJjMC4yLTAuMSUyYzAuMyBDMTEuNiUyYzEwLjIlMmMxMS42JTJjMTAuNCUyYzExLjclMmMxMC41eiBNMTEuNyUyYzkuOWMwLTAuMSUyYzAtMC4yJTJjMC4xLTAuMmMwJTJjMCUyYzAuMSUyYzAlMmMwLjElMmMwczAuMSUyYzAlMmMwLjElMmMwYzAlMmMwJTJjMC4xJTJjMC4xJTJjMC4xJTJjMC4xIGMwJTJjMC4xJTJjMCUyYzAuMiUyYzAlMmMwLjNjMCUyYzAuMiUyYzAlMmMwLjMlMmMwJTJjMC40YzAlMmMwLjElMmMwJTJjMC4xLTAuMSUyYzAuMWMwJTJjMC0wLjElMmMwLTAuMSUyYzBjLTAuMSUyYzAtMC4xJTJjMC0wLjEtMC4xYzAtMC4xLTAuMS0wLjItMC4xLTAuMyBDMTEuNyUyYzEwJTJjMTEuNyUyYzkuOSUyYzExLjclMmM5Ljl6Jy8lM2UgJTNjcGF0aCBmaWxsPSclMjNBM0NDMzknIGQ9J00xMy4zJTJjMTAuNkMxMy4zJTJjMTAuNiUyYzEzLjMlMmMxMC42JTJjMTMuMyUyYzEwLjZjMCUyYzAtMC4xJTJjMC0wLjElMmMwdjBoMC40djBjMCUyYzAtMC4xJTJjMC0wLjElMmMwYzAlMmMwJTJjMCUyYzAlMmMwJTJjMCBjMCUyYzAlMmMwLTAuMSUyYzAtMC4xVjkuNmgwbC0wLjMlMmMwLjFsMCUyYzBjMCUyYzAlMmMwLjElMmMwJTJjMC4xJTJjMGMwJTJjMCUyYzAlMmMwJTJjMCUyYzBjMCUyYzAlMmMwJTJjMCUyYzAlMmMwYzAlMmMwJTJjMCUyYzAuMSUyYzAlMmMwLjJ2MC42QzEzLjMlMmMxMC41JTJjMTMuMyUyYzEwLjUlMmMxMy4zJTJjMTAuNiB6Jy8lM2UgJTNjcGF0aCBmaWxsPSclMjNBM0NDMzknIGQ9J00xNC42JTJjOS43QzE0LjYlMmM5LjclMmMxNC43JTJjOS43JTJjMTQuNiUyYzkuN2MwLjElMmMwJTJjMC4xJTJjMCUyYzAuMSUyYzBjMCUyYzAlMmMwJTJjMCUyYzAlMmMwYzAlMmMwJTJjMCUyYzAuMSUyYzAlMmMwLjJ2MC42IGMwJTJjMC4xJTJjMCUyYzAuMSUyYzAlMmMwLjFzMCUyYzAlMmMwJTJjMGMwJTJjMCUyYzAlMmMwLTAuMSUyYzB2MEgxNXYwYzAlMmMwLTAuMSUyYzAtMC4xJTJjMGMwJTJjMCUyYzAlMmMwJTJjMCUyYzBjMCUyYzAlMmMwLTAuMSUyYzAtMC4xVjkuNmgwTDE0LjYlMmM5LjdMMTQuNiUyYzkuN3onLyUzZSAlM2NwYXRoIGZpbGw9JyUyM0EzQ0MzOScgZD0nTTE2LjIlMmM5LjZjLTAuMSUyYzAtMC4xJTJjMC0wLjElMmMwLjFjLTAuMSUyYzAtMC4xJTJjMC4xLTAuMSUyYzAuMnMtMC4xJTJjMC4yLTAuMSUyYzAuM2MwJTJjMC4xJTJjMCUyYzAuMyUyYzAuMSUyYzAuNCBjMC4xJTJjMC4xJTJjMC4yJTJjMC4yJTJjMC4zJTJjMC4yYzAlMmMwJTJjMC4xJTJjMCUyYzAuMS0wLjFjMC4xLTAuMiUyYzAuMS0wLjUlMmMwLjItMC43YzAtMC4xJTJjMC0wLjItMC4xLTAuMkMxNi40JTJjOS42JTJjMTYuMyUyYzkuNiUyYzE2LjIlMmM5LjZ6IE0xNi40JTJjMTAuNCBjMCUyYzAuMSUyYzAlMmMwLjEtMC4xJTJjMC4xYzAlMmMwLTAuMSUyYzAtMC4xJTJjMGMtMC4xJTJjMC0wLjElMmMwLTAuMS0wLjFjMC0wLjEtMC4xLTAuMi0wLjEtMC40YzAtMC4xJTJjMC0wLjIlMmMwLTAuM2MwLTAuMSUyYzAtMC4yJTJjMC4xLTAuMiBjMCUyYzAlMmMwLjElMmMwJTJjMC4xJTJjMGMwJTJjMCUyYzAuMSUyYzAlMmMwLjElMmMwYzAlMmMwJTJjMC4xJTJjMC4xJTJjMC4xJTJjMC4xYzAlMmMwLjElMmMwJTJjMC4yJTJjMCUyYzAuM0MxNi40JTJjMTAuMiUyYzE2LjQlMmMxMC4zJTJjMTYuNCUyYzEwLjR6Jy8lM2UgJTNjcGF0aCBmaWxsPSclMjNBM0NDMzknIGQ9J003LjglMmMxMS41YzAlMmMwLjIlMmMwJTJjMC4zJTJjMCUyYzAuM2MwJTJjMC4xJTJjMCUyYzAuMS0wLjElMmMwLjFjMCUyYzAtMC4xJTJjMC0wLjElMmMwYzAlMmMwJTJjMCUyYzAlMmMwJTJjMGMwJTJjMCUyYzAlMmMwJTJjMCUyYzBjMCUyYzAlMmMwJTJjMCUyYzAlMmMwIGMwJTJjMCUyYzAuMSUyYzAlMmMwLjEtMC4xYzAuMSUyYzAlMmMwLjEtMC4xJTJjMC4xLTAuMmMwLTAuMSUyYzAtMC4yJTJjMC0wLjNjMC0wLjElMmMwLTAuMi0wLjEtMC4zQzcuOCUyYzExLjMlMmM3LjglMmMxMS40JTJjNy44JTJjMTEuNSBDNy44JTJjMTEuNSUyYzcuOCUyYzExLjUlMmM3LjglMmMxMS41eicvJTNlICUzY3BhdGggZmlsbD0nJTIzQTNDQzM5JyBkPSdNOC45JTJjMTEuMkM4LjklMmMxMS4xJTJjOC45JTJjMTEuMSUyYzguOSUyYzExLjJjMC4xJTJjMCUyYzAuMSUyYzAlMmMwLjElMmMwYzAlMmMwJTJjMCUyYzAlMmMwJTJjMGMwJTJjMCUyYzAlMmMwLjElMmMwJTJjMC4xdjAuNSBDOSUyYzExLjklMmM5JTJjMTIlMmM5JTJjMTJjMCUyYzAlMmMwJTJjMCUyYzAlMmMwYzAlMmMwJTJjMCUyYzAtMC4xJTJjMHYwaDAuNHYwYzAlMmMwLTAuMSUyYzAtMC4xJTJjMGMwJTJjMCUyYzAlMmMwJTJjMCUyYzBjMCUyYzAlMmMwLTAuMSUyYzAtMC4xVjExaDBMOC45JTJjMTEuMkw4LjklMmMxMS4yeicvJTNlICUzY3BhdGggZmlsbD0nJTIzQTNDQzM5JyBkPSdNMTAuNSUyYzExbC0wLjMlMmMwLjFsMCUyYzBjMCUyYzAlMmMwLjElMmMwJTJjMC4xJTJjMGMwJTJjMCUyYzAlMmMwJTJjMCUyYzBjMCUyYzAlMmMwJTJjMCUyYzAlMmMwYzAlMmMwJTJjMCUyYzAuMSUyYzAlMmMwLjJ2MC42YzAlMmMwLjElMmMwJTJjMC4xJTJjMCUyYzAuMSBzMCUyYzAlMmMwJTJjMGMwJTJjMCUyYzAlMmMwLTAuMSUyYzB2MGgwLjR2MGMwJTJjMC0wLjElMmMwLTAuMSUyYzBjMCUyYzAlMmMwJTJjMCUyYzAlMmMwYzAlMmMwJTJjMC0wLjElMmMwLTAuMUwxMC41JTJjMTFMMTAuNSUyYzExeicvJTNlICUzY3BhdGggZmlsbD0nJTIzQTNDQzM5JyBkPSdNMTEuNyUyYzExLjljMC4xJTJjMC4xJTJjMC4yJTJjMC4yJTJjMC4zJTJjMC4yYzAuMSUyYzAlMmMwLjElMmMwJTJjMC4yLTAuMWMwLjElMmMwJTJjMC4xLTAuMSUyYzAuMS0wLjJjMC0wLjElMmMwLjEtMC4yJTJjMC4xLTAuMyBjMC0wLjIlMmMwLTAuMy0wLjEtMC40QzEyLjElMmMxMSUyYzEyJTJjMTElMmMxMS45JTJjMTFjLTAuMSUyYzAtMC4xJTJjMC0wLjIlMmMwLjFjLTAuMSUyYzAtMC4xJTJjMC4xLTAuMiUyYzAuMmMwJTJjMC4xLTAuMSUyYzAuMi0wLjElMmMwLjMgQzExLjYlMmMxMS43JTJjMTEuNiUyYzExLjglMmMxMS43JTJjMTEuOXogTTExLjclMmMxMS4zYzAtMC4xJTJjMC0wLjIlMmMwLjEtMC4yYzAlMmMwJTJjMC4xJTJjMCUyYzAuMSUyYzBjMCUyYzAlMmMwLjElMmMwJTJjMC4xJTJjMGMwJTJjMCUyYzAuMSUyYzAuMSUyYzAuMSUyYzAuMSBjMCUyYzAuMSUyYzAlMmMwLjIlMmMwJTJjMC4zYzAlMmMwLjIlMmMwJTJjMC4zJTJjMCUyYzAuNGMwJTJjMC4xJTJjMCUyYzAuMS0wLjElMmMwLjFjMCUyYzAtMC4xJTJjMC0wLjElMmMwYy0wLjElMmMwLTAuMSUyYzAtMC4xLTAuMWMwLTAuMS0wLjEtMC4yLTAuMS0wLjQgQzExLjclMmMxMS41JTJjMTEuNyUyYzExLjQlMmMxMS43JTJjMTEuM3onLyUzZSAlM2NwYXRoIGZpbGw9JyUyM0EzQ0MzOScgZD0nTTEzLjclMmMxMS41YzAtMC4yJTJjMC0wLjMtMC4xLTAuNEMxMy41JTJjMTElMmMxMy40JTJjMTElMmMxMy4zJTJjMTFjLTAuMSUyYzAtMC4xJTJjMC0wLjIlMmMwLjFjLTAuMSUyYzAtMC4xJTJjMC4xLTAuMiUyYzAuMiBjMCUyYzAuMS0wLjElMmMwLjItMC4xJTJjMC4zYzAlMmMwLjIlMmMwJTJjMC4zJTJjMC4xJTJjMC40YzAuMSUyYzAuMSUyYzAuMiUyYzAuMiUyYzAuMyUyYzAuMmMwLjElMmMwJTJjMC4xJTJjMCUyYzAuMi0wLjFjMC4xJTJjMCUyYzAuMS0wLjElMmMwLjEtMC4yIEMxMy43JTJjMTEuOCUyYzEzLjclMmMxMS43JTJjMTMuNyUyYzExLjV6IE0xMy41JTJjMTEuOWMwJTJjMC4xJTJjMCUyYzAuMS0wLjElMmMwLjFjMCUyYzAtMC4xJTJjMC0wLjElMmMwYy0wLjElMmMwLTAuMSUyYzAtMC4xLTAuMWMwLTAuMS0wLjEtMC4yLTAuMS0wLjQgYzAtMC4xJTJjMC0wLjIlMmMwLTAuM2MwLTAuMSUyYzAtMC4yJTJjMC4xLTAuMmMwJTJjMCUyYzAuMS0wLjElMmMwLjEtMC4xYzAlMmMwJTJjMC4xJTJjMCUyYzAuMSUyYzBjMCUyYzAlMmMwLjElMmMwLjElMmMwLjElMmMwLjFjMCUyYzAuMSUyYzAlMmMwLjIlMmMwJTJjMC4zIEMxMy42JTJjMTEuNyUyYzEzLjUlMmMxMS44JTJjMTMuNSUyYzExLjl6Jy8lM2UgJTNjcGF0aCBmaWxsPSclMjNBM0NDMzknIGQ9J00xNC43JTJjMTJDMTQuNyUyYzEyJTJjMTQuNyUyYzEyJTJjMTQuNyUyYzEyYzAlMmMwLTAuMSUyYzAtMC4xJTJjMHYwSDE1djBjLTAuMSUyYzAtMC4xJTJjMC0wLjElMmMwYzAlMmMwJTJjMCUyYzAlMmMwJTJjMGMwJTJjMCUyYzAtMC4xJTJjMC0wLjEgVjExaDBsLTAuMyUyYzAuMWwwJTJjMGMwJTJjMCUyYzAuMSUyYzAlMmMwLjElMmMwYzAlMmMwJTJjMCUyYzAlMmMwJTJjMGMwJTJjMCUyYzAlMmMwJTJjMCUyYzBjMCUyYzAlMmMwJTJjMC4xJTJjMCUyYzAuMnYwLjZDMTQuNyUyYzEyJTJjMTQuNyUyYzEyJTJjMTQuNyUyYzEyeicvJTNlICUzY3BhdGggZmlsbD0nJTIzQTNDQzM5JyBkPSdNMTYlMmMxMS4xTDE2JTJjMTEuMUMxNiUyYzExLjElMmMxNi4xJTJjMTEuMSUyYzE2JTJjMTEuMWMwLjElMmMwJTJjMC4xJTJjMCUyYzAuMSUyYzBjMCUyYzAlMmMwJTJjMCUyYzAlMmMwdjBjMC0wLjElMmMwLTAuMSUyYzAuMS0wLjJMMTYlMmMxMS4xIHonLyUzZSAlM2NwYXRoIGZpbGw9JyUyM0EzQ0MzOScgZD0nTTcuNCUyYzEzLjNjMC4xJTJjMC4xJTJjMC4xJTJjMC4yJTJjMC4yJTJjMC4yYzAlMmMwJTJjMC4xJTJjMCUyYzAuMi0wLjFjMC4xJTJjMCUyYzAuMS0wLjElMmMwLjEtMC4yUzglMmMxMy4xJTJjOCUyYzEzIGMwLTAuMiUyYzAtMC4zLTAuMS0wLjRjLTAuMS0wLjEtMC4xLTAuMS0wLjItMC4xYzAlMmMwLTAuMSUyYzAtMC4xJTJjMGMwJTJjMCUyYzAlMmMwJTJjMCUyYzBjLTAuMSUyYzAuMi0wLjElMmMwLjQtMC4xJTJjMC43QzcuMyUyYzEzLjMlMmM3LjQlMmMxMy4zJTJjNy40JTJjMTMuMyB6IE03LjUlMmMxMi43YzAtMC4xJTJjMC0wLjIlMmMwLjEtMC4yYzAlMmMwJTJjMC4xJTJjMCUyYzAuMSUyYzBjMCUyYzAlMmMwLjElMmMwJTJjMC4xJTJjMGMwJTJjMCUyYzAuMSUyYzAuMSUyYzAuMSUyYzAuMWMwJTJjMC4xJTJjMCUyYzAuMiUyYzAlMmMwLjNjMCUyYzAuMiUyYzAlMmMwLjMlMmMwJTJjMC40IGMwJTJjMC4xJTJjMCUyYzAuMS0wLjElMmMwLjFjMCUyYzAtMC4xJTJjMC0wLjElMmMwYy0wLjElMmMwLTAuMSUyYzAtMC4xLTAuMWMwLTAuMS0wLjEtMC4yLTAuMS0wLjNDNy40JTJjMTIuOSUyYzcuNCUyYzEyLjglMmM3LjUlMmMxMi43eicvJTNlICUzY3BhdGggZmlsbD0nJTIzQTNDQzM5JyBkPSdNOS40JTJjMTNjMC0wLjIlMmMwLTAuMy0wLjEtMC40Yy0wLjEtMC4xLTAuMS0wLjEtMC4yLTAuMWMwJTJjMC0wLjElMmMwLTAuMSUyYzAuMWMtMC4xJTJjMC0wLjElMmMwLjEtMC4xJTJjMC4yIGMwJTJjMC4xLTAuMSUyYzAuMi0wLjElMmMwLjNjMCUyYzAuMSUyYzAlMmMwLjMlMmMwLjElMmMwLjRjMC4xJTJjMC4xJTJjMC4yJTJjMC4yJTJjMC4zJTJjMC4yYzAuMSUyYzAlMmMwLjElMmMwJTJjMC4yLTAuMXMwLjEtMC4xJTJjMC4xLTAuMiBDOS40JTJjMTMuMiUyYzkuNCUyYzEzLjElMmM5LjQlMmMxM3ogTTkuMiUyYzEzLjNjMCUyYzAuMSUyYzAlMmMwLjEtMC4xJTJjMC4xYzAlMmMwLTAuMSUyYzAtMC4xJTJjMGMtMC4xJTJjMC0wLjElMmMwLTAuMS0wLjFjMC0wLjEtMC4xLTAuMi0wLjEtMC4zIGMwLTAuMSUyYzAtMC4yJTJjMC0wLjNjMC0wLjElMmMwLTAuMiUyYzAuMS0wLjJjMCUyYzAlMmMwLjElMmMwJTJjMC4xJTJjMGMwJTJjMCUyYzAuMSUyYzAlMmMwLjElMmMwYzAlMmMwJTJjMC4xJTJjMC4xJTJjMC4xJTJjMC4xYzAlMmMwLjElMmMwJTJjMC4yJTJjMCUyYzAuMyBDOS4yJTJjMTMuMSUyYzkuMiUyYzEzLjIlMmM5LjIlMmMxMy4zeicvJTNlICUzY3BhdGggZmlsbD0nJTIzQTNDQzM5JyBkPSdNMTAuMyUyYzEyLjZDMTAuMyUyYzEyLjUlMmMxMC40JTJjMTIuNSUyYzEwLjMlMmMxMi42YzAuMSUyYzAlMmMwLjElMmMwJTJjMC4xJTJjMGMwJTJjMCUyYzAlMmMwJTJjMCUyYzBjMCUyYzAlMmMwJTJjMC4xJTJjMCUyYzAuMnYwLjYgYzAlMmMwLjElMmMwJTJjMC4xJTJjMCUyYzAuMWMwJTJjMCUyYzAlMmMwJTJjMCUyYzBjMCUyYzAlMmMwJTJjMC0wLjElMmMwdjBoMC40djBjMCUyYzAtMC4xJTJjMC0wLjElMmMwYzAlMmMwJTJjMCUyYzAlMmMwJTJjMGMwJTJjMCUyYzAtMC4xJTJjMC0wLjF2LTAuOWgwTDEwLjMlMmMxMi42TDEwLjMlMmMxMi42eicgLyUzZSAlM2NwYXRoIGZpbGw9JyUyM0EzQ0MzOScgZD0nTTExLjclMmMxMy40YzAuMSUyYzAuMSUyYzAuMiUyYzAuMiUyYzAuMyUyYzAuMmMwLjElMmMwJTJjMC4xJTJjMCUyYzAuMi0wLjFjMC4xJTJjMCUyYzAuMS0wLjElMmMwLjEtMC4yYzAtMC4xJTJjMC4xLTAuMiUyYzAuMS0wLjMgYzAtMC4yJTJjMC0wLjMtMC4xLTAuNGMtMC4xLTAuMS0wLjEtMC4xLTAuMi0wLjFjLTAuMSUyYzAtMC4xJTJjMC0wLjIlMmMwLjFjLTAuMSUyYzAtMC4xJTJjMC4xLTAuMiUyYzAuMmMwJTJjMC4xLTAuMSUyYzAuMi0wLjElMmMwLjMgQzExLjYlMmMxMy4xJTJjMTEuNiUyYzEzLjMlMmMxMS43JTJjMTMuNHogTTExLjclMmMxMi43YzAtMC4xJTJjMC0wLjIlMmMwLjEtMC4yYzAlMmMwJTJjMC4xLTAuMSUyYzAuMS0wLjFjMCUyYzAlMmMwLjElMmMwJTJjMC4xJTJjMGMwJTJjMCUyYzAuMSUyYzAuMSUyYzAuMSUyYzAuMSBjMCUyYzAuMSUyYzAlMmMwLjIlMmMwJTJjMC4zYzAlMmMwLjIlMmMwJTJjMC4zJTJjMCUyYzAuNGMwJTJjMC4xJTJjMCUyYzAuMS0wLjElMmMwLjFjMCUyYzAtMC4xJTJjMC0wLjElMmMwYy0wLjElMmMwLTAuMSUyYzAtMC4xLTAuMWMwLTAuMS0wLjEtMC4yLTAuMS0wLjQgQzExLjclMmMxMi45JTJjMTEuNyUyYzEyLjglMmMxMS43JTJjMTIuN3onLyUzZSAlM2NwYXRoIGZpbGw9JyUyM0EzQ0MzOScgZD0nTTEzLjMlMmMxMy41QzEzLjMlMmMxMy41JTJjMTMuMyUyYzEzLjUlMmMxMy4zJTJjMTMuNWMwJTJjMC0wLjElMmMwLTAuMSUyYzB2MGgwLjR2MGMtMC4xJTJjMC0wLjElMmMwLTAuMSUyYzBjMCUyYzAlMmMwJTJjMCUyYzAlMmMwIGMwJTJjMCUyYzAtMC4xJTJjMC0wLjF2LTFoMGwtMC4zJTJjMC4xbDAlMmMwYzAlMmMwJTJjMC4xJTJjMCUyYzAuMSUyYzBjMCUyYzAlMmMwJTJjMCUyYzAlMmMwczAlMmMwJTJjMCUyYzBjMCUyYzAlMmMwJTJjMC4xJTJjMCUyYzAuMnYwLjZDMTMuMyUyYzEzLjQlMmMxMy4zJTJjMTMuNSUyYzEzLjMlMmMxMy41eicvJTNlICUzY3BhdGggZmlsbD0nJTIzQTNDQzM5JyBkPSdNMTQuOCUyYzEyLjRjLTAuMSUyYzAtMC4xJTJjMC0wLjIlMmMwLjFjLTAuMSUyYzAtMC4xJTJjMC4xLTAuMiUyYzAuMmMwJTJjMC4xLTAuMSUyYzAuMi0wLjElMmMwLjNjMCUyYzAuMiUyYzAlMmMwLjMlMmMwLjElMmMwLjQgYzAlMmMwLjElMmMwLjElMmMwLjElMmMwLjElMmMwLjJjMCUyYzAlMmMwJTJjMCUyYzAuMS0wLjFjMCUyYzAlMmMwJTJjMCUyYzAtMC4xYzAtMC4xLTAuMS0wLjItMC4xLTAuNGMwLTAuMSUyYzAtMC4yJTJjMC0wLjNjMC0wLjElMmMwLTAuMiUyYzAuMS0wLjIgQzE0LjclMmMxMi40JTJjMTQuOCUyYzEyLjQlMmMxNC44JTJjMTIuNEMxNC44JTJjMTIuNCUyYzE0LjklMmMxMi40JTJjMTQuOCUyYzEyLjRjMC4xJTJjMC4xJTJjMC4yJTJjMC4yJTJjMC4yJTJjMC4yYzAlMmMwLjElMmMwJTJjMC4yJTJjMCUyYzAuM2MwJTJjMC4xJTJjMCUyYzAuMiUyYzAlMmMwLjIgYzAuMS0wLjElMmMwLjEtMC4yJTJjMC4yLTAuMmMwLTAuMiUyYzAtMC4zLTAuMS0wLjRDMTQuOSUyYzEyLjQlMmMxNC45JTJjMTIuNCUyYzE0LjglMmMxMi40eicvJTNlICUzY3BhdGggZmlsbD0nJTIzQTNDQzM5JyBkPSdNNy42JTJjMTQuOWMwJTJjMCUyYzAuMSUyYzAlMmMwLjItMC4xYzAuMSUyYzAlMmMwLjEtMC4xJTJjMC4xLTAuMmMwLTAuMSUyYzAuMS0wLjIlMmMwLjEtMC4zYzAtMC4yJTJjMC0wLjMtMC4xLTAuNCBjLTAuMS0wLjEtMC4xLTAuMS0wLjItMC4xYzAlMmMwLTAuMSUyYzAtMC4xJTJjMGMtMC4xJTJjMC0wLjElMmMwLjEtMC4xJTJjMC4yYzAlMmMwLjEtMC4xJTJjMC4yLTAuMSUyYzAuM2MwJTJjMC4xJTJjMCUyYzAuMyUyYzAuMSUyYzAuMyBDNy40JTJjMTQuOSUyYzcuNSUyYzE0LjklMmM3LjYlMmMxNC45eiBNNy41JTJjMTQuMmMwLTAuMSUyYzAtMC4yJTJjMC4xLTAuMmMwJTJjMCUyYzAuMSUyYzAlMmMwLjElMmMwYzAlMmMwJTJjMC4xJTJjMCUyYzAuMSUyYzBjMCUyYzAlMmMwLjElMmMwLjElMmMwLjElMmMwLjEgYzAlMmMwLjElMmMwJTJjMC4yJTJjMCUyYzAuM2MwJTJjMC4yJTJjMCUyYzAuMyUyYzAlMmMwLjRjMCUyYzAuMSUyYzAlMmMwLjEtMC4xJTJjMC4xYzAlMmMwLTAuMSUyYzAtMC4xJTJjMGMtMC4xJTJjMC0wLjElMmMwLTAuMS0wLjFjMC0wLjEtMC4xLTAuMi0wLjEtMC4zIEM3LjQlMmMxNC40JTJjNy40JTJjMTQuMyUyYzcuNSUyYzE0LjJ6Jy8lM2UgJTNjcGF0aCBmaWxsPSclMjNBM0NDMzknIGQ9J005JTJjMTQuOUM5JTJjMTQuOSUyYzklMmMxNC45JTJjOSUyYzE0LjljMCUyYzAtMC4xJTJjMC0wLjElMmMwdjBoMC40djBjMCUyYzAtMC4xJTJjMC0wLjElMmMwYzAlMmMwJTJjMCUyYzAlMmMwJTJjMGMwJTJjMCUyYzAtMC4xJTJjMC0wLjF2LTAuOSBoMEw4LjglMmMxNGwwJTJjMGMwJTJjMCUyYzAuMSUyYzAlMmMwLjElMmMwYzAlMmMwJTJjMCUyYzAlMmMwJTJjMHMwJTJjMCUyYzAlMmMwYzAlMmMwJTJjMCUyYzAuMSUyYzAlMmMwLjJ2MC42QzklMmMxNC44JTJjOSUyYzE0LjklMmM5JTJjMTQuOXonLyUzZSAlM2NwYXRoIGZpbGw9JyUyM0EzQ0MzOScgZD0nTTEwLjQlMmMxNC45QzEwLjQlMmMxNC45JTJjMTAuNCUyYzE0LjklMmMxMC40JTJjMTQuOWMwJTJjMC0wLjElMmMwLTAuMSUyYzB2MGgwLjR2MGMtMC4xJTJjMC0wLjElMmMwLTAuMSUyYzBjMCUyYzAlMmMwJTJjMCUyYzAlMmMwIGMwJTJjMCUyYzAtMC4xJTJjMC0wLjF2LTAuOWgwTDEwLjMlMmMxNGwwJTJjMGMwJTJjMCUyYzAuMSUyYzAlMmMwLjElMmMwYzAlMmMwJTJjMCUyYzAlMmMwJTJjMGMwJTJjMCUyYzAlMmMwJTJjMCUyYzBjMCUyYzAlMmMwJTJjMC4xJTJjMCUyYzAuMnYwLjZDMTAuNCUyYzE0LjglMmMxMC40JTJjMTQuOSUyYzEwLjQlMmMxNC45IHonLyUzZSAlM2NwYXRoIGZpbGw9JyUyM0EzQ0MzOScgZD0nTTExLjYlMmMxNC44YzAuMSUyYzAuMSUyYzAuMiUyYzAuMiUyYzAuMyUyYzAuMmMwLjElMmMwJTJjMC4xJTJjMCUyYzAuMi0wLjFjMC4xJTJjMCUyYzAuMS0wLjElMmMwLjEtMC4yYzAtMC4xJTJjMC4xLTAuMiUyYzAuMS0wLjMgYzAtMC4yJTJjMC0wLjMtMC4xLTAuNGMtMC4xLTAuMS0wLjItMC4xLTAuMi0wLjFjLTAuMSUyYzAtMC4xJTJjMC0wLjIlMmMwLjFjLTAuMSUyYzAtMC4xJTJjMC4xLTAuMiUyYzAuMmMwJTJjMC4xLTAuMSUyYzAuMi0wLjElMmMwLjMgQzExLjUlMmMxNC42JTJjMTEuNiUyYzE0LjclMmMxMS42JTJjMTQuOHogTTExLjclMmMxNC4xYzAtMC4xJTJjMC0wLjIlMmMwLjEtMC4yYzAlMmMwJTJjMC4xLTAuMSUyYzAuMS0wLjFjMCUyYzAlMmMwLjElMmMwJTJjMC4xJTJjMGMwJTJjMCUyYzAuMSUyYzAuMSUyYzAuMSUyYzAuMSBjMCUyYzAuMSUyYzAlMmMwLjIlMmMwJTJjMC4zYzAlMmMwLjIlMmMwJTJjMC4zJTJjMCUyYzAuNGMwJTJjMC4xJTJjMCUyYzAuMS0wLjElMmMwLjFjMCUyYzAtMC4xJTJjMC0wLjElMmMwYy0wLjElMmMwLTAuMSUyYzAtMC4xLTAuMWMwLTAuMS0wLjEtMC4yLTAuMS0wLjQgQzExLjclMmMxNC4zJTJjMTEuNyUyYzE0LjIlMmMxMS43JTJjMTQuMXonLyUzZSAlM2NwYXRoIGZpbGw9JyUyM0EzQ0MzOScgZD0nTTEzLjQlMmMxMy44bC0wLjMlMmMwLjFsMCUyYzBjMCUyYzAlMmMwLjElMmMwJTJjMC4xJTJjMGMwJTJjMCUyYzAlMmMwJTJjMCUyYzBjMCUyYzAlMmMwJTJjMCUyYzAlMmMwYzAlMmMwJTJjMCUyYzAuMSUyYzAlMmMwLjJ2MC41IGMwLjElMmMwJTJjMC4xLTAuMSUyYzAuMS0wLjFMMTMuNCUyYzEzLjhMMTMuNCUyYzEzLjh6Jy8lM2UgJTNjcGF0aCBmaWxsPSclMjNBM0NDMzknIGQ9J003LjglMmMxNS40Yy0wLjEtMC4xLTAuMS0wLjEtMC4yLTAuMWMwJTJjMC0wLjElMmMwLTAuMSUyYzBjLTAuMSUyYzAtMC4xJTJjMC4xLTAuMSUyYzAuMmMwJTJjMC4xJTJjMCUyYzAuMiUyYzAlMmMwLjMgYzAlMmMwJTJjMCUyYzAlMmMwLjElMmMwYzAtMC4xJTJjMC0wLjElMmMwLTAuMmMwLTAuMSUyYzAtMC4yJTJjMC4xLTAuMmMwJTJjMCUyYzAuMSUyYzAlMmMwLjElMmMwYzAlMmMwJTJjMC4xJTJjMCUyYzAuMSUyYzBDNy43JTJjMTUuNCUyYzcuOCUyYzE1LjUlMmM3LjglMmMxNS40IGMwJTJjMC4yJTJjMCUyYzAuMyUyYzAlMmMwLjRjMCUyYzAlMmMwJTJjMCUyYzAlMmMwYzAlMmMwJTJjMC4xJTJjMCUyYzAuMSUyYzBjMCUyYzAlMmMwJTJjMCUyYzAlMmMwQzcuOSUyYzE1LjclMmM3LjklMmMxNS41JTJjNy44JTJjMTUuNHonLyUzZSAlM2NwYXRoIGZpbGw9JyUyM0EzQ0MzOScgZD0nTTkuMyUyYzE1LjRjLTAuMS0wLjEtMC4xLTAuMS0wLjItMC4xYy0wLjElMmMwLTAuMSUyYzAtMC4xJTJjMC4xYy0wLjElMmMwLTAuMSUyYzAuMS0wLjElMmMwLjJjMCUyYzAuMS0wLjElMmMwLjItMC4xJTJjMC4zIGMwJTJjMCUyYzAlMmMwJTJjMCUyYzAuMWMwJTJjMCUyYzAuMSUyYzAlMmMwLjElMmMwbDAlMmMwYzAlMmMwJTJjMCUyYzAlMmMwLTAuMWMwLTAuMSUyYzAtMC4yJTJjMC0wLjNjMC0wLjElMmMwLTAuMiUyYzAuMS0wLjJjMCUyYzAlMmMwLjElMmMwJTJjMC4xJTJjMGMwJTJjMCUyYzAuMSUyYzAlMmMwLjElMmMwIEM5LjIlMmMxNS40JTJjOS4yJTJjMTUuNSUyYzkuMyUyYzE1LjRjMCUyYzAuMiUyYzAlMmMwLjMlMmMwJTJjMC40YzAlMmMwJTJjMCUyYzAuMSUyYzAlMmMwLjFjMCUyYzAlMmMwLjElMmMwJTJjMC4xJTJjMGMwJTJjMCUyYzAlMmMwJTJjMC0wLjFDOS40JTJjMTUuNyUyYzkuNCUyYzE1LjUlMmM5LjMlMmMxNS40eicvJTNlICUzY3BhdGggZmlsbD0nJTIzQTNDQzM5JyBkPSdNMTAuNSUyYzE1LjNsLTAuMyUyYzAuMWwwJTJjMGMwJTJjMCUyYzAuMSUyYzAlMmMwLjElMmMwYzAlMmMwJTJjMCUyYzAlMmMwJTJjMGMwJTJjMCUyYzAlMmMwJTJjMCUyYzBjMCUyYzAlMmMwJTJjMC4xJTJjMCUyYzAuMnYwLjJjMCUyYzAlMmMwLjElMmMwJTJjMC4xJTJjMCBMMTAuNSUyYzE1LjNMMTAuNSUyYzE1LjNMMTAuNSUyYzE1LjN6Jy8lM2UgJTNjcGF0aCBmaWxsPSclMjNBM0NDMzknIGQ9J00xMiUyYzE1LjJsLTAuMyUyYzAuMWwwJTJjMGMwJTJjMCUyYzAuMSUyYzAlMmMwLjElMmMwYzAlMmMwJTJjMCUyYzAlMmMwJTJjMEMxMS45JTJjMTUuNCUyYzExLjklMmMxNS4zJTJjMTIlMmMxNS4yTDEyJTJjMTUuMkwxMiUyYzE1LjJMMTIlMmMxNS4yeiAnLyUzZSAlM2MvZyUzZSUzYy9nJTNlJTNjL3N2ZyUzZSI7CiAgZXhwb3J0IGRlZmF1bHQgaW1nOw==';
|
|
1491
|
+
var lang = new LocalizedStrings({
|
|
1492
|
+
en: {
|
|
1493
|
+
introPrompt: "Some things you can ask me: ",
|
|
1494
|
+
use: "Use",
|
|
1495
|
+
exploreQueries: "Explore Queries",
|
|
1496
|
+
explorePrompt: "to further explore the possibilities.",
|
|
1497
|
+
run: "We run on AutoQL by Chata",
|
|
1498
|
+
queryPrompt: "Type your queries here ",
|
|
1499
|
+
seeMore: "See more",
|
|
1500
|
+
clearDataResponses: "Clear data responses",
|
|
1501
|
+
closeDataMessenger: "Close Data Messenger",
|
|
1502
|
+
searchQueries: "Search relevant queries by topic",
|
|
1503
|
+
discoverPrompt: "Discover what you can ask by entering a topic in the search bar above. Simply click on any of the returned options to run the query in Data Messenger.",
|
|
1504
|
+
reportAProblem: "Report a problem",
|
|
1505
|
+
deleteDataResponse: "Delete data response",
|
|
1506
|
+
table: "Table",
|
|
1507
|
+
barChart: "Bar Chart",
|
|
1508
|
+
columnChart: "Column Chart",
|
|
1509
|
+
lineChart: "Line Chart",
|
|
1510
|
+
pieChart: "Pie Chart",
|
|
1511
|
+
heatMap: "Heat Map",
|
|
1512
|
+
bubbleChart: "Bubble Chart",
|
|
1513
|
+
stackedColumnChart: "Stacked Column Chart",
|
|
1514
|
+
stackedBarChart: "Stacked Bar Chart",
|
|
1515
|
+
stackedAreaChart: "Stacked Area Chart",
|
|
1516
|
+
downloadAsPNG: "Download as a PNG",
|
|
1517
|
+
filterTable: "Filter table",
|
|
1518
|
+
showHideColumns: "Show/hide columns",
|
|
1519
|
+
downloadAsCSV: "Download as a CSV",
|
|
1520
|
+
copyTableToClipboard: "Copy table to clipboard",
|
|
1521
|
+
filterColumn: "Filter column",
|
|
1522
|
+
columnName: "Column Name",
|
|
1523
|
+
visibility: "Visibility",
|
|
1524
|
+
cancel: "Cancel",
|
|
1525
|
+
apply: "Apply"
|
|
1526
|
+
},
|
|
1527
|
+
sp: {
|
|
1528
|
+
introPrompt: "Cosas que puedes preguntarme:",
|
|
1529
|
+
use: "Utiliza",
|
|
1530
|
+
exploreQueries: "Explorar Consultas",
|
|
1531
|
+
explorePrompt: "para ampliar las posibilidades.",
|
|
1532
|
+
run: "Corremos en AutoQL de Chata",
|
|
1533
|
+
queryPrompt: "Escribe tus consultas aquí",
|
|
1534
|
+
seeMore: "Ver más",
|
|
1535
|
+
clearDataResponses: "Limpiar respuestas",
|
|
1536
|
+
closeDataMessenger: "Cerrar Data mesenger",
|
|
1537
|
+
searchQueries: "Buscar consultas relevantes por tema",
|
|
1538
|
+
discoverPrompt: "Descubre lo que puede preguntar ingresando un tema en la barra de búsqueda de arriba. Da clic en cualquiera de las opciones devueltas para ejecutar la consulta en Data Messenger.",
|
|
1539
|
+
reportAProblem: "Informar de un problema",
|
|
1540
|
+
deleteDataResponse: "Eliminar respuesta de datos",
|
|
1541
|
+
table: "Tabla",
|
|
1542
|
+
barChart: "Gráfico de barras",
|
|
1543
|
+
columnChart: "Gráfico de columnas",
|
|
1544
|
+
lineChart: "Gráfico de linea",
|
|
1545
|
+
pieChart: "Gráfico circular",
|
|
1546
|
+
heatMap: "Mapa de calor",
|
|
1547
|
+
bubbleChart: "Gráfico de burbujas",
|
|
1548
|
+
stackedColumnChart: "Gráfico de columnas apiladas",
|
|
1549
|
+
stackedBarChart: "Gráfico de barras apiladas",
|
|
1550
|
+
stackedAreaChart: "Gráfico de área apilada",
|
|
1551
|
+
downloadAsPNG: "Descargar como PNG",
|
|
1552
|
+
filterTable: "Tabla de filtros",
|
|
1553
|
+
showHideColumns: "Mostrar/ocultar columnas",
|
|
1554
|
+
downloadAsCSV: "Descargar como CSV",
|
|
1555
|
+
copyTableToClipboard: "Copiar tabla al portapapelas",
|
|
1556
|
+
filterColumn: "Columna de filtro",
|
|
1557
|
+
columnName: "Nombre de columna",
|
|
1558
|
+
visibility: "Visibilidad",
|
|
1559
|
+
cancel: "Cancelar",
|
|
1560
|
+
apply: "Aplicar"
|
|
1561
|
+
}
|
|
1562
|
+
});
|
|
1563
|
+
|
|
1564
|
+
var setLanguage = function setLanguage() {
|
|
1565
|
+
var userLang = navigator.language || navigator.userLanguage;
|
|
1566
|
+
if (userLang.includes("sp")) {
|
|
1567
|
+
lang.setLanguage("sp");
|
|
1568
|
+
} else {
|
|
1569
|
+
lang.setLanguage("en");
|
|
1570
|
+
}
|
|
1571
|
+
};
|
|
1572
|
+
|
|
1573
|
+
var chataBubblesSVG = 'data:image/svg+xml;base64,dmFyIGltZyA9ICJkYXRhOmltYWdlL3N2Zyt4bWwsJTNjJTNmeG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J3V0Zi04JyUzZiUzZSUzYyEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIyLjEuMCUyYyBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAtLSUzZSUzY3N2ZyB2ZXJzaW9uPScxLjEnIGlkPSdMYXllcl8xJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHhtbG5zOnhsaW5rPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJyB4PScwcHgnIHk9JzBweCcgd2lkdGg9JzI0cHgnIGhlaWdodD0nMjRweCcgdmlld0JveD0nMCAwIDI0IDI0JyBlbmFibGUtYmFja2dyb3VuZD0nbmV3IDAgMCAyNCAyNCcgeG1sOnNwYWNlPSdwcmVzZXJ2ZSclM2UlM2NnJTNlICUzY2clM2UgJTNjZyUzZSAlM2NwYXRoIGZpbGw9JyUyMzI2QTdERicgZD0nTTE2JTJjNUMxNC44JTJjMi4zJTJjMTIlMmMwLjQlMmM4LjglMmMwLjRjLTQuNCUyYzAtNy42JTJjMy41LTcuNiUyYzcuOXY0YzAlMmMyLjgtMSUyYzMuNi0xJTJjMy42YzEuMyUyYzAuMSUyYzIuOS0wLjQlMmM0LTEuNSBjMC40JTJjMC40JTJjMSUyYzAuOCUyYzEuNiUyYzFjMC41JTJjMC4yJTJjMSUyYzAuNCUyYzEuNiUyYzAuNWMwLTAuMi0wLjEtMC41LTAuMS0wLjdjMC0wLjIlMmMwLTAuNSUyYzAtMC43YzAtMS42JTJjMC41LTMuMiUyYzEuMy00LjQgYzAuMy0wLjQlMmMwLjYtMC44JTJjMS0xLjJjMC4yLTAuMiUyYzAuNC0wLjMlMmMwLjYtMC41YzAuNC0wLjMlMmMwLjgtMC42JTJjMS4yLTAuOGMwLjQtMC4yJTJjMC45LTAuNCUyYzEuNC0wLjZjMC43LTAuMiUyYzEuNS0wLjMlMmMyLjMtMC4zbDAlMmMwIGMwLjMlMmMwJTJjMC41JTJjMCUyYzAuNyUyYzBjMC4yJTJjMCUyYzAuNSUyYzAuMSUyYzAuNyUyYzAuMUMxNi40JTJjNiUyYzE2LjIlMmM1LjUlMmMxNiUyYzV6Jy8lM2UgJTNjL2clM2UgJTNjL2clM2UgJTNjZyUzZSAlM2NwYXRoIGZpbGw9JyUyM0EzQ0MzOScgZD0nTTIyLjclMmMxOC4zdi00YzAtMy4zLTEuOC02LTQuNi03LjJjLTAuNS0wLjItMS0wLjQtMS42LTAuNWMwLjElMmMwLjUlMmMwLjIlMmMxLjElMmMwLjIlMmMxLjdjMCUyYzEuOS0wLjclMmMzLjYtMS44JTJjNC45IGMtMC41JTJjMC42LTElMmMxLTEuNyUyYzEuNWMtMC40JTJjMC4zLTAuOSUyYzAuNS0xLjMlMmMwLjdjLTAuNSUyYzAuMi0xJTJjMC4zLTEuNSUyYzAuNGMtMC41JTJjMC4xLTElMmMwLjItMS42JTJjMC4yYy0wLjMlMmMwLTAuNSUyYzAtMC43JTJjMCBjLTAuMyUyYzAtMC41LTAuMS0wLjctMC4xYzAuMSUyYzAuNiUyYzAuMyUyYzEuMSUyYzAuNSUyYzEuNmMxLjIlMmMyLjglMmMzLjklMmM0LjYlMmM3LjIlMmM0LjZjMS44JTJjMCUyYzMuNS0wLjUlMmM0LjYtMS42YzElMmMxJTJjMi45JTJjMS44JTJjNC4xJTJjMS41IEMyMy44JTJjMjEuOSUyYzIyLjclMmMyMS4zJTJjMjIuNyUyYzE4LjN6Jy8lM2UgJTNjL2clM2UgJTNjZyUzZSAlM2NwYXRoIGZpbGw9J25vbmUnIGQ9J00xNS4xJTJjNi41Yy00LjQlMmMwLTcuOCUyYzMuNS03LjglMmM3LjljMCUyYzAuNSUyYzAuMSUyYzElMmMwLjElMmMxLjVjMC41JTJjMC4xJTJjMSUyYzAuMSUyYzEuNSUyYzAuMWM0LjQlMmMwJTJjNy44LTMuMyUyYzcuOC03LjYgYzAtMC42LTAuMS0xLjEtMC4yLTEuN0MxNi4xJTJjNi41JTJjMTUuNiUyYzYuNSUyYzE1LjElMmM2LjV6Jy8lM2UgJTNjL2clM2UgJTNjZyUzZSAlM2NwYXRoIGZpbGw9J25vbmUnIGQ9J00xNi4zJTJjOC4yQzE2LjMlMmM4LjIlMmMxNi4yJTJjOC4yJTJjMTYuMyUyYzguMmMtMC4xJTJjMC0wLjElMmMwLTAuMiUyYzBjMCUyYzAtMC4xJTJjMC4xLTAuMSUyYzAuMmMwJTJjMC4xJTJjMCUyYzAuMiUyYzAlMmMwLjMgYzAlMmMwLjElMmMwJTJjMC4zJTJjMC4xJTJjMC4zYzAlMmMwLjElMmMwLjElMmMwLjElMmMwLjElMmMwLjFjMCUyYzAlMmMwLjElMmMwJTJjMC4xJTJjMGMwJTJjMCUyYzAuMS0wLjElMmMwLjEtMC4xYzAtMC4xJTJjMC0wLjIlMmMwLTAuNGMwLTAuMSUyYzAtMC4yJTJjMC0wLjMgQzE2LjMlMmM4LjMlMmMxNi4zJTJjOC4yJTJjMTYuMyUyYzguMnonLyUzZSAlM2NwYXRoIGZpbGw9J25vbmUnIGQ9J00xMy40JTJjMTFDMTMuNCUyYzExJTJjMTMuNCUyYzExJTJjMTMuNCUyYzExYy0wLjElMmMwLTAuMSUyYzAtMC4yJTJjMGMwJTJjMC0wLjElMmMwLjEtMC4xJTJjMC4yYzAlMmMwLjElMmMwJTJjMC4yJTJjMCUyYzAuMyBjMCUyYzAuMiUyYzAlMmMwLjMlMmMwLjElMmMwLjRjMCUyYzAuMSUyYzAuMSUyYzAuMSUyYzAuMSUyYzAuMWMwJTJjMCUyYzAuMSUyYzAlMmMwLjElMmMwYzAlMmMwJTJjMC4xLTAuMSUyYzAuMS0wLjFjMC0wLjElMmMwLTAuMiUyYzAtMC40YzAtMC4xJTJjMC0wLjIlMmMwLTAuMyBDMTMuNSUyYzExLjElMmMxMy41JTJjMTEuMSUyYzEzLjQlMmMxMXonLyUzZSAlM2NwYXRoIGZpbGw9J25vbmUnIGQ9J00xMy4zJTJjOS4xQzEzLjQlMmM5LjElMmMxMy40JTJjOS4xJTJjMTMuMyUyYzkuMUMxMy41JTJjOS4xJTJjMTMuNSUyYzklMmMxMy41JTJjOWMwLTAuMSUyYzAtMC4yJTJjMC0wLjRjMC0wLjElMmMwLTAuMiUyYzAtMC4zIGMwLTAuMSUyYzAtMC4xLTAuMS0wLjFjMCUyYzAlMmMwJTJjMC0wLjElMmMwYzAlMmMwLTAuMSUyYzAtMC4xJTJjMGMwJTJjMC0wLjElMmMwLjEtMC4xJTJjMC4yYzAlMmMwLjElMmMwJTJjMC4yJTJjMCUyYzAuM2MwJTJjMC4xJTJjMCUyYzAuMyUyYzAuMSUyYzAuMyBDMTMuMiUyYzkuMSUyYzEzLjMlMmM5LjElMmMxMy4zJTJjOS4xeicvJTNlICUzY3BhdGggZmlsbD0nbm9uZScgZD0nTTExLjklMmMxMC42QzExLjklMmMxMC42JTJjMTIlMmMxMC42JTJjMTEuOSUyYzEwLjZjMC4xLTAuMSUyYzAuMS0wLjElMmMwLjItMC4yYzAtMC4xJTJjMC0wLjIlMmMwLTAuNGMwLTAuMSUyYzAtMC4yJTJjMC0wLjMgYzAtMC4xJTJjMC0wLjEtMC4xLTAuMWMwJTJjMCUyYzAlMmMwLTAuMSUyYzBjMCUyYzAtMC4xJTJjMC0wLjElMmMwYzAlMmMwLTAuMSUyYzAuMS0wLjElMmMwLjJjMCUyYzAuMSUyYzAlMmMwLjIlMmMwJTJjMC4zYzAlMmMwLjElMmMwJTJjMC4zJTJjMC4xJTJjMC4zIEMxMS44JTJjMTAuNiUyYzExLjklMmMxMC42JTJjMTEuOSUyYzEwLjZ6Jy8lM2UgJTNjcGF0aCBmaWxsPSdub25lJyBkPSdNOS4xJTJjMTIuNUM5LjElMmMxMi41JTJjOS4xJTJjMTIuNSUyYzkuMSUyYzEyLjVjLTAuMSUyYzAtMC4xJTJjMC0wLjIlMmMwYzAlMmMwLTAuMSUyYzAuMS0wLjElMmMwLjJjMCUyYzAuMSUyYzAlMmMwLjIlMmMwJTJjMC4zIGMwJTJjMC4xJTJjMCUyYzAuMyUyYzAuMSUyYzAuM2MwJTJjMC4xJTJjMC4xJTJjMC4xJTJjMC4xJTJjMC4xYzAlMmMwJTJjMC4xJTJjMCUyYzAuMSUyYzBjMCUyYzAlMmMwLjEtMC4xJTJjMC4xLTAuMWMwLTAuMSUyYzAtMC4yJTJjMC0wLjRjMC0wLjElMmMwLTAuMiUyYzAtMC4zIEM5LjIlMmMxMi42JTJjOS4yJTJjMTIuNSUyYzkuMSUyYzEyLjV6Jy8lM2UgJTNjcGF0aCBmaWxsPSdub25lJyBkPSdNMTAuNSUyYzEwLjZDMTAuNSUyYzEwLjYlMmMxMC41JTJjMTAuNiUyYzEwLjUlMmMxMC42YzAuMS0wLjElMmMwLjEtMC4xJTJjMC4yLTAuMmMwLTAuMSUyYzAtMC4yJTJjMC0wLjRjMC0wLjElMmMwLTAuMiUyYzAtMC4zIGMwLTAuMSUyYzAtMC4xLTAuMS0wLjFjMCUyYzAlMmMwJTJjMC0wLjElMmMwYzAlMmMwLTAuMSUyYzAtMC4xJTJjMGMwJTJjMC0wLjElMmMwLjEtMC4xJTJjMC4yYzAlMmMwLjElMmMwJTJjMC4yJTJjMCUyYzAuM2MwJTJjMC4xJTJjMCUyYzAuMyUyYzAuMSUyYzAuMyBDMTAuNCUyYzEwLjUlMmMxMC40JTJjMTAuNiUyYzEwLjUlMmMxMC42eicvJTNlICUzY3BhdGggZmlsbD0nbm9uZScgZD0nTTcuNiUyYzE0LjlDNy42JTJjMTQuOSUyYzcuNyUyYzE0LjklMmM3LjYlMmMxNC45YzAuMS0wLjElMmMwLjEtMC4xJTJjMC4yLTAuMmMwLTAuMSUyYzAtMC4yJTJjMC0wLjRjMC0wLjElMmMwLTAuMiUyYzAtMC4zIGMwLTAuMSUyYzAtMC4xLTAuMS0wLjFjMCUyYzAlMmMwJTJjMC0wLjElMmMwYzAlMmMwLTAuMSUyYzAtMC4xJTJjMGMwJTJjMC0wLjElMmMwLjEtMC4xJTJjMC4yYzAlMmMwLjElMmMwJTJjMC4yJTJjMCUyYzAuM2MwJTJjMC4xJTJjMCUyYzAuMyUyYzAuMSUyYzAuMyBDNy41JTJjMTQuOCUyYzcuNiUyYzE0LjklMmM3LjYlMmMxNC45eicvJTNlICUzY3BhdGggZmlsbD0nbm9uZScgZD0nTTcuNiUyYzEzLjRDNy42JTJjMTMuNCUyYzcuNyUyYzEzLjQlMmM3LjYlMmMxMy40YzAuMS0wLjElMmMwLjEtMC4xJTJjMC4yLTAuMmMwLTAuMSUyYzAtMC4yJTJjMC0wLjRjMC0wLjElMmMwLTAuMiUyYzAtMC4zIGMwLTAuMSUyYzAtMC4xLTAuMS0wLjFjMCUyYzAlMmMwJTJjMC0wLjElMmMwYzAlMmMwLTAuMSUyYzAtMC4xJTJjMGMwJTJjMC0wLjElMmMwLjEtMC4xJTJjMC4yYzAlMmMwLjElMmMwJTJjMC4yJTJjMCUyYzAuM2MwJTJjMC4xJTJjMCUyYzAuMyUyYzAuMSUyYzAuMyBDNy41JTJjMTMuNCUyYzcuNiUyYzEzLjQlMmM3LjYlMmMxMy40eicvJTNlICUzY3BhdGggZmlsbD0nbm9uZScgZD0nTTExLjklMmM5LjFDMTEuOSUyYzkuMSUyYzEyJTJjOS4xJTJjMTEuOSUyYzkuMUMxMiUyYzkuMSUyYzEyLjElMmM5JTJjMTIuMSUyYzljMC0wLjElMmMwLTAuMiUyYzAtMC40YzAtMC4xJTJjMC0wLjIlMmMwLTAuMyBjMC0wLjElMmMwLTAuMS0wLjEtMC4xYzAlMmMwJTJjMCUyYzAtMC4xJTJjMGMwJTJjMC0wLjElMmMwLTAuMSUyYzBjMCUyYzAtMC4xJTJjMC4xLTAuMSUyYzAuMmMwJTJjMC4xJTJjMCUyYzAuMiUyYzAlMmMwLjNjMCUyYzAuMSUyYzAlMmMwLjMlMmMwLjElMmMwLjMgQzExLjglMmM5LjElMmMxMS45JTJjOS4xJTJjMTEuOSUyYzkuMXonLyUzZSAlM2NwYXRoIGZpbGw9J25vbmUnIGQ9J00xMS45JTJjMTMuNUMxMS45JTJjMTMuNSUyYzEyJTJjMTMuNSUyYzExLjklMmMxMy41YzAuMS0wLjElMmMwLjEtMC4xJTJjMC4yLTAuMmMwLTAuMSUyYzAtMC4yJTJjMC0wLjRjMC0wLjElMmMwLTAuMiUyYzAtMC4zIGMwLTAuMSUyYzAtMC4xLTAuMS0wLjFjMCUyYzAtMC4xJTJjMC0wLjElMmMwYzAlMmMwLTAuMSUyYzAtMC4xJTJjMC4xYzAlMmMwLTAuMSUyYzAuMS0wLjElMmMwLjJjMCUyYzAuMSUyYzAlMmMwLjIlMmMwJTJjMC4zYzAlMmMwLjIlMmMwJTJjMC4zJTJjMC4xJTJjMC40IEMxMS44JTJjMTMuNSUyYzExLjglMmMxMy41JTJjMTEuOSUyYzEzLjV6Jy8lM2UgJTNjcGF0aCBmaWxsPSdub25lJyBkPSdNMTEuOSUyYzEyLjFDMTEuOSUyYzEyLjElMmMxMiUyYzEyJTJjMTEuOSUyYzEyLjFjMC4xLTAuMSUyYzAuMS0wLjElMmMwLjItMC4yYzAtMC4xJTJjMC0wLjIlMmMwLTAuNGMwLTAuMSUyYzAtMC4yJTJjMC0wLjMgYzAtMC4xJTJjMC0wLjEtMC4xLTAuMWMwJTJjMCUyYzAlMmMwLTAuMSUyYzBzLTAuMSUyYzAtMC4xJTJjMGMwJTJjMC0wLjElMmMwLjEtMC4xJTJjMC4yYzAlMmMwLjElMmMwJTJjMC4yJTJjMCUyYzAuM2MwJTJjMC4yJTJjMCUyYzAuMyUyYzAuMSUyYzAuNCBDMTEuOCUyYzEyJTJjMTEuOSUyYzEyLjElMmMxMS45JTJjMTIuMXonLyUzZSAlM2NwYXRoIGZpbGw9J25vbmUnIGQ9J00xNiUyYzcuMmMwJTJjMC4xJTJjMCUyYzAuMiUyYzAlMmMwLjNjMCUyYzAuMSUyYzAuMSUyYzAuMSUyYzAuMSUyYzAuMWMwJTJjMCUyYzAuMSUyYzAlMmMwLjElMmMwYzAlMmMwJTJjMC0wLjElMmMwLjEtMC4xYzAtMC4xJTJjMC0wLjIlMmMwLTAuMyBjMC0wLjElMmMwLTAuMiUyYzAtMC4zYzAtMC4xJTJjMC0wLjEtMC4xLTAuMWMwJTJjMCUyYzAlMmMwLTAuMSUyYzBjMCUyYzAtMC4xJTJjMC0wLjElMmMwYzAlMmMwLTAuMSUyYzAuMS0wLjElMmMwLjJDMTYuMSUyYzcuMSUyYzE2JTJjNy4yJTJjMTYlMmM3LjJ6Jy8lM2UgJTNjcGF0aCBmaWxsPSdub25lJyBkPSdNMTEuOSUyYzE1QzExLjklMmMxNSUyYzEyJTJjMTQuOSUyYzExLjklMmMxNWMwLjEtMC4xJTJjMC4yLTAuMSUyYzAuMi0wLjJjMC0wLjElMmMwLTAuMiUyYzAtMC40YzAtMC4xJTJjMC0wLjIlMmMwLTAuMyBjMC0wLjElMmMwLTAuMS0wLjEtMC4xYzAlMmMwLTAuMSUyYzAtMC4xJTJjMGMwJTJjMC0wLjElMmMwLTAuMSUyYzAuMWMwJTJjMC0wLjElMmMwLjEtMC4xJTJjMC4yYzAlMmMwLjElMmMwJTJjMC4yJTJjMCUyYzAuM2MwJTJjMC4yJTJjMCUyYzAuMyUyYzAuMSUyYzAuNCBDMTEuOCUyYzE0LjklMmMxMS44JTJjMTUlMmMxMS45JTJjMTV6Jy8lM2UgJTNjcGF0aCBmaWxsPSdub25lJyBkPSdNMTYuMyUyYzkuNkMxNi4zJTJjOS42JTJjMTYuMiUyYzkuNiUyYzE2LjMlMmM5LjZjLTAuMSUyYzAtMC4xJTJjMC0wLjIlMmMwYzAlMmMwLTAuMSUyYzAuMS0wLjElMmMwLjJjMCUyYzAuMSUyYzAlMmMwLjIlMmMwJTJjMC4zIGMwJTJjMC4xJTJjMCUyYzAuMyUyYzAuMSUyYzAuNGMwJTJjMC4xJTJjMC4xJTJjMC4xJTJjMC4xJTJjMC4xYzAlMmMwJTJjMC4xJTJjMCUyYzAuMSUyYzBzMC4xLTAuMSUyYzAuMS0wLjFjMC0wLjElMmMwLTAuMiUyYzAtMC40YzAtMC4xJTJjMC0wLjIlMmMwLTAuMyBDMTYuMyUyYzkuNyUyYzE2LjMlMmM5LjYlMmMxNi4zJTJjOS42eicvJTNlICUzY3BhdGggZmlsbD0nJTIzQTNDQzM5JyBkPSdNMTEuNyUyYzcuNmMwLjElMmMwLjElMmMwLjElMmMwLjIlMmMwLjIlMmMwLjJjMCUyYzAlMmMwLjElMmMwJTJjMC4xLTAuMWMwJTJjMCUyYzAuMS0wLjElMmMwLjEtMC4yYzAtMC4xJTJjMC0wLjIlMmMwLTAuMyBjMC0wLjElMmMwLTAuMSUyYzAtMC4yYzAlMmMwLTAuMSUyYzAtMC4xJTJjMGMwJTJjMCUyYzAlMmMwLjElMmMwJTJjMC4xYzAlMmMwLjElMmMwJTJjMC4zJTJjMCUyYzAuM2MwJTJjMC4xJTJjMCUyYzAuMS0wLjElMmMwLjFjMCUyYzAtMC4xJTJjMC0wLjElMmMwIEMxMS44JTJjNy43JTJjMTEuOCUyYzcuNiUyYzExLjclMmM3LjZjMC4xLTAuMSUyYzAuMS0wLjIlMmMwLjEtMC4zYzAlMmMwJTJjMCUyYzAlMmMwJTJjMGMwJTJjMC0wLjElMmMwLTAuMSUyYzAuMUMxMS42JTJjNy40JTJjMTEuNiUyYzcuNSUyYzExLjclMmM3LjZ6Jy8lM2UgJTNjcGF0aCBmaWxsPSclMjNBM0NDMzknIGQ9J00xMy40JTJjNi43bC0wLjIlMmMwLjFsMCUyYzBjMCUyYzAlMmMwLjElMmMwJTJjMC4xJTJjMGMwJTJjMCUyYzAlMmMwJTJjMCUyYzBjMCUyYzAlMmMwJTJjMCUyYzAlMmMwYzAlMmMwJTJjMCUyYzAuMSUyYzAlMmMwLjF2MC41YzAlMmMwLjElMmMwJTJjMC4xJTJjMCUyYzAuMSBjMCUyYzAlMmMwJTJjMCUyYzAlMmMwYzAlMmMwJTJjMCUyYzAtMC4xJTJjMHYwaDAuNHYwYzAlMmMwLTAuMSUyYzAtMC4xJTJjMGMwJTJjMCUyYzAlMmMwJTJjMCUyYzBjMCUyYzAlMmMwJTJjMCUyYzAtMC4xTDEzLjQlMmM2LjdMMTMuNCUyYzYuN3onLyUzZSAlM2NwYXRoIGZpbGw9JyUyM0EzQ0MzOScgZD0nTTE0LjglMmM2LjdsLTAuMiUyYzAuMWwwJTJjMGMwJTJjMCUyYzAuMSUyYzAlMmMwLjElMmMwYzAlMmMwJTJjMCUyYzAlMmMwJTJjMGMwJTJjMCUyYzAlMmMwJTJjMCUyYzBjMCUyYzAlMmMwJTJjMC4xJTJjMCUyYzAuMXYwLjVjMCUyYzAuMSUyYzAlMmMwLjElMmMwJTJjMC4xIGMwJTJjMCUyYzAlMmMwJTJjMCUyYzBjMCUyYzAlMmMwJTJjMC0wLjElMmMwdjBIMTV2MGMwJTJjMC0wLjElMmMwLTAuMSUyYzBzMCUyYzAlMmMwJTJjMGMwJTJjMCUyYzAlMmMwJTJjMC0wLjFMMTQuOCUyYzYuN0wxNC44JTJjNi43eicvJTNlICUzY3BhdGggZmlsbD0nJTIzQTNDQzM5JyBkPSdNMTYlMmM3YzAlMmMwLjEtMC4xJTJjMC4yLTAuMSUyYzAuM2MwJTJjMC4xJTJjMCUyYzAuMiUyYzAuMSUyYzAuM2MwLjElMmMwLjElMmMwLjElMmMwLjIlMmMwLjIlMmMwLjJjMCUyYzAlMmMwLjElMmMwJTJjMC4xLTAuMSBjMC4xJTJjMCUyYzAuMS0wLjElMmMwLjEtMC4yYzAtMC4xJTJjMC0wLjIlMmMwLTAuM2MwLTAuMiUyYzAtMC4zLTAuMS0wLjRjLTAuMS0wLjEtMC4xLTAuMS0wLjItMC4xYzAlMmMwLTAuMSUyYzAtMC4xJTJjMEMxNiUyYzYuOCUyYzE2JTJjNi45JTJjMTYlMmM3eiBNMTYuMiUyYzYuOEMxNi4yJTJjNi44JTJjMTYuMyUyYzYuOCUyYzE2LjIlMmM2LjhjMC4xJTJjMCUyYzAuMSUyYzAuMSUyYzAuMSUyYzAuMWMwJTJjMC4xJTJjMCUyYzAuMiUyYzAlMmMwLjNjMCUyYzAuMiUyYzAlMmMwLjMlMmMwJTJjMC4zYzAlMmMwLjElMmMwJTJjMC4xLTAuMSUyYzAuMSBjMCUyYzAtMC4xJTJjMC0wLjElMmMwYy0wLjElMmMwLTAuMSUyYzAtMC4xLTAuMWMwLTAuMSUyYzAtMC4yJTJjMC0wLjNjMC0wLjElMmMwLTAuMiUyYzAtMC4zQzE2LjElMmM2LjklMmMxNi4xJTJjNi45JTJjMTYuMiUyYzYuOCBDMTYuMSUyYzYuOCUyYzE2LjIlMmM2LjglMmMxNi4yJTJjNi44eicvJTNlICUzY3BhdGggZmlsbD0nJTIzQTNDQzM5JyBkPSdNMTAuNCUyYzkuMUMxMC40JTJjOS4xJTJjMTAuNCUyYzkuMSUyYzEwLjQlMmM5LjFjMCUyYzAtMC4xJTJjMC0wLjElMmMwdjBoMC40djBjMCUyYzAtMC4xJTJjMC0wLjElMmMwYzAlMmMwJTJjMCUyYzAlMmMwJTJjMGMwJTJjMCUyYzAlMmMwJTJjMC0wLjEgVjguMmgwbC0wLjIlMmMwLjFsMCUyYzBjMCUyYzAlMmMwLjElMmMwJTJjMC4xJTJjMGMwJTJjMCUyYzAlMmMwJTJjMCUyYzBjMCUyYzAlMmMwJTJjMCUyYzAlMmMwYzAlMmMwJTJjMCUyYzAuMSUyYzAlMmMwLjFWOS4xQzEwLjQlMmM5JTJjMTAuNCUyYzkuMSUyYzEwLjQlMmM5LjF6Jy8lM2UgJTNjcGF0aCBmaWxsPSclMjNBM0NDMzknIGQ9J00xMS45JTJjOS4yYzAlMmMwJTJjMC4xJTJjMCUyYzAuMi0wLjFjMC4xJTJjMCUyYzAuMS0wLjElMmMwLjEtMC4yYzAtMC4xJTJjMC4xLTAuMiUyYzAuMS0wLjNjMC0wLjIlMmMwLTAuMy0wLjEtMC40IGMtMC4xLTAuMS0wLjEtMC4xLTAuMi0wLjFjMCUyYzAtMC4xJTJjMC0wLjElMmMwYy0wLjElMmMwLTAuMSUyYzAuMS0wLjElMmMwLjJzLTAuMSUyYzAuMi0wLjElMmMwLjNjMCUyYzAuMSUyYzAlMmMwLjMlMmMwLjElMmMwLjMgQzExLjclMmM5LjElMmMxMS44JTJjOS4yJTJjMTEuOSUyYzkuMnogTTExLjglMmM4LjRjMC0wLjElMmMwLTAuMiUyYzAuMS0wLjJjMCUyYzAlMmMwLjElMmMwJTJjMC4xJTJjMGMwJTJjMCUyYzAuMSUyYzAlMmMwLjElMmMwYzAlMmMwJTJjMC4xJTJjMC4xJTJjMC4xJTJjMC4xIGMwJTJjMC4xJTJjMCUyYzAuMiUyYzAlMmMwLjNjMCUyYzAuMiUyYzAlMmMwLjMlMmMwJTJjMC40YzAlMmMwLjElMmMwJTJjMC4xLTAuMSUyYzAuMWMwJTJjMC0wLjElMmMwLTAuMSUyYzBjLTAuMSUyYzAtMC4xJTJjMC0wLjEtMC4xYzAtMC4xLTAuMS0wLjItMC4xLTAuMyBDMTEuNyUyYzguNiUyYzExLjclMmM4LjUlMmMxMS44JTJjOC40eicvJTNlICUzY3BhdGggZmlsbD0nJTIzQTNDQzM5JyBkPSdNMTMlMmM4LjdjMCUyYzAuMSUyYzAlMmMwLjMlMmMwLjElMmMwLjNjMC4xJTJjMC4xJTJjMC4xJTJjMC4yJTJjMC4yJTJjMC4yYzAlMmMwJTJjMC4xJTJjMCUyYzAuMi0wLjFTMTMuNiUyYzklMmMxMy42JTJjOSBjMC0wLjElMmMwLjEtMC4yJTJjMC4xLTAuM2MwLTAuMiUyYzAtMC4zLTAuMS0wLjRjLTAuMS0wLjEtMC4xLTAuMS0wLjItMC4xYzAlMmMwLTAuMSUyYzAtMC4xJTJjMGMtMC4xJTJjMC0wLjElMmMwLjEtMC4xJTJjMC4yIEMxMyUyYzguNSUyYzEzJTJjOC42JTJjMTMlMmM4Ljd6IE0xMy4yJTJjOC40YzAtMC4xJTJjMC0wLjIlMmMwLjEtMC4yYzAlMmMwJTJjMC4xJTJjMCUyYzAuMSUyYzBjMCUyYzAlMmMwLjElMmMwJTJjMC4xJTJjMGMwJTJjMCUyYzAuMSUyYzAuMSUyYzAuMSUyYzAuMWMwJTJjMC4xJTJjMCUyYzAuMiUyYzAlMmMwLjMgYzAlMmMwLjIlMmMwJTJjMC4zJTJjMCUyYzAuNGMwJTJjMC4xJTJjMCUyYzAuMS0wLjElMmMwLjFjMCUyYzAtMC4xJTJjMC0wLjElMmMwYy0wLjElMmMwLTAuMSUyYzAtMC4xLTAuMWMwLTAuMS0wLjEtMC4yLTAuMS0wLjNDMTMuMiUyYzguNiUyYzEzLjIlMmM4LjUlMmMxMy4yJTJjOC40eiAnLyUzZSAlM2NwYXRoIGZpbGw9JyUyM0EzQ0MzOScgZD0nTTE0LjYlMmM4LjNDMTQuNiUyYzguMyUyYzE0LjYlMmM4LjMlMmMxNC42JTJjOC4zYzAuMSUyYzAlMmMwLjElMmMwJTJjMC4xJTJjMGMwJTJjMCUyYzAlMmMwJTJjMCUyYzBjMCUyYzAlMmMwJTJjMC4xJTJjMCUyYzAuMVY5YzAlMmMwLjElMmMwJTJjMC4xJTJjMCUyYzAuMSBjMCUyYzAlMmMwJTJjMCUyYzAlMmMwYzAlMmMwJTJjMCUyYzAtMC4xJTJjMHYwSDE1djBjMCUyYzAtMC4xJTJjMC0wLjElMmMwYzAlMmMwJTJjMCUyYzAlMmMwJTJjMGMwJTJjMCUyYzAtMC4xJTJjMC0wLjFWOC4xaDBMMTQuNiUyYzguM0wxNC42JTJjOC4zeicvJTNlICUzY3BhdGggZmlsbD0nJTIzQTNDQzM5JyBkPSdNMTYuMiUyYzguMWMwJTJjMC0wLjElMmMwLTAuMSUyYzBjLTAuMSUyYzAtMC4xJTJjMC4xLTAuMSUyYzAuMmMwJTJjMC4xLTAuMSUyYzAuMi0wLjElMmMwLjNjMCUyYzAuMSUyYzAlMmMwLjMlMmMwLjElMmMwLjMgYzAuMSUyYzAuMSUyYzAuMSUyYzAuMiUyYzAuMiUyYzAuMmMwJTJjMCUyYzAuMSUyYzAlMmMwLjItMC4xYzAuMSUyYzAlMmMwLjEtMC4xJTJjMC4xLTAuMmMwLTAuMSUyYzAuMS0wLjIlMmMwLjEtMC4zYzAtMC4yJTJjMC0wLjMtMC4xLTAuNCBDMTYuNCUyYzguMiUyYzE2LjMlMmM4LjElMmMxNi4yJTJjOC4xeiBNMTYuNCUyYzljMCUyYzAuMSUyYzAlMmMwLjEtMC4xJTJjMC4xYzAlMmMwLTAuMSUyYzAtMC4xJTJjMGMtMC4xJTJjMC0wLjElMmMwLTAuMS0wLjFDMTYlMmM4LjklMmMxNiUyYzguOCUyYzE2JTJjOC43IGMwLTAuMSUyYzAtMC4yJTJjMC0wLjNjMC0wLjElMmMwLTAuMiUyYzAuMS0wLjJjMCUyYzAlMmMwLjElMmMwJTJjMC4xJTJjMHMwLjElMmMwJTJjMC4xJTJjMGMwJTJjMCUyYzAuMSUyYzAuMSUyYzAuMSUyYzAuMWMwJTJjMC4xJTJjMCUyYzAuMiUyYzAlMmMwLjMgQzE2LjQlMmM4LjglMmMxNi40JTJjOC45JTJjMTYuNCUyYzl6Jy8lM2UgJTNjcGF0aCBmaWxsPSclMjNBM0NDMzknIGQ9J005LjElMmM5LjZMOC45JTJjOS43bDAlMmMwYzAlMmMwJTJjMC4xJTJjMCUyYzAuMSUyYzBjMCUyYzAlMmMwJTJjMCUyYzAlMmMwYzAlMmMwJTJjMCUyYzAlMmMwJTJjMGMwJTJjMCUyYzAlMmMwLjElMmMwJTJjMC4xdjAuNWMwJTJjMC4xJTJjMCUyYzAuMSUyYzAlMmMwLjEgYzAlMmMwJTJjMCUyYzAlMmMwJTJjMGMwJTJjMCUyYzAlMmMwLTAuMSUyYzB2MGgwLjR2MGMwJTJjMC0wLjElMmMwLTAuMSUyYzBzMCUyYzAlMmMwJTJjMGMwJTJjMCUyYzAlMmMwJTJjMC0wLjFMOS4xJTJjOS42TDkuMSUyYzkuNkw5LjElMmM5LjZ6Jy8lM2UgJTNjcGF0aCBmaWxsPSclMjNBM0NDMzknIGQ9J00xMC41JTJjMTAuNmMwJTJjMCUyYzAuMSUyYzAlMmMwLjItMC4xYzAuMSUyYzAlMmMwLjEtMC4xJTJjMC4xLTAuMmMwLTAuMSUyYzAuMS0wLjIlMmMwLjEtMC4zYzAtMC4yJTJjMC0wLjMtMC4xLTAuNCBjLTAuMS0wLjEtMC4xLTAuMS0wLjItMC4xYzAlMmMwLTAuMSUyYzAtMC4xJTJjMGMtMC4xJTJjMC0wLjElMmMwLjEtMC4xJTJjMC4yYzAlMmMwLjEtMC4xJTJjMC4yLTAuMSUyYzAuM2MwJTJjMC4xJTJjMCUyYzAuMyUyYzAuMSUyYzAuMyBDMTAuMyUyYzEwLjYlMmMxMC40JTJjMTAuNiUyYzEwLjUlMmMxMC42eiBNMTAuMyUyYzkuOWMwLTAuMSUyYzAtMC4yJTJjMC4xLTAuMmMwJTJjMCUyYzAuMSUyYzAlMmMwLjElMmMwYzAlMmMwJTJjMC4xJTJjMCUyYzAuMSUyYzBjMCUyYzAlMmMwLjElMmMwLjElMmMwLjElMmMwLjEgYzAlMmMwLjElMmMwJTJjMC4yJTJjMCUyYzAuM2MwJTJjMC4yJTJjMCUyYzAuMyUyYzAlMmMwLjRjMCUyYzAuMSUyYzAlMmMwLjEtMC4xJTJjMC4xYzAlMmMwLTAuMSUyYzAtMC4xJTJjMGMtMC4xJTJjMC0wLjElMmMwLTAuMS0wLjFjMC0wLjEtMC4xLTAuMi0wLjEtMC4zIEMxMC4zJTJjMTAlMmMxMC4zJTJjMTAlMmMxMC4zJTJjOS45eicvJTNlICUzY3BhdGggZmlsbD0nJTIzQTNDQzM5JyBkPSdNMTEuNyUyYzEwLjVjMC4xJTJjMC4xJTJjMC4yJTJjMC4yJTJjMC4zJTJjMC4yYzAuMSUyYzAlMmMwLjElMmMwJTJjMC4yLTAuMWMwLjElMmMwJTJjMC4xLTAuMSUyYzAuMS0wLjJzMC4xLTAuMiUyYzAuMS0wLjMgYzAtMC4yJTJjMC0wLjMtMC4xLTAuNGMtMC4xLTAuMS0wLjEtMC4xLTAuMi0wLjFjMCUyYzAtMC4xJTJjMC0wLjElMmMwLjFjLTAuMSUyYzAtMC4xJTJjMC4xLTAuMSUyYzAuMmMwJTJjMC4xLTAuMSUyYzAuMi0wLjElMmMwLjMgQzExLjYlMmMxMC4yJTJjMTEuNiUyYzEwLjQlMmMxMS43JTJjMTAuNXogTTExLjclMmM5LjljMC0wLjElMmMwLTAuMiUyYzAuMS0wLjJjMCUyYzAlMmMwLjElMmMwJTJjMC4xJTJjMHMwLjElMmMwJTJjMC4xJTJjMGMwJTJjMCUyYzAuMSUyYzAuMSUyYzAuMSUyYzAuMSBjMCUyYzAuMSUyYzAlMmMwLjIlMmMwJTJjMC4zYzAlMmMwLjIlMmMwJTJjMC4zJTJjMCUyYzAuNGMwJTJjMC4xJTJjMCUyYzAuMS0wLjElMmMwLjFjMCUyYzAtMC4xJTJjMC0wLjElMmMwYy0wLjElMmMwLTAuMSUyYzAtMC4xLTAuMWMwLTAuMS0wLjEtMC4yLTAuMS0wLjMgQzExLjclMmMxMCUyYzExLjclMmM5LjklMmMxMS43JTJjOS45eicvJTNlICUzY3BhdGggZmlsbD0nJTIzQTNDQzM5JyBkPSdNMTMuMyUyYzEwLjZDMTMuMyUyYzEwLjYlMmMxMy4zJTJjMTAuNiUyYzEzLjMlMmMxMC42YzAlMmMwLTAuMSUyYzAtMC4xJTJjMHYwaDAuNHYwYzAlMmMwLTAuMSUyYzAtMC4xJTJjMGMwJTJjMCUyYzAlMmMwJTJjMCUyYzAgYzAlMmMwJTJjMC0wLjElMmMwLTAuMVY5LjZoMGwtMC4zJTJjMC4xbDAlMmMwYzAlMmMwJTJjMC4xJTJjMCUyYzAuMSUyYzBjMCUyYzAlMmMwJTJjMCUyYzAlMmMwYzAlMmMwJTJjMCUyYzAlMmMwJTJjMGMwJTJjMCUyYzAlMmMwLjElMmMwJTJjMC4ydjAuNkMxMy4zJTJjMTAuNSUyYzEzLjMlMmMxMC41JTJjMTMuMyUyYzEwLjYgeicvJTNlICUzY3BhdGggZmlsbD0nJTIzQTNDQzM5JyBkPSdNMTQuNiUyYzkuN0MxNC42JTJjOS43JTJjMTQuNyUyYzkuNyUyYzE0LjYlMmM5LjdjMC4xJTJjMCUyYzAuMSUyYzAlMmMwLjElMmMwYzAlMmMwJTJjMCUyYzAlMmMwJTJjMGMwJTJjMCUyYzAlMmMwLjElMmMwJTJjMC4ydjAuNiBjMCUyYzAuMSUyYzAlMmMwLjElMmMwJTJjMC4xczAlMmMwJTJjMCUyYzBjMCUyYzAlMmMwJTJjMC0wLjElMmMwdjBIMTV2MGMwJTJjMC0wLjElMmMwLTAuMSUyYzBjMCUyYzAlMmMwJTJjMCUyYzAlMmMwYzAlMmMwJTJjMC0wLjElMmMwLTAuMVY5LjZoMEwxNC42JTJjOS43TDE0LjYlMmM5Ljd6Jy8lM2UgJTNjcGF0aCBmaWxsPSclMjNBM0NDMzknIGQ9J00xNi4yJTJjOS42Yy0wLjElMmMwLTAuMSUyYzAtMC4xJTJjMC4xYy0wLjElMmMwLTAuMSUyYzAuMS0wLjElMmMwLjJzLTAuMSUyYzAuMi0wLjElMmMwLjNjMCUyYzAuMSUyYzAlMmMwLjMlMmMwLjElMmMwLjQgYzAuMSUyYzAuMSUyYzAuMiUyYzAuMiUyYzAuMyUyYzAuMmMwJTJjMCUyYzAuMSUyYzAlMmMwLjEtMC4xYzAuMS0wLjIlMmMwLjEtMC41JTJjMC4yLTAuN2MwLTAuMSUyYzAtMC4yLTAuMS0wLjJDMTYuNCUyYzkuNiUyYzE2LjMlMmM5LjYlMmMxNi4yJTJjOS42eiBNMTYuNCUyYzEwLjQgYzAlMmMwLjElMmMwJTJjMC4xLTAuMSUyYzAuMWMwJTJjMC0wLjElMmMwLTAuMSUyYzBjLTAuMSUyYzAtMC4xJTJjMC0wLjEtMC4xYzAtMC4xLTAuMS0wLjItMC4xLTAuNGMwLTAuMSUyYzAtMC4yJTJjMC0wLjNjMC0wLjElMmMwLTAuMiUyYzAuMS0wLjIgYzAlMmMwJTJjMC4xJTJjMCUyYzAuMSUyYzBjMCUyYzAlMmMwLjElMmMwJTJjMC4xJTJjMGMwJTJjMCUyYzAuMSUyYzAuMSUyYzAuMSUyYzAuMWMwJTJjMC4xJTJjMCUyYzAuMiUyYzAlMmMwLjNDMTYuNCUyYzEwLjIlMmMxNi40JTJjMTAuMyUyYzE2LjQlMmMxMC40eicvJTNlICUzY3BhdGggZmlsbD0nJTIzQTNDQzM5JyBkPSdNNy44JTJjMTEuNWMwJTJjMC4yJTJjMCUyYzAuMyUyYzAlMmMwLjNjMCUyYzAuMSUyYzAlMmMwLjEtMC4xJTJjMC4xYzAlMmMwLTAuMSUyYzAtMC4xJTJjMGMwJTJjMCUyYzAlMmMwJTJjMCUyYzBjMCUyYzAlMmMwJTJjMCUyYzAlMmMwYzAlMmMwJTJjMCUyYzAlMmMwJTJjMCBjMCUyYzAlMmMwLjElMmMwJTJjMC4xLTAuMWMwLjElMmMwJTJjMC4xLTAuMSUyYzAuMS0wLjJjMC0wLjElMmMwLTAuMiUyYzAtMC4zYzAtMC4xJTJjMC0wLjItMC4xLTAuM0M3LjglMmMxMS4zJTJjNy44JTJjMTEuNCUyYzcuOCUyYzExLjUgQzcuOCUyYzExLjUlMmM3LjglMmMxMS41JTJjNy44JTJjMTEuNXonLyUzZSAlM2NwYXRoIGZpbGw9JyUyM0EzQ0MzOScgZD0nTTguOSUyYzExLjJDOC45JTJjMTEuMSUyYzguOSUyYzExLjElMmM4LjklMmMxMS4yYzAuMSUyYzAlMmMwLjElMmMwJTJjMC4xJTJjMGMwJTJjMCUyYzAlMmMwJTJjMCUyYzBjMCUyYzAlMmMwJTJjMC4xJTJjMCUyYzAuMXYwLjUgQzklMmMxMS45JTJjOSUyYzEyJTJjOSUyYzEyYzAlMmMwJTJjMCUyYzAlMmMwJTJjMGMwJTJjMCUyYzAlMmMwLTAuMSUyYzB2MGgwLjR2MGMwJTJjMC0wLjElMmMwLTAuMSUyYzBjMCUyYzAlMmMwJTJjMCUyYzAlMmMwYzAlMmMwJTJjMC0wLjElMmMwLTAuMVYxMWgwTDguOSUyYzExLjJMOC45JTJjMTEuMnonLyUzZSAlM2NwYXRoIGZpbGw9JyUyM0EzQ0MzOScgZD0nTTEwLjUlMmMxMWwtMC4zJTJjMC4xbDAlMmMwYzAlMmMwJTJjMC4xJTJjMCUyYzAuMSUyYzBjMCUyYzAlMmMwJTJjMCUyYzAlMmMwYzAlMmMwJTJjMCUyYzAlMmMwJTJjMGMwJTJjMCUyYzAlMmMwLjElMmMwJTJjMC4ydjAuNmMwJTJjMC4xJTJjMCUyYzAuMSUyYzAlMmMwLjEgczAlMmMwJTJjMCUyYzBjMCUyYzAlMmMwJTJjMC0wLjElMmMwdjBoMC40djBjMCUyYzAtMC4xJTJjMC0wLjElMmMwYzAlMmMwJTJjMCUyYzAlMmMwJTJjMGMwJTJjMCUyYzAtMC4xJTJjMC0wLjFMMTAuNSUyYzExTDEwLjUlMmMxMXonLyUzZSAlM2NwYXRoIGZpbGw9JyUyM0EzQ0MzOScgZD0nTTExLjclMmMxMS45YzAuMSUyYzAuMSUyYzAuMiUyYzAuMiUyYzAuMyUyYzAuMmMwLjElMmMwJTJjMC4xJTJjMCUyYzAuMi0wLjFjMC4xJTJjMCUyYzAuMS0wLjElMmMwLjEtMC4yYzAtMC4xJTJjMC4xLTAuMiUyYzAuMS0wLjMgYzAtMC4yJTJjMC0wLjMtMC4xLTAuNEMxMi4xJTJjMTElMmMxMiUyYzExJTJjMTEuOSUyYzExYy0wLjElMmMwLTAuMSUyYzAtMC4yJTJjMC4xYy0wLjElMmMwLTAuMSUyYzAuMS0wLjIlMmMwLjJjMCUyYzAuMS0wLjElMmMwLjItMC4xJTJjMC4zIEMxMS42JTJjMTEuNyUyYzExLjYlMmMxMS44JTJjMTEuNyUyYzExLjl6IE0xMS43JTJjMTEuM2MwLTAuMSUyYzAtMC4yJTJjMC4xLTAuMmMwJTJjMCUyYzAuMSUyYzAlMmMwLjElMmMwYzAlMmMwJTJjMC4xJTJjMCUyYzAuMSUyYzBjMCUyYzAlMmMwLjElMmMwLjElMmMwLjElMmMwLjEgYzAlMmMwLjElMmMwJTJjMC4yJTJjMCUyYzAuM2MwJTJjMC4yJTJjMCUyYzAuMyUyYzAlMmMwLjRjMCUyYzAuMSUyYzAlMmMwLjEtMC4xJTJjMC4xYzAlMmMwLTAuMSUyYzAtMC4xJTJjMGMtMC4xJTJjMC0wLjElMmMwLTAuMS0wLjFjMC0wLjEtMC4xLTAuMi0wLjEtMC40IEMxMS43JTJjMTEuNSUyYzExLjclMmMxMS40JTJjMTEuNyUyYzExLjN6Jy8lM2UgJTNjcGF0aCBmaWxsPSclMjNBM0NDMzknIGQ9J00xMy43JTJjMTEuNWMwLTAuMiUyYzAtMC4zLTAuMS0wLjRDMTMuNSUyYzExJTJjMTMuNCUyYzExJTJjMTMuMyUyYzExYy0wLjElMmMwLTAuMSUyYzAtMC4yJTJjMC4xYy0wLjElMmMwLTAuMSUyYzAuMS0wLjIlMmMwLjIgYzAlMmMwLjEtMC4xJTJjMC4yLTAuMSUyYzAuM2MwJTJjMC4yJTJjMCUyYzAuMyUyYzAuMSUyYzAuNGMwLjElMmMwLjElMmMwLjIlMmMwLjIlMmMwLjMlMmMwLjJjMC4xJTJjMCUyYzAuMSUyYzAlMmMwLjItMC4xYzAuMSUyYzAlMmMwLjEtMC4xJTJjMC4xLTAuMiBDMTMuNyUyYzExLjglMmMxMy43JTJjMTEuNyUyYzEzLjclMmMxMS41eiBNMTMuNSUyYzExLjljMCUyYzAuMSUyYzAlMmMwLjEtMC4xJTJjMC4xYzAlMmMwLTAuMSUyYzAtMC4xJTJjMGMtMC4xJTJjMC0wLjElMmMwLTAuMS0wLjFjMC0wLjEtMC4xLTAuMi0wLjEtMC40IGMwLTAuMSUyYzAtMC4yJTJjMC0wLjNjMC0wLjElMmMwLTAuMiUyYzAuMS0wLjJjMCUyYzAlMmMwLjEtMC4xJTJjMC4xLTAuMWMwJTJjMCUyYzAuMSUyYzAlMmMwLjElMmMwYzAlMmMwJTJjMC4xJTJjMC4xJTJjMC4xJTJjMC4xYzAlMmMwLjElMmMwJTJjMC4yJTJjMCUyYzAuMyBDMTMuNiUyYzExLjclMmMxMy41JTJjMTEuOCUyYzEzLjUlMmMxMS45eicvJTNlICUzY3BhdGggZmlsbD0nJTIzQTNDQzM5JyBkPSdNMTQuNyUyYzEyQzE0LjclMmMxMiUyYzE0LjclMmMxMiUyYzE0LjclMmMxMmMwJTJjMC0wLjElMmMwLTAuMSUyYzB2MEgxNXYwYy0wLjElMmMwLTAuMSUyYzAtMC4xJTJjMGMwJTJjMCUyYzAlMmMwJTJjMCUyYzBjMCUyYzAlMmMwLTAuMSUyYzAtMC4xIFYxMWgwbC0wLjMlMmMwLjFsMCUyYzBjMCUyYzAlMmMwLjElMmMwJTJjMC4xJTJjMGMwJTJjMCUyYzAlMmMwJTJjMCUyYzBjMCUyYzAlMmMwJTJjMCUyYzAlMmMwYzAlMmMwJTJjMCUyYzAuMSUyYzAlMmMwLjJ2MC42QzE0LjclMmMxMiUyYzE0LjclMmMxMiUyYzE0LjclMmMxMnonLyUzZSAlM2NwYXRoIGZpbGw9JyUyM0EzQ0MzOScgZD0nTTE2JTJjMTEuMUwxNiUyYzExLjFDMTYlMmMxMS4xJTJjMTYuMSUyYzExLjElMmMxNiUyYzExLjFjMC4xJTJjMCUyYzAuMSUyYzAlMmMwLjElMmMwYzAlMmMwJTJjMCUyYzAlMmMwJTJjMHYwYzAtMC4xJTJjMC0wLjElMmMwLjEtMC4yTDE2JTJjMTEuMSB6Jy8lM2UgJTNjcGF0aCBmaWxsPSclMjNBM0NDMzknIGQ9J003LjQlMmMxMy4zYzAuMSUyYzAuMSUyYzAuMSUyYzAuMiUyYzAuMiUyYzAuMmMwJTJjMCUyYzAuMSUyYzAlMmMwLjItMC4xYzAuMSUyYzAlMmMwLjEtMC4xJTJjMC4xLTAuMlM4JTJjMTMuMSUyYzglMmMxMyBjMC0wLjIlMmMwLTAuMy0wLjEtMC40Yy0wLjEtMC4xLTAuMS0wLjEtMC4yLTAuMWMwJTJjMC0wLjElMmMwLTAuMSUyYzBjMCUyYzAlMmMwJTJjMCUyYzAlMmMwYy0wLjElMmMwLjItMC4xJTJjMC40LTAuMSUyYzAuN0M3LjMlMmMxMy4zJTJjNy40JTJjMTMuMyUyYzcuNCUyYzEzLjMgeiBNNy41JTJjMTIuN2MwLTAuMSUyYzAtMC4yJTJjMC4xLTAuMmMwJTJjMCUyYzAuMSUyYzAlMmMwLjElMmMwYzAlMmMwJTJjMC4xJTJjMCUyYzAuMSUyYzBjMCUyYzAlMmMwLjElMmMwLjElMmMwLjElMmMwLjFjMCUyYzAuMSUyYzAlMmMwLjIlMmMwJTJjMC4zYzAlMmMwLjIlMmMwJTJjMC4zJTJjMCUyYzAuNCBjMCUyYzAuMSUyYzAlMmMwLjEtMC4xJTJjMC4xYzAlMmMwLTAuMSUyYzAtMC4xJTJjMGMtMC4xJTJjMC0wLjElMmMwLTAuMS0wLjFjMC0wLjEtMC4xLTAuMi0wLjEtMC4zQzcuNCUyYzEyLjklMmM3LjQlMmMxMi44JTJjNy41JTJjMTIuN3onLyUzZSAlM2NwYXRoIGZpbGw9JyUyM0EzQ0MzOScgZD0nTTkuNCUyYzEzYzAtMC4yJTJjMC0wLjMtMC4xLTAuNGMtMC4xLTAuMS0wLjEtMC4xLTAuMi0wLjFjMCUyYzAtMC4xJTJjMC0wLjElMmMwLjFjLTAuMSUyYzAtMC4xJTJjMC4xLTAuMSUyYzAuMiBjMCUyYzAuMS0wLjElMmMwLjItMC4xJTJjMC4zYzAlMmMwLjElMmMwJTJjMC4zJTJjMC4xJTJjMC40YzAuMSUyYzAuMSUyYzAuMiUyYzAuMiUyYzAuMyUyYzAuMmMwLjElMmMwJTJjMC4xJTJjMCUyYzAuMi0wLjFzMC4xLTAuMSUyYzAuMS0wLjIgQzkuNCUyYzEzLjIlMmM5LjQlMmMxMy4xJTJjOS40JTJjMTN6IE05LjIlMmMxMy4zYzAlMmMwLjElMmMwJTJjMC4xLTAuMSUyYzAuMWMwJTJjMC0wLjElMmMwLTAuMSUyYzBjLTAuMSUyYzAtMC4xJTJjMC0wLjEtMC4xYzAtMC4xLTAuMS0wLjItMC4xLTAuMyBjMC0wLjElMmMwLTAuMiUyYzAtMC4zYzAtMC4xJTJjMC0wLjIlMmMwLjEtMC4yYzAlMmMwJTJjMC4xJTJjMCUyYzAuMSUyYzBjMCUyYzAlMmMwLjElMmMwJTJjMC4xJTJjMGMwJTJjMCUyYzAuMSUyYzAuMSUyYzAuMSUyYzAuMWMwJTJjMC4xJTJjMCUyYzAuMiUyYzAlMmMwLjMgQzkuMiUyYzEzLjElMmM5LjIlMmMxMy4yJTJjOS4yJTJjMTMuM3onLyUzZSAlM2NwYXRoIGZpbGw9JyUyM0EzQ0MzOScgZD0nTTEwLjMlMmMxMi42QzEwLjMlMmMxMi41JTJjMTAuNCUyYzEyLjUlMmMxMC4zJTJjMTIuNmMwLjElMmMwJTJjMC4xJTJjMCUyYzAuMSUyYzBjMCUyYzAlMmMwJTJjMCUyYzAlMmMwYzAlMmMwJTJjMCUyYzAuMSUyYzAlMmMwLjJ2MC42IGMwJTJjMC4xJTJjMCUyYzAuMSUyYzAlMmMwLjFjMCUyYzAlMmMwJTJjMCUyYzAlMmMwYzAlMmMwJTJjMCUyYzAtMC4xJTJjMHYwaDAuNHYwYzAlMmMwLTAuMSUyYzAtMC4xJTJjMGMwJTJjMCUyYzAlMmMwJTJjMCUyYzBjMCUyYzAlMmMwLTAuMSUyYzAtMC4xdi0wLjloMEwxMC4zJTJjMTIuNkwxMC4zJTJjMTIuNnonIC8lM2UgJTNjcGF0aCBmaWxsPSclMjNBM0NDMzknIGQ9J00xMS43JTJjMTMuNGMwLjElMmMwLjElMmMwLjIlMmMwLjIlMmMwLjMlMmMwLjJjMC4xJTJjMCUyYzAuMSUyYzAlMmMwLjItMC4xYzAuMSUyYzAlMmMwLjEtMC4xJTJjMC4xLTAuMmMwLTAuMSUyYzAuMS0wLjIlMmMwLjEtMC4zIGMwLTAuMiUyYzAtMC4zLTAuMS0wLjRjLTAuMS0wLjEtMC4xLTAuMS0wLjItMC4xYy0wLjElMmMwLTAuMSUyYzAtMC4yJTJjMC4xYy0wLjElMmMwLTAuMSUyYzAuMS0wLjIlMmMwLjJjMCUyYzAuMS0wLjElMmMwLjItMC4xJTJjMC4zIEMxMS42JTJjMTMuMSUyYzExLjYlMmMxMy4zJTJjMTEuNyUyYzEzLjR6IE0xMS43JTJjMTIuN2MwLTAuMSUyYzAtMC4yJTJjMC4xLTAuMmMwJTJjMCUyYzAuMS0wLjElMmMwLjEtMC4xYzAlMmMwJTJjMC4xJTJjMCUyYzAuMSUyYzBjMCUyYzAlMmMwLjElMmMwLjElMmMwLjElMmMwLjEgYzAlMmMwLjElMmMwJTJjMC4yJTJjMCUyYzAuM2MwJTJjMC4yJTJjMCUyYzAuMyUyYzAlMmMwLjRjMCUyYzAuMSUyYzAlMmMwLjEtMC4xJTJjMC4xYzAlMmMwLTAuMSUyYzAtMC4xJTJjMGMtMC4xJTJjMC0wLjElMmMwLTAuMS0wLjFjMC0wLjEtMC4xLTAuMi0wLjEtMC40IEMxMS43JTJjMTIuOSUyYzExLjclMmMxMi44JTJjMTEuNyUyYzEyLjd6Jy8lM2UgJTNjcGF0aCBmaWxsPSclMjNBM0NDMzknIGQ9J00xMy4zJTJjMTMuNUMxMy4zJTJjMTMuNSUyYzEzLjMlMmMxMy41JTJjMTMuMyUyYzEzLjVjMCUyYzAtMC4xJTJjMC0wLjElMmMwdjBoMC40djBjLTAuMSUyYzAtMC4xJTJjMC0wLjElMmMwYzAlMmMwJTJjMCUyYzAlMmMwJTJjMCBjMCUyYzAlMmMwLTAuMSUyYzAtMC4xdi0xaDBsLTAuMyUyYzAuMWwwJTJjMGMwJTJjMCUyYzAuMSUyYzAlMmMwLjElMmMwYzAlMmMwJTJjMCUyYzAlMmMwJTJjMHMwJTJjMCUyYzAlMmMwYzAlMmMwJTJjMCUyYzAuMSUyYzAlMmMwLjJ2MC42QzEzLjMlMmMxMy40JTJjMTMuMyUyYzEzLjUlMmMxMy4zJTJjMTMuNXonLyUzZSAlM2NwYXRoIGZpbGw9JyUyM0EzQ0MzOScgZD0nTTE0LjglMmMxMi40Yy0wLjElMmMwLTAuMSUyYzAtMC4yJTJjMC4xYy0wLjElMmMwLTAuMSUyYzAuMS0wLjIlMmMwLjJjMCUyYzAuMS0wLjElMmMwLjItMC4xJTJjMC4zYzAlMmMwLjIlMmMwJTJjMC4zJTJjMC4xJTJjMC40IGMwJTJjMC4xJTJjMC4xJTJjMC4xJTJjMC4xJTJjMC4yYzAlMmMwJTJjMCUyYzAlMmMwLjEtMC4xYzAlMmMwJTJjMCUyYzAlMmMwLTAuMWMwLTAuMS0wLjEtMC4yLTAuMS0wLjRjMC0wLjElMmMwLTAuMiUyYzAtMC4zYzAtMC4xJTJjMC0wLjIlMmMwLjEtMC4yIEMxNC43JTJjMTIuNCUyYzE0LjglMmMxMi40JTJjMTQuOCUyYzEyLjRDMTQuOCUyYzEyLjQlMmMxNC45JTJjMTIuNCUyYzE0LjglMmMxMi40YzAuMSUyYzAuMSUyYzAuMiUyYzAuMiUyYzAuMiUyYzAuMmMwJTJjMC4xJTJjMCUyYzAuMiUyYzAlMmMwLjNjMCUyYzAuMSUyYzAlMmMwLjIlMmMwJTJjMC4yIGMwLjEtMC4xJTJjMC4xLTAuMiUyYzAuMi0wLjJjMC0wLjIlMmMwLTAuMy0wLjEtMC40QzE0LjklMmMxMi40JTJjMTQuOSUyYzEyLjQlMmMxNC44JTJjMTIuNHonLyUzZSAlM2NwYXRoIGZpbGw9JyUyM0EzQ0MzOScgZD0nTTcuNiUyYzE0LjljMCUyYzAlMmMwLjElMmMwJTJjMC4yLTAuMWMwLjElMmMwJTJjMC4xLTAuMSUyYzAuMS0wLjJjMC0wLjElMmMwLjEtMC4yJTJjMC4xLTAuM2MwLTAuMiUyYzAtMC4zLTAuMS0wLjQgYy0wLjEtMC4xLTAuMS0wLjEtMC4yLTAuMWMwJTJjMC0wLjElMmMwLTAuMSUyYzBjLTAuMSUyYzAtMC4xJTJjMC4xLTAuMSUyYzAuMmMwJTJjMC4xLTAuMSUyYzAuMi0wLjElMmMwLjNjMCUyYzAuMSUyYzAlMmMwLjMlMmMwLjElMmMwLjMgQzcuNCUyYzE0LjklMmM3LjUlMmMxNC45JTJjNy42JTJjMTQuOXogTTcuNSUyYzE0LjJjMC0wLjElMmMwLTAuMiUyYzAuMS0wLjJjMCUyYzAlMmMwLjElMmMwJTJjMC4xJTJjMGMwJTJjMCUyYzAuMSUyYzAlMmMwLjElMmMwYzAlMmMwJTJjMC4xJTJjMC4xJTJjMC4xJTJjMC4xIGMwJTJjMC4xJTJjMCUyYzAuMiUyYzAlMmMwLjNjMCUyYzAuMiUyYzAlMmMwLjMlMmMwJTJjMC40YzAlMmMwLjElMmMwJTJjMC4xLTAuMSUyYzAuMWMwJTJjMC0wLjElMmMwLTAuMSUyYzBjLTAuMSUyYzAtMC4xJTJjMC0wLjEtMC4xYzAtMC4xLTAuMS0wLjItMC4xLTAuMyBDNy40JTJjMTQuNCUyYzcuNCUyYzE0LjMlMmM3LjUlMmMxNC4yeicvJTNlICUzY3BhdGggZmlsbD0nJTIzQTNDQzM5JyBkPSdNOSUyYzE0LjlDOSUyYzE0LjklMmM5JTJjMTQuOSUyYzklMmMxNC45YzAlMmMwLTAuMSUyYzAtMC4xJTJjMHYwaDAuNHYwYzAlMmMwLTAuMSUyYzAtMC4xJTJjMGMwJTJjMCUyYzAlMmMwJTJjMCUyYzBjMCUyYzAlMmMwLTAuMSUyYzAtMC4xdi0wLjkgaDBMOC44JTJjMTRsMCUyYzBjMCUyYzAlMmMwLjElMmMwJTJjMC4xJTJjMGMwJTJjMCUyYzAlMmMwJTJjMCUyYzBzMCUyYzAlMmMwJTJjMGMwJTJjMCUyYzAlMmMwLjElMmMwJTJjMC4ydjAuNkM5JTJjMTQuOCUyYzklMmMxNC45JTJjOSUyYzE0Ljl6Jy8lM2UgJTNjcGF0aCBmaWxsPSclMjNBM0NDMzknIGQ9J00xMC40JTJjMTQuOUMxMC40JTJjMTQuOSUyYzEwLjQlMmMxNC45JTJjMTAuNCUyYzE0LjljMCUyYzAtMC4xJTJjMC0wLjElMmMwdjBoMC40djBjLTAuMSUyYzAtMC4xJTJjMC0wLjElMmMwYzAlMmMwJTJjMCUyYzAlMmMwJTJjMCBjMCUyYzAlMmMwLTAuMSUyYzAtMC4xdi0wLjloMEwxMC4zJTJjMTRsMCUyYzBjMCUyYzAlMmMwLjElMmMwJTJjMC4xJTJjMGMwJTJjMCUyYzAlMmMwJTJjMCUyYzBjMCUyYzAlMmMwJTJjMCUyYzAlMmMwYzAlMmMwJTJjMCUyYzAuMSUyYzAlMmMwLjJ2MC42QzEwLjQlMmMxNC44JTJjMTAuNCUyYzE0LjklMmMxMC40JTJjMTQuOSB6Jy8lM2UgJTNjcGF0aCBmaWxsPSclMjNBM0NDMzknIGQ9J00xMS42JTJjMTQuOGMwLjElMmMwLjElMmMwLjIlMmMwLjIlMmMwLjMlMmMwLjJjMC4xJTJjMCUyYzAuMSUyYzAlMmMwLjItMC4xYzAuMSUyYzAlMmMwLjEtMC4xJTJjMC4xLTAuMmMwLTAuMSUyYzAuMS0wLjIlMmMwLjEtMC4zIGMwLTAuMiUyYzAtMC4zLTAuMS0wLjRjLTAuMS0wLjEtMC4yLTAuMS0wLjItMC4xYy0wLjElMmMwLTAuMSUyYzAtMC4yJTJjMC4xYy0wLjElMmMwLTAuMSUyYzAuMS0wLjIlMmMwLjJjMCUyYzAuMS0wLjElMmMwLjItMC4xJTJjMC4zIEMxMS41JTJjMTQuNiUyYzExLjYlMmMxNC43JTJjMTEuNiUyYzE0Ljh6IE0xMS43JTJjMTQuMWMwLTAuMSUyYzAtMC4yJTJjMC4xLTAuMmMwJTJjMCUyYzAuMS0wLjElMmMwLjEtMC4xYzAlMmMwJTJjMC4xJTJjMCUyYzAuMSUyYzBjMCUyYzAlMmMwLjElMmMwLjElMmMwLjElMmMwLjEgYzAlMmMwLjElMmMwJTJjMC4yJTJjMCUyYzAuM2MwJTJjMC4yJTJjMCUyYzAuMyUyYzAlMmMwLjRjMCUyYzAuMSUyYzAlMmMwLjEtMC4xJTJjMC4xYzAlMmMwLTAuMSUyYzAtMC4xJTJjMGMtMC4xJTJjMC0wLjElMmMwLTAuMS0wLjFjMC0wLjEtMC4xLTAuMi0wLjEtMC40IEMxMS43JTJjMTQuMyUyYzExLjclMmMxNC4yJTJjMTEuNyUyYzE0LjF6Jy8lM2UgJTNjcGF0aCBmaWxsPSclMjNBM0NDMzknIGQ9J00xMy40JTJjMTMuOGwtMC4zJTJjMC4xbDAlMmMwYzAlMmMwJTJjMC4xJTJjMCUyYzAuMSUyYzBjMCUyYzAlMmMwJTJjMCUyYzAlMmMwYzAlMmMwJTJjMCUyYzAlMmMwJTJjMGMwJTJjMCUyYzAlMmMwLjElMmMwJTJjMC4ydjAuNSBjMC4xJTJjMCUyYzAuMS0wLjElMmMwLjEtMC4xTDEzLjQlMmMxMy44TDEzLjQlMmMxMy44eicvJTNlICUzY3BhdGggZmlsbD0nJTIzQTNDQzM5JyBkPSdNNy44JTJjMTUuNGMtMC4xLTAuMS0wLjEtMC4xLTAuMi0wLjFjMCUyYzAtMC4xJTJjMC0wLjElMmMwYy0wLjElMmMwLTAuMSUyYzAuMS0wLjElMmMwLjJjMCUyYzAuMSUyYzAlMmMwLjIlMmMwJTJjMC4zIGMwJTJjMCUyYzAlMmMwJTJjMC4xJTJjMGMwLTAuMSUyYzAtMC4xJTJjMC0wLjJjMC0wLjElMmMwLTAuMiUyYzAuMS0wLjJjMCUyYzAlMmMwLjElMmMwJTJjMC4xJTJjMGMwJTJjMCUyYzAuMSUyYzAlMmMwLjElMmMwQzcuNyUyYzE1LjQlMmM3LjglMmMxNS41JTJjNy44JTJjMTUuNCBjMCUyYzAuMiUyYzAlMmMwLjMlMmMwJTJjMC40YzAlMmMwJTJjMCUyYzAlMmMwJTJjMGMwJTJjMCUyYzAuMSUyYzAlMmMwLjElMmMwYzAlMmMwJTJjMCUyYzAlMmMwJTJjMEM3LjklMmMxNS43JTJjNy45JTJjMTUuNSUyYzcuOCUyYzE1LjR6Jy8lM2UgJTNjcGF0aCBmaWxsPSclMjNBM0NDMzknIGQ9J005LjMlMmMxNS40Yy0wLjEtMC4xLTAuMS0wLjEtMC4yLTAuMWMtMC4xJTJjMC0wLjElMmMwLTAuMSUyYzAuMWMtMC4xJTJjMC0wLjElMmMwLjEtMC4xJTJjMC4yYzAlMmMwLjEtMC4xJTJjMC4yLTAuMSUyYzAuMyBjMCUyYzAlMmMwJTJjMCUyYzAlMmMwLjFjMCUyYzAlMmMwLjElMmMwJTJjMC4xJTJjMGwwJTJjMGMwJTJjMCUyYzAlMmMwJTJjMC0wLjFjMC0wLjElMmMwLTAuMiUyYzAtMC4zYzAtMC4xJTJjMC0wLjIlMmMwLjEtMC4yYzAlMmMwJTJjMC4xJTJjMCUyYzAuMSUyYzBjMCUyYzAlMmMwLjElMmMwJTJjMC4xJTJjMCBDOS4yJTJjMTUuNCUyYzkuMiUyYzE1LjUlMmM5LjMlMmMxNS40YzAlMmMwLjIlMmMwJTJjMC4zJTJjMCUyYzAuNGMwJTJjMCUyYzAlMmMwLjElMmMwJTJjMC4xYzAlMmMwJTJjMC4xJTJjMCUyYzAuMSUyYzBjMCUyYzAlMmMwJTJjMCUyYzAtMC4xQzkuNCUyYzE1LjclMmM5LjQlMmMxNS41JTJjOS4zJTJjMTUuNHonLyUzZSAlM2NwYXRoIGZpbGw9JyUyM0EzQ0MzOScgZD0nTTEwLjUlMmMxNS4zbC0wLjMlMmMwLjFsMCUyYzBjMCUyYzAlMmMwLjElMmMwJTJjMC4xJTJjMGMwJTJjMCUyYzAlMmMwJTJjMCUyYzBjMCUyYzAlMmMwJTJjMCUyYzAlMmMwYzAlMmMwJTJjMCUyYzAuMSUyYzAlMmMwLjJ2MC4yYzAlMmMwJTJjMC4xJTJjMCUyYzAuMSUyYzAgTDEwLjUlMmMxNS4zTDEwLjUlMmMxNS4zTDEwLjUlMmMxNS4zeicvJTNlICUzY3BhdGggZmlsbD0nJTIzQTNDQzM5JyBkPSdNMTIlMmMxNS4ybC0wLjMlMmMwLjFsMCUyYzBjMCUyYzAlMmMwLjElMmMwJTJjMC4xJTJjMGMwJTJjMCUyYzAlMmMwJTJjMCUyYzBDMTEuOSUyYzE1LjQlMmMxMS45JTJjMTUuMyUyYzEyJTJjMTUuMkwxMiUyYzE1LjJMMTIlMmMxNS4yTDEyJTJjMTUuMnogJy8lM2UgJTNjL2clM2UlM2MvZyUzZSUzYy9zdmclM2UiOwogIGV4cG9ydCBkZWZhdWx0IGltZzs=';
|
|
1489
1574
|
|
|
1490
1575
|
var bubblesIcon = React.createElement(
|
|
1491
1576
|
"svg",
|
|
@@ -2268,16 +2353,89 @@ var fetchSuggestions = function fetchSuggestions() {
|
|
|
2268
2353
|
});
|
|
2269
2354
|
};
|
|
2270
2355
|
|
|
2356
|
+
var fetchQandASuggestions = function fetchQandASuggestions(_ref2) {
|
|
2357
|
+
var queryID = _ref2.queryID,
|
|
2358
|
+
projectID = _ref2.projectID,
|
|
2359
|
+
apiKey = _ref2.apiKey;
|
|
2360
|
+
|
|
2361
|
+
var url = 'https://backend-staging.chata.io/api/v1/answers/suggestions?key=' + apiKey;
|
|
2362
|
+
var data = {
|
|
2363
|
+
query_id: queryID,
|
|
2364
|
+
project_id: projectID
|
|
2365
|
+
};
|
|
2366
|
+
var config = {};
|
|
2367
|
+
|
|
2368
|
+
return axios.post(url, data, config).then(function (response) {
|
|
2369
|
+
if (response.data && typeof response.data === 'string') {
|
|
2370
|
+
// There was an error parsing the json
|
|
2371
|
+
throw new Error('Parse error');
|
|
2372
|
+
}
|
|
2373
|
+
|
|
2374
|
+
return Promise.resolve(response);
|
|
2375
|
+
}).catch(function (error) {
|
|
2376
|
+
if (error.message === 'Parse error') {
|
|
2377
|
+
return Promise.reject({ error: 'Parse error' });
|
|
2378
|
+
}
|
|
2379
|
+
if (error.response === 401 || !_get(error, 'response.data')) {
|
|
2380
|
+
return Promise.reject({ error: 'Unauthenticated' });
|
|
2381
|
+
}
|
|
2382
|
+
return Promise.reject(_get(error, 'response'));
|
|
2383
|
+
});
|
|
2384
|
+
};
|
|
2385
|
+
|
|
2386
|
+
/**
|
|
2387
|
+
* This function is for AutoAE Queries
|
|
2388
|
+
* @param {*} param0
|
|
2389
|
+
* @returns
|
|
2390
|
+
*/
|
|
2391
|
+
var runQandAQuery = function runQandAQuery(_ref3) {
|
|
2392
|
+
var query = _ref3.query,
|
|
2393
|
+
projectID = _ref3.projectID,
|
|
2394
|
+
AutoAEId = _ref3.AutoAEId,
|
|
2395
|
+
apiKey = _ref3.apiKey;
|
|
2396
|
+
|
|
2397
|
+
var url = 'https://backend-staging.chata.io/api/v1/answers?key=' + apiKey;
|
|
2398
|
+
var data = {
|
|
2399
|
+
query: query,
|
|
2400
|
+
project_id: projectID
|
|
2401
|
+
};
|
|
2402
|
+
var config = {
|
|
2403
|
+
headers: {
|
|
2404
|
+
'AutoAE-Session-ID': AutoAEId
|
|
2405
|
+
}
|
|
2406
|
+
};
|
|
2407
|
+
|
|
2408
|
+
return axios.post(url, data, config).then(function (response) {
|
|
2409
|
+
if (response.data && typeof response.data === 'string') {
|
|
2410
|
+
// There was an error parsing the json
|
|
2411
|
+
throw new Error('Parse error');
|
|
2412
|
+
}
|
|
2413
|
+
|
|
2414
|
+
return Promise.resolve(response);
|
|
2415
|
+
}).catch(function (error) {
|
|
2416
|
+
if (error.message === 'Parse error') {
|
|
2417
|
+
return Promise.reject({ error: 'Parse error' });
|
|
2418
|
+
}
|
|
2419
|
+
if (error.response === 401 || !_get(error, 'response.data')) {
|
|
2420
|
+
return Promise.reject({ error: 'Unauthenticated' });
|
|
2421
|
+
}
|
|
2422
|
+
return Promise.reject(_get(error, 'response'));
|
|
2423
|
+
});
|
|
2424
|
+
};
|
|
2425
|
+
|
|
2271
2426
|
var runQueryOnly = function runQueryOnly() {
|
|
2272
|
-
var
|
|
2273
|
-
query =
|
|
2274
|
-
|
|
2275
|
-
|
|
2276
|
-
|
|
2277
|
-
|
|
2278
|
-
|
|
2279
|
-
|
|
2280
|
-
|
|
2427
|
+
var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
2428
|
+
query = _ref4.query,
|
|
2429
|
+
isQandA = _ref4.isQandA,
|
|
2430
|
+
projectID = _ref4.projectID,
|
|
2431
|
+
userSelection = _ref4.userSelection,
|
|
2432
|
+
debug = _ref4.debug,
|
|
2433
|
+
test = _ref4.test,
|
|
2434
|
+
domain = _ref4.domain,
|
|
2435
|
+
apiKey = _ref4.apiKey,
|
|
2436
|
+
token = _ref4.token,
|
|
2437
|
+
source = _ref4.source,
|
|
2438
|
+
AutoAEId = _ref4.AutoAEId;
|
|
2281
2439
|
|
|
2282
2440
|
var url = domain + '/autoql/api/v1/query?key=' + apiKey;
|
|
2283
2441
|
var finalUserSelection = transformUserSelection(userSelection);
|
|
@@ -2294,6 +2452,10 @@ var runQueryOnly = function runQueryOnly() {
|
|
|
2294
2452
|
return Promise.reject({ error: 'No query supplied' });
|
|
2295
2453
|
}
|
|
2296
2454
|
|
|
2455
|
+
if (isQandA) {
|
|
2456
|
+
return runQandAQuery({ query: query, projectID: projectID, AutoAEId: AutoAEId, apiKey: apiKey });
|
|
2457
|
+
}
|
|
2458
|
+
|
|
2297
2459
|
if (!apiKey || !domain || !token) {
|
|
2298
2460
|
return Promise.reject({ error: 'Unauthenticated' });
|
|
2299
2461
|
}
|
|
@@ -2330,19 +2492,22 @@ var runQueryOnly = function runQueryOnly() {
|
|
|
2330
2492
|
};
|
|
2331
2493
|
|
|
2332
2494
|
var runQuery = function runQuery() {
|
|
2333
|
-
var
|
|
2334
|
-
query =
|
|
2335
|
-
|
|
2336
|
-
|
|
2337
|
-
|
|
2338
|
-
|
|
2339
|
-
|
|
2340
|
-
|
|
2341
|
-
|
|
2342
|
-
|
|
2343
|
-
|
|
2495
|
+
var _ref5 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
2496
|
+
query = _ref5.query,
|
|
2497
|
+
isQandA = _ref5.isQandA,
|
|
2498
|
+
projectID = _ref5.projectID,
|
|
2499
|
+
userSelection = _ref5.userSelection,
|
|
2500
|
+
debug = _ref5.debug,
|
|
2501
|
+
test = _ref5.test,
|
|
2502
|
+
enableQueryValidation = _ref5.enableQueryValidation,
|
|
2503
|
+
domain = _ref5.domain,
|
|
2504
|
+
apiKey = _ref5.apiKey,
|
|
2505
|
+
token = _ref5.token,
|
|
2506
|
+
source = _ref5.source,
|
|
2507
|
+
skipQueryValidation = _ref5.skipQueryValidation,
|
|
2508
|
+
AutoAEId = _ref5.AutoAEId;
|
|
2344
2509
|
|
|
2345
|
-
if (enableQueryValidation && !skipQueryValidation) {
|
|
2510
|
+
if (enableQueryValidation && !skipQueryValidation && !isQandA) {
|
|
2346
2511
|
return runQueryValidation({
|
|
2347
2512
|
text: query,
|
|
2348
2513
|
domain: domain,
|
|
@@ -2360,7 +2525,8 @@ var runQuery = function runQuery() {
|
|
|
2360
2525
|
domain: domain,
|
|
2361
2526
|
apiKey: apiKey,
|
|
2362
2527
|
token: token,
|
|
2363
|
-
source: source
|
|
2528
|
+
source: source,
|
|
2529
|
+
AutoAEId: AutoAEId
|
|
2364
2530
|
});
|
|
2365
2531
|
}).catch(function (error) {
|
|
2366
2532
|
return Promise.reject(error);
|
|
@@ -2369,22 +2535,25 @@ var runQuery = function runQuery() {
|
|
|
2369
2535
|
|
|
2370
2536
|
return runQueryOnly({
|
|
2371
2537
|
query: query,
|
|
2538
|
+
isQandA: isQandA,
|
|
2539
|
+
projectID: projectID,
|
|
2372
2540
|
userSelection: userSelection,
|
|
2373
2541
|
debug: debug,
|
|
2374
2542
|
test: test,
|
|
2375
2543
|
token: token,
|
|
2376
2544
|
domain: domain,
|
|
2377
2545
|
apiKey: apiKey,
|
|
2378
|
-
source: source
|
|
2546
|
+
source: source,
|
|
2547
|
+
AutoAEId: AutoAEId
|
|
2379
2548
|
});
|
|
2380
2549
|
};
|
|
2381
2550
|
|
|
2382
2551
|
var runQueryValidation = function runQueryValidation() {
|
|
2383
|
-
var
|
|
2384
|
-
text =
|
|
2385
|
-
domain =
|
|
2386
|
-
apiKey =
|
|
2387
|
-
token =
|
|
2552
|
+
var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
2553
|
+
text = _ref6.text,
|
|
2554
|
+
domain = _ref6.domain,
|
|
2555
|
+
apiKey = _ref6.apiKey,
|
|
2556
|
+
token = _ref6.token;
|
|
2388
2557
|
|
|
2389
2558
|
if (!text) {
|
|
2390
2559
|
return Promise.reject(new Error('No text supplied'));
|
|
@@ -2410,14 +2579,14 @@ var runQueryValidation = function runQueryValidation() {
|
|
|
2410
2579
|
};
|
|
2411
2580
|
|
|
2412
2581
|
var runDrilldown = function runDrilldown() {
|
|
2413
|
-
var
|
|
2414
|
-
queryID =
|
|
2415
|
-
data =
|
|
2416
|
-
debug =
|
|
2417
|
-
test =
|
|
2418
|
-
domain =
|
|
2419
|
-
apiKey =
|
|
2420
|
-
token =
|
|
2582
|
+
var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
2583
|
+
queryID = _ref7.queryID,
|
|
2584
|
+
data = _ref7.data,
|
|
2585
|
+
debug = _ref7.debug,
|
|
2586
|
+
test = _ref7.test,
|
|
2587
|
+
domain = _ref7.domain,
|
|
2588
|
+
apiKey = _ref7.apiKey,
|
|
2589
|
+
token = _ref7.token;
|
|
2421
2590
|
|
|
2422
2591
|
if (!queryID) {
|
|
2423
2592
|
return Promise.reject(new Error('Query ID not supplied'));
|
|
@@ -2449,11 +2618,11 @@ var runDrilldown = function runDrilldown() {
|
|
|
2449
2618
|
};
|
|
2450
2619
|
|
|
2451
2620
|
var fetchAutocomplete = function fetchAutocomplete() {
|
|
2452
|
-
var
|
|
2453
|
-
suggestion =
|
|
2454
|
-
domain =
|
|
2455
|
-
apiKey =
|
|
2456
|
-
token =
|
|
2621
|
+
var _ref8 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
2622
|
+
suggestion = _ref8.suggestion,
|
|
2623
|
+
domain = _ref8.domain,
|
|
2624
|
+
apiKey = _ref8.apiKey,
|
|
2625
|
+
token = _ref8.token;
|
|
2457
2626
|
|
|
2458
2627
|
if (!suggestion || !suggestion.trim()) {
|
|
2459
2628
|
return Promise.reject(new Error('No query supplied'));
|
|
@@ -2479,11 +2648,11 @@ var fetchAutocomplete = function fetchAutocomplete() {
|
|
|
2479
2648
|
};
|
|
2480
2649
|
|
|
2481
2650
|
var setColumnVisibility = function setColumnVisibility() {
|
|
2482
|
-
var
|
|
2483
|
-
apiKey =
|
|
2484
|
-
token =
|
|
2485
|
-
domain =
|
|
2486
|
-
columns =
|
|
2651
|
+
var _ref9 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
2652
|
+
apiKey = _ref9.apiKey,
|
|
2653
|
+
token = _ref9.token,
|
|
2654
|
+
domain = _ref9.domain,
|
|
2655
|
+
columns = _ref9.columns;
|
|
2487
2656
|
|
|
2488
2657
|
var url = domain + '/autoql/api/v1/query/column-visibility?key=' + apiKey;
|
|
2489
2658
|
var data = { columns: columns };
|
|
@@ -2505,17 +2674,18 @@ var setColumnVisibility = function setColumnVisibility() {
|
|
|
2505
2674
|
});
|
|
2506
2675
|
};
|
|
2507
2676
|
|
|
2508
|
-
var sendSuggestion = function sendSuggestion(
|
|
2509
|
-
var queryId =
|
|
2510
|
-
suggestion =
|
|
2511
|
-
apiKey =
|
|
2512
|
-
domain =
|
|
2513
|
-
token =
|
|
2677
|
+
var sendSuggestion = function sendSuggestion(_ref10) {
|
|
2678
|
+
var queryId = _ref10.queryId,
|
|
2679
|
+
suggestion = _ref10.suggestion,
|
|
2680
|
+
apiKey = _ref10.apiKey,
|
|
2681
|
+
domain = _ref10.domain,
|
|
2682
|
+
token = _ref10.token,
|
|
2683
|
+
isQandA = _ref10.isQandA;
|
|
2514
2684
|
|
|
2515
2685
|
var url = domain + '/autoql/api/v1/query/' + queryId + '/suggestions?key=' + apiKey;
|
|
2516
2686
|
var data = { suggestion: suggestion };
|
|
2517
2687
|
|
|
2518
|
-
if (!token || !domain || !apiKey) {
|
|
2688
|
+
if (!isQandA && (!token || !domain || !apiKey)) {
|
|
2519
2689
|
return Promise.reject(new Error('Unauthenticated'));
|
|
2520
2690
|
}
|
|
2521
2691
|
|
|
@@ -2533,14 +2703,14 @@ var sendSuggestion = function sendSuggestion(_ref8) {
|
|
|
2533
2703
|
};
|
|
2534
2704
|
|
|
2535
2705
|
var fetchQueryTips = function fetchQueryTips() {
|
|
2536
|
-
var
|
|
2537
|
-
keywords =
|
|
2538
|
-
pageSize =
|
|
2539
|
-
pageNumber =
|
|
2540
|
-
domain =
|
|
2541
|
-
apiKey =
|
|
2542
|
-
token =
|
|
2543
|
-
skipQueryValidation =
|
|
2706
|
+
var _ref11 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
2707
|
+
keywords = _ref11.keywords,
|
|
2708
|
+
pageSize = _ref11.pageSize,
|
|
2709
|
+
pageNumber = _ref11.pageNumber,
|
|
2710
|
+
domain = _ref11.domain,
|
|
2711
|
+
apiKey = _ref11.apiKey,
|
|
2712
|
+
token = _ref11.token,
|
|
2713
|
+
skipQueryValidation = _ref11.skipQueryValidation;
|
|
2544
2714
|
|
|
2545
2715
|
var commaSeparatedKeywords = keywords ? keywords.split(' ') : [];
|
|
2546
2716
|
var queryTipsUrl = domain + '/autoql/api/v1/query/related-queries?key=' + apiKey + '&search=' + encodeURIComponent(commaSeparatedKeywords) + '&page_size=' + pageSize + '&page=' + pageNumber;
|
|
@@ -2587,12 +2757,12 @@ var fetchQueryTips = function fetchQueryTips() {
|
|
|
2587
2757
|
};
|
|
2588
2758
|
|
|
2589
2759
|
var reportProblem = function reportProblem() {
|
|
2590
|
-
var
|
|
2591
|
-
message =
|
|
2592
|
-
queryId =
|
|
2593
|
-
domain =
|
|
2594
|
-
apiKey =
|
|
2595
|
-
token =
|
|
2760
|
+
var _ref12 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
2761
|
+
message = _ref12.message,
|
|
2762
|
+
queryId = _ref12.queryId,
|
|
2763
|
+
domain = _ref12.domain,
|
|
2764
|
+
apiKey = _ref12.apiKey,
|
|
2765
|
+
token = _ref12.token;
|
|
2596
2766
|
|
|
2597
2767
|
if (!queryId) {
|
|
2598
2768
|
return Promise.reject(new Error('No query ID supplied'));
|
|
@@ -2713,7 +2883,7 @@ Dictaphone.propTypes = {
|
|
|
2713
2883
|
Dictaphone.defaultProps = {};
|
|
2714
2884
|
|
|
2715
2885
|
|
|
2716
|
-
var
|
|
2886
|
+
var SpeechToTextButtonBrowser = SpeechRecognition(options)(Dictaphone);
|
|
2717
2887
|
|
|
2718
2888
|
function LoadingDots() {
|
|
2719
2889
|
return React.createElement(
|
|
@@ -2810,7 +2980,8 @@ var QueryInput = function (_React$Component) {
|
|
|
2810
2980
|
query: query,
|
|
2811
2981
|
userSelection: userSelection
|
|
2812
2982
|
}, getAuthentication(_this.props.authentication), getAutoQLConfig$1(_this.props.autoQLConfig), {
|
|
2813
|
-
source: newSource
|
|
2983
|
+
source: newSource,
|
|
2984
|
+
AutoAEId: _this.props.AutoAEId
|
|
2814
2985
|
})).then(function (response) {
|
|
2815
2986
|
_this.props.onResponseCallback(response, query);
|
|
2816
2987
|
_this.setState({ isQueryRunning: false });
|
|
@@ -2823,7 +2994,8 @@ var QueryInput = function (_React$Component) {
|
|
|
2823
2994
|
runQuery(_extends({
|
|
2824
2995
|
query: query
|
|
2825
2996
|
}, getAuthentication(_this.props.authentication), getAutoQLConfig$1(_this.props.autoQLConfig), {
|
|
2826
|
-
source: newSource
|
|
2997
|
+
source: newSource,
|
|
2998
|
+
AutoAEId: _this.props.AutoAEId
|
|
2827
2999
|
})).then(function (response) {
|
|
2828
3000
|
_this.props.onResponseCallback(response, query);
|
|
2829
3001
|
_this.setState({ isQueryRunning: false });
|
|
@@ -2839,10 +3011,11 @@ var QueryInput = function (_React$Component) {
|
|
|
2839
3011
|
}
|
|
2840
3012
|
|
|
2841
3013
|
_this.setState({ lastQuery: query, suggestions: [] });
|
|
3014
|
+
localStorage.setItem('inputValue', query);
|
|
2842
3015
|
}
|
|
2843
3016
|
}, _this.onKeyDown = function (e) {
|
|
2844
3017
|
if (e.key === 'ArrowUp' && !_get(_this.state.suggestions, 'length')) {
|
|
2845
|
-
_this.setState({ inputValue:
|
|
3018
|
+
_this.setState({ inputValue: localStorage.getItem('inputValue') });
|
|
2846
3019
|
}
|
|
2847
3020
|
}, _this.onKeyPress = function (e) {
|
|
2848
3021
|
if (e.key == 'Enter') {
|
|
@@ -2998,9 +3171,11 @@ var QueryInput = function (_React$Component) {
|
|
|
2998
3171
|
{ className: 'input-response-loading-container' },
|
|
2999
3172
|
React.createElement(LoadingDots, null)
|
|
3000
3173
|
),
|
|
3001
|
-
_this.props.enableVoiceRecord && React.createElement(
|
|
3174
|
+
_this.props.enableVoiceRecord && React.createElement(SpeechToTextButtonBrowser, {
|
|
3002
3175
|
onTranscriptChange: _this.onTranscriptChange,
|
|
3003
|
-
onFinalTranscript: _this.onFinalTranscript
|
|
3176
|
+
onFinalTranscript: _this.onFinalTranscript,
|
|
3177
|
+
themeConfig: _this.props.themeConfig,
|
|
3178
|
+
authentication: getAuthentication(_this.props.authentication)
|
|
3004
3179
|
})
|
|
3005
3180
|
)
|
|
3006
3181
|
);
|
|
@@ -3891,7 +4066,7 @@ var getLegendLabelsForMultiSeries = function getLegendLabelsForMultiSeries(colum
|
|
|
3891
4066
|
var seriesIndices = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
|
3892
4067
|
|
|
3893
4068
|
try {
|
|
3894
|
-
if (seriesIndices.length
|
|
4069
|
+
if (seriesIndices.length < 1) {
|
|
3895
4070
|
return [];
|
|
3896
4071
|
}
|
|
3897
4072
|
|
|
@@ -3902,7 +4077,6 @@ var getLegendLabelsForMultiSeries = function getLegendLabelsForMultiSeries(colum
|
|
|
3902
4077
|
hidden: columns[columnIndex].isSeriesHidden
|
|
3903
4078
|
};
|
|
3904
4079
|
});
|
|
3905
|
-
|
|
3906
4080
|
return legendLabels;
|
|
3907
4081
|
} catch (error) {
|
|
3908
4082
|
console.error(error);
|
|
@@ -4078,7 +4252,7 @@ var ChataColumnChart = function (_Component) {
|
|
|
4078
4252
|
React.createElement(Axes, {
|
|
4079
4253
|
themeConfig: themeConfig,
|
|
4080
4254
|
scales: { xScale: xScale, yScale: yScale },
|
|
4081
|
-
xCol: columns[
|
|
4255
|
+
xCol: columns[0],
|
|
4082
4256
|
yCol: columns[numberColumnIndex],
|
|
4083
4257
|
margins: {
|
|
4084
4258
|
left: leftMargin,
|
|
@@ -4356,7 +4530,7 @@ var ChataBarChart = function (_Component) {
|
|
|
4356
4530
|
themeConfig: themeConfig,
|
|
4357
4531
|
scales: { xScale: xScale, yScale: yScale },
|
|
4358
4532
|
xCol: columns[numberColumnIndex],
|
|
4359
|
-
yCol: columns[
|
|
4533
|
+
yCol: columns[0],
|
|
4360
4534
|
margins: {
|
|
4361
4535
|
left: leftMargin,
|
|
4362
4536
|
right: rightMargin,
|
|
@@ -4642,7 +4816,7 @@ var ChataLineChart = function (_Component) {
|
|
|
4642
4816
|
React.createElement(Axes, {
|
|
4643
4817
|
themeConfig: themeConfig,
|
|
4644
4818
|
scales: { xScale: xScale, yScale: yScale },
|
|
4645
|
-
xCol: columns[
|
|
4819
|
+
xCol: columns[0],
|
|
4646
4820
|
yCol: columns[numberColumnIndex],
|
|
4647
4821
|
margins: {
|
|
4648
4822
|
left: leftMargin,
|
|
@@ -6836,6 +7010,10 @@ var ChataChart = function (_Component) {
|
|
|
6836
7010
|
_this.updateMargins();
|
|
6837
7011
|
ReactTooltip.rebuild();
|
|
6838
7012
|
}
|
|
7013
|
+
|
|
7014
|
+
if (!_isEqual(_this.props.columns, prevProps.columns)) {
|
|
7015
|
+
_this.setNumberColumnSelectorState();
|
|
7016
|
+
}
|
|
6839
7017
|
};
|
|
6840
7018
|
|
|
6841
7019
|
_this.setNumberColumnSelectorState = function () {
|
|
@@ -7220,7 +7398,7 @@ var ChataChart = function (_Component) {
|
|
|
7220
7398
|
React.createElement(
|
|
7221
7399
|
'div',
|
|
7222
7400
|
{ className: 'number-selector-header' },
|
|
7223
|
-
'Currency'
|
|
7401
|
+
_this.props.dataConfig && _this.props.tableColumns && _this.props.dataConfig.legendColumnIndex !== undefined ? _this.props.tableColumns[_this.props.dataConfig.legendColumnIndex].display_name : 'Currency'
|
|
7224
7402
|
),
|
|
7225
7403
|
React.createElement(SelectableList, {
|
|
7226
7404
|
themeConfig: getThemeConfig(_this.props.themeConfig),
|
|
@@ -7255,7 +7433,8 @@ var ChataChart = function (_Component) {
|
|
|
7255
7433
|
React.createElement(
|
|
7256
7434
|
'div',
|
|
7257
7435
|
{ className: 'number-selector-header' },
|
|
7258
|
-
'
|
|
7436
|
+
' ',
|
|
7437
|
+
_this.props.dataConfig && _this.props.tableColumns && _this.props.dataConfig.legendColumnIndex !== undefined ? _this.props.tableColumns[_this.props.dataConfig.legendColumnIndex].display_name : 'Quantity'
|
|
7259
7438
|
),
|
|
7260
7439
|
React.createElement(SelectableList, {
|
|
7261
7440
|
themeConfig: getThemeConfig(_this.props.themeConfig),
|
|
@@ -7289,7 +7468,8 @@ var ChataChart = function (_Component) {
|
|
|
7289
7468
|
React.createElement(
|
|
7290
7469
|
'div',
|
|
7291
7470
|
{ className: 'number-selector-header' },
|
|
7292
|
-
'
|
|
7471
|
+
' ',
|
|
7472
|
+
_this.props.dataConfig && _this.props.tableColumns && _this.props.dataConfig.legendColumnIndex !== undefined ? _this.props.tableColumns[_this.props.dataConfig.legendColumnIndex].display_name : 'Ratio'
|
|
7293
7473
|
),
|
|
7294
7474
|
React.createElement(SelectableList, {
|
|
7295
7475
|
themeConfig: getThemeConfig(_this.props.themeConfig),
|
|
@@ -8135,7 +8315,9 @@ var QueryOutput = function (_React$Component) {
|
|
|
8135
8315
|
return _ret = (_temp = (_this = possibleConstructorReturn(this, (_ref = QueryOutput.__proto__ || Object.getPrototypeOf(QueryOutput)).call.apply(_ref, [this].concat(args))), _this), _this.supportedDisplayTypes = [], _this.SAFETYNET_KEY = uuid.v4(), _this.state = {
|
|
8136
8316
|
displayType: null,
|
|
8137
8317
|
tableFilters: [],
|
|
8138
|
-
suggestionSelection: _this.props.selectedSuggestion
|
|
8318
|
+
suggestionSelection: _this.props.selectedSuggestion,
|
|
8319
|
+
QandAResponseCorrect: false,
|
|
8320
|
+
QandASuggestions: []
|
|
8139
8321
|
}, _this.componentDidMount = function () {
|
|
8140
8322
|
try {
|
|
8141
8323
|
// Set initial config if needed
|
|
@@ -8221,7 +8403,7 @@ var QueryOutput = function (_React$Component) {
|
|
|
8221
8403
|
}
|
|
8222
8404
|
|
|
8223
8405
|
if (_this.props.optionsToolbarRef) {
|
|
8224
|
-
_this.props.optionsToolbarRef.forceUpdate();
|
|
8406
|
+
_this.props.optionsToolbarRef._isMounted && _this.props.optionsToolbarRef.forceUpdate();
|
|
8225
8407
|
}
|
|
8226
8408
|
|
|
8227
8409
|
ReactTooltip.rebuild();
|
|
@@ -8343,8 +8525,10 @@ var QueryOutput = function (_React$Component) {
|
|
|
8343
8525
|
_this.tableColumns = _this.formatColumnsForTable(_this.props.queryResponse.data.data.columns);
|
|
8344
8526
|
|
|
8345
8527
|
_this.supportsPivot = supportsRegularPivotTable(_this.tableColumns);
|
|
8346
|
-
|
|
8347
|
-
|
|
8528
|
+
var filteredResponse = _this.props.queryResponse.data.data.rows.filter(function (row) {
|
|
8529
|
+
return row[0] !== null;
|
|
8530
|
+
});
|
|
8531
|
+
var data = _this.sortTableDataByDate(filteredResponse);
|
|
8348
8532
|
_this.tableData = data;
|
|
8349
8533
|
|
|
8350
8534
|
_this.numberOfTableRows = _get(data, 'length', 0);
|
|
@@ -8366,7 +8550,7 @@ var QueryOutput = function (_React$Component) {
|
|
|
8366
8550
|
_this.props.onErrorCallback(error);
|
|
8367
8551
|
_this.pivotTableData = undefined;
|
|
8368
8552
|
}
|
|
8369
|
-
}, _this.renderSuggestionMessage = function (suggestions, queryId) {
|
|
8553
|
+
}, _this.renderSuggestionMessage = function (suggestions, queryId, isQandA) {
|
|
8370
8554
|
var suggestionListMessage = void 0;
|
|
8371
8555
|
|
|
8372
8556
|
try {
|
|
@@ -8410,7 +8594,8 @@ var QueryOutput = function (_React$Component) {
|
|
|
8410
8594
|
query: suggestion,
|
|
8411
8595
|
isButtonClick: true,
|
|
8412
8596
|
source: 'suggestion',
|
|
8413
|
-
queryId: queryId
|
|
8597
|
+
queryId: queryId,
|
|
8598
|
+
isQandA: isQandA
|
|
8414
8599
|
});
|
|
8415
8600
|
},
|
|
8416
8601
|
className: 'react-autoql-suggestion-btn'
|
|
@@ -8665,9 +8850,11 @@ var QueryOutput = function (_React$Component) {
|
|
|
8665
8850
|
|
|
8666
8851
|
_this.dataConfig.numberColumnIndices = numberColumnIndices;
|
|
8667
8852
|
_this.dataConfig.numberColumnIndex = numberColumnIndex;
|
|
8668
|
-
} else {
|
|
8669
|
-
_this.dataConfig.numberColumnIndex = _this.dataConfig.numberColumnIndices[0];
|
|
8670
8853
|
}
|
|
8854
|
+
//else {
|
|
8855
|
+
// //here is bug!!!
|
|
8856
|
+
// this.dataConfig.numberColumnIndex = this.dataConfig.numberColumnIndices[0]
|
|
8857
|
+
// }
|
|
8671
8858
|
}, _this.setSupportedDisplayTypes = function (supportedDisplayTypes, justMounted) {
|
|
8672
8859
|
if (supportedDisplayTypes && (justMounted || !_isEqual(supportedDisplayTypes, _this.supportedDisplayTypes))) {
|
|
8673
8860
|
_this.supportedDisplayTypes = supportedDisplayTypes;
|
|
@@ -8820,7 +9007,6 @@ var QueryOutput = function (_React$Component) {
|
|
|
8820
9007
|
return [columns[stringColumnIndex]].concat(newNumberColumns);
|
|
8821
9008
|
}, _this.getChartTableData = function (newTableData) {
|
|
8822
9009
|
var tableData = _cloneDeep(newTableData) || _cloneDeep(_this.tableData);
|
|
8823
|
-
|
|
8824
9010
|
if (shouldPlotMultiSeries(_this.tableColumns)) {
|
|
8825
9011
|
return _this.getMultiSeriesData(_this.tableColumns, tableData);
|
|
8826
9012
|
}
|
|
@@ -8844,6 +9030,7 @@ var QueryOutput = function (_React$Component) {
|
|
|
8844
9030
|
try {
|
|
8845
9031
|
// Get columns for chart then reset indexes if necessary
|
|
8846
9032
|
var columns = _this.getChartTableColumns();
|
|
9033
|
+
|
|
8847
9034
|
_this.chartTableColumns = columns;
|
|
8848
9035
|
|
|
8849
9036
|
// Get table data for chart after columns
|
|
@@ -8919,7 +9106,6 @@ var QueryOutput = function (_React$Component) {
|
|
|
8919
9106
|
}
|
|
8920
9107
|
return chartDataObject;
|
|
8921
9108
|
}, {}));
|
|
8922
|
-
|
|
8923
9109
|
// Update supported display types after table data has been recalculated
|
|
8924
9110
|
// there may be too many categories for a pie chart etc.
|
|
8925
9111
|
_this.setSupportedDisplayTypes(getSupportedDisplayTypes(_this.props.queryResponse, _this.chartData));
|
|
@@ -9107,7 +9293,6 @@ var QueryOutput = function (_React$Component) {
|
|
|
9107
9293
|
return index !== dateColumnIndex && isColumnNumberType(col);
|
|
9108
9294
|
});
|
|
9109
9295
|
}
|
|
9110
|
-
|
|
9111
9296
|
var tableData = newTableData || _get(_this.props.queryResponse, 'data.data.rows');
|
|
9112
9297
|
|
|
9113
9298
|
var allYears = tableData.map(function (d) {
|
|
@@ -9188,13 +9373,14 @@ var QueryOutput = function (_React$Component) {
|
|
|
9188
9373
|
|
|
9189
9374
|
try {
|
|
9190
9375
|
var tableData = newTableData || _get(_this.props.queryResponse, 'data.data.rows');
|
|
9191
|
-
|
|
9376
|
+
tableData = tableData.filter(function (row) {
|
|
9377
|
+
return row[0] !== null;
|
|
9378
|
+
});
|
|
9192
9379
|
if (!_this.dataConfig) {
|
|
9193
9380
|
// We should change this to getColumnIndices since this wont be
|
|
9194
9381
|
// the final version that we use. We dont want to persist it
|
|
9195
9382
|
_this.setColumnIndices(_this.tableColumns);
|
|
9196
9383
|
}
|
|
9197
|
-
|
|
9198
9384
|
// Set the columns used for the 2 headers (ordinal and legend for charts)
|
|
9199
9385
|
// If one of the indices is already specified, use it
|
|
9200
9386
|
var dataConfigWasPersisted = false;
|
|
@@ -9215,14 +9401,12 @@ var QueryOutput = function (_React$Component) {
|
|
|
9215
9401
|
return col.groupable && i !== _this.dataConfig.stringColumnIndex;
|
|
9216
9402
|
});
|
|
9217
9403
|
}
|
|
9218
|
-
|
|
9219
9404
|
// Set the number type column
|
|
9220
|
-
if (
|
|
9405
|
+
if (_get(_this.dataConfig, 'numberColumnIndex') >= 0) {
|
|
9221
9406
|
_this.dataConfig.numberColumnIndex = _this.tableColumns.findIndex(function (col, index) {
|
|
9222
9407
|
return isColumnNumberType(col) && !col.groupable;
|
|
9223
9408
|
});
|
|
9224
9409
|
}
|
|
9225
|
-
|
|
9226
9410
|
var uniqueValues0 = _this.sortTableDataByDate(tableData).map(function (d) {
|
|
9227
9411
|
return d[_this.dataConfig.stringColumnIndex];
|
|
9228
9412
|
}).filter(onlyUnique).reduce(function (map, title, i) {
|
|
@@ -9256,7 +9440,6 @@ var QueryOutput = function (_React$Component) {
|
|
|
9256
9440
|
// this.setState({ displayType: "table" });
|
|
9257
9441
|
// return null;
|
|
9258
9442
|
// }
|
|
9259
|
-
|
|
9260
9443
|
// Generate new column array
|
|
9261
9444
|
var pivotTableColumns = [_extends({}, _this.tableColumns[_this.dataConfig.stringColumnIndex], {
|
|
9262
9445
|
frozen: true,
|
|
@@ -9312,7 +9495,8 @@ var QueryOutput = function (_React$Component) {
|
|
|
9312
9495
|
userSelection = _ref6.userSelection,
|
|
9313
9496
|
isButtonClick = _ref6.isButtonClick,
|
|
9314
9497
|
skipQueryValidation = _ref6.skipQueryValidation,
|
|
9315
|
-
source = _ref6.source
|
|
9498
|
+
source = _ref6.source,
|
|
9499
|
+
isQandA = _ref6.isQandA;
|
|
9316
9500
|
|
|
9317
9501
|
// Only call suggestion endpoint if clicked from suggestion list, not query validation
|
|
9318
9502
|
if (!userSelection) {
|
|
@@ -9335,7 +9519,8 @@ var QueryOutput = function (_React$Component) {
|
|
|
9335
9519
|
userSelection: userSelection,
|
|
9336
9520
|
isButtonClick: isButtonClick,
|
|
9337
9521
|
skipQueryValidation: skipQueryValidation,
|
|
9338
|
-
source: source
|
|
9522
|
+
source: source,
|
|
9523
|
+
isQandA: isQandA
|
|
9339
9524
|
});
|
|
9340
9525
|
}
|
|
9341
9526
|
if (_this.props.queryInputRef) {
|
|
@@ -9574,10 +9759,28 @@ var QueryOutput = function (_React$Component) {
|
|
|
9574
9759
|
errorMessages.GENERAL_QUERY
|
|
9575
9760
|
);
|
|
9576
9761
|
}
|
|
9762
|
+
}, _this.renderHTMLMessage = function (queryResponse) {
|
|
9763
|
+
return React.createElement(HTMLRenderer, {
|
|
9764
|
+
html: _get(queryResponse, 'data.data.answer'),
|
|
9765
|
+
components: {
|
|
9766
|
+
a: function a(props) {
|
|
9767
|
+
return React.createElement('a', _extends({}, props, { target: '_blank' }));
|
|
9768
|
+
}
|
|
9769
|
+
}
|
|
9770
|
+
});
|
|
9577
9771
|
}, _this.renderResponse = function (width, height) {
|
|
9578
9772
|
var displayType = _this.state.displayType;
|
|
9579
9773
|
var queryResponse = _this.props.queryResponse;
|
|
9580
9774
|
|
|
9775
|
+
|
|
9776
|
+
if (_get(getAuthentication(_this.props.authentication), 'isQandA') && _this.state.QandASuggestions.length !== 0) {
|
|
9777
|
+
return _this.renderSuggestionMessage(_this.state.QandASuggestions, _get(queryResponse, 'data.data.query_id'), true);
|
|
9778
|
+
}
|
|
9779
|
+
|
|
9780
|
+
if (displayType === 'html') {
|
|
9781
|
+
return _this.renderHTMLMessage(queryResponse);
|
|
9782
|
+
}
|
|
9783
|
+
|
|
9581
9784
|
var data = _get(queryResponse, 'data.data.rows');
|
|
9582
9785
|
|
|
9583
9786
|
if (_this.hasError(queryResponse)) {
|
|
@@ -9635,6 +9838,68 @@ var QueryOutput = function (_React$Component) {
|
|
|
9635
9838
|
return _this.renderMessage('display type not recognized: ' + _this.state.displayType);
|
|
9636
9839
|
}
|
|
9637
9840
|
return null;
|
|
9841
|
+
}, _this.renderQandAResponseConfirmation = function () {
|
|
9842
|
+
var _this$props = _this.props,
|
|
9843
|
+
queryResponse = _this$props.queryResponse,
|
|
9844
|
+
authentication = _this$props.authentication;
|
|
9845
|
+
|
|
9846
|
+
if (_get(queryResponse, 'status') === 200 && _get(queryResponse, 'data.data.answer') !== "Oops, I'm not sure if I got that right. Could you try asking a different way?") {
|
|
9847
|
+
return React.createElement(
|
|
9848
|
+
React.Fragment,
|
|
9849
|
+
null,
|
|
9850
|
+
React.createElement('br', null),
|
|
9851
|
+
React.createElement('br', null),
|
|
9852
|
+
React.createElement(
|
|
9853
|
+
'div',
|
|
9854
|
+
null,
|
|
9855
|
+
'Does this answer your question?',
|
|
9856
|
+
' ',
|
|
9857
|
+
React.createElement(
|
|
9858
|
+
'a',
|
|
9859
|
+
{
|
|
9860
|
+
role: 'button',
|
|
9861
|
+
onClick: function onClick() {
|
|
9862
|
+
_this.setState({ QandAResponseCorrect: true });
|
|
9863
|
+
}
|
|
9864
|
+
},
|
|
9865
|
+
'Yes'
|
|
9866
|
+
),
|
|
9867
|
+
'/',
|
|
9868
|
+
React.createElement(
|
|
9869
|
+
'a',
|
|
9870
|
+
{
|
|
9871
|
+
role: 'button',
|
|
9872
|
+
onClick: function onClick() {
|
|
9873
|
+
return fetchQandASuggestions({
|
|
9874
|
+
queryID: _get(queryResponse, 'data.data.query_id'),
|
|
9875
|
+
projectID: _get(getAuthentication(authentication), 'projectID'),
|
|
9876
|
+
apiKey: _get(getAuthentication(authentication), 'apiKey')
|
|
9877
|
+
}).then(function (response) {
|
|
9878
|
+
var array = [];
|
|
9879
|
+
_get(response, 'data.data').map(function (item) {
|
|
9880
|
+
array.push(item.question);
|
|
9881
|
+
});
|
|
9882
|
+
_this.setState({ QandASuggestions: array });
|
|
9883
|
+
return _this.renderResponse();
|
|
9884
|
+
});
|
|
9885
|
+
}
|
|
9886
|
+
},
|
|
9887
|
+
'No'
|
|
9888
|
+
),
|
|
9889
|
+
'?',
|
|
9890
|
+
_this.state.QandAResponseCorrect && React.createElement(
|
|
9891
|
+
'p',
|
|
9892
|
+
{ style: { marginTop: 6 } },
|
|
9893
|
+
React.createElement(Icon, {
|
|
9894
|
+
type: 'check',
|
|
9895
|
+
className: 'qanda-positive-feedback-checkmark',
|
|
9896
|
+
size: 20
|
|
9897
|
+
}),
|
|
9898
|
+
'Thank you for your feedback!'
|
|
9899
|
+
)
|
|
9900
|
+
)
|
|
9901
|
+
);
|
|
9902
|
+
}
|
|
9638
9903
|
}, _this.renderContextMenuContent = function (_ref11) {
|
|
9639
9904
|
var position = _ref11.position,
|
|
9640
9905
|
nudgedLeft = _ref11.nudgedLeft,
|
|
@@ -9666,7 +9931,7 @@ var QueryOutput = function (_React$Component) {
|
|
|
9666
9931
|
{
|
|
9667
9932
|
isOpen: _this.state.isContextMenuOpen,
|
|
9668
9933
|
position: 'bottom' // if you'd like, supply an array of preferred positions ordered by priority
|
|
9669
|
-
, padding: 10 // adjust padding here
|
|
9934
|
+
, padding: 10 // adjust padding here
|
|
9670
9935
|
, onClickOutside: function onClickOutside() {
|
|
9671
9936
|
return _this.setState({ isContextMenuOpen: false });
|
|
9672
9937
|
},
|
|
@@ -9705,9 +9970,10 @@ var QueryOutput = function (_React$Component) {
|
|
|
9705
9970
|
key: _this.COMPONENT_KEY,
|
|
9706
9971
|
id: 'react-autoql-response-content-container-' + _this.COMPONENT_KEY,
|
|
9707
9972
|
'data-test': 'query-response-wrapper',
|
|
9708
|
-
className: 'react-autoql-response-content-container
|
|
9973
|
+
className: 'react-autoql-response-content-container\n ' + (isTableType(_this.state.displayType) ? 'table' : '') + '\n ' + (_this.state.displayType === 'html' ? 'html-content' : '')
|
|
9709
9974
|
},
|
|
9710
|
-
_this.renderResponse(width, height)
|
|
9975
|
+
_this.renderResponse(width, height),
|
|
9976
|
+
_get(getAuthentication(_this.props.authentication), 'isQandA') && _this.renderQandAResponseConfirmation()
|
|
9711
9977
|
),
|
|
9712
9978
|
_this.renderContextMenu()
|
|
9713
9979
|
);
|
|
@@ -9957,7 +10223,9 @@ var Modal = function (_React$Component) {
|
|
|
9957
10223
|
setCSSVars(getThemeConfig(_this.props.themeConfig));
|
|
9958
10224
|
}
|
|
9959
10225
|
}, _this.onClose = function () {
|
|
9960
|
-
|
|
10226
|
+
var deleteFromPortal = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
10227
|
+
|
|
10228
|
+
if (_this.props.confirmOnClose && deleteFromPortal) {
|
|
9961
10229
|
_this.setState({ isConfirmCloseModalVisible: true });
|
|
9962
10230
|
} else {
|
|
9963
10231
|
_this.props.onClose();
|
|
@@ -10010,6 +10278,8 @@ var Modal = function (_React$Component) {
|
|
|
10010
10278
|
React.createElement(
|
|
10011
10279
|
'div',
|
|
10012
10280
|
{ className: 'react-autoql-modal-header' },
|
|
10281
|
+
_this.props.titleIcon,
|
|
10282
|
+
' ',
|
|
10013
10283
|
_this.props.title,
|
|
10014
10284
|
React.createElement(Icon, {
|
|
10015
10285
|
type: 'close',
|
|
@@ -10067,6 +10337,7 @@ var Modal = function (_React$Component) {
|
|
|
10067
10337
|
Modal.propTypes = {
|
|
10068
10338
|
themeConfig: themeConfigType,
|
|
10069
10339
|
title: PropTypes.oneOfType([PropTypes.element, PropTypes.string]),
|
|
10340
|
+
titleIcon: PropTypes.oneOfType([PropTypes.element, PropTypes.instanceOf(Icon)]),
|
|
10070
10341
|
isVisible: PropTypes.bool,
|
|
10071
10342
|
onClose: PropTypes.func,
|
|
10072
10343
|
onConfirm: PropTypes.func,
|
|
@@ -10084,6 +10355,7 @@ Modal.propTypes = {
|
|
|
10084
10355
|
Modal.defaultProps = {
|
|
10085
10356
|
themeConfig: themeConfigDefault,
|
|
10086
10357
|
title: '',
|
|
10358
|
+
titleIcon: undefined,
|
|
10087
10359
|
isVisible: false,
|
|
10088
10360
|
width: '80vw',
|
|
10089
10361
|
height: undefined,
|
|
@@ -10317,10 +10589,10 @@ var fetchDataAlerts = function fetchDataAlerts(_ref5) {
|
|
|
10317
10589
|
}
|
|
10318
10590
|
});
|
|
10319
10591
|
|
|
10320
|
-
var url = domain + '/autoql/api/v1/data-alerts?key=' + apiKey;
|
|
10592
|
+
var url = domain + '/autoql/management/api/v1/data-alerts?key=' + apiKey;
|
|
10321
10593
|
|
|
10322
10594
|
return axiosInstance.get(url).then(function (response) {
|
|
10323
|
-
return Promise.resolve(_get(response, 'data
|
|
10595
|
+
return Promise.resolve(_get(response, 'data'));
|
|
10324
10596
|
}).catch(function (error) {
|
|
10325
10597
|
return Promise.reject(_get(error, 'response.data'));
|
|
10326
10598
|
});
|
|
@@ -10698,7 +10970,7 @@ var updateDataAlert = function updateDataAlert(_ref18) {
|
|
|
10698
10970
|
}
|
|
10699
10971
|
});
|
|
10700
10972
|
|
|
10701
|
-
var url = domain + '/autoql/api/v1/data-alerts/' + dataAlert.id + '?key=' + apiKey;
|
|
10973
|
+
var url = domain + '/autoql/management/api/v1/data-alerts/' + dataAlert.id + '?key=' + apiKey;
|
|
10702
10974
|
|
|
10703
10975
|
return axiosInstance.put(url, dataAlert).then(function (response) {
|
|
10704
10976
|
return Promise.resolve(response);
|
|
@@ -10765,13 +11037,12 @@ var validateExpression = function validateExpression(_ref20) {
|
|
|
10765
11037
|
};
|
|
10766
11038
|
|
|
10767
11039
|
// DELETE
|
|
10768
|
-
var deleteDataAlert = function deleteDataAlert(
|
|
10769
|
-
var dataAlertId = _ref21.dataAlertId,
|
|
10770
|
-
domain = _ref21.domain,
|
|
10771
|
-
apiKey = _ref21.apiKey,
|
|
10772
|
-
token = _ref21.token;
|
|
10773
|
-
|
|
11040
|
+
var deleteDataAlert = function deleteDataAlert(dataAlertId, projectId, authObject) {
|
|
10774
11041
|
// If there is missing data, dont bother making the call
|
|
11042
|
+
var domain = authObject.domain,
|
|
11043
|
+
apiKey = authObject.apiKey,
|
|
11044
|
+
token = authObject.token;
|
|
11045
|
+
|
|
10775
11046
|
if (!token || !apiKey || !domain) {
|
|
10776
11047
|
return Promise.reject(new Error('UNAUTHORIZED'));
|
|
10777
11048
|
}
|
|
@@ -10782,7 +11053,7 @@ var deleteDataAlert = function deleteDataAlert(_ref21) {
|
|
|
10782
11053
|
}
|
|
10783
11054
|
});
|
|
10784
11055
|
|
|
10785
|
-
var url = domain + '/autoql/api/v1/data-alerts/' + dataAlertId + '?key=' + apiKey;
|
|
11056
|
+
var url = domain + '/autoql/management/api/v1/data-alerts/' + dataAlertId + '?key=' + apiKey;
|
|
10786
11057
|
|
|
10787
11058
|
return axiosInstance.delete(url).then(function (response) {
|
|
10788
11059
|
return Promise.resolve(response);
|
|
@@ -10791,11 +11062,11 @@ var deleteDataAlert = function deleteDataAlert(_ref21) {
|
|
|
10791
11062
|
});
|
|
10792
11063
|
};
|
|
10793
11064
|
|
|
10794
|
-
var removeNotificationChannel = function removeNotificationChannel(
|
|
10795
|
-
var channelId =
|
|
10796
|
-
domain =
|
|
10797
|
-
apiKey =
|
|
10798
|
-
token =
|
|
11065
|
+
var removeNotificationChannel = function removeNotificationChannel(_ref21) {
|
|
11066
|
+
var channelId = _ref21.channelId,
|
|
11067
|
+
domain = _ref21.domain,
|
|
11068
|
+
apiKey = _ref21.apiKey,
|
|
11069
|
+
token = _ref21.token;
|
|
10799
11070
|
|
|
10800
11071
|
// If there is missing data, dont bother making the call
|
|
10801
11072
|
if (!token || !apiKey || !domain) {
|
|
@@ -12669,7 +12940,7 @@ var DataAlertModal$1 = function (_React$Component) {
|
|
|
12669
12940
|
}, _this.initializeFields = function () {
|
|
12670
12941
|
// If we are editing an existing notification
|
|
12671
12942
|
// Fill the fields with the current settings
|
|
12672
|
-
if (_this.props.currentDataAlert) {
|
|
12943
|
+
if (!_.isEmpty(_this.props.currentDataAlert)) {
|
|
12673
12944
|
var notification = _this.props.currentDataAlert;
|
|
12674
12945
|
_this.setState({
|
|
12675
12946
|
titleInput: notification.title,
|
|
@@ -12677,8 +12948,6 @@ var DataAlertModal$1 = function (_React$Component) {
|
|
|
12677
12948
|
dataReturnQuery: notification.data_return_query,
|
|
12678
12949
|
isDataReturnDirty: true,
|
|
12679
12950
|
expressionJSON: _get(_this.props.currentDataAlert, 'expression')
|
|
12680
|
-
}, function () {
|
|
12681
|
-
_this.validateExpression();
|
|
12682
12951
|
});
|
|
12683
12952
|
} else if (_this.props.initialQuery && typeof _this.props.initialQuery === 'string') {
|
|
12684
12953
|
var expressionJSON = _this.createExpressionJSONFromQuery(_this.props.initialQuery);
|
|
@@ -12761,7 +13030,9 @@ var DataAlertModal$1 = function (_React$Component) {
|
|
|
12761
13030
|
isSavingDataAlert: true
|
|
12762
13031
|
});
|
|
12763
13032
|
|
|
12764
|
-
var newDataAlert = _this.getDataAlertData()
|
|
13033
|
+
var newDataAlert = _extends({}, _this.getDataAlertData(), {
|
|
13034
|
+
project_id: _this.props.selectedDemoProjectId
|
|
13035
|
+
});
|
|
12765
13036
|
|
|
12766
13037
|
var requestParams = _extends({
|
|
12767
13038
|
dataAlert: newDataAlert
|
|
@@ -12853,12 +13124,22 @@ var DataAlertModal$1 = function (_React$Component) {
|
|
|
12853
13124
|
return React.createElement(
|
|
12854
13125
|
Fragment,
|
|
12855
13126
|
null,
|
|
12856
|
-
_this.state.isExpressionValidated && _this.state.isExpressionValid && React.createElement(
|
|
12857
|
-
|
|
12858
|
-
|
|
12859
|
-
|
|
12860
|
-
|
|
12861
|
-
|
|
13127
|
+
_this.state.isExpressionValidated && _this.state.isExpressionValid && React.createElement(
|
|
13128
|
+
'span',
|
|
13129
|
+
{
|
|
13130
|
+
style: {
|
|
13131
|
+
display: 'inline-block',
|
|
13132
|
+
position: 'absolute',
|
|
13133
|
+
right: '210px'
|
|
13134
|
+
}
|
|
13135
|
+
},
|
|
13136
|
+
React.createElement(Icon, {
|
|
13137
|
+
className: 'expression-valid-checkmark',
|
|
13138
|
+
type: 'check',
|
|
13139
|
+
'data-for': 'react-autoql-data-alert-modal-tooltip',
|
|
13140
|
+
'data-tip': 'Expression is valid'
|
|
13141
|
+
})
|
|
13142
|
+
),
|
|
12862
13143
|
_this.state.isExpressionValidated && !_this.state.isExpressionValid && !!_this.state.expressionError && React.createElement(
|
|
12863
13144
|
'div',
|
|
12864
13145
|
{ className: 'expression-invalid-message-container' },
|
|
@@ -12884,7 +13165,7 @@ var DataAlertModal$1 = function (_React$Component) {
|
|
|
12884
13165
|
onClick: _this.validateExpression,
|
|
12885
13166
|
loading: _this.state.isValidating
|
|
12886
13167
|
}, defineProperty(_React$createElement, 'type', 'primary'), defineProperty(_React$createElement, 'disabled', !_this.state.titleInput || !_get(_this.expressionRef, 'state.expression[0].term_value') // only checking for empty state of the first input value
|
|
12887
|
-
), _React$createElement),
|
|
13168
|
+
), defineProperty(_React$createElement, 'style', { position: 'absolute', right: 0 }), _React$createElement),
|
|
12888
13169
|
'Check Alert & continue'
|
|
12889
13170
|
)
|
|
12890
13171
|
);
|
|
@@ -13078,14 +13359,13 @@ var DataAlertModal$1 = function (_React$Component) {
|
|
|
13078
13359
|
isDeletingDataAlert: true
|
|
13079
13360
|
});
|
|
13080
13361
|
|
|
13081
|
-
deleteDataAlert(
|
|
13082
|
-
dataAlertId: dataAlertId
|
|
13083
|
-
}, getAuthentication(_this.props.authentication))).then(function () {
|
|
13084
|
-
_this.props.onDelete(dataAlertId);
|
|
13362
|
+
deleteDataAlert(dataAlertId, _this.props.activeAlertType, _this.props.authObject).then(function () {
|
|
13085
13363
|
_this.setState({
|
|
13086
13364
|
isDeletingDataAlert: false,
|
|
13087
13365
|
isConfirmDeleteModalVisible: false
|
|
13088
13366
|
});
|
|
13367
|
+
_this.props.handleAlertDeletedByWidget();
|
|
13368
|
+
_this.props.onClose(false);
|
|
13089
13369
|
}).catch(function (error) {
|
|
13090
13370
|
console.error(error);
|
|
13091
13371
|
_this.props.onErrorCallback(error);
|
|
@@ -13139,6 +13419,7 @@ var DataAlertModal$1 = function (_React$Component) {
|
|
|
13139
13419
|
{
|
|
13140
13420
|
themeConfig: getThemeConfig(_this.props.themeConfig),
|
|
13141
13421
|
title: _this.props.title,
|
|
13422
|
+
titleIcon: !_.isEmpty(_this.props.currentDataAlert) ? React.createElement(Icon, { type: 'edit' }) : React.createElement('span', null),
|
|
13142
13423
|
ref: function ref(r) {
|
|
13143
13424
|
return _this.modalRef = r;
|
|
13144
13425
|
},
|
|
@@ -13247,6 +13528,7 @@ DataAlertModal$1.propTypes = {
|
|
|
13247
13528
|
onManagementCreateDataAlert: PropTypes.func,
|
|
13248
13529
|
onManagementDeleteDataAlert: PropTypes.func,
|
|
13249
13530
|
title: PropTypes.string,
|
|
13531
|
+
titleIcon: PropTypes.oneOfType([PropTypes.element, PropTypes.instanceOf(Icon)]),
|
|
13250
13532
|
enableQueryValidation: PropTypes.bool,
|
|
13251
13533
|
onValidate: PropTypes.func
|
|
13252
13534
|
};
|
|
@@ -13264,6 +13546,7 @@ DataAlertModal$1.defaultProps = {
|
|
|
13264
13546
|
onManagementCreateDataAlert: function onManagementCreateDataAlert() {},
|
|
13265
13547
|
onManagementDeleteDataAlert: function onManagementDeleteDataAlert() {},
|
|
13266
13548
|
title: 'Create Data Alert',
|
|
13549
|
+
titleIcon: undefined,
|
|
13267
13550
|
enableQueryValidation: true,
|
|
13268
13551
|
onValidate: undefined
|
|
13269
13552
|
};
|
|
@@ -13453,7 +13736,7 @@ var NotificationFeed = function (_React$Component) {
|
|
|
13453
13736
|
onSave: _this.onDataAlertSave,
|
|
13454
13737
|
onErrorCallback: _this.props.onErrorCallback,
|
|
13455
13738
|
allowDelete: false
|
|
13456
|
-
}, defineProperty(_React$createElement, 'themeConfig', getThemeConfig(_this.props.themeConfig)), defineProperty(_React$createElement, 'title', _this.state.activeDataAlert ? 'Edit Data Alert' : 'Create Data Alert'), _React$createElement));
|
|
13739
|
+
}, defineProperty(_React$createElement, 'themeConfig', getThemeConfig(_this.props.themeConfig)), defineProperty(_React$createElement, 'title', _this.state.activeDataAlert ? 'Edit Data Alert' : 'Create Data Alert'), defineProperty(_React$createElement, 'titleIcon', _this.state.activeDataAlert ? React.createElement(Icon, { type: 'edit' }) : React.createElement('span', null)), _React$createElement));
|
|
13457
13740
|
}, _this.render = function () {
|
|
13458
13741
|
if (_this.state.isFetchingFirstNotifications) {
|
|
13459
13742
|
return React.createElement(
|
|
@@ -13638,19 +13921,32 @@ var DataAlerts = function (_React$Component) {
|
|
|
13638
13921
|
customAlertsList: undefined,
|
|
13639
13922
|
projectAlertsList: undefined
|
|
13640
13923
|
}, _this.componentDidMount = function () {
|
|
13641
|
-
_this.
|
|
13924
|
+
_this._isMounted = true;
|
|
13925
|
+
_this._isMounted && _this.getDataAlerts();
|
|
13642
13926
|
setCSSVars(getThemeConfig(_this.props.themeConfig));
|
|
13643
|
-
}, _this.componentDidUpdate = function (prevProps) {
|
|
13927
|
+
}, _this.componentDidUpdate = function (prevProps, prevState) {
|
|
13644
13928
|
if (!_isEqual(getThemeConfig(_this.props.themeConfig), getThemeConfig(prevProps.themeConfig))) {
|
|
13645
13929
|
setCSSVars(getThemeConfig(_this.props.themeConfig));
|
|
13646
13930
|
}
|
|
13931
|
+
if (!_isEqual(getAuthentication(_this.props.authentication), getAuthentication(prevProps.authentication))) {
|
|
13932
|
+
_this.getDataAlerts();
|
|
13933
|
+
}
|
|
13934
|
+
if (!_isEqual(_this.state.projectAlertsList, prevState.projectAlertsList)) {
|
|
13935
|
+
_this.getDataAlerts();
|
|
13936
|
+
}
|
|
13937
|
+
}, _this.componentWillUnmount = function () {
|
|
13938
|
+
_this._isMounted = false;
|
|
13647
13939
|
}, _this.getDataAlerts = function (type) {
|
|
13648
13940
|
fetchDataAlerts(_extends({}, getAuthentication(_this.props.authentication), {
|
|
13649
13941
|
type: type
|
|
13650
13942
|
})).then(function (response) {
|
|
13651
|
-
_this.setState({
|
|
13652
|
-
customAlertsList:
|
|
13653
|
-
projectAlertsList: response.
|
|
13943
|
+
_this._isMounted && _this.setState({
|
|
13944
|
+
customAlertsList: [],
|
|
13945
|
+
projectAlertsList: response.data.items.filter(function (al) {
|
|
13946
|
+
return _.find(al.projects, function (p) {
|
|
13947
|
+
return p.id === _this.props.selectedDemoProjectId;
|
|
13948
|
+
});
|
|
13949
|
+
})
|
|
13654
13950
|
});
|
|
13655
13951
|
}).catch(function (error) {
|
|
13656
13952
|
console.error(error);
|
|
@@ -13699,16 +13995,23 @@ var DataAlerts = function (_React$Component) {
|
|
|
13699
13995
|
var newStatus = e.target.checked ? 'ACTIVE' : 'INACTIVE';
|
|
13700
13996
|
|
|
13701
13997
|
var listType = dataAlert.type === 'CUSTOM' ? 'customAlertsList' : 'projectAlertsList';
|
|
13998
|
+
var newProjects = dataAlert.projects.map(function (p) {
|
|
13999
|
+
if (p.id === _this.props.selectedDemoProjectId) {
|
|
14000
|
+
p.status = newStatus;
|
|
14001
|
+
}
|
|
14002
|
+
return p;
|
|
14003
|
+
});
|
|
13702
14004
|
|
|
13703
14005
|
var oldList = _cloneDeep(_this.state[listType]);
|
|
13704
14006
|
var newList = _this.state[listType].map(function (n) {
|
|
13705
14007
|
if (dataAlert.id === n.id) {
|
|
13706
14008
|
return _extends({}, n, {
|
|
13707
|
-
|
|
14009
|
+
projects: newProjects
|
|
13708
14010
|
});
|
|
13709
14011
|
}
|
|
13710
14012
|
return n;
|
|
13711
14013
|
});
|
|
14014
|
+
|
|
13712
14015
|
_this.setState(defineProperty({}, '' + listType, newList));
|
|
13713
14016
|
|
|
13714
14017
|
updateDataAlertStatus(_extends({
|
|
@@ -13716,7 +14019,6 @@ var DataAlerts = function (_React$Component) {
|
|
|
13716
14019
|
type: dataAlert.type,
|
|
13717
14020
|
status: newStatus
|
|
13718
14021
|
}, getAuthentication(_this.props.authentication))).catch(function (error) {
|
|
13719
|
-
console.error(error);
|
|
13720
14022
|
_this.props.onErrorCallback(new Error('Something went wrong. Please try again.'));
|
|
13721
14023
|
|
|
13722
14024
|
// Switch flip back
|
|
@@ -13738,7 +14040,9 @@ var DataAlerts = function (_React$Component) {
|
|
|
13738
14040
|
onSave: _this.onDataAlertSave,
|
|
13739
14041
|
onErrorCallback: _this.props.onErrorCallback,
|
|
13740
14042
|
onDelete: _this.onDataAlertDelete,
|
|
13741
|
-
title: _this.state.activeDataAlert ? 'Edit Data Alert' : 'Create Data Alert'
|
|
14043
|
+
title: _this.state.activeDataAlert ? 'Edit Data Alert' : 'Create Data Alert',
|
|
14044
|
+
titleIcon: _this.state.activeDataAlert ? React.createElement(Icon, { type: 'edit' }) : React.createElement('span', null),
|
|
14045
|
+
selectedDemoProjectId: _this.props.selectedDemoProjectId
|
|
13742
14046
|
});
|
|
13743
14047
|
}, _this.renderNotificationGroupTitle = function (title, description, includeAddBtn) {
|
|
13744
14048
|
return React.createElement(
|
|
@@ -13782,7 +14086,13 @@ var DataAlerts = function (_React$Component) {
|
|
|
13782
14086
|
isEditModalVisible: true
|
|
13783
14087
|
});
|
|
13784
14088
|
}, _this.hasError = function (dataAlert) {
|
|
13785
|
-
return dataAlert.
|
|
14089
|
+
return dataAlert.projects.map(function (p) {
|
|
14090
|
+
return p.id === _this.props.selectedDemoProjectId;
|
|
14091
|
+
})[0].status === 'GENERAL_ERROR' || dataAlert.projects.map(function (p) {
|
|
14092
|
+
return p.id === _this.props.selectedDemoProjectId;
|
|
14093
|
+
})[0].status === 'EVALUATION_ERROR' || dataAlert.projects.map(function (p) {
|
|
14094
|
+
return p.id === _this.props.selectedDemoProjectId;
|
|
14095
|
+
})[0].status === 'DATA_RETURN_ERROR';
|
|
13786
14096
|
}, _this.renderNotificationlist = function (type, list) {
|
|
13787
14097
|
if (type === 'project' && !_get(list, 'length')) {
|
|
13788
14098
|
return null;
|
|
@@ -13863,15 +14173,43 @@ var DataAlerts = function (_React$Component) {
|
|
|
13863
14173
|
},
|
|
13864
14174
|
type: 'hour-glass'
|
|
13865
14175
|
}),
|
|
13866
|
-
React.createElement(
|
|
14176
|
+
_this.hasError(notification) ? React.createElement(
|
|
14177
|
+
React.Fragment,
|
|
14178
|
+
null,
|
|
14179
|
+
React.createElement(
|
|
14180
|
+
Button,
|
|
14181
|
+
{
|
|
14182
|
+
type: 'primary',
|
|
14183
|
+
className: 'react-autoql-re-initialize-btn',
|
|
14184
|
+
tooltip: 'Please re-initialize data alert',
|
|
14185
|
+
onClick: function onClick() {
|
|
14186
|
+
return _this.props.handleInitialize(notification, _this.props.selectedDemoProjectId, _this.props.authentication);
|
|
14187
|
+
}
|
|
14188
|
+
},
|
|
14189
|
+
React.createElement(
|
|
14190
|
+
'span',
|
|
14191
|
+
{ className: 'react-autoql-re-initialize-btn-text' },
|
|
14192
|
+
'Re-Initialize'
|
|
14193
|
+
)
|
|
14194
|
+
),
|
|
14195
|
+
React.createElement(Checkbox, {
|
|
14196
|
+
themeConfig: getThemeConfig(_this.props.themeConfig),
|
|
14197
|
+
type: 'switch',
|
|
14198
|
+
className: 'react-autoql-notification-disable-checkbox'
|
|
14199
|
+
})
|
|
14200
|
+
) : React.createElement(Checkbox, {
|
|
13867
14201
|
themeConfig: getThemeConfig(_this.props.themeConfig),
|
|
13868
14202
|
type: 'switch',
|
|
13869
|
-
checked: notification.
|
|
14203
|
+
checked: notification.projects && notification.projects.filter(function (p) {
|
|
14204
|
+
return p.status === 'ACTIVE' && p.id === _this.props.selectedDemoProjectId || p.status === 'WAITING' && p.id === _this.props.selectedDemoProjectId;
|
|
14205
|
+
}).length > 0,
|
|
13870
14206
|
className: 'react-autoql-notification-enable-checkbox',
|
|
13871
14207
|
onClick: function onClick(e) {
|
|
13872
14208
|
return e.stopPropagation();
|
|
13873
14209
|
},
|
|
13874
|
-
'data-tip': notification.
|
|
14210
|
+
'data-tip': notification.projects && notification.projects.filter(function (p) {
|
|
14211
|
+
return p.status === 'ACTIVE' && p.id === _this.props.selectedDemoProjectId || p.status === 'WAITING' && p.id === _this.props.selectedDemoProjectId;
|
|
14212
|
+
}).length > 0 ? 'Turn Data Alert off' : 'Turn Data Alert on',
|
|
13875
14213
|
'data-for': 'react-autoql-notification-settings-tooltip',
|
|
13876
14214
|
onChange: function onChange(e) {
|
|
13877
14215
|
_this.onEnableSwitchChange(e, notification);
|
|
@@ -13913,7 +14251,7 @@ var DataAlerts = function (_React$Component) {
|
|
|
13913
14251
|
'data-test': 'notification-settings',
|
|
13914
14252
|
style: { textAlign: 'center', marginTop: '100px' }
|
|
13915
14253
|
},
|
|
13916
|
-
|
|
14254
|
+
React.createElement(LoadingDots, null)
|
|
13917
14255
|
);
|
|
13918
14256
|
}
|
|
13919
14257
|
|
|
@@ -16047,6 +16385,7 @@ var Input$1 = function (_React$Component) {
|
|
|
16047
16385
|
}
|
|
16048
16386
|
|
|
16049
16387
|
return _ret = (_temp = (_this = possibleConstructorReturn(this, (_ref = Input.__proto__ || Object.getPrototypeOf(Input)).call.apply(_ref, [this].concat(args))), _this), _this.state = { isHideColumnsModalVisible: false, isSettingColumnVisibility: false }, _this.componentDidMount = function () {
|
|
16388
|
+
_this._isMounted = true;
|
|
16050
16389
|
setCSSVars(getThemeConfig(_this.props.themeConfig));
|
|
16051
16390
|
}, _this.componentDidUpdate = function (prevProps, prevState) {
|
|
16052
16391
|
ReactTooltip.rebuild();
|
|
@@ -16058,6 +16397,8 @@ var Input$1 = function (_React$Component) {
|
|
|
16058
16397
|
if (!_isEqual(getThemeConfig(_this.props.themeConfig), getThemeConfig(prevProps.themeConfig))) {
|
|
16059
16398
|
setCSSVars(getThemeConfig(_this.props.themeConfig));
|
|
16060
16399
|
}
|
|
16400
|
+
}, _this.componentWillUnmount = function () {
|
|
16401
|
+
_this._isMounted = false;
|
|
16061
16402
|
}, _this.onTableFilter = function (newTableData) {
|
|
16062
16403
|
var displayType = _get(_this.props.responseRef, 'state.displayType');
|
|
16063
16404
|
if (displayType === 'table') {
|
|
@@ -16796,6 +17137,7 @@ var ChatMessage = function (_React$Component) {
|
|
|
16796
17137
|
}, 0);
|
|
16797
17138
|
}, _this.componentDidUpdate = function (prevProps, prevState) {
|
|
16798
17139
|
ReactTooltip.hide();
|
|
17140
|
+
_this.props.scrollToBottom();
|
|
16799
17141
|
}, _this.componentWillUnmount = function () {
|
|
16800
17142
|
if (_this.scrollIntoViewTimeout) {
|
|
16801
17143
|
clearTimeout(_this.scrollIntoViewTimeout);
|
|
@@ -16825,7 +17167,7 @@ var ChatMessage = function (_React$Component) {
|
|
|
16825
17167
|
|
|
16826
17168
|
return false;
|
|
16827
17169
|
}, _this.scrollIntoView = function () {
|
|
16828
|
-
setTimeout(function () {
|
|
17170
|
+
_this.scrollIntoViewTimeout = setTimeout(function () {
|
|
16829
17171
|
var element = document.getElementById('message-' + _this.props.id);
|
|
16830
17172
|
|
|
16831
17173
|
if (!_this.isScrolledIntoView(element)) {
|
|
@@ -16864,6 +17206,8 @@ var ChatMessage = function (_React$Component) {
|
|
|
16864
17206
|
|
|
16865
17207
|
if (content) {
|
|
16866
17208
|
return content;
|
|
17209
|
+
} else if (_get(response, 'status') === 401) {
|
|
17210
|
+
return errorMessages.UNAUTHENTICATED;
|
|
16867
17211
|
} else if (response) {
|
|
16868
17212
|
return React.createElement(QueryOutput, {
|
|
16869
17213
|
ref: function ref(_ref2) {
|
|
@@ -17000,7 +17344,7 @@ var ChatMessage = function (_React$Component) {
|
|
|
17000
17344
|
}
|
|
17001
17345
|
|
|
17002
17346
|
return { chartWidth: chartWidth, chartHeight: chartHeight };
|
|
17003
|
-
}, _this.allColumnsAreHidden = function (
|
|
17347
|
+
}, _this.allColumnsAreHidden = function () {
|
|
17004
17348
|
if (_this.responseRef) {
|
|
17005
17349
|
return _this.responseRef.areAllColumnsHidden();
|
|
17006
17350
|
}
|
|
@@ -17025,7 +17369,7 @@ var ChatMessage = function (_React$Component) {
|
|
|
17025
17369
|
var _this$getChartDimensi = _this.getChartDimensions(),
|
|
17026
17370
|
chartHeight = _this$getChartDimensi.chartHeight;
|
|
17027
17371
|
|
|
17028
|
-
if (_this.props.type === 'text') {
|
|
17372
|
+
if (_this.props.type === 'text' || _this.state.displayType === 'html') {
|
|
17029
17373
|
return undefined;
|
|
17030
17374
|
} else if (chartHeight) {
|
|
17031
17375
|
return chartHeight + 40;
|
|
@@ -17036,7 +17380,7 @@ var ChatMessage = function (_React$Component) {
|
|
|
17036
17380
|
var numRows = _get(_this.props, 'response.data.data.rows.length');
|
|
17037
17381
|
var maxRowLimit = _get(_this.props, 'response.data.data.row_limit');
|
|
17038
17382
|
|
|
17039
|
-
if (maxRowLimit && numRows === maxRowLimit) {
|
|
17383
|
+
if (maxRowLimit && numRows === maxRowLimit && !_this.allColumnsAreHidden()) {
|
|
17040
17384
|
return React.createElement(Icon, {
|
|
17041
17385
|
type: 'warning',
|
|
17042
17386
|
className: 'data-limit-warning-icon',
|
|
@@ -17051,7 +17395,6 @@ var ChatMessage = function (_React$Component) {
|
|
|
17051
17395
|
|
|
17052
17396
|
var messageHeight = _this.getMessageHeight();
|
|
17053
17397
|
var maxMessageHeight = _this.getMaxMessageheight();
|
|
17054
|
-
|
|
17055
17398
|
return React.createElement(
|
|
17056
17399
|
ErrorBoundary,
|
|
17057
17400
|
null,
|
|
@@ -17071,7 +17414,9 @@ var ChatMessage = function (_React$Component) {
|
|
|
17071
17414
|
{
|
|
17072
17415
|
className: 'chat-message-bubble\n ' + (CHART_TYPES.includes(_this.state.displayType) ? ' full-width' : '') + '\n ' + (_this.props.type === 'text' ? ' text' : '') + '\n ' + (_this.props.isActive ? ' active' : ''),
|
|
17073
17416
|
style: {
|
|
17074
|
-
minWidth: _this.isTableResponse() && _this.state.supportedDisplayTypes.length >= 4
|
|
17417
|
+
minWidth: _this.isTableResponse() && _this.state.supportedDisplayTypes.length >= 4 || _this.props.response && _this.props.response.data && _this.props.response.data.data && _this.props.response.data.data.columns && _get(_this.props.response, 'data.data.columns').every(function (col) {
|
|
17418
|
+
return !col.visible;
|
|
17419
|
+
}) || _this.allColumnsAreHidden() ? '400px' : undefined
|
|
17075
17420
|
}
|
|
17076
17421
|
},
|
|
17077
17422
|
_this.renderContent(chartWidth, chartHeight),
|
|
@@ -17385,7 +17730,7 @@ var Cascader = function (_React$Component) {
|
|
|
17385
17730
|
!!_get(option, 'children.length') && React.createElement(Icon, { className: 'option-arrow', type: 'caret-right' })
|
|
17386
17731
|
);
|
|
17387
17732
|
}),
|
|
17388
|
-
hasNoChildren && mostRecentOptionLabel && React.createElement(
|
|
17733
|
+
hasNoChildren && mostRecentOptionLabel && _this.props.onSeeMoreClick && React.createElement(
|
|
17389
17734
|
'div',
|
|
17390
17735
|
{
|
|
17391
17736
|
className: 'option',
|
|
@@ -17451,7 +17796,7 @@ Cascader.propTypes = {
|
|
|
17451
17796
|
Cascader.defaultProps = {
|
|
17452
17797
|
options: [],
|
|
17453
17798
|
onFinalOptionClick: function onFinalOptionClick() {},
|
|
17454
|
-
onSeeMoreClick:
|
|
17799
|
+
onSeeMoreClick: undefined
|
|
17455
17800
|
};
|
|
17456
17801
|
|
|
17457
17802
|
var DataMessenger = function (_React$Component) {
|
|
@@ -17555,6 +17900,9 @@ var DataMessenger = function (_React$Component) {
|
|
|
17555
17900
|
isIntroMessage: true
|
|
17556
17901
|
};
|
|
17557
17902
|
}, _this.createTopicsMessage = function () {
|
|
17903
|
+
var enableExploreQueries = _this.props.enableExploreQueriesTab;
|
|
17904
|
+
var isQandA = _get(_this.props.authentication, 'isQandA');
|
|
17905
|
+
|
|
17558
17906
|
var topics = _this.props.queryQuickStartTopics.map(function (topic) {
|
|
17559
17907
|
return {
|
|
17560
17908
|
label: topic.topic,
|
|
@@ -17572,7 +17920,7 @@ var DataMessenger = function (_React$Component) {
|
|
|
17572
17920
|
var content = React.createElement(
|
|
17573
17921
|
'div',
|
|
17574
17922
|
null,
|
|
17575
|
-
|
|
17923
|
+
lang.introPrompt,
|
|
17576
17924
|
React.createElement('br', null),
|
|
17577
17925
|
React.createElement(
|
|
17578
17926
|
'div',
|
|
@@ -17585,26 +17933,31 @@ var DataMessenger = function (_React$Component) {
|
|
|
17585
17933
|
source: 'welcome_prompt'
|
|
17586
17934
|
});
|
|
17587
17935
|
},
|
|
17588
|
-
onSeeMoreClick: function
|
|
17936
|
+
onSeeMoreClick: enableExploreQueries && !isQandA ? function (label) {
|
|
17589
17937
|
return _this.runTopicInExporeQueries(label);
|
|
17590
|
-
}
|
|
17938
|
+
} : undefined
|
|
17591
17939
|
})
|
|
17592
17940
|
),
|
|
17593
|
-
|
|
17594
|
-
|
|
17595
|
-
|
|
17596
|
-
|
|
17597
|
-
|
|
17598
|
-
|
|
17599
|
-
|
|
17600
|
-
|
|
17601
|
-
|
|
17602
|
-
|
|
17603
|
-
|
|
17604
|
-
|
|
17605
|
-
|
|
17606
|
-
|
|
17607
|
-
|
|
17941
|
+
enableExploreQueries && !isQandA && React.createElement(
|
|
17942
|
+
'div',
|
|
17943
|
+
null,
|
|
17944
|
+
lang.use,
|
|
17945
|
+
' ',
|
|
17946
|
+
React.createElement(
|
|
17947
|
+
'span',
|
|
17948
|
+
{
|
|
17949
|
+
className: 'intro-qi-link',
|
|
17950
|
+
onClick: function onClick() {
|
|
17951
|
+
return _this.setState({ activePage: 'explore-queries' });
|
|
17952
|
+
}
|
|
17953
|
+
},
|
|
17954
|
+
React.createElement(Icon, { type: 'light-bulb', style: { marginRight: '-3px' } }),
|
|
17955
|
+
' ',
|
|
17956
|
+
lang.exploreQueries
|
|
17957
|
+
),
|
|
17958
|
+
' ',
|
|
17959
|
+
lang.explorePrompt
|
|
17960
|
+
)
|
|
17608
17961
|
);
|
|
17609
17962
|
|
|
17610
17963
|
return content;
|
|
@@ -17613,12 +17966,18 @@ var DataMessenger = function (_React$Component) {
|
|
|
17613
17966
|
return undefined;
|
|
17614
17967
|
}
|
|
17615
17968
|
}, _this.setintroMessages = function () {
|
|
17969
|
+
var introMessageContent = _this.props.introMessage ? '' + _this.props.introMessage : 'Hi ' + (_this.props.userDisplayName || 'there') + '! Let\u2019s dive into your data. What can I help you discover today?';
|
|
17970
|
+
|
|
17971
|
+
if (_get(_this.props.authentication, 'isQandA')) {
|
|
17972
|
+
introMessageContent = _this.props.introMessage ? '' + _this.props.introMessage : 'Hi ' + (_this.props.userDisplayName || 'there') + '! What can I help you with today?';
|
|
17973
|
+
}
|
|
17974
|
+
|
|
17616
17975
|
var introMessages = [_this.createIntroMessage({
|
|
17617
17976
|
type: 'text',
|
|
17618
|
-
content:
|
|
17977
|
+
content: introMessageContent
|
|
17619
17978
|
})];
|
|
17620
17979
|
|
|
17621
|
-
if (
|
|
17980
|
+
if (_get(_this.props.queryQuickStartTopics, 'length')) {
|
|
17622
17981
|
var topicsMessageContent = _this.createTopicsMessage();
|
|
17623
17982
|
|
|
17624
17983
|
if (topicsMessageContent) {
|
|
@@ -17687,7 +18046,7 @@ var DataMessenger = function (_React$Component) {
|
|
|
17687
18046
|
}
|
|
17688
18047
|
|
|
17689
18048
|
// Required to make animation smooth
|
|
17690
|
-
setTimeout(function () {
|
|
18049
|
+
_this.scrollToBottomTimeout = setTimeout(function () {
|
|
17691
18050
|
if (_this.messengerScrollComponent) {
|
|
17692
18051
|
_this.messengerScrollComponent.scrollToBottom();
|
|
17693
18052
|
}
|
|
@@ -17772,7 +18131,7 @@ var DataMessenger = function (_React$Component) {
|
|
|
17772
18131
|
|
|
17773
18132
|
var drilldownResponse = filterDataForDrilldown(response, drilldownData);
|
|
17774
18133
|
|
|
17775
|
-
setTimeout(function () {
|
|
18134
|
+
_this.responseTimeout = setTimeout(function () {
|
|
17776
18135
|
_this.addResponseMessage({
|
|
17777
18136
|
response: drilldownResponse
|
|
17778
18137
|
});
|
|
@@ -17922,7 +18281,7 @@ var DataMessenger = function (_React$Component) {
|
|
|
17922
18281
|
onClick: function onClick() {
|
|
17923
18282
|
return _this.setState({ activePage: 'explore-queries' });
|
|
17924
18283
|
},
|
|
17925
|
-
'data-tip':
|
|
18284
|
+
'data-tip': lang.exploreQueries,
|
|
17926
18285
|
'data-for': 'react-autoql-header-tooltip',
|
|
17927
18286
|
'data-delay-show': 1000
|
|
17928
18287
|
},
|
|
@@ -18020,7 +18379,7 @@ var DataMessenger = function (_React$Component) {
|
|
|
18020
18379
|
return _this.setState({ isClearMessageConfirmVisible: true });
|
|
18021
18380
|
},
|
|
18022
18381
|
className: 'react-autoql-drawer-header-btn clear-all',
|
|
18023
|
-
'data-tip':
|
|
18382
|
+
'data-tip': lang.clearDataResponses,
|
|
18024
18383
|
'data-for': 'react-autoql-header-tooltip'
|
|
18025
18384
|
},
|
|
18026
18385
|
React.createElement(Icon, { type: 'trash' })
|
|
@@ -18033,7 +18392,7 @@ var DataMessenger = function (_React$Component) {
|
|
|
18033
18392
|
title = _this.props.title;
|
|
18034
18393
|
}
|
|
18035
18394
|
if (_this.state.activePage === 'explore-queries') {
|
|
18036
|
-
title =
|
|
18395
|
+
title = lang.exploreQueries;
|
|
18037
18396
|
}
|
|
18038
18397
|
if (_this.state.activePage === 'notifications') {
|
|
18039
18398
|
title = 'Notifications';
|
|
@@ -18055,7 +18414,7 @@ var DataMessenger = function (_React$Component) {
|
|
|
18055
18414
|
{
|
|
18056
18415
|
onClick: _this.props.onHandleClick,
|
|
18057
18416
|
className: 'react-autoql-drawer-header-btn close',
|
|
18058
|
-
'data-tip':
|
|
18417
|
+
'data-tip': lang.closeDataMessenger,
|
|
18059
18418
|
'data-for': 'react-autoql-header-tooltip'
|
|
18060
18419
|
},
|
|
18061
18420
|
React.createElement(Icon, { type: 'close' })
|
|
@@ -18089,7 +18448,7 @@ var DataMessenger = function (_React$Component) {
|
|
|
18089
18448
|
}
|
|
18090
18449
|
}, _this.onNoneOfTheseClick = function () {
|
|
18091
18450
|
_this.setState({ isChataThinking: true });
|
|
18092
|
-
setTimeout(function () {
|
|
18451
|
+
_this.feedbackTimeout = setTimeout(function () {
|
|
18093
18452
|
_this.setState({ isChataThinking: false });
|
|
18094
18453
|
_this.addResponseMessage({ content: 'Thank you for your feedback' });
|
|
18095
18454
|
}, 1000);
|
|
@@ -18163,7 +18522,7 @@ var DataMessenger = function (_React$Component) {
|
|
|
18163
18522
|
'div',
|
|
18164
18523
|
{ className: 'watermark' },
|
|
18165
18524
|
React.createElement(Icon, { type: 'react-autoql-bubbles-outlined' }),
|
|
18166
|
-
|
|
18525
|
+
lang.run
|
|
18167
18526
|
),
|
|
18168
18527
|
React.createElement(QueryInput, {
|
|
18169
18528
|
authentication: getAuthentication(getAuthentication(_this.props.authentication)),
|
|
@@ -18181,7 +18540,8 @@ var DataMessenger = function (_React$Component) {
|
|
|
18181
18540
|
placeholder: _this.props.inputPlaceholder,
|
|
18182
18541
|
onErrorCallback: _this.props.onErrorCallback,
|
|
18183
18542
|
hideInput: _this.props.hideInput,
|
|
18184
|
-
source: ['data_messenger']
|
|
18543
|
+
source: ['data_messenger'],
|
|
18544
|
+
AutoAEId: _this.props.AutoAEId
|
|
18185
18545
|
})
|
|
18186
18546
|
)
|
|
18187
18547
|
);
|
|
@@ -18245,7 +18605,7 @@ var DataMessenger = function (_React$Component) {
|
|
|
18245
18605
|
}, _this.animateQITextAndSubmit = function (text) {
|
|
18246
18606
|
if (typeof text === 'string' && _get(text, 'length')) {
|
|
18247
18607
|
var _loop = function _loop(i) {
|
|
18248
|
-
setTimeout(function () {
|
|
18608
|
+
_this.animateTextTimeout = setTimeout(function () {
|
|
18249
18609
|
_this.setState({
|
|
18250
18610
|
queryTipsInputValue: text.slice(0, i)
|
|
18251
18611
|
});
|
|
@@ -18261,7 +18621,7 @@ var DataMessenger = function (_React$Component) {
|
|
|
18261
18621
|
}
|
|
18262
18622
|
}, _this.runTopicInExporeQueries = function (topic) {
|
|
18263
18623
|
_this.setState({ activePage: 'explore-queries' });
|
|
18264
|
-
setTimeout(function () {
|
|
18624
|
+
_this.exploreQueriesTimeout = setTimeout(function () {
|
|
18265
18625
|
_this.animateQITextAndSubmit(topic);
|
|
18266
18626
|
}, 500);
|
|
18267
18627
|
}, _this.renderQueryTipsContent = function () {
|
|
@@ -18279,7 +18639,7 @@ var DataMessenger = function (_React$Component) {
|
|
|
18279
18639
|
onPageChange: _this.onQueryTipsPageChange,
|
|
18280
18640
|
executeQuery: function executeQuery(query) {
|
|
18281
18641
|
_this.setState({ activePage: 'data-messenger' });
|
|
18282
|
-
setTimeout(function () {
|
|
18642
|
+
_this.executeQueryTimeout = setTimeout(function () {
|
|
18283
18643
|
_this.onSuggestionClick({ query: query, source: 'explore_queries' });
|
|
18284
18644
|
}, 500);
|
|
18285
18645
|
}
|
|
@@ -18416,6 +18776,14 @@ var DataMessenger = function (_React$Component) {
|
|
|
18416
18776
|
if (_this.state.hasError) {
|
|
18417
18777
|
return null;
|
|
18418
18778
|
}
|
|
18779
|
+
var chartToolTipElement = document.getElementById('chart-element-tooltip');
|
|
18780
|
+
var dataMessenger = document.getElementsByClassName('drawer-content-wrapper')[0];
|
|
18781
|
+
|
|
18782
|
+
if (chartToolTipElement && dataMessenger && (_this.props.placement !== 'top' || _this.props.placement !== 'bottom')) {
|
|
18783
|
+
if (_get(dataMessenger, 'style.width')) {
|
|
18784
|
+
chartToolTipElement.style.maxWidth = _get(dataMessenger, 'style.width').match(/\d+/g)[0] - 75 + 'px';
|
|
18785
|
+
}
|
|
18786
|
+
}
|
|
18419
18787
|
|
|
18420
18788
|
return React.createElement(
|
|
18421
18789
|
ErrorBoundary,
|
|
@@ -18424,6 +18792,7 @@ var DataMessenger = function (_React$Component) {
|
|
|
18424
18792
|
Fragment,
|
|
18425
18793
|
null,
|
|
18426
18794
|
_this.renderTooltips(),
|
|
18795
|
+
setLanguage(),
|
|
18427
18796
|
React.createElement(
|
|
18428
18797
|
Drawer,
|
|
18429
18798
|
{
|
|
@@ -18442,7 +18811,7 @@ var DataMessenger = function (_React$Component) {
|
|
|
18442
18811
|
keyboard: false
|
|
18443
18812
|
},
|
|
18444
18813
|
_this.props.resizable && _this.renderResizeHandle(),
|
|
18445
|
-
(_this.props.enableExploreQueriesTab || _this.props.enableNotificationsTab) && _this.renderTabs(),
|
|
18814
|
+
(_this.props.enableExploreQueriesTab || _this.props.enableNotificationsTab) && !_get(_this.props.authentication, 'isQandA') && _this.renderTabs(),
|
|
18446
18815
|
React.createElement(
|
|
18447
18816
|
'div',
|
|
18448
18817
|
{ className: 'react-autoql-drawer-content-container' },
|
|
@@ -18466,6 +18835,28 @@ var DataMessenger = function (_React$Component) {
|
|
|
18466
18835
|
try {
|
|
18467
18836
|
document.removeEventListener('keydown', this.escFunction, false);
|
|
18468
18837
|
window.removeEventListener('resize', this.onWindowResize);
|
|
18838
|
+
|
|
18839
|
+
if (this.scrollToBottomTimeout) {
|
|
18840
|
+
clearTimeout(this.scrollToBottomTimeout);
|
|
18841
|
+
}
|
|
18842
|
+
if (this.windowResizeTimer) {
|
|
18843
|
+
clearTimeout(this.windowResizeTimer);
|
|
18844
|
+
}
|
|
18845
|
+
if (this.responseTimeout) {
|
|
18846
|
+
clearTimeout(this.responseTimeout);
|
|
18847
|
+
}
|
|
18848
|
+
if (this.feedbackTimeout) {
|
|
18849
|
+
clearTimeout(this.feedbackTimeout);
|
|
18850
|
+
}
|
|
18851
|
+
if (this.animateTextTimeout) {
|
|
18852
|
+
clearTimeout(this.animateTextTimeout);
|
|
18853
|
+
}
|
|
18854
|
+
if (this.exploreQueriesTimeout) {
|
|
18855
|
+
clearTimeout(this.exploreQueriesTimeout);
|
|
18856
|
+
}
|
|
18857
|
+
if (this.executeQueryTimeout) {
|
|
18858
|
+
clearTimeout(this.executeQueryTimeout);
|
|
18859
|
+
}
|
|
18469
18860
|
} catch (error) {
|
|
18470
18861
|
console.error(error);
|
|
18471
18862
|
this.setState({ hasError: true });
|
|
@@ -18578,7 +18969,8 @@ var DashboardTile = function (_React$Component) {
|
|
|
18578
18969
|
isSecondQueryInputOpen: false,
|
|
18579
18970
|
currentSource: 'user',
|
|
18580
18971
|
supportedDisplayTypes: getSupportedDisplayTypes(_this.props.queryResponse) || [],
|
|
18581
|
-
secondSupportedDisplayTypes: getSupportedDisplayTypes(_this.props.secondQueryResponse) || []
|
|
18972
|
+
secondSupportedDisplayTypes: getSupportedDisplayTypes(_this.props.secondQueryResponse) || [],
|
|
18973
|
+
isUnExecuted: false
|
|
18582
18974
|
}, _this.getFilteredProps = function (props) {
|
|
18583
18975
|
return _extends({}, props, {
|
|
18584
18976
|
children: undefined
|
|
@@ -18758,6 +19150,8 @@ var DashboardTile = function (_React$Component) {
|
|
|
18758
19150
|
secondskipQueryValidation = _ref7.secondskipQueryValidation,
|
|
18759
19151
|
source = _ref7.source;
|
|
18760
19152
|
|
|
19153
|
+
_this.props.onProcessTileCallback(_this.props.tile.i);
|
|
19154
|
+
|
|
18761
19155
|
var q1 = query || _this.props.tile.selectedSuggestion || _this.state.query;
|
|
18762
19156
|
var q2 = secondQuery || _this.props.tile.secondSelectedSuggestion || _this.state.secondQuery;
|
|
18763
19157
|
|
|
@@ -19056,7 +19450,7 @@ var DashboardTile = function (_React$Component) {
|
|
|
19056
19450
|
if (isExecuting) {
|
|
19057
19451
|
// This should always take priority over the other conditions below
|
|
19058
19452
|
content = React.createElement(LoadingDots, null);
|
|
19059
|
-
} else if (!_this.props.isEditing && isExecuted) {
|
|
19453
|
+
} else if (!_this.props.isEditing && isExecuted && !_this.props.isUnExecuted) {
|
|
19060
19454
|
content = React.createElement(
|
|
19061
19455
|
'div',
|
|
19062
19456
|
{ className: 'dashboard-tile-placeholder-text' },
|
|
@@ -19066,7 +19460,7 @@ var DashboardTile = function (_React$Component) {
|
|
|
19066
19460
|
'No query was supplied for this tile.'
|
|
19067
19461
|
)
|
|
19068
19462
|
);
|
|
19069
|
-
} else if (_this.props.isEditing && !_get(_this.state.query, 'trim()')) {
|
|
19463
|
+
} else if (_this.props.isEditing && (!_get(_this.state.query, 'trim()') || _this.props.isUnExecuted)) {
|
|
19070
19464
|
content = React.createElement(
|
|
19071
19465
|
'div',
|
|
19072
19466
|
{ className: 'dashboard-tile-placeholder-text' },
|
|
@@ -19291,7 +19685,7 @@ var DashboardTile = function (_React$Component) {
|
|
|
19291
19685
|
return React.createElement(
|
|
19292
19686
|
'div',
|
|
19293
19687
|
{ className: 'loading-container-centered' },
|
|
19294
|
-
!queryOutputProps.queryResponse || isExecuting ? _this.renderContentPlaceholder({ isExecuting: isExecuting, isExecuted: isExecuted }) : React.createElement(
|
|
19688
|
+
!queryOutputProps.queryResponse || isExecuting || _this.props.isUnExecuted ? _this.renderContentPlaceholder({ isExecuting: isExecuting, isExecuted: isExecuted }) : React.createElement(
|
|
19295
19689
|
Fragment,
|
|
19296
19690
|
null,
|
|
19297
19691
|
_this.getIsSuggestionResponse(queryOutputProps.queryResponse) && _this.renderSuggestionMessage(customMessage),
|
|
@@ -19312,7 +19706,8 @@ var DashboardTile = function (_React$Component) {
|
|
|
19312
19706
|
_this.forceUpdate();
|
|
19313
19707
|
}, 0);
|
|
19314
19708
|
}
|
|
19315
|
-
}, queryOutputProps))
|
|
19709
|
+
}, queryOutputProps)),
|
|
19710
|
+
_this.renderDataLimitWarning()
|
|
19316
19711
|
),
|
|
19317
19712
|
_this.props.isEditing && React.createElement(
|
|
19318
19713
|
'div',
|
|
@@ -19469,6 +19864,18 @@ var DashboardTile = function (_React$Component) {
|
|
|
19469
19864
|
React.createElement('div', { className: 'react-autoql-dashboard-tile-drag-handle left' }),
|
|
19470
19865
|
React.createElement('div', { className: 'react-autoql-dashboard-tile-drag-handle right' })
|
|
19471
19866
|
);
|
|
19867
|
+
}, _this.renderDataLimitWarning = function () {
|
|
19868
|
+
var numRows = _get(_this.props, 'queryResponse.data.data.rows.length');
|
|
19869
|
+
var maxRowLimit = _get(_this.props, 'queryResponse.data.data.row_limit');
|
|
19870
|
+
|
|
19871
|
+
if (maxRowLimit && numRows === maxRowLimit) {
|
|
19872
|
+
return React.createElement(Icon, {
|
|
19873
|
+
type: 'warning',
|
|
19874
|
+
className: 'dashboard-data-limit-warning-icon',
|
|
19875
|
+
'data-tip': 'The display limit of ' + numRows + ' rows has been reached. Try querying a smaller time-frame to ensure all your data is displayed.',
|
|
19876
|
+
'data-for': 'dashboard-data-limit-warning-tooltip'
|
|
19877
|
+
});
|
|
19878
|
+
}
|
|
19472
19879
|
}, _this.render = function () {
|
|
19473
19880
|
var _this$props = _this.props,
|
|
19474
19881
|
onMouseDown = _this$props.onMouseDown,
|
|
@@ -19483,6 +19890,13 @@ var DashboardTile = function (_React$Component) {
|
|
|
19483
19890
|
onTouchEnd: onTouchEnd
|
|
19484
19891
|
};
|
|
19485
19892
|
|
|
19893
|
+
var dashboardTileToolTipElement = document.getElementById('dashboard-data-limit-warning-tooltip');
|
|
19894
|
+
if (dashboardTileToolTipElement) {
|
|
19895
|
+
if (_get(_this.props, 'style.width')) {
|
|
19896
|
+
dashboardTileToolTipElement.style.maxWidth = _get(_this.props, 'style.width').match(/\d+/g)[0] - 75 + 'px';
|
|
19897
|
+
}
|
|
19898
|
+
}
|
|
19899
|
+
|
|
19486
19900
|
return React.createElement(
|
|
19487
19901
|
ErrorBoundary,
|
|
19488
19902
|
null,
|
|
@@ -19531,7 +19945,9 @@ DashboardTile.propTypes = {
|
|
|
19531
19945
|
notExecutedText: PropTypes.string,
|
|
19532
19946
|
onErrorCallback: PropTypes.func,
|
|
19533
19947
|
onSuccessCallback: PropTypes.func,
|
|
19534
|
-
autoChartAggregations: PropTypes.bool
|
|
19948
|
+
autoChartAggregations: PropTypes.bool,
|
|
19949
|
+
isUnExecuted: PropTypes.bool,
|
|
19950
|
+
onProcessTileCallback: PropTypes.func
|
|
19535
19951
|
};
|
|
19536
19952
|
DashboardTile.defaultProps = {
|
|
19537
19953
|
// Global
|
|
@@ -19547,8 +19963,10 @@ DashboardTile.defaultProps = {
|
|
|
19547
19963
|
selectedSuggestion: undefined,
|
|
19548
19964
|
notExecutedText: 'Hit "Execute" to run this dashboard',
|
|
19549
19965
|
autoChartAggregations: true,
|
|
19966
|
+
isUnExecuted: false,
|
|
19550
19967
|
onErrorCallback: function onErrorCallback() {},
|
|
19551
|
-
onSuccessCallback: function onSuccessCallback() {}
|
|
19968
|
+
onSuccessCallback: function onSuccessCallback() {},
|
|
19969
|
+
onProcessTileCallback: function onProcessTileCallback() {}
|
|
19552
19970
|
};
|
|
19553
19971
|
|
|
19554
19972
|
var ReactGridLayout = WidthProvider(RGL);
|
|
@@ -19563,6 +19981,16 @@ var executeDashboard = function executeDashboard(ref) {
|
|
|
19563
19981
|
}
|
|
19564
19982
|
};
|
|
19565
19983
|
|
|
19984
|
+
var unExecuteDashboard = function unExecuteDashboard(ref) {
|
|
19985
|
+
if (ref) {
|
|
19986
|
+
try {
|
|
19987
|
+
ref.unExecuteDashboard();
|
|
19988
|
+
} catch (error) {
|
|
19989
|
+
console.error(error);
|
|
19990
|
+
}
|
|
19991
|
+
}
|
|
19992
|
+
};
|
|
19993
|
+
|
|
19566
19994
|
var Dashboard = function (_React$Component) {
|
|
19567
19995
|
inherits(Dashboard, _React$Component);
|
|
19568
19996
|
|
|
@@ -19579,7 +20007,9 @@ var Dashboard = function (_React$Component) {
|
|
|
19579
20007
|
|
|
19580
20008
|
return _ret = (_temp = (_this = possibleConstructorReturn(this, (_ref = Dashboard.__proto__ || Object.getPrototypeOf(Dashboard)).call.apply(_ref, [this].concat(args))), _this), _this.tileRefs = {}, _this.state = {
|
|
19581
20009
|
isDragging: false,
|
|
19582
|
-
previousTileState: _this.props.tiles
|
|
20010
|
+
previousTileState: _this.props.tiles,
|
|
20011
|
+
/** keep a separate un-executed value for each tile */
|
|
20012
|
+
isTileUnExecuted: {}
|
|
19583
20013
|
}, _this.componentDidMount = function () {
|
|
19584
20014
|
if (_this.props.executeOnMount) {
|
|
19585
20015
|
_this.executeDashboard();
|
|
@@ -19625,6 +20055,8 @@ var Dashboard = function (_React$Component) {
|
|
|
19625
20055
|
previousTileState: tiles
|
|
19626
20056
|
});
|
|
19627
20057
|
}, _this.executeDashboard = function () {
|
|
20058
|
+
_this.setState({ isTileUnExecuted: {} });
|
|
20059
|
+
|
|
19628
20060
|
try {
|
|
19629
20061
|
for (var dashboardTile in _this.tileRefs) {
|
|
19630
20062
|
if (_this.tileRefs[dashboardTile]) {
|
|
@@ -19634,6 +20066,14 @@ var Dashboard = function (_React$Component) {
|
|
|
19634
20066
|
} catch (error) {
|
|
19635
20067
|
console.error(error);
|
|
19636
20068
|
}
|
|
20069
|
+
}, _this.unExecuteDashboard = function () {
|
|
20070
|
+
var newUnExecutedObj = {};
|
|
20071
|
+
|
|
20072
|
+
_this.props.tiles.forEach(function (tile) {
|
|
20073
|
+
newUnExecutedObj[tile.key] = true;
|
|
20074
|
+
});
|
|
20075
|
+
|
|
20076
|
+
_this.setState({ isTileUnExecuted: newUnExecutedObj });
|
|
19637
20077
|
}, _this.getChangeDetection = function (oldTiles, newTiles, ignoreInputs) {
|
|
19638
20078
|
return !_isEqual(_this.getChangeDetectionTileStructure(oldTiles, ignoreInputs), _this.getChangeDetectionTileStructure(newTiles, ignoreInputs));
|
|
19639
20079
|
}, _this.getChangeDetectionTileStructure = function (tiles, ignoreInputs) {
|
|
@@ -19842,6 +20282,23 @@ var Dashboard = function (_React$Component) {
|
|
|
19842
20282
|
_this.optionsToolbarRef.setState({ activeMenu: 'other-problem' });
|
|
19843
20283
|
}
|
|
19844
20284
|
}, _this.renderDrilldownTable = function () {
|
|
20285
|
+
var queryOutComponent = function queryOutComponent() {
|
|
20286
|
+
return React.createElement(QueryOutput, {
|
|
20287
|
+
authentication: getAuthentication(_this.props.authentication),
|
|
20288
|
+
autoQLConfig: getAutoQLConfig$1(_this.props.autoQLConfig),
|
|
20289
|
+
themeConfig: getThemeConfig(_this.props.themeConfig),
|
|
20290
|
+
dataFormatting: getDataFormatting(_this.props.dataFormatting),
|
|
20291
|
+
queryResponse: _this.state.activeDrilldownResponse,
|
|
20292
|
+
renderTooltips: false,
|
|
20293
|
+
autoChartAggregations: _this.props.autoChartAggregations,
|
|
20294
|
+
backgroundColor: document.documentElement.style.getPropertyValue('--react-autoql-background-color-primary'),
|
|
20295
|
+
reportProblemCallback: _this.reportProblemCallback,
|
|
20296
|
+
ref: function ref(_ref3) {
|
|
20297
|
+
return _this.responseRef = _ref3;
|
|
20298
|
+
},
|
|
20299
|
+
optionsToolbarRef: _this.optionsToolbarRef
|
|
20300
|
+
});
|
|
20301
|
+
};
|
|
19845
20302
|
return React.createElement(
|
|
19846
20303
|
'div',
|
|
19847
20304
|
{ className: 'react-autoql-dashboard-drilldown-table' },
|
|
@@ -19862,22 +20319,26 @@ var Dashboard = function (_React$Component) {
|
|
|
19862
20319
|
autoChartAggregations: _this.props.autoChartAggregations,
|
|
19863
20320
|
backgroundColor: document.documentElement.style.getPropertyValue('--react-autoql-background-color-primary'),
|
|
19864
20321
|
reportProblemCallback: _this.reportProblemCallback,
|
|
19865
|
-
ref: function ref(
|
|
19866
|
-
return _this.responseRef =
|
|
20322
|
+
ref: function ref(_ref4) {
|
|
20323
|
+
return _this.responseRef = _ref4;
|
|
19867
20324
|
},
|
|
19868
20325
|
optionsToolbarRef: _this.optionsToolbarRef
|
|
19869
20326
|
}),
|
|
19870
|
-
React.createElement(
|
|
19871
|
-
|
|
19872
|
-
|
|
19873
|
-
|
|
19874
|
-
|
|
19875
|
-
|
|
19876
|
-
|
|
19877
|
-
|
|
19878
|
-
|
|
19879
|
-
|
|
19880
|
-
|
|
20327
|
+
React.createElement(
|
|
20328
|
+
'div',
|
|
20329
|
+
{ style: { display: 'none' } },
|
|
20330
|
+
React.createElement(Input$1, {
|
|
20331
|
+
authentication: getAuthentication(_this.props.authentication),
|
|
20332
|
+
autoQLConfig: getAutoQLConfig$1(_this.props.autoQLConfig),
|
|
20333
|
+
themeConfig: getThemeConfig(_this.props.themeConfig),
|
|
20334
|
+
onErrorCallback: _this.props.onErrorCallback,
|
|
20335
|
+
onSuccessAlert: _this.props.onSuccessCallback,
|
|
20336
|
+
ref: function ref(r) {
|
|
20337
|
+
return _this.optionsToolbarRef = r;
|
|
20338
|
+
},
|
|
20339
|
+
responseRef: queryOutComponent()
|
|
20340
|
+
})
|
|
20341
|
+
)
|
|
19881
20342
|
)
|
|
19882
20343
|
);
|
|
19883
20344
|
}, _this.renderChartCollapseBtn = function (placement) {
|
|
@@ -20061,8 +20522,8 @@ var Dashboard = function (_React$Component) {
|
|
|
20061
20522
|
tileLayout.map(function (tile) {
|
|
20062
20523
|
return React.createElement(DashboardTile, {
|
|
20063
20524
|
className: 'react-autoql-dashboard-tile' + (_this.state.isDragging ? ' dragging' : '') + ' ' + tile.i,
|
|
20064
|
-
ref: function ref(
|
|
20065
|
-
return _this.tileRefs[tile.key] =
|
|
20525
|
+
ref: function ref(_ref5) {
|
|
20526
|
+
return _this.tileRefs[tile.key] = _ref5;
|
|
20066
20527
|
},
|
|
20067
20528
|
key: tile.key,
|
|
20068
20529
|
authentication: getAuthentication(_this.props.authentication),
|
|
@@ -20084,7 +20545,15 @@ var Dashboard = function (_React$Component) {
|
|
|
20084
20545
|
enableDynamicCharting: _this.props.enableDynamicCharting,
|
|
20085
20546
|
onErrorCallback: _this.props.onErrorCallback,
|
|
20086
20547
|
onSuccessCallback: _this.props.onSuccessCallback,
|
|
20087
|
-
autoChartAggregations: _this.props.autoChartAggregations
|
|
20548
|
+
autoChartAggregations: _this.props.autoChartAggregations,
|
|
20549
|
+
isUnExecuted: _this.state.isTileUnExecuted[tile.key],
|
|
20550
|
+
onProcessTileCallback: function onProcessTileCallback(tileKey) {
|
|
20551
|
+
_this.setState(function (prevState) {
|
|
20552
|
+
return {
|
|
20553
|
+
isTileUnExecuted: _extends({}, prevState.isTileUnExecuted, defineProperty({}, tileKey, undefined))
|
|
20554
|
+
};
|
|
20555
|
+
});
|
|
20556
|
+
}
|
|
20088
20557
|
});
|
|
20089
20558
|
})
|
|
20090
20559
|
);
|
|
@@ -20098,8 +20567,8 @@ var Dashboard = function (_React$Component) {
|
|
|
20098
20567
|
React.createElement(
|
|
20099
20568
|
'div',
|
|
20100
20569
|
{
|
|
20101
|
-
ref: function ref(
|
|
20102
|
-
return _this.ref =
|
|
20570
|
+
ref: function ref(_ref6) {
|
|
20571
|
+
return _this.ref = _ref6;
|
|
20103
20572
|
},
|
|
20104
20573
|
className: 'react-autoql-dashboard-container' + (_this.props.isEditing ? ' edit-mode' : ''),
|
|
20105
20574
|
'data-test': 'react-autoql-dashboard'
|
|
@@ -20113,6 +20582,13 @@ var Dashboard = function (_React$Component) {
|
|
|
20113
20582
|
effect: 'solid',
|
|
20114
20583
|
delayShow: 500,
|
|
20115
20584
|
html: true
|
|
20585
|
+
}),
|
|
20586
|
+
React.createElement(ReactTooltip, {
|
|
20587
|
+
place: 'left',
|
|
20588
|
+
className: 'react-autoql-chart-tooltip',
|
|
20589
|
+
id: 'dashboard-data-limit-warning-tooltip',
|
|
20590
|
+
effect: 'solid',
|
|
20591
|
+
html: true
|
|
20116
20592
|
})
|
|
20117
20593
|
)
|
|
20118
20594
|
);
|
|
@@ -20262,4 +20738,4 @@ SpeechToTextBtn.defaultProps = {
|
|
|
20262
20738
|
themeConfig: themeConfigDefault
|
|
20263
20739
|
};
|
|
20264
20740
|
|
|
20265
|
-
export { Dashboard, DashboardTile, DataAlertModal$1 as DataAlertModal, DataAlerts, DataMessenger, ExpressionBuilder, ExpressionBuilderSimple, Icon, LoadingDots, NotificationFeed, NotificationIcon, NotificationItem, QueryInput, QueryOutput, ScheduleBuilder, SpeechToTextBtn, executeDashboard, fetchQueryTips, getDefaultDisplayType, getSupportedDisplayTypes, isDisplayTypeValid };
|
|
20741
|
+
export { Dashboard, DashboardTile, DataAlertModal$1 as DataAlertModal, DataAlerts, DataMessenger, ExpressionBuilder, ExpressionBuilderSimple, Icon, LoadingDots, NotificationFeed, NotificationIcon, NotificationItem, QueryInput, QueryOutput, ScheduleBuilder, SpeechToTextBtn, executeDashboard, fetchQueryTips, getDefaultDisplayType, getSupportedDisplayTypes, isDisplayTypeValid, unExecuteDashboard };
|