1 Geoestadística

La geoestadística es la rama de la estadística que trata con los datos espaciales. Esto se hace a partir de datos conocidos, pudiéndose predecir datos desconocidos. La estadística crea métodos para analizar datos en base al análisis. No solo trata de recopilación e interpretación de datos, sino que existe la estadística descriptiva e inferencial.

1.1 Distribución espacial

Es la distribución más frecuente en las variables de estudio. ## Autocorrelación espacial Es análizar la variabilidad del comportamiento de un fenómeno a partir de patrones espaciales. En la geoestadística se requiere que los datos esten autocorrelacionados espacialmente, es decir, que las variables sean espacialmente dependientes.

2 Análisis exploratorio

2.1 Mapas de voronoi

Se forman a partir de un conjunto de polígonos que poseen “vecinos” cuyos vértices mantienen a los centroides a una equidistancia.

Figura 1: Mapa de voronoi

  • Para verificar los datos atípicos se puede usar la opción de cluster en el mapa de Voronoi.
  • En el caso de la opción entropía, esta permite saber el grado de heterogeneidad de los valores entre celdas a partir de una segmentación de 5 clases. Los valores de las celdas tienen números similares entre si cuando se obtiene un valor de entropía bajo. Muchas veces los valores atípicos coinciden con altos grados de entropía en las celdas.

2.2 Análisis de tendencias (trend analysis)

Permite ver las tendencias de norte a sur, de este a oeste y en tres dimensiones, tanto en sus valores muestreados, como con líneas de tendencias.

Figura 2: Gráfico de Análisis de tendencias

2.3 Semivariograma

Es el resultado de las distancias de parejas de los puntos de la muestra. En el eje x del gráfico se muestra las distancias entre los puntos y en el eje y se encuentra el cuadrado de la diferencia de los valores de la variable. LOs valores atípicos en este gráfico pueden verse cuando a una distancia corta se encuentra mucha semivarianza.

Figura 3: Semivariograma en arcmap

2.4 Covarianza

Su gráfico presenta en su eje x las distancias entre parejas de puntos y en el eje y tenemos la diferencia entre el promedio de los valores y el valor puntual de cada punto, multiplicado por la misma operación para el otro punto que forma la pareja de puntos.

Figura 4: Gráfico de covarianza en arcmap

2.5 Muestreo Aleatorio

Utilizando la herramienta de Geostatistical Analyst de arcmap tenemos la opción subset features con ella podemos hacer un muestreo de una porción de los valores con los que se cuenta. Lo ideal es comparar los valores predichos con los valores tomados en la realidad. Pero no deja de ser una buena herramienta. La herramienta consigue dividir los datos para hacer una validación.

3 Análisis de patrones espaciales

3.1 Medidas centrográficas

Son equivalente espacial de las medidas de tendencia central de la estadística convencional.

  • Centro medio: Similar a la media, resulta del promedio de las coordenadas x e y de un espacio.
  • Centro mediano: Identifica la ubicación que minimiza la distancia euclidiana a todas las entidades del dataset. Es sólida ante los datos atípicos.

3.2 Análisis de patrones puntuales

Se utiliza valores de significancia estadística (puntuación z y el p valor). La puntuación de Z es una representación de las desviaciones estandar (si es muy pequeño, entonces puede pensarse que el patrón de los datos es aleatorio) , el valor p es la probabilidad de que el patrón espacial sea aleatorio (un p pequeño, menor a 0.05 indica que el patrón aleatorio no es aleatorio).

3.3 Análisis de patrones espaciales (I de Morán)

Permite ver qué tipo de patrón espacial presentan los datos (aleatorio, agregado o disperso). El índice de Morán varía entre -1 y 1. Si las condiciones de z y p indican un patrón no aleatorio (agregado o disperso) y el índice de Morán es positivo entonces estamos tratando con datos clusters agregados, en cambio si las condiciones de z y p indican ser no aleatorios y se presenta un valor del índice de Moran negativo estamos ante un patrón espacial disperso.

4 Métodos de Interpolación

4.1 IDW (Inverse Distance Weighting)

Supone que la variable que se representa cartográficamente disminuye su influencia a mayor distancia desde su ubicación de muestra.

Pasos para proceder con el IDW:

  • Análisis exploratorio (barras, qqplot, trend analysis y voronoi).
  • En en Wizard se puede optimizar el power.
  • En el método de búsqueda de vecinos podemos escoger el estándar, que es escoger entre máximos y mínimos de vecinos (considerar entre sus cálculos la cantidad de vecinos que influyan en el peso), el método smooth se usa a través de círculos concéntricos que varían según el factor a utilizar.
  • En el método estándar se puede escoger la cantidad de vecinos a considerar, el tipo de Sector, la longitud de los ejes del sector
  • Es importante ver el error medio cuadrático. Para esto comparar con la opción compare (cross validation).

4.2 Kriging

Pasos para realizar este método de interpolación

  • Realizar el análisis exploratorio de los datos.
  • Al configurar el modelo debemos conseguir un error medio cercano a cero, mean standarized muy cercano a cero y un root mean squared standarized cercano a 1.
  • Comparar los modelos y escoger el que posea mejores valores: Figura 5: Validación cruzada de dos modelos
  • También puede realizarse la opción de optimizar modelo.

4.3 Spline

Este método no posee indicadores geoestadísticos, pero tiene un mejor ajueste en datos de calidad de aire.

5 Métodos de Interpolación mixtos

Son métodos que combinan métodos de regresión lineal con métodos de interpolación exactos como IDW o Kriging. Los modelos de interpolación mixtos se basan en el desarrollo de un modelo de regresión lineal para espacializar la variable objetivo, es decir la variable dependiente(temperarura, precipitación, humedad del aire, valores de calidad del aire, etc), posteriormente se halla el error del modelo en localizaciones originales y este error se interpola mediante un interpolador exacto como IDW o Kriging.

5.1 Regresión lineal por mínimos cuadrados ordinarios (Ordinary Least Squares, OLS)

Contruye una superficie continua de la variable de estudio, pero bajo un método de regresión lineal, pues estos métodos permiten modelar la relación entre una variable respuesta con variables explicativas. \[ Y=B_0+B_1X_1+B_2X_2+...+B_nX_n+E \]

Donde:

Y: Variable dependiente

X: Variables explicativas o independientes

B: Coeficientes de regresión, miden la influencia que las variables explicativas tienen sobre la variable dependiente, siendo \(B_0\) la constante del modelo.

E: Es el error del modelo

El procedimiento que se debe realizar es el siguiente:

  • Aplicar la herramienta de minimos cuadrados ordinarios.
  • Calcular la superficie continua de interpolación (usando la calculadora raster) y datos de las variables explicativas o independientes en formato raster (elevación, latitud, longitud).
  • Crear un modelo de interpolación por medio del método IDW.
  • Restar el error de la superficie continua generada en el paso 2.

LS0tDQp0aXRsZTogIkdlb2VzdGFkw61zdGljYSBhcGxpY2FkYSBhbCBhbWJpZW50ZSINCmF1dGhvcjogIkJyeWFuIFF1aXNwZSINCmRhdGU6ICJgciBmb3JtYXQoU3lzLnRpbWUoKSwgJyVkIGRlICVCIGRlbCAlWSAlSDolTScpYCINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDoNCiAgICBoaWdobGlnaHQ6IHB5Z21lbnRzDQogICAgdGhlbWU6IHVuaXRlZA0KICAgIGNvZGVfZG93bmxvYWQ6IHllcw0KICAgIHRvYzogeWVzDQogICAgdG9jX2Zsb2F0Og0KICAgICAgY29sbGFwc2VkOiBubw0KICAgICAgc21vb3RoX3Njcm9sbDogeWVzDQogICAgbnVtYmVyX3NlY3Rpb25zOiB5ZXMNCiAgd29yZF9kb2N1bWVudDoNCiAgICB0b2M6IHllcw0KICBwZGZfZG9jdW1lbnQ6DQogICAgdG9jOiB5ZXMNCmVkaXRvcl9vcHRpb25zOg0KICBjaHVua19vdXRwdXRfdHlwZTogY29uc29sZQ0KLS0tDQoNCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFKQ0KYGBgDQoNCiMgR2VvZXN0YWTDrXN0aWNhDQoNCkxhICoqZ2VvZXN0YWTDrXN0aWNhKiogZXMgbGEgcmFtYSBkZSBsYSBlc3RhZMOtc3RpY2EgcXVlIHRyYXRhIGNvbiBsb3MgZGF0b3MgZXNwYWNpYWxlcy4gRXN0byBzZSBoYWNlIGEgcGFydGlyIGRlIGRhdG9zIGNvbm9jaWRvcywgcHVkacOpbmRvc2UgcHJlZGVjaXIgZGF0b3MgZGVzY29ub2NpZG9zLiBMYSBlc3RhZMOtc3RpY2EgY3JlYSBtw6l0b2RvcyBwYXJhIGFuYWxpemFyIGRhdG9zIGVuIGJhc2UgYWwgYW7DoWxpc2lzLiBObyBzb2xvIHRyYXRhIGRlIHJlY29waWxhY2nDs24gZSBpbnRlcnByZXRhY2nDs24gZGUgZGF0b3MsIHNpbm8gcXVlIGV4aXN0ZSBsYSBlc3RhZMOtc3RpY2EgZGVzY3JpcHRpdmEgZSBpbmZlcmVuY2lhbC4NCg0KIyMgRGlzdHJpYnVjacOzbiBlc3BhY2lhbA0KDQpFcyBsYSBkaXN0cmlidWNpw7NuIG3DoXMgZnJlY3VlbnRlIGVuIGxhcyB2YXJpYWJsZXMgZGUgZXN0dWRpby4gXCMjIEF1dG9jb3JyZWxhY2nDs24gZXNwYWNpYWwgRXMgYW7DoWxpemFyIGxhIHZhcmlhYmlsaWRhZCBkZWwgY29tcG9ydGFtaWVudG8gZGUgdW4gZmVuw7NtZW5vIGEgcGFydGlyIGRlIHBhdHJvbmVzIGVzcGFjaWFsZXMuIEVuIGxhIGdlb2VzdGFkw61zdGljYSBzZSByZXF1aWVyZSBxdWUgbG9zIGRhdG9zIGVzdGVuIGF1dG9jb3JyZWxhY2lvbmFkb3MgZXNwYWNpYWxtZW50ZSwgZXMgZGVjaXIsIHF1ZSBsYXMgdmFyaWFibGVzIHNlYW4gZXNwYWNpYWxtZW50ZSBkZXBlbmRpZW50ZXMuDQoNCiMgQW7DoWxpc2lzIGV4cGxvcmF0b3Jpbw0KDQojIyBNYXBhcyBkZSB2b3Jvbm9pDQoNClNlIGZvcm1hbiBhIHBhcnRpciBkZSB1biBjb25qdW50byBkZSBwb2zDrWdvbm9zIHF1ZSBwb3NlZW4gInZlY2lub3MiIGN1eW9zIHbDqXJ0aWNlcyBtYW50aWVuZW4gYSBsb3MgY2VudHJvaWRlcyBhIHVuYSBlcXVpZGlzdGFuY2lhLg0KDQohWyoqKkZpZ3VyYSAxOioqKiBNYXBhIGRlIHZvcm9ub2ldKGltYWdlcy9Wb3Jvbm9pX21hcC5wbmcpDQoNCi0gICBQYXJhIHZlcmlmaWNhciBsb3MgZGF0b3MgKiphdMOtcGljb3MqKiBzZSBwdWVkZSB1c2FyIGxhIG9wY2nDs24gZGUgKipjbHVzdGVyKiogZW4gZWwgbWFwYSBkZSBWb3Jvbm9pLg0KLSAgIEVuIGVsIGNhc28gZGUgbGEgb3BjacOzbiAqKmVudHJvcMOtYSoqLCBlc3RhIHBlcm1pdGUgc2FiZXIgZWwgZ3JhZG8gZGUgaGV0ZXJvZ2VuZWlkYWQgZGUgbG9zIHZhbG9yZXMgZW50cmUgY2VsZGFzIGEgcGFydGlyIGRlIHVuYSBzZWdtZW50YWNpw7NuIGRlIDUgY2xhc2VzLiBMb3MgdmFsb3JlcyBkZSBsYXMgY2VsZGFzIHRpZW5lbiBuw7ptZXJvcyBzaW1pbGFyZXMgZW50cmUgc2kgY3VhbmRvIHNlIG9idGllbmUgdW4gdmFsb3IgZGUgZW50cm9ww61hIGJham8uIE11Y2hhcyB2ZWNlcyBsb3MgdmFsb3JlcyBhdMOtcGljb3MgY29pbmNpZGVuIGNvbiBhbHRvcyBncmFkb3MgZGUgZW50cm9ww61hIGVuIGxhcyBjZWxkYXMuDQoNCiMjIEFuw6FsaXNpcyBkZSB0ZW5kZW5jaWFzICh0cmVuZCBhbmFseXNpcykNCg0KUGVybWl0ZSB2ZXIgbGFzIHRlbmRlbmNpYXMgZGUgbm9ydGUgYSBzdXIsIGRlIGVzdGUgYSBvZXN0ZSB5IGVuIHRyZXMgZGltZW5zaW9uZXMsIHRhbnRvIGVuIHN1cyB2YWxvcmVzIG11ZXN0cmVhZG9zLCBjb21vIGNvbiBsw61uZWFzIGRlIHRlbmRlbmNpYXMuDQoNCiFbKioqRmlndXJhIDIqKio6IEdyw6FmaWNvIGRlIEFuw6FsaXNpcyBkZSB0ZW5kZW5jaWFzXShpbWFnZXMvdHJlbmRfYW5hbHlzaXMucG5nKQ0KDQojIyBTZW1pdmFyaW9ncmFtYQ0KDQpFcyBlbCByZXN1bHRhZG8gZGUgbGFzIGRpc3RhbmNpYXMgZGUgcGFyZWphcyBkZSBsb3MgcHVudG9zIGRlIGxhIG11ZXN0cmEuIEVuIGVsICoqKmVqZSB4KioqIGRlbCBncsOhZmljbyBzZSBtdWVzdHJhIGxhcyBkaXN0YW5jaWFzIGVudHJlIGxvcyBwdW50b3MgeSBlbiBlbCAqKiplamUgeSoqKiBzZSBlbmN1ZW50cmEgZWwgY3VhZHJhZG8gZGUgbGEgZGlmZXJlbmNpYSBkZSBsb3MgdmFsb3JlcyBkZSBsYSB2YXJpYWJsZS4gTE9zIHZhbG9yZXMgYXTDrXBpY29zIGVuIGVzdGUgZ3LDoWZpY28gcHVlZGVuIHZlcnNlIGN1YW5kbyBhIHVuYSBkaXN0YW5jaWEgY29ydGEgc2UgZW5jdWVudHJhIG11Y2hhIHNlbWl2YXJpYW56YS4NCg0KIVsqKipGaWd1cmEgMyoqKjogU2VtaXZhcmlvZ3JhbWEgZW4gYXJjbWFwXShpbWFnZXMvU2VtaXZhcmlvZ3JhbS5wbmcpDQoNCiMjIENvdmFyaWFuemENCg0KU3UgZ3LDoWZpY28gcHJlc2VudGEgZW4gc3UgKioqZWplIHgqKiogbGFzIGRpc3RhbmNpYXMgZW50cmUgcGFyZWphcyBkZSBwdW50b3MgeSBlbiBlbCAqKiplamUgeSoqKiB0ZW5lbW9zIGxhIGRpZmVyZW5jaWEgZW50cmUgZWwgcHJvbWVkaW8gZGUgbG9zIHZhbG9yZXMgeSBlbCB2YWxvciBwdW50dWFsIGRlIGNhZGEgcHVudG8sIG11bHRpcGxpY2FkbyBwb3IgbGEgbWlzbWEgb3BlcmFjacOzbiBwYXJhIGVsIG90cm8gcHVudG8gcXVlIGZvcm1hIGxhIHBhcmVqYSBkZSBwdW50b3MuDQoNCiFbKioqRmlndXJhIDQqKio6IEdyw6FmaWNvIGRlIGNvdmFyaWFuemEgZW4gYXJjbWFwXShpbWFnZXMvQ292YXJpYW56YS5wbmcpDQoNCiMjIE11ZXN0cmVvIEFsZWF0b3Jpbw0KDQpVdGlsaXphbmRvIGxhIGhlcnJhbWllbnRhIGRlIEdlb3N0YXRpc3RpY2FsIEFuYWx5c3QgZGUgYXJjbWFwIHRlbmVtb3MgbGEgb3BjacOzbiAqKnN1YnNldCBmZWF0dXJlcyoqIGNvbiBlbGxhIHBvZGVtb3MgaGFjZXIgdW4gbXVlc3RyZW8gZGUgdW5hIHBvcmNpw7NuIGRlIGxvcyB2YWxvcmVzIGNvbiBsb3MgcXVlIHNlIGN1ZW50YS4gTG8gaWRlYWwgZXMgY29tcGFyYXIgbG9zIHZhbG9yZXMgcHJlZGljaG9zIGNvbiBsb3MgdmFsb3JlcyB0b21hZG9zIGVuIGxhIHJlYWxpZGFkLiBQZXJvIG5vIGRlamEgZGUgc2VyIHVuYSBidWVuYSBoZXJyYW1pZW50YS4gTGEgaGVycmFtaWVudGEgY29uc2lndWUgZGl2aWRpciBsb3MgZGF0b3MgcGFyYSBoYWNlciB1bmEgdmFsaWRhY2nDs24uDQoNCiMgQW7DoWxpc2lzIGRlIHBhdHJvbmVzIGVzcGFjaWFsZXMNCg0KIyMgTWVkaWRhcyBjZW50cm9ncsOhZmljYXMNCg0KU29uIGVxdWl2YWxlbnRlIGVzcGFjaWFsIGRlIGxhcyBtZWRpZGFzIGRlIHRlbmRlbmNpYSBjZW50cmFsIGRlIGxhIGVzdGFkw61zdGljYSBjb252ZW5jaW9uYWwuDQoNCi0gICAqKkNlbnRybyBtZWRpbzoqKiBTaW1pbGFyIGEgbGEgbWVkaWEsIHJlc3VsdGEgZGVsIHByb21lZGlvIGRlIGxhcyBjb29yZGVuYWRhcyB4IGUgeSBkZSB1biBlc3BhY2lvLg0KLSAgICoqQ2VudHJvIG1lZGlhbm86KiogSWRlbnRpZmljYSBsYSB1YmljYWNpw7NuIHF1ZSBtaW5pbWl6YSBsYSBkaXN0YW5jaWEgZXVjbGlkaWFuYSBhIHRvZGFzIGxhcyBlbnRpZGFkZXMgZGVsIGRhdGFzZXQuIEVzIHPDs2xpZGEgYW50ZSBsb3MgZGF0b3MgYXTDrXBpY29zLg0KDQojIyBBbsOhbGlzaXMgZGUgcGF0cm9uZXMgcHVudHVhbGVzDQoNClNlIHV0aWxpemEgdmFsb3JlcyBkZSBzaWduaWZpY2FuY2lhIGVzdGFkw61zdGljYSAocHVudHVhY2nDs24geiB5IGVsIHAgdmFsb3IpLiBMYSBwdW50dWFjacOzbiBkZSBaIGVzIHVuYSByZXByZXNlbnRhY2nDs24gZGUgbGFzIGRlc3ZpYWNpb25lcyBlc3RhbmRhciAoc2kgZXMgbXV5IHBlcXVlw7FvLCBlbnRvbmNlcyBwdWVkZSBwZW5zYXJzZSBxdWUgZWwgcGF0csOzbiBkZSBsb3MgZGF0b3MgZXMgYWxlYXRvcmlvKSAsIGVsIHZhbG9yIHAgZXMgbGEgcHJvYmFiaWxpZGFkIGRlIHF1ZSBlbCBwYXRyw7NuIGVzcGFjaWFsIHNlYSBhbGVhdG9yaW8gKHVuIHAgcGVxdWXDsW8sIG1lbm9yIGEgMC4wNSBpbmRpY2EgcXVlIGVsIHBhdHLDs24gYWxlYXRvcmlvIG5vIGVzIGFsZWF0b3JpbykuDQoNCiMjIEFuw6FsaXNpcyBkZSBwYXRyb25lcyBlc3BhY2lhbGVzIChJIGRlIE1vcsOhbikNCg0KUGVybWl0ZSB2ZXIgcXXDqSB0aXBvIGRlIHBhdHLDs24gZXNwYWNpYWwgcHJlc2VudGFuIGxvcyBkYXRvcyAoYWxlYXRvcmlvLCBhZ3JlZ2FkbyBvIGRpc3BlcnNvKS4gRWwgw61uZGljZSBkZSBNb3LDoW4gdmFyw61hIGVudHJlIC0xIHkgMS4gU2kgbGFzIGNvbmRpY2lvbmVzIGRlIHogeSBwIGluZGljYW4gdW4gcGF0csOzbiBubyBhbGVhdG9yaW8gKGFncmVnYWRvIG8gZGlzcGVyc28pIHkgZWwgw61uZGljZSBkZSBNb3LDoW4gZXMgcG9zaXRpdm8gZW50b25jZXMgZXN0YW1vcyB0cmF0YW5kbyBjb24gZGF0b3MgY2x1c3RlcnMgYWdyZWdhZG9zLCBlbiBjYW1iaW8gc2kgbGFzIGNvbmRpY2lvbmVzIGRlIHogeSBwIGluZGljYW4gc2VyIG5vIGFsZWF0b3Jpb3MgeSBzZSBwcmVzZW50YSB1biB2YWxvciBkZWwgw61uZGljZSBkZSBNb3JhbiBuZWdhdGl2byBlc3RhbW9zIGFudGUgdW4gcGF0csOzbiBlc3BhY2lhbCBkaXNwZXJzby4NCg0KIyBNw6l0b2RvcyBkZSBJbnRlcnBvbGFjacOzbg0KDQojIyBJRFcgKEludmVyc2UgRGlzdGFuY2UgV2VpZ2h0aW5nKQ0KDQpTdXBvbmUgcXVlIGxhIHZhcmlhYmxlIHF1ZSBzZSByZXByZXNlbnRhIGNhcnRvZ3LDoWZpY2FtZW50ZSBkaXNtaW51eWUgc3UgaW5mbHVlbmNpYSBhIG1heW9yIGRpc3RhbmNpYSBkZXNkZSBzdSB1YmljYWNpw7NuIGRlIG11ZXN0cmEuDQoNCioqUGFzb3MgcGFyYSBwcm9jZWRlciBjb24gZWwgSURXOioqDQoNCi0gICBBbsOhbGlzaXMgZXhwbG9yYXRvcmlvIChiYXJyYXMsIHFxcGxvdCwgdHJlbmQgYW5hbHlzaXMgeSB2b3Jvbm9pKS4NCi0gICBFbiBlbiBXaXphcmQgc2UgcHVlZGUgb3B0aW1pemFyIGVsIHBvd2VyLg0KLSAgIEVuIGVsIG3DqXRvZG8gZGUgYsO6c3F1ZWRhIGRlIHZlY2lub3MgcG9kZW1vcyBlc2NvZ2VyIGVsICplc3TDoW5kYXIsKiBxdWUgZXMgZXNjb2dlciBlbnRyZSBtw6F4aW1vcyB5IG3DrW5pbW9zIGRlIHZlY2lub3MgKGNvbnNpZGVyYXIgZW50cmUgc3VzIGPDoWxjdWxvcyBsYSBjYW50aWRhZCBkZSB2ZWNpbm9zIHF1ZSBpbmZsdXlhbiBlbiBlbCBwZXNvKSwgZWwgbcOpdG9kbyAqc21vb3RoKiBzZSB1c2EgYSB0cmF2w6lzIGRlIGPDrXJjdWxvcyBjb25jw6ludHJpY29zIHF1ZSB2YXLDrWFuIHNlZ8O6biBlbCBmYWN0b3IgYSB1dGlsaXphci4NCi0gICBFbiBlbCBtw6l0b2RvIGVzdMOhbmRhciBzZSBwdWVkZSBlc2NvZ2VyIGxhIGNhbnRpZGFkIGRlIHZlY2lub3MgYSBjb25zaWRlcmFyLCBlbCB0aXBvIGRlIFNlY3RvciwgbGEgbG9uZ2l0dWQgZGUgbG9zIGVqZXMgZGVsIHNlY3Rvcg0KLSAgIEVzIGltcG9ydGFudGUgdmVyIGVsIGVycm9yIG1lZGlvIGN1YWRyw6F0aWNvLiBQYXJhIGVzdG8gY29tcGFyYXIgY29uIGxhIG9wY2nDs24gY29tcGFyZSAoY3Jvc3MgdmFsaWRhdGlvbikuDQoNCiMjIEtyaWdpbmcNCg0KKipQYXNvcyBwYXJhIHJlYWxpemFyIGVzdGUgbcOpdG9kbyBkZSBpbnRlcnBvbGFjacOzbioqDQoNCi0gICBSZWFsaXphciBlbCBhbsOhbGlzaXMgZXhwbG9yYXRvcmlvIGRlIGxvcyBkYXRvcy4NCi0gICBBbCBjb25maWd1cmFyIGVsIG1vZGVsbyBkZWJlbW9zIGNvbnNlZ3VpciB1biBlcnJvciBtZWRpbyBjZXJjYW5vIGEgY2VybywgbWVhbiBzdGFuZGFyaXplZCBtdXkgY2VyY2FubyBhIGNlcm8geSB1biByb290IG1lYW4gc3F1YXJlZCBzdGFuZGFyaXplZCBjZXJjYW5vIGEgMS4NCi0gICBDb21wYXJhciBsb3MgbW9kZWxvcyB5IGVzY29nZXIgZWwgcXVlIHBvc2VhIG1lam9yZXMgdmFsb3JlczogIVtGaWd1cmEgNTogVmFsaWRhY2nDs24gY3J1emFkYSBkZSBkb3MgbW9kZWxvc10oaW1hZ2VzL2Nyb3NzX3ZhbGlkYXRpb24ucG5nKQ0KLSAgIFRhbWJpw6luIHB1ZWRlIHJlYWxpemFyc2UgbGEgb3BjacOzbiBkZSBvcHRpbWl6YXIgbW9kZWxvLg0KDQojIyBTcGxpbmUNCg0KRXN0ZSBtw6l0b2RvIG5vIHBvc2VlIGluZGljYWRvcmVzIGdlb2VzdGFkw61zdGljb3MsIHBlcm8gdGllbmUgdW4gbWVqb3IgYWp1ZXN0ZSBlbiBkYXRvcyBkZSBjYWxpZGFkIGRlIGFpcmUuDQoNCiMgTcOpdG9kb3MgZGUgSW50ZXJwb2xhY2nDs24gbWl4dG9zDQoNClNvbiBtw6l0b2RvcyBxdWUgY29tYmluYW4gbcOpdG9kb3MgZGUgcmVncmVzacOzbiBsaW5lYWwgY29uIG3DqXRvZG9zIGRlIGludGVycG9sYWNpw7NuIGV4YWN0b3MgY29tbyBJRFcgbyBLcmlnaW5nLiBMb3MgbW9kZWxvcyBkZSBpbnRlcnBvbGFjacOzbiBtaXh0b3Mgc2UgYmFzYW4gZW4gZWwgZGVzYXJyb2xsbyBkZSB1biBtb2RlbG8gZGUgcmVncmVzacOzbiBsaW5lYWwgcGFyYSBlc3BhY2lhbGl6YXIgbGEgdmFyaWFibGUgb2JqZXRpdm8sIGVzIGRlY2lyIGxhIHZhcmlhYmxlIGRlcGVuZGllbnRlKHRlbXBlcmFydXJhLCBwcmVjaXBpdGFjacOzbiwgaHVtZWRhZCBkZWwgYWlyZSwgdmFsb3JlcyBkZSBjYWxpZGFkIGRlbCBhaXJlLCBldGMpLCBwb3N0ZXJpb3JtZW50ZSBzZSBoYWxsYSBlbCBlcnJvciBkZWwgbW9kZWxvIGVuIGxvY2FsaXphY2lvbmVzIG9yaWdpbmFsZXMgeSBlc3RlIGVycm9yIHNlIGludGVycG9sYSBtZWRpYW50ZSB1biBpbnRlcnBvbGFkb3IgZXhhY3RvIGNvbW8gSURXIG8gS3JpZ2luZy4NCg0KIyMgUmVncmVzacOzbiBsaW5lYWwgcG9yIG3DrW5pbW9zIGN1YWRyYWRvcyBvcmRpbmFyaW9zIChPcmRpbmFyeSBMZWFzdCBTcXVhcmVzLCBPTFMpDQoNCkNvbnRydXllIHVuYSBzdXBlcmZpY2llIGNvbnRpbnVhIGRlIGxhIHZhcmlhYmxlIGRlIGVzdHVkaW8sIHBlcm8gYmFqbyB1biBtw6l0b2RvIGRlIHJlZ3Jlc2nDs24gbGluZWFsLCBwdWVzIGVzdG9zIG3DqXRvZG9zIHBlcm1pdGVuIG1vZGVsYXIgbGEgcmVsYWNpw7NuIGVudHJlIHVuYSB2YXJpYWJsZSByZXNwdWVzdGEgY29uIHZhcmlhYmxlcyBleHBsaWNhdGl2YXMuIA0KJCQNClk9Ql8wK0JfMVhfMStCXzJYXzIrLi4uK0JfblhfbitFDQokJA0KDQoqKkRvbmRlOioqDQoNCj4gWTogVmFyaWFibGUgZGVwZW5kaWVudGUNCj4NCj4gWDogVmFyaWFibGVzIGV4cGxpY2F0aXZhcyBvIGluZGVwZW5kaWVudGVzDQo+DQo+IEI6IENvZWZpY2llbnRlcyBkZSByZWdyZXNpw7NuLCBtaWRlbiBsYSBpbmZsdWVuY2lhIHF1ZSBsYXMgdmFyaWFibGVzIGV4cGxpY2F0aXZhcyB0aWVuZW4gc29icmUgbGEgdmFyaWFibGUgZGVwZW5kaWVudGUsIHNpZW5kbyAkQl8wJCBsYSBjb25zdGFudGUgZGVsIG1vZGVsby4NCj4NCj4gRTogRXMgZWwgZXJyb3IgZGVsIG1vZGVsbw0KDQpFbCBwcm9jZWRpbWllbnRvIHF1ZSBzZSBkZWJlIHJlYWxpemFyIGVzIGVsIHNpZ3VpZW50ZToNCg0KLSAgIEFwbGljYXIgbGEgaGVycmFtaWVudGEgZGUgbWluaW1vcyBjdWFkcmFkb3Mgb3JkaW5hcmlvcy4NCi0gICBDYWxjdWxhciBsYSBzdXBlcmZpY2llIGNvbnRpbnVhIGRlIGludGVycG9sYWNpw7NuICh1c2FuZG8gbGEgY2FsY3VsYWRvcmEgcmFzdGVyKSB5IGRhdG9zIGRlIGxhcyB2YXJpYWJsZXMgZXhwbGljYXRpdmFzIG8gaW5kZXBlbmRpZW50ZXMgZW4gZm9ybWF0byByYXN0ZXIgKGVsZXZhY2nDs24sIGxhdGl0dWQsIGxvbmdpdHVkKS4NCi0gICBDcmVhciB1biBtb2RlbG8gZGUgaW50ZXJwb2xhY2nDs24gcG9yIG1lZGlvIGRlbCBtw6l0b2RvIElEVy4NCi0gICBSZXN0YXIgZWwgZXJyb3IgZGUgbGEgc3VwZXJmaWNpZSBjb250aW51YSBnZW5lcmFkYSBlbiBlbCBwYXNvIDIuDQoNCg0KPGRpdiBjbGFzcz0idG9jaWZ5LWV4dGVuZC1wYWdlIiBkYXRhLXVuaXF1ZT0idG9jaWZ5LWV4dGVuZC1wYWdlIiBzdHlsdz0iaGVpZ2h0OjA7Ij4NCg0KPC9kaXZkPg0K