Seccion 1.1

Precitacion en Magdalena con CHIRPS

Aqui se presentaran los pasos a seguir para obtener el mapa de precipitacion con los datos de CHIRPS, incluyendo descarga de bibliotecas y la carga en R de las mismas, la visualizacion del contenido de los datos de delimitacion del departamento y de los datos de precipitacion, la union de los datos y, por ultimo, el mapeo de los datos.
list.of.packages <- c("rgdal", "raster", "sf", "tidyverse", "tmap", "gstat", "sp")             
new.packages <- list.of.packages[!(list.of.packages %in% installed.packages()[,"Package"])]                      
if(length(new.packages)) install.packages(new.packages)
library(rgdal)                                                    
rgdal: version: 1.5-8, (SVN revision 990)
Geospatial Data Abstraction Library extensions to R successfully loaded
Loaded GDAL runtime: GDAL 3.0.4, released 2020/01/28
Path to GDAL shared files: C:/Users/vale_/Documents/R/win-library/3.6/sf/gdal
GDAL binary built with GEOS: TRUE 
Loaded PROJ runtime: Rel. 6.3.1, February 10th, 2020, [PJ_VERSION: 631]
Path to PROJ shared files: C:/Users/vale_/Documents/R/win-library/3.6/rgdal/proj
Linking to sp version:1.4-2
To mute warnings of possible GDAL/OSR exportToProj4() degradation,
use options("rgdal_show_exportToProj4_warnings"="none") before loading rgdal.
library(raster)
library(sf)
Linking to GEOS 3.8.0, GDAL 3.0.4, PROJ 6.3.1
library(tidyverse)
Registered S3 methods overwritten by 'dbplyr':
  method         from
  print.tbl_lazy     
  print.tbl_sql      
-- Attaching packages --------------------------------------- tidyverse 1.3.0 --
v ggplot2 3.3.1     v purrr   0.3.4
v tibble  3.0.1     v dplyr   1.0.0
v tidyr   1.1.0     v stringr 1.4.0
v readr   1.3.1     v forcats 0.5.0
-- Conflicts ------------------------------------------ tidyverse_conflicts() --
x tidyr::extract() masks raster::extract()
x dplyr::filter()  masks stats::filter()
x dplyr::lag()     masks stats::lag()
x dplyr::select()  masks raster::select()
library(tmap)
library(gstat)
library(sp)
precip2 <- raster("C:/Users/vale_/Desktop/UNAL/6to semestre/GB/_chirps.tif") 
precip2
class      : RasterLayer 
dimensions : 2000, 7200, 14400000  (nrow, ncol, ncell)
resolution : 0.05, 0.05  (x, y)
extent     : -180, 180, -50, 50  (xmin, xmax, ymin, ymax)
crs        : +proj=longlat +datum=WGS84 +no_defs 
source     : C:/Users/vale_/Desktop/UNAL/6to semestre/GB/_chirps.tif 
names      : X_chirps 
(mag <- shapefile("C:/Users/vale_/Desktop/UNAL/6to semestre/GB/ADMINISTRATIVO/MGN_MPIO_POLITICO.shp"))
class       : SpatialPolygonsDataFrame 
features    : 30 
extent      : -74.9466, -73.54184, 8.936489, 11.34891  (xmin, xmax, ymin, ymax)
CRS object has comment, which is lost in output
crs         : +proj=longlat +datum=WGS84 +no_defs 
variables   : 9
names       : DPTO_CCDGO, MPIO_CCDGO,    MPIO_CNMBR,           MPIO_CRSLC,    MPIO_NAREA, MPIO_NANO, DPTO_CNMBR,     Shape_Leng,       Shape_Area 
min values  :         47,      47001,     ALGARROBO,                 1525,  109.48370634,      2017,  MAGDALENA, 0.544326259962, 0.00903317812539 
max values  :         47,      47980, ZONA BANANERA, Ordenanza 74 de 1912, 2347.13929515,      2017,  MAGDALENA,  3.19741434448,   0.194233330475 
precip.crop <- raster::crop(precip2, extent(mag))
precip.mask <- mask(x = precip.crop, mask = mag)                  
precip.mask
class      : RasterLayer 
dimensions : 48, 28, 1344  (nrow, ncol, ncell)
resolution : 0.05, 0.05  (x, y)
extent     : -74.95, -73.55, 8.949999, 11.35  (xmin, xmax, ymin, ymax)
crs        : +proj=longlat +datum=WGS84 +no_defs 
source     : memory
names      : X_chirps 
values     : 0, 66.45473  (min, max)
plot(precip.mask, main= "CHIRPS Precipitación en Magdalena 
     desde 03.06. a 07.06. en 2020 [mm]")               
plot(mag, add=TRUE)                         

Sección 1.2

Otros mapas que pueden ser de utilidad

library(leaflet)
library(RColorBrewer)
pal <- colorNumeric(c("red", "orange", "yellow", "blue", "darkblue"), values(precip.mask),
  na.color = "transparent")

leaflet() %>% addTiles() %>%
  addRasterImage(precip.mask, colors = pal, opacity = 0.6) %>%
  addLegend(pal = pal, values = values(precip.mask),
    title = "CHIRPS Precipitación en Magdalena 
     desde 03.06. a 07.06. en 2020 [mm]")
precip.points <- rasterToPoints(precip.mask, spatial = TRUE)                                    
precip.points
names(precip.points) <- "rain"           
precip.points
str(precip.points)

Mapa de puntos

plot(precip.mask, main= "CHIRPS Precipitación en Magdalena 
desde 03.06. a 07.06. en 2020 [mm]")                  
plot(mag, add=TRUE)                      
points(precip.points$x, precip.points$y, col = "red", cex =.3)   

geojsonio::geojson_write(precip.points, file = "./chirps/ppoints.geojson")
precip.points <- geojsonio::geojson_read("./chirps/ppoints.geojson", what="sp")                                                     
precip.points
(mag <- shapefile("C:/Users/vale_/Desktop/UNAL/6to semestre/GB/ADMINISTRATIVO/MGN_MPIO_POLITICO.shp"))
magda_sf <- sf::st_as_sf(mag)                                     
(border_sf <-                                                    
    magda_sf %>%                                                 
    summarise(area = sum(MPIO_NAREA)))
(border <- as(border_sf, 'Spatial'))
(magda.sf <- st_as_sf(mag) %>% mutate(MUNIC = MPIO_CNMBR, CODIGO = MPIO_CCDGO) %>% select(MUNIC, CODIGO))
p.sf <- st_as_sf(precip.points)                                   
(precip.sf = st_intersection(magda.sf, p.sf))
p.sf.magna <- st_transform(precip.sf, crs = 3116)                 
magda.sf.magna <- st_transform(magda.sf, crs = 3116)
(prec2 <- as(p.sf.magna, 'Spatial'))
shapefile(prec2, filename='C:/Users/vale_/Desktop/UNAL/6to semestre/GB/prec2.shp', overwrite=TRUE)
prec2$rainfall <- round(prec2$rain, 1)                            
prec2
(magda2 <- as(magda.sf.magna, 'Spatial'))
shapefile(magda2, filename='C:/Users/vale_/Desktop/UNAL/6to semestre/GB/magda2.shp', overwrite=TRUE)
prec2@bbox <- magda2@bbox
tm_shape(magda2) + tm_polygons() +                                
  tm_shape(prec2) +                                              
  tm_dots(col = "rainfall", palette = "RdBu", midpoint = 20.0,     
          title = "Precipitación muestreada \n(in mm)", size = 0.2) +
  tm_text("rainfall", just = "center", xmod = .06, size = 0.25) +   
  tm_legend(legend.outside=TRUE)

sessionInfo()
R version 3.6.3 (2020-02-29)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 18362)

Matrix products: default

locale:
[1] LC_COLLATE=Spanish_Colombia.1252 
[2] LC_CTYPE=Spanish_Colombia.1252   
[3] LC_MONETARY=Spanish_Colombia.1252
[4] LC_NUMERIC=C                     
[5] LC_TIME=Spanish_Colombia.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets 
[6] methods   base     

other attached packages:
 [1] RColorBrewer_1.1-2    gstat_2.0-6          
 [3] tmap_3.0              SpatialPosition_2.0.1
 [5] cartography_2.4.1     rgeos_0.5-3          
 [7] readxl_1.3.1          lwgeom_0.2-4         
 [9] leaflet_2.0.3         scales_1.1.1         
[11] sf_0.9-3              forcats_0.5.0        
[13] stringr_1.4.0         dplyr_1.0.0          
[15] purrr_0.3.4           readr_1.3.1          
[17] tidyr_1.1.0           tibble_3.0.1         
[19] ggplot2_3.3.1         tidyverse_1.3.0      
[21] elevatr_0.2.0         rgdal_1.5-8          
[23] rgl_0.100.54          rasterVis_0.47       
[25] latticeExtra_0.6-29   lattice_0.20-38      
[27] raster_3.1-5          sp_1.4-2             

loaded via a namespace (and not attached):
  [1] leafem_0.1.1            colorspace_1.4-1       
  [3] ellipsis_0.3.1          class_7.3-15           
  [5] rsconnect_0.8.16        markdown_1.1           
  [7] base64enc_0.1-3         fs_1.4.1               
  [9] dichromat_2.0-0         httpcode_0.3.0         
 [11] rstudioapi_0.11         farver_2.0.3           
 [13] hexbin_1.28.1           fansi_0.4.1            
 [15] lubridate_1.7.8         xml2_1.2.5             
 [17] codetools_0.2-16        knitr_1.28             
 [19] jsonlite_1.6.1          tmaptools_3.0          
 [21] broom_0.5.6             dbplyr_1.4.4           
 [23] png_0.1-7               shiny_1.4.0.2          
 [25] compiler_3.6.3          httr_1.4.1             
 [27] backports_1.1.7         lazyeval_0.2.2         
 [29] assertthat_0.2.1        fastmap_1.0.1          
 [31] cli_2.0.2               later_1.0.0            
 [33] leaflet.providers_1.9.0 htmltools_0.4.0        
 [35] tools_3.6.3             gtable_0.3.0           
 [37] glue_1.4.1              geojson_0.3.4          
 [39] V8_3.2.0                Rcpp_1.0.4.6           
 [41] cellranger_1.1.0        vctrs_0.3.0            
 [43] crul_0.9.0              nlme_3.1-144           
 [45] leafsync_0.1.0          crosstalk_1.1.0.1      
 [47] xfun_0.14               rvest_0.3.5            
 [49] mime_0.9                miniUI_0.1.1.1         
 [51] lifecycle_0.2.0         XML_3.99-0.3           
 [53] jqr_1.1.0               zoo_1.8-8              
 [55] hms_0.5.3               promises_1.1.0         
 [57] slippymath_0.3.1        parallel_3.6.3         
 [59] curl_4.3                yaml_2.2.1             
 [61] stringi_1.4.6           maptools_1.0-1         
 [63] e1071_1.7-3             manipulateWidget_0.10.1
 [65] intervals_0.15.2        rlang_0.4.6            
 [67] pkgconfig_2.0.3         evaluate_0.14          
 [69] htmlwidgets_1.5.1       tidyselect_1.1.0       
 [71] magrittr_1.5            R6_2.4.1               
 [73] geojsonio_0.9.2         generics_0.0.2         
 [75] DBI_1.1.0               foreign_0.8-75         
 [77] pillar_1.4.4            haven_2.3.0            
 [79] withr_2.2.0             xts_0.12-0             
 [81] units_0.6-6             stars_0.4-1            
 [83] abind_1.4-5             spacetime_1.2-3        
 [85] modelr_0.1.8            crayon_1.3.4           
 [87] KernSmooth_2.23-16      rmarkdown_2.1          
 [89] jpeg_0.1-8.1            grid_3.6.3             
 [91] isoband_0.2.2.9000      FNN_1.1.3              
 [93] blob_1.2.1              reprex_0.3.0           
 [95] digest_0.6.25           classInt_0.4-3         
 [97] webshot_0.5.2           xtable_1.8-4           
 [99] httpuv_1.5.3.1          munsell_0.5.0          
[101] viridisLite_0.3.0      
LS0tDQp0aXRsZTogIkFuZXhvIDEiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQojIyBTZWNjaW9uIDEuMSANCg0KIyMjIyBQcmVjaXRhY2lvbiBlbiBNYWdkYWxlbmEgY29uIENISVJQUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCg0KPGRpdiBzdHlsZT0idGV4dC1hbGlnbjoganVzdGlmeSI+QXF1aSBzZSBwcmVzZW50YXJhbiBsb3MgcGFzb3MgYSBzZWd1aXIgcGFyYSBvYnRlbmVyIGVsIG1hcGEgZGUgcHJlY2lwaXRhY2lvbiBjb24gbG9zIGRhdG9zIGRlIENISVJQUywgaW5jbHV5ZW5kbyBkZXNjYXJnYSBkZSBiaWJsaW90ZWNhcyB5IGxhIGNhcmdhIGVuIFIgZGUgbGFzIG1pc21hcywgbGEgdmlzdWFsaXphY2lvbiBkZWwgY29udGVuaWRvIGRlIGxvcyBkYXRvcyBkZSBkZWxpbWl0YWNpb24gZGVsIGRlcGFydGFtZW50byB5IGRlIGxvcyBkYXRvcyBkZSBwcmVjaXBpdGFjaW9uLCBsYSB1bmlvbiBkZSBsb3MgZGF0b3MgeSwgcG9yIHVsdGltbywgZWwgbWFwZW8gZGUgbG9zIGRhdG9zLjxkaXYvPiANCmBgYHtyIGV2YWw9VFJVRSwgZWNobz1UUlVFfQ0KbGlzdC5vZi5wYWNrYWdlcyA8LSBjKCJyZ2RhbCIsICJyYXN0ZXIiLCAic2YiLCAidGlkeXZlcnNlIiwgInRtYXAiLCAiZ3N0YXQiLCAic3AiKSAgICAgICAgICAgICANCm5ldy5wYWNrYWdlcyA8LSBsaXN0Lm9mLnBhY2thZ2VzWyEobGlzdC5vZi5wYWNrYWdlcyAlaW4lIGluc3RhbGxlZC5wYWNrYWdlcygpWywiUGFja2FnZSJdKV0gICAgICAgICAgICAgICAgICAgICAgDQppZihsZW5ndGgobmV3LnBhY2thZ2VzKSkgaW5zdGFsbC5wYWNrYWdlcyhuZXcucGFja2FnZXMpDQpsaWJyYXJ5KHJnZGFsKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCmxpYnJhcnkocmFzdGVyKQ0KbGlicmFyeShzZikNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeSh0bWFwKQ0KbGlicmFyeShnc3RhdCkNCmxpYnJhcnkoc3ApDQpwcmVjaXAyIDwtIHJhc3RlcigiQzovVXNlcnMvdmFsZV8vRGVza3RvcC9VTkFMLzZ0byBzZW1lc3RyZS9HQi9fY2hpcnBzLnRpZiIpIA0KcHJlY2lwMg0KYGBgDQoNCmBgYHtyIGV2YWw9VFJVRSwgZWNobz1UUlVFfQ0KKG1hZyA8LSBzaGFwZWZpbGUoIkM6L1VzZXJzL3ZhbGVfL0Rlc2t0b3AvVU5BTC82dG8gc2VtZXN0cmUvR0IvQURNSU5JU1RSQVRJVk8vTUdOX01QSU9fUE9MSVRJQ08uc2hwIikpDQpgYGANCg0KYGBge3IgZXZhbD1UUlVFLCBlY2hvPVRSVUV9DQpwcmVjaXAuY3JvcCA8LSByYXN0ZXI6OmNyb3AocHJlY2lwMiwgZXh0ZW50KG1hZykpDQpwcmVjaXAubWFzayA8LSBtYXNrKHggPSBwcmVjaXAuY3JvcCwgbWFzayA9IG1hZykgICAgICAgICAgICAgICAgICANCnByZWNpcC5tYXNrDQpgYGANCg0KYGBge3IgZXZhbD1UUlVFLCBlY2hvPVRSVUV9DQpwbG90KHByZWNpcC5tYXNrLCBtYWluPSAiQ0hJUlBTIFByZWNpcGl0YWNp824gZW4gTWFnZGFsZW5hIA0KICAgICBkZXNkZSAwMy4wNi4gYSAwNy4wNi4gZW4gMjAyMCBbbW1dIikgICAgICAgICAgICAgICANCnBsb3QobWFnLCBhZGQ9VFJVRSkgICAgICAgICAgICAgICAgICAgICAgICAgDQpgYGANCiMjIFNlY2Npw7NuIDEuMiANCg0KIyMjIyBPdHJvcyBtYXBhcyBxdWUgcHVlZGVuIHNlciBkZSB1dGlsaWRhZA0KDQpgYGB7ciB3YXJuaW5nPUZBTFNFLCBldmFsPVRSVUUsIGVjaG89VFJVRX0NCmxpYnJhcnkobGVhZmxldCkNCmxpYnJhcnkoUkNvbG9yQnJld2VyKQ0KcGFsIDwtIGNvbG9yTnVtZXJpYyhjKCJyZWQiLCAib3JhbmdlIiwgInllbGxvdyIsICJibHVlIiwgImRhcmtibHVlIiksIHZhbHVlcyhwcmVjaXAubWFzayksDQogIG5hLmNvbG9yID0gInRyYW5zcGFyZW50IikNCg0KbGVhZmxldCgpICU+JSBhZGRUaWxlcygpICU+JQ0KICBhZGRSYXN0ZXJJbWFnZShwcmVjaXAubWFzaywgY29sb3JzID0gcGFsLCBvcGFjaXR5ID0gMC42KSAlPiUNCiAgYWRkTGVnZW5kKHBhbCA9IHBhbCwgdmFsdWVzID0gdmFsdWVzKHByZWNpcC5tYXNrKSwNCiAgICB0aXRsZSA9ICJDSElSUFMgUHJlY2lwaXRhY2nzbiBlbiBNYWdkYWxlbmEgDQogICAgIGRlc2RlIDAzLjA2LiBhIDA3LjA2LiBlbiAyMDIwIFttbV0iKQ0KYGBgDQoNCg0KYGBge3IgZXZhbD1GQUxTRSwgZWNobz1UUlVFfQ0KcHJlY2lwLnBvaW50cyA8LSByYXN0ZXJUb1BvaW50cyhwcmVjaXAubWFzaywgc3BhdGlhbCA9IFRSVUUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQpwcmVjaXAucG9pbnRzDQpgYGANCg0KYGBge3IgZXZhbD1GQUxTRSwgZWNobz1UUlVFfQ0KbmFtZXMocHJlY2lwLnBvaW50cykgPC0gInJhaW4iICAgICAgICAgICANCnByZWNpcC5wb2ludHMNCmBgYA0KYGBge3IgZXZhbD1GQUxTRSwgZWNobz1UUlVFfQ0Kc3RyKHByZWNpcC5wb2ludHMpDQpgYGANCiMjIyBNYXBhIGRlIHB1bnRvcw0KDQpgYGB7ciBldmFsPVRSVUUsIGVjaG89VFJVRX0NCnBsb3QocHJlY2lwLm1hc2ssIG1haW49ICJDSElSUFMgUHJlY2lwaXRhY2nzbiBlbiBNYWdkYWxlbmEgDQpkZXNkZSAwMy4wNi4gYSAwNy4wNi4gZW4gMjAyMCBbbW1dIikgICAgICAgICAgICAgICAgICANCnBsb3QobWFnLCBhZGQ9VFJVRSkgICAgICAgICAgICAgICAgICAgICAgDQpwb2ludHMocHJlY2lwLnBvaW50cyR4LCBwcmVjaXAucG9pbnRzJHksIGNvbCA9ICJyZWQiLCBjZXggPS4zKSAgIA0KYGBgDQoNCmBgYHtyIGV2YWw9RkFMU0UsIGVjaG89VFJVRX0NCmdlb2pzb25pbzo6Z2VvanNvbl93cml0ZShwcmVjaXAucG9pbnRzLCBmaWxlID0gIi4vY2hpcnBzL3Bwb2ludHMuZ2VvanNvbiIpDQpgYGANCg0KYGBge3IgZXZhbD1GQUxTRSwgZWNobz1UUlVFfQ0KcHJlY2lwLnBvaW50cyA8LSBnZW9qc29uaW86Omdlb2pzb25fcmVhZCgiLi9jaGlycHMvcHBvaW50cy5nZW9qc29uIiwgd2hhdD0ic3AiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQpwcmVjaXAucG9pbnRzDQpgYGANCg0KDQpgYGB7ciBldmFsPUZBTFNFLCBlY2hvPVRSVUV9DQoobWFnIDwtIHNoYXBlZmlsZSgiQzovVXNlcnMvdmFsZV8vRGVza3RvcC9VTkFMLzZ0byBzZW1lc3RyZS9HQi9BRE1JTklTVFJBVElWTy9NR05fTVBJT19QT0xJVElDTy5zaHAiKSkNCmBgYA0KDQoNCmBgYHtyIGV2YWw9RkFMU0UsIGVjaG89VFJVRX0NCm1hZ2RhX3NmIDwtIHNmOjpzdF9hc19zZihtYWcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KYGBgDQoNCmBgYHtyIGV2YWw9RkFMU0UsIGVjaG89VFJVRX0NCihib3JkZXJfc2YgPC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgbWFnZGFfc2YgJT4lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgIHN1bW1hcmlzZShhcmVhID0gc3VtKE1QSU9fTkFSRUEpKSkNCmBgYA0KDQpgYGB7ciBldmFsPUZBTFNFLCBlY2hvPVRSVUV9DQooYm9yZGVyIDwtIGFzKGJvcmRlcl9zZiwgJ1NwYXRpYWwnKSkNCmBgYA0KYGBge3IgZXZhbD1GQUxTRSwgZWNobz1UUlVFfQ0KKG1hZ2RhLnNmIDwtIHN0X2FzX3NmKG1hZykgJT4lIG11dGF0ZShNVU5JQyA9IE1QSU9fQ05NQlIsIENPRElHTyA9IE1QSU9fQ0NER08pICU+JSBzZWxlY3QoTVVOSUMsIENPRElHTykpDQpgYGANCmBgYHtyIGV2YWw9RkFMU0UsIGVjaG89VFJVRX0NCnAuc2YgPC0gc3RfYXNfc2YocHJlY2lwLnBvaW50cykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKHByZWNpcC5zZiA9IHN0X2ludGVyc2VjdGlvbihtYWdkYS5zZiwgcC5zZikpDQpgYGANCg0KYGBge3IgZXZhbD1GQUxTRSwgZWNobz1UUlVFfQ0KcC5zZi5tYWduYSA8LSBzdF90cmFuc2Zvcm0ocHJlY2lwLnNmLCBjcnMgPSAzMTE2KSAgICAgICAgICAgICAgICAgDQptYWdkYS5zZi5tYWduYSA8LSBzdF90cmFuc2Zvcm0obWFnZGEuc2YsIGNycyA9IDMxMTYpDQpgYGANCg0KYGBge3IgZXZhbD1GQUxTRSwgZWNobz1UUlVFfQ0KKHByZWMyIDwtIGFzKHAuc2YubWFnbmEsICdTcGF0aWFsJykpDQpgYGANCg0KYGBge3IgZXZhbD1GQUxTRSwgZWNobz1UUlVFfQ0Kc2hhcGVmaWxlKHByZWMyLCBmaWxlbmFtZT0nQzovVXNlcnMvdmFsZV8vRGVza3RvcC9VTkFMLzZ0byBzZW1lc3RyZS9HQi9wcmVjMi5zaHAnLCBvdmVyd3JpdGU9VFJVRSkNCmBgYA0KDQpgYGB7ciBldmFsPUZBTFNFLCBlY2hvPVRSVUV9DQpwcmVjMiRyYWluZmFsbCA8LSByb3VuZChwcmVjMiRyYWluLCAxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICANCnByZWMyDQpgYGANCmBgYHtyIGV2YWw9RkFMU0UsIGVjaG89VFJVRX0NCihtYWdkYTIgPC0gYXMobWFnZGEuc2YubWFnbmEsICdTcGF0aWFsJykpDQpgYGANCmBgYHtyIGV2YWw9RkFMU0UsIGVjaG89VFJVRX0gDQpzaGFwZWZpbGUobWFnZGEyLCBmaWxlbmFtZT0nQzovVXNlcnMvdmFsZV8vRGVza3RvcC9VTkFMLzZ0byBzZW1lc3RyZS9HQi9tYWdkYTIuc2hwJywgb3ZlcndyaXRlPVRSVUUpDQpgYGANCmBgYHtyIGV2YWw9RkFMU0UsIGVjaG89VFJVRX0NCnByZWMyQGJib3ggPC0gbWFnZGEyQGJib3gNCmBgYA0KYGBge3IgZXZhbD1UUlVFLCBlY2hvPVRSVUUsIHdhcm5pbmc9RkFMU0V9DQp0bV9zaGFwZShtYWdkYTIpICsgdG1fcG9seWdvbnMoKSArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgdG1fc2hhcGUocHJlYzIpICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogIHRtX2RvdHMoY29sID0gInJhaW5mYWxsIiwgcGFsZXR0ZSA9ICJSZEJ1IiwgbWlkcG9pbnQgPSAyMC4wLCAgICAgDQogICAgICAgICAgdGl0bGUgPSAiUHJlY2lwaXRhY2nzbiBtdWVzdHJlYWRhIFxuKGluIG1tKSIsIHNpemUgPSAwLjIpICsNCiAgdG1fdGV4dCgicmFpbmZhbGwiLCBqdXN0ID0gImNlbnRlciIsIHhtb2QgPSAuMDYsIHNpemUgPSAwLjI1KSArICAgDQogIHRtX2xlZ2VuZChsZWdlbmQub3V0c2lkZT1UUlVFKQ0KYGBgDQpgYGB7cn0NCnNlc3Npb25JbmZvKCkNCmBgYA0K