Diseño y desarrollo de aplicativo web para manejo y control de información en bases de datos

Este trabajo de grado dentro de su marco teórico desarrolla la propuesta investigativa listando los algoritmos protocolos, recomendaciones técnicas, contiene descripción de los lenguajes de programación, imágenes ilustrativas del proceso de implementación (ver anexos); contiene glosario.

Autores:
Saavedra Lozano, Miguel Angel
Valderrama Ruiz, Andrés Felipe
Tipo de recurso:
Trabajo de grado de pregrado
Fecha de publicación:
2021
Institución:
Universidad Tecnológica de Pereira
Repositorio:
Repositorio Institucional UTP
Idioma:
spa
OAI Identifier:
oai:repositorio.utp.edu.co:11059/13903
Acceso en línea:
https://hdl.handle.net/11059/13903
https://repositorio.utp.edu.co/home
Palabra clave:
530 - Física
000 - Ciencias de la computación, información y obras generales::005 - Programación, programas, datos de computación
Processing modes-Computer science-Operating systems
Data processing-Office services
Comprensión de datos (computadores)
Entorno web
CRUD
Interfaz de usuario (UI)
Rights
openAccess
License
Atribución-NoComercial-SinDerivadas 4.0 Internacional (CC BY-NC-ND 4.0)
id UTP2_1fd6102e38157e05471785717a6ef99f
oai_identifier_str oai:repositorio.utp.edu.co:11059/13903
network_acronym_str UTP2
network_name_str Repositorio Institucional UTP
repository_id_str
dc.title.spa.fl_str_mv Diseño y desarrollo de aplicativo web para manejo y control de información en bases de datos
title Diseño y desarrollo de aplicativo web para manejo y control de información en bases de datos
spellingShingle Diseño y desarrollo de aplicativo web para manejo y control de información en bases de datos
530 - Física
000 - Ciencias de la computación, información y obras generales::005 - Programación, programas, datos de computación
Processing modes-Computer science-Operating systems
Data processing-Office services
Comprensión de datos (computadores)
Entorno web
CRUD
Interfaz de usuario (UI)
title_short Diseño y desarrollo de aplicativo web para manejo y control de información en bases de datos
title_full Diseño y desarrollo de aplicativo web para manejo y control de información en bases de datos
title_fullStr Diseño y desarrollo de aplicativo web para manejo y control de información en bases de datos
title_full_unstemmed Diseño y desarrollo de aplicativo web para manejo y control de información en bases de datos
title_sort Diseño y desarrollo de aplicativo web para manejo y control de información en bases de datos
dc.creator.fl_str_mv Saavedra Lozano, Miguel Angel
Valderrama Ruiz, Andrés Felipe
dc.contributor.advisor.none.fl_str_mv Medina Barreto, Milton Humberto
dc.contributor.author.none.fl_str_mv Saavedra Lozano, Miguel Angel
Valderrama Ruiz, Andrés Felipe
dc.contributor.jury.none.fl_str_mv Medina Barreto, Milton Humberto
dc.subject.ddc.none.fl_str_mv 530 - Física
000 - Ciencias de la computación, información y obras generales::005 - Programación, programas, datos de computación
topic 530 - Física
000 - Ciencias de la computación, información y obras generales::005 - Programación, programas, datos de computación
Processing modes-Computer science-Operating systems
Data processing-Office services
Comprensión de datos (computadores)
Entorno web
CRUD
Interfaz de usuario (UI)
dc.subject.lemb.none.fl_str_mv Processing modes-Computer science-Operating systems
Data processing-Office services
Comprensión de datos (computadores)
dc.subject.proposal.spa.fl_str_mv Entorno web
CRUD
Interfaz de usuario (UI)
description Este trabajo de grado dentro de su marco teórico desarrolla la propuesta investigativa listando los algoritmos protocolos, recomendaciones técnicas, contiene descripción de los lenguajes de programación, imágenes ilustrativas del proceso de implementación (ver anexos); contiene glosario.
publishDate 2021
dc.date.available.none.fl_str_mv 2021
2022-02-17T20:21:04Z
dc.date.issued.none.fl_str_mv 2021
dc.date.accessioned.none.fl_str_mv 2022-02-17T20:21:04Z
dc.type.none.fl_str_mv Trabajo de grado - Pregrado
dc.type.version.none.fl_str_mv info:eu-repo/semantics/acceptedVersion
dc.type.coar.none.fl_str_mv http://purl.org/coar/resource_type/c_7a1f
dc.type.content.none.fl_str_mv Text
dc.type.driver.none.fl_str_mv info:eu-repo/semantics/bachelorThesis
format http://purl.org/coar/resource_type/c_7a1f
status_str acceptedVersion
dc.identifier.uri.none.fl_str_mv https://hdl.handle.net/11059/13903
dc.identifier.instname.none.fl_str_mv Universidad Tecnológica de Pereira
dc.identifier.reponame.none.fl_str_mv Repositorio UTP
dc.identifier.repourl.none.fl_str_mv https://repositorio.utp.edu.co/home
url https://hdl.handle.net/11059/13903
https://repositorio.utp.edu.co/home
identifier_str_mv Universidad Tecnológica de Pereira
Repositorio UTP
dc.language.iso.none.fl_str_mv spa
language spa
dc.relation.references.none.fl_str_mv N. G. Z. Y. A. P. Sergio Arevalo Bayona, «Diseño, Implementación y actualización de la página web, para efectos de información y comunicación de la sub-línea de investigación educación física en ámbitos dis-formales.» Proyecto de Grado, p. 87, 2013
A. S. P. Lady Didiana Velásquez, «Aspectos Básicos de la Industria 4.0,» Mintic, p. 43, 2019.
J. M. D. M. B. S. Kamil Durski, «Warehouse management system in Ruby on Rails framework on cloud computing architecture.,» Polyana-Svalyava, nº 366, p. 4, 2011.
J. X. Y. W. Nan Feng, «Comparison of Ruby on Rails Development Tools,» World Congress on Software Engineering, vol. 229, p. 5, 2009.
R. Lapiedra Alcamí, C. Devece Carañana y H. Guirral Herrando, «Concepto de sistema de información» de Introducción a la gestión de un sistema de información en la empresa, 1 ed; Universitat Jaume, 2011, pp. 13-15.
N. S. Estevan Gomez, Lógica de Algoritmos- Un enfoque Práctico Programación en Lenguaje C, Quito, Ecuador, 2015
B. A. Forouzan, «27. WWW and HTTP,» de Data Communications and Networking, Fourth Edition, Pennsylvania, The McGraw-Hill Companies, 2007, p. 5.
B. A. Forouzan, «27.3 HTTP,» de Data Communications and Networking, Fourth Edition, Pennsylvania, The McGraw-Hill Companies, 2007, p. 3.
GoDaddy, «¿Qué es un certificado SSL?,» GoDaddy, [En línea]. Available: https://co.godaddy.com/help/que-es-un-certificado-ssl-542. [Último acceso: 29 04 2021]
D. Norris, «6. Debian Linux and Python Basics,» de Programming the Intel Edison: Getting Started with Processing and Python, San Francisco, McGraw-Hill Education, 2016, p. 5.
A. Combo, P. Gomez, D. Perez y R. Rocha, «PHP y MySQL. Tecnologías para el desarrollo de aplicaciones web» de Diaz de santo, 2005, pp. 1-3.
J. E. Pérez, CSS avanzado: Capítulo 1. Técnicas imprescindibles, Uniwebsida, 2009, p. 5.
D. S. Monk, «Chapter 9: Web Interfaces,» de Programming the BeagleBone Black: Getting Started with JavaScript and BoneScript, Preston, UK, McGraw-Hill Education, 2014, p. 2
J. D. Gauchat, «Capítulo 1: Documentos HTML5» de El gran libro de HTML5, CSS3 y Javascript, 1 ed, Marcombo, S.A., 2012, pp. 1-31
J. Eguíluz Pérez, Introducción a CSS, Uniwebside, 2008, p. 5
Y. “. Matsumoto, «Ruby,» Ruby, 29 11 2001. [En línea]. Available: https://www.ruby-lang.org/es/about/. [Último acceso: 27 04 2021]
RoR, «Ruby on Rails: Guides: Getting Started with Rails, What is Rails? » [En línea]. Available: https://guides.rubyonrails.org/getting_started.html. [Último acceso: 25 04 2021].
F. J. Poveda Soto, «Origen y evolución de los lenguajes de marcado: a propósito de XHTML y HTML5,» Universidad de Murcia, 2018.
C. R. Jaimez González, Programación de web dinámico, México: UAM, Unidad Cuajimalpa, 2015, p. 10.
D. S. Monk, «Chapter 3: Programming» de Programming the BeagleBone Black: Getting Started with JavaScript and BoneScript, Preston, UK, McGraw-Hill Education, 2014, p. 1
J. M. D. M. B. S. Kamil Durski, «Warehouse management system in Ruby on Rails framework on cloud computing architecture.,» Department of Microelectronics and Computer Science, nº 366, p. 4, 2011.
T. K. GU Ming-xia, «Comparative analysis of WebForms MVC and MVP architecture,» 2010 2nd Conference on Environmental Science and Information Application Technology, vol. 5, nº 10, p. 4, 2010.
R. Camps Paré, L. . A. Casillas Santillán, D. Costal Costa, M. Gilbert Ginestà, C. Martín Escofet y O. Pérez Mora, «Introducción a las bases de datos,» de Software libre Bases de datos, 1 ed; Barcelona: Eureca Medina, SL, Fundació per a la Universitat Oberta de Catalunya, 2005, pp. 7-21.
R. Camps Paré, L. . A. Casillas Santillán, D. Costal Costa, M. Gilbert Ginestà, C. Martín Escofet y O. Pérez Mora, «Bases de datos en PostgreSQL» de Software libre Bases de datos, 1 ed; Barcelona: Eureca Medina, SL, Fundació per a la Universitat Oberta de Catalunya, 2005, pp. 5-8.
T. P. G. D. Group, «PostgreSQL: About: What is PostgreSQL?,» [En línea]. Available: https://www.postgresql.org/about/. [Último acceso: 25 04 2021].
Hostinger, «Que es un vps» [En línea]. Available: https://www.hostinger.es/tutoriales/que-es-un-vps. [Último acceso: 01 05 2021].
R. G. F. P. A. A. A. M. F. M. Cristina Liviana Caldiroli, «How Web Design influences User Experience: a Multi-modal Method for Real-Time Assessment during Web Browsing,» Annual Consumer Communications & Networking Conference, nº 1063, p. 4, 2017
H. M. A.-z. L. F. A. V. P. Aryo Pinandito, «Analysis of Web Content Delivery Effectiveness and Efficiency in Responsive Web Design Using Material Design Guidelines and User Centered Design,» International Conference on Sustainable Information Engineering and Technology, nº 435, p. 7, 2017
S. L. H. K. Chen Cheng, «Analysis on the Status of Big Data Processing Framework,» International Computers, Signals and Systems Conference, nº 794, p. 6, 2018
C. J. a. A. S. Patrick Wagstrom, «A Network of Rails: A Graph Dataset of Ruby on Rails and Associated Projects,» nº 229, p. 4, 2013.
C. I. Jamie Cleare, «GemChecker: Reporting on the Status of Gems in Ruby on Rails Projects,» International Conference on Software Maintenance and Evolution», nº 700, p. 5, 2018
Chongjun Wang, Peng Wei, «A novel web page text information extraction method» 3rd Information Technology,Networking,Electronic and Automation Control Conference», n° 2213, p. 6, 2019
R. Camps Paré, L. . A. Casillas Santillán, D. Costal Costa, M. Gilbert Ginestà, C. Martín Escofet y O. Pérez Mora, «Bases de datos en PostgreSQL» de Software libre Bases de datos, 1 ed; Barcelona: Eureca Medina, SL, Fundació per a la Universitat Oberta de Catalunya, 2005, p. 5.
V. Viswanathan, Rapid Web Application: A Ruby on Rails Tutorial, New Jersey: the IEEE Computer Society, 2008.
RoR, «Ruby on Rails: Guides: Migrations,» [En línea]. Available: https://guides.rubyonrails.org/v3.2/migrations.html. [Último acceso: 25 04 2021].
RoR, «Ruby on Rails: Guides: Active Record Basics,» [En línea]. Available: https://guides.rubyonrails.org/active_record_basics.html. [Último acceso: 25 04 2021].
RoR, «Ruby on Rails: Guides: Active Record, Naming Conventions,,» [En línea]. Available: https://guides.rubyonrails.org/active_record_basics.html. [Último acceso: 25 04 2021].
RoR, «Ruby on Rails: Guides, Active Model Basics,» [En línea]. Available: https://guides.rubyonrails.org/active_model_basics.html. [Último acceso: 25 04 2021].
Ruby, «Ruby Lang: Bibliotecas, Bibliotecas,» [En línea]. Available: https://www.ruby-lang.org/es/libraries/. [Último acceso: 01 05 2021].
Bundler, «Bundler: What is bundler?» [En línea]. Available: https://bundler.io/v2.2/#getting-started. [Último acceso: 01 05 2021].
R. Tourangeau, M. P. Couper y F. Conrad, «The Impact of the Visible: Images, Spacing, and Other Visual Cues in Web Surveys,» Survey Research Center, University of Michigan, 2003.
Yu-Fai Leung, «Using the Internet for Natural Resource Research: Results from an Online User Survey,» J. Nat. Resour, vol. 27, 1998.
GoRails, «Install Ruby» [En línea]. Available: https://gorails.com/deploy/ubuntu/20.04#vps. [Último acceso: 01 05 2021].
GoRails, «Install Nginx & Passenger» [En línea]. Available: https://gorails.com/deploy/ubuntu/20.04#vps. [Último acceso: 01 05 2021]
GoRails, «Create a DataBase» [En línea]. Available: https://gorails.com/deploy/ubuntu/20.04#vps. [Último acceso: 01 05 2021].
GoRails, «Deploy with Capistrano» [En línea]. Available: https://gorails.com/deploy/ubuntu/20.04#vps. [Último acceso: 01 05 2021].
L. Encrypt, «Let's Encrypt: Empezando,» [En línea]. Available: https://letsencrypt.org/getting-started/. [Último acceso: 12 05 2021].
dc.rights.license.none.fl_str_mv Atribución-NoComercial-SinDerivadas 4.0 Internacional (CC BY-NC-ND 4.0)
dc.rights.uri.none.fl_str_mv https://creativecommons.org/licenses/by-nc-nd/4.0/
dc.rights.coar.none.fl_str_mv http://purl.org/coar/access_right/c_abf2
dc.rights.accessrights.none.fl_str_mv info:eu-repo/semantics/openAccess
rights_invalid_str_mv Atribución-NoComercial-SinDerivadas 4.0 Internacional (CC BY-NC-ND 4.0)
https://creativecommons.org/licenses/by-nc-nd/4.0/
http://purl.org/coar/access_right/c_abf2
eu_rights_str_mv openAccess
dc.format.extent.none.fl_str_mv 83 pag.
dc.format.mimetype.none.fl_str_mv application/pdf
dc.publisher.none.fl_str_mv Universidad Tecnológica de Pereira
dc.publisher.program.none.fl_str_mv Ingeniería Física
dc.publisher.faculty.none.fl_str_mv Facultad de Ingenierías
dc.publisher.place.none.fl_str_mv Pereira
publisher.none.fl_str_mv Universidad Tecnológica de Pereira
institution Universidad Tecnológica de Pereira
bitstream.url.fl_str_mv https://dspace7-utp.metabuscador.org/bitstreams/c4769c1b-3cfa-409d-939e-ccd8e3b909ec/download
https://dspace7-utp.metabuscador.org/bitstreams/16358592-8c28-45a3-b1b8-401d2bf12492/download
https://dspace7-utp.metabuscador.org/bitstreams/1c5f41e0-2779-4677-a752-f31a8376d7e5/download
https://dspace7-utp.metabuscador.org/bitstreams/48725413-6153-4c60-aba1-e903caf69665/download
bitstream.checksum.fl_str_mv c32d30bf5c17e31e5e6c15673a46149e
2f9959eaf5b71fae44bbf9ec84150c7a
568337df854f81117a981769192a6f0d
9a73865fef3eadd4a3dce5594c065912
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositorio de la Universidad Tecnológica de Pereira
repository.mail.fl_str_mv bdigital@metabiblioteca.com
_version_ 1828202105696944128
spelling Atribución-NoComercial-SinDerivadas 4.0 Internacional (CC BY-NC-ND 4.0)Manifiesto (Manifestamos) en este documento la voluntad de autorizar a la Biblioteca Jorge Roa Martínez de la Universidad Tecnológica de Pereira la publicación en el Repositorio institucional (http://biblioteca.utp.edu.co), la versión electrónica de la OBRA titulada: ________________________________________________________________________________________________ ________________________________________________________________________________________________ ________________________________________________________________________________________________ La Universidad Tecnológica de Pereira, entidad académica sin ánimo de lucro, queda por lo tanto facultada para ejercer plenamente la autorización anteriormente descrita en su actividad ordinaria de investigación, docencia y publicación. La autorización otorgada se ajusta a lo que establece la Ley 23 de 1982. Con todo, en mi (nuestra) condición de autor (es) me (nos) reservo (reservamos) los derechos morales de la OBRA antes citada con arreglo al artículo 30 dehttps://creativecommons.org/licenses/by-nc-nd/4.0/http://purl.org/coar/access_right/c_abf2info:eu-repo/semantics/openAccessMedina Barreto, Milton HumbertoSaavedra Lozano, Miguel AngelValderrama Ruiz, Andrés FelipeMedina Barreto, Milton Humberto2022-02-17T20:21:04Z20212022-02-17T20:21:04Z2021https://hdl.handle.net/11059/13903Universidad Tecnológica de PereiraRepositorio UTPhttps://repositorio.utp.edu.co/homeEste trabajo de grado dentro de su marco teórico desarrolla la propuesta investigativa listando los algoritmos protocolos, recomendaciones técnicas, contiene descripción de los lenguajes de programación, imágenes ilustrativas del proceso de implementación (ver anexos); contiene glosario.El presente trabajo presenta una iniciativa en el aspecto de divulgación de información de los grupos de investigación en Propiedades Magnéticas y Magneto Ópticas de Nuevos Materiales (GIMM) y el Grupo de Electrofisiología (GEF), que hacen parte de la Universidad Tecnológica de Pereira (UTP) y el entorno para la realización de la primera conferencia iberoamericana de termografía infrarroja y sus amplias aplicaciones, desarrollado por el grupo GEF. Lo cual, propone como fin, un entorno manejable por parte de los directivos y el desarrollo de una interfaz de fácil manejo para los usuarios, aplicando una comunicación con las bases de datos creadas y que permitan realizar acciones CRUD (Create, Read, Update and Delete) cuando sea necesario. Se parte desde la creación de tres micrositios base correspondientes a los grupos de investigación y el I IbercTherm, destinando las secciones o ramificaciones adecuadas para las asignaciones de las bases de datos y manejo de información por parte de los administrativos.This paper presents an initiative in the aspect of information disclosure of the research groups on Magnetic and Magneto-Optic Properties of New Materials (GIMM) and the Electrophysiology Group (GEF), which are part of the Technological University of Pereira (UTP) and the environment for carrying out the first Ibero-American conference on infrared thermography and its extensive applications, developed by the GEF group. Which, proposes as an end, an environment manageable by managers and the development of an easy-to-use interface for users, applying a communication with the databases created and that perform CRUD actions (Create, Read, Update and Delete) when necessary necessary. It starts from the creation of three base microsites corresponding to the research groups and the I IbercTherm, allocating the sections or branches suitable for database assignments and information management by part of the administrative.CONTENIDO ÍNDICE DE FIGURAS 5 ÍNDICE DE TABLAS 8 GLOSARIO DE TÉRMINOS 9 CAPÍTULO 1. 12 INTRODUCCIÓN 12 1.1. Planteamiento y justificación de la pregunta de investigación ............................13 1.2. Objetivos ......................................................................................................................14 1.2.1. Objetivo General...................................................................................................14 1.2.2. Objetivos específicos ..........................................................................................14 CAPÍTULO 2. 15 MARCO TEÓRICO 15 2.1. Sistemas informáticos................................................................................................15 2.2. Algoritmos ...................................................................................................................15 2.3. Consideraciones técnicas .........................................................................................15 2.3.1. Protocolo WWW y HTTP......................................................................................16 2.3.2. Certificado SSL.....................................................................................................16 2.3.3. Protocolo SSH ......................................................................................................16 2.4. Lenguajes de programación......................................................................................18 2.4.1. HTML......................................................................................................................18 2.4.2. CSS ........................................................................................................................21 2.4.3. Ruby.......................................................................................................................22 2.4.4. Ruby on Rails........................................................................................................22 2.4.5. JavaScript .............................................................................................................22 2.5. Framework ...................................................................................................................23 2.5.1. Arquitectura ..........................................................................................................23 2.6. Base de datos..............................................................................................................25 2.6.1. PostgreSQL...........................................................................................................25 2.7. Hosting.........................................................................................................................25 2.8. Estado del arte ............................................................................................................26 CAPÍTULO 3. 28 MÉTODOS Y PREPARACIONES 28 3.1. Análisis.........................................................................................................................28 3.1.1. Consideraciones de diseño ................................................................................28 3.1.2. Requerimientos funcionales...............................................................................33 3.2. Configuración del servidor........................................................................................35 3.2.1. Instalación de Ruby.................................................................................................35 3.3. Configuración del servidor web................................................................................36 3.4. Creación de la base de datos en PostgreSQL.........................................................38 3.5. Desplegar código........................................................................................................39 3.6. Últimas configuraciones ............................................................................................41 3.7. Certificación.................................................................................................................42 CAPÍTULO 4. 44 RESULTADOS 44 4.1. Estructura ....................................................................................................................44 4.2. Diseño...........................................................................................................................46 4.2.1. Diseño control de bases de datos......................................................................47 4.3. Repositorio ..................................................................................................................48 4.4. Servidor y dominio......................................................................................................49 4.5. Certificación y pruebas ..............................................................................................50 4.6. Evidencia del diseño final..........................................................................................52 CAPÍTULO 5 64 CONCLUSIONES Y RECOMENDACIONES 64 5.1. Conclusiones...............................................................................................................64 5.2. Recomendaciones ......................................................................................................65 REFERENCIAS 67 ANEXOS 72 ● Anexo 1. Repositorio Github.....................................................................................72 ● Anexo 2. Configuración DNS y otros comandos del servidor. .............................80PregradoIngeniero(a) Físico(a)83 pag.application/pdfspaUniversidad Tecnológica de PereiraIngeniería FísicaFacultad de IngenieríasPereira530 - Física000 - Ciencias de la computación, información y obras generales::005 - Programación, programas, datos de computaciónProcessing modes-Computer science-Operating systemsData processing-Office servicesComprensión de datos (computadores)Entorno webCRUDInterfaz de usuario (UI)Diseño y desarrollo de aplicativo web para manejo y control de información en bases de datosTrabajo de grado - Pregradoinfo:eu-repo/semantics/acceptedVersionhttp://purl.org/coar/resource_type/c_7a1fTextinfo:eu-repo/semantics/bachelorThesisN. G. Z. Y. A. P. Sergio Arevalo Bayona, «Diseño, Implementación y actualización de la página web, para efectos de información y comunicación de la sub-línea de investigación educación física en ámbitos dis-formales.» Proyecto de Grado, p. 87, 2013A. S. P. Lady Didiana Velásquez, «Aspectos Básicos de la Industria 4.0,» Mintic, p. 43, 2019.J. M. D. M. B. S. Kamil Durski, «Warehouse management system in Ruby on Rails framework on cloud computing architecture.,» Polyana-Svalyava, nº 366, p. 4, 2011.J. X. Y. W. Nan Feng, «Comparison of Ruby on Rails Development Tools,» World Congress on Software Engineering, vol. 229, p. 5, 2009.R. Lapiedra Alcamí, C. Devece Carañana y H. Guirral Herrando, «Concepto de sistema de información» de Introducción a la gestión de un sistema de información en la empresa, 1 ed; Universitat Jaume, 2011, pp. 13-15.N. S. Estevan Gomez, Lógica de Algoritmos- Un enfoque Práctico Programación en Lenguaje C, Quito, Ecuador, 2015B. A. Forouzan, «27. WWW and HTTP,» de Data Communications and Networking, Fourth Edition, Pennsylvania, The McGraw-Hill Companies, 2007, p. 5.B. A. Forouzan, «27.3 HTTP,» de Data Communications and Networking, Fourth Edition, Pennsylvania, The McGraw-Hill Companies, 2007, p. 3.GoDaddy, «¿Qué es un certificado SSL?,» GoDaddy, [En línea]. Available: https://co.godaddy.com/help/que-es-un-certificado-ssl-542. [Último acceso: 29 04 2021]D. Norris, «6. Debian Linux and Python Basics,» de Programming the Intel Edison: Getting Started with Processing and Python, San Francisco, McGraw-Hill Education, 2016, p. 5.A. Combo, P. Gomez, D. Perez y R. Rocha, «PHP y MySQL. Tecnologías para el desarrollo de aplicaciones web» de Diaz de santo, 2005, pp. 1-3.J. E. Pérez, CSS avanzado: Capítulo 1. Técnicas imprescindibles, Uniwebsida, 2009, p. 5.D. S. Monk, «Chapter 9: Web Interfaces,» de Programming the BeagleBone Black: Getting Started with JavaScript and BoneScript, Preston, UK, McGraw-Hill Education, 2014, p. 2J. D. Gauchat, «Capítulo 1: Documentos HTML5» de El gran libro de HTML5, CSS3 y Javascript, 1 ed, Marcombo, S.A., 2012, pp. 1-31J. Eguíluz Pérez, Introducción a CSS, Uniwebside, 2008, p. 5Y. “. Matsumoto, «Ruby,» Ruby, 29 11 2001. [En línea]. Available: https://www.ruby-lang.org/es/about/. [Último acceso: 27 04 2021]RoR, «Ruby on Rails: Guides: Getting Started with Rails, What is Rails? » [En línea]. Available: https://guides.rubyonrails.org/getting_started.html. [Último acceso: 25 04 2021].F. J. Poveda Soto, «Origen y evolución de los lenguajes de marcado: a propósito de XHTML y HTML5,» Universidad de Murcia, 2018.C. R. Jaimez González, Programación de web dinámico, México: UAM, Unidad Cuajimalpa, 2015, p. 10.D. S. Monk, «Chapter 3: Programming» de Programming the BeagleBone Black: Getting Started with JavaScript and BoneScript, Preston, UK, McGraw-Hill Education, 2014, p. 1J. M. D. M. B. S. Kamil Durski, «Warehouse management system in Ruby on Rails framework on cloud computing architecture.,» Department of Microelectronics and Computer Science, nº 366, p. 4, 2011.T. K. GU Ming-xia, «Comparative analysis of WebForms MVC and MVP architecture,» 2010 2nd Conference on Environmental Science and Information Application Technology, vol. 5, nº 10, p. 4, 2010.R. Camps Paré, L. . A. Casillas Santillán, D. Costal Costa, M. Gilbert Ginestà, C. Martín Escofet y O. Pérez Mora, «Introducción a las bases de datos,» de Software libre Bases de datos, 1 ed; Barcelona: Eureca Medina, SL, Fundació per a la Universitat Oberta de Catalunya, 2005, pp. 7-21.R. Camps Paré, L. . A. Casillas Santillán, D. Costal Costa, M. Gilbert Ginestà, C. Martín Escofet y O. Pérez Mora, «Bases de datos en PostgreSQL» de Software libre Bases de datos, 1 ed; Barcelona: Eureca Medina, SL, Fundació per a la Universitat Oberta de Catalunya, 2005, pp. 5-8.T. P. G. D. Group, «PostgreSQL: About: What is PostgreSQL?,» [En línea]. Available: https://www.postgresql.org/about/. [Último acceso: 25 04 2021].Hostinger, «Que es un vps» [En línea]. Available: https://www.hostinger.es/tutoriales/que-es-un-vps. [Último acceso: 01 05 2021].R. G. F. P. A. A. A. M. F. M. Cristina Liviana Caldiroli, «How Web Design influences User Experience: a Multi-modal Method for Real-Time Assessment during Web Browsing,» Annual Consumer Communications & Networking Conference, nº 1063, p. 4, 2017H. M. A.-z. L. F. A. V. P. Aryo Pinandito, «Analysis of Web Content Delivery Effectiveness and Efficiency in Responsive Web Design Using Material Design Guidelines and User Centered Design,» International Conference on Sustainable Information Engineering and Technology, nº 435, p. 7, 2017S. L. H. K. Chen Cheng, «Analysis on the Status of Big Data Processing Framework,» International Computers, Signals and Systems Conference, nº 794, p. 6, 2018C. J. a. A. S. Patrick Wagstrom, «A Network of Rails: A Graph Dataset of Ruby on Rails and Associated Projects,» nº 229, p. 4, 2013.C. I. Jamie Cleare, «GemChecker: Reporting on the Status of Gems in Ruby on Rails Projects,» International Conference on Software Maintenance and Evolution», nº 700, p. 5, 2018Chongjun Wang, Peng Wei, «A novel web page text information extraction method» 3rd Information Technology,Networking,Electronic and Automation Control Conference», n° 2213, p. 6, 2019R. Camps Paré, L. . A. Casillas Santillán, D. Costal Costa, M. Gilbert Ginestà, C. Martín Escofet y O. Pérez Mora, «Bases de datos en PostgreSQL» de Software libre Bases de datos, 1 ed; Barcelona: Eureca Medina, SL, Fundació per a la Universitat Oberta de Catalunya, 2005, p. 5.V. Viswanathan, Rapid Web Application: A Ruby on Rails Tutorial, New Jersey: the IEEE Computer Society, 2008.RoR, «Ruby on Rails: Guides: Migrations,» [En línea]. Available: https://guides.rubyonrails.org/v3.2/migrations.html. [Último acceso: 25 04 2021].RoR, «Ruby on Rails: Guides: Active Record Basics,» [En línea]. Available: https://guides.rubyonrails.org/active_record_basics.html. [Último acceso: 25 04 2021].RoR, «Ruby on Rails: Guides: Active Record, Naming Conventions,,» [En línea]. Available: https://guides.rubyonrails.org/active_record_basics.html. [Último acceso: 25 04 2021].RoR, «Ruby on Rails: Guides, Active Model Basics,» [En línea]. Available: https://guides.rubyonrails.org/active_model_basics.html. [Último acceso: 25 04 2021].Ruby, «Ruby Lang: Bibliotecas, Bibliotecas,» [En línea]. Available: https://www.ruby-lang.org/es/libraries/. [Último acceso: 01 05 2021].Bundler, «Bundler: What is bundler?» [En línea]. Available: https://bundler.io/v2.2/#getting-started. [Último acceso: 01 05 2021].R. Tourangeau, M. P. Couper y F. Conrad, «The Impact of the Visible: Images, Spacing, and Other Visual Cues in Web Surveys,» Survey Research Center, University of Michigan, 2003.Yu-Fai Leung, «Using the Internet for Natural Resource Research: Results from an Online User Survey,» J. Nat. Resour, vol. 27, 1998.GoRails, «Install Ruby» [En línea]. Available: https://gorails.com/deploy/ubuntu/20.04#vps. [Último acceso: 01 05 2021].GoRails, «Install Nginx & Passenger» [En línea]. Available: https://gorails.com/deploy/ubuntu/20.04#vps. [Último acceso: 01 05 2021]GoRails, «Create a DataBase» [En línea]. Available: https://gorails.com/deploy/ubuntu/20.04#vps. [Último acceso: 01 05 2021].GoRails, «Deploy with Capistrano» [En línea]. Available: https://gorails.com/deploy/ubuntu/20.04#vps. [Último acceso: 01 05 2021].L. Encrypt, «Let's Encrypt: Empezando,» [En línea]. Available: https://letsencrypt.org/getting-started/. [Último acceso: 12 05 2021].PublicationORIGINALTRABAJO DE GRADO.pdfTRABAJO DE GRADO.pdfapplication/pdf2984653https://dspace7-utp.metabuscador.org/bitstreams/c4769c1b-3cfa-409d-939e-ccd8e3b909ec/downloadc32d30bf5c17e31e5e6c15673a46149eMD51LICENSElicense.txtlicense.txttext/plain; charset=utf-814828https://dspace7-utp.metabuscador.org/bitstreams/16358592-8c28-45a3-b1b8-401d2bf12492/download2f9959eaf5b71fae44bbf9ec84150c7aMD52TEXTTRABAJO DE GRADO.pdf.txtTRABAJO DE GRADO.pdf.txtExtracted texttext/plain114521https://dspace7-utp.metabuscador.org/bitstreams/1c5f41e0-2779-4677-a752-f31a8376d7e5/download568337df854f81117a981769192a6f0dMD53THUMBNAILTRABAJO DE GRADO.pdf.jpgTRABAJO DE GRADO.pdf.jpgGenerated Thumbnailimage/jpeg5647https://dspace7-utp.metabuscador.org/bitstreams/48725413-6153-4c60-aba1-e903caf69665/download9a73865fef3eadd4a3dce5594c065912MD5411059/13903oai:dspace7-utp.metabuscador.org:11059/139032024-09-05 17:26:09.979https://creativecommons.org/licenses/by-nc-nd/4.0/Manifiesto (Manifestamos) en este documento la voluntad de autorizar a la Biblioteca Jorge Roa Martínez de la Universidad Tecnológica de Pereira la publicación en el Repositorio institucional (http://biblioteca.utp.edu.co), la versión electrónica de la OBRA titulada: ________________________________________________________________________________________________ ________________________________________________________________________________________________ ________________________________________________________________________________________________ La Universidad Tecnológica de Pereira, entidad académica sin ánimo de lucro, queda por lo tanto facultada para ejercer plenamente la autorización anteriormente descrita en su actividad ordinaria de investigación, docencia y publicación. La autorización otorgada se ajusta a lo que establece la Ley 23 de 1982. Con todo, en mi (nuestra) condición de autor (es) me (nos) reservo (reservamos) los derechos morales de la OBRA antes citada con arreglo al artículo 30 deopen.accesshttps://dspace7-utp.metabuscador.orgRepositorio de la Universidad Tecnológica de Pereirabdigital@metabiblioteca.comTEEgT0JSQSAoVEFMIFkgQ09NTyBTRSBERUZJTkUgTcOBUyBBREVMQU5URSkgU0UgT1RPUkdBIEJBSk8gTE9TIFRFUk1JTk9TIERFIEVTVEEgTElDRU5DSUEgUMOaQkxJQ0EgREUgQ1JFQVRJVkUgQ09NTU9OUyAo4oCcTFBDQ+KAnSBPIOKAnExJQ0VOQ0lB4oCdKS4gTEEgT0JSQSBFU1TDgSBQUk9URUdJREEgUE9SIERFUkVDSE9TIERFIEFVVE9SIFkvVSBPVFJBUyBMRVlFUyBBUExJQ0FCTEVTLiBRVUVEQSBQUk9ISUJJRE8gQ1VBTFFVSUVSIFVTTyBRVUUgU0UgSEFHQSBERSBMQSBPQlJBIFFVRSBOTyBDVUVOVEUgQ09OIExBIEFVVE9SSVpBQ0nDk04gUEVSVElORU5URSBERSBDT05GT1JNSURBRCBDT04gTE9TIFTDiVJNSU5PUyBERSBFU1RBIExJQ0VOQ0lBIFkgREUgTEEgTEVZIERFIERFUkVDSE8gREUgQVVUT1IuCgpNRURJQU5URSBFTCBFSkVSQ0lDSU8gREUgQ1VBTFFVSUVSQSBERSBMT1MgREVSRUNIT1MgUVVFIFNFIE9UT1JHQU4gRU4gRVNUQSBMSUNFTkNJQSwgVVNURUQgQUNFUFRBIFkgQUNVRVJEQSBRVUVEQVIgT0JMSUdBRE8gRU4gTE9TIFRFUk1JTk9TIFFVRSBTRSBTRcORQUxBTiBFTiBFTExBLiBFTCBMSUNFTkNJQU5URSBDT05DRURFIEEgVVNURUQgTE9TIERFUkVDSE9TIENPTlRFTklET1MgRU4gRVNUQSBMSUNFTkNJQSBDT05ESUNJT05BRE9TIEEgTEEgQUNFUFRBQ0nDk04gREUgU1VTIFRFUk1JTk9TIFkgQ09ORElDSU9ORVMuCjEuIERlZmluaWNpb25lcwoKYS4JT2JyYSBDb2xlY3RpdmEgZXMgdW5hIG9icmEsIHRhbCBjb21vIHVuYSBwdWJsaWNhY2nDs24gcGVyacOzZGljYSwgdW5hIGFudG9sb2fDrWEsIG8gdW5hIGVuY2ljbG9wZWRpYSwgZW4gbGEgcXVlIGxhIG9icmEgZW4gc3UgdG90YWxpZGFkLCBzaW4gbW9kaWZpY2FjacOzbiBhbGd1bmEsIGp1bnRvIGNvbiB1biBncnVwbyBkZSBvdHJhcyBjb250cmlidWNpb25lcyBxdWUgY29uc3RpdHV5ZW4gb2JyYXMgc2VwYXJhZGFzIGUgaW5kZXBlbmRpZW50ZXMgZW4gc8OtIG1pc21hcywgc2UgaW50ZWdyYW4gZW4gdW4gdG9kbyBjb2xlY3Rpdm8uIFVuYSBPYnJhIHF1ZSBjb25zdGl0dXllIHVuYSBvYnJhIGNvbGVjdGl2YSBubyBzZSBjb25zaWRlcmFyw6EgdW5hIE9icmEgRGVyaXZhZGEgKGNvbW8gc2UgZGVmaW5lIGFiYWpvKSBwYXJhIGxvcyBwcm9ww7NzaXRvcyBkZSBlc3RhIGxpY2VuY2lhLiBhcXVlbGxhIHByb2R1Y2lkYSBwb3IgdW4gZ3J1cG8gZGUgYXV0b3JlcywgZW4gcXVlIGxhIE9icmEgc2UgZW5jdWVudHJhIHNpbiBtb2RpZmljYWNpb25lcywganVudG8gY29uIHVuYSBjaWVydGEgY2FudGlkYWQgZGUgb3RyYXMgY29udHJpYnVjaW9uZXMsIHF1ZSBjb25zdGl0dXllbiBlbiBzw60gbWlzbW9zIHRyYWJham9zIHNlcGFyYWRvcyBlIGluZGVwZW5kaWVudGVzLCBxdWUgc29uIGludGVncmFkb3MgYWwgdG9kbyBjb2xlY3Rpdm8sIHRhbGVzIGNvbW8gcHVibGljYWNpb25lcyBwZXJpw7NkaWNhcywgYW50b2xvZ8OtYXMgbyBlbmNpY2xvcGVkaWFzLgoKYi4JT2JyYSBEZXJpdmFkYSBzaWduaWZpY2EgdW5hIG9icmEgYmFzYWRhIGVuIGxhIG9icmEgb2JqZXRvIGRlIGVzdGEgbGljZW5jaWEgbyBlbiDDqXN0YSB5IG90cmFzIG9icmFzIHByZWV4aXN0ZW50ZXMsIHRhbGVzIGNvbW8gdHJhZHVjY2lvbmVzLCBhcnJlZ2xvcyBtdXNpY2FsZXMsIGRyYW1hdGl6YWNpb25lcywg4oCcZmljY2lvbmFsaXphY2lvbmVz4oCdLCB2ZXJzaW9uZXMgcGFyYSBjaW5lLCDigJxncmFiYWNpb25lcyBkZSBzb25pZG/igJ0sIHJlcHJvZHVjY2lvbmVzIGRlIGFydGUsIHJlc8O6bWVuZXMsIGNvbmRlbnNhY2lvbmVzLCBvIGN1YWxxdWllciBvdHJhIGVuIGxhIHF1ZSBsYSBvYnJhIHB1ZWRhIHNlciB0cmFuc2Zvcm1hZGEsIGNhbWJpYWRhIG8gYWRhcHRhZGEsIGV4Y2VwdG8gYXF1ZWxsYXMgcXVlIGNvbnN0aXR1eWFuIHVuYSBvYnJhIGNvbGVjdGl2YSwgbGFzIHF1ZSBubyBzZXLDoW4gY29uc2lkZXJhZGFzIHVuYSBvYnJhIGRlcml2YWRhIHBhcmEgZWZlY3RvcyBkZSBlc3RhIGxpY2VuY2lhLiAoUGFyYSBldml0YXIgZHVkYXMsIGVuIGVsIGNhc28gZGUgcXVlIGxhIE9icmEgc2VhIHVuYSBjb21wb3NpY2nDs24gbXVzaWNhbCBvIHVuYSBncmFiYWNpw7NuIHNvbm9yYSwgcGFyYSBsb3MgZWZlY3RvcyBkZSBlc3RhIExpY2VuY2lhIGxhIHNpbmNyb25pemFjacOzbiB0ZW1wb3JhbCBkZSBsYSBPYnJhIGNvbiB1bmEgaW1hZ2VuIGVuIG1vdmltaWVudG8gc2UgY29uc2lkZXJhcsOhIHVuYSBPYnJhIERlcml2YWRhIHBhcmEgbG9zIGZpbmVzIGRlIGVzdGEgbGljZW5jaWEpLgoKYy4JTGljZW5jaWFudGUsIGVzIGVsIGluZGl2aWR1byBvIGxhIGVudGlkYWQgdGl0dWxhciBkZSBsb3MgZGVyZWNob3MgZGUgYXV0b3IgcXVlIG9mcmVjZSBsYSBPYnJhIGVuIGNvbmZvcm1pZGFkIGNvbiBsYXMgY29uZGljaW9uZXMgZGUgZXN0YSBMaWNlbmNpYS4KCmQuCUF1dG9yIG9yaWdpbmFsLCBlcyBlbCBpbmRpdmlkdW8gcXVlIGNyZcOzIGxhIE9icmEuCgplLglPYnJhLCBlcyBhcXVlbGxhIG9icmEgc3VzY2VwdGlibGUgZGUgcHJvdGVjY2nDs24gcG9yIGVsIHLDqWdpbWVuIGRlIERlcmVjaG8gZGUgQXV0b3IgeSBxdWUgZXMgb2ZyZWNpZGEgZW4gbG9zIHTDqXJtaW5vcyBkZSBlc3RhIGxpY2VuY2lhCgpmLglVc3RlZCwgZXMgZWwgaW5kaXZpZHVvIG8gbGEgZW50aWRhZCBxdWUgZWplcmNpdGEgbG9zIGRlcmVjaG9zIG90b3JnYWRvcyBhbCBhbXBhcm8gZGUgZXN0YSBMaWNlbmNpYSB5IHF1ZSBjb24gYW50ZXJpb3JpZGFkIG5vIGhhIHZpb2xhZG8gbGFzIGNvbmRpY2lvbmVzIGRlIGxhIG1pc21hIHJlc3BlY3RvIGEgbGEgT2JyYSwgbyBxdWUgaGF5YSBvYnRlbmlkbyBhdXRvcml6YWNpw7NuIGV4cHJlc2EgcG9yIHBhcnRlIGRlbCBMaWNlbmNpYW50ZSBwYXJhIGVqZXJjZXIgbG9zIGRlcmVjaG9zIGFsIGFtcGFybyBkZSBlc3RhIExpY2VuY2lhIHBlc2UgYSB1bmEgdmlvbGFjacOzbiBhbnRlcmlvci4KCjIuIERlcmVjaG9zIGRlIFVzb3MgSG9ucmFkb3MgeSBleGNlcGNpb25lcyBMZWdhbGVzLgpOYWRhIGVuIGVzdGEgTGljZW5jaWEgcG9kcsOhIHNlciBpbnRlcnByZXRhZG8gY29tbyB1bmEgZGlzbWludWNpw7NuLCBsaW1pdGFjacOzbiBvIHJlc3RyaWNjacOzbiBkZSBsb3MgZGVyZWNob3MgZGVyaXZhZG9zIGRlbCB1c28gaG9ucmFkbyB5IG90cmFzIGxpbWl0YWNpb25lcyBvIGV4Y2VwY2lvbmVzIGEgbG9zIGRlcmVjaG9zIGRlbCBhdXRvciBiYWpvIGVsIHLDqWdpbWVuIGxlZ2FsIHZpZ2VudGUgbyBkZXJpdmFkbyBkZSBjdWFscXVpZXIgb3RyYSBub3JtYSBxdWUgc2UgbGUgYXBsaXF1ZS4KCjMuIENvbmNlc2nDs24gZGUgbGEgTGljZW5jaWEuCkJham8gbG9zIHTDqXJtaW5vcyB5IGNvbmRpY2lvbmVzIGRlIGVzdGEgTGljZW5jaWEsIGVsIExpY2VuY2lhbnRlIG90b3JnYSBhIFVzdGVkIHVuYSBsaWNlbmNpYSBtdW5kaWFsLCBsaWJyZSBkZSByZWdhbMOtYXMsIG5vIGV4Y2x1c2l2YSB5IHBlcnBldHVhIChkdXJhbnRlIHRvZG8gZWwgcGVyw61vZG8gZGUgdmlnZW5jaWEgZGUgbG9zIGRlcmVjaG9zIGRlIGF1dG9yKSBwYXJhIGVqZXJjZXIgZXN0b3MgZGVyZWNob3Mgc29icmUgbGEgT2JyYSB0YWwgeSBjb21vIHNlIGluZGljYSBhIGNvbnRpbnVhY2nDs246CgphLglSZXByb2R1Y2lyIGxhIE9icmEsIGluY29ycG9yYXIgbGEgT2JyYSBlbiB1bmEgbyBtw6FzIE9icmFzIENvbGVjdGl2YXMsIHkgcmVwcm9kdWNpciBsYSBPYnJhIGluY29ycG9yYWRhIGVuIGxhcyBPYnJhcyBDb2xlY3RpdmFzLgoKYi4JRGlzdHJpYnVpciBjb3BpYXMgbyBmb25vZ3JhbWFzIGRlIGxhcyBPYnJhcywgZXhoaWJpcmxhcyBww7pibGljYW1lbnRlLCBlamVjdXRhcmxhcyBww7pibGljYW1lbnRlIHkvbyBwb25lcmxhcyBhIGRpc3Bvc2ljacOzbiBww7pibGljYSwgaW5jbHV5w6luZG9sYXMgY29tbyBpbmNvcnBvcmFkYXMgZW4gT2JyYXMgQ29sZWN0aXZhcywgc2Vnw7puIGNvcnJlc3BvbmRhLgoKYy4JRGlzdHJpYnVpciBjb3BpYXMgZGUgbGFzIE9icmFzIERlcml2YWRhcyBxdWUgc2UgZ2VuZXJlbiwgZXhoaWJpcmxhcyBww7pibGljYW1lbnRlLCBlamVjdXRhcmxhcyBww7pibGljYW1lbnRlIHkvbyBwb25lcmxhcyBhIGRpc3Bvc2ljacOzbiBww7pibGljYS4KTG9zIGRlcmVjaG9zIG1lbmNpb25hZG9zIGFudGVyaW9ybWVudGUgcHVlZGVuIHNlciBlamVyY2lkb3MgZW4gdG9kb3MgbG9zIG1lZGlvcyB5IGZvcm1hdG9zLCBhY3R1YWxtZW50ZSBjb25vY2lkb3MgbyBxdWUgc2UgaW52ZW50ZW4gZW4gZWwgZnV0dXJvLiBMb3MgZGVyZWNob3MgYW50ZXMgbWVuY2lvbmFkb3MgaW5jbHV5ZW4gZWwgZGVyZWNobyBhIHJlYWxpemFyIGRpY2hhcyBtb2RpZmljYWNpb25lcyBlbiBsYSBtZWRpZGEgcXVlIHNlYW4gdMOpY25pY2FtZW50ZSBuZWNlc2FyaWFzIHBhcmEgZWplcmNlciBsb3MgZGVyZWNob3MgZW4gb3RybyBtZWRpbyBvIGZvcm1hdG9zLCBwZXJvIGRlIG90cmEgbWFuZXJhIHVzdGVkIG5vIGVzdMOhIGF1dG9yaXphZG8gcGFyYSByZWFsaXphciBvYnJhcyBkZXJpdmFkYXMuIFRvZG9zIGxvcyBkZXJlY2hvcyBubyBvdG9yZ2Fkb3MgZXhwcmVzYW1lbnRlIHBvciBlbCBMaWNlbmNpYW50ZSBxdWVkYW4gcG9yIGVzdGUgbWVkaW8gcmVzZXJ2YWRvcywgaW5jbHV5ZW5kbyBwZXJvIHNpbiBsaW1pdGFyc2UgYSBhcXVlbGxvcyBxdWUgc2UgbWVuY2lvbmFuIGVuIGxhcyBzZWNjaW9uZXMgNChkKSB5IDQoZSkuCgo0LiBSZXN0cmljY2lvbmVzLgpMYSBsaWNlbmNpYSBvdG9yZ2FkYSBlbiBsYSBhbnRlcmlvciBTZWNjacOzbiAzIGVzdMOhIGV4cHJlc2FtZW50ZSBzdWpldGEgeSBsaW1pdGFkYSBwb3IgbGFzIHNpZ3VpZW50ZXMgcmVzdHJpY2Npb25lczoKCmEuCVVzdGVkIHB1ZWRlIGRpc3RyaWJ1aXIsIGV4aGliaXIgcMO6YmxpY2FtZW50ZSwgZWplY3V0YXIgcMO6YmxpY2FtZW50ZSwgbyBwb25lciBhIGRpc3Bvc2ljacOzbiBww7pibGljYSBsYSBPYnJhIHPDs2xvIGJham8gbGFzIGNvbmRpY2lvbmVzIGRlIGVzdGEgTGljZW5jaWEsIHkgVXN0ZWQgZGViZSBpbmNsdWlyIHVuYSBjb3BpYSBkZSBlc3RhIGxpY2VuY2lhIG8gZGVsIElkZW50aWZpY2Fkb3IgVW5pdmVyc2FsIGRlIFJlY3Vyc29zIGRlIGxhIG1pc21hIGNvbiBjYWRhIGNvcGlhIGRlIGxhIE9icmEgcXVlIGRpc3RyaWJ1eWEsIGV4aGliYSBww7pibGljYW1lbnRlLCBlamVjdXRlIHDDumJsaWNhbWVudGUgbyBwb25nYSBhIGRpc3Bvc2ljacOzbiBww7pibGljYS4gTm8gZXMgcG9zaWJsZSBvZnJlY2VyIG8gaW1wb25lciBuaW5ndW5hIGNvbmRpY2nDs24gc29icmUgbGEgT2JyYSBxdWUgYWx0ZXJlIG8gbGltaXRlIGxhcyBjb25kaWNpb25lcyBkZSBlc3RhIExpY2VuY2lhIG8gZWwgZWplcmNpY2lvIGRlIGxvcyBkZXJlY2hvcyBkZSBsb3MgZGVzdGluYXRhcmlvcyBvdG9yZ2Fkb3MgZW4gZXN0ZSBkb2N1bWVudG8uIE5vIGVzIHBvc2libGUgc3VibGljZW5jaWFyIGxhIE9icmEuIFVzdGVkIGRlYmUgbWFudGVuZXIgaW50YWN0b3MgdG9kb3MgbG9zIGF2aXNvcyBxdWUgaGFnYW4gcmVmZXJlbmNpYSBhIGVzdGEgTGljZW5jaWEgeSBhIGxhIGNsw6F1c3VsYSBkZSBsaW1pdGFjacOzbiBkZSBnYXJhbnTDrWFzLiBVc3RlZCBubyBwdWVkZSBkaXN0cmlidWlyLCBleGhpYmlyIHDDumJsaWNhbWVudGUsIGVqZWN1dGFyIHDDumJsaWNhbWVudGUsIG8gcG9uZXIgYSBkaXNwb3NpY2nDs24gcMO6YmxpY2EgbGEgT2JyYSBjb24gYWxndW5hIG1lZGlkYSB0ZWNub2zDs2dpY2EgcXVlIGNvbnRyb2xlIGVsIGFjY2VzbyBvIGxhIHV0aWxpemFjacOzbiBkZSBlbGxhIGRlIHVuYSBmb3JtYSBxdWUgc2VhIGluY29uc2lzdGVudGUgY29uIGxhcyBjb25kaWNpb25lcyBkZSBlc3RhIExpY2VuY2lhLiBMbyBhbnRlcmlvciBzZSBhcGxpY2EgYSBsYSBPYnJhIGluY29ycG9yYWRhIGEgdW5hIE9icmEgQ29sZWN0aXZhLCBwZXJvIGVzdG8gbm8gZXhpZ2UgcXVlIGxhIE9icmEgQ29sZWN0aXZhIGFwYXJ0ZSBkZSBsYSBvYnJhIG1pc21hIHF1ZWRlIHN1amV0YSBhIGxhcyBjb25kaWNpb25lcyBkZSBlc3RhIExpY2VuY2lhLiBTaSBVc3RlZCBjcmVhIHVuYSBPYnJhIENvbGVjdGl2YSwgcHJldmlvIGF2aXNvIGRlIGN1YWxxdWllciBMaWNlbmNpYW50ZSBkZWJlLCBlbiBsYSBtZWRpZGEgZGUgbG8gcG9zaWJsZSwgZWxpbWluYXIgZGUgbGEgT2JyYSBDb2xlY3RpdmEgY3VhbHF1aWVyIHJlZmVyZW5jaWEgYSBkaWNobyBMaWNlbmNpYW50ZSBvIGFsIEF1dG9yIE9yaWdpbmFsLCBzZWfDum4gbG8gc29saWNpdGFkbyBwb3IgZWwgTGljZW5jaWFudGUgeSBjb25mb3JtZSBsbyBleGlnZSBsYSBjbMOhdXN1bGEgNChjKS4KCmIuCVVzdGVkIG5vIHB1ZWRlIGVqZXJjZXIgbmluZ3VubyBkZSBsb3MgZGVyZWNob3MgcXVlIGxlIGhhbiBzaWRvIG90b3JnYWRvcyBlbiBsYSBTZWNjacOzbiAzIHByZWNlZGVudGUgZGUgbW9kbyBxdWUgZXN0w6luIHByaW5jaXBhbG1lbnRlIGRlc3RpbmFkb3MgbyBkaXJlY3RhbWVudGUgZGlyaWdpZG9zIGEgY29uc2VndWlyIHVuIHByb3ZlY2hvIGNvbWVyY2lhbCBvIHVuYSBjb21wZW5zYWNpw7NuIG1vbmV0YXJpYSBwcml2YWRhLiBFbCBpbnRlcmNhbWJpbyBkZSBsYSBPYnJhIHBvciBvdHJhcyBvYnJhcyBwcm90ZWdpZGFzIHBvciBkZXJlY2hvcyBkZSBhdXRvciwgeWEgc2VhIGEgdHJhdsOpcyBkZSB1biBzaXN0ZW1hIHBhcmEgY29tcGFydGlyIGFyY2hpdm9zIGRpZ2l0YWxlcyAoZGlnaXRhbCBmaWxlLXNoYXJpbmcpIG8gZGUgY3VhbHF1aWVyIG90cmEgbWFuZXJhIG5vIHNlcsOhIGNvbnNpZGVyYWRvIGNvbW8gZXN0YXIgZGVzdGluYWRvIHByaW5jaXBhbG1lbnRlIG8gZGlyaWdpZG8gZGlyZWN0YW1lbnRlIGEgY29uc2VndWlyIHVuIHByb3ZlY2hvIGNvbWVyY2lhbCBvIHVuYSBjb21wZW5zYWNpw7NuIG1vbmV0YXJpYSBwcml2YWRhLCBzaWVtcHJlIHF1ZSBubyBzZSByZWFsaWNlIHVuIHBhZ28gbWVkaWFudGUgdW5hIGNvbXBlbnNhY2nDs24gbW9uZXRhcmlhIGVuIHJlbGFjacOzbiBjb24gZWwgaW50ZXJjYW1iaW8gZGUgb2JyYXMgcHJvdGVnaWRhcyBwb3IgZWwgZGVyZWNobyBkZSBhdXRvci4KCmMuCVNpIHVzdGVkIGRpc3RyaWJ1eWUsIGV4aGliZSBww7pibGljYW1lbnRlLCBlamVjdXRhIHDDumJsaWNhbWVudGUgbyBlamVjdXRhIHDDumJsaWNhbWVudGUgZW4gZm9ybWEgZGlnaXRhbCBsYSBPYnJhIG8gY3VhbHF1aWVyIE9icmEgRGVyaXZhZGEgdSBPYnJhIENvbGVjdGl2YSwgVXN0ZWQgZGViZSBtYW50ZW5lciBpbnRhY3RhIHRvZGEgbGEgaW5mb3JtYWNpw7NuIGRlIGRlcmVjaG8gZGUgYXV0b3IgZGUgbGEgT2JyYSB5IHByb3BvcmNpb25hciwgZGUgZm9ybWEgcmF6b25hYmxlIHNlZ8O6biBlbCBtZWRpbyBvIG1hbmVyYSBxdWUgVXN0ZWQgZXN0w6kgdXRpbGl6YW5kbzogKGkpIGVsIG5vbWJyZSBkZWwgQXV0b3IgT3JpZ2luYWwgc2kgZXN0w6EgcHJvdmlzdG8gKG8gc2V1ZMOzbmltbywgc2kgZnVlcmUgYXBsaWNhYmxlKSwgeS9vIChpaSkgZWwgbm9tYnJlIGRlIGxhIHBhcnRlIG8gbGFzIHBhcnRlcyBxdWUgZWwgQXV0b3IgT3JpZ2luYWwgeS9vIGVsIExpY2VuY2lhbnRlIGh1YmllcmVuIGRlc2lnbmFkbyBwYXJhIGxhIGF0cmlidWNpw7NuICh2LmcuLCB1biBpbnN0aXR1dG8gcGF0cm9jaW5hZG9yLCBlZGl0b3JpYWwsIHB1YmxpY2FjacOzbikgZW4gbGEgaW5mb3JtYWNpw7NuIGRlIGxvcyBkZXJlY2hvcyBkZSBhdXRvciBkZWwgTGljZW5jaWFudGUsIHTDqXJtaW5vcyBkZSBzZXJ2aWNpb3MgbyBkZSBvdHJhcyBmb3JtYXMgcmF6b25hYmxlczsgZWwgdMOtdHVsbyBkZSBsYSBPYnJhIHNpIGVzdMOhIHByb3Zpc3RvOyBlbiBsYSBtZWRpZGEgZGUgbG8gcmF6b25hYmxlbWVudGUgZmFjdGlibGUgeSwgc2kgZXN0w6EgcHJvdmlzdG8sIGVsIElkZW50aWZpY2Fkb3IgVW5pZm9ybWUgZGUgUmVjdXJzb3MgKFVuaWZvcm0gUmVzb3VyY2UgSWRlbnRpZmllcikgcXVlIGVsIExpY2VuY2lhbnRlIGVzcGVjaWZpY2EgcGFyYSBzZXIgYXNvY2lhZG8gY29uIGxhIE9icmEsIHNhbHZvIHF1ZSB0YWwgVVJJIG5vIHNlIHJlZmllcmEgYSBsYSBub3RhIHNvYnJlIGxvcyBkZXJlY2hvcyBkZSBhdXRvciBvIGEgbGEgaW5mb3JtYWNpw7NuIHNvYnJlIGVsIGxpY2VuY2lhbWllbnRvIGRlIGxhIE9icmE7IHkgZW4gZWwgY2FzbyBkZSB1bmEgT2JyYSBEZXJpdmFkYSwgYXRyaWJ1aXIgZWwgY3LDqWRpdG8gaWRlbnRpZmljYW5kbyBlbCB1c28gZGUgbGEgT2JyYSBlbiBsYSBPYnJhIERlcml2YWRhICh2LmcuLCAiVHJhZHVjY2nDs24gRnJhbmNlc2EgZGUgbGEgT2JyYSBkZWwgQXV0b3IgT3JpZ2luYWwsIiBvICJHdWnDs24gQ2luZW1hdG9ncsOhZmljbyBiYXNhZG8gZW4gbGEgT2JyYSBvcmlnaW5hbCBkZWwgQXV0b3IgT3JpZ2luYWwiKS4gVGFsIGNyw6lkaXRvIHB1ZWRlIHNlciBpbXBsZW1lbnRhZG8gZGUgY3VhbHF1aWVyIGZvcm1hIHJhem9uYWJsZTsgZW4gZWwgY2Fzbywgc2luIGVtYmFyZ28sIGRlIE9icmFzIERlcml2YWRhcyB1IE9icmFzIENvbGVjdGl2YXMsIHRhbCBjcsOpZGl0byBhcGFyZWNlcsOhLCBjb21vIG3DrW5pbW8sIGRvbmRlIGFwYXJlY2UgZWwgY3LDqWRpdG8gZGUgY3VhbHF1aWVyIG90cm8gYXV0b3IgY29tcGFyYWJsZSB5IGRlIHVuYSBtYW5lcmEsIGFsIG1lbm9zLCB0YW4gZGVzdGFjYWRhIGNvbW8gZWwgY3LDqWRpdG8gZGUgb3RybyBhdXRvciBjb21wYXJhYmxlLgoKZC4JUGFyYSBldml0YXIgdG9kYSBjb25mdXNpw7NuLCBlbCBMaWNlbmNpYW50ZSBhY2xhcmEgcXVlLCBjdWFuZG8gbGEgb2JyYSBlcyB1bmEgY29tcG9zaWNpw7NuIG11c2ljYWw6CgppLglSZWdhbMOtYXMgcG9yIGludGVycHJldGFjacOzbiB5IGVqZWN1Y2nDs24gYmFqbyBsaWNlbmNpYXMgZ2VuZXJhbGVzLiBFbCBMaWNlbmNpYW50ZSBzZSByZXNlcnZhIGVsIGRlcmVjaG8gZXhjbHVzaXZvIGRlIGF1dG9yaXphciBsYSBlamVjdWNpw7NuIHDDumJsaWNhIG8gbGEgZWplY3VjacOzbiBww7pibGljYSBkaWdpdGFsIGRlIGxhIG9icmEgeSBkZSByZWNvbGVjdGFyLCBzZWEgaW5kaXZpZHVhbG1lbnRlIG8gYSB0cmF2w6lzIGRlIHVuYSBzb2NpZWRhZCBkZSBnZXN0acOzbiBjb2xlY3RpdmEgZGUgZGVyZWNob3MgZGUgYXV0b3IgeSBkZXJlY2hvcyBjb25leG9zIChwb3IgZWplbXBsbywgU0FZQ08pLCBsYXMgcmVnYWzDrWFzIHBvciBsYSBlamVjdWNpw7NuIHDDumJsaWNhIG8gcG9yIGxhIGVqZWN1Y2nDs24gcMO6YmxpY2EgZGlnaXRhbCBkZSBsYSBvYnJhIChwb3IgZWplbXBsbyBXZWJjYXN0KSBsaWNlbmNpYWRhIGJham8gbGljZW5jaWFzIGdlbmVyYWxlcywgc2kgbGEgaW50ZXJwcmV0YWNpw7NuIG8gZWplY3VjacOzbiBkZSBsYSBvYnJhIGVzdMOhIHByaW1vcmRpYWxtZW50ZSBvcmllbnRhZGEgcG9yIG8gZGlyaWdpZGEgYSBsYSBvYnRlbmNpw7NuIGRlIHVuYSB2ZW50YWphIGNvbWVyY2lhbCBvIHVuYSBjb21wZW5zYWNpw7NuIG1vbmV0YXJpYSBwcml2YWRhLgoKaWkuCVJlZ2Fsw61hcyBwb3IgRm9ub2dyYW1hcy4gRWwgTGljZW5jaWFudGUgc2UgcmVzZXJ2YSBlbCBkZXJlY2hvIGV4Y2x1c2l2byBkZSByZWNvbGVjdGFyLCBpbmRpdmlkdWFsbWVudGUgbyBhIHRyYXbDqXMgZGUgdW5hIHNvY2llZGFkIGRlIGdlc3Rpw7NuIGNvbGVjdGl2YSBkZSBkZXJlY2hvcyBkZSBhdXRvciB5IGRlcmVjaG9zIGNvbmV4b3MgKHBvciBlamVtcGxvLCBsb3MgY29uc2FncmFkb3MgcG9yIGxhIFNBWUNPKSwgdW5hIGFnZW5jaWEgZGUgZGVyZWNob3MgbXVzaWNhbGVzIG8gYWxnw7puIGFnZW50ZSBkZXNpZ25hZG8sIGxhcyByZWdhbMOtYXMgcG9yIGN1YWxxdWllciBmb25vZ3JhbWEgcXVlIFVzdGVkIGNyZWUgYSBwYXJ0aXIgZGUgbGEgb2JyYSAo4oCcdmVyc2nDs24gY292ZXLigJ0pIHkgZGlzdHJpYnV5YSwgZW4gbG9zIHTDqXJtaW5vcyBkZWwgcsOpZ2ltZW4gZGUgZGVyZWNob3MgZGUgYXV0b3IsIHNpIGxhIGNyZWFjacOzbiBvIGRpc3RyaWJ1Y2nDs24gZGUgZXNhIHZlcnNpw7NuIGNvdmVyIGVzdMOhIHByaW1vcmRpYWxtZW50ZSBkZXN0aW5hZGEgbyBkaXJpZ2lkYSBhIG9idGVuZXIgdW5hIHZlbnRhamEgY29tZXJjaWFsIG8gdW5hIGNvbXBlbnNhY2nDs24gbW9uZXRhcmlhIHByaXZhZGEuCgplLglHZXN0acOzbiBkZSBEZXJlY2hvcyBkZSBBdXRvciBzb2JyZSBJbnRlcnByZXRhY2lvbmVzIHkgRWplY3VjaW9uZXMgRGlnaXRhbGVzIChXZWJDYXN0aW5nKS4gUGFyYSBldml0YXIgdG9kYSBjb25mdXNpw7NuLCBlbCBMaWNlbmNpYW50ZSBhY2xhcmEgcXVlLCBjdWFuZG8gbGEgb2JyYSBzZWEgdW4gZm9ub2dyYW1hLCBlbCBMaWNlbmNpYW50ZSBzZSByZXNlcnZhIGVsIGRlcmVjaG8gZXhjbHVzaXZvIGRlIGF1dG9yaXphciBsYSBlamVjdWNpw7NuIHDDumJsaWNhIGRpZ2l0YWwgZGUgbGEgb2JyYSAocG9yIGVqZW1wbG8sIHdlYmNhc3QpIHkgZGUgcmVjb2xlY3RhciwgaW5kaXZpZHVhbG1lbnRlIG8gYSB0cmF2w6lzIGRlIHVuYSBzb2NpZWRhZCBkZSBnZXN0acOzbiBjb2xlY3RpdmEgZGUgZGVyZWNob3MgZGUgYXV0b3IgeSBkZXJlY2hvcyBjb25leG9zIChwb3IgZWplbXBsbywgQUNJTlBSTyksIGxhcyByZWdhbMOtYXMgcG9yIGxhIGVqZWN1Y2nDs24gcMO6YmxpY2EgZGlnaXRhbCBkZSBsYSBvYnJhIChwb3IgZWplbXBsbywgd2ViY2FzdCksIHN1amV0YSBhIGxhcyBkaXNwb3NpY2lvbmVzIGFwbGljYWJsZXMgZGVsIHLDqWdpbWVuIGRlIERlcmVjaG8gZGUgQXV0b3IsIHNpIGVzdGEgZWplY3VjacOzbiBww7pibGljYSBkaWdpdGFsIGVzdMOhIHByaW1vcmRpYWxtZW50ZSBkaXJpZ2lkYSBhIG9idGVuZXIgdW5hIHZlbnRhamEgY29tZXJjaWFsIG8gdW5hIGNvbXBlbnNhY2nDs24gbW9uZXRhcmlhIHByaXZhZGEuCgo1LiBSZXByZXNlbnRhY2lvbmVzLCBHYXJhbnTDrWFzIHkgTGltaXRhY2lvbmVzIGRlIFJlc3BvbnNhYmlsaWRhZC4KQSBNRU5PUyBRVUUgTEFTIFBBUlRFUyBMTyBBQ09SREFSQU4gREUgT1RSQSBGT1JNQSBQT1IgRVNDUklUTywgRUwgTElDRU5DSUFOVEUgT0ZSRUNFIExBIE9CUkEgKEVOIEVMIEVTVEFETyBFTiBFTCBRVUUgU0UgRU5DVUVOVFJBKSDigJxUQUwgQ1VBTOKAnSwgU0lOIEJSSU5EQVIgR0FSQU5Uw41BUyBERSBDTEFTRSBBTEdVTkEgUkVTUEVDVE8gREUgTEEgT0JSQSwgWUEgU0VBIEVYUFJFU0EsIElNUEzDjUNJVEEsIExFR0FMIE8gQ1VBTFFVSUVSQSBPVFJBLCBJTkNMVVlFTkRPLCBTSU4gTElNSVRBUlNFIEEgRUxMQVMsIEdBUkFOVMONQVMgREUgVElUVUxBUklEQUQsIENPTUVSQ0lBQklMSURBRCwgQURBUFRBQklMSURBRCBPIEFERUNVQUNJw5NOIEEgUFJPUMOTU0lUTyBERVRFUk1JTkFETywgQVVTRU5DSUEgREUgSU5GUkFDQ0nDk04sIERFIEFVU0VOQ0lBIERFIERFRkVDVE9TIExBVEVOVEVTIE8gREUgT1RSTyBUSVBPLCBPIExBIFBSRVNFTkNJQSBPIEFVU0VOQ0lBIERFIEVSUk9SRVMsIFNFQU4gTyBOTyBERVNDVUJSSUJMRVMgKFBVRURBTiBPIE5PIFNFUiBFU1RPUyBERVNDVUJJRVJUT1MpLiBBTEdVTkFTIEpVUklTRElDQ0lPTkVTIE5PIFBFUk1JVEVOIExBIEVYQ0xVU0nDk04gREUgR0FSQU5Uw41BUyBJTVBMw41DSVRBUywgRU4gQ1VZTyBDQVNPIEVTVEEgRVhDTFVTScOTTiBQVUVERSBOTyBBUExJQ0FSU0UgQSBVU1RFRC4KCjYuIExpbWl0YWNpw7NuIGRlIHJlc3BvbnNhYmlsaWRhZC4KQSBNRU5PUyBRVUUgTE8gRVhJSkEgRVhQUkVTQU1FTlRFIExBIExFWSBBUExJQ0FCTEUsIEVMIExJQ0VOQ0lBTlRFIE5PIFNFUsOBIFJFU1BPTlNBQkxFIEFOVEUgVVNURUQgUE9SIERBw5FPIEFMR1VOTywgU0VBIFBPUiBSRVNQT05TQUJJTElEQUQgRVhUUkFDT05UUkFDVFVBTCwgUFJFQ09OVFJBQ1RVQUwgTyBDT05UUkFDVFVBTCwgT0JKRVRJVkEgTyBTVUJKRVRJVkEsIFNFIFRSQVRFIERFIERBw5FPUyBNT1JBTEVTIE8gUEFUUklNT05JQUxFUywgRElSRUNUT1MgTyBJTkRJUkVDVE9TLCBQUkVWSVNUT1MgTyBJTVBSRVZJU1RPUyBQUk9EVUNJRE9TIFBPUiBFTCBVU08gREUgRVNUQSBMSUNFTkNJQSBPIERFIExBIE9CUkEsIEFVTiBDVUFORE8gRUwgTElDRU5DSUFOVEUgSEFZQSBTSURPIEFEVkVSVElETyBERSBMQSBQT1NJQklMSURBRCBERSBESUNIT1MgREHDkU9TLiBBTEdVTkFTIExFWUVTIE5PIFBFUk1JVEVOIExBIEVYQ0xVU0nDk04gREUgQ0lFUlRBIFJFU1BPTlNBQklMSURBRCwgRU4gQ1VZTyBDQVNPIEVTVEEgRVhDTFVTScOTTiBQVUVERSBOTyBBUExJQ0FSU0UgQSBVU1RFRC4KCjcuIFTDqXJtaW5vLgoKYS4JRXN0YSBMaWNlbmNpYSB5IGxvcyBkZXJlY2hvcyBvdG9yZ2Fkb3MgZW4gdmlydHVkIGRlIGVsbGEgdGVybWluYXLDoW4gYXV0b23DoXRpY2FtZW50ZSBzaSBVc3RlZCBpbmZyaW5nZSBhbGd1bmEgY29uZGljacOzbiBlc3RhYmxlY2lkYSBlbiBlbGxhLiBTaW4gZW1iYXJnbywgbG9zIGluZGl2aWR1b3MgbyBlbnRpZGFkZXMgcXVlIGhhbiByZWNpYmlkbyBPYnJhcyBEZXJpdmFkYXMgbyBDb2xlY3RpdmFzIGRlIFVzdGVkIGRlIGNvbmZvcm1pZGFkIGNvbiBlc3RhIExpY2VuY2lhLCBubyB2ZXLDoW4gdGVybWluYWRhcyBzdXMgbGljZW5jaWFzLCBzaWVtcHJlIHF1ZSBlc3RvcyBpbmRpdmlkdW9zIG8gZW50aWRhZGVzIHNpZ2FuIGN1bXBsaWVuZG8gw61udGVncmFtZW50ZSBsYXMgY29uZGljaW9uZXMgZGUgZXN0YXMgbGljZW5jaWFzLiBMYXMgU2VjY2lvbmVzIDEsIDIsIDUsIDYsIDcsIHkgOCBzdWJzaXN0aXLDoW4gYSBjdWFscXVpZXIgdGVybWluYWNpw7NuIGRlIGVzdGEgTGljZW5jaWEuCgpiLglTdWpldGEgYSBsYXMgY29uZGljaW9uZXMgeSB0w6lybWlub3MgYW50ZXJpb3JlcywgbGEgbGljZW5jaWEgb3RvcmdhZGEgYXF1w60gZXMgcGVycGV0dWEgKGR1cmFudGUgZWwgcGVyw61vZG8gZGUgdmlnZW5jaWEgZGUgbG9zIGRlcmVjaG9zIGRlIGF1dG9yIGRlIGxhIG9icmEpLiBObyBvYnN0YW50ZSBsbyBhbnRlcmlvciwgZWwgTGljZW5jaWFudGUgc2UgcmVzZXJ2YSBlbCBkZXJlY2hvIGEgcHVibGljYXIgeS9vIGVzdHJlbmFyIGxhIE9icmEgYmFqbyBjb25kaWNpb25lcyBkZSBsaWNlbmNpYSBkaWZlcmVudGVzIG8gYSBkZWphciBkZSBkaXN0cmlidWlybGEgZW4gbG9zIHTDqXJtaW5vcyBkZSBlc3RhIExpY2VuY2lhIGVuIGN1YWxxdWllciBtb21lbnRvOyBlbiBlbCBlbnRlbmRpZG8sIHNpbiBlbWJhcmdvLCBxdWUgZXNhIGVsZWNjacOzbiBubyBzZXJ2aXLDoSBwYXJhIHJldm9jYXIgZXN0YSBsaWNlbmNpYSBvIHF1ZSBkZWJhIHNlciBvdG9yZ2FkYSAsIGJham8gbG9zIHTDqXJtaW5vcyBkZSBlc3RhIGxpY2VuY2lhKSwgeSBlc3RhIGxpY2VuY2lhIGNvbnRpbnVhcsOhIGVuIHBsZW5vIHZpZ29yIHkgZWZlY3RvIGEgbWVub3MgcXVlIHNlYSB0ZXJtaW5hZGEgY29tbyBzZSBleHByZXNhIGF0csOhcy4gTGEgTGljZW5jaWEgcmV2b2NhZGEgY29udGludWFyw6Egc2llbmRvIHBsZW5hbWVudGUgdmlnZW50ZSB5IGVmZWN0aXZhIHNpIG5vIHNlIGxlIGRhIHTDqXJtaW5vIGVuIGxhcyBjb25kaWNpb25lcyBpbmRpY2FkYXMgYW50ZXJpb3JtZW50ZS4KCjguIFZhcmlvcy4KCmEuCUNhZGEgdmV6IHF1ZSBVc3RlZCBkaXN0cmlidXlhIG8gcG9uZ2EgYSBkaXNwb3NpY2nDs24gcMO6YmxpY2EgbGEgT2JyYSBvIHVuYSBPYnJhIENvbGVjdGl2YSwgZWwgTGljZW5jaWFudGUgb2ZyZWNlcsOhIGFsIGRlc3RpbmF0YXJpbyB1bmEgbGljZW5jaWEgZW4gbG9zIG1pc21vcyB0w6lybWlub3MgeSBjb25kaWNpb25lcyBxdWUgbGEgbGljZW5jaWEgb3RvcmdhZGEgYSBVc3RlZCBiYWpvIGVzdGEgTGljZW5jaWEuCgpiLglTaSBhbGd1bmEgZGlzcG9zaWNpw7NuIGRlIGVzdGEgTGljZW5jaWEgcmVzdWx0YSBpbnZhbGlkYWRhIG8gbm8gZXhpZ2libGUsIHNlZ8O6biBsYSBsZWdpc2xhY2nDs24gdmlnZW50ZSwgZXN0byBubyBhZmVjdGFyw6EgbmkgbGEgdmFsaWRleiBuaSBsYSBhcGxpY2FiaWxpZGFkIGRlbCByZXN0byBkZSBjb25kaWNpb25lcyBkZSBlc3RhIExpY2VuY2lhIHksIHNpbiBhY2Npw7NuIGFkaWNpb25hbCBwb3IgcGFydGUgZGUgbG9zIHN1amV0b3MgZGUgZXN0ZSBhY3VlcmRvLCBhcXXDqWxsYSBzZSBlbnRlbmRlcsOhIHJlZm9ybWFkYSBsbyBtw61uaW1vIG5lY2VzYXJpbyBwYXJhIGhhY2VyIHF1ZSBkaWNoYSBkaXNwb3NpY2nDs24gc2VhIHbDoWxpZGEgeSBleGlnaWJsZS4KCmMuCU5pbmfDum4gdMOpcm1pbm8gbyBkaXNwb3NpY2nDs24gZGUgZXN0YSBMaWNlbmNpYSBzZSBlc3RpbWFyw6EgcmVudW5jaWFkYSB5IG5pbmd1bmEgdmlvbGFjacOzbiBkZSBlbGxhIHNlcsOhIGNvbnNlbnRpZGEgYSBtZW5vcyBxdWUgZXNhIHJlbnVuY2lhIG8gY29uc2VudGltaWVudG8gc2VhIG90b3JnYWRvIHBvciBlc2NyaXRvIHkgZmlybWFkbyBwb3IgbGEgcGFydGUgcXVlIHJlbnVuY2llIG8gY29uc2llbnRhLgoKZC4JRXN0YSBMaWNlbmNpYSByZWZsZWphIGVsIGFjdWVyZG8gcGxlbm8gZW50cmUgbGFzIHBhcnRlcyByZXNwZWN0byBhIGxhIE9icmEgYXF1w60gbGljZW5jaWFkYS4gTm8gaGF5IGFycmVnbG9zLCBhY3VlcmRvcyBvIGRlY2xhcmFjaW9uZXMgcmVzcGVjdG8gYSBsYSBPYnJhIHF1ZSBubyBlc3TDqW4gZXNwZWNpZmljYWRvcyBlbiBlc3RlIGRvY3VtZW50by4gRWwgTGljZW5jaWFudGUgbm8gc2UgdmVyw6EgbGltaXRhZG8gcG9yIG5pbmd1bmEgZGlzcG9zaWNpw7NuIGFkaWNpb25hbCBxdWUgcHVlZGEgc3VyZ2lyIGVuIGFsZ3VuYSBjb211bmljYWNpw7NuIGVtYW5hZGEgZGUgVXN0ZWQuIEVzdGEgTGljZW5jaWEgbm8gcHVlZGUgc2VyIG1vZGlmaWNhZGEgc2luIGVsIGNvbnNlbnRpbWllbnRvIG11dHVvIHBvciBlc2NyaXRvIGRlbCBMaWNlbmNpYW50ZSB5IFVzdGVkLgo=