@cdc/dashboard 4.25.3 → 4.25.5-1

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 (54) hide show
  1. package/Dynamic_Data.md +79 -0
  2. package/Override_Data.md +39 -0
  3. package/dist/cdcdashboard.js +67657 -70123
  4. package/examples/legend-issue-data.json +1874 -0
  5. package/examples/legend-issue.json +749 -0
  6. package/examples/map.json +628 -0
  7. package/index.html +1 -26
  8. package/package.json +10 -15
  9. package/src/CdcDashboardComponent.tsx +32 -5
  10. package/src/_stories/Dashboard.stories.tsx +2 -0
  11. package/src/_stories/_mock/api-filter-map.json +42 -1
  12. package/src/components/CollapsibleVisualizationRow.tsx +2 -2
  13. package/src/components/DashboardFilters/DashboardFilters.tsx +1 -1
  14. package/src/components/DashboardFilters/DashboardFiltersEditor/components/APIModal.tsx +129 -0
  15. package/src/components/DashboardFilters/DashboardFiltersEditor/components/FilterEditor.tsx +680 -652
  16. package/src/components/DataDesignerModal.tsx +33 -14
  17. package/src/components/MultiConfigTabs/multiconfigtabs.styles.css +3 -0
  18. package/src/components/Row.tsx +2 -1
  19. package/src/components/VisualizationRow.tsx +1 -1
  20. package/src/helpers/reloadURLHelpers.ts +10 -2
  21. package/src/helpers/shouldLoadAllFilters.ts +30 -30
  22. package/src/index.tsx +2 -1
  23. package/src/scss/main.scss +0 -5
  24. package/src/store/dashboard.actions.ts +2 -0
  25. package/src/store/dashboard.reducer.ts +15 -0
  26. package/src/types/DataSet.ts +1 -0
  27. package/src/types/SharedFilter.ts +2 -0
  28. package/LICENSE +0 -201
  29. package/examples/private/DEV-10120.json +0 -1294
  30. package/examples/private/DEV-10527.json +0 -845
  31. package/examples/private/DEV-10586.json +0 -54319
  32. package/examples/private/DEV-10856.json +0 -54319
  33. package/examples/private/DEV-9199.json +0 -606
  34. package/examples/private/DEV-9644.json +0 -20092
  35. package/examples/private/DEV-9684.json +0 -2135
  36. package/examples/private/DEV-9932.json +0 -95
  37. package/examples/private/DEV-9989.json +0 -229
  38. package/examples/private/art-dashboard.json +0 -18174
  39. package/examples/private/art-scratch.json +0 -2406
  40. package/examples/private/bird-flu-2.json +0 -440
  41. package/examples/private/bird-flu.json +0 -413
  42. package/examples/private/dashboard-config-ehdi.json +0 -29915
  43. package/examples/private/dashboard-map-filter.json +0 -815
  44. package/examples/private/dashboard-margins.js +0 -15
  45. package/examples/private/dataset.json +0 -1452
  46. package/examples/private/dev-10856-2.json +0 -1348
  47. package/examples/private/ehdi-data.json +0 -29502
  48. package/examples/private/exposure-source-h5-data.csv +0 -26
  49. package/examples/private/fatal-data.csv +0 -3159
  50. package/examples/private/feelings.json +0 -1
  51. package/examples/private/gaza-issue.json +0 -1214
  52. package/examples/private/markup.json +0 -115
  53. package/examples/private/nhis.json +0 -1792
  54. package/examples/private/workforce.json +0 -2041
@@ -0,0 +1,628 @@
1
+ {
2
+ "dashboard": {
3
+ "theme": "theme-blue",
4
+ "sharedFilters": [
5
+ {
6
+ "key": "New Dashboard Filter 1",
7
+ "showDropdown": true,
8
+ "values": [
9
+ "Home",
10
+ "NA",
11
+ "School",
12
+ "Vehicle",
13
+ "Work"
14
+ ],
15
+ "type": "datafilter",
16
+ "orderedValues": [
17
+ "Home",
18
+ "NA",
19
+ "School",
20
+ "Vehicle",
21
+ "Work"
22
+ ],
23
+ "columnName": "Location",
24
+ "tier": 1,
25
+ "usedBy": [
26
+ "map1744661014711"
27
+ ]
28
+ }
29
+ ]
30
+ },
31
+ "rows": [
32
+ {
33
+ "columns": [
34
+ {
35
+ "width": 12,
36
+ "widget": "dashboardFilters1744660983576"
37
+ },
38
+ {},
39
+ {}
40
+ ]
41
+ },
42
+ {
43
+ "columns": [
44
+ {
45
+ "width": 12,
46
+ "widget": "map1744661014711"
47
+ }
48
+ ]
49
+ }
50
+ ],
51
+ "visualizations": {
52
+ "dashboardFilters1744660983576": {
53
+ "filters": [],
54
+ "filterBehavior": "Filter Change",
55
+ "newViz": true,
56
+ "openModal": true,
57
+ "uid": "dashboardFilters1744660983576",
58
+ "type": "dashboardFilters",
59
+ "sharedFilterIndexes": [
60
+ 0
61
+ ],
62
+ "visualizationType": "dashboardFilters"
63
+ },
64
+ "map1744661014711": {
65
+ "annotations": [],
66
+ "general": {
67
+ "geoType": "us",
68
+ "navigationTarget": "_self",
69
+ "noStateFoundMessage": "Map Unavailable",
70
+ "annotationDropdownText": "Annotations",
71
+ "geoBorderColor": "darkGray",
72
+ "headerColor": "theme-blue",
73
+ "title": "",
74
+ "showTitle": true,
75
+ "showSidebar": true,
76
+ "showDownloadMediaButton": false,
77
+ "displayAsHex": false,
78
+ "displayStateLabels": true,
79
+ "territoriesAlwaysShow": false,
80
+ "language": "en",
81
+ "geoLabelOverride": "",
82
+ "hasRegions": false,
83
+ "fullBorder": false,
84
+ "type": "data",
85
+ "convertFipsCodes": true,
86
+ "palette": {
87
+ "isReversed": false
88
+ },
89
+ "allowMapZoom": true,
90
+ "hideGeoColumnInTooltip": false,
91
+ "hidePrimaryColumnInTooltip": false,
92
+ "statePicked": {
93
+ "fipsCode": "01",
94
+ "stateName": "Alabama"
95
+ },
96
+ "expandDataTable": false
97
+ },
98
+ "type": "map",
99
+ "color": "pinkpurple",
100
+ "columns": {
101
+ "geo": {
102
+ "name": "STATE",
103
+ "label": "Location",
104
+ "tooltip": false,
105
+ "dataTable": true
106
+ },
107
+ "primary": {
108
+ "dataTable": true,
109
+ "tooltip": true,
110
+ "prefix": "",
111
+ "suffix": "",
112
+ "name": "Rate",
113
+ "label": "Rate",
114
+ "roundToPlace": 0
115
+ },
116
+ "navigate": {
117
+ "name": ""
118
+ },
119
+ "latitude": {
120
+ "name": ""
121
+ },
122
+ "longitude": {
123
+ "name": ""
124
+ },
125
+ "additionalColumn1": {
126
+ "label": "",
127
+ "dataTable": true,
128
+ "tooltips": false,
129
+ "prefix": "",
130
+ "suffix": "",
131
+ "name": "Location"
132
+ }
133
+ },
134
+ "legend": {
135
+ "descriptions": {},
136
+ "specialClasses": [],
137
+ "unified": false,
138
+ "singleColumn": false,
139
+ "singleRow": false,
140
+ "verticalSorted": false,
141
+ "showSpecialClassesLast": false,
142
+ "dynamicDescription": false,
143
+ "type": "equalnumber",
144
+ "numberOfItems": 3,
145
+ "position": "side",
146
+ "title": "",
147
+ "style": "circles",
148
+ "subStyle": "linear blocks",
149
+ "tickRotation": "",
150
+ "singleColumnLegend": false,
151
+ "hideBorder": false
152
+ },
153
+ "filters": [],
154
+ "table": {
155
+ "wrapColumns": false,
156
+ "label": "Data Table",
157
+ "expanded": false,
158
+ "limitHeight": false,
159
+ "height": "",
160
+ "caption": "",
161
+ "showDownloadUrl": false,
162
+ "showDataTableLink": true,
163
+ "showDownloadLinkBelow": true,
164
+ "showFullGeoNameInCSV": false,
165
+ "forceDisplay": true,
166
+ "download": true,
167
+ "indexLabel": "",
168
+ "cellMinWidth": "0",
169
+ "sharedFilterColumns": [
170
+ "Location"
171
+ ]
172
+ },
173
+ "tooltips": {
174
+ "appearanceType": "hover",
175
+ "linkLabel": "Learn More",
176
+ "capitalizeLabels": true,
177
+ "opacity": 90
178
+ },
179
+ "visual": {
180
+ "minBubbleSize": 1,
181
+ "maxBubbleSize": 20,
182
+ "extraBubbleBorder": false,
183
+ "cityStyle": "circle",
184
+ "cityStyleLabel": "",
185
+ "showBubbleZeros": false,
186
+ "additionalCityStyles": [],
187
+ "geoCodeCircleSize": 8
188
+ },
189
+ "mapPosition": {
190
+ "coordinates": [
191
+ 0,
192
+ 30
193
+ ],
194
+ "zoom": 1
195
+ },
196
+ "map": {
197
+ "layers": [],
198
+ "patterns": []
199
+ },
200
+ "hexMap": {
201
+ "type": "",
202
+ "shapeGroups": [
203
+ {
204
+ "legendTitle": "",
205
+ "legendDescription": "",
206
+ "items": [
207
+ {
208
+ "key": "",
209
+ "shape": "Arrow Up",
210
+ "column": "",
211
+ "operator": "=",
212
+ "value": ""
213
+ }
214
+ ]
215
+ }
216
+ ]
217
+ },
218
+ "filterBehavior": "Filter Change",
219
+ "filterIntro": "",
220
+ "openModal": true,
221
+ "uid": "map1744661014711",
222
+ "dataDescription": {
223
+ "horizontal": false,
224
+ "series": false
225
+ },
226
+ "dataKey": "valid-data-map.csv",
227
+ "version": "4.25.4",
228
+ "migrations": {
229
+ "addColorMigration": true
230
+ }
231
+ }
232
+ },
233
+ "table": {
234
+ "label": "Data Table",
235
+ "show": true,
236
+ "showDownloadUrl": false,
237
+ "showDownloadLinkBelow": true,
238
+ "showVertical": true
239
+ },
240
+ "id": 15,
241
+ "category": "General",
242
+ "label": "Dashboard",
243
+ "type": "dashboard",
244
+ "subType": null,
245
+ "orientation": null,
246
+ "icon": {
247
+ "key": null,
248
+ "ref": null,
249
+ "props": {},
250
+ "_owner": null,
251
+ "_store": {}
252
+ },
253
+ "content": "Present multiple data visualizations with shared filter controls.",
254
+ "newViz": true,
255
+ "datasets": {
256
+ "valid-data-map.csv": {
257
+ "data": [
258
+ {
259
+ "STATE": "Overall",
260
+ "Rate": "55",
261
+ "Location": "Vehicle",
262
+ "URL": "https://www.cdc.gov"
263
+ },
264
+ {
265
+ "STATE": "Alabama",
266
+ "Rate": 130,
267
+ "Location": "Vehicle",
268
+ "URL": "https://www.cdc.gov/"
269
+ },
270
+ {
271
+ "STATE": "Alaska",
272
+ "Rate": "40",
273
+ "Location": "Work",
274
+ "URL": "https://www.cdc.gov/"
275
+ },
276
+ {
277
+ "STATE": "American Samoa",
278
+ "Rate": "55",
279
+ "Location": "Home",
280
+ "URL": "https://www.cdc.gov/"
281
+ },
282
+ {
283
+ "STATE": "Arizona",
284
+ "Rate": "57",
285
+ "Location": "School",
286
+ "URL": "https://www.cdc.gov/"
287
+ },
288
+ {
289
+ "STATE": "Arkansas",
290
+ "Rate": "60",
291
+ "Location": "School",
292
+ "URL": "https://www.cdc.gov/"
293
+ },
294
+ {
295
+ "STATE": "California",
296
+ "Rate": "30",
297
+ "Location": "Home",
298
+ "URL": "https://www.cdc.gov/"
299
+ },
300
+ {
301
+ "STATE": "Colorado",
302
+ "Rate": 40,
303
+ "Location": "Vehicle",
304
+ "URL": "https://www.cdc.gov/"
305
+ },
306
+ {
307
+ "STATE": "Connecticut",
308
+ "Rate": "55",
309
+ "Location": "Home",
310
+ "URL": "https://www.cdc.gov/"
311
+ },
312
+ {
313
+ "STATE": "Delaware",
314
+ "Rate": "57",
315
+ "Location": "Home",
316
+ "URL": "https://www.cdc.gov/"
317
+ },
318
+ {
319
+ "STATE": "DC",
320
+ "Rate": "60",
321
+ "Location": "Home",
322
+ "URL": "https://www.cdc.gov/"
323
+ },
324
+ {
325
+ "STATE": "Florida",
326
+ "Rate": "30",
327
+ "Location": "Work",
328
+ "URL": "https://www.cdc.gov/"
329
+ },
330
+ {
331
+ "STATE": "Georgia",
332
+ "Rate": "40",
333
+ "Location": "Work",
334
+ "URL": "https://www.cdc.gov/"
335
+ },
336
+ {
337
+ "STATE": "Guam",
338
+ "Rate": "55",
339
+ "Location": "Home",
340
+ "URL": "https://www.cdc.gov/"
341
+ },
342
+ {
343
+ "STATE": "Hawaii",
344
+ "Rate": "57",
345
+ "Location": "School",
346
+ "URL": "https://www.cdc.gov/"
347
+ },
348
+ {
349
+ "STATE": "Idaho",
350
+ "Rate": "60",
351
+ "Location": "School",
352
+ "URL": "https://www.cdc.gov/"
353
+ },
354
+ {
355
+ "STATE": "Illinois",
356
+ "Rate": "30",
357
+ "Location": "Work",
358
+ "URL": "https://www.cdc.gov/"
359
+ },
360
+ {
361
+ "STATE": "Indiana",
362
+ "Rate": 40,
363
+ "Location": "Vehicle",
364
+ "URL": "https://www.cdc.gov/"
365
+ },
366
+ {
367
+ "STATE": "Iowa",
368
+ "Rate": "55",
369
+ "Location": "Home",
370
+ "URL": "https://www.cdc.gov/"
371
+ },
372
+ {
373
+ "STATE": "Kansas",
374
+ "Rate": "57",
375
+ "Location": "Home",
376
+ "URL": "https://www.cdc.gov/"
377
+ },
378
+ {
379
+ "STATE": "Kentucky",
380
+ "Rate": 60,
381
+ "Location": "NA",
382
+ "URL": "https://www.cdc.gov/"
383
+ },
384
+ {
385
+ "STATE": "Louisiana",
386
+ "Rate": 30,
387
+ "Location": "Vehicle",
388
+ "URL": "https://www.cdc.gov/"
389
+ },
390
+ {
391
+ "STATE": "Maine",
392
+ "Rate": "40",
393
+ "Location": "Work",
394
+ "URL": "https://www.cdc.gov/"
395
+ },
396
+ {
397
+ "STATE": "Marshall Islands",
398
+ "Rate": "55",
399
+ "Location": "Home",
400
+ "URL": "https://www.cdc.gov/"
401
+ },
402
+ {
403
+ "STATE": "Maryland",
404
+ "Rate": "57",
405
+ "Location": "School",
406
+ "URL": "https://www.cdc.gov/"
407
+ },
408
+ {
409
+ "STATE": "Massachusetts",
410
+ "Rate": "60",
411
+ "Location": "School",
412
+ "URL": "https://www.cdc.gov/"
413
+ },
414
+ {
415
+ "STATE": "Michigan",
416
+ "Rate": "12",
417
+ "Location": "Work",
418
+ "URL": "https://www.cdc.gov/"
419
+ },
420
+ {
421
+ "STATE": "Micronesia",
422
+ "Rate": 65,
423
+ "Location": "Vehicle",
424
+ "URL": "https://www.cdc.gov/"
425
+ },
426
+ {
427
+ "STATE": "Minnesota",
428
+ "Rate": "55",
429
+ "Location": "Home",
430
+ "URL": "https://www.cdc.gov/"
431
+ },
432
+ {
433
+ "STATE": "Mississippi",
434
+ "Rate": "57",
435
+ "Location": "Home",
436
+ "URL": "https://www.cdc.gov/"
437
+ },
438
+ {
439
+ "STATE": "Montana",
440
+ "Rate": "60",
441
+ "Location": "Home",
442
+ "URL": "https://www.cdc.gov/"
443
+ },
444
+ {
445
+ "STATE": "Montana",
446
+ "Rate": 30,
447
+ "Location": "Vehicle",
448
+ "URL": "https://www.cdc.gov/"
449
+ },
450
+ {
451
+ "STATE": "Nebraska",
452
+ "Rate": "40",
453
+ "Location": "Work",
454
+ "URL": "https://www.cdc.gov/"
455
+ },
456
+ {
457
+ "STATE": "Nevada",
458
+ "Rate": "55",
459
+ "Location": "Home",
460
+ "URL": "https://www.cdc.gov/"
461
+ },
462
+ {
463
+ "STATE": "New Hampshire",
464
+ "Rate": "57",
465
+ "Location": "School",
466
+ "URL": "https://www.cdc.gov/"
467
+ },
468
+ {
469
+ "STATE": "New Jersey",
470
+ "Rate": "60",
471
+ "Location": "School",
472
+ "URL": "https://www.cdc.gov/"
473
+ },
474
+ {
475
+ "STATE": "New Mexico",
476
+ "Rate": "12",
477
+ "Location": "Work",
478
+ "URL": "https://www.cdc.gov/"
479
+ },
480
+ {
481
+ "STATE": "New York",
482
+ "Rate": 40,
483
+ "Location": "Vehicle",
484
+ "URL": "https://www.cdc.gov/"
485
+ },
486
+ {
487
+ "STATE": "North Carolina",
488
+ "Rate": "55",
489
+ "Location": "Home",
490
+ "URL": "https://www.cdc.gov/"
491
+ },
492
+ {
493
+ "STATE": "North Dakota",
494
+ "Rate": "57",
495
+ "Location": "Home",
496
+ "URL": "https://www.cdc.gov/"
497
+ },
498
+ {
499
+ "STATE": "Northern Mariana Islands",
500
+ "Rate": "60",
501
+ "Location": "Home",
502
+ "URL": "https://www.cdc.gov/"
503
+ },
504
+ {
505
+ "STATE": "Ohio",
506
+ "Rate": 88,
507
+ "Location": "Vehicle",
508
+ "URL": "https://www.cdc.gov/"
509
+ },
510
+ {
511
+ "STATE": "Oklahoma",
512
+ "Rate": "40",
513
+ "Location": "Work",
514
+ "URL": "https://www.cdc.gov/"
515
+ },
516
+ {
517
+ "STATE": "Oregon",
518
+ "Rate": "55",
519
+ "Location": "Home",
520
+ "URL": "https://www.cdc.gov/"
521
+ },
522
+ {
523
+ "STATE": "Palau",
524
+ "Rate": "15",
525
+ "Location": "School",
526
+ "URL": "https://www.cdc.gov/"
527
+ },
528
+ {
529
+ "STATE": "Pennsylvania",
530
+ "Rate": "60",
531
+ "Location": "School",
532
+ "URL": "https://www.cdc.gov/"
533
+ },
534
+ {
535
+ "STATE": "Puerto Rico",
536
+ "Rate": "30",
537
+ "Location": "Work",
538
+ "URL": "https://www.cdc.gov/"
539
+ },
540
+ {
541
+ "STATE": "Rhode Island",
542
+ "Rate": 40,
543
+ "Location": "Vehicle",
544
+ "URL": "https://www.cdc.gov/"
545
+ },
546
+ {
547
+ "STATE": "South Carolina",
548
+ "Rate": "55",
549
+ "Location": "Home",
550
+ "URL": "https://www.cdc.gov/"
551
+ },
552
+ {
553
+ "STATE": "South Dakota",
554
+ "Rate": "86",
555
+ "Location": "Home",
556
+ "URL": "https://www.cdc.gov/"
557
+ },
558
+ {
559
+ "STATE": "Tennessee",
560
+ "Rate": "60",
561
+ "Location": "Home",
562
+ "URL": "https://www.cdc.gov/"
563
+ },
564
+ {
565
+ "STATE": "Texas",
566
+ "Rate": 30,
567
+ "Location": "Vehicle",
568
+ "URL": "https://www.cdc.gov/"
569
+ },
570
+ {
571
+ "STATE": "Utah",
572
+ "Rate": "54",
573
+ "Location": "Work",
574
+ "URL": "https://www.cdc.gov/"
575
+ },
576
+ {
577
+ "STATE": "Vermont",
578
+ "Rate": "40",
579
+ "Location": "Home",
580
+ "URL": "https://www.cdc.gov/"
581
+ },
582
+ {
583
+ "STATE": "Virgin Islands",
584
+ "Rate": "55",
585
+ "Location": "School",
586
+ "URL": "https://www.cdc.gov/"
587
+ },
588
+ {
589
+ "STATE": "Virginia",
590
+ "Rate": "57",
591
+ "Location": "School",
592
+ "URL": "https://www.cdc.gov/"
593
+ },
594
+ {
595
+ "STATE": "Washington",
596
+ "Rate": "62",
597
+ "Location": "Work",
598
+ "URL": "https://www.cdc.gov/"
599
+ },
600
+ {
601
+ "STATE": "West Virginia",
602
+ "Rate": 25,
603
+ "Location": "Vehicle",
604
+ "URL": "https://www.cdc.gov/"
605
+ },
606
+ {
607
+ "STATE": "Wyoming",
608
+ "Rate": 43,
609
+ "Location": "Vehicle",
610
+ "URL": "https://www.cdc.gov/"
611
+ }
612
+ ],
613
+ "dataFileSize": 2434,
614
+ "dataFileName": "valid-data-map.csv",
615
+ "dataFileSourceType": "file",
616
+ "dataFileFormat": "CSV",
617
+ "preview": true
618
+ }
619
+ },
620
+ "visualizationType": null,
621
+ "activeVizButtonID": 15,
622
+ "runtime": {},
623
+ "version": "4.25.4",
624
+ "migrations": {
625
+ "addColorMigration": true
626
+ },
627
+ "uuid": 1744661010623
628
+ }
package/index.html CHANGED
@@ -21,33 +21,8 @@
21
21
  </head>
22
22
 
23
23
  <body>
24
- <div class="react-container" data-config="/examples/private/nhis.json"></div>
25
- <!-- <div class="react-container" data-config="/examples/private/bird-flu.json"></div> -->
26
- <!-- <div class="react-container" data-config="/examples/bump-chart.json"></div> -->
27
- <!-- <div class="react-container" data-config="/examples/full-dashboard.json"></div> -->
28
- <div class="react-container" data-config="/examples/dashboard-gallery.json"></div>
29
- <!-- <div class="react-container" data-config="/examples/dev-8332.json"></div> -->
30
- <!-- <div class="react-container" data-config="/examples/default-multi-dataset.json"></div> -->
31
- <!-- <div class="react-container" data-config="/examples/dev-8332.json"></div> -->
32
- <!-- <div class="react-container" data-config="/examples/dashboard-gallery.json"></div> -->
33
- <!-- <div class="react-container" data-config="/examples/filtered-dash.json"></div> -->
34
- <!-- <div class="react-container" data-config="/examples/private/art-dashboard.json"></div> -->
35
- <!-- <div class="react-container" data-config="/examples/sankey.json"></div> -->
36
- <!-- <div class="react-container" data-config="/examples/DEV-6574.json"></div> -->
37
- <!-- <div class="react-container" data-config="/examples/default-multi-dataset-2.json"></div> -->
38
- <div class="react-container" data-config="/examples/default-multi-dataset.json"></div>
39
- <!-- <div class="react-container" data-config="/examples/default-filter-control.json"></div> -->
40
-
41
- <!-- Respiratory custom example -->
42
- <div
43
- class="react-container wcms-viz-container"
44
- data-config-url="/respiratory-viruses/modules/ed-visits-county-file.json"
45
- data-config="/examples/ed-visits-county-file.json"
46
- ></div>
47
-
24
+ <div class="react-container" data-config="/examples/map.json"></div>
48
25
  <script src="https://www.cdc.gov/TemplatePackage/contrib/libs/jquery/latest/jquery.min.js?_=91329"></script>
49
- <!-- <script src="examples/custom/js/respiratory.js"></script> -->
50
-
51
26
  <script type="module" src="./src/index.tsx"></script>
52
27
  </body>
53
28
  </html>