@grafana/viz-contract 1.1.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.
Files changed (173) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/LICENSE +201 -0
  3. package/README.md +140 -0
  4. package/fixtures/epoch-range/args.json +14 -0
  5. package/fixtures/epoch-range/meta.json +4 -0
  6. package/fixtures/epoch-range/request.json +17 -0
  7. package/fixtures/epoch-range/response.json +114 -0
  8. package/fixtures/epoch-range/result.json +252 -0
  9. package/fixtures/epoch-range/spec.json +141 -0
  10. package/fixtures/epoch-range/state.json +4 -0
  11. package/fixtures/error-all-queries-failed/spec.json +45 -0
  12. package/fixtures/error-all-queries-failed/state.json +8 -0
  13. package/fixtures/error-invalid-spec/spec.json +25 -0
  14. package/fixtures/error-invalid-spec/state.json +8 -0
  15. package/fixtures/error-unsupported-panel-type/spec.json +1372 -0
  16. package/fixtures/error-unsupported-panel-type/state.json +8 -0
  17. package/fixtures/error-unsupported-spec-version/spec.json +1372 -0
  18. package/fixtures/error-unsupported-spec-version/state.json +8 -0
  19. package/fixtures/hostile-label/args.json +14 -0
  20. package/fixtures/hostile-label/meta.json +4 -0
  21. package/fixtures/hostile-label/request.json +17 -0
  22. package/fixtures/hostile-label/response.json +420 -0
  23. package/fixtures/hostile-label/result.json +558 -0
  24. package/fixtures/hostile-label/spec.json +447 -0
  25. package/fixtures/hostile-label/state.json +4 -0
  26. package/fixtures/no-data/args.json +14 -0
  27. package/fixtures/no-data/meta.json +4 -0
  28. package/fixtures/no-data/request.json +17 -0
  29. package/fixtures/no-data/response.json +40 -0
  30. package/fixtures/no-data/result.json +178 -0
  31. package/fixtures/no-data/spec.json +67 -0
  32. package/fixtures/no-data/state.json +4 -0
  33. package/fixtures/partial-error/args.json +20 -0
  34. package/fixtures/partial-error/meta.json +4 -0
  35. package/fixtures/partial-error/request.json +28 -0
  36. package/fixtures/partial-error/response.json +220 -0
  37. package/fixtures/partial-error/result.json +358 -0
  38. package/fixtures/partial-error/spec.json +253 -0
  39. package/fixtures/partial-error/state.json +9 -0
  40. package/fixtures/pick-annotations-only/args.json +10 -0
  41. package/fixtures/pick-annotations-only/meta.json +4 -0
  42. package/fixtures/pick-annotations-only/response.json +41 -0
  43. package/fixtures/pick-annotations-only/result.json +53 -0
  44. package/fixtures/pick-categories/args.json +10 -0
  45. package/fixtures/pick-categories/meta.json +4 -0
  46. package/fixtures/pick-categories/response.json +58 -0
  47. package/fixtures/pick-categories/result.json +116 -0
  48. package/fixtures/pick-empty-result/args.json +10 -0
  49. package/fixtures/pick-empty-result/meta.json +4 -0
  50. package/fixtures/pick-empty-result/response.json +11 -0
  51. package/fixtures/pick-empty-result/result.json +23 -0
  52. package/fixtures/pick-failed-query-with-frames/args.json +10 -0
  53. package/fixtures/pick-failed-query-with-frames/meta.json +4 -0
  54. package/fixtures/pick-failed-query-with-frames/response.json +43 -0
  55. package/fixtures/pick-failed-query-with-frames/result.json +131 -0
  56. package/fixtures/pick-few-parts/args.json +10 -0
  57. package/fixtures/pick-few-parts/meta.json +4 -0
  58. package/fixtures/pick-few-parts/response.json +40 -0
  59. package/fixtures/pick-few-parts/result.json +98 -0
  60. package/fixtures/pick-heatmap-cells/args.json +10 -0
  61. package/fixtures/pick-heatmap-cells/meta.json +4 -0
  62. package/fixtures/pick-heatmap-cells/response.json +55 -0
  63. package/fixtures/pick-heatmap-cells/result.json +143 -0
  64. package/fixtures/pick-log-lines/args.json +10 -0
  65. package/fixtures/pick-log-lines/meta.json +4 -0
  66. package/fixtures/pick-log-lines/response.json +49 -0
  67. package/fixtures/pick-log-lines/result.json +76 -0
  68. package/fixtures/pick-no-rows/args.json +10 -0
  69. package/fixtures/pick-no-rows/meta.json +4 -0
  70. package/fixtures/pick-no-rows/response.json +32 -0
  71. package/fixtures/pick-no-rows/result.json +120 -0
  72. package/fixtures/pick-node-graph/args.json +10 -0
  73. package/fixtures/pick-node-graph/meta.json +4 -0
  74. package/fixtures/pick-node-graph/response.json +77 -0
  75. package/fixtures/pick-node-graph/result.json +89 -0
  76. package/fixtures/pick-numeric-only/args.json +10 -0
  77. package/fixtures/pick-numeric-only/meta.json +4 -0
  78. package/fixtures/pick-numeric-only/response.json +40 -0
  79. package/fixtures/pick-numeric-only/result.json +89 -0
  80. package/fixtures/pick-single-stat/args.json +10 -0
  81. package/fixtures/pick-single-stat/meta.json +4 -0
  82. package/fixtures/pick-single-stat/response.json +29 -0
  83. package/fixtures/pick-single-stat/result.json +69 -0
  84. package/fixtures/pick-time-series-instant/args.json +10 -0
  85. package/fixtures/pick-time-series-instant/meta.json +4 -0
  86. package/fixtures/pick-time-series-instant/response.json +40 -0
  87. package/fixtures/pick-time-series-instant/result.json +128 -0
  88. package/fixtures/pick-time-series-long/args.json +10 -0
  89. package/fixtures/pick-time-series-long/meta.json +4 -0
  90. package/fixtures/pick-time-series-long/response.json +61 -0
  91. package/fixtures/pick-time-series-long/result.json +167 -0
  92. package/fixtures/pick-time-series-multi-frame/args.json +10 -0
  93. package/fixtures/pick-time-series-multi-frame/meta.json +4 -0
  94. package/fixtures/pick-time-series-multi-frame/response.json +74 -0
  95. package/fixtures/pick-time-series-multi-frame/result.json +162 -0
  96. package/fixtures/pick-time-series-null-time/args.json +10 -0
  97. package/fixtures/pick-time-series-null-time/meta.json +4 -0
  98. package/fixtures/pick-time-series-null-time/response.json +40 -0
  99. package/fixtures/pick-time-series-null-time/result.json +128 -0
  100. package/fixtures/pick-time-series-single/args.json +10 -0
  101. package/fixtures/pick-time-series-single/meta.json +4 -0
  102. package/fixtures/pick-time-series-single/response.json +40 -0
  103. package/fixtures/pick-time-series-single/result.json +128 -0
  104. package/fixtures/pick-time-series-wide/args.json +10 -0
  105. package/fixtures/pick-time-series-wide/meta.json +4 -0
  106. package/fixtures/pick-time-series-wide/response.json +61 -0
  107. package/fixtures/pick-time-series-wide/result.json +149 -0
  108. package/fixtures/prometheus-line/args.json +14 -0
  109. package/fixtures/prometheus-line/meta.json +4 -0
  110. package/fixtures/prometheus-line/request.json +17 -0
  111. package/fixtures/prometheus-line/response.json +1344 -0
  112. package/fixtures/prometheus-line/result.json +1483 -0
  113. package/fixtures/prometheus-line/spec.json +1372 -0
  114. package/fixtures/prometheus-line/state.json +4 -0
  115. package/fixtures/smoke-barchart/spec.json +64 -0
  116. package/fixtures/smoke-barchart/state.json +4 -0
  117. package/fixtures/smoke-boxplot/spec.json +96 -0
  118. package/fixtures/smoke-boxplot/state.json +4 -0
  119. package/fixtures/smoke-bubble/spec.json +229 -0
  120. package/fixtures/smoke-bubble/state.json +4 -0
  121. package/fixtures/smoke-candlestick/spec.json +97 -0
  122. package/fixtures/smoke-candlestick/state.json +4 -0
  123. package/fixtures/smoke-chord/spec.json +72 -0
  124. package/fixtures/smoke-chord/state.json +4 -0
  125. package/fixtures/smoke-funnel/spec.json +62 -0
  126. package/fixtures/smoke-funnel/state.json +4 -0
  127. package/fixtures/smoke-geomap/spec.json +76 -0
  128. package/fixtures/smoke-geomap/state.json +4 -0
  129. package/fixtures/smoke-heatmap/spec.json +103 -0
  130. package/fixtures/smoke-heatmap/state.json +4 -0
  131. package/fixtures/smoke-histogram/spec.json +63 -0
  132. package/fixtures/smoke-histogram/state.json +4 -0
  133. package/fixtures/smoke-nodeGraph/spec.json +101 -0
  134. package/fixtures/smoke-nodeGraph/state.json +4 -0
  135. package/fixtures/smoke-parallel/spec.json +78 -0
  136. package/fixtures/smoke-parallel/state.json +4 -0
  137. package/fixtures/smoke-piechart/spec.json +62 -0
  138. package/fixtures/smoke-piechart/state.json +4 -0
  139. package/fixtures/smoke-radar/spec.json +82 -0
  140. package/fixtures/smoke-radar/state.json +4 -0
  141. package/fixtures/smoke-sankey/spec.json +72 -0
  142. package/fixtures/smoke-sankey/state.json +4 -0
  143. package/fixtures/smoke-state-timeline/spec.json +64 -0
  144. package/fixtures/smoke-state-timeline/state.json +4 -0
  145. package/fixtures/smoke-status-history/spec.json +64 -0
  146. package/fixtures/smoke-status-history/state.json +4 -0
  147. package/fixtures/smoke-streamgraph/spec.json +229 -0
  148. package/fixtures/smoke-streamgraph/state.json +4 -0
  149. package/fixtures/smoke-sunburst/spec.json +72 -0
  150. package/fixtures/smoke-sunburst/state.json +4 -0
  151. package/fixtures/smoke-timeseries/spec.json +163 -0
  152. package/fixtures/smoke-timeseries/state.json +4 -0
  153. package/fixtures/smoke-treemap/spec.json +72 -0
  154. package/fixtures/smoke-treemap/state.json +4 -0
  155. package/fixtures/too-large/args.json +14 -0
  156. package/fixtures/too-large/meta.json +4 -0
  157. package/fixtures/type-mismatch/args.json +15 -0
  158. package/fixtures/type-mismatch/meta.json +4 -0
  159. package/fixtures/type-mismatch/request.json +17 -0
  160. package/fixtures/type-mismatch/response.json +1344 -0
  161. package/fixtures/type-mismatch/result.json +9 -0
  162. package/package.json +32 -0
  163. package/registry/chart-types.json +170 -0
  164. package/registry/constants.json +14 -0
  165. package/registry/notices.json +40 -0
  166. package/registry/panel-types.json +14 -0
  167. package/registry/pick.json +46 -0
  168. package/registry/states.json +85 -0
  169. package/renderer-api.d.ts +70 -0
  170. package/schemas/bundled/query-datasource-args.schema.json +86 -0
  171. package/schemas/bundled/registry.schema.json +375 -0
  172. package/schemas/bundled/tool-result.schema.json +245 -0
  173. package/schemas/bundled/viz-spec.schema.json +261 -0
@@ -0,0 +1,558 @@
1
+ {
2
+ "chart": "timeseries",
3
+ "panel": {
4
+ "type": "grafana-echartscartesian-panel",
5
+ "options": {
6
+ "seriesType": "line"
7
+ },
8
+ "fieldConfig": {
9
+ "defaults": {
10
+ "unit": "reqps"
11
+ }
12
+ }
13
+ },
14
+ "alternatives": [
15
+ {
16
+ "chart": "barchart",
17
+ "panel": {
18
+ "type": "grafana-echartscartesian-panel",
19
+ "options": {
20
+ "seriesType": "bar"
21
+ },
22
+ "fieldConfig": {
23
+ "defaults": {
24
+ "unit": "reqps"
25
+ }
26
+ }
27
+ }
28
+ },
29
+ {
30
+ "chart": "histogram",
31
+ "panel": {
32
+ "type": "grafana-echartscartesian-panel",
33
+ "options": {
34
+ "histogram": true
35
+ },
36
+ "fieldConfig": {
37
+ "defaults": {
38
+ "unit": "reqps"
39
+ }
40
+ }
41
+ }
42
+ },
43
+ {
44
+ "chart": "piechart",
45
+ "panel": {
46
+ "type": "grafana-echartsparttowhole-panel",
47
+ "options": {
48
+ "seriesType": "pie"
49
+ },
50
+ "fieldConfig": {
51
+ "defaults": {
52
+ "unit": "reqps"
53
+ }
54
+ }
55
+ }
56
+ },
57
+ {
58
+ "chart": "funnel",
59
+ "panel": {
60
+ "type": "grafana-echartsparttowhole-panel",
61
+ "options": {
62
+ "seriesType": "funnel"
63
+ },
64
+ "fieldConfig": {
65
+ "defaults": {
66
+ "unit": "reqps"
67
+ }
68
+ }
69
+ }
70
+ },
71
+ {
72
+ "chart": "heatmap",
73
+ "panel": {
74
+ "type": "grafana-echartsheatmap-panel",
75
+ "options": {},
76
+ "fieldConfig": {
77
+ "defaults": {
78
+ "unit": "reqps"
79
+ }
80
+ }
81
+ }
82
+ },
83
+ {
84
+ "chart": "state-timeline",
85
+ "panel": {
86
+ "type": "grafana-echartsstatetimeline-panel",
87
+ "options": {},
88
+ "fieldConfig": {
89
+ "defaults": {
90
+ "unit": "reqps"
91
+ }
92
+ }
93
+ }
94
+ },
95
+ {
96
+ "chart": "status-history",
97
+ "panel": {
98
+ "type": "grafana-echartsstatushistory-panel",
99
+ "options": {},
100
+ "fieldConfig": {
101
+ "defaults": {
102
+ "unit": "reqps"
103
+ }
104
+ }
105
+ }
106
+ },
107
+ {
108
+ "chart": "streamgraph",
109
+ "panel": {
110
+ "type": "grafana-echartsstream-panel",
111
+ "options": {
112
+ "streamChartType": "river"
113
+ },
114
+ "fieldConfig": {
115
+ "defaults": {
116
+ "unit": "reqps"
117
+ }
118
+ }
119
+ }
120
+ },
121
+ {
122
+ "chart": "bubble",
123
+ "panel": {
124
+ "type": "grafana-echartsstream-panel",
125
+ "options": {
126
+ "streamChartType": "bubble"
127
+ },
128
+ "fieldConfig": {
129
+ "defaults": {
130
+ "unit": "reqps"
131
+ }
132
+ }
133
+ }
134
+ }
135
+ ],
136
+ "data": {
137
+ "range": {
138
+ "from": 1790267077294,
139
+ "to": 1790353477294
140
+ },
141
+ "capturedAt": 1790353477806,
142
+ "results": {
143
+ "A": {
144
+ "status": 200,
145
+ "frames": [
146
+ {
147
+ "schema": {
148
+ "refId": "A",
149
+ "meta": {
150
+ "type": "timeseries-multi",
151
+ "typeVersion": [
152
+ 0,
153
+ 1
154
+ ]
155
+ },
156
+ "fields": [
157
+ {
158
+ "name": "Time",
159
+ "type": "time",
160
+ "typeInfo": {
161
+ "frame": "time.Time"
162
+ }
163
+ },
164
+ {
165
+ "name": "Value",
166
+ "type": "number",
167
+ "typeInfo": {
168
+ "frame": "float64"
169
+ },
170
+ "labels": {
171
+ "handler": "<img src=x onerror=alert(1)>"
172
+ },
173
+ "config": {
174
+ "displayNameFromDS": "<img src=x onerror=alert(1)>"
175
+ }
176
+ }
177
+ ]
178
+ },
179
+ "data": {
180
+ "values": [
181
+ [
182
+ 1790351737294,
183
+ 1790351797294,
184
+ 1790351857294,
185
+ 1790351917294,
186
+ 1790351977294,
187
+ 1790352037294,
188
+ 1790352097294,
189
+ 1790352157294,
190
+ 1790352217294,
191
+ 1790352277294,
192
+ 1790352337294,
193
+ 1790352397294,
194
+ 1790352457294,
195
+ 1790352517294,
196
+ 1790352577294,
197
+ 1790352637294,
198
+ 1790352697294,
199
+ 1790352757294,
200
+ 1790352817294,
201
+ 1790352877294,
202
+ 1790352937294,
203
+ 1790352997294,
204
+ 1790353057294,
205
+ 1790353117294,
206
+ 1790353177294,
207
+ 1790353237294,
208
+ 1790353297294,
209
+ 1790353357294,
210
+ 1790353417294,
211
+ 1790353477294
212
+ ],
213
+ [
214
+ 10,
215
+ 10.65,
216
+ 11.24,
217
+ 11.68,
218
+ 11.94,
219
+ 11.99,
220
+ 11.82,
221
+ 11.45,
222
+ 10.91,
223
+ 10.28,
224
+ 9.62,
225
+ 9,
226
+ 8.49,
227
+ 8.14,
228
+ 8,
229
+ 8.08,
230
+ 8.37,
231
+ 8.84,
232
+ 9.44,
233
+ 10.1,
234
+ 10.75,
235
+ 11.31,
236
+ 11.73,
237
+ 11.97,
238
+ 11.98,
239
+ 11.77,
240
+ 11.38,
241
+ 10.82,
242
+ 10.18,
243
+ 9.52
244
+ ]
245
+ ]
246
+ }
247
+ },
248
+ {
249
+ "schema": {
250
+ "refId": "A",
251
+ "meta": {
252
+ "type": "timeseries-multi",
253
+ "typeVersion": [
254
+ 0,
255
+ 1
256
+ ]
257
+ },
258
+ "fields": [
259
+ {
260
+ "name": "Time",
261
+ "type": "time",
262
+ "typeInfo": {
263
+ "frame": "time.Time"
264
+ }
265
+ },
266
+ {
267
+ "name": "Value",
268
+ "type": "number",
269
+ "typeInfo": {
270
+ "frame": "float64"
271
+ },
272
+ "labels": {
273
+ "handler": "</script><script>alert(2)</script>"
274
+ },
275
+ "config": {
276
+ "displayNameFromDS": "</script><script>alert(2)</script>"
277
+ }
278
+ }
279
+ ]
280
+ },
281
+ "data": {
282
+ "values": [
283
+ [
284
+ 1790351737294,
285
+ 1790351797294,
286
+ 1790351857294,
287
+ 1790351917294,
288
+ 1790351977294,
289
+ 1790352037294,
290
+ 1790352097294,
291
+ 1790352157294,
292
+ 1790352217294,
293
+ 1790352277294,
294
+ 1790352337294,
295
+ 1790352397294,
296
+ 1790352457294,
297
+ 1790352517294,
298
+ 1790352577294,
299
+ 1790352637294,
300
+ 1790352697294,
301
+ 1790352757294,
302
+ 1790352817294,
303
+ 1790352877294,
304
+ 1790352937294,
305
+ 1790352997294,
306
+ 1790353057294,
307
+ 1790353117294,
308
+ 1790353177294,
309
+ 1790353237294,
310
+ 1790353297294,
311
+ 1790353357294,
312
+ 1790353417294,
313
+ 1790353477294
314
+ ],
315
+ [
316
+ 14.68,
317
+ 14.94,
318
+ 14.99,
319
+ 14.82,
320
+ 14.45,
321
+ 13.91,
322
+ 13.28,
323
+ 12.62,
324
+ 12,
325
+ 11.49,
326
+ 11.14,
327
+ 11,
328
+ 11.08,
329
+ 11.37,
330
+ 11.84,
331
+ 12.44,
332
+ 13.1,
333
+ 13.75,
334
+ 14.31,
335
+ 14.73,
336
+ 14.97,
337
+ 14.98,
338
+ 14.77,
339
+ 14.38,
340
+ 13.82,
341
+ 13.18,
342
+ 12.52,
343
+ 11.91,
344
+ 11.42,
345
+ 11.11
346
+ ]
347
+ ]
348
+ }
349
+ },
350
+ {
351
+ "schema": {
352
+ "refId": "A",
353
+ "meta": {
354
+ "type": "timeseries-multi",
355
+ "typeVersion": [
356
+ 0,
357
+ 1
358
+ ]
359
+ },
360
+ "fields": [
361
+ {
362
+ "name": "Time",
363
+ "type": "time",
364
+ "typeInfo": {
365
+ "frame": "time.Time"
366
+ }
367
+ },
368
+ {
369
+ "name": "Value",
370
+ "type": "number",
371
+ "typeInfo": {
372
+ "frame": "float64"
373
+ },
374
+ "labels": {
375
+ "handler": "{{constructor.constructor(\"alert(3)\")()}}"
376
+ },
377
+ "config": {
378
+ "displayNameFromDS": "{{constructor.constructor(\"alert(3)\")()}}"
379
+ }
380
+ }
381
+ ]
382
+ },
383
+ "data": {
384
+ "values": [
385
+ [
386
+ 1790351737294,
387
+ 1790351797294,
388
+ 1790351857294,
389
+ 1790351917294,
390
+ 1790351977294,
391
+ 1790352037294,
392
+ 1790352097294,
393
+ 1790352157294,
394
+ 1790352217294,
395
+ 1790352277294,
396
+ 1790352337294,
397
+ 1790352397294,
398
+ 1790352457294,
399
+ 1790352517294,
400
+ 1790352577294,
401
+ 1790352637294,
402
+ 1790352697294,
403
+ 1790352757294,
404
+ 1790352817294,
405
+ 1790352877294,
406
+ 1790352937294,
407
+ 1790352997294,
408
+ 1790353057294,
409
+ 1790353117294,
410
+ 1790353177294,
411
+ 1790353237294,
412
+ 1790353297294,
413
+ 1790353357294,
414
+ 1790353417294,
415
+ 1790353477294
416
+ ],
417
+ [
418
+ 17.82,
419
+ 17.45,
420
+ 16.91,
421
+ 16.28,
422
+ 15.62,
423
+ 15,
424
+ 14.49,
425
+ 14.14,
426
+ 14,
427
+ 14.08,
428
+ 14.37,
429
+ 14.84,
430
+ 15.44,
431
+ 16.1,
432
+ 16.75,
433
+ 17.31,
434
+ 17.73,
435
+ 17.97,
436
+ 17.98,
437
+ 17.77,
438
+ 17.38,
439
+ 16.82,
440
+ 16.18,
441
+ 15.52,
442
+ 14.91,
443
+ 14.42,
444
+ 14.11,
445
+ 14,
446
+ 14.11,
447
+ 14.43
448
+ ]
449
+ ]
450
+ }
451
+ },
452
+ {
453
+ "schema": {
454
+ "refId": "A",
455
+ "meta": {
456
+ "type": "timeseries-multi",
457
+ "typeVersion": [
458
+ 0,
459
+ 1
460
+ ]
461
+ },
462
+ "fields": [
463
+ {
464
+ "name": "Time",
465
+ "type": "time",
466
+ "typeInfo": {
467
+ "frame": "time.Time"
468
+ }
469
+ },
470
+ {
471
+ "name": "Value",
472
+ "type": "number",
473
+ "typeInfo": {
474
+ "frame": "float64"
475
+ },
476
+ "labels": {
477
+ "handler": "\"><svg onload=alert(4)>"
478
+ },
479
+ "config": {
480
+ "displayNameFromDS": "\"><svg onload=alert(4)>"
481
+ }
482
+ }
483
+ ]
484
+ },
485
+ "data": {
486
+ "values": [
487
+ [
488
+ 1790351737294,
489
+ 1790351797294,
490
+ 1790351857294,
491
+ 1790351917294,
492
+ 1790351977294,
493
+ 1790352037294,
494
+ 1790352097294,
495
+ 1790352157294,
496
+ 1790352217294,
497
+ 1790352277294,
498
+ 1790352337294,
499
+ 1790352397294,
500
+ 1790352457294,
501
+ 1790352517294,
502
+ 1790352577294,
503
+ 1790352637294,
504
+ 1790352697294,
505
+ 1790352757294,
506
+ 1790352817294,
507
+ 1790352877294,
508
+ 1790352937294,
509
+ 1790352997294,
510
+ 1790353057294,
511
+ 1790353117294,
512
+ 1790353177294,
513
+ 1790353237294,
514
+ 1790353297294,
515
+ 1790353357294,
516
+ 1790353417294,
517
+ 1790353477294
518
+ ],
519
+ [
520
+ 19.28,
521
+ 18.62,
522
+ 18,
523
+ 17.49,
524
+ 17.14,
525
+ 17,
526
+ 17.08,
527
+ 17.37,
528
+ 17.84,
529
+ 18.44,
530
+ 19.1,
531
+ 19.75,
532
+ 20.31,
533
+ 20.73,
534
+ 20.97,
535
+ 20.98,
536
+ 20.77,
537
+ 20.38,
538
+ 19.82,
539
+ 19.18,
540
+ 18.52,
541
+ 17.91,
542
+ 17.42,
543
+ 17.11,
544
+ 17,
545
+ 17.11,
546
+ 17.43,
547
+ 17.93,
548
+ 18.54,
549
+ 19.2
550
+ ]
551
+ ]
552
+ }
553
+ }
554
+ ]
555
+ }
556
+ }
557
+ }
558
+ }