Content-Type: multipart/related; start=; boundary=----------XBLsZq9NkNLk5QAFF8cyEr Content-Location: http://www.euroresidentes.com/calendario/calendario-laboral-2016.html Subject: =?utf-8?Q?Calendario=20laboral=202016?= MIME-Version: 1.0 ------------XBLsZq9NkNLk5QAFF8cyEr Content-Disposition: inline; filename=calendario-laboral-2016.html Content-Type: text/html; charset=utf-8; name=calendario-laboral-2016.html Content-ID: Content-Location: http://www.euroresidentes.com/calendario/calendario-laboral-2016.html Content-Transfer-Encoding: 8bit Calendario laboral 2016

CALENDARIO LABORAL ESPAÑA 2016

Calendario laboral España 2016Fiestas Nacionales, Fiestas Autonómicas, Fiestas Locales, Puentes, Semana Santa

Calendario laboral 2016. Fiestas de Comunidades Autónomas y días no laborales

¡Consulte el calendario y planifique ya sus puentes y vacaciones en 2016! Viajes, Hoteles...



Si quiere buenas ideas sobre dónde ir en 2016, visite nuestro blog Viajar

x celebraciones tradicionales
x festivo en toda España
x Festivos C. Autónomas

Calendario Laboral y festivo 2016 - Novedades: día de hoy

Enero 2016

L M M J V S D
1 2 3
4
5
6
7
8
9
10
11 12 13 14
15
16
17
18 19 20 21 22 23
24
25
26
27 28 29 30 31

Día 1; Año nuevo - se traslada al día 2 en Granada, que además es la Toma de Granada.
Día 6:
Día de Reyes, fiesta nacional.
Día 20: San Sebastián, fiesta local en San Sebastián (País Vasco)
Día 20: Fiesta local en Palma de Mallorca.
Día 22: San Vicente Mártir, Fiesta patrón de Valencia, Huesca
Día 23
: San Ildefonso, fiesta local en Toledo.
Día 29: San Valero en Zaragoza

Febrero 2016

L M M J V S D
1
2
3
4
5
6
7
8 9 10 11 12
13
14
15 16 17 18 19
20
21
22 23 24
25
26
27
28
29            

Del 13/01 al 14/02
Ver también Carnaval en Santa Cruz de Tenerife.
Día 04/02/ - 14/02: Carnaval Cádiz
Las fechas de Carnaval según que en ciudad varia la fecha de inicio
Día 2: Virgen de la Candelaria en Tenerife.
Día 2: Virgen de la Calle en Palencia
Día 12:
Sta. Eulalia en Barcelona
14 de Febrero: Día de San Valentín

4 y 10: fiestas de Carnaval (jueves Lardeo,viernes Carnaval, sábado-domingo-lunes-martes carnaval, miércoles de ceniza).

Día 10: Miércoles de Ceniza en Pontevedra
.
Día 17: Martes de Carnaval en Galicia
Día 18: Miécoles de Ceniza en Pontevedra.
Día 28: Día de Andalucía, que traslada al lunes 29.

Marzo 2016

L M M J V S D
1
2
3
4
5
6
7 8 9 10 11 12
13
14
15
16 17
18
19 20
21 22 23 24 25 26 27
28 29 30 31      

Día 1: Día de les Illes Balears.
Día 5: Día de la Cincomarzada en Zaragoza.
Dia 27/02 al 6/03: Fiestas de la Magdalena en Castellón
Dia 19
: San José, Día del padre. Fiesta en: Murcia, Cdad. Valenciana, Navarra, País Vasco y Melilla.
- Fallas de Valencia - San José.

Fechas primavera:
Día 20:
Fiesta de la Comunidad Autónoma de Galicia

Semana Santa

del 24 al 27 en las Comunidades de: Andalucía, Galicia, Madrid, Aragón, Asturias, Aragón, Castilla-León, Castilla y La Mancha, Cantabria, Extremadura, Murcia, Islas Canarias, Castilla y León, Navarra, Melilla.

Del 25 al 28 en Catalunya.

Del 24 al 28 en:

Cdad Valenciana. Navarra, Islas Baleares, Álava, Cantabria, País Vasco, La Rioja, Castilla-La Mancha, Pamplona

Día 28: Lunes de Pascua de Resurección: Catalunya,
Día 28:
Día de la Comunidad de Castilla-La Mancha

Abril 2016

L M M J V S D
   
1
2
3
4
5
6
7
8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25
26
27
28
29 30  

Día 5: San Cibrán, en Pontevedra
Día 6:
Fiesta local en Murcia.
Día 7: La Santa Faz, fiesta local Alicante,
Dia 8: San Vicente Ferrer, fiesta Patrón Comunidad Valenciana. Fiesta local en Valencia.
Del 12-17:
Feria de Abril en Sevilla.
Día 23:
San Jorge, día de Aragón.
Día 23: Día de la Comunidad de Castilla y León.
Día 28: San Prudencio en Álava.
Día 29: San Jorge en Cáceres


Mayo 2016

L M M J V S D
       
1
2
3
4
5
6
7 8
9 10 11 12 13 14
15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          

Día 1: Fiesta del trabajo, festivo en toda España. Se traslada al día 2 en las siguientes Comunidades: Asturias, Andalucia, Castilla-León, Castilla-La Mancha, Extremadura, Aragón, Islas Canarias, Madrid.
Día 2: Fiesta de la Comunidad de Madrid
Día 3: Día de la Cruz, Festivo en Santa Cruz de Tenerife (capital), Puerto de la Cruz y Los Realejos...
Día 3 : Primer Domingo de Mayo: Día de la madre.
Día 11: San Anastasi fiesta local en Lérida.
Día 8: 2º Domingo de Mayo: Virgen de los Desamparados, patrona de Valencia.
Día 13: San Pedro Regalado, Valladolid
Día 15: San Isidro, fiesta en Madrid, que se traslada al lunes 16.
Día 17: Día de las Letras Galegas
Día 20:
Fiestas del Rocío en Huelva.
Día 21
: Martes de Campo en Oviedo, Asturias
Día 16: Pascua Granada, fiesta local Catalunya. Día de la Región de Castilla-La Mancha con su fiesta de la Virgen de los Alarcos
Día 25: Virgen del Mar en Santander. .
Día 26: Corpus Cristi Cdad. Castilla-Mancha, Andalucia, Toledo.
Día 30: Día de Canarias
Día 30: Día de San Fernando en Sevilla
Día 31: Día de la Cdad. Castilla-Mancha

Junio 2016

L M M J V S D
1
2
3
4
5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30      

Día 4: Corpus Christi, fiesta local en Toledo, Castilla-La Mancha, Madrid.
Día 9: Día de la Región de Murcia.
Día 9 : Día Región de La Rioja.

Día 11: San Bernabé en Logroño
Día 13:
San Juan de Sahagún en Salamanca.
Día 13: San Antonio en Ceuta.
Día 16: Pascua Granada: Catalunya.
Día 24: Fiestas de las Hogueras de San Juan, prov. Alicante.
Día 24: San Juan, Fiesta local en Catalunya, Andalucia, Extremadura, Galicia, Islas Canarias. Baleares.
Día 29: San Pedro, Fiesta en Castellón, Castilla-La Mancha, Castilla-León.

Julio 2016

L M M J V S D

 

1
2
3
4
5
6
7
8 9 10
11 12 13
14
15
16
17
18
19
20
21
22 23 24
25 26 27 28 29 30 31

Día 4: San Valentín de Berriochoa en Vizcaya.
Día 25:
Santiago Apostol, fiesta en: Galicia, Navarra, País Vasco, Cdad. Madrid, La Rioja; Pamplona. En Canarias esta fecha se pasa a diferentes fechas del año según isla. Ver final de esta página.
Día 25: Fiesta de la Comunidad de Cantabria..
Día 25:
Día Nacional de Galicia.
Día 28: Día de las Instituciones en Cantabria.
Día 31: San Ignacio de Loyola, fiesta provincial (Guipúzcoa)

Agosto 2016

L M M J V S D
1 2
3
4
5
6 7
8
9
10
11
12
13
14
15 16 17 18 19
20
21
22 23 24 25
26
27
28
29 30 31        
31            

Día 3: Fiestas Colombinas en Huelva
Día 5:
Ntra. Sra. de los Volcanes en La Palma.; Fiesta de la Vírgen Blanca en Vitoria-Gasteiz;
Día 5:
Ntra.Sra. Africa en Ceuta
Día 10:
San Lorenzo en: Huesca,
Día 15:
La Asunción de la Vírgen.Fiesta Nacional.
Día 15: Semana Grande de Bilbao (del 17 al 25)
Día 15: Semana Grande de San Sebastián (del 10 al 17)
Día 15: Fiestas patronales de la Virgen del Sagrario en Toledo
Día 16: San Roque en: Vigo,
Día 19
: Sant Magí en Tarragona
Día 19: Fiesta local en Málaga.

Día 22: Fiesta de la Octava de la Virgen del Prado en Castilla-La Mancha
Día 27: Virgen del Mar en Almería.
Día 28: Fiesta San Agustín en Zamora.


Septiembre 2016

L M M J V S D
 
1
2
3
4
5
6
7 8 9 10 11
12 13 14
15
16
17 18
19 20 21 22
23
24
25
26 27 28 29 30    

Dia 2: Día de la Ciudad Autonónoma de Ceuta
Día 2:
San Antolín en Palencia.
Día 8:
Día de Extremadura.
Día 8: Día de Asturias, la Virgen de Covadonga.
Día 8 : Fiesta Virgen de los Llanos en Albacete.
Dia 8 : Ntra. Sra. de la Peña en Gran Canaria.
Día 8: Virgen de la Vega en Salamanca.
Día 8: Virgen de Guadalupe Córdoba.
Día 8: Virgen de la Victoria en Melilla y Málaga.
Día 8: Ntra. Sra. de San Lorenzo, Valladolid
Día 8: Ntra.Sra, de la Cinta en Huelva
Día 9: Fiesta de la Almudena en Madrid.
Día 9:
Ntra. Sra. de Aranzazu Guipúzcoa.
Día 11: Fiesta de la Diada de Catalunya
Día 12: Fiesta del Sacrificio (Aid Kebir) en Melilla y Ceuta.
Día 13: San Mateo, fiesta local Oviedo
Día 13: La Bien Aparecida en Cantabria y Murcia
Día 15: Ntra. Sra. de Guadalupe en Lanzarote.
Día 15: Sta. Teresa de Jesús en Avila.
Día 17: Día de Melilla
Día 19: Día de América en Asturias, declaradas de Interés Turístico Nacional.
Día 21: San Mateo en Oviedo (Asturias), Logroño.
Día 24: La Merçé, Fiesta Mayor (local) en Barcelona, Tarragona
Día 24: Ntra. Sra. de los Reyes, en El Hierro,
Día 29: San Miguel Lleída.

Octubre 2016

L M M J V S D
1
2
3
4
5
6 7 8 9
10 11 12 13 14 15 16
17 18
19
20 21 22 23
24 25 26 27 28 29 30
31            

Día 3: Ntra. Sra. del Pino en La Gomera.
Día 3: San Saturio en Soria
Día 5: San Froilán en Lugo, León
Día 7: 80 aniversario del 1º gobierno vasco en el País Vasco.
Día 7:
Virgen del Rosario en Cádiz
Día 9
: Día de la Comunidad Valenciana.
Día 12: Día de la Hispanidad, Fiesta Nacional de España.
Día 12: Fiesta del Pilar en Zaragoza, Asturias
Día 13: Cdad. Asturiana se coge este día de festivo. .
Día 15: Fiesta de la Pascua del Sacrificio en Ceuta.
Día 18: San Lucas en Jaén, Granada
Día 24: San Rafael en Córdoba
Día 25: San Frutos en Segovia
Día 25: Día del País Vasco-Euskadiko Eguna

Noviembre 2016

L M M J V S D
1
2
3
4
5
6
7
8
9
10
11
12
13
14 15 16
17
18 19
20
21 22 23 24 25 26 27
28 29 30        

Día 1: Día de a todos los Santos. Fiesta Nacional.
Día 6
: Pascua del Sacrificio en Ceuta.
Día 9
: La Almudena, en Madrid
Día 11: San Martín fiesta en Pontevedra.

Día 25: Fiesta local en Jaén.
Día 30: San Saturnino en Pamplona.

 

Diciembre 2015

L M M J V S D
1
2
3
4
5
6
7
8
9
10
11
12 13 14 15 16 17
18
19 20 21 22 23 24 25
26 27
28
29
30
31

Día 3: San Francisco Javier: día festivo en Navarra.
Día 6: Día de la Constitución Española.
Día 8:
Día de la Inmaculada Concepción.
Día 24: Nochebuena
Dia 25: Natividad del Señor. Ver Navidad. Se traslada al 26 en las siguientes comunidades: Asturias, Madrid, Navarra, Cantabria, Extremadura, Castilla-La Mancha, Castilla-León, Murcia, Valenciana, Andalucía, Melilla, Ceuta, Aragón, Aragón.
Día 26: San Esteban, segunda fiesta de Navidad: Catalunya, Palma de Mallorca.
Día 27: Fiesta local Palma de Mallorca
Día 28: Día de los Santos Inocentes
Día 31: Nochevieja


Calendario laborales de las Comunidades Autónomas:
Fiestas locales en las islas de El Hierro, Fuerteventura, Gran Canaria, La Gomera, Lanzarote, La Palma y Tenerife la fiesta, a combio del 25 de Julio:
Otros temas relacionados con el Calendario:

Novedades en euroresidentes

Compartir en Facebook
Twitter
Google
LinkedIn
Email
------------XBLsZq9NkNLk5QAFF8cyEr Content-Disposition: inline; filename=bootstrap.css Content-Type: text/css; name=bootstrap.css Content-Location: http://www.euroresidentes.com/bootstrap/css/bootstrap.css Content-Transfer-Encoding: 8bit /*! * Bootstrap v2.3.1 * * Copyright 2012 Twitter, Inc * Licensed under the Apache License v2.0 * http://www.apache.org/licenses/LICENSE-2.0 * * Designed and built with all the love in the world @twitter by @mdo and @fat. */ .clearfix { *zoom: 1; } .clearfix:before, .clearfix:after { display: table; line-height: 0; content: ""; } .clearfix:after { clear: both; } .hide-text { font: 0/0 a; color: transparent; text-shadow: none; background-color: transparent; border: 0; } .input-block-level { display: block; width: 100%; min-height: 30px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } article, aside, details, figcaption, figure, footer, header, hgroup, nav, section { display: block; } audio, canvas, video { display: inline-block; *display: inline; *zoom: 1; } audio:not([controls]) { display: none; } html { font-size: 100%; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; } a:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } a:hover, a:active { outline: 0; } sub, sup { position: relative; font-size: 75%; line-height: 0; vertical-align: baseline; } sup { top: -0.5em; } sub { bottom: -0.25em; } img { width: auto\9; height: auto; max-width: 100%; vertical-align: middle; border: 0; -ms-interpolation-mode: bicubic; } #map_canvas img, .google-maps img { max-width: none; } button, input, select, textarea { margin: 0; font-size: 100%; vertical-align: middle; } button, input { *overflow: visible; line-height: normal; } button::-moz-focus-inner, input::-moz-focus-inner { padding: 0; border: 0; } button, html input[type="button"], input[type="reset"], input[type="submit"] { cursor: pointer; -webkit-appearance: button; } label, select, button, input[type="button"], input[type="reset"], input[type="submit"], input[type="radio"], input[type="checkbox"] { cursor: pointer; } input[type="search"] { -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; -webkit-appearance: textfield; } input[type="search"]::-webkit-search-decoration, input[type="search"]::-webkit-search-cancel-button { -webkit-appearance: none; } textarea { overflow: auto; vertical-align: top; } @media print { * { color: #000 !important; text-shadow: none !important; background: transparent !important; box-shadow: none !important; } a, a:visited { text-decoration: underline; } a[href]:after { content: " (" attr(href) ")"; } abbr[title]:after { content: " (" attr(title) ")"; } .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; } pre, blockquote { border: 1px solid #999; page-break-inside: avoid; } thead { display: table-header-group; } tr, img { page-break-inside: avoid; } img { max-width: 100% !important; } @page { margin: 0.5cm; } p, h2, h3 { orphans: 3; widows: 3; } h2, h3 { page-break-after: avoid; } } body { margin: 0; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; line-height: 20px; color: #333333; background-color: #ffffff; } a { color: #0088cc; text-decoration: none; } a:hover, a:focus { color: #005580; text-decoration: underline; } .img-rounded { -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; } .img-polaroid { padding: 4px; background-color: #fff; border: 1px solid #ccc; border: 1px solid rgba(0, 0, 0, 0.2); -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); } .img-circle { -webkit-border-radius: 500px; -moz-border-radius: 500px; border-radius: 500px; } .row { margin-left: -20px; *zoom: 1; } .row:before, .row:after { display: table; line-height: 0; content: ""; } .row:after { clear: both; } [class*="span"] { float: left; min-height: 1px; margin-left: 20px; } .container, .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { width: 940px; } .span12 { width: 940px; } .span11 { width: 860px; } .span10 { width: 780px; } .span9 { width: 700px; } .span8 { width: 620px; } .span7 { width: 540px; } .span6 { width: 460px; } .span5 { width: 380px; } .span4 { width: 300px; } .span3 { width: 220px; } .span2 { width: 140px; } .span1 { width: 60px; } .offset12 { margin-left: 980px; } .offset11 { margin-left: 900px; } .offset10 { margin-left: 820px; } .offset9 { margin-left: 740px; } .offset8 { margin-left: 660px; } .offset7 { margin-left: 580px; } .offset6 { margin-left: 500px; } .offset5 { margin-left: 420px; } .offset4 { margin-left: 340px; } .offset3 { margin-left: 260px; } .offset2 { margin-left: 180px; } .offset1 { margin-left: 100px; } .row-fluid { width: 100%; *zoom: 1; } .row-fluid:before, .row-fluid:after { display: table; line-height: 0; content: ""; } .row-fluid:after { clear: both; } .row-fluid [class*="span"] { display: block; float: left; width: 100%; min-height: 30px; margin-left: 2.127659574468085%; *margin-left: 2.074468085106383%; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .row-fluid [class*="span"]:first-child { margin-left: 0; } .row-fluid .controls-row [class*="span"] + [class*="span"] { margin-left: 2.127659574468085%; } .row-fluid .span12 { width: 100%; *width: 99.94680851063829%; } .row-fluid .span11 { width: 91.48936170212765%; *width: 91.43617021276594%; } .row-fluid .span10 { width: 82.97872340425532%; *width: 82.92553191489361%; } .row-fluid .span9 { width: 74.46808510638297%; *width: 74.41489361702126%; } .row-fluid .span8 { width: 65.95744680851064%; *width: 65.90425531914893%; } .row-fluid .span7 { width: 57.44680851063829%; *width: 57.39361702127659%; } .row-fluid .span6 { width: 48.93617021276595%; *width: 48.88297872340425%; } .row-fluid .span5 { width: 40.42553191489362%; *width: 40.37234042553192%; } .row-fluid .span4 { width: 31.914893617021278%; *width: 31.861702127659576%; } .row-fluid .span3 { width: 23.404255319148934%; *width: 23.351063829787233%; } .row-fluid .span2 { width: 14.893617021276595%; *width: 14.840425531914894%; } .row-fluid .span1 { width: 6.382978723404255%; *width: 6.329787234042553%; } .row-fluid .offset12 { margin-left: 104.25531914893617%; *margin-left: 104.14893617021275%; } .row-fluid .offset12:first-child { margin-left: 102.12765957446808%; *margin-left: 102.02127659574467%; } .row-fluid .offset11 { margin-left: 95.74468085106382%; *margin-left: 95.6382978723404%; } .row-fluid .offset11:first-child { margin-left: 93.61702127659574%; *margin-left: 93.51063829787232%; } .row-fluid .offset10 { margin-left: 87.23404255319149%; *margin-left: 87.12765957446807%; } .row-fluid .offset10:first-child { margin-left: 85.1063829787234%; *margin-left: 84.99999999999999%; } .row-fluid .offset9 { margin-left: 78.72340425531914%; *margin-left: 78.61702127659572%; } .row-fluid .offset9:first-child { margin-left: 76.59574468085106%; *margin-left: 76.48936170212764%; } .row-fluid .offset8 { margin-left: 70.2127659574468%; *margin-left: 70.10638297872339%; } .row-fluid .offset8:first-child { margin-left: 68.08510638297872%; *margin-left: 67.9787234042553%; } .row-fluid .offset7 { margin-left: 61.70212765957446%; *margin-left: 61.59574468085106%; } .row-fluid .offset7:first-child { margin-left: 59.574468085106375%; *margin-left: 59.46808510638297%; } .row-fluid .offset6 { margin-left: 53.191489361702125%; *margin-left: 53.085106382978715%; } .row-fluid .offset6:first-child { margin-left: 51.063829787234035%; *margin-left: 50.95744680851063%; } .row-fluid .offset5 { margin-left: 44.68085106382979%; *margin-left: 44.57446808510638%; } .row-fluid .offset5:first-child { margin-left: 42.5531914893617%; *margin-left: 42.4468085106383%; } .row-fluid .offset4 { margin-left: 36.170212765957444%; *margin-left: 36.06382978723405%; } .row-fluid .offset4:first-child { margin-left: 34.04255319148936%; *margin-left: 33.93617021276596%; } .row-fluid .offset3 { margin-left: 27.659574468085104%; *margin-left: 27.5531914893617%; } .row-fluid .offset3:first-child { margin-left: 25.53191489361702%; *margin-left: 25.425531914893618%; } .row-fluid .offset2 { margin-left: 19.148936170212764%; *margin-left: 19.04255319148936%; } .row-fluid .offset2:first-child { margin-left: 17.02127659574468%; *margin-left: 16.914893617021278%; } .row-fluid .offset1 { margin-left: 10.638297872340425%; *margin-left: 10.53191489361702%; } .row-fluid .offset1:first-child { margin-left: 8.51063829787234%; *margin-left: 8.404255319148938%; } [class*="span"].hide, .row-fluid [class*="span"].hide { display: none; } [class*="span"].pull-right, .row-fluid [class*="span"].pull-right { float: right; } .container { margin-right: auto; margin-left: auto; *zoom: 1; } .container:before, .container:after { display: table; line-height: 0; content: ""; } .container:after { clear: both; } .container-fluid { padding-right: 20px; padding-left: 20px; *zoom: 1; } .container-fluid:before, .container-fluid:after { display: table; line-height: 0; content: ""; } .container-fluid:after { clear: both; } p { margin: 0 0 10px; } .lead { margin-bottom: 20px; font-size: 21px; font-weight: 200; line-height: 30px; } small { font-size: 85%; } strong { font-weight: bold; } em { font-style: italic; } cite { font-style: normal; } .muted { color: #999999; } a.muted:hover, a.muted:focus { color: #808080; } .text-warning { color: #c09853; } a.text-warning:hover, a.text-warning:focus { color: #a47e3c; } .text-error { color: #b94a48; } a.text-error:hover, a.text-error:focus { color: #953b39; } .text-info { color: #3a87ad; } a.text-info:hover, a.text-info:focus { color: #2d6987; } .text-success { color: #468847; } a.text-success:hover, a.text-success:focus { color: #356635; } .text-left { text-align: left; } .text-right { text-align: right; } .text-center { text-align: center; } h1, h2, h3, h4, h5, h6 { margin: 10px 0; font-family: inherit; font-weight: bold; line-height: 20px; color: inherit; text-rendering: optimizelegibility; } h1 small, h2 small, h3 small, h4 small, h5 small, h6 small { font-weight: normal; line-height: 1; color: #999999; } h1, h2, h3 { line-height: 40px; } h1 { font-size: 38.5px; } h2 { font-size: 31.5px; } h3 { font-size: 24.5px; } h4 { font-size: 17.5px; } h5 { font-size: 14px; } h6 { font-size: 11.9px; } h1 small { font-size: 24.5px; } h2 small { font-size: 17.5px; } h3 small { font-size: 14px; } h4 small { font-size: 14px; } .page-header { padding-bottom: 9px; margin: 20px 0 30px; border-bottom: 1px solid #eeeeee; } ul, ol { padding: 0; margin: 0 0 10px 25px; } ul ul, ul ol, ol ol, ol ul { margin-bottom: 0; } li { line-height: 20px; } ul.unstyled, ol.unstyled { margin-left: 0; list-style: none; } ul.inline, ol.inline { margin-left: 0; list-style: none; } ul.inline > li, ol.inline > li { display: inline-block; *display: inline; padding-right: 5px; padding-left: 5px; *zoom: 1; } dl { margin-bottom: 20px; } dt, dd { line-height: 20px; } dt { font-weight: bold; } dd { margin-left: 10px; } .dl-horizontal { *zoom: 1; } .dl-horizontal:before, .dl-horizontal:after { display: table; line-height: 0; content: ""; } .dl-horizontal:after { clear: both; } .dl-horizontal dt { float: left; width: 160px; overflow: hidden; clear: left; text-align: right; text-overflow: ellipsis; white-space: nowrap; } .dl-horizontal dd { margin-left: 180px; } hr { margin: 20px 0; border: 0; border-top: 1px solid #eeeeee; border-bottom: 1px solid #ffffff; } abbr[title], abbr[data-original-title] { cursor: help; border-bottom: 1px dotted #999999; } abbr.initialism { font-size: 90%; text-transform: uppercase; } blockquote { padding: 0 0 0 15px; margin: 0 0 20px; border-left: 5px solid #eeeeee; } blockquote p { margin-bottom: 0; font-size: 17.5px; font-weight: 300; line-height: 1.25; } blockquote small { display: block; line-height: 20px; color: #999999; } blockquote small:before { content: '\2014 \00A0'; } blockquote.pull-right { float: right; padding-right: 15px; padding-left: 0; border-right: 5px solid #eeeeee; border-left: 0; } blockquote.pull-right p, blockquote.pull-right small { text-align: right; } blockquote.pull-right small:before { content: ''; } blockquote.pull-right small:after { content: '\00A0 \2014'; } q:before, q:after, blockquote:before, blockquote:after { content: ""; } address { display: block; margin-bottom: 20px; font-style: normal; line-height: 20px; } code, pre { padding: 0 3px 2px; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 12px; color: #333333; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } code { padding: 2px 4px; color: #d14; white-space: nowrap; background-color: #f7f7f9; border: 1px solid #e1e1e8; } pre { display: block; padding: 9.5px; margin: 0 0 10px; font-size: 13px; line-height: 20px; word-break: break-all; word-wrap: break-word; white-space: pre; white-space: pre-wrap; background-color: #f5f5f5; border: 1px solid #ccc; border: 1px solid rgba(0, 0, 0, 0.15); -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } pre.prettyprint { margin-bottom: 20px; } pre code { padding: 0; color: inherit; white-space: pre; white-space: pre-wrap; background-color: transparent; border: 0; } .pre-scrollable { max-height: 340px; overflow-y: scroll; } form { margin: 0 0 20px; } fieldset { padding: 0; margin: 0; border: 0; } legend { display: block; width: 100%; padding: 0; margin-bottom: 20px; font-size: 21px; line-height: 40px; color: #333333; border: 0; border-bottom: 1px solid #e5e5e5; } legend small { font-size: 15px; color: #999999; } label, input, button, select, textarea { font-size: 14px; font-weight: normal; line-height: 20px; } input, button, select, textarea { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; } label { display: block; margin-bottom: 5px; } select, textarea, input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], input[type="time"], input[type="week"], input[type="number"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], input[type="color"], .uneditable-input { display: inline-block; height: 20px; padding: 4px 6px; margin-bottom: 10px; font-size: 14px; line-height: 20px; color: #555555; vertical-align: middle; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } input, textarea, .uneditable-input { width: 206px; } textarea { height: auto; } textarea, input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], input[type="time"], input[type="week"], input[type="number"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], input[type="color"], .uneditable-input { background-color: #ffffff; border: 1px solid #cccccc; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; -moz-transition: border linear 0.2s, box-shadow linear 0.2s; -o-transition: border linear 0.2s, box-shadow linear 0.2s; transition: border linear 0.2s, box-shadow linear 0.2s; } textarea:focus, input[type="text"]:focus, input[type="password"]:focus, input[type="datetime"]:focus, input[type="datetime-local"]:focus, input[type="date"]:focus, input[type="month"]:focus, input[type="time"]:focus, input[type="week"]:focus, input[type="number"]:focus, input[type="email"]:focus, input[type="url"]:focus, input[type="search"]:focus, input[type="tel"]:focus, input[type="color"]:focus, .uneditable-input:focus { border-color: rgba(82, 168, 236, 0.8); outline: 0; outline: thin dotted \9; /* IE6-9 */ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); } input[type="radio"], input[type="checkbox"] { margin: 4px 0 0; margin-top: 1px \9; *margin-top: 0; line-height: normal; } input[type="file"], input[type="image"], input[type="submit"], input[type="reset"], input[type="button"], input[type="radio"], input[type="checkbox"] { width: auto; } select, input[type="file"] { height: 30px; /* In IE7, the height of the select element cannot be changed by height, only font-size */ *margin-top: 4px; /* For IE7, add top margin to align select with labels */ line-height: 30px; } select { width: 220px; background-color: #ffffff; border: 1px solid #cccccc; } select[multiple], select[size] { height: auto; } select:focus, input[type="file"]:focus, input[type="radio"]:focus, input[type="checkbox"]:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } .uneditable-input, .uneditable-textarea { color: #999999; cursor: not-allowed; background-color: #fcfcfc; border-color: #cccccc; -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); } .uneditable-input { overflow: hidden; white-space: nowrap; } .uneditable-textarea { width: auto; height: auto; } input:-moz-placeholder, textarea:-moz-placeholder { color: #999999; } input:-ms-input-placeholder, textarea:-ms-input-placeholder { color: #999999; } input::-webkit-input-placeholder, textarea::-webkit-input-placeholder { color: #999999; } .radio, .checkbox { min-height: 20px; padding-left: 20px; } .radio input[type="radio"], .checkbox input[type="checkbox"] { float: left; margin-left: -20px; } .controls > .radio:first-child, .controls > .checkbox:first-child { padding-top: 5px; } .radio.inline, .checkbox.inline { display: inline-block; padding-top: 5px; margin-bottom: 0; vertical-align: middle; } .radio.inline + .radio.inline, .checkbox.inline + .checkbox.inline { margin-left: 10px; } .input-mini { width: 60px; } .input-small { width: 90px; } .input-medium { width: 150px; } .input-large { width: 210px; } .input-xlarge { width: 270px; } .input-xxlarge { width: 530px; } input[class*="span"], select[class*="span"], textarea[class*="span"], .uneditable-input[class*="span"], .row-fluid input[class*="span"], .row-fluid select[class*="span"], .row-fluid textarea[class*="span"], .row-fluid .uneditable-input[class*="span"] { float: none; margin-left: 0; } .input-append input[class*="span"], .input-append .uneditable-input[class*="span"], .input-prepend input[class*="span"], .input-prepend .uneditable-input[class*="span"], .row-fluid input[class*="span"], .row-fluid select[class*="span"], .row-fluid textarea[class*="span"], .row-fluid .uneditable-input[class*="span"], .row-fluid .input-prepend [class*="span"], .row-fluid .input-append [class*="span"] { display: inline-block; } input, textarea, .uneditable-input { margin-left: 0; } .controls-row [class*="span"] + [class*="span"] { margin-left: 20px; } input.span12, textarea.span12, .uneditable-input.span12 { width: 926px; } input.span11, textarea.span11, .uneditable-input.span11 { width: 846px; } input.span10, textarea.span10, .uneditable-input.span10 { width: 766px; } input.span9, textarea.span9, .uneditable-input.span9 { width: 686px; } input.span8, textarea.span8, .uneditable-input.span8 { width: 606px; } input.span7, textarea.span7, .uneditable-input.span7 { width: 526px; } input.span6, textarea.span6, .uneditable-input.span6 { width: 446px; } input.span5, textarea.span5, .uneditable-input.span5 { width: 366px; } input.span4, textarea.span4, .uneditable-input.span4 { width: 286px; } input.span3, textarea.span3, .uneditable-input.span3 { width: 206px; } input.span2, textarea.span2, .uneditable-input.span2 { width: 126px; } input.span1, textarea.span1, .uneditable-input.span1 { width: 46px; } .controls-row { *zoom: 1; } .controls-row:before, .controls-row:after { display: table; line-height: 0; content: ""; } .controls-row:after { clear: both; } .controls-row [class*="span"], .row-fluid .controls-row [class*="span"] { float: left; } .controls-row .checkbox[class*="span"], .controls-row .radio[class*="span"] { padding-top: 5px; } input[disabled], select[disabled], textarea[disabled], input[readonly], select[readonly], textarea[readonly] { cursor: not-allowed; background-color: #eeeeee; } input[type="radio"][disabled], input[type="checkbox"][disabled], input[type="radio"][readonly], input[type="checkbox"][readonly] { background-color: transparent; } .control-group.warning .control-label, .control-group.warning .help-block, .control-group.warning .help-inline { color: #c09853; } .control-group.warning .checkbox, .control-group.warning .radio, .control-group.warning input, .control-group.warning select, .control-group.warning textarea { color: #c09853; } .control-group.warning input, .control-group.warning select, .control-group.warning textarea { border-color: #c09853; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); } .control-group.warning input:focus, .control-group.warning select:focus, .control-group.warning textarea:focus { border-color: #a47e3c; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; } .control-group.warning .input-prepend .add-on, .control-group.warning .input-append .add-on { color: #c09853; background-color: #fcf8e3; border-color: #c09853; } .control-group.error .control-label, .control-group.error .help-block, .control-group.error .help-inline { color: #b94a48; } .control-group.error .checkbox, .control-group.error .radio, .control-group.error input, .control-group.error select, .control-group.error textarea { color: #b94a48; } .control-group.error input, .control-group.error select, .control-group.error textarea { border-color: #b94a48; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); } .control-group.error input:focus, .control-group.error select:focus, .control-group.error textarea:focus { border-color: #953b39; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; } .control-group.error .input-prepend .add-on, .control-group.error .input-append .add-on { color: #b94a48; background-color: #f2dede; border-color: #b94a48; } .control-group.success .control-label, .control-group.success .help-block, .control-group.success .help-inline { color: #468847; } .control-group.success .checkbox, .control-group.success .radio, .control-group.success input, .control-group.success select, .control-group.success textarea { color: #468847; } .control-group.success input, .control-group.success select, .control-group.success textarea { border-color: #468847; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); } .control-group.success input:focus, .control-group.success select:focus, .control-group.success textarea:focus { border-color: #356635; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; } .control-group.success .input-prepend .add-on, .control-group.success .input-append .add-on { color: #468847; background-color: #dff0d8; border-color: #468847; } .control-group.info .control-label, .control-group.info .help-block, .control-group.info .help-inline { color: #3a87ad; } .control-group.info .checkbox, .control-group.info .radio, .control-group.info input, .control-group.info select, .control-group.info textarea { color: #3a87ad; } .control-group.info input, .control-group.info select, .control-group.info textarea { border-color: #3a87ad; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); } .control-group.info input:focus, .control-group.info select:focus, .control-group.info textarea:focus { border-color: #2d6987; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; } .control-group.info .input-prepend .add-on, .control-group.info .input-append .add-on { color: #3a87ad; background-color: #d9edf7; border-color: #3a87ad; } input:focus:invalid, textarea:focus:invalid, select:focus:invalid { color: #b94a48; border-color: #ee5f5b; } input:focus:invalid:focus, textarea:focus:invalid:focus, select:focus:invalid:focus { border-color: #e9322d; -webkit-box-shadow: 0 0 6px #f8b9b7; -moz-box-shadow: 0 0 6px #f8b9b7; box-shadow: 0 0 6px #f8b9b7; } .form-actions { padding: 19px 20px 20px; margin-top: 20px; margin-bottom: 20px; background-color: #f5f5f5; border-top: 1px solid #e5e5e5; *zoom: 1; } .form-actions:before, .form-actions:after { display: table; line-height: 0; content: ""; } .form-actions:after { clear: both; } .help-block, .help-inline { color: #595959; } .help-block { display: block; margin-bottom: 10px; } .help-inline { display: inline-block; *display: inline; padding-left: 5px; vertical-align: middle; *zoom: 1; } .input-append, .input-prepend { display: inline-block; margin-bottom: 10px; font-size: 0; white-space: nowrap; vertical-align: middle; } .input-append input, .input-prepend input, .input-append select, .input-prepend select, .input-append .uneditable-input, .input-prepend .uneditable-input, .input-append .dropdown-menu, .input-prepend .dropdown-menu, .input-append .popover, .input-prepend .popover { font-size: 14px; } .input-append input, .input-prepend input, .input-append select, .input-prepend select, .input-append .uneditable-input, .input-prepend .uneditable-input { position: relative; margin-bottom: 0; *margin-left: 0; vertical-align: top; -webkit-border-radius: 0 4px 4px 0; -moz-border-radius: 0 4px 4px 0; border-radius: 0 4px 4px 0; } .input-append input:focus, .input-prepend input:focus, .input-append select:focus, .input-prepend select:focus, .input-append .uneditable-input:focus, .input-prepend .uneditable-input:focus { z-index: 2; } .input-append .add-on, .input-prepend .add-on { display: inline-block; width: auto; height: 20px; min-width: 16px; padding: 4px 5px; font-size: 14px; font-weight: normal; line-height: 20px; text-align: center; text-shadow: 0 1px 0 #ffffff; background-color: #eeeeee; border: 1px solid #ccc; } .input-append .add-on, .input-prepend .add-on, .input-append .btn, .input-prepend .btn, .input-append .btn-group > .dropdown-toggle, .input-prepend .btn-group > .dropdown-toggle { vertical-align: top; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .input-append .active, .input-prepend .active { background-color: #a9dba9; border-color: #46a546; } .input-prepend .add-on, .input-prepend .btn { margin-right: -1px; } .input-prepend .add-on:first-child, .input-prepend .btn:first-child { -webkit-border-radius: 4px 0 0 4px; -moz-border-radius: 4px 0 0 4px; border-radius: 4px 0 0 4px; } .input-append input, .input-append select, .input-append .uneditable-input { -webkit-border-radius: 4px 0 0 4px; -moz-border-radius: 4px 0 0 4px; border-radius: 4px 0 0 4px; } .input-append input + .btn-group .btn:last-child, .input-append select + .btn-group .btn:last-child, .input-append .uneditable-input + .btn-group .btn:last-child { -webkit-border-radius: 0 4px 4px 0; -moz-border-radius: 0 4px 4px 0; border-radius: 0 4px 4px 0; } .input-append .add-on, .input-append .btn, .input-append .btn-group { margin-left: -1px; } .input-append .add-on:last-child, .input-append .btn:last-child, .input-append .btn-group:last-child > .dropdown-toggle { -webkit-border-radius: 0 4px 4px 0; -moz-border-radius: 0 4px 4px 0; border-radius: 0 4px 4px 0; } .input-prepend.input-append input, .input-prepend.input-append select, .input-prepend.input-append .uneditable-input { -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .input-prepend.input-append input + .btn-group .btn, .input-prepend.input-append select + .btn-group .btn, .input-prepend.input-append .uneditable-input + .btn-group .btn { -webkit-border-radius: 0 4px 4px 0; -moz-border-radius: 0 4px 4px 0; border-radius: 0 4px 4px 0; } .input-prepend.input-append .add-on:first-child, .input-prepend.input-append .btn:first-child { margin-right: -1px; -webkit-border-radius: 4px 0 0 4px; -moz-border-radius: 4px 0 0 4px; border-radius: 4px 0 0 4px; } .input-prepend.input-append .add-on:last-child, .input-prepend.input-append .btn:last-child { margin-left: -1px; -webkit-border-radius: 0 4px 4px 0; -moz-border-radius: 0 4px 4px 0; border-radius: 0 4px 4px 0; } .input-prepend.input-append .btn-group:first-child { margin-left: 0; } input.search-query { padding-right: 14px; padding-right: 4px \9; padding-left: 14px; padding-left: 4px \9; /* IE7-8 doesn't have border-radius, so don't indent the padding */ margin-bottom: 0; -webkit-border-radius: 15px; -moz-border-radius: 15px; border-radius: 15px; } /* Allow for input prepend/append in search forms */ .form-search .input-append .search-query, .form-search .input-prepend .search-query { -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .form-search .input-append .search-query { -webkit-border-radius: 14px 0 0 14px; -moz-border-radius: 14px 0 0 14px; border-radius: 14px 0 0 14px; } .form-search .input-append .btn { -webkit-border-radius: 0 14px 14px 0; -moz-border-radius: 0 14px 14px 0; border-radius: 0 14px 14px 0; } .form-search .input-prepend .search-query { -webkit-border-radius: 0 14px 14px 0; -moz-border-radius: 0 14px 14px 0; border-radius: 0 14px 14px 0; } .form-search .input-prepend .btn { -webkit-border-radius: 14px 0 0 14px; -moz-border-radius: 14px 0 0 14px; border-radius: 14px 0 0 14px; } .form-search input, .form-inline input, .form-horizontal input, .form-search textarea, .form-inline textarea, .form-horizontal textarea, .form-search select, .form-inline select, .form-horizontal select, .form-search .help-inline, .form-inline .help-inline, .form-horizontal .help-inline, .form-search .uneditable-input, .form-inline .uneditable-input, .form-horizontal .uneditable-input, .form-search .input-prepend, .form-inline .input-prepend, .form-horizontal .input-prepend, .form-search .input-append, .form-inline .input-append, .form-horizontal .input-append { display: inline-block; *display: inline; margin-bottom: 0; vertical-align: middle; *zoom: 1; } .form-search .hide, .form-inline .hide, .form-horizontal .hide { display: none; } .form-search label, .form-inline label, .form-search .btn-group, .form-inline .btn-group { display: inline-block; } .form-search .input-append, .form-inline .input-append, .form-search .input-prepend, .form-inline .input-prepend { margin-bottom: 0; } .form-search .radio, .form-search .checkbox, .form-inline .radio, .form-inline .checkbox { padding-left: 0; margin-bottom: 0; vertical-align: middle; } .form-search .radio input[type="radio"], .form-search .checkbox input[type="checkbox"], .form-inline .radio input[type="radio"], .form-inline .checkbox input[type="checkbox"] { float: left; margin-right: 3px; margin-left: 0; } .control-group { margin-bottom: 10px; } legend + .control-group { margin-top: 20px; -webkit-margin-top-collapse: separate; } .form-horizontal .control-group { margin-bottom: 20px; *zoom: 1; } .form-horizontal .control-group:before, .form-horizontal .control-group:after { display: table; line-height: 0; content: ""; } .form-horizontal .control-group:after { clear: both; } .form-horizontal .control-label { float: left; width: 160px; padding-top: 5px; text-align: right; } .form-horizontal .controls { *display: inline-block; *padding-left: 20px; margin-left: 180px; *margin-left: 0; } .form-horizontal .controls:first-child { *padding-left: 180px; } .form-horizontal .help-block { margin-bottom: 0; } .form-horizontal input + .help-block, .form-horizontal select + .help-block, .form-horizontal textarea + .help-block, .form-horizontal .uneditable-input + .help-block, .form-horizontal .input-prepend + .help-block, .form-horizontal .input-append + .help-block { margin-top: 10px; } .form-horizontal .form-actions { padding-left: 180px; } table { max-width: 100%; background-color: transparent; border-collapse: collapse; border-spacing: 0; } .table { width: 100%; margin-bottom: 20px; } .table th, .table td { padding: 8px; line-height: 20px; text-align: left; vertical-align: top; border-top: 1px solid #dddddd; } .table th { font-weight: bold; } .table thead th { vertical-align: bottom; } .table caption + thead tr:first-child th, .table caption + thead tr:first-child td, .table colgroup + thead tr:first-child th, .table colgroup + thead tr:first-child td, .table thead:first-child tr:first-child th, .table thead:first-child tr:first-child td { border-top: 0; } .table tbody + tbody { border-top: 2px solid #dddddd; } .table .table { background-color: #ffffff; } .table-condensed th, .table-condensed td { padding: 4px 5px; } .table-bordered { border: 1px solid #dddddd; border-collapse: separate; *border-collapse: collapse; border-left: 0; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .table-bordered th, .table-bordered td { border-left: 1px solid #dddddd; } .table-bordered caption + thead tr:first-child th, .table-bordered caption + tbody tr:first-child th, .table-bordered caption + tbody tr:first-child td, .table-bordered colgroup + thead tr:first-child th, .table-bordered colgroup + tbody tr:first-child th, .table-bordered colgroup + tbody tr:first-child td, .table-bordered thead:first-child tr:first-child th, .table-bordered tbody:first-child tr:first-child th, .table-bordered tbody:first-child tr:first-child td { border-top: 0; } .table-bordered thead:first-child tr:first-child > th:first-child, .table-bordered tbody:first-child tr:first-child > td:first-child, .table-bordered tbody:first-child tr:first-child > th:first-child { -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-topleft: 4px; } .table-bordered thead:first-child tr:first-child > th:last-child, .table-bordered tbody:first-child tr:first-child > td:last-child, .table-bordered tbody:first-child tr:first-child > th:last-child { -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; -moz-border-radius-topright: 4px; } .table-bordered thead:last-child tr:last-child > th:first-child, .table-bordered tbody:last-child tr:last-child > td:first-child, .table-bordered tbody:last-child tr:last-child > th:first-child, .table-bordered tfoot:last-child tr:last-child > td:first-child, .table-bordered tfoot:last-child tr:last-child > th:first-child { -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -moz-border-radius-bottomleft: 4px; } .table-bordered thead:last-child tr:last-child > th:last-child, .table-bordered tbody:last-child tr:last-child > td:last-child, .table-bordered tbody:last-child tr:last-child > th:last-child, .table-bordered tfoot:last-child tr:last-child > td:last-child, .table-bordered tfoot:last-child tr:last-child > th:last-child { -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; -moz-border-radius-bottomright: 4px; } .table-bordered tfoot + tbody:last-child tr:last-child td:first-child { -webkit-border-bottom-left-radius: 0; border-bottom-left-radius: 0; -moz-border-radius-bottomleft: 0; } .table-bordered tfoot + tbody:last-child tr:last-child td:last-child { -webkit-border-bottom-right-radius: 0; border-bottom-right-radius: 0; -moz-border-radius-bottomright: 0; } .table-bordered caption + thead tr:first-child th:first-child, .table-bordered caption + tbody tr:first-child td:first-child, .table-bordered colgroup + thead tr:first-child th:first-child, .table-bordered colgroup + tbody tr:first-child td:first-child { -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-topleft: 4px; } .table-bordered caption + thead tr:first-child th:last-child, .table-bordered caption + tbody tr:first-child td:last-child, .table-bordered colgroup + thead tr:first-child th:last-child, .table-bordered colgroup + tbody tr:first-child td:last-child { -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; -moz-border-radius-topright: 4px; } .table-striped tbody > tr:nth-child(odd) > td, .table-striped tbody > tr:nth-child(odd) > th { background-color: #f9f9f9; } .table-hover tbody tr:hover > td, .table-hover tbody tr:hover > th { background-color: #f5f5f5; } table td[class*="span"], table th[class*="span"], .row-fluid table td[class*="span"], .row-fluid table th[class*="span"] { display: table-cell; float: none; margin-left: 0; } .table td.span1, .table th.span1 { float: none; width: 44px; margin-left: 0; } .table td.span2, .table th.span2 { float: none; width: 124px; margin-left: 0; } .table td.span3, .table th.span3 { float: none; width: 204px; margin-left: 0; } .table td.span4, .table th.span4 { float: none; width: 284px; margin-left: 0; } .table td.span5, .table th.span5 { float: none; width: 364px; margin-left: 0; } .table td.span6, .table th.span6 { float: none; width: 444px; margin-left: 0; } .table td.span7, .table th.span7 { float: none; width: 524px; margin-left: 0; } .table td.span8, .table th.span8 { float: none; width: 604px; margin-left: 0; } .table td.span9, .table th.span9 { float: none; width: 684px; margin-left: 0; } .table td.span10, .table th.span10 { float: none; width: 764px; margin-left: 0; } .table td.span11, .table th.span11 { float: none; width: 844px; margin-left: 0; } .table td.span12, .table th.span12 { float: none; width: 924px; margin-left: 0; } .table tbody tr.success > td { background-color: #dff0d8; } .table tbody tr.error > td { background-color: #f2dede; } .table tbody tr.warning > td { background-color: #fcf8e3; } .table tbody tr.info > td { background-color: #d9edf7; } .table-hover tbody tr.success:hover > td { background-color: #d0e9c6; } .table-hover tbody tr.error:hover > td { background-color: #ebcccc; } .table-hover tbody tr.warning:hover > td { background-color: #faf2cc; } .table-hover tbody tr.info:hover > td { background-color: #c4e3f3; } [class^="icon-"], [class*=" icon-"] { display: inline-block; width: 14px; height: 14px; margin-top: 1px; *margin-right: .3em; line-height: 14px; vertical-align: text-top; background-image: url("../img/glyphicons-halflings.png"); background-position: 14px 14px; background-repeat: no-repeat; } /* White icons with optional class, or on hover/focus/active states of certain elements */ .icon-white, .nav-pills > .active > a > [class^="icon-"], .nav-pills > .active > a > [class*=" icon-"], .nav-list > .active > a > [class^="icon-"], .nav-list > .active > a > [class*=" icon-"], .navbar-inverse .nav > .active > a > [class^="icon-"], .navbar-inverse .nav > .active > a > [class*=" icon-"], .dropdown-menu > li > a:hover > [class^="icon-"], .dropdown-menu > li > a:focus > [class^="icon-"], .dropdown-menu > li > a:hover > [class*=" icon-"], .dropdown-menu > li > a:focus > [class*=" icon-"], .dropdown-menu > .active > a > [class^="icon-"], .dropdown-menu > .active > a > [class*=" icon-"], .dropdown-submenu:hover > a > [class^="icon-"], .dropdown-submenu:focus > a > [class^="icon-"], .dropdown-submenu:hover > a > [class*=" icon-"], .dropdown-submenu:focus > a > [class*=" icon-"] { background-image: url("../img/glyphicons-halflings-white.png"); } .icon-glass { background-position: 0 0; } .icon-music { background-position: -24px 0; } .icon-search { background-position: -48px 0; } .icon-envelope { background-position: -72px 0; } .icon-heart { background-position: -96px 0; } .icon-star { background-position: -120px 0; } .icon-star-empty { background-position: -144px 0; } .icon-user { background-position: -168px 0; } .icon-film { background-position: -192px 0; } .icon-th-large { background-position: -216px 0; } .icon-th { background-position: -240px 0; } .icon-th-list { background-position: -264px 0; } .icon-ok { background-position: -288px 0; } .icon-remove { background-position: -312px 0; } .icon-zoom-in { background-position: -336px 0; } .icon-zoom-out { background-position: -360px 0; } .icon-off { background-position: -384px 0; } .icon-signal { background-position: -408px 0; } .icon-cog { background-position: -432px 0; } .icon-trash { background-position: -456px 0; } .icon-home { background-position: 0 -24px; } .icon-file { background-position: -24px -24px; } .icon-time { background-position: -48px -24px; } .icon-road { background-position: -72px -24px; } .icon-download-alt { background-position: -96px -24px; } .icon-download { background-position: -120px -24px; } .icon-upload { background-position: -144px -24px; } .icon-inbox { background-position: -168px -24px; } .icon-play-circle { background-position: -192px -24px; } .icon-repeat { background-position: -216px -24px; } .icon-refresh { background-position: -240px -24px; } .icon-list-alt { background-position: -264px -24px; } .icon-lock { background-position: -287px -24px; } .icon-flag { background-position: -312px -24px; } .icon-headphones { background-position: -336px -24px; } .icon-volume-off { background-position: -360px -24px; } .icon-volume-down { background-position: -384px -24px; } .icon-volume-up { background-position: -408px -24px; } .icon-qrcode { background-position: -432px -24px; } .icon-barcode { background-position: -456px -24px; } .icon-tag { background-position: 0 -48px; } .icon-tags { background-position: -25px -48px; } .icon-book { background-position: -48px -48px; } .icon-bookmark { background-position: -72px -48px; } .icon-print { background-position: -96px -48px; } .icon-camera { background-position: -120px -48px; } .icon-font { background-position: -144px -48px; } .icon-bold { background-position: -167px -48px; } .icon-italic { background-position: -192px -48px; } .icon-text-height { background-position: -216px -48px; } .icon-text-width { background-position: -240px -48px; } .icon-align-left { background-position: -264px -48px; } .icon-align-center { background-position: -288px -48px; } .icon-align-right { background-position: -312px -48px; } .icon-align-justify { background-position: -336px -48px; } .icon-list { background-position: -360px -48px; } .icon-indent-left { background-position: -384px -48px; } .icon-indent-right { background-position: -408px -48px; } .icon-facetime-video { background-position: -432px -48px; } .icon-picture { background-position: -456px -48px; } .icon-pencil { background-position: 0 -72px; } .icon-map-marker { background-position: -24px -72px; } .icon-adjust { background-position: -48px -72px; } .icon-tint { background-position: -72px -72px; } .icon-edit { background-position: -96px -72px; } .icon-share { background-position: -120px -72px; } .icon-check { background-position: -144px -72px; } .icon-move { background-position: -168px -72px; } .icon-step-backward { background-position: -192px -72px; } .icon-fast-backward { background-position: -216px -72px; } .icon-backward { background-position: -240px -72px; } .icon-play { background-position: -264px -72px; } .icon-pause { background-position: -288px -72px; } .icon-stop { background-position: -312px -72px; } .icon-forward { background-position: -336px -72px; } .icon-fast-forward { background-position: -360px -72px; } .icon-step-forward { background-position: -384px -72px; } .icon-eject { background-position: -408px -72px; } .icon-chevron-left { background-position: -432px -72px; } .icon-chevron-right { background-position: -456px -72px; } .icon-plus-sign { background-position: 0 -96px; } .icon-minus-sign { background-position: -24px -96px; } .icon-remove-sign { background-position: -48px -96px; } .icon-ok-sign { background-position: -72px -96px; } .icon-question-sign { background-position: -96px -96px; } .icon-info-sign { background-position: -120px -96px; } .icon-screenshot { background-position: -144px -96px; } .icon-remove-circle { background-position: -168px -96px; } .icon-ok-circle { background-position: -192px -96px; } .icon-ban-circle { background-position: -216px -96px; } .icon-arrow-left { background-position: -240px -96px; } .icon-arrow-right { background-position: -264px -96px; } .icon-arrow-up { background-position: -289px -96px; } .icon-arrow-down { background-position: -312px -96px; } .icon-share-alt { background-position: -336px -96px; } .icon-resize-full { background-position: -360px -96px; } .icon-resize-small { background-position: -384px -96px; } .icon-plus { background-position: -408px -96px; } .icon-minus { background-position: -433px -96px; } .icon-asterisk { background-position: -456px -96px; } .icon-exclamation-sign { background-position: 0 -120px; } .icon-gift { background-position: -24px -120px; } .icon-leaf { background-position: -48px -120px; } .icon-fire { background-position: -72px -120px; } .icon-eye-open { background-position: -96px -120px; } .icon-eye-close { background-position: -120px -120px; } .icon-warning-sign { background-position: -144px -120px; } .icon-plane { background-position: -168px -120px; } .icon-calendar { background-position: -192px -120px; } .icon-random { width: 16px; background-position: -216px -120px; } .icon-comment { background-position: -240px -120px; } .icon-magnet { background-position: -264px -120px; } .icon-chevron-up { background-position: -288px -120px; } .icon-chevron-down { background-position: -313px -119px; } .icon-retweet { background-position: -336px -120px; } .icon-shopping-cart { background-position: -360px -120px; } .icon-folder-close { width: 16px; background-position: -384px -120px; } .icon-folder-open { width: 16px; background-position: -408px -120px; } .icon-resize-vertical { background-position: -432px -119px; } .icon-resize-horizontal { background-position: -456px -118px; } .icon-hdd { background-position: 0 -144px; } .icon-bullhorn { background-position: -24px -144px; } .icon-bell { background-position: -48px -144px; } .icon-certificate { background-position: -72px -144px; } .icon-thumbs-up { background-position: -96px -144px; } .icon-thumbs-down { background-position: -120px -144px; } .icon-hand-right { background-position: -144px -144px; } .icon-hand-left { background-position: -168px -144px; } .icon-hand-up { background-position: -192px -144px; } .icon-hand-down { background-position: -216px -144px; } .icon-circle-arrow-right { background-position: -240px -144px; } .icon-circle-arrow-left { background-position: -264px -144px; } .icon-circle-arrow-up { background-position: -288px -144px; } .icon-circle-arrow-down { background-position: -312px -144px; } .icon-globe { background-position: -336px -144px; } .icon-wrench { background-position: -360px -144px; } .icon-tasks { background-position: -384px -144px; } .icon-filter { background-position: -408px -144px; } .icon-briefcase { background-position: -432px -144px; } .icon-fullscreen { background-position: -456px -144px; } .dropup, .dropdown { position: relative; } .dropdown-toggle { *margin-bottom: -3px; } .dropdown-toggle:active, .open .dropdown-toggle { outline: 0; } .caret { display: inline-block; width: 0; height: 0; vertical-align: top; border-top: 4px solid #000000; border-right: 4px solid transparent; border-left: 4px solid transparent; content: ""; } .dropdown .caret { margin-top: 8px; margin-left: 2px; } .dropdown-menu { position: absolute; top: 100%; left: 0; z-index: 1000; display: none; float: left; min-width: 160px; padding: 5px 0; margin: 2px 0 0; list-style: none; background-color: #ffffff; border: 1px solid #ccc; border: 1px solid rgba(0, 0, 0, 0.2); *border-right-width: 2px; *border-bottom-width: 2px; -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); -webkit-background-clip: padding-box; -moz-background-clip: padding; background-clip: padding-box; } .dropdown-menu.pull-right { right: 0; left: auto; } .dropdown-menu .divider { *width: 100%; height: 1px; margin: 9px 1px; *margin: -5px 0 5px; overflow: hidden; background-color: #e5e5e5; border-bottom: 1px solid #ffffff; } .dropdown-menu > li > a { display: block; padding: 3px 20px; clear: both; font-weight: normal; line-height: 20px; color: #333333; white-space: nowrap; } .dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus, .dropdown-submenu:hover > a, .dropdown-submenu:focus > a { color: #ffffff; text-decoration: none; background-color: #0081c2; background-image: -moz-linear-gradient(top, #0088cc, #0077b3); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); background-image: -o-linear-gradient(top, #0088cc, #0077b3); background-image: linear-gradient(to bottom, #0088cc, #0077b3); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); } .dropdown-menu > .active > a, .dropdown-menu > .active > a:hover, .dropdown-menu > .active > a:focus { color: #ffffff; text-decoration: none; background-color: #0081c2; background-image: -moz-linear-gradient(top, #0088cc, #0077b3); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); background-image: -o-linear-gradient(top, #0088cc, #0077b3); background-image: linear-gradient(to bottom, #0088cc, #0077b3); background-repeat: repeat-x; outline: 0; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); } .dropdown-menu > .disabled > a, .dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus { color: #999999; } .dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus { text-decoration: none; cursor: default; background-color: transparent; background-image: none; filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); } .open { *z-index: 1000; } .open > .dropdown-menu { display: block; } .pull-right > .dropdown-menu { right: 0; left: auto; } .dropup .caret, .navbar-fixed-bottom .dropdown .caret { border-top: 0; border-bottom: 4px solid #000000; content: ""; } .dropup .dropdown-menu, .navbar-fixed-bottom .dropdown .dropdown-menu { top: auto; bottom: 100%; margin-bottom: 1px; } .dropdown-submenu { position: relative; } .dropdown-submenu > .dropdown-menu { top: 0; left: 100%; margin-top: -6px; margin-left: -1px; -webkit-border-radius: 0 6px 6px 6px; -moz-border-radius: 0 6px 6px 6px; border-radius: 0 6px 6px 6px; } .dropdown-submenu:hover > .dropdown-menu { display: block; } .dropup .dropdown-submenu > .dropdown-menu { top: auto; bottom: 0; margin-top: 0; margin-bottom: -2px; -webkit-border-radius: 5px 5px 5px 0; -moz-border-radius: 5px 5px 5px 0; border-radius: 5px 5px 5px 0; } .dropdown-submenu > a:after { display: block; float: right; width: 0; height: 0; margin-top: 5px; margin-right: -10px; border-color: transparent; border-left-color: #cccccc; border-style: solid; border-width: 5px 0 5px 5px; content: " "; } .dropdown-submenu:hover > a:after { border-left-color: #ffffff; } .dropdown-submenu.pull-left { float: none; } .dropdown-submenu.pull-left > .dropdown-menu { left: -100%; margin-left: 10px; -webkit-border-radius: 6px 0 6px 6px; -moz-border-radius: 6px 0 6px 6px; border-radius: 6px 0 6px 6px; } .dropdown .dropdown-menu .nav-header { padding-right: 20px; padding-left: 20px; } .typeahead { z-index: 1051; margin-top: 2px; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .well { min-height: 20px; padding: 19px; margin-bottom: 20px; background-color: #f5f5f5; border: 1px solid #e3e3e3; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); } .well blockquote { border-color: #ddd; border-color: rgba(0, 0, 0, 0.15); } .well-large { padding: 24px; -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; } .well-small { padding: 9px; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } .fade { opacity: 0; -webkit-transition: opacity 0.15s linear; -moz-transition: opacity 0.15s linear; -o-transition: opacity 0.15s linear; transition: opacity 0.15s linear; } .fade.in { opacity: 1; } .collapse { position: relative; height: 0; overflow: hidden; -webkit-transition: height 0.35s ease; -moz-transition: height 0.35s ease; -o-transition: height 0.35s ease; transition: height 0.35s ease; } .collapse.in { height: auto; } .close { float: right; font-size: 20px; font-weight: bold; line-height: 20px; color: #000000; text-shadow: 0 1px 0 #ffffff; opacity: 0.2; filter: alpha(opacity=20); } .close:hover, .close:focus { color: #000000; text-decoration: none; cursor: pointer; opacity: 0.4; filter: alpha(opacity=40); } button.close { padding: 0; cursor: pointer; background: transparent; border: 0; -webkit-appearance: none; } .btn { display: inline-block; *display: inline; padding: 4px 12px; margin-bottom: 0; *margin-left: .3em; font-size: 14px; line-height: 20px; color: #333333; text-align: center; text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); vertical-align: middle; cursor: pointer; background-color: #f5f5f5; *background-color: #e6e6e6; background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); background-repeat: repeat-x; border: 1px solid #cccccc; *border: 0; border-color: #e6e6e6 #e6e6e6 #bfbfbf; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); border-bottom-color: #b3b3b3; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); *zoom: 1; -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); } .btn:hover, .btn:focus, .btn:active, .btn.active, .btn.disabled, .btn[disabled] { color: #333333; background-color: #e6e6e6; *background-color: #d9d9d9; } .btn:active, .btn.active { background-color: #cccccc \9; } .btn:first-child { *margin-left: 0; } .btn:hover, .btn:focus { color: #333333; text-decoration: none; background-position: 0 -15px; -webkit-transition: background-position 0.1s linear; -moz-transition: background-position 0.1s linear; -o-transition: background-position 0.1s linear; transition: background-position 0.1s linear; } .btn:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } .btn.active, .btn:active { background-image: none; outline: 0; -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); } .btn.disabled, .btn[disabled] { cursor: default; background-image: none; opacity: 0.65; filter: alpha(opacity=65); -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } .btn-large { padding: 11px 19px; font-size: 17.5px; -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; } .btn-large [class^="icon-"], .btn-large [class*=" icon-"] { margin-top: 4px; } .btn-small { padding: 2px 10px; font-size: 11.9px; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } .btn-small [class^="icon-"], .btn-small [class*=" icon-"] { margin-top: 0; } .btn-mini [class^="icon-"], .btn-mini [class*=" icon-"] { margin-top: -1px; } .btn-mini { padding: 0 6px; font-size: 10.5px; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } .btn-block { display: block; width: 100%; padding-right: 0; padding-left: 0; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .btn-block + .btn-block { margin-top: 5px; } input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="button"].btn-block { width: 100%; } .btn-primary.active, .btn-warning.active, .btn-danger.active, .btn-success.active, .btn-info.active, .btn-inverse.active { color: rgba(255, 255, 255, 0.75); } .btn-primary { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #006dcc; *background-color: #0044cc; background-image: -moz-linear-gradient(top, #0088cc, #0044cc); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); background-image: -o-linear-gradient(top, #0088cc, #0044cc); background-image: linear-gradient(to bottom, #0088cc, #0044cc); background-repeat: repeat-x; border-color: #0044cc #0044cc #002a80; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); } .btn-primary:hover, .btn-primary:focus, .btn-primary:active, .btn-primary.active, .btn-primary.disabled, .btn-primary[disabled] { color: #ffffff; background-color: #0044cc; *background-color: #003bb3; } .btn-primary:active, .btn-primary.active { background-color: #003399 \9; } .btn-warning { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #faa732; *background-color: #f89406; background-image: -moz-linear-gradient(top, #fbb450, #f89406); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); background-image: -webkit-linear-gradient(top, #fbb450, #f89406); background-image: -o-linear-gradient(top, #fbb450, #f89406); background-image: linear-gradient(to bottom, #fbb450, #f89406); background-repeat: repeat-x; border-color: #f89406 #f89406 #ad6704; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); } .btn-warning:hover, .btn-warning:focus, .btn-warning:active, .btn-warning.active, .btn-warning.disabled, .btn-warning[disabled] { color: #ffffff; background-color: #f89406; *background-color: #df8505; } .btn-warning:active, .btn-warning.active { background-color: #c67605 \9; } .btn-danger { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #da4f49; *background-color: #bd362f; background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); background-image: linear-gradient(to bottom, #ee5f5b, #bd362f); background-repeat: repeat-x; border-color: #bd362f #bd362f #802420; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); } .btn-danger:hover, .btn-danger:focus, .btn-danger:active, .btn-danger.active, .btn-danger.disabled, .btn-danger[disabled] { color: #ffffff; background-color: #bd362f; *background-color: #a9302a; } .btn-danger:active, .btn-danger.active { background-color: #942a25 \9; } .btn-success { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #5bb75b; *background-color: #51a351; background-image: -moz-linear-gradient(top, #62c462, #51a351); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); background-image: -webkit-linear-gradient(top, #62c462, #51a351); background-image: -o-linear-gradient(top, #62c462, #51a351); background-image: linear-gradient(to bottom, #62c462, #51a351); background-repeat: repeat-x; border-color: #51a351 #51a351 #387038; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); } .btn-success:hover, .btn-success:focus, .btn-success:active, .btn-success.active, .btn-success.disabled, .btn-success[disabled] { color: #ffffff; background-color: #51a351; *background-color: #499249; } .btn-success:active, .btn-success.active { background-color: #408140 \9; } .btn-info { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #49afcd; *background-color: #2f96b4; background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); background-image: linear-gradient(to bottom, #5bc0de, #2f96b4); background-repeat: repeat-x; border-color: #2f96b4 #2f96b4 #1f6377; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); } .btn-info:hover, .btn-info:focus, .btn-info:active, .btn-info.active, .btn-info.disabled, .btn-info[disabled] { color: #ffffff; background-color: #2f96b4; *background-color: #2a85a0; } .btn-info:active, .btn-info.active { background-color: #24748c \9; } .btn-inverse { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #363636; *background-color: #222222; background-image: -moz-linear-gradient(top, #444444, #222222); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222)); background-image: -webkit-linear-gradient(top, #444444, #222222); background-image: -o-linear-gradient(top, #444444, #222222); background-image: linear-gradient(to bottom, #444444, #222222); background-repeat: repeat-x; border-color: #222222 #222222 #000000; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); } .btn-inverse:hover, .btn-inverse:focus, .btn-inverse:active, .btn-inverse.active, .btn-inverse.disabled, .btn-inverse[disabled] { color: #ffffff; background-color: #222222; *background-color: #151515; } .btn-inverse:active, .btn-inverse.active { background-color: #080808 \9; } button.btn, input[type="submit"].btn { *padding-top: 3px; *padding-bottom: 3px; } button.btn::-moz-focus-inner, input[type="submit"].btn::-moz-focus-inner { padding: 0; border: 0; } button.btn.btn-large, input[type="submit"].btn.btn-large { *padding-top: 7px; *padding-bottom: 7px; } button.btn.btn-small, input[type="submit"].btn.btn-small { *padding-top: 3px; *padding-bottom: 3px; } button.btn.btn-mini, input[type="submit"].btn.btn-mini { *padding-top: 1px; *padding-bottom: 1px; } .btn-link, .btn-link:active, .btn-link[disabled] { background-color: transparent; background-image: none; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } .btn-link { color: #0088cc; cursor: pointer; border-color: transparent; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .btn-link:hover, .btn-link:focus { color: #005580; text-decoration: underline; background-color: transparent; } .btn-link[disabled]:hover, .btn-link[disabled]:focus { color: #333333; text-decoration: none; } .btn-group { position: relative; display: inline-block; *display: inline; *margin-left: .3em; font-size: 0; white-space: nowrap; vertical-align: middle; *zoom: 1; } .btn-group:first-child { *margin-left: 0; } .btn-group + .btn-group { margin-left: 5px; } .btn-toolbar { margin-top: 10px; margin-bottom: 10px; font-size: 0; } .btn-toolbar > .btn + .btn, .btn-toolbar > .btn-group + .btn, .btn-toolbar > .btn + .btn-group { margin-left: 5px; } .btn-group > .btn { position: relative; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .btn-group > .btn + .btn { margin-left: -1px; } .btn-group > .btn, .btn-group > .dropdown-menu, .btn-group > .popover { font-size: 14px; } .btn-group > .btn-mini { font-size: 10.5px; } .btn-group > .btn-small { font-size: 11.9px; } .btn-group > .btn-large { font-size: 17.5px; } .btn-group > .btn:first-child { margin-left: 0; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -moz-border-radius-topleft: 4px; } .btn-group > .btn:last-child, .btn-group > .dropdown-toggle { -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; -moz-border-radius-topright: 4px; -moz-border-radius-bottomright: 4px; } .btn-group > .btn.large:first-child { margin-left: 0; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px; -moz-border-radius-bottomleft: 6px; -moz-border-radius-topleft: 6px; } .btn-group > .btn.large:last-child, .btn-group > .large.dropdown-toggle { -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; -moz-border-radius-topright: 6px; -moz-border-radius-bottomright: 6px; } .btn-group > .btn:hover, .btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active { z-index: 2; } .btn-group .dropdown-toggle:active, .btn-group.open .dropdown-toggle { outline: 0; } .btn-group > .btn + .dropdown-toggle { *padding-top: 5px; padding-right: 8px; *padding-bottom: 5px; padding-left: 8px; -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); } .btn-group > .btn-mini + .dropdown-toggle { *padding-top: 2px; padding-right: 5px; *padding-bottom: 2px; padding-left: 5px; } .btn-group > .btn-small + .dropdown-toggle { *padding-top: 5px; *padding-bottom: 4px; } .btn-group > .btn-large + .dropdown-toggle { *padding-top: 7px; padding-right: 12px; *padding-bottom: 7px; padding-left: 12px; } .btn-group.open .dropdown-toggle { background-image: none; -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); } .btn-group.open .btn.dropdown-toggle { background-color: #e6e6e6; } .btn-group.open .btn-primary.dropdown-toggle { background-color: #0044cc; } .btn-group.open .btn-warning.dropdown-toggle { background-color: #f89406; } .btn-group.open .btn-danger.dropdown-toggle { background-color: #bd362f; } .btn-group.open .btn-success.dropdown-toggle { background-color: #51a351; } .btn-group.open .btn-info.dropdown-toggle { background-color: #2f96b4; } .btn-group.open .btn-inverse.dropdown-toggle { background-color: #222222; } .btn .caret { margin-top: 8px; margin-left: 0; } .btn-large .caret { margin-top: 6px; } .btn-large .caret { border-top-width: 5px; border-right-width: 5px; border-left-width: 5px; } .btn-mini .caret, .btn-small .caret { margin-top: 8px; } .dropup .btn-large .caret { border-bottom-width: 5px; } .btn-primary .caret, .btn-warning .caret, .btn-danger .caret, .btn-info .caret, .btn-success .caret, .btn-inverse .caret { border-top-color: #ffffff; border-bottom-color: #ffffff; } .btn-group-vertical { display: inline-block; *display: inline; /* IE7 inline-block hack */ *zoom: 1; } .btn-group-vertical > .btn { display: block; float: none; max-width: 100%; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .btn-group-vertical > .btn + .btn { margin-top: -1px; margin-left: 0; } .btn-group-vertical > .btn:first-child { -webkit-border-radius: 4px 4px 0 0; -moz-border-radius: 4px 4px 0 0; border-radius: 4px 4px 0 0; } .btn-group-vertical > .btn:last-child { -webkit-border-radius: 0 0 4px 4px; -moz-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px; } .btn-group-vertical > .btn-large:first-child { -webkit-border-radius: 6px 6px 0 0; -moz-border-radius: 6px 6px 0 0; border-radius: 6px 6px 0 0; } .btn-group-vertical > .btn-large:last-child { -webkit-border-radius: 0 0 6px 6px; -moz-border-radius: 0 0 6px 6px; border-radius: 0 0 6px 6px; } .alert { padding: 8px 35px 8px 14px; margin-bottom: 20px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); background-color: #fcf8e3; border: 1px solid #fbeed5; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .alert, .alert h4 { color: #c09853; } .alert h4 { margin: 0; } .alert .close { position: relative; top: -2px; right: -21px; line-height: 20px; } .alert-success { color: #468847; background-color: #dff0d8; border-color: #d6e9c6; } .alert-success h4 { color: #468847; } .alert-danger, .alert-error { color: #b94a48; background-color: #f2dede; border-color: #eed3d7; } .alert-danger h4, .alert-error h4 { color: #b94a48; } .alert-info { color: #3a87ad; background-color: #d9edf7; border-color: #bce8f1; } .alert-info h4 { color: #3a87ad; } .alert-block { padding-top: 14px; padding-bottom: 14px; } .alert-block > p, .alert-block > ul { margin-bottom: 0; } .alert-block p + p { margin-top: 5px; } .nav { margin-bottom: 20px; margin-left: 0; list-style: none; } .nav > li > a { display: block; } .nav > li > a:hover, .nav > li > a:focus { text-decoration: none; background-color: #eeeeee; } .nav > li > a > img { max-width: none; } .nav > .pull-right { float: right; } .nav-header { display: block; padding: 3px 15px; font-size: 11px; font-weight: bold; line-height: 20px; color: #999999; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); text-transform: uppercase; } .nav li + .nav-header { margin-top: 9px; } .nav-list { padding-right: 15px; padding-left: 15px; margin-bottom: 0; } .nav-list > li > a, .nav-list .nav-header { margin-right: -15px; margin-left: -15px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); } .nav-list > li > a { padding: 3px 15px; } .nav-list > .active > a, .nav-list > .active > a:hover, .nav-list > .active > a:focus { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); background-color: #0088cc; } .nav-list [class^="icon-"], .nav-list [class*=" icon-"] { margin-right: 2px; } .nav-list .divider { *width: 100%; height: 1px; margin: 9px 1px; *margin: -5px 0 5px; overflow: hidden; background-color: #e5e5e5; border-bottom: 1px solid #ffffff; } .nav-tabs, .nav-pills { *zoom: 1; } .nav-tabs:before, .nav-pills:before, .nav-tabs:after, .nav-pills:after { display: table; line-height: 0; content: ""; } .nav-tabs:after, .nav-pills:after { clear: both; } .nav-tabs > li, .nav-pills > li { float: left; } .nav-tabs > li > a, .nav-pills > li > a { padding-right: 12px; padding-left: 12px; margin-right: 2px; line-height: 14px; } .nav-tabs { border-bottom: 1px solid #ddd; } .nav-tabs > li { margin-bottom: -1px; } .nav-tabs > li > a { padding-top: 8px; padding-bottom: 8px; line-height: 20px; border: 1px solid transparent; -webkit-border-radius: 4px 4px 0 0; -moz-border-radius: 4px 4px 0 0; border-radius: 4px 4px 0 0; } .nav-tabs > li > a:hover, .nav-tabs > li > a:focus { border-color: #eeeeee #eeeeee #dddddd; } .nav-tabs > .active > a, .nav-tabs > .active > a:hover, .nav-tabs > .active > a:focus { color: #555555; cursor: default; background-color: #ffffff; border: 1px solid #ddd; border-bottom-color: transparent; } .nav-pills > li > a { padding-top: 8px; padding-bottom: 8px; margin-top: 2px; margin-bottom: 2px; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; } .nav-pills > .active > a, .nav-pills > .active > a:hover, .nav-pills > .active > a:focus { color: #ffffff; background-color: #0088cc; } .nav-stacked > li { float: none; } .nav-stacked > li > a { margin-right: 0; } .nav-tabs.nav-stacked { border-bottom: 0; } .nav-tabs.nav-stacked > li > a { border: 1px solid #ddd; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .nav-tabs.nav-stacked > li:first-child > a { -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -moz-border-radius-topleft: 4px; } .nav-tabs.nav-stacked > li:last-child > a { -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -moz-border-radius-bottomleft: 4px; } .nav-tabs.nav-stacked > li > a:hover, .nav-tabs.nav-stacked > li > a:focus { z-index: 2; border-color: #ddd; } .nav-pills.nav-stacked > li > a { margin-bottom: 3px; } .nav-pills.nav-stacked > li:last-child > a { margin-bottom: 1px; } .nav-tabs .dropdown-menu { -webkit-border-radius: 0 0 6px 6px; -moz-border-radius: 0 0 6px 6px; border-radius: 0 0 6px 6px; } .nav-pills .dropdown-menu { -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; } .nav .dropdown-toggle .caret { margin-top: 6px; border-top-color: #0088cc; border-bottom-color: #0088cc; } .nav .dropdown-toggle:hover .caret, .nav .dropdown-toggle:focus .caret { border-top-color: #005580; border-bottom-color: #005580; } /* move down carets for tabs */ .nav-tabs .dropdown-toggle .caret { margin-top: 8px; } .nav .active .dropdown-toggle .caret { border-top-color: #fff; border-bottom-color: #fff; } .nav-tabs .active .dropdown-toggle .caret { border-top-color: #555555; border-bottom-color: #555555; } .nav > .dropdown.active > a:hover, .nav > .dropdown.active > a:focus { cursor: pointer; } .nav-tabs .open .dropdown-toggle, .nav-pills .open .dropdown-toggle, .nav > li.dropdown.open.active > a:hover, .nav > li.dropdown.open.active > a:focus { color: #ffffff; background-color: #999999; border-color: #999999; } .nav li.dropdown.open .caret, .nav li.dropdown.open.active .caret, .nav li.dropdown.open a:hover .caret, .nav li.dropdown.open a:focus .caret { border-top-color: #ffffff; border-bottom-color: #ffffff; opacity: 1; filter: alpha(opacity=100); } .tabs-stacked .open > a:hover, .tabs-stacked .open > a:focus { border-color: #999999; } .tabbable { *zoom: 1; } .tabbable:before, .tabbable:after { display: table; line-height: 0; content: ""; } .tabbable:after { clear: both; } .tab-content { overflow: auto; } .tabs-below > .nav-tabs, .tabs-right > .nav-tabs, .tabs-left > .nav-tabs { border-bottom: 0; } .tab-content > .tab-pane, .pill-content > .pill-pane { display: none; } .tab-content > .active, .pill-content > .active { display: block; } .tabs-below > .nav-tabs { border-top: 1px solid #ddd; } .tabs-below > .nav-tabs > li { margin-top: -1px; margin-bottom: 0; } .tabs-below > .nav-tabs > li > a { -webkit-border-radius: 0 0 4px 4px; -moz-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px; } .tabs-below > .nav-tabs > li > a:hover, .tabs-below > .nav-tabs > li > a:focus { border-top-color: #ddd; border-bottom-color: transparent; } .tabs-below > .nav-tabs > .active > a, .tabs-below > .nav-tabs > .active > a:hover, .tabs-below > .nav-tabs > .active > a:focus { border-color: transparent #ddd #ddd #ddd; } .tabs-left > .nav-tabs > li, .tabs-right > .nav-tabs > li { float: none; } .tabs-left > .nav-tabs > li > a, .tabs-right > .nav-tabs > li > a { min-width: 74px; margin-right: 0; margin-bottom: 3px; } .tabs-left > .nav-tabs { float: left; margin-right: 19px; border-right: 1px solid #ddd; } .tabs-left > .nav-tabs > li > a { margin-right: -1px; -webkit-border-radius: 4px 0 0 4px; -moz-border-radius: 4px 0 0 4px; border-radius: 4px 0 0 4px; } .tabs-left > .nav-tabs > li > a:hover, .tabs-left > .nav-tabs > li > a:focus { border-color: #eeeeee #dddddd #eeeeee #eeeeee; } .tabs-left > .nav-tabs .active > a, .tabs-left > .nav-tabs .active > a:hover, .tabs-left > .nav-tabs .active > a:focus { border-color: #ddd transparent #ddd #ddd; *border-right-color: #ffffff; } .tabs-right > .nav-tabs { float: right; margin-left: 19px; border-left: 1px solid #ddd; } .tabs-right > .nav-tabs > li > a { margin-left: -1px; -webkit-border-radius: 0 4px 4px 0; -moz-border-radius: 0 4px 4px 0; border-radius: 0 4px 4px 0; } .tabs-right > .nav-tabs > li > a:hover, .tabs-right > .nav-tabs > li > a:focus { border-color: #eeeeee #eeeeee #eeeeee #dddddd; } .tabs-right > .nav-tabs .active > a, .tabs-right > .nav-tabs .active > a:hover, .tabs-right > .nav-tabs .active > a:focus { border-color: #ddd #ddd #ddd transparent; *border-left-color: #ffffff; } .nav > .disabled > a { color: #999999; } .nav > .disabled > a:hover, .nav > .disabled > a:focus { text-decoration: none; cursor: default; background-color: transparent; } .navbar { *position: relative; *z-index: 2; margin-bottom: 20px; overflow: visible; } .navbar-inner { min-height: 40px; padding-right: 20px; padding-left: 20px; background-color: #fafafa; background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2)); background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2); background-image: -o-linear-gradient(top, #ffffff, #f2f2f2); background-image: linear-gradient(to bottom, #ffffff, #f2f2f2); background-repeat: repeat-x; border: 1px solid #d4d4d4; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0); *zoom: 1; -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); } .navbar-inner:before, .navbar-inner:after { display: table; line-height: 0; content: ""; } .navbar-inner:after { clear: both; } .navbar .container { width: auto; } .nav-collapse.collapse { height: auto; overflow: visible; } .navbar .brand { display: block; float: left; padding: 10px 20px 10px; margin-left: -20px; font-size: 20px; font-weight: 200; color: #777777; text-shadow: 0 1px 0 #ffffff; } .navbar .brand:hover, .navbar .brand:focus { text-decoration: none; } .navbar-text { margin-bottom: 0; line-height: 40px; color: #777777; } .navbar-link { color: #777777; } .navbar-link:hover, .navbar-link:focus { color: #333333; } .navbar .divider-vertical { height: 40px; margin: 0 9px; border-right: 1px solid #ffffff; border-left: 1px solid #f2f2f2; } .navbar .btn, .navbar .btn-group { margin-top: 5px; } .navbar .btn-group .btn, .navbar .input-prepend .btn, .navbar .input-append .btn, .navbar .input-prepend .btn-group, .navbar .input-append .btn-group { margin-top: 0; } .navbar-form { margin-bottom: 0; *zoom: 1; } .navbar-form:before, .navbar-form:after { display: table; line-height: 0; content: ""; } .navbar-form:after { clear: both; } .navbar-form input, .navbar-form select, .navbar-form .radio, .navbar-form .checkbox { margin-top: 5px; } .navbar-form input, .navbar-form select, .navbar-form .btn { display: inline-block; margin-bottom: 0; } .navbar-form input[type="image"], .navbar-form input[type="checkbox"], .navbar-form input[type="radio"] { margin-top: 3px; } .navbar-form .input-append, .navbar-form .input-prepend { margin-top: 5px; white-space: nowrap; } .navbar-form .input-append input, .navbar-form .input-prepend input { margin-top: 0; } .navbar-search { position: relative; float: left; margin-top: 5px; margin-bottom: 0; } .navbar-search .search-query { padding: 4px 14px; margin-bottom: 0; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 13px; font-weight: normal; line-height: 1; -webkit-border-radius: 15px; -moz-border-radius: 15px; border-radius: 15px; } .navbar-static-top { position: static; margin-bottom: 0; } .navbar-static-top .navbar-inner { -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .navbar-fixed-top, .navbar-fixed-bottom { position: fixed; right: 0; left: 0; z-index: 1030; margin-bottom: 0; } .navbar-fixed-top .navbar-inner, .navbar-static-top .navbar-inner { border-width: 0 0 1px; } .navbar-fixed-bottom .navbar-inner { border-width: 1px 0 0; } .navbar-fixed-top .navbar-inner, .navbar-fixed-bottom .navbar-inner { padding-right: 0; padding-left: 0; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { width: 940px; } .navbar-fixed-top { top: 0; } .navbar-fixed-top .navbar-inner, .navbar-static-top .navbar-inner { -webkit-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); -moz-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); } .navbar-fixed-bottom { bottom: 0; } .navbar-fixed-bottom .navbar-inner { -webkit-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); -moz-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); } .navbar .nav { position: relative; left: 0; display: block; float: left; margin: 0 10px 0 0; } .navbar .nav.pull-right { float: right; margin-right: 0; } .navbar .nav > li { float: left; } .navbar .nav > li > a { float: none; padding: 10px 15px 10px; color: #777777; text-decoration: none; text-shadow: 0 1px 0 #ffffff; } .navbar .nav .dropdown-toggle .caret { margin-top: 8px; } .navbar .nav > li > a:focus, .navbar .nav > li > a:hover { color: #333333; text-decoration: none; background-color: transparent; } .navbar .nav > .active > a, .navbar .nav > .active > a:hover, .navbar .nav > .active > a:focus { color: #555555; text-decoration: none; background-color: #e5e5e5; -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); } .navbar .btn-navbar { display: none; float: right; padding: 7px 10px; margin-right: 5px; margin-left: 5px; color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #ededed; *background-color: #e5e5e5; background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5)); background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5); background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5); background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5); background-repeat: repeat-x; border-color: #e5e5e5 #e5e5e5 #bfbfbf; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); } .navbar .btn-navbar:hover, .navbar .btn-navbar:focus, .navbar .btn-navbar:active, .navbar .btn-navbar.active, .navbar .btn-navbar.disabled, .navbar .btn-navbar[disabled] { color: #ffffff; background-color: #e5e5e5; *background-color: #d9d9d9; } .navbar .btn-navbar:active, .navbar .btn-navbar.active { background-color: #cccccc \9; } .navbar .btn-navbar .icon-bar { display: block; width: 18px; height: 2px; background-color: #f5f5f5; -webkit-border-radius: 1px; -moz-border-radius: 1px; border-radius: 1px; -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); } .btn-navbar .icon-bar + .icon-bar { margin-top: 3px; } .navbar .nav > li > .dropdown-menu:before { position: absolute; top: -7px; left: 9px; display: inline-block; border-right: 7px solid transparent; border-bottom: 7px solid #ccc; border-left: 7px solid transparent; border-bottom-color: rgba(0, 0, 0, 0.2); content: ''; } .navbar .nav > li > .dropdown-menu:after { position: absolute; top: -6px; left: 10px; display: inline-block; border-right: 6px solid transparent; border-bottom: 6px solid #ffffff; border-left: 6px solid transparent; content: ''; } .navbar-fixed-bottom .nav > li > .dropdown-menu:before { top: auto; bottom: -7px; border-top: 7px solid #ccc; border-bottom: 0; border-top-color: rgba(0, 0, 0, 0.2); } .navbar-fixed-bottom .nav > li > .dropdown-menu:after { top: auto; bottom: -6px; border-top: 6px solid #ffffff; border-bottom: 0; } .navbar .nav li.dropdown > a:hover .caret, .navbar .nav li.dropdown > a:focus .caret { border-top-color: #333333; border-bottom-color: #333333; } .navbar .nav li.dropdown.open > .dropdown-toggle, .navbar .nav li.dropdown.active > .dropdown-toggle, .navbar .nav li.dropdown.open.active > .dropdown-toggle { color: #555555; background-color: #e5e5e5; } .navbar .nav li.dropdown > .dropdown-toggle .caret { border-top-color: #777777; border-bottom-color: #777777; } .navbar .nav li.dropdown.open > .dropdown-toggle .caret, .navbar .nav li.dropdown.active > .dropdown-toggle .caret, .navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { border-top-color: #555555; border-bottom-color: #555555; } .navbar .pull-right > li > .dropdown-menu, .navbar .nav > li > .dropdown-menu.pull-right { right: 0; left: auto; } .navbar .pull-right > li > .dropdown-menu:before, .navbar .nav > li > .dropdown-menu.pull-right:before { right: 12px; left: auto; } .navbar .pull-right > li > .dropdown-menu:after, .navbar .nav > li > .dropdown-menu.pull-right:after { right: 13px; left: auto; } .navbar .pull-right > li > .dropdown-menu .dropdown-menu, .navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu { right: 100%; left: auto; margin-right: -1px; margin-left: 0; -webkit-border-radius: 6px 0 6px 6px; -moz-border-radius: 6px 0 6px 6px; border-radius: 6px 0 6px 6px; } .navbar-inverse .navbar-inner { background-color: #1b1b1b; background-image: -moz-linear-gradient(top, #222222, #111111); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111)); background-image: -webkit-linear-gradient(top, #222222, #111111); background-image: -o-linear-gradient(top, #222222, #111111); background-image: linear-gradient(to bottom, #222222, #111111); background-repeat: repeat-x; border-color: #252525; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0); } .navbar-inverse .brand, .navbar-inverse .nav > li > a { color: #999999; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); } .navbar-inverse .brand:hover, .navbar-inverse .nav > li > a:hover, .navbar-inverse .brand:focus, .navbar-inverse .nav > li > a:focus { color: #ffffff; } .navbar-inverse .brand { color: #999999; } .navbar-inverse .navbar-text { color: #999999; } .navbar-inverse .nav > li > a:focus, .navbar-inverse .nav > li > a:hover { color: #ffffff; background-color: transparent; } .navbar-inverse .nav .active > a, .navbar-inverse .nav .active > a:hover, .navbar-inverse .nav .active > a:focus { color: #ffffff; background-color: #111111; } .navbar-inverse .navbar-link { color: #999999; } .navbar-inverse .navbar-link:hover, .navbar-inverse .navbar-link:focus { color: #ffffff; } .navbar-inverse .divider-vertical { border-right-color: #222222; border-left-color: #111111; } .navbar-inverse .nav li.dropdown.open > .dropdown-toggle, .navbar-inverse .nav li.dropdown.active > .dropdown-toggle, .navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { color: #ffffff; background-color: #111111; } .navbar-inverse .nav li.dropdown > a:hover .caret, .navbar-inverse .nav li.dropdown > a:focus .caret { border-top-color: #ffffff; border-bottom-color: #ffffff; } .navbar-inverse .nav li.dropdown > .dropdown-toggle .caret { border-top-color: #999999; border-bottom-color: #999999; } .navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret, .navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret, .navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret { border-top-color: #ffffff; border-bottom-color: #ffffff; } .navbar-inverse .navbar-search .search-query { color: #ffffff; background-color: #515151; border-color: #111111; -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); -webkit-transition: none; -moz-transition: none; -o-transition: none; transition: none; } .navbar-inverse .navbar-search .search-query:-moz-placeholder { color: #cccccc; } .navbar-inverse .navbar-search .search-query:-ms-input-placeholder { color: #cccccc; } .navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { color: #cccccc; } .navbar-inverse .navbar-search .search-query:focus, .navbar-inverse .navbar-search .search-query.focused { padding: 5px 15px; color: #333333; text-shadow: 0 1px 0 #ffffff; background-color: #ffffff; border: 0; outline: 0; -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); } .navbar-inverse .btn-navbar { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #0e0e0e; *background-color: #040404; background-image: -moz-linear-gradient(top, #151515, #040404); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404)); background-image: -webkit-linear-gradient(top, #151515, #040404); background-image: -o-linear-gradient(top, #151515, #040404); background-image: linear-gradient(to bottom, #151515, #040404); background-repeat: repeat-x; border-color: #040404 #040404 #000000; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); } .navbar-inverse .btn-navbar:hover, .navbar-inverse .btn-navbar:focus, .navbar-inverse .btn-navbar:active, .navbar-inverse .btn-navbar.active, .navbar-inverse .btn-navbar.disabled, .navbar-inverse .btn-navbar[disabled] { color: #ffffff; background-color: #040404; *background-color: #000000; } .navbar-inverse .btn-navbar:active, .navbar-inverse .btn-navbar.active { background-color: #000000 \9; } .breadcrumb { padding: 8px 15px; margin: 0 0 20px; list-style: none; background-color: #f5f5f5; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .breadcrumb > li { display: inline-block; *display: inline; text-shadow: 0 1px 0 #ffffff; *zoom: 1; } .breadcrumb > li > .divider { padding: 0 5px; color: #ccc; } .breadcrumb > .active { color: #999999; } .pagination { margin: 20px 0; } .pagination ul { display: inline-block; *display: inline; margin-bottom: 0; margin-left: 0; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; *zoom: 1; -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); } .pagination ul > li { display: inline; } .pagination ul > li > a, .pagination ul > li > span { float: left; padding: 4px 12px; line-height: 20px; text-decoration: none; background-color: #ffffff; border: 1px solid #dddddd; border-left-width: 0; } .pagination ul > li > a:hover, .pagination ul > li > a:focus, .pagination ul > .active > a, .pagination ul > .active > span { background-color: #f5f5f5; } .pagination ul > .active > a, .pagination ul > .active > span { color: #999999; cursor: default; } .pagination ul > .disabled > span, .pagination ul > .disabled > a, .pagination ul > .disabled > a:hover, .pagination ul > .disabled > a:focus { color: #999999; cursor: default; background-color: transparent; } .pagination ul > li:first-child > a, .pagination ul > li:first-child > span { border-left-width: 1px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -moz-border-radius-topleft: 4px; } .pagination ul > li:last-child > a, .pagination ul > li:last-child > span { -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; -moz-border-radius-topright: 4px; -moz-border-radius-bottomright: 4px; } .pagination-centered { text-align: center; } .pagination-right { text-align: right; } .pagination-large ul > li > a, .pagination-large ul > li > span { padding: 11px 19px; font-size: 17.5px; } .pagination-large ul > li:first-child > a, .pagination-large ul > li:first-child > span { -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px; -moz-border-radius-bottomleft: 6px; -moz-border-radius-topleft: 6px; } .pagination-large ul > li:last-child > a, .pagination-large ul > li:last-child > span { -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; -moz-border-radius-topright: 6px; -moz-border-radius-bottomright: 6px; } .pagination-mini ul > li:first-child > a, .pagination-small ul > li:first-child > a, .pagination-mini ul > li:first-child > span, .pagination-small ul > li:first-child > span { -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; -moz-border-radius-bottomleft: 3px; -moz-border-radius-topleft: 3px; } .pagination-mini ul > li:last-child > a, .pagination-small ul > li:last-child > a, .pagination-mini ul > li:last-child > span, .pagination-small ul > li:last-child > span { -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; -moz-border-radius-topright: 3px; -moz-border-radius-bottomright: 3px; } .pagination-small ul > li > a, .pagination-small ul > li > span { padding: 2px 10px; font-size: 11.9px; } .pagination-mini ul > li > a, .pagination-mini ul > li > span { padding: 0 6px; font-size: 10.5px; } .pager { margin: 20px 0; text-align: center; list-style: none; *zoom: 1; } .pager:before, .pager:after { display: table; line-height: 0; content: ""; } .pager:after { clear: both; } .pager li { display: inline; } .pager li > a, .pager li > span { display: inline-block; padding: 5px 14px; background-color: #fff; border: 1px solid #ddd; -webkit-border-radius: 15px; -moz-border-radius: 15px; border-radius: 15px; } .pager li > a:hover, .pager li > a:focus { text-decoration: none; background-color: #f5f5f5; } .pager .next > a, .pager .next > span { float: right; } .pager .previous > a, .pager .previous > span { float: left; } .pager .disabled > a, .pager .disabled > a:hover, .pager .disabled > a:focus, .pager .disabled > span { color: #999999; cursor: default; background-color: #fff; } .modal-backdrop { position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 1040; background-color: #000000; } .modal-backdrop.fade { opacity: 0; } .modal-backdrop, .modal-backdrop.fade.in { opacity: 0.8; filter: alpha(opacity=80); } .modal { position: fixed; top: 10%; left: 50%; z-index: 1050; width: 560px; margin-left: -280px; background-color: #ffffff; border: 1px solid #999; border: 1px solid rgba(0, 0, 0, 0.3); *border: 1px solid #999; -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; outline: none; -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); -webkit-background-clip: padding-box; -moz-background-clip: padding-box; background-clip: padding-box; } .modal.fade { top: -25%; -webkit-transition: opacity 0.3s linear, top 0.3s ease-out; -moz-transition: opacity 0.3s linear, top 0.3s ease-out; -o-transition: opacity 0.3s linear, top 0.3s ease-out; transition: opacity 0.3s linear, top 0.3s ease-out; } .modal.fade.in { top: 10%; } .modal-header { padding: 9px 15px; border-bottom: 1px solid #eee; } .modal-header .close { margin-top: 2px; } .modal-header h3 { margin: 0; line-height: 30px; } .modal-body { position: relative; max-height: 400px; padding: 15px; overflow-y: auto; } .modal-form { margin-bottom: 0; } .modal-footer { padding: 14px 15px 15px; margin-bottom: 0; text-align: right; background-color: #f5f5f5; border-top: 1px solid #ddd; -webkit-border-radius: 0 0 6px 6px; -moz-border-radius: 0 0 6px 6px; border-radius: 0 0 6px 6px; *zoom: 1; -webkit-box-shadow: inset 0 1px 0 #ffffff; -moz-box-shadow: inset 0 1px 0 #ffffff; box-shadow: inset 0 1px 0 #ffffff; } .modal-footer:before, .modal-footer:after { display: table; line-height: 0; content: ""; } .modal-footer:after { clear: both; } .modal-footer .btn + .btn { margin-bottom: 0; margin-left: 5px; } .modal-footer .btn-group .btn + .btn { margin-left: -1px; } .modal-footer .btn-block + .btn-block { margin-left: 0; } .tooltip { position: absolute; z-index: 1030; display: block; font-size: 11px; line-height: 1.4; opacity: 0; filter: alpha(opacity=0); visibility: visible; } .tooltip.in { opacity: 0.8; filter: alpha(opacity=80); } .tooltip.top { padding: 5px 0; margin-top: -3px; } .tooltip.right { padding: 0 5px; margin-left: 3px; } .tooltip.bottom { padding: 5px 0; margin-top: 3px; } .tooltip.left { padding: 0 5px; margin-left: -3px; } .tooltip-inner { max-width: 200px; padding: 8px; color: #ffffff; text-align: center; text-decoration: none; background-color: #000000; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .tooltip-arrow { position: absolute; width: 0; height: 0; border-color: transparent; border-style: solid; } .tooltip.top .tooltip-arrow { bottom: 0; left: 50%; margin-left: -5px; border-top-color: #000000; border-width: 5px 5px 0; } .tooltip.right .tooltip-arrow { top: 50%; left: 0; margin-top: -5px; border-right-color: #000000; border-width: 5px 5px 5px 0; } .tooltip.left .tooltip-arrow { top: 50%; right: 0; margin-top: -5px; border-left-color: #000000; border-width: 5px 0 5px 5px; } .tooltip.bottom .tooltip-arrow { top: 0; left: 50%; margin-left: -5px; border-bottom-color: #000000; border-width: 0 5px 5px; } .popover { position: absolute; top: 0; left: 0; z-index: 1010; display: none; max-width: 276px; padding: 1px; text-align: left; white-space: normal; background-color: #ffffff; border: 1px solid #ccc; border: 1px solid rgba(0, 0, 0, 0.2); -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); -webkit-background-clip: padding-box; -moz-background-clip: padding; background-clip: padding-box; } .popover.top { margin-top: -10px; } .popover.right { margin-left: 10px; } .popover.bottom { margin-top: 10px; } .popover.left { margin-left: -10px; } .popover-title { padding: 8px 14px; margin: 0; font-size: 14px; font-weight: normal; line-height: 18px; background-color: #f7f7f7; border-bottom: 1px solid #ebebeb; -webkit-border-radius: 5px 5px 0 0; -moz-border-radius: 5px 5px 0 0; border-radius: 5px 5px 0 0; } .popover-title:empty { display: none; } .popover-content { padding: 9px 14px; } .popover .arrow, .popover .arrow:after { position: absolute; display: block; width: 0; height: 0; border-color: transparent; border-style: solid; } .popover .arrow { border-width: 11px; } .popover .arrow:after { border-width: 10px; content: ""; } .popover.top .arrow { bottom: -11px; left: 50%; margin-left: -11px; border-top-color: #999; border-top-color: rgba(0, 0, 0, 0.25); border-bottom-width: 0; } .popover.top .arrow:after { bottom: 1px; margin-left: -10px; border-top-color: #ffffff; border-bottom-width: 0; } .popover.right .arrow { top: 50%; left: -11px; margin-top: -11px; border-right-color: #999; border-right-color: rgba(0, 0, 0, 0.25); border-left-width: 0; } .popover.right .arrow:after { bottom: -10px; left: 1px; border-right-color: #ffffff; border-left-width: 0; } .popover.bottom .arrow { top: -11px; left: 50%; margin-left: -11px; border-bottom-color: #999; border-bottom-color: rgba(0, 0, 0, 0.25); border-top-width: 0; } .popover.bottom .arrow:after { top: 1px; margin-left: -10px; border-bottom-color: #ffffff; border-top-width: 0; } .popover.left .arrow { top: 50%; right: -11px; margin-top: -11px; border-left-color: #999; border-left-color: rgba(0, 0, 0, 0.25); border-right-width: 0; } .popover.left .arrow:after { right: 1px; bottom: -10px; border-left-color: #ffffff; border-right-width: 0; } .thumbnails { margin-left: -20px; list-style: none; *zoom: 1; } .thumbnails:before, .thumbnails:after { display: table; line-height: 0; content: ""; } .thumbnails:after { clear: both; } .row-fluid .thumbnails { margin-left: 0; } .thumbnails > li { float: left; margin-bottom: 20px; margin-left: 20px; } .thumbnail { display: block; padding: 4px; line-height: 20px; border: 1px solid #ddd; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); -webkit-transition: all 0.2s ease-in-out; -moz-transition: all 0.2s ease-in-out; -o-transition: all 0.2s ease-in-out; transition: all 0.2s ease-in-out; } a.thumbnail:hover, a.thumbnail:focus { border-color: #0088cc; -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); } .thumbnail > img { display: block; max-width: 100%; margin-right: auto; margin-left: auto; } .thumbnail .caption { padding: 9px; color: #555555; } .media, .media-body { overflow: hidden; *overflow: visible; zoom: 1; } .media, .media .media { margin-top: 15px; } .media:first-child { margin-top: 0; } .media-object { display: block; } .media-heading { margin: 0 0 5px; } .media > .pull-left { margin-right: 10px; } .media > .pull-right { margin-left: 10px; } .media-list { margin-left: 0; list-style: none; } .label, .badge { display: inline-block; padding: 2px 4px; font-size: 11.844px; font-weight: bold; line-height: 14px; color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); white-space: nowrap; vertical-align: baseline; background-color: #999999; } .label { -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } .badge { padding-right: 9px; padding-left: 9px; -webkit-border-radius: 9px; -moz-border-radius: 9px; border-radius: 9px; } .label:empty, .badge:empty { display: none; } a.label:hover, a.label:focus, a.badge:hover, a.badge:focus { color: #ffffff; text-decoration: none; cursor: pointer; } .label-important, .badge-important { background-color: #b94a48; } .label-important[href], .badge-important[href] { background-color: #953b39; } .label-warning, .badge-warning { background-color: #f89406; } .label-warning[href], .badge-warning[href] { background-color: #c67605; } .label-success, .badge-success { background-color: #468847; } .label-success[href], .badge-success[href] { background-color: #356635; } .label-info, .badge-info { background-color: #3a87ad; } .label-info[href], .badge-info[href] { background-color: #2d6987; } .label-inverse, .badge-inverse { background-color: #333333; } .label-inverse[href], .badge-inverse[href] { background-color: #1a1a1a; } .btn .label, .btn .badge { position: relative; top: -1px; } .btn-mini .label, .btn-mini .badge { top: 0; } @-webkit-keyframes progress-bar-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } @-moz-keyframes progress-bar-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } @-ms-keyframes progress-bar-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } @-o-keyframes progress-bar-stripes { from { background-position: 0 0; } to { background-position: 40px 0; } } @keyframes progress-bar-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } .progress { height: 20px; margin-bottom: 20px; overflow: hidden; background-color: #f7f7f7; background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); background-repeat: repeat-x; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); } .progress .bar { float: left; width: 0; height: 100%; font-size: 12px; color: #ffffff; text-align: center; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #0e90d2; background-image: -moz-linear-gradient(top, #149bdf, #0480be); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); background-image: -webkit-linear-gradient(top, #149bdf, #0480be); background-image: -o-linear-gradient(top, #149bdf, #0480be); background-image: linear-gradient(to bottom, #149bdf, #0480be); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; -webkit-transition: width 0.6s ease; -moz-transition: width 0.6s ease; -o-transition: width 0.6s ease; transition: width 0.6s ease; } .progress .bar + .bar { -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); } .progress-striped .bar { background-color: #149bdf; background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -webkit-background-size: 40px 40px; -moz-background-size: 40px 40px; -o-background-size: 40px 40px; background-size: 40px 40px; } .progress.active .bar { -webkit-animation: progress-bar-stripes 2s linear infinite; -moz-animation: progress-bar-stripes 2s linear infinite; -ms-animation: progress-bar-stripes 2s linear infinite; -o-animation: progress-bar-stripes 2s linear infinite; animation: progress-bar-stripes 2s linear infinite; } .progress-danger .bar, .progress .bar-danger { background-color: #dd514c; background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); } .progress-danger.progress-striped .bar, .progress-striped .bar-danger { background-color: #ee5f5b; background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } .progress-success .bar, .progress .bar-success { background-color: #5eb95e; background-image: -moz-linear-gradient(top, #62c462, #57a957); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); background-image: -webkit-linear-gradient(top, #62c462, #57a957); background-image: -o-linear-gradient(top, #62c462, #57a957); background-image: linear-gradient(to bottom, #62c462, #57a957); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); } .progress-success.progress-striped .bar, .progress-striped .bar-success { background-color: #62c462; background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } .progress-info .bar, .progress .bar-info { background-color: #4bb1cf; background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); background-image: -o-linear-gradient(top, #5bc0de, #339bb9); background-image: linear-gradient(to bottom, #5bc0de, #339bb9); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); } .progress-info.progress-striped .bar, .progress-striped .bar-info { background-color: #5bc0de; background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } .progress-warning .bar, .progress .bar-warning { background-color: #faa732; background-image: -moz-linear-gradient(top, #fbb450, #f89406); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); background-image: -webkit-linear-gradient(top, #fbb450, #f89406); background-image: -o-linear-gradient(top, #fbb450, #f89406); background-image: linear-gradient(to bottom, #fbb450, #f89406); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); } .progress-warning.progress-striped .bar, .progress-striped .bar-warning { background-color: #fbb450; background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } .accordion { margin-bottom: 20px; } .accordion-group { margin-bottom: 2px; border: 1px solid #e5e5e5; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .accordion-heading { border-bottom: 0; } .accordion-heading .accordion-toggle { display: block; padding: 8px 15px; } .accordion-toggle { cursor: pointer; } .accordion-inner { padding: 9px 15px; border-top: 1px solid #e5e5e5; } .carousel { position: relative; margin-bottom: 20px; line-height: 1; } .carousel-inner { position: relative; width: 100%; overflow: hidden; } .carousel-inner > .item { position: relative; display: none; -webkit-transition: 0.6s ease-in-out left; -moz-transition: 0.6s ease-in-out left; -o-transition: 0.6s ease-in-out left; transition: 0.6s ease-in-out left; } .carousel-inner > .item > img, .carousel-inner > .item > a > img { display: block; line-height: 1; } .carousel-inner > .active, .carousel-inner > .next, .carousel-inner > .prev { display: block; } .carousel-inner > .active { left: 0; } .carousel-inner > .next, .carousel-inner > .prev { position: absolute; top: 0; width: 100%; } .carousel-inner > .next { left: 100%; } .carousel-inner > .prev { left: -100%; } .carousel-inner > .next.left, .carousel-inner > .prev.right { left: 0; } .carousel-inner > .active.left { left: -100%; } .carousel-inner > .active.right { left: 100%; } .carousel-control { position: absolute; top: 40%; left: 15px; width: 40px; height: 40px; margin-top: -20px; font-size: 60px; font-weight: 100; line-height: 30px; color: #ffffff; text-align: center; background: #222222; border: 3px solid #ffffff; -webkit-border-radius: 23px; -moz-border-radius: 23px; border-radius: 23px; opacity: 0.5; filter: alpha(opacity=50); } .carousel-control.right { right: 15px; left: auto; } .carousel-control:hover, .carousel-control:focus { color: #ffffff; text-decoration: none; opacity: 0.9; filter: alpha(opacity=90); } .carousel-indicators { position: absolute; top: 15px; right: 15px; z-index: 5; margin: 0; list-style: none; } .carousel-indicators li { display: block; float: left; width: 10px; height: 10px; margin-left: 5px; text-indent: -999px; background-color: #ccc; background-color: rgba(255, 255, 255, 0.25); border-radius: 5px; } .carousel-indicators .active { background-color: #fff; } .carousel-caption { position: absolute; right: 0; bottom: 0; left: 0; padding: 15px; background: #333333; background: rgba(0, 0, 0, 0.75); } .carousel-caption h4, .carousel-caption p { line-height: 20px; color: #ffffff; } .carousel-caption h4 { margin: 0 0 5px; } .carousel-caption p { margin-bottom: 0; } .hero-unit { padding: 60px; margin-bottom: 30px; font-size: 18px; font-weight: 200; line-height: 30px; color: inherit; background-color: #eeeeee; -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; } .hero-unit h1 { margin-bottom: 0; font-size: 60px; line-height: 1; letter-spacing: -1px; color: inherit; } .hero-unit li { line-height: 30px; } .pull-right { float: right; } .pull-left { float: left; } .hide { display: none; } .show { display: block; } .invisible { visibility: hidden; } .affix { position: fixed; } ------------XBLsZq9NkNLk5QAFF8cyEr Content-Disposition: inline; filename=bootstrap-responsive.css Content-Type: text/css; name=bootstrap-responsive.css Content-Location: http://www.euroresidentes.com/bootstrap/css/bootstrap-responsive.css Content-Transfer-Encoding: 8bit /*! * Bootstrap Responsive v2.3.1 * * Copyright 2012 Twitter, Inc * Licensed under the Apache License v2.0 * http://www.apache.org/licenses/LICENSE-2.0 * * Designed and built with all the love in the world @twitter by @mdo and @fat. */ .clearfix { *zoom: 1; } .clearfix:before, .clearfix:after { display: table; line-height: 0; content: ""; } .clearfix:after { clear: both; } .hide-text { font: 0/0 a; color: transparent; text-shadow: none; background-color: transparent; border: 0; } .input-block-level { display: block; width: 100%; min-height: 30px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } @-ms-viewport { width: device-width; } .hidden { display: none; visibility: hidden; } .visible-phone { display: none !important; } .visible-tablet { display: none !important; } .hidden-desktop { display: none !important; } .visible-desktop { display: inherit !important; } @media (min-width: 768px) and (max-width: 979px) { .hidden-desktop { display: inherit !important; } .visible-desktop { display: none !important ; } .visible-tablet { display: inherit !important; } .hidden-tablet { display: none !important; } } @media (max-width: 767px) { .hidden-desktop { display: inherit !important; } .visible-desktop { display: none !important; } .visible-phone { display: inherit !important; } .hidden-phone { display: none !important; } } .visible-print { display: none !important; } @media print { .visible-print { display: inherit !important; } .hidden-print { display: none !important; } } @media (min-width: 1200px) { .row { margin-left: -30px; *zoom: 1; } .row:before, .row:after { display: table; line-height: 0; content: ""; } .row:after { clear: both; } [class*="span"] { float: left; min-height: 1px; margin-left: 30px; } .container, .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { width: 1170px; } .span12 { width: 1170px; } .span11 { width: 1070px; } .span10 { width: 970px; } .span9 { width: 870px; } .span8 { width: 770px; } .span7 { width: 670px; } .span6 { width: 570px; } .span5 { width: 470px; } .span4 { width: 370px; } .span3 { width: 270px; } .span2 { width: 170px; } .span1 { width: 70px; } .offset12 { margin-left: 1230px; } .offset11 { margin-left: 1130px; } .offset10 { margin-left: 1030px; } .offset9 { margin-left: 930px; } .offset8 { margin-left: 830px; } .offset7 { margin-left: 730px; } .offset6 { margin-left: 630px; } .offset5 { margin-left: 530px; } .offset4 { margin-left: 430px; } .offset3 { margin-left: 330px; } .offset2 { margin-left: 230px; } .offset1 { margin-left: 130px; } .row-fluid { width: 100%; *zoom: 1; } .row-fluid:before, .row-fluid:after { display: table; line-height: 0; content: ""; } .row-fluid:after { clear: both; } .row-fluid [class*="span"] { display: block; float: left; width: 100%; min-height: 30px; margin-left: 2.564102564102564%; *margin-left: 2.5109110747408616%; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .row-fluid [class*="span"]:first-child { margin-left: 0; } .row-fluid .controls-row [class*="span"] + [class*="span"] { margin-left: 2.564102564102564%; } .row-fluid .span12 { width: 100%; *width: 99.94680851063829%; } .row-fluid .span11 { width: 91.45299145299145%; *width: 91.39979996362975%; } .row-fluid .span10 { width: 82.90598290598291%; *width: 82.8527914166212%; } .row-fluid .span9 { width: 74.35897435897436%; *width: 74.30578286961266%; } .row-fluid .span8 { width: 65.81196581196582%; *width: 65.75877432260411%; } .row-fluid .span7 { width: 57.26495726495726%; *width: 57.21176577559556%; } .row-fluid .span6 { width: 48.717948717948715%; *width: 48.664757228587014%; } .row-fluid .span5 { width: 40.17094017094017%; *width: 40.11774868157847%; } .row-fluid .span4 { width: 31.623931623931625%; *width: 31.570740134569924%; } .row-fluid .span3 { width: 23.076923076923077%; *width: 23.023731587561375%; } .row-fluid .span2 { width: 14.52991452991453%; *width: 14.476723040552828%; } .row-fluid .span1 { width: 5.982905982905983%; *width: 5.929714493544281%; } .row-fluid .offset12 { margin-left: 105.12820512820512%; *margin-left: 105.02182214948171%; } .row-fluid .offset12:first-child { margin-left: 102.56410256410257%; *margin-left: 102.45771958537915%; } .row-fluid .offset11 { margin-left: 96.58119658119658%; *margin-left: 96.47481360247316%; } .row-fluid .offset11:first-child { margin-left: 94.01709401709402%; *margin-left: 93.91071103837061%; } .row-fluid .offset10 { margin-left: 88.03418803418803%; *margin-left: 87.92780505546462%; } .row-fluid .offset10:first-child { margin-left: 85.47008547008548%; *margin-left: 85.36370249136206%; } .row-fluid .offset9 { margin-left: 79.48717948717949%; *margin-left: 79.38079650845607%; } .row-fluid .offset9:first-child { margin-left: 76.92307692307693%; *margin-left: 76.81669394435352%; } .row-fluid .offset8 { margin-left: 70.94017094017094%; *margin-left: 70.83378796144753%; } .row-fluid .offset8:first-child { margin-left: 68.37606837606839%; *margin-left: 68.26968539734497%; } .row-fluid .offset7 { margin-left: 62.393162393162385%; *margin-left: 62.28677941443899%; } .row-fluid .offset7:first-child { margin-left: 59.82905982905982%; *margin-left: 59.72267685033642%; } .row-fluid .offset6 { margin-left: 53.84615384615384%; *margin-left: 53.739770867430444%; } .row-fluid .offset6:first-child { margin-left: 51.28205128205128%; *margin-left: 51.175668303327875%; } .row-fluid .offset5 { margin-left: 45.299145299145295%; *margin-left: 45.1927623204219%; } .row-fluid .offset5:first-child { margin-left: 42.73504273504273%; *margin-left: 42.62865975631933%; } .row-fluid .offset4 { margin-left: 36.75213675213675%; *margin-left: 36.645753773413354%; } .row-fluid .offset4:first-child { margin-left: 34.18803418803419%; *margin-left: 34.081651209310785%; } .row-fluid .offset3 { margin-left: 28.205128205128204%; *margin-left: 28.0987452264048%; } .row-fluid .offset3:first-child { margin-left: 25.641025641025642%; *margin-left: 25.53464266230224%; } .row-fluid .offset2 { margin-left: 19.65811965811966%; *margin-left: 19.551736679396257%; } .row-fluid .offset2:first-child { margin-left: 17.094017094017094%; *margin-left: 16.98763411529369%; } .row-fluid .offset1 { margin-left: 11.11111111111111%; *margin-left: 11.004728132387708%; } .row-fluid .offset1:first-child { margin-left: 8.547008547008547%; *margin-left: 8.440625568285142%; } input, textarea, .uneditable-input { margin-left: 0; } .controls-row [class*="span"] + [class*="span"] { margin-left: 30px; } input.span12, textarea.span12, .uneditable-input.span12 { width: 1156px; } input.span11, textarea.span11, .uneditable-input.span11 { width: 1056px; } input.span10, textarea.span10, .uneditable-input.span10 { width: 956px; } input.span9, textarea.span9, .uneditable-input.span9 { width: 856px; } input.span8, textarea.span8, .uneditable-input.span8 { width: 756px; } input.span7, textarea.span7, .uneditable-input.span7 { width: 656px; } input.span6, textarea.span6, .uneditable-input.span6 { width: 556px; } input.span5, textarea.span5, .uneditable-input.span5 { width: 456px; } input.span4, textarea.span4, .uneditable-input.span4 { width: 356px; } input.span3, textarea.span3, .uneditable-input.span3 { width: 256px; } input.span2, textarea.span2, .uneditable-input.span2 { width: 156px; } input.span1, textarea.span1, .uneditable-input.span1 { width: 56px; } .thumbnails { margin-left: -30px; } .thumbnails > li { margin-left: 30px; } .row-fluid .thumbnails { margin-left: 0; } } @media (min-width: 768px) and (max-width: 979px) { .row { margin-left: -20px; *zoom: 1; } .row:before, .row:after { display: table; line-height: 0; content: ""; } .row:after { clear: both; } [class*="span"] { float: left; min-height: 1px; margin-left: 20px; } .container, .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { width: 724px; } .span12 { width: 724px; } .span11 { width: 662px; } .span10 { width: 600px; } .span9 { width: 538px; } .span8 { width: 476px; } .span7 { width: 414px; } .span6 { width: 352px; } .span5 { width: 290px; } .span4 { width: 228px; } .span3 { width: 166px; } .span2 { width: 104px; } .span1 { width: 42px; } .offset12 { margin-left: 764px; } .offset11 { margin-left: 702px; } .offset10 { margin-left: 640px; } .offset9 { margin-left: 578px; } .offset8 { margin-left: 516px; } .offset7 { margin-left: 454px; } .offset6 { margin-left: 392px; } .offset5 { margin-left: 330px; } .offset4 { margin-left: 268px; } .offset3 { margin-left: 206px; } .offset2 { margin-left: 144px; } .offset1 { margin-left: 82px; } .row-fluid { width: 100%; *zoom: 1; } .row-fluid:before, .row-fluid:after { display: table; line-height: 0; content: ""; } .row-fluid:after { clear: both; } .row-fluid [class*="span"] { display: block; float: left; width: 100%; min-height: 30px; margin-left: 2.7624309392265194%; *margin-left: 2.709239449864817%; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .row-fluid [class*="span"]:first-child { margin-left: 0; } .row-fluid .controls-row [class*="span"] + [class*="span"] { margin-left: 2.7624309392265194%; } .row-fluid .span12 { width: 100%; *width: 99.94680851063829%; } .row-fluid .span11 { width: 91.43646408839778%; *width: 91.38327259903608%; } .row-fluid .span10 { width: 82.87292817679558%; *width: 82.81973668743387%; } .row-fluid .span9 { width: 74.30939226519337%; *width: 74.25620077583166%; } .row-fluid .span8 { width: 65.74585635359117%; *width: 65.69266486422946%; } .row-fluid .span7 { width: 57.18232044198895%; *width: 57.12912895262725%; } .row-fluid .span6 { width: 48.61878453038674%; *width: 48.56559304102504%; } .row-fluid .span5 { width: 40.05524861878453%; *width: 40.00205712942283%; } .row-fluid .span4 { width: 31.491712707182323%; *width: 31.43852121782062%; } .row-fluid .span3 { width: 22.92817679558011%; *width: 22.87498530621841%; } .row-fluid .span2 { width: 14.3646408839779%; *width: 14.311449394616199%; } .row-fluid .span1 { width: 5.801104972375691%; *width: 5.747913483013988%; } .row-fluid .offset12 { margin-left: 105.52486187845304%; *margin-left: 105.41847889972962%; } .row-fluid .offset12:first-child { margin-left: 102.76243093922652%; *margin-left: 102.6560479605031%; } .row-fluid .offset11 { margin-left: 96.96132596685082%; *margin-left: 96.8549429881274%; } .row-fluid .offset11:first-child { margin-left: 94.1988950276243%; *margin-left: 94.09251204890089%; } .row-fluid .offset10 { margin-left: 88.39779005524862%; *margin-left: 88.2914070765252%; } .row-fluid .offset10:first-child { margin-left: 85.6353591160221%; *margin-left: 85.52897613729868%; } .row-fluid .offset9 { margin-left: 79.8342541436464%; *margin-left: 79.72787116492299%; } .row-fluid .offset9:first-child { margin-left: 77.07182320441989%; *margin-left: 76.96544022569647%; } .row-fluid .offset8 { margin-left: 71.2707182320442%; *margin-left: 71.16433525332079%; } .row-fluid .offset8:first-child { margin-left: 68.50828729281768%; *margin-left: 68.40190431409427%; } .row-fluid .offset7 { margin-left: 62.70718232044199%; *margin-left: 62.600799341718584%; } .row-fluid .offset7:first-child { margin-left: 59.94475138121547%; *margin-left: 59.838368402492065%; } .row-fluid .offset6 { margin-left: 54.14364640883978%; *margin-left: 54.037263430116376%; } .row-fluid .offset6:first-child { margin-left: 51.38121546961326%; *margin-left: 51.27483249088986%; } .row-fluid .offset5 { margin-left: 45.58011049723757%; *margin-left: 45.47372751851417%; } .row-fluid .offset5:first-child { margin-left: 42.81767955801105%; *margin-left: 42.71129657928765%; } .row-fluid .offset4 { margin-left: 37.01657458563536%; *margin-left: 36.91019160691196%; } .row-fluid .offset4:first-child { margin-left: 34.25414364640884%; *margin-left: 34.14776066768544%; } .row-fluid .offset3 { margin-left: 28.45303867403315%; *margin-left: 28.346655695309746%; } .row-fluid .offset3:first-child { margin-left: 25.69060773480663%; *margin-left: 25.584224756083227%; } .row-fluid .offset2 { margin-left: 19.88950276243094%; *margin-left: 19.783119783707537%; } .row-fluid .offset2:first-child { margin-left: 17.12707182320442%; *margin-left: 17.02068884448102%; } .row-fluid .offset1 { margin-left: 11.32596685082873%; *margin-left: 11.219583872105325%; } .row-fluid .offset1:first-child { margin-left: 8.56353591160221%; *margin-left: 8.457152932878806%; } input, textarea, .uneditable-input { margin-left: 0; } .controls-row [class*="span"] + [class*="span"] { margin-left: 20px; } input.span12, textarea.span12, .uneditable-input.span12 { width: 710px; } input.span11, textarea.span11, .uneditable-input.span11 { width: 648px; } input.span10, textarea.span10, .uneditable-input.span10 { width: 586px; } input.span9, textarea.span9, .uneditable-input.span9 { width: 524px; } input.span8, textarea.span8, .uneditable-input.span8 { width: 462px; } input.span7, textarea.span7, .uneditable-input.span7 { width: 400px; } input.span6, textarea.span6, .uneditable-input.span6 { width: 338px; } input.span5, textarea.span5, .uneditable-input.span5 { width: 276px; } input.span4, textarea.span4, .uneditable-input.span4 { width: 214px; } input.span3, textarea.span3, .uneditable-input.span3 { width: 152px; } input.span2, textarea.span2, .uneditable-input.span2 { width: 90px; } input.span1, textarea.span1, .uneditable-input.span1 { width: 28px; } } @media (max-width: 767px) { body { padding-right: 20px; padding-left: 20px; } .navbar-fixed-top, .navbar-fixed-bottom, .navbar-static-top { margin-right: -20px; margin-left: -20px; } .container-fluid { padding: 0; } .dl-horizontal dt { float: none; width: auto; clear: none; text-align: left; } .dl-horizontal dd { margin-left: 0; } .container { width: auto; } .row-fluid { width: 100%; } .row, .thumbnails { margin-left: 0; } .thumbnails > li { float: none; margin-left: 0; } [class*="span"], .uneditable-input[class*="span"], .row-fluid [class*="span"] { display: block; float: none; width: 100%; margin-left: 0; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .span12, .row-fluid .span12 { width: 100%; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .row-fluid [class*="offset"]:first-child { margin-left: 0; } .input-large, .input-xlarge, .input-xxlarge, input[class*="span"], select[class*="span"], textarea[class*="span"], .uneditable-input { display: block; width: 100%; min-height: 30px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .input-prepend input, .input-append input, .input-prepend input[class*="span"], .input-append input[class*="span"] { display: inline-block; width: auto; } .controls-row [class*="span"] + [class*="span"] { margin-left: 0; } .modal { position: fixed; top: 20px; right: 20px; left: 20px; width: auto; margin: 0; } .modal.fade { top: -100px; } .modal.fade.in { top: 20px; } } @media (max-width: 480px) { .nav-collapse { -webkit-transform: translate3d(0, 0, 0); } .page-header h1 small { display: block; line-height: 20px; } input[type="checkbox"], input[type="radio"] { border: 1px solid #ccc; } .form-horizontal .control-label { float: none; width: auto; padding-top: 0; text-align: left; } .form-horizontal .controls { margin-left: 0; } .form-horizontal .control-list { padding-top: 0; } .form-horizontal .form-actions { padding-right: 10px; padding-left: 10px; } .media .pull-left, .media .pull-right { display: block; float: none; margin-bottom: 10px; } .media-object { margin-right: 0; margin-left: 0; } .modal { top: 10px; right: 10px; left: 10px; } .modal-header .close { padding: 10px; margin: -10px; } .carousel-caption { position: static; } } @media (max-width: 979px) { body { padding-top: 0; } .navbar-fixed-top, .navbar-fixed-bottom { position: static; } .navbar-fixed-top { margin-bottom: 20px; } .navbar-fixed-bottom { margin-top: 20px; } .navbar-fixed-top .navbar-inner, .navbar-fixed-bottom .navbar-inner { padding: 5px; } .navbar .container { width: auto; padding: 0; } .navbar .brand { padding-right: 10px; padding-left: 10px; margin: 0 0 0 -5px; } .nav-collapse { clear: both; } .nav-collapse .nav { float: none; margin: 0 0 10px; } .nav-collapse .nav > li { float: none; } .nav-collapse .nav > li > a { margin-bottom: 2px; } .nav-collapse .nav > .divider-vertical { display: none; } .nav-collapse .nav .nav-header { color: #777777; text-shadow: none; } .nav-collapse .nav > li > a, .nav-collapse .dropdown-menu a { padding: 9px 15px; font-weight: bold; color: #777777; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } .nav-collapse .btn { padding: 4px 10px 4px; font-weight: normal; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .nav-collapse .dropdown-menu li + li a { margin-bottom: 2px; } .nav-collapse .nav > li > a:hover, .nav-collapse .nav > li > a:focus, .nav-collapse .dropdown-menu a:hover, .nav-collapse .dropdown-menu a:focus { background-color: #f2f2f2; } .navbar-inverse .nav-collapse .nav > li > a, .navbar-inverse .nav-collapse .dropdown-menu a { color: #999999; } .navbar-inverse .nav-collapse .nav > li > a:hover, .navbar-inverse .nav-collapse .nav > li > a:focus, .navbar-inverse .nav-collapse .dropdown-menu a:hover, .navbar-inverse .nav-collapse .dropdown-menu a:focus { background-color: #111111; } .nav-collapse.in .btn-group { padding: 0; margin-top: 5px; } .nav-collapse .dropdown-menu { position: static; top: auto; left: auto; display: none; float: none; max-width: none; padding: 0; margin: 0 15px; background-color: transparent; border: none; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } .nav-collapse .open > .dropdown-menu { display: block; } .nav-collapse .dropdown-menu:before, .nav-collapse .dropdown-menu:after { display: none; } .nav-collapse .dropdown-menu .divider { display: none; } .nav-collapse .nav > li > .dropdown-menu:before, .nav-collapse .nav > li > .dropdown-menu:after { display: none; } .nav-collapse .navbar-form, .nav-collapse .navbar-search { float: none; padding: 10px 15px; margin: 10px 0; border-top: 1px solid #f2f2f2; border-bottom: 1px solid #f2f2f2; -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); } .navbar-inverse .nav-collapse .navbar-form, .navbar-inverse .nav-collapse .navbar-search { border-top-color: #111111; border-bottom-color: #111111; } .navbar .nav-collapse .nav.pull-right { float: none; margin-left: 0; } .nav-collapse, .nav-collapse.collapse { height: 0; overflow: hidden; } .navbar .btn-navbar { display: block; } .navbar-static .navbar-inner { padding-right: 10px; padding-left: 10px; } } @media (min-width: 980px) { .nav-collapse.collapse { height: auto !important; overflow: visible !important; } } ------------XBLsZq9NkNLk5QAFF8cyEr Content-Disposition: inline; filename=twb2-col-ordering.css Content-Type: text/css; name=twb2-col-ordering.css Content-Location: http://www.euroresidentes.com/css/twb2-col-ordering.css Content-Transfer-Encoding: 8bit /*Twitter Bootstrap 2 - Colum ordering como version 3*/ @media (min-width: 768px) { .col-md-push-1, .col-md-push-2, .col-md-push-3, .col-md-push-4, .col-md-push-5, .col-md-push-6, .col-md-push-7, .col-md-push-8, .col-md-push-9, .col-md-push-10, .col-md-push-11, .col-md-pull-1, .col-md-pull-2, .col-md-pull-3, .col-md-pull-4, .col-md-pull-5, .col-md-pull-6, .col-md-pull-7, .col-md-pull-8, .col-md-pull-9, .col-md-pull-10, .col-md-pull-11 { position: relative; } .col-md-push-1 { left: 8.333333333333332%; } .col-md-push-2 { left: 16.666666666666664%; } .col-md-push-3 { left: 25%; } .col-md-push-4 { left: 33.33333333333333%; } .col-md-push-5 { left: 41.66666666666667%; } .col-md-push-6 { left: 50%; } .col-md-push-7 { left: 58.333333333333336%; } .col-md-push-8 { left: 66.66666666666666%; } .col-md-push-9 { left: 75%; } .col-md-push-10 { left: 83.33333333333334%; } .col-md-push-11 { left: 91.66666666666666%; } .col-md-pull-0 { right: auto; } .col-md-pull-1 { right: 8.333333333333332%; } .col-md-pull-2 { right: 16.666666666666664%; } .col-md-pull-3 { right: 25%; } .col-md-pull-4 { right: 33.33333333333333%; } .col-md-pull-5 { right: 41.66666666666667%; } .col-md-pull-6 { right: 50%; } .col-md-pull-7 { right: 58.333333333333336%; } .col-md-pull-8 { right: 66.66666666666666%; } .col-md-pull-9 { right: 75%; } .col-md-pull-10 { right: 83.33333333333334%; } .col-md-pull-11 { right: 91.66666666666666%; } } ------------XBLsZq9NkNLk5QAFF8cyEr Content-Disposition: inline; filename=css.css Content-Type: text/css; name=css.css Content-Location: http://fonts.googleapis.com/css?family=Nobile Content-Transfer-Encoding: 8bit @font-face { font-family: 'Nobile'; font-style: normal; font-weight: 400; src: local('Nobile'), local('Nobile-Regular'), url(http://fonts.gstatic.com/s/nobile/v7/LJdSuYk02E6wtyvk5bnaeA.woff) format('woff'); } ------------XBLsZq9NkNLk5QAFF8cyEr Content-Disposition: inline Content-Type: image/jpeg Content-Location: http://www.euroresidentes.com/imagenes/home/bg_grey.jpg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAcEBAQFBAcFBQcKBwUHCgwJBwcJDA0L CwwLCw0RDQ0NDQ0NEQ0PEBEQDw0UFBYWFBQeHR0dHiIiIiIiIiIiIiL/2wBDAQgH Bw0MDRgQEBgaFREVGiAgICAgICAgICAgICAhICAgICAgISEhICAgISEhISEhISEi IiIiIiIiIiIiIiIiIiL/wAARCAAeAAoDAREAAhEBAxEB/8QAFwABAAMAAAAAAAAA AAAAAAAAAAUHCP/EABsQAQAABwAAAAAAAAAAAAAAAAAEBQcXVpTS/8QAFQEBAQAA AAAAAAAAAAAAAAAAAAH/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEA PwCrVAGxrdU+x6V6UPwgW6p9j0r0ofgE6AAAD//Z ------------XBLsZq9NkNLk5QAFF8cyEr Content-Disposition: inline; filename=home_general.css Content-Type: text/css; charset=utf-8; name=home_general.css Content-Location: http://www.euroresidentes.com/css/home_general.css Content-Transfer-Encoding: 8bit @charset "utf-8"; /* CSS Document */ body { background-color: #ffffff; } a:visited { color: #0088cc; } a:hover { color: #333333; } @media print { a[href]:after { content: ""; } } /***************** HEADER *********************/ .bgheader{ background-color: #ffffff; background-repeat: repeat-x; background-image: url(http://www.euroresidentes.com/imagenes/home/bg_grey.jpg); } @media (max-width: 767px) { .bgheader { margin-left: -20px; margin-right: -20px; } .bgheader .container { margin-left: 20px; margin-right: 20px; } } .header { width: 100%; color: #FFFFFF; font-family: "Gill Sans", "Gill Sans MT", "Myriad Pro", "DejaVu Sans Condensed", Helvetica, Arial, sans-serif; line-height: 1,5em; font-style: normal; font-size: large; text-align: left; border-radius: 10px 10px 0px 0px; margin-top: 0px; float: left; min-height: 40px; } .header_logo{ margin-top: 16px; margin-left:5px; margin-bottom:20px; } .cap_ocio { text-align: left; background-color: #F3F3F3; font-size: 16px; padding: 10px; margin: 0 0 10px 0; } /***************** FIN HEADER *********************/ /*****************varios *********************/ .lista li { margin-bottom:12px; } .social_media{ margin-top: 30px; margin-bottom:20px; margin-left: 130px; } .social_media img { margin-right:3px; float:left; } .share_buttons{ margin-top: 10px; margin-right: 5px; margin-bottom: 10px; } .share_buttons img { float:right; min-height: 20px; min-width: 20px; margin-right: 3px; } .buscador{ float: left; margin-top: 18px; padding: 5px; display: inline-block; width: 300px; margin-left: -17px; } /***************** Menu izquierda *********************/ .menu_izquierda { color: #333333; border-top-color: #406773; background-color: #F2F2ED; padding: 10px; font-size: small; border-top-style: solid; } .menu_izquierda ul { margin-left: 0; } .menu_izquierda li { padding: 8px; border-bottom: 1px solid #CCCCCC; list-style-position: inside; list-style-type: none; } .menu_izquierda li { padding: 8px; border-bottom: 1px solid #CCCCCC; list-style-position: inside; list-style-type: none; } .menu_izquierda li a.gris { color:#333; text-decoration:none; } .menu_izquierda li a:hover.gris { text-decoration:underline; } /***************** fin Menu izquierda *********************/ /***************** Contenido *********************/ h1 { font-family: 'Nobile', sans-serif; font-size: 32px; margin-left: 10px; margin-bottom: 10px; margin-top: 10px; font-weight: bold; font-style: normal; color: #393636; } h2 { font-family: 'Nobile', sans-serif; font-size:25px; margin-bottom: 10px; font-weight: bold; font-style: normal; line-height: 30px; } h3 { font-family: 'Nobile', sans-serif; font-size: 20px; line-height: 22px; font-weight: bold; font-style: normal; } h4 { font-family: 'Nobile', sans-serif; font-size: 18px; line-height: 18px; font-weight: bold; font-style: normal; line-height:20px; } p { margin-bottom: 20px; } .texto_autor { font-family: 'Nobile', sans-serif; font-size: 12px; line-height: 5px; line-height:16px; } .contenido_principal{ font-size: small; } .contenido_principal img{ float: left; padding: 5px; } .publicidad_cuadro{ float: left; margin-right: 2em; padding-top: 15px; } .publi_rectangular { text-align: center; padding: 25px 0 25px 0 ; } .publi_rectangular_sup { text-align: center; padding: 10px 0 25px 0 ; } .publi_rectangular_sup img { vertical-align: top; } .zona_busca { padding: 10px 0 25px 0 ; } hr { height: 1px; border-top: 1px solid grey; margin-bottom: 10px; } .imagen_izquierda { float: left; margin-right:10px; vertical-align: top; } .imagen_derecha { float: right; margin-top:20px; margin-left:20px; margin-right:20px; margin-bottom:30px; } #preview a:hover { text-decoration: underline !important; } .img-responsive{ max-width:100%; display:block; height:auto; } .frases_contenido p { display:block; padding: 5px 10px 20px 8px; } .horoscopos{ margin-top: 10px; margin-bottom:20px; } .horoscopos img { margin-right:5px; margin-bottom:10px; } .caja { border: thin solid #CCCCCC; padding: 5px; } .caja_padding_inferior{ padding-bottom: 30px; } .caja_margen_inferior{ margin-bottom: 10px; } a.enlaceautor { font-family: 'Nobile', sans-serif; color: #666; text-decoration:none; } a.enlaceautor:link { font-family: 'Nobile', sans-serif; color: #666; text-decoration:none; } a.enlaceautor:visited { font-family: 'Nobile', sans-serif; color: #666; } a.enlaceautor:hover { font-family: 'Nobile', sans-serif; color: #00CCFF; text-decoration:none; } .noticia-principal { font-family: 'Nobile', Helvetica, Arial, sans-serif; font-size: 27px; line-height: 30px; margin-bottom: 20px; font-weight: bold; } /***************** fin Contenido *********************/ .sidebar{ } .intro { padding-bottom: 10px; } /*****************Footer *********************/ .footer { color: #666; background-color: #EFEFEF; text-align: left; padding:20px; } .footer a:link { color: #666; text-decoration: none; } .footer a:visited { text-decoration: none; color: #666; } .footer a:hover { text-decoration: underline; color:#666; } .footer a:active { text-decoration: none; } .pie{ color: #666; background-color: #EFEFEF; text-align: left; float:left; padding: 30px; margin-top: 20px !important; margin-bottom:20px !important; width: 100%; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; margin-left: auto; margin-right: auto; } .social_media_pie{ margin-top: 10px; margin-bottom:60px; } .social_media_pie img { margin-right:3px; float:left; } /***************** fin Footer *********************/ /***************** TABLA *********************/ @media (max-width: 768px) { .table-responsive { width: 100%; margin-bottom: 15px; overflow-x: scroll; overflow-y: hidden; border: 1px solid #dddddd; } .table-responsive > .table { margin-bottom: 0; background-color: #fff; } /* .table-responsive th, .table-responsive td { white-space: nowrap; } */ } /***************** TABLA final *********************/ .diccionario thead th{ color: #ffffff; background-color: #406773; } .diccionario th{ background-color: #EEE; } /***************** Colores Texto *********************/ .texto-verde{ color: #00B200; } .texto-rojo{ color: #FF3300; } .texto-resaltado-bg-verde{ color: #FFF; background-color: #090; padding:8px; } .texto-resaltado-bg-verde1{ color: #333; background-color: #C6FFC6; padding: 8px; } .texto-resaltado-bg-naranja{ color: #FFF; background-color: #FF8A00; padding:8px; } .texto-resaltado-bg-rojo{ color: #FFF; background-color: #FF3300; padding:8px; } .texto-resaltado-bg-gris{ color: #FFF; background-color: #333; padding:8px; } .texto-resaltado-bg-gris1{ color: #FFF; background-color: #999; padding:8px; } .texto-resaltado-bg-gris2{ color: #393636; background-color: #F2F2F2; padding: 8px; } .texto-resaltado-bg-azul{ color: #FFF; background-color: #00BFFF; padding:8px; } .texto-resaltado-bg-amarillo{ color: #FFF; background-color: #FFBF00; padding:8px; } .texto-resaltado-bg-morado{ color: #FFF; background-color: #300040; padding:8px; } /* BOOTSTRAP OVERRRIDES */ /* A los botones de bootstrap 2 les falta contemplar el caso "visited": */ .btn-success:visited { color: #ffffff; background-color: #51a351; *background-color: #499249; } /* Video responsive: poner un div con class 'flex-video' que envuelva al iframe Tomado de Zurb Foundation */ .flex-video { position: relative; padding-top: 1.5625em; padding-bottom: 67.5%; height: 0; margin-bottom: 1em; overflow: hidden; } .flex-video.widescreen { padding-bottom: 57.25%; } .flex-video.vimeo { padding-top: 0; } .flex-video iframe, .flex-video object, .flex-video embed, .flex-video video { position: absolute; top: 0; left: 2px; width: 100%; height: 100%; } .navbar-inner { background-size:cover; } .nabvar-logo{ font-family: "Crete Round"; } .feedback-box{ background-color: #ACE1F1; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; padding: 10px; float: left; } .feedback-box a:link { color: #ffffff; text-decoration: none; } .feedback-box a:visited { text-decoration: none; color: #ffffff; } .feedback-box a:hover { text-decoration: underline; color:#ffffff; } .feedback-box a:active { text-decoration: none; } .feedback_title{ font-weight: bold; font-size: 20px; margin:10px; } .contact{ background-color: #3FC3C8; border-radius: 5px 5px 5px 5px; padding:10px; text-align: center; color: white; font-size: 14px; } .box_textarea { border:1px solid #999999; width:91%; color: black; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } /*Botones COMPARTIR REDES SOCIALES PERSONALIZADOS */ .opacidad:hover { opacity:0.8; } .botones-compartir { margin: 20px 0px 10px; font-size: 30px; text-align: center; } #pageshare {position:fixed; bottom:15%; left:0; float:left; border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;background-color:#fff;z-index:10; a:hover{ opacity: 0.8; } ------------XBLsZq9NkNLk5QAFF8cyEr Content-Disposition: inline; filename=jquery-latest.pack.js Content-Type: application/x-javascript; name=jquery-latest.pack.js Content-Location: http://www.euroresidentes.com/ScriptLibrary/jquery-latest.pack.js Content-Transfer-Encoding: Base64 LyohIGpRdWVyeSB2MS4xMC4xIHwgKGMpIDIwMDUsIDIwMTMgalF1ZXJ5IEZvdW5k YXRpb24sIEluYy4gfCBqcXVlcnkub3JnL2xpY2Vuc2UKLy9AIHNvdXJjZU1hcHBp bmdVUkw9anF1ZXJ5LTEuMTAuMS5taW4ubWFwCiovCihmdW5jdGlvbihlLHQpe3Zh ciBuLHIsaT10eXBlb2YgdCxvPWUubG9jYXRpb24sYT1lLmRvY3VtZW50LHM9YS5k b2N1bWVudEVsZW1lbnQsbD1lLmpRdWVyeSx1PWUuJCxjPXt9LHA9W10sZj0iMS4x MC4xIixkPXAuY29uY2F0LGg9cC5wdXNoLGc9cC5zbGljZSxtPXAuaW5kZXhPZix5 PWMudG9TdHJpbmcsdj1jLmhhc093blByb3BlcnR5LGI9Zi50cmltLHg9ZnVuY3Rp b24oZSx0KXtyZXR1cm4gbmV3IHguZm4uaW5pdChlLHQscil9LHc9L1srLV0/KD86 XGQqXC58KVxkKyg/OltlRV1bKy1dP1xkK3wpLy5zb3VyY2UsVD0vXFMrL2csQz0v Xltcc1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZceEEwXSskL2csTj0vXig/OlxzKig8 W1x3XFddKz4pW14+XSp8IyhbXHctXSopKSQvLGs9L148KFx3KylccypcLz8+KD86 PFwvXDE+fCkkLyxFPS9eW1xdLDp7fVxzXSokLyxTPS8oPzpefDp8LCkoPzpccypc WykrL2csQT0vXFwoPzpbIlxcXC9iZm5ydF18dVtcZGEtZkEtRl17NH0pL2csaj0v IlteIlxcXHJcbl0qInx0cnVlfGZhbHNlfG51bGx8LT8oPzpcZCtcLnwpXGQrKD86 W2VFXVsrLV0/XGQrfCkvZyxEPS9eLW1zLS8sTD0vLShbXGRhLXpdKS9naSxIPWZ1 bmN0aW9uKGUsdCl7cmV0dXJuIHQudG9VcHBlckNhc2UoKX0scT1mdW5jdGlvbihl KXsoYS5hZGRFdmVudExpc3RlbmVyfHwibG9hZCI9PT1lLnR5cGV8fCJjb21wbGV0 ZSI9PT1hLnJlYWR5U3RhdGUpJiYoXygpLHgucmVhZHkoKSl9LF89ZnVuY3Rpb24o KXthLmFkZEV2ZW50TGlzdGVuZXI/KGEucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9N Q29udGVudExvYWRlZCIscSwhMSksZS5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2Fk IixxLCExKSk6KGEuZGV0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIscSks ZS5kZXRhY2hFdmVudCgib25sb2FkIixxKSl9O3guZm49eC5wcm90b3R5cGU9e2px dWVyeTpmLGNvbnN0cnVjdG9yOngsaW5pdDpmdW5jdGlvbihlLG4scil7dmFyIGks bztpZighZSlyZXR1cm4gdGhpcztpZigic3RyaW5nIj09dHlwZW9mIGUpe2lmKGk9 IjwiPT09ZS5jaGFyQXQoMCkmJiI+Ij09PWUuY2hhckF0KGUubGVuZ3RoLTEpJiZl Lmxlbmd0aD49Mz9bbnVsbCxlLG51bGxdOk4uZXhlYyhlKSwhaXx8IWlbMV0mJm4p cmV0dXJuIW58fG4uanF1ZXJ5PyhufHxyKS5maW5kKGUpOnRoaXMuY29uc3RydWN0 b3IobikuZmluZChlKTtpZihpWzFdKXtpZihuPW4gaW5zdGFuY2VvZiB4P25bMF06 bix4Lm1lcmdlKHRoaXMseC5wYXJzZUhUTUwoaVsxXSxuJiZuLm5vZGVUeXBlP24u b3duZXJEb2N1bWVudHx8bjphLCEwKSksay50ZXN0KGlbMV0pJiZ4LmlzUGxhaW5P YmplY3QobikpZm9yKGkgaW4gbil4LmlzRnVuY3Rpb24odGhpc1tpXSk/dGhpc1tp XShuW2ldKTp0aGlzLmF0dHIoaSxuW2ldKTtyZXR1cm4gdGhpc31pZihvPWEuZ2V0 RWxlbWVudEJ5SWQoaVsyXSksbyYmby5wYXJlbnROb2RlKXtpZihvLmlkIT09aVsy XSlyZXR1cm4gci5maW5kKGUpO3RoaXMubGVuZ3RoPTEsdGhpc1swXT1vfXJldHVy biB0aGlzLmNvbnRleHQ9YSx0aGlzLnNlbGVjdG9yPWUsdGhpc31yZXR1cm4gZS5u b2RlVHlwZT8odGhpcy5jb250ZXh0PXRoaXNbMF09ZSx0aGlzLmxlbmd0aD0xLHRo aXMpOnguaXNGdW5jdGlvbihlKT9yLnJlYWR5KGUpOihlLnNlbGVjdG9yIT09dCYm KHRoaXMuc2VsZWN0b3I9ZS5zZWxlY3Rvcix0aGlzLmNvbnRleHQ9ZS5jb250ZXh0 KSx4Lm1ha2VBcnJheShlLHRoaXMpKX0sc2VsZWN0b3I6IiIsbGVuZ3RoOjAsdG9B cnJheTpmdW5jdGlvbigpe3JldHVybiBnLmNhbGwodGhpcyl9LGdldDpmdW5jdGlv bihlKXtyZXR1cm4gbnVsbD09ZT90aGlzLnRvQXJyYXkoKTowPmU/dGhpc1t0aGlz Lmxlbmd0aCtlXTp0aGlzW2VdfSxwdXNoU3RhY2s6ZnVuY3Rpb24oZSl7dmFyIHQ9 eC5tZXJnZSh0aGlzLmNvbnN0cnVjdG9yKCksZSk7cmV0dXJuIHQucHJldk9iamVj dD10aGlzLHQuY29udGV4dD10aGlzLmNvbnRleHQsdH0sZWFjaDpmdW5jdGlvbihl LHQpe3JldHVybiB4LmVhY2godGhpcyxlLHQpfSxyZWFkeTpmdW5jdGlvbihlKXty ZXR1cm4geC5yZWFkeS5wcm9taXNlKCkuZG9uZShlKSx0aGlzfSxzbGljZTpmdW5j dGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhnLmFwcGx5KHRoaXMsYXJndW1l bnRzKSl9LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoMCl9LGxhc3Q6 ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgtMSl9LGVxOmZ1bmN0aW9uKGUpe3Zh ciB0PXRoaXMubGVuZ3RoLG49K2UrKDA+ZT90OjApO3JldHVybiB0aGlzLnB1c2hT dGFjayhuPj0wJiZ0Pm4/W3RoaXNbbl1dOltdKX0sbWFwOmZ1bmN0aW9uKGUpe3Jl dHVybiB0aGlzLnB1c2hTdGFjayh4Lm1hcCh0aGlzLGZ1bmN0aW9uKHQsbil7cmV0 dXJuIGUuY2FsbCh0LG4sdCl9KSl9LGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlz LnByZXZPYmplY3R8fHRoaXMuY29uc3RydWN0b3IobnVsbCl9LHB1c2g6aCxzb3J0 OltdLnNvcnQsc3BsaWNlOltdLnNwbGljZX0seC5mbi5pbml0LnByb3RvdHlwZT14 LmZuLHguZXh0ZW5kPXguZm4uZXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIGUsbixyLGks byxhLHM9YXJndW1lbnRzWzBdfHx7fSxsPTEsdT1hcmd1bWVudHMubGVuZ3RoLGM9 ITE7Zm9yKCJib29sZWFuIj09dHlwZW9mIHMmJihjPXMscz1hcmd1bWVudHNbMV18 fHt9LGw9MiksIm9iamVjdCI9PXR5cGVvZiBzfHx4LmlzRnVuY3Rpb24ocyl8fChz PXt9KSx1PT09bCYmKHM9dGhpcywtLWwpO3U+bDtsKyspaWYobnVsbCE9KG89YXJn dW1lbnRzW2xdKSlmb3IoaSBpbiBvKWU9c1tpXSxyPW9baV0scyE9PXImJihjJiZy JiYoeC5pc1BsYWluT2JqZWN0KHIpfHwobj14LmlzQXJyYXkocikpKT8obj8obj0h MSxhPWUmJnguaXNBcnJheShlKT9lOltdKTphPWUmJnguaXNQbGFpbk9iamVjdChl KT9lOnt9LHNbaV09eC5leHRlbmQoYyxhLHIpKTpyIT09dCYmKHNbaV09cikpO3Jl dHVybiBzfSx4LmV4dGVuZCh7ZXhwYW5kbzoialF1ZXJ5IisoZitNYXRoLnJhbmRv bSgpKS5yZXBsYWNlKC9cRC9nLCIiKSxub0NvbmZsaWN0OmZ1bmN0aW9uKHQpe3Jl dHVybiBlLiQ9PT14JiYoZS4kPXUpLHQmJmUualF1ZXJ5PT09eCYmKGUualF1ZXJ5 PWwpLHh9LGlzUmVhZHk6ITEscmVhZHlXYWl0OjEsaG9sZFJlYWR5OmZ1bmN0aW9u KGUpe2U/eC5yZWFkeVdhaXQrKzp4LnJlYWR5KCEwKX0scmVhZHk6ZnVuY3Rpb24o ZSl7aWYoZT09PSEwPyEtLXgucmVhZHlXYWl0OiF4LmlzUmVhZHkpe2lmKCFhLmJv ZHkpcmV0dXJuIHNldFRpbWVvdXQoeC5yZWFkeSk7eC5pc1JlYWR5PSEwLGUhPT0h MCYmLS14LnJlYWR5V2FpdD4wfHwobi5yZXNvbHZlV2l0aChhLFt4XSkseC5mbi50 cmlnZ2VyJiZ4KGEpLnRyaWdnZXIoInJlYWR5Iikub2ZmKCJyZWFkeSIpKX19LGlz RnVuY3Rpb246ZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09PXgudHlwZShl KX0saXNBcnJheTpBcnJheS5pc0FycmF5fHxmdW5jdGlvbihlKXtyZXR1cm4iYXJy YXkiPT09eC50eXBlKGUpfSxpc1dpbmRvdzpmdW5jdGlvbihlKXtyZXR1cm4gbnVs bCE9ZSYmZT09ZS53aW5kb3d9LGlzTnVtZXJpYzpmdW5jdGlvbihlKXtyZXR1cm4h aXNOYU4ocGFyc2VGbG9hdChlKSkmJmlzRmluaXRlKGUpfSx0eXBlOmZ1bmN0aW9u KGUpe3JldHVybiBudWxsPT1lP2UrIiI6Im9iamVjdCI9PXR5cGVvZiBlfHwiZnVu Y3Rpb24iPT10eXBlb2YgZT9jW3kuY2FsbChlKV18fCJvYmplY3QiOnR5cGVvZiBl fSxpc1BsYWluT2JqZWN0OmZ1bmN0aW9uKGUpe3ZhciBuO2lmKCFlfHwib2JqZWN0 IiE9PXgudHlwZShlKXx8ZS5ub2RlVHlwZXx8eC5pc1dpbmRvdyhlKSlyZXR1cm4h MTt0cnl7aWYoZS5jb25zdHJ1Y3RvciYmIXYuY2FsbChlLCJjb25zdHJ1Y3RvciIp JiYhdi5jYWxsKGUuY29uc3RydWN0b3IucHJvdG90eXBlLCJpc1Byb3RvdHlwZU9m IikpcmV0dXJuITF9Y2F0Y2gocil7cmV0dXJuITF9aWYoeC5zdXBwb3J0Lm93bkxh c3QpZm9yKG4gaW4gZSlyZXR1cm4gdi5jYWxsKGUsbik7Zm9yKG4gaW4gZSk7cmV0 dXJuIG49PT10fHx2LmNhbGwoZSxuKX0saXNFbXB0eU9iamVjdDpmdW5jdGlvbihl KXt2YXIgdDtmb3IodCBpbiBlKXJldHVybiExO3JldHVybiEwfSxlcnJvcjpmdW5j dGlvbihlKXt0aHJvdyBFcnJvcihlKX0scGFyc2VIVE1MOmZ1bmN0aW9uKGUsdCxu KXtpZighZXx8InN0cmluZyIhPXR5cGVvZiBlKXJldHVybiBudWxsOyJib29sZWFu Ij09dHlwZW9mIHQmJihuPXQsdD0hMSksdD10fHxhO3ZhciByPWsuZXhlYyhlKSxp PSFuJiZbXTtyZXR1cm4gcj9bdC5jcmVhdGVFbGVtZW50KHJbMV0pXToocj14LmJ1 aWxkRnJhZ21lbnQoW2VdLHQsaSksaSYmeChpKS5yZW1vdmUoKSx4Lm1lcmdlKFtd LHIuY2hpbGROb2RlcykpfSxwYXJzZUpTT046ZnVuY3Rpb24obil7cmV0dXJuIGUu SlNPTiYmZS5KU09OLnBhcnNlP2UuSlNPTi5wYXJzZShuKTpudWxsPT09bj9uOiJz dHJpbmciPT10eXBlb2YgbiYmKG49eC50cmltKG4pLG4mJkUudGVzdChuLnJlcGxh Y2UoQSwiQCIpLnJlcGxhY2UoaiwiXSIpLnJlcGxhY2UoUywiIikpKT9GdW5jdGlv bigicmV0dXJuICIrbikoKTooeC5lcnJvcigiSW52YWxpZCBKU09OOiAiK24pLHQp fSxwYXJzZVhNTDpmdW5jdGlvbihuKXt2YXIgcixpO2lmKCFufHwic3RyaW5nIiE9 dHlwZW9mIG4pcmV0dXJuIG51bGw7dHJ5e2UuRE9NUGFyc2VyPyhpPW5ldyBET01Q YXJzZXIscj1pLnBhcnNlRnJvbVN0cmluZyhuLCJ0ZXh0L3htbCIpKToocj1uZXcg QWN0aXZlWE9iamVjdCgiTWljcm9zb2Z0LlhNTERPTSIpLHIuYXN5bmM9ImZhbHNl IixyLmxvYWRYTUwobikpfWNhdGNoKG8pe3I9dH1yZXR1cm4gciYmci5kb2N1bWVu dEVsZW1lbnQmJiFyLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJlcnJvciIp Lmxlbmd0aHx8eC5lcnJvcigiSW52YWxpZCBYTUw6ICIrbikscn0sbm9vcDpmdW5j dGlvbigpe30sZ2xvYmFsRXZhbDpmdW5jdGlvbih0KXt0JiZ4LnRyaW0odCkmJihl LmV4ZWNTY3JpcHR8fGZ1bmN0aW9uKHQpe2UuZXZhbC5jYWxsKGUsdCl9KSh0KX0s Y2FtZWxDYXNlOmZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoRCwibXMtIiku cmVwbGFjZShMLEgpfSxub2RlTmFtZTpmdW5jdGlvbihlLHQpe3JldHVybiBlLm5v ZGVOYW1lJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT10LnRvTG93ZXJDYXNl KCl9LGVhY2g6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGk9MCxvPWUubGVuZ3RoLGE9 TShlKTtpZihuKXtpZihhKXtmb3IoO28+aTtpKyspaWYocj10LmFwcGx5KGVbaV0s bikscj09PSExKWJyZWFrfWVsc2UgZm9yKGkgaW4gZSlpZihyPXQuYXBwbHkoZVtp XSxuKSxyPT09ITEpYnJlYWt9ZWxzZSBpZihhKXtmb3IoO28+aTtpKyspaWYocj10 LmNhbGwoZVtpXSxpLGVbaV0pLHI9PT0hMSlicmVha31lbHNlIGZvcihpIGluIGUp aWYocj10LmNhbGwoZVtpXSxpLGVbaV0pLHI9PT0hMSlicmVhaztyZXR1cm4gZX0s dHJpbTpiJiYhYi5jYWxsKCJcdWZlZmZcdTAwYTAiKT9mdW5jdGlvbihlKXtyZXR1 cm4gbnVsbD09ZT8iIjpiLmNhbGwoZSl9OmZ1bmN0aW9uKGUpe3JldHVybiBudWxs PT1lPyIiOihlKyIiKS5yZXBsYWNlKEMsIiIpfSxtYWtlQXJyYXk6ZnVuY3Rpb24o ZSx0KXt2YXIgbj10fHxbXTtyZXR1cm4gbnVsbCE9ZSYmKE0oT2JqZWN0KGUpKT94 Lm1lcmdlKG4sInN0cmluZyI9PXR5cGVvZiBlP1tlXTplKTpoLmNhbGwobixlKSks bn0saW5BcnJheTpmdW5jdGlvbihlLHQsbil7dmFyIHI7aWYodCl7aWYobSlyZXR1 cm4gbS5jYWxsKHQsZSxuKTtmb3Iocj10Lmxlbmd0aCxuPW4/MD5uP01hdGgubWF4 KDAscituKTpuOjA7cj5uO24rKylpZihuIGluIHQmJnRbbl09PT1lKXJldHVybiBu fXJldHVybi0xfSxtZXJnZTpmdW5jdGlvbihlLG4pe3ZhciByPW4ubGVuZ3RoLGk9 ZS5sZW5ndGgsbz0wO2lmKCJudW1iZXIiPT10eXBlb2Ygcilmb3IoO3I+bztvKysp ZVtpKytdPW5bb107ZWxzZSB3aGlsZShuW29dIT09dCllW2krK109bltvKytdO3Jl dHVybiBlLmxlbmd0aD1pLGV9LGdyZXA6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGk9 W10sbz0wLGE9ZS5sZW5ndGg7Zm9yKG49ISFuO2E+bztvKyspcj0hIXQoZVtvXSxv KSxuIT09ciYmaS5wdXNoKGVbb10pO3JldHVybiBpfSxtYXA6ZnVuY3Rpb24oZSx0 LG4pe3ZhciByLGk9MCxvPWUubGVuZ3RoLGE9TShlKSxzPVtdO2lmKGEpZm9yKDtv Pmk7aSsrKXI9dChlW2ldLGksbiksbnVsbCE9ciYmKHNbcy5sZW5ndGhdPXIpO2Vs c2UgZm9yKGkgaW4gZSlyPXQoZVtpXSxpLG4pLG51bGwhPXImJihzW3MubGVuZ3Ro XT1yKTtyZXR1cm4gZC5hcHBseShbXSxzKX0sZ3VpZDoxLHByb3h5OmZ1bmN0aW9u KGUsbil7dmFyIHIsaSxvO3JldHVybiJzdHJpbmciPT10eXBlb2YgbiYmKG89ZVtu XSxuPWUsZT1vKSx4LmlzRnVuY3Rpb24oZSk/KHI9Zy5jYWxsKGFyZ3VtZW50cywy KSxpPWZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBwbHkobnx8dGhpcyxyLmNvbmNhdChn LmNhbGwoYXJndW1lbnRzKSkpfSxpLmd1aWQ9ZS5ndWlkPWUuZ3VpZHx8eC5ndWlk KyssaSk6dH0sYWNjZXNzOmZ1bmN0aW9uKGUsbixyLGksbyxhLHMpe3ZhciBsPTAs dT1lLmxlbmd0aCxjPW51bGw9PXI7aWYoIm9iamVjdCI9PT14LnR5cGUocikpe289 ITA7Zm9yKGwgaW4gcil4LmFjY2VzcyhlLG4sbCxyW2xdLCEwLGEscyl9ZWxzZSBp ZihpIT09dCYmKG89ITAseC5pc0Z1bmN0aW9uKGkpfHwocz0hMCksYyYmKHM/KG4u Y2FsbChlLGkpLG49bnVsbCk6KGM9bixuPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4g Yy5jYWxsKHgoZSksbil9KSksbikpZm9yKDt1Pmw7bCsrKW4oZVtsXSxyLHM/aTpp LmNhbGwoZVtsXSxsLG4oZVtsXSxyKSkpO3JldHVybiBvP2U6Yz9uLmNhbGwoZSk6 dT9uKGVbMF0scik6YX0sbm93OmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRlKS5n ZXRUaW1lKCl9LHN3YXA6ZnVuY3Rpb24oZSx0LG4scil7dmFyIGksbyxhPXt9O2Zv cihvIGluIHQpYVtvXT1lLnN0eWxlW29dLGUuc3R5bGVbb109dFtvXTtpPW4uYXBw bHkoZSxyfHxbXSk7Zm9yKG8gaW4gdCllLnN0eWxlW29dPWFbb107cmV0dXJuIGl9 fSkseC5yZWFkeS5wcm9taXNlPWZ1bmN0aW9uKHQpe2lmKCFuKWlmKG49eC5EZWZl cnJlZCgpLCJjb21wbGV0ZSI9PT1hLnJlYWR5U3RhdGUpc2V0VGltZW91dCh4LnJl YWR5KTtlbHNlIGlmKGEuYWRkRXZlbnRMaXN0ZW5lcilhLmFkZEV2ZW50TGlzdGVu ZXIoIkRPTUNvbnRlbnRMb2FkZWQiLHEsITEpLGUuYWRkRXZlbnRMaXN0ZW5lcigi bG9hZCIscSwhMSk7ZWxzZXthLmF0dGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFu Z2UiLHEpLGUuYXR0YWNoRXZlbnQoIm9ubG9hZCIscSk7dmFyIHI9ITE7dHJ5e3I9 bnVsbD09ZS5mcmFtZUVsZW1lbnQmJmEuZG9jdW1lbnRFbGVtZW50fWNhdGNoKGkp e31yJiZyLmRvU2Nyb2xsJiZmdW5jdGlvbiBvKCl7aWYoIXguaXNSZWFkeSl7dHJ5 e3IuZG9TY3JvbGwoImxlZnQiKX1jYXRjaChlKXtyZXR1cm4gc2V0VGltZW91dChv LDUwKX1fKCkseC5yZWFkeSgpfX0oKX1yZXR1cm4gbi5wcm9taXNlKHQpfSx4LmVh Y2goIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJl Z0V4cCBPYmplY3QgRXJyb3IiLnNwbGl0KCIgIiksZnVuY3Rpb24oZSx0KXtjWyJb b2JqZWN0ICIrdCsiXSJdPXQudG9Mb3dlckNhc2UoKX0pO2Z1bmN0aW9uIE0oZSl7 dmFyIHQ9ZS5sZW5ndGgsbj14LnR5cGUoZSk7cmV0dXJuIHguaXNXaW5kb3coZSk/ ITE6MT09PWUubm9kZVR5cGUmJnQ/ITA6ImFycmF5Ij09PW58fCJmdW5jdGlvbiIh PT1uJiYoMD09PXR8fCJudW1iZXIiPT10eXBlb2YgdCYmdD4wJiZ0LTEgaW4gZSl9 cj14KGEpLGZ1bmN0aW9uKGUsdCl7dmFyIG4scixpLG8sYSxzLGwsdSxjLHAsZixk LGgsZyxtLHksdixiPSJzaXp6bGUiKy1uZXcgRGF0ZSx3PWUuZG9jdW1lbnQsVD0w LEM9MCxOPWx0KCksaz1sdCgpLEU9bHQoKSxTPSExLEE9ZnVuY3Rpb24oKXtyZXR1 cm4gMH0saj10eXBlb2YgdCxEPTE8PDMxLEw9e30uaGFzT3duUHJvcGVydHksSD1b XSxxPUgucG9wLF89SC5wdXNoLE09SC5wdXNoLE89SC5zbGljZSxGPUguaW5kZXhP Znx8ZnVuY3Rpb24oZSl7dmFyIHQ9MCxuPXRoaXMubGVuZ3RoO2Zvcig7bj50O3Qr KylpZih0aGlzW3RdPT09ZSlyZXR1cm4gdDtyZXR1cm4tMX0sQj0iY2hlY2tlZHxz ZWxlY3RlZHxhc3luY3xhdXRvZm9jdXN8YXV0b3BsYXl8Y29udHJvbHN8ZGVmZXJ8 ZGlzYWJsZWR8aGlkZGVufGlzbWFwfGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25s eXxyZXF1aXJlZHxzY29wZWQiLFA9IltcXHgyMFxcdFxcclxcblxcZl0iLFI9Iig/ OlxcXFwufFtcXHctXXxbXlxceDAwLVxceGEwXSkrIixXPVIucmVwbGFjZSgidyIs IncjIiksJD0iXFxbIitQKyIqKCIrUisiKSIrUCsiKig/OihbKl4kfCF+XT89KSIr UCsiKig/OihbJ1wiXSkoKD86XFxcXC58W15cXFxcXSkqPylcXDN8KCIrVysiKXwp fCkiK1ArIipcXF0iLEk9IjooIitSKyIpKD86XFwoKChbJ1wiXSkoKD86XFxcXC58 W15cXFxcXSkqPylcXDN8KCg/OlxcXFwufFteXFxcXCgpW1xcXV18IiskLnJlcGxh Y2UoMyw4KSsiKSopfC4qKVxcKXwpIix6PVJlZ0V4cCgiXiIrUCsiK3woKD86Xnxb XlxcXFxdKSg/OlxcXFwuKSopIitQKyIrJCIsImciKSxYPVJlZ0V4cCgiXiIrUCsi KiwiK1ArIioiKSxVPVJlZ0V4cCgiXiIrUCsiKihbPit+XXwiK1ArIikiK1ArIioi KSxWPVJlZ0V4cChQKyIqWyt+XSIpLFk9UmVnRXhwKCI9IitQKyIqKFteXFxdJ1wi XSopIitQKyIqXFxdIiwiZyIpLEo9UmVnRXhwKEkpLEc9UmVnRXhwKCJeIitXKyIk IiksUT17SUQ6UmVnRXhwKCJeIygiK1IrIikiKSxDTEFTUzpSZWdFeHAoIl5cXC4o IitSKyIpIiksVEFHOlJlZ0V4cCgiXigiK1IucmVwbGFjZSgidyIsIncqIikrIiki KSxBVFRSOlJlZ0V4cCgiXiIrJCksUFNFVURPOlJlZ0V4cCgiXiIrSSksQ0hJTEQ6 UmVnRXhwKCJeOihvbmx5fGZpcnN0fGxhc3R8bnRofG50aC1sYXN0KS0oY2hpbGR8 b2YtdHlwZSkoPzpcXCgiK1ArIiooZXZlbnxvZGR8KChbKy1dfCkoXFxkKilufCki K1ArIiooPzooWystXXwpIitQKyIqKFxcZCspfCkpIitQKyIqXFwpfCkiLCJpIiks Ym9vbDpSZWdFeHAoIl4oPzoiK0IrIikkIiwiaSIpLG5lZWRzQ29udGV4dDpSZWdF eHAoIl4iK1ArIipbPit+XXw6KGV2ZW58b2RkfGVxfGd0fGx0fG50aHxmaXJzdHxs YXN0KSg/OlxcKCIrUCsiKigoPzotXFxkKT9cXGQqKSIrUCsiKlxcKXwpKD89W14t XXwkKSIsImkiKX0sSz0vXltee10rXHtccypcW25hdGl2ZSBcdy8sWj0vXig/OiMo W1x3LV0rKXwoXHcrKXxcLihbXHctXSspKSQvLGV0PS9eKD86aW5wdXR8c2VsZWN0 fHRleHRhcmVhfGJ1dHRvbikkL2ksdHQ9L15oXGQkL2ksbnQ9Lyd8XFwvZyxydD1S ZWdFeHAoIlxcXFwoW1xcZGEtZl17MSw2fSIrUCsiP3woIitQKyIpfC4pIiwiaWci KSxpdD1mdW5jdGlvbihlLHQsbil7dmFyIHI9IjB4Iit0LTY1NTM2O3JldHVybiBy IT09cnx8bj90OjA+cj9TdHJpbmcuZnJvbUNoYXJDb2RlKHIrNjU1MzYpOlN0cmlu Zy5mcm9tQ2hhckNvZGUoNTUyOTZ8cj4+MTAsNTYzMjB8MTAyMyZyKX07dHJ5e00u YXBwbHkoSD1PLmNhbGwody5jaGlsZE5vZGVzKSx3LmNoaWxkTm9kZXMpLEhbdy5j aGlsZE5vZGVzLmxlbmd0aF0ubm9kZVR5cGV9Y2F0Y2gob3Qpe009e2FwcGx5Okgu bGVuZ3RoP2Z1bmN0aW9uKGUsdCl7Xy5hcHBseShlLE8uY2FsbCh0KSl9OmZ1bmN0 aW9uKGUsdCl7dmFyIG49ZS5sZW5ndGgscj0wO3doaWxlKGVbbisrXT10W3IrK10p O2UubGVuZ3RoPW4tMX19fWZ1bmN0aW9uIGF0KGUsdCxuLGkpe3ZhciBvLGEscyxs LHUsYyxkLG0seSx4O2lmKCh0P3Qub3duZXJEb2N1bWVudHx8dDp3KSE9PWYmJnAo dCksdD10fHxmLG49bnx8W10sIWV8fCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4g bjtpZigxIT09KGw9dC5ub2RlVHlwZSkmJjkhPT1sKXJldHVybltdO2lmKGgmJiFp KXtpZihvPVouZXhlYyhlKSlpZihzPW9bMV0pe2lmKDk9PT1sKXtpZihhPXQuZ2V0 RWxlbWVudEJ5SWQocyksIWF8fCFhLnBhcmVudE5vZGUpcmV0dXJuIG47aWYoYS5p ZD09PXMpcmV0dXJuIG4ucHVzaChhKSxufWVsc2UgaWYodC5vd25lckRvY3VtZW50 JiYoYT10Lm93bmVyRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocykpJiZ2KHQsYSkm JmEuaWQ9PT1zKXJldHVybiBuLnB1c2goYSksbn1lbHNle2lmKG9bMl0pcmV0dXJu IE0uYXBwbHkobix0LmdldEVsZW1lbnRzQnlUYWdOYW1lKGUpKSxuO2lmKChzPW9b M10pJiZyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJnQuZ2V0RWxlbWVudHNCeUNs YXNzTmFtZSlyZXR1cm4gTS5hcHBseShuLHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFt ZShzKSksbn1pZihyLnFzYSYmKCFnfHwhZy50ZXN0KGUpKSl7aWYobT1kPWIseT10 LHg9OT09PWwmJmUsMT09PWwmJiJvYmplY3QiIT09dC5ub2RlTmFtZS50b0xvd2Vy Q2FzZSgpKXtjPWJ0KGUpLChkPXQuZ2V0QXR0cmlidXRlKCJpZCIpKT9tPWQucmVw bGFjZShudCwiXFwkJiIpOnQuc2V0QXR0cmlidXRlKCJpZCIsbSksbT0iW2lkPSci K20rIiddICIsdT1jLmxlbmd0aDt3aGlsZSh1LS0pY1t1XT1tK3h0KGNbdV0pO3k9 Vi50ZXN0KGUpJiZ0LnBhcmVudE5vZGV8fHQseD1jLmpvaW4oIiwiKX1pZih4KXRy eXtyZXR1cm4gTS5hcHBseShuLHkucXVlcnlTZWxlY3RvckFsbCh4KSksbn1jYXRj aChUKXt9ZmluYWxseXtkfHx0LnJlbW92ZUF0dHJpYnV0ZSgiaWQiKX19fXJldHVy biBBdChlLnJlcGxhY2UoeiwiJDEiKSx0LG4saSl9ZnVuY3Rpb24gc3QoZSl7cmV0 dXJuIEsudGVzdChlKyIiKX1mdW5jdGlvbiBsdCgpe3ZhciBlPVtdO2Z1bmN0aW9u IHQobixyKXtyZXR1cm4gZS5wdXNoKG4rPSIgIik+by5jYWNoZUxlbmd0aCYmZGVs ZXRlIHRbZS5zaGlmdCgpXSx0W25dPXJ9cmV0dXJuIHR9ZnVuY3Rpb24gdXQoZSl7 cmV0dXJuIGVbYl09ITAsZX1mdW5jdGlvbiBjdChlKXt2YXIgdD1mLmNyZWF0ZUVs ZW1lbnQoImRpdiIpO3RyeXtyZXR1cm4hIWUodCl9Y2F0Y2gobil7cmV0dXJuITF9 ZmluYWxseXt0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0 KSx0PW51bGx9fWZ1bmN0aW9uIHB0KGUsdCxuKXtlPWUuc3BsaXQoInwiKTt2YXIg cixpPWUubGVuZ3RoLGE9bj9udWxsOnQ7d2hpbGUoaS0tKShyPW8uYXR0ckhhbmRs ZVtlW2ldXSkmJnIhPT10fHwoby5hdHRySGFuZGxlW2VbaV1dPWEpfWZ1bmN0aW9u IGZ0KGUsdCl7dmFyIG49ZS5nZXRBdHRyaWJ1dGVOb2RlKHQpO3JldHVybiBuJiZu LnNwZWNpZmllZD9uLnZhbHVlOmVbdF09PT0hMD90LnRvTG93ZXJDYXNlKCk6bnVs bH1mdW5jdGlvbiBkdChlLHQpe3JldHVybiBlLmdldEF0dHJpYnV0ZSh0LCJ0eXBl Ij09PXQudG9Mb3dlckNhc2UoKT8xOjIpfWZ1bmN0aW9uIGh0KGUpe3JldHVybiJp bnB1dCI9PT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk/ZS5kZWZhdWx0VmFsdWU6 dH1mdW5jdGlvbiBndChlLHQpe3ZhciBuPXQmJmUscj1uJiYxPT09ZS5ub2RlVHlw ZSYmMT09PXQubm9kZVR5cGUmJih+dC5zb3VyY2VJbmRleHx8RCktKH5lLnNvdXJj ZUluZGV4fHxEKTtpZihyKXJldHVybiByO2lmKG4pd2hpbGUobj1uLm5leHRTaWJs aW5nKWlmKG49PT10KXJldHVybi0xO3JldHVybiBlPzE6LTF9ZnVuY3Rpb24gbXQo ZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBuPXQubm9kZU5hbWUudG9Mb3dlckNh c2UoKTtyZXR1cm4iaW5wdXQiPT09biYmdC50eXBlPT09ZX19ZnVuY3Rpb24geXQo ZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBuPXQubm9kZU5hbWUudG9Mb3dlckNh c2UoKTtyZXR1cm4oImlucHV0Ij09PW58fCJidXR0b24iPT09bikmJnQudHlwZT09 PWV9fWZ1bmN0aW9uIHZ0KGUpe3JldHVybiB1dChmdW5jdGlvbih0KXtyZXR1cm4g dD0rdCx1dChmdW5jdGlvbihuLHIpe3ZhciBpLG89ZShbXSxuLmxlbmd0aCx0KSxh PW8ubGVuZ3RoO3doaWxlKGEtLSluW2k9b1thXV0mJihuW2ldPSEocltpXT1uW2ld KSl9KX0pfXM9YXQuaXNYTUw9ZnVuY3Rpb24oZSl7dmFyIHQ9ZSYmKGUub3duZXJE b2N1bWVudHx8ZSkuZG9jdW1lbnRFbGVtZW50O3JldHVybiB0PyJIVE1MIiE9PXQu bm9kZU5hbWU6ITF9LHI9YXQuc3VwcG9ydD17fSxwPWF0LnNldERvY3VtZW50PWZ1 bmN0aW9uKGUpe3ZhciBuPWU/ZS5vd25lckRvY3VtZW50fHxlOncsaT1uLnBhcmVu dFdpbmRvdztyZXR1cm4gbiE9PWYmJjk9PT1uLm5vZGVUeXBlJiZuLmRvY3VtZW50 RWxlbWVudD8oZj1uLGQ9bi5kb2N1bWVudEVsZW1lbnQsaD0hcyhuKSxpJiZpLmZy YW1lRWxlbWVudCYmaS5hdHRhY2hFdmVudCgib25iZWZvcmV1bmxvYWQiLGZ1bmN0 aW9uKCl7cCgpfSksci5hdHRyaWJ1dGVzPWN0KGZ1bmN0aW9uKGUpe3JldHVybiBl LmlubmVySFRNTD0iPGEgaHJlZj0nIyc+PC9hPiIscHQoInR5cGV8aHJlZnxoZWln aHR8d2lkdGgiLGR0LCIjIj09PWUuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoImhy ZWYiKSkscHQoQixmdCxudWxsPT1lLmdldEF0dHJpYnV0ZSgiZGlzYWJsZWQiKSks ZS5jbGFzc05hbWU9ImkiLCFlLmdldEF0dHJpYnV0ZSgiY2xhc3NOYW1lIil9KSxy LmlucHV0PWN0KGZ1bmN0aW9uKGUpe3JldHVybiBlLmlubmVySFRNTD0iPGlucHV0 PiIsZS5maXJzdENoaWxkLnNldEF0dHJpYnV0ZSgidmFsdWUiLCIiKSwiIj09PWUu Zmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoInZhbHVlIil9KSxwdCgidmFsdWUiLGh0 LHIuYXR0cmlidXRlcyYmci5pbnB1dCksci5nZXRFbGVtZW50c0J5VGFnTmFtZT1j dChmdW5jdGlvbihlKXtyZXR1cm4gZS5hcHBlbmRDaGlsZChuLmNyZWF0ZUNvbW1l bnQoIiIpKSwhZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aH0pLHIu Z2V0RWxlbWVudHNCeUNsYXNzTmFtZT1jdChmdW5jdGlvbihlKXtyZXR1cm4gZS5p bm5lckhUTUw9IjxkaXYgY2xhc3M9J2EnPjwvZGl2PjxkaXYgY2xhc3M9J2EgaSc+ PC9kaXY+IixlLmZpcnN0Q2hpbGQuY2xhc3NOYW1lPSJpIiwyPT09ZS5nZXRFbGVt ZW50c0J5Q2xhc3NOYW1lKCJpIikubGVuZ3RofSksci5nZXRCeUlkPWN0KGZ1bmN0 aW9uKGUpe3JldHVybiBkLmFwcGVuZENoaWxkKGUpLmlkPWIsIW4uZ2V0RWxlbWVu dHNCeU5hbWV8fCFuLmdldEVsZW1lbnRzQnlOYW1lKGIpLmxlbmd0aH0pLHIuZ2V0 QnlJZD8oby5maW5kLklEPWZ1bmN0aW9uKGUsdCl7aWYodHlwZW9mIHQuZ2V0RWxl bWVudEJ5SWQhPT1qJiZoKXt2YXIgbj10LmdldEVsZW1lbnRCeUlkKGUpO3JldHVy biBuJiZuLnBhcmVudE5vZGU/W25dOltdfX0sby5maWx0ZXIuSUQ9ZnVuY3Rpb24o ZSl7dmFyIHQ9ZS5yZXBsYWNlKHJ0LGl0KTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0 dXJuIGUuZ2V0QXR0cmlidXRlKCJpZCIpPT09dH19KTooZGVsZXRlIG8uZmluZC5J RCxvLmZpbHRlci5JRD1mdW5jdGlvbihlKXt2YXIgdD1lLnJlcGxhY2UocnQsaXQp O3JldHVybiBmdW5jdGlvbihlKXt2YXIgbj10eXBlb2YgZS5nZXRBdHRyaWJ1dGVO b2RlIT09aiYmZS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpO3JldHVybiBuJiZuLnZh bHVlPT09dH19KSxvLmZpbmQuVEFHPXIuZ2V0RWxlbWVudHNCeVRhZ05hbWU/ZnVu Y3Rpb24oZSxuKXtyZXR1cm4gdHlwZW9mIG4uZ2V0RWxlbWVudHNCeVRhZ05hbWUh PT1qP24uZ2V0RWxlbWVudHNCeVRhZ05hbWUoZSk6dH06ZnVuY3Rpb24oZSx0KXt2 YXIgbixyPVtdLGk9MCxvPXQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoZSk7aWYoIioi PT09ZSl7d2hpbGUobj1vW2krK10pMT09PW4ubm9kZVR5cGUmJnIucHVzaChuKTty ZXR1cm4gcn1yZXR1cm4gb30sby5maW5kLkNMQVNTPXIuZ2V0RWxlbWVudHNCeUNs YXNzTmFtZSYmZnVuY3Rpb24oZSxuKXtyZXR1cm4gdHlwZW9mIG4uZ2V0RWxlbWVu dHNCeUNsYXNzTmFtZSE9PWomJmg/bi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGUp OnR9LG09W10sZz1bXSwoci5xc2E9c3Qobi5xdWVyeVNlbGVjdG9yQWxsKSkmJihj dChmdW5jdGlvbihlKXtlLmlubmVySFRNTD0iPHNlbGVjdD48b3B0aW9uIHNlbGVj dGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PiIsZS5xdWVyeVNlbGVjdG9yQWxsKCJb c2VsZWN0ZWRdIikubGVuZ3RofHxnLnB1c2goIlxcWyIrUCsiKig/OnZhbHVlfCIr QisiKSIpLGUucXVlcnlTZWxlY3RvckFsbCgiOmNoZWNrZWQiKS5sZW5ndGh8fGcu cHVzaCgiOmNoZWNrZWQiKX0pLGN0KGZ1bmN0aW9uKGUpe3ZhciB0PW4uY3JlYXRl RWxlbWVudCgiaW5wdXQiKTt0LnNldEF0dHJpYnV0ZSgidHlwZSIsImhpZGRlbiIp LGUuYXBwZW5kQ2hpbGQodCkuc2V0QXR0cmlidXRlKCJ0IiwiIiksZS5xdWVyeVNl bGVjdG9yQWxsKCJbdF49JyddIikubGVuZ3RoJiZnLnB1c2goIlsqXiRdPSIrUCsi Kig/OicnfFwiXCIpIiksZS5xdWVyeVNlbGVjdG9yQWxsKCI6ZW5hYmxlZCIpLmxl bmd0aHx8Zy5wdXNoKCI6ZW5hYmxlZCIsIjpkaXNhYmxlZCIpLGUucXVlcnlTZWxl Y3RvckFsbCgiKiw6eCIpLGcucHVzaCgiLC4qOiIpfSkpLChyLm1hdGNoZXNTZWxl Y3Rvcj1zdCh5PWQud2Via2l0TWF0Y2hlc1NlbGVjdG9yfHxkLm1vek1hdGNoZXNT ZWxlY3Rvcnx8ZC5vTWF0Y2hlc1NlbGVjdG9yfHxkLm1zTWF0Y2hlc1NlbGVjdG9y KSkmJmN0KGZ1bmN0aW9uKGUpe3IuZGlzY29ubmVjdGVkTWF0Y2g9eS5jYWxsKGUs ImRpdiIpLHkuY2FsbChlLCJbcyE9JyddOngiKSxtLnB1c2goIiE9IixJKX0pLGc9 Zy5sZW5ndGgmJlJlZ0V4cChnLmpvaW4oInwiKSksbT1tLmxlbmd0aCYmUmVnRXhw KG0uam9pbigifCIpKSx2PXN0KGQuY29udGFpbnMpfHxkLmNvbXBhcmVEb2N1bWVu dFBvc2l0aW9uP2Z1bmN0aW9uKGUsdCl7dmFyIG49OT09PWUubm9kZVR5cGU/ZS5k b2N1bWVudEVsZW1lbnQ6ZSxyPXQmJnQucGFyZW50Tm9kZTtyZXR1cm4gZT09PXJ8 fCEoIXJ8fDEhPT1yLm5vZGVUeXBlfHwhKG4uY29udGFpbnM/bi5jb250YWlucyhy KTplLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uJiYxNiZlLmNvbXBhcmVEb2N1bWVu dFBvc2l0aW9uKHIpKSl9OmZ1bmN0aW9uKGUsdCl7aWYodCl3aGlsZSh0PXQucGFy ZW50Tm9kZSlpZih0PT09ZSlyZXR1cm4hMDtyZXR1cm4hMX0sci5zb3J0RGV0YWNo ZWQ9Y3QoZnVuY3Rpb24oZSl7cmV0dXJuIDEmZS5jb21wYXJlRG9jdW1lbnRQb3Np dGlvbihuLmNyZWF0ZUVsZW1lbnQoImRpdiIpKX0pLEE9ZC5jb21wYXJlRG9jdW1l bnRQb3NpdGlvbj9mdW5jdGlvbihlLHQpe2lmKGU9PT10KXJldHVybiBTPSEwLDA7 dmFyIGk9dC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiYmZS5jb21wYXJlRG9jdW1l bnRQb3NpdGlvbiYmZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0KTtyZXR1cm4g aT8xJml8fCFyLnNvcnREZXRhY2hlZCYmdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlv bihlKT09PWk/ZT09PW58fHYodyxlKT8tMTp0PT09bnx8dih3LHQpPzE6Yz9GLmNh bGwoYyxlKS1GLmNhbGwoYyx0KTowOjQmaT8tMToxOmUuY29tcGFyZURvY3VtZW50 UG9zaXRpb24/LTE6MX06ZnVuY3Rpb24oZSx0KXt2YXIgcixpPTAsbz1lLnBhcmVu dE5vZGUsYT10LnBhcmVudE5vZGUscz1bZV0sbD1bdF07aWYoZT09PXQpcmV0dXJu IFM9ITAsMDtpZighb3x8IWEpcmV0dXJuIGU9PT1uPy0xOnQ9PT1uPzE6bz8tMTph PzE6Yz9GLmNhbGwoYyxlKS1GLmNhbGwoYyx0KTowO2lmKG89PT1hKXJldHVybiBn dChlLHQpO3I9ZTt3aGlsZShyPXIucGFyZW50Tm9kZSlzLnVuc2hpZnQocik7cj10 O3doaWxlKHI9ci5wYXJlbnROb2RlKWwudW5zaGlmdChyKTt3aGlsZShzW2ldPT09 bFtpXSlpKys7cmV0dXJuIGk/Z3Qoc1tpXSxsW2ldKTpzW2ldPT09dz8tMTpsW2ld PT09dz8xOjB9LG4pOmZ9LGF0Lm1hdGNoZXM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4g YXQoZSxudWxsLG51bGwsdCl9LGF0Lm1hdGNoZXNTZWxlY3Rvcj1mdW5jdGlvbihl LHQpe2lmKChlLm93bmVyRG9jdW1lbnR8fGUpIT09ZiYmcChlKSx0PXQucmVwbGFj ZShZLCI9JyQxJ10iKSwhKCFyLm1hdGNoZXNTZWxlY3Rvcnx8IWh8fG0mJm0udGVz dCh0KXx8ZyYmZy50ZXN0KHQpKSl0cnl7dmFyIG49eS5jYWxsKGUsdCk7aWYobnx8 ci5kaXNjb25uZWN0ZWRNYXRjaHx8ZS5kb2N1bWVudCYmMTEhPT1lLmRvY3VtZW50 Lm5vZGVUeXBlKXJldHVybiBufWNhdGNoKGkpe31yZXR1cm4gYXQodCxmLG51bGws W2VdKS5sZW5ndGg+MH0sYXQuY29udGFpbnM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4o ZS5vd25lckRvY3VtZW50fHxlKSE9PWYmJnAoZSksdihlLHQpfSxhdC5hdHRyPWZ1 bmN0aW9uKGUsbil7KGUub3duZXJEb2N1bWVudHx8ZSkhPT1mJiZwKGUpO3ZhciBp PW8uYXR0ckhhbmRsZVtuLnRvTG93ZXJDYXNlKCldLGE9aSYmTC5jYWxsKG8uYXR0 ckhhbmRsZSxuLnRvTG93ZXJDYXNlKCkpP2koZSxuLCFoKTp0O3JldHVybiBhPT09 dD9yLmF0dHJpYnV0ZXN8fCFoP2UuZ2V0QXR0cmlidXRlKG4pOihhPWUuZ2V0QXR0 cmlidXRlTm9kZShuKSkmJmEuc3BlY2lmaWVkP2EudmFsdWU6bnVsbDphfSxhdC5l cnJvcj1mdW5jdGlvbihlKXt0aHJvdyBFcnJvcigiU3ludGF4IGVycm9yLCB1bnJl Y29nbml6ZWQgZXhwcmVzc2lvbjogIitlKX0sYXQudW5pcXVlU29ydD1mdW5jdGlv bihlKXt2YXIgdCxuPVtdLGk9MCxvPTA7aWYoUz0hci5kZXRlY3REdXBsaWNhdGVz LGM9IXIuc29ydFN0YWJsZSYmZS5zbGljZSgwKSxlLnNvcnQoQSksUyl7d2hpbGUo dD1lW28rK10pdD09PWVbb10mJihpPW4ucHVzaChvKSk7d2hpbGUoaS0tKWUuc3Bs aWNlKG5baV0sMSl9cmV0dXJuIGV9LGE9YXQuZ2V0VGV4dD1mdW5jdGlvbihlKXt2 YXIgdCxuPSIiLHI9MCxpPWUubm9kZVR5cGU7aWYoaSl7aWYoMT09PWl8fDk9PT1p fHwxMT09PWkpe2lmKCJzdHJpbmciPT10eXBlb2YgZS50ZXh0Q29udGVudClyZXR1 cm4gZS50ZXh0Q29udGVudDtmb3IoZT1lLmZpcnN0Q2hpbGQ7ZTtlPWUubmV4dFNp Ymxpbmcpbis9YShlKX1lbHNlIGlmKDM9PT1pfHw0PT09aSlyZXR1cm4gZS5ub2Rl VmFsdWV9ZWxzZSBmb3IoO3Q9ZVtyXTtyKyspbis9YSh0KTtyZXR1cm4gbn0sbz1h dC5zZWxlY3RvcnM9e2NhY2hlTGVuZ3RoOjUwLGNyZWF0ZVBzZXVkbzp1dCxtYXRj aDpRLGF0dHJIYW5kbGU6e30sZmluZDp7fSxyZWxhdGl2ZTp7Ij4iOntkaXI6InBh cmVudE5vZGUiLGZpcnN0OiEwfSwiICI6e2RpcjoicGFyZW50Tm9kZSJ9LCIrIjp7 ZGlyOiJwcmV2aW91c1NpYmxpbmciLGZpcnN0OiEwfSwifiI6e2RpcjoicHJldmlv dXNTaWJsaW5nIn19LHByZUZpbHRlcjp7QVRUUjpmdW5jdGlvbihlKXtyZXR1cm4g ZVsxXT1lWzFdLnJlcGxhY2UocnQsaXQpLGVbM109KGVbNF18fGVbNV18fCIiKS5y ZXBsYWNlKHJ0LGl0KSwifj0iPT09ZVsyXSYmKGVbM109IiAiK2VbM10rIiAiKSxl LnNsaWNlKDAsNCl9LENISUxEOmZ1bmN0aW9uKGUpe3JldHVybiBlWzFdPWVbMV0u dG9Mb3dlckNhc2UoKSwibnRoIj09PWVbMV0uc2xpY2UoMCwzKT8oZVszXXx8YXQu ZXJyb3IoZVswXSksZVs0XT0rKGVbNF0/ZVs1XSsoZVs2XXx8MSk6MiooImV2ZW4i PT09ZVszXXx8Im9kZCI9PT1lWzNdKSksZVs1XT0rKGVbN10rZVs4XXx8Im9kZCI9 PT1lWzNdKSk6ZVszXSYmYXQuZXJyb3IoZVswXSksZX0sUFNFVURPOmZ1bmN0aW9u KGUpe3ZhciBuLHI9IWVbNV0mJmVbMl07cmV0dXJuIFEuQ0hJTEQudGVzdChlWzBd KT9udWxsOihlWzNdJiZlWzRdIT09dD9lWzJdPWVbNF06ciYmSi50ZXN0KHIpJiYo bj1idChyLCEwKSkmJihuPXIuaW5kZXhPZigiKSIsci5sZW5ndGgtbiktci5sZW5n dGgpJiYoZVswXT1lWzBdLnNsaWNlKDAsbiksZVsyXT1yLnNsaWNlKDAsbikpLGUu c2xpY2UoMCwzKSl9fSxmaWx0ZXI6e1RBRzpmdW5jdGlvbihlKXt2YXIgdD1lLnJl cGxhY2UocnQsaXQpLnRvTG93ZXJDYXNlKCk7cmV0dXJuIioiPT09ZT9mdW5jdGlv bigpe3JldHVybiEwfTpmdW5jdGlvbihlKXtyZXR1cm4gZS5ub2RlTmFtZSYmZS5u b2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09dH19LENMQVNTOmZ1bmN0aW9uKGUpe3Zh ciB0PU5bZSsiICJdO3JldHVybiB0fHwodD1SZWdFeHAoIihefCIrUCsiKSIrZSsi KCIrUCsifCQpIikpJiZOKGUsZnVuY3Rpb24oZSl7cmV0dXJuIHQudGVzdCgic3Ry aW5nIj09dHlwZW9mIGUuY2xhc3NOYW1lJiZlLmNsYXNzTmFtZXx8dHlwZW9mIGUu Z2V0QXR0cmlidXRlIT09aiYmZS5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKX0p fSxBVFRSOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZnVuY3Rpb24ocil7dmFyIGk9 YXQuYXR0cihyLGUpO3JldHVybiBudWxsPT1pPyIhPSI9PT10OnQ/KGkrPSIiLCI9 Ij09PXQ/aT09PW46IiE9Ij09PXQ/aSE9PW46Il49Ij09PXQ/biYmMD09PWkuaW5k ZXhPZihuKToiKj0iPT09dD9uJiZpLmluZGV4T2Yobik+LTE6IiQ9Ij09PXQ/biYm aS5zbGljZSgtbi5sZW5ndGgpPT09bjoifj0iPT09dD8oIiAiK2krIiAiKS5pbmRl eE9mKG4pPi0xOiJ8PSI9PT10P2k9PT1ufHxpLnNsaWNlKDAsbi5sZW5ndGgrMSk9 PT1uKyItIjohMSk6ITB9fSxDSElMRDpmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBv PSJudGgiIT09ZS5zbGljZSgwLDMpLGE9Imxhc3QiIT09ZS5zbGljZSgtNCkscz0i b2YtdHlwZSI9PT10O3JldHVybiAxPT09ciYmMD09PWk/ZnVuY3Rpb24oZSl7cmV0 dXJuISFlLnBhcmVudE5vZGV9OmZ1bmN0aW9uKHQsbixsKXt2YXIgdSxjLHAsZixk LGgsZz1vIT09YT8ibmV4dFNpYmxpbmciOiJwcmV2aW91c1NpYmxpbmciLG09dC5w YXJlbnROb2RlLHk9cyYmdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLHY9IWwmJiFz O2lmKG0pe2lmKG8pe3doaWxlKGcpe3A9dDt3aGlsZShwPXBbZ10paWYocz9wLm5v ZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT15OjE9PT1wLm5vZGVUeXBlKXJldHVybiEx O2g9Zz0ib25seSI9PT1lJiYhaCYmIm5leHRTaWJsaW5nIn1yZXR1cm4hMH1pZiho PVthP20uZmlyc3RDaGlsZDptLmxhc3RDaGlsZF0sYSYmdil7Yz1tW2JdfHwobVti XT17fSksdT1jW2VdfHxbXSxkPXVbMF09PT1UJiZ1WzFdLGY9dVswXT09PVQmJnVb Ml0scD1kJiZtLmNoaWxkTm9kZXNbZF07d2hpbGUocD0rK2QmJnAmJnBbZ118fChm PWQ9MCl8fGgucG9wKCkpaWYoMT09PXAubm9kZVR5cGUmJisrZiYmcD09PXQpe2Nb ZV09W1QsZCxmXTticmVha319ZWxzZSBpZih2JiYodT0odFtiXXx8KHRbYl09e30p KVtlXSkmJnVbMF09PT1UKWY9dVsxXTtlbHNlIHdoaWxlKHA9KytkJiZwJiZwW2dd fHwoZj1kPTApfHxoLnBvcCgpKWlmKChzP3Aubm9kZU5hbWUudG9Mb3dlckNhc2Uo KT09PXk6MT09PXAubm9kZVR5cGUpJiYrK2YmJih2JiYoKHBbYl18fChwW2JdPXt9 KSlbZV09W1QsZl0pLHA9PT10KSlicmVhaztyZXR1cm4gZi09aSxmPT09cnx8MD09 PWYlciYmZi9yPj0wfX19LFBTRVVETzpmdW5jdGlvbihlLHQpe3ZhciBuLHI9by5w c2V1ZG9zW2VdfHxvLnNldEZpbHRlcnNbZS50b0xvd2VyQ2FzZSgpXXx8YXQuZXJy b3IoInVuc3VwcG9ydGVkIHBzZXVkbzogIitlKTtyZXR1cm4gcltiXT9yKHQpOnIu bGVuZ3RoPjE/KG49W2UsZSwiIix0XSxvLnNldEZpbHRlcnMuaGFzT3duUHJvcGVy dHkoZS50b0xvd2VyQ2FzZSgpKT91dChmdW5jdGlvbihlLG4pe3ZhciBpLG89cihl LHQpLGE9by5sZW5ndGg7d2hpbGUoYS0tKWk9Ri5jYWxsKGUsb1thXSksZVtpXT0h KG5baV09b1thXSl9KTpmdW5jdGlvbihlKXtyZXR1cm4gcihlLDAsbil9KTpyfX0s cHNldWRvczp7bm90OnV0KGZ1bmN0aW9uKGUpe3ZhciB0PVtdLG49W10scj1sKGUu cmVwbGFjZSh6LCIkMSIpKTtyZXR1cm4gcltiXT91dChmdW5jdGlvbihlLHQsbixp KXt2YXIgbyxhPXIoZSxudWxsLGksW10pLHM9ZS5sZW5ndGg7d2hpbGUocy0tKShv PWFbc10pJiYoZVtzXT0hKHRbc109bykpfSk6ZnVuY3Rpb24oZSxpLG8pe3JldHVy biB0WzBdPWUscih0LG51bGwsbyxuKSwhbi5wb3AoKX19KSxoYXM6dXQoZnVuY3Rp b24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBhdChlLHQpLmxlbmd0aD4w fX0pLGNvbnRhaW5zOnV0KGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXty ZXR1cm4odC50ZXh0Q29udGVudHx8dC5pbm5lclRleHR8fGEodCkpLmluZGV4T2Yo ZSk+LTF9fSksbGFuZzp1dChmdW5jdGlvbihlKXtyZXR1cm4gRy50ZXN0KGV8fCIi KXx8YXQuZXJyb3IoInVuc3VwcG9ydGVkIGxhbmc6ICIrZSksZT1lLnJlcGxhY2Uo cnQsaXQpLnRvTG93ZXJDYXNlKCksZnVuY3Rpb24odCl7dmFyIG47ZG8gaWYobj1o P3QubGFuZzp0LmdldEF0dHJpYnV0ZSgieG1sOmxhbmciKXx8dC5nZXRBdHRyaWJ1 dGUoImxhbmciKSlyZXR1cm4gbj1uLnRvTG93ZXJDYXNlKCksbj09PWV8fDA9PT1u LmluZGV4T2YoZSsiLSIpO3doaWxlKCh0PXQucGFyZW50Tm9kZSkmJjE9PT10Lm5v ZGVUeXBlKTtyZXR1cm4hMX19KSx0YXJnZXQ6ZnVuY3Rpb24odCl7dmFyIG49ZS5s b2NhdGlvbiYmZS5sb2NhdGlvbi5oYXNoO3JldHVybiBuJiZuLnNsaWNlKDEpPT09 dC5pZH0scm9vdDpmdW5jdGlvbihlKXtyZXR1cm4gZT09PWR9LGZvY3VzOmZ1bmN0 aW9uKGUpe3JldHVybiBlPT09Zi5hY3RpdmVFbGVtZW50JiYoIWYuaGFzRm9jdXN8 fGYuaGFzRm9jdXMoKSkmJiEhKGUudHlwZXx8ZS5ocmVmfHx+ZS50YWJJbmRleCl9 LGVuYWJsZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGlzYWJsZWQ9PT0hMX0sZGlz YWJsZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGlzYWJsZWQ9PT0hMH0sY2hlY2tl ZDpmdW5jdGlvbihlKXt2YXIgdD1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0 dXJuImlucHV0Ij09PXQmJiEhZS5jaGVja2VkfHwib3B0aW9uIj09PXQmJiEhZS5z ZWxlY3RlZH0sc2VsZWN0ZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucGFyZW50Tm9k ZSYmZS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsZS5zZWxlY3RlZD09PSEwfSxl bXB0eTpmdW5jdGlvbihlKXtmb3IoZT1lLmZpcnN0Q2hpbGQ7ZTtlPWUubmV4dFNp YmxpbmcpaWYoZS5ub2RlTmFtZT4iQCJ8fDM9PT1lLm5vZGVUeXBlfHw0PT09ZS5u b2RlVHlwZSlyZXR1cm4hMTtyZXR1cm4hMH0scGFyZW50OmZ1bmN0aW9uKGUpe3Jl dHVybiFvLnBzZXVkb3MuZW1wdHkoZSl9LGhlYWRlcjpmdW5jdGlvbihlKXtyZXR1 cm4gdHQudGVzdChlLm5vZGVOYW1lKX0saW5wdXQ6ZnVuY3Rpb24oZSl7cmV0dXJu IGV0LnRlc3QoZS5ub2RlTmFtZSl9LGJ1dHRvbjpmdW5jdGlvbihlKXt2YXIgdD1l Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PXQmJiJidXR0 b24iPT09ZS50eXBlfHwiYnV0dG9uIj09PXR9LHRleHQ6ZnVuY3Rpb24oZSl7dmFy IHQ7cmV0dXJuImlucHV0Ij09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmInRl eHQiPT09ZS50eXBlJiYobnVsbD09KHQ9ZS5nZXRBdHRyaWJ1dGUoInR5cGUiKSl8 fHQudG9Mb3dlckNhc2UoKT09PWUudHlwZSl9LGZpcnN0OnZ0KGZ1bmN0aW9uKCl7 cmV0dXJuWzBdfSksbGFzdDp2dChmdW5jdGlvbihlLHQpe3JldHVyblt0LTFdfSks ZXE6dnQoZnVuY3Rpb24oZSx0LG4pe3JldHVyblswPm4/bit0Om5dfSksZXZlbjp2 dChmdW5jdGlvbihlLHQpe3ZhciBuPTA7Zm9yKDt0Pm47bis9MillLnB1c2gobik7 cmV0dXJuIGV9KSxvZGQ6dnQoZnVuY3Rpb24oZSx0KXt2YXIgbj0xO2Zvcig7dD5u O24rPTIpZS5wdXNoKG4pO3JldHVybiBlfSksbHQ6dnQoZnVuY3Rpb24oZSx0LG4p e3ZhciByPTA+bj9uK3Q6bjtmb3IoOy0tcj49MDspZS5wdXNoKHIpO3JldHVybiBl fSksZ3Q6dnQoZnVuY3Rpb24oZSx0LG4pe3ZhciByPTA+bj9uK3Q6bjtmb3IoO3Q+ KytyOyllLnB1c2gocik7cmV0dXJuIGV9KX19O2ZvcihuIGlue3JhZGlvOiEwLGNo ZWNrYm94OiEwLGZpbGU6ITAscGFzc3dvcmQ6ITAsaW1hZ2U6ITB9KW8ucHNldWRv c1tuXT1tdChuKTtmb3IobiBpbntzdWJtaXQ6ITAscmVzZXQ6ITB9KW8ucHNldWRv c1tuXT15dChuKTtmdW5jdGlvbiBidChlLHQpe3ZhciBuLHIsaSxhLHMsbCx1LGM9 a1tlKyIgIl07aWYoYylyZXR1cm4gdD8wOmMuc2xpY2UoMCk7cz1lLGw9W10sdT1v LnByZUZpbHRlcjt3aGlsZShzKXsoIW58fChyPVguZXhlYyhzKSkpJiYociYmKHM9 cy5zbGljZShyWzBdLmxlbmd0aCl8fHMpLGwucHVzaChpPVtdKSksbj0hMSwocj1V LmV4ZWMocykpJiYobj1yLnNoaWZ0KCksaS5wdXNoKHt2YWx1ZTpuLHR5cGU6clsw XS5yZXBsYWNlKHosIiAiKX0pLHM9cy5zbGljZShuLmxlbmd0aCkpO2ZvcihhIGlu IG8uZmlsdGVyKSEocj1RW2FdLmV4ZWMocykpfHx1W2FdJiYhKHI9dVthXShyKSl8 fChuPXIuc2hpZnQoKSxpLnB1c2goe3ZhbHVlOm4sdHlwZTphLG1hdGNoZXM6cn0p LHM9cy5zbGljZShuLmxlbmd0aCkpO2lmKCFuKWJyZWFrfXJldHVybiB0P3MubGVu Z3RoOnM/YXQuZXJyb3IoZSk6ayhlLGwpLnNsaWNlKDApfWZ1bmN0aW9uIHh0KGUp e3ZhciB0PTAsbj1lLmxlbmd0aCxyPSIiO2Zvcig7bj50O3QrKylyKz1lW3RdLnZh bHVlO3JldHVybiByfWZ1bmN0aW9uIHd0KGUsdCxuKXt2YXIgcj10LmRpcixvPW4m JiJwYXJlbnROb2RlIj09PXIsYT1DKys7cmV0dXJuIHQuZmlyc3Q/ZnVuY3Rpb24o dCxuLGkpe3doaWxlKHQ9dFtyXSlpZigxPT09dC5ub2RlVHlwZXx8bylyZXR1cm4g ZSh0LG4saSl9OmZ1bmN0aW9uKHQsbixzKXt2YXIgbCx1LGMscD1UKyIgIithO2lm KHMpe3doaWxlKHQ9dFtyXSlpZigoMT09PXQubm9kZVR5cGV8fG8pJiZlKHQsbixz KSlyZXR1cm4hMH1lbHNlIHdoaWxlKHQ9dFtyXSlpZigxPT09dC5ub2RlVHlwZXx8 bylpZihjPXRbYl18fCh0W2JdPXt9KSwodT1jW3JdKSYmdVswXT09PXApe2lmKChs PXVbMV0pPT09ITB8fGw9PT1pKXJldHVybiBsPT09ITB9ZWxzZSBpZih1PWNbcl09 W3BdLHVbMV09ZSh0LG4scyl8fGksdVsxXT09PSEwKXJldHVybiEwfX1mdW5jdGlv biBUdChlKXtyZXR1cm4gZS5sZW5ndGg+MT9mdW5jdGlvbih0LG4scil7dmFyIGk9 ZS5sZW5ndGg7d2hpbGUoaS0tKWlmKCFlW2ldKHQsbixyKSlyZXR1cm4hMTtyZXR1 cm4hMH06ZVswXX1mdW5jdGlvbiBDdChlLHQsbixyLGkpe3ZhciBvLGE9W10scz0w LGw9ZS5sZW5ndGgsdT1udWxsIT10O2Zvcig7bD5zO3MrKykobz1lW3NdKSYmKCFu fHxuKG8scixpKSkmJihhLnB1c2gobyksdSYmdC5wdXNoKHMpKTtyZXR1cm4gYX1m dW5jdGlvbiBOdChlLHQsbixyLGksbyl7cmV0dXJuIHImJiFyW2JdJiYocj1OdChy KSksaSYmIWlbYl0mJihpPU50KGksbykpLHV0KGZ1bmN0aW9uKG8sYSxzLGwpe3Zh ciB1LGMscCxmPVtdLGQ9W10saD1hLmxlbmd0aCxnPW98fFN0KHR8fCIqIixzLm5v ZGVUeXBlP1tzXTpzLFtdKSxtPSFlfHwhbyYmdD9nOkN0KGcsZixlLHMsbCkseT1u P2l8fChvP2U6aHx8cik/W106YTptO2lmKG4mJm4obSx5LHMsbCkscil7dT1DdCh5 LGQpLHIodSxbXSxzLGwpLGM9dS5sZW5ndGg7d2hpbGUoYy0tKShwPXVbY10pJiYo eVtkW2NdXT0hKG1bZFtjXV09cCkpfWlmKG8pe2lmKGl8fGUpe2lmKGkpe3U9W10s Yz15Lmxlbmd0aDt3aGlsZShjLS0pKHA9eVtjXSkmJnUucHVzaChtW2NdPXApO2ko bnVsbCx5PVtdLHUsbCl9Yz15Lmxlbmd0aDt3aGlsZShjLS0pKHA9eVtjXSkmJih1 PWk/Ri5jYWxsKG8scCk6ZltjXSk+LTEmJihvW3VdPSEoYVt1XT1wKSl9fWVsc2Ug eT1DdCh5PT09YT95LnNwbGljZShoLHkubGVuZ3RoKTp5KSxpP2kobnVsbCxhLHks bCk6TS5hcHBseShhLHkpfSl9ZnVuY3Rpb24ga3QoZSl7dmFyIHQsbixyLGk9ZS5s ZW5ndGgsYT1vLnJlbGF0aXZlW2VbMF0udHlwZV0scz1hfHxvLnJlbGF0aXZlWyIg Il0sbD1hPzE6MCxjPXd0KGZ1bmN0aW9uKGUpe3JldHVybiBlPT09dH0scywhMCks cD13dChmdW5jdGlvbihlKXtyZXR1cm4gRi5jYWxsKHQsZSk+LTF9LHMsITApLGY9 W2Z1bmN0aW9uKGUsbixyKXtyZXR1cm4hYSYmKHJ8fG4hPT11KXx8KCh0PW4pLm5v ZGVUeXBlP2MoZSxuLHIpOnAoZSxuLHIpKX1dO2Zvcig7aT5sO2wrKylpZihuPW8u cmVsYXRpdmVbZVtsXS50eXBlXSlmPVt3dChUdChmKSxuKV07ZWxzZXtpZihuPW8u ZmlsdGVyW2VbbF0udHlwZV0uYXBwbHkobnVsbCxlW2xdLm1hdGNoZXMpLG5bYl0p e2ZvcihyPSsrbDtpPnI7cisrKWlmKG8ucmVsYXRpdmVbZVtyXS50eXBlXSlicmVh aztyZXR1cm4gTnQobD4xJiZUdChmKSxsPjEmJnh0KGUuc2xpY2UoMCxsLTEpLmNv bmNhdCh7dmFsdWU6IiAiPT09ZVtsLTJdLnR5cGU/IioiOiIifSkpLnJlcGxhY2Uo eiwiJDEiKSxuLHI+bCYma3QoZS5zbGljZShsLHIpKSxpPnImJmt0KGU9ZS5zbGlj ZShyKSksaT5yJiZ4dChlKSl9Zi5wdXNoKG4pfXJldHVybiBUdChmKX1mdW5jdGlv biBFdChlLHQpe3ZhciBuPTAscj10Lmxlbmd0aD4wLGE9ZS5sZW5ndGg+MCxzPWZ1 bmN0aW9uKHMsbCxjLHAsZCl7dmFyIGgsZyxtLHk9W10sdj0wLGI9IjAiLHg9cyYm W10sdz1udWxsIT1kLEM9dSxOPXN8fGEmJm8uZmluZC5UQUcoIioiLGQmJmwucGFy ZW50Tm9kZXx8bCksaz1UKz1udWxsPT1DPzE6TWF0aC5yYW5kb20oKXx8LjE7Zm9y KHcmJih1PWwhPT1mJiZsLGk9bik7bnVsbCE9KGg9TltiXSk7YisrKXtpZihhJiZo KXtnPTA7d2hpbGUobT1lW2crK10paWYobShoLGwsYykpe3AucHVzaChoKTticmVh a313JiYoVD1rLGk9KytuKX1yJiYoKGg9IW0mJmgpJiZ2LS0scyYmeC5wdXNoKGgp KX1pZih2Kz1iLHImJmIhPT12KXtnPTA7d2hpbGUobT10W2crK10pbSh4LHksbCxj KTtpZihzKXtpZih2PjApd2hpbGUoYi0tKXhbYl18fHlbYl18fCh5W2JdPXEuY2Fs bChwKSk7eT1DdCh5KX1NLmFwcGx5KHAseSksdyYmIXMmJnkubGVuZ3RoPjAmJnYr dC5sZW5ndGg+MSYmYXQudW5pcXVlU29ydChwKX1yZXR1cm4gdyYmKFQ9ayx1PUMp LHh9O3JldHVybiByP3V0KHMpOnN9bD1hdC5jb21waWxlPWZ1bmN0aW9uKGUsdCl7 dmFyIG4scj1bXSxpPVtdLG89RVtlKyIgIl07aWYoIW8pe3R8fCh0PWJ0KGUpKSxu PXQubGVuZ3RoO3doaWxlKG4tLSlvPWt0KHRbbl0pLG9bYl0/ci5wdXNoKG8pOmku cHVzaChvKTtvPUUoZSxFdChpLHIpKX1yZXR1cm4gb307ZnVuY3Rpb24gU3QoZSx0 LG4pe3ZhciByPTAsaT10Lmxlbmd0aDtmb3IoO2k+cjtyKyspYXQoZSx0W3JdLG4p O3JldHVybiBufWZ1bmN0aW9uIEF0KGUsdCxuLGkpe3ZhciBhLHMsdSxjLHAsZj1i dChlKTtpZighaSYmMT09PWYubGVuZ3RoKXtpZihzPWZbMF09ZlswXS5zbGljZSgw KSxzLmxlbmd0aD4yJiYiSUQiPT09KHU9c1swXSkudHlwZSYmci5nZXRCeUlkJiY5 PT09dC5ub2RlVHlwZSYmaCYmby5yZWxhdGl2ZVtzWzFdLnR5cGVdKXtpZih0PShv LmZpbmQuSUQodS5tYXRjaGVzWzBdLnJlcGxhY2UocnQsaXQpLHQpfHxbXSlbMF0s IXQpcmV0dXJuIG47ZT1lLnNsaWNlKHMuc2hpZnQoKS52YWx1ZS5sZW5ndGgpfWE9 US5uZWVkc0NvbnRleHQudGVzdChlKT8wOnMubGVuZ3RoO3doaWxlKGEtLSl7aWYo dT1zW2FdLG8ucmVsYXRpdmVbYz11LnR5cGVdKWJyZWFrO2lmKChwPW8uZmluZFtj XSkmJihpPXAodS5tYXRjaGVzWzBdLnJlcGxhY2UocnQsaXQpLFYudGVzdChzWzBd LnR5cGUpJiZ0LnBhcmVudE5vZGV8fHQpKSl7aWYocy5zcGxpY2UoYSwxKSxlPWku bGVuZ3RoJiZ4dChzKSwhZSlyZXR1cm4gTS5hcHBseShuLGkpLG47YnJlYWt9fX1y ZXR1cm4gbChlLGYpKGksdCwhaCxuLFYudGVzdChlKSksbn1vLnBzZXVkb3MubnRo PW8ucHNldWRvcy5lcTtmdW5jdGlvbiBqdCgpe31qdC5wcm90b3R5cGU9by5maWx0 ZXJzPW8ucHNldWRvcyxvLnNldEZpbHRlcnM9bmV3IGp0LHIuc29ydFN0YWJsZT1i LnNwbGl0KCIiKS5zb3J0KEEpLmpvaW4oIiIpPT09YixwKCksWzAsMF0uc29ydChB KSxyLmRldGVjdER1cGxpY2F0ZXM9Uyx4LmZpbmQ9YXQseC5leHByPWF0LnNlbGVj dG9ycyx4LmV4cHJbIjoiXT14LmV4cHIucHNldWRvcyx4LnVuaXF1ZT1hdC51bmlx dWVTb3J0LHgudGV4dD1hdC5nZXRUZXh0LHguaXNYTUxEb2M9YXQuaXNYTUwseC5j b250YWlucz1hdC5jb250YWluc30oZSk7dmFyIE89e307ZnVuY3Rpb24gRihlKXt2 YXIgdD1PW2VdPXt9O3JldHVybiB4LmVhY2goZS5tYXRjaChUKXx8W10sZnVuY3Rp b24oZSxuKXt0W25dPSEwfSksdH14LkNhbGxiYWNrcz1mdW5jdGlvbihlKXtlPSJz dHJpbmciPT10eXBlb2YgZT9PW2VdfHxGKGUpOnguZXh0ZW5kKHt9LGUpO3ZhciBu LHIsaSxvLGEscyxsPVtdLHU9IWUub25jZSYmW10sYz1mdW5jdGlvbih0KXtmb3Io cj1lLm1lbW9yeSYmdCxpPSEwLGE9c3x8MCxzPTAsbz1sLmxlbmd0aCxuPSEwO2wm Jm8+YTthKyspaWYobFthXS5hcHBseSh0WzBdLHRbMV0pPT09ITEmJmUuc3RvcE9u RmFsc2Upe3I9ITE7YnJlYWt9bj0hMSxsJiYodT91Lmxlbmd0aCYmYyh1LnNoaWZ0 KCkpOnI/bD1bXTpwLmRpc2FibGUoKSl9LHA9e2FkZDpmdW5jdGlvbigpe2lmKGwp e3ZhciB0PWwubGVuZ3RoOyhmdW5jdGlvbiBpKHQpe3guZWFjaCh0LGZ1bmN0aW9u KHQsbil7dmFyIHI9eC50eXBlKG4pOyJmdW5jdGlvbiI9PT1yP2UudW5pcXVlJiZw LmhhcyhuKXx8bC5wdXNoKG4pOm4mJm4ubGVuZ3RoJiYic3RyaW5nIiE9PXImJmko bil9KX0pKGFyZ3VtZW50cyksbj9vPWwubGVuZ3RoOnImJihzPXQsYyhyKSl9cmV0 dXJuIHRoaXN9LHJlbW92ZTpmdW5jdGlvbigpe3JldHVybiBsJiZ4LmVhY2goYXJn dW1lbnRzLGZ1bmN0aW9uKGUsdCl7dmFyIHI7d2hpbGUoKHI9eC5pbkFycmF5KHQs bCxyKSk+LTEpbC5zcGxpY2UociwxKSxuJiYobz49ciYmby0tLGE+PXImJmEtLSl9 KSx0aGlzfSxoYXM6ZnVuY3Rpb24oZSl7cmV0dXJuIGU/eC5pbkFycmF5KGUsbCk+ LTE6ISghbHx8IWwubGVuZ3RoKX0sZW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4gbD1b XSxvPTAsdGhpc30sZGlzYWJsZTpmdW5jdGlvbigpe3JldHVybiBsPXU9cj10LHRo aXN9LGRpc2FibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIWx9LGxvY2s6ZnVuY3Rpb24o KXtyZXR1cm4gdT10LHJ8fHAuZGlzYWJsZSgpLHRoaXN9LGxvY2tlZDpmdW5jdGlv bigpe3JldHVybiF1fSxmaXJlV2l0aDpmdW5jdGlvbihlLHQpe3JldHVybiB0PXR8 fFtdLHQ9W2UsdC5zbGljZT90LnNsaWNlKCk6dF0sIWx8fGkmJiF1fHwobj91LnB1 c2godCk6Yyh0KSksdGhpc30sZmlyZTpmdW5jdGlvbigpe3JldHVybiBwLmZpcmVX aXRoKHRoaXMsYXJndW1lbnRzKSx0aGlzfSxmaXJlZDpmdW5jdGlvbigpe3JldHVy biEhaX19O3JldHVybiBwfSx4LmV4dGVuZCh7RGVmZXJyZWQ6ZnVuY3Rpb24oZSl7 dmFyIHQ9W1sicmVzb2x2ZSIsImRvbmUiLHguQ2FsbGJhY2tzKCJvbmNlIG1lbW9y eSIpLCJyZXNvbHZlZCJdLFsicmVqZWN0IiwiZmFpbCIseC5DYWxsYmFja3MoIm9u Y2UgbWVtb3J5IiksInJlamVjdGVkIl0sWyJub3RpZnkiLCJwcm9ncmVzcyIseC5D YWxsYmFja3MoIm1lbW9yeSIpXV0sbj0icGVuZGluZyIscj17c3RhdGU6ZnVuY3Rp b24oKXtyZXR1cm4gbn0sYWx3YXlzOmZ1bmN0aW9uKCl7cmV0dXJuIGkuZG9uZShh cmd1bWVudHMpLmZhaWwoYXJndW1lbnRzKSx0aGlzfSx0aGVuOmZ1bmN0aW9uKCl7 dmFyIGU9YXJndW1lbnRzO3JldHVybiB4LkRlZmVycmVkKGZ1bmN0aW9uKG4pe3gu ZWFjaCh0LGZ1bmN0aW9uKHQsbyl7dmFyIGE9b1swXSxzPXguaXNGdW5jdGlvbihl W3RdKSYmZVt0XTtpW29bMV1dKGZ1bmN0aW9uKCl7dmFyIGU9cyYmcy5hcHBseSh0 aGlzLGFyZ3VtZW50cyk7ZSYmeC5pc0Z1bmN0aW9uKGUucHJvbWlzZSk/ZS5wcm9t aXNlKCkuZG9uZShuLnJlc29sdmUpLmZhaWwobi5yZWplY3QpLnByb2dyZXNzKG4u bm90aWZ5KTpuW2ErIldpdGgiXSh0aGlzPT09cj9uLnByb21pc2UoKTp0aGlzLHM/ W2VdOmFyZ3VtZW50cyl9KX0pLGU9bnVsbH0pLnByb21pc2UoKX0scHJvbWlzZTpm dW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZT94LmV4dGVuZChlLHIpOnJ9fSxpPXt9 O3JldHVybiByLnBpcGU9ci50aGVuLHguZWFjaCh0LGZ1bmN0aW9uKGUsbyl7dmFy IGE9b1syXSxzPW9bM107cltvWzFdXT1hLmFkZCxzJiZhLmFkZChmdW5jdGlvbigp e249c30sdFsxXmVdWzJdLmRpc2FibGUsdFsyXVsyXS5sb2NrKSxpW29bMF1dPWZ1 bmN0aW9uKCl7cmV0dXJuIGlbb1swXSsiV2l0aCJdKHRoaXM9PT1pP3I6dGhpcyxh cmd1bWVudHMpLHRoaXN9LGlbb1swXSsiV2l0aCJdPWEuZmlyZVdpdGh9KSxyLnBy b21pc2UoaSksZSYmZS5jYWxsKGksaSksaX0sd2hlbjpmdW5jdGlvbihlKXt2YXIg dD0wLG49Zy5jYWxsKGFyZ3VtZW50cykscj1uLmxlbmd0aCxpPTEhPT1yfHxlJiZ4 LmlzRnVuY3Rpb24oZS5wcm9taXNlKT9yOjAsbz0xPT09aT9lOnguRGVmZXJyZWQo KSxhPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZnVuY3Rpb24ocil7dFtlXT10aGlz LG5bZV09YXJndW1lbnRzLmxlbmd0aD4xP2cuY2FsbChhcmd1bWVudHMpOnIsbj09 PXM/by5ub3RpZnlXaXRoKHQsbik6LS1pfHxvLnJlc29sdmVXaXRoKHQsbil9fSxz LGwsdTtpZihyPjEpZm9yKHM9QXJyYXkociksbD1BcnJheShyKSx1PUFycmF5KHIp O3I+dDt0Kyspblt0XSYmeC5pc0Z1bmN0aW9uKG5bdF0ucHJvbWlzZSk/blt0XS5w cm9taXNlKCkuZG9uZShhKHQsdSxuKSkuZmFpbChvLnJlamVjdCkucHJvZ3Jlc3Mo YSh0LGwscykpOi0taTtyZXR1cm4gaXx8by5yZXNvbHZlV2l0aCh1LG4pLG8ucHJv bWlzZSgpfX0pLHguc3VwcG9ydD1mdW5jdGlvbih0KXt2YXIgbixyLG8scyxsLHUs YyxwLGYsZD1hLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2lmKGQuc2V0QXR0cmlidXRl KCJjbGFzc05hbWUiLCJ0IiksZC5pbm5lckhUTUw9IiAgPGxpbmsvPjx0YWJsZT48 L3RhYmxlPjxhIGhyZWY9Jy9hJz5hPC9hPjxpbnB1dCB0eXBlPSdjaGVja2JveCcv PiIsbj1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIil8fFtdLHI9ZC5nZXRFbGVt ZW50c0J5VGFnTmFtZSgiYSIpWzBdLCFyfHwhci5zdHlsZXx8IW4ubGVuZ3RoKXJl dHVybiB0O3M9YS5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKSx1PXMuYXBwZW5kQ2hp bGQoYS5jcmVhdGVFbGVtZW50KCJvcHRpb24iKSksbz1kLmdldEVsZW1lbnRzQnlU YWdOYW1lKCJpbnB1dCIpWzBdLHIuc3R5bGUuY3NzVGV4dD0idG9wOjFweDtmbG9h dDpsZWZ0O29wYWNpdHk6LjUiLHQuZ2V0U2V0QXR0cmlidXRlPSJ0IiE9PWQuY2xh c3NOYW1lLHQubGVhZGluZ1doaXRlc3BhY2U9Mz09PWQuZmlyc3RDaGlsZC5ub2Rl VHlwZSx0LnRib2R5PSFkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpLmxl bmd0aCx0Lmh0bWxTZXJpYWxpemU9ISFkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJs aW5rIikubGVuZ3RoLHQuc3R5bGU9L3RvcC8udGVzdChyLmdldEF0dHJpYnV0ZSgi c3R5bGUiKSksdC5ocmVmTm9ybWFsaXplZD0iL2EiPT09ci5nZXRBdHRyaWJ1dGUo ImhyZWYiKSx0Lm9wYWNpdHk9L14wLjUvLnRlc3Qoci5zdHlsZS5vcGFjaXR5KSx0 LmNzc0Zsb2F0PSEhci5zdHlsZS5jc3NGbG9hdCx0LmNoZWNrT249ISFvLnZhbHVl LHQub3B0U2VsZWN0ZWQ9dS5zZWxlY3RlZCx0LmVuY3R5cGU9ISFhLmNyZWF0ZUVs ZW1lbnQoImZvcm0iKS5lbmN0eXBlLHQuaHRtbDVDbG9uZT0iPDpuYXY+PC86bmF2 PiIhPT1hLmNyZWF0ZUVsZW1lbnQoIm5hdiIpLmNsb25lTm9kZSghMCkub3V0ZXJI VE1MLHQuaW5saW5lQmxvY2tOZWVkc0xheW91dD0hMSx0LnNocmlua1dyYXBCbG9j a3M9ITEsdC5waXhlbFBvc2l0aW9uPSExLHQuZGVsZXRlRXhwYW5kbz0hMCx0Lm5v Q2xvbmVFdmVudD0hMCx0LnJlbGlhYmxlTWFyZ2luUmlnaHQ9ITAsdC5ib3hTaXpp bmdSZWxpYWJsZT0hMCxvLmNoZWNrZWQ9ITAsdC5ub0Nsb25lQ2hlY2tlZD1vLmNs b25lTm9kZSghMCkuY2hlY2tlZCxzLmRpc2FibGVkPSEwLHQub3B0RGlzYWJsZWQ9 IXUuZGlzYWJsZWQ7dHJ5e2RlbGV0ZSBkLnRlc3R9Y2F0Y2goaCl7dC5kZWxldGVF eHBhbmRvPSExfW89YS5jcmVhdGVFbGVtZW50KCJpbnB1dCIpLG8uc2V0QXR0cmli dXRlKCJ2YWx1ZSIsIiIpLHQuaW5wdXQ9IiI9PT1vLmdldEF0dHJpYnV0ZSgidmFs dWUiKSxvLnZhbHVlPSJ0IixvLnNldEF0dHJpYnV0ZSgidHlwZSIsInJhZGlvIiks dC5yYWRpb1ZhbHVlPSJ0Ij09PW8udmFsdWUsby5zZXRBdHRyaWJ1dGUoImNoZWNr ZWQiLCJ0Iiksby5zZXRBdHRyaWJ1dGUoIm5hbWUiLCJ0IiksbD1hLmNyZWF0ZURv Y3VtZW50RnJhZ21lbnQoKSxsLmFwcGVuZENoaWxkKG8pLHQuYXBwZW5kQ2hlY2tl ZD1vLmNoZWNrZWQsdC5jaGVja0Nsb25lPWwuY2xvbmVOb2RlKCEwKS5jbG9uZU5v ZGUoITApLmxhc3RDaGlsZC5jaGVja2VkLGQuYXR0YWNoRXZlbnQmJihkLmF0dGFj aEV2ZW50KCJvbmNsaWNrIixmdW5jdGlvbigpe3Qubm9DbG9uZUV2ZW50PSExfSks ZC5jbG9uZU5vZGUoITApLmNsaWNrKCkpO2ZvcihmIGlue3N1Ym1pdDohMCxjaGFu Z2U6ITAsZm9jdXNpbjohMH0pZC5zZXRBdHRyaWJ1dGUoYz0ib24iK2YsInQiKSx0 W2YrIkJ1YmJsZXMiXT1jIGluIGV8fGQuYXR0cmlidXRlc1tjXS5leHBhbmRvPT09 ITE7ZC5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iY29udGVudC1ib3giLGQuY2xvbmVO b2RlKCEwKS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iIix0LmNsZWFyQ2xvbmVTdHls ZT0iY29udGVudC1ib3giPT09ZC5zdHlsZS5iYWNrZ3JvdW5kQ2xpcDtmb3IoZiBp biB4KHQpKWJyZWFrO3JldHVybiB0Lm93bkxhc3Q9IjAiIT09Zix4KGZ1bmN0aW9u KCl7dmFyIG4scixvLHM9InBhZGRpbmc6MDttYXJnaW46MDtib3JkZXI6MDtkaXNw bGF5OmJsb2NrO2JveC1zaXppbmc6Y29udGVudC1ib3g7LW1vei1ib3gtc2l6aW5n OmNvbnRlbnQtYm94Oy13ZWJraXQtYm94LXNpemluZzpjb250ZW50LWJveDsiLGw9 YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdO2wmJihuPWEuY3JlYXRl RWxlbWVudCgiZGl2Iiksbi5zdHlsZS5jc3NUZXh0PSJib3JkZXI6MDt3aWR0aDow O2hlaWdodDowO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6LTk5OTlweDtt YXJnaW4tdG9wOjFweCIsbC5hcHBlbmRDaGlsZChuKS5hcHBlbmRDaGlsZChkKSxk LmlubmVySFRNTD0iPHRhYmxlPjx0cj48dGQ+PC90ZD48dGQ+dDwvdGQ+PC90cj48 L3RhYmxlPiIsbz1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpLG9bMF0uc3R5 bGUuY3NzVGV4dD0icGFkZGluZzowO21hcmdpbjowO2JvcmRlcjowO2Rpc3BsYXk6 bm9uZSIscD0wPT09b1swXS5vZmZzZXRIZWlnaHQsb1swXS5zdHlsZS5kaXNwbGF5 PSIiLG9bMV0uc3R5bGUuZGlzcGxheT0ibm9uZSIsdC5yZWxpYWJsZUhpZGRlbk9m ZnNldHM9cCYmMD09PW9bMF0ub2Zmc2V0SGVpZ2h0LGQuaW5uZXJIVE1MPSIiLGQu c3R5bGUuY3NzVGV4dD0iYm94LXNpemluZzpib3JkZXItYm94Oy1tb3otYm94LXNp emluZzpib3JkZXItYm94Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O3Bh ZGRpbmc6MXB4O2JvcmRlcjoxcHg7ZGlzcGxheTpibG9jazt3aWR0aDo0cHg7bWFy Z2luLXRvcDoxJTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MSU7Iix4LnN3YXAobCxu dWxsIT1sLnN0eWxlLnpvb20/e3pvb206MX06e30sZnVuY3Rpb24oKXt0LmJveFNp emluZz00PT09ZC5vZmZzZXRXaWR0aH0pLGUuZ2V0Q29tcHV0ZWRTdHlsZSYmKHQu cGl4ZWxQb3NpdGlvbj0iMSUiIT09KGUuZ2V0Q29tcHV0ZWRTdHlsZShkLG51bGwp fHx7fSkudG9wLHQuYm94U2l6aW5nUmVsaWFibGU9IjRweCI9PT0oZS5nZXRDb21w dXRlZFN0eWxlKGQsbnVsbCl8fHt3aWR0aDoiNHB4In0pLndpZHRoLHI9ZC5hcHBl bmRDaGlsZChhLmNyZWF0ZUVsZW1lbnQoImRpdiIpKSxyLnN0eWxlLmNzc1RleHQ9 ZC5zdHlsZS5jc3NUZXh0PXMsci5zdHlsZS5tYXJnaW5SaWdodD1yLnN0eWxlLndp ZHRoPSIwIixkLnN0eWxlLndpZHRoPSIxcHgiLHQucmVsaWFibGVNYXJnaW5SaWdo dD0hcGFyc2VGbG9hdCgoZS5nZXRDb21wdXRlZFN0eWxlKHIsbnVsbCl8fHt9KS5t YXJnaW5SaWdodCkpLHR5cGVvZiBkLnN0eWxlLnpvb20hPT1pJiYoZC5pbm5lckhU TUw9IiIsZC5zdHlsZS5jc3NUZXh0PXMrIndpZHRoOjFweDtwYWRkaW5nOjFweDtk aXNwbGF5OmlubGluZTt6b29tOjEiLHQuaW5saW5lQmxvY2tOZWVkc0xheW91dD0z PT09ZC5vZmZzZXRXaWR0aCxkLnN0eWxlLmRpc3BsYXk9ImJsb2NrIixkLmlubmVy SFRNTD0iPGRpdj48L2Rpdj4iLGQuZmlyc3RDaGlsZC5zdHlsZS53aWR0aD0iNXB4 Iix0LnNocmlua1dyYXBCbG9ja3M9MyE9PWQub2Zmc2V0V2lkdGgsdC5pbmxpbmVC bG9ja05lZWRzTGF5b3V0JiYobC5zdHlsZS56b29tPTEpKSxsLnJlbW92ZUNoaWxk KG4pLG49ZD1vPXI9bnVsbCkKfSksbj1zPWw9dT1yPW89bnVsbCx0fSh7fSk7dmFy IEI9Lyg/Olx7W1xzXFNdKlx9fFxbW1xzXFNdKlxdKSQvLFA9LyhbQS1aXSkvZztm dW5jdGlvbiBSKGUsbixyLGkpe2lmKHguYWNjZXB0RGF0YShlKSl7dmFyIG8sYSxz PXguZXhwYW5kbyxsPWUubm9kZVR5cGUsdT1sP3guY2FjaGU6ZSxjPWw/ZVtzXTpl W3NdJiZzO2lmKGMmJnVbY10mJihpfHx1W2NdLmRhdGEpfHxyIT09dHx8InN0cmlu ZyIhPXR5cGVvZiBuKXJldHVybiBjfHwoYz1sP2Vbc109cC5wb3AoKXx8eC5ndWlk Kys6cyksdVtjXXx8KHVbY109bD97fTp7dG9KU09OOngubm9vcH0pLCgib2JqZWN0 Ij09dHlwZW9mIG58fCJmdW5jdGlvbiI9PXR5cGVvZiBuKSYmKGk/dVtjXT14LmV4 dGVuZCh1W2NdLG4pOnVbY10uZGF0YT14LmV4dGVuZCh1W2NdLmRhdGEsbikpLGE9 dVtjXSxpfHwoYS5kYXRhfHwoYS5kYXRhPXt9KSxhPWEuZGF0YSksciE9PXQmJihh W3guY2FtZWxDYXNlKG4pXT1yKSwic3RyaW5nIj09dHlwZW9mIG4/KG89YVtuXSxu dWxsPT1vJiYobz1hW3guY2FtZWxDYXNlKG4pXSkpOm89YSxvfX1mdW5jdGlvbiBX KGUsdCxuKXtpZih4LmFjY2VwdERhdGEoZSkpe3ZhciByLGksbz1lLm5vZGVUeXBl LGE9bz94LmNhY2hlOmUscz1vP2VbeC5leHBhbmRvXTp4LmV4cGFuZG87aWYoYVtz XSl7aWYodCYmKHI9bj9hW3NdOmFbc10uZGF0YSkpe3guaXNBcnJheSh0KT90PXQu Y29uY2F0KHgubWFwKHQseC5jYW1lbENhc2UpKTp0IGluIHI/dD1bdF06KHQ9eC5j YW1lbENhc2UodCksdD10IGluIHI/W3RdOnQuc3BsaXQoIiAiKSksaT10Lmxlbmd0 aDt3aGlsZShpLS0pZGVsZXRlIHJbdFtpXV07aWYobj8hSShyKToheC5pc0VtcHR5 T2JqZWN0KHIpKXJldHVybn0obnx8KGRlbGV0ZSBhW3NdLmRhdGEsSShhW3NdKSkp JiYobz94LmNsZWFuRGF0YShbZV0sITApOnguc3VwcG9ydC5kZWxldGVFeHBhbmRv fHxhIT1hLndpbmRvdz9kZWxldGUgYVtzXTphW3NdPW51bGwpfX19eC5leHRlbmQo e2NhY2hlOnt9LG5vRGF0YTp7YXBwbGV0OiEwLGVtYmVkOiEwLG9iamVjdDoiY2xz aWQ6RDI3Q0RCNkUtQUU2RC0xMWNmLTk2QjgtNDQ0NTUzNTQwMDAwIn0saGFzRGF0 YTpmdW5jdGlvbihlKXtyZXR1cm4gZT1lLm5vZGVUeXBlP3guY2FjaGVbZVt4LmV4 cGFuZG9dXTplW3guZXhwYW5kb10sISFlJiYhSShlKX0sZGF0YTpmdW5jdGlvbihl LHQsbil7cmV0dXJuIFIoZSx0LG4pfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGUsdCl7 cmV0dXJuIFcoZSx0KX0sX2RhdGE6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBSKGUs dCxuLCEwKX0sX3JlbW92ZURhdGE6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gVyhlLHQs ITApfSxhY2NlcHREYXRhOmZ1bmN0aW9uKGUpe2lmKGUubm9kZVR5cGUmJjEhPT1l Lm5vZGVUeXBlJiY5IT09ZS5ub2RlVHlwZSlyZXR1cm4hMTt2YXIgdD1lLm5vZGVO YW1lJiZ4Lm5vRGF0YVtlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldO3JldHVybiF0 fHx0IT09ITAmJmUuZ2V0QXR0cmlidXRlKCJjbGFzc2lkIik9PT10fX0pLHguZm4u ZXh0ZW5kKHtkYXRhOmZ1bmN0aW9uKGUsbil7dmFyIHIsaSxvPW51bGwsYT0wLHM9 dGhpc1swXTtpZihlPT09dCl7aWYodGhpcy5sZW5ndGgmJihvPXguZGF0YShzKSwx PT09cy5ub2RlVHlwZSYmIXguX2RhdGEocywicGFyc2VkQXR0cnMiKSkpe2Zvcihy PXMuYXR0cmlidXRlcztyLmxlbmd0aD5hO2ErKylpPXJbYV0ubmFtZSwwPT09aS5p bmRleE9mKCJkYXRhLSIpJiYoaT14LmNhbWVsQ2FzZShpLnNsaWNlKDUpKSwkKHMs aSxvW2ldKSk7eC5fZGF0YShzLCJwYXJzZWRBdHRycyIsITApfXJldHVybiBvfXJl dHVybiJvYmplY3QiPT10eXBlb2YgZT90aGlzLmVhY2goZnVuY3Rpb24oKXt4LmRh dGEodGhpcyxlKX0pOmFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goZnVuY3Rp b24oKXt4LmRhdGEodGhpcyxlLG4pfSk6cz8kKHMsZSx4LmRhdGEocyxlKSk6bnVs bH0scmVtb3ZlRGF0YTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0 aW9uKCl7eC5yZW1vdmVEYXRhKHRoaXMsZSl9KX19KTtmdW5jdGlvbiAkKGUsbixy KXtpZihyPT09dCYmMT09PWUubm9kZVR5cGUpe3ZhciBpPSJkYXRhLSIrbi5yZXBs YWNlKFAsIi0kMSIpLnRvTG93ZXJDYXNlKCk7aWYocj1lLmdldEF0dHJpYnV0ZShp KSwic3RyaW5nIj09dHlwZW9mIHIpe3RyeXtyPSJ0cnVlIj09PXI/ITA6ImZhbHNl Ij09PXI/ITE6Im51bGwiPT09cj9udWxsOityKyIiPT09cj8rcjpCLnRlc3Qocik/ eC5wYXJzZUpTT04ocik6cn1jYXRjaChvKXt9eC5kYXRhKGUsbixyKX1lbHNlIHI9 dH1yZXR1cm4gcn1mdW5jdGlvbiBJKGUpe3ZhciB0O2Zvcih0IGluIGUpaWYoKCJk YXRhIiE9PXR8fCF4LmlzRW1wdHlPYmplY3QoZVt0XSkpJiYidG9KU09OIiE9PXQp cmV0dXJuITE7cmV0dXJuITB9eC5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGUsbixy KXt2YXIgaTtyZXR1cm4gZT8obj0obnx8ImZ4IikrInF1ZXVlIixpPXguX2RhdGEo ZSxuKSxyJiYoIWl8fHguaXNBcnJheShyKT9pPXguX2RhdGEoZSxuLHgubWFrZUFy cmF5KHIpKTppLnB1c2gocikpLGl8fFtdKTp0fSxkZXF1ZXVlOmZ1bmN0aW9uKGUs dCl7dD10fHwiZngiO3ZhciBuPXgucXVldWUoZSx0KSxyPW4ubGVuZ3RoLGk9bi5z aGlmdCgpLG89eC5fcXVldWVIb29rcyhlLHQpLGE9ZnVuY3Rpb24oKXt4LmRlcXVl dWUoZSx0KX07ImlucHJvZ3Jlc3MiPT09aSYmKGk9bi5zaGlmdCgpLHItLSksaSYm KCJmeCI9PT10JiZuLnVuc2hpZnQoImlucHJvZ3Jlc3MiKSxkZWxldGUgby5zdG9w LGkuY2FsbChlLGEsbykpLCFyJiZvJiZvLmVtcHR5LmZpcmUoKX0sX3F1ZXVlSG9v a3M6ZnVuY3Rpb24oZSx0KXt2YXIgbj10KyJxdWV1ZUhvb2tzIjtyZXR1cm4geC5f ZGF0YShlLG4pfHx4Ll9kYXRhKGUsbix7ZW1wdHk6eC5DYWxsYmFja3MoIm9uY2Ug bWVtb3J5IikuYWRkKGZ1bmN0aW9uKCl7eC5fcmVtb3ZlRGF0YShlLHQrInF1ZXVl IikseC5fcmVtb3ZlRGF0YShlLG4pfSl9KX19KSx4LmZuLmV4dGVuZCh7cXVldWU6 ZnVuY3Rpb24oZSxuKXt2YXIgcj0yO3JldHVybiJzdHJpbmciIT10eXBlb2YgZSYm KG49ZSxlPSJmeCIsci0tKSxyPmFyZ3VtZW50cy5sZW5ndGg/eC5xdWV1ZSh0aGlz WzBdLGUpOm49PT10P3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQ9eC5x dWV1ZSh0aGlzLGUsbik7eC5fcXVldWVIb29rcyh0aGlzLGUpLCJmeCI9PT1lJiYi aW5wcm9ncmVzcyIhPT10WzBdJiZ4LmRlcXVldWUodGhpcyxlKX0pfSxkZXF1ZXVl OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt4LmRlcXVl dWUodGhpcyxlKX0pfSxkZWxheTpmdW5jdGlvbihlLHQpe3JldHVybiBlPXguZng/ eC5meC5zcGVlZHNbZV18fGU6ZSx0PXR8fCJmeCIsdGhpcy5xdWV1ZSh0LGZ1bmN0 aW9uKHQsbil7dmFyIHI9c2V0VGltZW91dCh0LGUpO24uc3RvcD1mdW5jdGlvbigp e2NsZWFyVGltZW91dChyKX19KX0sY2xlYXJRdWV1ZTpmdW5jdGlvbihlKXtyZXR1 cm4gdGhpcy5xdWV1ZShlfHwiZngiLFtdKX0scHJvbWlzZTpmdW5jdGlvbihlLG4p e3ZhciByLGk9MSxvPXguRGVmZXJyZWQoKSxhPXRoaXMscz10aGlzLmxlbmd0aCxs PWZ1bmN0aW9uKCl7LS1pfHxvLnJlc29sdmVXaXRoKGEsW2FdKX07InN0cmluZyIh PXR5cGVvZiBlJiYobj1lLGU9dCksZT1lfHwiZngiO3doaWxlKHMtLSlyPXguX2Rh dGEoYVtzXSxlKyJxdWV1ZUhvb2tzIiksciYmci5lbXB0eSYmKGkrKyxyLmVtcHR5 LmFkZChsKSk7cmV0dXJuIGwoKSxvLnByb21pc2Uobil9fSk7dmFyIHosWCxVPS9b XHRcclxuXGZdL2csVj0vXHIvZyxZPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVh fGJ1dHRvbnxvYmplY3QpJC9pLEo9L14oPzphfGFyZWEpJC9pLEc9L14oPzpjaGVj a2VkfHNlbGVjdGVkKSQvaSxRPXguc3VwcG9ydC5nZXRTZXRBdHRyaWJ1dGUsSz14 LnN1cHBvcnQuaW5wdXQ7eC5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oZSx0KXty ZXR1cm4geC5hY2Nlc3ModGhpcyx4LmF0dHIsZSx0LGFyZ3VtZW50cy5sZW5ndGg+ MSl9LHJlbW92ZUF0dHI6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5j dGlvbigpe3gucmVtb3ZlQXR0cih0aGlzLGUpfSl9LHByb3A6ZnVuY3Rpb24oZSx0 KXtyZXR1cm4geC5hY2Nlc3ModGhpcyx4LnByb3AsZSx0LGFyZ3VtZW50cy5sZW5n dGg+MSl9LHJlbW92ZVByb3A6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9eC5wcm9wRml4 W2VdfHxlLHRoaXMuZWFjaChmdW5jdGlvbigpe3RyeXt0aGlzW2VdPXQsZGVsZXRl IHRoaXNbZV19Y2F0Y2gobil7fX0pfSxhZGRDbGFzczpmdW5jdGlvbihlKXt2YXIg dCxuLHIsaSxvLGE9MCxzPXRoaXMubGVuZ3RoLGw9InN0cmluZyI9PXR5cGVvZiBl JiZlO2lmKHguaXNGdW5jdGlvbihlKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9u KHQpe3godGhpcykuYWRkQ2xhc3MoZS5jYWxsKHRoaXMsdCx0aGlzLmNsYXNzTmFt ZSkpfSk7aWYobClmb3IodD0oZXx8IiIpLm1hdGNoKFQpfHxbXTtzPmE7YSsrKWlm KG49dGhpc1thXSxyPTE9PT1uLm5vZGVUeXBlJiYobi5jbGFzc05hbWU/KCIgIitu LmNsYXNzTmFtZSsiICIpLnJlcGxhY2UoVSwiICIpOiIgIikpe289MDt3aGlsZShp PXRbbysrXSkwPnIuaW5kZXhPZigiICIraSsiICIpJiYocis9aSsiICIpO24uY2xh c3NOYW1lPXgudHJpbShyKX1yZXR1cm4gdGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rp b24oZSl7dmFyIHQsbixyLGksbyxhPTAscz10aGlzLmxlbmd0aCxsPTA9PT1hcmd1 bWVudHMubGVuZ3RofHwic3RyaW5nIj09dHlwZW9mIGUmJmU7aWYoeC5pc0Z1bmN0 aW9uKGUpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24odCl7eCh0aGlzKS5yZW1v dmVDbGFzcyhlLmNhbGwodGhpcyx0LHRoaXMuY2xhc3NOYW1lKSl9KTtpZihsKWZv cih0PShlfHwiIikubWF0Y2goVCl8fFtdO3M+YTthKyspaWYobj10aGlzW2FdLHI9 MT09PW4ubm9kZVR5cGUmJihuLmNsYXNzTmFtZT8oIiAiK24uY2xhc3NOYW1lKyIg IikucmVwbGFjZShVLCIgIik6IiIpKXtvPTA7d2hpbGUoaT10W28rK10pd2hpbGUo ci5pbmRleE9mKCIgIitpKyIgIik+PTApcj1yLnJlcGxhY2UoIiAiK2krIiAiLCIg Iik7bi5jbGFzc05hbWU9ZT94LnRyaW0ocik6IiJ9cmV0dXJuIHRoaXN9LHRvZ2ds ZUNsYXNzOmZ1bmN0aW9uKGUsdCl7dmFyIG49dHlwZW9mIGUscj0iYm9vbGVhbiI9 PXR5cGVvZiB0O3JldHVybiB4LmlzRnVuY3Rpb24oZSk/dGhpcy5lYWNoKGZ1bmN0 aW9uKG4pe3godGhpcykudG9nZ2xlQ2xhc3MoZS5jYWxsKHRoaXMsbix0aGlzLmNs YXNzTmFtZSx0KSx0KX0pOnRoaXMuZWFjaChmdW5jdGlvbigpe2lmKCJzdHJpbmci PT09bil7dmFyIG8sYT0wLHM9eCh0aGlzKSxsPXQsdT1lLm1hdGNoKFQpfHxbXTt3 aGlsZShvPXVbYSsrXSlsPXI/bDohcy5oYXNDbGFzcyhvKSxzW2w/ImFkZENsYXNz IjoicmVtb3ZlQ2xhc3MiXShvKX1lbHNlKG49PT1pfHwiYm9vbGVhbiI9PT1uKSYm KHRoaXMuY2xhc3NOYW1lJiZ4Ll9kYXRhKHRoaXMsIl9fY2xhc3NOYW1lX18iLHRo aXMuY2xhc3NOYW1lKSx0aGlzLmNsYXNzTmFtZT10aGlzLmNsYXNzTmFtZXx8ZT09 PSExPyIiOnguX2RhdGEodGhpcywiX19jbGFzc05hbWVfXyIpfHwiIil9KX0saGFz Q2xhc3M6ZnVuY3Rpb24oZSl7dmFyIHQ9IiAiK2UrIiAiLG49MCxyPXRoaXMubGVu Z3RoO2Zvcig7cj5uO24rKylpZigxPT09dGhpc1tuXS5ub2RlVHlwZSYmKCIgIit0 aGlzW25dLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UoVSwiICIpLmluZGV4T2YodCk+ PTApcmV0dXJuITA7cmV0dXJuITF9LHZhbDpmdW5jdGlvbihlKXt2YXIgbixyLGks bz10aGlzWzBdO3tpZihhcmd1bWVudHMubGVuZ3RoKXJldHVybiBpPXguaXNGdW5j dGlvbihlKSx0aGlzLmVhY2goZnVuY3Rpb24obil7dmFyIG87MT09PXRoaXMubm9k ZVR5cGUmJihvPWk/ZS5jYWxsKHRoaXMsbix4KHRoaXMpLnZhbCgpKTplLG51bGw9 PW8/bz0iIjoibnVtYmVyIj09dHlwZW9mIG8/bys9IiI6eC5pc0FycmF5KG8pJiYo bz14Lm1hcChvLGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lPyIiOmUrIiJ9KSks cj14LnZhbEhvb2tzW3RoaXMudHlwZV18fHgudmFsSG9va3NbdGhpcy5ub2RlTmFt ZS50b0xvd2VyQ2FzZSgpXSxyJiYic2V0ImluIHImJnIuc2V0KHRoaXMsbywidmFs dWUiKSE9PXR8fCh0aGlzLnZhbHVlPW8pKX0pO2lmKG8pcmV0dXJuIHI9eC52YWxI b29rc1tvLnR5cGVdfHx4LnZhbEhvb2tzW28ubm9kZU5hbWUudG9Mb3dlckNhc2Uo KV0sciYmImdldCJpbiByJiYobj1yLmdldChvLCJ2YWx1ZSIpKSE9PXQ/bjoobj1v LnZhbHVlLCJzdHJpbmciPT10eXBlb2Ygbj9uLnJlcGxhY2UoViwiIik6bnVsbD09 bj8iIjpuKX19fSkseC5leHRlbmQoe3ZhbEhvb2tzOntvcHRpb246e2dldDpmdW5j dGlvbihlKXt2YXIgdD14LmZpbmQuYXR0cihlLCJ2YWx1ZSIpO3JldHVybiBudWxs IT10P3Q6ZS50ZXh0fX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQsbixy PWUub3B0aW9ucyxpPWUuc2VsZWN0ZWRJbmRleCxvPSJzZWxlY3Qtb25lIj09PWUu dHlwZXx8MD5pLGE9bz9udWxsOltdLHM9bz9pKzE6ci5sZW5ndGgsbD0wPmk/czpv P2k6MDtmb3IoO3M+bDtsKyspaWYobj1yW2xdLCEoIW4uc2VsZWN0ZWQmJmwhPT1p fHwoeC5zdXBwb3J0Lm9wdERpc2FibGVkP24uZGlzYWJsZWQ6bnVsbCE9PW4uZ2V0 QXR0cmlidXRlKCJkaXNhYmxlZCIpKXx8bi5wYXJlbnROb2RlLmRpc2FibGVkJiZ4 Lm5vZGVOYW1lKG4ucGFyZW50Tm9kZSwib3B0Z3JvdXAiKSkpe2lmKHQ9eChuKS52 YWwoKSxvKXJldHVybiB0O2EucHVzaCh0KX1yZXR1cm4gYX0sc2V0OmZ1bmN0aW9u KGUsdCl7dmFyIG4scixpPWUub3B0aW9ucyxvPXgubWFrZUFycmF5KHQpLGE9aS5s ZW5ndGg7d2hpbGUoYS0tKXI9aVthXSwoci5zZWxlY3RlZD14LmluQXJyYXkoeChy KS52YWwoKSxvKT49MCkmJihuPSEwKTtyZXR1cm4gbnx8KGUuc2VsZWN0ZWRJbmRl eD0tMSksb319fSxhdHRyOmZ1bmN0aW9uKGUsbixyKXt2YXIgbyxhLHM9ZS5ub2Rl VHlwZTtpZihlJiYzIT09cyYmOCE9PXMmJjIhPT1zKXJldHVybiB0eXBlb2YgZS5n ZXRBdHRyaWJ1dGU9PT1pP3gucHJvcChlLG4scik6KDE9PT1zJiZ4LmlzWE1MRG9j KGUpfHwobj1uLnRvTG93ZXJDYXNlKCksbz14LmF0dHJIb29rc1tuXXx8KHguZXhw ci5tYXRjaC5ib29sLnRlc3Qobik/WDp6KSkscj09PXQ/byYmImdldCJpbiBvJiZu dWxsIT09KGE9by5nZXQoZSxuKSk/YTooYT14LmZpbmQuYXR0cihlLG4pLG51bGw9 PWE/dDphKTpudWxsIT09cj9vJiYic2V0ImluIG8mJihhPW8uc2V0KGUscixuKSkh PT10P2E6KGUuc2V0QXR0cmlidXRlKG4scisiIikscik6KHgucmVtb3ZlQXR0cihl LG4pLHQpKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihlLHQpe3ZhciBuLHIsaT0wLG89 dCYmdC5tYXRjaChUKTtpZihvJiYxPT09ZS5ub2RlVHlwZSl3aGlsZShuPW9baSsr XSlyPXgucHJvcEZpeFtuXXx8bix4LmV4cHIubWF0Y2guYm9vbC50ZXN0KG4pP0sm JlF8fCFHLnRlc3Qobik/ZVtyXT0hMTplW3guY2FtZWxDYXNlKCJkZWZhdWx0LSIr bildPWVbcl09ITE6eC5hdHRyKGUsbiwiIiksZS5yZW1vdmVBdHRyaWJ1dGUoUT9u OnIpfSxhdHRySG9va3M6e3R5cGU6e3NldDpmdW5jdGlvbihlLHQpe2lmKCF4LnN1 cHBvcnQucmFkaW9WYWx1ZSYmInJhZGlvIj09PXQmJngubm9kZU5hbWUoZSwiaW5w dXQiKSl7dmFyIG49ZS52YWx1ZTtyZXR1cm4gZS5zZXRBdHRyaWJ1dGUoInR5cGUi LHQpLG4mJihlLnZhbHVlPW4pLHR9fX19LHByb3BGaXg6eyJmb3IiOiJodG1sRm9y IiwiY2xhc3MiOiJjbGFzc05hbWUifSxwcm9wOmZ1bmN0aW9uKGUsbixyKXt2YXIg aSxvLGEscz1lLm5vZGVUeXBlO2lmKGUmJjMhPT1zJiY4IT09cyYmMiE9PXMpcmV0 dXJuIGE9MSE9PXN8fCF4LmlzWE1MRG9jKGUpLGEmJihuPXgucHJvcEZpeFtuXXx8 bixvPXgucHJvcEhvb2tzW25dKSxyIT09dD9vJiYic2V0ImluIG8mJihpPW8uc2V0 KGUscixuKSkhPT10P2k6ZVtuXT1yOm8mJiJnZXQiaW4gbyYmbnVsbCE9PShpPW8u Z2V0KGUsbikpP2k6ZVtuXX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0 aW9uKGUpe3ZhciB0PXguZmluZC5hdHRyKGUsInRhYmluZGV4Iik7cmV0dXJuIHQ/ cGFyc2VJbnQodCwxMCk6WS50ZXN0KGUubm9kZU5hbWUpfHxKLnRlc3QoZS5ub2Rl TmFtZSkmJmUuaHJlZj8wOi0xfX19fSksWD17c2V0OmZ1bmN0aW9uKGUsdCxuKXty ZXR1cm4gdD09PSExP3gucmVtb3ZlQXR0cihlLG4pOksmJlF8fCFHLnRlc3Qobik/ ZS5zZXRBdHRyaWJ1dGUoIVEmJngucHJvcEZpeFtuXXx8bixuKTplW3guY2FtZWxD YXNlKCJkZWZhdWx0LSIrbildPWVbbl09ITAsbn19LHguZWFjaCh4LmV4cHIubWF0 Y2guYm9vbC5zb3VyY2UubWF0Y2goL1x3Ky9nKSxmdW5jdGlvbihlLG4pe3ZhciBy PXguZXhwci5hdHRySGFuZGxlW25dfHx4LmZpbmQuYXR0cjt4LmV4cHIuYXR0ckhh bmRsZVtuXT1LJiZRfHwhRy50ZXN0KG4pP2Z1bmN0aW9uKGUsbixpKXt2YXIgbz14 LmV4cHIuYXR0ckhhbmRsZVtuXSxhPWk/dDooeC5leHByLmF0dHJIYW5kbGVbbl09 dCkhPXIoZSxuLGkpP24udG9Mb3dlckNhc2UoKTpudWxsO3JldHVybiB4LmV4cHIu YXR0ckhhbmRsZVtuXT1vLGF9OmZ1bmN0aW9uKGUsbixyKXtyZXR1cm4gcj90OmVb eC5jYW1lbENhc2UoImRlZmF1bHQtIituKV0/bi50b0xvd2VyQ2FzZSgpOm51bGx9 fSksSyYmUXx8KHguYXR0ckhvb2tzLnZhbHVlPXtzZXQ6ZnVuY3Rpb24oZSxuLHIp e3JldHVybiB4Lm5vZGVOYW1lKGUsImlucHV0Iik/KGUuZGVmYXVsdFZhbHVlPW4s dCk6eiYmei5zZXQoZSxuLHIpfX0pLFF8fCh6PXtzZXQ6ZnVuY3Rpb24oZSxuLHIp e3ZhciBpPWUuZ2V0QXR0cmlidXRlTm9kZShyKTtyZXR1cm4gaXx8ZS5zZXRBdHRy aWJ1dGVOb2RlKGk9ZS5vd25lckRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZShyKSks aS52YWx1ZT1uKz0iIiwidmFsdWUiPT09cnx8bj09PWUuZ2V0QXR0cmlidXRlKHIp P246dH19LHguZXhwci5hdHRySGFuZGxlLmlkPXguZXhwci5hdHRySGFuZGxlLm5h bWU9eC5leHByLmF0dHJIYW5kbGUuY29vcmRzPWZ1bmN0aW9uKGUsbixyKXt2YXIg aTtyZXR1cm4gcj90OihpPWUuZ2V0QXR0cmlidXRlTm9kZShuKSkmJiIiIT09aS52 YWx1ZT9pLnZhbHVlOm51bGx9LHgudmFsSG9va3MuYnV0dG9uPXtnZXQ6ZnVuY3Rp b24oZSxuKXt2YXIgcj1lLmdldEF0dHJpYnV0ZU5vZGUobik7cmV0dXJuIHImJnIu c3BlY2lmaWVkP3IudmFsdWU6dH0sc2V0Onouc2V0fSx4LmF0dHJIb29rcy5jb250 ZW50ZWRpdGFibGU9e3NldDpmdW5jdGlvbihlLHQsbil7ei5zZXQoZSwiIj09PXQ/ ITE6dCxuKX19LHguZWFjaChbIndpZHRoIiwiaGVpZ2h0Il0sZnVuY3Rpb24oZSxu KXt4LmF0dHJIb29rc1tuXT17c2V0OmZ1bmN0aW9uKGUscil7cmV0dXJuIiI9PT1y PyhlLnNldEF0dHJpYnV0ZShuLCJhdXRvIikscik6dH19fSkpLHguc3VwcG9ydC5o cmVmTm9ybWFsaXplZHx8eC5lYWNoKFsiaHJlZiIsInNyYyJdLGZ1bmN0aW9uKGUs dCl7eC5wcm9wSG9va3NbdF09e2dldDpmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRB dHRyaWJ1dGUodCw0KX19fSkseC5zdXBwb3J0LnN0eWxlfHwoeC5hdHRySG9va3Mu c3R5bGU9e2dldDpmdW5jdGlvbihlKXtyZXR1cm4gZS5zdHlsZS5jc3NUZXh0fHx0 fSxzZXQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5zdHlsZS5jc3NUZXh0PXQrIiJ9 fSkseC5zdXBwb3J0Lm9wdFNlbGVjdGVkfHwoeC5wcm9wSG9va3Muc2VsZWN0ZWQ9 e2dldDpmdW5jdGlvbihlKXt2YXIgdD1lLnBhcmVudE5vZGU7cmV0dXJuIHQmJih0 LnNlbGVjdGVkSW5kZXgsdC5wYXJlbnROb2RlJiZ0LnBhcmVudE5vZGUuc2VsZWN0 ZWRJbmRleCksbnVsbH19KSx4LmVhY2goWyJ0YWJJbmRleCIsInJlYWRPbmx5Iiwi bWF4TGVuZ3RoIiwiY2VsbFNwYWNpbmciLCJjZWxsUGFkZGluZyIsInJvd1NwYW4i LCJjb2xTcGFuIiwidXNlTWFwIiwiZnJhbWVCb3JkZXIiLCJjb250ZW50RWRpdGFi bGUiXSxmdW5jdGlvbigpe3gucHJvcEZpeFt0aGlzLnRvTG93ZXJDYXNlKCldPXRo aXN9KSx4LnN1cHBvcnQuZW5jdHlwZXx8KHgucHJvcEZpeC5lbmN0eXBlPSJlbmNv ZGluZyIpLHguZWFjaChbInJhZGlvIiwiY2hlY2tib3giXSxmdW5jdGlvbigpe3gu dmFsSG9va3NbdGhpc109e3NldDpmdW5jdGlvbihlLG4pe3JldHVybiB4LmlzQXJy YXkobik/ZS5jaGVja2VkPXguaW5BcnJheSh4KGUpLnZhbCgpLG4pPj0wOnR9fSx4 LnN1cHBvcnQuY2hlY2tPbnx8KHgudmFsSG9va3NbdGhpc10uZ2V0PWZ1bmN0aW9u KGUpe3JldHVybiBudWxsPT09ZS5nZXRBdHRyaWJ1dGUoInZhbHVlIik/Im9uIjpl LnZhbHVlfSl9KTt2YXIgWj0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYSkkL2ks ZXQ9L15rZXkvLHR0PS9eKD86bW91c2V8Y29udGV4dG1lbnUpfGNsaWNrLyxudD0v Xig/OmZvY3VzaW5mb2N1c3xmb2N1c291dGJsdXIpJC8scnQ9L14oW14uXSopKD86 XC4oLispfCkkLztmdW5jdGlvbiBpdCgpe3JldHVybiEwfWZ1bmN0aW9uIG90KCl7 cmV0dXJuITF9ZnVuY3Rpb24gYXQoKXt0cnl7cmV0dXJuIGEuYWN0aXZlRWxlbWVu dH1jYXRjaChlKXt9fXguZXZlbnQ9e2dsb2JhbDp7fSxhZGQ6ZnVuY3Rpb24oZSxu LHIsbyxhKXt2YXIgcyxsLHUsYyxwLGYsZCxoLGcsbSx5LHY9eC5fZGF0YShlKTtp Zih2KXtyLmhhbmRsZXImJihjPXIscj1jLmhhbmRsZXIsYT1jLnNlbGVjdG9yKSxy Lmd1aWR8fChyLmd1aWQ9eC5ndWlkKyspLChsPXYuZXZlbnRzKXx8KGw9di5ldmVu dHM9e30pLChmPXYuaGFuZGxlKXx8KGY9di5oYW5kbGU9ZnVuY3Rpb24oZSl7cmV0 dXJuIHR5cGVvZiB4PT09aXx8ZSYmeC5ldmVudC50cmlnZ2VyZWQ9PT1lLnR5cGU/ dDp4LmV2ZW50LmRpc3BhdGNoLmFwcGx5KGYuZWxlbSxhcmd1bWVudHMpfSxmLmVs ZW09ZSksbj0obnx8IiIpLm1hdGNoKFQpfHxbIiJdLHU9bi5sZW5ndGg7d2hpbGUo dS0tKXM9cnQuZXhlYyhuW3VdKXx8W10sZz15PXNbMV0sbT0oc1syXXx8IiIpLnNw bGl0KCIuIikuc29ydCgpLGcmJihwPXguZXZlbnQuc3BlY2lhbFtnXXx8e30sZz0o YT9wLmRlbGVnYXRlVHlwZTpwLmJpbmRUeXBlKXx8ZyxwPXguZXZlbnQuc3BlY2lh bFtnXXx8e30sZD14LmV4dGVuZCh7dHlwZTpnLG9yaWdUeXBlOnksZGF0YTpvLGhh bmRsZXI6cixndWlkOnIuZ3VpZCxzZWxlY3RvcjphLG5lZWRzQ29udGV4dDphJiZ4 LmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LnRlc3QoYSksbmFtZXNwYWNlOm0uam9p bigiLiIpfSxjKSwoaD1sW2ddKXx8KGg9bFtnXT1bXSxoLmRlbGVnYXRlQ291bnQ9 MCxwLnNldHVwJiZwLnNldHVwLmNhbGwoZSxvLG0sZikhPT0hMXx8KGUuYWRkRXZl bnRMaXN0ZW5lcj9lLmFkZEV2ZW50TGlzdGVuZXIoZyxmLCExKTplLmF0dGFjaEV2 ZW50JiZlLmF0dGFjaEV2ZW50KCJvbiIrZyxmKSkpLHAuYWRkJiYocC5hZGQuY2Fs bChlLGQpLGQuaGFuZGxlci5ndWlkfHwoZC5oYW5kbGVyLmd1aWQ9ci5ndWlkKSks YT9oLnNwbGljZShoLmRlbGVnYXRlQ291bnQrKywwLGQpOmgucHVzaChkKSx4LmV2 ZW50Lmdsb2JhbFtnXT0hMCk7ZT1udWxsfX0scmVtb3ZlOmZ1bmN0aW9uKGUsdCxu LHIsaSl7dmFyIG8sYSxzLGwsdSxjLHAsZixkLGgsZyxtPXguaGFzRGF0YShlKSYm eC5fZGF0YShlKTtpZihtJiYoYz1tLmV2ZW50cykpe3Q9KHR8fCIiKS5tYXRjaChU KXx8WyIiXSx1PXQubGVuZ3RoO3doaWxlKHUtLSlpZihzPXJ0LmV4ZWModFt1XSl8 fFtdLGQ9Zz1zWzFdLGg9KHNbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxkKXtw PXguZXZlbnQuc3BlY2lhbFtkXXx8e30sZD0ocj9wLmRlbGVnYXRlVHlwZTpwLmJp bmRUeXBlKXx8ZCxmPWNbZF18fFtdLHM9c1syXSYmUmVnRXhwKCIoXnxcXC4pIito LmpvaW4oIlxcLig/Oi4qXFwufCkiKSsiKFxcLnwkKSIpLGw9bz1mLmxlbmd0aDt3 aGlsZShvLS0pYT1mW29dLCFpJiZnIT09YS5vcmlnVHlwZXx8biYmbi5ndWlkIT09 YS5ndWlkfHxzJiYhcy50ZXN0KGEubmFtZXNwYWNlKXx8ciYmciE9PWEuc2VsZWN0 b3ImJigiKioiIT09cnx8IWEuc2VsZWN0b3IpfHwoZi5zcGxpY2UobywxKSxhLnNl bGVjdG9yJiZmLmRlbGVnYXRlQ291bnQtLSxwLnJlbW92ZSYmcC5yZW1vdmUuY2Fs bChlLGEpKTtsJiYhZi5sZW5ndGgmJihwLnRlYXJkb3duJiZwLnRlYXJkb3duLmNh bGwoZSxoLG0uaGFuZGxlKSE9PSExfHx4LnJlbW92ZUV2ZW50KGUsZCxtLmhhbmRs ZSksZGVsZXRlIGNbZF0pfWVsc2UgZm9yKGQgaW4gYyl4LmV2ZW50LnJlbW92ZShl LGQrdFt1XSxuLHIsITApO3guaXNFbXB0eU9iamVjdChjKSYmKGRlbGV0ZSBtLmhh bmRsZSx4Ll9yZW1vdmVEYXRhKGUsImV2ZW50cyIpKX19LHRyaWdnZXI6ZnVuY3Rp b24obixyLGksbyl7dmFyIHMsbCx1LGMscCxmLGQsaD1baXx8YV0sZz12LmNhbGwo biwidHlwZSIpP24udHlwZTpuLG09di5jYWxsKG4sIm5hbWVzcGFjZSIpP24ubmFt ZXNwYWNlLnNwbGl0KCIuIik6W107aWYodT1mPWk9aXx8YSwzIT09aS5ub2RlVHlw ZSYmOCE9PWkubm9kZVR5cGUmJiFudC50ZXN0KGcreC5ldmVudC50cmlnZ2VyZWQp JiYoZy5pbmRleE9mKCIuIik+PTAmJihtPWcuc3BsaXQoIi4iKSxnPW0uc2hpZnQo KSxtLnNvcnQoKSksbD0wPmcuaW5kZXhPZigiOiIpJiYib24iK2csbj1uW3guZXhw YW5kb10/bjpuZXcgeC5FdmVudChnLCJvYmplY3QiPT10eXBlb2YgbiYmbiksbi5p c1RyaWdnZXI9bz8yOjMsbi5uYW1lc3BhY2U9bS5qb2luKCIuIiksbi5uYW1lc3Bh Y2VfcmU9bi5uYW1lc3BhY2U/UmVnRXhwKCIoXnxcXC4pIittLmpvaW4oIlxcLig/ Oi4qXFwufCkiKSsiKFxcLnwkKSIpOm51bGwsbi5yZXN1bHQ9dCxuLnRhcmdldHx8 KG4udGFyZ2V0PWkpLHI9bnVsbD09cj9bbl06eC5tYWtlQXJyYXkocixbbl0pLHA9 eC5ldmVudC5zcGVjaWFsW2ddfHx7fSxvfHwhcC50cmlnZ2VyfHxwLnRyaWdnZXIu YXBwbHkoaSxyKSE9PSExKSl7aWYoIW8mJiFwLm5vQnViYmxlJiYheC5pc1dpbmRv dyhpKSl7Zm9yKGM9cC5kZWxlZ2F0ZVR5cGV8fGcsbnQudGVzdChjK2cpfHwodT11 LnBhcmVudE5vZGUpO3U7dT11LnBhcmVudE5vZGUpaC5wdXNoKHUpLGY9dTtmPT09 KGkub3duZXJEb2N1bWVudHx8YSkmJmgucHVzaChmLmRlZmF1bHRWaWV3fHxmLnBh cmVudFdpbmRvd3x8ZSl9ZD0wO3doaWxlKCh1PWhbZCsrXSkmJiFuLmlzUHJvcGFn YXRpb25TdG9wcGVkKCkpbi50eXBlPWQ+MT9jOnAuYmluZFR5cGV8fGcscz0oeC5f ZGF0YSh1LCJldmVudHMiKXx8e30pW24udHlwZV0mJnguX2RhdGEodSwiaGFuZGxl IikscyYmcy5hcHBseSh1LHIpLHM9bCYmdVtsXSxzJiZ4LmFjY2VwdERhdGEodSkm JnMuYXBwbHkmJnMuYXBwbHkodSxyKT09PSExJiZuLnByZXZlbnREZWZhdWx0KCk7 aWYobi50eXBlPWcsIW8mJiFuLmlzRGVmYXVsdFByZXZlbnRlZCgpJiYoIXAuX2Rl ZmF1bHR8fHAuX2RlZmF1bHQuYXBwbHkoaC5wb3AoKSxyKT09PSExKSYmeC5hY2Nl cHREYXRhKGkpJiZsJiZpW2ddJiYheC5pc1dpbmRvdyhpKSl7Zj1pW2xdLGYmJihp W2xdPW51bGwpLHguZXZlbnQudHJpZ2dlcmVkPWc7dHJ5e2lbZ10oKX1jYXRjaCh5 KXt9eC5ldmVudC50cmlnZ2VyZWQ9dCxmJiYoaVtsXT1mKX1yZXR1cm4gbi5yZXN1 bHR9fSxkaXNwYXRjaDpmdW5jdGlvbihlKXtlPXguZXZlbnQuZml4KGUpO3ZhciBu LHIsaSxvLGEscz1bXSxsPWcuY2FsbChhcmd1bWVudHMpLHU9KHguX2RhdGEodGhp cywiZXZlbnRzIil8fHt9KVtlLnR5cGVdfHxbXSxjPXguZXZlbnQuc3BlY2lhbFtl LnR5cGVdfHx7fTtpZihsWzBdPWUsZS5kZWxlZ2F0ZVRhcmdldD10aGlzLCFjLnBy ZURpc3BhdGNofHxjLnByZURpc3BhdGNoLmNhbGwodGhpcyxlKSE9PSExKXtzPXgu ZXZlbnQuaGFuZGxlcnMuY2FsbCh0aGlzLGUsdSksbj0wO3doaWxlKChvPXNbbisr XSkmJiFlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpe2UuY3VycmVudFRhcmdldD1v LmVsZW0sYT0wO3doaWxlKChpPW8uaGFuZGxlcnNbYSsrXSkmJiFlLmlzSW1tZWRp YXRlUHJvcGFnYXRpb25TdG9wcGVkKCkpKCFlLm5hbWVzcGFjZV9yZXx8ZS5uYW1l c3BhY2VfcmUudGVzdChpLm5hbWVzcGFjZSkpJiYoZS5oYW5kbGVPYmo9aSxlLmRh dGE9aS5kYXRhLHI9KCh4LmV2ZW50LnNwZWNpYWxbaS5vcmlnVHlwZV18fHt9KS5o YW5kbGV8fGkuaGFuZGxlcikuYXBwbHkoby5lbGVtLGwpLHIhPT10JiYoZS5yZXN1 bHQ9cik9PT0hMSYmKGUucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlv bigpKSl9cmV0dXJuIGMucG9zdERpc3BhdGNoJiZjLnBvc3REaXNwYXRjaC5jYWxs KHRoaXMsZSksZS5yZXN1bHR9fSxoYW5kbGVyczpmdW5jdGlvbihlLG4pe3ZhciBy LGksbyxhLHM9W10sbD1uLmRlbGVnYXRlQ291bnQsdT1lLnRhcmdldDtpZihsJiZ1 Lm5vZGVUeXBlJiYoIWUuYnV0dG9ufHwiY2xpY2siIT09ZS50eXBlKSlmb3IoO3Uh PXRoaXM7dT11LnBhcmVudE5vZGV8fHRoaXMpaWYoMT09PXUubm9kZVR5cGUmJih1 LmRpc2FibGVkIT09ITB8fCJjbGljayIhPT1lLnR5cGUpKXtmb3Iobz1bXSxhPTA7 bD5hO2ErKylpPW5bYV0scj1pLnNlbGVjdG9yKyIgIixvW3JdPT09dCYmKG9bcl09 aS5uZWVkc0NvbnRleHQ/eChyLHRoaXMpLmluZGV4KHUpPj0wOnguZmluZChyLHRo aXMsbnVsbCxbdV0pLmxlbmd0aCksb1tyXSYmby5wdXNoKGkpO28ubGVuZ3RoJiZz LnB1c2goe2VsZW06dSxoYW5kbGVyczpvfSl9cmV0dXJuIG4ubGVuZ3RoPmwmJnMu cHVzaCh7ZWxlbTp0aGlzLGhhbmRsZXJzOm4uc2xpY2UobCl9KSxzfSxmaXg6ZnVu Y3Rpb24oZSl7aWYoZVt4LmV4cGFuZG9dKXJldHVybiBlO3ZhciB0LG4scixpPWUu dHlwZSxvPWUscz10aGlzLmZpeEhvb2tzW2ldO3N8fCh0aGlzLmZpeEhvb2tzW2ld PXM9dHQudGVzdChpKT90aGlzLm1vdXNlSG9va3M6ZXQudGVzdChpKT90aGlzLmtl eUhvb2tzOnt9KSxyPXMucHJvcHM/dGhpcy5wcm9wcy5jb25jYXQocy5wcm9wcyk6 dGhpcy5wcm9wcyxlPW5ldyB4LkV2ZW50KG8pLHQ9ci5sZW5ndGg7d2hpbGUodC0t KW49clt0XSxlW25dPW9bbl07cmV0dXJuIGUudGFyZ2V0fHwoZS50YXJnZXQ9by5z cmNFbGVtZW50fHxhKSwzPT09ZS50YXJnZXQubm9kZVR5cGUmJihlLnRhcmdldD1l LnRhcmdldC5wYXJlbnROb2RlKSxlLm1ldGFLZXk9ISFlLm1ldGFLZXkscy5maWx0 ZXI/cy5maWx0ZXIoZSxvKTplfSxwcm9wczoiYWx0S2V5IGJ1YmJsZXMgY2FuY2Vs YWJsZSBjdHJsS2V5IGN1cnJlbnRUYXJnZXQgZXZlbnRQaGFzZSBtZXRhS2V5IHJl bGF0ZWRUYXJnZXQgc2hpZnRLZXkgdGFyZ2V0IHRpbWVTdGFtcCB2aWV3IHdoaWNo Ii5zcGxpdCgiICIpLGZpeEhvb2tzOnt9LGtleUhvb2tzOntwcm9wczoiY2hhciBj aGFyQ29kZSBrZXkga2V5Q29kZSIuc3BsaXQoIiAiKSxmaWx0ZXI6ZnVuY3Rpb24o ZSx0KXtyZXR1cm4gbnVsbD09ZS53aGljaCYmKGUud2hpY2g9bnVsbCE9dC5jaGFy Q29kZT90LmNoYXJDb2RlOnQua2V5Q29kZSksZX19LG1vdXNlSG9va3M6e3Byb3Bz OiJidXR0b24gYnV0dG9ucyBjbGllbnRYIGNsaWVudFkgZnJvbUVsZW1lbnQgb2Zm c2V0WCBvZmZzZXRZIHBhZ2VYIHBhZ2VZIHNjcmVlblggc2NyZWVuWSB0b0VsZW1l bnQiLnNwbGl0KCIgIiksZmlsdGVyOmZ1bmN0aW9uKGUsbil7dmFyIHIsaSxvLHM9 bi5idXR0b24sbD1uLmZyb21FbGVtZW50O3JldHVybiBudWxsPT1lLnBhZ2VYJiZu dWxsIT1uLmNsaWVudFgmJihpPWUudGFyZ2V0Lm93bmVyRG9jdW1lbnR8fGEsbz1p LmRvY3VtZW50RWxlbWVudCxyPWkuYm9keSxlLnBhZ2VYPW4uY2xpZW50WCsobyYm by5zY3JvbGxMZWZ0fHxyJiZyLnNjcm9sbExlZnR8fDApLShvJiZvLmNsaWVudExl ZnR8fHImJnIuY2xpZW50TGVmdHx8MCksZS5wYWdlWT1uLmNsaWVudFkrKG8mJm8u c2Nyb2xsVG9wfHxyJiZyLnNjcm9sbFRvcHx8MCktKG8mJm8uY2xpZW50VG9wfHxy JiZyLmNsaWVudFRvcHx8MCkpLCFlLnJlbGF0ZWRUYXJnZXQmJmwmJihlLnJlbGF0 ZWRUYXJnZXQ9bD09PWUudGFyZ2V0P24udG9FbGVtZW50OmwpLGUud2hpY2h8fHM9 PT10fHwoZS53aGljaD0xJnM/MToyJnM/Mzo0JnM/MjowKSxlfX0sc3BlY2lhbDp7 bG9hZDp7bm9CdWJibGU6ITB9LGZvY3VzOnt0cmlnZ2VyOmZ1bmN0aW9uKCl7aWYo dGhpcyE9PWF0KCkmJnRoaXMuZm9jdXMpdHJ5e3JldHVybiB0aGlzLmZvY3VzKCks ITF9Y2F0Y2goZSl7fX0sZGVsZWdhdGVUeXBlOiJmb2N1c2luIn0sYmx1cjp7dHJp Z2dlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzPT09YXQoKSYmdGhpcy5ibHVyPyh0 aGlzLmJsdXIoKSwhMSk6dH0sZGVsZWdhdGVUeXBlOiJmb2N1c291dCJ9LGNsaWNr Ont0cmlnZ2VyOmZ1bmN0aW9uKCl7cmV0dXJuIHgubm9kZU5hbWUodGhpcywiaW5w dXQiKSYmImNoZWNrYm94Ij09PXRoaXMudHlwZSYmdGhpcy5jbGljaz8odGhpcy5j bGljaygpLCExKTp0fSxfZGVmYXVsdDpmdW5jdGlvbihlKXtyZXR1cm4geC5ub2Rl TmFtZShlLnRhcmdldCwiYSIpfX0sYmVmb3JldW5sb2FkOntwb3N0RGlzcGF0Y2g6 ZnVuY3Rpb24oZSl7ZS5yZXN1bHQhPT10JiYoZS5vcmlnaW5hbEV2ZW50LnJldHVy blZhbHVlPWUucmVzdWx0KX19fSxzaW11bGF0ZTpmdW5jdGlvbihlLHQsbixyKXt2 YXIgaT14LmV4dGVuZChuZXcgeC5FdmVudCxuLHt0eXBlOmUsaXNTaW11bGF0ZWQ6 ITAsb3JpZ2luYWxFdmVudDp7fX0pO3I/eC5ldmVudC50cmlnZ2VyKGksbnVsbCx0 KTp4LmV2ZW50LmRpc3BhdGNoLmNhbGwodCxpKSxpLmlzRGVmYXVsdFByZXZlbnRl ZCgpJiZuLnByZXZlbnREZWZhdWx0KCl9fSx4LnJlbW92ZUV2ZW50PWEucmVtb3Zl RXZlbnRMaXN0ZW5lcj9mdW5jdGlvbihlLHQsbil7ZS5yZW1vdmVFdmVudExpc3Rl bmVyJiZlLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxuLCExKX06ZnVuY3Rpb24oZSx0 LG4pe3ZhciByPSJvbiIrdDtlLmRldGFjaEV2ZW50JiYodHlwZW9mIGVbcl09PT1p JiYoZVtyXT1udWxsKSxlLmRldGFjaEV2ZW50KHIsbikpfSx4LkV2ZW50PWZ1bmN0 aW9uKGUsbil7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiB4LkV2ZW50PyhlJiZlLnR5 cGU/KHRoaXMub3JpZ2luYWxFdmVudD1lLHRoaXMudHlwZT1lLnR5cGUsdGhpcy5p c0RlZmF1bHRQcmV2ZW50ZWQ9ZS5kZWZhdWx0UHJldmVudGVkfHxlLnJldHVyblZh bHVlPT09ITF8fGUuZ2V0UHJldmVudERlZmF1bHQmJmUuZ2V0UHJldmVudERlZmF1 bHQoKT9pdDpvdCk6dGhpcy50eXBlPWUsbiYmeC5leHRlbmQodGhpcyxuKSx0aGlz LnRpbWVTdGFtcD1lJiZlLnRpbWVTdGFtcHx8eC5ub3coKSx0aGlzW3guZXhwYW5k b109ITAsdCk6bmV3IHguRXZlbnQoZSxuKX0seC5FdmVudC5wcm90b3R5cGU9e2lz RGVmYXVsdFByZXZlbnRlZDpvdCxpc1Byb3BhZ2F0aW9uU3RvcHBlZDpvdCxpc0lt bWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDpvdCxwcmV2ZW50RGVmYXVsdDpmdW5j dGlvbigpe3ZhciBlPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzRGVmYXVsdFBy ZXZlbnRlZD1pdCxlJiYoZS5wcmV2ZW50RGVmYXVsdD9lLnByZXZlbnREZWZhdWx0 KCk6ZS5yZXR1cm5WYWx1ZT0hMSl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigp e3ZhciBlPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzUHJvcGFnYXRpb25TdG9w cGVkPWl0LGUmJihlLnN0b3BQcm9wYWdhdGlvbiYmZS5zdG9wUHJvcGFnYXRpb24o KSxlLmNhbmNlbEJ1YmJsZT0hMCl9LHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjpm dW5jdGlvbigpe3RoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9aXQs dGhpcy5zdG9wUHJvcGFnYXRpb24oKX19LHguZWFjaCh7bW91c2VlbnRlcjoibW91 c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9LGZ1bmN0aW9uKGUsdCl7eC5l dmVudC5zcGVjaWFsW2VdPXtkZWxlZ2F0ZVR5cGU6dCxiaW5kVHlwZTp0LGhhbmRs ZTpmdW5jdGlvbihlKXt2YXIgbixyPXRoaXMsaT1lLnJlbGF0ZWRUYXJnZXQsbz1l LmhhbmRsZU9iajtyZXR1cm4oIWl8fGkhPT1yJiYheC5jb250YWlucyhyLGkpKSYm KGUudHlwZT1vLm9yaWdUeXBlLG49by5oYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1l bnRzKSxlLnR5cGU9dCksbn19fSkseC5zdXBwb3J0LnN1Ym1pdEJ1YmJsZXN8fCh4 LmV2ZW50LnNwZWNpYWwuc3VibWl0PXtzZXR1cDpmdW5jdGlvbigpe3JldHVybiB4 Lm5vZGVOYW1lKHRoaXMsImZvcm0iKT8hMTooeC5ldmVudC5hZGQodGhpcywiY2xp Y2suX3N1Ym1pdCBrZXlwcmVzcy5fc3VibWl0IixmdW5jdGlvbihlKXt2YXIgbj1l LnRhcmdldCxyPXgubm9kZU5hbWUobiwiaW5wdXQiKXx8eC5ub2RlTmFtZShuLCJi dXR0b24iKT9uLmZvcm06dDtyJiYheC5fZGF0YShyLCJzdWJtaXRCdWJibGVzIikm Jih4LmV2ZW50LmFkZChyLCJzdWJtaXQuX3N1Ym1pdCIsZnVuY3Rpb24oZSl7ZS5f c3VibWl0X2J1YmJsZT0hMH0pLHguX2RhdGEociwic3VibWl0QnViYmxlcyIsITAp KX0pLHQpfSxwb3N0RGlzcGF0Y2g6ZnVuY3Rpb24oZSl7ZS5fc3VibWl0X2J1YmJs ZSYmKGRlbGV0ZSBlLl9zdWJtaXRfYnViYmxlLHRoaXMucGFyZW50Tm9kZSYmIWUu aXNUcmlnZ2VyJiZ4LmV2ZW50LnNpbXVsYXRlKCJzdWJtaXQiLHRoaXMucGFyZW50 Tm9kZSxlLCEwKSl9LHRlYXJkb3duOmZ1bmN0aW9uKCl7cmV0dXJuIHgubm9kZU5h bWUodGhpcywiZm9ybSIpPyExOih4LmV2ZW50LnJlbW92ZSh0aGlzLCIuX3N1Ym1p dCIpLHQpfX0pLHguc3VwcG9ydC5jaGFuZ2VCdWJibGVzfHwoeC5ldmVudC5zcGVj aWFsLmNoYW5nZT17c2V0dXA6ZnVuY3Rpb24oKXtyZXR1cm4gWi50ZXN0KHRoaXMu bm9kZU5hbWUpPygoImNoZWNrYm94Ij09PXRoaXMudHlwZXx8InJhZGlvIj09PXRo aXMudHlwZSkmJih4LmV2ZW50LmFkZCh0aGlzLCJwcm9wZXJ0eWNoYW5nZS5fY2hh bmdlIixmdW5jdGlvbihlKXsiY2hlY2tlZCI9PT1lLm9yaWdpbmFsRXZlbnQucHJv cGVydHlOYW1lJiYodGhpcy5fanVzdF9jaGFuZ2VkPSEwKX0pLHguZXZlbnQuYWRk KHRoaXMsImNsaWNrLl9jaGFuZ2UiLGZ1bmN0aW9uKGUpe3RoaXMuX2p1c3RfY2hh bmdlZCYmIWUuaXNUcmlnZ2VyJiYodGhpcy5fanVzdF9jaGFuZ2VkPSExKSx4LmV2 ZW50LnNpbXVsYXRlKCJjaGFuZ2UiLHRoaXMsZSwhMCl9KSksITEpOih4LmV2ZW50 LmFkZCh0aGlzLCJiZWZvcmVhY3RpdmF0ZS5fY2hhbmdlIixmdW5jdGlvbihlKXt2 YXIgdD1lLnRhcmdldDtaLnRlc3QodC5ub2RlTmFtZSkmJiF4Ll9kYXRhKHQsImNo YW5nZUJ1YmJsZXMiKSYmKHguZXZlbnQuYWRkKHQsImNoYW5nZS5fY2hhbmdlIixm dW5jdGlvbihlKXshdGhpcy5wYXJlbnROb2RlfHxlLmlzU2ltdWxhdGVkfHxlLmlz VHJpZ2dlcnx8eC5ldmVudC5zaW11bGF0ZSgiY2hhbmdlIix0aGlzLnBhcmVudE5v ZGUsZSwhMCl9KSx4Ll9kYXRhKHQsImNoYW5nZUJ1YmJsZXMiLCEwKSl9KSx0KX0s aGFuZGxlOmZ1bmN0aW9uKGUpe3ZhciBuPWUudGFyZ2V0O3JldHVybiB0aGlzIT09 bnx8ZS5pc1NpbXVsYXRlZHx8ZS5pc1RyaWdnZXJ8fCJyYWRpbyIhPT1uLnR5cGUm JiJjaGVja2JveCIhPT1uLnR5cGU/ZS5oYW5kbGVPYmouaGFuZGxlci5hcHBseSh0 aGlzLGFyZ3VtZW50cyk6dH0sdGVhcmRvd246ZnVuY3Rpb24oKXtyZXR1cm4geC5l dmVudC5yZW1vdmUodGhpcywiLl9jaGFuZ2UiKSwhWi50ZXN0KHRoaXMubm9kZU5h bWUpfX0pLHguc3VwcG9ydC5mb2N1c2luQnViYmxlc3x8eC5lYWNoKHtmb2N1czoi Zm9jdXNpbiIsYmx1cjoiZm9jdXNvdXQifSxmdW5jdGlvbihlLHQpe3ZhciBuPTAs cj1mdW5jdGlvbihlKXt4LmV2ZW50LnNpbXVsYXRlKHQsZS50YXJnZXQseC5ldmVu dC5maXgoZSksITApfTt4LmV2ZW50LnNwZWNpYWxbdF09e3NldHVwOmZ1bmN0aW9u KCl7MD09PW4rKyYmYS5hZGRFdmVudExpc3RlbmVyKGUsciwhMCl9LHRlYXJkb3du OmZ1bmN0aW9uKCl7MD09PS0tbiYmYS5yZW1vdmVFdmVudExpc3RlbmVyKGUsciwh MCl9fX0pLHguZm4uZXh0ZW5kKHtvbjpmdW5jdGlvbihlLG4scixpLG8pe3ZhciBh LHM7aWYoIm9iamVjdCI9PXR5cGVvZiBlKXsic3RyaW5nIiE9dHlwZW9mIG4mJihy PXJ8fG4sbj10KTtmb3IoYSBpbiBlKXRoaXMub24oYSxuLHIsZVthXSxvKTtyZXR1 cm4gdGhpc31pZihudWxsPT1yJiZudWxsPT1pPyhpPW4scj1uPXQpOm51bGw9PWkm Jigic3RyaW5nIj09dHlwZW9mIG4/KGk9cixyPXQpOihpPXIscj1uLG49dCkpLGk9 PT0hMSlpPW90O2Vsc2UgaWYoIWkpcmV0dXJuIHRoaXM7cmV0dXJuIDE9PT1vJiYo cz1pLGk9ZnVuY3Rpb24oZSl7cmV0dXJuIHgoKS5vZmYoZSkscy5hcHBseSh0aGlz LGFyZ3VtZW50cyl9LGkuZ3VpZD1zLmd1aWR8fChzLmd1aWQ9eC5ndWlkKyspKSx0 aGlzLmVhY2goZnVuY3Rpb24oKXt4LmV2ZW50LmFkZCh0aGlzLGUsaSxyLG4pfSl9 LG9uZTpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gdGhpcy5vbihlLHQsbixyLDEp fSxvZmY6ZnVuY3Rpb24oZSxuLHIpe3ZhciBpLG87aWYoZSYmZS5wcmV2ZW50RGVm YXVsdCYmZS5oYW5kbGVPYmopcmV0dXJuIGk9ZS5oYW5kbGVPYmoseChlLmRlbGVn YXRlVGFyZ2V0KS5vZmYoaS5uYW1lc3BhY2U/aS5vcmlnVHlwZSsiLiIraS5uYW1l c3BhY2U6aS5vcmlnVHlwZSxpLnNlbGVjdG9yLGkuaGFuZGxlciksdGhpcztpZigi b2JqZWN0Ij09dHlwZW9mIGUpe2ZvcihvIGluIGUpdGhpcy5vZmYobyxuLGVbb10p O3JldHVybiB0aGlzfXJldHVybihuPT09ITF8fCJmdW5jdGlvbiI9PXR5cGVvZiBu KSYmKHI9bixuPXQpLHI9PT0hMSYmKHI9b3QpLHRoaXMuZWFjaChmdW5jdGlvbigp e3guZXZlbnQucmVtb3ZlKHRoaXMsZSxyLG4pfSl9LHRyaWdnZXI6ZnVuY3Rpb24o ZSx0KXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7eC5ldmVudC50cmlnZ2Vy KGUsdCx0aGlzKX0pfSx0cmlnZ2VySGFuZGxlcjpmdW5jdGlvbihlLG4pe3ZhciBy PXRoaXNbMF07cmV0dXJuIHI/eC5ldmVudC50cmlnZ2VyKGUsbixyLCEwKTp0fX0p O3ZhciBzdD0vXi5bXjojXFtcLixdKiQvLGx0PS9eKD86cGFyZW50c3xwcmV2KD86 VW50aWx8QWxsKSkvLHV0PXguZXhwci5tYXRjaC5uZWVkc0NvbnRleHQsY3Q9e2No aWxkcmVuOiEwLGNvbnRlbnRzOiEwLG5leHQ6ITAscHJldjohMH07eC5mbi5leHRl bmQoe2ZpbmQ6ZnVuY3Rpb24oZSl7dmFyIHQsbj1bXSxyPXRoaXMsaT1yLmxlbmd0 aDtpZigic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIHRoaXMucHVzaFN0YWNrKHgo ZSkuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKHQ9MDtpPnQ7dCsrKWlmKHguY29udGFp bnMoclt0XSx0aGlzKSlyZXR1cm4hMH0pKTtmb3IodD0wO2k+dDt0KyspeC5maW5k KGUsclt0XSxuKTtyZXR1cm4gbj10aGlzLnB1c2hTdGFjayhpPjE/eC51bmlxdWUo bik6biksbi5zZWxlY3Rvcj10aGlzLnNlbGVjdG9yP3RoaXMuc2VsZWN0b3IrIiAi K2U6ZSxufSxoYXM6ZnVuY3Rpb24oZSl7dmFyIHQsbj14KGUsdGhpcykscj1uLmxl bmd0aDtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtmb3IodD0wO3I+dDt0 KyspaWYoeC5jb250YWlucyh0aGlzLG5bdF0pKXJldHVybiEwfSl9LG5vdDpmdW5j dGlvbihlKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZnQodGhpcyxlfHxbXSwhMCkp fSxmaWx0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGZ0KHRo aXMsZXx8W10sITEpKX0saXM6ZnVuY3Rpb24oZSl7cmV0dXJuISFmdCh0aGlzLCJz dHJpbmciPT10eXBlb2YgZSYmdXQudGVzdChlKT94KGUpOmV8fFtdLCExKS5sZW5n dGh9LGNsb3Nlc3Q6ZnVuY3Rpb24oZSx0KXt2YXIgbixyPTAsaT10aGlzLmxlbmd0 aCxvPVtdLGE9dXQudGVzdChlKXx8InN0cmluZyIhPXR5cGVvZiBlP3goZSx0fHx0 aGlzLmNvbnRleHQpOjA7Zm9yKDtpPnI7cisrKWZvcihuPXRoaXNbcl07biYmbiE9 PXQ7bj1uLnBhcmVudE5vZGUpaWYoMTE+bi5ub2RlVHlwZSYmKGE/YS5pbmRleChu KT4tMToxPT09bi5ub2RlVHlwZSYmeC5maW5kLm1hdGNoZXNTZWxlY3RvcihuLGUp KSl7bj1vLnB1c2gobik7YnJlYWt9cmV0dXJuIHRoaXMucHVzaFN0YWNrKG8ubGVu Z3RoPjE/eC51bmlxdWUobyk6byl9LGluZGV4OmZ1bmN0aW9uKGUpe3JldHVybiBl PyJzdHJpbmciPT10eXBlb2YgZT94LmluQXJyYXkodGhpc1swXSx4KGUpKTp4Lmlu QXJyYXkoZS5qcXVlcnk/ZVswXTplLHRoaXMpOnRoaXNbMF0mJnRoaXNbMF0ucGFy ZW50Tm9kZT90aGlzLmZpcnN0KCkucHJldkFsbCgpLmxlbmd0aDotMX0sYWRkOmZ1 bmN0aW9uKGUsdCl7dmFyIG49InN0cmluZyI9PXR5cGVvZiBlP3goZSx0KTp4Lm1h a2VBcnJheShlJiZlLm5vZGVUeXBlP1tlXTplKSxyPXgubWVyZ2UodGhpcy5nZXQo KSxuKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soeC51bmlxdWUocikpfSxhZGRCYWNr OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmFkZChudWxsPT1lP3RoaXMucHJldk9i amVjdDp0aGlzLnByZXZPYmplY3QuZmlsdGVyKGUpKX19KTtmdW5jdGlvbiBwdChl LHQpe2RvIGU9ZVt0XTt3aGlsZShlJiYxIT09ZS5ub2RlVHlwZSk7cmV0dXJuIGV9 eC5lYWNoKHtwYXJlbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wYXJlbnROb2RlO3Jl dHVybiB0JiYxMSE9PXQubm9kZVR5cGU/dDpudWxsfSxwYXJlbnRzOmZ1bmN0aW9u KGUpe3JldHVybiB4LmRpcihlLCJwYXJlbnROb2RlIil9LHBhcmVudHNVbnRpbDpm dW5jdGlvbihlLHQsbil7cmV0dXJuIHguZGlyKGUsInBhcmVudE5vZGUiLG4pfSxu ZXh0OmZ1bmN0aW9uKGUpe3JldHVybiBwdChlLCJuZXh0U2libGluZyIpfSxwcmV2 OmZ1bmN0aW9uKGUpe3JldHVybiBwdChlLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4 dEFsbDpmdW5jdGlvbihlKXtyZXR1cm4geC5kaXIoZSwibmV4dFNpYmxpbmciKX0s cHJldkFsbDpmdW5jdGlvbihlKXtyZXR1cm4geC5kaXIoZSwicHJldmlvdXNTaWJs aW5nIil9LG5leHRVbnRpbDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIHguZGlyKGUs Im5leHRTaWJsaW5nIixuKX0scHJldlVudGlsOmZ1bmN0aW9uKGUsdCxuKXtyZXR1 cm4geC5kaXIoZSwicHJldmlvdXNTaWJsaW5nIixuKX0sc2libGluZ3M6ZnVuY3Rp b24oZSl7cmV0dXJuIHguc2libGluZygoZS5wYXJlbnROb2RlfHx7fSkuZmlyc3RD aGlsZCxlKX0sY2hpbGRyZW46ZnVuY3Rpb24oZSl7cmV0dXJuIHguc2libGluZyhl LmZpcnN0Q2hpbGQpfSxjb250ZW50czpmdW5jdGlvbihlKXtyZXR1cm4geC5ub2Rl TmFtZShlLCJpZnJhbWUiKT9lLmNvbnRlbnREb2N1bWVudHx8ZS5jb250ZW50V2lu ZG93LmRvY3VtZW50OngubWVyZ2UoW10sZS5jaGlsZE5vZGVzKX19LGZ1bmN0aW9u KGUsdCl7eC5mbltlXT1mdW5jdGlvbihuLHIpe3ZhciBpPXgubWFwKHRoaXMsdCxu KTtyZXR1cm4iVW50aWwiIT09ZS5zbGljZSgtNSkmJihyPW4pLHImJiJzdHJpbmci PT10eXBlb2YgciYmKGk9eC5maWx0ZXIocixpKSksdGhpcy5sZW5ndGg+MSYmKGN0 W2VdfHwoaT14LnVuaXF1ZShpKSksbHQudGVzdChlKSYmKGk9aS5yZXZlcnNlKCkp KSx0aGlzLnB1c2hTdGFjayhpKX19KSx4LmV4dGVuZCh7ZmlsdGVyOmZ1bmN0aW9u KGUsdCxuKXt2YXIgcj10WzBdO3JldHVybiBuJiYoZT0iOm5vdCgiK2UrIikiKSwx PT09dC5sZW5ndGgmJjE9PT1yLm5vZGVUeXBlP3guZmluZC5tYXRjaGVzU2VsZWN0 b3IocixlKT9bcl06W106eC5maW5kLm1hdGNoZXMoZSx4LmdyZXAodCxmdW5jdGlv bihlKXtyZXR1cm4gMT09PWUubm9kZVR5cGV9KSl9LGRpcjpmdW5jdGlvbihlLG4s cil7dmFyIGk9W10sbz1lW25dO3doaWxlKG8mJjkhPT1vLm5vZGVUeXBlJiYocj09 PXR8fDEhPT1vLm5vZGVUeXBlfHwheChvKS5pcyhyKSkpMT09PW8ubm9kZVR5cGUm JmkucHVzaChvKSxvPW9bbl07cmV0dXJuIGl9LHNpYmxpbmc6ZnVuY3Rpb24oZSx0 KXt2YXIgbj1bXTtmb3IoO2U7ZT1lLm5leHRTaWJsaW5nKTE9PT1lLm5vZGVUeXBl JiZlIT09dCYmbi5wdXNoKGUpO3JldHVybiBufX0pO2Z1bmN0aW9uIGZ0KGUsdCxu KXtpZih4LmlzRnVuY3Rpb24odCkpcmV0dXJuIHguZ3JlcChlLGZ1bmN0aW9uKGUs cil7cmV0dXJuISF0LmNhbGwoZSxyLGUpIT09bn0pO2lmKHQubm9kZVR5cGUpcmV0 dXJuIHguZ3JlcChlLGZ1bmN0aW9uKGUpe3JldHVybiBlPT09dCE9PW59KTtpZigi c3RyaW5nIj09dHlwZW9mIHQpe2lmKHN0LnRlc3QodCkpcmV0dXJuIHguZmlsdGVy KHQsZSxuKTt0PXguZmlsdGVyKHQsZSl9cmV0dXJuIHguZ3JlcChlLGZ1bmN0aW9u KGUpe3JldHVybiB4LmluQXJyYXkoZSx0KT49MCE9PW59KX1mdW5jdGlvbiBkdChl KXt2YXIgdD1odC5zcGxpdCgifCIpLG49ZS5jcmVhdGVEb2N1bWVudEZyYWdtZW50 KCk7aWYobi5jcmVhdGVFbGVtZW50KXdoaWxlKHQubGVuZ3RoKW4uY3JlYXRlRWxl bWVudCh0LnBvcCgpKTtyZXR1cm4gbn12YXIgaHQ9ImFiYnJ8YXJ0aWNsZXxhc2lk ZXxhdWRpb3xiZGl8Y2FudmFzfGRhdGF8ZGF0YWxpc3R8ZGV0YWlsc3xmaWdjYXB0 aW9ufGZpZ3VyZXxmb290ZXJ8aGVhZGVyfGhncm91cHxtYXJrfG1ldGVyfG5hdnxv dXRwdXR8cHJvZ3Jlc3N8c2VjdGlvbnxzdW1tYXJ5fHRpbWV8dmlkZW8iLGd0PS8g alF1ZXJ5XGQrPSIoPzpudWxsfFxkKykiL2csbXQ9UmVnRXhwKCI8KD86IitodCsi KVtcXHMvPl0iLCJpIikseXQ9L15ccysvLHZ0PS88KD8hYXJlYXxicnxjb2x8ZW1i ZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFtcdzpdKylbXj5dKilc Lz4vZ2ksYnQ9LzwoW1x3Ol0rKS8seHQ9Lzx0Ym9keS9pLHd0PS88fCYjP1x3Kzsv LFR0PS88KD86c2NyaXB0fHN0eWxlfGxpbmspL2ksQ3Q9L14oPzpjaGVja2JveHxy YWRpbykkL2ksTnQ9L2NoZWNrZWRccyooPzpbXj1dfD1ccyouY2hlY2tlZC4pL2ks a3Q9L14kfFwvKD86amF2YXxlY21hKXNjcmlwdC9pLEV0PS9edHJ1ZVwvKC4qKS8s U3Q9L15ccyo8ISg/OlxbQ0RBVEFcW3wtLSl8KD86XF1cXXwtLSk+XHMqJC9nLEF0 PXtvcHRpb246WzEsIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCI8L3Nl bGVjdD4iXSxsZWdlbmQ6WzEsIjxmaWVsZHNldD4iLCI8L2ZpZWxkc2V0PiJdLGFy ZWE6WzEsIjxtYXA+IiwiPC9tYXA+Il0scGFyYW06WzEsIjxvYmplY3Q+IiwiPC9v YmplY3Q+Il0sdGhlYWQ6WzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJdLHRyOlsyLCI8 dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSxjb2w6WzIsIjx0YWJs ZT48dGJvZHk+PC90Ym9keT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3RhYmxl PiJdLHRkOlszLCI8dGFibGU+PHRib2R5Pjx0cj4iLCI8L3RyPjwvdGJvZHk+PC90 YWJsZT4iXSxfZGVmYXVsdDp4LnN1cHBvcnQuaHRtbFNlcmlhbGl6ZT9bMCwiIiwi Il06WzEsIlg8ZGl2PiIsIjwvZGl2PiJdfSxqdD1kdChhKSxEdD1qdC5hcHBlbmRD aGlsZChhLmNyZWF0ZUVsZW1lbnQoImRpdiIpKTtBdC5vcHRncm91cD1BdC5vcHRp b24sQXQudGJvZHk9QXQudGZvb3Q9QXQuY29sZ3JvdXA9QXQuY2FwdGlvbj1BdC50 aGVhZCxBdC50aD1BdC50ZCx4LmZuLmV4dGVuZCh7dGV4dDpmdW5jdGlvbihlKXty ZXR1cm4geC5hY2Nlc3ModGhpcyxmdW5jdGlvbihlKXtyZXR1cm4gZT09PXQ/eC50 ZXh0KHRoaXMpOnRoaXMuZW1wdHkoKS5hcHBlbmQoKHRoaXNbMF0mJnRoaXNbMF0u b3duZXJEb2N1bWVudHx8YSkuY3JlYXRlVGV4dE5vZGUoZSkpfSxudWxsLGUsYXJn dW1lbnRzLmxlbmd0aCl9LGFwcGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRv bU1hbmlwKGFyZ3VtZW50cyxmdW5jdGlvbihlKXtpZigxPT09dGhpcy5ub2RlVHlw ZXx8MTE9PT10aGlzLm5vZGVUeXBlfHw5PT09dGhpcy5ub2RlVHlwZSl7dmFyIHQ9 THQodGhpcyxlKTt0LmFwcGVuZENoaWxkKGUpfX0pfSxwcmVwZW5kOmZ1bmN0aW9u KCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1bmN0aW9uKGUpe2lm KDE9PT10aGlzLm5vZGVUeXBlfHwxMT09PXRoaXMubm9kZVR5cGV8fDk9PT10aGlz Lm5vZGVUeXBlKXt2YXIgdD1MdCh0aGlzLGUpO3QuaW5zZXJ0QmVmb3JlKGUsdC5m aXJzdENoaWxkKX19KX0sYmVmb3JlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9t TWFuaXAoYXJndW1lbnRzLGZ1bmN0aW9uKGUpe3RoaXMucGFyZW50Tm9kZSYmdGhp cy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLHRoaXMpfSl9LGFmdGVyOmZ1bmN0 aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1bmN0aW9uKGUp e3RoaXMucGFyZW50Tm9kZSYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShl LHRoaXMubmV4dFNpYmxpbmcpfSl9LHJlbW92ZTpmdW5jdGlvbihlLHQpe3ZhciBu LHI9ZT94LmZpbHRlcihlLHRoaXMpOnRoaXMsaT0wO2Zvcig7bnVsbCE9KG49cltp XSk7aSsrKXR8fDEhPT1uLm5vZGVUeXBlfHx4LmNsZWFuRGF0YShGdChuKSksbi5w YXJlbnROb2RlJiYodCYmeC5jb250YWlucyhuLm93bmVyRG9jdW1lbnQsbikmJl90 KEZ0KG4sInNjcmlwdCIpKSxuLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobikpO3Jl dHVybiB0aGlzfSxlbXB0eTpmdW5jdGlvbigpe3ZhciBlLHQ9MDtmb3IoO251bGwh PShlPXRoaXNbdF0pO3QrKyl7MT09PWUubm9kZVR5cGUmJnguY2xlYW5EYXRhKEZ0 KGUsITEpKTt3aGlsZShlLmZpcnN0Q2hpbGQpZS5yZW1vdmVDaGlsZChlLmZpcnN0 Q2hpbGQpO2Uub3B0aW9ucyYmeC5ub2RlTmFtZShlLCJzZWxlY3QiKSYmKGUub3B0 aW9ucy5sZW5ndGg9MCl9cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKGUsdCl7 cmV0dXJuIGU9bnVsbD09ZT8hMTplLHQ9bnVsbD09dD9lOnQsdGhpcy5tYXAoZnVu Y3Rpb24oKXtyZXR1cm4geC5jbG9uZSh0aGlzLGUsdCl9KX0saHRtbDpmdW5jdGlv bihlKXtyZXR1cm4geC5hY2Nlc3ModGhpcyxmdW5jdGlvbihlKXt2YXIgbj10aGlz WzBdfHx7fSxyPTAsaT10aGlzLmxlbmd0aDtpZihlPT09dClyZXR1cm4gMT09PW4u bm9kZVR5cGU/bi5pbm5lckhUTUwucmVwbGFjZShndCwiIik6dDtpZighKCJzdHJp bmciIT10eXBlb2YgZXx8VHQudGVzdChlKXx8IXguc3VwcG9ydC5odG1sU2VyaWFs aXplJiZtdC50ZXN0KGUpfHwheC5zdXBwb3J0LmxlYWRpbmdXaGl0ZXNwYWNlJiZ5 dC50ZXN0KGUpfHxBdFsoYnQuZXhlYyhlKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNh c2UoKV0pKXtlPWUucmVwbGFjZSh2dCwiPCQxPjwvJDI+Iik7dHJ5e2Zvcig7aT5y O3IrKyluPXRoaXNbcl18fHt9LDE9PT1uLm5vZGVUeXBlJiYoeC5jbGVhbkRhdGEo RnQobiwhMSkpLG4uaW5uZXJIVE1MPWUpO249MH1jYXRjaChvKXt9fW4mJnRoaXMu ZW1wdHkoKS5hcHBlbmQoZSl9LG51bGwsZSxhcmd1bWVudHMubGVuZ3RoKX0scmVw bGFjZVdpdGg6ZnVuY3Rpb24oKXt2YXIgZT14Lm1hcCh0aGlzLGZ1bmN0aW9uKGUp e3JldHVybltlLm5leHRTaWJsaW5nLGUucGFyZW50Tm9kZV19KSx0PTA7cmV0dXJu IHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1bmN0aW9uKG4pe3ZhciByPWVbdCsr XSxpPWVbdCsrXTtpJiYociYmci5wYXJlbnROb2RlIT09aSYmKHI9dGhpcy5uZXh0 U2libGluZykseCh0aGlzKS5yZW1vdmUoKSxpLmluc2VydEJlZm9yZShuLHIpKX0s ITApLHQ/dGhpczp0aGlzLnJlbW92ZSgpfSxkZXRhY2g6ZnVuY3Rpb24oZSl7cmV0 dXJuIHRoaXMucmVtb3ZlKGUsITApfSxkb21NYW5pcDpmdW5jdGlvbihlLHQsbil7 ZT1kLmFwcGx5KFtdLGUpO3ZhciByLGksbyxhLHMsbCx1PTAsYz10aGlzLmxlbmd0 aCxwPXRoaXMsZj1jLTEsaD1lWzBdLGc9eC5pc0Z1bmN0aW9uKGgpO2lmKGd8fCEo MT49Y3x8InN0cmluZyIhPXR5cGVvZiBofHx4LnN1cHBvcnQuY2hlY2tDbG9uZSkm Jk50LnRlc3QoaCkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihyKXt2YXIgaT1w LmVxKHIpO2cmJihlWzBdPWguY2FsbCh0aGlzLHIsaS5odG1sKCkpKSxpLmRvbU1h bmlwKGUsdCxuKX0pO2lmKGMmJihsPXguYnVpbGRGcmFnbWVudChlLHRoaXNbMF0u b3duZXJEb2N1bWVudCwhMSwhbiYmdGhpcykscj1sLmZpcnN0Q2hpbGQsMT09PWwu Y2hpbGROb2Rlcy5sZW5ndGgmJihsPXIpLHIpKXtmb3IoYT14Lm1hcChGdChsLCJz Y3JpcHQiKSxIdCksbz1hLmxlbmd0aDtjPnU7dSsrKWk9bCx1IT09ZiYmKGk9eC5j bG9uZShpLCEwLCEwKSxvJiZ4Lm1lcmdlKGEsRnQoaSwic2NyaXB0IikpKSx0LmNh bGwodGhpc1t1XSxpLHUpO2lmKG8pZm9yKHM9YVthLmxlbmd0aC0xXS5vd25lckRv Y3VtZW50LHgubWFwKGEscXQpLHU9MDtvPnU7dSsrKWk9YVt1XSxrdC50ZXN0KGku dHlwZXx8IiIpJiYheC5fZGF0YShpLCJnbG9iYWxFdmFsIikmJnguY29udGFpbnMo cyxpKSYmKGkuc3JjP3guX2V2YWxVcmwoaS5zcmMpOnguZ2xvYmFsRXZhbCgoaS50 ZXh0fHxpLnRleHRDb250ZW50fHxpLmlubmVySFRNTHx8IiIpLnJlcGxhY2UoU3Qs IiIpKSk7bD1yPW51bGx9cmV0dXJuIHRoaXN9fSk7ZnVuY3Rpb24gTHQoZSx0KXty ZXR1cm4geC5ub2RlTmFtZShlLCJ0YWJsZSIpJiZ4Lm5vZGVOYW1lKDE9PT10Lm5v ZGVUeXBlP3Q6dC5maXJzdENoaWxkLCJ0ciIpP2UuZ2V0RWxlbWVudHNCeVRhZ05h bWUoInRib2R5IilbMF18fGUuYXBwZW5kQ2hpbGQoZS5vd25lckRvY3VtZW50LmNy ZWF0ZUVsZW1lbnQoInRib2R5IikpOmV9ZnVuY3Rpb24gSHQoZSl7cmV0dXJuIGUu dHlwZT0obnVsbCE9PXguZmluZC5hdHRyKGUsInR5cGUiKSkrIi8iK2UudHlwZSxl fWZ1bmN0aW9uIHF0KGUpe3ZhciB0PUV0LmV4ZWMoZS50eXBlKTtyZXR1cm4gdD9l LnR5cGU9dFsxXTplLnJlbW92ZUF0dHJpYnV0ZSgidHlwZSIpLGV9ZnVuY3Rpb24g X3QoZSx0KXt2YXIgbixyPTA7Zm9yKDtudWxsIT0obj1lW3JdKTtyKyspeC5fZGF0 YShuLCJnbG9iYWxFdmFsIiwhdHx8eC5fZGF0YSh0W3JdLCJnbG9iYWxFdmFsIikp fWZ1bmN0aW9uIE10KGUsdCl7aWYoMT09PXQubm9kZVR5cGUmJnguaGFzRGF0YShl KSl7dmFyIG4scixpLG89eC5fZGF0YShlKSxhPXguX2RhdGEodCxvKSxzPW8uZXZl bnRzO2lmKHMpe2RlbGV0ZSBhLmhhbmRsZSxhLmV2ZW50cz17fTtmb3IobiBpbiBz KWZvcihyPTAsaT1zW25dLmxlbmd0aDtpPnI7cisrKXguZXZlbnQuYWRkKHQsbixz W25dW3JdKX1hLmRhdGEmJihhLmRhdGE9eC5leHRlbmQoe30sYS5kYXRhKSl9fWZ1 bmN0aW9uIE90KGUsdCl7dmFyIG4scixpO2lmKDE9PT10Lm5vZGVUeXBlKXtpZihu PXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSwheC5zdXBwb3J0Lm5vQ2xvbmVFdmVu dCYmdFt4LmV4cGFuZG9dKXtpPXguX2RhdGEodCk7Zm9yKHIgaW4gaS5ldmVudHMp eC5yZW1vdmVFdmVudCh0LHIsaS5oYW5kbGUpO3QucmVtb3ZlQXR0cmlidXRlKHgu ZXhwYW5kbyl9InNjcmlwdCI9PT1uJiZ0LnRleHQhPT1lLnRleHQ/KEh0KHQpLnRl eHQ9ZS50ZXh0LHF0KHQpKToib2JqZWN0Ij09PW4/KHQucGFyZW50Tm9kZSYmKHQu b3V0ZXJIVE1MPWUub3V0ZXJIVE1MKSx4LnN1cHBvcnQuaHRtbDVDbG9uZSYmZS5p bm5lckhUTUwmJiF4LnRyaW0odC5pbm5lckhUTUwpJiYodC5pbm5lckhUTUw9ZS5p bm5lckhUTUwpKToiaW5wdXQiPT09biYmQ3QudGVzdChlLnR5cGUpPyh0LmRlZmF1 bHRDaGVja2VkPXQuY2hlY2tlZD1lLmNoZWNrZWQsdC52YWx1ZSE9PWUudmFsdWUm Jih0LnZhbHVlPWUudmFsdWUpKToib3B0aW9uIj09PW4/dC5kZWZhdWx0U2VsZWN0 ZWQ9dC5zZWxlY3RlZD1lLmRlZmF1bHRTZWxlY3RlZDooImlucHV0Ij09PW58fCJ0 ZXh0YXJlYSI9PT1uKSYmKHQuZGVmYXVsdFZhbHVlPWUuZGVmYXVsdFZhbHVlKX19 eC5lYWNoKHthcHBlbmRUbzoiYXBwZW5kIixwcmVwZW5kVG86InByZXBlbmQiLGlu c2VydEJlZm9yZToiYmVmb3JlIixpbnNlcnRBZnRlcjoiYWZ0ZXIiLHJlcGxhY2VB bGw6InJlcGxhY2VXaXRoIn0sZnVuY3Rpb24oZSx0KXt4LmZuW2VdPWZ1bmN0aW9u KGUpe3ZhciBuLHI9MCxpPVtdLG89eChlKSxhPW8ubGVuZ3RoLTE7Zm9yKDthPj1y O3IrKyluPXI9PT1hP3RoaXM6dGhpcy5jbG9uZSghMCkseChvW3JdKVt0XShuKSxo LmFwcGx5KGksbi5nZXQoKSk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGkpfX0pO2Z1 bmN0aW9uIEZ0KGUsbil7dmFyIHIsbyxhPTAscz10eXBlb2YgZS5nZXRFbGVtZW50 c0J5VGFnTmFtZSE9PWk/ZS5nZXRFbGVtZW50c0J5VGFnTmFtZShufHwiKiIpOnR5 cGVvZiBlLnF1ZXJ5U2VsZWN0b3JBbGwhPT1pP2UucXVlcnlTZWxlY3RvckFsbChu fHwiKiIpOnQ7aWYoIXMpZm9yKHM9W10scj1lLmNoaWxkTm9kZXN8fGU7bnVsbCE9 KG89clthXSk7YSsrKSFufHx4Lm5vZGVOYW1lKG8sbik/cy5wdXNoKG8pOngubWVy Z2UocyxGdChvLG4pKTtyZXR1cm4gbj09PXR8fG4mJngubm9kZU5hbWUoZSxuKT94 Lm1lcmdlKFtlXSxzKTpzfWZ1bmN0aW9uIEJ0KGUpe0N0LnRlc3QoZS50eXBlKSYm KGUuZGVmYXVsdENoZWNrZWQ9ZS5jaGVja2VkKX14LmV4dGVuZCh7Y2xvbmU6ZnVu Y3Rpb24oZSx0LG4pe3ZhciByLGksbyxhLHMsbD14LmNvbnRhaW5zKGUub3duZXJE b2N1bWVudCxlKTtpZih4LnN1cHBvcnQuaHRtbDVDbG9uZXx8eC5pc1hNTERvYyhl KXx8IW10LnRlc3QoIjwiK2Uubm9kZU5hbWUrIj4iKT9vPWUuY2xvbmVOb2RlKCEw KTooRHQuaW5uZXJIVE1MPWUub3V0ZXJIVE1MLER0LnJlbW92ZUNoaWxkKG89RHQu Zmlyc3RDaGlsZCkpLCEoeC5zdXBwb3J0Lm5vQ2xvbmVFdmVudCYmeC5zdXBwb3J0 Lm5vQ2xvbmVDaGVja2VkfHwxIT09ZS5ub2RlVHlwZSYmMTEhPT1lLm5vZGVUeXBl fHx4LmlzWE1MRG9jKGUpKSlmb3Iocj1GdChvKSxzPUZ0KGUpLGE9MDtudWxsIT0o aT1zW2FdKTsrK2EpclthXSYmT3QoaSxyW2FdKTtpZih0KWlmKG4pZm9yKHM9c3x8 RnQoZSkscj1yfHxGdChvKSxhPTA7bnVsbCE9KGk9c1thXSk7YSsrKU10KGksclth XSk7ZWxzZSBNdChlLG8pO3JldHVybiByPUZ0KG8sInNjcmlwdCIpLHIubGVuZ3Ro PjAmJl90KHIsIWwmJkZ0KGUsInNjcmlwdCIpKSxyPXM9aT1udWxsLG99LGJ1aWxk RnJhZ21lbnQ6ZnVuY3Rpb24oZSx0LG4scil7dmFyIGksbyxhLHMsbCx1LGMscD1l Lmxlbmd0aCxmPWR0KHQpLGQ9W10saD0wO2Zvcig7cD5oO2grKylpZihvPWVbaF0s b3x8MD09PW8paWYoIm9iamVjdCI9PT14LnR5cGUobykpeC5tZXJnZShkLG8ubm9k ZVR5cGU/W29dOm8pO2Vsc2UgaWYod3QudGVzdChvKSl7cz1zfHxmLmFwcGVuZENo aWxkKHQuY3JlYXRlRWxlbWVudCgiZGl2IikpLGw9KGJ0LmV4ZWMobyl8fFsiIiwi Il0pWzFdLnRvTG93ZXJDYXNlKCksYz1BdFtsXXx8QXQuX2RlZmF1bHQscy5pbm5l ckhUTUw9Y1sxXStvLnJlcGxhY2UodnQsIjwkMT48LyQyPiIpK2NbMl0saT1jWzBd O3doaWxlKGktLSlzPXMubGFzdENoaWxkO2lmKCF4LnN1cHBvcnQubGVhZGluZ1do aXRlc3BhY2UmJnl0LnRlc3QobykmJmQucHVzaCh0LmNyZWF0ZVRleHROb2RlKHl0 LmV4ZWMobylbMF0pKSwheC5zdXBwb3J0LnRib2R5KXtvPSJ0YWJsZSIhPT1sfHx4 dC50ZXN0KG8pPyI8dGFibGU+IiE9PWNbMV18fHh0LnRlc3Qobyk/MDpzOnMuZmly c3RDaGlsZCxpPW8mJm8uY2hpbGROb2Rlcy5sZW5ndGg7d2hpbGUoaS0tKXgubm9k ZU5hbWUodT1vLmNoaWxkTm9kZXNbaV0sInRib2R5IikmJiF1LmNoaWxkTm9kZXMu bGVuZ3RoJiZvLnJlbW92ZUNoaWxkKHUpfXgubWVyZ2UoZCxzLmNoaWxkTm9kZXMp LHMudGV4dENvbnRlbnQ9IiI7d2hpbGUocy5maXJzdENoaWxkKXMucmVtb3ZlQ2hp bGQocy5maXJzdENoaWxkKTtzPWYubGFzdENoaWxkfWVsc2UgZC5wdXNoKHQuY3Jl YXRlVGV4dE5vZGUobykpO3MmJmYucmVtb3ZlQ2hpbGQocykseC5zdXBwb3J0LmFw cGVuZENoZWNrZWR8fHguZ3JlcChGdChkLCJpbnB1dCIpLEJ0KSxoPTA7d2hpbGUo bz1kW2grK10paWYoKCFyfHwtMT09PXguaW5BcnJheShvLHIpKSYmKGE9eC5jb250 YWlucyhvLm93bmVyRG9jdW1lbnQsbykscz1GdChmLmFwcGVuZENoaWxkKG8pLCJz Y3JpcHQiKSxhJiZfdChzKSxuKSl7aT0wO3doaWxlKG89c1tpKytdKWt0LnRlc3Qo by50eXBlfHwiIikmJm4ucHVzaChvKX1yZXR1cm4gcz1udWxsLGZ9LGNsZWFuRGF0 YTpmdW5jdGlvbihlLHQpe3ZhciBuLHIsbyxhLHM9MCxsPXguZXhwYW5kbyx1PXgu Y2FjaGUsYz14LnN1cHBvcnQuZGVsZXRlRXhwYW5kbyxmPXguZXZlbnQuc3BlY2lh bDtmb3IoO251bGwhPShuPWVbc10pO3MrKylpZigodHx8eC5hY2NlcHREYXRhKG4p KSYmKG89bltsXSxhPW8mJnVbb10pKXtpZihhLmV2ZW50cylmb3IociBpbiBhLmV2 ZW50cylmW3JdP3guZXZlbnQucmVtb3ZlKG4scik6eC5yZW1vdmVFdmVudChuLHIs YS5oYW5kbGUpOwp1W29dJiYoZGVsZXRlIHVbb10sYz9kZWxldGUgbltsXTp0eXBl b2Ygbi5yZW1vdmVBdHRyaWJ1dGUhPT1pP24ucmVtb3ZlQXR0cmlidXRlKGwpOm5b bF09bnVsbCxwLnB1c2gobykpfX0sX2V2YWxVcmw6ZnVuY3Rpb24oZSl7cmV0dXJu IHguYWpheCh7dXJsOmUsdHlwZToiR0VUIixkYXRhVHlwZToic2NyaXB0Iixhc3lu YzohMSxnbG9iYWw6ITEsInRocm93cyI6ITB9KX19KSx4LmZuLmV4dGVuZCh7d3Jh cEFsbDpmdW5jdGlvbihlKXtpZih4LmlzRnVuY3Rpb24oZSkpcmV0dXJuIHRoaXMu ZWFjaChmdW5jdGlvbih0KXt4KHRoaXMpLndyYXBBbGwoZS5jYWxsKHRoaXMsdCkp fSk7aWYodGhpc1swXSl7dmFyIHQ9eChlLHRoaXNbMF0ub3duZXJEb2N1bWVudCku ZXEoMCkuY2xvbmUoITApO3RoaXNbMF0ucGFyZW50Tm9kZSYmdC5pbnNlcnRCZWZv cmUodGhpc1swXSksdC5tYXAoZnVuY3Rpb24oKXt2YXIgZT10aGlzO3doaWxlKGUu Zmlyc3RDaGlsZCYmMT09PWUuZmlyc3RDaGlsZC5ub2RlVHlwZSllPWUuZmlyc3RD aGlsZDtyZXR1cm4gZX0pLmFwcGVuZCh0aGlzKX1yZXR1cm4gdGhpc30sd3JhcElu bmVyOmZ1bmN0aW9uKGUpe3JldHVybiB4LmlzRnVuY3Rpb24oZSk/dGhpcy5lYWNo KGZ1bmN0aW9uKHQpe3godGhpcykud3JhcElubmVyKGUuY2FsbCh0aGlzLHQpKX0p OnRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciB0PXgodGhpcyksbj10LmNvbnRlbnRz KCk7bi5sZW5ndGg/bi53cmFwQWxsKGUpOnQuYXBwZW5kKGUpfSl9LHdyYXA6ZnVu Y3Rpb24oZSl7dmFyIHQ9eC5pc0Z1bmN0aW9uKGUpO3JldHVybiB0aGlzLmVhY2go ZnVuY3Rpb24obil7eCh0aGlzKS53cmFwQWxsKHQ/ZS5jYWxsKHRoaXMsbik6ZSl9 KX0sdW53cmFwOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyZW50KCkuZWFjaChm dW5jdGlvbigpe3gubm9kZU5hbWUodGhpcywiYm9keSIpfHx4KHRoaXMpLnJlcGxh Y2VXaXRoKHRoaXMuY2hpbGROb2Rlcyl9KS5lbmQoKX19KTt2YXIgUHQsUnQsV3Qs JHQ9L2FscGhhXChbXildKlwpL2ksSXQ9L29wYWNpdHlccyo9XHMqKFteKV0qKS8s enQ9L14odG9wfHJpZ2h0fGJvdHRvbXxsZWZ0KSQvLFh0PS9eKG5vbmV8dGFibGUo PyEtY1tlYV0pLispLyxVdD0vXm1hcmdpbi8sVnQ9UmVnRXhwKCJeKCIrdysiKSgu KikkIiwiaSIpLFl0PVJlZ0V4cCgiXigiK3crIikoPyFweClbYS16JV0rJCIsImki KSxKdD1SZWdFeHAoIl4oWystXSk9KCIrdysiKSIsImkiKSxHdD17Qk9EWToiYmxv Y2sifSxRdD17cG9zaXRpb246ImFic29sdXRlIix2aXNpYmlsaXR5OiJoaWRkZW4i LGRpc3BsYXk6ImJsb2NrIn0sS3Q9e2xldHRlclNwYWNpbmc6MCxmb250V2VpZ2h0 OjQwMH0sWnQ9WyJUb3AiLCJSaWdodCIsIkJvdHRvbSIsIkxlZnQiXSxlbj1bIldl YmtpdCIsIk8iLCJNb3oiLCJtcyJdO2Z1bmN0aW9uIHRuKGUsdCl7aWYodCBpbiBl KXJldHVybiB0O3ZhciBuPXQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrdC5zbGlj ZSgxKSxyPXQsaT1lbi5sZW5ndGg7d2hpbGUoaS0tKWlmKHQ9ZW5baV0rbix0IGlu IGUpcmV0dXJuIHQ7cmV0dXJuIHJ9ZnVuY3Rpb24gbm4oZSx0KXtyZXR1cm4gZT10 fHxlLCJub25lIj09PXguY3NzKGUsImRpc3BsYXkiKXx8IXguY29udGFpbnMoZS5v d25lckRvY3VtZW50LGUpfWZ1bmN0aW9uIHJuKGUsdCl7dmFyIG4scixpLG89W10s YT0wLHM9ZS5sZW5ndGg7Zm9yKDtzPmE7YSsrKXI9ZVthXSxyLnN0eWxlJiYob1th XT14Ll9kYXRhKHIsIm9sZGRpc3BsYXkiKSxuPXIuc3R5bGUuZGlzcGxheSx0Pyhv W2FdfHwibm9uZSIhPT1ufHwoci5zdHlsZS5kaXNwbGF5PSIiKSwiIj09PXIuc3R5 bGUuZGlzcGxheSYmbm4ocikmJihvW2FdPXguX2RhdGEociwib2xkZGlzcGxheSIs bG4oci5ub2RlTmFtZSkpKSk6b1thXXx8KGk9bm4ociksKG4mJiJub25lIiE9PW58 fCFpKSYmeC5fZGF0YShyLCJvbGRkaXNwbGF5IixpP246eC5jc3MociwiZGlzcGxh eSIpKSkpO2ZvcihhPTA7cz5hO2ErKylyPWVbYV0sci5zdHlsZSYmKHQmJiJub25l IiE9PXIuc3R5bGUuZGlzcGxheSYmIiIhPT1yLnN0eWxlLmRpc3BsYXl8fChyLnN0 eWxlLmRpc3BsYXk9dD9vW2FdfHwiIjoibm9uZSIpKTtyZXR1cm4gZX14LmZuLmV4 dGVuZCh7Y3NzOmZ1bmN0aW9uKGUsbil7cmV0dXJuIHguYWNjZXNzKHRoaXMsZnVu Y3Rpb24oZSxuLHIpe3ZhciBpLG8sYT17fSxzPTA7aWYoeC5pc0FycmF5KG4pKXtm b3Iobz1SdChlKSxpPW4ubGVuZ3RoO2k+cztzKyspYVtuW3NdXT14LmNzcyhlLG5b c10sITEsbyk7cmV0dXJuIGF9cmV0dXJuIHIhPT10P3guc3R5bGUoZSxuLHIpOngu Y3NzKGUsbil9LGUsbixhcmd1bWVudHMubGVuZ3RoPjEpfSxzaG93OmZ1bmN0aW9u KCl7cmV0dXJuIHJuKHRoaXMsITApfSxoaWRlOmZ1bmN0aW9uKCl7cmV0dXJuIHJu KHRoaXMpfSx0b2dnbGU6ZnVuY3Rpb24oZSl7dmFyIHQ9ImJvb2xlYW4iPT10eXBl b2YgZTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7KHQ/ZTpubih0aGlzKSk/ eCh0aGlzKS5zaG93KCk6eCh0aGlzKS5oaWRlKCl9KX19KSx4LmV4dGVuZCh7Y3Nz SG9va3M6e29wYWNpdHk6e2dldDpmdW5jdGlvbihlLHQpe2lmKHQpe3ZhciBuPVd0 KGUsIm9wYWNpdHkiKTtyZXR1cm4iIj09PW4/IjEiOm59fX19LGNzc051bWJlcjp7 Y29sdW1uQ291bnQ6ITAsZmlsbE9wYWNpdHk6ITAsZm9udFdlaWdodDohMCxsaW5l SGVpZ2h0OiEwLG9wYWNpdHk6ITAsb3JwaGFuczohMCx3aWRvd3M6ITAsekluZGV4 OiEwLHpvb206ITB9LGNzc1Byb3BzOnsiZmxvYXQiOnguc3VwcG9ydC5jc3NGbG9h dD8iY3NzRmxvYXQiOiJzdHlsZUZsb2F0In0sc3R5bGU6ZnVuY3Rpb24oZSxuLHIs aSl7aWYoZSYmMyE9PWUubm9kZVR5cGUmJjghPT1lLm5vZGVUeXBlJiZlLnN0eWxl KXt2YXIgbyxhLHMsbD14LmNhbWVsQ2FzZShuKSx1PWUuc3R5bGU7aWYobj14LmNz c1Byb3BzW2xdfHwoeC5jc3NQcm9wc1tsXT10bih1LGwpKSxzPXguY3NzSG9va3Nb bl18fHguY3NzSG9va3NbbF0scj09PXQpcmV0dXJuIHMmJiJnZXQiaW4gcyYmKG89 cy5nZXQoZSwhMSxpKSkhPT10P286dVtuXTtpZihhPXR5cGVvZiByLCJzdHJpbmci PT09YSYmKG89SnQuZXhlYyhyKSkmJihyPShvWzFdKzEpKm9bMl0rcGFyc2VGbG9h dCh4LmNzcyhlLG4pKSxhPSJudW1iZXIiKSwhKG51bGw9PXJ8fCJudW1iZXIiPT09 YSYmaXNOYU4ocil8fCgibnVtYmVyIiE9PWF8fHguY3NzTnVtYmVyW2xdfHwocis9 InB4IikseC5zdXBwb3J0LmNsZWFyQ2xvbmVTdHlsZXx8IiIhPT1yfHwwIT09bi5p bmRleE9mKCJiYWNrZ3JvdW5kIil8fCh1W25dPSJpbmhlcml0IikscyYmInNldCJp biBzJiYocj1zLnNldChlLHIsaSkpPT09dCkpKXRyeXt1W25dPXJ9Y2F0Y2goYyl7 fX19LGNzczpmdW5jdGlvbihlLG4scixpKXt2YXIgbyxhLHMsbD14LmNhbWVsQ2Fz ZShuKTtyZXR1cm4gbj14LmNzc1Byb3BzW2xdfHwoeC5jc3NQcm9wc1tsXT10bihl LnN0eWxlLGwpKSxzPXguY3NzSG9va3Nbbl18fHguY3NzSG9va3NbbF0scyYmImdl dCJpbiBzJiYoYT1zLmdldChlLCEwLHIpKSxhPT09dCYmKGE9V3QoZSxuLGkpKSwi bm9ybWFsIj09PWEmJm4gaW4gS3QmJihhPUt0W25dKSwiIj09PXJ8fHI/KG89cGFy c2VGbG9hdChhKSxyPT09ITB8fHguaXNOdW1lcmljKG8pP298fDA6YSk6YX19KSxl LmdldENvbXB1dGVkU3R5bGU/KFJ0PWZ1bmN0aW9uKHQpe3JldHVybiBlLmdldENv bXB1dGVkU3R5bGUodCxudWxsKX0sV3Q9ZnVuY3Rpb24oZSxuLHIpe3ZhciBpLG8s YSxzPXJ8fFJ0KGUpLGw9cz9zLmdldFByb3BlcnR5VmFsdWUobil8fHNbbl06dCx1 PWUuc3R5bGU7cmV0dXJuIHMmJigiIiE9PWx8fHguY29udGFpbnMoZS5vd25lckRv Y3VtZW50LGUpfHwobD14LnN0eWxlKGUsbikpLFl0LnRlc3QobCkmJlV0LnRlc3Qo bikmJihpPXUud2lkdGgsbz11Lm1pbldpZHRoLGE9dS5tYXhXaWR0aCx1Lm1pbldp ZHRoPXUubWF4V2lkdGg9dS53aWR0aD1sLGw9cy53aWR0aCx1LndpZHRoPWksdS5t aW5XaWR0aD1vLHUubWF4V2lkdGg9YSkpLGx9KTphLmRvY3VtZW50RWxlbWVudC5j dXJyZW50U3R5bGUmJihSdD1mdW5jdGlvbihlKXtyZXR1cm4gZS5jdXJyZW50U3R5 bGV9LFd0PWZ1bmN0aW9uKGUsbixyKXt2YXIgaSxvLGEscz1yfHxSdChlKSxsPXM/ c1tuXTp0LHU9ZS5zdHlsZTtyZXR1cm4gbnVsbD09bCYmdSYmdVtuXSYmKGw9dVtu XSksWXQudGVzdChsKSYmIXp0LnRlc3QobikmJihpPXUubGVmdCxvPWUucnVudGlt ZVN0eWxlLGE9byYmby5sZWZ0LGEmJihvLmxlZnQ9ZS5jdXJyZW50U3R5bGUubGVm dCksdS5sZWZ0PSJmb250U2l6ZSI9PT1uPyIxZW0iOmwsbD11LnBpeGVsTGVmdCsi cHgiLHUubGVmdD1pLGEmJihvLmxlZnQ9YSkpLCIiPT09bD8iYXV0byI6bH0pO2Z1 bmN0aW9uIG9uKGUsdCxuKXt2YXIgcj1WdC5leGVjKHQpO3JldHVybiByP01hdGgu bWF4KDAsclsxXS0obnx8MCkpKyhyWzJdfHwicHgiKTp0fWZ1bmN0aW9uIGFuKGUs dCxuLHIsaSl7dmFyIG89bj09PShyPyJib3JkZXIiOiJjb250ZW50Iik/NDoid2lk dGgiPT09dD8xOjAsYT0wO2Zvcig7ND5vO28rPTIpIm1hcmdpbiI9PT1uJiYoYSs9 eC5jc3MoZSxuK1p0W29dLCEwLGkpKSxyPygiY29udGVudCI9PT1uJiYoYS09eC5j c3MoZSwicGFkZGluZyIrWnRbb10sITAsaSkpLCJtYXJnaW4iIT09biYmKGEtPXgu Y3NzKGUsImJvcmRlciIrWnRbb10rIldpZHRoIiwhMCxpKSkpOihhKz14LmNzcyhl LCJwYWRkaW5nIitadFtvXSwhMCxpKSwicGFkZGluZyIhPT1uJiYoYSs9eC5jc3Mo ZSwiYm9yZGVyIitadFtvXSsiV2lkdGgiLCEwLGkpKSk7cmV0dXJuIGF9ZnVuY3Rp b24gc24oZSx0LG4pe3ZhciByPSEwLGk9IndpZHRoIj09PXQ/ZS5vZmZzZXRXaWR0 aDplLm9mZnNldEhlaWdodCxvPVJ0KGUpLGE9eC5zdXBwb3J0LmJveFNpemluZyYm ImJvcmRlci1ib3giPT09eC5jc3MoZSwiYm94U2l6aW5nIiwhMSxvKTtpZigwPj1p fHxudWxsPT1pKXtpZihpPVd0KGUsdCxvKSwoMD5pfHxudWxsPT1pKSYmKGk9ZS5z dHlsZVt0XSksWXQudGVzdChpKSlyZXR1cm4gaTtyPWEmJih4LnN1cHBvcnQuYm94 U2l6aW5nUmVsaWFibGV8fGk9PT1lLnN0eWxlW3RdKSxpPXBhcnNlRmxvYXQoaSl8 fDB9cmV0dXJuIGkrYW4oZSx0LG58fChhPyJib3JkZXIiOiJjb250ZW50Iikscixv KSsicHgifWZ1bmN0aW9uIGxuKGUpe3ZhciB0PWEsbj1HdFtlXTtyZXR1cm4gbnx8 KG49dW4oZSx0KSwibm9uZSIhPT1uJiZufHwoUHQ9KFB0fHx4KCI8aWZyYW1lIGZy YW1lYm9yZGVyPScwJyB3aWR0aD0nMCcgaGVpZ2h0PScwJy8+IikuY3NzKCJjc3NU ZXh0IiwiZGlzcGxheTpibG9jayAhaW1wb3J0YW50IikpLmFwcGVuZFRvKHQuZG9j dW1lbnRFbGVtZW50KSx0PShQdFswXS5jb250ZW50V2luZG93fHxQdFswXS5jb250 ZW50RG9jdW1lbnQpLmRvY3VtZW50LHQud3JpdGUoIjwhZG9jdHlwZSBodG1sPjxo dG1sPjxib2R5PiIpLHQuY2xvc2UoKSxuPXVuKGUsdCksUHQuZGV0YWNoKCkpLEd0 W2VdPW4pLG59ZnVuY3Rpb24gdW4oZSx0KXt2YXIgbj14KHQuY3JlYXRlRWxlbWVu dChlKSkuYXBwZW5kVG8odC5ib2R5KSxyPXguY3NzKG5bMF0sImRpc3BsYXkiKTty ZXR1cm4gbi5yZW1vdmUoKSxyfXguZWFjaChbImhlaWdodCIsIndpZHRoIl0sZnVu Y3Rpb24oZSxuKXt4LmNzc0hvb2tzW25dPXtnZXQ6ZnVuY3Rpb24oZSxyLGkpe3Jl dHVybiByPzA9PT1lLm9mZnNldFdpZHRoJiZYdC50ZXN0KHguY3NzKGUsImRpc3Bs YXkiKSk/eC5zd2FwKGUsUXQsZnVuY3Rpb24oKXtyZXR1cm4gc24oZSxuLGkpfSk6 c24oZSxuLGkpOnR9LHNldDpmdW5jdGlvbihlLHQscil7dmFyIGk9ciYmUnQoZSk7 cmV0dXJuIG9uKGUsdCxyP2FuKGUsbixyLHguc3VwcG9ydC5ib3hTaXppbmcmJiJi b3JkZXItYm94Ij09PXguY3NzKGUsImJveFNpemluZyIsITEsaSksaSk6MCl9fX0p LHguc3VwcG9ydC5vcGFjaXR5fHwoeC5jc3NIb29rcy5vcGFjaXR5PXtnZXQ6ZnVu Y3Rpb24oZSx0KXtyZXR1cm4gSXQudGVzdCgodCYmZS5jdXJyZW50U3R5bGU/ZS5j dXJyZW50U3R5bGUuZmlsdGVyOmUuc3R5bGUuZmlsdGVyKXx8IiIpPy4wMSpwYXJz ZUZsb2F0KFJlZ0V4cC4kMSkrIiI6dD8iMSI6IiJ9LHNldDpmdW5jdGlvbihlLHQp e3ZhciBuPWUuc3R5bGUscj1lLmN1cnJlbnRTdHlsZSxpPXguaXNOdW1lcmljKHQp PyJhbHBoYShvcGFjaXR5PSIrMTAwKnQrIikiOiIiLG89ciYmci5maWx0ZXJ8fG4u ZmlsdGVyfHwiIjtuLnpvb209MSwodD49MXx8IiI9PT10KSYmIiI9PT14LnRyaW0o by5yZXBsYWNlKCR0LCIiKSkmJm4ucmVtb3ZlQXR0cmlidXRlJiYobi5yZW1vdmVB dHRyaWJ1dGUoImZpbHRlciIpLCIiPT09dHx8ciYmIXIuZmlsdGVyKXx8KG4uZmls dGVyPSR0LnRlc3Qobyk/by5yZXBsYWNlKCR0LGkpOm8rIiAiK2kpfX0pLHgoZnVu Y3Rpb24oKXt4LnN1cHBvcnQucmVsaWFibGVNYXJnaW5SaWdodHx8KHguY3NzSG9v a3MubWFyZ2luUmlnaHQ9e2dldDpmdW5jdGlvbihlLG4pe3JldHVybiBuP3guc3dh cChlLHtkaXNwbGF5OiJpbmxpbmUtYmxvY2sifSxXdCxbZSwibWFyZ2luUmlnaHQi XSk6dH19KSwheC5zdXBwb3J0LnBpeGVsUG9zaXRpb24mJnguZm4ucG9zaXRpb24m JnguZWFjaChbInRvcCIsImxlZnQiXSxmdW5jdGlvbihlLG4pe3guY3NzSG9va3Nb bl09e2dldDpmdW5jdGlvbihlLHIpe3JldHVybiByPyhyPVd0KGUsbiksWXQudGVz dChyKT94KGUpLnBvc2l0aW9uKClbbl0rInB4IjpyKTp0fX19KX0pLHguZXhwciYm eC5leHByLmZpbHRlcnMmJih4LmV4cHIuZmlsdGVycy5oaWRkZW49ZnVuY3Rpb24o ZSl7cmV0dXJuIDA+PWUub2Zmc2V0V2lkdGgmJjA+PWUub2Zmc2V0SGVpZ2h0fHwh eC5zdXBwb3J0LnJlbGlhYmxlSGlkZGVuT2Zmc2V0cyYmIm5vbmUiPT09KGUuc3R5 bGUmJmUuc3R5bGUuZGlzcGxheXx8eC5jc3MoZSwiZGlzcGxheSIpKX0seC5leHBy LmZpbHRlcnMudmlzaWJsZT1mdW5jdGlvbihlKXtyZXR1cm4heC5leHByLmZpbHRl cnMuaGlkZGVuKGUpfSkseC5lYWNoKHttYXJnaW46IiIscGFkZGluZzoiIixib3Jk ZXI6IldpZHRoIn0sZnVuY3Rpb24oZSx0KXt4LmNzc0hvb2tzW2UrdF09e2V4cGFu ZDpmdW5jdGlvbihuKXt2YXIgcj0wLGk9e30sbz0ic3RyaW5nIj09dHlwZW9mIG4/ bi5zcGxpdCgiICIpOltuXTtmb3IoOzQ+cjtyKyspaVtlK1p0W3JdK3RdPW9bcl18 fG9bci0yXXx8b1swXTtyZXR1cm4gaX19LFV0LnRlc3QoZSl8fCh4LmNzc0hvb2tz W2UrdF0uc2V0PW9uKX0pO3ZhciBjbj0vJTIwL2cscG49L1xbXF0kLyxmbj0vXHI/ XG4vZyxkbj0vXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2ks aG49L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8a2V5Z2VuKS9pO3guZm4uZXh0 ZW5kKHtzZXJpYWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4geC5wYXJhbSh0aGlzLnNl cmlhbGl6ZUFycmF5KCkpfSxzZXJpYWxpemVBcnJheTpmdW5jdGlvbigpe3JldHVy biB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBlPXgucHJvcCh0aGlzLCJlbGVtZW50 cyIpO3JldHVybiBlP3gubWFrZUFycmF5KGUpOnRoaXN9KS5maWx0ZXIoZnVuY3Rp b24oKXt2YXIgZT10aGlzLnR5cGU7cmV0dXJuIHRoaXMubmFtZSYmIXgodGhpcyku aXMoIjpkaXNhYmxlZCIpJiZobi50ZXN0KHRoaXMubm9kZU5hbWUpJiYhZG4udGVz dChlKSYmKHRoaXMuY2hlY2tlZHx8IUN0LnRlc3QoZSkpfSkubWFwKGZ1bmN0aW9u KGUsdCl7dmFyIG49eCh0aGlzKS52YWwoKTtyZXR1cm4gbnVsbD09bj9udWxsOngu aXNBcnJheShuKT94Lm1hcChuLGZ1bmN0aW9uKGUpe3JldHVybntuYW1lOnQubmFt ZSx2YWx1ZTplLnJlcGxhY2UoZm4sIlxyXG4iKX19KTp7bmFtZTp0Lm5hbWUsdmFs dWU6bi5yZXBsYWNlKGZuLCJcclxuIil9fSkuZ2V0KCl9fSkseC5wYXJhbT1mdW5j dGlvbihlLG4pe3ZhciByLGk9W10sbz1mdW5jdGlvbihlLHQpe3Q9eC5pc0Z1bmN0 aW9uKHQpP3QoKTpudWxsPT10PyIiOnQsaVtpLmxlbmd0aF09ZW5jb2RlVVJJQ29t cG9uZW50KGUpKyI9IitlbmNvZGVVUklDb21wb25lbnQodCl9O2lmKG49PT10JiYo bj14LmFqYXhTZXR0aW5ncyYmeC5hamF4U2V0dGluZ3MudHJhZGl0aW9uYWwpLHgu aXNBcnJheShlKXx8ZS5qcXVlcnkmJiF4LmlzUGxhaW5PYmplY3QoZSkpeC5lYWNo KGUsZnVuY3Rpb24oKXtvKHRoaXMubmFtZSx0aGlzLnZhbHVlKX0pO2Vsc2UgZm9y KHIgaW4gZSlnbihyLGVbcl0sbixvKTtyZXR1cm4gaS5qb2luKCImIikucmVwbGFj ZShjbiwiKyIpfTtmdW5jdGlvbiBnbihlLHQsbixyKXt2YXIgaTtpZih4LmlzQXJy YXkodCkpeC5lYWNoKHQsZnVuY3Rpb24odCxpKXtufHxwbi50ZXN0KGUpP3IoZSxp KTpnbihlKyJbIisoIm9iamVjdCI9PXR5cGVvZiBpP3Q6IiIpKyJdIixpLG4scil9 KTtlbHNlIGlmKG58fCJvYmplY3QiIT09eC50eXBlKHQpKXIoZSx0KTtlbHNlIGZv cihpIGluIHQpZ24oZSsiWyIraSsiXSIsdFtpXSxuLHIpfXguZWFjaCgiYmx1ciBm b2N1cyBmb2N1c2luIGZvY3Vzb3V0IGxvYWQgcmVzaXplIHNjcm9sbCB1bmxvYWQg Y2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNl b3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVj dCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciBjb250ZXh0bWVu dSIuc3BsaXQoIiAiKSxmdW5jdGlvbihlLHQpe3guZm5bdF09ZnVuY3Rpb24oZSxu KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4wP3RoaXMub24odCxudWxsLGUsbik6 dGhpcy50cmlnZ2VyKHQpfX0pLHguZm4uZXh0ZW5kKHtob3ZlcjpmdW5jdGlvbihl LHQpe3JldHVybiB0aGlzLm1vdXNlZW50ZXIoZSkubW91c2VsZWF2ZSh0fHxlKX0s YmluZDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMub24oZSxudWxsLHQsbil9 LHVuYmluZDpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLm9mZihlLG51bGwsdCl9 LGRlbGVnYXRlOmZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiB0aGlzLm9uKHQsZSxu LHIpfSx1bmRlbGVnYXRlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gMT09PWFyZ3Vt ZW50cy5sZW5ndGg/dGhpcy5vZmYoZSwiKioiKTp0aGlzLm9mZih0LGV8fCIqKiIs bil9fSk7dmFyIG1uLHluLHZuPXgubm93KCksYm49L1w/Lyx4bj0vIy4qJC8sd249 LyhbPyZdKV89W14mXSovLFRuPS9eKC4qPyk6WyBcdF0qKFteXHJcbl0qKVxyPyQv Z20sQ249L14oPzphYm91dHxhcHB8YXBwLXN0b3JhZ2V8ListZXh0ZW5zaW9ufGZp bGV8cmVzfHdpZGdldCk6JC8sTm49L14oPzpHRVR8SEVBRCkkLyxrbj0vXlwvXC8v LEVuPS9eKFtcdy4rLV0rOikoPzpcL1wvKFteXC8/IzpdKikoPzo6KFxkKyl8KXwp LyxTbj14LmZuLmxvYWQsQW49e30sam49e30sRG49IiovIi5jb25jYXQoIioiKTt0 cnl7eW49by5ocmVmfWNhdGNoKExuKXt5bj1hLmNyZWF0ZUVsZW1lbnQoImEiKSx5 bi5ocmVmPSIiLHluPXluLmhyZWZ9bW49RW4uZXhlYyh5bi50b0xvd2VyQ2FzZSgp KXx8W107ZnVuY3Rpb24gSG4oZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7InN0cmlu ZyIhPXR5cGVvZiB0JiYobj10LHQ9IioiKTt2YXIgcixpPTAsbz10LnRvTG93ZXJD YXNlKCkubWF0Y2goVCl8fFtdO2lmKHguaXNGdW5jdGlvbihuKSl3aGlsZShyPW9b aSsrXSkiKyI9PT1yWzBdPyhyPXIuc2xpY2UoMSl8fCIqIiwoZVtyXT1lW3JdfHxb XSkudW5zaGlmdChuKSk6KGVbcl09ZVtyXXx8W10pLnB1c2gobil9fWZ1bmN0aW9u IHFuKGUsbixyLGkpe3ZhciBvPXt9LGE9ZT09PWpuO2Z1bmN0aW9uIHMobCl7dmFy IHU7cmV0dXJuIG9bbF09ITAseC5lYWNoKGVbbF18fFtdLGZ1bmN0aW9uKGUsbCl7 dmFyIGM9bChuLHIsaSk7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBjfHxhfHxvW2Nd P2E/ISh1PWMpOnQ6KG4uZGF0YVR5cGVzLnVuc2hpZnQoYykscyhjKSwhMSl9KSx1 fXJldHVybiBzKG4uZGF0YVR5cGVzWzBdKXx8IW9bIioiXSYmcygiKiIpfWZ1bmN0 aW9uIF9uKGUsbil7dmFyIHIsaSxvPXguYWpheFNldHRpbmdzLmZsYXRPcHRpb25z fHx7fTtmb3IoaSBpbiBuKW5baV0hPT10JiYoKG9baV0/ZTpyfHwocj17fSkpW2ld PW5baV0pO3JldHVybiByJiZ4LmV4dGVuZCghMCxlLHIpLGV9eC5mbi5sb2FkPWZ1 bmN0aW9uKGUsbixyKXtpZigic3RyaW5nIiE9dHlwZW9mIGUmJlNuKXJldHVybiBT bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dmFyIGksbyxhLHM9dGhpcyxsPWUuaW5k ZXhPZigiICIpO3JldHVybiBsPj0wJiYoaT1lLnNsaWNlKGwsZS5sZW5ndGgpLGU9 ZS5zbGljZSgwLGwpKSx4LmlzRnVuY3Rpb24obik/KHI9bixuPXQpOm4mJiJvYmpl Y3QiPT10eXBlb2YgbiYmKGE9IlBPU1QiKSxzLmxlbmd0aD4wJiZ4LmFqYXgoe3Vy bDplLHR5cGU6YSxkYXRhVHlwZToiaHRtbCIsZGF0YTpufSkuZG9uZShmdW5jdGlv bihlKXtvPWFyZ3VtZW50cyxzLmh0bWwoaT94KCI8ZGl2PiIpLmFwcGVuZCh4LnBh cnNlSFRNTChlKSkuZmluZChpKTplKX0pLmNvbXBsZXRlKHImJmZ1bmN0aW9uKGUs dCl7cy5lYWNoKHIsb3x8W2UucmVzcG9uc2VUZXh0LHQsZV0pfSksdGhpc30seC5l YWNoKFsiYWpheFN0YXJ0IiwiYWpheFN0b3AiLCJhamF4Q29tcGxldGUiLCJhamF4 RXJyb3IiLCJhamF4U3VjY2VzcyIsImFqYXhTZW5kIl0sZnVuY3Rpb24oZSx0KXt4 LmZuW3RdPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm9uKHQsZSl9fSkseC5leHRl bmQoe2FjdGl2ZTowLGxhc3RNb2RpZmllZDp7fSxldGFnOnt9LGFqYXhTZXR0aW5n czp7dXJsOnluLHR5cGU6IkdFVCIsaXNMb2NhbDpDbi50ZXN0KG1uWzFdKSxnbG9i YWw6ITAscHJvY2Vzc0RhdGE6ITAsYXN5bmM6ITAsY29udGVudFR5cGU6ImFwcGxp Y2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD1VVEYtOCIsYWNj ZXB0czp7IioiOkRuLHRleHQ6InRleHQvcGxhaW4iLGh0bWw6InRleHQvaHRtbCIs eG1sOiJhcHBsaWNhdGlvbi94bWwsIHRleHQveG1sIixqc29uOiJhcHBsaWNhdGlv bi9qc29uLCB0ZXh0L2phdmFzY3JpcHQifSxjb250ZW50czp7eG1sOi94bWwvLGh0 bWw6L2h0bWwvLGpzb246L2pzb24vfSxyZXNwb25zZUZpZWxkczp7eG1sOiJyZXNw b25zZVhNTCIsdGV4dDoicmVzcG9uc2VUZXh0Iixqc29uOiJyZXNwb25zZUpTT04i fSxjb252ZXJ0ZXJzOnsiKiB0ZXh0IjpTdHJpbmcsInRleHQgaHRtbCI6ITAsInRl eHQganNvbiI6eC5wYXJzZUpTT04sInRleHQgeG1sIjp4LnBhcnNlWE1MfSxmbGF0 T3B0aW9uczp7dXJsOiEwLGNvbnRleHQ6ITB9fSxhamF4U2V0dXA6ZnVuY3Rpb24o ZSx0KXtyZXR1cm4gdD9fbihfbihlLHguYWpheFNldHRpbmdzKSx0KTpfbih4LmFq YXhTZXR0aW5ncyxlKX0sYWpheFByZWZpbHRlcjpIbihBbiksYWpheFRyYW5zcG9y dDpIbihqbiksYWpheDpmdW5jdGlvbihlLG4peyJvYmplY3QiPT10eXBlb2YgZSYm KG49ZSxlPXQpLG49bnx8e307dmFyIHIsaSxvLGEscyxsLHUsYyxwPXguYWpheFNl dHVwKHt9LG4pLGY9cC5jb250ZXh0fHxwLGQ9cC5jb250ZXh0JiYoZi5ub2RlVHlw ZXx8Zi5qcXVlcnkpP3goZik6eC5ldmVudCxoPXguRGVmZXJyZWQoKSxnPXguQ2Fs bGJhY2tzKCJvbmNlIG1lbW9yeSIpLG09cC5zdGF0dXNDb2RlfHx7fSx5PXt9LHY9 e30sYj0wLHc9ImNhbmNlbGVkIixDPXtyZWFkeVN0YXRlOjAsZ2V0UmVzcG9uc2VI ZWFkZXI6ZnVuY3Rpb24oZSl7dmFyIHQ7aWYoMj09PWIpe2lmKCFjKXtjPXt9O3do aWxlKHQ9VG4uZXhlYyhhKSljW3RbMV0udG9Mb3dlckNhc2UoKV09dFsyXX10PWNb ZS50b0xvd2VyQ2FzZSgpXX1yZXR1cm4gbnVsbD09dD9udWxsOnR9LGdldEFsbFJl c3BvbnNlSGVhZGVyczpmdW5jdGlvbigpe3JldHVybiAyPT09Yj9hOm51bGx9LHNl dFJlcXVlc3RIZWFkZXI6ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLnRvTG93ZXJDYXNl KCk7cmV0dXJuIGJ8fChlPXZbbl09dltuXXx8ZSx5W2VdPXQpLHRoaXN9LG92ZXJy aWRlTWltZVR5cGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGJ8fChwLm1pbWVUeXBlPWUp LHRoaXN9LHN0YXR1c0NvZGU6ZnVuY3Rpb24oZSl7dmFyIHQ7aWYoZSlpZigyPmIp Zm9yKHQgaW4gZSltW3RdPVttW3RdLGVbdF1dO2Vsc2UgQy5hbHdheXMoZVtDLnN0 YXR1c10pO3JldHVybiB0aGlzfSxhYm9ydDpmdW5jdGlvbihlKXt2YXIgdD1lfHx3 O3JldHVybiB1JiZ1LmFib3J0KHQpLGsoMCx0KSx0aGlzfX07aWYoaC5wcm9taXNl KEMpLmNvbXBsZXRlPWcuYWRkLEMuc3VjY2Vzcz1DLmRvbmUsQy5lcnJvcj1DLmZh aWwscC51cmw9KChlfHxwLnVybHx8eW4pKyIiKS5yZXBsYWNlKHhuLCIiKS5yZXBs YWNlKGtuLG1uWzFdKyIvLyIpLHAudHlwZT1uLm1ldGhvZHx8bi50eXBlfHxwLm1l dGhvZHx8cC50eXBlLHAuZGF0YVR5cGVzPXgudHJpbShwLmRhdGFUeXBlfHwiKiIp LnRvTG93ZXJDYXNlKCkubWF0Y2goVCl8fFsiIl0sbnVsbD09cC5jcm9zc0RvbWFp biYmKHI9RW4uZXhlYyhwLnVybC50b0xvd2VyQ2FzZSgpKSxwLmNyb3NzRG9tYWlu PSEoIXJ8fHJbMV09PT1tblsxXSYmclsyXT09PW1uWzJdJiYoclszXXx8KCJodHRw OiI9PT1yWzFdPyI4MCI6IjQ0MyIpKT09PShtblszXXx8KCJodHRwOiI9PT1tblsx XT8iODAiOiI0NDMiKSkpKSxwLmRhdGEmJnAucHJvY2Vzc0RhdGEmJiJzdHJpbmci IT10eXBlb2YgcC5kYXRhJiYocC5kYXRhPXgucGFyYW0ocC5kYXRhLHAudHJhZGl0 aW9uYWwpKSxxbihBbixwLG4sQyksMj09PWIpcmV0dXJuIEM7bD1wLmdsb2JhbCxs JiYwPT09eC5hY3RpdmUrKyYmeC5ldmVudC50cmlnZ2VyKCJhamF4U3RhcnQiKSxw LnR5cGU9cC50eXBlLnRvVXBwZXJDYXNlKCkscC5oYXNDb250ZW50PSFObi50ZXN0 KHAudHlwZSksbz1wLnVybCxwLmhhc0NvbnRlbnR8fChwLmRhdGEmJihvPXAudXJs Kz0oYm4udGVzdChvKT8iJiI6Ij8iKStwLmRhdGEsZGVsZXRlIHAuZGF0YSkscC5j YWNoZT09PSExJiYocC51cmw9d24udGVzdChvKT9vLnJlcGxhY2Uod24sIiQxXz0i K3ZuKyspOm8rKGJuLnRlc3Qobyk/IiYiOiI/IikrIl89Iit2bisrKSkscC5pZk1v ZGlmaWVkJiYoeC5sYXN0TW9kaWZpZWRbb10mJkMuc2V0UmVxdWVzdEhlYWRlcigi SWYtTW9kaWZpZWQtU2luY2UiLHgubGFzdE1vZGlmaWVkW29dKSx4LmV0YWdbb10m JkMuc2V0UmVxdWVzdEhlYWRlcigiSWYtTm9uZS1NYXRjaCIseC5ldGFnW29dKSks KHAuZGF0YSYmcC5oYXNDb250ZW50JiZwLmNvbnRlbnRUeXBlIT09ITF8fG4uY29u dGVudFR5cGUpJiZDLnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIscC5j b250ZW50VHlwZSksQy5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLHAuZGF0YVR5 cGVzWzBdJiZwLmFjY2VwdHNbcC5kYXRhVHlwZXNbMF1dP3AuYWNjZXB0c1twLmRh dGFUeXBlc1swXV0rKCIqIiE9PXAuZGF0YVR5cGVzWzBdPyIsICIrRG4rIjsgcT0w LjAxIjoiIik6cC5hY2NlcHRzWyIqIl0pO2ZvcihpIGluIHAuaGVhZGVycylDLnNl dFJlcXVlc3RIZWFkZXIoaSxwLmhlYWRlcnNbaV0pO2lmKHAuYmVmb3JlU2VuZCYm KHAuYmVmb3JlU2VuZC5jYWxsKGYsQyxwKT09PSExfHwyPT09YikpcmV0dXJuIEMu YWJvcnQoKTt3PSJhYm9ydCI7Zm9yKGkgaW57c3VjY2VzczoxLGVycm9yOjEsY29t cGxldGU6MX0pQ1tpXShwW2ldKTtpZih1PXFuKGpuLHAsbixDKSl7Qy5yZWFkeVN0 YXRlPTEsbCYmZC50cmlnZ2VyKCJhamF4U2VuZCIsW0MscF0pLHAuYXN5bmMmJnAu dGltZW91dD4wJiYocz1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Qy5hYm9ydCgidGlt ZW91dCIpfSxwLnRpbWVvdXQpKTt0cnl7Yj0xLHUuc2VuZCh5LGspfWNhdGNoKE4p e2lmKCEoMj5iKSl0aHJvdyBOO2soLTEsTil9fWVsc2UgaygtMSwiTm8gVHJhbnNw b3J0Iik7ZnVuY3Rpb24gayhlLG4scixpKXt2YXIgYyx5LHYsdyxULE49bjsyIT09 YiYmKGI9MixzJiZjbGVhclRpbWVvdXQocyksdT10LGE9aXx8IiIsQy5yZWFkeVN0 YXRlPWU+MD80OjAsYz1lPj0yMDAmJjMwMD5lfHwzMDQ9PT1lLHImJih3PU1uKHAs QyxyKSksdz1PbihwLHcsQyxjKSxjPyhwLmlmTW9kaWZpZWQmJihUPUMuZ2V0UmVz cG9uc2VIZWFkZXIoIkxhc3QtTW9kaWZpZWQiKSxUJiYoeC5sYXN0TW9kaWZpZWRb b109VCksVD1DLmdldFJlc3BvbnNlSGVhZGVyKCJldGFnIiksVCYmKHguZXRhZ1tv XT1UKSksMjA0PT09ZXx8IkhFQUQiPT09cC50eXBlP049Im5vY29udGVudCI6MzA0 PT09ZT9OPSJub3Rtb2RpZmllZCI6KE49dy5zdGF0ZSx5PXcuZGF0YSx2PXcuZXJy b3IsYz0hdikpOih2PU4sKGV8fCFOKSYmKE49ImVycm9yIiwwPmUmJihlPTApKSks Qy5zdGF0dXM9ZSxDLnN0YXR1c1RleHQ9KG58fE4pKyIiLGM/aC5yZXNvbHZlV2l0 aChmLFt5LE4sQ10pOmgucmVqZWN0V2l0aChmLFtDLE4sdl0pLEMuc3RhdHVzQ29k ZShtKSxtPXQsbCYmZC50cmlnZ2VyKGM/ImFqYXhTdWNjZXNzIjoiYWpheEVycm9y IixbQyxwLGM/eTp2XSksZy5maXJlV2l0aChmLFtDLE5dKSxsJiYoZC50cmlnZ2Vy KCJhamF4Q29tcGxldGUiLFtDLHBdKSwtLXguYWN0aXZlfHx4LmV2ZW50LnRyaWdn ZXIoImFqYXhTdG9wIikpKX1yZXR1cm4gQ30sZ2V0SlNPTjpmdW5jdGlvbihlLHQs bil7cmV0dXJuIHguZ2V0KGUsdCxuLCJqc29uIil9LGdldFNjcmlwdDpmdW5jdGlv bihlLG4pe3JldHVybiB4LmdldChlLHQsbiwic2NyaXB0Iil9fSkseC5lYWNoKFsi Z2V0IiwicG9zdCJdLGZ1bmN0aW9uKGUsbil7eFtuXT1mdW5jdGlvbihlLHIsaSxv KXtyZXR1cm4geC5pc0Z1bmN0aW9uKHIpJiYobz1vfHxpLGk9cixyPXQpLHguYWph eCh7dXJsOmUsdHlwZTpuLGRhdGFUeXBlOm8sZGF0YTpyLHN1Y2Nlc3M6aX0pfX0p O2Z1bmN0aW9uIE1uKGUsbixyKXt2YXIgaSxvLGEscyxsPWUuY29udGVudHMsdT1l LmRhdGFUeXBlczt3aGlsZSgiKiI9PT11WzBdKXUuc2hpZnQoKSxvPT09dCYmKG89 ZS5taW1lVHlwZXx8bi5nZXRSZXNwb25zZUhlYWRlcigiQ29udGVudC1UeXBlIikp O2lmKG8pZm9yKHMgaW4gbClpZihsW3NdJiZsW3NdLnRlc3Qobykpe3UudW5zaGlm dChzKTticmVha31pZih1WzBdaW4gcilhPXVbMF07ZWxzZXtmb3IocyBpbiByKXtp ZighdVswXXx8ZS5jb252ZXJ0ZXJzW3MrIiAiK3VbMF1dKXthPXM7YnJlYWt9aXx8 KGk9cyl9YT1hfHxpfXJldHVybiBhPyhhIT09dVswXSYmdS51bnNoaWZ0KGEpLHJb YV0pOnR9ZnVuY3Rpb24gT24oZSx0LG4scil7dmFyIGksbyxhLHMsbCx1PXt9LGM9 ZS5kYXRhVHlwZXMuc2xpY2UoKTtpZihjWzFdKWZvcihhIGluIGUuY29udmVydGVy cyl1W2EudG9Mb3dlckNhc2UoKV09ZS5jb252ZXJ0ZXJzW2FdO289Yy5zaGlmdCgp O3doaWxlKG8paWYoZS5yZXNwb25zZUZpZWxkc1tvXSYmKG5bZS5yZXNwb25zZUZp ZWxkc1tvXV09dCksIWwmJnImJmUuZGF0YUZpbHRlciYmKHQ9ZS5kYXRhRmlsdGVy KHQsZS5kYXRhVHlwZSkpLGw9byxvPWMuc2hpZnQoKSlpZigiKiI9PT1vKW89bDtl bHNlIGlmKCIqIiE9PWwmJmwhPT1vKXtpZihhPXVbbCsiICIrb118fHVbIiogIitv XSwhYSlmb3IoaSBpbiB1KWlmKHM9aS5zcGxpdCgiICIpLHNbMV09PT1vJiYoYT11 W2wrIiAiK3NbMF1dfHx1WyIqICIrc1swXV0pKXthPT09ITA/YT11W2ldOnVbaV0h PT0hMCYmKG89c1swXSxjLnVuc2hpZnQoc1sxXSkpO2JyZWFrfWlmKGEhPT0hMClp ZihhJiZlWyJ0aHJvd3MiXSl0PWEodCk7ZWxzZSB0cnl7dD1hKHQpfWNhdGNoKHAp e3JldHVybntzdGF0ZToicGFyc2VyZXJyb3IiLGVycm9yOmE/cDoiTm8gY29udmVy c2lvbiBmcm9tICIrbCsiIHRvICIrb319fXJldHVybntzdGF0ZToic3VjY2VzcyIs ZGF0YTp0fX14LmFqYXhTZXR1cCh7YWNjZXB0czp7c2NyaXB0OiJ0ZXh0L2phdmFz Y3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFz Y3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCJ9LGNvbnRlbnRzOntzY3Jp cHQ6Lyg/OmphdmF8ZWNtYSlzY3JpcHQvfSxjb252ZXJ0ZXJzOnsidGV4dCBzY3Jp cHQiOmZ1bmN0aW9uKGUpe3JldHVybiB4Lmdsb2JhbEV2YWwoZSksZX19fSkseC5h amF4UHJlZmlsdGVyKCJzY3JpcHQiLGZ1bmN0aW9uKGUpe2UuY2FjaGU9PT10JiYo ZS5jYWNoZT0hMSksZS5jcm9zc0RvbWFpbiYmKGUudHlwZT0iR0VUIixlLmdsb2Jh bD0hMSl9KSx4LmFqYXhUcmFuc3BvcnQoInNjcmlwdCIsZnVuY3Rpb24oZSl7aWYo ZS5jcm9zc0RvbWFpbil7dmFyIG4scj1hLmhlYWR8fHgoImhlYWQiKVswXXx8YS5k b2N1bWVudEVsZW1lbnQ7cmV0dXJue3NlbmQ6ZnVuY3Rpb24odCxpKXtuPWEuY3Jl YXRlRWxlbWVudCgic2NyaXB0Iiksbi5hc3luYz0hMCxlLnNjcmlwdENoYXJzZXQm JihuLmNoYXJzZXQ9ZS5zY3JpcHRDaGFyc2V0KSxuLnNyYz1lLnVybCxuLm9ubG9h ZD1uLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbihlLHQpeyh0fHwhbi5yZWFk eVN0YXRlfHwvbG9hZGVkfGNvbXBsZXRlLy50ZXN0KG4ucmVhZHlTdGF0ZSkpJiYo bi5vbmxvYWQ9bi5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbCxuLnBhcmVudE5vZGUm Jm4ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChuKSxuPW51bGwsdHx8aSgyMDAsInN1 Y2Nlc3MiKSl9LHIuaW5zZXJ0QmVmb3JlKG4sci5maXJzdENoaWxkKX0sYWJvcnQ6 ZnVuY3Rpb24oKXtuJiZuLm9ubG9hZCh0LCEwKX19fX0pO3ZhciBGbj1bXSxCbj0v KD0pXD8oPz0mfCQpfFw/XD8vO3guYWpheFNldHVwKHtqc29ucDoiY2FsbGJhY2si LGpzb25wQ2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgZT1Gbi5wb3AoKXx8eC5leHBh bmRvKyJfIit2bisrO3JldHVybiB0aGlzW2VdPSEwLGV9fSkseC5hamF4UHJlZmls dGVyKCJqc29uIGpzb25wIixmdW5jdGlvbihuLHIsaSl7dmFyIG8sYSxzLGw9bi5q c29ucCE9PSExJiYoQm4udGVzdChuLnVybCk/InVybCI6InN0cmluZyI9PXR5cGVv ZiBuLmRhdGEmJiEobi5jb250ZW50VHlwZXx8IiIpLmluZGV4T2YoImFwcGxpY2F0 aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpJiZCbi50ZXN0KG4uZGF0YSkmJiJk YXRhIik7cmV0dXJuIGx8fCJqc29ucCI9PT1uLmRhdGFUeXBlc1swXT8obz1uLmpz b25wQ2FsbGJhY2s9eC5pc0Z1bmN0aW9uKG4uanNvbnBDYWxsYmFjayk/bi5qc29u cENhbGxiYWNrKCk6bi5qc29ucENhbGxiYWNrLGw/bltsXT1uW2xdLnJlcGxhY2Uo Qm4sIiQxIitvKTpuLmpzb25wIT09ITEmJihuLnVybCs9KGJuLnRlc3Qobi51cmwp PyImIjoiPyIpK24uanNvbnArIj0iK28pLG4uY29udmVydGVyc1sic2NyaXB0IGpz b24iXT1mdW5jdGlvbigpe3JldHVybiBzfHx4LmVycm9yKG8rIiB3YXMgbm90IGNh bGxlZCIpLHNbMF19LG4uZGF0YVR5cGVzWzBdPSJqc29uIixhPWVbb10sZVtvXT1m dW5jdGlvbigpe3M9YXJndW1lbnRzfSxpLmFsd2F5cyhmdW5jdGlvbigpe2Vbb109 YSxuW29dJiYobi5qc29ucENhbGxiYWNrPXIuanNvbnBDYWxsYmFjayxGbi5wdXNo KG8pKSxzJiZ4LmlzRnVuY3Rpb24oYSkmJmEoc1swXSkscz1hPXR9KSwic2NyaXB0 Iik6dH0pO3ZhciBQbixSbixXbj0wLCRuPWUuQWN0aXZlWE9iamVjdCYmZnVuY3Rp b24oKXt2YXIgZTtmb3IoZSBpbiBQbilQbltlXSh0LCEwKX07ZnVuY3Rpb24gSW4o KXt0cnl7cmV0dXJuIG5ldyBlLlhNTEh0dHBSZXF1ZXN0fWNhdGNoKHQpe319ZnVu Y3Rpb24gem4oKXt0cnl7cmV0dXJuIG5ldyBlLkFjdGl2ZVhPYmplY3QoIk1pY3Jv c29mdC5YTUxIVFRQIil9Y2F0Y2godCl7fX14LmFqYXhTZXR0aW5ncy54aHI9ZS5B Y3RpdmVYT2JqZWN0P2Z1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaXNMb2NhbCYmSW4o KXx8em4oKX06SW4sUm49eC5hamF4U2V0dGluZ3MueGhyKCkseC5zdXBwb3J0LmNv cnM9ISFSbiYmIndpdGhDcmVkZW50aWFscyJpbiBSbixSbj14LnN1cHBvcnQuYWph eD0hIVJuLFJuJiZ4LmFqYXhUcmFuc3BvcnQoZnVuY3Rpb24obil7aWYoIW4uY3Jv c3NEb21haW58fHguc3VwcG9ydC5jb3JzKXt2YXIgcjtyZXR1cm57c2VuZDpmdW5j dGlvbihpLG8pe3ZhciBhLHMsbD1uLnhocigpO2lmKG4udXNlcm5hbWU/bC5vcGVu KG4udHlwZSxuLnVybCxuLmFzeW5jLG4udXNlcm5hbWUsbi5wYXNzd29yZCk6bC5v cGVuKG4udHlwZSxuLnVybCxuLmFzeW5jKSxuLnhockZpZWxkcylmb3IocyBpbiBu LnhockZpZWxkcylsW3NdPW4ueGhyRmllbGRzW3NdO24ubWltZVR5cGUmJmwub3Zl cnJpZGVNaW1lVHlwZSYmbC5vdmVycmlkZU1pbWVUeXBlKG4ubWltZVR5cGUpLG4u Y3Jvc3NEb21haW58fGlbIlgtUmVxdWVzdGVkLVdpdGgiXXx8KGlbIlgtUmVxdWVz dGVkLVdpdGgiXT0iWE1MSHR0cFJlcXVlc3QiKTt0cnl7Zm9yKHMgaW4gaSlsLnNl dFJlcXVlc3RIZWFkZXIocyxpW3NdKX1jYXRjaCh1KXt9bC5zZW5kKG4uaGFzQ29u dGVudCYmbi5kYXRhfHxudWxsKSxyPWZ1bmN0aW9uKGUsaSl7dmFyIHMsdSxjLHA7 dHJ5e2lmKHImJihpfHw0PT09bC5yZWFkeVN0YXRlKSlpZihyPXQsYSYmKGwub25y ZWFkeXN0YXRlY2hhbmdlPXgubm9vcCwkbiYmZGVsZXRlIFBuW2FdKSxpKTQhPT1s LnJlYWR5U3RhdGUmJmwuYWJvcnQoKTtlbHNle3A9e30scz1sLnN0YXR1cyx1PWwu Z2V0QWxsUmVzcG9uc2VIZWFkZXJzKCksInN0cmluZyI9PXR5cGVvZiBsLnJlc3Bv bnNlVGV4dCYmKHAudGV4dD1sLnJlc3BvbnNlVGV4dCk7dHJ5e2M9bC5zdGF0dXNU ZXh0fWNhdGNoKGYpe2M9IiJ9c3x8IW4uaXNMb2NhbHx8bi5jcm9zc0RvbWFpbj8x MjIzPT09cyYmKHM9MjA0KTpzPXAudGV4dD8yMDA6NDA0fX1jYXRjaChkKXtpfHxv KC0xLGQpfXAmJm8ocyxjLHAsdSl9LG4uYXN5bmM/ND09PWwucmVhZHlTdGF0ZT9z ZXRUaW1lb3V0KHIpOihhPSsrV24sJG4mJihQbnx8KFBuPXt9LHgoZSkudW5sb2Fk KCRuKSksUG5bYV09ciksbC5vbnJlYWR5c3RhdGVjaGFuZ2U9cik6cigpfSxhYm9y dDpmdW5jdGlvbigpe3ImJnIodCwhMCl9fX19KTt2YXIgWG4sVW4sVm49L14oPzp0 b2dnbGV8c2hvd3xoaWRlKSQvLFluPVJlZ0V4cCgiXig/OihbKy1dKT18KSgiK3cr IikoW2EteiVdKikkIiwiaSIpLEpuPS9xdWV1ZUhvb2tzJC8sR249W25yXSxRbj17 IioiOltmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuY3JlYXRlVHdlZW4oZSx0KSxy PW4uY3VyKCksaT1Zbi5leGVjKHQpLG89aSYmaVszXXx8KHguY3NzTnVtYmVyW2Vd PyIiOiJweCIpLGE9KHguY3NzTnVtYmVyW2VdfHwicHgiIT09byYmK3IpJiZZbi5l eGVjKHguY3NzKG4uZWxlbSxlKSkscz0xLGw9MjA7aWYoYSYmYVszXSE9PW8pe289 b3x8YVszXSxpPWl8fFtdLGE9K3J8fDE7ZG8gcz1zfHwiLjUiLGEvPXMseC5zdHls ZShuLmVsZW0sZSxhK28pO3doaWxlKHMhPT0ocz1uLmN1cigpL3IpJiYxIT09cyYm LS1sKX1yZXR1cm4gaSYmKGE9bi5zdGFydD0rYXx8K3J8fDAsbi51bml0PW8sbi5l bmQ9aVsxXT9hKyhpWzFdKzEpKmlbMl06K2lbMl0pLG59XX07ZnVuY3Rpb24gS24o KXtyZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpe1huPXR9KSxYbj14Lm5vdygp fWZ1bmN0aW9uIFpuKGUsdCxuKXt2YXIgcixpPShRblt0XXx8W10pLmNvbmNhdChR blsiKiJdKSxvPTAsYT1pLmxlbmd0aDtmb3IoO2E+bztvKyspaWYocj1pW29dLmNh bGwobix0LGUpKXJldHVybiByfWZ1bmN0aW9uIGVyKGUsdCxuKXt2YXIgcixpLG89 MCxhPUduLmxlbmd0aCxzPXguRGVmZXJyZWQoKS5hbHdheXMoZnVuY3Rpb24oKXtk ZWxldGUgbC5lbGVtfSksbD1mdW5jdGlvbigpe2lmKGkpcmV0dXJuITE7dmFyIHQ9 WG58fEtuKCksbj1NYXRoLm1heCgwLHUuc3RhcnRUaW1lK3UuZHVyYXRpb24tdCks cj1uL3UuZHVyYXRpb258fDAsbz0xLXIsYT0wLGw9dS50d2VlbnMubGVuZ3RoO2Zv cig7bD5hO2ErKyl1LnR3ZWVuc1thXS5ydW4obyk7cmV0dXJuIHMubm90aWZ5V2l0 aChlLFt1LG8sbl0pLDE+byYmbD9uOihzLnJlc29sdmVXaXRoKGUsW3VdKSwhMSl9 LHU9cy5wcm9taXNlKHtlbGVtOmUscHJvcHM6eC5leHRlbmQoe30sdCksb3B0czp4 LmV4dGVuZCghMCx7c3BlY2lhbEVhc2luZzp7fX0sbiksb3JpZ2luYWxQcm9wZXJ0 aWVzOnQsb3JpZ2luYWxPcHRpb25zOm4sc3RhcnRUaW1lOlhufHxLbigpLGR1cmF0 aW9uOm4uZHVyYXRpb24sdHdlZW5zOltdLGNyZWF0ZVR3ZWVuOmZ1bmN0aW9uKHQs bil7dmFyIHI9eC5Ud2VlbihlLHUub3B0cyx0LG4sdS5vcHRzLnNwZWNpYWxFYXNp bmdbdF18fHUub3B0cy5lYXNpbmcpO3JldHVybiB1LnR3ZWVucy5wdXNoKHIpLHJ9 LHN0b3A6ZnVuY3Rpb24odCl7dmFyIG49MCxyPXQ/dS50d2VlbnMubGVuZ3RoOjA7 aWYoaSlyZXR1cm4gdGhpcztmb3IoaT0hMDtyPm47bisrKXUudHdlZW5zW25dLnJ1 bigxKTtyZXR1cm4gdD9zLnJlc29sdmVXaXRoKGUsW3UsdF0pOnMucmVqZWN0V2l0 aChlLFt1LHRdKSx0aGlzfX0pLGM9dS5wcm9wcztmb3IodHIoYyx1Lm9wdHMuc3Bl Y2lhbEVhc2luZyk7YT5vO28rKylpZihyPUduW29dLmNhbGwodSxlLGMsdS5vcHRz KSlyZXR1cm4gcjtyZXR1cm4geC5tYXAoYyxabix1KSx4LmlzRnVuY3Rpb24odS5v cHRzLnN0YXJ0KSYmdS5vcHRzLnN0YXJ0LmNhbGwoZSx1KSx4LmZ4LnRpbWVyKHgu ZXh0ZW5kKGwse2VsZW06ZSxhbmltOnUscXVldWU6dS5vcHRzLnF1ZXVlfSkpLHUu cHJvZ3Jlc3ModS5vcHRzLnByb2dyZXNzKS5kb25lKHUub3B0cy5kb25lLHUub3B0 cy5jb21wbGV0ZSkuZmFpbCh1Lm9wdHMuZmFpbCkuYWx3YXlzKHUub3B0cy5hbHdh eXMpfWZ1bmN0aW9uIHRyKGUsdCl7dmFyIG4scixpLG8sYTtmb3IobiBpbiBlKWlm KHI9eC5jYW1lbENhc2UobiksaT10W3JdLG89ZVtuXSx4LmlzQXJyYXkobykmJihp PW9bMV0sbz1lW25dPW9bMF0pLG4hPT1yJiYoZVtyXT1vLGRlbGV0ZSBlW25dKSxh PXguY3NzSG9va3Nbcl0sYSYmImV4cGFuZCJpbiBhKXtvPWEuZXhwYW5kKG8pLGRl bGV0ZSBlW3JdO2ZvcihuIGluIG8pbiBpbiBlfHwoZVtuXT1vW25dLHRbbl09aSl9 ZWxzZSB0W3JdPWl9eC5BbmltYXRpb249eC5leHRlbmQoZXIse3R3ZWVuZXI6ZnVu Y3Rpb24oZSx0KXt4LmlzRnVuY3Rpb24oZSk/KHQ9ZSxlPVsiKiJdKTplPWUuc3Bs aXQoIiAiKTt2YXIgbixyPTAsaT1lLmxlbmd0aDtmb3IoO2k+cjtyKyspbj1lW3Jd LFFuW25dPVFuW25dfHxbXSxRbltuXS51bnNoaWZ0KHQpfSxwcmVmaWx0ZXI6ZnVu Y3Rpb24oZSx0KXt0P0duLnVuc2hpZnQoZSk6R24ucHVzaChlKX19KTtmdW5jdGlv biBucihlLHQsbil7dmFyIHIsaSxvLGEscyxsLHU9dGhpcyxjPXt9LHA9ZS5zdHls ZSxmPWUubm9kZVR5cGUmJm5uKGUpLGQ9eC5fZGF0YShlLCJmeHNob3ciKTtuLnF1 ZXVlfHwocz14Ll9xdWV1ZUhvb2tzKGUsImZ4IiksbnVsbD09cy51bnF1ZXVlZCYm KHMudW5xdWV1ZWQ9MCxsPXMuZW1wdHkuZmlyZSxzLmVtcHR5LmZpcmU9ZnVuY3Rp b24oKXtzLnVucXVldWVkfHxsKCl9KSxzLnVucXVldWVkKyssdS5hbHdheXMoZnVu Y3Rpb24oKXt1LmFsd2F5cyhmdW5jdGlvbigpe3MudW5xdWV1ZWQtLSx4LnF1ZXVl KGUsImZ4IikubGVuZ3RofHxzLmVtcHR5LmZpcmUoKX0pfSkpLDE9PT1lLm5vZGVU eXBlJiYoImhlaWdodCJpbiB0fHwid2lkdGgiaW4gdCkmJihuLm92ZXJmbG93PVtw Lm92ZXJmbG93LHAub3ZlcmZsb3dYLHAub3ZlcmZsb3dZXSwiaW5saW5lIj09PXgu Y3NzKGUsImRpc3BsYXkiKSYmIm5vbmUiPT09eC5jc3MoZSwiZmxvYXQiKSYmKHgu c3VwcG9ydC5pbmxpbmVCbG9ja05lZWRzTGF5b3V0JiYiaW5saW5lIiE9PWxuKGUu bm9kZU5hbWUpP3Auem9vbT0xOnAuZGlzcGxheT0iaW5saW5lLWJsb2NrIikpLG4u b3ZlcmZsb3cmJihwLm92ZXJmbG93PSJoaWRkZW4iLHguc3VwcG9ydC5zaHJpbmtX cmFwQmxvY2tzfHx1LmFsd2F5cyhmdW5jdGlvbigpe3Aub3ZlcmZsb3c9bi5vdmVy Zmxvd1swXSxwLm92ZXJmbG93WD1uLm92ZXJmbG93WzFdLHAub3ZlcmZsb3dZPW4u b3ZlcmZsb3dbMl19KSk7Zm9yKHIgaW4gdClpZihpPXRbcl0sVm4uZXhlYyhpKSl7 aWYoZGVsZXRlIHRbcl0sbz1vfHwidG9nZ2xlIj09PWksaT09PShmPyJoaWRlIjoi c2hvdyIpKWNvbnRpbnVlO2Nbcl09ZCYmZFtyXXx8eC5zdHlsZShlLHIpfWlmKCF4 LmlzRW1wdHlPYmplY3QoYykpe2Q/ImhpZGRlbiJpbiBkJiYoZj1kLmhpZGRlbik6 ZD14Ll9kYXRhKGUsImZ4c2hvdyIse30pLG8mJihkLmhpZGRlbj0hZiksZj94KGUp LnNob3coKTp1LmRvbmUoZnVuY3Rpb24oKXt4KGUpLmhpZGUoKX0pLHUuZG9uZShm dW5jdGlvbigpe3ZhciB0O3guX3JlbW92ZURhdGEoZSwiZnhzaG93Iik7Zm9yKHQg aW4gYyl4LnN0eWxlKGUsdCxjW3RdKX0pO2ZvcihyIGluIGMpYT1abihmP2Rbcl06 MCxyLHUpLHIgaW4gZHx8KGRbcl09YS5zdGFydCxmJiYoYS5lbmQ9YS5zdGFydCxh LnN0YXJ0PSJ3aWR0aCI9PT1yfHwiaGVpZ2h0Ij09PXI/MTowKSl9fWZ1bmN0aW9u IHJyKGUsdCxuLHIsaSl7cmV0dXJuIG5ldyByci5wcm90b3R5cGUuaW5pdChlLHQs bixyLGkpfXguVHdlZW49cnIscnIucHJvdG90eXBlPXtjb25zdHJ1Y3Rvcjpycixp bml0OmZ1bmN0aW9uKGUsdCxuLHIsaSxvKXt0aGlzLmVsZW09ZSx0aGlzLnByb3A9 bix0aGlzLmVhc2luZz1pfHwic3dpbmciLHRoaXMub3B0aW9ucz10LHRoaXMuc3Rh cnQ9dGhpcy5ub3c9dGhpcy5jdXIoKSx0aGlzLmVuZD1yLHRoaXMudW5pdD1vfHwo eC5jc3NOdW1iZXJbbl0/IiI6InB4Iil9LGN1cjpmdW5jdGlvbigpe3ZhciBlPXJy LnByb3BIb29rc1t0aGlzLnByb3BdO3JldHVybiBlJiZlLmdldD9lLmdldCh0aGlz KTpyci5wcm9wSG9va3MuX2RlZmF1bHQuZ2V0KHRoaXMpfSxydW46ZnVuY3Rpb24o ZSl7dmFyIHQsbj1yci5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gdGhpcy5w b3M9dD10aGlzLm9wdGlvbnMuZHVyYXRpb24/eC5lYXNpbmdbdGhpcy5lYXNpbmdd KGUsdGhpcy5vcHRpb25zLmR1cmF0aW9uKmUsMCwxLHRoaXMub3B0aW9ucy5kdXJh dGlvbik6ZSx0aGlzLm5vdz0odGhpcy5lbmQtdGhpcy5zdGFydCkqdCt0aGlzLnN0 YXJ0LHRoaXMub3B0aW9ucy5zdGVwJiZ0aGlzLm9wdGlvbnMuc3RlcC5jYWxsKHRo aXMuZWxlbSx0aGlzLm5vdyx0aGlzKSxuJiZuLnNldD9uLnNldCh0aGlzKTpyci5w cm9wSG9va3MuX2RlZmF1bHQuc2V0KHRoaXMpLHRoaXN9fSxyci5wcm90b3R5cGUu aW5pdC5wcm90b3R5cGU9cnIucHJvdG90eXBlLHJyLnByb3BIb29rcz17X2RlZmF1 bHQ6e2dldDpmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gbnVsbD09ZS5lbGVtW2Uu cHJvcF18fGUuZWxlbS5zdHlsZSYmbnVsbCE9ZS5lbGVtLnN0eWxlW2UucHJvcF0/ KHQ9eC5jc3MoZS5lbGVtLGUucHJvcCwiIiksdCYmImF1dG8iIT09dD90OjApOmUu ZWxlbVtlLnByb3BdfSxzZXQ6ZnVuY3Rpb24oZSl7eC5meC5zdGVwW2UucHJvcF0/ eC5meC5zdGVwW2UucHJvcF0oZSk6ZS5lbGVtLnN0eWxlJiYobnVsbCE9ZS5lbGVt LnN0eWxlW3guY3NzUHJvcHNbZS5wcm9wXV18fHguY3NzSG9va3NbZS5wcm9wXSk/ eC5zdHlsZShlLmVsZW0sZS5wcm9wLGUubm93K2UudW5pdCk6ZS5lbGVtW2UucHJv cF09ZS5ub3d9fX0scnIucHJvcEhvb2tzLnNjcm9sbFRvcD1yci5wcm9wSG9va3Mu c2Nyb2xsTGVmdD17c2V0OmZ1bmN0aW9uKGUpe2UuZWxlbS5ub2RlVHlwZSYmZS5l bGVtLnBhcmVudE5vZGUmJihlLmVsZW1bZS5wcm9wXT1lLm5vdyl9fSx4LmVhY2go WyJ0b2dnbGUiLCJzaG93IiwiaGlkZSJdLGZ1bmN0aW9uKGUsdCl7dmFyIG49eC5m blt0XTt4LmZuW3RdPWZ1bmN0aW9uKGUscixpKXtyZXR1cm4gbnVsbD09ZXx8ImJv b2xlYW4iPT10eXBlb2YgZT9uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTp0aGlzLmFu aW1hdGUoaXIodCwhMCksZSxyLGkpfX0pLHguZm4uZXh0ZW5kKHtmYWRlVG86ZnVu Y3Rpb24oZSx0LG4scil7cmV0dXJuIHRoaXMuZmlsdGVyKG5uKS5jc3MoIm9wYWNp dHkiLDApLnNob3coKS5lbmQoKS5hbmltYXRlKHtvcGFjaXR5OnR9LGUsbixyKX0s YW5pbWF0ZTpmdW5jdGlvbihlLHQsbixyKXt2YXIgaT14LmlzRW1wdHlPYmplY3Qo ZSksbz14LnNwZWVkKHQsbixyKSxhPWZ1bmN0aW9uKCl7dmFyIHQ9ZXIodGhpcyx4 LmV4dGVuZCh7fSxlKSxvKTsoaXx8eC5fZGF0YSh0aGlzLCJmaW5pc2giKSkmJnQu c3RvcCghMCl9O3JldHVybiBhLmZpbmlzaD1hLGl8fG8ucXVldWU9PT0hMT90aGlz LmVhY2goYSk6dGhpcy5xdWV1ZShvLnF1ZXVlLGEpfSxzdG9wOmZ1bmN0aW9uKGUs bixyKXt2YXIgaT1mdW5jdGlvbihlKXt2YXIgdD1lLnN0b3A7ZGVsZXRlIGUuc3Rv cCx0KHIpfTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGUmJihyPW4sbj1lLGU9dCks biYmZSE9PSExJiZ0aGlzLnF1ZXVlKGV8fCJmeCIsW10pLHRoaXMuZWFjaChmdW5j dGlvbigpe3ZhciB0PSEwLG49bnVsbCE9ZSYmZSsicXVldWVIb29rcyIsbz14LnRp bWVycyxhPXguX2RhdGEodGhpcyk7aWYobilhW25dJiZhW25dLnN0b3AmJmkoYVtu XSk7ZWxzZSBmb3IobiBpbiBhKWFbbl0mJmFbbl0uc3RvcCYmSm4udGVzdChuKSYm aShhW25dKTtmb3Iobj1vLmxlbmd0aDtuLS07KW9bbl0uZWxlbSE9PXRoaXN8fG51 bGwhPWUmJm9bbl0ucXVldWUhPT1lfHwob1tuXS5hbmltLnN0b3AociksdD0hMSxv LnNwbGljZShuLDEpKTsodHx8IXIpJiZ4LmRlcXVldWUodGhpcyxlKX0pfSxmaW5p c2g6ZnVuY3Rpb24oZSl7cmV0dXJuIGUhPT0hMSYmKGU9ZXx8ImZ4IiksdGhpcy5l YWNoKGZ1bmN0aW9uKCl7dmFyIHQsbj14Ll9kYXRhKHRoaXMpLHI9bltlKyJxdWV1 ZSJdLGk9bltlKyJxdWV1ZUhvb2tzIl0sbz14LnRpbWVycyxhPXI/ci5sZW5ndGg6 MDtmb3Iobi5maW5pc2g9ITAseC5xdWV1ZSh0aGlzLGUsW10pLGkmJmkuc3RvcCYm aS5zdG9wLmNhbGwodGhpcywhMCksdD1vLmxlbmd0aDt0LS07KW9bdF0uZWxlbT09 PXRoaXMmJm9bdF0ucXVldWU9PT1lJiYob1t0XS5hbmltLnN0b3AoITApLG8uc3Bs aWNlKHQsMSkpO2Zvcih0PTA7YT50O3QrKylyW3RdJiZyW3RdLmZpbmlzaCYmclt0 XS5maW5pc2guY2FsbCh0aGlzKTtkZWxldGUgbi5maW5pc2h9KX19KTtmdW5jdGlv biBpcihlLHQpe3ZhciBuLHI9e2hlaWdodDplfSxpPTA7Zm9yKHQ9dD8xOjA7ND5p O2krPTItdCluPVp0W2ldLHJbIm1hcmdpbiIrbl09clsicGFkZGluZyIrbl09ZTty ZXR1cm4gdCYmKHIub3BhY2l0eT1yLndpZHRoPWUpLHJ9eC5lYWNoKHtzbGlkZURv d246aXIoInNob3ciKSxzbGlkZVVwOmlyKCJoaWRlIiksc2xpZGVUb2dnbGU6aXIo InRvZ2dsZSIpLGZhZGVJbjp7b3BhY2l0eToic2hvdyJ9LGZhZGVPdXQ6e29wYWNp dHk6ImhpZGUifSxmYWRlVG9nZ2xlOntvcGFjaXR5OiJ0b2dnbGUifX0sZnVuY3Rp b24oZSx0KXt4LmZuW2VdPWZ1bmN0aW9uKGUsbixyKXtyZXR1cm4gdGhpcy5hbmlt YXRlKHQsZSxuLHIpfX0pLHguc3BlZWQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUm JiJvYmplY3QiPT10eXBlb2YgZT94LmV4dGVuZCh7fSxlKTp7Y29tcGxldGU6bnx8 IW4mJnR8fHguaXNGdW5jdGlvbihlKSYmZSxkdXJhdGlvbjplLGVhc2luZzpuJiZ0 fHx0JiYheC5pc0Z1bmN0aW9uKHQpJiZ0fTtyZXR1cm4gci5kdXJhdGlvbj14LmZ4 Lm9mZj8wOiJudW1iZXIiPT10eXBlb2Ygci5kdXJhdGlvbj9yLmR1cmF0aW9uOnIu ZHVyYXRpb24gaW4geC5meC5zcGVlZHM/eC5meC5zcGVlZHNbci5kdXJhdGlvbl06 eC5meC5zcGVlZHMuX2RlZmF1bHQsKG51bGw9PXIucXVldWV8fHIucXVldWU9PT0h MCkmJihyLnF1ZXVlPSJmeCIpLHIub2xkPXIuY29tcGxldGUsci5jb21wbGV0ZT1m dW5jdGlvbigpe3guaXNGdW5jdGlvbihyLm9sZCkmJnIub2xkLmNhbGwodGhpcyks ci5xdWV1ZSYmeC5kZXF1ZXVlKHRoaXMsci5xdWV1ZSl9LHJ9LHguZWFzaW5nPXts aW5lYXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LHN3aW5nOmZ1bmN0aW9uKGUpe3Jl dHVybi41LU1hdGguY29zKGUqTWF0aC5QSSkvMn19LHgudGltZXJzPVtdLHguZng9 cnIucHJvdG90eXBlLmluaXQseC5meC50aWNrPWZ1bmN0aW9uKCl7dmFyIGUsbj14 LnRpbWVycyxyPTA7Zm9yKFhuPXgubm93KCk7bi5sZW5ndGg+cjtyKyspZT1uW3Jd LGUoKXx8bltyXSE9PWV8fG4uc3BsaWNlKHItLSwxKTtuLmxlbmd0aHx8eC5meC5z dG9wKCksWG49dH0seC5meC50aW1lcj1mdW5jdGlvbihlKXtlKCkmJngudGltZXJz LnB1c2goZSkmJnguZnguc3RhcnQoKX0seC5meC5pbnRlcnZhbD0xMyx4LmZ4LnN0 YXJ0PWZ1bmN0aW9uKCl7VW58fChVbj1zZXRJbnRlcnZhbCh4LmZ4LnRpY2sseC5m eC5pbnRlcnZhbCkpfSx4LmZ4LnN0b3A9ZnVuY3Rpb24oKXtjbGVhckludGVydmFs KFVuKSxVbj1udWxsfSx4LmZ4LnNwZWVkcz17c2xvdzo2MDAsZmFzdDoyMDAsX2Rl ZmF1bHQ6NDAwfSx4LmZ4LnN0ZXA9e30seC5leHByJiZ4LmV4cHIuZmlsdGVycyYm KHguZXhwci5maWx0ZXJzLmFuaW1hdGVkPWZ1bmN0aW9uKGUpe3JldHVybiB4Lmdy ZXAoeC50aW1lcnMsZnVuY3Rpb24odCl7cmV0dXJuIGU9PT10LmVsZW19KS5sZW5n dGh9KSx4LmZuLm9mZnNldD1mdW5jdGlvbihlKXtpZihhcmd1bWVudHMubGVuZ3Ro KXJldHVybiBlPT09dD90aGlzOnRoaXMuZWFjaChmdW5jdGlvbih0KXt4Lm9mZnNl dC5zZXRPZmZzZXQodGhpcyxlLHQpfSk7dmFyIG4scixvPXt0b3A6MCxsZWZ0OjB9 LGE9dGhpc1swXSxzPWEmJmEub3duZXJEb2N1bWVudDtpZihzKXJldHVybiBuPXMu ZG9jdW1lbnRFbGVtZW50LHguY29udGFpbnMobixhKT8odHlwZW9mIGEuZ2V0Qm91 bmRpbmdDbGllbnRSZWN0IT09aSYmKG89YS5nZXRCb3VuZGluZ0NsaWVudFJlY3Qo KSkscj1vcihzKSx7dG9wOm8udG9wKyhyLnBhZ2VZT2Zmc2V0fHxuLnNjcm9sbFRv cCktKG4uY2xpZW50VG9wfHwwKSxsZWZ0Om8ubGVmdCsoci5wYWdlWE9mZnNldHx8 bi5zY3JvbGxMZWZ0KS0obi5jbGllbnRMZWZ0fHwwKX0pOm99LHgub2Zmc2V0PXtz ZXRPZmZzZXQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXguY3NzKGUsInBvc2l0aW9u Iik7InN0YXRpYyI9PT1yJiYoZS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKTt2 YXIgaT14KGUpLG89aS5vZmZzZXQoKSxhPXguY3NzKGUsInRvcCIpLHM9eC5jc3Mo ZSwibGVmdCIpLGw9KCJhYnNvbHV0ZSI9PT1yfHwiZml4ZWQiPT09cikmJnguaW5B cnJheSgiYXV0byIsW2Esc10pPi0xLHU9e30sYz17fSxwLGY7bD8oYz1pLnBvc2l0 aW9uKCkscD1jLnRvcCxmPWMubGVmdCk6KHA9cGFyc2VGbG9hdChhKXx8MCxmPXBh cnNlRmxvYXQocyl8fDApLHguaXNGdW5jdGlvbih0KSYmKHQ9dC5jYWxsKGUsbixv KSksbnVsbCE9dC50b3AmJih1LnRvcD10LnRvcC1vLnRvcCtwKSxudWxsIT10Lmxl ZnQmJih1LmxlZnQ9dC5sZWZ0LW8ubGVmdCtmKSwidXNpbmciaW4gdD90LnVzaW5n LmNhbGwoZSx1KTppLmNzcyh1KX19LHguZm4uZXh0ZW5kKHtwb3NpdGlvbjpmdW5j dGlvbigpe2lmKHRoaXNbMF0pe3ZhciBlLHQsbj17dG9wOjAsbGVmdDowfSxyPXRo aXNbMF07cmV0dXJuImZpeGVkIj09PXguY3NzKHIsInBvc2l0aW9uIik/dD1yLmdl dEJvdW5kaW5nQ2xpZW50UmVjdCgpOihlPXRoaXMub2Zmc2V0UGFyZW50KCksdD10 aGlzLm9mZnNldCgpLHgubm9kZU5hbWUoZVswXSwiaHRtbCIpfHwobj1lLm9mZnNl dCgpKSxuLnRvcCs9eC5jc3MoZVswXSwiYm9yZGVyVG9wV2lkdGgiLCEwKSxuLmxl ZnQrPXguY3NzKGVbMF0sImJvcmRlckxlZnRXaWR0aCIsITApKSx7dG9wOnQudG9w LW4udG9wLXguY3NzKHIsIm1hcmdpblRvcCIsITApLGxlZnQ6dC5sZWZ0LW4ubGVm dC14LmNzcyhyLCJtYXJnaW5MZWZ0IiwhMCl9fX0sb2Zmc2V0UGFyZW50OmZ1bmN0 aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vZmZz ZXRQYXJlbnR8fHM7d2hpbGUoZSYmIXgubm9kZU5hbWUoZSwiaHRtbCIpJiYic3Rh dGljIj09PXguY3NzKGUsInBvc2l0aW9uIikpZT1lLm9mZnNldFBhcmVudDtyZXR1 cm4gZXx8c30pfX0pLHguZWFjaCh7c2Nyb2xsTGVmdDoicGFnZVhPZmZzZXQiLHNj cm9sbFRvcDoicGFnZVlPZmZzZXQifSxmdW5jdGlvbihlLG4pe3ZhciByPS9ZLy50 ZXN0KG4pO3guZm5bZV09ZnVuY3Rpb24oaSl7cmV0dXJuIHguYWNjZXNzKHRoaXMs ZnVuY3Rpb24oZSxpLG8pe3ZhciBhPW9yKGUpO3JldHVybiBvPT09dD9hP24gaW4g YT9hW25dOmEuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50W2ldOmVbaV06KGE/YS5z Y3JvbGxUbyhyP3goYSkuc2Nyb2xsTGVmdCgpOm8scj9vOngoYSkuc2Nyb2xsVG9w KCkpOmVbaV09byx0KX0sZSxpLGFyZ3VtZW50cy5sZW5ndGgsbnVsbCl9fSk7ZnVu Y3Rpb24gb3IoZSl7cmV0dXJuIHguaXNXaW5kb3coZSk/ZTo5PT09ZS5ub2RlVHlw ZT9lLmRlZmF1bHRWaWV3fHxlLnBhcmVudFdpbmRvdzohMX14LmVhY2goe0hlaWdo dDoiaGVpZ2h0IixXaWR0aDoid2lkdGgifSxmdW5jdGlvbihlLG4pe3guZWFjaCh7 cGFkZGluZzoiaW5uZXIiK2UsY29udGVudDpuLCIiOiJvdXRlciIrZX0sZnVuY3Rp b24ocixpKXt4LmZuW2ldPWZ1bmN0aW9uKGksbyl7dmFyIGE9YXJndW1lbnRzLmxl bmd0aCYmKHJ8fCJib29sZWFuIiE9dHlwZW9mIGkpLHM9cnx8KGk9PT0hMHx8bz09 PSEwPyJtYXJnaW4iOiJib3JkZXIiKTtyZXR1cm4geC5hY2Nlc3ModGhpcyxmdW5j dGlvbihuLHIsaSl7dmFyIG87cmV0dXJuIHguaXNXaW5kb3cobik/bi5kb2N1bWVu dC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrZV06OT09PW4ubm9kZVR5cGU/KG89 bi5kb2N1bWVudEVsZW1lbnQsTWF0aC5tYXgobi5ib2R5WyJzY3JvbGwiK2VdLG9b InNjcm9sbCIrZV0sbi5ib2R5WyJvZmZzZXQiK2VdLG9bIm9mZnNldCIrZV0sb1si Y2xpZW50IitlXSkpOmk9PT10P3guY3NzKG4scixzKTp4LnN0eWxlKG4scixpLHMp fSxuLGE/aTp0LGEsbnVsbCl9fSl9KSx4LmZuLnNpemU9ZnVuY3Rpb24oKXtyZXR1 cm4gdGhpcy5sZW5ndGh9LHguZm4uYW5kU2VsZj14LmZuLmFkZEJhY2ssIm9iamVj dCI9PXR5cGVvZiBtb2R1bGUmJm1vZHVsZSYmIm9iamVjdCI9PXR5cGVvZiBtb2R1 bGUuZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz14OihlLmpRdWVyeT1lLiQ9eCwiZnVu Y3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kJiZkZWZpbmUoImpxdWVy eSIsW10sZnVuY3Rpb24oKXtyZXR1cm4geH0pKX0pKHdpbmRvdyk7Cg== ------------XBLsZq9NkNLk5QAFF8cyEr Content-Disposition: inline; filename=bootstrap.js Content-Type: application/x-javascript; name=bootstrap.js Content-Location: http://www.euroresidentes.com/bootstrap/js/bootstrap.js Content-Transfer-Encoding: Base64 LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09DQogKiBib290c3RyYXAtdHJhbnNpdGlvbi5qcyB2Mi4zLjENCiAqIGh0 dHA6Ly90d2l0dGVyLmdpdGh1Yi5jb20vYm9vdHN0cmFwL2phdmFzY3JpcHQuaHRt bCN0cmFuc2l0aW9ucw0KICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09DQogKiBDb3B5cmlnaHQgMjAxMiBUd2l0dGVy LCBJbmMuDQogKg0KICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNl LCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQogKiB5b3UgbWF5IG5vdCB1 c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu c2UuDQogKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQN CiAqDQogKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y LjANCiAqDQogKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQogKiBkaXN0cmlidXRlZCB1 bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB U0lTLA0KICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5Z IEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQogKiBTZWUgdGhlIExp Y2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlz c2lvbnMgYW5kDQogKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCiAq ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0gKi8NCg0KDQohZnVuY3Rpb24gKCQpIHsNCg0KICAidXNlIHN0 cmljdCI7IC8vIGpzaGludCA7XzsNCg0KDQogIC8qIENTUyBUUkFOU0lUSU9OIFNV UFBPUlQgKGh0dHA6Ly93d3cubW9kZXJuaXpyLmNvbS8pDQogICAqID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0g Ki8NCg0KICAkKGZ1bmN0aW9uICgpIHsNCg0KICAgICQuc3VwcG9ydC50cmFuc2l0 aW9uID0gKGZ1bmN0aW9uICgpIHsNCg0KICAgICAgdmFyIHRyYW5zaXRpb25FbmQg PSAoZnVuY3Rpb24gKCkgew0KDQogICAgICAgIHZhciBlbCA9IGRvY3VtZW50LmNy ZWF0ZUVsZW1lbnQoJ2Jvb3RzdHJhcCcpDQogICAgICAgICAgLCB0cmFuc0VuZEV2 ZW50TmFtZXMgPSB7DQogICAgICAgICAgICAgICAnV2Via2l0VHJhbnNpdGlvbicg OiAnd2Via2l0VHJhbnNpdGlvbkVuZCcNCiAgICAgICAgICAgICwgICdNb3pUcmFu c2l0aW9uJyAgICA6ICd0cmFuc2l0aW9uZW5kJw0KICAgICAgICAgICAgLCAgJ09U cmFuc2l0aW9uJyAgICAgIDogJ29UcmFuc2l0aW9uRW5kIG90cmFuc2l0aW9uZW5k Jw0KICAgICAgICAgICAgLCAgJ3RyYW5zaXRpb24nICAgICAgIDogJ3RyYW5zaXRp b25lbmQnDQogICAgICAgICAgICB9DQogICAgICAgICAgLCBuYW1lDQoNCiAgICAg ICAgZm9yIChuYW1lIGluIHRyYW5zRW5kRXZlbnROYW1lcyl7DQogICAgICAgICAg aWYgKGVsLnN0eWxlW25hbWVdICE9PSB1bmRlZmluZWQpIHsNCiAgICAgICAgICAg IHJldHVybiB0cmFuc0VuZEV2ZW50TmFtZXNbbmFtZV0NCiAgICAgICAgICB9DQog ICAgICAgIH0NCg0KICAgICAgfSgpKQ0KDQogICAgICByZXR1cm4gdHJhbnNpdGlv bkVuZCAmJiB7DQogICAgICAgIGVuZDogdHJhbnNpdGlvbkVuZA0KICAgICAgfQ0K DQogICAgfSkoKQ0KDQogIH0pDQoNCn0od2luZG93LmpRdWVyeSk7LyogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQ0KICogYm9vdHN0cmFwLWFsZXJ0LmpzIHYyLjMuMQ0KICogaHR0cDovL3R3 aXR0ZXIuZ2l0aHViLmNvbS9ib290c3RyYXAvamF2YXNjcmlwdC5odG1sI2FsZXJ0 cw0KICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQ0KICogQ29weXJpZ2h0IDIwMTIgVHdpdHRlciwgSW5j Lg0KICoNCiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KICogeW91IG1heSBub3QgdXNlIHRo aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0K ICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQogKg0K ICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQog Kg0KICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KICogZGlzdHJpYnV0ZWQgdW5kZXIg dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywN CiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5E LCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KICogU2VlIHRoZSBMaWNlbnNl IGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25z IGFuZA0KICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQogKiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09ICovDQoNCg0KIWZ1bmN0aW9uICgkKSB7DQoNCiAgInVzZSBzdHJpY3Qi OyAvLyBqc2hpbnQgO187DQoNCg0KIC8qIEFMRVJUIENMQVNTIERFRklOSVRJT04N CiAgKiA9PT09PT09PT09PT09PT09PT09PT09ICovDQoNCiAgdmFyIGRpc21pc3Mg PSAnW2RhdGEtZGlzbWlzcz0iYWxlcnQiXScNCiAgICAsIEFsZXJ0ID0gZnVuY3Rp b24gKGVsKSB7DQogICAgICAgICQoZWwpLm9uKCdjbGljaycsIGRpc21pc3MsIHRo aXMuY2xvc2UpDQogICAgICB9DQoNCiAgQWxlcnQucHJvdG90eXBlLmNsb3NlID0g ZnVuY3Rpb24gKGUpIHsNCiAgICB2YXIgJHRoaXMgPSAkKHRoaXMpDQogICAgICAs IHNlbGVjdG9yID0gJHRoaXMuYXR0cignZGF0YS10YXJnZXQnKQ0KICAgICAgLCAk cGFyZW50DQoNCiAgICBpZiAoIXNlbGVjdG9yKSB7DQogICAgICBzZWxlY3RvciA9 ICR0aGlzLmF0dHIoJ2hyZWYnKQ0KICAgICAgc2VsZWN0b3IgPSBzZWxlY3RvciAm JiBzZWxlY3Rvci5yZXBsYWNlKC8uKig/PSNbXlxzXSokKS8sICcnKSAvL3N0cmlw IGZvciBpZTcNCiAgICB9DQoNCiAgICAkcGFyZW50ID0gJChzZWxlY3RvcikNCg0K ICAgIGUgJiYgZS5wcmV2ZW50RGVmYXVsdCgpDQoNCiAgICAkcGFyZW50Lmxlbmd0 aCB8fCAoJHBhcmVudCA9ICR0aGlzLmhhc0NsYXNzKCdhbGVydCcpID8gJHRoaXMg OiAkdGhpcy5wYXJlbnQoKSkNCg0KICAgICRwYXJlbnQudHJpZ2dlcihlID0gJC5F dmVudCgnY2xvc2UnKSkNCg0KICAgIGlmIChlLmlzRGVmYXVsdFByZXZlbnRlZCgp KSByZXR1cm4NCg0KICAgICRwYXJlbnQucmVtb3ZlQ2xhc3MoJ2luJykNCg0KICAg IGZ1bmN0aW9uIHJlbW92ZUVsZW1lbnQoKSB7DQogICAgICAkcGFyZW50DQogICAg ICAgIC50cmlnZ2VyKCdjbG9zZWQnKQ0KICAgICAgICAucmVtb3ZlKCkNCiAgICB9 DQoNCiAgICAkLnN1cHBvcnQudHJhbnNpdGlvbiAmJiAkcGFyZW50Lmhhc0NsYXNz KCdmYWRlJykgPw0KICAgICAgJHBhcmVudC5vbigkLnN1cHBvcnQudHJhbnNpdGlv bi5lbmQsIHJlbW92ZUVsZW1lbnQpIDoNCiAgICAgIHJlbW92ZUVsZW1lbnQoKQ0K ICB9DQoNCg0KIC8qIEFMRVJUIFBMVUdJTiBERUZJTklUSU9ODQogICogPT09PT09 PT09PT09PT09PT09PT09PT0gKi8NCg0KICB2YXIgb2xkID0gJC5mbi5hbGVydA0K DQogICQuZm4uYWxlcnQgPSBmdW5jdGlvbiAob3B0aW9uKSB7DQogICAgcmV0dXJu IHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7DQogICAgICB2YXIgJHRoaXMgPSAkKHRo aXMpDQogICAgICAgICwgZGF0YSA9ICR0aGlzLmRhdGEoJ2FsZXJ0JykNCiAgICAg IGlmICghZGF0YSkgJHRoaXMuZGF0YSgnYWxlcnQnLCAoZGF0YSA9IG5ldyBBbGVy dCh0aGlzKSkpDQogICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PSAnc3RyaW5nJykg ZGF0YVtvcHRpb25dLmNhbGwoJHRoaXMpDQogICAgfSkNCiAgfQ0KDQogICQuZm4u YWxlcnQuQ29uc3RydWN0b3IgPSBBbGVydA0KDQoNCiAvKiBBTEVSVCBOTyBDT05G TElDVA0KICAqID09PT09PT09PT09PT09PT09ICovDQoNCiAgJC5mbi5hbGVydC5u b0NvbmZsaWN0ID0gZnVuY3Rpb24gKCkgew0KICAgICQuZm4uYWxlcnQgPSBvbGQN CiAgICByZXR1cm4gdGhpcw0KICB9DQoNCg0KIC8qIEFMRVJUIERBVEEtQVBJDQog ICogPT09PT09PT09PT09PT0gKi8NCg0KICAkKGRvY3VtZW50KS5vbignY2xpY2su YWxlcnQuZGF0YS1hcGknLCBkaXNtaXNzLCBBbGVydC5wcm90b3R5cGUuY2xvc2Up DQoNCn0od2luZG93LmpRdWVyeSk7LyogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogKiBib290c3Ry YXAtYnV0dG9uLmpzIHYyLjMuMQ0KICogaHR0cDovL3R3aXR0ZXIuZ2l0aHViLmNv bS9ib290c3RyYXAvamF2YXNjcmlwdC5odG1sI2J1dHRvbnMNCiAqID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQ0KICogQ29weXJpZ2h0IDIwMTIgVHdpdHRlciwgSW5jLg0KICoNCiAqIExp Y2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRo ZSAiTGljZW5zZSIpOw0KICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KICogWW91IG1heSBv YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQogKg0KICogaHR0cDovL3d3 dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQogKg0KICogVW5sZXNz IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0 aW5nLCBzb2Z0d2FyZQ0KICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCiAqIFdJVEhPVVQg V0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhw cmVzcyBvciBpbXBsaWVkLg0KICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3Bl Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KICogbGlt aXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQogKiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8N Cg0KDQohZnVuY3Rpb24gKCQpIHsNCg0KICAidXNlIHN0cmljdCI7IC8vIGpzaGlu dCA7XzsNCg0KDQogLyogQlVUVE9OIFBVQkxJQyBDTEFTUyBERUZJTklUSU9ODQog ICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovDQoNCiAgdmFyIEJ1 dHRvbiA9IGZ1bmN0aW9uIChlbGVtZW50LCBvcHRpb25zKSB7DQogICAgdGhpcy4k ZWxlbWVudCA9ICQoZWxlbWVudCkNCiAgICB0aGlzLm9wdGlvbnMgPSAkLmV4dGVu ZCh7fSwgJC5mbi5idXR0b24uZGVmYXVsdHMsIG9wdGlvbnMpDQogIH0NCg0KICBC dXR0b24ucHJvdG90eXBlLnNldFN0YXRlID0gZnVuY3Rpb24gKHN0YXRlKSB7DQog ICAgdmFyIGQgPSAnZGlzYWJsZWQnDQogICAgICAsICRlbCA9IHRoaXMuJGVsZW1l bnQNCiAgICAgICwgZGF0YSA9ICRlbC5kYXRhKCkNCiAgICAgICwgdmFsID0gJGVs LmlzKCdpbnB1dCcpID8gJ3ZhbCcgOiAnaHRtbCcNCg0KICAgIHN0YXRlID0gc3Rh dGUgKyAnVGV4dCcNCiAgICBkYXRhLnJlc2V0VGV4dCB8fCAkZWwuZGF0YSgncmVz ZXRUZXh0JywgJGVsW3ZhbF0oKSkNCg0KICAgICRlbFt2YWxdKGRhdGFbc3RhdGVd IHx8IHRoaXMub3B0aW9uc1tzdGF0ZV0pDQoNCiAgICAvLyBwdXNoIHRvIGV2ZW50 IGxvb3AgdG8gYWxsb3cgZm9ybXMgdG8gc3VibWl0DQogICAgc2V0VGltZW91dChm dW5jdGlvbiAoKSB7DQogICAgICBzdGF0ZSA9PSAnbG9hZGluZ1RleHQnID8NCiAg ICAgICAgJGVsLmFkZENsYXNzKGQpLmF0dHIoZCwgZCkgOg0KICAgICAgICAkZWwu cmVtb3ZlQ2xhc3MoZCkucmVtb3ZlQXR0cihkKQ0KICAgIH0sIDApDQogIH0NCg0K ICBCdXR0b24ucHJvdG90eXBlLnRvZ2dsZSA9IGZ1bmN0aW9uICgpIHsNCiAgICB2 YXIgJHBhcmVudCA9IHRoaXMuJGVsZW1lbnQuY2xvc2VzdCgnW2RhdGEtdG9nZ2xl PSJidXR0b25zLXJhZGlvIl0nKQ0KDQogICAgJHBhcmVudCAmJiAkcGFyZW50DQog ICAgICAuZmluZCgnLmFjdGl2ZScpDQogICAgICAucmVtb3ZlQ2xhc3MoJ2FjdGl2 ZScpDQoNCiAgICB0aGlzLiRlbGVtZW50LnRvZ2dsZUNsYXNzKCdhY3RpdmUnKQ0K ICB9DQoNCg0KIC8qIEJVVFRPTiBQTFVHSU4gREVGSU5JVElPTg0KICAqID09PT09 PT09PT09PT09PT09PT09PT09PSAqLw0KDQogIHZhciBvbGQgPSAkLmZuLmJ1dHRv bg0KDQogICQuZm4uYnV0dG9uID0gZnVuY3Rpb24gKG9wdGlvbikgew0KICAgIHJl dHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkgew0KICAgICAgdmFyICR0aGlzID0g JCh0aGlzKQ0KICAgICAgICAsIGRhdGEgPSAkdGhpcy5kYXRhKCdidXR0b24nKQ0K ICAgICAgICAsIG9wdGlvbnMgPSB0eXBlb2Ygb3B0aW9uID09ICdvYmplY3QnICYm IG9wdGlvbg0KICAgICAgaWYgKCFkYXRhKSAkdGhpcy5kYXRhKCdidXR0b24nLCAo ZGF0YSA9IG5ldyBCdXR0b24odGhpcywgb3B0aW9ucykpKQ0KICAgICAgaWYgKG9w dGlvbiA9PSAndG9nZ2xlJykgZGF0YS50b2dnbGUoKQ0KICAgICAgZWxzZSBpZiAo b3B0aW9uKSBkYXRhLnNldFN0YXRlKG9wdGlvbikNCiAgICB9KQ0KICB9DQoNCiAg JC5mbi5idXR0b24uZGVmYXVsdHMgPSB7DQogICAgbG9hZGluZ1RleHQ6ICdsb2Fk aW5nLi4uJw0KICB9DQoNCiAgJC5mbi5idXR0b24uQ29uc3RydWN0b3IgPSBCdXR0 b24NCg0KDQogLyogQlVUVE9OIE5PIENPTkZMSUNUDQogICogPT09PT09PT09PT09 PT09PT09ICovDQoNCiAgJC5mbi5idXR0b24ubm9Db25mbGljdCA9IGZ1bmN0aW9u ICgpIHsNCiAgICAkLmZuLmJ1dHRvbiA9IG9sZA0KICAgIHJldHVybiB0aGlzDQog IH0NCg0KDQogLyogQlVUVE9OIERBVEEtQVBJDQogICogPT09PT09PT09PT09PT09 ICovDQoNCiAgJChkb2N1bWVudCkub24oJ2NsaWNrLmJ1dHRvbi5kYXRhLWFwaScs ICdbZGF0YS10b2dnbGVePWJ1dHRvbl0nLCBmdW5jdGlvbiAoZSkgew0KICAgIHZh ciAkYnRuID0gJChlLnRhcmdldCkNCiAgICBpZiAoISRidG4uaGFzQ2xhc3MoJ2J0 bicpKSAkYnRuID0gJGJ0bi5jbG9zZXN0KCcuYnRuJykNCiAgICAkYnRuLmJ1dHRv bigndG9nZ2xlJykNCiAgfSkNCg0KfSh3aW5kb3cualF1ZXJ5KTsvKiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09DQogKiBib290c3RyYXAtY2Fyb3VzZWwuanMgdjIuMy4xDQogKiBodHRwOi8v dHdpdHRlci5naXRodWIuY29tL2Jvb3RzdHJhcC9qYXZhc2NyaXB0Lmh0bWwjY2Fy b3VzZWwNCiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0NCiAqIENvcHlyaWdodCAyMDEyIFR3aXR0ZXIs IEluYy4NCiAqDQogKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2Us IFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCiAqIHlvdSBtYXkgbm90IHVz ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z ZS4NCiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0K ICoNCiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu MA0KICoNCiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCiAqIGRpc3RyaWJ1dGVkIHVu ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT SVMsDQogKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkg S0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCiAqIFNlZSB0aGUgTGlj ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz aW9ucyBhbmQNCiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KICog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PSAqLw0KDQoNCiFmdW5jdGlvbiAoJCkgew0KDQogICJ1c2Ugc3Ry aWN0IjsgLy8ganNoaW50IDtfOw0KDQoNCiAvKiBDQVJPVVNFTCBDTEFTUyBERUZJ TklUSU9ODQogICogPT09PT09PT09PT09PT09PT09PT09PT09PSAqLw0KDQogIHZh ciBDYXJvdXNlbCA9IGZ1bmN0aW9uIChlbGVtZW50LCBvcHRpb25zKSB7DQogICAg dGhpcy4kZWxlbWVudCA9ICQoZWxlbWVudCkNCiAgICB0aGlzLiRpbmRpY2F0b3Jz ID0gdGhpcy4kZWxlbWVudC5maW5kKCcuY2Fyb3VzZWwtaW5kaWNhdG9ycycpDQog ICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucw0KICAgIHRoaXMub3B0aW9ucy5wYXVz ZSA9PSAnaG92ZXInICYmIHRoaXMuJGVsZW1lbnQNCiAgICAgIC5vbignbW91c2Vl bnRlcicsICQucHJveHkodGhpcy5wYXVzZSwgdGhpcykpDQogICAgICAub24oJ21v dXNlbGVhdmUnLCAkLnByb3h5KHRoaXMuY3ljbGUsIHRoaXMpKQ0KICB9DQoNCiAg Q2Fyb3VzZWwucHJvdG90eXBlID0gew0KDQogICAgY3ljbGU6IGZ1bmN0aW9uIChl KSB7DQogICAgICBpZiAoIWUpIHRoaXMucGF1c2VkID0gZmFsc2UNCiAgICAgIGlm ICh0aGlzLmludGVydmFsKSBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpOw0K ICAgICAgdGhpcy5vcHRpb25zLmludGVydmFsDQogICAgICAgICYmICF0aGlzLnBh dXNlZA0KICAgICAgICAmJiAodGhpcy5pbnRlcnZhbCA9IHNldEludGVydmFsKCQu cHJveHkodGhpcy5uZXh0LCB0aGlzKSwgdGhpcy5vcHRpb25zLmludGVydmFsKSkN CiAgICAgIHJldHVybiB0aGlzDQogICAgfQ0KDQogICwgZ2V0QWN0aXZlSW5kZXg6 IGZ1bmN0aW9uICgpIHsNCiAgICAgIHRoaXMuJGFjdGl2ZSA9IHRoaXMuJGVsZW1l bnQuZmluZCgnLml0ZW0uYWN0aXZlJykNCiAgICAgIHRoaXMuJGl0ZW1zID0gdGhp cy4kYWN0aXZlLnBhcmVudCgpLmNoaWxkcmVuKCkNCiAgICAgIHJldHVybiB0aGlz LiRpdGVtcy5pbmRleCh0aGlzLiRhY3RpdmUpDQogICAgfQ0KDQogICwgdG86IGZ1 bmN0aW9uIChwb3MpIHsNCiAgICAgIHZhciBhY3RpdmVJbmRleCA9IHRoaXMuZ2V0 QWN0aXZlSW5kZXgoKQ0KICAgICAgICAsIHRoYXQgPSB0aGlzDQoNCiAgICAgIGlm IChwb3MgPiAodGhpcy4kaXRlbXMubGVuZ3RoIC0gMSkgfHwgcG9zIDwgMCkgcmV0 dXJuDQoNCiAgICAgIGlmICh0aGlzLnNsaWRpbmcpIHsNCiAgICAgICAgcmV0dXJu IHRoaXMuJGVsZW1lbnQub25lKCdzbGlkJywgZnVuY3Rpb24gKCkgew0KICAgICAg ICAgIHRoYXQudG8ocG9zKQ0KICAgICAgICB9KQ0KICAgICAgfQ0KDQogICAgICBp ZiAoYWN0aXZlSW5kZXggPT0gcG9zKSB7DQogICAgICAgIHJldHVybiB0aGlzLnBh dXNlKCkuY3ljbGUoKQ0KICAgICAgfQ0KDQogICAgICByZXR1cm4gdGhpcy5zbGlk ZShwb3MgPiBhY3RpdmVJbmRleCA/ICduZXh0JyA6ICdwcmV2JywgJCh0aGlzLiRp dGVtc1twb3NdKSkNCiAgICB9DQoNCiAgLCBwYXVzZTogZnVuY3Rpb24gKGUpIHsN CiAgICAgIGlmICghZSkgdGhpcy5wYXVzZWQgPSB0cnVlDQogICAgICBpZiAodGhp cy4kZWxlbWVudC5maW5kKCcubmV4dCwgLnByZXYnKS5sZW5ndGggJiYgJC5zdXBw b3J0LnRyYW5zaXRpb24uZW5kKSB7DQogICAgICAgIHRoaXMuJGVsZW1lbnQudHJp Z2dlcigkLnN1cHBvcnQudHJhbnNpdGlvbi5lbmQpDQogICAgICAgIHRoaXMuY3lj bGUodHJ1ZSkNCiAgICAgIH0NCiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRl cnZhbCkNCiAgICAgIHRoaXMuaW50ZXJ2YWwgPSBudWxsDQogICAgICByZXR1cm4g dGhpcw0KICAgIH0NCg0KICAsIG5leHQ6IGZ1bmN0aW9uICgpIHsNCiAgICAgIGlm ICh0aGlzLnNsaWRpbmcpIHJldHVybg0KICAgICAgcmV0dXJuIHRoaXMuc2xpZGUo J25leHQnKQ0KICAgIH0NCg0KICAsIHByZXY6IGZ1bmN0aW9uICgpIHsNCiAgICAg IGlmICh0aGlzLnNsaWRpbmcpIHJldHVybg0KICAgICAgcmV0dXJuIHRoaXMuc2xp ZGUoJ3ByZXYnKQ0KICAgIH0NCg0KICAsIHNsaWRlOiBmdW5jdGlvbiAodHlwZSwg bmV4dCkgew0KICAgICAgdmFyICRhY3RpdmUgPSB0aGlzLiRlbGVtZW50LmZpbmQo Jy5pdGVtLmFjdGl2ZScpDQogICAgICAgICwgJG5leHQgPSBuZXh0IHx8ICRhY3Rp dmVbdHlwZV0oKQ0KICAgICAgICAsIGlzQ3ljbGluZyA9IHRoaXMuaW50ZXJ2YWwN CiAgICAgICAgLCBkaXJlY3Rpb24gPSB0eXBlID09ICduZXh0JyA/ICdsZWZ0JyA6 ICdyaWdodCcNCiAgICAgICAgLCBmYWxsYmFjayAgPSB0eXBlID09ICduZXh0JyA/ ICdmaXJzdCcgOiAnbGFzdCcNCiAgICAgICAgLCB0aGF0ID0gdGhpcw0KICAgICAg ICAsIGUNCg0KICAgICAgdGhpcy5zbGlkaW5nID0gdHJ1ZQ0KDQogICAgICBpc0N5 Y2xpbmcgJiYgdGhpcy5wYXVzZSgpDQoNCiAgICAgICRuZXh0ID0gJG5leHQubGVu Z3RoID8gJG5leHQgOiB0aGlzLiRlbGVtZW50LmZpbmQoJy5pdGVtJylbZmFsbGJh Y2tdKCkNCg0KICAgICAgZSA9ICQuRXZlbnQoJ3NsaWRlJywgew0KICAgICAgICBy ZWxhdGVkVGFyZ2V0OiAkbmV4dFswXQ0KICAgICAgLCBkaXJlY3Rpb246IGRpcmVj dGlvbg0KICAgICAgfSkNCg0KICAgICAgaWYgKCRuZXh0Lmhhc0NsYXNzKCdhY3Rp dmUnKSkgcmV0dXJuDQoNCiAgICAgIGlmICh0aGlzLiRpbmRpY2F0b3JzLmxlbmd0 aCkgew0KICAgICAgICB0aGlzLiRpbmRpY2F0b3JzLmZpbmQoJy5hY3RpdmUnKS5y ZW1vdmVDbGFzcygnYWN0aXZlJykNCiAgICAgICAgdGhpcy4kZWxlbWVudC5vbmUo J3NsaWQnLCBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgdmFyICRuZXh0SW5kaWNh dG9yID0gJCh0aGF0LiRpbmRpY2F0b3JzLmNoaWxkcmVuKClbdGhhdC5nZXRBY3Rp dmVJbmRleCgpXSkNCiAgICAgICAgICAkbmV4dEluZGljYXRvciAmJiAkbmV4dElu ZGljYXRvci5hZGRDbGFzcygnYWN0aXZlJykNCiAgICAgICAgfSkNCiAgICAgIH0N Cg0KICAgICAgaWYgKCQuc3VwcG9ydC50cmFuc2l0aW9uICYmIHRoaXMuJGVsZW1l bnQuaGFzQ2xhc3MoJ3NsaWRlJykpIHsNCiAgICAgICAgdGhpcy4kZWxlbWVudC50 cmlnZ2VyKGUpDQogICAgICAgIGlmIChlLmlzRGVmYXVsdFByZXZlbnRlZCgpKSBy ZXR1cm4NCiAgICAgICAgJG5leHQuYWRkQ2xhc3ModHlwZSkNCiAgICAgICAgJG5l eHRbMF0ub2Zmc2V0V2lkdGggLy8gZm9yY2UgcmVmbG93DQogICAgICAgICRhY3Rp dmUuYWRkQ2xhc3MoZGlyZWN0aW9uKQ0KICAgICAgICAkbmV4dC5hZGRDbGFzcyhk aXJlY3Rpb24pDQogICAgICAgIHRoaXMuJGVsZW1lbnQub25lKCQuc3VwcG9ydC50 cmFuc2l0aW9uLmVuZCwgZnVuY3Rpb24gKCkgew0KICAgICAgICAgICRuZXh0LnJl bW92ZUNsYXNzKFt0eXBlLCBkaXJlY3Rpb25dLmpvaW4oJyAnKSkuYWRkQ2xhc3Mo J2FjdGl2ZScpDQogICAgICAgICAgJGFjdGl2ZS5yZW1vdmVDbGFzcyhbJ2FjdGl2 ZScsIGRpcmVjdGlvbl0uam9pbignICcpKQ0KICAgICAgICAgIHRoYXQuc2xpZGlu ZyA9IGZhbHNlDQogICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHRo YXQuJGVsZW1lbnQudHJpZ2dlcignc2xpZCcpIH0sIDApDQogICAgICAgIH0pDQog ICAgICB9IGVsc2Ugew0KICAgICAgICB0aGlzLiRlbGVtZW50LnRyaWdnZXIoZSkN CiAgICAgICAgaWYgKGUuaXNEZWZhdWx0UHJldmVudGVkKCkpIHJldHVybg0KICAg ICAgICAkYWN0aXZlLnJlbW92ZUNsYXNzKCdhY3RpdmUnKQ0KICAgICAgICAkbmV4 dC5hZGRDbGFzcygnYWN0aXZlJykNCiAgICAgICAgdGhpcy5zbGlkaW5nID0gZmFs c2UNCiAgICAgICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKCdzbGlkJykNCiAgICAg IH0NCg0KICAgICAgaXNDeWNsaW5nICYmIHRoaXMuY3ljbGUoKQ0KDQogICAgICBy ZXR1cm4gdGhpcw0KICAgIH0NCg0KICB9DQoNCg0KIC8qIENBUk9VU0VMIFBMVUdJ TiBERUZJTklUSU9ODQogICogPT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8N Cg0KICB2YXIgb2xkID0gJC5mbi5jYXJvdXNlbA0KDQogICQuZm4uY2Fyb3VzZWwg PSBmdW5jdGlvbiAob3B0aW9uKSB7DQogICAgcmV0dXJuIHRoaXMuZWFjaChmdW5j dGlvbiAoKSB7DQogICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpDQogICAgICAgICwg ZGF0YSA9ICR0aGlzLmRhdGEoJ2Nhcm91c2VsJykNCiAgICAgICAgLCBvcHRpb25z ID0gJC5leHRlbmQoe30sICQuZm4uY2Fyb3VzZWwuZGVmYXVsdHMsIHR5cGVvZiBv cHRpb24gPT0gJ29iamVjdCcgJiYgb3B0aW9uKQ0KICAgICAgICAsIGFjdGlvbiA9 IHR5cGVvZiBvcHRpb24gPT0gJ3N0cmluZycgPyBvcHRpb24gOiBvcHRpb25zLnNs aWRlDQogICAgICBpZiAoIWRhdGEpICR0aGlzLmRhdGEoJ2Nhcm91c2VsJywgKGRh dGEgPSBuZXcgQ2Fyb3VzZWwodGhpcywgb3B0aW9ucykpKQ0KICAgICAgaWYgKHR5 cGVvZiBvcHRpb24gPT0gJ251bWJlcicpIGRhdGEudG8ob3B0aW9uKQ0KICAgICAg ZWxzZSBpZiAoYWN0aW9uKSBkYXRhW2FjdGlvbl0oKQ0KICAgICAgZWxzZSBpZiAo b3B0aW9ucy5pbnRlcnZhbCkgZGF0YS5wYXVzZSgpLmN5Y2xlKCkNCiAgICB9KQ0K ICB9DQoNCiAgJC5mbi5jYXJvdXNlbC5kZWZhdWx0cyA9IHsNCiAgICBpbnRlcnZh bDogNTAwMA0KICAsIHBhdXNlOiAnaG92ZXInDQogIH0NCg0KICAkLmZuLmNhcm91 c2VsLkNvbnN0cnVjdG9yID0gQ2Fyb3VzZWwNCg0KDQogLyogQ0FST1VTRUwgTk8g Q09ORkxJQ1QNCiAgKiA9PT09PT09PT09PT09PT09PT09PSAqLw0KDQogICQuZm4u Y2Fyb3VzZWwubm9Db25mbGljdCA9IGZ1bmN0aW9uICgpIHsNCiAgICAkLmZuLmNh cm91c2VsID0gb2xkDQogICAgcmV0dXJuIHRoaXMNCiAgfQ0KDQogLyogQ0FST1VT RUwgREFUQS1BUEkNCiAgKiA9PT09PT09PT09PT09PT09PSAqLw0KDQogICQoZG9j dW1lbnQpLm9uKCdjbGljay5jYXJvdXNlbC5kYXRhLWFwaScsICdbZGF0YS1zbGlk ZV0sIFtkYXRhLXNsaWRlLXRvXScsIGZ1bmN0aW9uIChlKSB7DQogICAgdmFyICR0 aGlzID0gJCh0aGlzKSwgaHJlZg0KICAgICAgLCAkdGFyZ2V0ID0gJCgkdGhpcy5h dHRyKCdkYXRhLXRhcmdldCcpIHx8IChocmVmID0gJHRoaXMuYXR0cignaHJlZicp KSAmJiBocmVmLnJlcGxhY2UoLy4qKD89I1teXHNdKyQpLywgJycpKSAvL3N0cmlw IGZvciBpZTcNCiAgICAgICwgb3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCAkdGFyZ2V0 LmRhdGEoKSwgJHRoaXMuZGF0YSgpKQ0KICAgICAgLCBzbGlkZUluZGV4DQoNCiAg ICAkdGFyZ2V0LmNhcm91c2VsKG9wdGlvbnMpDQoNCiAgICBpZiAoc2xpZGVJbmRl eCA9ICR0aGlzLmF0dHIoJ2RhdGEtc2xpZGUtdG8nKSkgew0KICAgICAgJHRhcmdl dC5kYXRhKCdjYXJvdXNlbCcpLnBhdXNlKCkudG8oc2xpZGVJbmRleCkuY3ljbGUo KQ0KICAgIH0NCg0KICAgIGUucHJldmVudERlZmF1bHQoKQ0KICB9KQ0KDQp9KHdp bmRvdy5qUXVlcnkpOy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiAqIGJvb3RzdHJhcC1jb2xs YXBzZS5qcyB2Mi4zLjENCiAqIGh0dHA6Ly90d2l0dGVyLmdpdGh1Yi5jb20vYm9v dHN0cmFwL2phdmFzY3JpcHQuaHRtbCNjb2xsYXBzZQ0KICogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQ0KICogQ29weXJpZ2h0IDIwMTIgVHdpdHRlciwgSW5jLg0KICoNCiAqIExpY2Vu c2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi TGljZW5zZSIpOw0KICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KICogWW91IG1heSBvYnRh aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQogKg0KICogaHR0cDovL3d3dy5h cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQogKg0KICogVW5sZXNzIHJl cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n LCBzb2Z0d2FyZQ0KICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCiAqIFdJVEhPVVQgV0FS UkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVz cyBvciBpbXBsaWVkLg0KICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lm aWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KICogbGltaXRh dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQogKiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8NCg0K DQohZnVuY3Rpb24gKCQpIHsNCg0KICAidXNlIHN0cmljdCI7IC8vIGpzaGludCA7 XzsNCg0KDQogLyogQ09MTEFQU0UgUFVCTElDIENMQVNTIERFRklOSVRJT04NCiAg KiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLw0KDQogIHZhciBD b2xsYXBzZSA9IGZ1bmN0aW9uIChlbGVtZW50LCBvcHRpb25zKSB7DQogICAgdGhp cy4kZWxlbWVudCA9ICQoZWxlbWVudCkNCiAgICB0aGlzLm9wdGlvbnMgPSAkLmV4 dGVuZCh7fSwgJC5mbi5jb2xsYXBzZS5kZWZhdWx0cywgb3B0aW9ucykNCg0KICAg IGlmICh0aGlzLm9wdGlvbnMucGFyZW50KSB7DQogICAgICB0aGlzLiRwYXJlbnQg PSAkKHRoaXMub3B0aW9ucy5wYXJlbnQpDQogICAgfQ0KDQogICAgdGhpcy5vcHRp b25zLnRvZ2dsZSAmJiB0aGlzLnRvZ2dsZSgpDQogIH0NCg0KICBDb2xsYXBzZS5w cm90b3R5cGUgPSB7DQoNCiAgICBjb25zdHJ1Y3RvcjogQ29sbGFwc2UNCg0KICAs IGRpbWVuc2lvbjogZnVuY3Rpb24gKCkgew0KICAgICAgdmFyIGhhc1dpZHRoID0g dGhpcy4kZWxlbWVudC5oYXNDbGFzcygnd2lkdGgnKQ0KICAgICAgcmV0dXJuIGhh c1dpZHRoID8gJ3dpZHRoJyA6ICdoZWlnaHQnDQogICAgfQ0KDQogICwgc2hvdzog ZnVuY3Rpb24gKCkgew0KICAgICAgdmFyIGRpbWVuc2lvbg0KICAgICAgICAsIHNj cm9sbA0KICAgICAgICAsIGFjdGl2ZXMNCiAgICAgICAgLCBoYXNEYXRhDQoNCiAg ICAgIGlmICh0aGlzLnRyYW5zaXRpb25pbmcgfHwgdGhpcy4kZWxlbWVudC5oYXND bGFzcygnaW4nKSkgcmV0dXJuDQoNCiAgICAgIGRpbWVuc2lvbiA9IHRoaXMuZGlt ZW5zaW9uKCkNCiAgICAgIHNjcm9sbCA9ICQuY2FtZWxDYXNlKFsnc2Nyb2xsJywg ZGltZW5zaW9uXS5qb2luKCctJykpDQogICAgICBhY3RpdmVzID0gdGhpcy4kcGFy ZW50ICYmIHRoaXMuJHBhcmVudC5maW5kKCc+IC5hY2NvcmRpb24tZ3JvdXAgPiAu aW4nKQ0KDQogICAgICBpZiAoYWN0aXZlcyAmJiBhY3RpdmVzLmxlbmd0aCkgew0K ICAgICAgICBoYXNEYXRhID0gYWN0aXZlcy5kYXRhKCdjb2xsYXBzZScpDQogICAg ICAgIGlmIChoYXNEYXRhICYmIGhhc0RhdGEudHJhbnNpdGlvbmluZykgcmV0dXJu DQogICAgICAgIGFjdGl2ZXMuY29sbGFwc2UoJ2hpZGUnKQ0KICAgICAgICBoYXNE YXRhIHx8IGFjdGl2ZXMuZGF0YSgnY29sbGFwc2UnLCBudWxsKQ0KICAgICAgfQ0K DQogICAgICB0aGlzLiRlbGVtZW50W2RpbWVuc2lvbl0oMCkNCiAgICAgIHRoaXMu dHJhbnNpdGlvbignYWRkQ2xhc3MnLCAkLkV2ZW50KCdzaG93JyksICdzaG93bicp DQogICAgICAkLnN1cHBvcnQudHJhbnNpdGlvbiAmJiB0aGlzLiRlbGVtZW50W2Rp bWVuc2lvbl0odGhpcy4kZWxlbWVudFswXVtzY3JvbGxdKQ0KICAgIH0NCg0KICAs IGhpZGU6IGZ1bmN0aW9uICgpIHsNCiAgICAgIHZhciBkaW1lbnNpb24NCiAgICAg IGlmICh0aGlzLnRyYW5zaXRpb25pbmcgfHwgIXRoaXMuJGVsZW1lbnQuaGFzQ2xh c3MoJ2luJykpIHJldHVybg0KICAgICAgZGltZW5zaW9uID0gdGhpcy5kaW1lbnNp b24oKQ0KICAgICAgdGhpcy5yZXNldCh0aGlzLiRlbGVtZW50W2RpbWVuc2lvbl0o KSkNCiAgICAgIHRoaXMudHJhbnNpdGlvbigncmVtb3ZlQ2xhc3MnLCAkLkV2ZW50 KCdoaWRlJyksICdoaWRkZW4nKQ0KICAgICAgdGhpcy4kZWxlbWVudFtkaW1lbnNp b25dKDApDQogICAgfQ0KDQogICwgcmVzZXQ6IGZ1bmN0aW9uIChzaXplKSB7DQog ICAgICB2YXIgZGltZW5zaW9uID0gdGhpcy5kaW1lbnNpb24oKQ0KDQogICAgICB0 aGlzLiRlbGVtZW50DQogICAgICAgIC5yZW1vdmVDbGFzcygnY29sbGFwc2UnKQ0K ICAgICAgICBbZGltZW5zaW9uXShzaXplIHx8ICdhdXRvJykNCiAgICAgICAgWzBd Lm9mZnNldFdpZHRoDQoNCiAgICAgIHRoaXMuJGVsZW1lbnRbc2l6ZSAhPT0gbnVs bCA/ICdhZGRDbGFzcycgOiAncmVtb3ZlQ2xhc3MnXSgnY29sbGFwc2UnKQ0KDQog ICAgICByZXR1cm4gdGhpcw0KICAgIH0NCg0KICAsIHRyYW5zaXRpb246IGZ1bmN0 aW9uIChtZXRob2QsIHN0YXJ0RXZlbnQsIGNvbXBsZXRlRXZlbnQpIHsNCiAgICAg IHZhciB0aGF0ID0gdGhpcw0KICAgICAgICAsIGNvbXBsZXRlID0gZnVuY3Rpb24g KCkgew0KICAgICAgICAgICAgaWYgKHN0YXJ0RXZlbnQudHlwZSA9PSAnc2hvdycp IHRoYXQucmVzZXQoKQ0KICAgICAgICAgICAgdGhhdC50cmFuc2l0aW9uaW5nID0g MA0KICAgICAgICAgICAgdGhhdC4kZWxlbWVudC50cmlnZ2VyKGNvbXBsZXRlRXZl bnQpDQogICAgICAgICAgfQ0KDQogICAgICB0aGlzLiRlbGVtZW50LnRyaWdnZXIo c3RhcnRFdmVudCkNCg0KICAgICAgaWYgKHN0YXJ0RXZlbnQuaXNEZWZhdWx0UHJl dmVudGVkKCkpIHJldHVybg0KDQogICAgICB0aGlzLnRyYW5zaXRpb25pbmcgPSAx DQoNCiAgICAgIHRoaXMuJGVsZW1lbnRbbWV0aG9kXSgnaW4nKQ0KDQogICAgICAk LnN1cHBvcnQudHJhbnNpdGlvbiAmJiB0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCdj b2xsYXBzZScpID8NCiAgICAgICAgdGhpcy4kZWxlbWVudC5vbmUoJC5zdXBwb3J0 LnRyYW5zaXRpb24uZW5kLCBjb21wbGV0ZSkgOg0KICAgICAgICBjb21wbGV0ZSgp DQogICAgfQ0KDQogICwgdG9nZ2xlOiBmdW5jdGlvbiAoKSB7DQogICAgICB0aGlz W3RoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoJ2luJykgPyAnaGlkZScgOiAnc2hvdydd KCkNCiAgICB9DQoNCiAgfQ0KDQoNCiAvKiBDT0xMQVBTRSBQTFVHSU4gREVGSU5J VElPTg0KICAqID09PT09PT09PT09PT09PT09PT09PT09PT09ICovDQoNCiAgdmFy IG9sZCA9ICQuZm4uY29sbGFwc2UNCg0KICAkLmZuLmNvbGxhcHNlID0gZnVuY3Rp b24gKG9wdGlvbikgew0KICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkg ew0KICAgICAgdmFyICR0aGlzID0gJCh0aGlzKQ0KICAgICAgICAsIGRhdGEgPSAk dGhpcy5kYXRhKCdjb2xsYXBzZScpDQogICAgICAgICwgb3B0aW9ucyA9ICQuZXh0 ZW5kKHt9LCAkLmZuLmNvbGxhcHNlLmRlZmF1bHRzLCAkdGhpcy5kYXRhKCksIHR5 cGVvZiBvcHRpb24gPT0gJ29iamVjdCcgJiYgb3B0aW9uKQ0KICAgICAgaWYgKCFk YXRhKSAkdGhpcy5kYXRhKCdjb2xsYXBzZScsIChkYXRhID0gbmV3IENvbGxhcHNl KHRoaXMsIG9wdGlvbnMpKSkNCiAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09ICdz dHJpbmcnKSBkYXRhW29wdGlvbl0oKQ0KICAgIH0pDQogIH0NCg0KICAkLmZuLmNv bGxhcHNlLmRlZmF1bHRzID0gew0KICAgIHRvZ2dsZTogdHJ1ZQ0KICB9DQoNCiAg JC5mbi5jb2xsYXBzZS5Db25zdHJ1Y3RvciA9IENvbGxhcHNlDQoNCg0KIC8qIENP TExBUFNFIE5PIENPTkZMSUNUDQogICogPT09PT09PT09PT09PT09PT09PT0gKi8N Cg0KICAkLmZuLmNvbGxhcHNlLm5vQ29uZmxpY3QgPSBmdW5jdGlvbiAoKSB7DQog ICAgJC5mbi5jb2xsYXBzZSA9IG9sZA0KICAgIHJldHVybiB0aGlzDQogIH0NCg0K DQogLyogQ09MTEFQU0UgREFUQS1BUEkNCiAgKiA9PT09PT09PT09PT09PT09PSAq Lw0KDQogICQoZG9jdW1lbnQpLm9uKCdjbGljay5jb2xsYXBzZS5kYXRhLWFwaScs ICdbZGF0YS10b2dnbGU9Y29sbGFwc2VdJywgZnVuY3Rpb24gKGUpIHsNCiAgICB2 YXIgJHRoaXMgPSAkKHRoaXMpLCBocmVmDQogICAgICAsIHRhcmdldCA9ICR0aGlz LmF0dHIoJ2RhdGEtdGFyZ2V0JykNCiAgICAgICAgfHwgZS5wcmV2ZW50RGVmYXVs dCgpDQogICAgICAgIHx8IChocmVmID0gJHRoaXMuYXR0cignaHJlZicpKSAmJiBo cmVmLnJlcGxhY2UoLy4qKD89I1teXHNdKyQpLywgJycpIC8vc3RyaXAgZm9yIGll Nw0KICAgICAgLCBvcHRpb24gPSAkKHRhcmdldCkuZGF0YSgnY29sbGFwc2UnKSA/ ICd0b2dnbGUnIDogJHRoaXMuZGF0YSgpDQogICAgJHRoaXNbJCh0YXJnZXQpLmhh c0NsYXNzKCdpbicpID8gJ2FkZENsYXNzJyA6ICdyZW1vdmVDbGFzcyddKCdjb2xs YXBzZWQnKQ0KICAgICQodGFyZ2V0KS5jb2xsYXBzZShvcHRpb24pDQogIH0pDQoN Cn0od2luZG93LmpRdWVyeSk7LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogKiBib290c3RyYXAt ZHJvcGRvd24uanMgdjIuMy4xDQogKiBodHRwOi8vdHdpdHRlci5naXRodWIuY29t L2Jvb3RzdHJhcC9qYXZhc2NyaXB0Lmh0bWwjZHJvcGRvd25zDQogKiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0NCiAqIENvcHlyaWdodCAyMDEyIFR3aXR0ZXIsIEluYy4NCiAqDQogKiBM aWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0 aGUgIkxpY2Vuc2UiKTsNCiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCiAqIFlvdSBtYXkg b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KICoNCiAqIGh0dHA6Ly93 d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KICoNCiAqIFVubGVz cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp dGluZywgc29mdHdhcmUNCiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQogKiBXSVRIT1VU IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4 cHJlc3Mgb3IgaW1wbGllZC4NCiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNw ZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCiAqIGxp bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KICogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICov DQoNCg0KIWZ1bmN0aW9uICgkKSB7DQoNCiAgInVzZSBzdHJpY3QiOyAvLyBqc2hp bnQgO187DQoNCg0KIC8qIERST1BET1dOIENMQVNTIERFRklOSVRJT04NCiAgKiA9 PT09PT09PT09PT09PT09PT09PT09PT09ICovDQoNCiAgdmFyIHRvZ2dsZSA9ICdb ZGF0YS10b2dnbGU9ZHJvcGRvd25dJw0KICAgICwgRHJvcGRvd24gPSBmdW5jdGlv biAoZWxlbWVudCkgew0KICAgICAgICB2YXIgJGVsID0gJChlbGVtZW50KS5vbign Y2xpY2suZHJvcGRvd24uZGF0YS1hcGknLCB0aGlzLnRvZ2dsZSkNCiAgICAgICAg JCgnaHRtbCcpLm9uKCdjbGljay5kcm9wZG93bi5kYXRhLWFwaScsIGZ1bmN0aW9u ICgpIHsNCiAgICAgICAgICAkZWwucGFyZW50KCkucmVtb3ZlQ2xhc3MoJ29wZW4n KQ0KICAgICAgICB9KQ0KICAgICAgfQ0KDQogIERyb3Bkb3duLnByb3RvdHlwZSA9 IHsNCg0KICAgIGNvbnN0cnVjdG9yOiBEcm9wZG93bg0KDQogICwgdG9nZ2xlOiBm dW5jdGlvbiAoZSkgew0KICAgICAgdmFyICR0aGlzID0gJCh0aGlzKQ0KICAgICAg ICAsICRwYXJlbnQNCiAgICAgICAgLCBpc0FjdGl2ZQ0KDQogICAgICBpZiAoJHRo aXMuaXMoJy5kaXNhYmxlZCwgOmRpc2FibGVkJykpIHJldHVybg0KDQogICAgICAk cGFyZW50ID0gZ2V0UGFyZW50KCR0aGlzKQ0KDQogICAgICBpc0FjdGl2ZSA9ICRw YXJlbnQuaGFzQ2xhc3MoJ29wZW4nKQ0KDQogICAgICBjbGVhck1lbnVzKCkNCg0K ICAgICAgaWYgKCFpc0FjdGl2ZSkgew0KICAgICAgICAkcGFyZW50LnRvZ2dsZUNs YXNzKCdvcGVuJykNCiAgICAgIH0NCg0KICAgICAgJHRoaXMuZm9jdXMoKQ0KDQog ICAgICByZXR1cm4gZmFsc2UNCiAgICB9DQoNCiAgLCBrZXlkb3duOiBmdW5jdGlv biAoZSkgew0KICAgICAgdmFyICR0aGlzDQogICAgICAgICwgJGl0ZW1zDQogICAg ICAgICwgJGFjdGl2ZQ0KICAgICAgICAsICRwYXJlbnQNCiAgICAgICAgLCBpc0Fj dGl2ZQ0KICAgICAgICAsIGluZGV4DQoNCiAgICAgIGlmICghLygzOHw0MHwyNykv LnRlc3QoZS5rZXlDb2RlKSkgcmV0dXJuDQoNCiAgICAgICR0aGlzID0gJCh0aGlz KQ0KDQogICAgICBlLnByZXZlbnREZWZhdWx0KCkNCiAgICAgIGUuc3RvcFByb3Bh Z2F0aW9uKCkNCg0KICAgICAgaWYgKCR0aGlzLmlzKCcuZGlzYWJsZWQsIDpkaXNh YmxlZCcpKSByZXR1cm4NCg0KICAgICAgJHBhcmVudCA9IGdldFBhcmVudCgkdGhp cykNCg0KICAgICAgaXNBY3RpdmUgPSAkcGFyZW50Lmhhc0NsYXNzKCdvcGVuJykN Cg0KICAgICAgaWYgKCFpc0FjdGl2ZSB8fCAoaXNBY3RpdmUgJiYgZS5rZXlDb2Rl ID09IDI3KSkgew0KICAgICAgICBpZiAoZS53aGljaCA9PSAyNykgJHBhcmVudC5m aW5kKHRvZ2dsZSkuZm9jdXMoKQ0KICAgICAgICByZXR1cm4gJHRoaXMuY2xpY2so KQ0KICAgICAgfQ0KDQogICAgICAkaXRlbXMgPSAkKCdbcm9sZT1tZW51XSBsaTpu b3QoLmRpdmlkZXIpOnZpc2libGUgYScsICRwYXJlbnQpDQoNCiAgICAgIGlmICgh JGl0ZW1zLmxlbmd0aCkgcmV0dXJuDQoNCiAgICAgIGluZGV4ID0gJGl0ZW1zLmlu ZGV4KCRpdGVtcy5maWx0ZXIoJzpmb2N1cycpKQ0KDQogICAgICBpZiAoZS5rZXlD b2RlID09IDM4ICYmIGluZGV4ID4gMCkgaW5kZXgtLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAvLyB1cA0KICAgICAgaWYgKGUua2V5Q29k ZSA9PSA0MCAmJiBpbmRleCA8ICRpdGVtcy5sZW5ndGggLSAxKSBpbmRleCsrICAg ICAgICAgICAgICAgICAgICAgICAgLy8gZG93bg0KICAgICAgaWYgKCF+aW5kZXgp IGluZGV4ID0gMA0KDQogICAgICAkaXRlbXMNCiAgICAgICAgLmVxKGluZGV4KQ0K ICAgICAgICAuZm9jdXMoKQ0KICAgIH0NCg0KICB9DQoNCiAgZnVuY3Rpb24gY2xl YXJNZW51cygpIHsNCiAgICAkKHRvZ2dsZSkuZWFjaChmdW5jdGlvbiAoKSB7DQog ICAgICBnZXRQYXJlbnQoJCh0aGlzKSkucmVtb3ZlQ2xhc3MoJ29wZW4nKQ0KICAg IH0pDQogIH0NCg0KICBmdW5jdGlvbiBnZXRQYXJlbnQoJHRoaXMpIHsNCiAgICB2 YXIgc2VsZWN0b3IgPSAkdGhpcy5hdHRyKCdkYXRhLXRhcmdldCcpDQogICAgICAs ICRwYXJlbnQNCg0KICAgIGlmICghc2VsZWN0b3IpIHsNCiAgICAgIHNlbGVjdG9y ID0gJHRoaXMuYXR0cignaHJlZicpDQogICAgICBzZWxlY3RvciA9IHNlbGVjdG9y ICYmIC8jLy50ZXN0KHNlbGVjdG9yKSAmJiBzZWxlY3Rvci5yZXBsYWNlKC8uKig/ PSNbXlxzXSokKS8sICcnKSAvL3N0cmlwIGZvciBpZTcNCiAgICB9DQoNCiAgICAk cGFyZW50ID0gc2VsZWN0b3IgJiYgJChzZWxlY3RvcikNCg0KICAgIGlmICghJHBh cmVudCB8fCAhJHBhcmVudC5sZW5ndGgpICRwYXJlbnQgPSAkdGhpcy5wYXJlbnQo KQ0KDQogICAgcmV0dXJuICRwYXJlbnQNCiAgfQ0KDQoNCiAgLyogRFJPUERPV04g UExVR0lOIERFRklOSVRJT04NCiAgICogPT09PT09PT09PT09PT09PT09PT09PT09 PT0gKi8NCg0KICB2YXIgb2xkID0gJC5mbi5kcm9wZG93bg0KDQogICQuZm4uZHJv cGRvd24gPSBmdW5jdGlvbiAob3B0aW9uKSB7DQogICAgcmV0dXJuIHRoaXMuZWFj aChmdW5jdGlvbiAoKSB7DQogICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpDQogICAg ICAgICwgZGF0YSA9ICR0aGlzLmRhdGEoJ2Ryb3Bkb3duJykNCiAgICAgIGlmICgh ZGF0YSkgJHRoaXMuZGF0YSgnZHJvcGRvd24nLCAoZGF0YSA9IG5ldyBEcm9wZG93 bih0aGlzKSkpDQogICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PSAnc3RyaW5nJykg ZGF0YVtvcHRpb25dLmNhbGwoJHRoaXMpDQogICAgfSkNCiAgfQ0KDQogICQuZm4u ZHJvcGRvd24uQ29uc3RydWN0b3IgPSBEcm9wZG93bg0KDQoNCiAvKiBEUk9QRE9X TiBOTyBDT05GTElDVA0KICAqID09PT09PT09PT09PT09PT09PT09ICovDQoNCiAg JC5mbi5kcm9wZG93bi5ub0NvbmZsaWN0ID0gZnVuY3Rpb24gKCkgew0KICAgICQu Zm4uZHJvcGRvd24gPSBvbGQNCiAgICByZXR1cm4gdGhpcw0KICB9DQoNCg0KICAv KiBBUFBMWSBUTyBTVEFOREFSRCBEUk9QRE9XTiBFTEVNRU5UUw0KICAgKiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLw0KDQogICQoZG9jdW1l bnQpDQogICAgLm9uKCdjbGljay5kcm9wZG93bi5kYXRhLWFwaScsIGNsZWFyTWVu dXMpDQogICAgLm9uKCdjbGljay5kcm9wZG93bi5kYXRhLWFwaScsICcuZHJvcGRv d24gZm9ybScsIGZ1bmN0aW9uIChlKSB7IGUuc3RvcFByb3BhZ2F0aW9uKCkgfSkN CiAgICAub24oJ2NsaWNrLmRyb3Bkb3duLW1lbnUnLCBmdW5jdGlvbiAoZSkgeyBl LnN0b3BQcm9wYWdhdGlvbigpIH0pDQogICAgLm9uKCdjbGljay5kcm9wZG93bi5k YXRhLWFwaScgICwgdG9nZ2xlLCBEcm9wZG93bi5wcm90b3R5cGUudG9nZ2xlKQ0K ICAgIC5vbigna2V5ZG93bi5kcm9wZG93bi5kYXRhLWFwaScsIHRvZ2dsZSArICcs IFtyb2xlPW1lbnVdJyAsIERyb3Bkb3duLnByb3RvdHlwZS5rZXlkb3duKQ0KDQp9 KHdpbmRvdy5qUXVlcnkpOw0KLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogKiBib290c3RyYXAtbW9k YWwuanMgdjIuMy4xDQogKiBodHRwOi8vdHdpdHRlci5naXRodWIuY29tL2Jvb3Rz dHJhcC9qYXZhc2NyaXB0Lmh0bWwjbW9kYWxzDQogKiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiAqIENv cHlyaWdodCAyMDEyIFR3aXR0ZXIsIEluYy4NCiAqDQogKiBMaWNlbnNlZCB1bmRl ciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2Ui KTsNCiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCiAqIFlvdSBtYXkgb2J0YWluIGEgY29w eSBvZiB0aGUgTGljZW5zZSBhdA0KICoNCiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9y Zy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KICoNCiAqIFVubGVzcyByZXF1aXJlZCBi eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh cmUNCiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1 dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQogKiBXSVRIT1VUIFdBUlJBTlRJRVMg T1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1w bGllZC4NCiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1 YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCiAqIGxpbWl0YXRpb25zIHVu ZGVyIHRoZSBMaWNlbnNlLg0KICogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovDQoNCg0KIWZ1bmN0aW9u ICgkKSB7DQoNCiAgInVzZSBzdHJpY3QiOyAvLyBqc2hpbnQgO187DQoNCg0KIC8q IE1PREFMIENMQVNTIERFRklOSVRJT04NCiAgKiA9PT09PT09PT09PT09PT09PT09 PT09ICovDQoNCiAgdmFyIE1vZGFsID0gZnVuY3Rpb24gKGVsZW1lbnQsIG9wdGlv bnMpIHsNCiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zDQogICAgdGhpcy4kZWxl bWVudCA9ICQoZWxlbWVudCkNCiAgICAgIC5kZWxlZ2F0ZSgnW2RhdGEtZGlzbWlz cz0ibW9kYWwiXScsICdjbGljay5kaXNtaXNzLm1vZGFsJywgJC5wcm94eSh0aGlz LmhpZGUsIHRoaXMpKQ0KICAgIHRoaXMub3B0aW9ucy5yZW1vdGUgJiYgdGhpcy4k ZWxlbWVudC5maW5kKCcubW9kYWwtYm9keScpLmxvYWQodGhpcy5vcHRpb25zLnJl bW90ZSkNCiAgfQ0KDQogIE1vZGFsLnByb3RvdHlwZSA9IHsNCg0KICAgICAgY29u c3RydWN0b3I6IE1vZGFsDQoNCiAgICAsIHRvZ2dsZTogZnVuY3Rpb24gKCkgew0K ICAgICAgICByZXR1cm4gdGhpc1shdGhpcy5pc1Nob3duID8gJ3Nob3cnIDogJ2hp ZGUnXSgpDQogICAgICB9DQoNCiAgICAsIHNob3c6IGZ1bmN0aW9uICgpIHsNCiAg ICAgICAgdmFyIHRoYXQgPSB0aGlzDQogICAgICAgICAgLCBlID0gJC5FdmVudCgn c2hvdycpDQoNCiAgICAgICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKGUpDQoNCiAg ICAgICAgaWYgKHRoaXMuaXNTaG93biB8fCBlLmlzRGVmYXVsdFByZXZlbnRlZCgp KSByZXR1cm4NCg0KICAgICAgICB0aGlzLmlzU2hvd24gPSB0cnVlDQoNCiAgICAg ICAgdGhpcy5lc2NhcGUoKQ0KDQogICAgICAgIHRoaXMuYmFja2Ryb3AoZnVuY3Rp b24gKCkgew0KICAgICAgICAgIHZhciB0cmFuc2l0aW9uID0gJC5zdXBwb3J0LnRy YW5zaXRpb24gJiYgdGhhdC4kZWxlbWVudC5oYXNDbGFzcygnZmFkZScpDQoNCiAg ICAgICAgICBpZiAoIXRoYXQuJGVsZW1lbnQucGFyZW50KCkubGVuZ3RoKSB7DQog ICAgICAgICAgICB0aGF0LiRlbGVtZW50LmFwcGVuZFRvKGRvY3VtZW50LmJvZHkp IC8vZG9uJ3QgbW92ZSBtb2RhbHMgZG9tIHBvc2l0aW9uDQogICAgICAgICAgfQ0K DQogICAgICAgICAgdGhhdC4kZWxlbWVudC5zaG93KCkNCg0KICAgICAgICAgIGlm ICh0cmFuc2l0aW9uKSB7DQogICAgICAgICAgICB0aGF0LiRlbGVtZW50WzBdLm9m ZnNldFdpZHRoIC8vIGZvcmNlIHJlZmxvdw0KICAgICAgICAgIH0NCg0KICAgICAg ICAgIHRoYXQuJGVsZW1lbnQNCiAgICAgICAgICAgIC5hZGRDbGFzcygnaW4nKQ0K ICAgICAgICAgICAgLmF0dHIoJ2FyaWEtaGlkZGVuJywgZmFsc2UpDQoNCiAgICAg ICAgICB0aGF0LmVuZm9yY2VGb2N1cygpDQoNCiAgICAgICAgICB0cmFuc2l0aW9u ID8NCiAgICAgICAgICAgIHRoYXQuJGVsZW1lbnQub25lKCQuc3VwcG9ydC50cmFu c2l0aW9uLmVuZCwgZnVuY3Rpb24gKCkgeyB0aGF0LiRlbGVtZW50LmZvY3VzKCku dHJpZ2dlcignc2hvd24nKSB9KSA6DQogICAgICAgICAgICB0aGF0LiRlbGVtZW50 LmZvY3VzKCkudHJpZ2dlcignc2hvd24nKQ0KDQogICAgICAgIH0pDQogICAgICB9 DQoNCiAgICAsIGhpZGU6IGZ1bmN0aW9uIChlKSB7DQogICAgICAgIGUgJiYgZS5w cmV2ZW50RGVmYXVsdCgpDQoNCiAgICAgICAgdmFyIHRoYXQgPSB0aGlzDQoNCiAg ICAgICAgZSA9ICQuRXZlbnQoJ2hpZGUnKQ0KDQogICAgICAgIHRoaXMuJGVsZW1l bnQudHJpZ2dlcihlKQ0KDQogICAgICAgIGlmICghdGhpcy5pc1Nob3duIHx8IGUu aXNEZWZhdWx0UHJldmVudGVkKCkpIHJldHVybg0KDQogICAgICAgIHRoaXMuaXNT aG93biA9IGZhbHNlDQoNCiAgICAgICAgdGhpcy5lc2NhcGUoKQ0KDQogICAgICAg ICQoZG9jdW1lbnQpLm9mZignZm9jdXNpbi5tb2RhbCcpDQoNCiAgICAgICAgdGhp cy4kZWxlbWVudA0KICAgICAgICAgIC5yZW1vdmVDbGFzcygnaW4nKQ0KICAgICAg ICAgIC5hdHRyKCdhcmlhLWhpZGRlbicsIHRydWUpDQoNCiAgICAgICAgJC5zdXBw b3J0LnRyYW5zaXRpb24gJiYgdGhpcy4kZWxlbWVudC5oYXNDbGFzcygnZmFkZScp ID8NCiAgICAgICAgICB0aGlzLmhpZGVXaXRoVHJhbnNpdGlvbigpIDoNCiAgICAg ICAgICB0aGlzLmhpZGVNb2RhbCgpDQogICAgICB9DQoNCiAgICAsIGVuZm9yY2VG b2N1czogZnVuY3Rpb24gKCkgew0KICAgICAgICB2YXIgdGhhdCA9IHRoaXMNCiAg ICAgICAgJChkb2N1bWVudCkub24oJ2ZvY3VzaW4ubW9kYWwnLCBmdW5jdGlvbiAo ZSkgew0KICAgICAgICAgIGlmICh0aGF0LiRlbGVtZW50WzBdICE9PSBlLnRhcmdl dCAmJiAhdGhhdC4kZWxlbWVudC5oYXMoZS50YXJnZXQpLmxlbmd0aCkgew0KICAg ICAgICAgICAgdGhhdC4kZWxlbWVudC5mb2N1cygpDQogICAgICAgICAgfQ0KICAg ICAgICB9KQ0KICAgICAgfQ0KDQogICAgLCBlc2NhcGU6IGZ1bmN0aW9uICgpIHsN CiAgICAgICAgdmFyIHRoYXQgPSB0aGlzDQogICAgICAgIGlmICh0aGlzLmlzU2hv d24gJiYgdGhpcy5vcHRpb25zLmtleWJvYXJkKSB7DQogICAgICAgICAgdGhpcy4k ZWxlbWVudC5vbigna2V5dXAuZGlzbWlzcy5tb2RhbCcsIGZ1bmN0aW9uICggZSAp IHsNCiAgICAgICAgICAgIGUud2hpY2ggPT0gMjcgJiYgdGhhdC5oaWRlKCkNCiAg ICAgICAgICB9KQ0KICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmlzU2hvd24pIHsN CiAgICAgICAgICB0aGlzLiRlbGVtZW50Lm9mZigna2V5dXAuZGlzbWlzcy5tb2Rh bCcpDQogICAgICAgIH0NCiAgICAgIH0NCg0KICAgICwgaGlkZVdpdGhUcmFuc2l0 aW9uOiBmdW5jdGlvbiAoKSB7DQogICAgICAgIHZhciB0aGF0ID0gdGhpcw0KICAg ICAgICAgICwgdGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgew0KICAg ICAgICAgICAgICB0aGF0LiRlbGVtZW50Lm9mZigkLnN1cHBvcnQudHJhbnNpdGlv bi5lbmQpDQogICAgICAgICAgICAgIHRoYXQuaGlkZU1vZGFsKCkNCiAgICAgICAg ICAgIH0sIDUwMCkNCg0KICAgICAgICB0aGlzLiRlbGVtZW50Lm9uZSgkLnN1cHBv cnQudHJhbnNpdGlvbi5lbmQsIGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICBjbGVh clRpbWVvdXQodGltZW91dCkNCiAgICAgICAgICB0aGF0LmhpZGVNb2RhbCgpDQog ICAgICAgIH0pDQogICAgICB9DQoNCiAgICAsIGhpZGVNb2RhbDogZnVuY3Rpb24g KCkgew0KICAgICAgICB2YXIgdGhhdCA9IHRoaXMNCiAgICAgICAgdGhpcy4kZWxl bWVudC5oaWRlKCkNCiAgICAgICAgdGhpcy5iYWNrZHJvcChmdW5jdGlvbiAoKSB7 DQogICAgICAgICAgdGhhdC5yZW1vdmVCYWNrZHJvcCgpDQogICAgICAgICAgdGhh dC4kZWxlbWVudC50cmlnZ2VyKCdoaWRkZW4nKQ0KICAgICAgICB9KQ0KICAgICAg fQ0KDQogICAgLCByZW1vdmVCYWNrZHJvcDogZnVuY3Rpb24gKCkgew0KICAgICAg ICB0aGlzLiRiYWNrZHJvcCAmJiB0aGlzLiRiYWNrZHJvcC5yZW1vdmUoKQ0KICAg ICAgICB0aGlzLiRiYWNrZHJvcCA9IG51bGwNCiAgICAgIH0NCg0KICAgICwgYmFj a2Ryb3A6IGZ1bmN0aW9uIChjYWxsYmFjaykgew0KICAgICAgICB2YXIgdGhhdCA9 IHRoaXMNCiAgICAgICAgICAsIGFuaW1hdGUgPSB0aGlzLiRlbGVtZW50Lmhhc0Ns YXNzKCdmYWRlJykgPyAnZmFkZScgOiAnJw0KDQogICAgICAgIGlmICh0aGlzLmlz U2hvd24gJiYgdGhpcy5vcHRpb25zLmJhY2tkcm9wKSB7DQogICAgICAgICAgdmFy IGRvQW5pbWF0ZSA9ICQuc3VwcG9ydC50cmFuc2l0aW9uICYmIGFuaW1hdGUNCg0K ICAgICAgICAgIHRoaXMuJGJhY2tkcm9wID0gJCgnPGRpdiBjbGFzcz0ibW9kYWwt YmFja2Ryb3AgJyArIGFuaW1hdGUgKyAnIiAvPicpDQogICAgICAgICAgICAuYXBw ZW5kVG8oZG9jdW1lbnQuYm9keSkNCg0KICAgICAgICAgIHRoaXMuJGJhY2tkcm9w LmNsaWNrKA0KICAgICAgICAgICAgdGhpcy5vcHRpb25zLmJhY2tkcm9wID09ICdz dGF0aWMnID8NCiAgICAgICAgICAgICAgJC5wcm94eSh0aGlzLiRlbGVtZW50WzBd LmZvY3VzLCB0aGlzLiRlbGVtZW50WzBdKQ0KICAgICAgICAgICAgOiAkLnByb3h5 KHRoaXMuaGlkZSwgdGhpcykNCiAgICAgICAgICApDQoNCiAgICAgICAgICBpZiAo ZG9BbmltYXRlKSB0aGlzLiRiYWNrZHJvcFswXS5vZmZzZXRXaWR0aCAvLyBmb3Jj ZSByZWZsb3cNCg0KICAgICAgICAgIHRoaXMuJGJhY2tkcm9wLmFkZENsYXNzKCdp bicpDQoNCiAgICAgICAgICBpZiAoIWNhbGxiYWNrKSByZXR1cm4NCg0KICAgICAg ICAgIGRvQW5pbWF0ZSA/DQogICAgICAgICAgICB0aGlzLiRiYWNrZHJvcC5vbmUo JC5zdXBwb3J0LnRyYW5zaXRpb24uZW5kLCBjYWxsYmFjaykgOg0KICAgICAgICAg ICAgY2FsbGJhY2soKQ0KDQogICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuaXNTaG93 biAmJiB0aGlzLiRiYWNrZHJvcCkgew0KICAgICAgICAgIHRoaXMuJGJhY2tkcm9w LnJlbW92ZUNsYXNzKCdpbicpDQoNCiAgICAgICAgICAkLnN1cHBvcnQudHJhbnNp dGlvbiAmJiB0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCdmYWRlJyk/DQogICAgICAg ICAgICB0aGlzLiRiYWNrZHJvcC5vbmUoJC5zdXBwb3J0LnRyYW5zaXRpb24uZW5k LCBjYWxsYmFjaykgOg0KICAgICAgICAgICAgY2FsbGJhY2soKQ0KDQogICAgICAg IH0gZWxzZSBpZiAoY2FsbGJhY2spIHsNCiAgICAgICAgICBjYWxsYmFjaygpDQog ICAgICAgIH0NCiAgICAgIH0NCiAgfQ0KDQoNCiAvKiBNT0RBTCBQTFVHSU4gREVG SU5JVElPTg0KICAqID09PT09PT09PT09PT09PT09PT09PT09ICovDQoNCiAgdmFy IG9sZCA9ICQuZm4ubW9kYWwNCg0KICAkLmZuLm1vZGFsID0gZnVuY3Rpb24gKG9w dGlvbikgew0KICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkgew0KICAg ICAgdmFyICR0aGlzID0gJCh0aGlzKQ0KICAgICAgICAsIGRhdGEgPSAkdGhpcy5k YXRhKCdtb2RhbCcpDQogICAgICAgICwgb3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCAk LmZuLm1vZGFsLmRlZmF1bHRzLCAkdGhpcy5kYXRhKCksIHR5cGVvZiBvcHRpb24g PT0gJ29iamVjdCcgJiYgb3B0aW9uKQ0KICAgICAgaWYgKCFkYXRhKSAkdGhpcy5k YXRhKCdtb2RhbCcsIChkYXRhID0gbmV3IE1vZGFsKHRoaXMsIG9wdGlvbnMpKSkN CiAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09ICdzdHJpbmcnKSBkYXRhW29wdGlv bl0oKQ0KICAgICAgZWxzZSBpZiAob3B0aW9ucy5zaG93KSBkYXRhLnNob3coKQ0K ICAgIH0pDQogIH0NCg0KICAkLmZuLm1vZGFsLmRlZmF1bHRzID0gew0KICAgICAg YmFja2Ryb3A6IHRydWUNCiAgICAsIGtleWJvYXJkOiB0cnVlDQogICAgLCBzaG93 OiB0cnVlDQogIH0NCg0KICAkLmZuLm1vZGFsLkNvbnN0cnVjdG9yID0gTW9kYWwN Cg0KDQogLyogTU9EQUwgTk8gQ09ORkxJQ1QNCiAgKiA9PT09PT09PT09PT09PT09 PSAqLw0KDQogICQuZm4ubW9kYWwubm9Db25mbGljdCA9IGZ1bmN0aW9uICgpIHsN CiAgICAkLmZuLm1vZGFsID0gb2xkDQogICAgcmV0dXJuIHRoaXMNCiAgfQ0KDQoN CiAvKiBNT0RBTCBEQVRBLUFQSQ0KICAqID09PT09PT09PT09PT09ICovDQoNCiAg JChkb2N1bWVudCkub24oJ2NsaWNrLm1vZGFsLmRhdGEtYXBpJywgJ1tkYXRhLXRv Z2dsZT0ibW9kYWwiXScsIGZ1bmN0aW9uIChlKSB7DQogICAgdmFyICR0aGlzID0g JCh0aGlzKQ0KICAgICAgLCBocmVmID0gJHRoaXMuYXR0cignaHJlZicpDQogICAg ICAsICR0YXJnZXQgPSAkKCR0aGlzLmF0dHIoJ2RhdGEtdGFyZ2V0JykgfHwgKGhy ZWYgJiYgaHJlZi5yZXBsYWNlKC8uKig/PSNbXlxzXSskKS8sICcnKSkpIC8vc3Ry aXAgZm9yIGllNw0KICAgICAgLCBvcHRpb24gPSAkdGFyZ2V0LmRhdGEoJ21vZGFs JykgPyAndG9nZ2xlJyA6ICQuZXh0ZW5kKHsgcmVtb3RlOiEvIy8udGVzdChocmVm KSAmJiBocmVmIH0sICR0YXJnZXQuZGF0YSgpLCAkdGhpcy5kYXRhKCkpDQoNCiAg ICBlLnByZXZlbnREZWZhdWx0KCkNCg0KICAgICR0YXJnZXQNCiAgICAgIC5tb2Rh bChvcHRpb24pDQogICAgICAub25lKCdoaWRlJywgZnVuY3Rpb24gKCkgew0KICAg ICAgICAkdGhpcy5mb2N1cygpDQogICAgICB9KQ0KICB9KQ0KDQp9KHdpbmRvdy5q UXVlcnkpOw0KLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0NCiAqIGJvb3RzdHJhcC10b29sdGlwLmpz IHYyLjMuMQ0KICogaHR0cDovL3R3aXR0ZXIuZ2l0aHViLmNvbS9ib290c3RyYXAv amF2YXNjcmlwdC5odG1sI3Rvb2x0aXBzDQogKiBJbnNwaXJlZCBieSB0aGUgb3Jp Z2luYWwgalF1ZXJ5LnRpcHN5IGJ5IEphc29uIEZyYW1lDQogKiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQ0KICogQ29weXJpZ2h0IDIwMTIgVHdpdHRlciwgSW5jLg0KICoNCiAqIExpY2Vu c2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi TGljZW5zZSIpOw0KICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KICogWW91IG1heSBvYnRh aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQogKg0KICogaHR0cDovL3d3dy5h cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQogKg0KICogVW5sZXNzIHJl cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n LCBzb2Z0d2FyZQ0KICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCiAqIFdJVEhPVVQgV0FS UkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVz cyBvciBpbXBsaWVkLg0KICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lm aWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KICogbGltaXRh dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQogKiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovDQoNCg0K IWZ1bmN0aW9uICgkKSB7DQoNCiAgInVzZSBzdHJpY3QiOyAvLyBqc2hpbnQgO187 DQoNCg0KIC8qIFRPT0xUSVAgUFVCTElDIENMQVNTIERFRklOSVRJT04NCiAgKiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovDQoNCiAgdmFyIFRvb2x0 aXAgPSBmdW5jdGlvbiAoZWxlbWVudCwgb3B0aW9ucykgew0KICAgIHRoaXMuaW5p dCgndG9vbHRpcCcsIGVsZW1lbnQsIG9wdGlvbnMpDQogIH0NCg0KICBUb29sdGlw LnByb3RvdHlwZSA9IHsNCg0KICAgIGNvbnN0cnVjdG9yOiBUb29sdGlwDQoNCiAg LCBpbml0OiBmdW5jdGlvbiAodHlwZSwgZWxlbWVudCwgb3B0aW9ucykgew0KICAg ICAgdmFyIGV2ZW50SW4NCiAgICAgICAgLCBldmVudE91dA0KICAgICAgICAsIHRy aWdnZXJzDQogICAgICAgICwgdHJpZ2dlcg0KICAgICAgICAsIGkNCg0KICAgICAg dGhpcy50eXBlID0gdHlwZQ0KICAgICAgdGhpcy4kZWxlbWVudCA9ICQoZWxlbWVu dCkNCiAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuZ2V0T3B0aW9ucyhvcHRpb25z KQ0KICAgICAgdGhpcy5lbmFibGVkID0gdHJ1ZQ0KDQogICAgICB0cmlnZ2VycyA9 IHRoaXMub3B0aW9ucy50cmlnZ2VyLnNwbGl0KCcgJykNCg0KICAgICAgZm9yIChp ID0gdHJpZ2dlcnMubGVuZ3RoOyBpLS07KSB7DQogICAgICAgIHRyaWdnZXIgPSB0 cmlnZ2Vyc1tpXQ0KICAgICAgICBpZiAodHJpZ2dlciA9PSAnY2xpY2snKSB7DQog ICAgICAgICAgdGhpcy4kZWxlbWVudC5vbignY2xpY2suJyArIHRoaXMudHlwZSwg dGhpcy5vcHRpb25zLnNlbGVjdG9yLCAkLnByb3h5KHRoaXMudG9nZ2xlLCB0aGlz KSkNCiAgICAgICAgfSBlbHNlIGlmICh0cmlnZ2VyICE9ICdtYW51YWwnKSB7DQog ICAgICAgICAgZXZlbnRJbiA9IHRyaWdnZXIgPT0gJ2hvdmVyJyA/ICdtb3VzZWVu dGVyJyA6ICdmb2N1cycNCiAgICAgICAgICBldmVudE91dCA9IHRyaWdnZXIgPT0g J2hvdmVyJyA/ICdtb3VzZWxlYXZlJyA6ICdibHVyJw0KICAgICAgICAgIHRoaXMu JGVsZW1lbnQub24oZXZlbnRJbiArICcuJyArIHRoaXMudHlwZSwgdGhpcy5vcHRp b25zLnNlbGVjdG9yLCAkLnByb3h5KHRoaXMuZW50ZXIsIHRoaXMpKQ0KICAgICAg ICAgIHRoaXMuJGVsZW1lbnQub24oZXZlbnRPdXQgKyAnLicgKyB0aGlzLnR5cGUs IHRoaXMub3B0aW9ucy5zZWxlY3RvciwgJC5wcm94eSh0aGlzLmxlYXZlLCB0aGlz KSkNCiAgICAgICAgfQ0KICAgICAgfQ0KDQogICAgICB0aGlzLm9wdGlvbnMuc2Vs ZWN0b3IgPw0KICAgICAgICAodGhpcy5fb3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCB0 aGlzLm9wdGlvbnMsIHsgdHJpZ2dlcjogJ21hbnVhbCcsIHNlbGVjdG9yOiAnJyB9 KSkgOg0KICAgICAgICB0aGlzLmZpeFRpdGxlKCkNCiAgICB9DQoNCiAgLCBnZXRP cHRpb25zOiBmdW5jdGlvbiAob3B0aW9ucykgew0KICAgICAgb3B0aW9ucyA9ICQu ZXh0ZW5kKHt9LCAkLmZuW3RoaXMudHlwZV0uZGVmYXVsdHMsIHRoaXMuJGVsZW1l bnQuZGF0YSgpLCBvcHRpb25zKQ0KDQogICAgICBpZiAob3B0aW9ucy5kZWxheSAm JiB0eXBlb2Ygb3B0aW9ucy5kZWxheSA9PSAnbnVtYmVyJykgew0KICAgICAgICBv cHRpb25zLmRlbGF5ID0gew0KICAgICAgICAgIHNob3c6IG9wdGlvbnMuZGVsYXkN CiAgICAgICAgLCBoaWRlOiBvcHRpb25zLmRlbGF5DQogICAgICAgIH0NCiAgICAg IH0NCg0KICAgICAgcmV0dXJuIG9wdGlvbnMNCiAgICB9DQoNCiAgLCBlbnRlcjog ZnVuY3Rpb24gKGUpIHsNCiAgICAgIHZhciBkZWZhdWx0cyA9ICQuZm5bdGhpcy50 eXBlXS5kZWZhdWx0cw0KICAgICAgICAsIG9wdGlvbnMgPSB7fQ0KICAgICAgICAs IHNlbGYNCg0KICAgICAgdGhpcy5fb3B0aW9ucyAmJiAkLmVhY2godGhpcy5fb3B0 aW9ucywgZnVuY3Rpb24gKGtleSwgdmFsdWUpIHsNCiAgICAgICAgaWYgKGRlZmF1 bHRzW2tleV0gIT0gdmFsdWUpIG9wdGlvbnNba2V5XSA9IHZhbHVlDQogICAgICB9 LCB0aGlzKQ0KDQogICAgICBzZWxmID0gJChlLmN1cnJlbnRUYXJnZXQpW3RoaXMu dHlwZV0ob3B0aW9ucykuZGF0YSh0aGlzLnR5cGUpDQoNCiAgICAgIGlmICghc2Vs Zi5vcHRpb25zLmRlbGF5IHx8ICFzZWxmLm9wdGlvbnMuZGVsYXkuc2hvdykgcmV0 dXJuIHNlbGYuc2hvdygpDQoNCiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVv dXQpDQogICAgICBzZWxmLmhvdmVyU3RhdGUgPSAnaW4nDQogICAgICB0aGlzLnRp bWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgew0KICAgICAgICBpZiAoc2Vs Zi5ob3ZlclN0YXRlID09ICdpbicpIHNlbGYuc2hvdygpDQogICAgICB9LCBzZWxm Lm9wdGlvbnMuZGVsYXkuc2hvdykNCiAgICB9DQoNCiAgLCBsZWF2ZTogZnVuY3Rp b24gKGUpIHsNCiAgICAgIHZhciBzZWxmID0gJChlLmN1cnJlbnRUYXJnZXQpW3Ro aXMudHlwZV0odGhpcy5fb3B0aW9ucykuZGF0YSh0aGlzLnR5cGUpDQoNCiAgICAg IGlmICh0aGlzLnRpbWVvdXQpIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpDQog ICAgICBpZiAoIXNlbGYub3B0aW9ucy5kZWxheSB8fCAhc2VsZi5vcHRpb25zLmRl bGF5LmhpZGUpIHJldHVybiBzZWxmLmhpZGUoKQ0KDQogICAgICBzZWxmLmhvdmVy U3RhdGUgPSAnb3V0Jw0KICAgICAgdGhpcy50aW1lb3V0ID0gc2V0VGltZW91dChm dW5jdGlvbigpIHsNCiAgICAgICAgaWYgKHNlbGYuaG92ZXJTdGF0ZSA9PSAnb3V0 Jykgc2VsZi5oaWRlKCkNCiAgICAgIH0sIHNlbGYub3B0aW9ucy5kZWxheS5oaWRl KQ0KICAgIH0NCg0KICAsIHNob3c6IGZ1bmN0aW9uICgpIHsNCiAgICAgIHZhciAk dGlwDQogICAgICAgICwgcG9zDQogICAgICAgICwgYWN0dWFsV2lkdGgNCiAgICAg ICAgLCBhY3R1YWxIZWlnaHQNCiAgICAgICAgLCBwbGFjZW1lbnQNCiAgICAgICAg LCB0cA0KICAgICAgICAsIGUgPSAkLkV2ZW50KCdzaG93JykNCg0KICAgICAgaWYg KHRoaXMuaGFzQ29udGVudCgpICYmIHRoaXMuZW5hYmxlZCkgew0KICAgICAgICB0 aGlzLiRlbGVtZW50LnRyaWdnZXIoZSkNCiAgICAgICAgaWYgKGUuaXNEZWZhdWx0 UHJldmVudGVkKCkpIHJldHVybg0KICAgICAgICAkdGlwID0gdGhpcy50aXAoKQ0K ICAgICAgICB0aGlzLnNldENvbnRlbnQoKQ0KDQogICAgICAgIGlmICh0aGlzLm9w dGlvbnMuYW5pbWF0aW9uKSB7DQogICAgICAgICAgJHRpcC5hZGRDbGFzcygnZmFk ZScpDQogICAgICAgIH0NCg0KICAgICAgICBwbGFjZW1lbnQgPSB0eXBlb2YgdGhp cy5vcHRpb25zLnBsYWNlbWVudCA9PSAnZnVuY3Rpb24nID8NCiAgICAgICAgICB0 aGlzLm9wdGlvbnMucGxhY2VtZW50LmNhbGwodGhpcywgJHRpcFswXSwgdGhpcy4k ZWxlbWVudFswXSkgOg0KICAgICAgICAgIHRoaXMub3B0aW9ucy5wbGFjZW1lbnQN Cg0KICAgICAgICAkdGlwDQogICAgICAgICAgLmRldGFjaCgpDQogICAgICAgICAg LmNzcyh7IHRvcDogMCwgbGVmdDogMCwgZGlzcGxheTogJ2Jsb2NrJyB9KQ0KDQog ICAgICAgIHRoaXMub3B0aW9ucy5jb250YWluZXIgPyAkdGlwLmFwcGVuZFRvKHRo aXMub3B0aW9ucy5jb250YWluZXIpIDogJHRpcC5pbnNlcnRBZnRlcih0aGlzLiRl bGVtZW50KQ0KDQogICAgICAgIHBvcyA9IHRoaXMuZ2V0UG9zaXRpb24oKQ0KDQog ICAgICAgIGFjdHVhbFdpZHRoID0gJHRpcFswXS5vZmZzZXRXaWR0aA0KICAgICAg ICBhY3R1YWxIZWlnaHQgPSAkdGlwWzBdLm9mZnNldEhlaWdodA0KDQogICAgICAg IHN3aXRjaCAocGxhY2VtZW50KSB7DQogICAgICAgICAgY2FzZSAnYm90dG9tJzoN CiAgICAgICAgICAgIHRwID0ge3RvcDogcG9zLnRvcCArIHBvcy5oZWlnaHQsIGxl ZnQ6IHBvcy5sZWZ0ICsgcG9zLndpZHRoIC8gMiAtIGFjdHVhbFdpZHRoIC8gMn0N CiAgICAgICAgICAgIGJyZWFrDQogICAgICAgICAgY2FzZSAndG9wJzoNCiAgICAg ICAgICAgIHRwID0ge3RvcDogcG9zLnRvcCAtIGFjdHVhbEhlaWdodCwgbGVmdDog cG9zLmxlZnQgKyBwb3Mud2lkdGggLyAyIC0gYWN0dWFsV2lkdGggLyAyfQ0KICAg ICAgICAgICAgYnJlYWsNCiAgICAgICAgICBjYXNlICdsZWZ0JzoNCiAgICAgICAg ICAgIHRwID0ge3RvcDogcG9zLnRvcCArIHBvcy5oZWlnaHQgLyAyIC0gYWN0dWFs SGVpZ2h0IC8gMiwgbGVmdDogcG9zLmxlZnQgLSBhY3R1YWxXaWR0aH0NCiAgICAg ICAgICAgIGJyZWFrDQogICAgICAgICAgY2FzZSAncmlnaHQnOg0KICAgICAgICAg ICAgdHAgPSB7dG9wOiBwb3MudG9wICsgcG9zLmhlaWdodCAvIDIgLSBhY3R1YWxI ZWlnaHQgLyAyLCBsZWZ0OiBwb3MubGVmdCArIHBvcy53aWR0aH0NCiAgICAgICAg ICAgIGJyZWFrDQogICAgICAgIH0NCg0KICAgICAgICB0aGlzLmFwcGx5UGxhY2Vt ZW50KHRwLCBwbGFjZW1lbnQpDQogICAgICAgIHRoaXMuJGVsZW1lbnQudHJpZ2dl cignc2hvd24nKQ0KICAgICAgfQ0KICAgIH0NCg0KICAsIGFwcGx5UGxhY2VtZW50 OiBmdW5jdGlvbihvZmZzZXQsIHBsYWNlbWVudCl7DQogICAgICB2YXIgJHRpcCA9 IHRoaXMudGlwKCkNCiAgICAgICAgLCB3aWR0aCA9ICR0aXBbMF0ub2Zmc2V0V2lk dGgNCiAgICAgICAgLCBoZWlnaHQgPSAkdGlwWzBdLm9mZnNldEhlaWdodA0KICAg ICAgICAsIGFjdHVhbFdpZHRoDQogICAgICAgICwgYWN0dWFsSGVpZ2h0DQogICAg ICAgICwgZGVsdGENCiAgICAgICAgLCByZXBsYWNlDQoNCiAgICAgICR0aXANCiAg ICAgICAgLm9mZnNldChvZmZzZXQpDQogICAgICAgIC5hZGRDbGFzcyhwbGFjZW1l bnQpDQogICAgICAgIC5hZGRDbGFzcygnaW4nKQ0KDQogICAgICBhY3R1YWxXaWR0 aCA9ICR0aXBbMF0ub2Zmc2V0V2lkdGgNCiAgICAgIGFjdHVhbEhlaWdodCA9ICR0 aXBbMF0ub2Zmc2V0SGVpZ2h0DQoNCiAgICAgIGlmIChwbGFjZW1lbnQgPT0gJ3Rv cCcgJiYgYWN0dWFsSGVpZ2h0ICE9IGhlaWdodCkgew0KICAgICAgICBvZmZzZXQu dG9wID0gb2Zmc2V0LnRvcCArIGhlaWdodCAtIGFjdHVhbEhlaWdodA0KICAgICAg ICByZXBsYWNlID0gdHJ1ZQ0KICAgICAgfQ0KDQogICAgICBpZiAocGxhY2VtZW50 ID09ICdib3R0b20nIHx8IHBsYWNlbWVudCA9PSAndG9wJykgew0KICAgICAgICBk ZWx0YSA9IDANCg0KICAgICAgICBpZiAob2Zmc2V0LmxlZnQgPCAwKXsNCiAgICAg ICAgICBkZWx0YSA9IG9mZnNldC5sZWZ0ICogLTINCiAgICAgICAgICBvZmZzZXQu bGVmdCA9IDANCiAgICAgICAgICAkdGlwLm9mZnNldChvZmZzZXQpDQogICAgICAg ICAgYWN0dWFsV2lkdGggPSAkdGlwWzBdLm9mZnNldFdpZHRoDQogICAgICAgICAg YWN0dWFsSGVpZ2h0ID0gJHRpcFswXS5vZmZzZXRIZWlnaHQNCiAgICAgICAgfQ0K DQogICAgICAgIHRoaXMucmVwbGFjZUFycm93KGRlbHRhIC0gd2lkdGggKyBhY3R1 YWxXaWR0aCwgYWN0dWFsV2lkdGgsICdsZWZ0JykNCiAgICAgIH0gZWxzZSB7DQog ICAgICAgIHRoaXMucmVwbGFjZUFycm93KGFjdHVhbEhlaWdodCAtIGhlaWdodCwg YWN0dWFsSGVpZ2h0LCAndG9wJykNCiAgICAgIH0NCg0KICAgICAgaWYgKHJlcGxh Y2UpICR0aXAub2Zmc2V0KG9mZnNldCkNCiAgICB9DQoNCiAgLCByZXBsYWNlQXJy b3c6IGZ1bmN0aW9uKGRlbHRhLCBkaW1lbnNpb24sIHBvc2l0aW9uKXsNCiAgICAg IHRoaXMNCiAgICAgICAgLmFycm93KCkNCiAgICAgICAgLmNzcyhwb3NpdGlvbiwg ZGVsdGEgPyAoNTAgKiAoMSAtIGRlbHRhIC8gZGltZW5zaW9uKSArICIlIikgOiAn JykNCiAgICB9DQoNCiAgLCBzZXRDb250ZW50OiBmdW5jdGlvbiAoKSB7DQogICAg ICB2YXIgJHRpcCA9IHRoaXMudGlwKCkNCiAgICAgICAgLCB0aXRsZSA9IHRoaXMu Z2V0VGl0bGUoKQ0KDQogICAgICAkdGlwLmZpbmQoJy50b29sdGlwLWlubmVyJylb dGhpcy5vcHRpb25zLmh0bWwgPyAnaHRtbCcgOiAndGV4dCddKHRpdGxlKQ0KICAg ICAgJHRpcC5yZW1vdmVDbGFzcygnZmFkZSBpbiB0b3AgYm90dG9tIGxlZnQgcmln aHQnKQ0KICAgIH0NCg0KICAsIGhpZGU6IGZ1bmN0aW9uICgpIHsNCiAgICAgIHZh ciB0aGF0ID0gdGhpcw0KICAgICAgICAsICR0aXAgPSB0aGlzLnRpcCgpDQogICAg ICAgICwgZSA9ICQuRXZlbnQoJ2hpZGUnKQ0KDQogICAgICB0aGlzLiRlbGVtZW50 LnRyaWdnZXIoZSkNCiAgICAgIGlmIChlLmlzRGVmYXVsdFByZXZlbnRlZCgpKSBy ZXR1cm4NCg0KICAgICAgJHRpcC5yZW1vdmVDbGFzcygnaW4nKQ0KDQogICAgICBm dW5jdGlvbiByZW1vdmVXaXRoQW5pbWF0aW9uKCkgew0KICAgICAgICB2YXIgdGlt ZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgew0KICAgICAgICAgICR0aXAu b2ZmKCQuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCkuZGV0YWNoKCkNCiAgICAgICAg fSwgNTAwKQ0KDQogICAgICAgICR0aXAub25lKCQuc3VwcG9ydC50cmFuc2l0aW9u LmVuZCwgZnVuY3Rpb24gKCkgew0KICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1l b3V0KQ0KICAgICAgICAgICR0aXAuZGV0YWNoKCkNCiAgICAgICAgfSkNCiAgICAg IH0NCg0KICAgICAgJC5zdXBwb3J0LnRyYW5zaXRpb24gJiYgdGhpcy4kdGlwLmhh c0NsYXNzKCdmYWRlJykgPw0KICAgICAgICByZW1vdmVXaXRoQW5pbWF0aW9uKCkg Og0KICAgICAgICAkdGlwLmRldGFjaCgpDQoNCiAgICAgIHRoaXMuJGVsZW1lbnQu dHJpZ2dlcignaGlkZGVuJykNCg0KICAgICAgcmV0dXJuIHRoaXMNCiAgICB9DQoN CiAgLCBmaXhUaXRsZTogZnVuY3Rpb24gKCkgew0KICAgICAgdmFyICRlID0gdGhp cy4kZWxlbWVudA0KICAgICAgaWYgKCRlLmF0dHIoJ3RpdGxlJykgfHwgdHlwZW9m KCRlLmF0dHIoJ2RhdGEtb3JpZ2luYWwtdGl0bGUnKSkgIT0gJ3N0cmluZycpIHsN CiAgICAgICAgJGUuYXR0cignZGF0YS1vcmlnaW5hbC10aXRsZScsICRlLmF0dHIo J3RpdGxlJykgfHwgJycpLmF0dHIoJ3RpdGxlJywgJycpDQogICAgICB9DQogICAg fQ0KDQogICwgaGFzQ29udGVudDogZnVuY3Rpb24gKCkgew0KICAgICAgcmV0dXJu IHRoaXMuZ2V0VGl0bGUoKQ0KICAgIH0NCg0KICAsIGdldFBvc2l0aW9uOiBmdW5j dGlvbiAoKSB7DQogICAgICB2YXIgZWwgPSB0aGlzLiRlbGVtZW50WzBdDQogICAg ICByZXR1cm4gJC5leHRlbmQoe30sICh0eXBlb2YgZWwuZ2V0Qm91bmRpbmdDbGll bnRSZWN0ID09ICdmdW5jdGlvbicpID8gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0 KCkgOiB7DQogICAgICAgIHdpZHRoOiBlbC5vZmZzZXRXaWR0aA0KICAgICAgLCBo ZWlnaHQ6IGVsLm9mZnNldEhlaWdodA0KICAgICAgfSwgdGhpcy4kZWxlbWVudC5v ZmZzZXQoKSkNCiAgICB9DQoNCiAgLCBnZXRUaXRsZTogZnVuY3Rpb24gKCkgew0K ICAgICAgdmFyIHRpdGxlDQogICAgICAgICwgJGUgPSB0aGlzLiRlbGVtZW50DQog ICAgICAgICwgbyA9IHRoaXMub3B0aW9ucw0KDQogICAgICB0aXRsZSA9ICRlLmF0 dHIoJ2RhdGEtb3JpZ2luYWwtdGl0bGUnKQ0KICAgICAgICB8fCAodHlwZW9mIG8u dGl0bGUgPT0gJ2Z1bmN0aW9uJyA/IG8udGl0bGUuY2FsbCgkZVswXSkgOiAgby50 aXRsZSkNCg0KICAgICAgcmV0dXJuIHRpdGxlDQogICAgfQ0KDQogICwgdGlwOiBm dW5jdGlvbiAoKSB7DQogICAgICByZXR1cm4gdGhpcy4kdGlwID0gdGhpcy4kdGlw IHx8ICQodGhpcy5vcHRpb25zLnRlbXBsYXRlKQ0KICAgIH0NCg0KICAsIGFycm93 OiBmdW5jdGlvbigpew0KICAgICAgcmV0dXJuIHRoaXMuJGFycm93ID0gdGhpcy4k YXJyb3cgfHwgdGhpcy50aXAoKS5maW5kKCIudG9vbHRpcC1hcnJvdyIpDQogICAg fQ0KDQogICwgdmFsaWRhdGU6IGZ1bmN0aW9uICgpIHsNCiAgICAgIGlmICghdGhp cy4kZWxlbWVudFswXS5wYXJlbnROb2RlKSB7DQogICAgICAgIHRoaXMuaGlkZSgp DQogICAgICAgIHRoaXMuJGVsZW1lbnQgPSBudWxsDQogICAgICAgIHRoaXMub3B0 aW9ucyA9IG51bGwNCiAgICAgIH0NCiAgICB9DQoNCiAgLCBlbmFibGU6IGZ1bmN0 aW9uICgpIHsNCiAgICAgIHRoaXMuZW5hYmxlZCA9IHRydWUNCiAgICB9DQoNCiAg LCBkaXNhYmxlOiBmdW5jdGlvbiAoKSB7DQogICAgICB0aGlzLmVuYWJsZWQgPSBm YWxzZQ0KICAgIH0NCg0KICAsIHRvZ2dsZUVuYWJsZWQ6IGZ1bmN0aW9uICgpIHsN CiAgICAgIHRoaXMuZW5hYmxlZCA9ICF0aGlzLmVuYWJsZWQNCiAgICB9DQoNCiAg LCB0b2dnbGU6IGZ1bmN0aW9uIChlKSB7DQogICAgICB2YXIgc2VsZiA9IGUgPyAk KGUuY3VycmVudFRhcmdldClbdGhpcy50eXBlXSh0aGlzLl9vcHRpb25zKS5kYXRh KHRoaXMudHlwZSkgOiB0aGlzDQogICAgICBzZWxmLnRpcCgpLmhhc0NsYXNzKCdp bicpID8gc2VsZi5oaWRlKCkgOiBzZWxmLnNob3coKQ0KICAgIH0NCg0KICAsIGRl c3Ryb3k6IGZ1bmN0aW9uICgpIHsNCiAgICAgIHRoaXMuaGlkZSgpLiRlbGVtZW50 Lm9mZignLicgKyB0aGlzLnR5cGUpLnJlbW92ZURhdGEodGhpcy50eXBlKQ0KICAg IH0NCg0KICB9DQoNCg0KIC8qIFRPT0xUSVAgUExVR0lOIERFRklOSVRJT04NCiAg KiA9PT09PT09PT09PT09PT09PT09PT09PT09ICovDQoNCiAgdmFyIG9sZCA9ICQu Zm4udG9vbHRpcA0KDQogICQuZm4udG9vbHRpcCA9IGZ1bmN0aW9uICggb3B0aW9u ICkgew0KICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkgew0KICAgICAg dmFyICR0aGlzID0gJCh0aGlzKQ0KICAgICAgICAsIGRhdGEgPSAkdGhpcy5kYXRh KCd0b29sdGlwJykNCiAgICAgICAgLCBvcHRpb25zID0gdHlwZW9mIG9wdGlvbiA9 PSAnb2JqZWN0JyAmJiBvcHRpb24NCiAgICAgIGlmICghZGF0YSkgJHRoaXMuZGF0 YSgndG9vbHRpcCcsIChkYXRhID0gbmV3IFRvb2x0aXAodGhpcywgb3B0aW9ucykp KQ0KICAgICAgaWYgKHR5cGVvZiBvcHRpb24gPT0gJ3N0cmluZycpIGRhdGFbb3B0 aW9uXSgpDQogICAgfSkNCiAgfQ0KDQogICQuZm4udG9vbHRpcC5Db25zdHJ1Y3Rv ciA9IFRvb2x0aXANCg0KICAkLmZuLnRvb2x0aXAuZGVmYXVsdHMgPSB7DQogICAg YW5pbWF0aW9uOiB0cnVlDQogICwgcGxhY2VtZW50OiAndG9wJw0KICAsIHNlbGVj dG9yOiBmYWxzZQ0KICAsIHRlbXBsYXRlOiAnPGRpdiBjbGFzcz0idG9vbHRpcCI+ PGRpdiBjbGFzcz0idG9vbHRpcC1hcnJvdyI+PC9kaXY+PGRpdiBjbGFzcz0idG9v bHRpcC1pbm5lciI+PC9kaXY+PC9kaXY+Jw0KICAsIHRyaWdnZXI6ICdob3ZlciBm b2N1cycNCiAgLCB0aXRsZTogJycNCiAgLCBkZWxheTogMA0KICAsIGh0bWw6IGZh bHNlDQogICwgY29udGFpbmVyOiBmYWxzZQ0KICB9DQoNCg0KIC8qIFRPT0xUSVAg Tk8gQ09ORkxJQ1QNCiAgKiA9PT09PT09PT09PT09PT09PT09ICovDQoNCiAgJC5m bi50b29sdGlwLm5vQ29uZmxpY3QgPSBmdW5jdGlvbiAoKSB7DQogICAgJC5mbi50 b29sdGlwID0gb2xkDQogICAgcmV0dXJuIHRoaXMNCiAgfQ0KDQp9KHdpbmRvdy5q UXVlcnkpOw0KLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0NCiAqIGJvb3RzdHJhcC1wb3BvdmVyLmpz IHYyLjMuMQ0KICogaHR0cDovL3R3aXR0ZXIuZ2l0aHViLmNvbS9ib290c3RyYXAv amF2YXNjcmlwdC5odG1sI3BvcG92ZXJzDQogKiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KICogQ29w eXJpZ2h0IDIwMTIgVHdpdHRlciwgSW5jLg0KICoNCiAqIExpY2Vuc2VkIHVuZGVy IHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIp Ow0KICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp YW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KICogWW91IG1heSBvYnRhaW4gYSBjb3B5 IG9mIHRoZSBMaWNlbnNlIGF0DQogKg0KICogaHR0cDovL3d3dy5hcGFjaGUub3Jn L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQogKg0KICogVW5sZXNzIHJlcXVpcmVkIGJ5 IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy ZQ0KICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0 ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCiAqIFdJVEhPVVQgV0FSUkFOVElFUyBP UiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBs aWVkLg0KICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KICogbGltaXRhdGlvbnMgdW5k ZXIgdGhlIExpY2Vuc2UuDQogKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLw0KDQoNCiFmdW5jdGlv biAoJCkgew0KDQogICJ1c2Ugc3RyaWN0IjsgLy8ganNoaW50IDtfOw0KDQoNCiAv KiBQT1BPVkVSIFBVQkxJQyBDTEFTUyBERUZJTklUSU9ODQogICogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PSAqLw0KDQogIHZhciBQb3BvdmVyID0gZnVu Y3Rpb24gKGVsZW1lbnQsIG9wdGlvbnMpIHsNCiAgICB0aGlzLmluaXQoJ3BvcG92 ZXInLCBlbGVtZW50LCBvcHRpb25zKQ0KICB9DQoNCg0KICAvKiBOT1RFOiBQT1BP VkVSIEVYVEVORFMgQk9PVFNUUkFQLVRPT0xUSVAuanMNCiAgICAgPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovDQoNCiAgUG9wb3Zl ci5wcm90b3R5cGUgPSAkLmV4dGVuZCh7fSwgJC5mbi50b29sdGlwLkNvbnN0cnVj dG9yLnByb3RvdHlwZSwgew0KDQogICAgY29uc3RydWN0b3I6IFBvcG92ZXINCg0K ICAsIHNldENvbnRlbnQ6IGZ1bmN0aW9uICgpIHsNCiAgICAgIHZhciAkdGlwID0g dGhpcy50aXAoKQ0KICAgICAgICAsIHRpdGxlID0gdGhpcy5nZXRUaXRsZSgpDQog ICAgICAgICwgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpDQoNCiAgICAgICR0 aXAuZmluZCgnLnBvcG92ZXItdGl0bGUnKVt0aGlzLm9wdGlvbnMuaHRtbCA/ICdo dG1sJyA6ICd0ZXh0J10odGl0bGUpDQogICAgICAkdGlwLmZpbmQoJy5wb3BvdmVy LWNvbnRlbnQnKVt0aGlzLm9wdGlvbnMuaHRtbCA/ICdodG1sJyA6ICd0ZXh0J10o Y29udGVudCkNCg0KICAgICAgJHRpcC5yZW1vdmVDbGFzcygnZmFkZSB0b3AgYm90 dG9tIGxlZnQgcmlnaHQgaW4nKQ0KICAgIH0NCg0KICAsIGhhc0NvbnRlbnQ6IGZ1 bmN0aW9uICgpIHsNCiAgICAgIHJldHVybiB0aGlzLmdldFRpdGxlKCkgfHwgdGhp cy5nZXRDb250ZW50KCkNCiAgICB9DQoNCiAgLCBnZXRDb250ZW50OiBmdW5jdGlv biAoKSB7DQogICAgICB2YXIgY29udGVudA0KICAgICAgICAsICRlID0gdGhpcy4k ZWxlbWVudA0KICAgICAgICAsIG8gPSB0aGlzLm9wdGlvbnMNCg0KICAgICAgY29u dGVudCA9ICh0eXBlb2Ygby5jb250ZW50ID09ICdmdW5jdGlvbicgPyBvLmNvbnRl bnQuY2FsbCgkZVswXSkgOiAgby5jb250ZW50KQ0KICAgICAgICB8fCAkZS5hdHRy KCdkYXRhLWNvbnRlbnQnKQ0KDQogICAgICByZXR1cm4gY29udGVudA0KICAgIH0N Cg0KICAsIHRpcDogZnVuY3Rpb24gKCkgew0KICAgICAgaWYgKCF0aGlzLiR0aXAp IHsNCiAgICAgICAgdGhpcy4kdGlwID0gJCh0aGlzLm9wdGlvbnMudGVtcGxhdGUp DQogICAgICB9DQogICAgICByZXR1cm4gdGhpcy4kdGlwDQogICAgfQ0KDQogICwg ZGVzdHJveTogZnVuY3Rpb24gKCkgew0KICAgICAgdGhpcy5oaWRlKCkuJGVsZW1l bnQub2ZmKCcuJyArIHRoaXMudHlwZSkucmVtb3ZlRGF0YSh0aGlzLnR5cGUpDQog ICAgfQ0KDQogIH0pDQoNCg0KIC8qIFBPUE9WRVIgUExVR0lOIERFRklOSVRJT04N CiAgKiA9PT09PT09PT09PT09PT09PT09PT09PSAqLw0KDQogIHZhciBvbGQgPSAk LmZuLnBvcG92ZXINCg0KICAkLmZuLnBvcG92ZXIgPSBmdW5jdGlvbiAob3B0aW9u KSB7DQogICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7DQogICAgICB2 YXIgJHRoaXMgPSAkKHRoaXMpDQogICAgICAgICwgZGF0YSA9ICR0aGlzLmRhdGEo J3BvcG92ZXInKQ0KICAgICAgICAsIG9wdGlvbnMgPSB0eXBlb2Ygb3B0aW9uID09 ICdvYmplY3QnICYmIG9wdGlvbg0KICAgICAgaWYgKCFkYXRhKSAkdGhpcy5kYXRh KCdwb3BvdmVyJywgKGRhdGEgPSBuZXcgUG9wb3Zlcih0aGlzLCBvcHRpb25zKSkp DQogICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PSAnc3RyaW5nJykgZGF0YVtvcHRp b25dKCkNCiAgICB9KQ0KICB9DQoNCiAgJC5mbi5wb3BvdmVyLkNvbnN0cnVjdG9y ID0gUG9wb3Zlcg0KDQogICQuZm4ucG9wb3Zlci5kZWZhdWx0cyA9ICQuZXh0ZW5k KHt9ICwgJC5mbi50b29sdGlwLmRlZmF1bHRzLCB7DQogICAgcGxhY2VtZW50OiAn cmlnaHQnDQogICwgdHJpZ2dlcjogJ2NsaWNrJw0KICAsIGNvbnRlbnQ6ICcnDQog ICwgdGVtcGxhdGU6ICc8ZGl2IGNsYXNzPSJwb3BvdmVyIj48ZGl2IGNsYXNzPSJh cnJvdyI+PC9kaXY+PGgzIGNsYXNzPSJwb3BvdmVyLXRpdGxlIj48L2gzPjxkaXYg Y2xhc3M9InBvcG92ZXItY29udGVudCI+PC9kaXY+PC9kaXY+Jw0KICB9KQ0KDQoN CiAvKiBQT1BPVkVSIE5PIENPTkZMSUNUDQogICogPT09PT09PT09PT09PT09PT09 PSAqLw0KDQogICQuZm4ucG9wb3Zlci5ub0NvbmZsaWN0ID0gZnVuY3Rpb24gKCkg ew0KICAgICQuZm4ucG9wb3ZlciA9IG9sZA0KICAgIHJldHVybiB0aGlzDQogIH0N Cg0KfSh3aW5kb3cualF1ZXJ5KTsNCi8qID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiAqIGJvb3Rz dHJhcC1zY3JvbGxzcHkuanMgdjIuMy4xDQogKiBodHRwOi8vdHdpdHRlci5naXRo dWIuY29tL2Jvb3RzdHJhcC9qYXZhc2NyaXB0Lmh0bWwjc2Nyb2xsc3B5DQogKiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09DQogKiBDb3B5cmlnaHQgMjAxMiBUd2l0dGVyLCBJbmMuDQog Kg0KICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9u IDIuMCAodGhlICJMaWNlbnNlIik7DQogKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQogKiBZ b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCiAqDQogKiBo dHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCiAqDQog KiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv IGluIHdyaXRpbmcsIHNvZnR3YXJlDQogKiBkaXN0cmlidXRlZCB1bmRlciB0aGUg TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KICog V0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVp dGhlciBleHByZXNzIG9yIGltcGxpZWQuDQogKiBTZWUgdGhlIExpY2Vuc2UgZm9y IHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5k DQogKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCiAqID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09ICovDQoNCg0KIWZ1bmN0aW9uICgkKSB7DQoNCiAgInVzZSBzdHJpY3Qi OyAvLyBqc2hpbnQgO187DQoNCg0KIC8qIFNDUk9MTFNQWSBDTEFTUyBERUZJTklU SU9ODQogICogPT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8NCg0KICBmdW5j dGlvbiBTY3JvbGxTcHkoZWxlbWVudCwgb3B0aW9ucykgew0KICAgIHZhciBwcm9j ZXNzID0gJC5wcm94eSh0aGlzLnByb2Nlc3MsIHRoaXMpDQogICAgICAsICRlbGVt ZW50ID0gJChlbGVtZW50KS5pcygnYm9keScpID8gJCh3aW5kb3cpIDogJChlbGVt ZW50KQ0KICAgICAgLCBocmVmDQogICAgdGhpcy5vcHRpb25zID0gJC5leHRlbmQo e30sICQuZm4uc2Nyb2xsc3B5LmRlZmF1bHRzLCBvcHRpb25zKQ0KICAgIHRoaXMu JHNjcm9sbEVsZW1lbnQgPSAkZWxlbWVudC5vbignc2Nyb2xsLnNjcm9sbC1zcHku ZGF0YS1hcGknLCBwcm9jZXNzKQ0KICAgIHRoaXMuc2VsZWN0b3IgPSAodGhpcy5v cHRpb25zLnRhcmdldA0KICAgICAgfHwgKChocmVmID0gJChlbGVtZW50KS5hdHRy KCdocmVmJykpICYmIGhyZWYucmVwbGFjZSgvLiooPz0jW15cc10rJCkvLCAnJykp IC8vc3RyaXAgZm9yIGllNw0KICAgICAgfHwgJycpICsgJyAubmF2IGxpID4gYScN CiAgICB0aGlzLiRib2R5ID0gJCgnYm9keScpDQogICAgdGhpcy5yZWZyZXNoKCkN CiAgICB0aGlzLnByb2Nlc3MoKQ0KICB9DQoNCiAgU2Nyb2xsU3B5LnByb3RvdHlw ZSA9IHsNCg0KICAgICAgY29uc3RydWN0b3I6IFNjcm9sbFNweQ0KDQogICAgLCBy ZWZyZXNoOiBmdW5jdGlvbiAoKSB7DQogICAgICAgIHZhciBzZWxmID0gdGhpcw0K ICAgICAgICAgICwgJHRhcmdldHMNCg0KICAgICAgICB0aGlzLm9mZnNldHMgPSAk KFtdKQ0KICAgICAgICB0aGlzLnRhcmdldHMgPSAkKFtdKQ0KDQogICAgICAgICR0 YXJnZXRzID0gdGhpcy4kYm9keQ0KICAgICAgICAgIC5maW5kKHRoaXMuc2VsZWN0 b3IpDQogICAgICAgICAgLm1hcChmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICB2 YXIgJGVsID0gJCh0aGlzKQ0KICAgICAgICAgICAgICAsIGhyZWYgPSAkZWwuZGF0 YSgndGFyZ2V0JykgfHwgJGVsLmF0dHIoJ2hyZWYnKQ0KICAgICAgICAgICAgICAs ICRocmVmID0gL14jXHcvLnRlc3QoaHJlZikgJiYgJChocmVmKQ0KICAgICAgICAg ICAgcmV0dXJuICggJGhyZWYNCiAgICAgICAgICAgICAgJiYgJGhyZWYubGVuZ3Ro DQogICAgICAgICAgICAgICYmIFtbICRocmVmLnBvc2l0aW9uKCkudG9wICsgKCEk LmlzV2luZG93KHNlbGYuJHNjcm9sbEVsZW1lbnQuZ2V0KDApKSAmJiBzZWxmLiRz Y3JvbGxFbGVtZW50LnNjcm9sbFRvcCgpKSwgaHJlZiBdXSApIHx8IG51bGwNCiAg ICAgICAgICB9KQ0KICAgICAgICAgIC5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7IHJl dHVybiBhWzBdIC0gYlswXSB9KQ0KICAgICAgICAgIC5lYWNoKGZ1bmN0aW9uICgp IHsNCiAgICAgICAgICAgIHNlbGYub2Zmc2V0cy5wdXNoKHRoaXNbMF0pDQogICAg ICAgICAgICBzZWxmLnRhcmdldHMucHVzaCh0aGlzWzFdKQ0KICAgICAgICAgIH0p DQogICAgICB9DQoNCiAgICAsIHByb2Nlc3M6IGZ1bmN0aW9uICgpIHsNCiAgICAg ICAgdmFyIHNjcm9sbFRvcCA9IHRoaXMuJHNjcm9sbEVsZW1lbnQuc2Nyb2xsVG9w KCkgKyB0aGlzLm9wdGlvbnMub2Zmc2V0DQogICAgICAgICAgLCBzY3JvbGxIZWln aHQgPSB0aGlzLiRzY3JvbGxFbGVtZW50WzBdLnNjcm9sbEhlaWdodCB8fCB0aGlz LiRib2R5WzBdLnNjcm9sbEhlaWdodA0KICAgICAgICAgICwgbWF4U2Nyb2xsID0g c2Nyb2xsSGVpZ2h0IC0gdGhpcy4kc2Nyb2xsRWxlbWVudC5oZWlnaHQoKQ0KICAg ICAgICAgICwgb2Zmc2V0cyA9IHRoaXMub2Zmc2V0cw0KICAgICAgICAgICwgdGFy Z2V0cyA9IHRoaXMudGFyZ2V0cw0KICAgICAgICAgICwgYWN0aXZlVGFyZ2V0ID0g dGhpcy5hY3RpdmVUYXJnZXQNCiAgICAgICAgICAsIGkNCg0KICAgICAgICBpZiAo c2Nyb2xsVG9wID49IG1heFNjcm9sbCkgew0KICAgICAgICAgIHJldHVybiBhY3Rp dmVUYXJnZXQgIT0gKGkgPSB0YXJnZXRzLmxhc3QoKVswXSkNCiAgICAgICAgICAg ICYmIHRoaXMuYWN0aXZhdGUgKCBpICkNCiAgICAgICAgfQ0KDQogICAgICAgIGZv ciAoaSA9IG9mZnNldHMubGVuZ3RoOyBpLS07KSB7DQogICAgICAgICAgYWN0aXZl VGFyZ2V0ICE9IHRhcmdldHNbaV0NCiAgICAgICAgICAgICYmIHNjcm9sbFRvcCA+ PSBvZmZzZXRzW2ldDQogICAgICAgICAgICAmJiAoIW9mZnNldHNbaSArIDFdIHx8 IHNjcm9sbFRvcCA8PSBvZmZzZXRzW2kgKyAxXSkNCiAgICAgICAgICAgICYmIHRo aXMuYWN0aXZhdGUoIHRhcmdldHNbaV0gKQ0KICAgICAgICB9DQogICAgICB9DQoN CiAgICAsIGFjdGl2YXRlOiBmdW5jdGlvbiAodGFyZ2V0KSB7DQogICAgICAgIHZh ciBhY3RpdmUNCiAgICAgICAgICAsIHNlbGVjdG9yDQoNCiAgICAgICAgdGhpcy5h Y3RpdmVUYXJnZXQgPSB0YXJnZXQNCg0KICAgICAgICAkKHRoaXMuc2VsZWN0b3Ip DQogICAgICAgICAgLnBhcmVudCgnLmFjdGl2ZScpDQogICAgICAgICAgLnJlbW92 ZUNsYXNzKCdhY3RpdmUnKQ0KDQogICAgICAgIHNlbGVjdG9yID0gdGhpcy5zZWxl Y3Rvcg0KICAgICAgICAgICsgJ1tkYXRhLXRhcmdldD0iJyArIHRhcmdldCArICci XSwnDQogICAgICAgICAgKyB0aGlzLnNlbGVjdG9yICsgJ1tocmVmPSInICsgdGFy Z2V0ICsgJyJdJw0KDQogICAgICAgIGFjdGl2ZSA9ICQoc2VsZWN0b3IpDQogICAg ICAgICAgLnBhcmVudCgnbGknKQ0KICAgICAgICAgIC5hZGRDbGFzcygnYWN0aXZl JykNCg0KICAgICAgICBpZiAoYWN0aXZlLnBhcmVudCgnLmRyb3Bkb3duLW1lbnUn KS5sZW5ndGgpICB7DQogICAgICAgICAgYWN0aXZlID0gYWN0aXZlLmNsb3Nlc3Qo J2xpLmRyb3Bkb3duJykuYWRkQ2xhc3MoJ2FjdGl2ZScpDQogICAgICAgIH0NCg0K ICAgICAgICBhY3RpdmUudHJpZ2dlcignYWN0aXZhdGUnKQ0KICAgICAgfQ0KDQog IH0NCg0KDQogLyogU0NST0xMU1BZIFBMVUdJTiBERUZJTklUSU9ODQogICogPT09 PT09PT09PT09PT09PT09PT09PT09PT09ICovDQoNCiAgdmFyIG9sZCA9ICQuZm4u c2Nyb2xsc3B5DQoNCiAgJC5mbi5zY3JvbGxzcHkgPSBmdW5jdGlvbiAob3B0aW9u KSB7DQogICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7DQogICAgICB2 YXIgJHRoaXMgPSAkKHRoaXMpDQogICAgICAgICwgZGF0YSA9ICR0aGlzLmRhdGEo J3Njcm9sbHNweScpDQogICAgICAgICwgb3B0aW9ucyA9IHR5cGVvZiBvcHRpb24g PT0gJ29iamVjdCcgJiYgb3B0aW9uDQogICAgICBpZiAoIWRhdGEpICR0aGlzLmRh dGEoJ3Njcm9sbHNweScsIChkYXRhID0gbmV3IFNjcm9sbFNweSh0aGlzLCBvcHRp b25zKSkpDQogICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PSAnc3RyaW5nJykgZGF0 YVtvcHRpb25dKCkNCiAgICB9KQ0KICB9DQoNCiAgJC5mbi5zY3JvbGxzcHkuQ29u c3RydWN0b3IgPSBTY3JvbGxTcHkNCg0KICAkLmZuLnNjcm9sbHNweS5kZWZhdWx0 cyA9IHsNCiAgICBvZmZzZXQ6IDEwDQogIH0NCg0KDQogLyogU0NST0xMU1BZIE5P IENPTkZMSUNUDQogICogPT09PT09PT09PT09PT09PT09PT09ICovDQoNCiAgJC5m bi5zY3JvbGxzcHkubm9Db25mbGljdCA9IGZ1bmN0aW9uICgpIHsNCiAgICAkLmZu LnNjcm9sbHNweSA9IG9sZA0KICAgIHJldHVybiB0aGlzDQogIH0NCg0KDQogLyog U0NST0xMU1BZIERBVEEtQVBJDQogICogPT09PT09PT09PT09PT09PT09ICovDQoN CiAgJCh3aW5kb3cpLm9uKCdsb2FkJywgZnVuY3Rpb24gKCkgew0KICAgICQoJ1tk YXRhLXNweT0ic2Nyb2xsIl0nKS5lYWNoKGZ1bmN0aW9uICgpIHsNCiAgICAgIHZh ciAkc3B5ID0gJCh0aGlzKQ0KICAgICAgJHNweS5zY3JvbGxzcHkoJHNweS5kYXRh KCkpDQogICAgfSkNCiAgfSkNCg0KfSh3aW5kb3cualF1ZXJ5KTsvKiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQ0KICogYm9vdHN0cmFwLXRhYi5qcyB2Mi4zLjENCiAqIGh0dHA6Ly90d2l0dGVy LmdpdGh1Yi5jb20vYm9vdHN0cmFwL2phdmFzY3JpcHQuaHRtbCN0YWJzDQogKiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQ0KICogQ29weXJpZ2h0IDIwMTIgVHdpdHRlciwgSW5jLg0KICoNCiAq IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAg KHRoZSAiTGljZW5zZSIpOw0KICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KICogWW91IG1h eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQogKg0KICogaHR0cDov L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQogKg0KICogVW5s ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3 cml0aW5nLCBzb2Z0d2FyZQ0KICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCiAqIFdJVEhP VVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIg ZXhwcmVzcyBvciBpbXBsaWVkLg0KICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUg c3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KICog bGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQogKiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLw0K DQoNCiFmdW5jdGlvbiAoJCkgew0KDQogICJ1c2Ugc3RyaWN0IjsgLy8ganNoaW50 IDtfOw0KDQoNCiAvKiBUQUIgQ0xBU1MgREVGSU5JVElPTg0KICAqID09PT09PT09 PT09PT09PT09PT09ICovDQoNCiAgdmFyIFRhYiA9IGZ1bmN0aW9uIChlbGVtZW50 KSB7DQogICAgdGhpcy5lbGVtZW50ID0gJChlbGVtZW50KQ0KICB9DQoNCiAgVGFi LnByb3RvdHlwZSA9IHsNCg0KICAgIGNvbnN0cnVjdG9yOiBUYWINCg0KICAsIHNo b3c6IGZ1bmN0aW9uICgpIHsNCiAgICAgIHZhciAkdGhpcyA9IHRoaXMuZWxlbWVu dA0KICAgICAgICAsICR1bCA9ICR0aGlzLmNsb3Nlc3QoJ3VsOm5vdCguZHJvcGRv d24tbWVudSknKQ0KICAgICAgICAsIHNlbGVjdG9yID0gJHRoaXMuYXR0cignZGF0 YS10YXJnZXQnKQ0KICAgICAgICAsIHByZXZpb3VzDQogICAgICAgICwgJHRhcmdl dA0KICAgICAgICAsIGUNCg0KICAgICAgaWYgKCFzZWxlY3Rvcikgew0KICAgICAg ICBzZWxlY3RvciA9ICR0aGlzLmF0dHIoJ2hyZWYnKQ0KICAgICAgICBzZWxlY3Rv ciA9IHNlbGVjdG9yICYmIHNlbGVjdG9yLnJlcGxhY2UoLy4qKD89I1teXHNdKiQp LywgJycpIC8vc3RyaXAgZm9yIGllNw0KICAgICAgfQ0KDQogICAgICBpZiAoICR0 aGlzLnBhcmVudCgnbGknKS5oYXNDbGFzcygnYWN0aXZlJykgKSByZXR1cm4NCg0K ICAgICAgcHJldmlvdXMgPSAkdWwuZmluZCgnLmFjdGl2ZTpsYXN0IGEnKVswXQ0K DQogICAgICBlID0gJC5FdmVudCgnc2hvdycsIHsNCiAgICAgICAgcmVsYXRlZFRh cmdldDogcHJldmlvdXMNCiAgICAgIH0pDQoNCiAgICAgICR0aGlzLnRyaWdnZXIo ZSkNCg0KICAgICAgaWYgKGUuaXNEZWZhdWx0UHJldmVudGVkKCkpIHJldHVybg0K DQogICAgICAkdGFyZ2V0ID0gJChzZWxlY3RvcikNCg0KICAgICAgdGhpcy5hY3Rp dmF0ZSgkdGhpcy5wYXJlbnQoJ2xpJyksICR1bCkNCiAgICAgIHRoaXMuYWN0aXZh dGUoJHRhcmdldCwgJHRhcmdldC5wYXJlbnQoKSwgZnVuY3Rpb24gKCkgew0KICAg ICAgICAkdGhpcy50cmlnZ2VyKHsNCiAgICAgICAgICB0eXBlOiAnc2hvd24nDQog ICAgICAgICwgcmVsYXRlZFRhcmdldDogcHJldmlvdXMNCiAgICAgICAgfSkNCiAg ICAgIH0pDQogICAgfQ0KDQogICwgYWN0aXZhdGU6IGZ1bmN0aW9uICggZWxlbWVu dCwgY29udGFpbmVyLCBjYWxsYmFjaykgew0KICAgICAgdmFyICRhY3RpdmUgPSBj b250YWluZXIuZmluZCgnPiAuYWN0aXZlJykNCiAgICAgICAgLCB0cmFuc2l0aW9u ID0gY2FsbGJhY2sNCiAgICAgICAgICAgICYmICQuc3VwcG9ydC50cmFuc2l0aW9u DQogICAgICAgICAgICAmJiAkYWN0aXZlLmhhc0NsYXNzKCdmYWRlJykNCg0KICAg ICAgZnVuY3Rpb24gbmV4dCgpIHsNCiAgICAgICAgJGFjdGl2ZQ0KICAgICAgICAg IC5yZW1vdmVDbGFzcygnYWN0aXZlJykNCiAgICAgICAgICAuZmluZCgnPiAuZHJv cGRvd24tbWVudSA+IC5hY3RpdmUnKQ0KICAgICAgICAgIC5yZW1vdmVDbGFzcygn YWN0aXZlJykNCg0KICAgICAgICBlbGVtZW50LmFkZENsYXNzKCdhY3RpdmUnKQ0K DQogICAgICAgIGlmICh0cmFuc2l0aW9uKSB7DQogICAgICAgICAgZWxlbWVudFsw XS5vZmZzZXRXaWR0aCAvLyByZWZsb3cgZm9yIHRyYW5zaXRpb24NCiAgICAgICAg ICBlbGVtZW50LmFkZENsYXNzKCdpbicpDQogICAgICAgIH0gZWxzZSB7DQogICAg ICAgICAgZWxlbWVudC5yZW1vdmVDbGFzcygnZmFkZScpDQogICAgICAgIH0NCg0K ICAgICAgICBpZiAoIGVsZW1lbnQucGFyZW50KCcuZHJvcGRvd24tbWVudScpICkg ew0KICAgICAgICAgIGVsZW1lbnQuY2xvc2VzdCgnbGkuZHJvcGRvd24nKS5hZGRD bGFzcygnYWN0aXZlJykNCiAgICAgICAgfQ0KDQogICAgICAgIGNhbGxiYWNrICYm IGNhbGxiYWNrKCkNCiAgICAgIH0NCg0KICAgICAgdHJhbnNpdGlvbiA/DQogICAg ICAgICRhY3RpdmUub25lKCQuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCwgbmV4dCkg Og0KICAgICAgICBuZXh0KCkNCg0KICAgICAgJGFjdGl2ZS5yZW1vdmVDbGFzcygn aW4nKQ0KICAgIH0NCiAgfQ0KDQoNCiAvKiBUQUIgUExVR0lOIERFRklOSVRJT04N CiAgKiA9PT09PT09PT09PT09PT09PT09PT0gKi8NCg0KICB2YXIgb2xkID0gJC5m bi50YWINCg0KICAkLmZuLnRhYiA9IGZ1bmN0aW9uICggb3B0aW9uICkgew0KICAg IHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkgew0KICAgICAgdmFyICR0aGlz ID0gJCh0aGlzKQ0KICAgICAgICAsIGRhdGEgPSAkdGhpcy5kYXRhKCd0YWInKQ0K ICAgICAgaWYgKCFkYXRhKSAkdGhpcy5kYXRhKCd0YWInLCAoZGF0YSA9IG5ldyBU YWIodGhpcykpKQ0KICAgICAgaWYgKHR5cGVvZiBvcHRpb24gPT0gJ3N0cmluZycp IGRhdGFbb3B0aW9uXSgpDQogICAgfSkNCiAgfQ0KDQogICQuZm4udGFiLkNvbnN0 cnVjdG9yID0gVGFiDQoNCg0KIC8qIFRBQiBOTyBDT05GTElDVA0KICAqID09PT09 PT09PT09PT09PSAqLw0KDQogICQuZm4udGFiLm5vQ29uZmxpY3QgPSBmdW5jdGlv biAoKSB7DQogICAgJC5mbi50YWIgPSBvbGQNCiAgICByZXR1cm4gdGhpcw0KICB9 DQoNCg0KIC8qIFRBQiBEQVRBLUFQSQ0KICAqID09PT09PT09PT09PSAqLw0KDQog ICQoZG9jdW1lbnQpLm9uKCdjbGljay50YWIuZGF0YS1hcGknLCAnW2RhdGEtdG9n Z2xlPSJ0YWIiXSwgW2RhdGEtdG9nZ2xlPSJwaWxsIl0nLCBmdW5jdGlvbiAoZSkg ew0KICAgIGUucHJldmVudERlZmF1bHQoKQ0KICAgICQodGhpcykudGFiKCdzaG93 JykNCiAgfSkNCg0KfSh3aW5kb3cualF1ZXJ5KTsvKiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQog KiBib290c3RyYXAtdHlwZWFoZWFkLmpzIHYyLjMuMQ0KICogaHR0cDovL3R3aXR0 ZXIuZ2l0aHViLmNvbS9ib290c3RyYXAvamF2YXNjcmlwdC5odG1sI3R5cGVhaGVh ZA0KICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQ0KICogQ29weXJpZ2h0IDIwMTIgVHdpdHRlciwg SW5jLg0KICoNCiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwg VmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KICogeW91IG1heSBub3QgdXNl IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl Lg0KICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQog Kg0KICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w DQogKg0KICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KICogZGlzdHJpYnV0ZWQgdW5k ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ UywNCiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBL SU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KICogU2VlIHRoZSBMaWNl bnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Np b25zIGFuZA0KICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQogKiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0gKi8NCg0KDQohZnVuY3Rpb24oJCl7DQoNCiAgInVzZSBzdHJp Y3QiOyAvLyBqc2hpbnQgO187DQoNCg0KIC8qIFRZUEVBSEVBRCBQVUJMSUMgQ0xB U1MgREVGSU5JVElPTg0KICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PSAqLw0KDQogIHZhciBUeXBlYWhlYWQgPSBmdW5jdGlvbiAoZWxlbWVudCwg b3B0aW9ucykgew0KICAgIHRoaXMuJGVsZW1lbnQgPSAkKGVsZW1lbnQpDQogICAg dGhpcy5vcHRpb25zID0gJC5leHRlbmQoe30sICQuZm4udHlwZWFoZWFkLmRlZmF1 bHRzLCBvcHRpb25zKQ0KICAgIHRoaXMubWF0Y2hlciA9IHRoaXMub3B0aW9ucy5t YXRjaGVyIHx8IHRoaXMubWF0Y2hlcg0KICAgIHRoaXMuc29ydGVyID0gdGhpcy5v cHRpb25zLnNvcnRlciB8fCB0aGlzLnNvcnRlcg0KICAgIHRoaXMuaGlnaGxpZ2h0 ZXIgPSB0aGlzLm9wdGlvbnMuaGlnaGxpZ2h0ZXIgfHwgdGhpcy5oaWdobGlnaHRl cg0KICAgIHRoaXMudXBkYXRlciA9IHRoaXMub3B0aW9ucy51cGRhdGVyIHx8IHRo aXMudXBkYXRlcg0KICAgIHRoaXMuc291cmNlID0gdGhpcy5vcHRpb25zLnNvdXJj ZQ0KICAgIHRoaXMuJG1lbnUgPSAkKHRoaXMub3B0aW9ucy5tZW51KQ0KICAgIHRo aXMuc2hvd24gPSBmYWxzZQ0KICAgIHRoaXMubGlzdGVuKCkNCiAgfQ0KDQogIFR5 cGVhaGVhZC5wcm90b3R5cGUgPSB7DQoNCiAgICBjb25zdHJ1Y3RvcjogVHlwZWFo ZWFkDQoNCiAgLCBzZWxlY3Q6IGZ1bmN0aW9uICgpIHsNCiAgICAgIHZhciB2YWwg PSB0aGlzLiRtZW51LmZpbmQoJy5hY3RpdmUnKS5hdHRyKCdkYXRhLXZhbHVlJykN CiAgICAgIHRoaXMuJGVsZW1lbnQNCiAgICAgICAgLnZhbCh0aGlzLnVwZGF0ZXIo dmFsKSkNCiAgICAgICAgLmNoYW5nZSgpDQogICAgICByZXR1cm4gdGhpcy5oaWRl KCkNCiAgICB9DQoNCiAgLCB1cGRhdGVyOiBmdW5jdGlvbiAoaXRlbSkgew0KICAg ICAgcmV0dXJuIGl0ZW0NCiAgICB9DQoNCiAgLCBzaG93OiBmdW5jdGlvbiAoKSB7 DQogICAgICB2YXIgcG9zID0gJC5leHRlbmQoe30sIHRoaXMuJGVsZW1lbnQucG9z aXRpb24oKSwgew0KICAgICAgICBoZWlnaHQ6IHRoaXMuJGVsZW1lbnRbMF0ub2Zm c2V0SGVpZ2h0DQogICAgICB9KQ0KDQogICAgICB0aGlzLiRtZW51DQogICAgICAg IC5pbnNlcnRBZnRlcih0aGlzLiRlbGVtZW50KQ0KICAgICAgICAuY3NzKHsNCiAg ICAgICAgICB0b3A6IHBvcy50b3AgKyBwb3MuaGVpZ2h0DQogICAgICAgICwgbGVm dDogcG9zLmxlZnQNCiAgICAgICAgfSkNCiAgICAgICAgLnNob3coKQ0KDQogICAg ICB0aGlzLnNob3duID0gdHJ1ZQ0KICAgICAgcmV0dXJuIHRoaXMNCiAgICB9DQoN CiAgLCBoaWRlOiBmdW5jdGlvbiAoKSB7DQogICAgICB0aGlzLiRtZW51LmhpZGUo KQ0KICAgICAgdGhpcy5zaG93biA9IGZhbHNlDQogICAgICByZXR1cm4gdGhpcw0K ICAgIH0NCg0KICAsIGxvb2t1cDogZnVuY3Rpb24gKGV2ZW50KSB7DQogICAgICB2 YXIgaXRlbXMNCg0KICAgICAgdGhpcy5xdWVyeSA9IHRoaXMuJGVsZW1lbnQudmFs KCkNCg0KICAgICAgaWYgKCF0aGlzLnF1ZXJ5IHx8IHRoaXMucXVlcnkubGVuZ3Ro IDwgdGhpcy5vcHRpb25zLm1pbkxlbmd0aCkgew0KICAgICAgICByZXR1cm4gdGhp cy5zaG93biA/IHRoaXMuaGlkZSgpIDogdGhpcw0KICAgICAgfQ0KDQogICAgICBp dGVtcyA9ICQuaXNGdW5jdGlvbih0aGlzLnNvdXJjZSkgPyB0aGlzLnNvdXJjZSh0 aGlzLnF1ZXJ5LCAkLnByb3h5KHRoaXMucHJvY2VzcywgdGhpcykpIDogdGhpcy5z b3VyY2UNCg0KICAgICAgcmV0dXJuIGl0ZW1zID8gdGhpcy5wcm9jZXNzKGl0ZW1z KSA6IHRoaXMNCiAgICB9DQoNCiAgLCBwcm9jZXNzOiBmdW5jdGlvbiAoaXRlbXMp IHsNCiAgICAgIHZhciB0aGF0ID0gdGhpcw0KDQogICAgICBpdGVtcyA9ICQuZ3Jl cChpdGVtcywgZnVuY3Rpb24gKGl0ZW0pIHsNCiAgICAgICAgcmV0dXJuIHRoYXQu bWF0Y2hlcihpdGVtKQ0KICAgICAgfSkNCg0KICAgICAgaXRlbXMgPSB0aGlzLnNv cnRlcihpdGVtcykNCg0KICAgICAgaWYgKCFpdGVtcy5sZW5ndGgpIHsNCiAgICAg ICAgcmV0dXJuIHRoaXMuc2hvd24gPyB0aGlzLmhpZGUoKSA6IHRoaXMNCiAgICAg IH0NCg0KICAgICAgcmV0dXJuIHRoaXMucmVuZGVyKGl0ZW1zLnNsaWNlKDAsIHRo aXMub3B0aW9ucy5pdGVtcykpLnNob3coKQ0KICAgIH0NCg0KICAsIG1hdGNoZXI6 IGZ1bmN0aW9uIChpdGVtKSB7DQogICAgICByZXR1cm4gfml0ZW0udG9Mb3dlckNh c2UoKS5pbmRleE9mKHRoaXMucXVlcnkudG9Mb3dlckNhc2UoKSkNCiAgICB9DQoN CiAgLCBzb3J0ZXI6IGZ1bmN0aW9uIChpdGVtcykgew0KICAgICAgdmFyIGJlZ2lu c3dpdGggPSBbXQ0KICAgICAgICAsIGNhc2VTZW5zaXRpdmUgPSBbXQ0KICAgICAg ICAsIGNhc2VJbnNlbnNpdGl2ZSA9IFtdDQogICAgICAgICwgaXRlbQ0KDQogICAg ICB3aGlsZSAoaXRlbSA9IGl0ZW1zLnNoaWZ0KCkpIHsNCiAgICAgICAgaWYgKCFp dGVtLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0aGlzLnF1ZXJ5LnRvTG93ZXJDYXNl KCkpKSBiZWdpbnN3aXRoLnB1c2goaXRlbSkNCiAgICAgICAgZWxzZSBpZiAofml0 ZW0uaW5kZXhPZih0aGlzLnF1ZXJ5KSkgY2FzZVNlbnNpdGl2ZS5wdXNoKGl0ZW0p DQogICAgICAgIGVsc2UgY2FzZUluc2Vuc2l0aXZlLnB1c2goaXRlbSkNCiAgICAg IH0NCg0KICAgICAgcmV0dXJuIGJlZ2luc3dpdGguY29uY2F0KGNhc2VTZW5zaXRp dmUsIGNhc2VJbnNlbnNpdGl2ZSkNCiAgICB9DQoNCiAgLCBoaWdobGlnaHRlcjog ZnVuY3Rpb24gKGl0ZW0pIHsNCiAgICAgIHZhciBxdWVyeSA9IHRoaXMucXVlcnku cmVwbGFjZSgvW1wtXFtcXXt9KCkqKz8uLFxcXF4kfCNcc10vZywgJ1xcJCYnKQ0K ICAgICAgcmV0dXJuIGl0ZW0ucmVwbGFjZShuZXcgUmVnRXhwKCcoJyArIHF1ZXJ5 ICsgJyknLCAnaWcnKSwgZnVuY3Rpb24gKCQxLCBtYXRjaCkgew0KICAgICAgICBy ZXR1cm4gJzxzdHJvbmc+JyArIG1hdGNoICsgJzwvc3Ryb25nPicNCiAgICAgIH0p DQogICAgfQ0KDQogICwgcmVuZGVyOiBmdW5jdGlvbiAoaXRlbXMpIHsNCiAgICAg IHZhciB0aGF0ID0gdGhpcw0KDQogICAgICBpdGVtcyA9ICQoaXRlbXMpLm1hcChm dW5jdGlvbiAoaSwgaXRlbSkgew0KICAgICAgICBpID0gJCh0aGF0Lm9wdGlvbnMu aXRlbSkuYXR0cignZGF0YS12YWx1ZScsIGl0ZW0pDQogICAgICAgIGkuZmluZCgn YScpLmh0bWwodGhhdC5oaWdobGlnaHRlcihpdGVtKSkNCiAgICAgICAgcmV0dXJu IGlbMF0NCiAgICAgIH0pDQoNCiAgICAgIGl0ZW1zLmZpcnN0KCkuYWRkQ2xhc3Mo J2FjdGl2ZScpDQogICAgICB0aGlzLiRtZW51Lmh0bWwoaXRlbXMpDQogICAgICBy ZXR1cm4gdGhpcw0KICAgIH0NCg0KICAsIG5leHQ6IGZ1bmN0aW9uIChldmVudCkg ew0KICAgICAgdmFyIGFjdGl2ZSA9IHRoaXMuJG1lbnUuZmluZCgnLmFjdGl2ZScp LnJlbW92ZUNsYXNzKCdhY3RpdmUnKQ0KICAgICAgICAsIG5leHQgPSBhY3RpdmUu bmV4dCgpDQoNCiAgICAgIGlmICghbmV4dC5sZW5ndGgpIHsNCiAgICAgICAgbmV4 dCA9ICQodGhpcy4kbWVudS5maW5kKCdsaScpWzBdKQ0KICAgICAgfQ0KDQogICAg ICBuZXh0LmFkZENsYXNzKCdhY3RpdmUnKQ0KICAgIH0NCg0KICAsIHByZXY6IGZ1 bmN0aW9uIChldmVudCkgew0KICAgICAgdmFyIGFjdGl2ZSA9IHRoaXMuJG1lbnUu ZmluZCgnLmFjdGl2ZScpLnJlbW92ZUNsYXNzKCdhY3RpdmUnKQ0KICAgICAgICAs IHByZXYgPSBhY3RpdmUucHJldigpDQoNCiAgICAgIGlmICghcHJldi5sZW5ndGgp IHsNCiAgICAgICAgcHJldiA9IHRoaXMuJG1lbnUuZmluZCgnbGknKS5sYXN0KCkN CiAgICAgIH0NCg0KICAgICAgcHJldi5hZGRDbGFzcygnYWN0aXZlJykNCiAgICB9 DQoNCiAgLCBsaXN0ZW46IGZ1bmN0aW9uICgpIHsNCiAgICAgIHRoaXMuJGVsZW1l bnQNCiAgICAgICAgLm9uKCdmb2N1cycsICAgICQucHJveHkodGhpcy5mb2N1cywg dGhpcykpDQogICAgICAgIC5vbignYmx1cicsICAgICAkLnByb3h5KHRoaXMuYmx1 ciwgdGhpcykpDQogICAgICAgIC5vbigna2V5cHJlc3MnLCAkLnByb3h5KHRoaXMu a2V5cHJlc3MsIHRoaXMpKQ0KICAgICAgICAub24oJ2tleXVwJywgICAgJC5wcm94 eSh0aGlzLmtleXVwLCB0aGlzKSkNCg0KICAgICAgaWYgKHRoaXMuZXZlbnRTdXBw b3J0ZWQoJ2tleWRvd24nKSkgew0KICAgICAgICB0aGlzLiRlbGVtZW50Lm9uKCdr ZXlkb3duJywgJC5wcm94eSh0aGlzLmtleWRvd24sIHRoaXMpKQ0KICAgICAgfQ0K DQogICAgICB0aGlzLiRtZW51DQogICAgICAgIC5vbignY2xpY2snLCAkLnByb3h5 KHRoaXMuY2xpY2ssIHRoaXMpKQ0KICAgICAgICAub24oJ21vdXNlZW50ZXInLCAn bGknLCAkLnByb3h5KHRoaXMubW91c2VlbnRlciwgdGhpcykpDQogICAgICAgIC5v bignbW91c2VsZWF2ZScsICdsaScsICQucHJveHkodGhpcy5tb3VzZWxlYXZlLCB0 aGlzKSkNCiAgICB9DQoNCiAgLCBldmVudFN1cHBvcnRlZDogZnVuY3Rpb24oZXZl bnROYW1lKSB7DQogICAgICB2YXIgaXNTdXBwb3J0ZWQgPSBldmVudE5hbWUgaW4g dGhpcy4kZWxlbWVudA0KICAgICAgaWYgKCFpc1N1cHBvcnRlZCkgew0KICAgICAg ICB0aGlzLiRlbGVtZW50LnNldEF0dHJpYnV0ZShldmVudE5hbWUsICdyZXR1cm47 JykNCiAgICAgICAgaXNTdXBwb3J0ZWQgPSB0eXBlb2YgdGhpcy4kZWxlbWVudFtl dmVudE5hbWVdID09PSAnZnVuY3Rpb24nDQogICAgICB9DQogICAgICByZXR1cm4g aXNTdXBwb3J0ZWQNCiAgICB9DQoNCiAgLCBtb3ZlOiBmdW5jdGlvbiAoZSkgew0K ICAgICAgaWYgKCF0aGlzLnNob3duKSByZXR1cm4NCg0KICAgICAgc3dpdGNoKGUu a2V5Q29kZSkgew0KICAgICAgICBjYXNlIDk6IC8vIHRhYg0KICAgICAgICBjYXNl IDEzOiAvLyBlbnRlcg0KICAgICAgICBjYXNlIDI3OiAvLyBlc2NhcGUNCiAgICAg ICAgICBlLnByZXZlbnREZWZhdWx0KCkNCiAgICAgICAgICBicmVhaw0KDQogICAg ICAgIGNhc2UgMzg6IC8vIHVwIGFycm93DQogICAgICAgICAgZS5wcmV2ZW50RGVm YXVsdCgpDQogICAgICAgICAgdGhpcy5wcmV2KCkNCiAgICAgICAgICBicmVhaw0K DQogICAgICAgIGNhc2UgNDA6IC8vIGRvd24gYXJyb3cNCiAgICAgICAgICBlLnBy ZXZlbnREZWZhdWx0KCkNCiAgICAgICAgICB0aGlzLm5leHQoKQ0KICAgICAgICAg IGJyZWFrDQogICAgICB9DQoNCiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCkNCiAg ICB9DQoNCiAgLCBrZXlkb3duOiBmdW5jdGlvbiAoZSkgew0KICAgICAgdGhpcy5z dXBwcmVzc0tleVByZXNzUmVwZWF0ID0gfiQuaW5BcnJheShlLmtleUNvZGUsIFs0 MCwzOCw5LDEzLDI3XSkNCiAgICAgIHRoaXMubW92ZShlKQ0KICAgIH0NCg0KICAs IGtleXByZXNzOiBmdW5jdGlvbiAoZSkgew0KICAgICAgaWYgKHRoaXMuc3VwcHJl c3NLZXlQcmVzc1JlcGVhdCkgcmV0dXJuDQogICAgICB0aGlzLm1vdmUoZSkNCiAg ICB9DQoNCiAgLCBrZXl1cDogZnVuY3Rpb24gKGUpIHsNCiAgICAgIHN3aXRjaChl LmtleUNvZGUpIHsNCiAgICAgICAgY2FzZSA0MDogLy8gZG93biBhcnJvdw0KICAg ICAgICBjYXNlIDM4OiAvLyB1cCBhcnJvdw0KICAgICAgICBjYXNlIDE2OiAvLyBz aGlmdA0KICAgICAgICBjYXNlIDE3OiAvLyBjdHJsDQogICAgICAgIGNhc2UgMTg6 IC8vIGFsdA0KICAgICAgICAgIGJyZWFrDQoNCiAgICAgICAgY2FzZSA5OiAvLyB0 YWINCiAgICAgICAgY2FzZSAxMzogLy8gZW50ZXINCiAgICAgICAgICBpZiAoIXRo aXMuc2hvd24pIHJldHVybg0KICAgICAgICAgIHRoaXMuc2VsZWN0KCkNCiAgICAg ICAgICBicmVhaw0KDQogICAgICAgIGNhc2UgMjc6IC8vIGVzY2FwZQ0KICAgICAg ICAgIGlmICghdGhpcy5zaG93bikgcmV0dXJuDQogICAgICAgICAgdGhpcy5oaWRl KCkNCiAgICAgICAgICBicmVhaw0KDQogICAgICAgIGRlZmF1bHQ6DQogICAgICAg ICAgdGhpcy5sb29rdXAoKQ0KICAgICAgfQ0KDQogICAgICBlLnN0b3BQcm9wYWdh dGlvbigpDQogICAgICBlLnByZXZlbnREZWZhdWx0KCkNCiAgfQ0KDQogICwgZm9j dXM6IGZ1bmN0aW9uIChlKSB7DQogICAgICB0aGlzLmZvY3VzZWQgPSB0cnVlDQog ICAgfQ0KDQogICwgYmx1cjogZnVuY3Rpb24gKGUpIHsNCiAgICAgIHRoaXMuZm9j dXNlZCA9IGZhbHNlDQogICAgICBpZiAoIXRoaXMubW91c2Vkb3ZlciAmJiB0aGlz LnNob3duKSB0aGlzLmhpZGUoKQ0KICAgIH0NCg0KICAsIGNsaWNrOiBmdW5jdGlv biAoZSkgew0KICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKQ0KICAgICAgZS5wcmV2 ZW50RGVmYXVsdCgpDQogICAgICB0aGlzLnNlbGVjdCgpDQogICAgICB0aGlzLiRl bGVtZW50LmZvY3VzKCkNCiAgICB9DQoNCiAgLCBtb3VzZWVudGVyOiBmdW5jdGlv biAoZSkgew0KICAgICAgdGhpcy5tb3VzZWRvdmVyID0gdHJ1ZQ0KICAgICAgdGhp cy4kbWVudS5maW5kKCcuYWN0aXZlJykucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpDQog ICAgICAkKGUuY3VycmVudFRhcmdldCkuYWRkQ2xhc3MoJ2FjdGl2ZScpDQogICAg fQ0KDQogICwgbW91c2VsZWF2ZTogZnVuY3Rpb24gKGUpIHsNCiAgICAgIHRoaXMu bW91c2Vkb3ZlciA9IGZhbHNlDQogICAgICBpZiAoIXRoaXMuZm9jdXNlZCAmJiB0 aGlzLnNob3duKSB0aGlzLmhpZGUoKQ0KICAgIH0NCg0KICB9DQoNCg0KICAvKiBU WVBFQUhFQUQgUExVR0lOIERFRklOSVRJT04NCiAgICogPT09PT09PT09PT09PT09 PT09PT09PT09PT09ICovDQoNCiAgdmFyIG9sZCA9ICQuZm4udHlwZWFoZWFkDQoN CiAgJC5mbi50eXBlYWhlYWQgPSBmdW5jdGlvbiAob3B0aW9uKSB7DQogICAgcmV0 dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7DQogICAgICB2YXIgJHRoaXMgPSAk KHRoaXMpDQogICAgICAgICwgZGF0YSA9ICR0aGlzLmRhdGEoJ3R5cGVhaGVhZCcp DQogICAgICAgICwgb3B0aW9ucyA9IHR5cGVvZiBvcHRpb24gPT0gJ29iamVjdCcg JiYgb3B0aW9uDQogICAgICBpZiAoIWRhdGEpICR0aGlzLmRhdGEoJ3R5cGVhaGVh ZCcsIChkYXRhID0gbmV3IFR5cGVhaGVhZCh0aGlzLCBvcHRpb25zKSkpDQogICAg ICBpZiAodHlwZW9mIG9wdGlvbiA9PSAnc3RyaW5nJykgZGF0YVtvcHRpb25dKCkN CiAgICB9KQ0KICB9DQoNCiAgJC5mbi50eXBlYWhlYWQuZGVmYXVsdHMgPSB7DQog ICAgc291cmNlOiBbXQ0KICAsIGl0ZW1zOiA4DQogICwgbWVudTogJzx1bCBjbGFz cz0idHlwZWFoZWFkIGRyb3Bkb3duLW1lbnUiPjwvdWw+Jw0KICAsIGl0ZW06ICc8 bGk+PGEgaHJlZj0iIyI+PC9hPjwvbGk+Jw0KICAsIG1pbkxlbmd0aDogMQ0KICB9 DQoNCiAgJC5mbi50eXBlYWhlYWQuQ29uc3RydWN0b3IgPSBUeXBlYWhlYWQNCg0K DQogLyogVFlQRUFIRUFEIE5PIENPTkZMSUNUDQogICogPT09PT09PT09PT09PT09 PT09PSAqLw0KDQogICQuZm4udHlwZWFoZWFkLm5vQ29uZmxpY3QgPSBmdW5jdGlv biAoKSB7DQogICAgJC5mbi50eXBlYWhlYWQgPSBvbGQNCiAgICByZXR1cm4gdGhp cw0KICB9DQoNCg0KIC8qIFRZUEVBSEVBRCBEQVRBLUFQSQ0KICAqID09PT09PT09 PT09PT09PT09PSAqLw0KDQogICQoZG9jdW1lbnQpLm9uKCdmb2N1cy50eXBlYWhl YWQuZGF0YS1hcGknLCAnW2RhdGEtcHJvdmlkZT0idHlwZWFoZWFkIl0nLCBmdW5j dGlvbiAoZSkgew0KICAgIHZhciAkdGhpcyA9ICQodGhpcykNCiAgICBpZiAoJHRo aXMuZGF0YSgndHlwZWFoZWFkJykpIHJldHVybg0KICAgICR0aGlzLnR5cGVhaGVh ZCgkdGhpcy5kYXRhKCkpDQogIH0pDQoNCn0od2luZG93LmpRdWVyeSk7DQovKiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09DQogKiBib290c3RyYXAtYWZmaXguanMgdjIuMy4xDQogKiBodHRw Oi8vdHdpdHRlci5naXRodWIuY29tL2Jvb3RzdHJhcC9qYXZhc2NyaXB0Lmh0bWwj YWZmaXgNCiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0NCiAqIENvcHlyaWdodCAyMDEyIFR3aXR0ZXIs IEluYy4NCiAqDQogKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2Us IFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCiAqIHlvdSBtYXkgbm90IHVz ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z ZS4NCiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0K ICoNCiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu MA0KICoNCiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCiAqIGRpc3RyaWJ1dGVkIHVu ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT SVMsDQogKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkg S0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCiAqIFNlZSB0aGUgTGlj ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz aW9ucyBhbmQNCiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KICog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PSAqLw0KDQoNCiFmdW5jdGlvbiAoJCkgew0KDQogICJ1c2Ugc3Ry aWN0IjsgLy8ganNoaW50IDtfOw0KDQoNCiAvKiBBRkZJWCBDTEFTUyBERUZJTklU SU9ODQogICogPT09PT09PT09PT09PT09PT09PT09PSAqLw0KDQogIHZhciBBZmZp eCA9IGZ1bmN0aW9uIChlbGVtZW50LCBvcHRpb25zKSB7DQogICAgdGhpcy5vcHRp b25zID0gJC5leHRlbmQoe30sICQuZm4uYWZmaXguZGVmYXVsdHMsIG9wdGlvbnMp DQogICAgdGhpcy4kd2luZG93ID0gJCh3aW5kb3cpDQogICAgICAub24oJ3Njcm9s bC5hZmZpeC5kYXRhLWFwaScsICQucHJveHkodGhpcy5jaGVja1Bvc2l0aW9uLCB0 aGlzKSkNCiAgICAgIC5vbignY2xpY2suYWZmaXguZGF0YS1hcGknLCAgJC5wcm94 eShmdW5jdGlvbiAoKSB7IHNldFRpbWVvdXQoJC5wcm94eSh0aGlzLmNoZWNrUG9z aXRpb24sIHRoaXMpLCAxKSB9LCB0aGlzKSkNCiAgICB0aGlzLiRlbGVtZW50ID0g JChlbGVtZW50KQ0KICAgIHRoaXMuY2hlY2tQb3NpdGlvbigpDQogIH0NCg0KICBB ZmZpeC5wcm90b3R5cGUuY2hlY2tQb3NpdGlvbiA9IGZ1bmN0aW9uICgpIHsNCiAg ICBpZiAoIXRoaXMuJGVsZW1lbnQuaXMoJzp2aXNpYmxlJykpIHJldHVybg0KDQog ICAgdmFyIHNjcm9sbEhlaWdodCA9ICQoZG9jdW1lbnQpLmhlaWdodCgpDQogICAg ICAsIHNjcm9sbFRvcCA9IHRoaXMuJHdpbmRvdy5zY3JvbGxUb3AoKQ0KICAgICAg LCBwb3NpdGlvbiA9IHRoaXMuJGVsZW1lbnQub2Zmc2V0KCkNCiAgICAgICwgb2Zm c2V0ID0gdGhpcy5vcHRpb25zLm9mZnNldA0KICAgICAgLCBvZmZzZXRCb3R0b20g PSBvZmZzZXQuYm90dG9tDQogICAgICAsIG9mZnNldFRvcCA9IG9mZnNldC50b3AN CiAgICAgICwgcmVzZXQgPSAnYWZmaXggYWZmaXgtdG9wIGFmZml4LWJvdHRvbScN CiAgICAgICwgYWZmaXgNCg0KICAgIGlmICh0eXBlb2Ygb2Zmc2V0ICE9ICdvYmpl Y3QnKSBvZmZzZXRCb3R0b20gPSBvZmZzZXRUb3AgPSBvZmZzZXQNCiAgICBpZiAo dHlwZW9mIG9mZnNldFRvcCA9PSAnZnVuY3Rpb24nKSBvZmZzZXRUb3AgPSBvZmZz ZXQudG9wKCkNCiAgICBpZiAodHlwZW9mIG9mZnNldEJvdHRvbSA9PSAnZnVuY3Rp b24nKSBvZmZzZXRCb3R0b20gPSBvZmZzZXQuYm90dG9tKCkNCg0KICAgIGFmZml4 ID0gdGhpcy51bnBpbiAhPSBudWxsICYmIChzY3JvbGxUb3AgKyB0aGlzLnVucGlu IDw9IHBvc2l0aW9uLnRvcCkgPw0KICAgICAgZmFsc2UgICAgOiBvZmZzZXRCb3R0 b20gIT0gbnVsbCAmJiAocG9zaXRpb24udG9wICsgdGhpcy4kZWxlbWVudC5oZWln aHQoKSA+PSBzY3JvbGxIZWlnaHQgLSBvZmZzZXRCb3R0b20pID8NCiAgICAgICdi b3R0b20nIDogb2Zmc2V0VG9wICE9IG51bGwgJiYgc2Nyb2xsVG9wIDw9IG9mZnNl dFRvcCA/DQogICAgICAndG9wJyAgICA6IGZhbHNlDQoNCiAgICBpZiAodGhpcy5h ZmZpeGVkID09PSBhZmZpeCkgcmV0dXJuDQoNCiAgICB0aGlzLmFmZml4ZWQgPSBh ZmZpeA0KICAgIHRoaXMudW5waW4gPSBhZmZpeCA9PSAnYm90dG9tJyA/IHBvc2l0 aW9uLnRvcCAtIHNjcm9sbFRvcCA6IG51bGwNCg0KICAgIHRoaXMuJGVsZW1lbnQu cmVtb3ZlQ2xhc3MocmVzZXQpLmFkZENsYXNzKCdhZmZpeCcgKyAoYWZmaXggPyAn LScgKyBhZmZpeCA6ICcnKSkNCiAgfQ0KDQoNCiAvKiBBRkZJWCBQTFVHSU4gREVG SU5JVElPTg0KICAqID09PT09PT09PT09PT09PT09PT09PT09ICovDQoNCiAgdmFy IG9sZCA9ICQuZm4uYWZmaXgNCg0KICAkLmZuLmFmZml4ID0gZnVuY3Rpb24gKG9w dGlvbikgew0KICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkgew0KICAg ICAgdmFyICR0aGlzID0gJCh0aGlzKQ0KICAgICAgICAsIGRhdGEgPSAkdGhpcy5k YXRhKCdhZmZpeCcpDQogICAgICAgICwgb3B0aW9ucyA9IHR5cGVvZiBvcHRpb24g PT0gJ29iamVjdCcgJiYgb3B0aW9uDQogICAgICBpZiAoIWRhdGEpICR0aGlzLmRh dGEoJ2FmZml4JywgKGRhdGEgPSBuZXcgQWZmaXgodGhpcywgb3B0aW9ucykpKQ0K ICAgICAgaWYgKHR5cGVvZiBvcHRpb24gPT0gJ3N0cmluZycpIGRhdGFbb3B0aW9u XSgpDQogICAgfSkNCiAgfQ0KDQogICQuZm4uYWZmaXguQ29uc3RydWN0b3IgPSBB ZmZpeA0KDQogICQuZm4uYWZmaXguZGVmYXVsdHMgPSB7DQogICAgb2Zmc2V0OiAw DQogIH0NCg0KDQogLyogQUZGSVggTk8gQ09ORkxJQ1QNCiAgKiA9PT09PT09PT09 PT09PT09PSAqLw0KDQogICQuZm4uYWZmaXgubm9Db25mbGljdCA9IGZ1bmN0aW9u ICgpIHsNCiAgICAkLmZuLmFmZml4ID0gb2xkDQogICAgcmV0dXJuIHRoaXMNCiAg fQ0KDQoNCiAvKiBBRkZJWCBEQVRBLUFQSQ0KICAqID09PT09PT09PT09PT09ICov DQoNCiAgJCh3aW5kb3cpLm9uKCdsb2FkJywgZnVuY3Rpb24gKCkgew0KICAgICQo J1tkYXRhLXNweT0iYWZmaXgiXScpLmVhY2goZnVuY3Rpb24gKCkgew0KICAgICAg dmFyICRzcHkgPSAkKHRoaXMpDQogICAgICAgICwgZGF0YSA9ICRzcHkuZGF0YSgp DQoNCiAgICAgIGRhdGEub2Zmc2V0ID0gZGF0YS5vZmZzZXQgfHwge30NCg0KICAg ICAgZGF0YS5vZmZzZXRCb3R0b20gJiYgKGRhdGEub2Zmc2V0LmJvdHRvbSA9IGRh dGEub2Zmc2V0Qm90dG9tKQ0KICAgICAgZGF0YS5vZmZzZXRUb3AgJiYgKGRhdGEu b2Zmc2V0LnRvcCA9IGRhdGEub2Zmc2V0VG9wKQ0KDQogICAgICAkc3B5LmFmZml4 KGRhdGEpDQogICAgfSkNCiAgfSkNCg0KDQp9KHdpbmRvdy5qUXVlcnkpOw== ------------XBLsZq9NkNLk5QAFF8cyEr Content-Disposition: inline; filename=f.js Content-Type: text/javascript; charset=UTF-8; name=f.js Content-Location: http://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js Content-Transfer-Encoding: Quoted-Printable (function(){var n=3Dthis,aa=3Dfunction(a){var b=3Dtypeof a;return"object= "=3D=3Db&&null!=3Da||"function"=3D=3Db},ba=3Dfunction(a,b,c){return a.ca= ll.apply(a.bind,arguments)},ca=3Dfunction(a,b,c){if(!a)throw Error();if(= 2a?0:a}= ,fa=3Dfunction(a,b){var c=3DparseInt(a,10);return isNaN(c)?b:c},ga=3Dfun= ction(a,b){return/^true$/.test(a)?!0:/^false$/.test(a)?!1:b},ha=3D/^([\w= -]+\.)*([\w-]{2,})(\:[0-9]+)?$/,ia=3Dfunction(a,b){if(!a)return b;var c=3D= a.match(ha);return c?c[0]:b};var ja=3Dfa("101",-1),la=3Dfa("98",0),ma=3D= w("0.05"),na=3Dw("0.001"),oa=3Dw("0.0"),pa=3Dw(""),qa=3Dw("0.001"),ra=3D= ga("true",!0),sa=3Dw(""),ta=3Dw("0.001"),ua=3Dw("0.0"), va=3Dw(""),wa=3Dw("0.1");var ya=3Dga("false",!1),za=3Dga("false",!1),Aa=3D= ga("false",!1),Ba=3DAa||!za;var Ca=3Dfunction(){return ia("","pagead2.go= oglesyndication.com")};var Da=3DString.prototype.trim?function(a){return= a.trim()}:function(a){return a.replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")},Ea= =3D/&/g,Fa=3D//g,Ha=3D/"/g,Ia=3D/'/g,Ja=3D/\x00/g,Ka=3D{"\x00= ":"\\0","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\x0B":"\= \x0B",'"':'\\"',"\\":"\\\\","<":"<"},La=3D{"'":"\\'"},Ma=3Dfunction(a,b)= {return ab?1:0};var Na=3Dfunction(a,b){this.start=3DaMath.random()= )){var c=3DMath.random();if(c>2)+a.charCodeAt(d)&4294967295;return 0b)return b;b=3DMath.floor(1E3*Ua(a));try{return a.localStorage.setItem= ("google_experiment_mod",""+b),b}catch(c){return null}};var bb=3Dfunctio= n(a,b,c){a.addEventListener?a.addEventListener(b,c,!1):a.attachEvent&&a.= attachEvent("on"+b,c)};var eb=3Dfunction(a,b,c,d,e,g){try{if((d?a.da:Mat= h.random())<(e||a.V)){var f=3Da.T+b+cb(c),f=3Df.substring(0,2E3);"undefi= ned"=3D=3D=3Dtypeof g?db(f):db(f,g)}}catch(h){}},cb=3Dfunction(a){var b=3D= "";Va(a,function(a,d){if(0=3D=3D=3Da||a)b+=3D"&"+d+"=3D"+encodeURICompon= ent(String(a))});return b},db=3Dfunction(a,b){n.google_image_requests||(= n.google_image_requests=3D[]);var c=3Dn.document.createElement("img");if= (b){var d=3Dfunction(a){b(a);a=3Dd;c.removeEventListener?c.removeEventLi= stener("load",a,!1):c.detachEvent&&c.detachEvent("onload", a);a=3Dd;c.removeEventListener?c.removeEventListener("error",a,!1):c.det= achEvent&&c.detachEvent("onerror",a)};bb(c,"load",d);bb(c,"error",d)}c.s= rc=3Da;n.google_image_requests.push(c)};var fb=3Dfunction(a,b,c){this.aa= =3Da;this.X=3Db;this.P=3Dc;this.J=3Dnull;this.W=3Dthis.u;this.ja=3D!1},g= b=3Dfunction(a,b,c){this.message=3Da;this.fileName=3Db||"";this.lineNumb= er=3Dc||-1},ib=3Dfunction(a,b,c,d,e,g){var f;try{f=3Dc()}catch(k){var h=3D= a.P;try{var l=3Dhb(k),h=3D(g||a.W).call(a,b,l,void 0,d)}catch(m){a.u("pA= R",m)}if(!h)throw k;}finally{if(e)try{e()}catch(k){}}return f},C=3Dfunct= ion(a,b,c){var d=3Dz;return function(){var e=3Darguments;return ib(d,a,f= unction(){return b.apply(void 0,e)},void 0,c)}}; fb.prototype.u=3Dfunction(a,b,c,d,e){var g=3D{};g.context=3Da;b instance= of gb||(b=3Dhb(b));g.msg=3Db.message.substring(0,512);b.fileName&&(g.fil= e=3Db.fileName);0parseFloat(a= ))?String(b):a}(),tb=3D{},ub=3Dfunction(a){if(!tb[a]){for(var b=3D0,c=3D= Da(String(sb)).split("."),d=3DDa(String(a)).split("."),e=3DMath.max(c.le= ngth,d.length),g=3D0;0=3D=3Db&&garguments.length))for(v= ar c=3D1,d=3Darguments.length;cb?e+=3D"000":256>b?e+=3D"00":4096>b&&(e+=3D= "0");return Ub[a]=3D e+b.toString(16)}));b.push('"')};var Wb=3Dnull,Xb=3Dob||pb||mb||"functio= n"=3D=3Dtypeof n.atob;var Yb=3D{google_ad_modifications:!0,google_analyt= ics_domain_name:!0,google_analytics_uacct:!0},Zb=3Dfunction(a){a.google_= page_url&&(a.google_page_url=3DString(a.google_page_url));var b=3D[];Bb(= a,function(a,d){if(null!=3Da){var e;try{var g=3D[];Tb(new Rb,a,g);e=3Dg.= join("")}catch(f){}e&&(e=3De.replace(/\//g,"\\$&"),Cb(b,d,"=3D",e,";"))}= });return b.join("")};var $b=3Dfunction(a,b,c){Kb("files::getSrc",Lb,fun= ction(){if("https:"=3D=3DI.location.protocol&&"http"=3D=3Dc)throw c=3D"h= ttps",Error("Requested url "+a+b);});return[c,"://",a,b].join("")},ac=3D= function(a,b,c){c||(c=3DBa?"https":"http");return $b(a,b,c)};var bc=3Dfu= nction(a){var b=3Dab(n);a=3Da.mods;if(isNaN(b)||!a)return!1;for(var c=3D= 0;c=3Dd.min&&b<=3De)return!0}= return!1},cc=3Dfunction(a,b){a.location.href&&a.location.href.substring&= &(b.url=3Da.location.href.substring(0,200));Mb("ama",b,.01)};var dc=3D{o= verlays:1,interstitials:2,vignettes:2,inserts:3,immersives:4};var O=3Dfu= nction(a){a=3Da.document;return("CSS1Compat"=3D=3Da.compatMode?a.documen= tElement:a.body)||{}};var ec=3Dnew function(){this.ba=3Dnew Na(100,199)}= ;var P=3Dfunction(a){return(a=3Da.google_ad_modifications)?a.loeids||[]:= []},fc=3Dfunction(a,b,c){if(!a)return null;for(var d=3D0;d"']/.test(R)&&(-1!=3DR.indexOf("&")&&(R=3DR.replace(Ea,"&")= ),-1!=3DR.indexOf("<")&&(R=3DR.replace(Fa,"<")),-1!=3DR.indexOf(">")&= &(R=3DR.replace(Ga,">")),-1!=3DR.indexOf('"')&&(R=3DR.replace(Ha,"&qu= ot;")),-1!=3DR.indexOf("'")&&(R=3DR.replace(Ia,"'")),-1!=3DR.indexOf= ("\x00")&&(R=3DR.replace(Ja,"�")));kc=3DR;jc.prototype.set=3Dfunction= (a,b){this.fa.handlers[a]=3Db;this.s.addEventListener&&this.s.addEventLi= stener("load",q(this.Y,this,a),!1)}; jc.prototype.Y=3Dfunction(a){a=3Dthis.s.document.getElementById(a);try{v= ar b=3Da.contentWindow.document;if(a.onload&&b&&(!b.body||!b.body.firstC= hild))a.onload()}catch(c){}};jc.prototype.ia=3Dfunction(a,b){var c=3Dlc(= "rx",a),d;a:{if(a&&(d=3Da.match("dt=3D([^&]+)"))&&2=3D=3Dd.length){d=3Dd= [1];break a}d=3D""}d=3D(new Date).getTime()-d;c=3Dc.replace(/&dtd=3D(\d+= |-?M)/,"&dtd=3D"+(1E5<=3Dd?"M":0<=3Dd?d:"-M"));this.set(b,c);return c}; var lc=3Dfunction(a,b){var c=3Dnew RegExp("\\b"+a+"=3D(\\d+)"),d=3Dc.exe= c(b);d&&(b=3Db.replace(c,a+"=3D"+(+d[1]+1||1)));return b};var mc=3D!1,nc= =3Dfunction(a,b,c){var d=3D["");a=3Da.id;b=3D"border:none;height:"+c+"px;margin:0;padding:0;positio= n:relative;visibility:visible;width:"+b+"px;background-color:transparent= ";return['',d.join(" = "),""].join("")};var oc=3Dfunction(a){if(!a)return"";(a=3Da.= toLowerCase())&&"ca-"!=3Da.substring(0,3)&&(a=3D"ca-"+a);return a};var p= c=3D{"120x90":!0,"160x90":!0,"180x90":!0,"200x90":!0,"468x15":!0,"728x15= ":!0};var qc=3D"google_ad_client google_ad_format google_ad_height googl= e_ad_width google_city google_country google_encoding google_language go= ogle_page_url".split(" "),rc=3Dfunction(a){try{var b=3Da.top.google_ads_= params_store;if(b)return b;b=3Da.top.google_ads_params_store=3D{};if(b=3D= =3D=3Da.top.google_ads_params_store)return b}catch(c){}return null};var = sc,S=3Dfunction(a){this.B=3D[];this.s=3Da||window;this.o=3D0;this.A=3Dnu= ll;this.S=3D0},tc=3Dfunction(a,b){this.Z=3Da;this.ka=3Db};S.prototype.en= queue=3Dfunction(a,b){0!=3Dthis.o||0!=3Dthis.B.length||b&&b!=3Dwindow?th= is.K(a,b):(this.o=3D2,this.O(new tc(a,window)))};S.prototype.K=3Dfunctio= n(a,b){this.B.push(new tc(a,b||this.s));uc(this)};S.prototype.$=3Dfuncti= on(a){this.o=3D1;if(a){var b=3Dq(this.N,this,!0);this.A=3Dthis.s.setTime= out(C("sjr::timeout",b,void 0),a)}}; S.prototype.N=3Dfunction(a){a&&++this.S;1=3D=3Dthis.o&&(null!=3Dthis.A&&= (this.s.clearTimeout(this.A),this.A=3Dnull),this.o=3D0);uc(this)};S.prot= otype.ea=3Dfunction(){return!(!window||!Array)};S.prototype.ga=3Dfunctio= n(){return this.S};S.prototype.nq=3DS.prototype.enqueue;S.prototype.nqa=3D= S.prototype.K;S.prototype.al=3DS.prototype.$;S.prototype.rl=3DS.prototyp= e.N;S.prototype.sz=3DS.prototype.ea;S.prototype.tc=3DS.prototype.ga;var = uc=3Dfunction(a){var b=3Dq(a.ha,a);a.s.setTimeout(C("sjr::tryrun",b,void= 0),0)}; S.prototype.ha=3Dfunction(){if(0=3D=3Dthis.o&&this.B.length){var a=3Dthi= s.B.shift();this.o=3D2;var b=3Dq(this.O,this,a);a.ka.setTimeout(C("sjr::= run",b,void 0),0);uc(this)}};S.prototype.O=3Dfunction(a){this.o=3D0;a.Z(= )}; var vc=3Dfunction(a){try{return a.sz()}catch(b){return!1}},wc=3Dfunction= (a){return!!a&&("object"=3D=3Dtypeof a||"function"=3D=3Dtypeof a)&&vc(a)= &&J(a.nq)&&J(a.nqa)&&J(a.al)&&J(a.rl)},xc=3Dfunction(){if(sc&&vc(sc))ret= urn sc;var a=3DQb(),b=3Da.google_jobrunner;return wc(b)?sc=3Db:a.google_= jobrunner=3Dsc=3Dnew S(a)},yc=3Dfunction(a,b){xc().nq(a,b)},zc=3Dfunctio= n(a,b){xc().nqa(a,b)};var T=3Dfunction(a){this.name=3D"TagError";this.me= ssage=3Da||"";Error.captureStackTrace?Error.captureStackTrace(this,T):th= is.stack=3DError().stack||""};da(T,Error); var Ac=3DFb?1=3D=3DEb(I):!Eb(I),Bc=3Dfunction(){var a=3DAa?"https":"http= ",b=3DPa("script");return["<",b,' src=3D"',ac(Ca(),"/pagead/js/r20151208= /r20151221/show_ads_impl.js",a),'">"].join("")},Cc=3Dfunction(a,= b,c,d){return function(){var e=3D!1;d&&xc().al(3E4);try{var g=3Da.docume= nt.getElementById(b).contentWindow;if(Qa(g)){var f=3Da.document.getEleme= ntById(b).contentWindow, h=3Df.document;h.body&&h.body.firstChild||(h.open(),f.google_async_ifram= e_close=3D!0,h.write(c))}else{for(var l=3Da.document.getElementById(b).c= ontentWindow,g=3Dc,g=3DString(g),f=3D['"'],h=3D0;hm)H=3Dk;else{var x=3Dk;if(x in La)H=3DLa[x];else if(x in Ka)H=3DLa= [x]=3DKa[x];else{var u=3Dx,r=3Dx.charCodeAt(0);if(31r)u=3Dx;else= {if(256>r){if(u=3D"\\x",16>r||256r&&(u+=3D= "0");u+=3Dr.toString(16).toUpperCase()}H=3DLa[x]=3D u}}F=3DH}f[p]=3DF}f.push('"');l.location.replace("javascript:"+f.join(""= ))}e=3D!0}catch(A){l=3DQb().google_jobrunner,wc(l)&&l.rl()}e&&(e=3Dlc("g= oogle_async_rrc",c),(new jc(a)).set(b,Cc(a,b,e,!1)))}},Dc=3Dfunction(a){= var b=3D["");return b.join("")},Fc=3Dfunction(a,b,c){Ec(a= ,b,c,function(a,b,g){for(var f=3Da.document,h=3Db.id,l=3D0;!h||f.getElem= entById(h);)h=3D"aswift_"+l++;b.id=3Dh;b.name=3Dh;var h=3DNumber(g.googl= e_ad_width),l=3DNumber(g.google_ad_height), k=3DN.G;hc(g,a,k.j,k.i);mc=3DK(P(a),k.i);16=3D=3Dg.google_reactive_ad_fo= rmat?(a=3Df.createElement("div"),a.innerHTML=3Dnc(b,h,l),c.appendChild(a= .firstChild)):c.innerHTML=3Dnc(b,h,l);return b.id})},Ec=3Dfunction(a,b,c= ,d){var e=3DPa("script"),g,f;a:{try{var h=3Da.top.google_pubvars_reuse_e= xperiment;if("undefined"!=3D=3Dtypeof h){f=3Dh;break a}h=3Dy(["C","E"],s= a)||null;a.top.google_pubvars_reuse_experiment=3Dh;if(a.top.google_pubva= rs_reuse_experiment=3D=3D=3Dh){f=3Dh;break a}}catch(ka){}f=3Dnull}if("E"= =3D=3D=3Df){g=3Dnull!=3Db.google_ad_client;f=3Dnull!=3D b.google_ad_width;var h=3Dnull!=3Db.google_ad_height,l=3Drc(a);if(l){for= (var k=3D0;kl;k=3Dk.parentNode,++l)h.push(9!=3D=3Dk.nodeType&&k.id||"= ");(h=3Dh.join())&&f.push(h);b.google_ad_unit_key=3DWa(f.join(":")).toSt= ring();f=3Da.google_adk2_experiment=3Da.google_adk2_experiment||y(["C","= E"],qa)||"N";if("E"=3D=3Df){f=3D[]; for(h=3D0;c&&25>h;++h){l=3D"";l=3D(l=3D9!=3D=3Dc.nodeType&&c.id)?"/"+l:"= ";a:{if(c&&c.nodeName&&c.parentElement)for(var k=3Dc.nodeName.toString()= .toLowerCase(),m=3Dc.parentElement.childNodes,F=3Dp=3D0;Fl;++l){for(va= r u=3Dx.frames,k=3D0;k>=3D8;f[h++]=3DQ}if(!Wb)for(Wb=3D{},r=3D0;65>r;r++)Wb[r]=3D"= ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=3D".cha= rAt(r); r=3DWb;Q=3D[];for(h=3D0;h>2,k=3D(L&3)<<4= |U>>4,m=3D(U&15)<<2|Nb>>6,p=3DNb&63;Z||(p=3D64,xa||(m=3D64));Q.push(r[l]= ,r[k],r[m],r[p])}A=3DQ.join("")}u=3DA;break a}Mb("sblob",{json:window.JS= ON?1:0,eURI:window.encodeURIComponent?1:0})}catch(ka){z.u("sblob",ka,voi= d 0,void 0)}u=3D""}u||(u=3D"{X}")}else"C"=3D=3Dc&&(u=3D"{C}");var B;b=3D= b.google_ad_client;if(A=3DAc){if(!ic)b:{L=3D[n.top];A=3D[];for(xa=3D0;U=3D= L[xa++];){A.push(U);try{if(U.frames)for(var M=3DU.frames.length, Z=3D0;ZL.length;++Z)L.push(U.frames[Z])}catch(ka){}}for(M=3D0;M= ",B,"<",e,">",x,"google_show_ads_impl=3Dtrue;goog= le_unique_id=3D",Eb(a),';google_async_iframe_id=3D"',d,'";google_start_t= ime=3D',M,";",c?'google_pub_vars =3D "'+u+'";':"",g?'google_pubvars_reus= e_experiment_result =3D "'+g+'";':"",A?'google_async_for_oa_experiment=3D= "'+A+'";':"",L?'google_always_use_delayed_impressions_experiment=3D"'+L+= '";':"","google_bpp=3D",b>M?b-M:1,";google_async_rrc=3D0;google_iframe_s= tart_time=3Dnew Date().getTime();",Bc(),""].join("");(a.document.getElementById(d)?yc:z= c)(Cc(a,d,B,!0))},Gc=3Dfunction(a,b){var c=3Dnavigator;if(ra&&a&&b&&c){v= ar c=3Da.document,d=3Dac("pagead2.googlesyndication.com","/pub-config/"+= oc(b)+".js");Sa(c,d)}};var V=3Dfunction(a,b){this.M=3Da;this.L=3Db};V.pr= ototype.minWidth=3Dfunction(){return this.M};V.prototype.height=3Dfuncti= on(){return this.L};V.prototype.w=3Dfunction(a){return 300O(c).clientWidth;b=3D[Nc(a),= Uc(g),Pc(g,c,d),Ic(b)];e=3DTc(e,Sc(b));if(!e)throw new T("adsbygoogle.pu= sh() error: No slot size for availableWidth=3D"+a);return e},Uc=3Dfuncti= on(a){return function(b){return!(320=3D=3Db.minWidth()&&(a&&50=3D=3Db.he= ight()||!a&&100=3D=3Db.height()))}};var X=3Dfunction(a,b){V.call(this,a,= b)};da(X,V);X.prototype.w=3Dfunction(a){return Math.min(1200,Math.round(= a))};var Wc=3D[new X(468,350),new X(414,828),new X(384,768),new X(375,75= 0),new X(360,720),new X(320,640),new X(120,600)],Xc=3D[new X(468,300),ne= w X(414,828),new X(384,768),new X(375,750),new X(360,720),new X(320,640)= ,new X(120,600)],Yc=3Dfunction(a,b){var c=3DTc(a,Nc(b));if(!c)throw new = T("adsbygoogle.push() error: No autorelaxed size for width=3D"+b+"px");r= eturn c};var $c=3Dfunction(){return!Zc()&&(E("iPod")||E("iPhone")||E("An= droid")||E("IEMobile"))},Zc=3Dfunction(){return E("iPad")||E("Android")&= &!E("Mobile")||E("Silk")};var ad=3D[{l:[3,0,0],m:[6,12,14,0,1,3,2,4,13,5= ,7,8,9,10,11,15]},{l:[3,0,1],m:[6,15,0,1,2,3,4,13,5,7,8,9,10,11,12,14]},= {l:[3,0,2],m:[6,15,0,1,2,3,4,7,8,9,10,13,5,11,12,14]},{l:[3,1,0],m:[6,12= ,15,0,1,3,4,13,2,5,7,8,9,10,11,14]},{l:[3,1,1],m:[6,15,0,1,7,8,11,2,3,4,= 5,9,10,12,13,14]},{l:[3,1,2],m:[6,15,0,1,2,3,4,7,9,11,5,8,10,12,13,14]},= {l:[3,2,0],m:[0,6,12,15,1,2,3,4,13,5,7,8,9,10,11,14]},{l:[3,2,1],m:[0,6,= 12,14,1,2,3,4,13,5,7,8,9,10,11,15]},{l:[3,2,2],m:[0,15,1,2,3,4,13,9,5,6,= 7,8,10,11,12,14]},{l:[2,0, 0],m:[6,15,0,1,3,2,7,8,10,13,9,4,5,11,12,14]},{l:[2,0,1],m:[6,15,0,1,2,3= ,7,8,4,10,9,13,5,11,12,14]},{l:[2,0,2],m:[0,15,1,2,3,4,7,8,13,5,6,9,10,1= 1,12,14]},{l:[4,0,0],m:[6,12,14,15,0,1,7,2,8,11,9,3,4,5,10,13]},{l:[4,0,= 1],m:[6,12,14,0,1,2,3,4,7,8,11,13,5,9,10,15]},{l:[4,0,2],m:[6,15,0,1,2,3= ,5,7,8,13,9,4,10,11,12,14]}],bd=3Dfunction(a,b,c){return"auto"=3D=3Dc?(b= /=3DMath.min(1200,O(a).clientWidth),.6O(a).clientWidth)?2:.25>= =3Db?4:3):Mc(c)},cd=3Dfunction(a,b){var c=3DRc(a,b);return function(a){r= eturn a.height()<=3D c}},ed=3Dfunction(a,b,c,d,e){var g;a:{var f;f=3D$c()?2:Zc()?4:3;g=3DLc(d= ,c);f=3D[f,g&&3=3D=3Df?83>g.x?0:265>g.x?1:2:0,dd(f,g)];for(g=3D0;gO(c).clientWidth;a=3D[cd(c,d),= Nc(a),Pc(g,c,d)];c=3D[];(e?c:a).push(Ic(b));return Tc(f, Sc(a),Sc(c))},dd=3Dfunction(a,b){if(!b)return 0;var c=3Db.y;switch(a){ca= se 2:return 285>c?0:1396>c?1:2;case 4:return 275>c?0:1057>c?1:2;default:= return 216>c?0:838>c?1:2}};var Y=3Dfunction(a,b){V.call(this,a,b)};da(Y,= V);Y.prototype.w=3Dfunction(){return this.minWidth()};var fd=3D[new Y(72= 8,15),new Y(468,15),new Y(200,90),new Y(180,90),new Y(160,90),new Y(120,= 90)];var jd=3Dfunction(){var a=3Dwindow;if(void 0=3D=3D=3Da.google_dre){= var b=3D"";a.postMessage&&Ra(a)&&$c()&&(b=3Dy(["20050000","20050001"],ua= ))&&(a.google_ad_modifications=3Da.google_ad_modifications||{},a.google_= ad_modifications.eids=3Da.google_ad_modifications.eids||[],a.google_ad_m= odifications.eids.push(b));a.google_dre=3Db;"20050001"=3D=3Da.google_dre= &&(bb(a.top,"message",C("dr::mh",t(gd,a),t(hd,a))),a.setTimeout(C("dr::t= o",t(id,a,!0),t(hd,a)),2E3),a.google_drc=3D0,a.google_q=3Da.google_q||{}= ,a.google_q.tags=3Da.google_q.tags|| [])}},kd=3Dfunction(a){"20050001"=3D=3Dn.google_dre&&(a.params=3Da.param= s||{},a.params.google_delay_requests_delay=3D0,a.params.google_delay_req= uests_count=3Dn.google_drc++,a.U=3Dv())},ld=3Dfunction(a){if("20050001"=3D= =3Dn.google_dre){var b=3Dv()-a.U;a.params.google_delay_requests_delay=3D= b}},gd=3Dfunction(a,b){var c;if(c=3Db&&"afb"=3D=3Db.data)c=3Db.origin,c=3D= !!Hb[c]||ya&&Ib.test(c);c&&id(a,!1)},id=3Dfunction(a,b){if(a.google_q&&a= .google_q.tags){var c=3Da.google_q.tags;hd(a);c.length&&(b&&Mb("drt",{Xa= :c.length,duration:2E3},1),md(c))}};var nd=3Dfunction(a){return Gb.test(= a.className)&&"done"!=3Da.getAttribute("data-adsbygoogle-status")},pd=3D= function(a,b){var c=3Dwindow;a.setAttribute("data-adsbygoogle-status","d= one");od(a,b,c)},od=3Dfunction(a,b,c){qd(a,b,c);if(!rd(a,b,c)){if(b.goog= le_reactive_ads_config){if(sd)throw new T("adsbygoogle.push() error: Onl= y one 'enable_page_level_ads' allowed per page.");sd=3D!0}else Db(c);td|= |(td=3D!0,Gc(c,b.google_ad_client));Bb(Yb,function(a,d){b[d]=3Db[d]||c[d= ]});b.google_loader_used=3D"aa";var d=3Db.google_ad_output; if(d&&"html"!=3Dd)throw new T("adsbygoogle.push() error: No support for = google_ad_output=3D"+d);Kb("aa::load",Lb,function(){Fc(c,b,a)})}},rd=3Df= unction(a,b,c){var d=3Db.google_reactive_ads_config;if(d)var e=3Dd.page_= level_pubvars,g=3D(aa(e)?e:{}).google_tag_origin;var f=3Db.google_ad_slo= t,e=3Dc.google_ad_modifications;!e||fc(e.ad_whitelist,f,g||b.google_tag_= origin)?e=3Dnull:(g=3De.space_collapsing||"none",e=3D(f=3Dfc(e.ad_blackl= ist,f))?{I:!0,R:f.space_collapsing||g}:e.remove_ads_by_default?{I:!0,R:g= }:null);return e&&e.I&& "on"!=3Db.google_adtest?("slot"=3D=3De.R&&(null!=3D=3DZa(a.getAttribute(= "width"))&&a.setAttribute("width",0),null!=3D=3DZa(a.getAttribute("heigh= t"))&&a.setAttribute("height",0),a.style.width=3D"0px",a.style.height=3D= "0px"),!0):!(e=3DTa(a,c))||"none"!=3De.display||"on"=3D=3Db.google_adtes= t||0=3Dk/Math.min(1200,O(c).clientWi= dth)?4:3:Mc(m);b&&(b.google_responsive_formats=3D p,m=3DN.F,hc(b,c,m.j,m.i));c=3DVc(k,p,c,a);break a;case 2:c=3DYc(Wc,k);b= reak a;case 3:c=3DYc(Xc,k);break a;case 5:m=3Dbd(c,k,m);b.google_respons= ive_formats=3Dm;var F=3DK(P(c),N.v.i);b:{d=3Da;do if((e=3DTa(d,c))&&"fix= ed"=3D=3De.position){d=3D!1;break b}while(d=3Dd.parentElement);d=3D!0}d&= &(p=3Ded(k,m,c,a,F));c=3Dp||Vc(k,m,c,a);break a;case 4:c=3DTc(fd,Nc(k));= if(!c)throw new T("adsbygoogle.push() error: No link unit size for width= =3D"+k+"px");b.google_ad_format_suffix=3D"_0ads_al";b.google_override_fo= rmat=3D1}}b.google_ad_width=3Dc.w(k);b.google_ad_height=3D c.height();a.style.height=3Dc.height()+"px";b.google_ad_resizable=3D!0;d= elete b.google_ad_format;b.google_loader_features_used=3D128}else{p=3Dud= (a,c)?(p=3Dy(["LC","LE"],pa))?"LE"=3D=3D(b.google_responsive_override_lo= gs_experiment=3Dp):!1:!1;if(p)try{m=3Da.offsetWidth,F=3Ded(m,bd(c,m,"aut= o"),c,a,!0),k=3Dnew Oa(F.w(m),F.height()),b.google_ember_w=3Dk.width,b.g= oogle_ember_h=3Dk.height}catch(H){b.google_ember_w=3Db.google_ember_h=3D= "e"}!Ya.test(b.google_ad_width)&&!Xa.test(a.style.width)||!Ya.test(b.goo= gle_ad_height)&&!Xa.test(a.style.height)? (c=3DTa(a,c),a.style.width=3Dc.width,a.style.height=3Dc.height,Kc(c,b),b= .google_ad_width||(b.google_ad_width=3Da.offsetWidth),b.google_ad_height= ||(b.google_ad_height=3Da.offsetHeight),b.google_loader_features_used=3D= 256):(Kc(a.style,b),b.google_ad_output&&"html"!=3Db.google_ad_output||30= 0!=3Db.google_ad_width||250!=3Db.google_ad_height||(c=3Da.style.width,a.= style.width=3D"100%",p=3Da.offsetWidth,a.style.width=3Dc,b.google_availa= ble_width=3Dp))}}},vd=3Dfunction(a){for(var b=3Ddocument.getElementsByTa= gName("ins"),c=3D0,d=3Db[c];cv()&&bc(b)){n.google_q.tags=3D[];b=3Dac(Ca(),b= .lib);var c=3DSa(n.document,b),d=3Dv();c.onload=3DC("aa::amarn",t(wd,n,d= ,a),t(hd,n));n.setTimeout(function(){var a=3Dv();n.setTimeout(C("aa::ama= abt",t(xd,n,c,a),t(hd,n)),100); cc(n,{td:a-d})},0)}else try{n.localStorage.removeItem("google_ama_config= ")}catch(e){cc(n,{lserr:1})}}},wd=3Dfunction(a,b,c){a.google_q.tags&&(cc= (a,{stg:1,t:v()-b}),(b=3Da.google_amar)&&J(b)&&Kb("aa::amar",Lb,t(b,a,c)= ),zd(a))},xd=3Dfunction(a,b,c){a.google_q.tags&&(b.onload=3Dfunction(){c= c(a,{stg:0,t:v()-c})},zd(a))},zd=3Dfunction(a){var b=3Da.google_q.tags;a= .google_q.tags=3Dvoid 0;md(b)},hd=3Dfunction(a){a.google_q.tags=3Dvoid 0= },md=3Dfunction(a){if(a&&a.shift)try{for(var b,c=3D20;0=3D= la||la%b.length)||(d=3Dec.ba,d=3D!(d.start<=3Dc.start&&d.end>=3Dc.end));= d?b=3Dnull:(d=3Dab(I),b=3Dnull!=3D=3Dd&&c.start<=3Dd&&c.end>=3Dd?b[(d-ja= )%b.length]:null)}b&&a.push(b);b=3DN.C;(b=3Dgc(ma,b.j,b.i))&&a.push(b);b= =3DN.F;(b=3Dgc(na,b.j,b.i))&&a.push(b);b=3DN.v;(b=3Dgc(oa,b.j,b.i))&&a.p= ush(b);b=3DN.G;(b=3Dgc(va,b.j,b.i))&&a.push(b);zb.body||(b=3D N.H,(b=3Dgc(wa,b.j,b.i))&&a.push(b))}a=3Dwindow.adsbygoogle;md(a);if(!a|= |!a.loaded){window.adsbygoogle=3D{push:Ad,loaded:!0};a&&Id(a.onload);try= {Object.defineProperty(window.adsbygoogle,"onload",{set:Id})}catch(e){}}= },Id=3Dfunction(a){J(a)&&window.setTimeout(a,0)};Bd();}).call(this); ------------XBLsZq9NkNLk5QAFF8cyEr Content-Disposition: inline; filename=addthis_widget.js Content-Type: text/javascript; name=addthis_widget.js Content-Location: http://s7.addthis.com/js/300/addthis_widget.js Content-Transfer-Encoding: Quoted-Printable !function(e){function t(n){if(i[n])return i[n].exports;var a=3Di[n]=3D{e= xports:{},id:n,loaded:!1};return e[n].call(a.exports,a,a.exports,t),a.lo= aded=3D!0,a.exports}var n=3Dwindow.atwpjp;window.atwpjp=3Dfunction(i,o){= for(var r,s,c=3D0,d=3D[];c13&&!o.msedge(e)= },chr:function(e){return/chrome/.test(e)&&!/rockmelt/.test(e)&&!o.msedge= (e)},iph:function(e){return/iphone/.test(e)||/ipod/.test(e)},dro:functio= n(e){return/android/.test(e)},wph:function(e){return/windows phone/.test= (e)},bb10:function(){return/bb10/.test(a)},ipa:function(e){return/ipad/.= test(e)},saf:function(e){return/safari/.test(e)&&!/chrome/.test(e)},opr:= function(e){return/opera/.test(e)},ffx:function(e){return/firefox/.test(= e)},ff2:function(e){return/firefox\/2/.test(e)},ffn:function(e){return/f= irefox\/((3.[6789][0-9a-z]*)|(4.[0-9a-z]*))/.test(e)},ie6:function(e){re= turn/msie 6\.0/.test(e)},ie7:function(e){return/msie 7\.0/.test(e)},ie8:= function(e){return/msie 8\.0/.test(e)},ie9:function(e){return/msie 9\.0/= .test(e)},ie10:function(e){return/msie 10\.0/.test(e)},ie11:function(e){= return/trident\/7\.0/.test(e)},msedge:function(e){return/edge\/12\./.tes= t(e)},msi:function(e){return/msie/.test(e)&&!/opera/.test(e)},mob:functi= on(e){return/mobile|ip(hone|od|ad)|android|blackberry|iemobile|kindle|ne= tfront|silk-accelerated|(hpw|web)os|fennec|minimo|opera m(obi|ini)|blaze= r|dolfin|dolphin|skyfire|zune/.test(e)}};e.exports=3Dfunction(e,t){retur= n t=3Dt?t.toLowerCase():a,o[e](t)},i(o,function(t,n){e.exports[n]=3Dt(a)= }),function(){var t=3Ddocument.compatMode,n=3D1;"BackCompat"=3D=3D=3Dt?n= =3D2:"CSS1Compat"=3D=3D=3Dt&&(n=3D0),e.exports.mode=3Dn,e.exports.msi&&(= e.exports.mod=3Dn)}()},function(e,t){function n(){return(d/1e3&c).toStri= ng(16)+("00000000"+Math.floor(Math.random()*(c+1)).toString(16)).slice(-= 8)}function i(e){var t;try{t=3Dnew Date(1e3*parseInt(e.substr(0,8),16))}= catch(n){t=3Dnew Date}finally{return t}}function a(e){var t=3Di(e);retur= n t.getTime()-864e5>(new Date).getTime()}function o(e,t){var n=3Di(e);re= turn(new Date).getTime()-n.getTime()>1e3*t}function r(e){return e&&e.mat= ch(/^[0-9a-f]{16}$/)&&!a(e)}function s(e){return r(e)&&e.match(/^0{16}$/= )}e.exports=3D{makeCUID:n,isValidCUID:r,isOptOutCUID:s,isCUIDOlderThan:o= };var c=3D4294967295,d=3D(new Date).getTime()},function(e,t){function n(= e,t,n,i){t&&(t.attachEvent?t[(e?"detach":"attach")+"Event"]("on"+n,i):t[= (e?"remove":"add")+"EventListener"](n,i,!1))}function i(e,t,i){n(0,e,t,i= )}function a(e,t,i){n(1,e,t,i)}e.exports=3D{listen:i,unlisten:a}},functi= on(e,t){function n(e){return e.match(/(([^\/\/]*)\/\/|\/\/)?([^\/\?\&\#]= +)/i)[0]}function i(e){return e.replace(n(e),"")}function a(e){return e.= replace(/^(http|https):\/\//,"").split("/").shift()}function o(e){var t,= n;if(e){if(-1!=3D=3De.search(/(?:\:|\/\/)/))return e;if(-1!=3D=3De.searc= h(/^\//))return window.location.origin+e;if(-1!=3D=3De.search(/(?:^\.\/|= ^\.\.\/)/)){t=3D/\.\.\//g;var i=3D0=3D=3D=3De.search(t)&&e.match(t).leng= th||1,a=3Dwindow.location.href.replace(/\/$/,"").split("/");return e=3De= .replace(t,"").replace(n,""),a.slice(0,a.length-i).join("/")+"/"+e}retur= n window.location.href.match(/(.*\/)/)[0]+e}}function r(e){return e.spli= t("//").pop().split("/").shift().split("#").shift().split("?").shift().s= plit(".").slice(-2).join(".")}e.exports=3D{getDomain:n,getQueryString:i,= getDomainNoProtocol:a,getAbsoluteFromRelative:o,getHost:r}},function(e,t= ,n){var i,a=3Dwindow,o=3Da.console,r=3D0,s=3D!o||"undefined"=3D=3Dtypeof= o.log,c=3D(Array.prototype.slice,["error","warn","info","debug"]),d=3Dc= .length;try{!s&&a.location.hash.indexOf("atlog=3D1")>-1&&(r=3D1)}catch(l= ){}for(i=3D{level:r};--d>=3D0;)!function(e,t){i[t]=3Ds?function(){}:func= tion(){}}(d,c[d]);e.exports=3Di},function(e,t){function n(e){return"numb= er"=3D=3Dtypeof e&&e>-1&&e%1=3D=3D0&&i>=3De}var i=3DMath.pow(2,53)-1;e.e= xports=3Dn},function(e,t,n){"use strict";var i=3Dn(2),a=3Dn(18),o=3Dn(59= ),r=3Dn(30),s=3Dn(107),c=3Dn(34),d=3Dn(116),l=3Dn(106),u=3Dn(9),f=3Dwind= ow,h=3Df.addthis_share,p=3Df.encodeURIComponent,m=3Df._atw;e.exports=3Df= unction(e,t,n,f){var g=3Dd(_ate).clearOurFragment;if("more"=3D=3D=3De&&r= ()>=3D300&&!i("wph")&&!i("iph")&&!i("dro")){var b=3Da(n||("undefined"=3D= =3Dtypeof m?h:m.share));b.url=3Dp(b.url),b.title=3Dp(b.title||(h||{}).ti= tle||""),f=3D"undefined"=3D=3Dtypeof m?f:m.conf;var v=3Dwindow._atc.rsrc= s.bookmark+"#ats=3D"+p(o(b))+"&atc=3D"+p(o(f));if(i("msi")&&v.length>2e3= ){v=3Dv.split("&atc")[0];var w=3D{product:f.product,data_track_clickback= :f.data_track_clickback,pubid:f.pubid,username:f.username,pub:f.pub,ui_e= mail_to:f.ui_email_to,ui_email_from:f.ui_email_from,ui_email_note:f.ui_e= mail_note};m.ics(e)&&(w.services_custom=3Dm.ics(e)),v+=3D"&atc=3D"+p(o(w= ))}return v}return s()+(t?"feed.php":"email"=3D=3D=3De&&r()>=3D300?"tell= friend.php":"bookmark.php")+"?v=3D300&winname=3Daddthis&"+l({svc:e,feed:= t,share:n,config:f,classificationBitmask:_ate.cb,secondaryProductCode:_a= te.track&&_ate.track.spc,uid:_ate.uid,sessionID:_ate.track&&_ate.track.s= sid(),pubID:u(),feedsABCell:_ate.ab,usesFacebookLibrary:_ate.ufbl,usesUs= erAPI:_ate.uud})+(c.dr?"&pre=3D"+p(g(c.dr)):"")+"&tt=3D0"+("more"=3D=3D=3D= e&&i("ipa")?"&imore=3D1":"")+"&captcha_provider=3D"+(i("msi")?"recaptcha= ":"nucaptcha")+(_ate.pro=3D=3D=3D!0?"&pro=3D1":"")}},function(e,t,n){"us= e strict";var i=3Dn(78),a=3Dn(45),o=3Di("addthis_widget"),r=3Do.pubid||o= .pub||o.username;r&&(window.addthis_pub=3Dwindow.decodeURIComponent(r)),= window.addthis_pub&&window.addthis_config&&(window.addthis_config.userna= me=3Dwindow.addthis_pub),e.exports=3Dfunction(){var e=3Dwindow,t=3De.add= this_config_msg||{},n=3De.addthis_config||{};return encodeURIComponent(a= (t.pubid||t.username||t.pub||n.pubid||n.username||e.addthis_pub||""))}},= ,function(e,t,n){function i(e){return e=3D=3D=3DObject(e)}function a(e){= return"[object Array]"=3D=3D=3DObject.prototype.toString.call(e)}functio= n o(e){var t;for(t in e)if(e.hasOwnProperty(t))return!1;return!0}var r=3D= n(873),s=3Dn(1),c=3D{};s(["Arguments","Function","String","Number","Date= ","RegExp"],function(e,t){c[t.toLowerCase()]=3Dfunction(e){return r(e)=3D= =3D=3D"[object "+t+"]"}}),c["function"]=3Dfunction(e){return"function"=3D= =3Dtypeof e},e.exports=3D{string:c.string,"function":c["function"],numbe= r:c.number,emptyObj:o,object:i,array:Array.isArray||a}},function(e,t,n){= function i(e){return d(p.cookie,";")[e]}function a(){return g?1:(c("xtc"= ,1),1=3D=3Di("xtc")&&(g=3D1),s("xtc",1),g)}function o(e){var t,n,i,a=3De= ||_ate.dh||_ate.du||(_ate.dl?_ate.dl.hostname:""),o=3Df.getDomain(a);if(= h.test(o))return!0;n=3Du(),i=3D["usarmymedia","govdelivery"];for(t in i)= if(n=3D=3Di[t])return!0;return!1}function r(e){_atc.xck||o(e)&&(_atc.xck= =3D1)}function s(e,t){p.cookie&&(p.cookie=3De+"=3D; expires=3DThu, 01 Ja= n 1970 00:00:01 GMT; path=3D/"+(t?"; domain=3D"+(l("msi")?"":".")+"addth= is.com":""))}function c(e,t,n,i,a){m.at_sub||o(),_atc.xck||i&&(m.addthis= _config||{}).data_use_cookies_ondomain=3D=3D=3D!1||(m.addthis_config||{}= ).data_use_cookies=3D=3D=3D!1||(a||(a=3Dnew Date,a.setYear(a.getFullYear= ()+2)),document.cookie=3De+"=3D"+t+(n?"":"; expires=3D"+a.toUTCString())= +"; path=3D/;"+(i?"":" domain=3D"+(l("msi")?"":".")+"addthis.com"))}var = d=3Dn(28),l=3Dn(2),u=3Dn(58),f=3Dn(5),h=3D/(?:\.mil|\.gov)$/,p=3Ddocumen= t,m=3Dwindow,g=3D0;e.exports=3D{rck:i,sck:c,kck:s,cww:a,gov:r,isgv:o}},f= unction(e,t,n){var i=3Dn(8),a=3Dn(104).clickifyURL,o=3Dn(9),r=3Dn(3).mak= eCUID,s=3Dn(18);e.exports=3Dfunction(e,t,n,c,d,l){var u=3Do(),f=3Dc||t.u= rl||"",h=3Dt.xid||r(),p=3Ds(t),m=3Dn.data_track_clickback!=3D=3D!1||n.da= ta_track_linkback||"AddThis"=3D=3D=3Du||!u;return 0=3D=3D=3Df.toLowerCas= e().indexOf("http%3a%2f%2f")&&(f=3Dwindow.decodeURIComponent(f)),d&&(p.x= id=3Dh,setTimeout(function(){(new Image).src=3Di("twitter"=3D=3D=3De&&l?= "tweet":e,0,p,n)},100)),m?a(f,e,h):f}},function(e,t,n){var i=3Dn(3).isVa= lidCUID,a=3Dn(67);e.exports=3Dfunction(e){var t;return e=3De||"",t=3Da(e= ).shift().split("=3D").pop(),i(t)||e.indexOf("#at_pco=3D")>-1?e.split("#= ").shift():(t=3De.split("#").slice(1).join("#").split(";").shift(),3=3D=3D= =3Dt.split(".").length&&(t=3Dt.split(".").slice(0,-1).join(".")),12=3D=3D= =3Dt.length&&"."=3D=3D=3Dt.substr(0,1)&&/[a-zA-Z0-9\-_]{11}/.test(t.subs= tr(1))?e.split("#").shift():e)}},function(e,t,n){var i=3Dwindow.encodeUR= IComponent,a=3Dn(13),o=3Dn(14),r=3Dn(31),s=3Dn(2);e.exports=3Dfunction(e= ,t,n){var c=3De.share_url_transforms||e.url_transforms||{},d=3Do(r(e.url= ,c,e,"mailto")),l=3De.title||d;return t=3Dt||{},"mailto:?body=3D"+i(a("m= ailto",e,t,d,n))+"&subject=3D"+(s("iph")?l:i(l))}},function(e,t,n){var i= =3Dn(66),a=3D{},o=3Ddocument,r=3Dwindow;e.exports=3Dfunction(e,t,n,s,c,d= ){if(!a[e]||d){var l=3Do.createElement("script"),u=3D"https:"=3D=3D=3Dr.= location.protocol,f=3D"",h=3Dc?c:o.getElementsByTagName("head")[0]||o.do= cumentElement;return l.setAttribute("type","text/javascript"),n&&l.setAt= tribute("async","async"),s&&l.setAttribute("id",s),(r.chrome&&r.chrome.s= elf||r.safari&&r.safari.extension)&&(f=3Du?"https:":"http:",0=3D=3D=3De.= indexOf("//")&&(e=3Df+e)),l.src=3D(t||0=3D=3D=3De.indexOf("//")?"":f+i()= )+e,h.insertBefore(l,h.firstChild),a[e]=3D1,l}return 1}},function(e,t,n)= {var i=3Dn(24),a=3Dn(44);e.exports=3Dfunction(e,t){return t=3Dvoid 0!=3D= =3Dt?t:"&",i(e,function(e,t,n){return n=3Da(n),n&&e.push(window.encodeUR= IComponent(n)+"=3D"+window.encodeURIComponent(a(t))),e},[]).join(t)}},fu= nction(e,t){e.exports=3Dfunction n(e){if(null=3D=3De||"object"!=3Dtypeof= e)return e;if(e instanceof Object){var t=3D{};if("function"=3D=3Dtypeof= e.hasOwnProperty)for(var i in e)t[i]!=3D=3De&&e.hasOwnProperty(i)&&void= 0!=3D=3De[i]&&(t[i]=3Dn(e[i]));return t}return null}},function(e,t,n){f= unction i(e,t){var n,i,a=3D{};for(i in e)n=3De[i],a[i]=3Dvoid 0!=3D=3Dn?= n:t(i);return a}function a(){return i(r("name","list"),d)}function o(){f= unction e(){return""}return i(s("url"),e)}function r(e,t){var n,i,a,o,r=3D= u[e],c=3D{};if(r&&r[t])return r[t];n=3Ds(e),i=3Ds(t);for(a in n)o=3Dn[a]= ,i[a]!=3D=3D!1&&(c[a]=3Do);return void 0=3D=3D=3Dr&&(r=3D{}),r[t]=3Dc,c}= function s(e){var t,n,i=3D{};if(l[e])return l[e];for(t in c)n=3Dc[t],i[t= ]=3Dn[e];return l[e]=3Di,i}var c=3Dn(22),d=3Dn(50),l=3D{},u=3D{};e.expor= ts=3D{getObjectWithProp:s,list:a(),map:o()}},function(e,t,n){"use strict= ";var i=3Dn(75),a=3Dn(2);e.exports=3Dfunction(){var e=3Dwindow.addthis_l= anguage||(window.addthis_config||{}).ui_language||document.documentEleme= nt.lang;return i(e)?e:(e=3Da("msi")?navigator.userLanguage:navigator.lan= guage,i(e)?e:"en")}},,function(e,t){e.exports=3D{"100zakladok":{url:"100= zakladok.ru"},"2linkme":{bg:"008aff"},"2tag":{url:"2tag.nl",name:"2 Tag"= },a97abi:{bg:"F595B4"},adfty:{bg:"9dcb43"},adifni:{bg:"3888c8"},advqr:{n= ame:"ADV QR"},aim:{url:"lifestream.aol.com",bg:"8db81d",name:"Lifestream= ",top:1},amazonwishlist:{url:"amazon.com",name:"Amazon"},amenme:{bg:"087= 2d8",name:"Amen Me!"},aolmail:{url:"webmail.aol.com",bg:"282828",name:"A= OL Mail"},apsense:{bg:"d78818",name:"APSense"},arto:{bg:"8db81d"},baang:= {url:"baang.ir",bg:"f8ce2c"},baidu:{url:"cang.baidu.com",bg:"1d2fe3"},ba= lltribe:{bg:"620e18",name:"BallTribe"},beat100:{bg:"d8d8d8"},biggerpocke= ts:{bg:"5f729d",name:"BiggerPockets"},bitly:{url:"bit.ly",bg:"f26e2a",na= me:"Bit.ly"},bizsugar:{bg:"1F72EA",name:"BizSugar"},bland:{name:"Bland t= akkinn"},blinklist:{},blogger:{bg:"f8883d",top:1},bloggy:{url:"bloggy.se= ",bg:"ee2271"},blogkeen:{bg:"db69b6"},blogmarks:{url:"blogmarks.net"},bl= urpalicious:{bg:"33b8f8"},bobrdobr:{url:"bobrdobr.ru",bg:"2874C7",top:1}= ,bonzobox:{bg:"c83828",name:"BonzoBox"},bookmarkycz:{url:"bookmarky.cz",= bg:"a81818",name:"Bookmarky.cz"},bookmerkende:{url:"bookmerken.de",bg:"5= 58c15",name:"Bookmerken"},box:{url:"box.net",bg:"3088b1"},brainify:{bg:"= 2878ee"},bryderi:{url:"bryderi.se",bg:"191819",name:"Bryderi.se"},buddym= arks:{name:"BuddyMarks"},buffer:{bg:"000000"},camyoo:{bg:"ace8f7"},care2= :{bg:"6CB440"},chiq:{bg:"ee2271"},citeulike:{url:"citeulike.org",bg:"088= 8c8",name:"CiteULike"},classicalplace:{bg:"102831",name:"ClassicalPlace"= },cleanprint:{bg:"97ba7a",name:"CleanPrint"},cleansave:{bg:"5BA741",name= :"CleanSave"},cndig:{url:"cndig.org",bg:"d56a32"},colivia:{url:"colivia.= de",bg:"88b748",name:"Colivia.de"},cosmiq:{url:"cosmiq.de",bg:"4ca8d8",n= ame:"COSMiQ"},cssbased:{bg:"394918",name:"CSS Based"},curateus:{url:"cur= ate.us",name:"Curate.us"},dashboard:{bg:"f8694d",url:"api.addthis.com",l= ist:!1},delicious:{bg:"3399FF",top:1},digaculturanet:{url:"digacultura.n= et",name:"DigaCultura"},digg:{bg:"221E1E",top:1},diggita:{url:"diggita.i= t",bg:"88b748"},digo:{url:"digo.it",bg:"abd4ec"},diigo:{bg:"0888d8"},dom= aintoolswhois:{url:"domaintools.com",bg:"305891",name:"Whois Lookup"},do= melhor:{bg:"29a628",url:"domelhor.net",name:"DoMelhor"},dotnetshoutout:{= bg:"ed490d",name:".netShoutout"},douban:{bg:"0e7512"},draugiem:{url:"dra= ugiem.lv",bg:"f47312",name:"Draugiem.lv"},dropjack:{bg:"c8e8f8"},dudu:{b= g:"3d3d3d"},dzone:{},edcast:{bg:"E03E7C",name:"EdCast"},efactor:{bg:"779= 7b7",name:"EFactor"},email:{bg:"738a8d",top:1},embarkons:{bg:"f8b016"},e= vernote:{bg:"7fce2c"},ezyspot:{bg:"C1EAFF",name:"EzySpot"},fabulously40:= {bg:"620e18"},facebook:{bg:"3B5998",top:1},fark:{bg:"5f729d"},farkinda:{= bg:"8808f8"},fashiolista:{bg:"383838"},favable:{bg:"666666",name:"FAVabl= e"},faves:{bg:"08aed9"},favlogde:{url:"favlog.de",bg:"6e6e6e",name:"favl= og"},favoritende:{url:"favoriten.de",bg:"f88817",name:"Favoriten"},favor= ites:{bg:"f5ca59",top:1},favoritus:{bg:"97462e"},financialjuice:{name:"F= inancial Juice"},flaker:{url:"flaker.pl",bg:"383838"},flipboard:{bg:"E12= 828"},folkd:{},foodlve:{name:"Cherry Share"},fresqui:{bg:"4798d8"},frien= dfeed:{bg:"75aaeb",name:"FriendFeed"},funp:{bg:"333333",name:"funP"},fwi= sp:{name:"fwisp"},gamekicker:{bg:"282828"},gg:{name:"GG"},giftery:{bg:"4= 84848",name:"Giftery.me"},gluvsnap:{url:"healthimize.com",bg:"a82868",na= me:"Healthimize"},gmail:{url:"mail.google.com",bg:"DB4437",top:1},goodno= ows:{bg:"884989",name:"Good Noows"},google:{bg:"4285F4",name:"Google Boo= kmark",top:1},google_plusone_share:{bg:"DC4E41",name:"Google+",top:1},go= ogletranslate:{url:"translate.google.com",bg:"2c72c8",name:"Translate"},= govn:{url:"my.go.vn",bg:"0ca8ec",name:"Go.vn"},greaterdebater:{bg:"66666= 6",name:"GreaterDebater"},hackernews:{url:"news.ycombinator.com",bg:"FF6= 600",name:"Hacker News"},hatena:{url:"b.hatena.ne.jp",bg:"08aed9",top:1}= ,hedgehogs:{url:"hedgehogs.net",bg:"080808"},historious:{url:"historio.u= s",bg:"b84949",name:"historious"},hootsuite:{},hotklix:{},hotmail:{url:"= hotmail.msn.com",bg:"f89839",name:"Outlook"},identica:{url:"identi.ca",n= ame:"Identi.ca"},ihavegot:{name:"ihavegot"},indexor:{url:"indexor.co.uk"= ,bg:"8bd878"},informazione:{url:"fai.informazione.it"},instapaper:{},int= ernetarchive:{bg:"6e6e6e",name:"Wayback Machine"},iorbix:{bg:"384853",na= me:"iOrbix"},irepeater:{name:"IRepeater"},jamespot:{bg:"f8b034"},jappy:{= url:"jappy.de",bg:"f59216",name:"Jappy Ticker",top:1},jolly:{bg:"666666"= },jumptags:{bg:"0898c7"},kaevur:{bg:"080808"},kaixin:{url:"kaixin001.com= ",bg:"dd394e",name:"Kaixin Repaste"},ketnooi:{bg:"1888b9"},kik:{bg:"82BC= 23"},kindleit:{url:"fivefilters.org",bg:"282828",name:"Kindle It"},kledy= :{url:"kledy.de",bg:"8db81d"},kommenting:{},latafaneracat:{url:"latafane= ra.cat",name:"La tafanera"},librerio:{},lidar:{bg:"2ca8d2",name:"LiDAR O= nline"},link:{bg:"8e8e8e",name:"Copy Link"},linkedin:{bg:"0077B5",name:"= LinkedIn",top:1},linksgutter:{bg:"a15fa0",name:"Links Gutter"},linkuj:{u= rl:"linkuj.cz",bg:"5898d9",name:"Linkuj.cz"},livejournal:{bg:"0ca8ec",na= me:"LiveJournal",top:1},lockerblogger:{name:"LockerBlogger"},logger24:{b= g:"d83838"},mailto:{name:"Email App",top:1},margarin:{url:"mar.gar.in",n= ame:"mar.gar.in"},markme:{url:"markme.me",bg:"d80808"},mashant:{bg:"0858= 78"},mashbord:{},me2day:{bg:"7858c8",name:"me2day"},meinvz:{url:"meinvz.= net",name:"meinVZ"},mekusharim:{url:"mekusharim.walla.co.il"},memonic:{b= g:"083568"},memori:{url:"memori.ru",bg:"ee2271",name:"Memori.ru"},mendel= ey:{bg:"af122b"},meneame:{url:"meneame.net",name:"Men=C3=A9ame",top:1},m= enu:{bg:"f8694d",url:"api.addthis.com",list:!1},misterwong:{url:"mister-= wong.com",bg:"a81818",name:"Mister Wong"},misterwong_de:{url:"mister-won= g.de",name:"Mister Wong DE",bg:"080808",list:!1,top:1},mixi:{},moemesto:= {url:"moemesto.ru",name:"Moemesto.ru"},moikrug:{url:"moikrug.ru",bg:"72a= ed0"},mrcnetworkit:{url:"mrcnetwork.it",bg:"abd4ec",name:"mRcNEtwORK"},m= ymailru:{url:"connect.mail.ru",bg:"165496",name:"Mail.ru",top:1},myspace= :{bg:"282828",top:1},myvidster:{bg:"93F217",name:"myVidster"},n4g:{bg:"d= 80808",name:"N4G"},naszaklasa:{url:"nk.pl",bg:"4077a7",name:"Nasza-klasa= "},netlog:{bg:"282828",name:"NetLog"},netvibes:{bg:"48d828"},netvouz:{},= newsmeback:{bg:"316896",name:"NewsMeBack"},newstrust:{url:"newstrust.net= ",name:"NewsTrust"},newsvine:{bg:"64a556"},nujij:{url:"nujij.nl",bg:"c80= 80a"},odnoklassniki_ru:{url:"odnoklassniki.ru",bg:"d57819",name:"Odnokla= ssniki",top:1},oknotizie:{url:"oknotizie.virgilio.it",name:"OKNOtizie", top:1},openthedoor:{url:"otd.to",name:"OpenTheDoor"},oyyla:{bg:"f6cf0e"}= ,packg:{},pafnetde:{url:"pafnet.de",bg:"f4080d",name:"Pafnet"},pdfmyurl:= {bg:"f89823",name:"PDFmyURL"},pdfonline:{url:"savepageaspdf.pdfonline.co= m",name:"PDF Online"},phonefavs:{name:"PhoneFavs"},pinterest:{bg:"CB2027= ",name:"Pinterest",list:!1,top:1},pinterest_share:{bg:"CB2027",name:"Pin= terest",top:1},planypus:{url:"planyp.us",bg:"0872d8"},plaxo:{bg:"318ef6"= },plurk:{bg:"d56a32"},pocket:{url:"getpocket.com"},posteezy:{bg:"f8ce2c"= },print:{bg:"738a8d",top:1},printfriendly:{bg:"88b748",name:"PrintFriend= ly"},pusha:{url:"pusha.se",bg:"0878ba"},qrsrc:{name:"QRSrc.com"},quantca= st:{bg:"0878ba"},qzone:{url:"sns.qzone.qq.com"},raiseyourvoice:{bg:"6666= 66",name:"Write Your Rep"},reddit:{bg:"ff5700",top:1},rediff:{url:"share= .rediff.com",bg:"d80808",name:"Rediff MyPage"},redkum:{bg:"f4080d",name:= "RedKum"},researchgate:{bg:"6e6e6e",name:"ResearchGate"},safelinking:{bg= :"3888c8"},scoopat:{url:"scoop.at",bg:"d80819",name:"Scoop.at"},scoopit:= {url:"scoop.it",bg:"9dcb43",name:"Scoop.it"},sekoman:{url:"sekoman.lv",b= g:"2a58a9"},select2gether:{url:"www2.select2gether.com",bg:"f8b016",name= :"Select2Gether"},sharer:{bg:"0888C8",name:"WebMoney"},shaveh:{url:"shav= eh.co.il"},shetoldme:{name:"She Told Me"},sinaweibo:{url:"v.t.sina.com.c= n",bg:"f5ca59",name:"Sina Weibo"},skyrock:{bg:"282828",name:"Skyrock Blo= g"},slack:{bg:"78D4B6",name:"Slack"},smiru:{url:"smi2.ru",bg:"af122b",na= me:"SMI"},socialbookmarkingnet:{url:"social-bookmarking.net",name:"Bookm= arkingNet"},sodahead:{name:"SodaHead"},sonico:{bg:"0ca8ec"},spinsnap:{bg= :"9dcb43",name:"SpinSnap"},startaid:{bg:"4498c8"},startlap:{url:"startla= p.hu",bg:"4891b7"},studivz:{url:"studivz.net",name:"studiVZ"},stuffpit:{= bg:"2c72c8"},stumbleupon:{bg:"e65229",name:"StumbleUpon",top:1},stumpedi= a:{},stylishhome:{bg:"bfd08d",name:"FabDesign"},sulia:{},sunlize:{bg:"d8= 0808"},supbro:{bg:"383838",name:"SUP BRO"},surfingbird:{bg:"0ca8ec"},sve= jo:{url:"svejo.net",bg:"f89823"},symbaloo:{bg:"4077a7"},tagza:{bg:"4888f= 8"},tapiture:{bg:"2f5070"},taringa:{bg:"165496",name:"Taringa!"},techner= d:{bg:"316896",name:"Communicate"},thefancy:{bg:"4ca8d8",name:"The Fancy= "},thefreedictionary:{bg:"4891b7",name:"FreeDictionary"},thewebblend:{bg= :"bfd08d",name:"The Web Blend"},thisnext:{bg:"282828",name:"ThisNext"},t= opsitelernet:{url:"ekle.topsiteler.net",name:"TopSiteler"},tuenti:{bg:"5= f729d",top:1},tulinq:{bg:"0e7512"},tumblr:{bg:"37455C",top:1},tvinx:{bg:= "0878a7"},twitter:{bg:"55ACEE",top:1,referrers:["t.co"]},twitthis:{name:= "TwitThis"},typepad:{bg:"080808"},upnews:{url:"upnews.it",bg:"5DB506",na= me:"Upnews.it"},urlaubswerkde:{url:"urlaubswerk.de",bg:"f89823",name:"Ur= laubswerk"},viadeo:{top:1},viber:{bg:"7B519D"},virb:{bg:"08aed9"},visite= zmonsite:{bg:"7DD6EA",name:"VisitezMonSite"},vk:{url:"vkontakte.ru",name= :"VKontakte",bg:"6383A8",top:1},vkrugudruzei:{url:"vkrugudruzei.ru",bg:"= e65229",name:"vKruguDruzei"},voxopolis:{bg:"1097eb",name:"VOX Social"},v= ybralisme:{url:"vybrali.sme.sk",bg:"318ef6",name:"VybraliSME"},w3validat= or:{url:"validator.w3.org",bg:"165496",name:"HTML Validator"},wanelo:{},= webnews:{url:"webnews.de",bg:"f4080d"},webshare:{bg:"080808",name:"WebSh= are"},whatsapp:{url:"whatsapp.com",bg:"4DC247",name:"WhatsApp"},windows:= {url:"api.addthis.com",bg:"00ADEF",name:"Windows Gadget"},wirefan:{bg:"3= 33",name:"WireFan"},wishmindr:{bg:"EF474F",name:"WishMindr"},wordpress:{= bg:"585858",name:"WordPress",top:1},wowbored:{bg:"738a8d",name:"WowBored= "},wykop:{url:"wykop.pl",bg:"FB803F",top:1},xanga:{},xing:{name:"XING"},= yahoobkm:{url:"bookmarks.yahoo.com",bg:"3a234f",name:"Y! Bookmarks",top:= 1},yahoomail:{url:"compose.mail.yahoo.com",bg:"3a234f",name:"Y! Mail",to= p:1},yammer:{bg:"2ca8d2"},yardbarker:{},yigg:{url:"yigg.de"},yiid:{url:"= spread.ly",bg:"984877",name:"Spreadly"},yookos:{bg:"0898d8"},yoolink:{ur= l:"go.yoolink.to",bg:"A5C736"},yorumcuyum:{bg:"666666"},youmob:{bg:"1918= 47",name:"YouMob"},yummly:{bg:"E26221"},yuuby:{bg:"290838"},zakladoknet:= {url:"zakladok.net",name:"Zakladok.net"},ziczac:{url:"ziczac.it",name:"Z= icZac"},zingme:{url:"link.apps.zing.vn",bg:"F02972",name:"ZingMe"}}},,fu= nction(e,t){e.exports=3Dfunction(e,t,n,i){if(!e)return n;if(e instanceof= Array)for(var a=3D0,o=3De.length,r=3De[0];o>a;r=3De[++a])n=3Dt.call(i||= e,n,r,a,e);else for(var s in e)e instanceof Object?e.hasOwnProperty(s)&&= (n=3Dt.call(i||e,n,e[s],s,e)):void 0!=3D=3De[s]&&(n=3Dt.call(i||e,n,e[s]= ,s,e));return n}},function(e,t,n){var i=3Dn(7),a=3Dn(26),o=3Dn(38),r=3D"= [object Array]",s=3DObject.prototype,c=3Ds.toString,d=3Da(d=3DArray.isAr= ray)&&d,l=3Dd||function(e){return o(e)&&i(e.length)&&c.call(e)=3D=3Dr||!= 1};e.exports=3Dl},function(e,t,n){function i(e){return null=3D=3De?!1:l.= call(e)=3D=3Dr?u.test(d.call(e)):o(e)&&s.test(e)||!1}var a=3Dn(807),o=3D= n(38),r=3D"[object Function]",s=3D/^\[object .+?Constructor\]$/,c=3DObje= ct.prototype,d=3DFunction.prototype.toString,l=3Dc.toString,u=3DRegExp("= ^"+a(l).replace(/toString|(function).*?(?=3D\\\()| for .+?(?=3D\\\])/g,"= $1.*?")+"$");e.exports=3Di},function(e,t){function n(e){var t=3Dtypeof e= ;return"function"=3D=3Dt||e&&"object"=3D=3Dt||!1}e.exports=3Dn},function= (e,t,n){var i=3Dn(808),a=3Dn(781);e.exports=3Dfunction(e,t){return t=3Dv= oid 0!=3D=3Dt?t:"&",e=3Dvoid 0!=3D=3De?e:"",a(e.split(t),function(e,t){t= ry{var n=3Dt.split("=3D"),a=3Di(window.decodeURIComponent(n[0])),o=3Di(w= indow.decodeURIComponent(n.slice(1).join("=3D")));a&&(e[a]=3Do)}catch(r)= {}return e},{})}},function(e,t,n){var i=3Dn(108);e.exports=3Dfunction(e)= {i().push(e)}},function(e,t){e.exports=3Dfunction(){return!_atc.noup&&_a= tc.ver>=3D152?300:_atc.ver}},function(e,t,n){var i=3Dn(821),a=3Dn(814),o= =3Dn(14),r=3Dn(810);e.exports=3Dfunction(e,t,n,s){return t||(t=3D{}),t.r= emove||(t.remove=3D[]),t.remove.push&&(t.remove.push("sms_ss"),t.remove.= push("at_xt"),t.remove.push("at_pco"),t.remove.push("fb_ref"),t.remove.p= ush("fb_source")),t.remove&&(e=3Di(e,t.remove)),t.clean&&(e=3Da(e)),t.de= frag&&(e=3Do(e)),t.add&&(e=3Dr(e,t.add,n,s)),e}},function(e,t){e.exports= =3D[]},function(e,t){e.exports=3Dfunction(e){e.style&&(e.style.width=3De= .style.height=3D"1px",e.style.position=3D"absolute",e.style.top=3D"-9999= px",e.style.zIndex=3D1e5)}},function(e,t,n){"use strict";var i=3Ddocumen= t,a=3Dn(36);e.exports=3D{du:i.location.href,dh:i.location.hostname,dr:i.= referrer,search:i.location.search,pathname:i.location.pathname,query:a(i= .location.search),title:document.title}},function(e,t,n){var i=3Dn(43);e= .exports=3Dfunction(){var e=3Di(arguments,0),t=3De.shift(),n=3De.shift()= ;return function(){return t.apply(n,e.concat(i(arguments,0)))}}},functio= n(e,t,n){var i=3Dn(28);e.exports=3Dfunction(e){var t,n=3De.indexOf("?");= return t=3D-1!=3D=3Dn?e.substring(n):"",i(t.replace(/^[^\?]+\??|^\??/,""= ))}},function(e,t){e.exports=3D{addthis:{bg:"FC6D4C",top:1},behance:{bg:= "176AFF"},compact:{bg:"FC6D4C",top:1},disqus:{bg:"2E9FFF"},etsy:{bg:"EA6= D24"},expanded:{bg:"FC6D4C",top:1},flickr:{bg:"282828"},foursquare:{bg:"= 2D5BE3"},google_follow:{name:"Google Follow",bg:"CF4832",top:1},instagra= m:{bg:"125688",top:1},more:{bg:"FC6D4C",top:1},rss:{name:"RSS",bg:"EF864= 7",top:1},vimeo:{bg:"1AB7EA"},youtube:{name:"YouTube",bg:"CD201F",top:1}= }},function(e,t){function n(e){return e&&"object"=3D=3Dtypeof e||!1}e.ex= ports=3Dn},function(e,t,n){"use strict";var i=3Dn(76).wasRequestMade,a=3D= n(76).get,o=3D!1,r=3Dwindow;e.exports=3Dfunction(){try{a(),o||(i()&&!r.a= ddthis_translations?setTimeout(function(){o=3D1,n.e(0,function(){n(10)})= }):(o=3D1,n.e(0,function(){n(10)})))}catch(e){}}},function(e,t){function= n(e){for(var t,n,i,a,o,s,c,d=3D"",l=3D0;l>2,o=3D(3&t)<<4|n>>= 4,s=3D(15&n)<<2|i>>6,c=3D63&i,isNaN(n)?s=3Dc=3D64:isNaN(i)&&(c=3D64),d+=3D= r.charAt(a)+r.charAt(o)+r.charAt(s)+r.charAt(c);return d}function i(e){v= ar t,n,i,a,o,s,c,d=3D"",l=3D0;for(e=3De.replace(/[^A-Za-z0-9\-_\=3D]/g,"= ");l>4= ,n=3D(15&o)<<4|s>>2,i=3D(3&s)<<6|c,d+=3DString.fromCharCode(t),64!=3Ds&&= (d+=3DString.fromCharCode(n)),64!=3Dc&&(d+=3DString.fromCharCode(i));ret= urn d}function a(e){var t,n,i,a,o,s=3D"",c=3D0;if(/^[0-9a-fA-F]+$/.test(= e))for(;c>2),o=3D= (3&n)<<4|i,s+=3Dr.charAt(a)+(isNaN(i)?"":r.charAt(o));return s}function = o(e){for(var t,n,i,a,o,s=3D"",c=3D0;c=3De.length?NaN:r.indexOf(e.charAt(c++)),t=3Da>>2,n=3DisNaN(o= )?3&a:(3&a)<<2|o>>4,i=3D15&o,s+=3Dt.toString(16)+n.toString(16)+(isNaN(o= )?"":i.toString(16));return s}var r=3D"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefg= hijklmnopqrstuvwxyz0123456789-_=3D",s=3Dwindow;e.exports=3D{atob:s.atob?= function(){return s.atob.apply(s,arguments)}:i,btoa:s.btoa?function(){re= turn s.btoa.apply(s,arguments)}:n,hbtoa:a,atohb:o}},function(e,t,n){func= tion i(e,t,n,i,a){this.type=3De,this.triggerType=3Dt||e,this.target=3Dnu= ll=3D=3D=3Dn?n:n||i,this.triggerTarget=3Di||n,this.data=3Da||{},this.ser= ialize=3Dfunction(){if(h){var e=3Dp({},this.data);return e.element=3Dnul= l,JSON.stringify({remoteEvent:{data:e,type:this.type,triggerType:this.tr= iggerType,target:{},triggerTarget:{}}})}return""}}function a(e,t){this.t= arget=3De,this.queues=3D{},this.remoteDispatcher=3Dnull,this.remoteFilte= r=3Dnull,this.defaultEventType=3Dt||i}function o(e){var t=3Dthis.queues;= return t[e]||(t[e]=3D[]),t[e]}function r(e,t){this.getQueue(e).push(t)}f= unction s(e,t){e&&e.postMessage&&(this.remoteDispatcher=3De,this.remoteF= ilter=3Dt)}function c(e,t){var n=3Dthis,i=3Dfunction(){var a=3DArray.pro= totype.slice.call(arguments,0);t.apply(this,a),n.removeEventListener(e,i= )};n.addEventListener(e,i)}function d(e,t){var n=3Dthis.getQueue(e),i=3D= "string"=3D=3Dtypeof n?n.indexOf(t):-1;-1!=3D=3Di&&n.splice(i,1)}functio= n l(e,t,n,i){var a=3Dthis;i?a.dispatchEvent(new a.defaultEventType(e,e,t= ,a.target,n)):setTimeout(function(){a.dispatchEvent(new a.defaultEventTy= pe(e,e,t,a.target,n))})}function u(e){var t,n=3De.target,i=3Dthis.getQue= ue(e.type);for(t=3D0;t-1?o.src=3De+"&"+a:o.src=3De+"?"+a:o.src=3De,o)}},func= tion(e,t){"use strict";e.exports=3Dfunction(e,t,n){if(t&&e!=3D=3Dt)for(v= ar i in t)t.hasOwnProperty(i)&&(void 0=3D=3D=3De[i]||n)&&(e[i]=3Dt[i])}}= ,function(e,t){e.exports=3Dfunction(e,t){var n,i=3D291;for(t=3Dt||32,n=3D= 0;e&&n-1&&e%1=3D=3D0&&t>e}var i=3DMath.pow(2,53)= -1;e.exports=3Dn},function(e,t,n){var i=3Dn(7),a=3Dn(26),o=3Dn(27),r=3Dn= (802),s=3Da(s=3DObject.keys)&&s,c=3Ds?function(e){if(e)var t=3De.constru= ctor,n=3De.length;return"function"=3D=3Dtypeof t&&t.prototype=3D=3D=3De|= |"function"!=3Dtypeof e&&n&&i(n)?r(e):o(e)?s(e):[]}:r;e.exports=3Dc},fun= ction(e,t,n){(function(t){var i=3Dn(26),a=3D/\bthis\b/,o=3DObject.protot= ype,r=3D(r=3Dt.window)&&r.document,s=3Do.propertyIsEnumerable,c=3D{};!fu= nction(e){c.funcDecomp=3D!i(t.WinRTError)&&a.test(function(){return this= }),c.funcNames=3D"string"=3D=3Dtypeof Function.name;try{c.dom=3D11=3D=3D= =3Dr.createDocumentFragment().nodeType}catch(n){c.dom=3D!1}try{c.nonEnum= Args=3D!s.call(arguments,1)}catch(n){c.nonEnumArgs=3D!0}}(0,0),e.exports= =3Dc}).call(t,function(){return this}())},function(e,t){function n(e){re= turn e}e.exports=3Dn},function(e,t,n){var i=3Dn(29),a=3Dn(39);e.exports=3D= function o(e,t,n,r,s,c){_ate.ao=3D=3D=3Do?(i(["open",e,t,n,r,s,c]),a()):= _ate.ao.apply(this,arguments)}},function(e,t){e.exports=3Dfunction(){ret= urn window.addthis_cdn||window._atr}},function(e,t,n){var i=3Dn(3).isVal= idCUID,a=3Dn(2),o=3Dn(1);e.exports=3Dfunction(e){var t;if(e=3De||"",a("m= si")&&e instanceof Object&&!e.length){var n=3D"";o(e,function(e,t){n?n+=3D= "&"+e+"=3D"+t:n=3De+"=3D"+t}),e=3Dn}return t=3De.split("#").pop().split(= ",").shift().split("=3D").pop(),i(t)?e.split("#").pop().split(","):[""]}= },function(e,t){e.exports=3Dfunction(e){var t,n,i=3De.split("?").pop().t= oLowerCase().split("&"),a=3D/^(?:q|search|bs|wd|p|kw|keyword|query|qry|q= uerytext|text|searchcriteria|searchstring|searchtext|sp_q)=3D(.*)/i;for(= n=3D0;nd&&(h=3DMath.round(u/2-d/2));var p=3D= o.open(e,i("msi")?"":r||"addthis_share","left=3D"+f+",top=3D"+h+",width=3D= "+c+",height=3D"+d+",personalbar=3Dno,toolbar=3Dno,scrollbars=3Dyes,loca= tion=3Dyes,resizable=3Dyes");return a.push(p),s?p:!1}},function(e,t,n){v= ar i=3Dn(32),a=3Dwindow;e.exports=3Dfunction(e,t,n){var o=3Da.open(e,t,n= );return i.push(o),o}},function(e,t,n){var i=3Dn(8);e.exports=3Dfunction= (e,t,n){var a=3Dnew Image;return a.src=3Di(e,0,t,n),a}},function(e,t){e.= exports=3Dfunction(){return{PINTEREST:"//assets.pinterest.com/js/pinmark= let.js",FANCY:"//fancy.com/bookmarklet/fancy_tagger.js"}}},function(e,t)= {e.exports=3Dfunction(){return{DIRECT:0,SEARCH:1,ON_DOMAIN:2,OFF_DOMAIN:= 4}}},function(e,t,n){function i(e,t,n){return""}function a(){function e(){qt.layers.= length?qt.layers({cfs:!0}):_ate.ipc=3D!1}function t(){var t,n,i,a,o,r;$|= |u||(u=3D!0,T.hasToolConfigs()&&(_ate.pro=3D!0),n=3DT.getCustomMessageCo= nfig(),i=3DT.getLayersConfig(),t=3DT.getFeedsTestCells(),n&&qt.messages(= n),t&&(r=3DT.isPayingCustomer(),o=3Dz(t,r),_ate.feeds.setTestCell(o)),i?= (a=3Dye({cfs:!0},i),qt.layers(a,{cfs:!0})):e())}function i(){$=3D!0,X||e= ()}function a(e,t){E||(E=3Dnew R(r,t))}if(Dt.gov(),!st("addthis_widget.j= s").library){Gt.addthis&&Gt.addthis.timer&&(Gt.addthis.timer.main=3D(new= Date).getTime());var o,r,s,c=3D_ate,d=3D(c.bro.msi,Gt.addthis_config||{= }),l=3DWt.title,u=3D!1,f=3D"undefined"!=3Dtypeof c.rdr?c.rdr:Wt.referer|= |Wt.referrer||"",h=3DZt?Zt.href:null,p=3D(Zt.hostname,h),m=3D0,g=3D(K().= split("-").shift(),_ate.track.eop(Zt,f)),b=3D[],v=3D!!c.cookie.rck("nabc= "),w=3Dg.cfc,_=3Dg.ab,x=3Dg.pos?parseInt(g.pos,10):null,y=3Dg.tot?parseI= nt(g.tot,10):null,k=3Dg.rsiq,A=3Dg.rsi,C=3Dg.rxi,O=3Dg.rsc.split("&").sh= ift().split("%").shift().replace(/[^a-z0-9_]/g,""),S=3Dg.gen,I=3Dg.fuid,= j=3Dg.csi,M=3Dfunction(){_ate.track.pcs.length||_ate.track.apc(Gt.addthi= s_product||"men-300"),s.pc=3D_ate.track.pcs.join(",")},D=3DGt.ljep||!1,B= =3Dc.pub(),L=3D5e3;Zt&&Zt.hash&&Zt.hash.indexOf("sky_ab=3D1")>-1&&(c.sfm= p=3D1),window.wp_product_version&&_ate.lojson.add("wpv",window.wp_produc= t_version),window.wp_blog_version&&_ate.lojson.add("wpbv",window.wp_blog= _version),window.addthis_plugin_info&&_ate.lojson.add("addthis_plugin_in= fo",window.addthis_plugin_info),-1=3D=3D=3D(h||"").indexOf(_atr)&&(c.coo= kie.view.update(!0),c.cookie.visit.update(),_ate.lojson.add("uvs",_ate.c= ookie.rck("__atuvs"))),"tweet"=3D=3D=3DO&&(O=3D"twitter"),g.rsc=3DO,Gt.a= ddthis_product&&(_ate.track.apc(addthis_product),-1=3D=3D=3Daddthis_prod= uct.indexOf("fxe")&&-1=3D=3D=3Daddthis_product.indexOf("bkm")&&(_ate.tra= ck.spc=3Daddthis_product));var U=3D_ate.share.links.canonical;U&&(0!=3D=3D= U.indexOf("http")?(p=3D(h||"").split("//").pop().split("/"),0=3D=3D=3DU.= indexOf("/")?p=3Dp.shift()+U:(p.pop(),p=3Dp.join("/")+"/"+U),p=3DZt.prot= ocol+"//"+p):p=3DU,_ate.usu(0,1)),p=3Dp.split("#{").shift(),c.igv(p,Wt.t= itle||""),p&&(_ate.share.links.canonical=3Dp);var F=3Daddthis_share.view= _url_transforms||addthis_share.track_url_transforms||addthis_share.url_t= ransforms||{};F.defrag=3D1,F&&(p=3D_ate.track.mgu(p,F));try{var H=3D(add= this_share||{}).passthrough||{};if(!(H.pinterest_share||{}).media){var G= =3D_ate.ad.og(),W=3D{},Y=3D"string"=3D=3Dtypeof G?_ate.util.fromKV(G):G;= H=3D{},(Y.image||_ate.share.links.image_src)&&(Gt.addthis_share||(Gt.add= this_share=3D{}),addthis_share=3DGt.addthis_share,addthis_share.passthro= ugh=3DH=3Daddthis_share.passthrough||{},H.pinterest_share=3DW=3DH.pinter= est_share||{},W.media=3DY.image||_ate.share.links.image_src,W.url=3DW.ur= l||Y.url||Gt.location.href,W.description=3DW.description||Y.title||addth= is_share.description||addthis_share.title||"")}}catch(q){N.error("pinter= est passthrough",P(q))}if(A&&(A=3DA.substr(0,8)+I),-1=3D=3D=3Dc.bro.mod)= {var Z=3Ddocument.compatMode;if(Z){var J=3D1;"BackCompat"=3D=3D=3DZ?J=3D= 2:"CSS1Compat"=3D=3D=3DZ&&(J=3D0),c.bro.mode=3DJ,c.bro.msi&&(c.bro.mod=3D= J)}}if(c.dr=3Dc.truncateURL(f,"fr"),c.du=3Dc.truncateURL(p,"fp"),c.dt=3D= l=3DGt.addthis_share.title,c.smd=3D{rsi:A,rxi:C,gen:S,rsc:O},Gt.addthis_= share.smd=3Dc.smd,c.upm&&(Gt.addthis_share.smd.dr=3Dc.dr),c.upm&&(Gt.add= this_share.smd.sta=3Dc.track.sta()),c.cb=3Dc.ad.cla(),c.kw=3D1!=3D=3Dc.c= b?c.ad.kw():"",c.dh=3DZt.hostname,c.ssl=3Dh&&0=3D=3D=3Dh.indexOf("https"= )?1:0,c.ab=3D_||Gt.addthis_ab||"-",Gt.addthis_config=3DGt.addthis_config= ||{},!Gt.addthis_config.ignore_server_config&&B)if(_ate.upm&&Gt.JSON&&"f= unction"=3D=3Dtypeof JSON.parse&&!c.bro.ie6&&!c.bro.ie7){_ate.ipc=3D!0;v= ar Q,X=3D!1,$=3D!1;T.exists()?t():Q=3DsetTimeout(i,L),_ate.ed.addEventLi= stener("addthis.pro.init",function(e){X=3D!0,clearTimeout(Q),T.updateCac= he(e.data),t()})}else{var ee,te=3D"__atpro_"+B,ne=3D_ate.cookie.rck(te),= ie=3Dnew Date,ae=3Dfunction(e){ie.setDate(ie.getDate()+7),e&&e._default?= (_ate.cookie.sck(te,"true",0,1,ie),e.cfs=3D!0,qt.layers(e,{cfs:!0})):(_a= te.cookie.sck(te,"false",0,1,ie),_ate.ipc=3D!1)};"false"!=3D=3Dne&&(_ate= .ipc=3D!0,_ate.ajs(["//q.addthis.com/feeds/1.0/","config.json?pubid=3D",= B,"&callback=3D",_ate.util.scb("fds",B,function(){clearTimeout(ee),ae.ap= ply(this,arguments)})].join(""),1,!0,!0,null,!0),ee=3DsetTimeout(functio= n(){ae([])},L))}if(s=3D{rand:_ate.rand,iit:(new Date).getTime(),tmr:xe((= Gt.addthis||{}).timer||{}),cb:c.cb,cdn:_atc.cdn,md:c.bro.mode,kw:c.kw,ab= :c.ab,dh:c.dh,dr:c.dr,du:c.du,href:Zt.href.split("?")[0].split("#")[0],d= t:l,dbg:N.level,cap:xe({tc:d.data_track_textcopy?1:0,ab:d.data_track_add= ressbar?1:0}),inst:c.inst,jsl:c.track.jsl(),prod:c.track.prod(),lng:K(),= ogt:_ate.ad.gog().join(","),pc:Gt.addthis_product||"men",pub:c.pub(),ssl= :c.ssl,sid:_ate.track.ssid(),srpl:_atc.plmp,srd:_atc.damp,srf:_atc.famp,= srx:_atc.xamp,ver:300,xck:_atc.xck||0,xtr:_atc.xtr||0,og:_ate.ad.og(),cs= i:j},qt.addEventListener("addthis-internal.data.rdy",function(){c.cb||qt= .user.isOptedOut()||c.cookie.isgv()||Mt.setup()}),_ate.lojson.add("chr",= _ate.ad.gch()),_ate.lojson.add("vcl",c.cookie.view.cla()),s.toLoJson=3D_= ate.lojson.get(),_atc.noup&&(s.noup=3D1),c.dcp=3D=3DNumber.MAX_VALUE&&(s= .dnp=3D1),c.pixu&&(s.pixu=3Dc.pixu),c.trl.length&&(s.trl=3Dc.trl.join(",= ")),_atc.rev&&(s.rev=3D_atc.rev),s.ct=3Dc.ct=3Dd.data_track_clickback||d= .data_track_linkback||_ate.track.ctp(s.pc,d)?1:0,c.prv&&(s.prv=3Dxe(c.pr= v)),O&&(s.sr=3DO),_ate.track.ssc(O),D&&(s.ljep=3DD),c.vamp>=3D0&&!c.sub&= &(w?(b.push(c.track.fcv("plv",Math.round(1/_atc.vamp))),b.push(c.track.f= cv("typ","lnk")),isNaN(x)||b.push(c.track.fcv("ttpos",x)),isNaN(y)||b.pu= sh(c.track.fcv("ttnl",y)),j&&b.push(c.track.fcv("csi",j)),b.push(c.track= .fcv("pco","string"=3D=3Dtypeof w?w:"cfd-1.0")),b.push(c.track.fcv("pur"= ,c.track.mgu(p,{defrag:1}))),c.dr&&(s.pre=3Dc.track.mgu(c.dr,{defrag:1})= ),s.ce=3Db.join(",")):A&&I!=3Dc.ad.gub()?(b.push(c.track.fcv("plv",Math.= round(1/_atc.vamp))),b.push(c.track.fcv("rsi",A)),b.push(c.track.fcv("ge= n",S)),b.push(c.track.fcv("abc",1)),b.push(c.track.fcv("fcu",c.ad.gub())= ),b.push(c.track.fcv("rcf",Zt.hash)),s.ce=3Db.join(","),m=3D"addressbar"= ,g.rsc=3DO=3D"addressbar"):(C||k||O)&&(b.push(c.track.fcv("plv",Math.rou= nd(1/_atc.vamp))),O&&b.push(c.track.fcv("rsc",O)),C?b.push(c.track.fcv("= rxi",C)):k&&b.push(c.track.fcv("rsi",k)),(k||C)&&b.push(c.track.fcv("gen= ",S)),s.ce=3Db.join(","),m=3DO||"unknown")),c.track.ts.reset(g),c.feeds.= _ad()&&c.track.hist.log(window.location.href.split("#")[0]),m&&(c.bamp>=3D= 0&&(s.clk=3D1,c.dcp!=3DNumber.MAX_VALUE&&(c.dcp=3Ds.gen=3Dc.ad.type.CLIC= K)),_ate.ed.fire("addthis.user.clickback",Gt.addthis||{},{service:m,hash= :_ate.hash})),Gt.at_noxld||(s.xld=3D1),c.upm&&(s.xd=3D1),!v&&Gt.history&= &"function"=3D=3Dtypeof history.replaceState&&(!_ate.bro.chr||_ate.bro.c= hb)&&(d.data_track_addressbar||d.data_track_addressbar_paths)&&(h||"").s= plit("#").shift()!=3Df&&(-1=3D=3Dh.indexOf("#")||A||g.hash&&C||w)){var o= e,re=3DZt.pathname+document.location.search||"",se=3D"/"!=3Dre;if(d.data= _track_addressbar_paths){se=3D0;for(var ce=3D0;ce0&&c.j= lo(),tn.ui_use_css!=3D=3D!1&&(_ate.bro.ie6||_ate.bro.ie7)&&n.e(12,functi= on(){n(159)})}}function o(e){return e.indexOf("&")>-1&&(e=3De.replace(/&= ([aeiou]).+;/g,"$1")),e}function r(e,t){if(t&&e!=3D=3Dt)for(var n in t)e= [n]=3D=3D=3Dmn&&(e[n]=3Dt[n])}function s(){if(_ate.bro.msi&&!Wt.getEleme= ntById("at300bhoveriefilter")){var e=3DWt.getElementsByTagName("head")[0= ],t=3DWt.ce("style"),n=3DWt.createTextNode(".at300b:hover,.at300bs:hover= {filter:alpha(opacity=3D80);}");t.id=3D"at300bhoveriefilter",t.type=3D"= text/css",t.styleSheet?t.styleSheet.cssText=3Dn.nodeValue:t.appendChild(= n),e.appendChild(t)}}function c(e){var t=3D_ate.util.parent(e,".addthis_= toolbox");return(t.className||"").search(/32x32/i)>-1||(e.className||"")= .search(/32x32/i)>-1}function d(e){var t=3D_ate.util.parent(e,".addthis_= toolbox");vn=3D(t.className||"").search(/20x20/i)>-1||(e.className||"").= search(/20x20/i)>-1}function l(e){var t=3D(e.parentNode||{}).className||= "",n=3De.conf&&e.conf.product&&-1=3D=3Dt.indexOf("toolbox")?e.conf.produ= ct:"tbx"+(e.className.indexOf("32x32")>-1||t.indexOf("32x32")>-1?"32":""= )+"-300";return n.indexOf(32)>-1&&(bn=3D!0),_ate.track.apc(n),n}function= u(e,t){var n=3D{};for(var i in e)t[i]?n[i]=3Dt[i]:n[i]=3De[i];return n}= function f(e,t,n,i){var a=3Ddocument.ce("img");return a.width=3De,a.heig= ht=3Dt,a.border=3D0,a.alt=3Dn,a.src=3Di,a}function h(e,t){var n,i=3D[],a= =3D{},o=3DMath.min((e.attributes||[]).length||0,160),r=3Dt.replace(/:/g,= "-");if(isNaN(o))return a;for(var s=3D0;o>s;s++)if(n=3De.attributes[s]){= if(i=3Dn.name.split(t+":"),!i||1=3D=3Di.length){if(-1=3D=3Dn.name.indexO= f("data-"))continue;if(i=3Dn.name.split("data-"+r+"-"),!i||1=3D=3Di.leng= th)continue}2=3D=3Di.length&&(a[i.pop()]=3Dn.value)}return a}function p(= e,t,n,i){var t=3Dt||{},a=3D{},o=3Dh(e,"addthis");if("[object Object]"=3D= =3D=3DObject.prototype.toString.call(t)&&!t.nodeType)for(var r in t)a[r]= =3Dt[r];if(i)for(var r in e[n])a[r]=3De[n][r];for(var r in o)if(o.hasOwn= Property(r)){if(t[r]&&!i)a[r]=3Dt[r];else{var s=3Do[r];s?a[r]=3Ds:t[r]&&= (a[r]=3Dt[r]),"true"=3D=3D=3Da[r]?a[r]=3D!0:"false"=3D=3D=3Da[r]&&(a[r]=3D= !1)}if(a[r]!=3D=3Dmn&&Sn[r]&&"string"=3D=3Dtypeof a[r])try{a[r]=3DJSON.p= arse(a[r].replace(/'/g,'"'))}catch(c){a[r]=3D_ate.evl("("+a[r]+");",!0)}= }return a}function m(e){var t=3D(e||{}).services_custom;if(t){t instance= of Array||(t=3D[t]);for(var n=3D0;n-1&&0=3D=3D=3D(C.conf.produc= t||"").indexOf("men")&&(C.conf.product=3D"tbx"+(E.className.indexOf("32x= 32")>-1?"32":E.className.indexOf("20x20")>-1?"20":"")+"-300",_ate.track.= apc(C.conf.product)),y&&"more"!=3D=3Dy&&(C.conf.product=3Dl(C)),C.conf&&= (C.conf.ui_click||C.conf.ui_window_panes)||_ate.bro.ipa?w&&(y?C.onclick=3D= function(){return w(this,this.conf,this.share)}:C.conf.ui_window_panes?C= .onclick=3Dfunction(){return addthis_sendto("more",this.conf,this.share)= }:C.onclick=3Dfunction(){return _ate.bro.iph||_ate.bro.wph||_ate.bro.dro= ?addthis_sendto("more",this.conf,this.share):addthis_open(this,"",null,n= ull,this.conf,this.share)}):(_ate.maf=3D_ate.maf||{},_ate.maf.home=3Dthi= s,_ate.maf.key=3Dnull,_ate.maf.shift=3Dnull,p&&(C.onfocus=3DC.onmouseove= r=3Dfunction(){for(_ate.maf.sib=3Dthis.nextSibling;_ate.maf.sib&&3=3D=3D= _ate.maf.sib.nodeType&&_ate.maf.sib.nextSibling;)_ate.maf.sib=3D_ate.maf= .sib.nextSibling;if(!_ate.maf.sib||3=3D=3D_ate.maf.sib.nodeType){var e=3D= this.parentNode;if(e)for(;e.nextSibling&&3=3D=3De.nodeType;)e=3De.nextSi= bling;else for(e=3Ddocument.body.firstChild||document.body;3=3D=3De.node= Type&&e.nextSibling;)e=3De.nextSibling;_ate.maf.sib=3De}return _ate.maf.= sib.onfocus=3Dfunction(){_ate.maf.sib.tabIndex=3D""},p(this,this.conf,th= is.share)}),v&&(C.onmouseout=3Dfunction(){return v(this)}),w&&(C.onclick= =3Dfunction(){return w(C,this.conf||C.conf,this.share||C.share)}),(v||w)= &&(C.onkeypress=3DC.onkeydown=3Dfunction(e){if(!e)var e=3Dwindow.event;e= .shiftKey&&(_ate.maf.shift=3D!0),e.keyCode?_ate.maf.key=3De.keyCode:e.wh= ich&&(_ate.maf.key=3De.which),13=3D=3D_ate.maf.key?_ate.maf.pre=3Dthis:_= ate.maf.pre=3Dnull},C.onblur=3Dfunction(e){if(9=3D=3D_ate.maf.key&&_ate.= maf.firstCompact&&!_ate.maf.shift&&this.className.indexOf("compact")>-1)= _ate.maf.key=3Dnull,_ate.maf.acm=3D!0,document.getElementById(_ate.maf.f= irstCompact).focus();else if(_ate.maf.key=3Dnull,_ate.maf.shift=3Dnull,v= )return v(this)})),"a"=3D=3DC.tagName.toLowerCase()){var I=3DC.share.url= ||addthis_share.url;if(_ate.usu(I),y){var j=3Dg(y,C.conf),T=3DC.firstChi= ld;if(j&&j.code&&j.icon&&T&&(T.className.indexOf("at300bs")>-1||T.classN= ame.indexOf("at4-icon")>-1)){ var z=3D"16";c(C,1)?(T.className=3DT.className.split("at15nc").join(""),= z=3D"32"):d(C,1)&&(T.className=3DT.className.split("at15nc").join(""),z=3D= "20"),T.style.backgroundImage=3D"url("+j.icon+")",T.style.backgroundRepe= at=3D"no-repeat",T.style.backgroundPosition=3D"top left",T.style.backgro= undColor=3D"transparent",T.style.cssText||(T.style.cssText=3D""),T.style= .cssText=3D"line-height:"+z+"px;width:"+z+"px;height:"+z+"px;background-= image:"+T.style.backgroundImage+";background-repeat:"+T.style.background= Repeat+";background-position:"+T.style.backgroundPosition+";background-c= olor:"+T.style.backgroundColor+";"}if(jn[y])("mailto"=3D=3Dy||"email"=3D= =3Dy&&(C.conf.ui_use_mailto||_ate.bro.iph||_ate.bro.wph||_ate.bro.ipa||_= ate.bro.dro))&&(C.onclick=3Dfunction(){C.share.xid=3D_ate.util.cuid(),(n= ew Image).src=3DTt("mailto",0,C.share,C.config),_ate.gat(y,I,C.conf,C.sh= are)},C.href=3Dk(C.share,C.config||C.conf),qt.ems.push(C));else{if(i.fol= low){if("twitter"!=3D=3Dy?C.href=3DC.share.followUrl:C.href=3D"//twitter= .com/"+C.share.userid,C.conf=3DC.conf||{},C.conf.follow=3D!0,C.onclick=3D= function(e){return _ate.share.track(y,1,C.share,C.conf),"twitter"=3D=3D=3D= y?(e&&e.preventDefault(),_ate.share.ocw(C.share.followUrl,520,520)):void= 0},C.children&&1=3D=3DC.children.length&&C.parentNode&&C.parentNode.cla= ssName.indexOf("toolbox")>-1){var M=3Ddocument.ce("span");M.className=3D= "addthis_follow_label",M.innerHTML=3DFt(y).replace("_follow",""),C.appen= dChild(M)}}else _ate.share.externEvents(y,C,i)||C.noh||(C.onclick=3Dfunc= tion(e){return F(y,C.share),!1});C.conf.follow||qt.addEvents(C,y,I),C.no= h||C.target||(C.target=3D"_blank"),qt.links.push(C)}if(!C.title||C.at_ti= tled){var N=3DFt(y,!j);On[y]&&Cn.push({link:C,title:y}),C.title=3Do(i.fo= llow?En[y]?En[y]:"Follow on "+N:On[y]?On[y]:N),C.at_titled=3D1}C.href||(= C.href=3D"#")}else C.conf.product&&-1=3D=3DC.parentNode.className.indexO= f("toolbox")&&l(C)}var R;switch(_){case"img":if(!C.hasChildNodes()){var = D=3D(C.conf.ui_language||K()).split("-").shift(),B=3D_ate.ivl(D);B?1!=3D= =3DB&&(D=3DB):D=3D"en",R=3Df(_ate.iwb(D)?150:125,16,"Share",_atr+"static= /btn/v2/lg-share-"+D.substr(0,2)+".gif")}}R&&C.appendChild(R)}}}function= w(e,t,n,i,a,o,r){if(!e._iss){var s,c,d,l,u,f,h=3D(e.className||"",{pint= erest:"pinterest_share"});un?s=3De.parentNode._atsharedconf||{}:(un=3D1,= e.parentNode._atsharedconf=3Ds=3D_ate.share.services.init(e.conf)),e.par= entNode.services||(e.parentNode.services=3D{}),c=3Ds.services_exclude||"= ",_ate.bro.ie9&&(c+=3D(c.length?",":"")+"link"),l=3D_ate.share.services.= loc,u=3De.parentNode.services,f=3D_ate.util.unqconcat((window.addthis_op= tions||"").replace(",more","").split(","),l.split(","));do d=3Df[t++],h[= d]&&(d=3Dh[d]);while(t-1||u[d]));u[d]&&_ate.uti= l.each(Bt.list,function(e,t){return u[e]||-1!=3Dc.indexOf(e)?void 0:(d=3D= e,!1)}),e._ips=3D1,-1=3D=3De.className.indexOf(d)&&(e.className=3D"addth= is_button_"+d+" "+e.className,e._iss=3D1),e.parentNode.services[d]=3D1,n= &&_([e],i,a,!0,r)}}function _(e,t,i,a,o){for(var s,u,f=3Dn(139),h=3Dn(40= 6),p=3Dh.createCssServiceIcon,m=3Dfunction(e,t,n){var i;return i=3Dc(e)?= 32:d(e)?20:16,n&&n.code?(u=3Dp(n.code,n.icon,i),s=3Dh(n.code,u)):s=3Df({= code:t,size:i+"px"}),s},_=3D0;_-1){if(x._iss||x._iwps)continue= ;E=3DC.match(/addthis_button_preferred_([0-9]+)(?:\s|$)/);var z=3D(E&&E.= length?Math.min(16,Math.max(1,parseInt(E[1]))):1)-1;if((!x.conf||o)&&(x.= conf=3Dk.conf||x.conf||{}),(!x.share||o)&&(x.share=3Dk.share||x.share||{= }),x.conf.product=3D"tbx-300",l(x),!fn){var M=3D_ate.util.bind(w,x,x,z,!= 0,t,i,a,o);_ate.ed.addEventListener("addthis-internal.data.ssh",M),setTi= meout(M,2e3),x._iwps=3D1;continue}w(x,z,!0)}else if(I.indexOf("follow")>= -1)"google_follow"=3D=3DI?x.title=3D"Follow on Google":I=3DI.split("_fol= low").shift(),S.follow=3D!0,_ate.track.apc("flw-300"),k.share.followUrl=3D= _ate.share.gfu(I,k.share.userid,k.share.usertype,k.share)||k.share.url;e= lse if(!(Lt(I)||Ut.isTop(I)||T&&T.code))continue;D.record(I);var N=3Dx.c= hildNodes;0=3D=3D=3DN.length?(s=3Dm(x,I,T),x.appendChild(s)):1=3D=3D=3DN= .length?x.firstChild&&3=3D=3D=3Dx.firstChild.nodeType&&(s=3Dm(x,I,T),x.i= nsertBefore(s,x.firstChild)):x.firstChild&&3=3D=3D=3Dx.firstChild.nodeTy= pe&&"\n"=3D=3D=3Dx.firstChild.textContent||(A=3D1),"compact"=3D=3D=3DI||= "expanded"=3D=3D=3DI?(A||-1!=3DC.indexOf("at300")||(x.className+=3D" at3= 00m"),k.conf.product&&-1=3D=3Dk.conf.product.indexOf("men-")&&(k.conf.pr= oduct+=3D",men-300"),x.href||(x.href=3D"#"),x.parentNode&&x.parentNode.s= ervices&&(k.conf.parentServices=3Dx.parentNode.services),"expanded"=3D=3D= =3DI&&(S.nohover=3D!0,S.singleservice=3D"more")):((x.parentNode.classNam= e||"").indexOf("toolbox")>-1&&(x.parentNode.services||(x.parentNode.serv= ices=3D{}),x.parentNode.services[I]=3D1),A||-1!=3DC.indexOf("at300")||(x= .className+=3D" at300b"),S.singleservice=3DI),x._ips&&(S.issh=3D!0),v([x= ],k,S,o),x.ost=3D1,l(x)}else if(j){if(x.ost)continue;x.ost=3D1;var R=3Dy= .ce("a");R.className=3D"addthis_native_counter addthis_counter addthis_b= ubble_style",x.className+=3D" addthis_native_counter_parent",s=3Dm(x,j,T= ),x.appendChild(s),x.appendChild(R),k.conf.service=3Dj.indexOf("pinteres= t")>-1?"pinterest_share":j,v([x],k,S,o),qt.counter(R,k.conf,k.share)}}}}= function x(e,t,n,i){if("facebook_unlike"!=3De&&"google_unplusone"!=3De){= n=3Dn||{};var a=3Dn.data_ga_tracker,o=3Dn.data_ga_property;if(o&&("objec= t"=3D=3Dtypeof window._gat&&_gat._createTracker?a=3D_gat._createTracker(= o,"addThisTracker"):"object"=3D=3Dtypeof window._gaq&&_gaq._getAsyncTrac= ker?a=3D_gaq._getAsyncTracker(o):window._gaq instanceof Array&&_gaq.push= ([function(){_ate.gat(e,t,n,i)}])),a&&"string"=3D=3Dtypeof a&&(a=3Dwindo= w[a]),!a&&window.GoogleAnalyticsObject){var r=3Dwindow[window.GoogleAnal= yticsObject];r.getAll&&(a=3Dr.getAll())}if(a&&"object"=3D=3Dtypeof a){if= ("more"=3D=3De||"settings"=3D=3De)return;var s=3Dt||(i||{}).url||locatio= n.href,c=3De,d=3D"share";c.indexOf("_")>-1&&(c=3Dc.split("_"),d=3Dc.pop(= ),d.length<=3D2&&(d=3D"share"),c=3Dc.shift()),0=3D=3Ds.toLowerCase().rep= lace("https","http").indexOf("http%3a%2f%2f")&&(s=3D_duc(s));try{n.data_= ga_social&&a._trackSocial&&"google_plusone"!=3De?a._trackSocial(c,d,i.ur= l):a._trackEvent?a._trackEvent("addthis",e,s):n.data_ga_social&&"google_= plusone"!=3De?r("send","social",c,d,s):r("send","event","addthis",e,s)}c= atch(l){try{a._initData&&a._initData(),n.data_ga_social&&a._trackSocial&= &"google_plusone"!=3De?a._trackSocial(c,d,i.url):a._trackEvent?a._trackE= vent("addthis",e,s):n.data_ga_social&&"google_plusone"!=3De?r("send","so= cial",c,d,s):r("send","event","addthis",e,s)}catch(l){}}}}}function y(){= var e=3Dqt,t=3D".addthis_";e.osrp||(e.osrp=3D1,ln=3DGt.addthis_share,dn=3D= Gt.addthis_config,xn=3DWt.body,kn=3Dut.getElementsByClassPrefix(xn,"A","= addthis_button_",!0,!0),An=3Dut.getElementsByClassPrefix(xn,"A","addthis= _counter_",!0,!0),s(),qt.toolbox(t+"toolbox",null,null,!0,An.length),qt.= button(t+"button"),qt.counter(t+"counter"),qt.count(t+"count"),"function= "=3D=3Dtypeof qt.overlay&&qt.overlay(t+"shareable"),"function"=3D=3Dtype= of qt.dock&&qt.dock(t+"bar"),_(kn,null,null,!1),_(An,null,null,!1),((dn|= |{}).login||{}).services&&qt.login.initialize())}function A(){if(!pn){fo= r(var e,t,n=3Dwindow.addthis,i=3D0,a=3Dn.plo;i-1||S.href.indexOf("_addthis_upgrade_test")>-1)&&(_atc.ver=3D300);for= (var Kt in addthis_conf)_atc[Kt]=3Daddthis_conf[Kt];_atc.ost=3D1}_ate.lo= g=3DYe,_ate.ckv=3DCe(document.cookie,";"),_ate.cookie=3D{read:Rt.read,wr= ite:Rt.write,kill:Rt.kill,rck:Rt.read,sck:Dt.sck,kck:Dt.kck,cww:Dt.cww,g= ov:Dt.gov,isgv:Dt.isgv,ssc:qe,KV:Ot,tag:Ze,view:Je,visit:Qe},_ate.mun=3D= Xe,_ate.getVisibility=3D$e,_ate.math=3D{},_ate.math.murmur32=3Det,qt.par= ams=3Dft(rt(Zt.search),qt,_ate),ye(_ate.ad,{type:n(833)(),ref:{r_ondomai= n:yt.ON_DOMAIN,r_offdomain:yt.OFF_DOMAIN,r_direct:yt.DIRECT,r_search:yt.= SEARCH},gub:_t,clr:kt,iss:xt,fst:At}),ye(_ate.data,{storage:{all:ht.getA= ll,clear:ht.removeAll,add:ht.add,get:ht.get,remove:ht.remove,exists:ht.e= xists,preRemove:ht.removeByPrefix},bloom:{filter:pt,library:mt(ht,_ate.i= ch)}}),ye(_ate,{track:{ran:B,fcv:Qt.formatCustomEvent,mgu:Qt.mungeURL,ss= id:Qt.ssid,sta:Qt.sta,uns:Qt.uns,lpx:Qt.loadPixel,sxm:Qt.scheduleTransmi= t,dropPixel:bt,cur:It.clickifyURL,eop:It.extractOurParameters,dcu:It.dec= lickifyURL,gcc:It.generateClickbackCode,cpf:It.clickPrefix,ctp:It.clickT= rackableProduct,ich:It.isClickHash,ict:It.isClickTrackingEnabled,hist:{l= og:wt.logURL,seenBefore:wt.seenBefore},ts:{get:Ct.getTrafficSource,gst:C= t.getSearchTerms,set:Ct.setState,reset:Ct.resetState}},lng:K,jlng:X,iwb:= $,ivl:ee,gfl:te,ggl:ne,gvl:ie,alg:oe.get,_t:re,trim:se,trl:le,truncateUR= L:ue,opp:de,ajs:ce,jlo:Q,ao:q,ac:Z,as:J}),_ate.cbs=3D{};var Xt=3DKe("_at= e.cbs"),$t=3DXt.storeCallback,en=3DXt.getCallbackCallTime;ye(_ate.util,{= scb:$t,storeCallback:$t,getCallbackCallTime:en,ghp:at,gqp:rt,cuid:tt.mak= eCUID,ivc:tt.isValidCUID,iooc:tt.isOptOutCUID,ioc:tt.isCUIDOlderThan,ato= b:nt.atob,btoa:nt.btoa,geo:{dec:it.decodeGeo,parse:it.parseGeo,isin:it.i= sLocatedIn},host:Re,gsp:st,gst:ct,gtt:function(){var e=3DWt.getElementsB= yTagName("script");return e[e.length-1]},pae:dt,pas:lt,baseToDecimal:St,= hbtoa:nt.hbtoa,atohb:nt.atohb,gebcn:ut.getElementsByClassPrefix,select:u= t.select,parent:ut.getParent,qsa:ut.querySelectorAll,gettxt:ut.getText})= ,ye(_ate,{resource:{Resource:G,Bundle:W}}),_ate.sid=3D_ate.track.ssid(),= window.parent=3D=3D=3Dwindow&&(Ie(window,"message",jt.messageHandler),Ie= (window,"scroll",jt.handler),Ie(window,"resize",jt.resizeHandler)),funct= ion(){function e(e){J||(v("plvp","3",e,{},1),J=3D!0)}function t(e){e=3De= .split("-").shift();for(var t=3D0;t0)a&&Y.pus= h(a),t(n);else{var r,s=3Dfunction(){_ate.getVisibility(e)>0?(a&&Y.push(a= ),t(n),_ate.util.unlisten(window,"scroll",s)):(r&&(clearTimeout(r),r=3DO= ),r=3DsetTimeout(s,3e3))};_ate.util.listen(window,"scroll",s)}}function = a(){var e=3DS.getElementById("_atssh");return e||(e=3DS.ce("div"),e.styl= e.visibility=3D"hidden",e.id=3D"_atssh",I.opp(e),S.body.insertBefore(e,S= .body.firstChild)),e}function o(e){E&&E.post(e)}function r(e,t){var n,i=3D= Math.floor(1e3*Math.random()),o=3Da();return t||V||!_atc._atf||I.bro.ie6= ||I.bro.ie7?(I.bro.msi?(I.bro.ie6&&!e&&0=3D=3D=3DS.location.protocol.ind= exOf("https")&&(e=3D"javascript:''"),o.innerHTML=3D'",n=3De.firstChild):n=3Db.ce("iframe")= ,n.style.overflow=3D"hidden",n.style.scrolling=3D"no",n.style.scrollbars= =3D"no",n.style.border=3D"none",n.style.borderWidth=3D"0px",n.style.widt= h=3Dd+"px",n.style.height=3Dl+"px",n.src=3D"//www.facebook.com/plugins/l= ike.php?href=3D"+j(_ate.track.mgu(t.share.url,{defrag:1}))+"&layout=3Dbu= tton_count&show_faces=3Dfalse&width=3D100&action=3Dlike&font=3Darial&"+p= assthrough,_ate.bro.msi||e.appendChild(n);e.noh=3De.ost=3D1}}var g,b=3Dd= ocument,v=3D{},w=3D{},_=3D[],x=3D0,y=3D0,A=3D0,C=3D!0,E=3D-1!=3Db.domain= .search(/\.addthis\.com$/i)?1:0;_ate.bro.mob?"http://m.facebook.com/shar= er.php":"http://www.facebook.com/sharer/sharer.php";e.share=3De.share||{= },e.share.register({facebook_like:m,facebook_send:u,facebook_share:f}),e= .share.registerSubscriber(d),e.share.registerListeners({facebook:{_after= :function(e){e.ins=3D1,e.noh=3D1},onclick:function(e){U(e);var t,i=3De.e= l,a=3Dn(54);return t=3DSe(i.conf),a(t,i.share),F("facebook",t)}}}),e.sha= re.fb=3D{like:m,send:u,has:r,ns:o,ready:a,compat:s,sub:d,load:l}}(_ate,_= ate.api,_ate),function(e,t,n){function i(){return window.getglue&&window= .getglue.on}function a(e,t){var n=3D((e||{}).passthrough||{}).objectId||= "none";_ate.share.ocw("http://w.getglue.com/convo/checkins?type=3Dconver= sation&objectId=3D"+j(n)+"&source=3D"+j(e.url)),setTimeout(function(){(n= ew Image).src=3DTt("getglue",0,e,t)},100)}function o(e,t,n){var a=3D((s|= |{}).passthrough||{}).objectId;if(!a)return void(e.innerHTML=3D'');if(!i()){var o=3Ddocument.createElement(= "script");o.src=3D"//widgets.getglue.com/checkin.js";var r=3Ddocument.ge= tElementsByTagName("script")[0]}var s=3D(h(e,"getglue"),t.share);r.paren= tNode.insertBefore(o,r),e.innerHTML=3D'Checkin on Ge= t Glue'}function r(e){if(!s){var t=3De?e.share:addthis_share,n=3De?e= .conf:addthis_config;i()?(getglue.on("checkin",function(e){var i=3D{};fo= r(var a in t)i[a]=3Dt[a];_ate.share.track("getglue",0,i,n)}),s=3D!0):5>c= &&setTimeout(function(){r(e)},500*c++)}}var s=3D(document,!1),c=3D0;e.sh= are=3De.share||{},e.share.registerSubscriber(r),e.share.register({getglu= e_checkin:o}),e.share.getglue=3D{sub:r,ps:a,gg:o}}(_ate,_ate.api,_ate),f= unction(e,t,n){function i(){return window.gapi&&window.gapi.plusone}func= tion a(){if(i())return void(gapi&&gapi.plusone&&"[object Function]"=3D=3D= =3DObject.prototype.toString.call(gapi.plusone.go)&&gapi.plusone.go());i= f(!d){d=3D1;var e=3Dnew _ate.resource.Resource("plusoneapi","//apis.goog= le.com/js/plusone.js",i);e.addEventListener("load",function(){a()}),e.lo= ad()}}function o(e){var t=3De?e.share:addthis_share,n=3De?e.conf:addthis= _config;window._at_plusonecallback=3Dwindow._at_plusonecallback||functio= n(e){var i=3D{};for(var a in t)i[a]=3Dt[a];i.url=3De.href,_ate.share.tra= ck("google_"+("off"=3D=3De.state?"un":"")+"plusone",0,i,n)},window._at_p= luscallback=3Dwindow._at_pluscallback||function(e){var i=3D{};for(var a = in t)i[a]=3Dt[a];i.url=3De.href,_ate.share.track("googleplus_counter",0,= i,n)}}function r(e,t,n){if(!e.ost){var i=3D"googleplus_counter"=3D=3D=3D= n?"plus":"plusone",o=3Dh(e,"g:"+i),r=3Ddocument.ce("g:"+i);_ate.gpl=3D_a= te.gpl||{},_ate.gpl.lang=3D_ate.gpl.lang||null,o.lang=3D_ate.gpl.lang=3D= _ate.gpl.lang||("undefined"=3D=3Dtypeof o.lang?null:o.lang),window.___gc= fg=3Dwindow.___gcfg||{},window.___gcfg.lang=3D_ate.gpl.lang||o.lang||_at= e.ggl((t.conf||{}).ui_language)||"en-US",o.href=3Dt.share.url=3Do.href||= _ate.track.mgu(t.share.url,{defrag:1}),"plusone"=3D=3Di?(o.size=3Do.size= ||(c(e,!0)?"standard":"small"),o.callback=3Do.callback||"_at_"+i+"callba= ck"):(o.href=3D_ate.share.acb("google_plusone_share",t.share,addthis_con= fig),o.action=3D"share"),_ate.share.goog.sub(t),_ate.util.each(o,functio= n(e,t){r.setAttribute(e,t)}),e.appendChild(r),e.noh=3De.ost=3D1,a()}}fun= ction s(e,t){if(!e.ost){e.title=3D"Follow on Google+";var n=3Dh(e,"g:plu= sone");if(n.size=3D(n.size||"").toLowerCase(),document.head){var i=3Ddoc= ument.createElement("link");i.setAttribute("href",n.href),i.setAttribute= ("rel","publisher"),document.head.appendChild(i)}if(n.url=3Dn.href=3Dn.h= ref||"","badge"=3D=3Dn.size||"smallbadge"=3D=3Dn.size){var o=3Ddocument.= ce("g:plus");_ate.gpl=3D_ate.gpl||{},_ate.gpl.lang=3D_ate.gpl.lang||null= ,n.lang=3D_ate.gpl.lang=3D_ate.gpl.lang||("undefined"=3D=3Dtypeof n.lang= ?null:n.lang),window.___gcfg=3Dwindow.___gcfg||{},window.___gcfg.lang=3D= _ate.gpl.lang||n.lang||_ate.ggl((t.conf||{}).ui_language||window.addthis= _language)||"en-US",_ate.util.each(n,function(e,t){o.setAttribute(e,t)})= ,e.appendChild(o),e.noh=3De.ost=3D1,a()}else{var r=3D"32";"small"=3D=3Dn= .size?r=3D"16":"large"=3D=3Dn.size&&(r=3D"64");var s=3Dtxt=3Dtxt2=3DieQ=3D= "";n.name&&("BackCompat"=3D=3Ddocument.compatMode&&_ate.bro.msi&&(ieQ=3D= 'onclick=3D"window.open('+n.href+'?prsrc=3D3)"'),s=3D"cursor:default;dis= play:inline-block;text-decoration:none;color:#333;font:13px/16px arial,s= ans-serif;"+("large"=3D=3Dn.size?"text-align:center;white-space:nowrap;"= :""),"large"=3D=3Dn.size?txt2=3D'
= '+n.name+"
on Google+ ":txt=3D''+n.name+'on
'),e.setAttr= ibute("target","_blank"),e.style.textDecoration=3D"none",e.style.cursor=3D= "default",e.innerHTML=3D''+txt+"3D"'+e.title+='+txt2+"",e.noh=3De.ost=3D1,e.onclick=3Dfun= ction(e){if(!e)var e=3Dwindow.event;var t=3De.originalTarget||e.relatedT= arget||e.toElement||e.srcElement,i=3D"";if(t){for(;"A"!=3Dt.nodeName;)t=3D= t.parentNode;return i=3D((t.attributes||{})["g:plusone:href"]||{}).value= ||window.location.href,Gt.open(i+"?prsrc=3D3"),_ate.share.track("google_= plusone_badge",1,n,config),!1}}}e.onmouseover=3Dfunction(){this.classNam= e=3Dthis.className.indexOf("at300bo")>-1?this.className:this.className.r= eplace(/at300b/i,"at300bo")},e.noh=3De.ost=3D1}}var d=3D(document,0);e.s= hare=3De.share||{},e.share.register({google_plusone:r,googleplus_counter= :r,google_plusone_badge:s}),e.share.registerSubscriber(o),e.share.regist= erListeners({google_plusone:{onclick:function(e){return!1}}}),e.share.go= og=3D{plusone:r,badge:s,has:i,sub:o}}(_ate,_ate.api,_ate),function(e,t,n= ){function i(e,t){var n=3Dfunction(e){if("undefined"=3D=3Dtypeof window.= Intent&&"undefined"=3D=3Dtypeof window.WebKitIntent||!window.navigator||= "undefined"=3D=3Dtypeof window.navigator.startActivity&&"undefined"=3D=3D= typeof window.navigator.webkitStartActivity)return!1;if(!window.Intent||= "undefined"!=3Dtypeof window.Intent["native"]&&!window.Intent["native"])= return!0;if(_ate.bro.chr){var t=3Dnavigator.userAgent,n=3D/Chrome\/(.*)\= ./.exec(t);if(n.length>=3D1){var i=3DparseInt(n[1].substring(0,2));if(19= >i){var a=3Dfunction(){return"undefined"=3D=3Dtypeof addthis_config?!1:"= undefined"=3D=3Dtypeof addthis_config.webintents?!1:addthis_config.webin= tents?!0:!1};return a()}}}return!0};n()&&(options.noevents=3D!0,e.onclic= k=3Dfunction(e){var n=3Dwindow.Intent||window.WebKitIntent,i=3Dnew n("ht= tp://webintents.org/share","text/uri-list",t.share.url);return"undefined= "!=3Dtypeof navigator.startActivity?navigator.startActivity(i):"undefine= d"!=3Dtypeof navigator.webkitStartActivity&&navigator.webkitStartActivit= y(i),_ate.share.track("intent_share_url",0,t.share,t.conf),!1})}document= ;e.share=3De.share||{},e.share.register({intent_share_url:i}),e.share.re= gisterListeners({intent_share_url:{}})}(_ate,_ate.api,_ate),function(e,t= ,n){function i(e,t){return ye({product:"tbx",media:t.media,description:t= .description,title:t.title},e)}function a(e,t,n){if(!e.ost){var a,r=3Dh(= e,"pi:pinit"),s=3D_ate.util.clone(t.share);if(a=3Daddthis_share&&addthis= _share.passthrough&&addthis_share.passthrough.pinterest_share?addthis_sh= are.passthrough.pinterest_share:addthis_share&&addthis_share.pinterest_s= hare?addthis_share.pinterest_share:addthis_share&&addthis_share.passthro= ugh?addthis_share.passthrough:addthis_share?addthis_share:{},r.media)r.u= rl=3Ds.url=3Dr.url||a.url||_ate.track.mgu(s.url,{defrag:1}),r.url=3Dj(_a= te.track.mgu(s.url)),"horizontal"=3D=3Dr.layout?(r.layout=3D"&layout=3Dh= orizontal",r.width=3D"100px",r.height=3D"25px"):"vertical"=3D=3Dr.layout= ?(r.layout=3D"&layout=3Dvertical",r.width=3D"49px",r.height=3D"59px"):(r= .layout=3D"",r.width=3D"40px",r.height=3D"25px"),e.innerHTML=3D'',pinitButton=3De.firstChild,t.conf.pubid||(t.con= f.pubid=3Daddthis_config.pubid||Nt()),r.description=3Ds.description=3Dr.= description||a.description||a.title||(addthis_share||{}).title||"",pinit= Button.src=3D_atc.rsrcs.pinit+(_ate.bro.ie6||_ate.bro.ie7?"?":"#")+"url=3D= "+j(r.url)+"&media=3D"+j(r.media||a.media||"")+"&description=3D"+j(r.des= cription)+r.layout+"&ats=3D"+j(_ate.util.rtoKV(s))+"&atc=3D"+j(_ate.util= .rtoKV(addthis_config))+"&href=3D"+window.location.href+"&pubid=3D"+Nt()= +"&cb=3D"+_ate.cb+"&ssid=3D"+_ate.track.ssid()+"&uid=3D"+_ate.uid+"&ab=3D= "+_ate.ab+"&ufbl=3D"+_ate.ufbl+"&uud=3D"+_ate.uud,_ate.ed.addEventListen= er("addthis.pinterest.image",function(e){Gt.addthis_share||(Gt.addthis_s= hare=3D{}),Gt.addthis_share.passthrough||(Gt.addthis_share.passthrough=3D= {}),Gt.addthis_share.passthrough.pinterest_share||(Gt.addthis_share.pass= through.pinterest_share=3D{});var t=3DGt.addthis_share.passthrough.pinte= rest_share;t.pi_media=3Dr.media,t.pi_media_desc=3Dr.description,F("pinte= rest_share",i(a,r))});else{o.createElement("img");e.innerHTML=3D'',e.onclick=3Dfunction(){Gt.addthis_share= ||(Gt.addthis_share=3D{}),Gt.addthis_share.passthrough||(Gt.addthis_shar= e.passthrough=3D{}),Gt.addthis_share.passthrough.pinterest_share||(Gt.ad= dthis_share.passthrough.pinterest_share=3D{});var e=3DGt.addthis_share.p= assthrough.pinterest_share;return e.pi_media=3Dr.media,e.pi_media_desc=3D= r.description,F("pinterest_share",i(a,r)),!1}}e.noh=3De.ost=3D1}}var o=3D= document;e.share=3De.share||{},e.share.register({pinterest:a,pinterest_c= ount:a,pinterest_pinit:a}),e.share.registerListeners({pinterest_share:{o= nclick:function(e){var t=3De.el,n=3Dh(t,"pi:pinit"),a=3Di(t.share||Gt.ad= dthis_share,n);F("pinterest_share",a),U(e)}}})}(_ate,_ate.api,_ate),func= tion(e,t,n,i){function a(e,t,n){if(!e.ost){var i=3D(_ate.util.clone(t.sh= are),{type:"webpage",url:t.share.url,title:t.share.title,style:"number"}= ),a=3Dh(e,"wb:like"),d=3Do(),l=3Ds(a,d),u=3Ds(i,d);meta_tags=3D_ate.util= .extend(u,l),wb_elem=3Dc.createElement("wb:like"),_ate.bro.ie6||_ate.bro= .ie7||_ate.bro.ie8||_ate.bro.msi&&"BackCompat"=3D=3Ddocument.compatMode?= e.parentNode.insertBefore(wb_elem,e.nextSibling):e.appendChild(wb_elem),= r(wb_elem,meta_tags),_ate.ajs("//tjs.sjs.sinajs.cn/open/api/js/wb.js",1)= ,t.conf.pubid||(t.conf.pubid=3Daddthis_config.pubid||_ate.pub()),e.oncli= ck=3Dfunction(){_ate.share.track("sinaweibo_like",0,t.share,t.conf)},e.n= oh=3De.ost=3D1}}function o(){for(var e,t,n,i,a=3Dc.getElementsByTagName(= "meta"),o=3D{},r=3D0;ru&&setTimeout(a,3e3+2e3*u++)))}function o(e){window.twtt= r&&!l&&twttr.events&&(l=3D1,twttr.events.bind("click",function(e){if("tw= eetcount"!=3De.region){if(((e.target||{}).conf||{}).follow)return!1;var = t=3De.target.parentNode&&e.target.parentNode.share?e.target.parentNode.s= hare:{},n=3Dt.url||e.target.baseURI,i=3Dt.title||addthis_share.title,a=3D= {};for(var o in addthis_share)a[o]=3Daddthis_share[o];for(var o in t)a[o= ]=3Dt[o];a.url=3Dn,i&&(a.title=3Di);var r=3D"follow"=3D=3De.region||"fol= lowing"=3D=3De.region?!1:!0;_ate.share.track(r?"tweet":"twitter_follow_n= ative",r?0:1,a,addthis_config)}}))}function r(e,t,n){if(!e.ost){var i,o,= r=3Dh(e,"tw"),s=3Dt.share,d=3Dr.width||56,l=3Dr.height||20,u=3D"";t.shar= e.url_transforms=3Dt.share.url_transforms||{},t.share.url_transforms.def= rag=3D1;var f=3D_ate.util.clone(t.share),p=3D_ate.bro.msi&&"BackCompat"=3D= =3Dc.compatMode||t.conf.ui_use_tweet_iframe||"bitly"=3D=3D(t.share.url_t= ransforms.shorten||{}).twitter?!0:!1;"undefined"!=3Dtypeof r.url?f.url=3D= r.url:f.url=3Dr.url=3D_ate.track.mgu(f.url||(addthis_share||{}).url,f.ur= l_transforms,f,"twitter"),r.counturl||(r.counturl=3Dp?r.url.replace(/=3D= /g,"%253D"):r.url),-1=3D=3Df.url.search(/\.+.*(\/|\?)/)&&(f.url+=3D"/"),= r.url=3D_ate.share.acb("twitter",f,addthis_config),r.count=3Dr.count||"h= orizontal",s.passthrough=3Ds.passthrough||{};var m=3Ds.passthrough.twitt= er||{};if(t.text=3Dr.text=3Dr.text||(t.share.title=3D=3Dc.title?m.text:t= .share.title)||"",t.related=3Dr.related=3Dr.related||m.related||"",t.has= htags=3Dr.hashtags=3Dr.hashtags||m.hashtags||"",(r.via||m.via||t.text.ma= tch(/via\s+@[a-zA-Z0-9_\.]+/i))&&(t.via=3Dr.via=3Dr.via||m.via||(t.text.= match(/via\s+@[a-zA-Z0-9_\.]+/i)?t.text.match(/via\s+@[a-zA-Z0-9_\.]+/i)= .split("@")[1]:"")),u=3D_ate.util.rtoKV(s,"#@!"),"vertical"=3D=3D=3Dr.co= unt?(l=3D62,r.height=3Dr.height||l):"horizontal"=3D=3D=3Dr.count&&(d=3D1= 10,r.width=3Dr.width||d),r.width&&(d=3Dr.width),r.height&&(l=3Dr.height)= ,i=3D_ate.util.toKV(r,"#@!"),p)e.innerHTML=3D'',o=3D= e.firstChild,t.conf.pubid||(t.conf.pubid=3Daddthis_config.pubid||_ate.pu= b()),o.src=3D_atc.rsrcs.tweet+(_ate.bro.ie6||_ate.bro.ie7?"?":"#")+"href= =3D"+j(r.url)+"&dr=3D"+j(_ate.dr)+"&conf=3D"+j(_ate.util.toKV(t.conf))+"= &share=3D"+j(u)+"&tw=3D"+j(i);else{(s.templates||{}).twitter||"";r.text|= |(r.text=3D""=3D=3Ds.title?"":s.title+":");var g=3Dc.ce("a");g.href=3D"h= ttp://twitter.com/share",g.className=3D"twitter-share-button",g.innerHTM= L=3D"Tweet";for(var b in r)r.hasOwnProperty(b)&&g.setAttribute("data-"+b= ,r[b]);e.appendChild(g),t.conf.pubid||(t.conf.pubid=3Daddthis_config.pub= id||_ate.pub()),a(e)}e.noh=3De.ost=3D1}}function s(e,t){var n=3Dh(e,"tf"= ),i=3Dh(e,"tw"),o=3Ddocument.ce("a");n.screen_name=3Di.screen_name||n.sc= reen_name||"addthis",o.href=3D"http://twitter.com/"+n.screen_name,o.clas= sName=3D"twitter-follow-button",o.innerHTML=3D"Follow @"+n.screen_name,_= ate.util.each(n,function(e,t){o.setAttribute("data-"+e,t)}),_ate.util.ea= ch(i,function(e,t){o.setAttribute("data-"+e,t)}),e.ost=3D1,e.appendChild= (o),t.conf.pubid||(t.conf.pubid=3Daddthis_config.pubid||_ate.pub()),a(e)= }var c=3Ddocument,d=3D0,l=3D0,u=3D0;e.share=3De.share||{},e.share.regist= er({tweet:r,twitter_follow_native:s}),e.share.registerSubscriber(o),e.sh= are.registerListeners({twitter:{_after:function(e){e.ins=3D1,e.noh=3D1},= onclick:function(e){var t=3De.el;return _ate.share.pts(t.share,t.conf)}}= }),e.share.twitter=3D{tweet:r,follow:s,sub:o}}(_ate,_ate.api,_ate),funct= ion(e,t,i){function a(e,t,n){if(!e.ost&&!_ate.bro.ie6){var i=3Dh(e,"su:b= adge"),a=3Di.style||"1",o=3Dt.share.url=3Di.href||_ate.track.mgu(t.share= .url,{defrag:1}),r=3Di.height||"20px",s=3Di.width||"75px";"5"=3D=3Da?r=3D= i.height||"60px":"6"=3D=3Da&&(r=3Di.height||"31px"),e.innerHTML=3D''.replace("{{= STYLE}}",a).replace("{{URL}}",j(o)).replace("{{HEIGHT}}",r).replace("{{W= IDTH}}",s),e.noh=3De.ost=3D1}}function o(e,t){if(!e.ost){var n=3Dh(e,"4s= q"),i=3Ddocument.createElement("a");i.href=3D"https://foursquare.com/int= ent/venue.html",i.className=3D"fourSq-widget",n["data-variant"]&&i.setAt= tribute("data-variant",n["data-variant"]),e.appendChild(i),_ate.ajs("//p= latform.foursquare.com/js/widgets.js",1),e.noh=3De.ost=3D1}}function r(e= ,t){if(!e.ost){var n,i,a=3Dh(e,"li"),o=3Dt.share,r=3Da.width||100,s=3Da.= height||18,c=3D"";a.counter||(a.counter=3D"horizontal"),o.passthrough||(= o.passthrough=3D{}),o.passthrough.linkedin=3D_ate.util.toKV(a),o.title&&= (o.title=3Dj(o.title)),c=3D_ate.util.rtoKV(o),"top"=3D=3D=3Da.counter?(s= =3D55,r=3D57,a.height||(a.height=3Ds),a.width||(a.width=3Dr)):"right"=3D= =3D=3Da.counter?(r=3D100,a.width||(a.width=3Dr)):"none"=3D=3D=3Da.counte= r&&(r=3D57,a.width||(a.width=3Dr)),a.width&&(r=3Da.width),a.height&&(s=3D= a.height),n=3D_ate.util.toKV(a),e.innerHTML=3D'