Solución de cifrado de bajo coste computacional en la transmisión de datos sobre un prototipo IoT

Contexto: El rápido desarrollo de la tecnología informática en la actualidad a menudo resulta en el uso indebido de esta tecnología en actos delictivos. Uno de los casos más comunes es el rastreo de datos contenidos en redes de internet de las cosas, en el que manipulan o se acceden a datos privados...

Full description

Autores:
Tipo de recurso:
Trabajo de grado de pregrado
Fecha de publicación:
2022
Institución:
Universidad Distrital Francisco José de Caldas
Repositorio:
RIUD: repositorio U. Distrital
Idioma:
spa
OAI Identifier:
oai:repository.udistrital.edu.co:11349/29883
Acceso en línea:
http://hdl.handle.net/11349/29883
Palabra clave:
Internet de las cosas,
Arduino
Cifrado simétrico
Método XXTEA
Ingeniería Telemática - Tesis y Disertaciones Académicas
Sistemas de transmisión de datos
Sistemas de transmisión de datos - Medidas de seguridad
Internet de las cosas
Tecnología informàtica
Arduino (Controladores programables)
Internet of Things
Symmetric Encryption
XXTEA method
Arduino.
Rights
License
Atribución 2.5 Colombia
id UDISTRITA2_fe98c75474ed567244f4205d9d3d1a9e
oai_identifier_str oai:repository.udistrital.edu.co:11349/29883
network_acronym_str UDISTRITA2
network_name_str RIUD: repositorio U. Distrital
repository_id_str
dc.title.spa.fl_str_mv Solución de cifrado de bajo coste computacional en la transmisión de datos sobre un prototipo IoT
dc.title.titleenglish.spa.fl_str_mv Low computational cost encryption solution in data transmission over an IoT prototype
title Solución de cifrado de bajo coste computacional en la transmisión de datos sobre un prototipo IoT
spellingShingle Solución de cifrado de bajo coste computacional en la transmisión de datos sobre un prototipo IoT
Internet de las cosas,
Arduino
Cifrado simétrico
Método XXTEA
Ingeniería Telemática - Tesis y Disertaciones Académicas
Sistemas de transmisión de datos
Sistemas de transmisión de datos - Medidas de seguridad
Internet de las cosas
Tecnología informàtica
Arduino (Controladores programables)
Internet of Things
Symmetric Encryption
XXTEA method
Arduino.
title_short Solución de cifrado de bajo coste computacional en la transmisión de datos sobre un prototipo IoT
title_full Solución de cifrado de bajo coste computacional en la transmisión de datos sobre un prototipo IoT
title_fullStr Solución de cifrado de bajo coste computacional en la transmisión de datos sobre un prototipo IoT
title_full_unstemmed Solución de cifrado de bajo coste computacional en la transmisión de datos sobre un prototipo IoT
title_sort Solución de cifrado de bajo coste computacional en la transmisión de datos sobre un prototipo IoT
dc.contributor.advisor.none.fl_str_mv Wanumen Silva, Luis Felipe
dc.subject.spa.fl_str_mv Internet de las cosas,
Arduino
Cifrado simétrico
Método XXTEA
topic Internet de las cosas,
Arduino
Cifrado simétrico
Método XXTEA
Ingeniería Telemática - Tesis y Disertaciones Académicas
Sistemas de transmisión de datos
Sistemas de transmisión de datos - Medidas de seguridad
Internet de las cosas
Tecnología informàtica
Arduino (Controladores programables)
Internet of Things
Symmetric Encryption
XXTEA method
Arduino.
dc.subject.lemb.spa.fl_str_mv Ingeniería Telemática - Tesis y Disertaciones Académicas
Sistemas de transmisión de datos
Sistemas de transmisión de datos - Medidas de seguridad
Internet de las cosas
Tecnología informàtica
Arduino (Controladores programables)
dc.subject.keyword.spa.fl_str_mv Internet of Things
Symmetric Encryption
XXTEA method
Arduino.
description Contexto: El rápido desarrollo de la tecnología informática en la actualidad a menudo resulta en el uso indebido de esta tecnología en actos delictivos. Uno de los casos más comunes es el rastreo de datos contenidos en redes de internet de las cosas, en el que manipulan o se acceden a datos privados; dicha situación, crea la necesidad de fortalecer la seguridad informática en escenarios como los ya mencionados; para la conveniencia de los usuarios en el uso de tecnología informática, esto se puede conseguir mediante cifrado simétrico. Este cifrado, sobre los datos transmitidos por la red, se realiza mediante el método XXTEA. XXTEA es un algoritmo de encriptación simple pero poderoso basado en iteraciones de Feistel. El cifrado y el descifrado se llevan a cabo en un prototipo de IoT, hecho en una placa Arduino, que se comunica con un servidor gratuito a través de WiFi y se analizarán los resultados de consumo del algoritmo. Metodología: Se usa una placa de desarrollo Arduino MEGA-2560, en la cual se instala sensor de ultra sonido, el HC-SR04 al que también se le incorpora el ESP8266 v1, un módulo sencillo de WiFi para enviar datos cifrados con XXTEA y en claro a través de una comunicación inalámbrica del estándar 802.11(WiFi). Este prototipo se conecta a un servidor local del software Blynk, que a su vez permite ver los datos en un móvil conectado en la misma red. En el envió de mensajes del prototipo se ha analizado su consumo y se ha validado el envío de la información con Wireshark a través de la red. Resultados: El tamaño de los datos cifrados fue de 13 a 15 Bytes, al descifrar resulta de 24 Bytes a 32 Bytes. En consecuencia, al cifrar y descifrar el espacio ocupado en la memoria flash es de 22284 bytes, 8% del espacio de almacenamiento total. El uso de la SRAM de la placa de desarrollo implementando el algoritmo de cifrado es 1402 bytes 17% del total y por último, el tiempo que se tarda el algoritmo cifrando, al realizar más de 200 operaciones de cifrado, dio como resultado 1741 microsegundos y el descifrado con una muestra igual al cifrado, se tardó un promedio de 2752 microsegundos. Al realizar la captura de paquetes con Wireshark en el proceso ya mencionado, se evidenció el cifrado de los datos de forma efectiva. Conclusiones: El algoritmo de cifrado XXTEA ha demostrado que puede reforzar la seguridad en la capa de aplicación para dispositivos IoT, como se demuestra en la implementación de este prototipo
publishDate 2022
dc.date.accessioned.none.fl_str_mv 2022-07-26T17:03:26Z
dc.date.available.none.fl_str_mv 2022-07-26T17:03:26Z
dc.date.created.none.fl_str_mv 2022-02-02
dc.type.degree.spa.fl_str_mv Producción Académica
dc.type.driver.spa.fl_str_mv info:eu-repo/semantics/bachelorThesis
dc.type.coar.spa.fl_str_mv http://purl.org/coar/resource_type/c_7a1f
format http://purl.org/coar/resource_type/c_7a1f
dc.identifier.uri.none.fl_str_mv http://hdl.handle.net/11349/29883
url http://hdl.handle.net/11349/29883
dc.language.iso.spa.fl_str_mv spa
language spa
dc.rights.*.fl_str_mv Atribución 2.5 Colombia
dc.rights.coar.fl_str_mv http://purl.org/coar/access_right/c_abf2
dc.rights.uri.*.fl_str_mv http://creativecommons.org/licenses/by/2.5/co/
dc.rights.acceso.spa.fl_str_mv Abierto (Texto Completo)
rights_invalid_str_mv Atribución 2.5 Colombia
http://creativecommons.org/licenses/by/2.5/co/
Abierto (Texto Completo)
http://purl.org/coar/access_right/c_abf2
dc.format.mimetype.spa.fl_str_mv pdf
institution Universidad Distrital Francisco José de Caldas
bitstream.url.fl_str_mv http://repository.udistrital.edu.co/bitstream/11349/29883/1/CalderonNovoaAndresFelipe2022.pdf
http://repository.udistrital.edu.co/bitstream/11349/29883/2/Licencia-de-Uso-PublicacionV2-2016.pdf
http://repository.udistrital.edu.co/bitstream/11349/29883/3/license_rdf
http://repository.udistrital.edu.co/bitstream/11349/29883/4/license.txt
http://repository.udistrital.edu.co/bitstream/11349/29883/5/CalderonNovoaAndresFelipe2022.pdf.jpg
http://repository.udistrital.edu.co/bitstream/11349/29883/6/Licencia-de-Uso-PublicacionV2-2016.pdf.jpg
bitstream.checksum.fl_str_mv 0efa63f64ff81d37fc634a5f2012b7ab
99ef3f1bc25fa4e538d5736380de6f36
1608e658af296c3febc577e957e919bf
997daf6c648c962d566d7b082dac908d
9fd554dbb067c9b910ea04fb1feb7a45
41b9cae6d056a08378cca5cd3c848a4a
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositorio Institucional Universidad Distrital - RIUD
repository.mail.fl_str_mv repositorio@udistrital.edu.co
_version_ 1803712678298910720
spelling Wanumen Silva, Luis FelipeCalderón Novoa, Andrés FelipeYepes Carreño, Julián David2022-07-26T17:03:26Z2022-07-26T17:03:26Z2022-02-02http://hdl.handle.net/11349/29883Contexto: El rápido desarrollo de la tecnología informática en la actualidad a menudo resulta en el uso indebido de esta tecnología en actos delictivos. Uno de los casos más comunes es el rastreo de datos contenidos en redes de internet de las cosas, en el que manipulan o se acceden a datos privados; dicha situación, crea la necesidad de fortalecer la seguridad informática en escenarios como los ya mencionados; para la conveniencia de los usuarios en el uso de tecnología informática, esto se puede conseguir mediante cifrado simétrico. Este cifrado, sobre los datos transmitidos por la red, se realiza mediante el método XXTEA. XXTEA es un algoritmo de encriptación simple pero poderoso basado en iteraciones de Feistel. El cifrado y el descifrado se llevan a cabo en un prototipo de IoT, hecho en una placa Arduino, que se comunica con un servidor gratuito a través de WiFi y se analizarán los resultados de consumo del algoritmo. Metodología: Se usa una placa de desarrollo Arduino MEGA-2560, en la cual se instala sensor de ultra sonido, el HC-SR04 al que también se le incorpora el ESP8266 v1, un módulo sencillo de WiFi para enviar datos cifrados con XXTEA y en claro a través de una comunicación inalámbrica del estándar 802.11(WiFi). Este prototipo se conecta a un servidor local del software Blynk, que a su vez permite ver los datos en un móvil conectado en la misma red. En el envió de mensajes del prototipo se ha analizado su consumo y se ha validado el envío de la información con Wireshark a través de la red. Resultados: El tamaño de los datos cifrados fue de 13 a 15 Bytes, al descifrar resulta de 24 Bytes a 32 Bytes. En consecuencia, al cifrar y descifrar el espacio ocupado en la memoria flash es de 22284 bytes, 8% del espacio de almacenamiento total. El uso de la SRAM de la placa de desarrollo implementando el algoritmo de cifrado es 1402 bytes 17% del total y por último, el tiempo que se tarda el algoritmo cifrando, al realizar más de 200 operaciones de cifrado, dio como resultado 1741 microsegundos y el descifrado con una muestra igual al cifrado, se tardó un promedio de 2752 microsegundos. Al realizar la captura de paquetes con Wireshark en el proceso ya mencionado, se evidenció el cifrado de los datos de forma efectiva. Conclusiones: El algoritmo de cifrado XXTEA ha demostrado que puede reforzar la seguridad en la capa de aplicación para dispositivos IoT, como se demuestra en la implementación de este prototipoContext: The rapid development of computer technology today often results in the misuse of this technology in criminal acts. One of the most common cases is the tracking of data in the Internet of Things networks, in which they manipulate or access private data; This situation creates the need to strengthen computer security in scenarios such as those already mentioned for the convenience of users in using computer technology, this can be achieved through symmetric encryption. This encryption, on the data transmitted by the network, is done using the XXTEA method. XXTEA is a simple but powerful encryption algorithm based on iterations of Feistel. Encryption and decryption are carried out on an IoT prototype, made on an Arduino board, which communicates with a free server via Wi-Fi and the intake results of the algorithm will be analyzed. Methodology: It uses a development board Arduino MEGA-2560, in which was installed a sensor ultrasound, the HC-SR04 which was also incorporated to the ESP8266 v1, a simple module Wi-Fi to send data encrypted with XXTEA and in clear through a wireless communication of the 802.11 standard ( Wi-Fi ). This prototype connects to a local Blynk software server, which allows data to be viewed on a mobile connected to the same network. In the sending of the intake prototype, it has been analyzed and validated by sending the information through the Wireshark network. Results: The size of the encrypted data was from 13 to 15 Bytes, when decrypting it results from 24 Bytes to 32 Bytes. In consequence to encrypt and decrypt the space, occupied in flash memory is 22284 bytes, 8% of the SPAT io total storage. The use SRAM development board implementing the encryption algorithm is 1402 bytes 17% of the total and finally the time it takes the algorithm encrypting, for the makeover 200 encryption operations, it gave results 1741 microseconds and decryption with a sample equal to the encryption; it took an average of 2752 microseconds. By performing the packet capture with Wireshark in the aforementioned process, the encryption of the data was evidenced effectively. Conclusions: The XXTEA encryption algorithm has shown that it can enforce application-layer security for IoT devices, as shown in the implementation of this prototype.pdfspaAtribución 2.5 Colombiahttp://creativecommons.org/licenses/by/2.5/co/Abierto (Texto Completo)http://purl.org/coar/access_right/c_abf2Internet de las cosas,ArduinoCifrado simétricoMétodo XXTEAIngeniería Telemática - Tesis y Disertaciones AcadémicasSistemas de transmisión de datosSistemas de transmisión de datos - Medidas de seguridadInternet de las cosasTecnología informàticaArduino (Controladores programables)Internet of ThingsSymmetric EncryptionXXTEA methodArduino.Solución de cifrado de bajo coste computacional en la transmisión de datos sobre un prototipo IoTLow computational cost encryption solution in data transmission over an IoT prototypeProducción Académicainfo:eu-repo/semantics/bachelorThesishttp://purl.org/coar/resource_type/c_7a1fORIGINALCalderonNovoaAndresFelipe2022.pdfCalderonNovoaAndresFelipe2022.pdfapplication/pdf1009865http://repository.udistrital.edu.co/bitstream/11349/29883/1/CalderonNovoaAndresFelipe2022.pdf0efa63f64ff81d37fc634a5f2012b7abMD51open accessLicencia-de-Uso-PublicacionV2-2016.pdfLicencia-de-Uso-PublicacionV2-2016.pdfapplication/pdf585217http://repository.udistrital.edu.co/bitstream/11349/29883/2/Licencia-de-Uso-PublicacionV2-2016.pdf99ef3f1bc25fa4e538d5736380de6f36MD52metadata only accessCC-LICENSElicense_rdflicense_rdfapplication/rdf+xml; charset=utf-8914http://repository.udistrital.edu.co/bitstream/11349/29883/3/license_rdf1608e658af296c3febc577e957e919bfMD53open accessLICENSElicense.txtlicense.txttext/plain; charset=utf-87167http://repository.udistrital.edu.co/bitstream/11349/29883/4/license.txt997daf6c648c962d566d7b082dac908dMD54open accessTHUMBNAILCalderonNovoaAndresFelipe2022.pdf.jpgCalderonNovoaAndresFelipe2022.pdf.jpgIM Thumbnailimage/jpeg10921http://repository.udistrital.edu.co/bitstream/11349/29883/5/CalderonNovoaAndresFelipe2022.pdf.jpg9fd554dbb067c9b910ea04fb1feb7a45MD55open accessLicencia-de-Uso-PublicacionV2-2016.pdf.jpgLicencia-de-Uso-PublicacionV2-2016.pdf.jpgIM Thumbnailimage/jpeg13239http://repository.udistrital.edu.co/bitstream/11349/29883/6/Licencia-de-Uso-PublicacionV2-2016.pdf.jpg41b9cae6d056a08378cca5cd3c848a4aMD56open access11349/29883oai:repository.udistrital.edu.co:11349/298832023-06-13 14:35:33.372open accessRepositorio Institucional Universidad Distrital - RIUDrepositorio@udistrital.edu.coTElDRU5DSUEgWSBBVVRPUklaQUNJw5NOIEVTUEVDSUFMIFBBUkEgUFVCTElDQVIgWSBQRVJNSVRJUiBMQSBDT05TVUxUQSBZIFVTTyBERSBDT05URU5JRE9TIEVOIEVMIFJFUE9TSVRPUklPIElOU1RJVFVDSU9OQUwgREUgTEEgVU5JVkVSU0lEQUQgRElTVFJJVEFMCgpUw6lybWlub3MgeSBjb25kaWNpb25lcyBkZSB1c28gcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyAoUklVRCkKCkNvbW8gdGl0dWxhcihlcykgZGVsKG9zKSBkZXJlY2hvKHMpIGRlIGF1dG9yLCBjb25maWVybyAoZXJpbW9zKSBhIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIChlbiBhZGVsYW50ZSwgTEEgVU5JVkVSU0lEQUQpIHVuYSBsaWNlbmNpYSBwYXJhIHVzbyBubyBleGNsdXNpdmEsIGxpbWl0YWRhIHkgZ3JhdHVpdGEgc29icmUgbGEgb2JyYSBxdWUgaW50ZWdyYXLDoSBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIChlbiBhZGVsYW50ZSwgUklVRCksIGRlIGFjdWVyZG8gYSBsYXMgc2lndWllbnRlcyByZWdsYXMsIGxhcyBjdWFsZXMgZGVjbGFybyAoYW1vcykgY29ub2NlciB5IGFjZXB0YXI6CgphKQlFc3RhcsOhIHZpZ2VudGUgYSBwYXJ0aXIgZGUgbGEgZmVjaGEgZW4gcXVlIHNlIGluY2x1eWEgZW4gZWwgUklVRCB5IGhhc3RhIHBvciB1biBwbGF6byBkZSBkaWV6ICgxMCkgQcOxb3MsIHByb3Jyb2dhYmxlIGluZGVmaW5pZGFtZW50ZSBwb3IgZWwgdGllbXBvIHF1ZSBkdXJlIGVsIGRlcmVjaG8gUGF0cmltb25pYWwgZGVsIGF1dG9yOyBsYSBjdWFsIHBvZHLDoSBkYXJzZSBwb3IgdGVybWluYWRhIHByZXZpYSBzb2xpY2l0dWQgYSBMQSBVTklWRVJTSURBRCBwb3IgZXNjcml0byBjb24gdW5hIGFudGVsYWNpw7NuIGRlIGRvcyAoMikgbWVzZXMgYW50ZXMgZGVsIHZlbmNpbWllbnRvIGRlbCBwbGF6byBpbmljaWFsIG8gZWwgZGUgc3UocykgcHLDs3Jyb2dhKHMpLgoKYikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIHB1YmxpY2FyIGxhIG9icmEgZW4gbGFzIGRpc3RpbnRhcyB2ZXJzaW9uZXMgcmVxdWVyaWRhcyBwb3IgZWwgUklVRCAoZGlnaXRhbCwgaW1wcmVzbywgZWxlY3Ryw7NuaWNvIHUgb3RybyBtZWRpbyBjb25vY2lkbyBvIHBvciBjb25vY2VyKSBMQSBVTklWRVJTSURBRCBubyBzZXLDoSByZXNwb25zYWJsZSBlbiBlbCBldmVudG8gcXVlIGVsIGRvY3VtZW50byBhcGFyZXpjYSByZWZlcmVuY2lhZG8gZW4gbW90b3JlcyBkZSBiw7pzcXVlZGEgbyByZXBvc2l0b3Jpb3MgZGlmZXJlbnRlcyBhbCBSSVVELCB1bmEgdmV6IGVsKG9zKSBhdXRvcihlcykgc29saWNpdGVuIHN1IGVsaW1pbmFjacOzbiBkZWwgUklVRCwgZGFkbyBxdWUgbGEgbWlzbWEgc2Vyw6EgcHVibGljYWRhIGVuIEludGVybmV0LgoKYykJTGEgYXV0b3JpemFjacOzbiBzZSBoYWNlIGEgdMOtdHVsbyBncmF0dWl0bywgcG9yIGxvIHRhbnRvLCBsb3MgYXV0b3JlcyByZW51bmNpYW4gYSByZWNpYmlyIGJlbmVmaWNpbyBhbGd1bm8gcG9yIGxhIHB1YmxpY2FjacOzbiwgZGlzdHJpYnVjacOzbiwgY29tdW5pY2FjacOzbiBww7pibGljYSB5IGN1YWxxdWllciBvdHJvIHVzbyBxdWUgc2UgaGFnYSBlbiBsb3MgdMOpcm1pbm9zIGRlIGxhIHByZXNlbnRlIGxpY2VuY2lhIHkgZGUgbGEgbGljZW5jaWEgZGUgdXNvIGNvbiBxdWUgc2UgcHVibGljYSAoQ3JlYXRpdmUgQ29tbW9ucykuCgpkKQlMb3MgY29udGVuaWRvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQgc29uIG9icmEocykgb3JpZ2luYWwoZXMpIHNvYnJlIGxhIGN1YWwoZXMpIGVsKG9zKSBhdXRvcihlcykgY29tbyB0aXR1bGFyZXMgZGUgbG9zIGRlcmVjaG9zIGRlIGF1dG9yLCBhc3VtZW4gdG90YWwgcmVzcG9uc2FiaWxpZGFkIHBvciBlbCBjb250ZW5pZG8gZGUgc3Ugb2JyYSBhbnRlIExBIFVOSVZFUlNJREFEIHkgYW50ZSB0ZXJjZXJvcy4gRW4gdG9kbyBjYXNvIExBIFVOSVZFUlNJREFEIHNlIGNvbXByb21ldGUgYSBpbmRpY2FyIHNpZW1wcmUgbGEgYXV0b3LDrWEgaW5jbHV5ZW5kbyBlbCBub21icmUgZGVsIGF1dG9yIHkgbGEgZmVjaGEgZGUgcHVibGljYWNpw7NuLgoKZSkJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGluY2x1aXIgbGEgb2JyYSBlbiBsb3Mgw61uZGljZXMgeSBidXNjYWRvcmVzIHF1ZSBlc3RpbWVuIG5lY2VzYXJpb3MgcGFyYSBtYXhpbWl6YXIgbGEgdmlzaWJpbGlkYWQgZWwgdXNvIHkgZWwgaW1wYWN0byBkZSBsYSBwcm9kdWNjacOzbiBjaWVudMOtZmljYSwgYXJ0w61zdGljYSB5IGFjYWTDqW1pY2EgZW4gbGEgY29tdW5pZGFkIGxvY2FsLCBuYWNpb25hbCBvIGludGVybmFjaW9uYWwuCgoKZikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGNvbnZlcnRpciBsYSBvYnJhIGEgY3VhbHF1aWVyIG1lZGlvIG8gZm9ybWF0byBjb24gZWwgZmluIGRlIHN1IHByZXNlcnZhY2nDs24gZW4gZWwgdGllbXBvIHF1ZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSB5IGxhIGRlIHN1cyBwcsOzcnJvZ2FzLgoKCkNvbiBiYXNlIGVuIGxvIGFudGVyaW9yIGF1dG9yaXpvKGFtb3MpLCBhIGZhdm9yIGRlbCBSSVVEIHkgZGUgc3VzIHVzdWFyaW9zLCBsYSBwdWJsaWNhY2nDs24geSBjb25zdWx0YSBkZSBsYSBzaWd1aWVudGUgb2JyYToKClRpdHVsbwoKQXV0b3IgICAgICAgQXBlbGxpZG9zICAgICAgICAgTm9tYnJlcwoKMQoKMgoKMwoKCmcpCUF1dG9yaXpvKGFtb3MpLCBxdWUgbGEgb2JyYSBzZWEgcHVlc3RhIGEgZGlzcG9zaWNpw7NuIGRlbCBww7pibGljbyBlbiBsb3MgdMOpcm1pbm9zIGVzdGFibGVjaWRvcyBlbiBsb3MgbGl0ZXJhbGVzIGFudGVyaW9yZXMsIGJham8gbG9zIGzDrW1pdGVzIGRlZmluaWRvcyBwb3IgTEEgVU5JVkVSU0lEQUQsIGVuIGxhcyDigJxDb25kaWNpb25lcyBkZSB1c28gZGUgZXN0cmljdG8gY3VtcGxpbWllbnRv4oCdIGRlIGxvcyByZWN1cnNvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQsIGN1eW8gdGV4dG8gY29tcGxldG8gc2UgcHVlZGUgY29uc3VsdGFyIGVuIGh0dHA6Ly9yZXBvc2l0b3J5LnVkaXN0cml0YWwuZWR1LmNvLwoKaCkJQ29ub3pjbyhjZW1vcykgeSBhY2VwdG8oYW1vcykgcXVlIG90b3JnbyhhbW9zKSB1bmEgbGljZW5jaWEgZXNwZWNpYWwgcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcywgbGljZW5jaWEgICBkZSBsYSBjdWFsIGhlIChoZW1vcykgb2J0ZW5pZG8gdW5hIGNvcGlhLgoKaSkJTWFuaWZpZXN0byhhbW9zKSBtaSAobnVlc3RybykgdG90YWwgYWN1ZXJkbyBjb24gbGFzIGNvbmRpY2lvbmVzIGRlIHVzbyB5IHB1YmxpY2FjacOzbiBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIHF1ZSBzZSBkZXNjcmliZW4geSBleHBsaWNhbiBlbiBlbCBwcmVzZW50ZSBkb2N1bWVudG8uCgpqKQlDb25vemNvKGNlbW9zKSBsYSBub3JtYXRpdmlkYWQgaW50ZXJuYSBkZSAgTEEgVU5JVkVSU0lEQUQ7IGVuIGNvbmNyZXRvLCBlbCBBY3VlcmRvIDAwNCBkZSAyMDEyIGRlbCBDU1UsIEFjdWVyZG8gMDIzIGRlIDIwMTIgZGVsIENTVSBzb2JyZSBQb2zDrXRpY2EgRWRpdG9yaWFsLCBBY3VlcmRvIDAyNiAgZGVsIDMxIGRlIGp1bGlvIGRlIDIwMTIgc29icmUgZWwgcHJvY2VkaW1pZW50byBwYXJhIGxhIHB1YmxpY2FjacOzbiBkZSB0ZXNpcyBkZSBwb3N0Z3JhZG8gZGUgbG9zIGVzdHVkaWFudGVzIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzLCAgQWN1ZXJkbyAwMzAgZGVsIDAzIGRlIGRpY2llbWJyZSBkZSAyMDEzIHBvciBtZWRpbyBkZWwgY3VhbCBzZSBjcmVhIGVsIFJlcG9zaXRvcmlvIEluc3RpdHVjaW9uYWwgZGUgbGEgVW5pdmVyc2lkYWQgRGlzdHJpdGFsIEZyYW5jaXNjbyBKb3PDqSBkZSBDYWxkYXMsIEFjdWVyZG8gMDM4IGRlIDIwMTUgMjAxNSDigJxwb3IgZWwgY3VhbCBzZSBtb2RpZmljYSBlbCBBY3VlcmRvIDAzMSBkZSAyMDE0IGRlIDIwMTQgcXVlIHJlZ2xhbWVudGEgZWwgdHJhYmFqbyBkZSBncmFkbyBwYXJhIGxvcyBlc3R1ZGlhbnRlcyBkZSBwcmVncmFkbyBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyB5IHNlIGRpY3RhbiBvdHJhcyBkaXJlY3RyaWNlc+KAnSB5IGxhcyBkZW3DoXMgbm9ybWFzIGNvbmNvcmRhbnRlIHkgY29tcGxlbWVudGFyaWFzIHF1ZSByaWdlbiBhbCByZXNwZWN0bywgZXNwZWNpYWxtZW50ZSBsYSBsZXkgMjMgZGUgMTk4MiwgbGEgbGV5IDQ0IGRlIDE5OTMgeSBsYSBkZWNpc2nDs24gQW5kaW5hIDM1MSBkZSAxOTkzLiBFc3RvcyBkb2N1bWVudG9zIHBvZHLDoW4gc2VyIGNvbnN1bHRhZG9zIHkgZGVzY2FyZ2Fkb3MgZW4gZWwgcG9ydGFsIHdlYiBkZSBsYSBiaWJsaW90ZWNhIGh0dHA6Ly9zaXN0ZW1hZGViaWJsaW90ZWNhcy51ZGlzdHJpdGFsLmVkdS5jby8KCmspCUFjZXB0byhhbW9zKSBxdWUgTEEgVU5JVkVSU0lEQUQgbm8gc2UgcmVzcG9uc2FiaWxpemEgcG9yIGxhcyBpbmZyYWNjaW9uZXMgYSBsYSBwcm9waWVkYWQgaW50ZWxlY3R1YWwgbyBEZXJlY2hvcyBkZSBBdXRvciBjYXVzYWRhcyBwb3IgbG9zIHRpdHVsYXJlcyBkZSBsYSBwcmVzZW50ZSBMaWNlbmNpYSB5IGRlY2xhcmFtb3MgcXVlIG1hbnRlbmRyw6kgKGVtb3MpIGluZGVtbmUgYSBMQSBVTklWRVJTSURBRCBwb3IgbGFzIHJlY2xhbWFjaW9uZXMgbGVnYWxlcyBkZSBjdWFscXVpZXIgdGlwbyBxdWUgbGxlZ2FyZW4gYSBwcmVzZW50YXJzZSBwb3IgdmlvbGFjacOzbiBkZSBkZXJlY2hvcyBhIGxhIHByb3BpZWRhZCBpbnRlbGVjdHVhbCBvIGRlIEF1dG9yIHJlbGFjaW9uYWRvcyBjb24gbG9zIGRvY3VtZW50b3MgcmVnaXN0cmFkb3MgZW4gZWwgUklVRC4KCmwpCUVsIChsb3MpIGF1dG9yKGVzKSBtYW5pZmllc3RhKG1vcykgcXVlIGxhIG9icmEgb2JqZXRvIGRlIGxhIHByZXNlbnRlIGF1dG9yaXphY2nDs24gZXMgb3JpZ2luYWwsIGRlIGV4Y2x1c2l2YSBhdXRvcsOtYSwgeSBzZSByZWFsaXrDsyBzaW4gdmlvbGFyIG8gdXN1cnBhciBkZXJlY2hvcyBkZSBhdXRvciBkZSB0ZXJjZXJvczsgZGUgdGFsIHN1ZXJ0ZSwgZW4gY2FzbyBkZSBwcmVzZW50YXJzZSBjdWFscXVpZXIgcmVjbGFtYWNpw7NuIG8gYWNjacOzbiBwb3IgcGFydGUgZGUgdW4gdGVyY2VybyBlbiBjdWFudG8gYSBsb3MgZGVyZWNob3MgZGUgYXV0b3Igc29icmUgbGEgb2JyYSwgZWwgKGxvcykgZXN0dWRpYW50ZShzKSDigJMgYXV0b3IoZXMpIGFzdW1pcsOhKG4pIHRvZGEgbGEgcmVzcG9uc2FiaWxpZGFkIHkgc2FsZHLDoShuKSBlbiBkZWZlbnNhIGRlIGxvcyBkZXJlY2hvcyBhcXXDrSBhdXRvcml6YWRvcy4gUGFyYSB0b2RvcyBsb3MgZWZlY3RvcywgTEEgVU5JVkVSU0lEQUQgYWN0w7phIGNvbW8gdW4gdGVyY2VybyBkZSBidWVuYSBmZS4KCgptKQlFbCAobG9zKSBhdXRvcihlcykgbWFuaWZpZXN0YShtb3MpIHF1ZSBjb25vemNvKGNlbW9zKSBsYSBhdXRvbm9tw61hIHkgbG9zIGRlcmVjaG9zLCBxdWUgcG9zZWUobW9zKSBzb2JyZSBsYSBvYnJhIHksIGNvbW8gdGFsLCBlcyAoc29tb3MpIHJlc3BvbnNhYmxlKHMpIGRlbCBhbGNhbmNlIGp1csOtZGljbyB5IGxlZ2FsLCBkZSBlc2NvZ2VyIGxhIG9wY2nDs24gZGUgbGEgcHVibGljYWNpw7NuIG8gZGUgcmVzdHJpY2Npw7NuIGRlIGxhIHB1YmxpY2FjacOzbiBkZWwgZG9jdW1lbnRvIHJlZ2lzdHJhZG8gZW4gZWwgUklVRC4KCgoKCgoKU0kgRUwgRE9DVU1FTlRPIFNFIEJBU0EgRU4gVU4gVFJBQkFKTyBRVUUgSEEgU0lETyBQQVRST0NJTkFETyBPIEFQT1lBRE8gUE9SIFVOQSBBR0VOQ0lBIE8gVU5BIE9SR0FOSVpBQ0nDk04sIENPTiBFWENFUENJw5NOIERFIExBIFVOSVZFUlNJREFEIERJU1RSSVRBTCBGUkFOQ0lTQ08gSk9TRSBERSBDQUxEQVMsIExPUyBBVVRPUkVTIEdBUkFOVElaQU4gUVVFIFNFIEhBIENVTVBMSURPIENPTiBMT1MKREVSRUNIT1MgWSBPQkxJR0FDSU9ORVMgUkVRVUVSSURPUyBQT1IgRUwgUkVTUEVDVElWTyBDT05UUkFUTyBPIEFDVUVSRE8uCgoKCgoKCgoKCgoKCgoKCgoKCgoKCkVuIGNvbnN0YW5jaWEgZGUgbG8gYW50ZXJpb3IsIGZpcm1vKGFtb3MpIGVsIHByZXNlbnRlIGRvY3VtZW50bywgZW4gbGEgY2l1ZGFkIGRlIEJvZ290w6EsIEQuQy4sIGEgbG9zCgoKRklSTUEgREUgTE9TIFRJVFVMQVJFUyBERSBERVJFQ0hPUyBERSBBVVRPUgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fICAgQy5DLiBOby4gX19fX19fX19fX19fX19fX19fCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18gICBDLkMuIE5vLiBfX19fX19fX19fX19fX19fX18KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyAgIEMuQy4gTm8uIF9fX19fX19fX19fX19fX19fXwoKCgpDb3JyZW8gRWxlY3Ryw7NuaWNvIEluc3RpdHVjaW9uYWwgZGVsIChkZSBsb3MpIEF1dG9yKGVzKToKCkF1dG9yCSAgICAgIENvcnJlbyBFbGVjdHLDs25pY28KCjEKCjIKCjMKCk5vbWJyZSBkZSBEaXJlY3RvcihlcykgZGUgR3JhZG86CgoxCgoyCgozCgpOb21icmUgRmFjdWx0YWQgeSBQcm95ZWN0byBDdXJyaWN1bGFyOgoKRmFjdWx0YWQJUHJveWVjdG8gQ3VycmljdWxhcgoKCgoKCgoKCk5vdGE6IEVuIGNhc28gcXVlIG5vIGVzdMOpIGRlIGFjdWVyZG8gY29uIGxhcyBjb25kaWNpb25lcyBkZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSwgeSBtYW5pZmllc3RlIGFsZ3VuYSByZXN0cmljY2nDs24gc29icmUgbGEgb2JyYSwganVzdGlmaXF1ZSBsb3MgbW90aXZvcyBwb3IgbG9zIGN1YWxlcyBlbCBkb2N1bWVudG8geSBzdXMgYW5leG9zIG5vIHB1ZWRlbiBzZXIgcHVibGljYWRvcyBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIFJJVUQuCgoKU2kgcmVxdWllcmUgbcOhcyBlc3BhY2lvLCBwdWVkZSBhbmV4YXIgdW5hIGNvcGlhIHNpbWlsYXIgYSBlc3RhIGhvamEK