Implementación de los cifradores de bloque Rijndael, Serpent, MARS, Twofish y RC6 para su uso en sistemas embebidos

El rápido avance de la tecnología ha generado la necesidad de alcanzar una alta confidencialidad en el manejo de la información, para lo cual se han desarrollado varios algoritmos y sistemas criptográficos; sin embargo, algunos de estos ya han quedado obsoletos puesto que han podido ser descifrados...

Full description

Autores:
Casas García, Oscar
Tipo de recurso:
Fecha de publicación:
2010
Institución:
Universidad de San Buenaventura
Repositorio:
Repositorio USB
Idioma:
spa
OAI Identifier:
oai:bibliotecadigital.usb.edu.co:10819/193
Acceso en línea:
http://hdl.handle.net/10819/193
Palabra clave:
Criptografía
Seguridad de información
Cifradores de bloque
Algoritmos de cifrado
Serpent
Mars
Twofish
Rijndae
Rc6
Expansión de clave
Algoritmos
Grupo de Investigación Laboratorio de Electrónica Aplicada
Lea
Rights
License
http://purl.org/coar/access_right/c_abf2
id SANBUENAV2_ec7edfdec6fc1a3ac85e8ece85c0e1e5
oai_identifier_str oai:bibliotecadigital.usb.edu.co:10819/193
network_acronym_str SANBUENAV2
network_name_str Repositorio USB
repository_id_str
dc.title.spa.fl_str_mv Implementación de los cifradores de bloque Rijndael, Serpent, MARS, Twofish y RC6 para su uso en sistemas embebidos
title Implementación de los cifradores de bloque Rijndael, Serpent, MARS, Twofish y RC6 para su uso en sistemas embebidos
spellingShingle Implementación de los cifradores de bloque Rijndael, Serpent, MARS, Twofish y RC6 para su uso en sistemas embebidos
Criptografía
Seguridad de información
Cifradores de bloque
Algoritmos de cifrado
Serpent
Mars
Twofish
Rijndae
Rc6
Expansión de clave
Algoritmos
Grupo de Investigación Laboratorio de Electrónica Aplicada
Lea
title_short Implementación de los cifradores de bloque Rijndael, Serpent, MARS, Twofish y RC6 para su uso en sistemas embebidos
title_full Implementación de los cifradores de bloque Rijndael, Serpent, MARS, Twofish y RC6 para su uso en sistemas embebidos
title_fullStr Implementación de los cifradores de bloque Rijndael, Serpent, MARS, Twofish y RC6 para su uso en sistemas embebidos
title_full_unstemmed Implementación de los cifradores de bloque Rijndael, Serpent, MARS, Twofish y RC6 para su uso en sistemas embebidos
title_sort Implementación de los cifradores de bloque Rijndael, Serpent, MARS, Twofish y RC6 para su uso en sistemas embebidos
dc.creator.fl_str_mv Casas García, Oscar
dc.contributor.author.spa.fl_str_mv Casas García, Oscar
dc.subject.spa.fl_str_mv Criptografía
Seguridad de información
Cifradores de bloque
Algoritmos de cifrado
Serpent
Mars
Twofish
Rijndae
Rc6
Expansión de clave
Algoritmos
Grupo de Investigación Laboratorio de Electrónica Aplicada
Lea
topic Criptografía
Seguridad de información
Cifradores de bloque
Algoritmos de cifrado
Serpent
Mars
Twofish
Rijndae
Rc6
Expansión de clave
Algoritmos
Grupo de Investigación Laboratorio de Electrónica Aplicada
Lea
description El rápido avance de la tecnología ha generado la necesidad de alcanzar una alta confidencialidad en el manejo de la información, para lo cual se han desarrollado varios algoritmos y sistemas criptográficos; sin embargo, algunos de estos ya han quedado obsoletos puesto que han podido ser descifrados exitosamente por los criptoanalistas. Por tanto, existe la necesidad de desarrollar nuevos algoritmos criptográficos que resistan los ataques basados en el uso de computadores de alto desempeño. Durante el año 2001, el National Institute of Standards and Technology-NIST, llevó a cabo el proceso de coordinación para reemplazar el algoritmo Data Encryption Standard-DES, algoritmo nacido en 1974 que trabaja sobre bloques de 64 bits (Agudelo, 2007). En este proceso de selección del nuevo algoritmo para reemplazar al DES y convertirse en el Advanced Encryption Standard-AES, sólo cinco algoritmos candidatos fueron seleccionados por NIST como finalistas: MARS (Burwick y otros, 1999), RC6 (Rivest y otros, 1998), Rijndael (Daemen y Rijmen, 1997), Serpent (Anderson y otros, 1998) y Twofish (Schneier y otros, 1998). Estos candidatos fueron evaluados bajo los parámetros de diseño, codificación, simulación y síntesis. Finalmente, el algoritmo Rijndael fue seleccionado para ser el Advanced Encryption Standard debido a su seguridad, desempeño, eficiencia, flexibilidad y facilidad de implementación. Es de notar que durante el proceso de selección del AES los algoritmos finalistas fueron implementados en software y algunos de estos algoritmos están diseñados para ser más eficientes en su implementación en software, que en hardware. El objetivo principal consistió en adquirir experimentalmente la velocidad de cifrado, recursos usados y potencia consumida de cada co-procesador. Estos parámetros son especialmente útiles en el momento de diseñar un sistema embebido que utilice criptografía, puesto que al tener un conjunto de 5 co-procesadores con sus respectivos parámetros de rendimiento, se podrá escoger el co-procesador que mejor se adapte a la aplicación específica del sistema embebido. Es decir, si se quiere que el sistema consuma la menos cantidad de potencia, sólo basta revisar los parámetros de los co-procesadores disponibles y utilizar el que presente mejor desempeño en esta característica.
publishDate 2010
dc.date.issued.none.fl_str_mv 2010
dc.date.accessioned.none.fl_str_mv 2011-10-31T22:33:50Z
dc.date.available.none.fl_str_mv 2011-10-31T22:33:50Z
dc.date.submitted.none.fl_str_mv 2011
dc.type.spa.fl_str_mv Libro
dc.type.coar.fl_str_mv http://purl.org/coar/resource_type/c_2f33
dc.type.spa.spa.fl_str_mv Libro
dc.type.driver.spa.fl_str_mv info:eu-repo/semantics/book
dc.identifier.isbn.none.fl_str_mv 9789588436456
dc.identifier.uri.none.fl_str_mv http://hdl.handle.net/10819/193
identifier_str_mv 9789588436456
url http://hdl.handle.net/10819/193
dc.language.iso.spa.fl_str_mv spa
language spa
dc.rights.coar.fl_str_mv http://purl.org/coar/access_right/c_abf2
rights_invalid_str_mv http://purl.org/coar/access_right/c_abf2
dc.format.medium.spa.fl_str_mv Recurso en linea
dc.format.mimetype.spa.fl_str_mv application/pdf
dc.publisher.spa.fl_str_mv Universidad de San Buenaventura
dc.publisher.faculty.spa.fl_str_mv Documento USB
dc.publisher.program.spa.fl_str_mv Documentos USB
dc.publisher.sede.spa.fl_str_mv Cali
institution Universidad de San Buenaventura
dc.source.instname.spa.fl_str_mv Universidad de San Buenaventura - Cali
dc.source.reponame.spa.fl_str_mv Biblioteca Digital Universidad de San Buenaventura
bitstream.url.fl_str_mv https://bibliotecadigital.usb.edu.co/bitstreams/78fb1cc5-7b05-4245-bfaf-1884ecaf596a/download
https://bibliotecadigital.usb.edu.co/bitstreams/f4c1aa6a-656d-41f1-899f-d0f8df2fb87f/download
https://bibliotecadigital.usb.edu.co/bitstreams/1662017f-9c80-4825-a51e-613b2579b455/download
https://bibliotecadigital.usb.edu.co/bitstreams/e8b73c75-c38f-47b6-a07f-61d994647f95/download
bitstream.checksum.fl_str_mv 3f966c912fcfa795c2e88b544a031016
e2dd342f2c351b678ff0101de2d0e3d8
5c59acc939d511d24be422f8919a3038
a3e9c57399c30abf6b2e250efe0f2a8e
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositorio Institucional Universidad de San Buenaventura Colombia
repository.mail.fl_str_mv bdigital@metabiblioteca.com
_version_ 1837099253101494272
spelling Comunidad Científica y AcadémicaCasas García, Oscarea448e28-c6f4-4e87-968b-6396facdbbc6-12011-10-31T22:33:50Z2011-10-31T22:33:50Z20102011El rápido avance de la tecnología ha generado la necesidad de alcanzar una alta confidencialidad en el manejo de la información, para lo cual se han desarrollado varios algoritmos y sistemas criptográficos; sin embargo, algunos de estos ya han quedado obsoletos puesto que han podido ser descifrados exitosamente por los criptoanalistas. Por tanto, existe la necesidad de desarrollar nuevos algoritmos criptográficos que resistan los ataques basados en el uso de computadores de alto desempeño. Durante el año 2001, el National Institute of Standards and Technology-NIST, llevó a cabo el proceso de coordinación para reemplazar el algoritmo Data Encryption Standard-DES, algoritmo nacido en 1974 que trabaja sobre bloques de 64 bits (Agudelo, 2007). En este proceso de selección del nuevo algoritmo para reemplazar al DES y convertirse en el Advanced Encryption Standard-AES, sólo cinco algoritmos candidatos fueron seleccionados por NIST como finalistas: MARS (Burwick y otros, 1999), RC6 (Rivest y otros, 1998), Rijndael (Daemen y Rijmen, 1997), Serpent (Anderson y otros, 1998) y Twofish (Schneier y otros, 1998). Estos candidatos fueron evaluados bajo los parámetros de diseño, codificación, simulación y síntesis. Finalmente, el algoritmo Rijndael fue seleccionado para ser el Advanced Encryption Standard debido a su seguridad, desempeño, eficiencia, flexibilidad y facilidad de implementación. Es de notar que durante el proceso de selección del AES los algoritmos finalistas fueron implementados en software y algunos de estos algoritmos están diseñados para ser más eficientes en su implementación en software, que en hardware. El objetivo principal consistió en adquirir experimentalmente la velocidad de cifrado, recursos usados y potencia consumida de cada co-procesador. Estos parámetros son especialmente útiles en el momento de diseñar un sistema embebido que utilice criptografía, puesto que al tener un conjunto de 5 co-procesadores con sus respectivos parámetros de rendimiento, se podrá escoger el co-procesador que mejor se adapte a la aplicación específica del sistema embebido. Es decir, si se quiere que el sistema consuma la menos cantidad de potencia, sólo basta revisar los parámetros de los co-procesadores disponibles y utilizar el que presente mejor desempeño en esta característica.Recurso en lineaapplication/pdf9789588436456http://hdl.handle.net/10819/193spaUniversidad de San BuenaventuraDocumento USBDocumentos USBCaliPor medio de este formato manifiesto mi voluntad de AUTORIZAR a la Universidad de San Buenaventura, Sede Bogotá, Seccionales Medellín, Cali y Cartagena, la difusión en texto completo de manera gratuita y por tiempo indefinido en la Biblioteca Digital Universidad de San Buenaventura, el documento académico-investigativo objeto de la presente autorización, con fines estrictamente educativos, científicos y culturales, en los términos establecidos en la Ley 23 de 1982, Ley 44 de 1993, Decisión Andina 351 de 1993, Decreto 460 de 1995 y demás normas generales sobre derechos de autor. Como autor manifiesto que el presente documento académico-investigativo es original y se realiza sin violar o usurpar derechos de autor de terceros, por lo tanto, la obra es de mi exclusiva autora y poseo la titularidad sobre la misma. La Universidad de San Buenaventura no será responsable de ninguna utilización indebida del documento por parte de terceros y será exclusivamente mi responsabilidad atender personalmente cualquier reclamación que pueda presentarse a la Universidad. Autorizo a la Biblioteca Digital de la Universidad de San Buenaventura convertir el documento al formato que el repositorio lo requiera (impreso, digital, electrónico o cualquier otro conocido o por conocer) o con fines de preservación digital. Esta autorización no implica renuncia a la facultad que tengo de publicar posteriormente la obra, en forma total o parcial, por lo cual podrá, dando aviso por escrito con no menos de un mes de antelación, solicitar que el documento deje de estar disponible para el público en la Biblioteca Digital de la Universidad de San Buenaventura, así mismo, cuando se requiera por razones legales y/o reglas del editor de una revista.http://purl.org/coar/access_right/c_abf2Universidad de San Buenaventura - CaliBiblioteca Digital Universidad de San BuenaventuraCriptografíaSeguridad de informaciónCifradores de bloqueAlgoritmos de cifradoSerpentMarsTwofishRijndaeRc6Expansión de claveAlgoritmosGrupo de Investigación Laboratorio de Electrónica AplicadaLeaImplementación de los cifradores de bloque Rijndael, Serpent, MARS, Twofish y RC6 para su uso en sistemas embebidosLibroLibroinfo:eu-repo/semantics/bookhttp://purl.org/coar/resource_type/c_2f33PublicationORIGINALsistemas_embebidos.pdfsistemas_embebidos.pdfapplication/pdf7370001https://bibliotecadigital.usb.edu.co/bitstreams/78fb1cc5-7b05-4245-bfaf-1884ecaf596a/download3f966c912fcfa795c2e88b544a031016MD51LICENSElicense.txtlicense.txttext/plain; charset=utf-816237https://bibliotecadigital.usb.edu.co/bitstreams/f4c1aa6a-656d-41f1-899f-d0f8df2fb87f/downloade2dd342f2c351b678ff0101de2d0e3d8MD52TEXTsistemas_embebidos.pdf.txtsistemas_embebidos.pdf.txtExtracted texttext/plain115913https://bibliotecadigital.usb.edu.co/bitstreams/1662017f-9c80-4825-a51e-613b2579b455/download5c59acc939d511d24be422f8919a3038MD53THUMBNAILsistemas_embebidos.pdf.jpgsistemas_embebidos.pdf.jpgGenerated Thumbnailimage/jpeg22151https://bibliotecadigital.usb.edu.co/bitstreams/e8b73c75-c38f-47b6-a07f-61d994647f95/downloada3e9c57399c30abf6b2e250efe0f2a8eMD5410819/193oai:bibliotecadigital.usb.edu.co:10819/1932023-04-12 15:13:58.465https://bibliotecadigital.usb.edu.coRepositorio Institucional Universidad de San Buenaventura Colombiabdigital@metabiblioteca.comPGh0bWw+CjxoZWFkPgo8dGl0bGU+Q3JlYXRpdmUgQ29tbW9ucyBDb2xvbWJpYTwvdGl0bGU+CjwvaGVhZD4KPGJvZHkgPgoKPGRpdiBpZD0iZGVlZCI+Cjxici8+Cgo8dGQgYWxpZ249Imp1c3RpZnkiPgo8cD48c3Ryb25nPlBhcmEgdGVuZXIgbcOhcyBpbmZvcm1hY2nDs24gdmlzaXRlOjwvc3Ryb25nPjwvcD4KPHA+Q3JlYXRpdmUgQ29tbW9ucyBDb2xvbWJpYSAKPGEgaHJlZj0iaHR0cDovL2NvLmNyZWF0aXZlY29tbW9ucy5vcmcvIiBUQVJHRVQ9Il9uZXciPmh0dHA6Ly9jby5jcmVhdGl2ZWNvbW1vbnMub3JnLwo8L2E+PC9wPgo8cD5DcmVhdGl2ZSBDb21tb25zCjxhIGhyZWY9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnLyIgVEFSR0VUPSJfbmV3Ij5odHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy88L2E+CjwvcD48YnI+Cgo8ZGl2IHN0eWxlPSJ3aWR0aDo4MDBweDtoZWlnaHQ6MjQyMHB4O2JvcmRlcjoycHggZG91YmxlICMxOTU4OTc7Ij4KCjxwIGFsaWduPSJjZW50ZXIiPjxzdHJvbmc+TGljZW5jaWEgPC9zdHJvbmc+PC9wPgoKICA8cD48Zm9udCBzaXplPSIxIj5MQSBPQlJBIChUQUwgWSBDT01PIFNFIERFRklORSBNw4FTIEFERUxBTlRFKSBTRSBPVE9SR0EgQkFKTyBMT1MgVEVSTUlOT1MgREUgRVNUQSBMSUNFTkNJQSBQw5pCTElDQSBERSBDUkVBVElWRSBDT01NT05TICjigJxMUEND4oCdIE8g4oCcTElDRU5DSUHigJ0pLiBMQSBPQlJBIEVTVMOBIFBST1RFR0lEQSBQT1IgREVSRUNIT1MgREUgQVVUT1IgWS9VIE9UUkFTIExFWUVTIEFQTElDQUJMRVMuIFFVRURBIFBST0hJQklETyBDVUFMUVVJRVIgVVNPIFFVRSBTRSBIQUdBIERFIExBIE9CUkEgUVVFIE5PIENVRU5URSBDT04gTEEgQVVUT1JJWkFDScOTTiBQRVJUSU5FTlRFIERFIENPTkZPUk1JREFEIENPTiBMT1MgVMOJUk1JTk9TIERFIEVTVEEgTElDRU5DSUEgWSBERSBMQSBMRVkgREUgREVSRUNITyBERSBBVVRPUi48L3A+CgogIDxwPk1FRElBTlRFIEVMIEVKRVJDSUNJTyBERSBDVUFMUVVJRVJBIERFIExPUyBERVJFQ0hPUyBRVUUgU0UgT1RPUkdBTiBFTiBFU1RBIExJQ0VOQ0lBLCBVU1RFRCBBQ0VQVEEgWSBBQ1VFUkRBIFFVRURBUiBPQkxJR0FETyBFTiBMT1MgVEVSTUlOT1MgUVVFIFNFIFNFw5FBTEFOIEVOIEVMTEEuIEVMIExJQ0VOQ0lBTlRFIENPTkNFREUgQSBVU1RFRCBMT1MgREVSRUNIT1MgQ09OVEVOSURPUyBFTiBFU1RBIExJQ0VOQ0lBIENPTkRJQ0lPTkFET1MgQSBMQSBBQ0VQVEFDScOTTiBERSBTVVMgVEVSTUlOT1MgWSBDT05ESUNJT05FUy4gPC9mb250PjwvcD4KCiAgPHA+PHN0cm9uZz4xLiBEZWZpbmljaW9uZXMgPC9zdHJvbmc+PC9wPgoKICA8b2wgdHlwZT0nYSc+CgogICAgPGxpPjxzdHJvbmc+T2JyYSBDb2xlY3RpdmEgPC9zdHJvbmc+IGVzIHVuYSBvYnJhLCB0YWwgY29tbyB1bmEgcHVibGljYWNpw7NuIHBlcmnDs2RpY2EsIHVuYSBhbnRvbG9nw61hLCBvIHVuYSBlbmNpY2xvcGVkaWEsIGVuIGxhIHF1ZSBsYSBvYnJhIGVuIHN1IHRvdGFsaWRhZCwgc2luIG1vZGlmaWNhY2nDs24gYWxndW5hLCBqdW50byBjb24gdW4gZ3J1cG8gZGUgb3RyYXMgY29udHJpYnVjaW9uZXMgcXVlIGNvbnN0aXR1eWVuIG9icmFzIHNlcGFyYWRhcyBlIGluZGVwZW5kaWVudGVzIGVuIHPDrSBtaXNtYXMsIHNlIGludGVncmFuIGVuIHVuIHRvZG8gY29sZWN0aXZvLiBVbmEgT2JyYSBxdWUgY29uc3RpdHV5ZSB1bmEgb2JyYSBjb2xlY3RpdmEgbm8gc2UgY29uc2lkZXJhcsOhIHVuYSBPYnJhIERlcml2YWRhIChjb21vIHNlIGRlZmluZSBhYmFqbykgcGFyYSBsb3MgcHJvcMOzc2l0b3MgZGUgZXN0YSBsaWNlbmNpYS4gYXF1ZWxsYSBwcm9kdWNpZGEgcG9yIHVuIGdydXBvIGRlIGF1dG9yZXMsIGVuIHF1ZSBsYSBPYnJhIHNlIGVuY3VlbnRyYSBzaW4gbW9kaWZpY2FjaW9uZXMsIGp1bnRvIGNvbiB1bmEgY2llcnRhIGNhbnRpZGFkIGRlIG90cmFzIGNvbnRyaWJ1Y2lvbmVzLCBxdWUgY29uc3RpdHV5ZW4gZW4gc8OtIG1pc21vcyB0cmFiYWpvcyBzZXBhcmFkb3MgZSBpbmRlcGVuZGllbnRlcywgcXVlIHNvbiBpbnRlZ3JhZG9zIGFsIHRvZG8gY29sZWN0aXZvLCB0YWxlcyBjb21vIHB1YmxpY2FjaW9uZXMgcGVyacOzZGljYXMsIGFudG9sb2fDrWFzIG8gZW5jaWNsb3BlZGlhcy4gPC9saT4KCiAgPGxpPjxzdHJvbmc+T2JyYSBEZXJpdmFkYSA8L3N0cm9uZz4gc2lnbmlmaWNhIHVuYSBvYnJhIGJhc2FkYSBlbiBsYSBvYnJhIG9iamV0byBkZSBlc3RhIGxpY2VuY2lhIG8gZW4gw6lzdGEgeSBvdHJhcyBvYnJhcyBwcmVleGlzdGVudGVzLCB0YWxlcyBjb21vIHRyYWR1Y2Npb25lcywgYXJyZWdsb3MgbXVzaWNhbGVzLCBkcmFtYXRpemFjaW9uZXMsIOKAnGZpY2Npb25hbGl6YWNpb25lc+KAnSwgdmVyc2lvbmVzIHBhcmEgY2luZSwg4oCcZ3JhYmFjaW9uZXMgZGUgc29uaWRv4oCdLCByZXByb2R1Y2Npb25lcyBkZSBhcnRlLCByZXPDum1lbmVzLCBjb25kZW5zYWNpb25lcywgbyBjdWFscXVpZXIgb3RyYSBlbiBsYSBxdWUgbGEgb2JyYSBwdWVkYSBzZXIgdHJhbnNmb3JtYWRhLCBjYW1iaWFkYSBvIGFkYXB0YWRhLCBleGNlcHRvIGFxdWVsbGFzIHF1ZSBjb25zdGl0dXlhbiB1bmEgb2JyYSBjb2xlY3RpdmEsIGxhcyBxdWUgbm8gc2Vyw6FuIGNvbnNpZGVyYWRhcyB1bmEgb2JyYSBkZXJpdmFkYSBwYXJhIGVmZWN0b3MgZGUgZXN0YSBsaWNlbmNpYS4gKFBhcmEgZXZpdGFyIGR1ZGFzLCBlbiBlbCBjYXNvIGRlIHF1ZSBsYSBPYnJhIHNlYSB1bmEgY29tcG9zaWNpw7NuIG11c2ljYWwgbyB1bmEgZ3JhYmFjacOzbiBzb25vcmEsIHBhcmEgbG9zIGVmZWN0b3MgZGUgZXN0YSBMaWNlbmNpYSBsYSBzaW5jcm9uaXphY2nDs24gdGVtcG9yYWwgZGUgbGEgT2JyYSBjb24gdW5hIGltYWdlbiBlbiBtb3ZpbWllbnRvIHNlIGNvbnNpZGVyYXLDoSB1bmEgT2JyYSBEZXJpdmFkYSBwYXJhIGxvcyBmaW5lcyBkZSBlc3RhIGxpY2VuY2lhKS4gPC9saT4KCiAgPGxpPjxzdHJvbmc+TGljZW5jaWFudGUsIDwvc3Ryb25nPiBlcyBlbCBpbmRpdmlkdW8gbyBsYSBlbnRpZGFkIHRpdHVsYXIgZGUgbG9zIGRlcmVjaG9zIGRlIGF1dG9yIHF1ZSBvZnJlY2UgbGEgT2JyYSBlbiBjb25mb3JtaWRhZCBjb24gbGFzIGNvbmRpY2lvbmVzIGRlIGVzdGEgTGljZW5jaWEuIDwvbGk+CgogIDxsaT48c3Ryb25nPkF1dG9yIG9yaWdpbmFsLCA8L3N0cm9uZz5lcyBlbCBpbmRpdmlkdW8gcXVlIGNyZcOzIGxhIE9icmEuIDwvbGk+CgogIDxsaT48c3Ryb25nPk9icmE8L3N0cm9uZz4sIGVzIGFxdWVsbGEgb2JyYSBzdXNjZXB0aWJsZSBkZSBwcm90ZWNjacOzbiBwb3IgZWwgcsOpZ2ltZW4gZGUgRGVyZWNobyBkZSBBdXRvciB5IHF1ZSBlcyBvZnJlY2lkYSBlbiBsb3MgdMOpcm1pbm9zIGRlIGVzdGEgbGljZW5jaWEgPC9saT4KCiAgPGxpPjxzdHJvbmc+VXN0ZWQ8L3N0cm9uZz4sIGVzIGVsIGluZGl2aWR1byBvIGxhIGVudGlkYWQgcXVlIGVqZXJjaXRhIGxvcyBkZXJlY2hvcyBvdG9yZ2Fkb3MgYWwgYW1wYXJvIGRlIGVzdGEgTGljZW5jaWEgeSBxdWUgY29uIGFudGVyaW9yaWRhZCBubyBoYSB2aW9sYWRvIGxhcyBjb25kaWNpb25lcyBkZSBsYSBtaXNtYSByZXNwZWN0byBhIGxhIE9icmEsIG8gcXVlIGhheWEgb2J0ZW5pZG8gYXV0b3JpemFjacOzbiBleHByZXNhIHBvciBwYXJ0ZSBkZWwgTGljZW5jaWFudGUgcGFyYSBlamVyY2VyIGxvcyBkZXJlY2hvcyBhbCBhbXBhcm8gZGUgZXN0YSBMaWNlbmNpYSBwZXNlIGEgdW5hIHZpb2xhY2nDs24gYW50ZXJpb3IuIDwvbGk+CgogIDwvb2w+CgogIDxwPjxzdHJvbmc+Mi4gRGVyZWNob3MgZGUgVXNvcyBIb25yYWRvcyB5IGV4Y2VwY2lvbmVzIExlZ2FsZXMuIDwvc3Ryb25nPjwvcD4KCiAgPHA+TmFkYSBlbiBlc3RhIExpY2VuY2lhIHBvZHLDoSBzZXIgaW50ZXJwcmV0YWRvIGNvbW8gdW5hIGRpc21pbnVjacOzbiwgbGltaXRhY2nDs24gbyByZXN0cmljY2nDs24gZGUgbG9zIGRlcmVjaG9zIGRlcml2YWRvcyBkZWwgdXNvIGhvbnJhZG8geSBvdHJhcyBsaW1pdGFjaW9uZXMgbyBleGNlcGNpb25lcyBhIGxvcyBkZXJlY2hvcyBkZWwgYXV0b3IgYmFqbyBlbCByw6lnaW1lbiBsZWdhbCB2aWdlbnRlIG8gZGVyaXZhZG8gZGUgY3VhbHF1aWVyIG90cmEgbm9ybWEgcXVlIHNlIGxlIGFwbGlxdWUuIDwvcD4KCiAgPHA+PHN0cm9uZz4zLiBDb25jZXNpw7NuIGRlIGxhIExpY2VuY2lhLiA8L3N0cm9uZz48L3A+CgogIDxwPkJham8gbG9zIHTDqXJtaW5vcyB5IGNvbmRpY2lvbmVzIGRlIGVzdGEgTGljZW5jaWEsIGVsIExpY2VuY2lhbnRlIG90b3JnYSBhIFVzdGVkIHVuYSBsaWNlbmNpYSBtdW5kaWFsLCBsaWJyZSBkZSByZWdhbMOtYXMsIG5vIGV4Y2x1c2l2YSB5IHBlcnBldHVhIChkdXJhbnRlIHRvZG8gZWwgcGVyw61vZG8gZGUgdmlnZW5jaWEgZGUgbG9zIGRlcmVjaG9zIGRlIGF1dG9yKSBwYXJhIGVqZXJjZXIgZXN0b3MgZGVyZWNob3Mgc29icmUgbGEgT2JyYSB0YWwgeSBjb21vIHNlIGluZGljYSBhIGNvbnRpbnVhY2nDs246IDwvcD4KCiAgPG9sIHR5cGU9J2EnPgoKICAgIDxsaT4gUmVwcm9kdWNpciBsYSBPYnJhLCBpbmNvcnBvcmFyIGxhIE9icmEgZW4gdW5hIG8gbcOhcyBPYnJhcyBDb2xlY3RpdmFzLCB5IHJlcHJvZHVjaXIgbGEgT2JyYSBpbmNvcnBvcmFkYSBlbiBsYXMgT2JyYXMgQ29sZWN0aXZhczsgPC9saT4KCiAgPGxpPiBEaXN0cmlidWlyIGNvcGlhcyBvIGZvbm9ncmFtYXMgZGUgbGFzIE9icmFzLCBleGhpYmlybGFzIHDDumJsaWNhbWVudGUsIGVqZWN1dGFybGFzIHDDumJsaWNhbWVudGUgeS9vIHBvbmVybGFzIGEgZGlzcG9zaWNpw7NuIHDDumJsaWNhLCBpbmNsdXnDqW5kb2xhcyBjb21vIGluY29ycG9yYWRhcyBlbiBPYnJhcyBDb2xlY3RpdmFzLCBzZWfDum4gY29ycmVzcG9uZGE7IDwvbGk+CgogIDxsaT4gRGlzdHJpYnVpciBjb3BpYXMgZGUgbGFzIE9icmFzIERlcml2YWRhcyBxdWUgc2UgZ2VuZXJlbiwgZXhoaWJpcmxhcyBww7pibGljYW1lbnRlLCBlamVjdXRhcmxhcyBww7pibGljYW1lbnRlIHkvbyBwb25lcmxhcyBhIGRpc3Bvc2ljacOzbiBww7pibGljYS4gPC9saT4KCiAgPC9vbD4KCiAgPHA+TG9zIGRlcmVjaG9zIG1lbmNpb25hZG9zIGFudGVyaW9ybWVudGUgcHVlZGVuIHNlciBlamVyY2lkb3MgZW4gdG9kb3MgbG9zIG1lZGlvcyB5IGZvcm1hdG9zLCBhY3R1YWxtZW50ZSBjb25vY2lkb3MgbyBxdWUgc2UgaW52ZW50ZW4gZW4gZWwgZnV0dXJvLiBMb3MgZGVyZWNob3MgYW50ZXMgbWVuY2lvbmFkb3MgaW5jbHV5ZW4gZWwgZGVyZWNobyBhIHJlYWxpemFyIGRpY2hhcyBtb2RpZmljYWNpb25lcyBlbiBsYSBtZWRpZGEgcXVlIHNlYW4gdMOpY25pY2FtZW50ZSBuZWNlc2FyaWFzIHBhcmEgZWplcmNlciBsb3MgZGVyZWNob3MgZW4gb3RybyBtZWRpbyBvIGZvcm1hdG9zLCBwZXJvIGRlIG90cmEgbWFuZXJhIHVzdGVkIG5vIGVzdMOhIGF1dG9yaXphZG8gcGFyYSByZWFsaXphciBvYnJhcyBkZXJpdmFkYXMuVG9kb3MgbG9zIGRlcmVjaG9zIG5vIG90b3JnYWRvcyBleHByZXNhbWVudGUgcG9yIGVsIExpY2VuY2lhbnRlIHF1ZWRhbiBwb3IgZXN0ZSBtZWRpbyByZXNlcnZhZG9zLCBpbmNsdXllbmRvIHBlcm8gc2luIGxpbWl0YXJzZSBhIGFxdWVsbG9zIHF1ZSBzZSBtZW5jaW9uYW4gZW4gbGFzIHNlY2Npb25lcyA0KGQpIHkgNChlKS4gPC9wPgoKICA8cD48c3Ryb25nPjQuIFJlc3RyaWNjaW9uZXMuIDwvc3Ryb25nPjwvcD4KCiAgPHA+TGEgbGljZW5jaWEgb3RvcmdhZGEgZW4gbGEgYW50ZXJpb3IgU2VjY2nDs24gMyBlc3TDoSBleHByZXNhbWVudGUgc3VqZXRhIHkgbGltaXRhZGEgcG9yIGxhcyBzaWd1aWVudGVzIHJlc3RyaWNjaW9uZXM6IDwvcD4KCiAgPG9sIHR5cGU9J2EnPgoKICAgIDxsaT4gVXN0ZWQgcHVlZGUgZGlzdHJpYnVpciwgZXhoaWJpciBww7pibGljYW1lbnRlLCBlamVjdXRhciBww7pibGljYW1lbnRlLCBvIHBvbmVyIGEgZGlzcG9zaWNpw7NuIHDDumJsaWNhIGxhIE9icmEgc8OzbG8gYmFqbyBsYXMgY29uZGljaW9uZXMgZGUgZXN0YSBMaWNlbmNpYSwgeSBVc3RlZCBkZWJlIGluY2x1aXIgdW5hIGNvcGlhIGRlIGVzdGEgbGljZW5jaWEgbyBkZWwgSWRlbnRpZmljYWRvciBVbml2ZXJzYWwgZGUgUmVjdXJzb3MgZGUgbGEgbWlzbWEgY29uIGNhZGEgY29waWEgZGUgbGEgT2JyYSBxdWUgZGlzdHJpYnV5YSwgZXhoaWJhIHDDumJsaWNhbWVudGUsIGVqZWN1dGUgcMO6YmxpY2FtZW50ZSBvIHBvbmdhIGEgZGlzcG9zaWNpw7NuIHDDumJsaWNhLiBObyBlcyBwb3NpYmxlIG9mcmVjZXIgbyBpbXBvbmVyIG5pbmd1bmEgY29uZGljacOzbiBzb2JyZSBsYSBPYnJhIHF1ZSBhbHRlcmUgbyBsaW1pdGUgbGFzIGNvbmRpY2lvbmVzIGRlIGVzdGEgTGljZW5jaWEgbyBlbCBlamVyY2ljaW8gZGUgbG9zIGRlcmVjaG9zIGRlIGxvcyBkZXN0aW5hdGFyaW9zIG90b3JnYWRvcyBlbiBlc3RlIGRvY3VtZW50by4gTm8gZXMgcG9zaWJsZSBzdWJsaWNlbmNpYXIgbGEgT2JyYS4gVXN0ZWQgZGViZSBtYW50ZW5lciBpbnRhY3RvcyB0b2RvcyBsb3MgYXZpc29zIHF1ZSBoYWdhbiByZWZlcmVuY2lhIGEgZXN0YSBMaWNlbmNpYSB5IGEgbGEgY2zDoXVzdWxhIGRlIGxpbWl0YWNpw7NuIGRlIGdhcmFudMOtYXMuIFVzdGVkIG5vIHB1ZWRlIGRpc3RyaWJ1aXIsIGV4aGliaXIgcMO6YmxpY2FtZW50ZSwgZWplY3V0YXIgcMO6YmxpY2FtZW50ZSwgbyBwb25lciBhIGRpc3Bvc2ljacOzbiBww7pibGljYSBsYSBPYnJhIGNvbiBhbGd1bmEgbWVkaWRhIHRlY25vbMOzZ2ljYSBxdWUgY29udHJvbGUgZWwgYWNjZXNvIG8gbGEgdXRpbGl6YWNpw7NuIGRlIGVsbGEgZGUgdW5hIGZvcm1hIHF1ZSBzZWEgaW5jb25zaXN0ZW50ZSBjb24gbGFzIGNvbmRpY2lvbmVzIGRlIGVzdGEgTGljZW5jaWEuIExvIGFudGVyaW9yIHNlIGFwbGljYSBhIGxhIE9icmEgaW5jb3Jwb3JhZGEgYSB1bmEgT2JyYSBDb2xlY3RpdmEsIHBlcm8gZXN0byBubyBleGlnZSBxdWUgbGEgT2JyYSBDb2xlY3RpdmEgYXBhcnRlIGRlIGxhIG9icmEgbWlzbWEgcXVlZGUgc3VqZXRhIGEgbGFzIGNvbmRpY2lvbmVzIGRlIGVzdGEgTGljZW5jaWEuIFNpIFVzdGVkIGNyZWEgdW5hIE9icmEgQ29sZWN0aXZhLCBwcmV2aW8gYXZpc28gZGUgY3VhbHF1aWVyIExpY2VuY2lhbnRlIGRlYmUsIGVuIGxhIG1lZGlkYSBkZSBsbyBwb3NpYmxlLCBlbGltaW5hciBkZSBsYSBPYnJhIENvbGVjdGl2YSBjdWFscXVpZXIgcmVmZXJlbmNpYSBhIGRpY2hvIExpY2VuY2lhbnRlIG8gYWwgQXV0b3IgT3JpZ2luYWwsIHNlZ8O6biBsbyBzb2xpY2l0YWRvIHBvciBlbCBMaWNlbmNpYW50ZSB5IGNvbmZvcm1lIGxvIGV4aWdlIGxhIGNsw6F1c3VsYSA0KGMpLiA8L2xpPgoKICA8bGk+IFVzdGVkIG5vIHB1ZWRlIGVqZXJjZXIgbmluZ3VubyBkZSBsb3MgZGVyZWNob3MgcXVlIGxlIGhhbiBzaWRvIG90b3JnYWRvcyBlbiBsYSBTZWNjacOzbiAzIHByZWNlZGVudGUgZGUgbW9kbyBxdWUgZXN0w6luIHByaW5jaXBhbG1lbnRlIGRlc3RpbmFkb3MgbyBkaXJlY3RhbWVudGUgZGlyaWdpZG9zIGEgY29uc2VndWlyIHVuIHByb3ZlY2hvIGNvbWVyY2lhbCBvIHVuYSBjb21wZW5zYWNpw7NuIG1vbmV0YXJpYSBwcml2YWRhLiBFbCBpbnRlcmNhbWJpbyBkZSBsYSBPYnJhIHBvciBvdHJhcyBvYnJhcyBwcm90ZWdpZGFzIHBvciBkZXJlY2hvcyBkZSBhdXRvciwgeWEgc2VhIGEgdHJhdsOpcyBkZSB1biBzaXN0ZW1hIHBhcmEgY29tcGFydGlyIGFyY2hpdm9zIGRpZ2l0YWxlcyAoZGlnaXRhbCBmaWxlLXNoYXJpbmcpIG8gZGUgY3VhbHF1aWVyIG90cmEgbWFuZXJhIG5vIHNlcsOhIGNvbnNpZGVyYWRvIGNvbW8gZXN0YXIgZGVzdGluYWRvIHByaW5jaXBhbG1lbnRlIG8gZGlyaWdpZG8gZGlyZWN0YW1lbnRlIGEgY29uc2VndWlyIHVuIHByb3ZlY2hvIGNvbWVyY2lhbCBvIHVuYSBjb21wZW5zYWNpw7NuIG1vbmV0YXJpYSBwcml2YWRhLCBzaWVtcHJlIHF1ZSBubyBzZSByZWFsaWNlIHVuIHBhZ28gbWVkaWFudGUgdW5hIGNvbXBlbnNhY2nDs24gbW9uZXRhcmlhIGVuIHJlbGFjacOzbiBjb24gZWwgaW50ZXJjYW1iaW8gZGUgb2JyYXMgcHJvdGVnaWRhcyBwb3IgZWwgZGVyZWNobyBkZSBhdXRvci4gPC9saT4KCiAgPGxpPiBTaSB1c3RlZCBkaXN0cmlidXllLCBleGhpYmUgcMO6YmxpY2FtZW50ZSwgZWplY3V0YSBww7pibGljYW1lbnRlIG8gZWplY3V0YSBww7pibGljYW1lbnRlIGVuIGZvcm1hIGRpZ2l0YWwgbGEgT2JyYSBvIGN1YWxxdWllciBPYnJhIERlcml2YWRhIHUgT2JyYSBDb2xlY3RpdmEsIFVzdGVkIGRlYmUgbWFudGVuZXIgaW50YWN0YSB0b2RhIGxhIGluZm9ybWFjacOzbiBkZSBkZXJlY2hvIGRlIGF1dG9yIGRlIGxhIE9icmEgeSBwcm9wb3JjaW9uYXIsIGRlIGZvcm1hIHJhem9uYWJsZSBzZWfDum4gZWwgbWVkaW8gbyBtYW5lcmEgcXVlIFVzdGVkIGVzdMOpIHV0aWxpemFuZG86IChpKSBlbCBub21icmUgZGVsIEF1dG9yIE9yaWdpbmFsIHNpIGVzdMOhIHByb3Zpc3RvIChvIHNldWTDs25pbW8sIHNpIGZ1ZXJlIGFwbGljYWJsZSksIHkvbyAoaWkpIGVsIG5vbWJyZSBkZSBsYSBwYXJ0ZSBvIGxhcyBwYXJ0ZXMgcXVlIGVsIEF1dG9yIE9yaWdpbmFsIHkvbyBlbCBMaWNlbmNpYW50ZSBodWJpZXJlbiBkZXNpZ25hZG8gcGFyYSBsYSBhdHJpYnVjacOzbiAodi5nLiwgdW4gaW5zdGl0dXRvIHBhdHJvY2luYWRvciwgZWRpdG9yaWFsLCBwdWJsaWNhY2nDs24pIGVuIGxhIGluZm9ybWFjacOzbiBkZSBsb3MgZGVyZWNob3MgZGUgYXV0b3IgZGVsIExpY2VuY2lhbnRlLCB0w6lybWlub3MgZGUgc2VydmljaW9zIG8gZGUgb3RyYXMgZm9ybWFzIHJhem9uYWJsZXM7IGVsIHTDrXR1bG8gZGUgbGEgT2JyYSBzaSBlc3TDoSBwcm92aXN0bzsgZW4gbGEgbWVkaWRhIGRlIGxvIHJhem9uYWJsZW1lbnRlIGZhY3RpYmxlIHksIHNpIGVzdMOhIHByb3Zpc3RvLCBlbCBJZGVudGlmaWNhZG9yIFVuaWZvcm1lIGRlIFJlY3Vyc29zIChVbmlmb3JtIFJlc291cmNlIElkZW50aWZpZXIpIHF1ZSBlbCBMaWNlbmNpYW50ZSBlc3BlY2lmaWNhIHBhcmEgc2VyIGFzb2NpYWRvIGNvbiBsYSBPYnJhLCBzYWx2byBxdWUgdGFsIFVSSSBubyBzZSByZWZpZXJhIGEgbGEgbm90YSBzb2JyZSBsb3MgZGVyZWNob3MgZGUgYXV0b3IgbyBhIGxhIGluZm9ybWFjacOzbiBzb2JyZSBlbCBsaWNlbmNpYW1pZW50byBkZSBsYSBPYnJhOyB5IGVuIGVsIGNhc28gZGUgdW5hIE9icmEgRGVyaXZhZGEsIGF0cmlidWlyIGVsIGNyw6lkaXRvIGlkZW50aWZpY2FuZG8gZWwgdXNvIGRlIGxhIE9icmEgZW4gbGEgT2JyYSBEZXJpdmFkYSAodi5nLiwgIlRyYWR1Y2Npw7NuIEZyYW5jZXNhIGRlIGxhIE9icmEgZGVsIEF1dG9yIE9yaWdpbmFsLCIgbyAiR3Vpw7NuIENpbmVtYXRvZ3LDoWZpY28gYmFzYWRvIGVuIGxhIE9icmEgb3JpZ2luYWwgZGVsIEF1dG9yIE9yaWdpbmFsIikuIFRhbCBjcsOpZGl0byBwdWVkZSBzZXIgaW1wbGVtZW50YWRvIGRlIGN1YWxxdWllciBmb3JtYSByYXpvbmFibGU7IGVuIGVsIGNhc28sIHNpbiBlbWJhcmdvLCBkZSBPYnJhcyBEZXJpdmFkYXMgdSBPYnJhcyBDb2xlY3RpdmFzLCB0YWwgY3LDqWRpdG8gYXBhcmVjZXLDoSwgY29tbyBtw61uaW1vLCBkb25kZSBhcGFyZWNlIGVsIGNyw6lkaXRvIGRlIGN1YWxxdWllciBvdHJvIGF1dG9yIGNvbXBhcmFibGUgeSBkZSB1bmEgbWFuZXJhLCBhbCBtZW5vcywgdGFuIGRlc3RhY2FkYSBjb21vIGVsIGNyw6lkaXRvIGRlIG90cm8gYXV0b3IgY29tcGFyYWJsZS4gPC9saT4KCiAgPGxpPiBQYXJhIGV2aXRhciB0b2RhIGNvbmZ1c2nDs24sIGVsIExpY2VuY2lhbnRlIGFjbGFyYSBxdWUsIGN1YW5kbyBsYSBvYnJhIGVzIHVuYSBjb21wb3NpY2nDs24gbXVzaWNhbDoKCiAgICA8b2wgdHlwZT0naSc+CgogICAgICA8bGk+IFJlZ2Fsw61hcyBwb3IgaW50ZXJwcmV0YWNpw7NuIHkgZWplY3VjacOzbiBiYWpvIGxpY2VuY2lhcyBnZW5lcmFsZXMuIEVsIExpY2VuY2lhbnRlIHNlIHJlc2VydmEgZWwgZGVyZWNobyBleGNsdXNpdm8gZGUgYXV0b3JpemFyIGxhIGVqZWN1Y2nDs24gcMO6YmxpY2EgbyBsYSBlamVjdWNpw7NuIHDDumJsaWNhIGRpZ2l0YWwgZGUgbGEgb2JyYSB5IGRlIHJlY29sZWN0YXIsIHNlYSBpbmRpdmlkdWFsbWVudGUgbyBhIHRyYXbDqXMgZGUgdW5hIHNvY2llZGFkIGRlIGdlc3Rpw7NuIGNvbGVjdGl2YSBkZSBkZXJlY2hvcyBkZSBhdXRvciB5IGRlcmVjaG9zIGNvbmV4b3MgKHBvciBlamVtcGxvLCBTQVlDTyksIGxhcyByZWdhbMOtYXMgcG9yIGxhIGVqZWN1Y2nDs24gcMO6YmxpY2EgbyBwb3IgbGEgZWplY3VjacOzbiBww7pibGljYSBkaWdpdGFsIGRlIGxhIG9icmEgKHBvciBlamVtcGxvIFdlYmNhc3QpIGxpY2VuY2lhZGEgYmFqbyBsaWNlbmNpYXMgZ2VuZXJhbGVzLCBzaSBsYSBpbnRlcnByZXRhY2nDs24gbyBlamVjdWNpw7NuIGRlIGxhIG9icmEgZXN0w6EgcHJpbW9yZGlhbG1lbnRlIG9yaWVudGFkYSBwb3IgbyBkaXJpZ2lkYSBhIGxhIG9idGVuY2nDs24gZGUgdW5hIHZlbnRhamEgY29tZXJjaWFsIG8gdW5hIGNvbXBlbnNhY2nDs24gbW9uZXRhcmlhIHByaXZhZGEuIDwvbGk+CgogICAgPGxpPiBSZWdhbMOtYXMgcG9yIEZvbm9ncmFtYXMuIEVsIExpY2VuY2lhbnRlIHNlIHJlc2VydmEgZWwgZGVyZWNobyBleGNsdXNpdm8gZGUgcmVjb2xlY3RhciwgaW5kaXZpZHVhbG1lbnRlIG8gYSB0cmF2w6lzIGRlIHVuYSBzb2NpZWRhZCBkZSBnZXN0acOzbiBjb2xlY3RpdmEgZGUgZGVyZWNob3MgZGUgYXV0b3IgeSBkZXJlY2hvcyBjb25leG9zIChwb3IgZWplbXBsbywgU0FZQ08pLCB1bmEgYWdlbmNpYSBkZSBkZXJlY2hvcyBtdXNpY2FsZXMgbyBhbGfDum4gYWdlbnRlIGRlc2lnbmFkbywgbGFzIHJlZ2Fsw61hcyBwb3IgY3VhbHF1aWVyIGZvbm9ncmFtYSBxdWUgVXN0ZWQgY3JlZSBhIHBhcnRpciBkZSBsYSBvYnJhICjigJx2ZXJzacOzbiBjb3ZlcuKAnSkgeSBkaXN0cmlidXlhLCBlbiBsb3MgdMOpcm1pbm9zIGRlbCByw6lnaW1lbiBkZSBkZXJlY2hvcyBkZSBhdXRvciwgc2kgbGEgY3JlYWNpw7NuIG8gZGlzdHJpYnVjacOzbiBkZSBlc2EgdmVyc2nDs24gY292ZXIgZXN0w6EgcHJpbW9yZGlhbG1lbnRlIGRlc3RpbmFkYSBvIGRpcmlnaWRhIGEgb2J0ZW5lciB1bmEgdmVudGFqYSBjb21lcmNpYWwgbyB1bmEgY29tcGVuc2FjacOzbiBtb25ldGFyaWEgcHJpdmFkYS4gPC9saT4KCiAgICA8L29sPjwvbGk+CgogIDxsaT4gR2VzdGnDs24gZGUgRGVyZWNob3MgZGUgQXV0b3Igc29icmUgSW50ZXJwcmV0YWNpb25lcyB5IEVqZWN1Y2lvbmVzIERpZ2l0YWxlcyAoV2ViQ2FzdGluZykuIFBhcmEgZXZpdGFyIHRvZGEgY29uZnVzacOzbiwgZWwgTGljZW5jaWFudGUgYWNsYXJhIHF1ZSwgY3VhbmRvIGxhIG9icmEgc2VhIHVuIGZvbm9ncmFtYSwgZWwgTGljZW5jaWFudGUgc2UgcmVzZXJ2YSBlbCBkZXJlY2hvIGV4Y2x1c2l2byBkZSBhdXRvcml6YXIgbGEgZWplY3VjacOzbiBww7pibGljYSBkaWdpdGFsIGRlIGxhIG9icmEgKHBvciBlamVtcGxvLCB3ZWJjYXN0KSB5IGRlIHJlY29sZWN0YXIsIGluZGl2aWR1YWxtZW50ZSBvIGEgdHJhdsOpcyBkZSB1bmEgc29jaWVkYWQgZGUgZ2VzdGnDs24gY29sZWN0aXZhIGRlIGRlcmVjaG9zIGRlIGF1dG9yIHkgZGVyZWNob3MgY29uZXhvcyAocG9yIGVqZW1wbG8sIEFjaW5wcm8pLCBsYXMgcmVnYWzDrWFzIHBvciBsYSBlamVjdWNpw7NuIHDDumJsaWNhIGRpZ2l0YWwgZGUgbGEgb2JyYSAocG9yIGVqZW1wbG8sIHdlYmNhc3QpLCBzdWpldGEgYSBsYXMgZGlzcG9zaWNpb25lcyBhcGxpY2FibGVzIGRlbCByw6lnaW1lbiBkZSBEZXJlY2hvIGRlIEF1dG9yLCBzaSBlc3RhIGVqZWN1Y2nDs24gcMO6YmxpY2EgZGlnaXRhbCBlc3TDoSBwcmltb3JkaWFsbWVudGUgZGlyaWdpZGEgYSBvYnRlbmVyIHVuYSB2ZW50YWphIGNvbWVyY2lhbCBvIHVuYSBjb21wZW5zYWNpw7NuIG1vbmV0YXJpYSBwcml2YWRhLiA8L2xpPgoKICAgIAoKICA8L29sPgoKICA8cD48c3Ryb25nPjUuIFJlcHJlc2VudGFjaW9uZXMsIEdhcmFudMOtYXMgeSBMaW1pdGFjaW9uZXMgZGUgUmVzcG9uc2FiaWxpZGFkLiA8L3N0cm9uZz48L3A+CgogIDxwPjxmb250IHNpemU9IjEiPkEgTUVOT1MgUVVFIExBUyBQQVJURVMgTE8gQUNPUkRBUkFOIERFIE9UUkEgRk9STUEgUE9SIEVTQ1JJVE8sIEVMIExJQ0VOQ0lBTlRFIE9GUkVDRSBMQSBPQlJBIChFTiBFTCBFU1RBRE8gRU4gRUwgUVVFIFNFIEVOQ1VFTlRSQSkg4oCcVEFMIENVQUzigJ0sIFNJTiBCUklOREFSIEdBUkFOVMONQVMgREUgQ0xBU0UgQUxHVU5BIFJFU1BFQ1RPIERFIExBIE9CUkEsIFlBIFNFQSBFWFBSRVNBLCBJTVBMw41DSVRBLCBMRUdBTCBPIENVQUxRVUlFUkEgT1RSQSwgSU5DTFVZRU5ETywgU0lOIExJTUlUQVJTRSBBIEVMTEFTLCBHQVJBTlTDjUFTIERFIFRJVFVMQVJJREFELCBDT01FUkNJQUJJTElEQUQsIEFEQVBUQUJJTElEQUQgTyBBREVDVUFDScOTTiBBIFBST1DDk1NJVE8gREVURVJNSU5BRE8sIEFVU0VOQ0lBIERFIElORlJBQ0NJw5NOLCBERSBBVVNFTkNJQSBERSBERUZFQ1RPUyBMQVRFTlRFUyBPIERFIE9UUk8gVElQTywgTyBMQSBQUkVTRU5DSUEgTyBBVVNFTkNJQSBERSBFUlJPUkVTLCBTRUFOIE8gTk8gREVTQ1VCUklCTEVTIChQVUVEQU4gTyBOTyBTRVIgRVNUT1MgREVTQ1VCSUVSVE9TKS4gQUxHVU5BUyBKVVJJU0RJQ0NJT05FUyBOTyBQRVJNSVRFTiBMQSBFWENMVVNJw5NOIERFIEdBUkFOVMONQVMgSU1QTMONQ0lUQVMsIEVOIENVWU8gQ0FTTyBFU1RBIEVYQ0xVU0nDk04gUFVFREUgTk8gQVBMSUNBUlNFIEEgVVNURUQuIDwvcD4KCiAgPHA+PHN0cm9uZz42LiBMaW1pdGFjacOzbiBkZSByZXNwb25zYWJpbGlkYWQuIDwvc3Ryb25nPjwvcD4KCiAgPHA+QSBNRU5PUyBRVUUgTE8gRVhJSkEgRVhQUkVTQU1FTlRFIExBIExFWSBBUExJQ0FCTEUsIEVMIExJQ0VOQ0lBTlRFIE5PIFNFUsOBIFJFU1BPTlNBQkxFIEFOVEUgVVNURUQgUE9SIERBw5FPIEFMR1VOTywgU0VBIFBPUiBSRVNQT05TQUJJTElEQUQgRVhUUkFDT05UUkFDVFVBTCwgUFJFQ09OVFJBQ1RVQUwgTyBDT05UUkFDVFVBTCwgT0JKRVRJVkEgTyBTVUJKRVRJVkEsIFNFIFRSQVRFIERFIERBw5FPUyBNT1JBTEVTIE8gUEFUUklNT05JQUxFUywgRElSRUNUT1MgTyBJTkRJUkVDVE9TLCBQUkVWSVNUT1MgTyBJTVBSRVZJU1RPUyBQUk9EVUNJRE9TIFBPUiBFTCBVU08gREUgRVNUQSBMSUNFTkNJQSBPIERFIExBIE9CUkEsIEFVTiBDVUFORE8gRUwgTElDRU5DSUFOVEUgSEFZQSBTSURPIEFEVkVSVElETyBERSBMQSBQT1NJQklMSURBRCBERSBESUNIT1MgREHDkU9TLiBBTEdVTkFTIExFWUVTIE5PIFBFUk1JVEVOIExBIEVYQ0xVU0nDk04gREUgQ0lFUlRBIFJFU1BPTlNBQklMSURBRCwgRU4gQ1VZTyBDQVNPIEVTVEEgRVhDTFVTScOTTiBQVUVERSBOTyBBUExJQ0FSU0UgQSBVU1RFRC4gPC9mb250PjwvcD4KCiAgPHA+PHN0cm9uZz43LiBUw6lybWlubzwvc3Ryb25nPi4gPHN0cm9uZz48L3N0cm9uZz48L3A+CgogIDxvbCB0eXBlPSdhJz4KCiAgICA8bGk+RXN0YSBMaWNlbmNpYSB5IGxvcyBkZXJlY2hvcyBvdG9yZ2Fkb3MgZW4gdmlydHVkIGRlIGVsbGEgdGVybWluYXLDoW4gYXV0b23DoXRpY2FtZW50ZSBzaSBVc3RlZCBpbmZyaW5nZSBhbGd1bmEgY29uZGljacOzbiBlc3RhYmxlY2lkYSBlbiBlbGxhLiBTaW4gZW1iYXJnbywgbG9zIGluZGl2aWR1b3MgbyBlbnRpZGFkZXMgcXVlIGhhbiByZWNpYmlkbyBPYnJhcyBEZXJpdmFkYXMgbyBDb2xlY3RpdmFzIGRlIFVzdGVkIGRlIGNvbmZvcm1pZGFkIGNvbiBlc3RhIExpY2VuY2lhLCBubyB2ZXLDoW4gdGVybWluYWRhcyBzdXMgbGljZW5jaWFzLCBzaWVtcHJlIHF1ZSBlc3RvcyBpbmRpdmlkdW9zIG8gZW50aWRhZGVzIHNpZ2FuIGN1bXBsaWVuZG8gw61udGVncmFtZW50ZSBsYXMgY29uZGljaW9uZXMgZGUgZXN0YXMgbGljZW5jaWFzLiBMYXMgU2VjY2lvbmVzIDEsIDIsIDUsIDYsIDcsIHkgOCBzdWJzaXN0aXLDoW4gYSBjdWFscXVpZXIgdGVybWluYWNpw7NuIGRlIGVzdGEgTGljZW5jaWEuIDwvbGk+CgogICAgPGxpPlN1amV0YSBhIGxhcyBjb25kaWNpb25lcyB5IHTDqXJtaW5vcyBhbnRlcmlvcmVzLCBsYSBsaWNlbmNpYSBvdG9yZ2FkYSBhcXXDrSBlcyBwZXJwZXR1YSAoZHVyYW50ZSBlbCBwZXLDrW9kbyBkZSB2aWdlbmNpYSBkZSBsb3MgZGVyZWNob3MgZGUgYXV0b3IgZGUgbGEgb2JyYSkuIE5vIG9ic3RhbnRlIGxvIGFudGVyaW9yLCBlbCBMaWNlbmNpYW50ZSBzZSByZXNlcnZhIGVsIGRlcmVjaG8gYSBwdWJsaWNhciB5L28gZXN0cmVuYXIgbGEgT2JyYSBiYWpvIGNvbmRpY2lvbmVzIGRlIGxpY2VuY2lhIGRpZmVyZW50ZXMgbyBhIGRlamFyIGRlIGRpc3RyaWJ1aXJsYSBlbiBsb3MgdMOpcm1pbm9zIGRlIGVzdGEgTGljZW5jaWEgZW4gY3VhbHF1aWVyIG1vbWVudG87IGVuIGVsIGVudGVuZGlkbywgc2luIGVtYmFyZ28sIHF1ZSBlc2EgZWxlY2Npw7NuIG5vIHNlcnZpcsOhIHBhcmEgcmV2b2NhciBlc3RhIGxpY2VuY2lhIG8gcXVlIGRlYmEgc2VyIG90b3JnYWRhICwgYmFqbyBsb3MgdMOpcm1pbm9zIGRlIGVzdGEgbGljZW5jaWEpLCB5IGVzdGEgbGljZW5jaWEgY29udGludWFyw6EgZW4gcGxlbm8gdmlnb3IgeSBlZmVjdG8gYSBtZW5vcyBxdWUgc2VhIHRlcm1pbmFkYSBjb21vIHNlIGV4cHJlc2EgYXRyw6FzLiBMYSBMaWNlbmNpYSByZXZvY2FkYSBjb250aW51YXLDoSBzaWVuZG8gcGxlbmFtZW50ZSB2aWdlbnRlIHkgZWZlY3RpdmEgc2kgbm8gc2UgbGUgZGEgdMOpcm1pbm8gZW4gbGFzIGNvbmRpY2lvbmVzIGluZGljYWRhcyBhbnRlcmlvcm1lbnRlLiA8L2xpPgoKICA8L29sPgoKICA8cD48c3Ryb25nPjguIFZhcmlvcy4gPC9zdHJvbmc+PC9wPgoKICA8b2wgdHlwZT0nYSc+CgogICAgPGxpPkNhZGEgdmV6IHF1ZSBVc3RlZCBkaXN0cmlidXlhIG8gcG9uZ2EgYSBkaXNwb3NpY2nDs24gcMO6YmxpY2EgbGEgT2JyYSBvIHVuYSBPYnJhIENvbGVjdGl2YSwgZWwgTGljZW5jaWFudGUgb2ZyZWNlcsOhIGFsIGRlc3RpbmF0YXJpbyB1bmEgbGljZW5jaWEgZW4gbG9zIG1pc21vcyB0w6lybWlub3MgeSBjb25kaWNpb25lcyBxdWUgbGEgbGljZW5jaWEgb3RvcmdhZGEgYSBVc3RlZCBiYWpvIGVzdGEgTGljZW5jaWEuIDwvbGk+CgogIDxsaT5TaSBhbGd1bmEgZGlzcG9zaWNpw7NuIGRlIGVzdGEgTGljZW5jaWEgcmVzdWx0YSBpbnZhbGlkYWRhIG8gbm8gZXhpZ2libGUsIHNlZ8O6biBsYSBsZWdpc2xhY2nDs24gdmlnZW50ZSwgZXN0byBubyBhZmVjdGFyw6EgbmkgbGEgdmFsaWRleiBuaSBsYSBhcGxpY2FiaWxpZGFkIGRlbCByZXN0byBkZSBjb25kaWNpb25lcyBkZSBlc3RhIExpY2VuY2lhIHksIHNpbiBhY2Npw7NuIGFkaWNpb25hbCBwb3IgcGFydGUgZGUgbG9zIHN1amV0b3MgZGUgZXN0ZSBhY3VlcmRvLCBhcXXDqWxsYSBzZSBlbnRlbmRlcsOhIHJlZm9ybWFkYSBsbyBtw61uaW1vIG5lY2VzYXJpbyA8c3Ryb25nPjwvc3Ryb25nPnBhcmEgaGFjZXIgcXVlIGRpY2hhIGRpc3Bvc2ljacOzbiBzZWEgdsOhbGlkYSB5IGV4aWdpYmxlLiA8L2xpPgoKICA8bGk+TmluZ8O6biB0w6lybWlubyBvIGRpc3Bvc2ljacOzbiBkZSBlc3RhIExpY2VuY2lhIHNlIGVzdGltYXLDoSByZW51bmNpYWRhIHkgbmluZ3VuYSB2aW9sYWNpw7NuIGRlIGVsbGEgc2Vyw6EgY29uc2VudGlkYSBhIG1lbm9zIHF1ZSBlc2EgcmVudW5jaWEgbyBjb25zZW50aW1pZW50byBzZWEgb3RvcmdhZG8gcG9yIGVzY3JpdG8geSBmaXJtYWRvIHBvciBsYSBwYXJ0ZSBxdWUgcmVudW5jaWUgbyBjb25zaWVudGEuIDwvbGk+CgogIDxsaT5Fc3RhIExpY2VuY2lhIHJlZmxlamEgZWwgYWN1ZXJkbyBwbGVubyBlbnRyZSBsYXMgcGFydGVzIHJlc3BlY3RvIGEgbGEgT2JyYSBhcXXDrSBsaWNlbmNpYWRhLiBObyBoYXkgYXJyZWdsb3MsIGFjdWVyZG9zIG8gZGVjbGFyYWNpb25lcyByZXNwZWN0byBhIGxhIE9icmEgcXVlIG5vIGVzdMOpbiBlc3BlY2lmaWNhZG9zIGVuIGVzdGUgZG9jdW1lbnRvLiBFbCBMaWNlbmNpYW50ZSBubyBzZSB2ZXLDoSBsaW1pdGFkbyBwb3IgbmluZ3VuYSBkaXNwb3NpY2nDs24gYWRpY2lvbmFsIHF1ZSBwdWVkYSBzdXJnaXIgZW4gYWxndW5hIGNvbXVuaWNhY2nDs24gZW1hbmFkYSBkZSBVc3RlZC4gRXN0YSBMaWNlbmNpYSBubyBwdWVkZSBzZXIgbW9kaWZpY2FkYSBzaW4gZWwgY29uc2VudGltaWVudG8gbXV0dW8gcG9yIGVzY3JpdG8gZGVsIExpY2VuY2lhbnRlIHkgVXN0ZWQuIDwvbGk+CgogIDwvb2w+Cgo8L2Rpdj4KPC9ib2R5Pgo8L2h0bWw+Cg==