Presentación

El presente documento contiene conceptos básicos sobre la liquidación de sueldos en Argentina y la explicación de los pasos a seguir para la presentación mediante un documento R Markdown.

Para mayor información sobre Rmarkdown podes consultar aquí.

Objetivo

Un acercamiento a los conceptos básicos de Liquidación de Sueldos.


Las librerias que utilizamos para el presente documento, son las siguientes:

library(googlesheets4)  # para trabajar con google drive
library(kableExtra) # para tablas 

Incorporamos los siguientes archivos y creamos objetos para cada uno.

La creación de objetos, nos permite la manipulación más ordenada de los datos.

SMVM <- read_sheet("1dFlrOU7HS35C4FSwinlKFKzDI7IdmIfoXSkddPr9ScQ")
Vacaciones <- read_sheet("1Def-yNRZFsWNfSfsr0hgZ5z7EVqtvOtdsypAF1GYiT8")
Licencias <- read_sheet("1-P07kXrYuvdndwe0Lb98Qcko2F9MRINbynQHFybcam4")
Inculpable <- read_sheet("1-P07kXrYuvdndwe0Lb98Qcko2F9MRINbynQHFybcam4", sheet = "Inculpable") # 2° hoja

Si existen elementos que vamos a utilizar reiteradamente, es conveniente crearlos al inicio y luego simplemente los invocamos:

fuente <- "Fuente: Elaboración propia"
azul <- "#344D7E"

Normativa

En el presente documento, vamos a utilizar en lineas generales la ley de contrato de trabajo que regula las relaciones laborales en el ambito privado.


Modalidades de Contratación

Existen diversas modalidades de contratación. Detallamos a continuación las principales.

Contrato por tiempo Indeterminado

La ley de contrato de trabajo prevé que el contrato de trabajo será por tiempo indeterminado a menos que se especifique otra modalidad.

No requiere formalidad alguna, y basta con el solo consentimiento inequívoco de las partes para que quede celebrado. Presenta la particularidad que durante los primeros tres meses el contrato de trabajo sea considerado a prueba.

Período de prueba

Forma parte de contrato de trabajo por tiempo indeterminado, el cual en su inicio puede adoptar esta modalidad. Por ello se debe hablar de contrato de trabajo por tiempo indeterminado “con” o “sin” período de prueba.

Presenta las siguientes particularidades:

  • Duración: Hasta tres meses.

  • Exclusión: No se aplica en el caso de trabajadores de temporada.

  • Ruptura unilateral: Durante el período de prueba cualquiera de las partes puede extinguir la relación laboral sin causa, sin deber de indemnizar.

  • Deber de Preavisar: Es de quince días, obligación esta dirigida al empleador y también al trabajador.

  • Registración: Al momeNto de dar el alta en AFIP se indica la modalidad de contratación “14”, en caso de no hacerlo se considera que la empresa renuncia al uso del mismo.

  • Recontratación: Un mismo trabajador no puede ser contratado por el mismo empleador más de una vez con período de prueba.

Contrato de Trabajo a Tiempo Parcial

El trabajador presta servicios durante un determinado número de horas al día o la semana, menos de dos tercios de la jornada habitual de la actividad. La remuneración es proporcional a lo que cobra el trabajador a tiempo completo de la misma categeoría.

Contrato por Tiempo Determinado

Los contratos de trabajo por tiempo determinado son, la excepción a la regla y obedecen a situaciones excepcionales que determinan la necesidad de recurrir a este tipo de contratos.

Solo cuando la situación así lo exija, las partes podrán aplicar estas modalidades contractuales las cuales están previstas en la ley. Además de la contingencia del plazo determinado, existen otras contingencias para las cuales la ley prevé modalidades específicas. Las modalidades contractuales son las siguientes:

Contrato a Plazo Fijo

En el contrato escrito, se debe especificar concretamente cuál es la causa que deriva en esta modalidad contractual. Se debe, a su vez, fijar la fecha de finalización en forma expresa. El registro en el sistema de simplificación registral de AFIP no sustituye la necesaria instrumentación escrita y firmada por las partes.

La registración en el sistema “Mi Simplificación” es mediante los códigos “21” o “22” (tiempo parcial o jornada completa, respectivamente), indicando fecha de finalización prevista.

El plazo máximo de duración es de cinco (5) años, sin que la ley prevea un plazo mínimo.

Como regla general, y así lo indica la norma, no se admiten contratos sucesivos si no media una causal objetiva que lo justifique (obra, actividad extraordinaria fuera del giro normal del establecimiento, reemplazo de personal, etcétera).

Preaviso: si el plazo del contrato supera el mes, el empleador debe preavisar fehacientemente su finalización dentro de un plazo anterior de la fecha de finalización superior al mes e inferior a dos meses. La falta de notificación del preaviso convierte, a modo de sanción, al contrato a plazo determinado en uno de tiempo indeterminado en forma automática.

Al momento de la extinción no se requiere notificar al trabajador, pero como hemos señalado cuando es superior al mes siempre se requiere cumplir con la formalidad del preaviso notificado en forma fehaciente. Nada obsta que el contrato a plazo fijo se extinga por otras causales previstas en la ley (renuncia, mutuo acuerdo, abandono, despido indirecto, con causa, etc.)

Contrato de Trabajo Eventual

La actividad del trabajador se ejerce bajo la dependencia de un empleador para resultados concretos para servicios extraordinarios determinados de antemano o exigencias extraordinarias y transitorias de la empresa, explotación o establecimiento cuando no puede preverse un plazo cierto para finalizar el contrato.

En estos casos el vínculo comienza y termina con la realización de la obra, la ejecución del acto o la prestación del servicio.

Contrato de Trabajo por Temporada

Por la naturaleza de la actividad, las tareas se desarrollan en determinadas épocas del año y se repiten anualmente.

Las modalidades de contratación se cargan en el legajo de cada empleado, y las mismas son declaradas en el Formulario 931.

Para mayor informacion sobre modalidades de contratación , se puede consultar la normativa aplicable en el siguiente enlace:

Modalidades de contratación.


Sueldo

Salario Minimo Vital y Movil

El Salario Mínimo Vital y Móvil, de acuerdo con la Ley de Contrato de Trabajo, se define como “la menor remuneración” que debe percibir en efectivo el trabajador sin cargas de familia, en su jornada legal de trabajo. El Consejo Nacional del Empleo, la Productividad y el Salario Mínimo Vital y Móvil (CNEPSMVM) determina periódicamente el Salario Mínimo.

Los importes vigentes son los siguientes:

SMVM%>% 
  kable("html", escape=F) %>%
    kable_styling(full_width = TRUE, bootstrap_options = c("striped","hover","condensed" )) %>% 
row_spec(0, bold=T, color="white", background = azul)
Periodo Importe
´Octubre 2021 32000
´Febrero 2022 33000

Salario Básico

El sueldo básico no puede ser inferior al SMVM.

Para los empleados fuera de convenio, el sueldo se conforma entre las partes. Para los empleados dentro de convenio, el mismo depende de las negociaciones en paritarias. Cada gremio determinará el sueldo correspondiente

Antigüedad

La antigüedad es el tiempo de servicio efectivo que un trabajador tiene en su lugar de trabajo, desde su ingreso o vinculación laboral. Si el empleado egresa de la compañia y reingresa a las ordenes del mismo empleador, mantiene la misma antiguedad.

Categoría Laboral

Las categorías laborales estan definidas en cada convenio colectivo de trabajo. La asignación de las mismas, depende de la tarea realizada.

A cada categoría le corresponde un sueldo básico determinado y según la tarea realizada, corresponderan adicionales que especifique el convenio.

Jornada Laboral

La jornada laboral es el plazo de tiempo durante el cual el empleado se encuentra a disposición del empleador.

La jornada laboral esta regulada por la LCT y la Ley 11544

Jornada de trabajo Diurna : Es aquella que se realiza en tre las 06:00hs y 21hs no debe superar las 8 horas diarias o las 48 semanales. Se trata de un límite máximo, por eso pueden existir jornadas con una duración menor.

Si no trabaja la misma cantidad de horas todos los días, ¿cuánto es el máximo de horas diarias que debe cumplir?

No más de 9 horas por día. En total, las jornadas no pueden sumar más de 48 hs. por semana.

Jornada de trabajo Nocturna : Es aquella que se realiza entre las 21:00hs y 06hs, el límite máximo de la jornada es 7 horas.

Jornada de trabajo Insalubre : Es aquella que el Ministerio de Trabajo ha decretado como insalubre, el límite es de 6 horas diarias.

Jornada de trabajo mixta : Corresponde cuando se alteren horas diurnas y nocturnas, porque el trabajo comienza antes de las 21hs y finaliza después de esa hora, o comienza antes de las 6:00 hs y finaliza después de esa hora. En este caso debe reducirse proporcionalmente la jornada en ocho minutos, por cada hora nocturna trabajada, o pagarse los ocho minutos de exceso como tiempo suplementario, al 50% o al 100% según corresponda.

Trabajo Insalubre

La duración del trabajo no puede ser mayor a 6 horas diarias o 36 semanales.

Si alterná trabajo insalubre con trabajo salubre, la jornada puede ser de 8 horas.

Pero cada hora trabajada en el lugar insalubre se considera como 1 hora y 33 minutos. No podés permanecer más de 3 horas por día en ese lugar.

Horas Extras

La ley de Jornada Laboral prevee una jornada semanal de 48hs.

Cualquier trabajo que haya excedido el limite de dicha jornada, debe ser remunerado como horas extra.

Limite de Horas extras:

El Decreto 484/2000 fija límites para la realización de horas extras:

◼️ 3 horas por día.

◼️ 30 horas mensuales.

◼ 200 horas anuales.

Horas Extras al 50%

Si la prestacion se realizo desde el Lunes hasta el sábado a las 13hs, cada hora extra laborada debe abonarse con un recargo del 50%.

Horas Extras al 100%

Si la prestación se realizo un día feriado, sábados después de las 13hs o domingos, cada hora extra laborada debe abonarse con un recargo del 100%.

Horas Nocturnas

El trabajo nocturno no puede durar más de 7 horas y tiene que cumplirse entre las 9 de la noche y las 6 de la mañana.

Si trabaja una parte durante el día y otra parte durante la noche, ¿cuál es la jornada de trabajo?

Las horas que trabaja entre las 9 de la noche y las 6 de la mañana valen como 1 hora y 8 minutos para calcular la jornada de trabajo.

Horas Nocturnas al 50%

Corresponde cuando el horario nocturno realizado por el trabajador, coincida con horas extras al 50%.

Horas Nocturnas al 100%

Corresponde cuando el horario nocturno realizado por el trabajador, coincida con horas extras al 100%.

Francos

El día de franco, o de descanso semanal, es un lapso en las que el trabajador no debe realizar tareas laborales. El objetivo principal del franco es de la recuperación de energía del trabajador luego de haber desempeñado sus tareas, que pueden haber exigido esfuerzo físico y/o psíquico.

Francos Trabajados

Si el empleado presta servicios un dia de franco, entonces corresponde abonar el dia con el 100% de recargo.

Dia no laborable

Días no laborales u optativos, son los empleadores quienes pueden optar por convocar o no a trabajar. Si no los convoca, no afectará el cobro del dia laboral, y en caso de ser convocados, percibiran el salario simple, sin ningún incremento.

Feriados

Es aquel día en los que la ley dispone que no se presten tareas laborales por conmemorarse alguna celebración religiosa, historia o algún otro evento de índole similar.

Se pueden consultar los dias feriados y no laborables en la siguiente página Ministerio del Interior.

Feriados Trabajados

En el caso que el empleado trabaje un feriado, tiene una bonificación del 100% extra de su valor.

Distribución del Horario Laboral

El empleador se encuentra autorizado legalmente a diagramar los horarios de trabajo cumpliendo los siguientes recaudos:

  • Los horarios de trabajo se deben hacer públicos en lugares visibles para conocimiento de todo el personal

  • Entre el cese de una jornada y el comienzo de la otra debera mediar una pausa no inferior a 21 horas

  • Durante la semana se pueden distribuir las horas de manera desigual (más horas un día y menos otro), pero en ningún caso puede superar las 9 horas diarias de trabajo

  • Respetar el descanso semanal de 35 horas corridas a partir del sábado a las 13 horas

Licencias

Vacaciones

Es una licencia anual, que corresponde segun la antiguedad del empleado. La antigüedad se computa al 31 de diciembre del año al cual corresponden las vacaciones.

¿Cuántos días corresponden por vacaciones?

Vacaciones%>% 
  kable("html", escape=F) %>%
    kable_styling(full_width = TRUE, bootstrap_options = c("striped","hover","condensed" )) %>% 
row_spec(0, bold=T, color="white", background = azul)
Antiguedad Dias
Menos de 6 meses 1 día cada 20 trabajado
de 6 meses - 5 años 14
5 años- 10 años 21
10 años - 20 años 28
Más de 20 años 35

¿ Qué pasa el primer año trabajado?

Cuando los empleados no llegaron a prestar servicios la mitad de los días laborables del año, la ley indica que gozarán de un día de vacaciones por cada veinte días de prestación efectiva. En este sentido, se consideran como días trabajados aquellos en que el dependiente no preste servicios por gozar de una licencia convencional o legal, o por estar enfermo o accidentado, o por otras causas no imputables al mismo. Se deberá determinar los días hábiles de acuerdo con el régimen propio de trabajo (si se labora o no el sábado; si se realiza actividad o no los días optativos, etc.)

Consideraciones generales:

◻️ Las vacaciones se deben notificar por escrito con 45 días de anticipación.

◻️ Los dias son corridos, salvo lo indique el convenio.

◻️ Las vacaciones comienzan un Lunes, salvo que la persona preste servicios en días inabiles, en ese caso comienzan luego del descanso semanal.

◻️ Las vacaciones se conceden entre el 1º de octubre y el 30 de abril del año siguiente.

◻️ A un período de vacaciones puede sumársele la tercera parte del período de vacaciones inmediatamente anterior que no se hubiere gozado.

◻️ Para el pago se tienen en cuenta los conceptos fijos y un promedio de los conceptos variables. El valor del día es con divisor 25.

Enfermedad y Accidente Inculpable

Las enfermedades inculpables son las contingencias que sufre el trabajador y que no tienen origen en el trabajo.(Ejemplo: gripe). Estan cubiertos por la obra social del trabajador.

Dichas contingencias imposibilitan al empleado a prestar teareas, generando el derecho a gozar de una licencia paga por cada enfermedad o accidente inculpable por un periodo variable, según la antiguedad y cargas de familia del colaborador.

Inculpable%>% 
  kable("html", escape=F) %>%
    kable_styling(full_width = TRUE, bootstrap_options = c("striped","hover","condensed" )) %>% 
row_spec(0, bold=T, color="white", background = azul)
Antigüedad Sin cargas de flia Con cargas de flia
Menos de 5 años 3 meses 6 meses
Mas de 5 años 6 meses 12 meses

Reserva de Puesto

Vencido el plazo que le corresponda de goce por enfermedad, y si el empleado no se encuentra en condiciones de reintegrase, ingresa en lo que se denomina periodo de reserva o conservación de puesto. El plazo máximo de duración es de 1 año y es sin goce de haberes. El ingreso a este periodo debe notificarse de manera fehaciente al trabajador (por carta documento).

Una vez que transcurra el año, y en el caso que el empleado no se reintegrara a trabajar, por continuar su enfermedad, la relación se mantiene vigente salvo que alguna de las partes comunicara a la otra, su intención de finalizar la relación laboral, eximiendo el pago de indemnización. Esta notificación debe ser también de manera fehaciente.

Enfermedad y Accidente Laboral

Se considera accidente a todo acontecimiento ocurrido por el hecho o en ocasión del trabajo, o en el trayecto entre el domicilio del trabajador y el lugar de trabajo, siempre y cuando el damnificado no hubiere interrumpido o alterado dicho trayecto por causas ajenas al trabajo.

El trabajador podrá declarar por escrito ante el empleador, y éste dentro de las 72 horas ante el asegurador, que el “itinere” se modifica por razones de estudio, concurrencia a otro empleo o atención de familiar directo enfermo y no conviviente, debiendo presentar el pertinente certificado a requerimiento del empleador dentro de los 3 días hábiles de requerido.

Se consideran enfermedades profesionales aquellas que están incluidas en el listado de enfermedades profesionales.

En caso de enfermedad o accidente laboral se realiza la denuncia del siniestro ante la ART, quien evaluara el mismo y podra solicitar documentacion o información adicional. El empleador abonara los primeros 10 dias del accidente, los dias posteriores se hace cargo la ART. Los salarios por los dias de accidente, los abona la empresa, y luego la empresa realiza las gestiones con la ART para solicitar el recupero de los mismos.

Para mayor informacion sobre los riesgos de trabajo, podes consultar en el siguiente enlace:

Superintencia de Riesgos de Trabajo.

Licencias Especiales

Las licencias generales establecidas en la LCT son las siguientes:

Licencias%>% 
  kable("html", escape=F) %>%
    kable_styling(full_width = TRUE, bootstrap_options = c("striped","hover","condensed" )) %>% 
row_spec(0, bold=T, color="white", background = azul)
Licencia Dias
Nacimiento 2
Matrimonio 10
Fallecimiento esposo/a, concubino/a, hijos/as o padres 3
Fallecimiento hermano/a 1
Exámen 2 (Max: 10 anuales)

Cada licencia se deberá justificar con la acreditación correspondiente

Embargos

Los embargos son disposiciones oficiales, determinadas por jueces y son informados a las empresas por oficios. Cuando la empresa es notificada en forma fehaciente del mismo, esta obligada a aplicar la notificacion correspondiente, sea una retención o un cese de la misma. Cuando se finaliza el embargo, se puede solicitar un libre de deuda en el juzgado correspondiente.

Para mayor informacion sobre embargos, se puede consultar la normativa aplicable en el siguiente enlace Embargos.

Hay dos tipo de Embargos:

1- Embargo de Alimento

Son embargos por deuda de alimento. El limite lo determinan los jueces. La determinacion de los conceptos alcanzados, depende de cada oficio. Puede ser valores fijos o variables.

2- Embargo Comercial

La normativa de embargos dispone, para embargos comunes o comerciales, que las remuneraciones mensuales brutas (antes de descuentos de ley) devengadas por el trabajador, así como el SAC, son inembargables hasta la suma del SMVM.

Lo que exceda del SMVM puede ser embargado, según el siguiente procedimiento:

Para remuneraciones brutas inferiores a DOS (2) veces el SMVM, hasta el 10% de lo que exceda del SMVM.

Para el caso de retribuciones brutas superiores a DOS (2) veces el SMVM, hasta el 20% de lo que supere el SMVM.

A su vez, en los meses donde se abone el aguinaldo, se deberá computar un 50% del SMVM para comparar con ese SAC, a efectos de determinar los porcentajes antes aludidos.


Seguridad Social

Formulario 931

El formulario 931 se trata de una declaración jurada que especifica los aportes y contribuciones a la seguridad social.

La declaración es por cada colaborador que se haya dado de alta en el periodo a presentar.

Los datos que se declaran, son los que figuran en el legajo del empleado, asi como la liquidacion de sueldos del período.

El vencimiento del F 931, depende de la terminación del CUIT de la empresa.

Las fechas de vencimiento, se declaran en la siguiente pagina Vencimientos

Obra Social

-General: Todos los empleados acceden a la obra social sindical de la actividad.

Otorgar la obra social, es responsabilidad de la empresa, pero darse de alta en la misma, es un tramite personal.

-Prepaga: La empresa puede otorgar como beneficio una prepaga, para ello desregula los aportes mediante una obra social Jerárquica. La diferencia que se genera por el otorgamiento del beneficio, es un costo de la empresa.

-Cambio de Obra social: Los empleados tienen derecho a cambiar de obra social, una vez por año. Es un tramite personal. en caso de realizarlo, tienen que presentar el formulario de cambio de obra social, a fin de actualizar su legajo en el sistema y declararlo correctamente ante AFIP.

-Las obras sociales, se cargan en el legajo del empleado, la misma es declarada en el Formulario 931.

-Consulta de obra social: Se puede consultar la obra social vigente del empleado, en el siguiente enlace Padron de Obras sociales.

Asignaciones Familiares

Las asignaciones familiares, las abona ANSES, se pueden consultar las mismas en el siguiente enlace Anses.

Montos de las asignaciones familiares

Los valores de las asignaciones se van actualizando en diferentes momentos del año.

Para acceder al cobro de las mismas, va a depende del ingreso del grupo familiar (IGF).

En el caso que el empleado supere el monto individual del IGF, se excluye el cobro de las mismas.

Las remueneraciones que considera Anses para el pago de las asignaciones familiares son las siguientes:

◼️️ Las remuneraciones brutas y sumas no remunerativas decladas en el Formulario 931

◼️ Se excluyen las horas extras, el plus por zona desfavorable y el aguinaldo

Relaciones Laborales

En el caso de realizar un alta, baja o modificación de un empleado, la misma debe ser reflejada en AFIP. El procedimiento se puede consultar en la siguiente página ABM

¿Cuál es el plazo para dar de alta a un trabajador?

Hasta el día inmediato anterior, inclusive, al de comienzo efectivo de las tareas.

¿Cuál es el plazo para dar de baja a un trabajador?

Debe realizarse dentro del plazo de 5 días corridos contados a partir de la fecha –inclusive- en que se produjo la extinción del contrato de trabajo, por cualquier causa.

¿Cuál es el plazo para la modificación de datos?

Los datos del empleador y del trabajador que no se actualicen automáticamente en el sistema mediante la información suministrada por otras bases de datos, deben ser modificados dentro de los 5 días hábiles de haber ocurrido el evento que origina el cambio.

¿Cuál es el plazo para anular un alta?

La anulación del alta se realiza cuando no se concreta la relación laboral.

Dicha anulación deberá efectuarse hasta las 24 horas, inclusive, del día informado como de inicio de la relación laboral.

No obstante, el citado plazo se extenderá hasta las 12 horas del día siguiente, cuando la jornada laboral esté prevista iniciarse desde las 17 horas en adelante.

Asimismo, la relación laboral que se inicie un día inhábil , podrá ser anulada hasta las 12 horas del primer día hábil siguiente


Contacto

Yanel Paulette


En caso de encontrar observaciones, información incompleta o que deseen ampliar quedan abiertos los canales de contacto

LS0tDQp0aXRsZTogIkxpcXVpZGFjacOzbiBkZSBTdWVsZG9zIg0Kc3VidGl0bGU6ICJDb25jZXB0b3MgQsOhc2ljb3MiDQphdXRob3I6ICJZYW5lbCBQYXVsZXR0ZSINCmRhdGU6ICdcdG9kYXknDQpsaW5rY29sb3I6IGJsdWUNCnVybGNvbG9yOiBibHVlDQpvdXRwdXQ6DQogIGh0bWxfZG9jdW1lbnQ6DQogICAgdGhlbWU6IHNwYWNlbGFiDQogICAgdG9jOiB0cnVlDQogICAgdG9jX2Zsb2F0OiB0cnVlDQogICAgY29kZV9mb2xkaW5nOiBzaG93DQogICAgY29kZV9kb3dubG9hZDogdHJ1ZQ0KDQotLS0NCg0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0gDQprbml0cjo6b3B0c19jaHVuayRzZXQod2FybmluZyA9IEZBTFNFLCBtZXNzYWdlID0gRkFMU0UpIA0KDQpgYGANCg0KDQojIyBQcmVzZW50YWNpw7NuIA0KDQpFbCBwcmVzZW50ZSBkb2N1bWVudG8gY29udGllbmUgY29uY2VwdG9zIGLDoXNpY29zIHNvYnJlIGxhIGxpcXVpZGFjacOzbiBkZSBzdWVsZG9zIGVuIEFyZ2VudGluYSB5IGxhIGV4cGxpY2FjacOzbiBkZSBsb3MgcGFzb3MgYSBzZWd1aXIgcGFyYSBsYSBwcmVzZW50YWNpw7NuIG1lZGlhbnRlIHVuIGRvY3VtZW50byBSIE1hcmtkb3duLg0KDQpQYXJhIG1heW9yIGluZm9ybWFjacOzbiBzb2JyZSBSbWFya2Rvd24gcG9kZXMgY29uc3VsdGFyIFthcXXDrV0oaHR0cHM6Ly9ybWFya2Rvd24ucnN0dWRpby5jb20vKS4NCg0KDQojIyBPYmpldGl2bw0KDQoNClVuIGFjZXJjYW1pZW50byBhIGxvcyAgY29uY2VwdG9zIGLDoXNpY29zIGRlIExpcXVpZGFjacOzbiBkZSBTdWVsZG9zLiANCg0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KDQoNCkxhcyBsaWJyZXJpYXMgcXVlICB1dGlsaXphbW9zIHBhcmEgZWwgcHJlc2VudGUgZG9jdW1lbnRvLCBzb24gbGFzIHNpZ3VpZW50ZXM6IA0KDQoNCmBgYHtyIH0NCg0KDQpsaWJyYXJ5KGdvb2dsZXNoZWV0czQpICAjIHBhcmEgdHJhYmFqYXIgY29uIGdvb2dsZSBkcml2ZQ0KbGlicmFyeShrYWJsZUV4dHJhKSAjIHBhcmEgdGFibGFzIA0KDQoNCmBgYA0KDQoNCkluY29ycG9yYW1vcyBsb3Mgc2lndWllbnRlcyBhcmNoaXZvcyAgeSBjcmVhbW9zIG9iamV0b3MgcGFyYSBjYWRhIHVuby4NCg0KDQpMYSBjcmVhY2nDs24gZGUgb2JqZXRvcywgbm9zIHBlcm1pdGUgbGEgbWFuaXB1bGFjacOzbiBtw6FzIG9yZGVuYWRhIGRlIGxvcyBkYXRvcy4NCg0KDQoNCmBgYHtyfQ0KDQoNCg0KU01WTSA8LSByZWFkX3NoZWV0KCIxZEZsck9VN0hTMzVDNEZTd2lubEtGS3pESTdJZG1JZm9YU2tkZFByOVNjUSIpDQpWYWNhY2lvbmVzIDwtIHJlYWRfc2hlZXQoIjFEZWYteU5SWkZzV05mU2ZzcjBoZ1o1ejdFVnF0dk90ZHN5cEFGMUdZaVQ4IikNCkxpY2VuY2lhcyA8LSByZWFkX3NoZWV0KCIxLVAwN2tYcll1dmRuZHdlMExiOThRY2tvMkY5TVJJTmJ5blFIRnliY2FtNCIpDQpJbmN1bHBhYmxlIDwtIHJlYWRfc2hlZXQoIjEtUDA3a1hyWXV2ZG5kd2UwTGI5OFFja28yRjlNUklOYnluUUhGeWJjYW00Iiwgc2hlZXQgPSAiSW5jdWxwYWJsZSIpICMgMsKwIGhvamENCg0KDQpgYGANCg0KDQpTaSBleGlzdGVuIGVsZW1lbnRvcyBxdWUgdmFtb3MgYSB1dGlsaXphciByZWl0ZXJhZGFtZW50ZSwgZXMgY29udmVuaWVudGUgY3JlYXJsb3MgYWwgaW5pY2lvIHkgbHVlZ28gc2ltcGxlbWVudGUgIGxvcyBpbnZvY2Ftb3M6IA0KDQoNCmBgYHtyfQ0KDQpmdWVudGUgPC0gIkZ1ZW50ZTogRWxhYm9yYWNpw7NuIHByb3BpYSINCmF6dWwgPC0gIiMzNDREN0UiDQoNCg0KYGBgDQoNCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCiMjIE5vcm1hdGl2YQ0KDQpFbiBlbCBwcmVzZW50ZSBkb2N1bWVudG8sIHZhbW9zIGEgdXRpbGl6YXIgZW4gbGluZWFzIGdlbmVyYWxlcyBsYSBbbGV5IGRlIGNvbnRyYXRvIGRlIHRyYWJham9dKGh0dHA6Ly9zZXJ2aWNpb3MuaW5mb2xlZy5nb2IuYXIvaW5mb2xlZ0ludGVybmV0L3Zlck5vcm1hLmRvP2lkPTI1NTUyKSBxdWUgcmVndWxhIGxhcyByZWxhY2lvbmVzIGxhYm9yYWxlcyBlbiBlbCBhbWJpdG8gcHJpdmFkby4NCg0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KIyMgTW9kYWxpZGFkZXMgZGUgQ29udHJhdGFjacOzbiB7LnRhYnNldCAudGFic2V0LWZhZGUgLnRhYnNldC1waWxsc30NCg0KRXhpc3RlbiBkaXZlcnNhcyBtb2RhbGlkYWRlcyBkZSBjb250cmF0YWNpw7NuLg0KRGV0YWxsYW1vcyBhIGNvbnRpbnVhY2nDs24gbGFzIHByaW5jaXBhbGVzLg0KDQojIyMgQ29udHJhdG8gcG9yIHRpZW1wbyBJbmRldGVybWluYWRvDQoNCkxhIGxleSBkZSBjb250cmF0byBkZSB0cmFiYWpvIHByZXbDqSBxdWUgZWwgY29udHJhdG8gZGUgdHJhYmFqbyBzZXLDoSBwb3IgdGllbXBvIGluZGV0ZXJtaW5hZG8gYSBtZW5vcyBxdWUgc2UgZXNwZWNpZmlxdWUgb3RyYSBtb2RhbGlkYWQuDQoNCk5vIHJlcXVpZXJlIGZvcm1hbGlkYWQgYWxndW5hLCB5IGJhc3RhIGNvbiBlbCBzb2xvIGNvbnNlbnRpbWllbnRvIGluZXF1w612b2NvIGRlIGxhcyBwYXJ0ZXMgcGFyYSBxdWUgcXVlZGUgY2VsZWJyYWRvLg0KUHJlc2VudGEgbGEgcGFydGljdWxhcmlkYWQgcXVlIGR1cmFudGUgbG9zIHByaW1lcm9zIHRyZXMgbWVzZXMgZWwgY29udHJhdG8gZGUgdHJhYmFqbyBzZWEgY29uc2lkZXJhZG8gYSBwcnVlYmEuDQoNCiMjIyBQZXLDrW9kbyBkZSBwcnVlYmENCg0KRm9ybWEgcGFydGUgZGUgY29udHJhdG8gZGUgdHJhYmFqbyBwb3IgdGllbXBvIGluZGV0ZXJtaW5hZG8sIGVsIGN1YWwgZW4gc3UgaW5pY2lvIHB1ZWRlIGFkb3B0YXIgZXN0YSBtb2RhbGlkYWQuDQpQb3IgZWxsbyBzZSBkZWJlIGhhYmxhciBkZSBjb250cmF0byBkZSB0cmFiYWpvIHBvciB0aWVtcG8gaW5kZXRlcm1pbmFkbyAiY29uIiBvICJzaW4iIHBlcsOtb2RvIGRlIHBydWViYS4NCg0KUHJlc2VudGEgbGFzIHNpZ3VpZW50ZXMgcGFydGljdWxhcmlkYWRlczoNCg0KLSAgIER1cmFjacOzbjogSGFzdGEgdHJlcyBtZXNlcy4NCg0KLSAgIEV4Y2x1c2nDs246IE5vIHNlIGFwbGljYSBlbiBlbCBjYXNvIGRlIHRyYWJhamFkb3JlcyBkZSB0ZW1wb3JhZGEuDQoNCi0gICBSdXB0dXJhIHVuaWxhdGVyYWw6IER1cmFudGUgZWwgcGVyw61vZG8gZGUgcHJ1ZWJhIGN1YWxxdWllcmEgZGUgbGFzIHBhcnRlcyBwdWVkZSBleHRpbmd1aXIgbGEgcmVsYWNpw7NuIGxhYm9yYWwgc2luIGNhdXNhLCBzaW4gZGViZXIgZGUgaW5kZW1uaXphci4NCg0KLSAgIERlYmVyIGRlIFByZWF2aXNhcjogRXMgZGUgcXVpbmNlIGTDrWFzLCBvYmxpZ2FjacOzbiBlc3RhIGRpcmlnaWRhIGFsIGVtcGxlYWRvciB5IHRhbWJpw6luIGFsIHRyYWJhamFkb3IuDQoNCi0gICBSZWdpc3RyYWNpw7NuOiBBbCBtb21lTnRvIGRlIGRhciBlbCBhbHRhIGVuIEFGSVAgc2UgaW5kaWNhIGxhIG1vZGFsaWRhZCBkZSBjb250cmF0YWNpw7NuICIxNCIsIGVuIGNhc28gZGUgbm8gaGFjZXJsbyBzZSBjb25zaWRlcmEgcXVlIGxhIGVtcHJlc2EgcmVudW5jaWEgYWwgdXNvIGRlbCBtaXNtby4NCg0KLSAgIFJlY29udHJhdGFjacOzbjogVW4gbWlzbW8gdHJhYmFqYWRvciBubyBwdWVkZSBzZXIgY29udHJhdGFkbyBwb3IgZWwgbWlzbW8gZW1wbGVhZG9yIG3DoXMgZGUgdW5hIHZleiBjb24gcGVyw61vZG8gZGUgcHJ1ZWJhLg0KDQojIyMgQ29udHJhdG8gZGUgVHJhYmFqbyBhIFRpZW1wbyBQYXJjaWFsDQoNCkVsIHRyYWJhamFkb3IgcHJlc3RhIHNlcnZpY2lvcyBkdXJhbnRlIHVuIGRldGVybWluYWRvIG7Dum1lcm8gZGUgaG9yYXMgYWwgZMOtYSBvIGxhIHNlbWFuYSwgbWVub3MgZGUgZG9zIHRlcmNpb3MgZGUgbGEgam9ybmFkYSBoYWJpdHVhbCBkZSBsYSBhY3RpdmlkYWQuDQpMYSByZW11bmVyYWNpw7NuIGVzIHByb3BvcmNpb25hbCBhIGxvIHF1ZSBjb2JyYSBlbCB0cmFiYWphZG9yIGEgdGllbXBvIGNvbXBsZXRvIGRlIGxhIG1pc21hIGNhdGVnZW9yw61hLg0KDQojIyMgIENvbnRyYXRvIHBvciBUaWVtcG8gRGV0ZXJtaW5hZG8NCg0KTG9zIGNvbnRyYXRvcyBkZSB0cmFiYWpvIHBvciB0aWVtcG8gZGV0ZXJtaW5hZG8gc29uLCBsYSBleGNlcGNpw7NuIGEgbGEgcmVnbGEgeSBvYmVkZWNlbiBhIHNpdHVhY2lvbmVzIGV4Y2VwY2lvbmFsZXMgcXVlIGRldGVybWluYW4gbGEgbmVjZXNpZGFkIGRlIHJlY3VycmlyIGEgZXN0ZSB0aXBvIGRlIGNvbnRyYXRvcy4NCg0KU29sbyBjdWFuZG8gbGEgc2l0dWFjacOzbiBhc8OtIGxvIGV4aWphLCBsYXMgcGFydGVzIHBvZHLDoW4gYXBsaWNhciBlc3RhcyBtb2RhbGlkYWRlcyBjb250cmFjdHVhbGVzIGxhcyBjdWFsZXMgZXN0w6FuIHByZXZpc3RhcyBlbiBsYSBsZXkuDQpBZGVtw6FzIGRlIGxhIGNvbnRpbmdlbmNpYSBkZWwgcGxhem8gZGV0ZXJtaW5hZG8sIGV4aXN0ZW4gb3RyYXMgY29udGluZ2VuY2lhcyBwYXJhIGxhcyBjdWFsZXMgbGEgbGV5IHByZXbDqSBtb2RhbGlkYWRlcyBlc3BlY8OtZmljYXMuDQpMYXMgbW9kYWxpZGFkZXMgY29udHJhY3R1YWxlcyBzb24gbGFzIHNpZ3VpZW50ZXM6DQoNCiMjIyBDb250cmF0byBhIFBsYXpvIEZpam8NCg0KRW4gZWwgY29udHJhdG8gZXNjcml0bywgc2UgZGViZSBlc3BlY2lmaWNhciBjb25jcmV0YW1lbnRlIGN1w6FsIGVzIGxhIGNhdXNhIHF1ZSBkZXJpdmEgZW4gZXN0YSBtb2RhbGlkYWQgY29udHJhY3R1YWwuDQpTZSBkZWJlLCBhIHN1IHZleiwgZmlqYXIgbGEgZmVjaGEgZGUgZmluYWxpemFjacOzbiBlbiBmb3JtYSBleHByZXNhLg0KRWwgcmVnaXN0cm8gZW4gZWwgc2lzdGVtYSBkZSBzaW1wbGlmaWNhY2nDs24gcmVnaXN0cmFsIGRlIEFGSVAgbm8gc3VzdGl0dXllIGxhIG5lY2VzYXJpYSBpbnN0cnVtZW50YWNpw7NuIGVzY3JpdGEgeSBmaXJtYWRhIHBvciBsYXMgcGFydGVzLg0KDQpMYSByZWdpc3RyYWNpw7NuIGVuIGVsIHNpc3RlbWEgIk1pIFNpbXBsaWZpY2FjacOzbiIgZXMgbWVkaWFudGUgbG9zIGPDs2RpZ29zICIyMSIgbyAiMjIiICh0aWVtcG8gcGFyY2lhbCBvIGpvcm5hZGEgY29tcGxldGEsIHJlc3BlY3RpdmFtZW50ZSksIGluZGljYW5kbyBmZWNoYSBkZSBmaW5hbGl6YWNpw7NuIHByZXZpc3RhLg0KDQpFbCBwbGF6byBtw6F4aW1vIGRlIGR1cmFjacOzbiBlcyBkZSBjaW5jbyAoNSkgYcOxb3MsIHNpbiBxdWUgbGEgbGV5IHByZXZlYSB1biBwbGF6byBtw61uaW1vLg0KDQpDb21vIHJlZ2xhIGdlbmVyYWwsIHkgYXPDrSBsbyBpbmRpY2EgbGEgbm9ybWEsIG5vIHNlIGFkbWl0ZW4gY29udHJhdG9zIHN1Y2VzaXZvcyBzaSBubyBtZWRpYSB1bmEgY2F1c2FsIG9iamV0aXZhIHF1ZSBsbyBqdXN0aWZpcXVlIChvYnJhLCBhY3RpdmlkYWQgZXh0cmFvcmRpbmFyaWEgZnVlcmEgZGVsIGdpcm8gbm9ybWFsIGRlbCBlc3RhYmxlY2ltaWVudG8sIHJlZW1wbGF6byBkZSBwZXJzb25hbCwgZXRjw6l0ZXJhKS4NCg0KUHJlYXZpc286IHNpIGVsIHBsYXpvIGRlbCBjb250cmF0byBzdXBlcmEgZWwgbWVzLCBlbCBlbXBsZWFkb3IgZGViZSBwcmVhdmlzYXIgZmVoYWNpZW50ZW1lbnRlIHN1IGZpbmFsaXphY2nDs24gZGVudHJvIGRlIHVuIHBsYXpvIGFudGVyaW9yIGRlIGxhIGZlY2hhIGRlIGZpbmFsaXphY2nDs24gc3VwZXJpb3IgYWwgbWVzIGUgaW5mZXJpb3IgYSBkb3MgbWVzZXMuDQpMYSBmYWx0YSBkZSBub3RpZmljYWNpw7NuIGRlbCBwcmVhdmlzbyBjb252aWVydGUsIGEgbW9kbyBkZSBzYW5jacOzbiwgYWwgY29udHJhdG8gYSBwbGF6byBkZXRlcm1pbmFkbyBlbiB1bm8gZGUgdGllbXBvIGluZGV0ZXJtaW5hZG8gZW4gZm9ybWEgYXV0b23DoXRpY2EuDQoNCkFsIG1vbWVudG8gZGUgbGEgZXh0aW5jacOzbiBubyBzZSByZXF1aWVyZSBub3RpZmljYXIgYWwgdHJhYmFqYWRvciwgcGVybyBjb21vIGhlbW9zIHNlw7FhbGFkbyBjdWFuZG8gZXMgc3VwZXJpb3IgYWwgbWVzIHNpZW1wcmUgc2UgcmVxdWllcmUgY3VtcGxpciBjb24gbGEgZm9ybWFsaWRhZCBkZWwgcHJlYXZpc28gbm90aWZpY2FkbyBlbiBmb3JtYSBmZWhhY2llbnRlLg0KTmFkYSBvYnN0YSBxdWUgZWwgY29udHJhdG8gYSBwbGF6byBmaWpvIHNlIGV4dGluZ2EgcG9yIG90cmFzIGNhdXNhbGVzIHByZXZpc3RhcyBlbiBsYSBsZXkgKHJlbnVuY2lhLCBtdXR1byBhY3VlcmRvLCBhYmFuZG9ubywgZGVzcGlkbyBpbmRpcmVjdG8sIGNvbiBjYXVzYSwgZXRjLikNCg0KIyMjIENvbnRyYXRvIGRlIFRyYWJham8gRXZlbnR1YWwNCg0KTGEgYWN0aXZpZGFkIGRlbCB0cmFiYWphZG9yIHNlIGVqZXJjZSBiYWpvIGxhIGRlcGVuZGVuY2lhIGRlIHVuIGVtcGxlYWRvciBwYXJhIHJlc3VsdGFkb3MgY29uY3JldG9zIHBhcmEgc2VydmljaW9zIGV4dHJhb3JkaW5hcmlvcyBkZXRlcm1pbmFkb3MgZGUgYW50ZW1hbm8gbyBleGlnZW5jaWFzIGV4dHJhb3JkaW5hcmlhcyB5IHRyYW5zaXRvcmlhcyBkZSBsYSBlbXByZXNhLCBleHBsb3RhY2nDs24gbyBlc3RhYmxlY2ltaWVudG8gY3VhbmRvIG5vIHB1ZWRlIHByZXZlcnNlIHVuIHBsYXpvIGNpZXJ0byBwYXJhIGZpbmFsaXphciBlbCBjb250cmF0by4NCg0KRW4gZXN0b3MgY2Fzb3MgZWwgdsOtbmN1bG8gY29taWVuemEgeSB0ZXJtaW5hIGNvbiBsYSByZWFsaXphY2nDs24gZGUgbGEgb2JyYSwgbGEgZWplY3VjacOzbiBkZWwgYWN0byBvIGxhIHByZXN0YWNpw7NuIGRlbCBzZXJ2aWNpby4NCg0KIyMjIENvbnRyYXRvIGRlIFRyYWJham8gcG9yIFRlbXBvcmFkYQ0KDQpQb3IgbGEgbmF0dXJhbGV6YSBkZSBsYSBhY3RpdmlkYWQsIGxhcyB0YXJlYXMgc2UgZGVzYXJyb2xsYW4gZW4gZGV0ZXJtaW5hZGFzIMOpcG9jYXMgZGVsIGHDsW8geSBzZSByZXBpdGVuIGFudWFsbWVudGUuDQoNCkxhcyBtb2RhbGlkYWRlcyBkZSBjb250cmF0YWNpw7NuIHNlIGNhcmdhbiBlbiBlbCBsZWdham8gZGUgY2FkYSBlbXBsZWFkbywgeSBsYXMgbWlzbWFzIHNvbiBkZWNsYXJhZGFzIGVuIGVsIEZvcm11bGFyaW8gOTMxLg0KDQpQYXJhIG1heW9yIGluZm9ybWFjaW9uIHNvYnJlIG1vZGFsaWRhZGVzIGRlIGNvbnRyYXRhY2nDs24gLCBzZSBwdWVkZSBjb25zdWx0YXIgbGEgbm9ybWF0aXZhIGFwbGljYWJsZSBlbiBlbCBzaWd1aWVudGUgZW5sYWNlOg0KDQpbTW9kYWxpZGFkZXMgZGUgY29udHJhdGFjacOzbl0oaHR0cHM6Ly93d3cuYXJnZW50aW5hLmdvYi5hci90cmFiYWpvL2d1aWFkZWNvbnRyYXRhY2lvbikuDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQoNCg0KIyMgU3VlbGRvDQoNCg0KKipTYWxhcmlvIE1pbmltbyBWaXRhbCB5IE1vdmlsKioNCg0KRWwgU2FsYXJpbyBNw61uaW1vIFZpdGFsIHkgTcOzdmlsLCBkZSBhY3VlcmRvIGNvbiBsYSBMZXkgZGUgQ29udHJhdG8gZGUgVHJhYmFqbywgc2UgZGVmaW5lIGNvbW8gImxhIG1lbm9yIHJlbXVuZXJhY2nDs24iIHF1ZSBkZWJlIHBlcmNpYmlyIGVuIGVmZWN0aXZvIGVsIHRyYWJhamFkb3Igc2luIGNhcmdhcyBkZSBmYW1pbGlhLCBlbiBzdSBqb3JuYWRhIGxlZ2FsIGRlIHRyYWJham8uDQpFbCBDb25zZWpvIE5hY2lvbmFsIGRlbCBFbXBsZW8sIGxhIFByb2R1Y3RpdmlkYWQgeSBlbCBTYWxhcmlvIE3DrW5pbW8gVml0YWwgeSBNw7N2aWwgKENORVBTTVZNKSBkZXRlcm1pbmEgcGVyacOzZGljYW1lbnRlIGVsIFNhbGFyaW8gTcOtbmltby4NCg0KTG9zIGltcG9ydGVzIHZpZ2VudGVzIHNvbiBsb3Mgc2lndWllbnRlczoNCg0KYGBge3J9DQoNClNNVk0lPiUgDQogIGthYmxlKCJodG1sIiwgZXNjYXBlPUYpICU+JQ0KICAgIGthYmxlX3N0eWxpbmcoZnVsbF93aWR0aCA9IFRSVUUsIGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsImhvdmVyIiwiY29uZGVuc2VkIiApKSAlPiUgDQpyb3dfc3BlYygwLCBib2xkPVQsIGNvbG9yPSJ3aGl0ZSIsIGJhY2tncm91bmQgPSBhenVsKQ0KDQoNCg0KYGBgDQoNCioqU2FsYXJpbyBCw6FzaWNvKioNCg0KRWwgc3VlbGRvIGLDoXNpY28gbm8gcHVlZGUgc2VyIGluZmVyaW9yIGFsIFNNVk0uDQoNClBhcmEgbG9zIGVtcGxlYWRvcyBmdWVyYSBkZSBjb252ZW5pbywgZWwgc3VlbGRvIHNlIGNvbmZvcm1hIGVudHJlIGxhcyBwYXJ0ZXMuDQpQYXJhIGxvcyBlbXBsZWFkb3MgZGVudHJvIGRlIGNvbnZlbmlvLCBlbCBtaXNtbyBkZXBlbmRlIGRlIGxhcyBuZWdvY2lhY2lvbmVzIGVuIHBhcml0YXJpYXMuDQpDYWRhIGdyZW1pbyBkZXRlcm1pbmFyw6EgZWwgc3VlbGRvIGNvcnJlc3BvbmRpZW50ZQ0KDQoNCioqQW50aWfDvGVkYWQqKg0KDQpMYSBhbnRpZ8O8ZWRhZCBlcyBlbCB0aWVtcG8gZGUgc2VydmljaW8gZWZlY3Rpdm8gcXVlIHVuIHRyYWJhamFkb3IgdGllbmUgZW4gc3UgbHVnYXIgZGUgdHJhYmFqbywgZGVzZGUgc3UgaW5ncmVzbyBvIHZpbmN1bGFjacOzbiBsYWJvcmFsLg0KU2kgZWwgZW1wbGVhZG8gZWdyZXNhIGRlIGxhIGNvbXBhw7FpYSB5IHJlaW5ncmVzYSBhIGxhcyBvcmRlbmVzIGRlbCBtaXNtbyBlbXBsZWFkb3IsIG1hbnRpZW5lIGxhIG1pc21hIGFudGlndWVkYWQuDQoNCioqQ2F0ZWdvcsOtYSBMYWJvcmFsKioNCg0KTGFzIGNhdGVnb3LDrWFzIGxhYm9yYWxlcyBlc3RhbiBkZWZpbmlkYXMgZW4gY2FkYSBjb252ZW5pbyBjb2xlY3Rpdm8gZGUgdHJhYmFqby4NCkxhIGFzaWduYWNpw7NuIGRlIGxhcyBtaXNtYXMsIGRlcGVuZGUgZGUgbGEgdGFyZWEgcmVhbGl6YWRhLg0KDQpBIGNhZGEgY2F0ZWdvcsOtYSBsZSBjb3JyZXNwb25kZSB1biBzdWVsZG8gYsOhc2ljbyBkZXRlcm1pbmFkbyB5IHNlZ8O6biBsYSB0YXJlYSByZWFsaXphZGEsIGNvcnJlc3BvbmRlcmFuIGFkaWNpb25hbGVzIHF1ZSBlc3BlY2lmaXF1ZSBlbCBjb252ZW5pby4NCg0KIyMgSm9ybmFkYSBMYWJvcmFsDQoNCkxhIGpvcm5hZGEgbGFib3JhbCBlcyBlbCBwbGF6byBkZSB0aWVtcG8gZHVyYW50ZSBlbCBjdWFsIGVsIGVtcGxlYWRvIHNlIGVuY3VlbnRyYSBhIGRpc3Bvc2ljacOzbiBkZWwgZW1wbGVhZG9yLg0KDQpMYSBqb3JuYWRhIGxhYm9yYWwgZXN0YSByZWd1bGFkYSBwb3IgbGEgTENUIHkgbGEgW0xleSAxMTU0NF0oaHR0cDovL3NlcnZpY2lvcy5pbmZvbGVnLmdvYi5hci9pbmZvbGVnSW50ZXJuZXQvdmVyTm9ybWEuZG8/aWQ9NjMzNjgpDQoNCipKb3JuYWRhIGRlIHRyYWJham8gRGl1cm5hKiA6IEVzIGFxdWVsbGEgcXVlIHNlIHJlYWxpemEgZW4gdHJlIGxhcyAwNjowMGhzIHkgMjFocyBubyBkZWJlIHN1cGVyYXIgbGFzIDggaG9yYXMgZGlhcmlhcyBvIGxhcyA0OCBzZW1hbmFsZXMuDQpTZSB0cmF0YSBkZSB1biBsw61taXRlIG3DoXhpbW8sIHBvciBlc28gcHVlZGVuIGV4aXN0aXIgam9ybmFkYXMgY29uIHVuYSBkdXJhY2nDs24gbWVub3IuDQoNClNpIG5vIHRyYWJhamEgbGEgbWlzbWEgY2FudGlkYWQgZGUgaG9yYXMgdG9kb3MgbG9zIGTDrWFzLCDCv2N1w6FudG8gZXMgZWwgbcOheGltbyBkZSBob3JhcyBkaWFyaWFzIHF1ZSBkZWJlIGN1bXBsaXI/DQoNCk5vIG3DoXMgZGUgOSBob3JhcyBwb3IgZMOtYS4NCkVuIHRvdGFsLCBsYXMgam9ybmFkYXMgbm8gcHVlZGVuIHN1bWFyIG3DoXMgZGUgNDggaHMuDQpwb3Igc2VtYW5hLg0KDQoqSm9ybmFkYSBkZSB0cmFiYWpvIE5vY3R1cm5hKiA6IEVzIGFxdWVsbGEgcXVlIHNlIHJlYWxpemEgZW50cmUgbGFzIDIxOjAwaHMgeSAwNmhzLCBlbCBsw61taXRlIG3DoXhpbW8gZGUgbGEgam9ybmFkYSBlcyA3IGhvcmFzLg0KDQoqSm9ybmFkYSBkZSB0cmFiYWpvIEluc2FsdWJyZSogOiBFcyBhcXVlbGxhIHF1ZSBlbCBNaW5pc3RlcmlvIGRlIFRyYWJham8gaGEgZGVjcmV0YWRvIGNvbW8gaW5zYWx1YnJlLCBlbCBsw61taXRlIGVzIGRlIDYgaG9yYXMgZGlhcmlhcy4NCg0KKkpvcm5hZGEgZGUgdHJhYmFqbyBtaXh0YSogOiBDb3JyZXNwb25kZSBjdWFuZG8gc2UgYWx0ZXJlbiBob3JhcyBkaXVybmFzIHkgbm9jdHVybmFzLCBwb3JxdWUgZWwgdHJhYmFqbyBjb21pZW56YSBhbnRlcyBkZSBsYXMgMjFocyB5IGZpbmFsaXphIGRlc3B1w6lzIGRlIGVzYSBob3JhLCBvIGNvbWllbnphIGFudGVzIGRlIGxhcyA2OjAwIGhzIHkgZmluYWxpemEgZGVzcHXDqXMgZGUgZXNhIGhvcmEuDQpFbiBlc3RlIGNhc28gZGViZSByZWR1Y2lyc2UgcHJvcG9yY2lvbmFsbWVudGUgbGEgam9ybmFkYSBlbiBvY2hvIG1pbnV0b3MsIHBvciBjYWRhIGhvcmEgbm9jdHVybmEgdHJhYmFqYWRhLCBvIHBhZ2Fyc2UgbG9zIG9jaG8gbWludXRvcyBkZSBleGNlc28gY29tbyB0aWVtcG8gc3VwbGVtZW50YXJpbywgYWwgNTAlIG8gYWwgMTAwJSBzZWfDum4gY29ycmVzcG9uZGEuDQoNCg0KKipUcmFiYWpvIEluc2FsdWJyZSoqDQoNCkxhIGR1cmFjacOzbiBkZWwgdHJhYmFqbyBubyBwdWVkZSBzZXIgbWF5b3IgYSA2IGhvcmFzIGRpYXJpYXMgbyAzNiBzZW1hbmFsZXMuDQoNClNpIGFsdGVybsOhIHRyYWJham8gaW5zYWx1YnJlIGNvbiB0cmFiYWpvIHNhbHVicmUsIGxhIGpvcm5hZGEgcHVlZGUgc2VyIGRlIDggaG9yYXMuDQoNClBlcm8gY2FkYSBob3JhIHRyYWJhamFkYSBlbiBlbCBsdWdhciBpbnNhbHVicmUgc2UgY29uc2lkZXJhIGNvbW8gMSBob3JhIHkgMzMgbWludXRvcy4NCk5vIHBvZMOpcyBwZXJtYW5lY2VyIG3DoXMgZGUgMyBob3JhcyBwb3IgZMOtYSBlbiBlc2UgbHVnYXIuDQoNCioqSG9yYXMgRXh0cmFzKioNCg0KTGEgbGV5IGRlIEpvcm5hZGEgTGFib3JhbCBwcmV2ZWUgdW5hIGpvcm5hZGEgc2VtYW5hbCBkZSA0OGhzLg0KDQpDdWFscXVpZXIgdHJhYmFqbyBxdWUgaGF5YSBleGNlZGlkbyBlbCBsaW1pdGUgZGUgZGljaGEgam9ybmFkYSwgZGViZSBzZXIgcmVtdW5lcmFkbyBjb21vIGhvcmFzIGV4dHJhLg0KDQpMaW1pdGUgZGUgSG9yYXMgZXh0cmFzOg0KDQpFbCBbRGVjcmV0byA0ODQvMjAwMF0oaHR0cDovL3NlcnZpY2lvcy5pbmZvbGVnLmdvYi5hci9pbmZvbGVnSW50ZXJuZXQvYW5leG9zLzYwMDAwLTY0OTk5LzYzMzQ3L25vcm1hLmh0bSkgZmlqYSBsw61taXRlcyBwYXJhIGxhIHJlYWxpemFjacOzbiBkZSBob3JhcyBleHRyYXM6DQoNCuKXvO+4jyAzIGhvcmFzIHBvciBkw61hLg0KDQril7zvuI8gMzAgaG9yYXMgbWVuc3VhbGVzLg0KDQril7wgMjAwIGhvcmFzIGFudWFsZXMuDQoNCg0KKipIb3JhcyBFeHRyYXMgYWwgNTAlKioNCg0KU2kgbGEgcHJlc3RhY2lvbiBzZSByZWFsaXpvIGRlc2RlIGVsIEx1bmVzIGhhc3RhIGVsIHPDoWJhZG8gYSBsYXMgMTNocywgY2FkYSBob3JhIGV4dHJhIGxhYm9yYWRhIGRlYmUgYWJvbmFyc2UgY29uIHVuIHJlY2FyZ28gZGVsIDUwJS4NCg0KKipIb3JhcyBFeHRyYXMgYWwgMTAwJSoqDQoNClNpIGxhIHByZXN0YWNpw7NuIHNlIHJlYWxpem8gdW4gZMOtYSBmZXJpYWRvLCBzw6FiYWRvcyBkZXNwdcOpcyBkZSBsYXMgMTNocyBvIGRvbWluZ29zLCBjYWRhIGhvcmEgZXh0cmEgbGFib3JhZGEgZGViZSBhYm9uYXJzZSBjb24gdW4gcmVjYXJnbyBkZWwgMTAwJS4NCg0KKipIb3JhcyBOb2N0dXJuYXMqKg0KDQpFbCB0cmFiYWpvIG5vY3R1cm5vIG5vIHB1ZWRlIGR1cmFyIG3DoXMgZGUgNyBob3JhcyB5IHRpZW5lIHF1ZSBjdW1wbGlyc2UgZW50cmUgbGFzIDkgZGUgbGEgbm9jaGUgeSBsYXMgNiBkZSBsYSBtYcOxYW5hLg0KDQpTaSB0cmFiYWphIHVuYSBwYXJ0ZSBkdXJhbnRlIGVsIGTDrWEgeSBvdHJhIHBhcnRlIGR1cmFudGUgbGEgbm9jaGUsIMK/Y3XDoWwgZXMgbGEgam9ybmFkYSBkZSB0cmFiYWpvPw0KDQpMYXMgaG9yYXMgcXVlIHRyYWJhamEgZW50cmUgbGFzIDkgZGUgbGEgbm9jaGUgeSBsYXMgNiBkZSBsYSBtYcOxYW5hIHZhbGVuIGNvbW8gMSBob3JhIHkgOCBtaW51dG9zIHBhcmEgY2FsY3VsYXIgbGEgam9ybmFkYSBkZSB0cmFiYWpvLg0KDQoqKkhvcmFzIE5vY3R1cm5hcyBhbCA1MCUqKg0KDQpDb3JyZXNwb25kZSBjdWFuZG8gZWwgaG9yYXJpbyBub2N0dXJubyByZWFsaXphZG8gcG9yIGVsIHRyYWJhamFkb3IsIGNvaW5jaWRhIGNvbiBob3JhcyBleHRyYXMgYWwgNTAlLg0KDQoqKkhvcmFzIE5vY3R1cm5hcyBhbCAxMDAlKioNCg0KQ29ycmVzcG9uZGUgY3VhbmRvIGVsIGhvcmFyaW8gbm9jdHVybm8gcmVhbGl6YWRvIHBvciBlbCB0cmFiYWphZG9yLCBjb2luY2lkYSBjb24gaG9yYXMgZXh0cmFzIGFsIDEwMCUuDQoNCioqRnJhbmNvcyoqDQoNCkVsIGTDrWEgZGUgZnJhbmNvLCBvIGRlIGRlc2NhbnNvIHNlbWFuYWwsIGVzIHVuIGxhcHNvIGVuIGxhcyBxdWUgZWwgdHJhYmFqYWRvciBubyBkZWJlIHJlYWxpemFyIHRhcmVhcyBsYWJvcmFsZXMuDQpFbCBvYmpldGl2byBwcmluY2lwYWwgZGVsIGZyYW5jbyBlcyBkZSBsYSByZWN1cGVyYWNpw7NuIGRlIGVuZXJnw61hIGRlbCB0cmFiYWphZG9yIGx1ZWdvIGRlIGhhYmVyIGRlc2VtcGXDsWFkbyBzdXMgdGFyZWFzLCBxdWUgcHVlZGVuIGhhYmVyIGV4aWdpZG8gZXNmdWVyem8gZsOtc2ljbyB5L28gcHPDrXF1aWNvLg0KDQoqKkZyYW5jb3MgVHJhYmFqYWRvcyoqDQoNClNpIGVsIGVtcGxlYWRvIHByZXN0YSBzZXJ2aWNpb3MgdW4gZGlhIGRlIGZyYW5jbywgZW50b25jZXMgY29ycmVzcG9uZGUgYWJvbmFyIGVsIGRpYSBjb24gZWwgMTAwJSBkZSByZWNhcmdvLg0KDQoqKkRpYSBubyBsYWJvcmFibGUqKg0KDQpEw61hcyBubyBsYWJvcmFsZXMgdSBvcHRhdGl2b3MsIHNvbiBsb3MgZW1wbGVhZG9yZXMgcXVpZW5lcyBwdWVkZW4gb3B0YXIgcG9yIGNvbnZvY2FyIG8gbm8gYSB0cmFiYWphci4NClNpIG5vIGxvcyBjb252b2NhLCBubyBhZmVjdGFyw6EgZWwgY29icm8gZGVsIGRpYSBsYWJvcmFsLCB5IGVuIGNhc28gZGUgc2VyIGNvbnZvY2Fkb3MsIHBlcmNpYmlyYW4gZWwgc2FsYXJpbyBzaW1wbGUsIHNpbiBuaW5nw7puIGluY3JlbWVudG8uDQoNCioqRmVyaWFkb3MqKg0KDQpFcyBhcXVlbCBkw61hIGVuIGxvcyBxdWUgbGEgbGV5IGRpc3BvbmUgcXVlIG5vIHNlIHByZXN0ZW4gdGFyZWFzIGxhYm9yYWxlcyBwb3IgY29ubWVtb3JhcnNlIGFsZ3VuYSBjZWxlYnJhY2nDs24gcmVsaWdpb3NhLCBoaXN0b3JpYSBvIGFsZ8O6biBvdHJvIGV2ZW50byBkZSDDrW5kb2xlIHNpbWlsYXIuDQoNClNlIHB1ZWRlbiBjb25zdWx0YXIgbG9zIGRpYXMgZmVyaWFkb3MgeSBubyBsYWJvcmFibGVzIGVuIGxhIHNpZ3VpZW50ZSBww6FnaW5hIFtNaW5pc3RlcmlvIGRlbCBJbnRlcmlvcl0oaHR0cHM6Ly93d3cuYXJnZW50aW5hLmdvYi5hci9pbnRlcmlvci9mZXJpYWRvcy1uYWNpb25hbGVzLTIwMjIpLg0KDQoqKkZlcmlhZG9zIFRyYWJhamFkb3MqKg0KDQpFbiBlbCBjYXNvIHF1ZSBlbCBlbXBsZWFkbyB0cmFiYWplIHVuIGZlcmlhZG8sIHRpZW5lIHVuYSBib25pZmljYWNpw7NuIGRlbCAxMDAlIGV4dHJhIGRlIHN1IHZhbG9yLg0KDQoqKkRpc3RyaWJ1Y2nDs24gZGVsIEhvcmFyaW8gTGFib3JhbCoqDQoNCkVsIGVtcGxlYWRvciBzZSBlbmN1ZW50cmEgYXV0b3JpemFkbyBsZWdhbG1lbnRlIGEgZGlhZ3JhbWFyIGxvcyBob3JhcmlvcyBkZSB0cmFiYWpvIGN1bXBsaWVuZG8gbG9zIHNpZ3VpZW50ZXMgcmVjYXVkb3M6DQoNCi0gICBMb3MgaG9yYXJpb3MgZGUgdHJhYmFqbyBzZSBkZWJlbiBoYWNlciBww7pibGljb3MgZW4gbHVnYXJlcyB2aXNpYmxlcyBwYXJhIGNvbm9jaW1pZW50byBkZSB0b2RvIGVsIHBlcnNvbmFsDQoNCi0gICBFbnRyZSBlbCBjZXNlIGRlIHVuYSBqb3JuYWRhIHkgZWwgY29taWVuem8gZGUgbGEgb3RyYSBkZWJlcmEgbWVkaWFyIHVuYSBwYXVzYSBubyBpbmZlcmlvciBhIDIxIGhvcmFzDQoNCi0gICBEdXJhbnRlIGxhIHNlbWFuYSBzZSBwdWVkZW4gZGlzdHJpYnVpciBsYXMgaG9yYXMgZGUgbWFuZXJhIGRlc2lndWFsIChtw6FzIGhvcmFzIHVuIGTDrWEgeSBtZW5vcyBvdHJvKSwgcGVybyBlbiBuaW5nw7puIGNhc28gcHVlZGUgc3VwZXJhciBsYXMgOSBob3JhcyBkaWFyaWFzIGRlIHRyYWJham8NCg0KLSAgIFJlc3BldGFyIGVsIGRlc2NhbnNvIHNlbWFuYWwgZGUgMzUgaG9yYXMgY29ycmlkYXMgYSBwYXJ0aXIgZGVsIHPDoWJhZG8gYSBsYXMgMTMgaG9yYXMNCg0KIyMjIExpY2VuY2lhcw0KDQoqKlZhY2FjaW9uZXMqKg0KDQpFcyB1bmEgbGljZW5jaWEgYW51YWwsIHF1ZSBjb3JyZXNwb25kZSBzZWd1biBsYSBhbnRpZ3VlZGFkIGRlbCBlbXBsZWFkby4NCkxhIGFudGlnw7xlZGFkIHNlIGNvbXB1dGEgYWwgMzEgZGUgZGljaWVtYnJlIGRlbCBhw7FvIGFsIGN1YWwgY29ycmVzcG9uZGVuIGxhcyB2YWNhY2lvbmVzLg0KDQrCv0N1w6FudG9zIGTDrWFzIGNvcnJlc3BvbmRlbiBwb3IgdmFjYWNpb25lcz8NCg0KYGBge3J9DQoNClZhY2FjaW9uZXMlPiUgDQogIGthYmxlKCJodG1sIiwgZXNjYXBlPUYpICU+JQ0KICAgIGthYmxlX3N0eWxpbmcoZnVsbF93aWR0aCA9IFRSVUUsIGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsImhvdmVyIiwiY29uZGVuc2VkIiApKSAlPiUgDQpyb3dfc3BlYygwLCBib2xkPVQsIGNvbG9yPSJ3aGl0ZSIsIGJhY2tncm91bmQgPSBhenVsKQ0KDQpgYGANCg0Kwr8gUXXDqSBwYXNhIGVsIHByaW1lciBhw7FvIHRyYWJhamFkbz8NCg0KQ3VhbmRvIGxvcyBlbXBsZWFkb3Mgbm8gbGxlZ2Fyb24gYSBwcmVzdGFyIHNlcnZpY2lvcyBsYSBtaXRhZCBkZSBsb3MgZMOtYXMgbGFib3JhYmxlcyBkZWwgYcOxbywgbGEgbGV5IGluZGljYSBxdWUgZ296YXLDoW4gZGUgdW4gZMOtYSBkZSB2YWNhY2lvbmVzIHBvciBjYWRhIHZlaW50ZSBkw61hcyBkZSBwcmVzdGFjacOzbiBlZmVjdGl2YS4NCkVuIGVzdGUgc2VudGlkbywgc2UgY29uc2lkZXJhbiBjb21vIGTDrWFzIHRyYWJhamFkb3MgYXF1ZWxsb3MgZW4gcXVlIGVsIGRlcGVuZGllbnRlIG5vIHByZXN0ZSBzZXJ2aWNpb3MgcG9yIGdvemFyIGRlIHVuYSBsaWNlbmNpYSBjb252ZW5jaW9uYWwgbyBsZWdhbCwgbyBwb3IgZXN0YXIgZW5mZXJtbyBvIGFjY2lkZW50YWRvLCBvIHBvciBvdHJhcyBjYXVzYXMgbm8gaW1wdXRhYmxlcyBhbCBtaXNtby4NClNlIGRlYmVyw6EgZGV0ZXJtaW5hciBsb3MgZMOtYXMgaMOhYmlsZXMgZGUgYWN1ZXJkbyBjb24gZWwgcsOpZ2ltZW4gcHJvcGlvIGRlIHRyYWJham8gKHNpIHNlIGxhYm9yYSBvIG5vIGVsIHPDoWJhZG87IHNpIHNlIHJlYWxpemEgYWN0aXZpZGFkIG8gbm8gbG9zIGTDrWFzIG9wdGF0aXZvcywgZXRjLikNCg0KQ29uc2lkZXJhY2lvbmVzIGdlbmVyYWxlczoNCg0K4pe777iPIExhcyB2YWNhY2lvbmVzIHNlIGRlYmVuIG5vdGlmaWNhciBwb3IgZXNjcml0byBjb24gNDUgZMOtYXMgZGUgYW50aWNpcGFjacOzbi4NCg0K4pe777iPIExvcyBkaWFzIHNvbiBjb3JyaWRvcywgc2Fsdm8gbG8gaW5kaXF1ZSBlbCBjb252ZW5pby4NCg0K4pe777iPIExhcyB2YWNhY2lvbmVzIGNvbWllbnphbiB1biBMdW5lcywgc2Fsdm8gcXVlIGxhIHBlcnNvbmEgcHJlc3RlIHNlcnZpY2lvcyBlbiBkw61hcyBpbmFiaWxlcywgZW4gZXNlIGNhc28gY29taWVuemFuIGx1ZWdvIGRlbCBkZXNjYW5zbyBzZW1hbmFsLg0KDQril7vvuI8gTGFzIHZhY2FjaW9uZXMgc2UgY29uY2VkZW4gZW50cmUgZWwgMcK6IGRlIG9jdHVicmUgeSBlbCAzMCBkZSBhYnJpbCBkZWwgYcOxbyBzaWd1aWVudGUuDQoNCuKXu++4jyBBIHVuIHBlcsOtb2RvIGRlIHZhY2FjaW9uZXMgcHVlZGUgc3Vtw6Fyc2VsZSBsYSB0ZXJjZXJhIHBhcnRlIGRlbCBwZXLDrW9kbyBkZSB2YWNhY2lvbmVzIGlubWVkaWF0YW1lbnRlIGFudGVyaW9yIHF1ZSBubyBzZSBodWJpZXJlIGdvemFkby4NCg0K4pe777iPIFBhcmEgZWwgcGFnbyBzZSB0aWVuZW4gZW4gY3VlbnRhIGxvcyBjb25jZXB0b3MgZmlqb3MgeSB1biBwcm9tZWRpbyBkZSBsb3MgY29uY2VwdG9zIHZhcmlhYmxlcy4NCkVsIHZhbG9yIGRlbCBkw61hIGVzIGNvbiBkaXZpc29yIDI1Lg0KDQoNCioqRW5mZXJtZWRhZCB5IEFjY2lkZW50ZSBJbmN1bHBhYmxlKioNCg0KTGFzIGVuZmVybWVkYWRlcyBpbmN1bHBhYmxlcyBzb24gbGFzIGNvbnRpbmdlbmNpYXMgcXVlIHN1ZnJlIGVsIHRyYWJhamFkb3IgeSBxdWUgbm8gdGllbmVuIG9yaWdlbiBlbiBlbCB0cmFiYWpvLihFamVtcGxvOiBncmlwZSkuDQpFc3RhbiBjdWJpZXJ0b3MgcG9yIGxhIG9icmEgc29jaWFsIGRlbCB0cmFiYWphZG9yLg0KDQpEaWNoYXMgY29udGluZ2VuY2lhcyBpbXBvc2liaWxpdGFuIGFsIGVtcGxlYWRvIGEgcHJlc3RhciB0ZWFyZWFzLCBnZW5lcmFuZG8gZWwgZGVyZWNobyBhIGdvemFyIGRlIHVuYSBsaWNlbmNpYSBwYWdhIHBvciBjYWRhIGVuZmVybWVkYWQgbyBhY2NpZGVudGUgaW5jdWxwYWJsZSBwb3IgdW4gcGVyaW9kbyB2YXJpYWJsZSwgc2Vnw7puIGxhIGFudGlndWVkYWQgeSBjYXJnYXMgZGUgZmFtaWxpYSBkZWwgY29sYWJvcmFkb3IuDQoNCmBgYHtyfQ0KDQoNCkluY3VscGFibGUlPiUgDQogIGthYmxlKCJodG1sIiwgZXNjYXBlPUYpICU+JQ0KICAgIGthYmxlX3N0eWxpbmcoZnVsbF93aWR0aCA9IFRSVUUsIGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsImhvdmVyIiwiY29uZGVuc2VkIiApKSAlPiUgDQpyb3dfc3BlYygwLCBib2xkPVQsIGNvbG9yPSJ3aGl0ZSIsIGJhY2tncm91bmQgPSBhenVsKQ0KDQoNCg0KYGBgDQoNCioqUmVzZXJ2YSBkZSBQdWVzdG8qKg0KDQpWZW5jaWRvIGVsIHBsYXpvIHF1ZSBsZSBjb3JyZXNwb25kYSBkZSBnb2NlIHBvciBlbmZlcm1lZGFkLCB5IHNpIGVsIGVtcGxlYWRvIG5vIHNlIGVuY3VlbnRyYSBlbiBjb25kaWNpb25lcyBkZSByZWludGVncmFzZSwgaW5ncmVzYSBlbiBsbyBxdWUgc2UgZGVub21pbmEgcGVyaW9kbyBkZSByZXNlcnZhIG8gY29uc2VydmFjacOzbiBkZSBwdWVzdG8uDQpFbCBwbGF6byBtw6F4aW1vIGRlIGR1cmFjacOzbiBlcyBkZSAxIGHDsW8geSBlcyBzaW4gZ29jZSBkZSBoYWJlcmVzLg0KRWwgaW5ncmVzbyBhIGVzdGUgcGVyaW9kbyBkZWJlIG5vdGlmaWNhcnNlIGRlIG1hbmVyYSBmZWhhY2llbnRlIGFsIHRyYWJhamFkb3IgKHBvciBjYXJ0YSBkb2N1bWVudG8pLg0KDQpVbmEgdmV6IHF1ZSB0cmFuc2N1cnJhIGVsIGHDsW8sIHkgZW4gZWwgY2FzbyBxdWUgZWwgZW1wbGVhZG8gbm8gc2UgcmVpbnRlZ3JhcmEgYSB0cmFiYWphciwgcG9yIGNvbnRpbnVhciBzdSBlbmZlcm1lZGFkLCBsYSByZWxhY2nDs24gc2UgbWFudGllbmUgdmlnZW50ZSBzYWx2byBxdWUgYWxndW5hIGRlIGxhcyBwYXJ0ZXMgY29tdW5pY2FyYSBhIGxhIG90cmEsIHN1IGludGVuY2nDs24gZGUgZmluYWxpemFyIGxhIHJlbGFjacOzbiBsYWJvcmFsLCBleGltaWVuZG8gZWwgcGFnbyBkZSBpbmRlbW5pemFjacOzbi4NCkVzdGEgbm90aWZpY2FjacOzbiBkZWJlIHNlciB0YW1iacOpbiBkZSBtYW5lcmEgZmVoYWNpZW50ZS4NCg0KKipFbmZlcm1lZGFkIHkgQWNjaWRlbnRlIExhYm9yYWwqKg0KDQpTZSBjb25zaWRlcmEgYWNjaWRlbnRlIGEgdG9kbyBhY29udGVjaW1pZW50byBvY3VycmlkbyBwb3IgZWwgaGVjaG8gbyBlbiBvY2FzacOzbiBkZWwgdHJhYmFqbywgbyBlbiBlbCB0cmF5ZWN0byBlbnRyZSBlbCBkb21pY2lsaW8gZGVsIHRyYWJhamFkb3IgeSBlbCBsdWdhciBkZSB0cmFiYWpvLCBzaWVtcHJlIHkgY3VhbmRvIGVsIGRhbW5pZmljYWRvIG5vIGh1YmllcmUgaW50ZXJydW1waWRvIG8gYWx0ZXJhZG8gZGljaG8gdHJheWVjdG8gcG9yIGNhdXNhcyBhamVuYXMgYWwgdHJhYmFqby4NCg0KRWwgdHJhYmFqYWRvciBwb2Ryw6EgZGVjbGFyYXIgcG9yIGVzY3JpdG8gYW50ZSBlbCBlbXBsZWFkb3IsIHkgw6lzdGUgZGVudHJvIGRlIGxhcyA3MiBob3JhcyBhbnRlIGVsIGFzZWd1cmFkb3IsIHF1ZSBlbCAiaXRpbmVyZSIgc2UgbW9kaWZpY2EgcG9yIHJhem9uZXMgZGUgZXN0dWRpbywgY29uY3VycmVuY2lhIGEgb3RybyBlbXBsZW8gbyBhdGVuY2nDs24gZGUgZmFtaWxpYXIgZGlyZWN0byBlbmZlcm1vIHkgbm8gY29udml2aWVudGUsIGRlYmllbmRvIHByZXNlbnRhciBlbCBwZXJ0aW5lbnRlIGNlcnRpZmljYWRvIGEgcmVxdWVyaW1pZW50byBkZWwgZW1wbGVhZG9yIGRlbnRybyBkZSBsb3MgMyBkw61hcyBow6FiaWxlcyBkZSByZXF1ZXJpZG8uDQoNClNlIGNvbnNpZGVyYW4gZW5mZXJtZWRhZGVzIHByb2Zlc2lvbmFsZXMgYXF1ZWxsYXMgcXVlIGVzdMOhbiBpbmNsdWlkYXMgZW4gZWwgbGlzdGFkbyBkZSBlbmZlcm1lZGFkZXMgcHJvZmVzaW9uYWxlcy4NCg0KRW4gY2FzbyBkZSBlbmZlcm1lZGFkIG8gYWNjaWRlbnRlIGxhYm9yYWwgc2UgcmVhbGl6YSBsYSBkZW51bmNpYSBkZWwgc2luaWVzdHJvIGFudGUgbGEgQVJULCBxdWllbiBldmFsdWFyYSBlbCBtaXNtbyB5IHBvZHJhIHNvbGljaXRhciBkb2N1bWVudGFjaW9uIG8gaW5mb3JtYWNpw7NuIGFkaWNpb25hbC4NCkVsIGVtcGxlYWRvciBhYm9uYXJhIGxvcyBwcmltZXJvcyAxMCBkaWFzIGRlbCBhY2NpZGVudGUsIGxvcyBkaWFzIHBvc3RlcmlvcmVzIHNlIGhhY2UgY2FyZ28gbGEgQVJULg0KTG9zIHNhbGFyaW9zIHBvciBsb3MgZGlhcyBkZSBhY2NpZGVudGUsIGxvcyBhYm9uYSBsYSBlbXByZXNhLCB5IGx1ZWdvIGxhIGVtcHJlc2EgcmVhbGl6YSBsYXMgZ2VzdGlvbmVzIGNvbiBsYSBBUlQgcGFyYSBzb2xpY2l0YXIgZWwgcmVjdXBlcm8gZGUgbG9zIG1pc21vcy4NCg0KUGFyYSBtYXlvciBpbmZvcm1hY2lvbiBzb2JyZSBsb3Mgcmllc2dvcyBkZSB0cmFiYWpvLCBwb2RlcyBjb25zdWx0YXIgZW4gZWwgc2lndWllbnRlIGVubGFjZTogDQoNCltTdXBlcmludGVuY2lhIGRlIFJpZXNnb3MgZGUgVHJhYmFqb10oaHR0cHM6Ly93d3cuYXJnZW50aW5hLmdvYi5hci9zcnQpLg0KDQoqKkxpY2VuY2lhcyBFc3BlY2lhbGVzKioNCg0KTGFzIGxpY2VuY2lhcyBnZW5lcmFsZXMgZXN0YWJsZWNpZGFzIGVuIGxhIExDVCBzb24gbGFzIHNpZ3VpZW50ZXM6DQoNCmBgYHtyfQ0KDQpMaWNlbmNpYXMlPiUgDQogIGthYmxlKCJodG1sIiwgZXNjYXBlPUYpICU+JQ0KICAgIGthYmxlX3N0eWxpbmcoZnVsbF93aWR0aCA9IFRSVUUsIGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsImhvdmVyIiwiY29uZGVuc2VkIiApKSAlPiUgDQpyb3dfc3BlYygwLCBib2xkPVQsIGNvbG9yPSJ3aGl0ZSIsIGJhY2tncm91bmQgPSBhenVsKQ0KDQpgYGANCg0KQ2FkYSBsaWNlbmNpYSBzZSBkZWJlcsOhIGp1c3RpZmljYXIgY29uIGxhIGFjcmVkaXRhY2nDs24gY29ycmVzcG9uZGllbnRlDQoNCiMjIyBFbWJhcmdvcw0KDQpMb3MgZW1iYXJnb3Mgc29uIGRpc3Bvc2ljaW9uZXMgb2ZpY2lhbGVzLCBkZXRlcm1pbmFkYXMgcG9yIGp1ZWNlcyB5IHNvbiBpbmZvcm1hZG9zIGEgbGFzIGVtcHJlc2FzIHBvciBvZmljaW9zLg0KQ3VhbmRvIGxhIGVtcHJlc2EgZXMgbm90aWZpY2FkYSBlbiBmb3JtYSBmZWhhY2llbnRlIGRlbCBtaXNtbywgZXN0YSBvYmxpZ2FkYSBhIGFwbGljYXIgbGEgbm90aWZpY2FjaW9uIGNvcnJlc3BvbmRpZW50ZSwgc2VhIHVuYSByZXRlbmNpw7NuIG8gdW4gY2VzZSBkZSBsYSBtaXNtYS4NCkN1YW5kbyBzZSBmaW5hbGl6YSBlbCBlbWJhcmdvLCBzZSBwdWVkZSBzb2xpY2l0YXIgdW4gbGlicmUgZGUgZGV1ZGEgZW4gZWwganV6Z2FkbyBjb3JyZXNwb25kaWVudGUuDQoNClBhcmEgbWF5b3IgaW5mb3JtYWNpb24gc29icmUgZW1iYXJnb3MsIHNlIHB1ZWRlIGNvbnN1bHRhciBsYSBub3JtYXRpdmEgYXBsaWNhYmxlIGVuIGVsIHNpZ3VpZW50ZSBlbmxhY2UgW0VtYmFyZ29zXShodHRwOi8vc2VydmljaW9zLmluZm9sZWcuZ29iLmFyL2luZm9sZWdJbnRlcm5ldC9hbmV4b3MvNzUwMDAtNzk5OTkvNzcyNTUvbm9ybWEuaHRtKS4NCg0KSGF5IGRvcyB0aXBvIGRlIEVtYmFyZ29zOg0KDQoqKjEtIEVtYmFyZ28gZGUgQWxpbWVudG8qKg0KDQpTb24gZW1iYXJnb3MgcG9yIGRldWRhIGRlIGFsaW1lbnRvLg0KRWwgbGltaXRlIGxvIGRldGVybWluYW4gbG9zIGp1ZWNlcy4NCkxhIGRldGVybWluYWNpb24gZGUgbG9zIGNvbmNlcHRvcyBhbGNhbnphZG9zLCBkZXBlbmRlIGRlIGNhZGEgb2ZpY2lvLg0KUHVlZGUgc2VyIHZhbG9yZXMgZmlqb3MgbyB2YXJpYWJsZXMuDQoNCioqMi0gRW1iYXJnbyBDb21lcmNpYWwqKg0KDQpMYSBub3JtYXRpdmEgZGUgZW1iYXJnb3MgZGlzcG9uZSwgcGFyYSBlbWJhcmdvcyBjb211bmVzIG8gY29tZXJjaWFsZXMsIHF1ZSBsYXMgcmVtdW5lcmFjaW9uZXMgbWVuc3VhbGVzIGJydXRhcyAoYW50ZXMgZGUgZGVzY3VlbnRvcyBkZSBsZXkpIGRldmVuZ2FkYXMgcG9yIGVsIHRyYWJhamFkb3IsIGFzw60gY29tbyBlbCBTQUMsIHNvbiBpbmVtYmFyZ2FibGVzIGhhc3RhIGxhIHN1bWEgZGVsIFNNVk0uDQoNCkxvIHF1ZSBleGNlZGEgZGVsIFNNVk0gcHVlZGUgc2VyIGVtYmFyZ2Fkbywgc2Vnw7puIGVsIHNpZ3VpZW50ZSBwcm9jZWRpbWllbnRvOg0KDQpQYXJhIHJlbXVuZXJhY2lvbmVzIGJydXRhcyBpbmZlcmlvcmVzIGEgRE9TICgyKSB2ZWNlcyBlbCBTTVZNLCBoYXN0YSBlbCAxMCUgZGUgbG8gcXVlIGV4Y2VkYSBkZWwgU01WTS4NCg0KUGFyYSBlbCBjYXNvIGRlIHJldHJpYnVjaW9uZXMgYnJ1dGFzIHN1cGVyaW9yZXMgYSBET1MgKDIpIHZlY2VzIGVsIFNNVk0sIGhhc3RhIGVsIDIwJSBkZSBsbyBxdWUgc3VwZXJlIGVsIFNNVk0uDQoNCkEgc3UgdmV6LCBlbiBsb3MgbWVzZXMgZG9uZGUgc2UgYWJvbmUgZWwgYWd1aW5hbGRvLCBzZSBkZWJlcsOhIGNvbXB1dGFyIHVuIDUwJSBkZWwgU01WTSBwYXJhIGNvbXBhcmFyIGNvbiBlc2UgU0FDLCBhIGVmZWN0b3MgZGUgZGV0ZXJtaW5hciBsb3MgcG9yY2VudGFqZXMgYW50ZXMgYWx1ZGlkb3MuDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQojIyMgU2VndXJpZGFkIFNvY2lhbA0KDQoqKkZvcm11bGFyaW8gOTMxKioNCg0KRWwgZm9ybXVsYXJpbyA5MzEgc2UgdHJhdGEgZGUgdW5hIGRlY2xhcmFjacOzbiBqdXJhZGEgcXVlIGVzcGVjaWZpY2EgbG9zIGFwb3J0ZXMgeSBjb250cmlidWNpb25lcyBhIGxhIHNlZ3VyaWRhZCBzb2NpYWwuDQoNCkxhIGRlY2xhcmFjacOzbiBlcyBwb3IgY2FkYSBjb2xhYm9yYWRvciBxdWUgc2UgaGF5YSBkYWRvIGRlIGFsdGEgZW4gZWwgcGVyaW9kbyBhIHByZXNlbnRhci4NCg0KTG9zIGRhdG9zIHF1ZSBzZSBkZWNsYXJhbiwgc29uIGxvcyBxdWUgZmlndXJhbiBlbiBlbCBsZWdham8gZGVsIGVtcGxlYWRvLCBhc2kgY29tbyBsYSBsaXF1aWRhY2lvbiBkZSBzdWVsZG9zIGRlbCBwZXLDrW9kby4NCg0KIVtdKDkzMS5KUEcpDQoNCkVsIHZlbmNpbWllbnRvIGRlbCBGIDkzMSwgZGVwZW5kZSBkZSBsYSB0ZXJtaW5hY2nDs24gZGVsIENVSVQgZGUgbGEgZW1wcmVzYS4NCg0KTGFzIGZlY2hhcyBkZSB2ZW5jaW1pZW50bywgc2UgZGVjbGFyYW4gZW4gbGEgc2lndWllbnRlIHBhZ2luYSBbVmVuY2ltaWVudG9zXShodHRwczovL3NldGkuYWZpcC5nb2IuYXIvYXYvc2VsZWNjaW9uVmVuY2ltaWVudG9zLmRvKQ0KDQohW10odnRvcy5KUEcpDQoNCioqT2JyYSBTb2NpYWwqKg0KDQotR2VuZXJhbDogVG9kb3MgbG9zIGVtcGxlYWRvcyBhY2NlZGVuIGEgbGEgb2JyYSBzb2NpYWwgc2luZGljYWwgZGUgbGEgYWN0aXZpZGFkLg0KDQpPdG9yZ2FyIGxhIG9icmEgc29jaWFsLCBlcyByZXNwb25zYWJpbGlkYWQgZGUgbGEgZW1wcmVzYSwgcGVybyBkYXJzZSBkZSBhbHRhIGVuIGxhIG1pc21hLCBlcyB1biB0cmFtaXRlIHBlcnNvbmFsLg0KDQotUHJlcGFnYTogTGEgZW1wcmVzYSBwdWVkZSBvdG9yZ2FyIGNvbW8gYmVuZWZpY2lvIHVuYSBwcmVwYWdhLCBwYXJhIGVsbG8gZGVzcmVndWxhIGxvcyBhcG9ydGVzIG1lZGlhbnRlIHVuYSBvYnJhIHNvY2lhbCBKZXLDoXJxdWljYS4NCkxhIGRpZmVyZW5jaWEgcXVlIHNlIGdlbmVyYSBwb3IgZWwgb3RvcmdhbWllbnRvIGRlbCBiZW5lZmljaW8sIGVzIHVuIGNvc3RvIGRlIGxhIGVtcHJlc2EuDQoNCi1DYW1iaW8gZGUgT2JyYSBzb2NpYWw6IExvcyBlbXBsZWFkb3MgdGllbmVuIGRlcmVjaG8gYSBjYW1iaWFyIGRlIG9icmEgc29jaWFsLCB1bmEgdmV6IHBvciBhw7FvLg0KRXMgdW4gdHJhbWl0ZSBwZXJzb25hbC4NCmVuIGNhc28gZGUgcmVhbGl6YXJsbywgdGllbmVuIHF1ZSBwcmVzZW50YXIgZWwgZm9ybXVsYXJpbyBkZSBjYW1iaW8gZGUgb2JyYSBzb2NpYWwsIGEgZmluIGRlIGFjdHVhbGl6YXIgc3UgbGVnYWpvIGVuIGVsIHNpc3RlbWEgeSBkZWNsYXJhcmxvIGNvcnJlY3RhbWVudGUgYW50ZSBBRklQLg0KDQotTGFzIG9icmFzIHNvY2lhbGVzLCBzZSBjYXJnYW4gZW4gZWwgbGVnYWpvIGRlbCBlbXBsZWFkbywgbGEgbWlzbWEgZXMgZGVjbGFyYWRhIGVuIGVsIEZvcm11bGFyaW8gOTMxLg0KDQotQ29uc3VsdGEgZGUgb2JyYSBzb2NpYWw6IFNlIHB1ZWRlIGNvbnN1bHRhciBsYSBvYnJhIHNvY2lhbCB2aWdlbnRlIGRlbCBlbXBsZWFkbywgZW4gZWwgc2lndWllbnRlIGVubGFjZSBbUGFkcm9uIGRlIE9icmFzIHNvY2lhbGVzXShodHRwczovL3d3dy5zc3NhbHVkLmdvYi5hci9pbmRleC5waHA/cGFnZT1idXM2NTAmdXNlcj1HUkFMKS4NCg0KIVtdKE9TLkpQRykNCg0KKipBc2lnbmFjaW9uZXMgRmFtaWxpYXJlcyoqDQoNCkxhcyBhc2lnbmFjaW9uZXMgZmFtaWxpYXJlcywgbGFzIGFib25hIEFOU0VTLCBzZSBwdWVkZW4gY29uc3VsdGFyIGxhcyBtaXNtYXMgZW4gZWwgc2lndWllbnRlIGVubGFjZSBbQW5zZXNdKGh0dHBzOi8vd3d3LmFuc2VzLmdvYi5hci9hc2lnbmFjaW9uZXMtZmFtaWxpYXJlcykuDQoNCipNb250b3MgZGUgbGFzIGFzaWduYWNpb25lcyBmYW1pbGlhcmVzKg0KDQpMb3MgdmFsb3JlcyBkZSBsYXMgYXNpZ25hY2lvbmVzIHNlIHZhbiBhY3R1YWxpemFuZG8gZW4gZGlmZXJlbnRlcyBtb21lbnRvcyBkZWwgYcOxby4NCg0KUGFyYSBhY2NlZGVyIGFsIGNvYnJvIGRlIGxhcyBtaXNtYXMsIHZhIGEgZGVwZW5kZSBkZWwgaW5ncmVzbyBkZWwgZ3J1cG8gZmFtaWxpYXIgKElHRikuDQoNCkVuIGVsIGNhc28gcXVlIGVsIGVtcGxlYWRvIHN1cGVyZSBlbCBtb250byBpbmRpdmlkdWFsIGRlbCBJR0YsIHNlIGV4Y2x1eWUgZWwgY29icm8gZGUgbGFzIG1pc21hcy4NCg0KTGFzIHJlbXVlbmVyYWNpb25lcyBxdWUgY29uc2lkZXJhIEFuc2VzIHBhcmEgZWwgcGFnbyBkZSBsYXMgYXNpZ25hY2lvbmVzIGZhbWlsaWFyZXMgc29uIGxhcyBzaWd1aWVudGVzOg0KDQril7zvuI/vuI8gTGFzIHJlbXVuZXJhY2lvbmVzIGJydXRhcyB5IHN1bWFzIG5vIHJlbXVuZXJhdGl2YXMgZGVjbGFkYXMgZW4gZWwgRm9ybXVsYXJpbyA5MzENCg0K4pe877iPIFNlIGV4Y2x1eWVuIGxhcyBob3JhcyBleHRyYXMsIGVsIHBsdXMgcG9yIHpvbmEgZGVzZmF2b3JhYmxlIHkgZWwgYWd1aW5hbGRvDQoNCioqUmVsYWNpb25lcyBMYWJvcmFsZXMqKg0KDQpFbiBlbCBjYXNvIGRlIHJlYWxpemFyIHVuIGFsdGEsIGJhamEgbyBtb2RpZmljYWNpw7NuIGRlIHVuIGVtcGxlYWRvLCBsYSBtaXNtYSBkZWJlIHNlciByZWZsZWphZGEgZW4gQUZJUC4NCkVsIHByb2NlZGltaWVudG8gc2UgcHVlZGUgY29uc3VsdGFyIGVuIGxhIHNpZ3VpZW50ZSBww6FnaW5hIFtBQk1dKGh0dHBzOi8vc2VydmljaW9zd2ViLmFmaXAuZ29iLmFyL2dlbmVyaWNvcy9ndWlhRGVUcmFtaXRlcy9WZXJHdWlhLmFzcHg/dHI9NDcpDQoNCioqKsK/Q3XDoWwgZXMgZWwgcGxhem8gcGFyYSBkYXIgZGUgYWx0YSBhIHVuIHRyYWJhamFkb3I/KioqDQoNCkhhc3RhIGVsIGTDrWEgaW5tZWRpYXRvIGFudGVyaW9yLCBpbmNsdXNpdmUsIGFsIGRlIGNvbWllbnpvIGVmZWN0aXZvIGRlIGxhcyB0YXJlYXMuDQoNCioqKsK/Q3XDoWwgZXMgZWwgcGxhem8gcGFyYSBkYXIgZGUgYmFqYSBhIHVuIHRyYWJhamFkb3I/KioqDQoNCkRlYmUgcmVhbGl6YXJzZSBkZW50cm8gZGVsIHBsYXpvIGRlIDUgZMOtYXMgY29ycmlkb3MgY29udGFkb3MgYSBwYXJ0aXIgZGUgbGEgZmVjaGEgLS1pbmNsdXNpdmUtIGVuIHF1ZSBzZSBwcm9kdWpvIGxhIGV4dGluY2nDs24gZGVsIGNvbnRyYXRvIGRlIHRyYWJham8sIHBvciBjdWFscXVpZXIgY2F1c2EuDQoNCioqKsK/Q3XDoWwgZXMgZWwgcGxhem8gcGFyYSBsYSBtb2RpZmljYWNpw7NuIGRlIGRhdG9zPyoqKg0KDQpMb3MgZGF0b3MgZGVsIGVtcGxlYWRvciB5IGRlbCB0cmFiYWphZG9yIHF1ZSBubyBzZSBhY3R1YWxpY2VuIGF1dG9tw6F0aWNhbWVudGUgZW4gZWwgc2lzdGVtYSBtZWRpYW50ZSBsYSBpbmZvcm1hY2nDs24gc3VtaW5pc3RyYWRhIHBvciBvdHJhcyBiYXNlcyBkZSBkYXRvcywgZGViZW4gc2VyIG1vZGlmaWNhZG9zIGRlbnRybyBkZSBsb3MgNSBkw61hcyBow6FiaWxlcyBkZSBoYWJlciBvY3VycmlkbyBlbCBldmVudG8gcXVlIG9yaWdpbmEgZWwgY2FtYmlvLg0KDQoqKirCv0N1w6FsIGVzIGVsIHBsYXpvIHBhcmEgYW51bGFyIHVuIGFsdGE/KioqDQoNCkxhIGFudWxhY2nDs24gZGVsIGFsdGEgc2UgcmVhbGl6YSBjdWFuZG8gbm8gc2UgY29uY3JldGEgbGEgcmVsYWNpw7NuIGxhYm9yYWwuDQoNCkRpY2hhIGFudWxhY2nDs24gZGViZXLDoSBlZmVjdHVhcnNlIGhhc3RhIGxhcyAyNCBob3JhcywgaW5jbHVzaXZlLCBkZWwgZMOtYSBpbmZvcm1hZG8gY29tbyBkZSBpbmljaW8gZGUgbGEgcmVsYWNpw7NuIGxhYm9yYWwuDQoNCk5vIG9ic3RhbnRlLCBlbCBjaXRhZG8gcGxhem8gc2UgZXh0ZW5kZXLDoSBoYXN0YSBsYXMgMTIgaG9yYXMgZGVsIGTDrWEgc2lndWllbnRlLCBjdWFuZG8gbGEgam9ybmFkYSBsYWJvcmFsIGVzdMOpIHByZXZpc3RhIGluaWNpYXJzZSBkZXNkZSBsYXMgMTcgaG9yYXMgZW4gYWRlbGFudGUuDQoNCkFzaW1pc21vLCBsYSByZWxhY2nDs24gbGFib3JhbCBxdWUgc2UgaW5pY2llIHVuIGTDrWEgaW5ow6FiaWwgLCBwb2Ryw6Egc2VyIGFudWxhZGEgaGFzdGEgbGFzIDEyIGhvcmFzIGRlbCBwcmltZXIgZMOtYSBow6FiaWwgc2lndWllbnRlDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQoNCiMjIENvbnRhY3RvDQoNCltZYW5lbCBQYXVsZXR0ZV0oaHR0cHM6Ly95YW5lbHBhdWxldHRlLm5ldGxpZnkuYXBwLykNCg0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KKkVuIGNhc28gZGUgZW5jb250cmFyIG9ic2VydmFjaW9uZXMsIGluZm9ybWFjacOzbiBpbmNvbXBsZXRhIG8gcXVlIGRlc2VlbiBhbXBsaWFyIHF1ZWRhbiBhYmllcnRvcyBsb3MgY2FuYWxlcyBkZSBjb250YWN0byoNCg0KDQoNCg0K