Análise das Expectativas de Câmbio e Impactos nas Decisões da Selic

Este relatório tem como objetivo analisar como as expectativas de câmbio influenciam as decisões de política monetária do Banco Central do Brasil (Bacen), especialmente em relação à taxa Selic. A variação do dólar impacta diretamente a inflação, o fluxo de capitais, o endividamento público e o comportamento dos investidores, fatores essenciais para as decisões do Copom. Serão abordados os principais elementos que conectam o câmbio à política monetária, fluxos de capital, dívida pública, CDS e preços das commodities, destacando como suas oscilações afetam o controle inflacionário e o crescimento econômico.

Selic e Câmbio

As projeções para o câmbio são fundamentais para compreender a dinâmica entre o dólar e as decisões do Comitê de Política Monetária (Copom). O dólar funciona como um termômetro global de liquidez e risco, influenciando fluxos de capitais, comércio internacional e preços domésticos. Sua valorização ou depreciação repercute diretamente no IPCA, nos custos de importações e insumos industriais e, portanto, nas decisões de política monetária.

Entre 2018 e 2022, essa relação ficou particularmente evidente. Nesse período, o dólar subiu de aproximadamente R$ 3,40 para R$ 5,16 — uma depreciação de cerca de 52% do real — enquanto a Selic caiu de 6,50% ao ano (2018) para o piso histórico de 2,00% em 2020, antes de voltar a subir fortemente para 13,75% em 2022. Essa sequência ilustra os dois vetores de causalidade entre câmbio e juros.

Quando o dólar sobe, o real se desvaloriza. A desvalorização cambial encarece importados, combustíveis e matérias-primas, pressionando a inflação via repasse cambial. Diante desse cenário, o Banco Central tende a elevar a Selic para conter expectativas inflacionárias e atrair fluxos externos, fortalecendo o real. Foi exatamente o que ocorreu entre 2021 e 2022: com o dólar ainda acima de R$ 5, o Banco central iniciou um ciclo de alta de 1.175 pontos-base na Selic, revertendo o movimento anterior de queda.

Quando o câmbio cai, o real se valoriza. Em momentos de valorização do real, o efeito é o oposto. Produtos importados ficam mais baratos, a inflação tende a ceder, e o Banco Central ganha espaço para reduzir a Selic. Entre 2018 e meados de 2019, por exemplo, o câmbio permaneceu relativamente estável, e a inflação abaixo da meta permitiu cortes graduais na taxa básica de 6,50% para 5,00%, sinalizando um ambiente de alívio cambial e monetário.

Esses movimentos reforçam a importância de o Banco Central acompanhar de perto as projeções para o câmbio e o diferencial de juros entre Brasil e Estados Unidos. Quando o dólar se valoriza e pressiona a inflação por meio do encarecimento de importados, o Banco Central tende a adotar uma política monetária mais cautelosa, evitando cortes prematuros da Selic e priorizando a estabilidade de preços. Por outro lado, quando o real se fortalece e o risco externo diminui, há maior espaço para flexibilização da taxa de juros, já que a valorização cambial contribui para conter a inflação e reduzir o custo de importação.

Assim, a interação entre Selic e câmbio atua como um dos principais mecanismos de equilíbrio da economia brasileira, conectando o cenário externo via diferencial de juros e fluxo de capitais às decisões internas de política monetária e à trajetória esperada da inflação.

Investimentos Estrangeiros e Variação Cambial

Os investimentos diretos estrangeiros (IDP) são uma das principais fontes de entrada de dólares no Brasil e influenciam diretamente a taxa de câmbio e as decisões de política monetária. Quando os fluxos aumentam, há valorização do real; quando recuam, o câmbio se deprecia, elevando a inflação e restringindo o espaço para cortes da Selic.

Segundo dados do Banco Central, o IDP médio mensal foi de US$ 4,5 bilhões entre 2018 e 2019, mas caiu para US$ 1,7 bilhão em abril de 2020, quando o dólar subiu de R$ 4,00 para R$ 5,60. Com a retomada global e o diferencial de juros favorável, o fluxo voltou a crescer em 2022, superando US$ 7 bilhões mensais e contribuindo para a valorização do real.

Essa relação mostra que entradas de capital aliviam pressões inflacionárias e permitem juros menores, enquanto saídas forçam o BC a elevar a Selic para conter a desvalorização cambial. O desafio é equilibrar atração de capital e crescimento interno, mantendo a confiança dos investidores sem comprometer o crédito e a atividade econômica.

Em conclusão, o comportamento dos fluxos de investimento estrangeiro é um termômetro da credibilidade macroeconômica do país. Ele conecta o cenário internacional à política monetária doméstica e ajuda a explicar como as projeções para o dólar condicionam as decisões sobre a Selic, tornando-se um dos canais mais sensíveis da economia brasileira.

Dívida Pública, Inflação e Selic

A trajetória da dívida pública brasileira exerce influência direta sobre as decisões de política monetária e o comportamento da inflação. Quando o governo aumenta seu endividamento, há maior necessidade de emissão de títulos públicos para financiar despesas, o que eleva a oferta de papéis e pressiona os juros de mercado.

Além disso, um crescimento persistente da dívida tende a aumentar a percepção de risco fiscal, reduzindo a confiança dos investidores e pressionando o câmbio — efeito que, por sua vez, pode gerar inflação via desvalorização do real.

De acordo com dados do Banco Central do Brasil, a Dívida Líquida do Setor Público (DLSP) passou de aproximadamente R$195 bilhões em janeiro de 2000 para mais de R$6 trilhões em 2024, o que representa uma alta superior a 2.900% no período.Essa expansão foi acompanhada por fortes oscilações na taxa Selic e na inflação, refletindo os esforços do Banco Central para manter a estabilidade de preços em um ambiente de dívida crescente.

Esses movimentos evidenciam como dívida, inflação e Selic estão intrinsecamente conectadas.Quando a dívida cresce e a confiança fiscal se deteriora, o prêmio de risco exigido pelos investidores aumenta, elevando os juros longos e pressionando a inflação via câmbio. Para conter esses efeitos, o Banco Central precisa elevar a Selic, o que encarece o crédito, freia o consumo e reduz o investimento interno.

Por outro lado, em períodos de consolidação fiscal e inflação sob controle, a queda da dívida em proporção ao PIB permite uma política monetária mais flexível. O resultado é um ambiente de juros menores, câmbio mais estável e menor pressão inflacionária, criando condições favoráveis para o crescimento econômico sustentável.

CDS, Risco-País e Influência na Selic

O Credit Default Swap (CDS) é um derivativo que mede o custo de se proteger contra o risco de calote da dívida soberana. Em outras palavras, ele funciona como um seguro contra o risco de crédito de um país. Quanto maior o spread do CDS, maior é a percepção de risco fiscal e econômico e, consequentemente, menor é o apetite de investidores estrangeiros para manter capital no país.

No caso do Brasil, o comportamento do CDS de 5 anos, medido em pontos-base (bps), mostra uma correlação clara com a política monetária e o câmbio

Em 2008, no auge da crise financeira global, o CDS Brasil ultrapassou 400 bps, refletindo forte aversão ao risco e desvalorização do real (USD/BRL chegou a R$ 2,40). Nesse contexto, a Selic estava em 13,75%, e o Banco Central manteve juros elevados para evitar fuga de capitais e conter a inflação.

Já em 2019, com inflação controlada, contas públicas relativamente estáveis e CDS abaixo de 100 bps, o BC conseguiu reduzir a Selic para 5,00%, o menor nível da história até então. Durante a pandemia de 2020, o CDS voltou a subir fortemente, atingindo cerca de 330 bps, refletindo incerteza fiscal e política. Mesmo com o real ultrapassando R$ 5,60 por dólar, o BC reduziu temporariamente a Selic para 2,00%, diante da recessão global, mas precisou reverter o ciclo em 2021, elevando os juros até 13,75% em resposta à deterioração do risco país e à escalada inflacionária. Em 2025, o CDS se estabilizou na faixa de 130–150 bps, ainda acima do nível pré-pandemia, mostrando que o mercado mantém cautela com o quadro fiscal brasileiro.

Esses dados evidenciam que o CDS funciona como um termômetro da credibilidade fiscal e da confiança internacional. Quando o risco país sobe, os investidores exigem maior retorno para financiar o governo, o que pressiona a curva de juros e dificulta cortes na Selic. Por outro lado, quando o CDS recua, indicando menor percepção de risco, o Banco Central ganha espaço para reduzir os juros sem comprometer a estabilidade cambial.Em síntese, o CDS, o câmbio e a Selic formam um triângulo de interdependência na economia brasileira:

CDS alto → saída de capital → dólar sobe → inflação pressiona → Selic sobe.

CDS baixo → entrada de capital → real se valoriza → inflação recua → Selic pode cair.

Assim, o risco país, captado pelo CDS, é não apenas um indicador financeiro, mas também um instrumento crucial para antecipar os movimentos de política monetária, influenciando diretamente as projeções para o dólar e as decisões do Copom.

Commodities e Influência na Valorização do Real

As commodities desempenham papel central na economia brasileira, representando uma parcela expressiva das exportações nacionais. Em 2024, os principais produtos de exportação foram combustíveis minerais, óleos e derivados, oleaginosas (como soja) e minérios — somando grandes volumes nas receitas externas do país.

Dados da série “Exports: Commodities for Brazil” indicam que o valor das exportações de commodities brasileiras em 2024 ultrapassou US$ 337 bilhões, reforçando o peso desse setor nas transações externas.

Essa forte dependência faz com que o Brasil seja frequentemente classificado como uma “commodity currency” — ou seja, uma moeda com sensibilidade aos preços internacionais das matérias-primas. Estudos empíricos mostram correlação positiva entre os índices de commodities e a taxa de câmbio BRL/USD: quando os preços das commodities sobem, o real tende a se valorizar; quando caem, sofrem desvalorização.

Valorização das commodities → aumento das receitas de exportação Altas nos preços de soja, minério, petróleo e outras matérias-primas elevam a arrecadação cambial. Isso gera maior oferta de dólares no mercado doméstico, o que tende a valorizar o real. Com o real mais forte, o câmbio contribui para aliviar a pressão inflacionária interna.

Desvalorização das commodities → contração dos fluxos em dólares Quando os preços das commodities recuam, a entrada de dólares se reduz. Pouco volume de divisas externas e menor receita cambial pressionam o real para baixo, o que pode acelerar o movimento de desvalorização cambial.

Os impactos na inflação e na política monetária são evidentes, pois a desvalorização do real eleva o custo de importados, combustíveis e insumos industriais, empurrando a inflação para cima. Esse efeito pressiona o Banco Central a ajustar a Selic para cima como resposta para conter o repasse cambial aos preços domésticos.

Esse tópico de commodities se integra diretamente à dinâmica de projeções do dólar e decisões de Selic porque demonstra um canal real (externo) de influência sobre o câmbio. O valor do real não é moldado apenas por juros ou fluxo financeiro, mas também pelas forças de preços globais de bens primários.

Assim, em cenários de alta nos preços de commodities, o real pode se valorizar, diminuindo a necessidade do Banco Central de recorrer a elevações drásticas da Selic. Por outro lado, em ambientes de queda global nas commodities, o risco cambial pode se acelerar, forçando o BC a manter juros elevados ou postergar cortes, mesmo que os dados domésticos permitam flexibilização.

Conclusão

A análise integrada entre câmbio, taxa Selic, fluxos de capitais, dívida pública, risco-país (CDS) e mercado de commodities evidencia a natureza multifatorial da política monetária brasileira. Cada um desses elementos interage de forma dinâmica, gerando efeitos cruzados que condicionam tanto o comportamento da inflação quanto o espaço de atuação do Banco Central.

As projeções para o dólar são o elo central dessa engrenagem. A valorização da moeda norte-americana tende a encarecer importados, elevar o IPCA e exigir juros mais altos para ancorar expectativas e conter a saída de capital estrangeiro. Já a apreciação do real, impulsionada por fluxos externos, melhora fiscal temporária ou alta nos preços das commodities, reduz pressões inflacionárias e cria espaço para cortes graduais da Selic.

Ao mesmo tempo, a dívida pública e o CDS funcionam como indicadores de credibilidade fiscal e percepção de risco. Um aumento do endividamento ou do prêmio de risco eleva a desconfiança dos investidores, pressiona o câmbio e obriga o Banco Central a manter uma postura mais restritiva. Por outro lado, um cenário de melhora fiscal, estabilidade política e termos de troca favoráveis fortalece o real e permite maior flexibilidade na condução da política monetária.

O mercado de commodities atua como canal real de transmissão: altas de preços fortalecem a balança comercial e sustentam a valorização cambial, enquanto quedas reduzem a entrada de dólares e reativam pressões sobre o câmbio e os juros. Assim, a política monetária brasileira precisa constantemente equilibrar variáveis internas (inflação, atividade, dívida) e externas (Fed Funds, preços de commodities, fluxo de capitais) para preservar a estabilidade macroeconômica.

Em síntese, o relacionamento entre o câmbio e a Selic é o núcleo da política econômica no Brasil. Ele traduz a resposta do país às condições globais de liquidez, à confiança fiscal doméstica e ao apetite de risco dos investidores. Manter esse equilíbrio exige coordenação entre política monetária e fiscal, previsibilidade institucional e vigilância constante sobre o ambiente externo. É essa interação entre juros, câmbio e credibilidade que definirá a capacidade do Brasil de sustentar crescimento estável, inflação controlada e competitividade internacional nos próximos anos.

Referências

BTG PACTUAL. Conversão do real em dólar: qual a influência da Selic no câmbio brasileiro. Disponível em: http://content.btgpactual.com/blog/empresas/conversao-do-real-em-dolar-qual-a-influencia-da-selic-no-cambio-brasileiro. Acesso em: 06 de outubro de 2025.

BRAZABANK. Taxa Selic e câmbio. Disponível em: https://www.brazabank.com.br/conteudo/taxa-selic-cambio/. Acesso em: 06 de outubro de 2025.

CLUBE DOS POUPADORES. Selic, dólar e inflação. Disponível em: https://clubedospoupadores.com/selic/dolar-inflacao. Acesso em: 06 de outubro de 2025.

BRAZABANK. Selic a 15 %: Fed corta juros — impactos. Disponível em: https://www.brazabank.com.br/conteudo/selic-15-fed-corta-juros-impactos/. Acesso em: 06 de outubro de 2025.

INFOMONEY. Taxa de câmbio. Disponível em: https://www.infomoney.com.br/guias/taxa-de-cambio/. Acesso em: 06 de outubro de 2025.

CNN BRASIL. Sem corte de gastos, economistas dizem que juros altos pioram crise fiscal. Disponível em: https://www.cnnbrasil.com.br/economia/macroeconomia/sem-corte-de-gastos-economistas-dizem-que-juros-altos-pioram-crise-fiscal/. Acesso em: 06 de outubro de 2025.

AGÊNCIA BRASIL. Dívida pública sobe 12,2 % em 2024 e supera R$ 7,3 trilhões. Disponível em: https://agenciabrasil.ebc.com.br/economia/noticia/2025-02/divida-publica-sobe-122-em-2024-e-supera-r-73-trilhoes. Acesso em: 06 de outubro de 2025.

GOVERNO DO BRASIL. Brasil registra superávit de US$ 6,1 bi em agosto e recorde de exportações nos primeiros oito meses do ano. Disponível em: https://www.gov.br/secom/pt-br/assuntos/noticias/2025/09/brasil-registra-superavit-de-us-6-1-bi-em-agosto-e-recorde-de-exportacoes-nos-primeiros-oito-meses-do-ano. Acesso em: 06 de outubro de 2025.

INVESTALK. O que é risco-país e como funciona o credit default swap (CDS). Disponível em: https://investalk.bb.com.br/noticias/economia/o-que-e-risco-pais-e-como-funciona-o-credit-default-swap-cds. Acesso em: 06 de outubro de 2025.

MAIS RETORNO. CDS Brasil. Disponível em: https://maisretorno.com/portal/termos/c/cds-brasil. Acesso em: 06 de outubro de 2025.

BANCO CENTRAL DO BRASIL. Localizar séries do SGS. Disponível em: https://www3.bcb.gov.br/sgspub/localizarseries/localizarSeries.do?method=prepararTelaLocalizarSeries Acesso em: 06 de outubro de 2025.

IPEADATA. Séries do Ipeadata: série ID 38389. Disponível em: http://ipeadata.gov.br/exibeserie.aspx?serid=38389. Acesso em: 06 de outubro de 2025.

INVESTING.COM. Brasil — CDS de 5 anos (USD): dados históricos. Disponível em: https://br.investing.com/rates-bonds/brazil-cds-5-years-usd-historical-data. Acesso em: 06 de outubro de 2025.

BANCO CENTRAL / ECONOMIA (Brasil). Balança comercial e commodities — série mensal. Disponível em: https://balanca.economia.gov.br/balanca/IPQ/commodities_mes.html. Acesso em: 06 de outubro de 2025.

FEDERAL RESERVE BANK OF ST. LOUIS (FRED). Série DEXBZUS — câmbio real/dólar. Disponível em: https://fred.stlouisfed.org/series/DEXBZUS. Acesso em: 06 de outubro de 2025.

BRASIL. ComexVis — Portal ComexStat. Disponível em: https://comexstat.mdic.gov.br/pt/comex-vis. Acesso em: 06 de outubro de 2025.

BLANCHARD, Olivier. Macroeconomia. 7. ed. São Paulo: Pearson, 2017

LS0tCnRpdGxlOiAgIlJlbGF0w7NyaW8gZGUgUG9sw610aWNhIE1vbmV0w6FyaWEgZSBDw6JtYmlvIgphdXRob3I6ICJEYXZpIE9saXZlaXJhKFRyYWluZWUpIGUgTHVpeiBSZXplbmRlKFRyYWluZWUpICIKZGF0ZTogIjA3LTEwLTIwMjUiCm91dHB1dDoKICBodG1sX2RvY3VtZW50OgogICAgdG9jOiB0cnVlCiAgICB0b2NfZmxvYXQ6IHRydWUKICAgIHRoZW1lOiBsdW1lbgogICAgaGlnaGxpZ2h0OiB0YW5nbwogICAgY29kZV9mb2xkaW5nOiBzaG93CiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlIAotLS0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9CmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gRkFMU0UsIG1lc3NhZ2UgPSBGQUxTRSwgd2FybmluZyA9IEZBTFNFKQoKIyBDYXJyZWdhciBwYWNvdGVzCmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KHBsb3RseSkKbGlicmFyeShoaWdoY2hhcnRlcikKbGlicmFyeShmcmVkcikKbGlicmFyeShyYmNiKQpsaWJyYXJ5KHF1YW50bW9kKQpsaWJyYXJ5KGx1YnJpZGF0ZSkKbGlicmFyeShnZ3Bsb3QyKQpsaWJyYXJ5KHRpYmJsZSkKbGlicmFyeShzY2FsZXMpCmxpYnJhcnkoaHR0cikKbGlicmFyeShqc29ubGl0ZSkKbGlicmFyeShzdHJpbmdyKQpsaWJyYXJ5KHRpZHlyKQpsaWJyYXJ5KHBkZnRvb2xzKQoKCmBgYAoKCgojIEFuw6FsaXNlIGRhcyBFeHBlY3RhdGl2YXMgZGUgQ8OibWJpbyBlIEltcGFjdG9zIG5hcyBEZWNpc8O1ZXMgZGEgU2VsaWMKRXN0ZSByZWxhdMOzcmlvIHRlbSBjb21vIG9iamV0aXZvIGFuYWxpc2FyIGNvbW8gYXMgZXhwZWN0YXRpdmFzIGRlIGPDom1iaW8gaW5mbHVlbmNpYW0gYXMgZGVjaXPDtWVzIGRlIHBvbMOtdGljYSBtb25ldMOhcmlhIGRvIEJhbmNvIENlbnRyYWwgZG8gQnJhc2lsIChCYWNlbiksIGVzcGVjaWFsbWVudGUgZW0gcmVsYcOnw6NvIMOgIHRheGEgU2VsaWMuIEEgdmFyaWHDp8OjbyBkbyBkw7NsYXIgaW1wYWN0YSBkaXJldGFtZW50ZSBhIGluZmxhw6fDo28sIG8gZmx1eG8gZGUgY2FwaXRhaXMsIG8gZW5kaXZpZGFtZW50byBww7pibGljbyBlIG8gY29tcG9ydGFtZW50byBkb3MgaW52ZXN0aWRvcmVzLCBmYXRvcmVzIGVzc2VuY2lhaXMgcGFyYSBhcyBkZWNpc8O1ZXMgZG8gQ29wb20uIFNlcsOjbyBhYm9yZGFkb3Mgb3MgcHJpbmNpcGFpcyBlbGVtZW50b3MgcXVlIGNvbmVjdGFtIG8gY8OibWJpbyDDoCBwb2zDrXRpY2EgbW9uZXTDoXJpYSwgZmx1eG9zIGRlIGNhcGl0YWwsIGTDrXZpZGEgcMO6YmxpY2EsIENEUyBlIHByZcOnb3MgZGFzIGNvbW1vZGl0aWVzLCBkZXN0YWNhbmRvIGNvbW8gc3VhcyBvc2NpbGHDp8O1ZXMgYWZldGFtIG8gY29udHJvbGUgaW5mbGFjaW9uw6FyaW8gZSBvIGNyZXNjaW1lbnRvIGVjb27DtG1pY28uCgoKIyMgKipTZWxpYyBlIEPDom1iaW8qKgoKYGBge3J9CmxpYnJhcnkocmVhZHIpCmxpYnJhcnkoZHBseXIpCmxpYnJhcnkobHVicmlkYXRlKQpsaWJyYXJ5KGhpZ2hjaGFydGVyKQpsaWJyYXJ5KHN0cmluZ3IpCgojIC0tLSBDb3JlcyBwYXJhIHJlZmVyw6puY2lhIC0tLQpDT1JfQ0FNQklPIDwtICIjMDIwMjNDIgpDT1JfU0VMSUMgPC0gIiNGRkQ3MDAiCgojIC0tLSBMZXIgZGFkb3MgZG8gZMOzbGFyIC0tLQpkb2xhcl9yYXcgPC0gcmVhZF9kZWxpbSgiRG9sYXIgMjAtMjUuY3N2IiwKICAgICAgICAgICAgICAgICAgICAgICAgZGVsaW0gPSAiOyIsCiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZSA9IGxvY2FsZShlbmNvZGluZyA9ICJsYXRpbjEiKSkKCm5hbWVzKGRvbGFyX3JhdykgPC0gdHJpbXdzKG5hbWVzKGRvbGFyX3JhdykpCgpkb2xhcl9wcm9jZXNzZWQgPC0gZG9sYXJfcmF3ICU+JQogIHJlbmFtZSh0YXhhX2NhbWJpb19kb2xhciA9IGBUYXhhIGRlIGNhbWJpb2ApICU+JQogIG11dGF0ZSgKICAgIHRheGFfY2FtYmlvX2RvbGFyID0gZ3N1YigiLCIsICIuIiwgdHJpbXdzKHRheGFfY2FtYmlvX2RvbGFyKSksCiAgICB0YXhhX2NhbWJpb19kb2xhciA9IGlmZWxzZSh0YXhhX2NhbWJpb19kb2xhciAlaW4lIGMoIiIsICItIiwgIk5EIiksIE5BLCB0YXhhX2NhbWJpb19kb2xhciksCiAgICB0YXhhX2NhbWJpb19kb2xhciA9IGFzLm51bWVyaWModGF4YV9jYW1iaW9fZG9sYXIpLAogICAgRGF0YSA9IHBhc3RlMChEYXRhLCAiLjAxIiksCiAgICBEYXRhID0geW1kKERhdGEpLAogICAgRGF0YSA9IGZsb29yX2RhdGUoRGF0YSwgIm1vbnRoIikKICApICU+JQogIGZpbHRlcighaXMubmEodGF4YV9jYW1iaW9fZG9sYXIpICYgdGF4YV9jYW1iaW9fZG9sYXIgPj0gMSkgJT4lCiAgbXV0YXRlKHRheGFfY2FtYmlvX2RvbGFyID0gcm91bmQodGF4YV9jYW1iaW9fZG9sYXIsIDIpKQoKIyAtLS0gTGVyIGRhZG9zIGRhIFNlbGljIC0tLQpzZWxpY19yYXcgPC0gcmVhZF9kZWxpbSgiVGF4IFNlbGljIDIwLTI1LmNzdiIsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGltID0gIjsiLAogICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGUgPSBsb2NhbGUoZW5jb2RpbmcgPSAibGF0aW4xIikpCgpuYW1lcyhzZWxpY19yYXcpIDwtIHRyaW13cyhuYW1lcyhzZWxpY19yYXcpKQoKc2VsaWNfcHJvY2Vzc2VkIDwtIHNlbGljX3JhdyAlPiUKICByZW5hbWUodGF4YV9zZWxpYyA9IGBUYXhhIHNlbGljYCkgJT4lCiAgbXV0YXRlKAogICAgdGF4YV9zZWxpYyA9IGdzdWIoIiwiLCAiLiIsIHRyaW13cyh0YXhhX3NlbGljKSksCiAgICB0YXhhX3NlbGljID0gaWZlbHNlKHRheGFfc2VsaWMgJWluJSBjKCIiLCAiLSIsICJORCIpLCBOQSwgdGF4YV9zZWxpYyksCiAgICB0YXhhX3NlbGljID0gYXMubnVtZXJpYyh0YXhhX3NlbGljKSwKICAgIERhdGEgPSBwYXN0ZTAoIjAxLyIsIERhdGEpLAogICAgRGF0YSA9IGRteShEYXRhLCBsb2NhbGUgPSAicHRfQlIudXRmOCIpLAogICAgRGF0YSA9IGZsb29yX2RhdGUoRGF0YSwgIm1vbnRoIiksCiAgICB0YXhhX3NlbGljID0gcm91bmQodGF4YV9zZWxpYywgMikKICApCgojIC0tLSBKdW50YXIgZGFkb3MgLS0tCm1hY3JvX2RhdGFfY29tYmluZWQgPC0gaW5uZXJfam9pbihkb2xhcl9wcm9jZXNzZWQsIHNlbGljX3Byb2Nlc3NlZCwgYnkgPSAiRGF0YSIpCgojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIyAtLS0gQ1JJQcOHw4NPIERPIEdSw4FGSUNPIENPTSBMRUdFTkRBIE5BIEJBU0UgLS0tCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpoaWdoY2hhcnQodHlwZSA9ICJzdG9jayIpICU+JQogIGhjX2FkZF9zZXJpZXMoCiAgICBkYXRhID0gbWFjcm9fZGF0YV9jb21iaW5lZCwKICAgIHR5cGUgPSAibGluZSIsCiAgICBoY2Flcyh4ID0gRGF0YSwgeSA9IHRheGFfY2FtYmlvX2RvbGFyKSwKICAgIG5hbWUgPSAiVGF4YSBkZSBDw6JtYmlvIChSJCkiLAogICAgeUF4aXMgPSAwLAogICAgY29sb3IgPSBDT1JfQ0FNQklPCiAgKSAlPiUKICBoY19hZGRfc2VyaWVzKAogICAgZGF0YSA9IG1hY3JvX2RhdGFfY29tYmluZWQsCiAgICB0eXBlID0gImxpbmUiLAogICAgaGNhZXMoeCA9IERhdGEsIHkgPSB0YXhhX3NlbGljKSwKICAgIG5hbWUgPSAiVGF4YSBTZWxpYyAoJSkiLAogICAgeUF4aXMgPSAxLAogICAgY29sb3IgPSBDT1JfU0VMSUMKICApICU+JQogIGhjX3lBeGlzX211bHRpcGxlcygKICAgIGxpc3QoCiAgICAgICMgUmVtb3ZlbmRvIG8gdMOtdHVsbyBkbyBFaXhvIFkgcGFyYSBsaW1wZXphCiAgICAgIHRpdGxlID0gbGlzdCh0ZXh0ID0gIiIpLAogICAgICBvcHBvc2l0ZSA9IEZBTFNFLAogICAgICBsYWJlbHMgPSBsaXN0KGZvcm1hdCA9ICJ7dmFsdWU6LjJmfSIpCiAgICApLAogICAgbGlzdCgKICAgICAgIyBSZW1vdmVuZG8gbyB0w610dWxvIGRvIEVpeG8gWSBwYXJhIGxpbXBlemEKICAgICAgdGl0bGUgPSBsaXN0KHRleHQgPSAiIiksCiAgICAgIG9wcG9zaXRlID0gVFJVRSwKICAgICAgbGFiZWxzID0gbGlzdChmb3JtYXQgPSAie3ZhbHVlOi4yZn0lIikKICAgICkKICApICU+JQogIGhjX3RpdGxlKHRleHQgPSAiQ29tcGFyYXRpdm8gVGF4YSBkZSBDw6JtYmlvIGUgU2VsaWMiKSAlPiUKICBoY19zdWJ0aXRsZSh0ZXh0ID0gIkZvbnRlOiBCYW5jbyBDZW50cmFsIGRvIEJyYXNpbCBlIElwZWFEYXRhIikgJT4lCiAgaGNfdG9vbHRpcChzaGFyZWQgPSBUUlVFLCB2YWx1ZURlY2ltYWxzID0gMikgJT4lCiAgIyAtLS0gTVVEQU7Dh0E6IENPTkZJR1VSQcOHw4NPIERBIExFR0VOREEgTkEgQkFTRSAoQk9MSU5IQVMgTk8gRUlYTyBYKSAtLS0KICBoY19sZWdlbmQoCiAgICBlbmFibGVkID0gVFJVRSwKICAgIGFsaWduID0gImNlbnRlciIsCiAgICB2ZXJ0aWNhbEFsaWduID0gImJvdHRvbSIsICMgUG9zacOnw6NvOiBJbmZlcmlvcgogICAgbGF5b3V0ID0gImhvcml6b250YWwiLAogICAgeSA9IDAKICApICU+JQogICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBoY19leHBvcnRpbmcoZW5hYmxlZCA9IFRSVUUpICU+JQogIGhjX2NyZWRpdHMoZW5hYmxlZCA9IFRSVUUsIHRleHQgPSAiRm9udGU6IEJDQiBlIElwZWFEYXRhIHwgR3LDoWZpY286IEVsYWJvcmHDp8OjbyBQcsOzcHJpYSIpCgpgYGAKCkFzIHByb2plw6fDtWVzIHBhcmEgbyBjw6JtYmlvIHPDo28gZnVuZGFtZW50YWlzIHBhcmEgY29tcHJlZW5kZXIgYSBkaW7Dom1pY2EgZW50cmUgbyBkw7NsYXIgZSBhcyBkZWNpc8O1ZXMgZG8gQ29taXTDqiBkZSBQb2zDrXRpY2EgTW9uZXTDoXJpYSAoQ29wb20pLiBPIGTDs2xhciBmdW5jaW9uYSBjb21vIHVtIHRlcm3DtG1ldHJvIGdsb2JhbCBkZSBsaXF1aWRleiBlIHJpc2NvLCBpbmZsdWVuY2lhbmRvIGZsdXhvcyBkZSBjYXBpdGFpcywgY29tw6lyY2lvIGludGVybmFjaW9uYWwgZSBwcmXDp29zIGRvbcOpc3RpY29zLiBTdWEgdmFsb3JpemHDp8OjbyBvdSBkZXByZWNpYcOnw6NvIHJlcGVyY3V0ZSBkaXJldGFtZW50ZSBubyBJUENBLCBub3MgY3VzdG9zIGRlIGltcG9ydGHDp8O1ZXMgZSBpbnN1bW9zIGluZHVzdHJpYWlzIGUsIHBvcnRhbnRvLCBuYXMgZGVjaXPDtWVzIGRlIHBvbMOtdGljYSBtb25ldMOhcmlhLgoKRW50cmUgMjAxOCBlIDIwMjIsIGVzc2EgcmVsYcOnw6NvIGZpY291IHBhcnRpY3VsYXJtZW50ZSBldmlkZW50ZS4gTmVzc2UgcGVyw61vZG8sIG8gZMOzbGFyIHN1Yml1IGRlIGFwcm94aW1hZGFtZW50ZSBSJCAzLDQwIHBhcmEgUiQgNSwxNiDigJQgdW1hIGRlcHJlY2lhw6fDo28gZGUgY2VyY2EgZGUgNTIlIGRvIHJlYWwg4oCUIGVucXVhbnRvIGEgU2VsaWMgY2FpdSBkZSA2LDUwJSBhbyBhbm8gKDIwMTgpIHBhcmEgbyBwaXNvIGhpc3TDs3JpY28gZGUgMiwwMCUgZW0gMjAyMCwgYW50ZXMgZGUgdm9sdGFyIGEgc3ViaXIgZm9ydGVtZW50ZSBwYXJhIDEzLDc1JSBlbSAyMDIyLiBFc3NhIHNlcXXDqm5jaWEgaWx1c3RyYSBvcyBkb2lzIHZldG9yZXMgZGUgY2F1c2FsaWRhZGUgZW50cmUgY8OibWJpbyBlIGp1cm9zLgoKUXVhbmRvIG8gZMOzbGFyIHNvYmUsIG8gcmVhbCBzZSBkZXN2YWxvcml6YS4gQSBkZXN2YWxvcml6YcOnw6NvIGNhbWJpYWwgZW5jYXJlY2UgaW1wb3J0YWRvcywgY29tYnVzdMOtdmVpcyBlIG1hdMOpcmlhcy1wcmltYXMsIHByZXNzaW9uYW5kbyBhIGluZmxhw6fDo28gdmlhIHJlcGFzc2UgY2FtYmlhbC4gRGlhbnRlIGRlc3NlIGNlbsOhcmlvLCBvIEJhbmNvIENlbnRyYWwgdGVuZGUgYSBlbGV2YXIgYSBTZWxpYyBwYXJhIGNvbnRlciBleHBlY3RhdGl2YXMgaW5mbGFjaW9uw6FyaWFzIGUgYXRyYWlyIGZsdXhvcyBleHRlcm5vcywgZm9ydGFsZWNlbmRvIG8gcmVhbC4gRm9pIGV4YXRhbWVudGUgbyBxdWUgb2NvcnJldSBlbnRyZSAyMDIxIGUgMjAyMjogY29tIG8gZMOzbGFyIGFpbmRhIGFjaW1hIGRlIFIkIDUsIG8gQmFuY28gY2VudHJhbCBpbmljaW91IHVtIGNpY2xvIGRlIGFsdGEgZGUgMS4xNzUgcG9udG9zLWJhc2UgbmEgU2VsaWMsIHJldmVydGVuZG8gbyBtb3ZpbWVudG8gYW50ZXJpb3IgZGUgcXVlZGEuCgpRdWFuZG8gbyBjw6JtYmlvIGNhaSwgbyByZWFsIHNlIHZhbG9yaXphLiBFbSBtb21lbnRvcyBkZSB2YWxvcml6YcOnw6NvIGRvIHJlYWwsIG8gZWZlaXRvIMOpIG8gb3Bvc3RvLiBQcm9kdXRvcyBpbXBvcnRhZG9zIGZpY2FtIG1haXMgYmFyYXRvcywgYSBpbmZsYcOnw6NvIHRlbmRlIGEgY2VkZXIsIGUgbyBCYW5jbyBDZW50cmFsIGdhbmhhIGVzcGHDp28gcGFyYSByZWR1emlyIGEgU2VsaWMuCkVudHJlIDIwMTggZSBtZWFkb3MgZGUgMjAxOSwgcG9yIGV4ZW1wbG8sIG8gY8OibWJpbyBwZXJtYW5lY2V1IHJlbGF0aXZhbWVudGUgZXN0w6F2ZWwsIGUgYSBpbmZsYcOnw6NvIGFiYWl4byBkYSBtZXRhIHBlcm1pdGl1IGNvcnRlcyBncmFkdWFpcyBuYSB0YXhhIGLDoXNpY2EgZGUgNiw1MCUgcGFyYSA1LDAwJSwgc2luYWxpemFuZG8gdW0gYW1iaWVudGUgZGUgYWzDrXZpbyBjYW1iaWFsIGUgbW9uZXTDoXJpby4KCkVzc2VzIG1vdmltZW50b3MgcmVmb3LDp2FtIGEgaW1wb3J0w6JuY2lhIGRlIG8gQmFuY28gQ2VudHJhbCBhY29tcGFuaGFyIGRlIHBlcnRvIGFzIHByb2plw6fDtWVzIHBhcmEgbyBjw6JtYmlvIGUgbyBkaWZlcmVuY2lhbCBkZSBqdXJvcyBlbnRyZSBCcmFzaWwgZSBFc3RhZG9zIFVuaWRvcy4KIFF1YW5kbyBvIGTDs2xhciBzZSB2YWxvcml6YSBlIHByZXNzaW9uYSBhIGluZmxhw6fDo28gcG9yIG1laW8gZG8gZW5jYXJlY2ltZW50byBkZSBpbXBvcnRhZG9zLCBvIEJhbmNvIENlbnRyYWwgdGVuZGUgYSBhZG90YXIgdW1hIHBvbMOtdGljYSBtb25ldMOhcmlhIG1haXMgY2F1dGVsb3NhLCBldml0YW5kbyBjb3J0ZXMgcHJlbWF0dXJvcyBkYSBTZWxpYyBlIHByaW9yaXphbmRvIGEgZXN0YWJpbGlkYWRlIGRlIHByZcOnb3MuIFBvciBvdXRybyBsYWRvLCBxdWFuZG8gbyByZWFsIHNlIGZvcnRhbGVjZSBlIG8gcmlzY28gZXh0ZXJubyBkaW1pbnVpLCBow6EgbWFpb3IgZXNwYcOnbyBwYXJhIGZsZXhpYmlsaXphw6fDo28gZGEgdGF4YSBkZSBqdXJvcywgasOhIHF1ZSBhIHZhbG9yaXphw6fDo28gY2FtYmlhbCBjb250cmlidWkgcGFyYSBjb250ZXIgYSBpbmZsYcOnw6NvIGUgcmVkdXppciBvIGN1c3RvIGRlIGltcG9ydGHDp8Ojby4KIApBc3NpbSwgYSBpbnRlcmHDp8OjbyBlbnRyZSBTZWxpYyBlIGPDom1iaW8gYXR1YSBjb21vIHVtIGRvcyBwcmluY2lwYWlzIG1lY2FuaXNtb3MgZGUgZXF1aWzDrWJyaW8gZGEgZWNvbm9taWEgYnJhc2lsZWlyYSwgY29uZWN0YW5kbyBvIGNlbsOhcmlvIGV4dGVybm8gdmlhIGRpZmVyZW5jaWFsIGRlIGp1cm9zIGUgZmx1eG8gZGUgY2FwaXRhaXMgw6BzIGRlY2lzw7VlcyBpbnRlcm5hcyBkZSBwb2zDrXRpY2EgbW9uZXTDoXJpYSBlIMOgIHRyYWpldMOzcmlhIGVzcGVyYWRhIGRhIGluZmxhw6fDo28uCgoKIyMgKipJbnZlc3RpbWVudG9zIEVzdHJhbmdlaXJvcyBlIFZhcmlhw6fDo28gQ2FtYmlhbCoqCgpgYGB7cn0KbGlicmFyeShyZWFkcikKbGlicmFyeShkcGx5cikKbGlicmFyeShoaWdoY2hhcnRlcikKbGlicmFyeShzdHJpbmdyKQpsaWJyYXJ5KGx1YnJpZGF0ZSkKCiMgQ29yZXMgcGFyYSByZWZlcsOqbmNpYQpDT1JfSURQIDwtICIjRkVCNzEyIiAKCiMgMSkgTGVyIG8gYXJxdWl2byBDU1YKaWRwX3JhdyA8LSByZWFkX2RlbGltKAogICJJbnZlc3RpbWVudG9zIEVzdHJhbmdlaXJvcy5jc3YiLAogIGRlbGltID0gIjsiLAogIGNvbF9uYW1lcyA9IGMoIkRhdGEiLCAiSW52ZXN0aW1lbnRvcyIpLAogIGxvY2FsZSA9IGxvY2FsZShlbmNvZGluZyA9ICJsYXRpbjEiKSwKICBza2lwID0gMSwKICBzaG93X2NvbF90eXBlcyA9IEZBTFNFCikKCiMgMikgUHJvY2Vzc2FyIGRhZG9zCmlkcCA8LSBpZHBfcmF3ICU+JQogIG11dGF0ZSgKICAgIGFubyA9IGFzLmludGVnZXIoc3RyX3RyaW0oRGF0YSkpLAogICAgZGF0YSA9IGFzLkRhdGUocGFzdGUwKGFubywgIi0wMS0wMSIpKSwgCiAgICBpZHBfYmlsaG9lcyA9IGFzLm51bWVyaWMoZ3N1YigiLCIsICIuIiwgSW52ZXN0aW1lbnRvcykpCiAgKSAlPiUKICBmaWx0ZXIoIWlzLm5hKGlkcF9iaWxob2VzKSkgJT4lCiAgYXJyYW5nZShkYXRhKQoKIyAtLS0gQ29udmVydGVyIHBhcmEgZm9ybWF0byBUaW1lIFNlcmllcyBkbyBIaWdoY2hhcnRzIC0tLQppZHBfaGMgPC0gaWRwICU+JQogIG11dGF0ZShEYXRhX3RpbWVzdGFtcCA9IGRhdGV0aW1lX3RvX3RpbWVzdGFtcChkYXRhKSkgJT4lCiAgc2VsZWN0KERhdGFfdGltZXN0YW1wLCBpZHBfYmlsaG9lcykKCiMgMykgR2VyYXIgZ3LDoWZpY28KaGlnaGNoYXJ0KHR5cGUgPSAic3RvY2siKSAlPiUgCiAgaGNfYWRkX3NlcmllcygKICAgIGRhdGEgPSBsaXN0X3BhcnNlMihpZHBfaGMpLCAKICAgIHR5cGUgPSAiY29sdW1uIiwgCiAgICBuYW1lID0gIklEUCAoYmlsaMO1ZXMgVVMkKSIsICMgTyBub21lIGRhIHPDqXJpZSDDqSBwdXhhZG8gcGFyYSBhIGxlZ2VuZGEKICAgIGNvbG9yID0gQ09SX0lEUCwKICAgIGJvcmRlclJhZGl1cyA9IDMsCiAgICBwb2ludFdpZHRoID0gNDAsCiAgICBkYXRhTGFiZWxzID0gbGlzdCgKICAgICAgZW5hYmxlZCA9IFRSVUUsCiAgICAgIGZvcm1hdCA9ICd7cG9pbnQueTouMWZ9JywgCiAgICAgIHN0eWxlID0gbGlzdChmb250V2VpZ2h0ID0gJ2JvbGQnLCBjb2xvciA9ICcjMDAwMDAwJyksCiAgICAgIHkgPSAtNQogICAgKQogICkgJT4lCiAgaGNfdGl0bGUoCiAgICB0ZXh0ID0gIkludmVzdGltZW50b3MgRGlyZXRvcyBMw61xdWlkb3Mgbm8gQnJhc2lsICgyMDE44oCTMjAyNCkiCiAgKSAlPiUKICBoY19zdWJ0aXRsZSh0ZXh0ID0gIkZvbnRlOiBCYW5jbyBDZW50cmFsIGRvIEJyYXNpbCAoU0dTIDIzNjQ1KSIpICU+JQogIGhjX3hBeGlzKAogICAgdGl0bGUgPSBsaXN0KHRleHQgPSAiIiksCiAgICB0eXBlID0gImRhdGV0aW1lIiwKICAgIGxhYmVscyA9IGxpc3QoZm9ybWF0ID0gInt2YWx1ZTolWX0iKQogICkgJT4lCiAgaGNfeUF4aXMoCiAgICAjIFTDrXR1bG8gZG8gRWl4byBZIHZvbHRhbmRvIGFvIHBhZHLDo28KICAgIHRpdGxlID0gbGlzdCh0ZXh0ID0gIlZhbG9yIChVUyQgYmlsaMO1ZXMpIiksIAogICAgbGFiZWxzID0gbGlzdCgKICAgICAgdXNlSFRNTCA9IFRSVUUsCiAgICAgIGZvcm1hdHRlciA9IEpTKCJmdW5jdGlvbigpIHsgcmV0dXJuIEhpZ2hjaGFydHMubnVtYmVyRm9ybWF0KHRoaXMudmFsdWUsIDAsICcsJywgJy4nKTsgfSIpCiAgICApLAogICAgdGlja0ludGVydmFsID0gMjUsCiAgICBtaW4gPSAwCiAgKSAlPiUKICBoY190b29sdGlwKAogICAgdXNlSFRNTCA9IFRSVUUsCiAgICBoZWFkZXJGb3JtYXQgPSAiPGI+e3BvaW50LmtleTolWX08L2I+PGJyLz4iLAogICAgcG9pbnRGb3JtYXQgPSAiSURQOiA8Yj57cG9pbnQueTosLjFmfSBiaSBVUyQ8L2I+IgogICkgJT4lCiAgIyAtLS0gTVVEQU7Dh0E6IExFR0VOREEgUkUtSEFCSUxJVEFEQSBFIFBPU0lDSU9OQURBIE5PIFJPREFQw4kgLS0tCiAgaGNfbGVnZW5kKAogICAgZW5hYmxlZCA9IFRSVUUsCiAgICBhbGlnbiA9ICJjZW50ZXIiLAogICAgdmVydGljYWxBbGlnbiA9ICJib3R0b20iLCAjIENvbG9jYSBhIGxlZ2VuZGEgbmEgcGFydGUgaW5mZXJpb3IgKHByw7N4aW1hIGFvIEVpeG8gWCkKICAgIGxheW91dCA9ICJob3Jpem9udGFsIiwKICAgIHkgPSAxMCAjIEFqdXN0ZSBkZSBtYXJnZW0KICApICU+JQogICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KaGNfZXhwb3J0aW5nKGVuYWJsZWQgPSBUUlVFKSAlPiUKICBoY19yYW5nZVNlbGVjdG9yKGVuYWJsZWQgPSBGQUxTRSkgJT4lCiAgaGNfbmF2aWdhdG9yKGVuYWJsZWQgPSBGQUxTRSkgJT4lCiAgaGNfc2Nyb2xsYmFyKGVuYWJsZWQgPSBGQUxTRSkgJT4lCiAgaGNfY3JlZGl0cyhlbmFibGVkID0gVFJVRSwgdGV4dCA9ICJGb250ZTogQkNCIHwgR3LDoWZpY286IEVsYWJvcmHDp8OjbyBQcsOzcHJpYSIpCgpgYGAKCk9zIGludmVzdGltZW50b3MgZGlyZXRvcyBlc3RyYW5nZWlyb3MgKElEUCkgc8OjbyB1bWEgZGFzIHByaW5jaXBhaXMgZm9udGVzIGRlIGVudHJhZGEgZGUgZMOzbGFyZXMgbm8gQnJhc2lsIGUgaW5mbHVlbmNpYW0gZGlyZXRhbWVudGUgYSB0YXhhIGRlIGPDom1iaW8gZSBhcyBkZWNpc8O1ZXMgZGUgcG9sw610aWNhIG1vbmV0w6FyaWEuIFF1YW5kbyBvcyBmbHV4b3MgYXVtZW50YW0sIGjDoSB2YWxvcml6YcOnw6NvIGRvIHJlYWw7IHF1YW5kbyByZWN1YW0sIG8gY8OibWJpbyBzZSBkZXByZWNpYSwgZWxldmFuZG8gYSBpbmZsYcOnw6NvIGUgcmVzdHJpbmdpbmRvIG8gZXNwYcOnbyBwYXJhIGNvcnRlcyBkYSBTZWxpYy4KClNlZ3VuZG8gZGFkb3MgZG8gQmFuY28gQ2VudHJhbCwgbyBJRFAgbcOpZGlvIG1lbnNhbCBmb2kgZGUgVVMkIDQsNSBiaWxow7VlcyBlbnRyZSAyMDE4IGUgMjAxOSwgbWFzIGNhaXUgcGFyYSBVUyQgMSw3IGJpbGjDo28gZW0gYWJyaWwgZGUgMjAyMCwgcXVhbmRvIG8gZMOzbGFyIHN1Yml1IGRlIFIkIDQsMDAgcGFyYSBSJCA1LDYwLiBDb20gYSByZXRvbWFkYSBnbG9iYWwgZSBvIGRpZmVyZW5jaWFsIGRlIGp1cm9zIGZhdm9yw6F2ZWwsIG8gZmx1eG8gdm9sdG91IGEgY3Jlc2NlciBlbSAyMDIyLCBzdXBlcmFuZG8gVVMkIDcgYmlsaMO1ZXMgbWVuc2FpcyBlIGNvbnRyaWJ1aW5kbyBwYXJhIGEgdmFsb3JpemHDp8OjbyBkbyByZWFsLgoKRXNzYSByZWxhw6fDo28gbW9zdHJhIHF1ZSBlbnRyYWRhcyBkZSBjYXBpdGFsIGFsaXZpYW0gcHJlc3PDtWVzIGluZmxhY2lvbsOhcmlhcyBlIHBlcm1pdGVtIGp1cm9zIG1lbm9yZXMsIGVucXVhbnRvIHNhw61kYXMgZm9yw6dhbSBvIEJDIGEgZWxldmFyIGEgU2VsaWMgcGFyYSBjb250ZXIgYSBkZXN2YWxvcml6YcOnw6NvIGNhbWJpYWwuIE8gZGVzYWZpbyDDqSBlcXVpbGlicmFyIGF0cmHDp8OjbyBkZSBjYXBpdGFsIGUgY3Jlc2NpbWVudG8gaW50ZXJubywgbWFudGVuZG8gYSBjb25maWFuw6dhIGRvcyBpbnZlc3RpZG9yZXMgc2VtIGNvbXByb21ldGVyIG8gY3LDqWRpdG8gZSBhIGF0aXZpZGFkZSBlY29uw7RtaWNhLgoKRW0gY29uY2x1c8OjbywgbyBjb21wb3J0YW1lbnRvIGRvcyBmbHV4b3MgZGUgaW52ZXN0aW1lbnRvIGVzdHJhbmdlaXJvIMOpIHVtIHRlcm3DtG1ldHJvIGRhIGNyZWRpYmlsaWRhZGUgbWFjcm9lY29uw7RtaWNhIGRvIHBhw61zLiBFbGUgY29uZWN0YSBvIGNlbsOhcmlvIGludGVybmFjaW9uYWwgw6AgcG9sw610aWNhIG1vbmV0w6FyaWEgZG9tw6lzdGljYSBlIGFqdWRhIGEgZXhwbGljYXIgY29tbyBhcyBwcm9qZcOnw7VlcyBwYXJhIG8gZMOzbGFyIGNvbmRpY2lvbmFtIGFzIGRlY2lzw7VlcyBzb2JyZSBhIFNlbGljLCB0b3JuYW5kby1zZSB1bSBkb3MgY2FuYWlzIG1haXMgc2Vuc8OtdmVpcyBkYSBlY29ub21pYSBicmFzaWxlaXJhLgoKCgojIyAqKkTDrXZpZGEgUMO6YmxpY2EsIEluZmxhw6fDo28gZSBTZWxpYyoqCmBgYHtyfQpsaWJyYXJ5KHJlYWRyKQpsaWJyYXJ5KGRwbHlyKQpsaWJyYXJ5KGx1YnJpZGF0ZSkKbGlicmFyeShoaWdoY2hhcnRlcikKbGlicmFyeShzdHJpbmdyKQoKIyAtLS0gQ29yIGRhIFPDqXJpZSAtLS0KQ09SX0RJVklEQSA8LSAiIzAwMzM2NiIKCiMgLS0tIExlciBkYWRvcyBkYSBEw612aWRhIEzDrXF1aWRhIGRvIFNldG9yIFDDumJsaWNvIC0tLQpkaXZpZGFfcmF3IDwtIHJlYWRfZGVsaW0oIkRpdmlkYSBMaXF1aWRhIGRvIFNldG9yIFB1YmxpY28uY3N2IiwKICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGltID0gIjsiLAogICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlID0gbG9jYWxlKGVuY29kaW5nID0gImxhdGluMSIpKQoKbmFtZXMoZGl2aWRhX3JhdykgPC0gdHJpbXdzKG5hbWVzKGRpdmlkYV9yYXcpKQoKIyAtLS0gQ09SUkXDh8ODTyBUw4lDTklDQTogUmVub21laWEgcGVsbyDDrW5kaWNlIHBhcmEgZXZpdGFyIGVycm8gZGUgY2FyYWN0ZXJlcyAtLS0KbmFtZXMoZGl2aWRhX3JhdylbMl0gPC0gInZhbG9yX3JhdyIgCgpkaXZpZGFfcHJvY2Vzc2VkIDwtIGRpdmlkYV9yYXcgJT4lCiAgcmVuYW1lKHZhbG9yID0gdmFsb3JfcmF3KSAlPiUgCiAgbXV0YXRlKAogICAgdmFsb3IgPSBnc3ViKCIsIiwgIi4iLCB0cmltd3ModmFsb3IpKSwKICAgIHZhbG9yID0gaWZlbHNlKHZhbG9yICVpbiUgYygiIiwgIi0iLCAiTkQiKSwgTkEsIHZhbG9yKSwKICAgIHZhbG9yID0gYXMubnVtZXJpYyh2YWxvciksCiAgICAKICAgICMgLS0tIE1VREFOw4dBIERFIEVTQ0FMQTogRGl2aWRpciBwb3IgMTAuMDAwICgxZTQpIHBhcmEgcXVlIG9zIHZhbG9yZXMgZmlxdWVtIG5hIGNhc2EgZG9zIDMwMCAtLS0KICAgIHZhbG9yX21pbGhvZXMgPSB2YWxvciAvIDFlNCwKICAgIAogICAgRGF0YSA9IHBhc3RlMCgiMDEvIiwgRGF0YSksCiAgICBEYXRhID0gZG15KERhdGEsIGxvY2FsZSA9ICJwdF9CUi51dGY4IiksCiAgICBEYXRhID0gZmxvb3JfZGF0ZShEYXRhLCAibW9udGgiKSwKICAgIAogICAgIyBNYW50w6ltIG8gYXJyZWRvbmRhbWVudG8gcGFyYSAxIGNhc2EgZGVjaW1hbCwgY29tbyBlbSAiMzAwLjEiCiAgICB2YWxvcl9taWxob2VzID0gcm91bmQodmFsb3JfbWlsaG9lcywgMSkKICApICU+JQogIGZpbHRlcighaXMubmEodmFsb3JfbWlsaG9lcykpCgojIC0tLSBDb252ZXJ0ZXIgcGFyYSBmb3JtYXRvIEhpZ2hjaGFydGVyIC0tLQpkaXZpZGFfaGMgPC0gZGl2aWRhX3Byb2Nlc3NlZCAlPiUKICBzZWxlY3QoRGF0YSwgdmFsb3JfbWlsaG9lcykgJT4lCiAgbXV0YXRlKERhdGEgPSBkYXRldGltZV90b190aW1lc3RhbXAoRGF0YSkpCgojIC0tLSBHcsOhZmljbyBkZSBzw6lyaWUgdGVtcG9yYWwgZGEgRMOtdmlkYSBMw61xdWlkYSAtLS0KaGlnaGNoYXJ0KHR5cGUgPSAic3RvY2siKSAlPiUKICBoY19hZGRfc2VyaWVzKAogICAgZGF0YSA9IGxpc3RfcGFyc2UyKGRpdmlkYV9oYyksCiAgICB0eXBlID0gImxpbmUiLAogICAgbmFtZSA9ICJEw612aWRhIEzDrXF1aWRhIGRvIFNldG9yIFDDumJsaWNvIChSJCBtaWxow7VlcykiLAogICAgY29sb3IgPSBDT1JfRElWSURBLAogICAgbGluZVdpZHRoID0gMiwKICAgIG1hcmtlciA9IGxpc3QoZW5hYmxlZCA9IFRSVUUsIHJhZGl1cyA9IDIsIHN5bWJvbCA9ICJjaXJjbGUiKQogICkgJT4lCiAgaGNfdGl0bGUodGV4dCA9ICJEw612aWRhIEzDrXF1aWRhIGRvIFNldG9yIFDDumJsaWNvICgyMDIwLTIwMjUpIikgJT4lCiAgaGNfc3VidGl0bGUodGV4dCA9ICJGb250ZTogQmFuY28gQ2VudHJhbCBkbyBCcmFzaWwgKFNHUyAyMDY0KSIpICU+JQogIGhjX3lBeGlzKAogICAgdGl0bGUgPSBsaXN0KHRleHQgPSAiVmFsb3IgKFIkIG1pbGjDtWVzKSIpLAogICAgIyBGb3JtYXRvIGRvIEVpeG8gWTogMSBjYXNhIGRlY2ltYWwgZSBzdWZpeG8gJ21pJwogICAgbGFiZWxzID0gbGlzdChmb3JtYXQgPSAie3ZhbHVlOiwuMWZ9IG1pIikKICApICU+JQogIGhjX3Rvb2x0aXAoCiAgICBzaGFyZWQgPSBUUlVFLAogICAgdmFsdWVEZWNpbWFscyA9IDEsCiAgICB2YWx1ZVByZWZpeCA9ICJSJCAiLAogICAgdmFsdWVTdWZmaXggPSAiIG1pIiwKICAgICMgRm9ybWF0byBkbyBUb29sdGlwOiAxIGNhc2EgZGVjaW1hbCBlIHN1Zml4byAnbWknCiAgICBwb2ludEZvcm1hdCA9ICI8c3BhbiBzdHlsZT0nY29sb3I6e3Nlcmllcy5jb2xvcn0nPntzZXJpZXMubmFtZX08L3NwYW4+OiA8Yj57cG9pbnQueTosLjFmfSBtaSBSJDwvYj48YnIvPiIKICApICU+JQogICMgLS0tIExFR0VOREEgTkEgQkFTRSAoQk9MSU5IQSBOTyBFSVhPIFgpIC0tLQogIGhjX2xlZ2VuZCgKICAgIGVuYWJsZWQgPSBUUlVFLAogICAgYWxpZ24gPSAiY2VudGVyIiwKICAgIHZlcnRpY2FsQWxpZ24gPSAiYm90dG9tIiwKICAgIGxheW91dCA9ICJob3Jpem9udGFsIiwKICAgIHkgPSAwCiAgKSAlPiUKICBoY19leHBvcnRpbmcoZW5hYmxlZCA9IFRSVUUpICU+JQogIGhjX2NyZWRpdHMoZW5hYmxlZCA9IFRSVUUsIHRleHQgPSAiRm9udGU6IEJDQiB8IEdyw6FmaWNvOiBFbGFib3Jhw6fDo28gUHLDs3ByaWEiKSAlPiUKICBoY19jaGFydChiYWNrZ3JvdW5kQ29sb3IgPSAiI0ZGRkZGRiIpCgpgYGAKCkEgdHJhamV0w7NyaWEgZGEgZMOtdmlkYSBww7pibGljYSBicmFzaWxlaXJhIGV4ZXJjZSBpbmZsdcOqbmNpYSBkaXJldGEgc29icmUgYXMgZGVjaXPDtWVzIGRlIHBvbMOtdGljYSBtb25ldMOhcmlhIGUgbyBjb21wb3J0YW1lbnRvIGRhIGluZmxhw6fDo28uIFF1YW5kbyBvIGdvdmVybm8gYXVtZW50YSBzZXUgZW5kaXZpZGFtZW50bywgaMOhIG1haW9yIG5lY2Vzc2lkYWRlIGRlIGVtaXNzw6NvIGRlIHTDrXR1bG9zIHDDumJsaWNvcyBwYXJhIGZpbmFuY2lhciBkZXNwZXNhcywgbyBxdWUgZWxldmEgYSBvZmVydGEgZGUgcGFww6lpcyBlIHByZXNzaW9uYSBvcyBqdXJvcyBkZSBtZXJjYWRvLgoKIEFsw6ltIGRpc3NvLCB1bSBjcmVzY2ltZW50byBwZXJzaXN0ZW50ZSBkYSBkw612aWRhIHRlbmRlIGEgYXVtZW50YXIgYSBwZXJjZXDDp8OjbyBkZSByaXNjbyBmaXNjYWwsIHJlZHV6aW5kbyBhIGNvbmZpYW7Dp2EgZG9zIGludmVzdGlkb3JlcyBlIHByZXNzaW9uYW5kbyBvIGPDom1iaW8g4oCUIGVmZWl0byBxdWUsIHBvciBzdWEgdmV6LCBwb2RlIGdlcmFyIGluZmxhw6fDo28gdmlhIGRlc3ZhbG9yaXphw6fDo28gZG8gcmVhbC4KIApEZSBhY29yZG8gY29tIGRhZG9zIGRvIEJhbmNvIENlbnRyYWwgZG8gQnJhc2lsLCBhIETDrXZpZGEgTMOtcXVpZGEgZG8gU2V0b3IgUMO6YmxpY28gKERMU1ApIHBhc3NvdSBkZSBhcHJveGltYWRhbWVudGUgUiQxOTUgYmlsaMO1ZXMgZW0gamFuZWlybyBkZSAyMDAwIHBhcmEgbWFpcyBkZSBSJDYgdHJpbGjDtWVzIGVtIDIwMjQsIG8gcXVlIHJlcHJlc2VudGEgdW1hIGFsdGEgc3VwZXJpb3IgYSAyLjkwMCUgbm8gcGVyw61vZG8uRXNzYSBleHBhbnPDo28gZm9pIGFjb21wYW5oYWRhIHBvciBmb3J0ZXMgb3NjaWxhw6fDtWVzIG5hIHRheGEgU2VsaWMgZSBuYSBpbmZsYcOnw6NvLCByZWZsZXRpbmRvIG9zIGVzZm9yw6dvcyBkbyBCYW5jbyBDZW50cmFsIHBhcmEgbWFudGVyIGEgZXN0YWJpbGlkYWRlIGRlIHByZcOnb3MgZW0gdW0gYW1iaWVudGUgZGUgZMOtdmlkYSBjcmVzY2VudGUuCgpFc3NlcyBtb3ZpbWVudG9zIGV2aWRlbmNpYW0gY29tbyBkw612aWRhLCBpbmZsYcOnw6NvIGUgU2VsaWMgZXN0w6NvIGludHJpbnNlY2FtZW50ZSBjb25lY3RhZGFzLlF1YW5kbyBhIGTDrXZpZGEgY3Jlc2NlIGUgYSBjb25maWFuw6dhIGZpc2NhbCBzZSBkZXRlcmlvcmEsIG8gcHLDqm1pbyBkZSByaXNjbyBleGlnaWRvIHBlbG9zIGludmVzdGlkb3JlcyBhdW1lbnRhLCBlbGV2YW5kbyBvcyBqdXJvcyBsb25nb3MgZSBwcmVzc2lvbmFuZG8gYSBpbmZsYcOnw6NvIHZpYSBjw6JtYmlvLiBQYXJhIGNvbnRlciBlc3NlcyBlZmVpdG9zLCBvIEJhbmNvIENlbnRyYWwgcHJlY2lzYSBlbGV2YXIgYSBTZWxpYywgbyBxdWUgZW5jYXJlY2UgbyBjcsOpZGl0bywgZnJlaWEgbyBjb25zdW1vIGUgcmVkdXogbyBpbnZlc3RpbWVudG8gaW50ZXJuby4KClBvciBvdXRybyBsYWRvLCBlbSBwZXLDrW9kb3MgZGUgY29uc29saWRhw6fDo28gZmlzY2FsIGUgaW5mbGHDp8OjbyBzb2IgY29udHJvbGUsIGEgcXVlZGEgZGEgZMOtdmlkYSBlbSBwcm9wb3LDp8OjbyBhbyBQSUIgcGVybWl0ZSB1bWEgcG9sw610aWNhIG1vbmV0w6FyaWEgbWFpcyBmbGV4w612ZWwuIE8gcmVzdWx0YWRvIMOpIHVtIGFtYmllbnRlIGRlIGp1cm9zIG1lbm9yZXMsIGPDom1iaW8gbWFpcyBlc3TDoXZlbCBlIG1lbm9yIHByZXNzw6NvIGluZmxhY2lvbsOhcmlhLCBjcmlhbmRvIGNvbmRpw6fDtWVzIGZhdm9yw6F2ZWlzIHBhcmEgbyBjcmVzY2ltZW50byBlY29uw7RtaWNvIHN1c3RlbnTDoXZlbC4KCiMjICoqQ0RTLCBSaXNjby1QYcOtcyBlIEluZmx1w6puY2lhIG5hIFNlbGljKioKCmBgYHtyfQpsaWJyYXJ5KHJlYWRyKQpsaWJyYXJ5KGRwbHlyKQpsaWJyYXJ5KGx1YnJpZGF0ZSkKbGlicmFyeShoaWdoY2hhcnRlcikKbGlicmFyeShzdHJpbmdyKQoKIyBDb3JlcyBwYXJhIHJlZmVyw6puY2lhCkNPUl9DRFMgPC0gIiMwMjAyM0MiICAjIEF6dWwgRXNjdXJvCkNPUl9TRUxJQyA8LSAiI0ZGRDcwMCIgIyBBbWFyZWxvL091cm8KCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojIC0tLSAxLiBMRUlUVVJBIEUgUFJPQ0VTU0FNRU5UTyBERSBEQURPUyAoU0VMSUMpIC0tLQojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0Kc2VsaWNfcmF3IDwtIHJlYWRfZGVsaW0oIlRheCBTZWxpYyAyMC0yNS5jc3YiLAogICAgICAgICAgICAgICAgICAgICAgICBkZWxpbSA9ICI7IiwKICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlID0gbG9jYWxlKGVuY29kaW5nID0gImxhdGluMSIpKQoKbmFtZXMoc2VsaWNfcmF3KSA8LSB0cmltd3MobmFtZXMoc2VsaWNfcmF3KSkKCnNlbGljX3Byb2Nlc3NlZCA8LSBzZWxpY19yYXcgJT4lCiAgcmVuYW1lKHRheGFfc2VsaWMgPSBgVGF4YSBzZWxpY2ApICU+JQogIG11dGF0ZSgKICAgIHRheGFfc2VsaWMgPSBnc3ViKCIsIiwgIi4iLCB0cmltd3ModGF4YV9zZWxpYykpLAogICAgdGF4YV9zZWxpYyA9IGlmZWxzZSh0YXhhX3NlbGljICVpbiUgYygiIiwgIi0iLCAiTkQiKSwgTkEsIHRheGFfc2VsaWMpLAogICAgdGF4YV9zZWxpYyA9IGFzLm51bWVyaWModGF4YV9zZWxpYyksCiAgICBEYXRhID0gcGFzdGUwKCIwMS8iLCBEYXRhKSwKICAgIERhdGEgPSBkbXkoRGF0YSwgbG9jYWxlID0gInB0X0JSLnV0ZjgiKSwKICAgIERhdGEgPSBmbG9vcl9kYXRlKERhdGEsICJtb250aCIpLAogICAgdGF4YV9zZWxpYyA9IHJvdW5kKHRheGFfc2VsaWMsIDIpCiAgKSAlPiUKICBmaWx0ZXIoIWlzLm5hKHRheGFfc2VsaWMpKQoKIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiMgLS0tIDIuIExFSVRVUkEgRSBQUk9DRVNTQU1FTlRPIERFIERBRE9TIChDRFMgNSBBTk9TKSAtLS0KIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmNkc19yYXcgPC0gcmVhZF9kZWxpbSgiQ0RTIEJyYXNpbC5jc3YiLAogICAgICAgICAgICAgICAgICAgICAgZGVsaW0gPSAiOyIsCiAgICAgICAgICAgICAgICAgICAgICBsb2NhbGUgPSBsb2NhbGUoZW5jb2RpbmcgPSAibGF0aW4xIikpCgpuYW1lcyhjZHNfcmF3KSA8LSB0cmltd3MobmFtZXMoY2RzX3JhdykpCgpjZHNfcHJvY2Vzc2VkIDwtIGNkc19yYXcgJT4lCiAgcmVuYW1lKHZhbG9yX2NkcyA9IENEUykgJT4lCiAgbXV0YXRlKAogICAgdmFsb3JfY2RzID0gYXMubnVtZXJpYyhnc3ViKCIsIiwgIi4iLCB0cmltd3ModmFsb3JfY2RzKSkpLAogICAgRGF0YSA9IGRteShEYXRhLCBsb2NhbGUgPSAicHRfQlIudXRmOCIpLAogICAgRGF0YSA9IGZsb29yX2RhdGUoRGF0YSwgIm1vbnRoIiksCiAgICB2YWxvcl9jZHMgPSByb3VuZCh2YWxvcl9jZHMsIDIpCiAgKSAlPiUKICBmaWx0ZXIoIWlzLm5hKHZhbG9yX2NkcykgJiAhaXMubmEoRGF0YSkpCgojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIyAtLS0gMy4gSlVOVEFSIERBRE9TIEUgQ09OVkVSVEVSIFBBUkEgSElHSENIQVJURVIgLS0tCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQptYWNyb19kYXRhX2NvbWJpbmVkIDwtIGZ1bGxfam9pbihjZHNfcHJvY2Vzc2VkLCBzZWxpY19wcm9jZXNzZWQsIGJ5ID0gIkRhdGEiKSAlPiUKICBhcnJhbmdlKERhdGEpICU+JQogIG11dGF0ZShEYXRhX2hjID0gZGF0ZXRpbWVfdG9fdGltZXN0YW1wKERhdGEpKQoKIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiMgLS0tIDQuIENSSUHDh8ODTyBETyBHUsOBRklDTyBDT01CSU5BRE8gKENEUyB4IFNFTElDKSAtLS0KIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmhpZ2hjaGFydCh0eXBlID0gInN0b2NrIikgJT4lCiAgIyAtLS0gU8OJUklFIENEUyAtLS0KICBoY19hZGRfc2VyaWVzKAogICAgZGF0YSA9IG1hY3JvX2RhdGFfY29tYmluZWQsCiAgICB0eXBlID0gImxpbmUiLAogICAgaGNhZXMoeCA9IERhdGFfaGMsIHkgPSB2YWxvcl9jZHMpLAogICAgbmFtZSA9ICJDRFMgNSBBbm9zIChwYikiLAogICAgeUF4aXMgPSAwLAogICAgY29sb3IgPSBDT1JfQ0RTLAogICAgbGluZVdpZHRoID0gMgogICkgJT4lCiAgIyAtLS0gU8OJUklFIFNFTElDIC0tLQogIGhjX2FkZF9zZXJpZXMoCiAgICBkYXRhID0gbWFjcm9fZGF0YV9jb21iaW5lZCwKICAgIHR5cGUgPSAibGluZSIsCiAgICBoY2Flcyh4ID0gRGF0YV9oYywgeSA9IHRheGFfc2VsaWMpLAogICAgbmFtZSA9ICJUYXhhIFNlbGljICglKSIsCiAgICB5QXhpcyA9IDEsCiAgICBjb2xvciA9IENPUl9TRUxJQywKICAgIGxpbmVXaWR0aCA9IDIKICApICU+JQogICMgLS0tIENPTkZJR1VSQcOHw4NPIERPUyBFSVhPUyBZIC0tLQogIGhjX3lBeGlzX211bHRpcGxlcygKICAgIGxpc3QoICMgRWl4byBZIHByaW3DoXJpbyAoMCk6IENEUwogICAgICB0aXRsZSA9IGxpc3QodGV4dCA9IE5VTEwpLAogICAgICBvcHBvc2l0ZSA9IEZBTFNFLAogICAgICBsYWJlbHMgPSBsaXN0KGZvcm1hdCA9ICJ7dmFsdWU6LjFmfSBwdHMiKQogICAgKSwKICAgIGxpc3QoICMgRWl4byBZIHNlY3VuZMOhcmlvICgxKTogU2VsaWMKICAgICAgdGl0bGUgPSBsaXN0KHRleHQgPSBOVUxMKSwKICAgICAgb3Bwb3NpdGUgPSBUUlVFLAogICAgICBsYWJlbHMgPSBsaXN0KGZvcm1hdCA9ICJ7dmFsdWU6LjJmfSUiKQogICAgKQogICkgJT4lCiAgIyAtLS0gQ09ORklHVVJBw4fDg08gR0VSQUwgRE8gR1LDgUZJQ08gLS0tCiAgaGNfdGl0bGUodGV4dCA9ICJDb21wYXJhdGl2byBDRFMgUmlzY28tUGHDrXMgZSBUYXhhIFNlbGljIikgJT4lCiAgaGNfc3VidGl0bGUodGV4dCA9ICJGb250ZTogSW52ZXN0aW5nLmNvbSBCYW5jbyBDZW50cmFsIGRvIEJyYXNpbCIpICU+JQogIGhjX3hBeGlzKHRpdGxlID0gbGlzdCh0ZXh0ID0gIiIpKSAlPiUKICBoY190b29sdGlwKHNoYXJlZCA9IFRSVUUsIHZhbHVlRGVjaW1hbHMgPSAyKSAlPiUKICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgLS0tIE1PRElGSUNBw4fDg086IExFR0VOREEgTkEgUEFSVEUgSU5GRVJJT1IgLS0tCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KaGNfbGVnZW5kKAogIGVuYWJsZWQgPSBUUlVFLAogIGFsaWduID0gImNlbnRlciIsCiAgdmVydGljYWxBbGlnbiA9ICJib3R0b20iLCAjIE11ZGFuw6dhIHByaW5jaXBhbCBhcXVpIQogIGxheW91dCA9ICJob3Jpem9udGFsIiwKICB5ID0gMCAjIFBvZGUgc2VyIHVzYWRvIHBhcmEgYWp1c3RhciBhIG1hcmdlbSBpbmZlcmlvciwgc2UgbmVjZXNzw6FyaW8KKSAlPiUKICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmhjX3JhbmdlU2VsZWN0b3IoCiAgZW5hYmxlZCA9IFRSVUUsCiAgaW5wdXRFbmFibGVkID0gVFJVRSwKICBidXR0b25zID0gbGlzdCgKICAgIGxpc3QodHlwZSA9ICdtb250aCcsIGNvdW50ID0gNiwgdGV4dCA9ICc2bScpLAogICAgbGlzdCh0eXBlID0gJ3llYXInLCBjb3VudCA9IDEsIHRleHQgPSAnMXknKSwKICAgIGxpc3QodHlwZSA9ICdhbGwnLCB0ZXh0ID0gJ0FsbCcpCiAgKQopICU+JQogIGhjX25hdmlnYXRvcihlbmFibGVkID0gVFJVRSkgJT4lCiAgaGNfc2Nyb2xsYmFyKGVuYWJsZWQgPSBUUlVFKSAlPiUKICBoY19jaGFydChiYWNrZ3JvdW5kQ29sb3IgPSAiI0ZGRkZGRiIpICU+JQogIGhjX2V4cG9ydGluZyhlbmFibGVkID0gVFJVRSkgJT4lCiAgaGNfY3JlZGl0cyhlbmFibGVkID0gVFJVRSwgdGV4dCA9ICJGb250ZTogSW52ZXN0aW5nIGUgQkNCIHwgR3LDoWZpY286IEVsYWJvcmHDp8OjbyBQcsOzcHJpYSIpCmBgYAoKTyBDcmVkaXQgRGVmYXVsdCBTd2FwIChDRFMpIMOpIHVtIGRlcml2YXRpdm8gcXVlIG1lZGUgbyBjdXN0byBkZSBzZSBwcm90ZWdlciBjb250cmEgbyByaXNjbyBkZSBjYWxvdGUgZGEgZMOtdmlkYSBzb2JlcmFuYS4gRW0gb3V0cmFzIHBhbGF2cmFzLCBlbGUgZnVuY2lvbmEgY29tbyB1bSBzZWd1cm8gY29udHJhIG8gcmlzY28gZGUgY3LDqWRpdG8gZGUgdW0gcGHDrXMuIFF1YW50byBtYWlvciBvIHNwcmVhZCBkbyBDRFMsIG1haW9yIMOpIGEgcGVyY2Vww6fDo28gZGUgcmlzY28gZmlzY2FsIGUgZWNvbsO0bWljbyBlLCBjb25zZXF1ZW50ZW1lbnRlLCBtZW5vciDDqSBvIGFwZXRpdGUgZGUgaW52ZXN0aWRvcmVzIGVzdHJhbmdlaXJvcyBwYXJhIG1hbnRlciBjYXBpdGFsIG5vIHBhw61zLgoKTm8gY2FzbyBkbyBCcmFzaWwsIG8gY29tcG9ydGFtZW50byBkbyBDRFMgZGUgNSBhbm9zLCBtZWRpZG8gZW0gcG9udG9zLWJhc2UgKGJwcyksIG1vc3RyYSB1bWEgY29ycmVsYcOnw6NvIGNsYXJhIGNvbSBhIHBvbMOtdGljYSBtb25ldMOhcmlhIGUgbyBjw6JtYmlvCgpFbSAyMDA4LCBubyBhdWdlIGRhIGNyaXNlIGZpbmFuY2VpcmEgZ2xvYmFsLCBvIENEUyBCcmFzaWwgdWx0cmFwYXNzb3UgNDAwIGJwcywgcmVmbGV0aW5kbyBmb3J0ZSBhdmVyc8OjbyBhbyByaXNjbyBlIGRlc3ZhbG9yaXphw6fDo28gZG8gcmVhbCAoVVNEL0JSTCBjaGVnb3UgYSBSJCAyLDQwKS4gTmVzc2UgY29udGV4dG8sIGEgU2VsaWMgZXN0YXZhIGVtIDEzLDc1JSwgZSBvIEJhbmNvIENlbnRyYWwgbWFudGV2ZSBqdXJvcyBlbGV2YWRvcyBwYXJhIGV2aXRhciBmdWdhIGRlIGNhcGl0YWlzIGUgY29udGVyIGEgaW5mbGHDp8Ojby4KCkrDoSBlbSAyMDE5LCBjb20gaW5mbGHDp8OjbyBjb250cm9sYWRhLCBjb250YXMgcMO6YmxpY2FzIHJlbGF0aXZhbWVudGUgZXN0w6F2ZWlzIGUgQ0RTIGFiYWl4byBkZSAxMDAgYnBzLCBvIEJDIGNvbnNlZ3VpdSByZWR1emlyIGEgU2VsaWMgcGFyYSA1LDAwJSwgbyBtZW5vciBuw612ZWwgZGEgaGlzdMOzcmlhIGF0w6kgZW50w6NvLgpEdXJhbnRlIGEgcGFuZGVtaWEgZGUgMjAyMCwgbyBDRFMgdm9sdG91IGEgc3ViaXIgZm9ydGVtZW50ZSwgYXRpbmdpbmRvIGNlcmNhIGRlIDMzMCBicHMsIHJlZmxldGluZG8gaW5jZXJ0ZXphIGZpc2NhbCBlIHBvbMOtdGljYS4gTWVzbW8gY29tIG8gcmVhbCB1bHRyYXBhc3NhbmRvIFIkIDUsNjAgcG9yIGTDs2xhciwgbyBCQyByZWR1eml1IHRlbXBvcmFyaWFtZW50ZSBhIFNlbGljIHBhcmEgMiwwMCUsIGRpYW50ZSBkYSByZWNlc3PDo28gZ2xvYmFsLCBtYXMgcHJlY2lzb3UgcmV2ZXJ0ZXIgbyBjaWNsbyBlbSAyMDIxLCBlbGV2YW5kbyBvcyBqdXJvcyBhdMOpIDEzLDc1JSBlbSByZXNwb3N0YSDDoCBkZXRlcmlvcmHDp8OjbyBkbyByaXNjbyBwYcOtcyBlIMOgIGVzY2FsYWRhIGluZmxhY2lvbsOhcmlhLgpFbSAyMDI1LCBvIENEUyBzZSBlc3RhYmlsaXpvdSBuYSBmYWl4YSBkZSAxMzDigJMxNTAgYnBzLCBhaW5kYSBhY2ltYSBkbyBuw612ZWwgcHLDqS1wYW5kZW1pYSwgbW9zdHJhbmRvIHF1ZSBvIG1lcmNhZG8gbWFudMOpbSBjYXV0ZWxhIGNvbSBvIHF1YWRybyBmaXNjYWwgYnJhc2lsZWlyby4KCkVzc2VzIGRhZG9zIGV2aWRlbmNpYW0gcXVlIG8gQ0RTIGZ1bmNpb25hIGNvbW8gdW0gdGVybcO0bWV0cm8gZGEgY3JlZGliaWxpZGFkZSBmaXNjYWwgZSBkYSBjb25maWFuw6dhIGludGVybmFjaW9uYWwuIFF1YW5kbyBvIHJpc2NvIHBhw61zIHNvYmUsIG9zIGludmVzdGlkb3JlcyBleGlnZW0gbWFpb3IgcmV0b3JubyBwYXJhIGZpbmFuY2lhciBvIGdvdmVybm8sIG8gcXVlIHByZXNzaW9uYSBhIGN1cnZhIGRlIGp1cm9zIGUgZGlmaWN1bHRhIGNvcnRlcyBuYSBTZWxpYy4KIFBvciBvdXRybyBsYWRvLCBxdWFuZG8gbyBDRFMgcmVjdWEsIGluZGljYW5kbyBtZW5vciBwZXJjZXDDp8OjbyBkZSByaXNjbywgbyBCYW5jbyBDZW50cmFsIGdhbmhhIGVzcGHDp28gcGFyYSByZWR1emlyIG9zIGp1cm9zIHNlbSBjb21wcm9tZXRlciBhIGVzdGFiaWxpZGFkZSBjYW1iaWFsLkVtIHPDrW50ZXNlLCBvIENEUywgbyBjw6JtYmlvIGUgYSBTZWxpYyBmb3JtYW0gdW0gdHJpw6JuZ3VsbyBkZSBpbnRlcmRlcGVuZMOqbmNpYSBuYSBlY29ub21pYSBicmFzaWxlaXJhOgogCkNEUyBhbHRvIOKGkiBzYcOtZGEgZGUgY2FwaXRhbCDihpIgZMOzbGFyIHNvYmUg4oaSIGluZmxhw6fDo28gcHJlc3Npb25hIOKGkiBTZWxpYyBzb2JlLgoKQ0RTIGJhaXhvIOKGkiBlbnRyYWRhIGRlIGNhcGl0YWwg4oaSIHJlYWwgc2UgdmFsb3JpemEg4oaSIGluZmxhw6fDo28gcmVjdWEg4oaSIFNlbGljIHBvZGUgY2Fpci4KCkFzc2ltLCBvIHJpc2NvIHBhw61zLCBjYXB0YWRvIHBlbG8gQ0RTLCDDqSBuw6NvIGFwZW5hcyB1bSBpbmRpY2Fkb3IgZmluYW5jZWlybywgbWFzIHRhbWLDqW0gdW0gaW5zdHJ1bWVudG8gY3J1Y2lhbCBwYXJhIGFudGVjaXBhciBvcyBtb3ZpbWVudG9zIGRlIHBvbMOtdGljYSBtb25ldMOhcmlhLCBpbmZsdWVuY2lhbmRvIGRpcmV0YW1lbnRlIGFzIHByb2plw6fDtWVzIHBhcmEgbyBkw7NsYXIgZSBhcyBkZWNpc8O1ZXMgZG8gQ29wb20uCgoKIyMgKipDb21tb2RpdGllcyBlIEluZmx1w6puY2lhIG5hIFZhbG9yaXphw6fDo28gZG8gUmVhbCoqCgpgYGB7cn0KbGlicmFyeShyZWFkcikKbGlicmFyeShkcGx5cikKbGlicmFyeShsdWJyaWRhdGUpCmxpYnJhcnkoaGlnaGNoYXJ0ZXIpCmxpYnJhcnkoc3RyaW5ncikKCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojIC0tLSAxLiBMRUlUVVJBIEUgUFJPQ0VTU0FNRU5UTyBERSBEQURPUyAoRVhQT1JUQcOHw4NPKSAtLS0KIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmV4cG9ydF9yYXcgPC0gcmVhZF9kZWxpbSgKICAiRGFkb3MgZXhwb3J0YWNhbyAyMDIwLTIwMjUuY3N2IiwKICBkZWxpbSA9ICI7IiwKICBsb2NhbGUgPSBsb2NhbGUoZW5jb2RpbmcgPSAibGF0aW4xIiksCiAgY29sX3R5cGVzID0gY29scygKICAgIERhdGEgPSBjb2xfY2hhcmFjdGVyKCksCiAgICBFeHBvcnRhY29lcyA9IGNvbF9jaGFyYWN0ZXIoKQogICksCiAgc2hvd19jb2xfdHlwZXMgPSBGQUxTRQopCgpleHBvcnRfcHJvY2Vzc2VkIDwtIGV4cG9ydF9yYXcgJT4lCiAgbXV0YXRlKAogICAgRGF0YSA9IHBhcnNlX2RhdGVfdGltZShEYXRhLCBvcmRlcnMgPSBjKCJZbSIsICJZL20iLCAiWS1tIiksIGxvY2FsZSA9ICJwdF9CUiIpLAogICAgVmFsb3IgPSBnc3ViKCIsIiwgIi4iLCBFeHBvcnRhY29lcyksCiAgICBWYWxvciA9IGFzLm51bWVyaWMoVmFsb3IpLAogICAgVmFsb3JfYmkgPSBWYWxvciAvIDFlOSwKICAgIFRpcG8gPSAiRXhwb3J0YcOnw7VlcyIgCiAgKSAlPiUKICBmaWx0ZXIoIWlzLm5hKERhdGEpICYgIWlzLm5hKFZhbG9yX2JpKSkgJT4lCiAgc2VsZWN0KERhdGEsIFZhbG9yX2JpLCBUaXBvKQoKIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiMgLS0tIDIuIExFSVRVUkEgRSBQUk9DRVNTQU1FTlRPIERFIERBRE9TIChJTVBPUlRBw4fDg08pIC0tLQojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KaW1wb3J0X3JhdyA8LSByZWFkX2RlbGltKAogICJEYWRvcyBpbXBvcnRhY2FvIDIwMjAtMjAyNS5jc3YiLAogIGRlbGltID0gIjsiLAogIGxvY2FsZSA9IGxvY2FsZShlbmNvZGluZyA9ICJsYXRpbjEiKSwKICBjb2xfdHlwZXMgPSBjb2xzKAogICAgRGF0YSA9IGNvbF9jaGFyYWN0ZXIoKSwKICAgIEltcG9ydGFjb2VzID0gY29sX2NoYXJhY3RlcigpCiAgKSwKICBzaG93X2NvbF90eXBlcyA9IEZBTFNFCikKCmltcG9ydF9wcm9jZXNzZWQgPC0gaW1wb3J0X3JhdyAlPiUKICBtdXRhdGUoCiAgICBEYXRhID0gcGFyc2VfZGF0ZV90aW1lKERhdGEsIG9yZGVycyA9IGMoIlltIiwgIlkvbSIsICJZLW0iKSwgbG9jYWxlID0gInB0X0JSIiksCiAgICBWYWxvciA9IGdzdWIoIiwiLCAiLiIsIEltcG9ydGFjb2VzKSwKICAgIFZhbG9yID0gYXMubnVtZXJpYyhWYWxvciksCiAgICBWYWxvcl9iaSA9IFZhbG9yIC8gMWU5LAogICAgVGlwbyA9ICJJbXBvcnRhw6fDtWVzIiAKICApICU+JQogIGZpbHRlcighaXMubmEoRGF0YSkgJiAhaXMubmEoVmFsb3JfYmkpKSAlPiUKICBzZWxlY3QoRGF0YSwgVmFsb3JfYmksIFRpcG8pCgojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIyAtLS0gMy4gQ09NQklOQVIgREFET1MgRSBDT05WRVJURVIgUEFSQSBISUdIQ0hBUlRFUiAtLS0KIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRhZG9zX2NvbWJpbmFkb3MgPC0gYmluZF9yb3dzKGV4cG9ydF9wcm9jZXNzZWQsIGltcG9ydF9wcm9jZXNzZWQpICU+JQogIGFycmFuZ2UoRGF0YSkgJT4lCiAgbXV0YXRlKERhdGEgPSBkYXRldGltZV90b190aW1lc3RhbXAoRGF0YSkpIAoKIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiMgLS0tIDQuIENSSUHDh8ODTyBETyBHUsOBRklDTyBDT01CSU5BRE8gLS0tCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpjb3JlcyA8LSBjKCJFeHBvcnRhw6fDtWVzIiA9ICIjMDIwMjNDIiwgIkltcG9ydGHDp8O1ZXMiID0gIiNGRkQ3MDAiKQoKaGlnaGNoYXJ0KHR5cGUgPSAic3RvY2siKSAlPiUKICBoY19hZGRfc2VyaWVzKAogICAgZGF0YSA9IGRhZG9zX2NvbWJpbmFkb3MgJT4lIGZpbHRlcihUaXBvID09ICJFeHBvcnRhw6fDtWVzIiksIAogICAgdHlwZSA9ICJsaW5lIiwgCiAgICBoY2Flcyh4ID0gRGF0YSwgeSA9IFZhbG9yX2JpKSwKICAgIG5hbWUgPSAiRXhwb3J0YcOnw7VlcyIsIAogICAgY29sb3IgPSBjb3Jlc1siRXhwb3J0YcOnw7VlcyJdLCAKICAgIGxpbmVXaWR0aCA9IDMsCiAgICBtYXJrZXIgPSBsaXN0KGVuYWJsZWQgPSBUUlVFLCByYWRpdXMgPSAzLCBzeW1ib2wgPSAiY2lyY2xlIikKICApICU+JQogIGhjX2FkZF9zZXJpZXMoCiAgICBkYXRhID0gZGFkb3NfY29tYmluYWRvcyAlPiUgZmlsdGVyKFRpcG8gPT0gIkltcG9ydGHDp8O1ZXMiKSwgCiAgICB0eXBlID0gImxpbmUiLCAKICAgIGhjYWVzKHggPSBEYXRhLCB5ID0gVmFsb3JfYmkpLAogICAgbmFtZSA9ICJJbXBvcnRhw6fDtWVzIiwgCiAgICBjb2xvciA9IGNvcmVzWyJJbXBvcnRhw6fDtWVzIl0sIAogICAgbGluZVdpZHRoID0gMywKICAgIG1hcmtlciA9IGxpc3QoZW5hYmxlZCA9IFRSVUUsIHJhZGl1cyA9IDMsIHN5bWJvbCA9ICJjaXJjbGUiKQogICkgJT4lCiAgaGNfdGl0bGUodGV4dCA9ICJCYWxhbsOnYSBDb21lcmNpYWwgQnJhc2lsZWlyYTogRXhwb3J0YcOnw7VlcyB2cyBJbXBvcnRhw6fDtWVzICgyMDIwLTIwMjUpIikgJT4lCiAgaGNfc3VidGl0bGUodGV4dCA9ICJGb250ZTogU2VjZXgvTURJQyIpICU+JQogIGhjX3hBeGlzKHRpdGxlID0gbGlzdCh0ZXh0ID0gIiIpKSAlPiUKICBoY195QXhpcygKICAgICMgLS0tIE1VREFOw4dBIDE6IFJlbW92ZW5kbyBvIHTDrXR1bG8gZG8gRWl4byBZIC0tLQogICAgdGl0bGUgPSBsaXN0KHRleHQgPSAiIiksCiAgICBsYWJlbHMgPSBsaXN0KGZvcm1hdCA9ICJ7dmFsdWU6LjFmfSBiaSIpCiAgKSAlPiUKICBoY190b29sdGlwKAogICAgc2hhcmVkID0gVFJVRSwgCiAgICB2YWx1ZURlY2ltYWxzID0gMSwKICAgIHZhbHVlU3VmZml4ID0gIiBiaSBVUyQiCiAgKSAlPiUKICBoY19yYW5nZVNlbGVjdG9yKAogICAgZW5hYmxlZCA9IFRSVUUsCiAgICBpbnB1dEVuYWJsZWQgPSBUUlVFLAogICAgYnV0dG9ucyA9IGxpc3QoCiAgICAgIGxpc3QodHlwZSA9ICdtb250aCcsIGNvdW50ID0gMywgdGV4dCA9ICczbScpLAogICAgICBsaXN0KHR5cGUgPSAnbW9udGgnLCBjb3VudCA9IDYsIHRleHQgPSAnNm0nKSwKICAgICAgbGlzdCh0eXBlID0gJ3l0ZCcsIHRleHQgPSAnWVREJyksCiAgICAgIGxpc3QodHlwZSA9ICd5ZWFyJywgY291bnQgPSAxLCB0ZXh0ID0gJzF5JyksCiAgICAgIGxpc3QodHlwZSA9ICdhbGwnLCB0ZXh0ID0gJ0FsbCcpCiAgICApCiAgKSAlPiUKICAjIC0tLSBNVURBTsOHQSAyOiBJTlNFUsOHw4NPIERBIExFR0VOREEgTkEgQkFTRSAoQk9MSU5IQVMgTk8gRUlYTyBYKSAtLS0KICBoY19sZWdlbmQoCiAgICBlbmFibGVkID0gVFJVRSwKICAgIGFsaWduID0gImNlbnRlciIsCiAgICB2ZXJ0aWNhbEFsaWduID0gImJvdHRvbSIsICMgUG9zacOnw6NvOiBJbmZlcmlvcgogICAgbGF5b3V0ID0gImhvcml6b250YWwiLAogICAgeSA9IDAKICApICU+JQogICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KaGNfbmF2aWdhdG9yKGVuYWJsZWQgPSBUUlVFKSAlPiUKICBoY19zY3JvbGxiYXIoZW5hYmxlZCA9IFRSVUUpICU+JQogIGhjX2NoYXJ0KGJhY2tncm91bmRDb2xvciA9ICIjRkZGRkZGIikgJT4lCiAgaGNfZXhwb3J0aW5nKGVuYWJsZWQgPSBUUlVFKSAlPiUKICBoY19jcmVkaXRzKGVuYWJsZWQgPSBUUlVFLCB0ZXh0ID0gIkZvbnRlOiBTZWNleC9NRElDIHwgR3LDoWZpY286IEVsYWJvcmHDp8OjbyBQcsOzcHJpYSIpCmBgYAoKQXMgY29tbW9kaXRpZXMgZGVzZW1wZW5oYW0gcGFwZWwgY2VudHJhbCBuYSBlY29ub21pYSBicmFzaWxlaXJhLCByZXByZXNlbnRhbmRvIHVtYSBwYXJjZWxhIGV4cHJlc3NpdmEgZGFzIGV4cG9ydGHDp8O1ZXMgbmFjaW9uYWlzLiBFbSAyMDI0LCBvcyBwcmluY2lwYWlzIHByb2R1dG9zIGRlIGV4cG9ydGHDp8OjbyBmb3JhbSBjb21idXN0w612ZWlzIG1pbmVyYWlzLCDDs2xlb3MgZSBkZXJpdmFkb3MsIG9sZWFnaW5vc2FzIChjb21vIHNvamEpIGUgbWluw6lyaW9zIOKAlCBzb21hbmRvIGdyYW5kZXMgdm9sdW1lcyBuYXMgcmVjZWl0YXMgZXh0ZXJuYXMgZG8gcGHDrXMuCgpEYWRvcyBkYSBzw6lyaWUg4oCcRXhwb3J0czogQ29tbW9kaXRpZXMgZm9yIEJyYXppbOKAnSBpbmRpY2FtIHF1ZSBvIHZhbG9yIGRhcyBleHBvcnRhw6fDtWVzIGRlIGNvbW1vZGl0aWVzIGJyYXNpbGVpcmFzIGVtIDIwMjQgdWx0cmFwYXNzb3UgVVMkIDMzNyBiaWxow7VlcywgcmVmb3LDp2FuZG8gbyBwZXNvIGRlc3NlIHNldG9yIG5hcyB0cmFuc2HDp8O1ZXMgZXh0ZXJuYXMuIAoKRXNzYSBmb3J0ZSBkZXBlbmTDqm5jaWEgZmF6IGNvbSBxdWUgbyBCcmFzaWwgc2VqYSBmcmVxdWVudGVtZW50ZSBjbGFzc2lmaWNhZG8gY29tbyB1bWEg4oCcY29tbW9kaXR5IGN1cnJlbmN54oCdIOKAlCBvdSBzZWphLCB1bWEgbW9lZGEgY29tIHNlbnNpYmlsaWRhZGUgYW9zIHByZcOnb3MgaW50ZXJuYWNpb25haXMgZGFzIG1hdMOpcmlhcy1wcmltYXMuIEVzdHVkb3MgZW1ww61yaWNvcyBtb3N0cmFtIGNvcnJlbGHDp8OjbyBwb3NpdGl2YSBlbnRyZSBvcyDDrW5kaWNlcyBkZSBjb21tb2RpdGllcyBlIGEgdGF4YSBkZSBjw6JtYmlvIEJSTC9VU0Q6IHF1YW5kbyBvcyBwcmXDp29zIGRhcyBjb21tb2RpdGllcyBzb2JlbSwgbyByZWFsIHRlbmRlIGEgc2UgdmFsb3JpemFyOyBxdWFuZG8gY2FlbSwgc29mcmVtIGRlc3ZhbG9yaXphw6fDo28uCgpWYWxvcml6YcOnw6NvIGRhcyBjb21tb2RpdGllcyDihpIgYXVtZW50byBkYXMgcmVjZWl0YXMgZGUgZXhwb3J0YcOnw6NvCiBBbHRhcyBub3MgcHJlw6dvcyBkZSBzb2phLCBtaW7DqXJpbywgcGV0csOzbGVvIGUgb3V0cmFzIG1hdMOpcmlhcy1wcmltYXMgZWxldmFtIGEgYXJyZWNhZGHDp8OjbyBjYW1iaWFsLiBJc3NvIGdlcmEgbWFpb3Igb2ZlcnRhIGRlIGTDs2xhcmVzIG5vIG1lcmNhZG8gZG9tw6lzdGljbywgbyBxdWUgdGVuZGUgYSB2YWxvcml6YXIgbyByZWFsLiBDb20gbyByZWFsIG1haXMgZm9ydGUsIG8gY8OibWJpbyBjb250cmlidWkgcGFyYSBhbGl2aWFyIGEgcHJlc3PDo28gaW5mbGFjaW9uw6FyaWEgaW50ZXJuYS4KCkRlc3ZhbG9yaXphw6fDo28gZGFzIGNvbW1vZGl0aWVzIOKGkiBjb250cmHDp8OjbyBkb3MgZmx1eG9zIGVtIGTDs2xhcmVzCiBRdWFuZG8gb3MgcHJlw6dvcyBkYXMgY29tbW9kaXRpZXMgcmVjdWFtLCBhIGVudHJhZGEgZGUgZMOzbGFyZXMgc2UgcmVkdXouIFBvdWNvIHZvbHVtZSBkZSBkaXZpc2FzIGV4dGVybmFzIGUgbWVub3IgcmVjZWl0YSBjYW1iaWFsIHByZXNzaW9uYW0gbyByZWFsIHBhcmEgYmFpeG8sIG8gcXVlIHBvZGUgYWNlbGVyYXIgbyBtb3ZpbWVudG8gZGUgZGVzdmFsb3JpemHDp8OjbyBjYW1iaWFsLgogCk9zIGltcGFjdG9zIG5hIGluZmxhw6fDo28gZSBuYSBwb2zDrXRpY2EgbW9uZXTDoXJpYSBzw6NvIGV2aWRlbnRlcywgcG9pcyBhIGRlc3ZhbG9yaXphw6fDo28gZG8gcmVhbCBlbGV2YSBvIGN1c3RvIGRlIGltcG9ydGFkb3MsIGNvbWJ1c3TDrXZlaXMgZSBpbnN1bW9zIGluZHVzdHJpYWlzLCBlbXB1cnJhbmRvIGEgaW5mbGHDp8OjbyBwYXJhIGNpbWEuIEVzc2UgZWZlaXRvIHByZXNzaW9uYSBvIEJhbmNvIENlbnRyYWwgYSBhanVzdGFyIGEgU2VsaWMgcGFyYSBjaW1hIGNvbW8gcmVzcG9zdGEgcGFyYSBjb250ZXIgbyByZXBhc3NlIGNhbWJpYWwgYW9zIHByZcOnb3MgZG9tw6lzdGljb3MuIAoKRXNzZSB0w7NwaWNvIGRlIGNvbW1vZGl0aWVzIHNlIGludGVncmEgZGlyZXRhbWVudGUgw6AgZGluw6JtaWNhIGRlIHByb2plw6fDtWVzIGRvIGTDs2xhciBlIGRlY2lzw7VlcyBkZSBTZWxpYyBwb3JxdWUgZGVtb25zdHJhIHVtIGNhbmFsIHJlYWwgKGV4dGVybm8pIGRlIGluZmx1w6puY2lhIHNvYnJlIG8gY8OibWJpby4gTyB2YWxvciBkbyByZWFsIG7Do28gw6kgbW9sZGFkbyBhcGVuYXMgcG9yIGp1cm9zIG91IGZsdXhvIGZpbmFuY2Vpcm8sIG1hcyB0YW1iw6ltIHBlbGFzIGZvcsOnYXMgZGUgcHJlw6dvcyBnbG9iYWlzIGRlIGJlbnMgcHJpbcOhcmlvcy4gCgpBc3NpbSwgZW0gY2Vuw6FyaW9zIGRlIGFsdGEgbm9zIHByZcOnb3MgZGUgY29tbW9kaXRpZXMsIG8gcmVhbCBwb2RlIHNlIHZhbG9yaXphciwgZGltaW51aW5kbyBhIG5lY2Vzc2lkYWRlIGRvIEJhbmNvIENlbnRyYWwgZGUgcmVjb3JyZXIgYSBlbGV2YcOnw7VlcyBkcsOhc3RpY2FzIGRhIFNlbGljLiBQb3Igb3V0cm8gbGFkbywgZW0gYW1iaWVudGVzIGRlIHF1ZWRhIGdsb2JhbCBuYXMgY29tbW9kaXRpZXMsIG8gcmlzY28gY2FtYmlhbCBwb2RlIHNlIGFjZWxlcmFyLCBmb3LDp2FuZG8gbyBCQyBhIG1hbnRlciBqdXJvcyBlbGV2YWRvcyBvdSBwb3N0ZXJnYXIgY29ydGVzLCBtZXNtbyBxdWUgb3MgZGFkb3MgZG9tw6lzdGljb3MgcGVybWl0YW0gZmxleGliaWxpemHDp8Ojby4KCgojIyBDb25jbHVzw6NvCkEgYW7DoWxpc2UgaW50ZWdyYWRhIGVudHJlIGPDom1iaW8sIHRheGEgU2VsaWMsIGZsdXhvcyBkZSBjYXBpdGFpcywgZMOtdmlkYSBww7pibGljYSwgcmlzY28tcGHDrXMgKENEUykgZSBtZXJjYWRvIGRlIGNvbW1vZGl0aWVzIGV2aWRlbmNpYSBhIG5hdHVyZXphIG11bHRpZmF0b3JpYWwgZGEgcG9sw610aWNhIG1vbmV0w6FyaWEgYnJhc2lsZWlyYS4gQ2FkYSB1bSBkZXNzZXMgZWxlbWVudG9zIGludGVyYWdlIGRlIGZvcm1hIGRpbsOibWljYSwgZ2VyYW5kbyBlZmVpdG9zIGNydXphZG9zIHF1ZSBjb25kaWNpb25hbSB0YW50byBvIGNvbXBvcnRhbWVudG8gZGEgaW5mbGHDp8OjbyBxdWFudG8gbyBlc3Bhw6dvIGRlIGF0dWHDp8OjbyBkbyBCYW5jbyBDZW50cmFsLgoKQXMgcHJvamXDp8O1ZXMgcGFyYSBvIGTDs2xhciBzw6NvIG8gZWxvIGNlbnRyYWwgZGVzc2EgZW5ncmVuYWdlbS4gQSB2YWxvcml6YcOnw6NvIGRhIG1vZWRhIG5vcnRlLWFtZXJpY2FuYSB0ZW5kZSBhIGVuY2FyZWNlciBpbXBvcnRhZG9zLCBlbGV2YXIgbyBJUENBIGUgZXhpZ2lyIGp1cm9zIG1haXMgYWx0b3MgcGFyYSBhbmNvcmFyIGV4cGVjdGF0aXZhcyBlIGNvbnRlciBhIHNhw61kYSBkZSBjYXBpdGFsIGVzdHJhbmdlaXJvLiBKw6EgYSBhcHJlY2lhw6fDo28gZG8gcmVhbCwgaW1wdWxzaW9uYWRhIHBvciBmbHV4b3MgZXh0ZXJub3MsIG1lbGhvcmEgZmlzY2FsIHRlbXBvcsOhcmlhIG91IGFsdGEgbm9zIHByZcOnb3MgZGFzIGNvbW1vZGl0aWVzLCByZWR1eiBwcmVzc8O1ZXMgaW5mbGFjaW9uw6FyaWFzIGUgY3JpYSBlc3Bhw6dvIHBhcmEgY29ydGVzIGdyYWR1YWlzIGRhIFNlbGljLgoKQW8gbWVzbW8gdGVtcG8sIGEgZMOtdmlkYSBww7pibGljYSBlIG8gQ0RTIGZ1bmNpb25hbSBjb21vIGluZGljYWRvcmVzIGRlIGNyZWRpYmlsaWRhZGUgZmlzY2FsIGUgcGVyY2Vww6fDo28gZGUgcmlzY28uIFVtIGF1bWVudG8gZG8gZW5kaXZpZGFtZW50byBvdSBkbyBwcsOqbWlvIGRlIHJpc2NvIGVsZXZhIGEgZGVzY29uZmlhbsOnYSBkb3MgaW52ZXN0aWRvcmVzLCBwcmVzc2lvbmEgbyBjw6JtYmlvIGUgb2JyaWdhIG8gQmFuY28gQ2VudHJhbCBhIG1hbnRlciB1bWEgcG9zdHVyYSBtYWlzIHJlc3RyaXRpdmEuIFBvciBvdXRybyBsYWRvLCB1bSBjZW7DoXJpbyBkZSBtZWxob3JhIGZpc2NhbCwgZXN0YWJpbGlkYWRlIHBvbMOtdGljYSBlIHRlcm1vcyBkZSB0cm9jYSBmYXZvcsOhdmVpcyBmb3J0YWxlY2UgbyByZWFsIGUgcGVybWl0ZSBtYWlvciBmbGV4aWJpbGlkYWRlIG5hIGNvbmR1w6fDo28gZGEgcG9sw610aWNhIG1vbmV0w6FyaWEuCgpPIG1lcmNhZG8gZGUgY29tbW9kaXRpZXMgYXR1YSBjb21vIGNhbmFsIHJlYWwgZGUgdHJhbnNtaXNzw6NvOiBhbHRhcyBkZSBwcmXDp29zIGZvcnRhbGVjZW0gYSBiYWxhbsOnYSBjb21lcmNpYWwgZSBzdXN0ZW50YW0gYSB2YWxvcml6YcOnw6NvIGNhbWJpYWwsIGVucXVhbnRvIHF1ZWRhcyByZWR1emVtIGEgZW50cmFkYSBkZSBkw7NsYXJlcyBlIHJlYXRpdmFtIHByZXNzw7VlcyBzb2JyZSBvIGPDom1iaW8gZSBvcyBqdXJvcy4gQXNzaW0sIGEgcG9sw610aWNhIG1vbmV0w6FyaWEgYnJhc2lsZWlyYSBwcmVjaXNhIGNvbnN0YW50ZW1lbnRlIGVxdWlsaWJyYXIgdmFyacOhdmVpcyBpbnRlcm5hcyAoaW5mbGHDp8OjbywgYXRpdmlkYWRlLCBkw612aWRhKSBlIGV4dGVybmFzIChGZWQgRnVuZHMsIHByZcOnb3MgZGUgY29tbW9kaXRpZXMsIGZsdXhvIGRlIGNhcGl0YWlzKSBwYXJhIHByZXNlcnZhciBhIGVzdGFiaWxpZGFkZSBtYWNyb2Vjb27DtG1pY2EuCgpFbSBzw61udGVzZSwgbyByZWxhY2lvbmFtZW50byBlbnRyZSBvIGPDom1iaW8gZSBhIFNlbGljIMOpIG8gbsO6Y2xlbyBkYSBwb2zDrXRpY2EgZWNvbsO0bWljYSBubyBCcmFzaWwuIEVsZSB0cmFkdXogYSByZXNwb3N0YSBkbyBwYcOtcyDDoHMgY29uZGnDp8O1ZXMgZ2xvYmFpcyBkZSBsaXF1aWRleiwgw6AgY29uZmlhbsOnYSBmaXNjYWwgZG9tw6lzdGljYSBlIGFvIGFwZXRpdGUgZGUgcmlzY28gZG9zIGludmVzdGlkb3Jlcy4gTWFudGVyIGVzc2UgZXF1aWzDrWJyaW8gZXhpZ2UgY29vcmRlbmHDp8OjbyBlbnRyZSBwb2zDrXRpY2EgbW9uZXTDoXJpYSBlIGZpc2NhbCwgcHJldmlzaWJpbGlkYWRlIGluc3RpdHVjaW9uYWwgZSB2aWdpbMOibmNpYSBjb25zdGFudGUgc29icmUgbyBhbWJpZW50ZSBleHRlcm5vLiDDiSBlc3NhIGludGVyYcOnw6NvICBlbnRyZSBqdXJvcywgY8OibWJpbyBlIGNyZWRpYmlsaWRhZGUgcXVlIGRlZmluaXLDoSBhIGNhcGFjaWRhZGUgZG8gQnJhc2lsIGRlIHN1c3RlbnRhciBjcmVzY2ltZW50byBlc3TDoXZlbCwgaW5mbGHDp8OjbyBjb250cm9sYWRhIGUgY29tcGV0aXRpdmlkYWRlIGludGVybmFjaW9uYWwgbm9zIHByw7N4aW1vcyBhbm9zLgoKCiMjIFJlZmVyw6puY2lhcwpCVEcgUEFDVFVBTC4gQ29udmVyc8OjbyBkbyByZWFsIGVtIGTDs2xhcjogcXVhbCBhIGluZmx1w6puY2lhIGRhIFNlbGljIG5vIGPDom1iaW8gYnJhc2lsZWlyby4gRGlzcG9uw612ZWwgZW06IGh0dHA6Ly9jb250ZW50LmJ0Z3BhY3R1YWwuY29tL2Jsb2cvZW1wcmVzYXMvY29udmVyc2FvLWRvLXJlYWwtZW0tZG9sYXItcXVhbC1hLWluZmx1ZW5jaWEtZGEtc2VsaWMtbm8tY2FtYmlvLWJyYXNpbGVpcm8uIEFjZXNzbyBlbTogMDYgZGUgb3V0dWJybyBkZSAyMDI1LgoKQlJBWkFCQU5LLiBUYXhhIFNlbGljIGUgY8OibWJpby4gRGlzcG9uw612ZWwgZW06IGh0dHBzOi8vd3d3LmJyYXphYmFuay5jb20uYnIvY29udGV1ZG8vdGF4YS1zZWxpYy1jYW1iaW8vLiBBY2Vzc28gZW06IDA2IGRlIG91dHVicm8gZGUgMjAyNS4KCkNMVUJFIERPUyBQT1VQQURPUkVTLiBTZWxpYywgZMOzbGFyIGUgaW5mbGHDp8Ojby4gRGlzcG9uw612ZWwgZW06IGh0dHBzOi8vY2x1YmVkb3Nwb3VwYWRvcmVzLmNvbS9zZWxpYy9kb2xhci1pbmZsYWNhby4gQWNlc3NvIGVtOiAwNiBkZSBvdXR1YnJvIGRlIDIwMjUuCgpCUkFaQUJBTksuIFNlbGljIGEgMTUgJTogRmVkIGNvcnRhIGp1cm9zIOKAlCBpbXBhY3Rvcy4gRGlzcG9uw612ZWwgZW06IGh0dHBzOi8vd3d3LmJyYXphYmFuay5jb20uYnIvY29udGV1ZG8vc2VsaWMtMTUtZmVkLWNvcnRhLWp1cm9zLWltcGFjdG9zLy4gQWNlc3NvIGVtOiAwNiBkZSBvdXR1YnJvIGRlIDIwMjUuCgpJTkZPTU9ORVkuIFRheGEgZGUgY8OibWJpby4gRGlzcG9uw612ZWwgZW06IGh0dHBzOi8vd3d3LmluZm9tb25leS5jb20uYnIvZ3VpYXMvdGF4YS1kZS1jYW1iaW8vLiBBY2Vzc28gZW06IDA2IGRlIG91dHVicm8gZGUgMjAyNS4KCkNOTiBCUkFTSUwuIFNlbSBjb3J0ZSBkZSBnYXN0b3MsIGVjb25vbWlzdGFzIGRpemVtIHF1ZSBqdXJvcyBhbHRvcyBwaW9yYW0gY3Jpc2UgZmlzY2FsLiBEaXNwb27DrXZlbCBlbTogaHR0cHM6Ly93d3cuY25uYnJhc2lsLmNvbS5ici9lY29ub21pYS9tYWNyb2Vjb25vbWlhL3NlbS1jb3J0ZS1kZS1nYXN0b3MtZWNvbm9taXN0YXMtZGl6ZW0tcXVlLWp1cm9zLWFsdG9zLXBpb3JhbS1jcmlzZS1maXNjYWwvLiBBY2Vzc28gZW06IDA2IGRlIG91dHVicm8gZGUgMjAyNS4KCkFHw4pOQ0lBIEJSQVNJTC4gRMOtdmlkYSBww7pibGljYSBzb2JlIDEyLDIgJSBlbSAyMDI0IGUgc3VwZXJhIFIkIDcsMyB0cmlsaMO1ZXMuIERpc3BvbsOtdmVsIGVtOiBodHRwczovL2FnZW5jaWFicmFzaWwuZWJjLmNvbS5ici9lY29ub21pYS9ub3RpY2lhLzIwMjUtMDIvZGl2aWRhLXB1YmxpY2Etc29iZS0xMjItZW0tMjAyNC1lLXN1cGVyYS1yLTczLXRyaWxob2VzLiBBY2Vzc28gZW06IDA2IGRlIG91dHVicm8gZGUgMjAyNS4KCkdPVkVSTk8gRE8gQlJBU0lMLiBCcmFzaWwgcmVnaXN0cmEgc3VwZXLDoXZpdCBkZSBVUyQgNiwxIGJpIGVtIGFnb3N0byBlIHJlY29yZGUgZGUgZXhwb3J0YcOnw7VlcyBub3MgcHJpbWVpcm9zIG9pdG8gbWVzZXMgZG8gYW5vLiBEaXNwb27DrXZlbCBlbTogaHR0cHM6Ly93d3cuZ292LmJyL3NlY29tL3B0LWJyL2Fzc3VudG9zL25vdGljaWFzLzIwMjUvMDkvYnJhc2lsLXJlZ2lzdHJhLXN1cGVyYXZpdC1kZS11cy02LTEtYmktZW0tYWdvc3RvLWUtcmVjb3JkZS1kZS1leHBvcnRhY29lcy1ub3MtcHJpbWVpcm9zLW9pdG8tbWVzZXMtZG8tYW5vLiBBY2Vzc28gZW06IDA2IGRlIG91dHVicm8gZGUgMjAyNS4KCklOVkVTVEFMSy4gTyBxdWUgw6kgcmlzY28tcGHDrXMgZSBjb21vIGZ1bmNpb25hIG8gY3JlZGl0IGRlZmF1bHQgc3dhcCAoQ0RTKS4gRGlzcG9uw612ZWwgZW06IGh0dHBzOi8vaW52ZXN0YWxrLmJiLmNvbS5ici9ub3RpY2lhcy9lY29ub21pYS9vLXF1ZS1lLXJpc2NvLXBhaXMtZS1jb21vLWZ1bmNpb25hLW8tY3JlZGl0LWRlZmF1bHQtc3dhcC1jZHMuIEFjZXNzbyBlbTogMDYgZGUgb3V0dWJybyBkZSAyMDI1LgoKTUFJUyBSRVRPUk5PLiBDRFMgQnJhc2lsLiBEaXNwb27DrXZlbCBlbTogaHR0cHM6Ly9tYWlzcmV0b3Juby5jb20vcG9ydGFsL3Rlcm1vcy9jL2Nkcy1icmFzaWwuIEFjZXNzbyBlbTogMDYgZGUgb3V0dWJybyBkZSAyMDI1LgoKQkFOQ08gQ0VOVFJBTCBETyBCUkFTSUwuIExvY2FsaXphciBzw6lyaWVzIGRvIFNHUy4gRGlzcG9uw612ZWwgZW06IGh0dHBzOi8vd3d3My5iY2IuZ292LmJyL3Nnc3B1Yi9sb2NhbGl6YXJzZXJpZXMvbG9jYWxpemFyU2VyaWVzLmRvP21ldGhvZD1wcmVwYXJhclRlbGFMb2NhbGl6YXJTZXJpZXMgQWNlc3NvIGVtOiAwNiBkZSBvdXR1YnJvIGRlIDIwMjUuCgpJUEVBREFUQS4gU8OpcmllcyBkbyBJcGVhZGF0YTogc8OpcmllIElEIDM4Mzg5LiBEaXNwb27DrXZlbCBlbTogaHR0cDovL2lwZWFkYXRhLmdvdi5ici9leGliZXNlcmllLmFzcHg/c2VyaWQ9MzgzODkuIEFjZXNzbyBlbTogMDYgZGUgb3V0dWJybyBkZSAyMDI1LgoKSU5WRVNUSU5HLkNPTS4gQnJhc2lsIOKAlCBDRFMgZGUgNSBhbm9zIChVU0QpOiBkYWRvcyBoaXN0w7NyaWNvcy4gRGlzcG9uw612ZWwgZW06IGh0dHBzOi8vYnIuaW52ZXN0aW5nLmNvbS9yYXRlcy1ib25kcy9icmF6aWwtY2RzLTUteWVhcnMtdXNkLWhpc3RvcmljYWwtZGF0YS4gQWNlc3NvIGVtOiAwNiBkZSBvdXR1YnJvIGRlIDIwMjUuCgpCQU5DTyBDRU5UUkFMIC8gRUNPTk9NSUEgKEJyYXNpbCkuIEJhbGFuw6dhIGNvbWVyY2lhbCBlIGNvbW1vZGl0aWVzIOKAlCBzw6lyaWUgbWVuc2FsLiBEaXNwb27DrXZlbCBlbTogaHR0cHM6Ly9iYWxhbmNhLmVjb25vbWlhLmdvdi5ici9iYWxhbmNhL0lQUS9jb21tb2RpdGllc19tZXMuaHRtbC4gQWNlc3NvIGVtOiAwNiBkZSBvdXR1YnJvIGRlIDIwMjUuCgpGRURFUkFMIFJFU0VSVkUgQkFOSyBPRiBTVC4gTE9VSVMgKEZSRUQpLiBTw6lyaWUgREVYQlpVUyDigJQgY8OibWJpbyByZWFsL2TDs2xhci4gRGlzcG9uw612ZWwgZW06IGh0dHBzOi8vZnJlZC5zdGxvdWlzZmVkLm9yZy9zZXJpZXMvREVYQlpVUy4gQWNlc3NvIGVtOiAwNiBkZSBvdXR1YnJvIGRlIDIwMjUuCgpCUkFTSUwuIENvbWV4VmlzIOKAlCBQb3J0YWwgQ29tZXhTdGF0LiBEaXNwb27DrXZlbCBlbTogaHR0cHM6Ly9jb21leHN0YXQubWRpYy5nb3YuYnIvcHQvY29tZXgtdmlzLiBBY2Vzc28gZW06IDA2IGRlIG91dHVicm8gZGUgMjAyNS4KCkJMQU5DSEFSRCwgT2xpdmllci4gTWFjcm9lY29ub21pYS4gNy4gZWQuIFPDo28gUGF1bG86IFBlYXJzb24sIDIwMTcKCg==