Análise da Inflação do Brasil em Crises Inflacionárias Recentes: Motivos, Impactos e Respostas em meio ao cenário econômico Brasileiro

Esse relatório irá abordar a evolução da inflação brasileira ao longo dos anos e como ela impacta o cenário econômico nacional, analisando o IPCA (Índice Nacional de Preços para o Consumidor Amplo), realizando estudos acerca da situação inflacionária em diferentes períodos de crises e como outros componentes ecônomicos são modificados e alterados.

IPCA - Análise Histórica da Inflação Brasileira

IPCA - Pré Plano Real (Cenário de Hiperinflação)

IPCA - Pós Plano Real

Os gráficos revelam a dramática transição inflacionária brasileira. O primeiro mostra a era da hiperinflação (1980-1994), com pico de 2.738% em 1990, reflexo de descontrole fiscal, indexação generalizada e sucessivos planos econômicos fracassados que incluíam congelamentos de preços e trocas de moeda.

O segundo gráfico exibe o período pós-Plano Real (1994), que rompeu com o ciclo inflacionário histórico através de uma âncora cambial inicial, disciplina fiscal e a criação de uma moeda forte. A estabilização permitiu ao Brasil conviver com inflação de um dígito pela primeira vez em décadas, embora mantenha desafios de inflação estruturalmente mais alta que países desenvolvidos.

A trajetória evidencia como o Brasil passou de patamares hiperinflacionários para um regime de metas de inflação, porém mantendo uma inflação persistentemente superior às economias maduras, reflexo de questões fiscais, ineficiências estruturais e choques de oferta frequentes.

Impactos em Crises Inflacionárias Recentes

IPCA x Meta de Inflação (2020 - 2025)

O gráfico compara a trajetória da meta de inflação estabelecida pelo Comitê de Política Monetária (COPOM) com o IPCA efetivo da economia brasileira no período recente, ilustrando os desafios do regime de metas em um contexto de choques externos sucessivos.

A análise revela dois choques inflacionários consecutivos de naturezas distintas. O primeiro, decorrente da pandemia de COVID-19, teve seus efeitos mais pronunciados em 2021 através de rupturas nas cadeias globais de suprimentos e estímulos fiscais, após o IPCA ter ficado abaixo da meta em 2020 devido ao lockdown inicial. Antes que houvesse uma completa normalização, o conflito Rússia-Ucrânia em fevereiro de 2022 provocou um novo choque, desta vez sobre commodities agrícolas e energia, elevando o IPCA ao pico de 12,13% em abril de 2022 o maior patamar desde 2003.

Atualmente, observa-se um movimento gradual de aceleração inflacionária, com o último dado registrando 5,17% em setembro de 2024, posicionando-se significativamente acima do centro da meta estabelecida em 3,00%. Este cenário mantém pressão sobre a política monetária do Banco Central e reflete a persistência de pressões inflacionárias tanto de demanda quanto de oferta na economia brasileira, com destaque para os componentes de serviços e alimentos.

Impacto Inflação de Alimentos - Guerra Rússia-Ucrânia

Entre 2019 e 2021, antes da guerra, o mercado já enfrentava volatilidade causada pela pandemia. O câmbio variou entre R$ 4,00 e R$ 5,50, e a inflação de alimentos chegou a 3%, devido a disrupções logísticas e mudanças no consumo.

O Real sofreu intensa desvalorização frente ao Dólar, atingindo patamares superiores a R$ 5,30 no ápice da crise geopolítica. Essa depreciação cambial impactou duplamente a cadeia de alimentos: não apenas encareceu produtos importados para consumo direto como o trigo, do qual a Ucrânia e Rússia eram grandes exportadores globais mas também elevou drasticamente o custo dos insumos agrícolas. O setor foi particularmente vulnerável, dado que aproximadamente 85% dos fertilizantes utilizados no Brasil eram importados, com a Rússia como principal fornecedor.

A dependência histórica de insumos importados, combinada com a estrutura de custos já pressionada, fez com que o aumento externo se transmitisse rapidamente para o consumidor final. O IPCA de Alimentos, que já acumulava pressões pós-pandemia, acelerou para 2,4% em Março de 2022, refletindo a velocidade com que a crise geopolítica se transformou em inflação elevada para o consumidor e o agronegócio.

De 2023 a 2025, houve estabilização: o câmbio ficou próximo de R$ 5,00 e a inflação de alimentos convergiu para zero, refletindo a adaptação dos mercados e a normalização das rotas comerciais. Ainda assim, os níveis permanecem acima do período pré-pandemia, indicando transformações estruturais no comércio de alimentos.

Impacto nos Transportes - Período Pandêmico

Análise do IPCA de Transportes e Consumo de Gasolina na Pandemia

A relação entre o IPCA de Transportes e o consumo de gasolina durante a pandemia revela movimentos sincronizados que refletem a dinâmica da crise sanitária. No início de 2020, ambos os indicadores apresentaram queda abrupta, impulsionada pelas medidas de restrição de mobilidade que reduziram drasticamente (IPCA em -2.66% e consumo oara 350 mil barris em Abril de 2020), o deslocamento da população e, consequentemente, a demanda por combustíveis.

Esta contração no consumo exerceu pressão descendente sobre os preços dos transportes, contribuindo para a desaceleração inflacionária do período. Contudo, a partir do segundo semestre de 2020, com a flexibilização das medidas restritivas, o cenário se inverteu. O consumo de gasolina recuperou-se rapidamente, enquanto os preços dos combustíveis responderam com elevações significativas.

A retomada da demanda por transportes, combinada com pressões de custos na cadeia de combustíveis, transformou o segmento em importante vetor inflacionário, demonstrando a sensibilidade do IPCA de Transportes aos ciclos de mobilidade e ao comportamento do consumo de gasolina.

Política Monetária e outros impactos

IPCA x SELIC (Pandemia e Guerra Rússia-Ucrânia)

Os anos de 2020 e 2022 representam dois cenários econômicos distintos onde a relação entre SELIC e IPCA evidenciou dinâmicas inflacionárias desafiadoras. A análise do gráfico SELIC versus IPCA geral revela como choques externos impactaram essa correlação tradicional.

Em 2020, durante a pandemia, o Banco Central reduziu a SELIC para atingindo a mínima de 1,90% a.a. enquanto o IPCA encerrou o ano em 4,52% acima do centro da meta, porém com trajetória descendente. A política expansionista mostrou seus efeitos com defasagem: em 2021, com a SELIC ainda em patamar reduzido, o IPCA acelerou chegando a 10,74% em Novembro de 2021, pressionado pela combinação de estímulo monetário, choques de oferta e demanda reprimida.

A resposta do COPOM foi contundente: iniciou em março de 2021 um ciclo de altas que levou a SELIC a 13,75% em 2022. Neste ano crítico, o gráfico mostra a máxima do IPCA em 12,13% (abril) confrontando com juros já elevados, refletindo o impacto do conflito Rússia-Ucrânia sobre os preços. A persistência inflacionária manteve a SELIC em patamar restritivo mesmo com a gradual desaceleração do IPCA no segundo semestre.

Atualmente, com a SELIC em 10,50% a.a. (setembro/2024) e o IPCA em 5,17%, o spread de 5,33 pontos percentuais entre a taxa básica e a inflação corrobora a manutenção da política monetária contracionista. O Banco Central mantém juros reais elevados como âncora para convergência inflacionária, evidenciando que o ciclo de combate à inflação ainda não se encerrou, mesmo com o IPCA abaixo dos picos de 2022.

Reflexo no PIB (PIB X Inflação)

A análise do comportamento conjunto do PIB e do IPCA revela uma relação de correlação positiva bastante evidente ao longo do período recente. Quando a economia experimenta fases de expansão, a inflação tende a acompanhar esse movimento, refletindo o tradicional trade-off entre crescimento econômico e estabilidade de preços.

O expressivo aumento verificado entre 2020 e 2021 pode ser compreendido pelo contexto de recuperação econômica pós-pandemia. O ano de 2020 registrou uma contração histórica do PIB em decorrência das medidas de restrição sanitária, criando uma base comparativa bastante favorável para o ano seguinte. Em 2021, a combinação de retomada da demanda interna, políticas de estímulo fiscal e monetário, e persistentes gargalos nas cadeias globais de suprimentos criou um ambiente de superaquecimento da economia. Este cenário de demanda robusta confrontando-se com oferta ainda restrita gerou pressões inflacionárias generalizadas em múltiplos setores.

A fase de desaceleração subsequente refletiu os efeitos da política monetária contracionista implementada pelo Banco Central. O ciclo de alta da taxa Selic, iniciado em março de 2021, gradualmente resfriou a demanda agregada, permitindo a desinflação observada a partir de 2022. Contudo, esse processo de controle inflacionário teve como contrapartida a perda de momento do crescimento econômico.

No cenário atual, o PIB mantém-se em patamar inferior ao verificado em 2021, porém com relativa estabilidade. Esta trajetória reflete o ambiente de juros ainda restritivos, que continuam a atuar como freio ao crescimento, enquanto a inflação demonstra resistência em convergir para o centro da meta, sinalizando a persistência de pressões inflacionárias de natureza estrutural e a complexidade do processo de ancoragem de expectativas em um contexto de choques externos recorrentes.

Conlusão

A trajetória da inflação brasileira, analisada desde o período pré-Plano Real até o cenário atual, mostra que brasil superou uma hiperinflação, mas crises recentes (pandemia e guerra) revelaram que o país segue vulnerável a instabilidades, especialmente em custos de alimentos e energia.

A resposta da política monetária, através de um ciclo contracionista robusto da taxa Selic, provou ser eficaz em moderar a demanda e induzir a desinflação a partir dos picos de 2022. No entanto, essa estabilização não ocorreu sem custos. A análise conjunta do IPCA e do PIB evidencia o claro trade-off entre o controle de preços e o crescimento econômicos.

O desafio principal, portanto, não é apenas reagir a crises, mas resolver problemas fiscais e estruturais crônicos que mantêm a inflação brasileira persistentemente acima das economias desenvolvidas.

Referências

LS0tDQp0aXRsZTogIlJlbGF0w7NyaW8gSW5mbGHDp8OjbyBCcmFzaWxlaXJhIGVtIENyaXNlcyBSZWNlbnRlcyINCmF1dGhvcjogIkpvw6NvIFBlZHJvIEdvZGluaG8gUXVlcmlkbyBlIErDumxpYSBGcmVpdGFzIFNhbnRvcyINCmRhdGU6ICIyMDI1LTEwLTE2Ig0Kb3V0cHV0OiANCiBodG1sX2RvY3VtZW50Og0KICAgIHRvYzogdHJ1ZQ0KICAgIHRvY19mbG9hdDogdHJ1ZQ0KICAgIHRoZW1lOiBsdW1lbg0KICAgIGhpZ2hsaWdodDogdGFuZ28NCiAgICBjb2RlX2ZvbGRpbmc6IHNob3cNCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQogICAgdG9jX2RlcHRoOiAzDQotLS0NCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBGQUxTRSwgbWVzc2FnZSA9IEZBTFNFLCB3YXJuaW5nID0gRkFMU0UpDQoNCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KGhpZ2hjaGFydGVyKQ0KbGlicmFyeShwbG90bHkpDQpsaWJyYXJ5KHNpZHJhcikNCmxpYnJhcnkoaXBlYWRhdGFyKQ0KbGlicmFyeShxdWFudG1vZCkNCmxpYnJhcnkoc2NhbGVzKQ0KbGlicmFyeShsdWJyaWRhdGUpDQpsaWJyYXJ5KHJiY2IpDQpsaWJyYXJ5KHJlYWR4bCkNCmxpYnJhcnkod3JpdGV4bCkNCmxpYnJhcnkoaHR0cikNCmxpYnJhcnkodGlkeXIpDQpsaWJyYXJ5KGpzb25saXRlKQ0KbGlicmFyeShodHRyKQ0KYGBgDQojICoqKkFuw6FsaXNlIGRhIEluZmxhw6fDo28gZG8gQnJhc2lsIGVtIENyaXNlcyBJbmZsYWNpb27DoXJpYXMgUmVjZW50ZXM6IE1vdGl2b3MsIEltcGFjdG9zIGUgUmVzcG9zdGFzIGVtIG1laW8gYW8gY2Vuw6FyaW8gZWNvbsO0bWljbyBCcmFzaWxlaXJvKioqDQoNCkVzc2UgcmVsYXTDs3JpbyBpcsOhIGFib3JkYXIgYSBldm9sdcOnw6NvIGRhIGluZmxhw6fDo28gYnJhc2lsZWlyYSBhbyBsb25nbyBkb3MgYW5vcyBlIGNvbW8gZWxhIGltcGFjdGEgbyBjZW7DoXJpbyBlY29uw7RtaWNvIG5hY2lvbmFsLCBhbmFsaXNhbmRvIG8gSVBDQSAow41uZGljZSBOYWNpb25hbCBkZSBQcmXDp29zIHBhcmEgbyBDb25zdW1pZG9yIEFtcGxvKSwgcmVhbGl6YW5kbyBlc3R1ZG9zIGFjZXJjYSBkYSBzaXR1YcOnw6NvIGluZmxhY2lvbsOhcmlhIGVtIGRpZmVyZW50ZXMgcGVyw61vZG9zIGRlIGNyaXNlcyBlIGNvbW8gb3V0cm9zIGNvbXBvbmVudGVzIGVjw7Rub21pY29zIHPDo28gbW9kaWZpY2Fkb3MgZSBhbHRlcmFkb3MuDQoNCiMjICoqSVBDQSAtIEFuw6FsaXNlIEhpc3TDs3JpY2EgZGEgSW5mbGHDp8OjbyBCcmFzaWxlaXJhKioNCg0KIyMjICpJUENBIC0gUHLDqSBQbGFubyBSZWFsIChDZW7DoXJpbyBkZSBIaXBlcmluZmxhw6fDo28pKg0KDQpgYGB7cn0NCmRhZG9zX2lwY2EgPC0gZ2V0X3NlcmllcygxMzUyMiwgc3RhcnRfZGF0ZSA9ICIxOTg1LTAxLTAxIiwgZW5kX2RhdGUgPSAiMTk5NC0xMi0zMSIpICU+JSANCiAgcmVuYW1lKElQQ0FfMTJtZXNlcyA9IGAxMzUyMmApDQpkYWRvc19pcGNhX2FudWFsIDwtIGRhZG9zX2lwY2EgJT4lDQogIG11dGF0ZShhbm8gPSB5ZWFyKGRhdGUpLCBtZXMgPSBtb250aChkYXRlKSkgJT4lDQogIGZpbHRlcihtZXMgPT0gMTIpICU+JSAgDQogIG11dGF0ZSgNCiAgICBEYXRhID0gYXMuRGF0ZShwYXN0ZTAoYW5vLCAiLTAxLTAxIikpLA0KICAgIHRpbWVzdGFtcCA9IGRhdGV0aW1lX3RvX3RpbWVzdGFtcChEYXRhKQ0KICApICU+JQ0KICBzZWxlY3QoYW5vLCBEYXRhLCB0aW1lc3RhbXAsIElQQ0FfYW51YWwgPSBJUENBXzEybWVzZXMpICU+JQ0KICBhcnJhbmdlKERhdGEpDQpoaWdoY2hhcnQodHlwZSA9ICJzdG9jayIpICU+JQ0KICBoY19hZGRfc2VyaWVzKA0KICAgIGRhdGEgPSBsaXN0X3BhcnNlMihkYWRvc19pcGNhX2FudWFsICU+JSBzZWxlY3QodGltZXN0YW1wLCBJUENBX2FudWFsKSksDQogICAgdHlwZSA9ICJjb2x1bW4iLA0KICAgIG5hbWUgPSAiSVBDQSBBbnVhbCAoJSkiLA0KICAgIGNvbG9yID0gIiMwMjAyM2MiLA0KICAgIHlBeGlzID0gMCwNCiAgICB0b29sdGlwID0gbGlzdCh2YWx1ZURlY2ltYWxzID0gMSwgdmFsdWVTdWZmaXggPSAiJSIpDQogICkgJT4lDQogIGhjX3lBeGlzKA0KICAgIHRpdGxlID0gbGlzdCh0ZXh0ID0gIklQQ0EgQW51YWwgKCUpIiksDQogICAgb3Bwb3NpdGUgPSBGQUxTRSwNCiAgICBsYWJlbHMgPSBsaXN0KGZvcm1hdCA9ICJ7dmFsdWV9JSIpLA0KICAgIHRpY2tJbnRlcnZhbCA9IDUwMCwNCiAgICBtaW4gPSAwLA0KICAgIG1heCA9IDMwMDANCiAgKSAlPiUNCiAgaGNfdGl0bGUodGV4dCA9ICJIaXBlcmluZmxhw6fDo28gQnJhc2lsZWlyYSBQcsOpLVBsYW5vIFJlYWw6IDE5ODUtMTk5NCIpICU+JQ0KICBoY19zdWJ0aXRsZSh0ZXh0ID0gIkluZmxhw6fDo28gQW51YWwgKCUpIikgJT4lDQogIGhjX2NyZWRpdHMoZW5hYmxlZCA9IFRSVUUsIHRleHQgPSAiRm9udGU6IEJhbmNvIENlbnRyYWwgZG8gQnJhc2lsIikgJT4lDQogIGhjX3JhbmdlU2VsZWN0b3IoDQogICAgZW5hYmxlZCA9IFRSVUUsDQogICAgYnV0dG9ucyA9IGxpc3QoDQogICAgICBsaXN0KHR5cGUgPSAneWVhcicsIGNvdW50ID0gMiwgdGV4dCA9ICcyWScpLA0KICAgICAgbGlzdCh0eXBlID0gJ3llYXInLCBjb3VudCA9IDUsIHRleHQgPSAnNVknKSwNCiAgICAgIGxpc3QodHlwZSA9ICdhbGwnLCB0ZXh0ID0gJ0FsbCcpDQogICAgKQ0KICApICU+JQ0KICBoY190b29sdGlwKA0KICAgIHNoYXJlZCA9IEZBTFNFLA0KICAgIGhlYWRlckZvcm1hdCA9ICc8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMnB4Ij48Yj57cG9pbnQueDolWX08L2I+PC9zcGFuPjxici8+JywgIA0KICAgIHBvaW50Rm9ybWF0ID0gJ0lQQ0EgQW51YWw6IDxiPntwb2ludC55Oi4xZn0lPC9iPicNCiAgKSAlPiUNCiAgaGNfbGVnZW5kKGVuYWJsZWQgPSBGQUxTRSkgJT4lDQogIGhjX3Bsb3RPcHRpb25zKA0KICAgIGNvbHVtbiA9IGxpc3QoDQogICAgICBwb2ludFBhZGRpbmcgPSAwLjEsDQogICAgICBncm91cFBhZGRpbmcgPSAwLjA1LA0KICAgICAgYm9yZGVyV2lkdGggPSAwLjUNCiAgICApDQogICkgDQpgYGANCg0KIyMjICpJUENBIC0gUMOzcyBQbGFubyBSZWFsKg0KDQpgYGB7cn0NCmRhZG9zX2lwY2EgPC0gZ2V0X3NlcmllcygxMzUyMiwgc3RhcnRfZGF0ZSA9ICIxOTk1LTAxLTAxIikgJT4lIA0KICByZW5hbWUoSVBDQV8xMm1lc2VzID0gYDEzNTIyYCkNCmRhZG9zX2lwY2FfYW51YWxfcG9zIDwtIGRhZG9zX2lwY2EgJT4lDQogIG11dGF0ZShhbm8gPSB5ZWFyKGRhdGUpLCBtZXMgPSBtb250aChkYXRlKSkgJT4lDQogIGZpbHRlcihtZXMgPT0gMTIpICU+JSAgDQogIG11dGF0ZSgNCiAgICBEYXRhID0gYXMuRGF0ZShwYXN0ZTAoYW5vLCAiLTAxLTAxIikpLA0KICAgIHRpbWVzdGFtcCA9IGRhdGV0aW1lX3RvX3RpbWVzdGFtcChEYXRhKQ0KICApICU+JQ0KICBzZWxlY3QoYW5vLCBEYXRhLCB0aW1lc3RhbXAsIElQQ0FfYW51YWwgPSBJUENBXzEybWVzZXMpICU+JQ0KICBhcnJhbmdlKERhdGEpDQpoaWdoY2hhcnQodHlwZSA9ICJzdG9jayIpICU+JQ0KICBoY19hZGRfc2VyaWVzKA0KICAgIGRhdGEgPSBsaXN0X3BhcnNlMihkYWRvc19pcGNhX2FudWFsX3BvcyAlPiUgc2VsZWN0KHRpbWVzdGFtcCwgSVBDQV9hbnVhbCkpLA0KICAgIHR5cGUgPSAiY29sdW1uIiwNCiAgICBuYW1lID0gIklQQ0EgQW51YWwgKCUpIiwNCiAgICBjb2xvciA9ICIjMDIwMjNDIiwNCiAgICB5QXhpcyA9IDAsDQogICAgdG9vbHRpcCA9IGxpc3QodmFsdWVEZWNpbWFscyA9IDEsIHZhbHVlU3VmZml4ID0gIiUiKQ0KICApICU+JQ0KICBoY195QXhpcygNCiAgICB0aXRsZSA9IGxpc3QodGV4dCA9ICJJUENBIEFudWFsICglKSIpLA0KICAgIG9wcG9zaXRlID0gRkFMU0UsDQogICAgbGFiZWxzID0gbGlzdChmb3JtYXQgPSAie3ZhbHVlfSUiKQ0KICApICU+JQ0KICBoY190aXRsZSh0ZXh0ID0gIklQQ0E6IFDDs3MtUGxhbm8gUmVhbCAoMTk5NSAtIDIwMjQpIikgJT4lICANCiAgaGNfc3VidGl0bGUodGV4dCA9ICJJbmZsYcOnw6NvIEFudWFsICglKSIpICU+JQ0KICBoY19jcmVkaXRzKGVuYWJsZWQgPSBUUlVFLCB0ZXh0ID0gIkZvbnRlOiBCYW5jbyBDZW50cmFsIGRvIEJyYXNpbCIpICU+JQ0KICBoY19yYW5nZVNlbGVjdG9yKA0KICAgIGVuYWJsZWQgPSBUUlVFLA0KICAgIGJ1dHRvbnMgPSBsaXN0KA0KICAgICAgbGlzdCh0eXBlID0gJ3llYXInLCBjb3VudCA9IDUsIHRleHQgPSAnNVknKSwNCiAgICAgIGxpc3QodHlwZSA9ICd5ZWFyJywgY291bnQgPSAxMCwgdGV4dCA9ICcxMFknKSwNCiAgICAgIGxpc3QodHlwZSA9ICdhbGwnLCB0ZXh0ID0gJ0FsbCcpDQogICAgKQ0KICApICU+JQ0KICBoY190b29sdGlwKA0KICAgIHNoYXJlZCA9IEZBTFNFLA0KICAgIGhlYWRlckZvcm1hdCA9ICc8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMnB4Ij48Yj57cG9pbnQueDolWX08L2I+PC9zcGFuPjxici8+JywNCiAgICBwb2ludEZvcm1hdCA9ICdJUENBIEFudWFsOiA8Yj57cG9pbnQueTouMWZ9JTwvYj4nDQogICkgJT4lDQogIGhjX2xlZ2VuZChlbmFibGVkID0gRkFMU0UpICU+JQ0KICBoY19wbG90T3B0aW9ucygNCiAgICBjb2x1bW4gPSBsaXN0KA0KICAgICAgcG9pbnRQYWRkaW5nID0gMC4xLA0KICAgICAgZ3JvdXBQYWRkaW5nID0gMC4wNSwNCiAgICAgIGJvcmRlcldpZHRoID0gMC41DQogICAgKQ0KICApIA0KYGBgDQoNCk9zIGdyw6FmaWNvcyByZXZlbGFtIGEgZHJhbcOhdGljYSB0cmFuc2nDp8OjbyBpbmZsYWNpb27DoXJpYSBicmFzaWxlaXJhLiBPIHByaW1laXJvIG1vc3RyYSBhIGVyYSBkYSBoaXBlcmluZmxhw6fDo28gKDE5ODAtMTk5NCksIGNvbSBwaWNvIGRlIDIuNzM4JSBlbSAxOTkwLCByZWZsZXhvIGRlIGRlc2NvbnRyb2xlIGZpc2NhbCwgaW5kZXhhw6fDo28gZ2VuZXJhbGl6YWRhIGUgc3VjZXNzaXZvcyBwbGFub3MgZWNvbsO0bWljb3MgZnJhY2Fzc2Fkb3MgcXVlIGluY2x1w61hbSBjb25nZWxhbWVudG9zIGRlIHByZcOnb3MgZSB0cm9jYXMgZGUgbW9lZGEuDQoNCk8gc2VndW5kbyBncsOhZmljbyBleGliZSBvIHBlcsOtb2RvIHDDs3MtUGxhbm8gUmVhbCAoMTk5NCksIHF1ZSByb21wZXUgY29tIG8gY2ljbG8gaW5mbGFjaW9uw6FyaW8gaGlzdMOzcmljbyBhdHJhdsOpcyBkZSB1bWEgw6JuY29yYSBjYW1iaWFsIGluaWNpYWwsIGRpc2NpcGxpbmEgZmlzY2FsIGUgYSBjcmlhw6fDo28gZGUgdW1hIG1vZWRhIGZvcnRlLiBBIGVzdGFiaWxpemHDp8OjbyBwZXJtaXRpdSBhbyBCcmFzaWwgY29udml2ZXIgY29tIGluZmxhw6fDo28gZGUgdW0gZMOtZ2l0byBwZWxhIHByaW1laXJhIHZleiBlbSBkw6ljYWRhcywgZW1ib3JhIG1hbnRlbmhhIGRlc2FmaW9zIGRlIGluZmxhw6fDo28gZXN0cnV0dXJhbG1lbnRlIG1haXMgYWx0YSBxdWUgcGHDrXNlcyBkZXNlbnZvbHZpZG9zLg0KDQpBIHRyYWpldMOzcmlhIGV2aWRlbmNpYSBjb21vIG8gQnJhc2lsIHBhc3NvdSBkZSBwYXRhbWFyZXMgaGlwZXJpbmZsYWNpb27DoXJpb3MgcGFyYSB1bSByZWdpbWUgZGUgbWV0YXMgZGUgaW5mbGHDp8OjbywgcG9yw6ltIG1hbnRlbmRvIHVtYSBpbmZsYcOnw6NvIHBlcnNpc3RlbnRlbWVudGUgc3VwZXJpb3Igw6BzIGVjb25vbWlhcyBtYWR1cmFzLCByZWZsZXhvIGRlIHF1ZXN0w7VlcyBmaXNjYWlzLCBpbmVmaWNpw6puY2lhcyBlc3RydXR1cmFpcyBlIGNob3F1ZXMgZGUgb2ZlcnRhIGZyZXF1ZW50ZXMuDQoNCiMjICoqSW1wYWN0b3MgZW0gQ3Jpc2VzIEluZmxhY2lvbsOhcmlhcyBSZWNlbnRlcyoqDQoNCiMjIyAqSVBDQSB4IE1ldGEgZGUgSW5mbGHDp8OjbyAoMjAyMCAtIDIwMjUpKg0KDQpgYGB7cn0NCmlwY2FfbWVuc2FsIDwtIGdldF9zZXJpZXMoMTM1MjIsIHN0YXJ0X2RhdGUgPSAiMjAxOS0wMS0wMSIpICU+JSANCiAgcmVuYW1lKGlwY2FfYWN1bV8xMm0gPSBgMTM1MjJgKQ0KDQptZXRhX2luZmxhY2FvIDwtIGdldF9zZXJpZXMoMTM1MjEsIHN0YXJ0X2RhdGUgPSAiMjAxOS0wMS0wMSIpICU+JSANCiAgcmVuYW1lKG1ldGFfaW5mbGFjYW8gPSBgMTM1MjFgKQ0KZGFkb3NfbWV0YV9pcGNhIDwtIGlwY2FfbWVuc2FsICU+JQ0KICBsZWZ0X2pvaW4obWV0YV9pbmZsYWNhbywgYnkgPSAiZGF0ZSIpICU+JQ0KICBtdXRhdGUoDQogICAgdGltZXN0YW1wID0gZGF0ZXRpbWVfdG9fdGltZXN0YW1wKGRhdGUpLA0KICAgIG1ldGFfaW5mbGFjYW8gPSBpZmVsc2UoIWlzLm5hKG1ldGFfaW5mbGFjYW8pLCBtZXRhX2luZmxhY2FvLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFnKG1ldGFfaW5mbGFjYW8sIDEpKQ0KICApICU+JQ0KICBmaWxsKG1ldGFfaW5mbGFjYW8sIC5kaXJlY3Rpb24gPSAiZG93biIpICU+JQ0KICBmaWx0ZXIoIWlzLm5hKGlwY2FfYWN1bV8xMm0pICYgIWlzLm5hKG1ldGFfaW5mbGFjYW8pKQ0KaGlnaGNoYXJ0KHR5cGUgPSAic3RvY2siKSAlPiUNCiAgaGNfYWRkX3NlcmllcygNCiAgICBkYXRhID0gbGlzdF9wYXJzZTIoZGFkb3NfbWV0YV9pcGNhICU+JSBzZWxlY3QodGltZXN0YW1wLCBpcGNhX2FjdW1fMTJtKSksDQogICAgdHlwZSA9ICJsaW5lIiwNCiAgICBuYW1lID0gIklQQ0EgQWN1bXVsYWRvIDEyTSAoJSkiLA0KICAgIGNvbG9yID0gIiNmZWI3MTIiLA0KICAgIHlBeGlzID0gMCwNCiAgICBsaW5lV2lkdGggPSAzLA0KICAgIHRvb2x0aXAgPSBsaXN0KHZhbHVlRGVjaW1hbHMgPSAyLCB2YWx1ZVN1ZmZpeCA9ICIlIikNCiAgKSAlPiUNCiAgaGNfYWRkX3NlcmllcygNCiAgICBkYXRhID0gbGlzdF9wYXJzZTIoZGFkb3NfbWV0YV9pcGNhICU+JSBzZWxlY3QodGltZXN0YW1wLCBtZXRhX2luZmxhY2FvKSksDQogICAgdHlwZSA9ICJsaW5lIiwNCiAgICBuYW1lID0gIk1ldGEgZGUgSW5mbGHDp8OjbyAoJSkiLA0KICAgIGNvbG9yID0gIiMwMjAyM2MiLA0KICAgIHlBeGlzID0gMCwNCiAgICBsaW5lV2lkdGggPSAyLA0KICAgIGRhc2hTdHlsZSA9ICJkYXNoIiwNCiAgICB0b29sdGlwID0gbGlzdCh2YWx1ZURlY2ltYWxzID0gMiwgdmFsdWVTdWZmaXggPSAiJSIpDQogICkgJT4lDQogIGhjX3lBeGlzKA0KICAgIHRpdGxlID0gbGlzdCh0ZXh0ID0gIkluZmxhw6fDo28gKCUpIiksDQogICAgbGFiZWxzID0gbGlzdChmb3JtYXQgPSAie3ZhbHVlfSUiKSwNCiAgICBtaW4gPSAwLA0KICAgIG1heCA9IDEyDQogICkgJT4lDQogIGhjX3RpdGxlKHRleHQgPSAiSVBDQSB2cyBNZXRhIGRlIEluZmxhw6fDo28gKDIwMjAtMjAyNCkiKSAlPiUNCiAgaGNfc3VidGl0bGUodGV4dCA9ICJJUENBIEFjdW11bGFkbyAxMiBNZXNlcyB2cyBNZXRhIEFudWFsIGRvIFJlZ2ltZSBkZSBNZXRhcyIpICU+JQ0KICBoY19jcmVkaXRzKGVuYWJsZWQgPSBUUlVFLCB0ZXh0ID0gIkZvbnRlOiBCYW5jbyBDZW50cmFsIGRvIEJyYXNpbCIpICU+JQ0KICBoY19yYW5nZVNlbGVjdG9yKA0KICAgIGVuYWJsZWQgPSBUUlVFLA0KICAgIGJ1dHRvbnMgPSBsaXN0KA0KICAgICAgbGlzdCh0eXBlID0gJ21vbnRoJywgY291bnQgPSA2LCB0ZXh0ID0gJzZNJyksDQogICAgICBsaXN0KHR5cGUgPSAneWVhcicsIGNvdW50ID0gMSwgdGV4dCA9ICcxWScpLA0KICAgICAgbGlzdCh0eXBlID0gJ2FsbCcsIHRleHQgPSAnQWxsJykNCiAgICApDQogICkgJT4lDQogIGhjX3Rvb2x0aXAoDQogICAgc2hhcmVkID0gVFJVRSwNCiAgICBoZWFkZXJGb3JtYXQgPSAnPGI+e3BvaW50Lng6JWIvJVl9PC9iPjxici8+JywNCiAgICBwb2ludEZvcm1hdCA9ICc8c3BhbiBzdHlsZT0iY29sb3I6e3BvaW50LmNvbG9yfSI+4pePPC9zcGFuPiB7c2VyaWVzLm5hbWV9OiA8Yj57cG9pbnQueTouMmZ9JTwvYj48YnIvPicNCiAgKSAlPiUNCiAgaGNfbGVnZW5kKGVuYWJsZWQgPSBUUlVFKSAlPiUNCiAgaGNfcGxvdE9wdGlvbnMoDQogICAgbGluZSA9IGxpc3QoDQogICAgICBtYXJrZXIgPSBsaXN0KGVuYWJsZWQgPSBGQUxTRSkNCiAgICApDQogICkgDQpgYGANCg0KTyBncsOhZmljbyBjb21wYXJhIGEgdHJhamV0w7NyaWEgZGEgbWV0YSBkZSBpbmZsYcOnw6NvIGVzdGFiZWxlY2lkYSBwZWxvIENvbWl0w6ogZGUgUG9sw610aWNhIE1vbmV0w6FyaWEgKENPUE9NKSBjb20gbyBJUENBIGVmZXRpdm8gZGEgZWNvbm9taWEgYnJhc2lsZWlyYSBubyBwZXLDrW9kbyByZWNlbnRlLCBpbHVzdHJhbmRvIG9zIGRlc2FmaW9zIGRvIHJlZ2ltZSBkZSBtZXRhcyBlbSB1bSBjb250ZXh0byBkZSBjaG9xdWVzIGV4dGVybm9zIHN1Y2Vzc2l2b3MuDQoNCkEgYW7DoWxpc2UgcmV2ZWxhIGRvaXMgY2hvcXVlcyBpbmZsYWNpb27DoXJpb3MgY29uc2VjdXRpdm9zIGRlIG5hdHVyZXphcyBkaXN0aW50YXMuIE8gcHJpbWVpcm8sIGRlY29ycmVudGUgZGEgcGFuZGVtaWEgZGUgQ09WSUQtMTksIHRldmUgc2V1cyBlZmVpdG9zIG1haXMgcHJvbnVuY2lhZG9zIGVtIDIwMjEgYXRyYXbDqXMgZGUgcnVwdHVyYXMgbmFzIGNhZGVpYXMgZ2xvYmFpcyBkZSBzdXByaW1lbnRvcyBlIGVzdMOtbXVsb3MgZmlzY2FpcywgYXDDs3MgbyBJUENBIHRlciBmaWNhZG8gYWJhaXhvIGRhIG1ldGEgZW0gMjAyMCBkZXZpZG8gYW8gbG9ja2Rvd24gaW5pY2lhbC4gQW50ZXMgcXVlIGhvdXZlc3NlIHVtYSBjb21wbGV0YSBub3JtYWxpemHDp8OjbywgbyBjb25mbGl0byBSw7pzc2lhLVVjcsOibmlhIGVtIGZldmVyZWlybyBkZSAyMDIyIHByb3ZvY291IHVtIG5vdm8gY2hvcXVlLCBkZXN0YSB2ZXogc29icmUgY29tbW9kaXRpZXMgYWdyw61jb2xhcyBlIGVuZXJnaWEsIGVsZXZhbmRvIG8gSVBDQSBhbyBwaWNvIGRlIDEyLDEzJSBlbSBhYnJpbCBkZSAyMDIyIG8gbWFpb3IgcGF0YW1hciBkZXNkZSAyMDAzLg0KDQpBdHVhbG1lbnRlLCBvYnNlcnZhLXNlIHVtIG1vdmltZW50byBncmFkdWFsIGRlIGFjZWxlcmHDp8OjbyBpbmZsYWNpb27DoXJpYSwgY29tIG8gw7psdGltbyBkYWRvIHJlZ2lzdHJhbmRvIDUsMTclIGVtIHNldGVtYnJvIGRlIDIwMjQsIHBvc2ljaW9uYW5kby1zZSBzaWduaWZpY2F0aXZhbWVudGUgYWNpbWEgZG8gY2VudHJvIGRhIG1ldGEgZXN0YWJlbGVjaWRhIGVtIDMsMDAlLiBFc3RlIGNlbsOhcmlvIG1hbnTDqW0gcHJlc3PDo28gc29icmUgYSBwb2zDrXRpY2EgbW9uZXTDoXJpYSBkbyBCYW5jbyBDZW50cmFsIGUgcmVmbGV0ZSBhIHBlcnNpc3TDqm5jaWEgZGUgcHJlc3PDtWVzIGluZmxhY2lvbsOhcmlhcyB0YW50byBkZSBkZW1hbmRhIHF1YW50byBkZSBvZmVydGEgbmEgZWNvbm9taWEgYnJhc2lsZWlyYSwgY29tIGRlc3RhcXVlIHBhcmEgb3MgY29tcG9uZW50ZXMgZGUgc2VydmnDp29zIGUgYWxpbWVudG9zLg0KDQojIyMgKkltcGFjdG8gSW5mbGHDp8OjbyBkZSBBbGltZW50b3MgLSBHdWVycmEgUsO6c3NpYS1VY3LDom5pYSoNCg0KYGBge3J9DQoNCmNvZGlnb19pcGNhX2FsaW1lbnRvcyA8LSAxNjM1IA0KDQptb2VkYSA8LSAiVVNEIg0KZGF0YV9pbmljaW8gPC0gYXMuRGF0ZSgiMjAyMC0wMS0wMSIpDQpkYXRhX2ZpbSA8LSBTeXMuRGF0ZSgpIA0KDQpkZl9pcGNhIDwtIHJiY2I6OmdldF9zZXJpZXMoYyhJUENBX0FsaW1lbnRvcyA9IGNvZGlnb19pcGNhX2FsaW1lbnRvcyksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfZGF0ZSA9IGRhdGFfaW5pY2lvLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9kYXRlID0gZGF0YV9maW0pICU+JQ0KICBtdXRhdGUoZGF0ZSA9IGFzLkRhdGUoZGF0ZSkpIA0KDQpkZl9kb2xhcl9kaWFyaW8gPC0gcmJjYjo6Z2V0X2N1cnJlbmN5KG1vZWRhLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2RhdGUgPSBkYXRhX2luaWNpbywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfZGF0ZSA9IGRhdGFfZmltKSAlPiUNCiAgc2VsZWN0KGRhdGUsIGJpZCkgJT4lDQogIHJlbmFtZShEb2xhciA9IGJpZCkgJT4lDQogIG11dGF0ZShkYXRlID0gYXMuRGF0ZShkYXRlKSkgDQoNCg0KZGZfZG9sYXJfbWVuc2FsIDwtIGRmX2RvbGFyX2RpYXJpbyAlPiUNCiANCiAgbXV0YXRlKA0KICAgIGFubyA9IGZvcm1hdChkYXRlLCAiJVkiKSwNCiAgICBtZXMgPSBmb3JtYXQoZGF0ZSwgIiVtIikNCiAgKSAlPiUNCiAgZ3JvdXBfYnkoYW5vLCBtZXMpICU+JQ0KICANCiAgc3VtbWFyaXNlKA0KICAgIERvbGFyX01lZGlvX01lbnNhbCA9IG1lYW4oRG9sYXIsIG5hLnJtID0gVFJVRSkNCiAgKSAlPiUNCiAgdW5ncm91cCgpICU+JQ0KIA0KICBtdXRhdGUoDQogICAgZGF0ZSA9IGFzLkRhdGUocGFzdGUoYW5vLCBtZXMsICIwMSIsIHNlcCA9ICItIikpDQogICkgJT4lDQogIHNlbGVjdChkYXRlLCBEb2xhcl9NZWRpb19NZW5zYWwpDQoNCg0KDQoNCmRhZG9zIDwtIGRmX2lwY2EgJT4lDQogIGxlZnRfam9pbihkZl9kb2xhcl9tZW5zYWwsIGJ5ID0gImRhdGUiKQ0KDQoNCmRhZG9zIDwtIGRhZG9zICU+JQ0KICBhcnJhbmdlKGRhdGUpICU+JQ0KICBtdXRhdGUodGltZXN0YW1wID0gYXMubnVtZXJpYyhhcy5QT1NJWGN0KGRhdGUpKSAqIDEwMDApDQoNCg0KZGF0YV9ndWVycmEgPC0gYXMubnVtZXJpYyhhcy5QT1NJWGN0KGFzLkRhdGUoIjIwMjItMDItMjQiKSkpICogMTAwMA0KDQpncmFmaWNvIDwtIGhpZ2hjaGFydCgpICU+JQ0KICANCiAgaGNfYWRkX3NlcmllcygNCiAgICBkYXRhID0gZGFkb3MsDQogICAgdHlwZSA9ICJsaW5lIiwNCiAgICBoY2Flcyh4ID0gdGltZXN0YW1wLCB5ID0gSVBDQV9BbGltZW50b3MpLA0KICAgIG5hbWUgPSAiSW5mbGHDp8OjbyBkZSBBbGltZW50b3MgKElQQ0EpIiwNCiAgICBjb2xvciA9ICIjMDIwMjNjIiwNCiAgICBsaW5lV2lkdGggPSAzLA0KICAgIHlBeGlzID0gMCwgDQogICAgdG9vbHRpcCA9IGxpc3QodmFsdWVTdWZmaXggPSAiJSIsIHZhbHVlRGVjaW1hbHMgPSAxKQ0KICApICU+JQ0KDQogIA0KICBoY19hZGRfc2VyaWVzKA0KICAgIGRhdGEgPSBkYWRvcywNCiAgICB0eXBlID0gImxpbmUiLA0KICAgIGhjYWVzKHggPSB0aW1lc3RhbXAsIHkgPSBEb2xhcl9NZWRpb19NZW5zYWwpLA0KICAgIG5hbWUgPSAiQ8OibWJpbyBNw6lkaW8gKFIkL1VTRCkiLA0KICAgIGNvbG9yID0gIiNmZWI3MTIiLA0KICAgIGxpbmVXaWR0aCA9IDMsDQogICAgeUF4aXMgPSAxLCANCiAgICB0b29sdGlwID0gbGlzdCh2YWx1ZVByZWZpeCA9ICJSJCAiLCB2YWx1ZURlY2ltYWxzID0gMikNCiAgKSAlPiUNCiAgDQogIGhjX3hBeGlzKA0KICAgIHR5cGUgPSAiZGF0ZXRpbWUiLA0KICAgIHRpdGxlID0gbGlzdCh0ZXh0ID0gIiIpLA0KICAgIGRhdGVUaW1lTGFiZWxGb3JtYXRzID0gbGlzdCgNCiAgICAgIG1vbnRoID0gIiViICVZIiwNCiAgICAgIHllYXIgPSAiJVkiDQogICAgKSwNCiAgICBwbG90TGluZXMgPSBsaXN0KA0KICAgICAgbGlzdCgNCiAgICAgICAgdmFsdWUgPSBkYXRhX2d1ZXJyYSwNCiAgICAgICAgY29sb3IgPSAiIzAyMDIzQyIsDQogICAgICAgIHdpZHRoID0gMiwNCiAgICAgICAgZGFzaFN0eWxlID0gIkRhc2giLA0KICAgICAgICBsYWJlbCA9IGxpc3QoDQogICAgICAgIA0KICAgICAgICAgIHRleHQgPSAiSW7DrWNpbyBkYSBHdWVycmEgKFVjcsOibmlhKSIsDQogICAgICAgICAgc3R5bGUgPSBsaXN0KA0KICAgICAgICAgICAgY29sb3IgPSAiIzAyMDIzQyIsDQogICAgICAgICAgICBmb250V2VpZ2h0ID0gImJvbGQiLA0KICAgICAgICAgICAgZm9udFNpemUgPSAiMTFweCINCiAgICAgICAgICApLA0KICAgICAgICAgIHZlcnRpY2FsQWxpZ24gPSAidG9wIiwNCiAgICAgICAgICB0ZXh0QWxpZ24gPSAiY2VudGVyIiwNCiAgICAgICAgICB5ID0gMjANCiAgICAgICAgKQ0KICAgICAgKQ0KICAgICkNCiAgKSAlPiUNCiANCiAgaGNfeUF4aXNfbXVsdGlwbGVzKA0KICAgIGxpc3QoDQogICAgICANCiAgICAgIHRpdGxlID0gbGlzdCgNCiAgICAgICAgdGV4dCA9ICJJUENBIEFsaW1lbnRvcyIsDQogICAgICAgIHN0eWxlID0gbGlzdChjb2xvciA9ICIjMDIwMjNjIiwgZm9udFdlaWdodCA9ICJib2xkIikNCiAgICAgICksDQogICAgICBsYWJlbHMgPSBsaXN0KA0KICAgICAgICBmb3JtYXQgPSAie3ZhbHVlfSUiLA0KICAgICAgICBzdHlsZSA9IGxpc3QoY29sb3IgPSAiIzAyMDIzYyIpDQogICAgICApLA0KICAgICAgb3Bwb3NpdGUgPSBGQUxTRQ0KICAgICksDQogICAgbGlzdCgNCiAgICAgIA0KICAgICAgdGl0bGUgPSBsaXN0KA0KICAgICAgICB0ZXh0ID0gIkPDom1iaW8gKFIkL1VTRCkiLA0KICAgICAgICBzdHlsZSA9IGxpc3QoY29sb3IgPSAiI2ZlYjcxMiIsIGZvbnRXZWlnaHQgPSAiYm9sZCIpDQogICAgICApLA0KICAgICAgbGFiZWxzID0gbGlzdCgNCiAgICAgICAgZm9ybWF0ID0gIlIkIHt2YWx1ZTouMmZ9IiwNCiAgICAgICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gIiNmZWI3MTIiKQ0KICAgICAgKSwNCiAgICAgIG9wcG9zaXRlID0gVFJVRSANCiAgICApDQoNCiAgKSAlPiUNCiAgDQogIGhjX3RpdGxlKA0KICAgIHRleHQgPSAiSW1wYWN0byBkYSBHdWVycmEgbmEgVWNyw6JuaWEgbm9zIEN1c3RvcyBkZSBQcm9kdcOnw6NvIGRlIEFsaW1lbnRvcyIsDQogICAgc3R5bGUgPSBsaXN0KA0KICAgICAgY29sb3IgPSAiIzAyMDIzQyIsDQogICAgICBmb250V2VpZ2h0ID0gImJvbGQiLA0KICAgICAgZm9udFNpemUgPSAiMjBweCINCiAgICApDQogICkgJT4lDQogIA0KICBoY19sZWdlbmQoDQogICAgYWxpZ24gPSAiY2VudGVyIiwNCiAgICB2ZXJ0aWNhbEFsaWduID0gImJvdHRvbSIsDQogICAgbGF5b3V0ID0gImhvcml6b250YWwiDQogICkgJT4lDQogIA0KICANCiAgaGNfY3JlZGl0cygNCiAgICBlbmFibGVkID0gVFJVRSwNCiAgICB0ZXh0ID0gIkZvbnRlczogQkNCIiwNCiAgICBzdHlsZSA9IGxpc3QoZm9udFNpemUgPSAiMTBweCIsIGNvbG9yID0gIiM2NjYiKQ0KICApICU+JQ0KICANCiAgaGNfdG9vbHRpcCgNCiAgICBzaGFyZWQgPSBUUlVFLA0KICAgIGNyb3NzaGFpcnMgPSBUUlVFLA0KICAgIGJhY2tncm91bmRDb2xvciA9ICJyZ2JhKDI1NSwyNTUsMjU1LDAuOTUpIiwNCiAgICBib3JkZXJDb2xvciA9ICIjMDIwMjNDIg0KICApICU+JQ0KICANCiAgaGNfcmFuZ2VTZWxlY3RvcigNCiAgICBlbmFibGVkID0gVFJVRSwNCiAgICBzZWxlY3RlZCA9IDQsIA0KICAgIGJ1dHRvbnMgPSBsaXN0KA0KICAgICAgbGlzdCh0eXBlID0gIm1vbnRoIiwgY291bnQgPSA2LCB0ZXh0ID0gIjZNIiksDQogICAgICBsaXN0KHR5cGUgPSAieWVhciIsIGNvdW50ID0gMSwgdGV4dCA9ICIxQSIpLA0KICAgICAgbGlzdCh0eXBlID0gInllYXIiLCBjb3VudCA9IDIsIHRleHQgPSAiMkEiKSwNCiAgICAgIGxpc3QodHlwZSA9ICJhbGwiLCB0ZXh0ID0gIlR1ZG8iKQ0KICAgICkNCiAgKSAlPiUNCiAgDQogIGhjX25hdmlnYXRvcihlbmFibGVkID0gVFJVRSkgJT4lDQogIGhjX3Njcm9sbGJhcihlbmFibGVkID0gRkFMU0UpICU+JQ0KICBoY19leHBvcnRpbmcoZW5hYmxlZCA9IFRSVUUpICU+JQ0KICBoY19jcmVkaXRzKGVuYWJsZWQgPSBGQUxTRSkgJT4lDQogIGhjX2NoYXJ0KA0KICAgIGJhY2tncm91bmRDb2xvciA9ICIjZmZmZmZmIiwNCiAgICBzdHlsZSA9IGxpc3QoZm9udEZhbWlseSA9ICJBcmlhbCwgc2Fucy1zZXJpZiIpLA0KICAgIHpvb21UeXBlID0gIngiDQogICkNCg0KZ3JhZmljbw0KDQpgYGANCkVudHJlIDIwMTkgZSAyMDIxLCBhbnRlcyBkYSBndWVycmEsIG8gbWVyY2FkbyBqw6EgZW5mcmVudGF2YSB2b2xhdGlsaWRhZGUgY2F1c2FkYSBwZWxhIHBhbmRlbWlhLiBPIGPDom1iaW8gdmFyaW91IGVudHJlIFIkIDQsMDAgZSBSJCA1LDUwLCBlIGEgaW5mbGHDp8OjbyBkZSBhbGltZW50b3MgY2hlZ291IGEgMyUsIGRldmlkbyBhIGRpc3J1cMOnw7VlcyBsb2fDrXN0aWNhcyBlIG11ZGFuw6dhcyBubyBjb25zdW1vLg0KDQpPIFJlYWwgc29mcmV1IGludGVuc2EgZGVzdmFsb3JpemHDp8OjbyBmcmVudGUgYW8gRMOzbGFyLCBhdGluZ2luZG8gcGF0YW1hcmVzIHN1cGVyaW9yZXMgYSBSJCA1LDMwIG5vIMOhcGljZSBkYSBjcmlzZSBnZW9wb2zDrXRpY2EuIEVzc2EgZGVwcmVjaWHDp8OjbyBjYW1iaWFsIGltcGFjdG91IGR1cGxhbWVudGUgYSBjYWRlaWEgZGUgYWxpbWVudG9zOiBuw6NvIGFwZW5hcyBlbmNhcmVjZXUgcHJvZHV0b3MgaW1wb3J0YWRvcyBwYXJhIGNvbnN1bW8gZGlyZXRvIGNvbW8gbyB0cmlnbywgZG8gcXVhbCBhIFVjcsOibmlhIGUgUsO6c3NpYSBlcmFtIGdyYW5kZXMgZXhwb3J0YWRvcmVzIGdsb2JhaXMgbWFzIHRhbWLDqW0gZWxldm91IGRyYXN0aWNhbWVudGUgbyBjdXN0byBkb3MgaW5zdW1vcyBhZ3LDrWNvbGFzLiBPIHNldG9yIGZvaSBwYXJ0aWN1bGFybWVudGUgdnVsbmVyw6F2ZWwsIGRhZG8gcXVlIGFwcm94aW1hZGFtZW50ZSA4NSUgZG9zIGZlcnRpbGl6YW50ZXMgdXRpbGl6YWRvcyBubyBCcmFzaWwgZXJhbSBpbXBvcnRhZG9zLCBjb20gYSBSw7pzc2lhIGNvbW8gcHJpbmNpcGFsIGZvcm5lY2Vkb3IuDQoNCkEgZGVwZW5kw6puY2lhIGhpc3TDs3JpY2EgZGUgaW5zdW1vcyBpbXBvcnRhZG9zLCBjb21iaW5hZGEgY29tIGEgZXN0cnV0dXJhIGRlIGN1c3RvcyBqw6EgcHJlc3Npb25hZGEsIGZleiBjb20gcXVlIG8gYXVtZW50byBleHRlcm5vIHNlIHRyYW5zbWl0aXNzZSByYXBpZGFtZW50ZSBwYXJhIG8gY29uc3VtaWRvciBmaW5hbC4gTyBJUENBIGRlIEFsaW1lbnRvcywgcXVlIGrDoSBhY3VtdWxhdmEgcHJlc3PDtWVzIHDDs3MtcGFuZGVtaWEsIGFjZWxlcm91IHBhcmEgMiw0JSAgZW0gTWFyw6dvIGRlIDIwMjIsIHJlZmxldGluZG8gYSB2ZWxvY2lkYWRlIGNvbSBxdWUgYSBjcmlzZSBnZW9wb2zDrXRpY2Egc2UgdHJhbnNmb3Jtb3UgZW0gaW5mbGHDp8OjbyBlbGV2YWRhIHBhcmEgbyBjb25zdW1pZG9yIGUgbyBhZ3JvbmVnw7NjaW8uDQoNCkRlIDIwMjMgYSAyMDI1LCBob3V2ZSBlc3RhYmlsaXphw6fDo286IG8gY8OibWJpbyBmaWNvdSBwcsOzeGltbyBkZSBSJCA1LDAwIGUgYSBpbmZsYcOnw6NvIGRlIGFsaW1lbnRvcyBjb252ZXJnaXUgcGFyYSB6ZXJvLCByZWZsZXRpbmRvIGEgYWRhcHRhw6fDo28gZG9zIG1lcmNhZG9zIGUgYSBub3JtYWxpemHDp8OjbyBkYXMgcm90YXMgY29tZXJjaWFpcy4gQWluZGEgYXNzaW0sIG9zIG7DrXZlaXMgcGVybWFuZWNlbSBhY2ltYSBkbyBwZXLDrW9kbyBwcsOpLXBhbmRlbWlhLCBpbmRpY2FuZG8gdHJhbnNmb3JtYcOnw7VlcyBlc3RydXR1cmFpcyBubyBjb23DqXJjaW8gZGUgYWxpbWVudG9zLg0KDQojIyMgKkltcGFjdG8gbm9zIFRyYW5zcG9ydGVzIC0gUGVyw61vZG8gUGFuZMOqbWljbyoNCg0KYGBge3J9DQoNCmRhdGV0aW1lX3RvX3RpbWVzdGFtcCA8LSBmdW5jdGlvbihkYXRlKSANCiAgYXMubnVtZXJpYyhhcy5QT1NJWGN0KGRhdGUpKSAqIDEwMDANCg0KaXBjYV90cmFuc3BvcnRlcyA8LSBnZXRfc2VyaWVzKDE2MzksIHN0YXJ0X2RhdGUgPSAiMjAxOS0wMS0wMSIpICU+JSANCiAgDQogIHJlbmFtZShpcGNhX3RyYW5zcG9ydGVzX2luZGljZSA9IDIpICU+JSANCiAgbXV0YXRlKA0KICAgIA0KICAgIGlwY2FfdHJhbnNwb3J0ZXNfaW5kaWNlID0gYXMubnVtZXJpYyhpcGNhX3RyYW5zcG9ydGVzX2luZGljZSkNCiAgKQ0KDQoNCmNvbnN1bW9fcGV0cm9sZW8gPC0gZ2V0X3NlcmllcygxMzkzLCBzdGFydF9kYXRlID0gIjIwMTktMDEtMDEiKSAlPiUgDQogIA0KICByZW5hbWUoY29uc3Vtb19wZXRyb2xlb19iYXJyaXMgPSAyKSAlPiUNCiAgbXV0YXRlKA0KICAgDQogICAgY29uc3Vtb19wZXRyb2xlb19iYXJyaXMgPSBhcy5udW1lcmljKGNvbnN1bW9fcGV0cm9sZW9fYmFycmlzKQ0KICApDQoNCg0KZGFkb3NfY29uc29saWRhZG9zIDwtIGlwY2FfdHJhbnNwb3J0ZXMgJT4lDQogIA0KICBsZWZ0X2pvaW4oY29uc3Vtb19wZXRyb2xlbyAlPiUgc2VsZWN0KGRhdGUsIGNvbnN1bW9fcGV0cm9sZW9fYmFycmlzKSwgYnkgPSAiZGF0ZSIpICU+JQ0KICANCiAgZmlsdGVyKCFpcy5uYShpcGNhX3RyYW5zcG9ydGVzX2luZGljZSkgJiAhaXMubmEoY29uc3Vtb19wZXRyb2xlb19iYXJyaXMpKSAlPiUNCg0KICBtdXRhdGUodGltZXN0YW1wID0gZGF0ZXRpbWVfdG9fdGltZXN0YW1wKGRhdGUpKQ0KDQoNCmhpZ2hjaGFydCh0eXBlID0gInN0b2NrIikgJT4lDQogIA0KICANCiAgaGNfYWRkX3NlcmllcygNCiAgICBkYXRhID0gbGlzdF9wYXJzZTIoZGFkb3NfY29uc29saWRhZG9zICU+JSBzZWxlY3QodGltZXN0YW1wLCBpcGNhX3RyYW5zcG9ydGVzX2luZGljZSkpLA0KICAgIHR5cGUgPSAibGluZSIsDQogICAgbmFtZSA9ICJJUENBIFRyYW5zcG9ydGVzICjDjW5kaWNlKSIsDQogICAgY29sb3IgPSAiI2ZlYjcxMiIsDQogICAgbGluZVdpZHRoID0gMi41LA0KICAgIHlBeGlzID0gMCwgDQogICAgdG9vbHRpcCA9IGxpc3QodmFsdWVEZWNpbWFscyA9IDIpDQogICkgJT4lDQogIA0KIA0KICBoY19hZGRfc2VyaWVzKA0KICAgIGRhdGEgPSBsaXN0X3BhcnNlMihkYWRvc19jb25zb2xpZGFkb3MgJT4lIHNlbGVjdCh0aW1lc3RhbXAsIGNvbnN1bW9fcGV0cm9sZW9fYmFycmlzKSksDQogICAgdHlwZSA9ICJsaW5lIiwNCiAgICBuYW1lID0gIkNvbnN1bW8gR2Fzb2xpbmEgKE1pbCBCYXJyaXMvRGlhKSIsDQogICAgY29sb3IgPSAiIzAyMDIzYyIsDQogICAgbGluZVdpZHRoID0gMi41LA0KICAgIHlBeGlzID0gMSwgDQogICAgdG9vbHRpcCA9IGxpc3QodmFsdWVEZWNpbWFscyA9IDAsIHZhbHVlU3VmZml4ID0gIiBNaWwgQmFycmlzL0RpYSIpDQogICkgJT4lDQogIA0KICANCiAgaGNfeUF4aXNfbXVsdGlwbGVzKA0KICAgIGxpc3QoDQogICAgICB0aXRsZSA9IGxpc3QodGV4dCA9ICJJUENBIFRyYW5zcG9ydGVzICjDjW5kaWNlKSIsIHN0eWxlID0gbGlzdChjb2xvciA9ICIjMDAyYzVlIikpLA0KICAgICAgb3Bwb3NpdGUgPSBGQUxTRSwgDQogICAgICBsYWJlbHMgPSBsaXN0KGZvcm1hdCA9ICJ7dmFsdWV9IikgDQogICAgKSwNCiAgICBsaXN0KA0KICAgICAgdGl0bGUgPSBsaXN0KHRleHQgPSAiQ29uc3VtbyBkZSBHYXNvbGluYSAoTWlsIEJhcnJpcy9EaWEpIiwgc3R5bGUgPSBsaXN0KGNvbG9yID0gIiNmYWI3MTIiKSksDQogICAgICBvcHBvc2l0ZSA9IFRSVUUsIA0KICAgICAgbGFiZWxzID0gbGlzdChmb3JtYXQgPSAie3ZhbHVlfWsiKSANCiAgICApDQogICkgJT4lDQogIA0KICANCiAgaGNfdGl0bGUodGV4dCA9ICLDjW5kaWNlIGRlIFByZcOnb3MgZGUgVHJhbnNwb3J0ZXMgdnMgQ29uc3VtbyBkZSBCYXJyaXMgZGUgR2Fzb2xpbmEiKSAlPiUNCiAgaGNfc3VidGl0bGUodGV4dCA9ICJJbmZsYcOnw6NvIGRvcyBUcmFuc3BvcnRlcyB4IENvbnN1bW8gZGUgR2Fzb2xpbmEiKSAlPiUNCiAgaGNfY3JlZGl0cyhlbmFibGVkID0gVFJVRSwgdGV4dCA9ICJGb250ZTogQmFuY28gQ2VudHJhbCBkbyBCcmFzaWwiKSAlPiUNCiAgDQogIA0KICBoY19yYW5nZVNlbGVjdG9yKA0KICAgIGVuYWJsZWQgPSBUUlVFLA0KICAgIGJ1dHRvbnMgPSBsaXN0KA0KICAgICAgbGlzdCh0eXBlID0gJ3llYXInLCBjb3VudCA9IDEsIHRleHQgPSAnMVknKSwNCiAgICAgIGxpc3QodHlwZSA9ICd5ZWFyJywgY291bnQgPSAyLCB0ZXh0ID0gJzJZJyksDQogICAgICBsaXN0KHR5cGUgPSAnYWxsJywgdGV4dCA9ICdUdWRvJykNCiAgICApDQogICkgJT4lDQogIGhjX3Rvb2x0aXAoDQogICAgc2hhcmVkID0gVFJVRSwNCiAgICBoZWFkZXJGb3JtYXQgPSAnPGI+e3BvaW50Lng6JWIvJVl9PC9iPjxici8+JywNCiAgICANCiAgICBwb2ludEZvcm1hdCA9ICc8c3BhbiBzdHlsZT0iY29sb3I6e3BvaW50LmNvbG9yfSI+4pePPC9zcGFuPiB7c2VyaWVzLm5hbWV9OiA8Yj57cG9pbnQueX08L2I+PGJyLz4nDQogICkgJT4lDQogIGhjX2xlZ2VuZChlbmFibGVkID0gVFJVRSkgJT4lDQogIGhjX3Bsb3RPcHRpb25zKA0KICAgIGxpbmUgPSBsaXN0KA0KICAgICAgbWFya2VyID0gbGlzdChlbmFibGVkID0gRkFMU0UpDQogICAgKQ0KICApDQpgYGANCg0KKipBbsOhbGlzZSBkbyBJUENBIGRlIFRyYW5zcG9ydGVzIGUgQ29uc3VtbyBkZSBHYXNvbGluYSBuYSBQYW5kZW1pYSoqDQoNCkEgcmVsYcOnw6NvIGVudHJlIG8gSVBDQSBkZSBUcmFuc3BvcnRlcyBlIG8gY29uc3VtbyBkZSBnYXNvbGluYSBkdXJhbnRlIGEgcGFuZGVtaWEgcmV2ZWxhIG1vdmltZW50b3Mgc2luY3Jvbml6YWRvcyBxdWUgcmVmbGV0ZW0gYSBkaW7Dom1pY2EgZGEgY3Jpc2Ugc2FuaXTDoXJpYS4gTm8gaW7DrWNpbyBkZSAyMDIwLCBhbWJvcyBvcyBpbmRpY2Fkb3JlcyBhcHJlc2VudGFyYW0gcXVlZGEgYWJydXB0YSwgaW1wdWxzaW9uYWRhIHBlbGFzIG1lZGlkYXMgZGUgcmVzdHJpw6fDo28gZGUgbW9iaWxpZGFkZSBxdWUgcmVkdXppcmFtIGRyYXN0aWNhbWVudGUgKElQQ0EgZW0gLTIuNjYlICBlIGNvbnN1bW8gb2FyYSAzNTAgbWlsIGJhcnJpcyBlbSBBYnJpbCBkZSAyMDIwKSwgbyBkZXNsb2NhbWVudG8gZGEgcG9wdWxhw6fDo28gZSwgY29uc2VxdWVudGVtZW50ZSwgYSBkZW1hbmRhIHBvciBjb21idXN0w612ZWlzLg0KDQpFc3RhIGNvbnRyYcOnw6NvIG5vIGNvbnN1bW8gZXhlcmNldSBwcmVzc8OjbyBkZXNjZW5kZW50ZSBzb2JyZSBvcyBwcmXDp29zIGRvcyB0cmFuc3BvcnRlcywgY29udHJpYnVpbmRvIHBhcmEgYSBkZXNhY2VsZXJhw6fDo28gaW5mbGFjaW9uw6FyaWEgZG8gcGVyw61vZG8uIENvbnR1ZG8sIGEgcGFydGlyIGRvIHNlZ3VuZG8gc2VtZXN0cmUgZGUgMjAyMCwgY29tIGEgZmxleGliaWxpemHDp8OjbyBkYXMgbWVkaWRhcyByZXN0cml0aXZhcywgbyBjZW7DoXJpbyBzZSBpbnZlcnRldS4gTyBjb25zdW1vIGRlIGdhc29saW5hIHJlY3VwZXJvdS1zZSByYXBpZGFtZW50ZSwgZW5xdWFudG8gb3MgcHJlw6dvcyBkb3MgY29tYnVzdMOtdmVpcyByZXNwb25kZXJhbSBjb20gZWxldmHDp8O1ZXMgc2lnbmlmaWNhdGl2YXMuDQoNCkEgcmV0b21hZGEgZGEgZGVtYW5kYSBwb3IgdHJhbnNwb3J0ZXMsIGNvbWJpbmFkYSBjb20gcHJlc3PDtWVzIGRlIGN1c3RvcyBuYSBjYWRlaWEgZGUgY29tYnVzdMOtdmVpcywgdHJhbnNmb3Jtb3UgbyBzZWdtZW50byBlbSBpbXBvcnRhbnRlIHZldG9yIGluZmxhY2lvbsOhcmlvLCBkZW1vbnN0cmFuZG8gYSBzZW5zaWJpbGlkYWRlIGRvIElQQ0EgZGUgVHJhbnNwb3J0ZXMgYW9zIGNpY2xvcyBkZSBtb2JpbGlkYWRlIGUgYW8gY29tcG9ydGFtZW50byBkbyBjb25zdW1vIGRlIGdhc29saW5hLg0KDQojIyAqKlBvbMOtdGljYSBNb25ldMOhcmlhIGUgb3V0cm9zIGltcGFjdG9zKioNCg0KIyMjICpJUENBIHggU0VMSUMgKFBhbmRlbWlhIGUgR3VlcnJhIFLDunNzaWEtVWNyw6JuaWEpKg0KDQpgYGB7cn0NCmRhZG9zX2lwY2FfZ2VyYWxfbWVuc2FsIDwtIGdldF9zZXJpZXMoMTM1MjIsIHN0YXJ0X2RhdGUgPSAiMjAyMC0wMS0wMSIpICU+JSANCiAgcmVuYW1lKElQQ0FfZ2VyYWxfbWVuc2FsID0gYDEzNTIyYCkNCg0KZGFkb3Nfc2VsaWNfbWVuc2FsIDwtIGdldF9zZXJpZXMoNDE4OSwgc3RhcnRfZGF0ZSA9ICIyMDIwLTAxLTAxIikgJT4lIA0KICByZW5hbWUoc2VsaWNfbWVuc2FsID0gYDQxODlgKQ0KDQpkYWRvc19pcGNhX2dlcmFsX21lbnNhbF8yMDIwIDwtIGRhZG9zX2lwY2FfZ2VyYWxfbWVuc2FsICU+JQ0KICBmaWx0ZXIoZGF0ZSA+PSAiMjAyMC0wMS0wMSIpICU+JQ0KICBtdXRhdGUodGltZXN0YW1wID0gZGF0ZXRpbWVfdG9fdGltZXN0YW1wKGRhdGUpKQ0KDQpkYWRvc19jb21wYXJhY2FvX21lbnNhbCA8LSBkYWRvc19pcGNhX2dlcmFsX21lbnNhbF8yMDIwICU+JQ0KICBsZWZ0X2pvaW4oZGFkb3Nfc2VsaWNfbWVuc2FsLCBieSA9ICJkYXRlIikgJT4lDQogIG11dGF0ZSh0aW1lc3RhbXAgPSBkYXRldGltZV90b190aW1lc3RhbXAoZGF0ZSkpDQoNCmhpZ2hjaGFydCh0eXBlID0gInN0b2NrIikgJT4lDQogIGhjX2FkZF9zZXJpZXMoDQogICAgZGF0YSA9IGxpc3RfcGFyc2UyKGRhZG9zX2NvbXBhcmFjYW9fbWVuc2FsICU+JSBzZWxlY3QodGltZXN0YW1wLCBJUENBX2dlcmFsX21lbnNhbCkpLA0KICAgIHR5cGUgPSAiY29sdW1uIiwNCiAgICBuYW1lID0gIklQQ0EgR2VyYWwgTWVuc2FsICglKSIsIA0KICAgIGNvbG9yID0gIiNmZWI3MTIiLA0KICAgIHlBeGlzID0gMCwNCiAgICB6SW5kZXggPSAxLCAgDQogICAgdG9vbHRpcCA9IGxpc3QodmFsdWVEZWNpbWFscyA9IDIsIHZhbHVlU3VmZml4ID0gIiUiKQ0KICApICU+JQ0KICBoY19hZGRfc2VyaWVzKA0KICAgIGRhdGEgPSBsaXN0X3BhcnNlMihkYWRvc19jb21wYXJhY2FvX21lbnNhbCAlPiUgc2VsZWN0KHRpbWVzdGFtcCwgc2VsaWNfbWVuc2FsKSksDQogICAgdHlwZSA9ICJsaW5lIiwNCiAgICBuYW1lID0gIlNlbGljIE1lbnNhbCAoJSBhLmEuKSIsDQogICAgY29sb3IgPSAiIzAyMDIzYyIsDQogICAgeUF4aXMgPSAxLA0KICAgIHpJbmRleCA9IDIsIA0KICAgIGxpbmVXaWR0aCA9IDMsDQogICAgdG9vbHRpcCA9IGxpc3QodmFsdWVEZWNpbWFscyA9IDIsIHZhbHVlU3VmZml4ID0gIiUiKQ0KICApICU+JQ0KICBoY195QXhpc19tdWx0aXBsZXMoDQogICAgbGlzdCgNCiAgICAgIHRpdGxlID0gbGlzdCh0ZXh0ID0gIklQQ0EgR2VyYWwgKCUpIiksDQogICAgICBsYWJlbHMgPSBsaXN0KGZvcm1hdCA9ICJ7dmFsdWV9JSIpLA0KICAgICAgbWluID0gTlVMTCwNCiAgICAgIGZsb29yID0gLTEsDQogICAgICBvcHBvc2l0ZSA9IEZBTFNFLA0KICAgICAgc2hvd0ZpcnN0TGFiZWwgPSBUUlVFDQogICAgKSwNCiAgICBsaXN0KA0KICAgICAgdGl0bGUgPSBsaXN0KHRleHQgPSAiU2VsaWMgKCUgYS5hLikiKSwNCiAgICAgIGxhYmVscyA9IGxpc3QoZm9ybWF0ID0gInt2YWx1ZX0lIiksDQogICAgICBtaW4gPSAwLA0KICAgICAgb3Bwb3NpdGUgPSBUUlVFLA0KICAgICAgc2hvd0ZpcnN0TGFiZWwgPSBUUlVFDQogICAgKQ0KICApICU+JQ0KICBoY190aXRsZSh0ZXh0ID0gIklQQ0EgR2VyYWwgdnMgU2VsaWMgKDIwMjAtMjAyNSkiKSAlPiUNCiAgaGNfc3VidGl0bGUodGV4dCA9ICJDb21wYXJhdGl2byBNZW5zYWw6IEluZmxhw6fDo28gR2VyYWwgdnMgUG9sw610aWNhIE1vbmV0w6FyaWEiKSAlPiUNCiAgaGNfY3JlZGl0cyhlbmFibGVkID0gVFJVRSwgdGV4dCA9ICJGb250ZTogQmFuY28gQ2VudHJhbCBkbyBCcmFzaWwiKSAlPiUNCiAgaGNfcmFuZ2VTZWxlY3RvcigNCiAgICBlbmFibGVkID0gVFJVRSwNCiAgICBidXR0b25zID0gbGlzdCgNCiAgICAgIGxpc3QodHlwZSA9ICdtb250aCcsIGNvdW50ID0gNiwgdGV4dCA9ICc2TScpLA0KICAgICAgbGlzdCh0eXBlID0gJ3llYXInLCBjb3VudCA9IDEsIHRleHQgPSAnMVknKSwNCiAgICAgIGxpc3QodHlwZSA9ICd5ZWFyJywgY291bnQgPSAyLCB0ZXh0ID0gJzJZJyksDQogICAgICBsaXN0KHR5cGUgPSAnYWxsJywgdGV4dCA9ICdBbGwnKQ0KICAgICkNCiAgKSAlPiUNCiAgaGNfdG9vbHRpcCgNCiAgICBzaGFyZWQgPSBUUlVFLA0KICAgIGhlYWRlckZvcm1hdCA9ICc8Yj57cG9pbnQueDolYi8lWX08L2I+PGJyLz4nLA0KICAgIHBvaW50Rm9ybWF0ID0gJ3tzZXJpZXMubmFtZX06IDxiPntwb2ludC55Oi4yZn0lPC9iPjxici8+Jw0KICApICU+JQ0KICBoY19sZWdlbmQoZW5hYmxlZCA9IFRSVUUpDQpgYGANCg0KT3MgYW5vcyBkZSAyMDIwIGUgMjAyMiByZXByZXNlbnRhbSBkb2lzIGNlbsOhcmlvcyBlY29uw7RtaWNvcyBkaXN0aW50b3Mgb25kZSBhIHJlbGHDp8OjbyBlbnRyZSBTRUxJQyBlIElQQ0EgZXZpZGVuY2lvdSBkaW7Dom1pY2FzIGluZmxhY2lvbsOhcmlhcyBkZXNhZmlhZG9yYXMuIEEgYW7DoWxpc2UgZG8gZ3LDoWZpY28gU0VMSUMgdmVyc3VzIElQQ0EgZ2VyYWwgcmV2ZWxhIGNvbW8gY2hvcXVlcyBleHRlcm5vcyBpbXBhY3RhcmFtIGVzc2EgY29ycmVsYcOnw6NvIHRyYWRpY2lvbmFsLg0KDQpFbSAyMDIwLCBkdXJhbnRlIGEgcGFuZGVtaWEsIG8gQmFuY28gQ2VudHJhbCByZWR1eml1IGEgU0VMSUMgcGFyYSBhdGluZ2luZG8gYSBtw61uaW1hIGRlIDEsOTAlIGEuYS4gZW5xdWFudG8gbyBJUENBIGVuY2Vycm91IG8gYW5vIGVtIDQsNTIlIGFjaW1hIGRvIGNlbnRybyBkYSBtZXRhLCBwb3LDqW0gY29tIHRyYWpldMOzcmlhIGRlc2NlbmRlbnRlLiBBIHBvbMOtdGljYSBleHBhbnNpb25pc3RhIG1vc3Ryb3Ugc2V1cyBlZmVpdG9zIGNvbSBkZWZhc2FnZW06IGVtIDIwMjEsIGNvbSBhIFNFTElDIGFpbmRhIGVtIHBhdGFtYXIgcmVkdXppZG8sIG8gSVBDQSBhY2VsZXJvdSBjaGVnYW5kbyBhIDEwLDc0JSBlbSBOb3ZlbWJybyBkZSAyMDIxLCBwcmVzc2lvbmFkbyBwZWxhIGNvbWJpbmHDp8OjbyBkZSBlc3TDrW11bG8gbW9uZXTDoXJpbywgY2hvcXVlcyBkZSBvZmVydGEgZSBkZW1hbmRhIHJlcHJpbWlkYS4NCg0KQSByZXNwb3N0YSBkbyBDT1BPTSBmb2kgY29udHVuZGVudGU6IGluaWNpb3UgZW0gbWFyw6dvIGRlIDIwMjEgdW0gY2ljbG8gZGUgYWx0YXMgcXVlIGxldm91IGEgU0VMSUMgYSAxMyw3NSUgZW0gMjAyMi4gTmVzdGUgYW5vIGNyw610aWNvLCBvIGdyw6FmaWNvIG1vc3RyYSBhIG3DoXhpbWEgZG8gSVBDQSBlbSAxMiwxMyUgKGFicmlsKSBjb25mcm9udGFuZG8gY29tIGp1cm9zIGrDoSBlbGV2YWRvcywgcmVmbGV0aW5kbyBvIGltcGFjdG8gZG8gY29uZmxpdG8gUsO6c3NpYS1VY3LDom5pYSBzb2JyZSBvcyBwcmXDp29zLiBBIHBlcnNpc3TDqm5jaWEgaW5mbGFjaW9uw6FyaWEgbWFudGV2ZSBhIFNFTElDIGVtIHBhdGFtYXIgcmVzdHJpdGl2byBtZXNtbyBjb20gYSBncmFkdWFsIGRlc2FjZWxlcmHDp8OjbyBkbyBJUENBIG5vIHNlZ3VuZG8gc2VtZXN0cmUuDQoNCkF0dWFsbWVudGUsIGNvbSBhIFNFTElDIGVtIDEwLDUwJSBhLmEuIChzZXRlbWJyby8yMDI0KSBlIG8gSVBDQSBlbSA1LDE3JSwgbyBzcHJlYWQgZGUgNSwzMyBwb250b3MgcGVyY2VudHVhaXMgZW50cmUgYSB0YXhhIGLDoXNpY2EgZSBhIGluZmxhw6fDo28gY29ycm9ib3JhIGEgbWFudXRlbsOnw6NvIGRhIHBvbMOtdGljYSBtb25ldMOhcmlhIGNvbnRyYWNpb25pc3RhLiBPIEJhbmNvIENlbnRyYWwgbWFudMOpbSBqdXJvcyByZWFpcyBlbGV2YWRvcyBjb21vIMOibmNvcmEgcGFyYSBjb252ZXJnw6puY2lhIGluZmxhY2lvbsOhcmlhLCBldmlkZW5jaWFuZG8gcXVlIG8gY2ljbG8gZGUgY29tYmF0ZSDDoCBpbmZsYcOnw6NvIGFpbmRhIG7Do28gc2UgZW5jZXJyb3UsIG1lc21vIGNvbSBvIElQQ0EgYWJhaXhvIGRvcyBwaWNvcyBkZSAyMDIyLg0KDQojIyMgKlJlZmxleG8gbm8gUElCIChQSUIgWCBJbmZsYcOnw6NvKSoNCg0KYGBge3J9DQppcGNhIDwtIGdldF9zZXJpZXMoMTM1MjIsIHN0YXJ0X2RhdGUgPSAiMjAxOS0wMS0wMSIpICU+JQ0KICByZW5hbWUoaXBjYV9hY3VtXzEybSA9IGAxMzUyMmApDQoNCg0KcGliX21pbGhvZXMgPC0gZ2V0X3Nlcmllcyg0MzgwLCBzdGFydF9kYXRlID0gIjIwMTgtMDEtMDEiKSAlPiUgDQogIHJlbmFtZShwaWJfdmFsb3IgPSBgNDM4MGApDQoNCg0KaXBjYV9hbnVhbCA8LSBpcGNhICU+JQ0KICBtdXRhdGUoYW5vID0geWVhcihkYXRlKSkgJT4lDQogIGdyb3VwX2J5KGFubykgJT4lDQogIGZpbHRlcihtb250aChkYXRlKSA9PSAxMiB8IGRhdGUgPT0gbWF4KGRhdGUpKSAlPiUgIA0KICB1bmdyb3VwKCkgJT4lDQogIG11dGF0ZShpcGNhX2FjdW1fMTJtID0gYXMubnVtZXJpYyhpcGNhX2FjdW1fMTJtKSkgJT4lDQogIHNlbGVjdChhbm8sIGlwY2FfYWN1bV8xMm0pDQoNCg0KcGliX2FudWFsIDwtIHBpYl9taWxob2VzICU+JQ0KICBtdXRhdGUoDQogICAgYW5vID0geWVhcihkYXRlKSwNCiAgICBwaWJfdmFsb3IgPSBhcy5udW1lcmljKHBpYl92YWxvcikNCiAgKSAlPiUNCiAgZ3JvdXBfYnkoYW5vKSAlPiUNCiAgc2xpY2VfdGFpbChuID0gMSkgJT4lIA0KICB1bmdyb3VwKCkgJT4lDQogIA0KICANCiAgbXV0YXRlKA0KICAgIHBpYl92YXJpYWNhb19hbnVhbCA9ICgocGliX3ZhbG9yIC8gbGFnKHBpYl92YWxvcikpIC0gMSkgKiAxMDAsDQogICAgcGliX3ZhcmlhY2FvX2FudWFsID0gaWZlbHNlKGlzLm5hKHBpYl92YXJpYWNhb19hbnVhbCksIE5BLCBwaWJfdmFyaWFjYW9fYW51YWwpICANCiAgKSAlPiUNCiAgc2VsZWN0KGFubywgcGliX3ZhcmlhY2FvX2FudWFsKQ0KDQoNCmRhZG9zX3ZhcmlhY2FvIDwtIGlwY2FfYW51YWwgJT4lDQogIGlubmVyX2pvaW4ocGliX2FudWFsLCBieSA9ICJhbm8iKSAlPiUNCiAgbXV0YXRlKA0KICAgIHRpbWVzdGFtcCA9IGFzLm51bWVyaWMoYXMuRGF0ZShwYXN0ZTAoYW5vLCAiLTAxLTAxIikpKSAqIDI0ICogNjAgKiA2MCAqIDEwMDANCiAgKSAlPiUNCiAgZmlsdGVyKCFpcy5uYShwaWJfdmFyaWFjYW9fYW51YWwpICYgIWlzLm5hKGlwY2FfYWN1bV8xMm0pKQ0KDQoNCmhpZ2hjaGFydCh0eXBlID0gInN0b2NrIikgJT4lDQogIA0KICANCiAgaGNfYWRkX3NlcmllcygNCiAgICBkYXRhID0gbGlzdF9wYXJzZTIoZGFkb3NfdmFyaWFjYW8gJT4lIHNlbGVjdCh0aW1lc3RhbXAsIHBpYl92YXJpYWNhb19hbnVhbCkpLA0KICAgIHR5cGUgPSAiY29sdW1uIiwNCiAgICBuYW1lID0gIlBJQiAtIFZhcmlhw6fDo28gQW51YWwgQ2FsY3VsYWRhICglKSIsDQogICAgY29sb3IgPSAiIzAyMDIzYyIsDQogICAgDQogICAgdG9vbHRpcCA9IGxpc3QodmFsdWVEZWNpbWFscyA9IDIsIHZhbHVlU3VmZml4ID0gIiUiKQ0KICApICU+JQ0KICANCiAgDQogIGhjX2FkZF9zZXJpZXMoDQogICAgZGF0YSA9IGxpc3RfcGFyc2UyKGRhZG9zX3ZhcmlhY2FvICU+JSBzZWxlY3QodGltZXN0YW1wLCBpcGNhX2FjdW1fMTJtKSksDQogICAgdHlwZSA9ICJsaW5lIiwNCiAgICBuYW1lID0gIklQQ0EgQWN1bXVsYWRvIDEyTSAoJSkiLA0KICAgIGNvbG9yID0gIiNmZWI3MTIiLA0KICAgIA0KICAgIGxpbmVXaWR0aCA9IDIsDQogICAgdG9vbHRpcCA9IGxpc3QodmFsdWVEZWNpbWFscyA9IDIsIHZhbHVlU3VmZml4ID0gIiUiKQ0KICApICU+JQ0KICANCiANCiAgaGNfeUF4aXMoDQogICAgdGl0bGUgPSBsaXN0KHRleHQgPSAiVGF4YSBkZSBWYXJpYcOnw6NvICglKSIpLCANCiAgICBvcHBvc2l0ZSA9IEZBTFNFLCANCiAgICBsYWJlbHMgPSBsaXN0KGZvcm1hdCA9ICJ7dmFsdWV9JSIpDQogICkgJT4lDQogIA0KIA0KICBoY19wbG90T3B0aW9ucygNCiAgICBzZXJpZXMgPSBsaXN0KA0KICAgICAgbWFya2VyID0gbGlzdChlbmFibGVkID0gVFJVRSwgcmFkaXVzID0gNCkgDQogICAgKSwNCiAgICBjb2x1bW4gPSBsaXN0KA0KICAgICAgcG9pbnRQYWRkaW5nID0gMC4xLA0KICAgICAgZ3JvdXBQYWRkaW5nID0gMC4wNSwNCiAgICAgIGJvcmRlcldpZHRoID0gMC41DQogICAgKQ0KICApICU+JQ0KICANCiAgDQogIGhjX3RpdGxlKHRleHQgPSAiUElCIHZzIEluZmxhw6fDo286IENvbHVuYSBlICgyMDE5LTIwMjQpIikgJT4lDQogIGhjX3N1YnRpdGxlKHRleHQgPSAiUElCIChWYXJpYcOnw6NvIEFudWFsIHZzIElQQ0EiKSAlPiUNCiAgaGNfY3JlZGl0cyhlbmFibGVkID0gVFJVRSwgdGV4dCA9ICJGb250ZTogQmFuY28gQ2VudHJhbCBkbyBCcmFzaWwgKFNHUyA0MzgwIGUgMTM1MjIpIikgJT4lDQogIA0KICANCiAgaGNfcmFuZ2VTZWxlY3RvcihlbmFibGVkID0gVFJVRSkgJT4lDQogIGhjX3Rvb2x0aXAoDQogICAgc2hhcmVkID0gVFJVRSwgDQogICAgaGVhZGVyRm9ybWF0ID0gJzxiPntwb2ludC54OiVZfTwvYj48YnIvPicsIA0KICAgIHBvaW50Rm9ybWF0ID0gJzxzcGFuIHN0eWxlPSJjb2xvcjp7cG9pbnQuY29sb3J9Ij7il488L3NwYW4+IHtzZXJpZXMubmFtZX06IDxiPntwb2ludC55Oi4yZn0lPC9iPjxici8+Jw0KICApICU+JQ0KICBoY19sZWdlbmQoZW5hYmxlZCA9IFRSVUUpDQpgYGANCg0KDQpBIGFuw6FsaXNlIGRvIGNvbXBvcnRhbWVudG8gY29uanVudG8gZG8gUElCIGUgZG8gSVBDQSByZXZlbGEgdW1hIHJlbGHDp8OjbyBkZSBjb3JyZWxhw6fDo28gcG9zaXRpdmEgYmFzdGFudGUgZXZpZGVudGUgYW8gbG9uZ28gZG8gcGVyw61vZG8gcmVjZW50ZS4gUXVhbmRvIGEgZWNvbm9taWEgZXhwZXJpbWVudGEgZmFzZXMgZGUgZXhwYW5zw6NvLCBhIGluZmxhw6fDo28gdGVuZGUgYSBhY29tcGFuaGFyIGVzc2UgbW92aW1lbnRvLCByZWZsZXRpbmRvIG8gdHJhZGljaW9uYWwgdHJhZGUtb2ZmIGVudHJlIGNyZXNjaW1lbnRvIGVjb27DtG1pY28gZSBlc3RhYmlsaWRhZGUgZGUgcHJlw6dvcy4NCg0KTyBleHByZXNzaXZvIGF1bWVudG8gdmVyaWZpY2FkbyBlbnRyZSAyMDIwIGUgMjAyMSBwb2RlIHNlciBjb21wcmVlbmRpZG8gcGVsbyBjb250ZXh0byBkZSByZWN1cGVyYcOnw6NvIGVjb27DtG1pY2EgcMOzcy1wYW5kZW1pYS4gTyBhbm8gZGUgMjAyMCByZWdpc3Ryb3UgdW1hIGNvbnRyYcOnw6NvIGhpc3TDs3JpY2EgZG8gUElCIGVtIGRlY29ycsOqbmNpYSBkYXMgbWVkaWRhcyBkZSByZXN0cmnDp8OjbyBzYW5pdMOhcmlhLCBjcmlhbmRvIHVtYSBiYXNlIGNvbXBhcmF0aXZhIGJhc3RhbnRlIGZhdm9yw6F2ZWwgcGFyYSBvIGFubyBzZWd1aW50ZS4gRW0gMjAyMSwgYSBjb21iaW5hw6fDo28gZGUgcmV0b21hZGEgZGEgZGVtYW5kYSBpbnRlcm5hLCBwb2zDrXRpY2FzIGRlIGVzdMOtbXVsbyBmaXNjYWwgZSBtb25ldMOhcmlvLCBlIHBlcnNpc3RlbnRlcyBnYXJnYWxvcyBuYXMgY2FkZWlhcyBnbG9iYWlzIGRlIHN1cHJpbWVudG9zIGNyaW91IHVtIGFtYmllbnRlIGRlIHN1cGVyYXF1ZWNpbWVudG8gZGEgZWNvbm9taWEuIEVzdGUgY2Vuw6FyaW8gZGUgZGVtYW5kYSByb2J1c3RhIGNvbmZyb250YW5kby1zZSBjb20gb2ZlcnRhIGFpbmRhIHJlc3RyaXRhIGdlcm91IHByZXNzw7VlcyBpbmZsYWNpb27DoXJpYXMgZ2VuZXJhbGl6YWRhcyBlbSBtw7psdGlwbG9zIHNldG9yZXMuDQoNCkEgZmFzZSBkZSBkZXNhY2VsZXJhw6fDo28gc3Vic2VxdWVudGUgcmVmbGV0aXUgb3MgZWZlaXRvcyBkYSBwb2zDrXRpY2EgbW9uZXTDoXJpYSBjb250cmFjaW9uaXN0YSBpbXBsZW1lbnRhZGEgcGVsbyBCYW5jbyBDZW50cmFsLiBPIGNpY2xvIGRlIGFsdGEgZGEgdGF4YSBTZWxpYywgaW5pY2lhZG8gZW0gbWFyw6dvIGRlIDIwMjEsIGdyYWR1YWxtZW50ZSByZXNmcmlvdSBhIGRlbWFuZGEgYWdyZWdhZGEsIHBlcm1pdGluZG8gYSBkZXNpbmZsYcOnw6NvIG9ic2VydmFkYSBhIHBhcnRpciBkZSAyMDIyLiBDb250dWRvLCBlc3NlIHByb2Nlc3NvIGRlIGNvbnRyb2xlIGluZmxhY2lvbsOhcmlvIHRldmUgY29tbyBjb250cmFwYXJ0aWRhIGEgcGVyZGEgZGUgbW9tZW50byBkbyBjcmVzY2ltZW50byBlY29uw7RtaWNvLg0KDQpObyBjZW7DoXJpbyBhdHVhbCwgbyBQSUIgbWFudMOpbS1zZSBlbSBwYXRhbWFyIGluZmVyaW9yIGFvIHZlcmlmaWNhZG8gZW0gMjAyMSwgcG9yw6ltIGNvbSByZWxhdGl2YSBlc3RhYmlsaWRhZGUuIEVzdGEgdHJhamV0w7NyaWEgcmVmbGV0ZSBvIGFtYmllbnRlIGRlIGp1cm9zIGFpbmRhIHJlc3RyaXRpdm9zLCBxdWUgY29udGludWFtIGEgYXR1YXIgY29tbyBmcmVpbyBhbyBjcmVzY2ltZW50bywgZW5xdWFudG8gYSBpbmZsYcOnw6NvIGRlbW9uc3RyYSByZXNpc3TDqm5jaWEgZW0gY29udmVyZ2lyIHBhcmEgbyBjZW50cm8gZGEgbWV0YSwgc2luYWxpemFuZG8gYSBwZXJzaXN0w6puY2lhIGRlIHByZXNzw7VlcyBpbmZsYWNpb27DoXJpYXMgZGUgbmF0dXJlemEgZXN0cnV0dXJhbCBlIGEgY29tcGxleGlkYWRlIGRvIHByb2Nlc3NvIGRlIGFuY29yYWdlbSBkZSBleHBlY3RhdGl2YXMgZW0gdW0gY29udGV4dG8gZGUgY2hvcXVlcyBleHRlcm5vcyByZWNvcnJlbnRlcy4NCg0KIyMgKipDb25sdXPDo28qKg0KDQpBIHRyYWpldMOzcmlhIGRhIGluZmxhw6fDo28gYnJhc2lsZWlyYSwgYW5hbGlzYWRhIGRlc2RlIG8gcGVyw61vZG8gcHLDqS1QbGFubyBSZWFsIGF0w6kgbyBjZW7DoXJpbyBhdHVhbCwgbW9zdHJhIHF1ZSBicmFzaWwgc3VwZXJvdSB1bWEgaGlwZXJpbmZsYcOnw6NvLCBtYXMgY3Jpc2VzIHJlY2VudGVzIChwYW5kZW1pYSBlIGd1ZXJyYSkgcmV2ZWxhcmFtIHF1ZSBvIHBhw61zIHNlZ3VlIHZ1bG5lcsOhdmVsIGEgaW5zdGFiaWxpZGFkZXMsIGVzcGVjaWFsbWVudGUgZW0gY3VzdG9zIGRlIGFsaW1lbnRvcyBlIGVuZXJnaWEuDQoNCkEgcmVzcG9zdGEgZGEgcG9sw610aWNhIG1vbmV0w6FyaWEsIGF0cmF2w6lzIGRlIHVtIGNpY2xvIGNvbnRyYWNpb25pc3RhIHJvYnVzdG8gZGEgdGF4YSBTZWxpYywgcHJvdm91IHNlciBlZmljYXogZW0gbW9kZXJhciBhIGRlbWFuZGEgZSBpbmR1emlyIGEgZGVzaW5mbGHDp8OjbyBhIHBhcnRpciBkb3MgcGljb3MgZGUgMjAyMi4gTm8gZW50YW50bywgZXNzYSBlc3RhYmlsaXphw6fDo28gbsOjbyBvY29ycmV1IHNlbSBjdXN0b3MuIEEgYW7DoWxpc2UgY29uanVudGEgZG8gSVBDQSBlIGRvIFBJQiBldmlkZW5jaWEgbyBjbGFybyB0cmFkZS1vZmYgZW50cmUgbyBjb250cm9sZSBkZSBwcmXDp29zIGUgbyBjcmVzY2ltZW50byBlY29uw7RtaWNvcy4NCg0KTyBkZXNhZmlvIHByaW5jaXBhbCwgcG9ydGFudG8sIG7Do28gw6kgYXBlbmFzIHJlYWdpciBhIGNyaXNlcywgbWFzIHJlc29sdmVyIHByb2JsZW1hcyBmaXNjYWlzIGUgZXN0cnV0dXJhaXMgY3LDtG5pY29zIHF1ZSBtYW50w6ptIGEgaW5mbGHDp8OjbyBicmFzaWxlaXJhIHBlcnNpc3RlbnRlbWVudGUgYWNpbWEgZGFzIGVjb25vbWlhcyBkZXNlbnZvbHZpZGFzLg0KDQojIyAqKlJlZmVyw6puY2lhcyoqDQoNCi0gQkFOQ08gQ0VOVFJBTCBETyBCUkFTSUwuIFPDqXJpZXMgdGVtcG9yYWlzIGRvIFNpc3RlbWEgR2VyZW5jaWFkb3IgZGUgU8OpcmllcyBUZW1wb3JhaXMuIEJyYXPDrWxpYSwgREY6IEJDQiwgMjAyNC4gRGlzcG9uw612ZWwgZW06IDxodHRwczovL3d3dzMuYmNiLmdvdi5ici9zZ3NwdWIvbG9jYWxpemFyc2VyaWVzL2xvY2FsaXphclNlcmllcy5kbz9tZXRob2Q9cHJlcGFyYXJUZWxhTG9jYWxpemFyU2VyaWVzPi4gQWNlc3NvIGVtOiAyMSBvdXQuIDIwMjUuDQoNCi0gQkFOQ08gQ0VOVFJBTCBETyBCUkFTSUwuIFRheGEgZGUgY8OibWJpbyAtIFIkIC8gVVMkIC0gY29tZXJjaWFsIC0gY29tcHJhIC0gbcOpZGlhIG1lbnNhbC4gU8OpcmllIFBBTl9UQ19NLiBCcmFzw61saWEsIERGOiBCQ0IsIDIwMjQuIERpc3BvbsOtdmVsIGVtOiA8aHR0cDovL3d3dy5pcGVhZGF0YS5nb3YuYnI+LiBBY2Vzc28gZW06IDIxIG91dC4gMjAyNS4NCg0KLSBCQU5DTyBNVU5ESUFMLiDDjW5kaWNlIGRlIHByZcOnb3MgZGUgZmVydGlsaXphbnRlcyAoMjAxMD0xMDApLiBTw6lyaWUgQk1fRkVSVC4gV2FzaGluZ3RvbiwgRC5DLjogQmFuY28gTXVuZGlhbCwgMjAyNC4gRGlzcG9uw612ZWwgZW06IDxodHRwOi8vd3d3LmlwZWFkYXRhLmdvdi5icj4uIEFjZXNzbyBlbTogMjEgb3V0LiAyMDI1Lg0KDQotIEJFUk5BUkRPLCBMLiBpcGVhZGF0YXI6IEFuIFIgQVBJIHRvIElwZWFEYXRhLiBbU29mdHdhcmVdLCAyMDE5LiBEaXNwb27DrXZlbCBlbTogPGh0dHBzOi8vZ2l0aHViLmNvbS9pcGVhL2lwZWFkYXRhcj4uIEFjZXNzbyBlbTogMjEgb3V0LiAyMDI1Lg0KDQotIENFTlRSTyBERSBFU1RVRE9TIEFWQU7Dh0FET1MgRU0gRUNPTk9NSUEgQVBMSUNBREEuIEluZmxhw6fDo28gZG9zIGFsaW1lbnRvcyBlIG9zIGVzdG9xdWVzIHJlZ3VsYWRvcmVzLiBQaXJhY2ljYWJhOiBDZXBlYSwgMjAyNC4gRGlzcG9uw612ZWwgZW06IDxodHRwczovL3d3dy5jZXBlYS5vcmcuYnIvYnIvb3Bpbmlhby1jZXBlYS9pbmZsYWNhby1kb3MtYWxpbWVudG9zLWUtb3MtZXN0b3F1ZXMtcmVndWxhZG9yZXMuYXNweD4uIEFjZXNzbyBlbTogMjEgb3V0LiAyMDI1Lg0KDQotIElOU1RJVFVUTyBCUkFTSUxFSVJPIERFIEdFT0dSQUZJQSBFIEVTVEFUw41TVElDQS4gSVBDQTogVmFyaWHDp8OjbyBhY3VtdWxhZGEgZW0gMTIgbWVzZXMgKEFsaW1lbnRhw6fDo28gZSBiZWJpZGFzKS4gU8OpcmllIFBSRUNPUzEyX0lQQ0FBTEkxMi4gUmlvIGRlIEphbmVpcm86IElCR0UsIDIwMjQuIERpc3BvbsOtdmVsIGVtOiA8aHR0cDovL3d3dy5pcGVhZGF0YS5nb3YuYnI+LiBBY2Vzc28gZW06IDIxIG91dC4gMjAyNS4NCg0KLSBJTlNUSVRVVE8gREUgUEVTUVVJU0EgRUNPTsOUTUlDQSBBUExJQ0FEQS4gSXBlYWRhdGE6IEJhbmNvIGRlIGRhZG9zIG1hY3JvZWNvbsO0bWljb3MuIEJyYXPDrWxpYSwgREY6IElwZWEsIDIwMjQuIERpc3BvbsOtdmVsIGVtOiA8aHR0cDovL3d3dy5pcGVhZGF0YS5nb3YuYnI+LiBBY2Vzc28gZW06IDIxIG91dC4gMjAyNS4NCg0KLSBLVU5TVCwgSi4gaGlnaGNoYXJ0ZXI6IEEgV3JhcHBlciBmb3IgdGhlICdIaWdoY2hhcnRzJyBMaWJyYXJ5KiouIFtTb2Z0d2FyZV0sIDIwMjIuIERpc3BvbsOtdmVsIGVtOiA8aHR0cHM6Ly9qa3Vuc3QuY29tL2hpZ2hjaGFydGVyLz4uIEFjZXNzbyBlbTogMjEgb3V0LiAyMDI1Lg0KDQotIFIgQ09SRSBURUFNLiBSOiBBIGxhbmd1YWdlIGFuZCBlbnZpcm9ubWVudCBmb3Igc3RhdGlzdGljYWwgY29tcHV0aW5nKiouIFZpZW5uYSwgQXVzdHJpYTogUiBGb3VuZGF0aW9uIGZvciBTdGF0aXN0aWNhbCBDb21wdXRpbmcsIDIwMjQuIERpc3BvbsOtdmVsIGVtOiA8aHR0cHM6Ly93d3cuUi1wcm9qZWN0Lm9yZy8+LiBBY2Vzc28gZW06IDIxIG91dC4gMjAyNS4NCg0KLSBXSUNLSEFNLCBILiBldCBhbC4gZHBseXI6IEEgR3JhbW1hciBvZiBEYXRhIE1hbmlwdWxhdGlvbi4gW1NvZnR3YXJlXSwgMjAyNC4gRGlzcG9uw612ZWwgZW06IDxodHRwczovL2RwbHlyLnRpZHl2ZXJzZS5vcmcvPi4gQWNlc3NvIGVtOiAyMSBvdXQuIDIwMjUuDQoNCi0gV0lDS0hBTSwgSC4gZXQgYWwuIHRpZHlyOiBUaWR5IE1lc3N5IERhdGEuIFtTb2Z0d2FyZV0sIDIwMjQuIERpc3BvbsOtdmVsIGVtOiA8aHR0cHM6Ly90aWR5ci50aWR5dmVyc2Uub3JnLz4uIEFjZXNzbyBlbTogMjEgb3V0LiAyMDI1LjI1DQoNCg==