1 Nghiên cứu bộ dữ liệu từ Worldbank:

1.1 Tổng thể bộ dữ liệu

  • Trước hết, phải tải bộ dữ liệu, gọi nó lên
options(repos = c(CRAN = "http://cran.rstudio.com/"))
install.packages("WDI")
## package 'WDI' successfully unpacked and MD5 sums checked
## 
## The downloaded binary packages are in
##  C:\Users\DELL\AppData\Local\Temp\Rtmp67sKf1\downloaded_packages
library(WDI)
library(dplyr)
library(ggplot2)
library(DT)
  • Tiếp đến, tiến hành chọn vùng dữ liệu, cụ thể sẽ là tỉ lệ trẻ sơ sinh tử vong ở Việt Nam
health_data <- WDI(country = "VN", indicator = "SH.DYN.NMRT", start = 2000, end = 2020)
datatable(health_data)
  • Dữ liệu Health_data được rút trích này nói về về tỷ lệ tử vong sơ sinh được tính toán bằng cách thu thập thông tin về số lượng trẻ em chết trong năm đầu tiên của cuộc sống và số lượng trẻ em sinh sống tại Việt Nam trong cùng một năm. Tỷ lệ tử vong sơ sinh được tính bằng cách chia số trẻ em chết trong năm đầu tiên của cuộc sống cho số trẻ em sinh sống và nhân với 1.000.
  • Bộ dữ liệu này có sự hợp tác với các tổ chức quốc tế như WHO hoặc UNICEF, đặc biệt là bộ y tế để cung cấp và cập nhật dữ liệu về tỷ lệ tử vong sơ sinh tại Việt Nam.

1.2 Nghiên cứu bộ dữ liệu

  • Tiến hành phân tích tỷ lệ tử vong của trẻ sơ sinh qua các năm
ft_data <- health_data %>%
  filter(year >= 2010 & year <= 2020) 
ggplot(ft_data, aes(x = factor(year), y = SH.DYN.NMRT)) +
  geom_bar(stat = "identity", fill = "skyblue") +
  geom_text(aes(label = SH.DYN.NMRT), vjust = 1, color = 'red') +
  labs(title = "Tỷ lệ tử vong sơ sinh tại Việt Nam theo từng năm",
       x = "Năm",
       y = "Tỷ lệ tử vong sơ sinh") +
  theme_minimal()

  • Nhìn chung ta có thể thấy qua các năm, tỷ lệ tử vong của trẻ sơ sinh tại việt Nam có sự giảm dần đều. Chính phủ, xã hội, con người ngày càng tiến bộ, có sự cải thiện, cụ thể:
  • Cải thiện được việc chăm sóc sức khỏe mẹ và trẻ sơ sinh: Việc cải thiện chất lượng dịch vụ chăm sóc sức khỏe cho phụ nữ mang thai và trẻ sơ sinh, cũng như việc tăng cường kiến thức và nhận thức về sức khỏe trong cộng đồng, có thể giúp phát hiện và điều trị các vấn đề sức khỏe sớm hơn, giảm nguy cơ tử vong sơ sinh.
  • Tiếp cận dịch vụ chăm sóc sức khỏe từ những cùng sâu xa, nông thôn hẻo lánh nhất: Cải thiện tiếp cận của cộng đồng đến dịch vụ chăm sóc sức khỏe mẹ và trẻ em, đặc biệt là ở các khu vực nông thôn hoặc có điều kiện kém, có thể giảm tỷ lệ tử vong sơ sinh bằng cách cung cấp dịch vụ chăm sóc chất lượng và kịp thời.
  • Chính sách và chiến lược y tế được đưa vào: Các chính sách và chiến lược y tế như việc tăng cường hệ thống y tế, cải thiện cơ sở hạ tầng y tế và nâng cao năng lực của nhân viên y tế góp phần vào việc giảm tỷ lệ tử vong sơ sinh.
  • Giáo dục và nhận thức được tăng cường: Các chương trình giáo dục và tăng cường nhận thức về sức khỏe mẹ và trẻ sơ sinh có thể giúp tăng cường kiến thức và nhận thức về các biện pháp phòng ngừa và điều trị, từ đó giảm nguy cơ tử vong sơ sinh.

2 Nghiên cứu bộ dữ liệu của IMF

2.1 Tổng quan bộ dữ liệu

  • Trước hết, phải tải về gói dữ liệu gốc và gọi nó lên để làm việc
install.packages("imf.data")
## Installing package into 'C:/Users/DELL/AppData/Local/R/win-library/4.3'
## (as 'lib' is unspecified)
## package 'imf.data' successfully unpacked and MD5 sums checked
## 
## The downloaded binary packages are in
##  C:\Users\DELL\AppData\Local\Temp\Rtmp67sKf1\downloaded_packages
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ lubridate 1.9.3     ✔ tibble    3.2.1
## ✔ purrr     1.0.2     ✔ tidyr     1.3.0
## ✔ readr     2.1.5
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(imf.data)
  • Bộ dữ liệu trong IMF (Quỹ Tiền tệ Quốc tế) có thể chứa nhiều loại thông tin về kinh tế và tài chính của các quốc gia trên thế giới. Các bộ dữ liệu này thường bao gồm các chỉ số kinh tế như GDP, lạm phát, tỷ lệ thất nghiệp, chỉ số sản xuất công nghiệp, dữ liệu thương mại như giá trị xuất khẩu và nhập khẩu hàng hóa, dữ liệu về tài chính như dư nợ công, dữ liệu về tỷ giá hối đoái, và nhiều thông tin khác.

  • Cụ thể, IMF cung cấp các bộ dữ liệu như Direction of Trade Statistics (DOTS), International Financial Statistics (IFS), Balance of Payments Statistics (BOPS), và Government Finance Statistics (GFS), giúp người dùng theo dõi và phân tích các xu hướng và biến động trong nền kinh tế toàn cầu và các quốc gia cụ thể.

2.2 Nghiên cứu bộ dữ liệu

  • Tiến hành lọc bộ dữ liệu, lấy ra thông tin cơ bản về giáo dục trong ‘CPI’
tmp <- load_datasets('CPI')
chi_so <- tmp$get_series(freq = 'A', ref_area = 'VN', indicator = 'PCPIED_IX', start = 2000, end = 2023)
chi_so <- na.omit(chi_so)
names(chi_so) <- c('Nam','NamGoc','Chisogiaca')
datatable(chi_so)
  • Bảng dữ liệu hiện ra cung cấp thông tin về mức độ biến động của giá cả trong các lĩnh vực giáo dục và y tế so với chỉ số giá tiêu dùng tổng quát.
 chi_so <- chi_so %>% 
  mutate(Chisogiaca = as.numeric(Chisogiaca)) %>%
  mutate(Chisogiaca = round(Chisogiaca, 2)) %>%
  arrange(Chisogiaca)
chi_so <- subset(chi_so, Nam >= 2013 & Nam <= 2023)
ggplot(chi_so, aes(x = Nam, y = Chisogiaca)) +
  geom_point() +
  labs(title = "Chỉ số PCPIED_IX tại Việt Nam (2013-2023)",
       x = "Năm",
       y = "Chỉ số giá cả") +
  theme_minimal()

  • chỉ số PCPIED_IX tăng qua các năm và được mô tả có liên quan đến giáo dục, điều này có thể ám chỉ rằng chi phí giáo dục đang tăng theo thời gian. Điều này có thể đồng nghĩa với việc đầu tư vào giáo dục đang tăng lên, có thể là do chính sách công cộng, sự tăng trưởng kinh tế hoặc nhu cầu của xã hội. Sự tăng của chỉ số này có thể ảnh hưởng đến sự tiếp cận và chất lượng giáo dục, cũng như phản ánh mức độ quan tâm và đầu tư vào nguồn lực giáo dục của một quốc gia.
LS0tDQp0aXRsZTogIk5oaeG7h20gduG7pSA2Ig0KYXV0aG9yOiAiRGnhu4dwIE1haSBHaWEgxJBhbSINCmRhdGU6ICJgciBmb3JtYXQoU3lzLnRpbWUoKSwgJyVIOiVNOiVTLCAlZCAtICVtIC0gJVknKWAiDQpvdXRwdXQ6DQogIGh0bWxfZG9jdW1lbnQ6IA0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCiAgICB0b2NfZmxvYXQ6IHRydWUNCiAgICB0b2M6IHRydWUNCiAgICBoaWdobGlnaHQ6IHRhbmdvDQogICAgdGhlbWU6IHNhbmRzdG9uZQ0KICAgIG51bWJlcl9zZWN0aW9uczogdHJ1ZQ0KLS0tDQoNCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFKQ0KYGBgDQoNCiMgKipOZ2hpw6puIGPhu6l1IGLhu5kgZOG7ryBsaeG7h3UgdOG7qyBXb3JsZGJhbms6KioNCg0KIyMgKipU4buVbmcgdGjhu4MgYuG7mSBk4buvIGxp4buHdSoqDQogLSBUcsaw4bubYyBo4bq/dCwgcGjhuqNpIHThuqNpIGLhu5kgZOG7ryBsaeG7h3UsIGfhu41pIG7DsyBsw6puDQoNCmBgYHtyIG1lc3NhZ2UgPSBGQUxTRSwgd2FybmluZyA9IEZBTFNFfQ0Kb3B0aW9ucyhyZXBvcyA9IGMoQ1JBTiA9ICJodHRwOi8vY3Jhbi5yc3R1ZGlvLmNvbS8iKSkNCmluc3RhbGwucGFja2FnZXMoIldESSIpDQpsaWJyYXJ5KFdESSkNCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KERUKQ0KYGBgDQoNCiAtIFRp4bq/cCDEkeG6v24sIHRp4bq/biBow6BuaCBjaOG7jW4gdsO5bmcgZOG7ryBsaeG7h3UsIGPhu6UgdGjhu4Mgc+G6vSBsw6AgdOG7iSBs4buHIHRy4bq7IHPGoSBzaW5oIHThu60gdm9uZyDhu58gVmnhu4d0IE5hbQ0KDQpgYGB7ciBtZXNzYWdlID0gVFJVRSwgd2FybmluZyA9IEZBTFNFfQ0KaGVhbHRoX2RhdGEgPC0gV0RJKGNvdW50cnkgPSAiVk4iLCBpbmRpY2F0b3IgPSAiU0guRFlOLk5NUlQiLCBzdGFydCA9IDIwMDAsIGVuZCA9IDIwMjApDQpkYXRhdGFibGUoaGVhbHRoX2RhdGEpDQpgYGANCg0KIC0gROG7ryBsaeG7h3UgKkhlYWx0aF9kYXRhKiDEkcaw4bujYyByw7p0IHRyw61jaCBuw6B5IG7Ds2kgduG7gSB24buBIHThu7cgbOG7hyB04butIHZvbmcgc8ahIHNpbmggxJHGsOG7o2MgdMOtbmggdG/DoW4gYuG6sW5nIGPDoWNoIHRodSB0aOG6rXAgdGjDtG5nIHRpbiB24buBIHPhu5EgbMaw4bujbmcgdHLhursgZW0gY2jhur90IHRyb25nIG7Eg20gxJHhuqd1IHRpw6puIGPhu6dhIGN14buZYyBz4buRbmcgdsOgIHPhu5EgbMaw4bujbmcgdHLhursgZW0gc2luaCBz4buRbmcgdOG6oWkgKlZp4buHdCBOYW0qIHRyb25nIGPDuW5nIG3hu5l0IG7Eg20uIFThu7cgbOG7hyB04butIHZvbmcgc8ahIHNpbmggxJHGsOG7o2MgdMOtbmggYuG6sW5nIGPDoWNoIGNoaWEgc+G7kSB0cuG6uyBlbSBjaOG6v3QgdHJvbmcgbsSDbSDEkeG6p3UgdGnDqm4gY+G7p2EgY3Xhu5ljIHPhu5FuZyBjaG8gc+G7kSB0cuG6uyBlbSBzaW5oIHPhu5FuZyB2w6AgbmjDom4gduG7m2kgMS4wMDAuDQogLSBC4buZIGThu68gbGnhu4d1IG7DoHkgY8OzIHPhu7EgaOG7o3AgdMOhYyB24bubaSBjw6FjIHThu5UgY2jhu6ljIHF14buRYyB04bq/IG5oxrAgV0hPIGhv4bq3YyBVTklDRUYsIMSR4bq3YyBiaeG7h3QgbMOgIGLhu5kgeSB04bq/IMSR4buDIGN1bmcgY+G6pXAgdsOgIGPhuq1wIG5o4bqtdCBk4buvIGxp4buHdSB24buBIHThu7cgbOG7hyB04butIHZvbmcgc8ahIHNpbmggdOG6oWkgVmnhu4d0IE5hbS4NCiAgDQojIyAqKk5naGnDqm4gY+G7qXUgYuG7mSBk4buvIGxp4buHdSoqDQogLSBUaeG6v24gaMOgbmggcGjDom4gdMOtY2ggdOG7tyBs4buHIHThu60gdm9uZyBj4bunYSB0cuG6uyBzxqEgc2luaCBxdWEgY8OhYyBuxINtDQogDQpgYGB7ciBtZXNzYWdlID0gVFJVRSwgd2FybmluZyA9IEZBTFNFfQ0KZnRfZGF0YSA8LSBoZWFsdGhfZGF0YSAlPiUNCiAgZmlsdGVyKHllYXIgPj0gMjAxMCAmIHllYXIgPD0gMjAyMCkgDQpnZ3Bsb3QoZnRfZGF0YSwgYWVzKHggPSBmYWN0b3IoeWVhciksIHkgPSBTSC5EWU4uTk1SVCkpICsNCiAgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIsIGZpbGwgPSAic2t5Ymx1ZSIpICsNCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IFNILkRZTi5OTVJUKSwgdmp1c3QgPSAxLCBjb2xvciA9ICdyZWQnKSArDQogIGxhYnModGl0bGUgPSAiVOG7tyBs4buHIHThu60gdm9uZyBzxqEgc2luaCB04bqhaSBWaeG7h3QgTmFtIHRoZW8gdOG7q25nIG7Eg20iLA0KICAgICAgIHggPSAiTsSDbSIsDQogICAgICAgeSA9ICJU4bu3IGzhu4cgdOG7rSB2b25nIHPGoSBzaW5oIikgKw0KICB0aGVtZV9taW5pbWFsKCkNCmBgYA0KDQogLSBOaMOsbiBjaHVuZyB0YSBjw7MgdGjhu4MgdGjhuqV5IHF1YSBjw6FjIG7Eg20sIHThu7cgbOG7hyB04butIHZvbmcgY+G7p2EgdHLhursgc8ahIHNpbmggdOG6oWkgdmnhu4d0IE5hbSBjw7Mgc+G7sSBnaeG6o20gZOG6p24gxJHhu4F1LiBDaMOtbmggcGjhu6csIHjDoyBo4buZaSwgY29uIG5nxrDhu51pIG5nw6B5IGPDoG5nIHRp4bq/biBi4buZLCBjw7Mgc+G7sSBj4bqjaSB0aGnhu4duLCBj4bulIHRo4buDOg0KICAtIEPhuqNpIHRoaeG7h24gxJHGsOG7o2Mgdmnhu4djIGNoxINtIHPDs2Mgc+G7qWMga2jhu49lIG3hurkgdsOgIHRy4bq7IHPGoSBzaW5oOiBWaeG7h2MgY+G6o2kgdGhp4buHbiBjaOG6pXQgbMaw4bujbmcgZOG7i2NoIHbhu6UgY2jEg20gc8OzYyBz4bupYyBraOG7j2UgY2hvIHBo4bulIG7hu68gbWFuZyB0aGFpIHbDoCB0cuG6uyBzxqEgc2luaCwgY8WpbmcgbmjGsCB2aeG7h2MgdMSDbmcgY8aw4budbmcga2nhur9uIHRo4bupYyB2w6Agbmjhuq1uIHRo4bupYyB24buBIHPhu6ljIGto4buPZSB0cm9uZyBj4buZbmcgxJHhu5NuZywgY8OzIHRo4buDIGdpw7pwIHBow6F0IGhp4buHbiB2w6AgxJFp4buBdSB0cuG7iyBjw6FjIHbhuqVuIMSR4buBIHPhu6ljIGto4buPZSBz4bubbSBoxqFuLCBnaeG6o20gbmd1eSBjxqEgdOG7rSB2b25nIHPGoSBzaW5oLg0KIC0gVGnhur9wIGPhuq1uIGThu4tjaCB24bulIGNoxINtIHPDs2Mgc+G7qWMga2jhu49lIHThu6sgbmjhu69uZyBjw7luZyBzw6J1IHhhLCBuw7RuZyB0aMO0biBo4bq7byBsw6FuaCBuaOG6pXQ6IEPhuqNpIHRoaeG7h24gdGnhur9wIGPhuq1uIGPhu6dhIGPhu5luZyDEkeG7k25nIMSR4bq/biBk4buLY2ggduG7pSBjaMSDbSBzw7NjIHPhu6ljIGto4buPZSBt4bq5IHbDoCB0cuG6uyBlbSwgxJHhurdjIGJp4buHdCBsw6Ag4bufIGPDoWMga2h1IHbhu7FjIG7DtG5nIHRow7RuIGhv4bq3YyBjw7MgxJFp4buBdSBraeG7h24ga8OpbSwgY8OzIHRo4buDIGdp4bqjbSB04bu3IGzhu4cgdOG7rSB2b25nIHPGoSBzaW5oIGLhurFuZyBjw6FjaCBjdW5nIGPhuqVwIGThu4tjaCB24bulIGNoxINtIHPDs2MgY2jhuqV0IGzGsOG7o25nIHbDoCBr4buLcCB0aOG7nWkuDQogLSBDaMOtbmggc8OhY2ggdsOgIGNoaeG6v24gbMaw4bujYyB5IHThur8gxJHGsOG7o2MgxJHGsGEgdsOgbzogQ8OhYyBjaMOtbmggc8OhY2ggdsOgIGNoaeG6v24gbMaw4bujYyB5IHThur8gbmjGsCB2aeG7h2MgdMSDbmcgY8aw4budbmcgaOG7hyB0aOG7kW5nIHkgdOG6vywgY+G6o2kgdGhp4buHbiBjxqEgc+G7nyBo4bqhIHThuqduZyB5IHThur8gdsOgIG7Dom5nIGNhbyBuxINuZyBs4buxYyBj4bunYSBuaMOibiB2acOqbiB5IHThur8gIGfDs3AgcGjhuqduIHbDoG8gdmnhu4djIGdp4bqjbSB04bu3IGzhu4cgdOG7rSB2b25nIHPGoSBzaW5oLg0KIC0gR2nDoW8gZOG7pWMgdsOgIG5o4bqtbiB0aOG7qWMgxJHGsOG7o2MgdMSDbmcgY8aw4budbmc6IEPDoWMgY2jGsMahbmcgdHLDrG5oIGdpw6FvIGThu6VjIHbDoCB0xINuZyBjxrDhu51uZyBuaOG6rW4gdGjhu6ljIHbhu4Egc+G7qWMga2jhu49lIG3hurkgdsOgIHRy4bq7IHPGoSBzaW5oIGPDsyB0aOG7gyBnacO6cCB0xINuZyBjxrDhu51uZyBraeG6v24gdGjhu6ljIHbDoCBuaOG6rW4gdGjhu6ljIHbhu4EgY8OhYyBiaeG7h24gcGjDoXAgcGjDsm5nIG5n4burYSB2w6AgxJFp4buBdSB0cuG7iywgdOG7qyDEkcOzIGdp4bqjbSBuZ3V5IGPGoSB04butIHZvbmcgc8ahIHNpbmguDQogDQojICoqTmdoacOqbiBj4bupdSBi4buZIGThu68gbGnhu4d1IGPhu6dhIElNRioqDQojIyAqKlThu5VuZyBxdWFuIGLhu5kgZOG7ryBsaeG7h3UqKg0KDQogLSBUcsaw4bubYyBo4bq/dCwgcGjhuqNpIHThuqNpIHbhu4EgZ8OzaSBk4buvIGxp4buHdSBn4buRYyB2w6AgZ+G7jWkgbsOzIGzDqm4gxJHhu4MgbMOgbSB2aeG7h2MNCiANCmBgYHtyIG1lc3NhZ2UgPSBUUlVFLCB3YXJuaW5nID0gRkFMU0V9DQppbnN0YWxsLnBhY2thZ2VzKCJpbWYuZGF0YSIpDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkoaW1mLmRhdGEpDQpgYGANCg0KIC0gQuG7mSBk4buvIGxp4buHdSB0cm9uZyBJTUYgKFF14bu5IFRp4buBbiB04buHIFF14buRYyB04bq/KSBjw7MgdGjhu4MgY2jhu6lhIG5oaeG7gXUgbG/huqFpIHRow7RuZyB0aW4gduG7gSBraW5oIHThur8gdsOgIHTDoGkgY2jDrW5oIGPhu6dhIGPDoWMgcXXhu5FjIGdpYSB0csOqbiB0aOG6vyBnaeG7m2kuIEPDoWMgYuG7mSBk4buvIGxp4buHdSBuw6B5IHRoxrDhu51uZyBiYW8gZ+G7k20gY8OhYyBjaOG7iSBz4buRIGtpbmggdOG6vyBuaMawIEdEUCwgbOG6oW0gcGjDoXQsIHThu7cgbOG7hyB0aOG6pXQgbmdoaeG7h3AsIGNo4buJIHPhu5Egc+G6o24geHXhuqV0IGPDtG5nIG5naGnhu4dwLCBk4buvIGxp4buHdSB0aMawxqFuZyBt4bqhaSBuaMawIGdpw6EgdHLhu4sgeHXhuqV0IGto4bqpdSB2w6Agbmjhuq1wIGto4bqpdSBow6BuZyBow7NhLCBk4buvIGxp4buHdSB24buBIHTDoGkgY2jDrW5oIG5oxrAgZMawIG7hu6MgY8O0bmcsIGThu68gbGnhu4d1IHbhu4EgdOG7tyBnacOhIGjhu5FpIMSRb8OhaSwgdsOgIG5oaeG7gXUgdGjDtG5nIHRpbiBraMOhYy4NCg0KIC0gQ+G7pSB0aOG7gywgSU1GIGN1bmcgY+G6pXAgY8OhYyBi4buZIGThu68gbGnhu4d1IG5oxrAgRGlyZWN0aW9uIG9mIFRyYWRlIFN0YXRpc3RpY3MgKERPVFMpLCBJbnRlcm5hdGlvbmFsIEZpbmFuY2lhbCBTdGF0aXN0aWNzIChJRlMpLCBCYWxhbmNlIG9mIFBheW1lbnRzIFN0YXRpc3RpY3MgKEJPUFMpLCB2w6AgR292ZXJubWVudCBGaW5hbmNlIFN0YXRpc3RpY3MgKEdGUyksIGdpw7pwIG5nxrDhu51pIGTDuW5nIHRoZW8gZMO1aSB2w6AgcGjDom4gdMOtY2ggY8OhYyB4dSBoxrDhu5tuZyB2w6AgYmnhur9uIMSR4buZbmcgdHJvbmcgbuG7gW4ga2luaCB04bq/IHRvw6BuIGPhuqd1IHbDoCBjw6FjIHF14buRYyBnaWEgY+G7pSB0aOG7gy4NCiANCiMjICoqTmdoacOqbiBj4bupdSBi4buZIGThu68gbGnhu4d1KioNCiAtIFRp4bq/biBow6BuaCBs4buNYyBi4buZIGThu68gbGnhu4d1LCBs4bqleSByYSAqdGjDtG5nIHRpbiBjxqEgYuG6o24gduG7gSBnacOhbyBk4bulYyB0cm9uZyAnQ1BJJyoNCiANCmBgYHtyIG1lc3NhZ2UgPSBUUlVFLCB3YXJuaW5nID0gRkFMU0V9DQp0bXAgPC0gbG9hZF9kYXRhc2V0cygnQ1BJJykNCmNoaV9zbyA8LSB0bXAkZ2V0X3NlcmllcyhmcmVxID0gJ0EnLCByZWZfYXJlYSA9ICdWTicsIGluZGljYXRvciA9ICdQQ1BJRURfSVgnLCBzdGFydCA9IDIwMDAsIGVuZCA9IDIwMjMpDQpjaGlfc28gPC0gbmEub21pdChjaGlfc28pDQpuYW1lcyhjaGlfc28pIDwtIGMoJ05hbScsJ05hbUdvYycsJ0NoaXNvZ2lhY2EnKQ0KZGF0YXRhYmxlKGNoaV9zbykNCmBgYA0KDQogLSBC4bqjbmcgZOG7ryBsaeG7h3UgaGnhu4duIHJhIGN1bmcgY+G6pXAgKnRow7RuZyB0aW4gduG7gSBt4bupYyDEkeG7mSBiaeG6v24gxJHhu5luZyBj4bunYSBnacOhIGPhuqMqIHRyb25nIGPDoWMgbMSpbmggduG7sWMgZ2nDoW8gZOG7pWMgdsOgIHkgdOG6vyBzbyB24bubaSBjaOG7iSBz4buRIGdpw6EgdGnDqnUgZMO5bmcgdOG7lW5nIHF1w6F0LiANCiANCmBgYHtyIG1lc3NhZ2UgPSBUUlVFLCB3YXJuaW5nID0gRkFMU0V9DQogY2hpX3NvIDwtIGNoaV9zbyAlPiUgDQogIG11dGF0ZShDaGlzb2dpYWNhID0gYXMubnVtZXJpYyhDaGlzb2dpYWNhKSkgJT4lDQogIG11dGF0ZShDaGlzb2dpYWNhID0gcm91bmQoQ2hpc29naWFjYSwgMikpICU+JQ0KICBhcnJhbmdlKENoaXNvZ2lhY2EpDQpjaGlfc28gPC0gc3Vic2V0KGNoaV9zbywgTmFtID49IDIwMTMgJiBOYW0gPD0gMjAyMykNCmdncGxvdChjaGlfc28sIGFlcyh4ID0gTmFtLCB5ID0gQ2hpc29naWFjYSkpICsNCiAgZ2VvbV9wb2ludCgpICsNCiAgbGFicyh0aXRsZSA9ICJDaOG7iSBz4buRIFBDUElFRF9JWCB04bqhaSBWaeG7h3QgTmFtICgyMDEzLTIwMjMpIiwNCiAgICAgICB4ID0gIk7Eg20iLA0KICAgICAgIHkgPSAiQ2jhu4kgc+G7kSBnacOhIGPhuqMiKSArDQogIHRoZW1lX21pbmltYWwoKQ0KYGBgDQoNCiAtIGNo4buJIHPhu5EgUENQSUVEX0lYIHTEg25nIHF1YSBjw6FjIG7Eg20gdsOgIMSRxrDhu6NjIG3DtCB04bqjIGPDsyBsacOqbiBxdWFuIMSR4bq/biBnacOhbyBk4bulYywgxJFp4buBdSBuw6B5IGPDsyB0aOG7gyDDoW0gY2jhu4kgcuG6sW5nIGNoaSBwaMOtIGdpw6FvIGThu6VjIMSRYW5nIHTEg25nIHRoZW8gdGjhu51pIGdpYW4uIMSQaeG7gXUgbsOgeSBjw7MgdGjhu4MgxJHhu5NuZyBuZ2jEqWEgduG7m2kgdmnhu4djIMSR4bqndSB0xrAgdsOgbyBnacOhbyBk4bulYyDEkWFuZyB0xINuZyBsw6puLCBjw7MgdGjhu4MgbMOgIGRvIGNow61uaCBzw6FjaCBjw7RuZyBj4buZbmcsIHPhu7EgdMSDbmcgdHLGsOG7n25nIGtpbmggdOG6vyBob+G6t2Mgbmh1IGPhuqd1IGPhu6dhIHjDoyBo4buZaS4gU+G7sSB0xINuZyBj4bunYSBjaOG7iSBz4buRIG7DoHkgY8OzIHRo4buDIOG6o25oIGjGsOG7n25nIMSR4bq/biBz4buxIHRp4bq/cCBj4bqtbiB2w6AgY2jhuqV0IGzGsOG7o25nIGdpw6FvIGThu6VjLCBjxaluZyBuaMawIHBo4bqjbiDDoW5oIG3hu6ljIMSR4buZIHF1YW4gdMOibSB2w6AgxJHhuqd1IHTGsCB2w6BvIG5ndeG7k24gbOG7sWMgZ2nDoW8gZOG7pWMgY+G7p2EgbeG7mXQgcXXhu5FjIGdpYS4NCg0KDQogDQog