IMPLEMENTACIÓN DEL SERVIDOR STREAMING PARA LA RADIO DE LA UNIVERSIDAD CATÓLICA DE PEREIRA
En este documento se encontrará todo lo relacionado con el problema que presentaba la universidad para la transmisión en vivo de RadioUCP, y como se intentó llegar a una solución.
- Autores:
-
Portocarrero Solis, Jhonatan
Romero Cardona, Laura Vanessa
Orozco Quintero, Giovanny
- Tipo de recurso:
- Trabajo de grado de pregrado
- Fecha de publicación:
- 2025
- Institución:
- Universidad Católica de Pereira
- Repositorio:
- Repositorio Institucional - RIBUC
- Idioma:
- spa
- OAI Identifier:
- oai:repositorio.ucp.edu.co:10785/16652
- Acceso en línea:
- https://hdl.handle.net/10785/16652
https://repositorio.ucp.edu.co/home
- Palabra clave:
- Servidor de streaming
Radio
Transmisión en vivo
Desarrollo web
streaming server
Radio
Live broadcast
Web development
- Rights
- openAccess
- License
- Atribución-NoComercial-SinDerivadas 4.0 Internacional (CC BY-NC-ND 4.0)
id |
RepoRIBUC2_e005bf5260cf83dae5dc78a91f6478dd |
---|---|
oai_identifier_str |
oai:repositorio.ucp.edu.co:10785/16652 |
network_acronym_str |
RepoRIBUC2 |
network_name_str |
Repositorio Institucional - RIBUC |
repository_id_str |
|
dc.title.spa.fl_str_mv |
IMPLEMENTACIÓN DEL SERVIDOR STREAMING PARA LA RADIO DE LA UNIVERSIDAD CATÓLICA DE PEREIRA |
title |
IMPLEMENTACIÓN DEL SERVIDOR STREAMING PARA LA RADIO DE LA UNIVERSIDAD CATÓLICA DE PEREIRA |
spellingShingle |
IMPLEMENTACIÓN DEL SERVIDOR STREAMING PARA LA RADIO DE LA UNIVERSIDAD CATÓLICA DE PEREIRA Servidor de streaming Radio Transmisión en vivo Desarrollo web streaming server Radio Live broadcast Web development |
title_short |
IMPLEMENTACIÓN DEL SERVIDOR STREAMING PARA LA RADIO DE LA UNIVERSIDAD CATÓLICA DE PEREIRA |
title_full |
IMPLEMENTACIÓN DEL SERVIDOR STREAMING PARA LA RADIO DE LA UNIVERSIDAD CATÓLICA DE PEREIRA |
title_fullStr |
IMPLEMENTACIÓN DEL SERVIDOR STREAMING PARA LA RADIO DE LA UNIVERSIDAD CATÓLICA DE PEREIRA |
title_full_unstemmed |
IMPLEMENTACIÓN DEL SERVIDOR STREAMING PARA LA RADIO DE LA UNIVERSIDAD CATÓLICA DE PEREIRA |
title_sort |
IMPLEMENTACIÓN DEL SERVIDOR STREAMING PARA LA RADIO DE LA UNIVERSIDAD CATÓLICA DE PEREIRA |
dc.creator.fl_str_mv |
Portocarrero Solis, Jhonatan Romero Cardona, Laura Vanessa Orozco Quintero, Giovanny |
dc.contributor.advisor.none.fl_str_mv |
Suárez Vásquez, Lina María |
dc.contributor.author.none.fl_str_mv |
Portocarrero Solis, Jhonatan Romero Cardona, Laura Vanessa Orozco Quintero, Giovanny |
dc.contributor.corporatename.none.fl_str_mv |
Universidad Católica de Pereira |
dc.subject.proposal.spa.fl_str_mv |
Servidor de streaming Radio Transmisión en vivo Desarrollo web |
topic |
Servidor de streaming Radio Transmisión en vivo Desarrollo web streaming server Radio Live broadcast Web development |
dc.subject.proposal.eng.fl_str_mv |
streaming server Radio Live broadcast Web development |
description |
En este documento se encontrará todo lo relacionado con el problema que presentaba la universidad para la transmisión en vivo de RadioUCP, y como se intentó llegar a una solución. |
publishDate |
2025 |
dc.date.accessioned.none.fl_str_mv |
2025-05-15T20:32:26Z |
dc.date.available.none.fl_str_mv |
2025-05-15T20:32:26Z |
dc.date.issued.none.fl_str_mv |
2025-01-28 |
dc.type.none.fl_str_mv |
Trabajo de grado - Pregrado |
dc.type.coar.none.fl_str_mv |
http://purl.org/coar/resource_type/c_7a1f |
dc.type.coarversion.none.fl_str_mv |
http://purl.org/coar/version/c_970fb48d4fbd8a85 |
dc.type.content.none.fl_str_mv |
Text |
dc.type.driver.none.fl_str_mv |
info:eu-repo/semantics/bachelorThesis |
dc.type.redcol.none.fl_str_mv |
http://purl.org/redcol/resource_type/TP |
dc.type.version.none.fl_str_mv |
info:eu-repo/semantics/publishedVersion |
format |
http://purl.org/coar/resource_type/c_7a1f |
status_str |
publishedVersion |
dc.identifier.citation.none.fl_str_mv |
Portocarrero Solis, J, Romero Cardona, L y Orozco Quintero, G. (2025). IMPLEMENTACIÓN DEL SERVIDOR STREAMING PARA LA RADIO DE LA UNIVERSIDAD CATÓLICA DE PEREIRA. Universidad Católica de Pereira. Disponible en: https://hdl.handle.net/10785/16652 |
dc.identifier.uri.none.fl_str_mv |
https://hdl.handle.net/10785/16652 |
dc.identifier.repourl.none.fl_str_mv |
https://repositorio.ucp.edu.co/home |
identifier_str_mv |
Portocarrero Solis, J, Romero Cardona, L y Orozco Quintero, G. (2025). IMPLEMENTACIÓN DEL SERVIDOR STREAMING PARA LA RADIO DE LA UNIVERSIDAD CATÓLICA DE PEREIRA. Universidad Católica de Pereira. Disponible en: https://hdl.handle.net/10785/16652 |
url |
https://hdl.handle.net/10785/16652 https://repositorio.ucp.edu.co/home |
dc.language.iso.none.fl_str_mv |
spa |
language |
spa |
dc.relation.references.none.fl_str_mv |
Etecé. "Radio". Concepto.de, https://concepto.de/radio-medio-de- comunicacion/. Consultado el: (13 de mayo de 2024) Etecé. "Servidor". Concepto.de, https://concepto.de/servidor/.Consultado el: (13 mayo de 2024) PubNub. "WebSocket Guide". PubNub, https://www.pubnub.com/guides /websockets/. Consultado el: (14 de mayo de 2024) OpenWebinars, "¿Qué es un lenguaje de programación?", OpenWebinars. https://openwebinars.net/blog/que-es-un-lenguaje-de- programacion/#:~:text=Un%20lenguaje%20de%20programaci%C3%B3n%20es,instru cciones%20definidas%20en%20el%20c%C3%B3digo. Consultado el: (14 de mayo de 2024) T-Mobile, "What is Streaming?", T-Mobile, https://es.t-mobile.com/dialed- in/wireless/what-is-streaming. Consultado el: (14 de mayo de 2024) EducaOpen, "Buffer", EducaOpen, https://www.educaopen.com/digital- lab/metaterminos/b/buffer. Consultado el: (14 de mayo de 2024) Profile, "¿Qué es el testing de software?", Profile, https://profile.es/blog/que-es-el- testing-de-software/. Consultado el: (14 de mayo de 2024) The Bridge, "¿Qué es el Desarrollo Web (Web Development)?", The Bridge, https://thebridge.tech/blog/que-es-el-desarrollo-web-web- development#:~:text=Podemos%20definir%20el%20Desarrollo%20Web,funcionalidad e s%20para%20el%20usuario%20final. Consultado el: (14 de mayo de 2024) KeepCoding, "¿Qué es el desarrollo Front-End?", KeepCoding, https://keepcoding.io/blog/que-es-el-desarrollo-front-end/. Consultado el: (14 de mayo de 2024) Amazon Web Services, "The difference between frontend and backend", Amazon Web Services, https://aws.amazon.com/es/compare/the-difference-between-frontend- and-backend/. Consultado el: (14 de mayo de 2024) React, "React – A JavaScript library for building user interfaces", Meta Platforms. https://es.react.dev/. Consultado el: (14 de mayo de 2024) IONOS. "¿Qué es WebSocket?". IONOS. https://www.ionos.es/digitalguide/paginas- web/desarrollo-web/que-es-websocket/. Consultado el: (14 de mayo de 2024) Mozilla, "MVC", Mozilla Developer Networks, https://developer.mozilla.org/es/docs /Glossary/MVC. Consultado el: (16 de mayo de 2024) IBM, "Software Testing", IBM, https://www.ibm.com/es-es/topics/software-testing. Consultado el: (16 de mayo de 2024) Fortinet, "TCP/IP", Fortinet, https://www.fortinet.com/lat/resources/cyberglossary/ tcp-ip. Consultado el: (16 de mayo de 2024) Cloudflare, "User Datagram Protocol (UDP)", Cloudflare, https://www.cloudflare.com/es-es/learning/ddos/glossary/user-datagram-protocol-udp/. Consultado el: 16 mayo, 2024 Visure Solutions, "Software de modelado de requisitos", Visure Solutions, https://visuresolutions.com/es/blog/requirements-modeling-software/ Consultado el: (24 de agosto de 2024) HP, "Why Should I Upgrade to Intel Xeon Processor?", HP Tech Takes. Disponible en: https://hp.com/us-en/shop/tech-takes/why-should-i-upgrade-to-intel-xeon- processor#:~:text=Intel%C2%AE%20Xeon%C2%AE%20processors%20offer%20exce ptional%20performance%20and%20reliability,%2C%20stability%2C%20and%20data% 20integrity. Consultado el: (31 de agosto de 2024) PC Ware, "Comparación exhaustiva: Portátiles con 16 GB vs. 32 GB de RAM", PC Ware, https://www.pcware.com.co/comparacion-exhaustiva-portatiles-con-16-gb-vs-32- gb-de-ram. Consultado el: (31 de agosto de 2024) InfoComputer, "¿Vale la pena un SSD de 500 GB?", InfoComputer, https://www.info-computer.com/blog/vale-la-pena-un-ssd-de-500-gb.html. Consultado el: (3 de septiembre de 2024) Jazztel, "Fibra Jazztel 600 MB vs 1 GB: ¿cuál es la mejor para ti?", Jazztel, https://www.mijazztel.com/blog/internet/fibra-jazztel-600-mb-vs-1-gb-cual-es-la-mejor- para- ti#:~:text=Mientras%20que%20la%20fibra%20de,deseado%20entre%20costo%20y%2 0rendimiento. Consultado el: (3 de septiembre de 2024) HostingTG, "Ubuntu 24.04: seguridad, gestión y optimización", HostingTG, https://www.hostingtg.com/blog/ubuntu-24-04-seguridad-gestion-optimizacion/. Consultado el: (3 de septiembre de 2024). Hostinger, “Qué es React: definición, características y funcionamiento”, Hostinger, https://www.hostinger.co/tutoriales/que-es-react. Consultado el: (19 de septiembre de 2024) Kinsta,“Qué es Node.js y por qué debería usarlo”, Kinsta, https://kinsta.com/es/ base-de-conocimiento/que-es-node-js/. Consultado el: (19 de septiembre de 2024) Kinsta, “Que es Express.js? Todo lo que Debes saber”, Kinsta, https://kinsta.com/es/base-de-conocimiento/que-es-express/. Consultado el: (19 de septiembre de 2024) Radio Universitaria, “RRUC”, Radio Universitaria, https://sites.google.com/a/radiouniversitaria.org/rruc/. Consultado el: (29 de noviembre de 2024) |
dc.rights.license.none.fl_str_mv |
Atribución-NoComercial-SinDerivadas 4.0 Internacional (CC BY-NC-ND 4.0) |
dc.rights.accessrights.none.fl_str_mv |
info:eu-repo/semantics/openAccess |
dc.rights.coar.none.fl_str_mv |
http://purl.org/coar/access_right/c_abf2 |
rights_invalid_str_mv |
Atribución-NoComercial-SinDerivadas 4.0 Internacional (CC 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 |
94 |
dc.format.mimetype.none.fl_str_mv |
application/pdf |
dc.publisher.none.fl_str_mv |
Universidad Católica de Pereira |
dc.publisher.faculty.none.fl_str_mv |
Facultad de Ciencias Básicas e Ingeniería |
dc.publisher.place.none.fl_str_mv |
Pereira, Risaralda |
dc.publisher.program.none.fl_str_mv |
Tecnología en Sistemas |
publisher.none.fl_str_mv |
Universidad Católica de Pereira |
institution |
Universidad Católica de Pereira |
bitstream.url.fl_str_mv |
https://repositorio.ucp.edu.co/bitstreams/4e4b69d5-e6c2-4662-adeb-01c51c0117b9/download https://repositorio.ucp.edu.co/bitstreams/73d41f6b-1b57-45f3-98b7-eeb785c4824f/download https://repositorio.ucp.edu.co/bitstreams/c3e3b2f5-1552-4db8-afa2-55522a540ebd/download https://repositorio.ucp.edu.co/bitstreams/70dae48c-da8a-46fc-b0fc-bf2478d3e321/download |
bitstream.checksum.fl_str_mv |
8c9b9599b31e684b98b3edc61a6d75e5 73a5432e0b76442b22b026844140d683 d6c7ff95611ba19815945de0c5f3033a f91dfa0a6499d07449594bd3e7e05742 |
bitstream.checksumAlgorithm.fl_str_mv |
MD5 MD5 MD5 MD5 |
repository.name.fl_str_mv |
Repositorio Institucional de la Universidad Católica de Pereira - RIBUC |
repository.mail.fl_str_mv |
bdigital@metabiblioteca.com |
_version_ |
1834112743968342016 |
spelling |
Suárez Vásquez, Lina MaríaPortocarrero Solis, JhonatanRomero Cardona, Laura VanessaOrozco Quintero, GiovannyUniversidad Católica de Pereira2025-05-15T20:32:26Z2025-05-15T20:32:26Z2025-01-28Portocarrero Solis, J, Romero Cardona, L y Orozco Quintero, G. (2025). IMPLEMENTACIÓN DEL SERVIDOR STREAMING PARA LA RADIO DE LA UNIVERSIDAD CATÓLICA DE PEREIRA. Universidad Católica de Pereira. Disponible en: https://hdl.handle.net/10785/16652https://hdl.handle.net/10785/16652https://repositorio.ucp.edu.co/homeEn este documento se encontrará todo lo relacionado con el problema que presentaba la universidad para la transmisión en vivo de RadioUCP, y como se intentó llegar a una solución.This document contains everything related to the problem the university was experiencing with RadioUCP's live broadcast, and how a solution was attempted.1. GLOSARIO ............................................................................................................. 13 2. RESUMEN .............................................................................................................. 14 3. ABSTRACT ............................................................................................................. 15 4. INTRODUCCIÓN .................................................................................................... 16 5. PROBLEMA ............................................................................................................ 17 6. DELIMITACIÓN Y/O ALCANCES DEL PROYECTO .............................................. 18 6.1. DELIMITACIÓN ESPACIAL ............................................................................. 18 6.2. DELIMITACIÓN TEMPORAL ........................................................................... 18 6.3. DELIMITACIÓN DEL UNIVERSO .................................................................... 18 6.4. DELIMITACIÓN DEL CONTENIDO.................................................................. 18 7. JUSTIFICACIÓN ..................................................................................................... 19 8. OBJETIVO GENERAL ............................................................................................ 20 9. OBJETIVOS ESPECÍFICOS ................................................................................... 21 10. MARCO TEÓRICO .............................................................................................. 22 10.1. STREAMING .................................................................................................... 22 10.2. BUFFER ........................................................................................................... 22 10.3. RADIO.............................................................................................................. 22 10.4. SERVIDOR ...................................................................................................... 23 10.5. DESARROLLO WEB........................................................................................ 23 10.6. FRONTEND ..................................................................................................... 23 10.7. BACKEND ........................................................................................................ 24 10.8. REACT ............................................................................................................. 24 10.9. WEBSOCKETS ................................................................................................ 24 10.10. MODELO, VISTA Y CONTROLADOR .......................................................... 25 10.11. PRUEBAS DE SOFTWARE.......................................................................... 25 10.12. PROTOCOLO DE CONTROL DE TRANSMISIÓN (TCP) ............................. 25 10.13. PROTOCOLO DE DATAGRAMAS DE USUARIO (UDP) .............................. 25 11. ENFOQUE METODOLÓGICO ............................................................................ 26 11.1. ANÁLISIS DE REQUERIMIENTOS .................................................................. 26 11.2. SELECCIÓN DE TECNOLOGÍAS .................................................................... 26 11.3. DISEÑO DEL SISTEMA ................................................................................... 26 11.4. IMPLEMENTACIÓN DEL SERVIDOR STREAMING........................................ 27 11.5. DESARROLLO DE LA INTERFAZ DE USUARIO............................................. 27 11.6. PRUEBAS Y VALIDACIÓN .............................................................................. 27 12.PLANIFICACIÓN DEL PROYECTO .................................................................... 28 13.PRESUPUESTO ................................................................................................. 30 14.APLICACIÓN DE METODOLOGÍA DE DESARROLLO ...................................... 32 14.1. METODOLOGÍA ÁGIL KANBAN: ..................................................................... 32 15.MODELO DE REQUERIMIENTOS...................................................................... 34 16.MODELO DE ANÁLISIS ...................................................................................... 35 16.1. DIAGRAMA DE CASOS DE USO..................................................................... 35 16.2. DIAGRAMA DE ACTIVIDADES........................................................................ 36 16.3. DIAGRAMA DE SECUENCIA........................................................................... 39 17. MODELO DE DISEÑO ........................................................................................ 41 17.1 DISEÑO DE BASE DE DATOS ........................................................................ 41 17.2 DISEÑO DE INTERFACES .............................................................................. 42 17.2.1 Locutor. ..................................................................................................... 42 17.2.2 Administrador. ........................................................................................... 47 17.2.3 Vista general. ............................................................................................ 50 17.2.4 Oyentes. ................................................................................................... 52 17.3 DISEÑO DE SOFTWARE ................................................................................ 55 18. MODELO DE IMPLEMENTACIÓN ...................................................................... 56 18.1 HARDWARE .................................................................................................... 56 18.1.1 Estación de trabajo. .................................................................................. 56 18.1.2 Equipamiento y redes. .............................................................................. 57 18.2 SOFTWARE ..................................................................................................... 57 18.2.1 Herramientas de desarrollo. ...................................................................... 57 18.3 RECURSOS HUMANOS: ................................................................................. 58 19.PRUEBAS ........................................................................................................... 59 20.DESCRIPCIÓN DE TECNOLOGÍAS ................................................................... 62 20.1. REACT: ............................................................................................................ 62 20.2. NODEJS: ......................................................................................................... 62 20.3. EXPRESSJS: ................................................................................................... 62 20.4. WEBSOCKET .................................................................................................. 63 21. CONCRECIÓN DEL MODELO ............................................................................ 64 21.1. ANÁLISIS DE REQUERIMIENTOS: ................................................................. 64 21.2. DISEÑO DEL SISTEMA: .................................................................................. 65 21.3. DESARROLLO DEL SISTEMA: ....................................................................... 66 21.4. PRUEBAS Y VALIDACIÓN: ............................................................................. 87 22. CONCLUSIONES ................................................................................................ 88 23. RECOMENDACIONES........................................................................................ 8924. 24. REFERENCIAS ................................................................................................... 90PregradoTecnólogo en SistemasLISTA DE TABLAS TABLA 1. PLANIFICACIÓN DEL PROYECTO ............................................................. 28 TABLA 2. INFRAESTRUCTURA Y HERRAMIENTAS.................................................. 30 TABLA 3. HOSTING ..................................................................................................... 30 TABLA 4. REPOSITORIO ONLINE .............................................................................. 30 TABLA 5. DOMINIO ...................................................................................................... 30 TABLA 6. RECURSOS HUMANOS .............................................................................. 31 TABLA 7. INVESTIGACIÓN Y DOCUMENTACIÓN ..................................................... 31 TABLA 8. CAPACITACIÓN Y FORMACIÓN ................................................................ 31 TABLA 9. GASTOS ADMINISTRACIÓN....................................................................... 31 TABLA 10. MODELO DE REQUISITOS. ........................................................................ 34LISTAS DE FIGURAS FIGURA 1. TABLERO KANBAN ..................................................................................... 33 FIGURA 2. DIAGRAMA DE CASOS DE USO ................................................................ 35 FIGURA 3. DIAGRAMA DE ACTIVADES ....................................................................... 37 FIGURA 4. DIAGRAMA DE SECUENCIA....................................................................... 39 FIGURA 5. DISEÑO DE BASE DE DATOS .................................................................... 41 FIGURA 6. PANEL DE INICIO DEL LOCUTOR ............................................................. 42 FIGURA 7. PANEL DE INICIO DEL LOCUTOR – MODO OSCURO .............................. 43 FIGURA 8. PANEL DE PROGRAMAS ASIGNADOS DEL LOCUTOR ........................... 43 FIGURA 9. PANEL DE PROGRAMAS ASIGNADOS DEL LOCUTOR – MODO OSCURO ………………………………………………………………………………………44 FIGURA 10. PANEL DE TRANSMISIÓN EN VIVO POR PARTE DEL LOCUTOR ....... 44 FIGURA 11. PANEL DE TRANSMISIÓN EN VIVO POR PARTE DEL LOCUTOR – MODO OSCURO ........................................................................................................... 45 FIGURA 12. PANEL DE AUDIO DEL LOCUTOR ......................................................... 45 FIGURA 13. PANEL DEL AUDIO DEL LOCUTOR – MODO OSCURO ........................ 46 FIGURA 14. PANEL DE EDICIÓN DE PERFIL DEL LOCUTOR................................... 46 FIGURA 15. PANEL DE EDICIÓN DE PERFIL DEL LOCUTOR – MODO OSCURO ... 47 FIGURA 16. PANEL DE PROGRAMAS DEL ADMINISTRADOR ................................. 47 FIGURA 17. PANEL DE PROGRAMAS DEL ADMINISTRADOR – MODO OSCURO . 48 FIGURA 18. PANEL DE LOCUTORES POR PARTE DEL ADMINISTRADOR ............ 48 FIGURA 19. PANEL DE LOCUTORES POR PARTE DEL ADMINISTRADOR – MODO OSCURO………………………………………………………………………………………..49 FIGURA 20. PANEL DE USUARIOS POR PARTE DEL ADMINISTRADOR ................ 49 FIGURA 21. PANEL DE USUARIOS POR PARTE DEL ADMINISTRADOR – MODO OSCURO………………………………………………………………………………………..50 FIGURA 22. PANEL DE VISTA GENERAL ................................................................... 50 FIGURA 23. PANEL DE VISTA GENERAL – INICIO DE SESIÓN................................ 51 FIGURA 24. PANEL DE VISTA GENERAL – REGISTRO ............................................ 52 FIGURA 25. PANEL DEL OYENTE .............................................................................. 52FIGURA 26. PANEL DEL USUARIO – EDITAR PERFIL .............................................. 53 FIGURA 27. PANEL DEL USUARIO – VER TRANSMISIÓN EN VIVO ........................ 54 FIGURA 28. DIAGRAMA DEL DISEÑO DE SOFTWARE ............................................. 55 FIGURA 29. PRUEBAS DE CAJA BLANCA Y CAJA NEGRA ...................................... 59 FIGURA 30. PRUEBAS DE CARGA 1 .......................................................................... 60 FIGURA 31. PRUEBAS DE CARGA 2 .......................................................................... 60 FIGURA 32. EVIDENCIA – ENTREVISTA .................................................................... 64 FIGURA 33. EVIDENCIA – DISEÑO DEL SISTEMA .................................................... 65 FIGURA 34. EVIDENCIA – DISEÑO DEL SISTEMA .................................................... 66 FIGURA 35. EVIDENCIA – CODIFICACIÓN DEL SERVIDOR ..................................... 67 FIGURA 36. EVIDENCIA – CODIFICACIÓN DEL SERVIDOR ..................................... 69 FIGURA 37. EVIDENCIA – CODIFICACIÓN DEL SERVIDOR ..................................... 71 FIGURA 38. EVIDENCIA – CODIFICACIÓN DEL SERVIDOR ..................................... 72 FIGURA 39. EVIDENCIA – CODIFICACIÓN DEL SERVIDOR ..................................... 73 FIGURA 40. EVIDENCIA – CODIFICACIÓN DEL SERVIDOR ..................................... 75 FIGURA 41. EVIDENCIA – CODIFICACIÓN DEL SERVIDOR ..................................... 78 FIGURA 42. EVIDENCIA – CODIFICACIÓN DEL CLIENTE......................................... 81 FIGURA 43. EVIDENCIA – CODIFICACIÓN DEL CLIENTE......................................... 83 FIGURA 44. EVIDENCIA – CODIFICACIÓN DEL CLIENTE ......................................... 8594application/pdfspaUniversidad Católica de PereiraFacultad de Ciencias Básicas e IngenieríaPereira, RisaraldaTecnología en SistemasIMPLEMENTACIÓN DEL SERVIDOR STREAMING PARA LA RADIO DE LA UNIVERSIDAD CATÓLICA DE PEREIRATrabajo de grado - Pregradohttp://purl.org/coar/resource_type/c_7a1fhttp://purl.org/coar/version/c_970fb48d4fbd8a85Textinfo:eu-repo/semantics/bachelorThesishttp://purl.org/redcol/resource_type/TPinfo:eu-repo/semantics/publishedVersionAtribución-NoComercial-SinDerivadas 4.0 Internacional (CC BY-NC-ND 4.0)info:eu-repo/semantics/openAccesshttp://purl.org/coar/access_right/c_abf2Etecé. "Radio". Concepto.de, https://concepto.de/radio-medio-de- comunicacion/. Consultado el: (13 de mayo de 2024)Etecé. "Servidor". Concepto.de, https://concepto.de/servidor/.Consultado el: (13 mayo de 2024)PubNub. "WebSocket Guide". PubNub, https://www.pubnub.com/guides /websockets/. Consultado el: (14 de mayo de 2024)OpenWebinars, "¿Qué es un lenguaje de programación?", OpenWebinars. https://openwebinars.net/blog/que-es-un-lenguaje-de- programacion/#:~:text=Un%20lenguaje%20de%20programaci%C3%B3n%20es,instru cciones%20definidas%20en%20el%20c%C3%B3digo. Consultado el: (14 de mayo de 2024)T-Mobile, "What is Streaming?", T-Mobile, https://es.t-mobile.com/dialed- in/wireless/what-is-streaming. Consultado el: (14 de mayo de 2024)EducaOpen, "Buffer", EducaOpen, https://www.educaopen.com/digital- lab/metaterminos/b/buffer. Consultado el: (14 de mayo de 2024)Profile, "¿Qué es el testing de software?", Profile, https://profile.es/blog/que-es-el- testing-de-software/. Consultado el: (14 de mayo de 2024)The Bridge, "¿Qué es el Desarrollo Web (Web Development)?", The Bridge, https://thebridge.tech/blog/que-es-el-desarrollo-web-web- development#:~:text=Podemos%20definir%20el%20Desarrollo%20Web,funcionalidad e s%20para%20el%20usuario%20final. Consultado el: (14 de mayo de 2024)KeepCoding, "¿Qué es el desarrollo Front-End?", KeepCoding, https://keepcoding.io/blog/que-es-el-desarrollo-front-end/. Consultado el: (14 de mayo de 2024)Amazon Web Services, "The difference between frontend and backend", Amazon Web Services, https://aws.amazon.com/es/compare/the-difference-between-frontend- and-backend/. Consultado el: (14 de mayo de 2024)React, "React – A JavaScript library for building user interfaces", Meta Platforms. https://es.react.dev/. Consultado el: (14 de mayo de 2024)IONOS. "¿Qué es WebSocket?". IONOS. https://www.ionos.es/digitalguide/paginas- web/desarrollo-web/que-es-websocket/. Consultado el: (14 de mayo de 2024)Mozilla, "MVC", Mozilla Developer Networks, https://developer.mozilla.org/es/docs /Glossary/MVC. Consultado el: (16 de mayo de 2024)IBM, "Software Testing", IBM, https://www.ibm.com/es-es/topics/software-testing. Consultado el: (16 de mayo de 2024)Fortinet, "TCP/IP", Fortinet, https://www.fortinet.com/lat/resources/cyberglossary/ tcp-ip. Consultado el: (16 de mayo de 2024)Cloudflare, "User Datagram Protocol (UDP)", Cloudflare, https://www.cloudflare.com/es-es/learning/ddos/glossary/user-datagram-protocol-udp/. Consultado el: 16 mayo, 2024Visure Solutions, "Software de modelado de requisitos", Visure Solutions, https://visuresolutions.com/es/blog/requirements-modeling-software/ Consultado el: (24 de agosto de 2024)HP, "Why Should I Upgrade to Intel Xeon Processor?", HP Tech Takes. Disponible en: https://hp.com/us-en/shop/tech-takes/why-should-i-upgrade-to-intel-xeon- processor#:~:text=Intel%C2%AE%20Xeon%C2%AE%20processors%20offer%20exce ptional%20performance%20and%20reliability,%2C%20stability%2C%20and%20data% 20integrity. Consultado el: (31 de agosto de 2024)PC Ware, "Comparación exhaustiva: Portátiles con 16 GB vs. 32 GB de RAM", PC Ware, https://www.pcware.com.co/comparacion-exhaustiva-portatiles-con-16-gb-vs-32- gb-de-ram. Consultado el: (31 de agosto de 2024)InfoComputer, "¿Vale la pena un SSD de 500 GB?", InfoComputer, https://www.info-computer.com/blog/vale-la-pena-un-ssd-de-500-gb.html. Consultado el: (3 de septiembre de 2024)Jazztel, "Fibra Jazztel 600 MB vs 1 GB: ¿cuál es la mejor para ti?", Jazztel, https://www.mijazztel.com/blog/internet/fibra-jazztel-600-mb-vs-1-gb-cual-es-la-mejor- para- ti#:~:text=Mientras%20que%20la%20fibra%20de,deseado%20entre%20costo%20y%2 0rendimiento. Consultado el: (3 de septiembre de 2024)HostingTG, "Ubuntu 24.04: seguridad, gestión y optimización", HostingTG, https://www.hostingtg.com/blog/ubuntu-24-04-seguridad-gestion-optimizacion/. Consultado el: (3 de septiembre de 2024).Hostinger, “Qué es React: definición, características y funcionamiento”, Hostinger, https://www.hostinger.co/tutoriales/que-es-react. Consultado el: (19 de septiembre de 2024)Kinsta,“Qué es Node.js y por qué debería usarlo”, Kinsta, https://kinsta.com/es/ base-de-conocimiento/que-es-node-js/. Consultado el: (19 de septiembre de 2024)Kinsta, “Que es Express.js? Todo lo que Debes saber”, Kinsta, https://kinsta.com/es/base-de-conocimiento/que-es-express/. Consultado el: (19 de septiembre de 2024)Radio Universitaria, “RRUC”, Radio Universitaria, https://sites.google.com/a/radiouniversitaria.org/rruc/. Consultado el: (29 de noviembre de 2024)Servidor de streamingRadioTransmisión en vivoDesarrollo webstreaming serverRadioLive broadcastWeb developmentPublicationORIGINALDDMTDS15DDMTDS15application/pdf5263009https://repositorio.ucp.edu.co/bitstreams/4e4b69d5-e6c2-4662-adeb-01c51c0117b9/download8c9b9599b31e684b98b3edc61a6d75e5MD55LICENSElicense.txtlicense.txttext/plain; charset=utf-815543https://repositorio.ucp.edu.co/bitstreams/73d41f6b-1b57-45f3-98b7-eeb785c4824f/download73a5432e0b76442b22b026844140d683MD54TEXTDDMTDS15.txtDDMTDS15.txtExtracted texttext/plain74961https://repositorio.ucp.edu.co/bitstreams/c3e3b2f5-1552-4db8-afa2-55522a540ebd/downloadd6c7ff95611ba19815945de0c5f3033aMD56THUMBNAILDDMTDS15.jpgDDMTDS15.jpgGenerated Thumbnailimage/jpeg6089https://repositorio.ucp.edu.co/bitstreams/70dae48c-da8a-46fc-b0fc-bf2478d3e321/downloadf91dfa0a6499d07449594bd3e7e05742MD5710785/16652oai:repositorio.ucp.edu.co:10785/166522025-05-16 03:01:45.772open.accesshttps://repositorio.ucp.edu.coRepositorio Institucional de la Universidad Católica de Pereira - RIBUCbdigital@metabiblioteca.comPHA+TEEgT0JSQSAoVEFMIFkgQ09NTyBTRSBERUZJTkUgTcOBUyBBREVMQU5URSkgU0UgT1RPUkdBIEJBSk8gTE9TIFRFUk1JTk9TIERFIEVTVEEgTElDRU5DSUEgUMOaQkxJQ0EgREUgQ1JFQVRJVkUgQ09NTU9OUyAo4oCcTFBDQ+KAnSBPIOKAnExJQ0VOQ0lB4oCdKS4gTEEgT0JSQSBFU1TDgSBQUk9URUdJREEgUE9SIERFUkVDSE9TIERFIEFVVE9SIFkvVSBPVFJBUyBMRVlFUyBBUExJQ0FCTEVTLiBRVUVEQSBQUk9ISUJJRE8gQ1VBTFFVSUVSIFVTTyBRVUUgU0UgSEFHQSBERSBMQSBPQlJBIFFVRSBOTyBDVUVOVEUgQ09OIExBIEFVVE9SSVpBQ0nDk04gUEVSVElORU5URSBERSBDT05GT1JNSURBRCBDT04gTE9TIFTDiVJNSU5PUyBERSBFU1RBIExJQ0VOQ0lBIFkgREUgTEEgTEVZIERFIERFUkVDSE8gREUgQVVUT1IuPC9wPgo8cD5NRURJQU5URSBFTCBFSkVSQ0lDSU8gREUgQ1VBTFFVSUVSQSBERSBMT1MgREVSRUNIT1MgUVVFIFNFIE9UT1JHQU4gRU4gRVNUQSBMSUNFTkNJQSwgVVNURUQgQUNFUFRBIFkgQUNVRVJEQSBRVUVEQVIgT0JMSUdBRE8gRU4gTE9TIFRFUk1JTk9TIFFVRSBTRSBTRcORQUxBTiBFTiBFTExBLiBFTCBMSUNFTkNJQU5URSBDT05DRURFIEEgVVNURUQgTE9TIERFUkVDSE9TIENPTlRFTklET1MgRU4gRVNUQSBMSUNFTkNJQSBDT05ESUNJT05BRE9TIEEgTEEgQUNFUFRBQ0nDk04gREUgU1VTIFRFUk1JTk9TIFkgQ09ORElDSU9ORVMuPC9wPgo8b2wgdHlwZT0iMSI+CiAgPGxpPgogICAgRGVmaW5pY2lvbmVzCiAgICA8b2wgdHlwZT1hPgogICAgICA8bGk+T2JyYSBDb2xlY3RpdmEgZXMgdW5hIG9icmEsIHRhbCBjb21vIHVuYSBwdWJsaWNhY2nDs24gcGVyacOzZGljYSwgdW5hIGFudG9sb2fDrWEsIG8gdW5hIGVuY2ljbG9wZWRpYSwgZW4gbGEgcXVlIGxhIG9icmEgZW4gc3UgdG90YWxpZGFkLCBzaW4gbW9kaWZpY2FjacOzbiBhbGd1bmEsIGp1bnRvIGNvbiB1biBncnVwbyBkZSBvdHJhcyBjb250cmlidWNpb25lcyBxdWUgY29uc3RpdHV5ZW4gb2JyYXMgc2VwYXJhZGFzIGUgaW5kZXBlbmRpZW50ZXMgZW4gc8OtIG1pc21hcywgc2UgaW50ZWdyYW4gZW4gdW4gdG9kbyBjb2xlY3Rpdm8uIFVuYSBPYnJhIHF1ZSBjb25zdGl0dXllIHVuYSBvYnJhIGNvbGVjdGl2YSBubyBzZSBjb25zaWRlcmFyw6EgdW5hIE9icmEgRGVyaXZhZGEgKGNvbW8gc2UgZGVmaW5lIGFiYWpvKSBwYXJhIGxvcyBwcm9ww7NzaXRvcyBkZSBlc3RhIGxpY2VuY2lhLiBhcXVlbGxhIHByb2R1Y2lkYSBwb3IgdW4gZ3J1cG8gZGUgYXV0b3JlcywgZW4gcXVlIGxhIE9icmEgc2UgZW5jdWVudHJhIHNpbiBtb2RpZmljYWNpb25lcywganVudG8gY29uIHVuYSBjaWVydGEgY2FudGlkYWQgZGUgb3RyYXMgY29udHJpYnVjaW9uZXMsIHF1ZSBjb25zdGl0dXllbiBlbiBzw60gbWlzbW9zIHRyYWJham9zIHNlcGFyYWRvcyBlIGluZGVwZW5kaWVudGVzLCBxdWUgc29uIGludGVncmFkb3MgYWwgdG9kbyBjb2xlY3Rpdm8sIHRhbGVzIGNvbW8gcHVibGljYWNpb25lcyBwZXJpw7NkaWNhcywgYW50b2xvZ8OtYXMgbyBlbmNpY2xvcGVkaWFzLjwvbGk+CiAgICAgIDxsaT5PYnJhIERlcml2YWRhIHNpZ25pZmljYSB1bmEgb2JyYSBiYXNhZGEgZW4gbGEgb2JyYSBvYmpldG8gZGUgZXN0YSBsaWNlbmNpYSBvIGVuIMOpc3RhIHkgb3RyYXMgb2JyYXMgcHJlZXhpc3RlbnRlcywgdGFsZXMgY29tbyB0cmFkdWNjaW9uZXMsIGFycmVnbG9zIG11c2ljYWxlcywgZHJhbWF0aXphY2lvbmVzLCDigJxmaWNjaW9uYWxpemFjaW9uZXPigJ0sIHZlcnNpb25lcyBwYXJhIGNpbmUsIOKAnGdyYWJhY2lvbmVzIGRlIHNvbmlkb+KAnSwgcmVwcm9kdWNjaW9uZXMgZGUgYXJ0ZSwgcmVzw7ptZW5lcywgY29uZGVuc2FjaW9uZXMsIG8gY3VhbHF1aWVyIG90cmEgZW4gbGEgcXVlIGxhIG9icmEgcHVlZGEgc2VyIHRyYW5zZm9ybWFkYSwgY2FtYmlhZGEgbyBhZGFwdGFkYSwgZXhjZXB0byBhcXVlbGxhcyBxdWUgY29uc3RpdHV5YW4gdW5hIG9icmEgY29sZWN0aXZhLCBsYXMgcXVlIG5vIHNlcsOhbiBjb25zaWRlcmFkYXMgdW5hIG9icmEgZGVyaXZhZGEgcGFyYSBlZmVjdG9zIGRlIGVzdGEgbGljZW5jaWEuIChQYXJhIGV2aXRhciBkdWRhcywgZW4gZWwgY2FzbyBkZSBxdWUgbGEgT2JyYSBzZWEgdW5hIGNvbXBvc2ljacOzbiBtdXNpY2FsIG8gdW5hIGdyYWJhY2nDs24gc29ub3JhLCBwYXJhIGxvcyBlZmVjdG9zIGRlIGVzdGEgTGljZW5jaWEgbGEgc2luY3Jvbml6YWNpw7NuIHRlbXBvcmFsIGRlIGxhIE9icmEgY29uIHVuYSBpbWFnZW4gZW4gbW92aW1pZW50byBzZSBjb25zaWRlcmFyw6EgdW5hIE9icmEgRGVyaXZhZGEgcGFyYSBsb3MgZmluZXMgZGUgZXN0YSBsaWNlbmNpYSkuPC9saT4KICAgICAgPGxpPkxpY2VuY2lhbnRlLCBlcyBlbCBpbmRpdmlkdW8gbyBsYSBlbnRpZGFkIHRpdHVsYXIgZGUgbG9zIGRlcmVjaG9zIGRlIGF1dG9yIHF1ZSBvZnJlY2UgbGEgT2JyYSBlbiBjb25mb3JtaWRhZCBjb24gbGFzIGNvbmRpY2lvbmVzIGRlIGVzdGEgTGljZW5jaWEuPC9saT4KICAgICAgPGxpPkF1dG9yIG9yaWdpbmFsLCBlcyBlbCBpbmRpdmlkdW8gcXVlIGNyZcOzIGxhIE9icmEuPC9saT4KICAgICAgPGxpPk9icmEsIGVzIGFxdWVsbGEgb2JyYSBzdXNjZXB0aWJsZSBkZSBwcm90ZWNjacOzbiBwb3IgZWwgcsOpZ2ltZW4gZGUgRGVyZWNobyBkZSBBdXRvciB5IHF1ZSBlcyBvZnJlY2lkYSBlbiBsb3MgdMOpcm1pbm9zIGRlIGVzdGEgbGljZW5jaWE8L2xpPgogICAgICA8bGk+VXN0ZWQsIGVzIGVsIGluZGl2aWR1byBvIGxhIGVudGlkYWQgcXVlIGVqZXJjaXRhIGxvcyBkZXJlY2hvcyBvdG9yZ2Fkb3MgYWwgYW1wYXJvIGRlIGVzdGEgTGljZW5jaWEgeSBxdWUgY29uIGFudGVyaW9yaWRhZCBubyBoYSB2aW9sYWRvIGxhcyBjb25kaWNpb25lcyBkZSBsYSBtaXNtYSByZXNwZWN0byBhIGxhIE9icmEsIG8gcXVlIGhheWEgb2J0ZW5pZG8gYXV0b3JpemFjacOzbiBleHByZXNhIHBvciBwYXJ0ZSBkZWwgTGljZW5jaWFudGUgcGFyYSBlamVyY2VyIGxvcyBkZXJlY2hvcyBhbCBhbXBhcm8gZGUgZXN0YSBMaWNlbmNpYSBwZXNlIGEgdW5hIHZpb2xhY2nDs24gYW50ZXJpb3IuPC9saT4KICAgIDwvb2w+CiAgPC9saT4KICA8YnIvPgogIDxsaT4KICAgIERlcmVjaG9zIGRlIFVzb3MgSG9ucmFkb3MgeSBleGNlcGNpb25lcyBMZWdhbGVzLgogICAgPHA+TmFkYSBlbiBlc3RhIExpY2VuY2lhIHBvZHLDoSBzZXIgaW50ZXJwcmV0YWRvIGNvbW8gdW5hIGRpc21pbnVjacOzbiwgbGltaXRhY2nDs24gbyByZXN0cmljY2nDs24gZGUgbG9zIGRlcmVjaG9zIGRlcml2YWRvcyBkZWwgdXNvIGhvbnJhZG8geSBvdHJhcyBsaW1pdGFjaW9uZXMgbyBleGNlcGNpb25lcyBhIGxvcyBkZXJlY2hvcyBkZWwgYXV0b3IgYmFqbyBlbCByw6lnaW1lbiBsZWdhbCB2aWdlbnRlIG8gZGVyaXZhZG8gZGUgY3VhbHF1aWVyIG90cmEgbm9ybWEgcXVlIHNlIGxlIGFwbGlxdWUuPC9wPgogIDwvbGk+CiAgPGxpPgogICAgQ29uY2VzacOzbiBkZSBsYSBMaWNlbmNpYS4KICAgIDxwPkJham8gbG9zIHTDqXJtaW5vcyB5IGNvbmRpY2lvbmVzIGRlIGVzdGEgTGljZW5jaWEsIGVsIExpY2VuY2lhbnRlIG90b3JnYSBhIFVzdGVkIHVuYSBsaWNlbmNpYSBtdW5kaWFsLCBsaWJyZSBkZSByZWdhbMOtYXMsIG5vIGV4Y2x1c2l2YSB5IHBlcnBldHVhIChkdXJhbnRlIHRvZG8gZWwgcGVyw61vZG8gZGUgdmlnZW5jaWEgZGUgbG9zIGRlcmVjaG9zIGRlIGF1dG9yKSBwYXJhIGVqZXJjZXIgZXN0b3MgZGVyZWNob3Mgc29icmUgbGEgT2JyYSB0YWwgeSBjb21vIHNlIGluZGljYSBhIGNvbnRpbnVhY2nDs246PC9wPgogICAgPG9sIHR5cGU9ImEiPgogICAgICA8bGk+UmVwcm9kdWNpciBsYSBPYnJhLCBpbmNvcnBvcmFyIGxhIE9icmEgZW4gdW5hIG8gbcOhcyBPYnJhcyBDb2xlY3RpdmFzLCB5IHJlcHJvZHVjaXIgbGEgT2JyYSBpbmNvcnBvcmFkYSBlbiBsYXMgT2JyYXMgQ29sZWN0aXZhcy48L2xpPgogICAgICA8bGk+RGlzdHJpYnVpciBjb3BpYXMgbyBmb25vZ3JhbWFzIGRlIGxhcyBPYnJhcywgZXhoaWJpcmxhcyBww7pibGljYW1lbnRlLCBlamVjdXRhcmxhcyBww7pibGljYW1lbnRlIHkvbyBwb25lcmxhcyBhIGRpc3Bvc2ljacOzbiBww7pibGljYSwgaW5jbHV5w6luZG9sYXMgY29tbyBpbmNvcnBvcmFkYXMgZW4gT2JyYXMgQ29sZWN0aXZhcywgc2Vnw7puIGNvcnJlc3BvbmRhLjwvbGk+CiAgICAgIDxsaT5EaXN0cmlidWlyIGNvcGlhcyBkZSBsYXMgT2JyYXMgRGVyaXZhZGFzIHF1ZSBzZSBnZW5lcmVuLCBleGhpYmlybGFzIHDDumJsaWNhbWVudGUsIGVqZWN1dGFybGFzIHDDumJsaWNhbWVudGUgeS9vIHBvbmVybGFzIGEgZGlzcG9zaWNpw7NuIHDDumJsaWNhLjwvbGk+CiAgICA8L29sPgogICAgPHA+TG9zIGRlcmVjaG9zIG1lbmNpb25hZG9zIGFudGVyaW9ybWVudGUgcHVlZGVuIHNlciBlamVyY2lkb3MgZW4gdG9kb3MgbG9zIG1lZGlvcyB5IGZvcm1hdG9zLCBhY3R1YWxtZW50ZSBjb25vY2lkb3MgbyBxdWUgc2UgaW52ZW50ZW4gZW4gZWwgZnV0dXJvLiBMb3MgZGVyZWNob3MgYW50ZXMgbWVuY2lvbmFkb3MgaW5jbHV5ZW4gZWwgZGVyZWNobyBhIHJlYWxpemFyIGRpY2hhcyBtb2RpZmljYWNpb25lcyBlbiBsYSBtZWRpZGEgcXVlIHNlYW4gdMOpY25pY2FtZW50ZSBuZWNlc2FyaWFzIHBhcmEgZWplcmNlciBsb3MgZGVyZWNob3MgZW4gb3RybyBtZWRpbyBvIGZvcm1hdG9zLCBwZXJvIGRlIG90cmEgbWFuZXJhIHVzdGVkIG5vIGVzdMOhIGF1dG9yaXphZG8gcGFyYSByZWFsaXphciBvYnJhcyBkZXJpdmFkYXMuIFRvZG9zIGxvcyBkZXJlY2hvcyBubyBvdG9yZ2Fkb3MgZXhwcmVzYW1lbnRlIHBvciBlbCBMaWNlbmNpYW50ZSBxdWVkYW4gcG9yIGVzdGUgbWVkaW8gcmVzZXJ2YWRvcywgaW5jbHV5ZW5kbyBwZXJvIHNpbiBsaW1pdGFyc2UgYSBhcXVlbGxvcyBxdWUgc2UgbWVuY2lvbmFuIGVuIGxhcyBzZWNjaW9uZXMgNChkKSB5IDQoZSkuPC9wPgogIDwvbGk+CiAgPGJyLz4KICA8bGk+CiAgICBSZXN0cmljY2lvbmVzLgogICAgPHA+TGEgbGljZW5jaWEgb3RvcmdhZGEgZW4gbGEgYW50ZXJpb3IgU2VjY2nDs24gMyBlc3TDoSBleHByZXNhbWVudGUgc3VqZXRhIHkgbGltaXRhZGEgcG9yIGxhcyBzaWd1aWVudGVzIHJlc3RyaWNjaW9uZXM6PC9wPgogICAgPG9sIHR5cGU9ImEiPgogICAgICA8bGk+VXN0ZWQgcHVlZGUgZGlzdHJpYnVpciwgZXhoaWJpciBww7pibGljYW1lbnRlLCBlamVjdXRhciBww7pibGljYW1lbnRlLCBvIHBvbmVyIGEgZGlzcG9zaWNpw7NuIHDDumJsaWNhIGxhIE9icmEgc8OzbG8gYmFqbyBsYXMgY29uZGljaW9uZXMgZGUgZXN0YSBMaWNlbmNpYSwgeSBVc3RlZCBkZWJlIGluY2x1aXIgdW5hIGNvcGlhIGRlIGVzdGEgbGljZW5jaWEgbyBkZWwgSWRlbnRpZmljYWRvciBVbml2ZXJzYWwgZGUgUmVjdXJzb3MgZGUgbGEgbWlzbWEgY29uIGNhZGEgY29waWEgZGUgbGEgT2JyYSBxdWUgZGlzdHJpYnV5YSwgZXhoaWJhIHDDumJsaWNhbWVudGUsIGVqZWN1dGUgcMO6YmxpY2FtZW50ZSBvIHBvbmdhIGEgZGlzcG9zaWNpw7NuIHDDumJsaWNhLiBObyBlcyBwb3NpYmxlIG9mcmVjZXIgbyBpbXBvbmVyIG5pbmd1bmEgY29uZGljacOzbiBzb2JyZSBsYSBPYnJhIHF1ZSBhbHRlcmUgbyBsaW1pdGUgbGFzIGNvbmRpY2lvbmVzIGRlIGVzdGEgTGljZW5jaWEgbyBlbCBlamVyY2ljaW8gZGUgbG9zIGRlcmVjaG9zIGRlIGxvcyBkZXN0aW5hdGFyaW9zIG90b3JnYWRvcyBlbiBlc3RlIGRvY3VtZW50by4gTm8gZXMgcG9zaWJsZSBzdWJsaWNlbmNpYXIgbGEgT2JyYS4gVXN0ZWQgZGViZSBtYW50ZW5lciBpbnRhY3RvcyB0b2RvcyBsb3MgYXZpc29zIHF1ZSBoYWdhbiByZWZlcmVuY2lhIGEgZXN0YSBMaWNlbmNpYSB5IGEgbGEgY2zDoXVzdWxhIGRlIGxpbWl0YWNpw7NuIGRlIGdhcmFudMOtYXMuIFVzdGVkIG5vIHB1ZWRlIGRpc3RyaWJ1aXIsIGV4aGliaXIgcMO6YmxpY2FtZW50ZSwgZWplY3V0YXIgcMO6YmxpY2FtZW50ZSwgbyBwb25lciBhIGRpc3Bvc2ljacOzbiBww7pibGljYSBsYSBPYnJhIGNvbiBhbGd1bmEgbWVkaWRhIHRlY25vbMOzZ2ljYSBxdWUgY29udHJvbGUgZWwgYWNjZXNvIG8gbGEgdXRpbGl6YWNpw7NuIGRlIGVsbGEgZGUgdW5hIGZvcm1hIHF1ZSBzZWEgaW5jb25zaXN0ZW50ZSBjb24gbGFzIGNvbmRpY2lvbmVzIGRlIGVzdGEgTGljZW5jaWEuIExvIGFudGVyaW9yIHNlIGFwbGljYSBhIGxhIE9icmEgaW5jb3Jwb3JhZGEgYSB1bmEgT2JyYSBDb2xlY3RpdmEsIHBlcm8gZXN0byBubyBleGlnZSBxdWUgbGEgT2JyYSBDb2xlY3RpdmEgYXBhcnRlIGRlIGxhIG9icmEgbWlzbWEgcXVlZGUgc3VqZXRhIGEgbGFzIGNvbmRpY2lvbmVzIGRlIGVzdGEgTGljZW5jaWEuIFNpIFVzdGVkIGNyZWEgdW5hIE9icmEgQ29sZWN0aXZhLCBwcmV2aW8gYXZpc28gZGUgY3VhbHF1aWVyIExpY2VuY2lhbnRlIGRlYmUsIGVuIGxhIG1lZGlkYSBkZSBsbyBwb3NpYmxlLCBlbGltaW5hciBkZSBsYSBPYnJhIENvbGVjdGl2YSBjdWFscXVpZXIgcmVmZXJlbmNpYSBhIGRpY2hvIExpY2VuY2lhbnRlIG8gYWwgQXV0b3IgT3JpZ2luYWwsIHNlZ8O6biBsbyBzb2xpY2l0YWRvIHBvciBlbCBMaWNlbmNpYW50ZSB5IGNvbmZvcm1lIGxvIGV4aWdlIGxhIGNsw6F1c3VsYSA0KGMpLjwvbGk+CiAgICAgIDxsaT5Vc3RlZCBubyBwdWVkZSBlamVyY2VyIG5pbmd1bm8gZGUgbG9zIGRlcmVjaG9zIHF1ZSBsZSBoYW4gc2lkbyBvdG9yZ2Fkb3MgZW4gbGEgU2VjY2nDs24gMyBwcmVjZWRlbnRlIGRlIG1vZG8gcXVlIGVzdMOpbiBwcmluY2lwYWxtZW50ZSBkZXN0aW5hZG9zIG8gZGlyZWN0YW1lbnRlIGRpcmlnaWRvcyBhIGNvbnNlZ3VpciB1biBwcm92ZWNobyBjb21lcmNpYWwgbyB1bmEgY29tcGVuc2FjacOzbiBtb25ldGFyaWEgcHJpdmFkYS4gRWwgaW50ZXJjYW1iaW8gZGUgbGEgT2JyYSBwb3Igb3RyYXMgb2JyYXMgcHJvdGVnaWRhcyBwb3IgZGVyZWNob3MgZGUgYXV0b3IsIHlhIHNlYSBhIHRyYXbDqXMgZGUgdW4gc2lzdGVtYSBwYXJhIGNvbXBhcnRpciBhcmNoaXZvcyBkaWdpdGFsZXMgKGRpZ2l0YWwgZmlsZS1zaGFyaW5nKSBvIGRlIGN1YWxxdWllciBvdHJhIG1hbmVyYSBubyBzZXLDoSBjb25zaWRlcmFkbyBjb21vIGVzdGFyIGRlc3RpbmFkbyBwcmluY2lwYWxtZW50ZSBvIGRpcmlnaWRvIGRpcmVjdGFtZW50ZSBhIGNvbnNlZ3VpciB1biBwcm92ZWNobyBjb21lcmNpYWwgbyB1bmEgY29tcGVuc2FjacOzbiBtb25ldGFyaWEgcHJpdmFkYSwgc2llbXByZSBxdWUgbm8gc2UgcmVhbGljZSB1biBwYWdvIG1lZGlhbnRlIHVuYSBjb21wZW5zYWNpw7NuIG1vbmV0YXJpYSBlbiByZWxhY2nDs24gY29uIGVsIGludGVyY2FtYmlvIGRlIG9icmFzIHByb3RlZ2lkYXMgcG9yIGVsIGRlcmVjaG8gZGUgYXV0b3IuPC9saT4KICAgICAgPGxpPlNpIHVzdGVkIGRpc3RyaWJ1eWUsIGV4aGliZSBww7pibGljYW1lbnRlLCBlamVjdXRhIHDDumJsaWNhbWVudGUgbyBlamVjdXRhIHDDumJsaWNhbWVudGUgZW4gZm9ybWEgZGlnaXRhbCBsYSBPYnJhIG8gY3VhbHF1aWVyIE9icmEgRGVyaXZhZGEgdSBPYnJhIENvbGVjdGl2YSwgVXN0ZWQgZGViZSBtYW50ZW5lciBpbnRhY3RhIHRvZGEgbGEgaW5mb3JtYWNpw7NuIGRlIGRlcmVjaG8gZGUgYXV0b3IgZGUgbGEgT2JyYSB5IHByb3BvcmNpb25hciwgZGUgZm9ybWEgcmF6b25hYmxlIHNlZ8O6biBlbCBtZWRpbyBvIG1hbmVyYSBxdWUgVXN0ZWQgZXN0w6kgdXRpbGl6YW5kbzogKGkpIGVsIG5vbWJyZSBkZWwgQXV0b3IgT3JpZ2luYWwgc2kgZXN0w6EgcHJvdmlzdG8gKG8gc2V1ZMOzbmltbywgc2kgZnVlcmUgYXBsaWNhYmxlKSwgeS9vIChpaSkgZWwgbm9tYnJlIGRlIGxhIHBhcnRlIG8gbGFzIHBhcnRlcyBxdWUgZWwgQXV0b3IgT3JpZ2luYWwgeS9vIGVsIExpY2VuY2lhbnRlIGh1YmllcmVuIGRlc2lnbmFkbyBwYXJhIGxhIGF0cmlidWNpw7NuICh2LmcuLCB1biBpbnN0aXR1dG8gcGF0cm9jaW5hZG9yLCBlZGl0b3JpYWwsIHB1YmxpY2FjacOzbikgZW4gbGEgaW5mb3JtYWNpw7NuIGRlIGxvcyBkZXJlY2hvcyBkZSBhdXRvciBkZWwgTGljZW5jaWFudGUsIHTDqXJtaW5vcyBkZSBzZXJ2aWNpb3MgbyBkZSBvdHJhcyBmb3JtYXMgcmF6b25hYmxlczsgZWwgdMOtdHVsbyBkZSBsYSBPYnJhIHNpIGVzdMOhIHByb3Zpc3RvOyBlbiBsYSBtZWRpZGEgZGUgbG8gcmF6b25hYmxlbWVudGUgZmFjdGlibGUgeSwgc2kgZXN0w6EgcHJvdmlzdG8sIGVsIElkZW50aWZpY2Fkb3IgVW5pZm9ybWUgZGUgUmVjdXJzb3MgKFVuaWZvcm0gUmVzb3VyY2UgSWRlbnRpZmllcikgcXVlIGVsIExpY2VuY2lhbnRlIGVzcGVjaWZpY2EgcGFyYSBzZXIgYXNvY2lhZG8gY29uIGxhIE9icmEsIHNhbHZvIHF1ZSB0YWwgVVJJIG5vIHNlIHJlZmllcmEgYSBsYSBub3RhIHNvYnJlIGxvcyBkZXJlY2hvcyBkZSBhdXRvciBvIGEgbGEgaW5mb3JtYWNpw7NuIHNvYnJlIGVsIGxpY2VuY2lhbWllbnRvIGRlIGxhIE9icmE7IHkgZW4gZWwgY2FzbyBkZSB1bmEgT2JyYSBEZXJpdmFkYSwgYXRyaWJ1aXIgZWwgY3LDqWRpdG8gaWRlbnRpZmljYW5kbyBlbCB1c28gZGUgbGEgT2JyYSBlbiBsYSBPYnJhIERlcml2YWRhICh2LmcuLCAiVHJhZHVjY2nDs24gRnJhbmNlc2EgZGUgbGEgT2JyYSBkZWwgQXV0b3IgT3JpZ2luYWwsIiBvICJHdWnDs24gQ2luZW1hdG9ncsOhZmljbyBiYXNhZG8gZW4gbGEgT2JyYSBvcmlnaW5hbCBkZWwgQXV0b3IgT3JpZ2luYWwiKS4gVGFsIGNyw6lkaXRvIHB1ZWRlIHNlciBpbXBsZW1lbnRhZG8gZGUgY3VhbHF1aWVyIGZvcm1hIHJhem9uYWJsZTsgZW4gZWwgY2Fzbywgc2luIGVtYmFyZ28sIGRlIE9icmFzIERlcml2YWRhcyB1IE9icmFzIENvbGVjdGl2YXMsIHRhbCBjcsOpZGl0byBhcGFyZWNlcsOhLCBjb21vIG3DrW5pbW8sIGRvbmRlIGFwYXJlY2UgZWwgY3LDqWRpdG8gZGUgY3VhbHF1aWVyIG90cm8gYXV0b3IgY29tcGFyYWJsZSB5IGRlIHVuYSBtYW5lcmEsIGFsIG1lbm9zLCB0YW4gZGVzdGFjYWRhIGNvbW8gZWwgY3LDqWRpdG8gZGUgb3RybyBhdXRvciBjb21wYXJhYmxlLjwvbGk+CiAgICAgIDxsaT4KICAgICAgICBQYXJhIGV2aXRhciB0b2RhIGNvbmZ1c2nDs24sIGVsIExpY2VuY2lhbnRlIGFjbGFyYSBxdWUsIGN1YW5kbyBsYSBvYnJhIGVzIHVuYSBjb21wb3NpY2nDs24gbXVzaWNhbDoKICAgICAgICA8b2wgdHlwZT0iaSI+CiAgICAgICAgICA8bGk+UmVnYWzDrWFzIHBvciBpbnRlcnByZXRhY2nDs24geSBlamVjdWNpw7NuIGJham8gbGljZW5jaWFzIGdlbmVyYWxlcy4gRWwgTGljZW5jaWFudGUgc2UgcmVzZXJ2YSBlbCBkZXJlY2hvIGV4Y2x1c2l2byBkZSBhdXRvcml6YXIgbGEgZWplY3VjacOzbiBww7pibGljYSBvIGxhIGVqZWN1Y2nDs24gcMO6YmxpY2EgZGlnaXRhbCBkZSBsYSBvYnJhIHkgZGUgcmVjb2xlY3Rhciwgc2VhIGluZGl2aWR1YWxtZW50ZSBvIGEgdHJhdsOpcyBkZSB1bmEgc29jaWVkYWQgZGUgZ2VzdGnDs24gY29sZWN0aXZhIGRlIGRlcmVjaG9zIGRlIGF1dG9yIHkgZGVyZWNob3MgY29uZXhvcyAocG9yIGVqZW1wbG8sIFNBWUNPKSwgbGFzIHJlZ2Fsw61hcyBwb3IgbGEgZWplY3VjacOzbiBww7pibGljYSBvIHBvciBsYSBlamVjdWNpw7NuIHDDumJsaWNhIGRpZ2l0YWwgZGUgbGEgb2JyYSAocG9yIGVqZW1wbG8gV2ViY2FzdCkgbGljZW5jaWFkYSBiYWpvIGxpY2VuY2lhcyBnZW5lcmFsZXMsIHNpIGxhIGludGVycHJldGFjacOzbiBvIGVqZWN1Y2nDs24gZGUgbGEgb2JyYSBlc3TDoSBwcmltb3JkaWFsbWVudGUgb3JpZW50YWRhIHBvciBvIGRpcmlnaWRhIGEgbGEgb2J0ZW5jacOzbiBkZSB1bmEgdmVudGFqYSBjb21lcmNpYWwgbyB1bmEgY29tcGVuc2FjacOzbiBtb25ldGFyaWEgcHJpdmFkYS48L2xpPgogICAgICAgICAgPGxpPlJlZ2Fsw61hcyBwb3IgRm9ub2dyYW1hcy4gRWwgTGljZW5jaWFudGUgc2UgcmVzZXJ2YSBlbCBkZXJlY2hvIGV4Y2x1c2l2byBkZSByZWNvbGVjdGFyLCBpbmRpdmlkdWFsbWVudGUgbyBhIHRyYXbDqXMgZGUgdW5hIHNvY2llZGFkIGRlIGdlc3Rpw7NuIGNvbGVjdGl2YSBkZSBkZXJlY2hvcyBkZSBhdXRvciB5IGRlcmVjaG9zIGNvbmV4b3MgKHBvciBlamVtcGxvLCBsb3MgY29uc2FncmFkb3MgcG9yIGxhIFNBWUNPKSwgdW5hIGFnZW5jaWEgZGUgZGVyZWNob3MgbXVzaWNhbGVzIG8gYWxnw7puIGFnZW50ZSBkZXNpZ25hZG8sIGxhcyByZWdhbMOtYXMgcG9yIGN1YWxxdWllciBmb25vZ3JhbWEgcXVlIFVzdGVkIGNyZWUgYSBwYXJ0aXIgZGUgbGEgb2JyYSAo4oCcdmVyc2nDs24gY292ZXLigJ0pIHkgZGlzdHJpYnV5YSwgZW4gbG9zIHTDqXJtaW5vcyBkZWwgcsOpZ2ltZW4gZGUgZGVyZWNob3MgZGUgYXV0b3IsIHNpIGxhIGNyZWFjacOzbiBvIGRpc3RyaWJ1Y2nDs24gZGUgZXNhIHZlcnNpw7NuIGNvdmVyIGVzdMOhIHByaW1vcmRpYWxtZW50ZSBkZXN0aW5hZGEgbyBkaXJpZ2lkYSBhIG9idGVuZXIgdW5hIHZlbnRhamEgY29tZXJjaWFsIG8gdW5hIGNvbXBlbnNhY2nDs24gbW9uZXRhcmlhIHByaXZhZGEuPC9saT4KICAgICAgICA8L29sPgogICAgICA8L2xpPgogICAgICA8bGk+R2VzdGnDs24gZGUgRGVyZWNob3MgZGUgQXV0b3Igc29icmUgSW50ZXJwcmV0YWNpb25lcyB5IEVqZWN1Y2lvbmVzIERpZ2l0YWxlcyAoV2ViQ2FzdGluZykuIFBhcmEgZXZpdGFyIHRvZGEgY29uZnVzacOzbiwgZWwgTGljZW5jaWFudGUgYWNsYXJhIHF1ZSwgY3VhbmRvIGxhIG9icmEgc2VhIHVuIGZvbm9ncmFtYSwgZWwgTGljZW5jaWFudGUgc2UgcmVzZXJ2YSBlbCBkZXJlY2hvIGV4Y2x1c2l2byBkZSBhdXRvcml6YXIgbGEgZWplY3VjacOzbiBww7pibGljYSBkaWdpdGFsIGRlIGxhIG9icmEgKHBvciBlamVtcGxvLCB3ZWJjYXN0KSB5IGRlIHJlY29sZWN0YXIsIGluZGl2aWR1YWxtZW50ZSBvIGEgdHJhdsOpcyBkZSB1bmEgc29jaWVkYWQgZGUgZ2VzdGnDs24gY29sZWN0aXZhIGRlIGRlcmVjaG9zIGRlIGF1dG9yIHkgZGVyZWNob3MgY29uZXhvcyAocG9yIGVqZW1wbG8sIEFDSU5QUk8pLCBsYXMgcmVnYWzDrWFzIHBvciBsYSBlamVjdWNpw7NuIHDDumJsaWNhIGRpZ2l0YWwgZGUgbGEgb2JyYSAocG9yIGVqZW1wbG8sIHdlYmNhc3QpLCBzdWpldGEgYSBsYXMgZGlzcG9zaWNpb25lcyBhcGxpY2FibGVzIGRlbCByw6lnaW1lbiBkZSBEZXJlY2hvIGRlIEF1dG9yLCBzaSBlc3RhIGVqZWN1Y2nDs24gcMO6YmxpY2EgZGlnaXRhbCBlc3TDoSBwcmltb3JkaWFsbWVudGUgZGlyaWdpZGEgYSBvYnRlbmVyIHVuYSB2ZW50YWphIGNvbWVyY2lhbCBvIHVuYSBjb21wZW5zYWNpw7NuIG1vbmV0YXJpYSBwcml2YWRhLjwvbGk+CiAgICA8L29sPgogIDwvbGk+CiAgPGJyLz4KICA8bGk+CiAgICBSZXByZXNlbnRhY2lvbmVzLCBHYXJhbnTDrWFzIHkgTGltaXRhY2lvbmVzIGRlIFJlc3BvbnNhYmlsaWRhZC4KICAgIDxwPkEgTUVOT1MgUVVFIExBUyBQQVJURVMgTE8gQUNPUkRBUkFOIERFIE9UUkEgRk9STUEgUE9SIEVTQ1JJVE8sIEVMIExJQ0VOQ0lBTlRFIE9GUkVDRSBMQSBPQlJBIChFTiBFTCBFU1RBRE8gRU4gRUwgUVVFIFNFIEVOQ1VFTlRSQSkg4oCcVEFMIENVQUzigJ0sIFNJTiBCUklOREFSIEdBUkFOVMONQVMgREUgQ0xBU0UgQUxHVU5BIFJFU1BFQ1RPIERFIExBIE9CUkEsIFlBIFNFQSBFWFBSRVNBLCBJTVBMw41DSVRBLCBMRUdBTCBPIENVQUxRVUlFUkEgT1RSQSwgSU5DTFVZRU5ETywgU0lOIExJTUlUQVJTRSBBIEVMTEFTLCBHQVJBTlTDjUFTIERFIFRJVFVMQVJJREFELCBDT01FUkNJQUJJTElEQUQsIEFEQVBUQUJJTElEQUQgTyBBREVDVUFDScOTTiBBIFBST1DDk1NJVE8gREVURVJNSU5BRE8sIEFVU0VOQ0lBIERFIElORlJBQ0NJw5NOLCBERSBBVVNFTkNJQSBERSBERUZFQ1RPUyBMQVRFTlRFUyBPIERFIE9UUk8gVElQTywgTyBMQSBQUkVTRU5DSUEgTyBBVVNFTkNJQSBERSBFUlJPUkVTLCBTRUFOIE8gTk8gREVTQ1VCUklCTEVTIChQVUVEQU4gTyBOTyBTRVIgRVNUT1MgREVTQ1VCSUVSVE9TKS4gQUxHVU5BUyBKVVJJU0RJQ0NJT05FUyBOTyBQRVJNSVRFTiBMQSBFWENMVVNJw5NOIERFIEdBUkFOVMONQVMgSU1QTMONQ0lUQVMsIEVOIENVWU8gQ0FTTyBFU1RBIEVYQ0xVU0nDk04gUFVFREUgTk8gQVBMSUNBUlNFIEEgVVNURUQuPC9wPgogIDwvbGk+CiAgPGJyLz4KICA8bGk+CiAgICBMaW1pdGFjacOzbiBkZSByZXNwb25zYWJpbGlkYWQuCiAgICA8cD5BIE1FTk9TIFFVRSBMTyBFWElKQSBFWFBSRVNBTUVOVEUgTEEgTEVZIEFQTElDQUJMRSwgRUwgTElDRU5DSUFOVEUgTk8gU0VSw4EgUkVTUE9OU0FCTEUgQU5URSBVU1RFRCBQT1IgREHDkU8gQUxHVU5PLCBTRUEgUE9SIFJFU1BPTlNBQklMSURBRCBFWFRSQUNPTlRSQUNUVUFMLCBQUkVDT05UUkFDVFVBTCBPIENPTlRSQUNUVUFMLCBPQkpFVElWQSBPIFNVQkpFVElWQSwgU0UgVFJBVEUgREUgREHDkU9TIE1PUkFMRVMgTyBQQVRSSU1PTklBTEVTLCBESVJFQ1RPUyBPIElORElSRUNUT1MsIFBSRVZJU1RPUyBPIElNUFJFVklTVE9TIFBST0RVQ0lET1MgUE9SIEVMIFVTTyBERSBFU1RBIExJQ0VOQ0lBIE8gREUgTEEgT0JSQSwgQVVOIENVQU5ETyBFTCBMSUNFTkNJQU5URSBIQVlBIFNJRE8gQURWRVJUSURPIERFIExBIFBPU0lCSUxJREFEIERFIERJQ0hPUyBEQcORT1MuIEFMR1VOQVMgTEVZRVMgTk8gUEVSTUlURU4gTEEgRVhDTFVTScOTTiBERSBDSUVSVEEgUkVTUE9OU0FCSUxJREFELCBFTiBDVVlPIENBU08gRVNUQSBFWENMVVNJw5NOIFBVRURFIE5PIEFQTElDQVJTRSBBIFVTVEVELjwvcD4KICA8L2xpPgogIDxici8+CiAgPGxpPgogICAgVMOpcm1pbm8uCiAgICA8b2wgdHlwZT0iYSI+CiAgICAgIDxsaT5Fc3RhIExpY2VuY2lhIHkgbG9zIGRlcmVjaG9zIG90b3JnYWRvcyBlbiB2aXJ0dWQgZGUgZWxsYSB0ZXJtaW5hcsOhbiBhdXRvbcOhdGljYW1lbnRlIHNpIFVzdGVkIGluZnJpbmdlIGFsZ3VuYSBjb25kaWNpw7NuIGVzdGFibGVjaWRhIGVuIGVsbGEuIFNpbiBlbWJhcmdvLCBsb3MgaW5kaXZpZHVvcyBvIGVudGlkYWRlcyBxdWUgaGFuIHJlY2liaWRvIE9icmFzIERlcml2YWRhcyBvIENvbGVjdGl2YXMgZGUgVXN0ZWQgZGUgY29uZm9ybWlkYWQgY29uIGVzdGEgTGljZW5jaWEsIG5vIHZlcsOhbiB0ZXJtaW5hZGFzIHN1cyBsaWNlbmNpYXMsIHNpZW1wcmUgcXVlIGVzdG9zIGluZGl2aWR1b3MgbyBlbnRpZGFkZXMgc2lnYW4gY3VtcGxpZW5kbyDDrW50ZWdyYW1lbnRlIGxhcyBjb25kaWNpb25lcyBkZSBlc3RhcyBsaWNlbmNpYXMuIExhcyBTZWNjaW9uZXMgMSwgMiwgNSwgNiwgNywgeSA4IHN1YnNpc3RpcsOhbiBhIGN1YWxxdWllciB0ZXJtaW5hY2nDs24gZGUgZXN0YSBMaWNlbmNpYS48L2xpPgogICAgICA8bGk+U3VqZXRhIGEgbGFzIGNvbmRpY2lvbmVzIHkgdMOpcm1pbm9zIGFudGVyaW9yZXMsIGxhIGxpY2VuY2lhIG90b3JnYWRhIGFxdcOtIGVzIHBlcnBldHVhIChkdXJhbnRlIGVsIHBlcsOtb2RvIGRlIHZpZ2VuY2lhIGRlIGxvcyBkZXJlY2hvcyBkZSBhdXRvciBkZSBsYSBvYnJhKS4gTm8gb2JzdGFudGUgbG8gYW50ZXJpb3IsIGVsIExpY2VuY2lhbnRlIHNlIHJlc2VydmEgZWwgZGVyZWNobyBhIHB1YmxpY2FyIHkvbyBlc3RyZW5hciBsYSBPYnJhIGJham8gY29uZGljaW9uZXMgZGUgbGljZW5jaWEgZGlmZXJlbnRlcyBvIGEgZGVqYXIgZGUgZGlzdHJpYnVpcmxhIGVuIGxvcyB0w6lybWlub3MgZGUgZXN0YSBMaWNlbmNpYSBlbiBjdWFscXVpZXIgbW9tZW50bzsgZW4gZWwgZW50ZW5kaWRvLCBzaW4gZW1iYXJnbywgcXVlIGVzYSBlbGVjY2nDs24gbm8gc2Vydmlyw6EgcGFyYSByZXZvY2FyIGVzdGEgbGljZW5jaWEgbyBxdWUgZGViYSBzZXIgb3RvcmdhZGEgLCBiYWpvIGxvcyB0w6lybWlub3MgZGUgZXN0YSBsaWNlbmNpYSksIHkgZXN0YSBsaWNlbmNpYSBjb250aW51YXLDoSBlbiBwbGVubyB2aWdvciB5IGVmZWN0byBhIG1lbm9zIHF1ZSBzZWEgdGVybWluYWRhIGNvbW8gc2UgZXhwcmVzYSBhdHLDoXMuIExhIExpY2VuY2lhIHJldm9jYWRhIGNvbnRpbnVhcsOhIHNpZW5kbyBwbGVuYW1lbnRlIHZpZ2VudGUgeSBlZmVjdGl2YSBzaSBubyBzZSBsZSBkYSB0w6lybWlubyBlbiBsYXMgY29uZGljaW9uZXMgaW5kaWNhZGFzIGFudGVyaW9ybWVudGUuPC9saT4KICAgIDwvb2w+CiAgPC9saT4KICA8YnIvPgogIDxsaT4KICAgIFZhcmlvcy4KICAgIDxvbCB0eXBlPSJhIj4KICAgICAgPGxpPkNhZGEgdmV6IHF1ZSBVc3RlZCBkaXN0cmlidXlhIG8gcG9uZ2EgYSBkaXNwb3NpY2nDs24gcMO6YmxpY2EgbGEgT2JyYSBvIHVuYSBPYnJhIENvbGVjdGl2YSwgZWwgTGljZW5jaWFudGUgb2ZyZWNlcsOhIGFsIGRlc3RpbmF0YXJpbyB1bmEgbGljZW5jaWEgZW4gbG9zIG1pc21vcyB0w6lybWlub3MgeSBjb25kaWNpb25lcyBxdWUgbGEgbGljZW5jaWEgb3RvcmdhZGEgYSBVc3RlZCBiYWpvIGVzdGEgTGljZW5jaWEuPC9saT4KICAgICAgPGxpPlNpIGFsZ3VuYSBkaXNwb3NpY2nDs24gZGUgZXN0YSBMaWNlbmNpYSByZXN1bHRhIGludmFsaWRhZGEgbyBubyBleGlnaWJsZSwgc2Vnw7puIGxhIGxlZ2lzbGFjacOzbiB2aWdlbnRlLCBlc3RvIG5vIGFmZWN0YXLDoSBuaSBsYSB2YWxpZGV6IG5pIGxhIGFwbGljYWJpbGlkYWQgZGVsIHJlc3RvIGRlIGNvbmRpY2lvbmVzIGRlIGVzdGEgTGljZW5jaWEgeSwgc2luIGFjY2nDs24gYWRpY2lvbmFsIHBvciBwYXJ0ZSBkZSBsb3Mgc3VqZXRvcyBkZSBlc3RlIGFjdWVyZG8sIGFxdcOpbGxhIHNlIGVudGVuZGVyw6EgcmVmb3JtYWRhIGxvIG3DrW5pbW8gbmVjZXNhcmlvIHBhcmEgaGFjZXIgcXVlIGRpY2hhIGRpc3Bvc2ljacOzbiBzZWEgdsOhbGlkYSB5IGV4aWdpYmxlLjwvbGk+CiAgICAgIDxsaT5OaW5nw7puIHTDqXJtaW5vIG8gZGlzcG9zaWNpw7NuIGRlIGVzdGEgTGljZW5jaWEgc2UgZXN0aW1hcsOhIHJlbnVuY2lhZGEgeSBuaW5ndW5hIHZpb2xhY2nDs24gZGUgZWxsYSBzZXLDoSBjb25zZW50aWRhIGEgbWVub3MgcXVlIGVzYSByZW51bmNpYSBvIGNvbnNlbnRpbWllbnRvIHNlYSBvdG9yZ2FkbyBwb3IgZXNjcml0byB5IGZpcm1hZG8gcG9yIGxhIHBhcnRlIHF1ZSByZW51bmNpZSBvIGNvbnNpZW50YS48L2xpPgogICAgICA8bGk+RXN0YSBMaWNlbmNpYSByZWZsZWphIGVsIGFjdWVyZG8gcGxlbm8gZW50cmUgbGFzIHBhcnRlcyByZXNwZWN0byBhIGxhIE9icmEgYXF1w60gbGljZW5jaWFkYS4gTm8gaGF5IGFycmVnbG9zLCBhY3VlcmRvcyBvIGRlY2xhcmFjaW9uZXMgcmVzcGVjdG8gYSBsYSBPYnJhIHF1ZSBubyBlc3TDqW4gZXNwZWNpZmljYWRvcyBlbiBlc3RlIGRvY3VtZW50by4gRWwgTGljZW5jaWFudGUgbm8gc2UgdmVyw6EgbGltaXRhZG8gcG9yIG5pbmd1bmEgZGlzcG9zaWNpw7NuIGFkaWNpb25hbCBxdWUgcHVlZGEgc3VyZ2lyIGVuIGFsZ3VuYSBjb211bmljYWNpw7NuIGVtYW5hZGEgZGUgVXN0ZWQuIEVzdGEgTGljZW5jaWEgbm8gcHVlZGUgc2VyIG1vZGlmaWNhZGEgc2luIGVsIGNvbnNlbnRpbWllbnRvIG11dHVvIHBvciBlc2NyaXRvIGRlbCBMaWNlbmNpYW50ZSB5IFVzdGVkLjwvbGk+CiAgICA8L29sPgogIDwvbGk+CiAgPGJyLz4KPC9vbD4K |