library(tidyverse)
Warning in for (i in seq_len(n)) { :
  closing unused connection 3 (C:/PROGRA~1/R/R-44~1.1/library/grid/Meta/features.rds)
── Attaching core tidyverse packages ──────────────────────────────────────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.1.4     ✔ readr     2.1.5
✔ forcats   1.0.0     ✔ stringr   1.5.1
✔ ggplot2   3.5.1     ✔ tibble    3.2.1
✔ lubridate 1.9.3     ✔ tidyr     1.3.1
✔ purrr     1.0.2     ── Conflicts ────────────────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the ]8;;http://conflicted.r-lib.org/conflicted package]8;; to force all conflicts to become errors
library(ggplot2)
library(lubridate)
library(janitor)

Attaching package: ‘janitor’

The following objects are masked from ‘package:stats’:

    chisq.test, fisher.test
library(readr)
library(plotly)
Warning: package ‘plotly’ was built under R version 4.4.2Registered S3 method overwritten by 'data.table':
  method           from
  print.data.table     
Registered S3 method overwritten by 'htmlwidgets':
  method           from         
  print.htmlwidget tools:rstudio

Attaching package: ‘plotly’

The following object is masked from ‘package:ggplot2’:

    last_plot

The following object is masked from ‘package:stats’:

    filter

The following object is masked from ‘package:graphics’:

    layout
setwd(dirname(rstudioapi::getActiveDocumentContext()$path))
options(scipen = 999)
d1 <- read_csv("Michael's Query 2.csv")
Rows: 4806421 Columns: 22── Column specification ────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr   (9): district, health_block, health_facility, health_subfacility, village, childname, anm_name, asha_n...
dbl   (3): rchid, mobileno, weight
date (10): dob, registrationdate, bcg, opv0, penta1, penta2, penta3, mr1, mr2, death_date
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
#d2 <- read_csv("Michael's Query 1.csv")

d1 %>% group_by(district, health_block) %>% 
  summarise()
`summarise()` has grouped output by 'district'. You can override using the `.groups` argument.
d1$district %>% tabyl()
                             .      n        percent valid_percent
                Ahmadnagar(26) 189162 0.039356103013   0.039356128
                      Akola(5)  71696 0.014916712456   0.014916722
                   Amravati(7)  97536 0.020292854080   0.020292867
                Aurangabad(19) 116858 0.024312893107   0.024312908
                      Beed(27) 108027 0.022475559257   0.022475573
                  Bhandara(10)  33759 0.007023729299   0.007023734
                    Buldana(4)  71101 0.014792919721   0.014792929
                   Buldhana(4)  21402 0.004452793461   0.004452796
                Chandrapur(13)  65957 0.013722684717   0.013722693
 Chhatrapati Sambhajinagar(19)  50044 0.010411905241   0.010411912
                 Dharashiv(29)  17534 0.003648036658   0.003648039
                      Dhule(2) 108767 0.022629519969   0.022629534
                Gadchiroli(12)  41227 0.008577484161   0.008577490
                 Gondiya *(11)  42932 0.008932217964   0.008932224
                 Hingoli *(16)  46334 0.009640021130   0.009640027
                    Jalgaon(3) 200151 0.041642419588   0.041642446
                     Jalna(18)  83288 0.017328486206   0.017328497
                  Kolhapur(34) 138630 0.028842666924   0.028842685
                     Latur(28) 102092 0.021240752735   0.021240766
       Mumbai (Suburban) *(22) 208821 0.043446256581   0.043446284
           Mumbai Suburban(22) 101574 0.021132980236   0.021132993
                    Mumbai(23) 113304 0.023573465579   0.023573480
                     Nagpur(9) 197384 0.041066731358   0.041066757
                    Nanded(15) 147503 0.030688739085   0.030688758
                  Nandurbar(1)  86279 0.017950778760   0.017950790
                    Nashik(20) 291377 0.060622446515   0.060622484
                 Osmanabad(29)  50896 0.010589168115   0.010589175
                   Palghar(36) 171940 0.035772979521   0.035773002
                  Parbhani(17)  79423 0.016524353568   0.016524364
                      Pune(25) 485963 0.101107039937   0.101107103
                    Raigad(24)  24862 0.005172663818   0.005172667
                   Raigarh(24)  87295 0.018162162657   0.018162174
                 Ratnagiri(32)  33085 0.006883500218   0.006883505
                    Sangli(35) 125241 0.026057018309   0.026057035
                    Satara(31) 147699 0.030729517868   0.030729537
                Sindhudurg(33)  16404 0.003412934489   0.003412937
                   Solapur(30) 197424 0.041075053559   0.041075079
                     Thane(21) 451469 0.093930390201   0.093930449
                     Wardha(8)  37431 0.007787707319   0.007787712
                   Washim *(6)  43689 0.009089715612   0.009089721
                  Yavatmal(14) 100858 0.020984012844   0.020984026
                          <NA>      3 0.000000624165            NA
d1 %>% ggplot(aes(x=dob, color = district)) + geom_density() + theme_bw()



d1 <- d1 %>% mutate(district_simp = case_match(district, 
        "Buldhana(4)" ~ "Buldana(4)" , 
        "Chhatrapati Sambhajinagar(19)" ~ "Aurangabad(19)", 
        "Raigad(24)"~ "Raigarh(24)",
        "Dharashiv(29)" ~ "Osmanabad(29)", 
        "Mumbai (Suburban) *(22)" ~ "Mumbai Suburban(22)",
        .default =  district
        ))


d1 <- d1 %>% filter(!is.na(district))

a <- d1 %>% 
   filter(!district == "Hingoli *(16)") %>% 
ggplot(aes(x=penta1, color = district_simp)) + geom_density(alpha=0.2, adjust = 0.5) +
scale_x_date(limits = c(as.Date("2022-08-01"), as.Date("2024-12-01")), date_breaks = "3 months", date_labels = "%b %y") + theme_bw() +   geom_vline(xintercept = as.Date("2024-01-01"),linetype = "dashed", color = "black") + labs(x = "Vaccine Date", y = "Relative Frequency", title = "ZOOMED: Relative Penta1 Vaccination Frequency BY District" )  

ggplotly(a)
Warning: Removed 1857093 rows containing non-finite outside the scale range (`stat_density()`).
a


 d1 %>% 
 filter(!district == "Hingoli *(16)") %>% 
ggplot(aes(x=penta2, color = district_simp)) + geom_density(alpha=0.2, adjust = 0.5) +
scale_x_date(limits = c(as.Date("2022-08-01"), as.Date("2024-12-01")), date_breaks = "3 months", date_labels = "%b %y") + theme_bw() +   geom_vline(xintercept = as.Date("2024-01-01"),linetype = "dashed", color = "black") + labs(x = "Vaccine Date", y = "Relative Frequency", title = "ZOOMED: Relative Penta2 Vaccination Frequency BY District" )  


 d1 %>% 
    filter(!district == "Hingoli *(16)") %>% 
ggplot(aes(x=penta3, color = district_simp)) + geom_density(alpha=0.2, adjust = 0.5) +
scale_x_date(limits = c(as.Date("2022-08-01"), as.Date("2024-12-01")), date_breaks = "3 months", date_labels = "%b %y") + theme_bw() +   geom_vline(xintercept = as.Date("2024-01-01"),linetype = "dashed", color = "black") + labs(x = "Vaccine Date", y = "Relative Frequency", title = "ZOOMED: Relative Penta3 Vaccination Frequency BY District" )  

 
 
  d1 %>% 
     filter(!district == "Hingoli *(16)") %>% 
ggplot(aes(x=mr1, color = district_simp)) + geom_density(alpha=0.2, adjust = 0.5) +
scale_x_date(limits = c(as.Date("2023-02-01"), as.Date("2024-12-01")), date_breaks = "3 months", date_labels = "%b %y") + theme_bw() +   geom_vline(xintercept = as.Date("2024-01-01"),linetype = "dashed", color = "black") + labs(x = "Vaccine Date (Note Axis)", y = "Relative Frequency", title = "ZOOMED: Relative MR1 Vaccination Frequency BY District" )  

  
   d1 %>% 
   filter(!district == "Hingoli *(16)") %>% 
ggplot(aes(x=mr2, color = district_simp)) + geom_density(alpha=0.2, adjust = 0.5) +
scale_x_date(limits = c(as.Date("2023-08-01"), as.Date("2024-12-01")), date_breaks = "3 months", date_labels = "%b %y") + theme_bw() +   geom_vline(xintercept = as.Date("2024-01-01"),linetype = "dashed", color = "black") + labs(x = "Vaccine Date (Note Axis)", y = "Relative Frequency", title = "ZOOMED: Relative MR2 Vaccination Frequency BY District" )  

LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpgYGB7cn0NCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeShsdWJyaWRhdGUpDQpsaWJyYXJ5KGphbml0b3IpDQpsaWJyYXJ5KHJlYWRyKQ0KbGlicmFyeShwbG90bHkpDQoNCnNldHdkKGRpcm5hbWUocnN0dWRpb2FwaTo6Z2V0QWN0aXZlRG9jdW1lbnRDb250ZXh0KCkkcGF0aCkpDQpvcHRpb25zKHNjaXBlbiA9IDk5OSkNCmBgYA0KDQoNCmBgYHtyfQ0KZDEgPC0gcmVhZF9jc3YoIk1pY2hhZWwncyBRdWVyeSAyLmNzdiIpDQojZDIgPC0gcmVhZF9jc3YoIk1pY2hhZWwncyBRdWVyeSAxLmNzdiIpDQoNCmQxICU+JSBncm91cF9ieShkaXN0cmljdCwgaGVhbHRoX2Jsb2NrKSAlPiUgDQogIHN1bW1hcmlzZSgpDQoNCmQxJGRpc3RyaWN0ICU+JSB0YWJ5bCgpDQoNCmQxICU+JSBnZ3Bsb3QoYWVzKHg9ZG9iLCBjb2xvciA9IGRpc3RyaWN0KSkgKyBnZW9tX2RlbnNpdHkoKSArIHRoZW1lX2J3KCkNCg0KDQpkMSA8LSBkMSAlPiUgbXV0YXRlKGRpc3RyaWN0X3NpbXAgPSBjYXNlX21hdGNoKGRpc3RyaWN0LCANCiAgICAgICAgIkJ1bGRoYW5hKDQpIiB+ICJCdWxkYW5hKDQpIiAsIA0KICAgICAgICAiQ2hoYXRyYXBhdGkgU2FtYmhhamluYWdhcigxOSkiIH4gIkF1cmFuZ2FiYWQoMTkpIiwgDQogICAgICAgICJSYWlnYWQoMjQpIn4gIlJhaWdhcmgoMjQpIiwNCiAgICAgICAgIkRoYXJhc2hpdigyOSkiIH4gIk9zbWFuYWJhZCgyOSkiLCANCiAgICAgICAgIk11bWJhaSAoU3VidXJiYW4pICooMjIpIiB+ICJNdW1iYWkgU3VidXJiYW4oMjIpIiwNCiAgICAgICAgLmRlZmF1bHQgPSAgZGlzdHJpY3QNCiAgICAgICAgKSkNCg0KDQpkMSA8LSBkMSAlPiUgZmlsdGVyKCFpcy5uYShkaXN0cmljdCkpDQoNCmEgPC0gZDEgJT4lIA0KICAgZmlsdGVyKCFkaXN0cmljdCA9PSAiSGluZ29saSAqKDE2KSIpICU+JSANCmdncGxvdChhZXMoeD1wZW50YTEsIGNvbG9yID0gZGlzdHJpY3Rfc2ltcCkpICsgZ2VvbV9kZW5zaXR5KGFscGhhPTAuMiwgYWRqdXN0ID0gMC41KSArDQpzY2FsZV94X2RhdGUobGltaXRzID0gYyhhcy5EYXRlKCIyMDIyLTA4LTAxIiksIGFzLkRhdGUoIjIwMjQtMTItMDEiKSksIGRhdGVfYnJlYWtzID0gIjMgbW9udGhzIiwgZGF0ZV9sYWJlbHMgPSAiJWIgJXkiKSArIHRoZW1lX2J3KCkgKyAgIGdlb21fdmxpbmUoeGludGVyY2VwdCA9IGFzLkRhdGUoIjIwMjQtMDEtMDEiKSxsaW5ldHlwZSA9ICJkYXNoZWQiLCBjb2xvciA9ICJibGFjayIpICsgbGFicyh4ID0gIlZhY2NpbmUgRGF0ZSIsIHkgPSAiUmVsYXRpdmUgRnJlcXVlbmN5IiwgdGl0bGUgPSAiWk9PTUVEOiBSZWxhdGl2ZSBQZW50YTEgVmFjY2luYXRpb24gRnJlcXVlbmN5IEJZIERpc3RyaWN0IiApICANCg0KZ2dwbG90bHkoYSkNCg0KYQ0KDQogZDEgJT4lIA0KIGZpbHRlcighZGlzdHJpY3QgPT0gIkhpbmdvbGkgKigxNikiKSAlPiUgDQpnZ3Bsb3QoYWVzKHg9cGVudGEyLCBjb2xvciA9IGRpc3RyaWN0X3NpbXApKSArIGdlb21fZGVuc2l0eShhbHBoYT0wLjIsIGFkanVzdCA9IDAuNSkgKw0Kc2NhbGVfeF9kYXRlKGxpbWl0cyA9IGMoYXMuRGF0ZSgiMjAyMi0wOC0wMSIpLCBhcy5EYXRlKCIyMDI0LTEyLTAxIikpLCBkYXRlX2JyZWFrcyA9ICIzIG1vbnRocyIsIGRhdGVfbGFiZWxzID0gIiViICV5IikgKyB0aGVtZV9idygpICsgICBnZW9tX3ZsaW5lKHhpbnRlcmNlcHQgPSBhcy5EYXRlKCIyMDI0LTAxLTAxIiksbGluZXR5cGUgPSAiZGFzaGVkIiwgY29sb3IgPSAiYmxhY2siKSArIGxhYnMoeCA9ICJWYWNjaW5lIERhdGUiLCB5ID0gIlJlbGF0aXZlIEZyZXF1ZW5jeSIsIHRpdGxlID0gIlpPT01FRDogUmVsYXRpdmUgUGVudGEyIFZhY2NpbmF0aW9uIEZyZXF1ZW5jeSBCWSBEaXN0cmljdCIgKSAgDQoNCiBkMSAlPiUgDQogICAgZmlsdGVyKCFkaXN0cmljdCA9PSAiSGluZ29saSAqKDE2KSIpICU+JSANCmdncGxvdChhZXMoeD1wZW50YTMsIGNvbG9yID0gZGlzdHJpY3Rfc2ltcCkpICsgZ2VvbV9kZW5zaXR5KGFscGhhPTAuMiwgYWRqdXN0ID0gMC41KSArDQpzY2FsZV94X2RhdGUobGltaXRzID0gYyhhcy5EYXRlKCIyMDIyLTA4LTAxIiksIGFzLkRhdGUoIjIwMjQtMTItMDEiKSksIGRhdGVfYnJlYWtzID0gIjMgbW9udGhzIiwgZGF0ZV9sYWJlbHMgPSAiJWIgJXkiKSArIHRoZW1lX2J3KCkgKyAgIGdlb21fdmxpbmUoeGludGVyY2VwdCA9IGFzLkRhdGUoIjIwMjQtMDEtMDEiKSxsaW5ldHlwZSA9ICJkYXNoZWQiLCBjb2xvciA9ICJibGFjayIpICsgbGFicyh4ID0gIlZhY2NpbmUgRGF0ZSIsIHkgPSAiUmVsYXRpdmUgRnJlcXVlbmN5IiwgdGl0bGUgPSAiWk9PTUVEOiBSZWxhdGl2ZSBQZW50YTMgVmFjY2luYXRpb24gRnJlcXVlbmN5IEJZIERpc3RyaWN0IiApICANCiANCiANCiAgZDEgJT4lIA0KICAgICBmaWx0ZXIoIWRpc3RyaWN0ID09ICJIaW5nb2xpICooMTYpIikgJT4lIA0KZ2dwbG90KGFlcyh4PW1yMSwgY29sb3IgPSBkaXN0cmljdF9zaW1wKSkgKyBnZW9tX2RlbnNpdHkoYWxwaGE9MC4yLCBhZGp1c3QgPSAwLjUpICsNCnNjYWxlX3hfZGF0ZShsaW1pdHMgPSBjKGFzLkRhdGUoIjIwMjMtMDItMDEiKSwgYXMuRGF0ZSgiMjAyNC0xMi0wMSIpKSwgZGF0ZV9icmVha3MgPSAiMyBtb250aHMiLCBkYXRlX2xhYmVscyA9ICIlYiAleSIpICsgdGhlbWVfYncoKSArICAgZ2VvbV92bGluZSh4aW50ZXJjZXB0ID0gYXMuRGF0ZSgiMjAyNC0wMS0wMSIpLGxpbmV0eXBlID0gImRhc2hlZCIsIGNvbG9yID0gImJsYWNrIikgKyBsYWJzKHggPSAiVmFjY2luZSBEYXRlIChOb3RlIEF4aXMpIiwgeSA9ICJSZWxhdGl2ZSBGcmVxdWVuY3kiLCB0aXRsZSA9ICJaT09NRUQ6IFJlbGF0aXZlIE1SMSBWYWNjaW5hdGlvbiBGcmVxdWVuY3kgQlkgRGlzdHJpY3QiICkgIA0KICANCiAgIGQxICU+JSANCiAgIGZpbHRlcighZGlzdHJpY3QgPT0gIkhpbmdvbGkgKigxNikiKSAlPiUgDQpnZ3Bsb3QoYWVzKHg9bXIyLCBjb2xvciA9IGRpc3RyaWN0X3NpbXApKSArIGdlb21fZGVuc2l0eShhbHBoYT0wLjIsIGFkanVzdCA9IDAuNSkgKw0Kc2NhbGVfeF9kYXRlKGxpbWl0cyA9IGMoYXMuRGF0ZSgiMjAyMy0wOC0wMSIpLCBhcy5EYXRlKCIyMDI0LTEyLTAxIikpLCBkYXRlX2JyZWFrcyA9ICIzIG1vbnRocyIsIGRhdGVfbGFiZWxzID0gIiViICV5IikgKyB0aGVtZV9idygpICsgICBnZW9tX3ZsaW5lKHhpbnRlcmNlcHQgPSBhcy5EYXRlKCIyMDI0LTAxLTAxIiksbGluZXR5cGUgPSAiZGFzaGVkIiwgY29sb3IgPSAiYmxhY2siKSArIGxhYnMoeCA9ICJWYWNjaW5lIERhdGUgKE5vdGUgQXhpcykiLCB5ID0gIlJlbGF0aXZlIEZyZXF1ZW5jeSIsIHRpdGxlID0gIlpPT01FRDogUmVsYXRpdmUgTVIyIFZhY2NpbmF0aW9uIEZyZXF1ZW5jeSBCWSBEaXN0cmljdCIgKSAgDQoNCmBgYCANCg0KDQpgYGB7cn0NCmQxICU+JSANCiAgIGZpbHRlcighZGlzdHJpY3QgPT0gIkhpbmdvbGkgKigxNikiKSAlPiUgDQpnZ3Bsb3QoYWVzKHg9cGVudGExLCBjb2xvciA9IGRpc3RyaWN0X3NpbXApKSArIGdlb21fZGVuc2l0eShhbHBoYT0wLjA1LCBhZGp1c3QgPSAwLjUsIGJvdW5kcyA9IGMoMCwgSW5mKSkgKw0Kc2NhbGVfeF9kYXRlKGxpbWl0cyA9IGMoYXMuRGF0ZSgiMjAyMi0wOC0wMSIpLCBhcy5EYXRlKCIyMDI0LTEyLTAxIikpLCBkYXRlX2JyZWFrcyA9ICIzIG1vbnRocyIsIGRhdGVfbGFiZWxzID0gIiViICV5IikgKyB0aGVtZV9idygpICsgICBnZW9tX3ZsaW5lKHhpbnRlcmNlcHQgPSBhcy5EYXRlKCIyMDI0LTAxLTAxIiksbGluZXR5cGUgPSAiZGFzaGVkIiwgY29sb3IgPSAiYmxhY2siKSArIGxhYnMoeCA9ICJWYWNjaW5lIERhdGUiLCB5ID0gIlJlbGF0aXZlIEZyZXF1ZW5jeSIsIHRpdGxlID0gIlpPT01FRDogUmVsYXRpdmUgUGVudGExIFZhY2NpbmF0aW9uIEZyZXF1ZW5jeSBCWSBEaXN0cmljdCIgKSAgKyANCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uPSJub25lIikNCg0KDQpgYGANCg0KDQoNCmBgYHtyfQ0Kc3VtbWFyeSA8LSAgZDEgJT4lIA0KICBmaWx0ZXIoIWRpc3RyaWN0ID09ICJIaW5nb2xpICooMTYpIikgJT4lIA0KICBtdXRhdGUoZG9iX21vbnRoID0gDQogICAgICAgICAgIHBhc3RlKHllYXIoZG9iKSwgcXVhcnRlcihkb2IpLCBzZXAgPSAiXyIpLCANCiAgICAgICAgIG1yMV9iaW5hcnkgPSBpZl9lbHNlKCFpcy5uYShtcjEpLCAxLCAwKQ0KICAgICAgICAgKSAlPiUgDQoNCiAgZ3JvdXBfYnkoZGlzdHJpY3Rfc2ltcCwgZG9iX21vbnRoKSAlPiUgDQogIHN1bW1hcmlzZShtcjFfcmF0ZSA9IG1lYW4obXIxX2JpbmFyeSkpIA0KDQpiIDwtIHN1bW1hcnkgJT4lIA0KZmlsdGVyKCFkb2JfbW9udGggJWluJSBjKCIyMDIxXzIiLCAiMjAyMV8zIiwgIjIwMjRfMSIsICIyMDI0XzIiLCAiMjAyNF8zIiwgIjIwMjRfNCIpKSAlPiUgDQogIGdncGxvdChhZXMoeCA9IGRvYl9tb250aCwgeSA9IG1yMV9yYXRlLCBjb2xvciA9IGRpc3RyaWN0X3NpbXApKSArIA0KZ2VvbV9saW5lKGFlcyhncm91cCA9IGRpc3RyaWN0X3NpbXApKSAgDQoNCg0KZ2dwbG90bHkoYikNCg0KYGBgDQoNCmBgYHtyfQ0Kc3VtbWFyeV9ibG9jayA8LSAgZDEgJT4lIA0KICBmaWx0ZXIoZGlzdHJpY3QgPT0gIlNhdGFyYSgzMSkiKSAlPiUgDQogIG11dGF0ZShkb2JfbW9udGggPSANCiAgICAgICAgICAgcGFzdGUoeWVhcihkb2IpLCBxdWFydGVyKGRvYiksIHNlcCA9ICJfIiksIA0KICAgICAgICAgbXIxX2JpbmFyeSA9IGlmX2Vsc2UoIWlzLm5hKG1yMSksIDEsIDApDQogICAgICAgICApICU+JSANCg0KICBncm91cF9ieShoZWFsdGhfYmxvY2ssIGRvYl9tb250aCkgJT4lIA0KICBzdW1tYXJpc2UobXIxX3JhdGUgPSBtZWFuKG1yMV9iaW5hcnkpKSANCg0KDQoNCmMgPC0gc3VtbWFyeV9ibG9jayAlPiUgDQpmaWx0ZXIoIWRvYl9tb250aCAlaW4lIGMoIjIwMjFfMiIsICIyMDIxXzMiLCAiMjAyNF8xIiwgIjIwMjRfMiIsICIyMDI0XzMiLCAiMjAyNF80IikpICU+JSANCiAgZ2dwbG90KGFlcyh4ID0gZG9iX21vbnRoLCB5ID0gbXIxX3JhdGUsIGNvbG9yID0gaGVhbHRoX2Jsb2NrKSkgKyANCmdlb21fbGluZShhZXMoZ3JvdXAgPSBoZWFsdGhfYmxvY2spKSAgDQoNCmdncGxvdGx5KGMpDQoNCmBgYA0KDQo=