SISTEMA DE DESPLIEGUE AUTOMATIZADO DE INFRAESTRUCTURA DE MICROSERVICIOS PARA LA RECUPERACIÓN ANTE DESASTRES EN AZURE
Este trabajo de grado presenta el desarrollo de un sistema de recuperación ante desastres en la nube, específicamente para los API Management en Azure, su interacción con los usuarios finales se da vía web en el portal de Azure. El alcance se enfoca en crear copias de seguridad de los contenedores d...
- Autores:
-
Restrepo, Alejandro
- Tipo de recurso:
- Trabajo de grado de pregrado
- Fecha de publicación:
- 2024
- Institución:
- Tecnológico de Antioquia
- Repositorio:
- Repositorio Tdea
- Idioma:
- spa
- OAI Identifier:
- oai:dspace.tdea.edu.co:tdea/5839
- Acceso en línea:
- https://dspace.tdea.edu.co/handle/tdea/5839
https://dspace.tdea.edu.co
- Palabra clave:
- Azure
Api Management
Disaster Recovery
DRP
RTO
Automation
IaC (Infrastructure as a code)
BackUp
Key Vault
Automation Account
Storage account
Entra ID
- Rights
- openAccess
- License
- Tecnológico de Antioquia, Institución Universitaria, 2024
id |
RepoTdea2_843d8d6f94ffa8ec81efa9f3d4447772 |
---|---|
oai_identifier_str |
oai:dspace.tdea.edu.co:tdea/5839 |
network_acronym_str |
RepoTdea2 |
network_name_str |
Repositorio Tdea |
repository_id_str |
|
dc.title.none.fl_str_mv |
SISTEMA DE DESPLIEGUE AUTOMATIZADO DE INFRAESTRUCTURA DE MICROSERVICIOS PARA LA RECUPERACIÓN ANTE DESASTRES EN AZURE |
dc.title.translated.none.fl_str_mv |
SYSTEM FOR AUTOMATED USE OF MICROSERVICES INFRASTRUCTURE FOR DISASTER RECOVERY IN AZURE |
title |
SISTEMA DE DESPLIEGUE AUTOMATIZADO DE INFRAESTRUCTURA DE MICROSERVICIOS PARA LA RECUPERACIÓN ANTE DESASTRES EN AZURE |
spellingShingle |
SISTEMA DE DESPLIEGUE AUTOMATIZADO DE INFRAESTRUCTURA DE MICROSERVICIOS PARA LA RECUPERACIÓN ANTE DESASTRES EN AZURE Azure Api Management Disaster Recovery DRP RTO Automation IaC (Infrastructure as a code) BackUp Key Vault Automation Account Storage account Entra ID |
title_short |
SISTEMA DE DESPLIEGUE AUTOMATIZADO DE INFRAESTRUCTURA DE MICROSERVICIOS PARA LA RECUPERACIÓN ANTE DESASTRES EN AZURE |
title_full |
SISTEMA DE DESPLIEGUE AUTOMATIZADO DE INFRAESTRUCTURA DE MICROSERVICIOS PARA LA RECUPERACIÓN ANTE DESASTRES EN AZURE |
title_fullStr |
SISTEMA DE DESPLIEGUE AUTOMATIZADO DE INFRAESTRUCTURA DE MICROSERVICIOS PARA LA RECUPERACIÓN ANTE DESASTRES EN AZURE |
title_full_unstemmed |
SISTEMA DE DESPLIEGUE AUTOMATIZADO DE INFRAESTRUCTURA DE MICROSERVICIOS PARA LA RECUPERACIÓN ANTE DESASTRES EN AZURE |
title_sort |
SISTEMA DE DESPLIEGUE AUTOMATIZADO DE INFRAESTRUCTURA DE MICROSERVICIOS PARA LA RECUPERACIÓN ANTE DESASTRES EN AZURE |
dc.creator.fl_str_mv |
Restrepo, Alejandro |
dc.contributor.advisor.none.fl_str_mv |
Vargas Agudelo, Fabio Alberto Juan Camilo, Giraldo Mejía |
dc.contributor.author.none.fl_str_mv |
Restrepo, Alejandro |
dc.contributor.jury.none.fl_str_mv |
Vallejo, Silvana Villamizar, Aixa Eileen |
dc.subject.proposal.none.fl_str_mv |
Azure Api Management Disaster Recovery DRP RTO Automation IaC (Infrastructure as a code) BackUp Key Vault Automation Account Storage account Entra ID |
topic |
Azure Api Management Disaster Recovery DRP RTO Automation IaC (Infrastructure as a code) BackUp Key Vault Automation Account Storage account Entra ID |
description |
Este trabajo de grado presenta el desarrollo de un sistema de recuperación ante desastres en la nube, específicamente para los API Management en Azure, su interacción con los usuarios finales se da vía web en el portal de Azure. El alcance se enfoca en crear copias de seguridad de los contenedores de API y en caso de una falla o error humano, recrear la infraestructura con código y desplegar los componentes de la API para que el servicio esté disponible de nuevo en el menor tiempo posible. Esto permite disminuir las pérdidas económicas y sanciones legales en la operación de la compañía, con el fin de probar la eficacia y eficiencia del sistema en diferentes situaciones de fallas y desastres. Con la implementación de este sistema, se asegura la continuidad del negocio y la disponibilidad del servicio para los clientes, brindando una solución robusta y confiable ante posibles fallas. |
publishDate |
2024 |
dc.date.accessioned.none.fl_str_mv |
2024-07-25T13:21:49Z |
dc.date.available.none.fl_str_mv |
2024-07-25T13:21:49Z |
dc.date.issued.none.fl_str_mv |
2024-06-05 |
dc.type.spa.fl_str_mv |
Trabajo de grado - Pregrado |
dc.type.coar.spa.fl_str_mv |
http://purl.org/coar/resource_type/c_7a1f |
dc.type.content.spa.fl_str_mv |
Text |
dc.type.driver.spa.fl_str_mv |
info:eu-repo/semantics/bachelorThesis |
dc.type.redcol.spa.fl_str_mv |
http://purl.org/redcol/resource_type/TP |
dc.type.version.spa.fl_str_mv |
info:eu-repo/semantics/acceptedVersion |
format |
http://purl.org/coar/resource_type/c_7a1f |
status_str |
acceptedVersion |
dc.identifier.citation.spa.fl_str_mv |
APA |
dc.identifier.uri.none.fl_str_mv |
https://dspace.tdea.edu.co/handle/tdea/5839 |
dc.identifier.instname.spa.fl_str_mv |
Tecnológico de Antioquia Institución Universitaria |
dc.identifier.reponame.spa.fl_str_mv |
Repositorio Digital TdeA |
dc.identifier.repourl.spa.fl_str_mv |
https://dspace.tdea.edu.co |
identifier_str_mv |
APA Tecnológico de Antioquia Institución Universitaria Repositorio Digital TdeA |
url |
https://dspace.tdea.edu.co/handle/tdea/5839 https://dspace.tdea.edu.co |
dc.language.iso.spa.fl_str_mv |
spa |
language |
spa |
dc.relation.references.spa.fl_str_mv |
[Microsoft. (2024). Security in Azure Automation. Retrieved from. Retrieved from Security in Azure Automation. Retrieved from: https://learn.microsoft.com/enus/azure/automation/automation-security-overview Córdoba. (2021). Desarrollar una metodología para el despliegue de un sitio alterno aplicando la norma ISO 22301 a un centro de datos usando la aplicación Veeam. Retrieved from https://dspace.ups.edu.ec/handle/123456789/20096 Daniel, G. (2022). Diseño y Elaboración del Plan de Recuperación de Desastres para el Área TI de la Escuela Colombiana de Ingeniería Julio Garavito. Retrieved from https://repository.unipiloto.edu.co/handle/20.500.12277/12501 Dinh-Tuan H. (2020). Development Frameworks for Microservice-Based Applications. Retrieved from https://doi.org/10.1145/3393822.3432339 Elaboracion, Propia. (2024). DRP Api Managment AZURE. Retrieved from https://trello.com/b/XQ2NtzhG/drp-api-managment-azure Gesttor. (2024). plan “Pay as you Go” de Azure. Retrieved from https://gesttor.com/blog/azurepay-as-you- Sistema de despliegue automatizado de infraestructura de micro servicios para la recuperación ante desastres en azure Tecnológico de Antioquia – Institución Universitaria Página 6 go/#:~:text=El%20plan%20Pay%2DAs%2DYou,de%20trabajo%20variables%20o%20est acionales. Hernández. (2021). Diseño de una solución integral de backup y disaster recovery. Retrieved from https://openaccess.uoc.edu/handle/10609/132629 Herrera, E. (2022 ). Guía metodológica para la gestión de riesgos de los requerimientos en proyectos de desarrollo de software con marcos de trabajo LEAN y SCRUM. Retrieved from https://repositorio.escuelaing.edu.co/handle/001/2065 IEEE. (2020). On the Effectiveness of Tools to Support Infrastructure as Code: Model-Driven Versus Code-Centric. Retrieved from https://ieeexplore.ieee.org/abstract/document/8959180 IEEE. (2022). Building Secure Environments for Microservices. Retrieved from https://ieeexplore.ieee.org/document/9973086 IEEE. (2022). Towards Migrating Legacy Software Systems to Microservice-based Architectures: a Data-Centric Process for Microservice Identification. Retrieved from https://ieeexplore.ieee.org/document/9779850 IEEE. (2023). Robustness of Microservice Architecture Design, A Complex Network Approach . Retrieved from https://ieeexplore.ieee.org/document/10414440 IEEE. (2023). Streamlining Infrastructure Deployment and Management Through Infrastructure as Code. Retrieved from https://ieeexplore.ieee.org/document/10425616 Microsoft. (2024). Azure Active Directory permissions and roles. Retrieved from. Retrieved from Azure Active Directory permissions and roles. Retrieved from: https://learn.microsoft.com/en-us/azure/active-directory/roles/permissions-reference Microsoft. (2024). Azure Blob Storage. Retrieved from. Retrieved from Azure Blob Storage. Retrieved from: https://azure.microsoft.com/enus/products/storage/blobs/?ef_id=_k_0950ae48cd2d14f88153ca1334499484_k_&OCID= AIDcmm3804ythc_SEM__k_0950ae48cd2d14f88153ca1334499484_k_&msclkid=0950a e48cd2d14f88153ca1334499484 Microsoft. (2024). Azure Monitor. Retrieved from. Retrieved from Azure Monitor. Retrieved from: https://azure.microsoft.com/esmx/products/monitor/?ef_id=_k_b6f972ed9d121d4918ea16b66734ebf0_k_&OCID=AID cmm3804ythc_SEM__k_b6f972ed9d121d4918ea16b66734ebf0_k_&msclkid=b6f972ed9 d121d4918ea16b66734ebf0#overview/ Microsoft. (2024). How Azure Multi-Factor Authentication works. Retrieved from. Retrieved from How Azure Multi-Factor Authentication works. Retrieved from: https://learn.microsoft.com/en-us/azure/active-directory/authentication/concept-mfahowitworks Microsoft. (2024). Identity and Access Management (IAM) in Azure. Retrieved from. Retrieved from Identity and Access Management (IAM) in Azure. Retrieved from: https://learn.microsoft.com/en-us/azure/active-directory/fundamentals/active-directoryops-guide-iam Microsoft. (2024). Introduction to Azure Storage. Retrieved from. Retrieved from Introduction to Azure Storage. Retrieved from: https://learn.microsoft.com/enus/azure/storage/common/storage-account-overview Microsoft. (2024). Introduction to the Operations guide. Retrieved from. Retrieved from Introduction to the Operations guide. Retrieved from: https://learn.microsoft.com/enus/azure/active-directory/fundamentals/active-directory-ops-guide-intro Microsoft. (2024). Microsoft Azure. Retrieved from Microsoft Azure: https://learn.microsoft.com/es-es/training/azure/ Microsoft. (2024). Microsoft.KeyVault vaults Retrieved from. Retrieved from Microsoft.KeyVault vaults Retrieved from: https://learn.microsoft.com/enus/azure/templates/microsoft.keyvault/vaults Microsoft. (2024). Microsoft.Storage/storageAccounts - Bicep & ARM template reference. Retrieved from. Retrieved from Microsoft.Storage/storageAccounts - Bicep & ARM template reference. Retrieved from: https://learn.microsoft.com/enus/azure/templates/microsoft.storage/storageaccounts?pivots=deployment-language-bicep Microsoft. (2024). Monitoring reference. Retrieved from. Retrieved from Monitoring reference. Retrieved from: https://learn.microsoft.com/en-us/azure/azure-monitor/azure-monitormonitoring-reference Microsoft. (2024). Operations guide - Authentication. Retrieved from. Retrieved from Operations guide - Authentication. Retrieved from: https://learn.microsoft.com/en-us/azure/activedirectory/fundamentals/active-directory-ops-guide-auth Microsoft. (2024). Procedimiento para implementar la recuperación ante desastres mediante copias de seguridad y restauración del servicio en Azure API Management. Retrieved from https://learn.microsoft.com/es-es/azure/api-management/api-management-howtodisaster-recovery-backup-restore?tabs=powershell#back-up-an-api-management-service Microsoft. (2024). Use Key Vault references as app settings in Azure App Service and Azure Functions Retrieved from. Retrieved from Use Key Vault references as app settings in Azure App Service and Azure Functions Retrieved from: https://learn.microsoft.com/enus/azure/app-service/app-service-key-vault-references?tabs=azure-cli Microsoft. (2024). What is Azure Active Directory? Retrieved from. Retrieved from What is Azure Active Directory? Retrieved from: https://learn.microsoft.com/en-us/azure/activedirectory/fundamentals/active-directory-whatis Microsoft. (2024). What is Azure Logic Apps? Retrieved from. Retrieved from What is Azure Logic Apps? Retrieved from: https://learn.microsoft.com/en-us/azure/logic-apps/logicapps-overview Microsoft. (2024). What is infrastructure as code (IaC)? Retrieved from. Retrieved from What is infrastructure as code (IaC)? Retrieved from.: https://learn.microsoft.com/enus/devops/deliver/what-is-infrastructure-as-code Microsoft Learn. (2023). Azure API Management REST API. Retrieved from Azure API Management REST API: https://learn.microsoft.com/en-us/rest/api/apimanagement/ OMAR, A. (2022). Arquitectura de software APH para mejorar el desarrollo de microservicios en la empresa Hiper, año 2022. Retrieved from https://repositorio.unasam.edu.pe/handle/UNASAM/5376 protector, D. (2024). Data Protector. Retrieved from www.docs.microfocus.com Rodriguez. (2015). ¿Por qué implementar Scrum? Retrieved from https://dialnet.unirioja.es/servlet/articulo?codigo=8705520 Skarin, M. (2010). Kanban y Scrum. Retrieved from https://eva.fing.edu.uy/pluginfile.php/246624/mod_label/intro/Kanban%20and%20Scrum .pdf Vásquez, B. (2024). Plan para la aplicación de sinergias metodológicas entre PMI y Scrum en el desarrollo de proyectos de tecnología. Retrieved from https://repository.universidadean.edu.co/handle/10882/13579 Veeam. (2019). Modelo de pago tradicional BYOL. Retrieved from Modelo de pago tradicional BYOL: https://vinfrastructure.it/2019/03/veeam-backup-community-edition/ Veeam. (2024). Backup Infrastructure for Backup. Retrieved from https://helpcenter.veeam.com/docs/backup/vsphere/backup_architecture.html?ver=120 Sistema de despliegue automatizado de infraestructura de micro servicios para la recuperación ante desastres en azure Tecnológico de Antioquia – Institución Universitaria Página 12 Veeam. (2024). veeam. Retrieved from www.veeam.com |
dc.rights.none.fl_str_mv |
Tecnológico de Antioquia, Institución Universitaria, 2024 |
dc.rights.uri.spa.fl_str_mv |
https://creativecommons.org/licenses/by-nc/4.0/ |
dc.rights.license.spa.fl_str_mv |
Atribución-NoComercial 4.0 Internacional (CC BY-NC 4.0) |
dc.rights.accessrights.spa.fl_str_mv |
info:eu-repo/semantics/openAccess |
dc.rights.coar.spa.fl_str_mv |
http://purl.org/coar/access_right/c_abf2 |
rights_invalid_str_mv |
Tecnológico de Antioquia, Institución Universitaria, 2024 https://creativecommons.org/licenses/by-nc/4.0/ Atribución-NoComercial 4.0 Internacional (CC BY-NC 4.0) http://purl.org/coar/access_right/c_abf2 |
eu_rights_str_mv |
openAccess |
dc.format.extent.spa.fl_str_mv |
12 páginas |
dc.format.mimetype.spa.fl_str_mv |
application/pdf |
dc.publisher.spa.fl_str_mv |
Tecnológico de Antioquia, Institución Universitaria |
dc.publisher.faculty.spa.fl_str_mv |
Facultad de Ingeniería |
dc.publisher.program.spa.fl_str_mv |
Ingenieria de Software |
dc.publisher.place.spa.fl_str_mv |
Medellín |
institution |
Tecnológico de Antioquia |
bitstream.url.fl_str_mv |
https://dspace.tdea.edu.co/bitstream/tdea/5839/8/sintesis_Desarrollo_Alejandro%20Restrepo%20Correa.pdf https://dspace.tdea.edu.co/bitstream/tdea/5839/9/license.txt https://dspace.tdea.edu.co/bitstream/tdea/5839/10/sintesis_Desarrollo_Alejandro%20Restrepo%20Correa.pdf.txt https://dspace.tdea.edu.co/bitstream/tdea/5839/11/sintesis_Desarrollo_Alejandro%20Restrepo%20Correa.pdf.jpg |
bitstream.checksum.fl_str_mv |
5f9c8e1dbc79bb8c68c45bd9f45c6ecb 2f9959eaf5b71fae44bbf9ec84150c7a f784c69aa4a31446b0768b0bf890bd79 28f7077ff0e700f671b71279b8faf570 |
bitstream.checksumAlgorithm.fl_str_mv |
MD5 MD5 MD5 MD5 |
repository.name.fl_str_mv |
Repositorio Institucional Tecnologico de Antioquia |
repository.mail.fl_str_mv |
bdigital@metabiblioteca.com |
_version_ |
1812189249827504128 |
spelling |
Vargas Agudelo, Fabio Alberto84aaf368-ad97-4a90-a741-f57e5456a3a5Juan Camilo, Giraldo Mejía8026f407-0393-4a07-a385-4bb3de2edf5dRestrepo, Alejandro23a8aa60-4aa6-41b9-bc49-46361e85758dVallejo, SilvanaVillamizar, Aixa Eileen2024-07-25T13:21:49Z2024-07-25T13:21:49Z2024-06-05APAhttps://dspace.tdea.edu.co/handle/tdea/5839Tecnológico de Antioquia Institución UniversitariaRepositorio Digital TdeAhttps://dspace.tdea.edu.coEste trabajo de grado presenta el desarrollo de un sistema de recuperación ante desastres en la nube, específicamente para los API Management en Azure, su interacción con los usuarios finales se da vía web en el portal de Azure. El alcance se enfoca en crear copias de seguridad de los contenedores de API y en caso de una falla o error humano, recrear la infraestructura con código y desplegar los componentes de la API para que el servicio esté disponible de nuevo en el menor tiempo posible. Esto permite disminuir las pérdidas económicas y sanciones legales en la operación de la compañía, con el fin de probar la eficacia y eficiencia del sistema en diferentes situaciones de fallas y desastres. Con la implementación de este sistema, se asegura la continuidad del negocio y la disponibilidad del servicio para los clientes, brindando una solución robusta y confiable ante posibles fallas.PregradoIngeniero(a) de Software12 páginasapplication/pdfspaTecnológico de Antioquia, Institución UniversitariaFacultad de IngenieríaIngenieria de SoftwareMedellínTecnológico de Antioquia, Institución Universitaria, 2024https://creativecommons.org/licenses/by-nc/4.0/Atribución-NoComercial 4.0 Internacional (CC BY-NC 4.0)info:eu-repo/semantics/openAccesshttp://purl.org/coar/access_right/c_abf2SISTEMA DE DESPLIEGUE AUTOMATIZADO DE INFRAESTRUCTURA DE MICROSERVICIOS PARA LA RECUPERACIÓN ANTE DESASTRES EN AZURESYSTEM FOR AUTOMATED USE OF MICROSERVICES INFRASTRUCTURE FOR DISASTER RECOVERY IN AZURETrabajo de grado - Pregradohttp://purl.org/coar/resource_type/c_7a1fTextinfo:eu-repo/semantics/bachelorThesishttp://purl.org/redcol/resource_type/TPinfo:eu-repo/semantics/acceptedVersion[Microsoft. (2024). Security in Azure Automation. Retrieved from. Retrieved from Security in Azure Automation. Retrieved from: https://learn.microsoft.com/enus/azure/automation/automation-security-overviewCórdoba. (2021). Desarrollar una metodología para el despliegue de un sitio alterno aplicando la norma ISO 22301 a un centro de datos usando la aplicación Veeam. Retrieved from https://dspace.ups.edu.ec/handle/123456789/20096Daniel, G. (2022). Diseño y Elaboración del Plan de Recuperación de Desastres para el Área TI de la Escuela Colombiana de Ingeniería Julio Garavito. Retrieved from https://repository.unipiloto.edu.co/handle/20.500.12277/12501Dinh-Tuan H. (2020). Development Frameworks for Microservice-Based Applications. Retrieved from https://doi.org/10.1145/3393822.3432339Elaboracion, Propia. (2024). DRP Api Managment AZURE. Retrieved from https://trello.com/b/XQ2NtzhG/drp-api-managment-azureGesttor. (2024). plan “Pay as you Go” de Azure. Retrieved from https://gesttor.com/blog/azurepay-as-you- Sistema de despliegue automatizado de infraestructura de micro servicios para la recuperación ante desastres en azure Tecnológico de Antioquia – Institución Universitaria Página 6 go/#:~:text=El%20plan%20Pay%2DAs%2DYou,de%20trabajo%20variables%20o%20est acionales.Hernández. (2021). Diseño de una solución integral de backup y disaster recovery. Retrieved from https://openaccess.uoc.edu/handle/10609/132629Herrera, E. (2022 ). Guía metodológica para la gestión de riesgos de los requerimientos en proyectos de desarrollo de software con marcos de trabajo LEAN y SCRUM. Retrieved from https://repositorio.escuelaing.edu.co/handle/001/2065IEEE. (2020). On the Effectiveness of Tools to Support Infrastructure as Code: Model-Driven Versus Code-Centric. Retrieved from https://ieeexplore.ieee.org/abstract/document/8959180IEEE. (2022). Building Secure Environments for Microservices. Retrieved from https://ieeexplore.ieee.org/document/9973086IEEE. (2022). Towards Migrating Legacy Software Systems to Microservice-based Architectures: a Data-Centric Process for Microservice Identification. Retrieved from https://ieeexplore.ieee.org/document/9779850IEEE. (2023). Robustness of Microservice Architecture Design, A Complex Network Approach . Retrieved from https://ieeexplore.ieee.org/document/10414440IEEE. (2023). Streamlining Infrastructure Deployment and Management Through Infrastructure as Code. Retrieved from https://ieeexplore.ieee.org/document/10425616Microsoft. (2024). Azure Active Directory permissions and roles. Retrieved from. Retrieved from Azure Active Directory permissions and roles. Retrieved from: https://learn.microsoft.com/en-us/azure/active-directory/roles/permissions-referenceMicrosoft. (2024). Azure Blob Storage. Retrieved from. Retrieved from Azure Blob Storage. Retrieved from: https://azure.microsoft.com/enus/products/storage/blobs/?ef_id=_k_0950ae48cd2d14f88153ca1334499484_k_&OCID= AIDcmm3804ythc_SEM__k_0950ae48cd2d14f88153ca1334499484_k_&msclkid=0950a e48cd2d14f88153ca1334499484Microsoft. (2024). Azure Monitor. Retrieved from. Retrieved from Azure Monitor. Retrieved from: https://azure.microsoft.com/esmx/products/monitor/?ef_id=_k_b6f972ed9d121d4918ea16b66734ebf0_k_&OCID=AID cmm3804ythc_SEM__k_b6f972ed9d121d4918ea16b66734ebf0_k_&msclkid=b6f972ed9 d121d4918ea16b66734ebf0#overview/Microsoft. (2024). How Azure Multi-Factor Authentication works. Retrieved from. Retrieved from How Azure Multi-Factor Authentication works. Retrieved from: https://learn.microsoft.com/en-us/azure/active-directory/authentication/concept-mfahowitworksMicrosoft. (2024). Identity and Access Management (IAM) in Azure. Retrieved from. Retrieved from Identity and Access Management (IAM) in Azure. Retrieved from: https://learn.microsoft.com/en-us/azure/active-directory/fundamentals/active-directoryops-guide-iamMicrosoft. (2024). Introduction to Azure Storage. Retrieved from. Retrieved from Introduction to Azure Storage. Retrieved from: https://learn.microsoft.com/enus/azure/storage/common/storage-account-overviewMicrosoft. (2024). Introduction to the Operations guide. Retrieved from. Retrieved from Introduction to the Operations guide. Retrieved from: https://learn.microsoft.com/enus/azure/active-directory/fundamentals/active-directory-ops-guide-intro Microsoft. (2024). Microsoft Azure. Retrieved from Microsoft Azure: https://learn.microsoft.com/es-es/training/azure/Microsoft. (2024). Microsoft.KeyVault vaults Retrieved from. Retrieved from Microsoft.KeyVault vaults Retrieved from: https://learn.microsoft.com/enus/azure/templates/microsoft.keyvault/vaultsMicrosoft. (2024). Microsoft.Storage/storageAccounts - Bicep & ARM template reference. Retrieved from. Retrieved from Microsoft.Storage/storageAccounts - Bicep & ARM template reference. Retrieved from: https://learn.microsoft.com/enus/azure/templates/microsoft.storage/storageaccounts?pivots=deployment-language-bicepMicrosoft. (2024). Monitoring reference. Retrieved from. Retrieved from Monitoring reference. Retrieved from: https://learn.microsoft.com/en-us/azure/azure-monitor/azure-monitormonitoring-referenceMicrosoft. (2024). Operations guide - Authentication. Retrieved from. Retrieved from Operations guide - Authentication. Retrieved from: https://learn.microsoft.com/en-us/azure/activedirectory/fundamentals/active-directory-ops-guide-authMicrosoft. (2024). Procedimiento para implementar la recuperación ante desastres mediante copias de seguridad y restauración del servicio en Azure API Management. Retrieved from https://learn.microsoft.com/es-es/azure/api-management/api-management-howtodisaster-recovery-backup-restore?tabs=powershell#back-up-an-api-management-serviceMicrosoft. (2024). Use Key Vault references as app settings in Azure App Service and Azure Functions Retrieved from. Retrieved from Use Key Vault references as app settings in Azure App Service and Azure Functions Retrieved from: https://learn.microsoft.com/enus/azure/app-service/app-service-key-vault-references?tabs=azure-cliMicrosoft. (2024). What is Azure Active Directory? Retrieved from. Retrieved from What is Azure Active Directory? Retrieved from: https://learn.microsoft.com/en-us/azure/activedirectory/fundamentals/active-directory-whatisMicrosoft. (2024). What is Azure Logic Apps? Retrieved from. Retrieved from What is Azure Logic Apps? Retrieved from: https://learn.microsoft.com/en-us/azure/logic-apps/logicapps-overviewMicrosoft. (2024). What is infrastructure as code (IaC)? Retrieved from. Retrieved from What is infrastructure as code (IaC)? Retrieved from.: https://learn.microsoft.com/enus/devops/deliver/what-is-infrastructure-as-codeMicrosoft Learn. (2023). Azure API Management REST API. Retrieved from Azure API Management REST API: https://learn.microsoft.com/en-us/rest/api/apimanagement/OMAR, A. (2022). Arquitectura de software APH para mejorar el desarrollo de microservicios en la empresa Hiper, año 2022. Retrieved from https://repositorio.unasam.edu.pe/handle/UNASAM/5376protector, D. (2024). Data Protector. Retrieved from www.docs.microfocus.comRodriguez. (2015). ¿Por qué implementar Scrum? Retrieved from https://dialnet.unirioja.es/servlet/articulo?codigo=8705520Skarin, M. (2010). Kanban y Scrum. Retrieved from https://eva.fing.edu.uy/pluginfile.php/246624/mod_label/intro/Kanban%20and%20Scrum .pdfVásquez, B. (2024). Plan para la aplicación de sinergias metodológicas entre PMI y Scrum en el desarrollo de proyectos de tecnología. Retrieved from https://repository.universidadean.edu.co/handle/10882/13579Veeam. (2019). Modelo de pago tradicional BYOL. Retrieved from Modelo de pago tradicional BYOL: https://vinfrastructure.it/2019/03/veeam-backup-community-edition/Veeam. (2024). Backup Infrastructure for Backup. Retrieved from https://helpcenter.veeam.com/docs/backup/vsphere/backup_architecture.html?ver=120 Sistema de despliegue automatizado de infraestructura de micro servicios para la recuperación ante desastres en azure Tecnológico de Antioquia – Institución Universitaria Página 12 Veeam. (2024). veeam. Retrieved from www.veeam.comAzureApi ManagementDisaster RecoveryDRPRTOAutomationIaC (Infrastructure as a code)BackUpKey VaultAutomation AccountStorage accountEntra IDSISTEMA DE DESPLIEGUE AUTOMATIZADO DE INFRAESTRUCTURA DE MICROSERVICIOS PARA LA RECUPERACIÓN ANTE DESASTRES EN AZUREORIGINALsintesis_Desarrollo_Alejandro Restrepo Correa.pdfsintesis_Desarrollo_Alejandro Restrepo Correa.pdfSíntesisapplication/pdf131032https://dspace.tdea.edu.co/bitstream/tdea/5839/8/sintesis_Desarrollo_Alejandro%20Restrepo%20Correa.pdf5f9c8e1dbc79bb8c68c45bd9f45c6ecbMD58open accessLICENSElicense.txtlicense.txttext/plain; charset=utf-814828https://dspace.tdea.edu.co/bitstream/tdea/5839/9/license.txt2f9959eaf5b71fae44bbf9ec84150c7aMD59open accessTEXTsintesis_Desarrollo_Alejandro Restrepo Correa.pdf.txtsintesis_Desarrollo_Alejandro Restrepo Correa.pdf.txtExtracted texttext/plain12092https://dspace.tdea.edu.co/bitstream/tdea/5839/10/sintesis_Desarrollo_Alejandro%20Restrepo%20Correa.pdf.txtf784c69aa4a31446b0768b0bf890bd79MD510open accessTHUMBNAILsintesis_Desarrollo_Alejandro Restrepo Correa.pdf.jpgsintesis_Desarrollo_Alejandro Restrepo Correa.pdf.jpgGenerated Thumbnailimage/jpeg8358https://dspace.tdea.edu.co/bitstream/tdea/5839/11/sintesis_Desarrollo_Alejandro%20Restrepo%20Correa.pdf.jpg28f7077ff0e700f671b71279b8faf570MD511open accesstdea/5839oai:dspace.tdea.edu.co:tdea/58392024-07-26 03:16:34.346An error occurred on the license name.|||https://creativecommons.org/licenses/by-nc/4.0/metadata only accessRepositorio Institucional Tecnologico de Antioquiabdigital@metabiblioteca.comTEEgT0JSQSAoVEFMIFkgQ09NTyBTRSBERUZJTkUgTcOBUyBBREVMQU5URSkgU0UgT1RPUkdBIEJBSk8gTE9TIFRFUk1JTk9TIERFIEVTVEEgTElDRU5DSUEgUMOaQkxJQ0EgREUgQ1JFQVRJVkUgQ09NTU9OUyAo4oCcTFBDQ+KAnSBPIOKAnExJQ0VOQ0lB4oCdKS4gTEEgT0JSQSBFU1TDgSBQUk9URUdJREEgUE9SIERFUkVDSE9TIERFIEFVVE9SIFkvVSBPVFJBUyBMRVlFUyBBUExJQ0FCTEVTLiBRVUVEQSBQUk9ISUJJRE8gQ1VBTFFVSUVSIFVTTyBRVUUgU0UgSEFHQSBERSBMQSBPQlJBIFFVRSBOTyBDVUVOVEUgQ09OIExBIEFVVE9SSVpBQ0nDk04gUEVSVElORU5URSBERSBDT05GT1JNSURBRCBDT04gTE9TIFTDiVJNSU5PUyBERSBFU1RBIExJQ0VOQ0lBIFkgREUgTEEgTEVZIERFIERFUkVDSE8gREUgQVVUT1IuCgpNRURJQU5URSBFTCBFSkVSQ0lDSU8gREUgQ1VBTFFVSUVSQSBERSBMT1MgREVSRUNIT1MgUVVFIFNFIE9UT1JHQU4gRU4gRVNUQSBMSUNFTkNJQSwgVVNURUQgQUNFUFRBIFkgQUNVRVJEQSBRVUVEQVIgT0JMSUdBRE8gRU4gTE9TIFRFUk1JTk9TIFFVRSBTRSBTRcORQUxBTiBFTiBFTExBLiBFTCBMSUNFTkNJQU5URSBDT05DRURFIEEgVVNURUQgTE9TIERFUkVDSE9TIENPTlRFTklET1MgRU4gRVNUQSBMSUNFTkNJQSBDT05ESUNJT05BRE9TIEEgTEEgQUNFUFRBQ0nDk04gREUgU1VTIFRFUk1JTk9TIFkgQ09ORElDSU9ORVMuCjEuIERlZmluaWNpb25lcwoKYS4JT2JyYSBDb2xlY3RpdmEgZXMgdW5hIG9icmEsIHRhbCBjb21vIHVuYSBwdWJsaWNhY2nDs24gcGVyacOzZGljYSwgdW5hIGFudG9sb2fDrWEsIG8gdW5hIGVuY2ljbG9wZWRpYSwgZW4gbGEgcXVlIGxhIG9icmEgZW4gc3UgdG90YWxpZGFkLCBzaW4gbW9kaWZpY2FjacOzbiBhbGd1bmEsIGp1bnRvIGNvbiB1biBncnVwbyBkZSBvdHJhcyBjb250cmlidWNpb25lcyBxdWUgY29uc3RpdHV5ZW4gb2JyYXMgc2VwYXJhZGFzIGUgaW5kZXBlbmRpZW50ZXMgZW4gc8OtIG1pc21hcywgc2UgaW50ZWdyYW4gZW4gdW4gdG9kbyBjb2xlY3Rpdm8uIFVuYSBPYnJhIHF1ZSBjb25zdGl0dXllIHVuYSBvYnJhIGNvbGVjdGl2YSBubyBzZSBjb25zaWRlcmFyw6EgdW5hIE9icmEgRGVyaXZhZGEgKGNvbW8gc2UgZGVmaW5lIGFiYWpvKSBwYXJhIGxvcyBwcm9ww7NzaXRvcyBkZSBlc3RhIGxpY2VuY2lhLiBhcXVlbGxhIHByb2R1Y2lkYSBwb3IgdW4gZ3J1cG8gZGUgYXV0b3JlcywgZW4gcXVlIGxhIE9icmEgc2UgZW5jdWVudHJhIHNpbiBtb2RpZmljYWNpb25lcywganVudG8gY29uIHVuYSBjaWVydGEgY2FudGlkYWQgZGUgb3RyYXMgY29udHJpYnVjaW9uZXMsIHF1ZSBjb25zdGl0dXllbiBlbiBzw60gbWlzbW9zIHRyYWJham9zIHNlcGFyYWRvcyBlIGluZGVwZW5kaWVudGVzLCBxdWUgc29uIGludGVncmFkb3MgYWwgdG9kbyBjb2xlY3Rpdm8sIHRhbGVzIGNvbW8gcHVibGljYWNpb25lcyBwZXJpw7NkaWNhcywgYW50b2xvZ8OtYXMgbyBlbmNpY2xvcGVkaWFzLgoKYi4JT2JyYSBEZXJpdmFkYSBzaWduaWZpY2EgdW5hIG9icmEgYmFzYWRhIGVuIGxhIG9icmEgb2JqZXRvIGRlIGVzdGEgbGljZW5jaWEgbyBlbiDDqXN0YSB5IG90cmFzIG9icmFzIHByZWV4aXN0ZW50ZXMsIHRhbGVzIGNvbW8gdHJhZHVjY2lvbmVzLCBhcnJlZ2xvcyBtdXNpY2FsZXMsIGRyYW1hdGl6YWNpb25lcywg4oCcZmljY2lvbmFsaXphY2lvbmVz4oCdLCB2ZXJzaW9uZXMgcGFyYSBjaW5lLCDigJxncmFiYWNpb25lcyBkZSBzb25pZG/igJ0sIHJlcHJvZHVjY2lvbmVzIGRlIGFydGUsIHJlc8O6bWVuZXMsIGNvbmRlbnNhY2lvbmVzLCBvIGN1YWxxdWllciBvdHJhIGVuIGxhIHF1ZSBsYSBvYnJhIHB1ZWRhIHNlciB0cmFuc2Zvcm1hZGEsIGNhbWJpYWRhIG8gYWRhcHRhZGEsIGV4Y2VwdG8gYXF1ZWxsYXMgcXVlIGNvbnN0aXR1eWFuIHVuYSBvYnJhIGNvbGVjdGl2YSwgbGFzIHF1ZSBubyBzZXLDoW4gY29uc2lkZXJhZGFzIHVuYSBvYnJhIGRlcml2YWRhIHBhcmEgZWZlY3RvcyBkZSBlc3RhIGxpY2VuY2lhLiAoUGFyYSBldml0YXIgZHVkYXMsIGVuIGVsIGNhc28gZGUgcXVlIGxhIE9icmEgc2VhIHVuYSBjb21wb3NpY2nDs24gbXVzaWNhbCBvIHVuYSBncmFiYWNpw7NuIHNvbm9yYSwgcGFyYSBsb3MgZWZlY3RvcyBkZSBlc3RhIExpY2VuY2lhIGxhIHNpbmNyb25pemFjacOzbiB0ZW1wb3JhbCBkZSBsYSBPYnJhIGNvbiB1bmEgaW1hZ2VuIGVuIG1vdmltaWVudG8gc2UgY29uc2lkZXJhcsOhIHVuYSBPYnJhIERlcml2YWRhIHBhcmEgbG9zIGZpbmVzIGRlIGVzdGEgbGljZW5jaWEpLgoKYy4JTGljZW5jaWFudGUsIGVzIGVsIGluZGl2aWR1byBvIGxhIGVudGlkYWQgdGl0dWxhciBkZSBsb3MgZGVyZWNob3MgZGUgYXV0b3IgcXVlIG9mcmVjZSBsYSBPYnJhIGVuIGNvbmZvcm1pZGFkIGNvbiBsYXMgY29uZGljaW9uZXMgZGUgZXN0YSBMaWNlbmNpYS4KCmQuCUF1dG9yIG9yaWdpbmFsLCBlcyBlbCBpbmRpdmlkdW8gcXVlIGNyZcOzIGxhIE9icmEuCgplLglPYnJhLCBlcyBhcXVlbGxhIG9icmEgc3VzY2VwdGlibGUgZGUgcHJvdGVjY2nDs24gcG9yIGVsIHLDqWdpbWVuIGRlIERlcmVjaG8gZGUgQXV0b3IgeSBxdWUgZXMgb2ZyZWNpZGEgZW4gbG9zIHTDqXJtaW5vcyBkZSBlc3RhIGxpY2VuY2lhCgpmLglVc3RlZCwgZXMgZWwgaW5kaXZpZHVvIG8gbGEgZW50aWRhZCBxdWUgZWplcmNpdGEgbG9zIGRlcmVjaG9zIG90b3JnYWRvcyBhbCBhbXBhcm8gZGUgZXN0YSBMaWNlbmNpYSB5IHF1ZSBjb24gYW50ZXJpb3JpZGFkIG5vIGhhIHZpb2xhZG8gbGFzIGNvbmRpY2lvbmVzIGRlIGxhIG1pc21hIHJlc3BlY3RvIGEgbGEgT2JyYSwgbyBxdWUgaGF5YSBvYnRlbmlkbyBhdXRvcml6YWNpw7NuIGV4cHJlc2EgcG9yIHBhcnRlIGRlbCBMaWNlbmNpYW50ZSBwYXJhIGVqZXJjZXIgbG9zIGRlcmVjaG9zIGFsIGFtcGFybyBkZSBlc3RhIExpY2VuY2lhIHBlc2UgYSB1bmEgdmlvbGFjacOzbiBhbnRlcmlvci4KCjIuIERlcmVjaG9zIGRlIFVzb3MgSG9ucmFkb3MgeSBleGNlcGNpb25lcyBMZWdhbGVzLgpOYWRhIGVuIGVzdGEgTGljZW5jaWEgcG9kcsOhIHNlciBpbnRlcnByZXRhZG8gY29tbyB1bmEgZGlzbWludWNpw7NuLCBsaW1pdGFjacOzbiBvIHJlc3RyaWNjacOzbiBkZSBsb3MgZGVyZWNob3MgZGVyaXZhZG9zIGRlbCB1c28gaG9ucmFkbyB5IG90cmFzIGxpbWl0YWNpb25lcyBvIGV4Y2VwY2lvbmVzIGEgbG9zIGRlcmVjaG9zIGRlbCBhdXRvciBiYWpvIGVsIHLDqWdpbWVuIGxlZ2FsIHZpZ2VudGUgbyBkZXJpdmFkbyBkZSBjdWFscXVpZXIgb3RyYSBub3JtYSBxdWUgc2UgbGUgYXBsaXF1ZS4KCjMuIENvbmNlc2nDs24gZGUgbGEgTGljZW5jaWEuCkJham8gbG9zIHTDqXJtaW5vcyB5IGNvbmRpY2lvbmVzIGRlIGVzdGEgTGljZW5jaWEsIGVsIExpY2VuY2lhbnRlIG90b3JnYSBhIFVzdGVkIHVuYSBsaWNlbmNpYSBtdW5kaWFsLCBsaWJyZSBkZSByZWdhbMOtYXMsIG5vIGV4Y2x1c2l2YSB5IHBlcnBldHVhIChkdXJhbnRlIHRvZG8gZWwgcGVyw61vZG8gZGUgdmlnZW5jaWEgZGUgbG9zIGRlcmVjaG9zIGRlIGF1dG9yKSBwYXJhIGVqZXJjZXIgZXN0b3MgZGVyZWNob3Mgc29icmUgbGEgT2JyYSB0YWwgeSBjb21vIHNlIGluZGljYSBhIGNvbnRpbnVhY2nDs246CgphLglSZXByb2R1Y2lyIGxhIE9icmEsIGluY29ycG9yYXIgbGEgT2JyYSBlbiB1bmEgbyBtw6FzIE9icmFzIENvbGVjdGl2YXMsIHkgcmVwcm9kdWNpciBsYSBPYnJhIGluY29ycG9yYWRhIGVuIGxhcyBPYnJhcyBDb2xlY3RpdmFzLgoKYi4JRGlzdHJpYnVpciBjb3BpYXMgbyBmb25vZ3JhbWFzIGRlIGxhcyBPYnJhcywgZXhoaWJpcmxhcyBww7pibGljYW1lbnRlLCBlamVjdXRhcmxhcyBww7pibGljYW1lbnRlIHkvbyBwb25lcmxhcyBhIGRpc3Bvc2ljacOzbiBww7pibGljYSwgaW5jbHV5w6luZG9sYXMgY29tbyBpbmNvcnBvcmFkYXMgZW4gT2JyYXMgQ29sZWN0aXZhcywgc2Vnw7puIGNvcnJlc3BvbmRhLgoKYy4JRGlzdHJpYnVpciBjb3BpYXMgZGUgbGFzIE9icmFzIERlcml2YWRhcyBxdWUgc2UgZ2VuZXJlbiwgZXhoaWJpcmxhcyBww7pibGljYW1lbnRlLCBlamVjdXRhcmxhcyBww7pibGljYW1lbnRlIHkvbyBwb25lcmxhcyBhIGRpc3Bvc2ljacOzbiBww7pibGljYS4KTG9zIGRlcmVjaG9zIG1lbmNpb25hZG9zIGFudGVyaW9ybWVudGUgcHVlZGVuIHNlciBlamVyY2lkb3MgZW4gdG9kb3MgbG9zIG1lZGlvcyB5IGZvcm1hdG9zLCBhY3R1YWxtZW50ZSBjb25vY2lkb3MgbyBxdWUgc2UgaW52ZW50ZW4gZW4gZWwgZnV0dXJvLiBMb3MgZGVyZWNob3MgYW50ZXMgbWVuY2lvbmFkb3MgaW5jbHV5ZW4gZWwgZGVyZWNobyBhIHJlYWxpemFyIGRpY2hhcyBtb2RpZmljYWNpb25lcyBlbiBsYSBtZWRpZGEgcXVlIHNlYW4gdMOpY25pY2FtZW50ZSBuZWNlc2FyaWFzIHBhcmEgZWplcmNlciBsb3MgZGVyZWNob3MgZW4gb3RybyBtZWRpbyBvIGZvcm1hdG9zLCBwZXJvIGRlIG90cmEgbWFuZXJhIHVzdGVkIG5vIGVzdMOhIGF1dG9yaXphZG8gcGFyYSByZWFsaXphciBvYnJhcyBkZXJpdmFkYXMuIFRvZG9zIGxvcyBkZXJlY2hvcyBubyBvdG9yZ2Fkb3MgZXhwcmVzYW1lbnRlIHBvciBlbCBMaWNlbmNpYW50ZSBxdWVkYW4gcG9yIGVzdGUgbWVkaW8gcmVzZXJ2YWRvcywgaW5jbHV5ZW5kbyBwZXJvIHNpbiBsaW1pdGFyc2UgYSBhcXVlbGxvcyBxdWUgc2UgbWVuY2lvbmFuIGVuIGxhcyBzZWNjaW9uZXMgNChkKSB5IDQoZSkuCgo0LiBSZXN0cmljY2lvbmVzLgpMYSBsaWNlbmNpYSBvdG9yZ2FkYSBlbiBsYSBhbnRlcmlvciBTZWNjacOzbiAzIGVzdMOhIGV4cHJlc2FtZW50ZSBzdWpldGEgeSBsaW1pdGFkYSBwb3IgbGFzIHNpZ3VpZW50ZXMgcmVzdHJpY2Npb25lczoKCmEuCVVzdGVkIHB1ZWRlIGRpc3RyaWJ1aXIsIGV4aGliaXIgcMO6YmxpY2FtZW50ZSwgZWplY3V0YXIgcMO6YmxpY2FtZW50ZSwgbyBwb25lciBhIGRpc3Bvc2ljacOzbiBww7pibGljYSBsYSBPYnJhIHPDs2xvIGJham8gbGFzIGNvbmRpY2lvbmVzIGRlIGVzdGEgTGljZW5jaWEsIHkgVXN0ZWQgZGViZSBpbmNsdWlyIHVuYSBjb3BpYSBkZSBlc3RhIGxpY2VuY2lhIG8gZGVsIElkZW50aWZpY2Fkb3IgVW5pdmVyc2FsIGRlIFJlY3Vyc29zIGRlIGxhIG1pc21hIGNvbiBjYWRhIGNvcGlhIGRlIGxhIE9icmEgcXVlIGRpc3RyaWJ1eWEsIGV4aGliYSBww7pibGljYW1lbnRlLCBlamVjdXRlIHDDumJsaWNhbWVudGUgbyBwb25nYSBhIGRpc3Bvc2ljacOzbiBww7pibGljYS4gTm8gZXMgcG9zaWJsZSBvZnJlY2VyIG8gaW1wb25lciBuaW5ndW5hIGNvbmRpY2nDs24gc29icmUgbGEgT2JyYSBxdWUgYWx0ZXJlIG8gbGltaXRlIGxhcyBjb25kaWNpb25lcyBkZSBlc3RhIExpY2VuY2lhIG8gZWwgZWplcmNpY2lvIGRlIGxvcyBkZXJlY2hvcyBkZSBsb3MgZGVzdGluYXRhcmlvcyBvdG9yZ2Fkb3MgZW4gZXN0ZSBkb2N1bWVudG8uIE5vIGVzIHBvc2libGUgc3VibGljZW5jaWFyIGxhIE9icmEuIFVzdGVkIGRlYmUgbWFudGVuZXIgaW50YWN0b3MgdG9kb3MgbG9zIGF2aXNvcyBxdWUgaGFnYW4gcmVmZXJlbmNpYSBhIGVzdGEgTGljZW5jaWEgeSBhIGxhIGNsw6F1c3VsYSBkZSBsaW1pdGFjacOzbiBkZSBnYXJhbnTDrWFzLiBVc3RlZCBubyBwdWVkZSBkaXN0cmlidWlyLCBleGhpYmlyIHDDumJsaWNhbWVudGUsIGVqZWN1dGFyIHDDumJsaWNhbWVudGUsIG8gcG9uZXIgYSBkaXNwb3NpY2nDs24gcMO6YmxpY2EgbGEgT2JyYSBjb24gYWxndW5hIG1lZGlkYSB0ZWNub2zDs2dpY2EgcXVlIGNvbnRyb2xlIGVsIGFjY2VzbyBvIGxhIHV0aWxpemFjacOzbiBkZSBlbGxhIGRlIHVuYSBmb3JtYSBxdWUgc2VhIGluY29uc2lzdGVudGUgY29uIGxhcyBjb25kaWNpb25lcyBkZSBlc3RhIExpY2VuY2lhLiBMbyBhbnRlcmlvciBzZSBhcGxpY2EgYSBsYSBPYnJhIGluY29ycG9yYWRhIGEgdW5hIE9icmEgQ29sZWN0aXZhLCBwZXJvIGVzdG8gbm8gZXhpZ2UgcXVlIGxhIE9icmEgQ29sZWN0aXZhIGFwYXJ0ZSBkZSBsYSBvYnJhIG1pc21hIHF1ZWRlIHN1amV0YSBhIGxhcyBjb25kaWNpb25lcyBkZSBlc3RhIExpY2VuY2lhLiBTaSBVc3RlZCBjcmVhIHVuYSBPYnJhIENvbGVjdGl2YSwgcHJldmlvIGF2aXNvIGRlIGN1YWxxdWllciBMaWNlbmNpYW50ZSBkZWJlLCBlbiBsYSBtZWRpZGEgZGUgbG8gcG9zaWJsZSwgZWxpbWluYXIgZGUgbGEgT2JyYSBDb2xlY3RpdmEgY3VhbHF1aWVyIHJlZmVyZW5jaWEgYSBkaWNobyBMaWNlbmNpYW50ZSBvIGFsIEF1dG9yIE9yaWdpbmFsLCBzZWfDum4gbG8gc29saWNpdGFkbyBwb3IgZWwgTGljZW5jaWFudGUgeSBjb25mb3JtZSBsbyBleGlnZSBsYSBjbMOhdXN1bGEgNChjKS4KCmIuCVVzdGVkIG5vIHB1ZWRlIGVqZXJjZXIgbmluZ3VubyBkZSBsb3MgZGVyZWNob3MgcXVlIGxlIGhhbiBzaWRvIG90b3JnYWRvcyBlbiBsYSBTZWNjacOzbiAzIHByZWNlZGVudGUgZGUgbW9kbyBxdWUgZXN0w6luIHByaW5jaXBhbG1lbnRlIGRlc3RpbmFkb3MgbyBkaXJlY3RhbWVudGUgZGlyaWdpZG9zIGEgY29uc2VndWlyIHVuIHByb3ZlY2hvIGNvbWVyY2lhbCBvIHVuYSBjb21wZW5zYWNpw7NuIG1vbmV0YXJpYSBwcml2YWRhLiBFbCBpbnRlcmNhbWJpbyBkZSBsYSBPYnJhIHBvciBvdHJhcyBvYnJhcyBwcm90ZWdpZGFzIHBvciBkZXJlY2hvcyBkZSBhdXRvciwgeWEgc2VhIGEgdHJhdsOpcyBkZSB1biBzaXN0ZW1hIHBhcmEgY29tcGFydGlyIGFyY2hpdm9zIGRpZ2l0YWxlcyAoZGlnaXRhbCBmaWxlLXNoYXJpbmcpIG8gZGUgY3VhbHF1aWVyIG90cmEgbWFuZXJhIG5vIHNlcsOhIGNvbnNpZGVyYWRvIGNvbW8gZXN0YXIgZGVzdGluYWRvIHByaW5jaXBhbG1lbnRlIG8gZGlyaWdpZG8gZGlyZWN0YW1lbnRlIGEgY29uc2VndWlyIHVuIHByb3ZlY2hvIGNvbWVyY2lhbCBvIHVuYSBjb21wZW5zYWNpw7NuIG1vbmV0YXJpYSBwcml2YWRhLCBzaWVtcHJlIHF1ZSBubyBzZSByZWFsaWNlIHVuIHBhZ28gbWVkaWFudGUgdW5hIGNvbXBlbnNhY2nDs24gbW9uZXRhcmlhIGVuIHJlbGFjacOzbiBjb24gZWwgaW50ZXJjYW1iaW8gZGUgb2JyYXMgcHJvdGVnaWRhcyBwb3IgZWwgZGVyZWNobyBkZSBhdXRvci4KCmMuCVNpIHVzdGVkIGRpc3RyaWJ1eWUsIGV4aGliZSBww7pibGljYW1lbnRlLCBlamVjdXRhIHDDumJsaWNhbWVudGUgbyBlamVjdXRhIHDDumJsaWNhbWVudGUgZW4gZm9ybWEgZGlnaXRhbCBsYSBPYnJhIG8gY3VhbHF1aWVyIE9icmEgRGVyaXZhZGEgdSBPYnJhIENvbGVjdGl2YSwgVXN0ZWQgZGViZSBtYW50ZW5lciBpbnRhY3RhIHRvZGEgbGEgaW5mb3JtYWNpw7NuIGRlIGRlcmVjaG8gZGUgYXV0b3IgZGUgbGEgT2JyYSB5IHByb3BvcmNpb25hciwgZGUgZm9ybWEgcmF6b25hYmxlIHNlZ8O6biBlbCBtZWRpbyBvIG1hbmVyYSBxdWUgVXN0ZWQgZXN0w6kgdXRpbGl6YW5kbzogKGkpIGVsIG5vbWJyZSBkZWwgQXV0b3IgT3JpZ2luYWwgc2kgZXN0w6EgcHJvdmlzdG8gKG8gc2V1ZMOzbmltbywgc2kgZnVlcmUgYXBsaWNhYmxlKSwgeS9vIChpaSkgZWwgbm9tYnJlIGRlIGxhIHBhcnRlIG8gbGFzIHBhcnRlcyBxdWUgZWwgQXV0b3IgT3JpZ2luYWwgeS9vIGVsIExpY2VuY2lhbnRlIGh1YmllcmVuIGRlc2lnbmFkbyBwYXJhIGxhIGF0cmlidWNpw7NuICh2LmcuLCB1biBpbnN0aXR1dG8gcGF0cm9jaW5hZG9yLCBlZGl0b3JpYWwsIHB1YmxpY2FjacOzbikgZW4gbGEgaW5mb3JtYWNpw7NuIGRlIGxvcyBkZXJlY2hvcyBkZSBhdXRvciBkZWwgTGljZW5jaWFudGUsIHTDqXJtaW5vcyBkZSBzZXJ2aWNpb3MgbyBkZSBvdHJhcyBmb3JtYXMgcmF6b25hYmxlczsgZWwgdMOtdHVsbyBkZSBsYSBPYnJhIHNpIGVzdMOhIHByb3Zpc3RvOyBlbiBsYSBtZWRpZGEgZGUgbG8gcmF6b25hYmxlbWVudGUgZmFjdGlibGUgeSwgc2kgZXN0w6EgcHJvdmlzdG8sIGVsIElkZW50aWZpY2Fkb3IgVW5pZm9ybWUgZGUgUmVjdXJzb3MgKFVuaWZvcm0gUmVzb3VyY2UgSWRlbnRpZmllcikgcXVlIGVsIExpY2VuY2lhbnRlIGVzcGVjaWZpY2EgcGFyYSBzZXIgYXNvY2lhZG8gY29uIGxhIE9icmEsIHNhbHZvIHF1ZSB0YWwgVVJJIG5vIHNlIHJlZmllcmEgYSBsYSBub3RhIHNvYnJlIGxvcyBkZXJlY2hvcyBkZSBhdXRvciBvIGEgbGEgaW5mb3JtYWNpw7NuIHNvYnJlIGVsIGxpY2VuY2lhbWllbnRvIGRlIGxhIE9icmE7IHkgZW4gZWwgY2FzbyBkZSB1bmEgT2JyYSBEZXJpdmFkYSwgYXRyaWJ1aXIgZWwgY3LDqWRpdG8gaWRlbnRpZmljYW5kbyBlbCB1c28gZGUgbGEgT2JyYSBlbiBsYSBPYnJhIERlcml2YWRhICh2LmcuLCAiVHJhZHVjY2nDs24gRnJhbmNlc2EgZGUgbGEgT2JyYSBkZWwgQXV0b3IgT3JpZ2luYWwsIiBvICJHdWnDs24gQ2luZW1hdG9ncsOhZmljbyBiYXNhZG8gZW4gbGEgT2JyYSBvcmlnaW5hbCBkZWwgQXV0b3IgT3JpZ2luYWwiKS4gVGFsIGNyw6lkaXRvIHB1ZWRlIHNlciBpbXBsZW1lbnRhZG8gZGUgY3VhbHF1aWVyIGZvcm1hIHJhem9uYWJsZTsgZW4gZWwgY2Fzbywgc2luIGVtYmFyZ28sIGRlIE9icmFzIERlcml2YWRhcyB1IE9icmFzIENvbGVjdGl2YXMsIHRhbCBjcsOpZGl0byBhcGFyZWNlcsOhLCBjb21vIG3DrW5pbW8sIGRvbmRlIGFwYXJlY2UgZWwgY3LDqWRpdG8gZGUgY3VhbHF1aWVyIG90cm8gYXV0b3IgY29tcGFyYWJsZSB5IGRlIHVuYSBtYW5lcmEsIGFsIG1lbm9zLCB0YW4gZGVzdGFjYWRhIGNvbW8gZWwgY3LDqWRpdG8gZGUgb3RybyBhdXRvciBjb21wYXJhYmxlLgoKZC4JUGFyYSBldml0YXIgdG9kYSBjb25mdXNpw7NuLCBlbCBMaWNlbmNpYW50ZSBhY2xhcmEgcXVlLCBjdWFuZG8gbGEgb2JyYSBlcyB1bmEgY29tcG9zaWNpw7NuIG11c2ljYWw6CgppLglSZWdhbMOtYXMgcG9yIGludGVycHJldGFjacOzbiB5IGVqZWN1Y2nDs24gYmFqbyBsaWNlbmNpYXMgZ2VuZXJhbGVzLiBFbCBMaWNlbmNpYW50ZSBzZSByZXNlcnZhIGVsIGRlcmVjaG8gZXhjbHVzaXZvIGRlIGF1dG9yaXphciBsYSBlamVjdWNpw7NuIHDDumJsaWNhIG8gbGEgZWplY3VjacOzbiBww7pibGljYSBkaWdpdGFsIGRlIGxhIG9icmEgeSBkZSByZWNvbGVjdGFyLCBzZWEgaW5kaXZpZHVhbG1lbnRlIG8gYSB0cmF2w6lzIGRlIHVuYSBzb2NpZWRhZCBkZSBnZXN0acOzbiBjb2xlY3RpdmEgZGUgZGVyZWNob3MgZGUgYXV0b3IgeSBkZXJlY2hvcyBjb25leG9zIChwb3IgZWplbXBsbywgU0FZQ08pLCBsYXMgcmVnYWzDrWFzIHBvciBsYSBlamVjdWNpw7NuIHDDumJsaWNhIG8gcG9yIGxhIGVqZWN1Y2nDs24gcMO6YmxpY2EgZGlnaXRhbCBkZSBsYSBvYnJhIChwb3IgZWplbXBsbyBXZWJjYXN0KSBsaWNlbmNpYWRhIGJham8gbGljZW5jaWFzIGdlbmVyYWxlcywgc2kgbGEgaW50ZXJwcmV0YWNpw7NuIG8gZWplY3VjacOzbiBkZSBsYSBvYnJhIGVzdMOhIHByaW1vcmRpYWxtZW50ZSBvcmllbnRhZGEgcG9yIG8gZGlyaWdpZGEgYSBsYSBvYnRlbmNpw7NuIGRlIHVuYSB2ZW50YWphIGNvbWVyY2lhbCBvIHVuYSBjb21wZW5zYWNpw7NuIG1vbmV0YXJpYSBwcml2YWRhLgoKaWkuCVJlZ2Fsw61hcyBwb3IgRm9ub2dyYW1hcy4gRWwgTGljZW5jaWFudGUgc2UgcmVzZXJ2YSBlbCBkZXJlY2hvIGV4Y2x1c2l2byBkZSByZWNvbGVjdGFyLCBpbmRpdmlkdWFsbWVudGUgbyBhIHRyYXbDqXMgZGUgdW5hIHNvY2llZGFkIGRlIGdlc3Rpw7NuIGNvbGVjdGl2YSBkZSBkZXJlY2hvcyBkZSBhdXRvciB5IGRlcmVjaG9zIGNvbmV4b3MgKHBvciBlamVtcGxvLCBsb3MgY29uc2FncmFkb3MgcG9yIGxhIFNBWUNPKSwgdW5hIGFnZW5jaWEgZGUgZGVyZWNob3MgbXVzaWNhbGVzIG8gYWxnw7puIGFnZW50ZSBkZXNpZ25hZG8sIGxhcyByZWdhbMOtYXMgcG9yIGN1YWxxdWllciBmb25vZ3JhbWEgcXVlIFVzdGVkIGNyZWUgYSBwYXJ0aXIgZGUgbGEgb2JyYSAo4oCcdmVyc2nDs24gY292ZXLigJ0pIHkgZGlzdHJpYnV5YSwgZW4gbG9zIHTDqXJtaW5vcyBkZWwgcsOpZ2ltZW4gZGUgZGVyZWNob3MgZGUgYXV0b3IsIHNpIGxhIGNyZWFjacOzbiBvIGRpc3RyaWJ1Y2nDs24gZGUgZXNhIHZlcnNpw7NuIGNvdmVyIGVzdMOhIHByaW1vcmRpYWxtZW50ZSBkZXN0aW5hZGEgbyBkaXJpZ2lkYSBhIG9idGVuZXIgdW5hIHZlbnRhamEgY29tZXJjaWFsIG8gdW5hIGNvbXBlbnNhY2nDs24gbW9uZXRhcmlhIHByaXZhZGEuCgplLglHZXN0acOzbiBkZSBEZXJlY2hvcyBkZSBBdXRvciBzb2JyZSBJbnRlcnByZXRhY2lvbmVzIHkgRWplY3VjaW9uZXMgRGlnaXRhbGVzIChXZWJDYXN0aW5nKS4gUGFyYSBldml0YXIgdG9kYSBjb25mdXNpw7NuLCBlbCBMaWNlbmNpYW50ZSBhY2xhcmEgcXVlLCBjdWFuZG8gbGEgb2JyYSBzZWEgdW4gZm9ub2dyYW1hLCBlbCBMaWNlbmNpYW50ZSBzZSByZXNlcnZhIGVsIGRlcmVjaG8gZXhjbHVzaXZvIGRlIGF1dG9yaXphciBsYSBlamVjdWNpw7NuIHDDumJsaWNhIGRpZ2l0YWwgZGUgbGEgb2JyYSAocG9yIGVqZW1wbG8sIHdlYmNhc3QpIHkgZGUgcmVjb2xlY3RhciwgaW5kaXZpZHVhbG1lbnRlIG8gYSB0cmF2w6lzIGRlIHVuYSBzb2NpZWRhZCBkZSBnZXN0acOzbiBjb2xlY3RpdmEgZGUgZGVyZWNob3MgZGUgYXV0b3IgeSBkZXJlY2hvcyBjb25leG9zIChwb3IgZWplbXBsbywgQUNJTlBSTyksIGxhcyByZWdhbMOtYXMgcG9yIGxhIGVqZWN1Y2nDs24gcMO6YmxpY2EgZGlnaXRhbCBkZSBsYSBvYnJhIChwb3IgZWplbXBsbywgd2ViY2FzdCksIHN1amV0YSBhIGxhcyBkaXNwb3NpY2lvbmVzIGFwbGljYWJsZXMgZGVsIHLDqWdpbWVuIGRlIERlcmVjaG8gZGUgQXV0b3IsIHNpIGVzdGEgZWplY3VjacOzbiBww7pibGljYSBkaWdpdGFsIGVzdMOhIHByaW1vcmRpYWxtZW50ZSBkaXJpZ2lkYSBhIG9idGVuZXIgdW5hIHZlbnRhamEgY29tZXJjaWFsIG8gdW5hIGNvbXBlbnNhY2nDs24gbW9uZXRhcmlhIHByaXZhZGEuCgo1LiBSZXByZXNlbnRhY2lvbmVzLCBHYXJhbnTDrWFzIHkgTGltaXRhY2lvbmVzIGRlIFJlc3BvbnNhYmlsaWRhZC4KQSBNRU5PUyBRVUUgTEFTIFBBUlRFUyBMTyBBQ09SREFSQU4gREUgT1RSQSBGT1JNQSBQT1IgRVNDUklUTywgRUwgTElDRU5DSUFOVEUgT0ZSRUNFIExBIE9CUkEgKEVOIEVMIEVTVEFETyBFTiBFTCBRVUUgU0UgRU5DVUVOVFJBKSDigJxUQUwgQ1VBTOKAnSwgU0lOIEJSSU5EQVIgR0FSQU5Uw41BUyBERSBDTEFTRSBBTEdVTkEgUkVTUEVDVE8gREUgTEEgT0JSQSwgWUEgU0VBIEVYUFJFU0EsIElNUEzDjUNJVEEsIExFR0FMIE8gQ1VBTFFVSUVSQSBPVFJBLCBJTkNMVVlFTkRPLCBTSU4gTElNSVRBUlNFIEEgRUxMQVMsIEdBUkFOVMONQVMgREUgVElUVUxBUklEQUQsIENPTUVSQ0lBQklMSURBRCwgQURBUFRBQklMSURBRCBPIEFERUNVQUNJw5NOIEEgUFJPUMOTU0lUTyBERVRFUk1JTkFETywgQVVTRU5DSUEgREUgSU5GUkFDQ0nDk04sIERFIEFVU0VOQ0lBIERFIERFRkVDVE9TIExBVEVOVEVTIE8gREUgT1RSTyBUSVBPLCBPIExBIFBSRVNFTkNJQSBPIEFVU0VOQ0lBIERFIEVSUk9SRVMsIFNFQU4gTyBOTyBERVNDVUJSSUJMRVMgKFBVRURBTiBPIE5PIFNFUiBFU1RPUyBERVNDVUJJRVJUT1MpLiBBTEdVTkFTIEpVUklTRElDQ0lPTkVTIE5PIFBFUk1JVEVOIExBIEVYQ0xVU0nDk04gREUgR0FSQU5Uw41BUyBJTVBMw41DSVRBUywgRU4gQ1VZTyBDQVNPIEVTVEEgRVhDTFVTScOTTiBQVUVERSBOTyBBUExJQ0FSU0UgQSBVU1RFRC4KCjYuIExpbWl0YWNpw7NuIGRlIHJlc3BvbnNhYmlsaWRhZC4KQSBNRU5PUyBRVUUgTE8gRVhJSkEgRVhQUkVTQU1FTlRFIExBIExFWSBBUExJQ0FCTEUsIEVMIExJQ0VOQ0lBTlRFIE5PIFNFUsOBIFJFU1BPTlNBQkxFIEFOVEUgVVNURUQgUE9SIERBw5FPIEFMR1VOTywgU0VBIFBPUiBSRVNQT05TQUJJTElEQUQgRVhUUkFDT05UUkFDVFVBTCwgUFJFQ09OVFJBQ1RVQUwgTyBDT05UUkFDVFVBTCwgT0JKRVRJVkEgTyBTVUJKRVRJVkEsIFNFIFRSQVRFIERFIERBw5FPUyBNT1JBTEVTIE8gUEFUUklNT05JQUxFUywgRElSRUNUT1MgTyBJTkRJUkVDVE9TLCBQUkVWSVNUT1MgTyBJTVBSRVZJU1RPUyBQUk9EVUNJRE9TIFBPUiBFTCBVU08gREUgRVNUQSBMSUNFTkNJQSBPIERFIExBIE9CUkEsIEFVTiBDVUFORE8gRUwgTElDRU5DSUFOVEUgSEFZQSBTSURPIEFEVkVSVElETyBERSBMQSBQT1NJQklMSURBRCBERSBESUNIT1MgREHDkU9TLiBBTEdVTkFTIExFWUVTIE5PIFBFUk1JVEVOIExBIEVYQ0xVU0nDk04gREUgQ0lFUlRBIFJFU1BPTlNBQklMSURBRCwgRU4gQ1VZTyBDQVNPIEVTVEEgRVhDTFVTScOTTiBQVUVERSBOTyBBUExJQ0FSU0UgQSBVU1RFRC4KCjcuIFTDqXJtaW5vLgoKYS4JRXN0YSBMaWNlbmNpYSB5IGxvcyBkZXJlY2hvcyBvdG9yZ2Fkb3MgZW4gdmlydHVkIGRlIGVsbGEgdGVybWluYXLDoW4gYXV0b23DoXRpY2FtZW50ZSBzaSBVc3RlZCBpbmZyaW5nZSBhbGd1bmEgY29uZGljacOzbiBlc3RhYmxlY2lkYSBlbiBlbGxhLiBTaW4gZW1iYXJnbywgbG9zIGluZGl2aWR1b3MgbyBlbnRpZGFkZXMgcXVlIGhhbiByZWNpYmlkbyBPYnJhcyBEZXJpdmFkYXMgbyBDb2xlY3RpdmFzIGRlIFVzdGVkIGRlIGNvbmZvcm1pZGFkIGNvbiBlc3RhIExpY2VuY2lhLCBubyB2ZXLDoW4gdGVybWluYWRhcyBzdXMgbGljZW5jaWFzLCBzaWVtcHJlIHF1ZSBlc3RvcyBpbmRpdmlkdW9zIG8gZW50aWRhZGVzIHNpZ2FuIGN1bXBsaWVuZG8gw61udGVncmFtZW50ZSBsYXMgY29uZGljaW9uZXMgZGUgZXN0YXMgbGljZW5jaWFzLiBMYXMgU2VjY2lvbmVzIDEsIDIsIDUsIDYsIDcsIHkgOCBzdWJzaXN0aXLDoW4gYSBjdWFscXVpZXIgdGVybWluYWNpw7NuIGRlIGVzdGEgTGljZW5jaWEuCgpiLglTdWpldGEgYSBsYXMgY29uZGljaW9uZXMgeSB0w6lybWlub3MgYW50ZXJpb3JlcywgbGEgbGljZW5jaWEgb3RvcmdhZGEgYXF1w60gZXMgcGVycGV0dWEgKGR1cmFudGUgZWwgcGVyw61vZG8gZGUgdmlnZW5jaWEgZGUgbG9zIGRlcmVjaG9zIGRlIGF1dG9yIGRlIGxhIG9icmEpLiBObyBvYnN0YW50ZSBsbyBhbnRlcmlvciwgZWwgTGljZW5jaWFudGUgc2UgcmVzZXJ2YSBlbCBkZXJlY2hvIGEgcHVibGljYXIgeS9vIGVzdHJlbmFyIGxhIE9icmEgYmFqbyBjb25kaWNpb25lcyBkZSBsaWNlbmNpYSBkaWZlcmVudGVzIG8gYSBkZWphciBkZSBkaXN0cmlidWlybGEgZW4gbG9zIHTDqXJtaW5vcyBkZSBlc3RhIExpY2VuY2lhIGVuIGN1YWxxdWllciBtb21lbnRvOyBlbiBlbCBlbnRlbmRpZG8sIHNpbiBlbWJhcmdvLCBxdWUgZXNhIGVsZWNjacOzbiBubyBzZXJ2aXLDoSBwYXJhIHJldm9jYXIgZXN0YSBsaWNlbmNpYSBvIHF1ZSBkZWJhIHNlciBvdG9yZ2FkYSAsIGJham8gbG9zIHTDqXJtaW5vcyBkZSBlc3RhIGxpY2VuY2lhKSwgeSBlc3RhIGxpY2VuY2lhIGNvbnRpbnVhcsOhIGVuIHBsZW5vIHZpZ29yIHkgZWZlY3RvIGEgbWVub3MgcXVlIHNlYSB0ZXJtaW5hZGEgY29tbyBzZSBleHByZXNhIGF0csOhcy4gTGEgTGljZW5jaWEgcmV2b2NhZGEgY29udGludWFyw6Egc2llbmRvIHBsZW5hbWVudGUgdmlnZW50ZSB5IGVmZWN0aXZhIHNpIG5vIHNlIGxlIGRhIHTDqXJtaW5vIGVuIGxhcyBjb25kaWNpb25lcyBpbmRpY2FkYXMgYW50ZXJpb3JtZW50ZS4KCjguIFZhcmlvcy4KCmEuCUNhZGEgdmV6IHF1ZSBVc3RlZCBkaXN0cmlidXlhIG8gcG9uZ2EgYSBkaXNwb3NpY2nDs24gcMO6YmxpY2EgbGEgT2JyYSBvIHVuYSBPYnJhIENvbGVjdGl2YSwgZWwgTGljZW5jaWFudGUgb2ZyZWNlcsOhIGFsIGRlc3RpbmF0YXJpbyB1bmEgbGljZW5jaWEgZW4gbG9zIG1pc21vcyB0w6lybWlub3MgeSBjb25kaWNpb25lcyBxdWUgbGEgbGljZW5jaWEgb3RvcmdhZGEgYSBVc3RlZCBiYWpvIGVzdGEgTGljZW5jaWEuCgpiLglTaSBhbGd1bmEgZGlzcG9zaWNpw7NuIGRlIGVzdGEgTGljZW5jaWEgcmVzdWx0YSBpbnZhbGlkYWRhIG8gbm8gZXhpZ2libGUsIHNlZ8O6biBsYSBsZWdpc2xhY2nDs24gdmlnZW50ZSwgZXN0byBubyBhZmVjdGFyw6EgbmkgbGEgdmFsaWRleiBuaSBsYSBhcGxpY2FiaWxpZGFkIGRlbCByZXN0byBkZSBjb25kaWNpb25lcyBkZSBlc3RhIExpY2VuY2lhIHksIHNpbiBhY2Npw7NuIGFkaWNpb25hbCBwb3IgcGFydGUgZGUgbG9zIHN1amV0b3MgZGUgZXN0ZSBhY3VlcmRvLCBhcXXDqWxsYSBzZSBlbnRlbmRlcsOhIHJlZm9ybWFkYSBsbyBtw61uaW1vIG5lY2VzYXJpbyBwYXJhIGhhY2VyIHF1ZSBkaWNoYSBkaXNwb3NpY2nDs24gc2VhIHbDoWxpZGEgeSBleGlnaWJsZS4KCmMuCU5pbmfDum4gdMOpcm1pbm8gbyBkaXNwb3NpY2nDs24gZGUgZXN0YSBMaWNlbmNpYSBzZSBlc3RpbWFyw6EgcmVudW5jaWFkYSB5IG5pbmd1bmEgdmlvbGFjacOzbiBkZSBlbGxhIHNlcsOhIGNvbnNlbnRpZGEgYSBtZW5vcyBxdWUgZXNhIHJlbnVuY2lhIG8gY29uc2VudGltaWVudG8gc2VhIG90b3JnYWRvIHBvciBlc2NyaXRvIHkgZmlybWFkbyBwb3IgbGEgcGFydGUgcXVlIHJlbnVuY2llIG8gY29uc2llbnRhLgoKZC4JRXN0YSBMaWNlbmNpYSByZWZsZWphIGVsIGFjdWVyZG8gcGxlbm8gZW50cmUgbGFzIHBhcnRlcyByZXNwZWN0byBhIGxhIE9icmEgYXF1w60gbGljZW5jaWFkYS4gTm8gaGF5IGFycmVnbG9zLCBhY3VlcmRvcyBvIGRlY2xhcmFjaW9uZXMgcmVzcGVjdG8gYSBsYSBPYnJhIHF1ZSBubyBlc3TDqW4gZXNwZWNpZmljYWRvcyBlbiBlc3RlIGRvY3VtZW50by4gRWwgTGljZW5jaWFudGUgbm8gc2UgdmVyw6EgbGltaXRhZG8gcG9yIG5pbmd1bmEgZGlzcG9zaWNpw7NuIGFkaWNpb25hbCBxdWUgcHVlZGEgc3VyZ2lyIGVuIGFsZ3VuYSBjb211bmljYWNpw7NuIGVtYW5hZGEgZGUgVXN0ZWQuIEVzdGEgTGljZW5jaWEgbm8gcHVlZGUgc2VyIG1vZGlmaWNhZGEgc2luIGVsIGNvbnNlbnRpbWllbnRvIG11dHVvIHBvciBlc2NyaXRvIGRlbCBMaWNlbmNpYW50ZSB5IFVzdGVkLgo= |