Contexto

La base de datos contiene estadísticas en arrestos por cada 100,000 residentes por agresión, asesinato y violación en cada uno de los 50 estados de EE.UU en 1973.

Instalar librerías

library(maps) # Librería para la visaulización de mapas geograficosw
library(cluster) # Librería para la realización de clusters
library(ggplot2) # Librería para la visualización de datos 
library(data.table) # 
library(factoextra) # librería para graficar cluster
library(dplyr)

Obtener los datos

df = USArrests

# Conocer la naturalidad de los datos
summary(df)
##      Murder          Assault         UrbanPop          Rape      
##  Min.   : 0.800   Min.   : 45.0   Min.   :32.00   Min.   : 7.30  
##  1st Qu.: 4.075   1st Qu.:109.0   1st Qu.:54.50   1st Qu.:15.07  
##  Median : 7.250   Median :159.0   Median :66.00   Median :20.10  
##  Mean   : 7.788   Mean   :170.8   Mean   :65.54   Mean   :21.23  
##  3rd Qu.:11.250   3rd Qu.:249.0   3rd Qu.:77.75   3rd Qu.:26.18  
##  Max.   :17.400   Max.   :337.0   Max.   :91.00   Max.   :46.00
df_escalado = scale(df)

Segmentación de datos

Cantidad de grupos

set.seed(123)
grupos = 4 

Generar los segmentos

segmentos = kmeans(df_escalado,grupos)
segmentos
## K-means clustering with 4 clusters of sizes 8, 13, 16, 13
## 
## Cluster means:
##       Murder    Assault   UrbanPop        Rape
## 1  1.4118898  0.8743346 -0.8145211  0.01927104
## 2 -0.9615407 -1.1066010 -0.9301069 -0.96676331
## 3 -0.4894375 -0.3826001  0.5758298 -0.26165379
## 4  0.6950701  1.0394414  0.7226370  1.27693964
## 
## Clustering vector:
##        Alabama         Alaska        Arizona       Arkansas     California 
##              1              4              4              1              4 
##       Colorado    Connecticut       Delaware        Florida        Georgia 
##              4              3              3              4              1 
##         Hawaii          Idaho       Illinois        Indiana           Iowa 
##              3              2              4              3              2 
##         Kansas       Kentucky      Louisiana          Maine       Maryland 
##              3              2              1              2              4 
##  Massachusetts       Michigan      Minnesota    Mississippi       Missouri 
##              3              4              2              1              4 
##        Montana       Nebraska         Nevada  New Hampshire     New Jersey 
##              2              2              4              2              3 
##     New Mexico       New York North Carolina   North Dakota           Ohio 
##              4              4              1              2              3 
##       Oklahoma         Oregon   Pennsylvania   Rhode Island South Carolina 
##              3              3              3              3              1 
##   South Dakota      Tennessee          Texas           Utah        Vermont 
##              2              1              4              3              2 
##       Virginia     Washington  West Virginia      Wisconsin        Wyoming 
##              3              3              2              2              3 
## 
## Within cluster sum of squares by cluster:
## [1]  8.316061 11.952463 16.212213 19.922437
##  (between_SS / total_SS =  71.2 %)
## 
## Available components:
## 
## [1] "cluster"      "centers"      "totss"        "withinss"     "tot.withinss"
## [6] "betweenss"    "size"         "iter"         "ifault"

Asignar el grupo al que pertenece cada observación

asignacion = cbind(df, cluster = segmentos$cluster)
#asignacion

Graficar los clusters

fviz_cluster(segmentos, data = df_escalado)

Optimizar la cantidad de grupos

# La cantidad optima de grupos corresponde al punto más alto de la siguiente gráfica
set.seed(123)
optimizacion = clusGap(df_escalado, FUN = kmeans, nstart = 1, K.max = 10)
plot(optimizacion, xlab="Número de cluster k")

Análisis de clasificación del cluster

# Grouping by 'assignation$cluster' and calculating mean of all numeric variables
analisis <- asignacion %>%
  group_by(asignacion$cluster) %>%
  summarise(across(where(is.numeric), mean, na.rm = TRUE))

# Display the result
print(analisis)
## # A tibble: 4 × 6
##   `asignacion$cluster` Murder Assault UrbanPop  Rape cluster
##                  <int>  <dbl>   <dbl>    <dbl> <dbl>   <dbl>
## 1                    1  13.9    244.      53.8  21.4       1
## 2                    2   3.6     78.5     52.1  12.2       2
## 3                    3   5.66   139.      73.9  18.8       3
## 4                    4  10.8    257.      76    33.2       4

Análisis de clusters

Separación por cluster

# Encontrar índices de las filas con el valor deseado en columna_a
cluster1 <- rownames(df)[which(asignacion$cluster == 1)]
cluster2 <- rownames(df)[which(asignacion$cluster == 2)]
cluster3 <- rownames(df)[which(asignacion$cluster == 3)]
cluster4 <- rownames(df)[which(asignacion$cluster == 4)]

Mapa de inseguridad en Estados Unidos

# Visualizar el mapa segregado por la inseguridad
map(database = "state")
map(database = "state", cluster1, col= "red", fill = T, add = TRUE)
map(database = "state", cluster2, col= "green", fill = T, add = TRUE)
map(database = "state", cluster3, col= "yellow", fill = T, add = TRUE)
map(database = "state", cluster4, col= "red", fill = T, add = TRUE)

Análisis de Seguridad por Estado en EE.UU.

A través de un exhaustivo análisis de datos, hemos identificado patrones clave que resaltan las diferencias en seguridad entre varios estados de EE.UU., utilizando variables de asesinatos, arrestos y datos demográficos. Nuestros hallazgos revelan insights significativos sobre la distribución geográfica de la seguridad y cómo factores históricos y sociales pueden influir en ella.

Estados Más Peligrosos - Clasificación en Rojo

Los estados clasificados en rojo representan las áreas con mayor peligrosidad, según nuestro análisis. Esta determinación se basa en:

  • Una proporción elevada de asesinatos y arrestos en comparación con otros estados.
  • Una proporción significativa cuando se considera el número de habitantes, destacando una preocupante tasa de criminalidad per cápita.

Estos estados, predominantemente ubicados en el sur del país, reflejan una tendencia geográfica que merece atención y análisis más profundos.

Análisis por Clusters

  • Cluster 3 (Amarillo): Si bien muestra mejores indicadores en comparación con los estados en rojo, su nivel de arrestos y asesinatos, en proporción, no alcanza los bajos índices observados en el cluster 2 (Verde), el cual representa a los estados con mejor situación de seguridad.

  • Distribución Geográfica: Un patrón notable es que los estados del sur tienden a agruparse en categorías de mayor peligrosidad, mientras que los del norte presentan mejores indicadores de seguridad. Este patrón sugiere la influencia de factores regionales específicos en las tasas de criminalidad.

Contexto Histórico de 1973

Al examinar el contexto de 1973, encontramos conexiones potenciales entre eventos históricos o sociales y las tendencias de seguridad actuales. Este análisis contextual proporciona una capa adicional de comprensión sobre cómo los eventos pasados pueden seguir influyendo en la seguridad de diferentes estados.

Conclusiones Finales

Este análisis nos permite concluir que la seguridad en los estados de EE.UU. es un fenómeno complejo, influenciado por una combinación de factores demográficos, geográficos, y posiblemente históricos. Las diferencias marcadas entre los estados en términos de asesinatos, arrestos, y contextos sociales subrayan la importancia de políticas de seguridad pública que consideren las particularidades regionales.

Nuestro estudio destaca la necesidad de abordajes personalizados para combatir la criminalidad, teniendo en cuenta no solo los datos actuales sino también el legado histórico y social que cada estado porta. La seguridad es un tejido compuesto por múltiples hilos, y solo a través de un análisis detallado y considerado podemos comenzar a desentrañar las soluciones más efectivas.

LS0tCnRpdGxlOiAiTTJfVVNBcnJlc3RzIgphdXRob3I6ICJBcnR1cm8gU2lsdmEsIFZhbGVyaWEgQ2FudMO6LCBEYXZpZCBIZXJlZGlhLCBEYXZpZCBEb21pbmd1ZXoiCmRhdGU6ICJgciBTeXMuRGF0ZSgpYCIKb3V0cHV0OiAKICBodG1sX2RvY3VtZW50OgogICAgdG9jOiBUUlVFCiAgICB0b2NfZmxvYXQ6IFRSVUUKICAgIGNvZGVfZG93bmxvYWQ6IFRSVUUKICAgIHRoZW1lOiBjb3NtbwotLS0KCiFbXSgvVXNlcnMvZGF2aWRkcnVtczE4MC9Eb3dubG9hZHMvZ2lwaHkuZ2lmKQoKIyBDb250ZXh0byAKTGEgYmFzZSBkZSBkYXRvcyBjb250aWVuZSBlc3RhZMOtc3RpY2FzIGVuICoqYXJyZXN0b3MqKiBwb3IgY2FkYSAxMDAsMDAwIHJlc2lkZW50ZXMgcG9yIGFncmVzacOzbiwgYXNlc2luYXRvIHkgdmlvbGFjacOzbiAgZW4gY2FkYSB1bm8gZGUgbG9zIDUwIGVzdGFkb3MgZGUgRUUuVVUgZW4gMTk3My4KCiMjIEluc3RhbGFyIGxpYnJlcsOtYXMKYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KbGlicmFyeShtYXBzKSAjIExpYnJlcsOtYSBwYXJhIGxhIHZpc2F1bGl6YWNpw7NuIGRlIG1hcGFzIGdlb2dyYWZpY29zdwpsaWJyYXJ5KGNsdXN0ZXIpICMgTGlicmVyw61hIHBhcmEgbGEgcmVhbGl6YWNpw7NuIGRlIGNsdXN0ZXJzCmxpYnJhcnkoZ2dwbG90MikgIyBMaWJyZXLDrWEgcGFyYSBsYSB2aXN1YWxpemFjacOzbiBkZSBkYXRvcyAKbGlicmFyeShkYXRhLnRhYmxlKSAjIApsaWJyYXJ5KGZhY3RvZXh0cmEpICMgbGlicmVyw61hIHBhcmEgZ3JhZmljYXIgY2x1c3RlcgpsaWJyYXJ5KGRwbHlyKQpgYGAKCiMjIE9idGVuZXIgbG9zIGRhdG9zIApgYGB7cn0KZGYgPSBVU0FycmVzdHMKCiMgQ29ub2NlciBsYSBuYXR1cmFsaWRhZCBkZSBsb3MgZGF0b3MKc3VtbWFyeShkZikKCmRmX2VzY2FsYWRvID0gc2NhbGUoZGYpCmBgYAoKIyBTZWdtZW50YWNpw7NuIGRlIGRhdG9zCiMjIENhbnRpZGFkIGRlIGdydXBvcwpgYGB7cn0Kc2V0LnNlZWQoMTIzKQpncnVwb3MgPSA0IApgYGAKCiMjIEdlbmVyYXIgbG9zIHNlZ21lbnRvcwpgYGB7cn0Kc2VnbWVudG9zID0ga21lYW5zKGRmX2VzY2FsYWRvLGdydXBvcykKc2VnbWVudG9zCmBgYAoKIyMgQXNpZ25hciBlbCBncnVwbyBhbCBxdWUgcGVydGVuZWNlIGNhZGEgb2JzZXJ2YWNpw7NuCmBgYHtyfQphc2lnbmFjaW9uID0gY2JpbmQoZGYsIGNsdXN0ZXIgPSBzZWdtZW50b3MkY2x1c3RlcikKI2FzaWduYWNpb24KYGBgCgojIEdyYWZpY2FyIGxvcyBjbHVzdGVycyAgCmBgYHtyfQpmdml6X2NsdXN0ZXIoc2VnbWVudG9zLCBkYXRhID0gZGZfZXNjYWxhZG8pCmBgYAogIAojIyBPcHRpbWl6YXIgbGEgY2FudGlkYWQgZGUgZ3J1cG9zCmBgYHtyfQojIExhIGNhbnRpZGFkIG9wdGltYSBkZSBncnVwb3MgY29ycmVzcG9uZGUgYWwgcHVudG8gbcOhcyBhbHRvIGRlIGxhIHNpZ3VpZW50ZSBncsOhZmljYQpzZXQuc2VlZCgxMjMpCm9wdGltaXphY2lvbiA9IGNsdXNHYXAoZGZfZXNjYWxhZG8sIEZVTiA9IGttZWFucywgbnN0YXJ0ID0gMSwgSy5tYXggPSAxMCkKcGxvdChvcHRpbWl6YWNpb24sIHhsYWI9Ik7Dum1lcm8gZGUgY2x1c3RlciBrIikKYGBgCgojIyBBbsOhbGlzaXMgZGUgY2xhc2lmaWNhY2nDs24gZGVsIGNsdXN0ZXIKYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KIyBHcm91cGluZyBieSAnYXNzaWduYXRpb24kY2x1c3RlcicgYW5kIGNhbGN1bGF0aW5nIG1lYW4gb2YgYWxsIG51bWVyaWMgdmFyaWFibGVzCmFuYWxpc2lzIDwtIGFzaWduYWNpb24gJT4lCiAgZ3JvdXBfYnkoYXNpZ25hY2lvbiRjbHVzdGVyKSAlPiUKICBzdW1tYXJpc2UoYWNyb3NzKHdoZXJlKGlzLm51bWVyaWMpLCBtZWFuLCBuYS5ybSA9IFRSVUUpKQoKIyBEaXNwbGF5IHRoZSByZXN1bHQKcHJpbnQoYW5hbGlzaXMpCmBgYAoKIyBBbsOhbGlzaXMgZGUgKmNsdXN0ZXJzKgojIyBTZXBhcmFjacOzbiBwb3IgKmNsdXN0ZXIqCmBgYHtyfQojIEVuY29udHJhciDDrW5kaWNlcyBkZSBsYXMgZmlsYXMgY29uIGVsIHZhbG9yIGRlc2VhZG8gZW4gY29sdW1uYV9hCmNsdXN0ZXIxIDwtIHJvd25hbWVzKGRmKVt3aGljaChhc2lnbmFjaW9uJGNsdXN0ZXIgPT0gMSldCmNsdXN0ZXIyIDwtIHJvd25hbWVzKGRmKVt3aGljaChhc2lnbmFjaW9uJGNsdXN0ZXIgPT0gMildCmNsdXN0ZXIzIDwtIHJvd25hbWVzKGRmKVt3aGljaChhc2lnbmFjaW9uJGNsdXN0ZXIgPT0gMyldCmNsdXN0ZXI0IDwtIHJvd25hbWVzKGRmKVt3aGljaChhc2lnbmFjaW9uJGNsdXN0ZXIgPT0gNCldCgpgYGAKCiMjIE1hcGEgZGUgaW5zZWd1cmlkYWQgZW4gRXN0YWRvcyBVbmlkb3MKYGBge3J9CiMgVmlzdWFsaXphciBlbCBtYXBhIHNlZ3JlZ2FkbyBwb3IgbGEgaW5zZWd1cmlkYWQKbWFwKGRhdGFiYXNlID0gInN0YXRlIikKbWFwKGRhdGFiYXNlID0gInN0YXRlIiwgY2x1c3RlcjEsIGNvbD0gInJlZCIsIGZpbGwgPSBULCBhZGQgPSBUUlVFKQptYXAoZGF0YWJhc2UgPSAic3RhdGUiLCBjbHVzdGVyMiwgY29sPSAiZ3JlZW4iLCBmaWxsID0gVCwgYWRkID0gVFJVRSkKbWFwKGRhdGFiYXNlID0gInN0YXRlIiwgY2x1c3RlcjMsIGNvbD0gInllbGxvdyIsIGZpbGwgPSBULCBhZGQgPSBUUlVFKQptYXAoZGF0YWJhc2UgPSAic3RhdGUiLCBjbHVzdGVyNCwgY29sPSAicmVkIiwgZmlsbCA9IFQsIGFkZCA9IFRSVUUpCmBgYAoKIyBBbsOhbGlzaXMgZGUgU2VndXJpZGFkIHBvciBFc3RhZG8gZW4gRUUuVVUuCgpBIHRyYXbDqXMgZGUgdW4gZXhoYXVzdGl2byBhbsOhbGlzaXMgZGUgZGF0b3MsIGhlbW9zIGlkZW50aWZpY2FkbyBwYXRyb25lcyBjbGF2ZSBxdWUgcmVzYWx0YW4gbGFzIGRpZmVyZW5jaWFzIGVuIHNlZ3VyaWRhZCBlbnRyZSB2YXJpb3MgZXN0YWRvcyBkZSBFRS5VVS4sIHV0aWxpemFuZG8gdmFyaWFibGVzIGRlIGFzZXNpbmF0b3MsIGFycmVzdG9zIHkgZGF0b3MgZGVtb2dyw6FmaWNvcy4gTnVlc3Ryb3MgaGFsbGF6Z29zIHJldmVsYW4gaW5zaWdodHMgc2lnbmlmaWNhdGl2b3Mgc29icmUgbGEgZGlzdHJpYnVjacOzbiBnZW9ncsOhZmljYSBkZSBsYSBzZWd1cmlkYWQgeSBjw7NtbyBmYWN0b3JlcyBoaXN0w7NyaWNvcyB5IHNvY2lhbGVzIHB1ZWRlbiBpbmZsdWlyIGVuIGVsbGEuCgojIyBFc3RhZG9zIE3DoXMgUGVsaWdyb3NvcyAtIENsYXNpZmljYWNpw7NuIGVuIFJvam8KCkxvcyBlc3RhZG9zIGNsYXNpZmljYWRvcyBlbiByb2pvIHJlcHJlc2VudGFuIGxhcyDDoXJlYXMgY29uIG1heW9yIHBlbGlncm9zaWRhZCwgc2Vnw7puIG51ZXN0cm8gYW7DoWxpc2lzLiBFc3RhIGRldGVybWluYWNpw7NuIHNlIGJhc2EgZW46CgotIFVuYSAqKnByb3BvcmNpw7NuIGVsZXZhZGEgZGUgYXNlc2luYXRvcyB5IGFycmVzdG9zKiogZW4gY29tcGFyYWNpw7NuIGNvbiBvdHJvcyBlc3RhZG9zLgotIFVuYSAqKnByb3BvcmNpw7NuIHNpZ25pZmljYXRpdmEqKiBjdWFuZG8gc2UgY29uc2lkZXJhIGVsIG7Dum1lcm8gZGUgaGFiaXRhbnRlcywgZGVzdGFjYW5kbyB1bmEgcHJlb2N1cGFudGUgdGFzYSBkZSBjcmltaW5hbGlkYWQgcGVyIGPDoXBpdGEuCgpFc3RvcyBlc3RhZG9zLCBwcmVkb21pbmFudGVtZW50ZSB1YmljYWRvcyBlbiBlbCBzdXIgZGVsIHBhw61zLCByZWZsZWphbiB1bmEgdGVuZGVuY2lhIGdlb2dyw6FmaWNhIHF1ZSBtZXJlY2UgYXRlbmNpw7NuIHkgYW7DoWxpc2lzIG3DoXMgcHJvZnVuZG9zLgoKIyMgQW7DoWxpc2lzIHBvciAqQ2x1c3RlcnMqCgotICoqQ2x1c3RlciAzIChBbWFyaWxsbyk6KiogU2kgYmllbiBtdWVzdHJhIG1lam9yZXMgaW5kaWNhZG9yZXMgZW4gY29tcGFyYWNpw7NuIGNvbiBsb3MgZXN0YWRvcyBlbiByb2pvLCBzdSBuaXZlbCBkZSBhcnJlc3RvcyB5IGFzZXNpbmF0b3MsIGVuIHByb3BvcmNpw7NuLCBubyBhbGNhbnphIGxvcyBiYWpvcyDDrW5kaWNlcyBvYnNlcnZhZG9zIGVuIGVsICpjbHVzdGVyKiAyIChWZXJkZSksIGVsIGN1YWwgcmVwcmVzZW50YSBhIGxvcyBlc3RhZG9zIGNvbiBtZWpvciBzaXR1YWNpw7NuIGRlIHNlZ3VyaWRhZC4KCi0gKipEaXN0cmlidWNpw7NuIEdlb2dyw6FmaWNhOioqIFVuIHBhdHLDs24gbm90YWJsZSBlcyBxdWUgbG9zIGVzdGFkb3MgZGVsIHN1ciB0aWVuZGVuIGEgYWdydXBhcnNlIGVuIGNhdGVnb3LDrWFzIGRlIG1heW9yIHBlbGlncm9zaWRhZCwgbWllbnRyYXMgcXVlIGxvcyBkZWwgbm9ydGUgcHJlc2VudGFuIG1lam9yZXMgaW5kaWNhZG9yZXMgZGUgc2VndXJpZGFkLiBFc3RlIHBhdHLDs24gc3VnaWVyZSBsYSBpbmZsdWVuY2lhIGRlIGZhY3RvcmVzIHJlZ2lvbmFsZXMgZXNwZWPDrWZpY29zIGVuIGxhcyB0YXNhcyBkZSBjcmltaW5hbGlkYWQuCgojIyBDb250ZXh0byBIaXN0w7NyaWNvIGRlIDE5NzMKCkFsIGV4YW1pbmFyIGVsIGNvbnRleHRvIGRlIDE5NzMsIGVuY29udHJhbW9zIGNvbmV4aW9uZXMgcG90ZW5jaWFsZXMgZW50cmUgZXZlbnRvcyBoaXN0w7NyaWNvcyBvIHNvY2lhbGVzIHkgbGFzIHRlbmRlbmNpYXMgZGUgc2VndXJpZGFkIGFjdHVhbGVzLiBFc3RlIGFuw6FsaXNpcyBjb250ZXh0dWFsIHByb3BvcmNpb25hIHVuYSBjYXBhIGFkaWNpb25hbCBkZSBjb21wcmVuc2nDs24gc29icmUgY8OzbW8gbG9zIGV2ZW50b3MgcGFzYWRvcyBwdWVkZW4gc2VndWlyIGluZmx1eWVuZG8gZW4gbGEgc2VndXJpZGFkIGRlIGRpZmVyZW50ZXMgZXN0YWRvcy4KCiMjIENvbmNsdXNpb25lcyBGaW5hbGVzCgpFc3RlIGFuw6FsaXNpcyBub3MgcGVybWl0ZSBjb25jbHVpciBxdWUgbGEgc2VndXJpZGFkIGVuIGxvcyBlc3RhZG9zIGRlIEVFLlVVLiBlcyB1biBmZW7Ds21lbm8gY29tcGxlam8sIGluZmx1ZW5jaWFkbyBwb3IgdW5hIGNvbWJpbmFjacOzbiBkZSBmYWN0b3JlcyBkZW1vZ3LDoWZpY29zLCBnZW9ncsOhZmljb3MsIHkgcG9zaWJsZW1lbnRlIGhpc3TDs3JpY29zLiBMYXMgZGlmZXJlbmNpYXMgbWFyY2FkYXMgZW50cmUgbG9zIGVzdGFkb3MgZW4gdMOpcm1pbm9zIGRlIGFzZXNpbmF0b3MsIGFycmVzdG9zLCB5IGNvbnRleHRvcyBzb2NpYWxlcyBzdWJyYXlhbiBsYSBpbXBvcnRhbmNpYSBkZSBwb2zDrXRpY2FzIGRlIHNlZ3VyaWRhZCBww7pibGljYSBxdWUgY29uc2lkZXJlbiBsYXMgcGFydGljdWxhcmlkYWRlcyByZWdpb25hbGVzLgoKTnVlc3RybyBlc3R1ZGlvIGRlc3RhY2EgbGEgbmVjZXNpZGFkIGRlIGFib3JkYWplcyBwZXJzb25hbGl6YWRvcyBwYXJhIGNvbWJhdGlyIGxhIGNyaW1pbmFsaWRhZCwgdGVuaWVuZG8gZW4gY3VlbnRhIG5vIHNvbG8gbG9zIGRhdG9zIGFjdHVhbGVzIHNpbm8gdGFtYmnDqW4gZWwgbGVnYWRvIGhpc3TDs3JpY28geSBzb2NpYWwgcXVlIGNhZGEgZXN0YWRvIHBvcnRhLiBMYSBzZWd1cmlkYWQgZXMgdW4gdGVqaWRvIGNvbXB1ZXN0byBwb3IgbcO6bHRpcGxlcyBoaWxvcywgeSBzb2xvIGEgdHJhdsOpcyBkZSB1biBhbsOhbGlzaXMgZGV0YWxsYWRvIHkgY29uc2lkZXJhZG8gcG9kZW1vcyBjb21lbnphciBhIGRlc2VudHJhw7FhciBsYXMgc29sdWNpb25lcyBtw6FzIGVmZWN0aXZhcy4KCg==