Skip to Content
Inicio » Blog » ¿Cómo Obtengo una Copia de mi Reporte de Accidente en Florida?

Sep
2026

¿Cómo Obtengo una Copia de mi Reporte de Accidente en Florida?

on Accidentes de Auto
Prosper Shaked, abogado de lesiones personales

Escrito y revisado por
Abogado de lesiones personales, North Miami Beach
Actualizado el 24 de septiembre de 2026

Respuesta rápida: obtenga su reporte en minutos

En Florida, el reporte de accidente se llama oficialmente reporte de colisión (crash report). Esta guía le explica cómo conseguir una copia y cómo entender lo que dice. La forma más rápida es el Portal Oficial de Colisiones de la Florida, que administra el departamento estatal de seguridad vial (FLHSMV) y que tiene una versión en español. Un reporte cuesta $12 en línea: $10 de cargo estatal más $2 de cargo por conveniencia por cada transacción. Cuando el reporte ya está en el sistema y usted termina la compra, puede descargarlo de inmediato como un PDF dentro de un archivo ZIP. Si su aseguradora de auto o su abogado ya tienen una copia, también puede pedírsela a ellos. Importante: si el choque fue hace poco, es posible que el reporte todavía no aparezca. Según FLHSMV, los reportes pueden tardar hasta 10 días en estar disponibles, y si la investigación toma más tiempo, pueden tardar más.

¿Cuál es la mejor opción para usted?

Reciba la evaluación gratuita de su caso hoy; llámenos al (305) 694-2676 o contáctenos vía online mediante nuestro seguro formulario de contacto.
Representative

Conteste unas preguntas rápidas y le indicamos la mejor manera de obtener su reporte.

¿Usted estuvo involucrado en el accidente (manejando, de pasajero, a pie o en bicicleta)?


Cómprelo en línea ($12) y descárguelo al instante

El portal de colisiones de la Florida es su mejor opción. Si el reporte ya está disponible, lo tendrá en minutos. Siga la guía paso a paso que encontrará más abajo.

Llame a su compañía de seguros

Primero, revise si el intercambio de información entre conductores que le dieron en el lugar del accidente ya tiene lo que usted necesita. Muchas veces es suficiente para abrir su reclamación sin el reporte completo.

Si de verdad necesita el reporte completo y ya le avisó del choque a su aseguradora de auto, es posible que el ajustador tenga una copia o pueda conseguirla. Llame al número de reclamaciones que aparece en su tarjeta del seguro y pida que se la envíen por correo electrónico o por correo postal. Importante: no todas las aseguradoras la envían, y puede tardar varios días.

¿Lo necesita más rápido? Si ya está disponible, puede comprarlo en línea por $12.

Su abogado se lo consigue

Si ya contrató a un abogado de accidentes de auto, su oficina comprará el reporte en cuanto esté disponible. Pídales una copia.

Si todavía no tiene abogado, con gusto le damos una copia del reporte durante la consulta. Llámenos al (305) 694-2676.

Es posible que igual tenga derecho

La ley de Florida permite que otras personas también obtengan reportes de colisión, entre ellas los abogados de las partes, sus aseguradoras y sus agentes de seguros con licencia. Las estaciones de radio y televisión con licencia de la FCC y ciertos periódicos pueden recibir una versión sin algunos datos personales, como direcciones, números de licencia, fechas de nacimiento y teléfonos. A partir de los 60 días de presentado, el reporte también puede entregarse para los usos que permite la ley federal de protección de la privacidad del conductor (DPPA). Entre al portal de colisiones de la Florida y, en la página de elegibilidad, seleccione la opción que le corresponde.

Intercambio de información vs. reporte de colisión: ¿cuál es la diferencia?

Mucha gente confunde la hoja que le dio el policía en el lugar del accidente con el reporte oficial de colisión. Son dos documentos distintos y cada uno sirve para algo diferente.

Se entrega en el lugar

Intercambio de información entre conductores (Driver Exchange of Information)

  • Se lo entrega el policía ahí mismo
  • Nombres y direcciones de los conductores y de los dueños de los vehículos
  • Números de póliza de seguro
  • Fecha, hora y lugar del accidente
  • Gratis: usted ya lo tiene
Se prepara después

Reporte de colisión de Florida (Florida Crash Report)

  • Lo completa el policía después de investigar
  • Descripción y diagrama de cómo ocurrió el choque
  • Nombres, direcciones y teléfonos de los testigos
  • Multas o infracciones de tránsito que se hayan puesto
  • $12: se compra en el portal de colisiones de la Florida

En resumen: el intercambio de información trae lo necesario para abrir una reclamación con el seguro. El reporte de colisión sirve sobre todo cuando hay desacuerdo sobre cómo pasó el accidente, cuando usted necesita los datos de los testigos o cuando su abogado lo necesita para el caso.

Antes de empezar: lo que va a necesitar

Tenga esto a la mano antes de comprar su reporte en línea.

  • ✓Su número de licencia de conducir (el portal lo pide como prueba de elegibilidad)
  • ✓Apellido de uno de los conductores involucrados
  • ✓Fecha aproximada del choque
  • ✓Tarjeta de crédito o débito para pagar ($12.00 por un reporte)
  • ✓Correo electrónico (para el código de acceso y el enlace de descarga)
✅ ¡Todo listo! Siga la guía paso a paso que aparece abajo para comprar su reporte.

Paso a paso: cómo comprar un reporte de colisión de Florida

Reciba la evaluación gratuita de su caso hoy; llámenos al (305) 694-2676 o contáctenos vía online mediante nuestro seguro formulario de contacto.
Representative

Paso 1 de 11

Entre al portal en español

Vaya a services.flhsmv.gov/CrashReportPurchasing/es. Si el portal se abre en inglés, haga clic en Español, arriba a la derecha. Verá la página de Información importante, con los cargos y los requisitos.

Léala y haga clic en el botón “Acepto”, abajo a la derecha.

Paso 1 de 11
Página de Información importante del portal de colisiones de FLHSMV, con los cargos y el botón Acepto
Haga clic para ampliar

Indique por qué tiene derecho al reporte

En la página de Elegibilidad, marque la opción que lo describe:

  • “Partes involucradas en la colisión”: si usted manejaba o iba de pasajero
  • “Representantes Legales de una de las partes involucradas en la colisión”: si usted es el abogado o representante legal de una de las partes

Más abajo, la página muestra una segunda lista con los usos que permite la ley federal de privacidad del conductor (DPPA). El portal pide una sola selección en toda la página, así que si ya marcó una opción arriba, no marque otra en esa lista.

Después, en Prueba de elegibilidad, escoja el estado que emitió su licencia de conducir y escriba el número. Haga clic en “Acepto”.

Paso 2 de 11
Página de Elegibilidad con las opciones de exención según la sección 316.066(2)(b)
Haga clic para ampliar
Paso 2 de 11 (continuación)
Sección de usos permitidos de la DPPA, campos de Prueba de elegibilidad y botones No acepto y Acepto
Haga clic para ampliar

Escoja cómo buscar

El portal le da tres maneras de encontrar su reporte: Número de reporte, VIN o Apellido. Le recomendamos buscar por Apellido, que es la más sencilla.

Más abajo en esta página encontrará los detalles de cada forma de búsqueda.

Paso 3 de 11
Pantalla ¿Cómo le gustaría buscar? con las opciones Número de reporte, VIN y Apellido
Haga clic para ampliar

Escriba los datos de búsqueda

Si busca por Apellido: escriba el apellido de una persona involucrada en el accidente y la fecha del choque. Si no está seguro del día exacto, marque la casilla “+/- 3 días”. El campo Condado es opcional. Luego escriba los caracteres que aparecen en la imagen.

Cuando esté listo, haga clic en “Buscar”.

Paso 4 de 11
Buscador de reportes de colisiones con los campos de apellido, fecha, condado y la imagen de verificación
Haga clic para ampliar

Encuentre su reporte y agréguelo al carrito

Revise los resultados. En condados grandes como Miami-Dade o Broward, un apellido común puede dar muchos resultados. Fíjese en la calle donde ocurrió su accidente para dar con el reporte correcto.

Haga clic en “Agregar al carrito de compras” junto al reporte que corresponde.

Paso 5 de 11
Resultados de la búsqueda con los botones Agregar al carrito de compras; los datos personales están tapados
Haga clic para ampliar

Abra el carrito de compras

Al agregar el reporte, el ícono del carrito, arriba a la derecha, muestra cuántos reportes lleva y el precio ($10.00 por reporte; el cargo de $2.00 se suma más adelante). Haga clic en el carrito para continuar.

Paso 6 de 11
Barra superior del portal con el ícono del carrito, que muestra 1 reporte por $10.00
Haga clic para ampliar

Escriba su correo y pida un código de acceso

Escriba el correo electrónico donde quiere recibir el enlace de descarga y haga clic en “Generar un código de acceso”. Le llegará un correo de FLHSMV con un código de un solo uso.

Paso 7 de 11
Pantalla Verifique su correo electrónico con el botón Generar un código de acceso
Haga clic para ampliar

Escriba el código de acceso

Escriba el código que recibió y haga clic en “Enviar”. Tiene 30 minutos para hacerlo. Si el correo no le llega, use el enlace “Reenviar código de acceso”.

Paso 8 de 11
Pantalla Compruebe su correo electrónico con el campo del código de acceso y el botón Enviar
Haga clic para ampliar

Revise el carrito

Confirme que el reporte que aparece es el de su accidente. Ahí verá el desglose: subtotal de $10.00, cargo por conveniencia de $2.00 y total de $12.00. Si todo está bien, haga clic en “Proceder a pagar”.

Paso 9 de 11
Pantalla Revise el carrito de compras con el total de $12.00 y el botón Proceder a pagar; los datos personales están tapados
Haga clic para ampliar

Llene sus datos y pague

Primero llene la Información del Cliente: país, nombre completo, dirección, ciudad, estado y código postal. Haga clic en “Continuar”.

Paso 10 de 11
Formulario de Información del Cliente con el botón Continuar
Haga clic para ampliar

Después escriba la Información de pago: número de la tarjeta, mes y año de vencimiento, código de seguridad y nombre que aparece en la tarjeta. Haga clic en “Continuar”, revise los datos en la sección de Verificación y complete el pago.

Paso 10 de 11 (continuación)
Formulario de Información de pago con los campos de la tarjeta y el botón Continuar
Haga clic para ampliar

Descargue su reporte

Cuando el pago se procesa, el portal le da la opción de Descargar. El reporte llega como un archivo ZIP con el PDF adentro. Además, FLHSMV le envía un enlace de descarga al correo que usted indicó. Tiene 48 horas para descargarlo.

Si el portal lo regresa una y otra vez a la página de pago: no vuelva a pagar. El portal verifica la elegibilidad reporte por reporte, y es posible que no entregue un reporte si usted no aparece en él ni representa a alguien que aparezca. En ese caso, deténgase y comuníquese con FLHSMV antes de intentarlo de nuevo.

Las tres formas de búsqueda

El portal de colisiones de la Florida le permite buscar su reporte de cualquiera de estas tres maneras:



Buscar por apellido (recomendado)

Escriba el apellido de cualquier conductor o dueño de vehículo involucrado en el choque. También tiene que poner la fecha del choque y escribir los caracteres de la imagen de verificación. Si no recuerda el día exacto, la casilla “+/- 3 días” amplía la búsqueda.

El campo de condado es opcional, pero ayuda a reducir los resultados cuando el apellido es común.

Consejo: si aparecen varios resultados, compare la calle donde ocurrió su accidente para escoger el reporte correcto.

Buscar por VIN

Escriba el número de identificación del vehículo (VIN) de cualquiera de los vehículos involucrados. El VIN aparece en el registro del vehículo, en la tarjeta del seguro o en una placa metálica en la base del parabrisas, del lado del conductor.

Consejo: esta opción sirve cuando la búsqueda por apellido no da resultados. A veces un error de ortografía en el reporte del policía impide encontrarlo por el apellido, y el VIN suele ser una forma más exacta de dar con él.

Buscar por número de reporte

Si el policía que atendió el choque le dio un número de reporte, puede escribirlo directamente. Es la búsqueda más rápida, porque da un resultado exacto.

Consejo: casi siempre, el número de reporte viene impreso en la hoja de intercambio de información que le dio el policía en el lugar del accidente. Ojo: no es lo mismo que el número de caso de la policía o del alguacil.

Cómo leer su reporte de colisión de Florida

El reporte oficial viene en inglés. Aquí le explicamos qué significa cada sección y dónde está la información más importante. Entre paréntesis ponemos el nombre en inglés tal como aparece en el formulario.

La parte de arriba de la primera página trae los datos básicos del choque:

  • Número de reporte del estado (HSMV Crash Report Number): el número único que asigna el estado. Sirve para buscar el reporte o hacer referencia a él más adelante.
  • Número de caso de la agencia (Reporting Agency Case Number): el número interno de la policía local o de la oficina del alguacil. Úselo si necesita comunicarse con la agencia que atendió el choque.
  • Fecha y hora del choque (Crash Date & Time): cuándo ocurrió el accidente. Confirme que coincidan con lo que usted recuerda.
  • Condado y ciudad del choque (County/City of Crash): dónde ocurrió el accidente. El condado donde fue el choque es uno de los lugares donde se puede presentar una demanda. En general, la ley de Florida también permite presentarla donde vive la parte demandada.
  • Formulario largo o corto (Long Form / Short Form): el formulario largo es obligatorio cuando el choque causó una muerte o una lesión, o alguien dijo sentir dolor o malestar; cuando alguien manejaba bajo los efectos del alcohol o de drogas (DUI) o se fue del lugar; cuando un vehículo quedó sin poder moverse y hubo que sacarlo con grúa, o cuando participó un vehículo comercial. En los demás choques en vías públicas, el policía debe llenar el formulario corto o entregar el intercambio de información para que lo completen los conductores y pasajeros. El reporte que hace el propio conductor (driver self-report) es otro documento: cuando un choque solo causó daños a vehículos u otra propiedad y no se requiere reporte de la policía, el conductor debe enviárselo a FLHSMV dentro de los 10 días siguientes.

Esta sección describe las condiciones al momento del choque. Los ajustadores de seguros y los abogados la revisan con cuidado, porque el estado de la vía y el clima pueden influir en quién tuvo la culpa:

  • Superficie de la vía (Roadway Surface Condition): si la calle estaba seca, mojada, con hielo o con escombros. Cada condición tiene un código numérico en el formulario (por ejemplo, 1 = seca, 2 = mojada).
  • Clima (Weather Condition): despejado, nublado, lluvia, neblina, etc. El mal tiempo no justifica manejar de forma negligente, pero da contexto.
  • Iluminación (Light Condition): de día, al atardecer, al amanecer o de noche (con o sin alumbrado). Importa en los choques relacionados con la visibilidad.
  • Tipo de intersección (Type of Intersection): si el choque fue en un cruce de cuatro vías, en una intersección en T, en una rotonda o fuera de una intersección. Ayuda a establecer quién tenía el derecho de paso.
  • Tipo de choque (Manner of Collision): cómo se golpearon los vehículos: por detrás, en ángulo, de lado, de frente, etc. Por ejemplo, en un choque por detrás (Front to Rear), la ley de Florida parte de la presunción de que el conductor de atrás fue descuidado, pero con pruebas se puede demostrar que no fue así.

Cada vehículo involucrado tiene su propia sección. Ahí encontrará:

  • Número de vehículo (Vehicle Number: 1, 2, etc.): el policía le asigna un número a cada vehículo. Esos números corresponden al diagrama, así que el “Vehicle 1” de la narración es el mismo “V1” del diagrama.
  • Nombre, dirección, fecha de nacimiento y número de licencia del conductor: los datos que identifican a cada conductor. Revise que estén bien: los errores de ortografía son comunes y pueden causar problemas después.
  • Información del seguro (Insurance): el número de póliza y la compañía de seguros de cada vehículo. Es lo que va a necesitar para abrir una reclamación.
  • Año, marca, modelo y VIN del vehículo: identifican el vehículo exacto. Sirven para confirmar que los vehículos que aparecen son los correctos.
  • Área dañada (Vehicle Damage Area): un diagrama con códigos que muestra en qué parte del vehículo está el daño (frente, parte trasera, lado izquierdo, etc.).
  • Factor que contribuyó al choque (Contributing Cause): la evaluación del policía sobre lo que hizo mal cada conductor, si es que hizo algo. Algunos códigos comunes son “Failed to yield right-of-way” (no cedió el paso), “Careless driving” (manejo descuidado), “Followed too closely” (iba demasiado cerca) y “No improper action” (ninguna acción indebida). Es uno de los campos que más pesan a la hora de determinar la culpa.
Importante: el factor que anota el policía no es una decisión legal sobre quién tuvo la culpa; es su evaluación inicial. Se puede cuestionar, aunque las compañías de seguros se basan mucho en él.

Cada persona involucrada (conductores, pasajeros, peatones y ciclistas) aparece con estos datos:

  • Gravedad de la lesión (Injury Severity): se clasifica con los códigos del formulario de reporte de colisión de Florida:
    • 1 – None: sin lesiones
    • 2 – Possible: la persona dijo sentir dolor, pero no hay una lesión visible
    • 3 – Non-Incapacitating: lesión visible (moretones, cortaduras), pero la persona puede valerse por sí misma
    • 4 – Incapacitating: lesión grave que impide la actividad normal (huesos rotos, etc.)
    • 5 – Fatal (within 30 days): la persona murió por el choque dentro de los 30 días siguientes
    • 6 – Non-Traffic Fatality: una muerte que consta en el reporte pero que no fue causada por el choque
  • Posición en el vehículo (Seating Position): dónde iba sentada la persona. Puede ser importante en una reclamación por lesiones.
  • Equipo de seguridad (Safety Equipment): si la persona llevaba puesto el cinturón, si iba en una silla de seguridad para niños o si llevaba casco. En algunos casos, las leyes de Florida sobre el cinturón de seguridad pueden influir en la culpa compartida.
  • Transportado por (Transported By): si a la persona la llevaron al hospital en ambulancia, en helicóptero o en un vehículo particular, y a qué hospital. Esto deja constancia de la atención médica inmediata.

El diagrama es un dibujo, hecho a mano o en computadora por el policía que investigó, que muestra:

  • La vía: la forma de la calle, los carriles, las intersecciones y las señales de tránsito (señales de pare, semáforos)
  • La posición de los vehículos: dónde estaba cada vehículo antes, durante y después del impacto, marcados como V1, V2, etc.
  • La dirección: flechas que indican hacia dónde iba cada vehículo
  • El punto de impacto: casi siempre marcado con una “X” o con las letras “POI”
  • La posición final: dónde quedaron los vehículos después del choque
  • La flecha del norte: la orientación, para que usted entienda el dibujo
Consejo: compare el diagrama con lo que usted recuerda del choque. Si no coincide con lo que pasó, dígaselo a su abogado: los diagramas a veces tienen errores, sobre todo en choques de varios vehículos.

La narración (narrative) es el resumen escrito del policía sobre cómo ocurrió el choque. Muchas veces es la sección más importante de todo el reporte, porque cuenta lo que pasó en palabras sencillas. Fíjese en:

  • El orden de los hechos: qué pasó primero, qué pasó después. El policía describe lo que hizo cada vehículo antes del choque.
  • Las frases sobre la culpa: frases como “Vehicle 1 failed to yield” (el vehículo 1 no cedió el paso) o “Driver 2 was traveling at a high rate of speed” (el conductor 2 iba a alta velocidad) muestran a quién considera responsable el policía.
  • Lo que dijeron los conductores: el policía puede citar lo que dijo cada conductor en el lugar. Es posible que lo que usted le dijo al policía aparezca aquí. Según la ley de Florida, lo que un conductor le dice al policía para completar el reporte por lo general no se puede usar como prueba en un juicio, aunque hay excepciones.
  • Lo que dijeron los testigos: un resumen de lo que vieron los testigos, que puede respaldar o contradecir la versión de los conductores.
Importante: la narración refleja la interpretación del policía según lo que vio en el lugar. Si usted cree que tiene errores, un abogado puede ayudarle a reunir más pruebas (videos de seguridad, entrevistas con testigos, reconstrucción del accidente) para cuestionarla.

Si a algún conductor le pusieron una multa de tránsito en el lugar, el reporte lo indica. Esta sección muestra:

  • El estatuto de Florida que se violó: la ley específica que, según el policía, el conductor violó (por ejemplo, 316.0895 por ir demasiado cerca, 316.123 por no ceder el paso)
  • A qué conductor multaron: corresponde a los números de vehículo (V1, V2)
  • La descripción del cargo: una explicación sencilla de la infracción

Una multa no prueba quién tuvo la culpa. Por lo general, la ley de Florida no permite usar las multas de tránsito como prueba en un juicio, aunque los ajustadores de seguros sí las toman en cuenta. Y que no haya multa no quiere decir que el conductor no tuvo la culpa: a veces el policía decide no poner multa aunque haya habido una infracción.

El reporte incluye los nombres, direcciones y teléfonos de los testigos con los que habló el policía en el lugar. Esta información vale mucho porque:

  • Los testigos independientes que vieron el choque pueden respaldar su versión de los hechos
  • Si los datos de un testigo no quedan en el reporte, puede ser difícil o imposible conseguirlos después
  • Su abogado puede entrevistar a los testigos para armar un caso más sólido
Nota: no todos los testigos aparecen. Algunos se van antes de que el policía pueda hablar con ellos. Si usted sabe de un testigo que no está en el reporte, anote sus datos cuanto antes.

Preguntas frecuentes

Llame a su compañía de seguros de auto y pida que le envíen una copia del reporte. Las aseguradoras suelen conseguir el reporte de colisión cuando atienden una reclamación, así que puede que el ajustador se lo mande por correo electrónico o por correo postal. No están obligadas a hacerlo y no hay garantía. También puede pedir una copia por correo a FLHSMV o en persona en la estación de la Patrulla de Carreteras de la Florida (Florida Highway Patrol) más cercana al lugar del choque. En esos casos también se paga el cargo estatal, y las solicitudes por correo tardan de cuatro a seis semanas. El departamento de policía o la oficina del alguacil que atendió el choque también puede tener una copia.

Aviso: muchas compañías de seguros son muy lentas, y puede que tenga que esperar varios días para recibir el reporte. Si lo compra directamente en el portal de colisiones de la Florida, puede descargarlo en cuanto termine la compra.

En la mayoría de los casos, no necesita una copia del reporte. Si tuvo un accidente en Florida, el policía que lo atendió debió darles a todas las partes una hoja impresa de intercambio de información entre conductores. Esa hoja trae todo lo necesario para abrir una reclamación con el seguro, entre otras cosas:

  • Fecha y hora del accidente
  • Lugar del accidente
  • Nombres y direcciones de los conductores involucrados
  • Nombres y direcciones de los dueños de los vehículos
  • Números de póliza de seguro de los vehículos involucrados

Pero el reporte sí sirve cuando no está claro cómo pasó el accidente, porque trae más detalles, por ejemplo:

  • Una descripción de cómo ocurrió el accidente
  • Un diagrama que muestra cómo ocurrió
  • Nombres, direcciones y teléfonos de los testigos que el policía identificó
  • Una descripción de las multas de tránsito que se hayan puesto

No. Si contrata a un abogado de accidentes de auto para que lo represente por las lesiones que sufrió, su abogado comprará una copia del reporte en cuanto aparezca en el portal de colisiones de la Florida. Si usted quiere una copia, su abogado debería dársela.

Según la sección 316.066 de los Estatutos de la Florida, la policía tiene que presentar el formulario largo del reporte (Long Form) dentro de los 10 días después de terminar la investigación. FLHSMV indica que los reportes pueden tardar hasta 10 días en estar disponibles, y los choques más complicados (varios vehículos, lesiones graves, muertes) pueden tomar más tiempo de investigación antes de que siquiera empiece a correr ese plazo de 10 días.

Si el choque fue hace poco y no encuentra el reporte, vuelva a buscarlo cada día. Aparecerá cuando el policía termine la investigación y lo presente. No dé por hecho que se perdió porque no aparece después de uno o dos días.

En algunos casos puede tardar más de 10 días. Si después de 10 días todavía no aparece, llame a la oficina de registros (Records Division) de la agencia que atendió su accidente, ya sea el departamento de policía local, la oficina del alguacil del condado o la Patrulla de Carreteras de la Florida. Ahí le pueden decir si el reporte todavía está en proceso o si hay un error al ingresar los datos (como un nombre mal escrito) que impide que aparezca en su búsqueda.

Respuestas escritas y revisadas por Prosper Shaked, abogado de lesiones personales.

¿Se lesionó en un accidente de auto en Florida?

Si usted se lesionó en un choque y está pensando qué hacer, con gusto le conseguimos una copia del reporte de colisión sin costo como parte de su consulta gratis. Si el reporte ya está disponible, durante la consulta se lo enviamos por correo electrónico o, si prefiere, por mensaje de texto, le explicamos lo que significa para usted y le aconsejamos sobre sus opciones.

Llame al (305) 694-2676 para una consulta gratis

Captura de pantalla ampliada

LyogPT09PT0gU0NPUEVEIFNUWUxFUyDigJQgYWxsIHVuZGVyIC5wcm9zcGVyLWludGVyYWN0aXZlLXBvc3QgPT09PT0gKi8KCi8qIEhpZGUgdGhlbWUtaW5qZWN0ZWQgQ1RBIGluc2lkZSB0aGlzIHBvc3QgKi8KLnByb3NwZXItaW50ZXJhY3RpdmUtcG9zdCAubC1jb250YWluZXIsCi5wcm9zcGVyLWludGVyYWN0aXZlLXBvc3QgLnRleHQtY29udGVudCAudHJpYW5nbGUgewogIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKfQoucHJvc3Blci1pbnRlcmFjdGl2ZS1wb3N0IHsKICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAiU2Vnb2UgVUkiLCBSb2JvdG8sIE94eWdlbiwgVWJ1bnR1LCBzYW5zLXNlcmlmOwogIGNvbG9yOiAjMzMzOwogIGxpbmUtaGVpZ2h0OiAxLjc7CiAgbWF4LXdpZHRoOiA4MjBweDsKICBtYXJnaW46IDAgYXV0bzsKICBwYWRkaW5nOiAyMHB4Owp9Ci5wcm9zcGVyLWludGVyYWN0aXZlLXBvc3QgKiwKLnByb3NwZXItaW50ZXJhY3RpdmUtcG9zdCAqOjpiZWZvcmUsCi5wcm9zcGVyLWludGVyYWN0aXZlLXBvc3QgKjo6YWZ0ZXIgewogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KLnByb3NwZXItaW50ZXJhY3RpdmUtcG9zdCBidXR0b246Zm9jdXMsCi5wcm9zcGVyLWludGVyYWN0aXZlLXBvc3QgYTpmb2N1cywKLnByb3NwZXItaW50ZXJhY3RpdmUtcG9zdCBsaTpmb2N1cyB7CiAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50OwogIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsKfQoucHJvc3Blci1pbnRlcmFjdGl2ZS1wb3N0IGgyIHsKICBjb2xvcjogIzFiM2E1YyAhaW1wb3J0YW50OwogIGZvbnQtc2l6ZTogMS42cmVtICFpbXBvcnRhbnQ7CiAgbWFyZ2luOiAycmVtIDAgMXJlbSAhaW1wb3J0YW50OwogIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjZThlY2YxICFpbXBvcnRhbnQ7CiAgcGFkZGluZy1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50Owp9Ci5wcm9zcGVyLWludGVyYWN0aXZlLXBvc3QgaDMgewogIGNvbG9yOiAjMWIzYTVjICFpbXBvcnRhbnQ7CiAgZm9udC1zaXplOiAxLjI1cmVtICFpbXBvcnRhbnQ7CiAgbWFyZ2luOiAxLjVyZW0gMCAwLjc1cmVtICFpbXBvcnRhbnQ7Cn0KLnByb3NwZXItaW50ZXJhY3RpdmUtcG9zdCBwIHsKICBtYXJnaW46IDAgMCAxcmVtOwp9Ci5wcm9zcGVyLWludGVyYWN0aXZlLXBvc3QgYSB7CiAgY29sb3I6ICMxYjNhNWM7CiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Cn0KLnByb3NwZXItaW50ZXJhY3RpdmUtcG9zdCBhOmhvdmVyIHsKICBjb2xvcjogIzI5ODBiOTsKfQoKLyogLS0tLS0tLS0tLSBRVUlDSyBBTlNXRVIgSEVSTyBCT1ggLS0tLS0tLS0tLSAqLwoucGlwLWhlcm8tYm94IHsKICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMWIzYTVjIDAlLCAjMjM0YjczIDEwMCUpOwogIGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7CiAgYm9yZGVyLXJhZGl1czogMTJweDsKICBwYWRkaW5nOiAyOHB4IDMycHg7CiAgbWFyZ2luLWJvdHRvbTogMnJlbTsKICBib3gtc2hhZG93OiAwIDRweCAyMHB4IHJnYmEoMjcsNTgsOTIsMC4xOCk7Cn0KLnBpcC1oZXJvLWJveCBoMiB7CiAgZm9udC1zaXplOiAxLjc1cmVtOwogIG1hcmdpbjogMCAwIDEycHg7CiAgY29sb3I6ICNmZmYgIWltcG9ydGFudDsKICBsaW5lLWhlaWdodDogMS4zOwogIGJvcmRlci1ib3R0b206IG5vbmU7CiAgcGFkZGluZy1ib3R0b206IDA7Cn0KLnBpcC1oZXJvLWJveCAucGlwLWhlcm8tYW5zd2VyIHsKICBmb250LXNpemU6IDEuMDVyZW07CiAgbWFyZ2luLWJvdHRvbTogMThweDsKICBjb2xvcjogI2ZmZiAhaW1wb3J0YW50OwogIG9wYWNpdHk6IDE7CiAgbGluZS1oZWlnaHQ6IDEuNjsKfQoucGlwLWhlcm8tYm94IC5waXAtaGVyby1hY3Rpb25zIHsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtd3JhcDogd3JhcDsKICBnYXA6IDEycHg7Cn0KLnBpcC1oZXJvLWJveCAucGlwLWJ0biB7CiAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBnYXA6IDhweDsKICBwYWRkaW5nOiAxMnB4IDI0cHg7CiAgYm9yZGVyLXJhZGl1czogOHB4OwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgZm9udC1zaXplOiAwLjk1cmVtOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xNXMsIGJveC1zaGFkb3cgMC4xNXM7CiAgY3Vyc29yOiBwb2ludGVyOwogIGJvcmRlcjogbm9uZTsKfQoucGlwLWhlcm8tYm94IC5waXAtYnRuOmhvdmVyIHsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7CiAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsMCwwLDAuMik7Cn0KLnBpcC1idG4tcHJpbWFyeSB7CiAgYmFja2dyb3VuZDogI2ZmZjsKICBjb2xvcjogIzFiM2E1YyAhaW1wb3J0YW50Owp9CgovKiAtLS0tLS0tLS0tIERFQ0lTSU9OIFRPT0wgLS0tLS0tLS0tLSAqLwoucGlwLWRlY2lzaW9uLXRvb2wgewogIGJhY2tncm91bmQ6ICNmN2Y5ZmI7CiAgYm9yZGVyOiAycHggc29saWQgI2UwZTdlZjsKICBib3JkZXItcmFkaXVzOiAxMnB4OwogIHBhZGRpbmc6IDI4cHggMzJweDsKICBtYXJnaW4tYm90dG9tOiAycmVtOwp9Ci5waXAtZGVjaXNpb24tdG9vbCBoMiB7CiAgYm9yZGVyOiBub25lOwogIHBhZGRpbmc6IDA7CiAgbWFyZ2luLXRvcDogMDsKICBmb250LXNpemU6IDEuMzVyZW07Cn0KLnBpcC1kZWNpc2lvbi1xdWVzdGlvbiB7CiAgZm9udC1zaXplOiAxLjA1cmVtOwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgbWFyZ2luLWJvdHRvbTogMTJweDsKICBjb2xvcjogIzFiM2E1YzsKfQoucGlwLWRlY2lzaW9uLW9wdGlvbnMgewogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBnYXA6IDEwcHg7CiAgbWFyZ2luLWJvdHRvbTogOHB4Owp9Ci5waXAtZGVjaXNpb24tYnRuIHsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMTAwJTsKICB0ZXh0LWFsaWduOiBsZWZ0OwogIHBhZGRpbmc6IDE0cHggMjBweDsKICBib3JkZXI6IDJweCBzb2xpZCAjZDBkOGU0ICFpbXBvcnRhbnQ7CiAgYm9yZGVyLXJhZGl1czogOHB4OwogIGJhY2tncm91bmQ6ICNmZmYgIWltcG9ydGFudDsKICBmb250LXNpemU6IDAuOTVyZW07CiAgY3Vyc29yOiBwb2ludGVyOwogIHRyYW5zaXRpb246IGFsbCAwLjE1czsKICBjb2xvcjogIzMzMyAhaW1wb3J0YW50OwogIGZvbnQtZmFtaWx5OiBpbmhlcml0Owp9Ci5waXAtZGVjaXNpb24tYnRuOmhvdmVyIHsKICBib3JkZXItY29sb3I6ICMxYjNhNWM7CiAgYmFja2dyb3VuZDogI2YwZjRmODsKfQoucGlwLWRlY2lzaW9uLWJ0bi5zZWxlY3RlZCB7CiAgYm9yZGVyLWNvbG9yOiAjMWIzYTVjOwogIGJhY2tncm91bmQ6ICNlYWYwZjc7CiAgZm9udC13ZWlnaHQ6IDYwMDsKfQoucGlwLWRlY2lzaW9uLXJlc3VsdCB7CiAgYmFja2dyb3VuZDogI2ZmZjsKICBib3JkZXI6IDJweCBzb2xpZCAjMWIzYTVjOwogIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgcGFkZGluZzogMjBweCAyNHB4OwogIG1hcmdpbi10b3A6IDE2cHg7CiAgZGlzcGxheTogbm9uZTsKfQoucGlwLWRlY2lzaW9uLXJlc3VsdC52aXNpYmxlIHsKICBkaXNwbGF5OiBibG9jazsKICBhbmltYXRpb246IHBpcEZhZGVJbiAwLjNzIGVhc2U7Cn0KLnBpcC1kZWNpc2lvbi1yZXN1bHQgaDMgewogIG1hcmdpbi10b3A6IDA7CiAgY29sb3I6ICMxYjNhNWM7Cn0KLnBpcC1kZWNpc2lvbi1yZXN0YXJ0IHsKICBtYXJnaW4tdG9wOiAxMnB4OwogIHBhZGRpbmc6IDhweCAxNnB4OwogIGJhY2tncm91bmQ6ICNmMGY0ZjggIWltcG9ydGFudDsKICBib3JkZXI6IDFweCBzb2xpZCAjZDBkOGU0ICFpbXBvcnRhbnQ7CiAgYm9yZGVyLXJhZGl1czogNnB4OwogIGN1cnNvcjogcG9pbnRlcjsKICBmb250LXNpemU6IDAuODVyZW07CiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgY29sb3I6ICM1NTU7Cn0KLnBpcC1kZWNpc2lvbi1yZXN0YXJ0OmhvdmVyIHsKICBiYWNrZ3JvdW5kOiAjZTRlYWYwOwp9CgovKiAtLS0tLS0tLS0tIENIRUNLTElTVCAtLS0tLS0tLS0tICovCi5waXAtY2hlY2tsaXN0IHsKICBiYWNrZ3JvdW5kOiAjZmZmYmYwOwogIGJvcmRlcjogMnB4IHNvbGlkICNmMGU0YzQ7CiAgYm9yZGVyLXJhZGl1czogMTJweDsKICBwYWRkaW5nOiAyNHB4IDI4cHg7CiAgbWFyZ2luLWJvdHRvbTogMnJlbTsKfQoucGlwLWNoZWNrbGlzdCBoMiB7CiAgYm9yZGVyOiBub25lOwogIHBhZGRpbmc6IDA7CiAgbWFyZ2luLXRvcDogMDsKICBmb250LXNpemU6IDEuMjVyZW07CiAgY29sb3I6ICM4YTZkMjA7Cn0KLnBpcC1jaGVja2xpc3Qtc3VidGV4dCB7CiAgZm9udC1zaXplOiAwLjlyZW07CiAgY29sb3I6ICM4YTZkMjA7CiAgbWFyZ2luLWJvdHRvbTogMTZweDsKfQoucGlwLWNoZWNrbGlzdC1pdGVtcyB7CiAgbGlzdC1zdHlsZTogbm9uZSAhaW1wb3J0YW50OwogIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICBtYXJnaW46IDAgIWltcG9ydGFudDsKfQoucGlwLWNoZWNrbGlzdC1pdGVtcyBsaSB7CiAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZ2FwOiAxMnB4OwogIHBhZGRpbmc6IDEwcHggMCAhaW1wb3J0YW50OwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZjBlNGM0OwogIGZvbnQtc2l6ZTogMC45NXJlbTsKICBjdXJzb3I6IHBvaW50ZXI7CiAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgbGlzdC1zdHlsZTogbm9uZSAhaW1wb3J0YW50OwogIGJhY2tncm91bmQtaW1hZ2U6IG5vbmUgIWltcG9ydGFudDsKfQoucGlwLWNoZWNrbGlzdC1pdGVtcyBsaTo6YmVmb3JlLAoucGlwLWNoZWNrbGlzdC1pdGVtcyBsaTo6bWFya2VyIHsKICBjb250ZW50OiBub25lICFpbXBvcnRhbnQ7CiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Owp9Ci5waXAtY2hlY2tsaXN0LWl0ZW1zIGxpOmxhc3QtY2hpbGQgewogIGJvcmRlci1ib3R0b206IG5vbmU7Cn0KLnBpcC1jaGVjay1ib3ggewogIHdpZHRoOiAyMnB4OwogIGhlaWdodDogMjJweDsKICBib3JkZXI6IDJweCBzb2xpZCAjYzliOTdhOwogIGJvcmRlci1yYWRpdXM6IDRweDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgZmxleC1zaHJpbms6IDA7CiAgdHJhbnNpdGlvbjogYWxsIDAuMTVzOwogIGZvbnQtc2l6ZTogMTRweDsKICBjb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLnBpcC1jaGVja2xpc3QtaXRlbXMgbGkuY2hlY2tlZCAucGlwLWNoZWNrLWJveCB7CiAgYmFja2dyb3VuZDogIzFiM2E1YzsKICBib3JkZXItY29sb3I6ICMxYjNhNWM7CiAgY29sb3I6ICNmZmY7Cn0KLnBpcC1jaGVja2xpc3QtaXRlbXMgbGkuY2hlY2tlZCBzcGFuOmxhc3QtY2hpbGQgewogIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoOwogIG9wYWNpdHk6IDAuNTsKfQoucGlwLWNoZWNrbGlzdC1yZWFkeSB7CiAgZGlzcGxheTogbm9uZTsKICBtYXJnaW4tdG9wOiAxNnB4OwogIHBhZGRpbmc6IDEycHggMjBweDsKICBiYWNrZ3JvdW5kOiAjZThmNWU5OwogIGJvcmRlci1yYWRpdXM6IDhweDsKICBjb2xvcjogIzJlN2QzMjsKICBmb250LXdlaWdodDogNjAwOwogIGZvbnQtc2l6ZTogMC45NXJlbTsKICBhbmltYXRpb246IHBpcEZhZGVJbiAwLjNzIGVhc2U7Cn0KLnBpcC1jaGVja2xpc3QtcmVhZHkudmlzaWJsZSB7CiAgZGlzcGxheTogYmxvY2s7Cn0KCi8qIC0tLS0tLS0tLS0gU1RFUCBXSVpBUkQgLS0tLS0tLS0tLSAqLwoucGlwLXdpemFyZCB7CiAgYm9yZGVyOiAycHggc29saWQgI2UwZTdlZjsKICBib3JkZXItcmFkaXVzOiAxMnB4OwogIG92ZXJmbG93OiBoaWRkZW47CiAgbWFyZ2luLWJvdHRvbTogMnJlbTsKfQoucGlwLXdpemFyZC1oZWFkZXIgewogIGJhY2tncm91bmQ6ICMxYjNhNWM7CiAgY29sb3I6ICNmZmYgIWltcG9ydGFudDsKICBwYWRkaW5nOiAxOHB4IDI4cHg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICBmbGV4LXdyYXA6IHdyYXA7CiAgZ2FwOiAxMHB4Owp9Ci5waXAtd2l6YXJkLWhlYWRlciBoMiB7CiAgY29sb3I6ICNmZmYgIWltcG9ydGFudDsKICBtYXJnaW46IDA7CiAgcGFkZGluZzogMDsKICBib3JkZXI6IG5vbmU7CiAgZm9udC1zaXplOiAxLjJyZW07Cn0KLnBpcC13aXphcmQtc3RlcC1pbmRpY2F0b3IgewogIGZvbnQtc2l6ZTogMC44NXJlbTsKICBvcGFjaXR5OiAwLjg1OwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgY29sb3I6ICNmZmYgIWltcG9ydGFudDsKfQoucGlwLXByb2dyZXNzLWJhciB7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiA0cHg7CiAgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjIpOwp9Ci5waXAtcHJvZ3Jlc3MtZmlsbCB7CiAgaGVpZ2h0OiAxMDAlOwogIGJhY2tncm91bmQ6ICM1ZGFkZTI7CiAgdHJhbnNpdGlvbjogd2lkdGggMC4zNXMgZWFzZTsKICBib3JkZXItcmFkaXVzOiAwIDJweCAycHggMDsKfQoucGlwLXdpemFyZC1ib2R5IHsKICBwYWRkaW5nOiAyOHB4OwogIGJhY2tncm91bmQ6ICNmZmY7CiAgbWluLWhlaWdodDogMjAwcHg7Cn0KLnBpcC1zdGVwIHsKICBkaXNwbGF5OiBub25lOwogIGFuaW1hdGlvbjogcGlwRmFkZUluIDAuM3MgZWFzZTsKfQoucGlwLXN0ZXAuYWN0aXZlIHsKICBkaXNwbGF5OiBibG9jazsKfQoucGlwLXN0ZXAtdGl0bGUgewogIGZvbnQtc2l6ZTogMS4xcmVtOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgY29sb3I6ICMxYjNhNWM7CiAgbWFyZ2luLWJvdHRvbTogMTRweDsKfQoucGlwLXN0ZXAgcCB7CiAgbWFyZ2luLWJvdHRvbTogMTJweDsKfQoucGlwLXN0ZXAtaW1nLXdyYXBwZXIgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBtYXJnaW46IDE4cHggMDsKICBjdXJzb3I6IHBvaW50ZXI7CiAgYm9yZGVyLXJhZGl1czogOHB4OwogIG92ZXJmbG93OiBoaWRkZW47CiAgYm9yZGVyOiAxcHggc29saWQgI2UwZTdlZjsKICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuMnM7Cn0KLnBpcC1zdGVwLWltZy13cmFwcGVyOmhvdmVyIHsKICBib3gtc2hhZG93OiAwIDRweCAxNnB4IHJnYmEoMCwwLDAsMC4xMik7Cn0KLnBpcC1zdGVwLWltZy13cmFwcGVyIGltZyB7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiBhdXRvOwogIGRpc3BsYXk6IGJsb2NrOwp9Ci5waXAtc3RlcC1iYWRnZSB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMTJweDsKICBsZWZ0OiAxMnB4OwogIGJhY2tncm91bmQ6ICMxYjNhNWM7CiAgY29sb3I6ICNmZmYgIWltcG9ydGFudDsKICBmb250LXNpemU6IDAuNzVyZW07CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBwYWRkaW5nOiA0cHggMTJweDsKICBib3JkZXItcmFkaXVzOiAyMHB4OwogIHBvaW50ZXItZXZlbnRzOiBub25lOwp9Ci5waXAtem9vbS1oaW50IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgYm90dG9tOiAxMnB4OwogIHJpZ2h0OiAxMnB4OwogIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsMC42KTsKICBjb2xvcjogI2ZmZiAhaW1wb3J0YW50OwogIGZvbnQtc2l6ZTogMC43NXJlbTsKICBwYWRkaW5nOiA0cHggMTBweDsKICBib3JkZXItcmFkaXVzOiA0cHg7CiAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgb3BhY2l0eTogMDsKICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnM7Cn0KLnBpcC1zdGVwLWltZy13cmFwcGVyOmhvdmVyIC5waXAtem9vbS1oaW50IHsKICBvcGFjaXR5OiAxOwp9Ci5waXAtd2l6YXJkLWZvb3RlciB7CiAgZGlzcGxheTogZmxleDsKICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBwYWRkaW5nOiAxOHB4IDI4cHg7CiAgYmFja2dyb3VuZDogI2Y3ZjlmYjsKICBib3JkZXItdG9wOiAxcHggc29saWQgI2UwZTdlZjsKfQoucGlwLW5hdi1idG4gewogIHBhZGRpbmc6IDEwcHggMjRweDsKICBib3JkZXItcmFkaXVzOiA4cHg7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBmb250LXNpemU6IDAuOXJlbTsKICBjdXJzb3I6IHBvaW50ZXI7CiAgYm9yZGVyOiAycHggc29saWQgIzFiM2E1YzsKICB0cmFuc2l0aW9uOiBhbGwgMC4xNXM7CiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7Cn0KLnBpcC1uYXYtYnRuLXByZXYgewogIGJhY2tncm91bmQ6ICNmZmYgIWltcG9ydGFudDsKICBjb2xvcjogIzFiM2E1YyAhaW1wb3J0YW50Owp9Ci5waXAtbmF2LWJ0bi1wcmV2OmhvdmVyIHsKICBiYWNrZ3JvdW5kOiAjZjBmNGY4ICFpbXBvcnRhbnQ7Cn0KLnBpcC1uYXYtYnRuLXByZXY6ZGlzYWJsZWQgewogIG9wYWNpdHk6IDAuMzsKICBjdXJzb3I6IG5vdC1hbGxvd2VkOwp9Ci5waXAtbmF2LWJ0bi1uZXh0IHsKICBiYWNrZ3JvdW5kOiAjMWIzYTVjICFpbXBvcnRhbnQ7CiAgY29sb3I6ICNmZmYgIWltcG9ydGFudDsKfQoucGlwLW5hdi1idG4tbmV4dDpob3ZlciB7CiAgYmFja2dyb3VuZDogIzIzNGI3MyAhaW1wb3J0YW50Owp9Ci5waXAtc3RlcC1kb3RzIHsKICBkaXNwbGF5OiBmbGV4OwogIGdhcDogNnB4Owp9Ci5waXAtc3RlcC1kb3QgewogIHdpZHRoOiAxMHB4OwogIGhlaWdodDogMTBweDsKICBib3JkZXItcmFkaXVzOiA1MCU7CiAgYmFja2dyb3VuZDogI2QwZDhlNDsKICBjdXJzb3I6IHBvaW50ZXI7CiAgdHJhbnNpdGlvbjogYWxsIDAuMnM7CiAgYm9yZGVyOiBub25lOwogIHBhZGRpbmc6IDA7Cn0KLnBpcC1zdGVwLWRvdC5hY3RpdmUgewogIGJhY2tncm91bmQ6ICMxYjNhNWM7CiAgdHJhbnNmb3JtOiBzY2FsZSgxLjIpOwp9Ci5waXAtc3RlcC1kb3QuY29tcGxldGVkIHsKICBiYWNrZ3JvdW5kOiAjNWRhZGUyOwp9CgovKiAtLS0tLS0tLS0tIFRBQkJFRCBTRUFSQ0ggTUVUSE9EUyAtLS0tLS0tLS0tICovCi5waXAtdGFicyB7CiAgbWFyZ2luLWJvdHRvbTogMnJlbTsKfQoucGlwLXRhYnMtbmF2IHsKICBkaXNwbGF5OiBmbGV4OwogIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjZTBlN2VmOwogIG1hcmdpbi1ib3R0b206IDA7Cn0KLnBpcC10YWItYnRuIHsKICBwYWRkaW5nOiAxMnB4IDI0cHg7CiAgZm9udC1zaXplOiAwLjlyZW07CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBib3JkZXI6IDJweCBzb2xpZCAjZTBlN2VmICFpbXBvcnRhbnQ7CiAgYm9yZGVyLWJvdHRvbTogbm9uZSAhaW1wb3J0YW50OwogIGJhY2tncm91bmQ6ICNmN2Y5ZmIgIWltcG9ydGFudDsKICBjb2xvcjogIzY2NiAhaW1wb3J0YW50OwogIGN1cnNvcjogcG9pbnRlcjsKICBib3JkZXItcmFkaXVzOiA4cHggOHB4IDAgMDsKICBtYXJnaW4tYm90dG9tOiAtMnB4OwogIHRyYW5zaXRpb246IGFsbCAwLjE1czsKICBmb250LWZhbWlseTogaW5oZXJpdDsKfQoucGlwLXRhYi1idG46aG92ZXIgewogIGJhY2tncm91bmQ6ICNlZWYyZjYgIWltcG9ydGFudDsKICBjb2xvcjogIzMzMyAhaW1wb3J0YW50Owp9Ci5waXAtdGFiLWJ0bi5hY3RpdmUgewogIGJhY2tncm91bmQ6ICNmZmYgIWltcG9ydGFudDsKICBjb2xvcjogIzFiM2E1YyAhaW1wb3J0YW50OwogIGJvcmRlci1jb2xvcjogIzFiM2E1YzsKICBib3JkZXItYm90dG9tOiAycHggc29saWQgI2ZmZjsKfQoucGlwLXRhYi1wYW5lbCB7CiAgZGlzcGxheTogbm9uZTsKICBwYWRkaW5nOiAyNHB4OwogIGJvcmRlcjogMnB4IHNvbGlkICNlMGU3ZWY7CiAgYm9yZGVyLXRvcDogbm9uZTsKICBib3JkZXItcmFkaXVzOiAwIDAgMTBweCAxMHB4OwogIGJhY2tncm91bmQ6ICNmZmY7CiAgYW5pbWF0aW9uOiBwaXBGYWRlSW4gMC4yNXMgZWFzZTsKfQoucGlwLXRhYi1wYW5lbC5hY3RpdmUgewogIGRpc3BsYXk6IGJsb2NrOwp9Ci5waXAtdGFiLXBhbmVsIC5waXAtdGlwIHsKICBiYWNrZ3JvdW5kOiAjZWFmMGY3OwogIGJvcmRlci1sZWZ0OiA0cHggc29saWQgIzFiM2E1YzsKICBwYWRkaW5nOiAxMnB4IDE2cHg7CiAgYm9yZGVyLXJhZGl1czogMCA2cHggNnB4IDA7CiAgZm9udC1zaXplOiAwLjlyZW07CiAgbWFyZ2luLXRvcDogOHB4Owp9CgovKiAtLS0tLS0tLS0tIEZBUSBBQ0NPUkRJT04gLS0tLS0tLS0tLSAqLwoucGlwLWFjY29yZGlvbiB7CiAgbWFyZ2luLWJvdHRvbTogMnJlbTsKfQoucHJvc3Blci1pbnRlcmFjdGl2ZS1wb3N0IC5waXAtYWNjb3JkaW9uLWl0ZW0sCi5waXAtYWNjb3JkaW9uLWl0ZW0gewogIGJvcmRlcjogMnB4IHNvbGlkICNlMGU3ZWYgIWltcG9ydGFudDsKICBib3JkZXItcmFkaXVzOiAxMHB4ICFpbXBvcnRhbnQ7CiAgbWFyZ2luLWJvdHRvbTogMTBweCAhaW1wb3J0YW50OwogIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsKICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50OwogIG1pbi1oZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKfQovKiBLaWxsIGVtcHR5IDxwPiB0YWdzIGluamVjdGVkIGJ5IHdwYXV0b3AgaW5zaWRlIGFjY29yZGlvbiBpdGVtcyAqLwoucHJvc3Blci1pbnRlcmFjdGl2ZS1wb3N0IC5waXAtYWNjb3JkaW9uLWl0ZW0gPiBwLAoucGlwLWFjY29yZGlvbi1pdGVtID4gcCB7CiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogIG1hcmdpbjogMCAhaW1wb3J0YW50OwogIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICBoZWlnaHQ6IDAgIWltcG9ydGFudDsKICBsaW5lLWhlaWdodDogMCAhaW1wb3J0YW50Owp9Ci5wcm9zcGVyLWludGVyYWN0aXZlLXBvc3QgLnBpcC1hY2NvcmRpb24gYnV0dG9uLnBpcC1hY2NvcmRpb24taGVhZGVyLAoucGlwLWFjY29yZGlvbi1oZWFkZXIgewogIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7CiAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICBwYWRkaW5nOiAxNHB4IDUwcHggMTRweCAyMHB4ICFpbXBvcnRhbnQ7CiAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgYmFja2dyb3VuZDogI2ZmZiAhaW1wb3J0YW50OwogIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50OwogIGJvcmRlci1yYWRpdXM6IDAgIWltcG9ydGFudDsKICBmb250LXNpemU6IDEuMDVyZW0gIWltcG9ydGFudDsKICBmb250LXdlaWdodDogNjAwICFpbXBvcnRhbnQ7CiAgY29sb3I6ICMxYjNhNWMgIWltcG9ydGFudDsKICBjdXJzb3I6IHBvaW50ZXI7CiAgdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50OwogIHRleHQtdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7CiAgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbCAhaW1wb3J0YW50OwogIGxpbmUtaGVpZ2h0OiAxLjQgIWltcG9ydGFudDsKICBtaW4taGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1czsKICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAiU2Vnb2UgVUkiLCBSb2JvdG8sIE94eWdlbiwgVWJ1bnR1LCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7Cn0KLnByb3NwZXItaW50ZXJhY3RpdmUtcG9zdCAucGlwLWFjY29yZGlvbiBidXR0b24ucGlwLWFjY29yZGlvbi1oZWFkZXI6aG92ZXIsCi5waXAtYWNjb3JkaW9uLWhlYWRlcjpob3ZlciB7CiAgYmFja2dyb3VuZDogI2Y3ZjlmYiAhaW1wb3J0YW50Owp9Ci5wcm9zcGVyLWludGVyYWN0aXZlLXBvc3QgLnBpcC1hY2NvcmRpb24tYXJyb3csCi5waXAtYWNjb3JkaW9uLWFycm93IHsKICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDsKICByaWdodDogMjRweCAhaW1wb3J0YW50OwogIHRvcDogNTAlICFpbXBvcnRhbnQ7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpICFpbXBvcnRhbnQ7CiAgZm9udC1zaXplOiAxLjJyZW0gIWltcG9ydGFudDsKICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4yNXM7Cn0KLnBpcC1hY2NvcmRpb24taXRlbS5vcGVuIC5waXAtYWNjb3JkaW9uLWFycm93IHsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKDE4MGRlZykgIWltcG9ydGFudDsKfQoucGlwLWFjY29yZGlvbi1ib2R5IHsKICBtYXgtaGVpZ2h0OiAwOwogIG92ZXJmbG93OiBoaWRkZW47CiAgdHJhbnNpdGlvbjogbWF4LWhlaWdodCAwLjM1cyBlYXNlOwp9Ci5waXAtYWNjb3JkaW9uLWJvZHktaW5uZXIgewogIHBhZGRpbmc6IDAgMjRweCAyMHB4Owp9Ci5waXAtYWNjb3JkaW9uLWJvZHktaW5uZXIgdWwgewogIHBhZGRpbmctbGVmdDogMjBweCAhaW1wb3J0YW50OwogIG1hcmdpbjogOHB4IDA7CiAgbGlzdC1zdHlsZS10eXBlOiBkaXNjICFpbXBvcnRhbnQ7Cn0KLnBpcC1hY2NvcmRpb24tYm9keS1pbm5lciBsaSB7CiAgbWFyZ2luLWJvdHRvbTogNnB4OwogIGxpc3Qtc3R5bGUtdHlwZTogZGlzYyAhaW1wb3J0YW50OwogIGJhY2tncm91bmQtaW1hZ2U6IG5vbmUgIWltcG9ydGFudDsKfQoucGlwLWFjY29yZGlvbi1ib2R5LWlubmVyIGxpOjpiZWZvcmUgewogIGNvbnRlbnQ6IG5vbmUgIWltcG9ydGFudDsKfQoucGlwLWFjY29yZGlvbi1ib2R5LWlubmVyIC5waXAtZGlzY2xhaW1lciB7CiAgYmFja2dyb3VuZDogI2ZmZjhlMTsKICBib3JkZXItbGVmdDogNHB4IHNvbGlkICNmOWE4MjU7CiAgcGFkZGluZzogMTJweCAxNnB4OwogIGJvcmRlci1yYWRpdXM6IDAgNnB4IDZweCAwOwogIGZvbnQtc2l6ZTogMC45cmVtOwogIG1hcmdpbi10b3A6IDEycHg7Cn0KCi8qIC0tLS0tLS0tLS0gTEVHQUwgV0FSTklORyBDQUxMT1VUIC0tLS0tLS0tLS0gKi8KLnBpcC1sZWdhbC13YXJuaW5nIHsKICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAuMDgpOwogIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4xNSk7CiAgcGFkZGluZzogMTRweCAxOHB4OwogIGJvcmRlci1yYWRpdXM6IDZweDsKICBmb250LXNpemU6IDAuOHJlbTsKICBsaW5lLWhlaWdodDogMS43OwogIGNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LDAuNik7CiAgbWFyZ2luLXRvcDogMThweDsKICBtYXJnaW4tYm90dG9tOiA2cHg7Cn0KLnBpcC1sZWdhbC13YXJuaW5nIHN0cm9uZyB7CiAgY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsMC43NSk7Cn0KCi8qIC0tLS0tLS0tLS0gSU5KVVJFRCBDVEEgQk9YIC0tLS0tLS0tLS0gKi8KLnBpcC1pbmp1cmVkLWN0YSB7CiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzFiM2E1YyAwJSwgIzIzNGI3MyAxMDAlKTsKICBjb2xvcjogI2ZmZiAhaW1wb3J0YW50OwogIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgcGFkZGluZzogMjhweCAzMnB4OwogIG1hcmdpbi1ib3R0b206IDJyZW07CiAgYm94LXNoYWRvdzogMCA0cHggMjBweCByZ2JhKDI3LDU4LDkyLDAuMTgpOwp9Ci5waXAtaW5qdXJlZC1jdGEgaDIgewogIGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7CiAgbWFyZ2luOiAwIDAgMTJweDsKICBwYWRkaW5nOiAwOwogIGJvcmRlcjogbm9uZTsKICBmb250LXNpemU6IDEuMzVyZW07Cn0KLnBpcC1pbmp1cmVkLWN0YSBwIHsKICBjb2xvcjogI2ZmZiAhaW1wb3J0YW50OwogIG9wYWNpdHk6IDE7CiAgbGluZS1oZWlnaHQ6IDEuNjsKICBtYXJnaW4tYm90dG9tOiAxNHB4Owp9Ci5waXAtaW5qdXJlZC1jdGEgLnBpcC1idG4gewogIGRpc3BsYXk6IGlubGluZS1mbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZ2FwOiA4cHg7CiAgcGFkZGluZzogMTJweCAyNHB4OwogIGJvcmRlci1yYWRpdXM6IDhweDsKICBmb250LXdlaWdodDogNjAwOwogIGZvbnQtc2l6ZTogMC45NXJlbTsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMTVzLCBib3gtc2hhZG93IDAuMTVzOwogIGN1cnNvcjogcG9pbnRlcjsKICBib3JkZXI6IG5vbmU7CiAgYmFja2dyb3VuZDogI2ZmZjsKICBjb2xvcjogIzFiM2E1YyAhaW1wb3J0YW50Owp9Ci5waXAtaW5qdXJlZC1jdGEgLnBpcC1idG46aG92ZXIgewogIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTsKICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMCwwLDAsMC4yKTsKfQoKLyogLS0tLS0tLS0tLSBET0NVTUVOVCBDT01QQVJJU09OIC0tLS0tLS0tLS0gKi8KLnBpcC1jb21wYXJpc29uIHsKICBtYXJnaW4tYm90dG9tOiAycmVtOwp9Ci5waXAtY29tcGFyaXNvbiA+IHAgewogIG1hcmdpbi1ib3R0b206IDE2cHg7Cn0KLnBpcC1jb21wYXJpc29uLWdyaWQgewogIGRpc3BsYXk6IGdyaWQ7CiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyOwogIGdhcDogMTZweDsKfQoucGlwLWNvbXBhcmlzb24tY2FyZCB7CiAgYm9yZGVyLXJhZGl1czogMTBweDsKICBwYWRkaW5nOiAyMnB4IDI0cHg7CiAgYm9yZGVyOiAycHggc29saWQgI2UwZTdlZjsKfQoucGlwLWNvbXBhcmlzb24tY2FyZC5jYXJkLWV4Y2hhbmdlIHsKICBiYWNrZ3JvdW5kOiAjZjdmOWZiOwogIGJvcmRlci1jb2xvcjogI2QwZDhlNDsKfQoucGlwLWNvbXBhcmlzb24tY2FyZC5jYXJkLXJlcG9ydCB7CiAgYmFja2dyb3VuZDogI2VhZjBmNzsKICBib3JkZXItY29sb3I6ICMxYjNhNWM7Cn0KLnBpcC1jb21wYXJpc29uLWNhcmQgaDMgewogIG1hcmdpbi10b3A6IDA7CiAgZm9udC1zaXplOiAxLjA1cmVtOwp9Ci5waXAtY29tcGFyaXNvbi1jYXJkIC5waXAtY2FyZC1sYWJlbCB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGZvbnQtc2l6ZTogMC43NXJlbTsKICBmb250LXdlaWdodDogNzAwOwogIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgbGV0dGVyLXNwYWNpbmc6IDAuNXB4OwogIHBhZGRpbmc6IDNweCAxMHB4OwogIGJvcmRlci1yYWRpdXM6IDRweDsKICBtYXJnaW4tYm90dG9tOiAxMHB4Owp9Ci5jYXJkLWV4Y2hhbmdlIC5waXAtY2FyZC1sYWJlbCB7CiAgYmFja2dyb3VuZDogI2QwZDhlNDsKICBjb2xvcjogIzRhNTU2ODsKfQouY2FyZC1yZXBvcnQgLnBpcC1jYXJkLWxhYmVsIHsKICBiYWNrZ3JvdW5kOiAjMWIzYTVjOwogIGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7Cn0KLnBpcC1jb21wYXJpc29uLWNhcmQgdWwgewogIHBhZGRpbmctbGVmdDogMThweCAhaW1wb3J0YW50OwogIG1hcmdpbjogMTBweCAwIDA7CiAgZm9udC1zaXplOiAwLjlyZW07CiAgbGlzdC1zdHlsZS10eXBlOiBkaXNjICFpbXBvcnRhbnQ7Cn0KLnBpcC1jb21wYXJpc29uLWNhcmQgbGkgewogIG1hcmdpbi1ib3R0b206IDZweDsKICBsaXN0LXN0eWxlLXR5cGU6IGRpc2MgIWltcG9ydGFudDsKICBiYWNrZ3JvdW5kLWltYWdlOiBub25lICFpbXBvcnRhbnQ7Cn0KLnBpcC1jb21wYXJpc29uLWNhcmQgbGk6OmJlZm9yZSB7CiAgY29udGVudDogbm9uZSAhaW1wb3J0YW50Owp9Ci5waXAtY29tcGFyaXNvbi1ib3R0b20gewogIG1hcmdpbi10b3A6IDE0cHg7CiAgcGFkZGluZzogMTJweCAxNnB4OwogIGJhY2tncm91bmQ6ICNlYWYwZjc7CiAgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCAjMWIzYTVjOwogIGJvcmRlci1yYWRpdXM6IDAgNnB4IDZweCAwOwogIGZvbnQtc2l6ZTogMC45cmVtOwp9Ci8qIC0tLS0tLS0tLS0gTElHSFRCT1ggLS0tLS0tLS0tLSAqLwoucGlwLWxpZ2h0Ym94LW92ZXJsYXkgewogIHBvc2l0aW9uOiBmaXhlZDsKICB0b3A6IDA7CiAgbGVmdDogMDsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDEwMCU7CiAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwwLjg1KTsKICB6LWluZGV4OiAxMDAwMDA7CiAgZGlzcGxheTogbm9uZTsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIHBhZGRpbmc6IDMwcHg7CiAgY3Vyc29yOiB6b29tLW91dDsKfQoucGlwLWxpZ2h0Ym94LW92ZXJsYXkub3BlbiB7CiAgZGlzcGxheTogZmxleDsKfQoucGlwLWxpZ2h0Ym94LW92ZXJsYXkgaW1nIHsKICBtYXgtd2lkdGg6IDk1JTsKICBtYXgtaGVpZ2h0OiA5MHZoOwogIGJvcmRlci1yYWRpdXM6IDhweDsKICBib3gtc2hhZG93OiAwIDhweCA0MHB4IHJnYmEoMCwwLDAsMC41KTsKfQoucGlwLWxpZ2h0Ym94LWNsb3NlIHsKICBwb3NpdGlvbjogZml4ZWQ7CiAgdG9wOiAyMHB4OwogIHJpZ2h0OiAyOHB4OwogIGJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsMC4xNSkgIWltcG9ydGFudDsKICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKICBjb2xvcjogI2ZmZiAhaW1wb3J0YW50OwogIGZvbnQtc2l6ZTogMnJlbTsKICB3aWR0aDogNDhweDsKICBoZWlnaHQ6IDQ4cHg7CiAgYm9yZGVyLXJhZGl1czogNTAlOwogIGN1cnNvcjogcG9pbnRlcjsKICB6LWluZGV4OiAxMDAwMDE7CiAgZGlzcGxheTogbm9uZTsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xNXM7Cn0KLnBpcC1saWdodGJveC1jbG9zZTpob3ZlciB7CiAgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjMpICFpbXBvcnRhbnQ7Cn0KLnBpcC1saWdodGJveC1vdmVybGF5Lm9wZW4gKyAucGlwLWxpZ2h0Ym94LWNsb3NlLAoucGlwLWxpZ2h0Ym94LWNsb3NlLm9wZW4gewogIGRpc3BsYXk6IGZsZXg7Cn0KCi8qIC0tLS0tLS0tLS0gQU5JTUFUSU9OUyAtLS0tLS0tLS0tICovCkBrZXlmcmFtZXMgcGlwRmFkZUluIHsKICBmcm9tIHsgb3BhY2l0eTogMDsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDhweCk7IH0KICB0byB7IG9wYWNpdHk6IDE7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsgfQp9CgovKiAtLS0tLS0tLS0tIFJFU1BPTlNJVkUgLS0tLS0tLS0tLSAqLwpAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHsKICAucGlwLWNvbXBhcmlzb24tZ3JpZCB7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsKICB9CiAgLnBpcC13aXphcmQtYm9keSB7CiAgICBwYWRkaW5nOiAyMnB4OwogIH0KICAucGlwLXRhYi1idG4gewogICAgcGFkZGluZzogMTFweCAxOHB4OwogICAgZm9udC1zaXplOiAwLjg1cmVtOwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogNjQwcHgpIHsKICAucHJvc3Blci1pbnRlcmFjdGl2ZS1wb3N0IHsKICAgIHBhZGRpbmc6IDEycHg7CiAgfQogIC5waXAtaGVyby1ib3ggewogICAgcGFkZGluZzogMjJweCAyMHB4OwogIH0KICAucGlwLWhlcm8tYm94IGgyIHsKICAgIGZvbnQtc2l6ZTogMS4zNXJlbTsKICB9CiAgLnBpcC1oZXJvLWJveCAucGlwLWJ0biB7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICB9CiAgLnBpcC13aXphcmQtYm9keSB7CiAgICBwYWRkaW5nOiAyMHB4OwogIH0KICAucGlwLXdpemFyZC1mb290ZXIgewogICAgcGFkZGluZzogMTRweCAxOHB4OwogIH0KICAucGlwLXN0ZXAtZG90cyB7CiAgICBkaXNwbGF5OiBub25lOwogIH0KICAucGlwLXRhYi1idG4gewogICAgcGFkZGluZzogMTBweCAxNHB4OwogICAgZm9udC1zaXplOiAwLjhyZW07CiAgfQogIC5waXAtdGFicy1uYXYgewogICAgb3ZlcmZsb3cteDogYXV0bzsKICB9Cn0=
LyogLS0tLS0tLS0tLSBERUNJU0lPTiBUT09MIC0tLS0tLS0tLS0gKi8KZnVuY3Rpb24gcmVzZXREZWNpc2lvblRvb2woKSB7CiAgdmFyIHN0ZXBzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnI2RlY2lzaW9uVG9vbCAucGlwLWRlY2lzaW9uLXN0ZXAnKTsKICB2YXIgcmVzdWx0cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyNkZWNpc2lvblRvb2wgLnBpcC1kZWNpc2lvbi1yZXN1bHQnKTsKICB2YXIgYnRucyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyNkZWNpc2lvblRvb2wgLnBpcC1kZWNpc2lvbi1idG4nKTsKICBzdGVwcy5mb3JFYWNoKGZ1bmN0aW9uKHMsIGkpIHsgcy5zdHlsZS5kaXNwbGF5ID0gaSA9PT0gMCA/ICdibG9jaycgOiAnbm9uZSc7IH0pOwogIHJlc3VsdHMuZm9yRWFjaChmdW5jdGlvbihyKSB7IHIuY2xhc3NMaXN0LnJlbW92ZSgndmlzaWJsZScpOyB9KTsKICBidG5zLmZvckVhY2goZnVuY3Rpb24oYikgeyBiLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdGVkJyk7IH0pOwp9Cgpkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcjZGVjaXNpb25Ub29sIC5waXAtZGVjaXNpb24tYnRuJykuZm9yRWFjaChmdW5jdGlvbihidG4pIHsKICBidG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgIHZhciBuZXh0ID0gdGhpcy5nZXRBdHRyaWJ1dGUoJ2RhdGEtbmV4dCcpOwogICAgdmFyIGN1cnJlbnRTdGVwID0gdGhpcy5jbG9zZXN0KCcucGlwLWRlY2lzaW9uLXN0ZXAnKTsKICAgIC8vIGhpZ2hsaWdodAogICAgY3VycmVudFN0ZXAucXVlcnlTZWxlY3RvckFsbCgnLnBpcC1kZWNpc2lvbi1idG4nKS5mb3JFYWNoKGZ1bmN0aW9uKGIpIHsgYi5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3RlZCcpOyB9KTsKICAgIHRoaXMuY2xhc3NMaXN0LmFkZCgnc2VsZWN0ZWQnKTsKCiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICBjdXJyZW50U3RlcC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICBpZiAobmV4dC5zdGFydHNXaXRoKCdyZXN1bHQtJykpIHsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChuZXh0KS5jbGFzc0xpc3QuYWRkKCd2aXNpYmxlJyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2RlY2lzaW9uVG9vbCAucGlwLWRlY2lzaW9uLXN0ZXBbZGF0YS1zdGVwPSInICsgbmV4dCArICciXScpLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwogICAgICB9CiAgICB9LCAyMDApOwogIH0pOwp9KTsKCi8qIC0tLS0tLS0tLS0gREVDSVNJT04gVE9PTCBSRVNUQVJUIChldmVudCBkZWxlZ2F0aW9uKSAtLS0tLS0tLS0tICovCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkZWNpc2lvblRvb2wnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICBpZiAoZS50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdwaXAtZGVjaXNpb24tcmVzdGFydCcpKSB7CiAgICByZXNldERlY2lzaW9uVG9vbCgpOwogIH0KfSk7CgovKiAtLS0tLS0tLS0tIENIRUNLTElTVCAoZXZlbnQgZGVsZWdhdGlvbikgLS0tLS0tLS0tLSAqLwpmdW5jdGlvbiB0b2dnbGVDaGVjayhsaSkgewogIGxpLmNsYXNzTGlzdC50b2dnbGUoJ2NoZWNrZWQnKTsKICB2YXIgaXNDaGVja2VkID0gbGkuY2xhc3NMaXN0LmNvbnRhaW5zKCdjaGVja2VkJyk7CiAgbGkuc2V0QXR0cmlidXRlKCdhcmlhLWNoZWNrZWQnLCBpc0NoZWNrZWQgPyAndHJ1ZScgOiAnZmFsc2UnKTsKICB2YXIgdG90YWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcjY2hlY2tsaXN0IGxpJykubGVuZ3RoOwogIHZhciBjaGVja2VkID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnI2NoZWNrbGlzdCBsaS5jaGVja2VkJykubGVuZ3RoOwogIHZhciByZWFkeUVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoZWNrbGlzdFJlYWR5Jyk7CiAgaWYgKGNoZWNrZWQgPT09IHRvdGFsKSB7CiAgICByZWFkeUVsLmNsYXNzTGlzdC5hZGQoJ3Zpc2libGUnKTsKICB9IGVsc2UgewogICAgcmVhZHlFbC5jbGFzc0xpc3QucmVtb3ZlKCd2aXNpYmxlJyk7CiAgfQp9Cgpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hlY2tsaXN0JykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihlKSB7CiAgdmFyIGxpID0gZS50YXJnZXQuY2xvc2VzdCgnbGknKTsKICBpZiAobGkpIHRvZ2dsZUNoZWNrKGxpKTsKfSk7Cgpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hlY2tsaXN0JykuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGZ1bmN0aW9uKGUpIHsKICBpZiAoZS5rZXkgPT09ICdFbnRlcicgfHwgZS5rZXkgPT09ICcgJykgewogICAgdmFyIGxpID0gZS50YXJnZXQuY2xvc2VzdCgnbGknKTsKICAgIGlmIChsaSkgewogICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgIHRvZ2dsZUNoZWNrKGxpKTsKICAgIH0KICB9Cn0pOwoKLyogLS0tLS0tLS0tLSBTVEVQIFdJWkFSRCAtLS0tLS0tLS0tICovCnZhciB3aXphcmRDdXJyZW50ID0gMTsKdmFyIHdpemFyZFRvdGFsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnI3dpemFyZEJvZHkgLnBpcC1zdGVwJykubGVuZ3RoOwoKLy8gQnVpbGQgZG90cwooZnVuY3Rpb24oKSB7CiAgdmFyIGRvdHNDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd2l6YXJkRG90cycpOwogIGZvciAodmFyIGkgPSAxOyBpIDw9IHdpemFyZFRvdGFsOyBpKyspIHsKICAgIHZhciBkb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTsKICAgIGRvdC5jbGFzc05hbWUgPSAncGlwLXN0ZXAtZG90JyArIChpID09PSAxID8gJyBhY3RpdmUnIDogJycpOwogICAgZG90LnNldEF0dHJpYnV0ZSgnZGF0YS1zdGVwJywgaSk7CiAgICBkb3Quc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgJ0dvIHRvIHN0ZXAgJyArIGkpOwogICAgZG90LnNldEF0dHJpYnV0ZSgndGl0bGUnLCAnR28gdG8gc3RlcCAnICsgaSk7CiAgICBkb3QuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgZ29Ub1N0ZXAocGFyc2VJbnQodGhpcy5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3RlcCcpKSk7CiAgICB9KTsKICAgIGRvdHNDb250YWluZXIuYXBwZW5kQ2hpbGQoZG90KTsKICB9Cn0pKCk7CgpmdW5jdGlvbiBnb1RvU3RlcChuKSB7CiAgaWYgKG4gPCAxIHx8IG4gPiB3aXphcmRUb3RhbCkgcmV0dXJuOwogIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyN3aXphcmRCb2R5IC5waXAtc3RlcCcpLmZvckVhY2goZnVuY3Rpb24ocykgeyBzLmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpOyB9KTsKICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjd2l6YXJkQm9keSAucGlwLXN0ZXBbZGF0YS1zdGVwPSInICsgbiArICciXScpLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOwogIHdpemFyZEN1cnJlbnQgPSBuOwogIHVwZGF0ZVdpemFyZFVJKCk7Cn0KCmZ1bmN0aW9uIHdpemFyZE5hdihkaXIpIHsKICBnb1RvU3RlcCh3aXphcmRDdXJyZW50ICsgZGlyKTsKfQoKZnVuY3Rpb24gdXBkYXRlV2l6YXJkVUkoKSB7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dpemFyZEluZGljYXRvcicpLnRleHRDb250ZW50ID0gJ1Bhc28gJyArIHdpemFyZEN1cnJlbnQgKyAnIGRlICcgKyB3aXphcmRUb3RhbDsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd2l6YXJkUHJvZ3Jlc3MnKS5zdHlsZS53aWR0aCA9ICgod2l6YXJkQ3VycmVudCAvIHdpemFyZFRvdGFsKSAqIDEwMCkgKyAnJSc7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dpemFyZFByZXYnKS5kaXNhYmxlZCA9IHdpemFyZEN1cnJlbnQgPT09IDE7CiAgdmFyIG5leHRCdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd2l6YXJkTmV4dCcpOwogIG5leHRCdG4udGV4dENvbnRlbnQgPSB3aXphcmRDdXJyZW50ID09PSB3aXphcmRUb3RhbCA/ICdJciBhbCBwb3J0YWwgZGUgY29saXNpb25lcyBcdTIxOTInIDogJ1NpZ3VpZW50ZSBcdTIxOTInOwogIC8vIFVwZGF0ZSBkb3RzCiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnBpcC1zdGVwLWRvdCcpLmZvckVhY2goZnVuY3Rpb24oZCkgewogICAgdmFyIHMgPSBwYXJzZUludChkLmdldEF0dHJpYnV0ZSgnZGF0YS1zdGVwJykpOwogICAgZC5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnLCAnY29tcGxldGVkJyk7CiAgICBpZiAocyA9PT0gd2l6YXJkQ3VycmVudCkgZC5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKICAgIGVsc2UgaWYgKHMgPCB3aXphcmRDdXJyZW50KSBkLmNsYXNzTGlzdC5hZGQoJ2NvbXBsZXRlZCcpOwogIH0pOwp9CgovKiAtLS0tLS0tLS0tIFdJWkFSRCBOQVYgKGV2ZW50IGRlbGVnYXRpb24pIC0tLS0tLS0tLS0gKi8KZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnBpcC13aXphcmQtZm9vdGVyJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihlKSB7CiAgdmFyIGJ0biA9IGUudGFyZ2V0LmNsb3Nlc3QoJy5waXAtbmF2LWJ0bi1wcmV2Jyk7CiAgaWYgKGJ0biAmJiAhYnRuLmRpc2FibGVkKSB7CiAgICB3aXphcmROYXYoLTEpOwogICAgcmV0dXJuOwogIH0KICBidG4gPSBlLnRhcmdldC5jbG9zZXN0KCcucGlwLW5hdi1idG4tbmV4dCcpOwogIGlmIChidG4pIHsKICAgIGlmICh3aXphcmRDdXJyZW50ID09PSB3aXphcmRUb3RhbCkgewogICAgICB3aW5kb3cub3BlbignaHR0cHM6Ly9zZXJ2aWNlcy5mbGhzbXYuZ292L0NyYXNoUmVwb3J0UHVyY2hhc2luZy9lcy8nLCAnX2JsYW5rJyk7CiAgICB9IGVsc2UgewogICAgICB3aXphcmROYXYoMSk7CiAgICB9CiAgfQp9KTsKCi8qIC0tLS0tLS0tLS0gV0laQVJEIEtFWUJPQVJEIE5BViAtLS0tLS0tLS0tICovCmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBmdW5jdGlvbihlKSB7CiAgdmFyIHdpemFyZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3aXphcmQnKTsKICBpZiAoIXdpemFyZCkgcmV0dXJuOwogIHZhciBoYXNGb2N1cyA9IHdpemFyZC5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KTsKICBpZiAoIWhhc0ZvY3VzKSByZXR1cm47CiAgaWYgKGUua2V5ID09PSAnQXJyb3dMZWZ0JykgewogICAgd2l6YXJkTmF2KC0xKTsKICB9IGVsc2UgaWYgKGUua2V5ID09PSAnQXJyb3dSaWdodCcpIHsKICAgIGlmICh3aXphcmRDdXJyZW50ID09PSB3aXphcmRUb3RhbCkgcmV0dXJuOwogICAgd2l6YXJkTmF2KDEpOwogIH0KfSk7CgovKiAtLS0tLS0tLS0tIFRBQlMgKGV2ZW50IGRlbGVnYXRpb24pIC0tLS0tLS0tLS0gKi8KZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnBpcC10YWJzLW5hdicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogIHZhciBidG4gPSBlLnRhcmdldC5jbG9zZXN0KCcucGlwLXRhYi1idG4nKTsKICBpZiAoIWJ0bikgcmV0dXJuOwogIHZhciBwYW5lbElkID0gYnRuLmdldEF0dHJpYnV0ZSgnYXJpYS1jb250cm9scycpOwogIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5waXAtdGFiLWJ0bicpLmZvckVhY2goZnVuY3Rpb24oYikgewogICAgYi5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKTsKICAgIGIuc2V0QXR0cmlidXRlKCdhcmlhLXNlbGVjdGVkJywgJ2ZhbHNlJyk7CiAgfSk7CiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnBpcC10YWItcGFuZWwnKS5mb3JFYWNoKGZ1bmN0aW9uKHApIHsgcC5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKTsgfSk7CiAgYnRuLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOwogIGJ0bi5zZXRBdHRyaWJ1dGUoJ2FyaWEtc2VsZWN0ZWQnLCAndHJ1ZScpOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHBhbmVsSWQpLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOwp9KTsKCi8qIC0tLS0tLS0tLS0gQUNDT1JESU9OIChldmVudCBkZWxlZ2F0aW9uKSAtLS0tLS0tLS0tICovCmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5waXAtYWNjb3JkaW9uJykuZm9yRWFjaChmdW5jdGlvbihhY2NvcmRpb24pIHsKICBhY2NvcmRpb24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihlKSB7CiAgICB2YXIgaGVhZGVyID0gZS50YXJnZXQuY2xvc2VzdCgnLnBpcC1hY2NvcmRpb24taGVhZGVyJyk7CiAgICBpZiAoIWhlYWRlcikgcmV0dXJuOwogICAgdmFyIGl0ZW0gPSBoZWFkZXIucGFyZW50RWxlbWVudDsKICAgIHZhciBib2R5ID0gaXRlbS5xdWVyeVNlbGVjdG9yKCcucGlwLWFjY29yZGlvbi1ib2R5Jyk7CiAgICB2YXIgaXNPcGVuID0gaXRlbS5jbGFzc0xpc3QuY29udGFpbnMoJ29wZW4nKTsKCiAgICAvLyBDbG9zZSBhbGwgaXRlbXMgd2l0aGluIHRoaXMgYWNjb3JkaW9uIG9ubHkKICAgIGFjY29yZGlvbi5xdWVyeVNlbGVjdG9yQWxsKCcucGlwLWFjY29yZGlvbi1pdGVtJykuZm9yRWFjaChmdW5jdGlvbihhaSkgewogICAgICBhaS5jbGFzc0xpc3QucmVtb3ZlKCdvcGVuJyk7CiAgICAgIGFpLnF1ZXJ5U2VsZWN0b3IoJy5waXAtYWNjb3JkaW9uLWJvZHknKS5zdHlsZS5tYXhIZWlnaHQgPSBudWxsOwogICAgICBhaS5xdWVyeVNlbGVjdG9yKCcucGlwLWFjY29yZGlvbi1oZWFkZXInKS5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCAnZmFsc2UnKTsKICAgIH0pOwoKICAgIGlmICghaXNPcGVuKSB7CiAgICAgIGl0ZW0uY2xhc3NMaXN0LmFkZCgnb3BlbicpOwogICAgICBib2R5LnN0eWxlLm1heEhlaWdodCA9IGJvZHkuc2Nyb2xsSGVpZ2h0ICsgJ3B4JzsKICAgICAgaGVhZGVyLnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsICd0cnVlJyk7CiAgICB9CiAgfSk7Cn0pOwoKLyogLS0tLS0tLS0tLSBMSUdIVEJPWCAtLS0tLS0tLS0tICovCmZ1bmN0aW9uIG9wZW5MaWdodGJveCh3cmFwcGVyKSB7CiAgdmFyIGltZ1NyYyA9IHdyYXBwZXIucXVlcnlTZWxlY3RvcignaW1nJykuc3JjOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsaWdodGJveEltZycpLnNyYyA9IGltZ1NyYzsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGlnaHRib3hPdmVybGF5JykuY2xhc3NMaXN0LmFkZCgnb3BlbicpOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsaWdodGJveENsb3NlJykuY2xhc3NMaXN0LmFkZCgnb3BlbicpOwogIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJzsKICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcucHJvc3Blci1pbnRlcmFjdGl2ZS1wb3N0Jykuc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsICd0cnVlJyk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xpZ2h0Ym94Q2xvc2UnKS5mb2N1cygpOwp9CgpmdW5jdGlvbiBjbG9zZUxpZ2h0Ym94KCkgewogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsaWdodGJveE92ZXJsYXknKS5jbGFzc0xpc3QucmVtb3ZlKCdvcGVuJyk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xpZ2h0Ym94Q2xvc2UnKS5jbGFzc0xpc3QucmVtb3ZlKCdvcGVuJyk7CiAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICcnOwogIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5wcm9zcGVyLWludGVyYWN0aXZlLXBvc3QnKS5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJyk7Cn0KCi8qIExpZ2h0Ym94IGV2ZW50IGRlbGVnYXRpb24gb24gLnByb3NwZXItaW50ZXJhY3RpdmUtcG9zdCBmb3IgaW1nIHdyYXBwZXIgY2xpY2tzICovCmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5wcm9zcGVyLWludGVyYWN0aXZlLXBvc3QnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICB2YXIgd3JhcHBlciA9IGUudGFyZ2V0LmNsb3Nlc3QoJy5waXAtc3RlcC1pbWctd3JhcHBlcicpOwogIGlmICh3cmFwcGVyKSBvcGVuTGlnaHRib3god3JhcHBlcik7Cn0pOwoKLyogTGlnaHRib3ggb3ZlcmxheSBhbmQgY2xvc2UgYnV0dG9uICovCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsaWdodGJveE92ZXJsYXknKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkgewogIGNsb3NlTGlnaHRib3goKTsKfSk7CmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsaWdodGJveENsb3NlJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsKICBjbG9zZUxpZ2h0Ym94KCk7Cn0pOwoKZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGZ1bmN0aW9uKGUpIHsKICBpZiAoZS5rZXkgPT09ICdFc2NhcGUnKSBjbG9zZUxpZ2h0Ym94KCk7Cn0pOw==