@kepler.gl/reducers 3.3.0-alpha.15 → 3.3.0-alpha.17

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.
Files changed (47) hide show
  1. package/dist/cjs/column-edit-reconcile.js +100 -0
  2. package/dist/cjs/column-edit-updaters.spec.js +840 -0
  3. package/dist/cjs/combined-updaters.js +166 -8
  4. package/dist/cjs/composers.js +4 -5
  5. package/dist/cjs/dataset-ops-updaters.js +375 -0
  6. package/dist/cjs/dataset-ops-updaters.spec.js +382 -0
  7. package/dist/cjs/export-utils.js +118 -46
  8. package/dist/cjs/interaction-utils.js +166 -6
  9. package/dist/cjs/layer-utils.js +135 -9
  10. package/dist/cjs/ui-state-updaters.js +134 -51
  11. package/dist/cjs/ui-state.js +2 -2
  12. package/dist/cjs/vis-state-merger-text-label.spec.js +75 -0
  13. package/dist/cjs/vis-state-merger.js +99 -25
  14. package/dist/cjs/vis-state-selectors.js +5 -4
  15. package/dist/cjs/vis-state-updaters.js +1077 -256
  16. package/dist/cjs/vis-state.js +2 -2
  17. package/dist/column-edit-reconcile.d.ts +4 -0
  18. package/dist/column-edit-updaters.spec.d.ts +1 -0
  19. package/dist/combined-updaters.d.ts +21 -1
  20. package/dist/composers.d.ts +3 -0
  21. package/dist/dataset-ops-updaters.d.ts +21 -0
  22. package/dist/dataset-ops-updaters.spec.d.ts +1 -0
  23. package/dist/esm/column-edit-reconcile.js +95 -0
  24. package/dist/esm/column-edit-updaters.spec.js +839 -0
  25. package/dist/esm/combined-updaters.js +166 -8
  26. package/dist/esm/composers.js +3 -2
  27. package/dist/esm/dataset-ops-updaters.js +357 -0
  28. package/dist/esm/dataset-ops-updaters.spec.js +381 -0
  29. package/dist/esm/export-utils.js +117 -45
  30. package/dist/esm/interaction-utils.js +159 -3
  31. package/dist/esm/layer-utils.js +133 -9
  32. package/dist/esm/ui-state-updaters.js +133 -50
  33. package/dist/esm/ui-state.js +2 -2
  34. package/dist/esm/vis-state-merger-text-label.spec.js +74 -0
  35. package/dist/esm/vis-state-merger.js +99 -26
  36. package/dist/esm/vis-state-selectors.js +5 -4
  37. package/dist/esm/vis-state-updaters.js +1020 -263
  38. package/dist/esm/vis-state.js +2 -2
  39. package/dist/export-utils.d.ts +2 -2
  40. package/dist/interaction-utils.d.ts +25 -2
  41. package/dist/layer-utils.d.ts +17 -0
  42. package/dist/ui-state-updaters.d.ts +30 -0
  43. package/dist/vis-state-merger-text-label.spec.d.ts +1 -0
  44. package/dist/vis-state-merger.d.ts +10 -2
  45. package/dist/vis-state-updaters.d.ts +61 -15
  46. package/dist/vis-state.d.ts +20 -0
  47. package/package.json +17 -17
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.remapChartsForDataset = remapChartsForDataset;
8
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _constants = require("@kepler.gl/constants");
11
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
12
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } // SPDX-License-Identifier: MIT
13
+ // Copyright contributors to the kepler.gl project
14
+ var BIN_AGGREGATIONS = new Set(['uniqueBin', 'numericBin', 'timeBin']);
15
+ var TIME_FIELD_TYPES = new Set([_constants.ALL_FIELD_TYPES.timestamp, _constants.ALL_FIELD_TYPES.date]);
16
+ function binAggregationForType(type) {
17
+ if (TIME_FIELD_TYPES.has(type)) {
18
+ return 'timeBin';
19
+ }
20
+ return type === _constants.ALL_FIELD_TYPES.real ? 'numericBin' : 'uniqueBin';
21
+ }
22
+ function followFieldName(name, renames, alive) {
23
+ var _renames$name;
24
+ if (!name) {
25
+ return null;
26
+ }
27
+ var next = (_renames$name = renames[name]) !== null && _renames$name !== void 0 ? _renames$name : name;
28
+ return alive.has(next) ? next : null;
29
+ }
30
+ function followAxis(axis, renames, alive) {
31
+ var _axis$field;
32
+ if (!(axis !== null && axis !== void 0 && (_axis$field = axis.field) !== null && _axis$field !== void 0 && _axis$field.name)) {
33
+ return axis;
34
+ }
35
+ var name = followFieldName(axis.field.name, renames, alive);
36
+ if (!name) {
37
+ return _objectSpread(_objectSpread({}, axis), {}, {
38
+ field: null,
39
+ title: null
40
+ });
41
+ }
42
+ var field = alive.get(name);
43
+ var typeChanged = (field === null || field === void 0 ? void 0 : field.type) !== axis.field.type;
44
+ if (name === axis.field.name && !typeChanged) {
45
+ return axis;
46
+ }
47
+ var aggregation = typeChanged && axis.aggregation && BIN_AGGREGATIONS.has(axis.aggregation) ? binAggregationForType((field === null || field === void 0 ? void 0 : field.type) || '') : axis.aggregation;
48
+ var clearInterval = typeChanged && aggregation !== 'timeBin' && axis.interval !== undefined;
49
+ return _objectSpread(_objectSpread({}, axis), {}, {
50
+ field: _objectSpread(_objectSpread({}, axis.field), {}, {
51
+ name: name,
52
+ type: field === null || field === void 0 ? void 0 : field.type
53
+ }),
54
+ title: axis.title === axis.field.name ? name : axis.title,
55
+ aggregation: aggregation
56
+ }, clearInterval ? {
57
+ interval: undefined
58
+ } : {});
59
+ }
60
+ function isLayerChart(chart) {
61
+ return chart.type === 'layerChart';
62
+ }
63
+ function remapChartsForDataset(charts, dataId, renames, alive) {
64
+ return (charts || []).map(function (chart) {
65
+ var _chart$crossFilter, _chart$chartDisplay;
66
+ if (chart.dataId !== dataId) {
67
+ return chart;
68
+ }
69
+ var source = chart;
70
+ var next = _objectSpread(_objectSpread({}, chart), {}, {
71
+ xAxis: followAxis(source.xAxis, renames, alive),
72
+ yAxis: followAxis(source.yAxis, renames, alive),
73
+ axis: followAxis(source.axis, renames, alive),
74
+ groupBy: followAxis(source.groupBy, renames, alive),
75
+ value: followAxis(source.value, renames, alive)
76
+ });
77
+ if ((_chart$crossFilter = chart.crossFilter) !== null && _chart$crossFilter !== void 0 && _chart$crossFilter.fieldNames) {
78
+ var fieldNames = {};
79
+ Object.entries(chart.crossFilter.fieldNames).forEach(function (_ref) {
80
+ var _ref2 = (0, _slicedToArray2["default"])(_ref, 2),
81
+ key = _ref2[0],
82
+ value = _ref2[1];
83
+ var name = followFieldName(value, renames, alive);
84
+ if (name) {
85
+ fieldNames[key] = name;
86
+ }
87
+ });
88
+ next.crossFilter = _objectSpread(_objectSpread({}, chart.crossFilter), {}, {
89
+ fieldNames: fieldNames
90
+ });
91
+ }
92
+ if (isLayerChart(chart) && (_chart$chartDisplay = chart.chartDisplay) !== null && _chart$chartDisplay !== void 0 && _chart$chartDisplay.idField) {
93
+ next.chartDisplay = _objectSpread(_objectSpread({}, chart.chartDisplay), {}, {
94
+ idField: followFieldName(chart.chartDisplay.idField, renames, alive)
95
+ });
96
+ }
97
+ return next;
98
+ });
99
+ }
100
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29uc3RhbnRzIiwicmVxdWlyZSIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiQklOX0FHR1JFR0FUSU9OUyIsIlNldCIsIlRJTUVfRklFTERfVFlQRVMiLCJBTExfRklFTERfVFlQRVMiLCJ0aW1lc3RhbXAiLCJkYXRlIiwiYmluQWdncmVnYXRpb25Gb3JUeXBlIiwidHlwZSIsImhhcyIsInJlYWwiLCJmb2xsb3dGaWVsZE5hbWUiLCJuYW1lIiwicmVuYW1lcyIsImFsaXZlIiwiX3JlbmFtZXMkbmFtZSIsIm5leHQiLCJmb2xsb3dBeGlzIiwiYXhpcyIsIl9heGlzJGZpZWxkIiwiZmllbGQiLCJ0aXRsZSIsImdldCIsInR5cGVDaGFuZ2VkIiwiYWdncmVnYXRpb24iLCJjbGVhckludGVydmFsIiwiaW50ZXJ2YWwiLCJ1bmRlZmluZWQiLCJpc0xheWVyQ2hhcnQiLCJjaGFydCIsInJlbWFwQ2hhcnRzRm9yRGF0YXNldCIsImNoYXJ0cyIsImRhdGFJZCIsIm1hcCIsIl9jaGFydCRjcm9zc0ZpbHRlciIsIl9jaGFydCRjaGFydERpc3BsYXkiLCJzb3VyY2UiLCJ4QXhpcyIsInlBeGlzIiwiZ3JvdXBCeSIsInZhbHVlIiwiY3Jvc3NGaWx0ZXIiLCJmaWVsZE5hbWVzIiwiZW50cmllcyIsIl9yZWYiLCJfcmVmMiIsIl9zbGljZWRUb0FycmF5MiIsImtleSIsImNoYXJ0RGlzcGxheSIsImlkRmllbGQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29sdW1uLWVkaXQtcmVjb25jaWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7Q2hhcnRDb25maWcsIExheWVyQ2hhcnRDb25maWd9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtBTExfRklFTERfVFlQRVN9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcblxudHlwZSBOYW1lZEF4aXMgPSB7XG4gIGZpZWxkPzoge25hbWU6IHN0cmluZzsgdHlwZT86IHN0cmluZ30gfCBudWxsO1xuICB0aXRsZT86IHN0cmluZyB8IG51bGw7XG4gIGFnZ3JlZ2F0aW9uPzogc3RyaW5nIHwgbnVsbDtcbiAgaW50ZXJ2YWw/OiBzdHJpbmcgfCBudWxsO1xufTtcblxuY29uc3QgQklOX0FHR1JFR0FUSU9OUyA9IG5ldyBTZXQoWyd1bmlxdWVCaW4nLCAnbnVtZXJpY0JpbicsICd0aW1lQmluJ10pO1xuY29uc3QgVElNRV9GSUVMRF9UWVBFUyA9IG5ldyBTZXQ8c3RyaW5nPihbQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcCwgQUxMX0ZJRUxEX1RZUEVTLmRhdGVdKTtcblxuZnVuY3Rpb24gYmluQWdncmVnYXRpb25Gb3JUeXBlKHR5cGU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChUSU1FX0ZJRUxEX1RZUEVTLmhhcyh0eXBlKSkge1xuICAgIHJldHVybiAndGltZUJpbic7XG4gIH1cbiAgcmV0dXJuIHR5cGUgPT09IEFMTF9GSUVMRF9UWVBFUy5yZWFsID8gJ251bWVyaWNCaW4nIDogJ3VuaXF1ZUJpbic7XG59XG5cbmZ1bmN0aW9uIGZvbGxvd0ZpZWxkTmFtZShcbiAgbmFtZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgcmVuYW1lczogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgYWxpdmU6IFJlYWRvbmx5TWFwPHN0cmluZywge3R5cGU6IHN0cmluZ30+XG4pOiBzdHJpbmcgfCBudWxsIHtcbiAgaWYgKCFuYW1lKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgbmV4dCA9IHJlbmFtZXNbbmFtZV0gPz8gbmFtZTtcbiAgcmV0dXJuIGFsaXZlLmhhcyhuZXh0KSA/IG5leHQgOiBudWxsO1xufVxuXG5mdW5jdGlvbiBmb2xsb3dBeGlzPFQgZXh0ZW5kcyBOYW1lZEF4aXM+KFxuICBheGlzOiBUIHwgdW5kZWZpbmVkLFxuICByZW5hbWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICBhbGl2ZTogUmVhZG9ubHlNYXA8c3RyaW5nLCB7dHlwZTogc3RyaW5nfT5cbik6IFQgfCB1bmRlZmluZWQge1xuICBpZiAoIWF4aXM/LmZpZWxkPy5uYW1lKSB7XG4gICAgcmV0dXJuIGF4aXM7XG4gIH1cbiAgY29uc3QgbmFtZSA9IGZvbGxvd0ZpZWxkTmFtZShheGlzLmZpZWxkLm5hbWUsIHJlbmFtZXMsIGFsaXZlKTtcbiAgaWYgKCFuYW1lKSB7XG4gICAgcmV0dXJuIHsuLi5heGlzLCBmaWVsZDogbnVsbCwgdGl0bGU6IG51bGx9O1xuICB9XG4gIGNvbnN0IGZpZWxkID0gYWxpdmUuZ2V0KG5hbWUpO1xuICBjb25zdCB0eXBlQ2hhbmdlZCA9IGZpZWxkPy50eXBlICE9PSBheGlzLmZpZWxkLnR5cGU7XG4gIGlmIChuYW1lID09PSBheGlzLmZpZWxkLm5hbWUgJiYgIXR5cGVDaGFuZ2VkKSB7XG4gICAgcmV0dXJuIGF4aXM7XG4gIH1cbiAgY29uc3QgYWdncmVnYXRpb24gPVxuICAgIHR5cGVDaGFuZ2VkICYmIGF4aXMuYWdncmVnYXRpb24gJiYgQklOX0FHR1JFR0FUSU9OUy5oYXMoYXhpcy5hZ2dyZWdhdGlvbilcbiAgICAgID8gYmluQWdncmVnYXRpb25Gb3JUeXBlKGZpZWxkPy50eXBlIHx8ICcnKVxuICAgICAgOiBheGlzLmFnZ3JlZ2F0aW9uO1xuICBjb25zdCBjbGVhckludGVydmFsID0gdHlwZUNoYW5nZWQgJiYgYWdncmVnYXRpb24gIT09ICd0aW1lQmluJyAmJiBheGlzLmludGVydmFsICE9PSB1bmRlZmluZWQ7XG4gIHJldHVybiB7XG4gICAgLi4uYXhpcyxcbiAgICBmaWVsZDogey4uLmF4aXMuZmllbGQsIG5hbWUsIHR5cGU6IGZpZWxkPy50eXBlfSxcbiAgICB0aXRsZTogYXhpcy50aXRsZSA9PT0gYXhpcy5maWVsZC5uYW1lID8gbmFtZSA6IGF4aXMudGl0bGUsXG4gICAgYWdncmVnYXRpb24sXG4gICAgLi4uKGNsZWFySW50ZXJ2YWwgPyB7aW50ZXJ2YWw6IHVuZGVmaW5lZH0gOiB7fSlcbiAgfTtcbn1cblxuZnVuY3Rpb24gaXNMYXllckNoYXJ0KGNoYXJ0OiBDaGFydENvbmZpZyk6IGNoYXJ0IGlzIExheWVyQ2hhcnRDb25maWcge1xuICByZXR1cm4gY2hhcnQudHlwZSA9PT0gJ2xheWVyQ2hhcnQnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtYXBDaGFydHNGb3JEYXRhc2V0KFxuICBjaGFydHM6IENoYXJ0Q29uZmlnW10gfCB1bmRlZmluZWQsXG4gIGRhdGFJZDogc3RyaW5nLFxuICByZW5hbWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICBhbGl2ZTogUmVhZG9ubHlNYXA8c3RyaW5nLCB7dHlwZTogc3RyaW5nfT5cbik6IENoYXJ0Q29uZmlnW10ge1xuICByZXR1cm4gKGNoYXJ0cyB8fCBbXSkubWFwKGNoYXJ0ID0+IHtcbiAgICBpZiAoY2hhcnQuZGF0YUlkICE9PSBkYXRhSWQpIHtcbiAgICAgIHJldHVybiBjaGFydDtcbiAgICB9XG4gICAgY29uc3Qgc291cmNlID0gY2hhcnQgYXMgQ2hhcnRDb25maWcgJiB7XG4gICAgICB4QXhpcz86IE5hbWVkQXhpcztcbiAgICAgIHlBeGlzPzogTmFtZWRBeGlzO1xuICAgICAgYXhpcz86IE5hbWVkQXhpcztcbiAgICAgIGdyb3VwQnk/OiBOYW1lZEF4aXM7XG4gICAgICB2YWx1ZT86IE5hbWVkQXhpcztcbiAgICB9O1xuICAgIGNvbnN0IG5leHQ6IENoYXJ0Q29uZmlnID0ge1xuICAgICAgLi4uY2hhcnQsXG4gICAgICB4QXhpczogZm9sbG93QXhpcyhzb3VyY2UueEF4aXMsIHJlbmFtZXMsIGFsaXZlKSxcbiAgICAgIHlBeGlzOiBmb2xsb3dBeGlzKHNvdXJjZS55QXhpcywgcmVuYW1lcywgYWxpdmUpLFxuICAgICAgYXhpczogZm9sbG93QXhpcyhzb3VyY2UuYXhpcywgcmVuYW1lcywgYWxpdmUpLFxuICAgICAgZ3JvdXBCeTogZm9sbG93QXhpcyhzb3VyY2UuZ3JvdXBCeSwgcmVuYW1lcywgYWxpdmUpLFxuICAgICAgdmFsdWU6IGZvbGxvd0F4aXMoc291cmNlLnZhbHVlLCByZW5hbWVzLCBhbGl2ZSlcbiAgICB9IGFzIENoYXJ0Q29uZmlnO1xuXG4gICAgaWYgKGNoYXJ0LmNyb3NzRmlsdGVyPy5maWVsZE5hbWVzKSB7XG4gICAgICBjb25zdCBmaWVsZE5hbWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gICAgICBPYmplY3QuZW50cmllcyhjaGFydC5jcm9zc0ZpbHRlci5maWVsZE5hbWVzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgY29uc3QgbmFtZSA9IGZvbGxvd0ZpZWxkTmFtZSh2YWx1ZSwgcmVuYW1lcywgYWxpdmUpO1xuICAgICAgICBpZiAobmFtZSkge1xuICAgICAgICAgIGZpZWxkTmFtZXNba2V5XSA9IG5hbWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgbmV4dC5jcm9zc0ZpbHRlciA9IHsuLi5jaGFydC5jcm9zc0ZpbHRlciwgZmllbGROYW1lc307XG4gICAgfVxuXG4gICAgaWYgKGlzTGF5ZXJDaGFydChjaGFydCkgJiYgY2hhcnQuY2hhcnREaXNwbGF5Py5pZEZpZWxkKSB7XG4gICAgICBuZXh0LmNoYXJ0RGlzcGxheSA9IHtcbiAgICAgICAgLi4uY2hhcnQuY2hhcnREaXNwbGF5LFxuICAgICAgICBpZEZpZWxkOiBmb2xsb3dGaWVsZE5hbWUoY2hhcnQuY2hhcnREaXNwbGF5LmlkRmllbGQsIHJlbmFtZXMsIGFsaXZlKVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIG5leHQ7XG4gIH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFJQSxJQUFBQSxVQUFBLEdBQUFDLE9BQUE7QUFBcUQsU0FBQUMsUUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFKLENBQUEsT0FBQUcsTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFILE1BQUEsQ0FBQUUscUJBQUEsQ0FBQUwsQ0FBQSxHQUFBQyxDQUFBLEtBQUFLLENBQUEsR0FBQUEsQ0FBQSxDQUFBQyxNQUFBLFdBQUFOLENBQUEsV0FBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBUixDQUFBLEVBQUFDLENBQUEsRUFBQVEsVUFBQSxPQUFBUCxDQUFBLENBQUFRLElBQUEsQ0FBQUMsS0FBQSxDQUFBVCxDQUFBLEVBQUFJLENBQUEsWUFBQUosQ0FBQTtBQUFBLFNBQUFVLGNBQUFaLENBQUEsYUFBQUMsQ0FBQSxNQUFBQSxDQUFBLEdBQUFZLFNBQUEsQ0FBQUMsTUFBQSxFQUFBYixDQUFBLFVBQUFDLENBQUEsV0FBQVcsU0FBQSxDQUFBWixDQUFBLElBQUFZLFNBQUEsQ0FBQVosQ0FBQSxRQUFBQSxDQUFBLE9BQUFGLE9BQUEsQ0FBQUksTUFBQSxDQUFBRCxDQUFBLE9BQUFhLE9BQUEsV0FBQWQsQ0FBQSxRQUFBZSxnQkFBQSxhQUFBaEIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsQ0FBQUQsQ0FBQSxTQUFBRSxNQUFBLENBQUFjLHlCQUFBLEdBQUFkLE1BQUEsQ0FBQWUsZ0JBQUEsQ0FBQWxCLENBQUEsRUFBQUcsTUFBQSxDQUFBYyx5QkFBQSxDQUFBZixDQUFBLEtBQUFILE9BQUEsQ0FBQUksTUFBQSxDQUFBRCxDQUFBLEdBQUFhLE9BQUEsV0FBQWQsQ0FBQSxJQUFBRSxNQUFBLENBQUFnQixjQUFBLENBQUFuQixDQUFB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