Análise de Conjuntura Macroeconômica - Caminhos e Desafios da
Política Fiscal no Brasil com dados atualizados no 3° Trimestre de
2025
Este relatório analisa a política fiscal brasileira em 2025,
destacando desafios, medidas recentes e perspectivas para o médio prazo.
A política fiscal, entendida como o conjunto de decisões relacionadas a
arrecadação, gastos e endividamento público, desempenha papel central na
condução da economia, influenciando o crescimento, a inflação e a
credibilidade do país perante investidores domésticos e
internacionais.
Inflação e Política Monetária no Cenário
Fiscal
O comportamento recente da inflação brasileira mostra trajetória de
desaceleração em 2025, após o ciclo de choques de custos e demanda que
marcaram os anos anteriores. O último dado disponível indica que a
inflação acumulada em 12 meses está em 5,13%, ainda acima do centro da
meta de 3%, embora já em patamar inferior ao observado em 2022–2023.
Essa redução decorre, em parte, da política monetária contracionista
implementada pelo Banco Central, que manteve a taxa Selic elevada por um
período prolongado para ancorar expectativas e reduzir a inércia
inflacionária.
Entretanto, a política fiscal tem desempenhado papel ambíguo nesse
processo. De um lado, medidas de contenção de despesas obrigatórias e a
tentativa de cumprimento do arcabouço fiscal contribuem para moderar
pressões de demanda. De outro, programas de expansão de transferências
sociais e incentivos tributários elevam o gasto primário, sustentando
parte do consumo das famílias e reduzindo a efetividade da política
monetária. Esse descompasso obriga a autoridade monetária a manter juros
elevados por mais tempo, aumentando o custo da desinflação.
O último dado da taxa Selic, em 14,90% ao ano, confirma esse
diagnóstico: mesmo diante da desaceleração da inflação, o patamar de
juros segue elevado em termos reais. Considerando a Selic nominal e
utilizando a inflação acumulada em 12 meses (5,13%) como proxy da
expectativa inflacionária, o juro real ex-ante situa-se em torno de 9,2%
— um dos mais altos do mundo. Esse nível evidencia o caráter fortemente
contracionista da política monetária, refletindo tanto a persistência
das pressões fiscais quanto a necessidade de preservação da
credibilidade do regime de metas. A percepção de risco fiscal eleva os
prêmios exigidos nos títulos públicos e pressiona o câmbio, limitando a
possibilidade de flexibilização monetária mais agressiva.
Portanto, a conjuntura atual mostra que o ritmo de convergência da
inflação depende menos da intensidade da política monetária e mais da
consistência da política fiscal. Sem avanços estruturais na consolidação
das contas públicas, o espaço para cortes sustentáveis na Selic
permanece restrito, mantendo a economia em ambiente de juros elevados e
inflação em processo lento de convergência.
Apêndice – Cálculo do Juro Real Ex-Ante
O juro real ex-ante é calculado a partir da taxa nominal de juros
(Selic) e da expectativa de inflação acumulada em 12 meses.
A fórmula utilizada foi:
\[
r = \frac{1+i}{1+\pi^e} - 1
\]
Onde:
- \(i\) é a taxa nominal de juros
(Selic, ao ano);
- \(\pi^e\) é a expectativa de
inflação (proxy: IPCA acumulado em 12 meses);
- \(r\) é a taxa real ex-ante de
juros.
Substituindo os valores:
\[
r = \frac{1 + 0.149}{1 + 0.0513} - 1 \approx 0.092 \; (\text{ou 9,2\% ao
ano})
\]
PIB e Política Fiscal
O desempenho recente da economia brasileira em 2025 evidencia
crescimento positivo, mas com sinais claros de desaceleração. A série
mensal do Banco Central, utilizada como proxy do PIB oficial, indica
crescimento anualizado de 7,58% no último dado disponível, refletindo
variações de curto prazo na atividade econômica. Ressalta-se que, por se
tratar de uma proxy mensal, esse indicador tende a amplificar flutuações
pontuais e não substitui os dados consolidados do IBGE.
Segundo o IBGE, o PIB do Brasil acumula alta de 3,2% nos últimos 12
meses, com crescimento de 2,2% em relação ao mesmo período do ano
anterior. Na passagem do primeiro para o segundo trimestre de 2025, a
economia expandiu 0,4%, sinalizando desaceleração frente ao avanço de
1,3% registrado no primeiro trimestre. A SPE atribui esse arrefecimento
à política monetária restritiva, que, como já mencionado, atua através
de juros elevados para conter pressões inflacionárias, impactando
consumo e investimento.
O cenário fiscal continua desempenhando papel central na dinâmica do
PIB. Medidas de contenção de despesas obrigatórias e esforços de
consolidação contribuem para moderar pressões sobre a demanda agregada,
enquanto programas de expansão de transferências sociais e incentivos
fiscais sustentam parte do consumo das famílias e investimentos
governamentais. Essa interação, combinada com a política monetária
contracionista, explica o ritmo moderado de crescimento observado nos
últimos trimestres e reforça a necessidade de coordenação entre
políticas fiscal e monetária para promover expansão sustentável.
Para os próximos meses, a SPE projeta ritmo de crescimento do PIB
ligeiramente inferior ao observado no segundo trimestre, considerando os
efeitos defasados da política monetária, a desaceleração das concessões
de crédito e o aumento das taxas de juros bancárias. Entretanto, fatores
como a resiliência do mercado de trabalho, o pagamento de precatórios e
a expansão do crédito consignado podem mitigar parcialmente o impacto da
política monetária sobre a atividade econômica.
Em síntese, o acompanhamento do PIB evidencia que, embora a proxy
mensal do BCB sugira crescimento robusto, os dados oficiais do IBGE
confirmam desaceleração, reforçando que a política fiscal — junto com os
efeitos da política monetária já discutidos no tópico anterior —
continua sendo determinante para a sustentação da atividade econômica e
a convergência gradual da inflação.
Panorama da Política Fiscal e o novo arcabouço
O novo arcabouço fiscal, em vigor desde 2024, substituiu o antigo
teto de gastos e estabeleceu limites para o crescimento das despesas
primárias acima da inflação, vinculados à trajetória de arrecadação.
Além disso, prevê metas de resultado primário e gatilhos de contenção em
caso de descumprimento, buscando conciliar maior flexibilidade
orçamentária com disciplina fiscal.
Para 2025, a meta definida é de déficit primário zero, com margem de
tolerância de ±0,25% do PIB. Para alcançá-la, o governo combina
instrumentos de contenção de despesas e de ampliação de receitas,
incluindo o contingenciamento de gastos discricionários, aumentos
pontuais de tributos (como IOF e reoneração de combustíveis) e receitas
extraordinárias provenientes de leilões de petróleo e dividendos de
estatais como a Petrobras, para complementar a arrecadação e apoiar o
cumprimento da meta fiscal. Esses recursos adicionais, chamados de
instrumentos pontuais de receita, têm caráter temporário e não alteram
estruturalmente o orçamento, mas são fundamentais para atingir as metas
de curto prazo.
A evolução recente do Resultado Primário do Setor Público Consolidado
(NFSP), acumulado em 12 meses, indica que em julho de 2025 o saldo
primário foi de 0,22% do PIB. A NFSP consolida receitas e despesas de
todos os níveis do setor público, eliminando operações internas entre
órgãos e desconsiderando efeitos de desvalorização cambial sobre a
dívida, oferecendo uma visão clara da capacidade fiscal do governo. Esse
resultado mostra que, embora positivo, o superávit primário ainda seja
limitado, sinalizando que o cumprimento do arcabouço depende da
manutenção das medidas de contenção e do desempenho das receitas
extraordinárias, especialmente em um contexto de crescimento econômico
mais lento.
Complementarmente, segundo o IBGE, a Receita Líquida do Governo
Federal, que reflete as receitas efetivamente arrecadadas já descontadas
as transferências a estados e municípios, atingiu 169,3 bilhões de reais
em agosto de 2025, registrando crescimento real de 8% em relação ao
mesmo mês de 2024. Apesar desse avanço na arrecadação, o governo
apresentou déficit primário de 19,7 bilhões de reais em agosto e 88
bilhões de reaus no acumulado do ano, evidenciando que, embora a
arrecadação esteja em expansão, as despesas ainda pressionam o resultado
fiscal. Esse cenário reforça que, mesmo com instrumentos de receita e
medidas de contenção em funcionamento, a disciplina na execução das
despesas e a manutenção do crescimento da arrecadação são essenciais
para assegurar a sustentabilidade do arcabouço fiscal e a estabilidade
econômica.
Projeções da Dívida e Cenários de Risco
As projeções da dívida do governo geral brasileiro evidenciam não
apenas a trajetória elevada do endividamento, mas também como diferenças
metodológicas alteram de forma significativa a percepção de risco. Para
2025, o Tesouro Nacional projeta a DBGG em 83,3% do PIB e a DLGG em
70,2%, valores que refletem a exclusão de ativos financeiros e operações
compromissadas na métrica líquida. Já o FMI projeta 92% do PIB, patamar
sensivelmente mais alto, pois inclui em sua contabilidade os títulos
públicos em carteira do Banco Central. Essa discrepância metodológica
reforça que, enquanto as métricas domésticas sugerem um endividamento
elevado porém manejável, a leitura externa tende a transmitir maior
vulnerabilidade fiscal, influenciando prêmio de risco, ratings e custos
de financiamento.
Nos anos seguintes até 2030, o Tesouro projeta crescimento moderado
da dívida, com relativa estabilização tanto da DBGG quanto da DLGG,
enquanto o FMI antecipa uma trajetória mais agressiva, com a dívida
alcançando 100% do PIB em 2030. Após esse horizonte, apenas as
estimativas do Tesouro estão disponíveis, o que amplia a incerteza sobre
a dinâmica de longo prazo. De todo modo, todas as séries convergem para
um diagnóstico comum: o Brasil seguirá operando em níveis elevados de
endividamento, exigindo disciplina fiscal para evitar pressões
adicionais sobre juros e inflação.
O cenário projetado pelo Tesouro Nacional sugere uma estabilização
gradual da dívida, sustentada por maior controle de despesas e pelo
efeito amortecedor da exclusão de ativos financeiros na métrica líquida.
Caso esse cenário se concretize, o país poderia operar sem aceleração
abrupta do custo de financiamento, preservando algum espaço de manobra
para políticas públicas. Já a projeção do FMI indica um endividamento
mais elevado e sensível a choques, transmitindo a ideia de que a
sustentabilidade fiscal brasileira depende de condições externas
favoráveis e de disciplina fiscal contínua. Essa diferença metodológica
se reflete diretamente na percepção de risco internacional, tornando a
avaliação de solvência mais restritiva do ponto de vista dos
investidores estrangeiros.
Vale destacar que a proximidade do próximo calendário eleitoral no
Brasil, que ocorrerá no final de 2026, aumenta o cenário de incerteza e
projeção de aumento da dívida pública do país considerando que, pela
teoria política e econômica do Political Bussiness Cycle, o
governo em exercício costuma dispor de instrumentos institucionais
(visibilidade, recursos orçamentários, influência sobre políticas
públicas) para utilizar a política fiscal com vistas eleitorais. Essas
dinâmicas podem comprometer a trajetória projetada de estabilização da
dívida se forem implementadas medidas temporárias sem contrapartida
estrutural, elevando o risco de deterioração fiscal no curto prazo.
A manutenção de dívida elevada, combinada à rigidez estrutural dos
gastos correntes, mantém o país exposto a riscos fiscais e financeiros.
A rolagem da dívida, em um ambiente de Selic alta e mercado de títulos
volátil, tende a encarecer o custo do serviço da dívida, sobretudo nos
papéis prefixados e indexados à inflação. Além disso, a percepção
internacional captada pelo FMI reforça a vulnerabilidade a revisões
negativas de rating e aumento dos spreads soberanos. Choques externos —
como valorização cambial, alta de commodities ou inflação global
persistente — também podem amplificar a pressão sobre juros e dívida,
restringindo ainda mais a margem de manobra fiscal.
Em síntese, embora o Brasil disponha de espaço para estabilizar a
trajetória da dívida no médio prazo, a credibilidade da política fiscal
será decisiva. O monitoramento contínuo da composição da dívida, da
evolução das receitas e da rigidez dos gastos é fundamental para reduzir
riscos de solvência e garantir maior resiliência diante de choques
externos e domésticos.
Apêndice - Métricas da Dívida Pública
Brasileira
A comparação entre a Dívida Líquida do Governo Geral (DLGG), a Dívida
Bruta do Governo Geral (DBGG) e a métrica de dívida calculada pelo FMI
evidencia diferenças metodológicas relevantes, que impactam a
interpretação da sustentabilidade fiscal.
A DLGG representa a diferença entre passivos e ativos financeiros do
governo geral — englobando União, estados e municípios, mas excluindo
empresas estatais não financeiras. Por descontar ativos financeiros,
como operações compromissadas lastreadas em títulos públicos, oferece
uma visão mais próxima do endividamento efetivo do setor público. Até
julho de 2025, a DLGG estava em torno de 65,8% do PIB.
Já a DBGG contabiliza todos os passivos do governo, sem deduzir
ativos financeiros. Isso significa que operações compromissadas, apesar
de seu caráter temporário, entram no cálculo como dívida, elevando o
valor total. Em julho de 2025, a DBGG atingiu 77,6% do PIB, permanecendo
sistematicamente acima da DLGG.
Por fim, a dívida do governo geral medida pelo FMI inclui,
adicionalmente, os títulos públicos em carteira do Banco Central. Esse
critério leva a uma estimativa ainda mais elevada, próxima a 90% do PIB
em 2025. Diferentemente das séries do Banco Central, os dados do FMI são
divulgados anualmente, e os valores mais recentes refletem projeções,
não observações mensais.
Em síntese, enquanto a DBGG tende a mostrar valores mais altos por
não descontar ativos financeiros, a DLGG capta de forma mais precisa a
posição líquida do setor público, e a métrica do FMI amplia o
endividamento aparente ao incluir títulos em posse da autoridade
monetária. Essas diferenças metodológicas ajudam a explicar por que a
percepção de risco do Brasil pode variar entre investidores domésticos e
internacionais, reforçando a importância de compreender o universo
contábil e os ativos considerados em cada indicador.
Conclusão
O cenário fiscal e econômico brasileiro em 2025 evidencia desafios
complexos de conciliação entre crescimento econômico, controle da
inflação e sustentabilidade das contas públicas. A política monetária
permanece contracionista para ancorar expectativas inflacionárias,
enquanto o novo arcabouço fiscal e as medidas de contenção de gastos
buscam garantir disciplina orçamentária.
A evolução do PIB indica crescimento moderado, e a análise da dívida
pública mostra níveis elevados, que exigem atenção contínua à execução
fiscal e à coordenação entre políticas econômica e fiscal. Embora haja
sinais de estabilidade, fatores conjunturais e incertezas políticas
reforçam a necessidade de monitoramento constante e de estratégias de
longo prazo para preservar a solvência, a credibilidade fiscal e o
equilíbrio macroeconômico.
Em suma, a sustentabilidade fiscal brasileira depende de decisões
consistentes e coordenadas, capazes de equilibrar restrições
orçamentárias, estímulos à atividade econômica e manutenção da confiança
de investidores e da sociedade.
LS0tDQp0aXRsZTogIlJlbGF0w7NyaW8gZGUgUG9sw610aWNhIEZpc2NhbCINCmF1dGhvcjogIllhc21pbiBaYWdvIChQcmVzaWRlbnRlKSBlIExhcmEgTWFyaWEgKERpcmV0b3JhIGRlIFJlbGHDp8O1ZXMgRXh0ZXJuYXMpLiBMdWl6IEdhbWEgKFByb2Zlc3NvciBPcmllbnRhZG9yKSAtIERvdXRvciBlbSBFY29ub21pYSBlIHByb2Zlc3NvciBkbyBJYm1lYyBCSCAiDQpkYXRlOiAiMjQtMDktMjAyNSINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDoNCiAgICB0b2M6IHRydWUNCiAgICB0b2NfZmxvYXQ6IHRydWUNCiAgICB0aGVtZTogbHVtZW4NCiAgICBoaWdobGlnaHQ6IHRhbmdvDQogICAgY29kZV9mb2xkaW5nOiBzaG93DQogICAgY29kZV9kb3dubG9hZDogdHJ1ZSANCi0tLQ0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gRkFMU0UsIG1lc3NhZ2UgPSBGQUxTRSwgd2FybmluZyA9IEZBTFNFKQ0KDQojIENhcnJlZ2FyIHBhY290ZXMNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShwbG90bHkpDQpsaWJyYXJ5KGhpZ2hjaGFydGVyKQ0KbGlicmFyeShmcmVkcikNCmxpYnJhcnkocmJjYikNCmxpYnJhcnkocXVhbnRtb2QpDQpsaWJyYXJ5KGx1YnJpZGF0ZSkNCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkodGliYmxlKQ0KbGlicmFyeShzY2FsZXMpDQpsaWJyYXJ5KGh0dHIpDQpsaWJyYXJ5KGpzb25saXRlKQ0KbGlicmFyeShzdHJpbmdyKQ0KbGlicmFyeSh0aWR5cikNCmxpYnJhcnkocGRmdG9vbHMpDQoNCg0KDQpgYGANCg0KIyBBbsOhbGlzZSBkZSBDb25qdW50dXJhIE1hY3JvZWNvbsO0bWljYSAtIENhbWluaG9zIGUgRGVzYWZpb3MgZGEgUG9sw610aWNhIEZpc2NhbCBubyBCcmFzaWwgY29tIGRhZG9zIGF0dWFsaXphZG9zIG5vIDPCsCBUcmltZXN0cmUgZGUgMjAyNQ0KDQpFc3RlIHJlbGF0w7NyaW8gYW5hbGlzYSBhIHBvbMOtdGljYSBmaXNjYWwgYnJhc2lsZWlyYSBlbSAyMDI1LCBkZXN0YWNhbmRvIGRlc2FmaW9zLCBtZWRpZGFzIHJlY2VudGVzIGUgcGVyc3BlY3RpdmFzIHBhcmEgbyBtw6lkaW8gcHJhem8uIEEgcG9sw610aWNhIGZpc2NhbCwgZW50ZW5kaWRhIGNvbW8gbyBjb25qdW50byBkZSBkZWNpc8O1ZXMgcmVsYWNpb25hZGFzIGEgYXJyZWNhZGHDp8OjbywgZ2FzdG9zIGUgZW5kaXZpZGFtZW50byBww7pibGljbywgZGVzZW1wZW5oYSBwYXBlbCBjZW50cmFsIG5hIGNvbmR1w6fDo28gZGEgZWNvbm9taWEsIGluZmx1ZW5jaWFuZG8gbyBjcmVzY2ltZW50bywgYSBpbmZsYcOnw6NvIGUgYSBjcmVkaWJpbGlkYWRlIGRvIHBhw61zIHBlcmFudGUgaW52ZXN0aWRvcmVzIGRvbcOpc3RpY29zIGUgaW50ZXJuYWNpb25haXMuDQoNCiMjICoqSW5mbGHDp8OjbyBlIFBvbMOtdGljYSBNb25ldMOhcmlhIG5vIENlbsOhcmlvIEZpc2NhbCoqDQoNCmBgYHtyfQ0KbGlicmFyeShyYmNiKQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkobHVicmlkYXRlKQ0KbGlicmFyeShoaWdoY2hhcnRlcikNCg0KIyAtLS0gSVBDQSAtLS0NCmlwY2EgPC0gZ2V0X3NlcmllcygxMzUyMiwgc3RhcnRfZGF0ZSA9ICIyMDE5LTAxLTAxIikgJT4lDQogIHJlbmFtZShkYXRhID0gZGF0ZSwgaXBjYSA9IGAxMzUyMmApDQoNCiMgLS0tIFNlbGljIC0tLQ0Kc2VsaWMgPC0gZ2V0X3NlcmllcygxMTc4LCBzdGFydF9kYXRlID0gIjIwMTktMDEtMDEiKSAlPiUNCiAgcmVuYW1lKGRhdGEgPSBkYXRlLCBzZWxpYyA9IGAxMTc4YCkgJT4lDQogIG11dGF0ZShtZXMgPSBmbG9vcl9kYXRlKGRhdGEsICJtb250aCIpKSAlPiUNCiAgZ3JvdXBfYnkobWVzKSAlPiUNCiAgc3VtbWFyaXNlKHNlbGljID0gbWVhbihzZWxpYywgbmEucm0gPSBUUlVFKSwgLmdyb3VwcyA9ICJkcm9wIikNCg0KIyAtLS0gR3LDoWZpY28gY29tYmluYWRvIC0tLQ0KaGlnaGNoYXJ0KHR5cGUgPSAic3RvY2siKSAlPiUNCiAgIyBJUENBIC0gY29sdW5hDQogIGhjX2FkZF9zZXJpZXMoaXBjYSwgdHlwZSA9ICJjb2x1bW4iLA0KICAgICAgICAgICAgICAgIGhjYWVzKHggPSBkYXRhLCB5ID0gaXBjYSksDQogICAgICAgICAgICAgICAgbmFtZSA9ICJJbmZsYcOnw6NvIGFudWFsaXphZGEgKElQQ0EpIiwNCiAgICAgICAgICAgICAgICBjb2xvciA9ICIjRkVCNzEyIiwNCiAgICAgICAgICAgICAgICB5QXhpcyA9IDApICU+JQ0KICAjIFNlbGljIC0gbGluaGENCiAgaGNfYWRkX3NlcmllcyhzZWxpYywgdHlwZSA9ICJsaW5lIiwNCiAgICAgICAgICAgICAgICBoY2Flcyh4ID0gbWVzLCB5ID0gc2VsaWMpLA0KICAgICAgICAgICAgICAgIG5hbWUgPSAiU2VsaWMgYW51YWxpemFkYSIsDQogICAgICAgICAgICAgICAgY29sb3IgPSAiIzAyMDIzQyIsDQogICAgICAgICAgICAgICAgeUF4aXMgPSAxKSAlPiUNCiAgIyBUw610dWxvcyBlIGxlZ2VuZGFzDQogIGhjX3RpdGxlKHRleHQgPSAiSW5mbGHDp8OjbyBlIFNlbGljIOKAkyDDmmx0aW1vcyA1IGFub3MiKSAlPiUNCiAgaGNfc3VidGl0bGUodGV4dCA9ICJGb250ZTogQmFuY28gQ2VudHJhbCBkbyBCcmFzaWwgKFNHUyAxMzUyMiBlIDExNzgpIikgJT4lDQogICMgRWl4b3MgeSBzZXBhcmFkb3MNCiAgaGNfeUF4aXNfbXVsdGlwbGVzKA0KICAgIGxpc3QodGl0bGUgPSBsaXN0KHRleHQgPSAiSW5mbGHDp8OjbyAoJSkiKSwgb3Bwb3NpdGUgPSBGQUxTRSksDQogICAgbGlzdCh0aXRsZSA9IGxpc3QodGV4dCA9ICJTZWxpYyAoJSBhLmEuKSIpLCBvcHBvc2l0ZSA9IFRSVUUpDQogICkgJT4lDQogIGhjX3Rvb2x0aXAoc2hhcmVkID0gVFJVRSwNCiAgICAgICAgICAgICBwb2ludEZvcm1hdCA9ICI8Yj57c2VyaWVzLm5hbWV9PC9iPjoge3BvaW50Lnk6LjJmfSU8YnI+RGF0YToge3BvaW50Lng6JWIvJVl9IikgJT4lDQogIGhjX2NyZWRpdHMoZW5hYmxlZCA9IFRSVUUsIHRleHQgPSAiRm9udGU6IEJDQiB8IEdyw6FmaWNvOiBFbGFib3Jhw6fDo28gUHLDs3ByaWEiKSAlPiUNCiAgaGNfZXhwb3J0aW5nKGVuYWJsZWQgPSBUUlVFKSAlPiUNCiAgaGNfbGVnZW5kKGVuYWJsZWQgPSBUUlVFKQ0KDQpgYGANCg0KTyBjb21wb3J0YW1lbnRvIHJlY2VudGUgZGEgaW5mbGHDp8OjbyBicmFzaWxlaXJhIG1vc3RyYSB0cmFqZXTDs3JpYSBkZSBkZXNhY2VsZXJhw6fDo28gZW0gMjAyNSwgYXDDs3MgbyBjaWNsbyBkZSBjaG9xdWVzIGRlIGN1c3RvcyBlIGRlbWFuZGEgcXVlIG1hcmNhcmFtIG9zIGFub3MgYW50ZXJpb3Jlcy4gTyDDumx0aW1vIGRhZG8gZGlzcG9uw612ZWwgaW5kaWNhIHF1ZSBhIGluZmxhw6fDo28gYWN1bXVsYWRhIGVtIDEyIG1lc2VzIGVzdMOhIGVtIDUsMTMlLCBhaW5kYSBhY2ltYSBkbyBjZW50cm8gZGEgbWV0YSBkZSAzJSwgZW1ib3JhIGrDoSBlbSBwYXRhbWFyIGluZmVyaW9yIGFvIG9ic2VydmFkbyBlbSAyMDIy4oCTMjAyMy4gRXNzYSByZWR1w6fDo28gZGVjb3JyZSwgZW0gcGFydGUsIGRhIHBvbMOtdGljYSBtb25ldMOhcmlhIGNvbnRyYWNpb25pc3RhIGltcGxlbWVudGFkYSBwZWxvIEJhbmNvIENlbnRyYWwsIHF1ZSBtYW50ZXZlIGEgdGF4YSBTZWxpYyBlbGV2YWRhIHBvciB1bSBwZXLDrW9kbyBwcm9sb25nYWRvIHBhcmEgYW5jb3JhciBleHBlY3RhdGl2YXMgZSByZWR1emlyIGEgaW7DqXJjaWEgaW5mbGFjaW9uw6FyaWEuDQoNCkVudHJldGFudG8sIGEgcG9sw610aWNhIGZpc2NhbCB0ZW0gZGVzZW1wZW5oYWRvIHBhcGVsIGFtYsOtZ3VvIG5lc3NlIHByb2Nlc3NvLiBEZSB1bSBsYWRvLCBtZWRpZGFzIGRlIGNvbnRlbsOnw6NvIGRlIGRlc3Blc2FzIG9icmlnYXTDs3JpYXMgZSBhIHRlbnRhdGl2YSBkZSBjdW1wcmltZW50byBkbyBhcmNhYm91w6dvIGZpc2NhbCBjb250cmlidWVtIHBhcmEgbW9kZXJhciBwcmVzc8O1ZXMgZGUgZGVtYW5kYS4gRGUgb3V0cm8sIHByb2dyYW1hcyBkZSBleHBhbnPDo28gZGUgdHJhbnNmZXLDqm5jaWFzIHNvY2lhaXMgZSBpbmNlbnRpdm9zIHRyaWJ1dMOhcmlvcyBlbGV2YW0gbyBnYXN0byBwcmltw6FyaW8sIHN1c3RlbnRhbmRvIHBhcnRlIGRvIGNvbnN1bW8gZGFzIGZhbcOtbGlhcyBlIHJlZHV6aW5kbyBhIGVmZXRpdmlkYWRlIGRhIHBvbMOtdGljYSBtb25ldMOhcmlhLiBFc3NlIGRlc2NvbXBhc3NvIG9icmlnYSBhIGF1dG9yaWRhZGUgbW9uZXTDoXJpYSBhIG1hbnRlciBqdXJvcyBlbGV2YWRvcyBwb3IgbWFpcyB0ZW1wbywgYXVtZW50YW5kbyBvIGN1c3RvIGRhIGRlc2luZmxhw6fDo28uDQoNCk8gw7psdGltbyBkYWRvIGRhIHRheGEgU2VsaWMsIGVtIDE0LDkwJSBhbyBhbm8sIGNvbmZpcm1hIGVzc2UgZGlhZ27Ds3N0aWNvOiBtZXNtbyBkaWFudGUgZGEgZGVzYWNlbGVyYcOnw6NvIGRhIGluZmxhw6fDo28sIG8gcGF0YW1hciBkZSBqdXJvcyBzZWd1ZSBlbGV2YWRvIGVtIHRlcm1vcyByZWFpcy4gQ29uc2lkZXJhbmRvIGEgU2VsaWMgbm9taW5hbCBlIHV0aWxpemFuZG8gYSBpbmZsYcOnw6NvIGFjdW11bGFkYSBlbSAxMiBtZXNlcyAoNSwxMyUpIGNvbW8gcHJveHkgZGEgZXhwZWN0YXRpdmEgaW5mbGFjaW9uw6FyaWEsIG8ganVybyByZWFsIGV4LWFudGUgc2l0dWEtc2UgZW0gdG9ybm8gZGUgOSwyJSDigJQgdW0gZG9zIG1haXMgYWx0b3MgZG8gbXVuZG8uIEVzc2UgbsOtdmVsIGV2aWRlbmNpYSBvIGNhcsOhdGVyIGZvcnRlbWVudGUgY29udHJhY2lvbmlzdGEgZGEgcG9sw610aWNhIG1vbmV0w6FyaWEsIHJlZmxldGluZG8gdGFudG8gYSBwZXJzaXN0w6puY2lhIGRhcyBwcmVzc8O1ZXMgZmlzY2FpcyBxdWFudG8gYSBuZWNlc3NpZGFkZSBkZSBwcmVzZXJ2YcOnw6NvIGRhIGNyZWRpYmlsaWRhZGUgZG8gcmVnaW1lIGRlIG1ldGFzLiBBIHBlcmNlcMOnw6NvIGRlIHJpc2NvIGZpc2NhbCBlbGV2YSBvcyBwcsOqbWlvcyBleGlnaWRvcyBub3MgdMOtdHVsb3MgcMO6YmxpY29zIGUgcHJlc3Npb25hIG8gY8OibWJpbywgbGltaXRhbmRvIGEgcG9zc2liaWxpZGFkZSBkZSBmbGV4aWJpbGl6YcOnw6NvIG1vbmV0w6FyaWEgbWFpcyBhZ3Jlc3NpdmEuDQoNClBvcnRhbnRvLCBhIGNvbmp1bnR1cmEgYXR1YWwgbW9zdHJhIHF1ZSBvIHJpdG1vIGRlIGNvbnZlcmfDqm5jaWEgZGEgaW5mbGHDp8OjbyBkZXBlbmRlIG1lbm9zIGRhIGludGVuc2lkYWRlIGRhIHBvbMOtdGljYSBtb25ldMOhcmlhIGUgbWFpcyBkYSBjb25zaXN0w6puY2lhIGRhIHBvbMOtdGljYSBmaXNjYWwuIFNlbSBhdmFuw6dvcyBlc3RydXR1cmFpcyBuYSBjb25zb2xpZGHDp8OjbyBkYXMgY29udGFzIHDDumJsaWNhcywgbyBlc3Bhw6dvIHBhcmEgY29ydGVzIHN1c3RlbnTDoXZlaXMgbmEgU2VsaWMgcGVybWFuZWNlIHJlc3RyaXRvLCBtYW50ZW5kbyBhIGVjb25vbWlhIGVtIGFtYmllbnRlIGRlIGp1cm9zIGVsZXZhZG9zIGUgaW5mbGHDp8OjbyBlbSBwcm9jZXNzbyBsZW50byBkZSBjb252ZXJnw6puY2lhLg0KDQojIyMjIEFww6puZGljZSDigJMgQ8OhbGN1bG8gZG8gSnVybyBSZWFsIEV4LUFudGUNCg0KTyBqdXJvIHJlYWwgZXgtYW50ZSDDqSBjYWxjdWxhZG8gYSBwYXJ0aXIgZGEgdGF4YSBub21pbmFsIGRlIGp1cm9zIChTZWxpYykgZSBkYSBleHBlY3RhdGl2YSBkZSBpbmZsYcOnw6NvIGFjdW11bGFkYSBlbSAxMiBtZXNlcy5cDQpBIGbDs3JtdWxhIHV0aWxpemFkYSBmb2k6DQoNCiQkDQpyID0gXGZyYWN7MStpfXsxK1xwaV5lfSAtIDENCiQkDQoNCk9uZGU6DQoNCi0gICAkaSQgw6kgYSB0YXhhIG5vbWluYWwgZGUganVyb3MgKFNlbGljLCBhbyBhbm8pOw0KLSAgICRccGleZSQgw6kgYSBleHBlY3RhdGl2YSBkZSBpbmZsYcOnw6NvIChwcm94eTogSVBDQSBhY3VtdWxhZG8gZW0gMTIgbWVzZXMpOw0KLSAgICRyJCDDqSBhIHRheGEgcmVhbCBleC1hbnRlIGRlIGp1cm9zLg0KDQpTdWJzdGl0dWluZG8gb3MgdmFsb3JlczoNCg0KJCQNCnIgPSBcZnJhY3sxICsgMC4xNDl9ezEgKyAwLjA1MTN9IC0gMSBcYXBwcm94IDAuMDkyIFw7IChcdGV4dHtvdSA5LDJcJSBhbyBhbm99KQ0KJCQNCg0KIyMgKipQSUIgZSBQb2zDrXRpY2EgRmlzY2FsKioNCg0KYGBge3J9DQpsaWJyYXJ5KHJiY2IpDQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeShsdWJyaWRhdGUpDQpsaWJyYXJ5KGhpZ2hjaGFydGVyKQ0KDQojIDEuIFPDqXJpZSBQSUIgKDQzODAgLSDDrW5kaWNlIGVuY2FkZWFkbyBtZW5zYWwsIDE5OTU9MTAwKQ0KcGliX3JhdyA8LSByYmNiOjpnZXRfc2VyaWVzKDQzODAsIHN0YXJ0X2RhdGUgPSAiMjAxOC0wMS0wMSIpICU+JQ0KICByZW5hbWUoZGF0YSA9IGRhdGUsIHBpYl9pbmRpY2UgPSBgNDM4MGApDQoNCiMgMi4gQ2FsY3VsYXIgdmFyaWHDp8OjbyBhbnVhbGl6YWRhIChtw6pzIGF0dWFsIHZzIG1lc21vIG3DqnMgZG8gYW5vIGFudGVyaW9yKQ0KcGliX3ZhciA8LSBwaWJfcmF3ICU+JQ0KICBhcnJhbmdlKGRhdGEpICU+JQ0KICBtdXRhdGUoDQogICAgcGliX3ZhciA9IChwaWJfaW5kaWNlIC8gbGFnKHBpYl9pbmRpY2UsIDEyKSAtIDEpICogMTAwDQogICkgJT4lDQogIGZpbHRlcighaXMubmEocGliX3ZhcikpDQoNCiMgMy4gR3LDoWZpY28gaW50ZXJhdGl2byAobWVuc2FsLCB2YXJpYcOnw6NvIGFudWFsaXphZGEpDQpoaWdoY2hhcnQodHlwZSA9ICJzdG9jayIpICU+JQ0KICBoY19hZGRfc2VyaWVzKHBpYl92YXIsIHR5cGUgPSAiY29sdW1uIiwNCiAgICAgICAgICAgICAgICBoY2Flcyh4ID0gZGF0YSwgeSA9IHBpYl92YXIpLA0KICAgICAgICAgICAgICAgIG5hbWUgPSAiUElCICglIGEuYS4pIiwNCiAgICAgICAgICAgICAgICBjb2xvciA9ICIjMDIwMjNDIikgJT4lDQogIGhjX3RpdGxlKHRleHQgPSAiRmlndXJhIDM6IFBJQiBkbyBCcmFzaWwg4oCTIFZhcmlhw6fDo28gTWVuc2FsIEFudWFsaXphZGEiKSAlPiUNCiAgaGNfc3VidGl0bGUodGV4dCA9ICJGb250ZTogQmFuY28gQ2VudHJhbCBkbyBCcmFzaWwgKFNHUyA0MzgwKSIpICU+JQ0KICBoY195QXhpcyh0aXRsZSA9IGxpc3QodGV4dCA9ICJDcmVzY2ltZW50byBkbyBQSUIgKCUgYS5hLikiKSkgJT4lDQogIGhjX3Rvb2x0aXAoDQogICAgdXNlSFRNTCA9IFRSVUUsDQogICAgaGVhZGVyRm9ybWF0ID0gIiIsDQogICAgcG9pbnRGb3JtYXQgPSAiRGF0YTogPGI+e3BvaW50Lng6JWIvJVl9PC9iPjxici8+UElCOiA8Yj57cG9pbnQueTouMmZ9JTwvYj4iDQogICkgJT4lDQogIGhjX2V4cG9ydGluZyhlbmFibGVkID0gVFJVRSkgJT4lDQogIGhjX2NyZWRpdHMoZW5hYmxlZCA9IFRSVUUsIHRleHQgPSAiRm9udGU6IEJDQiB8IEdyw6FmaWNvOiBFbGFib3Jhw6fDo28gUHLDs3ByaWEiKQ0KDQpgYGANCg0KTyBkZXNlbXBlbmhvIHJlY2VudGUgZGEgZWNvbm9taWEgYnJhc2lsZWlyYSBlbSAyMDI1IGV2aWRlbmNpYSBjcmVzY2ltZW50byBwb3NpdGl2bywgbWFzIGNvbSBzaW5haXMgY2xhcm9zIGRlIGRlc2FjZWxlcmHDp8Ojby4gQSBzw6lyaWUgbWVuc2FsIGRvIEJhbmNvIENlbnRyYWwsIHV0aWxpemFkYSBjb21vIHByb3h5IGRvIFBJQiBvZmljaWFsLCBpbmRpY2EgY3Jlc2NpbWVudG8gYW51YWxpemFkbyBkZSA3LDU4JSBubyDDumx0aW1vIGRhZG8gZGlzcG9uw612ZWwsIHJlZmxldGluZG8gdmFyaWHDp8O1ZXMgZGUgY3VydG8gcHJhem8gbmEgYXRpdmlkYWRlIGVjb27DtG1pY2EuIFJlc3NhbHRhLXNlIHF1ZSwgcG9yIHNlIHRyYXRhciBkZSB1bWEgcHJveHkgbWVuc2FsLCBlc3NlIGluZGljYWRvciB0ZW5kZSBhIGFtcGxpZmljYXIgZmx1dHVhw6fDtWVzIHBvbnR1YWlzIGUgbsOjbyBzdWJzdGl0dWkgb3MgZGFkb3MgY29uc29saWRhZG9zIGRvIElCR0UuDQoNClNlZ3VuZG8gbyBJQkdFLCBvIFBJQiBkbyBCcmFzaWwgYWN1bXVsYSBhbHRhIGRlIDMsMiUgbm9zIMO6bHRpbW9zIDEyIG1lc2VzLCBjb20gY3Jlc2NpbWVudG8gZGUgMiwyJSBlbSByZWxhw6fDo28gYW8gbWVzbW8gcGVyw61vZG8gZG8gYW5vIGFudGVyaW9yLiBOYSBwYXNzYWdlbSBkbyBwcmltZWlybyBwYXJhIG8gc2VndW5kbyB0cmltZXN0cmUgZGUgMjAyNSwgYSBlY29ub21pYSBleHBhbmRpdSAwLDQlLCBzaW5hbGl6YW5kbyBkZXNhY2VsZXJhw6fDo28gZnJlbnRlIGFvIGF2YW7Dp28gZGUgMSwzJSByZWdpc3RyYWRvIG5vIHByaW1laXJvIHRyaW1lc3RyZS4gQSBTUEUgYXRyaWJ1aSBlc3NlIGFycmVmZWNpbWVudG8gw6AgcG9sw610aWNhIG1vbmV0w6FyaWEgcmVzdHJpdGl2YSwgcXVlLCBjb21vIGrDoSBtZW5jaW9uYWRvLCBhdHVhIGF0cmF2w6lzIGRlIGp1cm9zIGVsZXZhZG9zIHBhcmEgY29udGVyIHByZXNzw7VlcyBpbmZsYWNpb27DoXJpYXMsIGltcGFjdGFuZG8gY29uc3VtbyBlIGludmVzdGltZW50by4NCg0KTyBjZW7DoXJpbyBmaXNjYWwgY29udGludWEgZGVzZW1wZW5oYW5kbyBwYXBlbCBjZW50cmFsIG5hIGRpbsOibWljYSBkbyBQSUIuIE1lZGlkYXMgZGUgY29udGVuw6fDo28gZGUgZGVzcGVzYXMgb2JyaWdhdMOzcmlhcyBlIGVzZm9yw6dvcyBkZSBjb25zb2xpZGHDp8OjbyBjb250cmlidWVtIHBhcmEgbW9kZXJhciBwcmVzc8O1ZXMgc29icmUgYSBkZW1hbmRhIGFncmVnYWRhLCBlbnF1YW50byBwcm9ncmFtYXMgZGUgZXhwYW5zw6NvIGRlIHRyYW5zZmVyw6puY2lhcyBzb2NpYWlzIGUgaW5jZW50aXZvcyBmaXNjYWlzIHN1c3RlbnRhbSBwYXJ0ZSBkbyBjb25zdW1vIGRhcyBmYW3DrWxpYXMgZSBpbnZlc3RpbWVudG9zIGdvdmVybmFtZW50YWlzLiBFc3NhIGludGVyYcOnw6NvLCBjb21iaW5hZGEgY29tIGEgcG9sw610aWNhIG1vbmV0w6FyaWEgY29udHJhY2lvbmlzdGEsIGV4cGxpY2EgbyByaXRtbyBtb2RlcmFkbyBkZSBjcmVzY2ltZW50byBvYnNlcnZhZG8gbm9zIMO6bHRpbW9zIHRyaW1lc3RyZXMgZSByZWZvcsOnYSBhIG5lY2Vzc2lkYWRlIGRlIGNvb3JkZW5hw6fDo28gZW50cmUgcG9sw610aWNhcyBmaXNjYWwgZSBtb25ldMOhcmlhIHBhcmEgcHJvbW92ZXIgZXhwYW5zw6NvIHN1c3RlbnTDoXZlbC4NCg0KUGFyYSBvcyBwcsOzeGltb3MgbWVzZXMsIGEgU1BFIHByb2pldGEgcml0bW8gZGUgY3Jlc2NpbWVudG8gZG8gUElCIGxpZ2VpcmFtZW50ZSBpbmZlcmlvciBhbyBvYnNlcnZhZG8gbm8gc2VndW5kbyB0cmltZXN0cmUsIGNvbnNpZGVyYW5kbyBvcyBlZmVpdG9zIGRlZmFzYWRvcyBkYSBwb2zDrXRpY2EgbW9uZXTDoXJpYSwgYSBkZXNhY2VsZXJhw6fDo28gZGFzIGNvbmNlc3PDtWVzIGRlIGNyw6lkaXRvIGUgbyBhdW1lbnRvIGRhcyB0YXhhcyBkZSBqdXJvcyBiYW5jw6FyaWFzLiBFbnRyZXRhbnRvLCBmYXRvcmVzIGNvbW8gYSByZXNpbGnDqm5jaWEgZG8gbWVyY2FkbyBkZSB0cmFiYWxobywgbyBwYWdhbWVudG8gZGUgcHJlY2F0w7NyaW9zIGUgYSBleHBhbnPDo28gZG8gY3LDqWRpdG8gY29uc2lnbmFkbyBwb2RlbSBtaXRpZ2FyIHBhcmNpYWxtZW50ZSBvIGltcGFjdG8gZGEgcG9sw610aWNhIG1vbmV0w6FyaWEgc29icmUgYSBhdGl2aWRhZGUgZWNvbsO0bWljYS4NCg0KRW0gc8OtbnRlc2UsIG8gYWNvbXBhbmhhbWVudG8gZG8gUElCIGV2aWRlbmNpYSBxdWUsIGVtYm9yYSBhIHByb3h5IG1lbnNhbCBkbyBCQ0Igc3VnaXJhIGNyZXNjaW1lbnRvIHJvYnVzdG8sIG9zIGRhZG9zIG9maWNpYWlzIGRvIElCR0UgY29uZmlybWFtIGRlc2FjZWxlcmHDp8OjbywgcmVmb3LDp2FuZG8gcXVlIGEgcG9sw610aWNhIGZpc2NhbCDigJQganVudG8gY29tIG9zIGVmZWl0b3MgZGEgcG9sw610aWNhIG1vbmV0w6FyaWEgasOhIGRpc2N1dGlkb3Mgbm8gdMOzcGljbyBhbnRlcmlvciDigJQgY29udGludWEgc2VuZG8gZGV0ZXJtaW5hbnRlIHBhcmEgYSBzdXN0ZW50YcOnw6NvIGRhIGF0aXZpZGFkZSBlY29uw7RtaWNhIGUgYSBjb252ZXJnw6puY2lhIGdyYWR1YWwgZGEgaW5mbGHDp8Ojby4NCg0KIyMgKipQYW5vcmFtYSBkYSBQb2zDrXRpY2EgRmlzY2FsIGUgbyBub3ZvIGFyY2Fib3XDp28qKg0KDQpgYGB7cn0NCiMgUGFjb3Rlcw0KbGlicmFyeShyYmNiKQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkobHVicmlkYXRlKQ0KbGlicmFyeShoaWdoY2hhcnRlcikNCg0KIyAxKSBCYWl4YXIgYSBzw6lyaWUgZG8gQkNCDQojIFPDqXJpZSBTR1MgNTc5MyA9IFJlc3VsdGFkbyBkbyBTZXRvciBQw7pibGljbyBDb25zb2xpZGFkbyAtIFByaW3DoXJpbyBhY3VtdWxhZG8gZW0gMTIgbWVzZXMgLyBQSUIgKCUgZG8gUElCKQ0KcmVzdWx0YWRvX3ByaW1hcmlvIDwtIHJiY2I6OmdldF9zZXJpZXMoYyhyZXNfcHJpbV9waWIgPSA1NzkzKSwgc3RhcnRfZGF0ZSA9ICIyMDE5LTAxLTAxIikgJT4lDQogIHJlbmFtZShkYXRhID0gZGF0ZSkgJT4lDQogIGZpbHRlcighaXMubmEocmVzX3ByaW1fcGliKSkNCg0KIyAyKSBDb25zdHJ1aXIgbyBncsOhZmljbyBpbnRlcmF0aXZvIG5vIG1vZGVsbyBzdG9jaw0KaGlnaGNoYXJ0KHR5cGUgPSAic3RvY2siKSAlPiUNCiAgaGNfYWRkX3NlcmllcyhyZXN1bHRhZG9fcHJpbWFyaW8sIHR5cGUgPSAibGluZSIsDQogICAgICAgICAgICAgICAgaGNhZXMoeCA9IGRhdGEsIHkgPSByZXNfcHJpbV9waWIpLA0KICAgICAgICAgICAgICAgIG5hbWUgPSAiUmVzdWx0YWRvIHByaW3DoXJpbyAoJSBkbyBQSUIsIDEybSBhY3VtdWxhZG8pIiwNCiAgICAgICAgICAgICAgICBjb2xvciA9ICIjMDIwMjNDIikgJT4lDQogIA0KICAjIFTDrXR1bG9zDQogIGhjX3RpdGxlKHRleHQgPSAiRmlndXJhIDQ6IFJlc3VsdGFkbyBQcmltw6FyaW8gKCUgZG8gUElCLCBhY3VtdWxhZG8gZW0gMTIgbWVzZXMpIikgJT4lDQogIGhjX3N1YnRpdGxlKHRleHQgPSAiRm9udGU6IEJhbmNvIENlbnRyYWwgZG8gQnJhc2lsIChTR1MgNTc5MykiKSAlPiUNCiAgDQogICMgRWl4byBZDQogIGhjX3lBeGlzKHRpdGxlID0gbGlzdCh0ZXh0ID0gIiUgZG8gUElCIikpICU+JQ0KICANCiAgIyBUb29sdGlwIGN1c3RvbWl6YWRvDQogIGhjX3Rvb2x0aXAoDQogICAgdXNlSFRNTCA9IFRSVUUsDQogICAgc2hhcmVkID0gRkFMU0UsDQogICAgdmFsdWVEZWNpbWFscyA9IDIsDQogICAgaGVhZGVyRm9ybWF0ID0gIiIsDQogICAgcG9pbnRGb3JtYXQgPSAiRGF0YTogPGI+e3BvaW50Lng6JWIvJVl9PC9iPjxici8+UmVzdWx0YWRvIHByaW3DoXJpbzogPGI+e3BvaW50Lnk6LjJmfSUgZG8gUElCPC9iPiINCiAgKSAlPiUNCiAgDQogICMgRXhwb3J0YcOnw6NvDQogIGhjX2V4cG9ydGluZyhlbmFibGVkID0gVFJVRSkgJT4lDQogIA0KICAjIENyw6lkaXRvcw0KICBoY19jcmVkaXRzKGVuYWJsZWQgPSBUUlVFLCB0ZXh0ID0gIkZvbnRlOiBCQ0IgfCBHcsOhZmljbzogRWxhYm9yYcOnw6NvIFByw7NwcmlhIikgJT4lDQogIA0KICAjIExlZ2VuZGEgZGVzbGlnYWRhIChhcGVuYXMgdW1hIHPDqXJpZSkNCiAgaGNfbGVnZW5kKGVuYWJsZWQgPSBGQUxTRSkNCg0KDQoNCmBgYA0KDQpPIG5vdm8gYXJjYWJvdcOnbyBmaXNjYWwsIGVtIHZpZ29yIGRlc2RlIDIwMjQsIHN1YnN0aXR1aXUgbyBhbnRpZ28gdGV0byBkZSBnYXN0b3MgZSBlc3RhYmVsZWNldSBsaW1pdGVzIHBhcmEgbyBjcmVzY2ltZW50byBkYXMgZGVzcGVzYXMgcHJpbcOhcmlhcyBhY2ltYSBkYSBpbmZsYcOnw6NvLCB2aW5jdWxhZG9zIMOgIHRyYWpldMOzcmlhIGRlIGFycmVjYWRhw6fDo28uIEFsw6ltIGRpc3NvLCBwcmV2w6ogbWV0YXMgZGUgcmVzdWx0YWRvIHByaW3DoXJpbyBlIGdhdGlsaG9zIGRlIGNvbnRlbsOnw6NvIGVtIGNhc28gZGUgZGVzY3VtcHJpbWVudG8sIGJ1c2NhbmRvIGNvbmNpbGlhciBtYWlvciBmbGV4aWJpbGlkYWRlIG9yw6dhbWVudMOhcmlhIGNvbSBkaXNjaXBsaW5hIGZpc2NhbC4NCg0KUGFyYSAyMDI1LCBhIG1ldGEgZGVmaW5pZGEgw6kgZGUgZMOpZmljaXQgcHJpbcOhcmlvIHplcm8sIGNvbSBtYXJnZW0gZGUgdG9sZXLDom5jaWEgZGUgwrEwLDI1JSBkbyBQSUIuIFBhcmEgYWxjYW7Dp8OhLWxhLCBvIGdvdmVybm8gY29tYmluYSBpbnN0cnVtZW50b3MgZGUgY29udGVuw6fDo28gZGUgZGVzcGVzYXMgZSBkZSBhbXBsaWHDp8OjbyBkZSByZWNlaXRhcywgaW5jbHVpbmRvIG8gY29udGluZ2VuY2lhbWVudG8gZGUgZ2FzdG9zIGRpc2NyaWNpb27DoXJpb3MsIGF1bWVudG9zIHBvbnR1YWlzIGRlIHRyaWJ1dG9zIChjb21vIElPRiBlIHJlb25lcmHDp8OjbyBkZSBjb21idXN0w612ZWlzKSBlIHJlY2VpdGFzIGV4dHJhb3JkaW7DoXJpYXMgcHJvdmVuaWVudGVzIGRlIGxlaWzDtWVzIGRlIHBldHLDs2xlbyBlIGRpdmlkZW5kb3MgZGUgZXN0YXRhaXMgY29tbyBhIFBldHJvYnJhcywgcGFyYSBjb21wbGVtZW50YXIgYSBhcnJlY2FkYcOnw6NvIGUgYXBvaWFyIG8gY3VtcHJpbWVudG8gZGEgbWV0YSBmaXNjYWwuIEVzc2VzIHJlY3Vyc29zIGFkaWNpb25haXMsIGNoYW1hZG9zIGRlIGluc3RydW1lbnRvcyBwb250dWFpcyBkZSByZWNlaXRhLCB0w6ptIGNhcsOhdGVyIHRlbXBvcsOhcmlvIGUgbsOjbyBhbHRlcmFtIGVzdHJ1dHVyYWxtZW50ZSBvIG9yw6dhbWVudG8sIG1hcyBzw6NvIGZ1bmRhbWVudGFpcyBwYXJhIGF0aW5naXIgYXMgbWV0YXMgZGUgY3VydG8gcHJhem8uDQoNCkEgZXZvbHXDp8OjbyByZWNlbnRlIGRvIFJlc3VsdGFkbyBQcmltw6FyaW8gZG8gU2V0b3IgUMO6YmxpY28gQ29uc29saWRhZG8gKE5GU1ApLCBhY3VtdWxhZG8gZW0gMTIgbWVzZXMsIGluZGljYSBxdWUgZW0ganVsaG8gZGUgMjAyNSBvIHNhbGRvIHByaW3DoXJpbyBmb2kgZGUgMCwyMiUgZG8gUElCLiBBIE5GU1AgY29uc29saWRhIHJlY2VpdGFzIGUgZGVzcGVzYXMgZGUgdG9kb3Mgb3MgbsOtdmVpcyBkbyBzZXRvciBww7pibGljbywgZWxpbWluYW5kbyBvcGVyYcOnw7VlcyBpbnRlcm5hcyBlbnRyZSDDs3Jnw6NvcyBlIGRlc2NvbnNpZGVyYW5kbyBlZmVpdG9zIGRlIGRlc3ZhbG9yaXphw6fDo28gY2FtYmlhbCBzb2JyZSBhIGTDrXZpZGEsIG9mZXJlY2VuZG8gdW1hIHZpc8OjbyBjbGFyYSBkYSBjYXBhY2lkYWRlIGZpc2NhbCBkbyBnb3Zlcm5vLiBFc3NlIHJlc3VsdGFkbyBtb3N0cmEgcXVlLCBlbWJvcmEgcG9zaXRpdm8sIG8gc3VwZXLDoXZpdCBwcmltw6FyaW8gYWluZGEgc2VqYSBsaW1pdGFkbywgc2luYWxpemFuZG8gcXVlIG8gY3VtcHJpbWVudG8gZG8gYXJjYWJvdcOnbyBkZXBlbmRlIGRhIG1hbnV0ZW7Dp8OjbyBkYXMgbWVkaWRhcyBkZSBjb250ZW7Dp8OjbyBlIGRvIGRlc2VtcGVuaG8gZGFzIHJlY2VpdGFzIGV4dHJhb3JkaW7DoXJpYXMsIGVzcGVjaWFsbWVudGUgZW0gdW0gY29udGV4dG8gZGUgY3Jlc2NpbWVudG8gZWNvbsO0bWljbyBtYWlzIGxlbnRvLg0KDQpDb21wbGVtZW50YXJtZW50ZSwgc2VndW5kbyBvIElCR0UsIGEgUmVjZWl0YSBMw61xdWlkYSBkbyBHb3Zlcm5vIEZlZGVyYWwsIHF1ZSByZWZsZXRlIGFzIHJlY2VpdGFzIGVmZXRpdmFtZW50ZSBhcnJlY2FkYWRhcyBqw6EgZGVzY29udGFkYXMgYXMgdHJhbnNmZXLDqm5jaWFzIGEgZXN0YWRvcyBlIG11bmljw61waW9zLCBhdGluZ2l1IDE2OSwzIGJpbGjDtWVzIGRlIHJlYWlzIGVtIGFnb3N0byBkZSAyMDI1LCByZWdpc3RyYW5kbyBjcmVzY2ltZW50byByZWFsIGRlIDglIGVtIHJlbGHDp8OjbyBhbyBtZXNtbyBtw6pzIGRlIDIwMjQuIEFwZXNhciBkZXNzZSBhdmFuw6dvIG5hIGFycmVjYWRhw6fDo28sIG8gZ292ZXJubyBhcHJlc2VudG91IGTDqWZpY2l0IHByaW3DoXJpbyBkZSAxOSw3IGJpbGjDtWVzIGRlIHJlYWlzIGVtIGFnb3N0byBlIDg4IGJpbGjDtWVzIGRlIHJlYXVzIG5vIGFjdW11bGFkbyBkbyBhbm8sIGV2aWRlbmNpYW5kbyBxdWUsIGVtYm9yYSBhIGFycmVjYWRhw6fDo28gZXN0ZWphIGVtIGV4cGFuc8OjbywgYXMgZGVzcGVzYXMgYWluZGEgcHJlc3Npb25hbSBvIHJlc3VsdGFkbyBmaXNjYWwuIEVzc2UgY2Vuw6FyaW8gcmVmb3LDp2EgcXVlLCBtZXNtbyBjb20gaW5zdHJ1bWVudG9zIGRlIHJlY2VpdGEgZSBtZWRpZGFzIGRlIGNvbnRlbsOnw6NvIGVtIGZ1bmNpb25hbWVudG8sIGEgZGlzY2lwbGluYSBuYSBleGVjdcOnw6NvIGRhcyBkZXNwZXNhcyBlIGEgbWFudXRlbsOnw6NvIGRvIGNyZXNjaW1lbnRvIGRhIGFycmVjYWRhw6fDo28gc8OjbyBlc3NlbmNpYWlzIHBhcmEgYXNzZWd1cmFyIGEgc3VzdGVudGFiaWxpZGFkZSBkbyBhcmNhYm91w6dvIGZpc2NhbCBlIGEgZXN0YWJpbGlkYWRlIGVjb27DtG1pY2EuDQoNCiMjICoqUHJvamXDp8O1ZXMgZGEgRMOtdmlkYSBlIENlbsOhcmlvcyBkZSBSaXNjbyoqDQoNCmBgYHtyfQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkoaGlnaGNoYXJ0ZXIpDQpsaWJyYXJ5KHB1cnJyKQ0KbGlicmFyeShsdWJyaWRhdGUpDQoNCiMgVGFiZWxhIG9maWNpYWwgZGUgcHJvamXDp8O1ZXMgZG8gVGVzb3VybyAoMjAyNS0yMDM1KQ0KdGVzb3VybyA8LSB0aWJibGUoDQogIGFubyA9IDIwMjU6MjAzNSwNCiAgZGJnZ190ZXNvdXJvID0gYyg3OSwgODMuMywgODMuOSwgODQuMywgODQuMSwgODQuMCwgODMuOSwgODMuNywgODMuNSwgODMuMiwgODIuOSksDQogIGRsZ2dfdGVzb3VybyA9IGMoNjcuNSwgNzAuMiwgNzEuNCwgNzEuNywgNzEuNSwgNzEuMywgNzEuMSwgNzAuOSwgNzAuNywgNzAuNCwgNzAuMikNCikgJT4lDQogIG11dGF0ZShkYXRhID0gYXMuRGF0ZShwYXN0ZTAoYW5vLCAiLTEyLTMxIikpLA0KICAgICAgICAgdGltZXN0YW1wID0gYXMubnVtZXJpYyhhcy5QT1NJWGN0KGRhdGEpKSAqIDEwMDApDQoNCiMgRk1JIHPDsyBhdMOpIDIwMzANCmZtaSA8LSB0aWJibGUoDQogIGFubyA9IDIwMjU6MjAzMCwNCiAgZm1pID0gYyg5Mi4wLCA5Ni4wLCA5OC4xLCA5OS4xLCA5OS40LCA5OS40KQ0KKSAlPiUNCiAgbXV0YXRlKGRhdGEgPSBhcy5EYXRlKHBhc3RlMChhbm8sICItMTItMzEiKSksDQogICAgICAgICB0aW1lc3RhbXAgPSBhcy5udW1lcmljKGFzLlBPU0lYY3QoZGF0YSkpICogMTAwMCkNCg0KIyBDcmlhciBsaXN0YXMgcGFyYSBIaWdoY2hhcnRlcg0KZGJnZ19saXN0IDwtIG1hcDIodGVzb3VybyR0aW1lc3RhbXAsIHRlc291cm8kZGJnZ190ZXNvdXJvLCB+IGxpc3QoLngsIC55KSkNCmRsZ2dfbGlzdCA8LSBtYXAyKHRlc291cm8kdGltZXN0YW1wLCB0ZXNvdXJvJGRsZ2dfdGVzb3VybywgfiBsaXN0KC54LCAueSkpDQpmbWlfbGlzdCAgPC0gbWFwMihmbWkkdGltZXN0YW1wLCBmbWkkZm1pLCB+IGxpc3QoLngsIC55KSkNCg0KIyBHcsOhZmljbyBIaWdoY2hhcnRlciBpbnRlcmF0aXZvDQpoaWdoY2hhcnQodHlwZSA9ICJzdG9jayIpIHw+DQogIGhjX2FkZF9zZXJpZXMoZGF0YSA9IGRiZ2dfbGlzdCwgdHlwZSA9ICJsaW5lIiwgbmFtZSA9ICJEQkdHICglIGRvIFBJQikiLA0KICAgICAgICAgICAgICAgIGNvbG9yID0gIiNGRUI3MTIiKSB8Pg0KICBoY19hZGRfc2VyaWVzKGRhdGEgPSBkbGdnX2xpc3QsIHR5cGUgPSAibGluZSIsIG5hbWUgPSAiRExHRyAoJSBkbyBQSUIpIiwNCiAgICAgICAgICAgICAgICBjb2xvciA9ICIjNDZCMUUxIikgfD4NCiAgaGNfYWRkX3NlcmllcyhkYXRhID0gZm1pX2xpc3QsIHR5cGUgPSAibGluZSIsIG5hbWUgPSAiRk1JICglIGRvIFBJQikiLA0KICAgICAgICAgICAgICAgIGNvbG9yID0gIiMwMjAyM0MiLCBkYXNoU3R5bGUgPSAiU2hvcnREYXNoIikgfD4NCiAgaGNfdGl0bGUodGV4dCA9ICJQcm9qZcOnw6NvIGRhIETDrXZpZGEgZG8gR292ZXJubyBHZXJhbCBCcmFzaWxlaXJvICgyMDI1LTIwMzUpIikgfD4NCiAgaGNfc3VidGl0bGUodGV4dCA9ICJGb250ZTogVGVzb3VybyBOYWNpb25hbCBlIEZNSSB8IFZhbG9yZXMgZmluYWlzIGRlIGNhZGEgYW5vIikgfD4NCiAgaGNfeUF4aXModGl0bGUgPSBsaXN0KHRleHQgPSAiJSBkbyBQSUIiKSkgfD4NCiAgaGNfcmFuZ2VTZWxlY3RvcihlbmFibGVkID0gVFJVRSkgfD4NCiAgaGNfc2Nyb2xsYmFyKGVuYWJsZWQgPSBUUlVFKSB8Pg0KICBoY19uYXZpZ2F0b3IoZW5hYmxlZCA9IFRSVUUpIHw+DQogIGhjX3Rvb2x0aXAoc2hhcmVkID0gVFJVRSwgeERhdGVGb3JtYXQgPSAiJVkiLCB2YWx1ZURlY2ltYWxzID0gMSkgfD4NCiAgaGNfZXhwb3J0aW5nKGVuYWJsZWQgPSBUUlVFKSB8Pg0KICBoY19sZWdlbmQoZW5hYmxlZCA9IFRSVUUsIGFsaWduID0gImNlbnRlciIsIHZlcnRpY2FsQWxpZ24gPSAiYm90dG9tIikgfD4NCiAgaGNfY3JlZGl0cyhlbmFibGVkID0gVFJVRSwgdGV4dCA9ICJGb250ZTogQkNCIGUgRk1JIHwgR3LDoWZpY286IEVsYWJvcmHDp8OjbyBQcsOzcHJpYSIpDQoNCmBgYA0KDQpBcyBwcm9qZcOnw7VlcyBkYSBkw612aWRhIGRvIGdvdmVybm8gZ2VyYWwgYnJhc2lsZWlybyBldmlkZW5jaWFtIG7Do28gYXBlbmFzIGEgdHJhamV0w7NyaWEgZWxldmFkYSBkbyBlbmRpdmlkYW1lbnRvLCBtYXMgdGFtYsOpbSBjb21vIGRpZmVyZW7Dp2FzIG1ldG9kb2zDs2dpY2FzIGFsdGVyYW0gZGUgZm9ybWEgc2lnbmlmaWNhdGl2YSBhIHBlcmNlcMOnw6NvIGRlIHJpc2NvLiBQYXJhIDIwMjUsIG8gVGVzb3VybyBOYWNpb25hbCBwcm9qZXRhIGEgREJHRyBlbSA4MywzJSBkbyBQSUIgZSBhIERMR0cgZW0gNzAsMiUsIHZhbG9yZXMgcXVlIHJlZmxldGVtIGEgZXhjbHVzw6NvIGRlIGF0aXZvcyBmaW5hbmNlaXJvcyBlIG9wZXJhw6fDtWVzIGNvbXByb21pc3NhZGFzIG5hIG3DqXRyaWNhIGzDrXF1aWRhLiBKw6EgbyBGTUkgcHJvamV0YSA5MiUgZG8gUElCLCBwYXRhbWFyIHNlbnNpdmVsbWVudGUgbWFpcyBhbHRvLCBwb2lzIGluY2x1aSBlbSBzdWEgY29udGFiaWxpZGFkZSBvcyB0w610dWxvcyBww7pibGljb3MgZW0gY2FydGVpcmEgZG8gQmFuY28gQ2VudHJhbC4gRXNzYSBkaXNjcmVww6JuY2lhIG1ldG9kb2zDs2dpY2EgcmVmb3LDp2EgcXVlLCBlbnF1YW50byBhcyBtw6l0cmljYXMgZG9tw6lzdGljYXMgc3VnZXJlbSB1bSBlbmRpdmlkYW1lbnRvIGVsZXZhZG8gcG9yw6ltIG1hbmVqw6F2ZWwsIGEgbGVpdHVyYSBleHRlcm5hIHRlbmRlIGEgdHJhbnNtaXRpciBtYWlvciB2dWxuZXJhYmlsaWRhZGUgZmlzY2FsLCBpbmZsdWVuY2lhbmRvIHByw6ptaW8gZGUgcmlzY28sIHJhdGluZ3MgZSBjdXN0b3MgZGUgZmluYW5jaWFtZW50by4NCg0KTm9zIGFub3Mgc2VndWludGVzIGF0w6kgMjAzMCwgbyBUZXNvdXJvIHByb2pldGEgY3Jlc2NpbWVudG8gbW9kZXJhZG8gZGEgZMOtdmlkYSwgY29tIHJlbGF0aXZhIGVzdGFiaWxpemHDp8OjbyB0YW50byBkYSBEQkdHIHF1YW50byBkYSBETEdHLCBlbnF1YW50byBvIEZNSSBhbnRlY2lwYSB1bWEgdHJhamV0w7NyaWEgbWFpcyBhZ3Jlc3NpdmEsIGNvbSBhIGTDrXZpZGEgYWxjYW7Dp2FuZG8gMTAwJSBkbyBQSUIgZW0gMjAzMC4gQXDDs3MgZXNzZSBob3Jpem9udGUsIGFwZW5hcyBhcyBlc3RpbWF0aXZhcyBkbyBUZXNvdXJvIGVzdMOjbyBkaXNwb27DrXZlaXMsIG8gcXVlIGFtcGxpYSBhIGluY2VydGV6YSBzb2JyZSBhIGRpbsOibWljYSBkZSBsb25nbyBwcmF6by4gRGUgdG9kbyBtb2RvLCB0b2RhcyBhcyBzw6lyaWVzIGNvbnZlcmdlbSBwYXJhIHVtIGRpYWduw7NzdGljbyBjb211bTogbyBCcmFzaWwgc2VndWlyw6Egb3BlcmFuZG8gZW0gbsOtdmVpcyBlbGV2YWRvcyBkZSBlbmRpdmlkYW1lbnRvLCBleGlnaW5kbyBkaXNjaXBsaW5hIGZpc2NhbCBwYXJhIGV2aXRhciBwcmVzc8O1ZXMgYWRpY2lvbmFpcyBzb2JyZSBqdXJvcyBlIGluZmxhw6fDo28uDQoNCk8gY2Vuw6FyaW8gcHJvamV0YWRvIHBlbG8gVGVzb3VybyBOYWNpb25hbCBzdWdlcmUgdW1hIGVzdGFiaWxpemHDp8OjbyBncmFkdWFsIGRhIGTDrXZpZGEsIHN1c3RlbnRhZGEgcG9yIG1haW9yIGNvbnRyb2xlIGRlIGRlc3Blc2FzIGUgcGVsbyBlZmVpdG8gYW1vcnRlY2Vkb3IgZGEgZXhjbHVzw6NvIGRlIGF0aXZvcyBmaW5hbmNlaXJvcyBuYSBtw6l0cmljYSBsw61xdWlkYS4gQ2FzbyBlc3NlIGNlbsOhcmlvIHNlIGNvbmNyZXRpemUsIG8gcGHDrXMgcG9kZXJpYSBvcGVyYXIgc2VtIGFjZWxlcmHDp8OjbyBhYnJ1cHRhIGRvIGN1c3RvIGRlIGZpbmFuY2lhbWVudG8sIHByZXNlcnZhbmRvIGFsZ3VtIGVzcGHDp28gZGUgbWFub2JyYSBwYXJhIHBvbMOtdGljYXMgcMO6YmxpY2FzLiBKw6EgYSBwcm9qZcOnw6NvIGRvIEZNSSBpbmRpY2EgdW0gZW5kaXZpZGFtZW50byBtYWlzIGVsZXZhZG8gZSBzZW5zw612ZWwgYSBjaG9xdWVzLCB0cmFuc21pdGluZG8gYSBpZGVpYSBkZSBxdWUgYSBzdXN0ZW50YWJpbGlkYWRlIGZpc2NhbCBicmFzaWxlaXJhIGRlcGVuZGUgZGUgY29uZGnDp8O1ZXMgZXh0ZXJuYXMgZmF2b3LDoXZlaXMgZSBkZSBkaXNjaXBsaW5hIGZpc2NhbCBjb250w61udWEuIEVzc2EgZGlmZXJlbsOnYSBtZXRvZG9sw7NnaWNhIHNlIHJlZmxldGUgZGlyZXRhbWVudGUgbmEgcGVyY2Vww6fDo28gZGUgcmlzY28gaW50ZXJuYWNpb25hbCwgdG9ybmFuZG8gYSBhdmFsaWHDp8OjbyBkZSBzb2x2w6puY2lhIG1haXMgcmVzdHJpdGl2YSBkbyBwb250byBkZSB2aXN0YSBkb3MgaW52ZXN0aWRvcmVzIGVzdHJhbmdlaXJvcy4NCg0KVmFsZSBkZXN0YWNhciBxdWUgYSBwcm94aW1pZGFkZSBkbyBwcsOzeGltbyBjYWxlbmTDoXJpbyBlbGVpdG9yYWwgbm8gQnJhc2lsLCBxdWUgb2NvcnJlcsOhIG5vIGZpbmFsIGRlIDIwMjYsIGF1bWVudGEgbyBjZW7DoXJpbyBkZSBpbmNlcnRlemEgZSBwcm9qZcOnw6NvIGRlIGF1bWVudG8gZGEgZMOtdmlkYSBww7pibGljYSBkbyBwYcOtcyBjb25zaWRlcmFuZG8gcXVlLCBwZWxhIHRlb3JpYSBwb2zDrXRpY2EgZSBlY29uw7RtaWNhIGRvICpQb2xpdGljYWwgQnVzc2luZXNzIEN5Y2xlKiwgbyBnb3Zlcm5vIGVtIGV4ZXJjw61jaW8gY29zdHVtYSBkaXNwb3IgZGUgaW5zdHJ1bWVudG9zIGluc3RpdHVjaW9uYWlzICh2aXNpYmlsaWRhZGUsIHJlY3Vyc29zIG9yw6dhbWVudMOhcmlvcywgaW5mbHXDqm5jaWEgc29icmUgcG9sw610aWNhcyBww7pibGljYXMpIHBhcmEgdXRpbGl6YXIgYSBwb2zDrXRpY2EgZmlzY2FsIGNvbSB2aXN0YXMgZWxlaXRvcmFpcy4gRXNzYXMgZGluw6JtaWNhcyBwb2RlbSBjb21wcm9tZXRlciBhIHRyYWpldMOzcmlhIHByb2pldGFkYSBkZSBlc3RhYmlsaXphw6fDo28gZGEgZMOtdmlkYSBzZSBmb3JlbSBpbXBsZW1lbnRhZGFzIG1lZGlkYXMgdGVtcG9yw6FyaWFzIHNlbSBjb250cmFwYXJ0aWRhIGVzdHJ1dHVyYWwsIGVsZXZhbmRvIG8gcmlzY28gZGUgZGV0ZXJpb3Jhw6fDo28gZmlzY2FsIG5vIGN1cnRvIHByYXpvLg0KDQpBIG1hbnV0ZW7Dp8OjbyBkZSBkw612aWRhIGVsZXZhZGEsIGNvbWJpbmFkYSDDoCByaWdpZGV6IGVzdHJ1dHVyYWwgZG9zIGdhc3RvcyBjb3JyZW50ZXMsIG1hbnTDqW0gbyBwYcOtcyBleHBvc3RvIGEgcmlzY29zIGZpc2NhaXMgZSBmaW5hbmNlaXJvcy4gQSByb2xhZ2VtIGRhIGTDrXZpZGEsIGVtIHVtIGFtYmllbnRlIGRlIFNlbGljIGFsdGEgZSBtZXJjYWRvIGRlIHTDrXR1bG9zIHZvbMOhdGlsLCB0ZW5kZSBhIGVuY2FyZWNlciBvIGN1c3RvIGRvIHNlcnZpw6dvIGRhIGTDrXZpZGEsIHNvYnJldHVkbyBub3MgcGFww6lpcyBwcmVmaXhhZG9zIGUgaW5kZXhhZG9zIMOgIGluZmxhw6fDo28uIEFsw6ltIGRpc3NvLCBhIHBlcmNlcMOnw6NvIGludGVybmFjaW9uYWwgY2FwdGFkYSBwZWxvIEZNSSByZWZvcsOnYSBhIHZ1bG5lcmFiaWxpZGFkZSBhIHJldmlzw7VlcyBuZWdhdGl2YXMgZGUgcmF0aW5nIGUgYXVtZW50byBkb3Mgc3ByZWFkcyBzb2JlcmFub3MuIENob3F1ZXMgZXh0ZXJub3Mg4oCUIGNvbW8gdmFsb3JpemHDp8OjbyBjYW1iaWFsLCBhbHRhIGRlIGNvbW1vZGl0aWVzIG91IGluZmxhw6fDo28gZ2xvYmFsIHBlcnNpc3RlbnRlIOKAlCB0YW1iw6ltIHBvZGVtIGFtcGxpZmljYXIgYSBwcmVzc8OjbyBzb2JyZSBqdXJvcyBlIGTDrXZpZGEsIHJlc3RyaW5naW5kbyBhaW5kYSBtYWlzIGEgbWFyZ2VtIGRlIG1hbm9icmEgZmlzY2FsLg0KDQpFbSBzw61udGVzZSwgZW1ib3JhIG8gQnJhc2lsIGRpc3BvbmhhIGRlIGVzcGHDp28gcGFyYSBlc3RhYmlsaXphciBhIHRyYWpldMOzcmlhIGRhIGTDrXZpZGEgbm8gbcOpZGlvIHByYXpvLCBhIGNyZWRpYmlsaWRhZGUgZGEgcG9sw610aWNhIGZpc2NhbCBzZXLDoSBkZWNpc2l2YS4gTyBtb25pdG9yYW1lbnRvIGNvbnTDrW51byBkYSBjb21wb3Npw6fDo28gZGEgZMOtdmlkYSwgZGEgZXZvbHXDp8OjbyBkYXMgcmVjZWl0YXMgZSBkYSByaWdpZGV6IGRvcyBnYXN0b3Mgw6kgZnVuZGFtZW50YWwgcGFyYSByZWR1emlyIHJpc2NvcyBkZSBzb2x2w6puY2lhIGUgZ2FyYW50aXIgbWFpb3IgcmVzaWxpw6puY2lhIGRpYW50ZSBkZSBjaG9xdWVzIGV4dGVybm9zIGUgZG9tw6lzdGljb3MuDQoNCiMjIyMgKipBcMOqbmRpY2UgLSBNw6l0cmljYXMgZGEgRMOtdmlkYSBQw7pibGljYSBCcmFzaWxlaXJhKioNCg0KYGBge3J9DQpsaWJyYXJ5KHJiY2IpDQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeShoaWdoY2hhcnRlcikNCmxpYnJhcnkocHVycnIpDQpsaWJyYXJ5KGx1YnJpZGF0ZSkNCg0KIyAxLiBTw6lyaWVzIEJDQg0KZGxnZyA8LSBnZXRfc2VyaWVzKDQ1MzYsIHN0YXJ0X2RhdGUgPSAiMjAyMC0wMS0wMSIpICU+JQ0KICByZW5hbWUoZGF0YSA9IGRhdGUsIGRsZ2cgPSBgNDUzNmApICU+JQ0KICBtdXRhdGUodHJpbWVzdHJlID0gcGFzdGUwKHllYXIoZGF0YSksICItUSIsIHF1YXJ0ZXIoZGF0YSkpKSANCg0KZGJnZyA8LSBnZXRfc2VyaWVzKDExNDA4LCBzdGFydF9kYXRlID0gIjIwMjAtMDEtMDEiKSAlPiUNCiAgcmVuYW1lKGRhdGEgPSBkYXRlLCBkYmdnID0gYDExNDA4YCkgJT4lDQogIG11dGF0ZSh0cmltZXN0cmUgPSBwYXN0ZTAoeWVhcihkYXRhKSwgIi1RIiwgcXVhcnRlcihkYXRhKSkpIA0KDQojIEFncmVnYXIgRExHRyB0cmltZXN0cmFsICjDumx0aW1vIG3DqnMgZG8gdHJpbWVzdHJlKQ0KZGxnZ190cmkgPC0gZGxnZyAlPiUNCiAgZ3JvdXBfYnkodHJpbWVzdHJlKSAlPiUNCiAgc2xpY2VfdGFpbChuID0gMSkgJT4lDQogIHVuZ3JvdXAoKQ0KDQojIEZNSSBoaXN0w7NyaWNvICsgcHJvamXDp8OjbyAobGluaGEgY29udMOtbnVhKQ0KZm1pIDwtIHRpYmJsZSgNCiAgZGF0YSA9IHNlcShhcy5EYXRlKCIyMDIwLTEyLTMxIiksIGFzLkRhdGUoIjIwMjUtMTItMzEiKSwgYnkgPSAieWVhciIpLA0KICBmbWkgPSBjKDgwLCA4MiwgODUsIDg3LCA4OCwgOTIpICMgdmFsb3JlcyByZWFpcyBkYSB0YWJlbGENCikNCg0KIyBGdW7Dp8OjbyBwYXJhIGNvbnZlcnRlciBwYXJhIGxpc3RhIGRlIHBhcmVzICh0aW1lc3RhbXAsIHZhbG9yKQ0KdG9fbGlzdCA8LSBmdW5jdGlvbihkZiwgY29sKXsNCiAgbWFwMihhcy5udW1lcmljKGFzLlBPU0lYY3QoZGYkZGF0YSkpICogMTAwMCwgZGZbW2NvbF1dLCB+IGxpc3QoLngsIC55KSkNCn0NCg0KZGxnZ19saXN0IDwtIHRvX2xpc3QoZGxnZ190cmksICJkbGdnIikNCmRiZ2dfbGlzdCA8LSB0b19saXN0KGRiZ2csICJkYmdnIikNCmZtaV9saXN0IDwtIHRvX2xpc3QoZm1pLCAiZm1pIikNCg0KIyAyLiBHcsOhZmljbyBIaWdoY2hhcnRlciBpbnRlcmF0aXZvDQpoaWdoY2hhcnQodHlwZSA9ICJzdG9jayIpIHw+DQogIGhjX2FkZF9zZXJpZXMoZGF0YSA9IGRsZ2dfbGlzdCwgdHlwZSA9ICJsaW5lIiwgbmFtZSA9ICJETEdHICglIGRvIFBJQikiLCBjb2xvciA9ICIjNDZCMUUxIikgfD4NCiAgaGNfYWRkX3NlcmllcyhkYXRhID0gZGJnZ19saXN0LCB0eXBlID0gImxpbmUiLCBuYW1lID0gIkRCR0cgKCUgZG8gUElCKSIsIGNvbG9yID0gIiNGRUI3MTIiKSB8Pg0KICBoY19hZGRfc2VyaWVzKGRhdGEgPSBmbWlfbGlzdCwgdHlwZSA9ICJsaW5lIiwgbmFtZSA9ICJEw612aWRhIHNlZ3VuZG8gRk1JICglIGRvIFBJQikiLCBjb2xvciA9ICIjMDIwMjNDIikgfD4NCiAgaGNfeUF4aXModGl0bGUgPSBsaXN0KHRleHQgPSAiJSBkbyBQSUIiKSkgfD4NCiAgaGNfdGl0bGUodGV4dCA9ICJDb21wYXJhw6fDo28gZGEgRMOtdmlkYSBkbyBHb3Zlcm5vIEdlcmFsIEJyYXNpbGVpcmEiKSB8Pg0KICBoY19zdWJ0aXRsZSh0ZXh0ID0gIkZvbnRlOiBCQ0IvU0dTLCBGTUkgV0VPIGUgVGVzb3VybyBOYWNpb25hbCB8IERMR0cgZSBEQkdHIHRyaW1lc3RyYWlzOyBGTUkgYW51YWwiKSB8Pg0KICBoY19yYW5nZVNlbGVjdG9yKGVuYWJsZWQgPSBUUlVFKSB8Pg0KICBoY19zY3JvbGxiYXIoZW5hYmxlZCA9IFRSVUUpIHw+DQogIGhjX25hdmlnYXRvcihlbmFibGVkID0gVFJVRSkgfD4NCiAgaGNfdG9vbHRpcChzaGFyZWQgPSBUUlVFLCB4RGF0ZUZvcm1hdCA9ICIlYi8lWSIsIHZhbHVlRGVjaW1hbHMgPSAyKSB8Pg0KICBoY19leHBvcnRpbmcoZW5hYmxlZCA9IFRSVUUpIHw+DQogIGhjX2xlZ2VuZChlbmFibGVkID0gVFJVRSwgYWxpZ24gPSAiY2VudGVyIiwgdmVydGljYWxBbGlnbiA9ICJib3R0b20iKSB8Pg0KICBoY19jcmVkaXRzKGVuYWJsZWQgPSBUUlVFLCB0ZXh0ID0gIkZvbnRlOiBCQ0IgZSBGTUkgfCBHcsOhZmljbzogRWxhYm9yYcOnw6NvIFByw7NwcmlhIikNCiAgDQoNCmBgYA0KDQpBIGNvbXBhcmHDp8OjbyBlbnRyZSBhIETDrXZpZGEgTMOtcXVpZGEgZG8gR292ZXJubyBHZXJhbCAoRExHRyksIGEgRMOtdmlkYSBCcnV0YSBkbyBHb3Zlcm5vIEdlcmFsIChEQkdHKSBlIGEgbcOpdHJpY2EgZGUgZMOtdmlkYSBjYWxjdWxhZGEgcGVsbyBGTUkgZXZpZGVuY2lhIGRpZmVyZW7Dp2FzIG1ldG9kb2zDs2dpY2FzIHJlbGV2YW50ZXMsIHF1ZSBpbXBhY3RhbSBhIGludGVycHJldGHDp8OjbyBkYSBzdXN0ZW50YWJpbGlkYWRlIGZpc2NhbC4NCg0KQSBETEdHIHJlcHJlc2VudGEgYSBkaWZlcmVuw6dhIGVudHJlIHBhc3Npdm9zIGUgYXRpdm9zIGZpbmFuY2Vpcm9zIGRvIGdvdmVybm8gZ2VyYWwg4oCUIGVuZ2xvYmFuZG8gVW5pw6NvLCBlc3RhZG9zIGUgbXVuaWPDrXBpb3MsIG1hcyBleGNsdWluZG8gZW1wcmVzYXMgZXN0YXRhaXMgbsOjbyBmaW5hbmNlaXJhcy4gUG9yIGRlc2NvbnRhciBhdGl2b3MgZmluYW5jZWlyb3MsIGNvbW8gb3BlcmHDp8O1ZXMgY29tcHJvbWlzc2FkYXMgbGFzdHJlYWRhcyBlbSB0w610dWxvcyBww7pibGljb3MsIG9mZXJlY2UgdW1hIHZpc8OjbyBtYWlzIHByw7N4aW1hIGRvIGVuZGl2aWRhbWVudG8gZWZldGl2byBkbyBzZXRvciBww7pibGljby4gQXTDqSBqdWxobyBkZSAyMDI1LCBhIERMR0cgZXN0YXZhIGVtIHRvcm5vIGRlIDY1LDglIGRvIFBJQi4NCg0KSsOhIGEgREJHRyBjb250YWJpbGl6YSB0b2RvcyBvcyBwYXNzaXZvcyBkbyBnb3Zlcm5vLCBzZW0gZGVkdXppciBhdGl2b3MgZmluYW5jZWlyb3MuIElzc28gc2lnbmlmaWNhIHF1ZSBvcGVyYcOnw7VlcyBjb21wcm9taXNzYWRhcywgYXBlc2FyIGRlIHNldSBjYXLDoXRlciB0ZW1wb3LDoXJpbywgZW50cmFtIG5vIGPDoWxjdWxvIGNvbW8gZMOtdmlkYSwgZWxldmFuZG8gbyB2YWxvciB0b3RhbC4gRW0ganVsaG8gZGUgMjAyNSwgYSBEQkdHIGF0aW5naXUgNzcsNiUgZG8gUElCLCBwZXJtYW5lY2VuZG8gc2lzdGVtYXRpY2FtZW50ZSBhY2ltYSBkYSBETEdHLg0KDQpQb3IgZmltLCBhIGTDrXZpZGEgZG8gZ292ZXJubyBnZXJhbCBtZWRpZGEgcGVsbyBGTUkgaW5jbHVpLCBhZGljaW9uYWxtZW50ZSwgb3MgdMOtdHVsb3MgcMO6YmxpY29zIGVtIGNhcnRlaXJhIGRvIEJhbmNvIENlbnRyYWwuIEVzc2UgY3JpdMOpcmlvIGxldmEgYSB1bWEgZXN0aW1hdGl2YSBhaW5kYSBtYWlzIGVsZXZhZGEsIHByw7N4aW1hIGEgOTAlIGRvIFBJQiBlbSAyMDI1LiBEaWZlcmVudGVtZW50ZSBkYXMgc8OpcmllcyBkbyBCYW5jbyBDZW50cmFsLCBvcyBkYWRvcyBkbyBGTUkgc8OjbyBkaXZ1bGdhZG9zIGFudWFsbWVudGUsIGUgb3MgdmFsb3JlcyBtYWlzIHJlY2VudGVzIHJlZmxldGVtIHByb2plw6fDtWVzLCBuw6NvIG9ic2VydmHDp8O1ZXMgbWVuc2Fpcy4NCg0KRW0gc8OtbnRlc2UsIGVucXVhbnRvIGEgREJHRyB0ZW5kZSBhIG1vc3RyYXIgdmFsb3JlcyBtYWlzIGFsdG9zIHBvciBuw6NvIGRlc2NvbnRhciBhdGl2b3MgZmluYW5jZWlyb3MsIGEgRExHRyBjYXB0YSBkZSBmb3JtYSBtYWlzIHByZWNpc2EgYSBwb3Npw6fDo28gbMOtcXVpZGEgZG8gc2V0b3IgcMO6YmxpY28sIGUgYSBtw6l0cmljYSBkbyBGTUkgYW1wbGlhIG8gZW5kaXZpZGFtZW50byBhcGFyZW50ZSBhbyBpbmNsdWlyIHTDrXR1bG9zIGVtIHBvc3NlIGRhIGF1dG9yaWRhZGUgbW9uZXTDoXJpYS4gRXNzYXMgZGlmZXJlbsOnYXMgbWV0b2RvbMOzZ2ljYXMgYWp1ZGFtIGEgZXhwbGljYXIgcG9yIHF1ZSBhIHBlcmNlcMOnw6NvIGRlIHJpc2NvIGRvIEJyYXNpbCBwb2RlIHZhcmlhciBlbnRyZSBpbnZlc3RpZG9yZXMgZG9tw6lzdGljb3MgZSBpbnRlcm5hY2lvbmFpcywgcmVmb3LDp2FuZG8gYSBpbXBvcnTDom5jaWEgZGUgY29tcHJlZW5kZXIgbyB1bml2ZXJzbyBjb250w6FiaWwgZSBvcyBhdGl2b3MgY29uc2lkZXJhZG9zIGVtIGNhZGEgaW5kaWNhZG9yLg0KDQojIyBDb25jbHVzw6NvDQoNCk8gY2Vuw6FyaW8gZmlzY2FsIGUgZWNvbsO0bWljbyBicmFzaWxlaXJvIGVtIDIwMjUgZXZpZGVuY2lhIGRlc2FmaW9zIGNvbXBsZXhvcyBkZSBjb25jaWxpYcOnw6NvIGVudHJlIGNyZXNjaW1lbnRvIGVjb27DtG1pY28sIGNvbnRyb2xlIGRhIGluZmxhw6fDo28gZSBzdXN0ZW50YWJpbGlkYWRlIGRhcyBjb250YXMgcMO6YmxpY2FzLiBBIHBvbMOtdGljYSBtb25ldMOhcmlhIHBlcm1hbmVjZSBjb250cmFjaW9uaXN0YSBwYXJhIGFuY29yYXIgZXhwZWN0YXRpdmFzIGluZmxhY2lvbsOhcmlhcywgZW5xdWFudG8gbyBub3ZvIGFyY2Fib3XDp28gZmlzY2FsIGUgYXMgbWVkaWRhcyBkZSBjb250ZW7Dp8OjbyBkZSBnYXN0b3MgYnVzY2FtIGdhcmFudGlyIGRpc2NpcGxpbmEgb3LDp2FtZW50w6FyaWEuDQoNCkEgZXZvbHXDp8OjbyBkbyBQSUIgaW5kaWNhIGNyZXNjaW1lbnRvIG1vZGVyYWRvLCBlIGEgYW7DoWxpc2UgZGEgZMOtdmlkYSBww7pibGljYSBtb3N0cmEgbsOtdmVpcyBlbGV2YWRvcywgcXVlIGV4aWdlbSBhdGVuw6fDo28gY29udMOtbnVhIMOgIGV4ZWN1w6fDo28gZmlzY2FsIGUgw6AgY29vcmRlbmHDp8OjbyBlbnRyZSBwb2zDrXRpY2FzIGVjb27DtG1pY2EgZSBmaXNjYWwuIEVtYm9yYSBoYWphIHNpbmFpcyBkZSBlc3RhYmlsaWRhZGUsIGZhdG9yZXMgY29uanVudHVyYWlzIGUgaW5jZXJ0ZXphcyBwb2zDrXRpY2FzIHJlZm9yw6dhbSBhIG5lY2Vzc2lkYWRlIGRlIG1vbml0b3JhbWVudG8gY29uc3RhbnRlIGUgZGUgZXN0cmF0w6lnaWFzIGRlIGxvbmdvIHByYXpvIHBhcmEgcHJlc2VydmFyIGEgc29sdsOqbmNpYSwgYSBjcmVkaWJpbGlkYWRlIGZpc2NhbCBlIG8gZXF1aWzDrWJyaW8gbWFjcm9lY29uw7RtaWNvLg0KDQpFbSBzdW1hLCBhIHN1c3RlbnRhYmlsaWRhZGUgZmlzY2FsIGJyYXNpbGVpcmEgZGVwZW5kZSBkZSBkZWNpc8O1ZXMgY29uc2lzdGVudGVzIGUgY29vcmRlbmFkYXMsIGNhcGF6ZXMgZGUgZXF1aWxpYnJhciByZXN0cmnDp8O1ZXMgb3LDp2FtZW50w6FyaWFzLCBlc3TDrW11bG9zIMOgIGF0aXZpZGFkZSBlY29uw7RtaWNhIGUgbWFudXRlbsOnw6NvIGRhIGNvbmZpYW7Dp2EgZGUgaW52ZXN0aWRvcmVzIGUgZGEgc29jaWVkYWRlLg0KDQojIyBSZWZlcsOqbmNpYXMNCg0KLSAgIEJBTkNPIENFTlRSQUwgRE8gQlJBU0lMLiAqTG9jYWxpemFyIHPDqXJpZXMgZG8gU0dTKi4gRGlzcG9uw612ZWwgZW06IDxodHRwczovL3d3dzMuYmNiLmdvdi5ici9zZ3NwdWIvbG9jYWxpemFyc2VyaWVzL2xvY2FsaXphclNlcmllcy5kbz9tZXRob2Q9cHJlcGFyYXJUZWxhTG9jYWxpemFyU2VyaWVzPiBBY2Vzc28gZW06IDIyIGRlIHNldGVtYnJvIGRlIDIwMjUuDQoNCi0gICBBR8OKTkNJQSBCUkFTSUwuICpDb20gcHJlY2F0w7NyaW9zLCBkw6lmaWNpdCBwcmltw6FyaW8gc2FsdGEgcGFyYSBSXCQgNTksMTIgYmlsaMO1ZXMgZW0ganVsaG8qLiBEaXNwb27DrXZlbCBlbTogPGh0dHBzOi8vYWdlbmNpYWJyYXNpbC5lYmMuY29tLmJyL2Vjb25vbWlhL25vdGljaWEvMjAyNS0wOC9jb20tcHJlY2F0b3Jpb3MtZGVmaWNpdC1wcmltYXJpby1zYWx0YS1wYXJhLXItNTkxMi1iaWxob2VzLWVtLWp1bGhvP3V0bV9zb3VyY2U9Y2hhdGdwdC5jb20+IEFjZXNzbyBlbTogMjIgc2V0LiAyMDI1Lg0KDQotICAgQUfDik5DSUEgQlJBU0lMLiAqRW0gMTIgbWVzZXMsIGVjb25vbWlhIGJyYXNpbGVpcmEgdGVtIHNleHRvIG1haW9yIGNyZXNjaW1lbnRvIGRvIEcyMCouIERpc3BvbsOtdmVsIGVtOiA8aHR0cHM6Ly9hZ2VuY2lhYnJhc2lsLmViYy5jb20uYnIvZWNvbm9taWEvbm90aWNpYS8yMDI1LTA5L2VtLTEyLW1lc2VzLWVjb25vbWlhLWJyYXNpbGVpcmEtdGVtLXNleHRvLW1haW9yLWNyZXNjaW1lbnRvLWRvLWcyMCM+IEFjZXNzbyBlbTogMjIgZGUgc2V0ZW1icm8gZGUgMjAyNS4NCg0KLSAgIElOU1RJVFVUTyBCUkFTSUxFSVJPIERFIEdFT0dSQUZJQSBFIEVTVEFUw41TVElDQSDigJMgSUJHRS4gKlBJQiB2YXJpYSAwLDQlIG5vIHNlZ3VuZG8gdHJpbWVzdHJlIGRlIDIwMjUqLiBEaXNwb27DrXZlbCBlbTogPGh0dHBzOi8vYWdlbmNpYWRlbm90aWNpYXMuaWJnZS5nb3YuYnIvYWdlbmNpYS1zYWxhLWRlLWltcHJlbnNhLzIwMTMtYWdlbmNpYS1kZS1ub3RpY2lhcy9yZWxlYXNlcy80NDMyOS1waWItdmFyaWEtMC00LW5vLXNlZ3VuZG8tdHJpbWVzdHJlLWRlLTIwMjU+IEFjZXNzbyBlbTogMjIgZGUgc2V0ZW1icm8gZGUgMjAyNS4NCg0KLSAgIElOU1RJVFVUTyBERSBQRVNRVUlTQVMgRUNPTsOUTUlDQVMgQVBMSUNBREFTIOKAkyBJUEVBLiAqR292ZXJubyBmZWRlcmFsIHJlZ2lzdHJhIGTDqWZpY2l0IGRlIFJcJCAxOSw3IGJpbGjDtWVzIGVtIGFnb3N0byouIERpc3BvbsOtdmVsIGVtOiA8aHR0cHM6Ly93d3cuaXBlYS5nb3YuYnIvcG9ydGFsL2NhdGVnb3JpYXMvNDUtdG9kYXMtYXMtbm90aWNpYXMvbm90aWNpYXMvMTYwMTgtZ292ZXJuby1mZWRlcmFsLXJlZ2lzdHJhLWRlZmljaXQtZGUtci0xOS03LWJpbGhvZXMtZW0+IEFjZXNzbyBlbTogMjIgZGUgc2V0ZW1icm8gZGUgMjAyNS4NCg0KLSAgIElOU1RJVFVUTyBCUkFTSUxFSVJPIERFIEdFT0dSQUZJQSBFIEVTVEFUw41TVElDQSDigJMgSUJHRS4gKkNvbnRhcyBOYWNpb25haXMgVHJpbWVzdHJhaXMqLiBEaXNwb27DrXZlbCBlbTogPGh0dHBzOi8vd3d3LmliZ2UuZ292LmJyL2VzdGF0aXN0aWNhcy9lY29ub21pY2FzL2NvbnRhcy1uYWNpb25haXMvOTMwMC1jb250YXMtbmFjaW9uYWlzLXRyaW1lc3RyYWlzLmh0bWw/PSZ0PWRvd25sb2FkcyZ1dG1fc291cmNlPWxhbmRpbmcmdXRtX21lZGl1bT1leHBsaWNhJnV0bV9jYW1wYWlnbj1waWIjZXZvbHVjYW8tdGF4YT4gQWNlc3NvIGVtOiAyMiBkZSBzZXRlbWJybyBkZSAyMDI1Lg0KDQotICAgVEVTT1VSTyBOQUNJT05BTC4gKlJlbGF0w7NyaW8gZGUgUHJvamXDp8O1ZXMgZGEgRMOtdmlkYSBkbyBHb3Zlcm5vIEdlcmFsIOKAkyBSUEYganVsaG8gMjAyNSouIERpc3BvbsOtdmVsIGVtOiA8aHR0cHM6Ly9jZG4udGVzb3Vyby5nb3YuYnIvc2lzdGVtYXMtaW50ZXJub3MvYXBleC9wcm9kdWNhby9zaXN0ZW1hcy90aG90L2FycXVpdm9zL3B1YmxpY2Fjb2VzLzUyNTI3XzE3Mjg5OTgvUlBGLWp1bDI1LnBkZj91dG1fc291cmNlPWNoYXRncHQuY29tPiBBY2Vzc28gZW06IDIyIGRlIHNldGVtYnJvIGRlIDIwMjUuDQoNCi0gICBJTlRFUk5BVElPTkFMIE1PTkVUQVJZIEZVTkQg4oCTIElNRi4gKldvcmxkIEVjb25vbWljIE91dGxvb2sgRGF0YWJhc2Ug4oCTIEJyYXppbCouIERpc3BvbsOtdmVsIGVtOiBbaHR0cHM6Ly93d3cuaW1mLm9yZy9leHRlcm5hbC9kYXRhbWFwcGVyL0dHWFdER19OR0RQXFxcXFxcXEBXRU8vQlJBXShodHRwczovL3d3dy5pbWYub3JnL2V4dGVybmFsL2RhdGFtYXBwZXIvR0dYV0RHX05HRFBcXFxAV0VPL0JSQSl7LnVyaX0gQWNlc3NvIGVtOiAyMiBkZSBzZXRlbWJybyBkZSAyMDI1Lg0KDQotICAgQmxhbmNoYXJkLCBPbGl2aWVyLCBNYWNyb2Vjb25vbWlhDQo=