Content-Type: multipart/related; start=; boundary=----------AwZAEu8L0Fx8UXBllPLKFH Content-Location: http://office.microsoft.com/es-hn/excel-help/tir-HP005209146.aspx Subject: =?utf-8?Q?TIR=20-=20Excel=20-=20Office.com?= MIME-Version: 1.0 ------------AwZAEu8L0Fx8UXBllPLKFH Content-Disposition: inline; filename=tir-HP005209146.htm Content-Type: text/html; charset=utf-8; name=tir-HP005209146.htm Content-ID: Content-Location: http://office.microsoft.com/es-hn/excel-help/tir-HP005209146.aspx Content-Transfer-Encoding: Quoted-Printable TIR - Excel - Office.com = = =
 
 

TIR

Corresponde a: Microsoft Office Excel 2003<= /p>

 

Devuelve la tasa interna de retorno de los flujos de caja representad= os por los n=C3=BAmeros del argumento valores. Estos flujos de caja no t= ienen por que ser constantes, como es el caso en una anualidad. Sin emba= rgo, los flujos de caja deben ocurrir en intervalos regulares, como mese= s o a=C3=B1os. La tasa interna de retorno equivale a la tasa de inter=C3= =A9s producida por un proyecto de inversi=C3=B3n con pagos (valores nega= tivos) e ingresos (valores positivos) que ocurren en per=C3=ADodos regul= ares.

Sintaxis

TIR(valores;estimar)

Valores   =C2=A0 es una mat= riz o una referencia a celdas que contienen los n=C3=BAmeros para los cu= ales desea calcular la tasa interna de retorno.

  • El argumento valores debe contener al menos un valor positivo y un= o negativo para calcular la tasa interna de retorno.
  • TIR interpreta el orden de los flujos de caja siguiendo el orden d= el argumento valores. Aseg=C3=BArese de introducir los valores de los pa= gos e ingresos en el orden correcto.
  • Si un argumento matricial o de referencia contiene texto, valores = l=C3=B3gicos o celdas vac=C3=ADas, esos valores se pasan por alto.

Estimar   =C2=A0 es un n=C3= =BAmero que el usuario estima que se aproximar=C3=A1 al resultado de TIR= .

  • Microsoft Excel utiliza una t=C3=A9cnica iterativa para el c=C3=A1= lculo de TIR. Comenzando con el argumento estimar, TIR reitera el c=C3=A1= lculo hasta que el resultado obtenido tenga una exactitud de 0,00001%. S= i TIR no llega a un resultado despu=C3=A9s de 20 intentos, devuelve el v= alor de error #=C2=A1NUM!
  • En la mayor=C3=ADa de los casos no necesita proporcionar el argume= nto estimar para el c=C3=A1lculo de TIR. Si se omite el argumento estima= r, se supondr=C3=A1 que es 0,1 (10%).
  • Si TIR devuelve el valor de error #=C2=A1NUM!, o si el valor no se= aproxima a su estimaci=C3=B3n, realice un nuevo intento con un valor di= ferente de estimar.

Observaciones

TIR est=C3=A1 =C3=ADntimamente relacionado a VNA, la funci=C3=B3n val= or neto actual. La tasa de retorno calculada por TIR es la tasa de inter= =C3=A9s correspondiente a un valor neto actual 0 (cero). La f=C3=B3rmula= siguiente demuestra la relaci=C3=B3n entre VNA y TIR:

VNA(TIR(B1:B6),B1:B6) es igual a 3,60E-08 [Dentro de la = exactitud del c=C3=A1lculo TIR, el valor 3,60E-08 es en efecto 0 (cero).= ]

Ejemplo

El ejemplo puede resultar m=C3=A1s f=C3=A1cil de entender si lo copia= en una hoja de c=C3=A1lculo en blanco.

3D"Mostrar"=C2=BFC=C3=B3mo?

  1. Cree un libro o una hoja de c=C3=A1lculo en blanco.
  2. Seleccione el ejemplo en el tema de Ayuda. No seleccione los enc= abezados de fila o de columna.=C2=A0

3D"Seleccionar

Seleccionar un ejemplo de la Ayuda
=
  1. Presione CTRL+C.
  2. En la hoja de c=C3=A1lculo, seleccione la celda A1 y presione CT= RL+V.
  3. Para alternar entre ver los resultados y ver las f=C3=B3rmulas q= ue devuelven los resultados, presione CTRL+` (acento grave) o, en el men= =C3=BA Herramientas, elija Auditor=C3= =ADa de f=C3=B3rmulas y, a continuaci=C3=B3n, haga clic en Modo de auditor=C3=ADa de f=C3=B3rmulas.
=C2=A0
1
2
3
4
5
6
7
=
A B
Datos Descripci=C3=B3n
-70.000 Costo inicial de un negocio
12.000 Ingresos netos del primer a=C3=B1o
15.000 Ingresos netos del segundo a=C3=B1o
18.000 Ingresos netos del tercer a=C3=B1o
21.000 Ingresos netos del cuarto a=C3=B1o
26.000 Ingresos netos del quinto a=C3=B1o
F=C3=B3rmula Descripci=C3=B3n (Resultado)
=3DTIR(A2:A6) Tasa interna de retorno de la inversi=C3=B3n despu=C3=A9= s de cuatro a=C3=B1os (-2%)
=3DTIR(A2:A7) Tasa interna de retorno despu=C3=A9s de cinco a=C3=B1os = (9%)
=3DTIR(A2:A4;-10%) Para calcular la tasa interna de retorno de la inversi=C3= =B3n despu=C3=A9s de dos a=C3=B1os, tendr=C3=A1 que incluir una estimaci= =C3=B3n (-44%)
 
 
 
<= div id=3D"cdmicrosoftfooterlink">=C2=A9 2011 Microsoft Corporation= . Reservados todos los derechos.3D"Microsoft"
= =
 
------------AwZAEu8L0Fx8UXBllPLKFH Content-Disposition: inline Content-Type: image/png Content-Location: http://officeimg.vo.msecnd.net/_layouts/images/general/ab_default_left_edge.png?b=5567.4000 Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAMAAAAYCAYAAAA/OUfnAAAACXBIWXMAAAsTAAAL EwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj33 3vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEs DIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIe EeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH /w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAn f+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJ V2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4 mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHg g/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl 7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/A V/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5 WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQ WHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAA RKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv 1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4 IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGy UT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPE bDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhM WE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPE NyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD 5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2h tlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0 dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHK CpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2ep O6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN 2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIp G6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3n U9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36 p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYP jGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLn m+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cR p7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0H DYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dn F2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofc n8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh 7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJ gUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5p DoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85 ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7 F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/R NtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9 MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo 1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5 sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWF fevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTP ZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJ zs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ +7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3v dy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtb Ylu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ7 52PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7 nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9 zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9D BY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfy l5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT 0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADq YAAAOpgAABdvkl/FRgAAAD5JREFUeNq80LENACAMA8EPRdbI/mN5kZgCIWABuj+5 c9hGkgHGjqpi7AAWALr74Fl+wfaXJTMXJAEQ91VzAPjHI2zaEURBAAAAAElFTkSu QmCC ------------AwZAEu8L0Fx8UXBllPLKFH Content-Disposition: inline Content-Type: image/png Content-Location: http://officeimg.vo.msecnd.net/_layouts/images/general/ab_default_middle_gradient.png?b=5567.4000 Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAACXBIWXMAAAsTAAAL EwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj33 3vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEs DIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIe EeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH /w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAn f+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJ V2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4 mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHg g/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl 7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/A V/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5 WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQ WHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAA RKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv 1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4 IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGy UT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPE bDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhM WE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPE NyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD 5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2h tlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0 dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHK CpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2ep O6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN 2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIp G6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3n U9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36 p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYP jGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLn m+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cR p7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0H DYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dn F2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofc n8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh 7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJ gUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5p DoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85 ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7 F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/R NtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9 MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo 1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5 sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWF fevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTP ZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJ zs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ +7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3v dy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtb Ylu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ7 52PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7 nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9 zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9D BY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfy l5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT 0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADq YAAAOpgAABdvkl/FRgAAACxJREFUeNqUzbERADAMg0DO+w9pLSJSZIGk4b6D3RXV acsAn1GfBHBHSTgDAKGlHVN1Nm0XAAAAAElFTkSuQmCC ------------AwZAEu8L0Fx8UXBllPLKFH Content-Disposition: inline Content-Type: image/png Content-Location: http://officeimg.vo.msecnd.net/_layouts/images/general/ab_default_right_edge.png?b=5567.4000 Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAMAAAAYCAYAAAA/OUfnAAAACXBIWXMAAAsTAAAL EwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj33 3vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEs DIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIe EeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH /w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAn f+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJ V2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4 mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHg g/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl 7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/A V/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5 WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQ WHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAA RKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv 1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4 IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGy UT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPE bDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhM WE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPE NyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD 5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2h tlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0 dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHK CpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2ep O6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN 2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIp G6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3n U9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36 p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYP jGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLn m+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cR p7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0H DYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dn F2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofc n8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh 7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJ gUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5p DoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85 ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7 F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/R NtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9 MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo 1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5 sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWF fevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTP ZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJ zs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ +7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3v dy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtb Ylu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ7 52PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7 nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9 zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9D BY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfy l5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT 0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADq YAAAOpgAABdvkl/FRgAAAEFJREFUeNq8kLERgDAMA98pvIb238pexKKAcLBAVOn1 naKqDCApwra7G4D1rDfMDDuLT46B7SMmM//mPWQXSXENADToH8zKWLRqAAAAAElF TkSuQmCC ------------AwZAEu8L0Fx8UXBllPLKFH Content-Disposition: inline Content-Type: image/png Content-Location: http://officeimg.vo.msecnd.net/_layouts/images/general/tab_area_background.png?b=5567.4000 Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAEAAAAeAQMAAADXW+aEAAAABlBMVEX19fXX19eP XD/HAAAAGElEQVR4XpXBMQEAAACCMKMbnYsAbOtuAAy8AoExV5QkAAAAAElFTkSu QmCC ------------AwZAEu8L0Fx8UXBllPLKFH Content-Disposition: inline Content-Type: image/png Content-Location: http://officeimg.vo.msecnd.net/_layouts/images/general/tab_right_ul.png?b=5567.4000 Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAlgAAAAeCAMAAADHJpC2AAAAAXNSR0IArs4c6QAA AARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAA OpgAABdwnLpRPAAAAwBQTFRFAAAA19fX4+Tk5OTk5eTl5eXm5ebl5ubm5ubn5+fo 5+jn5+jo6Ofn6Ofo6Ojo6ejp6enq6erp6urq6urr6+vs6+zr7Ovr7Ozs7O3t7u3u 7u7t7u7u7u7v7/Dw8O/v8O/w8PDv8PDw8PDx8vHy8vLx8vLy8vLz8/Tz8/T09PPz 9PTz9PT09fT19fX29fb19fb2////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAdrKBiwAAAQB0Uk5T//////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////AFP3 ByUAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My4zNqnn4iUAAAMYSURBVHhe 7VLtcptADHRqp45bFxq7TVrjFgPG+QBD3v/lXN0BZ4Q75maik9qZkwlI+bG7Wu1k Op1+6B7oyUeNbYDR0PC6IbXZQ0CaiBcCpG83E7jAzDzQUY8NXgeMhpaXntTQXWcQ kMbvRXtQ3gNMIViztm5ns49dD1+6ESHRwV5RaL0Hv7S+ySxeDE/JRArBmpu6Pbeq oxsREh3siMJum6uE7NLYCS9OyXIACNbd/E7XXP2gJx8RsDMWpN92DwlpZ5N5vBhc lokUghUsviyWwWIJv8+fltARjxfATliQflsGAWkDk22Vvuc8ElsGKlhdhWEQmiEI 6EaERAd7RaH1HuzS2AnVRQVIIVhheB/q+hrer9SXfETAzlh6+u33YJfGTnhxWY4D hCEEa7WGX/damU7/j2Js0M9IRLCt6r8qtBUuII3dC20Q9wFWKwjW+vt6/aCf9Tf1 UI8DYEcsSL/tHgLS0PocXjwML8tDCsF69OUdIHcAgvWjrceuab50I0Kigx1RaLXW PyztPz8ABCuKop8b9ZiiHTGwKxakvyUZ3UNOmvacxYtNJLDlJoJgbbdRBH9bU8Qj BnbFMtCvaMb3EJPWiGP0oqFiJIVg7ZLfSbxL4jiJfyVxQj5iYFcsSL/tHgLS+iaz eBHvBLaMdxCsJEnTtPtLEwejAjfAaGiI6UmtIdmlsRMqhwVIIVhpnmX7NNvn6T7L spR8xMCuWJB+2z0EpPVNZvFinwpsuU8hWIc8zw+HHD76TT4OgB2xYP2WewhIQ+uz eAFXFSBVwTL1dG5VRzciJDrYEYXdNlcJ2aWxE16ckuUAEKyX4rUoXoqieH2GF3Tk IwJ2xtLXb70HuzR2QnVaAVIIVlGWRVmoN3yahnTEwK5YBvrt9hCQ1jeZywvEw0QK wSrL8qgfU7QjBnbFMtCvaUb3kJOGDR9X+p7ziGwJwaqrY1XWVVkdQX1Vk48DYEcs WL/lHgLS0PosXtQCW5a1CpYv7wC5AxCsN1/eAXoHbiYnX94BBw74YDkw1UOeTj5Y PgVOHPDBcmKrB/XB8hlw4sAfxASkYZw4D+sAAAAASUVORK5CYII= ------------AwZAEu8L0Fx8UXBllPLKFH Content-Disposition: inline Content-Type: image/png Content-Location: http://officeimg.vo.msecnd.net/_layouts/images/general/tab_left_ul.png?b=5567.4000 Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAIAAAAeCAMAAAAxfD/2AAAAAXNSR0IArs4c6QAA AARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAA OpgAABdwnLpRPAAAAwBQTFRFAAAA19fX////AAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAFoGyxAAAAQB0Uk5T//////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////AFP3 ByUAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My4zNqnn4iUAAAATSURBVBhX Y2BkYqAW+v+fAQkBAFpkCkItgHHXAAAAAElFTkSuQmCC ------------AwZAEu8L0Fx8UXBllPLKFH Content-Disposition: inline Content-Type: image/png Content-Location: http://officeimg.vo.msecnd.net/_layouts/images/general/tab_selected_right.png?b=5567.4000 Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAlgAAAAeCAYAAADw+GCEAAAD2UlEQVR4Xu2dQU4b QRBFq20gWDHeIDhAjmgcDGQzx8mN4AogNgiJVeSfuNutjhOLRFOoVYv3InnKY97i q6qkjjGQ3t7eZG4AAAAAYDab2cPDg02UBZlUrttC1mrla35anqs+MXO7uGO9eBlx +2Ri1nAD9xCXvcRtTL/d3Q3bImUlWaPWjfZ1DZeL6/CCZcTtmIlZw1XQHuKyl7jH x8f2/Pxsk/q/oc1W0sYKarXMpPzQ6lzK3C7uWC9eRtxemZg13MA9xGUvcSvTu9vb wVK9mYsSICVr6PDJWTKXi+vIGiojbr9MzBpu4B7ispe4Jycn+R2s9Pr6Kvs3dafH gev34mfENWatg4sbuoe47CXufD5vH3I3tQ9z5dKs1bv7ttllUrvvdnEdXrCMuJ0y MWu4cXuIy17iNtLLy4ssJUuqd4qcLJV6W5UbZkpWkRXB6eImG+VZCpQRt9InE7OG a1F7iMte4i4Wi/wO1vT29mYoKaq0LdVq7Sqllqm9YD4XV5bGZQ2YEbdPJmYN1xS1 h7jsJe6nT6f5M1jTm5v1kBNJVSx2uxRZ7ele4XFxHV6sjLgdMzFruBa1h7jsJe7p 6e6AtV7fDKrGfurqvovLxXVkDZYRt1cmZg03bg9x2Uvc3w9Y62EvXdJe/S+cLq6N 8sJlxO2ViVnDjdxDXPYSdzablQPW9fX1cGhv9Z/b7HBxHV6wjLj9MjFruGF7iMte 4rYDVvr1IHMDAAAAAOfn5/mnCI8k7f0CrVbu14dfdbm4nqyBMuJ2zMSs4cbuIS57 iVv9p6cnHWr1O/fKY1WcLq6N8UJmxLUOmZg13Mg9xGUvcS8uLvI7WOnx8VHN+zNC QTVM2tWSVRwurseLlhG3WyZmDdfC9hCXvcS9vLwsv2h09XU1mFoIKRetrs1MpZK2 tapiHhd3vGeKlRE30ykTs4YbtYe47CXu/PO8/BTharUasiArYolQa5OlclXNvitU ovhcXJMja5SMuD0zMWu4gXuIy17izue7A9bV8mrY+5tIVax1qiFlhXpNufS5uLKR XryMuH0yMWu4mZg9xGUvcedn9YB1dTXY/yAbCa7fi58Rl1nr4OKG7yEue4l7dnaW D1hHJv3lpZahPTv8mROvizvWi5cRN3XLxKzhhuwhLnuJ25hsTOWflEVJtrFWS5ti qX2NrLzmdnEdXrCMuL0yMWu4gXuIy17iVqbL5XIoZZHSwfodXC6uObxgGXF7ZGLW cEP3EJe9xF0sFvlbhKYPAwAAAADu7++Vfnz/IvswAAAAAGAy2gQAAAAADlgAAAAA HLAAAAAAOGABAAAAwE/7+6S7GctUuAAAAABJRU5ErkJggg== ------------AwZAEu8L0Fx8UXBllPLKFH Content-Disposition: inline Content-Type: image/png Content-Location: http://officeimg.vo.msecnd.net/_layouts/images/general/tab_selected_left.png?b=5567.4000 Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAIAAAAeAgMAAAB7zCdXAAAACVBMVEXX19f////8 qCJufBD+AAAAG0lEQVR4XpXBSREAAACCQCPY/ySqLwMwm2rcAEaMBLELYh9PAAAA AElFTkSuQmCC ------------AwZAEu8L0Fx8UXBllPLKFH Content-Disposition: inline Content-Type: image/png Content-Location: http://officeimg.vo.msecnd.net/_layouts/images/general/sectab_bg_right.png?b=5567.4000 Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAkQAAAAaBAMAAACk1V7HAAAAIVBMVEUAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAADX19f19fX///8LhrH/AAAACHRSTlMTDwsIBgMCAYsw HBMAAABGSURBVHhe7dAxDQAgDAAw0IIWtEwTDpapJOFmDloJHadHzrXjU4QiRYoU KVKkSBGKFClSpEiRIkUoUqRIkSJFihRVj1d0Ae5ihr+njz+FAAAAAElFTkSuQmCC ------------AwZAEu8L0Fx8UXBllPLKFH Content-Disposition: inline Content-Type: image/png Content-Location: http://officeimg.vo.msecnd.net/_layouts/images/general/sectab_bg_left.png?b=5567.4000 Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAgAAAAaBAMAAAB4PwAoAAAAHlBMVEUAAAAAAAAA AAAAAAAAAAAAAAD////X19f////29vY/Q0BOAAAAB3RSTlMLAgMGCAEAb2haXAAA ACNJREFUeF69xDERAAAIAkC7WMQKRKAFtPccrMDyhR4fCsNnAbdHHprWDG0KAAAA AElFTkSuQmCC ------------AwZAEu8L0Fx8UXBllPLKFH Content-Disposition: inline Content-Type: image/png Content-Location: http://officeimg.vo.msecnd.net/_layouts/images/general/sectab_bg_right_last.png?b=5567.4000 Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAlgAAAAKCAYAAABovyAJAAAABGdBTUEAAK/INwWK 6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAACtSURBVHja 7NvBCYMwGIBRpQ7QW2dw/2GyTJM0QlKCtjQWj+9BTIi3//QhOIcQ8gQAwLB1Xe9l e5aVyop1T/V1nsvjYUwAAD/lbk91j11kxfZuqfUFAMB4ZKUutNr5vQQWAMD5wMq7 sIr9ncACADgfWJ8iq61pqcUFAMB4ZH0LrakFVjInAIDhuNqfD8G1/UV4MysAgL9D 63C3xdVsRgAA14WWr1cAABdH1kuAAQA3JEDl4DqMJgAAAABJRU5ErkJggg== ------------AwZAEu8L0Fx8UXBllPLKFH Content-Disposition: inline Content-Type: image/png Content-Location: http://officeimg.vo.msecnd.net/_layouts/images/general/sectab_bg_left_last.png?b=5567.4000 Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAYAAAAIBAMAAAAo6JMLAAAAGFBMVEUAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAABWNxwqAAAACHRSTlMBAAIEAwYFBzYu504AAAApSURB VHheDcNBEQAwCAPBmypILIRqqQUU4N9CeSxUozsoD51awSyBzQcw6gJrw0BftAAA AABJRU5ErkJggg== ------------AwZAEu8L0Fx8UXBllPLKFH Content-Disposition: inline Content-Type: image/png Content-Location: http://officeimg.vo.msecnd.net/_layouts/images/general/glass_top.png?b=5567.4000 Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAA94AAAAmCAQAAACYTYtJAAALUElEQVR4Xu3dP49b WRkG8PMcX3s8E0+SjSK0EmQFaUJAWpaIBRoWUQFFQCDoERQItqNDYju+ANtASUm5 gu2RoERCWgqkbVio6DaTxPHMeDz3RVe2c2wfkzf2c+99T27OGY2i8++1ZzSjn54z xw5k5LY1PPcomhsh+sRqvVK3e/os32dHwhgzGsaVOX2eX8Xv5pvQu/lVsseckKNC jDTUj2e73eN38qtDv40R/mcXMuLp1lfZ020BeQeoJr7rjUCuj/Fog8YU5kDbwy70 GqkfcZ5wvc9B0gHODcC25jvu83wTeDNj+kgH6DbvUfza53F9RfoJPDQYQK3XFzvQ 9ZXpJ24dBvuMTfBq1usC33zS5kmHjDLdlr18kG6dwBM9NIdlyjY5OE8/cedDcnu+ M98x3jzTJ0A0Bn1EXwF1np/V14LYR+KJholH4n8BB5JBGwZH5l0+OpdUEJfE/8ot DWHI1yeeMbvPCT2rz+sr9JF47BXh+YaM9kstJz5Gd58RBzO6o7U83SAwJZ4HCbdR HtdXOHTg4lojUKM+hvlK3bmoJkTeai5j88DSbNIQ83yHvhnfCs0c6Dc0vnW8Nbof ICblEZzzKtTKGrKvQ48dCAPBc2M10NaZAQ830M7FNSR9ca0wgNn68HzmUr6oJi1d VBMKcAJscp8QLDdTQ68pUU9by/dDK8OIuiYeuSbxvhuiZ+8Ib43uBwg4zMEOrSt0 6yt5dlFL5raCW4cXIJiun220eWheGCCdMuoz1+rBudRLOLdCVPANACd2aesIvpW5 LvMd2jVZ3XdDdL4hI53uB2szj328bOI1qnW6/Y50eyira4cctWDdXL2Bs4UbrdxA ByigQZBteGQONKixGBydk4zzo9LKzXIRW8CnjsCXStwEvMQ+HdxyR57LHfjWqQ7t Uo63rLu+NnZDnsU3ZKQllED3Q6ySOcby3x42KI9GnNsc8WQfeP7VQ4V1uqeu47EO M3w9HnUebiRxcQ0gyK4ba6SdtPkdPOMiKVxUExpwFmkey3iOryc7YF5370zhVOGZ 6l+GvjJyJJtjo8XIsaxWvi4a3zreWIU7sDjGEu8A9SliqFdHOMqP3E507wmyrwVh Hv96eQZ4qkHAbcs2aru2VqT5Wu/0SRfiaF12GRexIpy/F81zLrXRzuPLo6+zG/f2 53viCK5Df6eRQwmgLxE/lorvCPBye/aGjHS6HyLwNl7gPVmQvcrwGaqxQqX7yJEp fG+6PQm5TjKJNcEzu46HW4e6qOW+eZtoA6ZvkAoDks1e4y3SJOJN3DWfaRWkacCl pXX8nrjHg13uyTefticq1rNn8D2U1ZHDBeJzwq+sUH1dnsU3ZPT8dE98BfcEIWdf +PVN54hTd6FQrORyim4PgnUqj3uF5LrSfd+xFUKPh3uH2XbZxo40gwEVyG+PKkJV lB2rSrOEE0TTgIcZNtNeEBV2mSmJjM0RXVJ875atS9Gw1kEfykzmeC8RP5KRXMpV Ufhe4r09Fzzw63Q/Rg+rcJ+h+rzizlGRHVFNHKEzdPcUnpUeQbengR4o8DWR9PVH 0qvwUAOpHJsXewMLGEANCmG+CQe5XmfmUjk2F6FA3wtwvQqfhHW+p46FvayNb70n EcEE3+RR+UzF+0DmY8M54QvAD8oqgV8Vhe+At0b3GD1MsIR7fkB+uVg1RfUZ6A6j BUE3D3u8U6f2wCn8qzM88PwMn8b7BNwE67VBDrtra/wtcaSbtHWk7a+qSY1ga0Q3 AfiFI1J2yzMlkcU1es+jGYVZHmiS79n/XdGXzRUDqT7DyIEMZQn4QencSNb5LuWm bOJ9rNH9GM6Nce5X4f7Mtc++efhG77brFZ92XskG9eUOmF4YQo35CS3dTAZRgWUG CZGFJJFERy6q2T++vCBvCisNPyNp6RUEUuNXIGYXJvmvRPauVs4+cpezj8b/+OBv H54MIsD75RUJ+TviO8JboXsJ9zffOr7ffyOs7xrd+h57ujsGN0zRzlTzlHQfcekW 4PZ8R72O8q236Qcfv/+HvwxkIAHwZ/Ct472d7q/f/cTbxZ2wNtNtkOCN6LaHm66L znGdKRdlrAOA2/LNJ+bMt94uPvzP797/5xLwa+WhXMiRbPAd463RPcHUV3Af+m// /OC7zhnQnenuANy2bJtwnZt0kfDuAW7Pd+bbuSd/+v1vLy4rwOf5uyi38x3hHdNd 4R3ovj26907/HoEMMt0Gx+XdgJtH2x7s3MQK8a4Dbnx8nvmWuqpN//7er/89GZWb fFd4x3wX23CI6b51/OZv/C0jup0p3Tlz28NtzzZfPTe0ADlC9Wis7scRcm2Y4xqc ELWVVeoOMOzxtfQ9TPXdKvOPNbj3/Xff+8W/Hg1kVJ7DuaGflPOZ8MpvD7cN73BR LdDtXHVg/pVf+VskW/zuTLc93OmzjReK7Ay5NFhdmiM8VKTX8oCDrA0nBFcsirDl O8zxfPOt+NT9X777zpNL5+Z8j9wEge8TXJew1sfvqRba/Jqac996u3+PgCbTDaoW KLpBkwOlNlGFfFZQRuppePqRm+F31/5nhP8dsPktpb8KPYwgxSu8vCYW6h188Wc/ de6JH3vnzjHzbsF3aB/7TbwR5+4eznCGb3xh+J1MN9FAEQYGxi7CrbOdyc6M64R3 D3CyMtqIJJlvvY3u/+B156aYwrmHvuL7CcZ4hGruBKG2D1vWc/fyyPwcN3+c6Saa aea2gJth1Z7tdMjOjBsQTtfnAbfO3/YRJ/N9+0en/gJjP12cfU/wBGvZO+C9LXf3 Ftvuv1V8zpm0TDcDrD3cBmznnJ2zuDHh9oCTdTPfCbT+3Z98reJ7iuXRuXNx9vbb mZjgFPPcfe2HFrk7022RufXdZnDrbOecje0fOYvrhFsBrtQwyt+Zb/vs/cnvzTDD FPPs3UfI3qF2sd7fzN1ferW4Y0Y330DuQMpwE7sbrVsn2w1WTr/BqI68AN8Tqa2W xP2aagu5Dk4MXkCmrFHWh73Usw6VTG59g/0K+FqDO9949a//LTDFQM5xikKq7B1e Mla1YhsDvae5+7WvWtCt45Dp7gzcmW0kB2T6qCNlwnnA9QpkXeEBi9c3gB8Ivsl1 1ny//uU//3GevQdyhlcwcVc26vglAw8Q3lltssjdzg0/T4BjcGSe6Ta8ngaHpo7J u3NAzh5r52cePyPLnzm9ruUVNsvj8/T/x0VLz/R29e4MF1j+3fsU/acH5yeYX1kr 4kPzUx96/jWOr0y3Mdz2ids+byPn6pYyuhjncPsMbp/A9b388Xn30zf//OnWv3WJ GZybYjlSYP3g3MdH5s4tD82n6N3cAZ0O0J3pNknccRUQVY2zdqK5uvtfOer7qVnv p5DA7fJ3Tt82MaS4OUP1Mc/eZwuXQ4uSt19MV0sr8zF8Wei2Py5PC25iv3netoCj E8ldDN7LPM0cDi6D8wk8pfxtcHkt7H2B0zdXC0N4V16gkCkGUtF9KL21KkW8aYLV 7J7p7lzm1nfCBu702e74NTqorPOVxYhwvgKaA5y/K87UTPf4/GXmG8Ul5gfnVTvH UCqbRytVis3cPcayN8UFUkkvmW7jzJ0+3DAAzq6GPetikMdNCDcAnLgrrtfcsyIy 3+23As4tb5zPR8a4ErwOCx/7sOkM55hvNX+BWKYbu9JNVASxm/q7Ilst5ff66u7b ptT1fWnjuaZ2H4NYRTw+URH2ochADtMLuJeADyaHiH2CLRfWxmvlL5DGkfnLTHdr v76uPbgJeAm2GV442vJlNbvLhU39rLUHOM8NHwa6z3eqF9dihx/DYyN5YzEQ7rSV Pu2Xh6VPNw+hQeZuDW6e7bRyNoFXpylPK4tz1RsG3D5/6/vQUb5hIJuau2eYGz1F sDm0/wH8RymuQI9l2gAAAABJRU5ErkJggg== ------------AwZAEu8L0Fx8UXBllPLKFH Content-Disposition: inline Content-Type: image/png Content-Location: http://officeimg.vo.msecnd.net/_layouts/images/general/glass_middle.png?b=5567.4000 Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAA94AAAD6CAYAAABXuJ+WAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABgJJREFUeNrs10tqwlAUgGFPKir4wMfS ugnH7q3LEiSI6MB72gyEDottaqLfB0IwGs3JNfJHZi4G3xwOh6qu62i2j8djNI/9 fl/d9l0ulzifz2+n06na7XYfg/vFnfvaFP/8vkede/Rk7tGx6/yb40QP1nP0aA2/ 0v1l0PF5mhOPlE/6Wc/y3bPj88wHHSc7fq7Z8XWXPVnn2bPfdnbsOnfu/rLdbt9H o1GZTqfXyWRShsPh9Wu7zGazMh6Pc7ValeZ1m82meS7n83mWUnK5XOZ6vc7KfzYA AAC0R3gDAACA8AYAAADhDQAAAAhvAAAAEN4AAAAgvAEAAADhDQAAAMIbAAAAhDcA AAAgvAEAAEB4AwAAgPAGAAAAhDcAAAAIbwAAAHjB8I6I2hgAAACgpfA2AgAAABDe AAAAILwBAAAA4Q0AAADCGwAAAIQ3AAAAILwBAABAeAMAAIDwBgAAAIQ3AAAACG8A AAAQ3gAAAIDwBgAAAOENAAAAwhsAAAAQ3gAAACC8AQAAQHgDAAAAwhsAAACENwAA ACC8AQAAQHgDAACA8AYAAACENwAAAAhvAAAAEN4AAACA8AYAAADhDQAAAMIbAAAA EN4AAAAgvAEAAEB4AwAAAMIbAAAAhDcAAAAIbwAAAEB4AwAAgPAGAAAAhDcAAAAI bwAAABDeAAAAgPAGAAAA4Q0AAADCGwAAABDeAAAAILwBAABAeAMAAADCGwAAAIQ3 AAAACG8AAABAeAMAAIDwBgAAAOENAAAACG8AAAAQ3gAAAIDwBgAAAOENAAAAwhsA AAAQ3gAAACC8AQAAQHgDAAAAwhsAAACENwAAAAhvAAAAQHgDAACA8AYAAADhDQAA AAhvAAAAEN4AAAAgvAEAAADhDQAAAMIbAAAAEN4AAAAgvAEAAEB4AwAAAMIbAAAA hDcAAAAIbwAAAEB4AwAAgPAGAAAA4Q0AAAAIbwAAABDeAAAAILwBAAAA4Q0AAADC GwAAAIQ3AAAAILwBAABAeAMAAADCGwAAAIQ3AAAACG8AAABAeAMAAIDwBgAAAOEN AAAACG8AAAAQ3gAAACC8AQAAAOENAAAAwhsAAACENwAAACC8AQAAQHgDAACA8AYA AACENwAAAAhvAAAAQHgDAACA8AYAAADhDQAAAAhvAAAAEN4AAAAgvAEAAIAfhndm LowBAAAAWgpvIwAAAADhDQAAAMIbAAAAEN4AAAAgvAEAAEB4AwAAAMIbAAAAhDcA AAAIbwAAAEB4AwAAgPAGAAAA4Q0AAAAIbwAAABDeAAAAILwBAACAPwzviKiNAQAA AFoKbyMAAAAA4Q0AAADCGwAAABDeAAAAILwBAABAeAMAAADCGwAAAIQ3AAAACG8A AABAeAMAAIDwBgAAAOENAAAACG8AAAAQ3gAAACC8AQAAAOENAAAAwhsAAACENwAA ACC8AQAAQHgDAAAAwhsAAACENwAAAAhvAAAAQHgDAACA8AYAAADhDQAAAAhvAAAA EN4AAAAgvAEAAADhDQAAAMIbAAAAhDcAAAAgvAEAAEB4AwAAgPAGAAAAhDcAAAAI bwAAAEB4AwAAgPAGAAAA4Q0AAAAIbwAAABDeAAAAILwBAAAA4Q0AAADCGwAAAIQ3 AAAAILwBAABAeAMAAIDwBgAAAIQ3AAAACG8AAAAQ3gAAAIDwBgAAAOENAAAACG8A AAAQ3gAAACC8AQAAAOENAAAAwhsAAACENwAAACC8AQAAQHgDAACA8AYAAACENwAA AAhvAAAAEN4AAACA8AYAAADhDQAAAMIbAAAAEN4AAAAgvAEAAADhDQAAAMIbAAAA hDcAAAAgvAEAAEB4AwAAgPAGAAAAhDcAAAAIbwAAABDeAAAAgPAGAAAA4Q0AAADC GwAAABDeAAAAILwBAABAeAMAAADCGwAAAIQ3AAAAILwBAABAeAMAAIDwBgAAAIQ3 AAAACG8AAAAQ3gAAAIDwBgAAAOENAAAAwhsAAAAQ3gAAACC8AQAAQHgDAAAAwhsA AACENwAAAAhvAAAAQHgDAACA8AYAAABuPgUYAFp2TfNvsAiUAAAAAElFTkSuQmCC ------------AwZAEu8L0Fx8UXBllPLKFH Content-Disposition: inline Content-Type: image/png Content-Location: http://officeimg.vo.msecnd.net/_layouts/images/general/glass_bottom.png?b=5567.4000 Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAA94AAAAmCAQAAACYTYtJAAAL8klEQVR4Xu3dTYhk VxUH8P95Va9edVV3JqGDY7CVMaAgWWTrQoIbF+5cuBNEkODCjQhuRFGiiELEbHQT SVyqRIIgSnARQ6JgmIUSEg0hjosOyZgZcT66q+vrHnm8qjldVV05yZy+dXpu7h2m Cfe8e+9jismP/3136hF3AdCbBLxNwH/pjeKADulaMaSbxaB4/BmcdiO1P/56FH+N U12V/P88/D9/l88s3xPnewL73wc48voceSRv4s8jrc//s58rQ3dahW7YCu1pxXeH Hvd5L+wycJ6B9uwmCJtqDFL646/HACjyGjilVe2fj34XHJcOfS3pdwCA7kCUyIc/ f7Iz21Hg4Ajjot5tSnTrbchtrLZZ35RbMx52+IAS5du+mh1mBhnmjwiorJEu4Trj GbJMtoFtl7ydfubOdG8BmPu8gjcwTTt9A2RYzSl/R8aVFcDdCXeFgpBAy2A7sJ3h dtguT5nu7ppKWzrGXKbLN8Ab4RsZ8NMkXCoZ8gy22x2wz71kuDPd01AxdLyB8dlI 3/B++m1fxX6dP+A+hGuV9CHPYGe2/eHWx6a/Xe5Nd8GTUDYFHW9gxCCgx0c8pMZz lHH5TnH73J6//QGXXhcmSak4g2OnPHOd0c5w2zN3unTzZMQlpHW5xyfivcf7J1LA A5LxkTH13z7PgPtlcGVVBXFPjAyYZ6zd0E6A7SThztvlYu871/dWT6APuT87b97h ASZXyrvSfPpth9B/A13GppbBZVUj4v4sUKY6o22DO2fu9x/dwPhKwa3ZmuVs7T5D 2jLeu3yNhrdAaPN0v7wfSJPvnL+1Ob0yuLKyFXF/MChD7cbj2Wc7w53pBjDcB+YO LxoNABMGBG+c58t063A6D3lEwI2Xug8BSfIN7/x99gH3y+AK00r1DsaE0iY6o21H yR9u/8ydPt3A1VcAyd4VdxkCeDjhwBpwjm9QzTfQ4RH/7a+f+Srgz3f6+VvWdgDc kMEz4q5YkgPGGW0HIBzgdszcmW7g2Yvz3F1yh8VnYMTASXjLd6wFtIBfX/70P8pP ZL4dNtCtq/hncH/EpZ4+U7lxBGBcQMpwZ7oHr/7qrRa3eb5l3uTuHaFb8F5uPT6i I+7wAG8+9ZFvA858I4Htc8nVDoA7ZHAnxPV6bhltf7bPPtw5c/vRDfzraWDxuFqP geN0AwVOaH2upa84hDZ/74XRK/45ApzIaU8+nSv10dHun6OuZ7871upJpNXc9E9T 6vC/U4e/pW7/l8p023P31/7S4oKb7N3h5ol3n494zZe0yFm2GzQvh4DWa0888Kjv O8ekknL+NqzvlMH1fv8kntSWem5suSbnbft4/8ydPt3AxV/M4QZKnheO+AO8u5C8 Z6U9Bs6zvLmkV1uPkqfhsZdu/G6z+cmQvtPK3wBHWCuxDG5K2nwH5fGcsdmQxFPP 2wBvkG5Onm72o/vq7x95ucndzXG15tvVBrwz0+A+Bi7w2mfefT6gLh8xMOYBf+tn P/pw90Eg1deWyOxep7j1K+1rpf9WMEPSzq8icWh+h6V8OHBYMw7c8RH1p9utHfz9 y4/Pc3dN93zTfHvlntqC1vLGefMN5yWP+e3pE99/+LHyQ0Bqry3RZxfWM+AOhDsw 7gB5bm58+FOQ4c7b5dJGb/zgh4NJizthOXdv4x7e5QW8T8ZphwHJ3hN+4Xr19S98 0zF9++dvirdaAoDL7AbC/Rj3hTyD7U+2PwT+cGe6/VP3Tx69eLPFZQCO5e6abt5Z ua/Wd9toGl0nYBsHBPQQcJ3GVGJMQwKmBLw+fPZPD52rPo5NNlpfcVmZNroaIt0D Jfup2RtFvT43Nlyf2c5wJ033lT986cevH9Z0t7kKNd5dbmG7phwdfHCWu+9jALh7 4bQ572GfTs7eCIcFcH38lZ9+47kHHq4+llz69s/f2HACByjtN3Pb83h+q5gXMPqo zHYKcGe6pQ1ee/HJR15uh+N090KduxGA5dx9gSV5z9pi9mbcpBItTAiY0oQCEf/5 ym+eeXB/+972vZ5pSPoTyN8uCVzmyCk8csKmTLVhZGY7w538IbXBq/988os/f/4/ LZ7TDRSoeIsr7k63GNjle1Zy99Jp872wXyyfOe/NsjcwKIDJtNX6znOj5z9//lOf vOv+7gUU1Uc9D6855W8kkMBljvxebr3xbYPMSZLODjMk9UrRDPf7PXMPLzEfXrp+ 6Y8v/vJywW2u6e4EoE7dwFboh4o5bMk584XcvYI3MOE2NW8Xa5xvts6BIfUDMCbU fBcIT7/11G+nFAiofwYCwi0EyjUcWGpteu+jOvpcej9ahqu1/pZ9DpQ4qRXqHPr1 er+9otf0KlBCb6Rzqa9lH2G40003PmWOAhtGmO90bForsFIzVCz90/d0/VidQ++f sn2OieFqvX+EdW3MgDKXNspekzUDUHD9q40a7hpw+QditbdzuncWcrc04grS8G+q WZq/GvQqXaMbdECHdERHNKQRHRYTmlBF9c9p/YvmaE8JAAJpDHcIMCBtGGNlXafQ zr2Or53kElbY7RVD1cxeQbFZbiO3SXTiAxtgN6JtZ9sO9Ngwi45/FIql1060EWg7 6sDoNukuuB5bNKMX4AbkWXdN9xYL3YL3BRa8sY7vqwQs8z2m8S2+m6fh8hsIpFCr Al4a+DZUlP5KOoxQewCu9+rzlPAkXK/bGTfOqa+VbAtsT/ixyNbn8Wd7DJ0/fa74 cMcCHRgaQLdWxkpFg1sfuYp3PbrFDeM12QJ3ySUv0w3s8grdgrfON3BI/yuGBDSA twoAaACfCAWYkgBt4Ts+7W3yyN+VMoeBZMOmeKwMrtcsXJYGMq20EqWySW5nNv48 gU/rurGJ/cCWmh1c+8a6XG0negiPzD3heDzb6darLZZ6DXjDNjCHG5gfU3tnusFr 8F7Hd5O/G8CLQtAWwKXvjPMtI+yJOir3Hdjyuh12f8Lt9BZk4NQV4RKbaWMn9O2j Atuu8WfbDrQ9Q4/iUWxP6ELqHU43MA1SaNhegpsR1tEteIOXkrfO93HAgaIYETCW 7L3U+ojBd8fw9DtCzjZxb6c3bnKuFKziMu2/WU60yY3yvInO7LeBHp90fc5hlORu 599OsSGLR3pqPYpC94F2xpwX4S4ZaNhu4O4yBUClW/DW+G6OrgGLgAND6hJQAz7/ Ka1BfVvhW6/GP5euM21P1DH7iwib5doIHbcqGtJ0ajmbyJauM+iBN53KmU8LduZY qA+VUcpqBlgtud3ebwNaHxH7DLk9V99cWylZ6D7eM2cb6HLz7rAGbsg3ma+hW/BW +Jb8DcwBB2rAUdSIY22rbgtoHeltOBxfSwZkir5ZbmeaoiJuh1nGpP30m9lzNhmz KbSZraTH30BnTgB6hyNqGrHA2ED3UNnlOVqoC9rN7x4DA95moMncCt2Ct873KuBz wis6olu3TwrQpqr99HlfJd/+RLtwAzz+U22KTrgdcTuNBcXm15955rNNf2DrGna0 47PN0Z6I+8MdzE/FdYYPoIwxbIkbqgrd3aX/6s0qrbAAt0K34K3yvQg4cJzwSihX 0reVaPv2uZ1p/XqgBy+QLRzbMSZyyNkRGQeI0kjTLlTbR9vJds3izAbsDdR79x9i XZtGJV0qMQ6pWVK31IVraX0GygAI3ArdgrfON7AMeEN4gzhQ0YEhX0vdQLThLLmh Ys7TeqWnwmAH3IHpiIiDbLjar0+fdOaos9ivj4C2A+kR4GYNXPthOUO/paITPDHT baddwJZXgAFbAViFew3dOt4CeIOkAC6EC+KV1HCDDM+3I2RsK7p6Jf5Gdvxn111D 0jYgbah7Ma6Pyl+Pap/TTrYdbTvqdpyPEOFZudMXudor0h8/j9ufgwvdAvViO8fN HML2OriFbsG7A3q3fK8CLpALzgrBCsIWiO3kCnBe29LkMJOVaZBvzj51Eskd3ryN zoZVzmIWj57EdaA9ZtKpVyoG7A3gK1Uddh13ydmjFbgVugXvd5tP5I1jgrjOs06w zqleLZSaz5EtHcT4I2CH2s60jtomN8spCsj5paC8Yeh5cxvoMKCukG7A2T4bRxjh c1xPKnpNZ12vCuwG2oVuQVvYVj/b/wOMNYQipWOtUAAAAABJRU5ErkJggg== ------------AwZAEu8L0Fx8UXBllPLKFH Content-Disposition: inline Content-Type: image/png Content-Location: http://officeimg.vo.msecnd.net/_layouts/images/general/button_left_side.png?b=5567.4000 Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAMAAAAWCAMAAAAy7dalAAAAPFBMVEX////a2tra 2tr7+/v09fTz9PTy8/Ly8vHx8fHw8PDv7+/u7+/u7u7t7ez19fb////s7Ozr7Ovr 6uv39/dayKl3AAAAAnRSTlMAAHaTzTgAAAAzSURBVHheLcPHDYBAAANBY18ip/57 ZR9IM5KNUw7z8vgXVjZ2Ds5cuHLjzos3H0Z2NNkfOToBRzSucWwAAAAASUVORK5C YII= ------------AwZAEu8L0Fx8UXBllPLKFH Content-Disposition: inline Content-Type: image/png Content-Location: http://officeimg.vo.msecnd.net/_layouts/images/general/button_middle.png?b=5567.4000 Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAEAAAAWCAMAAAA2GAaYAAAAPFBMVEXa2trs7e33 +Pf////29vb39/f09PXz9PTy8/Lx8vLx8fHw8fDv7/Dv7+7t7e719fbs6+zr6+vq 6ur7+/sQCEuKAAAAJ0lEQVR4XgXAhRGAMAwAwE9VUNl/Vw5ZUhWXphumZbM7nEK4 PV4fPw15AMDp19rXAAAAAElFTkSuQmCC ------------AwZAEu8L0Fx8UXBllPLKFH Content-Disposition: inline Content-Type: image/png Content-Location: http://officeimg.vo.msecnd.net/_layouts/images/general/button_right_side.png?b=5567.4000 Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAMAAAAWCAMAAAAy7dalAAAAP1BMVEX////7+/va 2tr4+Pj////39/f29vb19fX09PT08/Ty8/Px8vHx8fHw8fDv7+/u7+/u7e7s7ezs 7Ozr7Ozr6+rGWbGzAAAAAXRSTlMAQObYZgAAADNJREFUeF4NzNcNwEAMQzHbl97b /rOGgKjPF1URnWtZ0TMwMjGzsLKxc3BycfPw8pGklv0sXwEYsM+xyAAAAABJRU5E rkJggg== ------------AwZAEu8L0Fx8UXBllPLKFH Content-Disposition: inline Content-Type: image/png Content-Location: http://officeimg.vo.msecnd.net/_layouts/images/general/vert_rule.png?b=5567.4000 Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAEAAABkCAYAAABHLFpgAAAAAXNSR0IArs4c6QAA AARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAA OpgAABdwnLpRPAAAABh0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjM2qefiJQAA AMJJREFUKFOlzFFHQwEAgNEbIyIiIsYYY0SMEREjYsSIGCMiIsaIHiIiIiJixIiI MWLEiIiIESM3IkbEGCNijGg5L/2BfQ/n8QvCMBwGI/Jr8IMB+vjGF3roooNPfKCN d7zhFS9o4RlNPOERD7jHHRq4RR03qKGKa1zhEhVcoIxznOEUJzjGEQ5xgH3sYRcl FLGDbWxhExsoII91rCGHVWSxgmVksIRFLCCNFOYxhyQSiCOGKGYxg2lMYRITGEcE Y8F/f9VCKa3X8jrJAAAAAElFTkSuQmCC ------------AwZAEu8L0Fx8UXBllPLKFH Content-Disposition: inline; filename=ont.css Content-Type: text/css; name=ont.css Content-Location: http://officeimg.vo.msecnd.net/_layouts/ont.css?b=5567%2E4000 Content-Transfer-Encoding: Quoted-Printable /* _lcid=3D"1033" _version=3D"14.0.5567" _LocalBinding */ /* Copyright (= c) Microsoft Corporation. All rights reserved. */ .cdclr{clear:both;heig= ht:0;visibility:hidden;line-height:0;}div#cdBotBod{clear:both;height:30p= x;}body,.cdLightBody{background-color:#fff !important;background:url('/_= layouts/images/general/background_image.jpg?b=3D5567.4000') no-repeat ce= nter 250px scroll;font-family:Segoe UI,Arial;font-size:62.5%;padding:0;c= olor:#666;margin:0;line-height:normal;}body.cdBlankBody{background-image= :none;}textarea,input{font-family:Segoe UI,Arial;font-size:1em;}.cdLight= Body{background-color:#fff;}script{height:0;width:0;margin:0;padding:0;}= a,a.cdchrm,a:visited,a.cdchrm:visited{text-decoration:none;color:#4685df= ;}a:hover,a.cdchrm:hover{text-decoration:underline;}img{border-width:0;}= hr{color:#ccc;background-color:#ccc;height:1px;border-bottom-width:0px;b= order-top-width:0px;margin-bottom:7px;}.OFLTDU{padding:0px 0px 1px 0px;}= .OBrnd{border-style:none;text-decoration:none;}.cdOImgM{vertical-align:m= iddle;border-style:none;}.cdOHdrCtrl{display:inline;padding-left:7px;}.O= ExPnl{display:none;position:relative;}.OClgCl{padding:6px 0px 15px 0px;}= .OClgClM{padding:2px 0px 13px 0px;}.OClgIS{color:#CCCCCC;}.ONTHFWSHdrTbl= {background-color:#ffffff;color:#000000;width:100%;font-size:100%;}.TopN= avCellLink{padding:1px 4px 2px 4px;border:1px solid #387FD1;}.TopNavCell= LinkHover{padding:1px 4px 2px 4px;background-color:#0074BF;border:1px;bo= rder-style:solid;border-color:#84BFE9;}.OFLbl{color:#000000;}.OInhFS{fon= t-size:100%;}.OHilite{background-color:#FBE9B8;}.OItmR{}.OLstSep{border-= bottom:1px solid #E4E4E4;}.IconCell{float:left;padding:2px 0px 2px 0px;w= idth:22px;}.FeedbackWizCounterText{color:#808080;}.FeedbackWizCounterOve= rText{color:#000000;}.OrangeColor{color:#FF8C00;}.dvRefresh{display:bloc= k;}.dvHover{position:absolute;clear:both;max-width:982px;display:none;ba= ckground-color:transparent;z-index:9990;border:2px solid #C3C3C3;}.dvHov= erContent{background-color:white;}.cdTextHover .dvHoverContent{backgroun= d-image:url('/_layouts/images/general/gray-fade.png?b=3D5567.4000');back= ground-position:bottom;background-repeat:repeat-x;border:1px solid #aaa;= }.spnClipNewUpdated{font-size:1.2em;color:#d8370b;display:inline-block;v= ertical-align:middle;}.dvHvInlineBlock{display:inline-block;}.dvHVItem{t= ext-align:center;}.spnProvNm{display:inline-block;vertical-align:bottom;= }.dvHVItemDesc{color:#999;}.dvHVItemProv{color:#454545;margin:0 5px 0 0;= white-space:nowrap;}.dvHVItemComm{color:#999;}.dvHVItemThumbWrapper124{t= ext-align:center;}.dvHVItemThumbWrapper a:hover{text-decoration:none;}.d= vHVItemThumbWrapper192{text-align:center;}.dvHVItemThumb124{width:124px;= min-height:124px;text-align:center;display:inline-block;white-space:nowr= ap;overflow:hidden;cursor:pointer;}.dvHVItemThumb192{width:192px;min-hei= ght:192px;text-align:center;white-space:nowrap;overflow:hidden;cursor:po= inter;}.dvHVItemThumb124 a:hover,.dvHVItemThumb192 a:hover{text-decorati= on:none;}.dvViewDetails{padding:3px 0px;font-size:1.3em;}.imgThumb{verti= cal-align:middle;-ms-interpolation-mode:bicubic;}.imgHoverThumb{border:#= CCC 1px solid;cursor:default;}.dvHvActionWrapper{text-align:center;}.anc= HVActionItem{display:inline-block;vertical-align:middle;text-align:cente= r;margin:0 5px 7px 5px;cursor:pointer;font-size:1.3em;}.imgHVActionItem{= display:inline-block;vertical-align:middle;}.cdBLHoverT{width:auto;heigh= t:1px;background:url('/_layouts/images/general/hover_top.png?b=3D5567.40= 00') repeat-x;}.cdBLHoverTR{vertical-align:top;background:url('/_layouts= /images/general/hl_fill.png?b=3D5567.4000') repeat-x;}.cdBLHoverBR{width= :240px;height:20px;text-align:right;vertical-align:bottom;background:url= ('/_layouts/images/general/action_bar.png?b=3D5567.4000');}.cdBLHoverB{w= idth:auto;height:1px;background:url('/_layouts/images/general/hover_bott= om.png?b=3D5567.4000') repeat-x;}.cdBLHoverAddLink{font-size:1.1em;color= :#4685df;padding:4px 8px 4px 8px;}.dvVertGalSlice{display:block;height:6= 22px;width:160px;overflow:scroll;overflow-x:hidden;overflow-y:auto;text-= align:center;border:solid 1px #dddedf;background:transparent url('/_layo= uts/images/general/filmstrip_gradient.gif?b=3D5567.4000') repeat-x;}.anc= VSItem{display:inline-block;width:124px;height:140px;line-height:140px;v= ertical-align:middle;margin:10px;padding:1px;text-decoration:none;cursor= :pointer;color:white;}.ancVSItem:hover{border:solid 1px #eaeaea;padding:= 0;text-decoration:none;}.ancVSItem:visited{border-width:0;padding:1px;}.= ancVSItemSel{border:solid 1px #ccc;padding:0;}.spnVSItem{display:inline-= block;width:98px;text-align:center;vertical-align:middle;line-height:1em= ;clear:both;}.dvVSTitle{width:98px;line-height:normal;font-size:1.1em;cl= ear:both;color:#4685df;}.dvVSSubTitle{width:98px;line-height:normal;font= -size:1.0em;color:#999;clear:both;}.imgVSThumb{vertical-align:middle;-ms= -interpolation-mode:bicubic;}.imgVSThumbBorder{border:solid 1px #ccc;}.a= ncVSPaging{display:block;margin:5px 0;font-size:1.2em;padding-bottom:20p= x;}.dvActionBar{color:#999;white-space:nowrap;margin:0 15px 15px 15px;li= ne-height:20px;}.dvABLeftEdge{display:inline-block;width:3px;min-height:= 24px;background-image:url('/_layouts/images/general/ab_default_left_edge= .png?b=3D5567.4000');vertical-align:top;}.dvABLeftEdgeSelected{backgroun= d-image:url('/_layouts/images/general/ab_hover_left_edge.png?b=3D5567.40= 00');}.dvABCenter{display:inline-block;min-height:24px;width:100%;backgr= ound:#fff url('/_layouts/images/general/ab_default_middle_gradient.png?b= =3D5567.4000') repeat-x;vertical-align:top;}.dvABCenterSelected{backgrou= nd-image:url('/_layouts/images/general/ab_hover_middle_gradient.png?b=3D= 5567.4000');}.dvABRightEdge{display:inline-block;width:3px;min-height:24= px;background-image:url('/_layouts/images/general/ab_default_right_edge.= png?b=3D5567.4000');vertical-align:top;}.dvABRightEdgeSelected{backgroun= d-image:url('/_layouts/images/general/ab_hover_right_edge.png?b=3D5567.4= 000');}.dvActionBarLeft{width:30%;display:inline-block;vertical-align:to= p;}.dvActionBarRight{width:70%;display:-moz-inline-block;display:inline-= block;text-align:right;}.dvActionBarFull{width:100%;display:-moz-inline-= block;display:inline-block;text-align:right;}.ancABItem{display:inline-b= lock;text-decoration:none;font-size:1.2em;padding:0 10px;border-left:1px= solid #d5d5d5;min-height:20px;margin-top:2px;text-align:left;width:auto= !important;}.ancABItem:hover{background:#fff url('/_layouts/images/gene= ral/ab_action_button_gradient.png?b=3D5567.4000') repeat-x;border-left:1= px solid #c6ddff;color:#015cdd;text-decoration:none;}.ancABSiblingBord{b= order-left-color:#c6ddff;}.ancABItem:visited{}.ancABItemLeft{font-size:1= .2em;padding:0 10px;display:inline-block;min-height:20px;margin-top:2px;= }.ui-oodropdown{height:18px;border:1px solid #eaeaea;margin-top:3px;}.ui= -oodropdown-wrapper{margin:0 5px;max-height:23px;}.ui-oodropdown-hover,.= ui-oodropdown-active{border-color:#ccc;}.ui-oodropdown-text{font-size:1e= m;height:18px;line-height:18px;margin:0 3px 0 6px;text-decoration:none;c= olor:#333;display:block;}.ui-oodropdown-arrow{display:inline-block;verti= cal-align:top;height:18px;}.ui-oodropdown-arrow-img{vertical-align:top;w= idth:14px;height:14px;margin:2px 2px 0 0;}.ui-oodropdown-text:hover{colo= r:#333;text-decoration:none;}.ui-oodropdown-text:visited{color:#333;text= -decoration:none;}.ui-oodropdown-dropcontainer{background-color:#fff;bor= der:1px solid #eaeaea;}.ui-oodropdown-item{max-height:17px;line-height:1= 7px;margin:2px 2px 0 2px;padding:1px;}.ui-oodropdown-item-hover{backgrou= nd-color:#dcdcdc;border:1px solid #f6f6f6;padding:0px;}.dvTopProviders{m= argin-bottom:15px;}.dvTpTitle{font-size:1.4em;font-weight:normal;color:#= 777;margin:-2px 0 2px 6px;}.dvTpItem{padding:6px;white-space:nowrap;marg= in-bottom:1px;display:block;}.dvTpItem:hover{padding:5px;border:1px soli= d #ccc;text-decoration:none;}.dvTpItemSel{background-color:#eaeaea;backg= round:url('/_layouts/images/general/tp_gray_gradient.png?b=3D5567.4000')= repeat-x left top;padding:5px;border:1px solid #ccc;}.dvTpLeft{display:= inline-block;background-color:white;border:1px solid #ccc;vertical-align= :top;width:20px;height:20px;margin-top:2px;}.ancTpProvIco{display:inline= -block;}.imgTpProvIco{width:20px;height:20px;filter:alpha(opacity=3D60);= opacity:0.6;vertical-align:top;}.imgTpProvIcoSelected{filter:alpha(opaci= ty=3D100);opacity:1;}.dvTpRight{display:inline-block;margin-left:10px;ve= rtical-align:top;width:118px;}.dvTpProvTopDetails{width:120px;font-size:= 1.2em;color:#444;}.dvTpProvBotDetails{white-space:nowrap;width:120px;}.a= ncTpProvBotDetails{color:#999;font-size:1.1em;}.ancTpProvBotDetails:visi= ted{color:#999;}.ancVSPaging{padding:10px 0;}.cdConstructEmail{font-size= :10px;}.cdConstructEmailBtn{float:left;}.cdConstructEmailRow{width:940px= ;display:inline-block;margin:10px;}.cdConstructEmailTitle{font-size:2.0e= m;font-weight:bold;color:#454545;width:100%;display:inline-block;}.cdCon= structEmailSubtext{font-size:1.2em;font-weight:normal;color:#454545;padd= ing:11px 0px 0px;}.cdConstructEmailBtn{padding:11px 0px 0px 10px;}.cdCon= structEmailBtnM{width:55px;}.cdConstructEmailDisclaimer{width:265px;floa= t:left;}.cdConstructEmailLabel{font-weight:bold;font-size:1.2em;font-col= or:#454545;width:100px;float:left;display:inline-block;padding:28px 0px = 6px;}.cdConstructEmailTextbox{height:22px;line-height:22px;width:443px;b= order:1px solid #ccc;display:inline-block;}.cdConstructEmailTextbox inpu= t{width:100%;}.cdConstructEmailBody{width:437px;height:180px;padding:2px= ;border-width:2px;}.cdConstructEmailDialog a{color:#4685df;}.cdConstruct= EmailDialog{cursor:default;padding:25px;width:445px;height:570px;backgro= und-color:#fff;position:absolute;text-align:left;z-index:10001;}div#SUBH= eader td.Arrow,#SUBDN .Arrow,#SUBPArrow,#SUBButton .Arrow{width:19px;hei= ght:19px;background-repeat:no-repeat;background-position:center;}div#SUB= Header td.Arrow{text-align:center;width:50px;height:17px;background-imag= e:url('/_layouts/images/submissions/sarrowo.gif?b=3D5567.4000');}#SUBDN = .Arrow{float:left;background-image:url('/_layouts/images/submissions/sar= roww.gif?b=3D5567.4000');}#SUBButton .Arrow{float:left;background-image:= url('/_layouts/images/submissions/sarrowg.gif?b=3D5567.4000');}#SUBDN .D= escription{text-align:left;}.SUBContent{background-color:rgb(251,251,251= );width:500px;min-height:350px;margin:0px auto;padding:15px 30px 30px 30= px;border-top:0px;border-bottom:0px;border-left:1px;border-right:1px;bor= der-style:solid;border-color:rgb(213,213,213);}.SUBContent h2{color:blac= k;display:inline;font-size:13px;font-weight:bold;margin-bottom:0px;}div#= SUBFooter{background-color:rgb(251,251,251);margin:0px auto;width:560px;= height:12px;border-top:0px;border-bottom:1px;border-left:1px;border-righ= t:1px;border-style:solid;border-color:rgb(213,213,213);}.SUBMCHeader{bac= kground-color:rgb(254,237,191);padding:10px;margin-bottom:10px;}#SUBMC{b= ackground-color:#fff;width:488px;padding:5px;border-width:1px;border-sty= le:solid;border-color:#000;}#SUBReview,#SUBFinish{background-color:#fff;= width:458px;padding:20px;overflow:hidden;border-width:1px;border-style:s= olid;border-color:rgb(165,172,178);}#SUBFinish{height:150px;overflow:aut= o;}#SUBTOU{background-color:#fff;width:488px;height:80px;padding:5px;ove= rflow:auto;border-width:1px;border-style:solid;border-color:rgb(165,172,= 178);}div#SUBHeader td{color:#666;}div#SUBHeader td b{font-weight:bold;}= div#SUBHeader td.Off{}div#SUBHeader td.On{color:#000;font-size:1.1em;fon= t-weight:bold;}div#SUBHeader td.On b{color:rgb(255,153,0);}#SUBDN{backgr= ound-color:#fff;width:500px;padding:0px;border:1px solid #000;}#SUBDN td= {margin:0px auto;padding:15px;}#SUBPArrow{display:none;position:absolute= ;z-index:1;background-image:url('/_layouts/images/submissions/sarrowg.gi= f?b=3D5567.4000');}#SUBButton,.SUBButtonDiv{text-align:right;}#SUBButton= table{float:right;}#SUBHelp1,#SUBHelp2,#SUBHelp3,#SUBHelp4{float:right;= }.cdBoldText{font-weight:bold;}.OTBItm{text-decoration:none;}.OTBItm:hov= er{text-decoration:underline;}.OAncImg,.OAImgPL{border-style:none;}.OAIm= gPL{margin:0px 0px 0px 4px;}.OFLT,.OIFile,.OLstBx{font-size:100%;}.OFLT{= border-style:none;margin:0px;padding:0px;}.OFLTDP{padding:0px 23px 1px 0= px;}.OTA,.OTATDTtl{border-style:none;margin:0px;padding:0px;position:rel= ative;width:100%;}.OTATDTN{border-style:none;margin:0px;padding:0px 0px = 0px 0px;}.OTA{font-size:100%;width:100%;}.OTATDLOne,.OTATDLSep,.OTATDLTw= o,.OTATDTtl{border-bottom:1px solid #ccc;padding-top:9px;height:29px;}.O= TATDLOne,.OTATDLSep,.OTATDLTwo{padding-bottom:2px;}.OTATDLOne{padding-le= ft:15px;padding-right:0px;}.OTATDLSep{padding-left:4px;padding-right:4px= ;}.OTATDLTwo{padding-left:0px;padding-right:0px;}.OTATDTtlFv{padding-rig= ht:0px;}.OTATDTN{height:12px;}.OClg,.OSRTbl,.OSETbl{line-height:normal;f= ont-size:100%;}.OClg,.OSRTbl,.OSETbl{width:100%;}.OClgCoL{padding-left:0= px;padding-right:12px;}.OClgCoR{padding-left:13px;padding-right:0px;}.OC= lgH,.OClgHM,.OClgHME{color:#0560A6;font-weight:bold;padding:0px 0px 2px = 0px;}.OClgH{border-bottom:1px solid #CCCCCC;}.OClgHME{padding:0px 0px 10= px 0px;}.OClgI{font-weight:normal;}.OLstUO{list-style-image:url('/_layou= ts/images/general/bullet.png?b=3D5567.4000');}.OVlSm,.OILbl{color:#CC110= 0;font-size:100%;font-weight:bold;}.OILbl2{color:#CC1100;font-size:100%;= font-weight:normal;}#TopNavWorldwideImageTd{background-color:#ffffff;ver= tical-align:middle;padding:0px 6px 0px 10px;}#TopNavWorldwideTextTd{back= ground-color:#ffffff;vertical-align:middle;}#TopNavWorldwideLM,#TopNavWo= rldwideChange{text-decoration:none;}#TopNavWorldwideLM{font-weight:bold;= }#TopNavWorldwideLM:hover{text-decoration:none;}#TopNavWorldwideChange:h= over{text-decoration:underline;}.OSCtrl{border-style:solid none solid no= ne;border-width:1px 0px 1px 0px;border-bottom-color:#4A7AC9;border-top-c= olor:#4A7AC9;background-color:#B1C9F1;padding:4px 2px 3px 1px;}.OItmUR{f= ont-weight:bold;}.OLCHdr,.OLCHdr A{color:#808080;text-decoration:none;}.= OLCHdr A{}.OLCHdr A:hover{text-decoration:underline;}.OSETbl{border-top:= 1px solid #A1B0C5;}.OSEVS{vertical-align:top;background-color:#EEEEEE;wi= dth:60%;}.OPrivHI{font-style:italic;}.OPrivS{font-weight:bold;}.ArtCell{= float:left;padding:2px 0px 2px 5px;margin:0px;border:0px;}.FeedbackWizCo= unterStar{font-weight:bold;color:#FF0000;}.OLstUO{margin:0px 2px 0px 12p= x;}.ULstDisc{list-style-type:disc;}@media print{.OAnc,.OAncEm,.OTBItm,.O= LCHdr,.OLCHdr A{text-decoration:underline;}.OAncEm{color:#0560A6;font-we= ight:bold;}}.cdFloatLeft{float:left;}div,span,ul.cdsectabs,ul#cdtoptabs,= ul#cdtoptabs li,a,form.cdfullsrchctrl,h1,h2{margin:0;padding:0;}div#cdSi= tenavDbgBreadcrumbs ul,div#cdSitenavDbgBreadcrumbs li{list-style-type:no= ne;display:inline;margin:0 5px 0 0;padding:0;}div#cdmarket div#cdmarkett= xt{float:right;}div#cdnavcontbck{background-color:white;width:100%;}div#= cdnavcontainer{padding:5px 0 14px 0;width:990px;margin-left:auto;margin-= right:auto;clear:both;}div#cdlogo{float:left;padding-left:25px;padding-r= ight:15px;}div#cdnavcontainer div#cdskiptomain{position:absolute;left:0p= x;top:-500px;width:1px;height:1px;overflow:hidden;}#cdtopnavlinks{float:= right;margin-right:32px;padding-top:10px;color:#ccc;font-size:1.1em;}div= #cdtopnavlinks > span,div#cdtopnavlinks > a{padding-right:3px;dislay:inl= ine-block;}#cdtopnavlinks a.cdtoggle span{font-size:0.9em;color:#666666;= }#cdtopnavlinks ul{list-style-type:none;margin:0;padding:0;position:abso= lute;border:solid 1px #cccccc;background-color:#fff;width:100px;padding:= 2px;top:-5000px;}#cdtopnavlinks ul li{display:block;padding:3px 2px;}#cd= topnavlinks ul li:hover{background-color:#eaeaea;border:solid 1px #ccccc= c;padding:2px 1px;}#cdtopnavlinks ul li:hover a{text-decoration:underlin= e;}#cdtopnavlinks ul li a{width:100%;display:block;}#cdtopnavlinks .cdgl= obe img{vertical-align:-4px;}#cdtopnavlinksxts{float:right;color:#666;fo= nt-size:1.1em;}div#cdtopnavlinksxts > span,div#cdtopnavlinksxts > a{floa= t:left;padding-right:3px;display:inline-block;}div#cdtabarea{width:100%;= background-image:url('/_layouts/images/general/tab_area_background.png?b= =3D5567.4000');background-repeat:repeat-x;font-size:1.2em;}div#cdtopmenu= {float:left;margin-right:44px;margin-left:30px;}ul#cdtoptabs{list-style-= type:none;margin:0 auto 0 auto;width:951px;white-space:nowrap;}ul#cdtopt= abs li{height:0;}ul#cdtoptabs li.cdclr{margin-top:-1.2em;}ul#cdtoptabs l= i.cdtopn{display:inline-block;float:left;margin:0 0 1px 0;padding:0;heig= ht:auto;width:auto;}ul#cdtoptabs li.cdtopn a{display:block;padding:6px 2= 5px 11px 25px;color:#545454;outline:none;}ul#cdtoptabs li.cdhzmore > a{d= isplay:block;padding:6px 5px 10px 25px;float:left;}ul#cdtoptabs li.cdtop= n > img{display:block;float:left;padding:12px 25px 10px 0;}ul#cdtoptabs = li.cdtbhlder > a{cursor:default;}ul#cdtoptabs li.cdtopn:hover,ul#cdtopta= bs li.cdtabfoc{background:url('/_layouts/images/general/tab_right_ul.png= ?b=3D5567.4000') no-repeat right top;margin:0;border-bottom:1px solid wh= ite;}ul#cdtoptabs li.cdtopn:hover a,ul#cdtoptabs li.cdtopn:hover > span,= ul#cdtoptabs li.cdtabfoc a{background:url('/_layouts/images/general/tab_= left_ul.png?b=3D5567.4000') no-repeat left top;color:#333;text-decoratio= n:none;outline:none;}ul#cdtoptabs li.cdtopn.cdselected{background:url('/= _layouts/images/general/tab_selected_right.png?b=3D5567.4000') no-repeat= right top;margin:0;border-bottom:1px solid white;}ul#cdtoptabs li.cdtop= n.cdselected a{background:url('/_layouts/images/general/tab_selected_lef= t.png?b=3D5567.4000') no-repeat left top;color:#333;text-decoration:none= ;outline:none;}ul#cdtoptabs li.cdhzmore{border-bottom-width:0;}ul#cdtopt= abs li ul.cdsectabs{list-style-type:none;margin:0;padding-bottom:1px;min= -width:250px;position:absolute;z-index:1000;top:-5000px;left:0;}*+html u= l#cdtoptabs li ul.cdsectabs{width:300px;}ul#cdtoptabs li ul.cdsectabs li= .cdsecn{float:none;background:url('/_layouts/images/general/sectab_bg_ri= ght.png?b=3D5567.4000') no-repeat right top;display:block;height:26px;}u= l#cdtoptabs li ul.cdsectabs li.cdsecn a{background:url('/_layouts/images= /general/sectab_bg_left.png?b=3D5567.4000') no-repeat left top;display:b= lock;height:11px;text-decoration:none;color:#545454;margin-left:-6px;pad= ding-left:31px;}ul#cdtoptabs li ul.cdsectabs li.cdsecn:hover,ul#cdtoptab= s li ul.cdsectabs li.cdsecn.cdtabfoc{background:url('/_layouts/images/ge= neral/sectab_bg_right_sel.png?b=3D5567.4000') no-repeat right top;border= -bottom:none;}ul#cdtoptabs li ul.cdsectabs li.cdsecn:hover a,ul#cdtoptab= s li ul.cdsectabs li.cdtabfoc a{color:#333;outline:none;border-bottom:no= ne;}ul#cdtoptabs li ul.cdsectabs li.cdsecn.cdsecnlast{background:url('/_= layouts/images/general/sectab_bg_right_last.png?b=3D5567.4000') no-repea= t right top;}ul#cdtoptabs li ul.cdsectabs li.cdsecn.cdsecnlast span{back= ground:url('/_layouts/images/general/sectab_bg_left_last.png?b=3D5567.40= 00') no-repeat left top;height:11px;}ul#cdtoptabs li ul.cdsectabs li.cds= ecn.cdsecnlast:hover{background:url('/_layouts/images/general/sectab_bg_= right_last.png?b=3D5567.4000') no-repeat right top;}div.cdmholder{width:= 400px;}div#cdtopmenuprimary{padding-right:24px;padding-left:0;padding-bo= ttom:6px;margin-top:-1px;}div#cdtopmenusecondary{padding-top:5px;}ul#cdp= rimarymenu{padding-top:-1px;padding-right:9px;padding-left:1px;}ul#cdpri= marymenu li{padding-right:4px;padding-left:0;}ul#cdprimarymenu li a{padd= ing:0 9px 0 9px;}ul#cdprimarymenu li.cdselected{border-width:1px 0 1px 0= ;border-style:solid;border-color:#fff;}ul#cdprimarymenu li.cdselected a{= margin:0;padding-bottom:7px;display:inline;background-image:url('../_lay= outs/images/general/caret.gif?b=3D5567.4000');background-repeat:no-repea= t;background-attachment:scroll;background-position:center bottom;color:#= 00439C;}ul#cdprimarymenu li.cdselected a:hover{text-decoration:none;}ul#= cdsecondarymenu li{padding-right:5px;padding-left:9px;}ul#cdsecondarymen= u li.cdsecselected{border-width:1px 0 1px 0;border-style:solid;border-co= lor:#fff;}ul#cdsecondarymenu li.cdsecselected a{color:#00439C;}form.cdfu= llsrchctrl div{height:22px;border:solid 1px #ccc;float:left;color:#999;m= argin-top:2px;width:350px;}form.cdfullsrchctrl span{display:none;}form.c= dfullsrchctrl input.cdsrchtxt{margin:0;padding:5px 0 3px 5px;float:left;= width:317px;font-size:1.1em;border-width:0;background:none transparent s= croll repeat 0% 0%;outline-style:none;outline-color:invert;outline-width= :0px;}form.cdfullsrchctrl input.cdsrchdef{color:#999;}form.cdfullsrchctr= l input:focus{outline:none;}form.cdfullsrchctrl button.cdsrchbtn{height:= 22px;width:23px;padding-left:0;padding-right:0;padding-bottom:0;margin:0= 1px 0 0;border:none;cursor:pointer;float:right;background-color:transpa= rent;}form.cdfullsrchctrl button.cdsrchbtn img{margin:0 -3px 0 0;}img#cd= binglogo{float:left;padding:7px 0 0 8px;}div#cdtopnavpromo{float:right;w= idth:360px;max-height:35px;margin:10px 32px -14px 0;overflow:hidden;}div= #cdAuthHeader{text-align:right;float:right;margin-top:6px;}div#cdAuthHea= der div.cdAuthHeaderSignIn{margin-top:5px;}div#cdCntPane{width:990px;mar= gin:0 auto;}div#cdCntPaneTop{font-size:1.1em;margin:10px 31px 5px 45px;c= olor:#999;}div#cdCntTop{background-image:url('/_layouts/images/general/g= lass_top.png?b=3D5567.4000');background-repeat:no-repeat;height:31px;}di= v#cdCntMid{background-image:url('/_layouts/images/general/glass_middle.p= ng?b=3D5567.4000');background-repeat:repeat-y;padding:0 15px;min-height:= 400px;height:auto !important;height:400px;}div#cdCntBot{background-image= :url('/_layouts/images/general/glass_bottom.png?b=3D5567.4000');backgrou= nd-repeat:no-repeat;height:38px;}div#cdcontent{padding:0 10px 0 10px;min= -height:400px;height:auto !important;height:400px;}span#cdbreadcrumbs{wi= dth:69%;display:inline-block;margin:5px 43px 0 43px;}span#cdbreadcrumbs = > span{display:inline-block;padding:0 3px 0 0;}span#cdbreadcrumbs a:link= ,span#cdbreadcrumbs a:visited,span#cdbreadcrumbs a:active{color:#999;tex= t-decoration:none;font-size:1.1em;}span#cdbreadcrumbs a:hover{color:#999= ;text-decoration:underline;}div#cdofooter{width:960px;margin:1.3em auto = 0 auto;font-size:1.1em;}div#cdmicrosoftfooterlink{float:right;width:49.9= %;text-align:left;}div#cdmicrosoftfooterlink span{display:inline-block;w= idth:351px;float:left;}div#cdmicrosoftfooterlink a{display:inline-block;= float:right;margin:.1em 2.9em 0 0;}div#cdfooterlinks{float:left;width:49= .9%;text-align:right;}div#cdfooterlinks > a,div#cdfooterlinks > span{dis= play:inline-block;padding-right:3px;}div#cdfooterlinks a.cdlastfootlnk{p= adding:0 7px 0 0;}div#cdopffooter{width:950px;margin:0 auto;}div#cdopffo= oter div{float:left}div#cdopffooter span{float:right;}div#cdovfooter ul#= cdfooterlinks{float:left;}div#cdovfooter ul#cdfooterlinks li{margin-righ= t:15px;margin-left:0;}div#cdovfooter span#cdmicrosoftfooterlink{float:ri= ght;}ul.cdnavlist{list-style-type:none;}ul.cdnavlist li{display:inline;}= #cdmainc{float:right;visibility:hidden;width:1px;height:1px;overflow:hid= den;}.cdmostborders{border-left:solid 1px #868686;border-right:solid 1px= #868686;border-top:solid 1px #868686;}.cdbottomborder{border-bottom:sol= id 1px #868686;}.cdh6,h6{font-size:10px;font-weight:normal;}.cdvh6{font-= size:11px;font-weight:normal;}a.cdh6:link,a.cdh6:visited,a.cdh6:active{c= olor:#4b84da;text-decoration:none;}a.cdvh6:link,a.cdvh6:visited,a.cdvh6:= active{color:#ffffff;text-decoration:none;}a.cdvh6:hover{text-decoration= :underline;}a.cdh6:hover{text-decoration:underline;}#cdlogPP{width:970px= ;padding-bottom:5px;zoom:1;}#cdglobeimage,#cdcorppromobox{padding:2px 4p= x 0 4px;}#cdsubbrandbarnew{zoom:100%;text-align:left;border-top:1px soli= d #FFF;border-bottom:1px solid #FFF;}a.cdSubwebLink,a.cdSubwebLink:visit= ed{color:#0E4380;}#cdsitemaptop,#cdsitemaptopPP{float:right;padding:5px = 19px 0 19px;text-align:right;}#cdsitemaptopPP{padding:5px 2px 0 2px;}#cd= globaltop,#cdglobaltopPP,#cdcorppromotop,#cdcorppromotopPP{float:left;pa= dding:2px 0 0 15px;}#cdglobaltopPP{padding:2px 0 0 0;}.cdPPbodybg{backgr= ound-color:#edf4fc;height:420px;padding:10px;overflow:auto;}.cdLeftNavBg= Color{background-color:#EDF4FC;}.cdFontReduc{font-size:.91em;}#cdleftnav= {width:155px;padding:0px 0 8px 0;background-color:#F2F2F2;}#cdmainconten= tnopad,.cdmaincontent{font-size:1.1em;padding:0px 10px 0px 9px;text-alig= n:left;}#cdmaincontentnopad{padding:0;}div#cdovfooter{padding:2px 5px 2p= x 5px;}#cdfootbotPP{height:10px;background-color:#e3eefe;}#cdsubbrandbar= light{height:4px;overflow:hidden;}#cdbreadbar{border-top:1px solid #8AAF= E1;border-bottom:1px solid #8AAFE1;text-align:left;padding:3px 10px 3px = 10px;}#cdsearchfoot{background-color:#fff;text-align:right;float:right;p= adding:8px 20px 0 20px;width:500px;}.cdnavpad{padding:3px 15px 3px 15px;= }.cdleftnavlist{list-style:none;margin:0;padding:0 0 0 .7em;text-indent:= -.7em;}.cdleftnavlist li{padding:0px;}.cdleftnavtlfilter li{margin-botto= m:5px;}.cdleftnavtlfilter li a,.cdleftnavtlfilter li a:visited{color:#27= b;}.cdleftnavtlfilter li b{color:#f80;}.cdnavbold{margin-top:3px;color:#= 666666;background-color:#E3E3E3;font-weight:bold;color:#0E4380;backgroun= d-color:#CDE0FD;}.cdrelated{color:#2771BA;font-weight:bold;font-size:1.1= em;text-align:right;padding:0px 10px;}.cdbread{color:#666666;font-size:.= 9em;line-height:1.1em;}.cdbread a{color:#636363;text-decoration:none;}.c= dbread a:hover{color:#636363;text-decoration:underline;}.cdbread a:visit= ed{color:#636363;}.cdhottext{color:#FE7100;}.cdhottext a{color:#FE7100;}= .cdhottext a:hover{color:#FE7100;}.cdhottext a:visited{color:#FE7100;}.c= dSideBox{border:1px solid #cccccc;margin-bottom:10px;white-space:normal;= }.cdSearchCol{float:left;padding-left:5;padding-right:5;margin-left:10;m= argin-right:10;}.cdSearchLeftNavCol{width:150px;}.cdSearchAssetsCol{widt= h:590px;}.cdSearchAdsCol{width:160px;}.cdSearchLeftNavOption:hover{color= :#4685df;}.cdSearchLeftNavOptionUnsel{color:#595959}.cdSearchLeftNavOpti= onSel{color:#454545}.cdSearchBlueLineTitle{color:#4685df;}.cdSearchBlueL= inePrefix{color:#d8370b;}.cdSearchBlueLineDesc{color:#454545;}.cdSearchB= lueLineProviderHeading{color:#999999;}.cdSearchBlueLineProviderValue{col= or:#4685df;}.cdSearchBlueLineAppliesToHeading{color:#999999;}.cdSearchBl= ueLineAppliesToValue{color:#454545;}.cdSearchBlueLineLinkUrl{color:#4c9d= 30;}.cdAdTitle{color:#666;font-family:Arial,Helvetica,sans-serif;font-si= ze:1em;line-height:1.4em;text-align:center;display:block;}#cdAssistCont{= background-image:url('/_layouts/images/general/background_diaghelp.jpg?b= =3D5567.4000');background-position:top right;background-repeat:no-repeat= ;border-bottom:1px solid #ccc;}#cdAssistanceTitle{font-size:2.8em;color:= #7598c4;padding:15px 215px 15px 10px;line-height:1.1em;}#cdArticleBody,#= cdQuizBody{float:left;width:475px;overflow:hidden;padding:0px 10px 0px 9= px;}#cdFeedbackControl{border-top:1px dashed #ccc;padding-top:15px;margi= n-top:10px;zoom:1;font-size:1.2em;}.cdPrintBar{text-align:right;padding:= .5em 12px .5em 12px;border-bottom:1px solid #ccc;}.cdPrintBar a,.cdPrint= BarBottom a,.cdPrintBar a:visited,.cdPrintBarBottom a:visited{color:#666= ;}.cdPrintBarBottom{border-top:1px solid #ccc;border-bottom:1px solid #c= cc;clear:both;padding:.5em 7px .5em 7px;text-align:left;}#cdRightNavWide= {float:left;width:300px;padding:0 10px 0 0;}#cdAppliesTo{padding:5px 12p= x 5px 12px;border-bottom:1px solid #ccc;text-align:left;display:block;}.= cdAppliesToTitle{color:#666;font-weight:bold;}.cdTitle{font-weight:norma= l;font-size:2.2em;padding:0px 0px 10px 15px;color:#454545;line-height:no= rmal;max-width:37em;}.cdTitleEx{font-size:2.2em;color:#454545;font-weigh= t:normal;}.cdTitleUpdatedEx{font-weight:normal;font-size:.6em;color:#d83= 70b;}.cdTitleSub{font-weight:normal;font-size:1.4em;line-height:0;paddin= g:0px 0px 30px 15px;}.cdAppliesToText{color:#999;}#cdTrainCont{font-size= :.91em;}#cdTemplateCont,#cdPortalCont,#cdQuizCont,#cdAssistanceCatCont,#= cdTitleArea{padding-bottom:10px;font-size:.91em;}#cdTitleAreaShowBottomB= order{border-bottom:#ccc 1px solid;}#cdPortalPreviewCont{border-bottom:1= px solid #ccc;padding-bottom:5px;font-size:.91em;margin-bottom:10px;}.cd= TitleAddControls{float:right;}#cdPortalPreviewTitle{padding:15px 12px 10= px 12px;border-bottom:none;}.cdSubTitle{padding:0px 12px 0px 12px;font-w= eight:normal;}.cdTitleUnderline{border-top:1px solid #ccc;}.cdTitleTable= {margin-bottom:15px;border-collapse:collapse;}.cdMvpLogoCont{padding:7px= 40px 0px 0px;width:105px;}#cdTemplateBody,#cdPortalBody,#cdAssistanceBo= dy,#cdTrainingBody,#cdClipartBody,#cdSearchBody,#cdTrainBody,#cdDownload= sBody{overflow:hidden;float:left;width:605px;padding:0px 10px 0px 9px;}#= cdTrainBody{padding-top:20px;}#cdSearchBody{padding:0px;width:100%;}#cdC= ategoryBody{overflow:hidden;width:720px;float:left;padding:0px 10px 0px = 9px;}#cdTemplateRightNav,#cdPortalRightNav,#cdRightNav,#cdAssistanceRigh= tNav,#cdMarketplaceRightNav,#cdTrainingCatRightNav,#cdClipartRightNav,#c= dTrainRightNav,#cdDownloadsRightNav{float:left;width:160px;padding:0 0px= 10px 0;font-size:.91em;}.cdTemplateHeading{padding:2px 0px;}#cdOMPDescr= iption{font-size:1.2em;color:#484848;}#cdOMPTitle{font-size:1.8em;color:= #666;}#cdOMPLink{font-size:1.8em;}.cdOAImgPR{border-style:none;margin:0p= x 4px 0px 0px;}.cdOBlt{vertical-align:middle;}.cdOImg{border-style:none;= }.cdOBtn{width:75px;}.cdOWideBtn{width:110px;}.cdOFrm{border-style:none;= margin:0px;padding:0px;}.cdOLblDe{color:#808080;}.cdOLblEm,.cdOLblEmBlk,= .cdOLblEmRed,.cdOLblEmOrange{font-weight:bold;}.cdOLblEmBlk{color:black;= }.cdOLblEmRed,.cdOLblRed{color:#EA0000;}.cdOLblRed a:link{color:#ea0000;= }.cdOLblRed a:visited{color:#ea0000;}.cdOLblRed a:hover{color:#ff3800;}.= cdOLblRed a:active{color:#ea0000;}.cdOLblEmOrange{color:#FF9900;}.cdOLn,= .cdOLnLight .cdOWSBlk,.cdOWSInl{font-size:1px;height:0px;line-height:0px= ;margin:0px;padding:0px;}.cdOLn,.cdOLnLight{border-width:0px 0px 1px 0px= ;border-style:solid;width:100%;}.cdOLn{background-color:#A1B0C5;border-c= olor:#A1B0C5;}.cdOLnLight{background-color:#d5d5d5;border-color:#d5d5d5;= }.cdOWSBlk,.cdOWSInl{border-style:none;width:0px;}.cdOSCTbl,.cdOSCTbl TA= BLE,.cdOSCTbl FORM{border-style:none;margin:0px;padding:0px;}.cdOSCTbl,.= cdOSCTbl TABLE{color:#343941;font-size:100%;}.cdOSCTbl .cdOWSInl{font-si= ze:2px;}.cdOLstI{padding:3px 0px 3px 0px;}.cdOLstIN{padding:0px 0px 6px = 0px;}.cdOLstO{list-style-image:none;}.cdOLstUON{margin:0px 0px 0px 6px;p= adding:0px 0px 0px 6px;}.cdONBody B{font-weight:bold;}.cdONBody CENTER{t= ext-align:center;}.cdONBody H1,.cdONBody H2,.cdONBody H3,.cdONBody H4,.c= dONBody H5,.cdONBody H6{line-height:normal;}.cdONBody I{font-style:itali= c;}.cdONBody U{text-decoration:underline;}.cdONBodyCellPadded,.cdONBodyC= ellUnpadded{height:100%;margin:0px;width:100%;}.cdONBodyCellPadded{paddi= ng:0px 12px 0px 12px;}.cdONBodyCellUnpadded{padding:0px;}.cdOSET{font-we= ight:bold;color:#000000;}.cdOTATtl{color:#666666;line-height:normal;font= -weight:normal;font-size:1.8em;}.cdOTALftTtl{font-weight:normal;font-siz= e:1.8em;float:left;}.cdOTARgtTtl{float:right;}.cdToolbar{padding:4px 13p= x;margin:0px;}.cdToolbar{color:#666;background-color:#CDE0FD;border:1px = solid #8AAFE1;}.cdToolbar a,.cdToolbar a:visited,.cdBreadcrumb,.cdBreadc= rumb a,.cdBreadcrumb a:visited{color:#666;}.cdToolbar .cdToolbarDe,.cdCl= ientToolbar .cdToolbarDe{color:#49789C;}.cdPaging{white-space:nowrap;}.c= dPaging *{vertical-align:middle;}.cdPaging .cdPageArrows *{vertical-alig= n:baseline;}.cdPaging .cdPageArrows img{vertical-align:middle;}.cdPaging= img{border:0px;}.cdPagingControl{height:25px;line-height:25px;font-size= :1.3em;}.cdPagingControl > *{display:inline-block;vertical-align:middle;= }.cdPagingButton{height:17px;width:21px;padding:0 3.5px 0 3.5px;}.cdPagi= ngButton > img{height:17px;width:21px;}.cdPagingDisabledLabel{color:#999= ;}.cdPagingBlockNav > a{font-size:1.07692em;display:inline-block;vertica= l-align:middle;height:25px;width:25px;margin:0 2.5px 0 2.5px;border:1px = solid #ccc;color:#F76121;text-align:center;text-decoration:none;}.cdPagi= ngBlockNav > a:hover,.cdPagingBlockNav > a.cdPagingBlockNavSelected{back= ground-color:#ffefde;border:1px solid #f90;}.cdPagingCountLabel{margin:0= 7px 0 7px;}.cdPagingBlockNav{margin:0 20px 0 20px;}.cdPagingSpacer{widt= h:20px;}.cdOTBICon,.cdOTBISep{border-style:none;margin:0px;}.cdOTBICon,.= cdOTBISep{vertical-align:baseline;}.cdOTBICon{padding:2px 0px 4px 0px;}.= cdOTBISep{color:#5183DB;padding:2px 4px 4px 4px;}.cdODW .cdOTBICon{paddi= ng:0px 12px 0px 12px;}.cdOVl{color:#CC1100;font-size:100%;font-weight:bo= ld;}.cdSubwebColor{color:#0E4380;}.cdSubwebColorIn{color:#0E4380;}.cdsea= rchAdvSearchOptionsOpen{cursor:pointer;}.cdsearchTopResultTooltip{displa= y:none;border:1px solid #66CCFF;position:absolute;z-index:5000;backgroun= d-color:#FFFFFF;padding:4px;}.cdsearchHidden{visibility:hidden;}.cdsearc= hAdvSearchOptionsReset{cursor:pointer;}.cdsearchAdvOptsControls{display:= none;border:1px solid #66CCFF;position:absolute;padding:8px;background-c= olor:#FFFFFF;z-index:5001;}.cdsearchQueryTermHighlight{font-weight:bold;= }.cdsearchDashTop{border-top:1px dashed #CCCCCC;}.cdsearchAdvOptsTopHead= ing{font-weight:bold;}.cdsearchAdvOptsCancel{float:left;cursor:pointer;}= .cdsearchAdvOptsSave{float:right;cursor:pointer;}.cdSubwebBgColor{backgr= ound-color:#FFF;}#cdTmplCat{margin-bottom:20px;}#cdTmplCat #cdTmplCatHea= ding{padding:5px 10px 5px 10px;color:#fff;font-size:1.1em;font-weight:bo= ld;}#cdTmplCat #cdTmplCatBrowse{padding:20px 20px 20px 20px;color:#ccc;l= ine-height:1.8;}#cdTmplCat .cdTmplCatSpace{line-height:1.0;}#cdTmplManua= lCat{padding:0px 10px 0px 10px;line-height:1.3;}#cdTmplInfo{margin-botto= m:10px;padding:10px;border:1px #ccc solid;zoom:100%;}#cdTmplInfo h5{marg= in-top:0px;margin-bottom:10px;color:#aaa;}#cdTmplPreview{text-align:cent= er;margin:0px auto;}#cdTmplDetail,#cdTmplFeedback{padding:3px 5px 3px 5p= x;width:45%;float:left;}#cdTmplFeedback{border:1px #ccc solid;}#cdTmplCS= TText{float:right;color:#598874;margin:0px 35px 0px 35px;}#cdTmplCSTText= {padding-top:5px;}.cdTmplCst{zoom:100%;padding:10px;margin:0px auto;back= ground-image:none;background-repeat:no-repeat;background-position:center= right;}#cdVidPageTitle{color:#454545;font-size:2.2em;font-weight:normal= ;padding:2px 10px 3px 10px;}.cdVidDisclaimer{width:100%;display:block;co= lor:#999999;font-size:1.1em;padding-top:3px;}.cdVidDescHdr{font-size:1.6= em;color:#333333;padding:10px 0 6px 0;}.cdVidDesc{font-size:1.3em;color:= #454545;padding-bottom:11px;}.cdVidMetaHdr{font-size:1.6em;color:#333333= ;padding:1px 0 5px 0;}.cdVidMeta{vertical-align:top;font-size:1.2em;colo= r:#454545;padding:5px 0 1px 0;}.cdVidMetaLbl{padding-right:20px;white-sp= ace:nowrap;color:#333333;}.cdVidMeta a:link,.cdVidMeta a:visitied{color:= #454545;text-decoration:none;}.cdVidMeta a:hover{color:#454545;text-deco= ration:underline;}.cdVidLeftColumn{width:640px;vertical-align:top;paddin= g:3px 5px 10px 10px;}.cdVidRightColumn{width:100%;vertical-align:top;pad= ding:3px 10px 10px 0px;}.cdVidCtrlBody{width:640px;border:solid 1px #eae= aea;padding:10px;}.cdVidArticleBody{width:640px;padding:0 10px 0 10px;}.= cdVidArticleBody > h4{color:#454545;font-size:1.6em;font-weight:normal;l= ine-height:1.6em;margin:0 0 12px;}.cdVidMetadataBox{padding:7px 5px 20px= 10px;}.cdVidAdBox{height:255px;border:solid 1px #eaeaea;}.cdVideoWebPar= tPadding{padding:10px 9px 10px 9px}.cdWebPartDescHdr{font-size:1.4em;col= or:#333333;padding:7px 0 1px 0;}.cdWebPartDesc{font-size:1.3em;color:#45= 4545;padding:5px 0 6px 0;}.cdWebPartVidTtl{color:#454545;font-size:2.2em= ;font-weight:normal;padding:3px 0 6px 0;}.cdWebPartTtl{color:#999999;fon= t-size:1.5em;padding:1px 0 3px 0;}.cdWebPartColSep{width:20px;}.cdWebPar= tPlayerSpacer{height:4px;}.cdWebPartMetadataBox{padding-bottom:0px;}.cdC= SCOverlayIcon{position:relative;width:24px;height:24px;right:18px;bottom= :-2px;border-style:none;}.cdListCntr{float:left;width:100%;}.cdGlryCntr{= float:left;cursor:default;width:145px;padding:5px;text-align:center;bord= er:solid 1px #dcdcdc;margin:10px;}.cdGlryThmbnlCntr{text-align:center;he= ight:130px;vertical-align:bottom;}.cdGlryThmbnl{width:140px;bottom:0px;}= .cdGlryDetail{width:140px;text-align:left;}.cdGlryTtlCntr{position:relat= ive;height:1.2em;left:-3px;}.cdGlryTtl{position:absolute;border:1px soli= d #fff;font-weight:bold;overflow-x:hidden;padding:0px 2px;text-overflow:= ellipsis;width:134px;white-space:nowrap;}.cdGlryTtlHvr{position:absolute= ;background-color:#fff;border:1px solid #999;font-weight:bold;overflow-x= :visible;padding:0px 2px;white-space:nowrap;filter:progid:DXImageTransfo= rm.Microsoft.Shadow(color=3D'#666666',Direction=3D135,Strength=3D4);}#cd= SortHeader{padding:5px 10px 5px 10px;background-color:rgb(231,237,235);}= #cdSortHeader a,#cdSortHeader a:visited{color:rgb(34,97,70);}#cdSortHead= er a:visited{text-decoration:none;}#cdSortHeader .cdHighlighted{font-wei= ght:bold;color:rgb(252,140,4);}#cdOutlookRSSBanner{background-color:#efe= fef;background-image:url(''/_layouts/images/general/outlookrss_bg.gif'?b= =3D5567.4000');background-repeat:no-repeat;background-position:bottom ri= ght;padding:11px;}#cdOutlookRSSHeader{width:550px;margin:0px auto;}#cdOu= tlookRSSHeader #cdOutlookRSSHeaderLogo{float:left;padding:0px 11px;}#cdO= utlookRSSHeader #cdOutlookRSSHeaderText{float:left;font-size:1.1em;color= :#888;}#cdOutlookRSSDirectory{width:400px;padding:0px 0px 0px 0px;margin= :0px auto;}.cdBCTCDivCell{border:1px;border-top:0px;border-color:#CCCCCC= ;border-style:solid;}.cdBCTCTitleCell{border:1px;border-color:#CCCCCC;bo= rder-style:solid;padding:0px 11px 0px 11px;color:#FFF;font-weight:bold;f= ont-size:1.2em;height:23px;vertical-align:middle;}.cdRNCMBodyPadding{pad= ding:12px 10px 6px 10px;}.cdBCTCTabCell{padding:2px 4px 0px 4px;height:1= 9px;text-align:center;cursor:hand;font-size:1.0em;color:#333333;backgrou= nd-color:#F2F3EE;background-image:url('/_layouts/images/general/tcnotsel= .gif?b=3D5567.4000');background-repeat:repeat-x;border-left:0px;border-r= ight:0px;border-top:0px;border-bottom:1px;border-color:#CCCCCC;border-st= yle:solid;}.cdBCTCTabCellLeft{padding:0px;height:21px;width:9px;cursor:h= and;background-color:#FFF;background-image:url('/_layouts/images/general= /tcnotselleft.gif?b=3D5567.4000');background-repeat:no-repeat;background= -position:left top;border-left:0px;border-right:0px;border-top:0px;borde= r-bottom:1px;border-color:#CCCCCC;border-style:solid;}.cdBCTCTabCellRigh= t{padding:0px;height:21px;width:9px;cursor:hand;background-color:#FFF;ba= ckground-image:url('/_layouts/images/general/tcnotselright.gif?b=3D5567.= 4000');background-repeat:no-repeat;background-position:right top;border-= left:0px;border-right:0px;border-top:0px;border-bottom:1px;border-color:= #CCCCCC;border-style:solid;}.cdBCTCTabCellSel{padding:2px 4px 0px 4px;bo= rder:0px;height:19px;text-align:center;font-size:1.0em;color:#333333;bac= kground-color:#FFF;background-image:url('/_layouts/images/general/tcsel.= gif?b=3D5567.4000');background-repeat:repeat-x;}.cdBCTCTabCellSelLeft{pa= dding:0px;border:0px;height:21px;width:9px;background-color:#FFF;backgro= und-image:url('/_layouts/images/general/tcselleft.gif?b=3D5567.4000');ba= ckground-repeat:no-repeat;background-position:left top;}.cdBCTCTabCellSe= lRight{padding:0px;border:0px;height:21px;width:9px;background-color:#FF= F;background-image:url('/_layouts/images/general/tcselright.gif?b=3D5567= .4000');background-repeat:no-repeat;background-position:right top;}.cdBC= TCSubLabel{font-weight:bold;color:#666666;}.cdBCTCSubLabel{padding:8px 0= px 0px 0px;font-size:1.2em;}.cdBCTCLinkCellBullet,.cdBCTCLinkCell,.cdBCT= CCatLink,.cdBCTCCatLink:visited{color:#666666;font-size:1.1em;}.cdRelate= dSearchesTable{padding:4px 12px 12px 12px;display:block;}.cdRelatedSearc= hLink,.cdRelatedSearchLink:visited{color:#4685df;font-size:1.1em;}.cdBCT= CLinkCellBullet{padding:4px 0px 2px 0px;}.cdBCTCLinkCell{padding:3px 12p= x 3px 5px;}.cdVeryDarkGray{color:#333;}.dvSignInPopup{position:absolute;= background-color:#fff;border:1px solid #000;width:300px;height:250px;z-i= ndex:10001;}.signInLinkBox{height:200px;}.signInFooterBox{margin:10px 10= px 10px 0px;}.dvDisplayNamePopup{position:absolute;background-color:#fff= ;border:1px solid #000;width:450px;height:250px;z-index:10001;}.displayN= ameHeaderBox{height:180px;padding:25px 20px 5px 20px;}.displayNameHeader= BoxIE7{height:170px;padding:25px 20px 5px 20px;}.displayNameTextBox{widt= h:250px;height:20px;border:1px solid #e8e8e8;margin:5px 0px 0px 0px;}.di= splayNameFooter{margin:10px 10px 10px 20px;}#cdWMPPlayer{margin:20px 0px= 20px 0px;padding:0px;width:615px;height:39px;direction:ltr;}#cdWMPPlaye= r a img{border:0px;}#cdWmpEmbedded{height:39px;width:304px;background-co= lor:white;text-align:center;display:none;}.cdWmpVolume{width:3px;margin-= bottom:12px;border-top:1px solid #5789cd;border-right:1px solid white;bo= rder-bottom:1px solid white;border-left:1px solid #5789cd;}.cdTOC{width:= 166px;height:100%;margin:0px 4px 0px 0px;overflow-x:auto;overflow-y:hidd= en;}.cdTOCCategory{list-style-type:none;list-style-position:outside;marg= in:0px;padding:0px;}.cdTOCCategory li{margin:0px;padding:5px 0px 0px 0px= ;}.cdTOCCategory img{border-width:0px;}.cdTOCContent{list-style-type:squ= are;list-style-position:outside;padding:0px;margin:0px 0px 0px 30px;}.cd= TOCRootContent{margin:0px 0px 0px 15px;}.cdTOCContent li{margin:0px;padd= ing:5px 0px 0px 0px;}.cdVideoPageBody{color:#ffffff;background-image:url= ('/_layouts/images/general/vidback.jpg?b=3D5567.4000');background-positi= on:left;background-repeat:repeat-y;background-color:#7d9cbd;}.cdVideoPag= eTopLeftFull,.cdVideoPageTopRightFull,.cdVideoPageTopMiddleFull{height:3= px;background-color:#ddeafd;background-repeat:no-repeat;font-size:1px;}.= cdVideoPageTopLeftFull{background-image:url('/_layouts/images/general/vi= dtoplf2.gif?b=3D5567.4000');background-position:left;}.cdVideoPageTopMid= dleFull{border-top:1px solid #5d83b2;}.cdVideoPageTopRightFull{backgroun= d-image:url('/_layouts/images/general/vidtoprt2.gif?b=3D5567.4000');back= ground-position:right;}.cdVideoPageBottomLeft,.cdVideoPageBottomRight,.c= dVideoPageBottomMiddle{height:5px;background-color:#ffffff;background-re= peat:no-repeat;font-size:1px;}.cdVideoPageBottomLeft{background-image:ur= l('/_layouts/images/general/vidbotlf.gif?b=3D5567.4000');background-posi= tion:left;}.cdVideoPageBottomMiddle{border-bottom:1px solid #5d83b2;}.cd= VideoPageBottomRight{background-image:url('/_layouts/images/general/vidb= otrt.gif?b=3D5567.4000');background-position:right;}.cdVideoPageMiddleFu= ll{border-left:1px solid #5d83b2;border-right:1px solid #5d83b2;backgrou= nd-color:#ffffff;background-image:url('/_layouts/images/general/vidmtopt= .gif?b=3D5567.4000');background-position:top;background-repeat:repeat-x;= text-align:left;padding:11px 10px 0px 10px;}.cdVideoFrameTopLeft,.cdVide= oFrameTopRight,.cdVideoFrameTopMiddle{height:10px;background-color:#ffff= ff;font-size:1px;}.cdVideoFrameTopLeft{background-image:url('/_layouts/i= mages/general/vidctoplf.gif?b=3D5567.4000');background-position:left;}.c= dVideoFrameTopRight{background-image:url('/_layouts/images/general/vidct= oprt.gif?b=3D5567.4000');background-position:right;}.cdVideoFrameTopMidd= le{background-image:url('/_layouts/images/general/vidctopm.gif?b=3D5567.= 4000');background-repeat:repeat-x;}.cdVideoFrameBottomLeft,.cdVideoFrame= BottomRight,.cdVideoFrameBottomRightFull,.cdVideoFrameBottomMiddle{heigh= t:11px;background-color:#ffffff;font-size:1px;}.cdVideoFrameBottomLeft{b= ackground-image:url('/_layouts/images/general/vidcbotlf.gif?b=3D5567.400= 0');background-position:left;}.cdVideoFrameBottomRight{background-image:= url('/_layouts/images/general/vidcbotrt.gif?b=3D5567.4000');background-p= osition:right;}.cdVideoFrameBottomRightFull{background-image:url('/_layo= uts/images/general/vidcbotrt2.gif?b=3D5567.4000');background-position:ri= ght top;background-repeat:no-repeat;}.cdVideoFrameBottomMiddle{backgroun= d-image:url('/_layouts/images/general/vidcbotm.gif?b=3D5567.4000');backg= round-repeat:repeat-x;}.cdVideoFrameBottomMiddleFull{padding-top:6px;bac= kground-image:url('/_layouts/images/general/vidcbotm2.gif?b=3D5567.4000'= );background-position:top;background-repeat:repeat-x;}.cdVideoFrameMidLe= ft,.cdVideoFrameMidRight{font-size:1px;}.cdVideoFrameMidLeft{background-= image:url('/_layouts/images/general/vidcmidlf.gif?b=3D5567.4000');backgr= ound-repeat:repeat-y;}.cdVideoFrameMidRightTop{background-image:url('/_l= ayouts/images/general/vidcmidtr.gif?b=3D5567.4000');font-size:1px;}.cdVi= deoFrameMidRight{background-image:url('/_layouts/images/general/vidcmidr= t.gif?b=3D5567.4000');background-repeat:repeat-y;}.cdVideoFrameMidMiddle= {background-color:#b4cded;}.cdVideoControlFrame{border:1px solid #ffffff= ;}.cdVideoControlFrame{background-color:#92a7c4;}.OTbl{line-height:norma= l;font-size:100%;}.cdBOBTmpltImg{border:#cccccc 1px solid;filter:progid:= DXImageTransform.Microsoft.Shadow(color=3D'#666666',Direction=3D135,Stre= ngth=3D4);}.text{left:0;right:0;top:45;margin:5px;position:absolute;padd= ing-top:5px;height:87%;width:99%;overflow:auto;z-index:1;background-repe= at:no-repeat;background-position:bottom right;background-attachment:fixe= d;}.expanded{font-weight:normal;color:#006699;text-decoration:none;margi= n-top:2em;margin-bottom:-2em;margin-right:0px;margin-left:13px;}.def{mar= gin-top:40pt;}.cdRtgLblYNM,.cdRtgLblYNMWrap{display:inline;font-size:1.2= em;font-weight:bold;}.cdRtgLblYNMWrap{display:block;padding-bottom:10px;= }.cdRtgCmtLbl,.cdRtgTYHeading{font-size:1.2em;}.modalBackground{backgrou= nd-color:Gray;filter:alpha(opacity=3D50);opacity:0.5;-moz-opacity:0.5;di= splay:none;width:100%;height:100%;left:0px;top:0px;z-index:50000;positio= n:absolute;}.modalPopup{background-color:#ffffdd;border-width:2px;border= -style:solid;border-color:Gray;padding:3px;display:none;width:300px;heig= ht:70px;position:absolute;z-index:50001;top:30%;left:30%;text-align:cent= er}.guideOuterDiv,.guideOuterDivNoFont{width:500px;margin:0px auto;paddi= ng:5px 0px 5px 0px;border-top:0px;border-bottom:0px;border-left:0px;bord= er-right:0px;border-style:solid;border-color:rgb(213,213,213);}.guideOut= erDiv{font-size:1.2em;}.guideOuterDiv h2{color:black;display:inline;font= -size:1.3em;font-weight:bold;margin-bottom:0px;}.navControlElement{borde= r-top:1px;border-bottom:0px;border-left:0px;border-right:0px;border-styl= e:solid;border-color:rgb(213,213,213);margin:0px auto;padding:15px 0px 3= 0px 0px;width:500px;}.navButtonSpacer{padding-left:1.0em;}.navControlTex= t{font-size:1.2em;}.navControlsDiv,.navControlsDivNoBorder{width:500px;m= argin:0px auto;padding:15px 0px 30px 0px;}.navControlsDiv{border-top:1px= ;border-bottom:0px;border-left:0px;border-right:0px;border-style:solid;b= order-color:rgb(213,213,213);font-size:1.2em;}.ctrlFilePicker{font-size:= 1.2em;}.ctrlUrlInput{font-size:100%}.divErrorDisplay{width:100%;text-ali= gn:right;color:red;display:none;font-weight:bold;}.divControlSection{wid= th:500px;min-height:350px;margin:0px auto;padding:5px 30px 15px 30px;bor= der-top:0px;border-bottom:0px;border-left:0px;border-right:0px;border-st= yle:solid;border-color:rgb(213,213,213);}.divControlSection h2{color:bla= ck;display:inline;font-size:1.3em;font-weight:bold;margin-bottom:0px;}.s= ubBrowseLabel{font-weight:bold;}.SbmAssetList{border:1px solid #a5acb2;h= eight:200px;padding:4px;overflow:auto;width:488px;}.SbmAssetListItems{pa= dding:1px 4px;}.fullWidthTextInput{padding-right:4px;#padding-right:6px;= font-size:1.2em;}.fullWidthTextInput input{font-size:100%;width:100%;#ma= rgin-right:-6px;overflow:hidden;}.fullWidthTextInput textarea{font-size:= 100%;width:100%;#margin-right:-6px;}.lblLinkAlike{color:#336699;font-wei= ght:bold;}.lblLinkDetail{color:#454545;font-size:1.2em;font-weight:bold;= }.divYFullWidth{color:#000000;background-color:#ffffc6;padding:2px;width= :100%;}.cdSubmissionTitle{font-size:2.2em;color:#454545 line-height:1.1e= m;padding:15px 0px 0px 0px;zoom:100%;}.cdSubmissionSubTitle{font-size:1.= 2em;font-weight:bold;color:#454545 padding:15px 0px 0px 0px;zoom:100%;di= splay:block;}.cdSubmissionDescription{color:#454545;font-size:1.2em;font= -weight:bold;padding:15px 0px 6px 0px;zoom:100%;}.cdKeywordLabel{color:#= 454545;font-size:1.2em;font-weight:bold;padding:4px 4px 4px 4px;}.cdKeyw= ordInfo{background:#ffffae;border:1px solid #e9eaf1;font-color:#454545;f= ont-size:1.2em;font-weight:bold;padding:8px;zoom:100%;}.cdSubmissionInpu= tText{margin:0px 0px 6px 3px;font-weight:bold;color:#454545;text-align:l= eft;vertical-align:middle;font-size:1.2em;}.cdSubmissionSubHeader{color:= #454545;font-size:1.2em;padding:0px 0px 6px 0px;}.cdSubURLControlTable{b= order:0px 0px 0px 0px;padding:0px 0px 0px 0px;width:610px}.LinkItemTitle= {font-size:1.6em;font-weight:normal;color:#454545;}.GuideDisplayControls= {font-size:1.2em;padding:12px 0px 0px 0px;}.InlineErrorText{font-size:1.= 2em;color:red;}.InlineWarningText{font-size:1.2em;}.KeywordElement{font-= size:1.2em;padding:0px 1px 0px 1px;}.SuggestedKeywordElement{font-size:1= .2em;}.SlimTermsControl{padding:35px 0px 0px 0px;}.ClipartTypeControl{pa= dding:5px 0px 0px 0px;}.ClipartType{font-size:1.2em;}.AppVerCheckBox,.Ca= tegoryCheckBox{width:25px;vertical-align:top;}.CategoryCheckType{font-si= ze:1.2em;}.CategoryTable{spacing:0px 0px 0px 0px;padding:16px 0px 16px 0= px;}.cdClipartManualCategoryTable{float:left;width:100%;border:1px solid= #cccccc;}.cdClipartManualCategoryUL{list-style-image:url('/_layouts/ima= ges/general/bullet.png?b=3D5567.4000');}.cdClipartManualCategoryColumnWr= ap{float:left;overflow:hidden;}.cdClipartManualCategoryEntry{font-size:1= .2em;}.cdClipartManualCategoryButton{margin-top:6px;margin-right:10px;fl= oat:right;}.cdClipartManualCategoryCellAlign{vertical-align:top;}.cdAddS= uggestionButtonSpacer{width:0.3em;}.cdAddSuggestionButtonCell{width:12px= ;}.cdAppVerPickerGroupHeader{background-color:gainsboro;background-image= :url('/_layouts/images/submissions/nav_heading_gradient.png?b=3D5567.400= 0') repeat-x;border:solid 1px #eaeaea;font-weight:bold;font-size:1.2em;t= ext-align:left;vertical-align:middle;margin-top:7px;}.cdAppVerPickerOpen= Body{display:block;padding-left:5px;padding-top:5px;font-size:1.2em;}.cd= AppVerPickerClosedBody{display:none;padding-left:5px;padding-top:5px;fon= t-size:1.2em;}.cdAppVerPickerGroupMembers{width:95%;text-align:left;tabl= e-layout:fixed;margin-left:20px}.dvModalBackground{background-color:#649= 0CB;opacity:.5;filter:alpha(opacity=3D50);opacity:0.5;-moz-opacity:0.5;d= isplay:none;width:100%;height:100%;left:0px;top:0px;z-index:10000;positi= on:fixed;}.dvModal{background-color:#A5BAD5;display:none;position:absolu= te;z-index:10001;max-width:982px;clear:both;}#dvModalContent{border:#8e9= fb5 1px solid;}.dvADModalToolbar{padding:2px 5px 0px 5px;min-height:26px= ;white-space:nowrap;background-color:#eee;background-image:url('/_layout= s/images/general/app_detect_toolbar_grad.png?b=3D5567.4000');border-bott= om:#d6d6d6 1px solid;border-top:#d6d6d6 1px solid;color:#454545;text-ali= gn:center;font-size:1.5em;font-weight:bold;padding-top:7px;}.dvToolbarCl= ose{width:18px;height:18px;position:absolute;right:4px;top:4px;}.dvADMod= alSubToolbar{padding:0 5px 5px 5px;min-height:26px;white-space:nowrap;ba= ckground-color:#eee;background-image:url('/_layouts/images/general/app_d= etect_toolbar_grad.png?b=3D5567.4000');border-top:#e4e4e4 1px solid;bord= er-bottom:#d6d6d6 1px solid;font-size:1.1em;}.dvAutoDetect{display:inlin= e-block;margin:2px 10px 2px 10px;border:#BFA277 1px solid;}.btnAutoDetec= t{color:#454545;padding:0 20px;background-color:#FFC543;background-image= :url('/_layouts/images/general/app_detect_btn.png?b=3D5567.4000');backgr= ound-repeat:repeat-x;border:#FFDB8B 1px solid;font-size:1.1em;font-weigh= t:bold;height:18px;}.btnADModalHover{color:#000;background-image:url('/_= layouts/images/general/app_detect_btn_hover.png?b=3D5567.4000');}.dvADTe= rmsOfUse{display:inline-block;font-size:1.1em;vertical-align:middle;}.dv= ADModalCenter{white-space:nowrap;}.dvADModalLeftPane{width:245px;min-hei= ght:490px;border-bottom:#d6d6d6 1px solid;display:inline-block;vertical-= align:top;}.dvADMyProductsHead{min-height:21px;line-height:21px;backgrou= nd-color:#eee;border-top:#e4e4e4 1px solid;border-bottom:#e4e4e4 1px sol= id;}.dvADMyProductsHeadText{margin:0 1.1em;font-weight:bold;font-size:1.= 2em;color:#454545;}.dvADMyProducts{font-size:1.1em;overflow:auto;overflo= w-x:visible;overflow-y:auto;height:468px;width:100%;background-color:#ff= f;}.dvADMyProductsActive{}.dvADMyProductsHover{background-color:#f4f9ff;= }.dvADModalPaneHeader{font-size:1.5em;margin:15px 3px 10px 15px;color:#a= 0a0a0;white-space:normal !important;}.dvADModalPaneDesc{font-size:1.1.em= ;margin:20px 3px 4px 15px;width:200px;white-space:normal !important;}.dv= ADModalPaneItem{font-size:1.1.em;margin:5px 3px 0px 5px;padding:4px 0px = 4px 10px;width:210px;display:block;white-space:normal !important;}A.dvAD= ModalPaneItem:hover{font-weight:bold;text-decoration:none;}A.dvADModalPa= neItem:visited{font-weight:normal;text-decoration:none;color:#4685df;}.d= vADModalPaneItemHover{padding:3px 0 3px 10px !important;border-top:#d6d6= d6 1px solid;border-bottom:#d6d6d6 1px solid;background-color:#f4f9ff;}.= dvADModalRightPane{display:inline-block;width:325px;min-height:490px;ver= tical-align:top;overflow:hidden;}.dvADModalRightPaneBlade{width:26px;hei= ght:491px;background-color:#eee;background-image:url('/_layouts/images/g= eneral/app_detect_blade_gb.png?b=3D5567.4000');background-repeat:repeat-= y;border-left:#d6d6d6 1px solid;border-bottom:#d6d6d6 1px solid;display:= inline-block;cursor:pointer;vertical-align:top;}.dvADModalBladeTop{max-h= eight:21px;width:100%;background-color:#eee;border-top:#e4e4e4 1px solid= ;border-bottom:#e4e4e4 1px solid;}.dvADModalBladeTop A{display:block;}.i= mgBladeTopArrow{border-width:0px;}.imgBladeSys{margin:10px 0 0 6px;}.dvA= DModalRightPaneContentParent{display:none;border-left:#d6d6d6 1px solid;= border-bottom:#d6d6d6 1px solid;vertical-align:top;overflow:hidden;width= :243px;}.dvADRightPaneContentHead{width:243px;background-color:#eee;bord= er-top:#e4e4e4 1px solid;border-bottom:#e4e4e4 1px solid;min-height:21px= ;line-height:21px;}.dvADRightPaneContentText{color:#454545;font-weight:b= old;font-size:1.2em;margin:0 1.1em;}.dvADRightPaneContent{width:243px;he= ight:468px;font-size:1.1em;overflow:auto;overflow-x:visible;overflow-y:a= uto;background-color:#fff;}.dvADRightPaneContentActive{}.dvADRightPaneCo= ntentHover{background-color:#f4f9ff;}.dvADModalRPaneHeader{font-size:1.5= em;color:#A0A0A0;margin:15px 3px 10px 15px;}.dvADModalRPaneItem{font-siz= e:1.1.em;margin:5px 3px 0px 5px;padding:4px 0px 4px 10px;width:208px;dis= play:block;font-weight:normal;}A.dvADModalRPaneItem:hover{font-weight:bo= ld;text-decoration:none;}A.dvADModalRPaneItem:visited{font-weight:normal= ;text-decoration:none;}.dvADModalRPaneItemDisabled{color:#c0c0c0;}.dvADM= odalBottomPane{clear:both;min-height:58px;background-color:#eee;}.dvADMo= dalBotPaneLeft{display:inline-block;width:300px;padding:10px;margin-top:= 5px;font-size:1.1em;}.dvADModalBotPaneRight{display:inline-block;width:2= 20px;padding:5px;margin-top:-10px;text-align:right;vertical-align:middle= ;}.layoutTableRightColumn{width:160px;}.layoutTableMainColumn{padding-ri= ght:40px;}.cdSearchResultsMargin{margin-left:11px;margin-right:20px;}tab= le#layoutTableNew{width:925px;}.divAppSelectModal{background-color:#ffff= dd;border:solid 2px Gray;height:auto;padding:8px;position:absolute;text-= align:left;width:804px;display:none;z-index:500001;}.divModalCover{backg= round-color:Gray;filter:alpha(opacity=3D50);opacity:0.5;-moz-opacity:0.5= ;left:0;position:absolute;top:0;display:none;z-index:50000;}.cdSearchRes= ultsHeading{color:#FF6633;}.cdSearchResultsRating{float:right;}.cdSearch= ResultsLinkText{color:rgb(120,120,120);}.cdTopContentTitleBold{font-weig= ht:bold;color:rgb(31,73,125);text-decoration:none;}.cdTopContentTitleBol= dAndUnderline{font-weight:bold;color:rgb(31,73,125);text-decoration:unde= rline;}.cdTopContentTitleNormal{font-weight:normal;color:rgb(31,73,125);= cursor:pointer;text-decoration:none;}.cdTopContentTitleNormal:hover{font= -weight:normal;color:rgb(31,73,125);cursor:pointer;text-decoration:under= line;}.cdTopContentSection{display:block;width:100%;margin-top:10px;marg= in-bottom:10px;}.cdLiveSearchSeeMore{vertical-align:80%;font-weight:bold= ;font-size:9pt;color:rgb(31,73,125);}.vbGlryDetail{width:150px;text-alig= n:center;}.vbGlryTtl{word-wrap:break-word;border:1px solid #fff;font-wei= ght:bold;width:125px;text-decoration:none;color:#0560A6;line-height:1.6;= overflow-y:hidden;overflow-x:visible;cursor:hand;}.vbGlryTtl:hover{text-= decoration:underline;}.vbGlryThmbnlCntr{position:relative;height:102px;}= a.aimg{position:relative;display:block;}a.aimg:hover{position:relative;z= -index:100;}a.aimg span{display:none;}a.aimg:hover span{display:block;po= sition:absolute;top:100%;left:0px;padding:5px;z-index:10000;background:#= f0f0f0;border:1px dotted #c0c0c0;opacity:0.9;text-align:left;width:200px= ;text-decoration:none;}.vbBOBTmpltImg{border:#cccccc 1px solid;width:140= px;height:100px;overflow:hidden;}.vbWrapping{white-space:pre-wrap;white-= space:-moz-pre-wrap !important;white-space:-pre-wrap;white-space:-o-pre-= wrap;word-wrap:break-word;}.vbCSCOverlayIcon{position:absolute;width:24p= x;height:24px;right:0px;top:56px;border-style:none;}.cdSeeSimilarHistory= {font-family:Arial,Sans-Serif;font-size:1.2em;position:relative;left:0px= ;top:590px;left:30px;z-index:1;width:100%;background-color:white;}.cdSee= SimilarHistoryLoading{color:#D8D8D8;}.CSLinkCoverPage{margin:0px;backgro= und-color:#FFFFFF;}.NormalItemTitle{font-size:120%;font-weight:bold;}.Bi= ggerItemTitle{font-size:167%;}.CSLinkHiliteText{color:#FF8C00;}.Disclaim= er{border:1px solid #CCCCCC;color:#999999;padding:4px 10px 4px 10px;marg= in:8px 0px 8px 0px;background-color:#F4F4F4;}.CSLinkSplitter{border-top-= style:solid;border-top-width:1px;border-top-color:#CCCCCC;border-bottom-= style:outset;border-bottom-width:1px;border-bottom-color:#CCCCCC;backgro= und-color:#F4F4F4;color:#BCD3FE;margin:0px;padding-top:1px;padding-botto= m:1px;padding-left:0px;padding-right:0px;font-size:1px;}.CSLinkSplitterO= uter{border-top-style:solid;border-top-width:1px;border-top-color:#0066F= F;border-bottom-style:solid;border-bottom-width:1px;border-bottom-color:= #2E559E;margin:0px;padding:0px;}.CSLinkSuggestions{font-size:1.2em;}.CSL= inkSugHeader{padding:2px 0px 5px 0px;border-bottom:1px dotted #888888;}.= CSLinkSugItem{padding:5px 0px 5px 0px;border-bottom:1px dotted #888888;}= .CSLinkSugFooter{padding:5px 0px 40px 0px;}.CSLinkRLink{text-align:right= ;vertical-align:top;}.cdFeedbackContainer{white-space:normal;}.cdFeedbac= kCharRemaining{color:eaeaea;}.cdFeedbackTextareaDiv{font-size:1.2em;}.cd= FeedbackError{color:#f00;}.cdFeedbackFloatRight{float:right;}.cdFeedback= SubmitButtonFloat{float:right;}.cdFeedbackLRMargin15{margin:0px 15px;}.c= dFeedbackLMargin15{margin-left:15px;}.cdFeedbackThankYou{color:#454545;f= ont-size:1.6em;margin:20px 0;}.cdFeedbackWrapper .cdFeedbackThankYou{mar= gin:0;text-align:center;}.cdFeedbackDivider{height:1px;width:450px;color= :#eaeaea;margin-top:20px;margin-bottom:20px;}.cdFeedbackSiteWideDivider1= {height:1px;width:100%;margin-top:10px;margin-bottom:15px;color:#eaeaea;= }.cdFeedbackSiteWideDivider2{height:1px;width:100%;margin-top:20px;margi= n-bottom:10px;color:#eaeaea;}.cdFeedbackSiteWide{width:450px;}.cdFeedbac= kTitle{color:#454545;font-size:1.6em;margin:10px 0 0 0;}.cdFeedbackWrapp= er .cdFeedbackTitle{margin:0;}.cdFeedbackText{margin-top:10px;color:#454= 545;font-size:1.2em;}.cdFeedbackDropDownDiv{padding-top:10px;}.cdFeedbac= kDropDown{font-size:1.1em;color:#333333;min-width:160px;margin-top:10px;= margin-bottom:10px;}.cdFeedbackTextarea{height:80px;margin-top:10px;colo= r:#454545;}.cdFeedbackButton{margin-right:15px;float:left;}.cdFeedbackBu= ttonGroup{margin-top:15px;display:inline-block;position:relative;}.cdFee= dbackSubmitButton{text-align:right;margin-top:15px;}.cdFeedbackStarImg{w= idth:16px;height:15px;vertical-align:top;}.cdFeedbackLegal{margin-top:10= px;color:#666666;}a.cdFeedbackLegalLink{color:#4585df}.cdFeedbackEmptySt= ars{background-image:url('/_layouts/images/rating/blue_star_empty.png?b=3D= 5567.4000');background-repeat:repeat-x;overflow:hidden;height:15px;line-= height:15px;float:left;}.cdFeedbackStarsText{vertical-align:top;display:= inline-block;padding-left:5px;padding-right:0px;}.cdFeedbackCheckbox,.cd= FeedbackRadio{vertical-align:middle;}.cdFeedbackInputLabel{vertical-alig= n:middle;}.cdFeedbackCheckboxDiv,.cdFeedbackRadioDiv{font-size:1.2em;mar= gin-top:10px;}.cdFeedbackStarsDiv{vertical-align:middle;white-space:nowr= ap;display:inline-block;}.cdReadOnlyStarsDiv{float:left;overflow:hidden;= vertical-align:middle;width:65px;}.cdReadOnlySelectedStarsDiv{overflow:h= idden;position:absolute;}.cdFeedbackEmptySelectedStars{background-image:= url('/_layouts/images/rating/orange_star_empty.png?b=3D5567.4000');backg= round-repeat:repeat-x;overflow:hidden;height:15px;line-height:15px;float= :left;}.cdFeedbackSelectedStars{background-image:url('/_layouts/images/r= ating/orange_star_filled.png?b=3D5567.4000');background-repeat:repeat-x;= overflow:hidden;float:left;}.cdFeedbackStars{margin:0px;padding:0px;floa= t:left;}.cdFeedbackCompressedStar{position:relative;display:inline-block= ;white-space:nowrap;}.cdFeedbackStarPadding{padding-bottom:15px;}.cdFeed= backSiteWideText{font-size:1.2em;color:#666;display:none;}.cdFeedbackAcc= ent{border:solid thin #EAEAEA;padding:0 15px;background-color:white;disp= lay:block;position:absolute;}.cdFeedbackWrapper{font-size:1em;margin:0 1= 5px;padding:15px 0;background-color:white;word-wrap:break-word;}.cdFeedb= ackSubtitle{color:#333333;font-size:1.2em;max-width:110px;}.cdFeedbackBu= ttonSpace{width:15px;display:inline-block;}.feedbackDiv{display:inline-b= lock;}.mpMainTitle{padding-left:15px;padding-bottom:14px;color:#666;font= -size:2.2em;font-weight:normal;line-height:1.1em;}div#clAssetArea{float:= left;width:560px;vertical-align:top;padding-left:20px;}div#clAdArea{floa= t:right;width:160px;margin-right:5px;padding:0px;vertical-align:top;}.mp= FilterItemBox{padding-bottom:10px;}.mpFilterLinkSelected{font-size:1.2em= ;color:#454545;font-weight:bold;}.mpFilterLinkNotSelected{font-size:1.2e= m;color:#4685df;}.mpFilterLinkNoItems{font-size:1.2em;font-weight:normal= ;color:#999999;}.mpFilterCounts{font-size:1.2em;color:#999999;}div#mpNav= Area{float:left;margin:0px;vertical-align:top;padding:11px 5px 0px 25px;= width:148px;}div#mpAssetArea{float:left;width:560px;padding:0px 0px 0px = 5px;border-top:solid 1px #eaeaea;}div#mpAdArea{float:right;width:160px;m= argin:0px 10px;padding:0px;}.mpAssetCell{width:100%;padding-bottom:25px;= }.mpAssetTable{width:100%;table-layout:fixed;}.mpCellThumbnail{width:116= px;vertical-align:middle;text-align:center;}.mpCellThumbnailVideo{width:= 130px;vertical-align:middle;text-align:center;}.mpImgThumbnail{max-width= :96px;max-height:96px;border:#cccccc 1px solid;overflow:hidden;}.mpImgTh= umbnailVideo{max-width:110px;max-height:80px;border:#cccccc 1px solid;ov= erflow:hidden;}.mpAssetDetails{width:100%;padding:0px 0px 0px 0px;}.mpAs= setDetailsVideo{width:100%;padding:0px 0px 0px 0px;}.alignBaseDirection{= text-align:left;}.mpItemTitle{width:444px;font-size:1.4em;text-align:lef= t;color:#4685df;white-space:nowrap;}.mpItemTitleLong{width:544px;font-si= ze:1.4em;text-align:left;color:#4685df;white-space:nowrap;}.mpDescriptio= n{width:444px;font-size:1.4em;color:#454545;white-space:nowrap;}.mpDescr= iptionLong{width:544px;font-size:1.4em;color:#454545;white-space:nowrap;= }.mpItemBox{font-size:1.2em;font-weight:normal;width:100%;color:#999999;= white-space:nowrap;}.mpVerticalSpaceLarge{height:10px;}.mpVerticalSpaceT= iny{height:2px;}.mpVerticalSpaceSmall{height:5px;}.mpHorizontalSpaceLarg= e{width:10px;}.mpHorizontalSpaceSmall{width:4px;}.mpHorizontalSpaceTiny{= width:2px;}.divSubmitLinksHeader{font-size:1.2em;display:block;padding-b= ottom:8px;}.divSubmitLinks{font-size:1.2em;display:block;color:#4685df;p= adding-bottom:5px;}.mpManageItem{padding-top:10px;font-size:1.2em;color:= #4685df;}.cdManageLink{font-size:1.2em;color:#4c9d30;}a.cdManageLink:vis= ited{color:#4c9d30;}.cdManageSubmittedFor{font-size:1.2em;color:#4685df;= }a.cdManageSubmittedFor:visited{color:#4685df;}.cdPropertyKey{color:#999= 999;}.cdPropertyValue{font-style:Arial,sans-serif;color:#454545;}.cdKeyw= ordValueShort{width:444px;}.cdKeywordValueLong{width:544px;}a.cdProperty= Value:visited{color:#454545;}.divSubmitMore{border-top:solid 1px gainsbo= ro;width:100%;padding-top:10px;}.spLearnMoreKey{font-size:1.2em;color:#4= 54545;}.spLearnMoreLink{font-size:1.2em;color:#4685df;}.ratingStyle{font= -weight:normal;}.pageControlsTable{border:0px;padding:16px 0px 16px 0px;= spacing:0px 0px 0px 0px;width:100%;}.pageControlItem{float:left;align:le= ft;}.pageControlItemAlign{float:right;align:right;}div#cdProviderSubLink= s{font-size:1.2em;}.cdProfBadgeDesc{margin:3px 0 5px 0;}.cdProfActionLin= k{margin-bottom:5px;}.cdProviderPref{font-size:1.2em;margin:25px 0;}.cdH= PRowTable{width:940px;clear:both;display:none;}.wholelayout{width:940px;= margin:0px 10px;overflow-y:hidden;}.cdHPLayoutLeftMargin{margin:0px 0px = 0px 20px;}.cdHPZeroTopMargin{margin-top:0px;}.cdHPZoneWholeRow{width:940= px;min-height:20px;}.cdHPZoneOneThird{float:left;width:300px;min-height:= 20px;}.cdHPZoneHalf{float:left;width:460px;min-height:20px;}.cdHPZoneTwo= Thirds{float:left;width:620px;min-height:20px;}.cdHomepageStyleContainer= {clear:both;}.cdStyleAnchor{color:#999999;font-size:2.3em;text-decoratio= n:none;width:auto;}.cdMediaWPSubTitle,.cdTextWPSubTitle{color:#666666;fo= nt-size:1.4em;padding-top:10px;width:100%;}.cdOOHomepageWpDivBorder{bord= er:1px solid #CCCCCC;}.cdHomepageWpAllDiv{overflow:auto;overflow-y:auto = !important;overflow-x:hidden !important;}.cdHomepageTopMargin{margin-top= :15px;}.cdHomepageWpTitleDiv{padding:15px 15px 0 15px;}.cdHomepageWpCont= entDiv{color:#454545;font-size:1.2em;line-height:1.5em;overflow:hidden;}= .cdOOHomepageWpContentDivPadding{padding:0 15px 15px 15px;}.cdOOHomePage= UL{list-style-image:url('/_layouts/images/general/bullet.png?b=3D5567.40= 00');}.cdOOHomePageUL li{padding-left:2px;padding-right:10px;padding-bot= tom:0px;padding-top:0px;}.cdOOHomePageOL{list-style-type:decimal;list-st= yle-position:outside;margin:0 0 0 13px;padding-left:15px;padding-right:1= 0px;}.cdOOHomepageTextImage{float:left;height:96px;margin-right:10px;mar= gin-top:15px;width:96px;}.cdOOHomepageTextFloatLeft{float:left;margin-to= p:15px;width:100%;}.cdOOHomepageTextWPCol{float:left;overflow-x:hidden;}= .OOHomepageMediaContent{}.cdOOHomepageMediaDiv{float:left;margin-right:1= 0px;margin-top:15px;text-align:center;}.cdOOHomepageMediaDivMargin{}.cdO= OHomepageMediaThumbDiv{align:center;height:125px;line-height:125px;width= :125px;}.cdOOHomepageHoverDiv{background-color:white;border:1px solid or= ange;display:none;position:absolute;width:278px;}.cdOOHomepageMediaMC{bo= rder:0px;max-height:96px;max-width:96px;vertical-align:middle;}.cdOOHome= pageMediaTC{border:0px;max-height:120px;max-width:120px;vertical-align:m= iddle;}.cdOOHomepageMediaVA{border:0px;max-height:80px;max-width:110px;v= ertical-align:middle;}.cdOOHomepageMediaMeta{float:left;margin-left:0px;= margin-right:0px;width:152px;}.cdOOHomepageMediaMetaDataBold{color:#4545= 45;font-size:1.0em;margin:15px 5px 10px 5px;}.cdOOHomepageMediaMetaData{= color:#999999;font-size:0.9em;margin:0 5px;}.cdOOHomepageSingleClip{back= ground-color:transparent;border:0px solid gray;display:block;position:st= atic;}.cdOOHomepageMediaContent{min-height:20px;overflow-x:hidden;overfl= ow-y:auto;width:100%;}.cdHPPagingSpans{display:inline-block;vertical-ali= gn:top;}.cdOOHomepageOneClipRow{overflow:hidden;clear:both;padding-left:= 15px;padding-right:0px;}.cdRsswpTitleAnchorDiv{float:left;}.cdOOHomepage= FeedImage{float:left;width:96px;height:96px;margin-top:15px;}.cdOOHomepa= geRssImage{float:right;width:25px;}.cdOOHomepageRssImageBorder{border:0p= x;}.cdOOHomepageFeedDiv{float:left;margin-top:15px;}.cdOOHomepageSLObjec= t{position:relative;z-index:0;}.cdOOHomepageSLText{text-decoration:none;= }.cdOOHomepageSLImage{border-style:none;}.cdOOHomepageWpLayerBorder{bord= er:1px solid #CCCCCC;border-top-width:0px;}.cdLayerTopDiv{background-col= or:#F1F1F1;height:7px;margin-top:15px;}.cdHPRowTableRowCol{}.cdHPRowTabl= eRow{text-align:left;}.cdStandAlone{clear:both;overflow:auto;overflow-y:= auto !important;overflow-x:hidden !important;}.cdTabTitleContainer{backg= round-image:url('/_layouts/images/homepage/tab_bg.jpg?b=3D5567.4000');ba= ckground-repeat:repeat-x;height:30px;padding:0 20px 0 20px;}.cdTabTitleC= ommon{color:#666666;float:left;font-size:1.15em;height:30px;line-height:= 30px;min-width:20px;padding:0 20px;text-decoration:none;width:auto;}.cdT= abTitleActive{background-image:url('/_layouts/images/homepage/tab_center= .jpg?b=3D5567.4000');background-repeat:repeat-x;font-weight:bold;}.cdLay= erTabContent{clear:both;overflow:auto;overflow-y:auto !important;overflo= w-x:hidden !important;width:auto;}.cdStackTitleCommon{background-image:u= rl('/_layouts/images/homepage/tab_bg.jpg?b=3D5567.4000');background-repe= at:repeat-x;clear:both;color:#666666;font-size:1.4em;height:30px;line-he= ight:30px;padding:0 0 0 20px;text-decoration:none;width:auto;}.cdStackTi= tleActive{background-image:url('/_layouts/images/homepage/tab_bg_2.jpg?b= =3D5567.4000');background-repeat:repeat-x;font-weight:bold;}.cdStackTabC= ontent{clear:both;overflow:auto;overflow-y:hidden !important;overflow-x:= hidden !important;width:auto;}.cdPreviousButton{margin-right:7px;}.cdNex= tButton{margin-left:7px;}.cdOOHomepageMoreLink{clear:both;text-align:rig= ht;}.cdOOHomepageMoreControl{clear:both;padding-right:0px;text-align:rig= ht;}.cdOOHomepagePaging{clear:both;overflow-x:hidden;overflow-y:auto;}.c= dOOHomepageFloatRight{float:right;}.cdOOHomepageNoBorder{border-width:0p= x;}.ancCSATBtn{min-width:140px;height:31px;line-height:31px;display:inli= ne-block;margin:10px auto 25px 25px;background-image:url('/_layouts/imag= es/general/tmpl_pv_download.png?b=3D5567.4000');background-repeat:repeat= -x;text-align:center;text-transform:capitalize;color:white;font-size:1.4= em;font-weight:bold;vertical-align:middle;border:solid 1px #3B8109;text-= shadow:1px 1px 2px #444;box-shadow:3px 3px 5px #888;-moz-box-shadow:3px = 3px 5px #888;-webkit-box-shadow:3px 3px 5px #888;border-radius:5px;-moz-= border-radius:5px;-webkit-border-radius:5px;}.ancCSATBtn:hover{text-deco= ration:none;}.ancCSATBtnMouseOver{background-image:url('/_layouts/images= /general/tmpl_pv_download_hover.png?b=3D5567.4000');}.ancCSATBtnMouseDow= n{background-image:url('/_layouts/images/general/tmpl_pv_download_click.= png?b=3D5567.4000');}.ancCSATBtn:visited{color:white;}a.cdBtn{color:#252= 525;text-decoration:none;cursor:default;line-height:22px;height:22px;dis= play:inline-block;outline:none;white-space:nowrap;display:inline-block;}= a.cdBtnDisabled{color:#999 !important;}.cdBtn div{float:left;text-decora= tion:none;line-height:22px;height:22px;cursor:default;}.cdBtn a:hover{te= xt-decoration:none;}.cdBtnDisable div{color:#999999;text-decoration:none= ;line-height:22px;height:22px;cursor:default;}.cdBtnL{width:3px;backgrou= nd:url('/_layouts/images/general/button_left_side.png?b=3D5567.4000') no= -repeat;}.cdBtnM{font-size:1.2em;padding-left:11px;padding-right:11px;te= xt-align:center;white-space:nowrap;background:url('/_layouts/images/gene= ral/button_middle.png?b=3D5567.4000') repeat-x;}.cdBtnR{width:3px;backgr= ound:url('/_layouts/images/general/button_right_side.png?b=3D5567.4000')= no-repeat;}.cdBtnLFoc,.cdBtnLHover{background:url('/_layouts/images/gen= eral/button_left_side_hover.png?b=3D5567.4000') !important;}.cdBtnMFoc,.= cdBtnMHover{background:url('/_layouts/images/general/button_middle_hover= .png?b=3D5567.4000') repeat-x !important;}.cdBtnRFoc,.cdBtnRHover{backgr= ound:url('/_layouts/images/general/button_right_side_hover.png?b=3D5567.= 4000') !important;}.cdEditorialtaggingPaging{float:left;}.cdEditorialtag= gingDesc{float:right;}.cdOneAssetDetail{float:left;}.cdETPagingDiv{float= :right;}.cdTopResultsThumbnailWidth{width:125px;}.cdDialog,.cdModalDialo= g{cursor:default;background:#fff;border:1px solid #000;padding:15px;widt= h:300px;position:absolute;text-align:left;}.cdDialog{z-index:1000;}.cdMo= dalDialog{z-index:10001;}.cdDialogError{border:1px solid #f30 !important= ;}.cdDialogContent{white-space:normal !important;font-size:1.2em;line-he= ight:1.4em;color:#454545;position:relative;z-index:1;}.cdDialogContent a= ,.cdDialog a:visited{text-decoration:none;color:#0560A6;}.cdDialogConten= tDisabled a{color:#999;}.cdDialogContent a:hover{text-decoration:underli= ne;}div.cdBios{margin:0 0 20px 0;}div.cdBio{font-size:1.2em;margin:0 0 2= 0px 0;}div.cdBio a:link{color:#4685df;}a.cdBioImage{height:40px;width:40= px;border:solid 1px #ccc;margin:0 10px 0 0;display:inline-block;}img.cdB= ioImage{height:40px;width:40px;-ms-interpolation-mode:bicubic;}span.cdBi= oWide{display:inline-block;width:485px;margin-top:2px;vertical-align:top= ;min-height:40px;}div.cdBioWide p{width:485px;}span.cdBioNarrow{display:= inline-block;width:310px;margin-top:2px;vertical-align:top;min-height:40= px;}div.cdBioNarrow p{width:325px;}span.cdBioMini{display:inline-block;v= ertical-align:top;width:175px;}div.cdBioMini p{width:175px;}p.cdBioDispl= ayName{margin:-3px 0 1px;}p.cdBioDisplayName a{display:inline-block;marg= in:0 4px 0 0;padding:0 4px 0 0;border-right:solid 1px #888;}p.cdBioDispl= ayName span.cdBioProfileType{color:#999;}p.cdBioMiniDisplayName{margin:-= 3px 0 -10px;}p.cdBioProfileType{color:#999;margin-bottom:2px;}p.cdBioDes= cription,p.cdBioMiniDescription{line-height:1.1em;color:#454545;margin:0= 0 -6px;}p.cdBioViewMore{}.cdErrorPageWrapper{padding:0px 15px 0px 15px}= .cdEMFeedbackDiv{margin:18px 0px;border-top:1px solid #EAEAEA;border-bot= tom:1px solid #EAEAEA;padding-bottom:18px;}.cdEMPreviewWrapper{padding:0= px 20px 0px 35px;width:595px;overflow:hidden;float:left;}.cdEMPPreviewMa= inTitle{margin:0px 0px 0px 0px;}div.cdEMPreviewListingTitle h1{padding:1= 0px 0px 10px 0px;}.cdEMPreviewDetailLabel{vertical-align:top;width:120px= ;text-overflow:ellipsis;display:inline-block;color:#333333;font-size:1.2= em;}.cdEMPreviewDetailValue{vertical-align:top;width:470px;display:inlin= e-block;color:#454545;font-size:1.2em;}.cdEMPreviewSectionLabel{color:#3= 33333;font-size:1.6em;}.cdEMPreviewDetailLabelMargin{margin:0px 0px 5px = 0px;}.cdEMPreviewDetailRow{margin:11px 0px 0px 0px;}.cdEMPPreviewShortDe= sc{margin:20px 0px 0px 0px;}.cdEMPreviewDesc{margin:11px 0px 0px 0px;col= or:#454545;font-size:1.2em;}.cdEMPreviewHR{width:100%;color:#eaeaea;heig= ht:1px;}.cdEMPreviewOMPDescription{margin:12px 0px 0px 0px;color:#999999= ;font-size:1.0em;text-align:left;}.cdEMPreviewOMPDescPipe{color:#cccccc;= padding:0pt 10pt 0pt 4pt;}.cdEMPreviewListingTitle{color:#454545;}.cdEMP= reviewListingExternalURL{font-size:1.6em;text-align:center;margin:16px 0= px 30px 0px;}a#cdEMPreviewExternalUrlArror:hover{text-decoration:none;}.= cdOMPAffidavit{overflow:auto;width:auto;height:200px;margin:20px 0px 20p= x 0px;padding:0px 10px 0px 10px;border:solid 1px #f2f2f2;}.cdOMPSubmissi= onFormWrapper{padding:0px 10px 0px 15px;}.cdOMPSubmissionFormLabel{color= :#454545;font-size:1.2em;font-weight:bold;padding:25px 0px 6px 0px;margi= n:0px 0px 0px 0px;}.cdOMPSubmissionFormInputField{width:610px;line-heigh= t:1.2em;border:1px solid #CCCCCC;background-color:#FFFFFF;font-size:1.2e= m;text-align:left;}.cdOMPSubmissionFormChkboxInput{background-color:#FFF= FFF;font-size:1.2em;text-align:left;cell-padding:4px;}.cdOMPSubmissionBu= tton{margin:10px 0px 0px 10px;color:#454545;text-align:center;vertical-a= lign:middle;font-size:1.2em;}.cdOMPSubmissionButtonLeft{float:left;}.cdO= MPSubmissionButtonRight{float:right;}.cdOMPSubmissionFormInputWide{width= :610px;}.cdOMPSubmissionFormInputNarrow{width:400px;}.cdOMPSubmissionFor= mCharCounter{float:right;}.cdTouAgreementTextBold{font-weight:bold;}span= .cdChkBoxCellPadding{padding:0px 160px 0px 0px;}.cdMPOtherPageWrapper{pa= dding:0px 15px 0px 15px}.cdMPInstructionText{font-size:1.2em;}#cdMarketp= laceBody{padding-top:0px;}div.cdSearchFilters{font-size:1.2em;line-heigh= t:1.3em;color:#595959;}div.cdSearchFilters div.cdSearchFilters{font-size= :100%;}div.cdSearchFilterItem{margin-bottom:5px;}div.cdSearchFilterItem = img{height:9px;width:9px;margin:0;cursor:pointer;vertical-align:top;marg= in-top:3.5px;}.cdSearchFilterHasExpndo{margin-left:3px;max-width:138px;}= .cdSearchFilterNoExpndo{margin-left:12px;}div.cdSearchFilterItem > div.c= dSearchFilters{display:none;margin-left:9px;margin-top:6px;}div.cdSearch= FilterItem > a,div.cdSearchFilterItem > span{display:inline-block;}div.c= dSearchFilterExpanded > div.cdSearchFilters{display:block;}div.cdSearchF= ilters a:link,div.cdSearchFilters a:visited,div.cdSearchFilters a:active= ,div.cdSearchFilters span{color:#4685df;}div.cdSearchFilters a:hover,div= .cdSearchFilters span:hover{color:#4685df;text-decoration:underline;}.cd= SearchFilterSelected{font-weight:bold !important;color:#454545 !importan= t;}div.cdSearchFilters .cdSearchFilterDisabled,div.cdSearchFilters .cdSe= archFilterDisabled:link,div.cdSearchFilters .cdSearchFilterDisabled:visi= ted,div.cdSearchFilters .cdSearchFilterDisabled:active,div.cdSearchFilte= rs .cdSearchFilterDisabled:hover{color:#454545;text-decoration:none;}.cd= SearchFilterItemMore{font-size:.83em;margin:6px 0 0 12px;}div.cdSearchFi= lters a.cdSearchFilterItemMoreLink:link,div.cdSearchFilters a.cdSearchFi= lterItemMoreLink:visited,div.cdSearchFilters a.cdSearchFilterItemMoreLin= k:active,div.cdSearchFilters a.cdSearchFilterItemMoreLink:hover{color:#4= 685df;}.cdSearchResults{margin:0 10px 10px 10px;}.cdSearchRightNav{float= :left;padding:0;width:160px;}.cdSearchLeftNav{float:left;padding:33px 5p= x 0 5px;width:150px;}.cdSearchResultsArea{float:left;margin:0 10px 0 10p= x;padding:0 5px 0 5px;width:590px;}.cdSearchResults h2{font-size:2em;col= or:#454545;margin:0 0 10px 4px;font-weight:normal;}.cdSearchTermHighligh= t{color:#4685df;font-weight:bold;}.cdSearchFilterLink,.cdSearchFilterLin= k:link,.cdSearchFilterLink:visited,.cdSearchFilterLink:active,.cdSearchF= ilterLink:hover{display:block;clear:both;padding-left:12px;margin-top:12= px;font-size:1.2em;color:#4685df;}.cdSearchLeftNav hr{border:0;display:b= lock;clear:both;color:#eaeaea;background-color:#eaeaea;height:1px;margin= :16px 0 12px 0;}.cdSearchFilterDisplay{border-top:solid 1px #eaeaea;bord= er-bottom:solid 1px #eaeaea;color:#999;font-size:1.2em;min-height:20px;p= adding:0 3px;white-space:nowrap;margin-bottom:10px;}.cdSearchFilterSumma= ry{display:inline-block;margin-top:2px;overflow:hidden;text-overflow:ell= ipsis;-o-text-overflow:ellipsis;white-space:nowrap;}.cdSearchTopPaging{m= argin-bottom:10px;text-align:right;}.cdSearchBottomPaging{text-align:cen= ter;margin:30px 0 10px 0;}.cdSearchBlueLines{margin:0 0 38px 0;}.cdSearc= hBlueLine{margin:0;padding:4px 4px 12px 4px;width:582px;background:none;= border-top:1px solid transparent;border-bottom:1px solid transparent;}.c= dSearchBlueLineHover{border-top:1px solid #C6DDFF;border-bottom:1px soli= d #C6DDFF;background-image:url('/_layouts/images/general/hl_fill.png?b=3D= 5567.4000');background-repeat:repeat-x;background-position:bottom left;}= .cdSearchBlueLine > .cdSearchBlueLineHoverAdd{height:20px;line-height:20= px;overflow:hidden;background-image:url('/_layouts/images/general/action= _bar.png?b=3D5567.4000');background-repeat:no-repeat;background-position= :bottom right;position:absolute;z-index:1000;top:-1000px;margin:0;text-a= lign:right;}.cdSearchBlueLineHoverAdd > a{margin:0 10px 0 0;}.cdSearchBl= ueLine > h3{font-weight:normal;font-size:1.4em;line-height:1.4em;overflo= w-x:hidden;text-overflow:ellipsis;white-space:nowrap;margin:0 0 3px 0;pa= dding:0;}.cdSearchBlueLine > h3 > strong{font-weight:bold;}.cdSearchBlue= Line > div{font-size:1.2em;line-height:1.4em;color:#454545;margin:0 0 0 = 10px;padding:0;}.cdSearchBlueLine > div p{margin:0;padding:0;}.cdSearchB= lueLine .cdSearchInlineLabel{font-weight:normal;font-style:normal;color:= #999;margin:0 2px 0 0;padding:0 4px 0 0;border:0;border-right:solid 1px = #bebdbd;}.cdSearchBlueLine .cdSearchInlineLabelNoLine{border:0;}.cdSearc= hBlueLine .cdSearchBlueLineLabel{font-weight:inherit;font-style:inherit;= color:#999;}.cdSearchBlueLineRating{font-size:1em;color:#999;line-height= :1.3em;margin-top:2px;}.cdSearchBlueLineRating div{display:inline;vertic= al-align:middle;padding-right:3px;}.csSearchBlueLineCCLabel{font-size:1.= 2em;line-height:1.4em;color:#666;}.cdSearchNoResults{margin:28px 0 0 0;}= .cdSearchNoResults h3{font-size:1.6em;font-weight:normal;color:#999;marg= in:0 0 14px 0;clear:both;}.cdSearchNoResults h4{font-size:1.8em;font-wei= ght:normal;margin:0 0 28px 0;clear:both;}.cdSearchNoResultsFilters{margi= n:0 0 15px 31px;}.cdSearchNoResultsFilterValues{color:#454545;}.cdSearch= NoResultsFilters h5{font-size:1.4em;font-weight:normal;color:#333;margin= :0 0 8px 0;clear:both;}.cdSearchNoResultsFilterBlock{display:block;float= :left;margin:0 20px 0 0;}.cdSearchNoResultsFilters p{font-size:1.2em;lin= e-height:1.4em;color:#454545;margin:0;padding:0;}.cdSearchNoResultsFilte= rValues{font-weight:bold;}.cdSearchNoResults hr{background-color:#eaeaea= ;border:0 none;clear:both;color:#eaeaea;display:block;height:1px;margin:= 16px 0 16px;}.cdSearchNoResults > p,.cdSearchNoResults > ul{font-size:1.= 2em;}.cdSearchNoResults > ul > li{list-style-image:url('/_layouts/images= /general/bullet.png?b=3D5567.4000');}.cdSearchTeaser{margin:0 0 15px 15p= x;}.cdSearchTeaser h3{font-size:1.4em;font-weight:normal;color:#999;padd= ing:0;margin:0 0 10px 0;}.cdSearchTeaserMore{font-size:.714em;font-weigh= t:normal;margin:0 0 0 12px;}.cdSearchTeaserContainer{display:block;float= :left;margin:0 20px 0 0;}.cdSearchTeaserItem{display:block;cursor:pointe= r;padding:1px;color:#666;text-decoration:none;width:123px;height:123px;l= ine-height:123px;text-align:center;}.cdSearchTeaserItemLast{margin-right= :0;}.cdSearchTeaserItem:hover{border:#CCC 1px solid;padding:0;color:#666= ;text-decoration:none;}.cdSearchTeaserItem:visited{color:#666;text-decor= ation:none;}.cdSearchTeaserItemInside{margin:0;display:inline-block;text= -align:center;}.cdSearchTeaserItemImage{border:none;display:inline-block= ;margin:auto;padding:0;max-width:96px;max-height:96px;vertical-align:mid= dle;}.cdSearchTeaserTemplate .cdSearchTeaserItemImage{border:1px solid #= eee;}.cdSearchTeaserItemTitle{margin:2px 0 0 0;width:125px;padding:0;fon= t-size:1.2em;line-height:1.2em;text-align:center;}.cdSearchTeaserItemDes= c{margin:2px 0 0 0;width:125px;padding:0;color:#999;line-height:1.1em;fo= nt-size:1.1em;text-align:center;}.cdSearchTeaserClipart .cdSearchTeaserI= temTitle{text-align:center;}.cdSearchTeaserItemFresh{width:123px;height:= 1.0em;text-align:center;color:#d8370b;font-size:1.2em;margin:0;}.cdSearc= hTeaser .spnThumbFooter{line-height:1.1em;padding-top:2px;display:block;= min-height:13px;color:#d8370b;}.cdSearchTeaserTemplate .imgThumb{border:= 1px solid #eee;}.cdSearchTeaser{font-size:1em;}.cdEllipsis,.cdNoWrap{whi= te-space:nowrap;overflow:hidden;}.cdEllipsis{text-overflow:ellipsis;-o-t= ext-overflow:ellipsis;}@-moz-document url-prefix(){.cdEllipsis{position:= relative;}a.cdEllipsis,span.cdEllipsis{width:100%;}.cdEllipsis > a.cdEll= ipsis,.cdEllipsis > span.cdEllipsis{display:inline-block;}.cdEllipsis:be= fore{display:inline-block;top:0;height:1.5em;width:1.4em;content:" ";pos= ition:absolute;right:0;background:-moz-linear-gradient(0deg,rgba(255,255= ,255,0),white);}}.cdStaticRating{display:block;width:70px;height:13px;pa= dding:0;margin:0;}.cdStaticRating img{height:13px;width:13px;padding:0;m= argin:0 1px 0 0;}.cdSearchBluelineWithThumbnail{margin:0 0 20px;padding:= 4px;width:560px;background:none;}.cdSearchBluelineWithThumbnail:hover{ba= ckground-image:url('/_layouts/images/general/ad_bg.png?b=3D5567.4000');}= .cdSearchTeaserBluelineThumbnail{display:block;float:left;margin:3px 15p= x 0 5px;cursor:pointer;color:#666;width:123px;height:97px;border:#ccc 1p= x solid;padding:0;text-decoration:none;background-color:#fff;}.cdSearchB= luelineThumbnailInside{margin:8px 0 0px 8px;display:inline-block;line-he= ight:78px;}.cdSearchBluelineThumbnailImage{border-width:0;display:inline= -block;margin:auto;padding:0;max-width:109px;max-height:78px;vertical-al= ign:middle;}.cdSearchBluelineWithThumbnail .cdSearchBlueLine{padding:0px= ;display:block;float:left;width:415px;background:none;}.cdSearchBlueline= WithThumbnail .cdSearchBlueLine:hover{background:none;}.cdSearchBlueline= WithThumbnail .cdSearchBlueLine > div{margin:0;}div#cdSearchMlAd{margin:= 0 0 15px 0;}a.cdSearchContentLink{position:absolute;left:0px;top:-500px;= width:1px;height:1px;overflow:hidden;}a#cdSearchContent{float:right;visi= bility:hidden;width:1px;height:1px;overflow:hidden;}.cdMetricsImage{bord= er:0;margin:0;float:right;visibility:hidden;width:1px;height:1px;overflo= w:hidden;}.cdKeywordSpinner{float:left;position:absolute;display:none;pa= dding:9px 20px 8px 37px;background-color:#FFFFFF;background-position:5px= 3px;background-image:url('/_layouts/images/submissions/load_spinner_24x= 24.gif?b=3D5567.4000');background-repeat:no-repeat;border:1px solid #999= 999;}.cdUploadSpinner{font-size:1.4em;width:40%;text-align:center;float:= left;position:absolute;display:none;padding-top:60px;padding-bottom:9px;= padding-right:9px;padding-left:9px;background-color:#FFFFFF;background-i= mage:url('/_layouts/images/submissions/load_spinner_48x48.gif?b=3D5567.4= 000');background-repeat:no-repeat;background-position:50% 10%;border:1px= solid #999999;}.contestVoteBox{width:98%;padding:5px;border:1px solid #= CCCCCC;background-color:#f2f2f2;}.contestVoteTable{width:100%;}.contestS= ubBox{width:98%;padding:5px;}.fsPartBox{margin:0px 0px 0px 0px;padding:0= px 5px 5px 5px;width:285px;overflow:hidden;border:solid 1px #CCCCCC;}.fs= SectionHeading{font-size:1.4em;color:#333333;margin:5px 0px 10px 0px;}.f= sPictureBox{width:96px;height:96px;border:1px solid #CCCCCC;text-align:c= enter;padding:3px;vertical-align:top;}.fsAssetSection{font-size:1.2em;ma= rgin:0px 0px 16px 0px;}.fsContestSection{font-size:1.2em;border-top:1px = dotted #CCCCCC;margin:0px 0px 16px 0px;}img.fsPicture{border-style:none;= }.fstable{padding:2px;vertical-align:top;}.statisticsPartBox{margin:0;pa= dding:0px 0px 5px 0px;width:285px;overflow:hidden;}.statisticsLayout{lis= t-style-type:disc;padding:0;margin:0px;font-size:1.2em;}#divCSStatsRatin= gContainer{float:left;}.statBullet{padding:4px;}.statBulletCorrect{paddi= ng:0px 4px 0px 4px;float:left;}.divStatBullet{padding:2px;vertical-align= :bottom;}.divStatBulletCorrect{padding:2px;vertical-align:bottom;}.cdSee= Also{background-image:url('/_layouts/images/general/vert_rule.png?b=3D55= 67.4000');background-repeat:no-repeat;padding-left:15px;}.cdSeeAlso h4{f= ont-size:1.6em;font-weight:normal;color:#333;margin:0 0 10px 0;padding:0= ;}.cdSeeAlso ul{color:#5381c2;margin:0;padding:0;}.cdSeeAlso ul li{font-= size:1.2em;list-style-type:none;margin:0 0 10px 0;}.cdSeeAlso ul li a{di= splay:inline-block;}.cdSeeAlso ul li.cdSeeAlsoExtraLink{margin:20px 0 10= px 0;text-align:right;}.cdSeeAlso ul li.cdSeeAlsoExtraLink a{color:#999;= }.cdSeeAlsoMore,.cdSeeAlsoMoreBorder{margin:0 0 0 10px;padding:0 0 0 10p= x;}.cdSeeAlsoMoreBorder{border-left:1px solid #4685df;}div.cdSeeAlsoWrap= per{margin:0 10px;padding:10px 0;}.cdSeeAlsoHeader{padding:0 0 0 10px;}.= cdSeeAlsoType{color:#999;padding:0 5px 0 0;margin:0 5px 0 0;border-right= :solid 1px #999;}.cdSeeAlsoProviders{color:#999;}.cdSeeAlsoDescription{b= order-top:solid 1px #eaeaea;margin:8px 0 0 0;padding:10px;}.cdSeeAlsoPro= mpt{color:#999;font-size:1.2em;}.cdSeeAlsoDescriptionText{color:#454545;= font-size:1.2em;line-height:1.55em;}.cdSeeAlsoDescriptionText:first-line= {color:#454545;font-weight:700;font-size:1.0833em;}@media print{.dvActio= nBar{display:none;}div#cdtabarea,form#frmSearch div,img#cdbinglogo,div#c= dtopnavlinks,div#cdCntTop,div#cdfooterlinks{display:none;}div#cdnavconta= iner,div#cdCntPane,div#cdofooter,div#cdmicrosoftfooterlink{width:975px;p= adding:0;margin:0;}div#cdCntPaneTop{margin:0 0 0 25px;}div#cdlogo{float:= right;}div#cdnavcontainer cdclr{clear:none;display:none;}div#cdofooter{c= lear:both;}div#cdmicrosoftfooterlink span{width:auto;}}.cdLexiconDisclai= mer{border:1px solid #cccccc;padding:7px 10px 7px 10px;color:#999999;fon= t-size:1.1em;margin-left:12px;}.cdLexiconDescHdr{font-size:1.6em;color:#= 333333;padding-top:25px;padding-bottom:0px;}.cdLexiconDesc{font-size:1.2= em;color:#454545;padding-top:11px;padding-bottom:0px;}.cdLexiconMetaHdr{= font-size:1.6em;color:#333333;padding-right:0px;padding-left:15px;paddin= g-bottom:16px;}.cdLexiconMetaLbl{vertical-align:top;font-size:1.2em;colo= r:#333333;display:inline-block;padding-left:15px;padding-bottom:11px;}.c= dLexiconMeta{vertical-align:top;font-size:1.2em;color:#454545;padding-le= ft:20px;padding-bottom:11px;}.cdLexiconRatingsMeta{vertical-align:top;fo= nt:1.0em 'Arial';color:#999;padding-left:20px;padding-bottom:11px;}.cdLe= xiconFeedback{margin-top:16px;margin-bottom:0px;display:block;}.hrLexico= nProvider{height:1px;width:560px;color:#eaeaea;background-color:#eaeaea;= border:none;margin-top:20px;margin-bottom:0px;}.cdLexiconProviderHdr{fon= t-size:1.6em;color:#333333;padding-top:16px;padding-bottom:10px;}.cdLexi= conSubmissionDropDown{font-size:1.0em;font-weight:normal;width:240px;hei= ght:22px;}.cdLexiconSubmissionFirstOption{font-size:1.0em;font-weight:no= rmal;padding-top:2px;padding-right:0px;padding-bottom:0px;padding-left:0= px;}.cdLexiconSubmissionNextOption{font-size:1.0em;font-weight:normal;pa= dding-top:6px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.cd= LexiconSubmissionTOU{margin-top:10px;} ------------AwZAEu8L0Fx8UXBllPLKFH Content-Disposition: inline; filename=article.css Content-Type: text/css; name=article.css Content-Location: http://officeimg.vo.msecnd.net/_layouts/article.css?b=5567%2E4000 Content-Transfer-Encoding: Quoted-Printable .ACICollapsed{display:none;}.ACECollapsed{display:none;}div#divShowAll{f= loat:right;padding:0;height:0;width:0;overflow:hidden;}div.cdExpandoLink= #divShowAll,div#divHideAll{float:right;padding:0 0 12px 12px;height:auto= ;width:auto;overflow:inherit;}div#divHideAll{display:none;}div.cdArticle= Wrapper{padding:0 12px 0 10px;}div.cdArticle{width:622px;float:left;}div= .cdArticleFooterBlock{font-size:1.2em;margin:15px auto;}div.cdArticleEdi= torialBlock{border-top:1px solid #eaeaea;}div.cdArticleProviderBlock{pad= ding-top:15px;border-top:1px solid #eaeaea;}h1.cdTitleEx{margin:0 0 18px= 0;}div.cdArticleBody > h2,div.cdArticleProviderBlock > h2{font-size:2em= ;line-height:1.2em;color:#333;font-weight:normal;margin:0 0 14px 0;}div.= cdArticleBody > h3,div.cdArticleProviderBlock > h3{font-size:1.8em;line-= height:1.1em;color:#333;font-weight:normal;margin:0 0 12px 0;}div.cdArti= cleBody > h4,div.cdArticleProviderBlock > h4{font-size:1.6em;line-height= :1.6em;color:#454545;font-weight:normal;margin:0 0 12px 0;}div.cdArticle= Head{margin:0 0 19px 2px;}div.cdArticleHead h1{margin-bottom:0;}p.cdAppl= iesToEx{font-size:1.1em;color:#999;margin:0 0 12px 0;}p.cdAppliesToEx a{= color:#999;}p.cdArticleDescription{font-size:1.6em;line-height:22px;colo= r:#454545;margin:0;}div.cdArticle .dvActionBar{margin:25px 5px 15px 0;}d= iv.cdArticleLeft{margin:35px 0 0 2px;}div.cdArticleLeftMargin{position:r= elative;margin:0 0 10px 0;width:150px;float:left;}div.cdArticleBody{widt= h:450px;float:right;}div.cdVidArticleBody > .cdArticleBody{width:640px;}= div.cdArticleText img{visibility:hidden;}img.cdArticleResizedImage{-ms-i= nterpolation-mode:bicubic;}div.cdImageWrapper{margin:0;padding:0;}div.cd= Article #feedbackDiv{margin:0 0 20px 0;padding:5px 0 0 0;border-top:1px = solid #eaeaea;}div.cdArticleBioCard{min-height:60px;margin:0 0 12px 0;}u= l.cdArticleSeries{font-size:1.2em;line-height:1.3em;list-style:none;marg= in:0 0 12px;padding:0 6px 0 12px;}ul.cdArticleSeries li{margin:0 0 8px 0= ;}ul.cdArticleSeries li a,ul.cdArticleSeries li a:active,ul.cdArticleSer= ies li a:visited,ul.cdArticleSeries li a:hover{color:#595959;}ul.cdArtic= leSeries li.selected a,ul.cdArticleSeries li.selected a:active,ul.cdArti= cleSeries li.selected a:visited,ul.cdArticleSeries li.selected a:hover{c= olor:#454545;font-weight:bold;}ul.cdArticleNavMenu{font-size:1.3em;line-= height:14px;font-weight:normal;list-style:none;margin:0 0 12px;padding:0= 6px 0 6px;}ul.cdArticleNavMenu li{color:#3366CC;list-style-image:none;l= ist-style-position:outside;list-style-type:none;margin:0 0 10px;padding:= 0;}ul.cdArticleNavMenu li.cdArticleNavSeparator{color:#454545;list-style= -image:none;list-style-position:outside;list-style-type:none;margin:0 0 = 10px;padding:0;}ul.cdArticleNavMenu li.cdArticleNavSeparatorSpacing{colo= r:#454545;list-style-image:none;list-style-position:outside;list-style-t= ype:none;margin:27px 0 10px;padding:0;}ul.cdArticleNavMenu li..cdArticle= NavSpacing{margin-top:20px;}ul.cdArticleNavMenu li.selected a,ul.cdArtic= leNavMenu li.selected a:active,ul.cdArticleNavMenu li.selected a:visited= ,ul.cdArticleNavMenu li.selected a:hover{color:#454545;font-weight:bold;= }div.cdArticleMarginItem{display:none;}div.cdArticleText div.cdArticleMa= rginItem > *{margin:0;padding:0;}div.cdArticleMarginItemPositioned{posit= ion:absolute;width:150px;padding:6px 0 6px 0;margin:0 0 6px 0;border-top= :solid 1px #eaeaea;border-bottom:solid 1px #eaeaea;font-size:1em;line-he= ight:1.4em;}div.cdArticleMarginItemPlaceholder{height:0;margin:0;padding= :0;border:0;visibility:hidden;}div.cdArticleRight{float:right;width:300p= x;margin:0 1px 0 0;}div.cdAdContainer{min-height:268px;margin-bottom:40p= x;}div.cdArticleRight .cdSeeAlso{margin-top:40px;}a#backtotop,a#Backtoto= p{height:0;padding:0;margin:0;visibility:hidden;float:left;}.glossary{di= splay:inline-block;}a.glossary:link,a.glossary:visited,a.glossary:active= ,a.glossary:hover{vertical-align:baseline;border-bottom:1px dotted #999;= text-decoration:none !important;color:#999 !important;}a.glossary:hover{= border-bottom:1px dotted #666;color:#666 !important;}div.cdDefinitionWra= pper{color:#454545;font-family:'Lucida Sans';font-size:1.1em;line-height= :1.5em;padding:16px 16px 16px 24px;text-indent:-10px;}div.cdDefinitionWr= apper strong{font-family:'Segoe UI';font-weight:700;font-size:1.1em;}div= .cdDefinitionWrapper strong.cdTerm{padding:0 5px 0 0;}.cdDefinitionClose= {display:block;float:right;margin:3px;height:18px;width:18px;}.cdDefinit= ionClose img{visibility:visible !important;}.cdTopLink{float:right;visib= ility:hidden;width:1px;height:1px;overflow:hidden;}@media print{div.cdAr= ticleRight{display:none;}div.cdArticle .dvActionBar,div#feedbackDiv{disp= lay:none;}div.cdArticleMarginItem{font-size:1.0em !important;position:in= herit !important;width:auto !important;display:block;}div#cdnavcontainer= ,div#cdCntPane,body{width:700px;padding:0;margin:0;}a[href=3D'#_top'],a[= href=3D'#top']{display:none;}} ------------AwZAEu8L0Fx8UXBllPLKFH Content-Disposition: inline; filename=adcontrol.css Content-Type: text/css; name=adcontrol.css Content-Location: http://officeimg.vo.msecnd.net/_layouts/adcontrol.css?b=5567%2E4000 Content-Transfer-Encoding: Quoted-Printable .cdAd_Block{display:block;}.cdAd_Title{font:bold 1.1em 'Tahoma';color:#0= 070c0;}.cdAd_Url{font-size:0.9em;color:#009900;}.cdAd_Text{font-size:0.9= em;color:#797979;}.cdAdML{background-image:url('/_layouts/images/general= /ad_bg.png?b=3D5567.4000');}.cdAdML_Content{padding:5px 5px 0.01px;}.cdA= dML_Label{display:block;float:right;text-align:right;margin:0px 2px 8px = 0px;font-size:0.9em;color:#797979;}.cdAdML_Ads{margin-right:15px;}.cdAdM= L_Ad{margin-bottom:7px;}.cdAdML_Ad a:hover{text-decoration:none;}.cdAdML= _Media{position:absolute;margin-top:1px;}.cdAdML_MediaBox{width:20px;hei= ght:20px;line-height:20px;text-align:center;border:solid 1px #ccc;backgr= ound-color:#fff;}.cdAdML_MediaImg{max-width:20px;max-height:20px;border:= none;}.cdAdML_MediaInfo{padding-left:29px;}.cdAdSB_Ad{display:block;}.cd= AdSB_Ad:hover{text-decoration:none;}.cdAdSB_Label{text-align:center;marg= in-bottom:7px;font-size:0.9em;color:#aeaeae;}.cdAdSB_Title{line-height:1= .1em;margin-bottom:1px;}.cdAdSB_Url{margin-bottom:13px;}.cdAdSB_Text{lin= e-height:1.3em;margin-bottom:2px;} ------------AwZAEu8L0Fx8UXBllPLKFH Content-Disposition: inline Content-Type: text/css Content-Location: http://officeimg.vo.msecnd.net/en-us/files/219/801/AF101828963.css Content-Transfer-Encoding: 8bit /* VS CSS UPDATES */ /* Applies to the entire non-scrolling header region. */ .cntArticleBody .devdocvsbody {background-color:#ffffff; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size:11px; line-height:13px} .cntArticleBody div#programweb {background-color:#ffffff; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size:11px; color:#000000} .cntArticleBody div#programweb h2 {font-size:12px; color:#000000; line-height:14px; padding:0px; margin:24px 0px 0px 0px} .cntArticleBody div#programweb h3 {font-size: 11px; margin-top: 1.2em; margin-bottom: .5em; font-weight: bold; color:#000000; line-height:13px} .cntArticleBody div#programweb li {padding:0px; margin:0px} .cntArticleBody div#programweb a:link {color: #0000cc; text-decoration:underline} .cntArticleBody div#programweb a:active {color: #0000cc; text-decoration:underline} .cntArticleBody div#programweb a:visited {color: #0000cc; text-decoration:underline; line-height:13px} .cntArticleBody div#programweb a {color: #000000} .cntArticleBody div#programweb p {margin-top: .6em; margin-bottom: .6em; line-height:13px} .cntArticleBody div#programweb ol {font-size: 11px; margin-top: .5em; margin: 0em} .cntArticleBody .cntArticleBody div#programweb ul {list-style:disc; font-size: 11px; margin-top: .5em; margin-bottom: 0em; margin-left: 1em; padding:0px} .cntArticleBody .cntArticleBody div#programweb ol ul {list-style: disc; margin-top: .5em} .cntArticleBody div#programweb ul ul {list-style: disc; margin-top: .5em} .cntArticleBody div#programweb li {margin-bottom: 0em; margin-left: 2em; display:list-item} .cntArticleBody div#programweb code {font-family:"Courier New" ,Courier,monospace; font-size:11px; text-align:left; font-size:13px} .cntArticleBody div#programweb table {margin:0px; border:none} .cntArticleBody div#programweb tr {vertical-align:top; border:none} .cntArticleBody div#programweb th {padding:0em; background-color:#6B82B2; color:#ffffff; margin:0em; text-align:left; vertical-align:bottom; border:none} .cntArticleBody div#programweb td {padding:0em; margin:0em; vertical-align:top; text-align:left; border:none} .cntArticleBody div#programweb pre {padding:8px; background-color:#f7f7ff; font-size:13px} .cntArticleBody div#header {background-color:#d4dfff; padding:0px ; width:100%} /* Applies to both tables in the non-scrolling header region. */ .cntArticleBody div#header table {border-bottom-color:#c8cdde; border-bottom-style:solid; border-bottom-width:0; width:100%} .cntArticleBody /* Applies to cells in both tables in the non-scrolling header region. */ .cntArticleBody div#header td {margin:.25em; vertical-align:top; border-bottom:1px solid #D4DFFF} /* Applies to the running header text in the first row of the upper table in the non-scrolling header region. */ .cntArticleBody span#runningHeaderText {color:#003399; font-size:100%} /* Applies to the topic title in the second row of the upper table in the non-scrolling header region. */ .cntArticleBody span#nsrTitle {color:#003399; font-size:100%; font-weight:600} .cntArticleBody .mainheaders {color:#003399; font-size:120%; font-weight:bold} .cntArticleBody div#vstable table {border:0; font-size:100%; width:100%; margin-top:5px; margin-bottom:5px} .cntArticleBody div#vstable th {background-color:#efeff7; border-bottom:1px solid #c8cdde; color:#000066; padding-left:5px; padding-right:5px; text-align:left} .cntArticleBody div#vstable td {background-color:#f7f7ff; border-bottom:1px solid #d5d5d3; border-left:0px solid #d5d5d3; padding-left:5px; padding-right:5px; margin:1px} .cntArticleBody div#vstable pre {margin-top:2px; margin-bottom:2px} .cntArticleBody div#vstable code {font-family:Monospace, Courier New, Courier; font-size:13px; color:#000066} .cntArticleBody div#vstablenote table {border:0; font-size:100%; width:100%; margin-top:5px; margin-bottom:5px} .cntArticleBody div#vstablenote th {background-color:#efeff7; border-bottom:1px solid #c8cdde; color:#000066; padding-left:5px; padding-right:5px; text-align:left} .cntArticleBody div#vstablenote td {background-color:#f7f7ff; border-bottom:1px solid #d5d5d3; border-left:1px solid #d5d5d3; padding-left:5px; padding-right:5px; margin:1px} /* devdocs */ .cntArticleBody .devdocvsbody p {margin-top:.6em; margin-bottom:.6em} .cntArticleBody .devdocvsbody pre {font-size:1.1em; margin-bottom:.5em; margin-top:.5em} /* Heading styles */ .cntArticleBody .devdocvsbody h1 {font-size:125%; margin-top:.4em; margin-bottom:.5em} .cntArticleBody .devdocvsbody h2 {font-size:110%; margin-top:2em; margin-bottom:.5em} .cntArticleBody .devdocvsbody h3 {font-size:100%; margin-top:1.2em; margin-bottom:.5em; font-weight:bold} .cntArticleBody .devdocvsbody h4 {font-size:100%; margin-top:1.2em; font-weight:bold} .cntArticleBody .devdocvsbody h5 {font-size:100%; margin-top:1.2em; font-weight:bold} /* END VS CSS UPDATES */ .cntArticleBody #lblTOUContent {font-family:Tahoma; font-size:1.2em; color:#484848} .cntArticleBody #divShowAll {display:block; text-align:right} .cntArticleBody #divHideAll {display:none; text-align:right} /* Styles for Content Published from DXStudio */ div#mainSection div#mainBody {background-color:#ffffff; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size:11px; line-height:13px} /* Heading styles */ div#mainSection div#mainBody h1 {font-size:125%; margin-top:.4em; margin-bottom:.5em} div#mainSection div#mainBody h1.heading {font-size:110%; margin-top:2em; margin-bottom:.5em} div#mainSection div#mainBody h2 {font-size:110%; margin-top:2em; margin-bottom:.5em} div#mainSection div#mainBody h3 {font-size:100%; margin-top:1.2em; margin-bottom:.5em; font-weight:bold} div#mainSection div#mainBody h4 {font-size:100%; margin-top:1.2em; font-weight:bold} div#mainSection div#mainBody h5 {font-size:100%; margin-top:1.2em; font-weight:bold} div#mainSection div#mainBody p {margin-top:.6em; margin-bottom:.6em} div#mainSection div#mainBody pre {font-size:1.1em; margin-bottom:.5em; margin-top:.5em} /* Table Styles*/ div#mainSection div#mainBody .tableSection table {border:0; font-size:100%; width:100%; margin-top:5px; margin-bottom:5px} div#mainSection div#mainBody .tableSection th {background-color:#efeff7; border-bottom:1px solid #c8cdde; border-left:0px solid #c8cdde; color:#000066; padding-left:5px; padding-right:5px; text-align:left} div#mainSection div#mainBody .tableSection td {background-color:#f7f7ff; border-bottom:1px solid #d5d5d3; border-left:0px solid #d5d5d3; padding-left:5px; padding-right:5px; margin:1px} div#mainSection div#mainBody .code th {background-color:#efeff7; border-bottom:1px solid #c8cdde; color:#000066; padding-left:5px; padding-right:5px; text-align:left} ------------AwZAEu8L0Fx8UXBllPLKFH Content-Disposition: inline Content-Type: text/css Content-Location: http://officeimg.vo.msecnd.net/en-us/files/620/078/AF102253325.css Content-Transfer-Encoding: 8bit /*Global CSS*/ /* PMG page*/ .pmgPage * { margin: 0; padding: 0; line-height: normal; } /* Refactored code*/ .pmgGlobalPage * { margin: 0; padding: 0; line-height: normal; } .pmgGlobalNoBullets { margin: 0; padding: 0; } .pmgGlobalNoBullets li{ list-style-type: none; } .pmgGlobalPad00002000 { padding: 0 0 20px 0; } .pmgGlobalPad00001000{ padding: 0 0 10px 0; } .pmgGlobalPad10000000{ padding: 10px 0 0 0; } .pmgGlobalLegacyH1 { font-family: Segoe UI,Arial,Verdana; font-size: 2.67em; font-weight: normal; color: #454545; } .pmgGlobalLegacyBlurbMed { font-size: 1.33em; padding: 0 0 10px 0; } .pmgGlobalLegacyBlurbSm { font-size: 1.1em; padding: 0 0 10px 0; } .pmgGlobalLegacyContainer{ padding: 0 0 10px 0; } .pmgGlobalLegacySmlNwsbtTitle { font-weight: bold; font-size: 1.2em; } .pmgGlobalLegacyFootnote { color: #454545; font-size: 0.9em; font-style: italic; padding: 20px 0 0 0; } .pmgGlobalTextBold {font-weight: bold;} .pmgGlobalTextNoBold {font-weight: normal;} .pmgGlobalAbsolutePosition{position: absolute;} .pmgGlobalOfficeAnywhere { background: url(http://officeimg.vo.msecnd.net/en-us/files/845/863/ZA102395432.png) repeat-y scroll center top transparent; font-size: 14px; margin-bottom: 40px; text-indent: 32px; width: 822px; } .pmgGlobalOfficeAnywhere .pmgGlobalTextBold { color: #414042; } span.pmgGlobal8MarginRight { margin-right: 8px; } .pmgGlobal414042{ color: #414042 } .pmgGlobalBigBox{ width: 820px; display: none; } .pmgGlobalBigBoxHead{ width: 820px; height: 10px; } .pmgGlobalBigBoxCont p{ padding: 0; margin: 0; } .pmgGlobalBoldText{ font-weight: bold; } .pmgGlobalFloatLeft { float: left; } .pmgGlobalMSAnswers { border: solid 1px #ccc; float: left; margin: 10px 5px 0 0; padding: 1px; width: 200px; background-color:#FFFFFF; } .pmgGlobalMSAnswers input { background: none repeat scroll 0 0 transparent; border: medium none; color: #999; float: left; font-size: 10px; height: 20px; line-height: 20px; margin-right: 1px; padding-left: 5px; width: 170px; } .pmgGlobalMSAnswersSearchBtn { background: url('http://officeimg.vo.msecnd.net/en-us/files/195/675/ZA102534328.jpg') no-repeat scroll 0 0 transparent; display: block; float: right; height: 20px; width: 20px; } .pmgGlobalHeaderLeft { width:60%; float:left; } .pmgGlobalHeaderAppDetail { float:left; padding: 0px 0px 0px 12px; margin: 0px 0px 0px 0px; } .pmgGlobalHeaderImgSpace { margin-right:5px; } .pmgGlobalHeaderAppName { font-family:Segoe UI Semibold; font-size:3.0em; padding:0px 0px 2px 0px; margin:-11px 0px 0px 0px; } .pmgGlobalHeaderAppName span { font-family:Segoe UI Light; } .pmgGlobalHeaderRight { width:300px; float:left; position:relative; margin:10px 0px 0px 0px; } .pmgGlobalHeaderFBText { font-family:Segoe UI; color:#848484; width:179px; float:left; margin:-4px 0px 0px 0px; } .pmgGlobalHeaderFBText p { float:right; font-size:1.2em; padding:0px 10px 0px 0px; } .pmgGlobalHeaderFBText span { font-size:1.0em; } .pmgGlobalModalPopup { display: none; margin: auto; height: auto; } .pmgGlobalFontLight { font-family: 'Segoe UI Light', sans-serif; } .pmgGlobalFontNormal { font-family: 'Segoe UI', sans-serif; } .pmgGlobalFontSemibold { font-family: 'Segoe UI Semibold', sans-serif; } .pmgGlobalFontBold { font-family: 'Segoe UI Bold', sans-serif; } .pmgGlobalText16 { font-size: 1.333em; } .pmgGlobalText18 { font-size: 1.5em; } .pmgGlobalText20 { font-size: 1.667em; } .pmgGlobalText32 { font-size: 2.667em; } .pmgGlobalText14 { font-size: 1.167em; } /*end global*/ /* PMG page*/ .pmgPage a { color: #8F308F; } .pmgPage p { /*font-size: 1.2em;*/ } .pmgPage h1 { font-size: 2.5em; } .pmgPage h2 { font-size: 2em; } .pmgPage h3 { font-size: 1.4em; } .pmgPage h4 { font-size: 1.5em; } .pmgPage .pmgCentered { margin:auto; } .pmgPage .pmgMoreLink { padding: 10px 0 0 0; } .pmgPage .pmgLeftJab40 { margin: 0 0 0 40px; } .pmgPage .pmgInlineButtons { margin: 0; padding: 0; } .pmgPage .pmgInlineButtons li { display: inline; list-style-image: none; } .pmgPage .pmgInlineIconHeader { float: left; } .pmgPage .pmgInlineIconHeader img { display: inline; vertical-align: bottom; } .pmgPage .pmgInlineIconHeader h2 { display: inline; font-size: 3.3em; padding: 0; margin: 0; font-weight: normal; } .pmgPage .pmgRightIconText span, .pmgRightIconText h3 { display: inline; padding-right: 5px; vertical-align: middle; } .pmgPage .pmgRightIconText img { display: inline; vertical-align: middle; } .pmgPage .pmgListOrangeDotFlush li { list-style-type: none; background: url('http://officeimg.vo.msecnd.net/en-us/files/404/478/ZA101098582.gif') no-repeat scroll 0 5px transparent; padding: 0 0 5px 10px; } /* end */ .pmgGlobalPage a { color: #4685DF; } .pmgGlobalPage p { /*font-size: 1.2em;*/ } .pmgGlobalPage h1 { font-size: 2.5em; } .pmgGlobalPage h2 { font-size: 2em; } .pmgGlobalPage h3 { font-size: 1.4em; } .pmgGlobalPage h4 { font-size: 1.5em; } .pmgGlobalPage .pmgGlobalCentered { margin:auto; } .pmgGlobalPage .pmgGlobalMoreLink { padding: 10px 0 0 0; } .pmgGlobalPage .pmgGlobalLeftJab40 { margin: 0 0 0 40px; } .pmgGlobalPage .pmgGlobalInlineButtons { margin: 0; padding: 0; } .pmgGlobalPage .pmgGlobalInlineButtons li { display: inline; list-style-image: none; } .pmgGlobalPage .pmgGlobalInlineIconHeader { float: left; } .pmgGlobalPage .pmgGlobalInlineIconHeader img { display: inline; vertical-align: bottom; } .pmgGlobalPage .pmgGlobalInlineIconHeader h2 { display: inline; font-size: 3.3em; padding: 0; margin: 0; font-weight: normal; } .pmgGlobalPage .pmgGlobalRightIconText span, .pmgGlobalRightIconText h3 { display: inline; padding-right: 5px; vertical-align: middle; } .pmgGlobalPage .pmgGlobalRightIconText img { display: inline; vertical-align: middle; } .pmgGlobalPage .pmgGlobalListOrangeDotFlush li { list-style-type: none; background: url('http://officeimg.vo.msecnd.net/en-us/files/404/478/ZA101098582.gif') no-repeat scroll 0 5px transparent; padding: 0 0 5px 10px; } .pmgGlobalFBPlugin { position: absolute; width: 215px; top: 0px; right: 111px; } .pmgGlobalSlider { overflow:hidden;position:absolute;width:820px } .pmgGlobalSliderList { position:relative;width:4000px; } .pmgGlobalSliderList li { list-style-type:none; } /******* PMG H1 SEO Image Fix ******************/ .pmgImageSEOfix h1 {position: relative;} .pmgImageSEOfix h1 a { position: absolute; width: 100%; height: 100%; } /****** PMG H1 SEO Image Fix ****************/ #pmgGlobalFBTxt {width:159px;margin-left:20px;} /* end pmgPage refactor */ /***************OneNote-Specific CSS & Overrides**********************/ #pmgAppOnenote a{ color: #8F308F; } #pmgAppOnenote #pmgAppBody { background: url('http://officeimg.vo.msecnd.net/en-us/files/803/712/ZA102259203.png') repeat-y top center; } #pmgAppOnenote { margin: auto; width: 940px; color: #000; } #pmgAppOnenote h3, #pmgAppOnenote h4 { font-family: Segoe UI Semibold, Segoe UI, Sans-Serif; font-weight: normal; } #pmgAppHeader { float: left; width: 100%; position: relative; } /* Refactor */ #pmgGlobalHeader { float: left; width: 100%; position: relative; } #pmgAppCtas { float: left; clear: both; padding: 10px 0 0 0; } /* refactor */ #pmgGlobalCtas { float: left; clear: both; padding: 10px 0 0 0; } #pmgAppBody { display: inline-block; width: 100%; } #pmgAppName { font-weight: bold; } /* refactor*/ #pmgGlobalAppName { font-weight: bold; } #pmgAppShare { position: absolute; top: 0; right: 80px; width: 215px; } #pmgAppShare span, #pmgAppShare ul { display: inline; vertical-align: bottom; } #pmgAppShare span { font-size:1.3em; padding:0 10px 0 0; color: #888; } .pmgDemoTitle { width: 100%; text-align: center; padding: 0 0 20px 0; } /* refactor */ .pmgGlobalDemoTitle { width: 100%; text-align: center; padding: 0 0 20px 0; } #pmgOnenoteDemo { padding: 15px 0 20px 0; width: 239px; position: relative; } #pmgDemoImage span { display: none; } #pmgDemoImage a { background: url('http://officeimg.vo.msecnd.net/en-us/files/143/937/ZA102259150.png') no-repeat top left; width: 239px; height: 139px; display: block; } #pmgDemoImage a:hover { background: url('http://officeimg.vo.msecnd.net/en-us/files/143/937/ZA102259150.png') no-repeat top right; } .pmgOneNoteMarginRht {margin-right:30px;} /* refactor */ #pmgGlobalDemoImage span { display: none; } #pmgGlobalDemoImage a { background: url('http://officeimg.vo.msecnd.net/en-us/files/143/937/ZA102259150.png') no-repeat top left; width: 239px; height: 139px; display: block; } #pmgGlobalDemoImage a:hover { background: url('http://officeimg.vo.msecnd.net/en-us/files/143/937/ZA102259150.png') no-repeat top right; } #pmgDemoCaption { position: absolute; top: 0; right: -71px; } #pmgOnenoteCenteredHero { /*background: url('images/onenote_hero.png') no-repeat top left;*/ margin-top: 25px; width: 826px; height: 273px; margin-bottom: 5px; } #pmgOnenoteHeroBlurbs { padding: 25px 0 0 25px; width: 190px; } #pmgOnenoteHeroBlurbs h2 { font-size: 2.8em; line-height: 1em; font-weight: normal; width: 170px; } #pmgOnenoteHeroBlurbs h1 { padding: 15px 0; font-size: 1.2em; font-weight: normal; } #pmgOnenoteHeroCta { font-size: 1.6em; color: #98499E; } #pmgOnenoteAnywhereBox { padding-top: 2px; height: 23px;margin-bottom: 25px; margin-top: 0px;padding-bottom:2px;font-size:1.4em;} .pmgOnenoteAnywhereLink{ padding-left: 80px; } #pmgOnenoteReviews { line-height: 1.7em; } #pmgOnenoteSmFeed { position: relative; margin: 30px 0 0 10px; } #pmgOnenoteSmTitle { background: #8F308F; width: 300px; height: 25px; font-size: 0.9em; font-weight: bold; } #pmgOnenoteSmTitle a { color: #fff; } #pmgOnenoteSmTitle li { vertical-align: middle; display: inline-block; list-style: none; height: 20px; margin: 2px auto 2px 17px; padding: 2px 0 0 27px; zoom:1; *display: inline; _height: 20px; } #pmgOneNoteImageMap { height: 266px; margin-bottom: 30px; overflow: hidden; position: relative; top: -1px; width: 820px; } #pmgOneNoteImageMap:hover{ top: 0px; } #pmgOneNoteImageMap #pmgOneNoteMeet{ margin-right: -32px; padding-left: 8px; } #pmgOneNoteImageMap #pmgOneNoteIPhone{ margin-right: -14px; padding-left: 3px; } .pmgGlobalColumnAlign{ display: inline; left: 250px; margin-right: -11px; position: relative; top: 61px; } #pmgOneNoteImageMap #pmgOneNoteMeet:hover, #pmgOneNoteImageMap #pmgOneNoteIPhone:hover, #pmgOneNoteImageMap #pmgOneNoteWP7:hover, #pmgOneNoteImageMap #pmgOneNoteWebApp:hover{ top: 56px; } .pmgListOrangeDotFlush { /*font-size: 1.2em;*/ } .pmgModuleSmall { width: 310px; } .pmgModuleSmall .pmgModuleBody { background: url('http://officeimg.vo.msecnd.net/en-us/files/018/921/ZA102259169.png') repeat-y top center; padding: 0 0 15px 0; } /* refactor */ .pmgGlobalModuleSmall { width: 310px; } .pmgGlobalModuleSmall .pmgModuleBody { background: url('http://officeimg.vo.msecnd.net/en-us/files/018/921/ZA102259169.png') repeat-y top center; padding: 0 0 15px 0; } .pmgModuleHead, .pmgModuleTail { display: block; } .pmgModuleHead, .pmgModuleTail { display: block; } /* refactor */ .pmgGlobalModuleHead, .pmgGlobalModuleTail { display: block; } .pmgGlobalModuleHead, .pmgGlobalModuleTail { display: block; } .pmgModuleHeadline { padding: 10px 0 10px 30px; } /* refactor */ .pmgGlobalModuleHeadline { padding: 10px 0 10px 30px; } .pmgModuleMedium .pmgModuleBody { background: url('http://officeimg.vo.msecnd.net/en-us/files/151/711/ZA102259269.png') repeat-y top center; } .pmgModuleMedium .pmgModuleBody { background: url('http://officeimg.vo.msecnd.net/en-us/files/151/711/ZA102259269.png') repeat-y top center; } /* refactor */ .pmgGlobalMeduleMedium .pmgModuleBody { background: url('http://officeimg.vo.msecnd.net/en-us/files/151/711/ZA102259269.png') repeat-y top center; } .pmgModuleTiny { width: 248px; } .pmgModuleTiny h3 { padding: 0 0 5px 0; } .pmgModuleTiny .pmgModuleBody { background: url('http://officeimg.vo.msecnd.net/en-us/files/577/716/ZA102259243.png') no-repeat bottom center; padding: 0 0 10px 0; padding: 10px 20px 35px 20px; min-height: 110px; position: relative; z-index: 1; } /* refactor */ .pmgGlobalModuleTiny { width: 248px; } .pmgGlobalModuleTiny h3 { padding: 0 0 5px 0; } .pmgGlobalModuleTiny .pmgModuleBody { background: url('http://officeimg.vo.msecnd.net/en-us/files/577/716/ZA102259243.png') no-repeat bottom center; padding: 0 0 10px 0; padding: 10px 20px 35px 20px; min-height: 110px; position: relative; z-index: 1; } .pmgSection7030 .pmgLeftCol { float: left; width: 510px; } .pmgSection7030 .pmgRightCol { float: left; width: 320px; } /* Refactor */ .pmgGlobalSection7030 .pmgGlobalLeftCol { float: left; width: 510px; } .pmgGlobalSection7030 .pmgGlobalRightCol { float: left; width: 320px; } .pmgSection5050 .pmgLeftCol { float: left; width: 50%; } .pmgSection5050 .pmgRightCol { float: left; width: 50%; } /* refactor */ .pmgGlobalSection5050 .pmgGlobalLeftCol, .pmgGlobalSection5050 .pmgGlobalRightCol { float: left; width: 50%; } .pmgRssFeed { width: 500px; } .pmgRssLiveFeed { min-height: 300px; } #pmgSmFeed { width: 300px; min-height: 360px; } #pmgSmFeed li { display: block; list-style: none; line-height: 1.3em; padding: 10px 17px; } .pmgRssFeed h4 { padding: 10px 0; font-size: 1.5em; font-weight: normal; color: #98499E; } .pmgRssFeed li { border-top: 1px solid #ccc; list-style: none; display: block; margin: -1px 30px 0 30px; } .pmgRssFeed img { vertical-align: top; } .pmgRssFeed p { display: block; vertical-align: top; padding: 0 0 20px 0; } #pmgRssFeatured { background: #eee; margin: 0; border: 1px solid #ccc; position: relative; padding: 0 30px; } #pmgRssFeatured img { position: absolute; left: 30px; } #pmgRssFeatured p { margin: 0 0 0 70px; padding-left:10px; } .pmgSmBody { float:right; padding-left: 10px; padding-right: 10px; width: 240px; padding-bottom: 10px; } .pmgSmFeedTwitter { background: url('http://officeimg.vo.msecnd.net/en-us/files/130/426/ZA102259155.png') no-repeat top left; } .pmgSmFeedFacebook { background: url('http://officeimg.vo.msecnd.net/en-us/files/220/843/ZA102259253.png') no-repeat top left; } /* Change */ .pmgSmFeedEven { background-color: #ccc; } .pmgSmFeedItem { padding: 0 0 0 27px; min-height:27px; } li div.pmgSmFeedTwitter, div.pmgSmFeedFacebook { height: 20px; width: 20px; float: left; } #pmgSmCaption { position: absolute; bottom: 0px; left: -285px; top: 360px; display:block; } .pmgSmAuthor, .pmgRssAuthor { color: #8F308F; } #pmgOnenoteLikebtn { height: 22px; margin-left: 20px; overflow: hidden; } .pmgOneNoteMSAnswers { background:url('http://officeimg.vo.msecnd.net/en-us/files/979/938/ZA102534455.png') no-repeat; width:248px; height:174px; margin:10px auto auto; } .pmgOneNoteMSAnsersCnt { width:200px; margin:0px 0px 0px 17px; padding:20px 0px 0px 0px; } #pmgOneNoteSearchBtn { background:none; } .pmgOneNoteGAImg { margin:10px 0px 0px 0px; } /* End override for OneNote*/ /* Make over pages CSS*/ .pmg_makeover { padding-left:10px; width:940px; line-height:normal; overflow:hidden; } .pmg_makeover_title_layout { width:550px; } .pmg_global_blurb { font-size:1.2em; font-family:Segoe UI; color:#000000; } .pmg_makeover_intro_layout { padding-top:17px; width:500px; float:left; } .pmg_makeover_bookmark { color:white; } .pmg_makeover_ppt_middle_section_bkground { background:url('http://officeimg.vo.msecnd.net/en-us/files/848/003/ZA102232821.png') repeat-y; height:352px; width:820px; } .pmg_makeover_excel_middle_section_bkground { background:url('http://officeimg.vo.msecnd.net/en-us/files/920/891/ZA102259899.png') repeat-y; height:352px; width:820px; } .pmg_makeover_word_middle_section_bkground { background:url('http://officeimg.vo.msecnd.net/en-us/files/922/661/ZA102259859.png') repeat-y; height:352px; width:820px; } .pmg_makeover_publisher_middle_section_bkground { background:url('http://officeimg.vo.msecnd.net/en-us/files/604/960/ZA102237456.png') repeat-y; height:352px; width:820px; } .pmg_makeover_layover_image { margin:10px 0px 0px 25px; width:510px; float:left; } .pmg_makeover_video_layout { padding:26px 0px 5px 45px; width:200px; float:left; } .pmg_makeover p { font-size:1.6em; font-family:Segoe UI Semibold, Segoe UI; color:#000000; margin-bottom:10px; } .pmg_makeover_see_more { float:right; font-size:1.2em; padding-right:40px; } .pmg_makeover_bottom_100 { margin-top:30px; width:100%; /*height:150px;*/ } #pmg_makeover_left_col { margin-left:45px; width:25%; float:left; } #pmg_makeover_mid_col { padding-left:50px; width:25%; float:left; } #pmg_makeover_right_col { width:30%; padding-top:10px; float:right; } #pmg_makeover_right_col_layout { padding-left:80px; } .pmg_makeover .pmg_makeover_bottom_100 h2 { font-family:Segoe UI; color:#000000; font-size:1.2em; } #pmg_makeover_button { padding:10px 0px 0px 0px; } .pmg_makeover_demo_link { width:200px; padding-left:90px; font-size:1.2em; font-family:Segoe UI; } .pmg_makeover_top_content { padding-top: 80px; margin-left:50px; margin-top:30px; background:url('http://officeimg.vo.msecnd.net/en-us/files/151/161/ZA102288558.png') repeat-y; height:165px; } .pmg_makeover_detailpage_top_content { /*padding-top: 48px;*/ margin-left:65px; width:850px; overflow:hidden; } .pmg_makeover h1 { font-family:Segoe UI Light; color:#000000; font-size:2.3em; } .pmg_global_subtitle { font-family:Segoe UI Semibold; font-size:1.6em; font-weight:bold; } .pmg_makeover_top_left_60 { width:60%; float:left; padding-bottom:8px; } .pmg_makeover_top_right_40 { width:40%; float:left; padding-top:14px; } .pmg_makeover_detailpage_top_left { width:550px; float:left; } .pmg_makeover_detailpage_top_right { width:300px; float:right; } .pmg_makeover_top_left_70 { width:70%; float:left; } .pmg_makeover_top_right_30 { width:30%; float:right; margin-top:55px; } .pmg_makeover h3 { margin:26px 0px 0px 0px; font-family:Segoe UI; font-size:1.5em; color:#000000; font-weight:normal; } .pmg_makeover_blurb_layout { width:450px; } .pmg_makeover_word_layout { background:url('http://officeimg.vo.msecnd.net/en-us/files/699/325/ZA102237097.png') repeat-y; height:238px; } .pmg_makeover_bottom_content { margin-left:48px; margin-top:25px; } .pmg_makeover_detailpage_bottom_content { margin-left:48px; margin-top:25px; } .pmg_makeover_layover_content { padding-left:50px; width:274px; float:left; } .pmg_makeover .pmg_global_blurb li { padding-bottom:0px; list-style-type:none; background:url('http://officeimg.vo.msecnd.net/en-us/files/085/476/ZA102237209.png') no-repeat 0px 6px; padding-left:10px; } .pmg_makeover .pmg_global_blurb ul { margin-left:-35px; } .pmg_makeover_app_title_layout { padding-top:20px; margin-top:0px; } .pmg_makeover_excel_title_layout { padding-top:20px; margin-top:0px; } .pmg_makeover h2 { font-family:Segoe UI; color:#000000; font-size:2.0em; font-weight:bold; } .pmg_global_app_year { font-family:Segoe UI Light; } .pmg_makeover .pmg_makeover_bottom_content h3 { font-family:Segoe UI Semibold; color:#000000; font-size:1.3em; } .pmg_makeover_word { font-family:Segoe UI Light; color:#265dad; font-size:1.2em; padding-top:6px; } .pmg_makeover_before_after { float:right; padding-right:86px; width:448px; } .pmg_makeover_word_before_after_img { float:right; margin-top:-20px; padding-right:50px; } .pmg_makeover_excel_layout { background:url('http://officeimg.vo.msecnd.net/en-us/files/899/485/ZA102232939.png') repeat-y; height:240px; margin-top:10px; } #Excel_AppHeadline_Layout { padding-top:29px; margin-top:0px; } .pmg_makeover_excel { font-family:Segoe UI Light; color:#297309; font-size:1.2em; padding-top:6px; } .pmg_makeover_excel_before_after_img { padding-left:30px; padding-top:5px; } .pmg_makeover_ppt_layout { background:url('http://officeimg.vo.msecnd.net/en-us/files/833/399/ZA102233047.png') repeat-y; height:237px; margin-top:10px; } .pmg_makeover_ppt { font-family:Segoe UI Light; color:#b33000; font-size:1.2em; padding-top:3px; } .pmg_makeover_ppt_before_after_img { padding-left:30px; margin-top:-20px; } .pmg_makeover_publisher_layout { background:url('http://officeimg.vo.msecnd.net/en-us/files/948/628/ZA102237093.png') repeat-y; height:237px; margin-top:10px; } .pmg_makeover_publisher { font-family:Segoe UI Light; color:#028180; font-size:1.2em; padding-top:3px; } .pmg_makeover_publisher_before_after_img { margin-top:-20px; } .pmg_makeover_desc { font-family:Segoe UI Semibold; font-size:1.4em; } #pmg_makeover_return { padding-top:30px; float:right; padding-right:55px; } .pmg_global_social_media { font-family:Segoe UI; font-size:1.2em; } .pmg_makeover_social_media_layout { padding-left:68px; padding-top:70px; } .pmg_global_app_share { position: absolute; top: 0; right: 80px; width: 215px; } #pmg_makeover_share_layout { position:relative; margin-left:100px; float:right; } #pmg_makeover_homepage_share_layout { position:relative; width:300px; float:right; margin-bottom:11px; } /*Makeover pages css end*/ /* Pop up window css */ #moverlay{ display:none; position:fixed; height:100%; width:100%; top:0; left:0; background:#000; border:1px solid #cecece; z-index:1000; overflow:hidden; } #pmg_global_popup_dialogcontent { height:auto; margin:auto; display:none; } #pmg_makeover_popup_detailcontent { height:auto; margin:auto; display:none; } .pmg_global_popup_loading {text-align:center; position: absolute;} .pmg_global_popup_corner { position:absolute; height:20px; width:20px; background-color: #323232; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(opacity=100)"; filter: alpha(opacity=100); z-index:-9999; opacity:1; } .pmg_global_popup_clip{ position: absolute; top: 0; left: 0; z-index: 999; background-color:Transparent;width:20px; height:20px;} .pmg_global_popup_tl{background: url('http://officeimg.vo.msecnd.net/en-us/files/620/587/ZA102259198.png') no-repeat left top;} .pmg_global_popup_bl {background: url('http://officeimg.vo.msecnd.net/en-us/files/620/587/ZA102259198.png') no-repeat left bottom;} .pmg_global_popup_tr {background: url('http://officeimg.vo.msecnd.net/en-us/files/620/587/ZA102259198.png') no-repeat right top;} .pmg_global_popup_br {background: url('http://officeimg.vo.msecnd.net/en-us/files/620/587/ZA102259198.png') no-repeat right bottom;} .pmg_global_clear {clear: both;} /* refactor */ .pmgGlobalClear {clear: both;} div.pmg_global_popup_bottomlayer div:pmg_global_popup_first { background-color: Red; } .pmg_global_popup_toplayer, .pmg_global_popup_bottomlayer { position: relative; } .pmg_global_corner_pos_tleft {top: 0pt; left: 0px;} .pmg_global_corner_pos_tright {z-index: -9999; top: 0pt; right: 0px;} .pmg_global_corner_pos_bleft {bottom: 0pt; left: 0pt;} .pmg_global_corner_pos_bright {bottom: 0pt; right: 0pt;} .pmg_global_close_img {cursor:pointer;margin-left: 5px; position:absolute;} #ifrvideo {border: solid 2px gray;} .pmg_global_popupblurb{padding-left:45px;font-size:medium;} .pmg_global_popup_popupclose{position: absolute;padding-top:5px;font-size:1.5em; top: 5px; right: 0; padding-right:64px;} .pmg_global_popup_videocnt{margin-top:35px;padding: 0 20px 10px;} .pmg_global_popup_videocnt p{align:center;} .pmg_global_popup_innershell {margin: 20px;} .popupclose p{margin:5px 10px 5px 0;} .pmg_global_showcasevid { width:640px; height:360px; } /*Pop up End*/ /* Global Share module css*/ .pmg_global_app_share span, .pmg_global_app_share ul { display: inline; vertical-align: bottom; } .pmg_global_app_share span { font-size:1.5em; padding:0 10px 0 0; color: #888; } .pmg_global_app_likebtn { position:absolute; top: 0; right: 0; width: 50px; } .pmg_global_app_share .inline_buttons { margin: 0; padding: 0; } .pmg_global_app_share .inline_buttons li { display: inline; list-style-image: none; } /*End*/ /* 5MMO new*/ .pmgMakeover { padding-left:10px; width:940px; line-height:normal; overflow:hidden; } .pmgMakeoverTitleLayout { width:550px; } .pmgGlobalBlurb { font-size:1.2em; font-family:Segoe UI; color:#000000; } .pmgMakeoverIntroLayout { padding-top:17px; width:500px; float:left; } .pmgMakeoverBookmark { color:white; } .pmgMakeoverPptMiddleSectionBkground { background:url('http://officeimg.vo.msecnd.net/en-us/files/848/003/ZA102232821.png') repeat-y; height:352px; width:820px; } .pmgMakeoverExcelMiddleSectionBkground { background:url('http://officeimg.vo.msecnd.net/en-us/files/920/891/ZA102259899.png') repeat-y; height:352px; width:820px; } .pmgMakeoverWordMiddleSectionBkground { background:url('http://officeimg.vo.msecnd.net/en-us/files/922/661/ZA102259859.png') repeat-y; height:352px; width:820px; } .pmgMakeoverPublisherMiddleSectionBkground { background:url('http://officeimg.vo.msecnd.net/en-us/files/604/960/ZA102237456.png') repeat-y; height:352px; width:820px; } .pmgMakeoverLayoverImage { margin:10px 0px 0px 25px; width:510px; float:left; } .pmgMakeoverVideoLayout { padding:26px 0px 5px 45px; width:200px; float:left; } .pmgMakeover p { font-size:1.6em; font-family:Segoe UI Semibold, Segoe UI; color:#000000; margin-bottom:10px; } .pmgMakeoverSeeMore { float:right; font-size:1.2em; padding-right:40px; } .pmgMakeoverBottom100 { margin-top:30px; width:100%; /*height:150px;*/ } #pmgMakeoverLeftCol { margin-left:45px; width:25%; float:left; } #pmgMakeoverMidCol { padding-left:50px; width:25%; float:left; } #pmgMakeoverRightCol { width:30%; padding-top:10px; float:right; } #pmgMakeoverRightColLayout { padding-left:80px; } .pmgMakeover .pmgMakeoverBottom100 h2 { font-family:Segoe UI; color:#000000; font-size:1.2em; } #pmgMakeoverButton { padding:10px 0px 0px 0px; } .pmgMakeoverDemoLink { width:200px; padding-left:90px; font-size:1.2em; font-family:Segoe UI; } .pmgMakeoverTopContent { padding-top: 80px; margin-left:50px; margin-top:30px; background:url('http://officeimg.vo.msecnd.net/en-us/files/151/161/ZA102288558.png') repeat-y; height:165px; } .pmgMakeoverDetailpageTopContent { /*padding-top: 48px;*/ margin-left:65px; width:850px; overflow:hidden; } .pmgMakeover h1 { font-family:Segoe UI Light; color:#000000; font-size:2.3em; } .pmgGlobalSubtitle { font-family:Segoe UI Semibold; font-size:1.6em; font-weight:bold; } .pmgMakeoverTopLeft60 { width:60%; float:left; padding-bottom:8px; } .pmgMakeoverTopRight40 { width:40%; float:left; padding-top:14px; } .pmgMakeoverDetailpageTopLeft { width:550px; float:left; } .pmgMakeoverDetailpageTopRight { width:300px; float:right; } .pmgMakeoverTopLeft70 { width:70%; float:left; } .pmgMakeoverTopRight30 { width:30%; float:right; margin-top:55px; } .pmgMakeover h3 { margin:26px 0px 0px 0px; font-family:Segoe UI; font-size:1.5em; color:#000000; font-weight:normal; } .pmgMakeoverBlurbLayout { width:450px; } .pmgMakeoverWordLayout { background:url('http://officeimg.vo.msecnd.net/en-us/files/699/325/ZA102237097.png') repeat-y; height:238px; } .pmgMakeoverBottomContent { margin-left:48px; margin-top:25px; } .pmgMakeoverDetailpageBottomContent { margin-left:48px; margin-top:25px; } .pmgMakeoverLayoverContent { padding-left:50px; width:274px; float:left; } .pmgMakeover .pmgGlobalBlurb li { padding-bottom:0px; list-style-type:none; background:url('http://officeimg.vo.msecnd.net/en-us/files/085/476/ZA102237209.png') no-repeat 0px 6px; padding-left:10px; } .pmgMakeover .pmgGlobalBlurb ul { margin-left:-35px; } .pmgMakeoverAppTitleLayout { padding-top:20px; margin-top:0px; } .pmgMakeoverExcelTitleLayout { padding-top:20px; margin-top:0px; } .pmgMakeover h2 { font-family:Segoe UI; color:#000000; font-size:2.0em; font-weight:bold; } .pmgGlobalAppYear { font-family:Segoe UI Light; } .pmgMakeover .pmgMakeoverBottomContent h3 { font-family:Segoe UI Semibold; color:#000000; font-size:1.3em; } .pmgMakeoverWord { font-family:Segoe UI Light; color:#265dad; font-size:1.2em; padding-top:6px; } .pmgMakeoverBeforeAfter { float:right; padding-right:86px; width:448px; } .pmgMakeoverWordBeforeAfterImg { float:right; margin-top:-20px; padding-right:50px; } .pmgMakeoverExcelLayout { background:url('http://officeimg.vo.msecnd.net/en-us/files/899/485/ZA102232939.png') repeat-y; height:240px; margin-top:10px; } #ExcelAppHeadlineLayout { padding-top:29px; margin-top:0px; } .pmgMakeoverExcel { font-family:Segoe UI Light; color:#297309; font-size:1.2em; padding-top:6px; } .pmgMakeoverExcelBeforeAfterImg { padding-left:30px; padding-top:5px; } .pmgMakeoverPptLayout { background:url('http://officeimg.vo.msecnd.net/en-us/files/833/399/ZA102233047.png') repeat-y; height:237px; margin-top:10px; } .pmgMakeoverPpt { font-family:Segoe UI Light; color:#b33000; font-size:1.2em; padding-top:3px; } .pmgMakeoverPptBeforeAfterImg { padding-left:30px; margin-top:-20px; } .pmgMakeoverPublisherLayout { background:url('http://officeimg.vo.msecnd.net/en-us/files/948/628/ZA102237093.png') repeat-y; height:237px; margin-top:10px; } .pmgMakeoverPublisher { font-family:Segoe UI Light; color:#028180; font-size:1.2em; padding-top:3px; } .pmgMakeoverPublisherBeforeAfterImg { margin-top:-20px; } .pmgMakeoverDesc { font-family:Segoe UI Semibold; font-size:1.4em; } #pmgMakeoverReturn { padding-top:30px; float:right; padding-right:55px; } .pmgGlobalSocialMedia { font-family:Segoe UI; font-size:1.2em; } .pmgMakeoverSocialMediaLayout { padding-left:68px; padding-top:70px; } .pmgGlobalAppShare { position: absolute; top: 0; right: 80px; width: 215px; } #pmgMakeoverShareLayout { position:relative; margin-left:100px; float:right; } #pmgMakeoverHomepageShareLayout { position:relative; width:300px; float:right; margin-bottom:11px; } /*Makeover pages css end*/ /* Pop up window css */ #pmgMoverlay{ display:none; position:fixed; height:100%; width:100%; top:0; left:0; background:#000; border:1px solid #cecece; z-index:1000; overflow:hidden; } #pmgGlobalPopupDialogcontent { height:auto; margin:auto; display:none; } #pmgMakeoverPopupDetailcontent { height:auto; margin:auto; display:none; } .pmgGlobalPopupLoading {text-align:center; position: absolute;} .pmgGlobalPopupCorner { position:absolute; height:20px; width:20px; background-color: #323232; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(opacity=100)"; filter: alpha(opacity=100); z-index:-9999; opacity:1; } .pmgGlobalPopupClip{ position: absolute; top: 0; left: 0; z-index: 999; background-color:Transparent;width:20px; height:20px;} .pmgGlobalPopupTl{background: url('http://officeimg.vo.msecnd.net/en-us/files/620/587/ZA102259198.png') no-repeat left top;} .pmgGlobalPopupBl {background: url('http://officeimg.vo.msecnd.net/en-us/files/620/587/ZA102259198.png') no-repeat left bottom;} .pmgGlobalPopupTr {background: url('http://officeimg.vo.msecnd.net/en-us/files/620/587/ZA102259198.png') no-repeat right top;} .pmgGlobalPopupBr {background: url('http://officeimg.vo.msecnd.net/en-us/files/620/587/ZA102259198.png') no-repeat right bottom;} .pmgGlobalClear {clear: both;} div.pmgGlobalPopupBottomlayer div:pmgGlobalPopupFirst { background-color: Red; } .pmgGlobalPopupToplayer, .pmgGlobalPopupBottomlayer { position: relative; } .pmgGlobalCornerPosTleft {top: 0pt; left: 0px;} .pmgGlobalCornerPosTright {z-index: -9999; top: 0pt; right: 0px;} .pmgGlobalCornerPosBleft {bottom: 0pt; left: 0pt;} .pmgGlobalCornerPosBright {bottom: 0pt; right: 0pt;} .pmgGlobalCloseImg {cursor:pointer;margin-left: 5px; position:absolute;} #Ifrvideo {border: solid 2px gray;} .pmgGlobalPopupblurb{padding-left:45px;font-size:medium;} .pmgGlobalPopupclose{position: absolute;padding-top:5px;font-size:1.5em; top: 5px; right: 0; padding-right:64px;} .pmgGlobalPopupVideocnt{margin-top:35px;padding: 0 20px 10px;} .pmgGlobalPopupVideocnt p{align:center;} .pmgGlobalPopupInnershell {margin: 20px;} .Popupclose p{margin:5px 10px 5px 0;} .pmgGlobalShowcasevid { width:640px; height:360px; } /*Pop up End*/ /* Global Share module css*/ .pmgGlobalAppShare span, .pmgGlobalAppShare ul { display: inline; vertical-align: bottom; } .pmgGlobalAppShare span { font-size:1.5em; padding:0 10px 0 0; color: #888; } .pmgGlobalAppLikebtn { position:absolute; top: 0; right: 0; width: 50px; } .pmgGlobalFBBtnLayout { right:70px; } .pmgGlobalAppShare .pmgInlineButtons { margin: 0; padding: 0; } .pmgGlobalAppShare .pmgInlineButtons li { display: inline; list-style-image: none; } /* refactor */ .pmgGlobalAppShare .pmgGlobalInlineButtons { margin: 0; padding: 0; } .pmgGlobalAppShare .pmgGlobalInlineButtons li { display: inline; list-style-image: none; } /*End*/ /* Outlook Social Connector */ .pmgOscnPage { padding: 0 70px 0 70px; width: 800px; line-height: normal; } .pmgOscnIcons { text-align: center; width: 100%; } .pmgOscnIcons li { display: inline-block; *display: inline; *zoom: 1; text-align: center; vertical-align: middle; padding: 0 60px 0 0; } /* Excel */ #pmgAppExcel { color: #000000; margin: auto; width: 940px; } #pmgAppExcel a {color: #0066CC;} #pmgAppExcel h3, #pmgAppExcel h4 { font-family: Segoe UI Semibold,Segoe UI,Sans-Serif; font-weight: normal; } #pmgExcelCenteredHero { height: 273px; margin-top: 25px; width: 826px; } .pmgExcelModuleSmall { width: 310px; } #pmgExcelSmFeed { margin: 30px 0 0 10px; position: relative; } #pmgExcelSmTitle { background: none repeat scroll 0 0 #FCA822; font-size: 0.9em; font-weight: bold; height: 25px; width: 300px; } #pmgExcelSmFeed a { color: #0066cc; } #pmgExcelSmTitle a { color: #FFFFFF; } #pmgExcelSmTitle li { display: inline-block; height: 20px; list-style: none outside none; margin: 2px auto 2px 17px; padding: 2px 0 0 27px; vertical-align: middle; } #pmgExcelSmFeed #pmgSmFeed { width: 300px; min-height: 140px; } #pmgExcelSmFeed .pmgRssFeed { width: 500px; } #pmgExcelSmFeed .pmgRssLiveFeed { min-height: 300px; } #pmgExcelSmFeed #pmgSmFeed { min-height: 140px; width: 300px; } #pmgExcelSmFeed .pmgSmFeedEven { background-color: #D9E8F7; border-left: 1px solid #7fb2e5; border-right: 1px solid #7fb2e5; } #pmgExcelSmFeed .pmgRssFeed h4 { color: #98499E; } #pmgAppExcel .pmgGlobalCarousel { margin-left: 40px; } #pmgAppExcel .pmgLeftJab40 { margin-left: 40px; } /* refactor */ #pmgAppExcel .pmgGlobalLeftJab40 { margin-left: 40px; } #pmgAppExcel .pmgExcelOverrideRightCtn { background-color: White; padding: 10px 0 0 35px; background: none repeat scroll 0 0 transparent; } .pmgExcelRightCol p { padding-bottom: 20px; } #pmgExcelRule {margin-left: 20px;} .pmgExcelIcon {float:left; padding-right: 5px;} .pmgExcelModuleMedium #pmgRssFeatured { background: none repeat scroll 0 0 #D9E8F7; border-top: 1px solid #CCCCCC; border-bottom: 1px solid #CCCCCC; border-left: 1px solid #7fb2e5; border-right: 1px solid #7fb2e5; margin: 0; padding: 0 30px; position: relative; } .pmgExcelModuleMedium #pmgRssFeatured img { left: 30px; position: absolute; } .pmgExcelModuleMedium #pmgRssFeatured p { margin: 0 0 0 70px; padding-left: 10px; } #pmgAppExcel .pmgSmAuthor,#pmgAppExcel .pmgRssAuthor { color: #0066cc; } .pmgExcelGreenTitle { font-family: Segoe UI Semibold; font-size: 18px; color: #2ba730; padding-bottom: 24px; } .pmgExcelOfficeAnywhere { padding-left: 30px; } #pmgExcelAnywhere a { color: #0066CC; } #pmgExcelAnywhere { padding-top: 4px; height: 23px;margin-bottom: 30px;} .pmgExcelOrangeBoxHead{ background: url("http://officeimg.vo.msecnd.net/en-us/files/749/577/ZA102420644.png") top center no-repeat; margin-left: 40px; } .pmgExcelOrangeBoxCont{ background: url("http://officeimg.vo.msecnd.net/en-us/files/749/577/ZA102420644.png") bottom center no-repeat; } .pmgGlobalSection7030 .pmgExcelRightCol { width: 350px; float: left; } .pmgExcelRightColList ul { list-style-type: none; padding-bottom: 15px; } .pmgExcelRightColList li { padding: 5px 0 0 53px ; } .pmgExcelModuleSmall .pmgModuleBody { background: url("http://officeimg.vo.msecnd.net/en-us/files/156/040/ZA102395439.png") repeat-y scroll 0 0 transparent; } .pmgExcelModuleMedium .pmgModuleBody { background: url("http://officeimg.vo.msecnd.net/en-us/files/462/251/ZA102530377.png") repeat-y scroll center top transparent; } #pmgExcelModuleBody .pmgRssFeed { width: 814px; } .pmgExcelModule820w { width: 820px; } .pmgExcelThirdColBG { background: url('http://officeimg.vo.msecnd.net/en-us/files/366/819/ZA102532686.png') top left repeat-y; } #pmgExcelThirdCol { overflow: auto; margin-bottom: 30px; } #pmgExcelThirdCol p { line-height: 1.7em; } #pmgExcelThirdCol h4 { padding-bottom: 5px; } .pmgExcelThirdColBox1 { width: 270px; } .pmgExcelThirdColBox2 { width: 250px; padding: 10px 0 0 33px; } .pmgExcelThirdColBox3 { width: 220px; padding: 0 0 0 15px; float: right; } .pmgExcelCarouselRText { display: inline-block; float: right; padding-right: 80px; } .pmgExcelIconHeader { position: relative; width: 350px; height: 63px; } .pmgExcelIconTitle { position: absolute; top: -14px; left: 70px; } .pmgExcelIconButtons { position: absolute; top: 38px; left: 70px; } .pmgExcelExplore{width:100%;float:left;} .pmgExcelExpCnt{ width:160px; float:right;padding:5px 0px 0px 0px;} .pmgExcelExpRule{padding:20px 0px 20px 0px;} /* end excel */ /* carousel */ .pmgGlobalCarousel{ height: auto; width: auto; display:none;} .pmgGlobalCarousel #pmgGlobalCarouselLeftArrow, .pmgGlobalCarousel #pmgGlobalCarouselRightArrow, .pmgGlobalCarousel #filmstrip { float: left; } UL#filmstrip{ list-style-type: none;margin:0px;padding:0px; position:relative;} UL#filmstrip LI { display:inline; margin: 0px;} .pmgGlobalCarouselThumbnail { cursor:pointer; z-index:2; float: left; margin-right: 10px; margin-left: 10px; padding-top:2px; } .pmgGlobalCarouselThumbnailVisited { cursor:pointer; z-index:2; float: left; margin-right: 10px; margin-left: 10px; padding-top:2px; background: url(../images/green-tick-or-check-mark.jpg) no-repeat; background-position: center center; } .pmgGlobalCarouselThumbnailHover { cursor:pointer; z-index:2; float: left; margin-right: 8px; margin-left: 8px; padding-left: 2px; padding-top: 2px; padding-right: 2px; background-color: #fca822; } .pmgGlobalCarouselImgthumbnail { width:100px; height:100px; cursor:pointer; z-index:1; border: solid 4px gray; opacity: .50; filter: alpha(opacity=50); -moz-opacity:.50; } .pmgGlobalCarouselImgthumbnailHover { width:100px; height:100px; cursor:pointer; z-index:1; border: solid 4px Transparent; } .pmgGlobalCarouselFilmstrip { overflow:hidden; position: relative; } .pmgGlobalCarouselFilmstrip { display:block; height: auto; float: left; padding-bottom:14px; overflow:hidden; margin-left: 5px; margin-right: 5px; } .pmgGlobalCarouselNav { height:100px; width: 20px; display:table-cell; vertical-align: middle; position: relative; cursor:pointer; } .pmgGlobalCarouselMiddleArrow { top: 40%;margin: auto; position: relative; vertical-align: middle; padding-left: 4px; } .pmgGlobalCarouselContent { color: #FFFFFF; display: block; font-family: Segoe UI; font-size: 14px; height: 38px; margin-bottom: 35px; margin-left: 40px; padding-left: 32px; padding-top: 10px; vertical-align: middle; } .pmgGlobalCarouselClear {clear:both; height:0px;} .pmgGlobalCarouselArrow {position:absolute;margin-bottom: 20px; z-index: 999;} .pmgGlobalCarouselText {position: absolute; display:none;} /* end carousel*/ /* what is new */ .pmgWhatisnewTopContent { padding-top:35px; overflow:auto; } .pmgWhatisnewBoxHero { padding:0px 20px 35px 45px; width:195px; float:left; } .pmgWhatisnewTitle { font-family:Segoe UI Light; color:#000000; font-size:3.0em; float:left; padding-bottom:25px; } .pmgWhatisnewTitleLayout { width:500px; float:left; } .pmgWhatisnewTitleBold { font-family:Segoe UI Semibold; } .pmgWhatisnewBtnLayout { padding-right:8px; float:left; } .pmgWhatisnewBtmContent { margin-left:35px; overflow:auto; } .pmgWhatisnewTblHdl { padding:0px 0px 23px 12px; font-family:Segoe UI; font-size:2.0em; color:#000000; margin-top:-10px; } .pmgWhatisnewTbl { width:866px; border-spacing:0; border-collapse:collapse; border-left:1px solid #e2e2e2; } .pmgWhatisnewTblBorderRepeat { position:relative; margin-top:10px; padding-left:2px; width:865px; background:url('http://officeimg.vo.msecnd.net/en-us/files/891/862/ZA102446954.png') repeat-y; float:left; } .pmgWhatisnewTblBottomBorder { width:865px; margin-bottom:20px; background:url('http://officeimg.vo.msecnd.net/en-us/files/564/618/ZA102459463.jpg') no-repeat left bottom; float:left; height:3px; } .pmgWhatisnewColSpan65Hdl { width:65%; background-color:#e1e1e1; border-bottom:#cfcfcf 1px solid; } .pmgWhatisnewColSpan65 { width:65%; background-color:#f9f9f9; border-bottom:#e2e2e2 1px solid; } .pmgWhatisnewColSpan10 { width:10%; } .pmgWhatisnewIconLayout { padding-left:12px; padding-right:15px; width:32px; } #pmgWhatisnewFootnote { font-size:1.0em; font-style:italic; padding-left:50px; padding-top:20px; width:825px; color:#000000; } .pmgWhatisnewAppName { font-family:Segoe UI; color:#000000; font-size:1.8em; margin-top:-40px; padding-left:59px; } .pmgWhatisnewText { padding-left:59px; font-size:1.2em; color:#000000; font-family:Segoe UI Semibold; } .pmgWhatisnewBlurb { width:400px; margin-top:10px; } .pmgWhatisnewContent { font-size:1.0em; color:#000000; font-family:Segoe UI; padding-left:20px; line-height:35px; } .pmgWhatisnewEvenCol1 { background-color:#ffe79b; text-align:center; border-bottom:#e2d3a1 1px solid; border-top:#fff0c2 1px solid; border-right:white 2px solid; } .pmgWhatisnewEvenCol2 { background-color: #fee8a2; text-align:center; border-bottom:#e2d3a1 1px solid; border-top:#fff0c2 1px solid; border-right:white 2px solid; } .pmgWhatisnewEvenCol3 { background-color: #fef3d1; text-align:center; border-bottom:#e2d3a1 1px solid; border-top:#fff0c2 1px solid; border-right: #D3D3D3 2px solid; } .pmgWhatisnewBtn { margin-top:-40px; float:right; padding-right:19px; } .pmgWhatisnewOddCol1 { text-align:center; background-color:#ffda66; border-bottom:#e2d3a1 1px solid; border-top:#fff0c2 1px solid; border-right:white 2px solid; } .pmgWhatisnewOddCol2 { text-align:center; background-color:#fef0c2; border-bottom:#e2d3a1 1px solid; border-top:#fff0c2 1px solid; border-right:white 2px solid; } .pmgWhatisnewOddCol3 { text-align:center; background-color:#fdecb8; border-bottom:#e2d3a1 1px solid; border-top:#fff0c2 1px solid; border-right: #D3D3D3 2px solid; } .pmgWhatisnewOptionSelection { padding:0px 0px 4px 4px; width:198px; background:url('http://officeimg.vo.msecnd.net/en-us/files/162/461/ZA102463868.png'); float:right; margin-right:4px; margin-top: 4px; margin-bottom:-1px; } .pmgWhatisnewOffice2010 { background:url('http://officeimg.vo.msecnd.net/en-us/files/948/922/ZA102463866.png'); text-align:center; border-bottom:#fff0c2 1px solid; border-right:white 2px solid; } .pmgWhatisnewKey { color:#000000; padding-left:7px; } .pmgWhatisnewTbl a { color:#000000; } .pmgWhatisnewImgLayout { padding-left:12px; } #pmgWhatisnewHeaderImage { background:url('http://officeimg.vo.msecnd.net/en-us/files/518/003/ZA102459279.png') no-repeat; width:866px; } #pmgWhatisnewCol3 { border-right: #D3D3D3 2px solid; } /* end what is new*/ /* Outlook CSS Start */ #pmgAppOutlook { color: #000000; margin: auto; width: 940px; } #pmgAppOutlook a { color: #0066CC; } #pmgAppOutlook h3, #pmgAppOutlook h4 { font-family: Segoe UI Semibold,Segoe UI,Sans-Serif; font-weight: normal; } #pmgAppOutlook .pmgGlobalLeftJab40 { margin-left: 40px; } #pmgAppOutlook .pmgOutlookOverrideRightCtn { background-color: White; padding: 0px 0px 0px; } #pmgOutlookAnywhere { background: url('http://officeimg.vo.msecnd.net/en-us/files/909/886/ZA102501031.jpg') no-repeat scroll center top transparent; margin-bottom: 21px; height: 52px; width: 822px; padding-top: 10px; text-indent: 105px; } #pmgOutlookCenteredHero { height: 273px; margin-top: 25px; width: 826px; } .pmgOutlookModuleHeadline { padding: 0 0 10px 30px; } .pmgOutlookModuleMedium .pmgModuleBody { background: url('http://officeimg.vo.msecnd.net/en-us/files/413/855/ZA102407013.png') repeat-y center top; } .pmgOutlookModuleTiny { width: 280px; padding: 0 0 35px 30px; } .pmgOutlookOfficeAnywhereText1 { font: 30px/30px 'Segoe UI Light', sans-serif; color: #606060; } .pmgOutlookOfficeAnywhereText2 { font: 30px/30px 'Segoe UI Semibold', sans-serif; color: #e77b1c; padding: 0 8px; } #pmgOutlookBottomMods { padding-top: 10px; } .pmgOutlookBottomMod { float: left; width: 240px; } .pmgOutlookBottomModBg { background: url('http://officeimg.vo.msecnd.net/en-us/files/177/906/ZA102473179.png') repeat-y center top; margin: -3px 0 -8px 0; } .pmgOutlookBottomModR { margin-left: 20px; } .pmgOutlookBottomHeader { border-bottom: dotted 1px gray; width: 230px; margin-left: 4px; } #pmgOutlookBottomMods .pmgOutlookBottomMod h3 { font-family: 'Segoe UI Light', sans-serif; padding: 2px 5px 5px 20px; } .pmgOutlookBottomMod ul { padding: 15px 0 0 15px; } .pmgOutlookPadBot10 { padding-bottom: 10px; } #pmgOutlookDemo { position: relative; padding-top: 15px; width: 265px; } #pmgOutlookDemoImage a { background: url('http://officeimg.vo.msecnd.net/en-us/files/454/049/ZA102501134.png') no-repeat -239px 0px; width: 239px; height: 139px; display: block; } #pmgOutlookDemoImage a:hover { background: url('http://officeimg.vo.msecnd.net/en-us/files/454/049/ZA102501134.png') no-repeat top left; } .pmgOutlookRightMod { clear: left; padding-top: 30px; } .pmgOutlookRightMod p { padding-top: 5px; } .pmgOutlookRightMod2 { padding-left: 58px; width: 185px; } .pmgOutlookRightModContentImg { float: left; padding-right: 14px; width: 44px; } .pmgOutlookRightModContentText { float: left; width: 220px; } #pmgOutlookDemoImage { padding-left: 13px; } #pmgOutlookAnywhere a:link { text-decoration: none; color: #606060; } #pmgOutlookAnywhere a:visited { text-decoration: none; color: #606060; } #pmgOutlookAnywhere a:hover { text-decoration: none; } #pmgOutlookHeroMapImage { position: relative; width: 821px; height: 266px; overflow: hidden; background: url('http://officeimg.vo.msecnd.net/en-us/files/508/547/ZA102470840.jpg') top left no-repeat; } #pmgOutlookHeroMapImage a { display: block; position: absolute; text-decoration: none; } #pmgOutlookHeroMapImage a i { visibility: hidden; } a#pmgOutlookHeroClutterLink { left: 20px; top: 200px; width: 255px; height: 36px; } a#pmgOutlookHeroOnePlaceLink { left: 580px; top: 193px; width: 195px; height: 50px; } #pmgOutlookLinkCnt {height:200px;} #pmgOutlook5MMOCnt {margin-top: 20px; margin-left: 20px;} /* Outlook CSS End */ /* Mobile Interactive Start*/ .pmgMobileInteractivePage{ width: 920px; margin: auto; } .pmgMobileInteractiveVideo{ width: 920px; height: 680px; } .pmgMobileInteractiveCTA1{ display: inline; font-size: 2em; } .pmgMobileInteractiveCTA2{ display: inline; font-size: 1.5em; } /* Mobile Interactive End*/ /* Mobile Homepage start */ .pmgMobileNewsbitContainer { background: url('http://officeimg.vo.msecnd.net/en-us/files/066/682/ZA102530231.jpg') no-repeat 0 0; margin: 10px 0 30px; width: 272px; height: 168px; overflow: hidden; margin: 10px 0 30px; float: left; } .pmgMobileNewsbitContent { float: left; width: 260px; height: 161px; padding: 5px 5px 5px 10px; } .pmgMobileNewsbitContentImage { float: left; width: 51px; } .pmgMobileNewsbitContentText { float: left; padding: 6px 0 0 7px; width: 197px; } .pmgMobile_NewsbitContentTextHeader { font: 1.3em/1.3em 'Segoe UI', Arial, Verdana, sans-serif; } .pmgMobile_NewsbitContainerEnd { clear: left; } .pmgMobileNewsbitContentText a { line-height: 1.5em; } /* Mobile Homepage end */ /* Small business*/ /* Small Business CSS Start */ .pmgSmallBusiness4col { padding: 5px 0 0 10px; vertical-align: top; font-family: 'Segoe UI', Arial, Verdana; width: 400px; } .pmgSmallBusiness4colImage { padding: 4px 0 0 10px; vertical-align: top; width: 80px; } .pmgSmallBusiness4colHeader { margin-top: 4px; font-size: 1.33em; } .pmgSmallBusiness4colText { font-size: 1em; padding-left: 10px; width: 290px; } .pmgSmallBusinessFloatLeft { float: left; } .pmgSmallBusinessClearLeft { padding: 0; margin: 0; height: 1px; font-size: 0.08em; clear: left; } /* Small Business CSS End */ /*Access style*/ #pmgAccessHeroTickerSpace { height:290px; } .pmgAccess { margin: 0; padding: 0; line-height: normal; margin-left:55px; overflow:auto; } .pmgAccessTopContent { margin:0px; overflow:hidden; position:relative; } .pmgAccessIcon { margin:0px 13px 19px 0px; width:47px; float:left; } .pmgAccesAppNameLayout { width :400px; float:left; } .pmgAccessAppName { font-family:Segoe UI Semibold; color:#000000; font-size:3.5em; } .pmgAccessTopLeft { width:500px; float:left; } .pmgAccessBtn { float:left; padding-right:17px; width:500px; } .pmgAccessBtnSpace { padding-right:10px; } .pmgAccessAppYr { font-family:Segoe UI Light; } .pmgAccessTopRight { position:relative; float:left; margin-top:0px; width:385px; } .pmgAccessHero { margin-top:5px; float:left; } .pmgAccesHeroImage { width:821px; height:266px; margin-top:20px; } .pmgAccessHeroBtmCnt { margin-top:20px; float:left; width:885px; } .pmgAccessHeroBtmLft { width:30%; margin-left:20px; float:left; overflow:auto; } .pmgAccessHeroBtmLftImg { margin-bottom:30px; padding-top:10px; margin-left:60px; } .pmgAccessHeroBtmText { font-family:Segoe UI; font-size:1.8em; color:#833262; margin-top:-20px; text-align:center; } .pmgAccessHeroBtmMdl { width:30%; float:left; } .pmgAccessHeroBtmRgt { width:30%; float:left; } .pmgAccessHeroBtmRgt #LastImgDivider { float:right; margin-top:-100px; } .pmgAccessBtmCntLft { float:left; width:500px; } .pmgAccessBkgImg { background:url(http://officeimg.vo.msecnd.net/en-us/files/686/001/ZA102503161.png) no-repeat; width:489px; height:86px; } .pmgAccessBtmCnt { margin-top:30px; /*margin-left:55px;*/ float:left; } .pmgAccessBtmCntLft h3 { padding:5px 0px 0px 15px; } .pmgAccessBtmCntLft p { padding-left:15px; } #pmgAccessBtmCntLftSpace { margin-top:10px; margin-bottom:10px; } .pmgAccessBtmCntRgt { float:left; margin-top:0px; } .pmgAccessCntMod { margin-top:30px; height:81px; width:820px; background:url('http://officeimg.vo.msecnd.net/en-us/files/313/076/ZA102503152.jpg') no-repeat; float:left; } .pmgAccessCntMod h4 { font-family:Segoe UI Semibold; font-size:2.5em; color:#ac3066; margin-top:10px; margin-bottom:0px; float:left; } .pmgAccessCntMod h4 span { padding:0px 40px 0px 40px; } .pmgAccessCntModTxt { width:350px; margin-top:10px; font-family:Segoe UI; font-size:1.0em; color:#000000; float:left; } .pmgAccessTicker { padding-left:25px;margin-top:-40px; width:810px; height:30px; } .pmgAccessTicker ul { color:#FFFFFF; } .pmgAccessTicker li { list-style-type:none; } .pmgAccessTickerCnt {position:relative;top:-80px;padding-left:600px;float:left;width: 210px;overflow:hidden;height:51px;} .pmgAccessNavDiv {float:left;margin-left:5px;} .pmgAccessNavDisplay {background:url('http://officeimg.vo.msecnd.net/en-us/files/977/494/ZA102644265.png') no-repeat; width:21px;height:21px;float:left;margin-left:5px;cursor:pointer;} div.pmgAccessSelNav{background:url('http://officeimg.vo.msecnd.net/en-us/files/595/703/ZA102644312.png') no-repeat; width:22x;height:21px;float:left;margin-left:5px;cursor:pointer;} .pmgAccessTickerCnt ul {color: #000000;padding-left:0px;} .pmgAccessTickerCnt li {list-style-type:none;} .pmgAccessBody {display:inline-block;} .pmgAccessTickerMod {width:820px;float:left;margin-top:15px;height:120px;} #pmgAccessHeroTickerSpace ul{padding:0px;} #pmgAccessNavigation{position:relative;margin-top:-35px;margin-left:730px;background-color:transparent;} .pmgAccess h3 { padding:5px 0px 0px 15px; margin-top:0px; margin-bottom:0px; } .pmgAccessBtmCntLft p { padding-left:15px; margin-top:0px; margin-bottom:0px; padding-top:7px; } .pmgAccessHeroBtmText a { color:#833262; } .pmgAccessBizMdlCnt { width: 885px; float: left; margin-top: 0px; } .pmgAccessBizTbl { border-spacing:0; border:#e2e2e2 1px solid; border-collapse:collapse; } .pmgAccessBizTblFirstCol { width:200px; height:65px; background-color:#ac3066; color:#FFFFFF; border-right:#e2e2e2 1px solid; } .pmgAccessBizTblSecCol { width:345px; height:65px; background-color:#f6eef2; color:#656565; } .pmgAccessBizTblOddRow { background-color:#FFFFFF; height:40px; text-align:left; font-family:Segoe UI; border-top:#e2e2e2 1px solid; } .pmgAccessBizTblEvenRow { background-color:#f4f4f4; height:40px; text-align:left; font-family:Segoe UI; border-top:#e2e2e2 1px solid; } .pmgAccessBizTblRowFirstCol { font-size:1.2em; border-right:#e2e2e2 1px solid; padding-left:10px; } .pmgAccessBizTblRowSecCol { color:#000000; font-size:1em; padding-left:10px; } .pmgAccessBizLnkPad { padding:20px 0px 0px 0px; } /* Image Zoom control */ .pmgAccess #zoom-area1, .pmgAccess #zoom-area2 {border: solid 1px gray; position: relative; height: 209px; width: 279px;margin-bottom: 10px;} .pmgAccess #zoom-device1, .pmgAccess #zoom-device2 {width: 75px; height: 100px; border: solid 1px red; position: absolute; cursor:move; background-color: White; display: none;z-index: 999} .pmgAccess #preview-area1, .pmgAccess #preview-area2 {position: relative;border: solid 1px gray; background: url("../CSS") 0 0;float: left; display:none; z-index: 1001;} /* Hiphop control & powerpoint css*/ .pmgHipHopPanel { background: #cccccc; height: 300px; width: 240px; position: relative; margin-right: 5px; } .pmgHipHopOverPanel { background: #123456; height: auto; width: 200px; position: absolute; } .pmgHipHopContent { position: absolute; } .pmgPowerPoint{ margin-left: 30px; line-height: normal; } .pmgPowerPoint UL { margin: 0px; padding: 0px; list-style-type:none; font-size: 14px; } .pmgPowerPoint a { color: #ffc20e; text-decoration: none; } #pmgPowerPointHero { height: 344px; } .pmgPPTTopContent { position: relative; margin-top: 90px; margin-left: 45px; top: -330px; width: 300px; } .pmgPPTTopContent img { vertical-align:bottom; } .pmgPPTTopContent li,.pmgPPTTopContent a ,#pmgPPTBlurb span { font-family: 'Segoe UI', Arial; font-size: 18px; } #pmgPPThiphop1 p,#pmgPPThiphop2 p,#pmgPPThiphop3 p, #pmgPPThiphop4 p { line-height:2em; } UL#hiphopGroup li div.pmgOverlayContent ul { margin-top:15px; } UL#hiphopGroup li div.pmgOverlayContent ul li { float: none; display: block; line-height: 2em; } #tickerSpace .pmgPPTTopContent a,#pmgPPTBlurb a { color:#e76425; } #tickerSpace { position: relative; } .pmgPPTTopContent h2,.pmgPPTTopContent h3 { font-family: 'Segoe UI Light',Arial; font-size: 28px; line-height: normal; margin-bottom: 10px; font-weight: normal; width: 260px; } .pmgPPTTopContent h3 { font-size:40px; } .pmgGlobalMargin00200000 { margin:0 20px 0 0; } .pmgPPTTopContent UL { list-style-type: square; color: Orange; margin-left: 18px; } #pmgPowerPointHero h2, #pmgPowerPointHero h1 { top: 0; left: 0; display:inline; font-weight: normal; } .pmgGlobalLeft00000095 { margin:0 0 0 95px; } .pmgPPTBlurbModule span { font-size:20px; } .pmgGlobalBtmMargin23 { margin-bottom: 23px; } UL#hiphopGroup, UL#pmgThirdBlockList { width: 900px; } #secondBlock, #thirdBlock, .pmgHipHopPanel { overflow: hidden; clear: both; } UL#pmgThirdBlockList { margin-left: 11px; } UL#hiphopGroup li, UL#pmgThirdBlockList li { display: inline-block; float: left; margin-right: 16px; } #pmgPPTFBplugin{ height:30px; width:100px; } #hiphopGroup #hiphop1, #hiphopGroup #hiphop2, #hiphopGroup #hiphop3, #hiphopGroup #hiphop4{ display: none; } #hiphopGroup #pmgPPThiphop1, #hiphopGroup #pmgPPThiphop2, #hiphopGroup #pmgPPThiphop3,#hiphopGroup #pmgPPThiphop4{ display: none; } UL#pmgThirdBlockList li { width: 202px; margin-left:5px; } .pmgPowerPoint .pmgHipHopOverPanel { background: url("http://officeimg.vo.msecnd.net/en-us/files/699/654/ZA102547250.png") no-repeat scroll 15px 0 transparent; filter: 0; } .pmgHipHopOverPanel .pmgOverlayContent, UL#thirdBlock { margin: 10px 10px 10px 25px; } .pmgHipHopOverPanel .pmgPowerPointLabel { margin: 0px; font-size: 14px; color: White; font-family: 'Segoe UI Semibold', Arial; } #thirdBlock .pmgPowerPointSubHeadline, #heroTopContent h2 { color: #414042; font-weight: normal; } /*#pmgPPThiphop1 a,#pmgPPThiphop2 a,#pmgPPThiphop3 a,#pmgPPThiphop4 a{ color: orange; }*/ .pmgHipHopOverPanel p, #thirdBlock p{ font-size: 13px;} .#thirdBlock .pmgPowerPointSubHeadline, #thirdBlock p { font-family: 'Segeo UI'; } #thirdBlock p,#thirdBlock h2 { color: White; } #thirdBlock { height: 135px; width: 881px; background: url("http://officeimg.vo.msecnd.net/en-us/files/454/957/ZA102559549.jpg") no-repeat; } .pmgPPTTopContent div { font-size: 18px; } #thirdBlock .pmgPowerPointSubHeadline { color:white; font-size:14px; font-family:'Segoe UI Semibold',Arial; } #thirdBlock UL { margin-top: 20px; } .pmgPPTDefaultsubNav { float: left; padding: 5px; padding-top: 3px; margin:0px 0px 0px 5px; height:auto; width:13px; background:url('http://officeimg.vo.msecnd.net/en-us/files/037/515/ZA102547426.png') no-repeat; background-position:50% 10%; } #pmgPPTNavigation a{color:Black;outline:0;} #pmgPPTNavigation a.pmgPPTSelectedNav { color:White; } .pmgPPTSelectedNav { display:inline; float:left; margin:0px 0px 0px 5px; height:auto; width:13px; background:url('http://officeimg.vo.msecnd.net/en-us/files/941/231/ZA102547425.png') no-repeat; } .pmgPPTNavClass{position:absolute;width:90px;left:786px;top:300px;background-color:transparent;text-align:center;} /* Office Web Apps Start */ #pmgAppOfficeWebApps .pmgWebAppsLeftJab70 { margin-left: 70px; } .pmgWebAppsEmbeddedBG { margin-top: 30px; width: 511px; height: 401px; padding-left: 53px; background: url('http://officeimg.vo.msecnd.net/en-us/files/668/324/ZA102503452.png') top left no-repeat; } .pmgWebApps15em { font-family: 'Segoe UI Semibold', sans-serif; font-size: 1.5em; color: #58595B; padding: 10px 0; } #pmgWebAppsScenarios { color: #414042; margin: 80px 70px 0 40px; background: url('http://officeimg.vo.msecnd.net/en-us/files/262/003/ZA102503459.png') top left no-repeat; font-size: 120%; width: 269px; height: 331px; } .pmgWebAppsScenariosHeader { font-family: 'Segoe UI Light',sans-serif; font-size: 1.45em; padding: 27px 10px 35px 20px; } #pmgWebAppsScenarios p { font-family: 'Segoe UI Regular', sans-serif; font-size: 1.1em; padding: 10px 20px 10px 25px; } #pmgWebAppsTernaryBoxes { width: 765px; padding: 25px 100px; overflow: auto; clear: left; } .pmgWebAppsTernaryBoxDivider { width: 1px; height: 201px; margin: 10px 36px; float: left; background: url('http://officeimg.vo.msecnd.net/en-us/files/083/138/ZA102503460.png') top left no-repeat; } .pmgWebAppsTernaryBox .pmgGlobalLeftCol { float: left; width: 205px; } .pmgWebAppsTernaryBox .pmgGlobalMiddleCol { float: left; width: 205px; } .pmgWebAppsTernaryBox .pmgGlobalRightCol { float: left; width: 205px; } /* Office Web Apps End */ /* Basics*/ .pmgAccessBasicsCnt { margin:15px 0px 0px -10px; width:100%; float:left; } .pmgAccessBasicsLftCnt { width:293px; float:left; margin-bottom:10px; margin-left: 10px; } .pmgAccessBasicsImgSpc { margin: 0px 0px 0px 0px; } .pmgAccessBasicsRgtCnt { float:left; width:500px; margin-left:70px; } .pmgAccessBasicsTitle { font-family:Segoe UI Light; font-size:2.6em; color:#000000; float:left; width:450px; padding-top:10px; } .pmgAccessBasicsTitle span { font-family:Segoe UI; color:#ac3066; } #pmgAccessBasicsTitleLyt { padding-top:30px; } .pmgAccessBasicsTxt { font-size:1.2em; float:left; color:#000000; width:450px; } .pmgAccessBasicsCnt li { padding-top:5px; color:#ac3066; } .pmgAccessBasicsCnt ul { width:450px; font-size:1.2em; float:left; padding-left:15px; margin-top:0px; margin-left:0px; } .pmgAccessBasicsCnt li span { color:#000000; } .pmgAccessBasicTabCnt { float:left; width:885px; } #pmgAccessTabCtrl, .pmgGlobalTabCtrl { border: solid 1px gray; width: 820px; overflow: hidden; display: none; } #pmgAccessTabCtrl ul, .pmgGlobalTabCtrl ul { list-style-type: none; padding: 0px; margin: 0px; } #pmgAccessTabCtrl li, .pmgGlobalTabCtrl li { width: 160px; height: 55px; border: none; border-bottom: solid 1px gray; padding: 0px; text-align: center; background-color: #f6eef2; position:relative; } #pmgAccessTabCtrl li:hover, .pmgGlobalTabCtrl li:hover { cursor:pointer; } #pmgAccessTabCtrl .pmgGlobalTabLiSelected, .pmgGlobalTabCtrl .pmgGlobalTabLiSelected { background-color : #ac3066; } #pmgAccessTabCtrl .pmgGlobalTabLiHover, .pmgGlobalTabCtrl .pmgGlobalTabLiHover { background-color: #e8d9e0; } #pmgAccessTabCtrl #pmgGlobalTabContent, .pmgGlobalTabCtrl #pmgGlobalTabContent { float: left; padding: 0px; height: 296px; overflow:hidden; margin-left: 50px; margin-top: 1px; } #pmgAccessTabCtrl .pmgGlobalTabBorderBottomMost, .pmgGlobalTabCtrl .pmgGlobalTabBorderBottomMost { border-bottom-width: 0px; } #pmgAccessTabCtrl .pmgGlobalTabBorderRightMost, .pmgGlobalTabCtrl .pmgGlobalTabBorderRightMost { border-right-width: 0px; } .pmgAccessBasicsCarouselHdl { font-size:1.5em; color:#ac3066; padding-left:0px; margin-top:10px; margin-bottom:0px; } .pmgAccessBasicsBtmCnt { float: left; } .pmgAccessBasicsBkgLearnMore { background:url('http://officeimg.vo.msecnd.net/en-us/files/108/774/ZA102507548.jpg') no-repeat; width:211px; height:167px; float:left; } .pmgAccessBasicsBkgCustomize { background:url('http://officeimg.vo.msecnd.net/en-us/files/330/071/ZA102507602.jpg') no-repeat; width:307px; height:167px; float:left; margin-right:20px; } .pmgAccessBasicsBtmCnt ul { padding-left:15px; margin-left:0px; } .pmgAccessBasicsBtmCnt li { list-style-type:none; } .pmgAccessIntroHdl { font-family:Segoe UI Light; color:#000000; font-size:3em; margin-top:10px; float:left; width:680px; } .pmgAccessIntroHdl span { color:#ac3066; font-family:Segoe UI; } .pmgAccessBasicsCarousel { width:885px; float:left; } .pmgAccessbasicsCarouselLft { width:650px; float:left; } .pmgAccessbasicsCarouselRgt { width:150px; float:left; margin-top:25px; } .pmgAccessBasicsImgTxt {margin:5px 0px 0px 0px;font-family:Segoe UI Semibold;color:#000000;font-size:1.0em;float:left;width:60px;} .pmgAccessBasicsImgSpc {margin:15px 0px 0px 0px;} .pmgAccessBasicsImgZoom {float:left;width:150px;margin-top:5px;margin-left:70px;} .pmgAccessBasicsZoomIcon {float:left;margin-right:5px;} .pmgAccessBasicsZoomTxt {float:left;font-family:Segoe UI;color:#000000;font-size:1.0em;margin:0px;} .pmgAccessBasicsLftCnt{position:relative;} .pmgAccess .pmgGlobalBigBoxHead { margin-left:0px; } .pmgAccess .pmgExcelOrangeBoxCont { margin-left:0px; } /* Access Biz */ .pmgAccessIntroHdl p { font-family :Segoe UI; font-size :0.4em; margin-top :0px; } .pmgAccessIntroHdl p span { font-size:1.5em; color:#ac3066; } .pmgAccess h1 { margin:0px 0px 0px 0px; font-size:3em; font-weight:normal; color:#000000; font-family:Segoe UI Light; } .pmgAccess h1 span { color:#ac3066; font-family:Segoe UI; } .pmgAccessBizHero { width:885px; float:left; margin-bottom:30px; } .pmgAccessBizHeroImg { float:left; margin-right:10px; } .pmgAccessBizHeroImg a {color:#ffc200;margin-left:15px;font-size:1.1em;} .pmgAccessBizHeroImg p {margin-top:-95px;width:245px;color:#ffffff;margin-left:15px;font-size:1.4em;margin-bottom:5px;} .pmgAccessBizHero p { color:#FFFFFF; margin-top:-95px; margin-left:15px; font-size:1.4em; width:245px; } .pmgAccessBizHero a { color:#FFC200; font-size:1em; margin-left:15px; } .pmgAccessBizBtmCntLft { float:left; width:545px; } .pmgAccessBizBtmCntRgt { float:left; width:310px; margin-left:30px; } .pmgAccessBizBtmCntRgtHdl { font-family:Segoe UI Semibold; font-size:1.4em; color:#000000; } .pmgAccessBizBtmCntRgtQuotes { font-size:1.2em; font-family:Segoe UI; font-weight:bold; } .pmgAccessBizBtmCntRgtQuotes span { font-family:Segoe UI Light; font-weight:normal; } .pmgAccessBizBtmCntRgtGS { margin-top:40px; } .pmgAccessBizBtmCntRgtGS li { list-style-type:none; line-height:1.5em; } .pmgAccessBizBtmCntRgtGS ul { padding-left:0px; margin-left:0px; } .pmgAccessBizBtmCnt { float:left; width:100%; } .pmgAccessBizTblColPadOne { padding-top:10px; } .pmgAccessBizTblColPadTwo { padding-top:8px; } .pmgAccessBizTblColPadThree { padding-top:4px; } .pmgAccessBizTblTopRow { font-family:Segoe UI Semibold; font-size:1.75em; text-align:center; } /* Office Web Apps START */ #pmgWebAppsInteractiveHero { width: 100%; height: 331px; overflow: visible; padding: 35px 0 0 70px; position: relative; } #pmgWebAppsHero { background: url('http://officeimg.vo.msecnd.net/en-us/files/883/158/ZA102503465.png') top left no-repeat; width: 820px; height: 290px; } .pmgWebAppsHeader { font-family: 'Segoe UI Light', sans-serif; color: #58595B; padding-left: 28px; padding-top: 7px; font-size: 26px; } .pmgWebAppsSubhead { font-family: 'Segoe UI', sans-serif; color: #58595B; padding-left: 28px; font-size: 13px; } #pmgWebAppsTickerSpace { padding-top: 2px; } #pmgWebAppsList { top: 10px; } #pmgWebAppsList li { float: left; list-style-type: none; display: inline; } .pmgWebApps20mtop { margin-top: 20px; } .pmgWebAppsBlurbBG1 { background: url('http://officeimg.vo.msecnd.net/en-us/files/310/916/ZA102514198.png') top left no-repeat; width: 820px; height: 228px; } .pmgWebAppsBlurbBG2 { background: url('http://officeimg.vo.msecnd.net/en-us/files/924/783/ZA102514280.png') top left no-repeat; width: 820px; height: 228px; } .pmgWebAppsBlurbBG3 { background: url('http://officeimg.vo.msecnd.net/en-us/files/373/592/ZA102514284.png') top left no-repeat; width: 820px; height: 228px; } .pmgWebAppsBlurbContent { padding-left: 28px; width: 275px; } .pmgWebAppsBlurbHeader { font-family: 'Segoe UI Light', sans-serif; font-size: 20px; color: #FCA822; } .pmgWebAppsBlurbText { font-family: 'Segoe UI', sans-serif; font-size: 15px; color: #58595B; } #pmgWebAppsNavigation { width: 920px; height: 103px; top: -62px; left: -55px; position: relative; } .pmgWebAppsNavigationDivs { background-color: #FCA822; color: #FFF; height: 40px; text-align: center; vertical-align: top; } .pmgWebAppsNavPL { cursor: pointer; position: absolute; width: 273px; } .pmgWebAppsNav1pl { top: 62px; left: 55px; } .pmgWebAppsNav2pl { top: 62px; left: 329px; } .pmgWebAppsNav3pl { top: 62px; left: 603px; } .pmgWebAppsNavTitle { padding-top: 7px; font-family: 'Segoe UI', sans-serif; font-size: 18px; } a.pmgWebAppsNavTitle{ color:#ffffff; display: block; outline:0; } a.pmgWebAppsNavTitle:hover{text-decoration:none;} .pmgWebAppsNavigationSpanPL { position: absolute; visibility: hidden; } .pmgWebAppsNavigationSpan1 { top: -46px; left: -42px; } .pmgWebAppsNavigationSpan2 { top: -46px; left: 100px; } .pmgWebAppsNavigationSpan3 { top: -46px; left: 249px; } .pmgWebAppsSelectedNav { display: inline; color: #000; } .pmgWebAppsSelectedNav a{ color:#000000;} .pmgWebAppsSelectedSpan { visibility: visible; } #pmgWebAppsBody { width: 920px; display: inline-block; } #pmgOWAVideoThumbnail a { background: url('http://officeimg.vo.msecnd.net/en-us/files/808/807/ZA102514290.png') no-repeat -194px 0px; width: 194px; height: 158px; display: block; } #pmgOWAVideoThumbnail a:hover { background: url('http://officeimg.vo.msecnd.net/en-us/files/808/807/ZA102514290.png') no-repeat top left; } a#pmgWebAppsImageMap { height: 287px; width: 820px; left: 69px; top: 35px; } #pmgWebAppsHero a { display: block; position: absolute; text-decoration: none; z-index: 1000; } #pmgWebAppsHero a i { visibility: hidden; } .pmgWebAppsSubhead h1 { font-weight: normal; font-size: 13px; } .pmgWebAppsFBPlugin { position: absolute; top: 0; right: 35px; width: 320px; } /* Office Web Apps END */ /* tab control start */ UL.pmgGlobalLeftBorder { border-right: solid 1px gray; float:left; } UL.pmgGlobalRightBorder { border-left: solid 1px gray; float:left; } UL.pmgGlobalTopBorder { border-bottom: solid 1px gray; } UL.pmgGlobalBottomBorder { border-top: solid 1px gray; } .pmgGlobalTabOverlay { height: 100%; position: absolute; width: 162px; z-index: 0; } .pmgGlobalTabOverlaySelected { background: url('http://officeimg.vo.msecnd.net/en-us/files/503/571/ZA102519233.png') no-repeat 0 50%; right: 5px; } span.pmgGlobalTabLabel { z-index:2; position: relative; top: 20%; left: 0; } span.pmgGlobalTabLabelSelected { color: #fff; z-index: 2; } li.pmgGlobalVerticalTab { border-bottom-width: 0px; padding: 0px; text-align: center; display: table-cell; width: 129px; border-right: solid 1px gray; margin: 0px; float: left; } .pmgGlobalTabContent {} .pmgGlobalTabContainer p { display:none;} .pmgGlobalTabClear{clear: both; height: 0px;} .pmgAccessTabContentAlign { position: absolute; top: 10px; } /* tab control end */ /* Business Merge Page */ #pmgBizMergeTabCtrl { border: solid 1px gray; width: 884px; overflow: hidden; border: none; display: none; } #pmgBizMergeTabCtrl ul { list-style-type: none; padding: 0px; margin: 0px; position: relative; } #pmgBizMergeTabCtrl #pmgGlobalTabContent { float: left; padding: 0px; height: 296px; overflow-y:hidden; margin-left: 50px; margin-top: 1px; } #pmgBizMergeTabCtrl .pmgUnSelectedRight { background: url("http://officeimg.vo.msecnd.net/en-us/files/243/127/ZA102545691.png") no-repeat scroll 0 5px transparent; /*left: 432px;*/ right: 6px; z-index: 0; } #pmgBizMergeTabCtrl .pmgUnSelectedLeft { background: url("http://officeimg.vo.msecnd.net/en-us/files/250/235/ZA102545690.png") no-repeat scroll 0 5px transparent; left: 0; } #pmgBizMergeTabCtrl .pmgSelectedLeft { background: url("http://officeimg.vo.msecnd.net/en-us/files/350/713/ZA102545695.png") no-repeat; z-index: 1; left: 0; } #pmgBizMergeTabCtrl .pmgSelectedRight { background: url("http://officeimg.vo.msecnd.net/en-us/files/987/747/ZA102545689.png") no-repeat; /*left: 432px;*/ right: -9px; z-index: 1; } #pmgBizMergeTabCtrl .pmgGlobalTabOverlay { height: 76px; width: 461px; } #pmgBizMergeTabCtrl li { background-color: Transparent; border: solid 0px transparent; } #pmgBizMergeTabCtrl li.pmgGlobalVerticalTab { text-align: left; height: 76px; cursor: pointer; } #pmgBizMergeTabCtrl #pmgGlobalTabContent { float: left; padding: 0px; overflow:auto; margin-left: 0px; margin-top: 0px; border: solid 1px gray; border-top: none; } #pmgBizMergeTabCtrl UL.pmgGlobalTopBorder { border-bottom: none; } #pmgBizMergeTabCtrl UL.pmgGlobalRightBorder {border: none;} /* End business merge page */ /*Free Office*/ .pmgFreeOffice { float:left; margin:0px 0px 0px 25px; font-family:Segoe UI; } .pmgFreeOffice h1 { font-family:Segoe UI Semibold; font-size:2.4em; padding:1px 0px 0px 15px; margin:0px 0px 0px 0px; } .pmgFreeOfficeIntro { width:580px; padding:0px 0px 0px 15px; margin: 20px 0px 20px 0px; font-size:1.3em; } .pmgFreeOfficeHero { width:100%; float:left; } .pmgFreeOfficeLyt { margin:0px 15px 0px 0px; } .pmgFreeOfficeBtmCnt { width: 860px; float:left; margin:30px 0px 0px 40px; } .pmgFreeOfficeBtmCntLyt { width:33%; float:left; } .pmgFreeOfficeImg { float:left; } .pmgFreeOfficeLnks { width:175px; padding:0px 0px 0px 15px; float:left; } .pmgFreeOffice p { margin:5px 0px 5px 0px; font-family:Segoe UI Semibold; font-size:1.4em; } .pmgFreeOfficeBtmCnt a { font-size:1.2em; line-height:1.5em; } /*Free Office ends*/ /* Business START */ #pmgBusinessContent { padding-left: 30px; } #pmgBusinessContent h3 { font-size: 1.5em; } .pmgBusinessMod880 { width: 885px; clear: both; } #pmgBusinessTabbedModule { margin-top: 10px; } .pmgBusinessTabbedText { font-size: 1.3em; } .pmgBusinessTabbedHeader { font-size: 1.4em; line-height: normal; } #pmgBusinessTabbedModule #pmgBizMergeTabCtrl #pmgGlobalTabContent { border: none; padding: 17px 0 0 20px; } #pmgBizMergeTabCtrl #pmgGlobalTabContent { background: url('http://officeimg.vo.msecnd.net/en-us/files/186/595/ZA102547357.png') top left no-repeat; } #pmgBizMergeTabCtrl img { padding: 3px 15px 0 40px; } #pmgBizMergeTabCtrl .pmgBizTabHeader { font: 24px/normal 'Segoe UI Semibold', sans-serif; color: #fbad22; } #pmgBizMergeTabCtrl .pmgBizTabHeader { font: 24px/normal 'Segoe UI Semibold', sans-serif; color: #878787; cursor: pointer; } #pmgBizMergeTabCtrl .pmgBizTabHeaderFLeft { float: left; } #pmgBizMergeTabCtrl .pmgBizTabHeaderGray { color: #878787; } #pmgBizMergeTabCtrl .pmgBizTabHeaderLeft { font: 24px/normal 'Segoe UI Semibold', sans-serif; color: #fbad22; vertical-align: 20px; } #pmgBizMergeTabCtrl .pmgBizTabHeaderRight { font: 22px/1em 'Segoe UI Semibold', sans-serif; color: #fbad22; width: 300px;} #pmgBizMergeTabCtrl .pmgBizTabHeaderGrayText { color: #878787; line-height: 1em; } #pmgBizMergeTabCtrl .pmgBusinessTabbedText, #pmgBizMergeTabCtrl .pmgBusinessTabbedHeader { color: #454545; } #pmgBizMergeTabCtrl .pmgGlobalTabLabel { top: 15%; display: block; } #pmgBusinessCarousel { padding-top: 30px; } #pmgBusinessCarousel .pmgGlobalCarousel { padding: 15px 0 0 43px; } #pmgBusinessCarousel .pmgGlobalCarouselImgthumbnail { width: 160px; } .pmgBusinessCarouselHeader { font-size: 18px; color: #787878; padding-left: 15px; } #pmgBusinessHipHop { position: relative; height: 270px; } #pmgBusinessHipHop .pmgHipHopPanel { position: absolute; top: 0; width: 276px; height: 271px; } #pmgBusinessHipHop .pmgHipHopOverPanel { color: #fff; width: 246px; background: url('http://officeimg.vo.msecnd.net/en-us/files/699/088/ZA102545511.png') top left no-repeat; } #pmgBusinessHipHop .pmgHipHopOverPanel h3, #pmgBusinessHipHop .pmgHipHopOverPanel p { padding: 4px 15px; margin: 0; } #pmgBusinessHipHop .pmgHipHopOverPanel a:link, #pmgBusinessHipHop .pmgHipHopOverPanel a:active, #pmgBusinessHipHop .pmgHipHopOverPanel a:visited { text-decoration: none; color: #ff9720; } #pmgBusinessHipHop .pmgHipHopOverPanel a:hover { text-decoration: underline; } #pmgBusinessHipHop a:link, #pmgBusinessHipHop a:visited, #pmgBusinessHipHop a:hover { color: #00aeef; } #pmgBusinesshiphop1 { background: url('http://officeimg.vo.msecnd.net/en-us/files/657/630/ZA102538956.jpg') top left no-repeat; left: 0; } #pmgBusinesshiphop2 { background: url('http://officeimg.vo.msecnd.net/en-us/files/989/184/ZA102538964.jpg') top left no-repeat; left: 305px; } #pmgBusinesshiphop3 { background: url('http://officeimg.vo.msecnd.net/en-us/files/895/360/ZA102538959.jpg') top left no-repeat; left: 609px; } .pmgBusinessModQuarter { width: 195px; float: left; padding-right: 35px; } .pmgBusinessModQuarterHeaders { font: 1.4em 'Segoe UI Light', sans-serif; } #pmgBusinessQuarterBoxes ul { line-height: normal; margin: 0; padding: 5px 20px 0 0; } #pmgBusinessQuarterBoxes li { list-style-type: none; padding: 5px 0 0; } #pmgBusinessQuarterBoxes .pmgBusinessModQuarterTail { padding-right: 0;} #pmgBusinessContent, .pmgBusinessTabbedText, #pmgGlobalTabContent h2, .pmgBusinessCarouselHeader { font-family: 'Segoe UI', sans-serif; } #pmgBusinessHipHop, #pmgBusinessThirdBoxes, #pmgBusinessQuarterBoxes { overflow: hidden; margin-top: 40px; } #pmgBizVidOneContent, #pmgBizVidTwoContent, #pmgBizVidThreeContent, #pmgBizVidFourContent, #pmgBizVidFiveContent, #pmgBizVidSixContent, #pmgBizVidSevenContent { display: none; padding: 0; margin: 0; } /* Business END */ /* Products Page CSS START */ #pmgProductsSMmodule { margin-left: 60px; width: 500px; position: relative; top: -20px; } #pmgProductsSMmodule a:link, #pmgProductsSMmodule a:visited { color: #4685df; } .pmgProductsSMHeader { margin: 0px; padding: 0px; color: #454545; font: 1.33em/normal 'Segoe UI', Arial, Verdana, sans-serif; } .pmgProductsSMcols { float: left; padding-top: 20px; width: 140px; height: 50px; font-size: 1.2em; } .pmgProductsSMcols img { padding-right: 5px; } #pmgProductsSMfbcol { width: 150px; padding: 10px; height: 60px; font-size: 1em;} .pmgProductsSMfb { padding-bottom: 5px; font-size: 1.25em; } .pmgProductsSMvcenter { vertical-align: middle; } .pmgProductsSMclear { clear: left; } /* Products Page CSS END */ /*Outlook MM*/ #pmgOutlookMM {margin:auto;width:940px;} .pmgOutlookMMTopCnt {padding:0px 55px 0px 55px;float:left;} .pmgOutlookMMLftCnt {width:550px; float:left;padding:20px 0px 0px 0px;} .pmgOutlookMMIcon {padding:0px 15px 20px 0px;float:left;} .pmgOutlookMMTxt {font-family:Segoe UI;color:#000000;float:left; width:350px;} #pmgOutlookMM h1 {font-weight:normal; line-height:0.8em; font-size:4.2em; margin:0px 0px 0px 0px; } .pmgOutlookMMSubHdl {font-size:0.47em;} .pmgOutlookMMSubHdl span {font-family:Segoe UI Light;} .pmgOutlookMMIntro {font-family:Segoe UI;font-size:1.2em;float:left;width:100%;} .pmgOutlookMMBtn {padding:20px 0px 15px 0px;} .pmgOutlookMMRhtCnt {width:280px;float:right;padding:0px 0px 9px 0px;} .pmgOutlookMMCal {margin:0px 35px 0px 35px;} .pmgOutlookMMLearnMore {margin-top:10px; padding:0px 0px 0px 55px;} .pmgOutlookMMBasketball {float:right;} .pmgOutlookMMBM {color:#000000; text-decoration:none;} .pmgOutlookMMFB {float:right;} /* Word Visuals START */ #pmgWordVisualsBackground { background: url('http://officeimg.vo.msecnd.net/en-us/files/638/941/ZA102680007.jpg') no-repeat scroll 0 0 transparent; height: 1059px; margin: auto; position: relative; width: 819px; z-index: 9999; } .pmgWordVisualsCnt1 { background: url('http://officeimg.vo.msecnd.net/en-us/files/163/419/ZA102680008.png') no-repeat scroll 0 0 transparent; height: 132px; width: 338px; padding: 5px 10px 0 25px; } .pmgWordVisualsCnt2 { background: url('http://officeimg.vo.msecnd.net/en-us/files/859/753/ZA102680005.png') no-repeat scroll 0 0 transparent; height: 150px; width: 341px; padding: 6px 20px 0 10px; } .pmgWordVisualsCnt3 { background: url('http://officeimg.vo.msecnd.net/en-us/files/777/384/ZA102683137.png') no-repeat scroll 0 0 transparent; height: 181px; width: 363px; padding: 29px 10px 0; } .pmgWordVisualsHSContent { background-color: transparent; color: White; display: none; font-size: 14px; position: absolute; z-index: 9999; } /* Word Visuals END */ /* Word SEO page START */ #pmgSEOBody { width: 900px; padding: 0 20px; margin: 0; } #pmgSEOBody .cntHCMTitle { font-size: 1.25em; margin-bottom: 0; width: 201px; } .pmgSEOContentRow { overflow: auto; clear: left; margin-bottom: 25px; } .pmgSEOContentCol { width: 33%; float: left; } .pmgSEOConetntColImg { float: left; padding: 0 10px; width: 75px; } .pmgSEOContentColText { width: 180px; float: left; } /* Word SEO page END */ /* Word Declaration of Independence START */ /* legacy code for old page */ .pmgWordDoISM { height: 35px; width: 935px; } #pmgWordDoIFooter { font-size: 1.25em; margin-left: 60px; } .pmgWordDoIFooter { width: 530px; display: inline-block; } #pmgWordDoIFooter .pmgWordDoIFooterTxt { width: 285px; text-align: right; } /* end legacy code */ .pmgWordDoI{width:821px;margin:0 auto;} .pmgWordDoI #pmgGlobalHeader{height:50px;margin-right:10px;} .pmgWordDoI #pmgGlobalHeader .pmgGlobalAppShare{right:40px;} .pmgWordDoI #pmgGlobalHeader .pmgGlobalAppShare .pmgGlobalAppLikebtn{width:35px;} #pmgWordDoIColumns{margin:0 10px;} #pmgWordDoIColumns .pmgWordDoICol{float:left;width:32%;margin-right:1%;} #pmgWordDoIColumns .pmgWordDoICol img{float:left;} #pmgWordDoIColumns .pmgWordDoICol h3,#pmgWordDoIColumns .pmgWordDoICol p,#pmgWordDoIColumns .pmgWordDoICol ul{margin-left:70px;} #pmgWordDoIColumns .pmgWordDoICol h3{font-family:Segoe UI;font-size:1.33em;font-weight:400;color:#454545;} #pmgWordDoIColumns .pmgWordDoICol ul{list-style:none;} .pmgWordDoI #pmgWordDoIFooter{font-size:1.25em;} .pmgWordDoI #pmgWordDoIFooter p{display:inline;} .pmgWordDoI #pmgWordDoIFooter p.pmgWordDoIFirst{float:left;} .pmgWordDoI #pmgWordDoIFooter p.pmgWordDoILast{float:right;} /* Word Declaration of Independence END *//*WORD HP starts*/ /*WORD HP starts*/ #pmgWord {margin:auto auto;width:821px;overflow:hidden;} #pmgWordHero {margin-top:26px;margin-bottom:15px;} #pmgWord h2 {font-family:Segoe UI;color:#a29490;line-height:1em;} .pmgWordLnkStrip {background:url('http://officeimg.vo.msecnd.net/en-us/files/460/026/ZA102585992.jpg') no-repeat;width:821px;height:38px;} .pmgWordLnkStripCnt {font-family:Segoe UI;font-weight:bold;color:#0066b3;padding:0px 30px;width:760px;height:38px;padding-top:9px;font-size:1.2em;} .pmgWordLnkStripLft {width:30%;float:left;} .pmgWordLnkStripMdl {width:36%;float:left;} .pmgWordLnkStripRht {width:34%;float:left;} #pmgWordLnkStripLftCnt {width:125px;float:left;padding-left:55px;} #pmgWordLnkStripMdlCnt {width:165px;float:left;padding-left:60px;} #pmgWordLnkStripRhtCnt {width:125px;float:left;padding-left:55px;} .pmgWordBtmCnt {width:100%;float:left;} #pmgWordBtmCntLft {float:left;width:66%; margin:20px 0px 0px 0px;} .pmgWordBtmCntLnkVid {background:url('http://officeimg.vo.msecnd.net/en-us/files/997/639/ZA102585711.jpg') no-repeat;width:542px;height:219px;margin-top:30px;} .pmgWordBtmCntLnk {width:235px;float:left;padding-left:35px;padding-top:20px;} #pmgWordHeaderRht {margin-left:28px;} #pmgWord h3 {color:#a29490;font-family:Segoe UI;} #pmgWord h2 span {color:#0066b3;} #pmgWord ul{padding-left: 15px;font-family:Segoe UI;font-size:1em;padding-top:16px;} .pmgWordBtmCntRht50 {float:left;padding-top:20px;padding-left:20px;} #pmgDemoImageWord a {background: url('http://officeimg.vo.msecnd.net/en-us/files/377/473/ZA102585638.jpg') no-repeat top left;width: 166px;height: 128px;display: block;} .pmgWordBtmCntVid {padding-left:25px;padding-top:16px;float:left;} #pmgDemoImageWord a:hover {background: url('http://officeimg.vo.msecnd.net/en-us/files/377/473/ZA102585638.jpg') no-repeat top right;} .pmgBtmCntRht {width:225px;float:left;margin:40px 0px 0px 0px;padding-left:50px;} .pmgWordLnkStripCnt a{color: #0066b3;} #pmgWordHeaderFBTxt {width: 173px;} #questionAnswers ul{padding-left: 0px;} .pmgWordFeedback { padding-top: 17px; } .pmgWordFeedback img { vertical-align: -3px; } .pmgWordFeedback hr { margin: 3px 0; } .pmgWordFeedbackML5 { margin-left: 5px; } .pmgWordBtmCnt .pmgWordBtmCntHeroes { margin-top: 20px; } .pmgWordBtmCntHeroesImages { width: 401px; } .pmgWordBtmCntHeroes .pmgWordBtmCntHeroesImagesR { padding-left: 19px; } .pmgWordBtmCntLnkTemplates { background: url('http://officeimg.vo.msecnd.net/en-us/files/257/252/ZA102692543.jpg') no-repeat; width: 542px; height: 190px; } .pmgWordBtmCntLnkVid0611 { background: url('http://officeimg.vo.msecnd.net/en-us/files/997/639/ZA102585711.jpg') no-repeat; width: 542px; height: 219px; } /*WORD HP ends*/ /* Word - Interactive Newsletter (FH102694295) START */ #pmgWordNewsletterBackground { background: url('http://officeimg.vo.msecnd.net/en-us/files/519/735/ZA102694310.jpg') no-repeat scroll 0 0 transparent; height: 1059px; margin: auto; position: relative; width: 819px; z-index: 9999; } .pmgWordNewsletterCnt2 { background: url('http://officeimg.vo.msecnd.net/en-us/files/413/266/ZA102694486.png') no-repeat scroll 0 0 transparent; height: 200px; padding: 5px 10px 0 25px; width: 220px; } .pmgWordNewsletterCnt1 { background: url('http://officeimg.vo.msecnd.net/en-us/files/779/850/ZA102694407.png') no-repeat scroll 0 0 transparent; height: 140px; padding: 5px 10px 0 25px; width: 348px; } .pmgWordNewsletterCnt3 { background: url('http://officeimg.vo.msecnd.net/en-us/files/423/213/ZA102694387.png') no-repeat scroll 0 0 transparent; height: 144px; padding: 15px 25px 0 10px; width: 338px; } .pmgWordNewsletterCnt4 { background: url('http://officeimg.vo.msecnd.net/en-us/files/730/978/ZA102694478.png') no-repeat scroll 0 0 transparent; height: 248px; padding: 16px 10px 0; width: 205px; } /* Word - Interactive Newsletter END */ /* Quiz start */ .pmgWordQuizCtrl {width: 215px;} #questionAnswers{position: relative; padding: 5px;} #questionAnswers #statusMsg{display: none; position:relative; left: 0;top: 0;} .pmgQuizContainer{ list-style-type: none;} .pmgQuizRadio { background: url("http://officeimg.vo.msecnd.net/en-us/files/733/836/ZA102594532.jpg") no-repeat scroll 0 0 transparent; clear: left; display: block; float: left; height: 12px; padding: 0 5px 0 0; width: 12px; margin-top: 3px; } .pmgQuizRadioSelected { background: url("http://officeimg.vo.msecnd.net/en-us/files/728/965/ZA102594560.jpg") no-repeat scroll 0 0 transparent; } .pmgQuizRadioMousedown { background: url("http://officeimg.vo.msecnd.net/en-us/files/918/071/ZA102594507.jpg") no-repeat scroll 0 0 transparent; } input.pmgQuizStyled { display: none; } #pmgWordBtnSubmit {cursor:pointer;margin:15px 0px 0px 38px;} a.pmgRadioContentClass{float: left; width: 198px; color: #0066b3; text-decoration: none;padding-bottom: 25px;} a.pmgQuizRadio { outline-style: none; outline-width: 0; } .pmgWordQuestion {font-family: Segoe UI; font-size: 1em; color: #a29490;} /* End quiz */ /*Word interactive (hot spots) starts*/ .pmgWordHotSpotContent { display:none; position:absolute; width:310px; color:White; padding:20px 40px 10px 20px; z-index:9999; background-color:transparent; font-size:14px; } .pmgWordHotspots { padding:1px; position:absolute; background-color:transparent; display:block; z-index:-1; visibility:hidden; } #pmgWordHotSpotsContent { background-image: url('http://officeimg.vo.msecnd.net/en-us/files/455/607/ZA102595487.jpg'); background-repeat:no-repeat; height:856px; position:relative; z-index:9999; margin:0 0 -381px 10px; } #pmgWordHotSpotsContent a{text-decoration:none;color:#0066CC;} .pmghscontent1{background:url('http://officeimg.vo.msecnd.net/en-us/files/504/957/ZA102601011.gif') no-repeat;width:264px;height:125px;} .pmghscontent2{background:url('http://officeimg.vo.msecnd.net/en-us/files/445/883/ZA102601012.gif') no-repeat;width:230px;height:85px;padding:30px 0 0 20px;} .pmghscontent3{background:url('http://officeimg.vo.msecnd.net/en-us/files/721/322/ZA102601020.gif') no-repeat;width:290px;padding:15px 10px 35px 15px;} .pmghscontent4{background:url('http://officeimg.vo.msecnd.net/en-us/files/888/864/ZA102601017.gif') no-repeat;width:286px;height:153px;padding-top:10px;} .pmghscontent5{background:url('http://officeimg.vo.msecnd.net/en-us/files/450/665/ZA102601010.gif') no-repeat;width:259px;height:100px;} .pmghscontent6{background:url('http://officeimg.vo.msecnd.net/en-us/files/080/766/ZA102601019.gif') no-repeat;width:294px;padding:5px 10px 35px 35px;} .pmghscontent7{background:url('http://officeimg.vo.msecnd.net/en-us/files/474/992/ZA102601018.gif') no-repeat;height:152px;padding-top:20px;} .pmghscontent1 span { position:absolute; top:-50px ; left:-7px; } .pmghscontent3 span { position:absolute; top:-48px; left:275px; } .pmghscontent5 span { position:absolute; top:-46px; left:-15px; } .PmgWordHSToc { background:url('http://officeimg.vo.msecnd.net/en-us/files/999/258/ZA102595475.png') no-repeat; height:400px; position:relative; top:-283px; left:650px; z-index:10000; width:280px; padding-top:5px; } .PmgWordHSToc div { margin-top:32px; font-size:14px; font-family:Segoe UI Semibold; } .PmgWordHSToc a{color:White;text-decoration:none;} .PmgWordHSToc ul a,.PmgWordHSToc ul {color:#ffc20e;font-size:12px;padding:10px 0 0 27px;margin:0 0 0 -27px; outline: none;} .PmgWordHSToc li{list-style-type:none;} .PmgWordHSToc ul li{margin: 0 4px 5px 0px;} .pmgWordsubfeatureselected,.pmgWordfeatureselected{background-color:#fca822;} .pmgWordsubfeatureselected span a{color:black;} .PmgWordHSToc div span{display:block;padding-left:17px;margin-right:4px;} /*#pmgWordHeader{margin-left:250px;padding:0 0 20px 0;width:800px;}*/ #pmgWordCollab{margin:0 0 20px 55px;} #pmgWordCollab h1 { font-family:Segoe UI Light; font-size:2em; color:#a29490; } #pmgWordCollab h2 { font-family:Segoe UI; font-size:1.1em; color:#58595b; } #pmgWordCollab #pmgGlobalHeader{padding-bottom:20px;} .pmghscontentSeperate {background:url('http://officeimg.vo.msecnd.net/en-us/files/585/546/ZA102644368.png') no-repeat;height:156px;padding-top:20px;width:360px;} .pmgWordFestivalCnt {margin:10px 0px 0px 0px;} .pmgWordFestivalCntLnk {margin:0px;} #pmgWordFestivalHierHdl {margin-top:-10px;} /*Word interactive (hot spots) ends*/ /* Excel Embedded Pages START */ #pmgExcelEmbedPage { margin: 0 59px; padding: 0; font-family: 'Segoe UI', Verdana, sans-serif; line-height: auto; } #pmgExcelEmbedHeader { width: 100%; height: 65px; } #pmgExcelEmbedHeader h1 { padding-top: 5px; font-size: 1.9em; font-weight: normal; } .pmgExcelEmbedHeaderContent { width: 255px; float: right; } .pmgExcelEmbedHeaderContent div { float: left; } .pmgExcelEmbedHeaderContentFB { text-align: right; font-size: 13px; color: #58595b; padding-right: 10px; } .pmgExcelEmbedHeaderContentPad { padding-top: 4px; } .pmgExcelEmbedHeaderText { clear: right; } .pmgExcelEmbedText { float: left; font-size: 1.2em; line-height: 1.2em; color: #58595b; width: 754px; } .pmgExcelEmbedIcon { float: left; width: 40px; padding-top: 3px; } #pmgExcelEmbedHeader .pmgGlobalInlineIconHeader { width: 500px; } .pmgExcelEmbedMailIcon { float: left; border-left: solid 1px #f2f3f3; padding-left: 13px; width: 36px; height: 30px; } #pmgExcelEmbedDeck { font-size: 1.2em; } .pmgExcelEmbedTabs { position: relative; height: 47px; padding-top: 24px; } .pmgExcelEmbedTabs div { position: absolute; pointer: cursor; height: 47px; bottom: -1px; } .pmgExcelEmbedTabs a { display: block; height: 100%; width: 100%; } .pmgExcelEmbedTabsLabel { position: relative; top: 10px; left: 20px; } .pmgExcelEmbedTab1 { left: 15px; } .pmgExcelEmbedTab2 { left: 278px; } .pmgExcelEmbedTab3 { left: 541px; } .pmgExcelEmbedTabsText div { font: 18px/normal 'Segoe UI Semibold', sans-serif; } .pmgExcelEmbedTabsGray { background: url('http://officeimg.vo.msecnd.net/en-us/files/660/035/ZA102601086.jpg') top left no-repeat; width: 257px; } .pmgExcelEmbedTabsGreen { background: url('http://officeimg.vo.msecnd.net/en-us/files/095/943/ZA102601084.jpg') top left no-repeat; width: 248px; } .pmgExcelEmbedDeckDivider { position: relative; z-index: 2; background-color: #7abd42; height: 5px; border-top: solid 1px #b8c3c7; border-left: solid 1px #b8c3c7; border-right: solid 1px #b8c3c7; } .pmgExcelEmbedDeckActive { color: #fff; z-index: 3; } .pmgExcelEmbedDeckInactive a:link, .pmgExcelEmbedDeckInactive a:active, .pmgExcelEmbedDeckInactive a:visited, .pmgExcelEmbedDeckInactive a:hover { color: #58595b; text-decoration: none; } .pmgExcelEmbedDeckContent { position: relative; background-color: #f2f3f3; border-left: solid 1px #b8c3c7; border-right: solid 1px #b8c3c7; border-bottom: solid 1px #b8c3c7; } .pmgExcelEmbedDeckContentLeft { width: 420px; background-color: #fff; float: left; margin: 30px 0 0 30px; } .pmgExcelEmbedDeckContentRight { width: 305px; float: left; padding: 30px 0 0 35px; } .pmgExcelEmbedDeckInactive { z-index: 1; } .pmgExcelEmbedDeck530 { height: 530px; } .pmgExcelEmbedDeck590 { height: 590px; } .pmgExcelEmbedDeck600 { height: 600px; } .pmgExcelEmbedDeck620 { height: 620px; } .pmgExcelEmbedDeck660 { height: 660px; } .pmgExcelEmbedDeck680 { height: 680px; } .pmgExcelEmbedDeck560 { height: 560px; } .pmgExcelEmbedDeck620 { height: 630px; } .pmgExcelEmbedDeck640 { height: 640px; } .pmgExcelEmbedDeck690 { height: 690px; } .pmgExcelEmbedDeck700 { height: 700px; } .pmgExcelEmbedDeckContentLeftFilter { width: 400px; background-color: #fff; float: left; margin: 30px 0 0 50px; } .pmgExcelEmbedIcons { position: absolute; bottom: 18px; left: 474px; width: 320px; } .pmgExcelEmbedIconsImg { padding: 5px 10px 0 0; vertical-align: top; float: left } .pmgExcelEmbedIconsTxt { width: 260px; float: left; } .pmgExcelEmbedIconsDivider { padding-bottom: 5px; } #pmgExcelEmbedSteps { width: 821px; padding-top: 30px; } .pmgExcelEmbedSteps { height: 12px; } #pmgExcelEmbedSteps p { font-size: 1em; line-height: 1.5em; margin: 10px 0; } #pmgExcelEmbedSteps h2, #pmgExcelEmbedDeck h2 { font: 1.4em/normal 'Segoe UI Light', sans-serif; } #pmgExcelEmbedSteps h2 strong { font-family: 'Segoe UI Semibold', sans-serif; } #pmgExcelEmbedSteps .pmgExcelEmbedStepsTxtR { padding-top: 32px; } .pmgExcelEmbedStepsH2 strong { color: #4da439; } .pmgExcelEmbedStepsBG { width: 819px; border-left: solid 1px #b8c3c7; border-right: solid 1px #b8c3c7; background: url('http://officeimg.vo.msecnd.net/en-us/files/090/609/ZA102601088.png') top left repeat-y; } .pmgExcelEmbedStepsContent { padding: 10px 30px 0; } .pmgExcelEmbedStepsTxt { width: 369px; float: left; } .pmgExcelEmbedStepsTxtPad { padding-right: 20px; } .pmgExcelEmbedModule { display: inline-block; } #pmgExcelEmbedSteps .pmgPPTEmbedStepsH2sm { font-size: 1.2em; } .pmgPPTEmbedMarg24 { margin-top: 24px; } .pmgPPTEmbedDeckContent { background-color: #f2f3f3; border-left: 1px solid #b8c3c7; border-right: 1px solid #b8c3c7; position: relative; top: 3px; width: 819px; height: 415px; } .pmgPPTEmbedDeckContentLeft {width: 402px; height: 327px; background-color: #fff; float: left; margin: 30px 0 0 30px; } .pmgPPTEmbedStepsH2 strong { color: #e86e33; } /* Excel Embedded Pages END */ /*Excel Road Map CSS Starts*/ .pmgExcelExpando{ width: 821px; } .pmgExcelExpandoProgress{ width: 100%; text-align: right; font-size: 1.2em; } .pmgExcelRoadmapBody{ padding: 10px 0 0 0; } .pmgExcelRoadmapHero{ padding: 20px 0 10px 0; } .pmgExcelRoadmapExpHeadline{ background: #DBE7F5; border-left: 1px solid #CDCDCD; border-right: 1px solid #CDCDCD; padding: 0 0 10px 37px; position: relative; } .pmgExcelRoadmapImgthumbnail { border: 4px solid gray; cursor: pointer; height: 100px; width: 100px; z-index: 1; } .pmgRoadMapPopupBlurb{ width:730px; /*padding-bottom:80px;*/ } .pmgRoadMapPopupBlurb h3{ width: 40%; float:left; padding-right:100px; } .pmgRoadMapPopupBlurb ul{ width: 46%; float:left; font-weight:bold; } .pmgRoadMapPopupBlurb ul li{list-style-type:none;} #pmgAppExcelRoadmap h3 {font-size: 1.6em; font-weight: normal;} .pmgExcelRoadmapSet1 h4 {font-size: 0.9em; font-weight: normal; padding: 5px 0px;text-align:center;height:30px;width:160px;} .pmgExcelRoadmapExpHeadline p {font-size: 1.2em;} .pmgExcelRoadmapComingSoon{padding: 50px 0; width: 100%; text-align: center;} .pmgExcelRoadmapExpBody{ border-left: 1px solid #CDCDCD; border-right: 1px solid #CDCDCD; padding: 8px; } .pmgGlobalPad00002000{ padding: 0 0 20px 0; } .pmgGlobalOverlayElement{ position:absolute; background:#000; width:100%; height:100%; top:0px; left:0px; } .pmgExcelRoadmapSet1 div {height:96%;} img.pmgGlobalCarouselMiddleArrow{top:55%;} #pmgExcelRoadmapSet1Count,#pmgExcelRoadmapSet2Count,#pmgExcelRoadmapSet3Count,#pmgExcelRoadmapSet4Count { padding-right:5px; } .pmgGlobalOverlayImgElement{ position:absolute; bottom:10px; right:10px; } .pmgGlobalDialogueBoxContent{ display: none; height:auto; margin:auto; } .pmgGlobalCarouselNav, .pmgGlobalCarouselFilmstrip { float: left; } .pmgGlobalCarouselFilmstrip ul { list-style-type: none;margin:0px;padding:0px; position:relative;} .pmgGlobalCarouselFilmstrip li { display:inline; margin: 0px;} .pmgGlobalExpandoSelected {display:none;} .pmgExcelExpandoIcons{position: absolute; left: 8px; top: 5px;} .pmgExcelRoadMapBottom{margin-top:-2px;} .pmgExcelRoadMapTop{margin-bottom:-5px;} #pmgExcelRoadmapSet1Bar img{ width:100px;background-image:url('http://officeimg.vo.msecnd.net/en-us/files/398/325/ZA102609396.png');background-repeat:no-repeat;background-position:-100px;vertical-align:middle; } .pmgExcelRoadmapSet1Bar img{ width:100px;background-image:url('http://officeimg.vo.msecnd.net/en-us/files/398/325/ZA102609396.png');background-repeat:no-repeat;background-position:-100px;vertical-align:middle; } .pmgExcelExpandoIcons a{ outline-style:none ; } /*Excel road Map css Ends*/ /* Starter START */ #pmgStarterBox { margin: 0; padding; 0; } #pmgStarterBox .cntHCMBullet li { margin-left: 0; } .pmgStarterBorder { border: #ccc 1px solid; width: 460px; float: left; } .pmgStarterContentAll { height: 170px; } .pmgStarterContentL { float: left; padding: 15px 0 0 73px; width: 123px; } .pmgStarterContentR { width: 210px; padding: 0 25px; float: left; } .pmgStarterImage { margin: 5px 0; } .pmgStarterBuyButton { padding-top: 25px; } .pmgStarterBuyFont { color: #000; } .pmgStarterRightBox { margin-left: 16px; } .pmgStarterBackgroundT { background: url('http://officeimg.vo.msecnd.net/en-us/files/622/964/ZA101819738.png') repeat-x left bottom; height: 30px; text-align: center; font-size: 1.5em; line-height: 1.5em; } .pmgStarterBackgroundB { background-color: #ccc; height: 15px; } /* Starter END */ /* Start BTS */ #pmgBTS {font-family:Segoe UI;} .pmgBTSHeader {width:100%;float:left;} .pmgBTSImg {float:left;} .pmgBTSHeroDesc {width:620px;float:left;} #pmgBTS h1 {color:#F7931E;} .pmgBTSBuyHS {color:#000000;font-size:0.5em;float:left;width:100%;} .pmgBTSFree {font-size:0.48em;color:#F7931E;float:left;} .pmgBTSOfficeLogo {width:100px;margin-right:30px;float:left;} .pmgBTSMakeItGr {float:right;color:#F7931E;font-size:0.75em;font-style:italic;padding-top:5px;padding-right:10px;font-weight:bold;} .pmgBTSIntro {margin-top:10px;font-size:1em;float:left;} .pmgBTSIntro p {padding:5px 10px;} .pmgBTSOffer {margin-top:10px;font-size:1em;float:left;} .pmgBTSOneThirdContainer {width:32%;float:left;} .pmgBTSSecondContainer {width:32%;float:left;margin-left:12px;margin-right:12px;} .pmgBTSHdl {font-weight:bold;padding-top:5px;} .pmgBTSOffer p {padding:5px 10px 0px 10px;} .pmgBTSOfferSpace {padding-bottom:20px;} .pmgBTSContainer {margin-bottom:20px;} .pmgBTSBtn {margin-top:10px;} /* End BTS */ /* Office Web Apps TEB Start */ #pmgTEBPage { width: 820px; margin-left: 70px; padding: 0; color: #000; } #pmgTEBHeader { position: relative; width: 100%; height: 66px; } .pmgTEBHeaderFacebook { position: absolute; top: 24px; right: 0; width: 85px; height: 21px; overflow: hidden; } .pmgTEBHeaderLogo { position: relative;float:left;width:520px; } #pmgTEBTop { overflow: hidden; } .pmgTEBTopContent { width: 400px; overflow: hidden; clear: left; } .pmgTEBTopIcon { width: 60px; text-align: right; } .pmgTEBTopText { width: 318px; position: relative; } .pmgTEBTopTextPad0 {PADDING-TOP:23PX;} #pmgTEBBtn {margin-left:200px;margin-top:10px;} #pmgTEBTopBtnCnt {width:445px;padding-bottom:0px;} #pmgTEBTopText3 {width:385px; margin-left:60px;} .pmgTEBTopContentPad1 { padding-top: 20px; } .pmgTEBTopTextPad1 { padding: 16px 0px 0px 0px; } .pmgTEBTopTextPad2 { padding-top: 10px; } .pmgTEBTopTextPad3 { padding-top: 0px; padding-left:0px; width:220px;float:left; } .pmgTEBTopTextPad4 { padding-left: 20px; } #pmgTEBMiddle { overflow: hidden; } .pmgTEBMiddle { padding-left: 35px; } #pmgTEBMiddle p { padding: 11px 0; } #pmgTEBBottom { overflow: hidden; clear: left; } #pmgTEBBottom h2 { font-size: 1.3em; margin: 0 0 15px; } #pmgTEBBottom ul { margin-left: 14px; } #pmgTEBBottom ul li { padding-bottom: 11px; } .pmgTEBHorizDivider { width: 820px; height: 5px; margin: 15px 0; clear: left; background-color: #e1e1e1; } .pmgTEBVertDivider { width: 5px; height: 180px; margin: 8px 15px 0; background-color: #e1e1e1; } .pmgTEB50 { width: 380px; } .pmgTEB33 { width: 250px; } .pmgTEBText { font: 1.3em/1.5em Arial, Helvetica, sans-serif; } .pmgTEBSmText { font: 1em/1.25em Arial, Helvetia, sans-serif; } .pmgTEBTopText span { text-align: middle; } #pmgTEBPage a, #pmgTEBPage a:visited, #pmgTEBPage a:hover { color: #ff6a00; } .pmgTEBFloatLeft { float: left; } #pmgTEBNote {margin-top:35px;font-size:0.9em;} #pmgTEBFBRht {left:55px;} /* Office Web Apps TEB End */ #pmgOutlookAtWork {margin:auto;width:821px;} .pmgOutlookAtWorkHero {margin:20px 0px;} #pmgOutlookAtWorkTopImg { margin-bottom:-7px;} .pmgOutlookAtWorkBody {width:100%;display:inline-block;} .pmgOutlookAtWorkExpando {float:left;} .pmgOutlookAtWorkExpandoHead {float:left;width:821px;} .pmgOutlookExpandoIcons {padding-left:5px;padding-right:10px;padding-top:10px;width:22px;float:left;} .pmgOutlookAtWorkHeadline {font-family:Segoe UI;font-size:2.1em;color:#000000;float:left;padding-top:10px;padding-left:20px;} .pmgOutlookAtWorkInnerExpando {border-left:#cdcdcd 1px solid;border-right:#cdcdcd 1px solid;padding-left:40px;float:left;width:779px;} .pmgOutlookInnerExpandoIcons {padding-top:27px;width:12px;float:left;} .pmgOutlookInnerExpandoLftCnt {width:475px;float:left;} .pmgOutlookInnerHdl {font-family:Segoe UI;color:#000000;font-size:1.7em;padding-top:20px;padding-left:0px;float:left;width:55%;} .pmgOutlookAtWorkInnerExpando p {padding-left:20px;width:457px;font-family:Segoe UI;font-size:1.2em;float:left} #pmgOutlookAtWorkBtm {margin-top:-2px;} .pmgOutlookAtWorkImg {padding-left:20px;float:left;margin-top:-20px} #pmgOutlookAtWorkFBRht {margin-left:25px;} #pmgOutlookAtWorkAppName {margin-top:0px;} /* Create Outlook Homepage START */ #pmgCOutlookContent li { list-style-type: none; margin-left: -40px; line-height: 20px; } .pmgCOutlookHeaderIcon { width: 80px; } .pmgCOutlookHeaderSm { font: 2.5em/18px 'Segoe UI Light',sans-serif; } .pmgCOutlookHeaderLg { font: 4.3em/44px 'Segoe UI Semibold',sans-serif; } .pmgCOutlookSubhead { font: 1.67em/normal 'Segoe UI', sans-serif; padding-top: 20px; } .pmgCOutlookSubheadText { padding: 20px 0 30px; } .pmgCOutlookFacebook { position: relative; height: 75px; right: -50px; } .pmgCOutlookFacebookText { color: #848484; text-align: right; width: 135px; } .pmgCOutlookFacebookBtn { position: absolute; right: 30px; top: 15px; } .pmgCOutlookBGModules { position: relative; width: 299px; height: 247px; } .pmgCOutlookBGModulesText { position: relative; padding: 10px 0 0 20px; } .pmgCOutlookBGModulesTextLink { position: absolute; bottom: 5px; right: 11px; } .pmgCOutlookBGModulesTextPad { padding-top: 8px; } .pmgCOutlookBGPad { margin-top: 20px; } .pmgCOutlookBG1 { background: url('http://officeimg.vo.msecnd.net/en-us/files/967/919/ZA102629181.jpg') no-repeat top left; } .pmgCOutlookBG2 { background: url('http://officeimg.vo.msecnd.net/en-us/files/785/573/ZA102629177.jpg') no-repeat top left; } .pmgCOutlookBG3 { background: url('http://officeimg.vo.msecnd.net/en-us/files/963/757/ZA102629175.jpg') no-repeat top left; } .pmgCOutlookBG4 { background: url('http://officeimg.vo.msecnd.net/en-us/files/386/329/ZA102629170.jpg') no-repeat top left; } .pmgCOutlookBG5 { background: url('http://officeimg.vo.msecnd.net/en-us/files/112/273/ZA102631008.png') repeat-y top left; overflow: auto; padding: 0 0 10px 27px; } .pmgCOutlookBG5Top { background: url('http://officeimg.vo.msecnd.net/en-us/files/428/652/ZA102631004.png') no-repeat top left; width: 300px; height: 10px; } .pmgCOutlookBG5Bottom { background: url('http://officeimg.vo.msecnd.net/en-us/files/714/357/ZA102631007.png') no-repeat top left; width: 300px; height: 10px; } .pmgCOutlookBG5Box { width: 245px; } .pmgCOutlookBG5Head { font: 1.5em/normal 'Segoe UI Light', sans-serif; } .pmgCOutlookBG5Lineheight { line-height: 0.7em; padding-top: 3px; } .pmgCOutlookBG5PadBottom { padding-bottom: 15px; } .pmgCOutlookBG5PadLeft { padding-left: 10px; } .pmgCOutlookBG5Subhead { font: 1.5em/1.25em 'Segoe UI Semibold', sans-serif; } .pmgCOutlookBG5VidLink { font-family: 'Segoe UI Semibold', sans-serif; padding: 2px 0 8px; } .pmgCOutlookBGHeader { font: 1.67em/0.83em 'Segoe UI Semibold', sans-serif; color: #e6791c; } .pmgCOutlookBoxLinks { padding: 10px 0 0 40px; } .pmgCOutlookTemplate { width: 120px; } .pmgCOutlookFL { float: left; } .pmgCOutlookCL { clear: left; } .pmgCOutlookBlkTxt { color: #000; } .pmgCOutlookBaseBigFont { font-size: 1.17em; } /* Create Outlook Homepage END */ /* 5MMO Homepage Update START */ #pmg5MMOUpdate ul { margin-top: 10px; } #pmg5MMOUpdate li { background: url('http://officeimg.vo.msecnd.net/en-us/files/168/721/ZA102639726.png') no-repeat scroll 0 8px transparent; list-style-type: none; padding: 0 0 5px 10px; margin-left: -40px; } #pmg5MMOWordContent { padding-top: 30px; } .pmg5MMOSubhead { font: 2.5em/normal 'Segoe UI Light', sans-serif; } .pmg5MMOHead { font-size: 5.417em; line-height: 50px; } .pmg5MMOModBG { width: 860px; margin-bottom: 10px; position: relative; } .pmg5MMOWordBG { background: url('http://officeimg.vo.msecnd.net/en-us/files/330/905/ZA102639536.jpg'); height: 291px; } .pmg5MMOExcelBG { background: url('http://officeimg.vo.msecnd.net/en-us/files/424/351/ZA102639546.jpg'); height: 291px; } .pmg5MMOPowerPointBG { background: url('http://officeimg.vo.msecnd.net/en-us/files/183/655/ZA102639543.jpg'); height: 291px; } .pmg5MMOOutlookBG { background: url('http://officeimg.vo.msecnd.net/en-us/files/120/537/ZA102639541.jpg'); height: 291px; } .pmg5MMOPublisherBG { background: url('http://officeimg.vo.msecnd.net/en-us/files/692/322/ZA102639539.jpg'); height: 235px; } .pmg5MMOFacebook { height: 75px; position: relative; } .pmg5MMOFacebookText { color: #848484; left: 80px; padding-top: 8px; position: absolute; text-align: right; width: 135px; } .pmg5MMOFacebookBtn { position: absolute; right: 30px; top: 15px; } .pmg5MMOIcons { text-align: right; margin-top: 35px; } .pmg5MMOIcons img { padding: 0 2px; } .pmg5MMOModHeader { padding: 20px 0; } .pmg5MMOModHeaderPublisher { padding: 50px 0 25px; } .pmg5MMOModBA { padding-top: 15px; } .pmg5MMOModVidHeader { padding-top: 65px; } .pmg5MMOModVid { padding: 10px 0 20px; } .pmg5MMOModTemplates { padding-top: 90px; } .pmg5MMOFontBlue { color: #265dad; } .pmg5MMOFontGreen { color: #297309; } .pmg5MMOFontRed { color: #b33000; } .pmg5MMOFontYellow { color: #d96e1c; } .pmg5MMOFontBlack { color: #000; } .pmg5MMOFontAqua { color: #028180; } /* 5MMO Homepage Update END */ #pmgWordHotSpotsVisualContent {background:url('http://officeimg.vo.msecnd.net/en-us/files/097/810/ZA102638526.jpg') no-repeat;height:633px;width:819px;margin:auto;position:relative;z-index:9999;} #pmgWordFestivalBtmCnt {width:819px;margin:20px auto auto;} #pmgWordFestivalImg {float:left;margin-right:30px;width:269px;} #pmgWordFestivalBtmRhtCnt {float:left; padding-top:30px;width:430px;} .pmgWordFestivalHdl {margin:0px;} .pmghscontentGraphic {background:url('http://officeimg.vo.msecnd.net/en-us/files/892/788/ZA102638743.png') no-repeat;height:156px;padding-top:20px;width:383px;} .pmghscontentHierarchy {background:url('http://officeimg.vo.msecnd.net/en-us/files/296/254/ZA102639533.png') no-repeat;height:175px;padding-top:20px;width:360px;} .pmgWordFestivalHdl {color:#000000;} .pmgWordFestivalGraphic {width:350px;} .pmgWordFestivalHierarchy {width:320px;} /* New OWA HP Start */ .pmgOWATopText { position: relative; width: 220px; } #pmgOWAFBText { font-size: 0.8em; margin-left: 52px; text-align: right; top: 6px; width: 200px; } .pmgOWATopCol1 { width: 535px; } .pmgOWATopCol2 { background-color: #E1E1E1; height: 310px; margin: 0 15px; width: 5px; } .pmgOWATopCol3 { width: 250px; height: 305px; background: url('http://officeimg.vo.msecnd.net/en-us/files/501/131/ZA102651736.jpg') top left no-repeat; position: relative;} .pmgOWADemosLink { padding: 5px 0; } .pmgOWATopHead1 { top: 74px; left: 30px; } .pmgOWATopHead2 { top: 134px; left: 30px; } .pmgOWATopHead3 { top: 196px; left: 30px; } .pmgOWATopHead4 { top: 268px; height: 35px; width: 84px; font-size: 14px; } .pmgOWATopHead5 { top: 255px; right: 0; height: 50px; width: 160px; } .pmgOWAText14 { font-size: 1.083em; } .pmgOWAPosAbs { position: absolute; } #pmgTEBPage .pmgOWAHorizDivider { margin: 0 0 15px; } #pmgTEBPage .pmgOWAHorizDivider2 { margin: 15px 0 0; } #pmgTEBPage .pmgOWAVertDivider { margin: 15px 15px 0; height: 210px; } .pmgOWAShowcaseVid { width: 800px; height: 600px; } .pmgOWAShowcaseVidClose { font-size: 1.5em; padding-right: 64px; padding-top: 5px; position: absolute; bottom: 10px; right: -20px; } .pmgOWAShowcaseVidShell { margin-bottom: 20px; } .pmgOWAShowcaseVidCnt { padding: 0 10px 10px; } /* New OWA HP End */ /* Office Offer */ #pmgOfficeOffers {width:100%;font-family:Segoe UI;color:#000000;} #pmgOfficeOffersLftCnt {width:200px;margin-right:45px;float:left;margin-top:35px;} #pmgOfficeOffersRhtCnt {width:695px;float:left;} #pmgOfficeOffers h1 {font-family:Segoe UI Semibold;color:#ffc200;padding-bottom:20px;padding-top:30px;line-height:1.2em;} #pmgOfficeOffersIntro {font-size:1.2em;float:left;width:100%} #pmgOfficeOffersIntroTxt {width:591px;} #pmgOfficeOffersBtn {padding:20px 0px 20px 0px;} .pmgOfficeOffersHdl {font-family:Segoe UI Semibold;font-size:1.8em;} #pmgOfficeOffersHdlSpc {padding-bottom:13px;} .pmgOfficeOffersBullets {width:100%;padding-bottom:10px;} .pmgOfficeOffersBulletsIcon {float:left;padding-right:5px;} .pmgOfficeOffersBulletsTxt {font-size:1.2em;} .pmgOfficeOffersBtmCnt {padding-top:5px;} #pmgOfficeOffersHrLine {margin-top:-16px;} .pmgOfficeOffersHalfHalf {width:420px;float:left;} .pmgOfficeOffersSteps {margin-top:10px;width:100%;} /* Office Offer end*/ /* Excel SEO (FX102658097) START */ #pmgExcelSprNewsbits { width: 435px; margin-left: 15px; float: left; } #pmgExcelSprNewsbits div { float: left; } #pmgExcelSprNewsbits h2 { font-weight: normal; } .pmgFreeOffice .pmgExcelSprH1 { font-size: 3em; } .pmgExcelSprHero { width: 436px; height: 855px; background: url('http://officeimg.vo.msecnd.net/en-us/files/598/446/ZA102658091.jpg') top left no-repeat; float: left; } .pmgExcelSprEmbedHero { padding: 200px 0 0 4px; } .pmgExcelSprNewsbit { margin: 30px 0 0 56px; } .pmgExcelSprNewsbitR { width: 292px; } .pmgExcelSprNewsbitL { width: 72px; margin-right: 15px; } /* Excel SEO END */ /* OneNoteWedding START */ #pmgOneNoteWeddingHipHop { position: relative; height: 254px; padding-top: 25px } #pmgOneNoteWeddingHipHop .pmgHipHopOverPanel { color: #fff; width: 278px; background: url('http://officeimg.vo.msecnd.net/en-us/files/207/243/ZA102671881.png') top left no-repeat; } #pmgOneNoteWeddingHipHop .pmgHipHopOverPanel h3, #pmgOneNoteWeddingHipHop .pmgHipHopOverPanel p { padding: 4px 20px; margin: 10; font-size: 1.6em; font-family: Segoe UI, Arial, Sans-Serif; font-weight: bold; } #pmgOneNoteWeddingHipHop .pmgHipHopOverPanel a:link, #pmgOneNoteWeddingHipHop .pmgHipHopOverPanel a:active, #pmgOneNoteWeddingHipHop .pmgHipHopOverPanel a:visited { text-decoration: none; color: #ff9720;font-size: 1.5em; font-family: Segoe UI, Arial, Sans-Serif; font-weight: bold; } #pmgOneNoteWeddingHipHop .pmgHipHopOverPanel a:hover { text-decoration: underline; } #pmgOneNoteWeddingHipHop a:link, #pmgOneNoteWeddingHipHop a:visited, #pmgOneNoteWeddingHipHop a:hover { color: #00aeef; } #pmgOneNoteWeddinghiphop1 { background: url('http://officeimg.vo.msecnd.net/en-us/files/254/927/ZA102665220.jpg') top left no-repeat; } #pmgOneNoteWeddinghiphop2 { background: url('http://officeimg.vo.msecnd.net/en-us/files/317/805/ZA102665213.jpg') top left no-repeat; } #pmgOneNoteWeddinghiphop3 { background: url('http://officeimg.vo.msecnd.net/en-us/files/143/211/ZA102665222.jpg') top left no-repeat; } #pmgOneNoteWeddingHipHop { overflow: hidden; margin-top: 40px; } .pmgOneNoteFBBtnLayout {top: 10px; right:28px;} #pmgOneNoteDIYhiphop1 { background: url('http://officeimg.vo.msecnd.net/en-us/files/058/720/ZA102685183.jpg') top left no-repeat; } #pmgOneNoteDIYhiphop2 { background: url('http://officeimg.vo.msecnd.net/en-us/files/254/927/ZA102665220.jpg') top left no-repeat; } #pmgOneNoteDIYhiphop3 { background: url('http://officeimg.vo.msecnd.net/en-us/files/211/105/ZA102685182.jpg') top left no-repeat; } /* OneNote Wedding END */ /* OWA TEB 6.11 Start */ .pmgTEB610 { width: 610px; height: 350px; background: url('http://officeimg.vo.msecnd.net/en-us/files/998/405/ZA102676717.jpg') top left no-repeat; position: relative; padding-right: 10px;} .pmgTEB215 { width: 215px; padding-left: 10px; } .pmgTEB200 { width: 200px; } .pmgTEB355 { width: 355px; } .pmgTEB134 { width: 134px; } .pmgTEBBoltalic { font-style: italic; font-weight: bold; } .pmgTEBFBBtnLayout { right: 40px; } .pmgTEBHeaderText { font-style: italic; line-height: 1.5em; padding: 5px 0 20px 4px; } #pmgTEBMap a { position: absolute; text-decoration: none; height: 20px; cursor: pointer; display: block; width: 100%; } #pmgTEBMap a i { visibility: hidden; } .pmgTEBMapExcel, .pmgTEBMapWord, .pmgTEBMapPPT { top: 323px; height: 20px; position: absolute; } .pmgTEBMapExcel { left: 6px; width: 45px; } .pmgTEBMapWord { left: 61px; width: 50px; } .pmgTEBMapPPT { left: 121px; width: 98px; } .pmgTEBEmbedPPT { padding-left: 20px; } .pmgTEBBoing { width: 101px; padding-left: 15px; } #pmgTEBTop .pmgTEBTopH1 { font-size: 1.6em; line-height: 1em; font-family: arial, sans-serif; } #pmgTEBMid { overflow: hidden; } #pmgTEBMid h2 { margin-top: -4px; line-height: 1.1em; } #pmgTEBMid p, #pmgTEBBot p { padding: 14px 0 0; } #pmgTEBBot { overflow: hidden; clear: left; } #pmgTEBBot h3 { padding-bottom: 10px; } #pmgTEBBot ul { margin: 16px 0 0 14px } #pmgTEBBot ul li { padding-bottom: 11px; } .pmgTEBVertDividerMid { background-color: #E1E1E1; height: 130px; margin: 0 10px; width: 5px; } .pmgTEBVertDividerBtm { background-color: #E1E1E1; height: 190px; margin: 0 15px; width: 5px; } /* OWA TEB 6.11 End */ /* Back to school for office 2010*/ #pmgBTSOffice2010 a {outline: 0;} .pmgBTSH1{width: 620px;float:left; padding: 0 0 0 20px;} .pmgBTSBuyTryImg{float: right; padding: 0 10px 0 0;} .pmgBTSBuyTry {float: right;margin-left: 30px;width: 230px;} #BTSBuyBTn {float: right; margin: 5px 30px 0 0;} #BTSBuyBTn img { padding: 5px 0;} .pmgBTSTabSection{float: left; clear: both; padding: 20px 0 0;} #pmgBTSTabCtrl {width:230px; float: left; padding: 0 20px 0 0;} #pmgBTSTabCtrl .pmgGlobalTabBorderBottomMost { border-bottom: 1px solid #d7d7d7;} #pmgBTSTabCtrl .pmgGlobalTabLiSelected {border-left: solid 10px #f7931e;} #pmgBTSTabCtrl ul {border-bottom: 1px solid #D7D7D7} #pmgBTSTabCtrl li {border-top: 1px solid #d7d7d7; border-right: solid -10px #FFFFFF;} .pmgBTSTabSelected {border-left: 10px solid #f7931e;} #pmgBTSTabCtrl li:hover {border-left: 10px solid #808080;} #pmgBTSTabCtrl .pmgGlobalTabContainer {float: left;clear: both;} #pmgBTSTabCtrl #pmgGlobalTabContent {padding-top: 0px; float: left;} .pmgBTSHero{width:680px; height:381px;position: relative;} #pmgBTSTabContent .pmgBTSHero li{display: block;float: left; padding: 0 10px 0 0;} .pmgBTSHeroBoxContent{font-family: Segoe UI Semibold, Arial, Sans-Serif;} .pmgBTSHero .pmgBTSNewsbit {padding: 10px 0 20px; color: #555; font-size: 1.1em; } .pmgBTSHeroBox{background:#fff; filter:alpha(opacity=85); opacity:0.85} .pmgBTSHero1{background:url(http://officeimg.vo.msecnd.net/en-us/files/602/895/ZA102682314.jpg) top left no-repeat;} .pmgBTSHero1Box{width: 340px;padding: 20px;position: absolute; top: 10px; left: 15px;} .pmgBTSHero1Box .pmgBTSNewsbit img {float: left;} .pmgBTSHero1Box .pmgBTSNewsbit p {float: left;width: 285px;float: left; padding: 0 0 0 8px;} .pmgBTSHero2{background:url(http://officeimg.vo.msecnd.net/en-us/files/965/703/ZA102682313.jpg) top left no-repeat;} .pmgBTSHero2Box{width: 330px;padding: 20px;position: absolute; top: 10px; left: 15px;} .pmgBTSHero2Box .pmgBTSNewsbit img {float: left;} .pmgBTSHero2Box .pmgBTSNewsbit p {float: left;width: 275px;float: left; padding: 0 0 0 8px; font-weight: bold;} .pmgBTSHero3{background:url(http://officeimg.vo.msecnd.net/en-us/files/287/549/ZA102684020.jpg) top left no-repeat;} .pmgBTSHero3Box{width: 340px;padding: 20px;position: absolute; top: 10px; right: 15px;} .pmgBTSHero3Box .pmgBTSNewsbit img {float: left;} .pmgBTSHero3Box .pmgBTSNewsbit p {float: left;width: 285px;float: left; padding: 0 0 0 8px; font-weight: bold;} .pmgBTSHero4{background:url(http://officeimg.vo.msecnd.net/en-us/files/365/476/ZA102682315.jpg) top left no-repeat;} .pmgBTSHero4Box{width: 365px;padding: 15px;position: absolute; top: 10px; right: 15px;} .pmgBTSHero4Box .pmgBTSNewsbit img {float: left;} .pmgBTSHero4Box .pmgBTSNewsbit p {float: left;width: 315px;float: left; padding: 0 0 0 8px; font-weight: bold;} .pmgBTSHero5{background:url(http://officeimg.vo.msecnd.net/en-us/files/329/835/ZA102711056.jpg) top left no-repeat;} .pmgBTSHero5Box{width: 340px;padding: 20px;position: absolute; top: 10px; right: 15px;} .pmgBTSHero5Box .pmgBTSNewsbit img {float: left;} .pmgBTSHero5Box .pmgBTSNewsbit p {float: left;width: 285px;float: left; padding: 0 0 0 8px;} .pmgBTSHero6{background:url(http://officeimg.vo.msecnd.net/en-us/files/226/838/ZA102711057.jpg) top left no-repeat;} .pmgBTSHero6Box{width: 340px;padding: 20px;position: absolute; top: 10px; right: 15px;} .pmgBTSHero6Box .pmgBTSNewsbit img {float: left;} .pmgBTSHero6Box .pmgBTSNewsbit p {float: left;width: 275px;float: left; padding: 0 0 0 8px; font-weight: bold;} .pmgBTSHero7{background:url(http://officeimg.vo.msecnd.net/en-us/files/435/045/ZA102711053.jpg) top left no-repeat;} .pmgBTSHero7Box{width: 340px;padding: 20px;position: absolute; top: 10px; right: 15px;} .pmgBTSHero7Box .pmgBTSNewsbit img {float: left;} .pmgBTSHero7Box .pmgBTSNewsbit p {float: left;width: 285px;float: left; padding: 0 0 0 8px;} .pmgBTSHero8{background:url(http://officeimg.vo.msecnd.net/en-us/files/476/359/ZA102711054.jpg) top left no-repeat;} .pmgBTSHero8Box{width: 340px;padding: 20px;position: absolute; top: 10px; left: 15px;} .pmgBTSHero8Box .pmgBTSNewsbit img {float: left;} .pmgBTSHero8Box .pmgBTSNewsbit p {float: left;width: 285px;float: left; padding: 0 0 0 8px; font-weight: bold;} .pmgBTSCarouselHoverSection{position: absolute; left: 0; bottom: 131px; background: #f7931e;width: 100%;z-index: 500;display:none;} .pmgBTSCarouselHover{padding: 10px 15px; color: #fff; font-size: 1.1em;} .pmgBTSCarouselHover span{font-weight: bold;} #pmgBTSTabContent{float: left;position: relative} #pmgBTSTabContent li {list-style: none; display: none;} .pmgBTSHeroCarousel{position: relative; bottom: 0px; left: 0;} .pmgBTSHero .pmgGlobalCarousel{position: absolute; bottom: 5px; left: 0px;margin:0;padding:0;width:100%;bottom: -9px;} .pmgBTSHero .pmgGlobalCarouselFilmstrip{position: relative;left: 18px;} .pmgBTSPPTLeftArrow {position: absolute; left: 0; top: 45px;} .pmgBTSPPTLeftArrowImg {height: 34px; overflow: hidden; position: relative;display:block; width: 17px;} .pmgBTSPPTLeftArrowImg img{position: absolute; top: -42px; left: 0;} .pmgBTSPPTLeftArrowImg img:hover{position: absolute; top: -42px; left: -20px;} .pmgBTSPPTRightArrow {position: absolute; right: 5px; top: 45px;} .pmgBTSPPTRightArrowImg {height: 34px; overflow: hidden; position: relative;display:block; width: 20px;} .pmgBTSPPTRightArrowImg img{position: absolute; top: 0; left: 0;} .pmgBTSPPTRightArrowImg img:hover{position: absolute; top: 0; left: -20px;} ..pmgBTSHeroCarousel li {position: relative;} .pmgBTSHeroCarousel li a{height: 117px; width: 151px;overflow: hidden;display: block; float: left; position: relative;} .pmgBTSHeroCarousel .pmgBTSCarouselImage{position: relative;margin: 10px 0 0;} .pmgBTSHeroCarousel .pmgBTSCarouselImage a img{position: absolute; top: 0; left: 0;display: block;} .pmgBTSHeroCarousel .pmgBTSCarouselImage span {position: absolute; top: -9px; left: 40%;display: block;} .pmgBTSHeroCarousel .pmgBTSCarouselImage a:hover img{top: -118px;} #pmgBTSOffice2010 .pmgBTSHeader {float: none;} .pmgGlobalTabContent {display: none;} .pmgBTSNewsbit img{ float: left;} .pmgBTSNewsbit .pmgBTSOptionsblurb{float: left;width: 150px;} div.pmgBTSOptionsblurb{clear: both;width:100%;} .pmgBTSOptions{float: left; width: 900px; clear: both;padding: 20px;} .pmgBTSExploreHeader{ font-size: 1.3em;} .pmgBTSExploreHeader a{ color: #1d8ada } .pmgBTSExploreOffice{width: 400px; height: 170px; float: left; border-right: 1px solid #CCC; margin: 0 8px 0 0; padding: 0 8px 0 0;} .pmgBTSNeedOutLook{width: 230px; height: 170px; float: left; border-right: 1px solid #CCC; margin: 0 8px 0 0; padding: 0 8px 0 0;} .pmgBTSNeedOutLook .pmgBTSOptionsblurb{padding: 0 0 0 10px;} .pmgBTSCollegeStudent{width: 230px;height: 150px; float: left; } .pmgBTSOptionsBox{padding: 0 10px; margin: 0 0 5px 0; float: left;clear: both; min-height: 155px;width: 210px; background:url(http://officeimg.vo.msecnd.net/en-us/files/505/398/ZA102686259.png) bottom left no-repeat;} .pmgBTSOptionsBigBox{padding: 0 10px 0;margin: 0 0 5px 0;float: left;clear: both; min-height: 155px;width:379px;background:url(http://officeimg.vo.msecnd.net/en-us/files/691/930/ZA102686255.png) bottom left no-repeat;} .pmgBTSOptionsBigBoxHead, .pmgBTSOptionsBoxHead {float: left; clear: both; line-height: 0px;} .pmgBTSOptionsblurb { font-size: 1.1em; color: #555; float: left; padding: 0 0 5px 0;} .pmgBTSOptionsBottomblurb {margin: 0 0 0 10px;} .pmgBTSOptionsblurb a{ color: #1d8ada } .pmgBTSOptionsIcons li{list-style: none; width:75px; float: left; padding: 15px 0 20px} .pmgBTSOptionsIcons li a{display: block; margin: auto;text-align: center;} .pmgBTSOptionsIcons li span{display: block;margin-top: -14px;} .pmgBTSFollowUs{ margin: 75px 0 0 30px; float: left; clear: both; width: 700px; padding: 0;} .pmgBTSFollowUs span{ padding: 0 5px;} .pmgBTSFollowUs img{ padding: 0 0 0 5px; vertical-align: middle;} .pmgBTSFollowUs iframe{ padding: 0 0 0 5px; vertical-align: middle;} .pmgBTSModalVidContainer {width: 645px;} .pmgBTSShowcasePlayer {height: 360px; width: 639px; padding: 20px 0 10px 0;margin:0;overflow:hidden;} .pmgBTSPopupBuyButtons{width: 100%; text-align: right; padding: 20px 0 0 0;} .pmgBTSPopupBuyButtons a{ padding: 0 0 0 10px;} .pmgBTSFooterText{font-size: .9em; float: left; clear: both; width: 900px; margin: 20px; color: #aaa;} /* END BTS */ /* SuiteCompare START */ .pmgSuiteCompare { width: 280px; margin-left: 18px; font-family: Segoe UI; font-weight:lighter; font-size: 48px; color: #000000; line-height: 1.0; } .pmgSuiteCompare p{margin-top:0px;margin-bottom:0px;} #pmgSuiteCompareHero {width: 700px; height: 200px;} #pmgSuiteCompareHeroBkgnd {width: 642px; height: 198px; background-image: url('http://officeimg.vo.msecnd.net/en-us/files/633/651/ZA102690537.jpg');} #pmgSuiteCompareHeroList {padding: 35px 0 0 375px;} .pmgSuiteCompareRegular16 {font-size: 16px; font-weight: normal;} .pmgSuiteCompareSemibold15 { font-family: Segoe UI; font-weight: bold; font-size: 15px; color: #000000; } #pmgSuiteCompareChoose {padding-left: 22px; padding-top: 20px; padding-bottom: 10px;} .pmgSuiteComparePrice {padding-top: 2px; padding-bottom: 8px;} .pmgSuiteCompareBold14 { font-family: Segoe UI; font-weight:bolder; font-size: 13px; color: #000000; } .pmgSuiteCompareLight14 { font-family: Segoe UI; font-weight:lighter; font-size: 13px; color: #000000; } .pmgSuiteCompareBold14 a { font-weight: lighter; color: #5382C2; } .pmgSuiteCompareLight12 { font-family: Segoe UI; font-weight:lighter; font-size: 12px; color: #000000;} .pmgSuiteCompareBlurb { font-style: normal; } .pmgSuiteCompareSemibold17 { font-family: Segoe UI; font-weight: bold; font-size: 17px; color: #000000; } .pmgSuiteCompareRegular12 { font-family: Segoe UI; font-size: 12px; color: #000000; } .pmgSuiteCompareRegularBlue12 {font-family: Segoe UI; font-size: 12px; color: #5382C2; padding-top: 2px;} .pmgSuiteCompareRegularBlue12 li {list-style-image: url('http://officeimg.vo.msecnd.net/en-us/files/404/478/ZA101098582.gif'); padding-top: 3px; } .pmgSuiteCompareRegularGray12 { font-family: Segoe UI; font-size: 12px; color: #6D6E71; } /* SuiteCompare END */ /* Word Visuals (FH102685297) */ .pmgWordVisHeader { text-align: center; width: 940px; color: #5D5D5D; padding: 47px 0 30px; } #pmgWordVisHeader h1 { font: 22px/1em 'Segoe UI Light'; } .pmgWordVisHeaderTitle { font-size: 50px; line-height: 1.1em; margin: 0; } #pmgWordVisBox { width: 940px; } .pmgWordVisBox { padding-left: 18px; } .pmgWordVisBoxContent { width: 283px; } .pmgWordVisBoxDivider { width: 1px; padding: 240px 11px 0; } #pmgWordVisBox h3 { color: #0D66CC; margin: 0 20px; padding: 10px 0 24px; } #pmgWordVisBox p { color: #5D5D5D; margin: 0 20px; } .pmgWordTop { width: 940px; height: 50px; } .pmgWordTopLogo { width: 500px; height: 50px; padding-left: 60px; } .pmgWordTopFB { width: 330px; height: 50px; padding-right: 45px; float: right; } .pmgWordTopFBTxt { width: 220px; line-height: 1em; color: #848484; text-align: right; padding-right: 10px; } .pmgWordTopFBSmTxt { font-size: .85em; } .pmgWordTopFBButton { width: 100px; height: 21px; padding-top: 4px; } /* Word Visuals END */ /*BTS Comparison page start*/ #pmgBTSCompare {width:940px;font-family:Segoe UI;} #pmgBTSCompare h1 {font-size:2.5em;font-weight:bold;color:#f7931e;margin-left:150px;width:754px;} #pmgBTSCompare h2 {font-size:1.9em;font-weight:bold;color:#f37021;margin-left:150px;width:754px;} #pmgBTSCompareTbl {margin:35px 40px 0px 40px;width:856px;table-layout:fixed;} #pmgBTSCompareFstRw {background-color:#f7931e;height:35px;border-bottom:2px;width:856px;} .pmgBTSCompareFstCol {vertical-align:top;background-color:#ffffff;font-family:Arial;font-weight:bold;text-align:right;padding-right:12px;line-height:1.5em;color:#f37021;font-size:1em;width:98px;margin:0px;padding-top:12px;} #pmgBTSCompareFstRwSndCol {font-size:1.3em;color:#ffffff;text-align:center;width:374px;font-weight:bold;border-right:2px;margin:0px;} #pmgBTSCompareFstRwTrdCol {font-size:1.3em;color:#ffffff;text-align:center;width:364px;font-weight:bold;margin:0px;} .pmgBTSCompareSecRw {background-color:#f8f8f8;padding-top:20px;} .pmgBTSCompareRwBorder {border-top:2px;border-right:2px;} .pmgBTSCompareImg {padding-left:85px;padding-right:5px;float:left;} .pmgBTSCompareBtn {padding-top:65px;} .pmgBTSComparePdTxt {float:left; padding:15px;text-align:center;width:354px;font-family:Arial;font-weight:bold;font-size:1em;} .pmgBTSCompareCol {vertical-align:top;background-color:#f3f3f3;padding:12px 15px 16px 15px;font-family:Arial;color:#363636;font-size:1em;line-height:1.5em;} .pmgBTSCompareCol ul {padding-left:15px;} .pmgBTSCompareAppIcon {float:left;padding:16px 15px 0px 7px;} .pmgBTSCompareAppIconSpc {float:left;padding-left:15px;padding-right:15px;text-align:center;} .pmgBTSCompareAppLnk {padding-top:4px;} .pmgBTSCompareOffer {float:left;width:100%;padding-top:18px;} .pmgBTSCompareFootnote {font-family:Arial;font-size:0.9em;font-style:italic;} #pmgBTSCompareTrmFtn {padding-top:5px;} #pmgBTSCompareColStudTxt {margin-left:160px;padding-top:15px;font-family:Arial;width:754px;} #pmgBTSCompareCommFtn {padding-left:150px;padding-top:37px;width:754px;} #pmgBTSCompareCommFtnSpc {padding-top:8px;} .pmgBTSComparePpt {padding-left:5px;padding-right:5px;} .pmgBTSCompareOneNote {padding-left:10px;padding-right:10px;} /*BTS Comparison page start*/ /*New Excel Hp Starts*/ #pmgExcelBlogImg {padding-left:8px;} .pmgExcelCntAlign {margin-left:62px;} #pmgExcelGrnTxt {font-family:Segoe UI;font-size:1.5em;color:#75ad2b;margin-top:40px;font-weight:bold} #pmgExcelTempBlk {margin:20px 0px 40px 62px;float:left;font-family:Segoe UI;} .pmgExcelThumbN {float:left;padding-right:15px;width:166px;} .pmgExcelThumbNHdr {font-weight:bold;color:#000000;font-size:1.2em;padding-bottom:5px;padding-left:4px;} .pmgExcelThumBlrb {font-size:1em;color:#000000;padding-top:5px;padding-left:10px;} .pmgExcelThumbN ul {padding-top:10px;padding-left:25px;} #pmgExcelSeeAllTemp {padding-left:15px;float:left;padding-top:40px;width:80px;} /*New Excel Hp ends*/ ------------AwZAEu8L0Fx8UXBllPLKFH Content-Disposition: inline Content-Type: text/css Content-Location: http://officeimg.vo.msecnd.net/en-us/files/233/757/AF102640712.css Content-Transfer-Encoding: 8bit /*International English*/ ------------AwZAEu8L0Fx8UXBllPLKFH Content-Disposition: inline Content-Type: image/gif Content-Location: http://officeimg.vo.msecnd.net/en-us/files/199/617/ZA010079369.gif Content-Transfer-Encoding: Base64 R0lGODlhBQAFAIAAAP/CAAAAACH5BAAAAAAALAAAAAAFAAUAAAIEhI+pWAA7 ------------AwZAEu8L0Fx8UXBllPLKFH Content-Disposition: inline Content-Type: image/jpeg Content-Location: http://officeimg.vo.msecnd.net/en-us/files/869/762/ZA101834595.jpg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAcFBQUGBQcGBgcLBwYHCw0JBwcJDQ4M DAwMDA4SDQ4ODg4NEg4QERIREA4WFhcXFhYgHx8fICMjIyMjIyMjIyP/2wBDAQgI CA4NDhgQEBgaFREVGiAfHx8fICEgICAgICEiISAgICAhIiEiISEhIiEiIiIiIiIj IyMjIyMjIyMjIyMjIyP/wAARCAOiB1oDAREAAhEBAxEB/8QAGAABAQEBAQAAAAAA AAAAAAAAAAECAwj/xAAxEAEAAwACAQMDAwMEAAcAAAAAARESAhNRAwQhFDFBUmGR BUKhQ1NxgRUiI2Kx0eH/xAAZAQEBAQEBAQAAAAAAAAAAAAAAAQIDBAX/xAAnEQEB AQEBAAICAQQCAwEAAAAAEQESEwIDFFEEIUFSYQUVMZGhIv/aAAwDAQACEQMRAD8A 9E5fO4damTgpk4KZOCmTgpk4KZOCmTgpg8ymDzKYXzKYTzKYXzKYPMpg8ymDzKYP Mpg8ymTzKmDhaYXzKZPMq4PMphfNKYPMpg4KYXgpg4KYOCrheCpg4KYOCrg4KYXg pg4KYOCmDgpheCmDgq4OUpheCmDkpheSrk5KZOSmV5SmTkq5OSmYXkpmDkpg5Srl eSmSFMnJTKwWiBRClEQpYFEFogUQKWBRAogEAgEBYBAAABaEAAAAAAUABQQFAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAGKcOWkpeQo5CjkKOQpOQyvJTJyVaOSmTkKOSlHJTJyUyc lSjkq5OSmTkpleQo5KZOSmTkpk5DJyFHIZXkKIFEQogUQKWBRAogUQKIFECiBRAo gtEClgUQKIFECiBRAogUBShQFAUC0IUBQFAAUAoAAAAAAAoAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAIkAAgEAAAAgAAAAAAAAAAAAAAAAAKAKAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAgAAAAKAAAIAAAACgAgKAACAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIgAAAACggKAAAAAAAAAAAAAAAAAA AKAAAAgAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAiAKIIAAAAAAAAACqAAAAAAAAAAAACgAIAAAAoAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIg IoCAAAAAAAAoAACgAAAAIAAAAKKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIAAAAoAAAAAIAAAAAqg gAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAACgAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAACAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAIAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAACAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIACgAAgAAAKCAAAAAAgAKIgAAoIACqA AAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAgAAAAAAgAAAACAAACggAAAoAgKgAACgKAAAAAACgAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAoCAAAA CAAoIAAAAAAiggKAAIAgKAAAAAAACACgAACgKAAAACgAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAACgCAAAIAAAAACgAACAACAoIgA AAAAIAACgCoAAIAoAoACgAIoACgAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAiAKAAAAAAAAAAAACCVQEAAASgAAAgAiCgKAAAACAAAo AAAAAAqgAAAoqoAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ACAAAAAAACACgAAAACAACAAIAAACAACAAIAAAAAAAAAAKgAAgAAACigAAKFLBaWI qgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAIAAKAAA IAAIAAAgAAAIAICoAAIAAAAKACAoIAIAqIAAAKgKIAgKAAKoLEWlgqxBRVAAABQA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAQAAUAAQAAAQBAAAAQ QoAAIoAAIAIKoAEEAUEAUAQQABAAQAAAEEAAFAAVYi01EFgqiqACgAIqgAAAoAAA AAAAAAAAAAAAAAAIAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAgAAAAoAAAgAAgCAAAAAgAgqgIAA MgogAAQVYAAACCAIIKIAACACCiAAgAgCAUUBYK1EFgqgqAKoAAqgAoACKoAAKAAA AAAAAAAAAAAAAAACAACCiAAAAAqAAKAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAIAAKAAAAAIAAAIAgAAAIoAAAgAgAKC KgBRBSAoIAIAAgAiKqCAAIACACCiUARKBQQBQBYirAaFEAFABRQFFEAFFUAFABUU AABQAAAAAAAAAAAAAAAAAQAQAUQAAEAAEAKBRVAABUAUABQAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQQAUAAAAAQAAAARAAAARQAAAAE BRAAgEBQAAAAQQBABEUAQAEAERQBAAQQBAARQEBVBQAAVFAUAAVUAFBRVABUUBRQ FAAFVAABQAAAAAAAAAAQAAEEAsAFBABQAEQAUEQAAAAAFAFUABBRQAFAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABAAABRAAAAAQQAAABFBAAA UEAFCiACgAAAgACCAAiKoIgJQKIKICAAgFESgUEoIAJaVQAAAoAKBQBVABUAUBQA UFFEFBRVAFVAFUFAABUUAABQAAAAAAAAAQAEERQEQALKC0AVUKIFECiCUkUogUQp RAogUQPkgAoCgAAIKAoqAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AggAAAoAAgAAAAIAAIAAAAAAQUgiigAAAIIAAAgAiKAAIIAgAWgAiKIAIlABASiJ VCglEAAtKoVAqiVAAoLVAFoFQULKKoWULWilBQEVQUVQVFUFARVBRQFABUUAABQA AAAAAAAQAQBFEEQRFRAQLKBQtaLqV6IaXtIul7IuoXohcLUVQAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAUAAQAAAAAEAAABQAAAAAAA AABEAAABAFQBAABEABAASgggCKIBREEFEoIFpRChaBaVUsoWlBKBQKIKWVCyhZVL Ki2ULKC0CqLUFoWULWi2UFqKoKKtBaiqCitIoDQoiqCgAqKAAAoAAAAAAAAIACCC iCIIgiKiKMggiKWVCzoLKFrRbXoLXoi6XtIumu0i6a6Iul6IWtQsoqgAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAoAAAgAAAAAAAAAAAAAAAAAAAgCAA AAigIAgAAiAAgAIAIigCAggCAipaULQSyhaUS0qlpQtKJaVUsoWlCyiWlUsoWlCy hadBa9CWlFsoWdBa0WykLWoWVS1qFrQKLa0LaFEVoGkVRWkVoVQVFUVQVFAUFFEA AFAAAAAAAABAAQQUQRBEERURRBajy1ziLj9zzKnWnkU65TxKdcnlq9J1ynlp0Yk8 tKY5HnpTHI89KZ5LxpVzyXnUpXJZotSs1F+VD5UVQAVABRQAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAEAAAEAFAAEAAAAAAAAAAAAAAAAAEAQAAEAAVAEAAEQAEABAAQ QUQCiICULFS0BBLShaURKolEKFpVS0olpVLSiWzQtKqWULShadCWnSlnQaShZ0RL ToLOgtaLZSGjoNHRFtaFrUFBRq2kGhWgVGmhWkVpFUGkVoVUVRVBUUBQUUQAAUAA AAAAAAAEBBBRBEBBEERpEEQPlKGpO9IvZK+unK9sNeycr2cW/XEjWoa7xIrVAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABAAABQBAAAAAAAAAAAAAABA EAAAAABAFQBAABEABAAQAEEFEAEQBRBLQS0oFC0qpaULSiWzVLKJbNEtKpaUS06V LZ6C06EtnpUtOiFp0sS06IWnQlp0padCaTohadKaOyJo6ItnQlrRVoWqK0NKhbSK oNIrQrSK0KqK0K0jTSDQrSKorSAK0KIqgoKAigAKAAAAAAAAACAggogiAgkoMo0I IgMqiCMgiogIFr0Lvl5a9NI12y3n3anK9refcnLXZDXticruG/TEi6hesSK1QAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAQQAAAUQAAAAAAAAAAAAAAAAAAEAEAAAAARQEAA QAARAAQAAEAERRABLSgVUtKFpRLShaVUsoWlEtKpaURKFpQtmqlpRLZ6EtKqWz0F pVS2elS06EtnpUtnoTSdLDTPRE0naxNM9ETUnSwtKBQsC1RVoKKorSDQqorSNNA0 iqLDSK0itA0NNIrSK0K0iqK0iqiqDQoiqCgAqKAAAoAAAAAAAAICCCgIyCCSgiNI gjIIqMiIogiAiogIAC0LKLbXSLpeiLprtIu2u0i6lvsi7lfRIdi+hF7F9SLuF9MS GoX0wi6hesSFwtFUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAACiWlCyhZQKFpQKoUAAEAAAABQAAAAAAAAAAAAAQA AAAAQBAAFQABBQQAEQAEAABAtBBS0EsoWlESqWlEsoWlVEoJQSglVLShaUS0olpV LSiWzVS0ols9Klp0Fs9KzpnoiaZ6WJpntYmmeyGmeliWz0JaVUtKCVUKFgFACwVQ VFUGhVRWhWkVpGmhVQaRWhWkVpFUVsVcRWkVoVpFaFaRVBUVRVBUVQAUUQAAUAAA AAAAAAGRBQBkRBJQZRoQRAZVGREUZERUZEQCqiULShZQtKFnQWvQaOyG17Iu19CL 2L6pybhr0wi6g6SFrSLZ0GjohpeyGz0SL2S166cr2Svtpyva17pydq+5yvavunJ2 wvvhyvZC+2HJ2cV9cTld8V9MIb4r3hF1C9YkLhesC4KKoAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAlpQuChcHWBcJ1iw1B1hE1B3hDUJ3hDUHZDR2Q0nZDR2Q 0dkLOgs6CyiAoAAAAKAAoAAAAAKAAAAAAAAACAAAAAAACAAIAAACACACgCCAAIAC ULBLSqAiUEUsolpQSgURKqJQShaURKpaUS2aFpVS0olpQtKqWlEtnpUtOhNM9LEt npYWz0JbNVGaIlVGaIgIqIogiAggAAAoqCigKK0iqK0irgrSK0K0itYitIKK0K1i NNINCtI00K0itIrQqorQKjSgqCiqACiiAACgAAAAAAAAAyIAKMiIIgiKiKIIyqII yoyIgjKoioyIyogIIlC0qpaUS06EtOlLToTSdLE0nZDZ6EXslfU5Xta905Xta905 Xta9k5Xshr0whqDsi2vQmk6DR0GjsXSdkNr6ENnoQ2ehDa+hDZ6pF2vqQ7D1Idi+ xyds+V9tOV7Z8nvqcnbPlffTle6fK/kacndK/k6nK98r+Tpyd8n5OnB3yv5OnC98 r+VqcHfJ+UcHev5RwfUH5Rwv1B+UcH1B+UcH1C/lHB9QflHB3n5Rwd5+UcHeflHB 3n5Rwd6/lHC96flHCd5+UcHeflHB3n5Rwd8n5OnB3yfk6cJ3Sfk6cL3cj8jTk7uS fkacp28j305Xt5HtpynZyPbTleyT10huT00huTvSJuTvSLqTrSFytCygUVQAUFAR VABQBVQUAVQAVFAABQFAEAAAAAABQQFAAAAABAAAAEAAAAEBUEAFBAUQQABAARUA AQRKBQSqhQtKCURKCVRKIlC0olpVS0oWlVLSiWzSGk6WJaULZ6EtKqWlVLZoJREo JVRBGVEERUQEEZVEBFRABEBFAAEBQUFFVBRYVFaFaRVwGhppFaRWkVoFFaRWkVpF aFaRWhppFVFaBpFaFVFUVQVFUAFFEAFAAAAAAAAAABkQUAQRkRBEVEUQRFGRllRB EEZVEEZUZERRkRlUZERUZVGRmWVRkRmqjNESqiULlOlTUnZF3K+hDslfVOWu2WvY 5Xta9k5XtX2TleyGvU5XcL6JDR2Qs6IWdENHRE0nRDR2sNHaQ0dkNHZCzsi6Xoho 6IaOg0dkNL0QtOhdL0Q0dJDR0sNL2Q0dpDR2Q0vRF0dELXoi3K9IWdBa0LWi2UW1 oWVBRVABQUVUFFUFFVBRVQpYLSwWliFLBVgLAWIpAWAoKKIAqiAqgAAAAICggooA AAAAAAAAAAAAAAAAICgCogAAAIIAAAgAAJVQoJQKFpRLKCUCqiUEoiULSqWlEsoW lEtKpaUS2aJZVLZolpVRAQRFEoJREoIqICKIIgIIiogIIgiKIIiogIIiiCICKAAg ACigKCoqiqitA0jSg0K0jTSK0iqDQrSKuIrSK0K0itCtIrSK0K0iqK0iqKqCiqAC ooCgAgAAhQABVAAABBEUAQRkRBBUZUQRFGRlkEVEBFRkRARUQGREVGYJTMVKZipT MVmYZglMRUZ3BmmIqMxUSKjIiAilIJSCIp8lEs6Vbleki6leyHZK+iRexr1OV7F9 E5XcL2RdL0ha0AAChZSLZQs6C16Qs6FtegtehbXpC16FtaFrUVqgovwqHwoqiqiq Ciqi/Ch8L/QPhf6Ivw0HwovwqCiqKAqCiqACoqgCqBQUCgtAqCigAAKAAKoCAAAC gAAACgKAAAAAAAAAAAACUCiAAAAFBAAAQQUAQAARASgVRKJZQtKIlBKoUS0oIAqI CAiogiACIogiAgIqICACMqAiAiiCIIgAiKIIgiKIIgIqIIijIgCAKiAAAAAoKKqK oQqNNA1iKorQrSNNIrSKoNCwqK0itIrQrSLTcGqaiLTURWoitCqgoq0LgqLqDoTS 9LDX7HQXPg61IXJdF/8AMf1D5X+ofJBaWARBYAAKoAAAIIgCogIIgiKjKiCMqIMs gioyIiiCIIiiAgAiKIIzBKSKjMEpmKzTMVKY34iUzyqUzyqZZ5Ck5VMpyJTPIUnK 1KTkKTkTJytTKclMpytKSFSiBRBKBfkC5UXUr0RdNdJF010kW4WiqgQFgEAgpAVB RVBRVRVBoVUVQaRVC1RpaC0VagCqCgtFWoWtFtaFrUWyha0LWi2tQtaBRVoFFWoA LRQFoFBaBQUCoAqgAAAoAAAAqgIAAAAAFAAAAAAAABKABQFQBAABAEABFAEAEQAE AERQBBAEBFEEARUQARAQRFARAQEUQRABGVARAFEEQEEQARFEEQRFRARUQEERUQEB FQBAAAABVEUVUVRVRWoLTURaaz46ixxlvPjpWs8vDfGpWscmvPUqx6fLw6Z9PyTp rq5NZ9HyTpenk6Z9Gp010z5a/H1Ol6Wvx06XriPvLXlmJ0f+nH98fyT4Z/fF/qa9 H/cj+Tr6/wDLP/ZN/Sdvofrg9fq/yOfkd/t/1f8Aye/1fs4+R9R6HlPyPrOPkfUe l+6/k/X/ALPPT6j0/En5Pw/Wnnp9Rx/Sfk/H9HC98fpX8jP0cHd/7T3/ANJwvbPi GvY5Xsn9l9dOTctd6kXcr3pF1K9akW5Woq0FFUFRQFAAAAAABAQQUQRBEERUZUQR lRBGREVGREVGQFRkEEARRAQQBFRBEBkZRSmYIkUpIFJBKSCUnK0ynIlJytKTkSk5 CjlaUnIZTlKmTlaZTkqZOSmU4WmTgqZOSmTkpk5KZOSlSvIvysF+VQUVqoqorUCl gtHIUvKLRyFLAogUsRVgUsFUFFBVQUUBQVFUFABRVRVAFUFQABVBQEVQAUBBRQFA FAUAFAABQEBQAQUUAAAAABQAAAQAAAAAAAAEAEFAEAABABEABABEAUQARAFEBBAE VAEEQARFEEQAGVARAQARlQEQEVAEEQEEFEEQEVEERUQEBBEUBEBIFECjkKXkWjkp S8C5a4SlcSYF+n5hb8f3h/U36X6oO/r/AGTTu9Dye/1nHyT6n0T8n618/kfV+j4k /M+v/Z5afW+n+mT8/wCH608dPr4/2/8AJ/2Of4//AE8P9n/iE/j04T/st/xw8P8A aT/UPV/HHj/lP+z+f6xfDE+v9f8AaP8ApP8Asvt/0eHxPrfc/q/xCf8AYfd+/wD5 i+PxZ+r9x+uU/N+3/I8vj+j6j1/9zl/KflfZ/lpx8f0nb6s/fnM/9p7fP/Lf/a84 amfynekQqq1UabzUWGs1GobRqHTNRqGs1Gm81lYdMGobxGoaxlp0xGm8RprEVpGm kVpFaFaQBVBUVQAAAAAAQEEFRAQRBJRUZUQRlRBGRGVSUEZVGVRAQRlRKIgFVLSh aUEohREC0ogogIAogfAiCgAFJAoglJAogUQKTkKOQo5Uo5DKchleSpk5KZOSmTkp k5KZOSlHJTK8lXJyUyvIZXlKtSvIUsFVFUVUVqBREKXkKXkWjkKORaORKILSwCAs AgqwCIEBRVABRQFQBQFBQEUBQUAAFRQAFAAFUAAFAAABQAEUEBQAAFAAAAAAABAA BABQABAAAQAARAQAAEEFAEBBBRAAQRAFEEQQBBEUBEABlQBBEAERRBAEVEBBAEEQ BUQEERRBPhFS4QS4RYaQiaSrE0lIm5TpYm5Tohvkz3qxnfLynerE1y8s9aRLnyzu 6sSWVRlUQRFRARUBUBQEVQUVUVoVUVpFUG0W1Gm0WJaRq2s1lpvNGm6y1Deaiuma jUN5qNQ3iNQ3mo03iNN4ito00itIrSK0KqKoKKIKAAACAACICKgCCIqIIyogiAyr LIMqyijIjKoyIyogjIIqIIlUSiJREoWURKolEsopQSgUCgoFBaKCAoAAACgAIKoR AgEFWAQCAsQogtLFKIhSwWiBSwKWC0sQpYFEFpeUKWBSigKKAoCLSwKIFECiBRAo gUQCAsCiC0QCAAoACCigAKAAKqAACgACgKAACgAAAoCKACAoAAACgAAAAAgAgAAo AAgAIAAAIgIAACCCgCAggCKAiAAigIgiAAggogiAgAIqIAIgIqAiBaKgFoIigIgi KMiIqIDKogiKjIiKIIyqIIijIyijIiKiCIoyMoogCggAAoqiiDVFWorSK0K1mirU VqorVFbzUaazWWrdM1GolrNRp0zUWG81GobzUah0zUahvNZadMRppGm0VpFaRpoV UFFUFRQAFABAABEAVEBBEVEEZUQRlUZ0RBGVRnVRkRlUZUZEZERUZBFRkS0qolC0 olpVS0oJQSiWUWyhZQtaFlBaKULKgtCyha0LKLa0CgtFWgUFQUAVQBVQUFGgFBUA VQAUVUAFFAUFQAABVAAABQsFsqFrQsAFUAAFAAQBVAAAAgKABAIKoEABYAAAAACo AAoAAACgAAAAAAAAAAAgAgoAAAgAAIAAIgAIAAIigCACIAogAiCAIqIACCIoCICK CIiiCIoCICKiCIFAIqICCIqIDKogiKIIyIiiCMqiCMqiAioyIiogjKogIqMiIolE QAAAFoKKoKNNIqoKitUVqirUVrNRYaqNN5qNN5qLDdRqG81GnTNRqJbzUadM1God M1lqJbzUabxGm0abRYaRWkVoVUVQUUQAUAEAAERUQEEFRkEVEEQGVZZUZERUYEZV GRGVRkRlUZVEEZVGQtFS2REoiVRKJbNAoJRCqWUWyoWtEsqra1FsoWtAoLQKirRV oFC1qC0VaC0CirUFoq0FoqotrQUFopUVQUFFKgoKKCKKAAAAAoFCyoFBaKAAoAAA qgAqAKUFAqCigAKAKoAAKACiiAACgAAAoAAoiCqIAAAAAAAAAAAgAoAAgEAABAAB BRAQS4AtAsEtAFRAQBUQARAQQUQEBBBRAQQBAQRFEAERRAQRARUBEBFRAQRFGREV GREERRkRFRAZVEEZVEEZVEoM1UQRKqM0RKoyIlVEopQKBRGqKUFqK1RVoq1BaDVF aqKtRWqK1UatrNRW81GrdM1GolrNRp0zUWHTNRuHTNZah0zUahvNRqHTGWobxGm8 RW8RppFhoVUVoAVUAFABAABEVEBFQEZBFRBGVRBGVRkRlUZVGVRkRgRnVRlUZEtl UZVLZERUtkRmqJRGaFpVS0oWBZRChZRbKC0CgVFWgUFotlQtaC0Wyha1FtaC0LWi rULKC0VaLa1BaKtFWg1RSoNUFFsQtRVBRRBVBBQSgoAAoCgCAoCiggiqACgCgKAC oAoCgAqKAAoAqgAoAAKAAAAiqAACgAAACgAACAAAqWBYhYpaAUCgACICKAIIAAgA IoCIAAIgCiCAICAioAgiAAgiKAiAgIoggCCIogIIgIqICCICAiogiCMqiAioyqID KogjIiKjKiCMqiCMqIIyIijIiKiCMgqgACgIKKoqgqK1QWitUFqK1UVqjTVRW81G obzUahvNZadM0WHTNRqHTNZbdc1GobzWWnTNRqHTEahvEabRW0VpFUVpFUFFEFAB AAQQVEBFRBEEZVEERUZVGRGVRlWWQZVGBGVZZVLZVGRGVRlUtlUZEZqoyFsiWipa BaBaVSygAULKgUVahZVLWoWC2tCxBaCilBRVQWirQKC0VULUVaKqLa0LUVagorQL RVqAKtBUFAFUQFUAAAVQEFAABRQAVQAVAABRQFBQEVQAAUUQAUAUBQUAAAFAARVA AAAAAAABQAQAQAAABFAAAAAEABAABEABAABEABFEAEQBRBEABBEEFEBAQQUQRAQE VEAERRAQEEQQUZBBEERRBEVGQQRFRkEVGREVGREUZERUZERUZUQRkRFGREVGREUA AAAUFFVFUFQUGhVBUaaBUaawVvNRW81GobxGnTNZah0xGodc1G4dc1lqHTEah0xG odMZabxGnTEaaxFbRWhVRWgUAVUAEAERQEQRBEUQRlURUZEZVGVZZEZVGVRkZZVG dVGFRnVZZEmWFS2VS2VS2RLZVLQS2RLZUtBLRS0C0CwLWi2BYFgtiFqAKtBagUVU ALUW1FWoLQUVagtFUFRVFUVQVFUVQVFUFFVBRVABQVFAAUAAFABQEVQAUUFAUFQA UAVQAUFRQAFFAEFAC1FAUAAAAAAFAAAAABQEAAAAAAAAEAAAUAAQAEAAAEQEAABA QAQUQEAERRABEBABEUQRABEUQQBAQRFEERQBkEEFRAQEEQRFEEZVEEZVEBBGVEEZ VEEZUQRlUQRlUQEVGREUQRlUQGRBQEABVBUFFUUQUGhVBRWkVRWkVrEabxFhvEah 0xGodMRqHXEbh0xlqHXGW4dMRp1xGobxlpvEVvEVsaaRWkFFUFFVABABEUBEERUQ EGWVEVllUZEllUZVllUYVJZGWdVGVSWFZllUZVlgRlUYVGRGVZtAZVEVLZEtAtAt AsC1C0FsFtQsC1FsRbULBbVCwLUVUUBqoFFaFVAFWg0iqKotqgoqi2qCiqgoqgqK oKCigCCigKAACgoAKKqAKooCgAqIC2oWBahYLaoWAAqgCooCgCiCgACgKAAACgAA AIAoAAAAAAAAAAAAHwAggCKAAAiAgAAIACACIoAgiAKIAIgIIAiogIAIiiCAIIii ACMqAMgggIiiAgiAiogjKogiKMiIqICCMqiCMqIIioyCCMqiQEiozASCJFRICRUI CQFgUQKICwWliLSwFABqCiCiqK0itCwuIsN4jUN4jTeIsOuI06YjcOuMtQ6Yy1Dr iNw6Yit4jUOmI03iK0itorSKoqgCtIAIAIigIgiKiAyMooissqjIksqyyqM6qMKy zqoxqss6JLKssNMsaIyqMqlsKzbKpbIzbKpaBbKpbIloqWgWBaC2BYLYhahYLahZ ULUWwLUW1RbAtRbVFtQsRbUW1C1RWhVRVBRVRVBoVUW1BUVRVQUVRVQUABFVRQAs QuPKhqAhqFWGipDQsLVC1FuQLUAFBRVQBQVQEFFUAFARQFAFVAAAFAUAAFAABQEA UAAAAAAAAAAAABAABAEAAAUBEBAAAQAEAERQBBEAUQQBAQQBFRAQARFEEAQRFEBB AEUQEEQQUQEBBEERRkRFRICKiQRICRUZgJBKSKiQKZiokESAkVGYJRFKZgiQRIok ESARRIBAogLAoFWILAUAVUFVRBoVUVQUVvEahvEabxFh0xGodMRuHXGWodMRqHTG WodMRp0xGm8RpvEVtFaRWhWkVQBWkAAEEQBUQRFRAQZZURWWVRkRlWWVRnVRhWWd VGNVlgZlnVRhplnVRjVZZEYVlFZYVGdVGREVGVS2QQS0CxSwLEWwLULBbELWiqLZ UVQsFVBRVC1qKtFVBRVRbUW1QtRbUW2kW1FtUW1BpFtQ1HkpDfHytIb4r0ReyDo5 Oz9l6OTslekhuSkNSUhcrQufKqCKoKCiiKoKiqAKqACiqAKqAKqKoAKKAoACKoAK KIAAKAKAoAKAAigAAKAAAAAAAAAAAACAACAIAAAoCICAAAgAIAIigCCIAogn4AQE EARUQAEAVEBBAEERRAAQRFAEEQBRBEgIIgiKICCIokEZgiRRIIgIqJBGVEEQRlRB EVEERSkEQEVEACkClAABRQFBQBVQBVBUVoVUVcRW8Gm8RXTEah0xGnTGW4dcRp0x lqHXEabxGnTEabxFbRWkVoVUVoAVpAABBEAVEERUQGRlFEVllUZEllWWVRlUY1WW dVGNVljRmWVRlpljVRjVZZElhWGWkZVGdGWVRkRlURRkRAFQAFAEAW1CwW1QsFtQ tULUasQtRbUW1QtRdR5KQ3x8r0kOyF6OV7IOjk7P2Xo5OyfC9HK75L0Q1K9EXUrU hc+VFUFRVFaFVFaRVBUVRRBQaFEVQBWkUBRVQUAVRRBRRBRQFFVAABRQFRQFAFVA ABQAAUUBQAEFAFAAAUAAAAAAAAAAAAEAAAEQABQAEQEAABAAQARFAEAERQREUAQE EAQBRBEAERQBBAEBABEUQQUQEEAQEVEERRBGQQRFRAQRFEEZBFRBEUZERUQRFRAZ ERRBEUQQBAAAAUVQAUFFEFFVBRVFVBRptFaRXTEah0xG4dMRqHXGWodMRuHTGWod MRXTEahvEabRW0VRWkFFUVpAABBEAVEERUQEEZVEVllUZEZVllUY1UZVljVRnVZY 0ZllUYaZZ1WWNVGBJZVhlUZaRkZYVGREVGVRBEUAQAUEBQTXHyUib4eYOsWanbw8 neHOnbxO8OTtjwdnJ2/sdnK9knZydnI6OTXLyvWkW58rdQBVFaRVRWhqlRVRWhVR WkVRWkFFaRVFUVUVpFVFUFFEFFUVUUBUVQBVQUVUAVQBVQAUaVAVFRQVQAVFAUAV QEFABQAAUUBQAEFAFAAAUAAAAAAAAAAAAEAAAEAQABQEQAEABAAQAQUQAEEAAQBR BCAkAglJAogUQKlIpUpBKIFSkCiCVKQKItMpCpSQpRAykVMpAykKZIVMpCmUi1Mp yUynJUynK0ynJUzKclTKcrTMpyVMyzyUzKcrUqU50pmWedKmZTnVqVKc6JUpzq0z LPOlTMpzq1Mz4TnSmZ8M86tZzKc6UqfCTVSp8MwqVKRSkEQEVEFAUAFRVBQAUAUB QVFAUVUVvEabxFbwah0xlqHXEbh0xlqHTEah1xGodMZabxGobxGm0VtBoaaQUVRW kAAEEQBUQRBEUQRlURWWVRkSWVZZVGNVGVZY1UZ1WWNGZZaRlWWNVljVRgSWVYZV GWkZGOU8Y+80xurGJ9f0Y+/qcf5hz355+2s+Guc+79vH98Mb9vx/bfn8v0xPvfb+ b/6Y9vivl8mZ996X4iZY98a8dZn30fjh/ln3XxZ+s5fjgnsvkn1Xqz+IT1088O/1 vKemrxh2+rP9x3pzhrn+qf5OtJhSC0qNRCo1EKi00LSotKjSoqitIq4iqK0iqKqK 0iqiqK0K0iqiqK0iqiqDQqoqo0oKiqCoqiiKoqgIqgoogoqgIqgoogoKAKoqoAKK AoqogKoAqoAKACgAooCgICioAoACgAAAAAAAAAAAAAAAAAAAkAgUBQAIgCgIgAIA ACCWBaULKqWlCyhaULKGkqxLSkNFImkpDSUhoqw0nRE0nRDR0Q0nRE2nSw2dENJ0 RNJ0Q0nRE0dLDSdETSdENp2Q2dkTadrDadkNp2RNp2sTadkNp2RNp2sNp2RNp2Q2 nZE2naw3CdkNwnZE3Cd4sNwneETcJ3hDcJ3hDUJ3ixN8U7whqPJ3hE1HlO8Iajyn eLDUeU6whqPJ0RLToLKBRUEUPgCo8H9AqPBMFzx8EwTPFecKY4nOFMQc4UxBxhTE HBTEeTgpj9zgq4Xgpg4KZXgq5leNSrmW8+OlXMt58dSrUt5iNREumYjbpjLUOuI0 6YjUOmMtOmI1DeIreIrYrSK0iqKorSAACCIAqIIiogIIyqIrLKoyJLKssqjGqjKs sarE+pwj78oj/tz355+1muXL3Xt4+/q8f5ct+74fvG/P5fpy5e/9pH+p/iXHf5X1 /tvPp+X6cuX9T9rH6p/4j/7ct/mfD/befx/k5cv6t6P44cp/5py3+b8f1refxtcu X9X8el/n/wDHLf5v+m/xv9uXL+ret+OHH/Llv8z5frG/xsc+X9S91P5iP+nPf5fz az6Pi5z773c/6n8RDnv8j5/tvy+P6c59x7ifv6nL+XPft+X71rj4/pmeXOfvymf+ ZY61ZjOWVq5QKBqhFyI1kFoRqIaRaRGqaRqhFpoWlRVRpUVRVRWkVQVFaFaRVFVG lQaGlRVRWhVQUVpFVFUVUWFFVFaRVFVFUVUVQVFAUVRVQBVQUBFUVQAVFUFBRQFR VAFUFBUUBQABVQUAFBQABVAAQUUBQBVAAiBAAICgB8AAAAAAAIIKWBaBYIAAiiAA CICCCloIAgWBaCWKWgWCWgWBaKWggFoJaAigIgIACKIIgiKAiAgIqICCAIqICAlV EEQEVGREBFRkQBlUtAtFLQRkLQRFS2QSiWioyCURFEoiVRKBQspCyi3K9JDUr1pF 1Ple9Ia5eV71Iu+S+mkOzkvppDcr6akXslfTTleyV9NOTsnwvqkXf7L6kXsX1SL2 NepDcNeiRdw16YRrUN59mJF1DpnzxI3HKG8+WJGomHXNZaiXTNRqHTEadMZadMFb xFbxGm8RWkVoVUGhVFaQAAQRAFRBEVnXHyzvywjM+r6f6oc/T4/trnWJ9x6Ufljf u+K8axPu/T/dz3+T8W/PXOfe8f0y5b/Lz9NeTny9/wCOH+XLf5n+m8+ly5e/9X8R Djv8z5f6az6ccuXvvceYj/py3+X83TPp+Lly937if75cd/kfZ+2s+v4uPL1/Wn/U 5fzLjv2/P966Z8M/Tjy5cp+8247ut5jnLnrbMs6rEsKlMqlMqmUVMslMyhTCQq4l IUwkKYSFXKFMojUQC0iLSi0IsQqLEKLTSKqLQK0ixCo1SiqitAqKorSKoqorSKoq oqo0oNIqoqitItCNKK0gqKoqoqiqitCqiqCiqgooCoqiqgoqoKAKoKKqCgooCoqg oKKAIqgoKKIKACgopAWAsQIoqKACqICgiigAAACAAAACggAAAEAEogUkUogUQCAk CiCUkAgUQKSKUQSkgUQKSCUkKURalJBMpFpkhUyhUoWlIJSKgCKiAgEERQgnykC5 SCXKKXKQialIQ1KLDUhE0yQ2ENwyRNwhDUIsNQENQyQuALQEEqSBU+E50qVPhIqV KQGYqMqiAgiKjIiCrBEgMxUSCMxRIIzBGYokEZiiQRARUQALAtAtRbAVFAUFFUFR VRWhWkVoWmojWW+UXLefWlWODpn1pWsS3n1alajhydM+vUrWeTefDUrVS6Zmo1Fu mMtRLpmo1EuuajVt5qNW6ZqK3morVRWkVQaGmkRKJaVU1LHRGZ5cmd+WtRmeXLyx vy1YxPKfLnu61HOXPWmJc9aYlhpiXPWmJc9ac5Y1WJc9bc5Y1rGJc9aZlhWJ4yzz q1nEs8atTrlnz1ek6k816TqZ816TrhnjDoxCTFqZZhSmSpTCplkMsqUyJTItIGWQ oCgWlRVFEVQaRVGhFaRVFVBoWlRVFVFhUVoVUVRVRVRVFaRVRaUWlRpUVQaRVFVF VFUVpFUVpFUVUGhVAQUVQaFEFgqgsRVBQUVUFgpEFgqwVYFLEKWFWiFKWILBaWBR AWCrAWARBYKQFAgEBRSAqBAAAAUCAQAAUBQAAAAAAAASAQACCAAoIAAAgAAEESKE AgUQSkgUnIUchScrUynBTKcFTKcFMpwtTDPBUwnK1MJFqYSFTEpFqZlItSmRKFqU glIqUgiKiKiAyqIIioyIiogIqWgXKENT5ZIdnPyXTle7n5PT5Jxh9RyPb5Hmv1M+ F99TzX6nj4PfP0ea/Uemvt8U41e30vK+nwOdXXpz+YX/APP+kmrXGfC8YhiE8ymI TzWpiPCeZUxHhnyWp1wz5HSdcM+S9J1wnkvSdcM+J0nWz4r0nUz4r0nUz4nSdbO/ SvSdcs+J0nXLPlq9J1yz5avSdfJPLSpjl4Z89Wpnl4Z40pUs8aqfKc6HygWf1C5S 6GpOtIale9Iu5X0IvY16pF7F9U5a7Ib9sTleyG8+3DlqPU4t59uM8txz4uufZiRq OUO3x+eMxuOUO2fLGY6RMO/x1luJdvjrLcO2MtQ64jVQ6TGVzDXGFXENeeJVxC+Z TC+aVcyvBVqWuQ+ViKoqitoyyqMiMtMSwrMsarMsNOcsNMSxqsSxGmZhjcVmeMsb 8WqxPBnhazhnhqszwhnjFrOYZ5Ws0yrNMaqUxqszDGqzTGtJTnqpTGjOWNVKZVMs CUypTAUyqIFMqiAyICqAKoKiiNNAqNCK0CoqiqitCiK0iwoqoqoqi0qKqNU0LSoq otKK0iqK0gorSKsRWoKsRWoKsRWoCxFagUsRalrkWpXkXK8oZXkq01yi0vJSl5Kt Lyi0vIUvItLyhSwWliFLBaWBSwKIi0sClgqwCAsBYgQVYBAICikBUAAFAFAICgAA CqIIAoAAAAAAAAAAAAAAICgAAgKCIoQBAUIAAIgAAAAAIAIKAIABApIJSc4JlOMW mWfMqZZ81qYZ89KmGeFqYZ5Ws4Z5KmE5WphOVqYZ5WphOSs4Z5WphOVrM8GYtTCR amJZi1MShWcyytTKKlMqzSCMqiKMiMqiKjIlopbIdnOPzJ1uJy19R6sf3Ne3z/ac Y19X6v7NflfNPLGo97y/PFr8zf0ni1HveP54t/mZ+k8Wo956P7w3n8r62fLWo9f0 J/ubz7vr3+6cfJuOXpz9uUN5zv8AfGZq0vCUynmVMJ5rTCeZUwnmtMM+RU608jpM M+S1MM+K1MM+RUwz5LUynktMp5FTDPkVMfszv0rWeuPDHji9HXCeOHSdUJ4YvR1s +B0dSeB0nWeB0dcnjpVxJ5aVcy156lWpbz4ajUW6Zmo3FuuMtxMu3x3UdI5S7/H5 axG458nb4/PWY6Rz5O/x+zWY3HOXbPs1mNRzl1z7NZjUc3TPsSNabz5pF030i21R bWoKKAoiKyyMsNMyyrMsarMsxpiWYrMwzFZZVmWNaZY1WJY1WZhjWmZhjVZmGNaZ phWac9VKY1WaY1WaY1UpjVSmNVmmNCmNVKZVmmVRkGBEVGVRBEUQVQoRVFVFBWkF GlRVRVFpUKVGqUVUVRaaRVRYVFUVpGlQaFWIrUFazEWmoi1LXJVzLWfFKuZa4StZ a4SmWuCtZa4SrlrgplrhK1TXKVaa5FpeUKa5RaWC0vItLyhS8hS8i0sQpYLSwWli FLBaWBSwKIi0sFpYBAWAsBYgQUgKFKKIAEBQBQFAAABUUAAAAABQAAAAAAABQAAA AAAAAAAAAAAQAAABAAAABABQBAAAABAEAAAAEQBQABAogmYZ4wqZZ88WmWfIrOGf JamGN+tazhnhamGeFqYZ34FZwzytTDPK1Ms8rWcs8rUyzyVMs8rWcsctVmeDPK1n LMWs4Zi1MMxazhFqYZWs5llalSytZpBKZVEVGVRBGVGQtBY58o+0yufLcTlqPcet H25y6Z/I+ef3Tzx0j3vrx+bdM/m/Yz4/FuP6hz/PGJds/wCQ3++Yx4Y6R7/h+eDp n8/4/wB8Z8HSPeehPmHXP5n1az5fJuPX9Cftzh2z7vr3++M8fJuJ4z9pdcm/3Zap eEMpwVMnBTEJ5lTEJ5YtOuGfE6Z6k8F6OpjfoXpnqlnw06TrlnyXpMJ5FMJ5lMJ5 LTB5FMJ5JVyvmVcteZSOLXmlay3wlaji3nwStRxbz4JWo4umfBmtRxdc+KVuIdM+ KNU3mItOmYy03iNNg0jTSCiqK0jKKjIzLKssqkstMsqxLGqzLOqzLGtMyxqssarM sa0zMOeqzTGqzTCpTCsUxqpTGqlOas0xqpTOqzTGqksKjOqywqMqyyIyoyqIIiiC IKC0qFKLSosQCqi00iqLSoqi0qK1EWlFpYjVNRGsy1ylXMtcJVxLXCVcteZWsNcJ Vw3nwSrhrhK1lrhKuW8+CVaa5FprlFprlFprkWl5Raa5KuWuUq5Xkq01yi01yhS8 i01yLSxCl5FpYLSxClgtLEKWC0QKWIqwFgEBYKsQICwUgKACooACgCgKAAACooAA AAACigAgKAAAAAAAoAAAAAAAAAAAAAAAAAIAAAAAAAAAIAAAAAigAIAAAgAAAAAi AAAAgAUCAUkVMwzxhTDPni1MM+RWetjfqWsz6bG/WtTDG/BazPBnhazhjfgtSeDO /BazPBjhazlnhamGOFrOGeFqYY34LWcM8LWcM8NVnDHJUngzy1WcM8rWZ4MRamGY tZwkWphmFZwytTMotTMsrUpFRkAAWyha0W16Rvj63qR9uUw6593yz/xus78MdY93 68f3fy7fH+Z9n7Y8vi6R771fzES7/H/kPn/pjfpx04+/88P4dvj/AMj+/iz4OnH3 voT97h3+P8769/eMeOuvH3Hocvtzdvj/ACPr3+7G/DXSJ4z9piXbNzf/AAytNcoU chRyGYTjCnXCeWL0nUnhh0nSz+OvSdUp4adJ1yz5avSYPMq5Xgq5XlKuWuUrVN8o 1EN58UapvMRYhrMRqm4itZiK2K0iqK0iqAK0jKKjIjKsyzqsyzrTMsqzLGqzLGqy zqsyxqssNIxqs056rMwxqsyxqs0xqpMMarLDTMsaqS56Ms6rLGqjCss60jIjKoyr LMCkVGQpIqUgEFILSxCgWlRYhUay1ylXMtclajhLXDNWODXCVrrb4KuGs+tK1HBr Pglaw1nwZq5b5StZa5Fy1wi5a5Srlrgq5a4SrTXCVctcCxDXKLTXCVaa5Fy1yi5X kWmuUq01ylWl5FprlCl5FpqC0sQpYLSxFpYLSxClgtLAIi0sClgEFWBSxAgKKAoC LQCgAoAoCgIAAoCgAAAoAoAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AgAgAAAAAAAAAACAKAgAACAAAAggKCAAAIAAJSQMwzxi1nEM+WFTrY36V6Z63Pfp 1rpmfTc9+temcMb9a1nDO/WtTrY3616Zwzv1r0z1sb9bVZngxv1rUwxwtZwzvwWp hjhazhngrOGN+DVTDPC1nDHBUwzvwWphjfgtZwzytTDPK1nCcrUwkWplIVMpFpUk EqQUC1FtajUS3nyRqJa6RYlvPkjpx9TnH25S7fH7vln/AI3Wd+OOse69aP7rd/j/ AC/sz+7HnjpHvef54xLv8f53y/WMeOOke94/ni7/AB/nZ/fGPF0j3Poz+ad/j/L+ vWfPXSPU9Oftyds+34b/AHY51uKdMRWoirAzC8oYhPPFp1wnjh0nUeJ0dcnkVcnB SlgtNRFaiKorSKorSKoAKKqIissiM6rLOqzLOqjKsyxqssa0yzqsyxqpLGqyxqo5 6rMsarLCsyxqsyxqssa0zLGqjGqzLGqjKssqjKpTAlMqiKjIiKlJAzPg5KuJONKd cnCdNda+adL1w15nTXXDXmz0uGuCtZa4ZrWWuEq5a4KuWuErUcWuUqxxa4SrlrhK uW8+BVy1wlay1wlMtcFay1wlXLXJVy1ylXK8pVy1ylXLXJVy1ylWl5FprlCl5Fpr lFpYFLEWlgtLEKWC0sFpYhSwWlQpYKQFBYKRBYAKoAKKIKAACgCgKAgCgKAAACgC gAAAAAAKAAAAAAAAAAAAAAACgAAAAAAAAAAgKAACAAAAAAAAAAAAACAAAAAIAAAA AAACKAAAAAgAACAAAAAggKCAIAIBTPOCZhnfqxazPpsb9K9Mz6cue/QvTM+mxv1N dM4c9+tak8GPNaz1s+a1OtjzWs4Y816TrZ81rOGPNamGd+srPWx5rU62N+temetn frXpOtjzWs9bO/WtTrZ81rPWz5rUngzwtZwzwtSeKcrUynK1MnJSjkMkKsQsFVFa RpuottZqNOmajUN5qNN5qNRPL8S6ZusuvH1fUj8u/wAfu+Wf3Y3446R7jn+Xf4/y vkzv146R7j9no+P8pjh0j1uLtn34zw3HqcPLpn2fFmNxMOmbjKtCtIUQMwnJUych k5FogKAKoKAiqIioyMoqMarMs6rMsaqM6rMs6rMsarLCowrLGqjnqsyzqssNMyxq ssKyxqpLGqyzqowqMqzUswTMpytMSnBTCeZTrg4KYjwnBTEeDgpg5KuF5KYOSrk4 SmV4K1lrhKuWuUq5a4KuWuErWV4SrlrhKuWuErWW+EplrgrWWuEq5XlKuWuSrlrl KuWuUq5XkWmuUWmuSlLyi0sKtNRClgtNQWliCwWiItLApYKsQpYLSwKWItEClgqo UQWlBQBRBQAUAAFFAUAAAVUAAAFAFAAAAAUAAAAAAAAAAAAFAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAABAAAAAAAAAAABAAAAAEAAAAAAAABFAAAAQFABEAAFEQVAEA AAEpnkTEM79eLU62PFemetjfpXpnrc9+pamGPNazPBnzWphjfqWphjfqWszwY36l qYZ36lrM8GN+sqYY36lrM8GfNak+mx5rWcM8NVieDHC1meDPC1MM8LUyzwtTByUy nJTJyUyclXK8lMryUpYlapqIsQ0NQ3iNQ3jLcOmI1DrjLTpiNRDpiNfLpiNRbeay 3HKXXPmzG45z5dc+zWY3HN0z7EjW4bz5pFuG+kaVABQQQgAoCiIIyqIrLCoyrLKo yrMsaMsa0jGqywrMs6rLnqpLOqywrNMRUqWYqZZ5KmWeVqYTkpmE5WpSchSclTLP K0yclMpyVMnJTKclMnJVyvJTJwUycJVyvBVyvBVy1ylXLXCVrLXCUyufAq5a4StZ a5Srlrkq5a5SrleQprlFpeUWmuRcrEq5ahVpYhSwWmoUpYi0sFpYgsFpYKRBYFLC rSwKIi0sClFVAFpYAgooCgAoEBQIKoAoAIooAgoAAoAAACgAAAAAAAAAAAoAAAAA AAAAAACAAAAHwAoAAAAAAAAIAAAAAoAAAAAAAAAAAAAAAAAAAgAAAAAAAAgAAAAA CAAAAAACAoAIgAAAACiCAAAAIIBSQMwzxi1MM+RWcMb9S1MOe/WtZwxv1rUwz5rW Z4Mb9a1MMea1meDO/WtZngx5rWZ4Mb9a1meDG/W1WcMea1MM+a1MM8FTCcLUwnBU ynC1cnJTJyVcrylMryVaOUq01nxFiG8xGqbzEadMRqG8Zah0xGm8RqHTEahvEWm8 RptFaRptFaxGraqLbVBaiqAAAIgjKoioyMsKyzqoyqMKyzqoxqs0zFSYZis0zFSm IFJFSmYJTMWpTMKmUi1MpAyzytTKchk5KmU5KZTlaZOSmTlKZOSrk5KZXkpk5KuV 5KZXlKuV5KuV5SrleSrlrlKuWuSrlYlKa5RaXkq0sRaagtLEKahVpYFLEWlgqwFi LSwKWItLAogtLApUWlChFpYFEFUAFARaUFABQAUUBQAAUUABUAAAAAAVQAAAAAAA AAUAAAAAAABAAUEAAAAAAAAUABQAAAAAAAAAAAAAAABAUABBAVQQAAQFABAUEAFA AAAAAAAAAAEBQQAAAAAAAQABAAUEAAAAAAAEoAAABAFAAAAEAEApIJmGeMWphjyK mGd+pazPFz361rOGOFqYZ361rOGN+C1nDHmtTDPmtZwz5rUwz5rUwz5rUwnmUynm VMJwtMJwUycJVyvIZXkrWV5SlNZ8RYhvlGqazEaiHTMRpvMRW8RpvEVpGm8RWkVo VpFUVUVoAFRQFEQRFRlUZEZVllUpkSmVRlUplWaZEpmKlJFSmIFJFSmYFMwSkipS QMkKmU5WmU5DKclTJytMnKUyclMnJTJyLk5KZXkpRyLS8ouTkpleQprlFpeRaa5R aXkKWItLBaWC0sQpYLTUQogtLBaWIUsClgtLAIFKiqFCLShQKoEBQIKsQAUAFgKA KoCCgCiggoAAAAKAAAKAAAAAAAoAAAAAAAACKCAAqgAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAggAAAAAAAAAAAAAoIAAACgAAgAKAAAIgKAAgKCAoAIk BQQAAAAAAEUEAQUAAAAQSoTnBMwxxi1meDO/UtTDnv1rWMMb9a1Ms8LUyzytTMJy UwnBUwnC0yzwVMpwUycLTKcFMrwUo5KUvKNZa5SrTXItLEWmoLTcRWkaaRWhWkVp FUGhVRVBQEUBREBFRBGVRkZRUZUZEZVKSKlMwSmYJSRUpIpTMEpIJSRSkgUkKlJA o5CkgZIGSLTJyUyRKZIUo5KUclWjkMrAyvIuSIUsFpYFLEWlgUsFpYFLEKWC0sCl iKQVYCxBRaIFLApRaEFFAAUBFUAFAgKKoCACgoAAoCgAAoAAAoAAACgAAAIAAAAA AAAAAqgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAA AAAAAAAAAAAgKAAAACAAAoIAAAAAAAAAgKoIIAAoCAAAAAAIAAAAIABSQKIJSRUz DPGCYZ81qT6bG/UtZwx5rUyzytSkgUQMnIZThaZOClHIUclWl5QpYLSxClgtNQWl iKorSCitIqiqgoqgoogAoAiKjIiKjIiKMiIqUgjIUkVKSCUzFKSCUkCiCUkUpIFJ AoglJBaIFECiBRAogUQKILREKIJSxSiC0RClgUsFogtLEFgLAWAopEFFUKABVQUU ABRQFiACgoAoCoAKAKAoAKAKCKKAAAAIAAKAAKCAoAAAAAAAACgAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAA AAAAAAgAoAAAAAIACgAAgKAAAAAAiAAAAAAAAAAAAgUCUBSBmE5WplngrM8GPNam GeFqZlIUpFPhUWlgUchSwWiAsQIKsBYKqCiqKqCiqACooACgCICKjIiKiAgjKogE BIqUkCkglJFKSCUkCiBRApIFJBKIFECiKUkAgEAgtECiIEClgEClgEBYKQFABUWl gUBSiiCgCqACikQUAFAAFUAFQABVABQBQARRREBQFAAFAAAAAAAAAAAAUAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAEBQAQQAAAAAAAAAAAAAAAAAAAAAAABFBAUEBQAAAAAAEAQAAKI JlngqYY81qZZ4Wnyf1BaCoqgsCiCrAAVFUAVQAVFAAAUARARUQEERRBEAERRBAKQ KQKSKhASABSQASkAgEAgECiKEAgAAAEQBVABYAKBSoKLRAUAFRQFAFUAAFQAAUUB QAAUAURAVRAVQAAFABAAFAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQFA AABAAAEABQAQAAAAAAAAAAAAAAAAAAAAAAEBQQABRAVEoilJyVMs8FSmeVPkFtqi qgoqgAAoCKAAAoAAIIAiogIAIiogIACACIogAJBCAgKCAACAEVUAEAAAUEgpAVAU VFpYFERVAABRQAFAAFEFEAUUBQAUBAUEFFBFFAAAAAAAAAABVAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAUAAAAAAEEA+AAAAUAEAAAAAAAAAAAAAA AAAAAAAAAAIFJyJScqnykFtaFrRVRQAAFAAAABABEUAQRAAQQVEABAAQAEVAAAEA EAAAQUEIBFFQIBBaApUUAAABRQAFAiCgAooACgRBVAAABFUAFAAAAAAFAUQFBAEA BRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAEBQAQQFAAABAAAAAUEAAAAAAAAAAAogiRQFsqKoKAAAAACCAIoAggCACIACKA gCAAAgAgogAAACAALQFAAoICgKAgKKgAQVYACgAAoAAKgAKqgIAAKAAAAKAAAoAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAgKAgAAAgKoiAAAoAIKCEAAAoqgAAgAiAKAIACCAIIA AKIgAKgCABQACAACgAACACqACAKQFABQAAUAAFFABBBRQAAFAFAAAAUAAQFAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABED5AsCwVQAAAAAAAQARAFAEEAAQAAEAE AAAAQAAEAFABAFBABVAAAQFFAABQABVAAABQVAAAAFAAAAUAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAASkgRFGYKoAAAAAAIAAIgACiICgIAgAAICggA AAAAAIACgAgKAACCqICgiigKICgCCgAooAAAAAAACgAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAiAAAKIAgKIAAIIACggAAKIgKAq iIACggAKAAKoAAKAgCqCAoAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAACAAAgAAgACKAAAIAiAoICggAoACggKAAAAoAAAC CgAAoAAoAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAgAAAAIIAAKIAgKACCAAKKACAoAAAAAKCAAoACKAoAAAAAKAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA CAAAAAgAAAgCKAAAAAAAgKAIKoAAAAAIAoACgAAAoAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAACAAACICq UIAAAACgAAAAAAigAAKAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAICggAAAAAgAAoAAAAAIAoACg AAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAIAAAAAAAACACKoAgAACAoIAqggKAAAACgAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAgAAAAAAAgAoAgCAAKoAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAACAAA AAoAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgKCAAAAAAAAAAAAAAAAoAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAIAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AgAAAAAKCAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICgAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAgAgAKCKAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIAoAAAg gAANNIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiAKAIIAAgAgANtoAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAiAKIIAggCKgAAOjoyAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAiAKiAAggIigACDo6sgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIiiC AIICIoAgA6OrIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIAqIACCCogAA6OjIA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIoggCCAiKAA6OjIAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAACIAqIACCCogA6OjIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAACIoggCCAgog6OjIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIAqIACC Agro2yAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiKIIAgAgrbbIAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAACIAqIACCA22gAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAACAIoggACDTaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIgCo gAINNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiAKIIADTSAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAIigIgA//2Q== ------------AwZAEu8L0Fx8UXBllPLKFH Content-Disposition: inline; filename=HX010151526.css Content-Type: text/css; name=HX010151526.css Content-Location: http://officeimg.vo.msecnd.net/en-us/files/156/550/HX010151526.css?b=5567%2E4000 Content-Transfer-Encoding: 8bit /* Copyright (c) Microsoft Corporation. All rights reserved. */ /* Content CSS for DevDocs */ @import url("../../219/801/AF101828963.css"); /* Content CSS for PMG */ @import url("../../620/078/AF102253325.css"); /* Content CSS for INTL */ @import url("../../233/757/AF102640712.css"); /* Master Content CSS for Office.com */ /* Global Styles for Grid System */ .cntGSContainer24 { margin-left: auto; margin-right: auto; width: 940px; } .cntGSGrid1, .cntGSGrid2, .cntGSGrid3, .cntGSGrid4, .cntGSGrid5, .cntGSGrid6, .cntGSGrid7, .cntGSGrid8, .cntGSGrid9, .cntGSGrid10, .cntGSGrid11, .cntGSGrid12, .cntGSGrid13, .cntGSGrid14, .cntGSGrid15, .cntGSGrid16, .cntGSGrid17, .cntGSGrid18, .cntGSGrid19, .cntGSGrid20, .cntGSGrid21, .cntGSGrid22, .cntGSGrid23, .cntGSGrid24 { display: inline; float: left; position: relative; margin-left: 10px; margin-right: 10px; } .cntGSZero { margin: 0; padding: 0; border: 0; } .cntGSFirst { margin-left: 0; } .cntGSLast { margin-right: 0; } .cntGSContainer24 .cntGSGrid1 { width: 20px; } .cntGSContainer24 .cntGSGrid2 { width: 60px; } .cntGSContainer24 .cntGSGrid3 { width: 100px; } .cntGSContainer24 .cntGSGrid4 { width: 140px; } .cntGSContainer24 .cntGSGrid5 { width: 180px; } .cntGSContainer24 .cntGSGrid6 { width: 220px; } .cntGSContainer24 .cntGSGrid7 { width: 260px; } .cntGSContainer24 .cntGSGrid8 { width: 300px; } .cntGSContainer24 .cntGSGrid9 { width: 340px; } .cntGSContainer24 .cntGSGrid10 { width: 380px; } .cntGSContainer24 .cntGSGrid11 { width: 420px; } .cntGSContainer24 .cntGSGrid12 { width: 460px; } .cntGSContainer24 .cntGSGrid13 { width: 500px; } .cntGSContainer24 .cntGSGrid14 { width: 540px; } .cntGSContainer24 .cntGSGrid15 { width: 580px; } .cntGSContainer24 .cntGSGrid16 { width: 620px; } .cntGSContainer24 .cntGSGrid17 { width: 660px; } .cntGSContainer24 .cntGSGrid18 { width: 700px; } .cntGSContainer24 .cntGSGrid19 { width: 740px; } .cntGSContainer24 .cntGSGrid20 { width: 780px; } .cntGSContainer24 .cntGSGrid21 { width: 820px; } .cntGSContainer24 .cntGSGrid22 { width: 860px; } .cntGSContainer24 .cntGSGrid23 { width: 900px; } .cntGSContainer24 .cntGSGrid24 { width: 940px; margin-left: 0px; margin-right: 0px; } .cntGSContainer24 .cntGSPrefix1 { padding-left: 40px; } .cntGSContainer24 .cntGSPrefix2 { padding-left: 80px; } .cntGSContainer24 .cntGSPrefix3 { padding-left: 120px; } .cntGSContainer24 .cntGSPrefix4 { padding-left: 160px; } .cntGSContainer24 .cntGSPrefix5 { padding-left: 200px; } .cntGSContainer24 .cntGSPrefix6 { padding-left: 240px; } .cntGSContainer24 .cntGSPrefix7 { padding-left: 280px; } .cntGSContainer24 .cntGSPrefix8 { padding-left: 320px; } .cntGSContainer24 .cntGSPrefix9 { padding-left: 360px; } .cntGSContainer24 .cntGSPrefix10 { padding-left: 400px; } .cntGSContainer24 .cntGSPrefix11 { padding-left: 440px; } .cntGSContainer24 .cntGSPrefix12 { padding-left: 480px; } .cntGSContainer24 .cntGSPrefix13 { padding-left: 520px; } .cntGSContainer24 .cntGSPrefix14 { padding-left: 560px; } .cntGSContainer24 .cntGSPrefix15 { padding-left: 600px; } .cntGSContainer24 .cntGSPrefix16 { padding-left: 640px; } .cntGSContainer24 .cntGSPrefix17 { padding-left: 680px; } .cntGSContainer24 .cntGSPrefix18 { padding-left: 720px; } .cntGSContainer24 .cntGSPrefix19 { padding-left: 760px; } .cntGSContainer24 .cntGSPrefix20 { padding-left: 800px; } .cntGSContainer24 .cntGSPrefix21 { padding-left: 840px; } .cntGSContainer24 .cntGSPrefix22 { padding-left: 880px; } .cntGSContainer24 .cntGSPrefix23 { padding-left: 920px; } .cntGSContainer24 .cntGSSuffix1 { padding-right: 40px; } .cntGSContainer24 .cntGSSuffix2 { padding-right: 80px; } .cntGSContainer24 .cntGSSuffix3 { padding-right: 120px; } .cntGSContainer24 .cntGSSuffix4 { padding-right: 160px; } .cntGSContainer24 .cntGSSuffix5 { padding-right: 200px; } .cntGSContainer24 .cntGSSuffix6 { padding-right: 240px; } .cntGSContainer24 .cntGSSuffix7 { padding-right: 280px; } .cntGSContainer24 .cntGSSuffix8 { padding-right: 320px; } .cntGSContainer24 .cntGSSuffix9 { padding-right: 360px; } .cntGSContainer24 .cntGSSuffix10 { padding-right: 400px; } .cntGSContainer24 .cntGSSuffix11 { padding-right: 440px; } .cntGSContainer24 .cntGSSuffix12 { padding-right: 480px; } .cntGSContainer24 .cntGSSuffix13 { padding-right: 520px; } .cntGSContainer24 .cntGSSuffix14 { padding-right: 560px; } .cntGSContainer24 .cntGSSuffix15 { padding-right: 600px; } .cntGSContainer24 .cntGSSuffix16 { padding-right: 640px; } .cntGSContainer24 .cntGSSuffix17 { padding-right: 680px; } .cntGSContainer24 .cntGSSuffix18 { padding-right: 720px; } .cntGSContainer24 .cntGSSuffix19 { padding-right: 760px; } .cntGSContainer24 .cntGSSuffix20 { padding-right: 800px; } .cntGSContainer24 .cntGSSuffix21 { padding-right: 840px; } .cntGSContainer24 .cntGSSuffix22 { padding-right: 880px; } .cntGSContainer24 .cntGSSuffix23 { padding-right: 920px; } .cntGSContainer24 .cntGSRight1 { left: 40px; } .cntGSContainer24 .cntGSRight2 { left: 80px; } .cntGSContainer24 .cntGSRight3 { left: 120px; } .cntGSContainer24 .cntGSRight4 { left: 160px; } .cntGSContainer24 .cntGSRight5 { left: 200px; } .cntGSContainer24 .cntGSRight6 { left: 240px; } .cntGSContainer24 .cntGSRight7 { left: 280px; } .cntGSContainer24 .cntGSRight8 { left: 320px; } .cntGSContainer24 .cntGSRight9 { left: 360px; } .cntGSContainer24 .cntGSRight10 { left: 400px; } .cntGSContainer24 .cntGSRight11 { left: 440px; } .cntGSContainer24 .cntGSRight12 { left: 480px; } .cntGSContainer24 .cntGSRight13 { left: 520px; } .cntGSContainer24 .cntGSRight14 { left: 560px; } .cntGSContainer24 .cntGSRight15 { left: 600px; } .cntGSContainer24 .cntGSRight16 { left: 640px; } .cntGSContainer24 .cntGSRight17 { left: 680px; } .cntGSContainer24 .cntGSRight18 { left: 720px; } .cntGSContainer24 .cntGSRight19 { left: 760px; } .cntGSContainer24 .cntGSRight20 { left: 800px; } .cntGSContainer24 .cntGSRight21 { left: 840px; } .cntGSContainer24 .cntGSRight22 { left: 880px; } .cntGSContainer24 .cntGSRight23 { left: 920px; } .cntGSContainer24 .cntGSLeft1 { left: -40px; } .cntGSContainer24 .cntGSLeft2 { left: -80px; } .cntGSContainer24 .cntGSLeft3 { left: -120px; } .cntGSContainer24 .cntGSLeft4 { left: -160px; } .cntGSContainer24 .cntGSLeft5 { left: -200px; } .cntGSContainer24 .cntGSLeft6 { left: -240px; } .cntGSContainer24 .cntGSLeft7 { left: -280px; } .cntGSContainer24 .cntGSLeft8 { left: -320px; } .cntGSContainer24 .cntGSLeft9 { left: -360px; } .cntGSContainer24 .cntGSLeft10 { left: -400px; } .cntGSContainer24 .cntGSLeft11 { left: -440px; } .cntGSContainer24 .cntGSLeft12 { left: -480px; } .cntGSContainer24 .cntGSLeft13 { left: -520px; } .cntGSContainer24 .cntGSLeft14 { left: -560px; } .cntGSContainer24 .cntGSLeft15 { left: -600px; } .cntGSContainer24 .cntGSLeft16 { left: -640px; } .cntGSContainer24 .cntGSLeft17 { left: -680px; } .cntGSContainer24 .cntGSLeft18 { left: -720px; } .cntGSContainer24 .cntGSLeft19 { left: -760px; } .cntGSContainer24 .cntGSLeft20 { left: -800px; } .cntGSContainer24 .cntGSLeft21 { left: -840px; } .cntGSContainer24 .cntGSLeft22 { left: -880px; } .cntGSContainer24 .cntGSLeft23 { left: -920px; } .cntGSContainer12 { margin-left: auto; margin-right: auto; width: 900px; } .cntGSContainer12 .cntGSGrid1 { width: 55px; } .cntGSContainer12 .cntGSGrid2 { width: 130px; } .cntGSContainer12 .cntGSGrid3 { width: 205px; } .cntGSContainer12 .cntGSGrid4 { width: 280px; } .cntGSContainer12 .cntGSGrid5 { width: 355px; } .cntGSContainer12 .cntGSGrid6 { width: 430px; } .cntGSContainer12 .cntGSGrid7 { width: 505px; } .cntGSContainer12 .cntGSGrid8 { width: 580px; } .cntGSContainer12 .cntGSGrid9 { width: 655px; } .cntGSContainer12 .cntGSGrid10 { width: 730px; } .cntGSContainer12 .cntGSGrid11 { width: 805px; } .cntGSContainer12 .cntGSGrid12 { width: 880px; } .cntGSContainer12 .cntGSPrefix1 { padding-left: 75px; } .cntGSContainer12 .cntGSPrefix2 { padding-left: 150px; } .cntGSContainer12 .cntGSPrefix3 { padding-left: 225px; } .cntGSContainer12 .cntGSPrefix4 { padding-left: 300px; } .cntGSContainer12 .cntGSPrefix5 { padding-left: 375px; } .cntGSContainer12 .cntGSPrefix6 { padding-left: 450px; } .cntGSContainer12 .cntGSPrefix7 { padding-left: 525px; } .cntGSContainer12 .cntGSPrefix8 { padding-left: 600px; } .cntGSContainer12 .cntGSPrefix9 { padding-left: 675px; } .cntGSContainer12 .cntGSPrefix10 { padding-left: 750px; } .cntGSContainer12 .cntGSPrefix11 { padding-left: 825px; } .cntGSContainer12 .cntGSSuffix1 { padding-right: 75px; } .cntGSContainer12 .cntGSSuffix2 { padding-right: 150px; } .cntGSContainer12 .cntGSSuffix3 { padding-right: 225px; } .cntGSContainer12 .cntGSSuffix4 { padding-right: 300px; } .cntGSContainer12 .cntGSSuffix5 { padding-right: 375px; } .cntGSContainer12 .cntGSSuffix6 { padding-right: 450px; } .cntGSContainer12 .cntGSSuffix7 { padding-right: 525px; } .cntGSContainer12 .cntGSSuffix8 { padding-right: 600px; } .cntGSContainer12 .cntGSSuffix9 { padding-right: 675px; } .cntGSContainer12 .cntGSSuffix10 { padding-right: 750px; } .cntGSContainer12 .cntGSSuffix11 { padding-right: 825px; } .cntGSContainer12 .cntGSRight1 { left: 75px; } .cntGSContainer12 .cntGSRight2 { left: 150px; } .cntGSContainer12 .cntGSRight3 { left: 225px; } .cntGSContainer12 .cntGSRight4 { left: 300px; } .cntGSContainer12 .cntGSRight5 { left: 375px; } .cntGSContainer12 .cntGSRight6 { left: 450px; } .cntGSContainer12 .cntGSRight7 { left: 525px; } .cntGSContainer12 .cntGSRight8 { left: 600px; } .cntGSContainer12 .cntGSRight9 { left: 675px; } .cntGSContainer12 .cntGSRight10 { left: 750px; } .cntGSContainer12 .cntGSRight11 { left: 825px; } .cntGSContainer12 .cntGSLeft1 { left: -75px; } .cntGSContainer12 .cntGSLeft2 { left: -150px; } .cntGSContainer12 .cntGSLeft3 { left: -225px; } .cntGSContainer12 .cntGSLeft4 { left: -300px; } .cntGSContainer12 .cntGSLeft5 { left: -375px; } .cntGSContainer12 .cntGSLeft6 { left: -450px; } .cntGSContainer12 .cntGSLeft7 { left: -525px; } .cntGSContainer12 .cntGSLeft8 { left: -600px; } .cntGSContainer12 .cntGSLeft9 { left: -675px; } .cntGSContainer12 .cntGSLeft10 { left: -750px; } .cntGSContainer12 .cntGSLeft11 { left: -825px; } .cntGSVert5 {display: block; height: 5px;} .cntGSVert10 {display: block; height: 10px;} .cntGSVert15 {display: block; height: 15px;} .cntGSVert20 {display: block; height: 20px;} .cntGSVert25 { display: block; height: 25px;} .cntGSVert30 { display: block; height: 30px;} .cntGSVert35 {display: block; height: 35px;} .cntGSVert40 {display: block; height: 40px;} .cntGSVert45 { display: block; height: 45px;} .cntGSVert50 { display: block; height: 50px;} /**************************** O14 Home Page Content Modules CSS ************************/ .cntHCMPageTitle { font-size: 2.67em; color: #454545; font-family: Segoe UI, Arial, Verdana; font-weight: normal; } .cntHCMTitle { font-size: 1.5em; padding-bottom: 5px; margin-bottom: 10px; color: #666666; font-family: Segoe UI, Arial, Verdana; } .cntHCMHeadline, .cntIGLItem { font-size: 1.33em; padding-bottom: 10px; line-height: 17px; color: #484848; } .cntHCMBlurb { line-height: 16px; font-size: 1.2em; font-family: Segoe UI, Arial, Verdana; padding: 0 0 5px 0; } .cntIGLItem { padding: 0 10px 10px 0; font-family: Arial, Verdana; font-size: 12px; } .cnticonListTable { width: 100%; } .cnticonListTable td { vertical-align: middle; } .cntHCMListTitle { padding: 0 0 0 0; } .cntHCMOL { font-family: Arial,Verdana; } .cntHCMOL li { padding-bottom: 4px; } .cntHCMBullet li { background-image: url(http://officeimg.vo.msecnd.net/en-us/files/404/478/ZA101098582.gif); background-repeat: no-repeat; background-position: 0px 5px; padding-left: 10px; list-style-image: none; font-size: 1em; color: #454545; font-family: Arial, Verdana; margin-left: 17px; padding-bottom: 4px; } .cnt_nbs { padding-left: 2px; } .cntHCMBullet { list-style-type: none; list-style-image: none; padding: 0px; margin: 10px 0 20px 0; } .cntHCMFLTable img, .cntIGLItem img { vertical-align: middle; margin: 0; } .cntHCMFLTable { width: 100%; } .cntHCMFLCell { border-bottom: solid 1px #cccccc; padding: 5px 25px 5px 5px; text-align: left; vertical-align: middle; font-family: Arial, Verdana; font-size: 12px; } .cntHCMFLCellFirstRow { border-bottom: solid 1.5px #cccccc; padding: 0 25px 5px 5px; text-align: left; vertical-align: middle; font-family: Arial, Verdana; font-size: 12px; } .cntHCMFLCellLastRow { border-bottom: 0; padding: 5px 25px 0 5px; text-align: left; vertical-align: middle; font-family: Arial, Verdana; font-size: 12px; } .featuredList, .iconList, .basiccontent, .media, .richmedia { font-size: 1em; font-family: Segoe UI, Arial, Verdana; color: #484848; border: solid 1px #cccccc; padding: 15px; line-height: normal; } .featuredList_np, .iconList_np, .basiccontent_np, .media_np, .richmedia_np { font-size: 1em; font-family: Segoe UI, Arial, Verdana; color: #484848; border: solid 1px #cccccc; padding: 0px; line-height: normal; } .featuredList_np a, .iconList_np a, .basiccontent_np a, .media_np a, .richmedia_np a { color: #4685df; text-decoration: none; } .featuredList_np a:hover, .iconList_np a:hover, .basiccontent_np a:hover, .media_np a:hover, .richmedia_np a:hover { text-decoration: underline; } .featuredList_np a:visited, .iconList_np a:visited, .basiccontent_np a:visited, .media_np a:visited, .richmedia_np a:visited { color: #9965c3; } .featuredList a, .iconList a, .basiccontent a, .media a, .richmedia a { color: #4685df; text-decoration: none; } .featuredList a:hover, .iconList a:hover, .basiccontent a:hover, .media a:hover, .richmedia a:hover { text-decoration: underline; } .featuredList a:visited, .iconList a:visited, .basiccontent a:visited, .media a:visited, .richmedia a:visited { color: #9965c3; } .featuredList_nb, .iconList_nb, .basiccontent_nb, .media_nb, .richmedia_nb { font-size: 1em; font-family: Segoe UI, Arial, Verdana; color: #484848; border: 0; padding: 0; line-height: normal; } .featuredList_nb a, .iconList_nb a, .basiccontent_nb a, .media_nb a, .richmedia_nb a { color: #4685df; text-decoration: none; } .featuredList_nb a:hover, .iconList_nb a:hover, .basiccontent_nb a:hover, .media_nb a:hover, .richmedia_nb a:hover { text-decoration: underline; } .featuredList_nb a:visited, .iconList_nb a:visited, .basiccontent_nb a:visited, .media_nb a:visited, .richmedia_nb a:visited { color: #9965c3; } .cntbasicTable { width: 100%; } .cntbasicTable td { vertical-align: top; padding: 0 5px 0 0px; } .cntRichMediaTbl { } .cntRichMediaSmallTd { margin: 15px; padding: 5px; border: solid 1px #cccccc; } .cntRichMediaLargeTd { margin: 15px; padding: 5px; border: solid 1px #cccccc; width: 202px; } .cntHCMComparisonTable { border-collapse: collapse; } .cntHCMComparisonTable_tr_first .cntHCMComparisonTable_tc_first { vertical-align: middle; background-color: #ffcc66; font-weight: bold; border-top: solid 1px #f1b75d; border-bottom: solid 1px #f1b75d; } .cntHCMComparisonTable_tr_first .cntHCMComparisonTable_tc { vertical-align: middle; background-color: #ffcc66; font-weight: bold; border-top: solid 1px #f1b75d; border-bottom: solid 1px #f1b75d; } .cntHCMComparisonTable_tr_first .cntHCMComparisonTable_tc_last { vertical-align: middle; background-color: #ffcc66; font-weight: bold; border-top: solid 1px #f1b75d; border-bottom: solid 1px #f1b75d; } .cntHCMComparisonTable_tr .cntHCMComparisonTable_tc_first { vertical-align: middle; background-color: #e8e8e8; border-bottom: solid 1px #cccccc; } .cntHCMComparisonTable_tr .cntHCMComparisonTable_tc { vertical-align: middle; border-bottom: solid 1px #cccccc; } .cntHCMComparisonTable_tr .cntHCMComparisonTable_tc_last { vertical-align: middle; border-bottom: solid 1px #cccccc; } .cntHCMComparisonTable_tr_last .cntHCMComparisonTable_tc_first { vertical-align: middle; background-color: #e8e8e8; border-bottom: solid 1px #f1b75d; } .cntHCMComparisonTable_tr_last .cntHCMComparisonTable_tc { vertical-align: middle; border-bottom: solid 1px #f1b75d; } .cntHCMComparisonTable_tr_last .cntHCMComparisonTable_tc_last { vertical-align: middle; border-bottom: solid 1px #f1b75d; } .cntHCMPMGComparisonTable { border: solid 1px #cccccc; border-collapse: collapse; } .cntHCMPMGComparisonTable_tr_even { background-color: #eeeeee; } .cntHCMPMGComparisonTable_tr_odd { } .cntHCMPMGComparisonTable_tc_first { text-align: left; padding: 7px 10px 7px 10px; vertical-align: middle; } .cntHCMPMGComparisonTable_tc { text-align: center; border-left: solid 1px #cccccc; padding: 7px; vertical-align: middle; } .pmgtblhead { font-weight: bold; font-size: 14px; } .pmgtblfeature { font-size: 12px; } .pmgtblblurb { font-size: 11px; } .cntHCMSubtitle { } .cntHCMHeroSubtitle { font-size: 30px; line-height: 36px; color: #333333; padding: 15px 0 15px 0; } .cntHCMHeroTitle { font-weight: lighter; color: #999999; font-size: 38px; line-height: 36px; } /* all up home page styles */ #cnt_au_hp_container { padding-left: 76px; } .cnt_au_hp_vertical_space { font-size: 2px; height: 15px; } .cnt_au_hp_RightSideVertical_space { font-size: 2px; height: 10px; } .cnt_au_hp_horizontal_space { font-size: 2px; width: 20px; } .cnt_au_hp_hero_td { vertical-align: top; text-align: left; width: 805px; height: 267px; background-position: center top; background-repeat: no-repeat; } .cnt_au_hp_hero_td h3 { font-family: Segoe UI, Arial, Verdana; font-weight: normal; font-size: 3em; color: #454545; padding-top: 15px; padding-left: 0px; text-align: center; } .cnt_au_hp_hero_td h1 { font-family: Segoe UI, Arial, Verdana; font-weight: normal; font-size: 1.5em; color: #4685df; padding-top: 5px; padding-left: 470px; } .cnt_au_hp_hero_td h2 { font-family: Segoe UI, Arial, Verdana; font-weight: normal; font-size: 1.33em; color: #4685df; padding-top: 5px; padding-left: 470px; } .cnt_au_hp_mid_head { border: 1px solid #cccccc; text-align: center; vertical-align: middle; width: 255px; background-position: left bottom; background-repeat: repeat-x; } .cnt_au_hp_mid_head p { font-family: Segoe UI, Arial, Verdana; font-weight: normal; font-size: 1.5em; color: #666666; } .cnt_au_hp_mid_image { text-align: center; height: 116px; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; vertical-align: top; } .cnt_au_hp_mid_list { border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-bottom: 1px solid #cccccc; padding: 15px 15px 15px 15px; vertical-align: top; } .cnt_au_hp_mid_list li { font-size: 12px; } .cnt_au_hp_lower_head { border: 1px solid #cccccc; text-align: left; padding-left: 15px; vertical-align: middle; width: 201px; background-position: left bottom; background-repeat: repeat-x; } .cnt_au_hp_lower_head p { font-family: Segoe UI, Arial, Verdana; font-weight: normal; font-size: 1.5em; color: #666666; } .cnt_au_hp_lower_list { border: 1px solid #cccccc; border-top: 0; text-align: left; padding: 10px 20px 10px 20px; vertical-align: top; width: 201px; } .cnt_au_hp_lower_list p { font-family: Segoe UI, Arial, Verdana; font-weight: normal; font-size: 1em; margin: 0 0 18px 0; } .cnt_au_hp_lower_list img { float: left; padding-right: 5px; } .basiccontent_Title { line-height: normal; } /* single FH styles */ .singleFHa { width: 820px; font-family: Segoe UI, Arial, Verdana; margin-left: 60px; } h1.cntFHa_h1 { font-size: 32px; font-family: Segoe UI, Arial, Verdana; font-weight: normal; color: #ff9700; text-align: left; padding: 0px; margin: 0px; } h1.cntFHa_h1 a, h1.cntFHa_h1 a:visited { color: #ff9700; } .singleFHa a { text-decoration: none; } .singleFHa a:visited { color: #3366cc; } .singleFHa a:hover { text-decoration: underline; } .cntFHa_h2 { font-size: 20px; font-family: Segoe UI, Arial, Verdana; font-weight: normal; color: #999999; padding: 0px; margin: 0px; } .cntFHa_h2 a, .cntFHa_h2 a:hover, .cntFHa_h2 a:visited, .cntFHa_h2 a:active { font-size: 20px; font-family: Segoe UI, Arial, Verdana; font-weight: normal; color: #3366cc; padding: 0px; margin: 0px; } .cntFHa_td { vertical-align: top; padding: 0 0 0 0; } .cntFHa_h3 a, .cntFHa_h3 a:visited { color: #252525; } .cntFHa_h3 { font-size: 1.33em; font-family: Segoe UI, Arial, Verdana; font-weight: normal; color: #454545; margin: 0; padding: 0 0 3px 0; } .cntFAa_td_mid_head .cntFHa_h3 { margin-top: 4px; } .cntInnerTabTable .cntFAa_td_mid_head { width: 50%; } #singleFHbCell1 .cntInnerTabTable .cntFHa_h3 { font-size: 13px; padding: 0px; font-family: Segoe UI, Arial, Verdana; font-weight: normal; color: black; } #singleFHbCell1 .cntInnerTabTable .cntFHa_mid { font-size: 12px; font-family: Segoe UI, Arial, Verdana; color: #666666; margin-top: 2px; } .cntInnerTabTable .cntFHa_mid A { line-height: 10px; font-size: 11px; } .cntInnerTabTable { margin-bottom: 10px; } .cntFHa_lower { font-size: 0.92em; color: #454545; list-style: none; line-height: 12px; margin: 3px 0 0 0; } *:first-child + html .cntFHa_lower{margin:3px 0px 0px 10px;} .cntFHa_lower_long_list { font-size: 0.92em; color: #454545; list-style: none; line-height: 12px; margin: 7px 0 0 0; } .cntFHa_lower_all { font-size: 0.83em; color: #3366cc; margin-top: 10px; text-transform: uppercase; list-style: none; } .cntFHa_hr { background-color: #eaeaea; margin: 20px 0 20px 0; } .cnt10mr { padding: 0; margin: 0; } .cntFAa_td_mid_head { vertical-align: top; padding: 5px 50px 0 10px; width: 200px; } .cntFAa_td_mid_image { vertical-align: top; padding: 0 0 0 10px; } .cntFAa_imageOnly_mid_div .cntFAa_td_mid_image { padding-left: 5px; } .cntFAa_imageOnly_mid_div td.cntFAa_td_mid_image:first-child { padding-left: 0px; } .cntFAa_imageOnly_mid_div img { margin: 0px; } .cntFHa_mid { font-size: 1.08em; font-family: Segoe UI, Arial, Verdana; margin: 0 0 0 0; } #singleFHbCell1 .cntFAa_td_mid_head { vertical-align: top; padding: 5px 0 0 10px; } #singleFHbCell1 .cntFAa_td_mid_image { vertical-align: top; padding: 0 0 0 10px; } #singleFHbCell1 .cntFHa_mid, #singleFHbCell1 .cntFHa_mid_LinkText { font-size: 1.08em; font-family: Segoe UI, Arial, Verdana; margin: 3px 0 0 0; } #singleFHbCell3 .cntFAa_td_mid_head { vertical-align: top; padding: 5px 0 0 10px; width: auto; } #singleFHbCell3 .cntFAa_td_mid_image { vertical-align: top; padding: 0 0 0 10px; } #singleFHbCell3 .cntFHa_mid { font-size: 1.08em; font-family: Segoe UI, Arial, Verdana; margin: 6px 0 0 0; } .cntFAa_tbl_mid_div .cntFHa_mid_LinkText { line-height: 1em; padding-bottom: 8px; } #singleFHbCell3 .cdAdTitle { font-size: 80%; padding-top: 10px; } .cntFAa_tbl_mid { margin: 0px; font-size: 0.08em; height: 1px; padding: 0px; } #cntFHa_float_head { font-size: 40px; font-weight: normal; } #cntFHa_float_small_head { font-size: 17px; } #singleFHbCell1 #cntFHa_float_head { font-size: 20px; } #cntFHa_float_head A { color: inherit; } #cntFHa_float_sub { font-family: Arial, Verdana; } .cntEOS { font-family: Segoe UI, Arial, Verdana; width: 820px; margin-left: 60px; line-height: normal; } .cntFHa_td { vertical-align: top; } .cntEOS_h1 { font-size: 2.33em; font-family: Segoe UI, Arial, Verdana; font-weight: normal; color: #454545; text-align: left; padding: 0px 0 20px 0; margin: 0px; } .cntEOS_h2 { font-size: 1.33em; line-height: 22px; font-family: Segoe UI, Arial, Verdana; font-weight: normal; color: #454545; padding: 0px 0 0 0; margin: 0px; } .cntEOS_h2 a { color: #454545; } .cntEOS_h2 a { color: #454545; text-decoration: none; } .cntEOS_h3 { font-size: 2.33em; color: #3366cc; padding-top: 10px; font-family: Segoe UI, Arial, Verdana; vertical-align: middle; } .cntEOS_h3 a img { vertical-align: middle; padding: 0 0 5px 0; } .cntEOS_right_head { font-size: 1.42em; line-height: 20px; font-family: Segoe UI, Arial, Verdana; font-weight: normal; color: #454545; text-align: left; margin: 20px 20px 10px 20px; padding: 0 0px 0 0; } .cntEOS_right_image { text-align: center; } .cntEOS_right_blurb { font-size: 1.25em; line-height: 18px; font-family: Segoe UI, Arial, Verdana; font-weight: normal; color: #454545; padding: 0px; margin: 15px 20px 10px 20px; } .cntEOS_right_list { font-family: Arial, Verdana; color: #454545; font-size: 12px; line-height: 13px; padding-left: 17px; } .RightSideHead { font-size: 1.83em; font-family: Segoe UI, Arial, Verdana; font-weight: normal; } .RightSideSubHead { font-size: 1.33em; font-weight: normal; color: #151515; } .RightSideSubHead IMG, .RightSideSubHead A IMG { vertical-align: middle; padding-right: 5px; } .RightSideSubHead + .cnt_right_side_nb { padding-left: 20px; } .RightSideSubHead + .cnt_right_side_nb .cntFAa_td_mid_head, .RightSideSubHead + .cnt_right_side_nb .cntFHa_mid { padding-top: 0px !important; margin-top: 0px !important; } .cntEOS_mid_image { padding: 0 10px 0 0; } .cntEOS_mid_head { } .cntEOS_mid_text { font-size: 1em; font-family: Segoe UI, Arial, Verdana; } .cntEOS_mid_link { margin-top: 8px; font-size: 1em; font-family: Arial, Verdana; } .cntEOS_right_link { font-size: 0.92em; font-family: Arial, Verdana; text-align: center; margin-bottom: 20px; margin-top: 10px; } .cntEOS_right_button_text a, .cntEOS_right_button_text_hover a { font-family: Segoe UI, Arial, Verdana; color: #ffffff; font-size: 1.5em; line-height: 18px; font-weight: bold; text-align: center; padding: 0; margin: 0; } .cntEOS_hr { background-color: #eaeaea; margin: 10px 0 10px 0; } .cntEOS_EOSTopImage { padding-right: 20px; } .cntEOS_right_button_text a span{ display: block; height: 30px; width: 140px; margin: auto; background-image: url("http://officeimg.vo.msecnd.net/en-us/files/380/273/ZA102604523.png"); line-height: 1.41em; } .cntEOS_right_button_text a:hover span{ display: block; height: 30px; width: 140px; margin: auto; background-image: url("http://officeimg.vo.msecnd.net/en-us/files/380/273/ZA102604523.png"); background-position: 0 30px; text-decoration: none; line-height: 1.41em; } .cntEOSGreyBorder { margin-right: -2px; /*fixes box model problem with grid system*/ border: 1px solid #eaeaea; padding-top: 20px; } .singleFHa { line-height: normal; } #singleFHbCell1 { vertical-align: top; } #singleFHbCell2 { vertical-align: top; width: 20px; } #singleFHbCell2 .cntFHa_mid { padding: 10px 0 0 0; } #singleFHbCell3 { vertical-align: top; } .cntFHa_expand_show { display: block; border: solid 1px #eaeaea; padding: 5px; } .cntFHa_expand_show ul.cntHCMBullet { margin: 0; } .cntFHa_expand_show ul.cntHCMBullet li { margin: 0 0 0 10px; font-family: Segoe UI, Arial, Verdana; } .cntFHa_expand_hide { display: none; } .cntFHa_expand_table_head_hover { border: solid 1px #eaeaea; padding: 5px; font-size: 1.08em; background: url(http://officeimg.vo.msecnd.net/en-us/files/193/926/ZA101820953.png) bottom left repeat-x; cursor: pointer; color: #666; } .cntFHa_expand_table_head_selected { border: solid 1px #eaeaea; padding: 5px; font-size: 1.08em; background: url(http://officeimg.vo.msecnd.net/en-us/files/622/964/ZA101819738.png) bottom left repeat-x; color: #666; } .cntFHa_expand_table_head { border: solid 1px #eaeaea; padding: 5px; cursor: pointer; font-size: 1.08em; background: url(http://officeimg.vo.msecnd.net/en-us/files/622/964/ZA101819738.png) bottom left repeat-x; color: #666; } .cntFHa_inner_table td { vertical-align: top; width: 50%; padding: 10px 0 0 0; } .cntFHa_inner_table .cntHCMBlurb { padding: 10px 0 10px 20px; font-family: Segoe UI, Arial, Verdana; font-size: 1em; } .cntFHb_td { vertical-align: top; padding: 0 20px 0 0; } .cntFHa_hr { background-color: #eaeaea; margin: 20px 0 20px 0; } #singleFHbCell1 .cntFHa_h3 { line-height: 1.2em; padding-bottom: 0px; } .cntFAa_tbl_mid_div IMG { margin-top: 10px; } .cntFAa_tbl_mid_div P IMG { margin-top: 0px; } table[id^=cntFHa_expand_table], .cntFHa_inner_table { width: 100%; border-collapse: collapse; } .cntFHa_expand_table_head_selected .cntFHa_expand_img { padding: 0 0 0 15px; background: url('http://officeimg.vo.msecnd.net/en-us/files/596/972/ZA101836945.png') left center no-repeat; color: #454545; outline: none; } .cntFHa_expand_table_head .cntFHa_expand_img, .cntFHa_expand_table_head_hover .cntFHa_expand_img { padding: 0 0 0 15px; background: url('http://officeimg.vo.msecnd.net/en-us/files/421/435/ZA101836938.png') left center no-repeat; color: #4685df; } a.cntFHa_expand_img:hover { text-decoration: none; } .cnt_vertical_space { font-size: 2px; height: 10px; } .cnt_right_ad { padding: 0 0 0 0; } .cnt_RightSideFormContainer { border: 1px solid #eaeaea; width: 300px; padding-bottom: 10px; margin-bottom: 20px; } .cntRightSideFormHeading { border-bottom: 1px solid #eaeaea; text-align: left; padding: 6px 5px 5px; margin: 0px; font-family: Segoe UI, Arial, Verdana; color: #252525; font-size: 13px; height: 18px; background: url(http://officeimg.vo.msecnd.net/en-us/files/625/019/ZA101880272.png); width: 290px; } .cnt_RightSideForm { padding-bottom: 5px; padding-left: 5px; width: 300px; background: none transparent scroll repeat 0% 0%; } .cnt_RightSideForm label { margin-top: 7px; width: 280px; font-family: Segoe UI, Arial, Verdana; float: left; color: #252525; font-size: 12px; } .cnt_RightSideForm input, .cnt_RightSideForm textarea { border: 1px solid #eaeaea; padding-top: 1px; padding-left: 3px; width: 275px; font-family: Segoe UI, Arial, Verdana; color: #999; font-size: 12px; margin-top: 2px; } .cnt_RightSideForm input:focus, .cnt_RightSideForm textarea:focus { color: Black; } .cnt_RightSideForm input { height: 17px; } .cnt_RightSideForm input[type="radio"] { width: auto; border: none; } #btnSubmit { background: url(http://officeimg.vo.msecnd.net/en-us/files/213/122/ZA101880274.png); width: 62px; height: 22px; border: none; float: right; margin: 15px 15px 0px 0px; } #btnClear { background: url(http://officeimg.vo.msecnd.net/en-us/files/886/496/ZA101880275.png); width: 62px; height: 22px; border: none; float: right; margin: 15px 15px 0px 0px; } #btnSubmit:hover, #btnClear:hover { cursor: pointer; } #cntFHa_float_sub { font-size: 14px; } .cnt_image_module_top_visible { display: inline; } .cnt_image_module_top_hidden, .cnt_image_module_lower_hidden { display: none; } #cnt_image_module_top_cell { padding: 0 0 0 0; } #cnt_image_module_top_cell p { padding: 0; margin: 0; } .cnt_FH1Title, .cntMonsterCCTitle { padding: 0 0 30px 0; color: #454545; font-size: 2.33em; font-weight: normal; } .cnt_FH1_HeadlineNBHCM { font-size: 1.5em; line-height: 20px; padding: 0 0 6px 0; } .cnt_FH1_HeadlineNBHCM a { color: #454545; } .cnt_FH1_BlurbNBHCM { font-size: 1.08em; padding: 5px 0 0 0; } .cnt_FH1_ol { margin: 15px 0 0 0; padding: 0 0 0 20px; } .cnt_FH1_ol li { margin: 6px 0 0 0; font-size: 1.08em; font-family: Arial, Verdana; } .cnt_filmstrip_item_show { display: inline; vertical-align: top; text-align: center; } .cnt_filmstrip_item_hide { display: none; vertical-align: top; text-align: center; } .cnt_FH1FilmstripImage { text-align: center; vertical-align: middle; } .cnt_FilmstripCell { vertical-align: top; padding: 5px 0 5px 0; } #cnt_filmstrip_row { background: url('http://officeimg.vo.msecnd.net/en-us/files/958/328/ZA101828403.png') repeat-x left bottom; } a.cnt_filmstrip_nav_number_a, a.cnt_filmstrip_nav_number_a:visited, a.cnt_filmstrip_nav_number_a:hover { text-decoration: none; color: #454545; } .cnt_filmstrip_nav_number { height: 20px; width: 24px; text-align: center; vertical-align: middle; cursor: pointer; font-size: 1em; } .cnt_filmstrip_nav_number_hover { background-image: url('http://officeimg.vo.msecnd.net/en-us/files/578/595/ZA101825684.jpg'); background-position: center center; background-repeat: no-repeat; height: 20px; width: 24px; text-align: center; vertical-align: middle; cursor: pointer; font-size: 1em; } .cnt_filmstrip_nav_number_active { background-image: url('http://officeimg.vo.msecnd.net/en-us/files/770/437/ZA101825685.jpg'); background-position: center center; background-repeat: no-repeat; height: 20px; width: 24px; text-align: center; vertical-align: middle; font-size: 1em; } #cnt_filmstrip_nav_head { text-align: left; vertical-align: middle; font-size: 1em; } #cnt_filmstrip_nav_head p { margin: 0px; } #cnt_filmstrip_nav { background-color: #eeeeee; padding: 5px 5px 5px 5px; border-top: white 1px solid; } .cnt_FH1FilmstripLink { font-size: 1em; text-align: left; margin: 0 0 2px 0; } .cnt_nav_cell_table p, .cnt_nav_cell_table_selected p { margin: 0; padding: 0px 5px; } /*Indentation support for homepage filmstrip links and blurbs => Bug774858*/ .cntFHIndent20 { margin-left: 20px !important; } .cntFHIndent40 { margin-left: 40px; } .cnt_FH1FilmstripBlurb { font-size: 1em; text-align: left; margin: 0 0 15px 0; } .cnt_filmstrip_nav_title_hidden { display: none; } .cnt_filmstrip_nav_title_visible { display: inline; } .cnt_gTable_content_hidden { display: none; } .cnt_gTable_content { display: inline; } .cnt_gTable_content_tab_hidden { display: none; } .cnt_gTable_content_tab { display: inline; padding: 10px 10px 10px 10px; } .cnt_FH1_ul { margin: 0; } .cntFAa_td_mid_head .cntHCMBullet { margin: 0; } .pmg_table_font TD /*Bug 794195*/ { text-align: left; height: 20px; } /*Monster Career Center Styles*/ .cntMonsterSearch { width: 495px; margin-top: 5px; } .clearingDiv { clear: both; } .cntMonsterSearch input:focus { color: #000000; } .cntMonsterSearchBox { width: 230px; height: 20px; padding-top: 5px; border: 1px solid #ccc; float: left; padding-left: 10px; } .cntMonsterSearchBoxLocation { width: 229px; height: 20px; padding-top: 5px; border: 1px solid #ccc; float: left; padding-left: 10px; margin-left: 10px; } .cntMonsterSearchQuery { color: #999; font-size: 12px; } .cntMonsterSearchCaptionDiv { font-family: arial; font-size: 11px; width: 200px; float: left; margin-top: 10px; } .cntMonsterSearchCaption { vertical-align: middle; display: block; margin-top: 3px; } .cntMonsterSearchCheckBox { float: left; margin-right: 5px; } .cntMonsterSearchButtonDiv { width: 86px; height: 25px; float: right; background: url(http://officeimg.vo.msecnd.net/en-us/files/581/225/ZA101886039.png) no-repeat; margin-top: 10px; cursor: pointer; } .cntMonsterSearchButton { text-align: center; color: white; font-family: Arial; font-size: 14px; font-weight: bold; padding-top: 4px; margin: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; } .cntMonsterCCTitle { padding-bottom: 10px !important; } .cntMonsterCCTitle img { vertical-align: middle; } /*F1 Help Styles*/ #cnt_main_client_table { width: 100%; } #cnt_client_content .cntbasicTable { width: 355px; padding-right: 22px; } #cnt_client_logo_img { padding-left: 10px; margin-left: 10px; } #cnt_client_logo { width: 395px; background-image: url(http://officeimg.vo.msecnd.net/en-us/files/887/695/ZA101812500.png); background-position: top left; background-repeat: no-repeat; height: 50px; } #cnt_client_logo_fill { background-image: url(http://officeimg.vo.msecnd.net/en-us/files/007/862/ZA101812501.png); background-position: top left; background-repeat: repeat-x; } #cnt_client_content { width: 395px; padding: 20px 20px 0 20px; } #cnt_client_content .cntHCMBlurb { padding: 0; } #cnt_client_content .cntHCMBullet li { font-size: 130%; } .cntHCMBlurbRight { text-align: right; } /*F1 Help Styles*/ /********************************** O14 Global Styles ************************************/ /*** Headings ***/ .cntArticleBody h2, .cntTrainingInnerContent h2, .cdTrainingInnerContent h2 { font-size: 1.67em; /*20px*/ font-family: Segoe UI, Arial, Verdana; font-weight: normal; color: #454545; margin: 0px 0px 10px 0px; padding: 25px 0px 10px 0px; border-bottom-style: solid; border-bottom-color: #ffc200; border-bottom-width: 1px; } .cntArticleBody h3, .cntTrainingInnerContent h3, .cdTrainingInnerContent h3 { font-size: 1.25em; /*15px*/ font-family: Segoe UI, Arial, Verdana; font-weight: normal; text-transform: uppercase; color: #454545; margin: 25px 0px 5px 0px; padding: 0px 0px 0px 0px; } .cntArticleBody h4, .cntTrainingInnerContent h4, .cdTrainingInnerContent h4 { font-size: 1.15em; /*13px*/ font-family: Arial, Verdana; font-weight: bold; color: #454545; margin: 20px 0px 2px 0px; } .cntArticleBody h5, .cntTrainingInnerContent h5, .cdTrainingInnerContent h5 { font-size: 1em; /*12px*/ font-family: Arial, Verdana; font-weight: bold; text-transform: uppercase; color: #454545; margin: 20px 0px 2px 0px; } .cntArticleBody h6, .cntTrainingInnerContent h6, .cdTrainingInnerContent h6 { font-family: Segoe UI, Arial, Verdana; font-size: 0.92em; /*11px*/ line-height: 1em; /*12px*/ color: #454545; } /*** Links ***/ .cntArticleBody a, .cdTrainingInnerContent a { color: #4685df; text-decoration: none; } .cntTrainingInnerContent a { text-decoration: none; } .cntArticleBody a:hover, .cntTrainingInnerContent a:hover, .cdTrainingInnerContent a:hover { color: #4685df; text-decoration: underline; } .cntArticleBody a:active, .cntTrainingInnerContent a:active, .cdTrainingInnerContent a:active { color: #4685df; text-decoration: underline; } .cntArticleBody a:visited, .cntTrainingInnerContent a:visited, .cdTrainingInnerContent a:visited { color: #9965c3; text-decoration: none; } .cntArticleBody a:visited:hover, .cntTrainingInnerContent a:visited:hover, .cdTrainingInnerContent a:visited:hover { color: #9965c3; text-decoration: underline; } /*** Others ***/ .cntNoDeco { text-decoration: none; } a:hover .cntNoDeco { text-decoration: underline !important; } .cntTopOfPage { font-family: Arial, Verdana; font-size: 0.83em; line-height: 0.83em; color: #3366cc; text-transform: uppercase; padding: 0px 0px 0px 0px; margin: 30px 0px 25px 0px; } .bterm { font-weight: bold; } .DropDown img { padding: 0 5px 0 0; display: inline-block; margin-left: -14px; } .DropDown { padding-left: 34px; display: inline-block; } .ACECollapsed { padding-left: 34px; } .cntArticleBody .ac { font-size: .92em; /* 11px 627215 */ padding: 0px; margin: 9px 0px 15px inherit; } .cntnote { border-bottom: #eaeaea 1px solid; border-top: #eaeaea 1px solid; border-left: none; border-right: none; line-height: 1em; font-weight: normal; color: #454545; background: #f9f9f9; font-size: 0.92em; margin: 20px 0px 5px 0px; padding: 1px 2px 1px 1px; text-transform: uppercase; } .cntSecurity { border-bottom: #eaeaea 1px solid; border-top: #eaeaea 1px solid; border-left: none; border-right: none; line-height: 1em; font-weight: normal; color: #454545; background: #f9f9f9; font-size: 0.92em; margin: 20px 0px 5px 0px; padding: 1px 2px 1px 1px; text-transform: uppercase; } .cdArticleMarginItem .cntnote { font-size: 0.82em; line-height: 0.92em; font-family: arial; text-transform: uppercase; color: #454545; background: #f9f9f9; padding: 1px 0px 1px 3px; margin: 20px 0px 2px 0px; border-top-style: solid; border-top-color: #eaeaea; border-top-width: 1px; border-bottom-style: solid; border-bottom-color: #eaeaea; border-bottom-width: 1px; } .cntwarning { border-bottom: #ffe3ce 1px solid; border-top: #ffe3ce 1px solid; border-left: none; border-right: none; line-height: 1em; font-weight: normal; color: #d8370b; background: #fff8f2; font-size: 0.92em; margin: 20px 0px 5px 0px; padding: 1px 2px 1px 1px; text-transform: uppercase; } .cdArticleMarginItem .cntwarning { font-size: 0.82em; line-height: 0.92em; font-family: arial; text-transform: uppercase; color: #d8370b; background: #fff8f2; padding: 1px 0px 1px 3px; margin: 20px 0px 2px 0px; border-bottom-style: solid; border-bottom-color: #ffe3ce; border-bottom-width: 1px; border-top-style: solid; border-top-color: #ffe3ce; border-top-width: 1px; } .cntArticleBody .runinhead { font-weight: bold; } .synopsisruninhead { font-weight: bold; } #cntpullquotedefault { font-size: 1.15em; font-family: 'Arial'; font-weight: normal; color: #999999; } #cntpullquoteltblue { font-size: 1.15em; font-family: 'Arial'; font-weight: normal; color: #25bbe0; } #cntpullquoteblue { font-size: 1.15em; font-family: 'Arial'; font-weight: normal; color: #0b3788; } #cntpullquoteorange { font-size: 1.15em; font-family: 'Arial'; font-weight: normal; color: #d87823; } #TablePullQuote { margin: 5px; width: 100%; float: left; } #TablePullQuoteR { margin: 5px; width: 237px; float: right; } #TDPullQuote { text-align: center; font-family: Segoe UI, Century Schoolbook; font-size: 1.42em; color: #707070; font-style: italic; line-height: 1.83em; padding: 8px 5px 10px 5px; margin: 15px 0px 15px 0px; border-top-style: solid; border-top-color: #cccccc; border-top-width: 1px; border-bottom-style: solid; border-bottom-color: #cccccc; border-bottom-width: 1px; } #TDPullQuoteM { font-size: 1.8em; line-height: 24px; font-family: Arial; color: #999999; text-align: right; font-weight: bold; } #TDPullQuoteMR { font-size: 1.8em; line-height: 24px; font-family: Arial; color: #999999; text-align: left; font-weight: bold; } #divShowAll { display: block; text-align: right; } #divHideAll { display: none; text-align: right; } .cntArticleBody pre { padding: 8px; background-color: #eeeeee; overflow: auto; min-height: 30px; } .cntArticleBody code { font-family: "Courier New" , Courier, monospace; font-size: .9em; line-height: 1.3em; } .cntpre { background-color: #eeeeee; margin-bottom: 1.5em; margin-top: 1.2em; padding: 8px; position: relative; top: 0; left: 0; overflow: auto; width: 350px; height: 7em; } /*** Lists ***/ .cntArticleBody ul, .cntTrainingInnerContent ul, .cdTrainingInnerContent ul { font-family: Arial, Verdana; margin-top: 0px; margin-left: 0px; /* 665552 */ margin-bottom: 10px; padding-bottom: 0px; display: block; list-style: url(http://officeimg.vo.msecnd.net/en-us/files/199/617/ZA010079369.gif); } @media print { .cntArticleBody ul, .cntTrainingInnerContent ul, .cdTrainingInnerContent ul { list-style-image: none; } } .cntArticleBody ul li, .cntTrainingInnerContent ul li, .cdTrainingInnerContent ul li { padding-bottom: 8px; /* 625783 */ margin-left: 0px; padding-left: 0px; display: list-item; } /* IE 7 */ * + html .cntArticleBody ul li { margin-left: 20px; } * + html .cntArticleBody ul { margin-left: 22px !important; padding-left: 0px !important; } .cntArticleBody ol, .cdTrainingInnerContent ol { font-family: Arial, Verdana; color: #454545; margin-top: 0px; margin-bottom: 10px; padding-bottom: 0px; margin-left: 15px; /* 665552 */ display: block; } .cntTrainingInnerContent ol { font-family: Arial, Verdana; color: #454545; margin-top: 0px; margin-bottom: 10px; padding-bottom: 0px; margin-left: 0px; display: block; } .cntArticleBody ol li, .cntTrainingInnerContent ol li, .cdTrainingInnerContent ol li { /* padding-bottom: 8px; 625783 */ margin: 0 0 7px 0; padding: 0; line-height: 20px; display: list-item; } * + html .cntArticleBody ol, * + html .cntTrainingInnerContent ol, .cdTrainingInnerContent ol { margin-left: 45px !important; /* 674021 */ } .cntArticleBody li[type="circle"], .cntTrainingInnerContent li[type="circle"], .cdTrainingInnerContent li[type="circle"] { padding: 0px; display: list-item; } .cntArticleBody ul ol, .cntTrainingInnerContent ul ol, .cdTrainingInnerContent ul ol { list-style-image: none; padding-left: 0px; margin-top: 0px; } .cntArticleBody ul ul { padding-left: 15px; margin-top: 0px; } .cntArticleBody ol ul, .cntTrainingInnerContent ol ul, .cdTrainingInnerContent ol ul { padding-left: 15px; margin-top: 0px; } .cntArticleBody ol ol, .cntTrainingInnerContent ol ol, .cdTrainingInnerContent ol ol { padding-left: 2px; margin-top: 0px; } .bmkTOChead { font-size: 1.25em; font-family: Arial; font-weight: normal; text-transform: none; color: #454545; margin: 25px 0px 8px 0px; padding: 0px 0px 0px 0px; } .bmktocrule { display: none; } ul#bmkTOClist { margin: 0px; padding: 0px; display: block; font-family: Arial, Verdana; font-size: 1em; line-height: 1em; } li#bmkTOClinks { padding: 0 0 5px 0; margin: 0 0 0px 15px; color: #3366cc; line-height: 16px; list-style-image: url(http://officeimg.vo.msecnd.net/en-us/files/677/844/ZA010069439.gif); } p#bmkTOClinks { padding: 0 0 0px 0; margin: 0 0 0px 0; } #bmkTOCpara { margin: 0px; padding: 0px; } /*** Tables ***/ .cntArticleBody table { margin: 0px; } .cntArticleBody tr { vertical-align: top; font-size: 0.92em; } .cntArticleBody tr tr, .cntArticleBody tr th { font-size: 1em; } .cntArticleBody td /* 672777 */ { padding: 4px 10px 4px 5px; margin: 0; vertical-align: top; } /* IE7 */ * + html #NestedTable1 th, * + html #NestedTable2 th { padding-top: 4px !important; padding-bottom: 3px !important; } #NestedTable1 th { padding-top: 0px; padding-bottom: 0px; } .collapse { border-collapse: collapse; margin-bottom: 20px; border-bottom: none; } .collapse .collapse, .cntTblNoBorder { /* margin-top: 1em;*/ border-collapse: collapse; border-bottom: 0px; } .collapse th, .cntTblNoBorder th { text-align: left; padding: 3px 10px 3px 5px; background: #D8D8D8 !important; border-top: 1px solid #a4a4a4; border-bottom: 1px solid #a4a4a4; font-family: Arial, Verdana; font-size: 1.12em; color: #333; text-transform: uppercase; font-weight: normal; } .collapse td p /* 672777 */ { padding: 0px 0px 10px 0px; margin: 0px 0px 0px 0px; line-height: 14px; } .trbgeven { font-family: Arial, Verdana; color: #454545; background-color: #f3f3f3; padding: 0; vertical-align: top; border-bottom: solid 1px #ccc; border-top: solid 1px #ccc; } .trbgodd { font-family: Arial, Verdana; color: #454545; background-color: #ffffff; padding: 0; vertical-align: top; border-bottom: solid 1px #ccc; } .cntArticleBody div#tableoverflow { margin: 0 0 20px inherit; padding: 0px; overflow: auto; line-height: normal; } /*Indentation styles relative*/ #cntIndent1, .cntIndent1 { margin-left: 0px; } #cntIndent2, .cntIndent2 { margin-left: 40px; } #cntIndent3, .cntIndent3, ol + ul[id="cntIndent1"], ul + ol[id="cntIndent1"] { margin-left: 54px !important; } #cntIndent4, .cntIndent4 { margin-left: 80px !important; } #cntIndent5, .cntIndent5 { margin-left: 110px !important; } #cntIndent6, .cntIndent6 { margin-left: 125px !important; } /*Indentation styles aboslute*/ ul.cntIndent18, ol.cntIndent18 { margin-left: -15px; } .cntIndent18, .collapse td p.cntIndent18 { margin-left: 25px; } ul.cntIndent36, ol.cntIndent36 { margin-left: 0px; } .cntIndent36, .collapse td p.cntIndent36 { margin-left: 40px; } ol.cntIndent54, ul.cntIndent54 { margin-left: 15px; } .ACECollapsed OL.cntIndent54 { margin-left: 18px; } .ACECollapsed UL.cntIndent54 { margin-left: 13px; } .ACECollapsed P.cntIndent54 { margin-left: 58px; } .cntIndent54 { margin-left: 55px; } ul.cntIndent72, ol.cntIndent72 { margin-left: 30px; } .cntIndent72 { margin-left: 71px; } ul.cntIndent90, ol.cntIndent90 { margin-left: 47px; } .cntIndent90 { margin-left: 87px; } ul.cntIndent108, ol.cntIndent108 { margin-left: 65px; } .cntIndent108 { margin-left: 104px; } ul.cntIndent126, ol.cntIndent126 { margin-left: 81px; } .cntIndent126 { margin-left: 121px; } ul.cntIndent144, ol.cntIndent144 { margin-left: 96px; } .cntIndent144 { margin-left: 138px; } /*IE7 hack for Indentation styles aboslute*/ * + HTML .cntIndent18 { margin-left: 29px; } * + HTML .cntIndent36 { margin-left: 44px; } * + HTML .cntIndent54, * + HTML OL.cntIndent54, * + HTML UL.cntIndent72 { margin-left: 68px !important; } * + HTML .ACECollapsed UL.cntIndent54 { margin-left: 40px !important; } * + HTML .ACECollapsed OL.cntIndent54 { margin-left: 66px !important; } * + HTML .cntArticleBody OL OL { margin-left: 20px !important; padding-top: 5px; /* optional*/ } * + HTML .cntIndent72, * + HTML OL.cntIndent72, * + HTML UL.cntIndent90 { margin-left: 90px !important; } * + HTML .cntIndent90, * + HTML OL.cntIndent90, * + HTML UL.cntIndent108 { margin-left: 110px !important; } * + HTML .cntIndent108, * + HTML OL.cntIndent108, * + HTML UL.cntIndent126 { margin-left: 130px !important; } * + HTML .cntIndent126, * + HTML OL.cntIndent126, * + HTML UL.cntIndent144, * + HTML OL.cntIndent144 { margin-left: 150px !important; } * + HTML .cntIndent144 { margin-left: 170px; } * + HTML .cntArticleBody OL UL, * + HTML .cntArticleBody UL UL { margin-left: 5px !important; padding-top: 5px; /* optional*/ margin-bottom: -10px; } * + HTML UL.cntIndent54 { margin-left: 45px !important; } * + HTML UL#bmkTOClist { margin-left: 0px !important; } * + HTML #bmkTOClinks UL { margin-left: -15px !important; } /************************************* O14 HA CSS ****************************************/ .cntArticleBody { font-family: Arial, Verdana; font-size: 1.2em; /* 12px */ line-height: 1.8em; /* 18px */ color: #454545; } .cntArticleBody .cntArticleBody { font-size: 1em; } .cntArticleBody p { padding: 0; margin: 0 0 10px inherit; line-height: 20px; } .cntArticleBody ul + p, ol + p { margin-top: -5px; margin-bottom: 5px; } .cntTOCindent, .cntTOCindent2 { padding: 0px 0px 0px 0px; margin: 2px 0px 0px 15px; } .cntTOCindent3 { padding: 0px 0px 0px 0px; margin: 2px 0px 0px 30px; } .cntTOCindent4 { padding: 0px 0px 0px 0px; margin: 2px 0px 0px 45px; } .cntTOCindent5 { padding: 0px 0px 0px 0px; margin: 2px 0px 0px 60px; } .cnt10mr { margin-right: 10px; margin-top: 2px; } .cnt10ml { margin-left: 10px; margin-top: 2px; } .cntArticleBody dd { margin: 0px 0px .6em 2em; } .cntArticleBody dt { font-weight: bold; } .cntArticleBody hr { color: #cccccc; height: 1px; padding: 0px; margin: 7px 0px 7px 0px; } * + html .cntArticleBody hr { color: #cccccc; height: 1px; padding: 0px; margin: 0px; } .cntcallout { font-family: Arial, Verdana; color: #454545; margin-top: 10px; } .cntCalloutImg { vertical-align: middle; } .cntCaptionTitle { font-family: Segoe UI, Arial, Verdana; color: #666666; font-weight: bold; } .cntCaptionBody { font-family: Segoe UI, Arial, Verdana; color: #666666; } .cntArticleBody .DropDown, .cntArticleBody .HidePopUp, .cntArticleBody .Glossary, .cntArticleBody .Glossarydef { text-decoration: none; } .cntArticleBody a:hover.DropDown, .cntArticleBody .HidePopUp:hover, .cntArticleBody .Glossary:hover { text-decoration: underline; } .cntArticleBody a.DropDown { color: #454545; } .cntArticleBody a:active.DropDown { color: #454545; font-weight: normal; top: 0px; } .cntArticleBody a:visited.DropDown { color: #454545; font-weight: normal; top: 0px; } .cntArticleBody .Glossarydef { color: #008C00; } .cntArticleBody .glossary { color: #660000; } .cntArticleBody .ui { font-weight: bold; } /********************************************O14 Training CSS **************************************/ DIV.cntTrainingInnerContent, DIV.cdTrainingInnerContent { } .cntTrainingInnerContent, .cdTrainingInnerContent { font-family: Arial, Verdana; font-size: 1.2em; /* 12px */ line-height: 1.6em; /* 16px */ color: #454545; } .cntTrainingInnerContent p, .cdTrainingInnerContent p { margin-top: 0px; margin-bottom: 8px; font-family: Arial, Verdana; } .cntTrainingInnerContent hr, .cdTrainingInnerContent hr { margin-left: 0%; text-align: left; margin-top: 20px; margin-bottom: 20px; clear: both; } * + html .cntTrainingInnerContent hr, .cdTrainingInnerContent hr { margin-left: 0%; text-align: left; margin-top: -10px; margin-bottom: 9px; clear: both; } .cntTrnOverviewTbl { width: 100%; } * + html .cntTrnOverviewTbl { margin-top: -5px; margin-bottom: 16px; } .cntTrnOverviewContentTbl p /* 653649 */ { margin-left: 0px !important; } .cntTrnOverViewImg { vertical-align: top; padding-right: 15px; width: 96px; } .cntTrnStartButton { vertical-align: top; float: left; margin-top: 20px; } .cntTrnStartButtonDiv { font-size: .73em; color: #252525; } * + html .cntTrnStartButtonDiv { font-size: .73em; color: #252525; vertical-align: top; float: left; margin-top: 20px; } .cntTrnOverViewTxt { font-family: Arial, Verdana; font-size: 1.17em; /* 14px */ line-height: 1.12em; /* 18px */ color: #454545; vertical-align: top; padding-right: 20px; margin-bottom: 0px; width: 382px; } .cntTrnOverViewTxt td { padding-right: 0px; width: 100%; } .cntTrnMetadata { font-family: Segoe UI, Arial, Verdana; font-size: 1em; /* 12px */ font-weight: bold; color: #333333; vertical-align: top; width: 237px; margin-top: 0px; } .cntTrnMetadata td { line-height: 1.3em; } * + html .cntTrnMetadata td { line-height: 1.3em; } .cntTrnLevel { font-family: Segoe UI, Arial, Verdana; font-size: 1em; /* 12px */ font-weight: normal; line-height: 1em; color: #454545; padding-left: 20px; } .cntTrnLength { font-family: Segoe UI, Arial, Verdana; font-size: 1em; /* 12px */ font-weight: normal; line-height: 1em; color: #454545; padding-left: 20px; } .cntTrnRating { font-family: Segoe UI, Arial, Verdana; font-size: .8em; /* 10px */ font-weight: normal; color: #999999; padding-left: 20px; } .cntTrnAppliesTo { font-family: Segoe UI, Arial, Verdana; font-size: 1em; /* 12px */ font-weight: normal; line-height: 1em; color: #454545; padding-left: 20px; } .cntDownloadDiv { font-family: Segoe UI, Arial, Verdana; font-size: 1em; /* 12px */ font-weight: normal; line-height: 1em; color: #454545; padding-left: 20px; } .cntDownloadDiv p { margin-left: 0px !important; margin-bottom: 0px; font-family: Segoe UI, Arial, Verdana; } .cntTrnOverviewContentTbl { width: 100%; } .cntTrainingInnerContent ul, .cdTrainingInnerContent ul /* 667023 */ { margin-left: -28px !important; /* 665552 */ } .cntTrainingInnerContent ul li, .cdTrainingInnerContent ul li { margin-bottom: 0px; padding-bottom: 8px !important; padding-left: 0px; } * + html .cntTrainingInnerContent ul, .cdTrainingInnerContent ul { margin-left: 17px !important; /* * - html is IE element selector */ } * + html .cntTrainingInnerContent ul li, .cdTrainingInnerContent ul li { padding-bottom: 8px; padding-left: 0px; } h2.cntTrnHeading2OverView { color: #454545; margin-top: 0px; margin-bottom: 15px; font-weight: normal; /* 625706 */ } .cntTrnGoal2Col { padding-right: 20px; vertical-align: top; width: 365px; } .cntTrnAbout2Col { vertical-align: top; width: 365px; padding-right: 20px; } .cntTrnGoal2Col p { margin-bottom: 15px; margin-left: 0px; } .cntTrnGoal3Col { width: 236px; padding-right: 20px; vertical-align: top; } .cntTrnAbout3Col { width: 237px; padding-right: 20px; vertical-align: top; } .cntTrnBegin { width: 237px; vertical-align: top; } .cntTrnGoal3Col p { margin-bottom: 15px; } .cntTrnAbout3Col p { margin-bottom: 15px; } .cntTrnBegin p { margin-bottom: 15px; } .cntTrnUnspokenOverview { width: 500px; } .cntTrnAudioOverview { width: 500px; } .cntTrnAudio { display: none; } .cntTrnAudioText { width: 500px; } .cntTrnUnspokenText { width: 500px; } .cntTrnBackground { width: 750px; vertical-align: middle; text-align: center; background-color: #eaf5fd; border: solid 1px #eaeaea; padding: 20px 0px 20px 0px; } .cntTrnImg { vertical-align: middle; text-align: center; } .cntTrnAudioVideoControl { vertical-align: middle; text-align: center; padding-right: 20px; padding-bottom: 15px; } .cntTrnBody { font-family: Arial, Verdana; color: #454545; } DIV#cntDivTestQuestion { font-family: Arial, Verdana; font-size: 1em; /* 12px */ line-height: 1.8em; /* 678379 */ font-weight: bold; padding-bottom: 18px; } * + html DIV#cntDivTestQuestion { font-family: Arial, Verdana; font-size: 1em; /* 12px */ line-height: 1.8em; /* 678379 */ font-weight: bold; margin-top: 0px; margin-bottom: 18px; /* 676234 */ } DIV#cntDivTestOption { margin-top: -17px; vertical-align: top; padding-left: 5px; padding-right: 5px; padding-bottom: 15px; } DIV#cntDivTestOption input /* 676234 */ { float: left; padding-bottom: 5px; } * + html DIV#cntDivTestOption { margin-top: -25px; margin-right: 2px; vertical-align: top; padding-left: 5px; margin-bottom: 15px; /* 676234 */ } DIV#cntDivTestOption input { margin-top: 0px; } DIV#cntDivTestAnswer { margin-top: -10px; } #cntDivTestAnswer textarea { width: 450px; height: 120px; margin-top: 0px; margin-bottom: 25px; } * + html textarea.cntTrnTestAnswer { width: 450px; height: 120px; margin-top: -20px; margin-left: 0px; margin-bottom: 0px; } .cntTrnPracticeTbl { margin-top: 18px; } .cntTrnPracticeBtn { padding-right: 20px; } .cntTrnPracticeHlp { vertical-align: top; } .cntTrnPracticeImg /* 668807 */ { float: left; margin-top: -1px; margin-left: -3px; } a.cntTrnPracticeHlpLink /* 668807 */ { padding-left: 0px; } .cntTrnPractProblem { font-family: Arial, Verdana; color: #454545; margin-bottom: -4px; /* 668807 */ } a.cntArticleMediaLink /* 641802 */ { text-decoration: none; font-size: 18px; } .cntTrnPracticeBtn /* 625848 */ { padding-right: 20px; } A.cntTrnPracticeLink { cursor: default; text-decoration: none; } A.cntTrnPracticeLink:hover { cursor: default; text-decoration: none; } .cntTrnPracticeBtn DIV { position: relative; line-height: 22px; float: left; height: 22px; color: #252525; cursor: default; text-decoration: none; } .cntTrnPracticeLeftDiv { width: 3px; background: url(/_layouts/images/general/button_left_side.png) no-repeat; } .cntTrnPracticeCenterDiv { text-align: center; vertical-align: middle; padding-left: 11px; padding-right: 11px; font-size: 1.2em; font-family: Segoe UI, Arial, Verdana; background: url(/_layouts/images/general/button_middle.png) repeat-x; } .cntTrnPracticeRightDiv { width: 3px; background: url(/_layouts/images/general/button_right_side.png) no-repeat; } .cntTrnPracticeBtn:hover .cntTrnPracticeLeftDiv { background: url(/_layouts/images/general/button_left_side_hover.png); } .cntTrnPracticeBtn:hover .cntTrnPracticeCenterDiv { background: url(/_layouts/images/general/button_middle_hover.png) repeat-x; } .cntTrnPracticeBtn:hover .cntTrnPracticeRightDiv { background: url(/_layouts/images/general/button_right_side_hover.png); } /************************************************ O14 PMG Styles **************************************************/ .cntPMGButton { vertical-align: middle; text-align: center; padding: 20px 0px 20px 15px; overflow: auto; /* Firefox fix */ } .cntPMGBlurb * { font-family: Segoe UI, Arial, Verdana; font-size: 1em; /* 12px 657082 */ line-height: 1.4em; /* 14px */ color: #454545; text-align: left; } .cntPMGBlurb p { margin-top: 0px; margin-bottom: 0px; } .cntPMGButton .cntPMGImage * { padding-right: 0px; /* 657082 */ margin: 15px auto 0px auto; /* 657082 */ display: inline; /* Firefox fix */ } .cntPMGButton .cntPMGImage { width: 100%; } .cntPMGButton .cntPMGImage img { padding-bottom: 15px; } .cntPMGButton .cnt10mr { position: relative; margin-top: 15px !important; left: 27%; } .cntPMGBlurb A { font-family: Segoe UI, Arial, Verdana; color: #4685df; text-decoration: none; } .cntPMGBlurb A:hover { font-family: Segoe UI, Arial, Verdana; color: #4685df; text-decoration: underline; } .cntPMGBlurb A:visited { font-family: Segoe UI, Arial, Verdana; color: #9965c3; text-decoration: none; } .cntPMGBlurb A:hover:visited { font-family: Segoe UI, Arial, Verdana; color: #9965c3; text-decoration: underline; } .cntPMGHr { color: #eaeaea; height: 1px; margin-top: 0px; margin-bottom: 0px; clear: both; } .cntPMGBody { vertical-align: top; padding: 0px 0px 0px 15px; clear: both; } .cntPMGBody p { margin-top: 0px; margin-bottom: 15px; } .cntPMGBody .cntPMGImage /* 657082 */ { float: left; padding-right: 0px; margin-bottom: 10px; margin-top: 0px; } .cntPMGBody .cntPMGImage img { padding-right: 10px; } .cntPMGCaption { font-family: Segoe UI, Arial, Verdana; font-size: 1.3em; /* 16px */ color: #333333; margin-bottom: 10px; margin-top: -15px; } .cntPMGCaption h3 /* 657082 */ { font-size: 1em; color: #333333; } /************************************************************* O14 Microsoft Service Agreement ****************************************/ .cntLegalTbl { display: none; } /************************************************************* Overrides for code styles **********************************************/ .cdSearchBlueLine .cdSearchBlueLineInlineLabel { color: #999; border-color: #bebdbd; text-transform: uppercase; font-size: 0.95em; } body { background: url(http://officeimg.vo.msecnd.net/en-us/files/869/762/ZA101834595.jpg) no-repeat center 20px; } body[class*="cdClientViewerBody"], body[class*="cdclv14Body"], body[class*="cdONBody"] { background: none; } /*********************************************************Override for lists in home page modules*****************************************/ .basiccontent_nb ol + ul[id="cntIndent1"], .basiccontent_nb ul + ol[id="cntIndent1"] { margin-left: 0px !important; } /*******************Download Center Beta Page HTML FH styles *************************************************************************************/ .Single_HTML_FH { margin-left: 21px; width: 100%; } .Single_HTML_FH_Cell1 { width: 160px; margin-right: 25px; float: left; } .Single_HTML_FH_Cell2 { width: 740px; float: left; } .Single_HTML_FH_Hero { width: 100%; height: 415px; } .Single_HTML_FH_Middle { width: 100%; margin-top: 30px; } .Single_HTML_FH_Lower { width: 100%; } .Single_HTML_FH_Hero_Row1 { width: 100%; height: 200px; margin-bottom: 15px; } .Single_HTML_FH_Hero_Row2 { width: 100%; height: 200px; } .cntFH_hero_image { width: 475px; height: 200px; margin-right: 15px; float: left; } .cntFH_newsBit { float: left; width: 228px; min-height: 198px; border: 1px solid #cccccc; margin-right: 15px; padding-bottom: 10px; } .Single_HTML_FH_Hero_Row1 .cntFH_newsBit { height: 198px; } .cntFH_newsBitModule_upper { padding: 15px 15px 0px; } .cntFH_newsBitModule_Lower { padding: 16px 15px 0px; } .Single_HTML_FH_Cell1 ul { margin: 0px; padding: 0px; } .Single_HTML_FH_Cell1 li { list-style-type: none; padding: 5px 0px; } .Single_HTML_FH_Cell1 ul li:first-child { padding-top: 0px; } .Single_HTML_FH_Cell1 ul li a, #DLCategories a { font-family: Segoe UI, Arial, Verdana; font-size: 1em; color: #666666; } .Single_HTML_FH h2 { font-family: Segoe UI, Arial, Verdana; font-size: 1.5em; color: #333333; font-weight: normal; margin: 0px; padding: 0px; } .cntFH_header2 { float: left; } .cntFH_feedback { float: right; font-size: 1.17em; font-family: Segoe UI, Arial, Verdana; margin-right: 20px; } .cntFH_feedback a { color: #0066CC; } .cnt_left_ad { width: 160px; height: 600px; padding: 0px; } .cntFH_newsBit_cell, .cntFH_newsBit_image { float: left; } .cntFH_newsBit_image { width: 48px; } .cntFH_tile_type1 .cntFH_price { margin-bottom: 10px; } .cntFH_tile_type2 .cntFH_price { margin-bottom: 10px; } .cntFH_newsBitModule_upper .cntFH_head { padding-bottom: 12px; } .Single_HTML_FH_Middle_Row { margin-bottom: 30px; } .Single_HTML_FH_Middle h2 { margin-bottom: 21px; } .Single_HTML_FH_Lower_Cell { width: 228px; margin-right: 15px; float: left; } .Single_HTML_FH_MiddleAndLower_Cell1, .Single_HTML_FH_MiddleAndLower_Cell2, .Single_HTML_FH_MiddleAndLower_Cell3 { width: 228px; margin-right: 15px; float: left; } .cntFH_midModule { margin-right: 15px; float: left; } .cntFH_midModule .cntFH_newsBit_image { margin-right: 10px; } .cntFH_newsBit_cell { width: 150px; } .cntFH_midModule .cntFH_newsBit_cell { width: 170px; } .cntFH_head { font-family: Segoe UI, Arial, Verdana; font-size: 1.5em; color: #333333; font-weight: bold; } .cntFH_midModule .cntFH_head { font-size: 1.33em; font-weight: normal; } .cntFH_lowerModule .cntFH_head { font-size: 1em; font-weight: normal; margin-bottom: 3px; } .cntFH_blurb { font-family: Segoe UI, Arial, Verdana; font-size: 1.17em; color: #666666; } .cntFH_head span { color: #666666; font-weight: bold; } .cntFH_lowerModule .cntFH_blurb { font-size: 1em; font-weight: normal; } .cntFH_price, .cntFH_price_WithNoPadding { width: 100%; font-family: Segoe UI, Arial, Verdana; font-size: 3em; color: #999999; font-weight: bold; } .cntFH_midModule .cntFH_price { margin: 23.5px 0px 5px; font-size: 2em; } .cntFH_midModule .cntFH_price_WithNoPadding { margin: 6px 0px 5px; font-size: 2em; } .cntFH_lowerModule { margin-top: 21px; padding-right: 6px; } .cntFHCompanyString { font-family: Segoe UI, Arial, Verdana; font-size: 1em; color: #666666; margin-top: -5px; } .cntFHMoreLink a { font-family: Segoe UI, Arial, Verdana; font-size: 1em; font-weight: bold; color: #0066CC; } * + html .cntFH_price { padding: 5px 0px 7px; } * + html .cntFH_newsBitModule_Lower { padding-top: 5px; } * + HTML .cntFH_tile_type2 .cntFH_price { margin-bottom: 0px; } * + HTML .cntFH_tile_type1 .cntFH_price { margin-bottom: 15px; } * + HTML .cntFH_price_WithNoPadding { padding-bottom: 11px; } /*Safari4 Mac and Safari5 */ @media screen and (-webkit-min-device-pixel-ratio:0) { .cntFH_newsBit .cntFH_blurb, .cntFH_midModule .cntFH_blurb { font-size: 1.1em; } } /* Download Tab Browse page styles*/ .Cnt_DataGridSilverlightDiv { width: 580px; height: 1520px; float: left; } .Cnt_NavigationSilverlightDiv { width: 250px; height: 720px; float: left; } .Cnt_SilverlightTitleLocation { padding-top: 32px; padding-bottom: 15px; font-family: Segoe UI, Arial, Verdana; color: #454545; font-size: 28px; } .Cnt_CategoryHeader { padding-bottom: 10px; } .Cnt_SilverlightInstaller { width: 580px; height: 300px; background: url(http://officeimg.vo.msecnd.net/en-us/files/827/068/ZA102475912.jpg); } .Cnt_DownloadsSilverlightInstaller { padding-top: 195px; padding-left: 27px; } .Cnt_DownloadsSilverlightNotInstall { padding-top: 10px; padding-left: 30px; line-height: 14px; } /* End Download Tab Browse page styles*/ /*Global Carousel Styles */ .cntGlobalCarousel { width: auto; display: none; height: auto; } .cntGlobalCarousel #cntGlobalCarouselLeftArrow, .cntGlobalCarousel #cntImgGCLeftArrow1, .cntGlobalCarousel #cntImgGCLeftArrow2, .cntGlobalCarousel #cntImgGCLeftArrow3 { float: left; } .cntGlobalCarousel #cntGlobalCarouselRightArrow, .cntGlobalCarousel #cntImgGCRightArrow1, .cntGlobalCarousel #cntImgGCRightArrow2, .cntGlobalCarousel #cntImgGCRightArrow3 { float: left; } .cntGlobalCarousel #cntfilmstrip, .cntGlobalCarousel #cntfilmstrip1, .cntGlobalCarousel #cntfilmstrip2, .cntGlobalCarousel #cntfilmstrip3 { float: left; } UL#cntfilmstrip, UL#cntfilmstrip1, UL#cntfilmstrip2, UL#cntfilmstrip3 { position: relative; padding-bottom: 0px; list-style-type: none; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; } UL#cntfilmstrip LI, UL#cntfilmstrip1 LI, UL#cntfilmstrip2 LI, UL#cntfilmstrip3 LI { margin: 0px; display: inline; } .cntGlobalCarouselThumbnail { z-index: 2; margin-left: 5px; margin-right: 5px; cursor: pointer; padding-top: 1px; } .cntGlobalCarouselThumbnailHover { z-index: 2; background-image: url('http://officeimg.vo.msecnd.net/en-us/files/656/795/ZA102461864.png'); background-repeat: no-repeat; cursor: pointer; margin-left: 4px; margin-right: 4px; padding-left: 1px; padding-right: 1px; padding-top: 1px; } .cntGlobalCarouselImgthumbnail { z-index: 1; width: 100px; height: 100px; cursor: pointer; } .cntGlobalCarouselImgthumbnailHover { z-index: 1; width: 100px; height: 100px; margin-top: 0px; cursor: pointer; } .cntGlobalCarouselFilmstrip { position: relative; overflow: hidden; } .cntGlobalCarouselFilmstrip { padding-bottom: 0px; display: block; float: left; height: auto; margin-left: 5px; overflow: hidden; } .cntGlobalCarouselNav { position: relative; width: 20px; display: table-cell; height: 128px; vertical-align: middle; cursor: pointer; } .cntGlobalCarouselMiddleArrow { position: relative; margin: auto; vertical-align: middle; top: 30px; } .cntGlobalCarouselClear { height: 0px; clear: both; } .cntGlobalClear { clear: both; } .cntCarouselItemContainer { float: left; } .cntCarouselItemContainer IMG { margin-top: 0px; } .cntCarouselItemContainer p { margin-top: 0px; text-align: center; color: #666; } .cntvWebAppDesc { font-family: Segoe UI Semibold, Arial, Verdana; font-size: 1.42em; color: #545454; margin-top: 0px; line-height: 1em; padding-left: 17px; padding-top: 26px; } .cntWebAppDescspan { font-family: Segoe UI Light, Arial, Verdana; font-size: .94em; color: #4685DF; line-height: 1.5em; } .cntvWebAppHead { font-family: Segoe UI Light, Arial, Verdana; font-size: 1.75em; color: #666; margin-bottom: 0px; } .cntFHaCarouselhr { background-color: #eaeaea; margin: 0px 0px 20px 0px; } .cntView { background-image: url('http://officeimg.vo.msecnd.net/en-us/files/292/142/ZA102461861.png'); background-repeat: no-repeat; } .cntDLTreeTrigger { cursor: pointer; display: block; } .cntDLTreeBranch { display: none; margin-left: 10px !important; padding-top: 5px; } .cntDLTreeTrigger, .cntDLTreeLeaf { padding-bottom: 8px; padding-left: 10px; margin-left: 3px; list-style-type: none; } .cntDLTreeTrigger { margin-left: -10px; } .cntDLCategories { margin-left: 0px; } /*video page styles */ .cntVidLeftSection { float: left; width: 200px; height: 100%; width: 155px; } .cntLeftNavR { width: 150px; height: 1px; color: #eaeaea; } .cntVidLeftSection .cntPHead { font-family: Segoe UI, Arial, Verdana; font-size: 1.83em; color: #454545; margin-bottom: 32px; margin-top: 0px; } .cntVidSubmit { margin-bottom: 16px; } .cntGroupSec { margin-bottom: 16px; } .cntGroupHead { font-weight: bold; margin-bottom: 8px; } .cntCatname { color: #4685df; padding-left: 5px; margin-bottom: 4px; cursor: pointer; } .cntCatname:hover { text-decoration: underline; } .cntCatSelected, .cntVidSelected { font-weight: bold; color: #454545; } .cntRightSection { height: 100%; margin-left: 165px; width: 770px; } .cntHeroSection { visibility: hidden; height: 310px; margin-right: 15px; margin-bottom: 0px; background-color: #fff; position: relative; z-index: 200; padding-bottom: 15px; } .cntHImage { cursor: pointer; } #cnt_filmstrip_table { width: 100%; height: 100%; } .cnt_FH1FilmstripImageWithNoPadding { margin-top: 20px; } .cntHeroSection #cnt_filmstrip_row { background: none; } .cnt_VidFilmstripCellWithNoPadding { padding-top: 18px; } .cntHeroContainer { margin-left: 340px; width: 411px; text-align: left; } .cntHeroContainer h2 { color: #333333; font-size: 1.66em; font-weight: 500; } .cntHeroContainer h2.cntRelLinks { font-size: 1em; color: #333333; } .cntRelLink { margin-top: 0px; margin-bottom: 2px; } .cntVideoGallery { border: solid 1px #CCC; margin-right: 15px; overflow-y: scroll; -ms-overflow-y: scroll; height: 460px; padding-left: 3px; } #cntAllVids { width: 100%; margin-top: 0px; padding-top: 5px; background-color: #fff; position: relative; z-index: 200; height: 100px; } #cntAllVids p { text-align: right; margin-right: 20px; } .cntAsset { float: left; width: 125px; margin: 15px 10px 5px 10px; height: 150px; } .cntAsset #atho { margin-left: 2px; margin-right: 2px; margin-top: 11px; width: 125px; height: 100px; border: 1px #CCC solid; position: relative; } .cntAsset #atho image { margin-top: 11px; } .cntAsset #ato { margin-left: 5px; color: #4685DF; } .cntprovname { clear: both; } /* hover */ #cntHoveroverlay { position: absolute; margin: -10px; margin-left: -8px; padding: 10px; } #cntHoverWrapper #assetTitle { margin-top: -8px; font-family: Segoe UI bold, Arial, Verdana; color: #333333; font-weight: bold; padding-top: 15px; margin-bottom: 16px; } #cntHoverWrapper #assetDescription { margin-bottom: 16px; color: #666666; margin-right: 15px; } #cntHoverWrapper .cntHmisc { color: #454545; } .cntDvHover { background-color: transparent; } #cntHover { width: 285px; min-height: 150px; padding: 15px; padding-bottom: 5px; } .cntDvHover .cntDvHBT { padding: 0px; width: 100%; background: url('/_layouts/images/general/shadow_top_left.png') no-repeat left bottom; } .cntDvHover .cntDvHBT .cntDvHBR { background: url('/_layouts/images/general/shadow_top_resizable.png') no-repeat right bottom; height: 5px; margin-left: 6px; } .cntDvHover .cntDvHBC { width: 100%; background: url('/_layouts/images/general/shadow_left_side.png') repeat-y left 50%; clear: both; } .cntDvHover .cntDvHBC .cntDvHBR { background: url('/_layouts/images/general/shadow_right_side.png') repeat-y right 50%; margin-left: 6px; } .cntDvHover .cntDvHBC .cntDvHBR .cntDvHoverContent { padding: 0px; margin-right: 8px; } .cntDvHover .cntDvHBB { padding: 0px; width: 100%; background: url('/_layouts/images/general/shadow_bottom_left.png') no-repeat left top; clear: both; } .cntDvHover .cntDvHBB .cntDvHBR { background: url('/_layouts/images/general/shadow_bottom_resizable.png') no-repeat right top; height: 9px; margin-left: 6px; } .cntDvHoverContent { background-color: white; } .cntHoverGlass { background-color: Black; width: 126px; height: 100px; float: left; filter: alpha(opacity=50); opacity: .50; background-image: url('http://officeimg.vo.msecnd.net/en-us/files/849/948/ZA102489262.png'); background-repeat: no-repeat; background-position: 45px 35px; cursor: pointer; margin-top: -1px; margin-left: -4px; } #cntHoveroverlayI { float: left; visibility: hidden; } #cntHoverWrapper { float: left; width: 320px; position: relative; margin-left: 5px; margin-top: -7px; } #cntHoverLArrow { width: 15px; margin-left: -3px; float: left; margin-top: 20px; position: absolute; } #cntHoverLArrow img { width: 15px; } #cntHoverRArrow { width: 15px; margin-top: 20px; position: absolute; margin-left: 310px; } #cntHoverRArrow img { width: 15px; } #cntIframeContainer { margin-top: 35px; } #cntMainPopupContent { margin: auto; } #cntMainPopupContent #assetTitle, #cntMainPopupContent h2 { font-size: 1.33em; margin-top: 15px; margin-bottom: 20px; color: #333333; } #cntMainPopupContent h2 { font-weight: 500; } #cntMainPopupContent .cntRelLinks { font-weight: 500; color: #666666; font-size: 1em; padding-left: 3px; margin-bottom: 0px; } #cntMainPopupContent .cntRelLink { padding-left: 3px; } .cntglobal_close_img { margin-left: 30px; } #cntVidFeedback { margin-top: 37px; } @-moz-document url-prefix() { .cntHeroSection { padding-bottom: 45px; } #assetThumb{margin-top:12px;} } /* end video page styles */ /*Start Main HP */ .cntFullWidth { width: 810px; float: left; margin-top: 10px; margin-bottom: -18px; padding-left: 10px; } .cntHero { width: 820px; float: left; margin-top: 10px; margin-bottom: 15px; } .cntHeroLeft { width: 350px; float: left; margin-right: 0px; } .cntHeroRight { width: 470px; float: left; } .cntHeroResumes { width: 490px; float: left; padding-top: 27px; } .cntHeroResume { width: 140px; padding-left: 20px; padding-top: 5px; float: left; height: 190px; margin-top: 20px; } .cntHeroResumeBorder { width: 140px; padding-left: 20px; padding-top: 5px; float: left; height: 190px; border-left: solid 1px #cccccc; margin-top: 20px; } .cntHeroResumeTitle { color: #fc8c08; font-size: 17px; line-height: 17px; margin-top: 5px; } .cntHeroResumeSubTitle { color: #929292; font-size: 16px; line-height: 16px; } .cntDownload { width: 92px; height: 26px; background: url(http://officeimg.vo.msecnd.net/en-us/files/605/923/ZA102500794.jpg) no-repeat; text-align: center; font-size: 14px; padding-top: 3px; margin-top: 15px; font-weight: bold; } .cntDownload a:hover { text-decoration: none; } .cntHeroHeading { width: 350px; float: left; } .cntHeroCTA { width: 340px; background: none; margin-top: 15px; padding-left: 10px; float: left; } .cntHeroCTASub { margin-bottom: 10px; font-size: 13px; line-height: 17px; } .cntLeftResources { margin-top: 10px; margin-bottom: 20px; float: left; width: 550px; padding-left: 10px; } .cntRightHelp { margin-left: 10px; margin-top: 10px; margin-bottom: 0px; float: right; width: 240px; font-size: 16px; } .cntRightHelpTitle { width: 260px; float: left; font-size: 20px; color: black; margin-bottom: 15px; } .cntAppHelpLeft { float: left; width: 118px; margin-bottom: 12px; } .cntAppHelpRight { float: left; width: 122px; margin-bottom: 12px; } .cntWebAppIcon { width: 70px; float: left; margin-left: 25px; text-align: center; } .cntWebAppIconTitle { width: 70px; float: left; font-size: 16px; text-align: center; line-height: 16px; } .cntAppTitle, .cntAppTitleSub { padding-left: 4px; float: left; padding-top: 4px; } .cntAppTitleSub { margin-top: 5px; width: 140px; } .cntAppIcon { float: left; } .cntTitleWAC { float: left; font-size: 24px; color: black; width: 350px; } .cntFullWidthSubHead { float: left; font-size: 18px; color: black; width: 790px; border-top: solid #eaeaea 1px; padding:15px 0px 12px 0px; } .cntFullWidthSubHead3, .cntFullWidthSubHeadIcon { float: left; font-size: 18px; color: black; margin-bottom: 12px; } .cntFullWidthSubHeadIcon { margin-bottom: 5px; padding-bottom: 15px; width: 400px; padding-top: 8px; } .cntFullWidthSubHead2 { float: left; font-size: 14px; color: black; width: 780px; margin-top: 10px; } .cntResourcesTitleFullWidth { float: left; font-size: 20px; color: black; width: 810px; margin-bottom: 5px; margin-top: 10px; } .cntResourcesTitleLeft { width: 550px; float: left; font-size: 20px; color: black; } .cntTextPromo, .cntTextPromoFeedback { border: #ccc 1px solid; padding: 5px 5px 5px 10px; margin: 20px 0 15px 0; float: left; width: 803px; background: #f1f1f1; color: #666666; } .cntTextPromoFeedback { margin-bottom: 10px; margin-top: 15px; } .cntTextPromoText { font-size: 14px; } .cntTextPromoLink { font-size: 13px; } .cntResourceLinks { margin-bottom: 4px; margin-top: 5px; float: left; width: 550px; font-size: 16px; } .cntHero_n{ margin-bottom:0px; margin-top:10px; float:left; } .cntTextPromo_nf{ padding: 0px 0px 5px 0px; margin: 0px 0 15px 0; } .cntTextPromo_n { padding: 5px 0px 5px 0px; margin: 20px 0 15px 0; } .cntTextPromo_n img { margin: 0px 0px 0px 5px; vertical-align:-5px; } .cntTextPromo_n span { vertical-align: -2px; } .cntTextPromoText_n { font-family: Segoe UI Light, Arial, Verdana; font-size: 14px; color: #666; margin-left: 5px; } .cntTextPromoText_n strong { font-family: Segoe UI Semibold, Arial, Verdana; } .cntTextPromoLink_n { font-family: Segoe UI Semibold, Arial, Verdana; font-size: 14px; color: #CCC; margin-left: 5px; } .cntFullWidth_n { margin-top: 10px; } .cntTitleWAC_n { font-family: Segoe UI Light, Arial, Verdana; font-size: 24px; color: #000; margin-bottom: 18px; } .cntAppTitle_n { padding-left: 4px; font-size:16px; } .cntAppIcon_n { vertical-align: middle; } .cntFullWidthSubHead { border-top: none; line-height:normal; } .cntSectionHead { font-family: Segoe UI, Arial, Verdana; font-size: 18px; color: #000; margin-bottom: 5px; } .cntSectionSubHead { font-family: Segoe UI Light, Arial, Verdana; font-size: 18px; color: #000; margin-bottom: 5px; } .cntRightText { margin-left:18px; } .cntCreateTemplImg{ display:table-cell; padding-top:5px; } .cntCreateTemplImgW{ height:75px; } .cntThm1 { width: 179px; float: left; text-align: left; } .cntThm3 { width: 146px; float: left; text-align: left; margin-right: 0px; } .cntSectionTitle { color: #454545; font-size: 16px; margin-bottom: 10px; } .cntStackImg1 { float: left; margin: 10px 5px 0px 0px; } .cntBreakTop { margin-bottom: 3px; } .cntBreakBot { margin-top: 3px; } .cntRightHelpTitle { margin-top: 20px; } .cntHeroRightTitle{ margin:40px 0px 5px 0px; } .cntHeroRightSubTitle { margin-bottom:8px; } .cntHeroRightTitle, .cntHeroRightSubTitle{ font-family:Segoe UI Light, Arial, Verdana; font-size:17px; color:#666; } .cntHeroSubTitleNot{ color:#ca2909; } .cntHeroCTA_n { margin-top:0px; } .cntHeroResumes_n, .cntHeroResume_n{ padding:0px; margin:0px; } .cntHeroResume_n{ width:160px; height:170px; } .cntHeroResumeTitle_n { font-family:Segoe UI Light, Arial, Verdana; font-size:14.5px; color:#666; } .cntHeroLeft_n { width:312px; float:left; } .cntHeroRight_n{ float:left; width:508px; } .cntPopSrchInner { float: left; width: 85px; height: 85px; } .cntPopSrchInner img { margin: 0 15px 0px 15px; } .cntPopSrchInner p { text-align: center; font-size: 13px; margin-top: 3px; } .cntRightHelpTitle_n { line-height:normal; } .cntHomeBtmPad { padding-left:20px; } /*End main hp */ /* tabs */ .cntTabTop { padding-right: 10px; float: left; padding-bottom: 3px; color: #454545; } .cntResourceTab { display: none; } .cntSelTab, .cntSelTab a, .cntSelTab a:hover { color: #000; font-weight: bold; cursor: default; text-decoration: none; } /*end tabs*/ .cntPromoContent { margin-top: 10px; margin-bottom: 20px; float: left; width: 810px; padding-left: 10px; } .cntPromoContent img { float: left; } .cntThm { width: 108px; float: left; margin-right: 12px; padding-left: 2px; text-align: left; } .cntThm2 { width: 108px; float: left; margin-right: 25px; padding-left: 2px; text-align: left; } .cntThmDL, .cntThmDLImage { width: 108px; float: left; font-size: 16px; line-height: 16px; padding-top: 35px; text-align: left; } .cntThmDLImage { margin-left: 8px; padding-top: 59px; } .cntThmDL span, .cntThmDLImage span { font-size: 20px; } .cntHomeFeat1 { margin-top:27px; } .cntHomeFeat2 { margin-top:27px; } .cntHomeFeat3 { } .cntRatingStars { margin-top: 5px; padding-left: 5px; } .cntThmTitle { padding-top: 6px; font-size: 14px; float: left; line-height: 15px; width: 112px; color: black; padding-left: 5px; } .cntThmSubTitle { font-size: 13px; color: #797979; padding-top: 2px; float: left; width: 108px; line-height: 15px; padding-left: 5px; } .cntDownload a, .cntDownload a:visited { color: #4f83ea; } .cntHeroResumeTitle a, .cntHeroResumeTitle a:visited { color: #fc8c08; } .cntGlobalCarousel { clear: both; } .cntCarouselItemContainerNew { float: left; width: 112px; margin-right: 12px; padding-left: 2px; } .cntCarouselItemContainerNew IMG { margin-top: 0px; } .cntCarouselItemContainerNew p { margin-top: 0px; color: #666; font-size: 14px; text-align: left; padding-left: 10px; line-height:normal; } .cntContentFooter { clear: both; padding-top: 15px; margin-bottom:45px; } /*Downloads HP 14.2 styles*/ .cntGrayBar { background-color: #F1F1F1; border: solid 1px #CCCCCC; font-family: Segoe UI, Arial, Verdana; font-size: 1.16em; color: #666666; padding: 5px 20px 5px 20px; width: 678px; } .cntFHFooter { float:left; margin:0px 20px 0px 0px; } .cntAlignRight { text-align:right; } /* Image Submission Page */ .cntISCont p { font-size: 1.21em; line-height: 1.21em; } .cntISCont li { font-size: 1.21em; line-height: 1.21em; } .cntISCont li li { font-size: 1em; } #cntISMainTitle { font-size: 3.833em; line-height: 1.417em; font-weight: normal; font-family: Segoe UI, Arial, Verdana; text-align: center; margin-bottom: 30px; } #cntISHeroImg { text-align: center; margin-bottom: 20px; } .cntISSubtitle { font-size: 1.833em; color: #FF8D00; line-height: -20px; } .cntISSubtitle a, .cntISSubtitle a:hover, .cntISSubtitle a:focus { color: #FF8D00; text-decoration: none; } #cntISCallToActionInnerRight { margin-top: 35px; padding: 25px 20px; background-color: #DDDDE0; font-size: 1em; line-height: 1em; } #cntISimgSample, #cntISimgAndFocus, #cntISfinalInstr { margin-bottom: 30px; } #cntISIllustrationTitle h3, #cntISPhotoTitle h3 { margin: 10px 0 -10px 0; } .cntISBold { font-weight: bold; } .cntISWhiteHR { background-color: #FFFFFF; border-width: 0; color: #FFFFFF; height: 2px; } #cntISSuitableImg { margin-top: 20px; } #cntISCallToActionRightInner { margin-top: 20px; height: 70px; } #cntISCallToActionRightInner img { padding: 0 20px; } #cntISLightAndFocus h2, #cntISGetReady h2 { line-height: 1.5em; } /* Template Submission Page */ .cntTSCont p { font-size: 1.21em; line-height: 1.21em; } .cntTSCont li { font-family:Segoe UI, Arial, Verdana; font-size: 1.21em; line-height: 1.21em; } .cntTSCont li li { font-size: 1em; } #cntTSMainTitle { font-size: 3.417em; line-height: 1.417em; font-weight: normal; font-family: Segoe UI SemiBold, Arial Bold; } #cntTSHeroImg { text-align: center; margin-bottom: 20px; } .cntTSSubtitle { font-size: 1.833em; color: #FF8D00; } .cntTSImageFloat { float: left; padding-right: 10px; } #cntTScallToActionRightInner { margin-bottom: 20px; height: 100px; } #cntTScallToActionRightInner img { padding: 35px; } #cntTScallToActionList { margin-top: 35px; padding: 25px; background-color: #DDDDE0; font-size: .833em; line-height: 1em; } #cntTScallToActionList a { display: block; } .cntTSWhiteHR { background-color: #FFFFFF; border-width: 0; color: #FFFFFF; height: 2px; } .cntTSBold { font-weight: bold; font-size: 1.2em; } .cntTSSubtitle a, .cntTSSubtitle a:hover, .cntTSSubtitle a:focus { color: #FF8D00; text-decoration: none; } #cntTSCallToActionLowerRight, #cntTSCreate, #cntTSGetReady, #cntTSHeroSection { margin-bottom: 30px; } h3.cntTSImageExcel { text-indent: 32px; height: 30px; line-height: 32px; background: url(http://officeimg.vo.msecnd.net/en-us/files/223/552/ZA102543689.jpg) no-repeat 0 -30px; } h3.cntTSImagePPT { text-indent: 32px; height: 30px; line-height: 32px; background: url(http://officeimg.vo.msecnd.net/en-us/files/223/552/ZA102543689.jpg) no-repeat 0 -67px; } h3.cntTSImagePub { text-indent: 32px; height: 30px; line-height: 32px; background: url(http://officeimg.vo.msecnd.net/en-us/files/223/552/ZA102543689.jpg) no-repeat 0 -103px; } h3.cntTSImageWord { text-indent: 32px; height: 30px; line-height: 32px; background: url(http://officeimg.vo.msecnd.net/en-us/files/223/552/ZA102543689.jpg) no-repeat 0 -139px; } .cntTSFontOverride { font-size:1.21em } .cntTSHROrange { background-color: #FF8D00; border-width: 0; height: 2px; } /*Images HomePage Redesign*/ .cntHeroText { font-family: Segoe UI, Arial, Verdana; font-size: 4em; color: #666666; padding-top: 15px; padding-bottom: 40px; text-align: center; } .cntImgSrchModDiv { background: url(http://officeimg.vo.msecnd.net/en-us/files/633/995/ZA102607589.png) no-repeat; text-align: center; margin-left:110px; height: 94px; } .cntImgSrchMod { width: 455px; background: #F2F2F2; color: #fff; margin: 0 8px; font-family: verdana,arial; font-size: 9pt; font-weight: bolder; text-align: center; } .cntImgChkBox { margin: 4px 4px 2px 18px; vertical-align: top; cursor: pointer; } .cntImgCatText { font-family: Segoe UI, Arial, Verdana; font-weight: Normal; font-size: 1.082em; color: #333333; } a:visited.cntImgCatText { color: #333333; } a.cntImgCatText { text-decoration: none; } .cntImgType { font-family: Segoe UI, Arial, Verdana; font-size: 1.167em; font-weight: normal; color: #666666; text-transform: uppercase; } .cntImgCat { vertical-align: text-bottom; margin-left: -140px; padding: 10px 0px 0px 20px; } .cntImgSearchBox { border: solid 2px #FFC200; margin: 15px 22px 16px 95px; width: 412px; height: 30px; background: #FFFFFF; } /* IE7 */ * + html .cntImgSearchBox { margin-left:-80px; } .cntImgBingSearch { padding: 3px 0px 3px 12px; vertical-align: middle; cursor: pointer; } .cntImgPopSearches { padding: 25px 0px 0px 10px; } .cntImgPopularText { font-family: Segoe UI, Arial, Verdana; font-size: 1.167em; font-weight:lighter; color: #999999; padding-bottom: 15px; text-align: center; } .cntImgPopSrchDiv { text-align: center; float: left; padding: 0px 15px 10px 15px; margin-right: 7px; } .cntImgPopSrch { padding-bottom: 8px; } .cntImgPopSrchLinks { padding: 20px 0px 0px 25px; font-family: Segoe UI, Arial, Verdana; font-size: 1em; } .cntImgHr { border: 1px none #CCCCCC; width: 820px; clear: both; } .cntImgFeatured { font-family: Segoe UI, Arial, Verdana; font-size: 1.833em; color: #929292; padding: 33px 0px 30px 0px; } .cntImgFSHead { font-family: Segoe UI Light, Segoe UI, Arial, Verdana; font-weight: lighter; font-size: 1.5em; color: #666666; float: left; } .cntImgSeeMore { float: right; font-family: Segoe UI, Arial, Verdana; font-size: 1.167em; color: #4685df; padding-right: 25px; } .cntImgRLHeadings { font-family: Segoe UI Light, Segoe UI, Arial, Verdana; color: #666666; font-size: 24px; font-weight:lighter; line-height: 1.082em; padding-bottom: 10px; } .cntImgVideoClips { vertical-align: top; padding-top: 5px; margin-right:10px; float:left; height: 100px; } .cntImgRLBlurb { font-size: 1.2em; vertical-align: top; line-height: 1.167em; padding-bottom: 50px; } .cntImgRLBlurbText { padding-bottom: 8px; } .cntImgRLBlurbLink { font-size: 0.92em; line-height: 1.5em; } .cntImgFooter { width: 100%; padding-top:40px; } .cntImgFHFooter { float: left; margin: 30px 110px 0px 0px; } .cntImgFooter1 { width: 42%; float: left; padding-right:20px; } .cntImgFooter2 { width: 42%; float: right; padding-right:20px; } .cntImgFootNote { font-family: Segoe UI, Arial, Verdana; font-size: 2.32em; font-weight: lighter; color: #666666; font-weight: lighter; } .cntImgFeedback { font-family: Segoe UI, Arial, Verdana; font-weight: bold; font-size: 1.5em; color: #4685df; } .cntImgGalleryItem { font-family: Segoe UI, Arial, Verdana; font-size: 1.167em; } /*Images Homepage Carousel Styles*/ .cntGCItemContainer { float: left; margin-right: 4px; margin-left: 4px; } .cntGCItemContainer img { margin-top: 0px; } .cntGCItemContainer p { margin-top: 0px; color: #666; font-size: 14px; text-align: left; padding-left: 0px; line-height:14px; } .cntImgGCThumbnail { z-index: 2; cursor: pointer; padding:9px; border: solid 1px #CCCCCC; } .cntImgGCThumbnailHover { z-index: 2; cursor: pointer; padding: 9px; border: solid 1px #FC8C08; } .cntImgGCThumbnailHoverOut { padding: 9px; border: solid 1px #CCCCCC; } .cntImgGCImgThumbnail { z-index: 1; width: 120px; height: 120px; cursor: pointer; text-align:center; } .cntImgGCImgThumbnailHover { z-index: 1; cursor: pointer; } .cntImgGCFilmstrip { position: relative; overflow: hidden; } .cntImgGCFilmstrip { padding-bottom: 0px; display: block; float: left; height: auto; margin-left: 5px; overflow: hidden; } .cntImgGCNav { position: relative; width: 20px; display: table-cell; height: 140px !important; vertical-align: middle; cursor: pointer; } .cntImgGCMiddleArrow { position: relative; margin: auto; vertical-align: middle; top: 58px; } .cntImgGCClear { height: 0px; clear: both; } .cntImgDownloadText { /* font-family: Segoe UI, Arial, Verdana; font-size: 1.5em; color: #666666; background-color: #FFFFFF; filter:alpha(opacity=75); opacity:0.75; text-transform: uppercase; display: none; position:relative; left:15px; bottom: 60px; width:100%; height:30px; */ } .cntImgDownloadText a { text-decoration: none; } #cntImgGCLeftArrow1, #cntImgGCLeftArrow2, #cntImgGCLeftArrow3 { margin-right: 5px; } #cntImgGCRightArrow1, #cntImgGCRightArrow2, #cntImgGCRightArrow3 { margin-left: 5px; } /* Home Page styles for "Popular Images" */ div#cntHPPopImg { position:relative; height:200px; width:666px; float:left;} span.cntHPTwoBirds, span.cntHPWomRed, span.cntHPLightBulbs, span.cntHPFlowerGrow, span.cntHPHoliday, span.cntHPArtistic, span.cntHPBlueScooter, span.cntHPBulldog { background-image: url(http://officeimg.vo.msecnd.net/en-us/files/819/324/ZA102498430.jpg); } span.cntHPTwoBirds { display: block; height: 163px; width: 180px; position: absolute; text-indent: -9999px; left: 0px; top: 0px; background-position: 0 0; } span.cntHPWomRed { display: block; height: 90px; width: 80px; position: absolute; text-indent: -9999px; left:181px; top: 0px; background-position: -181px 0;} span.cntHPLightBulbs { display: block; height: 90px; width: 80px; position: absolute; text-indent: -9999px; left: 181px; top: 96px; background-position: -181px -96px;} span.cntHPFlowerGrow {display: block; height: 90px; width: 150px; position: absolute; text-indent: -9999px; left: 267px; top: 0px; background-position: -267px 0px; } span.cntHPHoliday { display: block; height: 80px; width: 81px; position: absolute; text-indent: -9999px; left:267px; top: 96px; background-position: -276px -96px; } span.cntHPArtistic { display: block; height: 90px; width: 99px; position: absolute; text-indent: -9999px; left: 423px; top: 0px; background-position: -423px 0px; } span.cntHPBlueScooter { display: block; height: 90px; width: 98px; position: absolute; text-indent: -9999px; left: 423px; top: 96px; background-position: -423px -96px; } span.cntHPBulldog { display: block; height: 160px; width: 125px; position: absolute; text-indent: -9999px; left: 527px; top: 0px; background-position: -525px 0px; } /*Start Templates HP */ .cntSubLeftTitleR { font-size: 14px; } .cntTemplHeroHead{ font-size:48px; color:#666; margin:15px 0px 40px 0px; width:99%; text-align:center; word-break:keep-all; } .cntTemplateTitle { color: #929292; font-size: 20px; margin-top: 30px; margin-bottom: 30px; line-height:normal; } .cntSrchContainer{ width:100%; height:95px; } .cntTemplSrchMod{ width:601px; height:94px; background-image:url('http://officeimg.vo.msecnd.net/en-us/files/633/995/ZA102607589.png'); margin:auto; } .cntTemplSpacer{ height:32px; width:100px; } .cntTmplSearchBox{ margin:auto; width:531px; height:30px; border: 2px #ffc200 solid; } .cntSrchDD{ color:#666666; margin-right:16px; cursor:pointer; float:left; min-width:83px; margin-top:6px; } .cntSrchDDHL{ color:#333; } .cntSrchDDText{ float:left; min-width:69px; margin-top:2px; } .cntSrchFilters { display: none; padding:0px 6px 25px 6px; left: 520px; top: 136px; border: 1px solid #CCCCCC; background-color: #FFFFFF; position: absolute; z-index: 125; box-shadow: 0 0 10px #CCCCCC; -moz-box-shadow: 0 0 10px #CCCCCC; -webkit-box-shadow: 0 0 10px #CCCCCC; -ms-filter: progid:DXImageTransform.Microsoft.Shadow(color='#CCCCCC', Direction=135, Strength=3) progid:DXImageTransform.Microsoft.Shadow(color='#CCCCCC', Direction=0, Strength=3); filter: progid:DXImageTransform.Microsoft.Shadow(color='#CCCCCC', Direction=135, Strength=3) progid:DXImageTransform.Microsoft.Shadow(color='#CCCCCC', Direction=0, Strength=3); } .cntSrchFilters ul { list-style-type: none; margin: 10px 0px 0px 0px; padding-left:0px; } .cntSrchFilters ul li { font-size: 12px; color: #333; margin-top: 5px; cursor: pointer; } .cntSrchFilterHighlight { color: #000; font-weight: bold; } .cntMoreFilterVals { display: none; } .cntPopSrch { margin: 20px 0px 32px 0px; font-size: 14px; text-align:center; } .cntPopSrch a { margin: 0px 21px 0px 0; font-family: Segoe UI, Arial, Verdana; font-size: 14px; } .cntPopSrchInnerT { font-family: Segoe UI Light, Arial, Verdana; font-size: 14px; color: #666666; margin-right:21px; } .cntTemplateSubTitle, .cntTemplateSubTitle1 { color: #333333; font-size: 1.4em; margin: 35px 0 10px 5px; font-family: Segoe UI Light, Arial, Verdana; } .cntTemplateSubTitle1 { margin-top: 50px; } .cntTemplImgLinkCtnr { float: left; margin-right: 12px; font-size: 14px; width:170px; } .cntTitleCtr { margin: 0px 0px 0px 10px; color: #000; } .cntAppCtr { color: #999; margin: 0px 0px 0px 10px; } .cntTempThmDL { font-size: 16px; color: #4685df; margin-top: 30px; } .cntTempThmDL span { font-size: 20px; } .cntTempThmDL { margin-left: 0px; } .cntVSpacer { height: 65px; } .cntRightListHeadings { color: #666666; font-size: 24px; padding-bottom: 10px; font-family: Segoe UI Light, Arial, Verdana; } .cntTmplBL { margin: 0px 0px 10px 10px; } .cntTmplBLDiv { margin-left: 57px; } .cntTmplBLCtnr { margin-bottom: 55px; float:left } .cntTmplBLCtnr img { float: left; } .cntTemplFB p { margin-left: 10px; font-family: Segoe UI, Arial, Verdana; font-weight:lighter; font-size: 2.32em; color: #666; } .cntTemplFB p span { font-family: Segoe UI, Arial, Verdana; font-weight:bold; font-size: 18px; color: #4685df; } .cntSrchHiLiteBox { height: 52px; padding-top: 15px; padding-left: 22px; background-color: #CCC; }/* .cntsearchTemplates { height: 32px; border: solid 1px #ccc; float: left; color: #999; background-color: #FFF; position: relative; z-index: 150; } */ .cntTemplInputSep{ margin-right:4px; float:left; } .cntTemplInputSep img{ vertical-align:middle; margin-top:2px; } .cntTempArrow{ margin-left:4px; float:left; } .cntSearchText { margin: 0; padding: 5px 0 3px 5px; float: left; font-style:italic; height: 25px; font-size: 1.33em; border-width: 0; background: none transparent scroll repeat 0% 0%; outline-style: none; outline-color: invert; outline-width: 0px; color: #999; width:348px; max-width:384px; max-height:25px; resize:none; overflow:hidden; } .cntImgSearchText { width:320px; max-width:320px; font-family: Segoe UI, Arial, Verdana; font-size: 1.33em; font-style: italic; color: #999999; } .cntSearchTextf { color:#000000; font-style:normal; } .cntSrchBtn { vertical-align:middle; cursor: pointer; margin-top:3px; } .cntHRSpace { } .cntGlobalBigBox { clear: both; text-align: center; height: 35px; } .cntTemplCarousel { position: absolute; top: 0; left: 0; width:720px; margin-left:50px; display:none; } .cntOuterCarousel { position: relative; margin-left:0px; } .cntBgCarousel { width: 100%; height: 111px; border-bottom:1px #DDDDDD solid; margin:0px 0px 15px 65px; width:666px; } .cntBgInnerCarousel{ background-repeat: no-repeat; background-position: 0px 32px; background-image: url("http://officeimg.vo.msecnd.net/en-us/files/591/098/ZA102580907.png"); width:520px; height:100%; margin-left:50px; } .cntCarouselTemplTextBox, .cntCarouselTemplTextBox a { font-size:16px; color:#4685df; margin-top:0px; } .cntCarouselItemTemplContainerNew { margin: 0px 10px 0px 10px; height: 160px; /*new*/ } .cntCarouselItemTemplContainerNew p /*new*/ { position: absolute; top: 125px; overflow: visible; white-space: nowrap; } .cntGlobalCarouselTemplImgthumbnail { z-index: 1; cursor: pointer; } .cntGlobalCarouselImgTemplthumbnailHover { z-index: 110; /*out width: 100px; cursor: pointer; */ box-shadow: 0 0 10px #969696; -moz-box-shadow: 0 0 10px #969696; -webkit-box-shadow: 0 0 10px #969696; -ms-filter: "progid:DXImageTransform.Microsoft.Shadow(color='#CCCCCC', Direction=135, Strength=3) progid:DXImageTransform.Microsoft.Shadow(color='#CCCCCC', Direction=0, Strength=3) progid:DXImageTransform.Microsoft.Shadow(color='#CCCCCC', Direction=315, Strength=3)"; filter: progid:DXImageTransform.Microsoft.Shadow(color='#CCCCCC', Direction=135, Strength=3) progid:DXImageTransform.Microsoft.Shadow(color='#CCCCCC', Direction=0, Strength=3) progid:DXImageTransform.Microsoft.Shadow(color='#CCCCCC', Direction=315, Strength=3); } .cntTemplCarouselThumbnailHover { margin: 3px 7px 0px 0px; z-index: 110; position: relative; } .cntTemplCarousel .cntGlobalCarouselFilmstrip { padding-bottom: 3px; border-right: 10px solid transparent; border-left: 10px solid transparent; } .cntGlobalCarouselTemplNav { float: left; } UL#cntTemplfilmstrip { position: relative; list-style-type: none; height: 160px; clear: both; margin: 0px; padding-bottom: 3px; margin-left: -40px; } .cntGlobalCarouselTemplThumbnail { z-index: 2; margin-left: 5px; margin-right: 5px; cursor: pointer; padding-top: 1px; } UL#cntTemplfilmstrip LI { margin: 0px; display: inline; } UL#cntTemplfilmstrip .cntCarouselItemTemplContainerNew /*new*/ { float: left; position: relative; z-index: 30; } .cntTemplCarouR{ padding-left:12px; } .cntBar { height: 2px; background-color: #CCCCCC; z-index: 5; position: relative; margin-top: 0px; margin-left: 20px; width: 560px; } .cntTemplList { list-style-type: none; padding-left:0px; margin-left:0px; } .cntTemplList li { font-size: 16px; vertical-align: middle; margin-bottom:10px; } .cntTemplList li img { margin-right: 10px; } .cntTemplList li span.cntTemplMore { margin-left: 42px; } .cntTemplList li span { margin-top: -15px; } .cntTemplList2 { padding-left:0px; margin-left:0px; } .cntTemplList2 li { font-size: 14px; margin-bottom: 10px; list-style-type: none; } .cntTemplBrowse { margin-bottom:25px; } .cntTemplCommRes{ margin-left:-35px; } #cnttemHP_Subfeature_1, #cnttemHP_Subfeature_2{ height:155px; } .cntSubLftSml { font-size:1.1em; margin-top:7px; } /*End Templates HP */ /* 2007 F1 Page Styles 4/8/2011 */ .cntHelpRow{height:auto; width:333px; padding-right:22px;} .cntHelpCont1{float:left;width:48%;margin:0px 0px 0px 0px; } .cntHelpCont2{margin:0px 0px 0px 49%; width:48%;} .cntHelpSeeMore{margin:-20px 0px 20px 27px; font-size:1.3em;} .cntHelpSeeAll{clear:both; text-align:right; margin-top:0px; width:333px; font-size:1.3em; padding-right:22px;} .cntHelpAd2010{text-align:center; padding-top:10px;} .cntHelpLeftImg{float:left;width:74px;} .cntHelpHead{position:relative; margin:0px 0px 0px 70px; width:auto;} .cntHelpBrowse{height:140px; vertical-align:top; width:333px; padding-right:22px;} .cntHelpBrowse1{float:left; width:48%;margin:-10px 0px 0px 0px;} .cntHelpBrowse2{margin:0px 0px 0px 49%; width:48%;} /*End 2007 F1 Page Styles */ /*BEGIN gTable Styles */ #cnt_gTable_Main {border:1px #eaeaea solid;} .cnt_gTable_nav_cell_icon {text-align: left; padding-bottom: 0px; background-color: transparent; padding-left: 0px; width: 10px; padding-right: 0px; font-size: 1em; vertical-align: middle; padding-top: 0px} .singleFHc .cnt_gTable_nav_cell_icon {text-align: left; padding-bottom: 0px; background-color: transparent; padding-left: 0px; width: 30px; padding-right: 0px; font-size: 1em; vertical-align: middle; padding-top: 0px} .cnt_gTable_nav_cell_text {text-align: left; background-color: transparent; font-size: 1em; vertical-align: middle; border-right: #eaeaea 1px solid} .cnt_gTable_content_tab .cntsingleFHbTable TD {vertical-align: top} .cnt_nav_cell_table_selected .cnt_gTable_nav_cell_text {border-bottom: #eaeaea 1px solid; background: url("http://officeimg.vo.msecnd.net/en-us/files/444/494/ZA101825675.jpg") no-repeat right center; border-top: #eaeaea 1px solid; border-right: medium none} #cnt_gTable_left_nav_0 .cnt_nav_cell_table_selected .cnt_gTable_nav_cell_text {border-top: medium none} #cnt_gTable_left_nav_0 .cnt_nav_cell_table_selected .cnt_gTable_nav_cell_icon {border-top: medium none} .cnt_nav_cell_table_selected .cnt_gTable_nav_cell_text A {color: #454545; text-decoration: none} .cnt_nav_cell_table_selected .cnt_gTable_nav_cell_icon {border-bottom: #eaeaea 1px solid; border-top: #eaeaea 1px solid} #cnt_gTable_left_nav_container_cell {vertical-align: top} #cnt_gTable_content_container_cell {vertical-align: top} .cnt_gTable_top_tab_selected {text-align: center; background-color: #fff; height: 30px; color: #454545; font-size: 1em; vertical-align: middle; border-top: #eaeaea 1px solid; border-right: #eaeaea 1px solid} .cnt_gTable_top_tab {border-bottom: #eaeaea 1px solid; text-align: center; background: url("http://officeimg.vo.msecnd.net/en-us/files/622/964/ZA101819738.png") repeat-x left bottom; height: 30px; color: #454545; font-size: 1em; vertical-align: middle; border-top: #eaeaea 1px solid; cursor: pointer; border-right: #eaeaea 1px solid} .cnt_nav_cell_table_selected {width: 120px; background-color: #ffffff; height: 32px} .cnt_nav_cell_table {background-color: #fafafa; width: 120px; height: 32px; cursor: pointer} /*END gTable Styles */ /*GSWO Styles*/ .cntGSWOgTableHeader {font-size:1.143em; font-family:Segoe UI, Arial, Verdana; color:#ff6600;} .cntGSWOgTableContent {font-size:1em; font-family:Segoe UI, Arial, Verdana; color:#333333; margin:5px 0px 16px 0px;} .cntGSWOgTableContent a {font-size:1em; font-family:Segoe UI, Arial, Verdana; color:#4685df;} .cntGSWOMigrateGuideImg {width:105px; height:81px; border:0px none #000000;} #cntGSWOgTableContainer #cnt_gTable_Main { width:880px;} #cntGSWOgTableContainer .cnt_gTable_content_tab { width:735px; padding:0px 0px 0px 0px;} #cntGSWOgTableContainer .cnt_nav_cell_table_selected { width:145px;} #cntGSWOgTableContainer .cnt_nav_cell_table { width:145px;} #cntGSWOgTableContainer .cnt_gTable_nav_cell_icon {padding-top:7px; padding-left:5px;} *:first-child + html #cntGSWOgTableContainer .cnt_gTable_nav_cell_icon {padding-top:0px; padding-left:5px;} #cntGSWOgTableContainer .cnt_gTable_nav_cell_text a {font-size:1em; vertical-align:middle; color:#333333;} #cntGSWOgTableContainer #cnt_nav_cell_table_11 .cnt_gTable_nav_cell_text {line-height:1em;} .cntGSWOCenter { text-align: center;} hr.cntGSWOHRTop { margin-top: 30px; margin-bottom: 5px;} *:first-child + html hr.cntGSWOHRTop {margin-top: 30px; margin-bottom: -10px;} hr.cntGSWOHRBot { margin-top: 5px; margin-bottom: 25px;} *:first-child + html hr.cntGSWOHRBot {margin-top: 5px; margin-bottom: 0px;} ul.cntGSWOList li{list-style-type:none;margin-left:-40px;} ul.cntGSWOgTableList li{list-style-type:none;margin-left:-40px; line-height:2em;} ul.cntGSWOList {margin-top:5px;} ul.cntGSWOgTableList {margin-top:5px;} .cntGSWOTitle {font-family: Segoe UI, Arial, Verdana; color:#000000; font-size:1.667em;} .cntGSWOSub {font-family: Segoe UI, Arial, Verdana; color:#333333; font-size:1.167em;} .cntTextPromoText_n span, .cntGS_Promo3 img, .cntGS_Promo1 img, .cntGS_Promo2 img{vertical-align:middle;} div.cntGSWOVR {height:190px;border-right-style:solid; border-right-width: 1px; border-color:#cccccc;} div.cntGSWOTitlePad{height:15px;} div.cntGSWOSubPad{height:20px;} cntGSWOOrange {font-family: Segoe UI, Arial, Verdana; color:#ff6600; font-size:1.333em;} cntGSWOBlue a {font-family: Segoe UI, Arial, Verdana; color:#4685df; font-size:1.167em;} .cntGSWOCol1 {float:left; margin-left:25px; margin-right:20px; width:400px;} .cntGSWOCol2 {width:265px; margin-left:445px; margin-right:25px;} .cntGSWOspacer{width:100%; height:16px;} .cntGSWOSecTitle {margin-top:30px;} .cntGSWOIPTabCol1 {float:left; margin-left:25px; margin-right:20px; width:332px;} .cntGSWOIPTabCol2 {width:333px; margin-left:352px; margin-right:25px;} .cntGSWOArrowButton{vertical-align:bottom;} .cntGSWOWAImg {margin-left:55px;} /* Downloads 14.2 Redesign styles */ .cntFloatL { float:left; } .cntFloatR { float:right; } .cntDldHeroImg { float: left; margin-right: 9px; } .cntDldHero4 { margin-top: 6px; margin-bottom: 20px; } .cntDldPromoText span { vertical-align: 3px; } .cntDldMidModule { float: left; padding-bottom: 20px; margin-right: 8px; width: 170px; } .cntDldMidModTitle { font-family: Segoe UI, Arial, Verdana; font-size: 1.167em; line-height: 1em; color: #333333; padding-bottom: 6px; } .cntDldMidModDesc { font-family: Segoe UI, Arial, Verdana; font-size: 0.92em; line-height: 1em; color: #999999; padding-bottom: 6px; } .cntDldMidModLink { font-family: Segoe UI, Arial, Verdana; font-size: 1em; line-height: 1em; } .cntDldLowerMod { width: 228px; margin-right: 15px; margin-top: 20px; float: left; } .cntDldOffUpd { margin-right: 35px; } /* Transition to the Office Ribbon*/ .cntTORBorder { border: 1px solid #999999; height: auto; width: 878px; } .cntTORTabSelected { display: block; height: 39px; width: 150px; line-height: 1em; vertical-align: middle; background: #999999; border-bottom: 1px solid #999999; color: White; } .cntTORListContainer { height: auto; width: 150px; float: left; border-right: 1px solid #999999; } .cntTORContent1, .cntTORContent2, .cntTORContent3, .cntTORContent4, .cntTORContent5 { height: auto; width: 728px; float: left; } .cntTORContent2, .cntTORContent3, .cntTORContent4, .cntTORContent5 { display: none; } ul.cntTORImgList { margin-left: -50px; } ul.cntTORImgList li { list-style: none none inside; display: block; float: left; padding: 10px; text-align: center; font-size: .75em; } #cntTOROffice2010_2, #cntTOROffice2010_4, #cntTOROffice2010_6 { display: none; } .cntTORPageTitle { font-size: 4em; line-height:1em; font-weight: normal; color: #666666; } .cntTORPageTitleLight { font-size: 4em; line-height:1em; font-weight: lighter; color: #999999; } .cntTORBody { font-size: 1.167em; line-height: 1.5em; color: #666666; } .cntTOROrangeBorder { border: 1px solid #fa9836; padding: 15px; margin-left: 15px; } .cntTORSmallTitle { font-size: 1.5em; line-height:1.21em; color: #333333; } .cntTORSectionTitle { font-size: 2em; line-height:1em; color: #666666; } .cntTORSectionTitle a { color: #4685df; text-decoration: none; } .cntTORBlurbTitle { font-size: 2em; color: #ea7907; } .cntTORBlurbImg { float: right; } .cntTORClear { clear: both; } .cntTORList ul { } ul.cntTORList li { margin-left: -38px; list-style-type: none; margin-bottom:0px; font-size:.917em; } ul.cntTORList li a { color: #4685df; text-decoration: none; font-size: 1.167em; line-height: 1.5em; } .cntTORTable td{ height:39px; width:130px; border-bottom:solid 1px #999999; margin:0; padding-right:10px; padding-left:10px; line-height:1.1em; cursor:pointer; font-size:1.1em; } .cntTORTabSelected{ color:#FFFFFF; background-color:#999999; vertical-align:middle; } .cntTORTabSelected span.cntTORNotch { display:block; background:#FFFFFF; float:right; height:14px; width:10px; position:relative; left:11px; z-index:21; } .cntTORCTTitle { font-family: Segoe UI Light, Arial, Verdana; font-size: 2.5em; color: #999999; width: 618px; margin-left: 30px; margin-right: 30px; line-height:1em; } .cntTORCTInner1 { margin-left: 30px; margin-right: 15px; display: block; height: auto; width: 393px; float: left; } .cntTORCTInner2 { margin-left: 15px; margin-right: 30px; height: auto; width: 245px; display: block; float: left; } .cntTORBL { font-size: 1.167em; color: #333333; } .cntTORLinks a { font-size: .917em; text-decoration: none; } .cntTORTable img { display: none; } .cntTORTabSelected img { left: 132px; position: absolute; display:inline; } .cntTORTabSelected span{ position:relative; } .cntTORMultiple img { top: 7px; } .cntTORSingle img { bottom: 0px; } span.cntTORTab { position:relative; top: -2px; } #cnt_global_popup_dialogcontent, #cnt_global_popup_dialogcontent0, #cnt_global_popup_dialogcontent1 { height:auto; margin:auto; display:none; } /* Support All Up Styles */ .cntsupHPMain {font-size:1.16em; height:1180px;} .cntsupHP_HeroText {font-size:3.49em;} .cntsupHP_GCContainer {width:440px; display:inline; float:left; margin-left:8px;} UL#cntGCfilmstrip140 LI { margin: 0px; display: inline;} UL#cntGCfilmstrip140, UL#cntGCfilmstrip120, UL#cntGCfilmstrip110 {position: relative; padding-bottom: 0px; list-style-type: none; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;} .cntsupHPGCTableCell {height:85px; width:74px; vertical-align:bottom;} #cntGCfilmstrip140, #cntGCfilmstrip120, #cntGCfilmstrip110, #cntsupHPLeftArrow1, #cntsupHPLeftArrow2, #cntsupHPLeftArrow3, #cntsupHPRightArrow1, #cntsupHPRightArrow2, #cntsupHPRightArrow3 {float: left; } .cntsupHPNav {padding-top:50px; width:29px;} .cntsupHPFilmstrip {width:360px; overflow:hidden; display:block; position:relative; float:left;} .cntsupHP_GCItemContainer {float: left;width: 76px;height:92px;text-align:center; display:block;} .cntsupHP_GCItemContainer img {margin-top: 0px;margin-bottom: 0px;} .cntsupHP_GCItemContainer p {font-family:Segoe UI, Arial, Verdana;margin-top: 0px;color: #666;font-size: 1em;text-align: center;padding-left: 0px;line-height:1em;} .cntsupHP_CarouselItemContainer, .cntsupHP_GlobalCarouselThumbnail {height:92px; display:block;} .cntsupHP_GlobalCarouselThumbnail p {text-align:center;} .cntSearchCarouselImgthumbnail {width:34px; height:34px;} .cntSearchCarouselImgthumbnailHidden {display:none;} .cntSearchCarouselImgthumbnailGlow {width:36px; height:36px;} .cntsupHPPopSearch {width:820px; margin-left:40px; margin-right:40px;} .cntsupHPPopSearchProductName {color:#333333; font-family:Segoe UI, Arial, Verdana; float:left;} .cntsupHPPopSearchCategory {color:#333333; font-family:Segoe UI Light, Arial, Verdana; display:inline; margin-left:7px; margin-top:15px;} #cntsupHP_popSearchContainerShow {width:840px; margin:5px 40px 0px 0px;} .cntsupHP_popsearcheslink {width:163px; float:left; margin:0px 5px 5px 0px;} #cntsupHP_SearchContainerTop {background-image:url('http://officeimg.vo.msecnd.net/en-us/files/165/087/ZA102666880.png'); background-repeat:no-repeat; background-position:top; height:16px; width:920px; display:block; margin-left:10px; margin-right:10px;} #cntsupHP_SearchContainerBottom {background-image:url('http://officeimg.vo.msecnd.net/en-us/files/464/775/ZA102666874.png'); background-repeat:no-repeat; background-position:bottom; height:15px; width:920px; display:block; margin:0px 10px 30px 10px;} .cntsupHP_SearchContainer {background-image:url('http://officeimg.vo.msecnd.net/en-us/files/623/703/ZA102666877.png'); background-repeat:repeat-y; background-position:top; height:250px; width:920px; display:block; padding-top:4px; margin-left:10px; margin-right:10px; overflow:visible} .cntsupHPSrchContainer{width:100%; margin:4px 0px 10px 0px;} .cntsupHPProdSelector {width:520px; margin:-13px 190px 0px 190px;} .cntsupHPHidden {display:none;} .cntsupHPSearchBox {margin:auto; width:531px; height:30px; border: 2px #ffc200 solid;} .cntsupHPSearchText {width:453px; max-width:453px; font-size:1.16em;} .cntsupHPSupportVersionContainer {float:left; display:inline; width:70px; height:59px; margin:20px 8px 0px -16px; border-right:1px solid #eaeaea;} *:first-child + html .cntsupHPSupportVersionContainer {margin-top:13px;} .cntsupHPSupportVersion {width:62px;} .cntsupHPSupportVersionItem {width:54px; height:12px; margin:1px 1px 1px 1px; display:block; color:#333333; padding:8px 0px 8px 5px;} .cntsupHPSupportVersionItem a {color:#333333; text-decoration:none;} .cntsupHPSupportVersionFind {width:58px; vertical-align:middle; padding:0px 0px 0px 5px; margin-bottom:15px;} .cntsupHPSupportVersionFind a {color:#4685df;} *:first-child + html .cntsupHPSupportVersionFind {width:58px; vertical-align:middle; padding:0px 0px 0px 5px; margin-top:-10px; margin-bottom:15px;} #cntsupHPSelectedVersion {width:59px; height:17px; padding:5px 0px 5px 5px; list-style:none; border:1px none #666666; margin:-10px 0px 0px -41px; color:#333333; background-image:url('http://officeimg.vo.msecnd.net/en-us/files/586/133/ZA102676765.png');} *:first-child + html #cntsupHPSelectedVersion {margin-top:-22px;} .cntsupHPSelectedVersionText {width:62px; height:28px; display:block; text-align:center; margin-left:-3px;} #cntsupHPSupportVersion {list-style:none;} .cntsupHPSupportVersionMenu {width:51px;} .cntsupHP_ModulesCol3 {width:258px; height:360px; float:left; padding:20px 20px 20px 20px; border:1px solid #eaeaea; margin-bottom:30px;} .cntsupHP_Module {width:580px; height:61px;} .cntsupHP_Module img {float:left; margin-right:40px;} .cntsupHP_ModuleContainer {width:580px; height:397px; margin-left:30px; margin-right:20px; float:left;} .cntsupHP_ModulesAnswers {width:558px; margin:40px 0px 40px -20px; padding:20px 20px 20px 20px; border:1px solid #eaeaea; float:left;} .cntsupHP_AnswersLogo {float:left; margin-right:10px; margin-top:20px;} .cntsupHP_AnswersSearchBox {border:1px solid #cccccc; height:30px; width:388px; float:left; margin-top:30px;} #cntsupHP_AnswersInput {font-family: Segoe UI, Arial, Verdana; font-size:1em; color:#000000; width:322px; height:28px; border:none; float:left; font-style:normal;} .cntsupHP_AnswersSearch {float:left; width:61px;} .cntsupHP_AnswersHead {margin-bottom:10px;} .cntsupHP_AnswersText {margin-bottom:0px;} .cntsupHP_ModulesAd {width: 300px; height:267px; margin:0px 0px 0px 630px;} .cntsupHP_ModuleHead {font-family:Segoe UI Light, Arial, Verdana; font-size:1.8em; color:#333333;} .cntsupHP_ModuleLink {font-family:Segoe UI, Arial, Verdana; font-size:1.2em; color:#666666; margin:18px 0px 0px 0px; line-height:1.9em;} .cntsupHP_ModuleHeadDL {font-family:Segoe UI, Arial, Verdana; font-size:1.6em; color:#333333; text-decoration:none;} .cntsupHP_ModuleDLHead {font-family: Segoe UI Semibold, Arial, Verdana; color:#666666; font-size:1em; margin:10px 0px 0px 0px;} .cntsupHP_ModuleDLLink {font-family: Segoe UI, Arial, Verdana; color:#4685df; font-size:1em;} .cntsupHP_ModuleDLFoot {font-family: Segoe UI, Arial, Verdana; font-size:1em; color:#666666; margin-top:20px;} .cntsupHP_ModuleDLFootLink {color:#666666;} .cntsupHP_ModuleDLFoot2 {font-family: Segoe UI Semibold, Segoe UI, Arial, Verdana; font-weight:bold;} .cntsupHPFootNote {font-family: Segoe UI Light, Arial, Verdana; font-size: 2em; color: #666666;} .cntsupHPFeedback {font-family: Segoe UI Semibold, Arial, Verdana; font-weight: bold; font-size: 1.2em; color: #4685df;} .cntsupHP_Feedback {margin:0px 20px 30px 20px;} .cntsupHP_feedbackhrTop {background-color: #eaeaea; color:#eaeaea; margin: 0px 0px 25px 0px;} .cntsupHP_feedbackhrBottom {background-color: #eaeaea; color:#eaeaea; margin: 25px 0px 0px 0px;} .cntsupHP_hr {background-color: #eaeaea; color:#eaeaea; margin: 25px 0px 25px 0px;} .cntsupHPSupportVersionOptionsDiv {z-index:9; position:absolute; margin:0px 0px 0px -52px; display:none; width:86px; height:180px; background:#ffffff url('http://officeimg.vo.msecnd.net/en-us/files/595/255/ZA102666867.png') no-repeat bottom;} *:first-child + html .cntsupHPSupportVersionOptionsDiv {margin:27px 0px 0px -75px;} .cntsupHPSupportVersionMenu:hover .cntsupHPSupportVersionOptionsDiv, .cntsupHPSupportVersionMenu.over .cntsupHPSupportVersionOptionsDiv {display: block;} .cntsupHPSelectedVersionInput {width:33px; height:15px; border:none; background-color:transparent; margin:-3px 0px 0px 2px;} *:first-child + html .cntsupHPSelectedVersionInput {width:30px; height:15px; border:none; background-color:transparent; margin:-2px 0px 0px 42px;} .cntsupHPSupportVersionHR {width:55px; color:#cccccc; margin:2px 0px 10px 0px;} .cntsupHPSupportVersionMenuRight {background:url('http://officeimg.vo.msecnd.net/en-us/files/668/611/ZA102666871.png') repeat-y right; height:166px; width:12px; float:left;} .cntsupHPSupportVersionMenuLeft { background:url('http://officeimg.vo.msecnd.net/en-us/files/755/068/ZA102666869.png') repeat-y left; height:166px; width:13px; float:left;} .cntsupHPSupportVersionMenuMiddle {float:left; width:61px;} .cntsupHPMiddleArrow {margin-top:1px;} /* vNext Downloads Add-Ins Styles */ .cntMOEDL_FH1Title {font-family:Segoe UI Semibold, Arial, Verdana; font-size:2.571em; color:#525051; margin-bottom:40px;} .cntMOEDLLeftHead {font-family:Segoe UI, Arial, Verdana; font-size:1.286em; margin-bottom:6px; color:#525051;} .cntMOEDLRightHead, .cntMOEDLFeaturedCategory {font-family:Segoe UI, Arial, Verdana; font-size:2em; color:#525051;} .cntMOEDLRightHead {margin-bottom:19px;} .cntMOEDLCategories {font-family:Segoe UI, Arial, Verdana; font-size:1em; line-height:16px; margin-top:14px; color:#3e3c3d;} .cntMOEDLFeatureRowTop {height:187px; width:729px; display:block; margin-bottom:30px;} .cntMOEDLFeatureRow {height:187px; width:729px; display:block; margin-bottom:15px;} .cntMOEDLTopFeatured {padding:12px 12px 12px 12px; border:3px solid #D9D9D9; width:203px; height:157px; display:block; float:left;} .cntMOEDLTopAppTitle {font-family:Segoe UI, Arial, Verdana; font-weight:bold; font-size:1.143em; color:#0072bc; margin-bottom:3px; line-height:18px;} .cntMOEDLTopAppFrom {font-family:Segoe UI, Arial, Verdana; font-size:.857em; color:#525051; margin-bottom:3px;} .cntMOEDLTopAppCost {font-family:Segoe UI, Arial, Verdana; font-weight:bold; font-size:1.714em; color:#3e3c3d; float:left; margin:-1px 10px 0px 0px;} .cntMOEDLTopAppDL { background-image:url('http://officeimg.vo.msecnd.net/en-us/files/527/783/ZA102676839.png'); font-family:Segoe UI, Arial, Verdana; font-size:1.143em; color:#292828; width:96px; height:25px; margin:1px 0px 0px 0px; display:block; float:left; vertical-align:middle; text-align:center; padding-top:3px;} .cntMOEDLFeatured {width:233px; height:150px; display:block; float:left; padding:0px 0px 0px 0px;} .cntMOEDLFeatured2 {margin-left:15px; margin-right:15px;} .cntMOEDLFeatureAppTitle {font-family:Segoe UI, Arial, Verdana; font-size:1.143em; color:#0072bc; margin-bottom:2px;} .cntMOEDLFeatureAppRatings {font-family:Segoe UI, Arial, Verdana; font-size:1em; color:#525051; margin-bottom:5px;} .cntMOEDLFeatureAppStars {width:80px; height:16px;} .cntMOEDLFeatureAppFrom {font-family:Segoe UI, Arial, Verdana; font-size:.857em; color:#525051;} .cntMOEDLFeatureAppCost {font-family:Segoe UI, Arial, Verdana; font-size:1.286em; color:#525051; margin:10px 10px 0px 0px; float:left;} .cntMOEDLFeatureAppDL { background-image:url('http://officeimg.vo.msecnd.net/en-us/files/638/128/ZA102676840.png'); font-family:Segoe UI, Arial, Verdana; width:76px; height:22px; color:#3e3c3d; margin-top:5px; display:block; float:left; vertical-align:middle; text-align:center; padding-top:1px;} .cntMOEDLFeaturedSeeAll {font-family:Segoe UI Semibold, Arial, Verdana; font-size:1.143em; color:#0072bc; margin:0px 7px 20px 0px; display:block; text-align:right;} .cntMOEDLFeaturedCategory {margin:0px 0px 20px 0px; width:100%; display:block;} .cntMOEDLAppIcon {height:64px; width:64px; margin-bottom:5px; display:inline;} .cntMOEDLSingle_HTML_FH_Cell1 { width: 149px; margin-right: 17px; float: left; font-size:1.16em;} .cntMOEDLSingle_HTML_FH_Cell2 { width: 729px; margin-right: 30px; float: left; font-size:1.16em;} /* Homepage Office WebApps header style remove at the end of promo */ .cntHPHeaderCol2 {position: relative; top:-10px;} .cntHPHeaderTable {height:302px;} .cntHPHeaderTitle {font-size:3em; line-height:1em;} .cntHPHeaderText {font-size:1.1em; padding-left:10px;} .cntHPHeaderButton {height:30px; vertical-align:bottom;} /* Homepage Office365 Header */ .cntHPBG {position: relative;} .cntHPHeaderBuyNow {position:absolute; top:185px; left:25px;} .cntHPHeaderTryNow {position:absolute; top:185px; left:190px;} /* AWS Mobile Content */ .cntMobileArticle { font-size: 15px; line-height: 150%; font-family: Lucida Grande, Helvetica, Arial, sans-serif; color: #666; } ------------AwZAEu8L0Fx8UXBllPLKFH Content-Disposition: inline; filename=HX010218905.css Content-Type: text/css; name=HX010218905.css Content-Location: http://officeimg.vo.msecnd.net/en-us/files/101/590/HX010218905.css?b=5567%2E4000 Content-Transfer-Encoding: 8bit /* Latin America es-HN; Mexico es-MX; Spain es-ES 3082 */ /* code styles */ #cdTrainTitle {font-family:Century Gothic,Arial,sans-serif;} #cdTemplateTitle,#cdPortalTitle,#cdQuizTitle,#cdAssistanceCatTitle,#cdTemplateCatTitle {font-family:Century Gothic,Arial,sans-serif;} /* end code styles */ /*Bug 18563 - Office 14 Localization*/ .spnFileDetLbl {width:90px; white-space:normal; margin:0px 2px 0px 0px} .spnFileDetData {width:144px; white-space:normal} .cntPopSrch {width:860px; text-align:center; margin-left:0px} .cntTemplHeroHead {width:99%; margin-right:0px; margin-left:0px; text-align:center} .cntSrchDDText {min-width:100px} .cntSearchText {width:320px} .cntSrchFilters {left:494px} .cntCarouselTemplTextBox, .cntCarouselTemplTextBox A {font-size:1.1em} ------------AwZAEu8L0Fx8UXBllPLKFH Content-Disposition: inline; filename=MicrosoftAjax.js Content-Type: application/x-javascript; name=MicrosoftAjax.js Content-Location: http://officeimg.vo.msecnd.net/_layouts/MicrosoftAjax.js?b=5567%2E4000 Content-Transfer-Encoding: Base64 ZnVuY3Rpb24gVUxTb1o3KCl7dmFyIG89bmV3IE9iamVjdDtvLlVMU1RlYW1OYW1l PSJPZmZpY2UgT25saW5lIENvcmUgQ29kZSI7by5VTFNGaWxlTmFtZT0iTWljcm9z b2Z0QWpheC5qcyI7cmV0dXJuIG87fQ0KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLyBDb3B5cmln aHQgKEMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl ZC4NCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KLy8gTWljcm9zb2Z0QWpheC5qcw0KRnVuY3Rpb24u X190eXBlTmFtZT0iRnVuY3Rpb24iO0Z1bmN0aW9uLl9fY2xhc3M9dHJ1ZTtGdW5j dGlvbi5jcmVhdGVDYWxsYmFjaz1mdW5jdGlvbihiLGEpe1VMU29aNzo7cmV0dXJu IGZ1bmN0aW9uKCl7VUxTb1o3Ojt2YXIgZT1hcmd1bWVudHMubGVuZ3RoO2lmKGU+ MCl7dmFyIGQ9W107Zm9yKHZhciBjPTA7YzxlO2MrKylkW2NdPWFyZ3VtZW50c1tj XTtkW2VdPWE7cmV0dXJuIGIuYXBwbHkodGhpcyxkKX1yZXR1cm4gYi5jYWxsKHRo aXMsYSl9fTtGdW5jdGlvbi5jcmVhdGVEZWxlZ2F0ZT1mdW5jdGlvbihhLGIpe1VM U29aNzo7cmV0dXJuIGZ1bmN0aW9uKCl7VUxTb1o3OjtyZXR1cm4gYi5hcHBseShh LGFyZ3VtZW50cyl9fTtGdW5jdGlvbi5lbXB0eUZ1bmN0aW9uPUZ1bmN0aW9uLmVt cHR5TWV0aG9kPWZ1bmN0aW9uKCl7fTtGdW5jdGlvbi5fdmFsaWRhdGVQYXJhbXM9 ZnVuY3Rpb24oZSxjKXtVTFNvWjc6O3ZhciBhO2E9RnVuY3Rpb24uX3ZhbGlkYXRl UGFyYW1ldGVyQ291bnQoZSxjKTtpZihhKXthLnBvcFN0YWNrRnJhbWUoKTtyZXR1 cm4gYX1mb3IodmFyIGI9MDtiPGUubGVuZ3RoO2IrKyl7dmFyIGQ9Y1tNYXRoLm1p bihiLGMubGVuZ3RoLTEpXSxmPWQubmFtZTtpZihkLnBhcmFtZXRlckFycmF5KWYr PSJbIisoYi1jLmxlbmd0aCsxKSsiXSI7YT1GdW5jdGlvbi5fdmFsaWRhdGVQYXJh bWV0ZXIoZVtiXSxkLGYpO2lmKGEpe2EucG9wU3RhY2tGcmFtZSgpO3JldHVybiBh fX1yZXR1cm4gbnVsbH07RnVuY3Rpb24uX3ZhbGlkYXRlUGFyYW1ldGVyQ291bnQ9 ZnVuY3Rpb24oZSxhKXtVTFNvWjc6O3ZhciBjPWEubGVuZ3RoLGQ9MDtmb3IodmFy IGI9MDtiPGEubGVuZ3RoO2IrKylpZihhW2JdLnBhcmFtZXRlckFycmF5KWM9TnVt YmVyLk1BWF9WQUxVRTtlbHNlIGlmKCFhW2JdLm9wdGlvbmFsKWQrKztpZihlLmxl bmd0aDxkfHxlLmxlbmd0aD5jKXt2YXIgZj1FcnJvci5wYXJhbWV0ZXJDb3VudCgp O2YucG9wU3RhY2tGcmFtZSgpO3JldHVybiBmfXJldHVybiBudWxsfTtGdW5jdGlv bi5fdmFsaWRhdGVQYXJhbWV0ZXI9ZnVuY3Rpb24oYyxhLGgpe1VMU29aNzo7dmFy IGIsZz1hLnR5cGUsbD0hIWEuaW50ZWdlcixrPSEhYS5kb21FbGVtZW50LG09ISFh Lm1heUJlTnVsbDtiPUZ1bmN0aW9uLl92YWxpZGF0ZVBhcmFtZXRlclR5cGUoYyxn LGwsayxtLGgpO2lmKGIpe2IucG9wU3RhY2tGcmFtZSgpO3JldHVybiBifXZhciBl PWEuZWxlbWVudFR5cGUsZj0hIWEuZWxlbWVudE1heUJlTnVsbDtpZihnPT09QXJy YXkmJnR5cGVvZiBjIT09InVuZGVmaW5lZCImJmMhPT1udWxsJiYoZXx8IWYpKXt2 YXIgaj0hIWEuZWxlbWVudEludGVnZXIsaT0hIWEuZWxlbWVudERvbUVsZW1lbnQ7 Zm9yKHZhciBkPTA7ZDxjLmxlbmd0aDtkKyspe3ZhciBuPWNbZF07Yj1GdW5jdGlv bi5fdmFsaWRhdGVQYXJhbWV0ZXJUeXBlKG4sZSxqLGksZixoKyJbIitkKyJdIik7 aWYoYil7Yi5wb3BTdGFja0ZyYW1lKCk7cmV0dXJuIGJ9fX1yZXR1cm4gbnVsbH07 RnVuY3Rpb24uX3ZhbGlkYXRlUGFyYW1ldGVyVHlwZT1mdW5jdGlvbihhLGMsbixt LGssZCl7VUxTb1o3Ojt2YXIgYjtpZih0eXBlb2YgYT09PSJ1bmRlZmluZWQiKWlm KGspcmV0dXJuIG51bGw7ZWxzZXtiPUVycm9yLmFyZ3VtZW50VW5kZWZpbmVkKGQp O2IucG9wU3RhY2tGcmFtZSgpO3JldHVybiBifWlmKGE9PT1udWxsKWlmKGspcmV0 dXJuIG51bGw7ZWxzZXtiPUVycm9yLmFyZ3VtZW50TnVsbChkKTtiLnBvcFN0YWNr RnJhbWUoKTtyZXR1cm4gYn1pZihjJiZjLl9fZW51bSl7aWYodHlwZW9mIGEhPT0i bnVtYmVyIil7Yj1FcnJvci5hcmd1bWVudFR5cGUoZCxPYmplY3QuZ2V0VHlwZShh KSxjKTtiLnBvcFN0YWNrRnJhbWUoKTtyZXR1cm4gYn1pZihhJTE9PT0wKXt2YXIg ZT1jLnByb3RvdHlwZTtpZighYy5fX2ZsYWdzfHxhPT09MCl7Zm9yKHZhciBpIGlu IGUpaWYoZVtpXT09PWEpcmV0dXJuIG51bGx9ZWxzZXt2YXIgbD1hO2Zvcih2YXIg aSBpbiBlKXt2YXIgZj1lW2ldO2lmKGY9PT0wKWNvbnRpbnVlO2lmKChmJmEpPT09 ZilsLT1mO2lmKGw9PT0wKXJldHVybiBudWxsfX19Yj1FcnJvci5hcmd1bWVudE91 dE9mUmFuZ2UoZCxhLFN0cmluZy5mb3JtYXQoU3lzLlJlcy5lbnVtSW52YWxpZFZh bHVlLGEsYy5nZXROYW1lKCkpKTtiLnBvcFN0YWNrRnJhbWUoKTtyZXR1cm4gYn1p ZihtKXt2YXIgaDtpZih0eXBlb2YgYS5ub2RlVHlwZSE9PSJudW1iZXIiKXt2YXIg Zz1hLm93bmVyRG9jdW1lbnR8fGEuZG9jdW1lbnR8fGE7aWYoZyE9YSl7dmFyIGo9 Zy5kZWZhdWx0Vmlld3x8Zy5wYXJlbnRXaW5kb3c7aD1qIT1hJiYhKGouZG9jdW1l bnQmJmEuZG9jdW1lbnQmJmouZG9jdW1lbnQ9PT1hLmRvY3VtZW50KX1lbHNlIGg9 dHlwZW9mIGcuYm9keT09PSJ1bmRlZmluZWQifWVsc2UgaD1hLm5vZGVUeXBlPT09 MztpZihoKXtiPUVycm9yLmFyZ3VtZW50KGQsU3lzLlJlcy5hcmd1bWVudERvbUVs ZW1lbnQpO2IucG9wU3RhY2tGcmFtZSgpO3JldHVybiBifX1pZihjJiYhYy5pc0lu c3RhbmNlT2ZUeXBlKGEpKXtiPUVycm9yLmFyZ3VtZW50VHlwZShkLE9iamVjdC5n ZXRUeXBlKGEpLGMpO2IucG9wU3RhY2tGcmFtZSgpO3JldHVybiBifWlmKGM9PT1O dW1iZXImJm4paWYoYSUxIT09MCl7Yj1FcnJvci5hcmd1bWVudE91dE9mUmFuZ2Uo ZCxhLFN5cy5SZXMuYXJndW1lbnRJbnRlZ2VyKTtiLnBvcFN0YWNrRnJhbWUoKTty ZXR1cm4gYn1yZXR1cm4gbnVsbH07RXJyb3IuX190eXBlTmFtZT0iRXJyb3IiO0Vy cm9yLl9fY2xhc3M9dHJ1ZTtFcnJvci5jcmVhdGU9ZnVuY3Rpb24oZCxiKXtVTFNv Wjc6O3ZhciBhPW5ldyBFcnJvcihkKTthLm1lc3NhZ2U9ZDtpZihiKWZvcih2YXIg YyBpbiBiKWFbY109YltjXTthLnBvcFN0YWNrRnJhbWUoKTtyZXR1cm4gYX07RXJy b3IuYXJndW1lbnQ9ZnVuY3Rpb24oYSxjKXtVTFNvWjc6O3ZhciBiPSJTeXMuQXJn dW1lbnRFeGNlcHRpb246ICIrKGM/YzpTeXMuUmVzLmFyZ3VtZW50KTtpZihhKWIr PSJcbiIrU3RyaW5nLmZvcm1hdChTeXMuUmVzLnBhcmFtTmFtZSxhKTt2YXIgZD1F cnJvci5jcmVhdGUoYix7bmFtZToiU3lzLkFyZ3VtZW50RXhjZXB0aW9uIixwYXJh bU5hbWU6YX0pO2QucG9wU3RhY2tGcmFtZSgpO3JldHVybiBkfTtFcnJvci5hcmd1 bWVudE51bGw9ZnVuY3Rpb24oYSxjKXtVTFNvWjc6O3ZhciBiPSJTeXMuQXJndW1l bnROdWxsRXhjZXB0aW9uOiAiKyhjP2M6U3lzLlJlcy5hcmd1bWVudE51bGwpO2lm KGEpYis9IlxuIitTdHJpbmcuZm9ybWF0KFN5cy5SZXMucGFyYW1OYW1lLGEpO3Zh ciBkPUVycm9yLmNyZWF0ZShiLHtuYW1lOiJTeXMuQXJndW1lbnROdWxsRXhjZXB0 aW9uIixwYXJhbU5hbWU6YX0pO2QucG9wU3RhY2tGcmFtZSgpO3JldHVybiBkfTtF cnJvci5hcmd1bWVudE91dE9mUmFuZ2U9ZnVuY3Rpb24oYyxhLGQpe1VMU29aNzo7 dmFyIGI9IlN5cy5Bcmd1bWVudE91dE9mUmFuZ2VFeGNlcHRpb246ICIrKGQ/ZDpT eXMuUmVzLmFyZ3VtZW50T3V0T2ZSYW5nZSk7aWYoYyliKz0iXG4iK1N0cmluZy5m b3JtYXQoU3lzLlJlcy5wYXJhbU5hbWUsYyk7aWYodHlwZW9mIGEhPT0idW5kZWZp bmVkIiYmYSE9PW51bGwpYis9IlxuIitTdHJpbmcuZm9ybWF0KFN5cy5SZXMuYWN0 dWFsVmFsdWUsYSk7dmFyIGU9RXJyb3IuY3JlYXRlKGIse25hbWU6IlN5cy5Bcmd1 bWVudE91dE9mUmFuZ2VFeGNlcHRpb24iLHBhcmFtTmFtZTpjLGFjdHVhbFZhbHVl OmF9KTtlLnBvcFN0YWNrRnJhbWUoKTtyZXR1cm4gZX07RXJyb3IuYXJndW1lbnRU eXBlPWZ1bmN0aW9uKGQsYyxiLGUpe1VMU29aNzo7dmFyIGE9IlN5cy5Bcmd1bWVu dFR5cGVFeGNlcHRpb246ICI7aWYoZSlhKz1lO2Vsc2UgaWYoYyYmYilhKz1TdHJp bmcuZm9ybWF0KFN5cy5SZXMuYXJndW1lbnRUeXBlV2l0aFR5cGVzLGMuZ2V0TmFt ZSgpLGIuZ2V0TmFtZSgpKTtlbHNlIGErPVN5cy5SZXMuYXJndW1lbnRUeXBlO2lm KGQpYSs9IlxuIitTdHJpbmcuZm9ybWF0KFN5cy5SZXMucGFyYW1OYW1lLGQpO3Zh ciBmPUVycm9yLmNyZWF0ZShhLHtuYW1lOiJTeXMuQXJndW1lbnRUeXBlRXhjZXB0 aW9uIixwYXJhbU5hbWU6ZCxhY3R1YWxUeXBlOmMsZXhwZWN0ZWRUeXBlOmJ9KTtm LnBvcFN0YWNrRnJhbWUoKTtyZXR1cm4gZn07RXJyb3IuYXJndW1lbnRVbmRlZmlu ZWQ9ZnVuY3Rpb24oYSxjKXtVTFNvWjc6O3ZhciBiPSJTeXMuQXJndW1lbnRVbmRl ZmluZWRFeGNlcHRpb246ICIrKGM/YzpTeXMuUmVzLmFyZ3VtZW50VW5kZWZpbmVk KTtpZihhKWIrPSJcbiIrU3RyaW5nLmZvcm1hdChTeXMuUmVzLnBhcmFtTmFtZSxh KTt2YXIgZD1FcnJvci5jcmVhdGUoYix7bmFtZToiU3lzLkFyZ3VtZW50VW5kZWZp bmVkRXhjZXB0aW9uIixwYXJhbU5hbWU6YX0pO2QucG9wU3RhY2tGcmFtZSgpO3Jl dHVybiBkfTtFcnJvci5mb3JtYXQ9ZnVuY3Rpb24oYSl7VUxTb1o3Ojt2YXIgYz0i U3lzLkZvcm1hdEV4Y2VwdGlvbjogIisoYT9hOlN5cy5SZXMuZm9ybWF0KSxiPUVy cm9yLmNyZWF0ZShjLHtuYW1lOiJTeXMuRm9ybWF0RXhjZXB0aW9uIn0pO2IucG9w U3RhY2tGcmFtZSgpO3JldHVybiBifTtFcnJvci5pbnZhbGlkT3BlcmF0aW9uPWZ1 bmN0aW9uKGEpe1VMU29aNzo7dmFyIGM9IlN5cy5JbnZhbGlkT3BlcmF0aW9uRXhj ZXB0aW9uOiAiKyhhP2E6U3lzLlJlcy5pbnZhbGlkT3BlcmF0aW9uKSxiPUVycm9y LmNyZWF0ZShjLHtuYW1lOiJTeXMuSW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbiJ9 KTtiLnBvcFN0YWNrRnJhbWUoKTtyZXR1cm4gYn07RXJyb3Iubm90SW1wbGVtZW50 ZWQ9ZnVuY3Rpb24oYSl7VUxTb1o3Ojt2YXIgYz0iU3lzLk5vdEltcGxlbWVudGVk RXhjZXB0aW9uOiAiKyhhP2E6U3lzLlJlcy5ub3RJbXBsZW1lbnRlZCksYj1FcnJv ci5jcmVhdGUoYyx7bmFtZToiU3lzLk5vdEltcGxlbWVudGVkRXhjZXB0aW9uIn0p O2IucG9wU3RhY2tGcmFtZSgpO3JldHVybiBifTtFcnJvci5wYXJhbWV0ZXJDb3Vu dD1mdW5jdGlvbihhKXtVTFNvWjc6O3ZhciBjPSJTeXMuUGFyYW1ldGVyQ291bnRF eGNlcHRpb246ICIrKGE/YTpTeXMuUmVzLnBhcmFtZXRlckNvdW50KSxiPUVycm9y LmNyZWF0ZShjLHtuYW1lOiJTeXMuUGFyYW1ldGVyQ291bnRFeGNlcHRpb24ifSk7 Yi5wb3BTdGFja0ZyYW1lKCk7cmV0dXJuIGJ9O0Vycm9yLnByb3RvdHlwZS5wb3BT dGFja0ZyYW1lPWZ1bmN0aW9uKCl7VUxTb1o3OjtpZih0eXBlb2YgdGhpcy5zdGFj az09PSJ1bmRlZmluZWQifHx0aGlzLnN0YWNrPT09bnVsbHx8dHlwZW9mIHRoaXMu ZmlsZU5hbWU9PT0idW5kZWZpbmVkInx8dGhpcy5maWxlTmFtZT09PW51bGx8fHR5 cGVvZiB0aGlzLmxpbmVOdW1iZXI9PT0idW5kZWZpbmVkInx8dGhpcy5saW5lTnVt YmVyPT09bnVsbClyZXR1cm47dmFyIGE9dGhpcy5zdGFjay5zcGxpdCgiXG4iKSxj PWFbMF0sZT10aGlzLmZpbGVOYW1lKyI6Iit0aGlzLmxpbmVOdW1iZXI7d2hpbGUo dHlwZW9mIGMhPT0idW5kZWZpbmVkIiYmYyE9PW51bGwmJmMuaW5kZXhPZihlKT09 PS0xKXthLnNoaWZ0KCk7Yz1hWzBdfXZhciBkPWFbMV07aWYodHlwZW9mIGQ9PT0i dW5kZWZpbmVkInx8ZD09PW51bGwpcmV0dXJuO3ZhciBiPWQubWF0Y2goL0AoLiop OihcZCspJC8pO2lmKHR5cGVvZiBiPT09InVuZGVmaW5lZCJ8fGI9PT1udWxsKXJl dHVybjt0aGlzLmZpbGVOYW1lPWJbMV07dGhpcy5saW5lTnVtYmVyPXBhcnNlSW50 KGJbMl0pO2Euc2hpZnQoKTt0aGlzLnN0YWNrPWEuam9pbigiXG4iKX07T2JqZWN0 Ll9fdHlwZU5hbWU9Ik9iamVjdCI7T2JqZWN0Ll9fY2xhc3M9dHJ1ZTtPYmplY3Qu Z2V0VHlwZT1mdW5jdGlvbihiKXtVTFNvWjc6O3ZhciBhPWIuY29uc3RydWN0b3I7 aWYoIWF8fHR5cGVvZiBhIT09ImZ1bmN0aW9uInx8IWEuX190eXBlTmFtZXx8YS5f X3R5cGVOYW1lPT09Ik9iamVjdCIpcmV0dXJuIE9iamVjdDtyZXR1cm4gYX07T2Jq ZWN0LmdldFR5cGVOYW1lPWZ1bmN0aW9uKGEpe1VMU29aNzo7cmV0dXJuIE9iamVj dC5nZXRUeXBlKGEpLmdldE5hbWUoKX07U3RyaW5nLl9fdHlwZU5hbWU9IlN0cmlu ZyI7U3RyaW5nLl9fY2xhc3M9dHJ1ZTtTdHJpbmcucHJvdG90eXBlLmVuZHNXaXRo PWZ1bmN0aW9uKGEpe1VMU29aNzo7cmV0dXJuIHRoaXMuc3Vic3RyKHRoaXMubGVu Z3RoLWEubGVuZ3RoKT09PWF9O1N0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aD1m dW5jdGlvbihhKXtVTFNvWjc6O3JldHVybiB0aGlzLnN1YnN0cigwLGEubGVuZ3Ro KT09PWF9O1N0cmluZy5wcm90b3R5cGUudHJpbT1mdW5jdGlvbigpe1VMU29aNzo7 cmV0dXJuIHRoaXMucmVwbGFjZSgvXlxzK3xccyskL2csIiIpfTtTdHJpbmcucHJv dG90eXBlLnRyaW1FbmQ9ZnVuY3Rpb24oKXtVTFNvWjc6O3JldHVybiB0aGlzLnJl cGxhY2UoL1xzKyQvLCIiKX07U3RyaW5nLnByb3RvdHlwZS50cmltU3RhcnQ9ZnVu Y3Rpb24oKXtVTFNvWjc6O3JldHVybiB0aGlzLnJlcGxhY2UoL15ccysvLCIiKX07 U3RyaW5nLmZvcm1hdD1mdW5jdGlvbigpe1VMU29aNzo7cmV0dXJuIFN0cmluZy5f dG9Gb3JtYXR0ZWRTdHJpbmcoZmFsc2UsYXJndW1lbnRzKX07U3RyaW5nLmxvY2Fs ZUZvcm1hdD1mdW5jdGlvbigpe1VMU29aNzo7cmV0dXJuIFN0cmluZy5fdG9Gb3Jt YXR0ZWRTdHJpbmcodHJ1ZSxhcmd1bWVudHMpfTtTdHJpbmcuX3RvRm9ybWF0dGVk U3RyaW5nPWZ1bmN0aW9uKGwsail7VUxTb1o3Ojt2YXIgYz0iIixlPWpbMF07Zm9y KHZhciBhPTA7dHJ1ZTspe3ZhciBmPWUuaW5kZXhPZigieyIsYSksZD1lLmluZGV4 T2YoIn0iLGEpO2lmKGY8MCYmZDwwKXtjKz1lLnNsaWNlKGEpO2JyZWFrfWlmKGQ+ MCYmKGQ8Znx8ZjwwKSl7Yys9ZS5zbGljZShhLGQrMSk7YT1kKzI7Y29udGludWV9 Yys9ZS5zbGljZShhLGYpO2E9ZisxO2lmKGUuY2hhckF0KGEpPT09InsiKXtjKz0i eyI7YSsrO2NvbnRpbnVlfWlmKGQ8MClicmVhazt2YXIgaD1lLnN1YnN0cmluZyhh LGQpLGc9aC5pbmRleE9mKCI6Iiksaz1wYXJzZUludChnPDA/aDpoLnN1YnN0cmlu ZygwLGcpLDEwKSsxLGk9ZzwwPyIiOmguc3Vic3RyaW5nKGcrMSksYj1qW2tdO2lm KHR5cGVvZiBiPT09InVuZGVmaW5lZCJ8fGI9PT1udWxsKWI9IiI7aWYoYi50b0Zv cm1hdHRlZFN0cmluZyljKz1iLnRvRm9ybWF0dGVkU3RyaW5nKGkpO2Vsc2UgaWYo bCYmYi5sb2NhbGVGb3JtYXQpYys9Yi5sb2NhbGVGb3JtYXQoaSk7ZWxzZSBpZihi LmZvcm1hdCljKz1iLmZvcm1hdChpKTtlbHNlIGMrPWIudG9TdHJpbmcoKTthPWQr MX1yZXR1cm4gY307Qm9vbGVhbi5fX3R5cGVOYW1lPSJCb29sZWFuIjtCb29sZWFu Ll9fY2xhc3M9dHJ1ZTtCb29sZWFuLnBhcnNlPWZ1bmN0aW9uKGIpe1VMU29aNzo7 dmFyIGE9Yi50cmltKCkudG9Mb3dlckNhc2UoKTtpZihhPT09ImZhbHNlIilyZXR1 cm4gZmFsc2U7aWYoYT09PSJ0cnVlIilyZXR1cm4gdHJ1ZX07RGF0ZS5fX3R5cGVO YW1lPSJEYXRlIjtEYXRlLl9fY2xhc3M9dHJ1ZTtEYXRlLl9hcHBlbmRQcmVPclBv c3RNYXRjaD1mdW5jdGlvbihlLGIpe1VMU29aNzo7dmFyIGQ9MCxhPWZhbHNlO2Zv cih2YXIgYz0wLGc9ZS5sZW5ndGg7YzxnO2MrKyl7dmFyIGY9ZS5jaGFyQXQoYyk7 c3dpdGNoKGYpe2Nhc2UgIiciOmlmKGEpYi5hcHBlbmQoIiciKTtlbHNlIGQrKzth PWZhbHNlO2JyZWFrO2Nhc2UgIlxcIjppZihhKWIuYXBwZW5kKCJcXCIpO2E9IWE7 YnJlYWs7ZGVmYXVsdDpiLmFwcGVuZChmKTthPWZhbHNlfX1yZXR1cm4gZH07RGF0 ZS5fZXhwYW5kRm9ybWF0PWZ1bmN0aW9uKGEsYil7VUxTb1o3OjtpZighYiliPSJG IjtpZihiLmxlbmd0aD09PTEpc3dpdGNoKGIpe2Nhc2UgImQiOnJldHVybiBhLlNo b3J0RGF0ZVBhdHRlcm47Y2FzZSAiRCI6cmV0dXJuIGEuTG9uZ0RhdGVQYXR0ZXJu O2Nhc2UgInQiOnJldHVybiBhLlNob3J0VGltZVBhdHRlcm47Y2FzZSAiVCI6cmV0 dXJuIGEuTG9uZ1RpbWVQYXR0ZXJuO2Nhc2UgIkYiOnJldHVybiBhLkZ1bGxEYXRl VGltZVBhdHRlcm47Y2FzZSAiTSI6Y2FzZSAibSI6cmV0dXJuIGEuTW9udGhEYXlQ YXR0ZXJuO2Nhc2UgInMiOnJldHVybiBhLlNvcnRhYmxlRGF0ZVRpbWVQYXR0ZXJu O2Nhc2UgIlkiOmNhc2UgInkiOnJldHVybiBhLlllYXJNb250aFBhdHRlcm47ZGVm YXVsdDp0aHJvdyBFcnJvci5mb3JtYXQoU3lzLlJlcy5mb3JtYXRJbnZhbGlkU3Ry aW5nKX1yZXR1cm4gYn07RGF0ZS5fZXhwYW5kWWVhcj1mdW5jdGlvbihjLGEpe1VM U29aNzo7aWYoYTwxMDApe3ZhciBiPShuZXcgRGF0ZSkuZ2V0RnVsbFllYXIoKTth Kz1iLWIlMTAwO2lmKGE+Yy5DYWxlbmRhci5Ud29EaWdpdFllYXJNYXgpcmV0dXJu IGEtMTAwfXJldHVybiBhfTtEYXRlLl9nZXRQYXJzZVJlZ0V4cD1mdW5jdGlvbihi LGUpe1VMU29aNzo7aWYoIWIuX3BhcnNlUmVnRXhwKWIuX3BhcnNlUmVnRXhwPXt9 O2Vsc2UgaWYoYi5fcGFyc2VSZWdFeHBbZV0pcmV0dXJuIGIuX3BhcnNlUmVnRXhw W2VdO3ZhciBjPURhdGUuX2V4cGFuZEZvcm1hdChiLGUpO2M9Yy5yZXBsYWNlKC8o W1xeXCRcLlwqXCtcP1x8XFtcXVwoXClce1x9XSkvZywiXFxcXCQxIik7dmFyIGE9 bmV3IFN5cy5TdHJpbmdCdWlsZGVyKCJeIiksaj1bXSxmPTAsaT0wLGg9RGF0ZS5f Z2V0VG9rZW5SZWdFeHAoKSxkO3doaWxlKChkPWguZXhlYyhjKSkhPT1udWxsKXt2 YXIgbD1jLnNsaWNlKGYsZC5pbmRleCk7Zj1oLmxhc3RJbmRleDtpKz1EYXRlLl9h cHBlbmRQcmVPclBvc3RNYXRjaChsLGEpO2lmKGklMj09PTEpe2EuYXBwZW5kKGRb MF0pO2NvbnRpbnVlfXN3aXRjaChkWzBdKXtjYXNlICJkZGRkIjpjYXNlICJkZGQi OmNhc2UgIk1NTU0iOmNhc2UgIk1NTSI6YS5hcHBlbmQoIihcXEQrKSIpO2JyZWFr O2Nhc2UgInR0IjpjYXNlICJ0IjphLmFwcGVuZCgiKFxcRCopIik7YnJlYWs7Y2Fz ZSAieXl5eSI6YS5hcHBlbmQoIihcXGR7NH0pIik7YnJlYWs7Y2FzZSAiZmZmIjph LmFwcGVuZCgiKFxcZHszfSkiKTticmVhaztjYXNlICJmZiI6YS5hcHBlbmQoIihc XGR7Mn0pIik7YnJlYWs7Y2FzZSAiZiI6YS5hcHBlbmQoIihcXGQpIik7YnJlYWs7 Y2FzZSAiZGQiOmNhc2UgImQiOmNhc2UgIk1NIjpjYXNlICJNIjpjYXNlICJ5eSI6 Y2FzZSAieSI6Y2FzZSAiSEgiOmNhc2UgIkgiOmNhc2UgImhoIjpjYXNlICJoIjpj YXNlICJtbSI6Y2FzZSAibSI6Y2FzZSAic3MiOmNhc2UgInMiOmEuYXBwZW5kKCIo XFxkXFxkPykiKTticmVhaztjYXNlICJ6enoiOmEuYXBwZW5kKCIoWystXT9cXGRc XGQ/OlxcZHsyfSkiKTticmVhaztjYXNlICJ6eiI6Y2FzZSAieiI6YS5hcHBlbmQo IihbKy1dP1xcZFxcZD8pIil9QXJyYXkuYWRkKGosZFswXSl9RGF0ZS5fYXBwZW5k UHJlT3JQb3N0TWF0Y2goYy5zbGljZShmKSxhKTthLmFwcGVuZCgiJCIpO3ZhciBr PWEudG9TdHJpbmcoKS5yZXBsYWNlKC9ccysvZywiXFxzKyIpLGc9eyJyZWdFeHAi OmssImdyb3VwcyI6an07Yi5fcGFyc2VSZWdFeHBbZV09ZztyZXR1cm4gZ307RGF0 ZS5fZ2V0VG9rZW5SZWdFeHA9ZnVuY3Rpb24oKXtVTFNvWjc6O3JldHVybiAvZGRk ZHxkZGR8ZGR8ZHxNTU1NfE1NTXxNTXxNfHl5eXl8eXl8eXxoaHxofEhIfEh8bW18 bXxzc3xzfHR0fHR8ZmZmfGZmfGZ8enp6fHp6fHovZ307RGF0ZS5wYXJzZUxvY2Fs ZT1mdW5jdGlvbihhKXtVTFNvWjc6O3JldHVybiBEYXRlLl9wYXJzZShhLFN5cy5D dWx0dXJlSW5mby5DdXJyZW50Q3VsdHVyZSxhcmd1bWVudHMpfTtEYXRlLnBhcnNl SW52YXJpYW50PWZ1bmN0aW9uKGEpe1VMU29aNzo7cmV0dXJuIERhdGUuX3BhcnNl KGEsU3lzLkN1bHR1cmVJbmZvLkludmFyaWFudEN1bHR1cmUsYXJndW1lbnRzKX07 RGF0ZS5fcGFyc2U9ZnVuY3Rpb24oZyxjLGgpe1VMU29aNzo7dmFyIGU9ZmFsc2U7 Zm9yKHZhciBhPTEsaT1oLmxlbmd0aDthPGk7YSsrKXt2YXIgZj1oW2FdO2lmKGYp e2U9dHJ1ZTt2YXIgYj1EYXRlLl9wYXJzZUV4YWN0KGcsZixjKTtpZihiKXJldHVy biBifX1pZighZSl7dmFyIGQ9Yy5fZ2V0RGF0ZVRpbWVGb3JtYXRzKCk7Zm9yKHZh ciBhPTAsaT1kLmxlbmd0aDthPGk7YSsrKXt2YXIgYj1EYXRlLl9wYXJzZUV4YWN0 KGcsZFthXSxjKTtpZihiKXJldHVybiBifX1yZXR1cm4gbnVsbH07RGF0ZS5fcGFy c2VFeGFjdD1mdW5jdGlvbihzLHksail7VUxTb1o3OjtzPXMudHJpbSgpO3ZhciBt PWouZGF0ZVRpbWVGb3JtYXQsdj1EYXRlLl9nZXRQYXJzZVJlZ0V4cChtLHkpLHg9 KG5ldyBSZWdFeHAodi5yZWdFeHApKS5leGVjKHMpO2lmKHg9PT1udWxsKXJldHVy biBudWxsO3ZhciB3PXYuZ3JvdXBzLGY9bnVsbCxjPW51bGwsaD1udWxsLGc9bnVs bCxkPTAsbj0wLG89MCxlPTAsaz1udWxsLHI9ZmFsc2U7Zm9yKHZhciBwPTAsej13 Lmxlbmd0aDtwPHo7cCsrKXt2YXIgYT14W3ArMV07aWYoYSlzd2l0Y2god1twXSl7 Y2FzZSAiZGQiOmNhc2UgImQiOmg9cGFyc2VJbnQoYSwxMCk7aWYoaDwxfHxoPjMx KXJldHVybiBudWxsO2JyZWFrO2Nhc2UgIk1NTU0iOmM9ai5fZ2V0TW9udGhJbmRl eChhKTtpZihjPDB8fGM+MTEpcmV0dXJuIG51bGw7YnJlYWs7Y2FzZSAiTU1NIjpj PWouX2dldEFiYnJNb250aEluZGV4KGEpO2lmKGM8MHx8Yz4xMSlyZXR1cm4gbnVs bDticmVhaztjYXNlICJNIjpjYXNlICJNTSI6dmFyIGM9cGFyc2VJbnQoYSwxMCkt MTtpZihjPDB8fGM+MTEpcmV0dXJuIG51bGw7YnJlYWs7Y2FzZSAieSI6Y2FzZSAi eXkiOmY9RGF0ZS5fZXhwYW5kWWVhcihtLHBhcnNlSW50KGEsMTApKTtpZihmPDB8 fGY+OTk5OSlyZXR1cm4gbnVsbDticmVhaztjYXNlICJ5eXl5IjpmPXBhcnNlSW50 KGEsMTApO2lmKGY8MHx8Zj45OTk5KXJldHVybiBudWxsO2JyZWFrO2Nhc2UgImgi OmNhc2UgImhoIjpkPXBhcnNlSW50KGEsMTApO2lmKGQ9PT0xMilkPTA7aWYoZDww fHxkPjExKXJldHVybiBudWxsO2JyZWFrO2Nhc2UgIkgiOmNhc2UgIkhIIjpkPXBh cnNlSW50KGEsMTApO2lmKGQ8MHx8ZD4yMylyZXR1cm4gbnVsbDticmVhaztjYXNl ICJtIjpjYXNlICJtbSI6bj1wYXJzZUludChhLDEwKTtpZihuPDB8fG4+NTkpcmV0 dXJuIG51bGw7YnJlYWs7Y2FzZSAicyI6Y2FzZSAic3MiOm89cGFyc2VJbnQoYSwx MCk7aWYobzwwfHxvPjU5KXJldHVybiBudWxsO2JyZWFrO2Nhc2UgInR0IjpjYXNl ICJ0Ijp2YXIgdT1hLnRvVXBwZXJDYXNlKCk7cj11PT09bS5QTURlc2lnbmF0b3Iu dG9VcHBlckNhc2UoKTtpZighciYmdSE9PW0uQU1EZXNpZ25hdG9yLnRvVXBwZXJD YXNlKCkpcmV0dXJuIG51bGw7YnJlYWs7Y2FzZSAiZiI6ZT1wYXJzZUludChhLDEw KSoxMDA7aWYoZTwwfHxlPjk5OSlyZXR1cm4gbnVsbDticmVhaztjYXNlICJmZiI6 ZT1wYXJzZUludChhLDEwKSoxMDtpZihlPDB8fGU+OTk5KXJldHVybiBudWxsO2Jy ZWFrO2Nhc2UgImZmZiI6ZT1wYXJzZUludChhLDEwKTtpZihlPDB8fGU+OTk5KXJl dHVybiBudWxsO2JyZWFrO2Nhc2UgImRkZGQiOmc9ai5fZ2V0RGF5SW5kZXgoYSk7 aWYoZzwwfHxnPjYpcmV0dXJuIG51bGw7YnJlYWs7Y2FzZSAiZGRkIjpnPWouX2dl dEFiYnJEYXlJbmRleChhKTtpZihnPDB8fGc+NilyZXR1cm4gbnVsbDticmVhaztj YXNlICJ6enoiOnZhciBxPWEuc3BsaXQoLzovKTtpZihxLmxlbmd0aCE9PTIpcmV0 dXJuIG51bGw7dmFyIGk9cGFyc2VJbnQocVswXSwxMCk7aWYoaTwtMTJ8fGk+MTMp cmV0dXJuIG51bGw7dmFyIGw9cGFyc2VJbnQocVsxXSwxMCk7aWYobDwwfHxsPjU5 KXJldHVybiBudWxsO2s9aSo2MCsoYS5zdGFydHNXaXRoKCItIik/LWw6bCk7YnJl YWs7Y2FzZSAieiI6Y2FzZSAienoiOnZhciBpPXBhcnNlSW50KGEsMTApO2lmKGk8 LTEyfHxpPjEzKXJldHVybiBudWxsO2s9aSo2MH19dmFyIGI9bmV3IERhdGU7aWYo Zj09PW51bGwpZj1iLmdldEZ1bGxZZWFyKCk7aWYoYz09PW51bGwpYz1iLmdldE1v bnRoKCk7aWYoaD09PW51bGwpaD1iLmdldERhdGUoKTtiLnNldEZ1bGxZZWFyKGYs YyxoKTtpZihiLmdldERhdGUoKSE9PWgpcmV0dXJuIG51bGw7aWYoZyE9PW51bGwm JmIuZ2V0RGF5KCkhPT1nKXJldHVybiBudWxsO2lmKHImJmQ8MTIpZCs9MTI7Yi5z ZXRIb3VycyhkLG4sbyxlKTtpZihrIT09bnVsbCl7dmFyIHQ9Yi5nZXRNaW51dGVz KCktKGsrYi5nZXRUaW1lem9uZU9mZnNldCgpKTtiLnNldEhvdXJzKGIuZ2V0SG91 cnMoKStwYXJzZUludCh0LzYwLDEwKSx0JTYwKX1yZXR1cm4gYn07RGF0ZS5wcm90 b3R5cGUuZm9ybWF0PWZ1bmN0aW9uKGEpe1VMU29aNzo7cmV0dXJuIHRoaXMuX3Rv Rm9ybWF0dGVkU3RyaW5nKGEsU3lzLkN1bHR1cmVJbmZvLkludmFyaWFudEN1bHR1 cmUpfTtEYXRlLnByb3RvdHlwZS5sb2NhbGVGb3JtYXQ9ZnVuY3Rpb24oYSl7VUxT b1o3OjtyZXR1cm4gdGhpcy5fdG9Gb3JtYXR0ZWRTdHJpbmcoYSxTeXMuQ3VsdHVy ZUluZm8uQ3VycmVudEN1bHR1cmUpfTtEYXRlLnByb3RvdHlwZS5fdG9Gb3JtYXR0 ZWRTdHJpbmc9ZnVuY3Rpb24oZSxoKXtVTFNvWjc6O2lmKCFlfHxlLmxlbmd0aD09 PTB8fGU9PT0iaSIpaWYoaCYmaC5uYW1lLmxlbmd0aD4wKXJldHVybiB0aGlzLnRv TG9jYWxlU3RyaW5nKCk7ZWxzZSByZXR1cm4gdGhpcy50b1N0cmluZygpO3ZhciBk PWguZGF0ZVRpbWVGb3JtYXQ7ZT1EYXRlLl9leHBhbmRGb3JtYXQoZCxlKTt2YXIg YT1uZXcgU3lzLlN0cmluZ0J1aWxkZXIsYjtmdW5jdGlvbiBjKGEpe1VMU29aNzo7 aWYoYTwxMClyZXR1cm4gIjAiK2E7cmV0dXJuIGEudG9TdHJpbmcoKX1mdW5jdGlv biBnKGEpe1VMU29aNzo7aWYoYTwxMClyZXR1cm4gIjAwIithO2lmKGE8MTAwKXJl dHVybiAiMCIrYTtyZXR1cm4gYS50b1N0cmluZygpfXZhciBqPTAsaT1EYXRlLl9n ZXRUb2tlblJlZ0V4cCgpO2Zvcig7dHJ1ZTspe3ZhciBsPWkubGFzdEluZGV4LGY9 aS5leGVjKGUpLGs9ZS5zbGljZShsLGY/Zi5pbmRleDplLmxlbmd0aCk7ais9RGF0 ZS5fYXBwZW5kUHJlT3JQb3N0TWF0Y2goayxhKTtpZighZilicmVhaztpZihqJTI9 PT0xKXthLmFwcGVuZChmWzBdKTtjb250aW51ZX1zd2l0Y2goZlswXSl7Y2FzZSAi ZGRkZCI6YS5hcHBlbmQoZC5EYXlOYW1lc1t0aGlzLmdldERheSgpXSk7YnJlYWs7 Y2FzZSAiZGRkIjphLmFwcGVuZChkLkFiYnJldmlhdGVkRGF5TmFtZXNbdGhpcy5n ZXREYXkoKV0pO2JyZWFrO2Nhc2UgImRkIjphLmFwcGVuZChjKHRoaXMuZ2V0RGF0 ZSgpKSk7YnJlYWs7Y2FzZSAiZCI6YS5hcHBlbmQodGhpcy5nZXREYXRlKCkpO2Jy ZWFrO2Nhc2UgIk1NTU0iOmEuYXBwZW5kKGQuTW9udGhOYW1lc1t0aGlzLmdldE1v bnRoKCldKTticmVhaztjYXNlICJNTU0iOmEuYXBwZW5kKGQuQWJicmV2aWF0ZWRN b250aE5hbWVzW3RoaXMuZ2V0TW9udGgoKV0pO2JyZWFrO2Nhc2UgIk1NIjphLmFw cGVuZChjKHRoaXMuZ2V0TW9udGgoKSsxKSk7YnJlYWs7Y2FzZSAiTSI6YS5hcHBl bmQodGhpcy5nZXRNb250aCgpKzEpO2JyZWFrO2Nhc2UgInl5eXkiOmEuYXBwZW5k KHRoaXMuZ2V0RnVsbFllYXIoKSk7YnJlYWs7Y2FzZSAieXkiOmEuYXBwZW5kKGMo dGhpcy5nZXRGdWxsWWVhcigpJTEwMCkpO2JyZWFrO2Nhc2UgInkiOmEuYXBwZW5k KHRoaXMuZ2V0RnVsbFllYXIoKSUxMDApO2JyZWFrO2Nhc2UgImhoIjpiPXRoaXMu Z2V0SG91cnMoKSUxMjtpZihiPT09MCliPTEyO2EuYXBwZW5kKGMoYikpO2JyZWFr O2Nhc2UgImgiOmI9dGhpcy5nZXRIb3VycygpJTEyO2lmKGI9PT0wKWI9MTI7YS5h cHBlbmQoYik7YnJlYWs7Y2FzZSAiSEgiOmEuYXBwZW5kKGModGhpcy5nZXRIb3Vy cygpKSk7YnJlYWs7Y2FzZSAiSCI6YS5hcHBlbmQodGhpcy5nZXRIb3VycygpKTti cmVhaztjYXNlICJtbSI6YS5hcHBlbmQoYyh0aGlzLmdldE1pbnV0ZXMoKSkpO2Jy ZWFrO2Nhc2UgIm0iOmEuYXBwZW5kKHRoaXMuZ2V0TWludXRlcygpKTticmVhaztj YXNlICJzcyI6YS5hcHBlbmQoYyh0aGlzLmdldFNlY29uZHMoKSkpO2JyZWFrO2Nh c2UgInMiOmEuYXBwZW5kKHRoaXMuZ2V0U2Vjb25kcygpKTticmVhaztjYXNlICJ0 dCI6YS5hcHBlbmQodGhpcy5nZXRIb3VycygpPDEyP2QuQU1EZXNpZ25hdG9yOmQu UE1EZXNpZ25hdG9yKTticmVhaztjYXNlICJ0IjphLmFwcGVuZCgodGhpcy5nZXRI b3VycygpPDEyP2QuQU1EZXNpZ25hdG9yOmQuUE1EZXNpZ25hdG9yKS5jaGFyQXQo MCkpO2JyZWFrO2Nhc2UgImYiOmEuYXBwZW5kKGcodGhpcy5nZXRNaWxsaXNlY29u ZHMoKSkuY2hhckF0KDApKTticmVhaztjYXNlICJmZiI6YS5hcHBlbmQoZyh0aGlz LmdldE1pbGxpc2Vjb25kcygpKS5zdWJzdHIoMCwyKSk7YnJlYWs7Y2FzZSAiZmZm IjphLmFwcGVuZChnKHRoaXMuZ2V0TWlsbGlzZWNvbmRzKCkpKTticmVhaztjYXNl ICJ6IjpiPXRoaXMuZ2V0VGltZXpvbmVPZmZzZXQoKS82MDthLmFwcGVuZCgoYjw9 MD8iKyI6Ii0iKStNYXRoLmZsb29yKE1hdGguYWJzKGIpKSk7YnJlYWs7Y2FzZSAi enoiOmI9dGhpcy5nZXRUaW1lem9uZU9mZnNldCgpLzYwO2EuYXBwZW5kKChiPD0w PyIrIjoiLSIpK2MoTWF0aC5mbG9vcihNYXRoLmFicyhiKSkpKTticmVhaztjYXNl ICJ6enoiOmI9dGhpcy5nZXRUaW1lem9uZU9mZnNldCgpLzYwO2EuYXBwZW5kKChi PD0wPyIrIjoiLSIpK2MoTWF0aC5mbG9vcihNYXRoLmFicyhiKSkpK2QuVGltZVNl cGFyYXRvcitjKE1hdGguYWJzKHRoaXMuZ2V0VGltZXpvbmVPZmZzZXQoKSU2MCkp KX19cmV0dXJuIGEudG9TdHJpbmcoKX07TnVtYmVyLl9fdHlwZU5hbWU9Ik51bWJl ciI7TnVtYmVyLl9fY2xhc3M9dHJ1ZTtOdW1iZXIucGFyc2VMb2NhbGU9ZnVuY3Rp b24oYSl7VUxTb1o3OjtyZXR1cm4gTnVtYmVyLl9wYXJzZShhLFN5cy5DdWx0dXJl SW5mby5DdXJyZW50Q3VsdHVyZSl9O051bWJlci5wYXJzZUludmFyaWFudD1mdW5j dGlvbihhKXtVTFNvWjc6O3JldHVybiBOdW1iZXIuX3BhcnNlKGEsU3lzLkN1bHR1 cmVJbmZvLkludmFyaWFudEN1bHR1cmUpfTtOdW1iZXIuX3BhcnNlPWZ1bmN0aW9u KGIsbyl7VUxTb1o3OjtiPWIudHJpbSgpO2lmKGIubWF0Y2goL15bKy1dP2luZmlu aXR5JC9pKSlyZXR1cm4gcGFyc2VGbG9hdChiKTtpZihiLm1hdGNoKC9eMHhbYS1m MC05XSskL2kpKXJldHVybiBwYXJzZUludChiKTt2YXIgYT1vLm51bWJlckZvcm1h dCxnPU51bWJlci5fcGFyc2VOdW1iZXJOZWdhdGl2ZVBhdHRlcm4oYixhLGEuTnVt YmVyTmVnYXRpdmVQYXR0ZXJuKSxoPWdbMF0sZT1nWzFdO2lmKGg9PT0iIiYmYS5O dW1iZXJOZWdhdGl2ZVBhdHRlcm4hPT0xKXtnPU51bWJlci5fcGFyc2VOdW1iZXJO ZWdhdGl2ZVBhdHRlcm4oYixhLDEpO2g9Z1swXTtlPWdbMV19aWYoaD09PSIiKWg9 IisiO3ZhciBqLGQsZj1lLmluZGV4T2YoImUiKTtpZihmPDApZj1lLmluZGV4T2Yo IkUiKTtpZihmPDApe2Q9ZTtqPW51bGx9ZWxzZXtkPWUuc3Vic3RyKDAsZik7aj1l LnN1YnN0cihmKzEpfXZhciBjLGssbT1kLmluZGV4T2YoYS5OdW1iZXJEZWNpbWFs U2VwYXJhdG9yKTtpZihtPDApe2M9ZDtrPW51bGx9ZWxzZXtjPWQuc3Vic3RyKDAs bSk7az1kLnN1YnN0cihtK2EuTnVtYmVyRGVjaW1hbFNlcGFyYXRvci5sZW5ndGgp fWM9Yy5zcGxpdChhLk51bWJlckdyb3VwU2VwYXJhdG9yKS5qb2luKCIiKTt2YXIg bj1hLk51bWJlckdyb3VwU2VwYXJhdG9yLnJlcGxhY2UoL1x1MDBBMC9nLCIgIik7 aWYoYS5OdW1iZXJHcm91cFNlcGFyYXRvciE9PW4pYz1jLnNwbGl0KG4pLmpvaW4o IiIpO3ZhciBsPWgrYztpZihrIT09bnVsbClsKz0iLiIraztpZihqIT09bnVsbCl7 dmFyIGk9TnVtYmVyLl9wYXJzZU51bWJlck5lZ2F0aXZlUGF0dGVybihqLGEsMSk7 aWYoaVswXT09PSIiKWlbMF09IisiO2wrPSJlIitpWzBdK2lbMV19aWYobC5tYXRj aCgvXlsrLV0/XGQqXC4/XGQqKGVbKy1dP1xkKyk/JC8pKXJldHVybiBwYXJzZUZs b2F0KGwpO3JldHVybiBOdW1iZXIuTmFOfTtOdW1iZXIuX3BhcnNlTnVtYmVyTmVn YXRpdmVQYXR0ZXJuPWZ1bmN0aW9uKGEsZCxlKXtVTFNvWjc6O3ZhciBiPWQuTmVn YXRpdmVTaWduLGM9ZC5Qb3NpdGl2ZVNpZ247c3dpdGNoKGUpe2Nhc2UgNDpiPSIg IitiO2M9IiAiK2M7Y2FzZSAzOmlmKGEuZW5kc1dpdGgoYikpcmV0dXJuIFsiLSIs YS5zdWJzdHIoMCxhLmxlbmd0aC1iLmxlbmd0aCldO2Vsc2UgaWYoYS5lbmRzV2l0 aChjKSlyZXR1cm4gWyIrIixhLnN1YnN0cigwLGEubGVuZ3RoLWMubGVuZ3RoKV07 YnJlYWs7Y2FzZSAyOmIrPSIgIjtjKz0iICI7Y2FzZSAxOmlmKGEuc3RhcnRzV2l0 aChiKSlyZXR1cm4gWyItIixhLnN1YnN0cihiLmxlbmd0aCldO2Vsc2UgaWYoYS5z dGFydHNXaXRoKGMpKXJldHVybiBbIisiLGEuc3Vic3RyKGMubGVuZ3RoKV07YnJl YWs7Y2FzZSAwOmlmKGEuc3RhcnRzV2l0aCgiKCIpJiZhLmVuZHNXaXRoKCIpIikp cmV0dXJuIFsiLSIsYS5zdWJzdHIoMSxhLmxlbmd0aC0yKV19cmV0dXJuIFsiIixh XX07TnVtYmVyLnByb3RvdHlwZS5mb3JtYXQ9ZnVuY3Rpb24oYSl7VUxTb1o3Ojty ZXR1cm4gdGhpcy5fdG9Gb3JtYXR0ZWRTdHJpbmcoYSxTeXMuQ3VsdHVyZUluZm8u SW52YXJpYW50Q3VsdHVyZSl9O051bWJlci5wcm90b3R5cGUubG9jYWxlRm9ybWF0 PWZ1bmN0aW9uKGEpe1VMU29aNzo7cmV0dXJuIHRoaXMuX3RvRm9ybWF0dGVkU3Ry aW5nKGEsU3lzLkN1bHR1cmVJbmZvLkN1cnJlbnRDdWx0dXJlKX07TnVtYmVyLnBy b3RvdHlwZS5fdG9Gb3JtYXR0ZWRTdHJpbmc9ZnVuY3Rpb24oZCxqKXtVTFNvWjc6 O2lmKCFkfHxkLmxlbmd0aD09PTB8fGQ9PT0iaSIpaWYoaiYmai5uYW1lLmxlbmd0 aD4wKXJldHVybiB0aGlzLnRvTG9jYWxlU3RyaW5nKCk7ZWxzZSByZXR1cm4gdGhp cy50b1N0cmluZygpO3ZhciBvPVsibiAlIiwibiUiLCIlbiJdLG49WyItbiAlIiwi LW4lIiwiLSVuIl0scD1bIihuKSIsIi1uIiwiLSBuIiwibi0iLCJuIC0iXSxtPVsi JG4iLCJuJCIsIiQgbiIsIm4gJCJdLGw9WyIoJG4pIiwiLSRuIiwiJC1uIiwiJG4t IiwiKG4kKSIsIi1uJCIsIm4tJCIsIm4kLSIsIi1uICQiLCItJCBuIiwibiAkLSIs IiQgbi0iLCIkIC1uIiwibi0gJCIsIigkIG4pIiwiKG4gJCkiXTtmdW5jdGlvbiBn KGEsYyxkKXtVTFNvWjc6O2Zvcih2YXIgYj1hLmxlbmd0aDtiPGM7YisrKWE9ZD8i MCIrYTphKyIwIjtyZXR1cm4gYX1mdW5jdGlvbiBpKGosaSxsLG4scCl7VUxTb1o3 Ojt2YXIgaD1sWzBdLGs9MSxvPU1hdGgucG93KDEwLGkpLG09TWF0aC5yb3VuZChq Km8pL287aWYoIWlzRmluaXRlKG0pKW09ajtqPW07dmFyIGI9ai50b1N0cmluZygp LGE9IiIsYyxlPWIuc3BsaXQoL2UvaSk7Yj1lWzBdO2M9ZS5sZW5ndGg+MT9wYXJz ZUludChlWzFdKTowO2U9Yi5zcGxpdCgiLiIpO2I9ZVswXTthPWUubGVuZ3RoPjE/ ZVsxXToiIjt2YXIgcTtpZihjPjApe2E9ZyhhLGMsZmFsc2UpO2IrPWEuc2xpY2Uo MCxjKTthPWEuc3Vic3RyKGMpfWVsc2UgaWYoYzwwKXtjPS1jO2I9ZyhiLGMrMSx0 cnVlKTthPWIuc2xpY2UoLWMsYi5sZW5ndGgpK2E7Yj1iLnNsaWNlKDAsLWMpfWlm KGk+MCl7aWYoYS5sZW5ndGg+aSlhPWEuc2xpY2UoMCxpKTtlbHNlIGE9ZyhhLGks ZmFsc2UpO2E9cCthfWVsc2UgYT0iIjt2YXIgZD1iLmxlbmd0aC0xLGY9IiI7d2hp bGUoZD49MCl7aWYoaD09PTB8fGg+ZClpZihmLmxlbmd0aD4wKXJldHVybiBiLnNs aWNlKDAsZCsxKStuK2YrYTtlbHNlIHJldHVybiBiLnNsaWNlKDAsZCsxKSthO2lm KGYubGVuZ3RoPjApZj1iLnNsaWNlKGQtaCsxLGQrMSkrbitmO2Vsc2UgZj1iLnNs aWNlKGQtaCsxLGQrMSk7ZC09aDtpZihrPGwubGVuZ3RoKXtoPWxba107aysrfX1y ZXR1cm4gYi5zbGljZSgwLGQrMSkrbitmK2F9dmFyIGE9ai5udW1iZXJGb3JtYXQs ZT1NYXRoLmFicyh0aGlzKTtpZighZClkPSJEIjt2YXIgYj0tMTtpZihkLmxlbmd0 aD4xKWI9cGFyc2VJbnQoZC5zbGljZSgxKSwxMCk7dmFyIGM7c3dpdGNoKGQuY2hh ckF0KDApKXtjYXNlICJkIjpjYXNlICJEIjpjPSJuIjtpZihiIT09LTEpZT1nKCIi K2UsYix0cnVlKTtpZih0aGlzPDApZT0tZTticmVhaztjYXNlICJjIjpjYXNlICJD IjppZih0aGlzPDApYz1sW2EuQ3VycmVuY3lOZWdhdGl2ZVBhdHRlcm5dO2Vsc2Ug Yz1tW2EuQ3VycmVuY3lQb3NpdGl2ZVBhdHRlcm5dO2lmKGI9PT0tMSliPWEuQ3Vy cmVuY3lEZWNpbWFsRGlnaXRzO2U9aShNYXRoLmFicyh0aGlzKSxiLGEuQ3VycmVu Y3lHcm91cFNpemVzLGEuQ3VycmVuY3lHcm91cFNlcGFyYXRvcixhLkN1cnJlbmN5 RGVjaW1hbFNlcGFyYXRvcik7YnJlYWs7Y2FzZSAibiI6Y2FzZSAiTiI6aWYodGhp czwwKWM9cFthLk51bWJlck5lZ2F0aXZlUGF0dGVybl07ZWxzZSBjPSJuIjtpZihi PT09LTEpYj1hLk51bWJlckRlY2ltYWxEaWdpdHM7ZT1pKE1hdGguYWJzKHRoaXMp LGIsYS5OdW1iZXJHcm91cFNpemVzLGEuTnVtYmVyR3JvdXBTZXBhcmF0b3IsYS5O dW1iZXJEZWNpbWFsU2VwYXJhdG9yKTticmVhaztjYXNlICJwIjpjYXNlICJQIjpp Zih0aGlzPDApYz1uW2EuUGVyY2VudE5lZ2F0aXZlUGF0dGVybl07ZWxzZSBjPW9b YS5QZXJjZW50UG9zaXRpdmVQYXR0ZXJuXTtpZihiPT09LTEpYj1hLlBlcmNlbnRE ZWNpbWFsRGlnaXRzO2U9aShNYXRoLmFicyh0aGlzKSoxMDAsYixhLlBlcmNlbnRH cm91cFNpemVzLGEuUGVyY2VudEdyb3VwU2VwYXJhdG9yLGEuUGVyY2VudERlY2lt YWxTZXBhcmF0b3IpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IuZm9ybWF0KFN5 cy5SZXMuZm9ybWF0QmFkRm9ybWF0U3BlY2lmaWVyKX12YXIgaz0vbnxcJHwtfCUv ZyxmPSIiO2Zvcig7dHJ1ZTspe3ZhciBxPWsubGFzdEluZGV4LGg9ay5leGVjKGMp O2YrPWMuc2xpY2UocSxoP2guaW5kZXg6Yy5sZW5ndGgpO2lmKCFoKWJyZWFrO3N3 aXRjaChoWzBdKXtjYXNlICJuIjpmKz1lO2JyZWFrO2Nhc2UgIiQiOmYrPWEuQ3Vy cmVuY3lTeW1ib2w7YnJlYWs7Y2FzZSAiLSI6Zis9YS5OZWdhdGl2ZVNpZ247YnJl YWs7Y2FzZSAiJSI6Zis9YS5QZXJjZW50U3ltYm9sfX1yZXR1cm4gZn07UmVnRXhw Ll9fdHlwZU5hbWU9IlJlZ0V4cCI7UmVnRXhwLl9fY2xhc3M9dHJ1ZTtBcnJheS5f X3R5cGVOYW1lPSJBcnJheSI7QXJyYXkuX19jbGFzcz10cnVlO0FycmF5LmFkZD1B cnJheS5lbnF1ZXVlPWZ1bmN0aW9uKGEsYil7VUxTb1o3OjthW2EubGVuZ3RoXT1i fTtBcnJheS5hZGRSYW5nZT1mdW5jdGlvbihhLGIpe1VMU29aNzo7YS5wdXNoLmFw cGx5KGEsYil9O0FycmF5LmNsZWFyPWZ1bmN0aW9uKGEpe1VMU29aNzo7YS5sZW5n dGg9MH07QXJyYXkuY2xvbmU9ZnVuY3Rpb24oYSl7VUxTb1o3OjtpZihhLmxlbmd0 aD09PTEpcmV0dXJuIFthWzBdXTtlbHNlIHJldHVybiBBcnJheS5hcHBseShudWxs LGEpfTtBcnJheS5jb250YWlucz1mdW5jdGlvbihhLGIpe1VMU29aNzo7cmV0dXJu IEFycmF5LmluZGV4T2YoYSxiKT49MH07QXJyYXkuZGVxdWV1ZT1mdW5jdGlvbihh KXtVTFNvWjc6O3JldHVybiBhLnNoaWZ0KCl9O0FycmF5LmZvckVhY2g9ZnVuY3Rp b24oYixlLGQpe1VMU29aNzo7Zm9yKHZhciBhPTAsZj1iLmxlbmd0aDthPGY7YSsr KXt2YXIgYz1iW2FdO2lmKHR5cGVvZiBjIT09InVuZGVmaW5lZCIpZS5jYWxsKGQs YyxhLGIpfX07QXJyYXkuaW5kZXhPZj1mdW5jdGlvbihkLGUsYSl7VUxTb1o3Ojtp Zih0eXBlb2YgZT09PSJ1bmRlZmluZWQiKXJldHVybiAtMTt2YXIgYz1kLmxlbmd0 aDtpZihjIT09MCl7YT1hLTA7aWYoaXNOYU4oYSkpYT0wO2Vsc2V7aWYoaXNGaW5p dGUoYSkpYT1hLWElMTtpZihhPDApYT1NYXRoLm1heCgwLGMrYSl9Zm9yKHZhciBi PWE7YjxjO2IrKylpZih0eXBlb2YgZFtiXSE9PSJ1bmRlZmluZWQiJiZkW2JdPT09 ZSlyZXR1cm4gYn1yZXR1cm4gLTF9O0FycmF5Lmluc2VydD1mdW5jdGlvbihhLGIs Yyl7VUxTb1o3OjthLnNwbGljZShiLDAsYyl9O0FycmF5LnBhcnNlPWZ1bmN0aW9u KHZhbHVlKXtVTFNvWjc6O2lmKCF2YWx1ZSlyZXR1cm4gW107cmV0dXJuIGV2YWwo dmFsdWUpfTtBcnJheS5yZW1vdmU9ZnVuY3Rpb24oYixjKXtVTFNvWjc6O3ZhciBh PUFycmF5LmluZGV4T2YoYixjKTtpZihhPj0wKWIuc3BsaWNlKGEsMSk7cmV0dXJu IGE+PTB9O0FycmF5LnJlbW92ZUF0PWZ1bmN0aW9uKGEsYil7VUxTb1o3OjthLnNw bGljZShiLDEpfTtpZighd2luZG93KXRoaXMud2luZG93PXRoaXM7d2luZG93LlR5 cGU9RnVuY3Rpb247VHlwZS5wcm90b3R5cGUuY2FsbEJhc2VNZXRob2Q9ZnVuY3Rp b24oYSxkLGIpe1VMU29aNzo7dmFyIGM9dGhpcy5nZXRCYXNlTWV0aG9kKGEsZCk7 aWYoIWIpcmV0dXJuIGMuYXBwbHkoYSk7ZWxzZSByZXR1cm4gYy5hcHBseShhLGIp fTtUeXBlLnByb3RvdHlwZS5nZXRCYXNlTWV0aG9kPWZ1bmN0aW9uKGQsYyl7VUxT b1o3Ojt2YXIgYj10aGlzLmdldEJhc2VUeXBlKCk7aWYoYil7dmFyIGE9Yi5wcm90 b3R5cGVbY107cmV0dXJuIGEgaW5zdGFuY2VvZiBGdW5jdGlvbj9hOm51bGx9cmV0 dXJuIG51bGx9O1R5cGUucHJvdG90eXBlLmdldEJhc2VUeXBlPWZ1bmN0aW9uKCl7 VUxTb1o3OjtyZXR1cm4gdHlwZW9mIHRoaXMuX19iYXNlVHlwZT09PSJ1bmRlZmlu ZWQiP251bGw6dGhpcy5fX2Jhc2VUeXBlfTtUeXBlLnByb3RvdHlwZS5nZXRJbnRl cmZhY2VzPWZ1bmN0aW9uKCl7VUxTb1o3Ojt2YXIgYT1bXSxiPXRoaXM7d2hpbGUo Yil7dmFyIGM9Yi5fX2ludGVyZmFjZXM7aWYoYylmb3IodmFyIGQ9MCxmPWMubGVu Z3RoO2Q8ZjtkKyspe3ZhciBlPWNbZF07aWYoIUFycmF5LmNvbnRhaW5zKGEsZSkp YVthLmxlbmd0aF09ZX1iPWIuX19iYXNlVHlwZX1yZXR1cm4gYX07VHlwZS5wcm90 b3R5cGUuZ2V0TmFtZT1mdW5jdGlvbigpe1VMU29aNzo7cmV0dXJuIHR5cGVvZiB0 aGlzLl9fdHlwZU5hbWU9PT0idW5kZWZpbmVkIj8iIjp0aGlzLl9fdHlwZU5hbWV9 O1R5cGUucHJvdG90eXBlLmltcGxlbWVudHNJbnRlcmZhY2U9ZnVuY3Rpb24oZCl7 VUxTb1o3Ojt0aGlzLnJlc29sdmVJbmhlcml0YW5jZSgpO3ZhciBjPWQuZ2V0TmFt ZSgpLGE9dGhpcy5fX2ludGVyZmFjZUNhY2hlO2lmKGEpe3ZhciBlPWFbY107aWYo dHlwZW9mIGUhPT0idW5kZWZpbmVkIilyZXR1cm4gZX1lbHNlIGE9dGhpcy5fX2lu dGVyZmFjZUNhY2hlPXt9O3ZhciBiPXRoaXM7d2hpbGUoYil7dmFyIGY9Yi5fX2lu dGVyZmFjZXM7aWYoZilpZihBcnJheS5pbmRleE9mKGYsZCkhPT0tMSlyZXR1cm4g YVtjXT10cnVlO2I9Yi5fX2Jhc2VUeXBlfXJldHVybiBhW2NdPWZhbHNlfTtUeXBl LnByb3RvdHlwZS5pbmhlcml0c0Zyb209ZnVuY3Rpb24oYil7VUxTb1o3Ojt0aGlz LnJlc29sdmVJbmhlcml0YW5jZSgpO3ZhciBhPXRoaXMuX19iYXNlVHlwZTt3aGls ZShhKXtpZihhPT09YilyZXR1cm4gdHJ1ZTthPWEuX19iYXNlVHlwZX1yZXR1cm4g ZmFsc2V9O1R5cGUucHJvdG90eXBlLmluaXRpYWxpemVCYXNlPWZ1bmN0aW9uKGEs Yil7VUxTb1o3Ojt0aGlzLnJlc29sdmVJbmhlcml0YW5jZSgpO2lmKHRoaXMuX19i YXNlVHlwZSlpZighYil0aGlzLl9fYmFzZVR5cGUuYXBwbHkoYSk7ZWxzZSB0aGlz Ll9fYmFzZVR5cGUuYXBwbHkoYSxiKTtyZXR1cm4gYX07VHlwZS5wcm90b3R5cGUu aXNJbXBsZW1lbnRlZEJ5PWZ1bmN0aW9uKGEpe1VMU29aNzo7aWYodHlwZW9mIGE9 PT0idW5kZWZpbmVkInx8YT09PW51bGwpcmV0dXJuIGZhbHNlO3ZhciBiPU9iamVj dC5nZXRUeXBlKGEpO3JldHVybiAhIShiLmltcGxlbWVudHNJbnRlcmZhY2UmJmIu aW1wbGVtZW50c0ludGVyZmFjZSh0aGlzKSl9O1R5cGUucHJvdG90eXBlLmlzSW5z dGFuY2VPZlR5cGU9ZnVuY3Rpb24oYil7VUxTb1o3OjtpZih0eXBlb2YgYj09PSJ1 bmRlZmluZWQifHxiPT09bnVsbClyZXR1cm4gZmFsc2U7aWYoYiBpbnN0YW5jZW9m IHRoaXMpcmV0dXJuIHRydWU7dmFyIGE9T2JqZWN0LmdldFR5cGUoYik7cmV0dXJu ICEhKGE9PT10aGlzKXx8YS5pbmhlcml0c0Zyb20mJmEuaW5oZXJpdHNGcm9tKHRo aXMpfHxhLmltcGxlbWVudHNJbnRlcmZhY2UmJmEuaW1wbGVtZW50c0ludGVyZmFj ZSh0aGlzKX07VHlwZS5wcm90b3R5cGUucmVnaXN0ZXJDbGFzcz1mdW5jdGlvbihj LGIsZCl7VUxTb1o3Ojt0aGlzLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj10aGlzO3Ro aXMuX190eXBlTmFtZT1jO3RoaXMuX19jbGFzcz10cnVlO2lmKGIpe3RoaXMuX19i YXNlVHlwZT1iO3RoaXMuX19iYXNlUHJvdG90eXBlUGVuZGluZz10cnVlfVN5cy5f X3VwcGVyQ2FzZVR5cGVzW2MudG9VcHBlckNhc2UoKV09dGhpcztpZihkKXt0aGlz Ll9faW50ZXJmYWNlcz1bXTtmb3IodmFyIGE9MixmPWFyZ3VtZW50cy5sZW5ndGg7 YTxmO2ErKyl7dmFyIGU9YXJndW1lbnRzW2FdO3RoaXMuX19pbnRlcmZhY2VzLnB1 c2goZSl9fXJldHVybiB0aGlzfTtUeXBlLnByb3RvdHlwZS5yZWdpc3RlckludGVy ZmFjZT1mdW5jdGlvbihhKXtVTFNvWjc6O1N5cy5fX3VwcGVyQ2FzZVR5cGVzW2Eu dG9VcHBlckNhc2UoKV09dGhpczt0aGlzLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj10 aGlzO3RoaXMuX190eXBlTmFtZT1hO3RoaXMuX19pbnRlcmZhY2U9dHJ1ZTtyZXR1 cm4gdGhpc307VHlwZS5wcm90b3R5cGUucmVzb2x2ZUluaGVyaXRhbmNlPWZ1bmN0 aW9uKCl7VUxTb1o3OjtpZih0aGlzLl9fYmFzZVByb3RvdHlwZVBlbmRpbmcpe3Zh ciBiPXRoaXMuX19iYXNlVHlwZTtiLnJlc29sdmVJbmhlcml0YW5jZSgpO2Zvcih2 YXIgYSBpbiBiLnByb3RvdHlwZSl7dmFyIGM9Yi5wcm90b3R5cGVbYV07aWYoIXRo aXMucHJvdG90eXBlW2FdKXRoaXMucHJvdG90eXBlW2FdPWN9ZGVsZXRlIHRoaXMu X19iYXNlUHJvdG90eXBlUGVuZGluZ319O1R5cGUuZ2V0Um9vdE5hbWVzcGFjZXM9 ZnVuY3Rpb24oKXtVTFNvWjc6O3JldHVybiBBcnJheS5jbG9uZShTeXMuX19yb290 TmFtZXNwYWNlcyl9O1R5cGUuaXNDbGFzcz1mdW5jdGlvbihhKXtVTFNvWjc6O2lm KHR5cGVvZiBhPT09InVuZGVmaW5lZCJ8fGE9PT1udWxsKXJldHVybiBmYWxzZTty ZXR1cm4gISFhLl9fY2xhc3N9O1R5cGUuaXNJbnRlcmZhY2U9ZnVuY3Rpb24oYSl7 VUxTb1o3OjtpZih0eXBlb2YgYT09PSJ1bmRlZmluZWQifHxhPT09bnVsbClyZXR1 cm4gZmFsc2U7cmV0dXJuICEhYS5fX2ludGVyZmFjZX07VHlwZS5pc05hbWVzcGFj ZT1mdW5jdGlvbihhKXtVTFNvWjc6O2lmKHR5cGVvZiBhPT09InVuZGVmaW5lZCJ8 fGE9PT1udWxsKXJldHVybiBmYWxzZTtyZXR1cm4gISFhLl9fbmFtZXNwYWNlfTtU eXBlLnBhcnNlPWZ1bmN0aW9uKHR5cGVOYW1lLG5zKXtVTFNvWjc6O3ZhciBmbjtp Zihucyl7Zm49U3lzLl9fdXBwZXJDYXNlVHlwZXNbbnMuZ2V0TmFtZSgpLnRvVXBw ZXJDYXNlKCkrIi4iK3R5cGVOYW1lLnRvVXBwZXJDYXNlKCldO3JldHVybiBmbnx8 bnVsbH1pZighdHlwZU5hbWUpcmV0dXJuIG51bGw7aWYoIVR5cGUuX19odENsYXNz ZXMpVHlwZS5fX2h0Q2xhc3Nlcz17fTtmbj1UeXBlLl9faHRDbGFzc2VzW3R5cGVO YW1lXTtpZighZm4pe2ZuPWV2YWwodHlwZU5hbWUpO1R5cGUuX19odENsYXNzZXNb dHlwZU5hbWVdPWZufXJldHVybiBmbn07VHlwZS5yZWdpc3Rlck5hbWVzcGFjZT1m dW5jdGlvbihmKXtVTFNvWjc6O3ZhciBkPXdpbmRvdyxjPWYuc3BsaXQoIi4iKTtm b3IodmFyIGI9MDtiPGMubGVuZ3RoO2IrKyl7dmFyIGU9Y1tiXSxhPWRbZV07aWYo IWEpe2E9ZFtlXT17X19uYW1lc3BhY2U6dHJ1ZSxfX3R5cGVOYW1lOmMuc2xpY2Uo MCxiKzEpLmpvaW4oIi4iKX07aWYoYj09PTApU3lzLl9fcm9vdE5hbWVzcGFjZXNb U3lzLl9fcm9vdE5hbWVzcGFjZXMubGVuZ3RoXT1hO2EuZ2V0TmFtZT1mdW5jdGlv bigpe1VMU29aNzo7cmV0dXJuIHRoaXMuX190eXBlTmFtZX19ZD1hfX07d2luZG93 LlN5cz17X19uYW1lc3BhY2U6dHJ1ZSxfX3R5cGVOYW1lOiJTeXMiLGdldE5hbWU6 ZnVuY3Rpb24oKXtVTFNvWjc6O3JldHVybiAiU3lzIn0sX191cHBlckNhc2VUeXBl czp7fX07U3lzLl9fcm9vdE5hbWVzcGFjZXM9W1N5c107U3lzLklEaXNwb3NhYmxl PWZ1bmN0aW9uKCl7fTtTeXMuSURpc3Bvc2FibGUucHJvdG90eXBlPXt9O1N5cy5J RGlzcG9zYWJsZS5yZWdpc3RlckludGVyZmFjZSgiU3lzLklEaXNwb3NhYmxlIik7 U3lzLlN0cmluZ0J1aWxkZXI9ZnVuY3Rpb24oYSl7VUxTb1o3Ojt0aGlzLl9wYXJ0 cz10eXBlb2YgYSE9PSJ1bmRlZmluZWQiJiZhIT09bnVsbCYmYSE9PSIiP1thLnRv U3RyaW5nKCldOltdO3RoaXMuX3ZhbHVlPXt9O3RoaXMuX2xlbj0wfTtTeXMuU3Ry aW5nQnVpbGRlci5wcm90b3R5cGU9e2FwcGVuZDpmdW5jdGlvbihhKXtVTFNvWjc6 O3RoaXMuX3BhcnRzW3RoaXMuX3BhcnRzLmxlbmd0aF09YX0sYXBwZW5kTGluZTpm dW5jdGlvbihhKXtVTFNvWjc6O3RoaXMuX3BhcnRzW3RoaXMuX3BhcnRzLmxlbmd0 aF09dHlwZW9mIGE9PT0idW5kZWZpbmVkInx8YT09PW51bGx8fGE9PT0iIj8iXHJc biI6YSsiXHJcbiJ9LGNsZWFyOmZ1bmN0aW9uKCl7VUxTb1o3Ojt0aGlzLl9wYXJ0 cz1bXTt0aGlzLl92YWx1ZT17fTt0aGlzLl9sZW49MH0saXNFbXB0eTpmdW5jdGlv bigpe1VMU29aNzo7aWYodGhpcy5fcGFydHMubGVuZ3RoPT09MClyZXR1cm4gdHJ1 ZTtyZXR1cm4gdGhpcy50b1N0cmluZygpPT09IiJ9LHRvU3RyaW5nOmZ1bmN0aW9u KGEpe1VMU29aNzo7YT1hfHwiIjt2YXIgYj10aGlzLl9wYXJ0cztpZih0aGlzLl9s ZW4hPT1iLmxlbmd0aCl7dGhpcy5fdmFsdWU9e307dGhpcy5fbGVuPWIubGVuZ3Ro fXZhciBkPXRoaXMuX3ZhbHVlO2lmKHR5cGVvZiBkW2FdPT09InVuZGVmaW5lZCIp e2lmKGEhPT0iIilmb3IodmFyIGM9MDtjPGIubGVuZ3RoOylpZih0eXBlb2YgYltj XT09PSJ1bmRlZmluZWQifHxiW2NdPT09IiJ8fGJbY109PT1udWxsKWIuc3BsaWNl KGMsMSk7ZWxzZSBjKys7ZFthXT10aGlzLl9wYXJ0cy5qb2luKGEpfXJldHVybiBk W2FdfX07U3lzLlN0cmluZ0J1aWxkZXIucmVnaXN0ZXJDbGFzcygiU3lzLlN0cmlu Z0J1aWxkZXIiKTtpZighd2luZG93LlhNTEh0dHBSZXF1ZXN0KXdpbmRvdy5YTUxI dHRwUmVxdWVzdD1mdW5jdGlvbigpe1VMU29aNzo7dmFyIGI9WyJNc3htbDIuWE1M SFRUUC4zLjAiLCJNc3htbDIuWE1MSFRUUCJdO2Zvcih2YXIgYT0wLGM9Yi5sZW5n dGg7YTxjO2ErKyl0cnl7cmV0dXJuIG5ldyBBY3RpdmVYT2JqZWN0KGJbYV0pfWNh dGNoKGQpe31yZXR1cm4gbnVsbH07U3lzLkJyb3dzZXI9e307U3lzLkJyb3dzZXIu SW50ZXJuZXRFeHBsb3Jlcj17fTtTeXMuQnJvd3Nlci5GaXJlZm94PXt9O1N5cy5C cm93c2VyLlNhZmFyaT17fTtTeXMuQnJvd3Nlci5PcGVyYT17fTtTeXMuQnJvd3Nl ci5hZ2VudD1udWxsO1N5cy5Ccm93c2VyLmhhc0RlYnVnZ2VyU3RhdGVtZW50PWZh bHNlO1N5cy5Ccm93c2VyLm5hbWU9bmF2aWdhdG9yLmFwcE5hbWU7U3lzLkJyb3dz ZXIudmVyc2lvbj1wYXJzZUZsb2F0KG5hdmlnYXRvci5hcHBWZXJzaW9uKTtTeXMu QnJvd3Nlci5kb2N1bWVudE1vZGU9MDtpZihuYXZpZ2F0b3IudXNlckFnZW50Lmlu ZGV4T2YoIiBNU0lFICIpPi0xKXtTeXMuQnJvd3Nlci5hZ2VudD1TeXMuQnJvd3Nl ci5JbnRlcm5ldEV4cGxvcmVyO1N5cy5Ccm93c2VyLnZlcnNpb249cGFyc2VGbG9h dChuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9NU0lFIChcZCtcLlxkKykvKVsx XSk7aWYoU3lzLkJyb3dzZXIudmVyc2lvbj49OClpZihkb2N1bWVudC5kb2N1bWVu dE1vZGU+PTcpU3lzLkJyb3dzZXIuZG9jdW1lbnRNb2RlPWRvY3VtZW50LmRvY3Vt ZW50TW9kZTtTeXMuQnJvd3Nlci5oYXNEZWJ1Z2dlclN0YXRlbWVudD10cnVlfWVs c2UgaWYobmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCIgRmlyZWZveC8iKT4t MSl7U3lzLkJyb3dzZXIuYWdlbnQ9U3lzLkJyb3dzZXIuRmlyZWZveDtTeXMuQnJv d3Nlci52ZXJzaW9uPXBhcnNlRmxvYXQobmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRj aCgvRmlyZWZveFwvKFxkK1wuXGQrKS8pWzFdKTtTeXMuQnJvd3Nlci5uYW1lPSJG aXJlZm94IjtTeXMuQnJvd3Nlci5oYXNEZWJ1Z2dlclN0YXRlbWVudD10cnVlfWVs c2UgaWYobmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCIgQXBwbGVXZWJLaXQv Iik+LTEpe1N5cy5Ccm93c2VyLmFnZW50PVN5cy5Ccm93c2VyLlNhZmFyaTtTeXMu QnJvd3Nlci52ZXJzaW9uPXBhcnNlRmxvYXQobmF2aWdhdG9yLnVzZXJBZ2VudC5t YXRjaCgvQXBwbGVXZWJLaXRcLyhcZCsoXC5cZCspPykvKVsxXSk7U3lzLkJyb3dz ZXIubmFtZT0iU2FmYXJpIn1lbHNlIGlmKG5hdmlnYXRvci51c2VyQWdlbnQuaW5k ZXhPZigiT3BlcmEvIik+LTEpU3lzLkJyb3dzZXIuYWdlbnQ9U3lzLkJyb3dzZXIu T3BlcmE7VHlwZS5yZWdpc3Rlck5hbWVzcGFjZSgiU3lzLlVJIik7U3lzLl9EZWJ1 Zz1mdW5jdGlvbigpe307U3lzLl9EZWJ1Zy5wcm90b3R5cGU9e19hcHBlbmRDb25z b2xlOmZ1bmN0aW9uKGEpe1VMU29aNzo7aWYodHlwZW9mIERlYnVnIT09InVuZGVm aW5lZCImJkRlYnVnLndyaXRlbG4pRGVidWcud3JpdGVsbihhKTtpZih3aW5kb3cu Y29uc29sZSYmd2luZG93LmNvbnNvbGUubG9nKXdpbmRvdy5jb25zb2xlLmxvZyhh KTtpZih3aW5kb3cub3BlcmEpd2luZG93Lm9wZXJhLnBvc3RFcnJvcihhKTtpZih3 aW5kb3cuZGVidWdTZXJ2aWNlKXdpbmRvdy5kZWJ1Z1NlcnZpY2UudHJhY2UoYSl9 LF9hcHBlbmRUcmFjZTpmdW5jdGlvbihiKXtVTFNvWjc6O3ZhciBhPWRvY3VtZW50 LmdldEVsZW1lbnRCeUlkKCJUcmFjZUNvbnNvbGUiKTtpZihhJiZhLnRhZ05hbWUu dG9VcHBlckNhc2UoKT09PSJURVhUQVJFQSIpYS52YWx1ZSs9YisiXG4ifSxhc3Nl cnQ6ZnVuY3Rpb24oYyxhLGIpe1VMU29aNzo7aWYoIWMpe2E9YiYmdGhpcy5hc3Nl cnQuY2FsbGVyP1N0cmluZy5mb3JtYXQoU3lzLlJlcy5hc3NlcnRGYWlsZWRDYWxs ZXIsYSx0aGlzLmFzc2VydC5jYWxsZXIpOlN0cmluZy5mb3JtYXQoU3lzLlJlcy5h c3NlcnRGYWlsZWQsYSk7aWYoY29uZmlybShTdHJpbmcuZm9ybWF0KFN5cy5SZXMu YnJlYWtJbnRvRGVidWdnZXIsYSkpKXRoaXMuZmFpbChhKX19LGNsZWFyVHJhY2U6 ZnVuY3Rpb24oKXtVTFNvWjc6O3ZhciBhPWRvY3VtZW50LmdldEVsZW1lbnRCeUlk KCJUcmFjZUNvbnNvbGUiKTtpZihhJiZhLnRhZ05hbWUudG9VcHBlckNhc2UoKT09 PSJURVhUQVJFQSIpYS52YWx1ZT0iIn0sZmFpbDpmdW5jdGlvbihtZXNzYWdlKXtV TFNvWjc6O3RoaXMuX2FwcGVuZENvbnNvbGUobWVzc2FnZSk7aWYoU3lzLkJyb3dz ZXIuaGFzRGVidWdnZXJTdGF0ZW1lbnQpZXZhbCgiZGVidWdnZXIiKX0sdHJhY2U6 ZnVuY3Rpb24oYSl7VUxTb1o3Ojt0aGlzLl9hcHBlbmRDb25zb2xlKGEpO3RoaXMu X2FwcGVuZFRyYWNlKGEpfSx0cmFjZUR1bXA6ZnVuY3Rpb24oYSxiKXtVTFNvWjc6 O3ZhciBjPXRoaXMuX3RyYWNlRHVtcChhLGIsdHJ1ZSl9LF90cmFjZUR1bXA6ZnVu Y3Rpb24oYSxjLGYsYixkKXtVTFNvWjc6O2M9Yz9jOiJ0cmFjZUR1bXAiO2I9Yj9i OiIiO2lmKGE9PT1udWxsKXt0aGlzLnRyYWNlKGIrYysiOiBudWxsIik7cmV0dXJu fXN3aXRjaCh0eXBlb2YgYSl7Y2FzZSAidW5kZWZpbmVkIjp0aGlzLnRyYWNlKGIr YysiOiBVbmRlZmluZWQiKTticmVhaztjYXNlICJudW1iZXIiOmNhc2UgInN0cmlu ZyI6Y2FzZSAiYm9vbGVhbiI6dGhpcy50cmFjZShiK2MrIjogIithKTticmVhaztk ZWZhdWx0OmlmKERhdGUuaXNJbnN0YW5jZU9mVHlwZShhKXx8UmVnRXhwLmlzSW5z dGFuY2VPZlR5cGUoYSkpe3RoaXMudHJhY2UoYitjKyI6ICIrYS50b1N0cmluZygp KTticmVha31pZighZClkPVtdO2Vsc2UgaWYoQXJyYXkuY29udGFpbnMoZCxhKSl7 dGhpcy50cmFjZShiK2MrIjogLi4uIik7cmV0dXJufUFycmF5LmFkZChkLGEpO2lm KGE9PXdpbmRvd3x8YT09PWRvY3VtZW50fHx3aW5kb3cuSFRNTEVsZW1lbnQmJmEg aW5zdGFuY2VvZiBIVE1MRWxlbWVudHx8dHlwZW9mIGEubm9kZU5hbWU9PT0ic3Ry aW5nIil7dmFyIGs9YS50YWdOYW1lP2EudGFnTmFtZToiRG9tRWxlbWVudCI7aWYo YS5pZClrKz0iIC0gIithLmlkO3RoaXMudHJhY2UoYitjKyIgeyIraysifSIpfWVs c2V7dmFyIGk9T2JqZWN0LmdldFR5cGVOYW1lKGEpO3RoaXMudHJhY2UoYitjKyh0 eXBlb2YgaT09PSJzdHJpbmciPyIgeyIraSsifSI6IiIpKTtpZihiPT09IiJ8fGYp e2IrPSIgICAgIjt2YXIgZSxqLGwsZyxoO2lmKEFycmF5LmlzSW5zdGFuY2VPZlR5 cGUoYSkpe2o9YS5sZW5ndGg7Zm9yKGU9MDtlPGo7ZSsrKXRoaXMuX3RyYWNlRHVt cChhW2VdLCJbIitlKyJdIixmLGIsZCl9ZWxzZSBmb3IoZyBpbiBhKXtoPWFbZ107 aWYoIUZ1bmN0aW9uLmlzSW5zdGFuY2VPZlR5cGUoaCkpdGhpcy5fdHJhY2VEdW1w KGgsZyxmLGIsZCl9fX1BcnJheS5yZW1vdmUoZCxhKX19fTtTeXMuX0RlYnVnLnJl Z2lzdGVyQ2xhc3MoIlN5cy5fRGVidWciKTtTeXMuRGVidWc9bmV3IFN5cy5fRGVi dWc7U3lzLkRlYnVnLmlzRGVidWc9ZmFsc2U7ZnVuY3Rpb24gU3lzJEVudW0kcGFy c2UoYyxlKXtVTFNvWjc6O3ZhciBhLGIsaTtpZihlKXthPXRoaXMuX19sb3dlckNh c2VWYWx1ZXM7aWYoIWEpe3RoaXMuX19sb3dlckNhc2VWYWx1ZXM9YT17fTt2YXIg Zz10aGlzLnByb3RvdHlwZTtmb3IodmFyIGYgaW4gZylhW2YudG9Mb3dlckNhc2Uo KV09Z1tmXX19ZWxzZSBhPXRoaXMucHJvdG90eXBlO2lmKCF0aGlzLl9fZmxhZ3Mp e2k9ZT9jLnRvTG93ZXJDYXNlKCk6YztiPWFbaS50cmltKCldO2lmKHR5cGVvZiBi IT09Im51bWJlciIpdGhyb3cgRXJyb3IuYXJndW1lbnQoInZhbHVlIixTdHJpbmcu Zm9ybWF0KFN5cy5SZXMuZW51bUludmFsaWRWYWx1ZSxjLHRoaXMuX190eXBlTmFt ZSkpO3JldHVybiBifWVsc2V7dmFyIGg9KGU/Yy50b0xvd2VyQ2FzZSgpOmMpLnNw bGl0KCIsIiksaj0wO2Zvcih2YXIgZD1oLmxlbmd0aC0xO2Q+PTA7ZC0tKXt2YXIg az1oW2RdLnRyaW0oKTtiPWFba107aWYodHlwZW9mIGIhPT0ibnVtYmVyIil0aHJv dyBFcnJvci5hcmd1bWVudCgidmFsdWUiLFN0cmluZy5mb3JtYXQoU3lzLlJlcy5l bnVtSW52YWxpZFZhbHVlLGMuc3BsaXQoIiwiKVtkXS50cmltKCksdGhpcy5fX3R5 cGVOYW1lKSk7anw9Yn1yZXR1cm4gan19ZnVuY3Rpb24gU3lzJEVudW0kdG9TdHJp bmcoYyl7VUxTb1o3OjtpZih0eXBlb2YgYz09PSJ1bmRlZmluZWQifHxjPT09bnVs bClyZXR1cm4gdGhpcy5fX3N0cmluZzt2YXIgZD10aGlzLnByb3RvdHlwZSxhO2lm KCF0aGlzLl9fZmxhZ3N8fGM9PT0wKXtmb3IoYSBpbiBkKWlmKGRbYV09PT1jKXJl dHVybiBhfWVsc2V7dmFyIGI9dGhpcy5fX3NvcnRlZFZhbHVlcztpZighYil7Yj1b XTtmb3IoYSBpbiBkKWJbYi5sZW5ndGhdPXtrZXk6YSx2YWx1ZTpkW2FdfTtiLnNv cnQoZnVuY3Rpb24oYSxiKXtVTFNvWjc6O3JldHVybiBhLnZhbHVlLWIudmFsdWV9 KTt0aGlzLl9fc29ydGVkVmFsdWVzPWJ9dmFyIGU9W10sZz1jO2ZvcihhPWIubGVu Z3RoLTE7YT49MDthLS0pe3ZhciBoPWJbYV0sZj1oLnZhbHVlO2lmKGY9PT0wKWNv bnRpbnVlO2lmKChmJmMpPT09Zil7ZVtlLmxlbmd0aF09aC5rZXk7Zy09ZjtpZihn PT09MClicmVha319aWYoZS5sZW5ndGgmJmc9PT0wKXJldHVybiBlLnJldmVyc2Uo KS5qb2luKCIsICIpfXJldHVybiAiIn1UeXBlLnByb3RvdHlwZS5yZWdpc3RlckVu dW09ZnVuY3Rpb24oYixjKXtVTFNvWjc6O1N5cy5fX3VwcGVyQ2FzZVR5cGVzW2Iu dG9VcHBlckNhc2UoKV09dGhpcztmb3IodmFyIGEgaW4gdGhpcy5wcm90b3R5cGUp dGhpc1thXT10aGlzLnByb3RvdHlwZVthXTt0aGlzLl9fdHlwZU5hbWU9Yjt0aGlz LnBhcnNlPVN5cyRFbnVtJHBhcnNlO3RoaXMuX19zdHJpbmc9dGhpcy50b1N0cmlu ZygpO3RoaXMudG9TdHJpbmc9U3lzJEVudW0kdG9TdHJpbmc7dGhpcy5fX2ZsYWdz PWM7dGhpcy5fX2VudW09dHJ1ZX07VHlwZS5pc0VudW09ZnVuY3Rpb24oYSl7VUxT b1o3OjtpZih0eXBlb2YgYT09PSJ1bmRlZmluZWQifHxhPT09bnVsbClyZXR1cm4g ZmFsc2U7cmV0dXJuICEhYS5fX2VudW19O1R5cGUuaXNGbGFncz1mdW5jdGlvbihh KXtVTFNvWjc6O2lmKHR5cGVvZiBhPT09InVuZGVmaW5lZCJ8fGE9PT1udWxsKXJl dHVybiBmYWxzZTtyZXR1cm4gISFhLl9fZmxhZ3N9O1N5cy5FdmVudEhhbmRsZXJM aXN0PWZ1bmN0aW9uKCl7VUxTb1o3Ojt0aGlzLl9saXN0PXt9fTtTeXMuRXZlbnRI YW5kbGVyTGlzdC5wcm90b3R5cGU9e2FkZEhhbmRsZXI6ZnVuY3Rpb24oYixhKXtV TFNvWjc6O0FycmF5LmFkZCh0aGlzLl9nZXRFdmVudChiLHRydWUpLGEpfSxyZW1v dmVIYW5kbGVyOmZ1bmN0aW9uKGMsYil7VUxTb1o3Ojt2YXIgYT10aGlzLl9nZXRF dmVudChjKTtpZighYSlyZXR1cm47QXJyYXkucmVtb3ZlKGEsYil9LGdldEhhbmRs ZXI6ZnVuY3Rpb24oYil7VUxTb1o3Ojt2YXIgYT10aGlzLl9nZXRFdmVudChiKTtp ZighYXx8YS5sZW5ndGg9PT0wKXJldHVybiBudWxsO2E9QXJyYXkuY2xvbmUoYSk7 cmV0dXJuIGZ1bmN0aW9uKGMsZCl7VUxTb1o3Ojtmb3IodmFyIGI9MCxlPWEubGVu Z3RoO2I8ZTtiKyspYVtiXShjLGQpfX0sX2dldEV2ZW50OmZ1bmN0aW9uKGEsYil7 VUxTb1o3OjtpZighdGhpcy5fbGlzdFthXSl7aWYoIWIpcmV0dXJuIG51bGw7dGhp cy5fbGlzdFthXT1bXX1yZXR1cm4gdGhpcy5fbGlzdFthXX19O1N5cy5FdmVudEhh bmRsZXJMaXN0LnJlZ2lzdGVyQ2xhc3MoIlN5cy5FdmVudEhhbmRsZXJMaXN0Iik7 U3lzLkV2ZW50QXJncz1mdW5jdGlvbigpe307U3lzLkV2ZW50QXJncy5yZWdpc3Rl ckNsYXNzKCJTeXMuRXZlbnRBcmdzIik7U3lzLkV2ZW50QXJncy5FbXB0eT1uZXcg U3lzLkV2ZW50QXJncztTeXMuQ2FuY2VsRXZlbnRBcmdzPWZ1bmN0aW9uKCl7VUxT b1o3OjtTeXMuQ2FuY2VsRXZlbnRBcmdzLmluaXRpYWxpemVCYXNlKHRoaXMpO3Ro aXMuX2NhbmNlbD1mYWxzZX07U3lzLkNhbmNlbEV2ZW50QXJncy5wcm90b3R5cGU9 e2dldF9jYW5jZWw6ZnVuY3Rpb24oKXtVTFNvWjc6O3JldHVybiB0aGlzLl9jYW5j ZWx9LHNldF9jYW5jZWw6ZnVuY3Rpb24oYSl7VUxTb1o3Ojt0aGlzLl9jYW5jZWw9 YX19O1N5cy5DYW5jZWxFdmVudEFyZ3MucmVnaXN0ZXJDbGFzcygiU3lzLkNhbmNl bEV2ZW50QXJncyIsU3lzLkV2ZW50QXJncyk7U3lzLklOb3RpZnlQcm9wZXJ0eUNo YW5nZT1mdW5jdGlvbigpe307U3lzLklOb3RpZnlQcm9wZXJ0eUNoYW5nZS5wcm90 b3R5cGU9e307U3lzLklOb3RpZnlQcm9wZXJ0eUNoYW5nZS5yZWdpc3RlckludGVy ZmFjZSgiU3lzLklOb3RpZnlQcm9wZXJ0eUNoYW5nZSIpO1N5cy5Qcm9wZXJ0eUNo YW5nZWRFdmVudEFyZ3M9ZnVuY3Rpb24oYSl7VUxTb1o3OjtTeXMuUHJvcGVydHlD aGFuZ2VkRXZlbnRBcmdzLmluaXRpYWxpemVCYXNlKHRoaXMpO3RoaXMuX3Byb3Bl cnR5TmFtZT1hfTtTeXMuUHJvcGVydHlDaGFuZ2VkRXZlbnRBcmdzLnByb3RvdHlw ZT17Z2V0X3Byb3BlcnR5TmFtZTpmdW5jdGlvbigpe1VMU29aNzo7cmV0dXJuIHRo aXMuX3Byb3BlcnR5TmFtZX19O1N5cy5Qcm9wZXJ0eUNoYW5nZWRFdmVudEFyZ3Mu cmVnaXN0ZXJDbGFzcygiU3lzLlByb3BlcnR5Q2hhbmdlZEV2ZW50QXJncyIsU3lz LkV2ZW50QXJncyk7U3lzLklOb3RpZnlEaXNwb3Npbmc9ZnVuY3Rpb24oKXt9O1N5 cy5JTm90aWZ5RGlzcG9zaW5nLnByb3RvdHlwZT17fTtTeXMuSU5vdGlmeURpc3Bv c2luZy5yZWdpc3RlckludGVyZmFjZSgiU3lzLklOb3RpZnlEaXNwb3NpbmciKTtT eXMuQ29tcG9uZW50PWZ1bmN0aW9uKCl7VUxTb1o3OjtpZihTeXMuQXBwbGljYXRp b24pU3lzLkFwcGxpY2F0aW9uLnJlZ2lzdGVyRGlzcG9zYWJsZU9iamVjdCh0aGlz KX07U3lzLkNvbXBvbmVudC5wcm90b3R5cGU9e19pZDpudWxsLF9pbml0aWFsaXpl ZDpmYWxzZSxfdXBkYXRpbmc6ZmFsc2UsZ2V0X2V2ZW50czpmdW5jdGlvbigpe1VM U29aNzo7aWYoIXRoaXMuX2V2ZW50cyl0aGlzLl9ldmVudHM9bmV3IFN5cy5FdmVu dEhhbmRsZXJMaXN0O3JldHVybiB0aGlzLl9ldmVudHN9LGdldF9pZDpmdW5jdGlv bigpe1VMU29aNzo7cmV0dXJuIHRoaXMuX2lkfSxzZXRfaWQ6ZnVuY3Rpb24oYSl7 VUxTb1o3Ojt0aGlzLl9pZD1hfSxnZXRfaXNJbml0aWFsaXplZDpmdW5jdGlvbigp e1VMU29aNzo7cmV0dXJuIHRoaXMuX2luaXRpYWxpemVkfSxnZXRfaXNVcGRhdGlu ZzpmdW5jdGlvbigpe1VMU29aNzo7cmV0dXJuIHRoaXMuX3VwZGF0aW5nfSxhZGRf ZGlzcG9zaW5nOmZ1bmN0aW9uKGEpe1VMU29aNzo7dGhpcy5nZXRfZXZlbnRzKCku YWRkSGFuZGxlcigiZGlzcG9zaW5nIixhKX0scmVtb3ZlX2Rpc3Bvc2luZzpmdW5j dGlvbihhKXtVTFNvWjc6O3RoaXMuZ2V0X2V2ZW50cygpLnJlbW92ZUhhbmRsZXIo ImRpc3Bvc2luZyIsYSl9LGFkZF9wcm9wZXJ0eUNoYW5nZWQ6ZnVuY3Rpb24oYSl7 VUxTb1o3Ojt0aGlzLmdldF9ldmVudHMoKS5hZGRIYW5kbGVyKCJwcm9wZXJ0eUNo YW5nZWQiLGEpfSxyZW1vdmVfcHJvcGVydHlDaGFuZ2VkOmZ1bmN0aW9uKGEpe1VM U29aNzo7dGhpcy5nZXRfZXZlbnRzKCkucmVtb3ZlSGFuZGxlcigicHJvcGVydHlD aGFuZ2VkIixhKX0sYmVnaW5VcGRhdGU6ZnVuY3Rpb24oKXtVTFNvWjc6O3RoaXMu X3VwZGF0aW5nPXRydWV9LGRpc3Bvc2U6ZnVuY3Rpb24oKXtVTFNvWjc6O2lmKHRo aXMuX2V2ZW50cyl7dmFyIGE9dGhpcy5fZXZlbnRzLmdldEhhbmRsZXIoImRpc3Bv c2luZyIpO2lmKGEpYSh0aGlzLFN5cy5FdmVudEFyZ3MuRW1wdHkpfWRlbGV0ZSB0 aGlzLl9ldmVudHM7U3lzLkFwcGxpY2F0aW9uLnVucmVnaXN0ZXJEaXNwb3NhYmxl T2JqZWN0KHRoaXMpO1N5cy5BcHBsaWNhdGlvbi5yZW1vdmVDb21wb25lbnQodGhp cyl9LGVuZFVwZGF0ZTpmdW5jdGlvbigpe1VMU29aNzo7dGhpcy5fdXBkYXRpbmc9 ZmFsc2U7aWYoIXRoaXMuX2luaXRpYWxpemVkKXRoaXMuaW5pdGlhbGl6ZSgpO3Ro aXMudXBkYXRlZCgpfSxpbml0aWFsaXplOmZ1bmN0aW9uKCl7VUxTb1o3Ojt0aGlz Ll9pbml0aWFsaXplZD10cnVlfSxyYWlzZVByb3BlcnR5Q2hhbmdlZDpmdW5jdGlv bihiKXtVTFNvWjc6O2lmKCF0aGlzLl9ldmVudHMpcmV0dXJuO3ZhciBhPXRoaXMu X2V2ZW50cy5nZXRIYW5kbGVyKCJwcm9wZXJ0eUNoYW5nZWQiKTtpZihhKWEodGhp cyxuZXcgU3lzLlByb3BlcnR5Q2hhbmdlZEV2ZW50QXJncyhiKSl9LHVwZGF0ZWQ6 ZnVuY3Rpb24oKXt9fTtTeXMuQ29tcG9uZW50LnJlZ2lzdGVyQ2xhc3MoIlN5cy5D b21wb25lbnQiLG51bGwsU3lzLklEaXNwb3NhYmxlLFN5cy5JTm90aWZ5UHJvcGVy dHlDaGFuZ2UsU3lzLklOb3RpZnlEaXNwb3NpbmcpO2Z1bmN0aW9uIFN5cyRDb21w b25lbnQkX3NldFByb3BlcnRpZXMoYSxpKXtVTFNvWjc6O3ZhciBkLGo9T2JqZWN0 LmdldFR5cGUoYSksZT1qPT09T2JqZWN0fHxqPT09U3lzLlVJLkRvbUVsZW1lbnQs aD1TeXMuQ29tcG9uZW50LmlzSW5zdGFuY2VPZlR5cGUoYSkmJiFhLmdldF9pc1Vw ZGF0aW5nKCk7aWYoaClhLmJlZ2luVXBkYXRlKCk7Zm9yKHZhciBjIGluIGkpe3Zh ciBiPWlbY10sZj1lP251bGw6YVsiZ2V0XyIrY107aWYoZXx8dHlwZW9mIGYhPT0i ZnVuY3Rpb24iKXt2YXIgaz1hW2NdO2lmKCFifHx0eXBlb2YgYiE9PSJvYmplY3Qi fHxlJiYhaylhW2NdPWI7ZWxzZSBTeXMkQ29tcG9uZW50JF9zZXRQcm9wZXJ0aWVz KGssYil9ZWxzZXt2YXIgbD1hWyJzZXRfIitjXTtpZih0eXBlb2YgbD09PSJmdW5j dGlvbiIpbC5hcHBseShhLFtiXSk7ZWxzZSBpZihiIGluc3RhbmNlb2YgQXJyYXkp e2Q9Zi5hcHBseShhKTtmb3IodmFyIGc9MCxtPWQubGVuZ3RoLG49Yi5sZW5ndGg7 ZzxuO2crKyxtKyspZFttXT1iW2ddfWVsc2UgaWYodHlwZW9mIGI9PT0ib2JqZWN0 IiYmT2JqZWN0LmdldFR5cGUoYik9PT1PYmplY3Qpe2Q9Zi5hcHBseShhKTtTeXMk Q29tcG9uZW50JF9zZXRQcm9wZXJ0aWVzKGQsYil9fX1pZihoKWEuZW5kVXBkYXRl KCl9ZnVuY3Rpb24gU3lzJENvbXBvbmVudCRfc2V0UmVmZXJlbmNlcyhjLGIpe1VM U29aNzo7Zm9yKHZhciBhIGluIGIpe3ZhciBlPWNbInNldF8iK2FdLGQ9JGZpbmQo YlthXSk7ZS5hcHBseShjLFtkXSl9fXZhciAkY3JlYXRlPVN5cy5Db21wb25lbnQu Y3JlYXRlPWZ1bmN0aW9uKGgsZixkLGMsZyl7VUxTb1o3Ojt2YXIgYT1nP25ldyBo KGcpOm5ldyBoLGI9U3lzLkFwcGxpY2F0aW9uLGk9Yi5nZXRfaXNDcmVhdGluZ0Nv bXBvbmVudHMoKTthLmJlZ2luVXBkYXRlKCk7aWYoZilTeXMkQ29tcG9uZW50JF9z ZXRQcm9wZXJ0aWVzKGEsZik7aWYoZClmb3IodmFyIGUgaW4gZClhWyJhZGRfIitl XShkW2VdKTtpZihhLmdldF9pZCgpKWIuYWRkQ29tcG9uZW50KGEpO2lmKGkpe2Iu X2NyZWF0ZWRDb21wb25lbnRzW2IuX2NyZWF0ZWRDb21wb25lbnRzLmxlbmd0aF09 YTtpZihjKWIuX2FkZENvbXBvbmVudFRvU2Vjb25kUGFzcyhhLGMpO2Vsc2UgYS5l bmRVcGRhdGUoKX1lbHNle2lmKGMpU3lzJENvbXBvbmVudCRfc2V0UmVmZXJlbmNl cyhhLGMpO2EuZW5kVXBkYXRlKCl9cmV0dXJuIGF9O1N5cy5VSS5Nb3VzZUJ1dHRv bj1mdW5jdGlvbigpe1VMU29aNzo7dGhyb3cgRXJyb3Iubm90SW1wbGVtZW50ZWQo KX07U3lzLlVJLk1vdXNlQnV0dG9uLnByb3RvdHlwZT17bGVmdEJ1dHRvbjowLG1p ZGRsZUJ1dHRvbjoxLHJpZ2h0QnV0dG9uOjJ9O1N5cy5VSS5Nb3VzZUJ1dHRvbi5y ZWdpc3RlckVudW0oIlN5cy5VSS5Nb3VzZUJ1dHRvbiIpO1N5cy5VSS5LZXk9ZnVu Y3Rpb24oKXtVTFNvWjc6O3Rocm93IEVycm9yLm5vdEltcGxlbWVudGVkKCl9O1N5 cy5VSS5LZXkucHJvdG90eXBlPXtiYWNrc3BhY2U6OCx0YWI6OSxlbnRlcjoxMyxl c2M6Mjcsc3BhY2U6MzIscGFnZVVwOjMzLHBhZ2VEb3duOjM0LGVuZDozNSxob21l OjM2LGxlZnQ6MzcsdXA6MzgscmlnaHQ6MzksZG93bjo0MCxkZWw6MTI3fTtTeXMu VUkuS2V5LnJlZ2lzdGVyRW51bSgiU3lzLlVJLktleSIpO1N5cy5VSS5Qb2ludD1m dW5jdGlvbihhLGIpe1VMU29aNzo7dGhpcy54PWE7dGhpcy55PWJ9O1N5cy5VSS5Q b2ludC5yZWdpc3RlckNsYXNzKCJTeXMuVUkuUG9pbnQiKTtTeXMuVUkuQm91bmRz PWZ1bmN0aW9uKGMsZCxiLGEpe1VMU29aNzo7dGhpcy54PWM7dGhpcy55PWQ7dGhp cy5oZWlnaHQ9YTt0aGlzLndpZHRoPWJ9O1N5cy5VSS5Cb3VuZHMucmVnaXN0ZXJD bGFzcygiU3lzLlVJLkJvdW5kcyIpO1N5cy5VSS5Eb21FdmVudD1mdW5jdGlvbihl KXtVTFNvWjc6O3ZhciBhPWUsYj10aGlzLnR5cGU9YS50eXBlLnRvTG93ZXJDYXNl KCk7dGhpcy5yYXdFdmVudD1hO3RoaXMuYWx0S2V5PWEuYWx0S2V5O2lmKHR5cGVv ZiBhLmJ1dHRvbiE9PSJ1bmRlZmluZWQiKXRoaXMuYnV0dG9uPXR5cGVvZiBhLndo aWNoIT09InVuZGVmaW5lZCI/YS5idXR0b246YS5idXR0b249PT00P1N5cy5VSS5N b3VzZUJ1dHRvbi5taWRkbGVCdXR0b246YS5idXR0b249PT0yP1N5cy5VSS5Nb3Vz ZUJ1dHRvbi5yaWdodEJ1dHRvbjpTeXMuVUkuTW91c2VCdXR0b24ubGVmdEJ1dHRv bjtpZihiPT09ImtleXByZXNzIil0aGlzLmNoYXJDb2RlPWEuY2hhckNvZGV8fGEu a2V5Q29kZTtlbHNlIGlmKGEua2V5Q29kZSYmYS5rZXlDb2RlPT09NDYpdGhpcy5r ZXlDb2RlPTEyNztlbHNlIHRoaXMua2V5Q29kZT1hLmtleUNvZGU7dGhpcy5jbGll bnRYPWEuY2xpZW50WDt0aGlzLmNsaWVudFk9YS5jbGllbnRZO3RoaXMuY3RybEtl eT1hLmN0cmxLZXk7dGhpcy50YXJnZXQ9YS50YXJnZXQ/YS50YXJnZXQ6YS5zcmNF bGVtZW50O2lmKCFiLnN0YXJ0c1dpdGgoImtleSIpKWlmKHR5cGVvZiBhLm9mZnNl dFghPT0idW5kZWZpbmVkIiYmdHlwZW9mIGEub2Zmc2V0WSE9PSJ1bmRlZmluZWQi KXt0aGlzLm9mZnNldFg9YS5vZmZzZXRYO3RoaXMub2Zmc2V0WT1hLm9mZnNldFl9 ZWxzZSBpZih0aGlzLnRhcmdldCYmdGhpcy50YXJnZXQubm9kZVR5cGUhPT0zJiZ0 eXBlb2YgYS5jbGllbnRYPT09Im51bWJlciIpe3ZhciBjPVN5cy5VSS5Eb21FbGVt ZW50LmdldExvY2F0aW9uKHRoaXMudGFyZ2V0KSxkPVN5cy5VSS5Eb21FbGVtZW50 Ll9nZXRXaW5kb3codGhpcy50YXJnZXQpO3RoaXMub2Zmc2V0WD0oZC5wYWdlWE9m ZnNldHx8MCkrYS5jbGllbnRYLWMueDt0aGlzLm9mZnNldFk9KGQucGFnZVlPZmZz ZXR8fDApK2EuY2xpZW50WS1jLnl9dGhpcy5zY3JlZW5YPWEuc2NyZWVuWDt0aGlz LnNjcmVlblk9YS5zY3JlZW5ZO3RoaXMuc2hpZnRLZXk9YS5zaGlmdEtleX07U3lz LlVJLkRvbUV2ZW50LnByb3RvdHlwZT17cHJldmVudERlZmF1bHQ6ZnVuY3Rpb24o KXtVTFNvWjc6O2lmKHRoaXMucmF3RXZlbnQucHJldmVudERlZmF1bHQpdGhpcy5y YXdFdmVudC5wcmV2ZW50RGVmYXVsdCgpO2Vsc2UgaWYod2luZG93LmV2ZW50KXRo aXMucmF3RXZlbnQucmV0dXJuVmFsdWU9ZmFsc2V9LHN0b3BQcm9wYWdhdGlvbjpm dW5jdGlvbigpe1VMU29aNzo7aWYodGhpcy5yYXdFdmVudC5zdG9wUHJvcGFnYXRp b24pdGhpcy5yYXdFdmVudC5zdG9wUHJvcGFnYXRpb24oKTtlbHNlIGlmKHdpbmRv dy5ldmVudCl0aGlzLnJhd0V2ZW50LmNhbmNlbEJ1YmJsZT10cnVlfX07U3lzLlVJ LkRvbUV2ZW50LnJlZ2lzdGVyQ2xhc3MoIlN5cy5VSS5Eb21FdmVudCIpO3ZhciAk YWRkSGFuZGxlcj1TeXMuVUkuRG9tRXZlbnQuYWRkSGFuZGxlcj1mdW5jdGlvbihh LGQsZSl7VUxTb1o3OjtpZighYS5fZXZlbnRzKWEuX2V2ZW50cz17fTt2YXIgYz1h Ll9ldmVudHNbZF07aWYoIWMpYS5fZXZlbnRzW2RdPWM9W107dmFyIGI7aWYoYS5h ZGRFdmVudExpc3RlbmVyKXtiPWZ1bmN0aW9uKGIpe1VMU29aNzo7cmV0dXJuIGUu Y2FsbChhLG5ldyBTeXMuVUkuRG9tRXZlbnQoYikpfTthLmFkZEV2ZW50TGlzdGVu ZXIoZCxiLGZhbHNlKX1lbHNlIGlmKGEuYXR0YWNoRXZlbnQpe2I9ZnVuY3Rpb24o KXtVTFNvWjc6O3ZhciBiPXt9O3RyeXtiPVN5cy5VSS5Eb21FbGVtZW50Ll9nZXRX aW5kb3coYSkuZXZlbnR9Y2F0Y2goYyl7fXJldHVybiBlLmNhbGwoYSxuZXcgU3lz LlVJLkRvbUV2ZW50KGIpKX07YS5hdHRhY2hFdmVudCgib24iK2QsYil9Y1tjLmxl bmd0aF09e2hhbmRsZXI6ZSxicm93c2VySGFuZGxlcjpifX0sJGFkZEhhbmRsZXJz PVN5cy5VSS5Eb21FdmVudC5hZGRIYW5kbGVycz1mdW5jdGlvbihlLGQsYyl7VUxT b1o3Ojtmb3IodmFyIGIgaW4gZCl7dmFyIGE9ZFtiXTtpZihjKWE9RnVuY3Rpb24u Y3JlYXRlRGVsZWdhdGUoYyxhKTskYWRkSGFuZGxlcihlLGIsYSl9fSwkY2xlYXJI YW5kbGVycz1TeXMuVUkuRG9tRXZlbnQuY2xlYXJIYW5kbGVycz1mdW5jdGlvbihh KXtVTFNvWjc6O2lmKGEuX2V2ZW50cyl7dmFyIGU9YS5fZXZlbnRzO2Zvcih2YXIg YiBpbiBlKXt2YXIgZD1lW2JdO2Zvcih2YXIgYz1kLmxlbmd0aC0xO2M+PTA7Yy0t KSRyZW1vdmVIYW5kbGVyKGEsYixkW2NdLmhhbmRsZXIpfWEuX2V2ZW50cz1udWxs fX0sJHJlbW92ZUhhbmRsZXI9U3lzLlVJLkRvbUV2ZW50LnJlbW92ZUhhbmRsZXI9 ZnVuY3Rpb24oYSxlLGYpe1VMU29aNzo7dmFyIGQ9bnVsbCxjPWEuX2V2ZW50c1tl XTtmb3IodmFyIGI9MCxnPWMubGVuZ3RoO2I8ZztiKyspaWYoY1tiXS5oYW5kbGVy PT09Zil7ZD1jW2JdLmJyb3dzZXJIYW5kbGVyO2JyZWFrfWlmKGEucmVtb3ZlRXZl bnRMaXN0ZW5lcilhLnJlbW92ZUV2ZW50TGlzdGVuZXIoZSxkLGZhbHNlKTtlbHNl IGlmKGEuZGV0YWNoRXZlbnQpYS5kZXRhY2hFdmVudCgib24iK2UsZCk7Yy5zcGxp Y2UoYiwxKX07U3lzLlVJLkRvbUVsZW1lbnQ9ZnVuY3Rpb24oKXt9O1N5cy5VSS5E b21FbGVtZW50LnJlZ2lzdGVyQ2xhc3MoIlN5cy5VSS5Eb21FbGVtZW50Iik7U3lz LlVJLkRvbUVsZW1lbnQuYWRkQ3NzQ2xhc3M9ZnVuY3Rpb24oYSxiKXtVTFNvWjc6 O2lmKCFTeXMuVUkuRG9tRWxlbWVudC5jb250YWluc0Nzc0NsYXNzKGEsYikpaWYo YS5jbGFzc05hbWU9PT0iIilhLmNsYXNzTmFtZT1iO2Vsc2UgYS5jbGFzc05hbWUr PSIgIitifTtTeXMuVUkuRG9tRWxlbWVudC5jb250YWluc0Nzc0NsYXNzPWZ1bmN0 aW9uKGIsYSl7VUxTb1o3OjtyZXR1cm4gQXJyYXkuY29udGFpbnMoYi5jbGFzc05h bWUuc3BsaXQoIiAiKSxhKX07U3lzLlVJLkRvbUVsZW1lbnQuZ2V0Qm91bmRzPWZ1 bmN0aW9uKGEpe1VMU29aNzo7dmFyIGI9U3lzLlVJLkRvbUVsZW1lbnQuZ2V0TG9j YXRpb24oYSk7cmV0dXJuIG5ldyBTeXMuVUkuQm91bmRzKGIueCxiLnksYS5vZmZz ZXRXaWR0aHx8MCxhLm9mZnNldEhlaWdodHx8MCl9O3ZhciAkZ2V0PVN5cy5VSS5E b21FbGVtZW50LmdldEVsZW1lbnRCeUlkPWZ1bmN0aW9uKGYsZSl7VUxTb1o3Ojtp ZighZSlyZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZik7aWYoZS5nZXRF bGVtZW50QnlJZClyZXR1cm4gZS5nZXRFbGVtZW50QnlJZChmKTt2YXIgYz1bXSxk PWUuY2hpbGROb2Rlcztmb3IodmFyIGI9MDtiPGQubGVuZ3RoO2IrKyl7dmFyIGE9 ZFtiXTtpZihhLm5vZGVUeXBlPT0xKWNbYy5sZW5ndGhdPWF9d2hpbGUoYy5sZW5n dGgpe2E9Yy5zaGlmdCgpO2lmKGEuaWQ9PWYpcmV0dXJuIGE7ZD1hLmNoaWxkTm9k ZXM7Zm9yKGI9MDtiPGQubGVuZ3RoO2IrKyl7YT1kW2JdO2lmKGEubm9kZVR5cGU9 PTEpY1tjLmxlbmd0aF09YX19cmV0dXJuIG51bGx9O3N3aXRjaChTeXMuQnJvd3Nl ci5hZ2VudCl7Y2FzZSBTeXMuQnJvd3Nlci5JbnRlcm5ldEV4cGxvcmVyOlN5cy5V SS5Eb21FbGVtZW50LmdldExvY2F0aW9uPWZ1bmN0aW9uKGEpe1VMU29aNzo7aWYo YS5zZWxmfHxhLm5vZGVUeXBlPT09OSlyZXR1cm4gbmV3IFN5cy5VSS5Qb2ludCgw LDApO3ZhciBiPWEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYoIWIpcmV0dXJu IG5ldyBTeXMuVUkuUG9pbnQoMCwwKTt2YXIgZD1hLm93bmVyRG9jdW1lbnQuZG9j dW1lbnRFbGVtZW50LGU9Yi5sZWZ0LTIrZC5zY3JvbGxMZWZ0LGY9Yi50b3AtMitk LnNjcm9sbFRvcDt0cnl7dmFyIGM9YS5vd25lckRvY3VtZW50LnBhcmVudFdpbmRv dy5mcmFtZUVsZW1lbnR8fG51bGw7aWYoYyl7dmFyIGc9Yy5mcmFtZUJvcmRlcj09 PSIwInx8Yy5mcmFtZUJvcmRlcj09PSJubyI/MjowO2UrPWc7Zis9Z319Y2F0Y2go aCl7fXJldHVybiBuZXcgU3lzLlVJLlBvaW50KGUsZil9O2JyZWFrO2Nhc2UgU3lz LkJyb3dzZXIuU2FmYXJpOlN5cy5VSS5Eb21FbGVtZW50LmdldExvY2F0aW9uPWZ1 bmN0aW9uKGMpe1VMU29aNzo7aWYoYy53aW5kb3cmJmMud2luZG93PT09Y3x8Yy5u b2RlVHlwZT09PTkpcmV0dXJuIG5ldyBTeXMuVUkuUG9pbnQoMCwwKTt2YXIgZj0w LGc9MCxqPW51bGwsZT1udWxsLGI7Zm9yKHZhciBhPWM7YTtqPWEsKGU9YixhPWEu b2Zmc2V0UGFyZW50KSl7Yj1TeXMuVUkuRG9tRWxlbWVudC5fZ2V0Q3VycmVudFN0 eWxlKGEpO3ZhciBkPWEudGFnTmFtZT9hLnRhZ05hbWUudG9VcHBlckNhc2UoKTpu dWxsO2lmKChhLm9mZnNldExlZnR8fGEub2Zmc2V0VG9wKSYmKGQhPT0iQk9EWSJ8 fCghZXx8ZS5wb3NpdGlvbiE9PSJhYnNvbHV0ZSIpKSl7Zis9YS5vZmZzZXRMZWZ0 O2crPWEub2Zmc2V0VG9wfX1iPVN5cy5VSS5Eb21FbGVtZW50Ll9nZXRDdXJyZW50 U3R5bGUoYyk7dmFyIGg9Yj9iLnBvc2l0aW9uOm51bGw7aWYoIWh8fGghPT0iYWJz b2x1dGUiKWZvcih2YXIgYT1jLnBhcmVudE5vZGU7YTthPWEucGFyZW50Tm9kZSl7 ZD1hLnRhZ05hbWU/YS50YWdOYW1lLnRvVXBwZXJDYXNlKCk6bnVsbDtpZihkIT09 IkJPRFkiJiZkIT09IkhUTUwiJiYoYS5zY3JvbGxMZWZ0fHxhLnNjcm9sbFRvcCkp e2YtPWEuc2Nyb2xsTGVmdHx8MDtnLT1hLnNjcm9sbFRvcHx8MH1iPVN5cy5VSS5E b21FbGVtZW50Ll9nZXRDdXJyZW50U3R5bGUoYSk7dmFyIGk9Yj9iLnBvc2l0aW9u Om51bGw7aWYoaSYmaT09PSJhYnNvbHV0ZSIpYnJlYWt9cmV0dXJuIG5ldyBTeXMu VUkuUG9pbnQoZixnKX07YnJlYWs7Y2FzZSBTeXMuQnJvd3Nlci5PcGVyYTpTeXMu VUkuRG9tRWxlbWVudC5nZXRMb2NhdGlvbj1mdW5jdGlvbihiKXtVTFNvWjc6O2lm KGIud2luZG93JiZiLndpbmRvdz09PWJ8fGIubm9kZVR5cGU9PT05KXJldHVybiBu ZXcgU3lzLlVJLlBvaW50KDAsMCk7dmFyIGQ9MCxlPTAsaT1udWxsO2Zvcih2YXIg YT1iO2E7aT1hLGE9YS5vZmZzZXRQYXJlbnQpe3ZhciBmPWEudGFnTmFtZTtkKz1h Lm9mZnNldExlZnR8fDA7ZSs9YS5vZmZzZXRUb3B8fDB9dmFyIGc9Yi5zdHlsZS5w b3NpdGlvbixjPWcmJmchPT0ic3RhdGljIjtmb3IodmFyIGE9Yi5wYXJlbnROb2Rl O2E7YT1hLnBhcmVudE5vZGUpe2Y9YS50YWdOYW1lP2EudGFnTmFtZS50b1VwcGVy Q2FzZSgpOm51bGw7aWYoZiE9PSJCT0RZIiYmZiE9PSJIVE1MIiYmKGEuc2Nyb2xs TGVmdHx8YS5zY3JvbGxUb3ApJiYoYyYmKGEuc3R5bGUub3ZlcmZsb3c9PT0ic2Ny b2xsInx8YS5zdHlsZS5vdmVyZmxvdz09PSJhdXRvIikpKXtkLT1hLnNjcm9sbExl ZnR8fDA7ZS09YS5zY3JvbGxUb3B8fDB9dmFyIGg9YSYmYS5zdHlsZT9hLnN0eWxl LnBvc2l0aW9uOm51bGw7Yz1jfHxoJiZoIT09InN0YXRpYyJ9cmV0dXJuIG5ldyBT eXMuVUkuUG9pbnQoZCxlKX07YnJlYWs7ZGVmYXVsdDpTeXMuVUkuRG9tRWxlbWVu dC5nZXRMb2NhdGlvbj1mdW5jdGlvbihkKXtVTFNvWjc6O2lmKGQud2luZG93JiZk LndpbmRvdz09PWR8fGQubm9kZVR5cGU9PT05KXJldHVybiBuZXcgU3lzLlVJLlBv aW50KDAsMCk7dmFyIGU9MCxmPTAsaT1udWxsLGc9bnVsbCxiPW51bGw7Zm9yKHZh ciBhPWQ7YTtpPWEsKGc9YixhPWEub2Zmc2V0UGFyZW50KSl7dmFyIGM9YS50YWdO YW1lP2EudGFnTmFtZS50b1VwcGVyQ2FzZSgpOm51bGw7Yj1TeXMuVUkuRG9tRWxl bWVudC5fZ2V0Q3VycmVudFN0eWxlKGEpO2lmKChhLm9mZnNldExlZnR8fGEub2Zm c2V0VG9wKSYmIShjPT09IkJPRFkiJiYoIWd8fGcucG9zaXRpb24hPT0iYWJzb2x1 dGUiKSkpe2UrPWEub2Zmc2V0TGVmdDtmKz1hLm9mZnNldFRvcH1pZihpIT09bnVs bCYmYil7aWYoYyE9PSJUQUJMRSImJmMhPT0iVEQiJiZjIT09IkhUTUwiKXtlKz1w YXJzZUludChiLmJvcmRlckxlZnRXaWR0aCl8fDA7Zis9cGFyc2VJbnQoYi5ib3Jk ZXJUb3BXaWR0aCl8fDB9aWYoYz09PSJUQUJMRSImJihiLnBvc2l0aW9uPT09InJl bGF0aXZlInx8Yi5wb3NpdGlvbj09PSJhYnNvbHV0ZSIpKXtlKz1wYXJzZUludChi Lm1hcmdpbkxlZnQpfHwwO2YrPXBhcnNlSW50KGIubWFyZ2luVG9wKXx8MH19fWI9 U3lzLlVJLkRvbUVsZW1lbnQuX2dldEN1cnJlbnRTdHlsZShkKTt2YXIgaD1iP2Iu cG9zaXRpb246bnVsbDtpZighaHx8aCE9PSJhYnNvbHV0ZSIpZm9yKHZhciBhPWQu cGFyZW50Tm9kZTthO2E9YS5wYXJlbnROb2RlKXtjPWEudGFnTmFtZT9hLnRhZ05h bWUudG9VcHBlckNhc2UoKTpudWxsO2lmKGMhPT0iQk9EWSImJmMhPT0iSFRNTCIm JihhLnNjcm9sbExlZnR8fGEuc2Nyb2xsVG9wKSl7ZS09YS5zY3JvbGxMZWZ0fHww O2YtPWEuc2Nyb2xsVG9wfHwwO2I9U3lzLlVJLkRvbUVsZW1lbnQuX2dldEN1cnJl bnRTdHlsZShhKTtpZihiKXtlKz1wYXJzZUludChiLmJvcmRlckxlZnRXaWR0aCl8 fDA7Zis9cGFyc2VJbnQoYi5ib3JkZXJUb3BXaWR0aCl8fDB9fX1yZXR1cm4gbmV3 IFN5cy5VSS5Qb2ludChlLGYpfX1TeXMuVUkuRG9tRWxlbWVudC5yZW1vdmVDc3ND bGFzcz1mdW5jdGlvbihkLGMpe1VMU29aNzo7dmFyIGE9IiAiK2QuY2xhc3NOYW1l KyIgIixiPWEuaW5kZXhPZigiICIrYysiICIpO2lmKGI+PTApZC5jbGFzc05hbWU9 KGEuc3Vic3RyKDAsYikrIiAiK2Euc3Vic3RyaW5nKGIrYy5sZW5ndGgrMSxhLmxl bmd0aCkpLnRyaW0oKX07U3lzLlVJLkRvbUVsZW1lbnQuc2V0TG9jYXRpb249ZnVu Y3Rpb24oYixjLGQpe1VMU29aNzo7dmFyIGE9Yi5zdHlsZTthLnBvc2l0aW9uPSJh YnNvbHV0ZSI7YS5sZWZ0PWMrInB4IjthLnRvcD1kKyJweCJ9O1N5cy5VSS5Eb21F bGVtZW50LnRvZ2dsZUNzc0NsYXNzPWZ1bmN0aW9uKGIsYSl7VUxTb1o3OjtpZihT eXMuVUkuRG9tRWxlbWVudC5jb250YWluc0Nzc0NsYXNzKGIsYSkpU3lzLlVJLkRv bUVsZW1lbnQucmVtb3ZlQ3NzQ2xhc3MoYixhKTtlbHNlIFN5cy5VSS5Eb21FbGVt ZW50LmFkZENzc0NsYXNzKGIsYSl9O1N5cy5VSS5Eb21FbGVtZW50LmdldFZpc2li aWxpdHlNb2RlPWZ1bmN0aW9uKGEpe1VMU29aNzo7cmV0dXJuIGEuX3Zpc2liaWxp dHlNb2RlPT09U3lzLlVJLlZpc2liaWxpdHlNb2RlLmhpZGU/U3lzLlVJLlZpc2li aWxpdHlNb2RlLmhpZGU6U3lzLlVJLlZpc2liaWxpdHlNb2RlLmNvbGxhcHNlfTtT eXMuVUkuRG9tRWxlbWVudC5zZXRWaXNpYmlsaXR5TW9kZT1mdW5jdGlvbihhLGIp e1VMU29aNzo7U3lzLlVJLkRvbUVsZW1lbnQuX2Vuc3VyZU9sZERpc3BsYXlNb2Rl KGEpO2lmKGEuX3Zpc2liaWxpdHlNb2RlIT09Yil7YS5fdmlzaWJpbGl0eU1vZGU9 YjtpZihTeXMuVUkuRG9tRWxlbWVudC5nZXRWaXNpYmxlKGEpPT09ZmFsc2UpaWYo YS5fdmlzaWJpbGl0eU1vZGU9PT1TeXMuVUkuVmlzaWJpbGl0eU1vZGUuaGlkZSlh LnN0eWxlLmRpc3BsYXk9YS5fb2xkRGlzcGxheU1vZGU7ZWxzZSBhLnN0eWxlLmRp c3BsYXk9Im5vbmUiO2EuX3Zpc2liaWxpdHlNb2RlPWJ9fTtTeXMuVUkuRG9tRWxl bWVudC5nZXRWaXNpYmxlPWZ1bmN0aW9uKGIpe1VMU29aNzo7dmFyIGE9Yi5jdXJy ZW50U3R5bGV8fFN5cy5VSS5Eb21FbGVtZW50Ll9nZXRDdXJyZW50U3R5bGUoYik7 aWYoIWEpcmV0dXJuIHRydWU7cmV0dXJuIGEudmlzaWJpbGl0eSE9PSJoaWRkZW4i JiZhLmRpc3BsYXkhPT0ibm9uZSJ9O1N5cy5VSS5Eb21FbGVtZW50LnNldFZpc2li bGU9ZnVuY3Rpb24oYSxiKXtVTFNvWjc6O2lmKGIhPT1TeXMuVUkuRG9tRWxlbWVu dC5nZXRWaXNpYmxlKGEpKXtTeXMuVUkuRG9tRWxlbWVudC5fZW5zdXJlT2xkRGlz cGxheU1vZGUoYSk7YS5zdHlsZS52aXNpYmlsaXR5PWI/InZpc2libGUiOiJoaWRk ZW4iO2lmKGJ8fGEuX3Zpc2liaWxpdHlNb2RlPT09U3lzLlVJLlZpc2liaWxpdHlN b2RlLmhpZGUpYS5zdHlsZS5kaXNwbGF5PWEuX29sZERpc3BsYXlNb2RlO2Vsc2Ug YS5zdHlsZS5kaXNwbGF5PSJub25lIn19O1N5cy5VSS5Eb21FbGVtZW50Ll9lbnN1 cmVPbGREaXNwbGF5TW9kZT1mdW5jdGlvbihhKXtVTFNvWjc6O2lmKCFhLl9vbGRE aXNwbGF5TW9kZSl7dmFyIGI9YS5jdXJyZW50U3R5bGV8fFN5cy5VSS5Eb21FbGVt ZW50Ll9nZXRDdXJyZW50U3R5bGUoYSk7YS5fb2xkRGlzcGxheU1vZGU9Yj9iLmRp c3BsYXk6bnVsbDtpZighYS5fb2xkRGlzcGxheU1vZGV8fGEuX29sZERpc3BsYXlN b2RlPT09Im5vbmUiKXN3aXRjaChhLnRhZ05hbWUudG9VcHBlckNhc2UoKSl7Y2Fz ZSAiRElWIjpjYXNlICJQIjpjYXNlICJBRERSRVNTIjpjYXNlICJCTE9DS1FVT1RF IjpjYXNlICJCT0RZIjpjYXNlICJDT0wiOmNhc2UgIkNPTEdST1VQIjpjYXNlICJE RCI6Y2FzZSAiREwiOmNhc2UgIkRUIjpjYXNlICJGSUVMRFNFVCI6Y2FzZSAiRk9S TSI6Y2FzZSAiSDEiOmNhc2UgIkgyIjpjYXNlICJIMyI6Y2FzZSAiSDQiOmNhc2Ug Ikg1IjpjYXNlICJINiI6Y2FzZSAiSFIiOmNhc2UgIklGUkFNRSI6Y2FzZSAiTEVH RU5EIjpjYXNlICJPTCI6Y2FzZSAiUFJFIjpjYXNlICJUQUJMRSI6Y2FzZSAiVEQi OmNhc2UgIlRIIjpjYXNlICJUUiI6Y2FzZSAiVUwiOmEuX29sZERpc3BsYXlNb2Rl PSJibG9jayI7YnJlYWs7Y2FzZSAiTEkiOmEuX29sZERpc3BsYXlNb2RlPSJsaXN0 LWl0ZW0iO2JyZWFrO2RlZmF1bHQ6YS5fb2xkRGlzcGxheU1vZGU9ImlubGluZSJ9 fX07U3lzLlVJLkRvbUVsZW1lbnQuX2dldFdpbmRvdz1mdW5jdGlvbihhKXtVTFNv Wjc6O3ZhciBiPWEub3duZXJEb2N1bWVudHx8YS5kb2N1bWVudHx8YTtyZXR1cm4g Yi5kZWZhdWx0Vmlld3x8Yi5wYXJlbnRXaW5kb3d9O1N5cy5VSS5Eb21FbGVtZW50 Ll9nZXRDdXJyZW50U3R5bGU9ZnVuY3Rpb24oYSl7VUxTb1o3OjtpZihhLm5vZGVU eXBlPT09MylyZXR1cm4gbnVsbDt2YXIgYz1TeXMuVUkuRG9tRWxlbWVudC5fZ2V0 V2luZG93KGEpO2lmKGEuZG9jdW1lbnRFbGVtZW50KWE9YS5kb2N1bWVudEVsZW1l bnQ7dmFyIGI9YyYmYSE9PWMmJmMuZ2V0Q29tcHV0ZWRTdHlsZT9jLmdldENvbXB1 dGVkU3R5bGUoYSxudWxsKTphLmN1cnJlbnRTdHlsZXx8YS5zdHlsZTtpZighYiYm U3lzLkJyb3dzZXIuYWdlbnQ9PT1TeXMuQnJvd3Nlci5TYWZhcmkmJmEuc3R5bGUp e3ZhciBnPWEuc3R5bGUuZGlzcGxheSxmPWEuc3R5bGUucG9zaXRpb247YS5zdHls ZS5wb3NpdGlvbj0iYWJzb2x1dGUiO2Euc3R5bGUuZGlzcGxheT0iYmxvY2siO3Zh ciBlPWMuZ2V0Q29tcHV0ZWRTdHlsZShhLG51bGwpO2Euc3R5bGUuZGlzcGxheT1n O2Euc3R5bGUucG9zaXRpb249ZjtiPXt9O2Zvcih2YXIgZCBpbiBlKWJbZF09ZVtk XTtiLmRpc3BsYXk9Im5vbmUifXJldHVybiBifTtTeXMuSUNvbnRhaW5lcj1mdW5j dGlvbigpe307U3lzLklDb250YWluZXIucHJvdG90eXBlPXt9O1N5cy5JQ29udGFp bmVyLnJlZ2lzdGVySW50ZXJmYWNlKCJTeXMuSUNvbnRhaW5lciIpO1N5cy5fU2Ny aXB0TG9hZGVyPWZ1bmN0aW9uKCl7VUxTb1o3Ojt0aGlzLl9zY3JpcHRzVG9Mb2Fk PW51bGw7dGhpcy5fc2Vzc2lvbnM9W107dGhpcy5fc2NyaXB0TG9hZGVkRGVsZWdh dGU9RnVuY3Rpb24uY3JlYXRlRGVsZWdhdGUodGhpcyx0aGlzLl9zY3JpcHRMb2Fk ZWRIYW5kbGVyKX07U3lzLl9TY3JpcHRMb2FkZXIucHJvdG90eXBlPXtkaXNwb3Nl OmZ1bmN0aW9uKCl7VUxTb1o3Ojt0aGlzLl9zdG9wU2Vzc2lvbigpO3RoaXMuX2xv YWRpbmc9ZmFsc2U7aWYodGhpcy5fZXZlbnRzKWRlbGV0ZSB0aGlzLl9ldmVudHM7 dGhpcy5fc2Vzc2lvbnM9bnVsbDt0aGlzLl9jdXJyZW50U2Vzc2lvbj1udWxsO3Ro aXMuX3NjcmlwdExvYWRlZERlbGVnYXRlPW51bGx9LGxvYWRTY3JpcHRzOmZ1bmN0 aW9uKGQsYixjLGEpe1VMU29aNzo7dmFyIGU9e2FsbFNjcmlwdHNMb2FkZWRDYWxs YmFjazpiLHNjcmlwdExvYWRGYWlsZWRDYWxsYmFjazpjLHNjcmlwdExvYWRUaW1l b3V0Q2FsbGJhY2s6YSxzY3JpcHRzVG9Mb2FkOnRoaXMuX3NjcmlwdHNUb0xvYWQs c2NyaXB0VGltZW91dDpkfTt0aGlzLl9zY3JpcHRzVG9Mb2FkPW51bGw7dGhpcy5f c2Vzc2lvbnNbdGhpcy5fc2Vzc2lvbnMubGVuZ3RoXT1lO2lmKCF0aGlzLl9sb2Fk aW5nKXRoaXMuX25leHRTZXNzaW9uKCl9LG5vdGlmeVNjcmlwdExvYWRlZDpmdW5j dGlvbigpe1VMU29aNzo7aWYoIXRoaXMuX2xvYWRpbmcpcmV0dXJuO3RoaXMuX2N1 cnJlbnRUYXNrLl9ub3RpZmllZCsrO2lmKFN5cy5Ccm93c2VyLmFnZW50PT09U3lz LkJyb3dzZXIuU2FmYXJpKWlmKHRoaXMuX2N1cnJlbnRUYXNrLl9ub3RpZmllZD09 PTEpd2luZG93LnNldFRpbWVvdXQoRnVuY3Rpb24uY3JlYXRlRGVsZWdhdGUodGhp cyxmdW5jdGlvbigpe1VMU29aNzo7dGhpcy5fc2NyaXB0TG9hZGVkSGFuZGxlcih0 aGlzLl9jdXJyZW50VGFzay5nZXRfc2NyaXB0RWxlbWVudCgpLHRydWUpfSksMCl9 LHF1ZXVlQ3VzdG9tU2NyaXB0VGFnOmZ1bmN0aW9uKGEpe1VMU29aNzo7aWYoIXRo aXMuX3NjcmlwdHNUb0xvYWQpdGhpcy5fc2NyaXB0c1RvTG9hZD1bXTtBcnJheS5h ZGQodGhpcy5fc2NyaXB0c1RvTG9hZCxhKX0scXVldWVTY3JpcHRCbG9jazpmdW5j dGlvbihhKXtVTFNvWjc6O2lmKCF0aGlzLl9zY3JpcHRzVG9Mb2FkKXRoaXMuX3Nj cmlwdHNUb0xvYWQ9W107QXJyYXkuYWRkKHRoaXMuX3NjcmlwdHNUb0xvYWQse3Rl eHQ6YX0pfSxxdWV1ZVNjcmlwdFJlZmVyZW5jZTpmdW5jdGlvbihhKXtVTFNvWjc6 O2lmKCF0aGlzLl9zY3JpcHRzVG9Mb2FkKXRoaXMuX3NjcmlwdHNUb0xvYWQ9W107 QXJyYXkuYWRkKHRoaXMuX3NjcmlwdHNUb0xvYWQse3NyYzphfSl9LF9jcmVhdGVT Y3JpcHRFbGVtZW50OmZ1bmN0aW9uKGMpe1VMU29aNzo7dmFyIGE9ZG9jdW1lbnQu Y3JlYXRlRWxlbWVudCgic2NyaXB0Iik7YS50eXBlPSJ0ZXh0L2phdmFzY3JpcHQi O2Zvcih2YXIgYiBpbiBjKWFbYl09Y1tiXTtyZXR1cm4gYX0sX2xvYWRTY3JpcHRz SW50ZXJuYWw6ZnVuY3Rpb24oKXtVTFNvWjc6O3ZhciBiPXRoaXMuX2N1cnJlbnRT ZXNzaW9uO2lmKGIuc2NyaXB0c1RvTG9hZCYmYi5zY3JpcHRzVG9Mb2FkLmxlbmd0 aD4wKXt2YXIgYz1BcnJheS5kZXF1ZXVlKGIuc2NyaXB0c1RvTG9hZCksYT10aGlz Ll9jcmVhdGVTY3JpcHRFbGVtZW50KGMpO2lmKGEudGV4dCYmU3lzLkJyb3dzZXIu YWdlbnQ9PT1TeXMuQnJvd3Nlci5TYWZhcmkpe2EuaW5uZXJIVE1MPWEudGV4dDtk ZWxldGUgYS50ZXh0fWlmKHR5cGVvZiBjLnNyYz09PSJzdHJpbmciKXt0aGlzLl9j dXJyZW50VGFzaz1uZXcgU3lzLl9TY3JpcHRMb2FkZXJUYXNrKGEsdGhpcy5fc2Ny aXB0TG9hZGVkRGVsZWdhdGUpO3RoaXMuX2N1cnJlbnRUYXNrLmV4ZWN1dGUoKX1l bHNle2RvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0uYXBw ZW5kQ2hpbGQoYSk7U3lzLl9TY3JpcHRMb2FkZXIuX2NsZWFyU2NyaXB0KGEpO3Ro aXMuX2xvYWRTY3JpcHRzSW50ZXJuYWwoKX19ZWxzZXt0aGlzLl9zdG9wU2Vzc2lv bigpO3ZhciBkPWIuYWxsU2NyaXB0c0xvYWRlZENhbGxiYWNrO2lmKGQpZCh0aGlz KTt0aGlzLl9uZXh0U2Vzc2lvbigpfX0sX25leHRTZXNzaW9uOmZ1bmN0aW9uKCl7 VUxTb1o3OjtpZih0aGlzLl9zZXNzaW9ucy5sZW5ndGg9PT0wKXt0aGlzLl9sb2Fk aW5nPWZhbHNlO3RoaXMuX2N1cnJlbnRTZXNzaW9uPW51bGw7cmV0dXJufXRoaXMu X2xvYWRpbmc9dHJ1ZTt2YXIgYT1BcnJheS5kZXF1ZXVlKHRoaXMuX3Nlc3Npb25z KTt0aGlzLl9jdXJyZW50U2Vzc2lvbj1hO2lmKGEuc2NyaXB0VGltZW91dD4wKXRo aXMuX3RpbWVvdXRDb29raWU9d2luZG93LnNldFRpbWVvdXQoRnVuY3Rpb24uY3Jl YXRlRGVsZWdhdGUodGhpcyx0aGlzLl9zY3JpcHRMb2FkVGltZW91dEhhbmRsZXIp LGEuc2NyaXB0VGltZW91dCoxMDAwKTt0aGlzLl9sb2FkU2NyaXB0c0ludGVybmFs KCl9LF9yYWlzZUVycm9yOmZ1bmN0aW9uKGEpe1VMU29aNzo7dmFyIGM9dGhpcy5f Y3VycmVudFNlc3Npb24uc2NyaXB0TG9hZEZhaWxlZENhbGxiYWNrLGI9dGhpcy5f Y3VycmVudFRhc2suZ2V0X3NjcmlwdEVsZW1lbnQoKTt0aGlzLl9zdG9wU2Vzc2lv bigpO2lmKGMpe2ModGhpcyxiLGEpO3RoaXMuX25leHRTZXNzaW9uKCl9ZWxzZXt0 aGlzLl9sb2FkaW5nPWZhbHNlO3Rocm93IFN5cy5fU2NyaXB0TG9hZGVyLl9lcnJv clNjcmlwdExvYWRGYWlsZWQoYi5zcmMsYSl9fSxfc2NyaXB0TG9hZGVkSGFuZGxl cjpmdW5jdGlvbihhLGIpe1VMU29aNzo7aWYoYiYmdGhpcy5fY3VycmVudFRhc2su X25vdGlmaWVkKWlmKHRoaXMuX2N1cnJlbnRUYXNrLl9ub3RpZmllZD4xKXRoaXMu X3JhaXNlRXJyb3IodHJ1ZSk7ZWxzZXtBcnJheS5hZGQoU3lzLl9TY3JpcHRMb2Fk ZXIuX2dldExvYWRlZFNjcmlwdHMoKSxhLnNyYyk7dGhpcy5fY3VycmVudFRhc2su ZGlzcG9zZSgpO3RoaXMuX2N1cnJlbnRUYXNrPW51bGw7dGhpcy5fbG9hZFNjcmlw dHNJbnRlcm5hbCgpfWVsc2UgdGhpcy5fcmFpc2VFcnJvcihmYWxzZSl9LF9zY3Jp cHRMb2FkVGltZW91dEhhbmRsZXI6ZnVuY3Rpb24oKXtVTFNvWjc6O3ZhciBhPXRo aXMuX2N1cnJlbnRTZXNzaW9uLnNjcmlwdExvYWRUaW1lb3V0Q2FsbGJhY2s7dGhp cy5fc3RvcFNlc3Npb24oKTtpZihhKWEodGhpcyk7dGhpcy5fbmV4dFNlc3Npb24o KX0sX3N0b3BTZXNzaW9uOmZ1bmN0aW9uKCl7VUxTb1o3OjtpZih0aGlzLl90aW1l b3V0Q29va2llKXt3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVvdXRDb29r aWUpO3RoaXMuX3RpbWVvdXRDb29raWU9bnVsbH1pZih0aGlzLl9jdXJyZW50VGFz ayl7dGhpcy5fY3VycmVudFRhc2suZGlzcG9zZSgpO3RoaXMuX2N1cnJlbnRUYXNr PW51bGx9fX07U3lzLl9TY3JpcHRMb2FkZXIucmVnaXN0ZXJDbGFzcygiU3lzLl9T Y3JpcHRMb2FkZXIiLG51bGwsU3lzLklEaXNwb3NhYmxlKTtTeXMuX1NjcmlwdExv YWRlci5nZXRJbnN0YW5jZT1mdW5jdGlvbigpe1VMU29aNzo7dmFyIGE9U3lzLl9T Y3JpcHRMb2FkZXIuX2FjdGl2ZUluc3RhbmNlO2lmKCFhKWE9U3lzLl9TY3JpcHRM b2FkZXIuX2FjdGl2ZUluc3RhbmNlPW5ldyBTeXMuX1NjcmlwdExvYWRlcjtyZXR1 cm4gYX07U3lzLl9TY3JpcHRMb2FkZXIuaXNTY3JpcHRMb2FkZWQ9ZnVuY3Rpb24o Yil7VUxTb1o3Ojt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQi KTthLnNyYz1iO3JldHVybiBBcnJheS5jb250YWlucyhTeXMuX1NjcmlwdExvYWRl ci5fZ2V0TG9hZGVkU2NyaXB0cygpLGEuc3JjKX07U3lzLl9TY3JpcHRMb2FkZXIu cmVhZExvYWRlZFNjcmlwdHM9ZnVuY3Rpb24oKXtVTFNvWjc6O2lmKCFTeXMuX1Nj cmlwdExvYWRlci5fcmVmZXJlbmNlZFNjcmlwdHMpe3ZhciBiPVN5cy5fU2NyaXB0 TG9hZGVyLl9yZWZlcmVuY2VkU2NyaXB0cz1bXSxjPWRvY3VtZW50LmdldEVsZW1l bnRzQnlUYWdOYW1lKCJzY3JpcHQiKTtmb3IoaT1jLmxlbmd0aC0xO2k+PTA7aS0t KXt2YXIgZD1jW2ldLGE9ZC5zcmM7aWYoYS5sZW5ndGgpaWYoIUFycmF5LmNvbnRh aW5zKGIsYSkpQXJyYXkuYWRkKGIsYSl9fX07U3lzLl9TY3JpcHRMb2FkZXIuX2Ns ZWFyU2NyaXB0PWZ1bmN0aW9uKGEpe1VMU29aNzo7aWYoIVN5cy5EZWJ1Zy5pc0Rl YnVnKWEucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChhKX07U3lzLl9TY3JpcHRMb2Fk ZXIuX2Vycm9yU2NyaXB0TG9hZEZhaWxlZD1mdW5jdGlvbihiLGQpe1VMU29aNzo7 dmFyIGE7aWYoZClhPVN5cy5SZXMuc2NyaXB0TG9hZE11bHRpcGxlQ2FsbGJhY2tz O2Vsc2UgYT1TeXMuUmVzLnNjcmlwdExvYWRGYWlsZWQ7dmFyIGU9IlN5cy5TY3Jp cHRMb2FkRmFpbGVkRXhjZXB0aW9uOiAiK1N0cmluZy5mb3JtYXQoYSxiKSxjPUVy cm9yLmNyZWF0ZShlLHtuYW1lOiJTeXMuU2NyaXB0TG9hZEZhaWxlZEV4Y2VwdGlv biIsInNjcmlwdFVybCI6Yn0pO2MucG9wU3RhY2tGcmFtZSgpO3JldHVybiBjfTtT eXMuX1NjcmlwdExvYWRlci5fZ2V0TG9hZGVkU2NyaXB0cz1mdW5jdGlvbigpe1VM U29aNzo7aWYoIVN5cy5fU2NyaXB0TG9hZGVyLl9yZWZlcmVuY2VkU2NyaXB0cyl7 U3lzLl9TY3JpcHRMb2FkZXIuX3JlZmVyZW5jZWRTY3JpcHRzPVtdO1N5cy5fU2Ny aXB0TG9hZGVyLnJlYWRMb2FkZWRTY3JpcHRzKCl9cmV0dXJuIFN5cy5fU2NyaXB0 TG9hZGVyLl9yZWZlcmVuY2VkU2NyaXB0c307U3lzLl9TY3JpcHRMb2FkZXJUYXNr PWZ1bmN0aW9uKGIsYSl7VUxTb1o3Ojt0aGlzLl9zY3JpcHRFbGVtZW50PWI7dGhp cy5fY29tcGxldGVkQ2FsbGJhY2s9YTt0aGlzLl9ub3RpZmllZD0wfTtTeXMuX1Nj cmlwdExvYWRlclRhc2sucHJvdG90eXBlPXtnZXRfc2NyaXB0RWxlbWVudDpmdW5j dGlvbigpe1VMU29aNzo7cmV0dXJuIHRoaXMuX3NjcmlwdEVsZW1lbnR9LGRpc3Bv c2U6ZnVuY3Rpb24oKXtVTFNvWjc6O2lmKHRoaXMuX2Rpc3Bvc2VkKXJldHVybjt0 aGlzLl9kaXNwb3NlZD10cnVlO3RoaXMuX3JlbW92ZVNjcmlwdEVsZW1lbnRIYW5k bGVycygpO1N5cy5fU2NyaXB0TG9hZGVyLl9jbGVhclNjcmlwdCh0aGlzLl9zY3Jp cHRFbGVtZW50KTt0aGlzLl9zY3JpcHRFbGVtZW50PW51bGx9LGV4ZWN1dGU6ZnVu Y3Rpb24oKXtVTFNvWjc6O3RoaXMuX2FkZFNjcmlwdEVsZW1lbnRIYW5kbGVycygp O2RvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0uYXBwZW5k Q2hpbGQodGhpcy5fc2NyaXB0RWxlbWVudCl9LF9hZGRTY3JpcHRFbGVtZW50SGFu ZGxlcnM6ZnVuY3Rpb24oKXtVTFNvWjc6O3RoaXMuX3NjcmlwdExvYWREZWxlZ2F0 ZT1GdW5jdGlvbi5jcmVhdGVEZWxlZ2F0ZSh0aGlzLHRoaXMuX3NjcmlwdExvYWRI YW5kbGVyKTtpZihTeXMuQnJvd3Nlci5hZ2VudCE9PVN5cy5Ccm93c2VyLkludGVy bmV0RXhwbG9yZXIpe3RoaXMuX3NjcmlwdEVsZW1lbnQucmVhZHlTdGF0ZT0ibG9h ZGVkIjskYWRkSGFuZGxlcih0aGlzLl9zY3JpcHRFbGVtZW50LCJsb2FkIix0aGlz Ll9zY3JpcHRMb2FkRGVsZWdhdGUpfWVsc2UgJGFkZEhhbmRsZXIodGhpcy5fc2Ny aXB0RWxlbWVudCwicmVhZHlzdGF0ZWNoYW5nZSIsdGhpcy5fc2NyaXB0TG9hZERl bGVnYXRlKTtpZih0aGlzLl9zY3JpcHRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIp e3RoaXMuX3NjcmlwdEVycm9yRGVsZWdhdGU9RnVuY3Rpb24uY3JlYXRlRGVsZWdh dGUodGhpcyx0aGlzLl9zY3JpcHRFcnJvckhhbmRsZXIpO3RoaXMuX3NjcmlwdEVs ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLHRoaXMuX3NjcmlwdEVycm9y RGVsZWdhdGUsZmFsc2UpfX0sX3JlbW92ZVNjcmlwdEVsZW1lbnRIYW5kbGVyczpm dW5jdGlvbigpe1VMU29aNzo7aWYodGhpcy5fc2NyaXB0TG9hZERlbGVnYXRlKXt2 YXIgYT10aGlzLmdldF9zY3JpcHRFbGVtZW50KCk7aWYoU3lzLkJyb3dzZXIuYWdl bnQhPT1TeXMuQnJvd3Nlci5JbnRlcm5ldEV4cGxvcmVyKSRyZW1vdmVIYW5kbGVy KGEsImxvYWQiLHRoaXMuX3NjcmlwdExvYWREZWxlZ2F0ZSk7ZWxzZSAkcmVtb3Zl SGFuZGxlcihhLCJyZWFkeXN0YXRlY2hhbmdlIix0aGlzLl9zY3JpcHRMb2FkRGVs ZWdhdGUpO2lmKHRoaXMuX3NjcmlwdEVycm9yRGVsZWdhdGUpe3RoaXMuX3Njcmlw dEVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZXJyb3IiLHRoaXMuX3Njcmlw dEVycm9yRGVsZWdhdGUsZmFsc2UpO3RoaXMuX3NjcmlwdEVycm9yRGVsZWdhdGU9 bnVsbH10aGlzLl9zY3JpcHRMb2FkRGVsZWdhdGU9bnVsbH19LF9zY3JpcHRFcnJv ckhhbmRsZXI6ZnVuY3Rpb24oKXtVTFNvWjc6O2lmKHRoaXMuX2Rpc3Bvc2VkKXJl dHVybjt0aGlzLl9jb21wbGV0ZWRDYWxsYmFjayh0aGlzLmdldF9zY3JpcHRFbGVt ZW50KCksZmFsc2UpfSxfc2NyaXB0TG9hZEhhbmRsZXI6ZnVuY3Rpb24oKXtVTFNv Wjc6O2lmKHRoaXMuX2Rpc3Bvc2VkKXJldHVybjt2YXIgYT10aGlzLmdldF9zY3Jp cHRFbGVtZW50KCk7aWYoYS5yZWFkeVN0YXRlIT09ImxvYWRlZCImJmEucmVhZHlT dGF0ZSE9PSJjb21wbGV0ZSIpcmV0dXJuO3ZhciBiPXRoaXM7d2luZG93LnNldFRp bWVvdXQoZnVuY3Rpb24oKXtVTFNvWjc6O2IuX2NvbXBsZXRlZENhbGxiYWNrKGEs dHJ1ZSl9LDApfX07U3lzLl9TY3JpcHRMb2FkZXJUYXNrLnJlZ2lzdGVyQ2xhc3Mo IlN5cy5fU2NyaXB0TG9hZGVyVGFzayIsbnVsbCxTeXMuSURpc3Bvc2FibGUpO1N5 cy5BcHBsaWNhdGlvbkxvYWRFdmVudEFyZ3M9ZnVuY3Rpb24oYixhKXtVTFNvWjc6 O1N5cy5BcHBsaWNhdGlvbkxvYWRFdmVudEFyZ3MuaW5pdGlhbGl6ZUJhc2UodGhp cyk7dGhpcy5fY29tcG9uZW50cz1iO3RoaXMuX2lzUGFydGlhbExvYWQ9YX07U3lz LkFwcGxpY2F0aW9uTG9hZEV2ZW50QXJncy5wcm90b3R5cGU9e2dldF9jb21wb25l bnRzOmZ1bmN0aW9uKCl7VUxTb1o3OjtyZXR1cm4gdGhpcy5fY29tcG9uZW50c30s Z2V0X2lzUGFydGlhbExvYWQ6ZnVuY3Rpb24oKXtVTFNvWjc6O3JldHVybiB0aGlz Ll9pc1BhcnRpYWxMb2FkfX07U3lzLkFwcGxpY2F0aW9uTG9hZEV2ZW50QXJncy5y ZWdpc3RlckNsYXNzKCJTeXMuQXBwbGljYXRpb25Mb2FkRXZlbnRBcmdzIixTeXMu RXZlbnRBcmdzKTtTeXMuSGlzdG9yeUV2ZW50QXJncz1mdW5jdGlvbihhKXtVTFNv Wjc6O1N5cy5IaXN0b3J5RXZlbnRBcmdzLmluaXRpYWxpemVCYXNlKHRoaXMpO3Ro aXMuX3N0YXRlPWF9O1N5cy5IaXN0b3J5RXZlbnRBcmdzLnByb3RvdHlwZT17Z2V0 X3N0YXRlOmZ1bmN0aW9uKCl7VUxTb1o3OjtyZXR1cm4gdGhpcy5fc3RhdGV9fTtT eXMuSGlzdG9yeUV2ZW50QXJncy5yZWdpc3RlckNsYXNzKCJTeXMuSGlzdG9yeUV2 ZW50QXJncyIsU3lzLkV2ZW50QXJncyk7U3lzLl9BcHBsaWNhdGlvbj1mdW5jdGlv bigpe1VMU29aNzo7U3lzLl9BcHBsaWNhdGlvbi5pbml0aWFsaXplQmFzZSh0aGlz KTt0aGlzLl9kaXNwb3NhYmxlT2JqZWN0cz1bXTt0aGlzLl9jb21wb25lbnRzPXt9 O3RoaXMuX2NyZWF0ZWRDb21wb25lbnRzPVtdO3RoaXMuX3NlY29uZFBhc3NDb21w b25lbnRzPVtdO3RoaXMuX2FwcExvYWRIYW5kbGVyPW51bGw7dGhpcy5fYmVnaW5S ZXF1ZXN0SGFuZGxlcj1udWxsO3RoaXMuX2NsaWVudElkPW51bGw7dGhpcy5fY3Vy cmVudEVudHJ5PSIiO3RoaXMuX2VuZFJlcXVlc3RIYW5kbGVyPW51bGw7dGhpcy5f aGlzdG9yeT1udWxsO3RoaXMuX2VuYWJsZUhpc3Rvcnk9ZmFsc2U7dGhpcy5faGlz dG9yeUZyYW1lPW51bGw7dGhpcy5faGlzdG9yeUluaXRpYWxpemVkPWZhbHNlO3Ro aXMuX2hpc3RvcnlJbml0aWFsTGVuZ3RoPTA7dGhpcy5faGlzdG9yeUxlbmd0aD0w O3RoaXMuX2hpc3RvcnlQb2ludElzTmV3PWZhbHNlO3RoaXMuX2lnbm9yZVRpbWVy PWZhbHNlO3RoaXMuX2luaXRpYWxTdGF0ZT1udWxsO3RoaXMuX3N0YXRlPXt9O3Ro aXMuX3RpbWVyQ29va2llPTA7dGhpcy5fdGltZXJIYW5kbGVyPW51bGw7dGhpcy5f dW5pcXVlSWQ9bnVsbDt0aGlzLl91bmxvYWRIYW5kbGVyRGVsZWdhdGU9RnVuY3Rp b24uY3JlYXRlRGVsZWdhdGUodGhpcyx0aGlzLl91bmxvYWRIYW5kbGVyKTt0aGlz Ll9sb2FkSGFuZGxlckRlbGVnYXRlPUZ1bmN0aW9uLmNyZWF0ZURlbGVnYXRlKHRo aXMsdGhpcy5fbG9hZEhhbmRsZXIpO1N5cy5VSS5Eb21FdmVudC5hZGRIYW5kbGVy KHdpbmRvdywidW5sb2FkIix0aGlzLl91bmxvYWRIYW5kbGVyRGVsZWdhdGUpO1N5 cy5VSS5Eb21FdmVudC5hZGRIYW5kbGVyKHdpbmRvdywibG9hZCIsdGhpcy5fbG9h ZEhhbmRsZXJEZWxlZ2F0ZSl9O1N5cy5fQXBwbGljYXRpb24ucHJvdG90eXBlPXtf Y3JlYXRpbmdDb21wb25lbnRzOmZhbHNlLF9kaXNwb3Npbmc6ZmFsc2UsZ2V0X2lz Q3JlYXRpbmdDb21wb25lbnRzOmZ1bmN0aW9uKCl7VUxTb1o3OjtyZXR1cm4gdGhp cy5fY3JlYXRpbmdDb21wb25lbnRzfSxnZXRfc3RhdGVTdHJpbmc6ZnVuY3Rpb24o KXtVTFNvWjc6O3ZhciBhPXdpbmRvdy5sb2NhdGlvbi5oYXNoO2lmKHRoaXMuX2lz U2FmYXJpMigpKXt2YXIgYj10aGlzLl9nZXRIaXN0b3J5KCk7aWYoYilhPWJbd2lu ZG93Lmhpc3RvcnkubGVuZ3RoLXRoaXMuX2hpc3RvcnlJbml0aWFsTGVuZ3RoXX1p ZihhLmxlbmd0aD4wJiZhLmNoYXJBdCgwKT09PSIjIilhPWEuc3Vic3RyaW5nKDEp O2lmKFN5cy5Ccm93c2VyLmFnZW50PT09U3lzLkJyb3dzZXIuRmlyZWZveClhPXRo aXMuX3NlcmlhbGl6ZVN0YXRlKHRoaXMuX2Rlc2VyaWFsaXplU3RhdGUoYSx0cnVl KSk7cmV0dXJuIGF9LGdldF9lbmFibGVIaXN0b3J5OmZ1bmN0aW9uKCl7VUxTb1o3 OjtyZXR1cm4gdGhpcy5fZW5hYmxlSGlzdG9yeX0sc2V0X2VuYWJsZUhpc3Rvcnk6 ZnVuY3Rpb24oYSl7VUxTb1o3Ojt0aGlzLl9lbmFibGVIaXN0b3J5PWF9LGFkZF9p bml0OmZ1bmN0aW9uKGEpe1VMU29aNzo7aWYodGhpcy5faW5pdGlhbGl6ZWQpYSh0 aGlzLFN5cy5FdmVudEFyZ3MuRW1wdHkpO2Vsc2UgdGhpcy5nZXRfZXZlbnRzKCku YWRkSGFuZGxlcigiaW5pdCIsYSl9LHJlbW92ZV9pbml0OmZ1bmN0aW9uKGEpe1VM U29aNzo7dGhpcy5nZXRfZXZlbnRzKCkucmVtb3ZlSGFuZGxlcigiaW5pdCIsYSl9 LGFkZF9sb2FkOmZ1bmN0aW9uKGEpe1VMU29aNzo7dGhpcy5nZXRfZXZlbnRzKCku YWRkSGFuZGxlcigibG9hZCIsYSl9LHJlbW92ZV9sb2FkOmZ1bmN0aW9uKGEpe1VM U29aNzo7dGhpcy5nZXRfZXZlbnRzKCkucmVtb3ZlSGFuZGxlcigibG9hZCIsYSl9 LGFkZF9uYXZpZ2F0ZTpmdW5jdGlvbihhKXtVTFNvWjc6O3RoaXMuZ2V0X2V2ZW50 cygpLmFkZEhhbmRsZXIoIm5hdmlnYXRlIixhKX0scmVtb3ZlX25hdmlnYXRlOmZ1 bmN0aW9uKGEpe1VMU29aNzo7dGhpcy5nZXRfZXZlbnRzKCkucmVtb3ZlSGFuZGxl cigibmF2aWdhdGUiLGEpfSxhZGRfdW5sb2FkOmZ1bmN0aW9uKGEpe1VMU29aNzo7 dGhpcy5nZXRfZXZlbnRzKCkuYWRkSGFuZGxlcigidW5sb2FkIixhKX0scmVtb3Zl X3VubG9hZDpmdW5jdGlvbihhKXtVTFNvWjc6O3RoaXMuZ2V0X2V2ZW50cygpLnJl bW92ZUhhbmRsZXIoInVubG9hZCIsYSl9LGFkZENvbXBvbmVudDpmdW5jdGlvbihh KXtVTFNvWjc6O3RoaXMuX2NvbXBvbmVudHNbYS5nZXRfaWQoKV09YX0sYWRkSGlz dG9yeVBvaW50OmZ1bmN0aW9uKGMsZil7VUxTb1o3Ojt0aGlzLl9lbnN1cmVIaXN0 b3J5KCk7dmFyIGI9dGhpcy5fc3RhdGU7Zm9yKHZhciBhIGluIGMpe3ZhciBkPWNb YV07aWYoZD09PW51bGwpe2lmKHR5cGVvZiBiW2FdIT09InVuZGVmaW5lZCIpZGVs ZXRlIGJbYV19ZWxzZSBiW2FdPWR9dmFyIGU9dGhpcy5fc2VyaWFsaXplU3RhdGUo Yik7dGhpcy5faGlzdG9yeVBvaW50SXNOZXc9dHJ1ZTt0aGlzLl9zZXRTdGF0ZShl LGYpO3RoaXMuX3JhaXNlTmF2aWdhdGUoKX0sYmVnaW5DcmVhdGVDb21wb25lbnRz OmZ1bmN0aW9uKCl7VUxTb1o3Ojt0aGlzLl9jcmVhdGluZ0NvbXBvbmVudHM9dHJ1 ZX0sZGlzcG9zZTpmdW5jdGlvbigpe1VMU29aNzo7aWYoIXRoaXMuX2Rpc3Bvc2lu Zyl7dGhpcy5fZGlzcG9zaW5nPXRydWU7aWYodGhpcy5fdGltZXJDb29raWUpe3dp bmRvdy5jbGVhclRpbWVvdXQodGhpcy5fdGltZXJDb29raWUpO2RlbGV0ZSB0aGlz Ll90aW1lckNvb2tpZX1pZih0aGlzLl9lbmRSZXF1ZXN0SGFuZGxlcil7U3lzLldl YkZvcm1zLlBhZ2VSZXF1ZXN0TWFuYWdlci5nZXRJbnN0YW5jZSgpLnJlbW92ZV9l bmRSZXF1ZXN0KHRoaXMuX2VuZFJlcXVlc3RIYW5kbGVyKTtkZWxldGUgdGhpcy5f ZW5kUmVxdWVzdEhhbmRsZXJ9aWYodGhpcy5fYmVnaW5SZXF1ZXN0SGFuZGxlcil7 U3lzLldlYkZvcm1zLlBhZ2VSZXF1ZXN0TWFuYWdlci5nZXRJbnN0YW5jZSgpLnJl bW92ZV9iZWdpblJlcXVlc3QodGhpcy5fYmVnaW5SZXF1ZXN0SGFuZGxlcik7ZGVs ZXRlIHRoaXMuX2JlZ2luUmVxdWVzdEhhbmRsZXJ9aWYod2luZG93LnBhZ2VVbmxv YWQpd2luZG93LnBhZ2VVbmxvYWQodGhpcyxTeXMuRXZlbnRBcmdzLkVtcHR5KTt2 YXIgYz10aGlzLmdldF9ldmVudHMoKS5nZXRIYW5kbGVyKCJ1bmxvYWQiKTtpZihj KWModGhpcyxTeXMuRXZlbnRBcmdzLkVtcHR5KTt2YXIgYj1BcnJheS5jbG9uZSh0 aGlzLl9kaXNwb3NhYmxlT2JqZWN0cyk7Zm9yKHZhciBhPTAsZT1iLmxlbmd0aDth PGU7YSsrKWJbYV0uZGlzcG9zZSgpO0FycmF5LmNsZWFyKHRoaXMuX2Rpc3Bvc2Fi bGVPYmplY3RzKTtTeXMuVUkuRG9tRXZlbnQucmVtb3ZlSGFuZGxlcih3aW5kb3cs InVubG9hZCIsdGhpcy5fdW5sb2FkSGFuZGxlckRlbGVnYXRlKTtpZih0aGlzLl9s b2FkSGFuZGxlckRlbGVnYXRlKXtTeXMuVUkuRG9tRXZlbnQucmVtb3ZlSGFuZGxl cih3aW5kb3csImxvYWQiLHRoaXMuX2xvYWRIYW5kbGVyRGVsZWdhdGUpO3RoaXMu X2xvYWRIYW5kbGVyRGVsZWdhdGU9bnVsbH12YXIgZD1TeXMuX1NjcmlwdExvYWRl ci5nZXRJbnN0YW5jZSgpO2lmKGQpZC5kaXNwb3NlKCk7U3lzLl9BcHBsaWNhdGlv bi5jYWxsQmFzZU1ldGhvZCh0aGlzLCJkaXNwb3NlIil9fSxlbmRDcmVhdGVDb21w b25lbnRzOmZ1bmN0aW9uKCl7VUxTb1o3Ojt2YXIgYj10aGlzLl9zZWNvbmRQYXNz Q29tcG9uZW50cztmb3IodmFyIGE9MCxkPWIubGVuZ3RoO2E8ZDthKyspe3ZhciBj PWJbYV0uY29tcG9uZW50O1N5cyRDb21wb25lbnQkX3NldFJlZmVyZW5jZXMoYyxi W2FdLnJlZmVyZW5jZXMpO2MuZW5kVXBkYXRlKCl9dGhpcy5fc2Vjb25kUGFzc0Nv bXBvbmVudHM9W107dGhpcy5fY3JlYXRpbmdDb21wb25lbnRzPWZhbHNlfSxmaW5k Q29tcG9uZW50OmZ1bmN0aW9uKGIsYSl7VUxTb1o3OjtyZXR1cm4gYT9TeXMuSUNv bnRhaW5lci5pc0luc3RhbmNlT2ZUeXBlKGEpP2EuZmluZENvbXBvbmVudChiKTph W2JdfHxudWxsOlN5cy5BcHBsaWNhdGlvbi5fY29tcG9uZW50c1tiXXx8bnVsbH0s Z2V0Q29tcG9uZW50czpmdW5jdGlvbigpe1VMU29aNzo7dmFyIGE9W10sYj10aGlz Ll9jb21wb25lbnRzO2Zvcih2YXIgYyBpbiBiKWFbYS5sZW5ndGhdPWJbY107cmV0 dXJuIGF9LGluaXRpYWxpemU6ZnVuY3Rpb24oKXtVTFNvWjc6O2lmKCF0aGlzLl9p bml0aWFsaXplZCYmIXRoaXMuX2luaXRpYWxpemluZyl7dGhpcy5faW5pdGlhbGl6 aW5nPXRydWU7d2luZG93LnNldFRpbWVvdXQoRnVuY3Rpb24uY3JlYXRlRGVsZWdh dGUodGhpcyx0aGlzLl9kb0luaXRpYWxpemUpLDApfX0sbm90aWZ5U2NyaXB0TG9h ZGVkOmZ1bmN0aW9uKCl7VUxTb1o3Ojt2YXIgYT1TeXMuX1NjcmlwdExvYWRlci5n ZXRJbnN0YW5jZSgpO2lmKGEpYS5ub3RpZnlTY3JpcHRMb2FkZWQoKX0scmVnaXN0 ZXJEaXNwb3NhYmxlT2JqZWN0OmZ1bmN0aW9uKGEpe1VMU29aNzo7aWYoIXRoaXMu X2Rpc3Bvc2luZyl0aGlzLl9kaXNwb3NhYmxlT2JqZWN0c1t0aGlzLl9kaXNwb3Nh YmxlT2JqZWN0cy5sZW5ndGhdPWF9LHJhaXNlTG9hZDpmdW5jdGlvbigpe1VMU29a Nzo7dmFyIGI9dGhpcy5nZXRfZXZlbnRzKCkuZ2V0SGFuZGxlcigibG9hZCIpLGE9 bmV3IFN5cy5BcHBsaWNhdGlvbkxvYWRFdmVudEFyZ3MoQXJyYXkuY2xvbmUodGhp cy5fY3JlYXRlZENvbXBvbmVudHMpLCF0aGlzLl9pbml0aWFsaXppbmcpO2lmKGIp Yih0aGlzLGEpO2lmKHdpbmRvdy5wYWdlTG9hZCl3aW5kb3cucGFnZUxvYWQodGhp cyxhKTt0aGlzLl9jcmVhdGVkQ29tcG9uZW50cz1bXX0scmVtb3ZlQ29tcG9uZW50 OmZ1bmN0aW9uKGIpe1VMU29aNzo7dmFyIGE9Yi5nZXRfaWQoKTtpZihhKWRlbGV0 ZSB0aGlzLl9jb21wb25lbnRzW2FdfSxzZXRTZXJ2ZXJJZDpmdW5jdGlvbihhLGIp e1VMU29aNzo7dGhpcy5fY2xpZW50SWQ9YTt0aGlzLl91bmlxdWVJZD1ifSxzZXRT ZXJ2ZXJTdGF0ZTpmdW5jdGlvbihhKXtVTFNvWjc6O3RoaXMuX2Vuc3VyZUhpc3Rv cnkoKTt0aGlzLl9zdGF0ZS5fX3M9YTt0aGlzLl91cGRhdGVIaWRkZW5GaWVsZChh KX0sdW5yZWdpc3RlckRpc3Bvc2FibGVPYmplY3Q6ZnVuY3Rpb24oYSl7VUxTb1o3 OjtpZighdGhpcy5fZGlzcG9zaW5nKUFycmF5LnJlbW92ZSh0aGlzLl9kaXNwb3Nh YmxlT2JqZWN0cyxhKX0sX2FkZENvbXBvbmVudFRvU2Vjb25kUGFzczpmdW5jdGlv bihiLGEpe1VMU29aNzo7dGhpcy5fc2Vjb25kUGFzc0NvbXBvbmVudHNbdGhpcy5f c2Vjb25kUGFzc0NvbXBvbmVudHMubGVuZ3RoXT17Y29tcG9uZW50OmIscmVmZXJl bmNlczphfX0sX2Rlc2VyaWFsaXplU3RhdGU6ZnVuY3Rpb24oYSxpKXtVTFNvWjc6 O3ZhciBlPXt9O2E9YXx8IiI7dmFyIGI9YS5pbmRleE9mKCImJiIpO2lmKGIhPT0t MSYmYisyPGEubGVuZ3RoKXtlLl9fcz1hLnN1YnN0cihiKzIpO2E9YS5zdWJzdHIo MCxiKX12YXIgZz1hLnNwbGl0KCImIik7Zm9yKHZhciBmPTAsaz1nLmxlbmd0aDtm PGs7ZisrKXt2YXIgZD1nW2ZdLGM9ZC5pbmRleE9mKCI9Iik7aWYoYyE9PS0xJiZj KzE8ZC5sZW5ndGgpe3ZhciBqPWQuc3Vic3RyKDAsYyksaD1kLnN1YnN0cihjKzEp O2Vbal09aT9oOmRlY29kZVVSSUNvbXBvbmVudChoKX19cmV0dXJuIGV9LF9kb0lu aXRpYWxpemU6ZnVuY3Rpb24oKXtVTFNvWjc6O1N5cy5fQXBwbGljYXRpb24uY2Fs bEJhc2VNZXRob2QodGhpcywiaW5pdGlhbGl6ZSIpO3ZhciBiPXRoaXMuZ2V0X2V2 ZW50cygpLmdldEhhbmRsZXIoImluaXQiKTtpZihiKXt0aGlzLmJlZ2luQ3JlYXRl Q29tcG9uZW50cygpO2IodGhpcyxTeXMuRXZlbnRBcmdzLkVtcHR5KTt0aGlzLmVu ZENyZWF0ZUNvbXBvbmVudHMoKX1pZihTeXMuV2ViRm9ybXMpe3RoaXMuX2JlZ2lu UmVxdWVzdEhhbmRsZXI9RnVuY3Rpb24uY3JlYXRlRGVsZWdhdGUodGhpcyx0aGlz Ll9vblBhZ2VSZXF1ZXN0TWFuYWdlckJlZ2luUmVxdWVzdCk7U3lzLldlYkZvcm1z LlBhZ2VSZXF1ZXN0TWFuYWdlci5nZXRJbnN0YW5jZSgpLmFkZF9iZWdpblJlcXVl c3QodGhpcy5fYmVnaW5SZXF1ZXN0SGFuZGxlcik7dGhpcy5fZW5kUmVxdWVzdEhh bmRsZXI9RnVuY3Rpb24uY3JlYXRlRGVsZWdhdGUodGhpcyx0aGlzLl9vblBhZ2VS ZXF1ZXN0TWFuYWdlckVuZFJlcXVlc3QpO1N5cy5XZWJGb3Jtcy5QYWdlUmVxdWVz dE1hbmFnZXIuZ2V0SW5zdGFuY2UoKS5hZGRfZW5kUmVxdWVzdCh0aGlzLl9lbmRS ZXF1ZXN0SGFuZGxlcil9dmFyIGE9dGhpcy5nZXRfc3RhdGVTdHJpbmcoKTtpZihh IT09dGhpcy5fY3VycmVudEVudHJ5KXRoaXMuX25hdmlnYXRlKGEpO3RoaXMucmFp c2VMb2FkKCk7dGhpcy5faW5pdGlhbGl6aW5nPWZhbHNlfSxfZW5hYmxlSGlzdG9y eUluU2NyaXB0TWFuYWdlcjpmdW5jdGlvbigpe1VMU29aNzo7dGhpcy5fZW5hYmxl SGlzdG9yeT10cnVlfSxfZW5zdXJlSGlzdG9yeTpmdW5jdGlvbigpe1VMU29aNzo7 aWYoIXRoaXMuX2hpc3RvcnlJbml0aWFsaXplZCYmdGhpcy5fZW5hYmxlSGlzdG9y eSl7aWYoU3lzLkJyb3dzZXIuYWdlbnQ9PT1TeXMuQnJvd3Nlci5JbnRlcm5ldEV4 cGxvcmVyJiZTeXMuQnJvd3Nlci5kb2N1bWVudE1vZGU8OCl7dGhpcy5faGlzdG9y eUZyYW1lPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJfX2hpc3RvcnlGcmFtZSIp O3RoaXMuX2lnbm9yZUlGcmFtZT10cnVlfWlmKHRoaXMuX2lzU2FmYXJpMigpKXt2 YXIgYT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiX19oaXN0b3J5Iik7dGhpcy5f c2V0SGlzdG9yeShbd2luZG93LmxvY2F0aW9uLmhhc2hdKTt0aGlzLl9oaXN0b3J5 SW5pdGlhbExlbmd0aD13aW5kb3cuaGlzdG9yeS5sZW5ndGh9dGhpcy5fdGltZXJI YW5kbGVyPUZ1bmN0aW9uLmNyZWF0ZURlbGVnYXRlKHRoaXMsdGhpcy5fb25JZGxl KTt0aGlzLl90aW1lckNvb2tpZT13aW5kb3cuc2V0VGltZW91dCh0aGlzLl90aW1l ckhhbmRsZXIsMTAwKTt0cnl7dGhpcy5faW5pdGlhbFN0YXRlPXRoaXMuX2Rlc2Vy aWFsaXplU3RhdGUodGhpcy5nZXRfc3RhdGVTdHJpbmcoKSl9Y2F0Y2goYil7fXRo aXMuX2hpc3RvcnlJbml0aWFsaXplZD10cnVlfX0sX2dldEhpc3Rvcnk6ZnVuY3Rp b24oKXtVTFNvWjc6O3ZhciBhPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJfX2hp c3RvcnkiKTtpZighYSlyZXR1cm4gIiI7dmFyIGI9YS52YWx1ZTtyZXR1cm4gYj9T eXMuU2VyaWFsaXphdGlvbi5KYXZhU2NyaXB0U2VyaWFsaXplci5kZXNlcmlhbGl6 ZShiLHRydWUpOiIifSxfaXNTYWZhcmkyOmZ1bmN0aW9uKCl7VUxTb1o3OjtyZXR1 cm4gU3lzLkJyb3dzZXIuYWdlbnQ9PT1TeXMuQnJvd3Nlci5TYWZhcmkmJlN5cy5C cm93c2VyLnZlcnNpb248PTQxOS4zfSxfbG9hZEhhbmRsZXI6ZnVuY3Rpb24oKXtV TFNvWjc6O2lmKHRoaXMuX2xvYWRIYW5kbGVyRGVsZWdhdGUpe1N5cy5VSS5Eb21F dmVudC5yZW1vdmVIYW5kbGVyKHdpbmRvdywibG9hZCIsdGhpcy5fbG9hZEhhbmRs ZXJEZWxlZ2F0ZSk7dGhpcy5fbG9hZEhhbmRsZXJEZWxlZ2F0ZT1udWxsfXRoaXMu aW5pdGlhbGl6ZSgpfSxfbmF2aWdhdGU6ZnVuY3Rpb24oYyl7VUxTb1o3Ojt0aGlz Ll9lbnN1cmVIaXN0b3J5KCk7dmFyIGI9dGhpcy5fZGVzZXJpYWxpemVTdGF0ZShj KTtpZih0aGlzLl91bmlxdWVJZCl7dmFyIGQ9dGhpcy5fc3RhdGUuX19zfHwiIixh PWIuX19zfHwiIjtpZihhIT09ZCl7dGhpcy5fdXBkYXRlSGlkZGVuRmllbGQoYSk7 X19kb1Bvc3RCYWNrKHRoaXMuX3VuaXF1ZUlkLGEpO3RoaXMuX3N0YXRlPWI7cmV0 dXJufX10aGlzLl9zZXRTdGF0ZShjKTt0aGlzLl9zdGF0ZT1iO3RoaXMuX3JhaXNl TmF2aWdhdGUoKX0sX29uSWRsZTpmdW5jdGlvbigpe1VMU29aNzo7ZGVsZXRlIHRo aXMuX3RpbWVyQ29va2llO3ZhciBhPXRoaXMuZ2V0X3N0YXRlU3RyaW5nKCk7aWYo YSE9PXRoaXMuX2N1cnJlbnRFbnRyeSl7aWYoIXRoaXMuX2lnbm9yZVRpbWVyKXt0 aGlzLl9oaXN0b3J5UG9pbnRJc05ldz1mYWxzZTt0aGlzLl9uYXZpZ2F0ZShhKTt0 aGlzLl9oaXN0b3J5TGVuZ3RoPXdpbmRvdy5oaXN0b3J5Lmxlbmd0aH19ZWxzZSB0 aGlzLl9pZ25vcmVUaW1lcj1mYWxzZTt0aGlzLl90aW1lckNvb2tpZT13aW5kb3cu c2V0VGltZW91dCh0aGlzLl90aW1lckhhbmRsZXIsMTAwKX0sX29uSUZyYW1lTG9h ZDpmdW5jdGlvbihhKXtVTFNvWjc6O3RoaXMuX2Vuc3VyZUhpc3RvcnkoKTtpZigh dGhpcy5faWdub3JlSUZyYW1lKXt0aGlzLl9oaXN0b3J5UG9pbnRJc05ldz1mYWxz ZTt0aGlzLl9uYXZpZ2F0ZShhKX10aGlzLl9pZ25vcmVJRnJhbWU9ZmFsc2V9LF9v blBhZ2VSZXF1ZXN0TWFuYWdlckJlZ2luUmVxdWVzdDpmdW5jdGlvbigpe1VMU29a Nzo7dGhpcy5faWdub3JlVGltZXI9dHJ1ZX0sX29uUGFnZVJlcXVlc3RNYW5hZ2Vy RW5kUmVxdWVzdDpmdW5jdGlvbihlLGQpe1VMU29aNzo7dmFyIGI9ZC5nZXRfZGF0 YUl0ZW1zKClbdGhpcy5fY2xpZW50SWRdLGE9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5 SWQoIl9fRVZFTlRUQVJHRVQiKTtpZihhJiZhLnZhbHVlPT09dGhpcy5fdW5pcXVl SWQpYS52YWx1ZT0iIjtpZih0eXBlb2YgYiE9PSJ1bmRlZmluZWQiKXt0aGlzLnNl dFNlcnZlclN0YXRlKGIpO3RoaXMuX2hpc3RvcnlQb2ludElzTmV3PXRydWV9ZWxz ZSB0aGlzLl9pZ25vcmVUaW1lcj1mYWxzZTt2YXIgYz10aGlzLl9zZXJpYWxpemVT dGF0ZSh0aGlzLl9zdGF0ZSk7aWYoYyE9PXRoaXMuX2N1cnJlbnRFbnRyeSl7dGhp cy5faWdub3JlVGltZXI9dHJ1ZTt0aGlzLl9zZXRTdGF0ZShjKTt0aGlzLl9yYWlz ZU5hdmlnYXRlKCl9fSxfcmFpc2VOYXZpZ2F0ZTpmdW5jdGlvbigpe1VMU29aNzo7 dmFyIGM9dGhpcy5nZXRfZXZlbnRzKCkuZ2V0SGFuZGxlcigibmF2aWdhdGUiKSxi PXt9O2Zvcih2YXIgYSBpbiB0aGlzLl9zdGF0ZSlpZihhIT09Il9fcyIpYlthXT10 aGlzLl9zdGF0ZVthXTt2YXIgZD1uZXcgU3lzLkhpc3RvcnlFdmVudEFyZ3MoYik7 aWYoYyljKHRoaXMsZCl9LF9zZXJpYWxpemVTdGF0ZTpmdW5jdGlvbihkKXtVTFNv Wjc6O3ZhciBiPVtdO2Zvcih2YXIgYSBpbiBkKXt2YXIgZT1kW2FdO2lmKGE9PT0i X19zIil2YXIgYz1lO2Vsc2UgYltiLmxlbmd0aF09YSsiPSIrZW5jb2RlVVJJQ29t cG9uZW50KGUpfXJldHVybiBiLmpvaW4oIiYiKSsoYz8iJiYiK2M6IiIpfSxfc2V0 SGlzdG9yeTpmdW5jdGlvbihiKXtVTFNvWjc6O3ZhciBhPWRvY3VtZW50LmdldEVs ZW1lbnRCeUlkKCJfX2hpc3RvcnkiKTtpZihhKWEudmFsdWU9U3lzLlNlcmlhbGl6 YXRpb24uSmF2YVNjcmlwdFNlcmlhbGl6ZXIuc2VyaWFsaXplKGIpfSxfc2V0U3Rh dGU6ZnVuY3Rpb24oYSxjKXtVTFNvWjc6O2E9YXx8IiI7aWYoYSE9PXRoaXMuX2N1 cnJlbnRFbnRyeSl7aWYod2luZG93LnRoZUZvcm0pe3ZhciBlPXdpbmRvdy50aGVG b3JtLmFjdGlvbixmPWUuaW5kZXhPZigiIyIpO3dpbmRvdy50aGVGb3JtLmFjdGlv bj0oZiE9PS0xP2Uuc3Vic3RyaW5nKDAsZik6ZSkrIiMiK2F9aWYodGhpcy5faGlz dG9yeUZyYW1lJiZ0aGlzLl9oaXN0b3J5UG9pbnRJc05ldyl7dGhpcy5faWdub3Jl SUZyYW1lPXRydWU7dGhpcy5faGlzdG9yeVBvaW50SXNOZXc9ZmFsc2U7dmFyIGQ9 dGhpcy5faGlzdG9yeUZyYW1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7ZC5vcGVu KCJqYXZhc2NyaXB0Oic8aHRtbD48L2h0bWw+JyIpO2Qud3JpdGUoIjxodG1sPjxo ZWFkPjx0aXRsZT4iKyhjfHxkb2N1bWVudC50aXRsZSkrIjwvdGl0bGU+PHNjcmki KydwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPnBhcmVudC5TeXMuQXBwbGljYXRp b24uX29uSUZyYW1lTG9hZChcJycrYSsiJyk7PC9zY3JpIisicHQ+PC9oZWFkPjxi b2R5PjwvYm9keT48L2h0bWw+Iik7ZC5jbG9zZSgpfXRoaXMuX2lnbm9yZVRpbWVy PWZhbHNlO3ZhciBoPXRoaXMuZ2V0X3N0YXRlU3RyaW5nKCk7dGhpcy5fY3VycmVu dEVudHJ5PWE7aWYoYSE9PWgpe2lmKHRoaXMuX2lzU2FmYXJpMigpKXt2YXIgZz10 aGlzLl9nZXRIaXN0b3J5KCk7Z1t3aW5kb3cuaGlzdG9yeS5sZW5ndGgtdGhpcy5f aGlzdG9yeUluaXRpYWxMZW5ndGgrMV09YTt0aGlzLl9zZXRIaXN0b3J5KGcpO3Ro aXMuX2hpc3RvcnlMZW5ndGg9d2luZG93Lmhpc3RvcnkubGVuZ3RoKzE7dmFyIGI9 ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZm9ybSIpO2IubWV0aG9kPSJnZXQiO2Iu YWN0aW9uPSIjIithO2RvY3VtZW50LmFwcGVuZENoaWxkKGIpO2Iuc3VibWl0KCk7 ZG9jdW1lbnQucmVtb3ZlQ2hpbGQoYil9ZWxzZSB3aW5kb3cubG9jYXRpb24uaGFz aD1hO2lmKHR5cGVvZiBjIT09InVuZGVmaW5lZCImJmMhPT1udWxsKWRvY3VtZW50 LnRpdGxlPWN9fX0sX3VubG9hZEhhbmRsZXI6ZnVuY3Rpb24oKXtVTFNvWjc6O3Ro aXMuZGlzcG9zZSgpfSxfdXBkYXRlSGlkZGVuRmllbGQ6ZnVuY3Rpb24oYil7VUxT b1o3OjtpZih0aGlzLl9jbGllbnRJZCl7dmFyIGE9ZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQodGhpcy5fY2xpZW50SWQpO2lmKGEpYS52YWx1ZT1ifX19O1N5cy5fQXBw bGljYXRpb24ucmVnaXN0ZXJDbGFzcygiU3lzLl9BcHBsaWNhdGlvbiIsU3lzLkNv bXBvbmVudCxTeXMuSUNvbnRhaW5lcik7U3lzLkFwcGxpY2F0aW9uPW5ldyBTeXMu X0FwcGxpY2F0aW9uO3ZhciAkZmluZD1TeXMuQXBwbGljYXRpb24uZmluZENvbXBv bmVudDtUeXBlLnJlZ2lzdGVyTmFtZXNwYWNlKCJTeXMuTmV0Iik7U3lzLk5ldC5X ZWJSZXF1ZXN0RXhlY3V0b3I9ZnVuY3Rpb24oKXtVTFNvWjc6O3RoaXMuX3dlYlJl cXVlc3Q9bnVsbDt0aGlzLl9yZXN1bHRPYmplY3Q9bnVsbH07U3lzLk5ldC5XZWJS ZXF1ZXN0RXhlY3V0b3IucHJvdG90eXBlPXtnZXRfd2ViUmVxdWVzdDpmdW5jdGlv bigpe1VMU29aNzo7cmV0dXJuIHRoaXMuX3dlYlJlcXVlc3R9LF9zZXRfd2ViUmVx dWVzdDpmdW5jdGlvbihhKXtVTFNvWjc6O3RoaXMuX3dlYlJlcXVlc3Q9YX0sZ2V0 X3N0YXJ0ZWQ6ZnVuY3Rpb24oKXtVTFNvWjc6O3Rocm93IEVycm9yLm5vdEltcGxl bWVudGVkKCl9LGdldF9yZXNwb25zZUF2YWlsYWJsZTpmdW5jdGlvbigpe1VMU29a Nzo7dGhyb3cgRXJyb3Iubm90SW1wbGVtZW50ZWQoKX0sZ2V0X3RpbWVkT3V0OmZ1 bmN0aW9uKCl7VUxTb1o3Ojt0aHJvdyBFcnJvci5ub3RJbXBsZW1lbnRlZCgpfSxn ZXRfYWJvcnRlZDpmdW5jdGlvbigpe1VMU29aNzo7dGhyb3cgRXJyb3Iubm90SW1w bGVtZW50ZWQoKX0sZ2V0X3Jlc3BvbnNlRGF0YTpmdW5jdGlvbigpe1VMU29aNzo7 dGhyb3cgRXJyb3Iubm90SW1wbGVtZW50ZWQoKX0sZ2V0X3N0YXR1c0NvZGU6ZnVu Y3Rpb24oKXtVTFNvWjc6O3Rocm93IEVycm9yLm5vdEltcGxlbWVudGVkKCl9LGdl dF9zdGF0dXNUZXh0OmZ1bmN0aW9uKCl7VUxTb1o3Ojt0aHJvdyBFcnJvci5ub3RJ bXBsZW1lbnRlZCgpfSxnZXRfeG1sOmZ1bmN0aW9uKCl7VUxTb1o3Ojt0aHJvdyBF cnJvci5ub3RJbXBsZW1lbnRlZCgpfSxnZXRfb2JqZWN0OmZ1bmN0aW9uKCl7VUxT b1o3OjtpZighdGhpcy5fcmVzdWx0T2JqZWN0KXRoaXMuX3Jlc3VsdE9iamVjdD1T eXMuU2VyaWFsaXphdGlvbi5KYXZhU2NyaXB0U2VyaWFsaXplci5kZXNlcmlhbGl6 ZSh0aGlzLmdldF9yZXNwb25zZURhdGEoKSk7cmV0dXJuIHRoaXMuX3Jlc3VsdE9i amVjdH0sZXhlY3V0ZVJlcXVlc3Q6ZnVuY3Rpb24oKXtVTFNvWjc6O3Rocm93IEVy cm9yLm5vdEltcGxlbWVudGVkKCl9LGFib3J0OmZ1bmN0aW9uKCl7VUxTb1o3Ojt0 aHJvdyBFcnJvci5ub3RJbXBsZW1lbnRlZCgpfSxnZXRSZXNwb25zZUhlYWRlcjpm dW5jdGlvbigpe1VMU29aNzo7dGhyb3cgRXJyb3Iubm90SW1wbGVtZW50ZWQoKX0s Z2V0QWxsUmVzcG9uc2VIZWFkZXJzOmZ1bmN0aW9uKCl7VUxTb1o3Ojt0aHJvdyBF cnJvci5ub3RJbXBsZW1lbnRlZCgpfX07U3lzLk5ldC5XZWJSZXF1ZXN0RXhlY3V0 b3IucmVnaXN0ZXJDbGFzcygiU3lzLk5ldC5XZWJSZXF1ZXN0RXhlY3V0b3IiKTtT eXMuTmV0LlhNTERPTT1mdW5jdGlvbihkKXtVTFNvWjc6O2lmKCF3aW5kb3cuRE9N UGFyc2VyKXt2YXIgYz1bIk1zeG1sMi5ET01Eb2N1bWVudC4zLjAiLCJNc3htbDIu RE9NRG9jdW1lbnQiXTtmb3IodmFyIGI9MCxmPWMubGVuZ3RoO2I8ZjtiKyspdHJ5 e3ZhciBhPW5ldyBBY3RpdmVYT2JqZWN0KGNbYl0pO2EuYXN5bmM9ZmFsc2U7YS5s b2FkWE1MKGQpO2Euc2V0UHJvcGVydHkoIlNlbGVjdGlvbkxhbmd1YWdlIiwiWFBh dGgiKTtyZXR1cm4gYX1jYXRjaChnKXt9fWVsc2UgdHJ5e3ZhciBlPW5ldyB3aW5k b3cuRE9NUGFyc2VyO3JldHVybiBlLnBhcnNlRnJvbVN0cmluZyhkLCJ0ZXh0L3ht bCIpfWNhdGNoKGcpe31yZXR1cm4gbnVsbH07U3lzLk5ldC5YTUxIdHRwRXhlY3V0 b3I9ZnVuY3Rpb24oKXtVTFNvWjc6O1N5cy5OZXQuWE1MSHR0cEV4ZWN1dG9yLmlu aXRpYWxpemVCYXNlKHRoaXMpO3ZhciBhPXRoaXM7dGhpcy5feG1sSHR0cFJlcXVl c3Q9bnVsbDt0aGlzLl93ZWJSZXF1ZXN0PW51bGw7dGhpcy5fcmVzcG9uc2VBdmFp bGFibGU9ZmFsc2U7dGhpcy5fdGltZWRPdXQ9ZmFsc2U7dGhpcy5fdGltZXI9bnVs bDt0aGlzLl9hYm9ydGVkPWZhbHNlO3RoaXMuX3N0YXJ0ZWQ9ZmFsc2U7dGhpcy5f b25SZWFkeVN0YXRlQ2hhbmdlPWZ1bmN0aW9uKCl7VUxTb1o3OjtpZihhLl94bWxI dHRwUmVxdWVzdC5yZWFkeVN0YXRlPT09NCl7dHJ5e2lmKHR5cGVvZiBhLl94bWxI dHRwUmVxdWVzdC5zdGF0dXM9PT0idW5kZWZpbmVkIilyZXR1cm59Y2F0Y2goYil7 cmV0dXJufWEuX2NsZWFyVGltZXIoKTthLl9yZXNwb25zZUF2YWlsYWJsZT10cnVl O3RyeXthLl93ZWJSZXF1ZXN0LmNvbXBsZXRlZChTeXMuRXZlbnRBcmdzLkVtcHR5 KX1maW5hbGx5e2lmKGEuX3htbEh0dHBSZXF1ZXN0IT1udWxsKXthLl94bWxIdHRw UmVxdWVzdC5vbnJlYWR5c3RhdGVjaGFuZ2U9RnVuY3Rpb24uZW1wdHlNZXRob2Q7 YS5feG1sSHR0cFJlcXVlc3Q9bnVsbH19fX07dGhpcy5fY2xlYXJUaW1lcj1mdW5j dGlvbigpe1VMU29aNzo7aWYoYS5fdGltZXIhPW51bGwpe3dpbmRvdy5jbGVhclRp bWVvdXQoYS5fdGltZXIpO2EuX3RpbWVyPW51bGx9fTt0aGlzLl9vblRpbWVvdXQ9 ZnVuY3Rpb24oKXtVTFNvWjc6O2lmKCFhLl9yZXNwb25zZUF2YWlsYWJsZSl7YS5f Y2xlYXJUaW1lcigpO2EuX3RpbWVkT3V0PXRydWU7YS5feG1sSHR0cFJlcXVlc3Qu b25yZWFkeXN0YXRlY2hhbmdlPUZ1bmN0aW9uLmVtcHR5TWV0aG9kO2EuX3htbEh0 dHBSZXF1ZXN0LmFib3J0KCk7YS5fd2ViUmVxdWVzdC5jb21wbGV0ZWQoU3lzLkV2 ZW50QXJncy5FbXB0eSk7YS5feG1sSHR0cFJlcXVlc3Q9bnVsbH19fTtTeXMuTmV0 LlhNTEh0dHBFeGVjdXRvci5wcm90b3R5cGU9e2dldF90aW1lZE91dDpmdW5jdGlv bigpe1VMU29aNzo7cmV0dXJuIHRoaXMuX3RpbWVkT3V0fSxnZXRfc3RhcnRlZDpm dW5jdGlvbigpe1VMU29aNzo7cmV0dXJuIHRoaXMuX3N0YXJ0ZWR9LGdldF9yZXNw b25zZUF2YWlsYWJsZTpmdW5jdGlvbigpe1VMU29aNzo7cmV0dXJuIHRoaXMuX3Jl c3BvbnNlQXZhaWxhYmxlfSxnZXRfYWJvcnRlZDpmdW5jdGlvbigpe1VMU29aNzo7 cmV0dXJuIHRoaXMuX2Fib3J0ZWR9LGV4ZWN1dGVSZXF1ZXN0OmZ1bmN0aW9uKCl7 VUxTb1o3Ojt0aGlzLl93ZWJSZXF1ZXN0PXRoaXMuZ2V0X3dlYlJlcXVlc3QoKTt2 YXIgYz10aGlzLl93ZWJSZXF1ZXN0LmdldF9ib2R5KCksYT10aGlzLl93ZWJSZXF1 ZXN0LmdldF9oZWFkZXJzKCk7dGhpcy5feG1sSHR0cFJlcXVlc3Q9bmV3IFhNTEh0 dHBSZXF1ZXN0O3RoaXMuX3htbEh0dHBSZXF1ZXN0Lm9ucmVhZHlzdGF0ZWNoYW5n ZT10aGlzLl9vblJlYWR5U3RhdGVDaGFuZ2U7dmFyIGU9dGhpcy5fd2ViUmVxdWVz dC5nZXRfaHR0cFZlcmIoKTt0aGlzLl94bWxIdHRwUmVxdWVzdC5vcGVuKGUsdGhp cy5fd2ViUmVxdWVzdC5nZXRSZXNvbHZlZFVybCgpLHRydWUpO2lmKGEpZm9yKHZh ciBiIGluIGEpe3ZhciBmPWFbYl07aWYodHlwZW9mIGYhPT0iZnVuY3Rpb24iKXRo aXMuX3htbEh0dHBSZXF1ZXN0LnNldFJlcXVlc3RIZWFkZXIoYixmKX1pZihlLnRv TG93ZXJDYXNlKCk9PT0icG9zdCIpe2lmKGE9PT1udWxsfHwhYVsiQ29udGVudC1U eXBlIl0pdGhpcy5feG1sSHR0cFJlcXVlc3Quc2V0UmVxdWVzdEhlYWRlcigiQ29u dGVudC1UeXBlIiwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBj aGFyc2V0PXV0Zi04Iik7aWYoIWMpYz0iIn12YXIgZD10aGlzLl93ZWJSZXF1ZXN0 LmdldF90aW1lb3V0KCk7aWYoZD4wKXRoaXMuX3RpbWVyPXdpbmRvdy5zZXRUaW1l b3V0KEZ1bmN0aW9uLmNyZWF0ZURlbGVnYXRlKHRoaXMsdGhpcy5fb25UaW1lb3V0 KSxkKTt0aGlzLl94bWxIdHRwUmVxdWVzdC5zZW5kKGMpO3RoaXMuX3N0YXJ0ZWQ9 dHJ1ZX0sZ2V0UmVzcG9uc2VIZWFkZXI6ZnVuY3Rpb24oYil7VUxTb1o3Ojt2YXIg YTt0cnl7YT10aGlzLl94bWxIdHRwUmVxdWVzdC5nZXRSZXNwb25zZUhlYWRlcihi KX1jYXRjaChjKXt9aWYoIWEpYT0iIjtyZXR1cm4gYX0sZ2V0QWxsUmVzcG9uc2VI ZWFkZXJzOmZ1bmN0aW9uKCl7VUxTb1o3OjtyZXR1cm4gdGhpcy5feG1sSHR0cFJl cXVlc3QuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCl9LGdldF9yZXNwb25zZURhdGE6 ZnVuY3Rpb24oKXtVTFNvWjc6O3JldHVybiB0aGlzLl94bWxIdHRwUmVxdWVzdC5y ZXNwb25zZVRleHR9LGdldF9zdGF0dXNDb2RlOmZ1bmN0aW9uKCl7VUxTb1o3Ojt2 YXIgYT0wO3RyeXthPXRoaXMuX3htbEh0dHBSZXF1ZXN0LnN0YXR1c31jYXRjaChi KXt9cmV0dXJuIGF9LGdldF9zdGF0dXNUZXh0OmZ1bmN0aW9uKCl7VUxTb1o3Ojty ZXR1cm4gdGhpcy5feG1sSHR0cFJlcXVlc3Quc3RhdHVzVGV4dH0sZ2V0X3htbDpm dW5jdGlvbigpe1VMU29aNzo7dmFyIGE9dGhpcy5feG1sSHR0cFJlcXVlc3QucmVz cG9uc2VYTUw7aWYoIWF8fCFhLmRvY3VtZW50RWxlbWVudCl7YT1TeXMuTmV0LlhN TERPTSh0aGlzLl94bWxIdHRwUmVxdWVzdC5yZXNwb25zZVRleHQpO2lmKCFhfHwh YS5kb2N1bWVudEVsZW1lbnQpcmV0dXJuIG51bGx9ZWxzZSBpZihuYXZpZ2F0b3Iu dXNlckFnZW50LmluZGV4T2YoIk1TSUUiKSE9PS0xKWEuc2V0UHJvcGVydHkoIlNl bGVjdGlvbkxhbmd1YWdlIiwiWFBhdGgiKTtpZihhLmRvY3VtZW50RWxlbWVudC5u YW1lc3BhY2VVUkk9PT0iaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9uZXdsYXlvdXQv eG1sL3BhcnNlcmVycm9yLnhtbCImJmEuZG9jdW1lbnRFbGVtZW50LnRhZ05hbWU9 PT0icGFyc2VyZXJyb3IiKXJldHVybiBudWxsO2lmKGEuZG9jdW1lbnRFbGVtZW50 LmZpcnN0Q2hpbGQmJmEuZG9jdW1lbnRFbGVtZW50LmZpcnN0Q2hpbGQudGFnTmFt ZT09PSJwYXJzZXJlcnJvciIpcmV0dXJuIG51bGw7cmV0dXJuIGF9LGFib3J0OmZ1 bmN0aW9uKCl7VUxTb1o3OjtpZih0aGlzLl9hYm9ydGVkfHx0aGlzLl9yZXNwb25z ZUF2YWlsYWJsZXx8dGhpcy5fdGltZWRPdXQpcmV0dXJuO3RoaXMuX2Fib3J0ZWQ9 dHJ1ZTt0aGlzLl9jbGVhclRpbWVyKCk7aWYodGhpcy5feG1sSHR0cFJlcXVlc3Qm JiF0aGlzLl9yZXNwb25zZUF2YWlsYWJsZSl7dGhpcy5feG1sSHR0cFJlcXVlc3Qu b25yZWFkeXN0YXRlY2hhbmdlPUZ1bmN0aW9uLmVtcHR5TWV0aG9kO3RoaXMuX3ht bEh0dHBSZXF1ZXN0LmFib3J0KCk7dGhpcy5feG1sSHR0cFJlcXVlc3Q9bnVsbDt0 aGlzLl93ZWJSZXF1ZXN0LmNvbXBsZXRlZChTeXMuRXZlbnRBcmdzLkVtcHR5KX19 fTtTeXMuTmV0LlhNTEh0dHBFeGVjdXRvci5yZWdpc3RlckNsYXNzKCJTeXMuTmV0 LlhNTEh0dHBFeGVjdXRvciIsU3lzLk5ldC5XZWJSZXF1ZXN0RXhlY3V0b3IpO1N5 cy5OZXQuX1dlYlJlcXVlc3RNYW5hZ2VyPWZ1bmN0aW9uKCl7VUxTb1o3Ojt0aGlz Ll9kZWZhdWx0VGltZW91dD0wO3RoaXMuX2RlZmF1bHRFeGVjdXRvclR5cGU9IlN5 cy5OZXQuWE1MSHR0cEV4ZWN1dG9yIn07U3lzLk5ldC5fV2ViUmVxdWVzdE1hbmFn ZXIucHJvdG90eXBlPXthZGRfaW52b2tpbmdSZXF1ZXN0OmZ1bmN0aW9uKGEpe1VM U29aNzo7dGhpcy5fZ2V0X2V2ZW50SGFuZGxlckxpc3QoKS5hZGRIYW5kbGVyKCJp bnZva2luZ1JlcXVlc3QiLGEpfSxyZW1vdmVfaW52b2tpbmdSZXF1ZXN0OmZ1bmN0 aW9uKGEpe1VMU29aNzo7dGhpcy5fZ2V0X2V2ZW50SGFuZGxlckxpc3QoKS5yZW1v dmVIYW5kbGVyKCJpbnZva2luZ1JlcXVlc3QiLGEpfSxhZGRfY29tcGxldGVkUmVx dWVzdDpmdW5jdGlvbihhKXtVTFNvWjc6O3RoaXMuX2dldF9ldmVudEhhbmRsZXJM aXN0KCkuYWRkSGFuZGxlcigiY29tcGxldGVkUmVxdWVzdCIsYSl9LHJlbW92ZV9j b21wbGV0ZWRSZXF1ZXN0OmZ1bmN0aW9uKGEpe1VMU29aNzo7dGhpcy5fZ2V0X2V2 ZW50SGFuZGxlckxpc3QoKS5yZW1vdmVIYW5kbGVyKCJjb21wbGV0ZWRSZXF1ZXN0 IixhKX0sX2dldF9ldmVudEhhbmRsZXJMaXN0OmZ1bmN0aW9uKCl7VUxTb1o3Ojtp ZighdGhpcy5fZXZlbnRzKXRoaXMuX2V2ZW50cz1uZXcgU3lzLkV2ZW50SGFuZGxl ckxpc3Q7cmV0dXJuIHRoaXMuX2V2ZW50c30sZ2V0X2RlZmF1bHRUaW1lb3V0OmZ1 bmN0aW9uKCl7VUxTb1o3OjtyZXR1cm4gdGhpcy5fZGVmYXVsdFRpbWVvdXR9LHNl dF9kZWZhdWx0VGltZW91dDpmdW5jdGlvbihhKXtVTFNvWjc6O3RoaXMuX2RlZmF1 bHRUaW1lb3V0PWF9LGdldF9kZWZhdWx0RXhlY3V0b3JUeXBlOmZ1bmN0aW9uKCl7 VUxTb1o3OjtyZXR1cm4gdGhpcy5fZGVmYXVsdEV4ZWN1dG9yVHlwZX0sc2V0X2Rl ZmF1bHRFeGVjdXRvclR5cGU6ZnVuY3Rpb24oYSl7VUxTb1o3Ojt0aGlzLl9kZWZh dWx0RXhlY3V0b3JUeXBlPWF9LGV4ZWN1dGVSZXF1ZXN0OmZ1bmN0aW9uKHdlYlJl cXVlc3Qpe1VMU29aNzo7dmFyIGV4ZWN1dG9yPXdlYlJlcXVlc3QuZ2V0X2V4ZWN1 dG9yKCk7aWYoIWV4ZWN1dG9yKXt2YXIgZmFpbGVkPWZhbHNlO3RyeXt2YXIgZXhl Y3V0b3JUeXBlPWV2YWwodGhpcy5fZGVmYXVsdEV4ZWN1dG9yVHlwZSk7ZXhlY3V0 b3I9bmV3IGV4ZWN1dG9yVHlwZX1jYXRjaChhKXtmYWlsZWQ9dHJ1ZX13ZWJSZXF1 ZXN0LnNldF9leGVjdXRvcihleGVjdXRvcil9aWYoZXhlY3V0b3IuZ2V0X2Fib3J0 ZWQoKSlyZXR1cm47dmFyIGV2QXJncz1uZXcgU3lzLk5ldC5OZXR3b3JrUmVxdWVz dEV2ZW50QXJncyh3ZWJSZXF1ZXN0KSxoYW5kbGVyPXRoaXMuX2dldF9ldmVudEhh bmRsZXJMaXN0KCkuZ2V0SGFuZGxlcigiaW52b2tpbmdSZXF1ZXN0Iik7aWYoaGFu ZGxlciloYW5kbGVyKHRoaXMsZXZBcmdzKTtpZighZXZBcmdzLmdldF9jYW5jZWwo KSlleGVjdXRvci5leGVjdXRlUmVxdWVzdCgpfX07U3lzLk5ldC5fV2ViUmVxdWVz dE1hbmFnZXIucmVnaXN0ZXJDbGFzcygiU3lzLk5ldC5fV2ViUmVxdWVzdE1hbmFn ZXIiKTtTeXMuTmV0LldlYlJlcXVlc3RNYW5hZ2VyPW5ldyBTeXMuTmV0Ll9XZWJS ZXF1ZXN0TWFuYWdlcjtTeXMuTmV0Lk5ldHdvcmtSZXF1ZXN0RXZlbnRBcmdzPWZ1 bmN0aW9uKGEpe1VMU29aNzo7U3lzLk5ldC5OZXR3b3JrUmVxdWVzdEV2ZW50QXJn cy5pbml0aWFsaXplQmFzZSh0aGlzKTt0aGlzLl93ZWJSZXF1ZXN0PWF9O1N5cy5O ZXQuTmV0d29ya1JlcXVlc3RFdmVudEFyZ3MucHJvdG90eXBlPXtnZXRfd2ViUmVx dWVzdDpmdW5jdGlvbigpe1VMU29aNzo7cmV0dXJuIHRoaXMuX3dlYlJlcXVlc3R9 fTtTeXMuTmV0Lk5ldHdvcmtSZXF1ZXN0RXZlbnRBcmdzLnJlZ2lzdGVyQ2xhc3Mo IlN5cy5OZXQuTmV0d29ya1JlcXVlc3RFdmVudEFyZ3MiLFN5cy5DYW5jZWxFdmVu dEFyZ3MpO1N5cy5OZXQuV2ViUmVxdWVzdD1mdW5jdGlvbigpe1VMU29aNzo7dGhp cy5fdXJsPSIiO3RoaXMuX2hlYWRlcnM9e307dGhpcy5fYm9keT1udWxsO3RoaXMu X3VzZXJDb250ZXh0PW51bGw7dGhpcy5faHR0cFZlcmI9bnVsbDt0aGlzLl9leGVj dXRvcj1udWxsO3RoaXMuX2ludm9rZUNhbGxlZD1mYWxzZTt0aGlzLl90aW1lb3V0 PTB9O1N5cy5OZXQuV2ViUmVxdWVzdC5wcm90b3R5cGU9e2FkZF9jb21wbGV0ZWQ6 ZnVuY3Rpb24oYSl7VUxTb1o3Ojt0aGlzLl9nZXRfZXZlbnRIYW5kbGVyTGlzdCgp LmFkZEhhbmRsZXIoImNvbXBsZXRlZCIsYSl9LHJlbW92ZV9jb21wbGV0ZWQ6ZnVu Y3Rpb24oYSl7VUxTb1o3Ojt0aGlzLl9nZXRfZXZlbnRIYW5kbGVyTGlzdCgpLnJl bW92ZUhhbmRsZXIoImNvbXBsZXRlZCIsYSl9LGNvbXBsZXRlZDpmdW5jdGlvbihi KXtVTFNvWjc6O3ZhciBhPVN5cy5OZXQuV2ViUmVxdWVzdE1hbmFnZXIuX2dldF9l dmVudEhhbmRsZXJMaXN0KCkuZ2V0SGFuZGxlcigiY29tcGxldGVkUmVxdWVzdCIp O2lmKGEpYSh0aGlzLl9leGVjdXRvcixiKTthPXRoaXMuX2dldF9ldmVudEhhbmRs ZXJMaXN0KCkuZ2V0SGFuZGxlcigiY29tcGxldGVkIik7aWYoYSlhKHRoaXMuX2V4 ZWN1dG9yLGIpfSxfZ2V0X2V2ZW50SGFuZGxlckxpc3Q6ZnVuY3Rpb24oKXtVTFNv Wjc6O2lmKCF0aGlzLl9ldmVudHMpdGhpcy5fZXZlbnRzPW5ldyBTeXMuRXZlbnRI YW5kbGVyTGlzdDtyZXR1cm4gdGhpcy5fZXZlbnRzfSxnZXRfdXJsOmZ1bmN0aW9u KCl7VUxTb1o3OjtyZXR1cm4gdGhpcy5fdXJsfSxzZXRfdXJsOmZ1bmN0aW9uKGEp e1VMU29aNzo7dGhpcy5fdXJsPWF9LGdldF9oZWFkZXJzOmZ1bmN0aW9uKCl7VUxT b1o3OjtyZXR1cm4gdGhpcy5faGVhZGVyc30sZ2V0X2h0dHBWZXJiOmZ1bmN0aW9u KCl7VUxTb1o3OjtpZih0aGlzLl9odHRwVmVyYj09PW51bGwpe2lmKHRoaXMuX2Jv ZHk9PT1udWxsKXJldHVybiAiR0VUIjtyZXR1cm4gIlBPU1QifXJldHVybiB0aGlz Ll9odHRwVmVyYn0sc2V0X2h0dHBWZXJiOmZ1bmN0aW9uKGEpe1VMU29aNzo7dGhp cy5faHR0cFZlcmI9YX0sZ2V0X2JvZHk6ZnVuY3Rpb24oKXtVTFNvWjc6O3JldHVy biB0aGlzLl9ib2R5fSxzZXRfYm9keTpmdW5jdGlvbihhKXtVTFNvWjc6O3RoaXMu X2JvZHk9YX0sZ2V0X3VzZXJDb250ZXh0OmZ1bmN0aW9uKCl7VUxTb1o3OjtyZXR1 cm4gdGhpcy5fdXNlckNvbnRleHR9LHNldF91c2VyQ29udGV4dDpmdW5jdGlvbihh KXtVTFNvWjc6O3RoaXMuX3VzZXJDb250ZXh0PWF9LGdldF9leGVjdXRvcjpmdW5j dGlvbigpe1VMU29aNzo7cmV0dXJuIHRoaXMuX2V4ZWN1dG9yfSxzZXRfZXhlY3V0 b3I6ZnVuY3Rpb24oYSl7VUxTb1o3Ojt0aGlzLl9leGVjdXRvcj1hO3RoaXMuX2V4 ZWN1dG9yLl9zZXRfd2ViUmVxdWVzdCh0aGlzKX0sZ2V0X3RpbWVvdXQ6ZnVuY3Rp b24oKXtVTFNvWjc6O2lmKHRoaXMuX3RpbWVvdXQ9PT0wKXJldHVybiBTeXMuTmV0 LldlYlJlcXVlc3RNYW5hZ2VyLmdldF9kZWZhdWx0VGltZW91dCgpO3JldHVybiB0 aGlzLl90aW1lb3V0fSxzZXRfdGltZW91dDpmdW5jdGlvbihhKXtVTFNvWjc6O3Ro aXMuX3RpbWVvdXQ9YX0sZ2V0UmVzb2x2ZWRVcmw6ZnVuY3Rpb24oKXtVTFNvWjc6 O3JldHVybiBTeXMuTmV0LldlYlJlcXVlc3QuX3Jlc29sdmVVcmwodGhpcy5fdXJs KX0saW52b2tlOmZ1bmN0aW9uKCl7VUxTb1o3OjtTeXMuTmV0LldlYlJlcXVlc3RN YW5hZ2VyLmV4ZWN1dGVSZXF1ZXN0KHRoaXMpO3RoaXMuX2ludm9rZUNhbGxlZD10 cnVlfX07U3lzLk5ldC5XZWJSZXF1ZXN0Ll9yZXNvbHZlVXJsPWZ1bmN0aW9uKGIs YSl7VUxTb1o3OjtpZihiJiZiLmluZGV4T2YoIjovLyIpIT09LTEpcmV0dXJuIGI7 aWYoIWF8fGEubGVuZ3RoPT09MCl7dmFyIGQ9ZG9jdW1lbnQuZ2V0RWxlbWVudHNC eVRhZ05hbWUoImJhc2UiKVswXTtpZihkJiZkLmhyZWYmJmQuaHJlZi5sZW5ndGg+ MClhPWQuaHJlZjtlbHNlIGE9ZG9jdW1lbnQuVVJMfXZhciBjPWEuaW5kZXhPZigi PyIpO2lmKGMhPT0tMSlhPWEuc3Vic3RyKDAsYyk7Yz1hLmluZGV4T2YoIiMiKTtp ZihjIT09LTEpYT1hLnN1YnN0cigwLGMpO2E9YS5zdWJzdHIoMCxhLmxhc3RJbmRl eE9mKCIvIikrMSk7aWYoIWJ8fGIubGVuZ3RoPT09MClyZXR1cm4gYTtpZihiLmNo YXJBdCgwKT09PSIvIil7dmFyIGU9YS5pbmRleE9mKCI6Ly8iKSxnPWEuaW5kZXhP ZigiLyIsZSszKTtyZXR1cm4gYS5zdWJzdHIoMCxnKStifWVsc2V7dmFyIGY9YS5s YXN0SW5kZXhPZigiLyIpO3JldHVybiBhLnN1YnN0cigwLGYrMSkrYn19O1N5cy5O ZXQuV2ViUmVxdWVzdC5fY3JlYXRlUXVlcnlTdHJpbmc9ZnVuY3Rpb24oZCxiKXtV TFNvWjc6O2lmKCFiKWI9ZW5jb2RlVVJJQ29tcG9uZW50O3ZhciBhPW5ldyBTeXMu U3RyaW5nQnVpbGRlcixmPTA7Zm9yKHZhciBjIGluIGQpe3ZhciBlPWRbY107aWYo dHlwZW9mIGU9PT0iZnVuY3Rpb24iKWNvbnRpbnVlO3ZhciBnPVN5cy5TZXJpYWxp emF0aW9uLkphdmFTY3JpcHRTZXJpYWxpemVyLnNlcmlhbGl6ZShlKTtpZihmIT09 MClhLmFwcGVuZCgiJiIpO2EuYXBwZW5kKGMpO2EuYXBwZW5kKCI9Iik7YS5hcHBl bmQoYihnKSk7ZisrfXJldHVybiBhLnRvU3RyaW5nKCl9O1N5cy5OZXQuV2ViUmVx dWVzdC5fY3JlYXRlVXJsPWZ1bmN0aW9uKGEsYil7VUxTb1o3OjtpZighYilyZXR1 cm4gYTt2YXIgZD1TeXMuTmV0LldlYlJlcXVlc3QuX2NyZWF0ZVF1ZXJ5U3RyaW5n KGIpO2lmKGQubGVuZ3RoPjApe3ZhciBjPSI/IjtpZihhJiZhLmluZGV4T2YoIj8i KSE9PS0xKWM9IiYiO3JldHVybiBhK2MrZH1lbHNlIHJldHVybiBhfTtTeXMuTmV0 LldlYlJlcXVlc3QucmVnaXN0ZXJDbGFzcygiU3lzLk5ldC5XZWJSZXF1ZXN0Iik7 U3lzLk5ldC5XZWJTZXJ2aWNlUHJveHk9ZnVuY3Rpb24oKXt9O1N5cy5OZXQuV2Vi U2VydmljZVByb3h5LnByb3RvdHlwZT17Z2V0X3RpbWVvdXQ6ZnVuY3Rpb24oKXtV TFNvWjc6O3JldHVybiB0aGlzLl90aW1lb3V0fSxzZXRfdGltZW91dDpmdW5jdGlv bihhKXtVTFNvWjc6O2lmKGE8MCl0aHJvdyBFcnJvci5hcmd1bWVudE91dE9mUmFu Z2UoInZhbHVlIixhLFN5cy5SZXMuaW52YWxpZFRpbWVvdXQpO3RoaXMuX3RpbWVv dXQ9YX0sZ2V0X2RlZmF1bHRVc2VyQ29udGV4dDpmdW5jdGlvbigpe1VMU29aNzo7 cmV0dXJuIHRoaXMuX3VzZXJDb250ZXh0fSxzZXRfZGVmYXVsdFVzZXJDb250ZXh0 OmZ1bmN0aW9uKGEpe1VMU29aNzo7dGhpcy5fdXNlckNvbnRleHQ9YX0sZ2V0X2Rl ZmF1bHRTdWNjZWVkZWRDYWxsYmFjazpmdW5jdGlvbigpe1VMU29aNzo7cmV0dXJu IHRoaXMuX3N1Y2NlZWRlZH0sc2V0X2RlZmF1bHRTdWNjZWVkZWRDYWxsYmFjazpm dW5jdGlvbihhKXtVTFNvWjc6O3RoaXMuX3N1Y2NlZWRlZD1hfSxnZXRfZGVmYXVs dEZhaWxlZENhbGxiYWNrOmZ1bmN0aW9uKCl7VUxTb1o3OjtyZXR1cm4gdGhpcy5f ZmFpbGVkfSxzZXRfZGVmYXVsdEZhaWxlZENhbGxiYWNrOmZ1bmN0aW9uKGEpe1VM U29aNzo7dGhpcy5fZmFpbGVkPWF9LGdldF9wYXRoOmZ1bmN0aW9uKCl7VUxTb1o3 OjtyZXR1cm4gdGhpcy5fcGF0aH0sc2V0X3BhdGg6ZnVuY3Rpb24oYSl7VUxTb1o3 Ojt0aGlzLl9wYXRoPWF9LF9pbnZva2U6ZnVuY3Rpb24oZCxlLGcsZixjLGIsYSl7 VUxTb1o3OjtpZihjPT09bnVsbHx8dHlwZW9mIGM9PT0idW5kZWZpbmVkIiljPXRo aXMuZ2V0X2RlZmF1bHRTdWNjZWVkZWRDYWxsYmFjaygpO2lmKGI9PT1udWxsfHx0 eXBlb2YgYj09PSJ1bmRlZmluZWQiKWI9dGhpcy5nZXRfZGVmYXVsdEZhaWxlZENh bGxiYWNrKCk7aWYoYT09PW51bGx8fHR5cGVvZiBhPT09InVuZGVmaW5lZCIpYT10 aGlzLmdldF9kZWZhdWx0VXNlckNvbnRleHQoKTtyZXR1cm4gU3lzLk5ldC5XZWJT ZXJ2aWNlUHJveHkuaW52b2tlKGQsZSxnLGYsYyxiLGEsdGhpcy5nZXRfdGltZW91 dCgpKX19O1N5cy5OZXQuV2ViU2VydmljZVByb3h5LnJlZ2lzdGVyQ2xhc3MoIlN5 cy5OZXQuV2ViU2VydmljZVByb3h5Iik7U3lzLk5ldC5XZWJTZXJ2aWNlUHJveHku aW52b2tlPWZ1bmN0aW9uKGssYSxqLGQsaSxjLGYsaCl7VUxTb1o3Ojt2YXIgYj1u ZXcgU3lzLk5ldC5XZWJSZXF1ZXN0O2IuZ2V0X2hlYWRlcnMoKVsiQ29udGVudC1U eXBlIl09ImFwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgiO2lmKCFkKWQ9 e307dmFyIGc9ZDtpZighanx8IWcpZz17fTtiLnNldF91cmwoU3lzLk5ldC5XZWJS ZXF1ZXN0Ll9jcmVhdGVVcmwoaysiLyIrZW5jb2RlVVJJQ29tcG9uZW50KGEpLGcp KTt2YXIgZT1udWxsO2lmKCFqKXtlPVN5cy5TZXJpYWxpemF0aW9uLkphdmFTY3Jp cHRTZXJpYWxpemVyLnNlcmlhbGl6ZShkKTtpZihlPT09Int9IillPSIifWIuc2V0 X2JvZHkoZSk7Yi5hZGRfY29tcGxldGVkKGwpO2lmKGgmJmg+MCliLnNldF90aW1l b3V0KGgpO2IuaW52b2tlKCk7ZnVuY3Rpb24gbChkKXtVTFNvWjc6O2lmKGQuZ2V0 X3Jlc3BvbnNlQXZhaWxhYmxlKCkpe3ZhciBnPWQuZ2V0X3N0YXR1c0NvZGUoKSxi PW51bGw7dHJ5e3ZhciBlPWQuZ2V0UmVzcG9uc2VIZWFkZXIoIkNvbnRlbnQtVHlw ZSIpO2lmKGUuc3RhcnRzV2l0aCgiYXBwbGljYXRpb24vanNvbiIpKWI9ZC5nZXRf b2JqZWN0KCk7ZWxzZSBpZihlLnN0YXJ0c1dpdGgoInRleHQveG1sIikpYj1kLmdl dF94bWwoKTtlbHNlIGI9ZC5nZXRfcmVzcG9uc2VEYXRhKCl9Y2F0Y2gobSl7fXZh ciBrPWQuZ2V0UmVzcG9uc2VIZWFkZXIoImpzb25lcnJvciIpLGg9az09PSJ0cnVl IjtpZihoKXtpZihiKWI9bmV3IFN5cy5OZXQuV2ViU2VydmljZUVycm9yKGZhbHNl LGIuTWVzc2FnZSxiLlN0YWNrVHJhY2UsYi5FeGNlcHRpb25UeXBlKX1lbHNlIGlm KGUuc3RhcnRzV2l0aCgiYXBwbGljYXRpb24vanNvbiIpKWI9Yi5kO2lmKGc8MjAw fHxnPj0zMDB8fGgpe2lmKGMpe2lmKCFifHwhaCliPW5ldyBTeXMuTmV0LldlYlNl cnZpY2VFcnJvcihmYWxzZSxTdHJpbmcuZm9ybWF0KFN5cy5SZXMud2ViU2Vydmlj ZUZhaWxlZE5vTXNnLGEpLCIiLCIiKTtiLl9zdGF0dXNDb2RlPWc7YyhiLGYsYSl9 fWVsc2UgaWYoaSlpKGIsZixhKX1lbHNle3ZhciBqO2lmKGQuZ2V0X3RpbWVkT3V0 KCkpaj1TdHJpbmcuZm9ybWF0KFN5cy5SZXMud2ViU2VydmljZVRpbWVkT3V0LGEp O2Vsc2Ugaj1TdHJpbmcuZm9ybWF0KFN5cy5SZXMud2ViU2VydmljZUZhaWxlZE5v TXNnLGEpO2lmKGMpYyhuZXcgU3lzLk5ldC5XZWJTZXJ2aWNlRXJyb3IoZC5nZXRf dGltZWRPdXQoKSxqLCIiLCIiKSxmLGEpfX1yZXR1cm4gYn07U3lzLk5ldC5XZWJT ZXJ2aWNlUHJveHkuX2dlbmVyYXRlVHlwZWRDb25zdHJ1Y3Rvcj1mdW5jdGlvbihh KXtVTFNvWjc6O3JldHVybiBmdW5jdGlvbihiKXtVTFNvWjc6O2lmKGIpZm9yKHZh ciBjIGluIGIpdGhpc1tjXT1iW2NdO3RoaXMuX190eXBlPWF9fTtTeXMuTmV0Lldl YlNlcnZpY2VFcnJvcj1mdW5jdGlvbihjLGQsYixhKXtVTFNvWjc6O3RoaXMuX3Rp bWVkT3V0PWM7dGhpcy5fbWVzc2FnZT1kO3RoaXMuX3N0YWNrVHJhY2U9Yjt0aGlz Ll9leGNlcHRpb25UeXBlPWE7dGhpcy5fc3RhdHVzQ29kZT0tMX07U3lzLk5ldC5X ZWJTZXJ2aWNlRXJyb3IucHJvdG90eXBlPXtnZXRfdGltZWRPdXQ6ZnVuY3Rpb24o KXtVTFNvWjc6O3JldHVybiB0aGlzLl90aW1lZE91dH0sZ2V0X3N0YXR1c0NvZGU6 ZnVuY3Rpb24oKXtVTFNvWjc6O3JldHVybiB0aGlzLl9zdGF0dXNDb2RlfSxnZXRf bWVzc2FnZTpmdW5jdGlvbigpe1VMU29aNzo7cmV0dXJuIHRoaXMuX21lc3NhZ2V9 LGdldF9zdGFja1RyYWNlOmZ1bmN0aW9uKCl7VUxTb1o3OjtyZXR1cm4gdGhpcy5f c3RhY2tUcmFjZX0sZ2V0X2V4Y2VwdGlvblR5cGU6ZnVuY3Rpb24oKXtVTFNvWjc6 O3JldHVybiB0aGlzLl9leGNlcHRpb25UeXBlfX07U3lzLk5ldC5XZWJTZXJ2aWNl RXJyb3IucmVnaXN0ZXJDbGFzcygiU3lzLk5ldC5XZWJTZXJ2aWNlRXJyb3IiKTtU eXBlLnJlZ2lzdGVyTmFtZXNwYWNlKCJTeXMuU2VydmljZXMiKTtTeXMuU2Vydmlj ZXMuX1Byb2ZpbGVTZXJ2aWNlPWZ1bmN0aW9uKCl7VUxTb1o3OjtTeXMuU2Vydmlj ZXMuX1Byb2ZpbGVTZXJ2aWNlLmluaXRpYWxpemVCYXNlKHRoaXMpO3RoaXMucHJv cGVydGllcz17fX07U3lzLlNlcnZpY2VzLl9Qcm9maWxlU2VydmljZS5EZWZhdWx0 V2ViU2VydmljZVBhdGg9IiI7U3lzLlNlcnZpY2VzLl9Qcm9maWxlU2VydmljZS5w cm90b3R5cGU9e19kZWZhdWx0TG9hZENvbXBsZXRlZENhbGxiYWNrOm51bGwsX2Rl ZmF1bHRTYXZlQ29tcGxldGVkQ2FsbGJhY2s6bnVsbCxfcGF0aDoiIixfdGltZW91 dDowLGdldF9kZWZhdWx0TG9hZENvbXBsZXRlZENhbGxiYWNrOmZ1bmN0aW9uKCl7 VUxTb1o3OjtyZXR1cm4gdGhpcy5fZGVmYXVsdExvYWRDb21wbGV0ZWRDYWxsYmFj a30sc2V0X2RlZmF1bHRMb2FkQ29tcGxldGVkQ2FsbGJhY2s6ZnVuY3Rpb24oYSl7 VUxTb1o3Ojt0aGlzLl9kZWZhdWx0TG9hZENvbXBsZXRlZENhbGxiYWNrPWF9LGdl dF9kZWZhdWx0U2F2ZUNvbXBsZXRlZENhbGxiYWNrOmZ1bmN0aW9uKCl7VUxTb1o3 OjtyZXR1cm4gdGhpcy5fZGVmYXVsdFNhdmVDb21wbGV0ZWRDYWxsYmFja30sc2V0 X2RlZmF1bHRTYXZlQ29tcGxldGVkQ2FsbGJhY2s6ZnVuY3Rpb24oYSl7VUxTb1o3 Ojt0aGlzLl9kZWZhdWx0U2F2ZUNvbXBsZXRlZENhbGxiYWNrPWF9LGdldF9wYXRo OmZ1bmN0aW9uKCl7VUxTb1o3OjtyZXR1cm4gdGhpcy5fcGF0aHx8IiJ9LGxvYWQ6 ZnVuY3Rpb24oYyxkLGUsZil7VUxTb1o3Ojt2YXIgYixhO2lmKCFjKXthPSJHZXRB bGxQcm9wZXJ0aWVzRm9yQ3VycmVudFVzZXIiO2I9e2F1dGhlbnRpY2F0ZWRVc2Vy T25seTpmYWxzZX19ZWxzZXthPSJHZXRQcm9wZXJ0aWVzRm9yQ3VycmVudFVzZXIi O2I9e3Byb3BlcnRpZXM6dGhpcy5fY2xvbmVQcm9wZXJ0eU5hbWVzKGMpLGF1dGhl bnRpY2F0ZWRVc2VyT25seTpmYWxzZX19dGhpcy5faW52b2tlKHRoaXMuX2dldF9w YXRoKCksYSxmYWxzZSxiLEZ1bmN0aW9uLmNyZWF0ZURlbGVnYXRlKHRoaXMsdGhp cy5fb25Mb2FkQ29tcGxldGUpLEZ1bmN0aW9uLmNyZWF0ZURlbGVnYXRlKHRoaXMs dGhpcy5fb25Mb2FkRmFpbGVkKSxbZCxlLGZdKX0sc2F2ZTpmdW5jdGlvbihkLGIs YyxlKXtVTFNvWjc6O3ZhciBhPXRoaXMuX2ZsYXR0ZW5Qcm9wZXJ0aWVzKGQsdGhp cy5wcm9wZXJ0aWVzKTt0aGlzLl9pbnZva2UodGhpcy5fZ2V0X3BhdGgoKSwiU2V0 UHJvcGVydGllc0ZvckN1cnJlbnRVc2VyIixmYWxzZSx7dmFsdWVzOmEudmFsdWUs YXV0aGVudGljYXRlZFVzZXJPbmx5OmZhbHNlfSxGdW5jdGlvbi5jcmVhdGVEZWxl Z2F0ZSh0aGlzLHRoaXMuX29uU2F2ZUNvbXBsZXRlKSxGdW5jdGlvbi5jcmVhdGVE ZWxlZ2F0ZSh0aGlzLHRoaXMuX29uU2F2ZUZhaWxlZCksW2IsYyxlLGEuY291bnRd KX0sX2Nsb25lUHJvcGVydHlOYW1lczpmdW5jdGlvbihlKXtVTFNvWjc6O3ZhciBj PVtdLGQ9e307Zm9yKHZhciBiPTA7YjxlLmxlbmd0aDtiKyspe3ZhciBhPWVbYl07 aWYoIWRbYV0pe0FycmF5LmFkZChjLGEpO2RbYV09dHJ1ZX19cmV0dXJuIGN9LF9m bGF0dGVuUHJvcGVydGllczpmdW5jdGlvbihhLGksail7VUxTb1o3Ojt2YXIgYj17 fSxlLGQsZz0wO2lmKGEmJmEubGVuZ3RoPT09MClyZXR1cm4ge3ZhbHVlOmIsY291 bnQ6MH07Zm9yKHZhciBjIGluIGkpe2U9aVtjXTtkPWo/aisiLiIrYzpjO2lmKFN5 cy5TZXJ2aWNlcy5Qcm9maWxlR3JvdXAuaXNJbnN0YW5jZU9mVHlwZShlKSl7dmFy IGs9dGhpcy5fZmxhdHRlblByb3BlcnRpZXMoYSxlLGQpLGg9ay52YWx1ZTtnKz1r LmNvdW50O2Zvcih2YXIgZiBpbiBoKXt2YXIgbD1oW2ZdO2JbZl09bH19ZWxzZSBp ZighYXx8QXJyYXkuaW5kZXhPZihhLGQpIT09LTEpe2JbZF09ZTtnKyt9fXJldHVy biB7dmFsdWU6Yixjb3VudDpnfX0sX2dldF9wYXRoOmZ1bmN0aW9uKCl7VUxTb1o3 Ojt2YXIgYT10aGlzLmdldF9wYXRoKCk7aWYoIWEubGVuZ3RoKWE9U3lzLlNlcnZp Y2VzLl9Qcm9maWxlU2VydmljZS5EZWZhdWx0V2ViU2VydmljZVBhdGg7aWYoIWF8 fCFhLmxlbmd0aCl0aHJvdyBFcnJvci5pbnZhbGlkT3BlcmF0aW9uKFN5cy5SZXMu c2VydmljZVBhdGhOb3RTZXQpO3JldHVybiBhfSxfb25Mb2FkQ29tcGxldGU6ZnVu Y3Rpb24oYSxlLGcpe1VMU29aNzo7aWYodHlwZW9mIGEhPT0ib2JqZWN0Iil0aHJv dyBFcnJvci5pbnZhbGlkT3BlcmF0aW9uKFN0cmluZy5mb3JtYXQoU3lzLlJlcy53 ZWJTZXJ2aWNlSW52YWxpZFJldHVyblR5cGUsZywiT2JqZWN0IikpO3ZhciBjPXRo aXMuX3VuZmxhdHRlblByb3BlcnRpZXMoYSk7Zm9yKHZhciBiIGluIGMpdGhpcy5w cm9wZXJ0aWVzW2JdPWNbYl07dmFyIGQ9ZVswXXx8dGhpcy5nZXRfZGVmYXVsdExv YWRDb21wbGV0ZWRDYWxsYmFjaygpfHx0aGlzLmdldF9kZWZhdWx0U3VjY2VlZGVk Q2FsbGJhY2soKTtpZihkKXt2YXIgZj1lWzJdfHx0aGlzLmdldF9kZWZhdWx0VXNl ckNvbnRleHQoKTtkKGEubGVuZ3RoLGYsIlN5cy5TZXJ2aWNlcy5Qcm9maWxlU2Vy dmljZS5sb2FkIil9fSxfb25Mb2FkRmFpbGVkOmZ1bmN0aW9uKGQsYil7VUxTb1o3 Ojt2YXIgYT1iWzFdfHx0aGlzLmdldF9kZWZhdWx0RmFpbGVkQ2FsbGJhY2soKTtp ZihhKXt2YXIgYz1iWzJdfHx0aGlzLmdldF9kZWZhdWx0VXNlckNvbnRleHQoKTth KGQsYywiU3lzLlNlcnZpY2VzLlByb2ZpbGVTZXJ2aWNlLmxvYWQiKX19LF9vblNh dmVDb21wbGV0ZTpmdW5jdGlvbihhLGIsZil7VUxTb1o3Ojt2YXIgYz1iWzNdO2lm KGEhPT1udWxsKWlmKGEgaW5zdGFuY2VvZiBBcnJheSljLT1hLmxlbmd0aDtlbHNl IGlmKHR5cGVvZiBhPT09Im51bWJlciIpYz1hO2Vsc2UgdGhyb3cgRXJyb3IuaW52 YWxpZE9wZXJhdGlvbihTdHJpbmcuZm9ybWF0KFN5cy5SZXMud2ViU2VydmljZUlu dmFsaWRSZXR1cm5UeXBlLGYsIkFycmF5IikpO3ZhciBkPWJbMF18fHRoaXMuZ2V0 X2RlZmF1bHRTYXZlQ29tcGxldGVkQ2FsbGJhY2soKXx8dGhpcy5nZXRfZGVmYXVs dFN1Y2NlZWRlZENhbGxiYWNrKCk7aWYoZCl7dmFyIGU9YlsyXXx8dGhpcy5nZXRf ZGVmYXVsdFVzZXJDb250ZXh0KCk7ZChjLGUsIlN5cy5TZXJ2aWNlcy5Qcm9maWxl U2VydmljZS5zYXZlIil9fSxfb25TYXZlRmFpbGVkOmZ1bmN0aW9uKGQsYil7VUxT b1o3Ojt2YXIgYT1iWzFdfHx0aGlzLmdldF9kZWZhdWx0RmFpbGVkQ2FsbGJhY2so KTtpZihhKXt2YXIgYz1iWzJdfHx0aGlzLmdldF9kZWZhdWx0VXNlckNvbnRleHQo KTthKGQsYywiU3lzLlNlcnZpY2VzLlByb2ZpbGVTZXJ2aWNlLnNhdmUiKX19LF91 bmZsYXR0ZW5Qcm9wZXJ0aWVzOmZ1bmN0aW9uKGUpe1VMU29aNzo7dmFyIGM9e30s ZCxmLGg9MDtmb3IodmFyIGEgaW4gZSl7aCsrO2Y9ZVthXTtkPWEuaW5kZXhPZigi LiIpO2lmKGQhPT0tMSl7dmFyIGc9YS5zdWJzdHIoMCxkKTthPWEuc3Vic3RyKGQr MSk7dmFyIGI9Y1tnXTtpZighYnx8IVN5cy5TZXJ2aWNlcy5Qcm9maWxlR3JvdXAu aXNJbnN0YW5jZU9mVHlwZShiKSl7Yj1uZXcgU3lzLlNlcnZpY2VzLlByb2ZpbGVH cm91cDtjW2ddPWJ9YlthXT1mfWVsc2UgY1thXT1mfWUubGVuZ3RoPWg7cmV0dXJu IGN9fTtTeXMuU2VydmljZXMuX1Byb2ZpbGVTZXJ2aWNlLnJlZ2lzdGVyQ2xhc3Mo IlN5cy5TZXJ2aWNlcy5fUHJvZmlsZVNlcnZpY2UiLFN5cy5OZXQuV2ViU2Vydmlj ZVByb3h5KTtTeXMuU2VydmljZXMuUHJvZmlsZVNlcnZpY2U9bmV3IFN5cy5TZXJ2 aWNlcy5fUHJvZmlsZVNlcnZpY2U7U3lzLlNlcnZpY2VzLlByb2ZpbGVHcm91cD1m dW5jdGlvbihhKXtVTFNvWjc6O2lmKGEpZm9yKHZhciBiIGluIGEpdGhpc1tiXT1h W2JdfTtTeXMuU2VydmljZXMuUHJvZmlsZUdyb3VwLnJlZ2lzdGVyQ2xhc3MoIlN5 cy5TZXJ2aWNlcy5Qcm9maWxlR3JvdXAiKTtTeXMuU2VydmljZXMuX0F1dGhlbnRp Y2F0aW9uU2VydmljZT1mdW5jdGlvbigpe1VMU29aNzo7U3lzLlNlcnZpY2VzLl9B dXRoZW50aWNhdGlvblNlcnZpY2UuaW5pdGlhbGl6ZUJhc2UodGhpcyl9O1N5cy5T ZXJ2aWNlcy5fQXV0aGVudGljYXRpb25TZXJ2aWNlLkRlZmF1bHRXZWJTZXJ2aWNl UGF0aD0iIjtTeXMuU2VydmljZXMuX0F1dGhlbnRpY2F0aW9uU2VydmljZS5wcm90 b3R5cGU9e19kZWZhdWx0TG9naW5Db21wbGV0ZWRDYWxsYmFjazpudWxsLF9kZWZh dWx0TG9nb3V0Q29tcGxldGVkQ2FsbGJhY2s6bnVsbCxfcGF0aDoiIixfdGltZW91 dDowLF9hdXRoZW50aWNhdGVkOmZhbHNlLGdldF9kZWZhdWx0TG9naW5Db21wbGV0 ZWRDYWxsYmFjazpmdW5jdGlvbigpe1VMU29aNzo7cmV0dXJuIHRoaXMuX2RlZmF1 bHRMb2dpbkNvbXBsZXRlZENhbGxiYWNrfSxzZXRfZGVmYXVsdExvZ2luQ29tcGxl dGVkQ2FsbGJhY2s6ZnVuY3Rpb24oYSl7VUxTb1o3Ojt0aGlzLl9kZWZhdWx0TG9n aW5Db21wbGV0ZWRDYWxsYmFjaz1hfSxnZXRfZGVmYXVsdExvZ291dENvbXBsZXRl ZENhbGxiYWNrOmZ1bmN0aW9uKCl7VUxTb1o3OjtyZXR1cm4gdGhpcy5fZGVmYXVs dExvZ291dENvbXBsZXRlZENhbGxiYWNrfSxzZXRfZGVmYXVsdExvZ291dENvbXBs ZXRlZENhbGxiYWNrOmZ1bmN0aW9uKGEpe1VMU29aNzo7dGhpcy5fZGVmYXVsdExv Z291dENvbXBsZXRlZENhbGxiYWNrPWF9LGdldF9pc0xvZ2dlZEluOmZ1bmN0aW9u KCl7VUxTb1o3OjtyZXR1cm4gdGhpcy5fYXV0aGVudGljYXRlZH0sZ2V0X3BhdGg6 ZnVuY3Rpb24oKXtVTFNvWjc6O3JldHVybiB0aGlzLl9wYXRofHwiIn0sbG9naW46 ZnVuY3Rpb24oYyxiLGEsaCxmLGQsZSxnKXtVTFNvWjc6O3RoaXMuX2ludm9rZSh0 aGlzLl9nZXRfcGF0aCgpLCJMb2dpbiIsZmFsc2Use3VzZXJOYW1lOmMscGFzc3dv cmQ6YixjcmVhdGVQZXJzaXN0ZW50Q29va2llOmF9LEZ1bmN0aW9uLmNyZWF0ZURl bGVnYXRlKHRoaXMsdGhpcy5fb25Mb2dpbkNvbXBsZXRlKSxGdW5jdGlvbi5jcmVh dGVEZWxlZ2F0ZSh0aGlzLHRoaXMuX29uTG9naW5GYWlsZWQpLFtjLGIsYSxoLGYs ZCxlLGddKX0sbG9nb3V0OmZ1bmN0aW9uKGMsYSxiLGQpe1VMU29aNzo7dGhpcy5f aW52b2tlKHRoaXMuX2dldF9wYXRoKCksIkxvZ291dCIsZmFsc2Use30sRnVuY3Rp b24uY3JlYXRlRGVsZWdhdGUodGhpcyx0aGlzLl9vbkxvZ291dENvbXBsZXRlKSxG dW5jdGlvbi5jcmVhdGVEZWxlZ2F0ZSh0aGlzLHRoaXMuX29uTG9nb3V0RmFpbGVk KSxbYyxhLGIsZF0pfSxfZ2V0X3BhdGg6ZnVuY3Rpb24oKXtVTFNvWjc6O3ZhciBh PXRoaXMuZ2V0X3BhdGgoKTtpZighYS5sZW5ndGgpYT1TeXMuU2VydmljZXMuX0F1 dGhlbnRpY2F0aW9uU2VydmljZS5EZWZhdWx0V2ViU2VydmljZVBhdGg7aWYoIWF8 fCFhLmxlbmd0aCl0aHJvdyBFcnJvci5pbnZhbGlkT3BlcmF0aW9uKFN5cy5SZXMu c2VydmljZVBhdGhOb3RTZXQpO3JldHVybiBhfSxfb25Mb2dpbkNvbXBsZXRlOmZ1 bmN0aW9uKGUsYyxmKXtVTFNvWjc6O2lmKHR5cGVvZiBlIT09ImJvb2xlYW4iKXRo cm93IEVycm9yLmludmFsaWRPcGVyYXRpb24oU3RyaW5nLmZvcm1hdChTeXMuUmVz LndlYlNlcnZpY2VJbnZhbGlkUmV0dXJuVHlwZSxmLCJCb29sZWFuIikpO3ZhciBi PWNbNF0sZD1jWzddfHx0aGlzLmdldF9kZWZhdWx0VXNlckNvbnRleHQoKSxhPWNb NV18fHRoaXMuZ2V0X2RlZmF1bHRMb2dpbkNvbXBsZXRlZENhbGxiYWNrKCl8fHRo aXMuZ2V0X2RlZmF1bHRTdWNjZWVkZWRDYWxsYmFjaygpO2lmKGUpe3RoaXMuX2F1 dGhlbnRpY2F0ZWQ9dHJ1ZTtpZihhKWEodHJ1ZSxkLCJTeXMuU2VydmljZXMuQXV0 aGVudGljYXRpb25TZXJ2aWNlLmxvZ2luIik7aWYodHlwZW9mIGIhPT0idW5kZWZp bmVkIiYmYiE9PW51bGwpd2luZG93LmxvY2F0aW9uLmhyZWY9Yn1lbHNlIGlmKGEp YShmYWxzZSxkLCJTeXMuU2VydmljZXMuQXV0aGVudGljYXRpb25TZXJ2aWNlLmxv Z2luIil9LF9vbkxvZ2luRmFpbGVkOmZ1bmN0aW9uKGQsYil7VUxTb1o3Ojt2YXIg YT1iWzZdfHx0aGlzLmdldF9kZWZhdWx0RmFpbGVkQ2FsbGJhY2soKTtpZihhKXt2 YXIgYz1iWzddfHx0aGlzLmdldF9kZWZhdWx0VXNlckNvbnRleHQoKTthKGQsYywi U3lzLlNlcnZpY2VzLkF1dGhlbnRpY2F0aW9uU2VydmljZS5sb2dpbiIpfX0sX29u TG9nb3V0Q29tcGxldGU6ZnVuY3Rpb24oZixhLGUpe1VMU29aNzo7aWYoZiE9PW51 bGwpdGhyb3cgRXJyb3IuaW52YWxpZE9wZXJhdGlvbihTdHJpbmcuZm9ybWF0KFN5 cy5SZXMud2ViU2VydmljZUludmFsaWRSZXR1cm5UeXBlLGUsIm51bGwiKSk7dmFy IGI9YVswXSxkPWFbM118fHRoaXMuZ2V0X2RlZmF1bHRVc2VyQ29udGV4dCgpLGM9 YVsxXXx8dGhpcy5nZXRfZGVmYXVsdExvZ291dENvbXBsZXRlZENhbGxiYWNrKCl8 fHRoaXMuZ2V0X2RlZmF1bHRTdWNjZWVkZWRDYWxsYmFjaygpO3RoaXMuX2F1dGhl bnRpY2F0ZWQ9ZmFsc2U7aWYoYyljKG51bGwsZCwiU3lzLlNlcnZpY2VzLkF1dGhl bnRpY2F0aW9uU2VydmljZS5sb2dvdXQiKTtpZighYil3aW5kb3cubG9jYXRpb24u cmVsb2FkKCk7ZWxzZSB3aW5kb3cubG9jYXRpb24uaHJlZj1ifSxfb25Mb2dvdXRG YWlsZWQ6ZnVuY3Rpb24oYyxiKXtVTFNvWjc6O3ZhciBhPWJbMl18fHRoaXMuZ2V0 X2RlZmF1bHRGYWlsZWRDYWxsYmFjaygpO2lmKGEpYShjLGJbM10sIlN5cy5TZXJ2 aWNlcy5BdXRoZW50aWNhdGlvblNlcnZpY2UubG9nb3V0Iil9LF9zZXRBdXRoZW50 aWNhdGVkOmZ1bmN0aW9uKGEpe1VMU29aNzo7dGhpcy5fYXV0aGVudGljYXRlZD1h fX07U3lzLlNlcnZpY2VzLl9BdXRoZW50aWNhdGlvblNlcnZpY2UucmVnaXN0ZXJD bGFzcygiU3lzLlNlcnZpY2VzLl9BdXRoZW50aWNhdGlvblNlcnZpY2UiLFN5cy5O ZXQuV2ViU2VydmljZVByb3h5KTtTeXMuU2VydmljZXMuQXV0aGVudGljYXRpb25T ZXJ2aWNlPW5ldyBTeXMuU2VydmljZXMuX0F1dGhlbnRpY2F0aW9uU2VydmljZTtT eXMuU2VydmljZXMuX1JvbGVTZXJ2aWNlPWZ1bmN0aW9uKCl7VUxTb1o3OjtTeXMu U2VydmljZXMuX1JvbGVTZXJ2aWNlLmluaXRpYWxpemVCYXNlKHRoaXMpO3RoaXMu X3JvbGVzPVtdfTtTeXMuU2VydmljZXMuX1JvbGVTZXJ2aWNlLkRlZmF1bHRXZWJT ZXJ2aWNlUGF0aD0iIjtTeXMuU2VydmljZXMuX1JvbGVTZXJ2aWNlLnByb3RvdHlw ZT17X2RlZmF1bHRMb2FkQ29tcGxldGVkQ2FsbGJhY2s6bnVsbCxfcm9sZXNJbmRl eDpudWxsLF90aW1lb3V0OjAsX3BhdGg6IiIsZ2V0X2RlZmF1bHRMb2FkQ29tcGxl dGVkQ2FsbGJhY2s6ZnVuY3Rpb24oKXtVTFNvWjc6O3JldHVybiB0aGlzLl9kZWZh dWx0TG9hZENvbXBsZXRlZENhbGxiYWNrfSxzZXRfZGVmYXVsdExvYWRDb21wbGV0 ZWRDYWxsYmFjazpmdW5jdGlvbihhKXtVTFNvWjc6O3RoaXMuX2RlZmF1bHRMb2Fk Q29tcGxldGVkQ2FsbGJhY2s9YX0sZ2V0X3BhdGg6ZnVuY3Rpb24oKXtVTFNvWjc6 O3JldHVybiB0aGlzLl9wYXRofHwiIn0sZ2V0X3JvbGVzOmZ1bmN0aW9uKCl7VUxT b1o3OjtyZXR1cm4gQXJyYXkuY2xvbmUodGhpcy5fcm9sZXMpfSxpc1VzZXJJblJv bGU6ZnVuY3Rpb24oYSl7VUxTb1o3Ojt2YXIgYj10aGlzLl9nZXRfcm9sZXNJbmRl eCgpW2EudHJpbSgpLnRvTG93ZXJDYXNlKCldO3JldHVybiAhIWJ9LGxvYWQ6ZnVu Y3Rpb24oYSxiLGMpe1VMU29aNzo7U3lzLk5ldC5XZWJTZXJ2aWNlUHJveHkuaW52 b2tlKHRoaXMuX2dldF9wYXRoKCksIkdldFJvbGVzRm9yQ3VycmVudFVzZXIiLGZh bHNlLHt9LEZ1bmN0aW9uLmNyZWF0ZURlbGVnYXRlKHRoaXMsdGhpcy5fb25Mb2Fk Q29tcGxldGUpLEZ1bmN0aW9uLmNyZWF0ZURlbGVnYXRlKHRoaXMsdGhpcy5fb25M b2FkRmFpbGVkKSxbYSxiLGNdLHRoaXMuZ2V0X3RpbWVvdXQoKSl9LF9nZXRfcGF0 aDpmdW5jdGlvbigpe1VMU29aNzo7dmFyIGE9dGhpcy5nZXRfcGF0aCgpO2lmKCFh fHwhYS5sZW5ndGgpYT1TeXMuU2VydmljZXMuX1JvbGVTZXJ2aWNlLkRlZmF1bHRX ZWJTZXJ2aWNlUGF0aDtpZighYXx8IWEubGVuZ3RoKXRocm93IEVycm9yLmludmFs aWRPcGVyYXRpb24oU3lzLlJlcy5zZXJ2aWNlUGF0aE5vdFNldCk7cmV0dXJuIGF9 LF9nZXRfcm9sZXNJbmRleDpmdW5jdGlvbigpe1VMU29aNzo7aWYoIXRoaXMuX3Jv bGVzSW5kZXgpe3ZhciBiPXt9O2Zvcih2YXIgYT0wO2E8dGhpcy5fcm9sZXMubGVu Z3RoO2ErKyliW3RoaXMuX3JvbGVzW2FdLnRvTG93ZXJDYXNlKCldPXRydWU7dGhp cy5fcm9sZXNJbmRleD1ifXJldHVybiB0aGlzLl9yb2xlc0luZGV4fSxfb25Mb2Fk Q29tcGxldGU6ZnVuY3Rpb24oYSxjLGYpe1VMU29aNzo7aWYoYSYmIShhIGluc3Rh bmNlb2YgQXJyYXkpKXRocm93IEVycm9yLmludmFsaWRPcGVyYXRpb24oU3RyaW5n LmZvcm1hdChTeXMuUmVzLndlYlNlcnZpY2VJbnZhbGlkUmV0dXJuVHlwZSxmLCJB cnJheSIpKTt0aGlzLl9yb2xlcz1hO3RoaXMuX3JvbGVzSW5kZXg9bnVsbDt2YXIg Yj1jWzBdfHx0aGlzLmdldF9kZWZhdWx0TG9hZENvbXBsZXRlZENhbGxiYWNrKCl8 fHRoaXMuZ2V0X2RlZmF1bHRTdWNjZWVkZWRDYWxsYmFjaygpO2lmKGIpe3ZhciBl PWNbMl18fHRoaXMuZ2V0X2RlZmF1bHRVc2VyQ29udGV4dCgpLGQ9QXJyYXkuY2xv bmUoYSk7YihkLGUsIlN5cy5TZXJ2aWNlcy5Sb2xlU2VydmljZS5sb2FkIil9fSxf b25Mb2FkRmFpbGVkOmZ1bmN0aW9uKGQsYil7VUxTb1o3Ojt2YXIgYT1iWzFdfHx0 aGlzLmdldF9kZWZhdWx0RmFpbGVkQ2FsbGJhY2soKTtpZihhKXt2YXIgYz1iWzJd fHx0aGlzLmdldF9kZWZhdWx0VXNlckNvbnRleHQoKTthKGQsYywiU3lzLlNlcnZp Y2VzLlJvbGVTZXJ2aWNlLmxvYWQiKX19fTtTeXMuU2VydmljZXMuX1JvbGVTZXJ2 aWNlLnJlZ2lzdGVyQ2xhc3MoIlN5cy5TZXJ2aWNlcy5fUm9sZVNlcnZpY2UiLFN5 cy5OZXQuV2ViU2VydmljZVByb3h5KTtTeXMuU2VydmljZXMuUm9sZVNlcnZpY2U9 bmV3IFN5cy5TZXJ2aWNlcy5fUm9sZVNlcnZpY2U7VHlwZS5yZWdpc3Rlck5hbWVz cGFjZSgiU3lzLlNlcmlhbGl6YXRpb24iKTtTeXMuU2VyaWFsaXphdGlvbi5KYXZh U2NyaXB0U2VyaWFsaXplcj1mdW5jdGlvbigpe307U3lzLlNlcmlhbGl6YXRpb24u SmF2YVNjcmlwdFNlcmlhbGl6ZXIucmVnaXN0ZXJDbGFzcygiU3lzLlNlcmlhbGl6 YXRpb24uSmF2YVNjcmlwdFNlcmlhbGl6ZXIiKTtTeXMuU2VyaWFsaXphdGlvbi5K YXZhU2NyaXB0U2VyaWFsaXplci5fY2hhcnNUb0VzY2FwZVJlZ0V4cz1bXTtTeXMu U2VyaWFsaXphdGlvbi5KYXZhU2NyaXB0U2VyaWFsaXplci5fY2hhcnNUb0VzY2Fw ZT1bXTtTeXMuU2VyaWFsaXphdGlvbi5KYXZhU2NyaXB0U2VyaWFsaXplci5fZGF0 ZVJlZ0V4PW5ldyBSZWdFeHAoJyhefFteXFxcXF0pXFwiXFxcXC9EYXRlXFwoKC0/ WzAtOV0rKSg/OlthLXpBLVpdfCg/OlxcK3wtKVswLTldezR9KT9cXClcXFxcL1xc IicsImciKTtTeXMuU2VyaWFsaXphdGlvbi5KYXZhU2NyaXB0U2VyaWFsaXplci5f ZXNjYXBlQ2hhcnM9e307U3lzLlNlcmlhbGl6YXRpb24uSmF2YVNjcmlwdFNlcmlh bGl6ZXIuX2VzY2FwZVJlZ0V4PW5ldyBSZWdFeHAoJ1siXFxcXFxceDAwLVxceDFG XScsImkiKTtTeXMuU2VyaWFsaXphdGlvbi5KYXZhU2NyaXB0U2VyaWFsaXplci5f ZXNjYXBlUmVnRXhHbG9iYWw9bmV3IFJlZ0V4cCgnWyJcXFxcXFx4MDAtXFx4MUZd JywiZyIpO1N5cy5TZXJpYWxpemF0aW9uLkphdmFTY3JpcHRTZXJpYWxpemVyLl9q c29uUmVnRXg9bmV3IFJlZ0V4cCgiW14sOnt9XFxbXFxdMC05LlxcLStFYWVmbG5y LXUgXFxuXFxyXFx0XSIsImciKTtTeXMuU2VyaWFsaXphdGlvbi5KYXZhU2NyaXB0 U2VyaWFsaXplci5fanNvblN0cmluZ1JlZ0V4PW5ldyBSZWdFeHAoJyIoXFxcXC58 W14iXFxcXF0pKiInLCJnIik7U3lzLlNlcmlhbGl6YXRpb24uSmF2YVNjcmlwdFNl cmlhbGl6ZXIuX3NlcnZlclR5cGVGaWVsZE5hbWU9Il9fdHlwZSI7U3lzLlNlcmlh bGl6YXRpb24uSmF2YVNjcmlwdFNlcmlhbGl6ZXIuX2luaXQ9ZnVuY3Rpb24oKXtV TFNvWjc6O3ZhciBjPVsiXFx1MDAwMCIsIlxcdTAwMDEiLCJcXHUwMDAyIiwiXFx1 MDAwMyIsIlxcdTAwMDQiLCJcXHUwMDA1IiwiXFx1MDAwNiIsIlxcdTAwMDciLCJc XGIiLCJcXHQiLCJcXG4iLCJcXHUwMDBiIiwiXFxmIiwiXFxyIiwiXFx1MDAwZSIs IlxcdTAwMGYiLCJcXHUwMDEwIiwiXFx1MDAxMSIsIlxcdTAwMTIiLCJcXHUwMDEz IiwiXFx1MDAxNCIsIlxcdTAwMTUiLCJcXHUwMDE2IiwiXFx1MDAxNyIsIlxcdTAw MTgiLCJcXHUwMDE5IiwiXFx1MDAxYSIsIlxcdTAwMWIiLCJcXHUwMDFjIiwiXFx1 MDAxZCIsIlxcdTAwMWUiLCJcXHUwMDFmIl07U3lzLlNlcmlhbGl6YXRpb24uSmF2 YVNjcmlwdFNlcmlhbGl6ZXIuX2NoYXJzVG9Fc2NhcGVbMF09IlxcIjtTeXMuU2Vy aWFsaXphdGlvbi5KYXZhU2NyaXB0U2VyaWFsaXplci5fY2hhcnNUb0VzY2FwZVJl Z0V4c1siXFwiXT1uZXcgUmVnRXhwKCJcXFxcIiwiZyIpO1N5cy5TZXJpYWxpemF0 aW9uLkphdmFTY3JpcHRTZXJpYWxpemVyLl9lc2NhcGVDaGFyc1siXFwiXT0iXFxc XCI7U3lzLlNlcmlhbGl6YXRpb24uSmF2YVNjcmlwdFNlcmlhbGl6ZXIuX2NoYXJz VG9Fc2NhcGVbMV09JyInO1N5cy5TZXJpYWxpemF0aW9uLkphdmFTY3JpcHRTZXJp YWxpemVyLl9jaGFyc1RvRXNjYXBlUmVnRXhzWyciJ109bmV3IFJlZ0V4cCgnIics ImciKTtTeXMuU2VyaWFsaXphdGlvbi5KYXZhU2NyaXB0U2VyaWFsaXplci5fZXNj YXBlQ2hhcnNbJyInXT0nXFwiJztmb3IodmFyIGE9MDthPDMyO2ErKyl7dmFyIGI9 U3RyaW5nLmZyb21DaGFyQ29kZShhKTtTeXMuU2VyaWFsaXphdGlvbi5KYXZhU2Ny aXB0U2VyaWFsaXplci5fY2hhcnNUb0VzY2FwZVthKzJdPWI7U3lzLlNlcmlhbGl6 YXRpb24uSmF2YVNjcmlwdFNlcmlhbGl6ZXIuX2NoYXJzVG9Fc2NhcGVSZWdFeHNb Yl09bmV3IFJlZ0V4cChiLCJnIik7U3lzLlNlcmlhbGl6YXRpb24uSmF2YVNjcmlw dFNlcmlhbGl6ZXIuX2VzY2FwZUNoYXJzW2JdPWNbYV19fTtTeXMuU2VyaWFsaXph dGlvbi5KYXZhU2NyaXB0U2VyaWFsaXplci5fc2VyaWFsaXplQm9vbGVhbldpdGhC dWlsZGVyPWZ1bmN0aW9uKGIsYSl7VUxTb1o3OjthLmFwcGVuZChiLnRvU3RyaW5n KCkpfTtTeXMuU2VyaWFsaXphdGlvbi5KYXZhU2NyaXB0U2VyaWFsaXplci5fc2Vy aWFsaXplTnVtYmVyV2l0aEJ1aWxkZXI9ZnVuY3Rpb24oYSxiKXtVTFNvWjc6O2lm KGlzRmluaXRlKGEpKWIuYXBwZW5kKFN0cmluZyhhKSk7ZWxzZSB0aHJvdyBFcnJv ci5pbnZhbGlkT3BlcmF0aW9uKFN5cy5SZXMuY2Fubm90U2VyaWFsaXplTm9uRmlu aXRlTnVtYmVycyl9O1N5cy5TZXJpYWxpemF0aW9uLkphdmFTY3JpcHRTZXJpYWxp emVyLl9zZXJpYWxpemVTdHJpbmdXaXRoQnVpbGRlcj1mdW5jdGlvbihhLGMpe1VM U29aNzo7Yy5hcHBlbmQoJyInKTtpZihTeXMuU2VyaWFsaXphdGlvbi5KYXZhU2Ny aXB0U2VyaWFsaXplci5fZXNjYXBlUmVnRXgudGVzdChhKSl7aWYoU3lzLlNlcmlh bGl6YXRpb24uSmF2YVNjcmlwdFNlcmlhbGl6ZXIuX2NoYXJzVG9Fc2NhcGUubGVu Z3RoPT09MClTeXMuU2VyaWFsaXphdGlvbi5KYXZhU2NyaXB0U2VyaWFsaXplci5f aW5pdCgpO2lmKGEubGVuZ3RoPDEyOClhPWEucmVwbGFjZShTeXMuU2VyaWFsaXph dGlvbi5KYXZhU2NyaXB0U2VyaWFsaXplci5fZXNjYXBlUmVnRXhHbG9iYWwsZnVu Y3Rpb24oYSl7VUxTb1o3OjtyZXR1cm4gU3lzLlNlcmlhbGl6YXRpb24uSmF2YVNj cmlwdFNlcmlhbGl6ZXIuX2VzY2FwZUNoYXJzW2FdfSk7ZWxzZSBmb3IodmFyIGQ9 MDtkPDM0O2QrKyl7dmFyIGI9U3lzLlNlcmlhbGl6YXRpb24uSmF2YVNjcmlwdFNl cmlhbGl6ZXIuX2NoYXJzVG9Fc2NhcGVbZF07aWYoYS5pbmRleE9mKGIpIT09LTEp aWYoU3lzLkJyb3dzZXIuYWdlbnQ9PT1TeXMuQnJvd3Nlci5PcGVyYXx8U3lzLkJy b3dzZXIuYWdlbnQ9PT1TeXMuQnJvd3Nlci5GaXJlRm94KWE9YS5zcGxpdChiKS5q b2luKFN5cy5TZXJpYWxpemF0aW9uLkphdmFTY3JpcHRTZXJpYWxpemVyLl9lc2Nh cGVDaGFyc1tiXSk7ZWxzZSBhPWEucmVwbGFjZShTeXMuU2VyaWFsaXphdGlvbi5K YXZhU2NyaXB0U2VyaWFsaXplci5fY2hhcnNUb0VzY2FwZVJlZ0V4c1tiXSxTeXMu U2VyaWFsaXphdGlvbi5KYXZhU2NyaXB0U2VyaWFsaXplci5fZXNjYXBlQ2hhcnNb Yl0pfX1jLmFwcGVuZChhKTtjLmFwcGVuZCgnIicpfTtTeXMuU2VyaWFsaXphdGlv bi5KYXZhU2NyaXB0U2VyaWFsaXplci5fc2VyaWFsaXplV2l0aEJ1aWxkZXI9ZnVu Y3Rpb24oYixhLGksZyl7VUxTb1o3Ojt2YXIgYztzd2l0Y2godHlwZW9mIGIpe2Nh c2UgIm9iamVjdCI6aWYoYilpZihOdW1iZXIuaXNJbnN0YW5jZU9mVHlwZShiKSlT eXMuU2VyaWFsaXphdGlvbi5KYXZhU2NyaXB0U2VyaWFsaXplci5fc2VyaWFsaXpl TnVtYmVyV2l0aEJ1aWxkZXIoYixhKTtlbHNlIGlmKEJvb2xlYW4uaXNJbnN0YW5j ZU9mVHlwZShiKSlTeXMuU2VyaWFsaXphdGlvbi5KYXZhU2NyaXB0U2VyaWFsaXpl ci5fc2VyaWFsaXplQm9vbGVhbldpdGhCdWlsZGVyKGIsYSk7ZWxzZSBpZihTdHJp bmcuaXNJbnN0YW5jZU9mVHlwZShiKSlTeXMuU2VyaWFsaXphdGlvbi5KYXZhU2Ny aXB0U2VyaWFsaXplci5fc2VyaWFsaXplU3RyaW5nV2l0aEJ1aWxkZXIoYixhKTtl bHNlIGlmKEFycmF5LmlzSW5zdGFuY2VPZlR5cGUoYikpe2EuYXBwZW5kKCJbIik7 Zm9yKGM9MDtjPGIubGVuZ3RoOysrYyl7aWYoYz4wKWEuYXBwZW5kKCIsIik7U3lz LlNlcmlhbGl6YXRpb24uSmF2YVNjcmlwdFNlcmlhbGl6ZXIuX3NlcmlhbGl6ZVdp dGhCdWlsZGVyKGJbY10sYSxmYWxzZSxnKX1hLmFwcGVuZCgiXSIpfWVsc2V7aWYo RGF0ZS5pc0luc3RhbmNlT2ZUeXBlKGIpKXthLmFwcGVuZCgnIlxcL0RhdGUoJyk7 YS5hcHBlbmQoYi5nZXRUaW1lKCkpO2EuYXBwZW5kKCcpXFwvIicpO2JyZWFrfXZh ciBkPVtdLGY9MDtmb3IodmFyIGUgaW4gYil7aWYoZS5zdGFydHNXaXRoKCIkIikp Y29udGludWU7aWYoZT09PVN5cy5TZXJpYWxpemF0aW9uLkphdmFTY3JpcHRTZXJp YWxpemVyLl9zZXJ2ZXJUeXBlRmllbGROYW1lJiZmIT09MCl7ZFtmKytdPWRbMF07 ZFswXT1lfWVsc2UgZFtmKytdPWV9aWYoaSlkLnNvcnQoKTthLmFwcGVuZCgieyIp O3ZhciBqPWZhbHNlO2ZvcihjPTA7YzxmO2MrKyl7dmFyIGg9YltkW2NdXTtpZih0 eXBlb2YgaCE9PSJ1bmRlZmluZWQiJiZ0eXBlb2YgaCE9PSJmdW5jdGlvbiIpe2lm KGopYS5hcHBlbmQoIiwiKTtlbHNlIGo9dHJ1ZTtTeXMuU2VyaWFsaXphdGlvbi5K YXZhU2NyaXB0U2VyaWFsaXplci5fc2VyaWFsaXplV2l0aEJ1aWxkZXIoZFtjXSxh LGksZyk7YS5hcHBlbmQoIjoiKTtTeXMuU2VyaWFsaXphdGlvbi5KYXZhU2NyaXB0 U2VyaWFsaXplci5fc2VyaWFsaXplV2l0aEJ1aWxkZXIoaCxhLGksZyl9fWEuYXBw ZW5kKCJ9Iil9ZWxzZSBhLmFwcGVuZCgibnVsbCIpO2JyZWFrO2Nhc2UgIm51bWJl ciI6U3lzLlNlcmlhbGl6YXRpb24uSmF2YVNjcmlwdFNlcmlhbGl6ZXIuX3Nlcmlh bGl6ZU51bWJlcldpdGhCdWlsZGVyKGIsYSk7YnJlYWs7Y2FzZSAic3RyaW5nIjpT eXMuU2VyaWFsaXphdGlvbi5KYXZhU2NyaXB0U2VyaWFsaXplci5fc2VyaWFsaXpl U3RyaW5nV2l0aEJ1aWxkZXIoYixhKTticmVhaztjYXNlICJib29sZWFuIjpTeXMu U2VyaWFsaXphdGlvbi5KYXZhU2NyaXB0U2VyaWFsaXplci5fc2VyaWFsaXplQm9v bGVhbldpdGhCdWlsZGVyKGIsYSk7YnJlYWs7ZGVmYXVsdDphLmFwcGVuZCgibnVs bCIpfX07U3lzLlNlcmlhbGl6YXRpb24uSmF2YVNjcmlwdFNlcmlhbGl6ZXIuc2Vy aWFsaXplPWZ1bmN0aW9uKGIpe1VMU29aNzo7dmFyIGE9bmV3IFN5cy5TdHJpbmdC dWlsZGVyO1N5cy5TZXJpYWxpemF0aW9uLkphdmFTY3JpcHRTZXJpYWxpemVyLl9z ZXJpYWxpemVXaXRoQnVpbGRlcihiLGEsZmFsc2UpO3JldHVybiBhLnRvU3RyaW5n KCl9O1N5cy5TZXJpYWxpemF0aW9uLkphdmFTY3JpcHRTZXJpYWxpemVyLmRlc2Vy aWFsaXplPWZ1bmN0aW9uKGRhdGEsc2VjdXJlKXtVTFNvWjc6O2lmKGRhdGEubGVu Z3RoPT09MCl0aHJvdyBFcnJvci5hcmd1bWVudCgiZGF0YSIsU3lzLlJlcy5jYW5u b3REZXNlcmlhbGl6ZUVtcHR5U3RyaW5nKTt0cnl7dmFyIGV4cD1kYXRhLnJlcGxh Y2UoU3lzLlNlcmlhbGl6YXRpb24uSmF2YVNjcmlwdFNlcmlhbGl6ZXIuX2RhdGVS ZWdFeCwiJDFuZXcgRGF0ZSgkMikiKTtpZihzZWN1cmUmJlN5cy5TZXJpYWxpemF0 aW9uLkphdmFTY3JpcHRTZXJpYWxpemVyLl9qc29uUmVnRXgudGVzdChleHAucmVw bGFjZShTeXMuU2VyaWFsaXphdGlvbi5KYXZhU2NyaXB0U2VyaWFsaXplci5fanNv blN0cmluZ1JlZ0V4LCIiKSkpdGhyb3cgbnVsbDtyZXR1cm4gZXZhbCgiKCIrZXhw KyIpIil9Y2F0Y2goYSl7dGhyb3cgRXJyb3IuYXJndW1lbnQoImRhdGEiLFN5cy5S ZXMuY2Fubm90RGVzZXJpYWxpemVJbnZhbGlkSnNvbil9fTtTeXMuQ3VsdHVyZUlu Zm89ZnVuY3Rpb24oYyxiLGEpe1VMU29aNzo7dGhpcy5uYW1lPWM7dGhpcy5udW1i ZXJGb3JtYXQ9Yjt0aGlzLmRhdGVUaW1lRm9ybWF0PWF9O1N5cy5DdWx0dXJlSW5m by5wcm90b3R5cGU9e19nZXREYXRlVGltZUZvcm1hdHM6ZnVuY3Rpb24oKXtVTFNv Wjc6O2lmKCF0aGlzLl9kYXRlVGltZUZvcm1hdHMpe3ZhciBhPXRoaXMuZGF0ZVRp bWVGb3JtYXQ7dGhpcy5fZGF0ZVRpbWVGb3JtYXRzPVthLk1vbnRoRGF5UGF0dGVy bixhLlllYXJNb250aFBhdHRlcm4sYS5TaG9ydERhdGVQYXR0ZXJuLGEuU2hvcnRU aW1lUGF0dGVybixhLkxvbmdEYXRlUGF0dGVybixhLkxvbmdUaW1lUGF0dGVybixh LkZ1bGxEYXRlVGltZVBhdHRlcm4sYS5SRkMxMTIzUGF0dGVybixhLlNvcnRhYmxl RGF0ZVRpbWVQYXR0ZXJuLGEuVW5pdmVyc2FsU29ydGFibGVEYXRlVGltZVBhdHRl cm5dfXJldHVybiB0aGlzLl9kYXRlVGltZUZvcm1hdHN9LF9nZXRNb250aEluZGV4 OmZ1bmN0aW9uKGEpe1VMU29aNzo7aWYoIXRoaXMuX3VwcGVyTW9udGhzKXRoaXMu X3VwcGVyTW9udGhzPXRoaXMuX3RvVXBwZXJBcnJheSh0aGlzLmRhdGVUaW1lRm9y bWF0Lk1vbnRoTmFtZXMpO3JldHVybiBBcnJheS5pbmRleE9mKHRoaXMuX3VwcGVy TW9udGhzLHRoaXMuX3RvVXBwZXIoYSkpfSxfZ2V0QWJick1vbnRoSW5kZXg6ZnVu Y3Rpb24oYSl7VUxTb1o3OjtpZighdGhpcy5fdXBwZXJBYmJyTW9udGhzKXRoaXMu X3VwcGVyQWJick1vbnRocz10aGlzLl90b1VwcGVyQXJyYXkodGhpcy5kYXRlVGlt ZUZvcm1hdC5BYmJyZXZpYXRlZE1vbnRoTmFtZXMpO3JldHVybiBBcnJheS5pbmRl eE9mKHRoaXMuX3VwcGVyQWJick1vbnRocyx0aGlzLl90b1VwcGVyKGEpKX0sX2dl dERheUluZGV4OmZ1bmN0aW9uKGEpe1VMU29aNzo7aWYoIXRoaXMuX3VwcGVyRGF5 cyl0aGlzLl91cHBlckRheXM9dGhpcy5fdG9VcHBlckFycmF5KHRoaXMuZGF0ZVRp bWVGb3JtYXQuRGF5TmFtZXMpO3JldHVybiBBcnJheS5pbmRleE9mKHRoaXMuX3Vw cGVyRGF5cyx0aGlzLl90b1VwcGVyKGEpKX0sX2dldEFiYnJEYXlJbmRleDpmdW5j dGlvbihhKXtVTFNvWjc6O2lmKCF0aGlzLl91cHBlckFiYnJEYXlzKXRoaXMuX3Vw cGVyQWJickRheXM9dGhpcy5fdG9VcHBlckFycmF5KHRoaXMuZGF0ZVRpbWVGb3Jt YXQuQWJicmV2aWF0ZWREYXlOYW1lcyk7cmV0dXJuIEFycmF5LmluZGV4T2YodGhp cy5fdXBwZXJBYmJyRGF5cyx0aGlzLl90b1VwcGVyKGEpKX0sX3RvVXBwZXJBcnJh eTpmdW5jdGlvbihjKXtVTFNvWjc6O3ZhciBiPVtdO2Zvcih2YXIgYT0wLGQ9Yy5s ZW5ndGg7YTxkO2ErKyliW2FdPXRoaXMuX3RvVXBwZXIoY1thXSk7cmV0dXJuIGJ9 LF90b1VwcGVyOmZ1bmN0aW9uKGEpe1VMU29aNzo7cmV0dXJuIGEuc3BsaXQoIlx1 MDBhMCIpLmpvaW4oIiAiKS50b1VwcGVyQ2FzZSgpfX07U3lzLkN1bHR1cmVJbmZv Ll9wYXJzZT1mdW5jdGlvbihiKXtVTFNvWjc6O3ZhciBhPVN5cy5TZXJpYWxpemF0 aW9uLkphdmFTY3JpcHRTZXJpYWxpemVyLmRlc2VyaWFsaXplKGIpO3JldHVybiBu ZXcgU3lzLkN1bHR1cmVJbmZvKGEubmFtZSxhLm51bWJlckZvcm1hdCxhLmRhdGVU aW1lRm9ybWF0KX07U3lzLkN1bHR1cmVJbmZvLnJlZ2lzdGVyQ2xhc3MoIlN5cy5D dWx0dXJlSW5mbyIpO1N5cy5DdWx0dXJlSW5mby5JbnZhcmlhbnRDdWx0dXJlPVN5 cy5DdWx0dXJlSW5mby5fcGFyc2UoJ3sibmFtZSI6IiIsIm51bWJlckZvcm1hdCI6 eyJDdXJyZW5jeURlY2ltYWxEaWdpdHMiOjIsIkN1cnJlbmN5RGVjaW1hbFNlcGFy YXRvciI6Ii4iLCJJc1JlYWRPbmx5Ijp0cnVlLCJDdXJyZW5jeUdyb3VwU2l6ZXMi OlszXSwiTnVtYmVyR3JvdXBTaXplcyI6WzNdLCJQZXJjZW50R3JvdXBTaXplcyI6 WzNdLCJDdXJyZW5jeUdyb3VwU2VwYXJhdG9yIjoiLCIsIkN1cnJlbmN5U3ltYm9s IjoiXHUwMGE0IiwiTmFOU3ltYm9sIjoiTmFOIiwiQ3VycmVuY3lOZWdhdGl2ZVBh dHRlcm4iOjAsIk51bWJlck5lZ2F0aXZlUGF0dGVybiI6MSwiUGVyY2VudFBvc2l0 aXZlUGF0dGVybiI6MCwiUGVyY2VudE5lZ2F0aXZlUGF0dGVybiI6MCwiTmVnYXRp dmVJbmZpbml0eVN5bWJvbCI6Ii1JbmZpbml0eSIsIk5lZ2F0aXZlU2lnbiI6Ii0i LCJOdW1iZXJEZWNpbWFsRGlnaXRzIjoyLCJOdW1iZXJEZWNpbWFsU2VwYXJhdG9y IjoiLiIsIk51bWJlckdyb3VwU2VwYXJhdG9yIjoiLCIsIkN1cnJlbmN5UG9zaXRp dmVQYXR0ZXJuIjowLCJQb3NpdGl2ZUluZmluaXR5U3ltYm9sIjoiSW5maW5pdHki LCJQb3NpdGl2ZVNpZ24iOiIrIiwiUGVyY2VudERlY2ltYWxEaWdpdHMiOjIsIlBl cmNlbnREZWNpbWFsU2VwYXJhdG9yIjoiLiIsIlBlcmNlbnRHcm91cFNlcGFyYXRv ciI6IiwiLCJQZXJjZW50U3ltYm9sIjoiJSIsIlBlck1pbGxlU3ltYm9sIjoiXHUy MDMwIiwiTmF0aXZlRGlnaXRzIjpbIjAiLCIxIiwiMiIsIjMiLCI0IiwiNSIsIjYi LCI3IiwiOCIsIjkiXSwiRGlnaXRTdWJzdGl0dXRpb24iOjF9LCJkYXRlVGltZUZv cm1hdCI6eyJBTURlc2lnbmF0b3IiOiJBTSIsIkNhbGVuZGFyIjp7Ik1pblN1cHBv cnRlZERhdGVUaW1lIjoiQC02MjEzNTU2ODAwMDAwMEAiLCJNYXhTdXBwb3J0ZWRE YXRlVGltZSI6IkAyNTM0MDIzMDA3OTk5OTlAIiwiQWxnb3JpdGhtVHlwZSI6MSwi Q2FsZW5kYXJUeXBlIjoxLCJFcmFzIjpbMV0sIlR3b0RpZ2l0WWVhck1heCI6MjAy OSwiSXNSZWFkT25seSI6dHJ1ZX0sIkRhdGVTZXBhcmF0b3IiOiIvIiwiRmlyc3RE YXlPZldlZWsiOjAsIkNhbGVuZGFyV2Vla1J1bGUiOjAsIkZ1bGxEYXRlVGltZVBh dHRlcm4iOiJkZGRkLCBkZCBNTU1NIHl5eXkgSEg6bW06c3MiLCJMb25nRGF0ZVBh dHRlcm4iOiJkZGRkLCBkZCBNTU1NIHl5eXkiLCJMb25nVGltZVBhdHRlcm4iOiJI SDptbTpzcyIsIk1vbnRoRGF5UGF0dGVybiI6Ik1NTU0gZGQiLCJQTURlc2lnbmF0 b3IiOiJQTSIsIlJGQzExMjNQYXR0ZXJuIjoiZGRkLCBkZCBNTU0geXl5eSBISFwn OlwnbW1cJzpcJ3NzIFwnR01UXCciLCJTaG9ydERhdGVQYXR0ZXJuIjoiTU0vZGQv eXl5eSIsIlNob3J0VGltZVBhdHRlcm4iOiJISDptbSIsIlNvcnRhYmxlRGF0ZVRp bWVQYXR0ZXJuIjoieXl5eVwnLVwnTU1cJy1cJ2RkXCdUXCdISFwnOlwnbW1cJzpc J3NzIiwiVGltZVNlcGFyYXRvciI6IjoiLCJVbml2ZXJzYWxTb3J0YWJsZURhdGVU aW1lUGF0dGVybiI6Inl5eXlcJy1cJ01NXCctXCdkZCBISFwnOlwnbW1cJzpcJ3Nz XCdaXCciLCJZZWFyTW9udGhQYXR0ZXJuIjoieXl5eSBNTU1NIiwiQWJicmV2aWF0 ZWREYXlOYW1lcyI6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmki LCJTYXQiXSwiU2hvcnRlc3REYXlOYW1lcyI6WyJTdSIsIk1vIiwiVHUiLCJXZSIs IlRoIiwiRnIiLCJTYSJdLCJEYXlOYW1lcyI6WyJTdW5kYXkiLCJNb25kYXkiLCJU dWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRh eSJdLCJBYmJyZXZpYXRlZE1vbnRoTmFtZXMiOlsiSmFuIiwiRmViIiwiTWFyIiwi QXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92Iiwi RGVjIiwiIl0sIk1vbnRoTmFtZXMiOlsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFy Y2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVt YmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiLCIiXSwiSXNSZWFk T25seSI6dHJ1ZSwiTmF0aXZlQ2FsZW5kYXJOYW1lIjoiR3JlZ29yaWFuIENhbGVu ZGFyIiwiQWJicmV2aWF0ZWRNb250aEdlbml0aXZlTmFtZXMiOlsiSmFuIiwiRmVi IiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0 IiwiTm92IiwiRGVjIiwiIl0sIk1vbnRoR2VuaXRpdmVOYW1lcyI6WyJKYW51YXJ5 IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHki LCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNl bWJlciIsIiJdfX0nKTtpZih0eXBlb2YgX19jdWx0dXJlSW5mbz09PSJ1bmRlZmlu ZWQiKXZhciBfX2N1bHR1cmVJbmZvPSd7Im5hbWUiOiJlbi1VUyIsIm51bWJlckZv cm1hdCI6eyJDdXJyZW5jeURlY2ltYWxEaWdpdHMiOjIsIkN1cnJlbmN5RGVjaW1h bFNlcGFyYXRvciI6Ii4iLCJJc1JlYWRPbmx5IjpmYWxzZSwiQ3VycmVuY3lHcm91 cFNpemVzIjpbM10sIk51bWJlckdyb3VwU2l6ZXMiOlszXSwiUGVyY2VudEdyb3Vw U2l6ZXMiOlszXSwiQ3VycmVuY3lHcm91cFNlcGFyYXRvciI6IiwiLCJDdXJyZW5j eVN5bWJvbCI6IiQiLCJOYU5TeW1ib2wiOiJOYU4iLCJDdXJyZW5jeU5lZ2F0aXZl UGF0dGVybiI6MCwiTnVtYmVyTmVnYXRpdmVQYXR0ZXJuIjoxLCJQZXJjZW50UG9z aXRpdmVQYXR0ZXJuIjowLCJQZXJjZW50TmVnYXRpdmVQYXR0ZXJuIjowLCJOZWdh dGl2ZUluZmluaXR5U3ltYm9sIjoiLUluZmluaXR5IiwiTmVnYXRpdmVTaWduIjoi LSIsIk51bWJlckRlY2ltYWxEaWdpdHMiOjIsIk51bWJlckRlY2ltYWxTZXBhcmF0 b3IiOiIuIiwiTnVtYmVyR3JvdXBTZXBhcmF0b3IiOiIsIiwiQ3VycmVuY3lQb3Np dGl2ZVBhdHRlcm4iOjAsIlBvc2l0aXZlSW5maW5pdHlTeW1ib2wiOiJJbmZpbml0 eSIsIlBvc2l0aXZlU2lnbiI6IisiLCJQZXJjZW50RGVjaW1hbERpZ2l0cyI6Miwi UGVyY2VudERlY2ltYWxTZXBhcmF0b3IiOiIuIiwiUGVyY2VudEdyb3VwU2VwYXJh dG9yIjoiLCIsIlBlcmNlbnRTeW1ib2wiOiIlIiwiUGVyTWlsbGVTeW1ib2wiOiJc dTIwMzAiLCJOYXRpdmVEaWdpdHMiOlsiMCIsIjEiLCIyIiwiMyIsIjQiLCI1Iiwi NiIsIjciLCI4IiwiOSJdLCJEaWdpdFN1YnN0aXR1dGlvbiI6MX0sImRhdGVUaW1l Rm9ybWF0Ijp7IkFNRGVzaWduYXRvciI6IkFNIiwiQ2FsZW5kYXIiOnsiTWluU3Vw cG9ydGVkRGF0ZVRpbWUiOiJALTYyMTM1NTY4MDAwMDAwQCIsIk1heFN1cHBvcnRl ZERhdGVUaW1lIjoiQDI1MzQwMjMwMDc5OTk5OUAiLCJBbGdvcml0aG1UeXBlIjox LCJDYWxlbmRhclR5cGUiOjEsIkVyYXMiOlsxXSwiVHdvRGlnaXRZZWFyTWF4Ijoy MDI5LCJJc1JlYWRPbmx5IjpmYWxzZX0sIkRhdGVTZXBhcmF0b3IiOiIvIiwiRmly c3REYXlPZldlZWsiOjAsIkNhbGVuZGFyV2Vla1J1bGUiOjAsIkZ1bGxEYXRlVGlt ZVBhdHRlcm4iOiJkZGRkLCBNTU1NIGRkLCB5eXl5IGg6bW06c3MgdHQiLCJMb25n RGF0ZVBhdHRlcm4iOiJkZGRkLCBNTU1NIGRkLCB5eXl5IiwiTG9uZ1RpbWVQYXR0 ZXJuIjoiaDptbTpzcyB0dCIsIk1vbnRoRGF5UGF0dGVybiI6Ik1NTU0gZGQiLCJQ TURlc2lnbmF0b3IiOiJQTSIsIlJGQzExMjNQYXR0ZXJuIjoiZGRkLCBkZCBNTU0g eXl5eSBISFwnOlwnbW1cJzpcJ3NzIFwnR01UXCciLCJTaG9ydERhdGVQYXR0ZXJu IjoiTS9kL3l5eXkiLCJTaG9ydFRpbWVQYXR0ZXJuIjoiaDptbSB0dCIsIlNvcnRh YmxlRGF0ZVRpbWVQYXR0ZXJuIjoieXl5eVwnLVwnTU1cJy1cJ2RkXCdUXCdISFwn OlwnbW1cJzpcJ3NzIiwiVGltZVNlcGFyYXRvciI6IjoiLCJVbml2ZXJzYWxTb3J0 YWJsZURhdGVUaW1lUGF0dGVybiI6Inl5eXlcJy1cJ01NXCctXCdkZCBISFwnOlwn bW1cJzpcJ3NzXCdaXCciLCJZZWFyTW9udGhQYXR0ZXJuIjoiTU1NTSwgeXl5eSIs IkFiYnJldmlhdGVkRGF5TmFtZXMiOlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwi VGh1IiwiRnJpIiwiU2F0Il0sIlNob3J0ZXN0RGF5TmFtZXMiOlsiU3UiLCJNbyIs IlR1IiwiV2UiLCJUaCIsIkZyIiwiU2EiXSwiRGF5TmFtZXMiOlsiU3VuZGF5Iiwi TW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5 IiwiU2F0dXJkYXkiXSwiQWJicmV2aWF0ZWRNb250aE5hbWVzIjpbIkphbiIsIkZl YiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9j dCIsIk5vdiIsIkRlYyIsIiJdLCJNb250aE5hbWVzIjpbIkphbnVhcnkiLCJGZWJy dWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3Vz dCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIiwi Il0sIklzUmVhZE9ubHkiOmZhbHNlLCJOYXRpdmVDYWxlbmRhck5hbWUiOiJHcmVn b3JpYW4gQ2FsZW5kYXIiLCJBYmJyZXZpYXRlZE1vbnRoR2VuaXRpdmVOYW1lcyI6 WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWci LCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiLCIiXSwiTW9udGhHZW5pdGl2ZU5hbWVz IjpbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJK dW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3Zl bWJlciIsIkRlY2VtYmVyIiwiIl19fSc7U3lzLkN1bHR1cmVJbmZvLkN1cnJlbnRD dWx0dXJlPVN5cy5DdWx0dXJlSW5mby5fcGFyc2UoX19jdWx0dXJlSW5mbyk7ZGVs ZXRlIF9fY3VsdHVyZUluZm87U3lzLlVJLkJlaGF2aW9yPWZ1bmN0aW9uKGIpe1VM U29aNzo7U3lzLlVJLkJlaGF2aW9yLmluaXRpYWxpemVCYXNlKHRoaXMpO3RoaXMu X2VsZW1lbnQ9Yjt2YXIgYT1iLl9iZWhhdmlvcnM7aWYoIWEpYi5fYmVoYXZpb3Jz PVt0aGlzXTtlbHNlIGFbYS5sZW5ndGhdPXRoaXN9O1N5cy5VSS5CZWhhdmlvci5w cm90b3R5cGU9e19uYW1lOm51bGwsZ2V0X2VsZW1lbnQ6ZnVuY3Rpb24oKXtVTFNv Wjc6O3JldHVybiB0aGlzLl9lbGVtZW50fSxnZXRfaWQ6ZnVuY3Rpb24oKXtVTFNv Wjc6O3ZhciBhPVN5cy5VSS5CZWhhdmlvci5jYWxsQmFzZU1ldGhvZCh0aGlzLCJn ZXRfaWQiKTtpZihhKXJldHVybiBhO2lmKCF0aGlzLl9lbGVtZW50fHwhdGhpcy5f ZWxlbWVudC5pZClyZXR1cm4gIiI7cmV0dXJuIHRoaXMuX2VsZW1lbnQuaWQrIiQi K3RoaXMuZ2V0X25hbWUoKX0sZ2V0X25hbWU6ZnVuY3Rpb24oKXtVTFNvWjc6O2lm KHRoaXMuX25hbWUpcmV0dXJuIHRoaXMuX25hbWU7dmFyIGE9T2JqZWN0LmdldFR5 cGVOYW1lKHRoaXMpLGI9YS5sYXN0SW5kZXhPZigiLiIpO2lmKGIhPS0xKWE9YS5z dWJzdHIoYisxKTtpZighdGhpcy5nZXRfaXNJbml0aWFsaXplZCgpKXRoaXMuX25h bWU9YTtyZXR1cm4gYX0sc2V0X25hbWU6ZnVuY3Rpb24oYSl7VUxTb1o3Ojt0aGlz Ll9uYW1lPWF9LGluaXRpYWxpemU6ZnVuY3Rpb24oKXtVTFNvWjc6O1N5cy5VSS5C ZWhhdmlvci5jYWxsQmFzZU1ldGhvZCh0aGlzLCJpbml0aWFsaXplIik7dmFyIGE9 dGhpcy5nZXRfbmFtZSgpO2lmKGEpdGhpcy5fZWxlbWVudFthXT10aGlzfSxkaXNw b3NlOmZ1bmN0aW9uKCl7VUxTb1o3OjtTeXMuVUkuQmVoYXZpb3IuY2FsbEJhc2VN ZXRob2QodGhpcywiZGlzcG9zZSIpO2lmKHRoaXMuX2VsZW1lbnQpe3ZhciBhPXRo aXMuZ2V0X25hbWUoKTtpZihhKXRoaXMuX2VsZW1lbnRbYV09bnVsbDtBcnJheS5y ZW1vdmUodGhpcy5fZWxlbWVudC5fYmVoYXZpb3JzLHRoaXMpO2RlbGV0ZSB0aGlz Ll9lbGVtZW50fX19O1N5cy5VSS5CZWhhdmlvci5yZWdpc3RlckNsYXNzKCJTeXMu VUkuQmVoYXZpb3IiLFN5cy5Db21wb25lbnQpO1N5cy5VSS5CZWhhdmlvci5nZXRC ZWhhdmlvckJ5TmFtZT1mdW5jdGlvbihiLGMpe1VMU29aNzo7dmFyIGE9YltjXTty ZXR1cm4gYSYmU3lzLlVJLkJlaGF2aW9yLmlzSW5zdGFuY2VPZlR5cGUoYSk/YTpu dWxsfTtTeXMuVUkuQmVoYXZpb3IuZ2V0QmVoYXZpb3JzPWZ1bmN0aW9uKGEpe1VM U29aNzo7aWYoIWEuX2JlaGF2aW9ycylyZXR1cm4gW107cmV0dXJuIEFycmF5LmNs b25lKGEuX2JlaGF2aW9ycyl9O1N5cy5VSS5CZWhhdmlvci5nZXRCZWhhdmlvcnNC eVR5cGU9ZnVuY3Rpb24oZCxlKXtVTFNvWjc6O3ZhciBhPWQuX2JlaGF2aW9ycyxj PVtdO2lmKGEpZm9yKHZhciBiPTAsZj1hLmxlbmd0aDtiPGY7YisrKWlmKGUuaXNJ bnN0YW5jZU9mVHlwZShhW2JdKSljW2MubGVuZ3RoXT1hW2JdO3JldHVybiBjfTtT eXMuVUkuVmlzaWJpbGl0eU1vZGU9ZnVuY3Rpb24oKXtVTFNvWjc6O3Rocm93IEVy cm9yLm5vdEltcGxlbWVudGVkKCl9O1N5cy5VSS5WaXNpYmlsaXR5TW9kZS5wcm90 b3R5cGU9e2hpZGU6MCxjb2xsYXBzZToxfTtTeXMuVUkuVmlzaWJpbGl0eU1vZGUu cmVnaXN0ZXJFbnVtKCJTeXMuVUkuVmlzaWJpbGl0eU1vZGUiKTtTeXMuVUkuQ29u dHJvbD1mdW5jdGlvbihhKXtVTFNvWjc6O1N5cy5VSS5Db250cm9sLmluaXRpYWxp emVCYXNlKHRoaXMpO3RoaXMuX2VsZW1lbnQ9YTthLmNvbnRyb2w9dGhpc307U3lz LlVJLkNvbnRyb2wucHJvdG90eXBlPXtfcGFyZW50Om51bGwsX3Zpc2liaWxpdHlN b2RlOlN5cy5VSS5WaXNpYmlsaXR5TW9kZS5oaWRlLGdldF9lbGVtZW50OmZ1bmN0 aW9uKCl7VUxTb1o3OjtyZXR1cm4gdGhpcy5fZWxlbWVudH0sZ2V0X2lkOmZ1bmN0 aW9uKCl7VUxTb1o3OjtpZighdGhpcy5fZWxlbWVudClyZXR1cm4gIiI7cmV0dXJu IHRoaXMuX2VsZW1lbnQuaWR9LHNldF9pZDpmdW5jdGlvbigpe1VMU29aNzo7dGhy b3cgRXJyb3IuaW52YWxpZE9wZXJhdGlvbihTeXMuUmVzLmNhbnRTZXRJZCl9LGdl dF9wYXJlbnQ6ZnVuY3Rpb24oKXtVTFNvWjc6O2lmKHRoaXMuX3BhcmVudClyZXR1 cm4gdGhpcy5fcGFyZW50O2lmKCF0aGlzLl9lbGVtZW50KXJldHVybiBudWxsO3Zh ciBhPXRoaXMuX2VsZW1lbnQucGFyZW50Tm9kZTt3aGlsZShhKXtpZihhLmNvbnRy b2wpcmV0dXJuIGEuY29udHJvbDthPWEucGFyZW50Tm9kZX1yZXR1cm4gbnVsbH0s c2V0X3BhcmVudDpmdW5jdGlvbihhKXtVTFNvWjc6O3RoaXMuX3BhcmVudD1hfSxn ZXRfdmlzaWJpbGl0eU1vZGU6ZnVuY3Rpb24oKXtVTFNvWjc6O3JldHVybiBTeXMu VUkuRG9tRWxlbWVudC5nZXRWaXNpYmlsaXR5TW9kZSh0aGlzLl9lbGVtZW50KX0s c2V0X3Zpc2liaWxpdHlNb2RlOmZ1bmN0aW9uKGEpe1VMU29aNzo7U3lzLlVJLkRv bUVsZW1lbnQuc2V0VmlzaWJpbGl0eU1vZGUodGhpcy5fZWxlbWVudCxhKX0sZ2V0 X3Zpc2libGU6ZnVuY3Rpb24oKXtVTFNvWjc6O3JldHVybiBTeXMuVUkuRG9tRWxl bWVudC5nZXRWaXNpYmxlKHRoaXMuX2VsZW1lbnQpfSxzZXRfdmlzaWJsZTpmdW5j dGlvbihhKXtVTFNvWjc6O1N5cy5VSS5Eb21FbGVtZW50LnNldFZpc2libGUodGhp cy5fZWxlbWVudCxhKX0sYWRkQ3NzQ2xhc3M6ZnVuY3Rpb24oYSl7VUxTb1o3OjtT eXMuVUkuRG9tRWxlbWVudC5hZGRDc3NDbGFzcyh0aGlzLl9lbGVtZW50LGEpfSxk aXNwb3NlOmZ1bmN0aW9uKCl7VUxTb1o3OjtTeXMuVUkuQ29udHJvbC5jYWxsQmFz ZU1ldGhvZCh0aGlzLCJkaXNwb3NlIik7aWYodGhpcy5fZWxlbWVudCl7dGhpcy5f ZWxlbWVudC5jb250cm9sPXVuZGVmaW5lZDtkZWxldGUgdGhpcy5fZWxlbWVudH1p Zih0aGlzLl9wYXJlbnQpZGVsZXRlIHRoaXMuX3BhcmVudH0sb25CdWJibGVFdmVu dDpmdW5jdGlvbigpe1VMU29aNzo7cmV0dXJuIGZhbHNlfSxyYWlzZUJ1YmJsZUV2 ZW50OmZ1bmN0aW9uKGIsYyl7VUxTb1o3Ojt2YXIgYT10aGlzLmdldF9wYXJlbnQo KTt3aGlsZShhKXtpZihhLm9uQnViYmxlRXZlbnQoYixjKSlyZXR1cm47YT1hLmdl dF9wYXJlbnQoKX19LHJlbW92ZUNzc0NsYXNzOmZ1bmN0aW9uKGEpe1VMU29aNzo7 U3lzLlVJLkRvbUVsZW1lbnQucmVtb3ZlQ3NzQ2xhc3ModGhpcy5fZWxlbWVudCxh KX0sdG9nZ2xlQ3NzQ2xhc3M6ZnVuY3Rpb24oYSl7VUxTb1o3OjtTeXMuVUkuRG9t RWxlbWVudC50b2dnbGVDc3NDbGFzcyh0aGlzLl9lbGVtZW50LGEpfX07U3lzLlVJ LkNvbnRyb2wucmVnaXN0ZXJDbGFzcygiU3lzLlVJLkNvbnRyb2wiLFN5cy5Db21w b25lbnQpOw0KVHlwZS5yZWdpc3Rlck5hbWVzcGFjZSgnU3lzJyk7U3lzLlJlcz17 J2FyZ3VtZW50SW50ZWdlcic6J1ZhbHVlIG11c3QgYmUgYW4gaW50ZWdlci4nLCdz Y3JpcHRMb2FkTXVsdGlwbGVDYWxsYmFja3MnOidUaGUgc2NyaXB0IFwnezB9XCcg Y29udGFpbnMgbXVsdGlwbGUgY2FsbHMgdG8gU3lzLkFwcGxpY2F0aW9uLm5vdGlm eVNjcmlwdExvYWRlZCgpLiBPbmx5IG9uZSBpcyBhbGxvd2VkLicsJ2ludm9rZUNh bGxlZFR3aWNlJzonQ2Fubm90IGNhbGwgaW52b2tlIG1vcmUgdGhhbiBvbmNlLics J3dlYlNlcnZpY2VGYWlsZWQnOidUaGUgc2VydmVyIG1ldGhvZCBcJ3swfVwnIGZh aWxlZCB3aXRoIHRoZSBmb2xsb3dpbmcgZXJyb3I6IHsxfScsJ3dlYlNlcnZpY2VJ bnZhbGlkSnNvbldyYXBwZXInOidUaGUgc2VydmVyIG1ldGhvZCBcJ3swfVwnIHJl dHVybmVkIGludmFsaWQgZGF0YS4gVGhlIFwnZFwnIHByb3BlcnR5IGlzIG1pc3Np bmcgZnJvbSB0aGUgSlNPTiB3cmFwcGVyLicsJ2FyZ3VtZW50VHlwZSc6J09iamVj dCBjYW5ub3QgYmUgY29udmVydGVkIHRvIHRoZSByZXF1aXJlZCB0eXBlLicsJ2Fy Z3VtZW50TnVsbCc6J1ZhbHVlIGNhbm5vdCBiZSBudWxsLicsJ2NvbnRyb2xDYW50 U2V0SWQnOidUaGUgaWQgcHJvcGVydHkgY2FuXCd0IGJlIHNldCBvbiBhIGNvbnRy b2wuJywnZm9ybWF0QmFkRm9ybWF0U3BlY2lmaWVyJzonRm9ybWF0IHNwZWNpZmll ciB3YXMgaW52YWxpZC4nLCd3ZWJTZXJ2aWNlRmFpbGVkTm9Nc2cnOidUaGUgc2Vy dmVyIG1ldGhvZCBcJ3swfVwnIGZhaWxlZC4nLCdhcmd1bWVudERvbUVsZW1lbnQn OidWYWx1ZSBtdXN0IGJlIGEgRE9NIGVsZW1lbnQuJywnaW52YWxpZEV4ZWN1dG9y VHlwZSc6J0NvdWxkIG5vdCBjcmVhdGUgYSB2YWxpZCBTeXMuTmV0LldlYlJlcXVl c3RFeGVjdXRvciBmcm9tOiB7MH0uJywnY2Fubm90Q2FsbEJlZm9yZVJlc3BvbnNl JzonQ2Fubm90IGNhbGwgezB9IHdoZW4gcmVzcG9uc2VBdmFpbGFibGUgaXMgZmFs c2UuJywnYWN0dWFsVmFsdWUnOidBY3R1YWwgdmFsdWUgd2FzIHswfS4nLCdlbnVt SW52YWxpZFZhbHVlJzonXCd7MH1cJyBpcyBub3QgYSB2YWxpZCB2YWx1ZSBmb3Ig ZW51bSB7MX0uJywnc2NyaXB0TG9hZEZhaWxlZCc6J1RoZSBzY3JpcHQgXCd7MH1c JyBjb3VsZCBub3QgYmUgbG9hZGVkLicsJ3BhcmFtZXRlckNvdW50JzonUGFyYW1l dGVyIGNvdW50IG1pc21hdGNoLicsJ2Nhbm5vdERlc2VyaWFsaXplRW1wdHlTdHJp bmcnOidDYW5ub3QgZGVzZXJpYWxpemUgZW1wdHkgc3RyaW5nLicsJ2Zvcm1hdElu dmFsaWRTdHJpbmcnOidJbnB1dCBzdHJpbmcgd2FzIG5vdCBpbiBhIGNvcnJlY3Qg Zm9ybWF0LicsJ2ludmFsaWRUaW1lb3V0JzonVmFsdWUgbXVzdCBiZSBncmVhdGVy IHRoYW4gb3IgZXF1YWwgdG8gemVyby4nLCdjYW5ub3RBYm9ydEJlZm9yZVN0YXJ0 JzonQ2Fubm90IGFib3J0IHdoZW4gZXhlY3V0b3IgaGFzIG5vdCBzdGFydGVkLics J2FyZ3VtZW50JzonVmFsdWUgZG9lcyBub3QgZmFsbCB3aXRoaW4gdGhlIGV4cGVj dGVkIHJhbmdlLicsJ2Nhbm5vdERlc2VyaWFsaXplSW52YWxpZEpzb24nOidDYW5u b3QgZGVzZXJpYWxpemUuIFRoZSBkYXRhIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8g dmFsaWQgSlNPTi4nLCdpbnZhbGlkSHR0cFZlcmInOidodHRwVmVyYiBjYW5ub3Qg YmUgc2V0IHRvIGFuIGVtcHR5IG9yIG51bGwgc3RyaW5nLicsJ251bGxXZWJSZXF1 ZXN0JzonQ2Fubm90IGNhbGwgZXhlY3V0ZVJlcXVlc3Qgd2l0aCBhIG51bGwgd2Vi UmVxdWVzdC4nLCdldmVudEhhbmRsZXJJbnZhbGlkJzonSGFuZGxlciB3YXMgbm90 IGFkZGVkIHRocm91Z2ggdGhlIFN5cy5VSS5Eb21FdmVudC5hZGRIYW5kbGVyIG1l dGhvZC4nLCdjYW5ub3RTZXJpYWxpemVOb25GaW5pdGVOdW1iZXJzJzonQ2Fubm90 IHNlcmlhbGl6ZSBub24gZmluaXRlIG51bWJlcnMuJywnYXJndW1lbnRVbmRlZmlu ZWQnOidWYWx1ZSBjYW5ub3QgYmUgdW5kZWZpbmVkLicsJ3dlYlNlcnZpY2VJbnZh bGlkUmV0dXJuVHlwZSc6J1RoZSBzZXJ2ZXIgbWV0aG9kIFwnezB9XCcgcmV0dXJu ZWQgYW4gaW52YWxpZCB0eXBlLiBFeHBlY3RlZCB0eXBlOiB7MX0nLCdzZXJ2aWNl UGF0aE5vdFNldCc6J1RoZSBwYXRoIHRvIHRoZSB3ZWIgc2VydmljZSBoYXMgbm90 IGJlZW4gc2V0LicsJ2FyZ3VtZW50VHlwZVdpdGhUeXBlcyc6J09iamVjdCBvZiB0 eXBlIFwnezB9XCcgY2Fubm90IGJlIGNvbnZlcnRlZCB0byB0eXBlIFwnezF9XCcu JywnY2Fubm90Q2FsbE9uY2VTdGFydGVkJzonQ2Fubm90IGNhbGwgezB9IG9uY2Ug c3RhcnRlZC4nLCdiYWRCYXNlVXJsMSc6J0Jhc2UgVVJMIGRvZXMgbm90IGNvbnRh aW4gOi8vLicsJ2JhZEJhc2VVcmwyJzonQmFzZSBVUkwgZG9lcyBub3QgY29udGFp biBhbm90aGVyIC8uJywnYmFkQmFzZVVybDMnOidDYW5ub3QgZmluZCBsYXN0IC8g aW4gYmFzZSBVUkwuJywnc2V0RXhlY3V0b3JBZnRlckFjdGl2ZSc6J0Nhbm5vdCBz ZXQgZXhlY3V0b3IgYWZ0ZXIgaXQgaGFzIGJlY29tZSBhY3RpdmUuJywncGFyYW1O YW1lJzonUGFyYW1ldGVyIG5hbWU6IHswfScsJ2Nhbm5vdENhbGxPdXRzaWRlSGFu ZGxlcic6J0Nhbm5vdCBjYWxsIHswfSBvdXRzaWRlIG9mIGEgY29tcGxldGVkIGV2 ZW50IGhhbmRsZXIuJywnY2Fubm90U2VyaWFsaXplT2JqZWN0V2l0aEN5Y2xlJzon Q2Fubm90IHNlcmlhbGl6ZSBvYmplY3Qgd2l0aCBjeWNsaWMgcmVmZXJlbmNlIHdp dGhpbiBjaGlsZCBwcm9wZXJ0aWVzLicsJ2Zvcm1hdCc6J09uZSBvZiB0aGUgaWRl bnRpZmllZCBpdGVtcyB3YXMgaW4gYW4gaW52YWxpZCBmb3JtYXQuJywnYXNzZXJ0 RmFpbGVkQ2FsbGVyJzonQXNzZXJ0aW9uIEZhaWxlZDogezB9XHJcbmF0IHsxfScs J2FyZ3VtZW50T3V0T2ZSYW5nZSc6J1NwZWNpZmllZCBhcmd1bWVudCB3YXMgb3V0 IG9mIHRoZSByYW5nZSBvZiB2YWxpZCB2YWx1ZXMuJywnd2ViU2VydmljZVRpbWVk T3V0JzonVGhlIHNlcnZlciBtZXRob2QgXCd7MH1cJyB0aW1lZCBvdXQuJywnbm90 SW1wbGVtZW50ZWQnOidUaGUgbWV0aG9kIG9yIG9wZXJhdGlvbiBpcyBub3QgaW1w bGVtZW50ZWQuJywnYXNzZXJ0RmFpbGVkJzonQXNzZXJ0aW9uIEZhaWxlZDogezB9 JywnaW52YWxpZE9wZXJhdGlvbic6J09wZXJhdGlvbiBpcyBub3QgdmFsaWQgZHVl IHRvIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBvYmplY3QuJywnYnJlYWtJbnRv RGVidWdnZXInOid7MH1cclxuXHJcbkJyZWFrIGludG8gZGVidWdnZXI/J307DQpp Zih0eXBlb2YoU3lzKSE9PSd1bmRlZmluZWQnKVN5cy5BcHBsaWNhdGlvbi5ub3Rp ZnlTY3JpcHRMb2FkZWQoKTsNCg== ------------AwZAEu8L0Fx8UXBllPLKFH Content-Disposition: inline; filename=jquery.js Content-Type: application/x-javascript; name=jquery.js Content-Location: http://officeimg.vo.msecnd.net/_layouts/jquery.js?b=5567%2E4000 Content-Transfer-Encoding: Base64 ZnVuY3Rpb24gVUxTTlFXKCl7dmFyIG89bmV3IE9iamVjdDtvLlVMU1RlYW1OYW1l PSJPZmZpY2UgT25saW5lIENvcmUgQ29kZSI7by5VTFNGaWxlTmFtZT0ianF1ZXJ5 LmpzIjtyZXR1cm4gbzt9DQovKg0KICogalF1ZXJ5IEphdmFTY3JpcHQgTGlicmFy eSB2MS4zLjINCiAqIGh0dHA6Ly9qcXVlcnkuY29tLw0KICoNCiAqIENvcHlyaWdo dCAoYykgMjAwOSBKb2huIFJlc2lnDQogKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRo ZSBNSVQgYW5kIEdQTCBsaWNlbnNlcy4NCiAqIGh0dHA6Ly9kb2NzLmpxdWVyeS5j b20vTGljZW5zZQ0KICoNCiAqIERhdGU6IDIwMDktMDItMTkgMTc6MzQ6MjEgLTA1 MDAgKFRodSwgMTkgRmViIDIwMDkpDQogKiBSZXZpc2lvbjogNjI0Ng0KICovDQoo ZnVuY3Rpb24oKXtVTFNOUVc6O3ZhciBsPXRoaXMsZyx5PWwualF1ZXJ5LHA9bC4k LG89bC5qUXVlcnk9bC4kPWZ1bmN0aW9uKEUsRil7VUxTTlFXOjtyZXR1cm4gbmV3 IG8uZm4uaW5pdChFLEYpfSxEPS9eW148XSooPCgufFxzKSs+KVtePl0qJHxeIyhb XHctXSspJC8sZj0vXi5bXjojXFtcLixdKiQvO28uZm49by5wcm90b3R5cGU9e2lu aXQ6ZnVuY3Rpb24oRSxIKXtVTFNOUVc6O0U9RXx8ZG9jdW1lbnQ7aWYoRS5ub2Rl VHlwZSl7dGhpc1swXT1FO3RoaXMubGVuZ3RoPTE7dGhpcy5jb250ZXh0PUU7cmV0 dXJuIHRoaXN9aWYodHlwZW9mIEU9PT0ic3RyaW5nIil7dmFyIEc9RC5leGVjKEUp O2lmKEcmJihHWzFdfHwhSCkpe2lmKEdbMV0pe0U9by5jbGVhbihbR1sxXV0sSCl9 ZWxzZXt2YXIgST1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChHWzNdKTtpZihJJiZJ LmlkIT1HWzNdKXtyZXR1cm4gbygpLmZpbmQoRSl9dmFyIEY9byhJfHxbXSk7Ri5j b250ZXh0PWRvY3VtZW50O0Yuc2VsZWN0b3I9RTtyZXR1cm4gRn19ZWxzZXtyZXR1 cm4gbyhIKS5maW5kKEUpfX1lbHNle2lmKG8uaXNGdW5jdGlvbihFKSl7cmV0dXJu IG8oZG9jdW1lbnQpLnJlYWR5KEUpfX1pZihFLnNlbGVjdG9yJiZFLmNvbnRleHQp e3RoaXMuc2VsZWN0b3I9RS5zZWxlY3Rvcjt0aGlzLmNvbnRleHQ9RS5jb250ZXh0 fXJldHVybiB0aGlzLnNldEFycmF5KG8uaXNBcnJheShFKT9FOm8ubWFrZUFycmF5 KEUpKX0sc2VsZWN0b3I6IiIsanF1ZXJ5OiIxLjMuMiIsc2l6ZTpmdW5jdGlvbigp e1VMU05RVzo7cmV0dXJuIHRoaXMubGVuZ3RofSxnZXQ6ZnVuY3Rpb24oRSl7VUxT TlFXOjtyZXR1cm4gRT09PWc/QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhp cyk6dGhpc1tFXX0scHVzaFN0YWNrOmZ1bmN0aW9uKEYsSCxFKXtVTFNOUVc6O3Zh ciBHPW8oRik7Ry5wcmV2T2JqZWN0PXRoaXM7Ry5jb250ZXh0PXRoaXMuY29udGV4 dDtpZihIPT09ImZpbmQiKXtHLnNlbGVjdG9yPXRoaXMuc2VsZWN0b3IrKHRoaXMu c2VsZWN0b3I/IiAiOiIiKStFfWVsc2V7aWYoSCl7Ry5zZWxlY3Rvcj10aGlzLnNl bGVjdG9yKyIuIitIKyIoIitFKyIpIn19cmV0dXJuIEd9LHNldEFycmF5OmZ1bmN0 aW9uKEUpe1VMU05RVzo7dGhpcy5sZW5ndGg9MDtBcnJheS5wcm90b3R5cGUucHVz aC5hcHBseSh0aGlzLEUpO3JldHVybiB0aGlzfSxlYWNoOmZ1bmN0aW9uKEYsRSl7 VUxTTlFXOjtyZXR1cm4gby5lYWNoKHRoaXMsRixFKX0saW5kZXg6ZnVuY3Rpb24o RSl7VUxTTlFXOjtyZXR1cm4gby5pbkFycmF5KEUmJkUuanF1ZXJ5P0VbMF06RSx0 aGlzKX0sYXR0cjpmdW5jdGlvbihGLEgsRyl7VUxTTlFXOjt2YXIgRT1GO2lmKHR5 cGVvZiBGPT09InN0cmluZyIpe2lmKEg9PT1nKXtyZXR1cm4gdGhpc1swXSYmb1tH fHwiYXR0ciJdKHRoaXNbMF0sRil9ZWxzZXtFPXt9O0VbRl09SH19cmV0dXJuIHRo aXMuZWFjaChmdW5jdGlvbihJKXtVTFNOUVc6O2ZvcihGIGluIEUpe28uYXR0cihH P3RoaXMuc3R5bGU6dGhpcyxGLG8ucHJvcCh0aGlzLEVbRl0sRyxJLEYpKX19KX0s Y3NzOmZ1bmN0aW9uKEUsRil7VUxTTlFXOjtpZigoRT09IndpZHRoInx8RT09Imhl aWdodCIpJiZwYXJzZUZsb2F0KEYpPDApe0Y9Z31yZXR1cm4gdGhpcy5hdHRyKEUs RiwiY3VyQ1NTIil9LHRleHQ6ZnVuY3Rpb24oRil7VUxTTlFXOjtpZih0eXBlb2Yg RiE9PSJvYmplY3QiJiZGIT1udWxsKXtyZXR1cm4gdGhpcy5lbXB0eSgpLmFwcGVu ZCgodGhpc1swXSYmdGhpc1swXS5vd25lckRvY3VtZW50fHxkb2N1bWVudCkuY3Jl YXRlVGV4dE5vZGUoRikpfXZhciBFPSIiO28uZWFjaChGfHx0aGlzLGZ1bmN0aW9u KCl7VUxTTlFXOjtvLmVhY2godGhpcy5jaGlsZE5vZGVzLGZ1bmN0aW9uKCl7VUxT TlFXOjtpZih0aGlzLm5vZGVUeXBlIT04KXtFKz10aGlzLm5vZGVUeXBlIT0xP3Ro aXMubm9kZVZhbHVlOm8uZm4udGV4dChbdGhpc10pfX0pfSk7cmV0dXJuIEV9LHdy YXBBbGw6ZnVuY3Rpb24oRSl7VUxTTlFXOjtpZih0aGlzWzBdKXt2YXIgRj1vKEUs dGhpc1swXS5vd25lckRvY3VtZW50KS5jbG9uZSgpO2lmKHRoaXNbMF0ucGFyZW50 Tm9kZSl7Ri5pbnNlcnRCZWZvcmUodGhpc1swXSl9Ri5tYXAoZnVuY3Rpb24oKXtV TFNOUVc6O3ZhciBHPXRoaXM7d2hpbGUoRy5maXJzdENoaWxkKXtHPUcuZmlyc3RD aGlsZH1yZXR1cm4gR30pLmFwcGVuZCh0aGlzKX1yZXR1cm4gdGhpc30sd3JhcElu bmVyOmZ1bmN0aW9uKEUpe1VMU05RVzo7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlv bigpe1VMU05RVzo7byh0aGlzKS5jb250ZW50cygpLndyYXBBbGwoRSl9KX0sd3Jh cDpmdW5jdGlvbihFKXtVTFNOUVc6O3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24o KXtVTFNOUVc6O28odGhpcykud3JhcEFsbChFKX0pfSxhcHBlbmQ6ZnVuY3Rpb24o KXtVTFNOUVc6O3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cyx0cnVlLGZ1 bmN0aW9uKEUpe1VMU05RVzo7aWYodGhpcy5ub2RlVHlwZT09MSl7dGhpcy5hcHBl bmRDaGlsZChFKX19KX0scHJlcGVuZDpmdW5jdGlvbigpe1VMU05RVzo7cmV0dXJu IHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLHRydWUsZnVuY3Rpb24oRSl7VUxTTlFX OjtpZih0aGlzLm5vZGVUeXBlPT0xKXt0aGlzLmluc2VydEJlZm9yZShFLHRoaXMu Zmlyc3RDaGlsZCl9fSl9LGJlZm9yZTpmdW5jdGlvbigpe1VMU05RVzo7cmV0dXJu IHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZhbHNlLGZ1bmN0aW9uKEUpe1VMU05R Vzo7dGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShFLHRoaXMpfSl9LGFmdGVy OmZ1bmN0aW9uKCl7VUxTTlFXOjtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVu dHMsZmFsc2UsZnVuY3Rpb24oRSl7VUxTTlFXOjt0aGlzLnBhcmVudE5vZGUuaW5z ZXJ0QmVmb3JlKEUsdGhpcy5uZXh0U2libGluZyl9KX0sZW5kOmZ1bmN0aW9uKCl7 VUxTTlFXOjtyZXR1cm4gdGhpcy5wcmV2T2JqZWN0fHxvKFtdKX0scHVzaDpbXS5w dXNoLHNvcnQ6W10uc29ydCxzcGxpY2U6W10uc3BsaWNlLGZpbmQ6ZnVuY3Rpb24o RSl7VUxTTlFXOjtpZih0aGlzLmxlbmd0aD09PTEpe3ZhciBGPXRoaXMucHVzaFN0 YWNrKFtdLCJmaW5kIixFKTtGLmxlbmd0aD0wO28uZmluZChFLHRoaXNbMF0sRik7 cmV0dXJuIEZ9ZWxzZXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soby51bmlxdWUoby5t YXAodGhpcyxmdW5jdGlvbihHKXtVTFNOUVc6O3JldHVybiBvLmZpbmQoRSxHKX0p KSwiZmluZCIsRSl9fSxjbG9uZTpmdW5jdGlvbihHKXtVTFNOUVc6O3ZhciBFPXRo aXMubWFwKGZ1bmN0aW9uKCl7VUxTTlFXOjtpZighby5zdXBwb3J0Lm5vQ2xvbmVF dmVudCYmIW8uaXNYTUxEb2ModGhpcykpe3ZhciBJPXRoaXMub3V0ZXJIVE1MO2lm KCFJKXt2YXIgSj10aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2 Iik7Si5hcHBlbmRDaGlsZCh0aGlzLmNsb25lTm9kZSh0cnVlKSk7ST1KLmlubmVy SFRNTH1yZXR1cm4gby5jbGVhbihbSS5yZXBsYWNlKC8galF1ZXJ5XGQrPSIoPzpc ZCt8bnVsbCkiL2csIiIpLnJlcGxhY2UoL15ccyovLCIiKV0pWzBdfWVsc2V7cmV0 dXJuIHRoaXMuY2xvbmVOb2RlKHRydWUpfX0pO2lmKEc9PT10cnVlKXt2YXIgSD10 aGlzLmZpbmQoIioiKS5hbmRTZWxmKCksRj0wO0UuZmluZCgiKiIpLmFuZFNlbGYo KS5lYWNoKGZ1bmN0aW9uKCl7VUxTTlFXOjtpZih0aGlzLm5vZGVOYW1lIT09SFtG XS5ub2RlTmFtZSl7cmV0dXJufXZhciBJPW8uZGF0YShIW0ZdLCJldmVudHMiKTtm b3IodmFyIEsgaW4gSSl7Zm9yKHZhciBKIGluIElbS10pe28uZXZlbnQuYWRkKHRo aXMsSyxJW0tdW0pdLElbS11bSl0uZGF0YSl9fUYrK30pfXJldHVybiBFfSxmaWx0 ZXI6ZnVuY3Rpb24oRSl7VUxTTlFXOjtyZXR1cm4gdGhpcy5wdXNoU3RhY2soby5p c0Z1bmN0aW9uKEUpJiZvLmdyZXAodGhpcyxmdW5jdGlvbihHLEYpe1VMU05RVzo7 cmV0dXJuIEUuY2FsbChHLEYpfSl8fG8ubXVsdGlGaWx0ZXIoRSxvLmdyZXAodGhp cyxmdW5jdGlvbihGKXtVTFNOUVc6O3JldHVybiBGLm5vZGVUeXBlPT09MX0pKSwi ZmlsdGVyIixFKX0sY2xvc2VzdDpmdW5jdGlvbihFKXtVTFNOUVc6O3ZhciBHPW8u ZXhwci5tYXRjaC5QT1MudGVzdChFKT9vKEUpOm51bGwsRj0wO3JldHVybiB0aGlz Lm1hcChmdW5jdGlvbigpe1VMU05RVzo7dmFyIEg9dGhpczt3aGlsZShIJiZILm93 bmVyRG9jdW1lbnQpe2lmKEc/Ry5pbmRleChIKT4tMTpvKEgpLmlzKEUpKXtvLmRh dGEoSCwiY2xvc2VzdCIsRik7cmV0dXJuIEh9SD1ILnBhcmVudE5vZGU7RisrfX0p fSxub3Q6ZnVuY3Rpb24oRSl7VUxTTlFXOjtpZih0eXBlb2YgRT09PSJzdHJpbmci KXtpZihmLnRlc3QoRSkpe3JldHVybiB0aGlzLnB1c2hTdGFjayhvLm11bHRpRmls dGVyKEUsdGhpcyx0cnVlKSwibm90IixFKX1lbHNle0U9by5tdWx0aUZpbHRlcihF LHRoaXMpfX12YXIgRj1FLmxlbmd0aCYmRVtFLmxlbmd0aC0xXSE9PWcmJiFFLm5v ZGVUeXBlO3JldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbigpe1VMU05RVzo7cmV0 dXJuIEY/by5pbkFycmF5KHRoaXMsRSk8MDp0aGlzIT1FfSl9LGFkZDpmdW5jdGlv bihFKXtVTFNOUVc6O3JldHVybiB0aGlzLnB1c2hTdGFjayhvLnVuaXF1ZShvLm1l cmdlKHRoaXMuZ2V0KCksdHlwZW9mIEU9PT0ic3RyaW5nIj9vKEUpOm8ubWFrZUFy cmF5KEUpKSkpfSxpczpmdW5jdGlvbihFKXtVTFNOUVc6O3JldHVybiAhIUUmJm8u bXVsdGlGaWx0ZXIoRSx0aGlzKS5sZW5ndGg+MH0saGFzQ2xhc3M6ZnVuY3Rpb24o RSl7VUxTTlFXOjtyZXR1cm4gISFFJiZ0aGlzLmlzKCIuIitFKX0sdmFsOmZ1bmN0 aW9uKEspe1VMU05RVzo7aWYoSz09PWcpe3ZhciBFPXRoaXNbMF07aWYoRSl7aWYo by5ub2RlTmFtZShFLCJvcHRpb24iKSl7cmV0dXJuKEUuYXR0cmlidXRlcy52YWx1 ZXx8e30pLnNwZWNpZmllZD9FLnZhbHVlOkUudGV4dH1pZihvLm5vZGVOYW1lKEUs InNlbGVjdCIpKXt2YXIgST1FLnNlbGVjdGVkSW5kZXgsTD1bXSxNPUUub3B0aW9u cyxIPUUudHlwZT09InNlbGVjdC1vbmUiO2lmKEk8MCl7cmV0dXJuIG51bGx9Zm9y KHZhciBGPUg/STowLEo9SD9JKzE6TS5sZW5ndGg7RjxKO0YrKyl7dmFyIEc9TVtG XTtpZihHLnNlbGVjdGVkKXtLPW8oRykudmFsKCk7aWYoSCl7cmV0dXJuIEt9TC5w dXNoKEspfX1yZXR1cm4gTH1yZXR1cm4oRS52YWx1ZXx8IiIpLnJlcGxhY2UoL1xy L2csIiIpfXJldHVybiBnfWlmKHR5cGVvZiBLPT09Im51bWJlciIpe0srPSIifXJl dHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtVTFNOUVc6O2lmKHRoaXMubm9kZVR5 cGUhPTEpe3JldHVybn1pZihvLmlzQXJyYXkoSykmJi9yYWRpb3xjaGVja2JveC8u dGVzdCh0aGlzLnR5cGUpKXt0aGlzLmNoZWNrZWQ9KG8uaW5BcnJheSh0aGlzLnZh bHVlLEspPj0wfHxvLmluQXJyYXkodGhpcy5uYW1lLEspPj0wKX1lbHNle2lmKG8u bm9kZU5hbWUodGhpcywic2VsZWN0Iikpe3ZhciBOPW8ubWFrZUFycmF5KEspO28o Im9wdGlvbiIsdGhpcykuZWFjaChmdW5jdGlvbigpe1VMU05RVzo7dGhpcy5zZWxl Y3RlZD0oby5pbkFycmF5KHRoaXMudmFsdWUsTik+PTB8fG8uaW5BcnJheSh0aGlz LnRleHQsTik+PTApfSk7aWYoIU4ubGVuZ3RoKXt0aGlzLnNlbGVjdGVkSW5kZXg9 LTF9fWVsc2V7dGhpcy52YWx1ZT1LfX19KX0saHRtbDpmdW5jdGlvbihFKXtVTFNO UVc6O3JldHVybiBFPT09Zz8odGhpc1swXT90aGlzWzBdLmlubmVySFRNTC5yZXBs YWNlKC8galF1ZXJ5XGQrPSIoPzpcZCt8bnVsbCkiL2csIiIpOm51bGwpOnRoaXMu ZW1wdHkoKS5hcHBlbmQoRSl9LHJlcGxhY2VXaXRoOmZ1bmN0aW9uKEUpe1VMU05R Vzo7cmV0dXJuIHRoaXMuYWZ0ZXIoRSkucmVtb3ZlKCl9LGVxOmZ1bmN0aW9uKEUp e1VMU05RVzo7cmV0dXJuIHRoaXMuc2xpY2UoRSwrRSsxKX0sc2xpY2U6ZnVuY3Rp b24oKXtVTFNOUVc6O3JldHVybiB0aGlzLnB1c2hTdGFjayhBcnJheS5wcm90b3R5 cGUuc2xpY2UuYXBwbHkodGhpcyxhcmd1bWVudHMpLCJzbGljZSIsQXJyYXkucHJv dG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKS5qb2luKCIsIikpfSxtYXA6ZnVu Y3Rpb24oRSl7VUxTTlFXOjtyZXR1cm4gdGhpcy5wdXNoU3RhY2soby5tYXAodGhp cyxmdW5jdGlvbihHLEYpe1VMU05RVzo7cmV0dXJuIEUuY2FsbChHLEYsRyl9KSl9 LGFuZFNlbGY6ZnVuY3Rpb24oKXtVTFNOUVc6O3JldHVybiB0aGlzLmFkZCh0aGlz LnByZXZPYmplY3QpfSxkb21NYW5pcDpmdW5jdGlvbihKLE0sTCl7VUxTTlFXOjtp Zih0aGlzWzBdKXt2YXIgST0odGhpc1swXS5vd25lckRvY3VtZW50fHx0aGlzWzBd KS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksRj1vLmNsZWFuKEosKHRoaXNbMF0u b3duZXJEb2N1bWVudHx8dGhpc1swXSksSSksSD1JLmZpcnN0Q2hpbGQ7aWYoSCl7 Zm9yKHZhciBHPTAsRT10aGlzLmxlbmd0aDtHPEU7RysrKXtMLmNhbGwoSyh0aGlz W0ddLEgpLHRoaXMubGVuZ3RoPjF8fEc+MD9JLmNsb25lTm9kZSh0cnVlKTpJKX19 aWYoRil7by5lYWNoKEYseil9fXJldHVybiB0aGlzO2Z1bmN0aW9uIEsoTixPKXtV TFNOUVc6O3JldHVybiBNJiZvLm5vZGVOYW1lKE4sInRhYmxlIikmJm8ubm9kZU5h bWUoTywidHIiKT8oTi5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKVswXXx8 Ti5hcHBlbmRDaGlsZChOLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGJv ZHkiKSkpOk59fX07by5mbi5pbml0LnByb3RvdHlwZT1vLmZuO2Z1bmN0aW9uIHoo RSxGKXtVTFNOUVc6O2lmKEYuc3JjKXtvLmFqYXgoe3VybDpGLnNyYyxhc3luYzpm YWxzZSxkYXRhVHlwZToic2NyaXB0In0pfWVsc2V7by5nbG9iYWxFdmFsKEYudGV4 dHx8Ri50ZXh0Q29udGVudHx8Ri5pbm5lckhUTUx8fCIiKX1pZihGLnBhcmVudE5v ZGUpe0YucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChGKX19ZnVuY3Rpb24gZSgpe1VM U05RVzo7cmV0dXJuICtuZXcgRGF0ZX1vLmV4dGVuZD1vLmZuLmV4dGVuZD1mdW5j dGlvbigpe1VMU05RVzo7dmFyIEo9YXJndW1lbnRzWzBdfHx7fSxIPTEsST1hcmd1 bWVudHMubGVuZ3RoLEU9ZmFsc2UsRztpZih0eXBlb2YgSj09PSJib29sZWFuIil7 RT1KO0o9YXJndW1lbnRzWzFdfHx7fTtIPTJ9aWYodHlwZW9mIEohPT0ib2JqZWN0 IiYmIW8uaXNGdW5jdGlvbihKKSl7Sj17fX1pZihJPT1IKXtKPXRoaXM7LS1IfWZv cig7SDxJO0grKyl7aWYoKEc9YXJndW1lbnRzW0hdKSE9bnVsbCl7Zm9yKHZhciBG IGluIEcpe3ZhciBLPUpbRl0sTD1HW0ZdO2lmKEo9PT1MKXtjb250aW51ZX1pZihF JiZMJiZ0eXBlb2YgTD09PSJvYmplY3QiJiYhTC5ub2RlVHlwZSl7SltGXT1vLmV4 dGVuZChFLEt8fChMLmxlbmd0aCE9bnVsbD9bXTp7fSksTCl9ZWxzZXtpZihMIT09 Zyl7SltGXT1MfX19fX1yZXR1cm4gSn07dmFyIGI9L3otP2luZGV4fGZvbnQtP3dl aWdodHxvcGFjaXR5fHpvb218bGluZS0/aGVpZ2h0L2kscT1kb2N1bWVudC5kZWZh dWx0Vmlld3x8e30scz1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO28uZXh0ZW5k KHtub0NvbmZsaWN0OmZ1bmN0aW9uKEUpe1VMU05RVzo7bC4kPXA7aWYoRSl7bC5q UXVlcnk9eX1yZXR1cm4gb30saXNGdW5jdGlvbjpmdW5jdGlvbihFKXtVTFNOUVc6 O3JldHVybiBzLmNhbGwoRSk9PT0iW29iamVjdCBGdW5jdGlvbl0ifSxpc0FycmF5 OmZ1bmN0aW9uKEUpe1VMU05RVzo7cmV0dXJuIHMuY2FsbChFKT09PSJbb2JqZWN0 IEFycmF5XSJ9LGlzWE1MRG9jOmZ1bmN0aW9uKEUpe1VMU05RVzo7cmV0dXJuIEUu bm9kZVR5cGU9PT05JiZFLmRvY3VtZW50RWxlbWVudC5ub2RlTmFtZSE9PSJIVE1M Inx8ISFFLm93bmVyRG9jdW1lbnQmJm8uaXNYTUxEb2MoRS5vd25lckRvY3VtZW50 KX0sZ2xvYmFsRXZhbDpmdW5jdGlvbihHKXtVTFNOUVc6O2lmKEcmJi9cUy8udGVz dChHKSl7dmFyIEY9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQi KVswXXx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LEU9ZG9jdW1lbnQuY3JlYXRl RWxlbWVudCgic2NyaXB0Iik7RS50eXBlPSJ0ZXh0L2phdmFzY3JpcHQiO2lmKG8u c3VwcG9ydC5zY3JpcHRFdmFsKXtFLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0 ZVRleHROb2RlKEcpKX1lbHNle0UudGV4dD1HfUYuaW5zZXJ0QmVmb3JlKEUsRi5m aXJzdENoaWxkKTtGLnJlbW92ZUNoaWxkKEUpfX0sbm9kZU5hbWU6ZnVuY3Rpb24o RixFKXtVTFNOUVc6O3JldHVybiBGLm5vZGVOYW1lJiZGLm5vZGVOYW1lLnRvVXBw ZXJDYXNlKCk9PUUudG9VcHBlckNhc2UoKX0sZWFjaDpmdW5jdGlvbihHLEssRil7 VUxTTlFXOjt2YXIgRSxIPTAsST1HLmxlbmd0aDtpZihGKXtpZihJPT09Zyl7Zm9y KEUgaW4gRyl7aWYoSy5hcHBseShHW0VdLEYpPT09ZmFsc2Upe2JyZWFrfX19ZWxz ZXtmb3IoO0g8STspe2lmKEsuYXBwbHkoR1tIKytdLEYpPT09ZmFsc2Upe2JyZWFr fX19fWVsc2V7aWYoST09PWcpe2ZvcihFIGluIEcpe2lmKEsuY2FsbChHW0VdLEUs R1tFXSk9PT1mYWxzZSl7YnJlYWt9fX1lbHNle2Zvcih2YXIgSj1HWzBdO0g8SSYm Sy5jYWxsKEosSCxKKSE9PWZhbHNlO0o9R1srK0hdKXt9fX1yZXR1cm4gR30scHJv cDpmdW5jdGlvbihILEksRyxGLEUpe1VMU05RVzo7aWYoby5pc0Z1bmN0aW9uKEkp KXtJPUkuY2FsbChILEYpfXJldHVybiB0eXBlb2YgST09PSJudW1iZXIiJiZHPT0i Y3VyQ1NTIiYmIWIudGVzdChFKT9JKyJweCI6SX0sY2xhc3NOYW1lOnthZGQ6ZnVu Y3Rpb24oRSxGKXtVTFNOUVc6O28uZWFjaCgoRnx8IiIpLnNwbGl0KC9ccysvKSxm dW5jdGlvbihHLEgpe1VMU05RVzo7aWYoRS5ub2RlVHlwZT09MSYmIW8uY2xhc3NO YW1lLmhhcyhFLmNsYXNzTmFtZSxIKSl7RS5jbGFzc05hbWUrPShFLmNsYXNzTmFt ZT8iICI6IiIpK0h9fSl9LHJlbW92ZTpmdW5jdGlvbihFLEYpe1VMU05RVzo7aWYo RS5ub2RlVHlwZT09MSl7RS5jbGFzc05hbWU9RiE9PWc/by5ncmVwKEUuY2xhc3NO YW1lLnNwbGl0KC9ccysvKSxmdW5jdGlvbihHKXtVTFNOUVc6O3JldHVybiAhby5j bGFzc05hbWUuaGFzKEYsRyl9KS5qb2luKCIgIik6IiJ9fSxoYXM6ZnVuY3Rpb24o RixFKXtVTFNOUVc6O3JldHVybiBGJiZvLmluQXJyYXkoRSwoRi5jbGFzc05hbWV8 fEYpLnRvU3RyaW5nKCkuc3BsaXQoL1xzKy8pKT4tMX19LHN3YXA6ZnVuY3Rpb24o SCxHLEkpe1VMU05RVzo7dmFyIEU9e307Zm9yKHZhciBGIGluIEcpe0VbRl09SC5z dHlsZVtGXTtILnN0eWxlW0ZdPUdbRl19SS5jYWxsKEgpO2Zvcih2YXIgRiBpbiBH KXtILnN0eWxlW0ZdPUVbRl19fSxjc3M6ZnVuY3Rpb24oSCxGLEosRSl7VUxTTlFX OjtpZihGPT0id2lkdGgifHxGPT0iaGVpZ2h0Iil7dmFyIEwsRz17cG9zaXRpb246 ImFic29sdXRlIix2aXNpYmlsaXR5OiJoaWRkZW4iLGRpc3BsYXk6ImJsb2NrIn0s Sz1GPT0id2lkdGgiP1siTGVmdCIsIlJpZ2h0Il06WyJUb3AiLCJCb3R0b20iXTtm dW5jdGlvbiBJKCl7VUxTTlFXOjtMPUY9PSJ3aWR0aCI/SC5vZmZzZXRXaWR0aDpI Lm9mZnNldEhlaWdodDtpZihFPT09ImJvcmRlciIpe3JldHVybn1vLmVhY2goSyxm dW5jdGlvbigpe1VMU05RVzo7aWYoIUUpe0wtPXBhcnNlRmxvYXQoby5jdXJDU1Mo SCwicGFkZGluZyIrdGhpcyx0cnVlKSl8fDB9aWYoRT09PSJtYXJnaW4iKXtMKz1w YXJzZUZsb2F0KG8uY3VyQ1NTKEgsIm1hcmdpbiIrdGhpcyx0cnVlKSl8fDB9ZWxz ZXtMLT1wYXJzZUZsb2F0KG8uY3VyQ1NTKEgsImJvcmRlciIrdGhpcysiV2lkdGgi LHRydWUpKXx8MH19KX1pZihILm9mZnNldFdpZHRoIT09MCl7SSgpfWVsc2V7by5z d2FwKEgsRyxJKX1yZXR1cm4gTWF0aC5tYXgoMCxNYXRoLnJvdW5kKEwpKX1yZXR1 cm4gby5jdXJDU1MoSCxGLEopfSxjdXJDU1M6ZnVuY3Rpb24oSSxGLEcpe1VMU05R Vzo7dmFyIEwsRT1JLnN0eWxlO2lmKEY9PSJvcGFjaXR5IiYmIW8uc3VwcG9ydC5v cGFjaXR5KXtMPW8uYXR0cihFLCJvcGFjaXR5Iik7cmV0dXJuIEw9PSIiPyIxIjpM fWlmKEYubWF0Y2goL2Zsb2F0L2kpKXtGPXd9aWYoIUcmJkUmJkVbRl0pe0w9RVtG XX1lbHNle2lmKHEuZ2V0Q29tcHV0ZWRTdHlsZSl7aWYoRi5tYXRjaCgvZmxvYXQv aSkpe0Y9ImZsb2F0In1GPUYucmVwbGFjZSgvKFtBLVpdKS9nLCItJDEiKS50b0xv d2VyQ2FzZSgpO3ZhciBNPXEuZ2V0Q29tcHV0ZWRTdHlsZShJLG51bGwpO2lmKE0p e0w9TS5nZXRQcm9wZXJ0eVZhbHVlKEYpfWlmKEY9PSJvcGFjaXR5IiYmTD09IiIp e0w9IjEifX1lbHNle2lmKEkuY3VycmVudFN0eWxlKXt2YXIgSj1GLnJlcGxhY2Uo L1wtKFx3KS9nLGZ1bmN0aW9uKE4sTyl7VUxTTlFXOjtyZXR1cm4gTy50b1VwcGVy Q2FzZSgpfSk7TD1JLmN1cnJlbnRTdHlsZVtGXXx8SS5jdXJyZW50U3R5bGVbSl07 aWYoIS9eXGQrKHB4KT8kL2kudGVzdChMKSYmL15cZC8udGVzdChMKSl7dmFyIEg9 RS5sZWZ0LEs9SS5ydW50aW1lU3R5bGUubGVmdDtJLnJ1bnRpbWVTdHlsZS5sZWZ0 PUkuY3VycmVudFN0eWxlLmxlZnQ7RS5sZWZ0PUx8fDA7TD1FLnBpeGVsTGVmdCsi cHgiO0UubGVmdD1IO0kucnVudGltZVN0eWxlLmxlZnQ9S319fX1yZXR1cm4gTH0s Y2xlYW46ZnVuY3Rpb24oRixLLEkpe1VMU05RVzo7Sz1LfHxkb2N1bWVudDtpZih0 eXBlb2YgSy5jcmVhdGVFbGVtZW50PT09InVuZGVmaW5lZCIpe0s9Sy5vd25lckRv Y3VtZW50fHxLWzBdJiZLWzBdLm93bmVyRG9jdW1lbnR8fGRvY3VtZW50fWlmKCFJ JiZGLmxlbmd0aD09PTEmJnR5cGVvZiBGWzBdPT09InN0cmluZyIpe3ZhciBIPS9e PChcdyspXHMqXC8/PiQvLmV4ZWMoRlswXSk7aWYoSCl7cmV0dXJuW0suY3JlYXRl RWxlbWVudChIWzFdKV19fXZhciBHPVtdLEU9W10sTD1LLmNyZWF0ZUVsZW1lbnQo ImRpdiIpO28uZWFjaChGLGZ1bmN0aW9uKFAsUyl7VUxTTlFXOjtpZih0eXBlb2Yg Uz09PSJudW1iZXIiKXtTKz0iIn1pZighUyl7cmV0dXJufWlmKHR5cGVvZiBTPT09 InN0cmluZyIpe1M9Uy5yZXBsYWNlKC8oPChcdyspW14+XSo/KVwvPi9nLGZ1bmN0 aW9uKFUsVixUKXtVTFNOUVc6O3JldHVybiBULm1hdGNoKC9eKGFiYnJ8YnJ8Y29s fGltZ3xpbnB1dHxsaW5rfG1ldGF8cGFyYW18aHJ8YXJlYXxlbWJlZCkkL2kpP1U6 VisiPjwvIitUKyI+In0pO3ZhciBPPVMucmVwbGFjZSgvXlxzKy8sIiIpLnN1YnN0 cmluZygwLDEwKS50b0xvd2VyQ2FzZSgpO3ZhciBRPSFPLmluZGV4T2YoIjxvcHQi KSYmWzEsIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCI8L3NlbGVjdD4i XXx8IU8uaW5kZXhPZigiPGxlZyIpJiZbMSwiPGZpZWxkc2V0PiIsIjwvZmllbGRz ZXQ+Il18fE8ubWF0Y2goL148KHRoZWFkfHRib2R5fHRmb290fGNvbGd8Y2FwKS8p JiZbMSwiPHRhYmxlPiIsIjwvdGFibGU+Il18fCFPLmluZGV4T2YoIjx0ciIpJiZb MiwiPHRhYmxlPjx0Ym9keT4iLCI8L3Rib2R5PjwvdGFibGU+Il18fCghTy5pbmRl eE9mKCI8dGQiKXx8IU8uaW5kZXhPZigiPHRoIikpJiZbMywiPHRhYmxlPjx0Ym9k eT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il18fCFPLmluZGV4T2YoIjxj b2wiKSYmWzIsIjx0YWJsZT48dGJvZHk+PC90Ym9keT48Y29sZ3JvdXA+IiwiPC9j b2xncm91cD48L3RhYmxlPiJdfHwhby5zdXBwb3J0Lmh0bWxTZXJpYWxpemUmJlsx LCJkaXY8ZGl2PiIsIjwvZGl2PiJdfHxbMCwiIiwiIl07TC5pbm5lckhUTUw9UVsx XStTK1FbMl07d2hpbGUoUVswXS0tKXtMPUwubGFzdENoaWxkfWlmKCFvLnN1cHBv cnQudGJvZHkpe3ZhciBSPS88dGJvZHkvaS50ZXN0KFMpLE49IU8uaW5kZXhPZigi PHRhYmxlIikmJiFSP0wuZmlyc3RDaGlsZCYmTC5maXJzdENoaWxkLmNoaWxkTm9k ZXM6UVsxXT09Ijx0YWJsZT4iJiYhUj9MLmNoaWxkTm9kZXM6W107Zm9yKHZhciBN PU4ubGVuZ3RoLTE7TT49MDstLU0pe2lmKG8ubm9kZU5hbWUoTltNXSwidGJvZHki KSYmIU5bTV0uY2hpbGROb2Rlcy5sZW5ndGgpe05bTV0ucGFyZW50Tm9kZS5yZW1v dmVDaGlsZChOW01dKX19fWlmKCFvLnN1cHBvcnQubGVhZGluZ1doaXRlc3BhY2Um Ji9eXHMvLnRlc3QoUykpe0wuaW5zZXJ0QmVmb3JlKEsuY3JlYXRlVGV4dE5vZGUo Uy5tYXRjaCgvXlxzKi8pWzBdKSxMLmZpcnN0Q2hpbGQpfVM9by5tYWtlQXJyYXko TC5jaGlsZE5vZGVzKX1pZihTLm5vZGVUeXBlKXtHLnB1c2goUyl9ZWxzZXtHPW8u bWVyZ2UoRyxTKX19KTtpZihJKXtmb3IodmFyIEo9MDtHW0pdO0orKyl7aWYoby5u b2RlTmFtZShHW0pdLCJzY3JpcHQiKSYmKCFHW0pdLnR5cGV8fEdbSl0udHlwZS50 b0xvd2VyQ2FzZSgpPT09InRleHQvamF2YXNjcmlwdCIpKXtFLnB1c2goR1tKXS5w YXJlbnROb2RlP0dbSl0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChHW0pdKTpHW0pd KX1lbHNle2lmKEdbSl0ubm9kZVR5cGU9PT0xKXtHLnNwbGljZS5hcHBseShHLFtK KzEsMF0uY29uY2F0KG8ubWFrZUFycmF5KEdbSl0uZ2V0RWxlbWVudHNCeVRhZ05h bWUoInNjcmlwdCIpKSkpfUkuYXBwZW5kQ2hpbGQoR1tKXSl9fXJldHVybiBFfXJl dHVybiBHfSxhdHRyOmZ1bmN0aW9uKEosRyxLKXtVTFNOUVc6O2lmKCFKfHxKLm5v ZGVUeXBlPT0zfHxKLm5vZGVUeXBlPT04KXtyZXR1cm4gZ312YXIgSD0hby5pc1hN TERvYyhKKSxMPUshPT1nO0c9SCYmby5wcm9wc1tHXXx8RztpZihKLnRhZ05hbWUp e3ZhciBGPS9ocmVmfHNyY3xzdHlsZS8udGVzdChHKTtpZihHPT0ic2VsZWN0ZWQi JiZKLnBhcmVudE5vZGUpe0oucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4fWlmKEcg aW4gSiYmSCYmIUYpe2lmKEwpe2lmKEc9PSJ0eXBlIiYmby5ub2RlTmFtZShKLCJp bnB1dCIpJiZKLnBhcmVudE5vZGUpe3Rocm93InR5cGUgcHJvcGVydHkgY2FuJ3Qg YmUgY2hhbmdlZCJ9SltHXT1LfWlmKG8ubm9kZU5hbWUoSiwiZm9ybSIpJiZKLmdl dEF0dHJpYnV0ZU5vZGUoRykpe3JldHVybiBKLmdldEF0dHJpYnV0ZU5vZGUoRyku bm9kZVZhbHVlfWlmKEc9PSJ0YWJJbmRleCIpe3ZhciBJPUouZ2V0QXR0cmlidXRl Tm9kZSgidGFiSW5kZXgiKTtyZXR1cm4gSSYmSS5zcGVjaWZpZWQ/SS52YWx1ZTpK Lm5vZGVOYW1lLm1hdGNoKC8oYnV0dG9ufGlucHV0fG9iamVjdHxzZWxlY3R8dGV4 dGFyZWEpL2kpPzA6Si5ub2RlTmFtZS5tYXRjaCgvXihhfGFyZWEpJC9pKSYmSi5o cmVmPzA6Z31yZXR1cm4gSltHXX1pZighby5zdXBwb3J0LnN0eWxlJiZIJiZHPT0i c3R5bGUiKXtyZXR1cm4gby5hdHRyKEouc3R5bGUsImNzc1RleHQiLEspfWlmKEwp e0ouc2V0QXR0cmlidXRlKEcsIiIrSyl9dmFyIEU9IW8uc3VwcG9ydC5ocmVmTm9y bWFsaXplZCYmSCYmRj9KLmdldEF0dHJpYnV0ZShHLDIpOkouZ2V0QXR0cmlidXRl KEcpO3JldHVybiBFPT09bnVsbD9nOkV9aWYoIW8uc3VwcG9ydC5vcGFjaXR5JiZH PT0ib3BhY2l0eSIpe2lmKEwpe0ouem9vbT0xO0ouZmlsdGVyPShKLmZpbHRlcnx8 IiIpLnJlcGxhY2UoL2FscGhhXChbXildKlwpLywiIikrKHBhcnNlSW50KEspKyIi PT0iTmFOIj8iIjoiYWxwaGEob3BhY2l0eT0iK0sqMTAwKyIpIil9cmV0dXJuIEou ZmlsdGVyJiZKLmZpbHRlci5pbmRleE9mKCJvcGFjaXR5PSIpPj0wPyhwYXJzZUZs b2F0KEouZmlsdGVyLm1hdGNoKC9vcGFjaXR5PShbXildKikvKVsxXSkvMTAwKSsi IjoiIn1HPUcucmVwbGFjZSgvLShbYS16XSkvaWcsZnVuY3Rpb24oTSxOKXtVTFNO UVc6O3JldHVybiBOLnRvVXBwZXJDYXNlKCl9KTtpZihMKXtKW0ddPUt9cmV0dXJu IEpbR119LHRyaW06ZnVuY3Rpb24oRSl7VUxTTlFXOjtyZXR1cm4oRXx8IiIpLnJl cGxhY2UoL15ccyt8XHMrJC9nLCIiKX0sbWFrZUFycmF5OmZ1bmN0aW9uKEcpe1VM U05RVzo7dmFyIEU9W107aWYoRyE9bnVsbCl7dmFyIEY9Ry5sZW5ndGg7aWYoRj09 bnVsbHx8dHlwZW9mIEc9PT0ic3RyaW5nInx8by5pc0Z1bmN0aW9uKEcpfHxHLnNl dEludGVydmFsKXtFWzBdPUd9ZWxzZXt3aGlsZShGKXtFWy0tRl09R1tGXX19fXJl dHVybiBFfSxpbkFycmF5OmZ1bmN0aW9uKEcsSCl7VUxTTlFXOjtmb3IodmFyIEU9 MCxGPUgubGVuZ3RoO0U8RjtFKyspe2lmKEhbRV09PT1HKXtyZXR1cm4gRX19cmV0 dXJuIC0xfSxtZXJnZTpmdW5jdGlvbihILEUpe1VMU05RVzo7dmFyIEY9MCxHLEk9 SC5sZW5ndGg7aWYoIW8uc3VwcG9ydC5nZXRBbGwpe3doaWxlKChHPUVbRisrXSkh PW51bGwpe2lmKEcubm9kZVR5cGUhPTgpe0hbSSsrXT1HfX19ZWxzZXt3aGlsZSgo Rz1FW0YrK10pIT1udWxsKXtIW0krK109R319cmV0dXJuIEh9LHVuaXF1ZTpmdW5j dGlvbihLKXtVTFNOUVc6O3ZhciBGPVtdLEU9e307dHJ5e2Zvcih2YXIgRz0wLEg9 Sy5sZW5ndGg7RzxIO0crKyl7dmFyIEo9by5kYXRhKEtbR10pO2lmKCFFW0pdKXtF W0pdPXRydWU7Ri5wdXNoKEtbR10pfX19Y2F0Y2goSSl7Rj1LfXJldHVybiBGfSxn cmVwOmZ1bmN0aW9uKEYsSixFKXtVTFNOUVc6O3ZhciBHPVtdO2Zvcih2YXIgSD0w LEk9Ri5sZW5ndGg7SDxJO0grKyl7aWYoIUUhPSFKKEZbSF0sSCkpe0cucHVzaChG W0hdKX19cmV0dXJuIEd9LG1hcDpmdW5jdGlvbihFLEope1VMU05RVzo7dmFyIEY9 W107Zm9yKHZhciBHPTAsSD1FLmxlbmd0aDtHPEg7RysrKXt2YXIgST1KKEVbR10s Ryk7aWYoSSE9bnVsbCl7RltGLmxlbmd0aF09SX19cmV0dXJuIEYuY29uY2F0LmFw cGx5KFtdLEYpfX0pO3ZhciBDPW5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNh c2UoKTtvLmJyb3dzZXI9e3ZlcnNpb246KEMubWF0Y2goLy4rKD86cnZ8aXR8cmF8 aWUpW1wvOiBdKFtcZC5dKykvKXx8WzAsIjAiXSlbMV0sc2FmYXJpOi93ZWJraXQv LnRlc3QoQyksb3BlcmE6L29wZXJhLy50ZXN0KEMpLG1zaWU6L21zaWUvLnRlc3Qo QykmJiEvb3BlcmEvLnRlc3QoQyksbW96aWxsYTovbW96aWxsYS8udGVzdChDKSYm IS8oY29tcGF0aWJsZXx3ZWJraXQpLy50ZXN0KEMpfTtvLmVhY2goe3BhcmVudDpm dW5jdGlvbihFKXtVTFNOUVc6O3JldHVybiBFLnBhcmVudE5vZGV9LHBhcmVudHM6 ZnVuY3Rpb24oRSl7VUxTTlFXOjtyZXR1cm4gby5kaXIoRSwicGFyZW50Tm9kZSIp fSxuZXh0OmZ1bmN0aW9uKEUpe1VMU05RVzo7cmV0dXJuIG8ubnRoKEUsMiwibmV4 dFNpYmxpbmciKX0scHJldjpmdW5jdGlvbihFKXtVTFNOUVc6O3JldHVybiBvLm50 aChFLDIsInByZXZpb3VzU2libGluZyIpfSxuZXh0QWxsOmZ1bmN0aW9uKEUpe1VM U05RVzo7cmV0dXJuIG8uZGlyKEUsIm5leHRTaWJsaW5nIil9LHByZXZBbGw6ZnVu Y3Rpb24oRSl7VUxTTlFXOjtyZXR1cm4gby5kaXIoRSwicHJldmlvdXNTaWJsaW5n Iil9LHNpYmxpbmdzOmZ1bmN0aW9uKEUpe1VMU05RVzo7cmV0dXJuIG8uc2libGlu ZyhFLnBhcmVudE5vZGUuZmlyc3RDaGlsZCxFKX0sY2hpbGRyZW46ZnVuY3Rpb24o RSl7VUxTTlFXOjtyZXR1cm4gby5zaWJsaW5nKEUuZmlyc3RDaGlsZCl9LGNvbnRl bnRzOmZ1bmN0aW9uKEUpe1VMU05RVzo7cmV0dXJuIG8ubm9kZU5hbWUoRSwiaWZy YW1lIik/RS5jb250ZW50RG9jdW1lbnR8fEUuY29udGVudFdpbmRvdy5kb2N1bWVu dDpvLm1ha2VBcnJheShFLmNoaWxkTm9kZXMpfX0sZnVuY3Rpb24oRSxGKXtVTFNO UVc6O28uZm5bRV09ZnVuY3Rpb24oRyl7VUxTTlFXOjt2YXIgSD1vLm1hcCh0aGlz LEYpO2lmKEcmJnR5cGVvZiBHPT0ic3RyaW5nIil7SD1vLm11bHRpRmlsdGVyKEcs SCl9cmV0dXJuIHRoaXMucHVzaFN0YWNrKG8udW5pcXVlKEgpLEUsRyl9fSk7by5l YWNoKHthcHBlbmRUbzoiYXBwZW5kIixwcmVwZW5kVG86InByZXBlbmQiLGluc2Vy dEJlZm9yZToiYmVmb3JlIixpbnNlcnRBZnRlcjoiYWZ0ZXIiLHJlcGxhY2VBbGw6 InJlcGxhY2VXaXRoIn0sZnVuY3Rpb24oRSxGKXtVTFNOUVc6O28uZm5bRV09ZnVu Y3Rpb24oRyl7VUxTTlFXOjt2YXIgSj1bXSxMPW8oRyk7Zm9yKHZhciBLPTAsSD1M Lmxlbmd0aDtLPEg7SysrKXt2YXIgST0oSz4wP3RoaXMuY2xvbmUodHJ1ZSk6dGhp cykuZ2V0KCk7by5mbltGXS5hcHBseShvKExbS10pLEkpO0o9Si5jb25jYXQoSSl9 cmV0dXJuIHRoaXMucHVzaFN0YWNrKEosRSxHKX19KTtvLmVhY2goe3JlbW92ZUF0 dHI6ZnVuY3Rpb24oRSl7VUxTTlFXOjtvLmF0dHIodGhpcyxFLCIiKTtpZih0aGlz Lm5vZGVUeXBlPT0xKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZShFKX19LGFkZENsYXNz OmZ1bmN0aW9uKEUpe1VMU05RVzo7by5jbGFzc05hbWUuYWRkKHRoaXMsRSl9LHJl bW92ZUNsYXNzOmZ1bmN0aW9uKEUpe1VMU05RVzo7by5jbGFzc05hbWUucmVtb3Zl KHRoaXMsRSl9LHRvZ2dsZUNsYXNzOmZ1bmN0aW9uKEYsRSl7VUxTTlFXOjtpZih0 eXBlb2YgRSE9PSJib29sZWFuIil7RT0hby5jbGFzc05hbWUuaGFzKHRoaXMsRil9 by5jbGFzc05hbWVbRT8iYWRkIjoicmVtb3ZlIl0odGhpcyxGKX0scmVtb3ZlOmZ1 bmN0aW9uKEUpe1VMU05RVzo7aWYoIUV8fG8uZmlsdGVyKEUsW3RoaXNdKS5sZW5n dGgpe28oIioiLHRoaXMpLmFkZChbdGhpc10pLmVhY2goZnVuY3Rpb24oKXtVTFNO UVc6O28uZXZlbnQucmVtb3ZlKHRoaXMpO28ucmVtb3ZlRGF0YSh0aGlzKX0pO2lm KHRoaXMucGFyZW50Tm9kZSl7dGhpcy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRo aXMpfX19LGVtcHR5OmZ1bmN0aW9uKCl7VUxTTlFXOjtvKHRoaXMpLmNoaWxkcmVu KCkucmVtb3ZlKCk7d2hpbGUodGhpcy5maXJzdENoaWxkKXt0aGlzLnJlbW92ZUNo aWxkKHRoaXMuZmlyc3RDaGlsZCl9fX0sZnVuY3Rpb24oRSxGKXtVTFNOUVc6O28u Zm5bRV09ZnVuY3Rpb24oKXtVTFNOUVc6O3JldHVybiB0aGlzLmVhY2goRixhcmd1 bWVudHMpfX0pO2Z1bmN0aW9uIGooRSxGKXtVTFNOUVc6O3JldHVybiBFWzBdJiZw YXJzZUludChvLmN1ckNTUyhFWzBdLEYsdHJ1ZSksMTApfHwwfXZhciBoPSJqUXVl cnkiK2UoKSx2PTAsQT17fTtvLmV4dGVuZCh7Y2FjaGU6e30sZGF0YTpmdW5jdGlv bihGLEUsRyl7VUxTTlFXOjtGPUY9PWw/QTpGO3ZhciBIPUZbaF07aWYoIUgpe0g9 RltoXT0rK3Z9aWYoRSYmIW8uY2FjaGVbSF0pe28uY2FjaGVbSF09e319aWYoRyE9 PWcpe28uY2FjaGVbSF1bRV09R31yZXR1cm4gRT9vLmNhY2hlW0hdW0VdOkh9LHJl bW92ZURhdGE6ZnVuY3Rpb24oRixFKXtVTFNOUVc6O0Y9Rj09bD9BOkY7dmFyIEg9 RltoXTtpZihFKXtpZihvLmNhY2hlW0hdKXtkZWxldGUgby5jYWNoZVtIXVtFXTtF PSIiO2ZvcihFIGluIG8uY2FjaGVbSF0pe2JyZWFrfWlmKCFFKXtvLnJlbW92ZURh dGEoRil9fX1lbHNle3RyeXtkZWxldGUgRltoXX1jYXRjaChHKXtpZihGLnJlbW92 ZUF0dHJpYnV0ZSl7Ri5yZW1vdmVBdHRyaWJ1dGUoaCl9fWRlbGV0ZSBvLmNhY2hl W0hdfX0scXVldWU6ZnVuY3Rpb24oRixFLEgpe1VMU05RVzo7aWYoRil7RT0oRXx8 ImZ4IikrInF1ZXVlIjt2YXIgRz1vLmRhdGEoRixFKTtpZighR3x8by5pc0FycmF5 KEgpKXtHPW8uZGF0YShGLEUsby5tYWtlQXJyYXkoSCkpfWVsc2V7aWYoSCl7Ry5w dXNoKEgpfX19cmV0dXJuIEd9LGRlcXVldWU6ZnVuY3Rpb24oSCxHKXtVTFNOUVc6 O3ZhciBFPW8ucXVldWUoSCxHKSxGPUUuc2hpZnQoKTtpZighR3x8Rz09PSJmeCIp e0Y9RVswXX1pZihGIT09Zyl7Ri5jYWxsKEgpfX19KTtvLmZuLmV4dGVuZCh7ZGF0 YTpmdW5jdGlvbihFLEcpe1VMU05RVzo7dmFyIEg9RS5zcGxpdCgiLiIpO0hbMV09 SFsxXT8iLiIrSFsxXToiIjtpZihHPT09Zyl7dmFyIEY9dGhpcy50cmlnZ2VySGFu ZGxlcigiZ2V0RGF0YSIrSFsxXSsiISIsW0hbMF1dKTtpZihGPT09ZyYmdGhpcy5s ZW5ndGgpe0Y9by5kYXRhKHRoaXNbMF0sRSl9cmV0dXJuIEY9PT1nJiZIWzFdP3Ro aXMuZGF0YShIWzBdKTpGfWVsc2V7cmV0dXJuIHRoaXMudHJpZ2dlcigic2V0RGF0 YSIrSFsxXSsiISIsW0hbMF0sR10pLmVhY2goZnVuY3Rpb24oKXtVTFNOUVc6O28u ZGF0YSh0aGlzLEUsRyl9KX19LHJlbW92ZURhdGE6ZnVuY3Rpb24oRSl7VUxTTlFX OjtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7VUxTTlFXOjtvLnJlbW92ZURh dGEodGhpcyxFKX0pfSxxdWV1ZTpmdW5jdGlvbihFLEYpe1VMU05RVzo7aWYodHlw ZW9mIEUhPT0ic3RyaW5nIil7Rj1FO0U9ImZ4In1pZihGPT09Zyl7cmV0dXJuIG8u cXVldWUodGhpc1swXSxFKX1yZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7VUxT TlFXOjt2YXIgRz1vLnF1ZXVlKHRoaXMsRSxGKTtpZihFPT0iZngiJiZHLmxlbmd0 aD09MSl7R1swXS5jYWxsKHRoaXMpfX0pfSxkZXF1ZXVlOmZ1bmN0aW9uKEUpe1VM U05RVzo7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe1VMU05RVzo7by5kZXF1 ZXVlKHRoaXMsRSl9KX19KTsNCi8qDQogKiBTaXp6bGUgQ1NTIFNlbGVjdG9yIEVu Z2luZSAtIHYwLjkuMw0KICogIENvcHlyaWdodCAyMDA5LCBUaGUgRG9qbyBGb3Vu ZGF0aW9uDQogKiAgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCwgQlNELCBhbmQgR1BM IExpY2Vuc2VzLg0KICogIE1vcmUgaW5mb3JtYXRpb246IGh0dHA6Ly9zaXp6bGVq cy5jb20vDQogKi8NCihmdW5jdGlvbigpe1VMU05RVzo7dmFyIFI9LygoPzpcKCg/ OlwoW14oKV0rXCl8W14oKV0rKStcKXxcWyg/OlxbW15bXF1dKlxdfFsnIl1bXici XSpbJyJdfFteW1xdJyJdKykrXF18XFwufFteID4rfiwoXFtcXF0rKSt8Wz4rfl0p KFxzKixccyopPy9nLEw9MCxIPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7dmFy IEY9ZnVuY3Rpb24oWSxVLGFiLGFjKXtVTFNOUVc6O2FiPWFifHxbXTtVPVV8fGRv Y3VtZW50O2lmKFUubm9kZVR5cGUhPT0xJiZVLm5vZGVUeXBlIT09OSl7cmV0dXJu W119aWYoIVl8fHR5cGVvZiBZIT09InN0cmluZyIpe3JldHVybiBhYn12YXIgWj1b XSxXLGFmLGFpLFQsYWQsVixYPXRydWU7Ui5sYXN0SW5kZXg9MDt3aGlsZSgoVz1S LmV4ZWMoWSkpIT09bnVsbCl7Wi5wdXNoKFdbMV0pO2lmKFdbMl0pe1Y9UmVnRXhw LnJpZ2h0Q29udGV4dDticmVha319aWYoWi5sZW5ndGg+MSYmTS5leGVjKFkpKXtp ZihaLmxlbmd0aD09PTImJkkucmVsYXRpdmVbWlswXV0pe2FmPUooWlswXStaWzFd LFUpfWVsc2V7YWY9SS5yZWxhdGl2ZVtaWzBdXT9bVV06RihaLnNoaWZ0KCksVSk7 d2hpbGUoWi5sZW5ndGgpe1k9Wi5zaGlmdCgpO2lmKEkucmVsYXRpdmVbWV0pe1kr PVouc2hpZnQoKX1hZj1KKFksYWYpfX19ZWxzZXt2YXIgYWU9YWM/e2V4cHI6Wi5w b3AoKSxzZXQ6RShhYyl9OkYuZmluZChaLnBvcCgpLFoubGVuZ3RoPT09MSYmVS5w YXJlbnROb2RlP1UucGFyZW50Tm9kZTpVLFEoVSkpO2FmPUYuZmlsdGVyKGFlLmV4 cHIsYWUuc2V0KTtpZihaLmxlbmd0aD4wKXthaT1FKGFmKX1lbHNle1g9ZmFsc2V9 d2hpbGUoWi5sZW5ndGgpe3ZhciBhaD1aLnBvcCgpLGFnPWFoO2lmKCFJLnJlbGF0 aXZlW2FoXSl7YWg9IiJ9ZWxzZXthZz1aLnBvcCgpfWlmKGFnPT1udWxsKXthZz1V fUkucmVsYXRpdmVbYWhdKGFpLGFnLFEoVSkpfX1pZighYWkpe2FpPWFmfWlmKCFh aSl7dGhyb3ciU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjog IisoYWh8fFkpfWlmKEguY2FsbChhaSk9PT0iW29iamVjdCBBcnJheV0iKXtpZigh WCl7YWIucHVzaC5hcHBseShhYixhaSl9ZWxzZXtpZihVLm5vZGVUeXBlPT09MSl7 Zm9yKHZhciBhYT0wO2FpW2FhXSE9bnVsbDthYSsrKXtpZihhaVthYV0mJihhaVth YV09PT10cnVlfHxhaVthYV0ubm9kZVR5cGU9PT0xJiZLKFUsYWlbYWFdKSkpe2Fi LnB1c2goYWZbYWFdKX19fWVsc2V7Zm9yKHZhciBhYT0wO2FpW2FhXSE9bnVsbDth YSsrKXtpZihhaVthYV0mJmFpW2FhXS5ub2RlVHlwZT09PTEpe2FiLnB1c2goYWZb YWFdKX19fX19ZWxzZXtFKGFpLGFiKX1pZihWKXtGKFYsVSxhYixhYyk7aWYoRyl7 aGFzRHVwbGljYXRlPWZhbHNlO2FiLnNvcnQoRyk7aWYoaGFzRHVwbGljYXRlKXtm b3IodmFyIGFhPTE7YWE8YWIubGVuZ3RoO2FhKyspe2lmKGFiW2FhXT09PWFiW2Fh LTFdKXthYi5zcGxpY2UoYWEtLSwxKX19fX19cmV0dXJuIGFifTtGLm1hdGNoZXM9 ZnVuY3Rpb24oVCxVKXtVTFNOUVc6O3JldHVybiBGKFQsbnVsbCxudWxsLFUpfTtG LmZpbmQ9ZnVuY3Rpb24oYWEsVCxhYil7VUxTTlFXOjt2YXIgWixYO2lmKCFhYSl7 cmV0dXJuW119Zm9yKHZhciBXPTAsVj1JLm9yZGVyLmxlbmd0aDtXPFY7VysrKXt2 YXIgWT1JLm9yZGVyW1ddLFg7aWYoKFg9SS5tYXRjaFtZXS5leGVjKGFhKSkpe3Zh ciBVPVJlZ0V4cC5sZWZ0Q29udGV4dDtpZihVLnN1YnN0cihVLmxlbmd0aC0xKSE9 PSJcXCIpe1hbMV09KFhbMV18fCIiKS5yZXBsYWNlKC9cXC9nLCIiKTtaPUkuZmlu ZFtZXShYLFQsYWIpO2lmKFohPW51bGwpe2FhPWFhLnJlcGxhY2UoSS5tYXRjaFtZ XSwiIik7YnJlYWt9fX19aWYoIVope1o9VC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi KiIpfXJldHVybntzZXQ6WixleHByOmFhfX07Ri5maWx0ZXI9ZnVuY3Rpb24oYWQs YWMsYWcsVyl7VUxTTlFXOjt2YXIgVj1hZCxhaT1bXSxhYT1hYyxZLFQsWj1hYyYm YWNbMF0mJlEoYWNbMF0pO3doaWxlKGFkJiZhYy5sZW5ndGgpe2Zvcih2YXIgYWIg aW4gSS5maWx0ZXIpe2lmKChZPUkubWF0Y2hbYWJdLmV4ZWMoYWQpKSE9bnVsbCl7 dmFyIFU9SS5maWx0ZXJbYWJdLGFoLGFmO1Q9ZmFsc2U7aWYoYWE9PWFpKXthaT1b XX1pZihJLnByZUZpbHRlclthYl0pe1k9SS5wcmVGaWx0ZXJbYWJdKFksYWEsYWcs YWksVyxaKTtpZighWSl7VD1haD10cnVlfWVsc2V7aWYoWT09PXRydWUpe2NvbnRp bnVlfX19aWYoWSl7Zm9yKHZhciBYPTA7KGFmPWFhW1hdKSE9bnVsbDtYKyspe2lm KGFmKXthaD1VKGFmLFksWCxhYSk7dmFyIGFlPVdeISFhaDtpZihhZyYmYWghPW51 bGwpe2lmKGFlKXtUPXRydWV9ZWxzZXthYVtYXT1mYWxzZX19ZWxzZXtpZihhZSl7 YWkucHVzaChhZik7VD10cnVlfX19fX1pZihhaCE9PWcpe2lmKCFhZyl7YWE9YWl9 YWQ9YWQucmVwbGFjZShJLm1hdGNoW2FiXSwiIik7aWYoIVQpe3JldHVybltdfWJy ZWFrfX19aWYoYWQ9PVYpe2lmKFQ9PW51bGwpe3Rocm93IlN5bnRheCBlcnJvciwg dW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIrYWR9ZWxzZXticmVha319Vj1hZH1y ZXR1cm4gYWF9O3ZhciBJPUYuc2VsZWN0b3JzPXtvcmRlcjpbIklEIiwiTkFNRSIs IlRBRyJdLG1hdGNoOntJRDovIygoPzpbXHdcdTAwYzAtXHVGRkZGXy1dfFxcLikr KS8sQ0xBU1M6L1wuKCg/Oltcd1x1MDBjMC1cdUZGRkZfLV18XFwuKSspLyxOQU1F Oi9cW25hbWU9WyciXSooKD86W1x3XHUwMGMwLVx1RkZGRl8tXXxcXC4pKylbJyJd KlxdLyxBVFRSOi9cW1xzKigoPzpbXHdcdTAwYzAtXHVGRkZGXy1dfFxcLikrKVxz Kig/OihcUz89KVxzKihbJyJdKikoLio/KVwzfClccypcXS8sVEFHOi9eKCg/Oltc d1x1MDBjMC1cdUZGRkZcKl8tXXxcXC4pKykvLENISUxEOi86KG9ubHl8bnRofGxh c3R8Zmlyc3QpLWNoaWxkKD86XCgoZXZlbnxvZGR8W1xkbistXSopXCkpPy8sUE9T Oi86KG50aHxlcXxndHxsdHxmaXJzdHxsYXN0fGV2ZW58b2RkKSg/OlwoKFxkKilc KSk/KD89W14tXXwkKS8sUFNFVURPOi86KCg/Oltcd1x1MDBjMC1cdUZGRkZfLV18 XFwuKSspKD86XCgoWyciXSopKCg/OlwoW15cKV0rXCl8W15cMlwoXCldKikrKVwy XCkpPy99LGF0dHJNYXA6eyJjbGFzcyI6ImNsYXNzTmFtZSIsImZvciI6Imh0bWxG b3IifSxhdHRySGFuZGxlOntocmVmOmZ1bmN0aW9uKFQpe1VMU05RVzo7cmV0dXJu IFQuZ2V0QXR0cmlidXRlKCJocmVmIil9fSxyZWxhdGl2ZTp7IisiOmZ1bmN0aW9u KGFhLFQsWil7VUxTTlFXOjt2YXIgWD10eXBlb2YgVD09PSJzdHJpbmciLGFiPVgm JiEvXFcvLnRlc3QoVCksWT1YJiYhYWI7aWYoYWImJiFaKXtUPVQudG9VcHBlckNh c2UoKX1mb3IodmFyIFc9MCxWPWFhLmxlbmd0aCxVO1c8VjtXKyspe2lmKChVPWFh W1ddKSl7d2hpbGUoKFU9VS5wcmV2aW91c1NpYmxpbmcpJiZVLm5vZGVUeXBlIT09 MSl7fWFhW1ddPVl8fFUmJlUubm9kZU5hbWU9PT1UP1V8fGZhbHNlOlU9PT1UfX1p ZihZKXtGLmZpbHRlcihULGFhLHRydWUpfX0sIj4iOmZ1bmN0aW9uKFosVSxhYSl7 VUxTTlFXOjt2YXIgWD10eXBlb2YgVT09PSJzdHJpbmciO2lmKFgmJiEvXFcvLnRl c3QoVSkpe1U9YWE/VTpVLnRvVXBwZXJDYXNlKCk7Zm9yKHZhciBWPTAsVD1aLmxl bmd0aDtWPFQ7VisrKXt2YXIgWT1aW1ZdO2lmKFkpe3ZhciBXPVkucGFyZW50Tm9k ZTtaW1ZdPVcubm9kZU5hbWU9PT1VP1c6ZmFsc2V9fX1lbHNle2Zvcih2YXIgVj0w LFQ9Wi5sZW5ndGg7VjxUO1YrKyl7dmFyIFk9WltWXTtpZihZKXtaW1ZdPVg/WS5w YXJlbnROb2RlOlkucGFyZW50Tm9kZT09PVV9fWlmKFgpe0YuZmlsdGVyKFUsWix0 cnVlKX19fSwiIjpmdW5jdGlvbihXLFUsWSl7VUxTTlFXOjt2YXIgVj1MKyssVD1T O2lmKCFVLm1hdGNoKC9cVy8pKXt2YXIgWD1VPVk/VTpVLnRvVXBwZXJDYXNlKCk7 VD1QfVQoInBhcmVudE5vZGUiLFUsVixXLFgsWSl9LCJ+IjpmdW5jdGlvbihXLFUs WSl7VUxTTlFXOjt2YXIgVj1MKyssVD1TO2lmKHR5cGVvZiBVPT09InN0cmluZyIm JiFVLm1hdGNoKC9cVy8pKXt2YXIgWD1VPVk/VTpVLnRvVXBwZXJDYXNlKCk7VD1Q fVQoInByZXZpb3VzU2libGluZyIsVSxWLFcsWCxZKX19LGZpbmQ6e0lEOmZ1bmN0 aW9uKFUsVixXKXtVTFNOUVc6O2lmKHR5cGVvZiBWLmdldEVsZW1lbnRCeUlkIT09 InVuZGVmaW5lZCImJiFXKXt2YXIgVD1WLmdldEVsZW1lbnRCeUlkKFVbMV0pO3Jl dHVybiBUP1tUXTpbXX19LE5BTUU6ZnVuY3Rpb24oVixZLFope1VMU05RVzo7aWYo dHlwZW9mIFkuZ2V0RWxlbWVudHNCeU5hbWUhPT0idW5kZWZpbmVkIil7dmFyIFU9 W10sWD1ZLmdldEVsZW1lbnRzQnlOYW1lKFZbMV0pO2Zvcih2YXIgVz0wLFQ9WC5s ZW5ndGg7VzxUO1crKyl7aWYoWFtXXS5nZXRBdHRyaWJ1dGUoIm5hbWUiKT09PVZb MV0pe1UucHVzaChYW1ddKX19cmV0dXJuIFUubGVuZ3RoPT09MD9udWxsOlV9fSxU QUc6ZnVuY3Rpb24oVCxVKXtVTFNOUVc6O3JldHVybiBVLmdldEVsZW1lbnRzQnlU YWdOYW1lKFRbMV0pfX0scHJlRmlsdGVyOntDTEFTUzpmdW5jdGlvbihXLFUsVixU LFosYWEpe1VMU05RVzo7Vz0iICIrV1sxXS5yZXBsYWNlKC9cXC9nLCIiKSsiICI7 aWYoYWEpe3JldHVybiBXfWZvcih2YXIgWD0wLFk7KFk9VVtYXSkhPW51bGw7WCsr KXtpZihZKXtpZihaXihZLmNsYXNzTmFtZSYmKCIgIitZLmNsYXNzTmFtZSsiICIp LmluZGV4T2YoVyk+PTApKXtpZighVil7VC5wdXNoKFkpfX1lbHNle2lmKFYpe1Vb WF09ZmFsc2V9fX19cmV0dXJuIGZhbHNlfSxJRDpmdW5jdGlvbihUKXtVTFNOUVc6 O3JldHVybiBUWzFdLnJlcGxhY2UoL1xcL2csIiIpfSxUQUc6ZnVuY3Rpb24oVSxU KXtVTFNOUVc6O2Zvcih2YXIgVj0wO1RbVl09PT1mYWxzZTtWKyspe31yZXR1cm4g VFtWXSYmUShUW1ZdKT9VWzFdOlVbMV0udG9VcHBlckNhc2UoKX0sQ0hJTEQ6ZnVu Y3Rpb24oVCl7VUxTTlFXOjtpZihUWzFdPT0ibnRoIil7dmFyIFU9LygtPykoXGQq KW4oKD86XCt8LSk/XGQqKS8uZXhlYyhUWzJdPT0iZXZlbiImJiIybiJ8fFRbMl09 PSJvZGQiJiYiMm4rMSJ8fCEvXEQvLnRlc3QoVFsyXSkmJiIwbisiK1RbMl18fFRb Ml0pO1RbMl09KFVbMV0rKFVbMl18fDEpKS0wO1RbM109VVszXS0wfVRbMF09TCsr O3JldHVybiBUfSxBVFRSOmZ1bmN0aW9uKFgsVSxWLFQsWSxaKXtVTFNOUVc6O3Zh ciBXPVhbMV0ucmVwbGFjZSgvXFwvZywiIik7aWYoIVomJkkuYXR0ck1hcFtXXSl7 WFsxXT1JLmF0dHJNYXBbV119aWYoWFsyXT09PSJ+PSIpe1hbNF09IiAiK1hbNF0r IiAifXJldHVybiBYfSxQU0VVRE86ZnVuY3Rpb24oWCxVLFYsVCxZKXtVTFNOUVc6 O2lmKFhbMV09PT0ibm90Iil7aWYoWFszXS5tYXRjaChSKS5sZW5ndGg+MXx8L15c dy8udGVzdChYWzNdKSl7WFszXT1GKFhbM10sbnVsbCxudWxsLFUpfWVsc2V7dmFy IFc9Ri5maWx0ZXIoWFszXSxVLFYsdHJ1ZV5ZKTtpZighVil7VC5wdXNoLmFwcGx5 KFQsVyl9cmV0dXJuIGZhbHNlfX1lbHNle2lmKEkubWF0Y2guUE9TLnRlc3QoWFsw XSl8fEkubWF0Y2guQ0hJTEQudGVzdChYWzBdKSl7cmV0dXJuIHRydWV9fXJldHVy biBYfSxQT1M6ZnVuY3Rpb24oVCl7VUxTTlFXOjtULnVuc2hpZnQodHJ1ZSk7cmV0 dXJuIFR9fSxmaWx0ZXJzOntlbmFibGVkOmZ1bmN0aW9uKFQpe1VMU05RVzo7cmV0 dXJuIFQuZGlzYWJsZWQ9PT1mYWxzZSYmVC50eXBlIT09ImhpZGRlbiJ9LGRpc2Fi bGVkOmZ1bmN0aW9uKFQpe1VMU05RVzo7cmV0dXJuIFQuZGlzYWJsZWQ9PT10cnVl fSxjaGVja2VkOmZ1bmN0aW9uKFQpe1VMU05RVzo7cmV0dXJuIFQuY2hlY2tlZD09 PXRydWV9LHNlbGVjdGVkOmZ1bmN0aW9uKFQpe1VMU05RVzo7VC5wYXJlbnROb2Rl LnNlbGVjdGVkSW5kZXg7cmV0dXJuIFQuc2VsZWN0ZWQ9PT10cnVlfSxwYXJlbnQ6 ZnVuY3Rpb24oVCl7VUxTTlFXOjtyZXR1cm4gISFULmZpcnN0Q2hpbGR9LGVtcHR5 OmZ1bmN0aW9uKFQpe1VMU05RVzo7cmV0dXJuICFULmZpcnN0Q2hpbGR9LGhhczpm dW5jdGlvbihWLFUsVCl7VUxTTlFXOjtyZXR1cm4gISFGKFRbM10sVikubGVuZ3Ro fSxoZWFkZXI6ZnVuY3Rpb24oVCl7VUxTTlFXOjtyZXR1cm4vaFxkL2kudGVzdChU Lm5vZGVOYW1lKX0sdGV4dDpmdW5jdGlvbihUKXtVTFNOUVc6O3JldHVybiJ0ZXh0 Ij09PVQudHlwZX0scmFkaW86ZnVuY3Rpb24oVCl7VUxTTlFXOjtyZXR1cm4icmFk aW8iPT09VC50eXBlfSxjaGVja2JveDpmdW5jdGlvbihUKXtVTFNOUVc6O3JldHVy biJjaGVja2JveCI9PT1ULnR5cGV9LGZpbGU6ZnVuY3Rpb24oVCl7VUxTTlFXOjty ZXR1cm4iZmlsZSI9PT1ULnR5cGV9LHBhc3N3b3JkOmZ1bmN0aW9uKFQpe1VMU05R Vzo7cmV0dXJuInBhc3N3b3JkIj09PVQudHlwZX0sc3VibWl0OmZ1bmN0aW9uKFQp e1VMU05RVzo7cmV0dXJuInN1Ym1pdCI9PT1ULnR5cGV9LGltYWdlOmZ1bmN0aW9u KFQpe1VMU05RVzo7cmV0dXJuImltYWdlIj09PVQudHlwZX0scmVzZXQ6ZnVuY3Rp b24oVCl7VUxTTlFXOjtyZXR1cm4icmVzZXQiPT09VC50eXBlfSxidXR0b246ZnVu Y3Rpb24oVCl7VUxTTlFXOjtyZXR1cm4iYnV0dG9uIj09PVQudHlwZXx8VC5ub2Rl TmFtZS50b1VwcGVyQ2FzZSgpPT09IkJVVFRPTiJ9LGlucHV0OmZ1bmN0aW9uKFQp e1VMU05RVzo7cmV0dXJuL2lucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24vaS50 ZXN0KFQubm9kZU5hbWUpfX0sc2V0RmlsdGVyczp7Zmlyc3Q6ZnVuY3Rpb24oVSxU KXtVTFNOUVc6O3JldHVybiBUPT09MH0sbGFzdDpmdW5jdGlvbihWLFUsVCxXKXtV TFNOUVc6O3JldHVybiBVPT09Vy5sZW5ndGgtMX0sZXZlbjpmdW5jdGlvbihVLFQp e1VMU05RVzo7cmV0dXJuIFQlMj09PTB9LG9kZDpmdW5jdGlvbihVLFQpe1VMU05R Vzo7cmV0dXJuIFQlMj09PTF9LGx0OmZ1bmN0aW9uKFYsVSxUKXtVTFNOUVc6O3Jl dHVybiBVPFRbM10tMH0sZ3Q6ZnVuY3Rpb24oVixVLFQpe1VMU05RVzo7cmV0dXJu IFU+VFszXS0wfSxudGg6ZnVuY3Rpb24oVixVLFQpe1VMU05RVzo7cmV0dXJuIFRb M10tMD09VX0sZXE6ZnVuY3Rpb24oVixVLFQpe1VMU05RVzo7cmV0dXJuIFRbM10t MD09VX19LGZpbHRlcjp7UFNFVURPOmZ1bmN0aW9uKFosVixXLGFhKXtVTFNOUVc6 O3ZhciBVPVZbMV0sWD1JLmZpbHRlcnNbVV07aWYoWCl7cmV0dXJuIFgoWixXLFYs YWEpfWVsc2V7aWYoVT09PSJjb250YWlucyIpe3JldHVybihaLnRleHRDb250ZW50 fHxaLmlubmVyVGV4dHx8IiIpLmluZGV4T2YoVlszXSk+PTB9ZWxzZXtpZihVPT09 Im5vdCIpe3ZhciBZPVZbM107Zm9yKHZhciBXPTAsVD1ZLmxlbmd0aDtXPFQ7Vysr KXtpZihZW1ddPT09Wil7cmV0dXJuIGZhbHNlfX1yZXR1cm4gdHJ1ZX19fX0sQ0hJ TEQ6ZnVuY3Rpb24oVCxXKXtVTFNOUVc6O3ZhciBaPVdbMV0sVT1UO3N3aXRjaCha KXtjYXNlIm9ubHkiOmNhc2UiZmlyc3QiOndoaWxlKFU9VS5wcmV2aW91c1NpYmxp bmcpe2lmKFUubm9kZVR5cGU9PT0xKXtyZXR1cm4gZmFsc2V9fWlmKFo9PSJmaXJz dCIpe3JldHVybiB0cnVlfVU9VDtjYXNlImxhc3QiOndoaWxlKFU9VS5uZXh0U2li bGluZyl7aWYoVS5ub2RlVHlwZT09PTEpe3JldHVybiBmYWxzZX19cmV0dXJuIHRy dWU7Y2FzZSJudGgiOnZhciBWPVdbMl0sYWM9V1szXTtpZihWPT0xJiZhYz09MCl7 cmV0dXJuIHRydWV9dmFyIFk9V1swXSxhYj1ULnBhcmVudE5vZGU7aWYoYWImJihh Yi5zaXpjYWNoZSE9PVl8fCFULm5vZGVJbmRleCkpe3ZhciBYPTA7Zm9yKFU9YWIu Zmlyc3RDaGlsZDtVO1U9VS5uZXh0U2libGluZyl7aWYoVS5ub2RlVHlwZT09PTEp e1Uubm9kZUluZGV4PSsrWH19YWIuc2l6Y2FjaGU9WX12YXIgYWE9VC5ub2RlSW5k ZXgtYWM7aWYoVj09MCl7cmV0dXJuIGFhPT0wfWVsc2V7cmV0dXJuKGFhJVY9PTAm JmFhL1Y+PTApfX19LElEOmZ1bmN0aW9uKFUsVCl7VUxTTlFXOjtyZXR1cm4gVS5u b2RlVHlwZT09PTEmJlUuZ2V0QXR0cmlidXRlKCJpZCIpPT09VH0sVEFHOmZ1bmN0 aW9uKFUsVCl7VUxTTlFXOjtyZXR1cm4oVD09PSIqIiYmVS5ub2RlVHlwZT09PTEp fHxVLm5vZGVOYW1lPT09VH0sQ0xBU1M6ZnVuY3Rpb24oVSxUKXtVTFNOUVc6O3Jl dHVybigiICIrKFUuY2xhc3NOYW1lfHxVLmdldEF0dHJpYnV0ZSgiY2xhc3MiKSkr IiAiKS5pbmRleE9mKFQpPi0xfSxBVFRSOmZ1bmN0aW9uKFksVyl7VUxTTlFXOjt2 YXIgVj1XWzFdLFQ9SS5hdHRySGFuZGxlW1ZdP0kuYXR0ckhhbmRsZVtWXShZKTpZ W1ZdIT1udWxsP1lbVl06WS5nZXRBdHRyaWJ1dGUoViksWj1UKyIiLFg9V1syXSxV PVdbNF07cmV0dXJuIFQ9PW51bGw/WD09PSIhPSI6WD09PSI9Ij9aPT09VTpYPT09 Iio9Ij9aLmluZGV4T2YoVSk+PTA6WD09PSJ+PSI/KCIgIitaKyIgIikuaW5kZXhP ZihVKT49MDohVT9aJiZUIT09ZmFsc2U6WD09PSIhPSI/WiE9VTpYPT09Il49Ij9a LmluZGV4T2YoVSk9PT0wOlg9PT0iJD0iP1ouc3Vic3RyKFoubGVuZ3RoLVUubGVu Z3RoKT09PVU6WD09PSJ8PSI/Wj09PVV8fFouc3Vic3RyKDAsVS5sZW5ndGgrMSk9 PT1VKyItIjpmYWxzZX0sUE9TOmZ1bmN0aW9uKFgsVSxWLFkpe1VMU05RVzo7dmFy IFQ9VVsyXSxXPUkuc2V0RmlsdGVyc1tUXTtpZihXKXtyZXR1cm4gVyhYLFYsVSxZ KX19fX07dmFyIE09SS5tYXRjaC5QT1M7Zm9yKHZhciBPIGluIEkubWF0Y2gpe0ku bWF0Y2hbT109UmVnRXhwKEkubWF0Y2hbT10uc291cmNlKy8oPyFbXlxbXSpcXSko PyFbXlwoXSpcKSkvLnNvdXJjZSl9dmFyIEU9ZnVuY3Rpb24oVSxUKXtVTFNOUVc6 O1U9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoVSk7aWYoVCl7VC5wdXNoLmFw cGx5KFQsVSk7cmV0dXJuIFR9cmV0dXJuIFV9O3RyeXtBcnJheS5wcm90b3R5cGUu c2xpY2UuY2FsbChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2hpbGROb2Rlcyl9 Y2F0Y2goTil7RT1mdW5jdGlvbihYLFcpe1VMU05RVzo7dmFyIFU9V3x8W107aWYo SC5jYWxsKFgpPT09IltvYmplY3QgQXJyYXldIil7QXJyYXkucHJvdG90eXBlLnB1 c2guYXBwbHkoVSxYKX1lbHNle2lmKHR5cGVvZiBYLmxlbmd0aD09PSJudW1iZXIi KXtmb3IodmFyIFY9MCxUPVgubGVuZ3RoO1Y8VDtWKyspe1UucHVzaChYW1ZdKX19 ZWxzZXtmb3IodmFyIFY9MDtYW1ZdO1YrKyl7VS5wdXNoKFhbVl0pfX19cmV0dXJu IFV9fXZhciBHO2lmKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jb21wYXJlRG9j dW1lbnRQb3NpdGlvbil7Rz1mdW5jdGlvbihVLFQpe1VMU05RVzo7dmFyIFY9VS5j b21wYXJlRG9jdW1lbnRQb3NpdGlvbihUKSY0Py0xOlU9PT1UPzA6MTtpZihWPT09 MCl7aGFzRHVwbGljYXRlPXRydWV9cmV0dXJuIFZ9fWVsc2V7aWYoInNvdXJjZUlu ZGV4IiBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpe0c9ZnVuY3Rpb24oVSxU KXtVTFNOUVc6O3ZhciBWPVUuc291cmNlSW5kZXgtVC5zb3VyY2VJbmRleDtpZihW PT09MCl7aGFzRHVwbGljYXRlPXRydWV9cmV0dXJuIFZ9fWVsc2V7aWYoZG9jdW1l bnQuY3JlYXRlUmFuZ2Upe0c9ZnVuY3Rpb24oVyxVKXtVTFNOUVc6O3ZhciBWPVcu b3duZXJEb2N1bWVudC5jcmVhdGVSYW5nZSgpLFQ9VS5vd25lckRvY3VtZW50LmNy ZWF0ZVJhbmdlKCk7Vi5zZWxlY3ROb2RlKFcpO1YuY29sbGFwc2UodHJ1ZSk7VC5z ZWxlY3ROb2RlKFUpO1QuY29sbGFwc2UodHJ1ZSk7dmFyIFg9Vi5jb21wYXJlQm91 bmRhcnlQb2ludHMoUmFuZ2UuU1RBUlRfVE9fRU5ELFQpO2lmKFg9PT0wKXtoYXNE dXBsaWNhdGU9dHJ1ZX1yZXR1cm4gWH19fX0oZnVuY3Rpb24oKXtVTFNOUVc6O3Zh ciBVPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImZvcm0iKSxWPSJzY3JpcHQiKyhu ZXcgRGF0ZSkuZ2V0VGltZSgpO1UuaW5uZXJIVE1MPSI8aW5wdXQgbmFtZT0nIitW KyInLz4iO3ZhciBUPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtULmluc2VydEJl Zm9yZShVLFQuZmlyc3RDaGlsZCk7aWYoISFkb2N1bWVudC5nZXRFbGVtZW50QnlJ ZChWKSl7SS5maW5kLklEPWZ1bmN0aW9uKFgsWSxaKXtVTFNOUVc6O2lmKHR5cGVv ZiBZLmdldEVsZW1lbnRCeUlkIT09InVuZGVmaW5lZCImJiFaKXt2YXIgVz1ZLmdl dEVsZW1lbnRCeUlkKFhbMV0pO3JldHVybiBXP1cuaWQ9PT1YWzFdfHx0eXBlb2Yg Vy5nZXRBdHRyaWJ1dGVOb2RlIT09InVuZGVmaW5lZCImJlcuZ2V0QXR0cmlidXRl Tm9kZSgiaWQiKS5ub2RlVmFsdWU9PT1YWzFdP1tXXTpnOltdfX07SS5maWx0ZXIu SUQ9ZnVuY3Rpb24oWSxXKXtVTFNOUVc6O3ZhciBYPXR5cGVvZiBZLmdldEF0dHJp YnV0ZU5vZGUhPT0idW5kZWZpbmVkIiYmWS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIp O3JldHVybiBZLm5vZGVUeXBlPT09MSYmWCYmWC5ub2RlVmFsdWU9PT1XfX1ULnJl bW92ZUNoaWxkKFUpfSkoKTsoZnVuY3Rpb24oKXtVTFNOUVc6O3ZhciBUPWRvY3Vt ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO1QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu Y3JlYXRlQ29tbWVudCgiIikpO2lmKFQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioi KS5sZW5ndGg+MCl7SS5maW5kLlRBRz1mdW5jdGlvbihVLFkpe1VMU05RVzo7dmFy IFg9WS5nZXRFbGVtZW50c0J5VGFnTmFtZShVWzFdKTtpZihVWzFdPT09IioiKXt2 YXIgVz1bXTtmb3IodmFyIFY9MDtYW1ZdO1YrKyl7aWYoWFtWXS5ub2RlVHlwZT09 PTEpe1cucHVzaChYW1ZdKX19WD1XfXJldHVybiBYfX1ULmlubmVySFRNTD0iPGEg aHJlZj0nIyc+PC9hPiI7aWYoVC5maXJzdENoaWxkJiZ0eXBlb2YgVC5maXJzdENo aWxkLmdldEF0dHJpYnV0ZSE9PSJ1bmRlZmluZWQiJiZULmZpcnN0Q2hpbGQuZ2V0 QXR0cmlidXRlKCJocmVmIikhPT0iIyIpe0kuYXR0ckhhbmRsZS5ocmVmPWZ1bmN0 aW9uKFUpe1VMU05RVzo7cmV0dXJuIFUuZ2V0QXR0cmlidXRlKCJocmVmIiwyKX19 fSkoKTtpZihkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKXsoZnVuY3Rpb24oKXtV TFNOUVc6O3ZhciBUPUYsVT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtV LmlubmVySFRNTD0iPHAgY2xhc3M9J1RFU1QnPjwvcD4iO2lmKFUucXVlcnlTZWxl Y3RvckFsbCYmVS5xdWVyeVNlbGVjdG9yQWxsKCIuVEVTVCIpLmxlbmd0aD09PTAp e3JldHVybn1GPWZ1bmN0aW9uKFksWCxWLFcpe1VMU05RVzo7WD1YfHxkb2N1bWVu dDtpZighVyYmWC5ub2RlVHlwZT09PTkmJiFRKFgpKXt0cnl7cmV0dXJuIEUoWC5x dWVyeVNlbGVjdG9yQWxsKFkpLFYpfWNhdGNoKFope319cmV0dXJuIFQoWSxYLFYs Vyl9O0YuZmluZD1ULmZpbmQ7Ri5maWx0ZXI9VC5maWx0ZXI7Ri5zZWxlY3RvcnM9 VC5zZWxlY3RvcnM7Ri5tYXRjaGVzPVQubWF0Y2hlc30pKCl9aWYoZG9jdW1lbnQu Z2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50 LmdldEVsZW1lbnRzQnlDbGFzc05hbWUpeyhmdW5jdGlvbigpe1VMU05RVzo7dmFy IFQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7VC5pbm5lckhUTUw9Ijxk aXYgY2xhc3M9J3Rlc3QgZSc+PC9kaXY+PGRpdiBjbGFzcz0ndGVzdCc+PC9kaXY+ IjtpZihULmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImUiKS5sZW5ndGg9PT0wKXty ZXR1cm59VC5sYXN0Q2hpbGQuY2xhc3NOYW1lPSJlIjtpZihULmdldEVsZW1lbnRz QnlDbGFzc05hbWUoImUiKS5sZW5ndGg9PT0xKXtyZXR1cm59SS5vcmRlci5zcGxp Y2UoMSwwLCJDTEFTUyIpO0kuZmluZC5DTEFTUz1mdW5jdGlvbihVLFYsVyl7VUxT TlFXOjtpZih0eXBlb2YgVi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lIT09InVuZGVm aW5lZCImJiFXKXtyZXR1cm4gVi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFVbMV0p fX19KSgpfWZ1bmN0aW9uIFAoVSxaLFksYWQsYWEsYWMpe1VMU05RVzo7dmFyIGFi PVU9PSJwcmV2aW91c1NpYmxpbmciJiYhYWM7Zm9yKHZhciBXPTAsVj1hZC5sZW5n dGg7VzxWO1crKyl7dmFyIFQ9YWRbV107aWYoVCl7aWYoYWImJlQubm9kZVR5cGU9 PT0xKXtULnNpemNhY2hlPVk7VC5zaXpzZXQ9V31UPVRbVV07dmFyIFg9ZmFsc2U7 d2hpbGUoVCl7aWYoVC5zaXpjYWNoZT09PVkpe1g9YWRbVC5zaXpzZXRdO2JyZWFr fWlmKFQubm9kZVR5cGU9PT0xJiYhYWMpe1Quc2l6Y2FjaGU9WTtULnNpenNldD1X fWlmKFQubm9kZU5hbWU9PT1aKXtYPVQ7YnJlYWt9VD1UW1VdfWFkW1ddPVh9fX1m dW5jdGlvbiBTKFUsWixZLGFkLGFhLGFjKXtVTFNOUVc6O3ZhciBhYj1VPT0icHJl dmlvdXNTaWJsaW5nIiYmIWFjO2Zvcih2YXIgVz0wLFY9YWQubGVuZ3RoO1c8VjtX Kyspe3ZhciBUPWFkW1ddO2lmKFQpe2lmKGFiJiZULm5vZGVUeXBlPT09MSl7VC5z aXpjYWNoZT1ZO1Quc2l6c2V0PVd9VD1UW1VdO3ZhciBYPWZhbHNlO3doaWxlKFQp e2lmKFQuc2l6Y2FjaGU9PT1ZKXtYPWFkW1Quc2l6c2V0XTticmVha31pZihULm5v ZGVUeXBlPT09MSl7aWYoIWFjKXtULnNpemNhY2hlPVk7VC5zaXpzZXQ9V31pZih0 eXBlb2YgWiE9PSJzdHJpbmciKXtpZihUPT09Wil7WD10cnVlO2JyZWFrfX1lbHNl e2lmKEYuZmlsdGVyKFosW1RdKS5sZW5ndGg+MCl7WD1UO2JyZWFrfX19VD1UW1Vd fWFkW1ddPVh9fX12YXIgSz1kb2N1bWVudC5jb21wYXJlRG9jdW1lbnRQb3NpdGlv bj9mdW5jdGlvbihVLFQpe1VMU05RVzo7cmV0dXJuIFUuY29tcGFyZURvY3VtZW50 UG9zaXRpb24oVCkmMTZ9OmZ1bmN0aW9uKFUsVCl7VUxTTlFXOjtyZXR1cm4gVSE9 PVQmJihVLmNvbnRhaW5zP1UuY29udGFpbnMoVCk6dHJ1ZSl9O3ZhciBRPWZ1bmN0 aW9uKFQpe1VMU05RVzo7cmV0dXJuIFQubm9kZVR5cGU9PT05JiZULmRvY3VtZW50 RWxlbWVudC5ub2RlTmFtZSE9PSJIVE1MInx8ISFULm93bmVyRG9jdW1lbnQmJlEo VC5vd25lckRvY3VtZW50KX07dmFyIEo9ZnVuY3Rpb24oVCxhYSl7VUxTTlFXOjt2 YXIgVz1bXSxYPSIiLFksVj1hYS5ub2RlVHlwZT9bYWFdOmFhO3doaWxlKChZPUku bWF0Y2guUFNFVURPLmV4ZWMoVCkpKXtYKz1ZWzBdO1Q9VC5yZXBsYWNlKEkubWF0 Y2guUFNFVURPLCIiKX1UPUkucmVsYXRpdmVbVF0/VCsiKiI6VDtmb3IodmFyIFo9 MCxVPVYubGVuZ3RoO1o8VTtaKyspe0YoVCxWW1pdLFcpfXJldHVybiBGLmZpbHRl cihYLFcpfTtvLmZpbmQ9RjtvLmZpbHRlcj1GLmZpbHRlcjtvLmV4cHI9Ri5zZWxl Y3RvcnM7by5leHByWyI6Il09by5leHByLmZpbHRlcnM7Ri5zZWxlY3RvcnMuZmls dGVycy5oaWRkZW49ZnVuY3Rpb24oVCl7VUxTTlFXOjtyZXR1cm4gVC5vZmZzZXRX aWR0aD09PTB8fFQub2Zmc2V0SGVpZ2h0PT09MH07Ri5zZWxlY3RvcnMuZmlsdGVy cy52aXNpYmxlPWZ1bmN0aW9uKFQpe1VMU05RVzo7cmV0dXJuIFQub2Zmc2V0V2lk dGg+MHx8VC5vZmZzZXRIZWlnaHQ+MH07Ri5zZWxlY3RvcnMuZmlsdGVycy5hbmlt YXRlZD1mdW5jdGlvbihUKXtVTFNOUVc6O3JldHVybiBvLmdyZXAoby50aW1lcnMs ZnVuY3Rpb24oVSl7VUxTTlFXOjtyZXR1cm4gVD09PVUuZWxlbX0pLmxlbmd0aH07 by5tdWx0aUZpbHRlcj1mdW5jdGlvbihWLFQsVSl7VUxTTlFXOjtpZihVKXtWPSI6 bm90KCIrVisiKSJ9cmV0dXJuIEYubWF0Y2hlcyhWLFQpfTtvLmRpcj1mdW5jdGlv bihWLFUpe1VMU05RVzo7dmFyIFQ9W10sVz1WW1VdO3doaWxlKFcmJlchPWRvY3Vt ZW50KXtpZihXLm5vZGVUeXBlPT0xKXtULnB1c2goVyl9Vz1XW1VdfXJldHVybiBU fTtvLm50aD1mdW5jdGlvbihYLFQsVixXKXtVTFNOUVc6O1Q9VHx8MTt2YXIgVT0w O2Zvcig7WDtYPVhbVl0pe2lmKFgubm9kZVR5cGU9PTEmJisrVT09VCl7YnJlYWt9 fXJldHVybiBYfTtvLnNpYmxpbmc9ZnVuY3Rpb24oVixVKXtVTFNOUVc6O3ZhciBU PVtdO2Zvcig7VjtWPVYubmV4dFNpYmxpbmcpe2lmKFYubm9kZVR5cGU9PTEmJlYh PVUpe1QucHVzaChWKX19cmV0dXJuIFR9O3JldHVybjtsLlNpenpsZT1GfSkoKTtv LmV2ZW50PXthZGQ6ZnVuY3Rpb24oSSxGLEgsSyl7VUxTTlFXOjtpZihJLm5vZGVU eXBlPT0zfHxJLm5vZGVUeXBlPT04KXtyZXR1cm59aWYoSS5zZXRJbnRlcnZhbCYm SSE9bCl7ST1sfWlmKCFILmd1aWQpe0guZ3VpZD10aGlzLmd1aWQrK31pZihLIT09 Zyl7dmFyIEc9SDtIPXRoaXMucHJveHkoRyk7SC5kYXRhPUt9dmFyIEU9by5kYXRh KEksImV2ZW50cyIpfHxvLmRhdGEoSSwiZXZlbnRzIix7fSksSj1vLmRhdGEoSSwi aGFuZGxlIil8fG8uZGF0YShJLCJoYW5kbGUiLGZ1bmN0aW9uKCl7VUxTTlFXOjty ZXR1cm4gdHlwZW9mIG8hPT0idW5kZWZpbmVkIiYmIW8uZXZlbnQudHJpZ2dlcmVk P28uZXZlbnQuaGFuZGxlLmFwcGx5KGFyZ3VtZW50cy5jYWxsZWUuZWxlbSxhcmd1 bWVudHMpOmd9KTtKLmVsZW09STtvLmVhY2goRi5zcGxpdCgvXHMrLyksZnVuY3Rp b24oTSxOKXtVTFNOUVc6O3ZhciBPPU4uc3BsaXQoIi4iKTtOPU8uc2hpZnQoKTtI LnR5cGU9Ty5zbGljZSgpLnNvcnQoKS5qb2luKCIuIik7dmFyIEw9RVtOXTtpZihv LmV2ZW50LnNwZWNpYWxBbGxbTl0pe28uZXZlbnQuc3BlY2lhbEFsbFtOXS5zZXR1 cC5jYWxsKEksSyxPKX1pZighTCl7TD1FW05dPXt9O2lmKCFvLmV2ZW50LnNwZWNp YWxbTl18fG8uZXZlbnQuc3BlY2lhbFtOXS5zZXR1cC5jYWxsKEksSyxPKT09PWZh bHNlKXtpZihJLmFkZEV2ZW50TGlzdGVuZXIpe0kuYWRkRXZlbnRMaXN0ZW5lcihO LEosZmFsc2UpfWVsc2V7aWYoSS5hdHRhY2hFdmVudCl7SS5hdHRhY2hFdmVudCgi b24iK04sSil9fX19TFtILmd1aWRdPUg7by5ldmVudC5nbG9iYWxbTl09dHJ1ZX0p O0k9bnVsbH0sZ3VpZDoxLGdsb2JhbDp7fSxyZW1vdmU6ZnVuY3Rpb24oSyxILEop e1VMU05RVzo7aWYoSy5ub2RlVHlwZT09M3x8Sy5ub2RlVHlwZT09OCl7cmV0dXJu fXZhciBHPW8uZGF0YShLLCJldmVudHMiKSxGLEU7aWYoRyl7aWYoSD09PWd8fCh0 eXBlb2YgSD09PSJzdHJpbmciJiZILmNoYXJBdCgwKT09Ii4iKSl7Zm9yKHZhciBJ IGluIEcpe3RoaXMucmVtb3ZlKEssSSsoSHx8IiIpKX19ZWxzZXtpZihILnR5cGUp e0o9SC5oYW5kbGVyO0g9SC50eXBlfW8uZWFjaChILnNwbGl0KC9ccysvKSxmdW5j dGlvbihNLE8pe1VMU05RVzo7dmFyIFE9Ty5zcGxpdCgiLiIpO089US5zaGlmdCgp O3ZhciBOPVJlZ0V4cCgiKF58XFwuKSIrUS5zbGljZSgpLnNvcnQoKS5qb2luKCIu KlxcLiIpKyIoXFwufCQpIik7aWYoR1tPXSl7aWYoSil7ZGVsZXRlIEdbT11bSi5n dWlkXX1lbHNle2Zvcih2YXIgUCBpbiBHW09dKXtpZihOLnRlc3QoR1tPXVtQXS50 eXBlKSl7ZGVsZXRlIEdbT11bUF19fX1pZihvLmV2ZW50LnNwZWNpYWxBbGxbT10p e28uZXZlbnQuc3BlY2lhbEFsbFtPXS50ZWFyZG93bi5jYWxsKEssUSl9Zm9yKEYg aW4gR1tPXSl7YnJlYWt9aWYoIUYpe2lmKCFvLmV2ZW50LnNwZWNpYWxbT118fG8u ZXZlbnQuc3BlY2lhbFtPXS50ZWFyZG93bi5jYWxsKEssUSk9PT1mYWxzZSl7aWYo Sy5yZW1vdmVFdmVudExpc3RlbmVyKXtLLnJlbW92ZUV2ZW50TGlzdGVuZXIoTyxv LmRhdGEoSywiaGFuZGxlIiksZmFsc2UpfWVsc2V7aWYoSy5kZXRhY2hFdmVudCl7 Sy5kZXRhY2hFdmVudCgib24iK08sby5kYXRhKEssImhhbmRsZSIpKX19fUY9bnVs bDtkZWxldGUgR1tPXX19fSl9Zm9yKEYgaW4gRyl7YnJlYWt9aWYoIUYpe3ZhciBM PW8uZGF0YShLLCJoYW5kbGUiKTtpZihMKXtMLmVsZW09bnVsbH1vLnJlbW92ZURh dGEoSywiZXZlbnRzIik7by5yZW1vdmVEYXRhKEssImhhbmRsZSIpfX19LHRyaWdn ZXI6ZnVuY3Rpb24oSSxLLEgsRSl7VUxTTlFXOjt2YXIgRz1JLnR5cGV8fEk7aWYo IUUpe0k9dHlwZW9mIEk9PT0ib2JqZWN0Ij9JW2hdP0k6by5leHRlbmQoby5FdmVu dChHKSxJKTpvLkV2ZW50KEcpO2lmKEcuaW5kZXhPZigiISIpPj0wKXtJLnR5cGU9 Rz1HLnNsaWNlKDAsLTEpO0kuZXhjbHVzaXZlPXRydWV9aWYoIUgpe0kuc3RvcFBy b3BhZ2F0aW9uKCk7aWYodGhpcy5nbG9iYWxbR10pe28uZWFjaChvLmNhY2hlLGZ1 bmN0aW9uKCl7VUxTTlFXOjtpZih0aGlzLmV2ZW50cyYmdGhpcy5ldmVudHNbR10p e28uZXZlbnQudHJpZ2dlcihJLEssdGhpcy5oYW5kbGUuZWxlbSl9fSl9fWlmKCFI fHxILm5vZGVUeXBlPT0zfHxILm5vZGVUeXBlPT04KXtyZXR1cm4gZ31JLnJlc3Vs dD1nO0kudGFyZ2V0PUg7Sz1vLm1ha2VBcnJheShLKTtLLnVuc2hpZnQoSSl9SS5j dXJyZW50VGFyZ2V0PUg7dmFyIEo9by5kYXRhKEgsImhhbmRsZSIpO2lmKEope0ou YXBwbHkoSCxLKX1pZigoIUhbR118fChvLm5vZGVOYW1lKEgsImEiKSYmRz09ImNs aWNrIikpJiZIWyJvbiIrR10mJkhbIm9uIitHXS5hcHBseShILEspPT09ZmFsc2Up e0kucmVzdWx0PWZhbHNlfWlmKCFFJiZIW0ddJiYhSS5pc0RlZmF1bHRQcmV2ZW50 ZWQoKSYmIShvLm5vZGVOYW1lKEgsImEiKSYmRz09ImNsaWNrIikpe3RoaXMudHJp Z2dlcmVkPXRydWU7dHJ5e0hbR10oKX1jYXRjaChMKXt9fXRoaXMudHJpZ2dlcmVk PWZhbHNlO2lmKCFJLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpe3ZhciBGPUgucGFy ZW50Tm9kZXx8SC5vd25lckRvY3VtZW50O2lmKEYpe28uZXZlbnQudHJpZ2dlcihJ LEssRix0cnVlKX19fSxoYW5kbGU6ZnVuY3Rpb24oSyl7VUxTTlFXOjt2YXIgSixF O0s9YXJndW1lbnRzWzBdPW8uZXZlbnQuZml4KEt8fGwuZXZlbnQpO0suY3VycmVu dFRhcmdldD10aGlzO3ZhciBMPUsudHlwZS5zcGxpdCgiLiIpO0sudHlwZT1MLnNo aWZ0KCk7Sj0hTC5sZW5ndGgmJiFLLmV4Y2x1c2l2ZTt2YXIgST1SZWdFeHAoIihe fFxcLikiK0wuc2xpY2UoKS5zb3J0KCkuam9pbigiLipcXC4iKSsiKFxcLnwkKSIp O0U9KG8uZGF0YSh0aGlzLCJldmVudHMiKXx8e30pW0sudHlwZV07Zm9yKHZhciBH IGluIEUpe3ZhciBIPUVbR107aWYoSnx8SS50ZXN0KEgudHlwZSkpe0suaGFuZGxl cj1IO0suZGF0YT1ILmRhdGE7dmFyIEY9SC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7 aWYoRiE9PWcpe0sucmVzdWx0PUY7aWYoRj09PWZhbHNlKXtLLnByZXZlbnREZWZh dWx0KCk7Sy5zdG9wUHJvcGFnYXRpb24oKX19aWYoSy5pc0ltbWVkaWF0ZVByb3Bh Z2F0aW9uU3RvcHBlZCgpKXticmVha319fX0scHJvcHM6ImFsdEtleSBhdHRyQ2hh bmdlIGF0dHJOYW1lIGJ1YmJsZXMgYnV0dG9uIGNhbmNlbGFibGUgY2hhckNvZGUg Y2xpZW50WCBjbGllbnRZIGN0cmxLZXkgY3VycmVudFRhcmdldCBkYXRhIGRldGFp bCBldmVudFBoYXNlIGZyb21FbGVtZW50IGhhbmRsZXIga2V5Q29kZSBtZXRhS2V5 IG5ld1ZhbHVlIG9yaWdpbmFsVGFyZ2V0IHBhZ2VYIHBhZ2VZIHByZXZWYWx1ZSBy ZWxhdGVkTm9kZSByZWxhdGVkVGFyZ2V0IHNjcmVlblggc2NyZWVuWSBzaGlmdEtl eSBzcmNFbGVtZW50IHRhcmdldCB0b0VsZW1lbnQgdmlldyB3aGVlbERlbHRhIHdo aWNoIi5zcGxpdCgiICIpLGZpeDpmdW5jdGlvbihIKXtVTFNOUVc6O2lmKEhbaF0p e3JldHVybiBIfXZhciBGPUg7SD1vLkV2ZW50KEYpO2Zvcih2YXIgRz10aGlzLnBy b3BzLmxlbmd0aCxKO0c7KXtKPXRoaXMucHJvcHNbLS1HXTtIW0pdPUZbSl19aWYo IUgudGFyZ2V0KXtILnRhcmdldD1ILnNyY0VsZW1lbnR8fGRvY3VtZW50fWlmKEgu dGFyZ2V0Lm5vZGVUeXBlPT0zKXtILnRhcmdldD1ILnRhcmdldC5wYXJlbnROb2Rl fWlmKCFILnJlbGF0ZWRUYXJnZXQmJkguZnJvbUVsZW1lbnQpe0gucmVsYXRlZFRh cmdldD1ILmZyb21FbGVtZW50PT1ILnRhcmdldD9ILnRvRWxlbWVudDpILmZyb21F bGVtZW50fWlmKEgucGFnZVg9PW51bGwmJkguY2xpZW50WCE9bnVsbCl7dmFyIEk9 ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LEU9ZG9jdW1lbnQuYm9keTtILnBhZ2VY PUguY2xpZW50WCsoSSYmSS5zY3JvbGxMZWZ0fHxFJiZFLnNjcm9sbExlZnR8fDAp LShJLmNsaWVudExlZnR8fDApO0gucGFnZVk9SC5jbGllbnRZKyhJJiZJLnNjcm9s bFRvcHx8RSYmRS5zY3JvbGxUb3B8fDApLShJLmNsaWVudFRvcHx8MCl9aWYoIUgu d2hpY2gmJigoSC5jaGFyQ29kZXx8SC5jaGFyQ29kZT09PTApP0guY2hhckNvZGU6 SC5rZXlDb2RlKSl7SC53aGljaD1ILmNoYXJDb2RlfHxILmtleUNvZGV9aWYoIUgu bWV0YUtleSYmSC5jdHJsS2V5KXtILm1ldGFLZXk9SC5jdHJsS2V5fWlmKCFILndo aWNoJiZILmJ1dHRvbil7SC53aGljaD0oSC5idXR0b24mMT8xOihILmJ1dHRvbiYy PzM6KEguYnV0dG9uJjQ/MjowKSkpfXJldHVybiBIfSxwcm94eTpmdW5jdGlvbihG LEUpe1VMU05RVzo7RT1FfHxmdW5jdGlvbigpe1VMU05RVzo7cmV0dXJuIEYuYXBw bHkodGhpcyxhcmd1bWVudHMpfTtFLmd1aWQ9Ri5ndWlkPUYuZ3VpZHx8RS5ndWlk fHx0aGlzLmd1aWQrKztyZXR1cm4gRX0sc3BlY2lhbDp7cmVhZHk6e3NldHVwOkIs dGVhcmRvd246ZnVuY3Rpb24oKXt9fX0sc3BlY2lhbEFsbDp7bGl2ZTp7c2V0dXA6 ZnVuY3Rpb24oRSxGKXtVTFNOUVc6O28uZXZlbnQuYWRkKHRoaXMsRlswXSxjKX0s dGVhcmRvd246ZnVuY3Rpb24oRyl7VUxTTlFXOjtpZihHLmxlbmd0aCl7dmFyIEU9 MCxGPVJlZ0V4cCgiKF58XFwuKSIrR1swXSsiKFxcLnwkKSIpO28uZWFjaCgoby5k YXRhKHRoaXMsImV2ZW50cyIpLmxpdmV8fHt9KSxmdW5jdGlvbigpe1VMU05RVzo7 aWYoRi50ZXN0KHRoaXMudHlwZSkpe0UrK319KTtpZihFPDEpe28uZXZlbnQucmVt b3ZlKHRoaXMsR1swXSxjKX19fX19fTtvLkV2ZW50PWZ1bmN0aW9uKEUpe1VMU05R Vzo7aWYoIXRoaXMucHJldmVudERlZmF1bHQpe3JldHVybiBuZXcgby5FdmVudChF KX1pZihFJiZFLnR5cGUpe3RoaXMub3JpZ2luYWxFdmVudD1FO3RoaXMudHlwZT1F LnR5cGV9ZWxzZXt0aGlzLnR5cGU9RX10aGlzLnRpbWVTdGFtcD1lKCk7dGhpc1to XT10cnVlfTtmdW5jdGlvbiBrKCl7VUxTTlFXOjtyZXR1cm4gZmFsc2V9ZnVuY3Rp b24gdSgpe1VMU05RVzo7cmV0dXJuIHRydWV9by5FdmVudC5wcm90b3R5cGU9e3By ZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7VUxTTlFXOjt0aGlzLmlzRGVmYXVsdFBy ZXZlbnRlZD11O3ZhciBFPXRoaXMub3JpZ2luYWxFdmVudDtpZighRSl7cmV0dXJu fWlmKEUucHJldmVudERlZmF1bHQpe0UucHJldmVudERlZmF1bHQoKX1FLnJldHVy blZhbHVlPWZhbHNlfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXtVTFNOUVc6 O3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9dTt2YXIgRT10aGlzLm9yaWdpbmFs RXZlbnQ7aWYoIUUpe3JldHVybn1pZihFLnN0b3BQcm9wYWdhdGlvbil7RS5zdG9w UHJvcGFnYXRpb24oKX1FLmNhbmNlbEJ1YmJsZT10cnVlfSxzdG9wSW1tZWRpYXRl UHJvcGFnYXRpb246ZnVuY3Rpb24oKXtVTFNOUVc6O3RoaXMuaXNJbW1lZGlhdGVQ cm9wYWdhdGlvblN0b3BwZWQ9dTt0aGlzLnN0b3BQcm9wYWdhdGlvbigpfSxpc0Rl ZmF1bHRQcmV2ZW50ZWQ6ayxpc1Byb3BhZ2F0aW9uU3RvcHBlZDprLGlzSW1tZWRp YXRlUHJvcGFnYXRpb25TdG9wcGVkOmt9O3ZhciBhPWZ1bmN0aW9uKEYpe1VMU05R Vzo7dmFyIEU9Ri5yZWxhdGVkVGFyZ2V0O3doaWxlKEUmJkUhPXRoaXMpe3RyeXtF PUUucGFyZW50Tm9kZX1jYXRjaChHKXtFPXRoaXN9fWlmKEUhPXRoaXMpe0YudHlw ZT1GLmRhdGE7by5ldmVudC5oYW5kbGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX07 by5lYWNoKHttb3VzZW92ZXI6Im1vdXNlZW50ZXIiLG1vdXNlb3V0OiJtb3VzZWxl YXZlIn0sZnVuY3Rpb24oRixFKXtVTFNOUVc6O28uZXZlbnQuc3BlY2lhbFtFXT17 c2V0dXA6ZnVuY3Rpb24oKXtVTFNOUVc6O28uZXZlbnQuYWRkKHRoaXMsRixhLEUp fSx0ZWFyZG93bjpmdW5jdGlvbigpe1VMU05RVzo7by5ldmVudC5yZW1vdmUodGhp cyxGLGEpfX19KTtvLmZuLmV4dGVuZCh7YmluZDpmdW5jdGlvbihGLEcsRSl7VUxT TlFXOjtyZXR1cm4gRj09InVubG9hZCI/dGhpcy5vbmUoRixHLEUpOnRoaXMuZWFj aChmdW5jdGlvbigpe1VMU05RVzo7by5ldmVudC5hZGQodGhpcyxGLEV8fEcsRSYm Ryl9KX0sb25lOmZ1bmN0aW9uKEcsSCxGKXtVTFNOUVc6O3ZhciBFPW8uZXZlbnQu cHJveHkoRnx8SCxmdW5jdGlvbihJKXtVTFNOUVc6O28odGhpcykudW5iaW5kKEks RSk7cmV0dXJuKEZ8fEgpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pO3JldHVybiB0 aGlzLmVhY2goZnVuY3Rpb24oKXtVTFNOUVc6O28uZXZlbnQuYWRkKHRoaXMsRyxF LEYmJkgpfSl9LHVuYmluZDpmdW5jdGlvbihGLEUpe1VMU05RVzo7cmV0dXJuIHRo aXMuZWFjaChmdW5jdGlvbigpe1VMU05RVzo7by5ldmVudC5yZW1vdmUodGhpcyxG LEUpfSl9LHRyaWdnZXI6ZnVuY3Rpb24oRSxGKXtVTFNOUVc6O3JldHVybiB0aGlz LmVhY2goZnVuY3Rpb24oKXtVTFNOUVc6O28uZXZlbnQudHJpZ2dlcihFLEYsdGhp cyl9KX0sdHJpZ2dlckhhbmRsZXI6ZnVuY3Rpb24oRSxHKXtVTFNOUVc6O2lmKHRo aXNbMF0pe3ZhciBGPW8uRXZlbnQoRSk7Ri5wcmV2ZW50RGVmYXVsdCgpO0Yuc3Rv cFByb3BhZ2F0aW9uKCk7by5ldmVudC50cmlnZ2VyKEYsRyx0aGlzWzBdKTtyZXR1 cm4gRi5yZXN1bHR9fSx0b2dnbGU6ZnVuY3Rpb24oRyl7VUxTTlFXOjt2YXIgRT1h cmd1bWVudHMsRj0xO3doaWxlKEY8RS5sZW5ndGgpe28uZXZlbnQucHJveHkoRyxF W0YrK10pfXJldHVybiB0aGlzLmNsaWNrKG8uZXZlbnQucHJveHkoRyxmdW5jdGlv bihIKXtVTFNOUVc6O3RoaXMubGFzdFRvZ2dsZT0odGhpcy5sYXN0VG9nZ2xlfHww KSVGO0gucHJldmVudERlZmF1bHQoKTtyZXR1cm4gRVt0aGlzLmxhc3RUb2dnbGUr K10uYXBwbHkodGhpcyxhcmd1bWVudHMpfHxmYWxzZX0pKX0saG92ZXI6ZnVuY3Rp b24oRSxGKXtVTFNOUVc6O3JldHVybiB0aGlzLm1vdXNlZW50ZXIoRSkubW91c2Vs ZWF2ZShGKX0scmVhZHk6ZnVuY3Rpb24oRSl7VUxTTlFXOjtCKCk7aWYoby5pc1Jl YWR5KXtFLmNhbGwoZG9jdW1lbnQsbyl9ZWxzZXtvLnJlYWR5TGlzdC5wdXNoKEUp fXJldHVybiB0aGlzfSxsaXZlOmZ1bmN0aW9uKEcsRil7VUxTTlFXOjt2YXIgRT1v LmV2ZW50LnByb3h5KEYpO0UuZ3VpZCs9dGhpcy5zZWxlY3RvcitHO28oZG9jdW1l bnQpLmJpbmQoaShHLHRoaXMuc2VsZWN0b3IpLHRoaXMuc2VsZWN0b3IsRSk7cmV0 dXJuIHRoaXN9LGRpZTpmdW5jdGlvbihGLEUpe1VMU05RVzo7byhkb2N1bWVudCku dW5iaW5kKGkoRix0aGlzLnNlbGVjdG9yKSxFP3tndWlkOkUuZ3VpZCt0aGlzLnNl bGVjdG9yK0Z9Om51bGwpO3JldHVybiB0aGlzfX0pO2Z1bmN0aW9uIGMoSCl7VUxT TlFXOjt2YXIgRT1SZWdFeHAoIihefFxcLikiK0gudHlwZSsiKFxcLnwkKSIpLEc9 dHJ1ZSxGPVtdO28uZWFjaChvLmRhdGEodGhpcywiZXZlbnRzIikubGl2ZXx8W10s ZnVuY3Rpb24oSSxKKXtVTFNOUVc6O2lmKEUudGVzdChKLnR5cGUpKXt2YXIgSz1v KEgudGFyZ2V0KS5jbG9zZXN0KEouZGF0YSlbMF07aWYoSyl7Ri5wdXNoKHtlbGVt OkssZm46Sn0pfX19KTtGLnNvcnQoZnVuY3Rpb24oSixJKXtVTFNOUVc6O3JldHVy biBvLmRhdGEoSi5lbGVtLCJjbG9zZXN0Iiktby5kYXRhKEkuZWxlbSwiY2xvc2Vz dCIpfSk7by5lYWNoKEYsZnVuY3Rpb24oKXtVTFNOUVc6O2lmKHRoaXMuZm4uY2Fs bCh0aGlzLmVsZW0sSCx0aGlzLmZuLmRhdGEpPT09ZmFsc2Upe3JldHVybihHPWZh bHNlKX19KTtyZXR1cm4gR31mdW5jdGlvbiBpKEYsRSl7VUxTTlFXOjtyZXR1cm5b ImxpdmUiLEYsRS5yZXBsYWNlKC9cLi9nLCJgIikucmVwbGFjZSgvIC9nLCJ8Iild LmpvaW4oIi4iKX1vLmV4dGVuZCh7aXNSZWFkeTpmYWxzZSxyZWFkeUxpc3Q6W10s cmVhZHk6ZnVuY3Rpb24oKXtVTFNOUVc6O2lmKCFvLmlzUmVhZHkpe28uaXNSZWFk eT10cnVlO2lmKG8ucmVhZHlMaXN0KXtvLmVhY2goby5yZWFkeUxpc3QsZnVuY3Rp b24oKXtVTFNOUVc6O3RoaXMuY2FsbChkb2N1bWVudCxvKX0pO28ucmVhZHlMaXN0 PW51bGx9byhkb2N1bWVudCkudHJpZ2dlckhhbmRsZXIoInJlYWR5Iil9fX0pO3Zh ciB4PWZhbHNlO2Z1bmN0aW9uIEIoKXtVTFNOUVc6O2lmKHgpe3JldHVybn14PXRy dWU7aWYoZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcil7ZG9jdW1lbnQuYWRkRXZl bnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsZnVuY3Rpb24oKXtVTFNOUVc6 O2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQi LGFyZ3VtZW50cy5jYWxsZWUsZmFsc2UpO28ucmVhZHkoKX0sZmFsc2UpfWVsc2V7 aWYoZG9jdW1lbnQuYXR0YWNoRXZlbnQpe2RvY3VtZW50LmF0dGFjaEV2ZW50KCJv bnJlYWR5c3RhdGVjaGFuZ2UiLGZ1bmN0aW9uKCl7VUxTTlFXOjtpZihkb2N1bWVu dC5yZWFkeVN0YXRlPT09ImNvbXBsZXRlIil7ZG9jdW1lbnQuZGV0YWNoRXZlbnQo Im9ucmVhZHlzdGF0ZWNoYW5nZSIsYXJndW1lbnRzLmNhbGxlZSk7by5yZWFkeSgp fX0pO2lmKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbCYmbD09bC50 b3ApeyhmdW5jdGlvbigpe1VMU05RVzo7aWYoby5pc1JlYWR5KXtyZXR1cm59dHJ5 e2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbCgibGVmdCIpfWNhdGNo KEUpe3NldFRpbWVvdXQoYXJndW1lbnRzLmNhbGxlZSwwKTtyZXR1cm59by5yZWFk eSgpfSkoKX19fW8uZXZlbnQuYWRkKGwsImxvYWQiLG8ucmVhZHkpfW8uZWFjaCgo ImJsdXIsZm9jdXMsbG9hZCxyZXNpemUsc2Nyb2xsLHVubG9hZCxjbGljayxkYmxj bGljayxtb3VzZWRvd24sbW91c2V1cCxtb3VzZW1vdmUsbW91c2VvdmVyLG1vdXNl b3V0LG1vdXNlZW50ZXIsbW91c2VsZWF2ZSxjaGFuZ2Usc2VsZWN0LHN1Ym1pdCxr ZXlkb3duLGtleXByZXNzLGtleXVwLGVycm9yIikuc3BsaXQoIiwiKSxmdW5jdGlv bihGLEUpe1VMU05RVzo7by5mbltFXT1mdW5jdGlvbihHKXtVTFNOUVc6O3JldHVy biBHP3RoaXMuYmluZChFLEcpOnRoaXMudHJpZ2dlcihFKX19KTtvKGwpLmJpbmQo InVubG9hZCIsZnVuY3Rpb24oKXtVTFNOUVc6O2Zvcih2YXIgRSBpbiBvLmNhY2hl KXtpZihFIT0xJiZvLmNhY2hlW0VdLmhhbmRsZSl7by5ldmVudC5yZW1vdmUoby5j YWNoZVtFXS5oYW5kbGUuZWxlbSl9fX0pOyhmdW5jdGlvbigpe1VMU05RVzo7by5z dXBwb3J0PXt9O3ZhciBGPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxHPWRvY3Vt ZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpLEs9ZG9jdW1lbnQuY3JlYXRlRWxl bWVudCgiZGl2IiksSj0ic2NyaXB0IisobmV3IERhdGUpLmdldFRpbWUoKTtLLnN0 eWxlLmRpc3BsYXk9Im5vbmUiO0suaW5uZXJIVE1MPScgICA8bGluay8+PHRhYmxl PjwvdGFibGU+PGEgaHJlZj0iL2EiIHN0eWxlPSJjb2xvcjpyZWQ7ZmxvYXQ6bGVm dDtvcGFjaXR5Oi41OyI+YTwvYT48c2VsZWN0PjxvcHRpb24+dGV4dDwvb3B0aW9u Pjwvc2VsZWN0PjxvYmplY3Q+PHBhcmFtLz48L29iamVjdD4nO3ZhciBIPUsuZ2V0 RWxlbWVudHNCeVRhZ05hbWUoIioiKSxFPUsuZ2V0RWxlbWVudHNCeVRhZ05hbWUo ImEiKVswXTtpZighSHx8IUgubGVuZ3RofHwhRSl7cmV0dXJufW8uc3VwcG9ydD17 bGVhZGluZ1doaXRlc3BhY2U6Sy5maXJzdENoaWxkLm5vZGVUeXBlPT0zLHRib2R5 OiFLLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpLmxlbmd0aCxvYmplY3RB bGw6ISFLLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJvYmplY3QiKVswXS5nZXRFbGVt ZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aCxodG1sU2VyaWFsaXplOiEhSy5nZXRF bGVtZW50c0J5VGFnTmFtZSgibGluayIpLmxlbmd0aCxzdHlsZTovcmVkLy50ZXN0 KEUuZ2V0QXR0cmlidXRlKCJzdHlsZSIpKSxocmVmTm9ybWFsaXplZDpFLmdldEF0 dHJpYnV0ZSgiaHJlZiIpPT09Ii9hIixvcGFjaXR5OkUuc3R5bGUub3BhY2l0eT09 PSIwLjUiLGNzc0Zsb2F0OiEhRS5zdHlsZS5jc3NGbG9hdCxzY3JpcHRFdmFsOmZh bHNlLG5vQ2xvbmVFdmVudDp0cnVlLGJveE1vZGVsOm51bGx9O0cudHlwZT0idGV4 dC9qYXZhc2NyaXB0Ijt0cnl7Ry5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVU ZXh0Tm9kZSgid2luZG93LiIrSisiPTE7IikpfWNhdGNoKEkpe31GLmluc2VydEJl Zm9yZShHLEYuZmlyc3RDaGlsZCk7aWYobFtKXSl7by5zdXBwb3J0LnNjcmlwdEV2 YWw9dHJ1ZTtkZWxldGUgbFtKXX1GLnJlbW92ZUNoaWxkKEcpO2lmKEsuYXR0YWNo RXZlbnQmJksuZmlyZUV2ZW50KXtLLmF0dGFjaEV2ZW50KCJvbmNsaWNrIixmdW5j dGlvbigpe1VMU05RVzo7by5zdXBwb3J0Lm5vQ2xvbmVFdmVudD1mYWxzZTtLLmRl dGFjaEV2ZW50KCJvbmNsaWNrIixhcmd1bWVudHMuY2FsbGVlKX0pO0suY2xvbmVO b2RlKHRydWUpLmZpcmVFdmVudCgib25jbGljayIpfW8oZnVuY3Rpb24oKXtVTFNO UVc6O3ZhciBMPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO0wuc3R5bGUu d2lkdGg9TC5zdHlsZS5wYWRkaW5nTGVmdD0iMXB4Ijtkb2N1bWVudC5ib2R5LmFw cGVuZENoaWxkKEwpO28uYm94TW9kZWw9by5zdXBwb3J0LmJveE1vZGVsPUwub2Zm c2V0V2lkdGg9PT0yO2RvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoTCkuc3R5bGUu ZGlzcGxheT0ibm9uZSJ9KX0pKCk7dmFyIHc9by5zdXBwb3J0LmNzc0Zsb2F0PyJj c3NGbG9hdCI6InN0eWxlRmxvYXQiO28ucHJvcHM9eyJmb3IiOiJodG1sRm9yIiwi Y2xhc3MiOiJjbGFzc05hbWUiLCJmbG9hdCI6dyxjc3NGbG9hdDp3LHN0eWxlRmxv YXQ6dyxyZWFkb25seToicmVhZE9ubHkiLG1heGxlbmd0aDoibWF4TGVuZ3RoIixj ZWxsc3BhY2luZzoiY2VsbFNwYWNpbmciLHJvd3NwYW46InJvd1NwYW4iLHRhYmlu ZGV4OiJ0YWJJbmRleCJ9O28uZm4uZXh0ZW5kKHtfbG9hZDpvLmZuLmxvYWQsbG9h ZDpmdW5jdGlvbihHLEosSyl7VUxTTlFXOjtpZih0eXBlb2YgRyE9PSJzdHJpbmci KXtyZXR1cm4gdGhpcy5fbG9hZChHKX12YXIgST1HLmluZGV4T2YoIiAiKTtpZihJ Pj0wKXt2YXIgRT1HLnNsaWNlKEksRy5sZW5ndGgpO0c9Ry5zbGljZSgwLEkpfXZh ciBIPSJHRVQiO2lmKEope2lmKG8uaXNGdW5jdGlvbihKKSl7Sz1KO0o9bnVsbH1l bHNle2lmKHR5cGVvZiBKPT09Im9iamVjdCIpe0o9by5wYXJhbShKKTtIPSJQT1NU In19fXZhciBGPXRoaXM7by5hamF4KHt1cmw6Ryx0eXBlOkgsZGF0YVR5cGU6Imh0 bWwiLGRhdGE6Sixjb21wbGV0ZTpmdW5jdGlvbihNLEwpe1VMU05RVzo7aWYoTD09 InN1Y2Nlc3MifHxMPT0ibm90bW9kaWZpZWQiKXtGLmh0bWwoRT9vKCI8ZGl2Lz4i KS5hcHBlbmQoTS5yZXNwb25zZVRleHQucmVwbGFjZSgvPHNjcmlwdCgufFxzKSo/ XC9zY3JpcHQ+L2csIiIpKS5maW5kKEUpOk0ucmVzcG9uc2VUZXh0KX1pZihLKXtG LmVhY2goSyxbTS5yZXNwb25zZVRleHQsTCxNXSl9fX0pO3JldHVybiB0aGlzfSxz ZXJpYWxpemU6ZnVuY3Rpb24oKXtVTFNOUVc6O3JldHVybiBvLnBhcmFtKHRoaXMu c2VyaWFsaXplQXJyYXkoKSl9LHNlcmlhbGl6ZUFycmF5OmZ1bmN0aW9uKCl7VUxT TlFXOjtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtVTFNOUVc6O3JldHVybiB0 aGlzLmVsZW1lbnRzP28ubWFrZUFycmF5KHRoaXMuZWxlbWVudHMpOnRoaXN9KS5m aWx0ZXIoZnVuY3Rpb24oKXtVTFNOUVc6O3JldHVybiB0aGlzLm5hbWUmJiF0aGlz LmRpc2FibGVkJiYodGhpcy5jaGVja2VkfHwvc2VsZWN0fHRleHRhcmVhL2kudGVz dCh0aGlzLm5vZGVOYW1lKXx8L3RleHR8aGlkZGVufHBhc3N3b3JkfHNlYXJjaC9p LnRlc3QodGhpcy50eXBlKSl9KS5tYXAoZnVuY3Rpb24oRSxGKXtVTFNOUVc6O3Zh ciBHPW8odGhpcykudmFsKCk7cmV0dXJuIEc9PW51bGw/bnVsbDpvLmlzQXJyYXko Ryk/by5tYXAoRyxmdW5jdGlvbihJLEgpe1VMU05RVzo7cmV0dXJue25hbWU6Ri5u YW1lLHZhbHVlOkl9fSk6e25hbWU6Ri5uYW1lLHZhbHVlOkd9fSkuZ2V0KCl9fSk7 by5lYWNoKCJhamF4U3RhcnQsYWpheFN0b3AsYWpheENvbXBsZXRlLGFqYXhFcnJv cixhamF4U3VjY2VzcyxhamF4U2VuZCIuc3BsaXQoIiwiKSxmdW5jdGlvbihFLEYp e1VMU05RVzo7by5mbltGXT1mdW5jdGlvbihHKXtVTFNOUVc6O3JldHVybiB0aGlz LmJpbmQoRixHKX19KTt2YXIgcj1lKCk7by5leHRlbmQoe2dldDpmdW5jdGlvbihF LEcsSCxGKXtVTFNOUVc6O2lmKG8uaXNGdW5jdGlvbihHKSl7SD1HO0c9bnVsbH1y ZXR1cm4gby5hamF4KHt0eXBlOiJHRVQiLHVybDpFLGRhdGE6RyxzdWNjZXNzOkgs ZGF0YVR5cGU6Rn0pfSxnZXRTY3JpcHQ6ZnVuY3Rpb24oRSxGKXtVTFNOUVc6O3Jl dHVybiBvLmdldChFLG51bGwsRiwic2NyaXB0Iil9LGdldEpTT046ZnVuY3Rpb24o RSxGLEcpe1VMU05RVzo7cmV0dXJuIG8uZ2V0KEUsRixHLCJqc29uIil9LHBvc3Q6 ZnVuY3Rpb24oRSxHLEgsRil7VUxTTlFXOjtpZihvLmlzRnVuY3Rpb24oRykpe0g9 RztHPXt9fXJldHVybiBvLmFqYXgoe3R5cGU6IlBPU1QiLHVybDpFLGRhdGE6Ryxz dWNjZXNzOkgsZGF0YVR5cGU6Rn0pfSxhamF4U2V0dXA6ZnVuY3Rpb24oRSl7VUxT TlFXOjtvLmV4dGVuZChvLmFqYXhTZXR0aW5ncyxFKX0sYWpheFNldHRpbmdzOnt1 cmw6bG9jYXRpb24uaHJlZixnbG9iYWw6dHJ1ZSx0eXBlOiJHRVQiLGNvbnRlbnRU eXBlOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiLHByb2Nlc3NE YXRhOnRydWUsYXN5bmM6dHJ1ZSx4aHI6ZnVuY3Rpb24oKXtVTFNOUVc6O3JldHVy biBsLkFjdGl2ZVhPYmplY3Q/bmV3IEFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5Y TUxIVFRQIik6bmV3IFhNTEh0dHBSZXF1ZXN0KCl9LGFjY2VwdHM6e3htbDoiYXBw bGljYXRpb24veG1sLCB0ZXh0L3htbCIsaHRtbDoidGV4dC9odG1sIixzY3JpcHQ6 InRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRpb24vamF2YXNjcmlwdCIsanNvbjoi YXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0Iix0ZXh0OiJ0ZXh0L3Bs YWluIixfZGVmYXVsdDoiKi8qIn19LGxhc3RNb2RpZmllZDp7fSxhamF4OmZ1bmN0 aW9uKE0pe1VMU05RVzo7TT1vLmV4dGVuZCh0cnVlLE0sby5leHRlbmQodHJ1ZSx7 fSxvLmFqYXhTZXR0aW5ncyxNKSk7dmFyIFcsRj0vPVw/KCZ8JCkvZyxSLFYsRz1N LnR5cGUudG9VcHBlckNhc2UoKTtpZihNLmRhdGEmJk0ucHJvY2Vzc0RhdGEmJnR5 cGVvZiBNLmRhdGEhPT0ic3RyaW5nIil7TS5kYXRhPW8ucGFyYW0oTS5kYXRhKX1p ZihNLmRhdGFUeXBlPT0ianNvbnAiKXtpZihHPT0iR0VUIil7aWYoIU0udXJsLm1h dGNoKEYpKXtNLnVybCs9KE0udXJsLm1hdGNoKC9cPy8pPyImIjoiPyIpKyhNLmpz b25wfHwiY2FsbGJhY2siKSsiPT8ifX1lbHNle2lmKCFNLmRhdGF8fCFNLmRhdGEu bWF0Y2goRikpe00uZGF0YT0oTS5kYXRhP00uZGF0YSsiJiI6IiIpKyhNLmpzb25w fHwiY2FsbGJhY2siKSsiPT8ifX1NLmRhdGFUeXBlPSJqc29uIn1pZihNLmRhdGFU eXBlPT0ianNvbiImJihNLmRhdGEmJk0uZGF0YS5tYXRjaChGKXx8TS51cmwubWF0 Y2goRikpKXtXPSJqc29ucCIrcisrO2lmKE0uZGF0YSl7TS5kYXRhPShNLmRhdGEr IiIpLnJlcGxhY2UoRiwiPSIrVysiJDEiKX1NLnVybD1NLnVybC5yZXBsYWNlKEYs Ij0iK1crIiQxIik7TS5kYXRhVHlwZT0ic2NyaXB0IjtsW1ddPWZ1bmN0aW9uKFgp e1VMU05RVzo7Vj1YO0koKTtMKCk7bFtXXT1nO3RyeXtkZWxldGUgbFtXXX1jYXRj aChZKXt9aWYoSCl7SC5yZW1vdmVDaGlsZChUKX19fWlmKE0uZGF0YVR5cGU9PSJz Y3JpcHQiJiZNLmNhY2hlPT1udWxsKXtNLmNhY2hlPWZhbHNlfWlmKE0uY2FjaGU9 PT1mYWxzZSYmRz09IkdFVCIpe3ZhciBFPWUoKTt2YXIgVT1NLnVybC5yZXBsYWNl KC8oXD98JilfPS4qPygmfCQpLywiJDFfPSIrRSsiJDIiKTtNLnVybD1VKygoVT09 TS51cmwpPyhNLnVybC5tYXRjaCgvXD8vKT8iJiI6Ij8iKSsiXz0iK0U6IiIpfWlm KE0uZGF0YSYmRz09IkdFVCIpe00udXJsKz0oTS51cmwubWF0Y2goL1w/Lyk/IiYi OiI/IikrTS5kYXRhO00uZGF0YT1udWxsfWlmKE0uZ2xvYmFsJiYhby5hY3RpdmUr Kyl7by5ldmVudC50cmlnZ2VyKCJhamF4U3RhcnQiKX12YXIgUT0vXihcdys6KT9c L1wvKFteXC8/I10rKS8uZXhlYyhNLnVybCk7aWYoTS5kYXRhVHlwZT09InNjcmlw dCImJkc9PSJHRVQiJiZRJiYoUVsxXSYmUVsxXSE9bG9jYXRpb24ucHJvdG9jb2x8 fFFbMl0hPWxvY2F0aW9uLmhvc3QpKXt2YXIgSD1kb2N1bWVudC5nZXRFbGVtZW50 c0J5VGFnTmFtZSgiaGVhZCIpWzBdO3ZhciBUPWRvY3VtZW50LmNyZWF0ZUVsZW1l bnQoInNjcmlwdCIpO1Quc3JjPU0udXJsO2lmKE0uc2NyaXB0Q2hhcnNldCl7VC5j aGFyc2V0PU0uc2NyaXB0Q2hhcnNldH1pZighVyl7dmFyIE89ZmFsc2U7VC5vbmxv YWQ9VC5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtVTFNOUVc6O2lmKCFP JiYoIXRoaXMucmVhZHlTdGF0ZXx8dGhpcy5yZWFkeVN0YXRlPT0ibG9hZGVkInx8 dGhpcy5yZWFkeVN0YXRlPT0iY29tcGxldGUiKSl7Tz10cnVlO0koKTtMKCk7VC5v bmxvYWQ9VC5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbDtILnJlbW92ZUNoaWxkKFQp fX19SC5hcHBlbmRDaGlsZChUKTtyZXR1cm4gZ312YXIgSz1mYWxzZTt2YXIgSj1N LnhocigpO2lmKE0udXNlcm5hbWUpe0oub3BlbihHLE0udXJsLE0uYXN5bmMsTS51 c2VybmFtZSxNLnBhc3N3b3JkKX1lbHNle0oub3BlbihHLE0udXJsLE0uYXN5bmMp fXRyeXtpZihNLmRhdGEpe0ouc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBl IixNLmNvbnRlbnRUeXBlKX1pZihNLmlmTW9kaWZpZWQpe0ouc2V0UmVxdWVzdEhl YWRlcigiSWYtTW9kaWZpZWQtU2luY2UiLG8ubGFzdE1vZGlmaWVkW00udXJsXXx8 IlRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDAgR01UIil9Si5zZXRSZXF1ZXN0SGVh ZGVyKCJYLVJlcXVlc3RlZC1XaXRoIiwiWE1MSHR0cFJlcXVlc3QiKTtKLnNldFJl cXVlc3RIZWFkZXIoIkFjY2VwdCIsTS5kYXRhVHlwZSYmTS5hY2NlcHRzW00uZGF0 YVR5cGVdP00uYWNjZXB0c1tNLmRhdGFUeXBlXSsiLCAqLyoiOk0uYWNjZXB0cy5f ZGVmYXVsdCl9Y2F0Y2goUyl7fWlmKE0uYmVmb3JlU2VuZCYmTS5iZWZvcmVTZW5k KEosTSk9PT1mYWxzZSl7aWYoTS5nbG9iYWwmJiEtLW8uYWN0aXZlKXtvLmV2ZW50 LnRyaWdnZXIoImFqYXhTdG9wIil9Si5hYm9ydCgpO3JldHVybiBmYWxzZX1pZihN Lmdsb2JhbCl7by5ldmVudC50cmlnZ2VyKCJhamF4U2VuZCIsW0osTV0pfXZhciBO PWZ1bmN0aW9uKFgpe1VMU05RVzo7aWYoIUp8fEoucmVhZHlTdGF0ZT09MCl7aWYo UCl7Y2xlYXJJbnRlcnZhbChQKTtQPW51bGw7aWYoTS5nbG9iYWwmJiEtLW8uYWN0 aXZlKXtvLmV2ZW50LnRyaWdnZXIoImFqYXhTdG9wIil9fX1lbHNle2lmKCFLJiZK JiYoSi5yZWFkeVN0YXRlPT00fHxYPT0idGltZW91dCIpKXtLPXRydWU7aWYoUCl7 Y2xlYXJJbnRlcnZhbChQKTtQPW51bGx9Uj1YPT0idGltZW91dCI/InRpbWVvdXQi OiFvLmh0dHBTdWNjZXNzKEopPyJlcnJvciI6TS5pZk1vZGlmaWVkJiZvLmh0dHBO b3RNb2RpZmllZChKLE0udXJsKT8ibm90bW9kaWZpZWQiOiJzdWNjZXNzIjtpZihS PT0ic3VjY2VzcyIpe3RyeXtWPW8uaHR0cERhdGEoSixNLmRhdGFUeXBlLE0pfWNh dGNoKFope1I9InBhcnNlcmVycm9yIn19aWYoUj09InN1Y2Nlc3MiKXt2YXIgWTt0 cnl7WT1KLmdldFJlc3BvbnNlSGVhZGVyKCJMYXN0LU1vZGlmaWVkIil9Y2F0Y2go Wil7fWlmKE0uaWZNb2RpZmllZCYmWSl7by5sYXN0TW9kaWZpZWRbTS51cmxdPVl9 aWYoIVcpe0koKX19ZWxzZXtvLmhhbmRsZUVycm9yKE0sSixSKX1MKCk7aWYoWCl7 Si5hYm9ydCgpfWlmKE0uYXN5bmMpe0o9bnVsbH19fX07aWYoTS5hc3luYyl7dmFy IFA9c2V0SW50ZXJ2YWwoTiwxMyk7aWYoTS50aW1lb3V0PjApe3NldFRpbWVvdXQo ZnVuY3Rpb24oKXtVTFNOUVc6O2lmKEomJiFLKXtOKCJ0aW1lb3V0Iil9fSxNLnRp bWVvdXQpfX10cnl7Si5zZW5kKE0uZGF0YSl9Y2F0Y2goUyl7by5oYW5kbGVFcnJv cihNLEosbnVsbCxTKX1pZighTS5hc3luYyl7TigpfWZ1bmN0aW9uIEkoKXtVTFNO UVc6O2lmKE0uc3VjY2Vzcyl7TS5zdWNjZXNzKFYsUil9aWYoTS5nbG9iYWwpe28u ZXZlbnQudHJpZ2dlcigiYWpheFN1Y2Nlc3MiLFtKLE1dKX19ZnVuY3Rpb24gTCgp e1VMU05RVzo7aWYoTS5jb21wbGV0ZSl7TS5jb21wbGV0ZShKLFIpfWlmKE0uZ2xv YmFsKXtvLmV2ZW50LnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW0osTV0pfWlmKE0u Z2xvYmFsJiYhLS1vLmFjdGl2ZSl7by5ldmVudC50cmlnZ2VyKCJhamF4U3RvcCIp fX1yZXR1cm4gSn0saGFuZGxlRXJyb3I6ZnVuY3Rpb24oRixILEUsRyl7VUxTTlFX OjtpZihGLmVycm9yKXtGLmVycm9yKEgsRSxHKX1pZihGLmdsb2JhbCl7by5ldmVu dC50cmlnZ2VyKCJhamF4RXJyb3IiLFtILEYsR10pfX0sYWN0aXZlOjAsaHR0cFN1 Y2Nlc3M6ZnVuY3Rpb24oRil7VUxTTlFXOjt0cnl7cmV0dXJuICFGLnN0YXR1cyYm bG9jYXRpb24ucHJvdG9jb2w9PSJmaWxlOiJ8fChGLnN0YXR1cz49MjAwJiZGLnN0 YXR1czwzMDApfHxGLnN0YXR1cz09MzA0fHxGLnN0YXR1cz09MTIyM31jYXRjaChF KXt9cmV0dXJuIGZhbHNlfSxodHRwTm90TW9kaWZpZWQ6ZnVuY3Rpb24oRyxFKXtV TFNOUVc6O3RyeXt2YXIgSD1HLmdldFJlc3BvbnNlSGVhZGVyKCJMYXN0LU1vZGlm aWVkIik7cmV0dXJuIEcuc3RhdHVzPT0zMDR8fEg9PW8ubGFzdE1vZGlmaWVkW0Vd fWNhdGNoKEYpe31yZXR1cm4gZmFsc2V9LGh0dHBEYXRhOmZ1bmN0aW9uKEosSCxH KXtVTFNOUVc6O3ZhciBGPUouZ2V0UmVzcG9uc2VIZWFkZXIoImNvbnRlbnQtdHlw ZSIpLEU9SD09InhtbCJ8fCFIJiZGJiZGLmluZGV4T2YoInhtbCIpPj0wLEk9RT9K LnJlc3BvbnNlWE1MOkoucmVzcG9uc2VUZXh0O2lmKEUmJkkuZG9jdW1lbnRFbGVt ZW50LnRhZ05hbWU9PSJwYXJzZXJlcnJvciIpe3Rocm93InBhcnNlcmVycm9yIn1p ZihHJiZHLmRhdGFGaWx0ZXIpe0k9Ry5kYXRhRmlsdGVyKEksSCl9aWYodHlwZW9m IEk9PT0ic3RyaW5nIil7aWYoSD09InNjcmlwdCIpe28uZ2xvYmFsRXZhbChJKX1p ZihIPT0ianNvbiIpe0k9bFsiZXZhbCJdKCIoIitJKyIpIil9fXJldHVybiBJfSxw YXJhbTpmdW5jdGlvbihFKXtVTFNOUVc6O3ZhciBHPVtdO2Z1bmN0aW9uIEgoSSxK KXtVTFNOUVc6O0dbRy5sZW5ndGhdPWVuY29kZVVSSUNvbXBvbmVudChJKSsiPSIr ZW5jb2RlVVJJQ29tcG9uZW50KEopfWlmKG8uaXNBcnJheShFKXx8RS5qcXVlcnkp e28uZWFjaChFLGZ1bmN0aW9uKCl7VUxTTlFXOjtIKHRoaXMubmFtZSx0aGlzLnZh bHVlKX0pfWVsc2V7Zm9yKHZhciBGIGluIEUpe2lmKG8uaXNBcnJheShFW0ZdKSl7 by5lYWNoKEVbRl0sZnVuY3Rpb24oKXtVTFNOUVc6O0goRix0aGlzKX0pfWVsc2V7 SChGLG8uaXNGdW5jdGlvbihFW0ZdKT9FW0ZdKCk6RVtGXSl9fX1yZXR1cm4gRy5q b2luKCImIikucmVwbGFjZSgvJTIwL2csIisiKX19KTt2YXIgbT17fSxuLGQ9W1si aGVpZ2h0IiwibWFyZ2luVG9wIiwibWFyZ2luQm90dG9tIiwicGFkZGluZ1RvcCIs InBhZGRpbmdCb3R0b20iXSxbIndpZHRoIiwibWFyZ2luTGVmdCIsIm1hcmdpblJp Z2h0IiwicGFkZGluZ0xlZnQiLCJwYWRkaW5nUmlnaHQiXSxbIm9wYWNpdHkiXV07 ZnVuY3Rpb24gdChGLEUpe1VMU05RVzo7dmFyIEc9e307by5lYWNoKGQuY29uY2F0 LmFwcGx5KFtdLGQuc2xpY2UoMCxFKSksZnVuY3Rpb24oKXtVTFNOUVc6O0dbdGhp c109Rn0pO3JldHVybiBHfW8uZm4uZXh0ZW5kKHtzaG93OmZ1bmN0aW9uKEosTCl7 VUxTTlFXOjtpZihKKXtyZXR1cm4gdGhpcy5hbmltYXRlKHQoInNob3ciLDMpLEos TCl9ZWxzZXtmb3IodmFyIEg9MCxGPXRoaXMubGVuZ3RoO0g8RjtIKyspe3ZhciBF PW8uZGF0YSh0aGlzW0hdLCJvbGRkaXNwbGF5Iik7dGhpc1tIXS5zdHlsZS5kaXNw bGF5PUV8fCIiO2lmKG8uY3NzKHRoaXNbSF0sImRpc3BsYXkiKT09PSJub25lIil7 dmFyIEc9dGhpc1tIXS50YWdOYW1lLEs7aWYobVtHXSl7Sz1tW0ddfWVsc2V7dmFy IEk9bygiPCIrRysiIC8+IikuYXBwZW5kVG8oImJvZHkiKTtLPUkuY3NzKCJkaXNw bGF5Iik7aWYoSz09PSJub25lIil7Sz0iYmxvY2sifUkucmVtb3ZlKCk7bVtHXT1L fW8uZGF0YSh0aGlzW0hdLCJvbGRkaXNwbGF5IixLKX19Zm9yKHZhciBIPTAsRj10 aGlzLmxlbmd0aDtIPEY7SCsrKXt0aGlzW0hdLnN0eWxlLmRpc3BsYXk9by5kYXRh KHRoaXNbSF0sIm9sZGRpc3BsYXkiKXx8IiJ9cmV0dXJuIHRoaXN9fSxoaWRlOmZ1 bmN0aW9uKEgsSSl7VUxTTlFXOjtpZihIKXtyZXR1cm4gdGhpcy5hbmltYXRlKHQo ImhpZGUiLDMpLEgsSSl9ZWxzZXtmb3IodmFyIEc9MCxGPXRoaXMubGVuZ3RoO0c8 RjtHKyspe3ZhciBFPW8uZGF0YSh0aGlzW0ddLCJvbGRkaXNwbGF5Iik7aWYoIUUm JkUhPT0ibm9uZSIpe28uZGF0YSh0aGlzW0ddLCJvbGRkaXNwbGF5IixvLmNzcyh0 aGlzW0ddLCJkaXNwbGF5IikpfX1mb3IodmFyIEc9MCxGPXRoaXMubGVuZ3RoO0c8 RjtHKyspe3RoaXNbR10uc3R5bGUuZGlzcGxheT0ibm9uZSJ9cmV0dXJuIHRoaXN9 fSxfdG9nZ2xlOm8uZm4udG9nZ2xlLHRvZ2dsZTpmdW5jdGlvbihHLEYpe1VMU05R Vzo7dmFyIEU9dHlwZW9mIEc9PT0iYm9vbGVhbiI7cmV0dXJuIG8uaXNGdW5jdGlv bihHKSYmby5pc0Z1bmN0aW9uKEYpP3RoaXMuX3RvZ2dsZS5hcHBseSh0aGlzLGFy Z3VtZW50cyk6Rz09bnVsbHx8RT90aGlzLmVhY2goZnVuY3Rpb24oKXtVTFNOUVc6 O3ZhciBIPUU/RzpvKHRoaXMpLmlzKCI6aGlkZGVuIik7byh0aGlzKVtIPyJzaG93 IjoiaGlkZSJdKCl9KTp0aGlzLmFuaW1hdGUodCgidG9nZ2xlIiwzKSxHLEYpfSxm YWRlVG86ZnVuY3Rpb24oRSxHLEYpe1VMU05RVzo7cmV0dXJuIHRoaXMuYW5pbWF0 ZSh7b3BhY2l0eTpHfSxFLEYpfSxhbmltYXRlOmZ1bmN0aW9uKEksRixILEcpe1VM U05RVzo7dmFyIEU9by5zcGVlZChGLEgsRyk7cmV0dXJuIHRoaXNbRS5xdWV1ZT09 PWZhbHNlPyJlYWNoIjoicXVldWUiXShmdW5jdGlvbigpe1VMU05RVzo7dmFyIEs9 by5leHRlbmQoe30sRSksTSxMPXRoaXMubm9kZVR5cGU9PTEmJm8odGhpcykuaXMo IjpoaWRkZW4iKSxKPXRoaXM7Zm9yKE0gaW4gSSl7aWYoSVtNXT09ImhpZGUiJiZM fHxJW01dPT0ic2hvdyImJiFMKXtyZXR1cm4gSy5jb21wbGV0ZS5jYWxsKHRoaXMp fWlmKChNPT0iaGVpZ2h0Inx8TT09IndpZHRoIikmJnRoaXMuc3R5bGUpe0suZGlz cGxheT1vLmNzcyh0aGlzLCJkaXNwbGF5Iik7Sy5vdmVyZmxvdz10aGlzLnN0eWxl Lm92ZXJmbG93fX1pZihLLm92ZXJmbG93IT1udWxsKXt0aGlzLnN0eWxlLm92ZXJm bG93PSJoaWRkZW4ifUsuY3VyQW5pbT1vLmV4dGVuZCh7fSxJKTtvLmVhY2goSSxm dW5jdGlvbihPLFMpe1VMU05RVzo7dmFyIFI9bmV3IG8uZngoSixLLE8pO2lmKC90 b2dnbGV8c2hvd3xoaWRlLy50ZXN0KFMpKXtSW1M9PSJ0b2dnbGUiP0w/InNob3ci OiJoaWRlIjpTXShJKX1lbHNle3ZhciBRPVMudG9TdHJpbmcoKS5tYXRjaCgvXihb Ky1dPSk/KFtcZCstLl0rKSguKikkLyksVD1SLmN1cih0cnVlKXx8MDtpZihRKXt2 YXIgTj1wYXJzZUZsb2F0KFFbMl0pLFA9UVszXXx8InB4IjtpZihQIT0icHgiKXtK LnN0eWxlW09dPShOfHwxKStQO1Q9KChOfHwxKS9SLmN1cih0cnVlKSkqVDtKLnN0 eWxlW09dPVQrUH1pZihRWzFdKXtOPSgoUVsxXT09Ii09Ij8tMToxKSpOKStUfVIu Y3VzdG9tKFQsTixQKX1lbHNle1IuY3VzdG9tKFQsUywiIil9fX0pO3JldHVybiB0 cnVlfSl9LHN0b3A6ZnVuY3Rpb24oRixFKXtVTFNOUVc6O3ZhciBHPW8udGltZXJz O2lmKEYpe3RoaXMucXVldWUoW10pfXRoaXMuZWFjaChmdW5jdGlvbigpe1VMU05R Vzo7Zm9yKHZhciBIPUcubGVuZ3RoLTE7SD49MDtILS0pe2lmKEdbSF0uZWxlbT09 dGhpcyl7aWYoRSl7R1tIXSh0cnVlKX1HLnNwbGljZShILDEpfX19KTtpZighRSl7 dGhpcy5kZXF1ZXVlKCl9cmV0dXJuIHRoaXN9fSk7by5lYWNoKHtzbGlkZURvd246 dCgic2hvdyIsMSksc2xpZGVVcDp0KCJoaWRlIiwxKSxzbGlkZVRvZ2dsZTp0KCJ0 b2dnbGUiLDEpLGZhZGVJbjp7b3BhY2l0eToic2hvdyJ9LGZhZGVPdXQ6e29wYWNp dHk6ImhpZGUifX0sZnVuY3Rpb24oRSxGKXtVTFNOUVc6O28uZm5bRV09ZnVuY3Rp b24oRyxIKXtVTFNOUVc6O3JldHVybiB0aGlzLmFuaW1hdGUoRixHLEgpfX0pO28u ZXh0ZW5kKHtzcGVlZDpmdW5jdGlvbihHLEgsRil7VUxTTlFXOjt2YXIgRT10eXBl b2YgRz09PSJvYmplY3QiP0c6e2NvbXBsZXRlOkZ8fCFGJiZIfHxvLmlzRnVuY3Rp b24oRykmJkcsZHVyYXRpb246RyxlYXNpbmc6RiYmSHx8SCYmIW8uaXNGdW5jdGlv bihIKSYmSH07RS5kdXJhdGlvbj1vLmZ4Lm9mZj8wOnR5cGVvZiBFLmR1cmF0aW9u PT09Im51bWJlciI/RS5kdXJhdGlvbjpvLmZ4LnNwZWVkc1tFLmR1cmF0aW9uXXx8 by5meC5zcGVlZHMuX2RlZmF1bHQ7RS5vbGQ9RS5jb21wbGV0ZTtFLmNvbXBsZXRl PWZ1bmN0aW9uKCl7VUxTTlFXOjtpZihFLnF1ZXVlIT09ZmFsc2Upe28odGhpcyku ZGVxdWV1ZSgpfWlmKG8uaXNGdW5jdGlvbihFLm9sZCkpe0Uub2xkLmNhbGwodGhp cyl9fTtyZXR1cm4gRX0sZWFzaW5nOntsaW5lYXI6ZnVuY3Rpb24oRyxILEUsRil7 VUxTTlFXOjtyZXR1cm4gRStGKkd9LHN3aW5nOmZ1bmN0aW9uKEcsSCxFLEYpe1VM U05RVzo7cmV0dXJuKCgtTWF0aC5jb3MoRypNYXRoLlBJKS8yKSswLjUpKkYrRX19 LHRpbWVyczpbXSxmeDpmdW5jdGlvbihGLEUsRyl7VUxTTlFXOjt0aGlzLm9wdGlv bnM9RTt0aGlzLmVsZW09Rjt0aGlzLnByb3A9RztpZighRS5vcmlnKXtFLm9yaWc9 e319fX0pO28uZngucHJvdG90eXBlPXt1cGRhdGU6ZnVuY3Rpb24oKXtVTFNOUVc6 O2lmKHRoaXMub3B0aW9ucy5zdGVwKXt0aGlzLm9wdGlvbnMuc3RlcC5jYWxsKHRo aXMuZWxlbSx0aGlzLm5vdyx0aGlzKX0oby5meC5zdGVwW3RoaXMucHJvcF18fG8u Znguc3RlcC5fZGVmYXVsdCkodGhpcyk7aWYoKHRoaXMucHJvcD09ImhlaWdodCJ8 fHRoaXMucHJvcD09IndpZHRoIikmJnRoaXMuZWxlbS5zdHlsZSl7dGhpcy5lbGVt LnN0eWxlLmRpc3BsYXk9ImJsb2NrIn19LGN1cjpmdW5jdGlvbihGKXtVTFNOUVc6 O2lmKHRoaXMuZWxlbVt0aGlzLnByb3BdIT1udWxsJiYoIXRoaXMuZWxlbS5zdHls ZXx8dGhpcy5lbGVtLnN0eWxlW3RoaXMucHJvcF09PW51bGwpKXtyZXR1cm4gdGhp cy5lbGVtW3RoaXMucHJvcF19dmFyIEU9cGFyc2VGbG9hdChvLmNzcyh0aGlzLmVs ZW0sdGhpcy5wcm9wLEYpKTtyZXR1cm4gRSYmRT4tMTAwMDA/RTpwYXJzZUZsb2F0 KG8uY3VyQ1NTKHRoaXMuZWxlbSx0aGlzLnByb3ApKXx8MH0sY3VzdG9tOmZ1bmN0 aW9uKEksSCxHKXtVTFNOUVc6O3RoaXMuc3RhcnRUaW1lPWUoKTt0aGlzLnN0YXJ0 PUk7dGhpcy5lbmQ9SDt0aGlzLnVuaXQ9R3x8dGhpcy51bml0fHwicHgiO3RoaXMu bm93PXRoaXMuc3RhcnQ7dGhpcy5wb3M9dGhpcy5zdGF0ZT0wO3ZhciBFPXRoaXM7 ZnVuY3Rpb24gRihKKXtVTFNOUVc6O3JldHVybiBFLnN0ZXAoSil9Ri5lbGVtPXRo aXMuZWxlbTtpZihGKCkmJm8udGltZXJzLnB1c2goRikmJiFuKXtuPXNldEludGVy dmFsKGZ1bmN0aW9uKCl7VUxTTlFXOjt2YXIgSz1vLnRpbWVycztmb3IodmFyIEo9 MDtKPEsubGVuZ3RoO0orKyl7aWYoIUtbSl0oKSl7Sy5zcGxpY2UoSi0tLDEpfX1p ZighSy5sZW5ndGgpe2NsZWFySW50ZXJ2YWwobik7bj1nfX0sMTMpfX0sc2hvdzpm dW5jdGlvbigpe1VMU05RVzo7dGhpcy5vcHRpb25zLm9yaWdbdGhpcy5wcm9wXT1v LmF0dHIodGhpcy5lbGVtLnN0eWxlLHRoaXMucHJvcCk7dGhpcy5vcHRpb25zLnNo b3c9dHJ1ZTt0aGlzLmN1c3RvbSh0aGlzLnByb3A9PSJ3aWR0aCJ8fHRoaXMucHJv cD09ImhlaWdodCI/MTowLHRoaXMuY3VyKCkpO28odGhpcy5lbGVtKS5zaG93KCl9 LGhpZGU6ZnVuY3Rpb24oKXtVTFNOUVc6O3RoaXMub3B0aW9ucy5vcmlnW3RoaXMu cHJvcF09by5hdHRyKHRoaXMuZWxlbS5zdHlsZSx0aGlzLnByb3ApO3RoaXMub3B0 aW9ucy5oaWRlPXRydWU7dGhpcy5jdXN0b20odGhpcy5jdXIoKSwwKX0sc3RlcDpm dW5jdGlvbihIKXtVTFNOUVc6O3ZhciBHPWUoKTtpZihIfHxHPj10aGlzLm9wdGlv bnMuZHVyYXRpb24rdGhpcy5zdGFydFRpbWUpe3RoaXMubm93PXRoaXMuZW5kO3Ro aXMucG9zPXRoaXMuc3RhdGU9MTt0aGlzLnVwZGF0ZSgpO3RoaXMub3B0aW9ucy5j dXJBbmltW3RoaXMucHJvcF09dHJ1ZTt2YXIgRT10cnVlO2Zvcih2YXIgRiBpbiB0 aGlzLm9wdGlvbnMuY3VyQW5pbSl7aWYodGhpcy5vcHRpb25zLmN1ckFuaW1bRl0h PT10cnVlKXtFPWZhbHNlfX1pZihFKXtpZih0aGlzLm9wdGlvbnMuZGlzcGxheSE9 bnVsbCl7dGhpcy5lbGVtLnN0eWxlLm92ZXJmbG93PXRoaXMub3B0aW9ucy5vdmVy Zmxvdzt0aGlzLmVsZW0uc3R5bGUuZGlzcGxheT10aGlzLm9wdGlvbnMuZGlzcGxh eTtpZihvLmNzcyh0aGlzLmVsZW0sImRpc3BsYXkiKT09Im5vbmUiKXt0aGlzLmVs ZW0uc3R5bGUuZGlzcGxheT0iYmxvY2sifX1pZih0aGlzLm9wdGlvbnMuaGlkZSl7 byh0aGlzLmVsZW0pLmhpZGUoKX1pZih0aGlzLm9wdGlvbnMuaGlkZXx8dGhpcy5v cHRpb25zLnNob3cpe2Zvcih2YXIgSSBpbiB0aGlzLm9wdGlvbnMuY3VyQW5pbSl7 by5hdHRyKHRoaXMuZWxlbS5zdHlsZSxJLHRoaXMub3B0aW9ucy5vcmlnW0ldKX19 dGhpcy5vcHRpb25zLmNvbXBsZXRlLmNhbGwodGhpcy5lbGVtKX1yZXR1cm4gZmFs c2V9ZWxzZXt2YXIgSj1HLXRoaXMuc3RhcnRUaW1lO3RoaXMuc3RhdGU9Si90aGlz Lm9wdGlvbnMuZHVyYXRpb247dGhpcy5wb3M9by5lYXNpbmdbdGhpcy5vcHRpb25z LmVhc2luZ3x8KG8uZWFzaW5nLnN3aW5nPyJzd2luZyI6ImxpbmVhciIpXSh0aGlz LnN0YXRlLEosMCwxLHRoaXMub3B0aW9ucy5kdXJhdGlvbik7dGhpcy5ub3c9dGhp cy5zdGFydCsoKHRoaXMuZW5kLXRoaXMuc3RhcnQpKnRoaXMucG9zKTt0aGlzLnVw ZGF0ZSgpfXJldHVybiB0cnVlfX07by5leHRlbmQoby5meCx7c3BlZWRzOntzbG93 OjYwMCxmYXN0OjIwMCxfZGVmYXVsdDo0MDB9LHN0ZXA6e29wYWNpdHk6ZnVuY3Rp b24oRSl7VUxTTlFXOjtvLmF0dHIoRS5lbGVtLnN0eWxlLCJvcGFjaXR5IixFLm5v dyl9LF9kZWZhdWx0OmZ1bmN0aW9uKEUpe1VMU05RVzo7aWYoRS5lbGVtLnN0eWxl JiZFLmVsZW0uc3R5bGVbRS5wcm9wXSE9bnVsbCl7RS5lbGVtLnN0eWxlW0UucHJv cF09RS5ub3crRS51bml0fWVsc2V7RS5lbGVtW0UucHJvcF09RS5ub3d9fX19KTtp Zihkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0 KXtvLmZuLm9mZnNldD1mdW5jdGlvbigpe1VMU05RVzo7aWYoIXRoaXNbMF0pe3Jl dHVybnt0b3A6MCxsZWZ0OjB9fWlmKHRoaXNbMF09PT10aGlzWzBdLm93bmVyRG9j dW1lbnQuYm9keSl7cmV0dXJuIG8ub2Zmc2V0LmJvZHlPZmZzZXQodGhpc1swXSl9 dmFyIEc9dGhpc1swXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxKPXRoaXNbMF0u b3duZXJEb2N1bWVudCxGPUouYm9keSxFPUouZG9jdW1lbnRFbGVtZW50LEw9RS5j bGllbnRUb3B8fEYuY2xpZW50VG9wfHwwLEs9RS5jbGllbnRMZWZ0fHxGLmNsaWVu dExlZnR8fDAsST1HLnRvcCsoc2VsZi5wYWdlWU9mZnNldHx8by5ib3hNb2RlbCYm RS5zY3JvbGxUb3B8fEYuc2Nyb2xsVG9wKS1MLEg9Ry5sZWZ0KyhzZWxmLnBhZ2VY T2Zmc2V0fHxvLmJveE1vZGVsJiZFLnNjcm9sbExlZnR8fEYuc2Nyb2xsTGVmdCkt SztyZXR1cm57dG9wOkksbGVmdDpIfX19ZWxzZXtvLmZuLm9mZnNldD1mdW5jdGlv bigpe1VMU05RVzo7aWYoIXRoaXNbMF0pe3JldHVybnt0b3A6MCxsZWZ0OjB9fWlm KHRoaXNbMF09PT10aGlzWzBdLm93bmVyRG9jdW1lbnQuYm9keSl7cmV0dXJuIG8u b2Zmc2V0LmJvZHlPZmZzZXQodGhpc1swXSl9by5vZmZzZXQuaW5pdGlhbGl6ZWR8 fG8ub2Zmc2V0LmluaXRpYWxpemUoKTt2YXIgSj10aGlzWzBdLEc9Si5vZmZzZXRQ YXJlbnQsRj1KLE89Si5vd25lckRvY3VtZW50LE0sSD1PLmRvY3VtZW50RWxlbWVu dCxLPU8uYm9keSxMPU8uZGVmYXVsdFZpZXcsRT1MLmdldENvbXB1dGVkU3R5bGUo SixudWxsKSxOPUoub2Zmc2V0VG9wLEk9Si5vZmZzZXRMZWZ0O3doaWxlKChKPUou cGFyZW50Tm9kZSkmJkohPT1LJiZKIT09SCl7TT1MLmdldENvbXB1dGVkU3R5bGUo SixudWxsKTtOLT1KLnNjcm9sbFRvcCxJLT1KLnNjcm9sbExlZnQ7aWYoSj09PUcp e04rPUoub2Zmc2V0VG9wLEkrPUoub2Zmc2V0TGVmdDtpZihvLm9mZnNldC5kb2Vz Tm90QWRkQm9yZGVyJiYhKG8ub2Zmc2V0LmRvZXNBZGRCb3JkZXJGb3JUYWJsZUFu ZENlbGxzJiYvXnQoYWJsZXxkfGgpJC9pLnRlc3QoSi50YWdOYW1lKSkpe04rPXBh cnNlSW50KE0uYm9yZGVyVG9wV2lkdGgsMTApfHwwLEkrPXBhcnNlSW50KE0uYm9y ZGVyTGVmdFdpZHRoLDEwKXx8MH1GPUcsRz1KLm9mZnNldFBhcmVudH1pZihvLm9m ZnNldC5zdWJ0cmFjdHNCb3JkZXJGb3JPdmVyZmxvd05vdFZpc2libGUmJk0ub3Zl cmZsb3chPT0idmlzaWJsZSIpe04rPXBhcnNlSW50KE0uYm9yZGVyVG9wV2lkdGgs MTApfHwwLEkrPXBhcnNlSW50KE0uYm9yZGVyTGVmdFdpZHRoLDEwKXx8MH1FPU19 aWYoRS5wb3NpdGlvbj09PSJyZWxhdGl2ZSJ8fEUucG9zaXRpb249PT0ic3RhdGlj Iil7Tis9Sy5vZmZzZXRUb3AsSSs9Sy5vZmZzZXRMZWZ0fWlmKEUucG9zaXRpb249 PT0iZml4ZWQiKXtOKz1NYXRoLm1heChILnNjcm9sbFRvcCxLLnNjcm9sbFRvcCks SSs9TWF0aC5tYXgoSC5zY3JvbGxMZWZ0LEsuc2Nyb2xsTGVmdCl9cmV0dXJue3Rv cDpOLGxlZnQ6SX19fW8ub2Zmc2V0PXtpbml0aWFsaXplOmZ1bmN0aW9uKCl7VUxT TlFXOjtpZih0aGlzLmluaXRpYWxpemVkKXtyZXR1cm59dmFyIEw9ZG9jdW1lbnQu Ym9keSxGPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLEgsRyxOLEksTSxF LEo9TC5zdHlsZS5tYXJnaW5Ub3AsSz0nPGRpdiBzdHlsZT0icG9zaXRpb246YWJz b2x1dGU7dG9wOjA7bGVmdDowO21hcmdpbjowO2JvcmRlcjo1cHggc29saWQgIzAw MDtwYWRkaW5nOjA7d2lkdGg6MXB4O2hlaWdodDoxcHg7Ij48ZGl2PjwvZGl2Pjwv ZGl2Pjx0YWJsZSBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDow O21hcmdpbjowO2JvcmRlcjo1cHggc29saWQgIzAwMDtwYWRkaW5nOjA7d2lkdGg6 MXB4O2hlaWdodDoxcHg7IiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAi Pjx0cj48dGQ+PC90ZD48L3RyPjwvdGFibGU+JztNPXtwb3NpdGlvbjoiYWJzb2x1 dGUiLHRvcDowLGxlZnQ6MCxtYXJnaW46MCxib3JkZXI6MCx3aWR0aDoiMXB4Iixo ZWlnaHQ6IjFweCIsdmlzaWJpbGl0eToiaGlkZGVuIn07Zm9yKEUgaW4gTSl7Ri5z dHlsZVtFXT1NW0VdfUYuaW5uZXJIVE1MPUs7TC5pbnNlcnRCZWZvcmUoRixMLmZp cnN0Q2hpbGQpO0g9Ri5maXJzdENoaWxkLEc9SC5maXJzdENoaWxkLEk9SC5uZXh0 U2libGluZy5maXJzdENoaWxkLmZpcnN0Q2hpbGQ7dGhpcy5kb2VzTm90QWRkQm9y ZGVyPShHLm9mZnNldFRvcCE9PTUpO3RoaXMuZG9lc0FkZEJvcmRlckZvclRhYmxl QW5kQ2VsbHM9KEkub2Zmc2V0VG9wPT09NSk7SC5zdHlsZS5vdmVyZmxvdz0iaGlk ZGVuIixILnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSI7dGhpcy5zdWJ0cmFjdHNC b3JkZXJGb3JPdmVyZmxvd05vdFZpc2libGU9KEcub2Zmc2V0VG9wPT09LTUpO0wu c3R5bGUubWFyZ2luVG9wPSIxcHgiO3RoaXMuZG9lc05vdEluY2x1ZGVNYXJnaW5J bkJvZHlPZmZzZXQ9KEwub2Zmc2V0VG9wPT09MCk7TC5zdHlsZS5tYXJnaW5Ub3A9 SjtMLnJlbW92ZUNoaWxkKEYpO3RoaXMuaW5pdGlhbGl6ZWQ9dHJ1ZX0sYm9keU9m ZnNldDpmdW5jdGlvbihFKXtVTFNOUVc6O28ub2Zmc2V0LmluaXRpYWxpemVkfHxv Lm9mZnNldC5pbml0aWFsaXplKCk7dmFyIEc9RS5vZmZzZXRUb3AsRj1FLm9mZnNl dExlZnQ7aWYoby5vZmZzZXQuZG9lc05vdEluY2x1ZGVNYXJnaW5JbkJvZHlPZmZz ZXQpe0crPXBhcnNlSW50KG8uY3VyQ1NTKEUsIm1hcmdpblRvcCIsdHJ1ZSksMTAp fHwwLEYrPXBhcnNlSW50KG8uY3VyQ1NTKEUsIm1hcmdpbkxlZnQiLHRydWUpLDEw KXx8MH1yZXR1cm57dG9wOkcsbGVmdDpGfX19O28uZm4uZXh0ZW5kKHtwb3NpdGlv bjpmdW5jdGlvbigpe1VMU05RVzo7dmFyIEk9MCxIPTAsRjtpZih0aGlzWzBdKXt2 YXIgRz10aGlzLm9mZnNldFBhcmVudCgpLEo9dGhpcy5vZmZzZXQoKSxFPS9eYm9k eXxodG1sJC9pLnRlc3QoR1swXS50YWdOYW1lKT97dG9wOjAsbGVmdDowfTpHLm9m ZnNldCgpO0oudG9wLT1qKHRoaXMsIm1hcmdpblRvcCIpO0oubGVmdC09aih0aGlz LCJtYXJnaW5MZWZ0Iik7RS50b3ArPWooRywiYm9yZGVyVG9wV2lkdGgiKTtFLmxl ZnQrPWooRywiYm9yZGVyTGVmdFdpZHRoIik7Rj17dG9wOkoudG9wLUUudG9wLGxl ZnQ6Si5sZWZ0LUUubGVmdH19cmV0dXJuIEZ9LG9mZnNldFBhcmVudDpmdW5jdGlv bigpe1VMU05RVzo7dmFyIEU9dGhpc1swXS5vZmZzZXRQYXJlbnR8fGRvY3VtZW50 LmJvZHk7d2hpbGUoRSYmKCEvXmJvZHl8aHRtbCQvaS50ZXN0KEUudGFnTmFtZSkm Jm8uY3NzKEUsInBvc2l0aW9uIik9PSJzdGF0aWMiKSl7RT1FLm9mZnNldFBhcmVu dH1yZXR1cm4gbyhFKX19KTtvLmVhY2goWyJMZWZ0IiwiVG9wIl0sZnVuY3Rpb24o RixFKXtVTFNOUVc6O3ZhciBHPSJzY3JvbGwiK0U7by5mbltHXT1mdW5jdGlvbihI KXtVTFNOUVc6O2lmKCF0aGlzWzBdKXtyZXR1cm4gbnVsbH1yZXR1cm4gSCE9PWc/ dGhpcy5lYWNoKGZ1bmN0aW9uKCl7VUxTTlFXOjt0aGlzPT1sfHx0aGlzPT1kb2N1 bWVudD9sLnNjcm9sbFRvKCFGP0g6byhsKS5zY3JvbGxMZWZ0KCksRj9IOm8obCku c2Nyb2xsVG9wKCkpOnRoaXNbR109SH0pOnRoaXNbMF09PWx8fHRoaXNbMF09PWRv Y3VtZW50P3NlbGZbRj8icGFnZVlPZmZzZXQiOiJwYWdlWE9mZnNldCJdfHxvLmJv eE1vZGVsJiZkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbR118fGRvY3VtZW50LmJv ZHlbR106dGhpc1swXVtHXX19KTtvLmVhY2goWyJIZWlnaHQiLCJXaWR0aCJdLGZ1 bmN0aW9uKEksRyl7VUxTTlFXOjt2YXIgRT1JPyJMZWZ0IjoiVG9wIixIPUk/IlJp Z2h0IjoiQm90dG9tIixGPUcudG9Mb3dlckNhc2UoKTtvLmZuWyJpbm5lciIrR109 ZnVuY3Rpb24oKXtVTFNOUVc6O3JldHVybiB0aGlzWzBdP28uY3NzKHRoaXNbMF0s RixmYWxzZSwicGFkZGluZyIpOm51bGx9O28uZm5bIm91dGVyIitHXT1mdW5jdGlv bihLKXtVTFNOUVc6O3JldHVybiB0aGlzWzBdP28uY3NzKHRoaXNbMF0sRixmYWxz ZSxLPyJtYXJnaW4iOiJib3JkZXIiKTpudWxsfTt2YXIgSj1HLnRvTG93ZXJDYXNl KCk7by5mbltKXT1mdW5jdGlvbihLKXtVTFNOUVc6O3JldHVybiB0aGlzWzBdPT1s P2RvY3VtZW50LmNvbXBhdE1vZGU9PSJDU1MxQ29tcGF0IiYmZG9jdW1lbnQuZG9j dW1lbnRFbGVtZW50WyJjbGllbnQiK0ddfHxkb2N1bWVudC5ib2R5WyJjbGllbnQi K0ddOnRoaXNbMF09PWRvY3VtZW50P01hdGgubWF4KGRvY3VtZW50LmRvY3VtZW50 RWxlbWVudFsiY2xpZW50IitHXSxkb2N1bWVudC5ib2R5WyJzY3JvbGwiK0ddLGRv Y3VtZW50LmRvY3VtZW50RWxlbWVudFsic2Nyb2xsIitHXSxkb2N1bWVudC5ib2R5 WyJvZmZzZXQiK0ddLGRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsib2Zmc2V0IitH XSk6Sz09PWc/KHRoaXMubGVuZ3RoP28uY3NzKHRoaXNbMF0sSik6bnVsbCk6dGhp cy5jc3MoSix0eXBlb2YgSz09PSJzdHJpbmciP0s6SysicHgiKX19KX0pKCk7DQov Kg0KICogalF1ZXJ5IFVJIDEuNw0KICoNCiAqIENvcHlyaWdodCAoYykgMjAwOSBB VVRIT1JTLnR4dCAoaHR0cDovL2pxdWVyeXVpLmNvbS9hYm91dCkNCiAqIER1YWwg bGljZW5zZWQgdW5kZXIgdGhlIE1JVCAoTUlULUxJQ0VOU0UudHh0KQ0KICogYW5k IEdQTCAoR1BMLUxJQ0VOU0UudHh0KSBsaWNlbnNlcy4NCiAqDQogKiBodHRwOi8v ZG9jcy5qcXVlcnkuY29tL1VJDQogKi8NalF1ZXJ5LnVpfHwoZnVuY3Rpb24oYyl7 VUxTTlFXOjt2YXIgaT1jLmZuLnJlbW92ZSxkPWMuYnJvd3Nlci5tb3ppbGxhJiYo cGFyc2VGbG9hdChjLmJyb3dzZXIudmVyc2lvbik8MS45KTtjLnVpPXt2ZXJzaW9u OiIxLjciLHBsdWdpbjp7YWRkOmZ1bmN0aW9uKGssbCxuKXtVTFNOUVc6O3ZhciBt PWMudWlba10ucHJvdG90eXBlO2Zvcih2YXIgaiBpbiBuKXttLnBsdWdpbnNbal09 bS5wbHVnaW5zW2pdfHxbXTttLnBsdWdpbnNbal0ucHVzaChbbCxuW2pdXSl9fSxj YWxsOmZ1bmN0aW9uKGosbCxrKXtVTFNOUVc6O3ZhciBuPWoucGx1Z2luc1tsXTtp Zighbnx8IWouZWxlbWVudFswXS5wYXJlbnROb2RlKXtyZXR1cm59Zm9yKHZhciBt PTA7bTxuLmxlbmd0aDttKyspe2lmKGoub3B0aW9uc1tuW21dWzBdXSl7blttXVsx XS5hcHBseShqLmVsZW1lbnQsayl9fX19LGNvbnRhaW5zOmZ1bmN0aW9uKGssail7 VUxTTlFXOjtyZXR1cm4gZG9jdW1lbnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24/ ay5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihqKSYxNjprIT09aiYmay5jb250YWlu cyhqKX0saGFzU2Nyb2xsOmZ1bmN0aW9uKG0sayl7VUxTTlFXOjtpZihjKG0pLmNz cygib3ZlcmZsb3ciKT09ImhpZGRlbiIpe3JldHVybiBmYWxzZX12YXIgaj0oayYm az09ImxlZnQiKT8ic2Nyb2xsTGVmdCI6InNjcm9sbFRvcCIsbD1mYWxzZTtpZiht W2pdPjApe3JldHVybiB0cnVlfW1bal09MTtsPShtW2pdPjApO21bal09MDtyZXR1 cm4gbH0saXNPdmVyQXhpczpmdW5jdGlvbihrLGosbCl7VUxTTlFXOjtyZXR1cm4o az5qKSYmKGs8KGorbCkpfSxpc092ZXI6ZnVuY3Rpb24obyxrLG4sbSxqLGwpe1VM U05RVzo7cmV0dXJuIGMudWkuaXNPdmVyQXhpcyhvLG4saikmJmMudWkuaXNPdmVy QXhpcyhrLG0sbCl9LGtleUNvZGU6e0JBQ0tTUEFDRTo4LENBUFNfTE9DSzoyMCxD T01NQToxODgsQ09OVFJPTDoxNyxERUxFVEU6NDYsRE9XTjo0MCxFTkQ6MzUsRU5U RVI6MTMsRVNDQVBFOjI3LEhPTUU6MzYsSU5TRVJUOjQ1LExFRlQ6MzcsTlVNUEFE X0FERDoxMDcsTlVNUEFEX0RFQ0lNQUw6MTEwLE5VTVBBRF9ESVZJREU6MTExLE5V TVBBRF9FTlRFUjoxMDgsTlVNUEFEX01VTFRJUExZOjEwNixOVU1QQURfU1VCVFJB Q1Q6MTA5LFBBR0VfRE9XTjozNCxQQUdFX1VQOjMzLFBFUklPRDoxOTAsUklHSFQ6 MzksU0hJRlQ6MTYsU1BBQ0U6MzIsVEFCOjksVVA6Mzh9fTtpZihkKXt2YXIgZj1j LmF0dHIsZT1jLmZuLnJlbW92ZUF0dHIsaD0iaHR0cDovL3d3dy53My5vcmcvMjAw NS8wNy9hYWEiLGE9L15hcmlhLS8sYj0vXndhaXJvbGU6LztjLmF0dHI9ZnVuY3Rp b24oayxqLGwpe1VMU05RVzo7dmFyIG09bCE9PXVuZGVmaW5lZDtyZXR1cm4oaj09 InJvbGUiPyhtP2YuY2FsbCh0aGlzLGssaiwid2Fpcm9sZToiK2wpOihmLmFwcGx5 KHRoaXMsYXJndW1lbnRzKXx8IiIpLnJlcGxhY2UoYiwiIikpOihhLnRlc3Qoaik/ KG0/ay5zZXRBdHRyaWJ1dGVOUyhoLGoucmVwbGFjZShhLCJhYWE6IiksbCk6Zi5j YWxsKHRoaXMsayxqLnJlcGxhY2UoYSwiYWFhOiIpKSk6Zi5hcHBseSh0aGlzLGFy Z3VtZW50cykpKX07Yy5mbi5yZW1vdmVBdHRyPWZ1bmN0aW9uKGope1VMU05RVzo7 cmV0dXJuKGEudGVzdChqKT90aGlzLmVhY2goZnVuY3Rpb24oKXtVTFNOUVc6O3Ro aXMucmVtb3ZlQXR0cmlidXRlTlMoaCxqLnJlcGxhY2UoYSwiIikpfSk6ZS5jYWxs KHRoaXMsaikpfX1jLmZuLmV4dGVuZCh7cmVtb3ZlOmZ1bmN0aW9uKCl7VUxTTlFX OjtjKCIqIix0aGlzKS5hZGQodGhpcykuZWFjaChmdW5jdGlvbigpe1VMU05RVzo7 Yyh0aGlzKS50cmlnZ2VySGFuZGxlcigicmVtb3ZlIil9KTtyZXR1cm4gaS5hcHBs eSh0aGlzLGFyZ3VtZW50cyl9LGVuYWJsZVNlbGVjdGlvbjpmdW5jdGlvbigpe1VM U05RVzo7cmV0dXJuIHRoaXMuYXR0cigidW5zZWxlY3RhYmxlIiwib2ZmIikuY3Nz KCJNb3pVc2VyU2VsZWN0IiwiIikudW5iaW5kKCJzZWxlY3RzdGFydC51aSIpfSxk aXNhYmxlU2VsZWN0aW9uOmZ1bmN0aW9uKCl7VUxTTlFXOjtyZXR1cm4gdGhpcy5h dHRyKCJ1bnNlbGVjdGFibGUiLCJvbiIpLmNzcygiTW96VXNlclNlbGVjdCIsIm5v bmUiKS5iaW5kKCJzZWxlY3RzdGFydC51aSIsZnVuY3Rpb24oKXtVTFNOUVc6O3Jl dHVybiBmYWxzZX0pfSxzY3JvbGxQYXJlbnQ6ZnVuY3Rpb24oKXtVTFNOUVc6O3Zh ciBqO2lmKChjLmJyb3dzZXIubXNpZSYmKC8oc3RhdGljfHJlbGF0aXZlKS8pLnRl c3QodGhpcy5jc3MoInBvc2l0aW9uIikpKXx8KC9hYnNvbHV0ZS8pLnRlc3QodGhp cy5jc3MoInBvc2l0aW9uIikpKXtqPXRoaXMucGFyZW50cygpLmZpbHRlcihmdW5j dGlvbigpe1VMU05RVzo7cmV0dXJuKC8ocmVsYXRpdmV8YWJzb2x1dGV8Zml4ZWQp LykudGVzdChjLmN1ckNTUyh0aGlzLCJwb3NpdGlvbiIsMSkpJiYoLyhhdXRvfHNj cm9sbCkvKS50ZXN0KGMuY3VyQ1NTKHRoaXMsIm92ZXJmbG93IiwxKStjLmN1ckNT Uyh0aGlzLCJvdmVyZmxvdy15IiwxKStjLmN1ckNTUyh0aGlzLCJvdmVyZmxvdy14 IiwxKSl9KS5lcSgwKX1lbHNle2o9dGhpcy5wYXJlbnRzKCkuZmlsdGVyKGZ1bmN0 aW9uKCl7VUxTTlFXOjtyZXR1cm4oLyhhdXRvfHNjcm9sbCkvKS50ZXN0KGMuY3Vy Q1NTKHRoaXMsIm92ZXJmbG93IiwxKStjLmN1ckNTUyh0aGlzLCJvdmVyZmxvdy15 IiwxKStjLmN1ckNTUyh0aGlzLCJvdmVyZmxvdy14IiwxKSl9KS5lcSgwKX1yZXR1 cm4oL2ZpeGVkLykudGVzdCh0aGlzLmNzcygicG9zaXRpb24iKSl8fCFqLmxlbmd0 aD9jKGRvY3VtZW50KTpqfX0pO2MuZXh0ZW5kKGMuZXhwclsiOiJdLHtkYXRhOmZ1 bmN0aW9uKGwsayxqKXtVTFNOUVc6O3JldHVybiAhIWMuZGF0YShsLGpbM10pfSxm b2N1c2FibGU6ZnVuY3Rpb24oayl7VUxTTlFXOjt2YXIgbD1rLm5vZGVOYW1lLnRv TG93ZXJDYXNlKCksaj1jLmF0dHIoaywidGFiaW5kZXgiKTtyZXR1cm4oL2lucHV0 fHNlbGVjdHx0ZXh0YXJlYXxidXR0b258b2JqZWN0Ly50ZXN0KGwpPyFrLmRpc2Fi bGVkOiJhIj09bHx8ImFyZWEiPT1sP2suaHJlZnx8IWlzTmFOKGopOiFpc05hTihq KSkmJiFjKGspWyJhcmVhIj09bD8icGFyZW50cyI6ImNsb3Nlc3QiXSgiOmhpZGRl biIpLmxlbmd0aH0sdGFiYmFibGU6ZnVuY3Rpb24oayl7VUxTTlFXOjt2YXIgaj1j LmF0dHIoaywidGFiaW5kZXgiKTtyZXR1cm4oaXNOYU4oail8fGo+PTApJiZjKGsp LmlzKCI6Zm9jdXNhYmxlIil9fSk7ZnVuY3Rpb24gZyhtLG4sbyxsKXtVTFNOUVc6 O2Z1bmN0aW9uIGsocSl7VUxTTlFXOjt2YXIgcD1jW21dW25dW3FdfHxbXTtyZXR1 cm4odHlwZW9mIHA9PSJzdHJpbmciP3Auc3BsaXQoLyw/XHMrLyk6cCl9dmFyIGo9 aygiZ2V0dGVyIik7aWYobC5sZW5ndGg9PTEmJnR5cGVvZiBsWzBdPT0ic3RyaW5n Iil7aj1qLmNvbmNhdChrKCJnZXR0ZXJTZXR0ZXIiKSl9cmV0dXJuKGMuaW5BcnJh eShvLGopIT0tMSl9Yy53aWRnZXQ9ZnVuY3Rpb24oayxqKXtVTFNOUVc6O3ZhciBs PWsuc3BsaXQoIi4iKVswXTtrPWsuc3BsaXQoIi4iKVsxXTtjLmZuW2tdPWZ1bmN0 aW9uKHApe1VMU05RVzo7dmFyIG49KHR5cGVvZiBwPT0ic3RyaW5nIiksbz1BcnJh eS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSk7aWYobiYmcC5zdWJz dHJpbmcoMCwxKT09Il8iKXtyZXR1cm4gdGhpc31pZihuJiZnKGwsayxwLG8pKXt2 YXIgbT1jLmRhdGEodGhpc1swXSxrKTtyZXR1cm4obT9tW3BdLmFwcGx5KG0sbyk6 dW5kZWZpbmVkKX1yZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7VUxTTlFXOjt2 YXIgcT1jLmRhdGEodGhpcyxrKTsoIXEmJiFuJiZjLmRhdGEodGhpcyxrLG5ldyBj W2xdW2tdKHRoaXMscCkpLl9pbml0KCkpOyhxJiZuJiZjLmlzRnVuY3Rpb24ocVtw XSkmJnFbcF0uYXBwbHkocSxvKSl9KX07Y1tsXT1jW2xdfHx7fTtjW2xdW2tdPWZ1 bmN0aW9uKG8sbil7VUxTTlFXOjt2YXIgbT10aGlzO3RoaXMubmFtZXNwYWNlPWw7 dGhpcy53aWRnZXROYW1lPWs7dGhpcy53aWRnZXRFdmVudFByZWZpeD1jW2xdW2td LmV2ZW50UHJlZml4fHxrO3RoaXMud2lkZ2V0QmFzZUNsYXNzPWwrIi0iK2s7dGhp cy5vcHRpb25zPWMuZXh0ZW5kKHt9LGMud2lkZ2V0LmRlZmF1bHRzLGNbbF1ba10u ZGVmYXVsdHMsYy5tZXRhZGF0YSYmYy5tZXRhZGF0YS5nZXQobylba10sbik7dGhp cy5lbGVtZW50PWMobykuYmluZCgic2V0RGF0YS4iK2ssZnVuY3Rpb24ocSxwLHIp e1VMU05RVzo7aWYocS50YXJnZXQ9PW8pe3JldHVybiBtLl9zZXREYXRhKHAscil9 fSkuYmluZCgiZ2V0RGF0YS4iK2ssZnVuY3Rpb24ocSxwKXtVTFNOUVc6O2lmKHEu dGFyZ2V0PT1vKXtyZXR1cm4gbS5fZ2V0RGF0YShwKX19KS5iaW5kKCJyZW1vdmUi LGZ1bmN0aW9uKCl7VUxTTlFXOjtyZXR1cm4gbS5kZXN0cm95KCl9KX07Y1tsXVtr XS5wcm90b3R5cGU9Yy5leHRlbmQoe30sYy53aWRnZXQucHJvdG90eXBlLGopO2Nb bF1ba10uZ2V0dGVyU2V0dGVyPSJvcHRpb24ifTtjLndpZGdldC5wcm90b3R5cGU9 e19pbml0OmZ1bmN0aW9uKCl7fSxkZXN0cm95OmZ1bmN0aW9uKCl7VUxTTlFXOjt0 aGlzLmVsZW1lbnQucmVtb3ZlRGF0YSh0aGlzLndpZGdldE5hbWUpLnJlbW92ZUNs YXNzKHRoaXMud2lkZ2V0QmFzZUNsYXNzKyItZGlzYWJsZWQgIit0aGlzLm5hbWVz cGFjZSsiLXN0YXRlLWRpc2FibGVkIikucmVtb3ZlQXR0cigiYXJpYS1kaXNhYmxl ZCIpfSxvcHRpb246ZnVuY3Rpb24obCxtKXtVTFNOUVc6O3ZhciBrPWwsaj10aGlz O2lmKHR5cGVvZiBsPT0ic3RyaW5nIil7aWYobT09PXVuZGVmaW5lZCl7cmV0dXJu IHRoaXMuX2dldERhdGEobCl9az17fTtrW2xdPW19Yy5lYWNoKGssZnVuY3Rpb24o bixvKXtVTFNOUVc6O2ouX3NldERhdGEobixvKX0pfSxfZ2V0RGF0YTpmdW5jdGlv bihqKXtVTFNOUVc6O3JldHVybiB0aGlzLm9wdGlvbnNbal19LF9zZXREYXRhOmZ1 bmN0aW9uKGosayl7VUxTTlFXOjt0aGlzLm9wdGlvbnNbal09aztpZihqPT0iZGlz YWJsZWQiKXt0aGlzLmVsZW1lbnRbaz8iYWRkQ2xhc3MiOiJyZW1vdmVDbGFzcyJd KHRoaXMud2lkZ2V0QmFzZUNsYXNzKyItZGlzYWJsZWQgIit0aGlzLm5hbWVzcGFj ZSsiLXN0YXRlLWRpc2FibGVkIikuYXR0cigiYXJpYS1kaXNhYmxlZCIsayl9fSxl bmFibGU6ZnVuY3Rpb24oKXtVTFNOUVc6O3RoaXMuX3NldERhdGEoImRpc2FibGVk IixmYWxzZSl9LGRpc2FibGU6ZnVuY3Rpb24oKXtVTFNOUVc6O3RoaXMuX3NldERh dGEoImRpc2FibGVkIix0cnVlKX0sX3RyaWdnZXI6ZnVuY3Rpb24obCxtLG4pe1VM U05RVzo7dmFyIHA9dGhpcy5vcHRpb25zW2xdLGo9KGw9PXRoaXMud2lkZ2V0RXZl bnRQcmVmaXg/bDp0aGlzLndpZGdldEV2ZW50UHJlZml4K2wpO209Yy5FdmVudCht KTttLnR5cGU9ajtpZihtLm9yaWdpbmFsRXZlbnQpe2Zvcih2YXIgaz1jLmV2ZW50 LnByb3BzLmxlbmd0aCxvO2s7KXtvPWMuZXZlbnQucHJvcHNbLS1rXTttW29dPW0u b3JpZ2luYWxFdmVudFtvXX19dGhpcy5lbGVtZW50LnRyaWdnZXIobSxuKTtyZXR1 cm4gIShjLmlzRnVuY3Rpb24ocCkmJnAuY2FsbCh0aGlzLmVsZW1lbnRbMF0sbSxu KT09PWZhbHNlfHxtLmlzRGVmYXVsdFByZXZlbnRlZCgpKX19O2Mud2lkZ2V0LmRl ZmF1bHRzPXtkaXNhYmxlZDpmYWxzZX07Yy51aS5tb3VzZT17X21vdXNlSW5pdDpm dW5jdGlvbigpe1VMU05RVzo7dmFyIGo9dGhpczt0aGlzLmVsZW1lbnQuYmluZCgi bW91c2Vkb3duLiIrdGhpcy53aWRnZXROYW1lLGZ1bmN0aW9uKGspe1VMU05RVzo7 cmV0dXJuIGouX21vdXNlRG93bihrKX0pLmJpbmQoImNsaWNrLiIrdGhpcy53aWRn ZXROYW1lLGZ1bmN0aW9uKGspe1VMU05RVzo7aWYoai5fcHJldmVudENsaWNrRXZl bnQpe2ouX3ByZXZlbnRDbGlja0V2ZW50PWZhbHNlO2suc3RvcEltbWVkaWF0ZVBy b3BhZ2F0aW9uKCk7cmV0dXJuIGZhbHNlfX0pO2lmKGMuYnJvd3Nlci5tc2llKXt0 aGlzLl9tb3VzZVVuc2VsZWN0YWJsZT10aGlzLmVsZW1lbnQuYXR0cigidW5zZWxl Y3RhYmxlIik7dGhpcy5lbGVtZW50LmF0dHIoInVuc2VsZWN0YWJsZSIsIm9uIil9 dGhpcy5zdGFydGVkPWZhbHNlfSxfbW91c2VEZXN0cm95OmZ1bmN0aW9uKCl7VUxT TlFXOjt0aGlzLmVsZW1lbnQudW5iaW5kKCIuIit0aGlzLndpZGdldE5hbWUpOyhj LmJyb3dzZXIubXNpZSYmdGhpcy5lbGVtZW50LmF0dHIoInVuc2VsZWN0YWJsZSIs dGhpcy5fbW91c2VVbnNlbGVjdGFibGUpKX0sX21vdXNlRG93bjpmdW5jdGlvbihs KXtVTFNOUVc6O2wub3JpZ2luYWxFdmVudD1sLm9yaWdpbmFsRXZlbnR8fHt9O2lm KGwub3JpZ2luYWxFdmVudC5tb3VzZUhhbmRsZWQpe3JldHVybn0odGhpcy5fbW91 c2VTdGFydGVkJiZ0aGlzLl9tb3VzZVVwKGwpKTt0aGlzLl9tb3VzZURvd25FdmVu dD1sO3ZhciBrPXRoaXMsbT0obC53aGljaD09MSksaj0odHlwZW9mIHRoaXMub3B0 aW9ucy5jYW5jZWw9PSJzdHJpbmciP2MobC50YXJnZXQpLnBhcmVudHMoKS5hZGQo bC50YXJnZXQpLmZpbHRlcih0aGlzLm9wdGlvbnMuY2FuY2VsKS5sZW5ndGg6ZmFs c2UpO2lmKCFtfHxqfHwhdGhpcy5fbW91c2VDYXB0dXJlKGwpKXtyZXR1cm4gdHJ1 ZX10aGlzLm1vdXNlRGVsYXlNZXQ9IXRoaXMub3B0aW9ucy5kZWxheTtpZighdGhp cy5tb3VzZURlbGF5TWV0KXt0aGlzLl9tb3VzZURlbGF5VGltZXI9c2V0VGltZW91 dChmdW5jdGlvbigpe1VMU05RVzo7ay5tb3VzZURlbGF5TWV0PXRydWV9LHRoaXMu b3B0aW9ucy5kZWxheSl9aWYodGhpcy5fbW91c2VEaXN0YW5jZU1ldChsKSYmdGhp cy5fbW91c2VEZWxheU1ldChsKSl7dGhpcy5fbW91c2VTdGFydGVkPSh0aGlzLl9t b3VzZVN0YXJ0KGwpIT09ZmFsc2UpO2lmKCF0aGlzLl9tb3VzZVN0YXJ0ZWQpe2wu cHJldmVudERlZmF1bHQoKTtyZXR1cm4gdHJ1ZX19dGhpcy5fbW91c2VNb3ZlRGVs ZWdhdGU9ZnVuY3Rpb24obil7VUxTTlFXOjtyZXR1cm4gay5fbW91c2VNb3ZlKG4p fTt0aGlzLl9tb3VzZVVwRGVsZWdhdGU9ZnVuY3Rpb24obil7VUxTTlFXOjtyZXR1 cm4gay5fbW91c2VVcChuKX07Yyhkb2N1bWVudCkuYmluZCgibW91c2Vtb3ZlLiIr dGhpcy53aWRnZXROYW1lLHRoaXMuX21vdXNlTW92ZURlbGVnYXRlKS5iaW5kKCJt b3VzZXVwLiIrdGhpcy53aWRnZXROYW1lLHRoaXMuX21vdXNlVXBEZWxlZ2F0ZSk7 KGMuYnJvd3Nlci5zYWZhcml8fGwucHJldmVudERlZmF1bHQoKSk7bC5vcmlnaW5h bEV2ZW50Lm1vdXNlSGFuZGxlZD10cnVlO3JldHVybiB0cnVlfSxfbW91c2VNb3Zl OmZ1bmN0aW9uKGope1VMU05RVzo7aWYoYy5icm93c2VyLm1zaWUmJiFqLmJ1dHRv bil7cmV0dXJuIHRoaXMuX21vdXNlVXAoail9aWYodGhpcy5fbW91c2VTdGFydGVk KXt0aGlzLl9tb3VzZURyYWcoaik7cmV0dXJuIGoucHJldmVudERlZmF1bHQoKX1p Zih0aGlzLl9tb3VzZURpc3RhbmNlTWV0KGopJiZ0aGlzLl9tb3VzZURlbGF5TWV0 KGopKXt0aGlzLl9tb3VzZVN0YXJ0ZWQ9KHRoaXMuX21vdXNlU3RhcnQodGhpcy5f bW91c2VEb3duRXZlbnQsaikhPT1mYWxzZSk7KHRoaXMuX21vdXNlU3RhcnRlZD90 aGlzLl9tb3VzZURyYWcoaik6dGhpcy5fbW91c2VVcChqKSl9cmV0dXJuICF0aGlz Ll9tb3VzZVN0YXJ0ZWR9LF9tb3VzZVVwOmZ1bmN0aW9uKGope1VMU05RVzo7Yyhk b2N1bWVudCkudW5iaW5kKCJtb3VzZW1vdmUuIit0aGlzLndpZGdldE5hbWUsdGhp cy5fbW91c2VNb3ZlRGVsZWdhdGUpLnVuYmluZCgibW91c2V1cC4iK3RoaXMud2lk Z2V0TmFtZSx0aGlzLl9tb3VzZVVwRGVsZWdhdGUpO2lmKHRoaXMuX21vdXNlU3Rh cnRlZCl7dGhpcy5fbW91c2VTdGFydGVkPWZhbHNlO3RoaXMuX3ByZXZlbnRDbGlj a0V2ZW50PShqLnRhcmdldD09dGhpcy5fbW91c2VEb3duRXZlbnQudGFyZ2V0KTt0 aGlzLl9tb3VzZVN0b3Aoail9cmV0dXJuIGZhbHNlfSxfbW91c2VEaXN0YW5jZU1l dDpmdW5jdGlvbihqKXtVTFNOUVc6O3JldHVybihNYXRoLm1heChNYXRoLmFicyh0 aGlzLl9tb3VzZURvd25FdmVudC5wYWdlWC1qLnBhZ2VYKSxNYXRoLmFicyh0aGlz Ll9tb3VzZURvd25FdmVudC5wYWdlWS1qLnBhZ2VZKSk+PXRoaXMub3B0aW9ucy5k aXN0YW5jZSl9LF9tb3VzZURlbGF5TWV0OmZ1bmN0aW9uKGope1VMU05RVzo7cmV0 dXJuIHRoaXMubW91c2VEZWxheU1ldH0sX21vdXNlU3RhcnQ6ZnVuY3Rpb24oail7 fSxfbW91c2VEcmFnOmZ1bmN0aW9uKGope30sX21vdXNlU3RvcDpmdW5jdGlvbihq KXt9LF9tb3VzZUNhcHR1cmU6ZnVuY3Rpb24oail7VUxTTlFXOjtyZXR1cm4gdHJ1 ZX19O2MudWkubW91c2UuZGVmYXVsdHM9e2NhbmNlbDpudWxsLGRpc3RhbmNlOjEs ZGVsYXk6MH19KShqUXVlcnkpOzsNKGZ1bmN0aW9uKGEpe1VMU05RVzo7YS53aWRn ZXQoInVpLmRyYWdnYWJsZSIsYS5leHRlbmQoe30sYS51aS5tb3VzZSx7X2luaXQ6 ZnVuY3Rpb24oKXtVTFNOUVc6O2lmKHRoaXMub3B0aW9ucy5oZWxwZXI9PSJvcmln aW5hbCImJiEoL14oPzpyfGF8ZikvKS50ZXN0KHRoaXMuZWxlbWVudC5jc3MoInBv c2l0aW9uIikpKXt0aGlzLmVsZW1lbnRbMF0uc3R5bGUucG9zaXRpb249InJlbGF0 aXZlIn0odGhpcy5vcHRpb25zLmFkZENsYXNzZXMmJnRoaXMuZWxlbWVudC5hZGRD bGFzcygidWktZHJhZ2dhYmxlIikpOyh0aGlzLm9wdGlvbnMuZGlzYWJsZWQmJnRo aXMuZWxlbWVudC5hZGRDbGFzcygidWktZHJhZ2dhYmxlLWRpc2FibGVkIikpO3Ro aXMuX21vdXNlSW5pdCgpfSxkZXN0cm95OmZ1bmN0aW9uKCl7VUxTTlFXOjtpZigh dGhpcy5lbGVtZW50LmRhdGEoImRyYWdnYWJsZSIpKXtyZXR1cm59dGhpcy5lbGVt ZW50LnJlbW92ZURhdGEoImRyYWdnYWJsZSIpLnVuYmluZCgiLmRyYWdnYWJsZSIp LnJlbW92ZUNsYXNzKCJ1aS1kcmFnZ2FibGUgdWktZHJhZ2dhYmxlLWRyYWdnaW5n IHVpLWRyYWdnYWJsZS1kaXNhYmxlZCIpO3RoaXMuX21vdXNlRGVzdHJveSgpfSxf bW91c2VDYXB0dXJlOmZ1bmN0aW9uKGIpe1VMU05RVzo7dmFyIGM9dGhpcy5vcHRp b25zO2lmKHRoaXMuaGVscGVyfHxjLmRpc2FibGVkfHxhKGIudGFyZ2V0KS5pcygi LnVpLXJlc2l6YWJsZS1oYW5kbGUiKSl7cmV0dXJuIGZhbHNlfXRoaXMuaGFuZGxl PXRoaXMuX2dldEhhbmRsZShiKTtpZighdGhpcy5oYW5kbGUpe3JldHVybiBmYWxz ZX1yZXR1cm4gdHJ1ZX0sX21vdXNlU3RhcnQ6ZnVuY3Rpb24oYil7VUxTTlFXOjt2 YXIgYz10aGlzLm9wdGlvbnM7dGhpcy5oZWxwZXI9dGhpcy5fY3JlYXRlSGVscGVy KGIpO3RoaXMuX2NhY2hlSGVscGVyUHJvcG9ydGlvbnMoKTtpZihhLnVpLmRkbWFu YWdlcil7YS51aS5kZG1hbmFnZXIuY3VycmVudD10aGlzfXRoaXMuX2NhY2hlTWFy Z2lucygpO3RoaXMuY3NzUG9zaXRpb249dGhpcy5oZWxwZXIuY3NzKCJwb3NpdGlv biIpO3RoaXMuc2Nyb2xsUGFyZW50PXRoaXMuaGVscGVyLnNjcm9sbFBhcmVudCgp O3RoaXMub2Zmc2V0PXRoaXMuZWxlbWVudC5vZmZzZXQoKTt0aGlzLm9mZnNldD17 dG9wOnRoaXMub2Zmc2V0LnRvcC10aGlzLm1hcmdpbnMudG9wLGxlZnQ6dGhpcy5v ZmZzZXQubGVmdC10aGlzLm1hcmdpbnMubGVmdH07YS5leHRlbmQodGhpcy5vZmZz ZXQse2NsaWNrOntsZWZ0OmIucGFnZVgtdGhpcy5vZmZzZXQubGVmdCx0b3A6Yi5w YWdlWS10aGlzLm9mZnNldC50b3B9LHBhcmVudDp0aGlzLl9nZXRQYXJlbnRPZmZz ZXQoKSxyZWxhdGl2ZTp0aGlzLl9nZXRSZWxhdGl2ZU9mZnNldCgpfSk7dGhpcy5v cmlnaW5hbFBvc2l0aW9uPXRoaXMuX2dlbmVyYXRlUG9zaXRpb24oYik7dGhpcy5v cmlnaW5hbFBhZ2VYPWIucGFnZVg7dGhpcy5vcmlnaW5hbFBhZ2VZPWIucGFnZVk7 aWYoYy5jdXJzb3JBdCl7dGhpcy5fYWRqdXN0T2Zmc2V0RnJvbUhlbHBlcihjLmN1 cnNvckF0KX1pZihjLmNvbnRhaW5tZW50KXt0aGlzLl9zZXRDb250YWlubWVudCgp fXRoaXMuX3RyaWdnZXIoInN0YXJ0IixiKTt0aGlzLl9jYWNoZUhlbHBlclByb3Bv cnRpb25zKCk7aWYoYS51aS5kZG1hbmFnZXImJiFjLmRyb3BCZWhhdmlvdXIpe2Eu dWkuZGRtYW5hZ2VyLnByZXBhcmVPZmZzZXRzKHRoaXMsYil9dGhpcy5oZWxwZXIu YWRkQ2xhc3MoInVpLWRyYWdnYWJsZS1kcmFnZ2luZyIpO3RoaXMuX21vdXNlRHJh ZyhiLHRydWUpO3JldHVybiB0cnVlfSxfbW91c2VEcmFnOmZ1bmN0aW9uKGIsZCl7 VUxTTlFXOjt0aGlzLnBvc2l0aW9uPXRoaXMuX2dlbmVyYXRlUG9zaXRpb24oYik7 dGhpcy5wb3NpdGlvbkFicz10aGlzLl9jb252ZXJ0UG9zaXRpb25UbygiYWJzb2x1 dGUiKTtpZighZCl7dmFyIGM9dGhpcy5fdWlIYXNoKCk7dGhpcy5fdHJpZ2dlcigi ZHJhZyIsYixjKTt0aGlzLnBvc2l0aW9uPWMucG9zaXRpb259aWYoIXRoaXMub3B0 aW9ucy5heGlzfHx0aGlzLm9wdGlvbnMuYXhpcyE9InkiKXt0aGlzLmhlbHBlclsw XS5zdHlsZS5sZWZ0PXRoaXMucG9zaXRpb24ubGVmdCsicHgifWlmKCF0aGlzLm9w dGlvbnMuYXhpc3x8dGhpcy5vcHRpb25zLmF4aXMhPSJ4Iil7dGhpcy5oZWxwZXJb MF0uc3R5bGUudG9wPXRoaXMucG9zaXRpb24udG9wKyJweCJ9aWYoYS51aS5kZG1h bmFnZXIpe2EudWkuZGRtYW5hZ2VyLmRyYWcodGhpcyxiKX1yZXR1cm4gZmFsc2V9 LF9tb3VzZVN0b3A6ZnVuY3Rpb24oYyl7VUxTTlFXOjt2YXIgZD1mYWxzZTtpZihh LnVpLmRkbWFuYWdlciYmIXRoaXMub3B0aW9ucy5kcm9wQmVoYXZpb3VyKXtkPWEu dWkuZGRtYW5hZ2VyLmRyb3AodGhpcyxjKX1pZih0aGlzLmRyb3BwZWQpe2Q9dGhp cy5kcm9wcGVkO3RoaXMuZHJvcHBlZD1mYWxzZX1pZigodGhpcy5vcHRpb25zLnJl dmVydD09ImludmFsaWQiJiYhZCl8fCh0aGlzLm9wdGlvbnMucmV2ZXJ0PT0idmFs aWQiJiZkKXx8dGhpcy5vcHRpb25zLnJldmVydD09PXRydWV8fChhLmlzRnVuY3Rp b24odGhpcy5vcHRpb25zLnJldmVydCkmJnRoaXMub3B0aW9ucy5yZXZlcnQuY2Fs bCh0aGlzLmVsZW1lbnQsZCkpKXt2YXIgYj10aGlzO2EodGhpcy5oZWxwZXIpLmFu aW1hdGUodGhpcy5vcmlnaW5hbFBvc2l0aW9uLHBhcnNlSW50KHRoaXMub3B0aW9u cy5yZXZlcnREdXJhdGlvbiwxMCksZnVuY3Rpb24oKXtVTFNOUVc6O2IuX3RyaWdn ZXIoInN0b3AiLGMpO2IuX2NsZWFyKCl9KX1lbHNle3RoaXMuX3RyaWdnZXIoInN0 b3AiLGMpO3RoaXMuX2NsZWFyKCl9cmV0dXJuIGZhbHNlfSxfZ2V0SGFuZGxlOmZ1 bmN0aW9uKGIpe1VMU05RVzo7dmFyIGM9IXRoaXMub3B0aW9ucy5oYW5kbGV8fCFh KHRoaXMub3B0aW9ucy5oYW5kbGUsdGhpcy5lbGVtZW50KS5sZW5ndGg/dHJ1ZTpm YWxzZTthKHRoaXMub3B0aW9ucy5oYW5kbGUsdGhpcy5lbGVtZW50KS5maW5kKCIq IikuYW5kU2VsZigpLmVhY2goZnVuY3Rpb24oKXtVTFNOUVc6O2lmKHRoaXM9PWIu dGFyZ2V0KXtjPXRydWV9fSk7cmV0dXJuIGN9LF9jcmVhdGVIZWxwZXI6ZnVuY3Rp b24oYyl7VUxTTlFXOjt2YXIgZD10aGlzLm9wdGlvbnM7dmFyIGI9YS5pc0Z1bmN0 aW9uKGQuaGVscGVyKT9hKGQuaGVscGVyLmFwcGx5KHRoaXMuZWxlbWVudFswXSxb Y10pKTooZC5oZWxwZXI9PSJjbG9uZSI/dGhpcy5lbGVtZW50LmNsb25lKCk6dGhp cy5lbGVtZW50KTtpZighYi5wYXJlbnRzKCJib2R5IikubGVuZ3RoKXtiLmFwcGVu ZFRvKChkLmFwcGVuZFRvPT0icGFyZW50Ij90aGlzLmVsZW1lbnRbMF0ucGFyZW50 Tm9kZTpkLmFwcGVuZFRvKSl9aWYoYlswXSE9dGhpcy5lbGVtZW50WzBdJiYhKC8o Zml4ZWR8YWJzb2x1dGUpLykudGVzdChiLmNzcygicG9zaXRpb24iKSkpe2IuY3Nz KCJwb3NpdGlvbiIsImFic29sdXRlIil9cmV0dXJuIGJ9LF9hZGp1c3RPZmZzZXRG cm9tSGVscGVyOmZ1bmN0aW9uKGIpe1VMU05RVzo7aWYoYi5sZWZ0IT11bmRlZmlu ZWQpe3RoaXMub2Zmc2V0LmNsaWNrLmxlZnQ9Yi5sZWZ0K3RoaXMubWFyZ2lucy5s ZWZ0fWlmKGIucmlnaHQhPXVuZGVmaW5lZCl7dGhpcy5vZmZzZXQuY2xpY2subGVm dD10aGlzLmhlbHBlclByb3BvcnRpb25zLndpZHRoLWIucmlnaHQrdGhpcy5tYXJn aW5zLmxlZnR9aWYoYi50b3AhPXVuZGVmaW5lZCl7dGhpcy5vZmZzZXQuY2xpY2su dG9wPWIudG9wK3RoaXMubWFyZ2lucy50b3B9aWYoYi5ib3R0b20hPXVuZGVmaW5l ZCl7dGhpcy5vZmZzZXQuY2xpY2sudG9wPXRoaXMuaGVscGVyUHJvcG9ydGlvbnMu aGVpZ2h0LWIuYm90dG9tK3RoaXMubWFyZ2lucy50b3B9fSxfZ2V0UGFyZW50T2Zm c2V0OmZ1bmN0aW9uKCl7VUxTTlFXOjt0aGlzLm9mZnNldFBhcmVudD10aGlzLmhl bHBlci5vZmZzZXRQYXJlbnQoKTt2YXIgYj10aGlzLm9mZnNldFBhcmVudC5vZmZz ZXQoKTtpZih0aGlzLmNzc1Bvc2l0aW9uPT0iYWJzb2x1dGUiJiZ0aGlzLnNjcm9s bFBhcmVudFswXSE9ZG9jdW1lbnQmJmEudWkuY29udGFpbnModGhpcy5zY3JvbGxQ YXJlbnRbMF0sdGhpcy5vZmZzZXRQYXJlbnRbMF0pKXtiLmxlZnQrPXRoaXMuc2Ny b2xsUGFyZW50LnNjcm9sbExlZnQoKTtiLnRvcCs9dGhpcy5zY3JvbGxQYXJlbnQu c2Nyb2xsVG9wKCl9aWYoKHRoaXMub2Zmc2V0UGFyZW50WzBdPT1kb2N1bWVudC5i b2R5KXx8KHRoaXMub2Zmc2V0UGFyZW50WzBdLnRhZ05hbWUmJnRoaXMub2Zmc2V0 UGFyZW50WzBdLnRhZ05hbWUudG9Mb3dlckNhc2UoKT09Imh0bWwiJiZhLmJyb3dz ZXIubXNpZSkpe2I9e3RvcDowLGxlZnQ6MH19cmV0dXJue3RvcDpiLnRvcCsocGFy c2VJbnQodGhpcy5vZmZzZXRQYXJlbnQuY3NzKCJib3JkZXJUb3BXaWR0aCIpLDEw KXx8MCksbGVmdDpiLmxlZnQrKHBhcnNlSW50KHRoaXMub2Zmc2V0UGFyZW50LmNz cygiYm9yZGVyTGVmdFdpZHRoIiksMTApfHwwKX19LF9nZXRSZWxhdGl2ZU9mZnNl dDpmdW5jdGlvbigpe1VMU05RVzo7aWYodGhpcy5jc3NQb3NpdGlvbj09InJlbGF0 aXZlIil7dmFyIGI9dGhpcy5lbGVtZW50LnBvc2l0aW9uKCk7cmV0dXJue3RvcDpi LnRvcC0ocGFyc2VJbnQodGhpcy5oZWxwZXIuY3NzKCJ0b3AiKSwxMCl8fDApK3Ro aXMuc2Nyb2xsUGFyZW50LnNjcm9sbFRvcCgpLGxlZnQ6Yi5sZWZ0LShwYXJzZUlu dCh0aGlzLmhlbHBlci5jc3MoImxlZnQiKSwxMCl8fDApK3RoaXMuc2Nyb2xsUGFy ZW50LnNjcm9sbExlZnQoKX19ZWxzZXtyZXR1cm57dG9wOjAsbGVmdDowfX19LF9j YWNoZU1hcmdpbnM6ZnVuY3Rpb24oKXtVTFNOUVc6O3RoaXMubWFyZ2lucz17bGVm dDoocGFyc2VJbnQodGhpcy5lbGVtZW50LmNzcygibWFyZ2luTGVmdCIpLDEwKXx8 MCksdG9wOihwYXJzZUludCh0aGlzLmVsZW1lbnQuY3NzKCJtYXJnaW5Ub3AiKSwx MCl8fDApfX0sX2NhY2hlSGVscGVyUHJvcG9ydGlvbnM6ZnVuY3Rpb24oKXtVTFNO UVc6O3RoaXMuaGVscGVyUHJvcG9ydGlvbnM9e3dpZHRoOnRoaXMuaGVscGVyLm91 dGVyV2lkdGgoKSxoZWlnaHQ6dGhpcy5oZWxwZXIub3V0ZXJIZWlnaHQoKX19LF9z ZXRDb250YWlubWVudDpmdW5jdGlvbigpe1VMU05RVzo7dmFyIGU9dGhpcy5vcHRp b25zO2lmKGUuY29udGFpbm1lbnQ9PSJwYXJlbnQiKXtlLmNvbnRhaW5tZW50PXRo aXMuaGVscGVyWzBdLnBhcmVudE5vZGV9aWYoZS5jb250YWlubWVudD09ImRvY3Vt ZW50Inx8ZS5jb250YWlubWVudD09IndpbmRvdyIpe3RoaXMuY29udGFpbm1lbnQ9 WzAtdGhpcy5vZmZzZXQucmVsYXRpdmUubGVmdC10aGlzLm9mZnNldC5wYXJlbnQu bGVmdCwwLXRoaXMub2Zmc2V0LnJlbGF0aXZlLnRvcC10aGlzLm9mZnNldC5wYXJl bnQudG9wLGEoZS5jb250YWlubWVudD09ImRvY3VtZW50Ij9kb2N1bWVudDp3aW5k b3cpLndpZHRoKCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aC10aGlzLm1h cmdpbnMubGVmdCwoYShlLmNvbnRhaW5tZW50PT0iZG9jdW1lbnQiP2RvY3VtZW50 OndpbmRvdykuaGVpZ2h0KCl8fGRvY3VtZW50LmJvZHkucGFyZW50Tm9kZS5zY3Jv bGxIZWlnaHQpLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LXRoaXMubWFy Z2lucy50b3BdfWlmKCEoL14oZG9jdW1lbnR8d2luZG93fHBhcmVudCkkLykudGVz dChlLmNvbnRhaW5tZW50KSYmZS5jb250YWlubWVudC5jb25zdHJ1Y3RvciE9QXJy YXkpe3ZhciBjPWEoZS5jb250YWlubWVudClbMF07aWYoIWMpe3JldHVybn12YXIg ZD1hKGUuY29udGFpbm1lbnQpLm9mZnNldCgpO3ZhciBiPShhKGMpLmNzcygib3Zl cmZsb3ciKSE9ImhpZGRlbiIpO3RoaXMuY29udGFpbm1lbnQ9W2QubGVmdCsocGFy c2VJbnQoYShjKS5jc3MoImJvcmRlckxlZnRXaWR0aCIpLDEwKXx8MCkrKHBhcnNl SW50KGEoYykuY3NzKCJwYWRkaW5nTGVmdCIpLDEwKXx8MCktdGhpcy5tYXJnaW5z LmxlZnQsZC50b3ArKHBhcnNlSW50KGEoYykuY3NzKCJib3JkZXJUb3BXaWR0aCIp LDEwKXx8MCkrKHBhcnNlSW50KGEoYykuY3NzKCJwYWRkaW5nVG9wIiksMTApfHww KS10aGlzLm1hcmdpbnMudG9wLGQubGVmdCsoYj9NYXRoLm1heChjLnNjcm9sbFdp ZHRoLGMub2Zmc2V0V2lkdGgpOmMub2Zmc2V0V2lkdGgpLShwYXJzZUludChhKGMp LmNzcygiYm9yZGVyTGVmdFdpZHRoIiksMTApfHwwKS0ocGFyc2VJbnQoYShjKS5j c3MoInBhZGRpbmdSaWdodCIpLDEwKXx8MCktdGhpcy5oZWxwZXJQcm9wb3J0aW9u cy53aWR0aC10aGlzLm1hcmdpbnMubGVmdCxkLnRvcCsoYj9NYXRoLm1heChjLnNj cm9sbEhlaWdodCxjLm9mZnNldEhlaWdodCk6Yy5vZmZzZXRIZWlnaHQpLShwYXJz ZUludChhKGMpLmNzcygiYm9yZGVyVG9wV2lkdGgiKSwxMCl8fDApLShwYXJzZUlu dChhKGMpLmNzcygicGFkZGluZ0JvdHRvbSIpLDEwKXx8MCktdGhpcy5oZWxwZXJQ cm9wb3J0aW9ucy5oZWlnaHQtdGhpcy5tYXJnaW5zLnRvcF19ZWxzZXtpZihlLmNv bnRhaW5tZW50LmNvbnN0cnVjdG9yPT1BcnJheSl7dGhpcy5jb250YWlubWVudD1l LmNvbnRhaW5tZW50fX19LF9jb252ZXJ0UG9zaXRpb25UbzpmdW5jdGlvbihmLGgp e1VMU05RVzo7aWYoIWgpe2g9dGhpcy5wb3NpdGlvbn12YXIgYz1mPT0iYWJzb2x1 dGUiPzE6LTE7dmFyIGU9dGhpcy5vcHRpb25zLGI9dGhpcy5jc3NQb3NpdGlvbj09 ImFic29sdXRlIiYmISh0aGlzLnNjcm9sbFBhcmVudFswXSE9ZG9jdW1lbnQmJmEu dWkuY29udGFpbnModGhpcy5zY3JvbGxQYXJlbnRbMF0sdGhpcy5vZmZzZXRQYXJl bnRbMF0pKT90aGlzLm9mZnNldFBhcmVudDp0aGlzLnNjcm9sbFBhcmVudCxnPSgv KGh0bWx8Ym9keSkvaSkudGVzdChiWzBdLnRhZ05hbWUpO3JldHVybnt0b3A6KGgu dG9wK3RoaXMub2Zmc2V0LnJlbGF0aXZlLnRvcCpjK3RoaXMub2Zmc2V0LnBhcmVu dC50b3AqYy0oYS5icm93c2VyLnNhZmFyaSYmdGhpcy5jc3NQb3NpdGlvbj09ImZp eGVkIj8wOih0aGlzLmNzc1Bvc2l0aW9uPT0iZml4ZWQiPy10aGlzLnNjcm9sbFBh cmVudC5zY3JvbGxUb3AoKTooZz8wOmIuc2Nyb2xsVG9wKCkpKSpjKSksbGVmdDoo aC5sZWZ0K3RoaXMub2Zmc2V0LnJlbGF0aXZlLmxlZnQqYyt0aGlzLm9mZnNldC5w YXJlbnQubGVmdCpjLShhLmJyb3dzZXIuc2FmYXJpJiZ0aGlzLmNzc1Bvc2l0aW9u PT0iZml4ZWQiPzA6KHRoaXMuY3NzUG9zaXRpb249PSJmaXhlZCI/LXRoaXMuc2Ny b2xsUGFyZW50LnNjcm9sbExlZnQoKTpnPzA6Yi5zY3JvbGxMZWZ0KCkpKmMpKX19 LF9nZW5lcmF0ZVBvc2l0aW9uOmZ1bmN0aW9uKGUpe1VMU05RVzo7dmFyIGg9dGhp cy5vcHRpb25zLGI9dGhpcy5jc3NQb3NpdGlvbj09ImFic29sdXRlIiYmISh0aGlz LnNjcm9sbFBhcmVudFswXSE9ZG9jdW1lbnQmJmEudWkuY29udGFpbnModGhpcy5z Y3JvbGxQYXJlbnRbMF0sdGhpcy5vZmZzZXRQYXJlbnRbMF0pKT90aGlzLm9mZnNl dFBhcmVudDp0aGlzLnNjcm9sbFBhcmVudCxpPSgvKGh0bWx8Ym9keSkvaSkudGVz dChiWzBdLnRhZ05hbWUpO2lmKHRoaXMuY3NzUG9zaXRpb249PSJyZWxhdGl2ZSIm JiEodGhpcy5zY3JvbGxQYXJlbnRbMF0hPWRvY3VtZW50JiZ0aGlzLnNjcm9sbFBh cmVudFswXSE9dGhpcy5vZmZzZXRQYXJlbnRbMF0pKXt0aGlzLm9mZnNldC5yZWxh dGl2ZT10aGlzLl9nZXRSZWxhdGl2ZU9mZnNldCgpfXZhciBkPWUucGFnZVg7dmFy IGM9ZS5wYWdlWTtpZih0aGlzLm9yaWdpbmFsUG9zaXRpb24pe2lmKHRoaXMuY29u dGFpbm1lbnQpe2lmKGUucGFnZVgtdGhpcy5vZmZzZXQuY2xpY2subGVmdDx0aGlz LmNvbnRhaW5tZW50WzBdKXtkPXRoaXMuY29udGFpbm1lbnRbMF0rdGhpcy5vZmZz ZXQuY2xpY2subGVmdH1pZihlLnBhZ2VZLXRoaXMub2Zmc2V0LmNsaWNrLnRvcDx0 aGlzLmNvbnRhaW5tZW50WzFdKXtjPXRoaXMuY29udGFpbm1lbnRbMV0rdGhpcy5v ZmZzZXQuY2xpY2sudG9wfWlmKGUucGFnZVgtdGhpcy5vZmZzZXQuY2xpY2subGVm dD50aGlzLmNvbnRhaW5tZW50WzJdKXtkPXRoaXMuY29udGFpbm1lbnRbMl0rdGhp cy5vZmZzZXQuY2xpY2subGVmdH1pZihlLnBhZ2VZLXRoaXMub2Zmc2V0LmNsaWNr LnRvcD50aGlzLmNvbnRhaW5tZW50WzNdKXtjPXRoaXMuY29udGFpbm1lbnRbM10r dGhpcy5vZmZzZXQuY2xpY2sudG9wfX1pZihoLmdyaWQpe3ZhciBnPXRoaXMub3Jp Z2luYWxQYWdlWStNYXRoLnJvdW5kKChjLXRoaXMub3JpZ2luYWxQYWdlWSkvaC5n cmlkWzFdKSpoLmdyaWRbMV07Yz10aGlzLmNvbnRhaW5tZW50PyghKGctdGhpcy5v ZmZzZXQuY2xpY2sudG9wPHRoaXMuY29udGFpbm1lbnRbMV18fGctdGhpcy5vZmZz ZXQuY2xpY2sudG9wPnRoaXMuY29udGFpbm1lbnRbM10pP2c6KCEoZy10aGlzLm9m ZnNldC5jbGljay50b3A8dGhpcy5jb250YWlubWVudFsxXSk/Zy1oLmdyaWRbMV06 ZytoLmdyaWRbMV0pKTpnO3ZhciBmPXRoaXMub3JpZ2luYWxQYWdlWCtNYXRoLnJv dW5kKChkLXRoaXMub3JpZ2luYWxQYWdlWCkvaC5ncmlkWzBdKSpoLmdyaWRbMF07 ZD10aGlzLmNvbnRhaW5tZW50PyghKGYtdGhpcy5vZmZzZXQuY2xpY2subGVmdDx0 aGlzLmNvbnRhaW5tZW50WzBdfHxmLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ+dGhp cy5jb250YWlubWVudFsyXSk/ZjooIShmLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ8 dGhpcy5jb250YWlubWVudFswXSk/Zi1oLmdyaWRbMF06ZitoLmdyaWRbMF0pKTpm fX1yZXR1cm57dG9wOihjLXRoaXMub2Zmc2V0LmNsaWNrLnRvcC10aGlzLm9mZnNl dC5yZWxhdGl2ZS50b3AtdGhpcy5vZmZzZXQucGFyZW50LnRvcCsoYS5icm93c2Vy LnNhZmFyaSYmdGhpcy5jc3NQb3NpdGlvbj09ImZpeGVkIj8wOih0aGlzLmNzc1Bv c2l0aW9uPT0iZml4ZWQiPy10aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxUb3AoKToo aT8wOmIuc2Nyb2xsVG9wKCkpKSkpLGxlZnQ6KGQtdGhpcy5vZmZzZXQuY2xpY2su bGVmdC10aGlzLm9mZnNldC5yZWxhdGl2ZS5sZWZ0LXRoaXMub2Zmc2V0LnBhcmVu dC5sZWZ0KyhhLmJyb3dzZXIuc2FmYXJpJiZ0aGlzLmNzc1Bvc2l0aW9uPT0iZml4 ZWQiPzA6KHRoaXMuY3NzUG9zaXRpb249PSJmaXhlZCI/LXRoaXMuc2Nyb2xsUGFy ZW50LnNjcm9sbExlZnQoKTppPzA6Yi5zY3JvbGxMZWZ0KCkpKSl9fSxfY2xlYXI6 ZnVuY3Rpb24oKXtVTFNOUVc6O3RoaXMuaGVscGVyLnJlbW92ZUNsYXNzKCJ1aS1k cmFnZ2FibGUtZHJhZ2dpbmciKTtpZih0aGlzLmhlbHBlclswXSE9dGhpcy5lbGVt ZW50WzBdJiYhdGhpcy5jYW5jZWxIZWxwZXJSZW1vdmFsKXt0aGlzLmhlbHBlci5y ZW1vdmUoKX10aGlzLmhlbHBlcj1udWxsO3RoaXMuY2FuY2VsSGVscGVyUmVtb3Zh bD1mYWxzZX0sX3RyaWdnZXI6ZnVuY3Rpb24oYixjLGQpe1VMU05RVzo7ZD1kfHx0 aGlzLl91aUhhc2goKTthLnVpLnBsdWdpbi5jYWxsKHRoaXMsYixbYyxkXSk7aWYo Yj09ImRyYWciKXt0aGlzLnBvc2l0aW9uQWJzPXRoaXMuX2NvbnZlcnRQb3NpdGlv blRvKCJhYnNvbHV0ZSIpfXJldHVybiBhLndpZGdldC5wcm90b3R5cGUuX3RyaWdn ZXIuY2FsbCh0aGlzLGIsYyxkKX0scGx1Z2luczp7fSxfdWlIYXNoOmZ1bmN0aW9u KGIpe1VMU05RVzo7cmV0dXJue2hlbHBlcjp0aGlzLmhlbHBlcixwb3NpdGlvbjp0 aGlzLnBvc2l0aW9uLGFic29sdXRlUG9zaXRpb246dGhpcy5wb3NpdGlvbkFicyxv ZmZzZXQ6dGhpcy5wb3NpdGlvbkFic319fSkpO2EuZXh0ZW5kKGEudWkuZHJhZ2dh YmxlLHt2ZXJzaW9uOiIxLjciLGV2ZW50UHJlZml4OiJkcmFnIixkZWZhdWx0czp7 YWRkQ2xhc3Nlczp0cnVlLGFwcGVuZFRvOiJwYXJlbnQiLGF4aXM6ZmFsc2UsY2Fu Y2VsOiI6aW5wdXQsb3B0aW9uIixjb25uZWN0VG9Tb3J0YWJsZTpmYWxzZSxjb250 YWlubWVudDpmYWxzZSxjdXJzb3I6ImF1dG8iLGN1cnNvckF0OmZhbHNlLGRlbGF5 OjAsZGlzdGFuY2U6MSxncmlkOmZhbHNlLGhhbmRsZTpmYWxzZSxoZWxwZXI6Im9y aWdpbmFsIixpZnJhbWVGaXg6ZmFsc2Usb3BhY2l0eTpmYWxzZSxyZWZyZXNoUG9z aXRpb25zOmZhbHNlLHJldmVydDpmYWxzZSxyZXZlcnREdXJhdGlvbjo1MDAsc2Nv cGU6ImRlZmF1bHQiLHNjcm9sbDp0cnVlLHNjcm9sbFNlbnNpdGl2aXR5OjIwLHNj cm9sbFNwZWVkOjIwLHNuYXA6ZmFsc2Usc25hcE1vZGU6ImJvdGgiLHNuYXBUb2xl cmFuY2U6MjAsc3RhY2s6ZmFsc2UsekluZGV4OmZhbHNlfX0pO2EudWkucGx1Z2lu LmFkZCgiZHJhZ2dhYmxlIiwiY29ubmVjdFRvU29ydGFibGUiLHtzdGFydDpmdW5j dGlvbihjLGUpe1VMU05RVzo7dmFyIGQ9YSh0aGlzKS5kYXRhKCJkcmFnZ2FibGUi KSxmPWQub3B0aW9ucyxiPWEuZXh0ZW5kKHt9LGUse2l0ZW06ZC5lbGVtZW50fSk7 ZC5zb3J0YWJsZXM9W107YShmLmNvbm5lY3RUb1NvcnRhYmxlKS5lYWNoKGZ1bmN0 aW9uKCl7VUxTTlFXOjt2YXIgZz1hLmRhdGEodGhpcywic29ydGFibGUiKTtpZihn JiYhZy5vcHRpb25zLmRpc2FibGVkKXtkLnNvcnRhYmxlcy5wdXNoKHtpbnN0YW5j ZTpnLHNob3VsZFJldmVydDpnLm9wdGlvbnMucmV2ZXJ0fSk7Zy5fcmVmcmVzaEl0 ZW1zKCk7Zy5fdHJpZ2dlcigiYWN0aXZhdGUiLGMsYil9fSl9LHN0b3A6ZnVuY3Rp b24oYyxlKXtVTFNOUVc6O3ZhciBkPWEodGhpcykuZGF0YSgiZHJhZ2dhYmxlIiks Yj1hLmV4dGVuZCh7fSxlLHtpdGVtOmQuZWxlbWVudH0pO2EuZWFjaChkLnNvcnRh YmxlcyxmdW5jdGlvbigpe1VMU05RVzo7aWYodGhpcy5pbnN0YW5jZS5pc092ZXIp e3RoaXMuaW5zdGFuY2UuaXNPdmVyPTA7ZC5jYW5jZWxIZWxwZXJSZW1vdmFsPXRy dWU7dGhpcy5pbnN0YW5jZS5jYW5jZWxIZWxwZXJSZW1vdmFsPWZhbHNlO2lmKHRo aXMuc2hvdWxkUmV2ZXJ0KXt0aGlzLmluc3RhbmNlLm9wdGlvbnMucmV2ZXJ0PXRy dWV9dGhpcy5pbnN0YW5jZS5fbW91c2VTdG9wKGMpO3RoaXMuaW5zdGFuY2Uub3B0 aW9ucy5oZWxwZXI9dGhpcy5pbnN0YW5jZS5vcHRpb25zLl9oZWxwZXI7aWYoZC5v cHRpb25zLmhlbHBlcj09Im9yaWdpbmFsIil7dGhpcy5pbnN0YW5jZS5jdXJyZW50 SXRlbS5jc3Moe3RvcDoiYXV0byIsbGVmdDoiYXV0byJ9KX19ZWxzZXt0aGlzLmlu c3RhbmNlLmNhbmNlbEhlbHBlclJlbW92YWw9ZmFsc2U7dGhpcy5pbnN0YW5jZS5f dHJpZ2dlcigiZGVhY3RpdmF0ZSIsYyxiKX19KX0sZHJhZzpmdW5jdGlvbihjLGYp e1VMU05RVzo7dmFyIGU9YSh0aGlzKS5kYXRhKCJkcmFnZ2FibGUiKSxiPXRoaXM7 dmFyIGQ9ZnVuY3Rpb24oaSl7VUxTTlFXOjt2YXIgbj10aGlzLm9mZnNldC5jbGlj ay50b3AsbT10aGlzLm9mZnNldC5jbGljay5sZWZ0O3ZhciBnPXRoaXMucG9zaXRp b25BYnMudG9wLGs9dGhpcy5wb3NpdGlvbkFicy5sZWZ0O3ZhciBqPWkuaGVpZ2h0 LGw9aS53aWR0aDt2YXIgcD1pLnRvcCxoPWkubGVmdDtyZXR1cm4gYS51aS5pc092 ZXIoZytuLGsrbSxwLGgsaixsKX07YS5lYWNoKGUuc29ydGFibGVzLGZ1bmN0aW9u KGcpe1VMU05RVzo7dGhpcy5pbnN0YW5jZS5wb3NpdGlvbkFicz1lLnBvc2l0aW9u QWJzO3RoaXMuaW5zdGFuY2UuaGVscGVyUHJvcG9ydGlvbnM9ZS5oZWxwZXJQcm9w b3J0aW9uczt0aGlzLmluc3RhbmNlLm9mZnNldC5jbGljaz1lLm9mZnNldC5jbGlj aztpZih0aGlzLmluc3RhbmNlLl9pbnRlcnNlY3RzV2l0aCh0aGlzLmluc3RhbmNl LmNvbnRhaW5lckNhY2hlKSl7aWYoIXRoaXMuaW5zdGFuY2UuaXNPdmVyKXt0aGlz Lmluc3RhbmNlLmlzT3Zlcj0xO3RoaXMuaW5zdGFuY2UuY3VycmVudEl0ZW09YShi KS5jbG9uZSgpLmFwcGVuZFRvKHRoaXMuaW5zdGFuY2UuZWxlbWVudCkuZGF0YSgi c29ydGFibGUtaXRlbSIsdHJ1ZSk7dGhpcy5pbnN0YW5jZS5vcHRpb25zLl9oZWxw ZXI9dGhpcy5pbnN0YW5jZS5vcHRpb25zLmhlbHBlcjt0aGlzLmluc3RhbmNlLm9w dGlvbnMuaGVscGVyPWZ1bmN0aW9uKCl7VUxTTlFXOjtyZXR1cm4gZi5oZWxwZXJb MF19O2MudGFyZ2V0PXRoaXMuaW5zdGFuY2UuY3VycmVudEl0ZW1bMF07dGhpcy5p bnN0YW5jZS5fbW91c2VDYXB0dXJlKGMsdHJ1ZSk7dGhpcy5pbnN0YW5jZS5fbW91 c2VTdGFydChjLHRydWUsdHJ1ZSk7dGhpcy5pbnN0YW5jZS5vZmZzZXQuY2xpY2su dG9wPWUub2Zmc2V0LmNsaWNrLnRvcDt0aGlzLmluc3RhbmNlLm9mZnNldC5jbGlj ay5sZWZ0PWUub2Zmc2V0LmNsaWNrLmxlZnQ7dGhpcy5pbnN0YW5jZS5vZmZzZXQu cGFyZW50LmxlZnQtPWUub2Zmc2V0LnBhcmVudC5sZWZ0LXRoaXMuaW5zdGFuY2Uu b2Zmc2V0LnBhcmVudC5sZWZ0O3RoaXMuaW5zdGFuY2Uub2Zmc2V0LnBhcmVudC50 b3AtPWUub2Zmc2V0LnBhcmVudC50b3AtdGhpcy5pbnN0YW5jZS5vZmZzZXQucGFy ZW50LnRvcDtlLl90cmlnZ2VyKCJ0b1NvcnRhYmxlIixjKTtlLmRyb3BwZWQ9dGhp cy5pbnN0YW5jZS5lbGVtZW50O2UuY3VycmVudEl0ZW09ZS5lbGVtZW50O3RoaXMu aW5zdGFuY2UuZnJvbU91dHNpZGU9ZX1pZih0aGlzLmluc3RhbmNlLmN1cnJlbnRJ dGVtKXt0aGlzLmluc3RhbmNlLl9tb3VzZURyYWcoYyl9fWVsc2V7aWYodGhpcy5p bnN0YW5jZS5pc092ZXIpe3RoaXMuaW5zdGFuY2UuaXNPdmVyPTA7dGhpcy5pbnN0 YW5jZS5jYW5jZWxIZWxwZXJSZW1vdmFsPXRydWU7dGhpcy5pbnN0YW5jZS5vcHRp b25zLnJldmVydD1mYWxzZTt0aGlzLmluc3RhbmNlLl90cmlnZ2VyKCJvdXQiLGMs dGhpcy5pbnN0YW5jZS5fdWlIYXNoKHRoaXMuaW5zdGFuY2UpKTt0aGlzLmluc3Rh bmNlLl9tb3VzZVN0b3AoYyx0cnVlKTt0aGlzLmluc3RhbmNlLm9wdGlvbnMuaGVs cGVyPXRoaXMuaW5zdGFuY2Uub3B0aW9ucy5faGVscGVyO3RoaXMuaW5zdGFuY2Uu Y3VycmVudEl0ZW0ucmVtb3ZlKCk7aWYodGhpcy5pbnN0YW5jZS5wbGFjZWhvbGRl cil7dGhpcy5pbnN0YW5jZS5wbGFjZWhvbGRlci5yZW1vdmUoKX1lLl90cmlnZ2Vy KCJmcm9tU29ydGFibGUiLGMpO2UuZHJvcHBlZD1mYWxzZX19fSl9fSk7YS51aS5w bHVnaW4uYWRkKCJkcmFnZ2FibGUiLCJjdXJzb3IiLHtzdGFydDpmdW5jdGlvbihj LGQpe1VMU05RVzo7dmFyIGI9YSgiYm9keSIpLGU9YSh0aGlzKS5kYXRhKCJkcmFn Z2FibGUiKS5vcHRpb25zO2lmKGIuY3NzKCJjdXJzb3IiKSl7ZS5fY3Vyc29yPWIu Y3NzKCJjdXJzb3IiKX1iLmNzcygiY3Vyc29yIixlLmN1cnNvcil9LHN0b3A6ZnVu Y3Rpb24oYixjKXtVTFNOUVc6O3ZhciBkPWEodGhpcykuZGF0YSgiZHJhZ2dhYmxl Iikub3B0aW9ucztpZihkLl9jdXJzb3Ipe2EoImJvZHkiKS5jc3MoImN1cnNvciIs ZC5fY3Vyc29yKX19fSk7YS51aS5wbHVnaW4uYWRkKCJkcmFnZ2FibGUiLCJpZnJh bWVGaXgiLHtzdGFydDpmdW5jdGlvbihiLGMpe1VMU05RVzo7dmFyIGQ9YSh0aGlz KS5kYXRhKCJkcmFnZ2FibGUiKS5vcHRpb25zO2EoZC5pZnJhbWVGaXg9PT10cnVl PyJpZnJhbWUiOmQuaWZyYW1lRml4KS5lYWNoKGZ1bmN0aW9uKCl7VUxTTlFXOjth KCc8ZGl2IGNsYXNzPSJ1aS1kcmFnZ2FibGUtaWZyYW1lRml4IiBzdHlsZT0iYmFj a2dyb3VuZDogI2ZmZjsiPjwvZGl2PicpLmNzcyh7d2lkdGg6dGhpcy5vZmZzZXRX aWR0aCsicHgiLGhlaWdodDp0aGlzLm9mZnNldEhlaWdodCsicHgiLHBvc2l0aW9u OiJhYnNvbHV0ZSIsb3BhY2l0eToiMC4wMDEiLHpJbmRleDoxMDAwfSkuY3NzKGEo dGhpcykub2Zmc2V0KCkpLmFwcGVuZFRvKCJib2R5Iil9KX0sc3RvcDpmdW5jdGlv bihiLGMpe1VMU05RVzo7YSgiZGl2LnVpLWRyYWdnYWJsZS1pZnJhbWVGaXgiKS5l YWNoKGZ1bmN0aW9uKCl7VUxTTlFXOjt0aGlzLnBhcmVudE5vZGUucmVtb3ZlQ2hp bGQodGhpcyl9KX19KTthLnVpLnBsdWdpbi5hZGQoImRyYWdnYWJsZSIsIm9wYWNp dHkiLHtzdGFydDpmdW5jdGlvbihjLGQpe1VMU05RVzo7dmFyIGI9YShkLmhlbHBl ciksZT1hKHRoaXMpLmRhdGEoImRyYWdnYWJsZSIpLm9wdGlvbnM7aWYoYi5jc3Mo Im9wYWNpdHkiKSl7ZS5fb3BhY2l0eT1iLmNzcygib3BhY2l0eSIpfWIuY3NzKCJv cGFjaXR5IixlLm9wYWNpdHkpfSxzdG9wOmZ1bmN0aW9uKGIsYyl7VUxTTlFXOjt2 YXIgZD1hKHRoaXMpLmRhdGEoImRyYWdnYWJsZSIpLm9wdGlvbnM7aWYoZC5fb3Bh Y2l0eSl7YShjLmhlbHBlcikuY3NzKCJvcGFjaXR5IixkLl9vcGFjaXR5KX19fSk7 YS51aS5wbHVnaW4uYWRkKCJkcmFnZ2FibGUiLCJzY3JvbGwiLHtzdGFydDpmdW5j dGlvbihjLGQpe1VMU05RVzo7dmFyIGI9YSh0aGlzKS5kYXRhKCJkcmFnZ2FibGUi KTtpZihiLnNjcm9sbFBhcmVudFswXSE9ZG9jdW1lbnQmJmIuc2Nyb2xsUGFyZW50 WzBdLnRhZ05hbWUhPSJIVE1MIil7Yi5vdmVyZmxvd09mZnNldD1iLnNjcm9sbFBh cmVudC5vZmZzZXQoKX19LGRyYWc6ZnVuY3Rpb24oZCxlKXtVTFNOUVc6O3ZhciBj PWEodGhpcykuZGF0YSgiZHJhZ2dhYmxlIiksZj1jLm9wdGlvbnMsYj1mYWxzZTtp ZihjLnNjcm9sbFBhcmVudFswXSE9ZG9jdW1lbnQmJmMuc2Nyb2xsUGFyZW50WzBd LnRhZ05hbWUhPSJIVE1MIil7aWYoIWYuYXhpc3x8Zi5heGlzIT0ieCIpe2lmKChj Lm92ZXJmbG93T2Zmc2V0LnRvcCtjLnNjcm9sbFBhcmVudFswXS5vZmZzZXRIZWln aHQpLWQucGFnZVk8Zi5zY3JvbGxTZW5zaXRpdml0eSl7Yy5zY3JvbGxQYXJlbnRb MF0uc2Nyb2xsVG9wPWI9Yy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsVG9wK2Yuc2Ny b2xsU3BlZWR9ZWxzZXtpZihkLnBhZ2VZLWMub3ZlcmZsb3dPZmZzZXQudG9wPGYu c2Nyb2xsU2Vuc2l0aXZpdHkpe2Muc2Nyb2xsUGFyZW50WzBdLnNjcm9sbFRvcD1i PWMuc2Nyb2xsUGFyZW50WzBdLnNjcm9sbFRvcC1mLnNjcm9sbFNwZWVkfX19aWYo IWYuYXhpc3x8Zi5heGlzIT0ieSIpe2lmKChjLm92ZXJmbG93T2Zmc2V0LmxlZnQr Yy5zY3JvbGxQYXJlbnRbMF0ub2Zmc2V0V2lkdGgpLWQucGFnZVg8Zi5zY3JvbGxT ZW5zaXRpdml0eSl7Yy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsTGVmdD1iPWMuc2Ny b2xsUGFyZW50WzBdLnNjcm9sbExlZnQrZi5zY3JvbGxTcGVlZH1lbHNle2lmKGQu cGFnZVgtYy5vdmVyZmxvd09mZnNldC5sZWZ0PGYuc2Nyb2xsU2Vuc2l0aXZpdHkp e2Muc2Nyb2xsUGFyZW50WzBdLnNjcm9sbExlZnQ9Yj1jLnNjcm9sbFBhcmVudFsw XS5zY3JvbGxMZWZ0LWYuc2Nyb2xsU3BlZWR9fX19ZWxzZXtpZighZi5heGlzfHxm LmF4aXMhPSJ4Iil7aWYoZC5wYWdlWS1hKGRvY3VtZW50KS5zY3JvbGxUb3AoKTxm LnNjcm9sbFNlbnNpdGl2aXR5KXtiPWEoZG9jdW1lbnQpLnNjcm9sbFRvcChhKGRv Y3VtZW50KS5zY3JvbGxUb3AoKS1mLnNjcm9sbFNwZWVkKX1lbHNle2lmKGEod2lu ZG93KS5oZWlnaHQoKS0oZC5wYWdlWS1hKGRvY3VtZW50KS5zY3JvbGxUb3AoKSk8 Zi5zY3JvbGxTZW5zaXRpdml0eSl7Yj1hKGRvY3VtZW50KS5zY3JvbGxUb3AoYShk b2N1bWVudCkuc2Nyb2xsVG9wKCkrZi5zY3JvbGxTcGVlZCl9fX1pZighZi5heGlz fHxmLmF4aXMhPSJ5Iil7aWYoZC5wYWdlWC1hKGRvY3VtZW50KS5zY3JvbGxMZWZ0 KCk8Zi5zY3JvbGxTZW5zaXRpdml0eSl7Yj1hKGRvY3VtZW50KS5zY3JvbGxMZWZ0 KGEoZG9jdW1lbnQpLnNjcm9sbExlZnQoKS1mLnNjcm9sbFNwZWVkKX1lbHNle2lm KGEod2luZG93KS53aWR0aCgpLShkLnBhZ2VYLWEoZG9jdW1lbnQpLnNjcm9sbExl ZnQoKSk8Zi5zY3JvbGxTZW5zaXRpdml0eSl7Yj1hKGRvY3VtZW50KS5zY3JvbGxM ZWZ0KGEoZG9jdW1lbnQpLnNjcm9sbExlZnQoKStmLnNjcm9sbFNwZWVkKX19fX1p ZihiIT09ZmFsc2UmJmEudWkuZGRtYW5hZ2VyJiYhZi5kcm9wQmVoYXZpb3VyKXth LnVpLmRkbWFuYWdlci5wcmVwYXJlT2Zmc2V0cyhjLGQpfX19KTthLnVpLnBsdWdp bi5hZGQoImRyYWdnYWJsZSIsInNuYXAiLHtzdGFydDpmdW5jdGlvbihjLGQpe1VM U05RVzo7dmFyIGI9YSh0aGlzKS5kYXRhKCJkcmFnZ2FibGUiKSxlPWIub3B0aW9u cztiLnNuYXBFbGVtZW50cz1bXTthKGUuc25hcC5jb25zdHJ1Y3RvciE9U3RyaW5n PyhlLnNuYXAuaXRlbXN8fCI6ZGF0YShkcmFnZ2FibGUpIik6ZS5zbmFwKS5lYWNo KGZ1bmN0aW9uKCl7VUxTTlFXOjt2YXIgZz1hKHRoaXMpO3ZhciBmPWcub2Zmc2V0 KCk7aWYodGhpcyE9Yi5lbGVtZW50WzBdKXtiLnNuYXBFbGVtZW50cy5wdXNoKHtp dGVtOnRoaXMsd2lkdGg6Zy5vdXRlcldpZHRoKCksaGVpZ2h0Omcub3V0ZXJIZWln aHQoKSx0b3A6Zi50b3AsbGVmdDpmLmxlZnR9KX19KX0sZHJhZzpmdW5jdGlvbih1 LHApe1VMU05RVzo7dmFyIGc9YSh0aGlzKS5kYXRhKCJkcmFnZ2FibGUiKSxxPWcu b3B0aW9uczt2YXIgeT1xLnNuYXBUb2xlcmFuY2U7dmFyIHg9cC5vZmZzZXQubGVm dCx3PXgrZy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aCxmPXAub2Zmc2V0LnRvcCxl PWYrZy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQ7Zm9yKHZhciB2PWcuc25hcEVs ZW1lbnRzLmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgcz1nLnNuYXBFbGVtZW50c1t2 XS5sZWZ0LG49cytnLnNuYXBFbGVtZW50c1t2XS53aWR0aCxtPWcuc25hcEVsZW1l bnRzW3ZdLnRvcCxBPW0rZy5zbmFwRWxlbWVudHNbdl0uaGVpZ2h0O2lmKCEoKHMt eTx4JiZ4PG4reSYmbS15PGYmJmY8QSt5KXx8KHMteTx4JiZ4PG4reSYmbS15PGUm JmU8QSt5KXx8KHMteTx3JiZ3PG4reSYmbS15PGYmJmY8QSt5KXx8KHMteTx3JiZ3 PG4reSYmbS15PGUmJmU8QSt5KSkpe2lmKGcuc25hcEVsZW1lbnRzW3ZdLnNuYXBw aW5nKXsoZy5vcHRpb25zLnNuYXAucmVsZWFzZSYmZy5vcHRpb25zLnNuYXAucmVs ZWFzZS5jYWxsKGcuZWxlbWVudCx1LGEuZXh0ZW5kKGcuX3VpSGFzaCgpLHtzbmFw SXRlbTpnLnNuYXBFbGVtZW50c1t2XS5pdGVtfSkpKX1nLnNuYXBFbGVtZW50c1t2 XS5zbmFwcGluZz1mYWxzZTtjb250aW51ZX1pZihxLnNuYXBNb2RlIT0iaW5uZXIi KXt2YXIgYz1NYXRoLmFicyhtLWUpPD15O3ZhciB6PU1hdGguYWJzKEEtZik8PXk7 dmFyIGo9TWF0aC5hYnMocy13KTw9eTt2YXIgaz1NYXRoLmFicyhuLXgpPD15O2lm KGMpe3AucG9zaXRpb24udG9wPWcuX2NvbnZlcnRQb3NpdGlvblRvKCJyZWxhdGl2 ZSIse3RvcDptLWcuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LGxlZnQ6MH0pLnRv cC1nLm1hcmdpbnMudG9wfWlmKHope3AucG9zaXRpb24udG9wPWcuX2NvbnZlcnRQ b3NpdGlvblRvKCJyZWxhdGl2ZSIse3RvcDpBLGxlZnQ6MH0pLnRvcC1nLm1hcmdp bnMudG9wfWlmKGope3AucG9zaXRpb24ubGVmdD1nLl9jb252ZXJ0UG9zaXRpb25U bygicmVsYXRpdmUiLHt0b3A6MCxsZWZ0OnMtZy5oZWxwZXJQcm9wb3J0aW9ucy53 aWR0aH0pLmxlZnQtZy5tYXJnaW5zLmxlZnR9aWYoayl7cC5wb3NpdGlvbi5sZWZ0 PWcuX2NvbnZlcnRQb3NpdGlvblRvKCJyZWxhdGl2ZSIse3RvcDowLGxlZnQ6bn0p LmxlZnQtZy5tYXJnaW5zLmxlZnR9fXZhciBoPShjfHx6fHxqfHxrKTtpZihxLnNu YXBNb2RlIT0ib3V0ZXIiKXt2YXIgYz1NYXRoLmFicyhtLWYpPD15O3ZhciB6PU1h dGguYWJzKEEtZSk8PXk7dmFyIGo9TWF0aC5hYnMocy14KTw9eTt2YXIgaz1NYXRo LmFicyhuLXcpPD15O2lmKGMpe3AucG9zaXRpb24udG9wPWcuX2NvbnZlcnRQb3Np dGlvblRvKCJyZWxhdGl2ZSIse3RvcDptLGxlZnQ6MH0pLnRvcC1nLm1hcmdpbnMu dG9wfWlmKHope3AucG9zaXRpb24udG9wPWcuX2NvbnZlcnRQb3NpdGlvblRvKCJy ZWxhdGl2ZSIse3RvcDpBLWcuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LGxlZnQ6 MH0pLnRvcC1nLm1hcmdpbnMudG9wfWlmKGope3AucG9zaXRpb24ubGVmdD1nLl9j b252ZXJ0UG9zaXRpb25UbygicmVsYXRpdmUiLHt0b3A6MCxsZWZ0OnN9KS5sZWZ0 LWcubWFyZ2lucy5sZWZ0fWlmKGspe3AucG9zaXRpb24ubGVmdD1nLl9jb252ZXJ0 UG9zaXRpb25UbygicmVsYXRpdmUiLHt0b3A6MCxsZWZ0Om4tZy5oZWxwZXJQcm9w b3J0aW9ucy53aWR0aH0pLmxlZnQtZy5tYXJnaW5zLmxlZnR9fWlmKCFnLnNuYXBF bGVtZW50c1t2XS5zbmFwcGluZyYmKGN8fHp8fGp8fGt8fGgpKXsoZy5vcHRpb25z LnNuYXAuc25hcCYmZy5vcHRpb25zLnNuYXAuc25hcC5jYWxsKGcuZWxlbWVudCx1 LGEuZXh0ZW5kKGcuX3VpSGFzaCgpLHtzbmFwSXRlbTpnLnNuYXBFbGVtZW50c1t2 XS5pdGVtfSkpKX1nLnNuYXBFbGVtZW50c1t2XS5zbmFwcGluZz0oY3x8enx8anx8 a3x8aCl9fX0pO2EudWkucGx1Z2luLmFkZCgiZHJhZ2dhYmxlIiwic3RhY2siLHtz dGFydDpmdW5jdGlvbihiLGMpe1VMU05RVzo7dmFyIGU9YSh0aGlzKS5kYXRhKCJk cmFnZ2FibGUiKS5vcHRpb25zO3ZhciBkPWEubWFrZUFycmF5KGEoZS5zdGFjay5n cm91cCkpLnNvcnQoZnVuY3Rpb24oZyxmKXtVTFNOUVc6O3JldHVybihwYXJzZUlu dChhKGcpLmNzcygiekluZGV4IiksMTApfHxlLnN0YWNrLm1pbiktKHBhcnNlSW50 KGEoZikuY3NzKCJ6SW5kZXgiKSwxMCl8fGUuc3RhY2subWluKX0pO2EoZCkuZWFj aChmdW5jdGlvbihmKXtVTFNOUVc6O3RoaXMuc3R5bGUuekluZGV4PWUuc3RhY2su bWluK2Z9KTt0aGlzWzBdLnN0eWxlLnpJbmRleD1lLnN0YWNrLm1pbitkLmxlbmd0 aH19KTthLnVpLnBsdWdpbi5hZGQoImRyYWdnYWJsZSIsInpJbmRleCIse3N0YXJ0 OmZ1bmN0aW9uKGMsZCl7VUxTTlFXOjt2YXIgYj1hKGQuaGVscGVyKSxlPWEodGhp cykuZGF0YSgiZHJhZ2dhYmxlIikub3B0aW9ucztpZihiLmNzcygiekluZGV4Iikp e2UuX3pJbmRleD1iLmNzcygiekluZGV4Iil9Yi5jc3MoInpJbmRleCIsZS56SW5k ZXgpfSxzdG9wOmZ1bmN0aW9uKGIsYyl7VUxTTlFXOjt2YXIgZD1hKHRoaXMpLmRh dGEoImRyYWdnYWJsZSIpLm9wdGlvbnM7aWYoZC5fekluZGV4KXthKGMuaGVscGVy KS5jc3MoInpJbmRleCIsZC5fekluZGV4KX19fSl9KShqUXVlcnkpOzsNKGZ1bmN0 aW9uKGEpe1VMU05RVzo7YS53aWRnZXQoInVpLmRyb3BwYWJsZSIse19pbml0OmZ1 bmN0aW9uKCl7VUxTTlFXOjt2YXIgYz10aGlzLm9wdGlvbnMsYj1jLmFjY2VwdDt0 aGlzLmlzb3Zlcj0wO3RoaXMuaXNvdXQ9MTt0aGlzLm9wdGlvbnMuYWNjZXB0PXRo aXMub3B0aW9ucy5hY2NlcHQmJmEuaXNGdW5jdGlvbih0aGlzLm9wdGlvbnMuYWNj ZXB0KT90aGlzLm9wdGlvbnMuYWNjZXB0OmZ1bmN0aW9uKGUpe1VMU05RVzo7cmV0 dXJuIGUuaXMoYil9O3RoaXMucHJvcG9ydGlvbnM9e3dpZHRoOnRoaXMuZWxlbWVu dFswXS5vZmZzZXRXaWR0aCxoZWlnaHQ6dGhpcy5lbGVtZW50WzBdLm9mZnNldEhl aWdodH07YS51aS5kZG1hbmFnZXIuZHJvcHBhYmxlc1t0aGlzLm9wdGlvbnMuc2Nv cGVdPWEudWkuZGRtYW5hZ2VyLmRyb3BwYWJsZXNbdGhpcy5vcHRpb25zLnNjb3Bl XXx8W107YS51aS5kZG1hbmFnZXIuZHJvcHBhYmxlc1t0aGlzLm9wdGlvbnMuc2Nv cGVdLnB1c2godGhpcyk7KHRoaXMub3B0aW9ucy5hZGRDbGFzc2VzJiZ0aGlzLmVs ZW1lbnQuYWRkQ2xhc3MoInVpLWRyb3BwYWJsZSIpKX0sZGVzdHJveTpmdW5jdGlv bigpe1VMU05RVzo7dmFyIGI9YS51aS5kZG1hbmFnZXIuZHJvcHBhYmxlc1t0aGlz Lm9wdGlvbnMuc2NvcGVdO2Zvcih2YXIgYz0wO2M8Yi5sZW5ndGg7YysrKXtpZihi W2NdPT10aGlzKXtiLnNwbGljZShjLDEpfX10aGlzLmVsZW1lbnQucmVtb3ZlQ2xh c3MoInVpLWRyb3BwYWJsZSB1aS1kcm9wcGFibGUtZGlzYWJsZWQiKS5yZW1vdmVE YXRhKCJkcm9wcGFibGUiKS51bmJpbmQoIi5kcm9wcGFibGUiKX0sX3NldERhdGE6 ZnVuY3Rpb24oYixjKXtVTFNOUVc6O2lmKGI9PSJhY2NlcHQiKXt0aGlzLm9wdGlv bnMuYWNjZXB0PWMmJmEuaXNGdW5jdGlvbihjKT9jOmZ1bmN0aW9uKGUpe1VMU05R Vzo7cmV0dXJuIGUuaXMoYWNjZXB0KX19ZWxzZXthLndpZGdldC5wcm90b3R5cGUu X3NldERhdGEuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0sX2FjdGl2YXRlOmZ1bmN0 aW9uKGMpe1VMU05RVzo7dmFyIGI9YS51aS5kZG1hbmFnZXIuY3VycmVudDtpZih0 aGlzLm9wdGlvbnMuYWN0aXZlQ2xhc3Mpe3RoaXMuZWxlbWVudC5hZGRDbGFzcyh0 aGlzLm9wdGlvbnMuYWN0aXZlQ2xhc3MpfShiJiZ0aGlzLl90cmlnZ2VyKCJhY3Rp dmF0ZSIsYyx0aGlzLnVpKGIpKSl9LF9kZWFjdGl2YXRlOmZ1bmN0aW9uKGMpe1VM U05RVzo7dmFyIGI9YS51aS5kZG1hbmFnZXIuY3VycmVudDtpZih0aGlzLm9wdGlv bnMuYWN0aXZlQ2xhc3Mpe3RoaXMuZWxlbWVudC5yZW1vdmVDbGFzcyh0aGlzLm9w dGlvbnMuYWN0aXZlQ2xhc3MpfShiJiZ0aGlzLl90cmlnZ2VyKCJkZWFjdGl2YXRl IixjLHRoaXMudWkoYikpKX0sX292ZXI6ZnVuY3Rpb24oYyl7VUxTTlFXOjt2YXIg Yj1hLnVpLmRkbWFuYWdlci5jdXJyZW50O2lmKCFifHwoYi5jdXJyZW50SXRlbXx8 Yi5lbGVtZW50KVswXT09dGhpcy5lbGVtZW50WzBdKXtyZXR1cm59aWYodGhpcy5v cHRpb25zLmFjY2VwdC5jYWxsKHRoaXMuZWxlbWVudFswXSwoYi5jdXJyZW50SXRl bXx8Yi5lbGVtZW50KSkpe2lmKHRoaXMub3B0aW9ucy5ob3ZlckNsYXNzKXt0aGlz LmVsZW1lbnQuYWRkQ2xhc3ModGhpcy5vcHRpb25zLmhvdmVyQ2xhc3MpfXRoaXMu X3RyaWdnZXIoIm92ZXIiLGMsdGhpcy51aShiKSl9fSxfb3V0OmZ1bmN0aW9uKGMp e1VMU05RVzo7dmFyIGI9YS51aS5kZG1hbmFnZXIuY3VycmVudDtpZighYnx8KGIu Y3VycmVudEl0ZW18fGIuZWxlbWVudClbMF09PXRoaXMuZWxlbWVudFswXSl7cmV0 dXJufWlmKHRoaXMub3B0aW9ucy5hY2NlcHQuY2FsbCh0aGlzLmVsZW1lbnRbMF0s KGIuY3VycmVudEl0ZW18fGIuZWxlbWVudCkpKXtpZih0aGlzLm9wdGlvbnMuaG92 ZXJDbGFzcyl7dGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKHRoaXMub3B0aW9ucy5o b3ZlckNsYXNzKX10aGlzLl90cmlnZ2VyKCJvdXQiLGMsdGhpcy51aShiKSl9fSxf ZHJvcDpmdW5jdGlvbihjLGQpe1VMU05RVzo7dmFyIGI9ZHx8YS51aS5kZG1hbmFn ZXIuY3VycmVudDtpZighYnx8KGIuY3VycmVudEl0ZW18fGIuZWxlbWVudClbMF09 PXRoaXMuZWxlbWVudFswXSl7cmV0dXJuIGZhbHNlfXZhciBlPWZhbHNlO3RoaXMu ZWxlbWVudC5maW5kKCI6ZGF0YShkcm9wcGFibGUpIikubm90KCIudWktZHJhZ2dh YmxlLWRyYWdnaW5nIikuZWFjaChmdW5jdGlvbigpe1VMU05RVzo7dmFyIGY9YS5k YXRhKHRoaXMsImRyb3BwYWJsZSIpO2lmKGYub3B0aW9ucy5ncmVlZHkmJmEudWku aW50ZXJzZWN0KGIsYS5leHRlbmQoZix7b2Zmc2V0OmYuZWxlbWVudC5vZmZzZXQo KX0pLGYub3B0aW9ucy50b2xlcmFuY2UpKXtlPXRydWU7cmV0dXJuIGZhbHNlfX0p O2lmKGUpe3JldHVybiBmYWxzZX1pZih0aGlzLm9wdGlvbnMuYWNjZXB0LmNhbGwo dGhpcy5lbGVtZW50WzBdLChiLmN1cnJlbnRJdGVtfHxiLmVsZW1lbnQpKSl7aWYo dGhpcy5vcHRpb25zLmFjdGl2ZUNsYXNzKXt0aGlzLmVsZW1lbnQucmVtb3ZlQ2xh c3ModGhpcy5vcHRpb25zLmFjdGl2ZUNsYXNzKX1pZih0aGlzLm9wdGlvbnMuaG92 ZXJDbGFzcyl7dGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKHRoaXMub3B0aW9ucy5o b3ZlckNsYXNzKX10aGlzLl90cmlnZ2VyKCJkcm9wIixjLHRoaXMudWkoYikpO3Jl dHVybiB0aGlzLmVsZW1lbnR9cmV0dXJuIGZhbHNlfSx1aTpmdW5jdGlvbihiKXtV TFNOUVc6O3JldHVybntkcmFnZ2FibGU6KGIuY3VycmVudEl0ZW18fGIuZWxlbWVu dCksaGVscGVyOmIuaGVscGVyLHBvc2l0aW9uOmIucG9zaXRpb24sYWJzb2x1dGVQ b3NpdGlvbjpiLnBvc2l0aW9uQWJzLG9mZnNldDpiLnBvc2l0aW9uQWJzfX19KTth LmV4dGVuZChhLnVpLmRyb3BwYWJsZSx7dmVyc2lvbjoiMS43IixldmVudFByZWZp eDoiZHJvcCIsZGVmYXVsdHM6e2FjY2VwdDoiKiIsYWN0aXZlQ2xhc3M6ZmFsc2Us YWRkQ2xhc3Nlczp0cnVlLGdyZWVkeTpmYWxzZSxob3ZlckNsYXNzOmZhbHNlLHNj b3BlOiJkZWZhdWx0Iix0b2xlcmFuY2U6ImludGVyc2VjdCJ9fSk7YS51aS5pbnRl cnNlY3Q9ZnVuY3Rpb24ocSxqLG8pe1VMU05RVzo7aWYoIWoub2Zmc2V0KXtyZXR1 cm4gZmFsc2V9dmFyIGU9KHEucG9zaXRpb25BYnN8fHEucG9zaXRpb24uYWJzb2x1 dGUpLmxlZnQsZD1lK3EuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgsbj0ocS5wb3Np dGlvbkFic3x8cS5wb3NpdGlvbi5hYnNvbHV0ZSkudG9wLG09bitxLmhlbHBlclBy b3BvcnRpb25zLmhlaWdodDt2YXIgZz1qLm9mZnNldC5sZWZ0LGM9ZytqLnByb3Bv cnRpb25zLndpZHRoLHA9ai5vZmZzZXQudG9wLGs9cCtqLnByb3BvcnRpb25zLmhl aWdodDtzd2l0Y2gobyl7Y2FzZSJmaXQiOnJldHVybihnPGUmJmQ8YyYmcDxuJiZt PGspO2JyZWFrO2Nhc2UiaW50ZXJzZWN0IjpyZXR1cm4oZzxlKyhxLmhlbHBlclBy b3BvcnRpb25zLndpZHRoLzIpJiZkLShxLmhlbHBlclByb3BvcnRpb25zLndpZHRo LzIpPGMmJnA8bisocS5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQvMikmJm0tKHEu aGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LzIpPGspO2JyZWFrO2Nhc2UicG9pbnRl ciI6dmFyIGg9KChxLnBvc2l0aW9uQWJzfHxxLnBvc2l0aW9uLmFic29sdXRlKS5s ZWZ0KyhxLmNsaWNrT2Zmc2V0fHxxLm9mZnNldC5jbGljaykubGVmdCksaT0oKHEu cG9zaXRpb25BYnN8fHEucG9zaXRpb24uYWJzb2x1dGUpLnRvcCsocS5jbGlja09m ZnNldHx8cS5vZmZzZXQuY2xpY2spLnRvcCksZj1hLnVpLmlzT3ZlcihpLGgscCxn LGoucHJvcG9ydGlvbnMuaGVpZ2h0LGoucHJvcG9ydGlvbnMud2lkdGgpO3JldHVy biBmO2JyZWFrO2Nhc2UidG91Y2giOnJldHVybigobj49cCYmbjw9ayl8fChtPj1w JiZtPD1rKXx8KG48cCYmbT5rKSkmJigoZT49ZyYmZTw9Yyl8fChkPj1nJiZkPD1j KXx8KGU8ZyYmZD5jKSk7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gZmFsc2U7YnJlYWt9 fTthLnVpLmRkbWFuYWdlcj17Y3VycmVudDpudWxsLGRyb3BwYWJsZXM6eyJkZWZh dWx0IjpbXX0scHJlcGFyZU9mZnNldHM6ZnVuY3Rpb24oZSxnKXtVTFNOUVc6O3Zh ciBiPWEudWkuZGRtYW5hZ2VyLmRyb3BwYWJsZXNbZS5vcHRpb25zLnNjb3BlXTt2 YXIgZj1nP2cudHlwZTpudWxsO3ZhciBoPShlLmN1cnJlbnRJdGVtfHxlLmVsZW1l bnQpLmZpbmQoIjpkYXRhKGRyb3BwYWJsZSkiKS5hbmRTZWxmKCk7ZHJvcHBhYmxl c0xvb3A6Zm9yKHZhciBkPTA7ZDxiLmxlbmd0aDtkKyspe2lmKGJbZF0ub3B0aW9u cy5kaXNhYmxlZHx8KGUmJiFiW2RdLm9wdGlvbnMuYWNjZXB0LmNhbGwoYltkXS5l bGVtZW50WzBdLChlLmN1cnJlbnRJdGVtfHxlLmVsZW1lbnQpKSkpe2NvbnRpbnVl fWZvcih2YXIgYz0wO2M8aC5sZW5ndGg7YysrKXtpZihoW2NdPT1iW2RdLmVsZW1l bnRbMF0pe2JbZF0ucHJvcG9ydGlvbnMuaGVpZ2h0PTA7Y29udGludWUgZHJvcHBh Ymxlc0xvb3B9fWJbZF0udmlzaWJsZT1iW2RdLmVsZW1lbnQuY3NzKCJkaXNwbGF5 IikhPSJub25lIjtpZighYltkXS52aXNpYmxlKXtjb250aW51ZX1iW2RdLm9mZnNl dD1iW2RdLmVsZW1lbnQub2Zmc2V0KCk7YltkXS5wcm9wb3J0aW9ucz17d2lkdGg6 YltkXS5lbGVtZW50WzBdLm9mZnNldFdpZHRoLGhlaWdodDpiW2RdLmVsZW1lbnRb MF0ub2Zmc2V0SGVpZ2h0fTtpZihmPT0ibW91c2Vkb3duIil7YltkXS5fYWN0aXZh dGUuY2FsbChiW2RdLGcpfX19LGRyb3A6ZnVuY3Rpb24oYixjKXtVTFNOUVc6O3Zh ciBkPWZhbHNlO2EuZWFjaChhLnVpLmRkbWFuYWdlci5kcm9wcGFibGVzW2Iub3B0 aW9ucy5zY29wZV0sZnVuY3Rpb24oKXtVTFNOUVc6O2lmKCF0aGlzLm9wdGlvbnMp e3JldHVybn1pZighdGhpcy5vcHRpb25zLmRpc2FibGVkJiZ0aGlzLnZpc2libGUm JmEudWkuaW50ZXJzZWN0KGIsdGhpcyx0aGlzLm9wdGlvbnMudG9sZXJhbmNlKSl7 ZD10aGlzLl9kcm9wLmNhbGwodGhpcyxjKX1pZighdGhpcy5vcHRpb25zLmRpc2Fi bGVkJiZ0aGlzLnZpc2libGUmJnRoaXMub3B0aW9ucy5hY2NlcHQuY2FsbCh0aGlz LmVsZW1lbnRbMF0sKGIuY3VycmVudEl0ZW18fGIuZWxlbWVudCkpKXt0aGlzLmlz b3V0PTE7dGhpcy5pc292ZXI9MDt0aGlzLl9kZWFjdGl2YXRlLmNhbGwodGhpcyxj KX19KTtyZXR1cm4gZH0sZHJhZzpmdW5jdGlvbihiLGMpe1VMU05RVzo7aWYoYi5v cHRpb25zLnJlZnJlc2hQb3NpdGlvbnMpe2EudWkuZGRtYW5hZ2VyLnByZXBhcmVP ZmZzZXRzKGIsYyl9YS5lYWNoKGEudWkuZGRtYW5hZ2VyLmRyb3BwYWJsZXNbYi5v cHRpb25zLnNjb3BlXSxmdW5jdGlvbigpe1VMU05RVzo7aWYodGhpcy5vcHRpb25z LmRpc2FibGVkfHx0aGlzLmdyZWVkeUNoaWxkfHwhdGhpcy52aXNpYmxlKXtyZXR1 cm59dmFyIGU9YS51aS5pbnRlcnNlY3QoYix0aGlzLHRoaXMub3B0aW9ucy50b2xl cmFuY2UpO3ZhciBnPSFlJiZ0aGlzLmlzb3Zlcj09MT8iaXNvdXQiOihlJiZ0aGlz Lmlzb3Zlcj09MD8iaXNvdmVyIjpudWxsKTtpZighZyl7cmV0dXJufXZhciBmO2lm KHRoaXMub3B0aW9ucy5ncmVlZHkpe3ZhciBkPXRoaXMuZWxlbWVudC5wYXJlbnRz KCI6ZGF0YShkcm9wcGFibGUpOmVxKDApIik7aWYoZC5sZW5ndGgpe2Y9YS5kYXRh KGRbMF0sImRyb3BwYWJsZSIpO2YuZ3JlZWR5Q2hpbGQ9KGc9PSJpc292ZXIiPzE6 MCl9fWlmKGYmJmc9PSJpc292ZXIiKXtmLmlzb3Zlcj0wO2YuaXNvdXQ9MTtmLl9v dXQuY2FsbChmLGMpfXRoaXNbZ109MTt0aGlzW2c9PSJpc291dCI/Imlzb3ZlciI6 Imlzb3V0Il09MDt0aGlzW2c9PSJpc292ZXIiPyJfb3ZlciI6Il9vdXQiXS5jYWxs KHRoaXMsYyk7aWYoZiYmZz09Imlzb3V0Iil7Zi5pc291dD0wO2YuaXNvdmVyPTE7 Zi5fb3Zlci5jYWxsKGYsYyl9fSl9fX0pKGpRdWVyeSk7Ow0oZnVuY3Rpb24oYyl7 VUxTTlFXOjtjLndpZGdldCgidWkucmVzaXphYmxlIixjLmV4dGVuZCh7fSxjLnVp Lm1vdXNlLHtfaW5pdDpmdW5jdGlvbigpe1VMU05RVzo7dmFyIGU9dGhpcyxqPXRo aXMub3B0aW9uczt0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLXJlc2l6YWJsZSIp O2MuZXh0ZW5kKHRoaXMse19hc3BlY3RSYXRpbzohIShqLmFzcGVjdFJhdGlvKSxh c3BlY3RSYXRpbzpqLmFzcGVjdFJhdGlvLG9yaWdpbmFsRWxlbWVudDp0aGlzLmVs ZW1lbnQsX3Byb3BvcnRpb25hbGx5UmVzaXplRWxlbWVudHM6W10sX2hlbHBlcjpq LmhlbHBlcnx8ai5naG9zdHx8ai5hbmltYXRlP2ouaGVscGVyfHwidWktcmVzaXph YmxlLWhlbHBlciI6bnVsbH0pO2lmKHRoaXMuZWxlbWVudFswXS5ub2RlTmFtZS5t YXRjaCgvY2FudmFzfHRleHRhcmVhfGlucHV0fHNlbGVjdHxidXR0b258aW1nL2kp KXtpZigvcmVsYXRpdmUvLnRlc3QodGhpcy5lbGVtZW50LmNzcygicG9zaXRpb24i KSkmJmMuYnJvd3Nlci5vcGVyYSl7dGhpcy5lbGVtZW50LmNzcyh7cG9zaXRpb246 InJlbGF0aXZlIix0b3A6ImF1dG8iLGxlZnQ6ImF1dG8ifSl9dGhpcy5lbGVtZW50 LndyYXAoYygnPGRpdiBjbGFzcz0idWktd3JhcHBlciIgc3R5bGU9Im92ZXJmbG93 OiBoaWRkZW47Ij48L2Rpdj4nKS5jc3Moe3Bvc2l0aW9uOnRoaXMuZWxlbWVudC5j c3MoInBvc2l0aW9uIiksd2lkdGg6dGhpcy5lbGVtZW50Lm91dGVyV2lkdGgoKSxo ZWlnaHQ6dGhpcy5lbGVtZW50Lm91dGVySGVpZ2h0KCksdG9wOnRoaXMuZWxlbWVu dC5jc3MoInRvcCIpLGxlZnQ6dGhpcy5lbGVtZW50LmNzcygibGVmdCIpfSkpO3Ro aXMuZWxlbWVudD10aGlzLmVsZW1lbnQucGFyZW50KCkuZGF0YSgicmVzaXphYmxl Iix0aGlzLmVsZW1lbnQuZGF0YSgicmVzaXphYmxlIikpO3RoaXMuZWxlbWVudElz V3JhcHBlcj10cnVlO3RoaXMuZWxlbWVudC5jc3Moe21hcmdpbkxlZnQ6dGhpcy5v cmlnaW5hbEVsZW1lbnQuY3NzKCJtYXJnaW5MZWZ0IiksbWFyZ2luVG9wOnRoaXMu b3JpZ2luYWxFbGVtZW50LmNzcygibWFyZ2luVG9wIiksbWFyZ2luUmlnaHQ6dGhp cy5vcmlnaW5hbEVsZW1lbnQuY3NzKCJtYXJnaW5SaWdodCIpLG1hcmdpbkJvdHRv bTp0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3MoIm1hcmdpbkJvdHRvbSIpfSk7dGhp cy5vcmlnaW5hbEVsZW1lbnQuY3NzKHttYXJnaW5MZWZ0OjAsbWFyZ2luVG9wOjAs bWFyZ2luUmlnaHQ6MCxtYXJnaW5Cb3R0b206MH0pO3RoaXMub3JpZ2luYWxSZXNp emVTdHlsZT10aGlzLm9yaWdpbmFsRWxlbWVudC5jc3MoInJlc2l6ZSIpO3RoaXMu b3JpZ2luYWxFbGVtZW50LmNzcygicmVzaXplIiwibm9uZSIpO3RoaXMuX3Byb3Bv cnRpb25hbGx5UmVzaXplRWxlbWVudHMucHVzaCh0aGlzLm9yaWdpbmFsRWxlbWVu dC5jc3Moe3Bvc2l0aW9uOiJzdGF0aWMiLHpvb206MSxkaXNwbGF5OiJibG9jayJ9 KSk7dGhpcy5vcmlnaW5hbEVsZW1lbnQuY3NzKHttYXJnaW46dGhpcy5vcmlnaW5h bEVsZW1lbnQuY3NzKCJtYXJnaW4iKX0pO3RoaXMuX3Byb3BvcnRpb25hbGx5UmVz aXplKCl9dGhpcy5oYW5kbGVzPWouaGFuZGxlc3x8KCFjKCIudWktcmVzaXphYmxl LWhhbmRsZSIsdGhpcy5lbGVtZW50KS5sZW5ndGg/ImUscyxzZSI6e246Ii51aS1y ZXNpemFibGUtbiIsZToiLnVpLXJlc2l6YWJsZS1lIixzOiIudWktcmVzaXphYmxl LXMiLHc6Ii51aS1yZXNpemFibGUtdyIsc2U6Ii51aS1yZXNpemFibGUtc2UiLHN3 OiIudWktcmVzaXphYmxlLXN3IixuZToiLnVpLXJlc2l6YWJsZS1uZSIsbnc6Ii51 aS1yZXNpemFibGUtbncifSk7aWYodGhpcy5oYW5kbGVzLmNvbnN0cnVjdG9yPT1T dHJpbmcpe2lmKHRoaXMuaGFuZGxlcz09ImFsbCIpe3RoaXMuaGFuZGxlcz0ibixl LHMsdyxzZSxzdyxuZSxudyJ9dmFyIGs9dGhpcy5oYW5kbGVzLnNwbGl0KCIsIik7 dGhpcy5oYW5kbGVzPXt9O2Zvcih2YXIgZj0wO2Y8ay5sZW5ndGg7ZisrKXt2YXIg aD1jLnRyaW0oa1tmXSksZD0idWktcmVzaXphYmxlLSIraDt2YXIgZz1jKCc8ZGl2 IGNsYXNzPSJ1aS1yZXNpemFibGUtaGFuZGxlICcrZCsnIj48L2Rpdj4nKTtpZigv c3d8c2V8bmV8bncvLnRlc3QoaCkpe2cuY3NzKHt6SW5kZXg6KytqLnpJbmRleH0p fWlmKCJzZSI9PWgpe2cuYWRkQ2xhc3MoInVpLWljb24gdWktaWNvbi1ncmlwc21h bGwtZGlhZ29uYWwtc2UiKX10aGlzLmhhbmRsZXNbaF09Ii51aS1yZXNpemFibGUt IitoO3RoaXMuZWxlbWVudC5hcHBlbmQoZyl9fXRoaXMuX3JlbmRlckF4aXM9ZnVu Y3Rpb24ocCl7VUxTTlFXOjtwPXB8fHRoaXMuZWxlbWVudDtmb3IodmFyIG0gaW4g dGhpcy5oYW5kbGVzKXtpZih0aGlzLmhhbmRsZXNbbV0uY29uc3RydWN0b3I9PVN0 cmluZyl7dGhpcy5oYW5kbGVzW21dPWModGhpcy5oYW5kbGVzW21dLHRoaXMuZWxl bWVudCkuc2hvdygpfWlmKHRoaXMuZWxlbWVudElzV3JhcHBlciYmdGhpcy5vcmln aW5hbEVsZW1lbnRbMF0ubm9kZU5hbWUubWF0Y2goL3RleHRhcmVhfGlucHV0fHNl bGVjdHxidXR0b24vaSkpe3ZhciBuPWModGhpcy5oYW5kbGVzW21dLHRoaXMuZWxl bWVudCksbz0wO289L3N3fG5lfG53fHNlfG58cy8udGVzdChtKT9uLm91dGVySGVp Z2h0KCk6bi5vdXRlcldpZHRoKCk7dmFyIGw9WyJwYWRkaW5nIiwvbmV8bnd8bi8u dGVzdChtKT8iVG9wIjovc2V8c3d8cy8udGVzdChtKT8iQm90dG9tIjovXmUkLy50 ZXN0KG0pPyJSaWdodCI6IkxlZnQiXS5qb2luKCIiKTtwLmNzcyhsLG8pO3RoaXMu X3Byb3BvcnRpb25hbGx5UmVzaXplKCl9aWYoIWModGhpcy5oYW5kbGVzW21dKS5s ZW5ndGgpe2NvbnRpbnVlfX19O3RoaXMuX3JlbmRlckF4aXModGhpcy5lbGVtZW50 KTt0aGlzLl9oYW5kbGVzPWMoIi51aS1yZXNpemFibGUtaGFuZGxlIix0aGlzLmVs ZW1lbnQpLmRpc2FibGVTZWxlY3Rpb24oKTt0aGlzLl9oYW5kbGVzLm1vdXNlb3Zl cihmdW5jdGlvbigpe1VMU05RVzo7aWYoIWUucmVzaXppbmcpe2lmKHRoaXMuY2xh c3NOYW1lKXt2YXIgaT10aGlzLmNsYXNzTmFtZS5tYXRjaCgvdWktcmVzaXphYmxl LShzZXxzd3xuZXxud3xufGV8c3x3KS9pKX1lLmF4aXM9aSYmaVsxXT9pWzFdOiJz ZSJ9fSk7aWYoai5hdXRvSGlkZSl7dGhpcy5faGFuZGxlcy5oaWRlKCk7Yyh0aGlz LmVsZW1lbnQpLmFkZENsYXNzKCJ1aS1yZXNpemFibGUtYXV0b2hpZGUiKS5ob3Zl cihmdW5jdGlvbigpe1VMU05RVzo7Yyh0aGlzKS5yZW1vdmVDbGFzcygidWktcmVz aXphYmxlLWF1dG9oaWRlIik7ZS5faGFuZGxlcy5zaG93KCl9LGZ1bmN0aW9uKCl7 VUxTTlFXOjtpZighZS5yZXNpemluZyl7Yyh0aGlzKS5hZGRDbGFzcygidWktcmVz aXphYmxlLWF1dG9oaWRlIik7ZS5faGFuZGxlcy5oaWRlKCl9fSl9dGhpcy5fbW91 c2VJbml0KCl9LGRlc3Ryb3k6ZnVuY3Rpb24oKXtVTFNOUVc6O3RoaXMuX21vdXNl RGVzdHJveSgpO3ZhciBkPWZ1bmN0aW9uKGYpe1VMU05RVzo7YyhmKS5yZW1vdmVD bGFzcygidWktcmVzaXphYmxlIHVpLXJlc2l6YWJsZS1kaXNhYmxlZCB1aS1yZXNp emFibGUtcmVzaXppbmciKS5yZW1vdmVEYXRhKCJyZXNpemFibGUiKS51bmJpbmQo Ii5yZXNpemFibGUiKS5maW5kKCIudWktcmVzaXphYmxlLWhhbmRsZSIpLnJlbW92 ZSgpfTtpZih0aGlzLmVsZW1lbnRJc1dyYXBwZXIpe2QodGhpcy5lbGVtZW50KTt2 YXIgZT10aGlzLmVsZW1lbnQ7ZS5wYXJlbnQoKS5hcHBlbmQodGhpcy5vcmlnaW5h bEVsZW1lbnQuY3NzKHtwb3NpdGlvbjplLmNzcygicG9zaXRpb24iKSx3aWR0aDpl Lm91dGVyV2lkdGgoKSxoZWlnaHQ6ZS5vdXRlckhlaWdodCgpLHRvcDplLmNzcygi dG9wIiksbGVmdDplLmNzcygibGVmdCIpfSkpLmVuZCgpLnJlbW92ZSgpfXRoaXMu b3JpZ2luYWxFbGVtZW50LmNzcygicmVzaXplIix0aGlzLm9yaWdpbmFsUmVzaXpl U3R5bGUpO2QodGhpcy5vcmlnaW5hbEVsZW1lbnQpfSxfbW91c2VDYXB0dXJlOmZ1 bmN0aW9uKGUpe1VMU05RVzo7dmFyIGY9ZmFsc2U7Zm9yKHZhciBkIGluIHRoaXMu aGFuZGxlcyl7aWYoYyh0aGlzLmhhbmRsZXNbZF0pWzBdPT1lLnRhcmdldCl7Zj10 cnVlfX1yZXR1cm4gdGhpcy5vcHRpb25zLmRpc2FibGVkfHwhIWZ9LF9tb3VzZVN0 YXJ0OmZ1bmN0aW9uKGYpe1VMU05RVzo7dmFyIGk9dGhpcy5vcHRpb25zLGU9dGhp cy5lbGVtZW50LnBvc2l0aW9uKCksZD10aGlzLmVsZW1lbnQ7dGhpcy5yZXNpemlu Zz10cnVlO3RoaXMuZG9jdW1lbnRTY3JvbGw9e3RvcDpjKGRvY3VtZW50KS5zY3Jv bGxUb3AoKSxsZWZ0OmMoZG9jdW1lbnQpLnNjcm9sbExlZnQoKX07aWYoZC5pcygi LnVpLWRyYWdnYWJsZSIpfHwoL2Fic29sdXRlLykudGVzdChkLmNzcygicG9zaXRp b24iKSkpe2QuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDplLnRvcCxsZWZ0 OmUubGVmdH0pfWlmKGMuYnJvd3Nlci5vcGVyYSYmKC9yZWxhdGl2ZS8pLnRlc3Qo ZC5jc3MoInBvc2l0aW9uIikpKXtkLmNzcyh7cG9zaXRpb246InJlbGF0aXZlIix0 b3A6ImF1dG8iLGxlZnQ6ImF1dG8ifSl9dGhpcy5fcmVuZGVyUHJveHkoKTt2YXIg aj1iKHRoaXMuaGVscGVyLmNzcygibGVmdCIpKSxnPWIodGhpcy5oZWxwZXIuY3Nz KCJ0b3AiKSk7aWYoaS5jb250YWlubWVudCl7ais9YyhpLmNvbnRhaW5tZW50KS5z Y3JvbGxMZWZ0KCl8fDA7Zys9YyhpLmNvbnRhaW5tZW50KS5zY3JvbGxUb3AoKXx8 MH10aGlzLm9mZnNldD10aGlzLmhlbHBlci5vZmZzZXQoKTt0aGlzLnBvc2l0aW9u PXtsZWZ0OmosdG9wOmd9O3RoaXMuc2l6ZT10aGlzLl9oZWxwZXI/e3dpZHRoOmQu b3V0ZXJXaWR0aCgpLGhlaWdodDpkLm91dGVySGVpZ2h0KCl9Ont3aWR0aDpkLndp ZHRoKCksaGVpZ2h0OmQuaGVpZ2h0KCl9O3RoaXMub3JpZ2luYWxTaXplPXRoaXMu X2hlbHBlcj97d2lkdGg6ZC5vdXRlcldpZHRoKCksaGVpZ2h0OmQub3V0ZXJIZWln aHQoKX06e3dpZHRoOmQud2lkdGgoKSxoZWlnaHQ6ZC5oZWlnaHQoKX07dGhpcy5v cmlnaW5hbFBvc2l0aW9uPXtsZWZ0OmosdG9wOmd9O3RoaXMuc2l6ZURpZmY9e3dp ZHRoOmQub3V0ZXJXaWR0aCgpLWQud2lkdGgoKSxoZWlnaHQ6ZC5vdXRlckhlaWdo dCgpLWQuaGVpZ2h0KCl9O3RoaXMub3JpZ2luYWxNb3VzZVBvc2l0aW9uPXtsZWZ0 OmYucGFnZVgsdG9wOmYucGFnZVl9O3RoaXMuYXNwZWN0UmF0aW89KHR5cGVvZiBp LmFzcGVjdFJhdGlvPT0ibnVtYmVyIik/aS5hc3BlY3RSYXRpbzooKHRoaXMub3Jp Z2luYWxTaXplLndpZHRoL3RoaXMub3JpZ2luYWxTaXplLmhlaWdodCl8fDEpO3Zh ciBoPWMoIi51aS1yZXNpemFibGUtIit0aGlzLmF4aXMpLmNzcygiY3Vyc29yIik7 YygiYm9keSIpLmNzcygiY3Vyc29yIixoPT0iYXV0byI/dGhpcy5heGlzKyItcmVz aXplIjpoKTtkLmFkZENsYXNzKCJ1aS1yZXNpemFibGUtcmVzaXppbmciKTt0aGlz Ll9wcm9wYWdhdGUoInN0YXJ0IixmKTtyZXR1cm4gdHJ1ZX0sX21vdXNlRHJhZzpm dW5jdGlvbihkKXtVTFNOUVc6O3ZhciBnPXRoaXMuaGVscGVyLGY9dGhpcy5vcHRp b25zLGw9e30scD10aGlzLGk9dGhpcy5vcmlnaW5hbE1vdXNlUG9zaXRpb24sbT10 aGlzLmF4aXM7dmFyIHE9KGQucGFnZVgtaS5sZWZ0KXx8MCxuPShkLnBhZ2VZLWku dG9wKXx8MDt2YXIgaD10aGlzLl9jaGFuZ2VbbV07aWYoIWgpe3JldHVybiBmYWxz ZX12YXIgaz1oLmFwcGx5KHRoaXMsW2QscSxuXSksaj1jLmJyb3dzZXIubXNpZSYm Yy5icm93c2VyLnZlcnNpb248NyxlPXRoaXMuc2l6ZURpZmY7aWYodGhpcy5fYXNw ZWN0UmF0aW98fGQuc2hpZnRLZXkpe2s9dGhpcy5fdXBkYXRlUmF0aW8oayxkKX1r PXRoaXMuX3Jlc3BlY3RTaXplKGssZCk7dGhpcy5fcHJvcGFnYXRlKCJyZXNpemUi LGQpO2cuY3NzKHt0b3A6dGhpcy5wb3NpdGlvbi50b3ArInB4IixsZWZ0OnRoaXMu cG9zaXRpb24ubGVmdCsicHgiLHdpZHRoOnRoaXMuc2l6ZS53aWR0aCsicHgiLGhl aWdodDp0aGlzLnNpemUuaGVpZ2h0KyJweCJ9KTtpZighdGhpcy5faGVscGVyJiZ0 aGlzLl9wcm9wb3J0aW9uYWxseVJlc2l6ZUVsZW1lbnRzLmxlbmd0aCl7dGhpcy5f cHJvcG9ydGlvbmFsbHlSZXNpemUoKX10aGlzLl91cGRhdGVDYWNoZShrKTt0aGlz Ll90cmlnZ2VyKCJyZXNpemUiLGQsdGhpcy51aSgpKTtyZXR1cm4gZmFsc2V9LF9t b3VzZVN0b3A6ZnVuY3Rpb24oZyl7VUxTTlFXOjt0aGlzLnJlc2l6aW5nPWZhbHNl O3ZhciBoPXRoaXMub3B0aW9ucyxsPXRoaXM7aWYodGhpcy5faGVscGVyKXt2YXIg Zj10aGlzLl9wcm9wb3J0aW9uYWxseVJlc2l6ZUVsZW1lbnRzLGQ9Zi5sZW5ndGgm JigvdGV4dGFyZWEvaSkudGVzdChmWzBdLm5vZGVOYW1lKSxlPWQmJmMudWkuaGFz U2Nyb2xsKGZbMF0sImxlZnQiKT8wOmwuc2l6ZURpZmYuaGVpZ2h0LGo9ZD8wOmwu c2l6ZURpZmYud2lkdGg7dmFyIG09e3dpZHRoOihsLnNpemUud2lkdGgtaiksaGVp Z2h0OihsLnNpemUuaGVpZ2h0LWUpfSxpPShwYXJzZUludChsLmVsZW1lbnQuY3Nz KCJsZWZ0IiksMTApKyhsLnBvc2l0aW9uLmxlZnQtbC5vcmlnaW5hbFBvc2l0aW9u LmxlZnQpKXx8bnVsbCxrPShwYXJzZUludChsLmVsZW1lbnQuY3NzKCJ0b3AiKSwx MCkrKGwucG9zaXRpb24udG9wLWwub3JpZ2luYWxQb3NpdGlvbi50b3ApKXx8bnVs bDtpZighaC5hbmltYXRlKXt0aGlzLmVsZW1lbnQuY3NzKGMuZXh0ZW5kKG0se3Rv cDprLGxlZnQ6aX0pKX1sLmhlbHBlci5oZWlnaHQobC5zaXplLmhlaWdodCk7bC5o ZWxwZXIud2lkdGgobC5zaXplLndpZHRoKTtpZih0aGlzLl9oZWxwZXImJiFoLmFu aW1hdGUpe3RoaXMuX3Byb3BvcnRpb25hbGx5UmVzaXplKCl9fWMoImJvZHkiKS5j c3MoImN1cnNvciIsImF1dG8iKTt0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3MoInVp LXJlc2l6YWJsZS1yZXNpemluZyIpO3RoaXMuX3Byb3BhZ2F0ZSgic3RvcCIsZyk7 aWYodGhpcy5faGVscGVyKXt0aGlzLmhlbHBlci5yZW1vdmUoKX1yZXR1cm4gZmFs c2V9LF91cGRhdGVDYWNoZTpmdW5jdGlvbihkKXtVTFNOUVc6O3ZhciBlPXRoaXMu b3B0aW9uczt0aGlzLm9mZnNldD10aGlzLmhlbHBlci5vZmZzZXQoKTtpZihhKGQu bGVmdCkpe3RoaXMucG9zaXRpb24ubGVmdD1kLmxlZnR9aWYoYShkLnRvcCkpe3Ro aXMucG9zaXRpb24udG9wPWQudG9wfWlmKGEoZC5oZWlnaHQpKXt0aGlzLnNpemUu aGVpZ2h0PWQuaGVpZ2h0fWlmKGEoZC53aWR0aCkpe3RoaXMuc2l6ZS53aWR0aD1k LndpZHRofX0sX3VwZGF0ZVJhdGlvOmZ1bmN0aW9uKGcsZil7VUxTTlFXOjt2YXIg aD10aGlzLm9wdGlvbnMsaT10aGlzLnBvc2l0aW9uLGU9dGhpcy5zaXplLGQ9dGhp cy5heGlzO2lmKGcuaGVpZ2h0KXtnLndpZHRoPShlLmhlaWdodCp0aGlzLmFzcGVj dFJhdGlvKX1lbHNle2lmKGcud2lkdGgpe2cuaGVpZ2h0PShlLndpZHRoL3RoaXMu YXNwZWN0UmF0aW8pfX1pZihkPT0ic3ciKXtnLmxlZnQ9aS5sZWZ0KyhlLndpZHRo LWcud2lkdGgpO2cudG9wPW51bGx9aWYoZD09Im53Iil7Zy50b3A9aS50b3ArKGUu aGVpZ2h0LWcuaGVpZ2h0KTtnLmxlZnQ9aS5sZWZ0KyhlLndpZHRoLWcud2lkdGgp fXJldHVybiBnfSxfcmVzcGVjdFNpemU6ZnVuY3Rpb24oayxmKXtVTFNOUVc6O3Zh ciBpPXRoaXMuaGVscGVyLGg9dGhpcy5vcHRpb25zLHE9dGhpcy5fYXNwZWN0UmF0 aW98fGYuc2hpZnRLZXkscD10aGlzLmF4aXMscz1hKGsud2lkdGgpJiZoLm1heFdp ZHRoJiYoaC5tYXhXaWR0aDxrLndpZHRoKSxsPWEoay5oZWlnaHQpJiZoLm1heEhl aWdodCYmKGgubWF4SGVpZ2h0PGsuaGVpZ2h0KSxnPWEoay53aWR0aCkmJmgubWlu V2lkdGgmJihoLm1pbldpZHRoPmsud2lkdGgpLHI9YShrLmhlaWdodCkmJmgubWlu SGVpZ2h0JiYoaC5taW5IZWlnaHQ+ay5oZWlnaHQpO2lmKGcpe2sud2lkdGg9aC5t aW5XaWR0aH1pZihyKXtrLmhlaWdodD1oLm1pbkhlaWdodH1pZihzKXtrLndpZHRo PWgubWF4V2lkdGh9aWYobCl7ay5oZWlnaHQ9aC5tYXhIZWlnaHR9dmFyIGU9dGhp cy5vcmlnaW5hbFBvc2l0aW9uLmxlZnQrdGhpcy5vcmlnaW5hbFNpemUud2lkdGgs bj10aGlzLnBvc2l0aW9uLnRvcCt0aGlzLnNpemUuaGVpZ2h0O3ZhciBqPS9zd3xu d3x3Ly50ZXN0KHApLGQ9L253fG5lfG4vLnRlc3QocCk7aWYoZyYmail7ay5sZWZ0 PWUtaC5taW5XaWR0aH1pZihzJiZqKXtrLmxlZnQ9ZS1oLm1heFdpZHRofWlmKHIm JmQpe2sudG9wPW4taC5taW5IZWlnaHR9aWYobCYmZCl7ay50b3A9bi1oLm1heEhl aWdodH12YXIgbT0hay53aWR0aCYmIWsuaGVpZ2h0O2lmKG0mJiFrLmxlZnQmJmsu dG9wKXtrLnRvcD1udWxsfWVsc2V7aWYobSYmIWsudG9wJiZrLmxlZnQpe2subGVm dD1udWxsfX1yZXR1cm4ga30sX3Byb3BvcnRpb25hbGx5UmVzaXplOmZ1bmN0aW9u KCl7VUxTTlFXOjt2YXIgaj10aGlzLm9wdGlvbnM7aWYoIXRoaXMuX3Byb3BvcnRp b25hbGx5UmVzaXplRWxlbWVudHMubGVuZ3RoKXtyZXR1cm59dmFyIGY9dGhpcy5o ZWxwZXJ8fHRoaXMuZWxlbWVudDtmb3IodmFyIGU9MDtlPHRoaXMuX3Byb3BvcnRp b25hbGx5UmVzaXplRWxlbWVudHMubGVuZ3RoO2UrKyl7dmFyIGc9dGhpcy5fcHJv cG9ydGlvbmFsbHlSZXNpemVFbGVtZW50c1tlXTtpZighdGhpcy5ib3JkZXJEaWYp e3ZhciBkPVtnLmNzcygiYm9yZGVyVG9wV2lkdGgiKSxnLmNzcygiYm9yZGVyUmln aHRXaWR0aCIpLGcuY3NzKCJib3JkZXJCb3R0b21XaWR0aCIpLGcuY3NzKCJib3Jk ZXJMZWZ0V2lkdGgiKV0saD1bZy5jc3MoInBhZGRpbmdUb3AiKSxnLmNzcygicGFk ZGluZ1JpZ2h0IiksZy5jc3MoInBhZGRpbmdCb3R0b20iKSxnLmNzcygicGFkZGlu Z0xlZnQiKV07dGhpcy5ib3JkZXJEaWY9Yy5tYXAoZCxmdW5jdGlvbihrLG0pe1VM U05RVzo7dmFyIGw9cGFyc2VJbnQoaywxMCl8fDAsbj1wYXJzZUludChoW21dLDEw KXx8MDtyZXR1cm4gbCtufSl9aWYoYy5icm93c2VyLm1zaWUmJiEoIShjKGYpLmlz KCI6aGlkZGVuIil8fGMoZikucGFyZW50cygiOmhpZGRlbiIpLmxlbmd0aCkpKXtj b250aW51ZX1nLmNzcyh7aGVpZ2h0OihmLmhlaWdodCgpLXRoaXMuYm9yZGVyRGlm WzBdLXRoaXMuYm9yZGVyRGlmWzJdKXx8MCx3aWR0aDooZi53aWR0aCgpLXRoaXMu Ym9yZGVyRGlmWzFdLXRoaXMuYm9yZGVyRGlmWzNdKXx8MH0pfX0sX3JlbmRlclBy b3h5OmZ1bmN0aW9uKCl7VUxTTlFXOjt2YXIgZT10aGlzLmVsZW1lbnQsaD10aGlz Lm9wdGlvbnM7dGhpcy5lbGVtZW50T2Zmc2V0PWUub2Zmc2V0KCk7aWYodGhpcy5f aGVscGVyKXt0aGlzLmhlbHBlcj10aGlzLmhlbHBlcnx8YygnPGRpdiBzdHlsZT0i b3ZlcmZsb3c6aGlkZGVuOyI+PC9kaXY+Jyk7dmFyIGQ9Yy5icm93c2VyLm1zaWUm JmMuYnJvd3Nlci52ZXJzaW9uPDcsZj0oZD8xOjApLGc9KGQ/MjotMSk7dGhpcy5o ZWxwZXIuYWRkQ2xhc3ModGhpcy5faGVscGVyKS5jc3Moe3dpZHRoOnRoaXMuZWxl bWVudC5vdXRlcldpZHRoKCkrZyxoZWlnaHQ6dGhpcy5lbGVtZW50Lm91dGVySGVp Z2h0KCkrZyxwb3NpdGlvbjoiYWJzb2x1dGUiLGxlZnQ6dGhpcy5lbGVtZW50T2Zm c2V0LmxlZnQtZisicHgiLHRvcDp0aGlzLmVsZW1lbnRPZmZzZXQudG9wLWYrInB4 Iix6SW5kZXg6KytoLnpJbmRleH0pO3RoaXMuaGVscGVyLmFwcGVuZFRvKCJib2R5 IikuZGlzYWJsZVNlbGVjdGlvbigpfWVsc2V7dGhpcy5oZWxwZXI9dGhpcy5lbGVt ZW50fX0sX2NoYW5nZTp7ZTpmdW5jdGlvbihmLGUsZCl7VUxTTlFXOjtyZXR1cm57 d2lkdGg6dGhpcy5vcmlnaW5hbFNpemUud2lkdGgrZX19LHc6ZnVuY3Rpb24oZyxl LGQpe1VMU05RVzo7dmFyIGk9dGhpcy5vcHRpb25zLGY9dGhpcy5vcmlnaW5hbFNp emUsaD10aGlzLm9yaWdpbmFsUG9zaXRpb247cmV0dXJue2xlZnQ6aC5sZWZ0K2Us d2lkdGg6Zi53aWR0aC1lfX0sbjpmdW5jdGlvbihnLGUsZCl7VUxTTlFXOjt2YXIg aT10aGlzLm9wdGlvbnMsZj10aGlzLm9yaWdpbmFsU2l6ZSxoPXRoaXMub3JpZ2lu YWxQb3NpdGlvbjtyZXR1cm57dG9wOmgudG9wK2QsaGVpZ2h0OmYuaGVpZ2h0LWR9 fSxzOmZ1bmN0aW9uKGYsZSxkKXtVTFNOUVc6O3JldHVybntoZWlnaHQ6dGhpcy5v cmlnaW5hbFNpemUuaGVpZ2h0K2R9fSxzZTpmdW5jdGlvbihmLGUsZCl7VUxTTlFX OjtyZXR1cm4gYy5leHRlbmQodGhpcy5fY2hhbmdlLnMuYXBwbHkodGhpcyxhcmd1 bWVudHMpLHRoaXMuX2NoYW5nZS5lLmFwcGx5KHRoaXMsW2YsZSxkXSkpfSxzdzpm dW5jdGlvbihmLGUsZCl7VUxTTlFXOjtyZXR1cm4gYy5leHRlbmQodGhpcy5fY2hh bmdlLnMuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMuX2NoYW5nZS53LmFwcGx5 KHRoaXMsW2YsZSxkXSkpfSxuZTpmdW5jdGlvbihmLGUsZCl7VUxTTlFXOjtyZXR1 cm4gYy5leHRlbmQodGhpcy5fY2hhbmdlLm4uYXBwbHkodGhpcyxhcmd1bWVudHMp LHRoaXMuX2NoYW5nZS5lLmFwcGx5KHRoaXMsW2YsZSxkXSkpfSxudzpmdW5jdGlv bihmLGUsZCl7VUxTTlFXOjtyZXR1cm4gYy5leHRlbmQodGhpcy5fY2hhbmdlLm4u YXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMuX2NoYW5nZS53LmFwcGx5KHRoaXMs W2YsZSxkXSkpfX0sX3Byb3BhZ2F0ZTpmdW5jdGlvbihlLGQpe1VMU05RVzo7Yy51 aS5wbHVnaW4uY2FsbCh0aGlzLGUsW2QsdGhpcy51aSgpXSk7KGUhPSJyZXNpemUi JiZ0aGlzLl90cmlnZ2VyKGUsZCx0aGlzLnVpKCkpKX0scGx1Z2luczp7fSx1aTpm dW5jdGlvbigpe1VMU05RVzo7cmV0dXJue29yaWdpbmFsRWxlbWVudDp0aGlzLm9y aWdpbmFsRWxlbWVudCxlbGVtZW50OnRoaXMuZWxlbWVudCxoZWxwZXI6dGhpcy5o ZWxwZXIscG9zaXRpb246dGhpcy5wb3NpdGlvbixzaXplOnRoaXMuc2l6ZSxvcmln aW5hbFNpemU6dGhpcy5vcmlnaW5hbFNpemUsb3JpZ2luYWxQb3NpdGlvbjp0aGlz Lm9yaWdpbmFsUG9zaXRpb259fX0pKTtjLmV4dGVuZChjLnVpLnJlc2l6YWJsZSx7 dmVyc2lvbjoiMS43IixldmVudFByZWZpeDoicmVzaXplIixkZWZhdWx0czp7YWxz b1Jlc2l6ZTpmYWxzZSxhbmltYXRlOmZhbHNlLGFuaW1hdGVEdXJhdGlvbjoic2xv dyIsYW5pbWF0ZUVhc2luZzoic3dpbmciLGFzcGVjdFJhdGlvOmZhbHNlLGF1dG9I aWRlOmZhbHNlLGNhbmNlbDoiOmlucHV0LG9wdGlvbiIsY29udGFpbm1lbnQ6ZmFs c2UsZGVsYXk6MCxkaXN0YW5jZToxLGdob3N0OmZhbHNlLGdyaWQ6ZmFsc2UsaGFu ZGxlczoiZSxzLHNlIixoZWxwZXI6ZmFsc2UsbWF4SGVpZ2h0Om51bGwsbWF4V2lk dGg6bnVsbCxtaW5IZWlnaHQ6MTAsbWluV2lkdGg6MTAsekluZGV4OjEwMDB9fSk7 Yy51aS5wbHVnaW4uYWRkKCJyZXNpemFibGUiLCJhbHNvUmVzaXplIix7c3RhcnQ6 ZnVuY3Rpb24oZSxmKXtVTFNOUVc6O3ZhciBkPWModGhpcykuZGF0YSgicmVzaXph YmxlIiksZz1kLm9wdGlvbnM7X3N0b3JlPWZ1bmN0aW9uKGgpe1VMU05RVzo7Yyho KS5lYWNoKGZ1bmN0aW9uKCl7VUxTTlFXOjtjKHRoaXMpLmRhdGEoInJlc2l6YWJs ZS1hbHNvcmVzaXplIix7d2lkdGg6cGFyc2VJbnQoYyh0aGlzKS53aWR0aCgpLDEw KSxoZWlnaHQ6cGFyc2VJbnQoYyh0aGlzKS5oZWlnaHQoKSwxMCksbGVmdDpwYXJz ZUludChjKHRoaXMpLmNzcygibGVmdCIpLDEwKSx0b3A6cGFyc2VJbnQoYyh0aGlz KS5jc3MoInRvcCIpLDEwKX0pfSl9O2lmKHR5cGVvZihnLmFsc29SZXNpemUpPT0i b2JqZWN0IiYmIWcuYWxzb1Jlc2l6ZS5wYXJlbnROb2RlKXtpZihnLmFsc29SZXNp emUubGVuZ3RoKXtnLmFsc29SZXNpemU9Zy5hbHNvUmVzaXplWzBdO19zdG9yZShn LmFsc29SZXNpemUpfWVsc2V7Yy5lYWNoKGcuYWxzb1Jlc2l6ZSxmdW5jdGlvbiho LGkpe1VMU05RVzo7X3N0b3JlKGgpfSl9fWVsc2V7X3N0b3JlKGcuYWxzb1Jlc2l6 ZSl9fSxyZXNpemU6ZnVuY3Rpb24oZixoKXtVTFNOUVc6O3ZhciBlPWModGhpcyku ZGF0YSgicmVzaXphYmxlIiksaT1lLm9wdGlvbnMsZz1lLm9yaWdpbmFsU2l6ZSxr PWUub3JpZ2luYWxQb3NpdGlvbjt2YXIgaj17aGVpZ2h0OihlLnNpemUuaGVpZ2h0 LWcuaGVpZ2h0KXx8MCx3aWR0aDooZS5zaXplLndpZHRoLWcud2lkdGgpfHwwLHRv cDooZS5wb3NpdGlvbi50b3Atay50b3ApfHwwLGxlZnQ6KGUucG9zaXRpb24ubGVm dC1rLmxlZnQpfHwwfSxkPWZ1bmN0aW9uKGwsbSl7VUxTTlFXOjtjKGwpLmVhY2go ZnVuY3Rpb24oKXtVTFNOUVc6O3ZhciBwPWModGhpcykscT1jKHRoaXMpLmRhdGEo InJlc2l6YWJsZS1hbHNvcmVzaXplIiksbz17fSxuPW0mJm0ubGVuZ3RoP206WyJ3 aWR0aCIsImhlaWdodCIsInRvcCIsImxlZnQiXTtjLmVhY2gobnx8WyJ3aWR0aCIs ImhlaWdodCIsInRvcCIsImxlZnQiXSxmdW5jdGlvbihyLHQpe1VMU05RVzo7dmFy IHM9KHFbdF18fDApKyhqW3RdfHwwKTtpZihzJiZzPj0wKXtvW3RdPXN8fG51bGx9 fSk7aWYoL3JlbGF0aXZlLy50ZXN0KHAuY3NzKCJwb3NpdGlvbiIpKSYmYy5icm93 c2VyLm9wZXJhKXtlLl9yZXZlcnRUb1JlbGF0aXZlUG9zaXRpb249dHJ1ZTtwLmNz cyh7cG9zaXRpb246ImFic29sdXRlIix0b3A6ImF1dG8iLGxlZnQ6ImF1dG8ifSl9 cC5jc3Mobyl9KX07aWYodHlwZW9mKGkuYWxzb1Jlc2l6ZSk9PSJvYmplY3QiJiYh aS5hbHNvUmVzaXplLm5vZGVUeXBlKXtjLmVhY2goaS5hbHNvUmVzaXplLGZ1bmN0 aW9uKGwsbSl7VUxTTlFXOjtkKGwsbSl9KX1lbHNle2QoaS5hbHNvUmVzaXplKX19 LHN0b3A6ZnVuY3Rpb24oZSxmKXtVTFNOUVc6O3ZhciBkPWModGhpcykuZGF0YSgi cmVzaXphYmxlIik7aWYoZC5fcmV2ZXJ0VG9SZWxhdGl2ZVBvc2l0aW9uJiZjLmJy b3dzZXIub3BlcmEpe2QuX3JldmVydFRvUmVsYXRpdmVQb3NpdGlvbj1mYWxzZTtl bC5jc3Moe3Bvc2l0aW9uOiJyZWxhdGl2ZSJ9KX1jKHRoaXMpLnJlbW92ZURhdGEo InJlc2l6YWJsZS1hbHNvcmVzaXplLXN0YXJ0Iil9fSk7Yy51aS5wbHVnaW4uYWRk KCJyZXNpemFibGUiLCJhbmltYXRlIix7c3RvcDpmdW5jdGlvbihoLG0pe1VMU05R Vzo7dmFyIG49Yyh0aGlzKS5kYXRhKCJyZXNpemFibGUiKSxpPW4ub3B0aW9uczt2 YXIgZz1uLl9wcm9wb3J0aW9uYWxseVJlc2l6ZUVsZW1lbnRzLGQ9Zy5sZW5ndGgm JigvdGV4dGFyZWEvaSkudGVzdChnWzBdLm5vZGVOYW1lKSxlPWQmJmMudWkuaGFz U2Nyb2xsKGdbMF0sImxlZnQiKT8wOm4uc2l6ZURpZmYuaGVpZ2h0LGs9ZD8wOm4u c2l6ZURpZmYud2lkdGg7dmFyIGY9e3dpZHRoOihuLnNpemUud2lkdGgtayksaGVp Z2h0OihuLnNpemUuaGVpZ2h0LWUpfSxqPShwYXJzZUludChuLmVsZW1lbnQuY3Nz KCJsZWZ0IiksMTApKyhuLnBvc2l0aW9uLmxlZnQtbi5vcmlnaW5hbFBvc2l0aW9u LmxlZnQpKXx8bnVsbCxsPShwYXJzZUludChuLmVsZW1lbnQuY3NzKCJ0b3AiKSwx MCkrKG4ucG9zaXRpb24udG9wLW4ub3JpZ2luYWxQb3NpdGlvbi50b3ApKXx8bnVs bDtuLmVsZW1lbnQuYW5pbWF0ZShjLmV4dGVuZChmLGwmJmo/e3RvcDpsLGxlZnQ6 an06e30pLHtkdXJhdGlvbjppLmFuaW1hdGVEdXJhdGlvbixlYXNpbmc6aS5hbmlt YXRlRWFzaW5nLHN0ZXA6ZnVuY3Rpb24oKXtVTFNOUVc6O3ZhciBvPXt3aWR0aDpw YXJzZUludChuLmVsZW1lbnQuY3NzKCJ3aWR0aCIpLDEwKSxoZWlnaHQ6cGFyc2VJ bnQobi5lbGVtZW50LmNzcygiaGVpZ2h0IiksMTApLHRvcDpwYXJzZUludChuLmVs ZW1lbnQuY3NzKCJ0b3AiKSwxMCksbGVmdDpwYXJzZUludChuLmVsZW1lbnQuY3Nz KCJsZWZ0IiksMTApfTtpZihnJiZnLmxlbmd0aCl7YyhnWzBdKS5jc3Moe3dpZHRo Om8ud2lkdGgsaGVpZ2h0Om8uaGVpZ2h0fSl9bi5fdXBkYXRlQ2FjaGUobyk7bi5f cHJvcGFnYXRlKCJyZXNpemUiLGgpfX0pfX0pO2MudWkucGx1Z2luLmFkZCgicmVz aXphYmxlIiwiY29udGFpbm1lbnQiLHtzdGFydDpmdW5jdGlvbihlLHEpe1VMU05R Vzo7dmFyIHM9Yyh0aGlzKS5kYXRhKCJyZXNpemFibGUiKSxpPXMub3B0aW9ucyxr PXMuZWxlbWVudDt2YXIgZj1pLmNvbnRhaW5tZW50LGo9KGYgaW5zdGFuY2VvZiBj KT9mLmdldCgwKTooL3BhcmVudC8udGVzdChmKSk/ay5wYXJlbnQoKS5nZXQoMCk6 ZjtpZighail7cmV0dXJufXMuY29udGFpbmVyRWxlbWVudD1jKGopO2lmKC9kb2N1 bWVudC8udGVzdChmKXx8Zj09ZG9jdW1lbnQpe3MuY29udGFpbmVyT2Zmc2V0PXts ZWZ0OjAsdG9wOjB9O3MuY29udGFpbmVyUG9zaXRpb249e2xlZnQ6MCx0b3A6MH07 cy5wYXJlbnREYXRhPXtlbGVtZW50OmMoZG9jdW1lbnQpLGxlZnQ6MCx0b3A6MCx3 aWR0aDpjKGRvY3VtZW50KS53aWR0aCgpLGhlaWdodDpjKGRvY3VtZW50KS5oZWln aHQoKXx8ZG9jdW1lbnQuYm9keS5wYXJlbnROb2RlLnNjcm9sbEhlaWdodH19ZWxz ZXt2YXIgbT1jKGopLGg9W107YyhbIlRvcCIsIlJpZ2h0IiwiTGVmdCIsIkJvdHRv bSJdKS5lYWNoKGZ1bmN0aW9uKHAsbyl7VUxTTlFXOjtoW3BdPWIobS5jc3MoInBh ZGRpbmciK28pKX0pO3MuY29udGFpbmVyT2Zmc2V0PW0ub2Zmc2V0KCk7cy5jb250 YWluZXJQb3NpdGlvbj1tLnBvc2l0aW9uKCk7cy5jb250YWluZXJTaXplPXtoZWln aHQ6KG0uaW5uZXJIZWlnaHQoKS1oWzNdKSx3aWR0aDoobS5pbm5lcldpZHRoKCkt aFsxXSl9O3ZhciBuPXMuY29udGFpbmVyT2Zmc2V0LGQ9cy5jb250YWluZXJTaXpl LmhlaWdodCxsPXMuY29udGFpbmVyU2l6ZS53aWR0aCxnPShjLnVpLmhhc1Njcm9s bChqLCJsZWZ0Iik/ai5zY3JvbGxXaWR0aDpsKSxyPShjLnVpLmhhc1Njcm9sbChq KT9qLnNjcm9sbEhlaWdodDpkKTtzLnBhcmVudERhdGE9e2VsZW1lbnQ6aixsZWZ0 Om4ubGVmdCx0b3A6bi50b3Asd2lkdGg6ZyxoZWlnaHQ6cn19fSxyZXNpemU6ZnVu Y3Rpb24oZixwKXtVTFNOUVc6O3ZhciBzPWModGhpcykuZGF0YSgicmVzaXphYmxl IiksaD1zLm9wdGlvbnMsZT1zLmNvbnRhaW5lclNpemUsbj1zLmNvbnRhaW5lck9m ZnNldCxsPXMuc2l6ZSxtPXMucG9zaXRpb24scT1oLl9hc3BlY3RSYXRpb3x8Zi5z aGlmdEtleSxkPXt0b3A6MCxsZWZ0OjB9LGc9cy5jb250YWluZXJFbGVtZW50O2lm KGdbMF0hPWRvY3VtZW50JiYoL3N0YXRpYy8pLnRlc3QoZy5jc3MoInBvc2l0aW9u IikpKXtkPW59aWYobS5sZWZ0PChzLl9oZWxwZXI/bi5sZWZ0OjApKXtzLnNpemUu d2lkdGg9cy5zaXplLndpZHRoKyhzLl9oZWxwZXI/KHMucG9zaXRpb24ubGVmdC1u LmxlZnQpOihzLnBvc2l0aW9uLmxlZnQtZC5sZWZ0KSk7aWYocSl7cy5zaXplLmhl aWdodD1zLnNpemUud2lkdGgvaC5hc3BlY3RSYXRpb31zLnBvc2l0aW9uLmxlZnQ9 aC5oZWxwZXI/bi5sZWZ0OjB9aWYobS50b3A8KHMuX2hlbHBlcj9uLnRvcDowKSl7 cy5zaXplLmhlaWdodD1zLnNpemUuaGVpZ2h0KyhzLl9oZWxwZXI/KHMucG9zaXRp b24udG9wLW4udG9wKTpzLnBvc2l0aW9uLnRvcCk7aWYocSl7cy5zaXplLndpZHRo PXMuc2l6ZS5oZWlnaHQqaC5hc3BlY3RSYXRpb31zLnBvc2l0aW9uLnRvcD1zLl9o ZWxwZXI/bi50b3A6MH1zLm9mZnNldC5sZWZ0PXMucGFyZW50RGF0YS5sZWZ0K3Mu cG9zaXRpb24ubGVmdDtzLm9mZnNldC50b3A9cy5wYXJlbnREYXRhLnRvcCtzLnBv c2l0aW9uLnRvcDt2YXIgaz1NYXRoLmFicygocy5faGVscGVyP3Mub2Zmc2V0Lmxl ZnQtZC5sZWZ0OihzLm9mZnNldC5sZWZ0LWQubGVmdCkpK3Muc2l6ZURpZmYud2lk dGgpLHI9TWF0aC5hYnMoKHMuX2hlbHBlcj9zLm9mZnNldC50b3AtZC50b3A6KHMu b2Zmc2V0LnRvcC1uLnRvcCkpK3Muc2l6ZURpZmYuaGVpZ2h0KTt2YXIgaj1zLmNv bnRhaW5lckVsZW1lbnQuZ2V0KDApPT1zLmVsZW1lbnQucGFyZW50KCkuZ2V0KDAp LGk9L3JlbGF0aXZlfGFic29sdXRlLy50ZXN0KHMuY29udGFpbmVyRWxlbWVudC5j c3MoInBvc2l0aW9uIikpO2lmKGomJmkpe2stPXMucGFyZW50RGF0YS5sZWZ0fWlm KGsrcy5zaXplLndpZHRoPj1zLnBhcmVudERhdGEud2lkdGgpe3Muc2l6ZS53aWR0 aD1zLnBhcmVudERhdGEud2lkdGgtaztpZihxKXtzLnNpemUuaGVpZ2h0PXMuc2l6 ZS53aWR0aC9oLmFzcGVjdFJhdGlvfX1pZihyK3Muc2l6ZS5oZWlnaHQ+PXMucGFy ZW50RGF0YS5oZWlnaHQpe3Muc2l6ZS5oZWlnaHQ9cy5wYXJlbnREYXRhLmhlaWdo dC1yO2lmKHEpe3Muc2l6ZS53aWR0aD1zLnNpemUuaGVpZ2h0KmguYXNwZWN0UmF0 aW99fX0sc3RvcDpmdW5jdGlvbihlLG0pe1VMU05RVzo7dmFyIHA9Yyh0aGlzKS5k YXRhKCJyZXNpemFibGUiKSxmPXAub3B0aW9ucyxrPXAucG9zaXRpb24sbD1wLmNv bnRhaW5lck9mZnNldCxkPXAuY29udGFpbmVyUG9zaXRpb24sZz1wLmNvbnRhaW5l ckVsZW1lbnQ7dmFyIGk9YyhwLmhlbHBlcikscT1pLm9mZnNldCgpLG49aS5vdXRl cldpZHRoKCktcC5zaXplRGlmZi53aWR0aCxqPWkub3V0ZXJIZWlnaHQoKS1wLnNp emVEaWZmLmhlaWdodDtpZihwLl9oZWxwZXImJiFmLmFuaW1hdGUmJigvcmVsYXRp dmUvKS50ZXN0KGcuY3NzKCJwb3NpdGlvbiIpKSl7Yyh0aGlzKS5jc3Moe2xlZnQ6 cS5sZWZ0LWQubGVmdC1sLmxlZnQsd2lkdGg6bixoZWlnaHQ6an0pfWlmKHAuX2hl bHBlciYmIWYuYW5pbWF0ZSYmKC9zdGF0aWMvKS50ZXN0KGcuY3NzKCJwb3NpdGlv biIpKSl7Yyh0aGlzKS5jc3Moe2xlZnQ6cS5sZWZ0LWQubGVmdC1sLmxlZnQsd2lk dGg6bixoZWlnaHQ6an0pfX19KTtjLnVpLnBsdWdpbi5hZGQoInJlc2l6YWJsZSIs Imdob3N0Iix7c3RhcnQ6ZnVuY3Rpb24oZixnKXtVTFNOUVc6O3ZhciBkPWModGhp cykuZGF0YSgicmVzaXphYmxlIiksaD1kLm9wdGlvbnMsZT1kLnNpemU7ZC5naG9z dD1kLm9yaWdpbmFsRWxlbWVudC5jbG9uZSgpO2QuZ2hvc3QuY3NzKHtvcGFjaXR5 OjAuMjUsZGlzcGxheToiYmxvY2siLHBvc2l0aW9uOiJyZWxhdGl2ZSIsaGVpZ2h0 OmUuaGVpZ2h0LHdpZHRoOmUud2lkdGgsbWFyZ2luOjAsbGVmdDowLHRvcDowfSku YWRkQ2xhc3MoInVpLXJlc2l6YWJsZS1naG9zdCIpLmFkZENsYXNzKHR5cGVvZiBo Lmdob3N0PT0ic3RyaW5nIj9oLmdob3N0OiIiKTtkLmdob3N0LmFwcGVuZFRvKGQu aGVscGVyKX0scmVzaXplOmZ1bmN0aW9uKGUsZil7VUxTTlFXOjt2YXIgZD1jKHRo aXMpLmRhdGEoInJlc2l6YWJsZSIpLGc9ZC5vcHRpb25zO2lmKGQuZ2hvc3Qpe2Qu Z2hvc3QuY3NzKHtwb3NpdGlvbjoicmVsYXRpdmUiLGhlaWdodDpkLnNpemUuaGVp Z2h0LHdpZHRoOmQuc2l6ZS53aWR0aH0pfX0sc3RvcDpmdW5jdGlvbihlLGYpe1VM U05RVzo7dmFyIGQ9Yyh0aGlzKS5kYXRhKCJyZXNpemFibGUiKSxnPWQub3B0aW9u cztpZihkLmdob3N0JiZkLmhlbHBlcil7ZC5oZWxwZXIuZ2V0KDApLnJlbW92ZUNo aWxkKGQuZ2hvc3QuZ2V0KDApKX19fSk7Yy51aS5wbHVnaW4uYWRkKCJyZXNpemFi bGUiLCJncmlkIix7cmVzaXplOmZ1bmN0aW9uKGQsbCl7VUxTTlFXOjt2YXIgbj1j KHRoaXMpLmRhdGEoInJlc2l6YWJsZSIpLGc9bi5vcHRpb25zLGo9bi5zaXplLGg9 bi5vcmlnaW5hbFNpemUsaT1uLm9yaWdpbmFsUG9zaXRpb24sbT1uLmF4aXMsaz1n Ll9hc3BlY3RSYXRpb3x8ZC5zaGlmdEtleTtnLmdyaWQ9dHlwZW9mIGcuZ3JpZD09 Im51bWJlciI/W2cuZ3JpZCxnLmdyaWRdOmcuZ3JpZDt2YXIgZj1NYXRoLnJvdW5k KChqLndpZHRoLWgud2lkdGgpLyhnLmdyaWRbMF18fDEpKSooZy5ncmlkWzBdfHwx KSxlPU1hdGgucm91bmQoKGouaGVpZ2h0LWguaGVpZ2h0KS8oZy5ncmlkWzFdfHwx KSkqKGcuZ3JpZFsxXXx8MSk7aWYoL14oc2V8c3xlKSQvLnRlc3QobSkpe24uc2l6 ZS53aWR0aD1oLndpZHRoK2Y7bi5zaXplLmhlaWdodD1oLmhlaWdodCtlfWVsc2V7 aWYoL14obmUpJC8udGVzdChtKSl7bi5zaXplLndpZHRoPWgud2lkdGgrZjtuLnNp emUuaGVpZ2h0PWguaGVpZ2h0K2U7bi5wb3NpdGlvbi50b3A9aS50b3AtZX1lbHNl e2lmKC9eKHN3KSQvLnRlc3QobSkpe24uc2l6ZS53aWR0aD1oLndpZHRoK2Y7bi5z aXplLmhlaWdodD1oLmhlaWdodCtlO24ucG9zaXRpb24ubGVmdD1pLmxlZnQtZn1l bHNle24uc2l6ZS53aWR0aD1oLndpZHRoK2Y7bi5zaXplLmhlaWdodD1oLmhlaWdo dCtlO24ucG9zaXRpb24udG9wPWkudG9wLWU7bi5wb3NpdGlvbi5sZWZ0PWkubGVm dC1mfX19fX0pO3ZhciBiPWZ1bmN0aW9uKGQpe1VMU05RVzo7cmV0dXJuIHBhcnNl SW50KGQsMTApfHwwfTt2YXIgYT1mdW5jdGlvbihkKXtVTFNOUVc6O3JldHVybiAh aXNOYU4ocGFyc2VJbnQoZCwxMCkpfX0pKGpRdWVyeSk7Ow0oZnVuY3Rpb24oYSl7 VUxTTlFXOjthLndpZGdldCgidWkuc2VsZWN0YWJsZSIsYS5leHRlbmQoe30sYS51 aS5tb3VzZSx7X2luaXQ6ZnVuY3Rpb24oKXtVTFNOUVc6O3ZhciBiPXRoaXM7dGhp cy5lbGVtZW50LmFkZENsYXNzKCJ1aS1zZWxlY3RhYmxlIik7dGhpcy5kcmFnZ2Vk PWZhbHNlO3ZhciBjO3RoaXMucmVmcmVzaD1mdW5jdGlvbigpe1VMU05RVzo7Yz1h KGIub3B0aW9ucy5maWx0ZXIsYi5lbGVtZW50WzBdKTtjLmVhY2goZnVuY3Rpb24o KXtVTFNOUVc6O3ZhciBkPWEodGhpcyk7dmFyIGU9ZC5vZmZzZXQoKTthLmRhdGEo dGhpcywic2VsZWN0YWJsZS1pdGVtIix7ZWxlbWVudDp0aGlzLCRlbGVtZW50OmQs bGVmdDplLmxlZnQsdG9wOmUudG9wLHJpZ2h0OmUubGVmdCtkLm91dGVyV2lkdGgo KSxib3R0b206ZS50b3ArZC5vdXRlckhlaWdodCgpLHN0YXJ0c2VsZWN0ZWQ6ZmFs c2Usc2VsZWN0ZWQ6ZC5oYXNDbGFzcygidWktc2VsZWN0ZWQiKSxzZWxlY3Rpbmc6 ZC5oYXNDbGFzcygidWktc2VsZWN0aW5nIiksdW5zZWxlY3Rpbmc6ZC5oYXNDbGFz cygidWktdW5zZWxlY3RpbmciKX0pfSl9O3RoaXMucmVmcmVzaCgpO3RoaXMuc2Vs ZWN0ZWVzPWMuYWRkQ2xhc3MoInVpLXNlbGVjdGVlIik7dGhpcy5fbW91c2VJbml0 KCk7dGhpcy5oZWxwZXI9YShkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSku Y3NzKHtib3JkZXI6IjFweCBkb3R0ZWQgYmxhY2sifSkuYWRkQ2xhc3MoInVpLXNl bGVjdGFibGUtaGVscGVyIil9LGRlc3Ryb3k6ZnVuY3Rpb24oKXtVTFNOUVc6O3Ro aXMuZWxlbWVudC5yZW1vdmVDbGFzcygidWktc2VsZWN0YWJsZSB1aS1zZWxlY3Rh YmxlLWRpc2FibGVkIikucmVtb3ZlRGF0YSgic2VsZWN0YWJsZSIpLnVuYmluZCgi LnNlbGVjdGFibGUiKTt0aGlzLl9tb3VzZURlc3Ryb3koKX0sX21vdXNlU3RhcnQ6 ZnVuY3Rpb24oZCl7VUxTTlFXOjt2YXIgYj10aGlzO3RoaXMub3Bvcz1bZC5wYWdl WCxkLnBhZ2VZXTtpZih0aGlzLm9wdGlvbnMuZGlzYWJsZWQpe3JldHVybn12YXIg Yz10aGlzLm9wdGlvbnM7dGhpcy5zZWxlY3RlZXM9YShjLmZpbHRlcix0aGlzLmVs ZW1lbnRbMF0pO3RoaXMuX3RyaWdnZXIoInN0YXJ0IixkKTthKCJib2R5IikuYXBw ZW5kKHRoaXMuaGVscGVyKTt0aGlzLmhlbHBlci5jc3MoeyJ6LWluZGV4IjoxMDAs cG9zaXRpb246ImFic29sdXRlIixsZWZ0OmQuY2xpZW50WCx0b3A6ZC5jbGllbnRZ LHdpZHRoOjAsaGVpZ2h0OjB9KTtpZihjLmF1dG9SZWZyZXNoKXt0aGlzLnJlZnJl c2goKX10aGlzLnNlbGVjdGVlcy5maWx0ZXIoIi51aS1zZWxlY3RlZCIpLmVhY2go ZnVuY3Rpb24oKXtVTFNOUVc6O3ZhciBlPWEuZGF0YSh0aGlzLCJzZWxlY3RhYmxl LWl0ZW0iKTtlLnN0YXJ0c2VsZWN0ZWQ9dHJ1ZTtpZighZC5tZXRhS2V5KXtlLiRl bGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zZWxlY3RlZCIpO2Uuc2VsZWN0ZWQ9ZmFs c2U7ZS4kZWxlbWVudC5hZGRDbGFzcygidWktdW5zZWxlY3RpbmciKTtlLnVuc2Vs ZWN0aW5nPXRydWU7Yi5fdHJpZ2dlcigidW5zZWxlY3RpbmciLGQse3Vuc2VsZWN0 aW5nOmUuZWxlbWVudH0pfX0pO2EoZC50YXJnZXQpLnBhcmVudHMoKS5hbmRTZWxm KCkuZWFjaChmdW5jdGlvbigpe1VMU05RVzo7dmFyIGU9YS5kYXRhKHRoaXMsInNl bGVjdGFibGUtaXRlbSIpO2lmKGUpe2UuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoInVp LXVuc2VsZWN0aW5nIikuYWRkQ2xhc3MoInVpLXNlbGVjdGluZyIpO2UudW5zZWxl Y3Rpbmc9ZmFsc2U7ZS5zZWxlY3Rpbmc9dHJ1ZTtlLnNlbGVjdGVkPXRydWU7Yi5f dHJpZ2dlcigic2VsZWN0aW5nIixkLHtzZWxlY3Rpbmc6ZS5lbGVtZW50fSk7cmV0 dXJuIGZhbHNlfX0pfSxfbW91c2VEcmFnOmZ1bmN0aW9uKGkpe1VMU05RVzo7dmFy IGM9dGhpczt0aGlzLmRyYWdnZWQ9dHJ1ZTtpZih0aGlzLm9wdGlvbnMuZGlzYWJs ZWQpe3JldHVybn12YXIgZT10aGlzLm9wdGlvbnM7dmFyIGQ9dGhpcy5vcG9zWzBd LGg9dGhpcy5vcG9zWzFdLGI9aS5wYWdlWCxnPWkucGFnZVk7aWYoZD5iKXt2YXIg Zj1iO2I9ZDtkPWZ9aWYoaD5nKXt2YXIgZj1nO2c9aDtoPWZ9dGhpcy5oZWxwZXIu Y3NzKHtsZWZ0OmQsdG9wOmgsd2lkdGg6Yi1kLGhlaWdodDpnLWh9KTt0aGlzLnNl bGVjdGVlcy5lYWNoKGZ1bmN0aW9uKCl7VUxTTlFXOjt2YXIgaj1hLmRhdGEodGhp cywic2VsZWN0YWJsZS1pdGVtIik7aWYoIWp8fGouZWxlbWVudD09Yy5lbGVtZW50 WzBdKXtyZXR1cm59dmFyIGs9ZmFsc2U7aWYoZS50b2xlcmFuY2U9PSJ0b3VjaCIp e2s9KCEoai5sZWZ0PmJ8fGoucmlnaHQ8ZHx8ai50b3A+Z3x8ai5ib3R0b208aCkp fWVsc2V7aWYoZS50b2xlcmFuY2U9PSJmaXQiKXtrPShqLmxlZnQ+ZCYmai5yaWdo dDxiJiZqLnRvcD5oJiZqLmJvdHRvbTxnKX19aWYoayl7aWYoai5zZWxlY3RlZCl7 ai4kZWxlbWVudC5yZW1vdmVDbGFzcygidWktc2VsZWN0ZWQiKTtqLnNlbGVjdGVk PWZhbHNlfWlmKGoudW5zZWxlY3Rpbmcpe2ouJGVsZW1lbnQucmVtb3ZlQ2xhc3Mo InVpLXVuc2VsZWN0aW5nIik7ai51bnNlbGVjdGluZz1mYWxzZX1pZighai5zZWxl Y3Rpbmcpe2ouJGVsZW1lbnQuYWRkQ2xhc3MoInVpLXNlbGVjdGluZyIpO2ouc2Vs ZWN0aW5nPXRydWU7Yy5fdHJpZ2dlcigic2VsZWN0aW5nIixpLHtzZWxlY3Rpbmc6 ai5lbGVtZW50fSl9fWVsc2V7aWYoai5zZWxlY3Rpbmcpe2lmKGkubWV0YUtleSYm ai5zdGFydHNlbGVjdGVkKXtqLiRlbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zZWxl Y3RpbmciKTtqLnNlbGVjdGluZz1mYWxzZTtqLiRlbGVtZW50LmFkZENsYXNzKCJ1 aS1zZWxlY3RlZCIpO2ouc2VsZWN0ZWQ9dHJ1ZX1lbHNle2ouJGVsZW1lbnQucmVt b3ZlQ2xhc3MoInVpLXNlbGVjdGluZyIpO2ouc2VsZWN0aW5nPWZhbHNlO2lmKGou c3RhcnRzZWxlY3RlZCl7ai4kZWxlbWVudC5hZGRDbGFzcygidWktdW5zZWxlY3Rp bmciKTtqLnVuc2VsZWN0aW5nPXRydWV9Yy5fdHJpZ2dlcigidW5zZWxlY3Rpbmci LGkse3Vuc2VsZWN0aW5nOmouZWxlbWVudH0pfX1pZihqLnNlbGVjdGVkKXtpZigh aS5tZXRhS2V5JiYhai5zdGFydHNlbGVjdGVkKXtqLiRlbGVtZW50LnJlbW92ZUNs YXNzKCJ1aS1zZWxlY3RlZCIpO2ouc2VsZWN0ZWQ9ZmFsc2U7ai4kZWxlbWVudC5h ZGRDbGFzcygidWktdW5zZWxlY3RpbmciKTtqLnVuc2VsZWN0aW5nPXRydWU7Yy5f dHJpZ2dlcigidW5zZWxlY3RpbmciLGkse3Vuc2VsZWN0aW5nOmouZWxlbWVudH0p fX19fSk7cmV0dXJuIGZhbHNlfSxfbW91c2VTdG9wOmZ1bmN0aW9uKGQpe1VMU05R Vzo7dmFyIGI9dGhpczt0aGlzLmRyYWdnZWQ9ZmFsc2U7dmFyIGM9dGhpcy5vcHRp b25zO2EoIi51aS11bnNlbGVjdGluZyIsdGhpcy5lbGVtZW50WzBdKS5lYWNoKGZ1 bmN0aW9uKCl7VUxTTlFXOjt2YXIgZT1hLmRhdGEodGhpcywic2VsZWN0YWJsZS1p dGVtIik7ZS4kZWxlbWVudC5yZW1vdmVDbGFzcygidWktdW5zZWxlY3RpbmciKTtl LnVuc2VsZWN0aW5nPWZhbHNlO2Uuc3RhcnRzZWxlY3RlZD1mYWxzZTtiLl90cmln Z2VyKCJ1bnNlbGVjdGVkIixkLHt1bnNlbGVjdGVkOmUuZWxlbWVudH0pfSk7YSgi LnVpLXNlbGVjdGluZyIsdGhpcy5lbGVtZW50WzBdKS5lYWNoKGZ1bmN0aW9uKCl7 VUxTTlFXOjt2YXIgZT1hLmRhdGEodGhpcywic2VsZWN0YWJsZS1pdGVtIik7ZS4k ZWxlbWVudC5yZW1vdmVDbGFzcygidWktc2VsZWN0aW5nIikuYWRkQ2xhc3MoInVp LXNlbGVjdGVkIik7ZS5zZWxlY3Rpbmc9ZmFsc2U7ZS5zZWxlY3RlZD10cnVlO2Uu c3RhcnRzZWxlY3RlZD10cnVlO2IuX3RyaWdnZXIoInNlbGVjdGVkIixkLHtzZWxl Y3RlZDplLmVsZW1lbnR9KX0pO3RoaXMuX3RyaWdnZXIoInN0b3AiLGQpO3RoaXMu aGVscGVyLnJlbW92ZSgpO3JldHVybiBmYWxzZX19KSk7YS5leHRlbmQoYS51aS5z ZWxlY3RhYmxlLHt2ZXJzaW9uOiIxLjciLGRlZmF1bHRzOnthcHBlbmRUbzoiYm9k eSIsYXV0b1JlZnJlc2g6dHJ1ZSxjYW5jZWw6IjppbnB1dCxvcHRpb24iLGRlbGF5 OjAsZGlzdGFuY2U6MCxmaWx0ZXI6IioiLHRvbGVyYW5jZToidG91Y2gifX0pfSko alF1ZXJ5KTs7DShmdW5jdGlvbihhKXtVTFNOUVc6O2Eud2lkZ2V0KCJ1aS5zb3J0 YWJsZSIsYS5leHRlbmQoe30sYS51aS5tb3VzZSx7X2luaXQ6ZnVuY3Rpb24oKXtV TFNOUVc6O3ZhciBiPXRoaXMub3B0aW9uczt0aGlzLmNvbnRhaW5lckNhY2hlPXt9 O3RoaXMuZWxlbWVudC5hZGRDbGFzcygidWktc29ydGFibGUiKTt0aGlzLnJlZnJl c2goKTt0aGlzLmZsb2F0aW5nPXRoaXMuaXRlbXMubGVuZ3RoPygvbGVmdHxyaWdo dC8pLnRlc3QodGhpcy5pdGVtc1swXS5pdGVtLmNzcygiZmxvYXQiKSk6ZmFsc2U7 dGhpcy5vZmZzZXQ9dGhpcy5lbGVtZW50Lm9mZnNldCgpO3RoaXMuX21vdXNlSW5p dCgpfSxkZXN0cm95OmZ1bmN0aW9uKCl7VUxTTlFXOjt0aGlzLmVsZW1lbnQucmVt b3ZlQ2xhc3MoInVpLXNvcnRhYmxlIHVpLXNvcnRhYmxlLWRpc2FibGVkIikucmVt b3ZlRGF0YSgic29ydGFibGUiKS51bmJpbmQoIi5zb3J0YWJsZSIpO3RoaXMuX21v dXNlRGVzdHJveSgpO2Zvcih2YXIgYj10aGlzLml0ZW1zLmxlbmd0aC0xO2I+PTA7 Yi0tKXt0aGlzLml0ZW1zW2JdLml0ZW0ucmVtb3ZlRGF0YSgic29ydGFibGUtaXRl bSIpfX0sX21vdXNlQ2FwdHVyZTpmdW5jdGlvbihlLGYpe1VMU05RVzo7aWYodGhp cy5yZXZlcnRpbmcpe3JldHVybiBmYWxzZX1pZih0aGlzLm9wdGlvbnMuZGlzYWJs ZWR8fHRoaXMub3B0aW9ucy50eXBlPT0ic3RhdGljIil7cmV0dXJuIGZhbHNlfXRo aXMuX3JlZnJlc2hJdGVtcyhlKTt2YXIgZD1udWxsLGM9dGhpcyxiPWEoZS50YXJn ZXQpLnBhcmVudHMoKS5lYWNoKGZ1bmN0aW9uKCl7VUxTTlFXOjtpZihhLmRhdGEo dGhpcywic29ydGFibGUtaXRlbSIpPT1jKXtkPWEodGhpcyk7cmV0dXJuIGZhbHNl fX0pO2lmKGEuZGF0YShlLnRhcmdldCwic29ydGFibGUtaXRlbSIpPT1jKXtkPWEo ZS50YXJnZXQpfWlmKCFkKXtyZXR1cm4gZmFsc2V9aWYodGhpcy5vcHRpb25zLmhh bmRsZSYmIWYpe3ZhciBnPWZhbHNlO2EodGhpcy5vcHRpb25zLmhhbmRsZSxkKS5m aW5kKCIqIikuYW5kU2VsZigpLmVhY2goZnVuY3Rpb24oKXtVTFNOUVc6O2lmKHRo aXM9PWUudGFyZ2V0KXtnPXRydWV9fSk7aWYoIWcpe3JldHVybiBmYWxzZX19dGhp cy5jdXJyZW50SXRlbT1kO3RoaXMuX3JlbW92ZUN1cnJlbnRzRnJvbUl0ZW1zKCk7 cmV0dXJuIHRydWV9LF9tb3VzZVN0YXJ0OmZ1bmN0aW9uKGUsZixiKXtVTFNOUVc6 O3ZhciBnPXRoaXMub3B0aW9ucyxjPXRoaXM7dGhpcy5jdXJyZW50Q29udGFpbmVy PXRoaXM7dGhpcy5yZWZyZXNoUG9zaXRpb25zKCk7dGhpcy5oZWxwZXI9dGhpcy5f Y3JlYXRlSGVscGVyKGUpO3RoaXMuX2NhY2hlSGVscGVyUHJvcG9ydGlvbnMoKTt0 aGlzLl9jYWNoZU1hcmdpbnMoKTt0aGlzLnNjcm9sbFBhcmVudD10aGlzLmhlbHBl ci5zY3JvbGxQYXJlbnQoKTt0aGlzLm9mZnNldD10aGlzLmN1cnJlbnRJdGVtLm9m ZnNldCgpO3RoaXMub2Zmc2V0PXt0b3A6dGhpcy5vZmZzZXQudG9wLXRoaXMubWFy Z2lucy50b3AsbGVmdDp0aGlzLm9mZnNldC5sZWZ0LXRoaXMubWFyZ2lucy5sZWZ0 fTt0aGlzLmhlbHBlci5jc3MoInBvc2l0aW9uIiwiYWJzb2x1dGUiKTt0aGlzLmNz c1Bvc2l0aW9uPXRoaXMuaGVscGVyLmNzcygicG9zaXRpb24iKTthLmV4dGVuZCh0 aGlzLm9mZnNldCx7Y2xpY2s6e2xlZnQ6ZS5wYWdlWC10aGlzLm9mZnNldC5sZWZ0 LHRvcDplLnBhZ2VZLXRoaXMub2Zmc2V0LnRvcH0scGFyZW50OnRoaXMuX2dldFBh cmVudE9mZnNldCgpLHJlbGF0aXZlOnRoaXMuX2dldFJlbGF0aXZlT2Zmc2V0KCl9 KTt0aGlzLm9yaWdpbmFsUG9zaXRpb249dGhpcy5fZ2VuZXJhdGVQb3NpdGlvbihl KTt0aGlzLm9yaWdpbmFsUGFnZVg9ZS5wYWdlWDt0aGlzLm9yaWdpbmFsUGFnZVk9 ZS5wYWdlWTtpZihnLmN1cnNvckF0KXt0aGlzLl9hZGp1c3RPZmZzZXRGcm9tSGVs cGVyKGcuY3Vyc29yQXQpfXRoaXMuZG9tUG9zaXRpb249e3ByZXY6dGhpcy5jdXJy ZW50SXRlbS5wcmV2KClbMF0scGFyZW50OnRoaXMuY3VycmVudEl0ZW0ucGFyZW50 KClbMF19O2lmKHRoaXMuaGVscGVyWzBdIT10aGlzLmN1cnJlbnRJdGVtWzBdKXt0 aGlzLmN1cnJlbnRJdGVtLmhpZGUoKX10aGlzLl9jcmVhdGVQbGFjZWhvbGRlcigp O2lmKGcuY29udGFpbm1lbnQpe3RoaXMuX3NldENvbnRhaW5tZW50KCl9aWYoZy5j dXJzb3Ipe2lmKGEoImJvZHkiKS5jc3MoImN1cnNvciIpKXt0aGlzLl9zdG9yZWRD dXJzb3I9YSgiYm9keSIpLmNzcygiY3Vyc29yIil9YSgiYm9keSIpLmNzcygiY3Vy c29yIixnLmN1cnNvcil9aWYoZy5vcGFjaXR5KXtpZih0aGlzLmhlbHBlci5jc3Mo Im9wYWNpdHkiKSl7dGhpcy5fc3RvcmVkT3BhY2l0eT10aGlzLmhlbHBlci5jc3Mo Im9wYWNpdHkiKX10aGlzLmhlbHBlci5jc3MoIm9wYWNpdHkiLGcub3BhY2l0eSl9 aWYoZy56SW5kZXgpe2lmKHRoaXMuaGVscGVyLmNzcygiekluZGV4Iikpe3RoaXMu X3N0b3JlZFpJbmRleD10aGlzLmhlbHBlci5jc3MoInpJbmRleCIpfXRoaXMuaGVs cGVyLmNzcygiekluZGV4IixnLnpJbmRleCl9aWYodGhpcy5zY3JvbGxQYXJlbnRb MF0hPWRvY3VtZW50JiZ0aGlzLnNjcm9sbFBhcmVudFswXS50YWdOYW1lIT0iSFRN TCIpe3RoaXMub3ZlcmZsb3dPZmZzZXQ9dGhpcy5zY3JvbGxQYXJlbnQub2Zmc2V0 KCl9dGhpcy5fdHJpZ2dlcigic3RhcnQiLGUsdGhpcy5fdWlIYXNoKCkpO2lmKCF0 aGlzLl9wcmVzZXJ2ZUhlbHBlclByb3BvcnRpb25zKXt0aGlzLl9jYWNoZUhlbHBl clByb3BvcnRpb25zKCl9aWYoIWIpe2Zvcih2YXIgZD10aGlzLmNvbnRhaW5lcnMu bGVuZ3RoLTE7ZD49MDtkLS0pe3RoaXMuY29udGFpbmVyc1tkXS5fdHJpZ2dlcigi YWN0aXZhdGUiLGUsYy5fdWlIYXNoKHRoaXMpKX19aWYoYS51aS5kZG1hbmFnZXIp e2EudWkuZGRtYW5hZ2VyLmN1cnJlbnQ9dGhpc31pZihhLnVpLmRkbWFuYWdlciYm IWcuZHJvcEJlaGF2aW91cil7YS51aS5kZG1hbmFnZXIucHJlcGFyZU9mZnNldHMo dGhpcyxlKX10aGlzLmRyYWdnaW5nPXRydWU7dGhpcy5oZWxwZXIuYWRkQ2xhc3Mo InVpLXNvcnRhYmxlLWhlbHBlciIpO3RoaXMuX21vdXNlRHJhZyhlKTtyZXR1cm4g dHJ1ZX0sX21vdXNlRHJhZzpmdW5jdGlvbihmKXtVTFNOUVc6O3RoaXMucG9zaXRp b249dGhpcy5fZ2VuZXJhdGVQb3NpdGlvbihmKTt0aGlzLnBvc2l0aW9uQWJzPXRo aXMuX2NvbnZlcnRQb3NpdGlvblRvKCJhYnNvbHV0ZSIpO2lmKCF0aGlzLmxhc3RQ b3NpdGlvbkFicyl7dGhpcy5sYXN0UG9zaXRpb25BYnM9dGhpcy5wb3NpdGlvbkFi c31pZih0aGlzLm9wdGlvbnMuc2Nyb2xsKXt2YXIgZz10aGlzLm9wdGlvbnMsYj1m YWxzZTtpZih0aGlzLnNjcm9sbFBhcmVudFswXSE9ZG9jdW1lbnQmJnRoaXMuc2Ny b2xsUGFyZW50WzBdLnRhZ05hbWUhPSJIVE1MIil7aWYoKHRoaXMub3ZlcmZsb3dP ZmZzZXQudG9wK3RoaXMuc2Nyb2xsUGFyZW50WzBdLm9mZnNldEhlaWdodCktZi5w YWdlWTxnLnNjcm9sbFNlbnNpdGl2aXR5KXt0aGlzLnNjcm9sbFBhcmVudFswXS5z Y3JvbGxUb3A9Yj10aGlzLnNjcm9sbFBhcmVudFswXS5zY3JvbGxUb3ArZy5zY3Jv bGxTcGVlZH1lbHNle2lmKGYucGFnZVktdGhpcy5vdmVyZmxvd09mZnNldC50b3A8 Zy5zY3JvbGxTZW5zaXRpdml0eSl7dGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xs VG9wPWI9dGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsVG9wLWcuc2Nyb2xsU3Bl ZWR9fWlmKCh0aGlzLm92ZXJmbG93T2Zmc2V0LmxlZnQrdGhpcy5zY3JvbGxQYXJl bnRbMF0ub2Zmc2V0V2lkdGgpLWYucGFnZVg8Zy5zY3JvbGxTZW5zaXRpdml0eSl7 dGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsTGVmdD1iPXRoaXMuc2Nyb2xsUGFy ZW50WzBdLnNjcm9sbExlZnQrZy5zY3JvbGxTcGVlZH1lbHNle2lmKGYucGFnZVgt dGhpcy5vdmVyZmxvd09mZnNldC5sZWZ0PGcuc2Nyb2xsU2Vuc2l0aXZpdHkpe3Ro aXMuc2Nyb2xsUGFyZW50WzBdLnNjcm9sbExlZnQ9Yj10aGlzLnNjcm9sbFBhcmVu dFswXS5zY3JvbGxMZWZ0LWcuc2Nyb2xsU3BlZWR9fX1lbHNle2lmKGYucGFnZVkt YShkb2N1bWVudCkuc2Nyb2xsVG9wKCk8Zy5zY3JvbGxTZW5zaXRpdml0eSl7Yj1h KGRvY3VtZW50KS5zY3JvbGxUb3AoYShkb2N1bWVudCkuc2Nyb2xsVG9wKCktZy5z Y3JvbGxTcGVlZCl9ZWxzZXtpZihhKHdpbmRvdykuaGVpZ2h0KCktKGYucGFnZVkt YShkb2N1bWVudCkuc2Nyb2xsVG9wKCkpPGcuc2Nyb2xsU2Vuc2l0aXZpdHkpe2I9 YShkb2N1bWVudCkuc2Nyb2xsVG9wKGEoZG9jdW1lbnQpLnNjcm9sbFRvcCgpK2cu c2Nyb2xsU3BlZWQpfX1pZihmLnBhZ2VYLWEoZG9jdW1lbnQpLnNjcm9sbExlZnQo KTxnLnNjcm9sbFNlbnNpdGl2aXR5KXtiPWEoZG9jdW1lbnQpLnNjcm9sbExlZnQo YShkb2N1bWVudCkuc2Nyb2xsTGVmdCgpLWcuc2Nyb2xsU3BlZWQpfWVsc2V7aWYo YSh3aW5kb3cpLndpZHRoKCktKGYucGFnZVgtYShkb2N1bWVudCkuc2Nyb2xsTGVm dCgpKTxnLnNjcm9sbFNlbnNpdGl2aXR5KXtiPWEoZG9jdW1lbnQpLnNjcm9sbExl ZnQoYShkb2N1bWVudCkuc2Nyb2xsTGVmdCgpK2cuc2Nyb2xsU3BlZWQpfX19aWYo YiE9PWZhbHNlJiZhLnVpLmRkbWFuYWdlciYmIWcuZHJvcEJlaGF2aW91cil7YS51 aS5kZG1hbmFnZXIucHJlcGFyZU9mZnNldHModGhpcyxmKX19dGhpcy5wb3NpdGlv bkFicz10aGlzLl9jb252ZXJ0UG9zaXRpb25UbygiYWJzb2x1dGUiKTtpZighdGhp cy5vcHRpb25zLmF4aXN8fHRoaXMub3B0aW9ucy5heGlzIT0ieSIpe3RoaXMuaGVs cGVyWzBdLnN0eWxlLmxlZnQ9dGhpcy5wb3NpdGlvbi5sZWZ0KyJweCJ9aWYoIXRo aXMub3B0aW9ucy5heGlzfHx0aGlzLm9wdGlvbnMuYXhpcyE9IngiKXt0aGlzLmhl bHBlclswXS5zdHlsZS50b3A9dGhpcy5wb3NpdGlvbi50b3ArInB4In1mb3IodmFy IGQ9dGhpcy5pdGVtcy5sZW5ndGgtMTtkPj0wO2QtLSl7dmFyIGU9dGhpcy5pdGVt c1tkXSxjPWUuaXRlbVswXSxoPXRoaXMuX2ludGVyc2VjdHNXaXRoUG9pbnRlcihl KTtpZighaCl7Y29udGludWV9aWYoYyE9dGhpcy5jdXJyZW50SXRlbVswXSYmdGhp cy5wbGFjZWhvbGRlcltoPT0xPyJuZXh0IjoicHJldiJdKClbMF0hPWMmJiFhLnVp LmNvbnRhaW5zKHRoaXMucGxhY2Vob2xkZXJbMF0sYykmJih0aGlzLm9wdGlvbnMu dHlwZT09InNlbWktZHluYW1pYyI/IWEudWkuY29udGFpbnModGhpcy5lbGVtZW50 WzBdLGMpOnRydWUpKXt0aGlzLmRpcmVjdGlvbj1oPT0xPyJkb3duIjoidXAiO2lm KHRoaXMub3B0aW9ucy50b2xlcmFuY2U9PSJwb2ludGVyInx8dGhpcy5faW50ZXJz ZWN0c1dpdGhTaWRlcyhlKSl7dGhpcy5fcmVhcnJhbmdlKGYsZSl9ZWxzZXticmVh a310aGlzLl90cmlnZ2VyKCJjaGFuZ2UiLGYsdGhpcy5fdWlIYXNoKCkpO2JyZWFr fX10aGlzLl9jb250YWN0Q29udGFpbmVycyhmKTtpZihhLnVpLmRkbWFuYWdlcil7 YS51aS5kZG1hbmFnZXIuZHJhZyh0aGlzLGYpfXRoaXMuX3RyaWdnZXIoInNvcnQi LGYsdGhpcy5fdWlIYXNoKCkpO3RoaXMubGFzdFBvc2l0aW9uQWJzPXRoaXMucG9z aXRpb25BYnM7cmV0dXJuIGZhbHNlfSxfbW91c2VTdG9wOmZ1bmN0aW9uKGMsZCl7 VUxTTlFXOjtpZighYyl7cmV0dXJufWlmKGEudWkuZGRtYW5hZ2VyJiYhdGhpcy5v cHRpb25zLmRyb3BCZWhhdmlvdXIpe2EudWkuZGRtYW5hZ2VyLmRyb3AodGhpcyxj KX1pZih0aGlzLm9wdGlvbnMucmV2ZXJ0KXt2YXIgYj10aGlzO3ZhciBlPWIucGxh Y2Vob2xkZXIub2Zmc2V0KCk7Yi5yZXZlcnRpbmc9dHJ1ZTthKHRoaXMuaGVscGVy KS5hbmltYXRlKHtsZWZ0OmUubGVmdC10aGlzLm9mZnNldC5wYXJlbnQubGVmdC1i Lm1hcmdpbnMubGVmdCsodGhpcy5vZmZzZXRQYXJlbnRbMF09PWRvY3VtZW50LmJv ZHk/MDp0aGlzLm9mZnNldFBhcmVudFswXS5zY3JvbGxMZWZ0KSx0b3A6ZS50b3At dGhpcy5vZmZzZXQucGFyZW50LnRvcC1iLm1hcmdpbnMudG9wKyh0aGlzLm9mZnNl dFBhcmVudFswXT09ZG9jdW1lbnQuYm9keT8wOnRoaXMub2Zmc2V0UGFyZW50WzBd LnNjcm9sbFRvcCl9LHBhcnNlSW50KHRoaXMub3B0aW9ucy5yZXZlcnQsMTApfHw1 MDAsZnVuY3Rpb24oKXtVTFNOUVc6O2IuX2NsZWFyKGMpfSl9ZWxzZXt0aGlzLl9j bGVhcihjLGQpfXJldHVybiBmYWxzZX0sY2FuY2VsOmZ1bmN0aW9uKCl7VUxTTlFX Ojt2YXIgYj10aGlzO2lmKHRoaXMuZHJhZ2dpbmcpe3RoaXMuX21vdXNlVXAoKTtp Zih0aGlzLm9wdGlvbnMuaGVscGVyPT0ib3JpZ2luYWwiKXt0aGlzLmN1cnJlbnRJ dGVtLmNzcyh0aGlzLl9zdG9yZWRDU1MpLnJlbW92ZUNsYXNzKCJ1aS1zb3J0YWJs ZS1oZWxwZXIiKX1lbHNle3RoaXMuY3VycmVudEl0ZW0uc2hvdygpfWZvcih2YXIg Yz10aGlzLmNvbnRhaW5lcnMubGVuZ3RoLTE7Yz49MDtjLS0pe3RoaXMuY29udGFp bmVyc1tjXS5fdHJpZ2dlcigiZGVhY3RpdmF0ZSIsbnVsbCxiLl91aUhhc2godGhp cykpO2lmKHRoaXMuY29udGFpbmVyc1tjXS5jb250YWluZXJDYWNoZS5vdmVyKXt0 aGlzLmNvbnRhaW5lcnNbY10uX3RyaWdnZXIoIm91dCIsbnVsbCxiLl91aUhhc2go dGhpcykpO3RoaXMuY29udGFpbmVyc1tjXS5jb250YWluZXJDYWNoZS5vdmVyPTB9 fX1pZih0aGlzLnBsYWNlaG9sZGVyWzBdLnBhcmVudE5vZGUpe3RoaXMucGxhY2Vo b2xkZXJbMF0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLnBsYWNlaG9sZGVy WzBdKX1pZih0aGlzLm9wdGlvbnMuaGVscGVyIT0ib3JpZ2luYWwiJiZ0aGlzLmhl bHBlciYmdGhpcy5oZWxwZXJbMF0ucGFyZW50Tm9kZSl7dGhpcy5oZWxwZXIucmVt b3ZlKCl9YS5leHRlbmQodGhpcyx7aGVscGVyOm51bGwsZHJhZ2dpbmc6ZmFsc2Us cmV2ZXJ0aW5nOmZhbHNlLF9ub0ZpbmFsU29ydDpudWxsfSk7aWYodGhpcy5kb21Q b3NpdGlvbi5wcmV2KXthKHRoaXMuZG9tUG9zaXRpb24ucHJldikuYWZ0ZXIodGhp cy5jdXJyZW50SXRlbSl9ZWxzZXthKHRoaXMuZG9tUG9zaXRpb24ucGFyZW50KS5w cmVwZW5kKHRoaXMuY3VycmVudEl0ZW0pfXJldHVybiB0cnVlfSxzZXJpYWxpemU6 ZnVuY3Rpb24oZCl7VUxTTlFXOjt2YXIgYj10aGlzLl9nZXRJdGVtc0FzalF1ZXJ5 KGQmJmQuY29ubmVjdGVkKTt2YXIgYz1bXTtkPWR8fHt9O2EoYikuZWFjaChmdW5j dGlvbigpe1VMU05RVzo7dmFyIGU9KGEoZC5pdGVtfHx0aGlzKS5hdHRyKGQuYXR0 cmlidXRlfHwiaWQiKXx8IiIpLm1hdGNoKGQuZXhwcmVzc2lvbnx8KC8oLispWy09 X10oLispLykpO2lmKGUpe2MucHVzaCgoZC5rZXl8fGVbMV0rIltdIikrIj0iKyhk LmtleSYmZC5leHByZXNzaW9uP2VbMV06ZVsyXSkpfX0pO3JldHVybiBjLmpvaW4o IiYiKX0sdG9BcnJheTpmdW5jdGlvbihkKXtVTFNOUVc6O3ZhciBiPXRoaXMuX2dl dEl0ZW1zQXNqUXVlcnkoZCYmZC5jb25uZWN0ZWQpO3ZhciBjPVtdO2Q9ZHx8e307 Yi5lYWNoKGZ1bmN0aW9uKCl7VUxTTlFXOjtjLnB1c2goYShkLml0ZW18fHRoaXMp LmF0dHIoZC5hdHRyaWJ1dGV8fCJpZCIpfHwiIil9KTtyZXR1cm4gY30sX2ludGVy c2VjdHNXaXRoOmZ1bmN0aW9uKG0pe1VMU05RVzo7dmFyIGU9dGhpcy5wb3NpdGlv bkFicy5sZWZ0LGQ9ZSt0aGlzLmhlbHBlclByb3BvcnRpb25zLndpZHRoLGs9dGhp cy5wb3NpdGlvbkFicy50b3Asaj1rK3RoaXMuaGVscGVyUHJvcG9ydGlvbnMuaGVp Z2h0O3ZhciBmPW0ubGVmdCxjPWYrbS53aWR0aCxuPW0udG9wLGk9bittLmhlaWdo dDt2YXIgbz10aGlzLm9mZnNldC5jbGljay50b3AsaD10aGlzLm9mZnNldC5jbGlj ay5sZWZ0O3ZhciBnPShrK28pPm4mJihrK28pPGkmJihlK2gpPmYmJihlK2gpPGM7 aWYodGhpcy5vcHRpb25zLnRvbGVyYW5jZT09InBvaW50ZXIifHx0aGlzLm9wdGlv bnMuZm9yY2VQb2ludGVyRm9yQ29udGFpbmVyc3x8KHRoaXMub3B0aW9ucy50b2xl cmFuY2UhPSJwb2ludGVyIiYmdGhpcy5oZWxwZXJQcm9wb3J0aW9uc1t0aGlzLmZs b2F0aW5nPyJ3aWR0aCI6ImhlaWdodCJdPm1bdGhpcy5mbG9hdGluZz8id2lkdGgi OiJoZWlnaHQiXSkpe3JldHVybiBnfWVsc2V7cmV0dXJuKGY8ZSsodGhpcy5oZWxw ZXJQcm9wb3J0aW9ucy53aWR0aC8yKSYmZC0odGhpcy5oZWxwZXJQcm9wb3J0aW9u cy53aWR0aC8yKTxjJiZuPGsrKHRoaXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0 LzIpJiZqLSh0aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC8yKTxpKX19LF9p bnRlcnNlY3RzV2l0aFBvaW50ZXI6ZnVuY3Rpb24oZCl7VUxTTlFXOjt2YXIgZT1h LnVpLmlzT3ZlckF4aXModGhpcy5wb3NpdGlvbkFicy50b3ArdGhpcy5vZmZzZXQu Y2xpY2sudG9wLGQudG9wLGQuaGVpZ2h0KSxjPWEudWkuaXNPdmVyQXhpcyh0aGlz LnBvc2l0aW9uQWJzLmxlZnQrdGhpcy5vZmZzZXQuY2xpY2subGVmdCxkLmxlZnQs ZC53aWR0aCksZz1lJiZjLGI9dGhpcy5fZ2V0RHJhZ1ZlcnRpY2FsRGlyZWN0aW9u KCksZj10aGlzLl9nZXREcmFnSG9yaXpvbnRhbERpcmVjdGlvbigpO2lmKCFnKXty ZXR1cm4gZmFsc2V9cmV0dXJuIHRoaXMuZmxvYXRpbmc/KCgoZiYmZj09InJpZ2h0 Iil8fGI9PSJkb3duIik/MjoxKTooYiYmKGI9PSJkb3duIj8yOjEpKX0sX2ludGVy c2VjdHNXaXRoU2lkZXM6ZnVuY3Rpb24oZSl7VUxTTlFXOjt2YXIgYz1hLnVpLmlz T3ZlckF4aXModGhpcy5wb3NpdGlvbkFicy50b3ArdGhpcy5vZmZzZXQuY2xpY2su dG9wLGUudG9wKyhlLmhlaWdodC8yKSxlLmhlaWdodCksZD1hLnVpLmlzT3ZlckF4 aXModGhpcy5wb3NpdGlvbkFicy5sZWZ0K3RoaXMub2Zmc2V0LmNsaWNrLmxlZnQs ZS5sZWZ0KyhlLndpZHRoLzIpLGUud2lkdGgpLGI9dGhpcy5fZ2V0RHJhZ1ZlcnRp Y2FsRGlyZWN0aW9uKCksZj10aGlzLl9nZXREcmFnSG9yaXpvbnRhbERpcmVjdGlv bigpO2lmKHRoaXMuZmxvYXRpbmcmJmYpe3JldHVybigoZj09InJpZ2h0IiYmZCl8 fChmPT0ibGVmdCImJiFkKSl9ZWxzZXtyZXR1cm4gYiYmKChiPT0iZG93biImJmMp fHwoYj09InVwIiYmIWMpKX19LF9nZXREcmFnVmVydGljYWxEaXJlY3Rpb246ZnVu Y3Rpb24oKXtVTFNOUVc6O3ZhciBiPXRoaXMucG9zaXRpb25BYnMudG9wLXRoaXMu bGFzdFBvc2l0aW9uQWJzLnRvcDtyZXR1cm4gYiE9MCYmKGI+MD8iZG93biI6InVw Iil9LF9nZXREcmFnSG9yaXpvbnRhbERpcmVjdGlvbjpmdW5jdGlvbigpe1VMU05R Vzo7dmFyIGI9dGhpcy5wb3NpdGlvbkFicy5sZWZ0LXRoaXMubGFzdFBvc2l0aW9u QWJzLmxlZnQ7cmV0dXJuIGIhPTAmJihiPjA/InJpZ2h0IjoibGVmdCIpfSxyZWZy ZXNoOmZ1bmN0aW9uKGIpe1VMU05RVzo7dGhpcy5fcmVmcmVzaEl0ZW1zKGIpO3Ro aXMucmVmcmVzaFBvc2l0aW9ucygpfSxfY29ubmVjdFdpdGg6ZnVuY3Rpb24oKXtV TFNOUVc6O3ZhciBiPXRoaXMub3B0aW9ucztyZXR1cm4gYi5jb25uZWN0V2l0aC5j b25zdHJ1Y3Rvcj09U3RyaW5nP1tiLmNvbm5lY3RXaXRoXTpiLmNvbm5lY3RXaXRo fSxfZ2V0SXRlbXNBc2pRdWVyeTpmdW5jdGlvbihiKXtVTFNOUVc6O3ZhciBsPXRo aXM7dmFyIGc9W107dmFyIGU9W107dmFyIGg9dGhpcy5fY29ubmVjdFdpdGgoKTtp ZihoJiZiKXtmb3IodmFyIGQ9aC5sZW5ndGgtMTtkPj0wO2QtLSl7dmFyIGs9YSho W2RdKTtmb3IodmFyIGM9ay5sZW5ndGgtMTtjPj0wO2MtLSl7dmFyIGY9YS5kYXRh KGtbY10sInNvcnRhYmxlIik7aWYoZiYmZiE9dGhpcyYmIWYub3B0aW9ucy5kaXNh YmxlZCl7ZS5wdXNoKFthLmlzRnVuY3Rpb24oZi5vcHRpb25zLml0ZW1zKT9mLm9w dGlvbnMuaXRlbXMuY2FsbChmLmVsZW1lbnQpOmEoZi5vcHRpb25zLml0ZW1zLGYu ZWxlbWVudCkubm90KCIudWktc29ydGFibGUtaGVscGVyIiksZl0pfX19fWUucHVz aChbYS5pc0Z1bmN0aW9uKHRoaXMub3B0aW9ucy5pdGVtcyk/dGhpcy5vcHRpb25z Lml0ZW1zLmNhbGwodGhpcy5lbGVtZW50LG51bGwse29wdGlvbnM6dGhpcy5vcHRp b25zLGl0ZW06dGhpcy5jdXJyZW50SXRlbX0pOmEodGhpcy5vcHRpb25zLml0ZW1z LHRoaXMuZWxlbWVudCkubm90KCIudWktc29ydGFibGUtaGVscGVyIiksdGhpc10p O2Zvcih2YXIgZD1lLmxlbmd0aC0xO2Q+PTA7ZC0tKXtlW2RdWzBdLmVhY2goZnVu Y3Rpb24oKXtVTFNOUVc6O2cucHVzaCh0aGlzKX0pfXJldHVybiBhKGcpfSxfcmVt b3ZlQ3VycmVudHNGcm9tSXRlbXM6ZnVuY3Rpb24oKXtVTFNOUVc6O3ZhciBkPXRo aXMuY3VycmVudEl0ZW0uZmluZCgiOmRhdGEoc29ydGFibGUtaXRlbSkiKTtmb3Io dmFyIGM9MDtjPHRoaXMuaXRlbXMubGVuZ3RoO2MrKyl7Zm9yKHZhciBiPTA7Yjxk Lmxlbmd0aDtiKyspe2lmKGRbYl09PXRoaXMuaXRlbXNbY10uaXRlbVswXSl7dGhp cy5pdGVtcy5zcGxpY2UoYywxKX19fX0sX3JlZnJlc2hJdGVtczpmdW5jdGlvbihi KXtVTFNOUVc6O3RoaXMuaXRlbXM9W107dGhpcy5jb250YWluZXJzPVt0aGlzXTt2 YXIgaD10aGlzLml0ZW1zO3ZhciBwPXRoaXM7dmFyIGY9W1thLmlzRnVuY3Rpb24o dGhpcy5vcHRpb25zLml0ZW1zKT90aGlzLm9wdGlvbnMuaXRlbXMuY2FsbCh0aGlz LmVsZW1lbnRbMF0sYix7aXRlbTp0aGlzLmN1cnJlbnRJdGVtfSk6YSh0aGlzLm9w dGlvbnMuaXRlbXMsdGhpcy5lbGVtZW50KSx0aGlzXV07dmFyIGw9dGhpcy5fY29u bmVjdFdpdGgoKTtpZihsKXtmb3IodmFyIGU9bC5sZW5ndGgtMTtlPj0wO2UtLSl7 dmFyIG09YShsW2VdKTtmb3IodmFyIGQ9bS5sZW5ndGgtMTtkPj0wO2QtLSl7dmFy IGc9YS5kYXRhKG1bZF0sInNvcnRhYmxlIik7aWYoZyYmZyE9dGhpcyYmIWcub3B0 aW9ucy5kaXNhYmxlZCl7Zi5wdXNoKFthLmlzRnVuY3Rpb24oZy5vcHRpb25zLml0 ZW1zKT9nLm9wdGlvbnMuaXRlbXMuY2FsbChnLmVsZW1lbnRbMF0sYix7aXRlbTp0 aGlzLmN1cnJlbnRJdGVtfSk6YShnLm9wdGlvbnMuaXRlbXMsZy5lbGVtZW50KSxn XSk7dGhpcy5jb250YWluZXJzLnB1c2goZyl9fX19Zm9yKHZhciBlPWYubGVuZ3Ro LTE7ZT49MDtlLS0pe3ZhciBrPWZbZV1bMV07dmFyIGM9ZltlXVswXTtmb3IodmFy IGQ9MCxuPWMubGVuZ3RoO2Q8bjtkKyspe3ZhciBvPWEoY1tkXSk7by5kYXRhKCJz b3J0YWJsZS1pdGVtIixrKTtoLnB1c2goe2l0ZW06byxpbnN0YW5jZTprLHdpZHRo OjAsaGVpZ2h0OjAsbGVmdDowLHRvcDowfSl9fX0scmVmcmVzaFBvc2l0aW9uczpm dW5jdGlvbihiKXtVTFNOUVc6O2lmKHRoaXMub2Zmc2V0UGFyZW50JiZ0aGlzLmhl bHBlcil7dGhpcy5vZmZzZXQucGFyZW50PXRoaXMuX2dldFBhcmVudE9mZnNldCgp fWZvcih2YXIgZD10aGlzLml0ZW1zLmxlbmd0aC0xO2Q+PTA7ZC0tKXt2YXIgZT10 aGlzLml0ZW1zW2RdO2lmKGUuaW5zdGFuY2UhPXRoaXMuY3VycmVudENvbnRhaW5l ciYmdGhpcy5jdXJyZW50Q29udGFpbmVyJiZlLml0ZW1bMF0hPXRoaXMuY3VycmVu dEl0ZW1bMF0pe2NvbnRpbnVlfXZhciBjPXRoaXMub3B0aW9ucy50b2xlcmFuY2VF bGVtZW50P2EodGhpcy5vcHRpb25zLnRvbGVyYW5jZUVsZW1lbnQsZS5pdGVtKTpl Lml0ZW07aWYoIWIpe2Uud2lkdGg9Yy5vdXRlcldpZHRoKCk7ZS5oZWlnaHQ9Yy5v dXRlckhlaWdodCgpfXZhciBmPWMub2Zmc2V0KCk7ZS5sZWZ0PWYubGVmdDtlLnRv cD1mLnRvcH1pZih0aGlzLm9wdGlvbnMuY3VzdG9tJiZ0aGlzLm9wdGlvbnMuY3Vz dG9tLnJlZnJlc2hDb250YWluZXJzKXt0aGlzLm9wdGlvbnMuY3VzdG9tLnJlZnJl c2hDb250YWluZXJzLmNhbGwodGhpcyl9ZWxzZXtmb3IodmFyIGQ9dGhpcy5jb250 YWluZXJzLmxlbmd0aC0xO2Q+PTA7ZC0tKXt2YXIgZj10aGlzLmNvbnRhaW5lcnNb ZF0uZWxlbWVudC5vZmZzZXQoKTt0aGlzLmNvbnRhaW5lcnNbZF0uY29udGFpbmVy Q2FjaGUubGVmdD1mLmxlZnQ7dGhpcy5jb250YWluZXJzW2RdLmNvbnRhaW5lckNh Y2hlLnRvcD1mLnRvcDt0aGlzLmNvbnRhaW5lcnNbZF0uY29udGFpbmVyQ2FjaGUu d2lkdGg9dGhpcy5jb250YWluZXJzW2RdLmVsZW1lbnQub3V0ZXJXaWR0aCgpO3Ro aXMuY29udGFpbmVyc1tkXS5jb250YWluZXJDYWNoZS5oZWlnaHQ9dGhpcy5jb250 YWluZXJzW2RdLmVsZW1lbnQub3V0ZXJIZWlnaHQoKX19fSxfY3JlYXRlUGxhY2Vo b2xkZXI6ZnVuY3Rpb24oZCl7VUxTTlFXOjt2YXIgYj1kfHx0aGlzLGU9Yi5vcHRp b25zO2lmKCFlLnBsYWNlaG9sZGVyfHxlLnBsYWNlaG9sZGVyLmNvbnN0cnVjdG9y PT1TdHJpbmcpe3ZhciBjPWUucGxhY2Vob2xkZXI7ZS5wbGFjZWhvbGRlcj17ZWxl bWVudDpmdW5jdGlvbigpe1VMU05RVzo7dmFyIGY9YShkb2N1bWVudC5jcmVhdGVF bGVtZW50KGIuY3VycmVudEl0ZW1bMF0ubm9kZU5hbWUpKS5hZGRDbGFzcyhjfHxi LmN1cnJlbnRJdGVtWzBdLmNsYXNzTmFtZSsiIHVpLXNvcnRhYmxlLXBsYWNlaG9s ZGVyIikucmVtb3ZlQ2xhc3MoInVpLXNvcnRhYmxlLWhlbHBlciIpWzBdO2lmKCFj KXtmLnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiJ9cmV0dXJuIGZ9LHVwZGF0ZTpm dW5jdGlvbihmLGcpe1VMU05RVzo7aWYoYyYmIWUuZm9yY2VQbGFjZWhvbGRlclNp emUpe3JldHVybn1pZighZy5oZWlnaHQoKSl7Zy5oZWlnaHQoYi5jdXJyZW50SXRl bS5pbm5lckhlaWdodCgpLXBhcnNlSW50KGIuY3VycmVudEl0ZW0uY3NzKCJwYWRk aW5nVG9wIil8fDAsMTApLXBhcnNlSW50KGIuY3VycmVudEl0ZW0uY3NzKCJwYWRk aW5nQm90dG9tIil8fDAsMTApKX1pZighZy53aWR0aCgpKXtnLndpZHRoKGIuY3Vy cmVudEl0ZW0uaW5uZXJXaWR0aCgpLXBhcnNlSW50KGIuY3VycmVudEl0ZW0uY3Nz KCJwYWRkaW5nTGVmdCIpfHwwLDEwKS1wYXJzZUludChiLmN1cnJlbnRJdGVtLmNz cygicGFkZGluZ1JpZ2h0Iil8fDAsMTApKX19fX1iLnBsYWNlaG9sZGVyPWEoZS5w bGFjZWhvbGRlci5lbGVtZW50LmNhbGwoYi5lbGVtZW50LGIuY3VycmVudEl0ZW0p KTtiLmN1cnJlbnRJdGVtLmFmdGVyKGIucGxhY2Vob2xkZXIpO2UucGxhY2Vob2xk ZXIudXBkYXRlKGIsYi5wbGFjZWhvbGRlcil9LF9jb250YWN0Q29udGFpbmVyczpm dW5jdGlvbihkKXtVTFNOUVc6O2Zvcih2YXIgYz10aGlzLmNvbnRhaW5lcnMubGVu Z3RoLTE7Yz49MDtjLS0pe2lmKHRoaXMuX2ludGVyc2VjdHNXaXRoKHRoaXMuY29u dGFpbmVyc1tjXS5jb250YWluZXJDYWNoZSkpe2lmKCF0aGlzLmNvbnRhaW5lcnNb Y10uY29udGFpbmVyQ2FjaGUub3Zlcil7aWYodGhpcy5jdXJyZW50Q29udGFpbmVy IT10aGlzLmNvbnRhaW5lcnNbY10pe3ZhciBoPTEwMDAwO3ZhciBnPW51bGw7dmFy IGU9dGhpcy5wb3NpdGlvbkFic1t0aGlzLmNvbnRhaW5lcnNbY10uZmxvYXRpbmc/ ImxlZnQiOiJ0b3AiXTtmb3IodmFyIGI9dGhpcy5pdGVtcy5sZW5ndGgtMTtiPj0w O2ItLSl7aWYoIWEudWkuY29udGFpbnModGhpcy5jb250YWluZXJzW2NdLmVsZW1l bnRbMF0sdGhpcy5pdGVtc1tiXS5pdGVtWzBdKSl7Y29udGludWV9dmFyIGY9dGhp cy5pdGVtc1tiXVt0aGlzLmNvbnRhaW5lcnNbY10uZmxvYXRpbmc/ImxlZnQiOiJ0 b3AiXTtpZihNYXRoLmFicyhmLWUpPGgpe2g9TWF0aC5hYnMoZi1lKTtnPXRoaXMu aXRlbXNbYl19fWlmKCFnJiYhdGhpcy5vcHRpb25zLmRyb3BPbkVtcHR5KXtjb250 aW51ZX10aGlzLmN1cnJlbnRDb250YWluZXI9dGhpcy5jb250YWluZXJzW2NdO2c/ dGhpcy5fcmVhcnJhbmdlKGQsZyxudWxsLHRydWUpOnRoaXMuX3JlYXJyYW5nZShk LG51bGwsdGhpcy5jb250YWluZXJzW2NdLmVsZW1lbnQsdHJ1ZSk7dGhpcy5fdHJp Z2dlcigiY2hhbmdlIixkLHRoaXMuX3VpSGFzaCgpKTt0aGlzLmNvbnRhaW5lcnNb Y10uX3RyaWdnZXIoImNoYW5nZSIsZCx0aGlzLl91aUhhc2godGhpcykpO3RoaXMu b3B0aW9ucy5wbGFjZWhvbGRlci51cGRhdGUodGhpcy5jdXJyZW50Q29udGFpbmVy LHRoaXMucGxhY2Vob2xkZXIpfXRoaXMuY29udGFpbmVyc1tjXS5fdHJpZ2dlcigi b3ZlciIsZCx0aGlzLl91aUhhc2godGhpcykpO3RoaXMuY29udGFpbmVyc1tjXS5j b250YWluZXJDYWNoZS5vdmVyPTF9fWVsc2V7aWYodGhpcy5jb250YWluZXJzW2Nd LmNvbnRhaW5lckNhY2hlLm92ZXIpe3RoaXMuY29udGFpbmVyc1tjXS5fdHJpZ2dl cigib3V0IixkLHRoaXMuX3VpSGFzaCh0aGlzKSk7dGhpcy5jb250YWluZXJzW2Nd LmNvbnRhaW5lckNhY2hlLm92ZXI9MH19fX0sX2NyZWF0ZUhlbHBlcjpmdW5jdGlv bihjKXtVTFNOUVc6O3ZhciBkPXRoaXMub3B0aW9uczt2YXIgYj1hLmlzRnVuY3Rp b24oZC5oZWxwZXIpP2EoZC5oZWxwZXIuYXBwbHkodGhpcy5lbGVtZW50WzBdLFtj LHRoaXMuY3VycmVudEl0ZW1dKSk6KGQuaGVscGVyPT0iY2xvbmUiP3RoaXMuY3Vy cmVudEl0ZW0uY2xvbmUoKTp0aGlzLmN1cnJlbnRJdGVtKTtpZighYi5wYXJlbnRz KCJib2R5IikubGVuZ3RoKXthKGQuYXBwZW5kVG8hPSJwYXJlbnQiP2QuYXBwZW5k VG86dGhpcy5jdXJyZW50SXRlbVswXS5wYXJlbnROb2RlKVswXS5hcHBlbmRDaGls ZChiWzBdKX1pZihiWzBdPT10aGlzLmN1cnJlbnRJdGVtWzBdKXt0aGlzLl9zdG9y ZWRDU1M9e3dpZHRoOnRoaXMuY3VycmVudEl0ZW1bMF0uc3R5bGUud2lkdGgsaGVp Z2h0OnRoaXMuY3VycmVudEl0ZW1bMF0uc3R5bGUuaGVpZ2h0LHBvc2l0aW9uOnRo aXMuY3VycmVudEl0ZW0uY3NzKCJwb3NpdGlvbiIpLHRvcDp0aGlzLmN1cnJlbnRJ dGVtLmNzcygidG9wIiksbGVmdDp0aGlzLmN1cnJlbnRJdGVtLmNzcygibGVmdCIp fX1pZihiWzBdLnN0eWxlLndpZHRoPT0iInx8ZC5mb3JjZUhlbHBlclNpemUpe2Iu d2lkdGgodGhpcy5jdXJyZW50SXRlbS53aWR0aCgpKX1pZihiWzBdLnN0eWxlLmhl aWdodD09IiJ8fGQuZm9yY2VIZWxwZXJTaXplKXtiLmhlaWdodCh0aGlzLmN1cnJl bnRJdGVtLmhlaWdodCgpKX1yZXR1cm4gYn0sX2FkanVzdE9mZnNldEZyb21IZWxw ZXI6ZnVuY3Rpb24oYil7VUxTTlFXOjtpZihiLmxlZnQhPXVuZGVmaW5lZCl7dGhp cy5vZmZzZXQuY2xpY2subGVmdD1iLmxlZnQrdGhpcy5tYXJnaW5zLmxlZnR9aWYo Yi5yaWdodCE9dW5kZWZpbmVkKXt0aGlzLm9mZnNldC5jbGljay5sZWZ0PXRoaXMu aGVscGVyUHJvcG9ydGlvbnMud2lkdGgtYi5yaWdodCt0aGlzLm1hcmdpbnMubGVm dH1pZihiLnRvcCE9dW5kZWZpbmVkKXt0aGlzLm9mZnNldC5jbGljay50b3A9Yi50 b3ArdGhpcy5tYXJnaW5zLnRvcH1pZihiLmJvdHRvbSE9dW5kZWZpbmVkKXt0aGlz Lm9mZnNldC5jbGljay50b3A9dGhpcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQt Yi5ib3R0b20rdGhpcy5tYXJnaW5zLnRvcH19LF9nZXRQYXJlbnRPZmZzZXQ6ZnVu Y3Rpb24oKXtVTFNOUVc6O3RoaXMub2Zmc2V0UGFyZW50PXRoaXMuaGVscGVyLm9m ZnNldFBhcmVudCgpO3ZhciBiPXRoaXMub2Zmc2V0UGFyZW50Lm9mZnNldCgpO2lm KHRoaXMuY3NzUG9zaXRpb249PSJhYnNvbHV0ZSImJnRoaXMuc2Nyb2xsUGFyZW50 WzBdIT1kb2N1bWVudCYmYS51aS5jb250YWlucyh0aGlzLnNjcm9sbFBhcmVudFsw XSx0aGlzLm9mZnNldFBhcmVudFswXSkpe2IubGVmdCs9dGhpcy5zY3JvbGxQYXJl bnQuc2Nyb2xsTGVmdCgpO2IudG9wKz10aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxU b3AoKX1pZigodGhpcy5vZmZzZXRQYXJlbnRbMF09PWRvY3VtZW50LmJvZHkpfHwo dGhpcy5vZmZzZXRQYXJlbnRbMF0udGFnTmFtZSYmdGhpcy5vZmZzZXRQYXJlbnRb MF0udGFnTmFtZS50b0xvd2VyQ2FzZSgpPT0iaHRtbCImJmEuYnJvd3Nlci5tc2ll KSl7Yj17dG9wOjAsbGVmdDowfX1yZXR1cm57dG9wOmIudG9wKyhwYXJzZUludCh0 aGlzLm9mZnNldFBhcmVudC5jc3MoImJvcmRlclRvcFdpZHRoIiksMTApfHwwKSxs ZWZ0OmIubGVmdCsocGFyc2VJbnQodGhpcy5vZmZzZXRQYXJlbnQuY3NzKCJib3Jk ZXJMZWZ0V2lkdGgiKSwxMCl8fDApfX0sX2dldFJlbGF0aXZlT2Zmc2V0OmZ1bmN0 aW9uKCl7VUxTTlFXOjtpZih0aGlzLmNzc1Bvc2l0aW9uPT0icmVsYXRpdmUiKXt2 YXIgYj10aGlzLmN1cnJlbnRJdGVtLnBvc2l0aW9uKCk7cmV0dXJue3RvcDpiLnRv cC0ocGFyc2VJbnQodGhpcy5oZWxwZXIuY3NzKCJ0b3AiKSwxMCl8fDApK3RoaXMu c2Nyb2xsUGFyZW50LnNjcm9sbFRvcCgpLGxlZnQ6Yi5sZWZ0LShwYXJzZUludCh0 aGlzLmhlbHBlci5jc3MoImxlZnQiKSwxMCl8fDApK3RoaXMuc2Nyb2xsUGFyZW50 LnNjcm9sbExlZnQoKX19ZWxzZXtyZXR1cm57dG9wOjAsbGVmdDowfX19LF9jYWNo ZU1hcmdpbnM6ZnVuY3Rpb24oKXtVTFNOUVc6O3RoaXMubWFyZ2lucz17bGVmdDoo cGFyc2VJbnQodGhpcy5jdXJyZW50SXRlbS5jc3MoIm1hcmdpbkxlZnQiKSwxMCl8 fDApLHRvcDoocGFyc2VJbnQodGhpcy5jdXJyZW50SXRlbS5jc3MoIm1hcmdpblRv cCIpLDEwKXx8MCl9fSxfY2FjaGVIZWxwZXJQcm9wb3J0aW9uczpmdW5jdGlvbigp e1VMU05RVzo7dGhpcy5oZWxwZXJQcm9wb3J0aW9ucz17d2lkdGg6dGhpcy5oZWxw ZXIub3V0ZXJXaWR0aCgpLGhlaWdodDp0aGlzLmhlbHBlci5vdXRlckhlaWdodCgp fX0sX3NldENvbnRhaW5tZW50OmZ1bmN0aW9uKCl7VUxTTlFXOjt2YXIgZT10aGlz Lm9wdGlvbnM7aWYoZS5jb250YWlubWVudD09InBhcmVudCIpe2UuY29udGFpbm1l bnQ9dGhpcy5oZWxwZXJbMF0ucGFyZW50Tm9kZX1pZihlLmNvbnRhaW5tZW50PT0i ZG9jdW1lbnQifHxlLmNvbnRhaW5tZW50PT0id2luZG93Iil7dGhpcy5jb250YWlu bWVudD1bMC10aGlzLm9mZnNldC5yZWxhdGl2ZS5sZWZ0LXRoaXMub2Zmc2V0LnBh cmVudC5sZWZ0LDAtdGhpcy5vZmZzZXQucmVsYXRpdmUudG9wLXRoaXMub2Zmc2V0 LnBhcmVudC50b3AsYShlLmNvbnRhaW5tZW50PT0iZG9jdW1lbnQiP2RvY3VtZW50 OndpbmRvdykud2lkdGgoKS10aGlzLmhlbHBlclByb3BvcnRpb25zLndpZHRoLXRo aXMubWFyZ2lucy5sZWZ0LChhKGUuY29udGFpbm1lbnQ9PSJkb2N1bWVudCI/ZG9j dW1lbnQ6d2luZG93KS5oZWlnaHQoKXx8ZG9jdW1lbnQuYm9keS5wYXJlbnROb2Rl LnNjcm9sbEhlaWdodCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQtdGhp cy5tYXJnaW5zLnRvcF19aWYoISgvXihkb2N1bWVudHx3aW5kb3d8cGFyZW50KSQv KS50ZXN0KGUuY29udGFpbm1lbnQpKXt2YXIgYz1hKGUuY29udGFpbm1lbnQpWzBd O3ZhciBkPWEoZS5jb250YWlubWVudCkub2Zmc2V0KCk7dmFyIGI9KGEoYykuY3Nz KCJvdmVyZmxvdyIpIT0iaGlkZGVuIik7dGhpcy5jb250YWlubWVudD1bZC5sZWZ0 KyhwYXJzZUludChhKGMpLmNzcygiYm9yZGVyTGVmdFdpZHRoIiksMTApfHwwKSso cGFyc2VJbnQoYShjKS5jc3MoInBhZGRpbmdMZWZ0IiksMTApfHwwKS10aGlzLm1h cmdpbnMubGVmdCxkLnRvcCsocGFyc2VJbnQoYShjKS5jc3MoImJvcmRlclRvcFdp ZHRoIiksMTApfHwwKSsocGFyc2VJbnQoYShjKS5jc3MoInBhZGRpbmdUb3AiKSwx MCl8fDApLXRoaXMubWFyZ2lucy50b3AsZC5sZWZ0KyhiP01hdGgubWF4KGMuc2Ny b2xsV2lkdGgsYy5vZmZzZXRXaWR0aCk6Yy5vZmZzZXRXaWR0aCktKHBhcnNlSW50 KGEoYykuY3NzKCJib3JkZXJMZWZ0V2lkdGgiKSwxMCl8fDApLShwYXJzZUludChh KGMpLmNzcygicGFkZGluZ1JpZ2h0IiksMTApfHwwKS10aGlzLmhlbHBlclByb3Bv cnRpb25zLndpZHRoLXRoaXMubWFyZ2lucy5sZWZ0LGQudG9wKyhiP01hdGgubWF4 KGMuc2Nyb2xsSGVpZ2h0LGMub2Zmc2V0SGVpZ2h0KTpjLm9mZnNldEhlaWdodCkt KHBhcnNlSW50KGEoYykuY3NzKCJib3JkZXJUb3BXaWR0aCIpLDEwKXx8MCktKHBh cnNlSW50KGEoYykuY3NzKCJwYWRkaW5nQm90dG9tIiksMTApfHwwKS10aGlzLmhl bHBlclByb3BvcnRpb25zLmhlaWdodC10aGlzLm1hcmdpbnMudG9wXX19LF9jb252 ZXJ0UG9zaXRpb25UbzpmdW5jdGlvbihmLGgpe1VMU05RVzo7aWYoIWgpe2g9dGhp cy5wb3NpdGlvbn12YXIgYz1mPT0iYWJzb2x1dGUiPzE6LTE7dmFyIGU9dGhpcy5v cHRpb25zLGI9dGhpcy5jc3NQb3NpdGlvbj09ImFic29sdXRlIiYmISh0aGlzLnNj cm9sbFBhcmVudFswXSE9ZG9jdW1lbnQmJmEudWkuY29udGFpbnModGhpcy5zY3Jv bGxQYXJlbnRbMF0sdGhpcy5vZmZzZXRQYXJlbnRbMF0pKT90aGlzLm9mZnNldFBh cmVudDp0aGlzLnNjcm9sbFBhcmVudCxnPSgvKGh0bWx8Ym9keSkvaSkudGVzdChi WzBdLnRhZ05hbWUpO3JldHVybnt0b3A6KGgudG9wK3RoaXMub2Zmc2V0LnJlbGF0 aXZlLnRvcCpjK3RoaXMub2Zmc2V0LnBhcmVudC50b3AqYy0oYS5icm93c2VyLnNh ZmFyaSYmdGhpcy5jc3NQb3NpdGlvbj09ImZpeGVkIj8wOih0aGlzLmNzc1Bvc2l0 aW9uPT0iZml4ZWQiPy10aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxUb3AoKTooZz8w OmIuc2Nyb2xsVG9wKCkpKSpjKSksbGVmdDooaC5sZWZ0K3RoaXMub2Zmc2V0LnJl bGF0aXZlLmxlZnQqYyt0aGlzLm9mZnNldC5wYXJlbnQubGVmdCpjLShhLmJyb3dz ZXIuc2FmYXJpJiZ0aGlzLmNzc1Bvc2l0aW9uPT0iZml4ZWQiPzA6KHRoaXMuY3Nz UG9zaXRpb249PSJmaXhlZCI/LXRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbExlZnQo KTpnPzA6Yi5zY3JvbGxMZWZ0KCkpKmMpKX19LF9nZW5lcmF0ZVBvc2l0aW9uOmZ1 bmN0aW9uKGUpe1VMU05RVzo7dmFyIGg9dGhpcy5vcHRpb25zLGI9dGhpcy5jc3NQ b3NpdGlvbj09ImFic29sdXRlIiYmISh0aGlzLnNjcm9sbFBhcmVudFswXSE9ZG9j dW1lbnQmJmEudWkuY29udGFpbnModGhpcy5zY3JvbGxQYXJlbnRbMF0sdGhpcy5v ZmZzZXRQYXJlbnRbMF0pKT90aGlzLm9mZnNldFBhcmVudDp0aGlzLnNjcm9sbFBh cmVudCxpPSgvKGh0bWx8Ym9keSkvaSkudGVzdChiWzBdLnRhZ05hbWUpO2lmKHRo aXMuY3NzUG9zaXRpb249PSJyZWxhdGl2ZSImJiEodGhpcy5zY3JvbGxQYXJlbnRb MF0hPWRvY3VtZW50JiZ0aGlzLnNjcm9sbFBhcmVudFswXSE9dGhpcy5vZmZzZXRQ YXJlbnRbMF0pKXt0aGlzLm9mZnNldC5yZWxhdGl2ZT10aGlzLl9nZXRSZWxhdGl2 ZU9mZnNldCgpfXZhciBkPWUucGFnZVg7dmFyIGM9ZS5wYWdlWTtpZih0aGlzLm9y aWdpbmFsUG9zaXRpb24pe2lmKHRoaXMuY29udGFpbm1lbnQpe2lmKGUucGFnZVgt dGhpcy5vZmZzZXQuY2xpY2subGVmdDx0aGlzLmNvbnRhaW5tZW50WzBdKXtkPXRo aXMuY29udGFpbm1lbnRbMF0rdGhpcy5vZmZzZXQuY2xpY2subGVmdH1pZihlLnBh Z2VZLXRoaXMub2Zmc2V0LmNsaWNrLnRvcDx0aGlzLmNvbnRhaW5tZW50WzFdKXtj PXRoaXMuY29udGFpbm1lbnRbMV0rdGhpcy5vZmZzZXQuY2xpY2sudG9wfWlmKGUu cGFnZVgtdGhpcy5vZmZzZXQuY2xpY2subGVmdD50aGlzLmNvbnRhaW5tZW50WzJd KXtkPXRoaXMuY29udGFpbm1lbnRbMl0rdGhpcy5vZmZzZXQuY2xpY2subGVmdH1p ZihlLnBhZ2VZLXRoaXMub2Zmc2V0LmNsaWNrLnRvcD50aGlzLmNvbnRhaW5tZW50 WzNdKXtjPXRoaXMuY29udGFpbm1lbnRbM10rdGhpcy5vZmZzZXQuY2xpY2sudG9w fX1pZihoLmdyaWQpe3ZhciBnPXRoaXMub3JpZ2luYWxQYWdlWStNYXRoLnJvdW5k KChjLXRoaXMub3JpZ2luYWxQYWdlWSkvaC5ncmlkWzFdKSpoLmdyaWRbMV07Yz10 aGlzLmNvbnRhaW5tZW50PyghKGctdGhpcy5vZmZzZXQuY2xpY2sudG9wPHRoaXMu Y29udGFpbm1lbnRbMV18fGctdGhpcy5vZmZzZXQuY2xpY2sudG9wPnRoaXMuY29u dGFpbm1lbnRbM10pP2c6KCEoZy10aGlzLm9mZnNldC5jbGljay50b3A8dGhpcy5j b250YWlubWVudFsxXSk/Zy1oLmdyaWRbMV06ZytoLmdyaWRbMV0pKTpnO3ZhciBm PXRoaXMub3JpZ2luYWxQYWdlWCtNYXRoLnJvdW5kKChkLXRoaXMub3JpZ2luYWxQ YWdlWCkvaC5ncmlkWzBdKSpoLmdyaWRbMF07ZD10aGlzLmNvbnRhaW5tZW50Pygh KGYtdGhpcy5vZmZzZXQuY2xpY2subGVmdDx0aGlzLmNvbnRhaW5tZW50WzBdfHxm LXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ+dGhpcy5jb250YWlubWVudFsyXSk/Zjoo IShmLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ8dGhpcy5jb250YWlubWVudFswXSk/ Zi1oLmdyaWRbMF06ZitoLmdyaWRbMF0pKTpmfX1yZXR1cm57dG9wOihjLXRoaXMu b2Zmc2V0LmNsaWNrLnRvcC10aGlzLm9mZnNldC5yZWxhdGl2ZS50b3AtdGhpcy5v ZmZzZXQucGFyZW50LnRvcCsoYS5icm93c2VyLnNhZmFyaSYmdGhpcy5jc3NQb3Np dGlvbj09ImZpeGVkIj8wOih0aGlzLmNzc1Bvc2l0aW9uPT0iZml4ZWQiPy10aGlz LnNjcm9sbFBhcmVudC5zY3JvbGxUb3AoKTooaT8wOmIuc2Nyb2xsVG9wKCkpKSkp LGxlZnQ6KGQtdGhpcy5vZmZzZXQuY2xpY2subGVmdC10aGlzLm9mZnNldC5yZWxh dGl2ZS5sZWZ0LXRoaXMub2Zmc2V0LnBhcmVudC5sZWZ0KyhhLmJyb3dzZXIuc2Fm YXJpJiZ0aGlzLmNzc1Bvc2l0aW9uPT0iZml4ZWQiPzA6KHRoaXMuY3NzUG9zaXRp b249PSJmaXhlZCI/LXRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbExlZnQoKTppPzA6 Yi5zY3JvbGxMZWZ0KCkpKSl9fSxfcmVhcnJhbmdlOmZ1bmN0aW9uKGcsZixjLGUp e1VMU05RVzo7Yz9jWzBdLmFwcGVuZENoaWxkKHRoaXMucGxhY2Vob2xkZXJbMF0p OmYuaXRlbVswXS5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLnBsYWNlaG9s ZGVyWzBdLCh0aGlzLmRpcmVjdGlvbj09ImRvd24iP2YuaXRlbVswXTpmLml0ZW1b MF0ubmV4dFNpYmxpbmcpKTt0aGlzLmNvdW50ZXI9dGhpcy5jb3VudGVyPysrdGhp cy5jb3VudGVyOjE7dmFyIGQ9dGhpcyxiPXRoaXMuY291bnRlcjt3aW5kb3cuc2V0 VGltZW91dChmdW5jdGlvbigpe1VMU05RVzo7aWYoYj09ZC5jb3VudGVyKXtkLnJl ZnJlc2hQb3NpdGlvbnMoIWUpfX0sMCl9LF9jbGVhcjpmdW5jdGlvbihkLGUpe1VM U05RVzo7dGhpcy5yZXZlcnRpbmc9ZmFsc2U7dmFyIGY9W10sYj10aGlzO2lmKCF0 aGlzLl9ub0ZpbmFsU29ydCYmdGhpcy5jdXJyZW50SXRlbVswXS5wYXJlbnROb2Rl KXt0aGlzLnBsYWNlaG9sZGVyLmJlZm9yZSh0aGlzLmN1cnJlbnRJdGVtKX10aGlz Ll9ub0ZpbmFsU29ydD1udWxsO2lmKHRoaXMuaGVscGVyWzBdPT10aGlzLmN1cnJl bnRJdGVtWzBdKXtmb3IodmFyIGMgaW4gdGhpcy5fc3RvcmVkQ1NTKXtpZih0aGlz Ll9zdG9yZWRDU1NbY109PSJhdXRvInx8dGhpcy5fc3RvcmVkQ1NTW2NdPT0ic3Rh dGljIil7dGhpcy5fc3RvcmVkQ1NTW2NdPSIifX10aGlzLmN1cnJlbnRJdGVtLmNz cyh0aGlzLl9zdG9yZWRDU1MpLnJlbW92ZUNsYXNzKCJ1aS1zb3J0YWJsZS1oZWxw ZXIiKX1lbHNle3RoaXMuY3VycmVudEl0ZW0uc2hvdygpfWlmKHRoaXMuZnJvbU91 dHNpZGUmJiFlKXtmLnB1c2goZnVuY3Rpb24oZyl7VUxTTlFXOjt0aGlzLl90cmln Z2VyKCJyZWNlaXZlIixnLHRoaXMuX3VpSGFzaCh0aGlzLmZyb21PdXRzaWRlKSl9 KX1pZigodGhpcy5mcm9tT3V0c2lkZXx8dGhpcy5kb21Qb3NpdGlvbi5wcmV2IT10 aGlzLmN1cnJlbnRJdGVtLnByZXYoKS5ub3QoIi51aS1zb3J0YWJsZS1oZWxwZXIi KVswXXx8dGhpcy5kb21Qb3NpdGlvbi5wYXJlbnQhPXRoaXMuY3VycmVudEl0ZW0u cGFyZW50KClbMF0pJiYhZSl7Zi5wdXNoKGZ1bmN0aW9uKGcpe1VMU05RVzo7dGhp cy5fdHJpZ2dlcigidXBkYXRlIixnLHRoaXMuX3VpSGFzaCgpKX0pfWlmKCFhLnVp LmNvbnRhaW5zKHRoaXMuZWxlbWVudFswXSx0aGlzLmN1cnJlbnRJdGVtWzBdKSl7 aWYoIWUpe2YucHVzaChmdW5jdGlvbihnKXtVTFNOUVc6O3RoaXMuX3RyaWdnZXIo InJlbW92ZSIsZyx0aGlzLl91aUhhc2goKSl9KX1mb3IodmFyIGM9dGhpcy5jb250 YWluZXJzLmxlbmd0aC0xO2M+PTA7Yy0tKXtpZihhLnVpLmNvbnRhaW5zKHRoaXMu Y29udGFpbmVyc1tjXS5lbGVtZW50WzBdLHRoaXMuY3VycmVudEl0ZW1bMF0pJiYh ZSl7Zi5wdXNoKChmdW5jdGlvbihnKXtVTFNOUVc6O3JldHVybiBmdW5jdGlvbiho KXtVTFNOUVc6O2cuX3RyaWdnZXIoInJlY2VpdmUiLGgsdGhpcy5fdWlIYXNoKHRo aXMpKX19KS5jYWxsKHRoaXMsdGhpcy5jb250YWluZXJzW2NdKSk7Zi5wdXNoKChm dW5jdGlvbihnKXtVTFNOUVc6O3JldHVybiBmdW5jdGlvbihoKXtVTFNOUVc6O2cu X3RyaWdnZXIoInVwZGF0ZSIsaCx0aGlzLl91aUhhc2godGhpcykpfX0pLmNhbGwo dGhpcyx0aGlzLmNvbnRhaW5lcnNbY10pKX19fWZvcih2YXIgYz10aGlzLmNvbnRh aW5lcnMubGVuZ3RoLTE7Yz49MDtjLS0pe2lmKCFlKXtmLnB1c2goKGZ1bmN0aW9u KGcpe1VMU05RVzo7cmV0dXJuIGZ1bmN0aW9uKGgpe1VMU05RVzo7Zy5fdHJpZ2dl cigiZGVhY3RpdmF0ZSIsaCx0aGlzLl91aUhhc2godGhpcykpfX0pLmNhbGwodGhp cyx0aGlzLmNvbnRhaW5lcnNbY10pKX1pZih0aGlzLmNvbnRhaW5lcnNbY10uY29u dGFpbmVyQ2FjaGUub3Zlcil7Zi5wdXNoKChmdW5jdGlvbihnKXtVTFNOUVc6O3Jl dHVybiBmdW5jdGlvbihoKXtVTFNOUVc6O2cuX3RyaWdnZXIoIm91dCIsaCx0aGlz Ll91aUhhc2godGhpcykpfX0pLmNhbGwodGhpcyx0aGlzLmNvbnRhaW5lcnNbY10p KTt0aGlzLmNvbnRhaW5lcnNbY10uY29udGFpbmVyQ2FjaGUub3Zlcj0wfX1pZih0 aGlzLl9zdG9yZWRDdXJzb3Ipe2EoImJvZHkiKS5jc3MoImN1cnNvciIsdGhpcy5f c3RvcmVkQ3Vyc29yKX1pZih0aGlzLl9zdG9yZWRPcGFjaXR5KXt0aGlzLmhlbHBl ci5jc3MoIm9wYWNpdHkiLHRoaXMuX3N0b3JlZE9wYWNpdHkpfWlmKHRoaXMuX3N0 b3JlZFpJbmRleCl7dGhpcy5oZWxwZXIuY3NzKCJ6SW5kZXgiLHRoaXMuX3N0b3Jl ZFpJbmRleD09ImF1dG8iPyIiOnRoaXMuX3N0b3JlZFpJbmRleCl9dGhpcy5kcmFn Z2luZz1mYWxzZTtpZih0aGlzLmNhbmNlbEhlbHBlclJlbW92YWwpe2lmKCFlKXt0 aGlzLl90cmlnZ2VyKCJiZWZvcmVTdG9wIixkLHRoaXMuX3VpSGFzaCgpKTtmb3Io dmFyIGM9MDtjPGYubGVuZ3RoO2MrKyl7ZltjXS5jYWxsKHRoaXMsZCl9dGhpcy5f dHJpZ2dlcigic3RvcCIsZCx0aGlzLl91aUhhc2goKSl9cmV0dXJuIGZhbHNlfWlm KCFlKXt0aGlzLl90cmlnZ2VyKCJiZWZvcmVTdG9wIixkLHRoaXMuX3VpSGFzaCgp KX10aGlzLnBsYWNlaG9sZGVyWzBdLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhp cy5wbGFjZWhvbGRlclswXSk7aWYodGhpcy5oZWxwZXJbMF0hPXRoaXMuY3VycmVu dEl0ZW1bMF0pe3RoaXMuaGVscGVyLnJlbW92ZSgpfXRoaXMuaGVscGVyPW51bGw7 aWYoIWUpe2Zvcih2YXIgYz0wO2M8Zi5sZW5ndGg7YysrKXtmW2NdLmNhbGwodGhp cyxkKX10aGlzLl90cmlnZ2VyKCJzdG9wIixkLHRoaXMuX3VpSGFzaCgpKX10aGlz LmZyb21PdXRzaWRlPWZhbHNlO3JldHVybiB0cnVlfSxfdHJpZ2dlcjpmdW5jdGlv bigpe1VMU05RVzo7aWYoYS53aWRnZXQucHJvdG90eXBlLl90cmlnZ2VyLmFwcGx5 KHRoaXMsYXJndW1lbnRzKT09PWZhbHNlKXt0aGlzLmNhbmNlbCgpfX0sX3VpSGFz aDpmdW5jdGlvbihjKXtVTFNOUVc6O3ZhciBiPWN8fHRoaXM7cmV0dXJue2hlbHBl cjpiLmhlbHBlcixwbGFjZWhvbGRlcjpiLnBsYWNlaG9sZGVyfHxhKFtdKSxwb3Np dGlvbjpiLnBvc2l0aW9uLGFic29sdXRlUG9zaXRpb246Yi5wb3NpdGlvbkFicyxv ZmZzZXQ6Yi5wb3NpdGlvbkFicyxpdGVtOmIuY3VycmVudEl0ZW0sc2VuZGVyOmM/ Yy5lbGVtZW50Om51bGx9fX0pKTthLmV4dGVuZChhLnVpLnNvcnRhYmxlLHtnZXR0 ZXI6InNlcmlhbGl6ZSB0b0FycmF5Iix2ZXJzaW9uOiIxLjciLGV2ZW50UHJlZml4 OiJzb3J0IixkZWZhdWx0czp7YXBwZW5kVG86InBhcmVudCIsYXhpczpmYWxzZSxj YW5jZWw6IjppbnB1dCxvcHRpb24iLGNvbm5lY3RXaXRoOmZhbHNlLGNvbnRhaW5t ZW50OmZhbHNlLGN1cnNvcjoiYXV0byIsY3Vyc29yQXQ6ZmFsc2UsZGVsYXk6MCxk aXN0YW5jZToxLGRyb3BPbkVtcHR5OnRydWUsZm9yY2VQbGFjZWhvbGRlclNpemU6 ZmFsc2UsZm9yY2VIZWxwZXJTaXplOmZhbHNlLGdyaWQ6ZmFsc2UsaGFuZGxlOmZh bHNlLGhlbHBlcjoib3JpZ2luYWwiLGl0ZW1zOiI+ICoiLG9wYWNpdHk6ZmFsc2Us cGxhY2Vob2xkZXI6ZmFsc2UscmV2ZXJ0OmZhbHNlLHNjcm9sbDp0cnVlLHNjcm9s bFNlbnNpdGl2aXR5OjIwLHNjcm9sbFNwZWVkOjIwLHNjb3BlOiJkZWZhdWx0Iix0 b2xlcmFuY2U6ImludGVyc2VjdCIsekluZGV4OjEwMDB9fSl9KShqUXVlcnkpOzsN KGZ1bmN0aW9uKGEpe1VMU05RVzo7YS53aWRnZXQoInVpLnByb2dyZXNzYmFyIix7 X2luaXQ6ZnVuY3Rpb24oKXtVTFNOUVc6O3RoaXMuZWxlbWVudC5hZGRDbGFzcygi dWktcHJvZ3Jlc3NiYXIgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNv cm5lci1hbGwiKS5hdHRyKHtyb2xlOiJwcm9ncmVzc2JhciIsImFyaWEtdmFsdWVt aW4iOnRoaXMuX3ZhbHVlTWluKCksImFyaWEtdmFsdWVtYXgiOnRoaXMuX3ZhbHVl TWF4KCksImFyaWEtdmFsdWVub3ciOnRoaXMuX3ZhbHVlKCl9KTt0aGlzLnZhbHVl RGl2PWEoJzxkaXYgY2xhc3M9InVpLXByb2dyZXNzYmFyLXZhbHVlIHVpLXdpZGdl dC1oZWFkZXIgdWktY29ybmVyLWxlZnQiPjwvZGl2PicpLmFwcGVuZFRvKHRoaXMu ZWxlbWVudCk7dGhpcy5fcmVmcmVzaFZhbHVlKCl9LGRlc3Ryb3k6ZnVuY3Rpb24o KXtVTFNOUVc6O3RoaXMuZWxlbWVudC5yZW1vdmVDbGFzcygidWktcHJvZ3Jlc3Ni YXIgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwiKS5y ZW1vdmVBdHRyKCJyb2xlIikucmVtb3ZlQXR0cigiYXJpYS12YWx1ZW1pbiIpLnJl bW92ZUF0dHIoImFyaWEtdmFsdWVtYXgiKS5yZW1vdmVBdHRyKCJhcmlhLXZhbHVl bm93IikucmVtb3ZlRGF0YSgicHJvZ3Jlc3NiYXIiKS51bmJpbmQoIi5wcm9ncmVz c2JhciIpO3RoaXMudmFsdWVEaXYucmVtb3ZlKCk7YS53aWRnZXQucHJvdG90eXBl LmRlc3Ryb3kuYXBwbHkodGhpcyxhcmd1bWVudHMpfSx2YWx1ZTpmdW5jdGlvbihi KXtVTFNOUVc6O2FyZ3VtZW50cy5sZW5ndGgmJnRoaXMuX3NldERhdGEoInZhbHVl IixiKTtyZXR1cm4gdGhpcy5fdmFsdWUoKX0sX3NldERhdGE6ZnVuY3Rpb24oYixj KXtVTFNOUVc6O3N3aXRjaChiKXtjYXNlInZhbHVlIjp0aGlzLm9wdGlvbnMudmFs dWU9Yzt0aGlzLl9yZWZyZXNoVmFsdWUoKTt0aGlzLl90cmlnZ2VyKCJjaGFuZ2Ui LG51bGwse30pO2JyZWFrfWEud2lkZ2V0LnByb3RvdHlwZS5fc2V0RGF0YS5hcHBs eSh0aGlzLGFyZ3VtZW50cyl9LF92YWx1ZTpmdW5jdGlvbigpe1VMU05RVzo7dmFy IGI9dGhpcy5vcHRpb25zLnZhbHVlO2lmKGI8dGhpcy5fdmFsdWVNaW4oKSl7Yj10 aGlzLl92YWx1ZU1pbigpfWlmKGI+dGhpcy5fdmFsdWVNYXgoKSl7Yj10aGlzLl92 YWx1ZU1heCgpfXJldHVybiBifSxfdmFsdWVNaW46ZnVuY3Rpb24oKXtVTFNOUVc6 O3ZhciBiPTA7cmV0dXJuIGJ9LF92YWx1ZU1heDpmdW5jdGlvbigpe1VMU05RVzo7 dmFyIGI9MTAwO3JldHVybiBifSxfcmVmcmVzaFZhbHVlOmZ1bmN0aW9uKCl7VUxT TlFXOjt2YXIgYj10aGlzLnZhbHVlKCk7dGhpcy52YWx1ZURpdltiPT10aGlzLl92 YWx1ZU1heCgpPyJhZGRDbGFzcyI6InJlbW92ZUNsYXNzIl0oInVpLWNvcm5lci1y aWdodCIpO3RoaXMudmFsdWVEaXYud2lkdGgoYisiJSIpO3RoaXMuZWxlbWVudC5h dHRyKCJhcmlhLXZhbHVlbm93IixiKX19KTthLmV4dGVuZChhLnVpLnByb2dyZXNz YmFyLHt2ZXJzaW9uOiIxLjciLGRlZmF1bHRzOnt2YWx1ZTowfX0pfSkoalF1ZXJ5 KTs7DQ== ------------AwZAEu8L0Fx8UXBllPLKFH Content-Disposition: inline; filename=jsonstrings.js Content-Type: text/javascript; charset=utf-8; name=jsonstrings.js Content-Location: http://office.microsoft.com/es-hn/jsonstrings.aspx?b=5567.4000&g=Global Content-Transfer-Encoding: Quoted-Printable var OOUI_Global=3D{"APPSET_TITLE":"Mis programas de Microsoft Office","A= PPSET_BTN_AUTO_DETECT":"Detectar autom=C3=A1ticamente mis productos","AP= PSET_AX_DETECTED_NO_APPS":"No se pudo agregar ning=C3=BAn programa a la = lista Mis programas porque no hay instalado ning=C3=BAn programa de Offi= ce. Puede descargar una versi=C3=B3n de prueba gratuita de {0} con la op= ci=C3=B3n para comprar.","APPSET_AX_DETECTED_NO_APPS_LINK":"Microsoft Of= fice","APPSET_LNK_SRVC_AGREEMENT":"Leer el acuerdo de servicio de Micros= oft","APPSET_LBL_MY_PRODUCTS":"Mis programas","APPSET_LBL_DESCRIPTION":"= Detecte autom=C3=A1ticamente los programas de Office instalados para mej= orar los resultados de la b=C3=BAsqueda en l=C3=ADnea desde el sitio web= de Office.","APPSET_BTN_DONE":"Guardar","APPSET_BTN_CANCELSETTINGS":"Ca= ncelar","APPSET_GROUP_APPS":"Aplicaciones","APPSET_GROUP_SERVICES":"Serv= icios","APPSET_GROUP_SERVERS":"Servidores","APPSET_GROUP_OTHER":"Otros p= rogramas de Microsoft Office","APPSET_GROUP_RELATED":"Productos y tecnol= og=C3=ADas relacionados","APPSET_APP_LIST_EMPTY":"[Lista de aplicaciones= vac=C3=ADa]","APPSET_MY_PRODUCTS_PANE_EMPTY":"Para agregar programas r=C3= =A1pidamente a la lista Mis programas, haga clic en el bot=C3=B3n Detect= ar mis programas autom=C3=A1ticamente. Tambi=C3=A9n puede hacer clic por= separado o arrastrar los t=C3=ADtulos de los programas desde los panele= s de aplicaciones hasta este panel.","APPSET_PRODUCT_PANE_ITEM_ADD":"Agr= egar","APPSET_PRODUCT_PANE_ITEM_REMOVE":"Quitar","APPSET_SYS_PANE_EXP_CO= L":"expandir o contraer","IDS_ONT_SEARCH_NOTEXTENTERED":"Escriba uno o v= arios t=C3=A9rminos de b=C3=BAsqueda en el cuadro Buscar.","L_SharedProv= idedByLabelText":"Proporcionado por:","IDS_CLIP_HOVER_PROV_MSFT":"Micros= oft","IDS_VERTICAL_SLIDER_NEXT":"Ver siguiente","IDS_VERTICAL_SLIDER_PRE= V":"Ver anterior","IDS_ADVERTISEMENT":"publicidad","L_SponsoredSites":"S= itios patrocinados","L_MainlineAdFormat":"{0}{1}","L_MainlineAdTitle":"{= 0} - ","L_CategoryShowAll":"Mostrar todas las categor=C3=ADas","L_Catego= ryHideAll":"Contraer lista","L_SeeAlsoJustAMoment":"Espere un momento...= ","L_SeeAlsoCantFindMore":"No encontramos m=C3=A1s informaci=C3=B3n sobr= e esta p=C3=A1gina.","L_BtnClose":"Cerrar","IDS_CLIP_TOP_PROV":"Proveedo= res principales","IDS_CLIP_TOP_PROV_NUM_RES":"Ver {0} resultados","IDS_C= LIP_TOP_PROV_VIEW":"Ver","IDS_CLIP_TOP_PROV_UNDO":"Deshacer","IDS_CLIP_T= OP_PROV_VIEWALL":"Ver los {0} resultados de este proveedor","IDS_CLIP_TO= P_PROV_SHOWALLRES":"Mostrar resultados de todos los proveedores","IDS_CL= IP_FILTER_CLEAR":"Borrar filtro","IDS_CLIP_PREV_ATTR_TIER1XT":"Para busc= ar m=C3=A1s informaci=C3=B3n de este proveedor, visite {0}","IDS_CLIP_HO= VER_SEESIMI":"Ver im=C3=A1genes similares","IDS_CLIP_HOVER_DESC":"{0} (a= ncho) x {1} (alto) - {2} - {3} kb","IDS_CLIP_HOVER_SOUND_DESC":"{0} segu= ndos - {1} kb","IDS_CLIP_HOVER_VIEW_DETAILS":"ver detalles","IDS_CLIP_HO= VER_ADD_CLIPBOARD":"copiar","IDS_CLIP_HOVER_DOWNLOAD":"descargar","IDS_C= LIP_HOVER_DIVIDER":"{0} | {1}","L_DefaultDirectDownloadHeading":"Descarg= a de archivos","IDS_CLIP_PREVIEW_ADDCOLL":"Agregar a la cesta","IDS_CLIP= _PREVIEW_ADDCOLL_EX":"Agregar a la colecci=C3=B3n","L_ItemNew":"Nuevo","= L_ItemUpdated":"Actualizado","IDS_CLIP_PREVIEW_DOWNLOAD":"Descargar","ID= S_COPY_TO_CLIPBOARD":"Copiar al Portapapeles","IDS_CLIP_PREVIEW_SEESIMIL= AR":"Ver im=C3=A1genes similares","IDS_CLIP_NON_COMMERCIAL_MSG":"Solo pa= ra uso personal y no comercial","L_SearchArticleHeading":"Art=C3=ADculo"= ,"L_SearchTrainingHeading":"Aprendizaje","L_SearchSupportHeading":"Sopor= te","L_SearchVideoHeading":"V=C3=ADdeo","L_SearchLinkHeading":"V=C3=ADnc= ulo","IDS_ONT_PAGING_DROPDOWN_TITLE":"P=C3=A1gina","IDS_ONT_PAGING_LABEL= ":"P=C3=A1gina:","IDS_ONT_PAGING_NEXT":"Siguiente","IDS_ONT_PAGING_PAGEO= FX":"de {0}","IDS_ONT_PAGING_TOOLTIP_BACK":"Ir a la p=C3=A1gina anterior= ","IDS_ONT_PAGING_TOOLTIP_BACK_DISABLED":"Ir a la p=C3=A1gina anterior (= deshabilitada)","IDS_ONT_PAGING_TOOLTIP_FIRST":"Ir a la primera p=C3=A1g= ina","IDS_ONT_PAGING_TOOLTIP_FIRST_DISABLED":"Ir a la primera p=C3=A1gin= a (deshabilitado)","IDS_ONT_PAGING_TOOLTIP_NEXT":"Ir a la p=C3=A1gina si= guiente","IDS_ONT_PAGING_TOOLTIP_NEXT_DISABLED":"Ir a la p=C3=A1gina sig= uiente (deshabilitada)","IDS_ONT_SORTING_SORTBY":"Ordenar por: ","L_Gene= ricPagingText":"{0} - {1} de {2}","IDS_TOU_VERSION":"3","L_Feedback_Clic= k_To_Rate":"Haga clic en las estrellas para calificar","L_Feedback_Skip"= :"Omitir","L_Feedback_Submitting":"Enviando","L_ReportAbuse":"notificar = abuso","AsyncLoggingIntervalMS":"10000","RlidCSxRAV14":"http:\u002f\u002= fofficeredir.microsoft.com\u002fr\u002frlidCSxRAV14?clid=3D18442","RlidO= fficeSystem":"http:\u002f\u002fofficeredir.microsoft.com\u002fr\u002frli= dOfficeSystem?clid=3D18442","CTN_XML":"collection.aspx","qpCtnAction":"c= tna","qpCtnId":"ctnid","qpAssetId":"AssetId","qpAssetsList":"alist","qpC= TT":"CTT","CTN_ACTION_GETCOLLECTIONITEMS":7,"CTN_ACTION_GETITEMSIZE":8,"= CTN_ACTION_GETITEMDATA":9,"CTN_ACTION_GETITEMSLISTDATA":10,"CTN_ACTION_G= ETCOLLECTIONSLIST":11,"CTN_ACTION_DELETE":4,"CTN_ACTION_ADDITEM":5,"CTN_= ACTION_REMOVEITEM":6,"CTN_UNSAVED_VIRTUAL_ID":"ES010361830","CTN_MANAGE_= UNSAVED_URL":"http:\u002f\u002foffice.microsoft.com\u002fes-hn\u002fcoll= ectionpreview.aspx","CTN_MANAGE_SAVED_URL":"\u002fes-hn\u002fcollections= \u002f{0}.aspx","CTN_SUBMIT_URL":"http:\u002f\u002foffice.microsoft.com\= u002fes-hn\u002fcollectionsubmission.aspx","USER_CSX_COLLECTIONS_URL":"h= ttp:\u002f\u002foffice.microsoft.com\u002fes-hn\u002fmanagementpreview.a= spx?ats=3DGR","TEMPLATE_DOWNLOAD_URL":"\u002fdownload\u002ffile.aspx?Ass= etId=3D{AssetId}\u0026lc=3Des\u00252DHN\u0026ax=3D1","CLIPART_DOWNLOAD_U= RL":"\u002fes-hn\u002fclippackager.aspx","TEMPLATE_PAGE_URL":"\u002f{Mar= ket}\u002ftemplates\u002f{AssetId}.aspx","TEMPLATE_THUMBNAIL_URL":"\u002= f{Market}\u002ftemplates\u002f{AssetId}.png","CLIPART_PAGE_URL":"\u002f{= Market}\u002fimages\u002f{AssetId}.aspx","CLIPART_THUMBNAIL_URL":"\u002f= en-us\u002fimages\u002f{AssetId}","InternalStaticContentDomain":"officei= mages.microsoft.com","StaticContentDomains":["officeimg.vo.msecnd.net"],= "BuildNumber":"5567.4000","AxControlsJsUrl":"axcontroljs.aspx?c=3Dawsdc\= u0026b=3D5567.4000","TOU":"O11TOU","TOU_CST":"CSTTOU","TOU_MS":"touslms"= ,"TOU_ISV":"touslisv","SKYPE_FIX_SPAN":"\u003cspan class=3D\u0022spnSkyp= eFix\u0022\u003e_\u003c\u002fspan\u003e","NON_COMMERCIAL_PARTNERS":["PN1= 01886501"],"SEARCH_RESULTS_DELIMITER":":","SEARCH_ORIGINASSETID_COOKIENA= ME":"SearchOriginAssetID","SEARCH_ORIGINSUBWEB_COOKIENAME":"SearchOrigin= SubWeb"}; if (typeof(OOUI) =3D=3D 'undefined') { var OOUI =3D OOUI_Global; OOUI_Global =3D null; }else{ jQuery.extend(OOUI, OOUI_Global); } var OOUI_Global_global=3D{"g_strRenderingSiteRootRelative":"\u002f"};jQu= ery.extend(window, OOUI_Global_global); ------------AwZAEu8L0Fx8UXBllPLKFH Content-Disposition: inline; filename=js.js Content-Type: application/x-javascript; charset=utf-8; name=js.js Content-Location: http://office.microsoft.com/es-hn/_vti_bin/anonsvc/Global.svc/js?b=5567.4000 Content-Transfer-Encoding: Base64 dmFyIEdsb2JhbFN2Yz1mdW5jdGlvbigpIHsNCkdsb2JhbFN2Yy5pbml0aWFsaXpl QmFzZSh0aGlzKTsNCnRoaXMuX3RpbWVvdXQgPSAwOw0KdGhpcy5fdXNlckNvbnRl eHQgPSBudWxsOw0KdGhpcy5fc3VjY2VlZGVkID0gbnVsbDsNCnRoaXMuX2ZhaWxl ZCA9IG51bGw7DQp9DQpHbG9iYWxTdmMucHJvdG90eXBlPXsNCl9nZXRfcGF0aDpm dW5jdGlvbigpIHsNCiB2YXIgcCA9IHRoaXMuZ2V0X3BhdGgoKTsNCiBpZiAocCkg cmV0dXJuIHA7DQogZWxzZSByZXR1cm4gR2xvYmFsU3ZjLl9zdGF0aWNJbnN0YW5j ZS5nZXRfcGF0aCgpO30sDQpHZXRQcm9maWxlSW5mbzpmdW5jdGlvbihyZ1Byb3Zp ZGVySW5wdXQsblNjZW5hcmlvLHN1Y2NlZWRlZENhbGxiYWNrLCBmYWlsZWRDYWxs YmFjaywgdXNlckNvbnRleHQpIHsNCnJldHVybiB0aGlzLl9pbnZva2UodGhpcy5f Z2V0X3BhdGgoKSwgJ0dldFByb2ZpbGVJbmZvJyxmYWxzZSx7cmdQcm92aWRlcklu cHV0OnJnUHJvdmlkZXJJbnB1dCxuU2NlbmFyaW86blNjZW5hcmlvfSxzdWNjZWVk ZWRDYWxsYmFjayxmYWlsZWRDYWxsYmFjayx1c2VyQ29udGV4dCk7IH0sDQpHZXRE ZXNjcmlwdGlvbkluZm86ZnVuY3Rpb24oc3RyTWFya2V0LHJlcXVlc3RzLHN1Y2Nl ZWRlZENhbGxiYWNrLCBmYWlsZWRDYWxsYmFjaywgdXNlckNvbnRleHQpIHsNCnJl dHVybiB0aGlzLl9pbnZva2UodGhpcy5fZ2V0X3BhdGgoKSwgJ0dldERlc2NyaXB0 aW9uSW5mbycsZmFsc2Use3N0ck1hcmtldDpzdHJNYXJrZXQscmVxdWVzdHM6cmVx dWVzdHN9LHN1Y2NlZWRlZENhbGxiYWNrLGZhaWxlZENhbGxiYWNrLHVzZXJDb250 ZXh0KTsgfSwNCkdldFNlYXJjaEFkOmZ1bmN0aW9uKHN0clN1YndlYixzdHJRdWVy eSxuUGFnZSxuTWFpbmxpbmUsblNpZGViYXIsc3VjY2VlZGVkQ2FsbGJhY2ssIGZh aWxlZENhbGxiYWNrLCB1c2VyQ29udGV4dCkgew0KcmV0dXJuIHRoaXMuX2ludm9r ZSh0aGlzLl9nZXRfcGF0aCgpLCAnR2V0U2VhcmNoQWQnLGZhbHNlLHtzdHJTdWJ3 ZWI6c3RyU3Vid2ViLHN0clF1ZXJ5OnN0clF1ZXJ5LG5QYWdlOm5QYWdlLG5NYWlu bGluZTpuTWFpbmxpbmUsblNpZGViYXI6blNpZGViYXJ9LHN1Y2NlZWRlZENhbGxi YWNrLGZhaWxlZENhbGxiYWNrLHVzZXJDb250ZXh0KTsgfSwNCkdldEF1dGhlbnRp Y2F0aW9uVVJMOmZ1bmN0aW9uKHN0clJldHVyblVSTCxzdWNjZWVkZWRDYWxsYmFj aywgZmFpbGVkQ2FsbGJhY2ssIHVzZXJDb250ZXh0KSB7DQpyZXR1cm4gdGhpcy5f aW52b2tlKHRoaXMuX2dldF9wYXRoKCksICdHZXRBdXRoZW50aWNhdGlvblVSTCcs ZmFsc2Use3N0clJldHVyblVSTDpzdHJSZXR1cm5VUkx9LHN1Y2NlZWRlZENhbGxi YWNrLGZhaWxlZENhbGxiYWNrLHVzZXJDb250ZXh0KTsgfSwNCkdldEZlZWRiYWNr UXVlc3Rpb25zOmZ1bmN0aW9uKHN0ckZlZWRiYWNrS2V5LHF1ZXN0aW9uR3JvdXBJ ZHMsc3RyQXNzZXRJZCxzdWNjZWVkZWRDYWxsYmFjaywgZmFpbGVkQ2FsbGJhY2ss IHVzZXJDb250ZXh0KSB7DQpyZXR1cm4gdGhpcy5faW52b2tlKHRoaXMuX2dldF9w YXRoKCksICdHZXRGZWVkYmFja1F1ZXN0aW9ucycsZmFsc2Use3N0ckZlZWRiYWNr S2V5OnN0ckZlZWRiYWNrS2V5LHF1ZXN0aW9uR3JvdXBJZHM6cXVlc3Rpb25Hcm91 cElkcyxzdHJBc3NldElkOnN0ckFzc2V0SWR9LHN1Y2NlZWRlZENhbGxiYWNrLGZh aWxlZENhbGxiYWNrLHVzZXJDb250ZXh0KTsgfSwNCkdldEZlZWRiYWNrSW5pdGlh bFF1ZXN0aW9uOmZ1bmN0aW9uKHN0ckZlZWRiYWNrS2V5LHN0ckFzc2V0SWQsc3Vj Y2VlZGVkQ2FsbGJhY2ssIGZhaWxlZENhbGxiYWNrLCB1c2VyQ29udGV4dCkgew0K cmV0dXJuIHRoaXMuX2ludm9rZSh0aGlzLl9nZXRfcGF0aCgpLCAnR2V0RmVlZGJh Y2tJbml0aWFsUXVlc3Rpb24nLGZhbHNlLHtzdHJGZWVkYmFja0tleTpzdHJGZWVk YmFja0tleSxzdHJBc3NldElkOnN0ckFzc2V0SWR9LHN1Y2NlZWRlZENhbGxiYWNr LGZhaWxlZENhbGxiYWNrLHVzZXJDb250ZXh0KTsgfSwNCkdldEZlZWRiYWNrU3Rh cnM6ZnVuY3Rpb24oc3RyRmVlZGJhY2tLZXksc3RyQXNzZXRJZCxmUmVhZE9ubHks YXZlcmFnZVJhdGluZyxuQ291bnQsc3VjY2VlZGVkQ2FsbGJhY2ssIGZhaWxlZENh bGxiYWNrLCB1c2VyQ29udGV4dCkgew0KcmV0dXJuIHRoaXMuX2ludm9rZSh0aGlz Ll9nZXRfcGF0aCgpLCAnR2V0RmVlZGJhY2tTdGFycycsZmFsc2Use3N0ckZlZWRi YWNrS2V5OnN0ckZlZWRiYWNrS2V5LHN0ckFzc2V0SWQ6c3RyQXNzZXRJZCxmUmVh ZE9ubHk6ZlJlYWRPbmx5LGF2ZXJhZ2VSYXRpbmc6YXZlcmFnZVJhdGluZyxuQ291 bnQ6bkNvdW50fSxzdWNjZWVkZWRDYWxsYmFjayxmYWlsZWRDYWxsYmFjayx1c2Vy Q29udGV4dCk7IH0sDQpHZXRNU05BdXRoZW50aWNhdGlvblRva2VuOmZ1bmN0aW9u KHN1Y2NlZWRlZENhbGxiYWNrLCBmYWlsZWRDYWxsYmFjaywgdXNlckNvbnRleHQp IHsNCnJldHVybiB0aGlzLl9pbnZva2UodGhpcy5fZ2V0X3BhdGgoKSwgJ0dldE1T TkF1dGhlbnRpY2F0aW9uVG9rZW4nLGZhbHNlLHt9LHN1Y2NlZWRlZENhbGxiYWNr LGZhaWxlZENhbGxiYWNrLHVzZXJDb250ZXh0KTsgfX0NCkdsb2JhbFN2Yy5yZWdp c3RlckNsYXNzKCdHbG9iYWxTdmMnLFN5cy5OZXQuV2ViU2VydmljZVByb3h5KTsN Ckdsb2JhbFN2Yy5fc3RhdGljSW5zdGFuY2UgPSBuZXcgR2xvYmFsU3ZjKCk7DQpH bG9iYWxTdmMuc2V0X3BhdGggPSBmdW5jdGlvbih2YWx1ZSkgeyBHbG9iYWxTdmMu X3N0YXRpY0luc3RhbmNlLnNldF9wYXRoKHZhbHVlKTsgfQ0KR2xvYmFsU3ZjLmdl dF9wYXRoID0gZnVuY3Rpb24oKSB7IHJldHVybiBHbG9iYWxTdmMuX3N0YXRpY0lu c3RhbmNlLmdldF9wYXRoKCk7IH0NCkdsb2JhbFN2Yy5zZXRfdGltZW91dCA9IGZ1 bmN0aW9uKHZhbHVlKSB7IEdsb2JhbFN2Yy5fc3RhdGljSW5zdGFuY2Uuc2V0X3Rp bWVvdXQodmFsdWUpOyB9DQpHbG9iYWxTdmMuZ2V0X3RpbWVvdXQgPSBmdW5jdGlv bigpIHsgcmV0dXJuIEdsb2JhbFN2Yy5fc3RhdGljSW5zdGFuY2UuZ2V0X3RpbWVv dXQoKTsgfQ0KR2xvYmFsU3ZjLnNldF9kZWZhdWx0VXNlckNvbnRleHQgPSBmdW5j dGlvbih2YWx1ZSkgeyBHbG9iYWxTdmMuX3N0YXRpY0luc3RhbmNlLnNldF9kZWZh dWx0VXNlckNvbnRleHQodmFsdWUpOyB9DQpHbG9iYWxTdmMuZ2V0X2RlZmF1bHRV c2VyQ29udGV4dCA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gR2xvYmFsU3ZjLl9zdGF0 aWNJbnN0YW5jZS5nZXRfZGVmYXVsdFVzZXJDb250ZXh0KCk7IH0NCkdsb2JhbFN2 Yy5zZXRfZGVmYXVsdFN1Y2NlZWRlZENhbGxiYWNrID0gZnVuY3Rpb24odmFsdWUp IHsgR2xvYmFsU3ZjLl9zdGF0aWNJbnN0YW5jZS5zZXRfZGVmYXVsdFN1Y2NlZWRl ZENhbGxiYWNrKHZhbHVlKTsgfQ0KR2xvYmFsU3ZjLmdldF9kZWZhdWx0U3VjY2Vl ZGVkQ2FsbGJhY2sgPSBmdW5jdGlvbigpIHsgcmV0dXJuIEdsb2JhbFN2Yy5fc3Rh dGljSW5zdGFuY2UuZ2V0X2RlZmF1bHRTdWNjZWVkZWRDYWxsYmFjaygpOyB9DQpH bG9iYWxTdmMuc2V0X2RlZmF1bHRGYWlsZWRDYWxsYmFjayA9IGZ1bmN0aW9uKHZh bHVlKSB7IEdsb2JhbFN2Yy5fc3RhdGljSW5zdGFuY2Uuc2V0X2RlZmF1bHRGYWls ZWRDYWxsYmFjayh2YWx1ZSk7IH0NCkdsb2JhbFN2Yy5nZXRfZGVmYXVsdEZhaWxl ZENhbGxiYWNrID0gZnVuY3Rpb24oKSB7IHJldHVybiBHbG9iYWxTdmMuX3N0YXRp Y0luc3RhbmNlLmdldF9kZWZhdWx0RmFpbGVkQ2FsbGJhY2soKTsgfQ0KR2xvYmFs U3ZjLnNldF9wYXRoKCIvX3Z0aV9iaW4vYW5vbnN2Yy9HbG9iYWwuc3ZjIik7DQpH bG9iYWxTdmMuR2V0UHJvZmlsZUluZm89IGZ1bmN0aW9uKHJnUHJvdmlkZXJJbnB1 dCxuU2NlbmFyaW8sb25TdWNjZXNzLG9uRmFpbGVkLHVzZXJDb250ZXh0KSB7R2xv YmFsU3ZjLl9zdGF0aWNJbnN0YW5jZS5HZXRQcm9maWxlSW5mbyhyZ1Byb3ZpZGVy SW5wdXQsblNjZW5hcmlvLG9uU3VjY2VzcyxvbkZhaWxlZCx1c2VyQ29udGV4dCk7 IH0NCkdsb2JhbFN2Yy5HZXREZXNjcmlwdGlvbkluZm89IGZ1bmN0aW9uKHN0ck1h cmtldCxyZXF1ZXN0cyxvblN1Y2Nlc3Msb25GYWlsZWQsdXNlckNvbnRleHQpIHtH bG9iYWxTdmMuX3N0YXRpY0luc3RhbmNlLkdldERlc2NyaXB0aW9uSW5mbyhzdHJN YXJrZXQscmVxdWVzdHMsb25TdWNjZXNzLG9uRmFpbGVkLHVzZXJDb250ZXh0KTsg fQ0KR2xvYmFsU3ZjLkdldFNlYXJjaEFkPSBmdW5jdGlvbihzdHJTdWJ3ZWIsc3Ry UXVlcnksblBhZ2Usbk1haW5saW5lLG5TaWRlYmFyLG9uU3VjY2VzcyxvbkZhaWxl ZCx1c2VyQ29udGV4dCkge0dsb2JhbFN2Yy5fc3RhdGljSW5zdGFuY2UuR2V0U2Vh cmNoQWQoc3RyU3Vid2ViLHN0clF1ZXJ5LG5QYWdlLG5NYWlubGluZSxuU2lkZWJh cixvblN1Y2Nlc3Msb25GYWlsZWQsdXNlckNvbnRleHQpOyB9DQpHbG9iYWxTdmMu R2V0QXV0aGVudGljYXRpb25VUkw9IGZ1bmN0aW9uKHN0clJldHVyblVSTCxvblN1 Y2Nlc3Msb25GYWlsZWQsdXNlckNvbnRleHQpIHtHbG9iYWxTdmMuX3N0YXRpY0lu c3RhbmNlLkdldEF1dGhlbnRpY2F0aW9uVVJMKHN0clJldHVyblVSTCxvblN1Y2Nl c3Msb25GYWlsZWQsdXNlckNvbnRleHQpOyB9DQpHbG9iYWxTdmMuR2V0RmVlZGJh Y2tRdWVzdGlvbnM9IGZ1bmN0aW9uKHN0ckZlZWRiYWNrS2V5LHF1ZXN0aW9uR3Jv dXBJZHMsc3RyQXNzZXRJZCxvblN1Y2Nlc3Msb25GYWlsZWQsdXNlckNvbnRleHQp IHtHbG9iYWxTdmMuX3N0YXRpY0luc3RhbmNlLkdldEZlZWRiYWNrUXVlc3Rpb25z KHN0ckZlZWRiYWNrS2V5LHF1ZXN0aW9uR3JvdXBJZHMsc3RyQXNzZXRJZCxvblN1 Y2Nlc3Msb25GYWlsZWQsdXNlckNvbnRleHQpOyB9DQpHbG9iYWxTdmMuR2V0RmVl ZGJhY2tJbml0aWFsUXVlc3Rpb249IGZ1bmN0aW9uKHN0ckZlZWRiYWNrS2V5LHN0 ckFzc2V0SWQsb25TdWNjZXNzLG9uRmFpbGVkLHVzZXJDb250ZXh0KSB7R2xvYmFs U3ZjLl9zdGF0aWNJbnN0YW5jZS5HZXRGZWVkYmFja0luaXRpYWxRdWVzdGlvbihz dHJGZWVkYmFja0tleSxzdHJBc3NldElkLG9uU3VjY2VzcyxvbkZhaWxlZCx1c2Vy Q29udGV4dCk7IH0NCkdsb2JhbFN2Yy5HZXRGZWVkYmFja1N0YXJzPSBmdW5jdGlv bihzdHJGZWVkYmFja0tleSxzdHJBc3NldElkLGZSZWFkT25seSxhdmVyYWdlUmF0 aW5nLG5Db3VudCxvblN1Y2Nlc3Msb25GYWlsZWQsdXNlckNvbnRleHQpIHtHbG9i YWxTdmMuX3N0YXRpY0luc3RhbmNlLkdldEZlZWRiYWNrU3RhcnMoc3RyRmVlZGJh Y2tLZXksc3RyQXNzZXRJZCxmUmVhZE9ubHksYXZlcmFnZVJhdGluZyxuQ291bnQs b25TdWNjZXNzLG9uRmFpbGVkLHVzZXJDb250ZXh0KTsgfQ0KR2xvYmFsU3ZjLkdl dE1TTkF1dGhlbnRpY2F0aW9uVG9rZW49IGZ1bmN0aW9uKG9uU3VjY2VzcyxvbkZh aWxlZCx1c2VyQ29udGV4dCkge0dsb2JhbFN2Yy5fc3RhdGljSW5zdGFuY2UuR2V0 TVNOQXV0aGVudGljYXRpb25Ub2tlbihvblN1Y2Nlc3Msb25GYWlsZWQsdXNlckNv bnRleHQpOyB9DQp2YXIgZ3RjID0gU3lzLk5ldC5XZWJTZXJ2aWNlUHJveHkuX2dl bmVyYXRlVHlwZWRDb25zdHJ1Y3RvcjsNClR5cGUucmVnaXN0ZXJOYW1lc3BhY2Uo J01pY3Jvc29mdC5PZmZpY2VPbmxpbmUuUmVuZGVyaW5nLlByb3ZpZGVycycpOw0K aWYgKHR5cGVvZihNaWNyb3NvZnQuT2ZmaWNlT25saW5lLlJlbmRlcmluZy5Qcm92 aWRlcnMuUHJvdmlkZXJEZXRhaWwpID09PSAndW5kZWZpbmVkJykgew0KTWljcm9z b2Z0Lk9mZmljZU9ubGluZS5SZW5kZXJpbmcuUHJvdmlkZXJzLlByb3ZpZGVyRGV0 YWlsPWd0YygiUHJvdmlkZXJEZXRhaWw6aHR0cDovL3NjaGVtYXMuZGF0YWNvbnRy YWN0Lm9yZy8yMDA0LzA3L01pY3Jvc29mdC5PZmZpY2VPbmxpbmUuUmVuZGVyaW5n LlByb3ZpZGVycyIpOw0KTWljcm9zb2Z0Lk9mZmljZU9ubGluZS5SZW5kZXJpbmcu UHJvdmlkZXJzLlByb3ZpZGVyRGV0YWlsLnJlZ2lzdGVyQ2xhc3MoJ01pY3Jvc29m dC5PZmZpY2VPbmxpbmUuUmVuZGVyaW5nLlByb3ZpZGVycy5Qcm92aWRlckRldGFp bCcpOw0KfQ0KaWYgKHR5cGVvZihEZXNjcmlwdGlvblJlcXVlc3RJbmZvKSA9PT0g J3VuZGVmaW5lZCcpIHsNCnZhciBEZXNjcmlwdGlvblJlcXVlc3RJbmZvPWd0Yygi RGVzY3JpcHRpb25SZXF1ZXN0SW5mbyIpOw0KRGVzY3JpcHRpb25SZXF1ZXN0SW5m by5yZWdpc3RlckNsYXNzKCdEZXNjcmlwdGlvblJlcXVlc3RJbmZvJyk7DQp9DQpp ZiAodHlwZW9mKERlc2NyaXB0aW9uSW5mbykgPT09ICd1bmRlZmluZWQnKSB7DQp2 YXIgRGVzY3JpcHRpb25JbmZvPWd0YygiRGVzY3JpcHRpb25JbmZvIik7DQpEZXNj cmlwdGlvbkluZm8ucmVnaXN0ZXJDbGFzcygnRGVzY3JpcHRpb25JbmZvJyk7DQp9 DQpUeXBlLnJlZ2lzdGVyTmFtZXNwYWNlKCdNaWNyb3NvZnQuT2ZmaWNlT25saW5l LlJlbmRlcmluZy5TdmMnKTsNCmlmICh0eXBlb2YoTWljcm9zb2Z0Lk9mZmljZU9u bGluZS5SZW5kZXJpbmcuU3ZjLkFkRGF0YSkgPT09ICd1bmRlZmluZWQnKSB7DQpN aWNyb3NvZnQuT2ZmaWNlT25saW5lLlJlbmRlcmluZy5TdmMuQWREYXRhPWd0Yygi QWREYXRhOmh0dHA6Ly9zY2hlbWFzLmRhdGFjb250cmFjdC5vcmcvMjAwNC8wNy9N aWNyb3NvZnQuT2ZmaWNlT25saW5lLlJlbmRlcmluZy5TdmMiKTsNCk1pY3Jvc29m dC5PZmZpY2VPbmxpbmUuUmVuZGVyaW5nLlN2Yy5BZERhdGEucmVnaXN0ZXJDbGFz cygnTWljcm9zb2Z0Lk9mZmljZU9ubGluZS5SZW5kZXJpbmcuU3ZjLkFkRGF0YScp Ow0KfQ0KaWYgKHR5cGVvZihNaWNyb3NvZnQuT2ZmaWNlT25saW5lLlJlbmRlcmlu Zy5TdmMuQWRSZXN1bHQpID09PSAndW5kZWZpbmVkJykgew0KTWljcm9zb2Z0Lk9m ZmljZU9ubGluZS5SZW5kZXJpbmcuU3ZjLkFkUmVzdWx0PWd0YygiQWRSZXN1bHQ6 aHR0cDovL3NjaGVtYXMuZGF0YWNvbnRyYWN0Lm9yZy8yMDA0LzA3L01pY3Jvc29m dC5PZmZpY2VPbmxpbmUuUmVuZGVyaW5nLlN2YyIpOw0KTWljcm9zb2Z0Lk9mZmlj ZU9ubGluZS5SZW5kZXJpbmcuU3ZjLkFkUmVzdWx0LnJlZ2lzdGVyQ2xhc3MoJ01p Y3Jvc29mdC5PZmZpY2VPbmxpbmUuUmVuZGVyaW5nLlN2Yy5BZFJlc3VsdCcpOw0K fQ0KaWYgKHR5cGVvZihGZWVkYmFja1F1ZXN0aW9uSW5mbykgPT09ICd1bmRlZmlu ZWQnKSB7DQp2YXIgRmVlZGJhY2tRdWVzdGlvbkluZm89Z3RjKCJGZWVkYmFja1F1 ZXN0aW9uSW5mbyIpOw0KRmVlZGJhY2tRdWVzdGlvbkluZm8ucmVnaXN0ZXJDbGFz cygnRmVlZGJhY2tRdWVzdGlvbkluZm8nKTsNCn0NClR5cGUucmVnaXN0ZXJOYW1l c3BhY2UoJ01pY3Jvc29mdC5PZmZpY2VPbmxpbmUuUmVuZGVyaW5nLkZlZWRiYWNr Jyk7DQppZiAodHlwZW9mKE1pY3Jvc29mdC5PZmZpY2VPbmxpbmUuUmVuZGVyaW5n LkZlZWRiYWNrLlF1ZXN0aW9uKSA9PT0gJ3VuZGVmaW5lZCcpIHsNCk1pY3Jvc29m dC5PZmZpY2VPbmxpbmUuUmVuZGVyaW5nLkZlZWRiYWNrLlF1ZXN0aW9uPWd0Yygi UXVlc3Rpb246aHR0cDovL3NjaGVtYXMuZGF0YWNvbnRyYWN0Lm9yZy8yMDA0LzA3 L01pY3Jvc29mdC5PZmZpY2VPbmxpbmUuUmVuZGVyaW5nLkZlZWRiYWNrIik7DQpN aWNyb3NvZnQuT2ZmaWNlT25saW5lLlJlbmRlcmluZy5GZWVkYmFjay5RdWVzdGlv bi5yZWdpc3RlckNsYXNzKCdNaWNyb3NvZnQuT2ZmaWNlT25saW5lLlJlbmRlcmlu Zy5GZWVkYmFjay5RdWVzdGlvbicpOw0KfQ0KaWYgKHR5cGVvZihNaWNyb3NvZnQu T2ZmaWNlT25saW5lLlJlbmRlcmluZy5GZWVkYmFjay5RdWVzdGlvbkFuc3dlcikg PT09ICd1bmRlZmluZWQnKSB7DQpNaWNyb3NvZnQuT2ZmaWNlT25saW5lLlJlbmRl cmluZy5GZWVkYmFjay5RdWVzdGlvbkFuc3dlcj1ndGMoIlF1ZXN0aW9uQW5zd2Vy Omh0dHA6Ly9zY2hlbWFzLmRhdGFjb250cmFjdC5vcmcvMjAwNC8wNy9NaWNyb3Nv ZnQuT2ZmaWNlT25saW5lLlJlbmRlcmluZy5GZWVkYmFjayIpOw0KTWljcm9zb2Z0 Lk9mZmljZU9ubGluZS5SZW5kZXJpbmcuRmVlZGJhY2suUXVlc3Rpb25BbnN3ZXIu cmVnaXN0ZXJDbGFzcygnTWljcm9zb2Z0Lk9mZmljZU9ubGluZS5SZW5kZXJpbmcu RmVlZGJhY2suUXVlc3Rpb25BbnN3ZXInKTsNCn0NCmlmICh0eXBlb2YoTWljcm9z b2Z0Lk9mZmljZU9ubGluZS5SZW5kZXJpbmcuRmVlZGJhY2suTGFiZWxRdWVzdGlv bkFuc3dlcikgPT09ICd1bmRlZmluZWQnKSB7DQpNaWNyb3NvZnQuT2ZmaWNlT25s aW5lLlJlbmRlcmluZy5GZWVkYmFjay5MYWJlbFF1ZXN0aW9uQW5zd2VyPWd0Yygi TGFiZWxRdWVzdGlvbkFuc3dlcjpodHRwOi8vc2NoZW1hcy5kYXRhY29udHJhY3Qu b3JnLzIwMDQvMDcvTWljcm9zb2Z0Lk9mZmljZU9ubGluZS5SZW5kZXJpbmcuRmVl ZGJhY2siKTsNCk1pY3Jvc29mdC5PZmZpY2VPbmxpbmUuUmVuZGVyaW5nLkZlZWRi YWNrLkxhYmVsUXVlc3Rpb25BbnN3ZXIucmVnaXN0ZXJDbGFzcygnTWljcm9zb2Z0 Lk9mZmljZU9ubGluZS5SZW5kZXJpbmcuRmVlZGJhY2suTGFiZWxRdWVzdGlvbkFu c3dlcicpOw0KfQ0KaWYgKHR5cGVvZihNaWNyb3NvZnQuT2ZmaWNlT25saW5lLlJl bmRlcmluZy5GZWVkYmFjay5TdGFyc1F1ZXN0aW9uQW5zd2VyKSA9PT0gJ3VuZGVm aW5lZCcpIHsNCk1pY3Jvc29mdC5PZmZpY2VPbmxpbmUuUmVuZGVyaW5nLkZlZWRi YWNrLlN0YXJzUXVlc3Rpb25BbnN3ZXI9Z3RjKCJTdGFyc1F1ZXN0aW9uQW5zd2Vy Omh0dHA6Ly9zY2hlbWFzLmRhdGFjb250cmFjdC5vcmcvMjAwNC8wNy9NaWNyb3Nv ZnQuT2ZmaWNlT25saW5lLlJlbmRlcmluZy5GZWVkYmFjayIpOw0KTWljcm9zb2Z0 Lk9mZmljZU9ubGluZS5SZW5kZXJpbmcuRmVlZGJhY2suU3RhcnNRdWVzdGlvbkFu c3dlci5yZWdpc3RlckNsYXNzKCdNaWNyb3NvZnQuT2ZmaWNlT25saW5lLlJlbmRl cmluZy5GZWVkYmFjay5TdGFyc1F1ZXN0aW9uQW5zd2VyJyk7DQp9DQppZiAodHlw ZW9mKE1pY3Jvc29mdC5PZmZpY2VPbmxpbmUuUmVuZGVyaW5nLkZlZWRiYWNrLk11 bHRpVmFsdWVRdWVzdGlvbkFuc3dlcikgPT09ICd1bmRlZmluZWQnKSB7DQpNaWNy b3NvZnQuT2ZmaWNlT25saW5lLlJlbmRlcmluZy5GZWVkYmFjay5NdWx0aVZhbHVl UXVlc3Rpb25BbnN3ZXI9Z3RjKCJNdWx0aVZhbHVlUXVlc3Rpb25BbnN3ZXI6aHR0 cDovL3NjaGVtYXMuZGF0YWNvbnRyYWN0Lm9yZy8yMDA0LzA3L01pY3Jvc29mdC5P ZmZpY2VPbmxpbmUuUmVuZGVyaW5nLkZlZWRiYWNrIik7DQpNaWNyb3NvZnQuT2Zm aWNlT25saW5lLlJlbmRlcmluZy5GZWVkYmFjay5NdWx0aVZhbHVlUXVlc3Rpb25B bnN3ZXIucmVnaXN0ZXJDbGFzcygnTWljcm9zb2Z0Lk9mZmljZU9ubGluZS5SZW5k ZXJpbmcuRmVlZGJhY2suTXVsdGlWYWx1ZVF1ZXN0aW9uQW5zd2VyJyk7DQp9DQpp ZiAodHlwZW9mKE1pY3Jvc29mdC5PZmZpY2VPbmxpbmUuUmVuZGVyaW5nLkZlZWRi YWNrLkFuc3dlclZhbHVlKSA9PT0gJ3VuZGVmaW5lZCcpIHsNCk1pY3Jvc29mdC5P ZmZpY2VPbmxpbmUuUmVuZGVyaW5nLkZlZWRiYWNrLkFuc3dlclZhbHVlPWd0Yygi QW5zd2VyVmFsdWU6aHR0cDovL3NjaGVtYXMuZGF0YWNvbnRyYWN0Lm9yZy8yMDA0 LzA3L01pY3Jvc29mdC5PZmZpY2VPbmxpbmUuUmVuZGVyaW5nLkZlZWRiYWNrIik7 DQpNaWNyb3NvZnQuT2ZmaWNlT25saW5lLlJlbmRlcmluZy5GZWVkYmFjay5BbnN3 ZXJWYWx1ZS5yZWdpc3RlckNsYXNzKCdNaWNyb3NvZnQuT2ZmaWNlT25saW5lLlJl bmRlcmluZy5GZWVkYmFjay5BbnN3ZXJWYWx1ZScpOw0KfQ0KaWYgKHR5cGVvZihN aWNyb3NvZnQuT2ZmaWNlT25saW5lLlJlbmRlcmluZy5GZWVkYmFjay5UZXh0UXVl c3Rpb25BbnN3ZXIpID09PSAndW5kZWZpbmVkJykgew0KTWljcm9zb2Z0Lk9mZmlj ZU9ubGluZS5SZW5kZXJpbmcuRmVlZGJhY2suVGV4dFF1ZXN0aW9uQW5zd2VyPWd0 YygiVGV4dFF1ZXN0aW9uQW5zd2VyOmh0dHA6Ly9zY2hlbWFzLmRhdGFjb250cmFj dC5vcmcvMjAwNC8wNy9NaWNyb3NvZnQuT2ZmaWNlT25saW5lLlJlbmRlcmluZy5G ZWVkYmFjayIpOw0KTWljcm9zb2Z0Lk9mZmljZU9ubGluZS5SZW5kZXJpbmcuRmVl ZGJhY2suVGV4dFF1ZXN0aW9uQW5zd2VyLnJlZ2lzdGVyQ2xhc3MoJ01pY3Jvc29m dC5PZmZpY2VPbmxpbmUuUmVuZGVyaW5nLkZlZWRiYWNrLlRleHRRdWVzdGlvbkFu c3dlcicpOw0KfQ0KaWYgKHR5cGVvZihNc25BdXRoVG9rZW4pID09PSAndW5kZWZp bmVkJykgew0KdmFyIE1zbkF1dGhUb2tlbj1ndGMoIk1zbkF1dGhUb2tlbiIpOw0K TXNuQXV0aFRva2VuLnJlZ2lzdGVyQ2xhc3MoJ01zbkF1dGhUb2tlbicpOw0KfQ0K VHlwZS5yZWdpc3Rlck5hbWVzcGFjZSgnTWljcm9zb2Z0Lk9mZmljZU9ubGluZS5S ZW5kZXJpbmcuTG9nZ2luZycpOw0KaWYgKHR5cGVvZihNaWNyb3NvZnQuT2ZmaWNl T25saW5lLlJlbmRlcmluZy5Mb2dnaW5nLkNUVCkgPT09ICd1bmRlZmluZWQnKSB7 DQpNaWNyb3NvZnQuT2ZmaWNlT25saW5lLlJlbmRlcmluZy5Mb2dnaW5nLkNUVCA9 IGZ1bmN0aW9uKCkgeyB0aHJvdyBFcnJvci5pbnZhbGlkT3BlcmF0aW9uKCk7IH0N Ck1pY3Jvc29mdC5PZmZpY2VPbmxpbmUuUmVuZGVyaW5nLkxvZ2dpbmcuQ1RULnBy b3RvdHlwZSA9IHtNaW5pbXVtOiAwLFVuSW5pdGlhbGl6ZWQ6IDAsU2VhcmNoOiAx LFNwb3RsaWdodDogMixSZWxhdGVkTGluazogMyxDYXRlZ29yeTogNCxJbkNvbnRl bnQ6IDUsTmF2aWdhdGlvbjogNixGcm9tRXh0ZXJuYWw6IDgsVG9FeHRlcm5hbDog OSxNZXNzYWdlOiAxMCxGcm9tQ0hNOiAxMSxNZWRpYVNlYXJjaDogMTIsUHJpbnRl ckZyaWVuZGx5OiAxMyxFbWFpbEFzc2V0VG9GcmllbmQ6IDQxLEVtYWlsQ2xpY2tG cm9tUmVjZWl2ZWRNYWlsOiA0MixSZWxhdGVkQXNzZXRBbGxRdWVyeTogNTEsUmVs YXRlZEFzc2V0RGlyZWN0UXVlcnk6IDUyLFJlbGF0ZWRBc3NldFNwb3RsaWdodFF1 ZXJ5OiA1MyxUZW1wbGF0ZURvd25sb2FkOiA3MSxHb1RvTWFya2V0cGxhY2VQYXJ0 bmVyOiA3MixDSUZEb3dubG9hZDogNzMsTVBGRG93bmxvYWQ6IDc0LEVNVHJhdmVy c2FsOiA3NSxPdGhlck1lZGlhRG93bmxvYWQ6IDc2LENvcHlQYXN0ZURvd25sb2Fk OiA3NyxDb25uZWN0ZWRHYWxsZXJpZXNVc2U6IDgwLENvbm5lY3RlZEdhbGxlcmll c0Rvd25sb2FkOiA4MSxMZWZ0TmF2OiA5NixUb3BOYXY6IDk3LElnbm9yZTogOTgs VW5rbm93bjogOTksQ2xpZW50OiAxMDAsV2ViQXR0cmlidXRpb246IDEwMixDb3B5 OiAxMDMsRG93bmxvYWQ6IDEwNCxBZGRSZW1vdmVDbGlwOiAxMDUsUHJldmlldzog MTA2LFBhZ2luZzogMTA3LFNlZVNpbWlsYXI6IDEwOCxLZXl3b3JkQ2xvdWQ6IDEw OSxFeHBhbmRhYmxlTGVmdE5hdjogMTEwLFNvcnQ6IDExMSxOdW1PblBhZ2U6IDEx MixGaWx0ZXI6IDExMyxGb290ZXI6IDExNCxGcm9tUlNTR2VuZXJhbDogMTQwLEZy b21SU1NQcm9maWxlOiAxNDEsRm91bmRJbkNvbGxlY3Rpb25MaW5rOiAxNTAsU2Vl QWxsRm91bmRJbkNvbGxlY3Rpb246IDE1MSxQcm92aWRlckV4dGVybmFsTGluazog MTUyLFdvcmxkd2lkZVBhZ2VSZXNvdXJjZUxpbms6IDE1MyxXb3JsZHdpZGVQYWdl TWFya2V0TGluazogMTU0LE1hcmtldFRvZ2dsZVJlZ2lvbjogMTU1LE1hcmtldFRv Z2dsZVR3b0xhbmd1YWdlTWFya2V0OiAxNTYsTWFya2V0VG9nZ2xlTWFueUxhbmd1 YWdlTWFya2V0OiAxNTcsQ29udGVzdFZvdGU6IDE1OCxVbnNhdmVkQ29sbGVjdGlv bkRvd25sb2FkOiAxODAsU2F2ZWRDb2xsZWN0aW9uRG93bmxvYWQ6IDE4MSxTaGFy ZWRDb2xsZWN0aW9uRG93bmxvYWQ6IDE4MixDb2xsZWN0aW9uVGVtcGxhdGVEb3du bG9hZDogMTgzLENvbGxlY3Rpb25DbGlwYXJ0RG93bmxvYWQ6IDE4NCxDb2xsZWN0 aW9uU3VwcG9ydERvd25sb2FkOiAxODUsQ29sbGVjdGlvbkNsZWFyOiAxODYsQ29s bGVjdGlvblNhdmU6IDE4NyxDb2xsZWN0aW9uRGVsZXRlOiAxODgsQ29sbGVjdGlv blNoYXJlOiAxODksQ29sbGVjdGlvbk1ha2VQcml2YXRlOiAxOTAsQWRkVG9VbnNh dmVkQ29sbGVjdGlvbjogMTkxLEFkZFRvU2F2ZWRDb2xsZWN0aW9uOiAxOTIsQWRk VG9TaGFyZWRDb2xsZWN0aW9uOiAxOTMsUmVtb3ZlRnJvbVVuc2F2ZWRDb2xsZWN0 aW9uOiAxOTQsUmVtb3ZlRnJvbVNhdmVkQ29sbGVjdGlvbjogMTk1LFJlbW92ZUZy b21TaGFyZWRDb2xsZWN0aW9uOiAxOTYsQ29sbGVjdGlvblZpZXdMaW5rOiAxOTcs VmlkZW9WaWV3OiAxOTgsU2VhcmNoUmVzdWx0c01vcmVNYXJrZXRzOiAxOTksU2Vh cmNoUmVzdWx0c01vcmVSZXN1bHRzOiAyMDAsRmlsdGVyc0V4cGFuZDogMjAxLEZp bHRlcnNDb2xsYXBzZTogMjAyLEZpbHRlcnNBcHBEZXRlY3Q6IDIwMyxEaXJlY3RE b3dubG9hZDogMjA0LENsaWVudFRvcE5hdjogMjA1LFNoYXJlcG9pbnQ6IDIwNixN YWNDbGllbnQ6IDIwNyxXQUNDbGllbnQ6IDIwOCxTaWx2ZXJsaWdodEZyb21XZWI6 IDIwOSxTaWx2ZXJsaWdodEZyb21DbGllbnQ6IDIxMCxNYXhpbXVtOiAyMTB9DQpN aWNyb3NvZnQuT2ZmaWNlT25saW5lLlJlbmRlcmluZy5Mb2dnaW5nLkNUVC5yZWdp c3RlckVudW0oJ01pY3Jvc29mdC5PZmZpY2VPbmxpbmUuUmVuZGVyaW5nLkxvZ2dp bmcuQ1RUJywgdHJ1ZSk7DQp9DQo= ------------AwZAEu8L0Fx8UXBllPLKFH Content-Disposition: inline; filename=oo.js Content-Type: application/x-javascript; name=oo.js Content-Location: http://officeimg.vo.msecnd.net/_layouts/oo.js?b=5567%2E4000 Content-Transfer-Encoding: Base64 ZnVuY3Rpb24gVUxTMXloKCl7dmFyIG89bmV3IE9iamVjdDtvLlVMU1RlYW1OYW1l PSJPZmZpY2UgT25saW5lIENvcmUgQ29kZSI7by5VTFNGaWxlTmFtZT0ib28uanMi O3JldHVybiBvO30NClR5cGUucmVnaXN0ZXJOYW1lc3BhY2UoIk9PQyIpO3RyeXt3 aW5kb3cub3JpZ2luYWxBbGVydD13aW5kb3cuYWxlcnQ7d2luZG93LmFsZXJ0PWZ1 bmN0aW9uKGEpe1VMUzF5aDo7aWYoIWEpYT0iIjt3aW5kb3cub3JpZ2luYWxBbGVy dChhKX19Y2F0Y2goZSl7YWxlcnQoIlVuYWJsZSB0byBvdmVycmlkZSB3aW5kb3cu YWxlcnQoKS5cbiIrZSl9ZnVuY3Rpb24gYXNuZnJtKCl7VUxTMXloOjt2YXIgYT0k KCJmb3JtW25hbWU9J2FzcG5ldEZvcm0nXSIpO2lmKGEuc2l6ZSgpKXdpbmRvdy50 aGVGb3JtPWFbMF07ZWxzZSBhbGVydCgiQVNQLk5FVCBmb3JtIG5vdCBmb3VuZCEi KX13aW5kb3cub25lcnJvcj1SZXBvcnRTY3JpcHRFcnJvcjtmdW5jdGlvbiBIaWRl U2NyaXB0RXJyb3IoKXtVTFMxeWg6O3JldHVybiB0cnVlfWZ1bmN0aW9uIExvZ1Np bHZlcmxpZ2h0RXZlbnQoYixkKXtVTFMxeWg6O3RyeXt2YXIgYz1TdHJpbmcuZm9y bWF0KCIvdWxzL3JlcG9ydHNjcmlwdGVycm9yLmFzcHg/U291cmNlPXswfSZFcnJv cj17MX0mVHJhY2U9ezJ9JkJyb3dzZXI9ezN9Iixlc2NhcGUoIlNMIHBsdWdpbjog IitiKyIgYXQ6ICIrd2luZG93LmxvY2F0aW9uKSxlc2NhcGUoZCksIm5vbmUiLGVz Y2FwZShuYXZpZ2F0b3IudXNlckFnZW50KSksYT1uZXcgSW1hZ2U7YS5zcmM9Y31j YXRjaChlKXt9fWZ1bmN0aW9uIFJlcG9ydFNjcmlwdEVycm9yKGIsYyxhKXtVTFMx eWg6O3RyeXtpZighYiliPSJVbmRlZmluZWQgZXJyb3IuIjtpZighYyljPWRvY3Vt ZW50LmxvY2F0aW9uLmhyZWY7aWYoIWEpYT0wO3dpbmRvdy5vbmVycm9yPUhpZGVT Y3JpcHRFcnJvcjt2YXIgZD1TdHJpbmcuZm9ybWF0KCJMaW5lOiB7MH0sIEVycm9y OiB7MX0iLGEsYiksZj1TdHJpbmcuZm9ybWF0KCIvdWxzL3JlcG9ydHNjcmlwdGVy cm9yLmFzcHg/U291cmNlPXswfSZFcnJvcj17MX0mVHJhY2U9ezJ9JkJyb3dzZXI9 ezN9Iixlc2NhcGUod2luZG93LmxvY2F0aW9uKSxlc2NhcGUoZCksZXNjYXBlKEdl dFN0YWNrVHJhY2UoKSksZXNjYXBlKG5hdmlnYXRvci51c2VyQWdlbnQpKSxlPW5l dyBJbWFnZTtlLnNyYz1mfWNhdGNoKGcpe31yZXR1cm4gdHJ1ZX1mdW5jdGlvbiBH ZXRTdGFja1RyYWNlKCl7VUxTMXloOjt2YXIgYTtpZihhcmd1bWVudHMuY2FsbGVy JiZhcmd1bWVudHMuY2FsbGVyLmNhbGxlcilhPWFyZ3VtZW50cy5jYWxsZXIuY2Fs bGVyO2lmKCFhKXJldHVybiAiVW5rbm93bkZ1bmN0aW9uIjt2YXIgYz0iIjt3aGls ZShhIT1udWxsJiZhLmNhbGxlZSE9bnVsbCYmYS5jYWxsZXIhPWEpe3ZhciBiPWEu Y2FsbGVlLnRvU3RyaW5nKCk7Yj1iLnN1YnN0cmluZyg5LGIuaW5kZXhPZigiKSIp KzEpO2MrPWIrIjsgIjthPWEuY2FsbGVyfXJldHVybiBjfSh0eXBlb2YgRnVuY3Rp b249PT0idW5kZWZpbmVkInx8dHlwZW9mIFN5cz09PSJ1bmRlZmluZWQiKSYmUmVw b3J0U2NyaXB0RXJyb3IoIk1pY3Jvc29mdEFqYXggaGFzIGZhaWxlZCB0byBsb2Fk LiIpOyh0eXBlb2YgalF1ZXJ5PT09InVuZGVmaW5lZCJ8fHR5cGVvZiAkPT09InVu ZGVmaW5lZCIpJiZSZXBvcnRTY3JpcHRFcnJvcigialF1ZXJ5IGhhcyBmYWlsZWQg dG8gbG9hZC4iKTt0eXBlb2YgT09VST09PSJ1bmRlZmluZWQiJiZSZXBvcnRTY3Jp cHRFcnJvcigiR2xvYmFsIEpzb25TdHJpbmdzIGhhcyBmYWlsZWQgdG8gbG9hZC4i KTsodHlwZW9mIE1pY3Jvc29mdD09PSJ1bmRlZmluZWQifHx0eXBlb2YgR2xvYmFs U3ZjPT09InVuZGVmaW5lZCIpJiZsb2NhdGlvbi5wcm90b2NvbCE9Imh0dHBzOiIm JlJlcG9ydFNjcmlwdEVycm9yKCJHbG9iYWxTdmMgaGFzIGZhaWxlZCB0byBsb2Fk LiIpOyQoZnVuY3Rpb24oKXtVTFMxeWg6O2RvY3VtZW50LndyaXRlPWZ1bmN0aW9u KCl7VUxTMXloOjtmb3IodmFyIGE9MDthPGFyZ3VtZW50cy5sZW5ndGg7YSsrKSQo ImJvZHkiKS5hcHBlbmQoYXJndW1lbnRzW2FdKX19KTtmdW5jdGlvbiBHZXRYbWxI dHRwKCl7VUxTMXloOjt2YXIgYT1mYWxzZTtpZih3aW5kb3cuWE1MSHR0cFJlcXVl c3QpYT1uZXcgWE1MSHR0cFJlcXVlc3Q7ZWxzZSBpZih3aW5kb3cuQWN0aXZlWE9i amVjdClhPW5ldyBBY3RpdmVYT2JqZWN0KCJNaWNyb3NvZnQuWE1MSFRUUCIpO3Jl dHVybiBhfU9PQy5Bc3NldElkPWZ1bmN0aW9uKGMpe1VMUzF5aDo7dmFyIGI9bnVs bCxhPXRoaXM7YS5uQXNzZXRUeXBlTGVuZ3RoPTI7YS5uTnVtZXJpY0xlbmd0aD05 O2EubkFzc2V0SWRMZW5ndGg9YS5uQXNzZXRUeXBlTGVuZ3RoK2Eubk51bWVyaWNM ZW5ndGg7YS5zdHJBc3NldElkPWM/alF1ZXJ5LnRyaW0oYyk6YjthLnN0ckFzc2V0 VHlwZT1iO2Euc3RyTnVtZXJpY0Fzc2V0SWQ9YjthLlN0cj1iO2EuaW5pdGlhbGl6 ZSgpfTtPT0MuQXNzZXRJZC5wcm90b3R5cGU9e2luaXRpYWxpemU6ZnVuY3Rpb24o KXtVTFMxeWg6O3ZhciBhPXRoaXM7aWYoYS5zdHJBc3NldElkJiZhLnN0ckFzc2V0 SWQubGVuZ3RoPT1hLm5Bc3NldElkTGVuZ3RoKXthLnN0ckFzc2V0VHlwZT1hLnN0 ckFzc2V0SWQuc3Vic3RyKDAsYS5uQXNzZXRUeXBlTGVuZ3RoKTthLnN0ck51bWVy aWNBc3NldElkPWEuc3RyQXNzZXRJZC5zdWJzdHIoYS5uQXNzZXRUeXBlTGVuZ3Ro KTthLlN0cj1hLlZhbGlkYXRlKCk/YS5zdHJBc3NldElkOm51bGx9fSxBaUZyb21T dHI6ZnVuY3Rpb24oYil7VUxTMXloOjt2YXIgYT10aGlzLGM9bnVsbDtpZihiKXth LnN0ckFzc2V0SWQ9alF1ZXJ5LnRyaW0oYik7YS5pbml0aWFsaXplKCk7aWYoYS5W YWxpZGF0ZSgpKXtjPW5ldyBPT0MuQXNzZXRJZChhLnN0ckFzc2V0VHlwZSthLnN0 ck51bWVyaWNBc3NldElkKTthLnN0ckFzc2V0SWQ9YS5zdHJBc3NldFR5cGU9YS5z dHJOdW1lcmljQXNzZXRJZD1hLlN0cj1udWxsfX1yZXR1cm4gY30sQWlGcm9tUGFy dHM6ZnVuY3Rpb24oYyxiKXtVTFMxeWg6O3ZhciBhPXRoaXMsZD1udWxsO2lmKGMm JmIpe2Euc3RyQXNzZXRUeXBlPWM7YS5zdHJOdW1lcmljQXNzZXRJZD1iO2lmKGEu VmFsaWRhdGUoKSl7ZD1uZXcgT09DLkFzc2V0SWQoYS5zdHJBc3NldFR5cGUrYS5z dHJOdW1lcmljQXNzZXRJZCk7YS5zdHJBc3NldElkPWEuc3RyQXNzZXRUeXBlPWEu c3RyTnVtZXJpY0Fzc2V0SWQ9YS5TdHI9bnVsbH19cmV0dXJuIGR9LFZhbGlkYXRl OmZ1bmN0aW9uKCl7VUxTMXloOjt2YXIgYT10aGlzO2lmKCFhLnN0ckFzc2V0SWR8 fCFhLnN0ckFzc2V0VHlwZXx8IWEuc3RyTnVtZXJpY0Fzc2V0SWQpcmV0dXJuIGZh bHNlO3JldHVybiAhT09VdGlsLklzTnVtZXJpYyhhLnN0ckFzc2V0VHlwZSkmJk9P VXRpbC5Jc051bWVyaWMoYS5zdHJOdW1lcmljQXNzZXRJZCkmJmEuc3RyQXNzZXRU eXBlLmxlbmd0aD09YS5uQXNzZXRUeXBlTGVuZ3RoJiZhLnN0ck51bWVyaWNBc3Nl dElkLmxlbmd0aD09YS5uTnVtZXJpY0xlbmd0aH0sZGlzcG9zZTpmdW5jdGlvbigp e1VMUzF5aDo7dmFyIGE9dGhpczthLnN0ckFzc2V0SWQ9YS5zdHJBc3NldFR5cGU9 YS5zdHJOdW1lcmljQXNzZXRJZD1hLlN0cj1udWxsfX07T09DLkFzc2V0SWQucmVn aXN0ZXJDbGFzcygiT09DLkFzc2V0SWQiLFN5cy5Db21wb25lbnQpO3ZhciBBc3Nl dElkPW5ldyBPT0MuQXNzZXRJZDtmdW5jdGlvbiBkY3NPTygpe1VMUzF5aDo7dmFy IGE9InVuZGVmaW5lZCI7aWYodHlwZW9mIFdlYlRyZW5kcz09PWEpcmV0dXJuO2lm KHR5cGVvZiB3aW5kb3cuV2ViVHJlbmRzSW1wbD09PWF8fCF3aW5kb3cuV2ViVHJl bmRzSW1wbCl3aW5kb3cuV2ViVHJlbmRzSW1wbD1uZXcgV2ViVHJlbmRzO2Vsc2Ug d2luZG93LldlYlRyZW5kc0ltcGwuZGNzQ2xlYW5VcCgpO2lmKGFyZ3VtZW50cy5s ZW5ndGg9PTApe3dpbmRvdy5XZWJUcmVuZHNJbXBsLmRjc0dldElkKCk7d2luZG93 LldlYlRyZW5kc0ltcGwuZGNzQ29sbGVjdCgpfWVsc2V7d2luZG93LldlYlRyZW5k c0ltcGwuZGNzVmFyKCk7d2luZG93LldlYlRyZW5kc0ltcGwuZGNzTWV0YSgpO3dp bmRvdy5XZWJUcmVuZHNJbXBsLmRjc0FkdigpO3dpbmRvdy5XZWJUcmVuZHNJbXBs LmRjc01TQ2xlYXJWYXJzKCk7d2luZG93LldlYlRyZW5kc0ltcGwuZGNzTXVsdGlU cmFjay5hcHBseSh3aW5kb3cuV2ViVHJlbmRzSW1wbCxhcmd1bWVudHMpfX1mdW5j dGlvbiBHKGEpe1VMUzF5aDo7aWYoYSYmdHlwZW9mIGE9PSJzdHJpbmciKWE9ZG9j dW1lbnQuZ2V0RWxlbWVudEJ5SWQ/ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYSk6 bnVsbDtyZXR1cm4gYSYmdHlwZW9mIGE9PSJvYmplY3QiP2E6bnVsbH1mdW5jdGlv biBHUyhhKXtVTFMxeWg6O2E9RyhhKTtyZXR1cm4gYT9hLnN0eWxlOm51bGx9ZnVu Y3Rpb24gU3RyR2V0RGlzcGxheShhKXtVTFMxeWg6O2E9R1MoYSk7cmV0dXJuIGE/ YS5kaXNwbGF5OiIifWZ1bmN0aW9uIFNEc3BseShhLGIpe1VMUzF5aDo7YT1HUyhh KTtpZihhKWEuZGlzcGxheT1ifWZ1bmN0aW9uIFNEc3BseUgoYSl7VUxTMXloOjtT RHNwbHkoYSwibm9uZSIpfWZ1bmN0aW9uIFNEc3BseVMoYSl7VUxTMXloOjtTRHNw bHkoYSwiIil9ZnVuY3Rpb24gVERzcGx5KGIsYSl7VUxTMXloOjtTRHNwbHkoYixT dHJHZXREaXNwbGF5KGIpPT1hPyJub25lIjphKX1mdW5jdGlvbiBGVmlzKGEpe1VM UzF5aDo7cmV0dXJuIFN0ckdldERpc3BsYXkoYSkhPSJub25lIn1mdW5jdGlvbiBT V2R0aChhLGIpe1VMUzF5aDo7YT1HUyhhKTtpZihhKWEud2lkdGg9Yn1mdW5jdGlv biBTV2R0aE5GKGEpe1VMUzF5aDo7U1dkdGgoYSwiMTAwJSIpfWZ1bmN0aW9uIFRE QihhKXtVTFMxeWg6O1REc3BseShhLCJibG9jayIpO3JldHVybiBmYWxzZX1mdW5j dGlvbiBGU0NsayhhKXtVTFMxeWg6O3JldHVybiBhJiZhLmJ1dHRvbjw9MSYmYS5z aGlmdEtleX1mdW5jdGlvbiBGU0VudChhKXtVTFMxeWg6O3JldHVybiBhJiZhLmtl eUNvZGU9PTEzJiZhLnNoaWZ0S2V5fWZ1bmN0aW9uIEdIbHAoYil7VUxTMXloOjt2 YXIgYT13aW5kb3cubmF2aWdhdG9yLmFwcE5hbWUudG9VcHBlckNhc2UoKS5pbmRl eE9mKCJORVRTQ0FQRSIpPj0wPyIsc2Nyb2xsYmFycz0xIjoiIjt3aW5kb3cub3Bl bihiLCJfaGxwMDExIiwidG9vbGJhcj0wLHN0YXR1cz0wLG1lbnViYXI9MCIrYSsi LHJlc2l6YWJsZT0xLHdpZHRoPTI2MCxoZWlnaHQ9IitNYXRoLnJvdW5kKHdpbmRv dy5zY3JlZW4uYXZhaWxIZWlnaHQqMi8zKSk7cmV0dXJuIGZhbHNlfWZ1bmN0aW9u IENvbnZlcnRBcHBDb2RlVG9BY3RpdmVYQ29tcGF0aWJsZShhKXtVTFMxeWg6O2lm KHR5cGVvZiBhPT09InVuZGVmaW5lZCJ8fGE9PW51bGwpcmV0dXJuIG51bGw7aWYo YS5sZW5ndGg9PT0zJiZhLmNoYXJBdCgwKT09PSJaIilhPWEuc3Vic3RyaW5nKDEs Myk7aWYoYT09PSJJUCIpYT0iWEQiO2Vsc2UgaWYoYT09PSJTUEQiKWE9IlNEUiI7 cmV0dXJuIGF9ZnVuY3Rpb24gQ1ZEZXRlY3RBcHBsaWNhdGlvbnMoYSl7VUxTMXlo Ojt2YXIgYj1HZXRDb29raWUoIl9vZmNhcHAiLG51bGwpO2lmKGImJmIuaW5kZXhP ZigiMTQwIik+PTApcmV0dXJuIGZhbHNlO3ZhciBjPU9PVXRpbC5TY3JpcHRSZWZl cmVuY2UoT09VSS5BeENvbnRyb2xzSnNVcmwrIiZyZXF2ZXI9MCIsZnVuY3Rpb24o KXtVTFMxeWg6O3ZhciBiPSJ1bmRlZmluZWQiO2lmKHR5cGVvZiBEQ1RSTD09PWJ8 fHR5cGVvZiBEQ1RSTC5HZXRJbnN0YWxsZWRWZXJzaW9uPT09YilyZXR1cm4gZmFs c2U7aWYodHlwZW9mIGEhPWImJmEpe2Zvcih2YXIgZT1bXSxnPVtdLGQsaD0wO2g8 YS5hdnMubGVuZ3RoO2grKyl7ZD1hLmF2c1toXS5zdWJzdHJpbmcoMCwzKTtqUXVl cnkuaW5BcnJheShkLGUpPDAmJmUucHVzaChkKX1mb3IodmFyIGY9MDtmPGUubGVu Z3RoO2YrKyl7ZD1Db252ZXJ0QXBwQ29kZVRvQWN0aXZlWENvbXBhdGlibGUoZVtm XSk7dmFyIGM7dHJ5e2lmKHR5cGVvZiBEQ1RSTC5EZXRlY3RBcHBWZXJzaW9uIT09 YiljPURDVFJMLkRldGVjdEFwcFZlcnNpb24oZCk7ZWxzZSBjPURDVFJMLkdldElu c3RhbGxlZFZlcnNpb24oZCk7aWYodHlwZW9mIGMhPWImJiEoYz49MTAmJmM8PTE0 KSljb250aW51ZX1jYXRjaChrKXt9dmFyIGk9dHlwZW9mIGMhPWImJmMmJiFpc05h TihjKT9jLnRvU3RyaW5nKCkrIjAiOm51bGw7aSYmZy5wdXNoKGVbZl0raSl9fWlm KGcubGVuZ3RoPjApe3ZhciBqPWcuam9pbigiLSIpO1NldFBlcnNpc3RlbnRDb29r aWUoIl9vZmNhcHAiLGopfX0pO09PVXRpbC5KU0FzeW5jTG9hZGVyKGMpfXZhciBP T1V0aWw9e3JnTG9hZGVkU2NyaXB0czpbXSxuTXNUaW1lT3V0OjVlMyxzdHJSZWRp clVybDoiezB9ezF9L3JlZGlyL3syfS5hc3B4IixldnRIYXNoOltdLHN0ck9wdGlv bmFsU2VhcmNoSGFzaDpudWxsLFRpbWVyOmZ1bmN0aW9uKGEsYil7VUxTMXloOjtp Zih0eXBlb2YgYT09ImZ1bmN0aW9uIilpZihhcmd1bWVudHMmJmFyZ3VtZW50cy5s ZW5ndGg+Mil7dmFyIGQ9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1l bnRzLDIpLGM9ZnVuY3Rpb24oKXtVTFMxeWg6O2EuYXBwbHkobnVsbCxkKX07cmV0 dXJuIHdpbmRvdy5zZXRUaW1lb3V0KGMsYil9ZWxzZSByZXR1cm4gd2luZG93LnNl dFRpbWVvdXQoYSxiKTtlbHNlIGlmKHR5cGVvZiBhPT0ic3RyaW5nIilyZXR1cm4g d2luZG93LnNldFRpbWVvdXQoYSxiKX0sY3JlYXRlRWxlbWVudDpmdW5jdGlvbihj LGUsYixkKXtVTFMxeWg6O3ZhciBhO2lmKGMpdHJ5e2E9JGdldChjKTtpZihhKXJl dHVybiBhfWNhdGNoKGYpe31pZighYiliPSJkaXYiO3RyeXthPWRvY3VtZW50LmNy ZWF0ZUVsZW1lbnQoYik7aWYoYylhLmlkPWM7aWYoZClhLmNsYXNzTmFtZT1kO2lm KGI9PSJhIilhLmhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSI7ZSYmZS5hcHBlbmRD aGlsZChhKX1jYXRjaChmKXt9dHJ5e3JldHVybiBhfWZpbmFsbHl7YT1udWxsfX0s cHJldmVudERlZmF1bHRBY3Rpb246ZnVuY3Rpb24oYSl7VUxTMXloOjtpZihhKWlm KHR5cGVvZiBhLnByZXZlbnREZWZhdWx0IT0idW5kZWZpbmVkIilhLnByZXZlbnRE ZWZhdWx0KCk7ZWxzZSBhLnJldHVyblZhbHVlPWZhbHNlO3JldHVybiBmYWxzZX0s R2V0UXVlcnlTdHJpbmdBcnJheTpmdW5jdGlvbigpe1VMUzF5aDo7dmFyIGI9e30s ZT13aW5kb3cubG9jYXRpb24uc2VhcmNoLnN1YnN0cmluZygxKTtpZihlLmxlbmd0 aD4wKWZvcih2YXIgZD1lLnNwbGl0KCImIiksYz0wO2M8ZC5sZW5ndGg7YysrKXt2 YXIgYT1kW2NdLnNwbGl0KCI9Iik7aWYoYS5sZW5ndGg9PTIpYlt1bmVzY2FwZShh WzBdKV09dW5lc2NhcGUoYVsxXSk7ZWxzZSBpZihhLmxlbmd0aD09MSliW3VuZXNj YXBlKGFbMF0pXT11bmVzY2FwZShhWzBdKX1yZXR1cm4gYn0sQXBwZW5kUGFyYW1U b1VybDpmdW5jdGlvbihhLGIsYyl7VUxTMXloOjtpZihhKXthKz1hLmluZGV4T2Yo Ij8iKTwwPyI/IjoiJiI7YSs9ZXNjYXBlKGIpO2ErPSI9IjthKz1lc2NhcGUoYyl9 cmV0dXJuIGF9LFJhdkxpbmtVcmw6ZnVuY3Rpb24oYyxkKXtVTFMxeWg6O3ZhciBh PW5ldyBTeXMuU3RyaW5nQnVpbGRlcjthLmFwcGVuZChPT1VJLlJsaWRDU3hSQVYx NCk7YyYmYS5hcHBlbmQoU3RyaW5nLmZvcm1hdCgiJnEzMDY9ezB9Iixlc2NhcGUo YykpKTthLmFwcGVuZChTdHJpbmcuZm9ybWF0KCImcTMwNz17MH0iLGVzY2FwZShs b2NhdGlvbi5ocmVmKSkpO3ZhciBiPUFzc2V0SWQuQWlGcm9tU3RyKGQpO2ImJmIu c3RyQXNzZXRUeXBlJiZhLmFwcGVuZChTdHJpbmcuZm9ybWF0KCImcTMwOD17MH0i LGVzY2FwZShiLnN0ckFzc2V0VHlwZSkpKTtyZXR1cm4gYS50b1N0cmluZygpfSxS ZWRpcmVjdFVybDpmdW5jdGlvbihhLGIsZSxqLGcsZixkLGksaCl7VUxTMXloOjtp ZighYXx8IWIpcmV0dXJuIG51bGw7dmFyIGM9dHlwZW9mIGdfc3RyUmVuZGVyaW5n U2l0ZVJvb3RSZWxhdGl2ZSE9PSJ1bmRlZmluZWQiP2dfc3RyUmVuZGVyaW5nU2l0 ZVJvb3RSZWxhdGl2ZToiLyI7cmV0dXJuIFN0cmluZy5mb3JtYXQoT09VdGlsLnN0 clJlZGlyVXJsLGMsYixhKS5TdHJBZGRVbmlxdWVQYXJhbSgiQ1RUIixlKS5TdHJB ZGRVbmlxdWVQYXJhbSgiT3JpZ2luIixlbmNvZGVVUklDb21wb25lbnQoaikpLlN0 ckFkZFVuaXF1ZVBhcmFtKCJRdWVyeUlEIixnKS5TdHJBZGRVbmlxdWVQYXJhbSgi cmVzcG9zIixmKS5TdHJBZGRVbmlxdWVQYXJhbSgiaWJiIixkKS5TdHJBZGRVbmlx dWVQYXJhbSgieGMiLGkpLlN0ckFkZFVuaXF1ZVBhcmFtKCJxdSIsZW5jb2RlVVJJ Q29tcG9uZW50KGgpKX0sTmF2aWdhdGU6ZnVuY3Rpb24oYSl7VUxTMXloOjt3aW5k b3cubG9jYXRpb24uaHJlZj1hfSxnZXRTcmNFbGVtZW50OmZ1bmN0aW9uKGEpe1VM UzF5aDo7aWYoYSYmYS50YXJnZXQpcmV0dXJuIGEudGFyZ2V0O2Vsc2UgaWYoYSYm YS5zcmNFbGVtZW50KXJldHVybiBhLnNyY0VsZW1lbnQ7cmV0dXJuIG51bGx9LEdl dFBhcmVudEVsZW1lbnQ6ZnVuY3Rpb24oYSl7VUxTMXloOjtyZXR1cm4gYS5wYXJl bnRFbGVtZW50P2EucGFyZW50RWxlbWVudDphLnBhcmVudE5vZGV9LERlbGV0ZUNo aWxkcmVuOmZ1bmN0aW9uKGEpe1VMUzF5aDo7aWYoYSE9bnVsbCYmYS5jaGlsZHJl biE9bnVsbCYmYS5jaGlsZHJlbi5sZW5ndGg+MClmb3IodmFyIGI9YS5jaGlsZHJl bi5sZW5ndGg7Yj4wO2ItLSl7dmFyIGM9YS5jaGlsZHJlbltiLTFdO2EucmVtb3Zl Q2hpbGQoYyl9aWYoYSYmYS5pbm5lckhUTUwpYS5pbm5lckhUTUw9IiJ9LERlbGV0 ZUNoaWxkQnlOYW1lOmZ1bmN0aW9uKGEsZCl7VUxTMXloOjtpZihhIT1udWxsJiZh LmNoaWxkTm9kZXMhPW51bGwmJmEuY2hpbGROb2Rlcy5sZW5ndGg+MClmb3IodmFy IGM9YS5jaGlsZE5vZGVzLmxlbmd0aDtjPjA7Yy0tKXt2YXIgYj1hLmNoaWxkTm9k ZXNbYy0xXTtiJiZiLmlkPT1kJiZhLnJlbW92ZUNoaWxkKGIpfX0sRGVsZXRlTm9k ZTpmdW5jdGlvbihiKXtVTFMxeWg6O3ZhciBhPXRoaXMuR2V0UGFyZW50RWxlbWVu dChiKTthJiZhLnJlbW92ZUNoaWxkKGIpfSxHZXRDaGlsZDpmdW5jdGlvbihhLGIp e1VMUzF5aDo7aWYodHlwZW9mIGI9PSJ1bmRlZmluZWQiKWI9MDtpZihhJiZhLmNo aWxkcmVuIT1udWxsJiZhLmNoaWxkcmVuLmxlbmd0aD5iKXJldHVybiBhLmNoaWxk cmVuKGIpO3JldHVybiBudWxsfSxOb2RlQ29udGFpbnM6ZnVuY3Rpb24oYixhKXtV TFMxeWg6O3doaWxlKGEmJmIhPWEmJmEhPW51bGwpYT1hLnBhcmVudE5vZGU7cmV0 dXJuIGI9PWF9LERlbGV0ZU9wdGlvbnM6ZnVuY3Rpb24oYSl7VUxTMXloOjtpZihh KWZvcih2YXIgYj1hLm9wdGlvbnMubGVuZ3RoLTE7Yj49MDtiLS0pYS5yZW1vdmUo Yil9LEdldFZpZXdwb3J0OmZ1bmN0aW9uKCl7VUxTMXloOjt2YXIgYT17fTthLmlu bmVySGVpZ2h0PXdpbmRvdy5pbm5lckhlaWdodD93aW5kb3cuaW5uZXJIZWlnaHQt MTg6ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50JiZkb2N1bWVudC5kb2N1bWVudEVs ZW1lbnQuY2xpZW50SGVpZ2h0P2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGll bnRIZWlnaHQ6bnVsbDthLmlubmVyV2lkdGg9d2luZG93LmlubmVyV2lkdGg/d2lu ZG93LmlubmVyV2lkdGgtMTg6ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50JiZkb2N1 bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg/ZG9jdW1lbnQuZG9jdW1l bnRFbGVtZW50LmNsaWVudFdpZHRoOm51bGw7cmV0dXJuIGF9LGdldENsaWVudEJv dW5kczpmdW5jdGlvbigpe1VMUzF5aDo7dmFyIGIsYTtzd2l0Y2goU3lzLkJyb3dz ZXIuYWdlbnQpe2Nhc2UgU3lzLkJyb3dzZXIuSW50ZXJuZXRFeHBsb3JlcjpiPWRv Y3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aDthPWRvY3VtZW50LmRv Y3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ7YnJlYWs7Y2FzZSBTeXMuQnJvd3Nl ci5TYWZhcmk6Yj13aW5kb3cuaW5uZXJXaWR0aDthPXdpbmRvdy5pbm5lckhlaWdo dDticmVhaztjYXNlIFN5cy5Ccm93c2VyLk9wZXJhOmI9TWF0aC5taW4od2luZG93 LmlubmVyV2lkdGgsZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCk7YT1NYXRoLm1p bih3aW5kb3cuaW5uZXJIZWlnaHQsZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQp O2JyZWFrO2RlZmF1bHQ6Yj1NYXRoLm1pbih3aW5kb3cuaW5uZXJXaWR0aCxkb2N1 bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgpO2E9TWF0aC5taW4od2lu ZG93LmlubmVySGVpZ2h0LGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRI ZWlnaHQpfXJldHVybiBuZXcgU3lzLlVJLkJvdW5kcygwLDAsYixhKX0sR2V0U2Ny b2xsT2Zmc2V0OmZ1bmN0aW9uKCl7VUxTMXloOjt2YXIgYj0idW5kZWZpbmVkIixh PXt9O2lmKHR5cGVvZiB3aW5kb3cucGFnZVlPZmZzZXQhPWIpe2EucGFnZVhPZmZz ZXQ9d2luZG93LnBhZ2VYT2Zmc2V0O2EucGFnZVlPZmZzZXQ9d2luZG93LnBhZ2VZ T2Zmc2V0fWVsc2UgaWYoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50JiZ0eXBlb2Yg ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCE9Yil7YS5wYWdlWE9m ZnNldD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdDthLnBhZ2VZ T2Zmc2V0PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3B9cmV0dXJu IGF9LEFuaW1hdGVTY3JvbGxUbzpmdW5jdGlvbihhKXtVTFMxeWg6O3ZhciBiPSJ1 bmRlZmluZWQiO2lmKCFhKXJldHVybjtpZih0eXBlb2Ygd2luZG93LnBhZ2VZT2Zm c2V0IT1iKSQod2luZG93KS5hbmltYXRlKHtwYWdlWU9mZnNldDphfSk7ZWxzZSBk b2N1bWVudC5kb2N1bWVudEVsZW1lbnQmJnR5cGVvZiBkb2N1bWVudC5kb2N1bWVu dEVsZW1lbnQuc2Nyb2xsVG9wIT1iJiYkKGRvY3VtZW50LmRvY3VtZW50RWxlbWVu dCkuYW5pbWF0ZSh7c2Nyb2xsVG9wOmF9KX0sR2V0V2luZG93U2l6ZUFuZFNjcm9s bDpmdW5jdGlvbigpe1VMUzF5aDo7dmFyIGI9dGhpcyxhPXt9O2Eud2lkdGg9Yi5H ZXRTbWFsbGVzdE5vblplcm9OdW1iZXIoW3dpbmRvdy5pbm5uZXJXaWR0aD93aW5k b3cuaW5uZXJXaWR0aDowLGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCYmZG9jdW1l bnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoP2RvY3VtZW50LmRvY3VtZW50 RWxlbWVudC5jbGllbnRXaWR0aDowLGRvY3VtZW50LmJvZHkmJmRvY3VtZW50LmJv ZHkuY2xpZW50V2lkdGg/ZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aDowXSk7YS5o ZWlnaHQ9Yi5HZXRTbWFsbGVzdE5vblplcm9OdW1iZXIoW3dpbmRvdy5pbm5uZXJI ZWlnaHQ/d2luZG93Lmlubm5lckhlaWdodDowLGRvY3VtZW50LmRvY3VtZW50RWxl bWVudCYmZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodD9kb2N1 bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0OjAsZG9jdW1lbnQuYm9k eSYmZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQ/ZG9jdW1lbnQuYm9keS5jbGll bnRIZWlnaHQ6MF0pO2Euc2Nyb2xsWD1iLkdldFNtYWxsZXN0Tm9uWmVyb051bWJl cihbd2luZG93LnBhZ2VYT2Zmc2V0P3dpbmRvdy5wYWdlWE9mZnNldDowLGRvY3Vt ZW50LmRvY3VtZW50RWxlbWVudCYmZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNj cm9sbExlZnQ/ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQ6MCxk b2N1bWVudC5ib2R5JiZkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQ/ZG9jdW1lbnQu Ym9keS5zY3JvbGxMZWZ0OjBdKTthLnNjcm9sbFk9Yi5HZXRTbWFsbGVzdE5vblpl cm9OdW1iZXIoW3dpbmRvdy5wYWdlWU9mZnNldD93aW5kb3cucGFnZVlPZmZzZXQ6 MCxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQmJmRvY3VtZW50LmRvY3VtZW50RWxl bWVudC5zY3JvbGxUb3A/ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRv cDowLGRvY3VtZW50LmJvZHkmJmRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wP2RvY3Vt ZW50LmJvZHkuc2Nyb2xsVG9wOjBdKTthLndpZHRoU2Nyb2xsPWRvY3VtZW50LmFs bD9NYXRoLm1heChNYXRoLm1heChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQub2Zm c2V0V2lkdGgsZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFdpZHRoKSxk b2N1bWVudC5ib2R5LnNjcm9sbFdpZHRoKTpkb2N1bWVudC5ib2R5P2RvY3VtZW50 LmJvZHkuc2Nyb2xsV2lkdGg6ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9s bFdpZHRoIT0wP2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxXaWR0aDow O2EuaGVpZ2h0U2Nyb2xsPWRvY3VtZW50LmFsbD9NYXRoLm1heChNYXRoLm1heChk b2N1bWVudC5kb2N1bWVudEVsZW1lbnQub2Zmc2V0SGVpZ2h0LGRvY3VtZW50LmRv Y3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQpLGRvY3VtZW50LmJvZHkuc2Nyb2xs SGVpZ2h0KTpkb2N1bWVudC5ib2R5P2RvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0 OmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQhPTA/ZG9jdW1l bnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbEhlaWdodDowO3JldHVybiBhfSxHZXRT bWFsbGVzdE5vblplcm9OdW1iZXI6ZnVuY3Rpb24oYyl7VUxTMXloOjtmb3IodmFy IGI9MCxhPTA7YTxjLmxlbmd0aDthKyspaWYoY1thXSYmKCFifHxjW2FdPGIpKWI9 Y1thXTtyZXR1cm4gYn0sc2V0QWx0OmZ1bmN0aW9uKGEsYil7VUxTMXloOjtpZigh KGEmJmIpKXJldHVybjtpZihhLnRhZ05hbWUmJmEudGFnTmFtZS50b0xvd2VyQ2Fz ZSgpPT0iaW1nIilhLmFsdD1iO2EudGl0bGU9Yn0sR2V0RGF0ZXRpbWVOb3c6ZnVu Y3Rpb24oKXtVTFMxeWg6O3ZhciBhPW5ldyBEYXRlO3JldHVybiBhLmZvcm1hdCgi eXl5eS1NTS1kZCBISDptbTpzc1oiKX0sR2V0VGltZXN0YW1wTm93OmZ1bmN0aW9u KCl7VUxTMXloOjtyZXR1cm4gKG5ldyBEYXRlKS5nZXRUaW1lKCl9LFNlcmlhbGl6 ZTpmdW5jdGlvbihhKXtVTFMxeWg6O3JldHVybiBTeXMuU2VyaWFsaXphdGlvbi5K YXZhU2NyaXB0U2VyaWFsaXplci5zZXJpYWxpemUoYSl9LERlc2VyaWFsaXplOmZ1 bmN0aW9uKGEpe1VMUzF5aDo7cmV0dXJuIFN5cy5TZXJpYWxpemF0aW9uLkphdmFT Y3JpcHRTZXJpYWxpemVyLmRlc2VyaWFsaXplKGEpfSxGSXNSdGw6ZnVuY3Rpb24o KXtVTFMxeWg6O2lmKHR5cGVvZiBmSXNSVEwhPSJ1bmRlZmluZWQiKXJldHVybiBm SXNSVEw7dmFyIGE9JCgiYm9keSIpLmF0dHIoImRpciIpO2lmKGEhPW51bGwmJmEu dG9Mb3dlckNhc2UoKT09InJ0bCIpcmV0dXJuIHRydWU7dmFyIGI9JCgiaHRtbCIp LmF0dHIoImRpciIpO2lmKGIhPW51bGwmJmIudG9Mb3dlckNhc2UoKT09InJ0bCIp cmV0dXJuIHRydWU7cmV0dXJuIGZhbHNlfSxEaXI6ZnVuY3Rpb24oKXtVTFMxeWg6 O2lmKHRoaXMuRklzUnRsKCkpcmV0dXJuICJydGwiO2Vsc2UgcmV0dXJuICJsdHIi fSxHZXRUcnVzdExldmVsQ29va2llOmZ1bmN0aW9uKCl7VUxTMXloOjt2YXIgYT1H ZXRDb29raWUoIkFXU19UcnVzdExldmVsIiwiMSIpO2lmKE9PVXRpbC5Jc051bWVy aWMoYSkpcmV0dXJuIHBhcnNlSW50KGEpfSxTZXRUcnVzdExldmVsQ29va2llOmZ1 bmN0aW9uKGEpe1VMUzF5aDo7U2V0UGVyc2lzdGVudENvb2tpZSgiQVdTX1RydXN0 TGV2ZWwiLGEpfSxHZW5lcmF0ZUd1aWQ6ZnVuY3Rpb24oKXtVTFMxeWg6O3ZhciBi LGMsYTtiPSIiO2ZvcihhPTA7YTwzMjthKyspe2lmKGE9PTh8fGE9PTEyfHxhPT0x Nnx8YT09MjApYis9Ii0iO2M9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjE2KS50 b1N0cmluZygxNikudG9VcHBlckNhc2UoKTtiKz1jfXJldHVybiBifSxHZXRGaWxl RnJvbVVybDpmdW5jdGlvbigpe1VMUzF5aDo7cmV0dXJuIHdpbmRvdy5sb2NhdGlv bi5ocmVmLnN1YnN0cmluZyh3aW5kb3cubG9jYXRpb24uaHJlZi5sYXN0SW5kZXhP ZigiLyIpKzEpfSxGSXNCcm93c2VySUU5OmZ1bmN0aW9uKCl7VUxTMXloOjtyZXR1 cm4gZG9jdW1lbnQuZG9jdW1lbnRNb2RlJiZkb2N1bWVudC5kb2N1bWVudE1vZGU9 PTl9LEZJc0Jyb3dzZXJJRTg6ZnVuY3Rpb24oKXtVTFMxeWg6O3JldHVybiBkb2N1 bWVudC5kb2N1bWVudE1vZGUmJmRvY3VtZW50LmRvY3VtZW50TW9kZT09OH0sRklz QnJvd3NlcklFUXVpcmtzOmZ1bmN0aW9uKCl7VUxTMXloOjtyZXR1cm4gU3lzLkJy b3dzZXIuYWdlbnQ9PVN5cy5Ccm93c2VyLkludGVybmV0RXhwbG9yZXImJlN5cy5C cm93c2VyLnZlcnNpb249PTZ8fGRvY3VtZW50LmRvY3VtZW50TW9kZSYmZG9jdW1l bnQuZG9jdW1lbnRNb2RlPT01fSxJc051bWVyaWM6ZnVuY3Rpb24oYSl7VUxTMXlo OjtyZXR1cm4gIWlzTmFOKHBhcnNlSW50KGEpKX0sSW50VmFsaWRhdGU6ZnVuY3Rp b24oYSxiKXtVTFMxeWg6O3JldHVybiBPT1V0aWwuSXNOdW1lcmljKGEpP3BhcnNl SW50KGEpOmJ9LEFzc2V0SWRWYWxpZGF0ZTpmdW5jdGlvbihiLGEpe1VMUzF5aDo7 YWk9QXNzZXRJZC5BaUZyb21TdHIoYik7cmV0dXJuIGFpJiZhaS5TdHI/YWkuU3Ry OmF9LEFycmF5VmFsaWRhdGU6ZnVuY3Rpb24oYyxnLGUsaSl7VUxTMXloOjt2YXIg ZD0ic3RyaW5nIixoPSJ1bmRlZmluZWQiLGEsZj10cnVlO2lmKHR5cGVvZiBjPT09 aHx8dHlwZW9mIGU9PT1ofHxjPT1udWxsfHxlPT1udWxsKXJldHVybiBudWxsO2lm KHR5cGVvZiBjPT09ZCYmZylhPWMuc3BsaXQoZyk7ZWxzZSBpZih0eXBlb2YgYz09 PSJvYmplY3QiKWE9Yztmb3IodmFyIGI9MDtiPGEubGVuZ3RoO2IrKyl7aWYoZT09 PSJudW1iZXIiKWlmKE9PVXRpbC5Jc051bWVyaWMoYVtiXSkpYVtiXT1wYXJzZUlu dChhW2JdKTtlbHNle2Y9ZmFsc2U7YnJlYWt9aWYoZT09PWQpaWYodHlwZW9mIGFb Yl09PT1kKWFbYl09PT1PT1V0aWwuSHRtbEVuY29kZShhW2JdKTtlbHNle2Y9ZmFs c2U7YnJlYWt9fXJldHVybiBmP3R5cGVvZiBjPT09ZD9hLmpvaW4oZyk6YTppfSxI dG1sRW5jb2RlOmZ1bmN0aW9uKGEpe1VMUzF5aDo7aWYoYT09bnVsbClyZXR1cm4g bnVsbDtyZXR1cm4gYS5yZXBsYWNlKC8mL2csIiZhbXA7IikucmVwbGFjZSgvPC9n LCImbHQ7IikucmVwbGFjZSgvPi9nLCImZ3Q7Iil9LEh0bWxEZWNvZGU6ZnVuY3Rp b24oYSl7VUxTMXloOjtpZihhPT1udWxsKXJldHVybiBudWxsO3JldHVybiBhLnJl cGxhY2UoLyZhbXA7L2csIiYiKS5yZXBsYWNlKC8mbHQ7L2csIjwiKS5yZXBsYWNl KC8mZ3Q7L2csIj4iKX0sWmVyb1BhZDpmdW5jdGlvbihhLGQsYil7VUxTMXloOjti PXR5cGVvZiBiIT0idW5kZWZpbmVkIj9iOmZhbHNlO2Zvcih2YXIgYz1hLmxlbmd0 aDtjPGQ7YysrKWE9Yj8iMCIrYTphKyIwIjtyZXR1cm4gYX0sRXZlbnRIYW5kbGVy OmZ1bmN0aW9uKGEpe1VMUzF5aDo7cmV0dXJuIG5ldyBmdW5jdGlvbigpe1VMUzF5 aDo7dmFyIGM9bnVsbCxkPSJ7Zm5LRVk6OiIsYj0idW5kZWZpbmVkIjt0aGlzLmFk ZEV2ZW50PWZ1bmN0aW9uKGUsaCxpKXtVTFMxeWg6O3ZhciBnPSJtb3VzZW91dCIs Zj0ibW91c2VvdmVyIjtpZih0eXBlb2YgYS5hZGRFdmVudExpc3RlbmVyIT1iKWlm KGU9PT0ibW91c2VlbnRlciIpYS5hZGRFdmVudExpc3RlbmVyKGYsT09VdGlsLm1v dXNlRW50ZXIoaCksaSk7ZWxzZSBpZihlPT09Im1vdXNlbGVhdmUiKWEuYWRkRXZl bnRMaXN0ZW5lcihnLE9PVXRpbC5tb3VzZUVudGVyKGgpLGkpO2Vsc2UgYS5hZGRF dmVudExpc3RlbmVyKGUsaCxpKTtlbHNlIGlmKHR5cGVvZiBhLmF0dGFjaEV2ZW50 IT1iKXt2YXIgaz1kK2EudW5pcXVlSUQrIjoiK2UrIjoiK2grIn0iLGw9T09VdGls LmV2dEhhc2hba107aWYodHlwZW9mIGwhPWIpcmV0dXJuO3ZhciBqPWZ1bmN0aW9u KGIpe1VMUzF5aDo7Yi50YXJnZXQ9Yi5zcmNFbGVtZW50O2lmKGU9PWYpYi5yZWxh dGVkVGFyZ2V0PWIuZnJvbUVsZW1lbnQ7ZWxzZSBpZihlPT1nKWIucmVsYXRlZFRh cmdldD1iLnRvRWxlbWVudDtoLmNhbGwoYSxiKTtiLnRhcmdldD1jO2IucmVsYXRl ZFRhcmdldD1jfTtPT1V0aWwuZXZ0SGFzaFtrXT1qOyRhZGRIYW5kbGVyKGEsZSxq KTt3aW5kb3cuYXR0YWNoRXZlbnQoIm9udW5sb2FkIixmdW5jdGlvbigpe1VMUzF5 aDo7JHJlbW92ZUhhbmRsZXIoYSxlLGopfSk7az1jfX07dGhpcy5yZW1vdmVFdmVu dD1mdW5jdGlvbihmLGgsaSl7VUxTMXloOjtpZih0eXBlb2YgYS5yZW1vdmVFdmVu dExpc3RlbmVyIT1iKWEucmVtb3ZlRXZlbnRMaXN0ZW5lcihmLGgsaSk7ZWxzZSBp Zih0eXBlb2YgYS5kZXRhY2hFdmVudCE9Yil7dmFyIGc9ZCthLnVuaXF1ZUlEKyI6 IitmKyI6IitoKyJ9IixlPU9PVXRpbC5ldnRIYXNoW2ddO2lmKHR5cGVvZiBlIT1i KXskcmVtb3ZlSGFuZGxlcihhLGYsZSk7ZGVsZXRlIE9PVXRpbC5ldnRIYXNoW2dd fWc9YztlPWN9fX19LEZvY3VzQW5kU2V0Q3Vyc29yVG9FbmQ6ZnVuY3Rpb24oYSl7 VUxTMXloOjtpZighYSlyZXR1cm47dmFyIGI9MDtpZihhLnZhbHVlKWI9YS52YWx1 ZS5sZW5ndGg7YS5mb2N1cygpO2lmKGEuY3JlYXRlVGV4dFJhbmdlKXt2YXIgYz1h LmNyZWF0ZVRleHRSYW5nZSgpO2MubW92ZSgiY2hhcmFjdGVyIixiKTtjLnNlbGVj dCgpO2Euc2VsZWN0KCl9ZWxzZSBhLnNlbGVjdGlvblN0YXJ0JiZhLnNldFNlbGVj dGlvblJhbmdlKDAsYil9LFNldEZvY3VzOmZ1bmN0aW9uKGEpe1VMUzF5aDo7d2lu ZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtVTFMxeWg6O3RyeXthLmZvY3VzKCl9 Y2F0Y2goYil7fX0sMTcwKX0sbW91c2VFbnRlcjpmdW5jdGlvbihhKXtVTFMxeWg6 O3JldHVybiBmdW5jdGlvbihjKXtVTFMxeWg6O3ZhciBiPWMucmVsYXRlZFRhcmdl dDtpZih0aGlzPT09Ynx8T09VdGlsLk5vZGVDb250YWlucyh0aGlzLGIpKXJldHVy bjthLmNhbGwodGhpcyxjKX19LER2RW5zdXJlTW9kYWxDb3ZlckV4aXN0czpmdW5j dGlvbigpe1VMUzF5aDo7dmFyIGI9ImR2TW9kYWxDb3ZlciIsYT0kZ2V0KGIpO2lm KCFhKWE9dGhpcy5jcmVhdGVFbGVtZW50KGIsZG9jdW1lbnQuYm9keSwiZGl2Iiwi ZHZNb2RhbEJhY2tncm91bmQiKTtyZXR1cm4gYX0sU2NyaXB0UmVmZXJlbmNlOmZ1 bmN0aW9uKGYsZSxkLGMpe1VMUzF5aDo7dmFyIGI9ImZ1bmN0aW9uIixhPXt9O2Eu c3JjPWY7YS5sb2FkPXR5cGVvZiBlPT09Yj9lOm51bGw7YS5lcnJvcj10eXBlb2Yg ZD09PWI/ZDpudWxsO2EudGltZW91dD10eXBlb2YgYz09PWI/YzpudWxsO3JldHVy biBhfSxDcmVhdGVHdWlkOmZ1bmN0aW9uKCl7VUxTMXloOjtmb3IodmFyIGE9IiIs Yj0wO2I8MzI7YisrKWE9YStNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMTYpLnRv U3RyaW5nKDE2KS50b0xvd2VyQ2FzZSgpO3JldHVybiBhfSxKU0FzeW5jTG9hZGVy OmZ1bmN0aW9uKCl7VUxTMXloOjt2YXIgZD10aGlzO2lmKGFyZ3VtZW50cyYmYXJn dW1lbnRzLmxlbmd0aCl0cnl7Zm9yKHZhciBnPWRvY3VtZW50LmdldEVsZW1lbnRz QnlUYWdOYW1lKCJoZWFkIiksYj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChh cmd1bWVudHMsMCksaCxhPTA7YTxiLmxlbmd0aDthKyspe2lmKHR5cGVvZiBiW2Fd IT0ib2JqZWN0Inx8dHlwZW9mIGJbYV0uc3JjPT09InVuZGVmaW5lZCIpY29udGlu dWU7aWYoIUFycmF5LmNvbnRhaW5zKE9PVXRpbC5yZ0xvYWRlZFNjcmlwdHMsYlth XS5zcmMpKXt2YXIgZT1GdW5jdGlvbi5jcmVhdGVDYWxsYmFjayhkLk9uU2NyaXB0 Q29tcGxldGUse1NjcmlwdFJlZjpiW2FdLHNlbGY6ZH0pLGM9ZG9jdW1lbnQuY3Jl YXRlRWxlbWVudCgic2NyaXB0Iik7Yy5pZD0ic2NyaXB0IitkLkNyZWF0ZUd1aWQo KTtjLnR5cGU9InRleHQvamF2YXNjcmlwdCI7Yy5zcmM9YlthXS5zcmM7aWYoU3lz LkJyb3dzZXIuYWdlbnQhPT1TeXMuQnJvd3Nlci5JbnRlcm5ldEV4cGxvcmVyKXtj LnJlYWR5U3RhdGU9ImxvYWRlZCI7JGFkZEhhbmRsZXIoYywibG9hZCIsZSl9ZWxz ZSAkYWRkSGFuZGxlcihjLCJyZWFkeXN0YXRlY2hhbmdlIixlKTtpZihjLmFkZEV2 ZW50TGlzdGVuZXIpe3ZhciBmPUZ1bmN0aW9uLmNyZWF0ZUNhbGxiYWNrKGQuT25T Y3JpcHRFcnJvcix7U2NyaXB0UmVmOmJbYV0sc2VsZjpkfSk7Yy5hZGRFdmVudExp c3RlbmVyKCJlcnJvciIsZixmYWxzZSl9Z1swXS5hcHBlbmRDaGlsZChjKX1lbHNl IGJbYV0ubG9hZCE9bnVsbCYmYlthXS5sb2FkLmNhbGwoKX19Y2F0Y2goaSl7fWZp bmFsbHl7aD1udWxsfX0sT25TY3JpcHRDb21wbGV0ZTpmdW5jdGlvbihiLGEpe1VM UzF5aDo7aWYoYiYmYi50YXJnZXQmJmIudGFyZ2V0LmlkKXt2YXIgYz0kZ2V0KGIu dGFyZ2V0LmlkKS5yZWFkeVN0YXRlO2lmKGM9PT0iY29tcGxldGUifHxjPT09Imxv YWRlZCIpe0FycmF5LmFkZChhLnNlbGYucmdMb2FkZWRTY3JpcHRzLGEuU2NyaXB0 UmVmLnNyYyk7YS5TY3JpcHRSZWYubG9hZCYmYS5TY3JpcHRSZWYubG9hZC5jYWxs KCl9fX0sT25TY3JpcHRFcnJvcjpmdW5jdGlvbihiLGEpe1VMUzF5aDo7YSYmYS5T Y3JpcHRSZWYmJmEuU2NyaXB0UmVmLmVycm9yJiZhLlNjcmlwdFJlZi5lcnJvci5j YWxsKCl9LEpTQXN5bmNMb2FkZXJJbmxpbmU6ZnVuY3Rpb24oKXtVTFMxeWg6O2lm KGFyZ3VtZW50cyYmYXJndW1lbnRzLmxlbmd0aCl0cnl7Zm9yKHZhciBiPUFycmF5 LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKSxhPTA7YTxiLmxlbmd0 aDthKyspe2lmKHR5cGVvZiBiW2FdIT0ib2JqZWN0Inx8dHlwZW9mIGJbYV0uc3Jj PT09InVuZGVmaW5lZCIpY29udGludWU7aWYoIUFycmF5LmNvbnRhaW5zKE9PVXRp bC5yZ0xvYWRlZFNjcmlwdHMsYlthXS5zcmMpKXt2YXIgZD1GdW5jdGlvbi5jcmVh dGVDYWxsYmFjayh0aGlzLkpTQXBwZW5kLHtTY3JpcHRSZWY6YlthXSxzZWxmOnRo aXN9KSxjPW5ldyBTeXMuTmV0LldlYlJlcXVlc3Q7Yy5zZXRfdXJsKGJbYV0uc3Jj KTtjLnNldF9odHRwVmVyYigiR0VUIik7Yy5zZXRfdGltZW91dChPT1V0aWwubk1z VGltZU91dCk7Yy5hZGRfY29tcGxldGVkKGQpO2MuaW52b2tlKCl9ZWxzZSB0eXBl b2YgYlthXS5sb2FkPT09ImZ1bmN0aW9uIiYmYlthXS5sb2FkLmNhbGwoKX19Y2F0 Y2goZSl7fX0sSlNBcHBlbmQ6ZnVuY3Rpb24oZCxmLGEpe1VMUzF5aDo7dmFyIGM9 bnVsbDtpZihkLmdldF9yZXNwb25zZUF2YWlsYWJsZSgpKXt2YXIgYjt0cnl7Yj1u ZXcgU3lzLl9TY3JpcHRMb2FkZXI7Yi5xdWV1ZVNjcmlwdEJsb2NrKGQuZ2V0X3Jl c3BvbnNlRGF0YSgpKTtiLmxvYWRTY3JpcHRzKDAsYyxjLGMpO0FycmF5LmFkZChh LnNlbGYucmdMb2FkZWRTY3JpcHRzLGEuU2NyaXB0UmVmLnNyYyk7Yi5kaXNwb3Nl KCl9Y2F0Y2goZSl7fWZpbmFsbHl7Yj1jO2EuU2NyaXB0UmVmLmxvYWQmJmEuc2Vs Zi5UaW1lcihhLlNjcmlwdFJlZi5sb2FkLDApfX1lbHNlIGlmKGQuZ2V0X2Fib3J0 ZWQoKSYmYS5TY3JpcHRSZWYuZXJyb3IpYS5TY3JpcHRSZWYuZXJyb3IuY2FsbCgp O2Vsc2UgZC5nZXRfdGltZWRPdXQoKSYmYS5TY3JpcHRSZWYudGltZW91dCYmYS5T Y3JpcHRSZWYudGltZW91dC5jYWxsKCl9LFNwbGljZUluQnJlYWtTdWdnZXN0aW9u czpmdW5jdGlvbihhKXtVTFMxeWg6O2lmKCFhfHwhYS5sZW5ndGgpcmV0dXJuIGE7 Zm9yKHZhciBlPSImIzgyMDM7IixjPTQwLGQ9IiIsYj0wO2I8YS5sZW5ndGg7Yis9 YylkKz1hLnN1YnN0cihiLGMpK2U7cmV0dXJuIGR9LElzRGVmaW5lZDpmdW5jdGlv bihhKXtVTFMxeWg6O2lmKHR5cGVvZiBhPT09InVuZGVmaW5lZCIpcmV0dXJuIGZh bHNlO3JldHVybiB0cnVlfSxHZXRIYXNoQ29kZTpmdW5jdGlvbihiKXtVTFMxeWg6 O3ZhciBkPXR5cGVvZiBiO2lmKGQ9PT0idW5kZWZpbmVkIilyZXR1cm4gMDtpZihk IT09InN0cmluZyIpYj1iLnRvU3RyaW5nKCk7Zm9yKHZhciBhPTAsYz0wO2M8Yi5s ZW5ndGg7YysrKXthPWE8PDE7YT1hXmIuY2hhckNvZGVBdChjKTthPWFeYztpZihh PDApYT1+YX1yZXR1cm4gYX0sR2V0U3RhdGljQ29udGVudERvbWFpblVybDpmdW5j dGlvbihhLGUpe1VMUzF5aDo7dmFyIGQ9InVuZGVmaW5lZCI7aWYoIWF8fCFhLmxl bmd0aClyZXR1cm4gYTtpZihhLmluZGV4T2YoIjovLyIpPj0wKXJldHVybiBhO2lm KCFPT1V0aWwuSXNEZWZpbmVkKE9PVUkpfHwhT09VdGlsLklzRGVmaW5lZChPT1VJ LlN0YXRpY0NvbnRlbnREb21haW5zKXx8IU9PVUkuU3RhdGljQ29udGVudERvbWFp bnMubGVuZ3RoKXJldHVybiBhO2lmKGEuaW5kZXhPZigiLyIpIT0wKXt2YXIgYj1k b2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZTtiPWIuc3Vic3RyKDAsYi5sYXN0SW5k ZXhPZigiLyIpKzEpO2E9YithfXZhciBmPU9PVXRpbC5HZXRIYXNoQ29kZShhKSxj O2lmKHR5cGVvZiBlIT1kJiZlKWlmKHR5cGVvZiBPT1VJLkludGVybmFsU3RhdGlj Q29udGVudERvbWFpbiE9ZCljPU9PVUkuSW50ZXJuYWxTdGF0aWNDb250ZW50RG9t YWluO2Vsc2UgcmV0dXJuIGE7ZWxzZSBjPU9PVUkuU3RhdGljQ29udGVudERvbWFp bnNbZiVPT1VJLlN0YXRpY0NvbnRlbnREb21haW5zLmxlbmd0aF07cmV0dXJuIGRv Y3VtZW50LmxvY2F0aW9uLnByb3RvY29sKyIvLyIrYythfSxHZXRDb2RlSW1hZ2U6 ZnVuY3Rpb24oZCxiKXtVTFMxeWg6O3ZhciBjPSI1NTY3LjQwMDAiO2lmKCFkKXJl dHVybiBudWxsO3ZhciBhPSIvX2xheW91dHMvaW1hZ2VzLyIrZCsiLyIrKGI/Yjoi Iik7aWYoYS5pbmRleE9mKCJiPSIpPT09LTEpaWYoYS5pbmRleE9mKCI/Iik9PT0t MSlhPWErIj9iPSIrYztlbHNlIGE9YSsiJmI9IitjO3JldHVybiBPT1V0aWwuR2V0 U3RhdGljQ29udGVudERvbWFpblVybChhKX0sSXNUb3VTZXQ6ZnVuY3Rpb24oZCl7 VUxTMXloOjt2YXIgYT1mYWxzZTtzd2l0Y2goZCl7Y2FzZSBPT1VJLlRPVTp2YXIg Yj1HZXRDb29raWUoZCksZTtpZih0eXBlb2YgZ19sbGNjIT0ic3RyaW5nInx8Yj09 IiIpcmV0dXJuIGE7ZT1nX2xsY2MudG9Mb3dlckNhc2UoKTt2YXIgaD1iLnRvTG93 ZXJDYXNlKCkuaW5kZXhPZihlKTtpZihoPT0tMSlyZXR1cm4gYTt2YXIgYz1oK2Uu bGVuZ3RoKzE7aWYoYz5iLmxlbmd0aClyZXR1cm4gYTt2YXIgZj1iLmluZGV4T2Yo IjoiLGMpLGc9Zj09LTE/Yi5sZW5ndGgtYzpmLWM7aWYoZzw9MClyZXR1cm4gYTtp ZihiLnN1YnN0cihjLGcpPT1PT1VJLklEU19UT1VfVkVSU0lPTilyZXR1cm4gdHJ1 ZTtyZXR1cm4gYTtjYXNlIE9PVUkuVE9VX0NTVDpjYXNlIE9PVUkuVE9VX01TOmNh c2UgT09VSS5UT1VfSVNWOnJldHVybiBHZXRDb29raWUoZCk9PSIxIn1yZXR1cm4g YX0sSXNBbmNob3JFbmFibGVkOmZ1bmN0aW9uKGIpe1VMUzF5aDo7dmFyIGM9JCgi IyIrYiksYT1jLmF0dHIoImhyZWYiKTtpZih0eXBlb2YgYT09PSJ1bmRlZmluZWQi fHxhLmxlbmd0aD09MClyZXR1cm4gZmFsc2U7cmV0dXJuIHRydWV9LEVuYWJsZUxp bms6ZnVuY3Rpb24oZixlKXtVTFMxeWg6O3ZhciBkPSJkaXNhYmxlZCIsYj0iaHJl ZiIsYT0kKCIjIitmKSxjPWEuYXR0cihiKTtpZihlKXthLnJlbW92ZUF0dHIoZCk7 IWRvY3VtZW50LmFsbCYmKHR5cGVvZiBjPT09InVuZGVmaW5lZCJ8fGMubGVuZ3Ro PT0wKSYmYS5hdHRyKGIsYS5hdHRyKCJocmVmYmFrIikpfWVsc2V7YS5hdHRyKGQs dHJ1ZSk7YS5hdHRyKCJocmVmYmFrIixjKTshZG9jdW1lbnQuYWxsJiZhLnJlbW92 ZUF0dHIoYil9fSxFbmFibGVMaW5rQnV0dG9uOmZ1bmN0aW9uKGEsZSl7VUxTMXlo Ojt2YXIgZD0iY2RCdG5EaXNhYmxlZCIsYz0iZGlzYWJsZWQiLGI9IiA+IHRhYmxl IjtPT1V0aWwuRW5hYmxlTGluayhhLGUpO2lmKGUpeyQoIiMiK2ErYikuYXR0cihj LGZhbHNlKTskKCIjIithKS5yZW1vdmVDbGFzcyhkKX1lbHNleyQoIiMiK2ErYiku YXR0cihjLHRydWUpOyQoIiMiK2EpLmFkZENsYXNzKGQpfX0scmdXaW5kb3dlZEl0 ZW1zOltdLEhpZGVWaWRlb0NvbnRyb2xzOmZ1bmN0aW9uKCl7VUxTMXloOjtpZihP T1V0aWwucmdXaW5kb3dlZEl0ZW1zPT1udWxsKXJldHVybjskLmVhY2goT09VdGls LnJnV2luZG93ZWRJdGVtcyxmdW5jdGlvbihjLGIpe1VMUzF5aDo7dmFyIGE9JCgi IyIrYi5pZCk7aWYoYSE9bnVsbCYmYS5sZW5ndGg+MCl7YS5jc3MoImJhY2tncm91 bmQtY29sb3IiLGIuYmdjb2xvcik7YS5jaGlsZHJlbigpLmNzcygidmlzaWJpbGl0 eSIsImhpZGRlbiIpfX0pfSxTaG93VmlkZW9Db250cm9sczpmdW5jdGlvbigpe1VM UzF5aDo7aWYoT09VdGlsLnJnV2luZG93ZWRJdGVtcz09bnVsbClyZXR1cm47JC5l YWNoKE9PVXRpbC5yZ1dpbmRvd2VkSXRlbXMsZnVuY3Rpb24oYyxiKXtVTFMxeWg6 O3ZhciBhPSQoIiMiK2IuaWQpO2lmKGEhPW51bGwmJmEubGVuZ3RoPjApe2EuY3Nz KCJiYWNrZ3JvdW5kLWNvbG9yIixiLm9sZGJnY29sb3IpO2EuY2hpbGRyZW4oKS5j c3MoInZpc2liaWxpdHkiLCJ2aXNpYmxlIil9fSl9fTtPT0MuVGltZXJzPWZ1bmN0 aW9uKCl7VUxTMXloOjt2YXIgYT10aGlzO09PQy5UaW1lcnMuaW5pdGlhbGl6ZUJh c2UoYSk7YS5nbG9iYWxUaW1lcj1udWxsO2EuZ2xvYmFsRGVsYXk9bnVsbDthLmds b2JhbENhbGxiYWNrcz17fTthLnByb2Nlc3NHbG9iYWxUaW1lckRlbGVnYXRlPW51 bGw7YS5Jbml0aWFsaXplKCl9O09PQy5UaW1lcnMucHJvdG90eXBlPXskcmVnaXN0 ZXJHbG9iYWxUaW1lcjpmdW5jdGlvbigpe1VMUzF5aDo7dGhpcy5nbG9iYWxUaW1l cj1PT1V0aWwuVGltZXIodGhpcy5wcm9jZXNzR2xvYmFsVGltZXJEZWxlZ2F0ZSx0 aGlzLmdsb2JhbERlbGF5KX0sSW5pdGlhbGl6ZTpmdW5jdGlvbigpe1VMUzF5aDo7 dmFyIGE9dGhpczthLnByb2Nlc3NHbG9iYWxUaW1lckRlbGVnYXRlPUZ1bmN0aW9u LmNyZWF0ZURlbGVnYXRlKGEsYS5Qcm9jZXNzR2xvYmFsVGltZXIpO2lmKE9PVXRp bC5Jc0RlZmluZWQoT09VSS5Bc3luY0xvZ2dpbmdJbnRlcnZhbE1TKSlhLmdsb2Jh bERlbGF5PU9PVUkuQXN5bmNMb2dnaW5nSW50ZXJ2YWxNUztlbHNlIGEuZ2xvYmFs RGVsYXk9MWUzKjEwO2EuJHJlZ2lzdGVyR2xvYmFsVGltZXIoKX0sUHJvY2Vzc0ds b2JhbFRpbWVyOmZ1bmN0aW9uKCl7VUxTMXloOjskKGRvY3VtZW50KS50cmlnZ2Vy KCJ0aW1lci1nbG9iYWwiKTt0aGlzLiRyZWdpc3Rlckdsb2JhbFRpbWVyKCl9LEFk ZEdsb2JhbFRpbWVyRXZlbnQ6ZnVuY3Rpb24oYixhKXtVTFMxeWg6O3RoaXMuZ2xv YmFsQ2FsbGJhY2tzW2JdPWE7JChkb2N1bWVudCkuYmluZCgidGltZXItZ2xvYmFs IixhKX0sUmVtb3ZlR2xvYmFsVGltZXJFdmVudDpmdW5jdGlvbihhKXtVTFMxeWg6 OyQoZG9jdW1lbnQpLnVuYmluZCgidGltZXItZ2xvYmFsIix0aGlzLmdsb2JhbENh bGxiYWNrc1thXSk7ZGVsZXRlIHRoaXMuZ2xvYmFsQ2FsbGJhY2tzW2FdfX07T09D LlRpbWVycy5yZWdpc3RlckNsYXNzKCJPT0MuVGltZXJzIixTeXMuQ29tcG9uZW50 KTtPT0MuVGltZXJzPW5ldyBPT0MuVGltZXJzO09PQy5Mb2dnaW5nPWZ1bmN0aW9u KCl7VUxTMXloOjtPT0MuTG9nZ2luZy5pbml0aWFsaXplQmFzZSh0aGlzKTt0aGlz LmluaXRpYWxpemUoKX07T09DLkxvZ2dpbmcucHJvdG90eXBlPXtpbml0aWFsaXpl OmZ1bmN0aW9uKCl7fSxHZXRTZWFyY2hQb3NpdGlvbkJ5QWlkOmZ1bmN0aW9uKGIp e1VMUzF5aDo7aWYodHlwZW9mIGpzb25TZWFyY2hSZXN1bHRzIT0idW5kZWZpbmVk Iilmb3IodmFyIGE9MDthPGpzb25TZWFyY2hSZXN1bHRzLmFzc2V0cy5sZW5ndGg7 YSsrKWlmKGpzb25TZWFyY2hSZXN1bHRzLmFzc2V0c1thXS5hPT1iKXJldHVybiBh KzE7cmV0dXJuICIifSxMb2dDbGlwRGF0YVRvV2ViVHJlbmRzOmZ1bmN0aW9uKGQs ZixoLGkpe1VMUzF5aDo7dmFyIGE9IjEiLGM9bnVsbCxiPSJ1bmRlZmluZWQiO2lm KHR5cGVvZiBkPT1ifHxkPT1jKXJldHVybjt2YXIgZT10eXBlb2YgZiE9YiYmZiE9 Yz9mOiIwIixyPXR5cGVvZiBqc29uU2VhcmNoUmVzdWx0cyE9YiYmanNvblNlYXJj aFJlc3VsdHMuY24hPWM/anNvblNlYXJjaFJlc3VsdHMuY246Im4vYSIsbj10eXBl b2YganNvblNlYXJjaFJlc3VsdHMhPWImJmpzb25TZWFyY2hSZXN1bHRzLnF1IT1j P2pzb25TZWFyY2hSZXN1bHRzLnF1OiJuL2EiLGc9dHlwZW9mIGghPWImJmghPWM/ aDoibi9hIix0PXR5cGVvZiBpIT1iJiZpIT1jP2k6IiIsaz1lPT1hP2E6IiIsbD1r PT1hP2E6IiIsaj1lPT0iMzIiP2E6IiIscz1nPT0iVGVhc2VyIj9hOiIiLHE9Zz09 IkJlc3RCZXQiP2E6IiIsbz1qPT1hPyJkb3dubG9hZCI6IiIscD1lPT0iMzIiP2Q6 IiIsbT1lPT0iMzIiP3RoaXMuR2V0U2VhcmNoUG9zaXRpb25CeUFpZChkKToiIjt0 eXBlb2YgZGNzT08hPT1iJiZkY3NPTygiV1QuZGwiLGUsIldULnRpIixkb2N1bWVu dC50aXRsZSwiRENTLmRjc3JlZiIsd2luZG93LmxvY2F0aW9uLCJEQ1NleHQub29f ZGx0eXBlIixkLnN1YnN0cigwLDIpLCJEQ1NleHQub29fY2xpcGNhdCIsciwiRENT ZXh0Lm9vX2NsaXBxdWVyeSIsbiwiRENTZXh0Lm9vX2NsaXBkbHR5cGUiLGcsIkRD U2V4dC5vb19hc3NldGlkIixkLCJEQ1NleHQub29faGFzaCIsdCwiV1Quel9yY2xp Y2tUcmlnIixrLCJXVC56X1Bvc2l0aW9uQ2xpY2tlZCIsbCwiV1Quel9yZGxUcmln IixqLCJXVC56X3RlYXNlciIscywiV1Quel9iZXN0YmV0IixxLCJXVC56X2NvbnZf dHlwZSIsbywiV1Quel9hc3NldERMIixwLCJXVC56X3Bvc2l0aW9uREwiLG0pfSxM b2dCbHVlTGluZURhdGFUb1dlYlRyZW5kczpmdW5jdGlvbihhKXtVTFMxeWg6O3Zh ciBjPWEucG9zIT1udWxsP2EucG9zLnRvU3RyaW5nKCk6IiIsYj1hLmJiPyIxIjoi IixkPWEuZGw9PTE/IjEiOiIiO3R5cGVvZiBkY3NPTyE9PSJ1bmRlZmluZWQiJiZk Y3NPTygiV1Quel9yY2xpY2tUcmlnIiwiMSIsIldULnpfcG9zaXRpb25DbGlja2Vk IixjLCJXVC56X2Jlc3RiZXQiLGIsIldULmRsIixkKX0sTG9nRnJlZXRleHRTZWFy Y2hJbmZvVG9XZWJUcmVuZHM6ZnVuY3Rpb24oZSxnLGosZCxjLGYpe1VMUzF5aDo7 dmFyIGI9bnVsbCxhPSJ1bmRlZmluZWQiLGw9dHlwZW9mIGUhPWEmJmUhPWI/ZToi IixpPXR5cGVvZiBkIT1hJiZkIT1iP2Q6IiIsaD10eXBlb2YgYyE9YSYmYyE9Yj9j OiIiLG09dHlwZW9mIGYhPWEmJmYhPWI/ZjoiIixrPXdpbmRvdy5sb2NhdGlvbi5o YXNoPT1iPyIxIjoiIjt0eXBlb2YgZGNzT08hPT1hJiZkY3NPTygiV1Qub3NzIixs LCJXVC56X1BhZ2VOdW1iZXIiLGcsIldULnpfUGVyUGFnZSIsaiwiV1Quel9TZWFy Y2hBc3NldElEIixpLCJXVC56X1Bvc2l0aW9uIixoLCJEQ1NleHQub29fcGFnZSIs ZywiRENTZXh0Lm9vX2hhc2giLG0sIldULnpfZmlsdGVyX2V2dCIsIjEiLCJXVC56 X3J2aWV3VHJpZyIsIjEiLCJXVC56X3NlYXJjaFRyaWciLGspfX07T09DLkxvZ2dp bmcucmVnaXN0ZXJDbGFzcygiT09DLkxvZ2dpbmciLFN5cy5Db21wb25lbnQpO09P Qy5Mb2dnaW5nPW5ldyBPT0MuTG9nZ2luZztpZih0eXBlb2YgTWljcm9zb2Z0PT09 InVuZGVmaW5lZCIpe09PQy5DVFQ9ZnVuY3Rpb24oKXt9O09PQy5DVFQucHJvdG90 eXBlPXt9fWVsc2UgT09DLkNUVD1NaWNyb3NvZnQuT2ZmaWNlT25saW5lLlJlbmRl cmluZy5Mb2dnaW5nLkNUVDtPT0MuQ2hyb21lPWZ1bmN0aW9uKCl7VUxTMXloOjtP T0MuQ2hyb21lLmluaXRpYWxpemVCYXNlKHRoaXMpfTtPT0MuQ2hyb21lLnByb3Rv dHlwZT17SW5pdFNlYXJjaEJveDpmdW5jdGlvbigpe1VMUzF5aDo7dmFyIGE9ImNk c3JjaGRlZiIsZD0kKCIjZnJtU2VhcmNoIiksYz0kKGQpLmZpbmQoImlucHV0W3R5 cGU9dGV4dF0iKSxmPWQuZmluZCgic3BhbiIpWzBdO2lmKGQubGVuZ3RoPT0wfHxj Lmxlbmd0aD09MHx8Zi5sZW5ndGg9PTApcmV0dXJuO3ZhciBiPSQoZikudGV4dCgp OyQoZCkuc3VibWl0KGZ1bmN0aW9uKGkpe1VMUzF5aDo7dmFyIGU9InVuZGVmaW5l ZCIsYT1udWxsLGQ9JCh0aGlzKS5maW5kKCJpbnB1dFt0eXBlPSd0ZXh0J10iKTtp ZihkLmxlbmd0aD09MSl7ZFswXS52YWx1ZT0kLnRyaW0oZFswXS52YWx1ZSk7aWYo ZFswXS52YWx1ZS5sZW5ndGg9PTB8fGRbMF0udmFsdWU9PWIpe09PVXRpbC5Gb2N1 c0FuZFNldEN1cnNvclRvRW5kKGQpO2FsZXJ0KE9PVUkuSURTX09OVF9TRUFSQ0hf Tk9URVhURU5URVJFRCk7cmV0dXJuIGZhbHNlfXZhciBnPWEsaD1hO2lmKHdpbmRv dy5XZWJUcmVuZHNJbXBsIT1hJiZ0eXBlb2Yod2luZG93LldlYlRyZW5kc0ltcGwh PWUpKXtnPXdpbmRvdy5XZWJUcmVuZHNJbXBsLkRDU2V4dC5vb19hc3NldGlkO2g9 d2luZG93LldlYlRyZW5kc0ltcGwuV1QuY2dfbn1lbHNle2c9JCgibWV0YVtuYW1l PURDU2V4dC5vb19hc3NldGlkXSIpLmF0dHIoImNvbnRlbnQiKTtoPSQoIm1ldGFb bmFtZT1XVC5jZ19uXSIpLmF0dHIoImNvbnRlbnQiKX1tU2V0Q29va2llKE9PVUku U0VBUkNIX09SSUdJTkFTU0VUSURfQ09PS0lFTkFNRSxnKTttU2V0Q29va2llKE9P VUkuU0VBUkNIX09SSUdJTlNVQldFQl9DT09LSUVOQU1FLGgpO2lmKHR5cGVvZiB3 aW5kb3cuU2VhcmNoSGFzaCE9ZSYmd2luZG93LlNlYXJjaEhhc2ghPWEmJndpbmRv dy5TZWFyY2hIYXNoLmxlbmd0aD4wKXtpLnByZXZlbnREZWZhdWx0KCk7dmFyIGM9 JCh0aGlzKS5hdHRyKCJhY3Rpb24iKSxmPWMuaW5kZXhPZigiPyIpO2lmKGY8MClm PWMuaW5kZXhPZigiIyIpO2lmKGY+MCljPWMuc3Vic3RyKDAsZik7Yz1TdHJpbmcu Zm9ybWF0KCJ7MH0/cXU9ezF9JmN0dD17Mn0jezN9IixjLGVuY29kZVVSSUNvbXBv bmVudChkWzBdLnZhbHVlKSxPT0MuQ1RULlNlYXJjaCx3aW5kb3cuU2VhcmNoSGFz aCk7T09VdGlsLk5hdmlnYXRlKGMpfX19KTt2YXIgZT1mYWxzZTskKGMpLmJsdXIo ZnVuY3Rpb24oKXtVTFMxeWg6O2lmKHRoaXMudmFsdWUubGVuZ3RoPT0wKXt0aGlz LnZhbHVlPWI7JCh0aGlzKS5hZGRDbGFzcyhhKTtlPWZhbHNlfX0pLmZvY3VzKGZ1 bmN0aW9uKCl7VUxTMXloOjt2YXIgYz10aGlzO2lmKCFlJiZjLnZhbHVlPT1iKWMu dmFsdWU9IiI7ZT10cnVlOyQoYykucmVtb3ZlQ2xhc3MoYSk7T09VdGlsLkZvY3Vz QW5kU2V0Q3Vyc29yVG9FbmQoYyl9KS5rZXlwcmVzcyhmdW5jdGlvbihhKXtVTFMx eWg6O2EmJmE9PTEzJiYkKHRoaXMpLnN1Ym1pdCgpfSk7KCQoYykudmFsKCkubGVu Z3RoPT0wfHwkKGMpLnZhbCgpPT1iKSYmJChjKS52YWwoYikuYWRkQ2xhc3MoYSk7 aWYoJCgiLmNkQmlvcyIpLmxlbmd0aCl7dmFyIGc9bmV3IE9PQy5Qcm9maWxlRGV0 YWlsc0xvYWRlcjtnLkxvYWQoKX19LEluaXRUb3BOYXZNZW51czpmdW5jdGlvbigp e1VMUzF5aDo7dmFyIGc9ImNkdG9nZ2xlaG92ZXJlZCIsbT0iYS5jZHRvZ2dsZSIs bD0iI2NkdG9wbmF2bGlua3MgdWwiLGM9ImNkdGFiZm9jIixlPSJsaS5jZGh6bW9y ZSIsYj0idWwiLGo9ImNkaHptb3JlIixxPSJ1bCNjZHRvcHRhYnMgbGkuY2Roem1v cmUiLGY9Ii01MDAwcHgiLGQ9InRvcCIsaT0iI2Nkc2VjbWVudWJhY2siLGE9dHJ1 ZTskKCJib2R5IikuYXBwZW5kKCc8ZGl2IHN0eWxlPSJ0b3A6LTUwMDBweDtiYWNr Z3JvdW5kLWNvbG9yOndoaXRlO3Bvc2l0aW9uOmFic29sdXRlOyIgaWQ9ImNkc2Vj bWVudWJhY2siPiZuYnNwOzwvZGl2PicpO2Z1bmN0aW9uIGsoaCl7VUxTMXloOjt2 YXIgYj0kKGgpLGM9Yi5wYXJlbnQoKSxmPWMub3V0ZXJIZWlnaHQoYSksZTtpZigh JC5icm93c2VyLm1zaWUpZi09MjtlbHNlIGYtPTE7aWYoJCgiaHRtbCIpLmF0dHIo ImRpciIpPT0icnRsIillPS0xKmIub3V0ZXJXaWR0aChhKStjLm91dGVyV2lkdGgo YSkrODtlbHNlIGU9MDtiLnBvc2l0aW9uTmVhcihjLGYsZSk7dmFyIGc9Yi5vZmZz ZXQoKTskKGkpLmNzcyhkLGcudG9wKS5jc3MoImxlZnQiLGcubGVmdCkuY3NzKCJ3 aWR0aCIsYi5vdXRlcldpZHRoKGEpLTEwKS5jc3MoImhlaWdodCIsYi5vdXRlckhl aWdodChhKS0yOCl9ZnVuY3Rpb24gbihhKXtVTFMxeWg6O3ZhciBiPSQoYSk7Yi5j c3MoZCxmKTskKGkpLmNzcyhkLGYpfWlmKCQuYnJvd3Nlci5tc2llJiYkLmJyb3dz ZXIudmVyc2lvbj09NyYmJCgiaHRtbCIpLmF0dHIoImRpciIpPT0icnRsIil7dmFy IHA9MDskKHEpLmVhY2goZnVuY3Rpb24oKXtVTFMxeWg6O3A9MDtmb3IodmFyIGM9 JCh0aGlzKS5jaGlsZHJlbigiYSxzcGFuLGltZyIpLGI9MDtiPGMubGVuZ3RoO2Ir KylwKz0kKGNbYl0pLm91dGVyV2lkdGgoYSk7JCh0aGlzKS53aWR0aChwKX0pfSQo cSkuZWFjaChmdW5jdGlvbigpe1VMUzF5aDo7dmFyIGM9JCh0aGlzKSxiPSQoJCh0 aGlzKS5jaGlsZHJlbigidWwuY2RzZWN0YWJzIilbMF0pLGE9Yy5jaGlsZHJlbigi YSIpO2IuYXBwZW5kKCc8bGkgY2xhc3M9ImNkc2VjbiBjZHNlY25sYXN0Ij48c3Bh bj4mbmJzcDs8L3NwYW4+PC9saT4nKTtpZighYy5oYXNDbGFzcygiY2R0YmhsZGVy Iikpe2EuZm9jdXMoZnVuY3Rpb24oKXtVTFMxeWg6O2soYil9KTthLmJsdXIoZnVu Y3Rpb24oKXtVTFMxeWg6O24oYil9KX1lbHNlIGEuY2xpY2soZnVuY3Rpb24oKXtV TFMxeWg6O2soYik7YS5ibHVyKCk7cmV0dXJuIGZhbHNlfSl9KS5ob3ZlcihmdW5j dGlvbihhKXtVTFMxeWg6O2soJChhLnRhcmdldCkuaGFzQ2xhc3Moaik/JChhLnRh cmdldCkuY2hpbGRyZW4oYik6JChhLnRhcmdldCkucGFyZW50cyhlKS5jaGlsZHJl bihiKSl9LGZ1bmN0aW9uKGEpe1VMUzF5aDo7bigkKGEudGFyZ2V0KS5oYXNDbGFz cyhqKT8kKGEudGFyZ2V0KS5jaGlsZHJlbihiKTokKGEudGFyZ2V0KS5wYXJlbnRz KGUpLmNoaWxkcmVuKGIpKX0pOyQoInVsI2NkdG9wdGFicyBsaS5jZGh6bW9yZSB1 bCBsaSA+IGEiKS5mb2N1cyhmdW5jdGlvbihmKXtVTFMxeWg6O3ZhciBkPSQoZi50 YXJnZXQpLnBhcmVudCgpO2QubGVuZ3RoPT0xJiZkLmhhc0NsYXNzKCJjZHNlY24i KSYmZC5hZGRDbGFzcyhjKTt2YXIgYT0kKGYudGFyZ2V0KS5wYXJlbnRzKGUpO2Eu bGVuZ3RoPT0xJiZhLmFkZENsYXNzKGMpO2soYS5jaGlsZHJlbihiKSl9KS5ibHVy KGZ1bmN0aW9uKGYpe1VMUzF5aDo7dmFyIGQ9JChmLnRhcmdldCkucGFyZW50KCk7 ZC5sZW5ndGg9PTEmJmQuaGFzQ2xhc3MoImNkc2VjbiIpJiZkLnJlbW92ZUNsYXNz KGMpO3ZhciBhPSQoZi50YXJnZXQpLnBhcmVudHMoZSk7YS5sZW5ndGg9PTEmJmEu cmVtb3ZlQ2xhc3MoYyk7bihhLmNoaWxkcmVuKGIpKX0pOyQoInVsI2NkdG9wdGFi cyBsaS5jZHRvcG4gPiBhIikuZm9jdXMoZnVuY3Rpb24oYSl7VUxTMXloOjskKGEu dGFyZ2V0KS5wYXJlbnQoKS5hZGRDbGFzcyhjKX0pLmJsdXIoZnVuY3Rpb24oYSl7 VUxTMXloOjskKGEudGFyZ2V0KS5wYXJlbnQoKS5yZW1vdmVDbGFzcyhjKX0pO3Zh ciBoPSQobCk7aWYoaC5sZW5ndGg9PTEpe3ZhciBvPSQoJChoKS5zaWJsaW5ncyht KVswXSkscj1vLm9mZnNldCgpO28uYXR0cigiaHJlZiIsImphdmFzY3JpcHQ6OyIp O2guY3NzKCJsZWZ0IixyLmxlZnQtaC53aWR0aCgpLzIpO2Z1bmN0aW9uIHQoKXtV TFMxeWg6O3ZhciBjPSQobCksYj0kKCQobSlbMF0pO2MucG9zaXRpb25OZWFyKGIs Yi5vdXRlckhlaWdodChhKSs1LGIub3V0ZXJXaWR0aChhKS1jLm91dGVyV2lkdGgo YSkpO2MucmVtb3ZlQ2xhc3MoZyl9ZnVuY3Rpb24gcygpe1VMUzF5aDo7dmFyIGE9 JCgiI2NkdG9wbmF2bGlua3MgdWw6bm90KC5jZHRvZ2dsZWhvdmVyZWQpIik7YS5j c3MoZCxmKX1vLmFkZCgiI2NkdG9wbmF2bGlua3MgdWwgYSIpLmZvY3VzKGZ1bmN0 aW9uKCl7VUxTMXloOjt0KCl9KS5ibHVyKGZ1bmN0aW9uKCl7VUxTMXloOjtzKCl9 KS5jbGljayhmdW5jdGlvbihhKXtVTFMxeWg6OyQoYS5jdXJyZW50VGFyZ2V0KS5o YXNDbGFzcygiY2R0b2dnbGUiKSYmJChhLmN1cnJlbnRUYXJnZXQpLmZvY3VzKCl9 KTtoLmhvdmVyKGZ1bmN0aW9uKCl7VUxTMXloOjskKHRoaXMpLmFkZENsYXNzKGcp fSxmdW5jdGlvbigpe1VMUzF5aDo7JCh0aGlzKS5yZW1vdmVDbGFzcyhnKX0pLmNs aWNrKGZ1bmN0aW9uKGIpe1VMUzF5aDo7dmFyIGE9JChiLmN1cnJlbnRUYXJnZXQp LmNoaWxkcmVuKCI6Zmlyc3QiKS5jaGlsZHJlbigiYSIpO2EubGVuZ3RoPjAmJiQo YVswXSkuZm9jdXMoKX0pfX0sQWRkQnRuRm9jdXNFdmVudHM6ZnVuY3Rpb24oKXtV TFMxeWg6O3ZhciBqPSJjZEJ0blJIb3ZlciIsaT0iY2RCdG5NSG92ZXIiLGg9ImNk QnRuTEhvdmVyIixnPSJjZEJ0blJGb2MiLGM9Ii5jZEJ0blIiLGY9ImNkQnRuTUZv YyIsYj0iLmNkQnRuTSIsZT0iY2RCdG5MRm9jIixhPSIuY2RCdG5MIixkPSJjZEJ0 bkRpc2FibGVkIjskKCIuY2RCdG4iKS5mb2N1cyhmdW5jdGlvbigpe1VMUzF5aDo7 dmFyIGg9JCh0aGlzKTtpZighaC5oYXNDbGFzcyhkKSl7aC5maW5kKGEpLmFkZENs YXNzKGUpO2guZmluZChiKS5hZGRDbGFzcyhmKTtoLmZpbmQoYykuYWRkQ2xhc3Mo Zyl9fSkuYmx1cihmdW5jdGlvbigpe1VMUzF5aDo7dmFyIGQ9JCh0aGlzKTtkLmZp bmQoYSkucmVtb3ZlQ2xhc3MoZSk7ZC5maW5kKGIpLnJlbW92ZUNsYXNzKGYpO2Qu ZmluZChjKS5yZW1vdmVDbGFzcyhnKX0pLm1vdXNlZG93bihmdW5jdGlvbigpe1VM UzF5aDo7dmFyIGE9JCh0aGlzKTtpZihhLmhhc0NsYXNzKGQpKXJldHVybiBmYWxz ZX0pLmhvdmVyKGZ1bmN0aW9uKCl7VUxTMXloOjt2YXIgZT0kKHRoaXMpO2lmKCFl Lmhhc0NsYXNzKGQpKXtlLmZpbmQoYSkuYWRkQ2xhc3MoaCk7ZS5maW5kKGIpLmFk ZENsYXNzKGkpO2UuZmluZChjKS5hZGRDbGFzcyhqKX19LGZ1bmN0aW9uKCl7VUxT MXloOjt2YXIgZD0kKHRoaXMpO2QuZmluZChhKS5yZW1vdmVDbGFzcyhoKTtkLmZp bmQoYikucmVtb3ZlQ2xhc3MoaSk7ZC5maW5kKGMpLnJlbW92ZUNsYXNzKGopfSk7 IWRvY3VtZW50LmFsbCYmJCgiLmNkQnRuID4gdGFibGUiKS5yZW1vdmVBdHRyKCJv bmNsaWNrIik7JCgiLmNkQnRuW29mZj10cnVlXSIpLmVhY2goZnVuY3Rpb24oKXtV TFMxeWg6O09PVXRpbC5FbmFibGVMaW5rQnV0dG9uKHRoaXMuaWQsZmFsc2UpfSl9 LFZlcnRpY2FsQ2VudGVyOmZ1bmN0aW9uKCl7VUxTMXloOjskKCIuY2RWZXJ0aWNh bENlbnRlciIpLmVhY2goZnVuY3Rpb24oKXtVTFMxeWg6O3ZhciBhPSQodGhpcyks Yz1hLmhlaWdodCgpLGQ9YS5wYXJlbnQoKSxiPWQuaGVpZ2h0KCksZT1iLzItYy8y O2EuY3NzKCJwb3NpdGlvbiIsInJlbGF0aXZlIikuY3NzKCJ0b3AiLGUpfSl9LElu aXRBc3BOZXRGb3JtOmZ1bmN0aW9uKCl7VUxTMXloOjskKCJmb3JtW25hbWU9J2Fz cG5ldEZvcm0nXSIpLmF0dHIoImFjdGlvbiIsd2luZG93LmxvY2F0aW9uKTskKCJh W2hyZWZdW3JlbCo9J2V4dGVybmFsJ10iKS5hdHRyKCJ0YXJnZXQiLCJfYmxhbmsi KX19O09PQy5DaHJvbWUucmVnaXN0ZXJDbGFzcygiT09DLkNocm9tZSIsU3lzLkNv bXBvbmVudCk7T09DLkNocm9tZT1uZXcgT09DLkNocm9tZTtPT0MuT25SZWFkeT17 JGV4ZWN1dGU6ZnVuY3Rpb24oKXtVTFMxeWg6O2Zvcih2YXIgYSBpbiBPT0MuT25S ZWFkeSl7aWYoYS5jaGFyQXQoMCk9PSIkIiljb250aW51ZTt2YXIgYj1PT0MuT25S ZWFkeVthXTtpZih0eXBlb2YgYiE9PSJmdW5jdGlvbiIpY29udGludWU7YigpfX0s SW5pdEFzcE5ldEZvcm06T09DLkNocm9tZS5Jbml0QXNwTmV0Rm9ybSxJbml0U2Vh cmNoQm94Ok9PQy5DaHJvbWUuSW5pdFNlYXJjaEJveCxJbml0VG9wTmF2TWVudXM6 T09DLkNocm9tZS5Jbml0VG9wTmF2TWVudXMsQWRkQnRuRm9jdXNFdmVudHM6T09D LkNocm9tZS5BZGRCdG5Gb2N1c0V2ZW50cyxWZXJ0aWNhbENlbnRlcjpPT0MuQ2hy b21lLlZlcnRpY2FsQ2VudGVyLEluaXREaWdpdGFsUml2ZXI6ZnVuY3Rpb24oKXtV TFMxeWg6O3ZhciBiPSIuY2REaWdpdGFscml2ZXJsaW5rIjtpZigkKGIpLmxlbmd0 aD4wKXt2YXIgYT1PT1V0aWwuR2V0UXVlcnlTdHJpbmdBcnJheSgpOyQoYikuZWFj aChmdW5jdGlvbigpe1VMUzF5aDo7dmFyIGM9JCh0aGlzKSxiPWMuYXR0cigiaHJl ZiIpO2lmKGImJmIhPSIiKXtmb3IodmFyIGQgaW4gYSliPU9PVXRpbC5BcHBlbmRQ YXJhbVRvVXJsKGIsZCxhW2RdKTtjLmF0dHIoImhyZWYiLGIpfX0pfX0sUGFnaW5n Q29udHJvbEhvdmVyczpmdW5jdGlvbigpe1VMUzF5aDo7dmFyIGE9Ii5jZFBhZ2lu Z0NvbnRyb2wiOyQoIi5jZFBhZ2luZ0J1dHRvbiIpLmZpbmQoImltZ1tuYW1lXSIp LmVhY2goZnVuY3Rpb24oKXtVTFMxeWg6O3ZhciBiPSQodGhpcyksYT1uZXcgSW1h Z2U7YS5zcmM9Yi5hdHRyKCJuYW1lIik7Yi5kYXRhKCJub3JtYWwiLHRoaXMuc3Jj KS5kYXRhKCJob3QiLGEuc3JjKX0pLmhvdmVyKGZ1bmN0aW9uKCl7VUxTMXloOjt0 aGlzLnNyYz0kKHRoaXMpLmRhdGEoImhvdCIpfSxmdW5jdGlvbigpe1VMUzF5aDo7 dGhpcy5zcmM9JCh0aGlzKS5kYXRhKCJub3JtYWwiKX0pOyQoYSkuZmluZCgiYS5j ZFBhZ2luZ0xhYmVsIikuZWFjaChmdW5jdGlvbigpe1VMUzF5aDo7dmFyIGI9ImFb aHJlZj0nIixjPSQodGhpcykuYXR0cigiaHJlZiIpO2MuaW5kZXhPZigiamF2YXNj cmlwdDoiKTwwJiYkKHRoaXMpLmhvdmVyKGZ1bmN0aW9uKCl7VUxTMXloOjskKHRo aXMpLmNsb3Nlc3QoYSkuZmluZChiK2MrIiddIikuZmluZCgiaW1nIikudHJpZ2dl ckhhbmRsZXIoIm1vdXNlZW50ZXIiKX0sZnVuY3Rpb24oKXtVTFMxeWg6OyQodGhp cykuY2xvc2VzdChhKS5maW5kKGIrYysiJ10iKS5maW5kKCJpbWciKS50cmlnZ2Vy SGFuZGxlcigibW91c2VvdXQiKX0pfSl9LFNldEVsbGlwc2lzVGl0bGVUZXh0OmZ1 bmN0aW9uKCl7VUxTMXloOjskKCIuY2RFbGxpcHNpcyIpLmVhY2goZnVuY3Rpb24o KXtVTFMxeWg6O3ZhciBhPSQodGhpcyksYj1hLmF0dHIoInRpdGxlIik7KGI9PW51 bGx8fGI9PSIiKSYmYS5hdHRyKCJ0aXRsZSIsJC50cmltKGEudGV4dCgpKSl9KX19 O2Z1bmN0aW9uIEZDaGtTcmNoVHh0KGEpe1VMUzF5aDo7dmFyIGI9L15bXHNdKiQv O3JldHVybiBhJiYhYi50ZXN0KGEpfWZ1bmN0aW9uIEZvY1NyY2hUeHQoYSl7VUxT MXloOjtpZihhJiZhLnZhbHVlKXtpZihzdHJOb25TZWFyY2hTdHJpbmchPW51bGwm JnN0ck5vblNlYXJjaFN0cmluZyE9InVuZGVmaW5lZCImJmEudmFsdWU9PXN0ck5v blNlYXJjaFN0cmluZyYmIWZFbnRlcmVkVGV4dClhLnZhbHVlPSIiO3NldFNlYXJj aE9uQ29sb3IoYSk7ZkVudGVyZWRUZXh0PXRydWV9T09VdGlsLkZvY3VzQW5kU2V0 Q3Vyc29yVG9FbmQoYSl9ZnVuY3Rpb24gRkVudFRleHRib3goYSxiKXtVTFMxeWg6 O2lmKGEmJjEzPT1hLmtleUNvZGUpcmV0dXJuIEZUcnlTZWFyY2goYSxiKTtyZXR1 cm4gdHJ1ZX1mdW5jdGlvbiBGQlNDVHJ5U2VhcmNoKGQsZSxjLGYpe1VMUzF5aDo7 dmFyIGE9RyhkKTtpZighYSlyZXR1cm4gZmFsc2U7aWYoIUZDaGtTcmNoVHh0KEco IkJTQ1FVIikudmFsdWUpKXthbGVydChlKTtyZXR1cm4gZmFsc2V9aWYoIWEuYXYp e3ZhciBiPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7Yi5pZD0iYXYi O2IubmFtZT0iYXYiO2IudHlwZT0iaGlkZGVuIjthLmFwcGVuZENoaWxkKGIpfWEu cXUudmFsdWU9RygiQlNDUVUiKS52YWx1ZTthLmF2LnZhbHVlPUcoIkJTQ0FWIiku dmFsdWU7YS5zYy52YWx1ZT1mO2EuYWN0aW9uPWM7YS5zdWJtaXQoKTtyZXR1cm4g ZmFsc2V9ZnVuY3Rpb24gRk9uQ2xpcGFydFNlYXJjaEtleShhKXtVTFMxeWg6O2Em JjEzPT1hLmtleUNvZGUmJlNlYXJjaENsaXBhcnRGcm9tQ00oKTtyZXR1cm4gdHJ1 ZX1mdW5jdGlvbiBTZWFyY2hDbGlwYXJ0RnJvbUNNKCl7VUxTMXloOjt2YXIgYT0y MDtpZihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5wdXRDbHBTcmNoQ2xpcGFy dCIpLmNoZWNrZWQpYT0yMTtpZihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5w dXRDbHBTcmNoUGhvdG9zIikuY2hlY2tlZClhPTIyO2lmKGRvY3VtZW50LmdldEVs ZW1lbnRCeUlkKCJpbnB1dENscFNyY2hBbmltYXRpb25zIikuY2hlY2tlZClhPTIz O2lmKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbnB1dENscFNyY2hTb3VuZHMi KS5jaGVja2VkKWE9MjQ7dmFyIGI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlu cHV0Q2xwU3JjaFRleHQiKS52YWx1ZTtpZihudWxsPT1ifHwwPj1iLmxlbmd0aHx8 IUZDaGtTcmNoVHh0KGIpKXthbGVydChzdHJDbHBTcmNoRW1wdHlRdWVyeSk7cmV0 dXJufXZhciBjPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmcm1DbGlwYXJ0U2Vh cmNoIik7Yy5xdS52YWx1ZT1iO2Muc2MudmFsdWU9YS50b1N0cmluZygpO2Muc3Vi bWl0KCl9ZnVuY3Rpb24gRkJTQ0VuZFRleHRib3goYSxjLGQsYixlKXtVTFMxeWg6 O2lmKGEmJmEua2V5Q29kZT09MTMpcmV0dXJuIEZCU0NUcnlTZWFyY2goYyxkLGIs ZSk7cmV0dXJuIHRydWV9ZnVuY3Rpb24gVGJyR2V0KGEpe1VMUzF5aDo7YT1HKGEp O2lmKGEmJmEudGFnTmFtZT09IlRBQkxFIilyZXR1cm4gYS5yb3dzWzBdO3JldHVy biBudWxsfWZ1bmN0aW9uIEZDSUlSYW5nZShhLGIpe1VMUzF5aDo7cmV0dXJuIGEm JmEudGFnTmFtZT09IlRSIiYmYiE9bnVsbCYmYj49MCYmYjxhLmNlbGxzLmxlbmd0 aH1mdW5jdGlvbiBTZXRUb3BOYXZTaXRlTWFwTGlua0JvcmRlcihkLGMpe1VMUzF5 aDo7dmFyIGI9InVuZGVmaW5lZCI7aWYoIWRvY3VtZW50LmdldEVsZW1lbnRCeUlk fHxiPT10eXBlb2YgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQpcmV0dXJuO3ZhciBh PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGQpO2lmKGI9PXR5cGVvZiBhfHxudWxs PT1hfHxiPT10eXBlb2YgYS5jbGFzc05hbWUpcmV0dXJuO2lmKGMpYS5jbGFzc05h bWU9IlRvcE5hdkNlbGxMaW5rSG92ZXIiO2Vsc2UgYS5jbGFzc05hbWU9IlRvcE5h dkNlbGxMaW5rIn1mdW5jdGlvbiBTdHJFbmNvZGVVcmxDb21wb25lbnQoYSl7VUxT MXloOjt2YXIgYj0idW5kZWZpbmVkIjtpZih0eXBlb2YgYT09Ynx8bnVsbD09YSly ZXR1cm4gIiI7aWYodHlwZW9mIGVuY29kZVVSSUNvbXBvbmVudCE9YilyZXR1cm4g U3RyRW5jb2RlVXJsQ29tcG9uZW50NTUoYSk7cmV0dXJuIFN0ckVuY29kZVVybENv bXBvbmVudDUwKGEpfWZ1bmN0aW9uIFN0ckVuY29kZVVybENvbXBvbmVudDU1KGEp e1VMUzF5aDo7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChhKX1mdW5jdGlvbiBT dHJFbmNvZGVVcmxDb21wb25lbnQ1MChlKXtVTFMxeWg6O2Zvcih2YXIgZD0wLGE9 IiIsZD0wO2Q8ZS5sZW5ndGg7ZCsrKXt2YXIgYj1lLmNoYXJBdChkKSxjPWUuY2hh ckNvZGVBdChkKTtpZihjPDEyOClpZigiISI9PWJ8fCInIj09Ynx8IigiPT1ifHwi KSI9PWJ8fCJ+Ij09YilhKz1iO2Vsc2UgaWYoMD09YylhKz0iJTAwIjtlbHNlIGlm KDEyNz09YylhKz0iJTdGIjtlbHNlIGlmKCIrIj09YilhKz0iJTJCIjtlbHNlIGlm KCIvIj09YilhKz0iJTJGIjtlbHNlIGlmKCJAIj09YilhKz0iJTQwIjtlbHNlIGEr PWVzY2FwZShiKTtlbHNlIGlmKGM8MjA0OCl7YSs9IiUiO2ErPSgoYz4+NikrMTky KS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTthKz0iJSI7YSs9KChjJjYzKSsx MjgpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpfWVsc2V7YSs9IiUiO2ErPSgo Yz4+MTIpKzIyNCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7YSs9IiUiO2Er PSgoYz4+NiY2MykrMTI4KS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTthKz0i JSI7YSs9KChjJjYzKSsxMjgpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpfX1y ZXR1cm4gYX1TdHJpbmcucHJvdG90eXBlLlN0clJlcGxhY2VQYXJhbT1mdW5jdGlv bihnLGUpe1VMUzF5aDo7dmFyIGE9dGhpcztpZighZylyZXR1cm4gYTt2YXIgZCxo PSIiLGs9YS5pbmRleE9mKCIjIik7aWYoayE9LTEpe2g9YS5zdWJzdHIoayk7ZD1h LnJlcGxhY2UoaCwiIikudG9VcHBlckNhc2UoKX1lbHNlIGQ9YS50b1VwcGVyQ2Fz ZSgpO3ZhciBqPWcudG9VcHBlckNhc2UoKSxiPWQuaW5kZXhPZigiPyIraisiPSIp O2lmKGI8MCliPWQuaW5kZXhPZigiJiIraisiPSIpO2lmKGI8MClyZXR1cm4gYTt2 YXIgaT1kLmluZGV4T2YoIiYiLGIrMSk7aWYoaTwwKWItLTt2YXIgYz1hLnN1YnN0 cmluZygwLGIrMSk7aWYoaT49MCljKz1hLnN1YnN0cmluZyhpKzEsYS5sZW5ndGgp O2lmKHR5cGVvZiBlIT0idW5kZWZpbmVkIiYmbnVsbCE9ZSYmZS5sZW5ndGg+MCl7 dmFyIGY9Yy5pbmRleE9mKCI/Iik8MD8iPyI6IiYiO2lmKGMuY2hhckF0KGMubGVu Z3RoLTEpPT1mKWY9IiI7Yys9ZitnKyI9IitlfXJldHVybiBjK2h9O1N0cmluZy5w cm90b3R5cGUuRkNvbnRhaW5zUGFyYW09ZnVuY3Rpb24oZCl7VUxTMXloOjtpZigh ZClyZXR1cm4gZmFsc2U7dmFyIGM9dGhpcy50b1VwcGVyQ2FzZSgpLGI9ZC50b1Vw cGVyQ2FzZSgpLGE9Yy5pbmRleE9mKCI/IitiKyI9Iik7aWYoYTwwKWE9Yy5pbmRl eE9mKCImIitiKyI9Iik7cmV0dXJuIGE+PTB9O1N0cmluZy5wcm90b3R5cGUuU3Ry QWRkVW5pcXVlUGFyYW09ZnVuY3Rpb24oYixhKXtVTFMxeWg6O2lmKG51bGw9PWJ8 fG51bGw9PWF8fCJudWxsIj09YXx8YS5sZW5ndGg9PTApcmV0dXJuIHRoaXM7dmFy IGM9dGhpcy5TdHJSZXBsYWNlUGFyYW0oYiksZD1jLmluZGV4T2YoIj8iKTwwPyI/ IjoiJiI7cmV0dXJuIGMrZCtiKyI9IithfTtmdW5jdGlvbiBOYXZpZ2F0ZUlGcmFt ZUlFKGIsYyl7VUxTMXloOjt2YXIgYT1mcmFtZXNbYl07dHlwZW9mIGEhPSJ1bmRl ZmluZWQiJiZudWxsIT1hJiZhLmxvY2F0aW9uLnJlcGxhY2UoYyl9ZnVuY3Rpb24g TmF2aWdhdGVJRnJhbWVOZXRzY2FwZShkLGMpe1VMUzF5aDo7dmFyIGI9InVuZGVm aW5lZCIsYT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChkKTtpZih0eXBlb2YgYSE9 YiYmbnVsbCE9YSlpZih0eXBlb2YgYS5jb250ZW50V2luZG93IT1iKWEuY29udGVu dFdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKGMpO2Vsc2UgYS5zcmM9Y31mdW5jdGlv biBOYXZpZ2F0ZUlGcmFtZShhLGIpe1VMUzF5aDo7aWYod2luZG93Lm5hdmlnYXRv ci5hcHBOYW1lLnRvVXBwZXJDYXNlKCkuaW5kZXhPZigiTkVUU0NBUEUiKT49MClO YXZpZ2F0ZUlGcmFtZU5ldHNjYXBlKGEsYik7ZWxzZSBOYXZpZ2F0ZUlGcmFtZUlF KGEsYil9ZnVuY3Rpb24gR2V0Q29va2llKGgsYil7VUxTMXloOjtpZigidW5kZWZp bmVkIj09dHlwZW9mIGIpYj0iIjt2YXIgZT1oKyI9IixnPWUubGVuZ3RoLGY9ZG9j dW1lbnQuY29va2llLmxlbmd0aCxhPTA7d2hpbGUoYTxmKXt2YXIgZD1hK2c7aWYo ZG9jdW1lbnQuY29va2llLnN1YnN0cmluZyhhLGQpPT1lKXt2YXIgYz1kb2N1bWVu dC5jb29raWUuaW5kZXhPZigiOyIsZCk7aWYoYz09LTEpYz1kb2N1bWVudC5jb29r aWUubGVuZ3RoO3JldHVybiB1bmVzY2FwZShkb2N1bWVudC5jb29raWUuc3Vic3Ry aW5nKGQsYykpfWE9ZG9jdW1lbnQuY29va2llLmluZGV4T2YoIiAiLGEpKzE7aWYo YT09MClicmVha31yZXR1cm4gYn1mdW5jdGlvbiBTZXRQZXJzaXN0ZW50Q29va2ll KGQsYyl7VUxTMXloOjt2YXIgYj1uZXcgRGF0ZSxhPW5ldyBEYXRlO2Euc2V0VGlt ZShiLmdldFRpbWUoKSsxZTMqNjAqNjAqMjQqMzY1KTttU2V0Q29va2llKGQsYyxm YWxzZSxhKTtyZXR1cm59ZnVuY3Rpb24gRklzVmFyaWFibGVJbkNvb2tpZShiLGEp e1VMUzF5aDo7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBhKWE9bnVsbDtyZXR1cm4g YSE9R2V0Q29va2llKGIsYSl9ZnVuY3Rpb24gbVNldENvb2tpZShlLGQpe1VMUzF5 aDo7dmFyIGE9bnVsbCxiPW1TZXRDb29raWUuYXJndW1lbnRzLGM9bVNldENvb2tp ZS5hcmd1bWVudHMubGVuZ3RoLGk9Yz4yP2JbMl06ZmFsc2UsZj1jPjM/YlszXTph LGg9Yz40P2JbNF06Ii8iLGc9Yz41P2JbNV06YSxqPWM+Nj9iWzZdOmZhbHNlO2lm KGkmJiIiIT1HZXRDb29raWUoZSkpZD1HZXRDb29raWUoZSkrIiwiK2Q7ZG9jdW1l bnQuY29va2llPWUrIj0iK2QrKGY9PWE/IiI6IjsgZXhwaXJlcz0iK2YudG9HTVRT dHJpbmcoKSkrKGg9PWE/IiI6IjsgcGF0aD0iK2gpKyhnPT1hPyIiOiI7IGRvbWFp bj0iK2cpKyhqPT10cnVlPyI7IHNlY3VyZSI6IiIpO3JldHVybn1mdW5jdGlvbiBT dHJHZXRDb29raWUoYSl7VUxTMXloOjtyZXR1cm4gR2V0Q29va2llKGEsIm5hIil9 ZnVuY3Rpb24gbURlbGV0ZUNvb2tpZShiKXtVTFMxeWg6O3ZhciBhPW5ldyBEYXRl O2Euc2V0RGF0ZShhLmdldERhdGUoKS0xMCk7bVNldENvb2tpZShiLCIiLGZhbHNl LGEpfWZ1bmN0aW9uIFN0ckdldEFyZ3VtZW50VmFsdWUoYSl7VUxTMXloOjt2YXIg Yj1uZXcgUmVnRXhwKCJbXFw/Jl0iK2ErIj0oW14mXSopIiwiaSIpO2lmKCFiLnRl c3QobG9jYXRpb24pKXJldHVybiBudWxsO3JldHVybiBiLmV4ZWMobG9jYXRpb24p WzBdLnN1YnN0cmluZyhhLmxlbmd0aCsyKX1mdW5jdGlvbiBSb2xsb3ZlcihkLGUs YyxiKXtVTFMxeWg6O3ZhciBhPXRoaXM7YS5ub3JtYWw9bmV3IEltYWdlO2Eubm9y bWFsLnNyYz1kO2EuaGlnaD1uZXcgSW1hZ2U7YS5oaWdoLnNyYz1lO2EucmF0ZWRP bj1uZXcgSW1hZ2U7YS5yYXRlZE9uLnNyYz1jO2EucmF0ZWRPZmY9bmV3IEltYWdl O2EucmF0ZWRPZmYuc3JjPWJ9ZnVuY3Rpb24gRkNoZWNrT2ZmaWNlUmVzdHJpY3Rp b24oYSl7VUxTMXloOjt2YXIgYz0idW5kZWZpbmVkIjtVcGRhdGVPZmZpY2VSZXN0 cmljdGlvbnNDb29raWUoZmFsc2UpO2lmKHR5cGVvZiBhPT1jfHwhKGE+PTAmJmE8 PTYpKXJldHVybiBmYWxzZTt2YXIgYj1TdHJHZXRPZmZpY2VSZXN0cmljdGlvbnND b29raWUoKTtpZih0eXBlb2YgYj09Y3x8bnVsbD09Ynx8YT49Yi5sZW5ndGgpcmV0 dXJuIGZhbHNlO3JldHVybiAiMSI9PWIuY2hhckF0KGEpfWZ1bmN0aW9uIEZSZWRp cmVjdElmT2ZmaWNlUmVzdHJpY3Rpb24oYil7VUxTMXloOjtpZighRkNoZWNrT2Zm aWNlUmVzdHJpY3Rpb24oYikpcmV0dXJuIGZhbHNlO3ZhciBjPSIiLGE9IiI7aWYo MD09YilhPSIyMCI7ZWxzZSBpZigxPT1iKXtjPSJUQyI7YT0iMjEifWVsc2UgaWYo Mj09Yil7Yz0iUkMiO2E9IjIyIn1lbHNlIGlmKDM9PWIpe2M9IlRDIjthPSIyMyJ9 ZWxzZSBpZig1PT1iKWE9IjI1IjtlbHNlIGlmKDY9PWIpYT0iMjYiO2Vsc2UgcmV0 dXJuIGZhbHNlO3ZhciBkPSIvdGVtcGxhdGVzL2RpcmVjdGRvd25sb2FkLmFzcHg/ cmVzdWx0PSIrYTtpZihudWxsIT1jJiZjLmxlbmd0aD4wKXtkKz0iJnNpdGU9Ijtk Kz1jfXdpbmRvdy5sb2NhdGlvbi5ocmVmPWQ7cmV0dXJuIHRydWV9dmFyIGdfUmF0 aW5nSW5zdGFuY2VJZD1udWxsO2Z1bmN0aW9uIENvbW1lbnRPblRoaXNUZW1wbGF0 ZShhKXtVTFMxeWg6O3ZhciBjPVN0ckdldEFyZ3VtZW50VmFsdWUoImF2IiksYj1T dHJHZXRBcmd1bWVudFZhbHVlKCJDYXRlZ29yeUlkIik7aWYoZ19SYXRpbmdJbnN0 YW5jZUlkIT1udWxsKWErPSImYXBmYmtpZD0iK1N0ckVuY29kZVVybENvbXBvbmVu dChnX1JhdGluZ0luc3RhbmNlSWQpO2lmKGIhPW51bGwmJmIubGVuZ3RoPjApYSs9 IiZDYXRlZ29yeUlkPSIrYjtpZihjIT1udWxsJiZjLmxlbmd0aD4wKWErPSImYXY9 IitjO2xvY2F0aW9uLmhyZWY9YX1mdW5jdGlvbiBPYmpHZXRWZXJzaW9uRGV0ZWN0 b3IoKXtVTFMxeWg6O3ZhciBvPSJTaG9ja3dhdmUgRmxhc2giLG09IlNob2Nrd2F2 ZSBGbGFzaCAyLjAiLGY9bnVsbCxkPXRydWUsZT1mYWxzZSxiPXtmUGx1Z0luU3Vw cG9ydGVkOmUsZklzSUU1QW5kQWJvdmU6ZSxmSXNGaXJlRm94MV81QW5kQWJvdmU6 ZSxmSXNJRTZBbmRMZXNzOmUsZklzSUU6ZX0sYz1uYXZpZ2F0b3IudXNlckFnZW50 LnRvTG93ZXJDYXNlKCksbD1uYXZpZ2F0b3IuYXBwVmVyc2lvbi50b0xvd2VyQ2Fz ZSgpLGEsaTtpZihjLmluZGV4T2YoIndpbiIpIT0tMSYmYy5pbmRleE9mKCJtYWMi KT09LTEpe3ZhciBoPWwuaW5kZXhPZigibXNpZSIpLGc9Yy5pbmRleE9mKCJmaXJl Zm94Iik7aWYoaCE9LTEmJmMuaW5kZXhPZigib3BlcmEiKT09LTEpe2IuZklzSUU9 ZDthPXBhcnNlSW50KGwuc3Vic3RyaW5nKGgrNSxsLmluZGV4T2YoIjsiLGgpKSk7 aWYoIWlzTmFOKGEpJiZhPDcpYi5mSXNJRTZBbmRMZXNzPWQ7aWYoIWlzTmFOKGEp JiZhPj01KXtiLmZJc0lFNUFuZEFib3ZlPWQ7Zm9yKHZhciBrPTEyO2s+PTc7ay0t KXRyeXt2YXIgcT1uZXcgQWN0aXZlWE9iamVjdCgiU2hvY2t3YXZlRmxhc2guU2hv Y2t3YXZlRmxhc2guIitrKTtpZihxIT1mKXtiLmZQbHVnSW5TdXBwb3J0ZWQ9ZDti cmVha319Y2F0Y2gocil7fX19ZWxzZSBpZihnIT0xKXthPXBhcnNlSW50KGMuc3Vi c3RyaW5nKGcrOCkpO2k9cGFyc2VJbnQoYy5zdWJzdHJpbmcoZysxMCkpO2lmKCFp c05hTihhKSYmYT49Mnx8IWlzTmFOKGEpJiZhPj0xJiYhaXNOYU4oaSkmJmk+PTUp e2IuZklzRmlyZUZveDFfNUFuZEFib3ZlPWQ7aWYobmF2aWdhdG9yLnBsdWdpbnMm JihuYXZpZ2F0b3IucGx1Z2luc1ttXSE9Znx8bmF2aWdhdG9yLnBsdWdpbnNbb10h PWYpKXt2YXIgajtpZihuYXZpZ2F0b3IucGx1Z2luc1ttXSE9ZilqPW5hdmlnYXRv ci5wbHVnaW5zW21dLmRlc2NyaXB0aW9uO2Vsc2Ugaj1uYXZpZ2F0b3IucGx1Z2lu c1tvXS5kZXNjcmlwdGlvbjt2YXIgcD1qLnNwbGl0KCIgIiksbj1wYXJzZUludChw WzJdLDApO2lmKCFpc05hTihuKSYmbj49NyliLmZQbHVnSW5TdXBwb3J0ZWQ9ZH19 fX1yZXR1cm4gYn1mdW5jdGlvbiBPcGVuUGxheWVyKGEpe1VMUzF5aDo7dmFyIGM9 InVuZGVmaW5lZCI7aWYoYT09bnVsbCl0aHJvdyBuZXcgRXJyb3IoIk1ldGFkYXRh IHBhcmFtZXRlciBpcyBub3Qgc2V0LiIpO3ZhciBiPXR5cGVvZiBnX3N0clJlbmRl cmluZ1NpdGVSb290UmVsYXRpdmUhPWM/Z19zdHJSZW5kZXJpbmdTaXRlUm9vdFJl bGF0aXZlOiIvIixkPXR5cGVvZiBhLlBsYXllciE9Yz9hLlBsYXllci50b0xvd2Vy Q2FzZSgpOiIiLGg9dHlwZW9mIGEuRG93bmxvYWRBc3NldElkIT1jP2EuRG93bmxv YWRBc3NldElkOiIiLGc9dHlwZW9mIGEuV2lkdGghPWM/YS5XaWR0aDowLGY9dHlw ZW9mIGEuSGVpZ2h0IT1jP2EuSGVpZ2h0OjAsZT1mO2lmKGQ9PSJzaWx2ZXJsaWdo dCIpe2IrPSJwbGF5ZXIuYXNweD8mc3RhbmRhbG9uZT10cnVlJmF1dG9wbGF5PXRy dWUiO2UrPTM2fWVsc2UgaWYoZD09Im1lZGlhcGxheWVyIiliKz0iYXNzdHZpZC5h c3B4PyZ0eXBlPW1lZGlhcGxheWVyIjtlbHNlIGlmKGQ9PSJmbGFzaCIpYis9ImFz c3R2aWQuYXNweD8mdHlwZT1mbGFzaCI7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoIlVu a25vd24gcGxheWVyIHBhcmFtZXRlcjogIitkKTtiKz0iJmFzc2V0aWQ9IitoO2Ir PSImdndpZHRoPSIrZztiKz0iJnZoZWlnaHQ9IitmO09wZW5WaWRlbyhiLGcsZSl9 ZnVuY3Rpb24gUmVuZGVyUGxheWVyKGEpe1VMUzF5aDo7dmFyIGI9InVuZGVmaW5l ZCI7aWYoYT09bnVsbCl0aHJvdyBuZXcgRXJyb3IoIk1ldGFkYXRhIHBhcmFtZXRl ciBpcyBub3Qgc2V0LiIpO3ZhciBnPXR5cGVvZiBnX2ZJc1RyYWluaW5nQ291cnNl IT1iP2dfZklzVHJhaW5pbmdDb3Vyc2U6ZmFsc2Usaj10eXBlb2YgZ19mSXNQcmlu dGVyRnJpZW5kbHlNb2RlIT1iP2dfZklzUHJpbnRlckZyaWVuZGx5TW9kZTpmYWxz ZTtpZihnJiZqKXJldHVybjt2YXIgaT0iIjtpZih0eXBlb2YgZ19uVmlkZW9QbGF5 ZXJJbmRleCE9Yil7aT1nX25WaWRlb1BsYXllckluZGV4LnRvU3RyaW5nKCk7Z19u VmlkZW9QbGF5ZXJJbmRleCsrfXZhciBmPXR5cGVvZiBhLlBsYXllciE9Yj9hLlBs YXllci50b0xvd2VyQ2FzZSgpOiIiLGw9dHlwZW9mIGEuVHlwZSE9Yj9hLlR5cGUu dG9Mb3dlckNhc2UoKToiIixoPXR5cGVvZiBhLkRvd25sb2FkQXNzZXRJZCE9Yj9h LkRvd25sb2FkQXNzZXRJZDoiIixrPXR5cGVvZiBhLlRodW1ibmFpbEFzc2V0SWQh PWI/YS5UaHVtYm5haWxBc3NldElkOiIiLGU9dHlwZW9mIGEuV2lkdGghPWI/YS5X aWR0aDowLGM9dHlwZW9mIGEuSGVpZ2h0IT1iP2EuSGVpZ2h0OjAsZDtpZihsPT0i d21hIil7Yz00NTtkPSJBdWRpb1BsYXllckRpdiJ9ZWxzZSBkPSJWaWRlb1BsYXll ckRpdiIraTtpZihlPT0wKWU9Zz83MjA6NDAwO2lmKGM9PTApYz1nPzU0MDozMDA7 aWYoZj09InNpbHZlcmxpZ2h0IilSZW5kZXJTaWx2ZXJsaWdodFBsYXllcihoLGQs ZSxjKTtlbHNlIGlmKGY9PSJtZWRpYXBsYXllciIpUmVuZGVyQXVkaW9QbGF5ZXIo aCxkLGUsYyk7ZWxzZSBpZihmPT0iZmxhc2giKVJlbmRlckZsYXNoVmlkZW9QbGF5 ZXIoaCxrLGQsZSxjKTtlbHNlIHRocm93IG5ldyBFcnJvcigiVW5rbm93biBwbGF5 ZXIgcGFyYW1ldGVyOiAiK2YpfWZ1bmN0aW9uIFJlbmRlclNpbHZlcmxpZ2h0UGxh eWVyKGMsZSxnLGYpe1VMUzF5aDo7dmFyIGEsYixkPXR5cGVvZiBnX2ZJc1RyYWlu aW5nQ291cnNlIT0idW5kZWZpbmVkIj9nX2ZJc1RyYWluaW5nQ291cnNlOmZhbHNl O2lmKGQpe2E9IlRyYWluaW5nIjtiPXRydWV9ZWxzZXthPSJIZWxwQXJ0aWNsZSI7 Yj1mYWxzZX0obmV3IFZpZGVvQ29udHJvbCgiVmlkZW9QbGF5ZXIiLGUsYyxjLGcs ZixnX25NYXJrZXRMY2lkLGZhbHNlLGIsYSkpLlJlbmRlcigpfWZ1bmN0aW9uIFJl bmRlckF1ZGlvUGxheWVyKGssaixoLGYpe1VMUzF5aDo7dmFyIGM9JyIgJyxiPSci PicsaT1PYmpHZXRWZXJzaW9uRGV0ZWN0b3IoKSxlPWdfc3RyUmVkaXJVcmwrIj9B c3NldElkPSIraysiJmV4dD13bWEiLGE9IiI7YSs9JzxkaXYgc3R5bGU9InRleHQt YWxpZ246Y2VudGVyO3dpZHRoPTEwMCU7Ij4nO3ZhciBkPVN0ckdldEF1ZGlvUGxh eWVyVm9sdW1lQ29va2llKCksZz1TdHJHZXRBdWRpb1BsYXllck11dGVDb29raWUo KTtpZihpLmZJc0lFNUFuZEFib3ZlKXthKz0nPE9CSkVDVCBpZD0iTWVkaWFQbGF5 ZXIiIGNsYXNzaWQ9IkNMU0lEOjIyRDZGMzEyLUIwRjYtMTFEMC05NEFCLTAwODBD NzRDN0U5NSIgd2lkdGg9IicraCsnIiBoZWlnaHQ9IicrZisnIiB0eXBlPSJhcHBs aWNhdGlvbi94LW9sZW9iamVjdCI+JzthKz0nPFBBUkFNIE5BTUU9InNyYyIgVkFM VUU9IicrZStiO2ErPSc8UEFSQU0gTkFNRT0idWlNb2RlIiBWQUxVRT0iZnVsbCI+ JzthKz0nPFBBUkFNIE5BTUU9ImVuYWJsZUNvbnRleHRNZW51IiBWQUxVRT0iZmFs c2UiPic7YSs9JzxQQVJBTSBOQU1FPSJhdXRvU3RhcnQiIFZBTFVFPSJ0cnVlIj4n O2ErPSc8UEFSQU0gTkFNRT0ic3RyZXRjaFRvRml0IiBWQUxVRT0idHJ1ZSI+Jzth Kz0nPFBBUkFNIE5BTUU9Im11dGUiIFZBTFVFPSInK2crYjthKz0nPFBBUkFNIE5B TUU9InZvbHVtZSIgVkFMVUU9IicrZCtiO2ErPSI8L09CSkVDVD4ifWVsc2V7YSs9 JzxlbWJlZCBpZD0iTWVkaWFQbGF5ZXIiIHR5cGU9ImFwcGxpY2F0aW9uL3gtbXBs YXllcjIiICc7YSs9J3BsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1pY3Jvc29mdC5j b20vV2luZG93cy9NZWRpYVBsYXllci8iICc7YSs9J3NyYz0iJytlKyciIGFsaWdu PSJtaWRkbGUiICc7YSs9J3dpZHRoPSInK2grYzthKz0naGVpZ2h0PSInK2YrYzth Kz0nbXV0ZT0iJytnK2M7YSs9J3ZvbHVtZT0iJytkK2M7YSs9J3Nob3dzdGF0dXNi YXI9ImZhbHNlIj4nO2ErPSI8L2VtYmVkPiJ9YSs9IjwvZGl2PiI7ZG9jdW1lbnQu d3JpdGUoJzxkaXYgaWQ9IicraitiKTtkb2N1bWVudC53cml0ZShhKTtkb2N1bWVu dC53cml0ZSgiPC9kaXY+Iil9ZnVuY3Rpb24gU3RyR2V0QXVkaW9QbGF5ZXJWb2x1 bWVDb29raWUoKXtVTFMxeWg6O3ZhciBiPUdldENvb2tpZSgiQVdTX3BsYXlfdm9s Iik7aWYoYilyZXR1cm4gYjtlbHNle3ZhciBhPWRvY3VtZW50LmdldEVsZW1lbnRC eUlkKCJNZWRpYVBsYXllciIpO2lmKGEpe2lmKGEuc2V0dGluZ3MpcmV0dXJuICI1 MCI7aWYoYS5Wb2x1bWUpcmV0dXJuICItNjAwIn19cmV0dXJuICI1MCJ9ZnVuY3Rp b24gU3RyR2V0QXVkaW9QbGF5ZXJNdXRlQ29va2llKCl7VUxTMXloOjtyZXR1cm4g R2V0Q29va2llKCJBV1NfcGxheV9tdXQiLCJmYWxzZSIpfWZ1bmN0aW9uIFJlbmRl ckZsYXNoVmlkZW9QbGF5ZXIoYyxqLGwsYixlKXtVTFMxeWg6O3ZhciBkPSI8L2Rp dj4iLGk9JzwvZGl2PjxkaXYgY2xhc3M9ImNkQnRuUiI+Jm5ic3A7PC9kaXY+PC9h PjwvdGQ+JyxoPSc8ZGl2IGNsYXNzPSJjZEJ0bkwiPiZuYnNwOzwvZGl2PjxkaXYg Y2xhc3M9ImNkQnRuTSI+JyxnPSJQbGF5U3RvcEZsYXNoUGxheWVyKCIsaz1PYmpH ZXRWZXJzaW9uRGV0ZWN0b3IoKSxmPWdfc3RyUmVkaXJVcmwrIj9Bc3NldElkPSIr aisiJmV4dD1wbmciLGE9IiI7YSs9JzxkaXYgc3R5bGU9InRleHQtYWxpZ246Y2Vu dGVyO3dpZHRoPTEwMCU7Ij4nO2ErPSc8ZGl2IHN0eWxlPSJ3aWR0aD0nK2IrJ3B4 OyI+JztpZighay5mUGx1Z0luU3VwcG9ydGVkKXthKz0nPGEgaHJlZj0iJytmKyci Pic7YSs9JzxpbWcgYm9yZGVyPSIwIiBzcmM9IicrZisnIi8+JzthKz0iPC9hPiI7 YSs9Z19zdHJJbnN0YWxsRmxhc2h9ZWxzZXt2YXIgbT1nK2UrIiwgIitiKyIsJyIr YysiJywgdHJ1ZSk7IixuPWcrZSsiLCAiK2IrIiwnIitjKyInLCBmYWxzZSk7Ijth Kz0nPGRpdiBhbGlnbj0iY2VudGVyIj4nO2ErPSc8dGFibGUgY2VsbHBhZGRpbmc9 IjAiIGNlbGxzcGFjaW5nPSIwIiBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0OyB3aWR0 aDonK2IrJ3B4OyI+PHRyPjx0ZD4nO2ErPSc8dGFibGUgY2VsbHBhZGRpbmc9IjAi IGNlbGxzcGFjaW5nPSIwIj48dHI+JzthKz0nPHRkPjxhIGlkPSJNZWRpYVBsYXlC dXR0b24iIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgb25jbGljaz0iJyttKyci IGNsYXNzPSJjZEJ0biI+JzthKz1oO2ErPWdfc3RyVHJhaW5pbmdQbGF5QW5pbWF0 aW9uO2ErPWk7YSs9Jzx0ZCBzdHlsZT0id2lkdGg6MjBweCIvPic7YSs9Jzx0ZD48 YSBpZD0iTWVkaWFTdG9wQnV0dG9uIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCki IG9uY2xpY2s9IicrbisnIiBjbGFzcz0iY2RCdG4iID4nO2ErPWg7YSs9Z19zdHJU cmFpbmluZ1Jld2luZEFuaW1hdGlvbjthKz1pO2ErPSI8L3RyPjwvdGFibGU+Ijth Kz0nPC90ZD48L3RyPjx0ciBzdHlsZT0iaGVpZ2h0OjE1cHgiIC8+PHRyPjx0ZCBp ZD0idGRGbGFzaFBhcmVudCI+JzthKz1DcmVhdGVGbGFzaE9iamVjdChlLGIsYyxm YWxzZSk7YSs9IjwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PiJ9YSs9ZDthKz1kO2Rv Y3VtZW50LndyaXRlKCc8ZGl2IGlkPSInK2wrJyI+Jyk7ZG9jdW1lbnQud3JpdGUo YSk7ZG9jdW1lbnQud3JpdGUoZCl9ZnVuY3Rpb24gUGxheVN0b3BGbGFzaFBsYXll cihlLGYsYixjKXtVTFMxeWg6O3ZhciBhPSQoIiN0ZEZsYXNoUGFyZW50Iik7aWYo YSl7JCgiI0ZsYXNoUGxheWVyIikucmVtb3ZlKCk7dmFyIGQ9Q3JlYXRlRmxhc2hP YmplY3QoZSxmLGIsYyk7YS5hcHBlbmQoZCl9fWZ1bmN0aW9uIENyZWF0ZUZsYXNo T2JqZWN0KGQsZSxnLGMpe1VMUzF5aDo7dmFyIGI9Z19zdHJSZWRpclVybCsiP0Fz c2V0SWQ9IitnKyImZXh0PXN3ZiIsZj1PYmpHZXRWZXJzaW9uRGV0ZWN0b3IoKSxh PSIiO2lmKGYuZklzSUU1QW5kQWJvdmUpe2ErPSc8T0JKRUNUIENMQVNTSUQ9IkNM U0lEOkQyN0NEQjZFLUFFNkQtMTFDRi05NkI4LTQ0NDU1MzU0MDAwMCIgSUQ9IkZs YXNoUGxheWVyIiBUQUJJTkRFWD0iLTEiIFdJRFRIPSInK2UrJyIgSEVJR0hUPSIn K2QrJyIgQk9SREVSPSIwIj4nO2ErPSc8UEFSQU0gTkFNRT0iTW92aWUiIFZBTFVF PSInK2IrJyIvPic7YSs9JzxQQVJBTSBOQU1FPSJTcmMiIFZBTFVFPSInK2IrJyIv Pic7YSs9JzxQQVJBTSBOQU1FPSJNZW51IiBWQUxVRT0idHJ1ZSIvPic7YSs9JzxQ QVJBTSBOQU1FPSJRdWFsaXR5IiBWQUxVRT0iaGlnaCIvPic7YSs9Yz8nPFBBUkFN IE5BTUU9IlBsYXkiIFZBTFVFPSIxIi8+JzonPFBBUkFNIE5BTUU9IlBsYXkiIFZB TFVFPSIwIi8+JzthKz0nPFBBUkFNIE5BTUU9IkZsYXNoVmFycyIgVkFMVUU9IiIv Pic7YSs9JzxQQVJBTSBOQU1FPSJTY2FsZSIgVkFMVUU9IlNob3dBbGwiLz4nO2Er PSc8UEFSQU0gTkFNRT0iRW1iZWRNb3ZpZSIgVkFMVUU9IjAiLz4nO2ErPSc8UEFS QU0gTkFNRT0iU2VhbWxlc3NUYWJiaW5nIiBWQUxVRT0iMSIvPic7YSs9JzxQQVJB TSBOQU1FPSJfY3giIFZBTFVFPSIxNTc0MyIvPic7YSs9JzxQQVJBTSBOQU1FPSJf Y3kiIFZBTFVFPSI3OTM4Ii8+JzthKz0nPFBBUkFNIE5BTUU9IkJhc2UiIFZBTFVF PSIiLz4nO2ErPSc8UEFSQU0gTkFNRT0iV21vZGUiIFZBTFVFPSJXaW5kb3ciLz4n O2ErPSI8L09CSkVDVD4ifWVsc2V7YSs9JzxFTUJFRCBuYW1lPSJGbGFzaFBsYXll ciIgaWQ9IkZsYXNoUGxheWVyIiBsb29wPSJmYWxzZSIgcXVhbGl0eT0iaGlnaCIn O2ErPWM/JyBwbGF5PSJ0cnVlIic6JyBwbGF5PSJmbGFzZSInO2ErPScgYWxsb3dz Y3JpcHRhY2Nlc3M9ImFsd2F5cyIgd21vZGU9Im9wYXF1ZSIgdHlwZT0iYXBwbGlj YXRpb24veC1zaG9ja3dhdmUtZmxhc2giIHNyYz0iJytiKyciIGhlaWdodD0iJytk KyciIHdpZHRoPSInK2UrJyI+PC9FTUJFRD4nfXJldHVybiBhfXZhciBzdHJJc1J0 bD0iIixhbGxEaXZzSW5QYWdlPW51bGwsYWxsSW1hZ2VzSW5QYWdlPW51bGwsZkV4 cGFuZGVkQXNzaXN0YW5jZT1mYWxzZSxwb3B1cFdpbjtmdW5jdGlvbiBvcGVuV2lu ZG93KGEsYyl7VUxTMXloOjt2YXIgYj0id2lkdGg9NDUyLGhlaWdodD01NzIsdG9w PTAsbGVmdD0wLGFsd2F5c1JhaXNlZD15ZXMsdG9vbGJhcj0wLGRpcmVjdG9yaWVz PTAsbWVudWJhcj0wLHN0YXR1cz0xLHJlc2l6YWJsZT15ZXMsbG9jYXRpb249MCxz Y3JvbGxiYXJzPTEsY29weWhpc3Rvcnk9MCI7aWYodHlwZW9mIHBvcHVwV2luIT0i b2JqZWN0Inx8bnVsbD09cG9wdXBXaW4pcG9wdXBXaW49d2luZG93Lm9wZW4oYSxj LGIpO2Vsc2UgaWYoIXBvcHVwV2luLmNsb3NlZClwb3B1cFdpbi5sb2NhdGlvbi5o cmVmPWE7ZWxzZSBwb3B1cFdpbj13aW5kb3cub3BlbihhLGMsYik7cG9wdXBXaW4u Zm9jdXMoKX1mdW5jdGlvbiBFeHBhbmREaXYoYSl7VUxTMXloOjt2YXIgYz0idW5k ZWZpbmVkIjtJbml0aWFsaXplR2xvYmFsRGF0YSgpO2lmKG51bGw9PWF8fHR5cGVv ZiBhPT1jKXJldHVybjt2YXIgZD1hbGxEaXZzSW5QYWdlW2FdO2lmKG51bGw9PWR8 fHR5cGVvZiBkPT1jKXJldHVybjtkLnN0eWxlLmRpc3BsYXk9ImJsb2NrIjt2YXIg Yj1hbGxJbWFnZXNJblBhZ2VbYSsiX2ltZyJdO2lmKG51bGwhPWImJnR5cGVvZiBi IT1jKXtiLnNyYz1PT1V0aWwuR2V0Q29kZUltYWdlKCJnZW5lcmFsIiwibWludXMu Z2lmIik7Yi5hbHQ9c3RySGlkZX19ZnVuY3Rpb24gQ29sbGFwc2VEaXYoYSl7VUxT MXloOjt2YXIgYz0idW5kZWZpbmVkIjtJbml0aWFsaXplR2xvYmFsRGF0YSgpO2lm KG51bGw9PWF8fHR5cGVvZiBhPT1jKXJldHVybjt2YXIgZD1hbGxEaXZzSW5QYWdl W2FdO2lmKG51bGw9PWR8fHR5cGVvZiBkPT1jKXJldHVybjtkLnN0eWxlLmRpc3Bs YXk9Im5vbmUiO3ZhciBiPWFsbEltYWdlc0luUGFnZVthKyJfaW1nIl07aWYobnVs bCE9YiYmdHlwZW9mIGIhPWMpe2Iuc3JjPU9PVXRpbC5HZXRDb2RlSW1hZ2UoImdl bmVyYWwiLCJwbHVzLmdpZiIpO2IuYWx0PXN0clNob3d9fWZ1bmN0aW9uIFRvZ2ds ZURpdihhKXtVTFMxeWg6O3ZhciBjPSJ1bmRlZmluZWQiO0luaXRpYWxpemVHbG9i YWxEYXRhKCk7aWYobnVsbD09YXx8dHlwZW9mIGE9PWMpcmV0dXJuO3ZhciBiPWFs bERpdnNJblBhZ2VbYV07aWYobnVsbD09Ynx8dHlwZW9mIGI9PWMpcmV0dXJuO2lm KGIuc3R5bGUuZGlzcGxheS50b1VwcGVyQ2FzZSgpIT0iQkxPQ0siKUV4cGFuZERp dihhKTtlbHNlIENvbGxhcHNlRGl2KGEpfWZ1bmN0aW9uIEFsdGVyQWxsRGl2cyhh KXtVTFMxeWg6O3ZhciBlPSJibG9jayIsZD0iZGl2SGlkZUFsbCIsYz0iZGl2U2hv d0FsbCIsYj0idW5kZWZpbmVkIjtJbml0aWFsaXplR2xvYmFsRGF0YSgpO2lmKG51 bGw9PWFsbERpdnNJblBhZ2V8fHR5cGVvZiBhbGxEaXZzSW5QYWdlPT1iKXJldHVy bjtpZih0eXBlb2YgYWxsRGl2c0luUGFnZVtjXSE9YiYmdHlwZW9mIGFsbERpdnNJ blBhZ2VbZF0hPWIpaWYoYT09ZSl7YWxsRGl2c0luUGFnZVtjXS5zdHlsZS5kaXNw bGF5PSJub25lIjthbGxEaXZzSW5QYWdlW2RdLnN0eWxlLmRpc3BsYXk9ZX1lbHNl e2FsbERpdnNJblBhZ2VbY10uc3R5bGUuZGlzcGxheT1lO2FsbERpdnNJblBhZ2Vb ZF0uc3R5bGUuZGlzcGxheT0ibm9uZSJ9QWx0ZXJBbGxEaXZzU3BhbnMoZG9jdW1l bnQuYm9keS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiRElWIiksYSk7QWx0ZXJBbGxE aXZzU3BhbnMoZG9jdW1lbnQuYm9keS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiU1BB TiIpLGEpfWZ1bmN0aW9uIEFsdGVyQWxsRGl2c1NwYW5zKGEsZyl7VUxTMXloOjt2 YXIgZj0iYmxvY2siLGU9bnVsbCxkPSJ1bmRlZmluZWQiO2lmKHR5cGVvZiBhPT1k fHxlPT1hKXJldHVybjtmb3IodmFyIGI9MDtiPGEubGVuZ3RoO2IrKylpZih0eXBl b2YgYVtiXSE9ZCYmZSE9YVtiXSYmdHlwZW9mIGFbYl0uaWQhPWQmJmUhPWFbYl0u aWQmJmFbYl0uaWQubGVuZ3RoPjApe2lmKDA9PWFbYl0uaWQuaW5kZXhPZigiZGl2 RXhwQ29sbEFzc3RfIikpe3ZhciBjPWFsbEltYWdlc0luUGFnZVthW2JdLmlkKyJf aW1nIl07aWYoZz09Zil7YVtiXS5zdHlsZS5kaXNwbGF5PWY7aWYodHlwZW9mIGMh PWQmJmUhPWMpe2Muc3JjPU9PVXRpbC5HZXRDb2RlSW1hZ2UoImdlbmVyYWwiLCJt aW51cy5naWYiKTtjLmFsdD1zdHJIaWRlfX1lbHNle2FbYl0uc3R5bGUuZGlzcGxh eT0ibm9uZSI7aWYodHlwZW9mIGMhPWQmJmUhPWMpe2Muc3JjPU9PVXRpbC5HZXRD b2RlSW1hZ2UoImdlbmVyYWwiLCJwbHVzLmdpZiIpO2MuYWx0PXN0clNob3d9fX1p ZigwPT1hW2JdLmlkLmluZGV4T2YoImRpdklubGluZURlZl8iKSlpZihnPT1mKWFb Yl0uc3R5bGUuZGlzcGxheT0iaW5saW5lIjtlbHNlIGFbYl0uc3R5bGUuZGlzcGxh eT0ibm9uZSJ9fWZ1bmN0aW9uIFRvZ2dsZUFsbERpdnMoKXtVTFMxeWg6O0luaXRp YWxpemVHbG9iYWxEYXRhKCk7aWYoZkV4cGFuZGVkQXNzaXN0YW5jZSlBbHRlckFs bERpdnMoIm5vbmUiKTtlbHNlIEFsdGVyQWxsRGl2cygiYmxvY2siKTtmRXhwYW5k ZWRBc3Npc3RhbmNlPSFmRXhwYW5kZWRBc3Npc3RhbmNlfWZ1bmN0aW9uIEluaXRp YWxpemVHbG9iYWxEYXRhKCl7VUxTMXloOjt2YXIgZT1udWxsLGQ9InVuZGVmaW5l ZCI7aWYoZCE9dHlwZW9mIHN0clJ0bClzdHJJc1J0bD1zdHJSdGw7dmFyIGM9ZG9j dW1lbnQuYm9keS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiRElWIiksYj1kb2N1bWVu dC5ib2R5LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJTUEFOIiksZz0wLGY9MDtpZih0 eXBlb2YgYyE9ZCYmZSE9YylnPWMubGVuZ3RoO2lmKHR5cGVvZiBiIT1kJiZlIT1i KWY9Yi5sZW5ndGg7dmFyIGE9MDthbGxEaXZzSW5QYWdlPVtdO2ZvcihhPTA7YTxn O2ErKylpZih0eXBlb2YgY1thXS5pZCE9ZCYmZSE9Y1thXS5pZCYmY1thXS5pZC5s ZW5ndGg+MClhbGxEaXZzSW5QYWdlW2NbYV0uaWRdPWNbYV07Zm9yKGE9MDthPGY7 YSsrKWlmKHR5cGVvZiBiW2FdLmlkIT1kJiZlIT1iW2FdLmlkJiZiW2FdLmlkLmxl bmd0aD4wKWFsbERpdnNJblBhZ2VbYlthXS5pZF09YlthXTthbGxJbWFnZXNJblBh Z2U9ZG9jdW1lbnQuYm9keS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiSU1HIil9ZnVu Y3Rpb24gT25TZWVBbHNvQ2xpY2tlZCgpe1VMUzF5aDo7dmFyIGQ9Im5vbmUiLGU9 ImRpdlNlZUFsc28iLGM9ImRpdlNlZUFsc29IaWRlQnVsbGV0IixhPSJkaXZTZWVB bHNvU2hvd0J1bGxldCIsYj0idW5kZWZpbmVkIjtJbml0aWFsaXplR2xvYmFsRGF0 YSgpO2lmKG51bGw9PWFsbERpdnNJblBhZ2V8fHR5cGVvZiBhbGxEaXZzSW5QYWdl PT1iKXJldHVybjtpZih0eXBlb2YgYWxsRGl2c0luUGFnZVthXSE9YiYmdHlwZW9m IGFsbERpdnNJblBhZ2VbY10hPWIpaWYoYWxsRGl2c0luUGFnZVthXS5zdHlsZS5k aXNwbGF5LnRvVXBwZXJDYXNlKCk9PSJJTkxJTkUiKXthbGxEaXZzSW5QYWdlW2Vd LnN0eWxlLmRpc3BsYXk9ImJsb2NrIjthbGxEaXZzSW5QYWdlW2FdLnN0eWxlLmRp c3BsYXk9ZDthbGxEaXZzSW5QYWdlW2NdLnN0eWxlLmRpc3BsYXk9ImlubGluZSJ9 ZWxzZXthbGxEaXZzSW5QYWdlW2VdLnN0eWxlLmRpc3BsYXk9ZDthbGxEaXZzSW5Q YWdlW2FdLnN0eWxlLmRpc3BsYXk9ImlubGluZSI7YWxsRGl2c0luUGFnZVtjXS5z dHlsZS5kaXNwbGF5PWR9fXZhciBRVUlaX0NPT0tJRV9OQU1FPSJRVUlaX0RBVEEi O2Z1bmN0aW9uIFNldFF1aXpDb29raWUoYyxiKXtVTFMxeWg6O3ZhciBhPUdldENv b2tpZShRVUlaX0NPT0tJRV9OQU1FKTtpZihudWxsIT1hJiYwIT1hLmxlbmd0aCl7 dmFyIGQ9YS5pbmRleE9mKGMpO2lmKGQ+PTApe3ZhciBlPWEuaW5kZXhPZigiICIs ZCsxKSxnPWU+MD9hLnN1YnN0cihlKToiIixmPWI9PW51bGw/IiI6YysiOiIrYjth PWEuc3Vic3RyKDAsZCkrZitnfWVsc2UgaWYoYiE9bnVsbClhKz0iICIrYysiOiIr Yn1lbHNlIGE9YysiOiIrYjttU2V0Q29va2llKFFVSVpfQ09PS0lFX05BTUUsYSl9 ZnVuY3Rpb24gU3RyR2V0UXVpekNvb2tpZShkKXtVTFMxeWg6O3ZhciBiPUdldENv b2tpZShRVUlaX0NPT0tJRV9OQU1FKTtpZihudWxsIT1iJiYwIT1iLmxlbmd0aCl7 dmFyIGE9Yi5pbmRleE9mKGQpO2lmKGE+PTApe2E9Yi5pbmRleE9mKCI6IixhKzEp O2lmKGE+MCl7YSsrO3ZhciBjPWIuaW5kZXhPZigiICIsYSsxKTtpZihjPT0tMSly ZXR1cm4gYi5zdWJzdHIoYSk7ZWxzZSByZXR1cm4gYi5zdWJzdHJpbmcoYSxjKX19 fXJldHVybiAiIn1mdW5jdGlvbiBTaG93RWxlbWVudChiKXtVTFMxeWg6O3ZhciBh PUVsbUdldFBhZ2VFbGVtZW50UXVpeihiKTtpZihhIT1udWxsKWEuc3R5bGUuZGlz cGxheT0iaW5saW5lIn1mdW5jdGlvbiBFbG1HZXRQYWdlRWxlbWVudFF1aXooYSl7 VUxTMXloOjtpZihkb2N1bWVudC5hbGwpcmV0dXJuIGRvY3VtZW50LmFsbFthXTtl bHNlIGlmKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKXJldHVybiBkb2N1bWVudC5n ZXRFbGVtZW50QnlJZChhKTtlbHNlIGlmKGRvY3VtZW50LmxheWVycylyZXR1cm4g ZG9jdW1lbnQuTWFpbkZvcm0uZWxlbWVudHNbYV07cmV0dXJuIG51bGx9ZnVuY3Rp b24gZm5NYWlsKCl7VUxTMXloOjt2YXIgYztnX3N0ck1haWxUb1VybD1TdHJVcGRh dGVRdWl6VG9rZW5zKGdfc3RyTWFpbFRvVXJsKTt2YXIgYT1sb2NhdGlvbi5ocmVm LGI9YS5pbmRleE9mKCI/Iik7aWYoYj4tMSlhPWEuc3Vic3RyKDAsYik7Yz0vJVF1 aXpfVXJsJSUyNi9nO2dfc3RyTWFpbFRvVXJsPWdfc3RyTWFpbFRvVXJsLnJlcGxh Y2UoYyxhKyI/Iik7bG9jYXRpb24uaHJlZj1TdHJYTUxEZWNvZGUoZ19zdHJNYWls VG9VcmwpfWZ1bmN0aW9uIGZuTWFpbnRhaW5BbnN3ZXIoZSl7VUxTMXloOjt2YXIg Yj1lLmlkLGM9Yi5pbmRleE9mKCJfIiwwKSxhPXBhcnNlSW50KGIuc3Vic3RyaW5n KDEsYykpLGQ9Yi5zdWJzdHJpbmcoYysxKTtnX3N0clVzZXJBbnN3ZXJzPSIwIitn X3N0clVzZXJBbnN3ZXJzLnN1YnN0cmluZygxLGEpK2QrKGE9PWdfaVRvdGFsUXVl c3Rpb25zPyIiOmdfc3RyVXNlckFuc3dlcnMuc3Vic3RyaW5nKGErMSkpO1NldFF1 aXpDb29raWUoZ19zdHJRdWl6SUQsZ19zdHJVc2VyQW5zd2Vycyl9ZnVuY3Rpb24g U3VibWl0QW5zd2Vycygpe1VMUzF5aDo7Z19zdHJVc2VyQW5zd2Vycz0iMSIrZ19z dHJVc2VyQW5zd2Vycy5zdWJzdHJpbmcoMSxnX3N0clVzZXJBbnN3ZXJzLmxlbmd0 aCk7U2V0UXVpekNvb2tpZShnX3N0clF1aXpJRCxnX3N0clVzZXJBbnN3ZXJzKTtk b2N1bWVudC5sb2NhdGlvbi5ocmVmPWdfc3RyUXVpeklEKyIuYXNweD9jdHQ9NiZz dWJtaXQ9MSI7cmV0dXJuIHRydWV9ZnVuY3Rpb24gUHJlbG9hZEFuc3dlcnMoKXtV TFMxeWg6O2Zvcih2YXIgYj0iIixhPTE7YTw9Z19pVG90YWxRdWVzdGlvbnM7YSsr KXtiPWdfc3RyVXNlckFuc3dlcnMuY2hhckF0KGEpO2lmKGI9PSIwIilTaG93RWxl bWVudCgicSIrYSsiX1VuYW5zd2VyZWQiKTtlbHNlIGlmKGI9PWdfc3RyQ29ycmVj dEFuc3dlcnMuY2hhckF0KGEpKVNob3dFbGVtZW50KCJxIithKyJfQ29ycmVjdCIp O2Vsc2V7U2hvd0VsZW1lbnQoInEiK2ErIl9JbmNvcnJlY3QiKTtTaG93RWxlbWVu dCgicSIrYSsiXyIrYil9fWdfc0F2Z1Njb3JlIT0iMC4wIiYmZ19zQXZnU2NvcmUh PSIwLDAiJiZTaG93RWxlbWVudCgicXVpek1ldHJpY3MiKX1mdW5jdGlvbiBQcmVs b2FkUXVlc3Rpb25zKCl7VUxTMXloOjt2YXIgYixjO2dfc3RyVXNlckFuc3dlcnM9 U3RyR2V0UXVpekNvb2tpZShnX3N0clF1aXpJRCk7Zm9yKHZhciBhPTE7YTw9Z19p VG90YWxRdWVzdGlvbnM7YSsrKXtiPWdfc3RyVXNlckFuc3dlcnMuc3Vic3RyaW5n KGEsYSsxKTtpZihiIT0iMCIpe2M9RWxtR2V0UGFnZUVsZW1lbnRRdWl6KCJxIith KyJfIitiKTtpZihjIT1udWxsKWMuY2hlY2tlZD10cnVlfX19ZnVuY3Rpb24gU3Ry VXBkYXRlUXVpelRva2VucyhhKXtVTFMxeWg6O2lmKHR5cGVvZiBhPT0idW5kZWZp bmVkIilyZXR1cm4gIiI7dmFyIGI7Yj0vJVF1aXpfQXZnU2NvcmUlL2c7YT1hLnJl cGxhY2UoYixnX3NBdmdTY29yZSk7Yj0vJVF1aXpfTnVtYmVyT2ZTY29yZXMlL2c7 YT1hLnJlcGxhY2UoYixnX2lUb3RhbFVzZXJzKTtiPS8lUXVpel9RdWVzdGlvbnMl L2c7YT1hLnJlcGxhY2UoYixnX2lUb3RhbFF1ZXN0aW9ucyk7Yj0vJVF1aXpfU2Nv cmUlL2c7YT1hLnJlcGxhY2UoYixnX2lTY29yZSk7cmV0dXJuIGF9ZnVuY3Rpb24g U3RyWE1MRW5jb2RlKGEpe1VMUzF5aDo7aWYodHlwZW9mIGE9PSJ1bmRlZmluZWQi KXJldHVybiAiIjthPWEucmVwbGFjZSgvJi9nLCImYW1wOyIpO2E9YS5yZXBsYWNl KC8+L2csIiZndDsiKTthPWEucmVwbGFjZSgvPC9nLCImbHQ7Iik7YT1hLnJlcGxh Y2UoLycvZywiJmFwb3M7Iik7YT1hLnJlcGxhY2UoLyIvZywiJnF1b3Q7Iik7cmV0 dXJuIGF9ZnVuY3Rpb24gU3RyWE1MRGVjb2RlKGEpe1VMUzF5aDo7aWYodHlwZW9m IGE9PSJ1bmRlZmluZWQiKXJldHVybiAiIjt2YXIgYjtiPS8mYW1wOy9nO2E9YS5y ZXBsYWNlKGIsIiYiKTtiPS8mZ3Q7L2c7YT1hLnJlcGxhY2UoYiwiPiIpO2I9LyZs dDsvZzthPWEucmVwbGFjZShiLCI8Iik7Yj0vJmFwb3M7L2c7YT1hLnJlcGxhY2Uo YiwiJyIpO2I9LyZxdW90Oy9nO2E9YS5yZXBsYWNlKGIsJyInKTtyZXR1cm4gYX1m dW5jdGlvbiBTdHJUcmltKGEpe1VMUzF5aDo7aWYodHlwZW9mIGE9PSJ1bmRlZmlu ZWQifHxudWxsPT1hKXJldHVybiBudWxsO3doaWxlKGEubGVuZ3RoPjAmJmEuY2hh ckNvZGVBdCgwKTw9MzIpYT1hLnN1YnN0cmluZygxKTt3aGlsZShhLmxlbmd0aD4w JiZhLmNoYXJDb2RlQXQoYS5sZW5ndGgtMSk8PTMyKWE9YS5zdWJzdHJpbmcoMCxh Lmxlbmd0aC0xKTtyZXR1cm4gYX1mdW5jdGlvbiBGSXNDb21tZW50VmFsaWQoYSxk LGMsYil7VUxTMXloOjtpZih0eXBlb2YgYT09InVuZGVmaW5lZCJ8fG51bGw9PWEp e2FsZXJ0KGQpO3JldHVybiBmYWxzZX1hPWEudHJpbSgpO2lmKGEubGVuZ3RoPD0w KXthbGVydChkKTtyZXR1cm4gZmFsc2V9aWYoYz4wJiZhLmxlbmd0aD5jKXtiLmxl bmd0aD4wJiZhbGVydChiKTtyZXR1cm4gZmFsc2V9cmV0dXJuIHRydWV9ZnVuY3Rp b24gRklzRW1haWxBZGRyZXNzVmFsaWQoYSl7VUxTMXloOjt2YXIgYj10cnVlO2lm KHR5cGVvZiBhPT0idW5kZWZpbmVkIilyZXR1cm4gYjtpZihudWxsPT1hKXJldHVy biBiO2lmKDA9PWEubGVuZ3RoKXJldHVybiBiO2Zvcih2YXIgYz0wO2M8YS5sZW5n dGg7YysrKWlmKGEuY2hhckNvZGVBdChjKT4xMjcpcmV0dXJuIGZhbHNlO3JldHVy biBifWZ1bmN0aW9uIFN0clJlcGxhY2UoYSxjLGUpe1VMUzF5aDo7dmFyIGI9InVu ZGVmaW5lZCI7aWYodHlwZW9mIGE9PWJ8fHR5cGVvZiBjPT1ifHx0eXBlb2YgZT09 Ynx8bnVsbD09YXx8bnVsbD09YXx8bnVsbD09YSlyZXR1cm4gYTt2YXIgZD1hLmlu ZGV4T2YoYyk7aWYoZDwwKXJldHVybiBhO3JldHVybiBhLnN1YnN0cmluZygwLGQp K2UrYS5zdWJzdHJpbmcoZCtjLmxlbmd0aCl9ZnVuY3Rpb24gZ29EaXNwbGF5Q291 bnQobSx0LGcsaSl7VUxTMXloOjt2YXIgcT0nPC9TUEFOPjxTUEFOIENMQVNTPSJG ZWVkYmFja1dpekNvdW50ZXJPdmVyVGV4dCI+JyxwPSc8U1BBTiBDTEFTUz0iRmVl ZGJhY2tXaXpDb3VudGVyU3RhciI+JyxkPWZhbHNlLGU9IjwvU1BBTj4iLGs9JzxT UEFOIENMQVNTPSJGZWVkYmFja1dpekNvdW50ZXJUZXh0Ij4nLGI9dHJ1ZSxoPW51 bGwsYT0idW5kZWZpbmVkIjtpZihhPT10eXBlb2YgZkRpc2FibGVDb3VudGVyfHxh PT10eXBlb2YgZkRpc2FibGVDb3VudGVyRmlyc3R8fGE9PXR5cGVvZiBmV2FzTGFz dENvdW50T3ZlcilyZXR1cm47dmFyIG49ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo dCk7aWYoYT09dHlwZW9mIG58fGg9PW4pcmV0dXJuO3ZhciBsPWI7aWYoZkRpc2Fi bGVDb3VudGVyKXtpZihmRGlzYWJsZUNvdW50ZXJGaXJzdCl7ZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoZykuaW5uZXJIVE1MPWsrc3RyR29EaXNwbGF5Q291bnRPSytl O2ZEaXNhYmxlQ291bnRlckZpcnN0PWR9bD1kfXZhciBzPW4udmFsdWUudHJpbSgp LG89bS1zLmxlbmd0aCxjPWgsaj1kO2lmKGEhPXR5cGVvZiBpJiZoIT1pKXtjPWRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKGkpO2lmKGEhPXR5cGVvZiBjJiZoIT1jKWo9 Yn1pZihvPj0wKXtpZihsKWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGcpLmlubmVy SFRNTD1rK1N0clJlcGxhY2Uoc3RyR29EaXNwbGF5Q291bnRPSywiezB9IiwiIitv KStlO2Vsc2UgaWYoZldhc0xhc3RDb3VudE92ZXIpZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQoZykuaW5uZXJIVE1MPWsrc3RyR29EaXNwbGF5Q291bnRPSytlO2ZXYXNM YXN0Q291bnRPdmVyPWQ7aWYoail7dmFyIHI9YjtpZihhIT10eXBlb2YgaUZlZWRi YWNrV2l6U3RhclJhdGVkKXI9aUZlZWRiYWNrV2l6U3RhclJhdGVkPDF8fGlGZWVk YmFja1dpelN0YXJSYXRlZD41O2lmKDA9PXMubGVuZ3RoJiZyKWMuZGlzYWJsZWQ9 YjtlbHNlIGMuZGlzYWJsZWQ9ZH19ZWxzZXtpZihsKXt2YXIgZj1zdHJHb0Rpc3Bs YXlDb3VudE92ZXI7Zj1TdHJSZXBsYWNlKGYsInswfSIsIiIrKG0tbykpO2Y9U3Ry UmVwbGFjZShmLCJ7MX0iLCIiK20pO2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKGcp LmlubmVySFRNTD1wK3N0ckdvRGlzcGxheUNvdW50T3ZlclN0YXIrcStmK2V9ZWxz ZSBpZighZldhc0xhc3RDb3VudE92ZXIpZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo ZykuaW5uZXJIVE1MPXArc3RyR29EaXNwbGF5Q291bnRPdmVyU3RhcitxK3N0ckdv RGlzcGxheUNvdW50T0srZTtmV2FzTGFzdENvdW50T3Zlcj1iO2lmKGopYy5kaXNh YmxlZD1ifX1mdW5jdGlvbiBtb2RpZnlEaXNwbGF5Q291bnQoZCxnLGIpe1VMUzF5 aDo7dmFyIGY9RyhnKTtpZihudWxsPT1mKXJldHVybjt2YXIgaD1mLnZhbHVlLGU9 ZC1oLmxlbmd0aCxjPWRvY3VtZW50LmJvZHkuZ2V0RWxlbWVudHNCeVRhZ05hbWUo IlNQQU4iKTtpZihlPj0wKXtjW2JdLmNsYXNzTmFtZT0iT0ZMYmwiO2NbYl0uaW5u ZXJIVE1MPVN0clJlcGxhY2Uoc3RyR29EaXNwbGF5Q291bnRPSywiezB9IiwiIitl KX1lbHNle3ZhciBhPXN0ckdvRGlzcGxheUNvdW50T3ZlcjthPVN0clJlcGxhY2Uo YSwiezB9IiwiIisoZC1lKSk7YT1TdHJSZXBsYWNlKGEsInsxfSIsIiIrZCk7Y1ti XS5jbGFzc05hbWU9Ik9JTGJsMiI7Y1tiXS5pbm5lckhUTUw9YX19ZnVuY3Rpb24g RklzTWFjKCl7VUxTMXloOjtpZih0eXBlb2Ygd2luZG93Lm5hdmlnYXRvci5wbGF0 Zm9ybSE9InVuZGVmaW5lZCIpcmV0dXJuIC0xIT13aW5kb3cubmF2aWdhdG9yLnBs YXRmb3JtLnRvVXBwZXJDYXNlKCkuaW5kZXhPZigiTUFDIik7ZWxzZSByZXR1cm4g LTEhPW5hdmlnYXRvci51c2VyQWdlbnQudG9VcHBlckNhc2UoKS5pbmRleE9mKCJN QUMiKX1mdW5jdGlvbiBTZXRSZXR1cm5QYXJhbWV0ZXJWYWx1ZShhKXtVTFMxeWg6 O3N0ckF4SW5zdGFsbFJldHVyblBhcmFtZXRlcj1lc2NhcGUoYSl9ZnVuY3Rpb24g RklzU3VwcG9ydGVkV2luZG93cygpe1VMUzF5aDo7cmV0dXJuICgiV2luMzIiPT1u YXZpZ2F0b3IucGxhdGZvcm18fCJXaW42NCI9PW5hdmlnYXRvci5wbGF0Zm9ybSkm Ji0xPT1uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIldpbmRvd3MgOTUiKSYm LTE9PW5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiV2luZG93cyA5OCIpJiYt MT09bmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJXaW5kb3dzIE1FIikmJi0x PT1uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIldpbmRvd3MgTlQgNCIpJiYt MT09bmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJXaW5kb3dzIENFIil9ZnVu Y3Rpb24gRklzQ29ycmVjdFZlcnNpb24oZCl7VUxTMXloOjt2YXIgZT10cnVlLGE9 ZmFsc2UsYixjLGcsaCxmLGw7aWYodHlwZW9mIGQhPSJzdHJpbmciJiZ0eXBlb2Yg c3RyQXhQZXJtQ29va2llIT0idW5kZWZpbmVkIilkPUdldENvb2tpZShzdHJBeFBl cm1Db29raWUpO2lmKCFkfHwiMCI9PWQpcmV0dXJuIGE7Yj1kLnJlcGxhY2UoLywv ZywiLiIpLnNwbGl0KCIuIik7Zz1OdW1iZXIoYlswXSk7aD1OdW1iZXIoYlsxXSk7 Zj1OdW1iZXIoYlsyXSk7bD1OdW1iZXIoYlszXSk7Yz1zdHJSZXFWZXJzaW9uLnNw bGl0KCIsIik7dmFyIGo9TnVtYmVyKGNbMF0pLGs9TnVtYmVyKGNbMV0pLGk9TnVt YmVyKGNbMl0pLG09TnVtYmVyKGNbM10pO2lmKGc+ailyZXR1cm4gZTtpZihnPGop cmV0dXJuIGE7aWYoaD5rKXJldHVybiBlO2lmKGg8aylyZXR1cm4gYTtpZihmPmkp cmV0dXJuIGU7aWYoZjxpKXJldHVybiBhO2lmKGw8bSlyZXR1cm4gYTtyZXR1cm4g ZX1mdW5jdGlvbiBMb2FkQWN0aXZlWChjLGEsYixkKXtVTFMxeWg6O3ZhciBlPSJm dW5jdGlvbiI7aWYoISQuYnJvd3Nlci5tc2llKXt0eXBlb2YgYT09ZSYmYS5jYWxs KCk7cmV0dXJufWlmKHR5cGVvZiBiIT0ibnVtYmVyIiliPTEwO2lmKGI8PTApe3R5 cGVvZiBhPT1lJiZhLmNhbGwoKTtyZXR1cm59dmFyIGY9dHlwZW9mIGQhPSJib29s ZWFuIjtpZihmfHxkKWlmKHR5cGVvZiBEQ1RSTD09Im9iamVjdCImJkRDVFJMLnRh Z05hbWUudG9VcHBlckNhc2UoKT09Ik9CSkVDVCIpe3R5cGVvZiBjPT1lJiZjLmNh bGwoKTtyZXR1cm59ZWxzZSBpZihkKXtPT1V0aWwuVGltZXIoTG9hZEFjdGl2ZVgs MTAwLGMsYSwtLWIsdHJ1ZSk7cmV0dXJufU9PVXRpbC5KU0FzeW5jTG9hZGVyKE9P VXRpbC5TY3JpcHRSZWZlcmVuY2UoT09VSS5BeENvbnRyb2xzSnNVcmwsZnVuY3Rp b24oKXtVTFMxeWg6O0xvYWRBY3RpdmVYKGMsYSxiLHRydWUpfSxmdW5jdGlvbigp e1VMUzF5aDo7TG9hZEFjdGl2ZVgoYyxhLC0tYixmYWxzZSl9KSk7cmV0dXJufWZ1 bmN0aW9uIFNldEFjdGl2ZVhJbnN0YWxsU3RhdHVzKGEpe1VMUzF5aDo7ZklzQWN0 aXZlWEluc3RhbGxlZD1mYWxzZTtpZighZlN1cHBvcnRzQWN0aXZlWHx8ZkRpc2Fi bGVBY3RpdmV4KXJldHVybjt2YXIgYj1GSXNDb3JyZWN0VmVyc2lvbigpO2lmKGJ8 fGEpe3RyeXt3aGlsZSh0eXBlb2YgZG9jdW1lbnQuYm9keSE9Im9iamVjdCIpO0RD VFJMPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9iamVjdCIpO0RDVFJMLmlkPSJE Q1RSTCI7RENUUkwuc3R5bGUuZGlzcGxheT0ibm9uZSI7RENUUkwuY2xhc3NpZD1T dHJpbmcuZm9ybWF0KCJjbHNpZDp7MH0iLHN0ckF4Q2xzaWQpOyQoZG9jdW1lbnQu Ym9keSkucHJlcGVuZChEQ1RSTCl9Y2F0Y2goYyl7fWZJc0FjdGl2ZVhJbnN0YWxs ZWQ9RklzQWN0aXZlWEluc3RhbGxlZCgpOyFmSXNBY3RpdmVYSW5zdGFsbGVkJiZT ZXRQZXJzaXN0ZW50Q29va2llKHN0ckF4UGVybUNvb2tpZSwiMCIpfX1mdW5jdGlv biBGU2hvdWxkUHJvbXB0Rm9yQXgoKXtVTFMxeWg6O3JldHVybiAhKEZJc1Zhcmlh YmxlSW5Db29raWUoIkFXU19Eb250UHJvbXB0X1Nlc3MiKXx8RklzVmFyaWFibGVJ bkNvb2tpZSgiQVdTX0RvbnRQcm9tcHRfUGVybSIpfHx0eXBlb2YgZkRpc2FibGVB Y3RpdmV4IT0idW5kZWZpbmVkIiYmZkRpc2FibGVBY3RpdmV4KX1mdW5jdGlvbiBG SXNEQ1RSTEluc3RhbGxlZCgpe1VMUzF5aDo7cmV0dXJuIGZJc0FjdGl2ZVhJbnN0 YWxsZWR9ZnVuY3Rpb24gRkluc3RhbGxBY3RpdmVYKGQsYixmKXtVTFMxeWg6O3Zh ciBlPWZhbHNlLGM9InVuZGVmaW5lZCI7aWYoYz09dHlwZW9mIGZJc0FjdGl2ZVhJ bnN0YWxsZWR8fGM9PXR5cGVvZiBmSW5zdGFsbGluZ0FjdGl2ZVgpcmV0dXJuIGU7 aWYoYz09dHlwZW9mIGR8fG51bGw9PWQpZD1lO2lmKGM9PXR5cGVvZiBifHxudWxs PT1iKWI9d2luZG93O2lmKGM9PXR5cGVvZiBmfHxudWxsPT1mKWY9ZTtpZighZklz QWN0aXZlWEluc3RhbGxlZCYmIWZJbnN0YWxsaW5nQWN0aXZlWCYmZlN1cHBvcnRz QWN0aXZlWCYmKGR8fEZTaG91bGRQcm9tcHRGb3JBeCgpKSl7Zkluc3RhbGxpbmdB Y3RpdmVYPXRydWU7dmFyIGE9c3RyQXhJbnN0YWxsO2lmKGYpYT1hLnJlcGxhY2Uo InswfSIsZXNjYXBlKGIubG9jYXRpb24ucGF0aG5hbWUuc2xpY2UoMSkrYi5sb2Nh dGlvbi5zZWFyY2grYi5sb2NhdGlvbi5oYXNoKSk7ZWxzZSBhPWEucmVwbGFjZSgi ezB9Iixlc2NhcGUoZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUuc2xpY2UoMSkr ZG9jdW1lbnQubG9jYXRpb24uc2VhcmNoK2IubG9jYXRpb24uaGFzaCkpO2E9YS5y ZXBsYWNlKCJ7MX0iLHN0ckF4SW5zdGFsbFJldHVyblBhcmFtZXRlcik7aWYoYS5p bmRleE9mKCI/Iik8MClhKz0iPyI7ZWxzZSBhKz0iJiI7YSs9c3RyQXhJRE5hbWUr Ij0iK3N0ckF4SUQ7aWYoZkF4VmVyc2lvbk92ZXJyaWRlKXtpZihhLmluZGV4T2Yo Ij8iKTwwKWErPSI/IjtlbHNlIGErPSImIjthKz0icmVxdmVyPSIrZXNjYXBlKHN0 clJlcVZlcnNpb24pfWIubG9jYXRpb24uaHJlZj1hO3JldHVybiBlfXJldHVybiBm SXNBY3RpdmVYSW5zdGFsbGVkfWZ1bmN0aW9uIFN0clJlbW92ZVBhcmFtZXRlckZy b21VcmwoYixhKXtVTFMxeWg6O3JldHVybiBiLlN0clJlcGxhY2VQYXJhbShhKX1m dW5jdGlvbiBGSXNBY3RpdmVYSW5zdGFsbGVkKCl7VUxTMXloOjt2YXIgYj0idW5k ZWZpbmVkIixhO3RyeXthPXR5cGVvZiBEQ1RSTCE9PWImJnR5cGVvZiBEQ1RSTC5W ZXJzaW9uIT09Yn1jYXRjaChjKXthPWZhbHNlfXJldHVybiBhfWZ1bmN0aW9uIFNh ZmVQcmludFdpbmRvdygpe1VMUzF5aDo7dHJ5e3dpbmRvdy5wcmludCgpfWNhdGNo KGEpe319ZnVuY3Rpb24gVHJ5Q2hhcHRlcigpe1VMUzF5aDo7dmFyIGM9ZG9jdW1l bnQuZnJtQ2hhcHRlck5hdjtpZighYylyZXR1cm4gZmFsc2U7dmFyIGI9Yy5DaGFw dGVyTmF2O2lmKCFiKXJldHVybiBmYWxzZTt2YXIgZD1iLnNlbGVjdGVkSW5kZXgs YT1iW2RdLnZhbHVlO2lmKHR5cGVvZiBhIT0idW5kZWZpbmVkIiYmbnVsbCE9YSYm YS5sZW5ndGg+MCl3aW5kb3cubG9jYXRpb24uaHJlZj1hfWZ1bmN0aW9uIFNTdHls ZShhLGIpe1VMUzF5aDo7aWYod2luZG93Lm5hdmlnYXRvci5hcHBOYW1lLnRvVXBw ZXJDYXNlKCkuaW5kZXhPZigiTkVUU0NBUEUiKT49MClTU3R5bGVOZXRzY2FwZShh LGIpO2Vsc2UgaWYod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9VcHBlckNh c2UoKS5pbmRleE9mKCJPUEVSQSIpPj0wKVNTdHlsZU9wZXJhKGEsYik7ZWxzZSBT U3R5bGVJRShhLGIpfWZ1bmN0aW9uIFNTdHlsZU5ldHNjYXBlKGMsZCl7VUxTMXlo Ojt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO2EudHlwZT0i dGV4dC9jc3MiO3ZhciBlPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJo ZWFkIilbMF07ZS5hcHBlbmRDaGlsZChhKTt2YXIgYj1hLnNoZWV0O2IuaW5zZXJ0 UnVsZShjKyIgeyIrZCsifSIsYi5jc3NSdWxlcy5sZW5ndGgpfWZ1bmN0aW9uIFNT dHlsZU9wZXJhKGIsYyl7VUxTMXloOjt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVt ZW50KCJzdHlsZSIpO2EudHlwZT0idGV4dC9jc3MiO3ZhciBkPWRvY3VtZW50Lmdl dEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF07YS5hcHBlbmRDaGlsZChkb2N1 bWVudC5jcmVhdGVUZXh0Tm9kZShiKyIgeyIrYysifSIpKTtkLmFwcGVuZENoaWxk KGEpfWZ1bmN0aW9uIFNTdHlsZUlFKGEsYil7VUxTMXloOjt2YXIgYz1kb2N1bWVu dC5zdHlsZVNoZWV0c1tkb2N1bWVudC5zdHlsZVNoZWV0cy5sZW5ndGgtMV07Yy5h ZGRSdWxlKGEsYil9ZnVuY3Rpb24gU1N0eWxlSChhKXtVTFMxeWg6O1NTdHlsZShh LCJkaXNwbGF5Om5vbmU7Iil9ZnVuY3Rpb24gRml4UGFnZUZvclByaW50aW5nKCl7 VUxTMXloOjtBbHRlckFsbERpdnMoImJsb2NrIik7U1dkdGhORigiX1RvcEh0bWxU YWJsZUNlbGwiKTtTV2R0aE5GKCJfVG9wSHRtbFRhYmxlQ2VsbENoaWxkIik7U1dk dGhORigiX1RvcFRtcGx0SHRtbFRhYmxlIik7U0RzcGx5SCgiX0JvdHRvbUh0bWxS aWdodFNpZGUiKTtTRHNwbHlIKCJfT250X0xlZnROYXZfQ2VsbCIpO1NEc3BseUgo Ik9udFRvY0NlbGwiKTtTRHNwbHlIKCJ0YmxSYXRpbmdzIik7U0RzcGx5SCgibV9S aWdodE5hdiIpO1NEc3BseUgoIl9PbnRfQnJvd3Nlck5vdGljZSIpO1NTdHlsZUgo Ii5SaWdodE5hdkJhY2tncm91bmROZXciKTtTU3R5bGVIKCIuQk9TaWJsaW5nTmF2 Iil9ZnVuY3Rpb24gVXBkYXRlT2ZmaWNlUmVzdHJpY3Rpb25zQ29va2llKHApe1VM UzF5aDo7dmFyIGg9Il9vZmNyZXNzZXQiLGI9bnVsbCxkPSJ1bmRlZmluZWQiO2lm KHdpbmRvdy5uYXZpZ2F0b3IuYXBwTmFtZS50b1VwcGVyQ2FzZSgpLmluZGV4T2Yo Ik5FVFNDQVBFIik+PTB8fHdpbmRvdy5uYXZpZ2F0b3IuYXBwTmFtZS50b1VwcGVy Q2FzZSgpLmluZGV4T2YoIkZJUkVGT1giKT49MHx8d2luZG93Lm5hdmlnYXRvci5h cHBOYW1lLnRvVXBwZXJDYXNlKCkuaW5kZXhPZigiT1BFUkEiKT49MClyZXR1cm47 dmFyIGo9Im9mY3Jlc3NldD0xIjtpZih0eXBlb2YgbG9jYXRpb249PWR8fGI9PWxv Y2F0aW9ufHx0eXBlb2YgbG9jYXRpb24uaHJlZj09ZHx8Yj09bG9jYXRpb24uaHJl Znx8bG9jYXRpb24uaHJlZi5pbmRleE9mKGopPj0wKXJldHVybjt2YXIgZz1TdHJH ZXRPZmZpY2VSZXN0cmljdGlvbnNDb29raWUoKTtpZihiIT1nJiZnLmxlbmd0aD49 NyYmIjEiPT1TdHJHZXRDb29raWUoaCkpe1NldE9mZmljZVJlc3RyaWN0aW9uc0Nv b2tpZShnKTtyZXR1cm59dmFyIHE9bmV3IERhdGUsaz1uZXcgRGF0ZTtrLnNldFRp bWUocS5nZXRUaW1lKCkrMWUzKjYwKjYwKjI0KTttU2V0Q29va2llKGgsIjEiLGZh bHNlLGspO2lmKCIxIiE9U3RyR2V0Q29va2llKGgpKXtTZXRPZmZpY2VSZXN0cmlj dGlvbnNDb29raWUoIjAwMDAwMDAiKTtyZXR1cm59dmFyIGE9YixmPWI7aWYodHlw ZW9mIEF1dGh6Q3RybD09ZHx8dHlwZW9mIEF1dGh6Q3RybC5HZXRPZmZpY2VSZXN0 cmljdGlvbnM9PWQpe2E9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib2JqZWN0Iik7 dHJ5e2EuY2xhc3NpZD0iY2xzaWQ6Qzk3MTJCMTktODM4Qi00NUE1LUFCRjItOUEz MTVERERFRDUwIn1jYXRjaChyKXthPWJ9aWYoYiE9YSl7ZG9jdW1lbnQuYm9keS5h cHBlbmRDaGlsZChhKTtmPWF9fWVsc2UgYT1BdXRoekN0cmw7dmFyIGw9MCxtPWZh bHNlO2lmKHR5cGVvZiBhIT1kJiZiIT1hJiZ0eXBlb2YgYS5HZXRPZmZpY2VSZXN0 cmljdGlvbnMhPWQpe2w9YS5HZXRPZmZpY2VSZXN0cmljdGlvbnMoKTttPXRydWV9 YiE9ZiYmKHR5cGVvZiBkb2N1bWVudC5ib2R5LmNvbnRhaW5zPT1kfHxkb2N1bWVu dC5ib2R5LmNvbnRhaW5zKGYpKSYmZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChm KTtpZighbSl7U2V0T2ZmaWNlUmVzdHJpY3Rpb25zQ29va2llKCIwMDAwMDAwIik7 cmV0dXJufWZvcih2YXIgZT0iIixpPTA7aTw3O2krKylpZigwIT0obCYxPDxpKSll Kz0iMSI7ZWxzZSBlKz0iMCI7U2V0T2ZmaWNlUmVzdHJpY3Rpb25zQ29va2llKGUp O3ZhciBvPVN0ckdldE9mZmljZVJlc3RyaWN0aW9uc0Nvb2tpZSgpO2lmKGUhPW8p cmV0dXJuO2lmKGU9PWcpcmV0dXJuO2lmKHApe3ZhciBuPWxvY2F0aW9uLmhhc2gs Yz1sb2NhdGlvbi5ocmVmO2M9Yy5zdWJzdHIoMCxjLmxlbmd0aC1uLmxlbmd0aCk7 aWYoYy5pbmRleE9mKCI/Iik8MCljKz0iPyI7ZWxzZSBjKz0iJiI7bVNldENvb2tp ZSgibG9nIiwiOTgiKTtsb2NhdGlvbi5yZXBsYWNlKGMraituKX19ZnVuY3Rpb24g U2V0T2ZmaWNlUmVzdHJpY3Rpb25zQ29va2llKGEpe1VMUzF5aDo7dmFyIGI9IiI7 aWYodHlwZW9mIGEhPSJ1bmRlZmluZWQiJiZudWxsIT1hKWI9YTt2YXIgZD1uZXcg RGF0ZSxjPW5ldyBEYXRlO2Muc2V0VGltZShkLmdldFRpbWUoKSsxZTMqNjAqNjAq MjQqMzY1KjIpO21TZXRDb29raWUoIl9vZmNyZXMiLGIsZmFsc2UsYyl9ZnVuY3Rp b24gU3RyR2V0T2ZmaWNlUmVzdHJpY3Rpb25zQ29va2llKCl7VUxTMXloOjtyZXR1 cm4gR2V0Q29va2llKCJfb2ZjcmVzIiwiIil9ZnVuY3Rpb24gT25Tb3J0SXRlbUNs aWNrKGEpe1VMUzF5aDo7bVNldENvb2tpZSgiQVdTX1NvcnRCeSIsYS5vcHRpb25z W2Euc2VsZWN0ZWRJbmRleF0udmFsdWUpO3ZhciBiPWxvY2F0aW9uLmhyZWY7bG9j YXRpb24uaHJlZj1TdHJSZW1vdmVQYXJhbWV0ZXJGcm9tVXJsKGIsInBhZ2UiKX1m dW5jdGlvbiBBcHBseVNjb3BlKGIpe1VMUzF5aDo7RygiZGRUeXBlRmlsdGVyIiku ZGlzYWJsZWQ9dHJ1ZTt2YXIgYT1sb2NhdGlvbi5ocmVmO2E9U3RyUmVtb3ZlUGFy YW1ldGVyRnJvbVVybChhLCJzYyIpO2E9U3RyUmVtb3ZlUGFyYW1ldGVyRnJvbVVy bChhLCJDVFQiKTthPVN0clJlbW92ZVBhcmFtZXRlckZyb21VcmwoYSwiT3JpZ2lu Iik7YT1TdHJSZW1vdmVQYXJhbWV0ZXJGcm9tVXJsKGEsIlBvbGVBc3NldElEIik7 YT1TdHJSZW1vdmVCb29rbWFya0Zyb21VcmwoYSk7aWYoYj09bnVsbHx8Yi5sZW5n dGg9PTApbG9jYXRpb24uaHJlZj1hO2Vsc2UgaWYoYS5pbmRleE9mKCI/Iik+MCls b2NhdGlvbi5ocmVmPWErIiZzYz0iK2I7ZWxzZSBsb2NhdGlvbi5ocmVmPWErIj9z Yz0iK2J9ZnVuY3Rpb24gQXBwbHlDYXRlZ29yeUZpbHRlcihiKXtVTFMxeWg6O2lm KCJub29wIj09YilyZXR1cm47RygiZGRDYXRlZ29yeUZpbHRlciIpLmRpc2FibGVk PXRydWU7dmFyIGE9bG9jYXRpb24uaHJlZjthPVN0clJlbW92ZVBhcmFtZXRlckZy b21VcmwoYSwiQ2F0ZWdvcnlJRCIpO2E9U3RyUmVtb3ZlUGFyYW1ldGVyRnJvbVVy bChhLCJDVFQiKTthPVN0clJlbW92ZVBhcmFtZXRlckZyb21VcmwoYSwiT3JpZ2lu Iik7YT1TdHJSZW1vdmVQYXJhbWV0ZXJGcm9tVXJsKGEsIlBvbGVBc3NldElEIik7 YT1TdHJSZW1vdmVCb29rbWFya0Zyb21VcmwoYSk7aWYoYj09bnVsbHx8Yi5sZW5n dGg9PTApbG9jYXRpb24uaHJlZj1hO2Vsc2UgaWYoYS5pbmRleE9mKCI/Iik+MCls b2NhdGlvbi5ocmVmPWErIiZDYXRlZ29yeUlEPSIrYjtlbHNlIGxvY2F0aW9uLmhy ZWY9YSsiP0NhdGVnb3J5SUQ9IitifWZ1bmN0aW9uIFN0clJlbW92ZUJvb2ttYXJr RnJvbVVybChhKXtVTFMxeWg6O3ZhciBiPWEuaW5kZXhPZigiIyIpO2lmKGI8MCly ZXR1cm4gYTtyZXR1cm4gYS5zdWJzdHJpbmcoMCxiKX1mdW5jdGlvbiBFbG1HZXRT YWZlRWxlbWVudChhKXtVTFMxeWg6O2lmKG51bGw9PWF8fDA+PWEubGVuZ3RoKXJl dHVybiBudWxsO3ZhciBiPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGEpO2lmKHR5 cGVvZiBiPT0idW5kZWZpbmVkIilyZXR1cm4gbnVsbDtyZXR1cm4gYn1mdW5jdGlv biBUYWJDdHJsVGFiQ2xpY2soYSxlKXtVTFMxeWg6O3ZhciBjPW51bGwsaj0iYVRh YkN0cmxfIixpPSJkaXZUYWJDdHJsXyIsaD0idGRUYWJDdHJsUmlnaHRfIixnPSJ0 ZFRhYkN0cmxMZWZ0XyIsYj0iXyIsZj0idGRUYWJDdHJsXyIsZD0iIjtldmFsKCJz dHJMYXN0Q2F0PXN0clRhYkN0cmxMYXN0VG9wQ2F0XyIrYSsiOyIpO3ZhciBtPUVs bUdldFNhZmVFbGVtZW50KGYrYStiK2QpLHI9RWxtR2V0U2FmZUVsZW1lbnQoZyth K2IrZCkscT1FbG1HZXRTYWZlRWxlbWVudChoK2ErYitkKSxrPUVsbUdldFNhZmVF bGVtZW50KGkrYStiK2QpLG49RWxtR2V0U2FmZUVsZW1lbnQoaithK2IrZCksbz1F bG1HZXRTYWZlRWxlbWVudChmK2ErYitlKSx0PUVsbUdldFNhZmVFbGVtZW50KGcr YStiK2UpLHM9RWxtR2V0U2FmZUVsZW1lbnQoaCthK2IrZSksbD1FbG1HZXRTYWZl RWxlbWVudChpK2ErYitlKSxwPUVsbUdldFNhZmVFbGVtZW50KGorYStiK2UpO2lm KGMhPW0pe20uY2xhc3NOYW1lPSJjZEJDVENUYWJDZWxsIjtyLmNsYXNzTmFtZT0i Y2RCQ1RDVGFiQ2VsbExlZnQiO3EuY2xhc3NOYW1lPSJjZEJDVENUYWJDZWxsUmln aHQifWlmKGMhPWspay5zdHlsZS5kaXNwbGF5PSJub25lIjtpZihjIT1uKW4uc3R5 bGUuY3Vyc29yPSJhdXRvIjtpZihjIT1vKXtvLmNsYXNzTmFtZT0iY2RCQ1RDVGFi Q2VsbFNlbCI7dC5jbGFzc05hbWU9ImNkQkNUQ1RhYkNlbGxTZWxMZWZ0IjtzLmNs YXNzTmFtZT0iY2RCQ1RDVGFiQ2VsbFNlbFJpZ2h0In1pZihjIT1sKWwuc3R5bGUu ZGlzcGxheT0iYmxvY2siO2lmKGMhPXApcC5zdHlsZS5jdXJzb3I9ImRlZmF1bHQi O2V2YWwoInN0clRhYkN0cmxMYXN0VG9wQ2F0XyIrYSsiPXN0clRhYklkOyIpfWZ1 bmN0aW9uIExOUHJvZFNlbGVjdGVkKGEpe1VMUzF5aDo7aWYobnVsbCE9YSYmYS5s ZW5ndGg+MClpZigiKiI9PWEuY2hhckF0KDApKXdpbmRvdy5vcGVuKGEuc3Vic3Ry aW5nKDEsYS5sZW5ndGgpLCJfYmxhbmsiKTtlbHNlIGxvY2F0aW9uLmhyZWY9YX1m dW5jdGlvbiBEZWxldGVDaGlsZEVsZW1lbnQoZCl7VUxTMXloOjt2YXIgYz0idW5k ZWZpbmVkIixhPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGQpO2lmKGM9PXR5cGVv ZiBhfHxudWxsPT1hKXJldHVybjt2YXIgYj1hLnBhcmVudE5vZGU7aWYoYz09dHlw ZW9mIGJ8fG51bGw9PWIpcmV0dXJuO2IucmVtb3ZlQ2hpbGQoYSl9ZnVuY3Rpb24g b2Zmc2V0KGEsYyl7VUxTMXloOjt2YXIgYj0wO2lmKGE9PW51bGwpcmV0dXJuIGI7 d2hpbGUoYS5vZmZzZXRQYXJlbnQpe2IrPWM9PSJ4Ij9hLm9mZnNldExlZnQ6YS5v ZmZzZXRUb3A7YT1hLm9mZnNldFBhcmVudH1yZXR1cm4gYn1mdW5jdGlvbiBzZXRO b25TZWFyY2hTdHJpbmcoYSl7VUxTMXloOjtpZihhIT1udWxsJiZhIT0idW5kZWZp bmVkIiYmYS52YWx1ZT09IiIpe2EudmFsdWU9c3RyTm9uU2VhcmNoU3RyaW5nO3Nl dFNlYXJjaE9mZkNvbG9yKGEpO2ZFbnRlcmVkVGV4dD1mYWxzZX19ZnVuY3Rpb24g c2V0U2VhcmNoT2ZmQ29sb3IoYSl7VUxTMXloOjthLmNsYXNzTmFtZT0iY2RzZWFy Y2hib3ggY2RTZWFyY2hCb3hPZmZDb2xvciJ9ZnVuY3Rpb24gc2V0U2VhcmNoT25D b2xvcihhKXtVTFMxeWg6O2EuY2xhc3NOYW1lPSJjZHNlYXJjaGJveCBjZFNlYXJj aEJveE9uQ29sb3IifWZ1bmN0aW9uIGRlbGF5ZWRjbG9zZSgpe1VMUzF5aDo7ZlNl YXJjaEZvY3VzPWZhbHNlO3dpbmRvdy5zZXRUaW1lb3V0KCJzZWFyY2hjbG9zZSgp Iiw0MDApfWZ1bmN0aW9uIHNldFNlYXJjaEZvY3VzKCl7VUxTMXloOjtmU2VhcmNo Rm9jdXM9dHJ1ZX1mdW5jdGlvbiB3bXBDcmVhdGUoYSl7VUxTMXloOjt0cnl7d21w N09iaj1uZXcgQWN0aXZlWE9iamVjdCgiV01QbGF5ZXIuT0NYLjciKX1jYXRjaChi KXt9aWYodHlwZW9mIHdtcDdPYmo9PSJvYmplY3QiKXt3bXBDcmVhdGVBY3RpdmVY KGEpO2dfZldtcDc9dHJ1ZTt3bXA3PTF9ZWxzZXt3bXBDcmVhdGVEb3duTGV2ZWwo YSk7d21wNj0xfX1mdW5jdGlvbiB3bXBDcmVhdGVBY3RpdmVYKGEpe1VMUzF5aDo7 ZG9jdW1lbnQud3JpdGUoJzxvYmplY3QgaWQ9IndtcCIgd2lkdGg9IjEwMCUiIGNs YXNzaWQ9IkNMU0lEOjZCRjUyQTUyLTM5NEEtMTFEMy1CMTUzLTAwQzA0Rjc5RkFB NiI+Jyk7ZG9jdW1lbnQud3JpdGUoJzxwYXJhbSBuYW1lPSJ1cmwiIHZhbHVlPSIn K2ErJyI+Jyk7ZG9jdW1lbnQud3JpdGUoJzxwYXJhbSBuYW1lPSJ1aW1vZGUiIHZh bHVlPSJtaW5pIj4nKTtkb2N1bWVudC53cml0ZSgnPHBhcmFtIG5hbWU9ImVuYWJs ZWNvbnRleHRtZW51IiB2YWx1ZT0iZmFsc2UiPicpO2RvY3VtZW50LndyaXRlKCc8 cGFyYW0gbmFtZT0iYXV0b3N0YXJ0IiB2YWx1ZT0iZmFsc2UiPicpO2RvY3VtZW50 LndyaXRlKCI8L29iamVjdD4iKX1mdW5jdGlvbiB3bXBDcmVhdGVEb3duTGV2ZWwo YSl7VUxTMXloOjtkb2N1bWVudC53cml0ZSgnPG9iamVjdCBpZD0id21wb2xkIiB3 aWR0aD0iMjU1IiBoZWlnaHQ9IjQwIiBjbGFzc2lkPSJDTFNJRDoyMkQ2RjMxMi1C MEY2LTExRDAtOTRBQi0wMDgwQzc0QzdFOTUiPicpO2RvY3VtZW50LndyaXRlKCc8 cGFyYW0gbmFtZT0iZmlsZW5hbWUiIHZhbHVlPSInK2ErJyI+Jyk7ZG9jdW1lbnQu d3JpdGUoJzxwYXJhbSBuYW1lPSJhbmltYXRpb25hdHN0YXJ0IiB2YWx1ZT0idHJ1 ZSI+Jyk7ZG9jdW1lbnQud3JpdGUoJzxwYXJhbSBuYW1lPSJhdXRvcmV3aW5kIiB2 YWx1ZT0idHJ1ZSI+Jyk7ZG9jdW1lbnQud3JpdGUoJzxwYXJhbSBuYW1lPSJhdXRv c3RhcnQiIHZhbHVlPSJmYWxzZSI+Jyk7ZG9jdW1lbnQud3JpdGUoJzxwYXJhbSBu YW1lPSJzaG93YXVkaW9jb250cm9scyIgdmFsdWU9InRydWUiPicpO2RvY3VtZW50 LndyaXRlKCc8cGFyYW0gbmFtZT0ic2hvd3Bvc2l0aW9uY29udHJvbHMiIHZhbHVl PSJmYWxzZSI+Jyk7ZG9jdW1lbnQud3JpdGUoJzxwYXJhbSBuYW1lPSJzaG93c3Rh dHVzYmFyIiB2YWx1ZT0iZmFsc2UiPicpO2RvY3VtZW50LndyaXRlKCc8ZW1iZWQg dHlwZT0iYXBwbGljYXRpb24veC1tcGxheWVyMiInKTtkb2N1bWVudC53cml0ZSgn XHRwbHVnaW5zcGFnZT0iaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL1dpbmRvd3Mv TWVkaWFQbGF5ZXIvIicpO2RvY3VtZW50LndyaXRlKCdcdHNyYz0iJythKyciJyk7 ZG9jdW1lbnQud3JpdGUoJ1x0d2lkdGg9IjIyNSInKTtkb2N1bWVudC53cml0ZSgn XHRoZWlnaHQ9IjQwIicpO2RvY3VtZW50LndyaXRlKCdcdGFuaW1hdGlvbnN0YXJ0 PSJ0cnVlIicpO2RvY3VtZW50LndyaXRlKCdcdGF1dG9yZXdpbmQ9InRydWUiJyk7 ZG9jdW1lbnQud3JpdGUoJ1x0YXV0b3N0YXJ0PSJ0cnVlIicpO2RvY3VtZW50Lndy aXRlKCdcdHNob3dhdWRpb2NvbnRyb2xzPSJ0cnVlIicpO2RvY3VtZW50LndyaXRl KCdcdHNob3dwb3NpdGlvbmNvbnRyb2xzPSJ0cnVlIicpO2RvY3VtZW50LndyaXRl KCdcdHNob3dzdGF0dXNiYXI9InRydWUiJyk7ZG9jdW1lbnQud3JpdGUoIiAvPiIp O2RvY3VtZW50LndyaXRlKCI8L29iamVjdD4iKX1mdW5jdGlvbiB3bXBJbml0aWFs aXplKGIpe1VMUzF5aDo7aWYoIWdfZldtcDcpe2RvY3VtZW50LmdldEVsZW1lbnRC eUlkKCJjZFdtcEFjdGl2ZVgiKS5zdHlsZS5kaXNwbGF5PSJub25lIjtkb2N1bWVu dC5nZXRFbGVtZW50QnlJZCgiY2RXbXBFbWJlZGRlZCIpLnN0eWxlLmRpc3BsYXk9 ImJsb2NrIjtyZXR1cm59Zm9yKHZhciBhPTAsYT0wO2E8cmdIb3Zlci5sZW5ndGg7 YSsrKWNhY2hlSW1hZ2UoYixyZ0hvdmVyW2FdKTtmb3IoYT0wO2E8cmdEb3duLmxl bmd0aDthKyspY2FjaGVJbWFnZShiLHJnRG93blthXSk7d21wVm9sdW1lUmVuZGVy KCl9ZnVuY3Rpb24gd21wUGxheSgpe1VMUzF5aDo7dmFyIGE9ImltZ1dtcFBhdXNl Ijtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgid21wIikuY29udHJvbHMucGxheSgp O2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKGEpLnN0eWxlLmRpc3BsYXk9ImlubGlu ZSI7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYSkuZm9jdXMoKTtkb2N1bWVudC5n ZXRFbGVtZW50QnlJZCgiaW1nV21wUGxheSIpLnN0eWxlLmRpc3BsYXk9Im5vbmUi O3dtcEljb25CdG5VcCgiaW1nV21wU3RvcCIsMil9ZnVuY3Rpb24gd21wUGF1c2Uo KXtVTFMxeWg6O3ZhciBhPSJpbWdXbXBQbGF5Ijtkb2N1bWVudC5nZXRFbGVtZW50 QnlJZCgid21wIikuY29udHJvbHMucGF1c2UoKTtkb2N1bWVudC5nZXRFbGVtZW50 QnlJZCgiaW1nV21wUGF1c2UiKS5zdHlsZS5kaXNwbGF5PSJub25lIjtkb2N1bWVu dC5nZXRFbGVtZW50QnlJZChhKS5zdHlsZS5kaXNwbGF5PSJpbmxpbmUiO2RvY3Vt ZW50LmdldEVsZW1lbnRCeUlkKGEpLmZvY3VzKCl9ZnVuY3Rpb24gd21wU3RvcCgp e1VMUzF5aDo7aWYocmdEb3duU3RhdGVbMl0pcmV0dXJuO2RvY3VtZW50LmdldEVs ZW1lbnRCeUlkKCJ3bXAiKS5jb250cm9scy5zdG9wKCk7d21wSWNvbkJ0bkRvd24o ImltZ1dtcFN0b3AiLDIpO2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbWdXbXBQ YXVzZSIpLnN0eWxlLmRpc3BsYXk9Im5vbmUiO2RvY3VtZW50LmdldEVsZW1lbnRC eUlkKCJpbWdXbXBQbGF5Iikuc3R5bGUuZGlzcGxheT0iaW5saW5lIn1mdW5jdGlv biB3bXBNdXRlVG9nZ2xlKCl7VUxTMXloOjt3bXBNdXRlKCFyZ0Rvd25TdGF0ZVsz XSl9ZnVuY3Rpb24gd21wTXV0ZShiKXtVTFMxeWg6O3ZhciBhPSJpbWdXbXBNdXRl Ijtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgid21wIikuc2V0dGluZ3MubXV0ZT1i O2lmKGIpd21wSWNvbkJ0bkRvd24oYSwzKTtlbHNlIHdtcEljb25CdG5VcChhLDMp fWZ1bmN0aW9uIHdtcFZvbHVtZVJlbmRlcigpe1VMUzF5aDo7Zm9yKHZhciBlPWRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ3bXAiKSxkPWUuc2V0dGluZ3Mudm9sdW1l LzIwLGM9ImltZ1dtcFZvbCIsYT0wLGE9MTthPD01O2ErKyl7dmFyIGI9ZG9jdW1l bnQuZ2V0RWxlbWVudEJ5SWQoYythKTtpZihhPD1kKWIuc3JjPU9PVXRpbC5HZXRD b2RlSW1hZ2UoImdlbmVyYWwiLCJ3bXBfdm9sX29uLmdpZiIpO2Vsc2UgYi5zcmM9 T09VdGlsLkdldENvZGVJbWFnZSgiZ2VuZXJhbCIsIndtcF92b2xfb2ZmLmdpZiIp fX1mdW5jdGlvbiB3bXBWb2x1bWVEb3duKCl7VUxTMXloOjt2YXIgYj0iaW1nV21w Vm9sRG93biIsYz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgid21wIiksYT1jLnNl dHRpbmdzLnZvbHVtZS0yMDtpZihhPDApYT0wO2Muc2V0dGluZ3Mudm9sdW1lPWE7 d21wVm9sdW1lUmVuZGVyKCk7d21wTXV0ZShmYWxzZSk7d21wSWNvbkJ0bkRvd24o Yiw0KTtzZXRUaW1lb3V0KCJ3bXBJY29uQnRuVXAoJyIrYisiJywiKzQrIik7Iiwx MDApfWZ1bmN0aW9uIHdtcFZvbHVtZVVwKCl7VUxTMXloOjt2YXIgYj0iaW1nV21w Vm9sVXAiLGM9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIndtcCIpLGE9Yy5zZXR0 aW5ncy52b2x1bWUrMjA7aWYoYT4xMDApYT0xMDA7Yy5zZXR0aW5ncy52b2x1bWU9 YTt3bXBWb2x1bWVSZW5kZXIoKTt3bXBNdXRlKGZhbHNlKTt3bXBJY29uQnRuRG93 bihiLDUpO3NldFRpbWVvdXQoIndtcEljb25CdG5VcCgnIitiKyInLCIrNSsiKTsi LDEwMCl9ZnVuY3Rpb24gd21wSWNvbk92ZXIoYixhKXtVTFMxeWg6O2lmKHJnRG93 blN0YXRlW2FdKXJldHVybjtjdHJsPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGIp O2N0cmwuc3JjPXJnSG92ZXJbYV19ZnVuY3Rpb24gd21wSWNvbk91dChiLGEpe1VM UzF5aDo7aWYocmdEb3duU3RhdGVbYV0pcmV0dXJuO2N0cmw9ZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoYik7Y3RybC5zcmM9cmdEZWZhdWx0W2FdfWZ1bmN0aW9uIHdt cEljb25CdG5Eb3duKGIsYSl7VUxTMXloOjtpZihyZ0Rvd25TdGF0ZVthXSlyZXR1 cm47Y3RybD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChiKTtjdHJsLnNyYz1yZ0Rv d25bYV07cmdEb3duU3RhdGVbYV09dHJ1ZX1mdW5jdGlvbiB3bXBJY29uQnRuVXAo YixhKXtVTFMxeWg6O2N0cmw9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYik7Y3Ry bC5zcmM9cmdEZWZhdWx0W2FdO3JnRG93blN0YXRlW2FdPWZhbHNlfWZ1bmN0aW9u IGNhY2hlSW1hZ2UoYixjKXtVTFMxeWg6O3ZhciBhPW5ldyBJbWFnZTthLnNyYz1j O2IucHVzaChhKX1mdW5jdGlvbiB0b2NUb2dnbGUoZCxlKXtVTFMxeWg6O3ZhciBm PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbWciK2QpLGI9ZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoImRpdiIrZCksYz1iLnN0eWxlLmRpc3BsYXkhPSJub25lIjtp ZighYyYmYi5pbm5lckhUTUw9PSIiKXt2YXIgYT0nPGRpdiBzdHlsZT0iJztpZihm SXNSVEwpYSs9Im1hcmdpbi1yaWdodDoiO2Vsc2UgYSs9Im1hcmdpbi1sZWZ0OiI7 YSs9JzIwcHgiPic7YSs9Z19zdHJVcGRhdGluZ1RleHQ7YSs9IjwvZGl2PiI7Yi5p bm5lckhUTUw9YTtiLnN0eWxlLmRpc3BsYXk9ImJsb2NrIjt4bWxIdHRwPUdldFht bEh0dHAoKTt4bWxIdHRwLm9wZW4oIkdFVCIsIi9zZWFyY2gvY2F0cXVlcnkuYXNw eD9DYXRlZ29yeUlkPSIrZCx0cnVlKTt4bWxIdHRwLm9ucmVhZHlzdGF0ZWNoYW5n ZT1mdW5jdGlvbigpe1VMUzF5aDo7eG1sSHR0cC5yZWFkeVN0YXRlPT00JiZ0b2NF eHBhbmRBc3luYyh4bWxIdHRwLnJlc3BvbnNlWE1MLmRvY3VtZW50RWxlbWVudCxl KX07eG1sSHR0cC5zZW5kKG51bGwpfWVsc2V7Yi5zdHlsZS5kaXNwbGF5PWM/Im5v bmUiOiJibG9jayI7Zi5zcmM9Yz9PT1V0aWwuR2V0Q29kZUltYWdlKCJnZW5lcmFs IiwicGx1cy5naWYiKTpPT1V0aWwuR2V0Q29kZUltYWdlKCJnZW5lcmFsIiwibWlu dXMuZ2lmIil9fWZ1bmN0aW9uIHRvY0V4cGFuZEFzeW5jKGEsYil7VUxTMXloOjtp ZihhPT1udWxsKXJldHVybjtyZ0NhdGVnb3JpZXM9YS5nZXRFbGVtZW50c0J5VGFn TmFtZSgiY2F0ZWdvcnkiKTtpZihyZ0NhdGVnb3JpZXM9PW51bGx8fHJnQ2F0ZWdv cmllcy5sZW5ndGghPTEpcmV0dXJuO3N0ckNhdGVnb3J5PXJnQ2F0ZWdvcmllc1sw XS5maXJzdENoaWxkLm5vZGVWYWx1ZTtkaXZDYXRlZ29yeT1kb2N1bWVudC5nZXRF bGVtZW50QnlJZCgiZGl2IitzdHJDYXRlZ29yeSk7ZGl2Q2F0ZWdvcnkuaW5uZXJI VE1MPXRvY1JlbmRlclN1YkNhdGVnb3JpZXMoYSxiKTtkaXZDYXRlZ29yeS5pbm5l ckhUTUwrPXRvY1JlbmRlckFzc2V0cyhhLGIpO2RpdkNhdGVnb3J5LnN0eWxlLmRp c3BsYXk9ImJsb2NrIjtpbWdDYXRlZ29yeT1kb2N1bWVudC5nZXRFbGVtZW50QnlJ ZCgiaW1nIitzdHJDYXRlZ29yeSk7aW1nQ2F0ZWdvcnkuc3JjPU9PVXRpbC5HZXRD b2RlSW1hZ2UoImdlbmVyYWwiLCJtaW51cy5naWYiKX1mdW5jdGlvbiB0b2NSZW5k ZXJTdWJDYXRlZ29yaWVzKGcsZil7VUxTMXloOjtpZihnPT1udWxsKXJldHVybiAi IjtyZ1N1YkNhdGVnb3JpZXM9Zy5nZXRFbGVtZW50c0J5VGFnTmFtZSgic3ViY2F0 Iik7aWYocmdTdWJDYXRlZ29yaWVzLmxlbmd0aD09MClyZXR1cm4gIiI7dmFyIGE9 Jzx1bCBjbGFzcz0iY2RUT0NDYXRlZ29yeSIgc3R5bGU9Iic7aWYoZklzUlRMKWEr PSJtYXJnaW4tcmlnaHQ6IjtlbHNlIGErPSJtYXJnaW4tbGVmdDoiO2ErPWYqMTU7 YSs9J3B4Ij4nO2Zvcih2YXIgZCxiLGMsZT0wLGU9MDtlPHJnU3ViQ2F0ZWdvcmll cy5sZW5ndGg7ZSsrKXtkPXJnU3ViQ2F0ZWdvcmllc1tlXS5hdHRyaWJ1dGVzO2I9 ZC5nZXROYW1lZEl0ZW0oImlkIikudmFsdWU7Yz1kLmdldE5hbWVkSXRlbSgibmFt ZSIpLnZhbHVlO2ErPSI8bGk+PG5vYnI+IjthKz0iPGEgaHJlZj1cImphdmFzY3Jp cHQ6dG9jVG9nZ2xlKCciO2ErPWI7YSs9IicsIjthKz1mKzE7YSs9Jyk7Ij4nO2Er PSc8aW1nIGlkPSJpbWcnO2ErPWI7YSs9JyIgdGl0bGU9Iic7YSs9Z19zdHJFeHBh bmRvQWx0VGV4dDthKz0nIiBzcmM9IicrT09VdGlsLkdldENvZGVJbWFnZSgiZ2Vu ZXJhbCIsInBsdXMuZ2lmIikrJyIgLz4nO2ErPSI8L2E+IjthKz0iJm5ic3A7Jm5i c3A7IjthKz0nPGI+PGEgaHJlZj0iJzthKz1iO2ErPScuYXNweCIgdGl0bGU9Iic7 YSs9YzthKz0nIj4nO2ErPWM7YSs9IjwvYT48L2I+IjthKz0iPC9ub2JyPjwvbGk+ IjthKz0nPGRpdiBpZD0iZGl2JzthKz1iO2ErPSciIHN0eWxlPSJkaXNwbGF5Om5v bmUiPjwvZGl2Pid9YSs9IjwvdWw+IjtyZXR1cm4gYX1mdW5jdGlvbiB0b2NSZW5k ZXJBc3NldHMoZil7VUxTMXloOjtpZihmPT1udWxsKXJldHVybiAiIjt2YXIgYj1m LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhc3NldCIpO2lmKGIubGVuZ3RoPT0wKXJl dHVybiAiIjtmb3IodmFyIGE9Jzx1bCBjbGFzcz0iY2RUT0NDb250ZW50Ij4nLGQs YyxlPTAsZT0wO2U8Yi5sZW5ndGg7ZSsrKXtkPWJbZV0uYXR0cmlidXRlcztjPWQu Z2V0TmFtZWRJdGVtKCJuYW1lIikudmFsdWU7YSs9JzxsaT48bm9icj48YSBocmVm PSInO2ErPWQuZ2V0TmFtZWRJdGVtKCJpZCIpLnZhbHVlO2ErPScuYXNweCIgdGl0 bGU9Iic7YSs9YzthKz0nIj4nO2ErPWM7YSs9IjwvYT48L25vYnI+PC9saT4ifWEr PSI8L3VsPiI7cmV0dXJuIGF9ZnVuY3Rpb24gU2hvd1ByYWN0aWNlVmVyV2Fybmlu ZyhkKXtVTFMxeWg6O3ZhciBiPSJ1bmRlZmluZWQiLGE9ZG9jdW1lbnQuZ2V0RWxl bWVudEJ5SWQoImRpdlZlcnNpb25XYXJuaW5nIiksYz1kb2N1bWVudC5nZXRFbGVt ZW50QnlJZCgic3BuVmVyc2lvblRleHQiKTtpZihhPT1ifHxjPT1iKXJldHVybjth LnN0eWxlLmRpc3BsYXk9ImJsb2NrIjtjLmlubmVySFRNTD1kfWZ1bmN0aW9uIFN0 ckhvc3RSb290KCl7VUxTMXloOjt2YXIgYj1kb2N1bWVudC5sb2NhdGlvbi5ob3N0 bmFtZSxhPWIuc3BsaXQoIi4iKTtpZihhLmxlbmd0aD4zKXt2YXIgYz1hLmxlbmd0 aC0zO2I9YVtjXSsiLiIrYVtjKzFdKyIuIithW2MrMl19cmV0dXJuIGJ9ZnVuY3Rp b24gR29Xb3JsZFdpZGVCdXR0b24oKXtVTFMxeWg6O3ZhciBhPWxvY2F0aW9uLmhy ZWYsYj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGMiKSxjPWRvY3VtZW50Lmdl dEVsZW1lbnRCeUlkKCJwYyIpLGQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNh aSIpO2lmKG51bGwhPWIpe2E9U3RyUmVtb3ZlUGFyYW1ldGVyRnJvbVVybChhLCJs YyIpO2lmKGEuaW5kZXhPZigiPyIpPDApYSs9Ij9sYz0iO2Vsc2UgYSs9IiZsYz0i O2ErPVN0ckVuY29kZVVybENvbXBvbmVudChiLm9wdGlvbnNbYi5zZWxlY3RlZElu ZGV4XS52YWx1ZSl9aWYobnVsbCE9Yyl7YT1TdHJSZW1vdmVQYXJhbWV0ZXJGcm9t VXJsKGEsInBjIik7aWYoYy5jaGVja2VkKXtpZihhLmluZGV4T2YoIj8iKTwwKWEr PSI/cGM9IjtlbHNlIGErPSImcGM9IjthKz1TdHJFbmNvZGVVcmxDb21wb25lbnQo Yy52YWx1ZSl9fWlmKG51bGwhPWQpe2E9U3RyUmVtb3ZlUGFyYW1ldGVyRnJvbVVy bChhLCJzYWkiKTtpZihhLmluZGV4T2YoIj8iKTwwKWErPSI/c2FpPSI7ZWxzZSBh Kz0iJnNhaT0iO2ErPVN0ckVuY29kZVVybENvbXBvbmVudChkLnZhbHVlKX1sb2Nh dGlvbi5ocmVmPWF9ZnVuY3Rpb24gUGFyZW50RWxlbWVudChhKXtVTFMxeWg6O3Jl dHVybiBhLnBhcmVudEVsZW1lbnQ/YS5wYXJlbnRFbGVtZW50OmEucGFyZW50Tm9k ZX1mdW5jdGlvbiBFeHBhbmRMYWJlbChhLGIpe1VMUzF5aDo7YS5jbGFzc05hbWU9 YjtpZihhcmd1bWVudHMubGVuZ3RoPjIpaWYoYXJndW1lbnRzWzJdPT0xKXtQYXJl bnRFbGVtZW50KGEpLnNldEF0dHJpYnV0ZSgieiIsUGFyZW50RWxlbWVudChhKS5z dHlsZS56SW5kZXgpO1BhcmVudEVsZW1lbnQoYSkuc3R5bGUuekluZGV4PTEwfWVs c2UgUGFyZW50RWxlbWVudChhKS5zdHlsZS56SW5kZXg9UGFyZW50RWxlbWVudChh KS5nZXRBdHRyaWJ1dGUoInoiKX1mdW5jdGlvbiBTZXRBcHBTZWxlY3RvckZvY3Vz KCl7VUxTMXloOjt2YXIgYT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiQXBwU2Vs ZWN0b3JEaXYiKTthIT1udWxsJiZhIT0idW5kZWZpbmVkIiYmYS5mb2N1cygpfWZ1 bmN0aW9uIEdldFF1ZXJ5U3RyaW5nVmFsdWUoYSxkKXtVTFMxeWg6O3ZhciBlPSJ1 bmRlZmluZWQiLGM9bnVsbDtpZihjPT1hfHxlPT1hfHxjPT1kfHxlPT1kKXJldHVy biBjO3ZhciBnPWQrIj0iLGI9YS5pbmRleE9mKGcpO2lmKGI8MClyZXR1cm4gYzt2 YXIgZj1hLmluZGV4T2YoIiYiLGIpO2I9YS5pbmRleE9mKCI9IixiKTtpZihmPDAp cmV0dXJuIGEuc3Vic3RyaW5nKGIrMSxhLmxlbmd0aCk7ZWxzZSByZXR1cm4gYS5z dWJzdHJpbmcoYisxLGYpfWZ1bmN0aW9uIEluaXRBcHBTZWxlY3RvcihmKXtVTFMx eWg6O3ZhciBrPSJjaGVja2JveCIsYz1udWxsLGQ9InVuZGVmaW5lZCI7aWYoZD09 Znx8Yz09ZilyZXR1cm47dmFyIGI9Zi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5w dXQiKTtpZihkPT10eXBlb2YgYnx8Yz09Ynx8MD49Yi5sZW5ndGgpcmV0dXJuO3Zh ciBpPUdldFF1ZXJ5U3RyaW5nVmFsdWUod2luZG93LmxvY2F0aW9uLmhyZWYsIm5m IiksZT1HZXRRdWVyeVN0cmluZ1ZhbHVlKHdpbmRvdy5sb2NhdGlvbi5ocmVmLCJh diIpLGE9MDtpZihpIT1jJiZpLmxlbmd0aD4wfHwoZT09Y3x8ZS5sZW5ndGg9PTAp KXtmb3IoYT0wO2E8Yi5sZW5ndGg7YSsrKXtpZihjPT1iW2FdfHxkPT10eXBlb2Yg YlthXS5pZCljb250aW51ZTtpZih1bmRlZmluZWQ9PXR5cGVvZiBiW2FdLnR5cGV8 fGM9PWJbYV0udHlwZSljb250aW51ZTtpZihrIT1iW2FdLnR5cGUpY29udGludWU7 YlthXS5jaGVja2VkPXRydWV9cmV0dXJufXZhciBtPSJjYkFwcFNldCIsaj0iLSIr ZSsiLSI7aWYoYz09ailyZXR1cm47Zm9yKGE9MDthPGIubGVuZ3RoO2ErKyl7aWYo Yz09YlthXXx8ZD09dHlwZW9mIGJbYV0uaWQpY29udGludWU7dmFyIGg9YlthXS5p ZCxsPWguaW5kZXhPZihtKTtpZihsPDApY29udGludWU7dmFyIGc9aC5zdWJzdHJp bmcobCttLmxlbmd0aCxoLmxlbmd0aCk7aWYoYz09Z3x8MD09Zy5sZW5ndGgpY29u dGludWU7dmFyIG49Ii0iK2crIi0iO2lmKGouaW5kZXhPZihuKTwwKWNvbnRpbnVl O2lmKHVuZGVmaW5lZD09dHlwZW9mIGJbYV0udHlwZXx8Yz09YlthXS50eXBlKWNv bnRpbnVlO2lmKGshPWJbYV0udHlwZSljb250aW51ZTtiW2FdLmNoZWNrZWQ9dHJ1 ZX19ZnVuY3Rpb24gQ2hvb3NlWW91clByb2dyYW1zKCl7VUxTMXloOjt2YXIgZj0i dW5kZWZpbmVkIixkPSJkaXZNb2RhbENvdmVyIixjPSJBcHBTZWxlY3RvckRpdiIs YT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChjKSxnPWZyYW1lc1siQXBwU2VsZWN0 b3JJRnJhbWUiXSxoPWcuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpdkFwcFNl bGVjdG9yRm9yU2VhcmNoIiksYj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChkKTtp ZihiPT1udWxsfHxiPT1mKXtiPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp O2IuaWQ9ZDtiLmNsYXNzTmFtZT1kO2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo Yil9YT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChjKTtpZihhPT1udWxsfHxhPT1m KXthPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2EuaWQ9YzthLmNsYXNz TmFtZT0iZGl2QXBwU2VsZWN0TW9kYWwiO2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hp bGQoYSl9YS5pbm5lckhUTUw9aC5pbm5lckhUTUw7aWYoZG9jdW1lbnQuYm9keS5z Y3JvbGxIZWlnaHQ+ZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQpYi5zdHlsZS5o ZWlnaHQ9ZG9jdW1lbnQuYm9keS5zY3JvbGxIZWlnaHQ7ZWxzZSBiLnN0eWxlLmhl aWdodD1kb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodDtpZihkb2N1bWVudC5ib2R5 LnNjcm9sbFdpZHRoPmRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGgpYi5zdHlsZS53 aWR0aD1kb2N1bWVudC5ib2R5LnNjcm9sbFdpZHRoO2Vsc2UgYi5zdHlsZS53aWR0 aD1kb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoO0luaXRBcHBTZWxlY3RvcihhKTth LnN0eWxlLmxlZnQ9IjI1JSI7YS5zdHlsZS50b3A9IjI1JSI7dmFyIGU9T2JqR2V0 VmVyc2lvbkRldGVjdG9yKCk7ZSYmZS5mSXNJRTZBbmRMZXNzJiZPT0hpZGVXaW5k b3dlZENvbnRyb2xzKCk7Yi5zdHlsZS5kaXNwbGF5PSJibG9jayI7YS5zdHlsZS5k aXNwbGF5PSJibG9jayI7d2luZG93LnNldFRpbWVvdXQoU2V0QXBwU2VsZWN0b3JG b2N1cyw1MDApO2Eub2xkS2V5UHJlc3NIYW5kbGVyPWRvY3VtZW50Lm9ua2V5cHJl c3M7ZG9jdW1lbnQub25rZXlwcmVzcz1mdW5jdGlvbihhKXtVTFMxeWg6O3ZhciBj PXdpbmRvdy5ldmVudD9ldmVudC5rZXlDb2RlOmEua2V5Q29kZSxiPXdpbmRvdy5l dmVudD8yNzphLkRPTV9WS19FU0NBUEU7Yz09YiYmQXBwU2V0Q2FuY2VsQXBwc0Zv clNlYWNoKCl9fWZ1bmN0aW9uIExvYWRBcHBTZXRJRnJhbWUoYil7VUxTMXloOjt2 YXIgYT1mcmFtZXNbIkFwcFNlbGVjdG9ySUZyYW1lIl07YS5sb2NhdGlvbi5ocmVm PWJ9ZnVuY3Rpb24gRGVsZXRlQ2hpbGRyZW4oYSl7VUxTMXloOjtpZihhIT1udWxs JiZhLmNoaWxkcmVuIT1udWxsJiZhLmNoaWxkcmVuLmxlbmd0aD4wKWZvcih2YXIg Yj1hLmNoaWxkcmVuLmxlbmd0aDtiPjA7Yi0tKXt2YXIgYz1hLmNoaWxkcmVuKGIt MSk7YS5yZW1vdmVDaGlsZChjKX1hLmlubmVySFRNTD0iIn1mdW5jdGlvbiBBcHBT ZXRDYW5jZWxBcHBzRm9yU2VhY2goKXtVTFMxeWg6O3ZhciBjPSJ1bmRlZmluZWQi LGE9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkFwcFNlbGVjdG9yRGl2Iik7aWYo YSE9bnVsbCYmYSE9Yyl7RGVsZXRlQ2hpbGRyZW4oYSk7YS5zdHlsZS5kaXNwbGF5 PSJub25lIn12YXIgYj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGl2TW9kYWxD b3ZlciIpO2lmKGIhPW51bGwmJmIhPWMpYi5zdHlsZS5kaXNwbGF5PSJub25lIjtk b2N1bWVudC5vbmtleXByZXNzPWEub2xkS2V5UHJlc3NIYW5kbGVyfWZ1bmN0aW9u IFJlcGxhY2VPckFwcGVuZFVybFBhcmFtZXRlcihsLGcsail7VUxTMXloOjt2YXIg ZT0iJiIsZD0idW5kZWZpbmVkIixhO2lmKG51bGw9PWd8fGQ9PWd8fG51bGw9PWp8 fGQ9PWp8fDA9PWcubGVuZ3RoKXJldHVybjtpZihsPT1udWxsfHxsPT1kKWlmKHR5 cGVvZiB3aW5kb3c9PWR8fHR5cGVvZiB3aW5kb3cubG9jYXRpb249PWR8fHR5cGVv ZiB3aW5kb3cubG9jYXRpb24uaHJlZj09ZClyZXR1cm47ZWxzZSBhPXdpbmRvdy5s b2NhdGlvbi5ocmVmO2Vsc2UgYT1sO3ZhciBoPWZhbHNlO2lmKGo9PSIiKWg9dHJ1 ZTt2YXIgZj1nKyI9IitTdHJFbmNvZGVVcmxDb21wb25lbnQoaiksbT1nKyI9Iixj PWEuc3BsaXQoIj8iKTtpZihjLmxlbmd0aD09MSlpZighaClhPWErIj8iK2Y7aWYo Yy5sZW5ndGg9PTIpe3ZhciBpPWNbMV0uc3BsaXQoZSk7aWYoaS5sZW5ndGg9PTEp aWYoaVswXS5pbmRleE9mKG0pPj0wKXtpZihoKXthPWNbMF07cmV0dXJuIGF9cmV0 dXJuIGNbMF0rIj8iK2Z9ZWxzZXthPWNbMF0rIj8iK2NbMV0rZStmO3JldHVybiBh fWZvcih2YXIgYj0iIixuPWZhbHNlLGs9MDtrPGkubGVuZ3RoO2srKylpZihpW2td LmluZGV4T2YobSk+PTApe249dHJ1ZTtpZighaCliKz1mK2V9ZWxzZSBiKz1pW2td K2U7aWYoIW4mJiFoKWIrPWYrZTtpZihiLmxlbmd0aD4wJiZiLmNoYXJBdChiLmxl bmd0aC0xKT09ZSliPWIuc3Vic3RyaW5nKDAsYi5sZW5ndGgtMSk7cmV0dXJuIGNb MF0rIj8iK2J9cmV0dXJuIGF9dmFyIGdfcmdvRWxlbWVudHNUb1VuaGlkZTtmdW5j dGlvbiBPT0hpZGVXaW5kb3dlZENvbnRyb2xzKCl7VUxTMXloOjt2YXIgYz0iaGlk ZGVuIjtnX3Jnb0VsZW1lbnRzVG9VbmhpZGU9W107Zm9yKHZhciBkPTAsYT0wLGI9 ZG9jdW1lbnQuYm9keS5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2VsZWN0IiksYT0w O2E8Yi5sZW5ndGg7YSsrKWlmKGJbYV0uc3R5bGUudmlzaWJpbGl0eSE9Yyl7ZD1n X3Jnb0VsZW1lbnRzVG9VbmhpZGUubGVuZ3RoO2dfcmdvRWxlbWVudHNUb1VuaGlk ZVtkXT1iW2FdO2JbYV0uc3R5bGUudmlzaWJpbGl0eT1jfWI9ZG9jdW1lbnQuYm9k eS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaWZyYW1lIik7Zm9yKGE9MDthPGIubGVu Z3RoO2ErKylpZihiW2FdLnN0eWxlLnZpc2liaWxpdHkhPWMpe2Q9Z19yZ29FbGVt ZW50c1RvVW5oaWRlLmxlbmd0aDtnX3Jnb0VsZW1lbnRzVG9VbmhpZGVbZF09Ylth XTtiW2FdLnN0eWxlLnZpc2liaWxpdHk9Y319ZnVuY3Rpb24gT09TaG93V2luZG93 ZWRDb250cm9scygpe1VMUzF5aDo7Zm9yKHZhciBhPTA7YTxnX3Jnb0VsZW1lbnRz VG9VbmhpZGUubGVuZ3RoO2ErKylnX3Jnb0VsZW1lbnRzVG9VbmhpZGVbYV0uc3R5 bGUudmlzaWJpbGl0eT0idmlzaWJsZSJ9ZnVuY3Rpb24gRWxlbWVudFZpc2liaWxp dHkoYyxiKXtVTFMxeWg6O3ZhciBhPUcoYyk7aWYoYSE9bnVsbClhLnN0eWxlLnZp c2liaWxpdHk9Yn1mdW5jdGlvbiBTd2l0Y2hUb3BDb250ZW50UmVzdWx0cyhjLGQp e1VMUzF5aDo7dmFyIGI9Im5vbmUiLGU9Il9TZWVNb3JlIixhPWRvY3VtZW50Lmdl dEVsZW1lbnRCeUlkKGMpLGo9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZCksaD1k b2N1bWVudC5nZXRFbGVtZW50QnlJZChjKyJfbGFiZWwiKSxpPWRvY3VtZW50Lmdl dEVsZW1lbnRCeUlkKGQrIl9sYWJlbCIpLGY9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5 SWQoYytlKSxnPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGQrZSk7aWYoYSYmaiYm aCYmaSlpZihhLnN0eWxlLmRpc3BsYXkmJmEuc3R5bGUuZGlzcGxheT09Yil7YS5z dHlsZS5kaXNwbGF5PSJibG9jayI7ai5zdHlsZS5kaXNwbGF5PWI7aC5jbGFzc05h bWU9ImNkVG9wQ29udGVudFRpdGxlQm9sZEFuZFVuZGVybGluZSI7aS5jbGFzc05h bWU9ImNkVG9wQ29udGVudFRpdGxlTm9ybWFsIjtpZihmKWYuc3R5bGUuZGlzcGxh eT0iaW5saW5lIjtpZihnKWcuc3R5bGUuZGlzcGxheT1ifX1UeXBlLnJlZ2lzdGVy TmFtZXNwYWNlKCJPT0hQIik7T09IUC5Db25zdGFudHM9ZnVuY3Rpb24oKXt9O09P SFAuQ29uc3RhbnRzLnByb3RvdHlwZT17Q09OVEVOVF9JRDoiX2NvbnRlbnQiLFBB R0VJTkRFWDoicGFnZWluZGV4IixUQUJORVc6Im5ld3RhYiIsTlVNQkVST0ZST1dT OiJudW1iZXJvZnJvd3MiLE9ORU1FRElBQ0xJUFJPVzoiY2RPT0hvbWVwYWdlT25l Q2xpcFJvdyIsVE9UQUxDTElQTlVNQkVSOiJ0b3RhbGNsaXBudW1iZXIiLE5VTVBF UlJPVzoibnVtcGVycm93In07T09IUC5Db25zdGFudHMucmVnaXN0ZXJDbGFzcygi T09IUC5Db25zdGFudHMiLFN5cy5Db21wb25lbnQpO09PSFAuRGlzcGxheVN0eWxl SGFuZGxpbmc9ZnVuY3Rpb24oKXt9O3ZhciBnX09PSFBDb25zdGFudD1udWxsO09P SFAuRGlzcGxheVN0eWxlSGFuZGxpbmcucHJvdG90eXBlPXtvbkNsaWNrV1Bab25l TGF5ZXJUYWI6ZnVuY3Rpb24oZCxjKXtVTFMxeWg6O3ZhciBhPSJjZFRhYlRpdGxl QWN0aXZlIixiPXRoaXM7ZC5wcmV2ZW50RGVmYXVsdCgpO2lmKCQoYikuaGFzQ2xh c3MoYSkpcmV0dXJuOyQoYikuYWRkQ2xhc3MoZ19PT0hQQ29uc3RhbnQuVEFCTkVX KTskKCIuY2RUYWJUaXRsZUNvbW1vbiIsJChiKS5wYXJlbnQoKS5wYXJlbnQoKS5w YXJlbnQoKSkuZWFjaChmdW5jdGlvbigpe1VMUzF5aDo7dmFyIGQ9ImNkTGF5ZXJU YWJDb250ZW50IixjPSJjZFRhYlRpdGxlSW5hY3RpdmUiLGI9dGhpcyxlPSQoIiMi KyQoYikuYXR0cigiaWQiKStnX09PSFBDb25zdGFudC5DT05URU5UX0lEKTtpZigk KGIpLmhhc0NsYXNzKGdfT09IUENvbnN0YW50LlRBQk5FVykpeyQoYikucmVtb3Zl Q2xhc3MoYykuYWRkQ2xhc3MoYSkucmVtb3ZlQ2xhc3MoZ19PT0hQQ29uc3RhbnQu VEFCTkVXKTtlLmFkZENsYXNzKGQpLnNob3coKX1lbHNlIGlmKCQoYikuaGFzQ2xh c3MoYSkpeyQoYikucmVtb3ZlQ2xhc3MoYSkuYWRkQ2xhc3MoYyk7ZS5yZW1vdmVD bGFzcyhkKS5oaWRlKCl9ZWxzZSBlLmhpZGUoKX0pO25ld2V4cGFuZGVkaGlkZGVu dGFiPSQoYikuYXR0cigiaWQiKTtzZXRUaW1lb3V0KGMuc2VsZi5leHBhbmRuZXd0 YWIsMjUwKX0sb25DbGlja1dQWm9uZVN0YWNrZWRUYWI6ZnVuY3Rpb24oZCxjKXtV TFMxeWg6O3ZhciBhPSJjZFN0YWNrVGl0bGVBY3RpdmUiLGI9dGhpcztkLnByZXZl bnREZWZhdWx0KCk7aWYoJChiKS5oYXNDbGFzcyhhKSlyZXR1cm47JChiKS5hZGRD bGFzcyhnX09PSFBDb25zdGFudC5UQUJORVcpOyQoIi5jZFN0YWNrVGl0bGVDb21t b24iLCQoYikucGFyZW50KCkpLmVhY2goZnVuY3Rpb24oKXtVTFMxeWg6O3ZhciBj PSJjZFN0YWNrVGl0bGVJbmFjdGl2ZSIsYj10aGlzLGQ9JCgiIyIrJChiKS5hdHRy KCJpZCIpK2dfT09IUENvbnN0YW50LkNPTlRFTlRfSUQpO2lmKCQoYikuaGFzQ2xh c3MoZ19PT0hQQ29uc3RhbnQuVEFCTkVXKSl7JChiKS5yZW1vdmVDbGFzcyhjKS5h ZGRDbGFzcyhhKS5yZW1vdmVDbGFzcyhnX09PSFBDb25zdGFudC5UQUJORVcpO2Qu c2xpZGVEb3duKCJmYXN0Iil9ZWxzZSBpZigkKGIpLmhhc0NsYXNzKGEpKXskKGIp LnJlbW92ZUNsYXNzKGEpLmFkZENsYXNzKGMpO2Quc2xpZGVVcCgiZmFzdCIpfWVs c2UgZC5oaWRlKCl9KTtuZXdleHBhbmRlZGhpZGRlbnRhYj0kKGIpLmF0dHIoImlk Iik7c2V0VGltZW91dChjLnNlbGYuZXhwYW5kbmV3dGFiLDI1MCl9LGV4cGFuZG5l d3RhYjpmdW5jdGlvbigpe1VMUzF5aDo7dmFyIGM9JCgiIyIrbmV3ZXhwYW5kZWRo aWRkZW50YWIpLGE9JCgiIyIrYy5hdHRyKCJpZCIpK2dfT09IUENvbnN0YW50LkNP TlRFTlRfSUQpLGQ9T09VdGlsLkdldFZpZXdwb3J0KCksZT1PT1V0aWwuR2V0U2Ny b2xsT2Zmc2V0KCk7aWYoYS5vZmZzZXQoKS50b3ArYS5oZWlnaHQoKT5kLmlubmVy SGVpZ2h0K2UucGFnZVlPZmZzZXQpe3ZhciBiPWEub2Zmc2V0KCkudG9wK2EuaGVp Z2h0KCktZC5pbm5lckhlaWdodCsxMDtpZihiPmMub2Zmc2V0KCkudG9wKWI9Yy5v ZmZzZXQoKS50b3A7JCgiaHRtbCxib2R5IikuYW5pbWF0ZSh7c2Nyb2xsVG9wOmJ9 LDFlMyl9fSxvbktleURvd25UYWI6ZnVuY3Rpb24oYSl7VUxTMXloOjthLnN0b3BQ cm9wYWdhdGlvbigpO2Eua2V5Q29kZT09MzImJiQodGhpcykudHJpZ2dlcigiY2xp Y2siKX0sSGlkZUluYWN0aXZlVGFiczpmdW5jdGlvbigpe1VMUzF5aDo7JCgiLmNk U3RhY2tUaXRsZUluYWN0aXZlLCAuY2RUYWJUaXRsZUluYWN0aXZlIikuZWFjaChm dW5jdGlvbigpe1VMUzF5aDo7dmFyIGE9JCh0aGlzKS5hdHRyKCJpZCIpK2dfT09I UENvbnN0YW50LkNPTlRFTlRfSUQ7YSE9bnVsbCYmJCgiIyIrYSkuaGlkZSgpfSl9 LFByb2Nlc3NBbGxXZWJQYXJ0Wm9uZXM6ZnVuY3Rpb24oKXtVTFMxeWg6O3ZhciBh PXRoaXMsZD1GdW5jdGlvbi5jcmVhdGVDYWxsYmFjayhhLm9uQ2xpY2tXUFpvbmVT dGFja2VkVGFiLHtzZWxmOmF9KSxjPUZ1bmN0aW9uLmNyZWF0ZUNhbGxiYWNrKGEu b25DbGlja1dQWm9uZUxheWVyVGFiLHtzZWxmOmF9KSxiPWE7JCgiLmNkU3RhY2tU aXRsZUNvbW1vbiIpLmVhY2goZnVuY3Rpb24oKXtVTFMxeWg6OyQodGhpcykua2V5 ZG93bihiLm9uS2V5RG93blRhYikuY2xpY2soZCl9KTskKCIuY2RUYWJUaXRsZUNv bW1vbiIpLmVhY2goZnVuY3Rpb24oKXtVTFMxeWg6OyQodGhpcykua2V5ZG93bihi Lm9uS2V5RG93blRhYikuY2xpY2soYyl9KX19O09PSFAuRGlzcGxheVN0eWxlSGFu ZGxpbmcucmVnaXN0ZXJDbGFzcygiT09IUC5EaXNwbGF5U3R5bGVIYW5kbGluZyIs U3lzLkNvbXBvbmVudCk7T09IUC5NZWRpYT1mdW5jdGlvbigpe307T09IUC5NZWRp YS5wcm90b3R5cGU9e0luaXRpYWxpemU6ZnVuY3Rpb24oKXtVTFMxeWg6OyQoIi5j ZE9PSG9tZXBhZ2VNZWRpYVRodW1iRGl2Iikua2V5ZG93bih0aGlzLlRodW1ibmFp bEtleURvd24pfSxUaHVtYm5haWxLZXlEb3duOmZ1bmN0aW9uKGEpe1VMUzF5aDo7 c3dpdGNoKGEua2V5Q29kZSl7Y2FzZSAxMzphLnN0b3BQcm9wYWdhdGlvbigpOyQo dGhpcykucGFyZW50KCkucGFyZW50KCkudHJpZ2dlcigibW91c2VlbnRlciIpO3Jl dHVybiBmYWxzZTtjYXNlIDMyOmEuc3RvcFByb3BhZ2F0aW9uKCk7JCgiaW1nIiwk KHRoaXMpKS5maWx0ZXIoIjpmaXJzdCIpLnRyaWdnZXIoImNsaWNrIik7cmV0dXJu IGZhbHNlfX0sUGFnaW5nQ29udHJvbDpmdW5jdGlvbigpe1VMUzF5aDo7dmFyIGE9 dGhpczskKCIubWVkaWF3cGRpdiIpLmVhY2goZnVuY3Rpb24oKXtVTFMxeWg6O3Zh ciBiPXRoaXMsZz0kKCIubWVkaWFjbGlwZGl2IiwkKGIpKSxjPSQoIi5wcmV2aW91 c2J1dHRvbiIsJChiKSksZD0kKCIubmV4dGJ1dHRvbiIsJChiKSk7aWYoYz09bnVs bHx8ZD09bnVsbClyZXR1cm47dmFyIGY9RnVuY3Rpb24uY3JlYXRlQ2FsbGJhY2so YS5QcmV2aW91c1BhZ2Use3NlbGY6YX0pLGU9RnVuY3Rpb24uY3JlYXRlQ2FsbGJh Y2soYS5OZXh0UGFnZSx7c2VsZjphfSk7Yy5hZGRDbGFzcygiY2RQcmV2aW91c0J1 dHRvbiIpLmNsaWNrKGYpLmhpZGUoKTtkLmFkZENsYXNzKCJjZE5leHRCdXR0b24i KS5jbGljayhlKTskKGIpLmRhdGEoZ19PT0hQQ29uc3RhbnQuUEFHRUlOREVYLCIw Iil9KX0sUHJldmlvdXNQYWdlOmZ1bmN0aW9uKGMsYil7VUxTMXloOjt2YXIgYT0k KCIjIiskKHRoaXMpLmRhdGEoIm1lZGlhY2xpcGRpdmlkIikpO2lmKGE9PW51bGwp cmV0dXJuO2Iuc2VsZi5DaGFuZ2VQYWdlKGEsLTEpfSxOZXh0UGFnZTpmdW5jdGlv bihjLGIpe1VMUzF5aDo7dmFyIGE9JCgiIyIrJCh0aGlzKS5kYXRhKCJtZWRpYWNs aXBkaXZpZCIpKTtpZihhPT1udWxsKXJldHVybjtiLnNlbGYuQ2hhbmdlUGFnZShh LDEpfSxDaGFuZ2VQYWdlOmZ1bmN0aW9uKGIsbyl7VUxTMXloOjt2YXIgbT0iLm5l eHRidXR0b24iLGw9Ii5wcmV2aW91c2J1dHRvbiI7aWYoYj09bnVsbClyZXR1cm47 dmFyIGU9JCgiLiIrZ19PT0hQQ29uc3RhbnQuT05FTUVESUFDTElQUk9XLGIpO2lm KGUubGVuZ3RoPDEpcmV0dXJuO3ZhciBjPWIuZGF0YShnX09PSFBDb25zdGFudC5O VU1CRVJPRlJPV1MpLGY7aWYoZS5sZW5ndGglYz09MClmPWUubGVuZ3RoL2M7ZWxz ZSBmPU1hdGgucm91bmQoZS5sZW5ndGgvYysuNSk7Zm9yKHZhciBhPXBhcnNlSW50 KGIuZGF0YShnX09PSFBDb25zdGFudC5QQUdFSU5ERVgpKSxpPWEqYyxkPTAsZD0w O2Q8ZS5sZW5ndGgmJmQ8YztkKyspZS5lcShkK2kpLmhpZGUoKTthKz1wYXJzZUlu dChvKTthPWE8MD9mLTE6YTthPWElZjtiLmRhdGEoZ19PT0hQQ29uc3RhbnQuUEFH RUlOREVYLGEpO2k9YSpjO2ZvcihkPTA7ZDxlLmxlbmd0aCYmZDxjO2QrKyl7dmFy IHA9ZS5lcShkK2kpO3Auc2hvdygpfXZhciBrLGc9Yi5kYXRhKGdfT09IUENvbnN0 YW50LlRPVEFMQ0xJUE5VTUJFUiksaj1iLmRhdGEoZ19PT0hQQ29uc3RhbnQuTlVN UEVSUk9XKSxoPWEqYypqKzEsbj0oYSsxKSpjKmo8Zz8oYSsxKSpjKmo6ZztpZihu PT1oKWs9U3RyaW5nLmZvcm1hdChMX0N0bk51bWJlck91dE9mVG90YWwsaCxnKTtl bHNlIGs9U3RyaW5nLmZvcm1hdChMX0N0bk51bWJlck9mUGFnZXMsaCxuLGcpO2lm KGE9PTApJChsLGIpLmhpZGUoKTtlbHNlICQobCxiKS5zaG93KCk7aWYoYT09Zi0x KSQobSxiKS5oaWRlKCk7ZWxzZSAkKG0sYikuc2hvdygpOyQoIi5wYWdpbmdkZXNj cmlwdGlvbiIsYikudGV4dChrKX19O09PSFAuTWVkaWEucmVnaXN0ZXJDbGFzcygi T09IUC5NZWRpYSIsU3lzLkNvbXBvbmVudCk7T09IUC5NZXRyaWNzPWZ1bmN0aW9u KCl7fTtPT0hQLk1ldHJpY3MucHJvdG90eXBlPXtXZWJQYXJ0TWV0cmljczpmdW5j dGlvbigpe1VMUzF5aDo7JCgiLmNkT09Ib21lcGFnZVdwTGlua01ldHJpY3MiKS5j bGljayhmdW5jdGlvbigpe1VMUzF5aDo7dmFyIGI9bnVsbCxkPSQodGhpcyk7aWYo ZCE9Yil7dmFyIGE9W107YS5wdXNoKCJXVC5kbCIpO2EucHVzaCgiMSIpO3ZhciBl PWQudGV4dCgpO2lmKGU9PWJ8fCFlLmxlbmd0aCl7dmFyIGY9JCgiaW1nIixkKTtp ZihmLmxlbmd0aCllPSJpbWc6ICIrKGYuYXR0cigiYWx0Iik/Zi5hdHRyKCJhbHQi KTpmLmF0dHIoInRpdGxlIikpfWEucHVzaCgiRENTZXh0Lm9vX3dwX2xpbmt0ZXh0 Iik7YS5wdXNoKGUpO3ZhciBoPWQuYXR0cigibmFtZSIpO2lmKGghPWImJmgubGVu Z3RoPjApe3ZhciBpPU9PVXRpbC5EZXNlcmlhbGl6ZShoKTtpZihpIT1iKXthLnB1 c2goIkRDU2V4dC5vb193cF9saW5raWQiKTthLnB1c2goaS5sYSl9fXZhciBqPWQu Y2xvc2VzdCgiLmNkT09Ib21lcGFnZVdwWm9uZU1ldHJpY3MiKTtpZihqIT1iKXt2 YXIgZz1qLmF0dHIoIm5hbWUiKTtpZihnIT1iJiZnLmxlbmd0aD4wKXt2YXIgYz1P T1V0aWwuRGVzZXJpYWxpemUoZyk7aWYoYyE9Yil7YS5wdXNoKCJXVC50aSIpO2Eu cHVzaChkb2N1bWVudC50aXRsZSk7YS5wdXNoKCJEQ1NleHQub29fd3BfcGFnZWlk Iik7YS5wdXNoKGMucGEpO2EucHVzaCgiRENTZXh0Lm9vX3dwX3dlYnBhcnR6b25l Iik7YS5wdXNoKGMud3ApO2EucHVzaCgiRENTZXh0Lm9vX3dwX21vZHVsZWlkIik7 YS5wdXNoKGMubWEpO2EucHVzaCgiRENTZXh0Lm9vX3dwX21vZHVsZXRpdGxlIik7 YS5wdXNoKGMubXQpfX19ZGNzU2V0VmFyLmFwcGx5KGIsYSl9fSl9LENsaWVudEhl bHBIb21lTWV0cmljczpmdW5jdGlvbigpe1VMUzF5aDo7JCgiYSIpLmNsaWNrKGZ1 bmN0aW9uKCl7VUxTMXloOjt2YXIgYT1udWxsLGU9JCh0aGlzKTtpZihlIT1hKXt2 YXIgYj1bXTtiLnB1c2goIldULmRsIik7Yi5wdXNoKCIxIik7dmFyIGM9ZS50ZXh0 KCk7aWYoYz09YXx8IWMubGVuZ3RoKXt2YXIgZD0kKCJpbWciLGUpO2lmKGQubGVu Z3RoKWM9ImltZzogIisoZC5hdHRyKCJhbHQiKT9kLmF0dHIoImFsdCIpOmQuYXR0 cigidGl0bGUiKSl9Yi5wdXNoKCJEQ1NleHQub29fY2hoX2xpbmt0ZXh0Iik7Yi5w dXNoKGMpO3ZhciBnPWUuY2xvc2VzdCgiLmNkSGVscEhvbWVab25lTWV0cmljcyIp O2lmKGchPWEpe3ZhciBmPWcuYXR0cigibmFtZSIpO2lmKGYhPWEmJmYubGVuZ3Ro PjApe2IucHVzaCgiRENTZXh0Lm9vX2NoaF96b25lIik7Yi5wdXNoKGYpfX1kY3NT ZXRWYXIuYXBwbHkoYSxiKX19KX19O09PSFAuTWV0cmljcy5yZWdpc3RlckNsYXNz KCJPT0hQLk1ldHJpY3MiLFN5cy5Db21wb25lbnQpO2Z1bmN0aW9uIFJlZ2lzdGVy U29kKCl7fWZ1bmN0aW9uIFJlZ2lzdGVyU29kRGVwKCl7fXZhciBBU1JWZXJzaW9u c0Ryb3BEb3duTWF4V2lkdGg9MDtmdW5jdGlvbiBBU1JPbkxvYWQoKXtVTFMxeWg6 O3ZhciBhPSJweCIsYj0iZGl2I3Rvb2x0aXAiLGw9ImltZy5jZEJPQlRtcGx0SW1n IixrPSIjQVNSUmVzZXQiLGo9IiNBU1JTYXZlIixpPSIjQVNSQ2FuY2VsIixkPSJs ZWZ0IixoPSIjQVNSQXBwTmFtZSIsZj0iI0FTUkNvbnRyb2xzIixjPSQoZiksZT0k KCIjQVNST3BlbiIpLGc9JCgiI0FTUkFwcFZlciIpLG09ZS5vZmZzZXQoKTtjLnNo b3coKTtmb3IodmFyIG4gaW4gYXBwVmVycyl7QVNSQWRkT3B0aW9uKGcsIi0xIixM X0FkdlNlYXJjaE9wdHNBbGxWZXJzaW9ucyk7JC5lYWNoKGFwcFZlcnNbbl0sZnVu Y3Rpb24oKXtVTFMxeWg6O0FTUkFkZE9wdGlvbihnLHRoaXMudmFsdWUsdGhpcy5s YWJlbCl9KX1BU1JWZXJzaW9uc0Ryb3BEb3duTWF4V2lkdGg9Zy53aWR0aCgpO0FT UlNldHVwVmVyU2VsKCk7Yy53aWR0aCgkKGgpLndpZHRoKCkrQVNSVmVyc2lvbnNE cm9wRG93bk1heFdpZHRoKzE1KTtjLmNzcygidG9wIixtLnRvcCtlLmhlaWdodCgp KzEpO2MuY3NzKGQsbS5sZWZ0K2Uud2lkdGgoKS1jLndpZHRoKCkpO2MuaGlkZSgp O2UuY2xpY2soQVNST3Blbk9yQ2xvc2UpO2Uua2V5cHJlc3MoZnVuY3Rpb24oYSl7 VUxTMXloOjtBU1JJc1NwYWNlT3JFbnRlcihhLndoaWNoKSYmQVNST3Blbk9yQ2xv c2UoYSl9KTskKGRvY3VtZW50KS5jbGljayhmdW5jdGlvbihhKXtVTFMxeWg6O2Eu c3RvcFByb3BhZ2F0aW9uKCk7dmFyIGI9YS5zcmNFbGVtZW50fHxhLm9yaWdpbmFs VGFyZ2V0OyQoIiNBU1JDb250cm9sczp2aXNpYmxlIikubGVuZ3RoPjAmJmIuaWQh PSJBU1JDb250cm9scyImJiQoYikucGFyZW50cyhmKS5sZW5ndGg9PTAmJkFTUkNs b3NlQ29udHJvbHMoYSl9KTskKGRvY3VtZW50KS5rZXlwcmVzcyhmdW5jdGlvbihh KXtVTFMxeWg6O2Eua2V5Q29kZT09MjcmJkFTUkNsb3NlQ29udHJvbHMoYSl9KTsk KGkpLmNsaWNrKEFTUkNsb3NlQ29udHJvbHMpOyQoaSkua2V5cHJlc3MoZnVuY3Rp b24oYSl7VUxTMXloOjtBU1JJc1NwYWNlT3JFbnRlcihhLndoaWNoKSYmQVNSQ2xv c2VDb250cm9scyhhKX0pOyQoaikuY2xpY2soZnVuY3Rpb24oYSl7VUxTMXloOjtB U1JCdWlsZEFuZFN1Ym1pdEZvcm0oYSxmYWxzZSl9KTskKGopLmtleXByZXNzKGZ1 bmN0aW9uKGEpe1VMUzF5aDo7QVNSSXNTcGFjZU9yRW50ZXIoYS53aGljaCkmJkFT UkJ1aWxkQW5kU3VibWl0Rm9ybShhLGZhbHNlKX0pOyQoaykuY2xpY2soZnVuY3Rp b24oYSl7VUxTMXloOjtBU1JCdWlsZEFuZFN1Ym1pdEZvcm0oYSx0cnVlKX0pOyQo aykua2V5cHJlc3MoZnVuY3Rpb24oYSl7VUxTMXloOjtBU1JJc1NwYWNlT3JFbnRl cihhLndoaWNoKSYmQVNSQnVpbGRBbmRTdWJtaXRGb3JtKGEsdHJ1ZSl9KTskKGgp LmNoYW5nZShBU1JTZXR1cFZlclNlbCk7JCgiI0FTUlR5cGUiKS5jaGFuZ2UoQVNS SGFuZGxlVHlwZUNoYW5nZSk7JChsKS5ob3ZlcihmdW5jdGlvbihjKXtVTFMxeWg6 OyQoYit0aGlzLmlkKS5jc3MoInRvcCIsYy5wYWdlWSsxMCthKS5jc3MoZCxjLnBh Z2VYKzIwK2EpLnNob3coKX0sZnVuY3Rpb24oKXtVTFMxeWg6OyQoYit0aGlzLmlk KS5oaWRlKCl9KTskKGwpLm1vdXNlbW92ZShmdW5jdGlvbihjKXtVTFMxeWg6OyQo Yit0aGlzLmlkKS5jc3MoInRvcCIsYy5wYWdlWSsxMCthKS5jc3MoZCxjLnBhZ2VY KzIwK2EpfSl9ZnVuY3Rpb24gQVNST3Blbk9yQ2xvc2UoYSl7VUxTMXloOjt2YXIg Yj0iI0FTUkNvbnRyb2xzOmhpZGRlbiI7YS5zdG9wUHJvcGFnYXRpb24oKTthLnBy ZXZlbnREZWZhdWx0KCk7aWYoJChiKS5sZW5ndGg+MCkkKGIpLnNob3coKTtlbHNl IEFTUkNsb3NlQ29udHJvbHMoYSl9ZnVuY3Rpb24gQVNSSXNTcGFjZU9yRW50ZXIo YSl7VUxTMXloOjtpZihhPT0xM3x8YT09MzIpcmV0dXJuIHRydWU7cmV0dXJuIGZh bHNlfWZ1bmN0aW9uIEFTUkhhbmRsZVR5cGVDaGFuZ2UoKXtVTFMxeWg6O3ZhciBh PSJkaXNhYmxlZCIsYz0kKCIjQVNSVHlwZSIpLGI9JCgiI0FTUkFwcE5hbWUsI0FT UkFwcFZlciIpO2lmKGMudmFsKCk9PSJPTVMifHxjLnZhbCgpPT0iQ0xQIiliLmF0 dHIoe2Rpc2FibGVkOmEsdGl0bGU6TF9BZHZTZWFyY2hPcHRzRG9lc05vdEFwcGx5 fSk7ZWxzZXtiLnJlbW92ZUF0dHIoYSkucmVtb3ZlQXR0cigidGl0bGUiKTtBU1JT ZXR1cFZlclNlbCgpfX1mdW5jdGlvbiBBU1JCdWlsZEFuZFN1Ym1pdEZvcm0oaSxq KXtVTFMxeWg6O3ZhciBiPSJ0c2MiO2kuc3RvcFByb3BhZ2F0aW9uKCk7aS5wcmV2 ZW50RGVmYXVsdCgpO3ZhciBjPSQoIiNBU1JUeXBlIikudmFsKCksaD1jPT0iT01T IixlPWM9PSJUTVBMIixmPWM9PSJDTFAiLGc9Ij8iO2lmKGYpZz1TdHJpbmcuZm9y bWF0KCIvezB9L2NsaXBhcnQvY2xpcHJlc3VsdHMuYXNweCIsR2V0Q29va2llKCJs YyIsImVuLVVTIikpO3ZhciBhPSQoIjxmb3JtLz4iKS5hdHRyKHthY3Rpb246Z30p OyQoImJvZHkiKS5hcHBlbmQoYSk7aWYoIWgmJiFmKXt2YXIgZD1bIkFwcE5hbWUi LCJBcHBWZXIiXTtpZighZSl7ZC5wdXNoKCJUeXBlIik7ZC5wdXNoKCJMYW5nIil9 JC5lYWNoKGQsZnVuY3Rpb24oKXtVTFMxeWg6O3ZhciBiPSQoIiNBU1IiK3RoaXMp O2lmKGIubGVuZ3RoPjApe3ZhciBjPWIudmFsKCk7aWYoailjPSJyZXNldCI7QVNS QXBwZW5kSGlkZGVuKGEsYlswXS5uYW1lLGN8fCIiKX19KX1TdHJHZXRBcmd1bWVu dFZhbHVlKCJxdSIpJiZBU1JBcHBlbmRIaWRkZW4oYSwicXUiLFN0ckdldEFyZ3Vt ZW50VmFsdWUoInF1IikpO2lmKGgpQVNSQXBwZW5kSGlkZGVuKGEsIm9tcyIsIjEi KTtlbHNlIGlmKGUpQVNSQXBwZW5kSGlkZGVuKGEsYiwiMSIpO2Vsc2UgU3RyR2V0 QXJndW1lbnRWYWx1ZShiKSYmQVNSQXBwZW5kSGlkZGVuKGEsYixTdHJHZXRBcmd1 bWVudFZhbHVlKGIpKTthLnN1Ym1pdCgpfWZ1bmN0aW9uIEFTUkFwcGVuZEhpZGRl bihiLGMsYSl7VUxTMXloOjtiLmFwcGVuZCgkKCI8aW5wdXQgdHlwZT0naGlkZGVu Jy8+IikuYXR0cih7bmFtZTpjLHZhbHVlOmF9KSl9ZnVuY3Rpb24gQVNSU2V0dXBW ZXJTZWwoKXtVTFMxeWg6O3ZhciBjPSJkaXNhYmxlZCIsZT0kKCIjQVNSQXBwTmFt ZSIpLGE9JCgiI0FTUkFwcFZlciIpO2EuZW1wdHkoKS5hdHRyKHtkaXNhYmxlZDpj fSkud2lkdGgoQVNSVmVyc2lvbnNEcm9wRG93bk1heFdpZHRoKTtpZihhcHBWZXJz W2UudmFsKCldKXthLnJlbW92ZUF0dHIoYyk7dmFyIGI9W10sZD1TdHJHZXRBcmd1 bWVudFZhbHVlKGFbMF0ubmFtZSksZj0wLGc9MDskLmVhY2goYXBwVmVyc1tlLnZh bCgpXSxmdW5jdGlvbigpe1VMUzF5aDo7dmFyIGM9dGhpcztnKys7aWYoZCYmZD09 Yy52YWx1ZSlmPWc7QVNSQWRkT3B0aW9uKGEsYy52YWx1ZSxjLmxhYmVsLHRydWUp O2IucHVzaChjLnZhbHVlKX0pO0FTUkFkZE9wdGlvbihhLGIuam9pbigiLSIpLExf QWR2U2VhcmNoT3B0c0FsbFZlcnNpb25zLGZhbHNlKTthWzBdLnNlbGVjdGVkSW5k ZXg9Zn19ZnVuY3Rpb24gQVNSQ2xvc2VDb250cm9scyhhKXtVTFMxeWg6O2Euc3Rv cFByb3BhZ2F0aW9uKCk7YS5wcmV2ZW50RGVmYXVsdCgpOyQoIiNBU1JDb250cm9s cyIpLmhpZGUoKTt0aGVGb3JtLnJlc2V0KCk7QVNSU2V0dXBWZXJTZWwoKX1mdW5j dGlvbiBBU1JBZGRPcHRpb24oYixlLGQsYyl7VUxTMXloOjt2YXIgYT0kKCI8b3B0 aW9uLz4iKS5hdHRyKHt2YWx1ZTplfSkuYXBwZW5kKGQpO2lmKGMpYi5hcHBlbmQo YSk7ZWxzZSBiLnByZXBlbmQoYSl9ZnVuY3Rpb24gU2ltcGx5SXNIdHRwVXJsVmFs aWQoYil7VUxTMXloOjt2YXIgYz1uZXcgUmVnRXhwKCIoaHR0cHM/Oi8vKT8oW1xc dytcXC0hXStcXC4pKihbXFx3K1xcLSFdKykoOihbMC05XXsxLDV9KSk/KC8uKik/ IiksYT1jLmV4ZWMoYik7aWYoYT09bnVsbHx8YVswXSE9YilyZXR1cm4gZmFsc2U7 cmV0dXJuIHRydWV9dHlwZW9mIFN5cyE9PSJ1bmRlZmluZWQiJiZTeXMuQXBwbGlj YXRpb24ubm90aWZ5U2NyaXB0TG9hZGVkKCk7ZnVuY3Rpb24gQWRqdXN0Q2xpZW50 TGlua3NGb3JNZXRyaWNzKGEsYil7VUxTMXloOjtpZighalF1ZXJ5KXJldHVybjsk KCJhOm5vdChbY2xhc3N+PWNkRXh0ZXJuYWxSZXN1bHRMaW5rXSkiKS5lYWNoKGZ1 bmN0aW9uKCl7VUxTMXloOjt2YXIgZD10aGlzLmhyZWYsYz1kLnRvTG93ZXJDYXNl KCk7aWYoYy5pbmRleE9mKCJqYXZhc2NyaXB0OiIpPT0wfHxjLmluZGV4T2YoIm91 dGxvb2tmZWVkOiIpPT0wfHxjLmluZGV4T2YoIiMiKT09MClyZXR1cm47dGhpcy5o cmVmPUFsdGVyQ2xpZW50TGlua0Zvck1ldHJpY3MoZCxhLGIpfSk7dmFyIGM9d2lu ZG93Lm9wZW47d2luZG93WyJvcGVuIl09ZnVuY3Rpb24oZCxnLGYsZSl7VUxTMXlo OjtkPUFsdGVyQ2xpZW50TGlua0Zvck1ldHJpY3MoZCxhLGIpO3JldHVybiBjKGQs ZyxmLGUpfX1mdW5jdGlvbiBBbHRlckNsaWVudExpbmtGb3JNZXRyaWNzKGEsZSxm KXtVTFMxeWg6O3ZhciBkPWEuaW5kZXhPZigiIyIpLGI9ZD49MD9hLnN1YnN0cihk KToiIixnPWE7YT1hLnN1YnN0cigwLGEubGVuZ3RoLWIubGVuZ3RoKTt2YXIgYz1h LmluZGV4T2YoIjovLyIpPDAmJmEuaW5kZXhPZigiPyIpPDA7aWYoYylhPSI/Iith O2lmKGEuRkNvbnRhaW5zUGFyYW0oImFwcCIpfHxhLkZDb250YWluc1BhcmFtKCJu cyIpfHxhLkZDb250YWluc1BhcmFtKCJ2ZXIiKXx8YS5GQ29udGFpbnNQYXJhbSgi dmVyIil8fGEuRkNvbnRhaW5zUGFyYW0oInByb2R1Y3RzIikpcmV0dXJuIGc7YT1h LlN0ckFkZFVuaXF1ZVBhcmFtKCJhcHAiLGVzY2FwZShlKSkuU3RyQWRkVW5pcXVl UGFyYW0oInZlciIsZXNjYXBlKGYpKTtpZihjKWE9YS5zdWJzdHIoMSk7aWYoYi5s ZW5ndGg+MClhPWErYjtyZXR1cm4gYX1mdW5jdGlvbiBSZWFsaWduKG4sYyxiLGsp e1VMUzF5aDo7dmFyIGg9InRvZ2dsZSIsaj0icmlnaHQiLGU9ImxlZnQiO2lmKHR5 cGVvZiBuIT0ib2JqZWN0Inx8bj09bnVsbClyZXR1cm47aWYodHlwZW9mIGshPSJi b29sZWFuIilrPWZhbHNlO2lmKHR5cGVvZiBiPT0ic3RyaW5nIil7Yj1iLnRvTG93 ZXJDYXNlKCk7c3dpdGNoKGIpe2Nhc2UgZTpjYXNlIGo6Y2FzZSBoOmJyZWFrO2Rl ZmF1bHQ6Yj1ofX1lbHNlIGI9aDt2YXIgaSxtLGYsYT17bGVmdDowLHJpZ2h0OjAs dG9nZ2xlOjB9LGc9T09VdGlsLkdldFNjcm9sbE9mZnNldCgpO3RyeXtpPU9PVXRp bC5GSXNSdGwoKTttPSQobik7Zj1tLm91dGVyV2lkdGgoKTtpZih0eXBlb2YgYz09 Im51bWJlciIpe2EubGVmdD1jO2EucmlnaHQ9Yy1mfWVsc2UgaWYodHlwZW9mIGM9 PSJvYmplY3QiKWlmKHR5cGVvZiBjLmNsaWVudFg9PSJudW1iZXIiKXtpZigkLmJy b3dzZXIubXNpZSYmJC5icm93c2VyLnZlcnNpb249PSI2LjAiKWMuY2xpZW50WCs9 Zy5wYWdlWE9mZnNldDthLmxlZnQ9Yy5jbGllbnRYO2EucmlnaHQ9Yy5jbGllbnRY LWZ9ZWxzZXt2YXIgbz0kKGMpLHA9by5vZmZzZXQoKTthLmxlZnQ9cC5sZWZ0O2Eu cmlnaHQ9cC5sZWZ0K28ub3V0ZXJXaWR0aCgpLWZ9ZWxzZSByZXR1cm47YS50b2dn bGU9aT9hLnJpZ2h0OmEubGVmdH1jYXRjaChxKXtyZXR1cm59dHJ5e3ZhciBkO2lm KCFrJiYoYj09ZXx8Yj09aikpZD1hW2JdO2Vsc2V7dmFyIHI9T09VdGlsLkdldFZp ZXdwb3J0KCksbD17bGVmdDpnLnBhZ2VYT2Zmc2V0LHJpZ2h0OmcucGFnZVhPZmZz ZXQrci5pbm5lcldpZHRoLWZ9O2Q9YVtiXTtpZihkPGwubGVmdHx8bC5yaWdodDxk KWlmKGI9PWgpZD1pP2EubGVmdDphLnJpZ2h0O2Vsc2UgZD1sW2I9PWU/ajplXX1t LmNzcyhlLGQtKCQuYnJvd3Nlci5tc2llJiZpP2cucGFnZVhPZmZzZXQ6MCkpfWNh dGNoKHEpe319ZnVuY3Rpb24gRGlhbG9nQ29udHJvbCgpe1VMUzF5aDo7dmFyIGw9 ImxlZnQiLG09ImNvbXBsZXRlIixrPSJyZXNpemUgc2Nyb2xsIixkPSJmdW5jdGlv biIsZj0iY2VudGVyIixqPSJzdHJpbmciLGM9Im9iamVjdCIsYT1udWxsLG89dGhp cyxoPWEsYj1hLGk9YSxlPWEsbj0idG9nZ2xlIixxPWZhbHNlLGc9e2Nsb3NlOmEs Y2hhbmdlOmF9O2Z1bmN0aW9uIHcoZixjLGcsZSxkLGksail7VUxTMXloOjtpZiho PT1jKWlmKGI9PWEpcyhmLGMsZyxlLGQsaSxqKTtlbHNlIHIoKTtlbHNlIHMoZixj LGcsZSxkLGksail9by5Ub2dnbGU9dztmdW5jdGlvbiBzKHosdix3LG8sbCx4LHMp e1VMUzF5aDo7aWYodHlwZW9mIHo9PSJ1bmRlZmluZWQifHx6PT1hKXJldHVybjt2 PXR5cGVvZiB2PT1jP3Y6YTt3PXR5cGVvZiB3PT0iYm9vbGVhbiI/dzpmYWxzZTt4 PXR5cGVvZiB4PT1qP3g6dz8iY2RNb2RhbERpYWxvZyI6ImNkRGlhbG9nIjtzPXR5 cGVvZiBzPT1qP3M6dz9mOmE7dmFyIHk9diE9YTtpZihiPT1hJiYheSYmcyE9Zily ZXR1cm47KHkmJmghPXZ8fHMhPWEmJm4hPXMpJiZyKCk7T09VdGlsLkhpZGVWaWRl b0NvbnRyb2xzKCk7dmFyIEI9Yj09YTtpZihCKXtoPXY7Yj11KCk7bj0idG9nZ2xl IjtlPXtzaG93UGFyYW1zOntvcGFjaXR5OiJzaG93IixoZWlnaHQ6InNob3cifSxz aG93T3B0aW9uczp7ZHVyYXRpb246ImZhc3QiLGVhc2luZzoic3dpbmcifSxoaWRl UGFyYW1zOntvcGFjaXR5OiJoaWRlIixoZWlnaHQ6ImhpZGUifSxoaWRlT3B0aW9u czp7ZHVyYXRpb246ImZhc3QiLGVhc2luZzoic3dpbmcifX07aWYoeSkkKHYpLmFm dGVyKGIpO2Vsc2UgJCgiYm9keSIpLmFwcGVuZChiKX1pZih0eXBlb2YgbD09YyYm bCE9YSl7aWYodHlwZW9mIGwuc2hvd1BhcmFtcz09YyYmbC5zaG93UGFyYW1zIT1h KWUuc2hvd1BhcmFtcz1sLnNob3dQYXJhbXM7aWYodHlwZW9mIGwuc2hvd09wdGlv bnM9PWMmJmwuc2hvd09wdGlvbnMhPWEpZS5zaG93T3B0aW9ucz1sLnNob3dPcHRp b25zO2lmKHR5cGVvZiBsLmhpZGVQYXJhbXM9PWMmJmwuaGlkZVBhcmFtcyE9YSll LmhpZGVQYXJhbXM9bC5oaWRlUGFyYW1zO2lmKHR5cGVvZiBsLmhpZGVPcHRpb25z PT1jJiZsLmhpZGVPcHRpb25zIT1hKWUuaGlkZU9wdGlvbnM9bC5oaWRlT3B0aW9u c31iLnJlbW92ZUNsYXNzKCk7Yi5hZGRDbGFzcyh4KTtiLmZpbmQoIi5jZERpYWxv Z0NvbnRlbnQ6Zmlyc3QiKS5lbXB0eSgpLmFwcGVuZCh6KTshQiYmdHlwZW9mIGcu Y2hhbmdlPT1kJiZnLmNoYW5nZS5jYWxsKCk7Zy5jaGFuZ2U9YTtpZih3KXRyeXtp ZihpPT1hKWk9T09VdGlsLkR2RW5zdXJlTW9kYWxDb3ZlckV4aXN0cygpO2kuc3R5 bGUuZGlzcGxheT0iYmxvY2sifWNhdGNoKEMpe31pZih0eXBlb2Ygbz09YyYmbyE9 YSl7aWYodHlwZW9mIG8uY2xvc2U9PWQpZy5jbG9zZT1vLmNsb3NlO2lmKHR5cGVv ZiBvLmNoYW5nZT09ZClnLmNoYW5nZT1vLmNoYW5nZX1wKHYscyk7aWYocyE9YSlu PXM7dmFyIEE9ZnVuY3Rpb24oKXtVTFMxeWg6O3E9ZmFsc2U7YiE9YSYmYi5maW5k KCJhOmZpcnN0IikuZm9jdXMoKTskKHdpbmRvdykuYmluZChrLHQpO3R5cGVvZiBv PT1jJiZvIT1hJiZ0eXBlb2Ygby5vcGVuPT1kJiZvLm9wZW4uY2FsbCgpfTtxPXRy dWU7aWYoJC5icm93c2VyLm1zaWUmJiQuYnJvd3Nlci52ZXJzaW9uPT0iNi4wIil7 Yi5zaG93KCk7QS5jYWxsKCl9ZWxzZXtlLnNob3dPcHRpb25zW21dPUE7Yi5hbmlt YXRlKGUuc2hvd1BhcmFtcyxlLnNob3dPcHRpb25zKX19by5TaG93PXM7ZnVuY3Rp b24gcigpe1VMUzF5aDo7aWYoYj09YXx8cSlyZXR1cm47aWYoaCE9YSl0cnl7dmFy IGY9JChoKTtpZihmLmlzKCJhIikpZi5mb2N1cygpO2Vsc2UgZi5maW5kKCJhOmZp cnN0IikuZm9jdXMoKX1jYXRjaChuKXt9aWYoaSE9YSl7aS5zdHlsZS5kaXNwbGF5 PSJub25lIjtpPWF9dmFyIGM9YjtiPWE7dmFyIGw9Zy5jbG9zZTtnLmNsb3NlPWE7 Zy5jaGFuZ2U9YTt2YXIgaj1mdW5jdGlvbigpe1VMUzF5aDo7JCh3aW5kb3cpLnVu YmluZChrLHQpO2MuZW1wdHkoKTtjLnJlbW92ZSgpO3R5cGVvZiBsPT1kJiZsLmNh bGwoKX07T09VdGlsLlNob3dWaWRlb0NvbnRyb2xzKCk7aWYoJC5icm93c2VyLm1z aWUmJiQuYnJvd3Nlci52ZXJzaW9uPT0iNi4wIil7Yy5oaWRlKCk7ai5jYWxsKCl9 ZWxzZXtlLmhpZGVPcHRpb25zW21dPWo7Yy5hbmltYXRlKGUuaGlkZVBhcmFtcyxl LmhpZGVPcHRpb25zKX19by5DbG9zZT1yO2Z1bmN0aW9uIHYoKXtVTFMxeWg6O3Jl dHVybiBofW8uR2V0UGFyZW50T2JqPXY7ZnVuY3Rpb24gcChlLGQpe1VMUzF5aDo7 dmFyIGc9InBvc2l0aW9uIjtlPXR5cGVvZiBlPT1jJiZlIT1hP2U6aDtkPXR5cGVv ZiBkPT1qP2Q6bjtpZihkIT1mJiZlPT1hKXJldHVybjt0cnl7aWYoZD09Zil7dmFy IHQ9T09VdGlsLkZJc1J0bCgpLGk9T09VdGlsLkdldFNjcm9sbE9mZnNldCgpLGs9 T09VdGlsLkdldFZpZXdwb3J0KCkscT1iLm91dGVyV2lkdGgoKSxvPWIub3V0ZXJI ZWlnaHQoKSxwPWkucGFnZVhPZmZzZXQrKGsuaW5uZXJXaWR0aC1xKS8yLHM9aS5w YWdlWU9mZnNldCsoay5pbm5lckhlaWdodC1vKS8yO2IuY3NzKGwscC0oJC5icm93 c2VyLm1zaWUmJnQ/aS5wYWdlWE9mZnNldDowKSk7Yi5jc3MoInRvcCIscyl9ZWxz ZSBpZihkPT0iZW1iZWRkZWQiKWIuY3NzKGcsInJlbGF0aXZlIikuY3NzKCJjbGVh ciIsImJvdGgiKS5jc3MoInRvcCIsIiIpLmNzcyhsLCIiKTtlbHNle3ZhciBtPSQo ZSkscj1tLm9mZnNldCgpO2IuY3NzKGcsImFic29sdXRlIikuY3NzKCJ0b3AiLHIu dG9wK20ub3V0ZXJIZWlnaHQoKSk7UmVhbGlnbihiLmdldCgwKSxlLGQpfX1jYXRj aCh1KXt9fWZ1bmN0aW9uIHUoKXtVTFMxeWg6O3ZhciBhPSJmb250LWZhbWlseSIs ZD1PT1V0aWwuRklzUnRsKCksYj0kKCI8RElWIC8+IikuY3NzKCJkaXNwbGF5Iiwi bm9uZSIpLmNzcygidGV4dC1hbGlnbiIsZD8icmlnaHQiOmwpLmNzcyhhLCQoImJv ZHkiKS5jc3MoYSkpLGM9JCgiPERJViAvPiIpLmFkZENsYXNzKCJjZERpYWxvZ0Nv bnRlbnQiKTtiLmJpbmQoImNsaWNrIGRibGNsaWNrIG1vdXNlZG93biBtb3VzZXVw IG1vdXNlbW92ZSBtb3VzZW92ZXIgbW91c2VvdXQgbW91c2VlbnRlciBtb3VzZWxl YXZlIixmdW5jdGlvbihhKXtVTFMxeWg6O2Euc3RvcFByb3BhZ2F0aW9uKCl9KTty ZXR1cm4gYi5hcHBlbmQoYyl9ZnVuY3Rpb24gdCgpe1VMUzF5aDo7aWYoJC5icm93 c2VyLnNhZmFyaSl3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe1VMUzF5aDo7 cChhKX0sMSk7ZWxzZSBwKGEpfX12YXIgZ19EaWFsb2c9bmV3IERpYWxvZ0NvbnRy b2w7KGZ1bmN0aW9uKGEpe1VMUzF5aDo7aWYoIWEpcmV0dXJuO2EuZm4uc2V0U2Nh bGFibGVGb250U2l6ZT1mdW5jdGlvbihlKXtVTFMxeWg6O3ZhciBmPXBhcnNlRmxv YXQoZSl8fDEsYz0nPGRpdiBzdHlsZT0iZGlzcGxheTpub25lO2ZvbnQtc2l6ZTox ZW07bWFyZ2luOjA7cGFkZGluZzowO2xpbmUtaGVpZ2h0OjE7Ym9yZGVyOjA7aGVp Z2h0OmF1dG87Ij4mbmJzcDs8L2Rpdj4nLGI9alF1ZXJ5KGMpLmFwcGVuZFRvKGEo ImJvZHkiKSksZD1iLmhlaWdodCgpO2IucmVtb3ZlKCk7dGhpcy5lYWNoKGZ1bmN0 aW9uKGosaSl7VUxTMXloOjt2YXIgZz1hKGkpLGI9alF1ZXJ5KGMpO2cuYWZ0ZXIo Yik7dmFyIGU9Yi5oZWlnaHQoKTtpZihlPjApe3ZhciBoPWQvZSpmO2cuY3NzKCJm b250LXNpemUiLGgrImVtIil9Yi5yZW1vdmUoKX0pO3JldHVybiB0aGlzfX0pKGpR dWVyeSk7KGZ1bmN0aW9uKGEpe1VMUzF5aDo7aWYoIWEpcmV0dXJuO2EuZm4ucG9z aXRpb25OZWFyPWZ1bmN0aW9uKGMsaixpKXtVTFMxeWg6O2M9YShjKTtpZighY3x8 IWMuanF1ZXJ5KXJldHVybjtmb3IodmFyIGI9Yy5vZmZzZXQoKSxkPXt0b3A6MCxs ZWZ0OjB9LGY9Yy5wYXJlbnRzKCksZT0wO2U8Zi5sZW5ndGg7ZSsrKXt2YXIgZz1h KGZbZV0pLGg9Zy5jc3MoInBvc2l0aW9uIik7ZD1nLm9mZnNldCgpO2lmKGg9PSJy ZWxhdGl2ZSJ8fGg9PSJhYnNvbHV0ZSJ8fGQudG9wPT0wJiZkLmxlZnQ9PTApYnJl YWt9aWYoaiE9bnVsbCl7Yi50b3ArPWo7Yi50b3AtPWQudG9wO3RoaXMuY3NzKHt0 b3A6Yi50b3B9KX1pZihpIT1udWxsKXtiLmxlZnQrPWk7Yi5sZWZ0LT1kLmxlZnQ7 dGhpcy5jc3Moe2xlZnQ6Yi5sZWZ0fSl9cmV0dXJuIHRoaXN9fSkoalF1ZXJ5KTso ZnVuY3Rpb24oYSl7VUxTMXloOjtpZighYSlyZXR1cm47YS5mbi5yZWFkeUZvckFi c29sdXRlUG9zaXRpb25pbmc9ZnVuY3Rpb24oYyl7VUxTMXloOjt2YXIgYj1mdW5j dGlvbihjKXtVTFMxeWg6O2lmKGEuYnJvd3Nlci5zYWZhcmkmJmRvY3VtZW50LnJl YWR5U3RhdGUhPSJjb21wbGV0ZSIpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtVTFMx eWg6O2IoYyl9LDUwKTtyZXR1cm59YyYmYygpfTt0aGlzLnJlYWR5KGZ1bmN0aW9u KCl7VUxTMXloOjtiKGMpfSk7cmV0dXJuIHRoaXN9fSkoalF1ZXJ5KTsoZnVuY3Rp b24oYSl7VUxTMXloOjtpZighYSlyZXR1cm47YS5mbi5vb1NsaWRlVG9nZ2xlPWZ1 bmN0aW9uKGQsYyl7VUxTMXloOjt2YXIgYj1hKHRoaXMpO2lmKGIuaXMoIjp2aXNp YmxlIikpYi5hbmltYXRlKHtoZWlnaHQ6MH0se2R1cmF0aW9uOmQsY29tcGxldGU6 ZnVuY3Rpb24oKXtVTFMxeWg6O2IuaGlkZSgpO2IuY3NzKHtoZWlnaHQ6ImF1dG8i fSk7YyYmYygpfX0pO2Vsc2V7dmFyIGU9Yi5zaG93KCkuaGVpZ2h0KCk7Yi5jc3Mo e2hlaWdodDowfSkuYW5pbWF0ZSh7aGVpZ2h0OmV9LHtkdXJhdGlvbjpkLGNvbXBs ZXRlOmZ1bmN0aW9uKCl7VUxTMXloOjtiLmNzcyh7aGVpZ2h0OiJhdXRvIn0pO2Mm JmMoKX19KX1yZXR1cm4gdGhpc319KShqUXVlcnkpO09PQy5Qcm9maWxlRGV0YWls c0xvYWRlcj1mdW5jdGlvbigpe1VMUzF5aDo7dmFyIGE9dGhpcztPT0MuUHJvZmls ZURldGFpbHNMb2FkZXIuaW5pdGlhbGl6ZUJhc2UoYSk7YS5CaW9zPW51bGw7YS5F bGxpcHNpcz0iLi4uIjthLmNhbGxiYWNrPW51bGw7YS5pbml0aWFsaXplKCl9O09P Qy5Qcm9maWxlRGV0YWlsc0xvYWRlci5wcm90b3R5cGU9e2luaXRpYWxpemU6ZnVu Y3Rpb24oYil7VUxTMXloOjt2YXIgYT1bXTskKCIuY2RCaW9zIC5jZEJpbyIpLmVh Y2goZnVuY3Rpb24oKXtVTFMxeWg6O3ZhciBkPXRoaXMuaWQsYz0kKHRoaXMpLmF0 dHIoInJlbCIpO2lmKGQmJmMmJmMubGVuZ3RoKXt2YXIgYj1jLnNwbGl0KCI6Iik7 YS5wdXNoKHtpZDpkLGFpOmJbMF0sdzpiWzFdLHQ6YlsyXX0pfX0pO3RoaXMuQmlv cz1hO3RoaXMuY2FsbGJhY2s9dHlwZW9mIGI9PSJmdW5jdGlvbiI/YjpudWxsfSxM b2FkOmZ1bmN0aW9uKCl7VUxTMXloOjt2YXIgYT10aGlzO2lmKCFhLkJpb3N8fCFh LkJpb3MubGVuZ3RoKXJldHVybjtmb3IodmFyIGM9W10sYj0wO2I8YS5CaW9zLmxl bmd0aDtiKyspe3ZhciBkPWEuQmlvc1tiXS5haTtpZighZHx8IWQubGVuZ3RoKWNv bnRpbnVlO2MucHVzaCh7YWk6YS5CaW9zW2JdLmFpLHc6YS5CaW9zW2JdLncsdDph LkJpb3NbYl0udH0pfXR5cGVvZiBHbG9iYWxTdmMhPT0idW5kZWZpbmVkIiYmR2xv YmFsU3ZjLkdldFByb2ZpbGVJbmZvKGMsMSxGdW5jdGlvbi5jcmVhdGVEZWxlZ2F0 ZShhLGEuUHJvY2VzcykpfSxQcm9jZXNzOmZ1bmN0aW9uKGUpe1VMUzF5aDo7dmFy IGQ9dGhpcztpZighZSlyZXR1cm47Zm9yKHZhciBoPTA7aDxlLmxlbmd0aDtoKysp e3ZhciBjPWVbaF07aWYoIWN8fCFjLmFpKWNvbnRpbnVlO3ZhciBiPW51bGw7Zm9y KHZhciBqIGluIGQuQmlvcylpZihkLkJpb3Nbal0uYWkudG9VcHBlckNhc2UoKT09 Yy5haS50b1VwcGVyQ2FzZSgpKXtiPSQoIiMiK2QuQmlvc1tqXS5pZCk7YnJlYWt9 aWYoIWJ8fCFiLmxlbmd0aCljb250aW51ZTt2YXIgaT0kKCIuY2RCaW9EZXNjcmlw dGlvbiIsYiksZj1jLmQ7ZiYmZi5sZW5ndGgmJmpRdWVyeS50cmltKGkuaHRtbCgp KS5sZW5ndGg9PTAmJmkuaHRtbChmKTt2YXIgYT0kKCJpbWcuY2RCaW9JbWFnZSIs YiksZz1jLmk7aWYoZyYmZy5sZW5ndGgmJmEuYXR0cigic3JjIikuaW5kZXhPZigi cHJvdmlkZXI0MHg0MCIpPi0xKXt2YXIgaz1hLmNsb25lKCkuY3NzKHtwb3NpdGlv bjoiYWJzb2x1dGUiLHpJbmRleDo5OTk5fSkucG9zaXRpb25OZWFyKGEsMCwwKS5p bnNlcnRBZnRlcihhKTthLmF0dHIoe3NyYzpnfSk7ay5mYWRlT3V0KCJub3JtYWwi LGZ1bmN0aW9uKCl7VUxTMXloOjskKHRoaXMpLnJlbW92ZSgpfSl9fWQuY2FsbGJh Y2smJmQuY2FsbGJhY2suYXBwbHkobnVsbCxbZV0pfX07ZnVuY3Rpb24gRm9ybVN1 Ym1pdChkLGMpe1VMUzF5aDo7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi Rk9STSIpO2EubWV0aG9kPWQ7YS5hY3Rpb249YztmdW5jdGlvbiBiKGMsZCl7VUxT MXloOjt2YXIgYj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJJTlBVVCIpO2IuaWQ9 YztiLm5hbWU9YztiLnR5cGU9ImhpZGRlbiI7Yi52YWx1ZT1kO2EuYXBwZW5kQ2hp bGQoYil9dGhpcy5BZGRQYXJhbT1iO2Z1bmN0aW9uIGUoKXtVTFMxeWg6O2RvY3Vt ZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7YS5zdWJtaXQoKTtkb2N1bWVudC5ib2R5 LnJlbW92ZUNoaWxkKGEpfXRoaXMuU3VibWl0PWV9dmFyIGR2UHJvZ3Jlc3NCYXI9 bnVsbCxjdG5fc3RhdGU9e3Vuc2F2ZWQ6MCxwcml2OjEsc2hhcmVkOjJ9LGFzc2V0 X2dyb3VwPXt0ZW1wbGF0ZXM6MCxjbGlwYXJ0OjEsc3VwcG9ydDoyfTtmdW5jdGlv biBHZXRFbGVtU3RhdGljSWQoZSxjLGQpe1VMUzF5aDo7dmFyIGI9InVuZGVmaW5l ZCIsYT1lO2lmKHR5cGVvZiBjIT1iKXtzd2l0Y2goYyl7Y2FzZSBhc3NldF9ncm91 cC50ZW1wbGF0ZXM6YT1hKyJfdG1wbCI7YnJlYWs7Y2FzZSBhc3NldF9ncm91cC5j bGlwYXJ0OmE9YSsiX2NscCI7YnJlYWs7Y2FzZSBhc3NldF9ncm91cC5zdXBwb3J0 OmE9YSsiX3N1cCJ9aWYodHlwZW9mIGQhPWIpYT1hKyJfIitkfXJldHVybiBhfWZ1 bmN0aW9uIEN0bkRpYWxvZ0NvbnRyb2woKXtVTFMxeWg6O3ZhciBxPSImbmJzcCIs cD0iY2RjbHIiLHc9ImN0bkRpYWxvZ09rIixvPSJjZEN0bkRsZ0J0bnMiLHM9ImNk Q3RuRGxnTGFiZWwiLHI9ImNkQ3RuRGxnSW5wdXRMYWJlbCIsQT0iY2RDdG5EbGdJ bnB1dCIsYz10cnVlLGk9ImNkQnRuUiIsaD0iY2RCdG5NIixnPSJjZEJ0bkwiLG49 ImNkQnRuIixtPSJqYXZhc2NyaXB0OnZvaWQoMCk7IixsPSJocmVmIix0PSJjdG5E aWFsb2dDYW5jZWwiLGU9ImlkIixrPSI8YSAvPiIsaj0iY2RDdG5EbGdCdG4iLGE9 IjxkaXYgLz4iLGI9bnVsbCxmPWZhbHNlLHU9dGhpcyxHPWYsRT1mLHo9ZixkPWIs dj1iLEw9IiIsRD1iLE09YixCPWIseD1iLEY9YixPPWIsTj0kKGEpLmFkZENsYXNz KGopLmFwcGVuZCgkKGspLmF0dHIoZSx0KS5hdHRyKGwsbSkuYWRkQ2xhc3Mobiku Y2xpY2soeSkuYXBwZW5kKCQoYSkuYWRkQ2xhc3MoZykpLmFwcGVuZCgkKGEpLmFk ZENsYXNzKGgpLmh0bWwoT09VSS5MX0N0bkNhbmNlbExpbmspKS5hcHBlbmQoJChh KS5hZGRDbGFzcyhpKSkpO3UuR2V0VGV4dElucHV0PWZ1bmN0aW9uKCl7VUxTMXlo OjtyZXR1cm4gRn07dS5HZXRmU3VibWl0PWZ1bmN0aW9uKCl7VUxTMXloOjtyZXR1 cm4gT307ZnVuY3Rpb24geSgpe1VMUzF5aDo7Z19EaWFsb2cuQ2xvc2UoKX11LkNs b3NlRGlhbG9nPXk7ZnVuY3Rpb24gUShhKXtVTFMxeWg6O2lmKGEua2V5Q29kZT09 MTMpRz1jO0koKX1mdW5jdGlvbiBWKGEpe1VMUzF5aDo7aWYoYS5rZXlDb2RlPT0x Myl7dGhpcy5jbGFzc05hbWU9PUEmJnYuZmluZCgiYSNjdG5EaWFsb2dPayIpLmNs aWNrKCk7Rz1mfUMoKX1mdW5jdGlvbiBIKGYpe1VMUzF5aDo7dmFyIGM9InVuZGVm aW5lZCI7aWYoZD09YilyZXR1cm47dmFyIGE9ZC5sZW5ndGg+MD9kWzBdOmI7aWYo YS52YWx1ZT09IiIpe2EuY2xhc3NOYW1lPXI7YS52YWx1ZT1MO0MoKTtpZih0eXBl b2YgZj09ImJvb2xlYW4iJiZmKWlmKHR5cGVvZiBhLmNyZWF0ZVRleHRSYW5nZSE9 Yyl7dmFyIGU9YS5jcmVhdGVUZXh0UmFuZ2UoKTtlLm1vdmUoImNoYXJhY3RlciIs MCk7ZS5zZWxlY3QoKX1lbHNlIHR5cGVvZiBhLnNldFNlbGVjdGlvblJhbmdlIT1j JiZhLnNldFNlbGVjdGlvblJhbmdlKDAsMCl9fWZ1bmN0aW9uIEkoKXtVTFMxeWg6 O2lmKGQ9PWIpcmV0dXJuO3ZhciBhPWQubGVuZ3RoPjA/ZFswXTpiO2lmKGEuY2xh c3NOYW1lPT1yKXthLnZhbHVlPSIiO2EuY2xhc3NOYW1lPUF9fWZ1bmN0aW9uIEMo KXtVTFMxeWg6O2lmKGQ9PWJ8fHY9PWIpcmV0dXJuO3ZhciBhPWQubGVuZ3RoPjA/ ZFswXTpiO2lmKGEudmFsdWU9PSIifHxhLmNsYXNzTmFtZT09cil7aWYoeil7di5l bXB0eSgpLmFwcGVuZChELmNsb25lKGMpKTt6PWZ9fWVsc2UgaWYoIXope3YuZW1w dHkoKS5hcHBlbmQoTS5jbG9uZShjKSk7ej1jfX1mdW5jdGlvbiBKKCl7VUxTMXlo OjtpZighRSlkPWI7aWYoeCE9Yil7eC51bmJpbmQoInN1Ym1pdCIsSyk7eD1ifWlm KEIhPWIpe3dpbmRvdy5jbGVhckludGVydmFsKEIpO0I9Yn19ZnVuY3Rpb24gVShh KXtVTFMxeWg6O3ZhciBiPVN0clRyaW0oZC52YWwoKSk7aWYoZC5oYXNDbGFzcyhy KXx8Yi5sZW5ndGg9PTApe2QuZm9jdXMoKTtyZXR1cm59Rj1iO2dfRGlhbG9nLkNs b3NlKCk7dHlwZW9mIGE9PSJmdW5jdGlvbiImJmEuY2FsbCgpfWZ1bmN0aW9uIEso KXtVTFMxeWg6O2lmKEcpcmV0dXJuIGZ9ZnVuY3Rpb24gVyhoLGksaixsLGssbSl7 VUxTMXloOjtGPWI7RD1pO009ajt2YXIgZz0kKGEpO2cuYXBwZW5kKCQoYSkuYWRk Q2xhc3MocykudGV4dChsKSk7TD1rO2Q9JCgiPGlucHV0IHR5cGU9J3RleHQnLz4i KS5hdHRyKGUsImlucHV0Q3RuTmFtZSIpLmF0dHIoIm1heGxlbmd0aCIsODApLmtl eWRvd24oUSkua2V5dXAoVikuY2xpY2soSSkuYmx1cihIKTtnLmFwcGVuZChkKTt2 PSQoYSkuYXBwZW5kKEQuY2xvbmUoYykpO2cuYXBwZW5kKHYpO0U9YztnX0RpYWxv Zy5TaG93KGcsaCxtLHtvcGVuOmZ1bmN0aW9uKCl7VUxTMXloOjtkLmZvY3VzKCk7 SChjKTt0cnl7dmFyIGE9JChoKTt4PWEuY2xvc2VzdCgiZm9ybSIpO3guYmluZCgi c3VibWl0IixLKX1jYXRjaChiKXt9Qj13aW5kb3cuc2V0SW50ZXJ2YWwoQywzMDAp O0U9Zn0sY2xvc2U6SixjaGFuZ2U6Sn0pfWZ1bmN0aW9uIFMoZix1LHQsdil7VUxT MXloOjtpZihkIT1iJiZmPT1nX0RpYWxvZy5HZXRQYXJlbnRPYmooKSl7ZC5mb2N1 cygpO3JldHVybn12YXIgcj0kKGEpLmFkZENsYXNzKG8pLmFwcGVuZChOLmNsb25l KGMpKS5hcHBlbmQoJChhKS5hdHRyKGUsdykuYWRkQ2xhc3MoImNkQ3RuRGxnQnRu IGNkQnRuRGlzYWJsZSIpLmFwcGVuZCgkKGEpLmFkZENsYXNzKGcpKS5hcHBlbmQo JChhKS5hZGRDbGFzcyhoKS5odG1sKE9PVUkuTF9DdG5TdWJtaXRMaW5rKSkuYXBw ZW5kKCQoYSkuYWRkQ2xhc3MoaSkpKS5hcHBlbmQoJChhKS5hZGRDbGFzcyhwKS5o dG1sKHEpKSxzPSQoYSkuYWRkQ2xhc3MobykuYXBwZW5kKE4uY2xvbmUoYykpLmFw cGVuZCgkKGEpLmFkZENsYXNzKGopLmFwcGVuZCgkKGspLmF0dHIoZSx3KS5hdHRy KGwsbSkuYWRkQ2xhc3MobikuY2xpY2soZnVuY3Rpb24oKXtVTFMxeWg6O089YztV KHYpfSkuYXBwZW5kKCQoYSkuYWRkQ2xhc3MoZykpLmFwcGVuZCgkKGEpLmFkZENs YXNzKGgpLmh0bWwoT09VSS5MX0N0blN1Ym1pdExpbmspKS5hcHBlbmQoJChhKS5h ZGRDbGFzcyhpKSkpKS5hcHBlbmQoJChhKS5hZGRDbGFzcyhwKS5odG1sKHEpKTtX KGYscixzLHUsdCxmPT1iKX11LlJlbmRlclNhdmVDdG5EaWFsb2c9UztmdW5jdGlv biBSKHYsdSxmLHIsZCl7VUxTMXloOjt2YXIgYj0kKGEpO2IuYXBwZW5kKCQoYSku YWRkQ2xhc3MocykuaHRtbCh1KSk7Yi5hcHBlbmQoJChhKS5hZGRDbGFzcyhvKS5h cHBlbmQoJChhKS5hZGRDbGFzcyhqKS5hcHBlbmQoJChrKS5hdHRyKGUsdCkuYXR0 cihsLG0pLmFkZENsYXNzKG4pLmNsaWNrKHkpLmFwcGVuZCgkKGEpLmFkZENsYXNz KGcpKS5hcHBlbmQoJChhKS5hZGRDbGFzcyhoKS5odG1sKHIpKS5hcHBlbmQoJChh KS5hZGRDbGFzcyhpKSkpKS5hcHBlbmQoJChhKS5hZGRDbGFzcyhqKS5hcHBlbmQo JChrKS5hdHRyKGUsdykuYXR0cihsLG0pLmFkZENsYXNzKG4pLmNsaWNrKGZ1bmN0 aW9uKCl7VUxTMXloOjt5KCk7ZC5jYWxsKCl9KS5hcHBlbmQoJChhKS5hZGRDbGFz cyhnKSkuYXBwZW5kKCQoYSkuYWRkQ2xhc3MoaCkuaHRtbChmKSkuYXBwZW5kKCQo YSkuYWRkQ2xhc3MoaSkpKSkuYXBwZW5kKCQoYSkuYWRkQ2xhc3MocCkuaHRtbChx KSkpO2dfRGlhbG9nLlNob3coYix2LGMpfXUuUmVuZGVyQ29uZmlybURpYWxvZz1S O2Z1bmN0aW9uIFAodix1LGYpe1VMUzF5aDo7dmFyIGQ9JChhKTtkLmFwcGVuZCgk KGEpLmFkZENsYXNzKHMpLnRleHQodSkpO2R2UHJvZ3Jlc3NCYXI9JCgiPGRpdi8+ IikuYWRkQ2xhc3MoImR2UHJvZ0N0cmwiKTtkdlByb2dyZXNzQmFyLnByb2dyZXNz YmFyKHtpbnRlcnZhbDo1MDAsd2lkdGg6MzAwLHZhbHVlOjB9KTtkLmFwcGVuZCgk KGEpLmFwcGVuZChkdlByb2dyZXNzQmFyKSk7dmFyIHI9JChhKS5hZGRDbGFzcyhq KS5hcHBlbmQoJChrKS5hdHRyKGUsdCkuYXR0cihsLG0pLmFkZENsYXNzKG4pLmNs aWNrKGYpLmFwcGVuZCgkKGEpLmFkZENsYXNzKGcpKS5hcHBlbmQoJChhKS5hZGRD bGFzcyhoKS5odG1sKE9PVUkuTF9CdG5DYW5jZWwpKS5hcHBlbmQoJChhKS5hZGRD bGFzcyhpKSkpO2QuYXBwZW5kKCQoYSkuYWRkQ2xhc3MobykuYXBwZW5kKHIpLmFw cGVuZCgkKGEpLmFkZENsYXNzKHApLmh0bWwocSkpKTtnX0RpYWxvZy5TaG93KGQs dixjLHtvcGVuOmZ1bmN0aW9uKCl7VUxTMXloOjtPT1V0aWwuU2V0Rm9jdXMocil9 LGNsb3NlOmZ9LGIsImNkQ3RuUHJvZ3Jlc3NEaWFsb2ciKX11LlJlbmRlclByb2dy ZXNzQmFyRGlhbG9nPVA7ZnVuY3Rpb24gVChkLHYsdSl7VUxTMXloOjt2YXIgYz0k KGEpLHg9ZCE9Yj9iOiJjZW50ZXIiLHc9dT9iOiJjZERpYWxvZyBjZERpYWxvZ0Vy cm9yIjtjLmFwcGVuZCgkKGEpLmFkZENsYXNzKHMpLnRleHQodikpO3ZhciByPSQo YSkuYWRkQ2xhc3MoaikuYXBwZW5kKCQoaykuYXR0cihlLHQpLmF0dHIobCxtKS5h ZGRDbGFzcyhuKS5jbGljayh5KS5hcHBlbmQoJChhKS5hZGRDbGFzcyhnKSkuYXBw ZW5kKCQoYSkuYWRkQ2xhc3MoaCkuaHRtbChPT1VJLkxfQnRuQ2xvc2UpKS5hcHBl bmQoJChhKS5hZGRDbGFzcyhpKSkpO2MuYXBwZW5kKCQoYSkuYWRkQ2xhc3Mobyku YXBwZW5kKHIpLmFwcGVuZCgkKGEpLmFkZENsYXNzKHApLmh0bWwocSkpKTtnX0Rp YWxvZy5TaG93KGMsZCxmLGIsYix3LHgpfXUuUmVuZGVyUmVzdWx0RGlhbG9nPVR9 dmFyIEN0bkFjdGlvbkRsZ0NvbnRyb2w9bmV3IEN0bkRpYWxvZ0NvbnRyb2w7ZnVu Y3Rpb24gUmVsb2FkUGFnZShhKXtVTFMxeWg6O2lmKGEhPW51bGwpd2luZG93Lmxv Y2F0aW9uLmhyZWY9YTtlbHNlIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKX1mdW5j dGlvbiBDdG5TZXJ2aWNlQWN0aW9uKGcsYyxlLGYpe1VMUzF5aDo7dmFyIGI9InVu ZGVmaW5lZCIsYT1HZXRYbWxIdHRwKCk7YS5vcGVuKCJQT1NUIixPT1VJLkNUTl9Y TUwsdHJ1ZSk7YS5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtVTFMxeWg6 O2lmKGEucmVhZHlTdGF0ZT09NCl7dHJ5e2lmKHR5cGVvZiBhLnN0YXR1cz09Yily ZXR1cm59Y2F0Y2goYyl7cmV0dXJufWlmKGEuc3RhdHVzPT0yMDApdHlwZW9mIGUh PWImJmUoYS5yZXNwb25zZVhNTC5kb2N1bWVudEVsZW1lbnQpO2Vsc2UgdHlwZW9m IGYhPWImJmYoKX19O2Euc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIiwi YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIik7dmFyIGQ9T09VSS5x cEN0bkFjdGlvbisiPSIrZztpZih0eXBlb2YgYyE9YiYmYyE9bnVsbClkKz0iJiIr YzthLnNlbmQoZCl9ZnVuY3Rpb24gUmVxdWVzdENvbGxlY3Rpb25EYXRhKGYsYixj KXtVTFMxeWg6O3ZhciBhPSJmdW5jdGlvbiI7ZnVuY3Rpb24gZShpKXtVTFMxeWg6 O3ZhciBoPSJwcm92YXNzZXRzIixnPSJwcm92bmFtZXMiO2lmKGkhPW51bGwmJmku Z2V0RWxlbWVudHNCeVRhZ05hbWUoIml0ZW0iKS5sZW5ndGg+MCl7Zm9yKHZhciBj PWkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIml0ZW0iKSxqPW5ldyBDdG5JdGVtc0xp c3QoYy5sZW5ndGgpLGU9MDtlPGMubGVuZ3RoO2UrKylpZihjW2VdIT1udWxsKXt2 YXIgZj1uZXcgQ3RuSXRlbShjW2VdLmdldEF0dHJpYnV0ZSgiaWQiKSxjW2VdLmdl dEF0dHJpYnV0ZSgibWFya2V0IikpO2Yuc2V0RG93bmxvYWRQYXJhbXMoY1tlXS5n ZXRBdHRyaWJ1dGUoInRpdGxlIiksY1tlXS5nZXRBdHRyaWJ1dGUoInVybCIpLGNb ZV0uZ2V0QXR0cmlidXRlKCJhcHAiKSxwYXJzZUludChjW2VdLmdldEF0dHJpYnV0 ZSgidmVyc2lvbiIpKSxCb29sZWFuLnBhcnNlKGNbZV0uZ2V0QXR0cmlidXRlKCJm Y3NjIikpLHBhcnNlSW50KGNbZV0uZ2V0QXR0cmlidXRlKCJzaXplIikpKTtpZihm LmZJc1RlbXBsYXRlKCkpZi5zZXRUZW1wbGF0ZUV4dHJhUGFyYW1zKGNbZV0uZ2V0 QXR0cmlidXRlKGcpLGNbZV0uZ2V0QXR0cmlidXRlKGgpLGNbZV0uZ2V0QXR0cmli dXRlKCJhcHB2ZXIiKSk7ZWxzZSBpZihmLmZJc1N1cHBvcnQoKSlmLnNldFN1cHBv cnRFeHRyYVBhcmFtcyhjW2VdLmdldEF0dHJpYnV0ZSgiZGVzY3IiKSxjW2VdLmdl dEF0dHJpYnV0ZShnKSxjW2VdLmdldEF0dHJpYnV0ZSgiYXBwdmVyIikpO2Vsc2Ug Zi5mSXNDbGlwQXJ0KCkmJmYuc2V0Q2xpcEFydEV4dHJhUGFyYW1zKGNbZV0uZ2V0 QXR0cmlidXRlKGcpLGNbZV0uZ2V0QXR0cmlidXRlKGgpKTtqLmFkZEl0ZW0oZil9 dHlwZW9mIGI9PWEmJmIoail9ZWxzZSBkKCl9ZnVuY3Rpb24gZCgpe1VMUzF5aDo7 dHlwZW9mIGM9PWEmJmMobnVsbCl9dmFyIGc9T09VSS5xcEN0bklkKyI9IitmO0N0 blNlcnZpY2VBY3Rpb24oT09VSS5DVE5fQUNUSU9OX0dFVENPTExFQ1RJT05JVEVN UyxnLGUsZCl9ZnVuY3Rpb24gUmVxdWVzdFNoYXJlZENvbGxlY3Rpb25EYXRhKGYs YixjKXtVTFMxeWg6O3ZhciBhPSJmdW5jdGlvbiI7ZnVuY3Rpb24gZShmKXtVTFMx eWg6O2lmKGYhPW51bGwmJmYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIml0ZW0iKS5s ZW5ndGg+MCl7Zm9yKHZhciBlPWYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIml0ZW0i KSxnPW5ldyBBcnJheShlLmxlbmd0aCksYz0wO2M8ZS5sZW5ndGg7YysrKWlmKGVb Y10hPW51bGwpZ1tjXT1uZXcgU2hhcmVkQ3RuSW5mbyhlW2NdLmdldEF0dHJpYnV0 ZSgiaWQiKSxlW2NdLmdldEF0dHJpYnV0ZSgidGl0bGUiKSxlW2NdLmdldEF0dHJp YnV0ZSgidXJsIiksZVtjXS5nZXRBdHRyaWJ1dGUoInRydXN0TGV2ZWwiKSk7dHlw ZW9mIGI9PWEmJmIoZyl9ZWxzZSBkKCl9ZnVuY3Rpb24gZCgpe1VMUzF5aDo7dHlw ZW9mIGM9PWEmJmMobnVsbCl9dmFyIGc9T09VSS5xcEFzc2V0SWQrIj0iK2Y7Q3Ru U2VydmljZUFjdGlvbihPT1VJLkNUTl9BQ1RJT05fR0VUQ09MTEVDVElPTlNMSVNU LGcsZSxkKX1mdW5jdGlvbiBVcGRhdGVOdW1iZXJPZkFzc2V0cyhkLGMsYil7VUxT MXloOjt2YXIgYT1PT1VJLkxfQ3RuT25lQXNzZXRPZk9uZTtpZihiPjEpe2E9T09V SS5MX0N0bk51bWJlck9mQXNzZXRzO2E9YS5yZXBsYWNlKCJ7MH0iLGMpO2E9YS5y ZXBsYWNlKCJ7MX0iLGIpfSQoIiMiK2QpLnRleHQoYSl9ZnVuY3Rpb24gQ3RuSXRl bSh6LHEpe1VMUzF5aDo7dmFyIGQ9dHJ1ZSxiPW51bGwsYz0idW5kZWZpbmVkIixh PXRoaXMsbD0wO2EuZ2V0RGl2SW5kZXg9ZnVuY3Rpb24oKXtVTFMxeWg6O3JldHVy biBsfTthLnNldERpdkluZGV4PWZ1bmN0aW9uKGEpe1VMUzF5aDo7bD1hfTt2YXIg ZT16O2EuZ2V0QXNzZXRJZD1mdW5jdGlvbigpe1VMUzF5aDo7cmV0dXJuIGV9O3Zh ciB5PXR5cGVvZiBxIT1jP3E6Z19sbGNjO2EuZ2V0TWFya2V0PWZ1bmN0aW9uKCl7 VUxTMXloOjtyZXR1cm4geX07dmFyIGk9MDthLmdldFNpemU9ZnVuY3Rpb24oKXtV TFMxeWg6O3JldHVybiBpfTthLnNldFNpemU9ZnVuY3Rpb24oYSl7VUxTMXloOjtp PWF9O3ZhciBwPWI7YS5nZXRUaXRsZT1mdW5jdGlvbigpe1VMUzF5aDo7cmV0dXJu IHB9O3ZhciBzPWI7YS5nZXRBcHA9ZnVuY3Rpb24oKXtVTFMxeWg6O3JldHVybiBz fTt2YXIgbj1iO2EuZ2V0QXBwVmVyPWZ1bmN0aW9uKCl7VUxTMXloOjtyZXR1cm4g bn07dmFyIHI9ZmFsc2U7YS5mSXNDU0M9ZnVuY3Rpb24oKXtVTFMxeWg6O3JldHVy biByfTthLmZJc1RlbXBsYXRlPWZ1bmN0aW9uKCl7VUxTMXloOjtyZXR1cm4gQ1RO QXRJc1RlbXBsYXRlKGUuc3Vic3RyaW5nKDAsMikpfTthLmZJc0NsaXBBcnQ9ZnVu Y3Rpb24oKXtVTFMxeWg6O3JldHVybiBDVE5BdElzQ2xpcEFydChlLnN1YnN0cmlu ZygwLDIpKX07YS5mSXNTdXBwb3J0PWZ1bmN0aW9uKCl7VUxTMXloOjtyZXR1cm4g Q1ROQXRJc1N1cHBvcnQoZS5zdWJzdHJpbmcoMCwyKSl9O2EuZ2V0R3JvdXA9ZnVu Y3Rpb24oKXtVTFMxeWg6O3JldHVybiBDVE5BdFRvR3JvdXAoZS5zdWJzdHJpbmco MCwyKSl9O3ZhciB0PWI7YS5nZXRVUkw9ZnVuY3Rpb24oKXtVTFMxeWg6O3N3aXRj aCh0aGlzLmdldEdyb3VwKCkpe2Nhc2UgYXNzZXRfZ3JvdXAudGVtcGxhdGVzOnJl dHVybiBPT1VJLlRFTVBMQVRFX0RPV05MT0FEX1VSTDtjYXNlIGFzc2V0X2dyb3Vw LmNsaXBhcnQ6cmV0dXJuIE9PVUkuQ0xJUEFSVF9ET1dOTE9BRF9VUkw7ZGVmYXVs dDpyZXR1cm4gdH19O2EuZ2V0Q1RUPWZ1bmN0aW9uKCl7VUxTMXloOjt2YXIgYT0i Q1RUPSI7c3dpdGNoKHRoaXMuZ2V0R3JvdXAoKSl7Y2FzZSBhc3NldF9ncm91cC50 ZW1wbGF0ZXM6cmV0dXJuIGErT09DLkNUVC5Db2xsZWN0aW9uVGVtcGxhdGVEb3du bG9hZDtjYXNlIGFzc2V0X2dyb3VwLmNsaXBhcnQ6cmV0dXJuIGErT09DLkNUVC5D b2xsZWN0aW9uQ2xpcGFydERvd25sb2FkO2RlZmF1bHQ6cmV0dXJuIGErT09DLkNU VC5Db2xsZWN0aW9uU3VwcG9ydERvd25sb2FkfX07dmFyIG09YjthLmdldFJBcHBW ZXI9ZnVuY3Rpb24oKXtVTFMxeWg6O3JldHVybiBtfTt2YXIgbz1iO2EuZ2V0UkRl c2M9ZnVuY3Rpb24oKXtVTFMxeWg6O3JldHVybiBvfTt2YXIgZz1iO2EuZ2V0UlBy b3ZpZGVyPWZ1bmN0aW9uKCl7VUxTMXloOjtyZXR1cm4gZ307dmFyIGY9YjthLmdl dFByb3ZpZGVyVVJMPWZ1bmN0aW9uKCl7VUxTMXloOjtpZihmPT1iKXJldHVybiBi O3ZhciBhPWYuaW5kZXhPZigiOyIpLGM9YT4wP2Yuc3Vic3RyKDAsYSk6ZjtyZXR1 cm4gT09VdGlsLlJlZGlyZWN0VXJsKGMsZ19sbGNjLE9PQy5DVFQuV2ViQXR0cmli dXRpb24sZSxiLGIsYixlKX07dmFyIGs9YjthLmdldFJBcHBsaWVzVG89ZnVuY3Rp b24oKXtVTFMxeWg6O3JldHVybiBrfTt2YXIgaj1hLmZJc0NsaXBBcnQoKT9kOmZh bHNlO2EuZlJlYWR5Rm9yRG93bmxvYWQ9ZnVuY3Rpb24oKXtVTFMxeWg6O3JldHVy biBqfTt2YXIgaD1hLmZJc0NsaXBBcnQoKT9kOmZhbHNlO2EuZlJlYWR5Rm9yUmVu ZGVyaW5nPWZ1bmN0aW9uKCl7VUxTMXloOjtyZXR1cm4gaH07ZnVuY3Rpb24geChi LGcsZixhLGMsZSl7VUxTMXloOjtwPWI7dD1nO3M9ZjtuPWE7cj1jO2k9ZTtqPWR9 YS5zZXREb3dubG9hZFBhcmFtcz14O2Z1bmN0aW9uIHYoYixhKXtVTFMxeWg6O2lm KHR5cGVvZiBiIT09YyYmdHlwZW9mIGEhPT1jKXtnPWI7Zj1hfX1hLnNldENsaXBB cnRFeHRyYVBhcmFtcz12O2Z1bmN0aW9uIHUoYixhLGUpe1VMUzF5aDo7aWYodHlw ZW9mIGIhPT1jJiZ0eXBlb2YgYSE9PWMmJnR5cGVvZiBlIT09Yyl7Zz1iO2Y9YTtt PWU7aWYodGhpcy5mUmVhZHlGb3JEb3dubG9hZCgpKWg9ZH19YS5zZXRUZW1wbGF0 ZUV4dHJhUGFyYW1zPXU7ZnVuY3Rpb24gdyhlLGIsYSl7VUxTMXloOjtpZih0eXBl b2YgZSE9PWMmJnR5cGVvZiBiIT09YyYmdHlwZW9mIGEhPT1jKXtvPWU7Zz1iO2s9 YTtpZih0aGlzLmZSZWFkeUZvckRvd25sb2FkKCkpaD1kfX1hLnNldFN1cHBvcnRF eHRyYVBhcmFtcz13fWZ1bmN0aW9uIENyZWF0ZUNvbGxlY3Rpb25JdGVtKG8scCxt LGcsaixpLGYsaCxjLGwsbixkLGUsayl7VUxTMXloOjt2YXIgYj0idW5kZWZpbmVk IixhPW5ldyBDdG5JdGVtKHAsbSk7YS5zZXREaXZJbmRleChvKTtpZih0eXBlb2Yg ZyE9PWImJnR5cGVvZiBqIT09YiYmdHlwZW9mIGkhPT1iJiZ0eXBlb2YgZiE9PWIm JnR5cGVvZiBoIT09YiYmdHlwZW9mIGMhPT1iKWEuc2V0RG93bmxvYWRQYXJhbXMo ZyxqLGksZixoLGMpO2Vsc2UgdHlwZW9mIGMhPT1iJiZhLnNldFNpemUoYyk7aWYo YS5mSXNTdXBwb3J0KCkpYS5zZXRTdXBwb3J0RXh0cmFQYXJhbXMobixkLGspO2Vs c2UgaWYoYS5mSXNUZW1wbGF0ZSgpKWEuc2V0VGVtcGxhdGVFeHRyYVBhcmFtcyhk LGUsbCk7ZWxzZSBhLmZJc0NsaXBBcnQoKSYmYS5zZXRDbGlwQXJ0RXh0cmFQYXJh bXMoZCxlKTtyZXR1cm4gYX1mdW5jdGlvbiBDdG5JdGVtc0xpc3QoYil7VUxTMXlo Ojt2YXIgYT10aGlzO2lmKGI9PTApYj0xMDthLml0ZW1zPW5ldyBBcnJheShiKTth LmluY3JlbWVudD1iO2Euc2l6ZT0wO2EudGltZXN0YW1wPTA7YS5uQ2xpcEFydD0w O2EublRlbXBsYXRlcz0wO2EublN1cHBvcnQ9MDthLm5MYXN0QWRkZWQ9MDthLnN0 ckN0bkFzc2V0SWQ9MDtmdW5jdGlvbiBqKCl7VUxTMXloOjtyZXR1cm4gdGhpcy5p dGVtcy5sZW5ndGh9YS5nZXRDYXBhY2l0eT1qO2Z1bmN0aW9uIGMoKXtVTFMxeWg6 O3JldHVybiB0aGlzLnNpemV9YS5nZXRTaXplPWM7ZnVuY3Rpb24gaCgpe1VMUzF5 aDo7cmV0dXJuIHRoaXMubkxhc3RBZGRlZH1hLmdldExhc3RBZGRlZD1oO2Z1bmN0 aW9uIGYoKXtVTFMxeWg6O3RoaXMubkxhc3RBZGRlZD0wfWEuY2xlYXJMYXN0QWRk ZWQ9ZjtmdW5jdGlvbiBnKGEpe1VMUzF5aDo7c3dpdGNoKGEpe2Nhc2UgYXNzZXRf Z3JvdXAudGVtcGxhdGVzOnJldHVybiB0aGlzLm5UZW1wbGF0ZXM7Y2FzZSBhc3Nl dF9ncm91cC5jbGlwYXJ0OnJldHVybiB0aGlzLm5DbGlwQXJ0O2Nhc2UgYXNzZXRf Z3JvdXAuc3VwcG9ydDpyZXR1cm4gdGhpcy5uU3VwcG9ydH1yZXR1cm4gMH1hLmdl dEl0ZW1zQ291bnQ9ZztmdW5jdGlvbiBvKCl7VUxTMXloOjtyZXR1cm4gdGhpcy5n ZXRTaXplKCk9PTB9YS5pc0VtcHR5PW87ZnVuY3Rpb24gbChhKXtVTFMxeWg6O3Ry eXtyZXR1cm4gdGhpcy5pdGVtc1thXX1jYXRjaChiKXtyZXR1cm4gIkV4Y2VwdGlv biAiK2IrIiBvY2N1cmVkIHdoZW4gYWNjZXNzaW5nICIrYX19YS5nZXRJdGVtQXQ9 bDtmdW5jdGlvbiBlKGMpe1VMUzF5aDo7dmFyIGE9MDt3aGlsZShhPHRoaXMuc2l6 ZSl7dmFyIGI9dGhpcy5pdGVtc1thXTtpZihiLmdldEFzc2V0SWQoKT09YylyZXR1 cm4gYjthKyt9cmV0dXJuIG51bGx9YS5nZXRJdGVtRm9yQXNzZXQ9ZTtmdW5jdGlv biBrKGQsYyl7VUxTMXloOjt2YXIgYT10aGlzO2Euc2l6ZT09YS5pdGVtcy5sZW5n dGgmJmEucmVzaXplKCk7aWYoYzwwJiZjPmEuc2l6ZSlyZXR1cm47dmFyIGI9YS5z aXplKys7d2hpbGUoYj5jKXthLml0ZW1zW2JdPWEuaXRlbXNbYi0xXTtiLS19YS5p dGVtc1tiXT1kO3N3aXRjaChkLmdldEdyb3VwKCkpe2Nhc2UgYXNzZXRfZ3JvdXAu dGVtcGxhdGVzOmEublRlbXBsYXRlcysrO2JyZWFrO2Nhc2UgYXNzZXRfZ3JvdXAu Y2xpcGFydDphLm5DbGlwQXJ0Kys7YnJlYWs7Y2FzZSBhc3NldF9ncm91cC5zdXBw b3J0OmEublN1cHBvcnQrK31hLm5MYXN0QWRkZWQrK31hLmluc2VydEl0ZW09aztm dW5jdGlvbiBuKGEpe1VMUzF5aDo7dGhpcy5pbnNlcnRJdGVtKGEsdGhpcy5zaXpl KX1hLmFkZEl0ZW09bjtmdW5jdGlvbiBpKGQpe1VMUzF5aDo7dmFyIGE9dGhpczt0 cnl7dmFyIGU9YS5pdGVtc1tkXTtzd2l0Y2goZS5nZXRHcm91cCgpKXtjYXNlIGFz c2V0X2dyb3VwLnRlbXBsYXRlczphLm5UZW1wbGF0ZXMtLTticmVhaztjYXNlIGFz c2V0X2dyb3VwLmNsaXBhcnQ6YS5uQ2xpcEFydC0tO2JyZWFrO2Nhc2UgYXNzZXRf Z3JvdXAuc3VwcG9ydDphLm5TdXBwb3J0LS19Zm9yKHZhciBiPWQ7YjxhLmdldFNp emUoKS0xO2IrKylhLml0ZW1zW2JdPWEuaXRlbXNbYisxXTthLml0ZW1zW2MoKS0x XT1udWxsO2Euc2l6ZS0tfWNhdGNoKGYpe3JldHVybiAiSW52YWxpZCBpbmRleCAi K2R9fWEucmVtb3ZlSXRlbUF0PWk7ZnVuY3Rpb24gZChjKXtVTFMxeWg6O3ZhciBh PTA7d2hpbGUoYTx0aGlzLnNpemUpe3ZhciBiPXRoaXMuaXRlbXNbYV07aWYoYi5n ZXRBc3NldElkKCk9PWMpe3RoaXMucmVtb3ZlSXRlbUF0KGEpO3JldHVybn1hKyt9 fWEucmVtb3ZlSXRlbUZvckFzc2V0PWQ7ZnVuY3Rpb24gbSgpe1VMUzF5aDo7dmFy IGE9dGhpczthLnNpemU9MDthLm5UZW1wbGF0ZXM9MDthLm5DbGlwQXJ0PTA7YS5u U3VwcG9ydD0wO2Eubkxhc3RBZGRlZD0wO2Zvcih2YXIgYj0wO2I8YS5pdGVtcy5s ZW5ndGg7YisrKWEuaXRlbXNbYl09bnVsbH1hLmNsZWFyQWxsPW07ZnVuY3Rpb24g cCgpe1VMUzF5aDo7dmFyIGE9dGhpcztmb3IodmFyIGM9bmV3IEFycmF5KGEuaXRl bXMubGVuZ3RoK2EuaW5jcmVtZW50KSxiPTA7YjxhLml0ZW1zLmxlbmd0aDtiKysp Y1tiXT1hLml0ZW1zW2JdO2EuaXRlbXM9Y31hLnJlc2l6ZT1wfXZhciBnX1Vuc2F2 ZWRDdG5JdGVtcz1uZXcgQ3RuSXRlbXNMaXN0KDEwKSxnX1NoYXJlZEN0bnM9bmV3 IEFycmF5KDApO1NoYXJlZEN0bkluZm89ZnVuY3Rpb24oYyxkLGUsYil7VUxTMXlo Ojt2YXIgYT10aGlzO2EuYXNzZXRJZD1jO2EudGl0bGU9ZDthLnVybD1lO2EudHJ1 c3RMZXZlbD1ifTtTaGFyZWRDdG5JbmZvLnByb3RvdHlwZT17RG93bmxvYWRDb2xs ZWN0aW9uOmZ1bmN0aW9uKCl7VUxTMXloOjtSZXF1ZXN0Q29sbGVjdGlvbkRhdGEo dGhpcy5hc3NldElkLEZ1bmN0aW9uLmNyZWF0ZURlbGVnYXRlKHRoaXMsZnVuY3Rp b24oYSl7VUxTMXloOjtTdGFydENvbGxlY3Rpb25Eb3dubG9hZCh0aGlzLnRpdGxl LGN0bl9zdGF0ZS5zaGFyZWQsdGhpcy5hc3NldElkLGEpfSkpfX07U2hhcmVkQ3Ru SW5mby5yZWdpc3RlckNsYXNzKCJTaGFyZWRDdG5JbmZvIixudWxsLFN5cy5JRGlz cG9zYWJsZSk7ZnVuY3Rpb24gRlRPVUFjY2VwdGVkKCl7VUxTMXloOjt2YXIgYj1u dWxsLGE9InVuZGVmaW5lZCIsYz1mYWxzZSxkPWM7aWYoYXJndW1lbnRzLmxlbmd0 aD4wKWQ9YXJndW1lbnRzWzBdO2Vsc2UgaWYodHlwZW9mIGN0bl9mSXNDU0MhPWEp ZD1jdG5fZklzQ1NDO2lmKHR5cGVvZiBjdG5fZkFjY2VwdGVkVE9VPT1hKWN0bl9m QWNjZXB0ZWRUT1U9YztpZih0eXBlb2YgY3RuX2ZBY2NlcHRlZENTVFRPVT09YSlj dG5fZkFjY2VwdGVkQ1NUVE9VPWM7aWYodHlwZW9mIGN0bl9zdHJUb3VVcmw9PWEp Y3RuX3N0clRvdVVybD0iIjtpZigoZCYmIWN0bl9mQWNjZXB0ZWRDU1RUT1V8fCFk JiYhY3RuX2ZBY2NlcHRlZFRPVSkmJmN0bl9zdHJUb3VVcmwubGVuZ3RoIT0wKXtt U2V0Q29va2llKCJBV1NfQ2hlY2tpbmdFVUxBX1Nlc3MiLCIxIik7dmFyIGU9Yixm PWI7aWYodHlwZW9mIE9PQy5QYWdlVHlwZSE9PWEpZj1PT0MuUGFnZVR5cGUuVW5r bm93bjtlPXR5cGVvZiBqc29uU2VhcmNoUmVzdWx0cyE9PWEmJmpzb25TZWFyY2hS ZXN1bHRzJiZqc29uU2VhcmNoUmVzdWx0cy5wdCE9Yj9qc29uU2VhcmNoUmVzdWx0 cy5wdDpmO2lmKHR5cGVvZiBPT0MuUGFnZVR5cGUhPT1hJiYoZT09T09DLlBhZ2VU eXBlLlJlc3VsdHN8fGU9PU9PQy5QYWdlVHlwZS5TZWVTaW1pbGFyKSl7dmFyIGg9 dHlwZW9mIGpzb25TZWFyY2hSZXN1bHRzIT09YSYmanNvblNlYXJjaFJlc3VsdHMm Jmpzb25TZWFyY2hSZXN1bHRzLmNpIT1iP2pzb25TZWFyY2hSZXN1bHRzLmNpOiIi LGc9dHlwZW9mIGpzb25TZWFyY2hSZXN1bHRzIT1hJiZ0eXBlb2YganNvblNlYXJj aFJlc3VsdHMubGkhPWEmJmpzb25TZWFyY2hSZXN1bHRzLmxpIT1iP2pzb25TZWFy Y2hSZXN1bHRzLmxpLm46Z19sbGNjO0NsaXBBamF4U3ZjLkdldENvbGxlY3Rpb25E b3dubG9hZFRvdVVybCh3aW5kb3cubG9jYXRpb24uc2VhcmNoLHdpbmRvdy5sb2Nh dGlvbi5oYXNoLGgsZyxlLGZ1bmN0aW9uKGEpe1VMUzF5aDo7aWYoYSl3aW5kb3cu bG9jYXRpb24uaHJlZj1hfSl9ZWxzZSB3aW5kb3cubG9jYXRpb24uaHJlZj1jdG5f c3RyVG91VXJsO3JldHVybiBjfXJldHVybiB0cnVlfWZ1bmN0aW9uIERvd25sb2Fk Q29udHJvbCh2LHIsdyx4KXtVTFMxeWg6O3ZhciBiPW51bGwsZT1mYWxzZSxqPXRo aXMseT1yIT1jdG5fc3RhdGUudW5zYXZlZD93Ok9PVUkuQ1ROX1VOU0FWRURfVklS VFVBTF9JRCxxPXVuZXNjYXBlKHYpLHA9cixsPXgsYz1uZXcgQ3RuSXRlbXNMaXN0 KDEwKSxuPWUsaT0wLGQ9MCxhPWIsZz1uZXcgQ3RuSXRlbXNMaXN0KDEwKSxrPWI7 ZnVuY3Rpb24gdCgpe1VMUzF5aDo7bj10cnVlfWZ1bmN0aW9uIGgoKXtVTFMxeWg6 O3ZhciBhPWQqMTAwL2wuZ2V0U2l6ZSgpO2R2UHJvZ3Jlc3NCYXIucHJvZ3Jlc3Ni YXIoInZhbHVlIixhKX1qLlNob3dQcm9ncmVzcz1oO2Z1bmN0aW9uIHUoKXtVTFMx eWg6O3ZhciBoPSJ1bmRlZmluZWQiO2MuY2xlYXJBbGwoKTtpPTA7ZD0wO249ZTtn LmNsZWFyQWxsKCk7az1iO2lmKHR5cGVvZiBEQ1RSTD09PWh8fHR5cGVvZiBEQ1RS TC5DdG5Eb3dubG9hZFN0YXJ0PT09aClyZXR1cm4gZTt2YXIgaj1xLnJlcGxhY2Uo L1wiL2csIiciKS5yZXBsYWNlKC9bXFwvOlwqXD88Plx8XS9nLCJfIiksbT1EQ1RS TC5DdG5Eb3dubG9hZFN0YXJ0KE9PVUkuTF9DdG5Eb3dubG9hZEZvbGRlck5hbWUs aiwiIik7aWYobSE9MCl7YT1PT1V0aWwuVGltZXIoUmVkaXJlY3RUb0RpcmVjdERv d25sb2FkLDEwMCxsKTtyZXR1cm4gZX1DdG5BY3Rpb25EbGdDb250cm9sLlJlbmRl clByb2dyZXNzQmFyRGlhbG9nKGIsU3RyaW5nLmZvcm1hdChPT1VJLkxfQ3RuRG93 bmxvYWRpbmcscSksdCk7YT1PT1V0aWwuVGltZXIoZiwxMCk7cmV0dXJuIHRydWV9 ai5Eb3dubG9hZFN0YXJ0PXU7ZnVuY3Rpb24gbygpe1VMUzF5aDo7dmFyIGM9IiI7 c3dpdGNoKHApe2Nhc2UgY3RuX3N0YXRlLnVuc2F2ZWQ6Yz1PT0MuQ1RULlVuc2F2 ZWRDb2xsZWN0aW9uRG93bmxvYWQ7YnJlYWs7Y2FzZSBjdG5fc3RhdGUucHJpdjpj PU9PQy5DVFQuU2F2ZWRDb2xsZWN0aW9uRG93bmxvYWQ7YnJlYWs7Y2FzZSBjdG5f c3RhdGUuc2hhcmVkOmM9T09DLkNUVC5TaGFyZWRDb2xsZWN0aW9uRG93bmxvYWR9 RENUUkwuQ3RuRG93bmxvYWRGaW5pc2goIkNUVD0iK2MpO0N0bkFjdGlvbkRsZ0Nv bnRyb2wuQ2xvc2VEaWFsb2coKTtpZighZy5pc0VtcHR5KCl8fGshPWIpe2E9T09V dGlsLlRpbWVyKFJlZGlyZWN0VG9EaXJlY3REb3dubG9hZCwxMDAsZyxrKTtyZXR1 cm59YSYmY2xlYXJUaW1lb3V0KGEpO2lmKHAhPWN0bl9zdGF0ZS5zaGFyZWQpZ19D U0NvbGxlY3Rpb25FbmFibGVkJiZzKCl9ai5Eb3dubG9hZEZpbmlzaD1vO2Z1bmN0 aW9uIG0oKXtVTFMxeWg6O2lmKGQ+MCl7ZC0tO2goKTthPU9PVXRpbC5UaW1lciht LDEwMCl9ZWxzZXtDdG5BY3Rpb25EbGdDb250cm9sLkNsb3NlRGlhbG9nKCk7YSYm Y2xlYXJUaW1lb3V0KGEpO3JldHVybn19ai5Qcm9ncmVzc0JhclJvbGxiYWNrPW07 ZnVuY3Rpb24gZigpe1VMUzF5aDo7dmFyIHE7aWYobil7RENUUkwuQ3RuRG93bmxv YWRDYW5jZWwoIiIpO2E9T09VdGlsLlRpbWVyKG0sMTApO3JldHVybn1lbHNlIGlm KGk8bC5nZXRTaXplKCkpe3ZhciBiPWwuZ2V0SXRlbUF0KGkpO2lmKCFiLmZSZWFk eUZvckRvd25sb2FkKCkpe1JlcXVlc3RJdGVtRGF0YShiLGZ1bmN0aW9uKCl7VUxT MXloOjt0eXBlb2YgVXBkYXRlQXNzZXRSZW5kZXJpbmc9PT0iZnVuY3Rpb24iJiZV cGRhdGVBc3NldFJlbmRlcmluZyhiKTthPU9PVXRpbC5UaW1lcihmLDEwKX0sZnVu Y3Rpb24oKXtVTFMxeWg6O2IuZklzVGVtcGxhdGUoKSYmZy5hZGRJdGVtKGIpO2kr KztkKys7aCgpO2E9T09VdGlsLlRpbWVyKGYsMTApfSk7cmV0dXJufWkrKztpZihi LmZJc0NsaXBBcnQoKSljLmFkZEl0ZW0oYik7ZWxzZXtxPURDVFJMLkN0bkl0ZW1E b3dubG9hZChiLmdldEFzc2V0SWQoKSxiLmdldE1hcmtldCgpLHVuZXNjYXBlKGIu Z2V0VGl0bGUoKSksYi5nZXRVUkwoKSxiLmdldEFwcCgpLGIuZ2V0QXBwVmVyKCks Yi5mSXNDU0MoKSxiLmdldENUVCgpKTtiLmZJc1RlbXBsYXRlKCkmJmcuYWRkSXRl bShiKTtkKys7aCgpfWE9T09VdGlsLlRpbWVyKGYsMTApO3JldHVybn1lbHNlIGlm KGMuZ2V0U2l6ZSgpPjApe3ZhciBlPWMuZ2V0SXRlbUF0KDApLHA9ZS5nZXRBc3Nl dElkKCksaj0xO2QrKzt3aGlsZShqPGMuZ2V0U2l6ZSgpKXtlPWMuZ2V0SXRlbUF0 KGopO3ArPSIsIitlLmdldEFzc2V0SWQoKTtqKys7ZCsrfW1TZXRDb29raWUoZ19j dG5fY2xpcGFydF9hc3NldHMscCk7cT1EQ1RSTC5DdG5JdGVtRG93bmxvYWQoZS5n ZXRBc3NldElkKCksZS5nZXRNYXJrZXQoKSwiIixlLmdldFVSTCgpLCIiLDAsZS5m SXNDU0MoKSxlLmdldENUVCgpKTttU2V0Q29va2llKGdfY3RuX2NsaXBhcnRfYXNz ZXRzLCIiKTtjLmNsZWFyQWxsKCk7aWYocSE9MClrPXA7ZWxzZXtqPTA7d2hpbGUo ajxjLmdldFNpemUoKSl7ZT1jLmdldEl0ZW1BdChqKTtqKyt9fWgoKX1hPU9PVXRp bC5UaW1lcihvLDEwKX1qLkRvd25sb2FkSW5Qcm9ncmVzcz1mO2Z1bmN0aW9uIHMo KXtVTFMxeWg6O0N0bkFjdGlvbkRsZ0NvbnRyb2wuUmVuZGVyQ29uZmlybURpYWxv ZyhiLCI8cD4iK0NUTlBpY2tTdHJpbmcoT09VSS5MX0N0bkRvd25sb2FkU3VjY2Vz cyxPT1VJLkxfQ3RuRG93bmxvYWRTdWNjZXNzRXgpKyI8L3A+PHA+IitPT1VJLkxf Q3RuU2hhcmVQcm9tcHQrIjwvcD4iLE9PVUkuTF9DdG5TaGFyZUxpbmssT09VSS5M X0N0bkRvTm90U2hhcmVMaW5rLEN0bkFjdGlvblN1Ym1pdCl9fWZ1bmN0aW9uIFJl ZGlyZWN0VG9EaXJlY3REb3dubG9hZChnLGgpe1VMUzF5aDo7dmFyIGI9bnVsbCxj PSJ1bmRlZmluZWQiIT10eXBlb2YgaD9oOmI7aWYoZy5pc0VtcHR5KCkmJmM9PWIp cmV0dXJuO2Zvcih2YXIgZD1uZXcgRm9ybVN1Ym1pdCgiUE9TVCIsImN0bmRpcmVj dGRvd25sb2FkLmFzcHgiKSxlPTAsZj0wO2Y8Zy5nZXRTaXplKCk7ZisrKXt2YXIg YT1nLmdldEl0ZW1BdChmKTtpZihhLmZJc0NsaXBBcnQoKSlpZihjPT1iKWM9YS5n ZXRBc3NldElkKCk7ZWxzZSBjKz0iLCIrYS5nZXRBc3NldElkKCk7ZWxzZSBpZihh LmZJc1RlbXBsYXRlKCkpe2QuQWRkUGFyYW0oImFpIitlLGEuZ2V0QXNzZXRJZCgp KTthLmdldFRpdGxlKCkhPWImJmQuQWRkUGFyYW0oInQiK2UsYS5nZXRUaXRsZSgp KTthLmdldEFwcCgpIT1iJiZkLkFkZFBhcmFtKCJhcHAiK2UsYS5nZXRBcHAoKSk7 YS5nZXRBcHBWZXIoKSE9YiYmZC5BZGRQYXJhbSgidmVyIitlLGEuZ2V0QXBwVmVy KCkpO2UrK319YyE9YiYmZC5BZGRQYXJhbSgiY2wiLGMpO2QuU3VibWl0KCl9ZnVu Y3Rpb24gUmVkaXJlY3RUb1RlbXBsYXRlRG93bmxvYWQoYSl7VUxTMXloOjtpZihh PT1udWxsKXJldHVybjthPSJUUyIrYS5zdWJzdHJpbmcoMik7dmFyIGI9T09VSS5U RU1QTEFURV9ET1dOTE9BRF9VUkwucmVwbGFjZSgie0Fzc2V0SWR9IixhKTtiKz0i JkNUVD0iK09PQy5DVFQuRGlyZWN0RG93bmxvYWQ7d2luZG93Lm9wZW4oYiwiIiwi d2lkdGg9MzUwLGhlaWdodD0yNTAiKTtyZXR1cm4gZmFsc2V9ZnVuY3Rpb24gUmVk aXJlY3RUb0NsaXBBcnREb3dubG9hZChiKXtVTFMxeWg6O2lmKGI9PW51bGwpcmV0 dXJuO3ZhciBjPU9PVUkuQ0xJUEFSVF9ET1dOTE9BRF9VUkwsYT1uZXcgRm9ybVN1 Ym1pdCgiUE9TVCIsYyk7YS5BZGRQYXJhbShnX2N0bl9jbGlwYXJ0X2Fzc2V0cyxi KTthLkFkZFBhcmFtKCJDVFQiLE9PQy5DVFQuQ29sbGVjdGlvbkNsaXBhcnREb3du bG9hZCk7YS5TdWJtaXQoKX12YXIgZ19Jc0Zyb21BeEluc3RhbGwsZ19Jc0F4TG9h ZGVkPWZhbHNlO2Z1bmN0aW9uIFN0YXJ0Q29sbGVjdGlvbkRvd25sb2FkKGYsZyxk LGIpe1VMUzF5aDo7dmFyIGE9InVuZGVmaW5lZCI7ZnVuY3Rpb24gZSgpe1VMUzF5 aDo7aWYoJC5icm93c2VyLm1zaWUmJnR5cGVvZiBGSXNDb3JyZWN0VmVyc2lvbiE9 PWEmJiFGSXNDb3JyZWN0VmVyc2lvbigpKWlmKGdfSXNGcm9tQXhJbnN0YWxsKVJl ZGlyZWN0VG9EaXJlY3REb3dubG9hZChiKTtlbHNlIGlmKHR5cGVvZiBmSXNBY3Rp dmVYSW5zdGFsbGVkIT09YSYmdHlwZW9mIEZJbnN0YWxsQWN0aXZlWCE9PWEpe2ZJ c0FjdGl2ZVhJbnN0YWxsZWQ9ZmFsc2U7Rkluc3RhbGxBY3RpdmVYKCl9Z19Jc0F4 TG9hZGVkPXRydWU7YygpfWZ1bmN0aW9uIGMoKXtVTFMxeWg6O3ZhciBoPSJQZW5k aW5nQ3RuRG93bmxvYWQiO2lmKHR5cGVvZiBmSW5zdGFsbGluZ0FjdGl2ZVg9PT0i Ym9vbGVhbiImJmZJbnN0YWxsaW5nQWN0aXZlWClyZXR1cm47bVNldENvb2tpZSho LGQpO2lmKCFGVE9VQWNjZXB0ZWQoKSlyZXR1cm47aWYoIWdfSXNBeExvYWRlZClM b2FkQWN0aXZlWChGdW5jdGlvbi5jcmVhdGVEZWxlZ2F0ZSh0aGlzLGZ1bmN0aW9u KCl7VUxTMXloOjtnX0lzQXhMb2FkZWQ9dHJ1ZTtjKCl9KSxGdW5jdGlvbi5jcmVh dGVEZWxlZ2F0ZSh0aGlzLGZ1bmN0aW9uKCl7VUxTMXloOjtlKCl9KSk7ZWxzZXtt RGVsZXRlQ29va2llKGgpO2lmKCFGSW5zdGFsbEFjdGl2ZVgoKSl7UmVkaXJlY3RU b0RpcmVjdERvd25sb2FkKGIpO3JldHVybn1pZih0eXBlb2YgRENUUkw9PT1hfHx0 eXBlb2YgRENUUkwuR2V0SW5zdGFsbGVkVmVyc2lvbj09PWEpe1JlZGlyZWN0VG9E aXJlY3REb3dubG9hZChiKTtyZXR1cm59dmFyIGk9bmV3IERvd25sb2FkQ29udHJv bChmLGcsZCxiKTtpLkRvd25sb2FkU3RhcnQoKX19YygpfWZ1bmN0aW9uIFVuc2F2 ZWRDb2xsZWN0aW9uRG93bmxvYWQoKXtVTFMxeWg6O0NUTlN5bmNVbnNhdmVkQ3Ru SXRlbXMoKTtTdGFydENvbGxlY3Rpb25Eb3dubG9hZChDVE5QaWNrU3RyaW5nKE9P VUkuTF9DdG5VbnNhdmVkVGl0bGUsT09VSS5MX0N0blVuc2F2ZWRUaXRsZUV4KSxj dG5fc3RhdGUudW5zYXZlZCwiMCIsZ19VbnNhdmVkQ3RuSXRlbXMpfWZ1bmN0aW9u IFJlcXVlc3RJdGVtRGF0YShhLGMsZCl7VUxTMXloOjt2YXIgYj0iZnVuY3Rpb24i O2Z1bmN0aW9uIGYoaCl7VUxTMXloOjt2YXIgZz0icHJvdmFzc2V0cyIsZj0icHJv dm5hbWVzIjtpZihoIT1udWxsJiZoLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpdGVt IikubGVuZ3RoPjApe3ZhciBkPWguZ2V0RWxlbWVudHNCeVRhZ05hbWUoIml0ZW0i KTthLnNldERvd25sb2FkUGFyYW1zKGRbMF0uZ2V0QXR0cmlidXRlKCJ0aXRsZSIp LGRbMF0uZ2V0QXR0cmlidXRlKCJ1cmwiKSxkWzBdLmdldEF0dHJpYnV0ZSgiYXBw IikscGFyc2VJbnQoZFswXS5nZXRBdHRyaWJ1dGUoInZlcnNpb24iKSksQm9vbGVh bi5wYXJzZShkWzBdLmdldEF0dHJpYnV0ZSgiZmNzYyIpKSxwYXJzZUludChkWzBd LmdldEF0dHJpYnV0ZSgic2l6ZSIpKSk7aWYoYS5mSXNDbGlwQXJ0KCkpYS5zZXRD bGlwQXJ0RXh0cmFQYXJhbXMoZFswXS5nZXRBdHRyaWJ1dGUoZiksZFswXS5nZXRB dHRyaWJ1dGUoZykpO2Vsc2UgaWYoYS5mSXNUZW1wbGF0ZSgpKWEuc2V0VGVtcGxh dGVFeHRyYVBhcmFtcyhkWzBdLmdldEF0dHJpYnV0ZShmKSxkWzBdLmdldEF0dHJp YnV0ZShnKSxkWzBdLmdldEF0dHJpYnV0ZSgiYXBwdmVyIikpO2Vsc2UgYS5mSXNT dXBwb3J0KCkmJmEuc2V0U3VwcG9ydEV4dHJhUGFyYW1zKGRbMF0uZ2V0QXR0cmli dXRlKCJkZXNjciIpLGRbMF0uZ2V0QXR0cmlidXRlKGYpLGRbMF0uZ2V0QXR0cmli dXRlKCJhcHB2ZXIiKSk7dHlwZW9mIGM9PWImJmMoYSl9ZWxzZSBlKCl9ZnVuY3Rp b24gZSgpe1VMUzF5aDo7dHlwZW9mIGQ9PWImJmQoYSl9dmFyIGc9T09VSS5xcEFz c2V0SWQrIj0iK2EuZ2V0QXNzZXRJZCgpO0N0blNlcnZpY2VBY3Rpb24oT09VSS5D VE5fQUNUSU9OX0dFVElURU1EQVRBLGcsZixlKX1mdW5jdGlvbiBSZXF1ZXN0SXRl bVNpemUoYyxkLGIpe1VMUzF5aDo7dmFyIGE9ImZ1bmN0aW9uIjtmdW5jdGlvbiBl KGUpe1VMUzF5aDo7aWYoZSE9bnVsbCYmZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgi aXRlbSIpLmxlbmd0aD4wKXt2YXIgZj1lLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJp dGVtIiksZz1wYXJzZUludChmWzBdLmdldEF0dHJpYnV0ZSgic2l6ZSIpKTt0eXBl b2YgZD09YSYmZChjLGcpfWVsc2UgdHlwZW9mIGI9PWEmJmIoYyl9ZnVuY3Rpb24g Zigpe1VMUzF5aDo7dHlwZW9mIGI9PWEmJmIoYyl9dmFyIGc9T09VSS5xcEFzc2V0 SWQrIj0iK2M7Q3RuU2VydmljZUFjdGlvbihPT1VJLkNUTl9BQ1RJT05fR0VUSVRF TVNJWkUsZyxlLGYpfWZ1bmN0aW9uIEN0bkFjdGlvbkRvd25sb2FkKGEsYil7VUxT MXloOjtTdGFydENvbGxlY3Rpb25Eb3dubG9hZChnX0N0bk5hbWUsYixhLGdfQ3Ru SXRlbXMpfWZ1bmN0aW9uIEN0bkFjdGlvblN1Ym1pdChhKXtVTFMxeWg6O3ZhciBi PU9PVUkuQ1ROX1NVQk1JVF9VUkw7aWYodHlwZW9mIGEhPSJ1bmRlZmluZWQiKWIr PSI/QXNzZXRJZD0iK2E7UmVsb2FkUGFnZShiKX1PT0MuU2VhcmNoRmlsdGVycz1m dW5jdGlvbihiKXtVTFMxeWg6O3ZhciBhPXRoaXM7T09DLlNlYXJjaEZpbHRlcnMu aW5pdGlhbGl6ZUJhc2UoYSk7YS5fcXVlcnlQYXJhbUFwcFZlcj0iYXYiO2EuX3F1 ZXJ5UGFyYW1WYWx1ZU15QXBwVmVyPSJteSI7YS5fYWRNeVByb2dyYW1zPW51bGw7 YS5fbG9nZ2luZ0VuYWJsZWQ9Yj90cnVlOmZhbHNlO2EuSW5pdGlhbGl6ZUZpbHRl cnMoKX07T09DLlNlYXJjaEZpbHRlcnMucHJvdG90eXBlPXtJbml0aWFsaXplRmls dGVyczpmdW5jdGlvbigpe1VMUzF5aDo7dmFyIGI9ImEuY2RTZWFyY2hGaWx0ZXJJ dGVtTm9MaW5rIixhPSJnZW5lcmFsIixlPSIuY2RTZWFyY2hGaWx0ZXJFeHBhbmRl ZCIsZD10aGlzLGc9ZC5fbG9nZ2luZ0VuYWJsZWQsZj1mdW5jdGlvbigpe1VMUzF5 aDo7dmFyIGI9JCh0aGlzKS5jbG9zZXN0KCIuY2RTZWFyY2hGaWx0ZXJJdGVtIiks ZD1iLmNoaWxkcmVuKCIuY2RTZWFyY2hGaWx0ZXJzIiksYz1iLmNoaWxkcmVuKCJp bWciKTtkLm9vU2xpZGVUb2dnbGUoImZhc3QiKTtpZihiLmlzKGUpKWMuYXR0cigi c3JjIixPT1V0aWwuR2V0Q29kZUltYWdlKGEsInBsdXMtZS5wbmciKSk7ZWxzZSBj LmF0dHIoInNyYyIsT09VdGlsLkdldENvZGVJbWFnZShhLCJtaW51cy1lLnBuZyIp KTtiLnRvZ2dsZUNsYXNzKCJjZFNlYXJjaEZpbHRlckV4cGFuZGVkIikudG9nZ2xl Q2xhc3MoImNkU2VhcmNoRmlsdGVyQ29sbGFwc2VkIil9OyQoIi5jZFNlYXJjaEZp bHRlckNvbGxhcHNlZCA+IGltZywgLmNkU2VhcmNoRmlsdGVyRXhwYW5kZWQgPiBp bWciKS5jbGljayhmKTskKGIpLmNzcyh7Y3Vyc29yOiJwb2ludGVyIn0pLmNsaWNr KGYpO3ZhciBjPSQoIi5jZFNlYXJjaEZpbHRlckV4cGFuZGVkIC5jZFNlYXJjaEZp bHRlclNlbGVjdGVkIikuY2xvc2VzdChlKTtjLmNoaWxkcmVuKGIpLnVuYmluZCgi Y2xpY2siKS5jc3Moe2N1cnNvcjoiZGVmYXVsdCIsY29sb3I6Yy5jaGlsZHJlbihi KS5jc3MoImNvbG9yIiksdGV4dERlY29yYXRpb246Yy5jaGlsZHJlbihiKS5jc3Mo InRleHREZWNvcmF0aW9uIil9KTtjLmNoaWxkcmVuKCJpbWciKS51bmJpbmQoImNs aWNrIikuYXR0cigic3JjIixPT1V0aWwuR2V0Q29kZUltYWdlKGEsIm1pbnVzLWUt ZC5wbmciKSkuY3NzKHtjdXJzb3I6ImRlZmF1bHQifSk7ZC5fYWRNeVByb2dyYW1z PW5ldyBPT0MuQURNb2RhbChGdW5jdGlvbi5jcmVhdGVEZWxlZ2F0ZShkLGQuRmls dGVyVG9NeVByb2dyYW1zKSl9LEFwcERldGVjdDpmdW5jdGlvbigpe1VMUzF5aDo7 dGhpcy5fYWRNeVByb2dyYW1zLk9wZW4oKX0sRmlsdGVyVG9NeVByb2dyYW1zOmZ1 bmN0aW9uKCl7VUxTMXloOjt2YXIgYj0kKCIjZnJtU2VhcmNoIiksYT0kKCIjcXUi KVswXSxjPSQoIjxpbnB1dCAvPiIpLmF0dHIoe3R5cGU6ImhpZGRlbiIsbmFtZTp0 aGlzLl9xdWVyeVBhcmFtQXBwVmVyLHZhbHVlOnRoaXMuX3F1ZXJ5UGFyYW1WYWx1 ZU15QXBwVmVyfSk7aWYoYS5kZWZhdWx0VmFsdWUhPW51bGwmJmEuZGVmYXVsdFZh bHVlLmxlbmd0aD4wKXtiLmZpbmQoImlucHV0W25hbWU9Iit0aGlzLl9xdWVyeVBh cmFtQXBwVmVyKyJdIikucmVtb3ZlKCk7Yi5hcHBlbmQoYyk7YS52YWx1ZT1hLmRl ZmF1bHRWYWx1ZTtiLnN1Ym1pdCgpfWVsc2V7dmFyIGQ9JCgiPGZvcm0gLz4iKS5h dHRyKHthY3Rpb246ZG9jdW1lbnQubG9jYXRpb24uaHJlZixtZXRob2Q6ImdldCJ9 KS5hcHBlbmQoYyk7ZC5hcHBlbmRUbygkKCJib2R5IikpO2Quc3VibWl0KCl9fX07 T09DLlNlYXJjaEZpbHRlcnMucmVnaXN0ZXJDbGFzcygiT09DLlNlYXJjaEZpbHRl cnMiLFN5cy5Db21wb25lbnQpO3ZhciBTZWFyY2hGaWx0ZXJzPXVuZGVmaW5lZDtm dW5jdGlvbiBTY3JvbGxUb09iamVjdChlKXtVTFMxeWg6O3ZhciBkPWRvY3VtZW50 LmdldEVsZW1lbnRCeUlkKGUpLGI9MCxhPWQ7d2hpbGUoYSl7Yj1iK2Eub2Zmc2V0 VG9wO2E9YS5vZmZzZXRQYXJlbnR9dHJ5e3dpbmRvdy5zY3JvbGxCeSgwLGIpfWNh dGNoKGMpe3RyeXtzY3JvbGwoMCxiKX1jYXRjaChjKXt9fX1mdW5jdGlvbiBIb29r VXBFeHBMb2dnaW5nKCl7VUxTMXloOjtpZih0eXBlb2YgZ19leHBJZD09InVuZGVm aW5lZCIpcmV0dXJuOyQoImEiKS5tb3VzZXVwKGZ1bmN0aW9uKGEpe1VMUzF5aDo7 TG9nVG9FeHBPbk1vdXNlVXAoYSl9KX1mdW5jdGlvbiBMb2dUb0V4cE9uTW91c2VV cChiKXtVTFMxeWg6O3ZhciBjO2lmKCFiKWI9d2luZG93LmV2ZW50O2lmKGIud2hp Y2gpYz1iLndoaWNoPT0zO2Vsc2UgaWYoYi5idXR0b24pYz1iLmJ1dHRvbj09Mjtp ZihjKXJldHVybjt2YXIgYTtpZihiLnRhcmdldClhPWIudGFyZ2V0O2Vsc2UgaWYo Yi5zcmNFbGVtZW50KWE9Yi5zcmNFbGVtZW50O2lmKGEubm9kZVR5cGU9PTMpYT1h LnBhcmVudE5vZGU7aWYoYS5wYXJlbnROb2RlJiZhLnRhZ05hbWUmJmEudGFnTmFt ZS50b0xvd2VyQ2FzZSgpPT0iaW1nIilSZWNvcmRDbGlja09ic2VydmF0aW9uVG9F eFAoYS5wYXJlbnROb2RlLGEuYWx0LGEuaWQpO2Vsc2UgUmVjb3JkQ2xpY2tPYnNl cnZhdGlvblRvRXhQKGEsYS5pbm5lclRleHQsYS5pZCl9ZnVuY3Rpb24gUmVjb3Jk Q2xpY2tPYnNlcnZhdGlvblRvRXhQKGIsYSxjKXtVTFMxeWg6O2lmKGRvY3VtZW50 LmltYWdlcyYmdHlwZW9mIGdfZXhwSWQhPT0idW5kZWZpbmVkIikobmV3IEltYWdl KS5zcmM9Z19leHBSTysiP2V1aWQ9IitnX2V4cEV1aWQrIiZQcm9wZXJ0eT0iK2df ZXhwSWQrIiZQYWdlQ2F0ZWdvcnk9IitnX2V4cE1hcmtldCsiJlBhZ2VJZD0iK2df ZXhwQXNzZXRJZCsiJlJlcXVlc3RJZD0iK2dfZXhwUmVxdWVzdElkKyImU2lnbmVk SW49IitnX2V4cElzQXV0aGVudGljYXRlZCsiJlBhZ2VVcmw9IitTdHJFbmNvZGVV cmxDb21wb25lbnQobG9jYXRpb24uaHJlZikrIiZSZWZlcnJlclVybD0iK1N0ckVu Y29kZVVybENvbXBvbmVudChkb2N1bWVudC5yZWZlcnJlcikrIiZMaW5rVXJsPSIr U3RyRW5jb2RlVXJsQ29tcG9uZW50KGIpKyImTGlua1RleHQ9IithKyImTGlua0lk PSIrYysiJkxpbmtMb2NhdGlvbj1wYWdlJkxpbmtXZWlnaHQ9MSJ9T09DLkhvdmVy QmFzZT1mdW5jdGlvbihoLGcsZixlLGMpe1VMUzF5aDo7dmFyIGQ9ImZ1bmN0aW9u IixiPW51bGwsYT10aGlzO2EuX2lkUHJlZml4PU1hdGgucm91bmQoKG5ldyBEYXRl KS5nZXRUaW1lKCkvMWUzKTtPT0MuSG92ZXJCYXNlLmluaXRpYWxpemVCYXNlKGEp O2EuZHZIb3Zlcj1iO2EuZHZIb3ZlckNvbnRlbnQ9YjthLnRvcD1iO2EubGVmdD1i O2EuYWxsb3dNb3VzZU91dFRvQ2xvc2U9dHJ1ZTthLl93aWR0aD1nO2EuX2hlaWdo dD1mO2EuX0RvbVJlZmVyZW5jZT1iO2EuX1Bvc2l0aW9uPWI7YS5fVmVyaWZ5UG9z PWI7YS5fRG9tUmVzdHJpY3RSZWY9YjthLl9Eb21QYXJlbnRSZWY9YjthLl9mbkNh bGxiYWNrPXR5cGVvZiBlPT09ZD9lOmI7YS5fZm5Nb3VzZUxlYXZlQ2FsbGJhY2s9 dHlwZW9mIGM9PT1kP2M6Yn07T09DLkhvdmVyQmFzZS5wcm90b3R5cGU9e2luaXRp YWxpemU6ZnVuY3Rpb24oYSl7VUxTMXloOjt2YXIgYz1udWxsLGI9dGhpcztiLmR2 SG92ZXI9JCgiPGRpdi8+IikuYXR0cigiaWQiLCJkdkhvdmVyIitiLl9pZFByZWZp eCkuYWRkQ2xhc3MoImR2SG92ZXIiKTtiLl9Eb21SZWZlcmVuY2U9YS5yZWY/JChh LnJlZik6YztiLl9Qb3NpdGlvbj1hLnBvcz9hLnBvczpjO2IuX1ZlcmlmeVBvcz1h LnZlcmlmeVBvcz9hLnZlcmlmeVBvczpjO2IuX0RvbVJlc3RyaWN0UmVmPWEucmVz dHJpY3Q/JChhLnJlc3RyaWN0KTpjO2IuX0RvbVBhcmVudFJlZj1hLnBhcmVudE92 ZXJyaWRlPyQoYS5wYXJlbnRPdmVycmlkZSk6Yi5fRG9tUmVmZXJlbmNlLnBhcmVu dCgpfSxkaXNwbGF5OmZ1bmN0aW9uKCl7VUxTMXloOjt2YXIgYT10aGlzO2lmKGEu ZHZIb3Zlcj09bnVsbClyZXR1cm47YS5fRG9tUmVzdHJpY3RSZWYmJiFPT1V0aWwu RklzQnJvd3NlcklFUXVpcmtzKCkmJmEuVmVyaWZ5UG9zKCk7YS5kdkhvdmVyLmZh ZGVJbigyNTApO2EuZHZIb3Zlci5zZXRTY2FsYWJsZUZvbnRTaXplKDEpO3R5cGVv ZiBhLl9WZXJpZnlQb3M9PT0iZnVuY3Rpb24iJiZhLl9WZXJpZnlQb3MoYS5kdkhv dmVyLGEuX0RvbVJlZmVyZW5jZSl9LGNyZWF0ZWNvbnRhaW5lcjpmdW5jdGlvbigp e1VMUzF5aDo7dmFyIGI9ImR2SG92ZXJDb250ZW50IixhPXRoaXM7aWYoYS5fRG9t UGFyZW50UmVmKXthLmR2SG92ZXJDb250ZW50PSQoIjxkaXYvPiIpLmF0dHIoImlk IixiK2EuX2lkUHJlZml4KS5hZGRDbGFzcyhiKS5hcHBlbmRUbyhhLmR2SG92ZXIp O2EuZHZIb3Zlci5pbnNlcnRBZnRlcihhLl9Eb21SZWZlcmVuY2UpO3ZhciBjPUZ1 bmN0aW9uLmNyZWF0ZURlbGVnYXRlKGEsYS5Nb3VzZUxlYXZlKSxkPUZ1bmN0aW9u LmNyZWF0ZURlbGVnYXRlKGEsYS5LZXlEb3duKTthLmR2SG92ZXIuYmluZCgibW91 c2VsZWF2ZSIsZnVuY3Rpb24oKXtVTFMxeWg6O2MuY2FsbCgpfSk7JChkb2N1bWVu dCkuYmluZCgia2V5ZG93biIsZnVuY3Rpb24oKXtVTFMxeWg6O2QuYXBwbHkobnVs bCxhcmd1bWVudHMpfSk7YS5DYWxjdWxhdGVQb3MoKTskKHdpbmRvdykucmVzaXpl KEZ1bmN0aW9uLmNyZWF0ZURlbGVnYXRlKGEsZnVuY3Rpb24oKXtVTFMxeWg6O3Zh ciBhPXRoaXM7YS5DYWxjdWxhdGVQb3MoKTthLl9Eb21SZXN0cmljdFJlZiYmIU9P VXRpbC5GSXNCcm93c2VySUVRdWlya3MoKSYmYS5WZXJpZnlQb3MoKTt0eXBlb2Yg YS5fVmVyaWZ5UG9zPT09ImZ1bmN0aW9uIiYmYS5fVmVyaWZ5UG9zKGEuZHZIb3Zl cixhLl9Eb21SZWZlcmVuY2UpfSkpfX0sQ2FsY3VsYXRlUG9zOmZ1bmN0aW9uKCl7 VUxTMXloOjt2YXIgZD0ibGVmdCIsYz0idG9wIixhPXRoaXMsYj1hLl9Eb21SZWZl cmVuY2Uub2Zmc2V0KCksZT0xMyxmPTE0O2lmKHR5cGVvZiBhLl9Qb3NpdGlvbj09 PSJmdW5jdGlvbiIpe2EuX1Bvc2l0aW9uKGEuZHZIb3ZlcixhLl9Eb21SZWZlcmVu Y2UpO2EudG9wPXBhcnNlSW50KGEuZHZIb3Zlci5jc3MoYykpO2EubGVmdD1wYXJz ZUludChhLmR2SG92ZXIuY3NzKGQpKTthLnRvcC09ZS8yO2EubGVmdC09Zi8yO2Eu ZHZIb3Zlci5jc3MoYyxhLnRvcCk7YS5kdkhvdmVyLmNzcyhkLGEubGVmdCl9aWYo dHlwZW9mIGEuX1Bvc2l0aW9uPT09Im9iamVjdCIpe2EudG9wPWEuX1Bvc2l0aW9u LnRvcD9hLl9Qb3NpdGlvbi50b3A6MDthLmxlZnQ9YS5fUG9zaXRpb24ubGVmdD9h Ll9Qb3NpdGlvbi5sZWZ0OjB9ZWxzZSBpZih0eXBlb2YgYS5fUG9zaXRpb249PT0i c3RyaW5nIilzd2l0Y2goYS5fUG9zaXRpb24pe2Nhc2UgImNlbnRlcmVkIjphLnRv cD1iLnRvcC04NDthLmxlZnQ9Yi5sZWZ0LTU5O2JyZWFrO2Nhc2UgImlubGluZSI6 YS50b3A9Yi50b3AtNjthLmxlZnQ9Yi5sZWZ0LShPT1V0aWwuRklzUnRsKCk/YS5f d2lkdGgtYS5fRG9tUGFyZW50UmVmLndpZHRoKCkrNTo3KTticmVhaztjYXNlIGM6 YS50b3A9Yi50b3AtYS5fRG9tUmVmZXJlbmNlLmhlaWdodCgpO2EubGVmdD1iLmxl ZnQ7YnJlYWs7Y2FzZSAiYm90dG9tIjphLnRvcD1iLnRvcCthLl9Eb21SZWZlcmVu Y2UuaGVpZ2h0KCk7YS5sZWZ0PWIubGVmdDticmVhaztjYXNlIGQ6YS50b3A9Yi50 b3A7YS5sZWZ0PWIubGVmdC1hLl9Eb21SZWZlcmVuY2Uud2lkdGgoKTticmVhaztj YXNlICJyaWdodCI6YS50b3A9Yi50b3A7YS5sZWZ0PWIubGVmdCthLl9Eb21SZWZl cmVuY2Uud2lkdGgoKTticmVhaztkZWZhdWx0OmEudG9wPTA7YS5sZWZ0PTB9YS5f d2lkdGgmJmEuZHZIb3Zlci53aWR0aChhLl93aWR0aCtmKTthLl9oZWlnaHQmJmEu ZHZIb3Zlci5oZWlnaHQoYS5faGVpZ2h0K2UpO2EuZHZIb3Zlci5jc3MoYyxhLnRv cCk7YS5kdkhvdmVyLmNzcyhkLGEubGVmdCl9LFZlcmlmeVBvczpmdW5jdGlvbigp e1VMUzF5aDo7dmFyIGU9InRvcCIsYT10aGlzLGI9YS5fRG9tUGFyZW50UmVmLm9m ZnNldCgpLGM9YS5faGVpZ2h0P2EuX2hlaWdodDphLmR2SG92ZXIuaGVpZ2h0KCks Zj1PT1V0aWwuR2V0Vmlld3BvcnQoKSxkPU9PVXRpbC5HZXRTY3JvbGxPZmZzZXQo KTtpZihhLnRvcDxkLnBhZ2VZT2Zmc2V0KWEuZHZIb3Zlci5jc3MoZSxkLnBhZ2VZ T2Zmc2V0KTtlbHNlIGlmKGEudG9wPD1iLnRvcClhLmR2SG92ZXIuY3NzKGUsYi50 b3ApO2Vsc2UgaWYoYS50b3ArYz5mLmlubmVySGVpZ2h0K2QucGFnZVlPZmZzZXQp YS5kdkhvdmVyLmNzcyhlLGYuaW5uZXJIZWlnaHQtYz4wP2QucGFnZVlPZmZzZXQr KGYuaW5uZXJIZWlnaHQtYyktMTA6ZC5wYWdlWU9mZnNldCk7ZWxzZSBhLnRvcCtj PmIudG9wK2EuX0RvbVBhcmVudFJlZi5oZWlnaHQoKSYmYS5kdkhvdmVyLmNzcyhl LGIudG9wK2EuX0RvbVBhcmVudFJlZi5oZWlnaHQoKS1jKTtpZihhLmxlZnQ8PWIu bGVmdClhLmR2SG92ZXIuY3NzKCJsZWZ0IixiLmxlZnQpO2Vsc2UgYS5sZWZ0K2Eu X3dpZHRoPj1iLmxlZnQrYS5fRG9tUGFyZW50UmVmLndpZHRoKCkmJmEuZHZIb3Zl ci5jc3MoImxlZnQiLGIubGVmdCthLl9Eb21QYXJlbnRSZWYud2lkdGgoKS1hLl93 aWR0aCl9LE1vdXNlTGVhdmU6ZnVuY3Rpb24oKXtVTFMxeWg6O3ZhciBhPXRoaXM7 aWYoYS5hbGxvd01vdXNlT3V0VG9DbG9zZSlpZihhLl9mbk1vdXNlTGVhdmVDYWxs YmFjaylhLl9mbk1vdXNlTGVhdmVDYWxsYmFjay5jYWxsKCk7ZWxzZSBhLmRpc3Bv c2UoKX0sS2V5RG93bjpmdW5jdGlvbigpe1VMUzF5aDo7aWYoYXJndW1lbnRzLmxl bmd0aClpZihhcmd1bWVudHNbMF0ua2V5Q29kZT09U3lzLlVJLktleS5lc2MpaWYo dGhpcy5fZm5Nb3VzZUxlYXZlQ2FsbGJhY2spdGhpcy5fZm5Nb3VzZUxlYXZlQ2Fs bGJhY2suY2FsbCgpO2Vsc2UgdGhpcy5kaXNwb3NlKCl9LGRpc3Bvc2U6ZnVuY3Rp b24oKXtVTFMxeWg6O3ZhciBhPXRoaXM7aWYoYS5kdkhvdmVyKXthLmR2SG92ZXIu ZmFkZU91dCgyNTApOyQoZG9jdW1lbnQpLnVuYmluZCgia2V5ZG93biIpOyQod2lu ZG93KS51bmJpbmQoInJlc2l6ZSIpO2EuZHZIb3Zlci5yZW1vdmUoKTthLl9mbkNh bGxiYWNrJiZhLl9mbkNhbGxiYWNrLmNhbGwoKTthLmR2SG92ZXI9YS5kdkhvdmVy Q29udGVudD1hLnRvcD1hLmxlZnQ9YS5fd2lkdGg9YS5faGVpZ2h0PWEuX0RvbVJl ZmVyZW5jZT1hLl9Qb3NpdGlvbj1hLl9Eb21SZXN0cmljdFJlZj1hLl9Eb21QYXJl bnRSZWY9YS5fZm5DYWxsYmFjaz1udWxsfX19O09PQy5Ib3ZlckJhc2UucmVnaXN0 ZXJDbGFzcygiT09DLkhvdmVyQmFzZSIsbnVsbCxTeXMuSURpc3Bvc2FibGUpO09P Qy5Nb2RhbEJhc2U9ZnVuY3Rpb24oaCxnLGYsZCxlKXtVTFMxeWg6O3ZhciBjPSJm dW5jdGlvbiIsYj1udWxsLGE9dGhpcztPT0MuTW9kYWxCYXNlLmluaXRpYWxpemVC YXNlKGEpO2EuZHZNb2RhbD1iO2EuZHZNb2RhbENvbnRlbnQ9YjthLmR2TW9kYWxD b3Zlcj1iO2EuX3dpZHRoPWg7YS5faGVpZ2h0PWc7YS5fZm5TYXZlQ2FsbGJhY2s9 dHlwZW9mIGY9PT1jP2Y6YjthLl9mbkNhbmNlbENhbGxiYWNrPXR5cGVvZiBkPT09 Yz9kOmI7YS5fZm5Mb2FkQ2FsbGJhY2s9dHlwZW9mIGU9PT1jP2U6YjthLl9Jc01v ZGFsT3Blbj1mYWxzZTthLl9mV2luZG93SGFuZGxlcnNBdHRhY2hlZD1mYWxzZX07 T09DLk1vZGFsQmFzZS5wcm90b3R5cGU9e2luaXRpYWxpemU6ZnVuY3Rpb24oKXtV TFMxeWg6O3ZhciBjPSJkdkhCUiIsYj0iPGRpdi8+IixhPXRoaXM7YS5kdk1vZGFs PSQoYikuYXR0cigiaWQiLCJkdk1vZGFsIikuYWRkQ2xhc3MoImR2SG92ZXIgZHZN b2RhbCIpLmFwcGVuZFRvKGRvY3VtZW50LmJvZHkpOyQoYikuYWRkQ2xhc3MoImR2 SEJUIikuYXBwZW5kKCQoYikuYWRkQ2xhc3MoYykpLmFwcGVuZFRvKGEuZHZNb2Rh bCk7JChiKS5hZGRDbGFzcygiZHZIQkMiKS5hcHBlbmQoJChiKS5hZGRDbGFzcyhj KS5hcHBlbmQoJChiKS5hdHRyKCJpZCIsImR2TW9kYWxDb250ZW50IikuYWRkQ2xh c3MoImR2SG92ZXJDb250ZW50IikpKS5hcHBlbmRUbyhhLmR2TW9kYWwpOyQoYiku YWRkQ2xhc3MoImR2SEJCIikuYXBwZW5kKCQoYikuYWRkQ2xhc3MoYykpLmFwcGVu ZFRvKGEuZHZNb2RhbCk7YS5kdk1vZGFsQ29udGVudD0kKCIjZHZNb2RhbENvbnRl bnQiKTthLl93aWR0aCYmYS5kdk1vZGFsLndpZHRoKGEuX3dpZHRoKTthLl9oZWln aHQmJmEuZHZNb2RhbC5oZWlnaHQoYS5faGVpZ2h0KX0sZGlzcGxheTpmdW5jdGlv bigpe1VMUzF5aDo7dmFyIGE9dGhpczthLmR2TW9kYWxDb3Zlcj1PT1V0aWwuRHZF bnN1cmVNb2RhbENvdmVyRXhpc3RzKCk7YS5DaGVja01vZGFsTGF5b3V0KCk7JChh LmR2TW9kYWxDb3Zlcikuc2hvdygpOyQoYS5kdk1vZGFsKS5zaG93KCJub3JtYWwi LEZ1bmN0aW9uLmNyZWF0ZURlbGVnYXRlKGEsYS5Mb2FkQ2FsbGJhY2spKTthLmR2 TW9kYWwuc2V0U2NhbGFibGVGb250U2l6ZSgxKTthLl9Jc01vZGFsT3Blbj10cnVl OyQod2luZG93KS5yZXNpemUoRnVuY3Rpb24uY3JlYXRlRGVsZWdhdGUoYSxmdW5j dGlvbigpe1VMUzF5aDo7dGhpcy5DaGVja01vZGFsTGF5b3V0KCl9KSl9LENsb3Nl OmZ1bmN0aW9uKCl7VUxTMXloOjt0aGlzLl9mbkNhbmNlbENhbGxiYWNrJiZ0aGlz Ll9mbkNhbmNlbENhbGxiYWNrLmNhbGwoKTt0aGlzLmRpc3Bvc2UoKX0sU2F2ZTpm dW5jdGlvbigpe1VMUzF5aDo7dGhpcy5fZm5TYXZlQ2FsbGJhY2smJnRoaXMuX2Zu U2F2ZUNhbGxiYWNrLmNhbGwoKTt0aGlzLmRpc3Bvc2UoKX0sTG9hZENhbGxiYWNr OmZ1bmN0aW9uKCl7VUxTMXloOjt2YXIgYT10aGlzO2EuX2ZuTG9hZENhbGxiYWNr JiZhLl9mbkxvYWRDYWxsYmFjay5jYWxsKGEpO2EuZHZNb2RhbC5jc3Moe2hlaWdo dDoiIiwiYmFja2dyb3VuZC1jb2xvciI6InRyYW5zcGFyZW50In0pfSxDaGVja01v ZGFsTGF5b3V0OmZ1bmN0aW9uKCl7VUxTMXloOjt2YXIgYT10aGlzLGI9T09VdGls LmdldENsaWVudEJvdW5kcygpLGU9Yi53aWR0aCxkPWIuaGVpZ2h0O2EuZHZNb2Rh bC5jc3MoImxlZnQiLChlLWEuZHZNb2RhbC53aWR0aCgpKS8yKyJweCIpO3ZhciBj PShkLWEuZHZNb2RhbC5oZWlnaHQoKSkvMjthLmR2TW9kYWwuY3NzKCJ0b3AiLGM+ MD9NYXRoLnJvdW5kKGMpOjArInB4Iil9LGRpc3Bvc2U6ZnVuY3Rpb24oKXtVTFMx eWg6O3ZhciBhPXRoaXM7aWYoYS5kdk1vZGFsKXskKHdpbmRvdykudW5iaW5kKCJy ZXNpemUiKTthLmR2TW9kYWwuY3NzKCJiYWNrZ3JvdW5kLWNvbG9yIiwiI2ZmZiIp O2EuZHZNb2RhbC5oaWRlKCJmYXN0IixmdW5jdGlvbigpe1VMUzF5aDo7JCh0aGlz KS5yZW1vdmUoKX0pOyQoYS5kdk1vZGFsQ292ZXIpLmhpZGUoKTthLmR2TW9kYWw9 bnVsbDthLl9Jc01vZGFsT3Blbj1mYWxzZX19fTtPT0MuTW9kYWxCYXNlLnJlZ2lz dGVyQ2xhc3MoIk9PQy5Nb2RhbEJhc2UiLG51bGwsU3lzLklEaXNwb3NhYmxlKTtP T0MuU2VlQWxzb0hvdmVyPWZ1bmN0aW9uKGIsZSxmKXtVTFMxeWg6O3ZhciBjPW51 bGwsYT10aGlzLGg9MzM2LGc9YyxkPSQoIiNjZENudE1pZCIpO2lmKGQubGVuZ3Ro KXtpZighYiliPXt9O2IucGFyZW50T3ZlcnJpZGU9ZH1PT0MuU2VlQWxzb0hvdmVy LmluaXRpYWxpemVCYXNlKGEsW2IsaCxnLGZdKTthLl9Bc3NldElkPWM7YS5fVHlw ZT1jO2EuX1Byb3ZpZGVycz1jO2EuX0Rlc2NyaXB0aW9uPWM7YS5fSXNWYWxpZERl c2NyaXB0aW9uPWZhbHNlO2EuX0hvdmVyT2Zmc2V0TGVmdD0xMDthLl9Ib3Zlck9m ZnNldFRvcD03O2EuYWxsb3dNb3VzZU91dFRvQ2xvc2U9ZmFsc2U7YS5fTGlua0Vs ZW1lbnQ9JChlKTtiLnJlZj1hLl9MaW5rRWxlbWVudDtiLnBvcz1hLlBvc2l0aW9u SG92ZXI7Yi52ZXJpZnlQb3M9YS5WZXJpZnlIb3ZlcjthLmluaXRpYWxpemUoYil9 O09PQy5TZWVBbHNvSG92ZXIucHJvdG90eXBlPXtpbml0aWFsaXplOmZ1bmN0aW9u KGEpe1VMUzF5aDo7dmFyIGQ9bnVsbCxjPSJ1bmRlZmluZWQiLGI9dGhpcztpZih0 eXBlb2YgYT09PSJvYmplY3QiKXtiLl9Bc3NldElkPXR5cGVvZiBhLmEhPWM/YS5h OmQ7Yi5fVHlwZT10eXBlb2YgYS50IT1jP2EudDpkO2IuX1Byb3ZpZGVycz10eXBl b2YgYS5wIT1jP2EucDpkO2IuX0Rlc2NyaXB0aW9uPXR5cGVvZiBhLmQhPWM/YS5k OmQ7Yi5fSXNWYWxpZERlc2NyaXB0aW9uPXR5cGVvZiBhLnZhbGlkIT1jP2EudmFs aWQ6ZmFsc2U7T09DLlNlZUFsc29Ib3Zlci5jYWxsQmFzZU1ldGhvZChiLCJpbml0 aWFsaXplIixbYV0pO09PQy5TZWVBbHNvSG92ZXIuY2FsbEJhc2VNZXRob2QoYiwi Y3JlYXRlY29udGFpbmVyIik7Yi5kdkhvdmVyLmFkZENsYXNzKCJjZFRleHRIb3Zl ciIpfX0sZGlzcGxheTpmdW5jdGlvbigpe1VMUzF5aDo7dmFyIGM9IjxzcGFuIC8+ IixhPXRoaXMsYj0kKCI8ZGl2Lz4iKS5hZGRDbGFzcygiY2RTZWVBbHNvV3JhcHBl ciIpLGQ9JCgiPGRpdiAvPiIpLmFkZENsYXNzKCJjZFNlZUFsc29IZWFkZXIiKS5h cHBlbmRUbyhiKTthLl9UeXBlJiZhLl9UeXBlLmxlbmd0aCYmJChjKS5hZGRDbGFz cygiY2RTZWVBbHNvVHlwZSIpLnRleHQoYS5fVHlwZSkuYXBwZW5kVG8oZCk7YS5f UHJvdmlkZXJzJiZhLl9Qcm92aWRlcnMubGVuZ3RoJiYkKGMpLmFkZENsYXNzKCJj ZFNlZUFsc29Qcm92aWRlcnMiKS50ZXh0KGEuX1Byb3ZpZGVycykuYXBwZW5kVG8o ZCk7YS5fRGVzY3JpcHRpb24mJmEuX0Rlc2NyaXB0aW9uLmxlbmd0aCYmJCgiPHAg Lz4iKS5hZGRDbGFzcygiY2RTZWVBbHNvRGVzY3JpcHRpb24iKS5hZGRDbGFzcyhh Ll9Jc1ZhbGlkRGVzY3JpcHRpb24/ImNkU2VlQWxzb0Rlc2NyaXB0aW9uVGV4dCI6 ImNkU2VlQWxzb1Byb21wdCIpLnRleHQoYS5fRGVzY3JpcHRpb24pLmFwcGVuZFRv KGIpO2EuZHZIb3ZlckNvbnRlbnQuYXBwZW5kKGIpO09PQy5TZWVBbHNvSG92ZXIu Y2FsbEJhc2VNZXRob2QoYSwiZGlzcGxheSIpfSxQb3NpdGlvbkhvdmVyOmZ1bmN0 aW9uKGQsYyl7VUxTMXloOjt2YXIgYT10aGlzLGI9JChjKTtkLnBvc2l0aW9uTmVh cihiLGIuaGVpZ2h0KCkrYS5fSG92ZXJPZmZzZXRUb3AsT09VdGlsLkZJc1J0bCgp P2Iub3V0ZXJXaWR0aCgpLWEuX0hvdmVyT2Zmc2V0TGVmdC1hLl93aWR0aDphLl9I b3Zlck9mZnNldExlZnQpfSxWZXJpZnlIb3ZlcjpmdW5jdGlvbihhLGcpe1VMUzF5 aDo7dmFyIGM9JChnKSxiPU9PVXRpbC5HZXRXaW5kb3dTaXplQW5kU2Nyb2xsKCks ZD1iLmhlaWdodCtiLnNjcm9sbFksZT1hLm91dGVySGVpZ2h0KCkrYS5wb3NpdGlv bigpLnRvcC0yMCxmPWIud2lkdGgrYi5zY3JvbGxYLGg9YS5vdXRlcldpZHRoKCkr YS5wb3NpdGlvbigpLmxlZnQ7ZDxlJiZhLnBvc2l0aW9uTmVhcihjLC1hLm91dGVy SGVpZ2h0KCksbnVsbCk7aWYoZjxoKXt2YXIgaT1kPGU/YTpjO2EucG9zaXRpb25O ZWFyKGksbnVsbCxmLWEub3V0ZXJXaWR0aCgpLWEucG9zaXRpb24oKS5sZWZ0KX19 fTtPT0MuU2VlQWxzb0hvdmVyLnJlZ2lzdGVyQ2xhc3MoIk9PQy5TZWVBbHNvSG92 ZXIiLE9PQy5Ib3ZlckJhc2UpO09PQy5TZWVBbHNvQ29udHJvbD1mdW5jdGlvbigp e1VMUzF5aDo7dmFyIGE9dGhpcztPT0MuU2VlQWxzb0NvbnRyb2wuaW5pdGlhbGl6 ZUJhc2UoYSk7YS5faG92ZXJEZWxheT00MDA7YS5faG92ZXJUaW1lcj1udWxsO2Eu SW5pdGlhbGl6ZUhvdmVycygpfTtPT0MuU2VlQWxzb0NvbnRyb2wucHJvdG90eXBl PXtJbml0aWFsaXplSG92ZXJzOmZ1bmN0aW9uKCl7VUxTMXloOjt2YXIgZT0ibW91 c2VlbnRlciIsYj0iaG92ZXJEYXRhIixkPSJkZXNjcmlwdGlvbkluZm8iO2Zvcih2 YXIgZz0kKCIuY2RTZWVBbHNvIiksaD0wO2g8Zy5sZW5ndGg7aCsrKWZvcih2YXIg bD0kKGdbaF0pLGo9JCgiYSIsbCksaT0wO2k8ai5sZW5ndGg7aSsrKXt2YXIgYz0k KGpbaV0pLGY9Yy5hdHRyKCJuYW1lIik7aWYoZiYmZi5sZW5ndGgpdHJ5e3ZhciBh PU9PVXRpbC5EZXNlcmlhbGl6ZShmKTtpZihhPT09dW5kZWZpbmVkfHwhYSljb250 aW51ZTtpZihhLmQ9PT11bmRlZmluZWR8fCFhLmQmJmEuZCE9IiIpe2EuZD1PT1VJ LkxfU2VlQWxzb0p1c3RBTW9tZW50O3ZhciBrPXthOmEuYSx0OmMudGV4dCgpLHU6 YS51LHVoOmEudWh9O2MuZGF0YShkLGspO2MuYXR0cigiZGVzY3JpcHRpb24iLCJu ZWVkZWQiKX1lbHNlIGEudmFsaWQ9dHJ1ZTtjLmRhdGEoYixhKTtjLmRhdGEoInNl bGYiLHRoaXMpO2MuaG92ZXIodGhpcy5MaW5rTW91c2VJbix0aGlzLkxpbmtNb3Vz ZU91dCl9Y2F0Y2gobSl7fX1nLmJpbmQoZSxmdW5jdGlvbigpe1VMUzF5aDo7dmFy IGE9ImFbZGVzY3JpcHRpb249bmVlZGVkXSIsaT0kKHRoaXMpO2kudW5iaW5kKGUp O2Zvcih2YXIgZz1bXSxoPSQoYSxpKSxmPTA7ZjxoLmxlbmd0aDtmKyspe3ZhciBq PSQoaFtmXSksYz1qLmRhdGEoZCk7aWYoYz09PXVuZGVmaW5lZHx8IWMpY29udGlu dWU7Zy5wdXNoKGMpfWlmKHR5cGVvZiBHbG9iYWxTdmM9PT0idW5kZWZpbmVkIily ZXR1cm47R2xvYmFsU3ZjLkdldERlc2NyaXB0aW9uSW5mbyhnX2xsY2MsZyxGdW5j dGlvbi5jcmVhdGVEZWxlZ2F0ZSh0aGlzLGZ1bmN0aW9uKGYpe1VMUzF5aDo7Zm9y KHZhciBoPXt9LGU9MDtlPGYubGVuZ3RoO2UrKyl7aWYoZltlXT09PXVuZGVmaW5l ZHx8IWZbZV0pY29udGludWU7aFtmW2VdLmFdPWZbZV0uZH1mb3IodmFyIGo9JChh LCQodGhpcykpLGc9MDtnPGoubGVuZ3RoO2crKyl7dmFyIGQ9JChqW2ddKSxjPWQu ZGF0YShiKTtpZihjIT09dW5kZWZpbmVkJiZjKXt2YXIgbD1oW2MuYV07Yy5kPWw7 aWYoYy5kPT09dW5kZWZpbmVkfHwhYy5kfHwhYy5kLmxlbmd0aCljLmQ9T09VSS5M X1NlZUFsc29DYW50RmluZE1vcmU7ZWxzZSBjLnZhbGlkPXRydWU7ZC5kYXRhKGIs Yyk7dmFyIGk9ZC5kYXRhKCJob3ZlciIpO2lmKGkhPT11bmRlZmluZWQmJmkpe3Zh ciBrPWQuZGF0YSgic2VsZiIpO0Z1bmN0aW9uLmNyZWF0ZURlbGVnYXRlKGQsay5M aW5rTW91c2VPdXQpLmNhbGwoKTtGdW5jdGlvbi5jcmVhdGVEZWxlZ2F0ZShkLGsu SW52b2tlSG92ZXIpLmNhbGwoKX19fX0pKX0pfSxMaW5rTW91c2VJbjpmdW5jdGlv bigpe1VMUzF5aDo7dmFyIGI9JCh0aGlzKTtpZighYnx8IWIubGVuZ3RoKXJldHVy bjt2YXIgYT1iLmRhdGEoInNlbGYiKTtpZighYSlyZXR1cm47dmFyIGM9Yi5kYXRh KCJob3ZlciIpO2lmKCFjKXthLl9ob3ZlclRpbWVyJiZ3aW5kb3cuY2xlYXJJbnRl cnZhbChhLl9ob3ZlclRpbWVyKTthLl9ob3ZlclRpbWVyPU9PVXRpbC5UaW1lcihG dW5jdGlvbi5jcmVhdGVEZWxlZ2F0ZSh0aGlzLGEuSW52b2tlSG92ZXIpLGEuX2hv dmVyRGVsYXkpfX0sTGlua01vdXNlT3V0OmZ1bmN0aW9uKCl7VUxTMXloOjt2YXIg YT0kKHRoaXMpO2lmKCFhfHwhYS5sZW5ndGgpcmV0dXJuO3ZhciBiPWEuZGF0YSgi c2VsZiIpO2lmKCFiKXJldHVybjtiLl9ob3ZlclRpbWVyJiZ3aW5kb3cuY2xlYXJJ bnRlcnZhbChiLl9ob3ZlclRpbWVyKTt2YXIgYz1hLmRhdGEoImhvdmVyIik7aWYo Yyl7Yy5kaXNwb3NlKCk7YS5kYXRhKCJob3ZlciIsbnVsbCl9fSxJbnZva2VIb3Zl cjpmdW5jdGlvbigpe1VMUzF5aDo7dmFyIGE9JCh0aGlzKTtpZighYXx8IWEubGVu Z3RoKXJldHVybjt2YXIgYj1hLmRhdGEoImhvdmVyRGF0YSIpO2lmKCFiKXJldHVy bjt2YXIgYz1uZXcgT09DLlNlZUFsc29Ib3ZlcihiLGEpO2EuZGF0YSgiaG92ZXIi LGMpO2MuZGlzcGxheSgpfX07T09DLlNlZUFsc29Db250cm9sLnJlZ2lzdGVyQ2xh c3MoIk9PQy5TZWVBbHNvQ29udHJvbCIsU3lzLkNvbXBvbmVudCk7dmFyIFNlZUFs c29Db250cm9sPXVuZGVmaW5lZDtmdW5jdGlvbiBHZXRBc3NldFBhZ2VVUkwoZCxj KXtVTFMxeWg6O3ZhciBiPSJ7TWFya2V0fSIsYTtzd2l0Y2goZC5zdWJzdHJpbmco MCwyKS50b1VwcGVyQ2FzZSgpKXtjYXNlICJUQyI6YT1PT1VJLlRFTVBMQVRFX1BB R0VfVVJMLnJlcGxhY2UoYixjKTticmVhaztjYXNlICJNQyI6Y2FzZSAiTU0iOmNh c2UgIk1QIjpjYXNlICJNUyI6YT1PT1VJLkNMSVBBUlRfUEFHRV9VUkwucmVwbGFj ZShiLGMpO2JyZWFrO2RlZmF1bHQ6cmV0dXJuIG51bGx9cmV0dXJuIGEucmVwbGFj ZSgie0Fzc2V0SWR9IixkKX1mdW5jdGlvbiBHZXRDbGlwQXJ0VGh1bWJuYWlsKGEp e1VMUzF5aDo7dmFyIGI7aWYoYS5zdGFydHNXaXRoKCJNUyIpKXJldHVybiBPT1V0 aWwuR2V0Q29kZUltYWdlKCJjbGlwYXJ0IiwiY2xpcGFydF9tdF9zcGVha2VyLnBu ZyIpO2Vsc2V7dmFyIGM9YS5zdGFydHNXaXRoKCJNTSIpPyJnaWYiOnR5cGVvZiBm SlBHVGh1bWJTdXBwb3J0IT0idW5kZWZpbmVkIiYmZkpQR1RodW1iU3VwcG9ydD8i anBnIjoicG5nIjtiPVN0cmluZy5mb3JtYXQoIk1UezB9LnsxfSIsYS5zdWJzdHJp bmcoMiksYyl9cmV0dXJuIE9PVXRpbC5HZXRTdGF0aWNDb250ZW50RG9tYWluVXJs KE9PVUkuQ0xJUEFSVF9USFVNQk5BSUxfVVJMLnJlcGxhY2UoIntBc3NldElkfSIs YikpfWZ1bmN0aW9uIEdldFRlbXBsYXRlVGh1bWJuYWlsKGMsYSl7VUxTMXloOjt2 YXIgYj1PT1VJLlRFTVBMQVRFX1RIVU1CTkFJTF9VUkwucmVwbGFjZSgie01hcmtl dH0iLGEpO3JldHVybiBiLnJlcGxhY2UoIntBc3NldElkfSIsYy50b1VwcGVyQ2Fz ZSgpLnJlcGxhY2UoIlRDIiwiVFQiKSl9ZnVuY3Rpb24gR2V0U3RyaW5nRm9yQ2Fu YXJ5R3VpZCgpe1VMUzF5aDo7cmV0dXJuIEdldENvb2tpZSgiY2FuIiwiIil9dmFy IGdfY2tlRnJtU3RvcmVkPSJmcm1zdG9yZWQiLGdfaHRGb3JtRmllbGQ9e307ZnVu Y3Rpb24gU3RvcmVGb3JtRmllbGRJbkNvb2tpZShhKXtVTFMxeWg6O2lmKGEudHlw ZT09ImNoZWNrYm94IilnX2h0Rm9ybUZpZWxkW2EuaWRdPWEuY2hlY2tlZDtlbHNl IGdfaHRGb3JtRmllbGRbYS5pZF09YS52YWx1ZTttU2V0Q29va2llKGdfY2tlRnJt U3RvcmVkLE9PVXRpbC5TZXJpYWxpemUoZ19odEZvcm1GaWVsZCkpfWZ1bmN0aW9u IFByZUZpbGxGb3JtRnJvbUNvb2tpZSgpe1VMUzF5aDo7dmFyIGM9R2V0Q29va2ll KGdfY2tlRnJtU3RvcmVkKTtpZihjPT1udWxsfHxjLmxlbmd0aD09MClyZXR1cm47 Z19odEZvcm1GaWVsZD1PT1V0aWwuRGVzZXJpYWxpemUoYyk7Zm9yKHZhciBhIGlu IGdfaHRGb3JtRmllbGQpe3ZhciBiPSQoIiMiK2EpO2lmKGIubGVuZ3RoPjAmJmJb MF0udHlwZT09ImNoZWNrYm94IiliLmF0dHIoImNoZWNrZWQiLGdfaHRGb3JtRmll bGRbYV0pO2Vsc2UgZ19odEZvcm1GaWVsZFthXS5sZW5ndGg+MCYmYi52YWwoZ19o dEZvcm1GaWVsZFthXSl9fShmdW5jdGlvbihhKXtVTFMxeWg6O3ZhciBxPSJ1aS1v b2Ryb3Bkb3duLWRpc2FibGVkIixqPSJkaXNwbGF5IixwPSIudWktb29kcm9wZG93 bi1hcnJvdy1pbWciLG89InVpLW9vZHJvcGRvd24tYWN0aXZlIixmPSIudWktb29k cm9wZG93biIsZD0icHgiLGU9bnVsbCxuPSIudWktb29kcm9wZG93bi10ZXh0Iixp PSJzZWxlY3RlZCIsbT0iLnVpLW9vZHJvcGRvd24tZHJvcGNvbnRhaW5lciIsaz0i ZHJvcGRvd25faG92ZXIucG5nIixnPSJkcm9wZG93bi5wbmciLGM9ImNsaXBhcnQi LGw9InVpLW9vZHJvcGRvd24tdGV4dCIsYj1mYWxzZSxoPSI8ZGl2Lz4iO2Eud2lk Z2V0KCJ1aS5vb2Ryb3Bkb3duIix7X2FwcGVuZENvbnRhaW5lcjpmdW5jdGlvbigp e1VMUzF5aDo7dmFyIGM9YShoKTtjLmFkZENsYXNzKCJ1aS1vb2Ryb3Bkb3duLWRy b3Bjb250YWluZXItd3JhcHBlciIpO2MuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUi LHRvcDoiLTMzMDBweCJ9KTt2YXIgZD1hKGgpO2QuYWRkQ2xhc3MoInVpLW9vZHJv cGRvd24tZHJvcGNvbnRhaW5lciIpO2MuYXBwZW5kKGQpO2MuaW5zZXJ0QWZ0ZXIo dGhpcy5kZGxTZWxlY3QpO2MuZHJvcD1iO3JldHVybiBjfSxfYXBwZW5kQ29udHJv bDpmdW5jdGlvbigpe1VMUzF5aDo7dmFyIGk9InVpLW9vZHJvcGRvd24taG92ZXIi LGg9ImlubGluZS1ibG9jayIsZD0iPHNwYW4vPiIsaj10aGlzLHA9dGhpcy5kZGxT ZWxlY3QsZT1hKGQpO2UuYWRkQ2xhc3MoInVpLW9vZHJvcGRvd24td3JhcHBlciIp O2UuY3NzKHtkaXNwbGF5OmgsY3Vyc29yOiJkZWZhdWx0In0pO2UuYmluZCgic2Vs ZWN0c3RhcnQiLGZ1bmN0aW9uKCl7VUxTMXloOjtyZXR1cm4gYn0pLmJpbmQoIm1v dXNlZG93biIsZnVuY3Rpb24oKXtVTFMxeWg6O3JldHVybiBifSk7dmFyIGY9YShk KTtmLmFkZENsYXNzKCJ1aS1vb2Ryb3Bkb3duIik7Zi5jc3Moe2Rpc3BsYXk6aH0p O2UuYXBwZW5kKGYpO3ZhciBuPWEoZCk7bi5hZGRDbGFzcyhsKTtuLmNzcyh7ZGlz cGxheTpoLG92ZXJmbG93OiJoaWRkZW4ifSk7Zi5hcHBlbmQobik7dmFyIG09YShk KTttLmFkZENsYXNzKCJ1aS1vb2Ryb3Bkb3duLWFycm93Iik7dmFyIG89YSgiPGlt Zy8+IikuYXR0cih7c3JjOk9PVXRpbC5HZXRDb2RlSW1hZ2UoYyxnKX0pLmFkZENs YXNzKCJ1aS1vb2Ryb3Bkb3duLWFycm93LWltZyIpO20uYXBwZW5kKG8pO2YuYXBw ZW5kKG0pO2UuaG92ZXIoZnVuY3Rpb24oKXtVTFMxeWg6O2lmKCFqLmRpc2FibGVk KXtmLnRvZ2dsZUNsYXNzKGkpO28uYXR0cih7c3JjOk9PVXRpbC5HZXRDb2RlSW1h Z2UoYyxrKX0pfX0sZnVuY3Rpb24oKXtVTFMxeWg6O2lmKCFqLmRpc2FibGVkKXtm LnRvZ2dsZUNsYXNzKGkpOyFqLmRyb3BXcmFwcGVyLmRyb3AmJm8uYXR0cih7c3Jj Ok9PVXRpbC5HZXRDb2RlSW1hZ2UoYyxnKX0pfX0pO2UuY2xpY2soZnVuY3Rpb24o YSl7VUxTMXloOjtpZighai5kaXNhYmxlZCl7YS5zdG9wUHJvcGFnYXRpb24oKTtq Ll90b2dnbGVEcm9wQ29udGFpbmVyKCl9fSk7ZS5pbnNlcnRBZnRlcihwKTtyZXR1 cm4gZX0sX2NyZWF0ZURyb3BJdGVtOmZ1bmN0aW9uKGksbSxnKXtVTFMxeWg6O3Zh ciBiPSJ1aS1vb2Ryb3Bkb3duLWl0ZW0taG92ZXIiLGM9dGhpcyxkPWEoaCk7ZC5h ZGRDbGFzcygidWktb29kcm9wZG93bi1pdGVtIik7ZC5jc3Moe3doaXRlU3BhY2U6 Im5vd3JhcCJ9KTt2YXIgaj0iYW5jT09ERCIrZy5yZXBsYWNlKCIgIiksZT1hKCI8 YSBocmVmPSdqYXZhc2NyaXB0OnZvaWQoMCknLz4iKTtlLmFkZENsYXNzKGwpLmNz cyh7Y3Vyc29yOiJkZWZhdWx0Iix3aWR0aDoiMTAwJSJ9KS5hdHRyKHtpZDpqfSku dGV4dChnKTtkLmFwcGVuZChlKTtkLmhvdmVyKGZ1bmN0aW9uKCl7VUxTMXloOjtk LmFkZENsYXNzKGIpfSxmdW5jdGlvbigpe1VMUzF5aDo7ZC5yZW1vdmVDbGFzcyhi KX0pO2UuYmluZCgiZm9jdXNpbiIsZnVuY3Rpb24oKXtVTFMxeWg6OyFjLmRyb3BX cmFwcGVyLmRyb3AmJmMuX3Nob3coYyl9KTtlLmZvY3VzKGZ1bmN0aW9uKCl7VUxT MXloOjtkLmFkZENsYXNzKGIpOyFjLmRyb3BXcmFwcGVyLmRyb3AmJmMuX3Nob3co Yyl9KS5ibHVyKGZ1bmN0aW9uKCl7VUxTMXloOjtkLnJlbW92ZUNsYXNzKGIpO2Mu ZHJvcFdyYXBwZXIuZHJvcCYmYy5faGlkZSgpfSk7dmFyIGY9ZnVuY3Rpb24oYSl7 VUxTMXloOjthLnN0b3BQcm9wYWdhdGlvbigpO2MuZGRsU2VsZWN0LmdldCgwKS5z ZWxlY3RlZEluZGV4PWk7Yy5fdXBkYXRlQ29udHJvbFRleHQoKTtjLmRkbFNlbGVj dC50cmlnZ2VyKCJjaGFuZ2UiKTtjLl90b2dnbGVEcm9wQ29udGFpbmVyKCl9O2Uu Y2xpY2soZik7ZC5jbGljayhmKTtyZXR1cm4gZH0sX2FwcGVuZEl0ZW1zOmZ1bmN0 aW9uKCl7VUxTMXloOjt2YXIgZT10aGlzLGQ9dGhpcy5kZGxTZWxlY3QsZj10aGlz LmRyb3BXcmFwcGVyLGM9Zi5maW5kKG0pO2MuY3NzKHsiZmxvYXQiOiJsZWZ0In0p O2QuY2hpbGRyZW4oIm9wdGdyb3VwIikuZWFjaChmdW5jdGlvbigpe1VMUzF5aDo7 dmFyIGI9YSh0aGlzKTtlLl9hcHBlbmRPcHRpb25zKGIsYyx0cnVlKX0pO2UuX2Fw cGVuZE9wdGlvbnMoZCxjLGIpO3ZhciBoPWMub3V0ZXJXaWR0aCgpLGc9Yy5vdXRl ckhlaWdodCgpO2MuY3NzKHsiZmxvYXQiOiIifSk7cmV0dXJuIHt3aWR0aDpoLGhl aWdodDpnfX0sX2FwcGVuZE9wdGlvbnM6ZnVuY3Rpb24oZCxiLGMpe1VMUzF5aDo7 dmFyIGU9dGhpcztkLmNoaWxkcmVuKCJvcHRpb24iKS5lYWNoKGZ1bmN0aW9uKGcp e1VMUzF5aDo7dmFyIGQ9YSh0aGlzKSxrPWQudGV4dCgpLGg9ZC52YWwoKSxmPWQu YXR0cihpKSxqPWUuX2NyZWF0ZURyb3BJdGVtKGcsaCxrLGYsYyk7Yi5hcHBlbmQo ail9KX0sX3VwZGF0ZUNvbnRyb2xUZXh0OmZ1bmN0aW9uKCl7VUxTMXloOjt2YXIg Zj10aGlzLGU9dGhpcy5kZGxTZWxlY3QsYz10aGlzLmNvbnRyb2xXcmFwcGVyLGQ9 ZS5maW5kKCJvcHRpb24iKSxiPWYuX2Zvcm1hdFRleHQoZCksYT1jLmZpbmQobik7 YS50ZXh0KGIpO2EuYXR0cigidGl0bGUiLGIpfSxfZm9ybWF0VGV4dDpmdW5jdGlv bihjKXtVTFMxeWg6O3ZhciBiO2I9IiI7Yy5lYWNoKGZ1bmN0aW9uKCl7VUxTMXlo OjtpZihhKHRoaXMpLmF0dHIoaSkpYj1hKHRoaXMpLnRleHQoKX0pO3JldHVybiBi fSxfdG9nZ2xlRHJvcENvbnRhaW5lcjpmdW5jdGlvbigpe1VMUzF5aDo7dmFyIGE9 dGhpcyxiPWEsYz1hLmRyb3BXcmFwcGVyO2lmKGMuZHJvcClhLl9oaWRlKGIpO2Vs c2UgYS5fc2hvdyhiKX0sX3Nob3c6ZnVuY3Rpb24oYil7VUxTMXloOjtlIT1hLnVp Lm9vZHJvcGRvd24uZHJvcCYmYi5faGlkZSgpO2IuZHJvcFdyYXBwZXIuY3NzKHt0 b3A6Yi5jb250cm9sV3JhcHBlci5vZmZzZXQoKS50b3ArYi5jb250cm9sV3JhcHBl ci5vdXRlckhlaWdodCgpK2QsbGVmdDpiLmNvbnRyb2xXcmFwcGVyLm9mZnNldCgp LmxlZnQrZH0pO2IuY29udHJvbFdyYXBwZXIuZmluZChmKS50b2dnbGVDbGFzcyhv KTtiLmNvbnRyb2xXcmFwcGVyLmZpbmQocCkuYXR0cih7c3JjOk9PVXRpbC5HZXRD b2RlSW1hZ2UoYyxrKX0pO2IuZHJvcFdyYXBwZXIuZHJvcD10cnVlO2EudWkub29k cm9wZG93bi5kcm9wPWI7YShkb2N1bWVudCkuYmluZCgiY2xpY2siLGIuX2hpZGUp fSxfaGlkZTpmdW5jdGlvbigpe1VMUzF5aDo7dmFyIGQ9YS51aS5vb2Ryb3Bkb3du LmRyb3A7aWYoZSE9ZCl7ZC5kcm9wV3JhcHBlci5jc3Moe3RvcDoiLTMzMDBweCJ9 KTtkLmNvbnRyb2xXcmFwcGVyLmZpbmQoZikudG9nZ2xlQ2xhc3Mobyk7ZC5jb250 cm9sV3JhcHBlci5maW5kKHApLmF0dHIoe3NyYzpPT1V0aWwuR2V0Q29kZUltYWdl KGMsZyl9KTtkLmRyb3BXcmFwcGVyLmRyb3A9YjthLnVpLm9vZHJvcGRvd24uZHJv cD1lO2EoZG9jdW1lbnQpLnVuYmluZCgiY2xpY2siLGQuX2hpZGUpfX0sX3NldFNp emU6ZnVuY3Rpb24oZSl7VUxTMXloOjt2YXIgYz10aGlzLm9wdGlvbnMsaD10aGlz LmRyb3BXcmFwcGVyLGc9dGhpcy5jb250cm9sV3JhcHBlcixiO2lmKGMud2lkdGgp Yj1wYXJzZUludChjLndpZHRoKTtlbHNle2I9ZS53aWR0aDt2YXIgaj1jLm1pbldp ZHRoO2lmKGI8ailiPWp9Zy5maW5kKG4pLmNzcyh7d2lkdGg6YitkfSk7dmFyIGY9 Zy5vdXRlcldpZHRoKCksaT1jLm1heERyb3BIZWlnaHQ/cGFyc2VJbnQoYy5tYXhE cm9wSGVpZ2h0KTplLmhlaWdodCxrPWUud2lkdGg8Zj9mOmUud2lkdGg7YShoKS5j c3Moe3dpZHRoOmsrZCxoZWlnaHQ6aStkfSk7aC5maW5kKG0pLmNzcyh7aGVpZ2h0 OmkrZH0pfSxfaW5pdDpmdW5jdGlvbigpe1VMUzF5aDo7dmFyIGE9dGhpcyxiPWEu ZWxlbWVudDthLmluaXRpYWxEaXNwbGF5PWIuY3NzKGopO2IuY3NzKGosIm5vbmUi KTthLmRkbFNlbGVjdD1iO3ZhciBkPWEuX2FwcGVuZENvbnRhaW5lcigpO2EuZHJv cFdyYXBwZXI9ZDt2YXIgZT1hLl9hcHBlbmRJdGVtcygpLGM9YS5fYXBwZW5kQ29u dHJvbCgpO2EuY29udHJvbFdyYXBwZXI9YzthLl91cGRhdGVDb250cm9sVGV4dChj LGQsYik7YS5fc2V0U2l6ZShlKX0sZW5hYmxlOmZ1bmN0aW9uKCl7VUxTMXloOjt0 aGlzLmNvbnRyb2xXcmFwcGVyLmZpbmQoZikucmVtb3ZlQ2xhc3MocSk7dGhpcy5k aXNhYmxlZD1ifSxkaXNhYmxlOmZ1bmN0aW9uKCl7VUxTMXloOjt0aGlzLmNvbnRy b2xXcmFwcGVyLmZpbmQoZikuYWRkQ2xhc3MocSk7dGhpcy5kaXNhYmxlZD10cnVl fSxkZXN0cm95OmZ1bmN0aW9uKCl7VUxTMXloOjt2YXIgYj10aGlzO2Eud2lkZ2V0 LnByb3RvdHlwZS5kZXN0cm95LmFwcGx5KGIsYXJndW1lbnRzKTtiLmRkbFNlbGVj dC5jc3MoaixiLmluaXRpYWxEaXNwbGF5KTtiLmNvbnRyb2xXcmFwcGVyLnVuYmlu ZCgpLnJlbW92ZSgpO2IuZHJvcFdyYXBwZXIucmVtb3ZlKCl9fSk7YS5leHRlbmQo YS51aS5vb2Ryb3Bkb3duLHtkZWZhdWx0czp7d2lkdGg6ZSxtYXhEcm9wSGVpZ2h0 OmUsbWluV2lkdGg6NTB9fSl9KShqUXVlcnkpOyhmdW5jdGlvbihhKXtVTFMxeWg6 O3ZhciBnPSJjZEJ0bkRpc2FibGUiLGY9ImNkQnRuUkhvdmVyIixlPSJjZEJ0bk1I b3ZlciIsZD0iY2RCdG5MSG92ZXIiLGM9ImNkQnRuRGlzYWJsZWQiLGI9ImRpc3Bs YXkiO2Eud2lkZ2V0KCJ1aS5vb2J1dHRvbiIse19hcHBlbmRDb250cm9sOmZ1bmN0 aW9uKGope1VMUzF5aDo7dmFyIGU9Im1pbi13aWR0aCIsZD0iPGRpdi8+IixiPXRo aXMsZz10aGlzLm9wdGlvbnMsYz1hKCI8YS8+IikuYXR0cigiaHJlZiIsImphdmFz Y3JpcHQ6dm9pZCgwKSIpLmFkZENsYXNzKCJjZEJ0biIpLmNsaWNrKGZ1bmN0aW9u KGEpe1VMUzF5aDo7aWYoIWIuZGlzYWJsZWQpe2Euc3RvcFByb3BhZ2F0aW9uKCk7 Yi5idG5JbnB1dC50cmlnZ2VyKCJjbGljayIpfX0pLmZvY3VzKGZ1bmN0aW9uKCl7 VUxTMXloOjtiLm9uZm9jdXMoYSh0aGlzKSl9KS5ibHVyKGZ1bmN0aW9uKCl7VUxT MXloOjtiLm9uYmx1cihhKHRoaXMpKX0pLmhvdmVyKGZ1bmN0aW9uKCl7VUxTMXlo OjtiLm9uZm9jdXMoYSh0aGlzKSl9LGZ1bmN0aW9uKCl7VUxTMXloOjtiLm9uYmx1 cihhKHRoaXMpKX0pLGw9YShkKS5hZGRDbGFzcygiY2RCdG5MIikuYXBwZW5kVG8o YyksaD1hKGQpLmFkZENsYXNzKCJjZEJ0bk0iKS50ZXh0KGopLmFwcGVuZFRvKGMp LGs9YShkKS5hZGRDbGFzcygiY2RCdG5SIikuYXBwZW5kVG8oYyksZj1iLmJ0bklu cHV0LmF0dHIoImNsYXNzIik7ZiE9bnVsbCYmZi5sZW5ndGg+MCYmYy5hZGRDbGFz cyhmKTtnLm1pbndpZHRoJiZoLmNzcyhlLFN0cmluZy5mb3JtYXQoInswfXB4Iixn Lm1pbndpZHRoKSk7Yy5pbnNlcnRBZnRlcih0aGlzLmJ0bklucHV0KTt2YXIgaT1o Lm91dGVyV2lkdGgoKStsLm91dGVyV2lkdGgoKStrLm91dGVyV2lkdGgoKTtjLmNz cyhlLFN0cmluZy5mb3JtYXQoInswfXB4IixpKSk7cmV0dXJuIGN9LF9pbml0OmZ1 bmN0aW9uKCl7VUxTMXloOjt2YXIgYT10aGlzLGM9YS5lbGVtZW50O2EuaW5pdGlh bERpc3BsYXk9Yy5jc3MoYik7Yy5jc3MoYiwibm9uZSIpO2EuYnRuSW5wdXQ9Yzt2 YXIgZD1hLl9hcHBlbmRDb250cm9sKGMudmFsKCkpO2EuYnRuTmV3QnV0dG9uPWR9 LG9uZm9jdXM6ZnVuY3Rpb24oYSl7VUxTMXloOjtpZighYS5oYXNDbGFzcyhjKSl7 YS5jaGlsZHJlbigiLmNkQnRuTCIpLmFkZENsYXNzKGQpO2EuY2hpbGRyZW4oIi5j ZEJ0bk0iKS5hZGRDbGFzcyhlKTthLmNoaWxkcmVuKCIuY2RCdG5SIikuYWRkQ2xh c3MoZil9fSxvbmJsdXI6ZnVuY3Rpb24oYSl7VUxTMXloOjthLmNoaWxkcmVuKCIu Y2RCdG5MIikucmVtb3ZlQ2xhc3MoZCk7YS5jaGlsZHJlbigiLmNkQnRuTSIpLnJl bW92ZUNsYXNzKGUpO2EuY2hpbGRyZW4oIi5jZEJ0blIiKS5yZW1vdmVDbGFzcyhm KX0sZW5hYmxlOmZ1bmN0aW9uKCl7VUxTMXloOjtzZWxmLmJ0bk5ld0J1dHRvbi5y ZW1vdmVDbGFzcyhjKS5yZW1vdmVDbGFzcyhnKTt0aGlzLmRpc2FibGVkPWZhbHNl fSxkaXNhYmxlOmZ1bmN0aW9uKCl7VUxTMXloOjtzZWxmLmJ0bk5ld0J1dHRvbi5h ZGRDbGFzcyhjKS5hZGRDbGFzcyhnKTt0aGlzLmRpc2FibGVkPXRydWV9LGRlc3Ry b3k6ZnVuY3Rpb24oKXtVTFMxeWg6O3ZhciBjPXRoaXM7YS53aWRnZXQucHJvdG90 eXBlLmRlc3Ryb3kuYXBwbHkoYyxhcmd1bWVudHMpO2MuYnRuSW5wdXQuY3NzKGIs Yy5pbml0aWFsRGlzcGxheSk7Yy5idG5OZXdCdXR0b24udW5iaW5kKCkucmVtb3Zl KCl9fSk7YS5leHRlbmQoYS51aS5vb2J1dHRvbix7ZGVmYXVsdHM6e21pbndpZHRo Om51bGx9fSl9KShqUXVlcnkpOyhmdW5jdGlvbihiKXtVTFMxeWg6O3ZhciBkPSJh bmNDU0FUQnRuTW91c2VEb3duIixjPSJhbmNDU0FUQnRuTW91c2VPdmVyIixhPSJj bGljayI7Yi53aWRnZXQoInVpLm9vZ3JlZW5idXR0b24iLHtfaW5pdDpmdW5jdGlv bigpe1VMUzF5aDo7dmFyIGE9dGhpcyxjPXRoaXMub3B0aW9ucyxkPWEuZWxlbWVu dDtkLmFkZENsYXNzKCJhbmNDU0FUQnRuIikuZm9jdXMoZnVuY3Rpb24oKXtVTFMx eWg6O2Eub25mb2N1cyhiKHRoaXMpKX0pLmJsdXIoZnVuY3Rpb24oKXtVTFMxeWg6 O2Eub25ibHVyKGIodGhpcykpfSkuaG92ZXIoZnVuY3Rpb24oKXtVTFMxeWg6O2Eu b25mb2N1cyhiKHRoaXMpKX0sZnVuY3Rpb24oKXtVTFMxeWg6O2Eub25ibHVyKGIo dGhpcykpfSkubW91c2Vkb3duKGZ1bmN0aW9uKCl7VUxTMXloOjthLm9ubW91c2Vk b3duKGIodGhpcykpfSkubW91c2V1cChmdW5jdGlvbigpe1VMUzF5aDo7YS5vbm1v dXNldXAoYih0aGlzKSl9KTtjLm1pbndpZHRoJiZkLmNzcygibWluLXdpZHRoIixT dHJpbmcuZm9ybWF0KCJ7MH1weCIsYy5taW53aWR0aCkpfSxvbmZvY3VzOmZ1bmN0 aW9uKGIpe1VMUzF5aDo7IWIuZGF0YShhKSYmYi5hZGRDbGFzcyhjKX0sb25ibHVy OmZ1bmN0aW9uKGIpe1VMUzF5aDo7aWYoIWIuZGF0YShhKSliLnJlbW92ZUNsYXNz KGMpO2Vsc2UgYi5jc3Moe3Bvc2l0aW9uOiJzdGF0aWMifSkuZGF0YShhLGZhbHNl KS5yZW1vdmVDbGFzcyhkKS5yZW1vdmVDbGFzcyhjKX0sb25tb3VzZWRvd246ZnVu Y3Rpb24oYil7VUxTMXloOjtiLmNzcyh7cG9zaXRpb246InJlbGF0aXZlIixsZWZ0 OiIxcHgiLHRvcDoiMXB4In0pLmRhdGEoYSx0cnVlKS5hZGRDbGFzcyhkKX0sb25t b3VzZXVwOmZ1bmN0aW9uKGIpe1VMUzF5aDo7Yi5jc3Moe3Bvc2l0aW9uOiJzdGF0 aWMifSkuZGF0YShhLGZhbHNlKS5yZW1vdmVDbGFzcyhkKX0sZW5hYmxlOmZ1bmN0 aW9uKCl7VUxTMXloOjt0aGlzLmRpc2FibGVkPWZhbHNlfSxkaXNhYmxlOmZ1bmN0 aW9uKCl7VUxTMXloOjt0aGlzLmRpc2FibGVkPXRydWV9LGRlc3Ryb3k6ZnVuY3Rp b24oKXtVTFMxeWg6O2Iud2lkZ2V0LnByb3RvdHlwZS5kZXN0cm95LmFwcGx5KHRo aXMsYXJndW1lbnRzKX19KTtiLmV4dGVuZChiLnVpLm9vZ3JlZW5idXR0b24se2Rl ZmF1bHRzOnttaW53aWR0aDpudWxsfX0pfSkoalF1ZXJ5KTtqUXVlcnkuZm4ub3V0 ZXJIVE1MPWZ1bmN0aW9uKGEpe1VMUzF5aDo7cmV0dXJuIGE/dGhpcy5iZWZvcmUo YSkucmVtb3ZlKCk6alF1ZXJ5KCI8cD4iKS5hcHBlbmQodGhpcy5lcSgwKS5jbG9u ZSgpKS5odG1sKCl9O2pRdWVyeS5mbi5IdG1sRW5jb2RlPWZ1bmN0aW9uKCl7VUxT MXloOjtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7VUxTMXloOjt2YXIgYT1q UXVlcnkodGhpcyksYj1hLmh0bWwoKTthLmh0bWwoT09VdGlsLkh0bWxFbmNvZGUo YikpfSl9O2pRdWVyeS5mbi5IdG1sRGVjb2RlPWZ1bmN0aW9uKCl7VUxTMXloOjty ZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7VUxTMXloOjt2YXIgYT1qUXVlcnko dGhpcyksYj1hLmh0bWwoKTthLmh0bWwoT09VdGlsLkh0bWxEZWNvZGUoYikpfSl9 O2pRdWVyeS5leHRlbmQoalF1ZXJ5LmV4cHJbIjoiXSx7bm90aGlkZGVuOmZ1bmN0 aW9uKGEpe1VMUzF5aDo7cmV0dXJuICEoalF1ZXJ5KGEpLmlzKCI6aGlkZGVuIil8 fGpRdWVyeShhKS5wYXJlbnRzKCI6aGlkZGVuIikubGVuZ3RoKX19KTsoZnVuY3Rp b24oYSl7VUxTMXloOjtpZighYSlyZXR1cm47YS5PT0ltYWdlPWZ1bmN0aW9uKGcs ZSxkLGgpe1VMUzF5aDo7dmFyIGY9InZpc2liaWxpdHkiLGI9bnVsbCxjPWI7aSgp O3JldHVybiBjO2Z1bmN0aW9uIGkoKXtVTFMxeWg6O3ZhciBoPSJtYXgtd2lkdGgi O2lmKHR5cGVvZiBnIT0ic3RyaW5nInx8Zz09IiIpcmV0dXJuO2M9YSgiPElNRyAv PiIpLmNzcyhmLCJoaWRkZW4iKTtpZih0eXBlb2YgZSE9Im51bWJlciJ8fGU8PTAp ZT1iO2Vsc2UgYy5jc3MoaCxlKTtpZih0eXBlb2YgZCE9Im51bWJlciJ8fGQ8PTAp ZD1iO2Vsc2UgYy5jc3MoaCxkKTtPT1V0aWwuVGltZXIoRnVuY3Rpb24uY3JlYXRl RGVsZWdhdGUodGhpcyxrKSwwKX1mdW5jdGlvbiBrKCl7VUxTMXloOjtpZihlIT1i fHxkIT1iKXt2YXIgZj1hKCI8SU1HIC8+Iik7Zi5sb2FkKGopO2YuYXR0cigic3Jj IixnKX1lbHNlIGMuYXR0cigic3JjIixnKX1mdW5jdGlvbiBqKCl7VUxTMXloOjt2 YXIgayxpLGosYSxsO2s9dGhpcy53aWR0aDtqPXRoaXMuaGVpZ2h0O2MuYXR0cigi c3JjIixnKS5jc3MoZiwidmlzaWJsZSIpO2lmKGs8PTB8fGo8PTApcmV0dXJuO2lm KGUhPWIpaT1lL2s7ZWxzZSBpPTE7aWYoZCE9YilhPWQvajtlbHNlIGE9MTtsPWZh bHNlO2lmKGE8PWkpe2lmKGE8MSl7Yy53aWR0aChrKmEpO2MuaGVpZ2h0KGQpO2w9 dHJ1ZX19ZWxzZSBpZihpPDEpe2Mud2lkdGgoZSk7Yy5oZWlnaHQoaippKTtsPXRy dWV9aWYoaCE9Yil7dmFyIG09e3c6ayxoOmosZlNjYWxlZDpsfTtGdW5jdGlvbi5j cmVhdGVDYWxsYmFjayhoLG0pLmNhbGwoKX19fX0pKGpRdWVyeSk7KGZ1bmN0aW9u KGEpe1VMUzF5aDo7aWYoIWEpcmV0dXJuO2EuZm4uT09RdWlya0NTUz1mdW5jdGlv bihhLGIpe1VMUzF5aDo7T09VdGlsLkZJc0Jyb3dzZXJJRVF1aXJrcygpJiZ0aGlz LmNzcyhhLGIpO3JldHVybiB0aGlzfX0pKGpRdWVyeSk7U2V0UGVyc2lzdGVudENv b2tpZSgidWwiLCIxIik= ------------AwZAEu8L0Fx8UXBllPLKFH Content-Disposition: inline; filename=jsonstrings.js Content-Type: text/javascript; charset=utf-8; name=jsonstrings.js Content-Location: http://office.microsoft.com/es-hn/jsonstrings.aspx?b=5567.4000&g=ActionBar Content-Transfer-Encoding: 8bit var OOUI_ActionBar={"L_EmailTitle":"Enviar el vínculo a un amigo por correo electrónico","L_EmailSend":"Enviar","L_EmailTo":"Para:","L_EmailTo_Description":"Escriba hasta cinco direcciones de correo electrónico separadas por comas.","L_EmailFrom":"Su correo electrónico:","L_EmailSubject":"Asunto:","L_EmailMessage":"Mensaje:","L_EmailDisclaimer":"Las direcciones de correo electrónico proporcionadas no se usarán con ningún otro fin. Para obtener más información, vea la {0}.","L_Email_Privacy_Link":"declaración de privacidad","L_EmailSend":"Enviar","L_EmailCancel":"Cancelar"}; if (typeof(OOUI) == 'undefined') { var OOUI = OOUI_ActionBar; OOUI_ActionBar = null; }else{ jQuery.extend(OOUI, OOUI_ActionBar); } ------------AwZAEu8L0Fx8UXBllPLKFH Content-Disposition: inline; filename=jsonstrings.js Content-Type: text/javascript; charset=utf-8; name=jsonstrings.js Content-Location: http://office.microsoft.com/es-hn/jsonstrings.aspx?b=5567.4000&g=Player Content-Transfer-Encoding: Quoted-Printable var OOUI_Player=3D{"L_VIDEO_PLAYER_MENU_MORE_ON_THIS_VIDEO":"Acerca de e= ste v=C3=ADdeo","L_VIDEO_PLAYER_MENU_VIDEO_SHARE":"Compartir este v=C3=AD= deo","L_VIDEO_PLAYER_MENU_SUBMIT_YOUR_VIDEOS":"Enviar un v=C3=ADdeo","L_= VIDEO_PLAYER_MENU_DOWNLOAD_THIS_VIDEO":"Descargar este v=C3=ADdeo","L_VI= DEO_PLAYER_LABEL_EMBED":"Insertar","L_VIDEO_PLAYER_LABEL_THUMBNAIL":"Min= iatura","L_VIDEO_PLAYER_LABEL_LINK":"V=C3=ADnculo","L_VIDEO_PLAYER_LABEL= _MOREOPTIONS":"Opciones de v=C3=ADdeo adicionales","L_VIDEO_PLAYER_MSG_V= IDEO_UNAVAILABLE":"No se puede mostrar el v=C3=ADdeo.","L_VIDEO_PLAYER_M= SG_VIDEO_NOTFOUND":"No se puede encontrar el v=C3=ADdeo.","L_VIDEO_PLAYE= R_MSG_CLOSEDCAPTIONS_UNAVAILABLE":"No se pueden mostrar los subt=C3=ADtu= los.","L_VIDEO_PLAYER_TOOLTIP_OFFICEBUTTON":"Opciones","L_VIDEO_PLAYER_T= OOLTIP_OFFICECHECKEDBUTTON":"Salir de las opciones","L_VIDEO_PLAYER_TOOL= TIP_PLAYBUTTON_PLAY":"Reproducir","L_VIDEO_PLAYER_TOOLTIP_PLAYBUTTON_PAU= SE":"Pausar","L_VIDEO_PLAYER_TOOLTIP_REWINDBUTTON":"Rebobinar","L_VIDEO_= PLAYER_TOOLTIP_SHAREBUTTON_OPEN":"Compartir","L_VIDEO_PLAYER_TOOLTIP_SHA= REBUTTON_CLOSE":"Salir del uso compartido","L_VIDEO_PLAYER_TOOLTIP_INFOB= UTTON_CLOSE":"Salir de las opciones","L_VIDEO_PLAYER_TOOLTIP_MUTEBUTTON_= MUTE":"Desactivar audio","L_VIDEO_PLAYER_TOOLTIP_MUTEBUTTON_UNMUTE":"Rea= ctivar audio","L_VIDEO_PLAYER_TOOLTIP_CCBUTTON_DISPLAY":"Mostrar t=C3=AD= tulos","L_VIDEO_PLAYER_TOOLTIP_CCBUTTON_HIDE":"Ocultar t=C3=ADtulos","L_= VIDEO_PLAYER_TOOLTIP_FULLSCREENBUTTON_OPEN":"Pantalla completa","L_VIDEO= _PLAYER_TOOLTIP_FULLSCREENBUTTON_EXIT":"Salir de la pantalla completa","= L_VIDEO_PLAYER_TOOLTIP_COPYTEXT":"Seleccionar texto y copiarlo al Portap= apeles","L_VIDEO_PLAYER_HELPTEXT_BIGPLAYBUTTON":"Reproducir v=C3=ADdeo",= "L_VIDEO_PLAYER_HELPTEXT_OFFICEBUTTON":"Informaci=C3=B3n","L_VIDEO_PLAYE= R_HELPTEXT_PLAYBUTTON":"Reproducir o pausar v=C3=ADdeo","L_VIDEO_PLAYER_= HELPTEXT_REWINDBUTTON":"Rebobinar v=C3=ADdeo","L_VIDEO_PLAYER_HELPTEXT_M= EDIASLIDER":"Control deslizante de tiempo","L_VIDEO_PLAYER_HELPTEXT_SHAR= EBUTTON":"Compartir","L_VIDEO_PLAYER_HELPTEXT_MUTEBUTTON":"Desactivar au= dio","L_VIDEO_PLAYER_HELPTEXT_VOLUMESLIDER":"Control deslizante de volum= en","L_VIDEO_PLAYER_HELPTEXT_CLOSEDCAPTIONSBUTTON":"Subt=C3=ADtulos cerr= ados","L_VIDEO_PLAYER_HELPTEXT_FULLSCREENBUTTON":"Pantalla completa","L_= VIDEO_PLAYER_HELPTEXT_EMBED":"Insertar c=C3=B3digo de v=C3=ADdeo","L_VID= EO_PLAYER_HELPTEXT_THUMBNAIL":"Direcci=C3=B3n URL de miniaturas","L_VIDE= O_PLAYER_HELPTEXT_LINK":"Direcci=C3=B3n URL de art=C3=ADculo de v=C3=ADd= eo","L_VIDEO_PLAYER_HELPTEXT_PLAYLIST_THUMBNAIL":"Reproducir {0}","L_VID= EO_PLAYER_HELPTEXT_PLAYLIST_SCROLLLEFT":"Desplazar los v=C3=ADdeos a la = izquierda","L_VIDEO_PLAYER_HELPTEXT_PLAYLIST_SCROLLRIGHT":"Desplazar los= v=C3=ADdeos a la derecha","L_VIDEO_PLAYER_HELPTEXT_ABOUTTHISVIDEO":"Ace= rca de este v=C3=ADdeo","L_VIDEO_PLAYER_HELPTEXT_SHARETHISVIDEO":"Compar= tir este v=C3=ADdeo","L_VIDEO_PLAYER_HELPTEXT_DOWNLOADTHISVIDEO":"Descar= gar este v=C3=ADdeo","L_VIDEO_PLAYER_HELPTEXT_SUBMITYOURVIDEOS":"Enviar = un v=C3=ADdeo","L_VIDEO_PLAYER_HELPTEXT_MOREVIDEOOPTIONS":"Opciones de v=