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.
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
LS0tDQp0aXRsZTogIkxpcXVpZGFjacOzbiBkZSBTdWVsZG9zIg0Kc3VidGl0bGU6ICJDb25jZXB0b3MgQsOhc2ljb3MiDQphdXRob3I6ICJZYW5lbCBQYXVsZXR0ZSINCmRhdGU6ICdcdG9kYXknDQpsaW5rY29sb3I6IGJsdWUNCnVybGNvbG9yOiBibHVlDQpvdXRwdXQ6DQogIGh0bWxfZG9jdW1lbnQ6DQogICAgdGhlbWU6IHNwYWNlbGFiDQogICAgdG9jOiB0cnVlDQogICAgdG9jX2Zsb2F0OiB0cnVlDQogICAgY29kZV9mb2xkaW5nOiBzaG93DQogICAgY29kZV9kb3dubG9hZDogdHJ1ZQ0KDQotLS0NCg0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0gDQprbml0cjo6b3B0c19jaHVuayRzZXQod2FybmluZyA9IEZBTFNFLCBtZXNzYWdlID0gRkFMU0UpIA0KDQpgYGANCg0KDQojIyBQcmVzZW50YWNpw7NuIA0KDQpFbCBwcmVzZW50ZSBkb2N1bWVudG8gY29udGllbmUgY29uY2VwdG9zIGLDoXNpY29zIHNvYnJlIGxhIGxpcXVpZGFjacOzbiBkZSBzdWVsZG9zIGVuIEFyZ2VudGluYSB5IGxhIGV4cGxpY2FjacOzbiBkZSBsb3MgcGFzb3MgYSBzZWd1aXIgcGFyYSBsYSBwcmVzZW50YWNpw7NuIG1lZGlhbnRlIHVuIGRvY3VtZW50byBSIE1hcmtkb3duLg0KDQpQYXJhIG1heW9yIGluZm9ybWFjacOzbiBzb2JyZSBSbWFya2Rvd24gcG9kZXMgY29uc3VsdGFyIFthcXXDrV0oaHR0cHM6Ly9ybWFya2Rvd24ucnN0dWRpby5jb20vKS4NCg0KDQojIyBPYmpldGl2bw0KDQoNClVuIGFjZXJjYW1pZW50byBhIGxvcyAgY29uY2VwdG9zIGLDoXNpY29zIGRlIExpcXVpZGFjacOzbiBkZSBTdWVsZG9zLiANCg0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KDQoNCkxhcyBsaWJyZXJpYXMgcXVlICB1dGlsaXphbW9zIHBhcmEgZWwgcHJlc2VudGUgZG9jdW1lbnRvLCBzb24gbGFzIHNpZ3VpZW50ZXM6IA0KDQoNCmBgYHtyIH0NCg0KDQpsaWJyYXJ5KGdvb2dsZXNoZWV0czQpICAjIHBhcmEgdHJhYmFqYXIgY29uIGdvb2dsZSBkcml2ZQ0KbGlicmFyeShrYWJsZUV4dHJhKSAjIHBhcmEgdGFibGFzIA0KDQoNCmBgYA0KDQoNCkluY29ycG9yYW1vcyBsb3Mgc2lndWllbnRlcyBhcmNoaXZvcyAgeSBjcmVhbW9zIG9iamV0b3MgcGFyYSBjYWRhIHVuby4NCg0KDQpMYSBjcmVhY2nDs24gZGUgb2JqZXRvcywgbm9zIHBlcm1pdGUgbGEgbWFuaXB1bGFjacOzbiBtw6FzIG9yZGVuYWRhIGRlIGxvcyBkYXRvcy4NCg0KDQoNCmBgYHtyfQ0KDQoNCg0KU01WTSA8LSByZWFkX3NoZWV0KCIxZEZsck9VN0hTMzVDNEZTd2lubEtGS3pESTdJZG1JZm9YU2tkZFByOVNjUSIpDQpWYWNhY2lvbmVzIDwtIHJlYWRfc2hlZXQoIjFEZWYteU5SWkZzV05mU2ZzcjBoZ1o1ejdFVnF0dk90ZHN5cEFGMUdZaVQ4IikNCkxpY2VuY2lhcyA8LSByZWFkX3NoZWV0KCIxLVAwN2tYcll1dmRuZHdlMExiOThRY2tvMkY5TVJJTmJ5blFIRnliY2FtNCIpDQpJbmN1bHBhYmxlIDwtIHJlYWRfc2hlZXQoIjEtUDA3a1hyWXV2ZG5kd2UwTGI5OFFja28yRjlNUklOYnluUUhGeWJjYW00Iiwgc2hlZXQgPSAiSW5jdWxwYWJsZSIpICMgMsKwIGhvamENCg0KDQpgYGANCg0KDQpTaSBleGlzdGVuIGVsZW1lbnRvcyBxdWUgdmFtb3MgYSB1dGlsaXphciByZWl0ZXJhZGFtZW50ZSwgZXMgY29udmVuaWVudGUgY3JlYXJsb3MgYWwgaW5pY2lvIHkgbHVlZ28gc2ltcGxlbWVudGUgIGxvcyBpbnZvY2Ftb3M6IA0KDQoNCmBgYHtyfQ0KDQpmdWVudGUgPC0gIkZ1ZW50ZTogRWxhYm9yYWNpw7NuIHByb3BpYSINCmF6dWwgPC0gIiMzNDREN0UiDQoNCg0KYGBgDQoNCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCiMjIE5vcm1hdGl2YQ0KDQpFbiBlbCBwcmVzZW50ZSBkb2N1bWVudG8sIHZhbW9zIGEgdXRpbGl6YXIgZW4gbGluZWFzIGdlbmVyYWxlcyBsYSBbbGV5IGRlIGNvbnRyYXRvIGRlIHRyYWJham9dKGh0dHA6Ly9zZXJ2aWNpb3MuaW5mb2xlZy5nb2IuYXIvaW5mb2xlZ0ludGVybmV0L3Zlck5vcm1hLmRvP2lkPTI1NTUyKSBxdWUgcmVndWxhIGxhcyByZWxhY2lvbmVzIGxhYm9yYWxlcyBlbiBlbCBhbWJpdG8gcHJpdmFkby4NCg0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KIyMgTW9kYWxpZGFkZXMgZGUgQ29udHJhdGFjacOzbiB7LnRhYnNldCAudGFic2V0LWZhZGUgLnRhYnNldC1waWxsc30NCg0KRXhpc3RlbiBkaXZlcnNhcyBtb2RhbGlkYWRlcyBkZSBjb250cmF0YWNpw7NuLg0KRGV0YWxsYW1vcyBhIGNvbnRpbnVhY2nDs24gbGFzIHByaW5jaXBhbGVzLg0KDQojIyMgQ29udHJhdG8gcG9yIHRpZW1wbyBJbmRldGVybWluYWRvDQoNCkxhIGxleSBkZSBjb250cmF0byBkZSB0cmFiYWpvIHByZXbDqSBxdWUgZWwgY29udHJhdG8gZGUgdHJhYmFqbyBzZXLDoSBwb3IgdGllbXBvIGluZGV0ZXJtaW5hZG8gYSBtZW5vcyBxdWUgc2UgZXNwZWNpZmlxdWUgb3RyYSBtb2RhbGlkYWQuDQoNCk5vIHJlcXVpZXJlIGZvcm1hbGlkYWQgYWxndW5hLCB5IGJhc3RhIGNvbiBlbCBzb2xvIGNvbnNlbnRpbWllbnRvIGluZXF1w612b2NvIGRlIGxhcyBwYXJ0ZXMgcGFyYSBxdWUgcXVlZGUgY2VsZWJyYWRvLg0KUHJlc2VudGEgbGEgcGFydGljdWxhcmlkYWQgcXVlIGR1cmFudGUgbG9zIHByaW1lcm9zIHRyZXMgbWVzZXMgZWwgY29udHJhdG8gZGUgdHJhYmFqbyBzZWEgY29uc2lkZXJhZG8gYSBwcnVlYmEuDQoNCiMjIyBQZXLDrW9kbyBkZSBwcnVlYmENCg0KRm9ybWEgcGFydGUgZGUgY29udHJhdG8gZGUgdHJhYmFqbyBwb3IgdGllbXBvIGluZGV0ZXJtaW5hZG8sIGVsIGN1YWwgZW4gc3UgaW5pY2lvIHB1ZWRlIGFkb3B0YXIgZXN0YSBtb2RhbGlkYWQuDQpQb3IgZWxsbyBzZSBkZWJlIGhhYmxhciBkZSBjb250cmF0byBkZSB0cmFiYWpvIHBvciB0aWVtcG8gaW5kZXRlcm1pbmFkbyAiY29uIiBvICJzaW4iIHBlcsOtb2RvIGRlIHBydWViYS4NCg0KUHJlc2VudGEgbGFzIHNpZ3VpZW50ZXMgcGFydGljdWxhcmlkYWRlczoNCg0KLSAgIER1cmFjacOzbjogSGFzdGEgdHJlcyBtZXNlcy4NCg0KLSAgIEV4Y2x1c2nDs246IE5vIHNlIGFwbGljYSBlbiBlbCBjYXNvIGRlIHRyYWJhamFkb3JlcyBkZSB0ZW1wb3JhZGEuDQoNCi0gICBSdXB0dXJhIHVuaWxhdGVyYWw6IER1cmFudGUgZWwgcGVyw61vZG8gZGUgcHJ1ZWJhIGN1YWxxdWllcmEgZGUgbGFzIHBhcnRlcyBwdWVkZSBleHRpbmd1aXIgbGEgcmVsYWNpw7NuIGxhYm9yYWwgc2luIGNhdXNhLCBzaW4gZGViZXIgZGUgaW5kZW1uaXphci4NCg0KLSAgIERlYmVyIGRlIFByZWF2aXNhcjogRXMgZGUgcXVpbmNlIGTDrWFzLCBvYmxpZ2FjacOzbiBlc3RhIGRpcmlnaWRhIGFsIGVtcGxlYWRvciB5IHRhbWJpw6luIGFsIHRyYWJhamFkb3IuDQoNCi0gICBSZWdpc3RyYWNpw7NuOiBBbCBtb21lTnRvIGRlIGRhciBlbCBhbHRhIGVuIEFGSVAgc2UgaW5kaWNhIGxhIG1vZGFsaWRhZCBkZSBjb250cmF0YWNpw7NuICIxNCIsIGVuIGNhc28gZGUgbm8gaGFjZXJsbyBzZSBjb25zaWRlcmEgcXVlIGxhIGVtcHJlc2EgcmVudW5jaWEgYWwgdXNvIGRlbCBtaXNtby4NCg0KLSAgIFJlY29udHJhdGFjacOzbjogVW4gbWlzbW8gdHJhYmFqYWRvciBubyBwdWVkZSBzZXIgY29udHJhdGFkbyBwb3IgZWwgbWlzbW8gZW1wbGVhZG9yIG3DoXMgZGUgdW5hIHZleiBjb24gcGVyw61vZG8gZGUgcHJ1ZWJhLg0KDQojIyMgQ29udHJhdG8gZGUgVHJhYmFqbyBhIFRpZW1wbyBQYXJjaWFsDQoNCkVsIHRyYWJhamFkb3IgcHJlc3RhIHNlcnZpY2lvcyBkdXJhbnRlIHVuIGRldGVybWluYWRvIG7Dum1lcm8gZGUgaG9yYXMgYWwgZMOtYSBvIGxhIHNlbWFuYSwgbWVub3MgZGUgZG9zIHRlcmNpb3MgZGUgbGEgam9ybmFkYSBoYWJpdHVhbCBkZSBsYSBhY3RpdmlkYWQuDQpMYSByZW11bmVyYWNpw7NuIGVzIHByb3BvcmNpb25hbCBhIGxvIHF1ZSBjb2JyYSBlbCB0cmFiYWphZG9yIGEgdGllbXBvIGNvbXBsZXRvIGRlIGxhIG1pc21hIGNhdGVnZW9yw61hLg0KDQojIyMgIENvbnRyYXRvIHBvciBUaWVtcG8gRGV0ZXJtaW5hZG8NCg0KTG9zIGNvbnRyYXRvcyBkZSB0cmFiYWpvIHBvciB0aWVtcG8gZGV0ZXJtaW5hZG8gc29uLCBsYSBleGNlcGNpw7NuIGEgbGEgcmVnbGEgeSBvYmVkZWNlbiBhIHNpdHVhY2lvbmVzIGV4Y2VwY2lvbmFsZXMgcXVlIGRldGVybWluYW4gbGEgbmVjZXNpZGFkIGRlIHJlY3VycmlyIGEgZXN0ZSB0aXBvIGRlIGNvbnRyYXRvcy4NCg0KU29sbyBjdWFuZG8gbGEgc2l0dWFjacOzbiBhc8OtIGxvIGV4aWphLCBsYXMgcGFydGVzIHBvZHLDoW4gYXBsaWNhciBlc3RhcyBtb2RhbGlkYWRlcyBjb250cmFjdHVhbGVzIGxhcyBjdWFsZXMgZXN0w6FuIHByZXZpc3RhcyBlbiBsYSBsZXkuDQpBZGVtw6FzIGRlIGxhIGNvbnRpbmdlbmNpYSBkZWwgcGxhem8gZGV0ZXJtaW5hZG8sIGV4aXN0ZW4gb3RyYXMgY29udGluZ2VuY2lhcyBwYXJhIGxhcyBjdWFsZXMgbGEgbGV5IHByZXbDqSBtb2RhbGlkYWRlcyBlc3BlY8OtZmljYXMuDQpMYXMgbW9kYWxpZGFkZXMgY29udHJhY3R1YWxlcyBzb24gbGFzIHNpZ3VpZW50ZXM6DQoNCiMjIyBDb250cmF0byBhIFBsYXpvIEZpam8NCg0KRW4gZWwgY29udHJhdG8gZXNjcml0bywgc2UgZGViZSBlc3BlY2lmaWNhciBjb25jcmV0YW1lbnRlIGN1w6FsIGVzIGxhIGNhdXNhIHF1ZSBkZXJpdmEgZW4gZXN0YSBtb2RhbGlkYWQgY29udHJhY3R1YWwuDQpTZSBkZWJlLCBhIHN1IHZleiwgZmlqYXIgbGEgZmVjaGEgZGUgZmluYWxpemFjacOzbiBlbiBmb3JtYSBleHByZXNhLg0KRWwgcmVnaXN0cm8gZW4gZWwgc2lzdGVtYSBkZSBzaW1wbGlmaWNhY2nDs24gcmVnaXN0cmFsIGRlIEFGSVAgbm8gc3VzdGl0dXllIGxhIG5lY2VzYXJpYSBpbnN0cnVtZW50YWNpw7NuIGVzY3JpdGEgeSBmaXJtYWRhIHBvciBsYXMgcGFydGVzLg0KDQpMYSByZWdpc3RyYWNpw7NuIGVuIGVsIHNpc3RlbWEgIk1pIFNpbXBsaWZpY2FjacOzbiIgZXMgbWVkaWFudGUgbG9zIGPDs2RpZ29zICIyMSIgbyAiMjIiICh0aWVtcG8gcGFyY2lhbCBvIGpvcm5hZGEgY29tcGxldGEsIHJlc3BlY3RpdmFtZW50ZSksIGluZGljYW5kbyBmZWNoYSBkZSBmaW5hbGl6YWNpw7NuIHByZXZpc3RhLg0KDQpFbCBwbGF6byBtw6F4aW1vIGRlIGR1cmFjacOzbiBlcyBkZSBjaW5jbyAoNSkgYcOxb3MsIHNpbiBxdWUgbGEgbGV5IHByZXZlYSB1biBwbGF6byBtw61uaW1vLg0KDQpDb21vIHJlZ2xhIGdlbmVyYWwsIHkgYXPDrSBsbyBpbmRpY2EgbGEgbm9ybWEsIG5vIHNlIGFkbWl0ZW4gY29udHJhdG9zIHN1Y2VzaXZvcyBzaSBubyBtZWRpYSB1bmEgY2F1c2FsIG9iamV0aXZhIHF1ZSBsbyBqdXN0aWZpcXVlIChvYnJhLCBhY3RpdmlkYWQgZXh0cmFvcmRpbmFyaWEgZnVlcmEgZGVsIGdpcm8gbm9ybWFsIGRlbCBlc3RhYmxlY2ltaWVudG8sIHJlZW1wbGF6byBkZSBwZXJzb25hbCwgZXRjw6l0ZXJhKS4NCg0KUHJlYXZpc286IHNpIGVsIHBsYXpvIGRlbCBjb250cmF0byBzdXBlcmEgZWwgbWVzLCBlbCBlbXBsZWFkb3IgZGViZSBwcmVhdmlzYXIgZmVoYWNpZW50ZW1lbnRlIHN1IGZpbmFsaXphY2nDs24gZGVudHJvIGRlIHVuIHBsYXpvIGFudGVyaW9yIGRlIGxhIGZlY2hhIGRlIGZpbmFsaXphY2nDs24gc3VwZXJpb3IgYWwgbWVzIGUgaW5mZXJpb3IgYSBkb3MgbWVzZXMuDQpMYSBmYWx0YSBkZSBub3RpZmljYWNpw7NuIGRlbCBwcmVhdmlzbyBjb252aWVydGUsIGEgbW9kbyBkZSBzYW5jacOzbiwgYWwgY29udHJhdG8gYSBwbGF6byBkZXRlcm1pbmFkbyBlbiB1bm8gZGUgdGllbXBvIGluZGV0ZXJtaW5hZG8gZW4gZm9ybWEgYXV0b23DoXRpY2EuDQoNCkFsIG1vbWVudG8gZGUgbGEgZXh0aW5jacOzbiBubyBzZSByZXF1aWVyZSBub3RpZmljYXIgYWwgdHJhYmFqYWRvciwgcGVybyBjb21vIGhlbW9zIHNlw7FhbGFkbyBjdWFuZG8gZXMgc3VwZXJpb3IgYWwgbWVzIHNpZW1wcmUgc2UgcmVxdWllcmUgY3VtcGxpciBjb24gbGEgZm9ybWFsaWRhZCBkZWwgcHJlYXZpc28gbm90aWZpY2FkbyBlbiBmb3JtYSBmZWhhY2llbnRlLg0KTmFkYSBvYnN0YSBxdWUgZWwgY29udHJhdG8gYSBwbGF6byBmaWpvIHNlIGV4dGluZ2EgcG9yIG90cmFzIGNhdXNhbGVzIHByZXZpc3RhcyBlbiBsYSBsZXkgKHJlbnVuY2lhLCBtdXR1byBhY3VlcmRvLCBhYmFuZG9ubywgZGVzcGlkbyBpbmRpcmVjdG8sIGNvbiBjYXVzYSwgZXRjLikNCg0KIyMjIENvbnRyYXRvIGRlIFRyYWJham8gRXZlbnR1YWwNCg0KTGEgYWN0aXZpZGFkIGRlbCB0cmFiYWphZG9yIHNlIGVqZXJjZSBiYWpvIGxhIGRlcGVuZGVuY2lhIGRlIHVuIGVtcGxlYWRvciBwYXJhIHJlc3VsdGFkb3MgY29uY3JldG9zIHBhcmEgc2VydmljaW9zIGV4dHJhb3JkaW5hcmlvcyBkZXRlcm1pbmFkb3MgZGUgYW50ZW1hbm8gbyBleGlnZW5jaWFzIGV4dHJhb3JkaW5hcmlhcyB5IHRyYW5zaXRvcmlhcyBkZSBsYSBlbXByZXNhLCBleHBsb3RhY2nDs24gbyBlc3RhYmxlY2ltaWVudG8gY3VhbmRvIG5vIHB1ZWRlIHByZXZlcnNlIHVuIHBsYXpvIGNpZXJ0byBwYXJhIGZpbmFsaXphciBlbCBjb250cmF0by4NCg0KRW4gZXN0b3MgY2Fzb3MgZWwgdsOtbmN1bG8gY29taWVuemEgeSB0ZXJtaW5hIGNvbiBsYSByZWFsaXphY2nDs24gZGUgbGEgb2JyYSwgbGEgZWplY3VjacOzbiBkZWwgYWN0byBvIGxhIHByZXN0YWNpw7NuIGRlbCBzZXJ2aWNpby4NCg0KIyMjIENvbnRyYXRvIGRlIFRyYWJham8gcG9yIFRlbXBvcmFkYQ0KDQpQb3IgbGEgbmF0dXJhbGV6YSBkZSBsYSBhY3RpdmlkYWQsIGxhcyB0YXJlYXMgc2UgZGVzYXJyb2xsYW4gZW4gZGV0ZXJtaW5hZGFzIMOpcG9jYXMgZGVsIGHDsW8geSBzZSByZXBpdGVuIGFudWFsbWVudGUuDQoNCkxhcyBtb2RhbGlkYWRlcyBkZSBjb250cmF0YWNpw7NuIHNlIGNhcmdhbiBlbiBlbCBsZWdham8gZGUgY2FkYSBlbXBsZWFkbywgeSBsYXMgbWlzbWFzIHNvbiBkZWNsYXJhZGFzIGVuIGVsIEZvcm11bGFyaW8gOTMxLg0KDQpQYXJhIG1heW9yIGluZm9ybWFjaW9uIHNvYnJlIG1vZGFsaWRhZGVzIGRlIGNvbnRyYXRhY2nDs24gLCBzZSBwdWVkZSBjb25zdWx0YXIgbGEgbm9ybWF0aXZhIGFwbGljYWJsZSBlbiBlbCBzaWd1aWVudGUgZW5sYWNlOg0KDQpbTW9kYWxpZGFkZXMgZGUgY29udHJhdGFjacOzbl0oaHR0cHM6Ly93d3cuYXJnZW50aW5hLmdvYi5hci90cmFiYWpvL2d1aWFkZWNvbnRyYXRhY2lvbikuDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQoNCg0KIyMgU3VlbGRvDQoNCg0KKipTYWxhcmlvIE1pbmltbyBWaXRhbCB5IE1vdmlsKioNCg0KRWwgU2FsYXJpbyBNw61uaW1vIFZpdGFsIHkgTcOzdmlsLCBkZSBhY3VlcmRvIGNvbiBsYSBMZXkgZGUgQ29udHJhdG8gZGUgVHJhYmFqbywgc2UgZGVmaW5lIGNvbW8gImxhIG1lbm9yIHJlbXVuZXJhY2nDs24iIHF1ZSBkZWJlIHBlcmNpYmlyIGVuIGVmZWN0aXZvIGVsIHRyYWJhamFkb3Igc2luIGNhcmdhcyBkZSBmYW1pbGlhLCBlbiBzdSBqb3JuYWRhIGxlZ2FsIGRlIHRyYWJham8uDQpFbCBDb25zZWpvIE5hY2lvbmFsIGRlbCBFbXBsZW8sIGxhIFByb2R1Y3RpdmlkYWQgeSBlbCBTYWxhcmlvIE3DrW5pbW8gVml0YWwgeSBNw7N2aWwgKENORVBTTVZNKSBkZXRlcm1pbmEgcGVyacOzZGljYW1lbnRlIGVsIFNhbGFyaW8gTcOtbmltby4NCg0KTG9zIGltcG9ydGVzIHZpZ2VudGVzIHNvbiBsb3Mgc2lndWllbnRlczoNCg0KYGBge3J9DQoNClNNVk0lPiUgDQogIGthYmxlKCJodG1sIiwgZXNjYXBlPUYpICU+JQ0KICAgIGthYmxlX3N0eWxpbmcoZnVsbF93aWR0aCA9IFRSVUUsIGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsImhvdmVyIiwiY29uZGVuc2VkIiApKSAlPiUgDQpyb3dfc3BlYygwLCBib2xkPVQsIGNvbG9yPSJ3aGl0ZSIsIGJhY2tncm91bmQgPSBhenVsKQ0KDQoNCg0KYGBgDQoNCioqU2FsYXJpbyBCw6FzaWNvKioNCg0KRWwgc3VlbGRvIGLDoXNpY28gbm8gcHVlZGUgc2VyIGluZmVyaW9yIGFsIFNNVk0uDQoNClBhcmEgbG9zIGVtcGxlYWRvcyBmdWVyYSBkZSBjb252ZW5pbywgZWwgc3VlbGRvIHNlIGNvbmZvcm1hIGVudHJlIGxhcyBwYXJ0ZXMuDQpQYXJhIGxvcyBlbXBsZWFkb3MgZGVudHJvIGRlIGNvbnZlbmlvLCBlbCBtaXNtbyBkZXBlbmRlIGRlIGxhcyBuZWdvY2lhY2lvbmVzIGVuIHBhcml0YXJpYXMuDQpDYWRhIGdyZW1pbyBkZXRlcm1pbmFyw6EgZWwgc3VlbGRvIGNvcnJlc3BvbmRpZW50ZQ0KDQoNCioqQW50aWfDvGVkYWQqKg0KDQpMYSBhbnRpZ8O8ZWRhZCBlcyBlbCB0aWVtcG8gZGUgc2VydmljaW8gZWZlY3Rpdm8gcXVlIHVuIHRyYWJhamFkb3IgdGllbmUgZW4gc3UgbHVnYXIgZGUgdHJhYmFqbywgZGVzZGUgc3UgaW5ncmVzbyBvIHZpbmN1bGFjacOzbiBsYWJvcmFsLg0KU2kgZWwgZW1wbGVhZG8gZWdyZXNhIGRlIGxhIGNvbXBhw7FpYSB5IHJlaW5ncmVzYSBhIGxhcyBvcmRlbmVzIGRlbCBtaXNtbyBlbXBsZWFkb3IsIG1hbnRpZW5lIGxhIG1pc21hIGFudGlndWVkYWQuDQoNCioqQ2F0ZWdvcsOtYSBMYWJvcmFsKioNCg0KTGFzIGNhdGVnb3LDrWFzIGxhYm9yYWxlcyBlc3RhbiBkZWZpbmlkYXMgZW4gY2FkYSBjb252ZW5pbyBjb2xlY3Rpdm8gZGUgdHJhYmFqby4NCkxhIGFzaWduYWNpw7NuIGRlIGxhcyBtaXNtYXMsIGRlcGVuZGUgZGUgbGEgdGFyZWEgcmVhbGl6YWRhLg0KDQpBIGNhZGEgY2F0ZWdvcsOtYSBsZSBjb3JyZXNwb25kZSB1biBzdWVsZG8gYsOhc2ljbyBkZXRlcm1pbmFkbyB5IHNlZ8O6biBsYSB0YXJlYSByZWFsaXphZGEsIGNvcnJlc3BvbmRlcmFuIGFkaWNpb25hbGVzIHF1ZSBlc3BlY2lmaXF1ZSBlbCBjb252ZW5pby4NCg0KIyMgSm9ybmFkYSBMYWJvcmFsDQoNCkxhIGpvcm5hZGEgbGFib3JhbCBlcyBlbCBwbGF6byBkZSB0aWVtcG8gZHVyYW50ZSBlbCBjdWFsIGVsIGVtcGxlYWRvIHNlIGVuY3VlbnRyYSBhIGRpc3Bvc2ljacOzbiBkZWwgZW1wbGVhZG9yLg0KDQpMYSBqb3JuYWRhIGxhYm9yYWwgZXN0YSByZWd1bGFkYSBwb3IgbGEgTENUIHkgbGEgW0xleSAxMTU0NF0oaHR0cDovL3NlcnZpY2lvcy5pbmZvbGVnLmdvYi5hci9pbmZvbGVnSW50ZXJuZXQvdmVyTm9ybWEuZG8/aWQ9NjMzNjgpDQoNCipKb3JuYWRhIGRlIHRyYWJham8gRGl1cm5hKiA6IEVzIGFxdWVsbGEgcXVlIHNlIHJlYWxpemEgZW4gdHJlIGxhcyAwNjowMGhzIHkgMjFocyBubyBkZWJlIHN1cGVyYXIgbGFzIDggaG9yYXMgZGlhcmlhcyBvIGxhcyA0OCBzZW1hbmFsZXMuDQpTZSB0cmF0YSBkZSB1biBsw61taXRlIG3DoXhpbW8sIHBvciBlc28gcHVlZGVuIGV4aXN0aXIgam9ybmFkYXMgY29uIHVuYSBkdXJhY2nDs24gbWVub3IuDQoNClNpIG5vIHRyYWJhamEgbGEgbWlzbWEgY2FudGlkYWQgZGUgaG9yYXMgdG9kb3MgbG9zIGTDrWFzLCDCv2N1w6FudG8gZXMgZWwgbcOheGltbyBkZSBob3JhcyBkaWFyaWFzIHF1ZSBkZWJlIGN1bXBsaXI/DQoNCk5vIG3DoXMgZGUgOSBob3JhcyBwb3IgZMOtYS4NCkVuIHRvdGFsLCBsYXMgam9ybmFkYXMgbm8gcHVlZGVuIHN1bWFyIG3DoXMgZGUgNDggaHMuDQpwb3Igc2VtYW5hLg0KDQoqSm9ybmFkYSBkZSB0cmFiYWpvIE5vY3R1cm5hKiA6IEVzIGFxdWVsbGEgcXVlIHNlIHJlYWxpemEgZW50cmUgbGFzIDIxOjAwaHMgeSAwNmhzLCBlbCBsw61taXRlIG3DoXhpbW8gZGUgbGEgam9ybmFkYSBlcyA3IGhvcmFzLg0KDQoqSm9ybmFkYSBkZSB0cmFiYWpvIEluc2FsdWJyZSogOiBFcyBhcXVlbGxhIHF1ZSBlbCBNaW5pc3RlcmlvIGRlIFRyYWJham8gaGEgZGVjcmV0YWRvIGNvbW8gaW5zYWx1YnJlLCBlbCBsw61taXRlIGVzIGRlIDYgaG9yYXMgZGlhcmlhcy4NCg0KKkpvcm5hZGEgZGUgdHJhYmFqbyBtaXh0YSogOiBDb3JyZXNwb25kZSBjdWFuZG8gc2UgYWx0ZXJlbiBob3JhcyBkaXVybmFzIHkgbm9jdHVybmFzLCBwb3JxdWUgZWwgdHJhYmFqbyBjb21pZW56YSBhbnRlcyBkZSBsYXMgMjFocyB5IGZpbmFsaXphIGRlc3B1w6lzIGRlIGVzYSBob3JhLCBvIGNvbWllbnphIGFudGVzIGRlIGxhcyA2OjAwIGhzIHkgZmluYWxpemEgZGVzcHXDqXMgZGUgZXNhIGhvcmEuDQpFbiBlc3RlIGNhc28gZGViZSByZWR1Y2lyc2UgcHJvcG9yY2lvbmFsbWVudGUgbGEgam9ybmFkYSBlbiBvY2hvIG1pbnV0b3MsIHBvciBjYWRhIGhvcmEgbm9jdHVybmEgdHJhYmFqYWRhLCBvIHBhZ2Fyc2UgbG9zIG9jaG8gbWludXRvcyBkZSBleGNlc28gY29tbyB0aWVtcG8gc3VwbGVtZW50YXJpbywgYWwgNTAlIG8gYWwgMTAwJSBzZWfDum4gY29ycmVzcG9uZGEuDQoNCg0KKipUcmFiYWpvIEluc2FsdWJyZSoqDQoNCkxhIGR1cmFjacOzbiBkZWwgdHJhYmFqbyBubyBwdWVkZSBzZXIgbWF5b3IgYSA2IGhvcmFzIGRpYXJpYXMgbyAzNiBzZW1hbmFsZXMuDQoNClNpIGFsdGVybsOhIHRyYWJham8gaW5zYWx1YnJlIGNvbiB0cmFiYWpvIHNhbHVicmUsIGxhIGpvcm5hZGEgcHVlZGUgc2VyIGRlIDggaG9yYXMuDQoNClBlcm8gY2FkYSBob3JhIHRyYWJhamFkYSBlbiBlbCBsdWdhciBpbnNhbHVicmUgc2UgY29uc2lkZXJhIGNvbW8gMSBob3JhIHkgMzMgbWludXRvcy4NCk5vIHBvZMOpcyBwZXJtYW5lY2VyIG3DoXMgZGUgMyBob3JhcyBwb3IgZMOtYSBlbiBlc2UgbHVnYXIuDQoNCioqSG9yYXMgRXh0cmFzKioNCg0KTGEgbGV5IGRlIEpvcm5hZGEgTGFib3JhbCBwcmV2ZWUgdW5hIGpvcm5hZGEgc2VtYW5hbCBkZSA0OGhzLg0KDQpDdWFscXVpZXIgdHJhYmFqbyBxdWUgaGF5YSBleGNlZGlkbyBlbCBsaW1pdGUgZGUgZGljaGEgam9ybmFkYSwgZGViZSBzZXIgcmVtdW5lcmFkbyBjb21vIGhvcmFzIGV4dHJhLg0KDQpMaW1pdGUgZGUgSG9yYXMgZXh0cmFzOg0KDQpFbCBbRGVjcmV0byA0ODQvMjAwMF0oaHR0cDovL3NlcnZpY2lvcy5pbmZvbGVnLmdvYi5hci9pbmZvbGVnSW50ZXJuZXQvYW5leG9zLzYwMDAwLTY0OTk5LzYzMzQ3L25vcm1hLmh0bSkgZmlqYSBsw61taXRlcyBwYXJhIGxhIHJlYWxpemFjacOzbiBkZSBob3JhcyBleHRyYXM6DQoNCuKXvO+4jyAzIGhvcmFzIHBvciBkw61hLg0KDQril7zvuI8gMzAgaG9yYXMgbWVuc3VhbGVzLg0KDQril7wgMjAwIGhvcmFzIGFudWFsZXMuDQoNCg0KKipIb3JhcyBFeHRyYXMgYWwgNTAlKioNCg0KU2kgbGEgcHJlc3RhY2lvbiBzZSByZWFsaXpvIGRlc2RlIGVsIEx1bmVzIGhhc3RhIGVsIHPDoWJhZG8gYSBsYXMgMTNocywgY2FkYSBob3JhIGV4dHJhIGxhYm9yYWRhIGRlYmUgYWJvbmFyc2UgY29uIHVuIHJlY2FyZ28gZGVsIDUwJS4NCg0KKipIb3JhcyBFeHRyYXMgYWwgMTAwJSoqDQoNClNpIGxhIHByZXN0YWNpw7NuIHNlIHJlYWxpem8gdW4gZMOtYSBmZXJpYWRvLCBzw6FiYWRvcyBkZXNwdcOpcyBkZSBsYXMgMTNocyBvIGRvbWluZ29zLCBjYWRhIGhvcmEgZXh0cmEgbGFib3JhZGEgZGViZSBhYm9uYXJzZSBjb24gdW4gcmVjYXJnbyBkZWwgMTAwJS4NCg0KKipIb3JhcyBOb2N0dXJuYXMqKg0KDQpFbCB0cmFiYWpvIG5vY3R1cm5vIG5vIHB1ZWRlIGR1cmFyIG3DoXMgZGUgNyBob3JhcyB5IHRpZW5lIHF1ZSBjdW1wbGlyc2UgZW50cmUgbGFzIDkgZGUgbGEgbm9jaGUgeSBsYXMgNiBkZSBsYSBtYcOxYW5hLg0KDQpTaSB0cmFiYWphIHVuYSBwYXJ0ZSBkdXJhbnRlIGVsIGTDrWEgeSBvdHJhIHBhcnRlIGR1cmFudGUgbGEgbm9jaGUsIMK/Y3XDoWwgZXMgbGEgam9ybmFkYSBkZSB0cmFiYWpvPw0KDQpMYXMgaG9yYXMgcXVlIHRyYWJhamEgZW50cmUgbGFzIDkgZGUgbGEgbm9jaGUgeSBsYXMgNiBkZSBsYSBtYcOxYW5hIHZhbGVuIGNvbW8gMSBob3JhIHkgOCBtaW51dG9zIHBhcmEgY2FsY3VsYXIgbGEgam9ybmFkYSBkZSB0cmFiYWpvLg0KDQoqKkhvcmFzIE5vY3R1cm5hcyBhbCA1MCUqKg0KDQpDb3JyZXNwb25kZSBjdWFuZG8gZWwgaG9yYXJpbyBub2N0dXJubyByZWFsaXphZG8gcG9yIGVsIHRyYWJhamFkb3IsIGNvaW5jaWRhIGNvbiBob3JhcyBleHRyYXMgYWwgNTAlLg0KDQoqKkhvcmFzIE5vY3R1cm5hcyBhbCAxMDAlKioNCg0KQ29ycmVzcG9uZGUgY3VhbmRvIGVsIGhvcmFyaW8gbm9jdHVybm8gcmVhbGl6YWRvIHBvciBlbCB0cmFiYWphZG9yLCBjb2luY2lkYSBjb24gaG9yYXMgZXh0cmFzIGFsIDEwMCUuDQoNCioqRnJhbmNvcyoqDQoNCkVsIGTDrWEgZGUgZnJhbmNvLCBvIGRlIGRlc2NhbnNvIHNlbWFuYWwsIGVzIHVuIGxhcHNvIGVuIGxhcyBxdWUgZWwgdHJhYmFqYWRvciBubyBkZWJlIHJlYWxpemFyIHRhcmVhcyBsYWJvcmFsZXMuDQpFbCBvYmpldGl2byBwcmluY2lwYWwgZGVsIGZyYW5jbyBlcyBkZSBsYSByZWN1cGVyYWNpw7NuIGRlIGVuZXJnw61hIGRlbCB0cmFiYWphZG9yIGx1ZWdvIGRlIGhhYmVyIGRlc2VtcGXDsWFkbyBzdXMgdGFyZWFzLCBxdWUgcHVlZGVuIGhhYmVyIGV4aWdpZG8gZXNmdWVyem8gZsOtc2ljbyB5L28gcHPDrXF1aWNvLg0KDQoqKkZyYW5jb3MgVHJhYmFqYWRvcyoqDQoNClNpIGVsIGVtcGxlYWRvIHByZXN0YSBzZXJ2aWNpb3MgdW4gZGlhIGRlIGZyYW5jbywgZW50b25jZXMgY29ycmVzcG9uZGUgYWJvbmFyIGVsIGRpYSBjb24gZWwgMTAwJSBkZSByZWNhcmdvLg0KDQoqKkRpYSBubyBsYWJvcmFibGUqKg0KDQpEw61hcyBubyBsYWJvcmFsZXMgdSBvcHRhdGl2b3MsIHNvbiBsb3MgZW1wbGVhZG9yZXMgcXVpZW5lcyBwdWVkZW4gb3B0YXIgcG9yIGNvbnZvY2FyIG8gbm8gYSB0cmFiYWphci4NClNpIG5vIGxvcyBjb252b2NhLCBubyBhZmVjdGFyw6EgZWwgY29icm8gZGVsIGRpYSBsYWJvcmFsLCB5IGVuIGNhc28gZGUgc2VyIGNvbnZvY2Fkb3MsIHBlcmNpYmlyYW4gZWwgc2FsYXJpbyBzaW1wbGUsIHNpbiBuaW5nw7puIGluY3JlbWVudG8uDQoNCioqRmVyaWFkb3MqKg0KDQpFcyBhcXVlbCBkw61hIGVuIGxvcyBxdWUgbGEgbGV5IGRpc3BvbmUgcXVlIG5vIHNlIHByZXN0ZW4gdGFyZWFzIGxhYm9yYWxlcyBwb3IgY29ubWVtb3JhcnNlIGFsZ3VuYSBjZWxlYnJhY2nDs24gcmVsaWdpb3NhLCBoaXN0b3JpYSBvIGFsZ8O6biBvdHJvIGV2ZW50byBkZSDDrW5kb2xlIHNpbWlsYXIuDQoNClNlIHB1ZWRlbiBjb25zdWx0YXIgbG9zIGRpYXMgZmVyaWFkb3MgeSBubyBsYWJvcmFibGVzIGVuIGxhIHNpZ3VpZW50ZSBww6FnaW5hIFtNaW5pc3RlcmlvIGRlbCBJbnRlcmlvcl0oaHR0cHM6Ly93d3cuYXJnZW50aW5hLmdvYi5hci9pbnRlcmlvci9mZXJpYWRvcy1uYWNpb25hbGVzLTIwMjIpLg0KDQoqKkZlcmlhZG9zIFRyYWJhamFkb3MqKg0KDQpFbiBlbCBjYXNvIHF1ZSBlbCBlbXBsZWFkbyB0cmFiYWplIHVuIGZlcmlhZG8sIHRpZW5lIHVuYSBib25pZmljYWNpw7NuIGRlbCAxMDAlIGV4dHJhIGRlIHN1IHZhbG9yLg0KDQoqKkRpc3RyaWJ1Y2nDs24gZGVsIEhvcmFyaW8gTGFib3JhbCoqDQoNCkVsIGVtcGxlYWRvciBzZSBlbmN1ZW50cmEgYXV0b3JpemFkbyBsZWdhbG1lbnRlIGEgZGlhZ3JhbWFyIGxvcyBob3JhcmlvcyBkZSB0cmFiYWpvIGN1bXBsaWVuZG8gbG9zIHNpZ3VpZW50ZXMgcmVjYXVkb3M6DQoNCi0gICBMb3MgaG9yYXJpb3MgZGUgdHJhYmFqbyBzZSBkZWJlbiBoYWNlciBww7pibGljb3MgZW4gbHVnYXJlcyB2aXNpYmxlcyBwYXJhIGNvbm9jaW1pZW50byBkZSB0b2RvIGVsIHBlcnNvbmFsDQoNCi0gICBFbnRyZSBlbCBjZXNlIGRlIHVuYSBqb3JuYWRhIHkgZWwgY29taWVuem8gZGUgbGEgb3RyYSBkZWJlcmEgbWVkaWFyIHVuYSBwYXVzYSBubyBpbmZlcmlvciBhIDIxIGhvcmFzDQoNCi0gICBEdXJhbnRlIGxhIHNlbWFuYSBzZSBwdWVkZW4gZGlzdHJpYnVpciBsYXMgaG9yYXMgZGUgbWFuZXJhIGRlc2lndWFsIChtw6FzIGhvcmFzIHVuIGTDrWEgeSBtZW5vcyBvdHJvKSwgcGVybyBlbiBuaW5nw7puIGNhc28gcHVlZGUgc3VwZXJhciBsYXMgOSBob3JhcyBkaWFyaWFzIGRlIHRyYWJham8NCg0KLSAgIFJlc3BldGFyIGVsIGRlc2NhbnNvIHNlbWFuYWwgZGUgMzUgaG9yYXMgY29ycmlkYXMgYSBwYXJ0aXIgZGVsIHPDoWJhZG8gYSBsYXMgMTMgaG9yYXMNCg0KIyMjIExpY2VuY2lhcw0KDQoqKlZhY2FjaW9uZXMqKg0KDQpFcyB1bmEgbGljZW5jaWEgYW51YWwsIHF1ZSBjb3JyZXNwb25kZSBzZWd1biBsYSBhbnRpZ3VlZGFkIGRlbCBlbXBsZWFkby4NCkxhIGFudGlnw7xlZGFkIHNlIGNvbXB1dGEgYWwgMzEgZGUgZGljaWVtYnJlIGRlbCBhw7FvIGFsIGN1YWwgY29ycmVzcG9uZGVuIGxhcyB2YWNhY2lvbmVzLg0KDQrCv0N1w6FudG9zIGTDrWFzIGNvcnJlc3BvbmRlbiBwb3IgdmFjYWNpb25lcz8NCg0KYGBge3J9DQoNClZhY2FjaW9uZXMlPiUgDQogIGthYmxlKCJodG1sIiwgZXNjYXBlPUYpICU+JQ0KICAgIGthYmxlX3N0eWxpbmcoZnVsbF93aWR0aCA9IFRSVUUsIGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsImhvdmVyIiwiY29uZGVuc2VkIiApKSAlPiUgDQpyb3dfc3BlYygwLCBib2xkPVQsIGNvbG9yPSJ3aGl0ZSIsIGJhY2tncm91bmQgPSBhenVsKQ0KDQpgYGANCg0Kwr8gUXXDqSBwYXNhIGVsIHByaW1lciBhw7FvIHRyYWJhamFkbz8NCg0KQ3VhbmRvIGxvcyBlbXBsZWFkb3Mgbm8gbGxlZ2Fyb24gYSBwcmVzdGFyIHNlcnZpY2lvcyBsYSBtaXRhZCBkZSBsb3MgZMOtYXMgbGFib3JhYmxlcyBkZWwgYcOxbywgbGEgbGV5IGluZGljYSBxdWUgZ296YXLDoW4gZGUgdW4gZMOtYSBkZSB2YWNhY2lvbmVzIHBvciBjYWRhIHZlaW50ZSBkw61hcyBkZSBwcmVzdGFjacOzbiBlZmVjdGl2YS4NCkVuIGVzdGUgc2VudGlkbywgc2UgY29uc2lkZXJhbiBjb21vIGTDrWFzIHRyYWJhamFkb3MgYXF1ZWxsb3MgZW4gcXVlIGVsIGRlcGVuZGllbnRlIG5vIHByZXN0ZSBzZXJ2aWNpb3MgcG9yIGdvemFyIGRlIHVuYSBsaWNlbmNpYSBjb252ZW5jaW9uYWwgbyBsZWdhbCwgbyBwb3IgZXN0YXIgZW5mZXJtbyBvIGFjY2lkZW50YWRvLCBvIHBvciBvdHJhcyBjYXVzYXMgbm8gaW1wdXRhYmxlcyBhbCBtaXNtby4NClNlIGRlYmVyw6EgZGV0ZXJtaW5hciBsb3MgZMOtYXMgaMOhYmlsZXMgZGUgYWN1ZXJkbyBjb24gZWwgcsOpZ2ltZW4gcHJvcGlvIGRlIHRyYWJham8gKHNpIHNlIGxhYm9yYSBvIG5vIGVsIHPDoWJhZG87IHNpIHNlIHJlYWxpemEgYWN0aXZpZGFkIG8gbm8gbG9zIGTDrWFzIG9wdGF0aXZvcywgZXRjLikNCg0KQ29uc2lkZXJhY2lvbmVzIGdlbmVyYWxlczoNCg0K4pe777iPIExhcyB2YWNhY2lvbmVzIHNlIGRlYmVuIG5vdGlmaWNhciBwb3IgZXNjcml0byBjb24gNDUgZMOtYXMgZGUgYW50aWNpcGFjacOzbi4NCg0K4pe777iPIExvcyBkaWFzIHNvbiBjb3JyaWRvcywgc2Fsdm8gbG8gaW5kaXF1ZSBlbCBjb252ZW5pby4NCg0K4pe777iPIExhcyB2YWNhY2lvbmVzIGNvbWllbnphbiB1biBMdW5lcywgc2Fsdm8gcXVlIGxhIHBlcnNvbmEgcHJlc3RlIHNlcnZpY2lvcyBlbiBkw61hcyBpbmFiaWxlcywgZW4gZXNlIGNhc28gY29taWVuemFuIGx1ZWdvIGRlbCBkZXNjYW5zbyBzZW1hbmFsLg0KDQril7vvuI8gTGFzIHZhY2FjaW9uZXMgc2UgY29uY2VkZW4gZW50cmUgZWwgMcK6IGRlIG9jdHVicmUgeSBlbCAzMCBkZSBhYnJpbCBkZWwgYcOxbyBzaWd1aWVudGUuDQoNCuKXu++4jyBBIHVuIHBlcsOtb2RvIGRlIHZhY2FjaW9uZXMgcHVlZGUgc3Vtw6Fyc2VsZSBsYSB0ZXJjZXJhIHBhcnRlIGRlbCBwZXLDrW9kbyBkZSB2YWNhY2lvbmVzIGlubWVkaWF0YW1lbnRlIGFudGVyaW9yIHF1ZSBubyBzZSBodWJpZXJlIGdvemFkby4NCg0K4pe777iPIFBhcmEgZWwgcGFnbyBzZSB0aWVuZW4gZW4gY3VlbnRhIGxvcyBjb25jZXB0b3MgZmlqb3MgeSB1biBwcm9tZWRpbyBkZSBsb3MgY29uY2VwdG9zIHZhcmlhYmxlcy4NCkVsIHZhbG9yIGRlbCBkw61hIGVzIGNvbiBkaXZpc29yIDI1Lg0KDQoNCioqRW5mZXJtZWRhZCB5IEFjY2lkZW50ZSBJbmN1bHBhYmxlKioNCg0KTGFzIGVuZmVybWVkYWRlcyBpbmN1bHBhYmxlcyBzb24gbGFzIGNvbnRpbmdlbmNpYXMgcXVlIHN1ZnJlIGVsIHRyYWJhamFkb3IgeSBxdWUgbm8gdGllbmVuIG9yaWdlbiBlbiBlbCB0cmFiYWpvLihFamVtcGxvOiBncmlwZSkuDQpFc3RhbiBjdWJpZXJ0b3MgcG9yIGxhIG9icmEgc29jaWFsIGRlbCB0cmFiYWphZG9yLg0KDQpEaWNoYXMgY29udGluZ2VuY2lhcyBpbXBvc2liaWxpdGFuIGFsIGVtcGxlYWRvIGEgcHJlc3RhciB0ZWFyZWFzLCBnZW5lcmFuZG8gZWwgZGVyZWNobyBhIGdvemFyIGRlIHVuYSBsaWNlbmNpYSBwYWdhIHBvciBjYWRhIGVuZmVybWVkYWQgbyBhY2NpZGVudGUgaW5jdWxwYWJsZSBwb3IgdW4gcGVyaW9kbyB2YXJpYWJsZSwgc2Vnw7puIGxhIGFudGlndWVkYWQgeSBjYXJnYXMgZGUgZmFtaWxpYSBkZWwgY29sYWJvcmFkb3IuDQoNCmBgYHtyfQ0KDQoNCkluY3VscGFibGUlPiUgDQogIGthYmxlKCJodG1sIiwgZXNjYXBlPUYpICU+JQ0KICAgIGthYmxlX3N0eWxpbmcoZnVsbF93aWR0aCA9IFRSVUUsIGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsImhvdmVyIiwiY29uZGVuc2VkIiApKSAlPiUgDQpyb3dfc3BlYygwLCBib2xkPVQsIGNvbG9yPSJ3aGl0ZSIsIGJhY2tncm91bmQgPSBhenVsKQ0KDQoNCg0KYGBgDQoNCioqUmVzZXJ2YSBkZSBQdWVzdG8qKg0KDQpWZW5jaWRvIGVsIHBsYXpvIHF1ZSBsZSBjb3JyZXNwb25kYSBkZSBnb2NlIHBvciBlbmZlcm1lZGFkLCB5IHNpIGVsIGVtcGxlYWRvIG5vIHNlIGVuY3VlbnRyYSBlbiBjb25kaWNpb25lcyBkZSByZWludGVncmFzZSwgaW5ncmVzYSBlbiBsbyBxdWUgc2UgZGVub21pbmEgcGVyaW9kbyBkZSByZXNlcnZhIG8gY29uc2VydmFjacOzbiBkZSBwdWVzdG8uDQpFbCBwbGF6byBtw6F4aW1vIGRlIGR1cmFjacOzbiBlcyBkZSAxIGHDsW8geSBlcyBzaW4gZ29jZSBkZSBoYWJlcmVzLg0KRWwgaW5ncmVzbyBhIGVzdGUgcGVyaW9kbyBkZWJlIG5vdGlmaWNhcnNlIGRlIG1hbmVyYSBmZWhhY2llbnRlIGFsIHRyYWJhamFkb3IgKHBvciBjYXJ0YSBkb2N1bWVudG8pLg0KDQpVbmEgdmV6IHF1ZSB0cmFuc2N1cnJhIGVsIGHDsW8sIHkgZW4gZWwgY2FzbyBxdWUgZWwgZW1wbGVhZG8gbm8gc2UgcmVpbnRlZ3JhcmEgYSB0cmFiYWphciwgcG9yIGNvbnRpbnVhciBzdSBlbmZlcm1lZGFkLCBsYSByZWxhY2nDs24gc2UgbWFudGllbmUgdmlnZW50ZSBzYWx2byBxdWUgYWxndW5hIGRlIGxhcyBwYXJ0ZXMgY29tdW5pY2FyYSBhIGxhIG90cmEsIHN1IGludGVuY2nDs24gZGUgZmluYWxpemFyIGxhIHJlbGFjacOzbiBsYWJvcmFsLCBleGltaWVuZG8gZWwgcGFnbyBkZSBpbmRlbW5pemFjacOzbi4NCkVzdGEgbm90aWZpY2FjacOzbiBkZWJlIHNlciB0YW1iacOpbiBkZSBtYW5lcmEgZmVoYWNpZW50ZS4NCg0KKipFbmZlcm1lZGFkIHkgQWNjaWRlbnRlIExhYm9yYWwqKg0KDQpTZSBjb25zaWRlcmEgYWNjaWRlbnRlIGEgdG9kbyBhY29udGVjaW1pZW50byBvY3VycmlkbyBwb3IgZWwgaGVjaG8gbyBlbiBvY2FzacOzbiBkZWwgdHJhYmFqbywgbyBlbiBlbCB0cmF5ZWN0byBlbnRyZSBlbCBkb21pY2lsaW8gZGVsIHRyYWJhamFkb3IgeSBlbCBsdWdhciBkZSB0cmFiYWpvLCBzaWVtcHJlIHkgY3VhbmRvIGVsIGRhbW5pZmljYWRvIG5vIGh1YmllcmUgaW50ZXJydW1waWRvIG8gYWx0ZXJhZG8gZGljaG8gdHJheWVjdG8gcG9yIGNhdXNhcyBhamVuYXMgYWwgdHJhYmFqby4NCg0KRWwgdHJhYmFqYWRvciBwb2Ryw6EgZGVjbGFyYXIgcG9yIGVzY3JpdG8gYW50ZSBlbCBlbXBsZWFkb3IsIHkgw6lzdGUgZGVudHJvIGRlIGxhcyA3MiBob3JhcyBhbnRlIGVsIGFzZWd1cmFkb3IsIHF1ZSBlbCAiaXRpbmVyZSIgc2UgbW9kaWZpY2EgcG9yIHJhem9uZXMgZGUgZXN0dWRpbywgY29uY3VycmVuY2lhIGEgb3RybyBlbXBsZW8gbyBhdGVuY2nDs24gZGUgZmFtaWxpYXIgZGlyZWN0byBlbmZlcm1vIHkgbm8gY29udml2aWVudGUsIGRlYmllbmRvIHByZXNlbnRhciBlbCBwZXJ0aW5lbnRlIGNlcnRpZmljYWRvIGEgcmVxdWVyaW1pZW50byBkZWwgZW1wbGVhZG9yIGRlbnRybyBkZSBsb3MgMyBkw61hcyBow6FiaWxlcyBkZSByZXF1ZXJpZG8uDQoNClNlIGNvbnNpZGVyYW4gZW5mZXJtZWRhZGVzIHByb2Zlc2lvbmFsZXMgYXF1ZWxsYXMgcXVlIGVzdMOhbiBpbmNsdWlkYXMgZW4gZWwgbGlzdGFkbyBkZSBlbmZlcm1lZGFkZXMgcHJvZmVzaW9uYWxlcy4NCg0KRW4gY2FzbyBkZSBlbmZlcm1lZGFkIG8gYWNjaWRlbnRlIGxhYm9yYWwgc2UgcmVhbGl6YSBsYSBkZW51bmNpYSBkZWwgc2luaWVzdHJvIGFudGUgbGEgQVJULCBxdWllbiBldmFsdWFyYSBlbCBtaXNtbyB5IHBvZHJhIHNvbGljaXRhciBkb2N1bWVudGFjaW9uIG8gaW5mb3JtYWNpw7NuIGFkaWNpb25hbC4NCkVsIGVtcGxlYWRvciBhYm9uYXJhIGxvcyBwcmltZXJvcyAxMCBkaWFzIGRlbCBhY2NpZGVudGUsIGxvcyBkaWFzIHBvc3RlcmlvcmVzIHNlIGhhY2UgY2FyZ28gbGEgQVJULg0KTG9zIHNhbGFyaW9zIHBvciBsb3MgZGlhcyBkZSBhY2NpZGVudGUsIGxvcyBhYm9uYSBsYSBlbXByZXNhLCB5IGx1ZWdvIGxhIGVtcHJlc2EgcmVhbGl6YSBsYXMgZ2VzdGlvbmVzIGNvbiBsYSBBUlQgcGFyYSBzb2xpY2l0YXIgZWwgcmVjdXBlcm8gZGUgbG9zIG1pc21vcy4NCg0KUGFyYSBtYXlvciBpbmZvcm1hY2lvbiBzb2JyZSBsb3Mgcmllc2dvcyBkZSB0cmFiYWpvLCBwb2RlcyBjb25zdWx0YXIgZW4gZWwgc2lndWllbnRlIGVubGFjZTogDQoNCltTdXBlcmludGVuY2lhIGRlIFJpZXNnb3MgZGUgVHJhYmFqb10oaHR0cHM6Ly93d3cuYXJnZW50aW5hLmdvYi5hci9zcnQpLg0KDQoqKkxpY2VuY2lhcyBFc3BlY2lhbGVzKioNCg0KTGFzIGxpY2VuY2lhcyBnZW5lcmFsZXMgZXN0YWJsZWNpZGFzIGVuIGxhIExDVCBzb24gbGFzIHNpZ3VpZW50ZXM6DQoNCmBgYHtyfQ0KDQpMaWNlbmNpYXMlPiUgDQogIGthYmxlKCJodG1sIiwgZXNjYXBlPUYpICU+JQ0KICAgIGthYmxlX3N0eWxpbmcoZnVsbF93aWR0aCA9IFRSVUUsIGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsImhvdmVyIiwiY29uZGVuc2VkIiApKSAlPiUgDQpyb3dfc3BlYygwLCBib2xkPVQsIGNvbG9yPSJ3aGl0ZSIsIGJhY2tncm91bmQgPSBhenVsKQ0KDQpgYGANCg0KQ2FkYSBsaWNlbmNpYSBzZSBkZWJlcsOhIGp1c3RpZmljYXIgY29uIGxhIGFjcmVkaXRhY2nDs24gY29ycmVzcG9uZGllbnRlDQoNCiMjIyBFbWJhcmdvcw0KDQpMb3MgZW1iYXJnb3Mgc29uIGRpc3Bvc2ljaW9uZXMgb2ZpY2lhbGVzLCBkZXRlcm1pbmFkYXMgcG9yIGp1ZWNlcyB5IHNvbiBpbmZvcm1hZG9zIGEgbGFzIGVtcHJlc2FzIHBvciBvZmljaW9zLg0KQ3VhbmRvIGxhIGVtcHJlc2EgZXMgbm90aWZpY2FkYSBlbiBmb3JtYSBmZWhhY2llbnRlIGRlbCBtaXNtbywgZXN0YSBvYmxpZ2FkYSBhIGFwbGljYXIgbGEgbm90aWZpY2FjaW9uIGNvcnJlc3BvbmRpZW50ZSwgc2VhIHVuYSByZXRlbmNpw7NuIG8gdW4gY2VzZSBkZSBsYSBtaXNtYS4NCkN1YW5kbyBzZSBmaW5hbGl6YSBlbCBlbWJhcmdvLCBzZSBwdWVkZSBzb2xpY2l0YXIgdW4gbGlicmUgZGUgZGV1ZGEgZW4gZWwganV6Z2FkbyBjb3JyZXNwb25kaWVudGUuDQoNClBhcmEgbWF5b3IgaW5mb3JtYWNpb24gc29icmUgZW1iYXJnb3MsIHNlIHB1ZWRlIGNvbnN1bHRhciBsYSBub3JtYXRpdmEgYXBsaWNhYmxlIGVuIGVsIHNpZ3VpZW50ZSBlbmxhY2UgW0VtYmFyZ29zXShodHRwOi8vc2VydmljaW9zLmluZm9sZWcuZ29iLmFyL2luZm9sZWdJbnRlcm5ldC9hbmV4b3MvNzUwMDAtNzk5OTkvNzcyNTUvbm9ybWEuaHRtKS4NCg0KSGF5IGRvcyB0aXBvIGRlIEVtYmFyZ29zOg0KDQoqKjEtIEVtYmFyZ28gZGUgQWxpbWVudG8qKg0KDQpTb24gZW1iYXJnb3MgcG9yIGRldWRhIGRlIGFsaW1lbnRvLg0KRWwgbGltaXRlIGxvIGRldGVybWluYW4gbG9zIGp1ZWNlcy4NCkxhIGRldGVybWluYWNpb24gZGUgbG9zIGNvbmNlcHRvcyBhbGNhbnphZG9zLCBkZXBlbmRlIGRlIGNhZGEgb2ZpY2lvLg0KUHVlZGUgc2VyIHZhbG9yZXMgZmlqb3MgbyB2YXJpYWJsZXMuDQoNCioqMi0gRW1iYXJnbyBDb21lcmNpYWwqKg0KDQpMYSBub3JtYXRpdmEgZGUgZW1iYXJnb3MgZGlzcG9uZSwgcGFyYSBlbWJhcmdvcyBjb211bmVzIG8gY29tZXJjaWFsZXMsIHF1ZSBsYXMgcmVtdW5lcmFjaW9uZXMgbWVuc3VhbGVzIGJydXRhcyAoYW50ZXMgZGUgZGVzY3VlbnRvcyBkZSBsZXkpIGRldmVuZ2FkYXMgcG9yIGVsIHRyYWJhamFkb3IsIGFzw60gY29tbyBlbCBTQUMsIHNvbiBpbmVtYmFyZ2FibGVzIGhhc3RhIGxhIHN1bWEgZGVsIFNNVk0uDQoNCkxvIHF1ZSBleGNlZGEgZGVsIFNNVk0gcHVlZGUgc2VyIGVtYmFyZ2Fkbywgc2Vnw7puIGVsIHNpZ3VpZW50ZSBwcm9jZWRpbWllbnRvOg0KDQpQYXJhIHJlbXVuZXJhY2lvbmVzIGJydXRhcyBpbmZlcmlvcmVzIGEgRE9TICgyKSB2ZWNlcyBlbCBTTVZNLCBoYXN0YSBlbCAxMCUgZGUgbG8gcXVlIGV4Y2VkYSBkZWwgU01WTS4NCg0KUGFyYSBlbCBjYXNvIGRlIHJldHJpYnVjaW9uZXMgYnJ1dGFzIHN1cGVyaW9yZXMgYSBET1MgKDIpIHZlY2VzIGVsIFNNVk0sIGhhc3RhIGVsIDIwJSBkZSBsbyBxdWUgc3VwZXJlIGVsIFNNVk0uDQoNCkEgc3UgdmV6LCBlbiBsb3MgbWVzZXMgZG9uZGUgc2UgYWJvbmUgZWwgYWd1aW5hbGRvLCBzZSBkZWJlcsOhIGNvbXB1dGFyIHVuIDUwJSBkZWwgU01WTSBwYXJhIGNvbXBhcmFyIGNvbiBlc2UgU0FDLCBhIGVmZWN0b3MgZGUgZGV0ZXJtaW5hciBsb3MgcG9yY2VudGFqZXMgYW50ZXMgYWx1ZGlkb3MuDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQojIyMgU2VndXJpZGFkIFNvY2lhbA0KDQoqKkZvcm11bGFyaW8gOTMxKioNCg0KRWwgZm9ybXVsYXJpbyA5MzEgc2UgdHJhdGEgZGUgdW5hIGRlY2xhcmFjacOzbiBqdXJhZGEgcXVlIGVzcGVjaWZpY2EgbG9zIGFwb3J0ZXMgeSBjb250cmlidWNpb25lcyBhIGxhIHNlZ3VyaWRhZCBzb2NpYWwuDQoNCkxhIGRlY2xhcmFjacOzbiBlcyBwb3IgY2FkYSBjb2xhYm9yYWRvciBxdWUgc2UgaGF5YSBkYWRvIGRlIGFsdGEgZW4gZWwgcGVyaW9kbyBhIHByZXNlbnRhci4NCg0KTG9zIGRhdG9zIHF1ZSBzZSBkZWNsYXJhbiwgc29uIGxvcyBxdWUgZmlndXJhbiBlbiBlbCBsZWdham8gZGVsIGVtcGxlYWRvLCBhc2kgY29tbyBsYSBsaXF1aWRhY2lvbiBkZSBzdWVsZG9zIGRlbCBwZXLDrW9kby4NCg0KIVtdKDkzMS5KUEcpDQoNCkVsIHZlbmNpbWllbnRvIGRlbCBGIDkzMSwgZGVwZW5kZSBkZSBsYSB0ZXJtaW5hY2nDs24gZGVsIENVSVQgZGUgbGEgZW1wcmVzYS4NCg0KTGFzIGZlY2hhcyBkZSB2ZW5jaW1pZW50bywgc2UgZGVjbGFyYW4gZW4gbGEgc2lndWllbnRlIHBhZ2luYSBbVmVuY2ltaWVudG9zXShodHRwczovL3NldGkuYWZpcC5nb2IuYXIvYXYvc2VsZWNjaW9uVmVuY2ltaWVudG9zLmRvKQ0KDQohW10odnRvcy5KUEcpDQoNCioqT2JyYSBTb2NpYWwqKg0KDQotR2VuZXJhbDogVG9kb3MgbG9zIGVtcGxlYWRvcyBhY2NlZGVuIGEgbGEgb2JyYSBzb2NpYWwgc2luZGljYWwgZGUgbGEgYWN0aXZpZGFkLg0KDQpPdG9yZ2FyIGxhIG9icmEgc29jaWFsLCBlcyByZXNwb25zYWJpbGlkYWQgZGUgbGEgZW1wcmVzYSwgcGVybyBkYXJzZSBkZSBhbHRhIGVuIGxhIG1pc21hLCBlcyB1biB0cmFtaXRlIHBlcnNvbmFsLg0KDQotUHJlcGFnYTogTGEgZW1wcmVzYSBwdWVkZSBvdG9yZ2FyIGNvbW8gYmVuZWZpY2lvIHVuYSBwcmVwYWdhLCBwYXJhIGVsbG8gZGVzcmVndWxhIGxvcyBhcG9ydGVzIG1lZGlhbnRlIHVuYSBvYnJhIHNvY2lhbCBKZXLDoXJxdWljYS4NCkxhIGRpZmVyZW5jaWEgcXVlIHNlIGdlbmVyYSBwb3IgZWwgb3RvcmdhbWllbnRvIGRlbCBiZW5lZmljaW8sIGVzIHVuIGNvc3RvIGRlIGxhIGVtcHJlc2EuDQoNCi1DYW1iaW8gZGUgT2JyYSBzb2NpYWw6IExvcyBlbXBsZWFkb3MgdGllbmVuIGRlcmVjaG8gYSBjYW1iaWFyIGRlIG9icmEgc29jaWFsLCB1bmEgdmV6IHBvciBhw7FvLg0KRXMgdW4gdHJhbWl0ZSBwZXJzb25hbC4NCmVuIGNhc28gZGUgcmVhbGl6YXJsbywgdGllbmVuIHF1ZSBwcmVzZW50YXIgZWwgZm9ybXVsYXJpbyBkZSBjYW1iaW8gZGUgb2JyYSBzb2NpYWwsIGEgZmluIGRlIGFjdHVhbGl6YXIgc3UgbGVnYWpvIGVuIGVsIHNpc3RlbWEgeSBkZWNsYXJhcmxvIGNvcnJlY3RhbWVudGUgYW50ZSBBRklQLg0KDQotTGFzIG9icmFzIHNvY2lhbGVzLCBzZSBjYXJnYW4gZW4gZWwgbGVnYWpvIGRlbCBlbXBsZWFkbywgbGEgbWlzbWEgZXMgZGVjbGFyYWRhIGVuIGVsIEZvcm11bGFyaW8gOTMxLg0KDQotQ29uc3VsdGEgZGUgb2JyYSBzb2NpYWw6IFNlIHB1ZWRlIGNvbnN1bHRhciBsYSBvYnJhIHNvY2lhbCB2aWdlbnRlIGRlbCBlbXBsZWFkbywgZW4gZWwgc2lndWllbnRlIGVubGFjZSBbUGFkcm9uIGRlIE9icmFzIHNvY2lhbGVzXShodHRwczovL3d3dy5zc3NhbHVkLmdvYi5hci9pbmRleC5waHA/cGFnZT1idXM2NTAmdXNlcj1HUkFMKS4NCg0KIVtdKE9TLkpQRykNCg0KKipBc2lnbmFjaW9uZXMgRmFtaWxpYXJlcyoqDQoNCkxhcyBhc2lnbmFjaW9uZXMgZmFtaWxpYXJlcywgbGFzIGFib25hIEFOU0VTLCBzZSBwdWVkZW4gY29uc3VsdGFyIGxhcyBtaXNtYXMgZW4gZWwgc2lndWllbnRlIGVubGFjZSBbQW5zZXNdKGh0dHBzOi8vd3d3LmFuc2VzLmdvYi5hci9hc2lnbmFjaW9uZXMtZmFtaWxpYXJlcykuDQoNCipNb250b3MgZGUgbGFzIGFzaWduYWNpb25lcyBmYW1pbGlhcmVzKg0KDQpMb3MgdmFsb3JlcyBkZSBsYXMgYXNpZ25hY2lvbmVzIHNlIHZhbiBhY3R1YWxpemFuZG8gZW4gZGlmZXJlbnRlcyBtb21lbnRvcyBkZWwgYcOxby4NCg0KUGFyYSBhY2NlZGVyIGFsIGNvYnJvIGRlIGxhcyBtaXNtYXMsIHZhIGEgZGVwZW5kZSBkZWwgaW5ncmVzbyBkZWwgZ3J1cG8gZmFtaWxpYXIgKElHRikuDQoNCkVuIGVsIGNhc28gcXVlIGVsIGVtcGxlYWRvIHN1cGVyZSBlbCBtb250byBpbmRpdmlkdWFsIGRlbCBJR0YsIHNlIGV4Y2x1eWUgZWwgY29icm8gZGUgbGFzIG1pc21hcy4NCg0KTGFzIHJlbXVlbmVyYWNpb25lcyBxdWUgY29uc2lkZXJhIEFuc2VzIHBhcmEgZWwgcGFnbyBkZSBsYXMgYXNpZ25hY2lvbmVzIGZhbWlsaWFyZXMgc29uIGxhcyBzaWd1aWVudGVzOg0KDQril7zvuI/vuI8gTGFzIHJlbXVuZXJhY2lvbmVzIGJydXRhcyB5IHN1bWFzIG5vIHJlbXVuZXJhdGl2YXMgZGVjbGFkYXMgZW4gZWwgRm9ybXVsYXJpbyA5MzENCg0K4pe877iPIFNlIGV4Y2x1eWVuIGxhcyBob3JhcyBleHRyYXMsIGVsIHBsdXMgcG9yIHpvbmEgZGVzZmF2b3JhYmxlIHkgZWwgYWd1aW5hbGRvDQoNCioqUmVsYWNpb25lcyBMYWJvcmFsZXMqKg0KDQpFbiBlbCBjYXNvIGRlIHJlYWxpemFyIHVuIGFsdGEsIGJhamEgbyBtb2RpZmljYWNpw7NuIGRlIHVuIGVtcGxlYWRvLCBsYSBtaXNtYSBkZWJlIHNlciByZWZsZWphZGEgZW4gQUZJUC4NCkVsIHByb2NlZGltaWVudG8gc2UgcHVlZGUgY29uc3VsdGFyIGVuIGxhIHNpZ3VpZW50ZSBww6FnaW5hIFtBQk1dKGh0dHBzOi8vc2VydmljaW9zd2ViLmFmaXAuZ29iLmFyL2dlbmVyaWNvcy9ndWlhRGVUcmFtaXRlcy9WZXJHdWlhLmFzcHg/dHI9NDcpDQoNCioqKsK/Q3XDoWwgZXMgZWwgcGxhem8gcGFyYSBkYXIgZGUgYWx0YSBhIHVuIHRyYWJhamFkb3I/KioqDQoNCkhhc3RhIGVsIGTDrWEgaW5tZWRpYXRvIGFudGVyaW9yLCBpbmNsdXNpdmUsIGFsIGRlIGNvbWllbnpvIGVmZWN0aXZvIGRlIGxhcyB0YXJlYXMuDQoNCioqKsK/Q3XDoWwgZXMgZWwgcGxhem8gcGFyYSBkYXIgZGUgYmFqYSBhIHVuIHRyYWJhamFkb3I/KioqDQoNCkRlYmUgcmVhbGl6YXJzZSBkZW50cm8gZGVsIHBsYXpvIGRlIDUgZMOtYXMgY29ycmlkb3MgY29udGFkb3MgYSBwYXJ0aXIgZGUgbGEgZmVjaGEgLS1pbmNsdXNpdmUtIGVuIHF1ZSBzZSBwcm9kdWpvIGxhIGV4dGluY2nDs24gZGVsIGNvbnRyYXRvIGRlIHRyYWJham8sIHBvciBjdWFscXVpZXIgY2F1c2EuDQoNCioqKsK/Q3XDoWwgZXMgZWwgcGxhem8gcGFyYSBsYSBtb2RpZmljYWNpw7NuIGRlIGRhdG9zPyoqKg0KDQpMb3MgZGF0b3MgZGVsIGVtcGxlYWRvciB5IGRlbCB0cmFiYWphZG9yIHF1ZSBubyBzZSBhY3R1YWxpY2VuIGF1dG9tw6F0aWNhbWVudGUgZW4gZWwgc2lzdGVtYSBtZWRpYW50ZSBsYSBpbmZvcm1hY2nDs24gc3VtaW5pc3RyYWRhIHBvciBvdHJhcyBiYXNlcyBkZSBkYXRvcywgZGViZW4gc2VyIG1vZGlmaWNhZG9zIGRlbnRybyBkZSBsb3MgNSBkw61hcyBow6FiaWxlcyBkZSBoYWJlciBvY3VycmlkbyBlbCBldmVudG8gcXVlIG9yaWdpbmEgZWwgY2FtYmlvLg0KDQoqKirCv0N1w6FsIGVzIGVsIHBsYXpvIHBhcmEgYW51bGFyIHVuIGFsdGE/KioqDQoNCkxhIGFudWxhY2nDs24gZGVsIGFsdGEgc2UgcmVhbGl6YSBjdWFuZG8gbm8gc2UgY29uY3JldGEgbGEgcmVsYWNpw7NuIGxhYm9yYWwuDQoNCkRpY2hhIGFudWxhY2nDs24gZGViZXLDoSBlZmVjdHVhcnNlIGhhc3RhIGxhcyAyNCBob3JhcywgaW5jbHVzaXZlLCBkZWwgZMOtYSBpbmZvcm1hZG8gY29tbyBkZSBpbmljaW8gZGUgbGEgcmVsYWNpw7NuIGxhYm9yYWwuDQoNCk5vIG9ic3RhbnRlLCBlbCBjaXRhZG8gcGxhem8gc2UgZXh0ZW5kZXLDoSBoYXN0YSBsYXMgMTIgaG9yYXMgZGVsIGTDrWEgc2lndWllbnRlLCBjdWFuZG8gbGEgam9ybmFkYSBsYWJvcmFsIGVzdMOpIHByZXZpc3RhIGluaWNpYXJzZSBkZXNkZSBsYXMgMTcgaG9yYXMgZW4gYWRlbGFudGUuDQoNCkFzaW1pc21vLCBsYSByZWxhY2nDs24gbGFib3JhbCBxdWUgc2UgaW5pY2llIHVuIGTDrWEgaW5ow6FiaWwgLCBwb2Ryw6Egc2VyIGFudWxhZGEgaGFzdGEgbGFzIDEyIGhvcmFzIGRlbCBwcmltZXIgZMOtYSBow6FiaWwgc2lndWllbnRlDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQoNCiMjIENvbnRhY3RvDQoNCltZYW5lbCBQYXVsZXR0ZV0oaHR0cHM6Ly95YW5lbHBhdWxldHRlLm5ldGxpZnkuYXBwLykNCg0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KKkVuIGNhc28gZGUgZW5jb250cmFyIG9ic2VydmFjaW9uZXMsIGluZm9ybWFjacOzbiBpbmNvbXBsZXRhIG8gcXVlIGRlc2VlbiBhbXBsaWFyIHF1ZWRhbiBhYmllcnRvcyBsb3MgY2FuYWxlcyBkZSBjb250YWN0byoNCg0KDQoNCg0K