Análisis de los patrones de diseño disponibles para la implementación de aplicaciones en Xamarin

Este artículo explora cómo Xamarin simplifica el desarrollo de aplicaciones móviles multiplataforma y destaca la importancia de los patrones de diseño para abordar los desafíos modernos del software. A medida que crece la demanda de aplicaciones adaptables y de alto rendimiento, Xamarin permite a lo...

Full description

Autores:
Gómez Bello, Edwin Norbey
Tipo de recurso:
Trabajo de grado de pregrado
Fecha de publicación:
2025
Institución:
Universidad Distrital Francisco José de Caldas
Repositorio:
RIUD: repositorio U. Distrital
Idioma:
spa
OAI Identifier:
oai:repository.udistrital.edu.co:11349/93387
Acceso en línea:
http://hdl.handle.net/11349/93387
Palabra clave:
Comando
Patrón de diseño
Inyección de dependencias (DI)
DVP
Alta cohesión
Inversión de Control (IoC)
Ingeniería Telemática -- Tesis y Disertaciones Académicas
Sistemas de transmisión de datos
Telemática -- Tesis y disertaciones académicas.
Redes de información
Command
Design Pattern
Dependency injection (DI)
DVP
High Cohesion
Inversion of Control (IoC)
Rights
License
Abierto (Texto Completo)
id UDISTRITA2_1ad0329abb6fa91318c42935e197f88c
oai_identifier_str oai:repository.udistrital.edu.co:11349/93387
network_acronym_str UDISTRITA2
network_name_str RIUD: repositorio U. Distrital
repository_id_str
dc.title.none.fl_str_mv Análisis de los patrones de diseño disponibles para la implementación de aplicaciones en Xamarin
dc.title.titleenglish.none.fl_str_mv Analysis of design patterns available for the implementation of applicationsin Xamarin
title Análisis de los patrones de diseño disponibles para la implementación de aplicaciones en Xamarin
spellingShingle Análisis de los patrones de diseño disponibles para la implementación de aplicaciones en Xamarin
Comando
Patrón de diseño
Inyección de dependencias (DI)
DVP
Alta cohesión
Inversión de Control (IoC)
Ingeniería Telemática -- Tesis y Disertaciones Académicas
Sistemas de transmisión de datos
Telemática -- Tesis y disertaciones académicas.
Redes de información
Command
Design Pattern
Dependency injection (DI)
DVP
High Cohesion
Inversion of Control (IoC)
title_short Análisis de los patrones de diseño disponibles para la implementación de aplicaciones en Xamarin
title_full Análisis de los patrones de diseño disponibles para la implementación de aplicaciones en Xamarin
title_fullStr Análisis de los patrones de diseño disponibles para la implementación de aplicaciones en Xamarin
title_full_unstemmed Análisis de los patrones de diseño disponibles para la implementación de aplicaciones en Xamarin
title_sort Análisis de los patrones de diseño disponibles para la implementación de aplicaciones en Xamarin
dc.creator.fl_str_mv Gómez Bello, Edwin Norbey
dc.contributor.advisor.none.fl_str_mv Leguizamón Páez , Miguel Ángel
dc.contributor.author.none.fl_str_mv Gómez Bello, Edwin Norbey
dc.contributor.orcid.none.fl_str_mv Miguel Angel, Leguizamón Páez [0000-0003-0457-0126]
dc.subject.none.fl_str_mv Comando
Patrón de diseño
Inyección de dependencias (DI)
DVP
Alta cohesión
Inversión de Control (IoC)
topic Comando
Patrón de diseño
Inyección de dependencias (DI)
DVP
Alta cohesión
Inversión de Control (IoC)
Ingeniería Telemática -- Tesis y Disertaciones Académicas
Sistemas de transmisión de datos
Telemática -- Tesis y disertaciones académicas.
Redes de información
Command
Design Pattern
Dependency injection (DI)
DVP
High Cohesion
Inversion of Control (IoC)
dc.subject.lemb.none.fl_str_mv Ingeniería Telemática -- Tesis y Disertaciones Académicas
Sistemas de transmisión de datos
Telemática -- Tesis y disertaciones académicas.
Redes de información
dc.subject.keyword.none.fl_str_mv Command
Design Pattern
Dependency injection (DI)
DVP
High Cohesion
Inversion of Control (IoC)
description Este artículo explora cómo Xamarin simplifica el desarrollo de aplicaciones móviles multiplataforma y destaca la importancia de los patrones de diseño para abordar los desafíos modernos del software. A medida que crece la demanda de aplicaciones adaptables y de alto rendimiento, Xamarin permite a los desarrolladores crear soluciones fluidas para iOS, Android y Windows utilizando C#. El texto presenta patrones de diseño clave como MVVM, Singleton e Inyección de Dependencias, mostrando cómo estos reducen la complejidad, mejoran la reutilización del código y facilitan el mantenimiento. También aborda la transición a .NET MAUI, el marco de próxima generación basado en Xamarin, que ofrece un mayor rendimiento y flexibilidad. Un ejemplo práctico demuestra la aplicación del patrón MVVM en una aplicación de lista de tareas, ilustrando cómo los patrones de diseño resuelven problemas del mundo real. Al centrarse en la gestión eficiente de recursos y el diseño escalable, este artículo proporciona ideas prácticas para superar los desafíos del desarrollo multiplataforma, garantizando aplicaciones sólidas y mantenibles.
publishDate 2025
dc.date.accessioned.none.fl_str_mv 2025-03-07T15:28:32Z
dc.date.available.none.fl_str_mv 2025-03-07T15:28:32Z
dc.date.created.none.fl_str_mv 2025-02-17
dc.type.none.fl_str_mv bachelorThesis
dc.type.degree.none.fl_str_mv Monografía
dc.type.driver.none.fl_str_mv info:eu-repo/semantics/bachelorThesis
dc.type.coar.none.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/93387
url http://hdl.handle.net/11349/93387
dc.language.iso.none.fl_str_mv spa
language spa
dc.relation.references.none.fl_str_mv Davidbritch. (n.d.-b). .NET Multi-platform App UI Documentation - .NET MAUI. Microsoft Learn. https://learn.microsoft.com/en-us/dotnet/maui/?view=net-maui-9.0
García Peñarlvo, F. J. (s.f.). Patrones De Alexander a la Tecnología de Objetos. *Grial Repository*, (p. 4). Retrieved from https://www.researchgate.net/publication/236950316_Patrones_De_Alexander_a_la_Tecnologia_de_Objetos
Martínez Canelo, M. (2020, junio). ¿Qué son los patrones de diseño de software? *Profile*. Retrieved from https://profile.es/blog/patrones-de-diseno-de-software/
Hermes, D. (2015). *Xamarin Mobile Application Development*. Apress. Retrieved from https://link.springer.com/book/10.1007/978-1-4842-0980-6
Delía, L. N., Galdámez, N., Corbalán, L. C., Thomas, P. J., & Pesado, P. M. (2015). Un análisis comparativo de rendimiento en aplicaciones móviles multiplataforma. *XXI Congreso Argentino de Ciencias de la Computación*, junio 2015. Retrieved from http://sedici.unlp.edu.ar/handle/10915/50413
Voge, P. (2018, agosto). The 5 Essential Patterns in Xamarin Applications. *Visual Studio Magazine*. Retrieved from https://visualstudiomagazine.com/articles/2018/08/02/xamarin-design-patterns.aspx
Delía, L. N., Galdámez, N., Corbalán, L. C., Thomas, P. J., & Pesado, P. M. (2014, octubre). Análisis experimental de desarrollo de aplicaciones móviles multiplataforma. *XX Congreso Argentino de Ciencias de la Computación*. Retrieved from http://sedici.unlp.edu.ar/handle/10915/42355
Hermes, D. (2015). Xamarin Mobile Application Mobile: Cross-platform C# and Xamarin Forms Fundamentals. New York: Apress Media LLC. Retrieved from https://books.google.es/books?hl=es&id=QocnCgAAQBAJ
Microsoft. (s.f.). What is Xamarin.Forms? Retrieved May 4, 2023, from https://docs.microsoft.com/enus/xamarin/get-started/what-is-xamarin-forms
Campo, G. (2009). Patrones de Diseño, Refactorización y Antipatrones. Ventajas y Desventajas de su Utilización en el Software Orientado a Objetos. *Publicaciones Científicas UCASAL – Cuadernos de la Facultad*, No. 4, 103–115. Retrieved from http://revistas.ucasal.edu.ar/index.php/CI/article/view/178/155
Arcos Medina, G., Menéndez, J., & Vallejo, J. (2018, enero). Comparative Study of Performance and Productivity of MVC and MVVM design patterns. *KnE Engineering*, Vol. 3, No. 1. Retrieved from https://www.knepublishing.com/index.php/KnE-Engineering/article/view/1498
Mathews, E. (2015, marzo). Design of a Flow Visualisation Framework. *Computers*, Vol. 4, No. 1. Retrieved from https://www.mdpi.com/2073-431X/4/1/24
Murliace. (s.f.). A Basic Introduction On Service Locator Pattern. *CodeProject*. Retrieved from https://www.codeproject.com/Articles/18464/A-Basic-Introduction-On-Service-Locator-Pattern
Johnson, P. (2018). Using MVVM Light with your Xamarin Apps. Merseyside, United Kingdom. Retrieved from https://books.google.com.co/books?id=fFxCDwAAQBAJ
Debrawer, L. (2012). *Patrones de diseño para C#: Los 23 modelos de diseño*. Barcelona: Ediciones ENI. Retrieved from https://books.google.es/books?hl=es&id=B82QLbKSsHYC
Fernandez, A. (2017, noviembre). Patrón MVP En IOS. *Apiumhub*. Retrieved from https://apiumhub.com/es/tech-blog-barcelona/patron-mvp-ios/
Megali, T. (2016, abril). How to Adopt Model View Presenter on Android. *Envato Tuts+*. Retrieved from https://code.tutsplus.com/tutorials/how-to-adopt-model-view-presenter-on-android--cms-26206
dc.rights.coar.fl_str_mv http://purl.org/coar/access_right/c_abf2
dc.rights.acceso.none.fl_str_mv Abierto (Texto Completo)
rights_invalid_str_mv Abierto (Texto Completo)
http://purl.org/coar/access_right/c_abf2
dc.format.mimetype.none.fl_str_mv pdf
dc.publisher.none.fl_str_mv Universidad Distrital Francisco José de Caldas
publisher.none.fl_str_mv Universidad Distrital Francisco José de Caldas
institution Universidad Distrital Francisco José de Caldas
bitstream.url.fl_str_mv https://repository.udistrital.edu.co/bitstreams/74af0348-0525-40b6-a76d-2020da69adec/download
https://repository.udistrital.edu.co/bitstreams/58cc70e0-005a-4554-bf62-d820b963dada/download
https://repository.udistrital.edu.co/bitstreams/4967cfc3-2a35-48a7-a105-ac3a14f4906d/download
https://repository.udistrital.edu.co/bitstreams/42929b0b-8012-4661-92c5-0c7c8051550f/download
https://repository.udistrital.edu.co/bitstreams/8e002636-5e64-4fcd-972d-f1331c416e75/download
bitstream.checksum.fl_str_mv 997daf6c648c962d566d7b082dac908d
402a75b6cf0a706bcb36fc2ea49583a0
c7589b83471c8df23b8094d49803efca
0a8ab71b1db82de5d199858a33ffec97
a204a32b686f5f7a945d83505a401343
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositorio Universidad Distrital
repository.mail.fl_str_mv repositorio@udistrital.edu.co
_version_ 1828164863450415104
spelling Leguizamón Páez , Miguel ÁngelGómez Bello, Edwin NorbeyMiguel Angel, Leguizamón Páez [0000-0003-0457-0126]2025-03-07T15:28:32Z2025-03-07T15:28:32Z2025-02-17http://hdl.handle.net/11349/93387Este artículo explora cómo Xamarin simplifica el desarrollo de aplicaciones móviles multiplataforma y destaca la importancia de los patrones de diseño para abordar los desafíos modernos del software. A medida que crece la demanda de aplicaciones adaptables y de alto rendimiento, Xamarin permite a los desarrolladores crear soluciones fluidas para iOS, Android y Windows utilizando C#. El texto presenta patrones de diseño clave como MVVM, Singleton e Inyección de Dependencias, mostrando cómo estos reducen la complejidad, mejoran la reutilización del código y facilitan el mantenimiento. También aborda la transición a .NET MAUI, el marco de próxima generación basado en Xamarin, que ofrece un mayor rendimiento y flexibilidad. Un ejemplo práctico demuestra la aplicación del patrón MVVM en una aplicación de lista de tareas, ilustrando cómo los patrones de diseño resuelven problemas del mundo real. Al centrarse en la gestión eficiente de recursos y el diseño escalable, este artículo proporciona ideas prácticas para superar los desafíos del desarrollo multiplataforma, garantizando aplicaciones sólidas y mantenibles.This article explores how Xamarin simplifies cross-platform mobile app development and highlights the importance of design patterns in tackling modern software challenges. As demand grows for adaptable, high-performing apps, Xamarin empowers developers to create seamless solutions for iOS, Android, and Windows using C#. The text introduces key design patterns like MVVM, Singleton, and Dependency Injection, showing how they reduce complexity, boost code reuse, and improve maintainability. It also discusses the transition to .NET MAUI, the next-generation framework built on Xamarin’s foundation, offering enhanced performance and flexibility. A practical example demonstrates the MVVM pattern in a task list app, illustrating how design patterns solve real-world problems. By focusing on efficient resource management and scalable design, this article provides actionable insights to overcome challenges in cross-platform development, ensuring robust and maintainable applications.pdfspaUniversidad Distrital Francisco José de CaldasComandoPatrón de diseñoInyección de dependencias (DI)DVPAlta cohesiónInversión de Control (IoC)Ingeniería Telemática -- Tesis y Disertaciones AcadémicasSistemas de transmisión de datosTelemática -- Tesis y disertaciones académicas.Redes de informaciónCommandDesign PatternDependency injection (DI)DVPHigh CohesionInversion of Control (IoC)Análisis de los patrones de diseño disponibles para la implementación de aplicaciones en XamarinAnalysis of design patterns available for the implementation of applicationsin XamarinbachelorThesisMonografíainfo:eu-repo/semantics/bachelorThesishttp://purl.org/coar/resource_type/c_7a1fAbierto (Texto Completo)http://purl.org/coar/access_right/c_abf2Davidbritch. (n.d.-b). .NET Multi-platform App UI Documentation - .NET MAUI. Microsoft Learn. https://learn.microsoft.com/en-us/dotnet/maui/?view=net-maui-9.0García Peñarlvo, F. J. (s.f.). Patrones De Alexander a la Tecnología de Objetos. *Grial Repository*, (p. 4). Retrieved from https://www.researchgate.net/publication/236950316_Patrones_De_Alexander_a_la_Tecnologia_de_ObjetosMartínez Canelo, M. (2020, junio). ¿Qué son los patrones de diseño de software? *Profile*. Retrieved from https://profile.es/blog/patrones-de-diseno-de-software/Hermes, D. (2015). *Xamarin Mobile Application Development*. Apress. Retrieved from https://link.springer.com/book/10.1007/978-1-4842-0980-6Delía, L. N., Galdámez, N., Corbalán, L. C., Thomas, P. J., & Pesado, P. M. (2015). Un análisis comparativo de rendimiento en aplicaciones móviles multiplataforma. *XXI Congreso Argentino de Ciencias de la Computación*, junio 2015. Retrieved from http://sedici.unlp.edu.ar/handle/10915/50413Voge, P. (2018, agosto). The 5 Essential Patterns in Xamarin Applications. *Visual Studio Magazine*. Retrieved from https://visualstudiomagazine.com/articles/2018/08/02/xamarin-design-patterns.aspxDelía, L. N., Galdámez, N., Corbalán, L. C., Thomas, P. J., & Pesado, P. M. (2014, octubre). Análisis experimental de desarrollo de aplicaciones móviles multiplataforma. *XX Congreso Argentino de Ciencias de la Computación*. Retrieved from http://sedici.unlp.edu.ar/handle/10915/42355Hermes, D. (2015). Xamarin Mobile Application Mobile: Cross-platform C# and Xamarin Forms Fundamentals. New York: Apress Media LLC. Retrieved from https://books.google.es/books?hl=es&id=QocnCgAAQBAJMicrosoft. (s.f.). What is Xamarin.Forms? Retrieved May 4, 2023, from https://docs.microsoft.com/enus/xamarin/get-started/what-is-xamarin-formsCampo, G. (2009). Patrones de Diseño, Refactorización y Antipatrones. Ventajas y Desventajas de su Utilización en el Software Orientado a Objetos. *Publicaciones Científicas UCASAL – Cuadernos de la Facultad*, No. 4, 103–115. Retrieved from http://revistas.ucasal.edu.ar/index.php/CI/article/view/178/155Arcos Medina, G., Menéndez, J., & Vallejo, J. (2018, enero). Comparative Study of Performance and Productivity of MVC and MVVM design patterns. *KnE Engineering*, Vol. 3, No. 1. Retrieved from https://www.knepublishing.com/index.php/KnE-Engineering/article/view/1498Mathews, E. (2015, marzo). Design of a Flow Visualisation Framework. *Computers*, Vol. 4, No. 1. Retrieved from https://www.mdpi.com/2073-431X/4/1/24Murliace. (s.f.). A Basic Introduction On Service Locator Pattern. *CodeProject*. Retrieved from https://www.codeproject.com/Articles/18464/A-Basic-Introduction-On-Service-Locator-PatternJohnson, P. (2018). Using MVVM Light with your Xamarin Apps. Merseyside, United Kingdom. Retrieved from https://books.google.com.co/books?id=fFxCDwAAQBAJDebrawer, L. (2012). *Patrones de diseño para C#: Los 23 modelos de diseño*. Barcelona: Ediciones ENI. Retrieved from https://books.google.es/books?hl=es&id=B82QLbKSsHYCFernandez, A. (2017, noviembre). Patrón MVP En IOS. *Apiumhub*. Retrieved from https://apiumhub.com/es/tech-blog-barcelona/patron-mvp-ios/Megali, T. (2016, abril). How to Adopt Model View Presenter on Android. *Envato Tuts+*. Retrieved from https://code.tutsplus.com/tutorials/how-to-adopt-model-view-presenter-on-android--cms-26206LICENSElicense.txtlicense.txttext/plain; charset=utf-87167https://repository.udistrital.edu.co/bitstreams/74af0348-0525-40b6-a76d-2020da69adec/download997daf6c648c962d566d7b082dac908dMD51ORIGINALGómezBelloEdwinNorbey2025GómezBelloEdwinNorbey2025Trabajo de gradoapplication/pdf1049151https://repository.udistrital.edu.co/bitstreams/58cc70e0-005a-4554-bf62-d820b963dada/download402a75b6cf0a706bcb36fc2ea49583a0MD51Licencia de uso y publicacion.pdfLicencia de uso y publicacion.pdfLicencia de uso y publicaciónapplication/pdf228433https://repository.udistrital.edu.co/bitstreams/4967cfc3-2a35-48a7-a105-ac3a14f4906d/downloadc7589b83471c8df23b8094d49803efcaMD52THUMBNAILGómezBelloEdwinNorbey2025.jpgGómezBelloEdwinNorbey2025.jpgIM Thumbnailimage/jpeg7995https://repository.udistrital.edu.co/bitstreams/42929b0b-8012-4661-92c5-0c7c8051550f/download0a8ab71b1db82de5d199858a33ffec97MD53Licencia de uso y publicacion.pdf.jpgLicencia de uso y publicacion.pdf.jpgIM Thumbnailimage/jpeg9513https://repository.udistrital.edu.co/bitstreams/8e002636-5e64-4fcd-972d-f1331c416e75/downloada204a32b686f5f7a945d83505a401343MD5411349/93387oai:repository.udistrital.edu.co:11349/933872025-03-13 10:25:39.805open.accesshttps://repository.udistrital.edu.coRepositorio Universidad Distritalrepositorio@udistrital.edu.coTElDRU5DSUEgWSBBVVRPUklaQUNJw5NOIEVTUEVDSUFMIFBBUkEgUFVCTElDQVIgWSBQRVJNSVRJUiBMQSBDT05TVUxUQSBZIFVTTyBERSBDT05URU5JRE9TIEVOIEVMIFJFUE9TSVRPUklPIElOU1RJVFVDSU9OQUwgREUgTEEgVU5JVkVSU0lEQUQgRElTVFJJVEFMCgpUw6lybWlub3MgeSBjb25kaWNpb25lcyBkZSB1c28gcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyAoUklVRCkKCkNvbW8gdGl0dWxhcihlcykgZGVsKG9zKSBkZXJlY2hvKHMpIGRlIGF1dG9yLCBjb25maWVybyAoZXJpbW9zKSBhIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIChlbiBhZGVsYW50ZSwgTEEgVU5JVkVSU0lEQUQpIHVuYSBsaWNlbmNpYSBwYXJhIHVzbyBubyBleGNsdXNpdmEsIGxpbWl0YWRhIHkgZ3JhdHVpdGEgc29icmUgbGEgb2JyYSBxdWUgaW50ZWdyYXLDoSBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIChlbiBhZGVsYW50ZSwgUklVRCksIGRlIGFjdWVyZG8gYSBsYXMgc2lndWllbnRlcyByZWdsYXMsIGxhcyBjdWFsZXMgZGVjbGFybyAoYW1vcykgY29ub2NlciB5IGFjZXB0YXI6CgphKQlFc3RhcsOhIHZpZ2VudGUgYSBwYXJ0aXIgZGUgbGEgZmVjaGEgZW4gcXVlIHNlIGluY2x1eWEgZW4gZWwgUklVRCB5IGhhc3RhIHBvciB1biBwbGF6byBkZSBkaWV6ICgxMCkgQcOxb3MsIHByb3Jyb2dhYmxlIGluZGVmaW5pZGFtZW50ZSBwb3IgZWwgdGllbXBvIHF1ZSBkdXJlIGVsIGRlcmVjaG8gUGF0cmltb25pYWwgZGVsIGF1dG9yOyBsYSBjdWFsIHBvZHLDoSBkYXJzZSBwb3IgdGVybWluYWRhIHByZXZpYSBzb2xpY2l0dWQgYSBMQSBVTklWRVJTSURBRCBwb3IgZXNjcml0byBjb24gdW5hIGFudGVsYWNpw7NuIGRlIGRvcyAoMikgbWVzZXMgYW50ZXMgZGVsIHZlbmNpbWllbnRvIGRlbCBwbGF6byBpbmljaWFsIG8gZWwgZGUgc3UocykgcHLDs3Jyb2dhKHMpLgoKYikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIHB1YmxpY2FyIGxhIG9icmEgZW4gbGFzIGRpc3RpbnRhcyB2ZXJzaW9uZXMgcmVxdWVyaWRhcyBwb3IgZWwgUklVRCAoZGlnaXRhbCwgaW1wcmVzbywgZWxlY3Ryw7NuaWNvIHUgb3RybyBtZWRpbyBjb25vY2lkbyBvIHBvciBjb25vY2VyKSBMQSBVTklWRVJTSURBRCBubyBzZXLDoSByZXNwb25zYWJsZSBlbiBlbCBldmVudG8gcXVlIGVsIGRvY3VtZW50byBhcGFyZXpjYSByZWZlcmVuY2lhZG8gZW4gbW90b3JlcyBkZSBiw7pzcXVlZGEgbyByZXBvc2l0b3Jpb3MgZGlmZXJlbnRlcyBhbCBSSVVELCB1bmEgdmV6IGVsKG9zKSBhdXRvcihlcykgc29saWNpdGVuIHN1IGVsaW1pbmFjacOzbiBkZWwgUklVRCwgZGFkbyBxdWUgbGEgbWlzbWEgc2Vyw6EgcHVibGljYWRhIGVuIEludGVybmV0LgoKYykJTGEgYXV0b3JpemFjacOzbiBzZSBoYWNlIGEgdMOtdHVsbyBncmF0dWl0bywgcG9yIGxvIHRhbnRvLCBsb3MgYXV0b3JlcyByZW51bmNpYW4gYSByZWNpYmlyIGJlbmVmaWNpbyBhbGd1bm8gcG9yIGxhIHB1YmxpY2FjacOzbiwgZGlzdHJpYnVjacOzbiwgY29tdW5pY2FjacOzbiBww7pibGljYSB5IGN1YWxxdWllciBvdHJvIHVzbyBxdWUgc2UgaGFnYSBlbiBsb3MgdMOpcm1pbm9zIGRlIGxhIHByZXNlbnRlIGxpY2VuY2lhIHkgZGUgbGEgbGljZW5jaWEgZGUgdXNvIGNvbiBxdWUgc2UgcHVibGljYSAoQ3JlYXRpdmUgQ29tbW9ucykuCgpkKQlMb3MgY29udGVuaWRvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQgc29uIG9icmEocykgb3JpZ2luYWwoZXMpIHNvYnJlIGxhIGN1YWwoZXMpIGVsKG9zKSBhdXRvcihlcykgY29tbyB0aXR1bGFyZXMgZGUgbG9zIGRlcmVjaG9zIGRlIGF1dG9yLCBhc3VtZW4gdG90YWwgcmVzcG9uc2FiaWxpZGFkIHBvciBlbCBjb250ZW5pZG8gZGUgc3Ugb2JyYSBhbnRlIExBIFVOSVZFUlNJREFEIHkgYW50ZSB0ZXJjZXJvcy4gRW4gdG9kbyBjYXNvIExBIFVOSVZFUlNJREFEIHNlIGNvbXByb21ldGUgYSBpbmRpY2FyIHNpZW1wcmUgbGEgYXV0b3LDrWEgaW5jbHV5ZW5kbyBlbCBub21icmUgZGVsIGF1dG9yIHkgbGEgZmVjaGEgZGUgcHVibGljYWNpw7NuLgoKZSkJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGluY2x1aXIgbGEgb2JyYSBlbiBsb3Mgw61uZGljZXMgeSBidXNjYWRvcmVzIHF1ZSBlc3RpbWVuIG5lY2VzYXJpb3MgcGFyYSBtYXhpbWl6YXIgbGEgdmlzaWJpbGlkYWQgZWwgdXNvIHkgZWwgaW1wYWN0byBkZSBsYSBwcm9kdWNjacOzbiBjaWVudMOtZmljYSwgYXJ0w61zdGljYSB5IGFjYWTDqW1pY2EgZW4gbGEgY29tdW5pZGFkIGxvY2FsLCBuYWNpb25hbCBvIGludGVybmFjaW9uYWwuCgoKZikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGNvbnZlcnRpciBsYSBvYnJhIGEgY3VhbHF1aWVyIG1lZGlvIG8gZm9ybWF0byBjb24gZWwgZmluIGRlIHN1IHByZXNlcnZhY2nDs24gZW4gZWwgdGllbXBvIHF1ZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSB5IGxhIGRlIHN1cyBwcsOzcnJvZ2FzLgoKCkNvbiBiYXNlIGVuIGxvIGFudGVyaW9yIGF1dG9yaXpvKGFtb3MpLCBhIGZhdm9yIGRlbCBSSVVEIHkgZGUgc3VzIHVzdWFyaW9zLCBsYSBwdWJsaWNhY2nDs24geSBjb25zdWx0YSBkZSBsYSBzaWd1aWVudGUgb2JyYToKClRpdHVsbwoKQXV0b3IgICAgICAgQXBlbGxpZG9zICAgICAgICAgTm9tYnJlcwoKMQoKMgoKMwoKCmcpCUF1dG9yaXpvKGFtb3MpLCBxdWUgbGEgb2JyYSBzZWEgcHVlc3RhIGEgZGlzcG9zaWNpw7NuIGRlbCBww7pibGljbyBlbiBsb3MgdMOpcm1pbm9zIGVzdGFibGVjaWRvcyBlbiBsb3MgbGl0ZXJhbGVzIGFudGVyaW9yZXMsIGJham8gbG9zIGzDrW1pdGVzIGRlZmluaWRvcyBwb3IgTEEgVU5JVkVSU0lEQUQsIGVuIGxhcyDigJxDb25kaWNpb25lcyBkZSB1c28gZGUgZXN0cmljdG8gY3VtcGxpbWllbnRv4oCdIGRlIGxvcyByZWN1cnNvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQsIGN1eW8gdGV4dG8gY29tcGxldG8gc2UgcHVlZGUgY29uc3VsdGFyIGVuIGh0dHA6Ly9yZXBvc2l0b3J5LnVkaXN0cml0YWwuZWR1LmNvLwoKaCkJQ29ub3pjbyhjZW1vcykgeSBhY2VwdG8oYW1vcykgcXVlIG90b3JnbyhhbW9zKSB1bmEgbGljZW5jaWEgZXNwZWNpYWwgcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcywgbGljZW5jaWEgICBkZSBsYSBjdWFsIGhlIChoZW1vcykgb2J0ZW5pZG8gdW5hIGNvcGlhLgoKaSkJTWFuaWZpZXN0byhhbW9zKSBtaSAobnVlc3RybykgdG90YWwgYWN1ZXJkbyBjb24gbGFzIGNvbmRpY2lvbmVzIGRlIHVzbyB5IHB1YmxpY2FjacOzbiBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIHF1ZSBzZSBkZXNjcmliZW4geSBleHBsaWNhbiBlbiBlbCBwcmVzZW50ZSBkb2N1bWVudG8uCgpqKQlDb25vemNvKGNlbW9zKSBsYSBub3JtYXRpdmlkYWQgaW50ZXJuYSBkZSAgTEEgVU5JVkVSU0lEQUQ7IGVuIGNvbmNyZXRvLCBlbCBBY3VlcmRvIDAwNCBkZSAyMDEyIGRlbCBDU1UsIEFjdWVyZG8gMDIzIGRlIDIwMTIgZGVsIENTVSBzb2JyZSBQb2zDrXRpY2EgRWRpdG9yaWFsLCBBY3VlcmRvIDAyNiAgZGVsIDMxIGRlIGp1bGlvIGRlIDIwMTIgc29icmUgZWwgcHJvY2VkaW1pZW50byBwYXJhIGxhIHB1YmxpY2FjacOzbiBkZSB0ZXNpcyBkZSBwb3N0Z3JhZG8gZGUgbG9zIGVzdHVkaWFudGVzIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzLCAgQWN1ZXJkbyAwMzAgZGVsIDAzIGRlIGRpY2llbWJyZSBkZSAyMDEzIHBvciBtZWRpbyBkZWwgY3VhbCBzZSBjcmVhIGVsIFJlcG9zaXRvcmlvIEluc3RpdHVjaW9uYWwgZGUgbGEgVW5pdmVyc2lkYWQgRGlzdHJpdGFsIEZyYW5jaXNjbyBKb3PDqSBkZSBDYWxkYXMsIEFjdWVyZG8gMDM4IGRlIDIwMTUgMjAxNSDigJxwb3IgZWwgY3VhbCBzZSBtb2RpZmljYSBlbCBBY3VlcmRvIDAzMSBkZSAyMDE0IGRlIDIwMTQgcXVlIHJlZ2xhbWVudGEgZWwgdHJhYmFqbyBkZSBncmFkbyBwYXJhIGxvcyBlc3R1ZGlhbnRlcyBkZSBwcmVncmFkbyBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyB5IHNlIGRpY3RhbiBvdHJhcyBkaXJlY3RyaWNlc+KAnSB5IGxhcyBkZW3DoXMgbm9ybWFzIGNvbmNvcmRhbnRlIHkgY29tcGxlbWVudGFyaWFzIHF1ZSByaWdlbiBhbCByZXNwZWN0bywgZXNwZWNpYWxtZW50ZSBsYSBsZXkgMjMgZGUgMTk4MiwgbGEgbGV5IDQ0IGRlIDE5OTMgeSBsYSBkZWNpc2nDs24gQW5kaW5hIDM1MSBkZSAxOTkzLiBFc3RvcyBkb2N1bWVudG9zIHBvZHLDoW4gc2VyIGNvbnN1bHRhZG9zIHkgZGVzY2FyZ2Fkb3MgZW4gZWwgcG9ydGFsIHdlYiBkZSBsYSBiaWJsaW90ZWNhIGh0dHA6Ly9zaXN0ZW1hZGViaWJsaW90ZWNhcy51ZGlzdHJpdGFsLmVkdS5jby8KCmspCUFjZXB0byhhbW9zKSBxdWUgTEEgVU5JVkVSU0lEQUQgbm8gc2UgcmVzcG9uc2FiaWxpemEgcG9yIGxhcyBpbmZyYWNjaW9uZXMgYSBsYSBwcm9waWVkYWQgaW50ZWxlY3R1YWwgbyBEZXJlY2hvcyBkZSBBdXRvciBjYXVzYWRhcyBwb3IgbG9zIHRpdHVsYXJlcyBkZSBsYSBwcmVzZW50ZSBMaWNlbmNpYSB5IGRlY2xhcmFtb3MgcXVlIG1hbnRlbmRyw6kgKGVtb3MpIGluZGVtbmUgYSBMQSBVTklWRVJTSURBRCBwb3IgbGFzIHJlY2xhbWFjaW9uZXMgbGVnYWxlcyBkZSBjdWFscXVpZXIgdGlwbyBxdWUgbGxlZ2FyZW4gYSBwcmVzZW50YXJzZSBwb3IgdmlvbGFjacOzbiBkZSBkZXJlY2hvcyBhIGxhIHByb3BpZWRhZCBpbnRlbGVjdHVhbCBvIGRlIEF1dG9yIHJlbGFjaW9uYWRvcyBjb24gbG9zIGRvY3VtZW50b3MgcmVnaXN0cmFkb3MgZW4gZWwgUklVRC4KCmwpCUVsIChsb3MpIGF1dG9yKGVzKSBtYW5pZmllc3RhKG1vcykgcXVlIGxhIG9icmEgb2JqZXRvIGRlIGxhIHByZXNlbnRlIGF1dG9yaXphY2nDs24gZXMgb3JpZ2luYWwsIGRlIGV4Y2x1c2l2YSBhdXRvcsOtYSwgeSBzZSByZWFsaXrDsyBzaW4gdmlvbGFyIG8gdXN1cnBhciBkZXJlY2hvcyBkZSBhdXRvciBkZSB0ZXJjZXJvczsgZGUgdGFsIHN1ZXJ0ZSwgZW4gY2FzbyBkZSBwcmVzZW50YXJzZSBjdWFscXVpZXIgcmVjbGFtYWNpw7NuIG8gYWNjacOzbiBwb3IgcGFydGUgZGUgdW4gdGVyY2VybyBlbiBjdWFudG8gYSBsb3MgZGVyZWNob3MgZGUgYXV0b3Igc29icmUgbGEgb2JyYSwgZWwgKGxvcykgZXN0dWRpYW50ZShzKSDigJMgYXV0b3IoZXMpIGFzdW1pcsOhKG4pIHRvZGEgbGEgcmVzcG9uc2FiaWxpZGFkIHkgc2FsZHLDoShuKSBlbiBkZWZlbnNhIGRlIGxvcyBkZXJlY2hvcyBhcXXDrSBhdXRvcml6YWRvcy4gUGFyYSB0b2RvcyBsb3MgZWZlY3RvcywgTEEgVU5JVkVSU0lEQUQgYWN0w7phIGNvbW8gdW4gdGVyY2VybyBkZSBidWVuYSBmZS4KCgptKQlFbCAobG9zKSBhdXRvcihlcykgbWFuaWZpZXN0YShtb3MpIHF1ZSBjb25vemNvKGNlbW9zKSBsYSBhdXRvbm9tw61hIHkgbG9zIGRlcmVjaG9zLCBxdWUgcG9zZWUobW9zKSBzb2JyZSBsYSBvYnJhIHksIGNvbW8gdGFsLCBlcyAoc29tb3MpIHJlc3BvbnNhYmxlKHMpIGRlbCBhbGNhbmNlIGp1csOtZGljbyB5IGxlZ2FsLCBkZSBlc2NvZ2VyIGxhIG9wY2nDs24gZGUgbGEgcHVibGljYWNpw7NuIG8gZGUgcmVzdHJpY2Npw7NuIGRlIGxhIHB1YmxpY2FjacOzbiBkZWwgZG9jdW1lbnRvIHJlZ2lzdHJhZG8gZW4gZWwgUklVRC4KCgoKCgoKU0kgRUwgRE9DVU1FTlRPIFNFIEJBU0EgRU4gVU4gVFJBQkFKTyBRVUUgSEEgU0lETyBQQVRST0NJTkFETyBPIEFQT1lBRE8gUE9SIFVOQSBBR0VOQ0lBIE8gVU5BIE9SR0FOSVpBQ0nDk04sIENPTiBFWENFUENJw5NOIERFIExBIFVOSVZFUlNJREFEIERJU1RSSVRBTCBGUkFOQ0lTQ08gSk9TRSBERSBDQUxEQVMsIExPUyBBVVRPUkVTIEdBUkFOVElaQU4gUVVFIFNFIEhBIENVTVBMSURPIENPTiBMT1MKREVSRUNIT1MgWSBPQkxJR0FDSU9ORVMgUkVRVUVSSURPUyBQT1IgRUwgUkVTUEVDVElWTyBDT05UUkFUTyBPIEFDVUVSRE8uCgoKCgoKCgoKCgoKCgoKCgoKCgoKCkVuIGNvbnN0YW5jaWEgZGUgbG8gYW50ZXJpb3IsIGZpcm1vKGFtb3MpIGVsIHByZXNlbnRlIGRvY3VtZW50bywgZW4gbGEgY2l1ZGFkIGRlIEJvZ290w6EsIEQuQy4sIGEgbG9zCgoKRklSTUEgREUgTE9TIFRJVFVMQVJFUyBERSBERVJFQ0hPUyBERSBBVVRPUgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fICAgQy5DLiBOby4gX19fX19fX19fX19fX19fX19fCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18gICBDLkMuIE5vLiBfX19fX19fX19fX19fX19fX18KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyAgIEMuQy4gTm8uIF9fX19fX19fX19fX19fX19fXwoKCgpDb3JyZW8gRWxlY3Ryw7NuaWNvIEluc3RpdHVjaW9uYWwgZGVsIChkZSBsb3MpIEF1dG9yKGVzKToKCkF1dG9yCSAgICAgIENvcnJlbyBFbGVjdHLDs25pY28KCjEKCjIKCjMKCk5vbWJyZSBkZSBEaXJlY3RvcihlcykgZGUgR3JhZG86CgoxCgoyCgozCgpOb21icmUgRmFjdWx0YWQgeSBQcm95ZWN0byBDdXJyaWN1bGFyOgoKRmFjdWx0YWQJUHJveWVjdG8gQ3VycmljdWxhcgoKCgoKCgoKCk5vdGE6IEVuIGNhc28gcXVlIG5vIGVzdMOpIGRlIGFjdWVyZG8gY29uIGxhcyBjb25kaWNpb25lcyBkZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSwgeSBtYW5pZmllc3RlIGFsZ3VuYSByZXN0cmljY2nDs24gc29icmUgbGEgb2JyYSwganVzdGlmaXF1ZSBsb3MgbW90aXZvcyBwb3IgbG9zIGN1YWxlcyBlbCBkb2N1bWVudG8geSBzdXMgYW5leG9zIG5vIHB1ZWRlbiBzZXIgcHVibGljYWRvcyBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIFJJVUQuCgoKU2kgcmVxdWllcmUgbcOhcyBlc3BhY2lvLCBwdWVkZSBhbmV4YXIgdW5hIGNvcGlhIHNpbWlsYXIgYSBlc3RhIGhvamEK