@gpa-gemstone/react-graph 1.0.50 → 1.0.52

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 (45) hide show
  1. package/lib/AggregatingCircles.d.ts +16 -17
  2. package/lib/AggregatingCircles.js +180 -173
  3. package/lib/Button.d.ts +7 -7
  4. package/lib/Button.js +33 -33
  5. package/lib/Circle.d.ts +19 -20
  6. package/lib/Circle.js +125 -118
  7. package/lib/GraphContext.d.ts +89 -89
  8. package/lib/GraphContext.js +140 -140
  9. package/lib/HeatLegend.d.ts +10 -11
  10. package/lib/HeatLegend.js +109 -106
  11. package/lib/HeatMapChart.d.ts +14 -15
  12. package/lib/HeatMapChart.js +119 -119
  13. package/lib/HorizontalMarker.d.ts +13 -14
  14. package/lib/HorizontalMarker.js +110 -110
  15. package/lib/Infobox.d.ts +17 -17
  16. package/lib/Infobox.js +180 -180
  17. package/lib/InteractiveButtons.d.ts +21 -21
  18. package/lib/InteractiveButtons.js +218 -218
  19. package/lib/Legend.d.ts +14 -14
  20. package/lib/Legend.js +117 -117
  21. package/lib/LegendContext.d.ts +14 -14
  22. package/lib/LegendContext.js +34 -34
  23. package/lib/Line.d.ts +14 -15
  24. package/lib/Line.js +144 -144
  25. package/lib/LineLegend.d.ts +11 -12
  26. package/lib/LineLegend.js +97 -97
  27. package/lib/LineWithThreshold.d.ts +12 -13
  28. package/lib/LineWithThreshold.js +144 -144
  29. package/lib/LogAxis.d.ts +20 -20
  30. package/lib/LogAxis.js +165 -165
  31. package/lib/Plot.d.ts +38 -37
  32. package/lib/Plot.js +802 -802
  33. package/lib/PointNode.d.ts +31 -31
  34. package/lib/PointNode.js +254 -254
  35. package/lib/SymbolicMarker.d.ts +17 -17
  36. package/lib/SymbolicMarker.js +119 -119
  37. package/lib/TimeAxis.d.ts +18 -18
  38. package/lib/TimeAxis.js +433 -433
  39. package/lib/ValueAxis.d.ts +21 -21
  40. package/lib/ValueAxis.js +196 -192
  41. package/lib/VerticalMarker.d.ts +14 -15
  42. package/lib/VerticalMarker.js +111 -111
  43. package/lib/index.d.ts +13 -13
  44. package/lib/index.js +27 -27
  45. package/package.json +4 -4
package/lib/TimeAxis.js CHANGED
@@ -1,433 +1,433 @@
1
- "use strict";
2
- // ******************************************************************************************************
3
- // TimeAxis.tsx - Gbtc
4
- //
5
- // Copyright © 2020, Grid Protection Alliance. All Rights Reserved.
6
- //
7
- // Licensed to the Grid Protection Alliance (GPA) under one or more contributor license agreements. See
8
- // the NOTICE file distributed with this work for additional information regarding copyright ownership.
9
- // The GPA licenses this file to you under the MIT License (MIT), the "License"; you may not use this
10
- // file except in compliance with the License. You may obtain a copy of the License at:
11
- //
12
- // http://opensource.org/licenses/MIT
13
- //
14
- // Unless agreed to in writing, the subject software distributed under the License is distributed on an
15
- // "AS-IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. Refer to the
16
- // License for the specific language governing permissions and limitations.
17
- //
18
- // Code Modification History:
19
- // ----------------------------------------------------------------------------------------------------
20
- // 03/18/2021 - C Lackner
21
- // Generated original version of source code.
22
- //
23
- // ******************************************************************************************************
24
- var __read = (this && this.__read) || function (o, n) {
25
- var m = typeof Symbol === "function" && o[Symbol.iterator];
26
- if (!m) return o;
27
- var i = m.call(o), r, ar = [], e;
28
- try {
29
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
30
- }
31
- catch (error) { e = { error: error }; }
32
- finally {
33
- try {
34
- if (r && !r.done && (m = i["return"])) m.call(i);
35
- }
36
- finally { if (e) throw e.error; }
37
- }
38
- return ar;
39
- };
40
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
41
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
42
- if (ar || !(i in from)) {
43
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
44
- ar[i] = from[i];
45
- }
46
- }
47
- return to.concat(ar || Array.prototype.slice.call(from));
48
- };
49
- Object.defineProperty(exports, "__esModule", { value: true });
50
- var React = require("react");
51
- var GraphContext_1 = require("./GraphContext");
52
- var moment = require("moment");
53
- var helper_functions_1 = require("@gpa-gemstone/helper-functions");
54
- var lodash_1 = require("lodash");
55
- var msPerSecond = 1000.00;
56
- var msPerMinute = msPerSecond * 60.0;
57
- var msPerHour = msPerMinute * 60.0;
58
- var msPerDay = msPerHour * 24.0;
59
- var msPerYear = msPerDay * 365;
60
- function TimeAxis(props) {
61
- var _a, _b, _c, _d;
62
- /*
63
- Used on bottom of Plot.
64
- */
65
- var context = React.useContext(GraphContext_1.GraphContext);
66
- var _e = __read(React.useState([]), 2), tick = _e[0], setTick = _e[1];
67
- var _f = __read(React.useState(0), 2), hLabel = _f[0], setHlabel = _f[1];
68
- var _g = __read(React.useState(0), 2), hAxis = _g[0], setHAxis = _g[1];
69
- var _h = __read(React.useState('YYYY'), 2), tFormat = _h[0], setTformat = _h[1];
70
- var _j = __read(React.useState(''), 2), dFormat = _j[0], setDformat = _j[1];
71
- var _k = __read(React.useState('Time'), 2), title = _k[0], setTitle = _k[1];
72
- // Adjust space for X Axis labels
73
- React.useEffect(function () {
74
- setHlabel(title !== undefined ? (0, helper_functions_1.GetTextHeight)("Segoe UI", '1em', title) : 0);
75
- }, [title]);
76
- // Adjust unit label
77
- React.useEffect(function () {
78
- if (props.label === undefined)
79
- setTitle(undefined);
80
- var titleFormat = "";
81
- var unitLabel = "";
82
- switch (tFormat) {
83
- case ('SSS'):
84
- titleFormat = "MMM Do, YYYY HH:mm:ss";
85
- unitLabel = " (ms)";
86
- break;
87
- case ('ss.SS'):
88
- titleFormat = "MMM Do, YYYY HH:mm";
89
- unitLabel = " (sec.ms)";
90
- break;
91
- case ('ss'):
92
- titleFormat = "MMM Do, YYYY HH:mm";
93
- unitLabel = " (sec)";
94
- break;
95
- case ('mm:ss'):
96
- titleFormat = "MMM Do, YYYY HH";
97
- unitLabel = " (min:sec)";
98
- break;
99
- case ('mm'):
100
- titleFormat = "MMM Do, YYYY HH";
101
- unitLabel = " (min)";
102
- break;
103
- case ('HH:mm'):
104
- titleFormat = "MMM Do, YYYY";
105
- unitLabel = " (hour:min)";
106
- break;
107
- case ('HH'):
108
- titleFormat = "MMM Do, YYYY";
109
- unitLabel = " (hour)";
110
- break;
111
- case ('DD HH'):
112
- titleFormat = "MMM YYYY";
113
- unitLabel = " (day hour)";
114
- break;
115
- case ('MM/DD'):
116
- titleFormat = "YYYY";
117
- unitLabel = " (month/day)";
118
- break;
119
- case ('MM YY'):
120
- titleFormat = "";
121
- unitLabel = " (month year)";
122
- break;
123
- case ('YYYY'):
124
- titleFormat = "";
125
- unitLabel = " (year)";
126
- break;
127
- default:
128
- console.warn("Unrecognized format: " + tFormat);
129
- break;
130
- }
131
- if (props.label === '') {
132
- var formatedTitle = titleFormat === "" ? "Time" : formatTS(tick[0], titleFormat);
133
- setTitle(formatedTitle + unitLabel);
134
- }
135
- else
136
- setTitle(props.label + unitLabel);
137
- }, [tFormat, props.label, tick]);
138
- // Adjust space for X Tick labels
139
- React.useEffect(function () {
140
- var dX = Math.max.apply(Math, __spreadArray([], __read(tick.map(function (t) { return (0, helper_functions_1.GetTextHeight)("Segoe UI", '1em', formatTS(t, tFormat)); })), false));
141
- dX = (isFinite(dX) ? dX : 0) + 12;
142
- setHAxis(dX);
143
- }, [tick, tFormat]);
144
- React.useEffect(function () {
145
- if (hAxis + hLabel !== props.heightAxis)
146
- props.setHeight(hAxis + hLabel);
147
- }, [hAxis, hLabel, props.heightAxis, props.setHeight]);
148
- React.useEffect(function () {
149
- var _a;
150
- var deltaT = context.XDomain[1] - context.XDomain[0];
151
- if (deltaT === 0)
152
- return;
153
- var format = 'YYYY';
154
- var dateFormat = '';
155
- if (deltaT < msPerYear * 15 && deltaT >= msPerYear) {
156
- format = 'MM YY';
157
- dateFormat = '';
158
- }
159
- if (deltaT < msPerYear && deltaT >= 30 * msPerDay) {
160
- format = 'MM/DD';
161
- dateFormat = 'YY';
162
- }
163
- if (deltaT < 30 * msPerDay && deltaT >= 2 * msPerDay) {
164
- format = 'DD HH';
165
- dateFormat = 'YY';
166
- }
167
- if (deltaT < 2 * msPerDay && deltaT >= 30 * msPerHour) {
168
- format = 'HH';
169
- dateFormat = 'MM/DD';
170
- }
171
- if (deltaT < 30 * msPerHour && deltaT >= msPerHour) {
172
- format = 'HH:mm';
173
- dateFormat = 'MM/DD';
174
- }
175
- if (deltaT < msPerHour && deltaT >= 30 * msPerMinute) {
176
- format = 'mm';
177
- dateFormat = 'MM/DD HH';
178
- }
179
- if (deltaT < 30 * msPerMinute && deltaT >= msPerMinute) {
180
- format = 'mm:ss';
181
- dateFormat = 'MM/DD HH';
182
- }
183
- if (deltaT < msPerMinute && deltaT >= 30 * msPerSecond) {
184
- format = 'ss';
185
- dateFormat = 'MM/DD HH:mm';
186
- }
187
- if (deltaT < 30 * msPerSecond && deltaT >= msPerSecond) {
188
- format = 'ss.SS';
189
- dateFormat = 'MM/DD HH:mm';
190
- }
191
- if (deltaT < msPerSecond) {
192
- format = 'SSS';
193
- dateFormat = 'MM/DD HH:mm:ss';
194
- }
195
- var Tstart = moment.utc(context.XDomain[0]);
196
- var Tend = moment.utc(context.XDomain[1]);
197
- var Tdiff = moment.duration(moment.utc(context.XDomain[1]).diff(moment.utc(context.XDomain[0])));
198
- var Ttick = (0, lodash_1.cloneDeep)(Tstart);
199
- var step = 10;
200
- var stepType = 'y';
201
- if (Tdiff.asYears() >= 70) {
202
- step = 10;
203
- stepType = 'y';
204
- setTopOfYear(Ttick);
205
- Ttick.year(Math.floor((Ttick.year()) / 10.0) * 10.0);
206
- }
207
- if (Tdiff.asYears() < 70 && Tdiff.asYears() >= 40) {
208
- step = 5;
209
- setTopOfYear(Ttick);
210
- Ttick.year(Math.floor((Ttick.year()) / 5.0) * 5.0);
211
- }
212
- if (Tdiff.asYears() < 40 && Tdiff.asYears() >= 15) {
213
- step = 2;
214
- setTopOfYear(Ttick);
215
- Ttick.year(Math.floor((Ttick.year()) / 2.0) * 2.0);
216
- }
217
- if (Tdiff.asYears() < 15 && Tdiff.asYears() >= 6) {
218
- stepType = 'M';
219
- step = 12;
220
- setTopOfYear(Ttick);
221
- }
222
- if (Tdiff.asYears() < 6 && Tdiff.asYears() >= 4) {
223
- stepType = 'M';
224
- step = 6;
225
- setTopOfMonth(Ttick);
226
- Ttick.month(Math.floor((Ttick.month()) / 6.0) * 6.0);
227
- }
228
- if (Tdiff.asYears() < 4 && Tdiff.asYears() >= 1.5) {
229
- stepType = 'M';
230
- step = 3;
231
- setTopOfMonth(Ttick);
232
- Ttick.month(Math.floor((Ttick.month()) / 3.0) * 3.0);
233
- }
234
- if (Tdiff.asYears() < 1.5 && Tdiff.asMonths() >= 6) {
235
- stepType = 'M';
236
- step = 1;
237
- setTopOfMonth(Ttick);
238
- }
239
- if (Tdiff.asMonths() < 6 && Tdiff.asMonths() >= 2) {
240
- stepType = 'w';
241
- step = 2;
242
- setTopOfWeek(Ttick);
243
- }
244
- if (Tdiff.asMonths() < 2 && Tdiff.asMonths() >= 1) {
245
- stepType = 'w';
246
- step = 1;
247
- setTopOfWeek(Ttick);
248
- }
249
- if (Tdiff.asMonths() < 1 && Tdiff.asDays() >= 16) {
250
- stepType = 'd';
251
- step = 2;
252
- setTopOfDay(Ttick);
253
- }
254
- if (Tdiff.asDays() < 16 && Tdiff.asDays() >= 10) {
255
- stepType = 'd';
256
- step = 1;
257
- setTopOfDay(Ttick);
258
- }
259
- if (Tdiff.asDays() < 10 && Tdiff.asDays() >= 3) {
260
- stepType = 'h';
261
- step = 12;
262
- setTopOfHour(Ttick);
263
- Ttick.hours(Math.floor((Ttick.hours()) / 12.0) * 12.0);
264
- }
265
- if (Tdiff.asDays() < 3 && Tdiff.asHours() >= 30) {
266
- stepType = 'h';
267
- step = 6;
268
- setTopOfHour(Ttick);
269
- Ttick.hours(Math.floor((Ttick.hours()) / 6.0) * 6.0);
270
- }
271
- if (Tdiff.asHours() < 30 && Tdiff.asHours() >= 18) {
272
- stepType = 'h';
273
- step = 3;
274
- setTopOfHour(Ttick);
275
- Ttick.hours(Math.floor((Ttick.hours()) / 3.0) * 3.0);
276
- }
277
- if (Tdiff.asHours() < 18 && Tdiff.asHours() >= 6) {
278
- stepType = 'h';
279
- step = 1;
280
- setTopOfHour(Ttick);
281
- }
282
- if (Tdiff.asHours() < 6 && Tdiff.asHours() >= 3) {
283
- stepType = 'm';
284
- step = 30;
285
- setTopOfMinute(Ttick);
286
- Ttick.minutes(Math.floor((Ttick.minutes()) / 30.0) * 30.0);
287
- }
288
- if (Tdiff.asHours() < 3 && Tdiff.asHours() >= 1) {
289
- stepType = 'm';
290
- step = 15;
291
- setTopOfMinute(Ttick);
292
- Ttick.minutes(Math.floor((Ttick.minutes()) / 15.0) * 15.0);
293
- }
294
- if (Tdiff.asHours() < 1 && Tdiff.asMinutes() >= 20) {
295
- stepType = 'm';
296
- step = 5;
297
- setTopOfMinute(Ttick);
298
- Ttick.minutes(Math.floor((Ttick.minutes()) / 5.0) * 5.0);
299
- }
300
- if (Tdiff.asMinutes() < 20 && Tdiff.asMinutes() >= 10) {
301
- stepType = 'm';
302
- step = 2;
303
- setTopOfMinute(Ttick);
304
- Ttick.minutes(Math.floor((Ttick.minutes()) / 2.0) * 2.0);
305
- }
306
- if (Tdiff.asMinutes() < 10 && Tdiff.asMinutes() >= 5) {
307
- stepType = 'm';
308
- step = 1;
309
- setTopOfMinute(Ttick);
310
- }
311
- if (Tdiff.asMinutes() < 5 && Tdiff.asMinutes() >= 2) {
312
- stepType = 's';
313
- step = 30;
314
- setTopOfSecond(Ttick);
315
- Ttick.second(Math.floor((Ttick.second()) / 30) * 30.0);
316
- }
317
- if (Tdiff.asMinutes() < 2 && Tdiff.asMinutes() >= 1) {
318
- stepType = 's';
319
- step = 15;
320
- setTopOfSecond(Ttick);
321
- Ttick.second(Math.floor((Ttick.second()) / 15) * 15.0);
322
- }
323
- if (Tdiff.asMinutes() < 1 && Tdiff.asSeconds() >= 30) {
324
- stepType = 's';
325
- step = 5;
326
- setTopOfSecond(Ttick);
327
- Ttick.second(Math.floor((Ttick.second()) / 5) * 5.0);
328
- }
329
- if (Tdiff.asSeconds() < 30 && Tdiff.asSeconds() >= 15) {
330
- stepType = 's';
331
- step = 2;
332
- setTopOfSecond(Ttick);
333
- }
334
- if (Tdiff.asSeconds() < 15 && Tdiff.asSeconds() >= 5) {
335
- stepType = 's';
336
- step = 1;
337
- setTopOfSecond(Ttick);
338
- }
339
- if (Tdiff.asSeconds() < 5 && Tdiff.asSeconds() >= 2) {
340
- stepType = 'ms';
341
- step = 500;
342
- setTopOfms(Ttick);
343
- Ttick.millisecond(Math.floor((Ttick.millisecond()) / 500) * 500.0);
344
- }
345
- if (Tdiff.asSeconds() < 2 && Tdiff.asSeconds() >= 1) {
346
- stepType = 'ms';
347
- step = 250;
348
- setTopOfms(Ttick);
349
- Ttick.millisecond(Math.floor((Ttick.millisecond()) / 250) * 250.0);
350
- }
351
- if (Tdiff.asSeconds() < 1 && Tdiff.asMilliseconds() >= 500) {
352
- stepType = 'ms';
353
- step = 100;
354
- setTopOfms(Ttick);
355
- Ttick.millisecond(Math.floor((Ttick.millisecond()) / 100) * 100.0);
356
- }
357
- if (Tdiff.asMilliseconds() < 500 && Tdiff.asMilliseconds() >= 100) {
358
- stepType = 'ms';
359
- step = 50;
360
- setTopOfms(Ttick);
361
- Ttick.millisecond(Math.floor((Ttick.millisecond()) / 50) * 50.0);
362
- }
363
- if (Tdiff.asMilliseconds() < 100 && Tdiff.asMilliseconds() >= 20) {
364
- stepType = 'ms';
365
- step = 10;
366
- setTopOfms(Ttick);
367
- Ttick.millisecond(Math.floor((Ttick.millisecond()) / 10) * 10.0);
368
- }
369
- if (Tdiff.asMilliseconds() < 20) {
370
- stepType = 'ms';
371
- setTopOfms(Ttick);
372
- step = 1;
373
- }
374
- var newTicks = [Ttick.add(step, stepType)];
375
- while (newTicks[newTicks.length - 1] < Tend)
376
- newTicks.push(newTicks[newTicks.length - 1].clone().add(step, stepType));
377
- newTicks.pop();
378
- setTick(newTicks.map(function (t) { return t.valueOf(); }));
379
- setTformat(format);
380
- if ((_a = props.showDate) !== null && _a !== void 0 ? _a : false)
381
- setDformat(dateFormat);
382
- else
383
- setDformat('');
384
- }, [context.XDomain, props.showDate]);
385
- function setTopOfms(d) {
386
- d.milliseconds(Math.floor(d.millisecond()));
387
- }
388
- function setTopOfSecond(d) {
389
- setTopOfms(d);
390
- d.milliseconds(0);
391
- }
392
- function setTopOfMinute(d) {
393
- setTopOfSecond(d);
394
- d.seconds(0);
395
- }
396
- function setTopOfHour(d) {
397
- setTopOfMinute(d);
398
- d.minutes(0);
399
- }
400
- function setTopOfDay(d) {
401
- setTopOfHour(d);
402
- d.hours(0);
403
- }
404
- function setTopOfWeek(d) {
405
- setTopOfDay(d);
406
- d.weekday(0);
407
- }
408
- function setTopOfMonth(d) {
409
- setTopOfDay(d);
410
- d.date(1);
411
- }
412
- function setTopOfYear(d) {
413
- setTopOfDay(d);
414
- d.dayOfYear(0);
415
- }
416
- function formatTS(t, f) {
417
- var TS = moment.utc(t);
418
- return TS.format(f);
419
- }
420
- return (React.createElement("g", null,
421
- React.createElement("path", { stroke: 'black', style: { strokeWidth: 1 }, d: "M " + (props.offsetLeft - (((_a = props.showLeftMostTick) !== null && _a !== void 0 ? _a : true) ? 0 : 8)) + " " + (props.height - props.offsetBottom) + " H " + (props.width - props.offsetRight + (((_b = props.showRightMostTick) !== null && _b !== void 0 ? _b : true) ? 0 : 8)) }),
422
- ((_c = props.showLeftMostTick) !== null && _c !== void 0 ? _c : true) ? React.createElement("path", { stroke: 'black', style: { strokeWidth: 1 }, d: "M " + props.offsetLeft + " " + (props.height - props.offsetBottom) + " v " + 8 }) : null,
423
- ((_d = props.showRightMostTick) !== null && _d !== void 0 ? _d : true) ? React.createElement("path", { stroke: 'black', style: { strokeWidth: 1 }, d: "M " + (props.width - props.offsetRight) + " " + (props.height - props.offsetBottom) + " v " + 8 }) : null,
424
- props.showTicks === undefined || props.showTicks ?
425
- React.createElement(React.Fragment, null,
426
- tick.map(function (l, i) { return React.createElement("path", { key: i, stroke: 'black', style: { strokeWidth: 1, transition: 'd 0.5s' }, d: "M " + context.XTransformation(l) + " " + (props.height - props.offsetBottom + 6) + " v " + -6 }); }),
427
- tick.map(function (l, i) { return React.createElement("text", { fill: 'black', key: i, style: { fontSize: '1em', textAnchor: 'middle', dominantBaseline: 'hanging', transition: 'x 0.5s, y 0.5s' }, y: props.height - props.offsetBottom + 8, x: context.XTransformation(l) }, formatTS(l, tFormat)); }))
428
- : null,
429
- title !== undefined ? React.createElement("text", { fill: 'black', style: { fontSize: '1em', textAnchor: 'middle', dominantBaseline: 'middle' }, x: props.offsetLeft + ((props.width - props.offsetLeft - props.offsetRight) / 2), y: props.height - props.offsetBottom + hAxis }, title) : null,
430
- (dFormat !== '' && tick.length > 0) ? React.createElement("text", { fill: 'black', style: { fontSize: '1em', textAnchor: 'end', dominantBaseline: 'middle' }, x: props.width - props.offsetRight, y: props.height - props.offsetBottom + hAxis }, formatTS(tick[0], dFormat)) : null));
431
- }
432
- exports.default = React.memo(TimeAxis);
433
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGltZUF4aXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvVGltZUF4aXMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSx5R0FBeUc7QUFDekcsdUJBQXVCO0FBQ3ZCLEVBQUU7QUFDRixxRUFBcUU7QUFDckUsRUFBRTtBQUNGLHdHQUF3RztBQUN4Ryx3R0FBd0c7QUFDeEcsc0dBQXNHO0FBQ3RHLHdGQUF3RjtBQUN4RixFQUFFO0FBQ0YsMENBQTBDO0FBQzFDLEVBQUU7QUFDRix3R0FBd0c7QUFDeEcsd0dBQXdHO0FBQ3hHLDRFQUE0RTtBQUM1RSxFQUFFO0FBQ0YsOEJBQThCO0FBQzlCLHdHQUF3RztBQUN4RywwQkFBMEI7QUFDMUIsbURBQW1EO0FBQ25ELEVBQUU7QUFDRix5R0FBeUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV6Ryw2QkFBK0I7QUFDL0IsK0NBQTJDO0FBQzNDLCtCQUFpQztBQUNqQyxtRUFBNkQ7QUFDN0QsaUNBQW1DO0FBaUJuQyxJQUFNLFdBQVcsR0FBRyxPQUFPLENBQUM7QUFDNUIsSUFBTSxXQUFXLEdBQUcsV0FBVyxHQUFFLElBQUksQ0FBQztBQUN0QyxJQUFNLFNBQVMsR0FBRyxXQUFXLEdBQUUsSUFBSSxDQUFDO0FBQ3BDLElBQU0sUUFBUSxHQUFHLFNBQVMsR0FBRSxJQUFJLENBQUM7QUFDakMsSUFBTSxTQUFTLEdBQUcsUUFBUSxHQUFFLEdBQUcsQ0FBQztBQUtoQyxTQUFTLFFBQVEsQ0FBQyxLQUFhOztJQUMzQjs7TUFFRTtJQUNGLElBQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsMkJBQVksQ0FBQyxDQUFBO0lBQ3hDLElBQUEsS0FBQSxPQUFpQixLQUFLLENBQUMsUUFBUSxDQUFXLEVBQUUsQ0FBQyxJQUFBLEVBQTVDLElBQUksUUFBQSxFQUFDLE9BQU8sUUFBZ0MsQ0FBQztJQUM5QyxJQUFBLEtBQUEsT0FBc0IsS0FBSyxDQUFDLFFBQVEsQ0FBUyxDQUFDLENB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
1
+ "use strict";
2
+ // ******************************************************************************************************
3
+ // TimeAxis.tsx - Gbtc
4
+ //
5
+ // Copyright © 2020, Grid Protection Alliance. All Rights Reserved.
6
+ //
7
+ // Licensed to the Grid Protection Alliance (GPA) under one or more contributor license agreements. See
8
+ // the NOTICE file distributed with this work for additional information regarding copyright ownership.
9
+ // The GPA licenses this file to you under the MIT License (MIT), the "License"; you may not use this
10
+ // file except in compliance with the License. You may obtain a copy of the License at:
11
+ //
12
+ // http://opensource.org/licenses/MIT
13
+ //
14
+ // Unless agreed to in writing, the subject software distributed under the License is distributed on an
15
+ // "AS-IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. Refer to the
16
+ // License for the specific language governing permissions and limitations.
17
+ //
18
+ // Code Modification History:
19
+ // ----------------------------------------------------------------------------------------------------
20
+ // 03/18/2021 - C Lackner
21
+ // Generated original version of source code.
22
+ //
23
+ // ******************************************************************************************************
24
+ var __read = (this && this.__read) || function (o, n) {
25
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
26
+ if (!m) return o;
27
+ var i = m.call(o), r, ar = [], e;
28
+ try {
29
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
30
+ }
31
+ catch (error) { e = { error: error }; }
32
+ finally {
33
+ try {
34
+ if (r && !r.done && (m = i["return"])) m.call(i);
35
+ }
36
+ finally { if (e) throw e.error; }
37
+ }
38
+ return ar;
39
+ };
40
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
41
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
42
+ if (ar || !(i in from)) {
43
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
44
+ ar[i] = from[i];
45
+ }
46
+ }
47
+ return to.concat(ar || Array.prototype.slice.call(from));
48
+ };
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ var React = require("react");
51
+ var GraphContext_1 = require("./GraphContext");
52
+ var moment = require("moment");
53
+ var helper_functions_1 = require("@gpa-gemstone/helper-functions");
54
+ var lodash_1 = require("lodash");
55
+ var msPerSecond = 1000.00;
56
+ var msPerMinute = msPerSecond * 60.0;
57
+ var msPerHour = msPerMinute * 60.0;
58
+ var msPerDay = msPerHour * 24.0;
59
+ var msPerYear = msPerDay * 365;
60
+ function TimeAxis(props) {
61
+ var _a, _b, _c, _d;
62
+ /*
63
+ Used on bottom of Plot.
64
+ */
65
+ var context = React.useContext(GraphContext_1.GraphContext);
66
+ var _e = __read(React.useState([]), 2), tick = _e[0], setTick = _e[1];
67
+ var _f = __read(React.useState(0), 2), hLabel = _f[0], setHlabel = _f[1];
68
+ var _g = __read(React.useState(0), 2), hAxis = _g[0], setHAxis = _g[1];
69
+ var _h = __read(React.useState('YYYY'), 2), tFormat = _h[0], setTformat = _h[1];
70
+ var _j = __read(React.useState(''), 2), dFormat = _j[0], setDformat = _j[1];
71
+ var _k = __read(React.useState('Time'), 2), title = _k[0], setTitle = _k[1];
72
+ // Adjust space for X Axis labels
73
+ React.useEffect(function () {
74
+ setHlabel(title !== undefined ? (0, helper_functions_1.GetTextHeight)("Segoe UI", '1em', title) : 0);
75
+ }, [title]);
76
+ // Adjust unit label
77
+ React.useEffect(function () {
78
+ if (props.label === undefined)
79
+ setTitle(undefined);
80
+ var titleFormat = "";
81
+ var unitLabel = "";
82
+ switch (tFormat) {
83
+ case ('SSS'):
84
+ titleFormat = "MMM Do, YYYY HH:mm:ss";
85
+ unitLabel = " (ms)";
86
+ break;
87
+ case ('ss.SS'):
88
+ titleFormat = "MMM Do, YYYY HH:mm";
89
+ unitLabel = " (sec.ms)";
90
+ break;
91
+ case ('ss'):
92
+ titleFormat = "MMM Do, YYYY HH:mm";
93
+ unitLabel = " (sec)";
94
+ break;
95
+ case ('mm:ss'):
96
+ titleFormat = "MMM Do, YYYY HH";
97
+ unitLabel = " (min:sec)";
98
+ break;
99
+ case ('mm'):
100
+ titleFormat = "MMM Do, YYYY HH";
101
+ unitLabel = " (min)";
102
+ break;
103
+ case ('HH:mm'):
104
+ titleFormat = "MMM Do, YYYY";
105
+ unitLabel = " (hour:min)";
106
+ break;
107
+ case ('HH'):
108
+ titleFormat = "MMM Do, YYYY";
109
+ unitLabel = " (hour)";
110
+ break;
111
+ case ('DD HH'):
112
+ titleFormat = "MMM YYYY";
113
+ unitLabel = " (day hour)";
114
+ break;
115
+ case ('MM/DD'):
116
+ titleFormat = "YYYY";
117
+ unitLabel = " (month/day)";
118
+ break;
119
+ case ('MM YY'):
120
+ titleFormat = "";
121
+ unitLabel = " (month year)";
122
+ break;
123
+ case ('YYYY'):
124
+ titleFormat = "";
125
+ unitLabel = " (year)";
126
+ break;
127
+ default:
128
+ console.warn("Unrecognized format: ".concat(tFormat));
129
+ break;
130
+ }
131
+ if (props.label === '') {
132
+ var formatedTitle = titleFormat === "" ? "Time" : formatTS(tick[0], titleFormat);
133
+ setTitle(formatedTitle + unitLabel);
134
+ }
135
+ else
136
+ setTitle(props.label + unitLabel);
137
+ }, [tFormat, props.label, tick]);
138
+ // Adjust space for X Tick labels
139
+ React.useEffect(function () {
140
+ var dX = Math.max.apply(Math, __spreadArray([], __read(tick.map(function (t) { return (0, helper_functions_1.GetTextHeight)("Segoe UI", '1em', formatTS(t, tFormat)); })), false));
141
+ dX = (isFinite(dX) ? dX : 0) + 12;
142
+ setHAxis(dX);
143
+ }, [tick, tFormat]);
144
+ React.useEffect(function () {
145
+ if (hAxis + hLabel !== props.heightAxis)
146
+ props.setHeight(hAxis + hLabel);
147
+ }, [hAxis, hLabel, props.heightAxis, props.setHeight]);
148
+ React.useEffect(function () {
149
+ var _a;
150
+ var deltaT = context.XDomain[1] - context.XDomain[0];
151
+ if (deltaT === 0)
152
+ return;
153
+ var format = 'YYYY';
154
+ var dateFormat = '';
155
+ if (deltaT < msPerYear * 15 && deltaT >= msPerYear) {
156
+ format = 'MM YY';
157
+ dateFormat = '';
158
+ }
159
+ if (deltaT < msPerYear && deltaT >= 30 * msPerDay) {
160
+ format = 'MM/DD';
161
+ dateFormat = 'YY';
162
+ }
163
+ if (deltaT < 30 * msPerDay && deltaT >= 2 * msPerDay) {
164
+ format = 'DD HH';
165
+ dateFormat = 'YY';
166
+ }
167
+ if (deltaT < 2 * msPerDay && deltaT >= 30 * msPerHour) {
168
+ format = 'HH';
169
+ dateFormat = 'MM/DD';
170
+ }
171
+ if (deltaT < 30 * msPerHour && deltaT >= msPerHour) {
172
+ format = 'HH:mm';
173
+ dateFormat = 'MM/DD';
174
+ }
175
+ if (deltaT < msPerHour && deltaT >= 30 * msPerMinute) {
176
+ format = 'mm';
177
+ dateFormat = 'MM/DD HH';
178
+ }
179
+ if (deltaT < 30 * msPerMinute && deltaT >= msPerMinute) {
180
+ format = 'mm:ss';
181
+ dateFormat = 'MM/DD HH';
182
+ }
183
+ if (deltaT < msPerMinute && deltaT >= 30 * msPerSecond) {
184
+ format = 'ss';
185
+ dateFormat = 'MM/DD HH:mm';
186
+ }
187
+ if (deltaT < 30 * msPerSecond && deltaT >= msPerSecond) {
188
+ format = 'ss.SS';
189
+ dateFormat = 'MM/DD HH:mm';
190
+ }
191
+ if (deltaT < msPerSecond) {
192
+ format = 'SSS';
193
+ dateFormat = 'MM/DD HH:mm:ss';
194
+ }
195
+ var Tstart = moment.utc(context.XDomain[0]);
196
+ var Tend = moment.utc(context.XDomain[1]);
197
+ var Tdiff = moment.duration(moment.utc(context.XDomain[1]).diff(moment.utc(context.XDomain[0])));
198
+ var Ttick = (0, lodash_1.cloneDeep)(Tstart);
199
+ var step = 10;
200
+ var stepType = 'y';
201
+ if (Tdiff.asYears() >= 70) {
202
+ step = 10;
203
+ stepType = 'y';
204
+ setTopOfYear(Ttick);
205
+ Ttick.year(Math.floor((Ttick.year()) / 10.0) * 10.0);
206
+ }
207
+ if (Tdiff.asYears() < 70 && Tdiff.asYears() >= 40) {
208
+ step = 5;
209
+ setTopOfYear(Ttick);
210
+ Ttick.year(Math.floor((Ttick.year()) / 5.0) * 5.0);
211
+ }
212
+ if (Tdiff.asYears() < 40 && Tdiff.asYears() >= 15) {
213
+ step = 2;
214
+ setTopOfYear(Ttick);
215
+ Ttick.year(Math.floor((Ttick.year()) / 2.0) * 2.0);
216
+ }
217
+ if (Tdiff.asYears() < 15 && Tdiff.asYears() >= 6) {
218
+ stepType = 'M';
219
+ step = 12;
220
+ setTopOfYear(Ttick);
221
+ }
222
+ if (Tdiff.asYears() < 6 && Tdiff.asYears() >= 4) {
223
+ stepType = 'M';
224
+ step = 6;
225
+ setTopOfMonth(Ttick);
226
+ Ttick.month(Math.floor((Ttick.month()) / 6.0) * 6.0);
227
+ }
228
+ if (Tdiff.asYears() < 4 && Tdiff.asYears() >= 1.5) {
229
+ stepType = 'M';
230
+ step = 3;
231
+ setTopOfMonth(Ttick);
232
+ Ttick.month(Math.floor((Ttick.month()) / 3.0) * 3.0);
233
+ }
234
+ if (Tdiff.asYears() < 1.5 && Tdiff.asMonths() >= 6) {
235
+ stepType = 'M';
236
+ step = 1;
237
+ setTopOfMonth(Ttick);
238
+ }
239
+ if (Tdiff.asMonths() < 6 && Tdiff.asMonths() >= 2) {
240
+ stepType = 'w';
241
+ step = 2;
242
+ setTopOfWeek(Ttick);
243
+ }
244
+ if (Tdiff.asMonths() < 2 && Tdiff.asMonths() >= 1) {
245
+ stepType = 'w';
246
+ step = 1;
247
+ setTopOfWeek(Ttick);
248
+ }
249
+ if (Tdiff.asMonths() < 1 && Tdiff.asDays() >= 16) {
250
+ stepType = 'd';
251
+ step = 2;
252
+ setTopOfDay(Ttick);
253
+ }
254
+ if (Tdiff.asDays() < 16 && Tdiff.asDays() >= 10) {
255
+ stepType = 'd';
256
+ step = 1;
257
+ setTopOfDay(Ttick);
258
+ }
259
+ if (Tdiff.asDays() < 10 && Tdiff.asDays() >= 3) {
260
+ stepType = 'h';
261
+ step = 12;
262
+ setTopOfHour(Ttick);
263
+ Ttick.hours(Math.floor((Ttick.hours()) / 12.0) * 12.0);
264
+ }
265
+ if (Tdiff.asDays() < 3 && Tdiff.asHours() >= 30) {
266
+ stepType = 'h';
267
+ step = 6;
268
+ setTopOfHour(Ttick);
269
+ Ttick.hours(Math.floor((Ttick.hours()) / 6.0) * 6.0);
270
+ }
271
+ if (Tdiff.asHours() < 30 && Tdiff.asHours() >= 18) {
272
+ stepType = 'h';
273
+ step = 3;
274
+ setTopOfHour(Ttick);
275
+ Ttick.hours(Math.floor((Ttick.hours()) / 3.0) * 3.0);
276
+ }
277
+ if (Tdiff.asHours() < 18 && Tdiff.asHours() >= 6) {
278
+ stepType = 'h';
279
+ step = 1;
280
+ setTopOfHour(Ttick);
281
+ }
282
+ if (Tdiff.asHours() < 6 && Tdiff.asHours() >= 3) {
283
+ stepType = 'm';
284
+ step = 30;
285
+ setTopOfMinute(Ttick);
286
+ Ttick.minutes(Math.floor((Ttick.minutes()) / 30.0) * 30.0);
287
+ }
288
+ if (Tdiff.asHours() < 3 && Tdiff.asHours() >= 1) {
289
+ stepType = 'm';
290
+ step = 15;
291
+ setTopOfMinute(Ttick);
292
+ Ttick.minutes(Math.floor((Ttick.minutes()) / 15.0) * 15.0);
293
+ }
294
+ if (Tdiff.asHours() < 1 && Tdiff.asMinutes() >= 20) {
295
+ stepType = 'm';
296
+ step = 5;
297
+ setTopOfMinute(Ttick);
298
+ Ttick.minutes(Math.floor((Ttick.minutes()) / 5.0) * 5.0);
299
+ }
300
+ if (Tdiff.asMinutes() < 20 && Tdiff.asMinutes() >= 10) {
301
+ stepType = 'm';
302
+ step = 2;
303
+ setTopOfMinute(Ttick);
304
+ Ttick.minutes(Math.floor((Ttick.minutes()) / 2.0) * 2.0);
305
+ }
306
+ if (Tdiff.asMinutes() < 10 && Tdiff.asMinutes() >= 5) {
307
+ stepType = 'm';
308
+ step = 1;
309
+ setTopOfMinute(Ttick);
310
+ }
311
+ if (Tdiff.asMinutes() < 5 && Tdiff.asMinutes() >= 2) {
312
+ stepType = 's';
313
+ step = 30;
314
+ setTopOfSecond(Ttick);
315
+ Ttick.second(Math.floor((Ttick.second()) / 30) * 30.0);
316
+ }
317
+ if (Tdiff.asMinutes() < 2 && Tdiff.asMinutes() >= 1) {
318
+ stepType = 's';
319
+ step = 15;
320
+ setTopOfSecond(Ttick);
321
+ Ttick.second(Math.floor((Ttick.second()) / 15) * 15.0);
322
+ }
323
+ if (Tdiff.asMinutes() < 1 && Tdiff.asSeconds() >= 30) {
324
+ stepType = 's';
325
+ step = 5;
326
+ setTopOfSecond(Ttick);
327
+ Ttick.second(Math.floor((Ttick.second()) / 5) * 5.0);
328
+ }
329
+ if (Tdiff.asSeconds() < 30 && Tdiff.asSeconds() >= 15) {
330
+ stepType = 's';
331
+ step = 2;
332
+ setTopOfSecond(Ttick);
333
+ }
334
+ if (Tdiff.asSeconds() < 15 && Tdiff.asSeconds() >= 5) {
335
+ stepType = 's';
336
+ step = 1;
337
+ setTopOfSecond(Ttick);
338
+ }
339
+ if (Tdiff.asSeconds() < 5 && Tdiff.asSeconds() >= 2) {
340
+ stepType = 'ms';
341
+ step = 500;
342
+ setTopOfms(Ttick);
343
+ Ttick.millisecond(Math.floor((Ttick.millisecond()) / 500) * 500.0);
344
+ }
345
+ if (Tdiff.asSeconds() < 2 && Tdiff.asSeconds() >= 1) {
346
+ stepType = 'ms';
347
+ step = 250;
348
+ setTopOfms(Ttick);
349
+ Ttick.millisecond(Math.floor((Ttick.millisecond()) / 250) * 250.0);
350
+ }
351
+ if (Tdiff.asSeconds() < 1 && Tdiff.asMilliseconds() >= 500) {
352
+ stepType = 'ms';
353
+ step = 100;
354
+ setTopOfms(Ttick);
355
+ Ttick.millisecond(Math.floor((Ttick.millisecond()) / 100) * 100.0);
356
+ }
357
+ if (Tdiff.asMilliseconds() < 500 && Tdiff.asMilliseconds() >= 100) {
358
+ stepType = 'ms';
359
+ step = 50;
360
+ setTopOfms(Ttick);
361
+ Ttick.millisecond(Math.floor((Ttick.millisecond()) / 50) * 50.0);
362
+ }
363
+ if (Tdiff.asMilliseconds() < 100 && Tdiff.asMilliseconds() >= 20) {
364
+ stepType = 'ms';
365
+ step = 10;
366
+ setTopOfms(Ttick);
367
+ Ttick.millisecond(Math.floor((Ttick.millisecond()) / 10) * 10.0);
368
+ }
369
+ if (Tdiff.asMilliseconds() < 20) {
370
+ stepType = 'ms';
371
+ setTopOfms(Ttick);
372
+ step = 1;
373
+ }
374
+ var newTicks = [Ttick.add(step, stepType)];
375
+ while (newTicks[newTicks.length - 1] < Tend)
376
+ newTicks.push(newTicks[newTicks.length - 1].clone().add(step, stepType));
377
+ newTicks.pop();
378
+ setTick(newTicks.map(function (t) { return t.valueOf(); }));
379
+ setTformat(format);
380
+ if ((_a = props.showDate) !== null && _a !== void 0 ? _a : false)
381
+ setDformat(dateFormat);
382
+ else
383
+ setDformat('');
384
+ }, [context.XDomain, props.showDate]);
385
+ function setTopOfms(d) {
386
+ d.milliseconds(Math.floor(d.millisecond()));
387
+ }
388
+ function setTopOfSecond(d) {
389
+ setTopOfms(d);
390
+ d.milliseconds(0);
391
+ }
392
+ function setTopOfMinute(d) {
393
+ setTopOfSecond(d);
394
+ d.seconds(0);
395
+ }
396
+ function setTopOfHour(d) {
397
+ setTopOfMinute(d);
398
+ d.minutes(0);
399
+ }
400
+ function setTopOfDay(d) {
401
+ setTopOfHour(d);
402
+ d.hours(0);
403
+ }
404
+ function setTopOfWeek(d) {
405
+ setTopOfDay(d);
406
+ d.weekday(0);
407
+ }
408
+ function setTopOfMonth(d) {
409
+ setTopOfDay(d);
410
+ d.date(1);
411
+ }
412
+ function setTopOfYear(d) {
413
+ setTopOfDay(d);
414
+ d.dayOfYear(0);
415
+ }
416
+ function formatTS(t, f) {
417
+ var TS = moment.utc(t);
418
+ return TS.format(f);
419
+ }
420
+ return (React.createElement("g", null,
421
+ React.createElement("path", { stroke: 'black', style: { strokeWidth: 1 }, d: "M ".concat(props.offsetLeft - (((_a = props.showLeftMostTick) !== null && _a !== void 0 ? _a : true) ? 0 : 8), " ").concat(props.height - props.offsetBottom, " H ").concat(props.width - props.offsetRight + (((_b = props.showRightMostTick) !== null && _b !== void 0 ? _b : true) ? 0 : 8)) }),
422
+ ((_c = props.showLeftMostTick) !== null && _c !== void 0 ? _c : true) ? React.createElement("path", { stroke: 'black', style: { strokeWidth: 1 }, d: "M ".concat(props.offsetLeft, " ").concat(props.height - props.offsetBottom, " v ").concat(8) }) : null,
423
+ ((_d = props.showRightMostTick) !== null && _d !== void 0 ? _d : true) ? React.createElement("path", { stroke: 'black', style: { strokeWidth: 1 }, d: "M ".concat(props.width - props.offsetRight, " ").concat(props.height - props.offsetBottom, " v ").concat(8) }) : null,
424
+ props.showTicks === undefined || props.showTicks ?
425
+ React.createElement(React.Fragment, null,
426
+ tick.map(function (l, i) { return React.createElement("path", { key: i, stroke: 'black', style: { strokeWidth: 1, transition: 'd 0.5s' }, d: "M ".concat(context.XTransformation(l), " ").concat(props.height - props.offsetBottom + 6, " v ").concat(-6) }); }),
427
+ tick.map(function (l, i) { return React.createElement("text", { fill: 'black', key: i, style: { fontSize: '1em', textAnchor: 'middle', dominantBaseline: 'hanging', transition: 'x 0.5s, y 0.5s' }, y: props.height - props.offsetBottom + 8, x: context.XTransformation(l) }, formatTS(l, tFormat)); }))
428
+ : null,
429
+ title !== undefined ? React.createElement("text", { fill: 'black', style: { fontSize: '1em', textAnchor: 'middle', dominantBaseline: 'middle' }, x: props.offsetLeft + ((props.width - props.offsetLeft - props.offsetRight) / 2), y: props.height - props.offsetBottom + hAxis }, title) : null,
430
+ (dFormat !== '' && tick.length > 0) ? React.createElement("text", { fill: 'black', style: { fontSize: '1em', textAnchor: 'end', dominantBaseline: 'middle' }, x: props.width - props.offsetRight, y: props.height - props.offsetBottom + hAxis }, formatTS(tick[0], dFormat)) : null));
431
+ }
432
+ exports.default = React.memo(TimeAxis);
433
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGltZUF4aXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvVGltZUF4aXMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSx5R0FBeUc7QUFDekcsdUJBQXVCO0FBQ3ZCLEVBQUU7QUFDRixxRUFBcUU7QUFDckUsRUFBRTtBQUNGLHdHQUF3RztBQUN4Ryx3R0FBd0c7QUFDeEcsc0dBQXNHO0FBQ3RHLHdGQUF3RjtBQUN4RixFQUFFO0FBQ0YsMENBQTBDO0FBQzFDLEVBQUU7QUFDRix3R0FBd0c7QUFDeEcsd0dBQXdHO0FBQ3hHLDRFQUE0RTtBQUM1RSxFQUFFO0FBQ0YsOEJBQThCO0FBQzlCLHdHQUF3RztBQUN4RywwQkFBMEI7QUFDMUIsbURBQW1EO0FBQ25ELEVBQUU7QUFDRix5R0FBeUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV6Ryw2QkFBK0I7QUFDL0IsK0NBQTJDO0FBQzNDLCtCQUFpQztBQUNqQyxtRUFBNkQ7QUFDN0QsaUNBQW1DO0FBaUJuQyxJQUFNLFdBQVcsR0FBRyxPQUFPLENBQUM7QUFDNUIsSUFBTSxXQUFXLEdBQUcsV0FBVyxHQUFFLElBQUksQ0FBQztBQUN0QyxJQUFNLFNBQVMsR0FBRyxXQUFXLEdBQUUsSUFBSSxDQUFDO0FBQ3BDLElBQU0sUUFBUSxHQUFHLFNBQVMsR0FBRSxJQUFJLENBQUM7QUFDakMsSUFBTSxTQUFTLEdBQUcsUUFBUSxHQUFFLEdBQUcsQ0FBQztBQUtoQyxTQUFTLFFBQVEsQ0FBQyxLQUFhOztJQUMzQjs7TUFFRTtJQUNGLElBQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsMkJBQVksQ0FBQyxDQUFBO0lBQ3hDLElBQUEsS0FBQSxPQUFpQixLQUFLLENBQUMsUUFBUSxDQUFXLEVBQUUsQ0FBQyxJQUFBLEVBQTVDLElBQUksUUFBQSxFQUFDLE9BQU8sUUFBZ0MsQ0FBQztJQUM5QyxJQUFBLEtBQUEsT0FBc0IsS0FBSyxDQUFDLFFBQVEsQ0FBUyxDQUFDLENB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Q2xELElBQUksR0FBRyxDQUFDLENBQUM7WUFDVCxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEIsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDckQsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDakQsUUFBUSxHQUFHLEdBQUcsQ0FBQztZQUNmLElBQUksR0FBRyxFQUFFLENBQUM7WUFDVixZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEIsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDaEQsUUFBUSxHQUFHLEdBQUcsQ0FBQztZQUNmLElBQUksR0FBRyxDQUFDLENBQUM7WUFDVCxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckIsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDdkQsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksR0FBRyxFQUFFLENBQUM7WUFDbEQsUUFBUSxHQUFHLEdBQUcsQ0FBQztZQUNmLElBQUksR0FBRyxDQUFDLENBQUM7WUFDVCxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckIsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDdkQsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLEdBQUcsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDbkQsUUFBUSxHQUFHLEdBQUcsQ0FBQztZQUNmLElBQUksR0FBRyxDQUFDLENBQUM7WUFDVCxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDbEQsUUFBUSxHQUFHLEdBQUcsQ0FBQztZQUNmLElBQUksR0FBRyxDQUFDLENBQUM7WUFDVCxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEIsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDbEQsUUFBUSxHQUFHLEdBQUcsQ0FBQztZQUNmLElBQUksR0FBRyxDQUFDLENBQUM7WUFDVCxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEIsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7WUFDakQsUUFBUSxHQUFHLEdBQUcsQ0FBQztZQUNmLElBQUksR0FBRyxDQUFDLENBQUM7WUFDVCxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7WUFDaEQsUUFBUSxHQUFHLEdBQUcsQ0FBQztZQUNmLElBQUksR0FBRyxDQUFDLENBQUM7WUFDVCxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDL0MsUUFBUSxHQUFHLEdBQUcsQ0FBQztZQUNmLElBQUksR0FBRyxFQUFFLENBQUM7WUFDVixZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEIsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFFekQsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7WUFDaEQsUUFBUSxHQUFHLEdBQUcsQ0FBQztZQUNmLElBQUksR0FBRyxDQUFDLENBQUM7WUFDVCxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEIsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUE7UUFDdEQsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7WUFDbEQsUUFBUSxHQUFHLEdBQUcsQ0FBQztZQUNmLElBQUksR0FBRyxDQUFDLENBQUM7WUFDVCxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEIsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUE7UUFDdEQsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDakQsUUFBUSxHQUFHLEdBQUcsQ0FBQztZQUNmLElBQUksR0FBRyxDQUFDLENBQUM7WUFDVCxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEIsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDaEQsUUFBUSxHQUFHLEdBQUcsQ0FBQztZQUNmLElBQUksR0FBRyxFQUFFLENBQUM7WUFDVixjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUE7UUFDNUQsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDaEQsUUFBUSxHQUFHLEdBQUcsQ0FBQztZQUNmLElBQUksR0FBRyxFQUFFLENBQUM7WUFDVixjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUE7UUFDNUQsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7WUFDbkQsUUFBUSxHQUFHLEdBQUcsQ0FBQztZQUNmLElBQUksR0FBRyxDQUFDLENBQUM7WUFDVCxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUE7UUFDMUQsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUUsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7WUFDdEQsUUFBUSxHQUFHLEdBQUcsQ0FBQztZQUNmLElBQUksR0FBRyxDQUFDLENBQUM7WUFDVCxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUE7UUFDMUQsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUUsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDckQsUUFBUSxHQUFHLEdBQUcsQ0FBQztZQUNmLElBQUksR0FBRyxDQUFDLENBQUM7WUFDVCxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDcEQsUUFBUSxHQUFHLEdBQUcsQ0FBQztZQUNmLElBQUksR0FBRyxFQUFFLENBQUM7WUFDVixjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUE7UUFDeEQsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDcEQsUUFBUSxHQUFHLEdBQUcsQ0FBQztZQUNmLElBQUksR0FBRyxFQUFFLENBQUM7WUFDVixjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUE7UUFDeEQsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7WUFDckQsUUFBUSxHQUFHLEdBQUcsQ0FBQztZQUNmLElBQUksR0FBRyxDQUFDLENBQUM7WUFDVCxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUE7UUFDdEQsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUUsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7WUFDdEQsUUFBUSxHQUFHLEdBQUcsQ0FBQztZQUNmLElBQUksR0FBRyxDQUFDLENBQUM7WUFDVCxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUUsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDckQsUUFBUSxHQUFHLEdBQUcsQ0FBQztZQUNmLElBQUksR0FBRyxDQUFDLENBQUM7WUFDVCxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDcEQsUUFBUSxHQUFHLElBQUksQ0FBQztZQUNoQixJQUFJLEdBQUcsR0FBRyxDQUFDO1lBQ1gsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xCLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFBO1FBQ3BFLENBQUM7UUFDRCxJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3BELFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDaEIsSUFBSSxHQUFHLEdBQUcsQ0FBQztZQUNYLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsQixLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQTtRQUNwRSxDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxjQUFjLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUMzRCxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ2hCLElBQUksR0FBRyxHQUFHLENBQUM7WUFDWCxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUE7UUFDcEUsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLGNBQWMsRUFBRSxHQUFHLEdBQUcsSUFBSSxLQUFLLENBQUMsY0FBYyxFQUFFLElBQUksR0FBRyxFQUFFLENBQUM7WUFDbEUsUUFBUSxHQUFHLElBQUksQ0FBQztZQUNoQixJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1YsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xCLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFBO1FBQ2xFLENBQUM7UUFDRCxJQUFJLEtBQUssQ0FBQyxjQUFjLEVBQUUsR0FBRyxHQUFHLElBQUksS0FBSyxDQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ2pFLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDaEIsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNWLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsQixLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQTtRQUNsRSxDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsY0FBYyxFQUFFLEdBQUcsRUFBRSxFQUFDLENBQUM7WUFDL0IsUUFBUSxHQUFHLElBQUksQ0FBQztZQUNoQixVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEIsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNYLENBQUM7UUFFRCxJQUFNLFFBQVEsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDN0MsT0FBTyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJO1lBQ3pDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBRzNFLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUVmLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFYLENBQVcsQ0FBQyxDQUFDLENBQUM7UUFFeEMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRW5CLElBQUksTUFBQSxLQUFLLENBQUMsUUFBUSxtQ0FBSSxLQUFLO1lBQUUsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDOztZQUMvQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEIsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUV0QyxTQUFTLFVBQVUsQ0FBQyxDQUFnQjtRQUNsQyxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBQ0QsU0FBUyxjQUFjLENBQUMsQ0FBZ0I7UUFDdEMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2QsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNuQixDQUFDO0lBQ0QsU0FBUyxjQUFjLENBQUMsQ0FBZ0I7UUFDdEMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDZCxDQUFDO0lBQ0QsU0FBUyxZQUFZLENBQUMsQ0FBZ0I7UUFDcEMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDZCxDQUFDO0lBQ0QsU0FBUyxXQUFXLENBQUMsQ0FBZ0I7UUFDbkMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDWixDQUFDO0lBQ0QsU0FBUyxZQUFZLENBQUMsQ0FBZ0I7UUFDcEMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2YsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNkLENBQUM7SUFDRCxTQUFTLGFBQWEsQ0FBQyxDQUFnQjtRQUNyQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDZixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ1gsQ0FBQztJQUNELFNBQVMsWUFBWSxDQUFDLENBQWdCO1FBQ3BDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNmLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDaEIsQ0FBQztJQUdELFNBQVMsUUFBUSxDQUFDLENBQVMsRUFBRSxDQUFTO1FBQ3BDLElBQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekIsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxPQUFPLENBQUM7UUFDTiw4QkFBTSxNQUFNLEVBQUMsT0FBTyxFQUFDLEtBQUssRUFBRSxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsWUFBSyxLQUFLLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQSxNQUFBLEtBQUssQ0FBQyxnQkFBZ0IsbUNBQUksSUFBSSxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLFlBQVksZ0JBQU0sS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQSxNQUFBLEtBQUssQ0FBQyxpQkFBaUIsbUNBQUksSUFBSSxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFFLEdBQUc7UUFDN08sQ0FBQSxNQUFBLEtBQUssQ0FBQyxnQkFBZ0IsbUNBQUksSUFBSSxFQUFDLENBQUMsQ0FBQyw4QkFBTSxNQUFNLEVBQUMsT0FBTyxFQUFDLEtBQUssRUFBRSxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsWUFBSyxLQUFLLENBQUMsVUFBVSxjQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLFlBQVksZ0JBQU0sQ0FBQyxDQUFFLEdBQUksQ0FBQyxDQUFDLENBQUMsSUFBSTtRQUNsSyxDQUFBLE1BQUEsS0FBSyxDQUFDLGlCQUFpQixtQ0FBSSxJQUFJLEVBQUMsQ0FBQyxDQUFDLDhCQUFNLE1BQU0sRUFBQyxPQUFPLEVBQUMsS0FBSyxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxZQUFLLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLFdBQVcsY0FBSSxLQUFLLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxZQUFZLGdCQUFNLENBQUMsQ0FBRSxHQUFJLENBQUMsQ0FBQyxDQUFDLElBQUk7UUFDbEwsS0FBSyxDQUFDLFNBQVMsS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2hEO2dCQUNLLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBQyxDQUFDLEVBQUUsQ0FBQyxJQUFLLE9BQUEsOEJBQU0sR0FBRyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUMsT0FBTyxFQUFDLEtBQUssRUFBRSxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsRUFBRSxZQUFLLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLGNBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsWUFBWSxHQUFHLENBQUMsZ0JBQU0sQ0FBQyxDQUFDLENBQUUsR0FBSSxFQUF2SyxDQUF1SyxDQUFDO2dCQUMzTCxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSyxPQUFBLDhCQUFNLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxZQUFZLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFHLFFBQVEsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQVEsRUFBaFAsQ0FBZ1AsQ0FBQyxDQUN0UTtZQUNILENBQUMsQ0FBQyxJQUFJO1FBQ1QsS0FBSyxLQUFLLFNBQVMsQ0FBQSxDQUFDLENBQUMsOEJBQU0sSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFFLEtBQUssQ0FBQyxLQUFLLEdBQUUsS0FBSyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQ3hNLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxZQUFZLEdBQUcsS0FBSyxJQUFHLEtBQUssQ0FBUSxDQUFDLENBQUMsQ0FBQyxJQUFJO1FBQ3BFLENBQUMsT0FBTyxLQUFLLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyw4QkFBTSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxZQUFZLEdBQUcsS0FBSyxJQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUMvUCxDQUFDLENBQUE7QUFDVCxDQUFDO0FBR0Qsa0JBQWUsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyJ9