Modelado de temas y análisis de sentimientos utilizando inteligencia artificial

Este documento describe el proyecto de pasantía realizado en Inversiones Gutiérrez García, que es una empresa que se centra en el desarrollo de herramientas basadas en inteligencia artificial, como la visión por computadora y el procesamiento del lenguaje natural (NLP). Una gran porción de sus clien...

Full description

Autores:
Penagos Rodriguez, Daniel Felipe
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/31845
Acceso en línea:
http://hdl.handle.net/11349/31845
Palabra clave:
Inteligencia artificial
Análisis de sentimientos
Modelado de temas
Procesamiento del lenguaje natural
Aprendizaje automático
Ingeniería Electrónica -- Tesis y disertaciones académicas
Inteligencia artificial en servicios de estaciones de servicio (EDS)
Análisis de sentimiento en textos en español
Reconocimiento de entidades nombradas (NER)
Modelos BERTopic y KeyBERT
Artificial intelligence
Sentiment analysis
Theme modeling
Natural language processing
Machine learning
Rights
License
Attribution-NonCommercial-NoDerivatives 4.0 Internacional
id UDISTRITA2_b0ec292c9435511238eb5c183e1b57da
oai_identifier_str oai:repository.udistrital.edu.co:11349/31845
network_acronym_str UDISTRITA2
network_name_str RIUD: repositorio U. Distrital
repository_id_str
dc.title.spa.fl_str_mv Modelado de temas y análisis de sentimientos utilizando inteligencia artificial
dc.title.titleenglish.spa.fl_str_mv Topic modeling and sentiment analysis using artificial intelligence
title Modelado de temas y análisis de sentimientos utilizando inteligencia artificial
spellingShingle Modelado de temas y análisis de sentimientos utilizando inteligencia artificial
Inteligencia artificial
Análisis de sentimientos
Modelado de temas
Procesamiento del lenguaje natural
Aprendizaje automático
Ingeniería Electrónica -- Tesis y disertaciones académicas
Inteligencia artificial en servicios de estaciones de servicio (EDS)
Análisis de sentimiento en textos en español
Reconocimiento de entidades nombradas (NER)
Modelos BERTopic y KeyBERT
Artificial intelligence
Sentiment analysis
Theme modeling
Natural language processing
Machine learning
title_short Modelado de temas y análisis de sentimientos utilizando inteligencia artificial
title_full Modelado de temas y análisis de sentimientos utilizando inteligencia artificial
title_fullStr Modelado de temas y análisis de sentimientos utilizando inteligencia artificial
title_full_unstemmed Modelado de temas y análisis de sentimientos utilizando inteligencia artificial
title_sort Modelado de temas y análisis de sentimientos utilizando inteligencia artificial
dc.creator.fl_str_mv Penagos Rodriguez, Daniel Felipe
dc.contributor.advisor.none.fl_str_mv Muñoz Quiñonez, Gerardo Alcides
Gutiérrez García, Luis Fernando
dc.contributor.author.none.fl_str_mv Penagos Rodriguez, Daniel Felipe
dc.subject.spa.fl_str_mv Inteligencia artificial
Análisis de sentimientos
Modelado de temas
Procesamiento del lenguaje natural
Aprendizaje automático
topic Inteligencia artificial
Análisis de sentimientos
Modelado de temas
Procesamiento del lenguaje natural
Aprendizaje automático
Ingeniería Electrónica -- Tesis y disertaciones académicas
Inteligencia artificial en servicios de estaciones de servicio (EDS)
Análisis de sentimiento en textos en español
Reconocimiento de entidades nombradas (NER)
Modelos BERTopic y KeyBERT
Artificial intelligence
Sentiment analysis
Theme modeling
Natural language processing
Machine learning
dc.subject.lemb.none.fl_str_mv Ingeniería Electrónica -- Tesis y disertaciones académicas
Inteligencia artificial en servicios de estaciones de servicio (EDS)
Análisis de sentimiento en textos en español
Reconocimiento de entidades nombradas (NER)
Modelos BERTopic y KeyBERT
dc.subject.keyword.spa.fl_str_mv Artificial intelligence
Sentiment analysis
Theme modeling
Natural language processing
Machine learning
description Este documento describe el proyecto de pasantía realizado en Inversiones Gutiérrez García, que es una empresa que se centra en el desarrollo de herramientas basadas en inteligencia artificial, como la visión por computadora y el procesamiento del lenguaje natural (NLP). Una gran porción de sus clientes son estaciones de servicios (EDS). Estas necesitan aplicaciones de NLP que les permitan conocer de manera recursiva y automatizada la percepción de los clientes hacia su servicio y su posicionamiento como empresa frente a los competidores. Debido a las necesidades anteriormente descritas, se procede a desarrollar modelos que tengan como propósito la clasificación de la polaridad de comentarios y la identificación de temas, específicamente en textos en idioma español y en con un “lenguaje” particular y específico, como el usado en el contexto de las estaciones de servicio. Se logró entrenar dos modelos para distintas tareas, el primero es el modelo de análisis de sentimiento que permite clasificar documentos según la polaridad del comentario (negativa, neutra y positiva). El segundo es el modelo de reconocimiento de entidades nombradas (NER), el cual detecta automáticamente entidades importantes, lo que permite estructurar la información. Además de los modelos entrenados, se usaron los modelos BERTopic y KeyBert para la extracción de temas en un conjunto de documentos y la extracción de palabras clave en un documento. Finalmente se proponen seis aplicaciones para la navegación de los datos obtenidos y la utilización sencilla de los modelos. Cuatro de estas aplicaciones permiten usar de manera intuitiva y sencilla los cuatro modelos implementados en el proyecto (Análisis de sentimientos, modelo NER, BERTopic y KeyBERT). La quinta aplicación permite navegar geográficamente por estaciones de servicios y sus comentarios asociados, lo cual genera una percepción del posicionamiento de la EDS frente a la competencia. La sexta aplicación permite visualizar los embeddings de comentarios en 2 dimensiones, lo cual es clave para el entendimiento de la clasificación y separación de temas por documentos.
publishDate 2022
dc.date.created.none.fl_str_mv 2022-10-06
dc.date.accessioned.none.fl_str_mv 2023-07-18T19:24:29Z
dc.date.available.none.fl_str_mv 2023-07-18T19:24:29Z
dc.type.spa.fl_str_mv bachelorThesis
dc.type.degree.spa.fl_str_mv Pasantía
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/31845
url http://hdl.handle.net/11349/31845
dc.language.iso.spa.fl_str_mv spa
language spa
dc.rights.*.fl_str_mv Attribution-NonCommercial-NoDerivatives 4.0 Internacional
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-nc-nd/4.0/
dc.rights.acceso.spa.fl_str_mv Abierto (Texto Completo)
rights_invalid_str_mv Attribution-NonCommercial-NoDerivatives 4.0 Internacional
http://creativecommons.org/licenses/by-nc-nd/4.0/
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 https://repository.udistrital.edu.co/bitstreams/0e115105-364e-4d48-946f-d899c1dc9f6e/download
https://repository.udistrital.edu.co/bitstreams/60866526-68bf-4014-ae58-0d7d4088475c/download
https://repository.udistrital.edu.co/bitstreams/de57036c-73f1-45f7-8fd3-beaa65470477/download
https://repository.udistrital.edu.co/bitstreams/d5db75ba-4605-494c-85ae-a162b069cad9/download
https://repository.udistrital.edu.co/bitstreams/f88eb3b2-30e1-414b-a37e-7ee6c60aaef5/download
https://repository.udistrital.edu.co/bitstreams/b1bb4914-7a31-4cf3-b300-bc0bd861ddef/download
bitstream.checksum.fl_str_mv 4460e5956bc1d1639be9ae6146a50347
a10358cba6eb57fa9c96276c824fe4b1
fd9611e1f4603bc35cb1513c6738a1be
997daf6c648c962d566d7b082dac908d
1384236c35760d15598ade51b0996864
819f99d640a427a34ead0b9f28d8b125
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositorio Universidad Distrital
repository.mail.fl_str_mv repositorio@udistrital.edu.co
_version_ 1837007180294782976
spelling Muñoz Quiñonez, Gerardo AlcidesGutiérrez García, Luis FernandoPenagos Rodriguez, Daniel Felipe2023-07-18T19:24:29Z2023-07-18T19:24:29Z2022-10-06http://hdl.handle.net/11349/31845Este documento describe el proyecto de pasantía realizado en Inversiones Gutiérrez García, que es una empresa que se centra en el desarrollo de herramientas basadas en inteligencia artificial, como la visión por computadora y el procesamiento del lenguaje natural (NLP). Una gran porción de sus clientes son estaciones de servicios (EDS). Estas necesitan aplicaciones de NLP que les permitan conocer de manera recursiva y automatizada la percepción de los clientes hacia su servicio y su posicionamiento como empresa frente a los competidores. Debido a las necesidades anteriormente descritas, se procede a desarrollar modelos que tengan como propósito la clasificación de la polaridad de comentarios y la identificación de temas, específicamente en textos en idioma español y en con un “lenguaje” particular y específico, como el usado en el contexto de las estaciones de servicio. Se logró entrenar dos modelos para distintas tareas, el primero es el modelo de análisis de sentimiento que permite clasificar documentos según la polaridad del comentario (negativa, neutra y positiva). El segundo es el modelo de reconocimiento de entidades nombradas (NER), el cual detecta automáticamente entidades importantes, lo que permite estructurar la información. Además de los modelos entrenados, se usaron los modelos BERTopic y KeyBert para la extracción de temas en un conjunto de documentos y la extracción de palabras clave en un documento. Finalmente se proponen seis aplicaciones para la navegación de los datos obtenidos y la utilización sencilla de los modelos. Cuatro de estas aplicaciones permiten usar de manera intuitiva y sencilla los cuatro modelos implementados en el proyecto (Análisis de sentimientos, modelo NER, BERTopic y KeyBERT). La quinta aplicación permite navegar geográficamente por estaciones de servicios y sus comentarios asociados, lo cual genera una percepción del posicionamiento de la EDS frente a la competencia. La sexta aplicación permite visualizar los embeddings de comentarios en 2 dimensiones, lo cual es clave para el entendimiento de la clasificación y separación de temas por documentos.This document describes the internship project carried out at Inversiones Gutiérrez García, is a company that focuses on developing tools based on artificial intelligence, such as computer vision and natural language processing (NLP). A large portion of its customers are service stations (EDS). They need NLP applications that allow them to know in a recursive and automated way the perception of customers towards their service and their positioning as a company compared to competitors. Due to the needs described above, we proceed to develop models whose purpose is the classification of the polarity of comments and the identification of themes, specifically in texts in Spanish and in a particular and specific "language", such as the one used in the context of service stations. It was possible to train two models for different tasks, the first is the sentiment analysis model that allows classifying documents according to the polarity of the comment (negative, neutral and positive). The second is the Named Entity Recognition (NER) model, which automatically detects important entities, allowing information to be structured. In addition to the trained models, the BERTopic and KeyBert models were used for topic extraction in a set of documents and keyword extraction in a document. Finally, six applications are proposed for browsing the data obtained and the simple use of the models. Four of these applications allow the four models implemented in the project to be used intuitively and easily (Sentiment Analysis, NER model, BERTopic and KeyBERT). The fifth application allows you to navigate geographically by service stations and their associated comments, which generates a perception of the positioning of the EDS against the competition. The sixth application allows viewing comment embeddings in 2 dimensions, which is key to understanding the classification and separation of topics by documents.Inversiones Gutiérrez GarcíapdfspaAttribution-NonCommercial-NoDerivatives 4.0 Internacionalhttp://creativecommons.org/licenses/by-nc-nd/4.0/Abierto (Texto Completo)http://purl.org/coar/access_right/c_abf2Inteligencia artificialAnálisis de sentimientosModelado de temasProcesamiento del lenguaje naturalAprendizaje automáticoIngeniería Electrónica -- Tesis y disertaciones académicasInteligencia artificial en servicios de estaciones de servicio (EDS)Análisis de sentimiento en textos en españolReconocimiento de entidades nombradas (NER)Modelos BERTopic y KeyBERTArtificial intelligenceSentiment analysisTheme modelingNatural language processingMachine learningModelado de temas y análisis de sentimientos utilizando inteligencia artificialTopic modeling and sentiment analysis using artificial intelligencebachelorThesisPasantíainfo:eu-repo/semantics/bachelorThesishttp://purl.org/coar/resource_type/c_7a1fCC-LICENSElicense_rdflicense_rdfapplication/rdf+xml; charset=utf-8805https://repository.udistrital.edu.co/bitstreams/0e115105-364e-4d48-946f-d899c1dc9f6e/download4460e5956bc1d1639be9ae6146a50347MD53ORIGINALPenagosRodriguezDanielFelipe2022.pdfPenagosRodriguezDanielFelipe2022.pdfTrabajo de gradoapplication/pdf9387263https://repository.udistrital.edu.co/bitstreams/60866526-68bf-4014-ae58-0d7d4088475c/downloada10358cba6eb57fa9c96276c824fe4b1MD55Licencia y autorización de los autores para publicar.pdfLicencia y autorización de los autores para publicar.pdfLicencia de uso y publicaciónapplication/pdf624298https://repository.udistrital.edu.co/bitstreams/de57036c-73f1-45f7-8fd3-beaa65470477/downloadfd9611e1f4603bc35cb1513c6738a1beMD52LICENSElicense.txtlicense.txttext/plain; charset=utf-87167https://repository.udistrital.edu.co/bitstreams/d5db75ba-4605-494c-85ae-a162b069cad9/download997daf6c648c962d566d7b082dac908dMD56THUMBNAILPenagosRodriguezDanielFelipe2022.pdf.jpgPenagosRodriguezDanielFelipe2022.pdf.jpgIM Thumbnailimage/jpeg6882https://repository.udistrital.edu.co/bitstreams/f88eb3b2-30e1-414b-a37e-7ee6c60aaef5/download1384236c35760d15598ade51b0996864MD57Licencia y autorización de los autores para publicar.pdf.jpgLicencia y autorización de los autores para publicar.pdf.jpgIM Thumbnailimage/jpeg13041https://repository.udistrital.edu.co/bitstreams/b1bb4914-7a31-4cf3-b300-bc0bd861ddef/download819f99d640a427a34ead0b9f28d8b125MD5811349/31845oai:repository.udistrital.edu.co:11349/318452024-04-09 15:47:20.191http://creativecommons.org/licenses/by-nc-nd/4.0/Attribution-NonCommercial-NoDerivatives 4.0 Internacionalopen.accesshttps://repository.udistrital.edu.coRepositorio Universidad Distritalrepositorio@udistrital.edu.coTElDRU5DSUEgWSBBVVRPUklaQUNJw5NOIEVTUEVDSUFMIFBBUkEgUFVCTElDQVIgWSBQRVJNSVRJUiBMQSBDT05TVUxUQSBZIFVTTyBERSBDT05URU5JRE9TIEVOIEVMIFJFUE9TSVRPUklPIElOU1RJVFVDSU9OQUwgREUgTEEgVU5JVkVSU0lEQUQgRElTVFJJVEFMCgpUw6lybWlub3MgeSBjb25kaWNpb25lcyBkZSB1c28gcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyAoUklVRCkKCkNvbW8gdGl0dWxhcihlcykgZGVsKG9zKSBkZXJlY2hvKHMpIGRlIGF1dG9yLCBjb25maWVybyAoZXJpbW9zKSBhIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIChlbiBhZGVsYW50ZSwgTEEgVU5JVkVSU0lEQUQpIHVuYSBsaWNlbmNpYSBwYXJhIHVzbyBubyBleGNsdXNpdmEsIGxpbWl0YWRhIHkgZ3JhdHVpdGEgc29icmUgbGEgb2JyYSBxdWUgaW50ZWdyYXLDoSBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIChlbiBhZGVsYW50ZSwgUklVRCksIGRlIGFjdWVyZG8gYSBsYXMgc2lndWllbnRlcyByZWdsYXMsIGxhcyBjdWFsZXMgZGVjbGFybyAoYW1vcykgY29ub2NlciB5IGFjZXB0YXI6CgphKQlFc3RhcsOhIHZpZ2VudGUgYSBwYXJ0aXIgZGUgbGEgZmVjaGEgZW4gcXVlIHNlIGluY2x1eWEgZW4gZWwgUklVRCB5IGhhc3RhIHBvciB1biBwbGF6byBkZSBkaWV6ICgxMCkgQcOxb3MsIHByb3Jyb2dhYmxlIGluZGVmaW5pZGFtZW50ZSBwb3IgZWwgdGllbXBvIHF1ZSBkdXJlIGVsIGRlcmVjaG8gUGF0cmltb25pYWwgZGVsIGF1dG9yOyBsYSBjdWFsIHBvZHLDoSBkYXJzZSBwb3IgdGVybWluYWRhIHByZXZpYSBzb2xpY2l0dWQgYSBMQSBVTklWRVJTSURBRCBwb3IgZXNjcml0byBjb24gdW5hIGFudGVsYWNpw7NuIGRlIGRvcyAoMikgbWVzZXMgYW50ZXMgZGVsIHZlbmNpbWllbnRvIGRlbCBwbGF6byBpbmljaWFsIG8gZWwgZGUgc3UocykgcHLDs3Jyb2dhKHMpLgoKYikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIHB1YmxpY2FyIGxhIG9icmEgZW4gbGFzIGRpc3RpbnRhcyB2ZXJzaW9uZXMgcmVxdWVyaWRhcyBwb3IgZWwgUklVRCAoZGlnaXRhbCwgaW1wcmVzbywgZWxlY3Ryw7NuaWNvIHUgb3RybyBtZWRpbyBjb25vY2lkbyBvIHBvciBjb25vY2VyKSBMQSBVTklWRVJTSURBRCBubyBzZXLDoSByZXNwb25zYWJsZSBlbiBlbCBldmVudG8gcXVlIGVsIGRvY3VtZW50byBhcGFyZXpjYSByZWZlcmVuY2lhZG8gZW4gbW90b3JlcyBkZSBiw7pzcXVlZGEgbyByZXBvc2l0b3Jpb3MgZGlmZXJlbnRlcyBhbCBSSVVELCB1bmEgdmV6IGVsKG9zKSBhdXRvcihlcykgc29saWNpdGVuIHN1IGVsaW1pbmFjacOzbiBkZWwgUklVRCwgZGFkbyBxdWUgbGEgbWlzbWEgc2Vyw6EgcHVibGljYWRhIGVuIEludGVybmV0LgoKYykJTGEgYXV0b3JpemFjacOzbiBzZSBoYWNlIGEgdMOtdHVsbyBncmF0dWl0bywgcG9yIGxvIHRhbnRvLCBsb3MgYXV0b3JlcyByZW51bmNpYW4gYSByZWNpYmlyIGJlbmVmaWNpbyBhbGd1bm8gcG9yIGxhIHB1YmxpY2FjacOzbiwgZGlzdHJpYnVjacOzbiwgY29tdW5pY2FjacOzbiBww7pibGljYSB5IGN1YWxxdWllciBvdHJvIHVzbyBxdWUgc2UgaGFnYSBlbiBsb3MgdMOpcm1pbm9zIGRlIGxhIHByZXNlbnRlIGxpY2VuY2lhIHkgZGUgbGEgbGljZW5jaWEgZGUgdXNvIGNvbiBxdWUgc2UgcHVibGljYSAoQ3JlYXRpdmUgQ29tbW9ucykuCgpkKQlMb3MgY29udGVuaWRvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQgc29uIG9icmEocykgb3JpZ2luYWwoZXMpIHNvYnJlIGxhIGN1YWwoZXMpIGVsKG9zKSBhdXRvcihlcykgY29tbyB0aXR1bGFyZXMgZGUgbG9zIGRlcmVjaG9zIGRlIGF1dG9yLCBhc3VtZW4gdG90YWwgcmVzcG9uc2FiaWxpZGFkIHBvciBlbCBjb250ZW5pZG8gZGUgc3Ugb2JyYSBhbnRlIExBIFVOSVZFUlNJREFEIHkgYW50ZSB0ZXJjZXJvcy4gRW4gdG9kbyBjYXNvIExBIFVOSVZFUlNJREFEIHNlIGNvbXByb21ldGUgYSBpbmRpY2FyIHNpZW1wcmUgbGEgYXV0b3LDrWEgaW5jbHV5ZW5kbyBlbCBub21icmUgZGVsIGF1dG9yIHkgbGEgZmVjaGEgZGUgcHVibGljYWNpw7NuLgoKZSkJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGluY2x1aXIgbGEgb2JyYSBlbiBsb3Mgw61uZGljZXMgeSBidXNjYWRvcmVzIHF1ZSBlc3RpbWVuIG5lY2VzYXJpb3MgcGFyYSBtYXhpbWl6YXIgbGEgdmlzaWJpbGlkYWQgZWwgdXNvIHkgZWwgaW1wYWN0byBkZSBsYSBwcm9kdWNjacOzbiBjaWVudMOtZmljYSwgYXJ0w61zdGljYSB5IGFjYWTDqW1pY2EgZW4gbGEgY29tdW5pZGFkIGxvY2FsLCBuYWNpb25hbCBvIGludGVybmFjaW9uYWwuCgoKZikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGNvbnZlcnRpciBsYSBvYnJhIGEgY3VhbHF1aWVyIG1lZGlvIG8gZm9ybWF0byBjb24gZWwgZmluIGRlIHN1IHByZXNlcnZhY2nDs24gZW4gZWwgdGllbXBvIHF1ZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSB5IGxhIGRlIHN1cyBwcsOzcnJvZ2FzLgoKCkNvbiBiYXNlIGVuIGxvIGFudGVyaW9yIGF1dG9yaXpvKGFtb3MpLCBhIGZhdm9yIGRlbCBSSVVEIHkgZGUgc3VzIHVzdWFyaW9zLCBsYSBwdWJsaWNhY2nDs24geSBjb25zdWx0YSBkZSBsYSBzaWd1aWVudGUgb2JyYToKClRpdHVsbwoKQXV0b3IgICAgICAgQXBlbGxpZG9zICAgICAgICAgTm9tYnJlcwoKMQoKMgoKMwoKCmcpCUF1dG9yaXpvKGFtb3MpLCBxdWUgbGEgb2JyYSBzZWEgcHVlc3RhIGEgZGlzcG9zaWNpw7NuIGRlbCBww7pibGljbyBlbiBsb3MgdMOpcm1pbm9zIGVzdGFibGVjaWRvcyBlbiBsb3MgbGl0ZXJhbGVzIGFudGVyaW9yZXMsIGJham8gbG9zIGzDrW1pdGVzIGRlZmluaWRvcyBwb3IgTEEgVU5JVkVSU0lEQUQsIGVuIGxhcyDigJxDb25kaWNpb25lcyBkZSB1c28gZGUgZXN0cmljdG8gY3VtcGxpbWllbnRv4oCdIGRlIGxvcyByZWN1cnNvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQsIGN1eW8gdGV4dG8gY29tcGxldG8gc2UgcHVlZGUgY29uc3VsdGFyIGVuIGh0dHA6Ly9yZXBvc2l0b3J5LnVkaXN0cml0YWwuZWR1LmNvLwoKaCkJQ29ub3pjbyhjZW1vcykgeSBhY2VwdG8oYW1vcykgcXVlIG90b3JnbyhhbW9zKSB1bmEgbGljZW5jaWEgZXNwZWNpYWwgcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcywgbGljZW5jaWEgICBkZSBsYSBjdWFsIGhlIChoZW1vcykgb2J0ZW5pZG8gdW5hIGNvcGlhLgoKaSkJTWFuaWZpZXN0byhhbW9zKSBtaSAobnVlc3RybykgdG90YWwgYWN1ZXJkbyBjb24gbGFzIGNvbmRpY2lvbmVzIGRlIHVzbyB5IHB1YmxpY2FjacOzbiBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIHF1ZSBzZSBkZXNjcmliZW4geSBleHBsaWNhbiBlbiBlbCBwcmVzZW50ZSBkb2N1bWVudG8uCgpqKQlDb25vemNvKGNlbW9zKSBsYSBub3JtYXRpdmlkYWQgaW50ZXJuYSBkZSAgTEEgVU5JVkVSU0lEQUQ7IGVuIGNvbmNyZXRvLCBlbCBBY3VlcmRvIDAwNCBkZSAyMDEyIGRlbCBDU1UsIEFjdWVyZG8gMDIzIGRlIDIwMTIgZGVsIENTVSBzb2JyZSBQb2zDrXRpY2EgRWRpdG9yaWFsLCBBY3VlcmRvIDAyNiAgZGVsIDMxIGRlIGp1bGlvIGRlIDIwMTIgc29icmUgZWwgcHJvY2VkaW1pZW50byBwYXJhIGxhIHB1YmxpY2FjacOzbiBkZSB0ZXNpcyBkZSBwb3N0Z3JhZG8gZGUgbG9zIGVzdHVkaWFudGVzIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzLCAgQWN1ZXJkbyAwMzAgZGVsIDAzIGRlIGRpY2llbWJyZSBkZSAyMDEzIHBvciBtZWRpbyBkZWwgY3VhbCBzZSBjcmVhIGVsIFJlcG9zaXRvcmlvIEluc3RpdHVjaW9uYWwgZGUgbGEgVW5pdmVyc2lkYWQgRGlzdHJpdGFsIEZyYW5jaXNjbyBKb3PDqSBkZSBDYWxkYXMsIEFjdWVyZG8gMDM4IGRlIDIwMTUgMjAxNSDigJxwb3IgZWwgY3VhbCBzZSBtb2RpZmljYSBlbCBBY3VlcmRvIDAzMSBkZSAyMDE0IGRlIDIwMTQgcXVlIHJlZ2xhbWVudGEgZWwgdHJhYmFqbyBkZSBncmFkbyBwYXJhIGxvcyBlc3R1ZGlhbnRlcyBkZSBwcmVncmFkbyBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyB5IHNlIGRpY3RhbiBvdHJhcyBkaXJlY3RyaWNlc+KAnSB5IGxhcyBkZW3DoXMgbm9ybWFzIGNvbmNvcmRhbnRlIHkgY29tcGxlbWVudGFyaWFzIHF1ZSByaWdlbiBhbCByZXNwZWN0bywgZXNwZWNpYWxtZW50ZSBsYSBsZXkgMjMgZGUgMTk4MiwgbGEgbGV5IDQ0IGRlIDE5OTMgeSBsYSBkZWNpc2nDs24gQW5kaW5hIDM1MSBkZSAxOTkzLiBFc3RvcyBkb2N1bWVudG9zIHBvZHLDoW4gc2VyIGNvbnN1bHRhZG9zIHkgZGVzY2FyZ2Fkb3MgZW4gZWwgcG9ydGFsIHdlYiBkZSBsYSBiaWJsaW90ZWNhIGh0dHA6Ly9zaXN0ZW1hZGViaWJsaW90ZWNhcy51ZGlzdHJpdGFsLmVkdS5jby8KCmspCUFjZXB0byhhbW9zKSBxdWUgTEEgVU5JVkVSU0lEQUQgbm8gc2UgcmVzcG9uc2FiaWxpemEgcG9yIGxhcyBpbmZyYWNjaW9uZXMgYSBsYSBwcm9waWVkYWQgaW50ZWxlY3R1YWwgbyBEZXJlY2hvcyBkZSBBdXRvciBjYXVzYWRhcyBwb3IgbG9zIHRpdHVsYXJlcyBkZSBsYSBwcmVzZW50ZSBMaWNlbmNpYSB5IGRlY2xhcmFtb3MgcXVlIG1hbnRlbmRyw6kgKGVtb3MpIGluZGVtbmUgYSBMQSBVTklWRVJTSURBRCBwb3IgbGFzIHJlY2xhbWFjaW9uZXMgbGVnYWxlcyBkZSBjdWFscXVpZXIgdGlwbyBxdWUgbGxlZ2FyZW4gYSBwcmVzZW50YXJzZSBwb3IgdmlvbGFjacOzbiBkZSBkZXJlY2hvcyBhIGxhIHByb3BpZWRhZCBpbnRlbGVjdHVhbCBvIGRlIEF1dG9yIHJlbGFjaW9uYWRvcyBjb24gbG9zIGRvY3VtZW50b3MgcmVnaXN0cmFkb3MgZW4gZWwgUklVRC4KCmwpCUVsIChsb3MpIGF1dG9yKGVzKSBtYW5pZmllc3RhKG1vcykgcXVlIGxhIG9icmEgb2JqZXRvIGRlIGxhIHByZXNlbnRlIGF1dG9yaXphY2nDs24gZXMgb3JpZ2luYWwsIGRlIGV4Y2x1c2l2YSBhdXRvcsOtYSwgeSBzZSByZWFsaXrDsyBzaW4gdmlvbGFyIG8gdXN1cnBhciBkZXJlY2hvcyBkZSBhdXRvciBkZSB0ZXJjZXJvczsgZGUgdGFsIHN1ZXJ0ZSwgZW4gY2FzbyBkZSBwcmVzZW50YXJzZSBjdWFscXVpZXIgcmVjbGFtYWNpw7NuIG8gYWNjacOzbiBwb3IgcGFydGUgZGUgdW4gdGVyY2VybyBlbiBjdWFudG8gYSBsb3MgZGVyZWNob3MgZGUgYXV0b3Igc29icmUgbGEgb2JyYSwgZWwgKGxvcykgZXN0dWRpYW50ZShzKSDigJMgYXV0b3IoZXMpIGFzdW1pcsOhKG4pIHRvZGEgbGEgcmVzcG9uc2FiaWxpZGFkIHkgc2FsZHLDoShuKSBlbiBkZWZlbnNhIGRlIGxvcyBkZXJlY2hvcyBhcXXDrSBhdXRvcml6YWRvcy4gUGFyYSB0b2RvcyBsb3MgZWZlY3RvcywgTEEgVU5JVkVSU0lEQUQgYWN0w7phIGNvbW8gdW4gdGVyY2VybyBkZSBidWVuYSBmZS4KCgptKQlFbCAobG9zKSBhdXRvcihlcykgbWFuaWZpZXN0YShtb3MpIHF1ZSBjb25vemNvKGNlbW9zKSBsYSBhdXRvbm9tw61hIHkgbG9zIGRlcmVjaG9zLCBxdWUgcG9zZWUobW9zKSBzb2JyZSBsYSBvYnJhIHksIGNvbW8gdGFsLCBlcyAoc29tb3MpIHJlc3BvbnNhYmxlKHMpIGRlbCBhbGNhbmNlIGp1csOtZGljbyB5IGxlZ2FsLCBkZSBlc2NvZ2VyIGxhIG9wY2nDs24gZGUgbGEgcHVibGljYWNpw7NuIG8gZGUgcmVzdHJpY2Npw7NuIGRlIGxhIHB1YmxpY2FjacOzbiBkZWwgZG9jdW1lbnRvIHJlZ2lzdHJhZG8gZW4gZWwgUklVRC4KCgoKCgoKU0kgRUwgRE9DVU1FTlRPIFNFIEJBU0EgRU4gVU4gVFJBQkFKTyBRVUUgSEEgU0lETyBQQVRST0NJTkFETyBPIEFQT1lBRE8gUE9SIFVOQSBBR0VOQ0lBIE8gVU5BIE9SR0FOSVpBQ0nDk04sIENPTiBFWENFUENJw5NOIERFIExBIFVOSVZFUlNJREFEIERJU1RSSVRBTCBGUkFOQ0lTQ08gSk9TRSBERSBDQUxEQVMsIExPUyBBVVRPUkVTIEdBUkFOVElaQU4gUVVFIFNFIEhBIENVTVBMSURPIENPTiBMT1MKREVSRUNIT1MgWSBPQkxJR0FDSU9ORVMgUkVRVUVSSURPUyBQT1IgRUwgUkVTUEVDVElWTyBDT05UUkFUTyBPIEFDVUVSRE8uCgoKCgoKCgoKCgoKCgoKCgoKCgoKCkVuIGNvbnN0YW5jaWEgZGUgbG8gYW50ZXJpb3IsIGZpcm1vKGFtb3MpIGVsIHByZXNlbnRlIGRvY3VtZW50bywgZW4gbGEgY2l1ZGFkIGRlIEJvZ290w6EsIEQuQy4sIGEgbG9zCgoKRklSTUEgREUgTE9TIFRJVFVMQVJFUyBERSBERVJFQ0hPUyBERSBBVVRPUgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fICAgQy5DLiBOby4gX19fX19fX19fX19fX19fX19fCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18gICBDLkMuIE5vLiBfX19fX19fX19fX19fX19fX18KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyAgIEMuQy4gTm8uIF9fX19fX19fX19fX19fX19fXwoKCgpDb3JyZW8gRWxlY3Ryw7NuaWNvIEluc3RpdHVjaW9uYWwgZGVsIChkZSBsb3MpIEF1dG9yKGVzKToKCkF1dG9yCSAgICAgIENvcnJlbyBFbGVjdHLDs25pY28KCjEKCjIKCjMKCk5vbWJyZSBkZSBEaXJlY3RvcihlcykgZGUgR3JhZG86CgoxCgoyCgozCgpOb21icmUgRmFjdWx0YWQgeSBQcm95ZWN0byBDdXJyaWN1bGFyOgoKRmFjdWx0YWQJUHJveWVjdG8gQ3VycmljdWxhcgoKCgoKCgoKCk5vdGE6IEVuIGNhc28gcXVlIG5vIGVzdMOpIGRlIGFjdWVyZG8gY29uIGxhcyBjb25kaWNpb25lcyBkZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSwgeSBtYW5pZmllc3RlIGFsZ3VuYSByZXN0cmljY2nDs24gc29icmUgbGEgb2JyYSwganVzdGlmaXF1ZSBsb3MgbW90aXZvcyBwb3IgbG9zIGN1YWxlcyBlbCBkb2N1bWVudG8geSBzdXMgYW5leG9zIG5vIHB1ZWRlbiBzZXIgcHVibGljYWRvcyBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIFJJVUQuCgoKU2kgcmVxdWllcmUgbcOhcyBlc3BhY2lvLCBwdWVkZSBhbmV4YXIgdW5hIGNvcGlhIHNpbWlsYXIgYSBlc3RhIGhvamEK