Seguimiento visual de un manipulador serial utilizando redes neuronales profundas

El presente documento expone el detallado proceso de elaboración de una plataforma virtual mediante la utilización de software de código abierto, destacando herramientas como ROS, Gazebo y Python. Dicha plataforma se emplea con el objetivo principal de capturar y etiquetar bases de datos, cuyo propó...

Full description

Autores:
Ortega Quiñones, Kevin David
Tipo de recurso:
Trabajo de grado de pregrado
Fecha de publicación:
2023
Institución:
Universidad Tecnológica de Pereira
Repositorio:
Repositorio Institucional UTP
Idioma:
spa
OAI Identifier:
oai:repositorio.utp.edu.co:11059/14712
Acceso en línea:
https://hdl.handle.net/11059/14712
https://repositorio.utp.edu.co/home
Palabra clave:
000 - Ciencias de la computación, información y obras generales::006 - Métodos especiales de computación
Visión por computadora
Redes neuronales
Reconocimiento de objectos
Manufactura flexible
Manufactura inteligente
Cobots
Rights
openAccess
License
Atribución-NoComercial-SinDerivadas 4.0 Internacional (CC BY-NC-ND 4.0)
id UTP2_39084cdc6dd92d614b646fbbd9d526e6
oai_identifier_str oai:repositorio.utp.edu.co:11059/14712
network_acronym_str UTP2
network_name_str Repositorio Institucional UTP
repository_id_str
dc.title.spa.fl_str_mv Seguimiento visual de un manipulador serial utilizando redes neuronales profundas
title Seguimiento visual de un manipulador serial utilizando redes neuronales profundas
spellingShingle Seguimiento visual de un manipulador serial utilizando redes neuronales profundas
000 - Ciencias de la computación, información y obras generales::006 - Métodos especiales de computación
Visión por computadora
Redes neuronales
Reconocimiento de objectos
Manufactura flexible
Manufactura inteligente
Cobots
title_short Seguimiento visual de un manipulador serial utilizando redes neuronales profundas
title_full Seguimiento visual de un manipulador serial utilizando redes neuronales profundas
title_fullStr Seguimiento visual de un manipulador serial utilizando redes neuronales profundas
title_full_unstemmed Seguimiento visual de un manipulador serial utilizando redes neuronales profundas
title_sort Seguimiento visual de un manipulador serial utilizando redes neuronales profundas
dc.creator.fl_str_mv Ortega Quiñones, Kevin David
dc.contributor.advisor.none.fl_str_mv Holguín Londoño, Germán Andrés
dc.contributor.author.none.fl_str_mv Ortega Quiñones, Kevin David
dc.subject.ddc.none.fl_str_mv 000 - Ciencias de la computación, información y obras generales::006 - Métodos especiales de computación
topic 000 - Ciencias de la computación, información y obras generales::006 - Métodos especiales de computación
Visión por computadora
Redes neuronales
Reconocimiento de objectos
Manufactura flexible
Manufactura inteligente
Cobots
dc.subject.lemb.none.fl_str_mv Visión por computadora
Redes neuronales
Reconocimiento de objectos
dc.subject.proposal.spa.fl_str_mv Manufactura flexible
Manufactura inteligente
dc.subject.proposal.eng.fl_str_mv Cobots
description El presente documento expone el detallado proceso de elaboración de una plataforma virtual mediante la utilización de software de código abierto, destacando herramientas como ROS, Gazebo y Python. Dicha plataforma se emplea con el objetivo principal de capturar y etiquetar bases de datos, cuyo propósito radica en el entrenamiento de una red neuronal convolucional diseñada para estimar con precisión la posición de un manipulador serial. En este sentido, la captura de dichos datos se lleva a cabo de manera eficiente y efectiva mediante la utilización de tres cámaras estratégicamente ubicadas en el entorno de trabajo del robot.
publishDate 2023
dc.date.accessioned.none.fl_str_mv 2023-06-23T16:19:55Z
dc.date.available.none.fl_str_mv 2023-06-23T16:19:55Z
dc.date.issued.none.fl_str_mv 2023
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/14712
dc.identifier.instname.none.fl_str_mv Universidad Tecnológica de Pereira
dc.identifier.reponame.none.fl_str_mv Repositorio Institucional Universidad Tecnológica de Pereira
dc.identifier.repourl.none.fl_str_mv https://repositorio.utp.edu.co/home
url https://hdl.handle.net/11059/14712
https://repositorio.utp.edu.co/home
identifier_str_mv Universidad Tecnológica de Pereira
Repositorio Institucional Universidad Tecnológica de Pereira
dc.language.iso.none.fl_str_mv spa
language spa
dc.relation.references.none.fl_str_mv [1] TECHNOLOGIES, Faro. Faro lanza la última sonda Vantage Laser Tracker 6DoF. https://www.prnewswire.com/news-releases/ faro-r-lanza-la-ultima-sonda-vantage-laser-tracker-6dof-876210429.html, Fecha de acceso: 2 de junio de 2023. (document), 2
[2] MICROSYSTEMS, Leica. Laser Tracker. http://www.metronica.es/metronica/ laser-tracker/, Fecha de acceso: 2 de junio de 2023. (document), 2
[3] PANTELERIS, Paschalis; OIKONOMIDIS, Iason y ARGYROS, Antonis. Using a Single RGB Frame for Real Time 3D Hand Pose Estimation in the Wild. En: 2018 IEEE Winter Conference on Applications of Computer Vision (WACV), 2018, págs. 436–445. (document), 2, 4, 2
[4] UNIVERSAL ROBOT UR5 collaborative robot - UR5 - robotmp.com. https://www.robotmp.com/universal-robot-ur5-collaborative-robot. Consultado el [18 MAYO 2023]. (document), 6
[5] WIKIMEDIA. Ángulos de Euler. Wikipedia Commons, n.d. https://es.wikipedia. org/w/index.php?title=%C3%81ngulos_de_Euler&oldid=141375560. (document), 5.2, 8
[6] DURDEVIC, Zakariae Machkour. Daniel Ortiz-Arrollo. Petar. Classical and Deep Learn ing based Visual Servoing Systems: a Survey on State of the Art. En: Journal of Intelligent y Robotic Systems, 2022, págs. 1–27. 1, 2
[7] HASHIMOTO., Yasuhiko. The Kawasaki Robot Story. En: 50th Anniversary Website Robot Division of Kawasaki Heavy Industries, Ltd, 2018, pág. 01–25. 1.1
[8] WILLIAMS, Theodore Joseph. The Purdue enterprise reference architecture: a technical guide for CIM planning and implementation. Instrument Society of America, 1992. 1.1
[9] BARONA LÓPEZ, Gustavo y VELASTEGUÍ, Luis Efraín. Automatización de procesos industriales mediante Industria 4.0. En: AlfaPublicaciones, tomo 3, No 3.1, 2021, págs. 84–101. 1.1
[10] HENDERSON., Hugh Durrant. Thomas C. Multisensor Data. En: Springer Handbook of Robotics, 2014, págs. 1–54. 1.1
[11] CHEN., Zeyin Zhao. Xin Wang. Jiafan Chen. Mengzhong. A Generalized Kinematic Error Modeling Method for Serial Industrial Robots Based on Product of Exponentials Formula. En: IEEE International Conference on Real-time Computing and Robotics, 2021, pág. 1023–1028. 1.1, 2
[12] WANG, Junwei Li. Guoliang Liu. Guohui Tian. Xianglai Zhu. Ziren. International Conference: Distributed RGBD Camera Network for 3D Human Pose Estimation and Action Recognition. En: International Conference on Information Fusion, 2018, pág. 1554–1558. 1.2
[13] CHEN., Yutian Liu. Shaozhong Zhang. Danjiang. Obstacle avoidance method based on the movement trend of dynamic obstacles. En: IEEE International Conference on Control and Robotics Engineering (ICCRE), 2018, pág. 45–50. 1.2
[14] IGOR, Juhasova Bohuslava. Juhas Martin. Halenar. TCP/IP Protocol Utilisation in Process of Dynamic Control of Robotic Cell According Industry 4.0 Concept. En: SAMI 2017 • IEEE 15th International Symposium on Applied Machine Intelligence and Infor matics • January 26-28, 2017 • Herl’any, Slovakia, 2017, pág. 000218–000222. 2
[15] R., Wang H. Yang B. Liu Y. Chen W. Liang X. Pfeifer. Visual servoing of soft robot ma nipulator in constrained environ- ments with an adaptive controller. En: IEEE/ASME Transactions on Mechatronics 22(1), 1, 2016, págs. 41–50. 2
[16] SHAO., Wen-Chung Chang. Chia-Kai. Hybrid Fuzzy Control of an Eye-to-Hand Robotic Manipulator for Autonomous Assembly Tasks. En: SICE Annual Conference 2010, 2010, pág. 408–414. 2
[17] HOLGUÍN LONDOÑO, Germán Andrés. SISTEMAS MULTISENSOR DE SERVO CONTROL VISUAL CON MEDICIONES FUERA DE SECUENCIA. Inf. téc., Uni versidad Tecnológica de Pereira, 2016. 2
[18] SIMON, D. Optimal State Estimation: Kalman, H Infinity, and Nonlinear Approaches. En: Wiley, 2006. 2
[19] ZHANG Q. YANG L. T CHEN, Z. Li, P. survey on deep learning for big data. Infor mation Fusion 42. ScienceDirect, 2018. 2
[20] HASHIMOTO, K. Kimura, H. isual servoing with nonlinear observer. En: International Journal of Computer Information Systems and Industrial Management Applications, tomo 1, 1995, págs. 484–489. 2
[21] ABDELAAL, Mahmoud, et al. Uncalibrated stereo vision with deep learning for 6-DOF pose estimation for a robot arm system. En: Robotics and Autonomous Systems, tomo 145, 2021, pág. 103847. ISSN 0921-8890. 2
[22] BOUDET, E. Malis; F. Chaumette; S. 2 1/2 D visual servoing. En: IEEE Transactions on Robotics and Automation, tomo 15, No 2, 1999. 2
[23] TOMIZUKA, Jwu-Sheng Hu. Chi-Shen Tsai. Masayoshi. Ensuring Safety in Human Robot Coexistence Environment. En: 2014 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS 2014) September 14-18, 2014, Chicago, IL, USA, 2014, pág. 4191–4196. 2
[24] QUIGLEY, Morgan, et al. ROS: an open-source Robot Operating System. En: ICRA workshop on open source software, 3.2, 2009, pág. 5. 3
[25] FERNANDEZ, Enrique, et al. Learning ROS for robotics programming. Packt Publish ing Ltd, 2015. 3
[26] QUIGLEY, Morgan; GERKEY, Brian y SMART, William D. Programming Robots with ROS: a practical introduction to the Robot Operating System. " O’Reilly Media, Inc.", 2015. 3
[27] OPEN SOURCE ROBOTICS FOUNDATION. ROS - Robot Operating System. https: //www.ros.org/, Consultado en mayo de 2023. 3
[28] OPEN SOURCE ROBOTICS FOUNDATION. ROS Noetic. https://wiki.ros.org/ noetic, Consultado en mayo de 2023. 3
[29] H., Huang L. Zhao. Implementation of UR5 pick and place in ROS-Gazebo with a USB cam and vacuum grippers. https://github.com/lihuang3/ur5_ROS-Gazebo. git, 2018. 4
[30] KEBRIA, Parham M., et al. Kinematic and dynamic modelling of UR5 manipulator. En: 2016 IEEE International Conference on Systems, Man, and Cybernetics (SMC), 2016, págs. 004229–004234. 4.3, 4.3.2, 4.3.3
[31] ...
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 102 Páginas
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 Eléctrica
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/ada03de2-c657-4467-b9f3-d5b20af7a51f/download
https://dspace7-utp.metabuscador.org/bitstreams/3c485232-772d-429e-a322-3d73e8c5fd45/download
https://dspace7-utp.metabuscador.org/bitstreams/0c4d0dd6-d90a-404b-9614-101d98422c2d/download
https://dspace7-utp.metabuscador.org/bitstreams/7b16a8be-4749-4c26-bd42-202dfb6847cd/download
https://dspace7-utp.metabuscador.org/bitstreams/43aa0466-79c9-4b41-8edd-8bfe4db14065/download
bitstream.checksum.fl_str_mv 9107bb12a1179b1fa07d334f3c0c0f4c
2f9959eaf5b71fae44bbf9ec84150c7a
bd7c019b94eb97e3cf93ddaeccd37866
82ae497c6a02e198cb440b415e9ddd10
5b647c6592f056931e79c95f98fd4801
bitstream.checksumAlgorithm.fl_str_mv MD5
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_ 1814022029039370240
spelling 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_abf2info:eu-repo/semantics/openAccessHolguín Londoño, Germán AndrésOrtega Quiñones, Kevin David2023-06-23T16:19:55Z2023-06-23T16:19:55Z2023https://hdl.handle.net/11059/14712Universidad Tecnológica de PereiraRepositorio Institucional Universidad Tecnológica de Pereirahttps://repositorio.utp.edu.co/homeEl presente documento expone el detallado proceso de elaboración de una plataforma virtual mediante la utilización de software de código abierto, destacando herramientas como ROS, Gazebo y Python. Dicha plataforma se emplea con el objetivo principal de capturar y etiquetar bases de datos, cuyo propósito radica en el entrenamiento de una red neuronal convolucional diseñada para estimar con precisión la posición de un manipulador serial. En este sentido, la captura de dichos datos se lleva a cabo de manera eficiente y efectiva mediante la utilización de tres cámaras estratégicamente ubicadas en el entorno de trabajo del robot.The present document outlines the detailed process of developing a virtual platform using open-source software, highlighting tools such as ROS, Gazebo, and Python. This platform is employed with the primary objective of capturing and labeling datasets, aiming to train a convolutional neural network capable of accurately estimating the position of a serial manipulator. In this regard, the data capture is efficiently and effectively performed through the use of three strategically positioned cameras in the robot's working environment.CONTENIDO pág. 1 INTRODUCCIÓN 11 1.1 DEFINICIÓN DEL PROBLEMA . . . . . . . . . . . . . . . . . . . . . . . . 11 1.2 JUSTIFICACIÓN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.3 OBJETIVOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.3.1 Objetivo General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.3.2 Objetivos Específicos . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2 ESTADO DEL ARTE 19 3 ECOSISTEMA DE SIMULACIÓN ROS / GAZEBO / Python 23 3.1 ESTRUCTURA DE UN BRAZO EN ROS . . . . . . . . . . . . . . . . . . . 24 3.2 MANIPULADOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.3 ESTRUCTURA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 4 IMPLEMENTACIÓN DE UN MANIPULADOR SERIAL EN ROS 29 4.1 TIPOS DE ARTICULACIONES . . . . . . . . . . . . . . . . . . . . . . . . 29 4.2 CINEMÁTICA VECTORIAL Y TRANSFORMACIONES DE COORDENADAS 30 4.3 MODELO DE DENAVITH-HARTENBERG . . . . . . . . . . . . . . . . . . 31 4.3.1 Cinemática Directa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 4.3.2 Parámetros DH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.3.3 Cinemática Inversa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 5 CAPTURAS DE BASES DE DATOS 37 5.1 DEFINICIÓN DE POSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 5.2 ÁNGULOS DE EULER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 5.3 ESPACIO DE TRABAJO ESFÉRICO . . . . . . . . . . . . . . . . . . . . . 40 5.4 MUESTREO DE MONTECARLO . . . . . . . . . . . . . . . . . . . . . . . 41 5.5 BASE DE DATOS ETIQUETADAS . . . . . . . . . . . . . . . . . . . . . . 43 6 APRENDIZAJE PROFUNDO 47 6.1 REDES NEURONALES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 6.2 CNN: CONVOLUCIÓN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 6.3 DEEP CNNs-ARQUITECTURAS PROFUNDAS . . . . . . . . . . . . . . . 49 6.4 PROBLEMA DE REGRESIÓN . . . . . . . . . . . . . . . . . . . . . . . . . 51 6.5 ENTRENAMIENTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 6.6 Modelado CNN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 7 EXPERIMENTOS Y RESULTADOS 57 7.1 EXPERIMENTOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 7.2 RESULTADOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 8 CONCLUSIONES 61 8.1 CONCLUSIONES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 8.2 RECOMENDACIONES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 8.3 TRABAJOS FUTUROS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 A TUTORIAL ROS1 65 A.1 INSTALACIÓN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 A.2 CONFIGURACIÓN DEL ENTORNO . . . . . . . . . . . . . . . . . . . . . 68 A.3 EJECUCIÓN DE ROS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 A.3.1 Nivel gráfico de computación de ROS . . . . . . . . . . . . . . . . . . 72 A.3.2 Nivel de la comunidad de ROS . . . . . . . . . . . . . . . . . . . . . . 74 A.3.3 Tutorial de ejecución . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 A.3.4 Introducción a TurtleSim . . . . . . . . . . . . . . . . . . . . . . . . . 77 A.3.5 Gazebo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 B TUTORIAL DE INSTALACIÓN ROS2 83 B.1 RESUMEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 B.2 INTRODUCCIÓN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 B.3 INSTALACCIÓN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 BIBLIOGRAFÍA 89PregradoIngeniero(a) Electricista102 Páginasapplication/pdfspaUniversidad Tecnológica de PereiraIngeniería EléctricaFacultad de IngenieríasPereira000 - Ciencias de la computación, información y obras generales::006 - Métodos especiales de computaciónVisión por computadoraRedes neuronalesReconocimiento de objectosManufactura flexibleManufactura inteligenteCobotsSeguimiento visual de un manipulador serial utilizando redes neuronales profundasTrabajo de grado - Pregradoinfo:eu-repo/semantics/acceptedVersionhttp://purl.org/coar/resource_type/c_7a1fTextinfo:eu-repo/semantics/bachelorThesis[1] TECHNOLOGIES, Faro. Faro lanza la última sonda Vantage Laser Tracker 6DoF. https://www.prnewswire.com/news-releases/ faro-r-lanza-la-ultima-sonda-vantage-laser-tracker-6dof-876210429.html, Fecha de acceso: 2 de junio de 2023. (document), 2[2] MICROSYSTEMS, Leica. Laser Tracker. http://www.metronica.es/metronica/ laser-tracker/, Fecha de acceso: 2 de junio de 2023. (document), 2[3] PANTELERIS, Paschalis; OIKONOMIDIS, Iason y ARGYROS, Antonis. Using a Single RGB Frame for Real Time 3D Hand Pose Estimation in the Wild. En: 2018 IEEE Winter Conference on Applications of Computer Vision (WACV), 2018, págs. 436–445. (document), 2, 4, 2[4] UNIVERSAL ROBOT UR5 collaborative robot - UR5 - robotmp.com. https://www.robotmp.com/universal-robot-ur5-collaborative-robot. Consultado el [18 MAYO 2023]. (document), 6[5] WIKIMEDIA. Ángulos de Euler. Wikipedia Commons, n.d. https://es.wikipedia. org/w/index.php?title=%C3%81ngulos_de_Euler&oldid=141375560. (document), 5.2, 8[6] DURDEVIC, Zakariae Machkour. Daniel Ortiz-Arrollo. Petar. Classical and Deep Learn ing based Visual Servoing Systems: a Survey on State of the Art. En: Journal of Intelligent y Robotic Systems, 2022, págs. 1–27. 1, 2[7] HASHIMOTO., Yasuhiko. The Kawasaki Robot Story. En: 50th Anniversary Website Robot Division of Kawasaki Heavy Industries, Ltd, 2018, pág. 01–25. 1.1[8] WILLIAMS, Theodore Joseph. The Purdue enterprise reference architecture: a technical guide for CIM planning and implementation. Instrument Society of America, 1992. 1.1[9] BARONA LÓPEZ, Gustavo y VELASTEGUÍ, Luis Efraín. Automatización de procesos industriales mediante Industria 4.0. En: AlfaPublicaciones, tomo 3, No 3.1, 2021, págs. 84–101. 1.1[10] HENDERSON., Hugh Durrant. Thomas C. Multisensor Data. En: Springer Handbook of Robotics, 2014, págs. 1–54. 1.1[11] CHEN., Zeyin Zhao. Xin Wang. Jiafan Chen. Mengzhong. A Generalized Kinematic Error Modeling Method for Serial Industrial Robots Based on Product of Exponentials Formula. En: IEEE International Conference on Real-time Computing and Robotics, 2021, pág. 1023–1028. 1.1, 2[12] WANG, Junwei Li. Guoliang Liu. Guohui Tian. Xianglai Zhu. Ziren. International Conference: Distributed RGBD Camera Network for 3D Human Pose Estimation and Action Recognition. En: International Conference on Information Fusion, 2018, pág. 1554–1558. 1.2[13] CHEN., Yutian Liu. Shaozhong Zhang. Danjiang. Obstacle avoidance method based on the movement trend of dynamic obstacles. En: IEEE International Conference on Control and Robotics Engineering (ICCRE), 2018, pág. 45–50. 1.2[14] IGOR, Juhasova Bohuslava. Juhas Martin. Halenar. TCP/IP Protocol Utilisation in Process of Dynamic Control of Robotic Cell According Industry 4.0 Concept. En: SAMI 2017 • IEEE 15th International Symposium on Applied Machine Intelligence and Infor matics • January 26-28, 2017 • Herl’any, Slovakia, 2017, pág. 000218–000222. 2[15] R., Wang H. Yang B. Liu Y. Chen W. Liang X. Pfeifer. Visual servoing of soft robot ma nipulator in constrained environ- ments with an adaptive controller. En: IEEE/ASME Transactions on Mechatronics 22(1), 1, 2016, págs. 41–50. 2[16] SHAO., Wen-Chung Chang. Chia-Kai. Hybrid Fuzzy Control of an Eye-to-Hand Robotic Manipulator for Autonomous Assembly Tasks. En: SICE Annual Conference 2010, 2010, pág. 408–414. 2[17] HOLGUÍN LONDOÑO, Germán Andrés. SISTEMAS MULTISENSOR DE SERVO CONTROL VISUAL CON MEDICIONES FUERA DE SECUENCIA. Inf. téc., Uni versidad Tecnológica de Pereira, 2016. 2[18] SIMON, D. Optimal State Estimation: Kalman, H Infinity, and Nonlinear Approaches. En: Wiley, 2006. 2[19] ZHANG Q. YANG L. T CHEN, Z. Li, P. survey on deep learning for big data. Infor mation Fusion 42. ScienceDirect, 2018. 2[20] HASHIMOTO, K. Kimura, H. isual servoing with nonlinear observer. En: International Journal of Computer Information Systems and Industrial Management Applications, tomo 1, 1995, págs. 484–489. 2[21] ABDELAAL, Mahmoud, et al. Uncalibrated stereo vision with deep learning for 6-DOF pose estimation for a robot arm system. En: Robotics and Autonomous Systems, tomo 145, 2021, pág. 103847. ISSN 0921-8890. 2[22] BOUDET, E. Malis; F. Chaumette; S. 2 1/2 D visual servoing. En: IEEE Transactions on Robotics and Automation, tomo 15, No 2, 1999. 2[23] TOMIZUKA, Jwu-Sheng Hu. Chi-Shen Tsai. Masayoshi. Ensuring Safety in Human Robot Coexistence Environment. En: 2014 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS 2014) September 14-18, 2014, Chicago, IL, USA, 2014, pág. 4191–4196. 2[24] QUIGLEY, Morgan, et al. ROS: an open-source Robot Operating System. En: ICRA workshop on open source software, 3.2, 2009, pág. 5. 3[25] FERNANDEZ, Enrique, et al. Learning ROS for robotics programming. Packt Publish ing Ltd, 2015. 3[26] QUIGLEY, Morgan; GERKEY, Brian y SMART, William D. Programming Robots with ROS: a practical introduction to the Robot Operating System. " O’Reilly Media, Inc.", 2015. 3[27] OPEN SOURCE ROBOTICS FOUNDATION. ROS - Robot Operating System. https: //www.ros.org/, Consultado en mayo de 2023. 3[28] OPEN SOURCE ROBOTICS FOUNDATION. ROS Noetic. https://wiki.ros.org/ noetic, Consultado en mayo de 2023. 3[29] H., Huang L. Zhao. Implementation of UR5 pick and place in ROS-Gazebo with a USB cam and vacuum grippers. https://github.com/lihuang3/ur5_ROS-Gazebo. git, 2018. 4[30] KEBRIA, Parham M., et al. Kinematic and dynamic modelling of UR5 manipulator. En: 2016 IEEE International Conference on Systems, Man, and Cybernetics (SMC), 2016, págs. 004229–004234. 4.3, 4.3.2, 4.3.3[31] ...PublicationORIGINALTRABAJO DE GRADO .pdfapplication/pdf996190https://dspace7-utp.metabuscador.org/bitstreams/ada03de2-c657-4467-b9f3-d5b20af7a51f/download9107bb12a1179b1fa07d334f3c0c0f4cMD58LICENSElicense.txtlicense.txttext/plain; charset=utf-814828https://dspace7-utp.metabuscador.org/bitstreams/3c485232-772d-429e-a322-3d73e8c5fd45/download2f9959eaf5b71fae44bbf9ec84150c7aMD52TEXTTRABAJO DE GRADO.pdf.txtTRABAJO DE GRADO.pdf.txtExtracted texttext/plain87621https://dspace7-utp.metabuscador.org/bitstreams/0c4d0dd6-d90a-404b-9614-101d98422c2d/downloadbd7c019b94eb97e3cf93ddaeccd37866MD53TRABAJO DE GRADO .pdf.txtTRABAJO DE GRADO .pdf.txtExtracted texttext/plain128283https://dspace7-utp.metabuscador.org/bitstreams/7b16a8be-4749-4c26-bd42-202dfb6847cd/download82ae497c6a02e198cb440b415e9ddd10MD56THUMBNAILTRABAJO DE GRADO .pdf.jpgTRABAJO DE GRADO .pdf.jpgGenerated Thumbnailimage/jpeg6893https://dspace7-utp.metabuscador.org/bitstreams/43aa0466-79c9-4b41-8edd-8bfe4db14065/download5b647c6592f056931e79c95f98fd4801MD5911059/14712oai:dspace7-utp.metabuscador.org:11059/147122024-09-05 17:23:08.477https://creativecommons.org/licenses/by-nc-nd/4.0/open.accesshttps://dspace7-utp.metabuscador.orgRepositorio de la Universidad Tecnológica de Pereirabdigital@metabiblioteca.comTEEgT0JSQSAoVEFMIFkgQ09NTyBTRSBERUZJTkUgTcOBUyBBREVMQU5URSkgU0UgT1RPUkdBIEJBSk8gTE9TIFRFUk1JTk9TIERFIEVTVEEgTElDRU5DSUEgUMOaQkxJQ0EgREUgQ1JFQVRJVkUgQ09NTU9OUyAo4oCcTFBDQ+KAnSBPIOKAnExJQ0VOQ0lB4oCdKS4gTEEgT0JSQSBFU1TDgSBQUk9URUdJREEgUE9SIERFUkVDSE9TIERFIEFVVE9SIFkvVSBPVFJBUyBMRVlFUyBBUExJQ0FCTEVTLiBRVUVEQSBQUk9ISUJJRE8gQ1VBTFFVSUVSIFVTTyBRVUUgU0UgSEFHQSBERSBMQSBPQlJBIFFVRSBOTyBDVUVOVEUgQ09OIExBIEFVVE9SSVpBQ0nDk04gUEVSVElORU5URSBERSBDT05GT1JNSURBRCBDT04gTE9TIFTDiVJNSU5PUyBERSBFU1RBIExJQ0VOQ0lBIFkgREUgTEEgTEVZIERFIERFUkVDSE8gREUgQVVUT1IuCgpNRURJQU5URSBFTCBFSkVSQ0lDSU8gREUgQ1VBTFFVSUVSQSBERSBMT1MgREVSRUNIT1MgUVVFIFNFIE9UT1JHQU4gRU4gRVNUQSBMSUNFTkNJQSwgVVNURUQgQUNFUFRBIFkgQUNVRVJEQSBRVUVEQVIgT0JMSUdBRE8gRU4gTE9TIFRFUk1JTk9TIFFVRSBTRSBTRcORQUxBTiBFTiBFTExBLiBFTCBMSUNFTkNJQU5URSBDT05DRURFIEEgVVNURUQgTE9TIERFUkVDSE9TIENPTlRFTklET1MgRU4gRVNUQSBMSUNFTkNJQSBDT05ESUNJT05BRE9TIEEgTEEgQUNFUFRBQ0nDk04gREUgU1VTIFRFUk1JTk9TIFkgQ09ORElDSU9ORVMuCjEuIERlZmluaWNpb25lcwoKYS4JT2JyYSBDb2xlY3RpdmEgZXMgdW5hIG9icmEsIHRhbCBjb21vIHVuYSBwdWJsaWNhY2nDs24gcGVyacOzZGljYSwgdW5hIGFudG9sb2fDrWEsIG8gdW5hIGVuY2ljbG9wZWRpYSwgZW4gbGEgcXVlIGxhIG9icmEgZW4gc3UgdG90YWxpZGFkLCBzaW4gbW9kaWZpY2FjacOzbiBhbGd1bmEsIGp1bnRvIGNvbiB1biBncnVwbyBkZSBvdHJhcyBjb250cmlidWNpb25lcyBxdWUgY29uc3RpdHV5ZW4gb2JyYXMgc2VwYXJhZGFzIGUgaW5kZXBlbmRpZW50ZXMgZW4gc8OtIG1pc21hcywgc2UgaW50ZWdyYW4gZW4gdW4gdG9kbyBjb2xlY3Rpdm8uIFVuYSBPYnJhIHF1ZSBjb25zdGl0dXllIHVuYSBvYnJhIGNvbGVjdGl2YSBubyBzZSBjb25zaWRlcmFyw6EgdW5hIE9icmEgRGVyaXZhZGEgKGNvbW8gc2UgZGVmaW5lIGFiYWpvKSBwYXJhIGxvcyBwcm9ww7NzaXRvcyBkZSBlc3RhIGxpY2VuY2lhLiBhcXVlbGxhIHByb2R1Y2lkYSBwb3IgdW4gZ3J1cG8gZGUgYXV0b3JlcywgZW4gcXVlIGxhIE9icmEgc2UgZW5jdWVudHJhIHNpbiBtb2RpZmljYWNpb25lcywganVudG8gY29uIHVuYSBjaWVydGEgY2FudGlkYWQgZGUgb3RyYXMgY29udHJpYnVjaW9uZXMsIHF1ZSBjb25zdGl0dXllbiBlbiBzw60gbWlzbW9zIHRyYWJham9zIHNlcGFyYWRvcyBlIGluZGVwZW5kaWVudGVzLCBxdWUgc29uIGludGVncmFkb3MgYWwgdG9kbyBjb2xlY3Rpdm8sIHRhbGVzIGNvbW8gcHVibGljYWNpb25lcyBwZXJpw7NkaWNhcywgYW50b2xvZ8OtYXMgbyBlbmNpY2xvcGVkaWFzLgoKYi4JT2JyYSBEZXJpdmFkYSBzaWduaWZpY2EgdW5hIG9icmEgYmFzYWRhIGVuIGxhIG9icmEgb2JqZXRvIGRlIGVzdGEgbGljZW5jaWEgbyBlbiDDqXN0YSB5IG90cmFzIG9icmFzIHByZWV4aXN0ZW50ZXMsIHRhbGVzIGNvbW8gdHJhZHVjY2lvbmVzLCBhcnJlZ2xvcyBtdXNpY2FsZXMsIGRyYW1hdGl6YWNpb25lcywg4oCcZmljY2lvbmFsaXphY2lvbmVz4oCdLCB2ZXJzaW9uZXMgcGFyYSBjaW5lLCDigJxncmFiYWNpb25lcyBkZSBzb25pZG/igJ0sIHJlcHJvZHVjY2lvbmVzIGRlIGFydGUsIHJlc8O6bWVuZXMsIGNvbmRlbnNhY2lvbmVzLCBvIGN1YWxxdWllciBvdHJhIGVuIGxhIHF1ZSBsYSBvYnJhIHB1ZWRhIHNlciB0cmFuc2Zvcm1hZGEsIGNhbWJpYWRhIG8gYWRhcHRhZGEsIGV4Y2VwdG8gYXF1ZWxsYXMgcXVlIGNvbnN0aXR1eWFuIHVuYSBvYnJhIGNvbGVjdGl2YSwgbGFzIHF1ZSBubyBzZXLDoW4gY29uc2lkZXJhZGFzIHVuYSBvYnJhIGRlcml2YWRhIHBhcmEgZWZlY3RvcyBkZSBlc3RhIGxpY2VuY2lhLiAoUGFyYSBldml0YXIgZHVkYXMsIGVuIGVsIGNhc28gZGUgcXVlIGxhIE9icmEgc2VhIHVuYSBjb21wb3NpY2nDs24gbXVzaWNhbCBvIHVuYSBncmFiYWNpw7NuIHNvbm9yYSwgcGFyYSBsb3MgZWZlY3RvcyBkZSBlc3RhIExpY2VuY2lhIGxhIHNpbmNyb25pemFjacOzbiB0ZW1wb3JhbCBkZSBsYSBPYnJhIGNvbiB1bmEgaW1hZ2VuIGVuIG1vdmltaWVudG8gc2UgY29uc2lkZXJhcsOhIHVuYSBPYnJhIERlcml2YWRhIHBhcmEgbG9zIGZpbmVzIGRlIGVzdGEgbGljZW5jaWEpLgoKYy4JTGljZW5jaWFudGUsIGVzIGVsIGluZGl2aWR1byBvIGxhIGVudGlkYWQgdGl0dWxhciBkZSBsb3MgZGVyZWNob3MgZGUgYXV0b3IgcXVlIG9mcmVjZSBsYSBPYnJhIGVuIGNvbmZvcm1pZGFkIGNvbiBsYXMgY29uZGljaW9uZXMgZGUgZXN0YSBMaWNlbmNpYS4KCmQuCUF1dG9yIG9yaWdpbmFsLCBlcyBlbCBpbmRpdmlkdW8gcXVlIGNyZcOzIGxhIE9icmEuCgplLglPYnJhLCBlcyBhcXVlbGxhIG9icmEgc3VzY2VwdGlibGUgZGUgcHJvdGVjY2nDs24gcG9yIGVsIHLDqWdpbWVuIGRlIERlcmVjaG8gZGUgQXV0b3IgeSBxdWUgZXMgb2ZyZWNpZGEgZW4gbG9zIHTDqXJtaW5vcyBkZSBlc3RhIGxpY2VuY2lhCgpmLglVc3RlZCwgZXMgZWwgaW5kaXZpZHVvIG8gbGEgZW50aWRhZCBxdWUgZWplcmNpdGEgbG9zIGRlcmVjaG9zIG90b3JnYWRvcyBhbCBhbXBhcm8gZGUgZXN0YSBMaWNlbmNpYSB5IHF1ZSBjb24gYW50ZXJpb3JpZGFkIG5vIGhhIHZpb2xhZG8gbGFzIGNvbmRpY2lvbmVzIGRlIGxhIG1pc21hIHJlc3BlY3RvIGEgbGEgT2JyYSwgbyBxdWUgaGF5YSBvYnRlbmlkbyBhdXRvcml6YWNpw7NuIGV4cHJlc2EgcG9yIHBhcnRlIGRlbCBMaWNlbmNpYW50ZSBwYXJhIGVqZXJjZXIgbG9zIGRlcmVjaG9zIGFsIGFtcGFybyBkZSBlc3RhIExpY2VuY2lhIHBlc2UgYSB1bmEgdmlvbGFjacOzbiBhbnRlcmlvci4KCjIuIERlcmVjaG9zIGRlIFVzb3MgSG9ucmFkb3MgeSBleGNlcGNpb25lcyBMZWdhbGVzLgpOYWRhIGVuIGVzdGEgTGljZW5jaWEgcG9kcsOhIHNlciBpbnRlcnByZXRhZG8gY29tbyB1bmEgZGlzbWludWNpw7NuLCBsaW1pdGFjacOzbiBvIHJlc3RyaWNjacOzbiBkZSBsb3MgZGVyZWNob3MgZGVyaXZhZG9zIGRlbCB1c28gaG9ucmFkbyB5IG90cmFzIGxpbWl0YWNpb25lcyBvIGV4Y2VwY2lvbmVzIGEgbG9zIGRlcmVjaG9zIGRlbCBhdXRvciBiYWpvIGVsIHLDqWdpbWVuIGxlZ2FsIHZpZ2VudGUgbyBkZXJpdmFkbyBkZSBjdWFscXVpZXIgb3RyYSBub3JtYSBxdWUgc2UgbGUgYXBsaXF1ZS4KCjMuIENvbmNlc2nDs24gZGUgbGEgTGljZW5jaWEuCkJham8gbG9zIHTDqXJtaW5vcyB5IGNvbmRpY2lvbmVzIGRlIGVzdGEgTGljZW5jaWEsIGVsIExpY2VuY2lhbnRlIG90b3JnYSBhIFVzdGVkIHVuYSBsaWNlbmNpYSBtdW5kaWFsLCBsaWJyZSBkZSByZWdhbMOtYXMsIG5vIGV4Y2x1c2l2YSB5IHBlcnBldHVhIChkdXJhbnRlIHRvZG8gZWwgcGVyw61vZG8gZGUgdmlnZW5jaWEgZGUgbG9zIGRlcmVjaG9zIGRlIGF1dG9yKSBwYXJhIGVqZXJjZXIgZXN0b3MgZGVyZWNob3Mgc29icmUgbGEgT2JyYSB0YWwgeSBjb21vIHNlIGluZGljYSBhIGNvbnRpbnVhY2nDs246CgphLglSZXByb2R1Y2lyIGxhIE9icmEsIGluY29ycG9yYXIgbGEgT2JyYSBlbiB1bmEgbyBtw6FzIE9icmFzIENvbGVjdGl2YXMsIHkgcmVwcm9kdWNpciBsYSBPYnJhIGluY29ycG9yYWRhIGVuIGxhcyBPYnJhcyBDb2xlY3RpdmFzLgoKYi4JRGlzdHJpYnVpciBjb3BpYXMgbyBmb25vZ3JhbWFzIGRlIGxhcyBPYnJhcywgZXhoaWJpcmxhcyBww7pibGljYW1lbnRlLCBlamVjdXRhcmxhcyBww7pibGljYW1lbnRlIHkvbyBwb25lcmxhcyBhIGRpc3Bvc2ljacOzbiBww7pibGljYSwgaW5jbHV5w6luZG9sYXMgY29tbyBpbmNvcnBvcmFkYXMgZW4gT2JyYXMgQ29sZWN0aXZhcywgc2Vnw7puIGNvcnJlc3BvbmRhLgoKYy4JRGlzdHJpYnVpciBjb3BpYXMgZGUgbGFzIE9icmFzIERlcml2YWRhcyBxdWUgc2UgZ2VuZXJlbiwgZXhoaWJpcmxhcyBww7pibGljYW1lbnRlLCBlamVjdXRhcmxhcyBww7pibGljYW1lbnRlIHkvbyBwb25lcmxhcyBhIGRpc3Bvc2ljacOzbiBww7pibGljYS4KTG9zIGRlcmVjaG9zIG1lbmNpb25hZG9zIGFudGVyaW9ybWVudGUgcHVlZGVuIHNlciBlamVyY2lkb3MgZW4gdG9kb3MgbG9zIG1lZGlvcyB5IGZvcm1hdG9zLCBhY3R1YWxtZW50ZSBjb25vY2lkb3MgbyBxdWUgc2UgaW52ZW50ZW4gZW4gZWwgZnV0dXJvLiBMb3MgZGVyZWNob3MgYW50ZXMgbWVuY2lvbmFkb3MgaW5jbHV5ZW4gZWwgZGVyZWNobyBhIHJlYWxpemFyIGRpY2hhcyBtb2RpZmljYWNpb25lcyBlbiBsYSBtZWRpZGEgcXVlIHNlYW4gdMOpY25pY2FtZW50ZSBuZWNlc2FyaWFzIHBhcmEgZWplcmNlciBsb3MgZGVyZWNob3MgZW4gb3RybyBtZWRpbyBvIGZvcm1hdG9zLCBwZXJvIGRlIG90cmEgbWFuZXJhIHVzdGVkIG5vIGVzdMOhIGF1dG9yaXphZG8gcGFyYSByZWFsaXphciBvYnJhcyBkZXJpdmFkYXMuIFRvZG9zIGxvcyBkZXJlY2hvcyBubyBvdG9yZ2Fkb3MgZXhwcmVzYW1lbnRlIHBvciBlbCBMaWNlbmNpYW50ZSBxdWVkYW4gcG9yIGVzdGUgbWVkaW8gcmVzZXJ2YWRvcywgaW5jbHV5ZW5kbyBwZXJvIHNpbiBsaW1pdGFyc2UgYSBhcXVlbGxvcyBxdWUgc2UgbWVuY2lvbmFuIGVuIGxhcyBzZWNjaW9uZXMgNChkKSB5IDQoZSkuCgo0LiBSZXN0cmljY2lvbmVzLgpMYSBsaWNlbmNpYSBvdG9yZ2FkYSBlbiBsYSBhbnRlcmlvciBTZWNjacOzbiAzIGVzdMOhIGV4cHJlc2FtZW50ZSBzdWpldGEgeSBsaW1pdGFkYSBwb3IgbGFzIHNpZ3VpZW50ZXMgcmVzdHJpY2Npb25lczoKCmEuCVVzdGVkIHB1ZWRlIGRpc3RyaWJ1aXIsIGV4aGliaXIgcMO6YmxpY2FtZW50ZSwgZWplY3V0YXIgcMO6YmxpY2FtZW50ZSwgbyBwb25lciBhIGRpc3Bvc2ljacOzbiBww7pibGljYSBsYSBPYnJhIHPDs2xvIGJham8gbGFzIGNvbmRpY2lvbmVzIGRlIGVzdGEgTGljZW5jaWEsIHkgVXN0ZWQgZGViZSBpbmNsdWlyIHVuYSBjb3BpYSBkZSBlc3RhIGxpY2VuY2lhIG8gZGVsIElkZW50aWZpY2Fkb3IgVW5pdmVyc2FsIGRlIFJlY3Vyc29zIGRlIGxhIG1pc21hIGNvbiBjYWRhIGNvcGlhIGRlIGxhIE9icmEgcXVlIGRpc3RyaWJ1eWEsIGV4aGliYSBww7pibGljYW1lbnRlLCBlamVjdXRlIHDDumJsaWNhbWVudGUgbyBwb25nYSBhIGRpc3Bvc2ljacOzbiBww7pibGljYS4gTm8gZXMgcG9zaWJsZSBvZnJlY2VyIG8gaW1wb25lciBuaW5ndW5hIGNvbmRpY2nDs24gc29icmUgbGEgT2JyYSBxdWUgYWx0ZXJlIG8gbGltaXRlIGxhcyBjb25kaWNpb25lcyBkZSBlc3RhIExpY2VuY2lhIG8gZWwgZWplcmNpY2lvIGRlIGxvcyBkZXJlY2hvcyBkZSBsb3MgZGVzdGluYXRhcmlvcyBvdG9yZ2Fkb3MgZW4gZXN0ZSBkb2N1bWVudG8uIE5vIGVzIHBvc2libGUgc3VibGljZW5jaWFyIGxhIE9icmEuIFVzdGVkIGRlYmUgbWFudGVuZXIgaW50YWN0b3MgdG9kb3MgbG9zIGF2aXNvcyBxdWUgaGFnYW4gcmVmZXJlbmNpYSBhIGVzdGEgTGljZW5jaWEgeSBhIGxhIGNsw6F1c3VsYSBkZSBsaW1pdGFjacOzbiBkZSBnYXJhbnTDrWFzLiBVc3RlZCBubyBwdWVkZSBkaXN0cmlidWlyLCBleGhpYmlyIHDDumJsaWNhbWVudGUsIGVqZWN1dGFyIHDDumJsaWNhbWVudGUsIG8gcG9uZXIgYSBkaXNwb3NpY2nDs24gcMO6YmxpY2EgbGEgT2JyYSBjb24gYWxndW5hIG1lZGlkYSB0ZWNub2zDs2dpY2EgcXVlIGNvbnRyb2xlIGVsIGFjY2VzbyBvIGxhIHV0aWxpemFjacOzbiBkZSBlbGxhIGRlIHVuYSBmb3JtYSBxdWUgc2VhIGluY29uc2lzdGVudGUgY29uIGxhcyBjb25kaWNpb25lcyBkZSBlc3RhIExpY2VuY2lhLiBMbyBhbnRlcmlvciBzZSBhcGxpY2EgYSBsYSBPYnJhIGluY29ycG9yYWRhIGEgdW5hIE9icmEgQ29sZWN0aXZhLCBwZXJvIGVzdG8gbm8gZXhpZ2UgcXVlIGxhIE9icmEgQ29sZWN0aXZhIGFwYXJ0ZSBkZSBsYSBvYnJhIG1pc21hIHF1ZWRlIHN1amV0YSBhIGxhcyBjb25kaWNpb25lcyBkZSBlc3RhIExpY2VuY2lhLiBTaSBVc3RlZCBjcmVhIHVuYSBPYnJhIENvbGVjdGl2YSwgcHJldmlvIGF2aXNvIGRlIGN1YWxxdWllciBMaWNlbmNpYW50ZSBkZWJlLCBlbiBsYSBtZWRpZGEgZGUgbG8gcG9zaWJsZSwgZWxpbWluYXIgZGUgbGEgT2JyYSBDb2xlY3RpdmEgY3VhbHF1aWVyIHJlZmVyZW5jaWEgYSBkaWNobyBMaWNlbmNpYW50ZSBvIGFsIEF1dG9yIE9yaWdpbmFsLCBzZWfDum4gbG8gc29saWNpdGFkbyBwb3IgZWwgTGljZW5jaWFudGUgeSBjb25mb3JtZSBsbyBleGlnZSBsYSBjbMOhdXN1bGEgNChjKS4KCmIuCVVzdGVkIG5vIHB1ZWRlIGVqZXJjZXIgbmluZ3VubyBkZSBsb3MgZGVyZWNob3MgcXVlIGxlIGhhbiBzaWRvIG90b3JnYWRvcyBlbiBsYSBTZWNjacOzbiAzIHByZWNlZGVudGUgZGUgbW9kbyBxdWUgZXN0w6luIHByaW5jaXBhbG1lbnRlIGRlc3RpbmFkb3MgbyBkaXJlY3RhbWVudGUgZGlyaWdpZG9zIGEgY29uc2VndWlyIHVuIHByb3ZlY2hvIGNvbWVyY2lhbCBvIHVuYSBjb21wZW5zYWNpw7NuIG1vbmV0YXJpYSBwcml2YWRhLiBFbCBpbnRlcmNhbWJpbyBkZSBsYSBPYnJhIHBvciBvdHJhcyBvYnJhcyBwcm90ZWdpZGFzIHBvciBkZXJlY2hvcyBkZSBhdXRvciwgeWEgc2VhIGEgdHJhdsOpcyBkZSB1biBzaXN0ZW1hIHBhcmEgY29tcGFydGlyIGFyY2hpdm9zIGRpZ2l0YWxlcyAoZGlnaXRhbCBmaWxlLXNoYXJpbmcpIG8gZGUgY3VhbHF1aWVyIG90cmEgbWFuZXJhIG5vIHNlcsOhIGNvbnNpZGVyYWRvIGNvbW8gZXN0YXIgZGVzdGluYWRvIHByaW5jaXBhbG1lbnRlIG8gZGlyaWdpZG8gZGlyZWN0YW1lbnRlIGEgY29uc2VndWlyIHVuIHByb3ZlY2hvIGNvbWVyY2lhbCBvIHVuYSBjb21wZW5zYWNpw7NuIG1vbmV0YXJpYSBwcml2YWRhLCBzaWVtcHJlIHF1ZSBubyBzZSByZWFsaWNlIHVuIHBhZ28gbWVkaWFudGUgdW5hIGNvbXBlbnNhY2nDs24gbW9uZXRhcmlhIGVuIHJlbGFjacOzbiBjb24gZWwgaW50ZXJjYW1iaW8gZGUgb2JyYXMgcHJvdGVnaWRhcyBwb3IgZWwgZGVyZWNobyBkZSBhdXRvci4KCmMuCVNpIHVzdGVkIGRpc3RyaWJ1eWUsIGV4aGliZSBww7pibGljYW1lbnRlLCBlamVjdXRhIHDDumJsaWNhbWVudGUgbyBlamVjdXRhIHDDumJsaWNhbWVudGUgZW4gZm9ybWEgZGlnaXRhbCBsYSBPYnJhIG8gY3VhbHF1aWVyIE9icmEgRGVyaXZhZGEgdSBPYnJhIENvbGVjdGl2YSwgVXN0ZWQgZGViZSBtYW50ZW5lciBpbnRhY3RhIHRvZGEgbGEgaW5mb3JtYWNpw7NuIGRlIGRlcmVjaG8gZGUgYXV0b3IgZGUgbGEgT2JyYSB5IHByb3BvcmNpb25hciwgZGUgZm9ybWEgcmF6b25hYmxlIHNlZ8O6biBlbCBtZWRpbyBvIG1hbmVyYSBxdWUgVXN0ZWQgZXN0w6kgdXRpbGl6YW5kbzogKGkpIGVsIG5vbWJyZSBkZWwgQXV0b3IgT3JpZ2luYWwgc2kgZXN0w6EgcHJvdmlzdG8gKG8gc2V1ZMOzbmltbywgc2kgZnVlcmUgYXBsaWNhYmxlKSwgeS9vIChpaSkgZWwgbm9tYnJlIGRlIGxhIHBhcnRlIG8gbGFzIHBhcnRlcyBxdWUgZWwgQXV0b3IgT3JpZ2luYWwgeS9vIGVsIExpY2VuY2lhbnRlIGh1YmllcmVuIGRlc2lnbmFkbyBwYXJhIGxhIGF0cmlidWNpw7NuICh2LmcuLCB1biBpbnN0aXR1dG8gcGF0cm9jaW5hZG9yLCBlZGl0b3JpYWwsIHB1YmxpY2FjacOzbikgZW4gbGEgaW5mb3JtYWNpw7NuIGRlIGxvcyBkZXJlY2hvcyBkZSBhdXRvciBkZWwgTGljZW5jaWFudGUsIHTDqXJtaW5vcyBkZSBzZXJ2aWNpb3MgbyBkZSBvdHJhcyBmb3JtYXMgcmF6b25hYmxlczsgZWwgdMOtdHVsbyBkZSBsYSBPYnJhIHNpIGVzdMOhIHByb3Zpc3RvOyBlbiBsYSBtZWRpZGEgZGUgbG8gcmF6b25hYmxlbWVudGUgZmFjdGlibGUgeSwgc2kgZXN0w6EgcHJvdmlzdG8sIGVsIElkZW50aWZpY2Fkb3IgVW5pZm9ybWUgZGUgUmVjdXJzb3MgKFVuaWZvcm0gUmVzb3VyY2UgSWRlbnRpZmllcikgcXVlIGVsIExpY2VuY2lhbnRlIGVzcGVjaWZpY2EgcGFyYSBzZXIgYXNvY2lhZG8gY29uIGxhIE9icmEsIHNhbHZvIHF1ZSB0YWwgVVJJIG5vIHNlIHJlZmllcmEgYSBsYSBub3RhIHNvYnJlIGxvcyBkZXJlY2hvcyBkZSBhdXRvciBvIGEgbGEgaW5mb3JtYWNpw7NuIHNvYnJlIGVsIGxpY2VuY2lhbWllbnRvIGRlIGxhIE9icmE7IHkgZW4gZWwgY2FzbyBkZSB1bmEgT2JyYSBEZXJpdmFkYSwgYXRyaWJ1aXIgZWwgY3LDqWRpdG8gaWRlbnRpZmljYW5kbyBlbCB1c28gZGUgbGEgT2JyYSBlbiBsYSBPYnJhIERlcml2YWRhICh2LmcuLCAiVHJhZHVjY2nDs24gRnJhbmNlc2EgZGUgbGEgT2JyYSBkZWwgQXV0b3IgT3JpZ2luYWwsIiBvICJHdWnDs24gQ2luZW1hdG9ncsOhZmljbyBiYXNhZG8gZW4gbGEgT2JyYSBvcmlnaW5hbCBkZWwgQXV0b3IgT3JpZ2luYWwiKS4gVGFsIGNyw6lkaXRvIHB1ZWRlIHNlciBpbXBsZW1lbnRhZG8gZGUgY3VhbHF1aWVyIGZvcm1hIHJhem9uYWJsZTsgZW4gZWwgY2Fzbywgc2luIGVtYmFyZ28sIGRlIE9icmFzIERlcml2YWRhcyB1IE9icmFzIENvbGVjdGl2YXMsIHRhbCBjcsOpZGl0byBhcGFyZWNlcsOhLCBjb21vIG3DrW5pbW8sIGRvbmRlIGFwYXJlY2UgZWwgY3LDqWRpdG8gZGUgY3VhbHF1aWVyIG90cm8gYXV0b3IgY29tcGFyYWJsZSB5IGRlIHVuYSBtYW5lcmEsIGFsIG1lbm9zLCB0YW4gZGVzdGFjYWRhIGNvbW8gZWwgY3LDqWRpdG8gZGUgb3RybyBhdXRvciBjb21wYXJhYmxlLgoKZC4JUGFyYSBldml0YXIgdG9kYSBjb25mdXNpw7NuLCBlbCBMaWNlbmNpYW50ZSBhY2xhcmEgcXVlLCBjdWFuZG8gbGEgb2JyYSBlcyB1bmEgY29tcG9zaWNpw7NuIG11c2ljYWw6CgppLglSZWdhbMOtYXMgcG9yIGludGVycHJldGFjacOzbiB5IGVqZWN1Y2nDs24gYmFqbyBsaWNlbmNpYXMgZ2VuZXJhbGVzLiBFbCBMaWNlbmNpYW50ZSBzZSByZXNlcnZhIGVsIGRlcmVjaG8gZXhjbHVzaXZvIGRlIGF1dG9yaXphciBsYSBlamVjdWNpw7NuIHDDumJsaWNhIG8gbGEgZWplY3VjacOzbiBww7pibGljYSBkaWdpdGFsIGRlIGxhIG9icmEgeSBkZSByZWNvbGVjdGFyLCBzZWEgaW5kaXZpZHVhbG1lbnRlIG8gYSB0cmF2w6lzIGRlIHVuYSBzb2NpZWRhZCBkZSBnZXN0acOzbiBjb2xlY3RpdmEgZGUgZGVyZWNob3MgZGUgYXV0b3IgeSBkZXJlY2hvcyBjb25leG9zIChwb3IgZWplbXBsbywgU0FZQ08pLCBsYXMgcmVnYWzDrWFzIHBvciBsYSBlamVjdWNpw7NuIHDDumJsaWNhIG8gcG9yIGxhIGVqZWN1Y2nDs24gcMO6YmxpY2EgZGlnaXRhbCBkZSBsYSBvYnJhIChwb3IgZWplbXBsbyBXZWJjYXN0KSBsaWNlbmNpYWRhIGJham8gbGljZW5jaWFzIGdlbmVyYWxlcywgc2kgbGEgaW50ZXJwcmV0YWNpw7NuIG8gZWplY3VjacOzbiBkZSBsYSBvYnJhIGVzdMOhIHByaW1vcmRpYWxtZW50ZSBvcmllbnRhZGEgcG9yIG8gZGlyaWdpZGEgYSBsYSBvYnRlbmNpw7NuIGRlIHVuYSB2ZW50YWphIGNvbWVyY2lhbCBvIHVuYSBjb21wZW5zYWNpw7NuIG1vbmV0YXJpYSBwcml2YWRhLgoKaWkuCVJlZ2Fsw61hcyBwb3IgRm9ub2dyYW1hcy4gRWwgTGljZW5jaWFudGUgc2UgcmVzZXJ2YSBlbCBkZXJlY2hvIGV4Y2x1c2l2byBkZSByZWNvbGVjdGFyLCBpbmRpdmlkdWFsbWVudGUgbyBhIHRyYXbDqXMgZGUgdW5hIHNvY2llZGFkIGRlIGdlc3Rpw7NuIGNvbGVjdGl2YSBkZSBkZXJlY2hvcyBkZSBhdXRvciB5IGRlcmVjaG9zIGNvbmV4b3MgKHBvciBlamVtcGxvLCBsb3MgY29uc2FncmFkb3MgcG9yIGxhIFNBWUNPKSwgdW5hIGFnZW5jaWEgZGUgZGVyZWNob3MgbXVzaWNhbGVzIG8gYWxnw7puIGFnZW50ZSBkZXNpZ25hZG8sIGxhcyByZWdhbMOtYXMgcG9yIGN1YWxxdWllciBmb25vZ3JhbWEgcXVlIFVzdGVkIGNyZWUgYSBwYXJ0aXIgZGUgbGEgb2JyYSAo4oCcdmVyc2nDs24gY292ZXLigJ0pIHkgZGlzdHJpYnV5YSwgZW4gbG9zIHTDqXJtaW5vcyBkZWwgcsOpZ2ltZW4gZGUgZGVyZWNob3MgZGUgYXV0b3IsIHNpIGxhIGNyZWFjacOzbiBvIGRpc3RyaWJ1Y2nDs24gZGUgZXNhIHZlcnNpw7NuIGNvdmVyIGVzdMOhIHByaW1vcmRpYWxtZW50ZSBkZXN0aW5hZGEgbyBkaXJpZ2lkYSBhIG9idGVuZXIgdW5hIHZlbnRhamEgY29tZXJjaWFsIG8gdW5hIGNvbXBlbnNhY2nDs24gbW9uZXRhcmlhIHByaXZhZGEuCgplLglHZXN0acOzbiBkZSBEZXJlY2hvcyBkZSBBdXRvciBzb2JyZSBJbnRlcnByZXRhY2lvbmVzIHkgRWplY3VjaW9uZXMgRGlnaXRhbGVzIChXZWJDYXN0aW5nKS4gUGFyYSBldml0YXIgdG9kYSBjb25mdXNpw7NuLCBlbCBMaWNlbmNpYW50ZSBhY2xhcmEgcXVlLCBjdWFuZG8gbGEgb2JyYSBzZWEgdW4gZm9ub2dyYW1hLCBlbCBMaWNlbmNpYW50ZSBzZSByZXNlcnZhIGVsIGRlcmVjaG8gZXhjbHVzaXZvIGRlIGF1dG9yaXphciBsYSBlamVjdWNpw7NuIHDDumJsaWNhIGRpZ2l0YWwgZGUgbGEgb2JyYSAocG9yIGVqZW1wbG8sIHdlYmNhc3QpIHkgZGUgcmVjb2xlY3RhciwgaW5kaXZpZHVhbG1lbnRlIG8gYSB0cmF2w6lzIGRlIHVuYSBzb2NpZWRhZCBkZSBnZXN0acOzbiBjb2xlY3RpdmEgZGUgZGVyZWNob3MgZGUgYXV0b3IgeSBkZXJlY2hvcyBjb25leG9zIChwb3IgZWplbXBsbywgQUNJTlBSTyksIGxhcyByZWdhbMOtYXMgcG9yIGxhIGVqZWN1Y2nDs24gcMO6YmxpY2EgZGlnaXRhbCBkZSBsYSBvYnJhIChwb3IgZWplbXBsbywgd2ViY2FzdCksIHN1amV0YSBhIGxhcyBkaXNwb3NpY2lvbmVzIGFwbGljYWJsZXMgZGVsIHLDqWdpbWVuIGRlIERlcmVjaG8gZGUgQXV0b3IsIHNpIGVzdGEgZWplY3VjacOzbiBww7pibGljYSBkaWdpdGFsIGVzdMOhIHByaW1vcmRpYWxtZW50ZSBkaXJpZ2lkYSBhIG9idGVuZXIgdW5hIHZlbnRhamEgY29tZXJjaWFsIG8gdW5hIGNvbXBlbnNhY2nDs24gbW9uZXRhcmlhIHByaXZhZGEuCgo1LiBSZXByZXNlbnRhY2lvbmVzLCBHYXJhbnTDrWFzIHkgTGltaXRhY2lvbmVzIGRlIFJlc3BvbnNhYmlsaWRhZC4KQSBNRU5PUyBRVUUgTEFTIFBBUlRFUyBMTyBBQ09SREFSQU4gREUgT1RSQSBGT1JNQSBQT1IgRVNDUklUTywgRUwgTElDRU5DSUFOVEUgT0ZSRUNFIExBIE9CUkEgKEVOIEVMIEVTVEFETyBFTiBFTCBRVUUgU0UgRU5DVUVOVFJBKSDigJxUQUwgQ1VBTOKAnSwgU0lOIEJSSU5EQVIgR0FSQU5Uw41BUyBERSBDTEFTRSBBTEdVTkEgUkVTUEVDVE8gREUgTEEgT0JSQSwgWUEgU0VBIEVYUFJFU0EsIElNUEzDjUNJVEEsIExFR0FMIE8gQ1VBTFFVSUVSQSBPVFJBLCBJTkNMVVlFTkRPLCBTSU4gTElNSVRBUlNFIEEgRUxMQVMsIEdBUkFOVMONQVMgREUgVElUVUxBUklEQUQsIENPTUVSQ0lBQklMSURBRCwgQURBUFRBQklMSURBRCBPIEFERUNVQUNJw5NOIEEgUFJPUMOTU0lUTyBERVRFUk1JTkFETywgQVVTRU5DSUEgREUgSU5GUkFDQ0nDk04sIERFIEFVU0VOQ0lBIERFIERFRkVDVE9TIExBVEVOVEVTIE8gREUgT1RSTyBUSVBPLCBPIExBIFBSRVNFTkNJQSBPIEFVU0VOQ0lBIERFIEVSUk9SRVMsIFNFQU4gTyBOTyBERVNDVUJSSUJMRVMgKFBVRURBTiBPIE5PIFNFUiBFU1RPUyBERVNDVUJJRVJUT1MpLiBBTEdVTkFTIEpVUklTRElDQ0lPTkVTIE5PIFBFUk1JVEVOIExBIEVYQ0xVU0nDk04gREUgR0FSQU5Uw41BUyBJTVBMw41DSVRBUywgRU4gQ1VZTyBDQVNPIEVTVEEgRVhDTFVTScOTTiBQVUVERSBOTyBBUExJQ0FSU0UgQSBVU1RFRC4KCjYuIExpbWl0YWNpw7NuIGRlIHJlc3BvbnNhYmlsaWRhZC4KQSBNRU5PUyBRVUUgTE8gRVhJSkEgRVhQUkVTQU1FTlRFIExBIExFWSBBUExJQ0FCTEUsIEVMIExJQ0VOQ0lBTlRFIE5PIFNFUsOBIFJFU1BPTlNBQkxFIEFOVEUgVVNURUQgUE9SIERBw5FPIEFMR1VOTywgU0VBIFBPUiBSRVNQT05TQUJJTElEQUQgRVhUUkFDT05UUkFDVFVBTCwgUFJFQ09OVFJBQ1RVQUwgTyBDT05UUkFDVFVBTCwgT0JKRVRJVkEgTyBTVUJKRVRJVkEsIFNFIFRSQVRFIERFIERBw5FPUyBNT1JBTEVTIE8gUEFUUklNT05JQUxFUywgRElSRUNUT1MgTyBJTkRJUkVDVE9TLCBQUkVWSVNUT1MgTyBJTVBSRVZJU1RPUyBQUk9EVUNJRE9TIFBPUiBFTCBVU08gREUgRVNUQSBMSUNFTkNJQSBPIERFIExBIE9CUkEsIEFVTiBDVUFORE8gRUwgTElDRU5DSUFOVEUgSEFZQSBTSURPIEFEVkVSVElETyBERSBMQSBQT1NJQklMSURBRCBERSBESUNIT1MgREHDkU9TLiBBTEdVTkFTIExFWUVTIE5PIFBFUk1JVEVOIExBIEVYQ0xVU0nDk04gREUgQ0lFUlRBIFJFU1BPTlNBQklMSURBRCwgRU4gQ1VZTyBDQVNPIEVTVEEgRVhDTFVTScOTTiBQVUVERSBOTyBBUExJQ0FSU0UgQSBVU1RFRC4KCjcuIFTDqXJtaW5vLgoKYS4JRXN0YSBMaWNlbmNpYSB5IGxvcyBkZXJlY2hvcyBvdG9yZ2Fkb3MgZW4gdmlydHVkIGRlIGVsbGEgdGVybWluYXLDoW4gYXV0b23DoXRpY2FtZW50ZSBzaSBVc3RlZCBpbmZyaW5nZSBhbGd1bmEgY29uZGljacOzbiBlc3RhYmxlY2lkYSBlbiBlbGxhLiBTaW4gZW1iYXJnbywgbG9zIGluZGl2aWR1b3MgbyBlbnRpZGFkZXMgcXVlIGhhbiByZWNpYmlkbyBPYnJhcyBEZXJpdmFkYXMgbyBDb2xlY3RpdmFzIGRlIFVzdGVkIGRlIGNvbmZvcm1pZGFkIGNvbiBlc3RhIExpY2VuY2lhLCBubyB2ZXLDoW4gdGVybWluYWRhcyBzdXMgbGljZW5jaWFzLCBzaWVtcHJlIHF1ZSBlc3RvcyBpbmRpdmlkdW9zIG8gZW50aWRhZGVzIHNpZ2FuIGN1bXBsaWVuZG8gw61udGVncmFtZW50ZSBsYXMgY29uZGljaW9uZXMgZGUgZXN0YXMgbGljZW5jaWFzLiBMYXMgU2VjY2lvbmVzIDEsIDIsIDUsIDYsIDcsIHkgOCBzdWJzaXN0aXLDoW4gYSBjdWFscXVpZXIgdGVybWluYWNpw7NuIGRlIGVzdGEgTGljZW5jaWEuCgpiLglTdWpldGEgYSBsYXMgY29uZGljaW9uZXMgeSB0w6lybWlub3MgYW50ZXJpb3JlcywgbGEgbGljZW5jaWEgb3RvcmdhZGEgYXF1w60gZXMgcGVycGV0dWEgKGR1cmFudGUgZWwgcGVyw61vZG8gZGUgdmlnZW5jaWEgZGUgbG9zIGRlcmVjaG9zIGRlIGF1dG9yIGRlIGxhIG9icmEpLiBObyBvYnN0YW50ZSBsbyBhbnRlcmlvciwgZWwgTGljZW5jaWFudGUgc2UgcmVzZXJ2YSBlbCBkZXJlY2hvIGEgcHVibGljYXIgeS9vIGVzdHJlbmFyIGxhIE9icmEgYmFqbyBjb25kaWNpb25lcyBkZSBsaWNlbmNpYSBkaWZlcmVudGVzIG8gYSBkZWphciBkZSBkaXN0cmlidWlybGEgZW4gbG9zIHTDqXJtaW5vcyBkZSBlc3RhIExpY2VuY2lhIGVuIGN1YWxxdWllciBtb21lbnRvOyBlbiBlbCBlbnRlbmRpZG8sIHNpbiBlbWJhcmdvLCBxdWUgZXNhIGVsZWNjacOzbiBubyBzZXJ2aXLDoSBwYXJhIHJldm9jYXIgZXN0YSBsaWNlbmNpYSBvIHF1ZSBkZWJhIHNlciBvdG9yZ2FkYSAsIGJham8gbG9zIHTDqXJtaW5vcyBkZSBlc3RhIGxpY2VuY2lhKSwgeSBlc3RhIGxpY2VuY2lhIGNvbnRpbnVhcsOhIGVuIHBsZW5vIHZpZ29yIHkgZWZlY3RvIGEgbWVub3MgcXVlIHNlYSB0ZXJtaW5hZGEgY29tbyBzZSBleHByZXNhIGF0csOhcy4gTGEgTGljZW5jaWEgcmV2b2NhZGEgY29udGludWFyw6Egc2llbmRvIHBsZW5hbWVudGUgdmlnZW50ZSB5IGVmZWN0aXZhIHNpIG5vIHNlIGxlIGRhIHTDqXJtaW5vIGVuIGxhcyBjb25kaWNpb25lcyBpbmRpY2FkYXMgYW50ZXJpb3JtZW50ZS4KCjguIFZhcmlvcy4KCmEuCUNhZGEgdmV6IHF1ZSBVc3RlZCBkaXN0cmlidXlhIG8gcG9uZ2EgYSBkaXNwb3NpY2nDs24gcMO6YmxpY2EgbGEgT2JyYSBvIHVuYSBPYnJhIENvbGVjdGl2YSwgZWwgTGljZW5jaWFudGUgb2ZyZWNlcsOhIGFsIGRlc3RpbmF0YXJpbyB1bmEgbGljZW5jaWEgZW4gbG9zIG1pc21vcyB0w6lybWlub3MgeSBjb25kaWNpb25lcyBxdWUgbGEgbGljZW5jaWEgb3RvcmdhZGEgYSBVc3RlZCBiYWpvIGVzdGEgTGljZW5jaWEuCgpiLglTaSBhbGd1bmEgZGlzcG9zaWNpw7NuIGRlIGVzdGEgTGljZW5jaWEgcmVzdWx0YSBpbnZhbGlkYWRhIG8gbm8gZXhpZ2libGUsIHNlZ8O6biBsYSBsZWdpc2xhY2nDs24gdmlnZW50ZSwgZXN0byBubyBhZmVjdGFyw6EgbmkgbGEgdmFsaWRleiBuaSBsYSBhcGxpY2FiaWxpZGFkIGRlbCByZXN0byBkZSBjb25kaWNpb25lcyBkZSBlc3RhIExpY2VuY2lhIHksIHNpbiBhY2Npw7NuIGFkaWNpb25hbCBwb3IgcGFydGUgZGUgbG9zIHN1amV0b3MgZGUgZXN0ZSBhY3VlcmRvLCBhcXXDqWxsYSBzZSBlbnRlbmRlcsOhIHJlZm9ybWFkYSBsbyBtw61uaW1vIG5lY2VzYXJpbyBwYXJhIGhhY2VyIHF1ZSBkaWNoYSBkaXNwb3NpY2nDs24gc2VhIHbDoWxpZGEgeSBleGlnaWJsZS4KCmMuCU5pbmfDum4gdMOpcm1pbm8gbyBkaXNwb3NpY2nDs24gZGUgZXN0YSBMaWNlbmNpYSBzZSBlc3RpbWFyw6EgcmVudW5jaWFkYSB5IG5pbmd1bmEgdmlvbGFjacOzbiBkZSBlbGxhIHNlcsOhIGNvbnNlbnRpZGEgYSBtZW5vcyBxdWUgZXNhIHJlbnVuY2lhIG8gY29uc2VudGltaWVudG8gc2VhIG90b3JnYWRvIHBvciBlc2NyaXRvIHkgZmlybWFkbyBwb3IgbGEgcGFydGUgcXVlIHJlbnVuY2llIG8gY29uc2llbnRhLgoKZC4JRXN0YSBMaWNlbmNpYSByZWZsZWphIGVsIGFjdWVyZG8gcGxlbm8gZW50cmUgbGFzIHBhcnRlcyByZXNwZWN0byBhIGxhIE9icmEgYXF1w60gbGljZW5jaWFkYS4gTm8gaGF5IGFycmVnbG9zLCBhY3VlcmRvcyBvIGRlY2xhcmFjaW9uZXMgcmVzcGVjdG8gYSBsYSBPYnJhIHF1ZSBubyBlc3TDqW4gZXNwZWNpZmljYWRvcyBlbiBlc3RlIGRvY3VtZW50by4gRWwgTGljZW5jaWFudGUgbm8gc2UgdmVyw6EgbGltaXRhZG8gcG9yIG5pbmd1bmEgZGlzcG9zaWNpw7NuIGFkaWNpb25hbCBxdWUgcHVlZGEgc3VyZ2lyIGVuIGFsZ3VuYSBjb211bmljYWNpw7NuIGVtYW5hZGEgZGUgVXN0ZWQuIEVzdGEgTGljZW5jaWEgbm8gcHVlZGUgc2VyIG1vZGlmaWNhZGEgc2luIGVsIGNvbnNlbnRpbWllbnRvIG11dHVvIHBvciBlc2NyaXRvIGRlbCBMaWNlbmNpYW50ZSB5IFVzdGVkLgo=