Software Migrador de Scripts .SQL Oracle para Bases de Datos SQLServer en la Empresa Expinn Technology

El presente documento se centra en el análisis, desarrollo e implementación de un software migrador de scripts .SQL en la empresa Expinn Technology, que pretende procesar y generar estructuras del motor de base de datos Oracle a SQLServer. Durante el transcurso del documento se exponen los elementos...

Full description

Autores:
Morales Garcia, Brallam Santiago
Camacho Aya, Jineth Tatiana
Tipo de recurso:
Trabajo de grado de pregrado
Fecha de publicación:
2017
Institución:
Universidad Distrital Francisco José de Caldas
Repositorio:
RIUD: repositorio U. Distrital
Idioma:
spa
OAI Identifier:
oai:repository.udistrital.edu.co:11349/5801
Acceso en línea:
http://hdl.handle.net/11349/5801
Palabra clave:
SQL
SQLServer
Oracle
Base de datos
Script
Migración
TECNOLOGÍA EN SISTEMATIZACIÓN DE DATOS - TESIS Y DISERTACIONES ACADÉMICAS
DESARROLLO DE PROGRAMAS PARA COMPUTADOR
ADMINISTRACIÓN DE BASES DE DATOS
ORACLE (SISTEMA MANEJADOR DE BASE DE DATOS)
SQL
SQLServer
Oracle
Database
Script
Migration
Rights
License
Atribución-NoComercial-SinDerivadas 4.0 Internacional
id UDISTRITA2_19faa5011987b595ddd8015ca9bbd3d5
oai_identifier_str oai:repository.udistrital.edu.co:11349/5801
network_acronym_str UDISTRITA2
network_name_str RIUD: repositorio U. Distrital
repository_id_str
dc.title.spa.fl_str_mv Software Migrador de Scripts .SQL Oracle para Bases de Datos SQLServer en la Empresa Expinn Technology
dc.title.titleenglish.spa.fl_str_mv Migratory Software of Script .SQL Oracle for SQLServer Databases in the Expinn Technology Company
title Software Migrador de Scripts .SQL Oracle para Bases de Datos SQLServer en la Empresa Expinn Technology
spellingShingle Software Migrador de Scripts .SQL Oracle para Bases de Datos SQLServer en la Empresa Expinn Technology
SQL
SQLServer
Oracle
Base de datos
Script
Migración
TECNOLOGÍA EN SISTEMATIZACIÓN DE DATOS - TESIS Y DISERTACIONES ACADÉMICAS
DESARROLLO DE PROGRAMAS PARA COMPUTADOR
ADMINISTRACIÓN DE BASES DE DATOS
ORACLE (SISTEMA MANEJADOR DE BASE DE DATOS)
SQL
SQLServer
Oracle
Database
Script
Migration
title_short Software Migrador de Scripts .SQL Oracle para Bases de Datos SQLServer en la Empresa Expinn Technology
title_full Software Migrador de Scripts .SQL Oracle para Bases de Datos SQLServer en la Empresa Expinn Technology
title_fullStr Software Migrador de Scripts .SQL Oracle para Bases de Datos SQLServer en la Empresa Expinn Technology
title_full_unstemmed Software Migrador de Scripts .SQL Oracle para Bases de Datos SQLServer en la Empresa Expinn Technology
title_sort Software Migrador de Scripts .SQL Oracle para Bases de Datos SQLServer en la Empresa Expinn Technology
dc.creator.fl_str_mv Morales Garcia, Brallam Santiago
Camacho Aya, Jineth Tatiana
dc.contributor.advisor.spa.fl_str_mv Wanumen Silva, Luis Felipe
dc.contributor.author.spa.fl_str_mv Morales Garcia, Brallam Santiago
Camacho Aya, Jineth Tatiana
dc.subject.spa.fl_str_mv SQL
SQLServer
Oracle
Base de datos
Script
Migración
topic SQL
SQLServer
Oracle
Base de datos
Script
Migración
TECNOLOGÍA EN SISTEMATIZACIÓN DE DATOS - TESIS Y DISERTACIONES ACADÉMICAS
DESARROLLO DE PROGRAMAS PARA COMPUTADOR
ADMINISTRACIÓN DE BASES DE DATOS
ORACLE (SISTEMA MANEJADOR DE BASE DE DATOS)
SQL
SQLServer
Oracle
Database
Script
Migration
dc.subject.lemb.spa.fl_str_mv TECNOLOGÍA EN SISTEMATIZACIÓN DE DATOS - TESIS Y DISERTACIONES ACADÉMICAS
DESARROLLO DE PROGRAMAS PARA COMPUTADOR
ADMINISTRACIÓN DE BASES DE DATOS
ORACLE (SISTEMA MANEJADOR DE BASE DE DATOS)
dc.subject.keyword.spa.fl_str_mv SQL
SQLServer
Oracle
Database
Script
Migration
description El presente documento se centra en el análisis, desarrollo e implementación de un software migrador de scripts .SQL en la empresa Expinn Technology, que pretende procesar y generar estructuras del motor de base de datos Oracle a SQLServer. Durante el transcurso del documento se exponen los elementos fundamentales que permitieron la conceptualización, diseño y desarrollo del proyecto, abordando temáticas cruciales como la arquitectura de desarrollo a seguir, el lenguaje de programación seleccionado, la tecnología y la metodología de trabajo. El punto de partida es la concepción de tres módulos para desarrollar el proyecto: El primer módulo está enfocado a la carga dinámica de scripts .SQL y la lectura de código que éste contiene, adicionalmente y de forma interna se formatea el código para el posterior procesamiento. El segundo módulo está enfocado al procesamiento de las estructuras previamente analizadas, para ello se requiere de forma fundamental la tecnología seleccionada, puesto que esta ayudará en la generación de código. El tercer y último módulo está enfocado a la generación de un archivo .SQL como resultado del procesamiento del archivo inicialmente cargado y que sea funcional para el motor SQLServer.
publishDate 2017
dc.date.accessioned.none.fl_str_mv 2017-06-27T16:36:57Z
dc.date.available.none.fl_str_mv 2017-06-27T16:36:57Z
dc.date.created.spa.fl_str_mv 2017-06-01
dc.type.driver.spa.fl_str_mv info:eu-repo/semantics/bachelorThesis
dc.type.coar.spa.fl_str_mv http://purl.org/coar/resource_type/c_7a1f
format http://purl.org/coar/resource_type/c_7a1f
dc.identifier.uri.none.fl_str_mv http://hdl.handle.net/11349/5801
url http://hdl.handle.net/11349/5801
dc.language.iso.spa.fl_str_mv spa
language spa
dc.rights.*.fl_str_mv Atribución-NoComercial-SinDerivadas 4.0 Internacional
dc.rights.coar.fl_str_mv http://purl.org/coar/access_right/c_abf2
dc.rights.uri.*.fl_str_mv http://creativecommons.org/licenses/by-nc-nd/4.0/
dc.rights.acceso.spa.fl_str_mv Abierto (Texto Completo)
rights_invalid_str_mv Atribución-NoComercial-SinDerivadas 4.0 Internacional
http://creativecommons.org/licenses/by-nc-nd/4.0/
Abierto (Texto Completo)
http://purl.org/coar/access_right/c_abf2
dc.format.mimetype.spa.fl_str_mv pdf
institution Universidad Distrital Francisco José de Caldas
bitstream.url.fl_str_mv https://repository.udistrital.edu.co/bitstreams/040b5fb1-391e-4f40-9c8a-37abac2a7367/download
https://repository.udistrital.edu.co/bitstreams/bf0efe1b-eb42-4cdc-93b3-740623f7a143/download
https://repository.udistrital.edu.co/bitstreams/004ebe7b-26f1-4667-b631-0a4f0960d796/download
https://repository.udistrital.edu.co/bitstreams/cba2948d-1cfe-470e-bd56-10527a377bb1/download
https://repository.udistrital.edu.co/bitstreams/566f74c4-0fea-4bf4-929d-e935d75b266a/download
https://repository.udistrital.edu.co/bitstreams/5c9a3704-1047-4cab-9ec9-464153b0c97e/download
https://repository.udistrital.edu.co/bitstreams/5b9f4231-e564-4d74-99a4-f8f7f98e8d10/download
https://repository.udistrital.edu.co/bitstreams/81a6980a-db35-4ffd-89da-9232defc669d/download
https://repository.udistrital.edu.co/bitstreams/17567cdf-bd67-44cb-bf98-45b12b75e0c7/download
https://repository.udistrital.edu.co/bitstreams/cc8be3fc-2012-47d7-91e3-43ea4a30f0b5/download
https://repository.udistrital.edu.co/bitstreams/52cdca14-0023-4304-81bd-a4c61cc1d9a7/download
https://repository.udistrital.edu.co/bitstreams/2795c50d-9933-4851-a82e-9be11d9c4e57/download
bitstream.checksum.fl_str_mv 8ce3129aaad58d32d4da203832ac82af
ee67691d5a9d8c75686541600e287d10
16b255006aafd1dd32f131e779a064d8
65e211d2243b74e5e4c9143ba19258c3
4afdbb8c545fd630ea7db775da747b2f
d41d8cd98f00b204e9800998ecf8427e
d41d8cd98f00b204e9800998ecf8427e
da5c6a3ca62d5dd4853000a60fee7083
dfd782505c55af8d4dbb760ebfce399c
50a6b84eee19824591681b0a4c448305
0791af9076f556ae9fcb671438c8e978
d3100526b0eba17f5476a67f67ba5c53
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
MD5
MD5
MD5
MD5
MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositorio Universidad Distrital
repository.mail.fl_str_mv repositorio@udistrital.edu.co
_version_ 1828164778236837888
spelling Wanumen Silva, Luis FelipeMorales Garcia, Brallam SantiagoCamacho Aya, Jineth Tatiana2017-06-27T16:36:57Z2017-06-27T16:36:57Z2017-06-01http://hdl.handle.net/11349/5801El presente documento se centra en el análisis, desarrollo e implementación de un software migrador de scripts .SQL en la empresa Expinn Technology, que pretende procesar y generar estructuras del motor de base de datos Oracle a SQLServer. Durante el transcurso del documento se exponen los elementos fundamentales que permitieron la conceptualización, diseño y desarrollo del proyecto, abordando temáticas cruciales como la arquitectura de desarrollo a seguir, el lenguaje de programación seleccionado, la tecnología y la metodología de trabajo. El punto de partida es la concepción de tres módulos para desarrollar el proyecto: El primer módulo está enfocado a la carga dinámica de scripts .SQL y la lectura de código que éste contiene, adicionalmente y de forma interna se formatea el código para el posterior procesamiento. El segundo módulo está enfocado al procesamiento de las estructuras previamente analizadas, para ello se requiere de forma fundamental la tecnología seleccionada, puesto que esta ayudará en la generación de código. El tercer y último módulo está enfocado a la generación de un archivo .SQL como resultado del procesamiento del archivo inicialmente cargado y que sea funcional para el motor SQLServer.This document focuses on the analysis, development and implementation of a migrant software of scripts .SQL in the enterprise Expinn Technology, Which searches to process and generate structures of database engine Oracle to SQLServer. During the course of the document the most important elements are exposed that allow the conceptualization, design and development of the project, Addressing crucial topics as the architecture of development, the programming language , the technology and the methodology of work. The beginning is creating three module for develop the project: The first module is focused on the dynamic load of .SQL scripts and the read of code that it contains, in addition and internally the code is formatted for further processing. The second module is focused on the processing of the structures previously analyzed, for this it is fundamentally require the selected technology, since this will help in the generation of code. The third module is focused on the generation of a .SQL file as a result of processing the initially loaded file, and that it is run for the SQL Server engine.pdfspaAtribución-NoComercial-SinDerivadas 4.0 Internacionalhttp://creativecommons.org/licenses/by-nc-nd/4.0/Abierto (Texto Completo)http://purl.org/coar/access_right/c_abf2SQLSQLServerOracleBase de datosScriptMigraciónTECNOLOGÍA EN SISTEMATIZACIÓN DE DATOS - TESIS Y DISERTACIONES ACADÉMICASDESARROLLO DE PROGRAMAS PARA COMPUTADORADMINISTRACIÓN DE BASES DE DATOSORACLE (SISTEMA MANEJADOR DE BASE DE DATOS)SQLSQLServerOracleDatabaseScriptMigrationSoftware Migrador de Scripts .SQL Oracle para Bases de Datos SQLServer en la Empresa Expinn TechnologyMigratory Software of Script .SQL Oracle for SQLServer Databases in the Expinn Technology Companyinfo:eu-repo/semantics/bachelorThesishttp://purl.org/coar/resource_type/c_7a1fTHUMBNAILMoralesGarciaBrallamSantiago2017.pdf.jpgMoralesGarciaBrallamSantiago2017.pdf.jpgIM Thumbnailimage/jpeg4745https://repository.udistrital.edu.co/bitstreams/040b5fb1-391e-4f40-9c8a-37abac2a7367/download8ce3129aaad58d32d4da203832ac82afMD59MoralesGarciaBrallamSantiago2017LicenciadePublicacion.pdf.jpgMoralesGarciaBrallamSantiago2017LicenciadePublicacion.pdf.jpgIM Thumbnailimage/jpeg12098https://repository.udistrital.edu.co/bitstreams/bf0efe1b-eb42-4cdc-93b3-740623f7a143/downloadee67691d5a9d8c75686541600e287d10MD510MoralesGarciaBrallamSantiago2017Anexo1.pdf.jpgMoralesGarciaBrallamSantiago2017Anexo1.pdf.jpgIM Thumbnailimage/jpeg4810https://repository.udistrital.edu.co/bitstreams/004ebe7b-26f1-4667-b631-0a4f0960d796/download16b255006aafd1dd32f131e779a064d8MD511MoralesGarciaBrallamSantiago2017Anexo2.pdf.jpgMoralesGarciaBrallamSantiago2017Anexo2.pdf.jpgIM Thumbnailimage/jpeg4797https://repository.udistrital.edu.co/bitstreams/cba2948d-1cfe-470e-bd56-10527a377bb1/download65e211d2243b74e5e4c9143ba19258c3MD512CC-LICENSElicense_urllicense_urltext/plain; charset=utf-849https://repository.udistrital.edu.co/bitstreams/566f74c4-0fea-4bf4-929d-e935d75b266a/download4afdbb8c545fd630ea7db775da747b2fMD55license_textlicense_texttext/html; charset=utf-80https://repository.udistrital.edu.co/bitstreams/5c9a3704-1047-4cab-9ec9-464153b0c97e/downloadd41d8cd98f00b204e9800998ecf8427eMD56license_rdflicense_rdfapplication/rdf+xml; charset=utf-80https://repository.udistrital.edu.co/bitstreams/5b9f4231-e564-4d74-99a4-f8f7f98e8d10/downloadd41d8cd98f00b204e9800998ecf8427eMD57LICENSElicense.txtlicense.txttext/plain; charset=utf-87163https://repository.udistrital.edu.co/bitstreams/81a6980a-db35-4ffd-89da-9232defc669d/downloadda5c6a3ca62d5dd4853000a60fee7083MD58ORIGINALMoralesGarciaBrallamSantiago2017.pdfMoralesGarciaBrallamSantiago2017.pdfTrabajo de Gradoapplication/pdf3422371https://repository.udistrital.edu.co/bitstreams/17567cdf-bd67-44cb-bf98-45b12b75e0c7/downloaddfd782505c55af8d4dbb760ebfce399cMD51MoralesGarciaBrallamSantiago2017LicenciadePublicacion.pdfMoralesGarciaBrallamSantiago2017LicenciadePublicacion.pdfapplication/pdf336868https://repository.udistrital.edu.co/bitstreams/cc8be3fc-2012-47d7-91e3-43ea4a30f0b5/download50a6b84eee19824591681b0a4c448305MD52MoralesGarciaBrallamSantiago2017Anexo1.pdfMoralesGarciaBrallamSantiago2017Anexo1.pdfAnexo 1application/pdf697242https://repository.udistrital.edu.co/bitstreams/52cdca14-0023-4304-81bd-a4c61cc1d9a7/download0791af9076f556ae9fcb671438c8e978MD53MoralesGarciaBrallamSantiago2017Anexo2.pdfMoralesGarciaBrallamSantiago2017Anexo2.pdfAnexo 2application/pdf1157964https://repository.udistrital.edu.co/bitstreams/2795c50d-9933-4851-a82e-9be11d9c4e57/downloadd3100526b0eba17f5476a67f67ba5c53MD5411349/5801oai:repository.udistrital.edu.co:11349/58012023-06-09 16:10:23.68http://creativecommons.org/licenses/by-nc-nd/4.0/Atribución-NoComercial-SinDerivadas 4.0 Internacionalopen.accesshttps://repository.udistrital.edu.coRepositorio Universidad Distritalrepositorio@udistrital.edu.coTElDRU5DSUEgWSBBVVRPUklaQUNJw5NOIEVTUEVDSUFMIFBBUkEgUFVCTElDQVIgWSBQRVJNSVRJUiBMQSBDT05TVUxUQSBZIFVTTyBERSBDT05URU5JRE9TIEVOIEVMIFJFUE9TSVRPUklPIElOU1RJVFVDSU9OQUwgREUgTEEgVU5JVkVSU0lEQUQgRElTVFJJVEFMClTDqXJtaW5vcyB5IGNvbmRpY2lvbmVzIGRlIHVzbyBwYXJhIHB1YmxpY2FjacOzbiBkZSBvYnJhcyBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIChSSVVEKQoKQ29tbyB0aXR1bGFyKGVzKSBkZWwob3MpIGRlcmVjaG8ocykgZGUgYXV0b3IsIGNvbmZpZXJvIChlcmltb3MpIGEgbGEgVW5pdmVyc2lkYWQgRGlzdHJpdGFsIEZyYW5jaXNjbyBKb3PDqSBkZSBDYWxkYXMgKGVuIGFkZWxhbnRlLCBMQSBVTklWRVJTSURBRCkgdW5hIGxpY2VuY2lhIHBhcmEgdXNvIG5vIGV4Y2x1c2l2YSwgbGltaXRhZGEgeSBncmF0dWl0YSBzb2JyZSBsYSBvYnJhIHF1ZSBpbnRlZ3JhcsOhIGVsIFJlcG9zaXRvcmlvIEluc3RpdHVjaW9uYWwgKGVuIGFkZWxhbnRlLCBSSVVEKSwgZGUgYWN1ZXJkbyBhIGxhcyBzaWd1aWVudGVzIHJlZ2xhcywgbGFzIGN1YWxlcyBkZWNsYXJvIChhbW9zKSBjb25vY2VyIHkgYWNlcHRhcjoKCmEpCUVzdGFyw6EgdmlnZW50ZSBhIHBhcnRpciBkZSBsYSBmZWNoYSBlbiBxdWUgc2UgaW5jbHV5YSBlbiBlbCBSSVVEIHkgaGFzdGEgcG9yIHVuIHBsYXpvIGRlIGRpZXogKDEwKSBBw7FvcywgcHJvcnJvZ2FibGUgaW5kZWZpbmlkYW1lbnRlIHBvciBlbCB0aWVtcG8gcXVlIGR1cmUgZWwgZGVyZWNobyBQYXRyaW1vbmlhbCBkZWwgYXV0b3I7IGxhIGN1YWwgcG9kcsOhIGRhcnNlIHBvciB0ZXJtaW5hZGEgcHJldmlhIHNvbGljaXR1ZCBhIExBIFVOSVZFUlNJREFEIHBvciBlc2NyaXRvIGNvbiB1bmEgYW50ZWxhY2nDs24gZGUgZG9zICgyKSBtZXNlcyBhbnRlcyBkZWwgdmVuY2ltaWVudG8gZGVsIHBsYXpvIGluaWNpYWwgbyBlbCBkZSBzdShzKSBwcsOzcnJvZ2EocykuICAKCmIpCUxBIFVOSVZFUlNJREFEIHBvZHLDoSBwdWJsaWNhciBsYSBvYnJhIGVuIGxhcyBkaXN0aW50YXMgdmVyc2lvbmVzIHJlcXVlcmlkYXMgcG9yIGVsIFJJVUQgKGRpZ2l0YWwsIGltcHJlc28sIGVsZWN0csOzbmljbyB1IG90cm8gbWVkaW8gY29ub2NpZG8gbyBwb3IgY29ub2NlcikgTEEgVU5JVkVSU0lEQUQgbm8gc2Vyw6EgcmVzcG9uc2FibGUgZW4gZWwgZXZlbnRvIHF1ZSBlbCBkb2N1bWVudG8gYXBhcmV6Y2EgcmVmZXJlbmNpYWRvIGVuIG1vdG9yZXMgZGUgYsO6c3F1ZWRhIG8gcmVwb3NpdG9yaW9zIGRpZmVyZW50ZXMgYWwgUklVRCwgdW5hIHZleiBlbChvcykgYXV0b3IoZXMpIHNvbGljaXRlbiBzdSBlbGltaW5hY2nDs24gZGVsIFJJVUQsIGRhZG8gcXVlIGxhIG1pc21hIHNlcsOhIHB1YmxpY2FkYSBlbiBJbnRlcm5ldC4gCgpjKQlMYSBhdXRvcml6YWNpw7NuIHNlIGhhY2UgYSB0w610dWxvIGdyYXR1aXRvLCBwb3IgbG8gdGFudG8sIGxvcyBhdXRvcmVzIHJlbnVuY2lhbiBhIHJlY2liaXIgYmVuZWZpY2lvIGFsZ3VubyBwb3IgbGEgcHVibGljYWNpw7NuLCBkaXN0cmlidWNpw7NuLCBjb211bmljYWNpw7NuIHDDumJsaWNhIHkgY3VhbHF1aWVyIG90cm8gdXNvIHF1ZSBzZSBoYWdhIGVuIGxvcyB0w6lybWlub3MgZGUgbGEgcHJlc2VudGUgbGljZW5jaWEgeSBkZSBsYSBsaWNlbmNpYSBkZSB1c28gY29uIHF1ZSBzZSBwdWJsaWNhIChDcmVhdGl2ZSBDb21tb25zKS4KCmQpCUxvcyBjb250ZW5pZG9zIHB1YmxpY2Fkb3MgZW4gZWwgUklVRCBzb24gb2JyYShzKSBvcmlnaW5hbChlcykgc29icmUgbGEgY3VhbChlcykgZWwob3MpIGF1dG9yKGVzKSBjb21vIHRpdHVsYXJlcyBkZSBsb3MgZGVyZWNob3MgZGUgYXV0b3IsIGFzdW1lbiB0b3RhbCByZXNwb25zYWJpbGlkYWQgcG9yIGVsIGNvbnRlbmlkbyBkZSBzdSBvYnJhIGFudGUgTEEgVU5JVkVSU0lEQUQgeSBhbnRlIHRlcmNlcm9zLiBFbiB0b2RvIGNhc28gTEEgVU5JVkVSU0lEQUQgc2UgY29tcHJvbWV0ZSBhIGluZGljYXIgc2llbXByZSBsYSBhdXRvcsOtYSBpbmNsdXllbmRvIGVsIG5vbWJyZSBkZWwgYXV0b3IgeSBsYSBmZWNoYSBkZSBwdWJsaWNhY2nDs24uCgplKQlMQSBVTklWRVJTSURBRCBwb2Ryw6EgaW5jbHVpciBsYSBvYnJhIGVuIGxvcyDDrW5kaWNlcyB5IGJ1c2NhZG9yZXMgcXVlIGVzdGltZW4gbmVjZXNhcmlvcyBwYXJhIG1heGltaXphciBsYSB2aXNpYmlsaWRhZCBlbCB1c28geSBlbCBpbXBhY3RvIGRlIGxhIHByb2R1Y2Npw7NuIGNpZW50w61maWNhLCBhcnTDrXN0aWNhIHkgYWNhZMOpbWljYSBlbiBsYSBjb211bmlkYWQgbG9jYWwsIG5hY2lvbmFsIG8gaW50ZXJuYWNpb25hbC4gCgoKZikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGNvbnZlcnRpciBsYSBvYnJhIGEgY3VhbHF1aWVyIG1lZGlvIG8gZm9ybWF0byBjb24gZWwgZmluIGRlIHN1IHByZXNlcnZhY2nDs24gZW4gZWwgdGllbXBvIHF1ZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSB5IGxhIGRlIHN1cyBwcsOzcnJvZ2FzLgoKCkNvbiBiYXNlIGVuIGxvIGFudGVyaW9yIGF1dG9yaXpvKGFtb3MpLCBhIGZhdm9yIGRlbCBSSVVEIHkgZGUgc3VzIHVzdWFyaW9zLCBsYSBwdWJsaWNhY2nDs24geSBjb25zdWx0YSBkZSBsYSBzaWd1aWVudGUgb2JyYToKClRpdHVsbyAJCkF1dG9yCUFwZWxsaWRvcwlOb21icmVzCjEJCQoyCQkKMwkJCiAKCmcpCUF1dG9yaXpvKGFtb3MpLCBxdWUgbGEgb2JyYSBzZWEgcHVlc3RhIGEgZGlzcG9zaWNpw7NuIGRlbCBww7pibGljbyBlbiBsb3MgdMOpcm1pbm9zIGVzdGFibGVjaWRvcyBlbiBsb3MgbGl0ZXJhbGVzIGFudGVyaW9yZXMsIGJham8gbG9zIGzDrW1pdGVzIGRlZmluaWRvcyBwb3IgTEEgVU5JVkVSU0lEQUQsIGVuIGxhcyDigJxDb25kaWNpb25lcyBkZSB1c28gZGUgZXN0cmljdG8gY3VtcGxpbWllbnRv4oCdIGRlIGxvcyByZWN1cnNvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQsIGN1eW8gdGV4dG8gY29tcGxldG8gc2UgcHVlZGUgY29uc3VsdGFyIGVuIGh0dHA6Ly9yZXBvc2l0b3J5LnVkaXN0cml0YWwuZWR1LmNvLwoKaCkJQ29ub3pjbyhjZW1vcykgeSBhY2VwdG8oYW1vcykgcXVlIG90b3JnbyhhbW9zKSB1bmEgbGljZW5jaWEgZXNwZWNpYWwgcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcywgbGljZW5jaWEgICBkZSBsYSBjdWFsIGhlIChoZW1vcykgb2J0ZW5pZG8gdW5hIGNvcGlhLgoKaSkJTWFuaWZpZXN0byhhbW9zKSBtaSAobnVlc3RybykgdG90YWwgYWN1ZXJkbyBjb24gbGFzIGNvbmRpY2lvbmVzIGRlIHVzbyB5IHB1YmxpY2FjacOzbiBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIHF1ZSBzZSBkZXNjcmliZW4geSBleHBsaWNhbiBlbiBlbCBwcmVzZW50ZSBkb2N1bWVudG8uCgpqKQlDb25vemNvKGNlbW9zKSBsYSBub3JtYXRpdmlkYWQgaW50ZXJuYSBkZSAgTEEgVU5JVkVSU0lEQUQ7IGVuIGNvbmNyZXRvLCBlbCBBY3VlcmRvIDAwNCBkZSAyMDEyIGRlbCBDU1UsIEFjdWVyZG8gMDIzIGRlIDIwMTIgZGVsIENTVSBzb2JyZSBQb2zDrXRpY2EgRWRpdG9yaWFsLCBBY3VlcmRvIDAyNiAgZGVsIDMxIGRlIGp1bGlvIGRlIDIwMTIgc29icmUgZWwgcHJvY2VkaW1pZW50byBwYXJhIGxhIHB1YmxpY2FjacOzbiBkZSB0ZXNpcyBkZSBwb3N0Z3JhZG8gZGUgbG9zIGVzdHVkaWFudGVzIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzLCAgQWN1ZXJkbyAwMzAgZGVsIDAzIGRlIGRpY2llbWJyZSBkZSAyMDEzIHBvciBtZWRpbyBkZWwgY3VhbCBzZSBjcmVhIGVsIFJlcG9zaXRvcmlvIEluc3RpdHVjaW9uYWwgZGUgbGEgVW5pdmVyc2lkYWQgRGlzdHJpdGFsIEZyYW5jaXNjbyBKb3PDqSBkZSBDYWxkYXMsIEFjdWVyZG8gMDM4IGRlIDIwMTUgMjAxNSDigJxwb3IgZWwgY3VhbCBzZSBtb2RpZmljYSBlbCBBY3VlcmRvIDAzMSBkZSAyMDE0IGRlIDIwMTQgcXVlIHJlZ2xhbWVudGEgZWwgdHJhYmFqbyBkZSBncmFkbyBwYXJhIGxvcyBlc3R1ZGlhbnRlcyBkZSBwcmVncmFkbyBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyB5IHNlIGRpY3RhbiBvdHJhcyBkaXJlY3RyaWNlc+KAnSB5IGxhcyBkZW3DoXMgbm9ybWFzIGNvbmNvcmRhbnRlIHkgY29tcGxlbWVudGFyaWFzIHF1ZSByaWdlbiBhbCByZXNwZWN0bywgZXNwZWNpYWxtZW50ZSBsYSBsZXkgMjMgZGUgMTk4MiwgbGEgbGV5IDQ0IGRlIDE5OTMgeSBsYSBkZWNpc2nDs24gQW5kaW5hIDM1MSBkZSAxOTkzLiBFc3RvcyBkb2N1bWVudG9zIHBvZHLDoW4gc2VyIGNvbnN1bHRhZG9zIHkgZGVzY2FyZ2Fkb3MgZW4gZWwgcG9ydGFsIHdlYiBkZSBsYSBiaWJsaW90ZWNhIGh0dHA6Ly9zaXN0ZW1hZGViaWJsaW90ZWNhcy51ZGlzdHJpdGFsLmVkdS5jby8gIAoKaykJQWNlcHRvKGFtb3MpIHF1ZSBMQSBVTklWRVJTSURBRCBubyBzZSByZXNwb25zYWJpbGl6YSBwb3IgbGFzIGluZnJhY2Npb25lcyBhIGxhIHByb3BpZWRhZCBpbnRlbGVjdHVhbCBvIERlcmVjaG9zIGRlIEF1dG9yIGNhdXNhZGFzIHBvciBsb3MgdGl0dWxhcmVzIGRlIGxhIHByZXNlbnRlIExpY2VuY2lhIHkgZGVjbGFyYW1vcyBxdWUgbWFudGVuZHLDqSAoZW1vcykgaW5kZW1uZSBhIExBIFVOSVZFUlNJREFEIHBvciBsYXMgcmVjbGFtYWNpb25lcyBsZWdhbGVzIGRlIGN1YWxxdWllciB0aXBvIHF1ZSBsbGVnYXJlbiBhIHByZXNlbnRhcnNlIHBvciB2aW9sYWNpw7NuIGRlIGRlcmVjaG9zIGEgbGEgcHJvcGllZGFkIGludGVsZWN0dWFsIG8gZGUgQXV0b3IgcmVsYWNpb25hZG9zIGNvbiBsb3MgZG9jdW1lbnRvcyByZWdpc3RyYWRvcyBlbiBlbCBSSVVELgoKbCkJRWwgKGxvcykgYXV0b3IoZXMpIG1hbmlmaWVzdGEobW9zKSBxdWUgbGEgb2JyYSBvYmpldG8gZGUgbGEgcHJlc2VudGUgYXV0b3JpemFjacOzbiBlcyBvcmlnaW5hbCwgZGUgZXhjbHVzaXZhIGF1dG9yw61hLCB5IHNlIHJlYWxpesOzIHNpbiB2aW9sYXIgbyB1c3VycGFyIGRlcmVjaG9zIGRlIGF1dG9yIGRlIHRlcmNlcm9zOyBkZSB0YWwgc3VlcnRlLCBlbiBjYXNvIGRlIHByZXNlbnRhcnNlIGN1YWxxdWllciByZWNsYW1hY2nDs24gbyBhY2Npw7NuIHBvciBwYXJ0ZSBkZSB1biB0ZXJjZXJvIGVuIGN1YW50byBhIGxvcyBkZXJlY2hvcyBkZSBhdXRvciBzb2JyZSBsYSBvYnJhLCBlbCAobG9zKSBlc3R1ZGlhbnRlKHMpIOKAkyBhdXRvcihlcykgYXN1bWlyw6EobikgdG9kYSBsYSByZXNwb25zYWJpbGlkYWQgeSBzYWxkcsOhKG4pIGVuIGRlZmVuc2EgZGUgbG9zIGRlcmVjaG9zIGFxdcOtIGF1dG9yaXphZG9zLiBQYXJhIHRvZG9zIGxvcyBlZmVjdG9zLCBMQSBVTklWRVJTSURBRCBhY3TDumEgY29tbyB1biB0ZXJjZXJvIGRlIGJ1ZW5hIGZlLiAgIAoKCm0pCUVsIChsb3MpIGF1dG9yKGVzKSBtYW5pZmllc3RhKG1vcykgcXVlIGNvbm96Y28oY2Vtb3MpIGxhIGF1dG9ub23DrWEgeSBsb3MgZGVyZWNob3MsIHF1ZSBwb3NlZShtb3MpIHNvYnJlIGxhIG9icmEgeSwgY29tbyB0YWwsIGVzIChzb21vcykgcmVzcG9uc2FibGUocykgZGVsIGFsY2FuY2UganVyw61kaWNvIHkgbGVnYWwsIGRlIGVzY29nZXIgbGEgb3BjacOzbiBkZSBsYSBwdWJsaWNhY2nDs24gbyBkZSByZXN0cmljY2nDs24gZGUgbGEgcHVibGljYWNpw7NuIGRlbCBkb2N1bWVudG8gcmVnaXN0cmFkbyBlbiBlbCBSSVVELgoKCgoKU0kgRUwgRE9DVU1FTlRPIFNFIEJBU0EgRU4gVU4gVFJBQkFKTyBRVUUgSEEgU0lETyBQQVRST0NJTkFETyBPIEFQT1lBRE8gUE9SIFVOQSBBR0VOQ0lBIE8gVU5BIE9SR0FOSVpBQ0nDk04sIENPTiBFWENFUENJw5NOIERFIExBIFVOSVZFUlNJREFEIERJU1RSSVRBTCBGUkFOQ0lTQ08gSk9TRSBERSBDQUxEQVMsIExPUyBBVVRPUkVTIEdBUkFOVElaQU4gUVVFIFNFIEhBIENVTVBMSURPIENPTiBMT1MgCkRFUkVDSE9TIFkgT0JMSUdBQ0lPTkVTIFJFUVVFUklET1MgUE9SIEVMIFJFU1BFQ1RJVk8gQ09OVFJBVE8gTyBBQ1VFUkRPLgoKCgoKCgoKCgoKCgoKCgoKCgoKCgpFbiBjb25zdGFuY2lhIGRlIGxvIGFudGVyaW9yLCBmaXJtbyhhbW9zKSBlbCBwcmVzZW50ZSBkb2N1bWVudG8sIGVuIGxhIGNpdWRhZCBkZSBCb2dvdMOhLCBELkMuLCBhIGxvcyAKCgpGSVJNQSBERSBMT1MgVElUVUxBUkVTIERFIERFUkVDSE9TIERFIEFVVE9SCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18gICBDLkMuIE5vLiBfX19fX19fX19fX19fX19fX18KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fICAgQy5DLiBOby4gX19fX19fX19fX19fX19fX19fCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyAgIEMuQy4gTm8uIF9fX19fX19fX19fX19fX19fXwoKCgpDb3JyZW8gRWxlY3Ryw7NuaWNvIEluc3RpdHVjaW9uYWwgZGVsIChkZSBsb3MpIEF1dG9yKGVzKToKCkF1dG9yCUNvcnJlbyBFbGVjdHLDs25pY28gCjEJCjIJCjMJCgpOb21icmUgZGUgRGlyZWN0b3IoZXMpIGRlIEdyYWRvOgoKMQkKMgkKMwkKCk5vbWJyZSBGYWN1bHRhZCB5IFByb3llY3RvIEN1cnJpY3VsYXI6CgpGYWN1bHRhZAlQcm95ZWN0byBDdXJyaWN1bGFyCgkKCgoKCgoKCk5vdGE6IEVuIGNhc28gcXVlIG5vIGVzdMOpIGRlIGFjdWVyZG8gY29uIGxhcyBjb25kaWNpb25lcyBkZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSwgeSBtYW5pZmllc3RlIGFsZ3VuYSByZXN0cmljY2nDs24gc29icmUgbGEgb2JyYSwganVzdGlmaXF1ZSBsb3MgbW90aXZvcyBwb3IgbG9zIGN1YWxlcyBlbCBkb2N1bWVudG8geSBzdXMgYW5leG9zIG5vIHB1ZWRlbiBzZXIgcHVibGljYWRvcyBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIFJJVUQuCgoKU2kgcmVxdWllcmUgbcOhcyBlc3BhY2lvLCBwdWVkZSBhbmV4YXIgdW5hIGNvcGlhIHNpbWlsYXIgYSBlc3RhIGhvamEKCgo=