Apresentação

Introdução

O modo de vida contemporâneo está passando por mudanças estruturais, em diferentes dimensões. Parte dessas mudanças está ocorrendo em função da revolução tecnológica que permite interações entre os meios físico, biológico e digital, denominada Quarta Revolução Industrial (Schwab, 2017; Susskind e Susskind, 2015). Como resultado, diferentes competências funcionais e específicas estão sendo demandadas para atuação de egressos de instituições de ensino superior (IES) (Elmor Filho et al., 2019; Susskind e Susskind, 2015), a saber (i) competências funcionais: capacidade de geração e aplicação do conhecimento, superação de desafios, tomada de decisão, treinamento e preceptoria; e (ii) competências específicas: capacidade de concepção, inovação, análise e síntese, gestão, aplicação de métodos para caracterização e solução de problemas e a capacidade de relacionar o conhecimento apreendido de maneira transdisciplinar. As instituições de ensino superior (IES) enfrentam o desafio de se adequar a essas demandas. Para tanto, é necessário transformar a sala de aula em um ambiente que estimule o protagonismo do estudante, o desenvolvimento de autonomia permanente de aprendizagem e favoreça comportamentos proativos e adaptáveis nas atividades profissionais.

Além dessa necessidade de transformação do ensino para adaptação às mudanças supracitadas, no início deste ano nos deparamos com um novo e imediato desafio advindo das relações humanas com o ambiente natural: a pandemia provocada pela disseminação do novo coronavírus SARS-CoV-2 em escala global. Esse fenômeno resultou na implementação de distanciamento social, mudando de maneira significativa a forma como vivemos. A educação é uma das diversas atividades impactadas pela pandemia e o contato presencial no ambiente escolar está restrito devido ao distanciamento social. Assim, os colaboradores das IES precisam buscar formas de manter a interação entre discentes e docentes, mesmo que virtual, qualificando o processo de aprendizagem para as competências necessárias ao do mundo contemporâneo.

Dentre as dimensões de desafios que gestores públicos, profissionais, instituições privadas e cidadãos estão enfrentando para adaptação às mudanças provocadas pelo COVID-19, estão a estrutura econômica, a dinâmica urbana, os padrões de consumo, os deslocamentos, a liberdade dos indivíduos, a percepção de felicidade, a degradação do meio ambiente e as priorizações de atividades e escolhas cotidianas. O papel da universidade, além da formação de capital humano para os desafios contemporâneos, envolve a produção e transferência de conhecimento e pensamento crítico sobre problemas reais, com o objetivo de promoção de qualidade de vida para as pessoas. Nesse momento disruptivo, justifica-se esse projeto de ensino pela necessidade de formar capital humano, por meio de ambiente virtual, capaz de discutir processos sociais, econômicos e ambientais no contexto urbano atual.

Elaborar e desenvolver projetos com foco em problemas urbanos visando a apropriação de competências em métodos de econometria e análise espacial e respectiva implementação em ambiente computacional, por meio das plataformas R e QGIS. Para tanto, serão consideradas metodologias ativas para realização das atividades propostas, tutoria sobre técnicas específicas de análise de dados espaciais e tutoriais sobre as ferramentas quantitativas R e QGIS, visando o conhecimento dos ambientes de trabalho e bibliotecas próprias de análises de questões espaciais.

A proposta metodológica deste projeto de ensino está baseada em algumas práticas pedagógicas que se fundamentam na aprendizagem ativa. Dentre elas, consideraremos aprendizagem baseada em projetos e sala de aula invertida. Nesse site são disponibilizados conteúdos para serem explorados pelos alunos a priori dos minicursos, compostos por vídeos e situações-problema. Serão então realizados minicursos com duração diária de 2 horas e total de 4 horas, para discussão de cada tópico proposto no cronograma, a saber: (i) Introdução do R e ao RStudio; (ii) processos urbanos; (iii) métodos econométricos (módulos I e II); e (iv) Análise espacial (módulos I e II). Serão ainda propostas atividades preliminares (vídeos e atividades práticas) aos minicursos.


Resultados esperados

  • construção do conhecimento acerca de problemas urbanos, tais como acessibilidade, mobilidade, estrutura espacial de funções urbanas e seu impacto na promoção de cidades equitativas e de qualidade de vida para a população, considerando tanto a organização social cotidiana como no momento de exceção promovido pelo COVID-19;
  • a disseminação do conhecimento da linguagem de programação do R e suas principais bibliotecas do R destinadas à manipulação e tratamento de dados espaciais;
  • a disseminação do conhecimento sobre ferramentas de análise quantitativa espacial, especialmente econometria espacial;
  • imersão de professores e alunos em uma metodologia ativa de ensino, gerando considerações críticas acerca das vantagens e desvantagens dos métodos aplicado e as possíveis melhorias;
  • difusão de conhecimento por meio da elaboração e possível publicação de artigos acerca dos itens de pesquisa propostos.

Recursos computacionais

Editor de planilha

  • Microsoft Excel
  • Libreoffice calc
  • Google spreadsheet
  • outros recursos à escolha do aluno

R

Baixar e instalar o R: link

No link acima é apresentado o processo de instalação para Windows. No mesmo site é possível encontrar procedimentos de instalação para outros sistemas operacionais.

Links adicionais:
Visão geral e primeiros passos com R e RStudio


RStudio

Baixar e instalar o RStudio: link

No link acima é apresentado o processo de instalação para Windows. No mesmo site é possível encontrar procedimentos de instalação para outros sistemas operacionais.


QGIS

Baixar e Instalar o QGIS:

64 bits
32 bits


Minicursos

1: Introdução ao R e ao ambiente RStudio

Agenda

Competências a serem desenvolvidas

1 - O que é o ambiente R e para que serve

2 - Tipos básicos de dados no R.

3 - Criando e nomeando vetores no R.

4 - Subconjuntos de vetores no R.

5 - Como criar e nomear matrizes no R.

6 - Operações aritméticas com matrizes.

7 - Funções estatísticas básicas.

Exercício 01

Os dados abaixo correspondem às observações sobre Despesa de Consumo Pessoal e Produto Interno Bruto em bilhões de dólares de 2000, para os Estados Unidos. Os dados foram obtidos no livro do Gujarati, intitulado Econometria básica. Existe uma teoria que estabelece uma relação entre o consumo e a renda de um país (medida em termos do Produto Interno Bruto). Partindo do pressuposto que, esta é uma relação linear, temos que o a Despesa de consumo pessoal (Y) guarda a seguinte relação com o Produto Interno Bruto (X).

\(Y=\beta_0+\beta_1X\)

Com base no exposto acima, siga as orientações abaixo para obter os valores de \(\beta_0\) e \(\beta_1\) e, assim, determinar a equação da reta.

Acesso à base de dados

library("readxl")
#RendaConsumo= read_excel("C:\\Lucelia\\CEFET2020-1\\DadosEspaciais\\ProcessosUrbanos\\RendaConsumo.xlsx")
#as.matrix(RendaConsumo)

Atividades

a - Crie um vetor de uns que tenha um número de entradas igual ao número de linhas da matriz acima. Pode denominá-lo uns.

b - Crie uma matriz juntando o vetor de uns e a terceira coluna da matriz acima. Pode denominá-la X.

c - Crie um vetor a partir da segunda coluna da matriz acima. Pode denominá-lo Y.

d - Realize o seguinte cálculo: \((X^TX)^{-1}X^TY\).

e - Identifique o \(\beta_0\) e o \(\beta_1\).

Funções estatísticas básicas

Média, variância, mediana, desvio padrão,coeficiente de correlação, histograma e box plot.

Exercício 02

Para realizar os exercícios abaixo você pode usar como referencial o material disponível no link abaixo:

Estatísticas descritivas no R

1 - Calcule para a média, variância, desvio-padrão para as variáveis Renda e Consumo da planinha RendaConsumo importada no exercício anterior.

2 - Calcule o coeficiente de correlação entre a Renda e o consumo.

3 - Faça o histograma e o box-plot das variáveis Renda e consumo. As duas variáveis apresentam observações discrepantes (outliers).

Outras referências interessantes sobre introdução ao R

Como utilizar o Data Frame.

Introdução ao R

Help para funções básicas do R


2: Processos Urbanos

“Os sentimentos mais genuinamente humanos logo se desumanizam na cidade.”
Eça de Queirós

Agenda

Competências a serem desenvolvidas

Ao final desse mini-curso, os alunos deverão ser capazes de discutir os seguintes conceitos:

  • Urbanização
  • Cidades - definição e origem
  • Cidade na região
  • Posição
    • Função
    • Tipologias
    • Hierarquias
    • Centralidade e redes urbanas
  • Cidade e as relações intraurbanas
    • Sítio
    • Estrutura morfológico funcional
  • Subsistemas urbanos
    • Transportes
    • Uso do solo
    • Funções/atividades

Atividade preliminar

Os alunos deverão assistir esses quatro vídeos antes do nosso encontro (Minicurso: Processos Urbanos).

Material para encontro presencial

Processos Urbanos

Atividades 25/06/2020

A turma será dividida em 4 grupos (aleatoriamente) e cada grupo permanecerá ativo por 10 minutos para discussões. Ao final desse tempo, o representante do grupo apresentará os destaques e argumentações em 5 minutos e teremos 10 minutos para discussão de cada tópico. Se possível, incluam elementos pictóricos que possam fundamentar a argumentação.

  1. Como a urbanização impacta as dimensões ambiental, social e econômica nas escalas global, regional e local?

  2. Pensando na RMBH, selecione dois municípios e caracterize seu papel na rede urbana.

  3. Analise as relações entre o sítio e a estrutura morfológico-funcional de Belo Horizonte.

  4. Selecione uma intervenção urbana na cidade de Belo Horizonte e caracterize seus resultados quanto à coesão entre mudanças no uso do solo, sistemas de transportes e rede de atividades.

Atividades 26/06/2020

A turma será dividida em 4 grupos (aleatoriamente) e cada grupo permanecerá ativo por 20 minutos para discussões. Ao final desse tempo, o representante do grupo apresentará os destaques e argumentações em 5 minutos e teremos 10 minutos para discussão de cada tópico. Se possível, incluam elementos pictóricos que possam fundamentar a argumentação.

  1. Análise crítica do papel da tecnologia (smart cities, por exemplo) na remodelagem das nossas cidades pensando na escala humana

  2. Análise crítica da implementação de cinemas drive-ins nas cidades brasileiras no período da pandemia e após a liberação da circulação de pessoas

  3. Como está a dinâmica do isolamento social ao longo dos últimos 4 meses e quais fatores presentes em uma cidade são importantes para manutenção do distanciamento?

  4. Quais medidas estão sendo implementadas em relação à mobilidade nas cidades européias na abertura do isolamento social? Faça uma análise crítica.


3: Métodos Econométricos (módulo I)

Agenda

Plano da aula e recursos

1 - Apresentação do professor por aproximadamente 30 minutos mostrando aspectos básicos de econometria

Recursos: Slides

2 - Exercício prático no R usando comando lm para estimar modelo de regressão linear simples para dados de renda e consumo.

Recursos: R program e base de dados no excel.

3 - Apresentação dos resultados em grupo e solução de dúvidas.

4 - Definições para trabalhar com dados sobre acessibilidade.

O objetivo da econometria:

Estudar a relação linear entre duas variáveis quantitativas.

Exemplos:

  • Altura dos pais e altura dos filhos;

  • Renda semanal e despensas de consumo;

  • Variação dos salarios e taxa de desemprego;

OBS: Regressão vs correlação. Sabem dizer a diferença?

Relação funcional

\(Y=\beta_0+\beta_1X+\epsilon\)

Y variável dependente

X variável explicativa

OBS: O que é o \(\epsilon\)

Regressão linear múltipla

\(Y=\beta_0+\beta_1X_1+\beta_2X_2+\cdots+\beta_kX_k+\epsilon\)

Mínimos quadrados ordinários

Seja \(\beta\) o vetor \(\beta=\beta_0,\beta_1, \beta_2, \cdots, \beta_k\)

A solução de mínimos quadrados ordinários é dada por:

\(\beta=(X^{\top}X)^{-1}X^{\top}Y\)

em que X é uma matriz nxk de variáveis explicativas e Y é vetor nX1 de variáveis dependentes.

Utilizando o comando lm do R para estimatar o modelo de regressão linear

Abra o help do comando lm e utilize-o para obter os valores de \(\beta_0\) e \(\beta_1\), utiliando os dados de Renda e Consumo.


4: Análise Espacial (módulo I)

O que diferencia dados espaciais e não espaciais?
O que existe em uma determinada localização?
Onde posso encontrar um determinado objeto?
O que mudou ao longo do tempo?
Qual o melhor caminho?
Como os objetos são distribuídos no espaço?
Como as condições serão alteradas no futuro?

Agenda

Competências a serem desenvolvidas

Ao final desse mini-curso, os alunos deverão ser capazes de discutir os seguintes conceitos:

  • Pensamento espacial
  • Introdução à cartografia
    • forma e dimensões terrestres
    • representações: sistemas geodésicos, modelos e datum
    • sistemas de coordenadas geográficas e projetadas
  • Sistemas de Informações Geográficas (Geographic Information Systems)
  • Unidades espaciais e representação de fenômenos espaciais
  • Distâncias
  • QGIS
    • Ambiente e funcionalidades básicas do QGIS
    • Complementos: instalação e para que servem
    • Mudança de datum e sistemas de coordenadas
    • Tabela de atributos
    • Estruturas de dados espaciais
      • classificação: vetoriais e matriciais
      • interoperabilidade
      • geocodificação
    • Funções básicas em GIS
      • seleção por atributo e por localização
      • join por código e join espacial
      • mapas temáticos
      • geração de centroides e agregação de variaveis
      • conceito de redes
      • layout de impressão

Atividade preliminar

  1. Os alunos deverão acessar a área editável do mapa a seguir (clicar no ícone no canto superior direito “Visualizar mapa ampliado”. O link direcionará o mapa para uma janela do navegador. Será necessário solicitar edição para que vocês cadastrem alguma informação interessante sobre si. Reflita sobre questões de privacidade antes de escolher o que apresentar, uma vez que o mapa colaborativo é público.

Caso seja necessário, segue um video sobre a utilização do Google My Maps.

Material para encontro presencial

Análise espacial (módulo I)

Atividades

Ao longo do encontro, serão desenvolvidas atividades referentes à construção das competências a serem apropriadas por meio deste minicurso.

As atividades serão desenvolvidas individualmente e todos os alunos deverão ter os aplicativos obrigatórios instalados em seus computadores (R, RStudio e QGIS)

Os dados para desenvolvimento das análises estão disponíveis no Canvas da disciplina, assim como as orientações a serem seguidas para desenvolvimento dessas atividades sob tutoria da professora. Não há necessidade de conclusão das atividades durante nosso encontro virtual, mas mesmo que posteriormente, todas tarefas deverão ser realizadas para integral aprendizagem.

Videos a serem consultados para entendimento dos conceitos trabalhados nesse minicurso:

  1. Formas e dimensões terrestres
  1. Representações: sistemas geodésicos, modelos, datum, coordenadas geográficas e projetadas
  1. Escalas e distâncias
  1. Interface gráfica do QGIS
  1. Complementos: instalação e para que servem

  2. Mudança de datum e sistemas de coordenadas no QGIS

  3. Como criar um shapefile no QGIS

  1. Classificação de dados geográficos: vetoriais e matriciais
  1. Tabela de atributos
  1. Geocodificação

  2. Divisão, união e dissolução de camadas vetoriais

  1. Seleção por atributos e por localização

  2. Join por código e join espacial

  3. Mapas temáticos

  4. Geração de centroides

  5. Layout de impressão

  1. Fontes de dados

5: Análise espacial (módulo II)

“Nossa existência no tempo nos é determinada, mas temos ampla liberdade de escolha de nossa localização, que é influenciada, embora não de todo, pelo nosso lugar de origem. Encontrar a localização correta é essencial para uma vida de sucesso, também para um empreendimento de sucesso e para um assentamento duradouro – em suma, para a sobrevivência do grupo. Adicionalmente, uma localização adequada tem que ser a localização dos acontecimentos certos. […]” (Lösch, 1954, p. 3)

Agenda

Competências a serem adquiridas

  • Entender o papel do estudo geográfico das cidades nas conexões intra e interurbanas.
  • Capacidade analítica para definição de unidades espaciais, agregação e desagregação e áreas de influência.
    • agregação e desagregação de unidades espaciais
    • Contagem de observações em unidades espaciais
    • alguns métodos de determinação de áreas de influência
      • Cobertura espacial
      • Voronoi
  • Estatística espacial descritiva
  • Cálculo de indicadores de padrões de uso do solo
    • intensidade
    • uso misto
  • Medidas de distância em rede
  • Autocorrelação espacial

Atividade preliminar

Os alunos deverão assistir esses dois videos antes do nosso encontro (Minicurso: Análise espacial (módulo II)).

  1. Análise espacial
  1. Agregação e desagregação de camadas espaciais

Histograma de dados matriciais

Material para encontro presencial

Análise espacial (módulo II)

Atividades

Ao longo do encontro, serão desenvolvidas atividades referentes à construção das competências a serem apropriadas por meio deste minicurso.

As atividades serão desenvolvidas individualmente e todos os alunos deverão ter os aplicativos obrigatórios instalados em seus computadores (R, RStudio e QGIS)

Os dados para desenvolvimento das análises estão disponíveis no Canvas da disciplina, assim como as orientações a serem seguidas para desenvolvimento dessas atividades sob tutoria da professora. Não há necessidade de conclusão das atividades durante nosso encontro virtual, mas mesmo que posteriormente, todas tarefas deverão ser realizadas para integral aprendizagem.


6: Métodos Econométricos (módulo II)

Agenda

Estrutura conceitual


Projeto

Temas

Proposição de projetos de pesquisa a serem desenvolvidos como principal elemento de avalição da disciplina:

  1. Geomarketing e comportamento do consumidor

    1. Identificar uma atividade econômica (produto ou serviço) para avaliação de localização e concorrência espacial
  2. Análise da Relação entre a Precariedade Habitacional e Renda na RMBH

    1. Identificar uma unidade espacial para obtenção dos dados
    2. Definir, à luz de uma revisão bibliográfica, como definir precariedade habitacional e quais as informações necessárias para que seja possível tratar essa temática (Domicílios sem Iluminação Pública; Domicílios sem Sanitário; Domicílios sem Coleta de Lixo; Domicílios sem Energia Elétrica; Domicílios sem Pavimentação; Domicílios sem Bueiro/Boca de Lobo; Domicílios com Esgoto a céu aberto; Domicílios sem abastecimento de água da Rede Geral.
  3. Relação entre Renda da População e a oferta/uso do Transporte em Belo Horizonte
    a. Identificar, à luz da revisão bibliográfica, indicadores de oferta/uso do transporte público de Belo Horizonte e pensar nos indicadores e fontes de dados para a informação selecionada.
    b. Analisar se o modo de utilização do transporte e o tempo de viagem está relacionado com a renda da população do Município de São Paulo
    c. Analisar diferentes recortes temporais

  4. Iniquidades na Qualidade de Vida na RMBH ou BH

    1. Identificar atributos e indicadores que reflitam qualidade de vida e levantar possíveis fontes de dados.
    2. Pensar em indicadores de desigualdade para tratar a qualidade de vida.
  5. Iniquidades quanto à segurança na cidade – RMBH ou BH

    1. Escolher atributos e indicadores que reflitam a segurança pública, como Taxa de Estupro; Taxa de Feminicídio. Pensem que os atributos podem ser estratificados conforme a população que sofreu a violência e, portanto, grupos mais vulneráveis (mulheres, crianças, idosos, população de baixa renda).
    2. Relacionar com algumas variáveis explicativas como educação e renda.
    3. Pensar em indicadores de desigualdade para tratar a segurança pública.
  6. Desigualdade de renda e da qualidade de vida e a localização de grupos raciais e étnicos na cidade

    1. Pense em indicadores como renda, IDHM, índices de violência para discutir as relações entre locais de moradia para da população por estrato de raça e etnia e indicadores de renda e qualidade de vida.
  7. Food Deserts
    a. Relacionais fatores como pobreza e obesidade, localização de supermercados e varejo de alimentos frescos, doenças relacionadas com a dieta
    b. Análise da estrutura espacial e da acessibilidade aos Food Systems da RMBH.

  8. Análise da evolução dos índices de gravidez na adolescência em Belo Horizonte
    a. Identificar variáveis que possam representar a população crítica para este estudo (Censo 2010; IDHM; educação).
    b. Explorar a localização de população formada por adolescentes mulheres com faixa etária entre 10 e 17 anos residentes no estado e Minas Gerais;
    c. Pode-se estabelecer correlação entre renda média domiciliar e gravidez precoce?
    d. A dimensão educação estão correlacionadas com aumento ou mesmo redução da taxa de gravidez na adolescência?

  9. Desigualdade de renda entre Mulheres e Homens no Estado de Minas Gerais e sua relação com o grau de urbanização e o nível educacional educação;

    1. Há diferença de renda entre gêneros no estado de Minas Gerais? Há concentração espacial dessa desigualdade?
    2. As diferenças são maiores ou menores nas regiões metropolitanas?
    3. Como os fatores de escolaridade das mulheres, índice de gravidez na adolescência, taxa de fecundidade e proporção mulheres responsáveis pelo domicílio, IDH e Renda per capita no município se relacionam com a renda média das mulheres?
    4. O grau de urbanização do município interfere na renda média feminina? E masculina? O grau de escolaridade interfere na renda média feminina da mesma forma que na masculina?

Grupos

Os alunos deverão se organizar em grupos de até 4 (quatro) alunos para desenvolvimento dos projetos.

Estrutura metodológica dos projetos

  1. Definição do problema em investigação
  2. Elaboração de hipóteses
  3. Seleção e fonte de dados para obtenção de variáveis
    1. Unidade espacial
    2. Composição de indicadores
  4. Análise exploratória das variáveis (R)
  5. Análise da relação entre variáveis (R)
    1. Matriz de correlação
    2. Regressão não espacial
  6. Mapas para representação das variáveis no recorte espacial definido (QGIS)
  7. Análise espacial (QGIS)
    1. Autocorrelação espacial
    2. Cluster
    3. Outras técnicas que sejam relevantes
  8. Econometria espacial
  9. Síntese e considerações gerais

Entregas do projeto

Data Etapa
29/06 Definição do problema em investigação, Elaboração de hipóteses e Seleção e fonte de dados para obtenção de variáveis
02/07 Análise exploratória das variáveis e análise das relações entre variáveis (R)
08/07 Mapas para representação das variáveis e análise espacial no recorte espacial definido (QGIS)
10/07 Econometria espacial
13/07 Síntese, considerações gerais e apresentação

As entregas deverão ser feitas pelo canvas da disciplina e serão desenvolvidas em grupos predeterminados (no canvas).

Cronograma de seções virtuais para acompanhamento dos projetos - grupos de discussão

A sala virtual será aberta conforme cronograma com professores disponíveis para esclarecimentos de dúvidas e orientação para desenvolvimento dos projetos.

Data Atividade
26/06 Encontro 1 - 08:00 às 12:00
03/07 Encontro 2 - 08:00 às 12:00
10/07 Encontro 3 - 08:00 às 12:00

Seminário final

13/07 - 18:00 às 21:00

A apresentação do semináro final será composta por:
- apresentação de cada grupo (máximo de 15 minutos) - mesa de discussão para fechamento da experiência promovida pelo projeto de ensino (30 minutos)

Contatos

Renata Lúcia Magalhães de Oliveira
Patrick Mendes dos Santos
Lucélia Viviane Raad


Material e conceitos adicionais

1. Pirâmide de Maslow

Taxas de urbanização

Taxas de urbanização

LS0tDQp0aXRsZTogIkRlc2Vudm9sdmltZW50byBkZSBjb21wZXTDqm5jaWFzIHBhcmEgZGlzY3Vzc8OjbyBkZSBwcm9jZXNzb3MgdXJiYW5vcyBwb3IgbWVpbyBkZSBtw6l0b2RvcyBlc3BhY2lhaXMgcXVhbnRpdGF0aXZvcyINCmF1dGhvcjogIlJlbmF0YSBPbGl2ZWlyYSwgTHVjw6lsaWEgUmFhZCBlIFBhdHJpY2sgU2FudG9zIg0KZGF0ZTogIkxhc3QgdXBkYXRlZDogYHIgZm9ybWF0KFN5cy50aW1lKCksICclZCAlQiwgJVknKWAiDQpvdXRwdXQ6DQogIGh0bWxfZG9jdW1lbnQ6DQogICAgY3NzOiBzdHlsZS5jc3MNCiAgICB0aGVtZTogc3BhY2VsYWINCiAgICB0b2M6IHRydWUNCiAgICB0b2NfZmxvYXQ6DQogICAgICBjb2xsYXBzZWQ6IHRydWUNCiAgICAgIHNtb290aF9zY3JvbGw6IHRydWUNCiAgICB0b2NfZGVwdGg6IDMNCiAgICBudW1iZXJfc2VjdGlvbnM6IGZhbHNlDQogICAgY29kZV9mb2xkaW5nOiBoaWRlDQogICAgY29kZV9kb3dubG9hZDogdHJ1ZQ0KYmlibGlvZ3JhcGh5OiByZWZlcmVuY2VzLmJpYg0KbGluay1jaXRhdGlvbnM6IHRydWUNCi0tLQ0KDQojIEFwcmVzZW50YcOnw6NvDQoNCiMjIyBJbnRyb2R1w6fDo28gey19DQoNCk8gbW9kbyBkZSB2aWRhIGNvbnRlbXBvcsOibmVvIGVzdMOhIHBhc3NhbmRvIHBvciBtdWRhbsOnYXMgZXN0cnV0dXJhaXMsIGVtIGRpZmVyZW50ZXMgZGltZW5zw7Vlcy4gUGFydGUgZGVzc2FzIG11ZGFuw6dhcyBlc3TDoSBvY29ycmVuZG8gZW0gZnVuw6fDo28gZGEgcmV2b2x1w6fDo28gdGVjbm9sw7NnaWNhIHF1ZSBwZXJtaXRlIGludGVyYcOnw7VlcyBlbnRyZSBvcyBtZWlvcyBmw61zaWNvLCBiaW9sw7NnaWNvIGUgZGlnaXRhbCwgZGVub21pbmFkYSAqKlF1YXJ0YSBSZXZvbHXDp8OjbyBJbmR1c3RyaWFsKiogKFNjaHdhYiwgMjAxNzsgU3Vzc2tpbmQgZSBTdXNza2luZCwgMjAxNSkuIENvbW8gcmVzdWx0YWRvLCBkaWZlcmVudGVzIGNvbXBldMOqbmNpYXMgZnVuY2lvbmFpcyBlIGVzcGVjw61maWNhcyBlc3TDo28gc2VuZG8gZGVtYW5kYWRhcyBwYXJhIGF0dWHDp8OjbyBkZSBlZ3Jlc3NvcyBkZSBpbnN0aXR1acOnw7VlcyBkZSBlbnNpbm8gc3VwZXJpb3IgKElFUykgKEVsbW9yIEZpbGhvIGV0IGFsLiwgMjAxOTsgU3Vzc2tpbmQgZSBTdXNza2luZCwgMjAxNSksIGEgc2FiZXIgKGkpIGNvbXBldMOqbmNpYXMgZnVuY2lvbmFpczogY2FwYWNpZGFkZSBkZSBnZXJhw6fDo28gZSBhcGxpY2HDp8OjbyBkbyBjb25oZWNpbWVudG8sIHN1cGVyYcOnw6NvIGRlIGRlc2FmaW9zLCB0b21hZGEgZGUgZGVjaXPDo28sIHRyZWluYW1lbnRvIGUgcHJlY2VwdG9yaWE7IGUgKGlpKSBjb21wZXTDqm5jaWFzIGVzcGVjw61maWNhczogKipjYXBhY2lkYWRlIGRlIGNvbmNlcMOnw6NvLCBpbm92YcOnw6NvLCBhbsOhbGlzZSBlIHPDrW50ZXNlLCBnZXN0w6NvLCBhcGxpY2HDp8OjbyBkZSBtw6l0b2RvcyBwYXJhIGNhcmFjdGVyaXphw6fDo28gZSBzb2x1w6fDo28gZGUgcHJvYmxlbWFzIGUgYSBjYXBhY2lkYWRlIGRlIHJlbGFjaW9uYXIgbyBjb25oZWNpbWVudG8gYXByZWVuZGlkbyBkZSBtYW5laXJhIHRyYW5zZGlzY2lwbGluYXIqKi4gQXMgaW5zdGl0dWnDp8O1ZXMgZGUgZW5zaW5vIHN1cGVyaW9yIChJRVMpIGVuZnJlbnRhbSBvIGRlc2FmaW8gZGUgc2UgYWRlcXVhciBhIGVzc2FzIGRlbWFuZGFzLiBQYXJhIHRhbnRvLCDDqSBuZWNlc3PDoXJpbyB0cmFuc2Zvcm1hciBhIHNhbGEgZGUgYXVsYSBlbSB1bSBhbWJpZW50ZSBxdWUgZXN0aW11bGUgbyBwcm90YWdvbmlzbW8gZG8gZXN0dWRhbnRlLCBvIGRlc2Vudm9sdmltZW50byBkZSBhdXRvbm9taWEgcGVybWFuZW50ZSBkZSBhcHJlbmRpemFnZW0gZSBmYXZvcmXDp2EgY29tcG9ydGFtZW50b3MgcHJvYXRpdm9zIGUgYWRhcHTDoXZlaXMgbmFzIGF0aXZpZGFkZXMgcHJvZmlzc2lvbmFpcy4gICANCg0KQWzDqW0gZGVzc2EgbmVjZXNzaWRhZGUgZGUgdHJhbnNmb3JtYcOnw6NvIGRvIGVuc2lubyBwYXJhIGFkYXB0YcOnw6NvIMOgcyBtdWRhbsOnYXMgc3VwcmFjaXRhZGFzLCBubyBpbsOtY2lvIGRlc3RlIGFubyBub3MgZGVwYXJhbW9zIGNvbSB1bSBub3ZvIGUgaW1lZGlhdG8gZGVzYWZpbyBhZHZpbmRvIGRhcyByZWxhw6fDtWVzIGh1bWFuYXMgY29tIG8gYW1iaWVudGUgbmF0dXJhbDogYSBwYW5kZW1pYSBwcm92b2NhZGEgcGVsYSBkaXNzZW1pbmHDp8OjbyBkbyBub3ZvIGNvcm9uYXbDrXJ1cyBTQVJTLUNvVi0yIGVtIGVzY2FsYSBnbG9iYWwuIEVzc2UgZmVuw7RtZW5vIHJlc3VsdG91IG5hIGltcGxlbWVudGHDp8OjbyBkZSBkaXN0YW5jaWFtZW50byBzb2NpYWwsIG11ZGFuZG8gZGUgbWFuZWlyYSBzaWduaWZpY2F0aXZhIGEgZm9ybWEgY29tbyB2aXZlbW9zLiBBIGVkdWNhw6fDo28gw6kgdW1hIGRhcyBkaXZlcnNhcyBhdGl2aWRhZGVzIGltcGFjdGFkYXMgcGVsYSBwYW5kZW1pYSBlIG8gY29udGF0byBwcmVzZW5jaWFsIG5vIGFtYmllbnRlIGVzY29sYXIgZXN0w6EgcmVzdHJpdG8gZGV2aWRvIGFvIGRpc3RhbmNpYW1lbnRvIHNvY2lhbC4gQXNzaW0sIG9zIGNvbGFib3JhZG9yZXMgZGFzIElFUyBwcmVjaXNhbSBidXNjYXIgZm9ybWFzIGRlIG1hbnRlciBhIGludGVyYcOnw6NvIGVudHJlIGRpc2NlbnRlcyBlIGRvY2VudGVzLCBtZXNtbyBxdWUgdmlydHVhbCwgcXVhbGlmaWNhbmRvIG8gcHJvY2Vzc28gZGUgYXByZW5kaXphZ2VtIHBhcmEgYXMgY29tcGV0w6puY2lhcyBuZWNlc3PDoXJpYXMgYW8gZG8gbXVuZG8gY29udGVtcG9yw6JuZW8uIA0KDQpEZW50cmUgYXMgZGltZW5zw7VlcyBkZSBkZXNhZmlvcyBxdWUgZ2VzdG9yZXMgcMO6YmxpY29zLCBwcm9maXNzaW9uYWlzLCBpbnN0aXR1acOnw7VlcyBwcml2YWRhcyBlIGNpZGFkw6NvcyBlc3TDo28gZW5mcmVudGFuZG8gcGFyYSBhZGFwdGHDp8OjbyDDoHMgbXVkYW7Dp2FzIHByb3ZvY2FkYXMgcGVsbyBDT1ZJRC0xOSwgZXN0w6NvIGEgZXN0cnV0dXJhIGVjb27DtG1pY2EsIGEgZGluw6JtaWNhIHVyYmFuYSwgb3MgcGFkcsO1ZXMgZGUgY29uc3Vtbywgb3MgZGVzbG9jYW1lbnRvcywgYSBsaWJlcmRhZGUgZG9zIGluZGl2w61kdW9zLCBhIHBlcmNlcMOnw6NvIGRlIGZlbGljaWRhZGUsIGEgZGVncmFkYcOnw6NvIGRvIG1laW8gYW1iaWVudGUgZSBhcyBwcmlvcml6YcOnw7VlcyBkZSBhdGl2aWRhZGVzIGUgZXNjb2xoYXMgY290aWRpYW5hcy4gTyBwYXBlbCBkYSB1bml2ZXJzaWRhZGUsIGFsw6ltIGRhIGZvcm1hw6fDo28gZGUgY2FwaXRhbCBodW1hbm8gcGFyYSBvcyBkZXNhZmlvcyBjb250ZW1wb3LDom5lb3MsIGVudm9sdmUgYSBwcm9kdcOnw6NvIGUgdHJhbnNmZXLDqm5jaWEgZGUgY29uaGVjaW1lbnRvIGUgcGVuc2FtZW50byBjcsOtdGljbyBzb2JyZSBwcm9ibGVtYXMgcmVhaXMsIGNvbSBvIG9iamV0aXZvIGRlIHByb21vw6fDo28gZGUgcXVhbGlkYWRlIGRlIHZpZGEgcGFyYSBhcyBwZXNzb2FzLiBOZXNzZSBtb21lbnRvIGRpc3J1cHRpdm8sIGp1c3RpZmljYS1zZSBlc3NlIHByb2pldG8gZGUgZW5zaW5vIHBlbGEgbmVjZXNzaWRhZGUgZGUgZm9ybWFyIGNhcGl0YWwgaHVtYW5vLCBwb3IgbWVpbyBkZSBhbWJpZW50ZSB2aXJ0dWFsLCBjYXBheiBkZSBkaXNjdXRpciBwcm9jZXNzb3Mgc29jaWFpcywgZWNvbsO0bWljb3MgZSBhbWJpZW50YWlzIG5vIGNvbnRleHRvIHVyYmFubyBhdHVhbC4gDQoNCkVsYWJvcmFyIGUgZGVzZW52b2x2ZXIgcHJvamV0b3MgY29tIGZvY28gZW0gcHJvYmxlbWFzIHVyYmFub3MgdmlzYW5kbyBhIGFwcm9wcmlhw6fDo28gZGUgY29tcGV0w6puY2lhcyBlbSAqKm3DqXRvZG9zIGRlIGVjb25vbWV0cmlhIGUgYW7DoWxpc2UgZXNwYWNpYWwqKiBlIHJlc3BlY3RpdmEgaW1wbGVtZW50YcOnw6NvIGVtIGFtYmllbnRlIGNvbXB1dGFjaW9uYWwsIHBvciBtZWlvIGRhcyBwbGF0YWZvcm1hcyAqKlIqKiBlICoqUUdJUyoqLiBQYXJhIHRhbnRvLCBzZXLDo28gY29uc2lkZXJhZGFzIG1ldG9kb2xvZ2lhcyBhdGl2YXMgcGFyYSByZWFsaXphw6fDo28gZGFzIGF0aXZpZGFkZXMgcHJvcG9zdGFzLCB0dXRvcmlhIHNvYnJlIHTDqWNuaWNhcyBlc3BlY8OtZmljYXMgZGUgYW7DoWxpc2UgZGUgZGFkb3MgZXNwYWNpYWlzIGUgdHV0b3JpYWlzIHNvYnJlIGFzIGZlcnJhbWVudGFzIHF1YW50aXRhdGl2YXMgUiBlIFFHSVMsIHZpc2FuZG8gbyBjb25oZWNpbWVudG8gZG9zIGFtYmllbnRlcyBkZSB0cmFiYWxobyBlIGJpYmxpb3RlY2FzIHByw7NwcmlhcyBkZSBhbsOhbGlzZXMgZGUgcXVlc3TDtWVzIGVzcGFjaWFpcy4NCg0KQSBwcm9wb3N0YSBtZXRvZG9sw7NnaWNhIGRlc3RlIHByb2pldG8gZGUgZW5zaW5vIGVzdMOhIGJhc2VhZGEgZW0gYWxndW1hcyBwcsOhdGljYXMgcGVkYWfDs2dpY2FzIHF1ZSBzZSBmdW5kYW1lbnRhbSBuYSBhcHJlbmRpemFnZW0gYXRpdmEuIERlbnRyZSBlbGFzLCBjb25zaWRlcmFyZW1vcyBhcHJlbmRpemFnZW0gYmFzZWFkYSBlbSBwcm9qZXRvcyBlIHNhbGEgZGUgYXVsYSBpbnZlcnRpZGEuIE5lc3NlIHNpdGUgc8OjbyBkaXNwb25pYmlsaXphZG9zIGNvbnRlw7pkb3MgcGFyYSBzZXJlbSBleHBsb3JhZG9zIHBlbG9zIGFsdW5vcyBhIHByaW9yaSBkb3MgbWluaWN1cnNvcywgY29tcG9zdG9zIHBvciB2w61kZW9zIGUgc2l0dWHDp8O1ZXMtcHJvYmxlbWEuIFNlcsOjbyBlbnTDo28gcmVhbGl6YWRvcyBtaW5pY3Vyc29zIGNvbSBkdXJhw6fDo28gZGnDoXJpYSBkZSAyIGhvcmFzIGUgdG90YWwgZGUgNCBob3JhcywgcGFyYSBkaXNjdXNzw6NvIGRlIGNhZGEgdMOzcGljbyBwcm9wb3N0byBubyBjcm9ub2dyYW1hLCBhIHNhYmVyOiAqKihpKSBJbnRyb2R1w6fDo28gZG8gUiBlIGFvIFJTdHVkaW87IChpaSkgcHJvY2Vzc29zIHVyYmFub3M7IChpaWkpIG3DqXRvZG9zIGVjb25vbcOpdHJpY29zIChtw7NkdWxvcyBJIGUgSUkpOyBlIChpdikgQW7DoWxpc2UgZXNwYWNpYWwgKG3Ds2R1bG9zIEkgZSBJSSkqKi4gU2Vyw6NvIGFpbmRhIHByb3Bvc3RhcyBhdGl2aWRhZGVzIHByZWxpbWluYXJlcyAodsOtZGVvcyBlIGF0aXZpZGFkZXMgcHLDoXRpY2FzKSBhb3MgbWluaWN1cnNvcy4NCg0KLS0tLQ0KICAgDQojIyMgUmVzdWx0YWRvcyBlc3BlcmFkb3MNCi0gY29uc3RydcOnw6NvIGRvIGNvbmhlY2ltZW50byBhY2VyY2EgZGUgcHJvYmxlbWFzIHVyYmFub3MsIHRhaXMgY29tbyBhY2Vzc2liaWxpZGFkZSwgbW9iaWxpZGFkZSwgZXN0cnV0dXJhIGVzcGFjaWFsIGRlIGZ1bsOnw7VlcyB1cmJhbmFzIGUgc2V1IGltcGFjdG8gbmEgcHJvbW/Dp8OjbyBkZSBjaWRhZGVzIGVxdWl0YXRpdmFzIGUgZGUgcXVhbGlkYWRlIGRlIHZpZGEgcGFyYSBhIHBvcHVsYcOnw6NvLCBjb25zaWRlcmFuZG8gdGFudG8gYSBvcmdhbml6YcOnw6NvIHNvY2lhbCBjb3RpZGlhbmEgY29tbyBubyBtb21lbnRvIGRlIGV4Y2XDp8OjbyBwcm9tb3ZpZG8gcGVsbyBDT1ZJRC0xOTsgIA0KLSBhIGRpc3NlbWluYcOnw6NvIGRvIGNvbmhlY2ltZW50byBkYSBsaW5ndWFnZW0gZGUgcHJvZ3JhbWHDp8OjbyBkbyBSIGUgc3VhcyBwcmluY2lwYWlzIGJpYmxpb3RlY2FzIGRvIFIgZGVzdGluYWRhcyDDoCBtYW5pcHVsYcOnw6NvIGUgdHJhdGFtZW50byBkZSBkYWRvcyBlc3BhY2lhaXM7ICANCi0gYSBkaXNzZW1pbmHDp8OjbyBkbyBjb25oZWNpbWVudG8gc29icmUgZmVycmFtZW50YXMgZGUgYW7DoWxpc2UgcXVhbnRpdGF0aXZhIGVzcGFjaWFsLCBlc3BlY2lhbG1lbnRlIGVjb25vbWV0cmlhIGVzcGFjaWFsOyAgDQotIGltZXJzw6NvIGRlIHByb2Zlc3NvcmVzIGUgYWx1bm9zIGVtIHVtYSBtZXRvZG9sb2dpYSBhdGl2YSBkZSBlbnNpbm8sIGdlcmFuZG8gY29uc2lkZXJhw6fDtWVzIGNyw610aWNhcyBhY2VyY2EgZGFzIHZhbnRhZ2VucyBlIGRlc3ZhbnRhZ2VucyBkb3MgbcOpdG9kb3MgYXBsaWNhZG8gZSBhcyBwb3Nzw612ZWlzIG1lbGhvcmlhczsgIA0KLSBkaWZ1c8OjbyBkZSBjb25oZWNpbWVudG8gcG9yIG1laW8gZGEgZWxhYm9yYcOnw6NvIGUgcG9zc8OtdmVsIHB1YmxpY2HDp8OjbyBkZSBhcnRpZ29zIGFjZXJjYSBkb3MgaXRlbnMgZGUgcGVzcXVpc2EgcHJvcG9zdG9zLg0KDQotLS0tDQogICANCiMjIyBSZWN1cnNvcyBjb21wdXRhY2lvbmFpcyAgIA0KDQojIyMjIEVkaXRvciBkZSBwbGFuaWxoYSAgICAgDQotIE1pY3Jvc29mdCBFeGNlbCAgIA0KLSBMaWJyZW9mZmljZSBjYWxjICAgDQotIEdvb2dsZSBzcHJlYWRzaGVldCAgIA0KLSBvdXRyb3MgcmVjdXJzb3Mgw6AgZXNjb2xoYSBkbyBhbHVubyAgIA0KDQoNCiMjIyMgUiAgIA0KDQo+IEJhaXhhciBlIGluc3RhbGFyIG8gUjogPGEgaHJlZj0iaHR0cHM6Ly9jcmFuLnItcHJvamVjdC5vcmcvYmluL3dpbmRvd3MvYmFzZS8iIHRhcmdldD0iX2JsYW5rIj5saW5rPC9hPg0KDQpObyBsaW5rIGFjaW1hIMOpIGFwcmVzZW50YWRvIG8gcHJvY2Vzc28gZGUgaW5zdGFsYcOnw6NvIHBhcmEgV2luZG93cy4gTm8gbWVzbW8gc2l0ZSDDqSBwb3Nzw612ZWwgZW5jb250cmFyIHByb2NlZGltZW50b3MgZGUgaW5zdGFsYcOnw6NvIHBhcmEgb3V0cm9zIHNpc3RlbWFzIG9wZXJhY2lvbmFpcy4gDQoNCkxpbmtzIGFkaWNpb25haXM6ICAgIA0KPGEgaHJlZj0iaHR0cHM6Ly9ycHVicy5jb20vY2Fzc2lvcmFtcGluZWxsaS80ODg5OTkiIHRhcmdldD0iX2JsYW5rIj5WaXPDo28gZ2VyYWwgZSBwcmltZWlyb3MgcGFzc29zIGNvbSBSIGUgUlN0dWRpbzwvYT4NCg0KLS0tLQ0KICAgDQojIyMjIFJTdHVkaW8NCg0KPiBCYWl4YXIgZSBpbnN0YWxhciBvIFJTdHVkaW86IDxhIGhyZWY9Imh0dHBzOi8vcnN0dWRpby5jb20vcHJvZHVjdHMvcnN0dWRpby9kb3dubG9hZC8iIHRhcmdldD0iX2JsYW5rIj5saW5rPC9hPg0KDQpObyBsaW5rIGFjaW1hIMOpIGFwcmVzZW50YWRvIG8gcHJvY2Vzc28gZGUgaW5zdGFsYcOnw6NvIHBhcmEgV2luZG93cy4gTm8gbWVzbW8gc2l0ZSDDqSBwb3Nzw612ZWwgZW5jb250cmFyIHByb2NlZGltZW50b3MgZGUgaW5zdGFsYcOnw6NvIHBhcmEgb3V0cm9zIHNpc3RlbWFzIG9wZXJhY2lvbmFpcy4gDQoNCi0tLS0NCiAgIA0KIyMjIyBRR0lTDQoNCkJhaXhhciBlIEluc3RhbGFyIG8gUUdJUzogIA0KDQo+IDxhIGhyZWY9Imh0dHBzOi8vZG93bmxvYWQub3NnZW8ub3JnL29zZ2VvNHcvb3NnZW80dy1zZXR1cC14ODZfNjQuZXhlIiB0YXJnZXQ9Il9ibGFuayI+NjQgYml0czwvYT4gICAgDQo+IDxhIGhyZWY9Imh0dHBzOi8vZG93bmxvYWQub3NnZW8ub3JnL29zZ2VvNHcvb3NnZW80dy1zZXR1cC14ODYuZXhlIiB0YXJnZXQ9Il9ibGFuayI+MzIgYml0czwvYT4NCg0KPiA8aWZyYW1lIHdpZHRoPSI1NjAiIGhlaWdodD0iMzE1IiBzcmM9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL3BWODRBUEVTZ1hjIiBmcmFtZWJvcmRlcj0iMCIgYWxsb3c9ImFjY2VsZXJvbWV0ZXI7IGF1dG9wbGF5OyBlbmNyeXB0ZWQtbWVkaWE7IGd5cm9zY29wZTsgcGljdHVyZS1pbi1waWN0dXJlIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+DQoNCi0tLS0NCiAgIA0KIyBNaW5pY3Vyc29zDQoNCiMjIDE6IEludHJvZHXDp8OjbyBhbyBSIGUgYW8gYW1iaWVudGUgUlN0dWRpbyANCg0KIyMjIyBBZ2VuZGENCi0gKipkYXRhKio6IDIzIGUgMjQgZGUganVuaG8NCi0gKipob3LDoXJpbyoqOiAxODowMCAtIDIwOjAwDQotICoqcmVjdXJzb3MqKjogICANCjxhIGhyZWY9Imh0dHBzOi8vY29uZmVyZW5jaWF3ZWIucm5wLmJyL3dlYmNvbmYvcmVuYXRhLWx1Y2lhLW1hZ2FsaGFlcy1kZS1vbGl2ZWlyYSIgdGFyZ2V0PSJfYmxhbmsiPlNhbGEgZGUgY29uZmVyw6puY2lhIHdlYmNvbmZlcsOqbmNpYSBSTlA8L2E+DQoNCiMjIyBDb21wZXTDqm5jaWFzIGEgc2VyZW0gZGVzZW52b2x2aWRhcw0KMSAtIE8gcXVlIMOpIG8gYW1iaWVudGUgUiBlIHBhcmEgcXVlIHNlcnZlDQoNCjIgLSBUaXBvcyBiw6FzaWNvcyBkZSBkYWRvcyBubyBSLg0KDQozIC0gQ3JpYW5kbyBlIG5vbWVhbmRvIHZldG9yZXMgbm8gUi4NCg0KNCAtIFN1YmNvbmp1bnRvcyBkZSB2ZXRvcmVzIG5vIFIuDQoNCjUgLSBDb21vIGNyaWFyIGUgbm9tZWFyIG1hdHJpemVzIG5vIFIuDQoNCjYgLSBPcGVyYcOnw7VlcyBhcml0bcOpdGljYXMgY29tIG1hdHJpemVzLg0KDQo3IC0gRnVuw6fDtWVzIGVzdGF0w61zdGljYXMgYsOhc2ljYXMuDQoNCiMjIyMgQmFzZSBkZSBkYWRvcyBlIHJlY3Vyc29zDQo+IFbDrWRlb3MgRGF0YUNhbXA6IDxhIGhyZWY9Imh0dHBzOi8veW91dHUuYmUvU1d4b0pxVHFvMDgiIHRhcmdldD0iX2JsYW5rIj5Ww61kZW9zIERhdGFjYW1wPC9hPg0KDQo+IFNpdGU6IDxhIGhyZWY9Imh0dHBzOi8vdG93YXJkc2RhdGFzY2llbmNlLmNvbS9kZXNjcmlwdGl2ZS1zdGF0aXN0aWNzLWluLXItOGUxY2FkMjBiZjNhIiB0YXJnZXQ9Il9ibGFuayI+RXN0YXTDrXN0aWNhcyBkZXNjcml0aXZhcyBubyBSPC9hPg0KDQo+IFtSZW5kYSBlIENvbnN1bW8gZG9zIEVzdGFkb3MgVW5pZG9zXShodHRwczovL2NhbnZhcy5pbnN0cnVjdHVyZS5jb20vZmlsZXMvOTg5NjA1OTEvZG93bmxvYWQ/ZG93bmxvYWRfZnJkPTEpIChbTGluayBhbHRlcm5hdGl2byBwYXJhIG9zIGRhZG9zXShodHRwczovL3d3dy5kcm9wYm94LmNvbS9zL3VobGVjZXBmMnA5enJ0NC9SZW5kYUNvbnN1bW8ueGxzeD9kbD0wKSkNCltEYWRvcyBlbSBjc3ZdKGh0dHBzOi8vd3d3LmRyb3Bib3guY29tL3MvbmM2cmg2OGVpZ2JtcHUwL1JlbmRhQ29uc3Vtby5jc3Y/ZGw9MCkNCg0KIyMjIEV4ZXJjw61jaW8gMDENCk9zIGRhZG9zIGFiYWl4byBjb3JyZXNwb25kZW0gw6BzIG9ic2VydmHDp8O1ZXMgc29icmUgRGVzcGVzYSBkZSBDb25zdW1vIFBlc3NvYWwgZSBQcm9kdXRvIEludGVybm8gQnJ1dG8gZW0gYmlsaMO1ZXMgZGUgZMOzbGFyZXMgZGUgMjAwMCwgcGFyYSBvcyBFc3RhZG9zIFVuaWRvcy4gT3MgZGFkb3MgZm9yYW0gb2J0aWRvcyBubyBsaXZybyBkbyBHdWphcmF0aSwgaW50aXR1bGFkbyBFY29ub21ldHJpYSBiw6FzaWNhLiBFeGlzdGUgdW1hIHRlb3JpYSAgcXVlIGVzdGFiZWxlY2UgdW1hIHJlbGHDp8OjbyBlbnRyZSBvIGNvbnN1bW8gZSBhIHJlbmRhIGRlIHVtIHBhw61zIChtZWRpZGEgZW0gdGVybW9zIGRvIFByb2R1dG8gSW50ZXJubyBCcnV0bykuIFBhcnRpbmRvIGRvIHByZXNzdXBvc3RvIHF1ZSwgZXN0YSDDqSB1bWEgcmVsYcOnw6NvIGxpbmVhciwgdGVtb3MgcXVlIG8gYSBEZXNwZXNhIGRlIGNvbnN1bW8gcGVzc29hbCAoWSkgZ3VhcmRhIGEgc2VndWludGUgcmVsYcOnw6NvIGNvbSBvIFByb2R1dG8gSW50ZXJubyBCcnV0byAoWCkuDQoNCiRZPVxiZXRhXzArXGJldGFfMVgkDQoNCkNvbSBiYXNlIG5vIGV4cG9zdG8gYWNpbWEsIHNpZ2EgYXMgb3JpZW50YcOnw7VlcyBhYmFpeG8gcGFyYSBvYnRlciBvcyB2YWxvcmVzIGRlICRcYmV0YV8wJCBlICRcYmV0YV8xJCBlLCBhc3NpbSwgZGV0ZXJtaW5hciBhIGVxdWHDp8OjbyBkYSByZXRhLg0KDQojIyMjIEFjZXNzbyDDoCBiYXNlIGRlIGRhZG9zDQpgYGB7ciBlY2hvPVRSVUUsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQpsaWJyYXJ5KCJyZWFkeGwiKQ0KI1JlbmRhQ29uc3Vtbz0gcmVhZF9leGNlbCgiQzpcXEx1Y2VsaWFcXENFRkVUMjAyMC0xXFxEYWRvc0VzcGFjaWFpc1xcUHJvY2Vzc29zVXJiYW5vc1xcUmVuZGFDb25zdW1vLnhsc3giKQ0KYGBgDQoNCmBgYHtyIGVjaG89VFJVRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCiNhcy5tYXRyaXgoUmVuZGFDb25zdW1vKQ0KYGBgDQoNCiMjIyMgQXRpdmlkYWRlcw0KYSAtIENyaWUgdW0gdmV0b3IgZGUgdW5zIHF1ZSB0ZW5oYSB1bSBuw7ptZXJvIGRlIGVudHJhZGFzIGlndWFsIGFvIG7Dg8K6bWVybyBkZSBsaW5oYXMgZGEgbWF0cml6IGFjaW1hLiBQb2RlIGRlbm9taW7DoS1sbyB1bnMuDQoNCmIgLSBDcmllIHVtYSBtYXRyaXoganVudGFuZG8gbyB2ZXRvciBkZSB1bnMgZSBhIHRlcmNlaXJhIGNvbHVuYSBkYSBtYXRyaXogYWNpbWEuIFBvZGUgZGVub21pbsOhLWxhIFguDQoNCmMgLSBDcmllIHVtIHZldG9yIGEgcGFydGlyIGRhIHNlZ3VuZGEgY29sdW5hIGRhIG1hdHJpeiBhY2ltYS4gUG9kZSBkZW5vbWluw6EtbG8gWS4NCg0KZCAtIFJlYWxpemUgbyBzZWd1aW50ZSBjw6FsY3VsbzogJChYXlRYKV57LTF9WF5UWSQuDQoNCmUgLSBJZGVudGlmaXF1ZSBvICRcYmV0YV8wJCBlIG8gJFxiZXRhXzEkLg0KDQojIyMgRnVuw6fDtWVzIGVzdGF0w61zdGljYXMgYsOhc2ljYXMNCk3DqWRpYSwgdmFyacOibmNpYSwgbWVkaWFuYSwgZGVzdmlvIHBhZHLDo28sY29lZmljaWVudGUgZGUgY29ycmVsYcOnw6NvLCBoaXN0b2dyYW1hIGUgYm94IHBsb3QuDQoNCiMjIyMgRXhlcmPDrWNpbyAwMg0KUGFyYSByZWFsaXphciBvcyBleGVyY8OtY2lvcyBhYmFpeG8gdm9jw6ogcG9kZSB1c2FyIGNvbW8gcmVmZXJlbmNpYWwgbyBtYXRlcmlhbCBkaXNwb27DrXZlbCBubyBsaW5rIGFiYWl4bzoNCg0KPiA8YSBocmVmPSJodHRwczovL3Rvd2FyZHNkYXRhc2NpZW5jZS5jb20vZGVzY3JpcHRpdmUtc3RhdGlzdGljcy1pbi1yLThlMWNhZDIwYmYzYSIgdGFyZ2V0PSJfYmxhbmsiPkVzdGF0w61zdGljYXMgZGVzY3JpdGl2YXMgbm8gUjwvYT4NCg0KMSAtIENhbGN1bGUgcGFyYSBhIG3DqWRpYSwgdmFyacOibmNpYSwgZGVzdmlvLXBhZHLDo28gcGFyYSBhcyB2YXJpw6F2ZWlzIFJlbmRhIGUgQ29uc3VtbyBkYSBwbGFuaW5oYSBSZW5kYUNvbnN1bW8gaW1wb3J0YWRhIG5vIGV4ZXJjw61jaW8gYW50ZXJpb3IuDQoNCjIgLSBDYWxjdWxlIG8gY29lZmljaWVudGUgZGUgY29ycmVsYcOnw6NvIGVudHJlIGEgUmVuZGEgZSBvIGNvbnN1bW8uDQoNCjMgLSBGYcOnYSBvIGhpc3RvZ3JhbWEgZSBvIGJveC1wbG90IGRhcyB2YXJpw6F2ZWlzIFJlbmRhIGUgY29uc3Vtby4gQXMgZHVhcyB2YXJpw6F2ZWlzIGFwcmVzZW50YW0gb2JzZXJ2YcOnw7VlcyBkaXNjcmVwYW50ZXMgKG91dGxpZXJzKS4NCg0KIyMjIE91dHJhcyByZWZlcsOqbmNpYXMgaW50ZXJlc3NhbnRlcyBzb2JyZSBpbnRyb2R1w6fDo28gYW8gUg0KQ29tbyB1dGlsaXphciBvIERhdGEgRnJhbWUuICAgIA0KDQo8aWZyYW1lIHdpZHRoPSI1NjAiIGhlaWdodD0iMzE1IiBzcmM9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkLzlmMmc3Uk41TjBJIiBmcmFtZWJvcmRlcj0iMCIgYWxsb3c9ImFjY2VsZXJvbWV0ZXI7IGF1dG9wbGF5OyBlbmNyeXB0ZWQtbWVkaWE7IGd5cm9zY29wZTsgcGljdHVyZS1pbi1waWN0dXJlIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+DQoNCjxhIGhyZWY9Imh0dHBzOi8vcnB1YnMuY29tL3JpY2FyZG9fb2xpbmRhL0lJSUVORUNUIiB0YXJnZXQ9Il9ibGFuayI+SW50cm9kdcOnw6NvIGFvIFI8L2E+DQoNCltIZWxwIHBhcmEgZnVuw6fDtWVzIGLDoXNpY2FzIGRvIFJdKGh0dHBzOi8vc3RhdC5ldGh6LmNoL1ItbWFudWFsL1ItZGV2ZWwvbGlicmFyeS9iYXNlL2h0bWwvMDBJbmRleC5odG1sKQ0KDQoNCi0tLS0NCiAgIA0KIyMgMjogUHJvY2Vzc29zIFVyYmFub3Mgey19DQoNCjo6OiB7I2JveDEgLmdyZWVuLWJveH0NCuKAnE9zIHNlbnRpbWVudG9zIG1haXMgZ2VudWluYW1lbnRlIGh1bWFub3MgbG9nbyBzZSBkZXN1bWFuaXphbSBuYSBjaWRhZGUu4oCdICAgDQpFw6dhIGRlIFF1ZWlyw7NzIA0KOjo6IA0KDQojIyMjIEFnZW5kYQ0KLSAqKmRhdGEqKjogMjUgZSAyNiBkZSBqdW5obw0KLSAqKmhvcsOhcmlvKio6IDE4OjAwIC0gMjA6MDANCi0gKipyZWN1cnNvcyoqOiAgIA0KPGEgaHJlZj0iaHR0cHM6Ly9jb25mZXJlbmNpYXdlYi5ybnAuYnIvd2ViY29uZi9yZW5hdGEtbHVjaWEtbWFnYWxoYWVzLWRlLW9saXZlaXJhIiB0YXJnZXQ9Il9ibGFuayI+U2FsYSBkZSBjb25mZXLDqm5jaWEgd2ViY29uZmVyw6puY2lhIFJOUDwvYT4NCg0KIyMjIENvbXBldMOqbmNpYXMgYSBzZXJlbSBkZXNlbnZvbHZpZGFzDQpBbyBmaW5hbCBkZXNzZSBtaW5pLWN1cnNvLCBvcyBhbHVub3MgZGV2ZXLDo28gc2VyIGNhcGF6ZXMgZGUgZGlzY3V0aXIgb3Mgc2VndWludGVzIGNvbmNlaXRvczogICANCg0KLSBVcmJhbml6YcOnw6NvICAgDQotIENpZGFkZXMgLSBkZWZpbmnDp8OjbyBlIG9yaWdlbSAgIA0KLSBDaWRhZGUgbmEgcmVnacOjbyAgIA0KLSBQb3Npw6fDo28gICANCiAgICAtIEZ1bsOnw6NvICAgDQogICAgLSBUaXBvbG9naWFzICAgDQogICAgLSBIaWVyYXJxdWlhcyAgIA0KICAgIC0gQ2VudHJhbGlkYWRlIGUgcmVkZXMgdXJiYW5hcyAgIA0KLSBDaWRhZGUgZSBhcyByZWxhw6fDtWVzIGludHJhdXJiYW5hcyAgIA0KICAgIC0gU8OtdGlvICAgDQogICAgLSBFc3RydXR1cmEgbW9yZm9sw7NnaWNvIGZ1bmNpb25hbCAgIA0KLSBTdWJzaXN0ZW1hcyB1cmJhbm9zICAgDQogICAgLSBUcmFuc3BvcnRlcyAgIA0KICAgIC0gVXNvIGRvIHNvbG8gICANCiAgICAtIEZ1bsOnw7Vlcy9hdGl2aWRhZGVzDQogICANCiMjIyBBdGl2aWRhZGUgcHJlbGltaW5hciAgICANCg0KT3MgYWx1bm9zIGRldmVyw6NvIGFzc2lzdGlyIGVzc2VzIHF1YXRybyB2w61kZW9zICoqYW50ZXMqKiBkbyBub3NzbyBlbmNvbnRybyAoTWluaWN1cnNvOiBQcm9jZXNzb3MgVXJiYW5vcykuICAgDQoNCg0KPGlmcmFtZSB3aWR0aD0iNTYwIiBoZWlnaHQ9IjMxNSIgc3JjPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC95eHpGamlLd1VaYyIgZnJhbWVib3JkZXI9IjAiIGFsbG93PSJhY2NlbGVyb21ldGVyOyBhdXRvcGxheTsgZW5jcnlwdGVkLW1lZGlhOyBneXJvc2NvcGU7IHBpY3R1cmUtaW4tcGljdHVyZSIgYWxsb3dmdWxsc2NyZWVuPjwvaWZyYW1lPg0KDQoNCjxpZnJhbWUgd2lkdGg9IjU2MCIgaGVpZ2h0PSIzMTUiIHNyYz0iaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvWi05VlhsS3lDa0kiIGZyYW1lYm9yZGVyPSIwIiBhbGxvdz0iYWNjZWxlcm9tZXRlcjsgYXV0b3BsYXk7IGVuY3J5cHRlZC1tZWRpYTsgZ3lyb3Njb3BlOyBwaWN0dXJlLWluLXBpY3R1cmUiIGFsbG93ZnVsbHNjcmVlbj48L2lmcmFtZT4gICANCg0KDQo8aWZyYW1lIHdpZHRoPSI1NjAiIGhlaWdodD0iMzE1IiBzcmM9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL3RWMVFXV1FkM3RrIiBmcmFtZWJvcmRlcj0iMCIgYWxsb3c9ImFjY2VsZXJvbWV0ZXI7IGF1dG9wbGF5OyBlbmNyeXB0ZWQtbWVkaWE7IGd5cm9zY29wZTsgcGljdHVyZS1pbi1waWN0dXJlIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+ICAgICANCg0KDQo8aWZyYW1lIHdpZHRoPSI1NjAiIGhlaWdodD0iMzE1IiBzcmM9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL3lzR0dJeHhyd3VrIiBmcmFtZWJvcmRlcj0iMCIgYWxsb3c9ImFjY2VsZXJvbWV0ZXI7IGF1dG9wbGF5OyBlbmNyeXB0ZWQtbWVkaWE7IGd5cm9zY29wZTsgcGljdHVyZS1pbi1waWN0dXJlIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+DQoNCiAgICAgDQoNCiMjIyBNYXRlcmlhbCBwYXJhIGVuY29udHJvIHByZXNlbmNpYWwNCioqUHJvY2Vzc29zIFVyYmFub3MqKiAgIA0KDQoNCmBgYHtyICwgZWNobz1GQUxTRX0NCmtuaXRyOjppbmNsdWRlX3VybCgiaHR0cHM6Ly9wbGFjZXMtcmVzZWFyY2guZ2l0aHViLmlvL3Byb2NfdXJiYW5vc19jbGFzcy8jMSIpDQpgYGANCg0KDQojIyMjIEF0aXZpZGFkZXMgMjUvMDYvMjAyMCANCkEgdHVybWEgc2Vyw6EgZGl2aWRpZGEgZW0gNCBncnVwb3MgKGFsZWF0b3JpYW1lbnRlKSBlIGNhZGEgZ3J1cG8gcGVybWFuZWNlcsOhIGF0aXZvIHBvciAxMCBtaW51dG9zIHBhcmEgZGlzY3Vzc8O1ZXMuIEFvIGZpbmFsIGRlc3NlIHRlbXBvLCBvIHJlcHJlc2VudGFudGUgZG8gZ3J1cG8gYXByZXNlbnRhcsOhIG9zIGRlc3RhcXVlcyBlIGFyZ3VtZW50YcOnw7VlcyBlbSA1IG1pbnV0b3MgZSB0ZXJlbW9zIDEwIG1pbnV0b3MgcGFyYSBkaXNjdXNzw6NvIGRlIGNhZGEgdMOzcGljby4gU2UgcG9zc8OtdmVsLCBpbmNsdWFtIGVsZW1lbnRvcyBwaWN0w7NyaWNvcyBxdWUgcG9zc2FtIGZ1bmRhbWVudGFyIGEgYXJndW1lbnRhw6fDo28uICAgIA0KDQoxLiBDb21vIGEgdXJiYW5pemHDp8OjbyBpbXBhY3RhIGFzIGRpbWVuc8O1ZXMgYW1iaWVudGFsLCBzb2NpYWwgZSBlY29uw7RtaWNhIG5hcyBlc2NhbGFzIGdsb2JhbCwgcmVnaW9uYWwgZSBsb2NhbD8gICAgDQoNCjIuIFBlbnNhbmRvIG5hIFJNQkgsIHNlbGVjaW9uZSBkb2lzIG11bmljw61waW9zIGUgY2FyYWN0ZXJpemUgc2V1IHBhcGVsIG5hIHJlZGUgdXJiYW5hLiANCg0KMy4gQW5hbGlzZSBhcyByZWxhw6fDtWVzIGVudHJlIG8gc8OtdGlvIGUgYSBlc3RydXR1cmEgbW9yZm9sw7NnaWNvLWZ1bmNpb25hbCBkZSBCZWxvIEhvcml6b250ZS4gDQoNCjQuIFNlbGVjaW9uZSB1bWEgaW50ZXJ2ZW7Dp8OjbyB1cmJhbmEgbmEgY2lkYWRlIGRlIEJlbG8gSG9yaXpvbnRlIGUgY2FyYWN0ZXJpemUgc2V1cyByZXN1bHRhZG9zIHF1YW50byDDoCBjb2Vzw6NvIGVudHJlIG11ZGFuw6dhcyBubyB1c28gZG8gc29sbywgc2lzdGVtYXMgZGUgdHJhbnNwb3J0ZXMgZSByZWRlIGRlIGF0aXZpZGFkZXMuICAgDQoNCg0KIyMjIyBBdGl2aWRhZGVzIDI2LzA2LzIwMjANCkEgdHVybWEgc2Vyw6EgZGl2aWRpZGEgZW0gNCBncnVwb3MgKGFsZWF0b3JpYW1lbnRlKSBlIGNhZGEgZ3J1cG8gcGVybWFuZWNlcsOhIGF0aXZvIHBvciAyMCBtaW51dG9zIHBhcmEgZGlzY3Vzc8O1ZXMuIEFvIGZpbmFsIGRlc3NlIHRlbXBvLCBvIHJlcHJlc2VudGFudGUgZG8gZ3J1cG8gYXByZXNlbnRhcsOhIG9zIGRlc3RhcXVlcyBlIGFyZ3VtZW50YcOnw7VlcyBlbSA1IG1pbnV0b3MgZSB0ZXJlbW9zIDEwIG1pbnV0b3MgcGFyYSBkaXNjdXNzw6NvIGRlIGNhZGEgdMOzcGljby4gU2UgcG9zc8OtdmVsLCBpbmNsdWFtIGVsZW1lbnRvcyBwaWN0w7NyaWNvcyBxdWUgcG9zc2FtIGZ1bmRhbWVudGFyIGEgYXJndW1lbnRhw6fDo28uICANCg0KMS4gQW7DoWxpc2UgY3LDrXRpY2EgZG8gcGFwZWwgZGEgdGVjbm9sb2dpYSAoc21hcnQgY2l0aWVzLCBwb3IgZXhlbXBsbykgbmEgcmVtb2RlbGFnZW0gZGFzIG5vc3NhcyBjaWRhZGVzIHBlbnNhbmRvIG5hIGVzY2FsYSBodW1hbmEgICANCg0KMi4gQW7DoWxpc2UgY3LDrXRpY2EgZGEgaW1wbGVtZW50YcOnw6NvIGRlIGNpbmVtYXMgZHJpdmUtaW5zIG5hcyBjaWRhZGVzIGJyYXNpbGVpcmFzIG5vIHBlcsOtb2RvIGRhIHBhbmRlbWlhIGUgYXDDs3MgYSBsaWJlcmHDp8OjbyBkYSBjaXJjdWxhw6fDo28gZGUgcGVzc29hcyAgIA0KDQozLiBDb21vIGVzdMOhIGEgZGluw6JtaWNhIGRvIGlzb2xhbWVudG8gc29jaWFsIGFvIGxvbmdvIGRvcyDDumx0aW1vcyA0IG1lc2VzIGUgcXVhaXMgZmF0b3JlcyBwcmVzZW50ZXMgZW0gdW1hIGNpZGFkZSBzw6NvIGltcG9ydGFudGVzIHBhcmEgbWFudXRlbsOnw6NvIGRvIGRpc3RhbmNpYW1lbnRvPyANCiAgIA0KNC4gUXVhaXMgbWVkaWRhcyBlc3TDo28gc2VuZG8gaW1wbGVtZW50YWRhcyBlbSByZWxhw6fDo28gw6AgbW9iaWxpZGFkZSBuYXMgY2lkYWRlcyBldXJvcMOpaWFzIG5hIGFiZXJ0dXJhIGRvIGlzb2xhbWVudG8gc29jaWFsPyBGYcOnYSB1bWEgYW7DoWxpc2UgY3LDrXRpY2EuIA0KIA0KDQoNCi0tLS0NCiAgIA0KIyMgMzogTcOpdG9kb3MgRWNvbm9tw6l0cmljb3MgKG3Ds2R1bG8gSSl7LX0NCg0KIyMjIyBBZ2VuZGENCi0gKipkYXRhKio6IDI5IGUgMzAgZGUganVuaG8NCi0gKipob3LDoXJpbyoqOiAxODowMCAtIDIwOjAwDQotICoqcmVjdXJzb3MqKjogICANCjxhIGhyZWY9Imh0dHBzOi8vY29uZmVyZW5jaWF3ZWIucm5wLmJyL3dlYmNvbmYvcmVuYXRhLWx1Y2lhLW1hZ2FsaGFlcy1kZS1vbGl2ZWlyYSIgdGFyZ2V0PSJfYmxhbmsiPlNhbGEgZGUgY29uZmVyw6puY2lhIHdlYmNvbmZlcsOqbmNpYSBSTlA8L2E+DQogICANCiAgIA0KIyMjIFBsYW5vIGRhIGF1bGEgZSByZWN1cnNvcw0KMSAtIEFwcmVzZW50YcOnw6NvIGRvIHByb2Zlc3NvciBwb3IgYXByb3hpbWFkYW1lbnRlIDMwIG1pbnV0b3MgbW9zdHJhbmRvIGFzcGVjdG9zIGLDoXNpY29zIGRlIGVjb25vbWV0cmlhDQoNCiAgUmVjdXJzb3M6IFNsaWRlcw0KDQoyIC0gRXhlcmPDrWNpbyBwcsOhdGljbyBubyBSIHVzYW5kbyBjb21hbmRvIGxtIHBhcmEgZXN0aW1hciBtb2RlbG8gZGUgcmVncmVzc8OjbyBsaW5lYXIgc2ltcGxlcyBwYXJhIGRhZG9zIGRlIHJlbmRhIGUgY29uc3Vtby4NCg0KICBSZWN1cnNvczogUiBwcm9ncmFtIGUgYmFzZSBkZSBkYWRvcyBubyBleGNlbC4NCg0KMyAtIEFwcmVzZW50YcOnw6NvIGRvcyByZXN1bHRhZG9zIGVtIGdydXBvIGUgc29sdcOnw6NvIGRlIGTDunZpZGFzLg0KDQo0IC0gRGVmaW5pw6fDtWVzIHBhcmEgdHJhYmFsaGFyIGNvbSBkYWRvcyBzb2JyZSBhY2Vzc2liaWxpZGFkZS4NCg0KDQoNCiMjIyBPIG9iamV0aXZvIGRhIGVjb25vbWV0cmlhOg0KRXN0dWRhciBhIHJlbGHDp8OjbyBsaW5lYXIgZW50cmUgZHVhcyB2YXJpw6F2ZWlzIHF1YW50aXRhdGl2YXMuDQoNCkV4ZW1wbG9zOg0KDQotIEFsdHVyYSBkb3MgcGFpcyBlIGFsdHVyYSBkb3MgZmlsaG9zOw0KDQotIFJlbmRhIHNlbWFuYWwgZSBkZXNwZW5zYXMgZGUgY29uc3VtbzsNCg0KLSBWYXJpYcOnw6NvIGRvcyBzYWxhcmlvcyBlIHRheGEgZGUgZGVzZW1wcmVnbzsNCg0KT0JTOiBSZWdyZXNzw6NvIHZzIGNvcnJlbGHDp8Ojby4gU2FiZW0gZGl6ZXIgYSBkaWZlcmVuw6dhPw0KDQojIyMgUmVsYcOnw6NvIGZ1bmNpb25hbA0KDQokWT1cYmV0YV8wK1xiZXRhXzFYK1xlcHNpbG9uJA0KDQpZIHZhcmnDoXZlbCBkZXBlbmRlbnRlDQoNClggdmFyacOhdmVsIGV4cGxpY2F0aXZhDQoNCk9CUzogTyBxdWUgw6kgbyAkXGVwc2lsb24kDQoNCiMjIyBSZWdyZXNzw6NvIGxpbmVhciBtw7psdGlwbGENCg0KJFk9XGJldGFfMCtcYmV0YV8xWF8xK1xiZXRhXzJYXzIrXGNkb3RzK1xiZXRhX2tYX2srXGVwc2lsb24kDQoNCiMjIyBNw61uaW1vcyBxdWFkcmFkb3Mgb3JkaW7DoXJpb3MNCg0KU2VqYSAkXGJldGEkIG8gdmV0b3IgJFxiZXRhPVxiZXRhXzAsXGJldGFfMSwgXGJldGFfMiwgXGNkb3RzLCBcYmV0YV9rJA0KDQpBIHNvbHXDp8OjbyBkZSBtw61uaW1vcyBxdWFkcmFkb3Mgb3JkaW7DoXJpb3Mgw6kgZGFkYSBwb3I6DQoNCiRcYmV0YT0oWF57XHRvcH1YKV57LTF9WF57XHRvcH1ZJA0KDQplbSBxdWUgWCDDqSB1bWEgbWF0cml6IG54ayBkZSB2YXJpw6F2ZWlzIGV4cGxpY2F0aXZhcyBlIFkgw6kgdmV0b3IgblgxIGRlIHZhcmnDoXZlaXMgZGVwZW5kZW50ZXMuDQoNCiMjIyBVdGlsaXphbmRvIG8gY29tYW5kbyBsbSBkbyBSIHBhcmEgZXN0aW1hdGFyIG8gbW9kZWxvIGRlIHJlZ3Jlc3PDo28gbGluZWFyDQoNCkFicmEgbyBoZWxwIGRvIGNvbWFuZG8gbG0gZSB1dGlsaXplLW8gcGFyYSBvYnRlciBvcyB2YWxvcmVzIGRlICRcYmV0YV8wJCBlICRcYmV0YV8xJCwgdXRpbGlhbmRvIG9zIGRhZG9zIGRlIFJlbmRhIGUgQ29uc3Vtby4NCg0KDQotLS0tDQogICANCiMjIDQ6IEFuw6FsaXNlIEVzcGFjaWFsIChtw7NkdWxvIEkpIHstfQ0KDQo6OjogeyNib3gxIC5ncmVlbi1ib3h9DQpPIHF1ZSBkaWZlcmVuY2lhIGRhZG9zIGVzcGFjaWFpcyBlIG7Do28gZXNwYWNpYWlzPyAgICANCk8gcXVlIGV4aXN0ZSBlbSB1bWEgZGV0ZXJtaW5hZGEgbG9jYWxpemHDp8Ojbz8gICANCk9uZGUgcG9zc28gZW5jb250cmFyIHVtIGRldGVybWluYWRvIG9iamV0bz8gICANCk8gcXVlIG11ZG91IGFvIGxvbmdvIGRvIHRlbXBvPyAgIA0KUXVhbCBvIG1lbGhvciBjYW1pbmhvPyAgIA0KQ29tbyBvcyBvYmpldG9zIHPDo28gZGlzdHJpYnXDrWRvcyBubyBlc3Bhw6dvPyAgIA0KQ29tbyBhcyBjb25kacOnw7VlcyBzZXLDo28gYWx0ZXJhZGFzIG5vIGZ1dHVybz8gICANCjo6Og0KDQojIyMjIEFnZW5kYQ0KLSAqKmRhdGEqKjogMDEgZSAwMiBkZSBqdWxobw0KLSAqKmhvcsOhcmlvKio6IDE4OjAwIC0gMjA6MDANCi0gKipyZWN1cnNvcyoqOiAgIA0KPGEgaHJlZj0iaHR0cHM6Ly9jb25mZXJlbmNpYXdlYi5ybnAuYnIvd2ViY29uZi9yZW5hdGEtbHVjaWEtbWFnYWxoYWVzLWRlLW9saXZlaXJhIiB0YXJnZXQ9Il9ibGFuayI+U2FsYSBkZSBjb25mZXLDqm5jaWEgd2ViY29uZmVyw6puY2lhIFJOUDwvYT4NCiAgIA0KDQojIyMgQ29tcGV0w6puY2lhcyBhIHNlcmVtIGRlc2Vudm9sdmlkYXMNCkFvIGZpbmFsIGRlc3NlIG1pbmktY3Vyc28sIG9zIGFsdW5vcyBkZXZlcsOjbyBzZXIgY2FwYXplcyBkZSBkaXNjdXRpciBvcyBzZWd1aW50ZXMgY29uY2VpdG9zOiAgDQoNCi0gUGVuc2FtZW50byBlc3BhY2lhbCAgICAgDQotIEludHJvZHXDp8OjbyDDoCBjYXJ0b2dyYWZpYSAgIA0KICAtIGZvcm1hIGUgZGltZW5zw7VlcyB0ZXJyZXN0cmVzICAgDQogIC0gcmVwcmVzZW50YcOnw7Vlczogc2lzdGVtYXMgZ2VvZMOpc2ljb3MsIG1vZGVsb3MgZSBkYXR1bSAgICANCiAgLSBzaXN0ZW1hcyBkZSBjb29yZGVuYWRhcyBnZW9ncsOhZmljYXMgZSBwcm9qZXRhZGFzICAgDQotIFNpc3RlbWFzIGRlIEluZm9ybWHDp8O1ZXMgR2VvZ3LDoWZpY2FzIChfR2VvZ3JhcGhpYyBJbmZvcm1hdGlvbiBTeXN0ZW1zXykgICANCi0gVW5pZGFkZXMgZXNwYWNpYWlzIGUgcmVwcmVzZW50YcOnw6NvIGRlIGZlbsO0bWVub3MgZXNwYWNpYWlzICAgDQotIERpc3TDom5jaWFzICAgDQotIFFHSVMgICANCiAgLSBBbWJpZW50ZSBlIGZ1bmNpb25hbGlkYWRlcyBiw6FzaWNhcyBkbyBRR0lTICAgDQogIC0gQ29tcGxlbWVudG9zOiBpbnN0YWxhw6fDo28gZSBwYXJhIHF1ZSBzZXJ2ZW0gIA0KICAtIE11ZGFuw6dhIGRlIGRhdHVtIGUgc2lzdGVtYXMgZGUgY29vcmRlbmFkYXMgICANCiAgLSBUYWJlbGEgZGUgYXRyaWJ1dG9zICAgDQogIC0gRXN0cnV0dXJhcyBkZSBkYWRvcyBlc3BhY2lhaXMgIA0KICAgIC0gY2xhc3NpZmljYcOnw6NvOiB2ZXRvcmlhaXMgZSBtYXRyaWNpYWlzICAgDQogICAgLSBpbnRlcm9wZXJhYmlsaWRhZGUgICANCiAgICAtIGdlb2NvZGlmaWNhw6fDo28gICANCiAgLSBGdW7Dp8O1ZXMgYsOhc2ljYXMgZW0gR0lTICAgDQogICAgICAtIHNlbGXDp8OjbyBwb3IgYXRyaWJ1dG8gZSBwb3IgbG9jYWxpemHDp8OjbyAgICANCiAgICAgIC0gam9pbiBwb3IgY8OzZGlnbyBlIGpvaW4gZXNwYWNpYWwgICANCiAgICAgIC0gbWFwYXMgdGVtw6F0aWNvcyAgIA0KICAgICAgLSBnZXJhw6fDo28gZGUgY2VudHJvaWRlcyBlIGFncmVnYcOnw6NvIGRlIHZhcmlhdmVpcyAgDQogICAgICAtIGNvbmNlaXRvIGRlIHJlZGVzICAgDQogICAgICAtIGxheW91dCBkZSBpbXByZXNzw6NvICAgDQogICAgICANCiAgICAgIA0KIyMjIEF0aXZpZGFkZSBwcmVsaW1pbmFyICAgIA0KDQoxLiBPcyBhbHVub3MgZGV2ZXLDo28gYWNlc3NhciBhIMOhcmVhIGVkaXTDoXZlbCBkbyBtYXBhIGEgc2VndWlyIChjbGljYXIgbm8gw61jb25lIG5vIGNhbnRvIHN1cGVyaW9yIGRpcmVpdG8gIlZpc3VhbGl6YXIgbWFwYSBhbXBsaWFkbyIuIE8gbGluayBkaXJlY2lvbmFyw6EgbyBtYXBhIHBhcmEgdW1hIGphbmVsYSBkbyBuYXZlZ2Fkb3IuIFNlcsOhIG5lY2Vzc8OhcmlvIHNvbGljaXRhciBlZGnDp8OjbyBwYXJhIHF1ZSB2b2PDqnMgKipjYWRhc3RyZW0gYWxndW1hIGluZm9ybWHDp8OjbyBpbnRlcmVzc2FudGUgc29icmUgc2kqKi4gUmVmbGl0YSBzb2JyZSBxdWVzdMO1ZXMgZGUgcHJpdmFjaWRhZGUgYW50ZXMgZGUgZXNjb2xoZXIgbyBxdWUgYXByZXNlbnRhciwgdW1hIHZleiBxdWUgbyBtYXBhIGNvbGFib3JhdGl2byDDqSBww7pibGljby4gICAgDQoNCjxpZnJhbWUgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL21hcHMvZC91LzAvZW1iZWQ/bWlkPTFsWko1ajJ1T2t2dVJMU1BJUEhBbVZMQVNlLVVhZGhnViIgd2lkdGg9IjY0MCIgaGVpZ2h0PSI0ODAiPjwvaWZyYW1lPiAgIA0KDQpDYXNvIHNlamEgbmVjZXNzw6FyaW8sIHNlZ3VlIHVtIHZpZGVvIHNvYnJlIGEgdXRpbGl6YcOnw6NvIGRvIEdvb2dsZSBNeSBNYXBzLiAgIA0KDQo8aWZyYW1lIHdpZHRoPSI1NjAiIGhlaWdodD0iMzE1IiBzcmM9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkLzRTMjJPUC1abElRIiBmcmFtZWJvcmRlcj0iMCIgYWxsb3c9ImFjY2VsZXJvbWV0ZXI7IGF1dG9wbGF5OyBlbmNyeXB0ZWQtbWVkaWE7IGd5cm9zY29wZTsgcGljdHVyZS1pbi1waWN0dXJlIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+DQoNCiMjIyBNYXRlcmlhbCBwYXJhIGVuY29udHJvIHByZXNlbmNpYWwgICANCioqQW7DoWxpc2UgZXNwYWNpYWwgKG3Ds2R1bG8gSSkqKiAgIA0KDQoNCmBgYHtyICwgZWNobz1GQUxTRX0NCg0KYGBgDQoNCg0KIyMjIyBBdGl2aWRhZGVzICAgDQpBbyBsb25nbyBkbyBlbmNvbnRybywgc2Vyw6NvIGRlc2Vudm9sdmlkYXMgYXRpdmlkYWRlcyByZWZlcmVudGVzIMOgIGNvbnN0cnXDp8OjbyBkYXMgY29tcGV0w6puY2lhcyBhIHNlcmVtIGFwcm9wcmlhZGFzIHBvciBtZWlvIGRlc3RlIG1pbmljdXJzby4gICAgDQoNCkFzIGF0aXZpZGFkZXMgc2Vyw6NvIGRlc2Vudm9sdmlkYXMgaW5kaXZpZHVhbG1lbnRlIGUgKip0b2RvcyoqIG9zIGFsdW5vcyBkZXZlcsOjbyB0ZXIgb3MgYXBsaWNhdGl2b3Mgb2JyaWdhdMOzcmlvcyBpbnN0YWxhZG9zIGVtIHNldXMgY29tcHV0YWRvcmVzIChSLCBSU3R1ZGlvIGUgUUdJUykgICANCg0KT3MgZGFkb3MgcGFyYSBkZXNlbnZvbHZpbWVudG8gZGFzIGFuw6FsaXNlcyBlc3TDo28gZGlzcG9uw612ZWlzIG5vIENhbnZhcyBkYSBkaXNjaXBsaW5hLCBhc3NpbSBjb21vIGFzIG9yaWVudGHDp8O1ZXMgYSBzZXJlbSBzZWd1aWRhcyBwYXJhIGRlc2Vudm9sdmltZW50byBkZXNzYXMgYXRpdmlkYWRlcyBzb2IgdHV0b3JpYSBkYSBwcm9mZXNzb3JhLiBOw6NvIGjDoSBuZWNlc3NpZGFkZSBkZSBjb25jbHVzw6NvIGRhcyBhdGl2aWRhZGVzIGR1cmFudGUgbm9zc28gZW5jb250cm8gdmlydHVhbCwgbWFzIG1lc21vIHF1ZSBwb3N0ZXJpb3JtZW50ZSwgdG9kYXMgdGFyZWZhcyBkZXZlcsOjbyBzZXIgcmVhbGl6YWRhcyBwYXJhIGludGVncmFsIGFwcmVuZGl6YWdlbS4gICANCg0KIyMjIyBNYXRlcmlhbCBhZGljaW9uYWwNCltMaXZybyBzb2JyZSBpbnRyb2R1w6fDo28gYSBHSVMgZSBhbsOhbGlzZSBlc3BhY2lhbF0oaHR0cHM6Ly9tZ2ltb25kLmdpdGh1Yi5pby9TcGF0aWFsL2luZGV4Lmh0bWwpDQoNCiMjIyBWaWRlb3MgYSBzZXJlbSBjb25zdWx0YWRvcyBwYXJhIGVudGVuZGltZW50byBkb3MgY29uY2VpdG9zIHRyYWJhbGhhZG9zIG5lc3NlIG1pbmljdXJzbzogICANCjEuIEZvcm1hcyBlIGRpbWVuc8O1ZXMgdGVycmVzdHJlcyAgICANCg0KPGlmcmFtZSB3aWR0aD0iNTYwIiBoZWlnaHQ9IjMxNSIgc3JjPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9hVy1xYngwNGdTNCIgZnJhbWVib3JkZXI9IjAiIGFsbG93PSJhY2NlbGVyb21ldGVyOyBhdXRvcGxheTsgZW5jcnlwdGVkLW1lZGlhOyBneXJvc2NvcGU7IHBpY3R1cmUtaW4tcGljdHVyZSIgYWxsb3dmdWxsc2NyZWVuPjwvaWZyYW1lPg0KDQo8aWZyYW1lIHdpZHRoPSI1NjAiIGhlaWdodD0iMzE1IiBzcmM9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL2VjWklsdUdIT1c0IiBmcmFtZWJvcmRlcj0iMCIgYWxsb3c9ImFjY2VsZXJvbWV0ZXI7IGF1dG9wbGF5OyBlbmNyeXB0ZWQtbWVkaWE7IGd5cm9zY29wZTsgcGljdHVyZS1pbi1waWN0dXJlIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+DQoNCjIuIFJlcHJlc2VudGHDp8O1ZXM6IHNpc3RlbWFzIGdlb2TDqXNpY29zLCBtb2RlbG9zLCBkYXR1bSwgY29vcmRlbmFkYXMgZ2VvZ3LDoWZpY2FzIGUgcHJvamV0YWRhcyAgIA0KDQo8aWZyYW1lIHdpZHRoPSI1NjAiIGhlaWdodD0iMzE1IiBzcmM9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL1lXOGx3bjhMNnJBIiBmcmFtZWJvcmRlcj0iMCIgYWxsb3c9ImFjY2VsZXJvbWV0ZXI7IGF1dG9wbGF5OyBlbmNyeXB0ZWQtbWVkaWE7IGd5cm9zY29wZTsgcGljdHVyZS1pbi1waWN0dXJlIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+DQoNCjxpZnJhbWUgd2lkdGg9IjU2MCIgaGVpZ2h0PSIzMTUiIHNyYz0iaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQveEtHbE1wX19qb2ciIGZyYW1lYm9yZGVyPSIwIiBhbGxvdz0iYWNjZWxlcm9tZXRlcjsgYXV0b3BsYXk7IGVuY3J5cHRlZC1tZWRpYTsgZ3lyb3Njb3BlOyBwaWN0dXJlLWluLXBpY3R1cmUiIGFsbG93ZnVsbHNjcmVlbj48L2lmcmFtZT4NCg0KPGlmcmFtZSB3aWR0aD0iNTYwIiBoZWlnaHQ9IjMxNSIgc3JjPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9BY0JsUE1Hd0xkVSIgZnJhbWVib3JkZXI9IjAiIGFsbG93PSJhY2NlbGVyb21ldGVyOyBhdXRvcGxheTsgZW5jcnlwdGVkLW1lZGlhOyBneXJvc2NvcGU7IHBpY3R1cmUtaW4tcGljdHVyZSIgYWxsb3dmdWxsc2NyZWVuPjwvaWZyYW1lPg0KDQo8aWZyYW1lIHdpZHRoPSI1NjAiIGhlaWdodD0iMzE1IiBzcmM9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL05oVWdZZ0g1M2wwIiBmcmFtZWJvcmRlcj0iMCIgYWxsb3c9ImFjY2VsZXJvbWV0ZXI7IGF1dG9wbGF5OyBlbmNyeXB0ZWQtbWVkaWE7IGd5cm9zY29wZTsgcGljdHVyZS1pbi1waWN0dXJlIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+DQoNCjMuIEVzY2FsYXMgZSBkaXN0w6JuY2lhcyAgIA0KDQo8aWZyYW1lIHdpZHRoPSI1NjAiIGhlaWdodD0iMzE1IiBzcmM9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL0ttOVpWbVpzb0RvIiBmcmFtZWJvcmRlcj0iMCIgYWxsb3c9ImFjY2VsZXJvbWV0ZXI7IGF1dG9wbGF5OyBlbmNyeXB0ZWQtbWVkaWE7IGd5cm9zY29wZTsgcGljdHVyZS1pbi1waWN0dXJlIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+DQoNCjQuIEludGVyZmFjZSBncsOhZmljYSBkbyBRR0lTICAgIA0KDQo8aWZyYW1lIHdpZHRoPSI1NjAiIGhlaWdodD0iMzE1IiBzcmM9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkLzNpaTE3cG5scFRzIiBmcmFtZWJvcmRlcj0iMCIgYWxsb3c9ImFjY2VsZXJvbWV0ZXI7IGF1dG9wbGF5OyBlbmNyeXB0ZWQtbWVkaWE7IGd5cm9zY29wZTsgcGljdHVyZS1pbi1waWN0dXJlIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+DQoNCjUuIENvbXBsZW1lbnRvczogaW5zdGFsYcOnw6NvIGUgcGFyYSBxdWUgc2VydmVtICAgDQoNCg0KNi4gTXVkYW7Dp2EgZGUgZGF0dW0gZSBzaXN0ZW1hcyBkZSBjb29yZGVuYWRhcyBubyBRR0lTICANCg0KNy4gQ29tbyBjcmlhciB1bSBzaGFwZWZpbGUgbm8gUUdJUyAgICAgDQoNCjxpZnJhbWUgd2lkdGg9IjU2MCIgaGVpZ2h0PSIzMTUiIHNyYz0iaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvdmJhVTdSbTBvMUEiIGZyYW1lYm9yZGVyPSIwIiBhbGxvdz0iYWNjZWxlcm9tZXRlcjsgYXV0b3BsYXk7IGVuY3J5cHRlZC1tZWRpYTsgZ3lyb3Njb3BlOyBwaWN0dXJlLWluLXBpY3R1cmUiIGFsbG93ZnVsbHNjcmVlbj48L2lmcmFtZT4NCg0KOC4gQ2xhc3NpZmljYcOnw6NvIGRlIGRhZG9zIGdlb2dyw6FmaWNvczogdmV0b3JpYWlzIGUgbWF0cmljaWFpcyAgIA0KICAgIA0KPGlmcmFtZSB3aWR0aD0iNTYwIiBoZWlnaHQ9IjMxNSIgc3JjPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9jclM3aUx4cS1aTSIgZnJhbWVib3JkZXI9IjAiIGFsbG93PSJhY2NlbGVyb21ldGVyOyBhdXRvcGxheTsgZW5jcnlwdGVkLW1lZGlhOyBneXJvc2NvcGU7IHBpY3R1cmUtaW4tcGljdHVyZSIgYWxsb3dmdWxsc2NyZWVuPjwvaWZyYW1lPg0KDQo5LiBUYWJlbGEgZGUgYXRyaWJ1dG9zICAgDQoNCjxpZnJhbWUgd2lkdGg9IjU2MCIgaGVpZ2h0PSIzMTUiIHNyYz0iaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvUDk3YWU2N3JhZDQiIGZyYW1lYm9yZGVyPSIwIiBhbGxvdz0iYWNjZWxlcm9tZXRlcjsgYXV0b3BsYXk7IGVuY3J5cHRlZC1tZWRpYTsgZ3lyb3Njb3BlOyBwaWN0dXJlLWluLXBpY3R1cmUiIGFsbG93ZnVsbHNjcmVlbj48L2lmcmFtZT4NCg0KPGlmcmFtZSB3aWR0aD0iNTYwIiBoZWlnaHQ9IjMxNSIgc3JjPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9QSlFLa1JwdmtUSSIgZnJhbWVib3JkZXI9IjAiIGFsbG93PSJhY2NlbGVyb21ldGVyOyBhdXRvcGxheTsgZW5jcnlwdGVkLW1lZGlhOyBneXJvc2NvcGU7IHBpY3R1cmUtaW4tcGljdHVyZSIgYWxsb3dmdWxsc2NyZWVuPjwvaWZyYW1lPg0KDQoxMC4gR2VvY29kaWZpY2HDp8OjbyAgICAgDQoNCjExLiBEaXZpc8OjbywgdW5pw6NvIGUgZGlzc29sdcOnw6NvIGRlIGNhbWFkYXMgdmV0b3JpYWlzICAgDQoNCjxpZnJhbWUgd2lkdGg9IjU2MCIgaGVpZ2h0PSIzMTUiIHNyYz0iaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQva1lLY0tBS3pvb00iIGZyYW1lYm9yZGVyPSIwIiBhbGxvdz0iYWNjZWxlcm9tZXRlcjsgYXV0b3BsYXk7IGVuY3J5cHRlZC1tZWRpYTsgZ3lyb3Njb3BlOyBwaWN0dXJlLWluLXBpY3R1cmUiIGFsbG93ZnVsbHNjcmVlbj48L2lmcmFtZT4NCg0KPGlmcmFtZSB3aWR0aD0iNTYwIiBoZWlnaHQ9IjMxNSIgc3JjPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9VcERQRWhHZlJFRSIgZnJhbWVib3JkZXI9IjAiIGFsbG93PSJhY2NlbGVyb21ldGVyOyBhdXRvcGxheTsgZW5jcnlwdGVkLW1lZGlhOyBneXJvc2NvcGU7IHBpY3R1cmUtaW4tcGljdHVyZSIgYWxsb3dmdWxsc2NyZWVuPjwvaWZyYW1lPg0KDQo8aWZyYW1lIHdpZHRoPSI1NjAiIGhlaWdodD0iMzE1IiBzcmM9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL1ZyY2hhc2xqanlRIiBmcmFtZWJvcmRlcj0iMCIgYWxsb3c9ImFjY2VsZXJvbWV0ZXI7IGF1dG9wbGF5OyBlbmNyeXB0ZWQtbWVkaWE7IGd5cm9zY29wZTsgcGljdHVyZS1pbi1waWN0dXJlIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+DQoNCjEyLiBTZWxlw6fDo28gcG9yIGF0cmlidXRvcyBlIHBvciBsb2NhbGl6YcOnw6NvDQoNCg0KMTMuIEpvaW4gcG9yIGPDs2RpZ28gZSBqb2luIGVzcGFjaWFsDQoNCg0KMTQuIE1hcGFzIHRlbcOhdGljb3MNCg0KDQoxNS4gR2VyYcOnw6NvIGRlIGNlbnRyb2lkZXMNCg0KDQoxNi4gTGF5b3V0IGRlIGltcHJlc3PDo28gICANCg0KPGlmcmFtZSB3aWR0aD0iNTYwIiBoZWlnaHQ9IjMxNSIgc3JjPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9ERGg0eEV5M1VUVSIgZnJhbWVib3JkZXI9IjAiIGFsbG93PSJhY2NlbGVyb21ldGVyOyBhdXRvcGxheTsgZW5jcnlwdGVkLW1lZGlhOyBneXJvc2NvcGU7IHBpY3R1cmUtaW4tcGljdHVyZSIgYWxsb3dmdWxsc2NyZWVuPjwvaWZyYW1lPg0KDQo8aWZyYW1lIHdpZHRoPSI1NjAiIGhlaWdodD0iMzE1IiBzcmM9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL0Q0X2d3Z0FvVnpNIiBmcmFtZWJvcmRlcj0iMCIgYWxsb3c9ImFjY2VsZXJvbWV0ZXI7IGF1dG9wbGF5OyBlbmNyeXB0ZWQtbWVkaWE7IGd5cm9zY29wZTsgcGljdHVyZS1pbi1waWN0dXJlIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+DQogICAgICANCjxpZnJhbWUgd2lkdGg9IjU2MCIgaGVpZ2h0PSIzMTUiIHNyYz0iaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvRDRfZ3dnQW9Wek0iIGZyYW1lYm9yZGVyPSIwIiBhbGxvdz0iYWNjZWxlcm9tZXRlcjsgYXV0b3BsYXk7IGVuY3J5cHRlZC1tZWRpYTsgZ3lyb3Njb3BlOyBwaWN0dXJlLWluLXBpY3R1cmUiIGFsbG93ZnVsbHNjcmVlbj48L2lmcmFtZT4NCg0KPGlmcmFtZSB3aWR0aD0iNTYwIiBoZWlnaHQ9IjMxNSIgc3JjPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9FN1lGbHFwRmdiWSIgZnJhbWVib3JkZXI9IjAiIGFsbG93PSJhY2NlbGVyb21ldGVyOyBhdXRvcGxheTsgZW5jcnlwdGVkLW1lZGlhOyBneXJvc2NvcGU7IHBpY3R1cmUtaW4tcGljdHVyZSIgYWxsb3dmdWxsc2NyZWVuPjwvaWZyYW1lPg0KDQo8aWZyYW1lIHdpZHRoPSI1NjAiIGhlaWdodD0iMzE1IiBzcmM9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL3lfX1VmLTZNbWlrIiBmcmFtZWJvcmRlcj0iMCIgYWxsb3c9ImFjY2VsZXJvbWV0ZXI7IGF1dG9wbGF5OyBlbmNyeXB0ZWQtbWVkaWE7IGd5cm9zY29wZTsgcGljdHVyZS1pbi1waWN0dXJlIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+DQoNCjE3LiBGb250ZXMgZGUgZGFkb3MNCg0KPGlmcmFtZSB3aWR0aD0iNTYwIiBoZWlnaHQ9IjMxNSIgc3JjPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9PeElSZloxaFl0MCIgZnJhbWVib3JkZXI9IjAiIGFsbG93PSJhY2NlbGVyb21ldGVyOyBhdXRvcGxheTsgZW5jcnlwdGVkLW1lZGlhOyBneXJvc2NvcGU7IHBpY3R1cmUtaW4tcGljdHVyZSIgYWxsb3dmdWxsc2NyZWVuPjwvaWZyYW1lPg0KDQo8aWZyYW1lIHdpZHRoPSI1NjAiIGhlaWdodD0iMzE1IiBzcmM9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL3dGaVlmM1hUM0xnIiBmcmFtZWJvcmRlcj0iMCIgYWxsb3c9ImFjY2VsZXJvbWV0ZXI7IGF1dG9wbGF5OyBlbmNyeXB0ZWQtbWVkaWE7IGd5cm9zY29wZTsgcGljdHVyZS1pbi1waWN0dXJlIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+DQoNCjxpZnJhbWUgd2lkdGg9IjU2MCIgaGVpZ2h0PSIzMTUiIHNyYz0iaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvdVZlMUhvQUN6YmMiIGZyYW1lYm9yZGVyPSIwIiBhbGxvdz0iYWNjZWxlcm9tZXRlcjsgYXV0b3BsYXk7IGVuY3J5cHRlZC1tZWRpYTsgZ3lyb3Njb3BlOyBwaWN0dXJlLWluLXBpY3R1cmUiIGFsbG93ZnVsbHNjcmVlbj48L2lmcmFtZT4NCg0KDQotLS0tDQogICANCiMjIDU6IEFuw6FsaXNlIGVzcGFjaWFsIChtw7NkdWxvIElJKSB7LX0NCg0KOjo6IHsjYm94MSAuZ3JlZW4tYm94fQ0K4oCcTm9zc2EgZXhpc3TDqm5jaWEgbm8gdGVtcG8gbm9zIMOpIGRldGVybWluYWRhLCBtYXMgdGVtb3MgYW1wbGEgbGliZXJkYWRlIGRlIGVzY29saGEgZGUgbm9zc2EgbG9jYWxpemHDp8OjbywgcXVlIMOpIGluZmx1ZW5jaWFkYSwgZW1ib3JhIG7Do28gZGUgdG9kbywgcGVsbyBub3NzbyBsdWdhciBkZSBvcmlnZW0uIEVuY29udHJhciBhIGxvY2FsaXphw6fDo28gY29ycmV0YSDDqSBlc3NlbmNpYWwgcGFyYSB1bWEgdmlkYSBkZSBzdWNlc3NvLCB0YW1iw6ltIHBhcmEgdW0gZW1wcmVlbmRpbWVudG8gZGUgc3VjZXNzbyBlIHBhcmEgdW0gYXNzZW50YW1lbnRvIGR1cmFkb3VybyDigJMgZW0gc3VtYSwgcGFyYSBhIHNvYnJldml2w6puY2lhIGRvIGdydXBvLiBBZGljaW9uYWxtZW50ZSwgdW1hIGxvY2FsaXphw6fDo28gYWRlcXVhZGEgdGVtIHF1ZSBzZXIgYSBsb2NhbGl6YcOnw6NvIGRvcyBhY29udGVjaW1lbnRvcyBjZXJ0b3MuIFsuLi5dIiAoTMO2c2NoLCAxOTU0LCBwLiAzKQ0KOjo6DQoNCg0KIyMjIyBBZ2VuZGENCi0gKipkYXRhKio6IDAzIGUgMDYgZGUganVsaG8NCi0gKipob3LDoXJpbyoqOiAxODowMCAtIDIwOjAwDQotICoqcmVjdXJzb3MqKjogICANCjxhIGhyZWY9Imh0dHBzOi8vY29uZmVyZW5jaWF3ZWIucm5wLmJyL3dlYmNvbmYvcmVuYXRhLWx1Y2lhLW1hZ2FsaGFlcy1kZS1vbGl2ZWlyYSIgdGFyZ2V0PSJfYmxhbmsiPlNhbGEgZGUgY29uZmVyw6puY2lhIHdlYmNvbmZlcsOqbmNpYSBSTlA8L2E+DQogIA0KDQojIyMgQ29tcGV0w6puY2lhcyBhIHNlcmVtIGFkcXVpcmlkYXMNCi0gRW50ZW5kZXIgbyBwYXBlbCBkbyBlc3R1ZG8gZ2VvZ3LDoWZpY28gZGFzIGNpZGFkZXMgbmFzIGNvbmV4w7VlcyBpbnRyYSBlIGludGVydXJiYW5hcy4NCi0gQ2FwYWNpZGFkZSBhbmFsw610aWNhIHBhcmEgZGVmaW5pw6fDo28gZGUgdW5pZGFkZXMgZXNwYWNpYWlzLCBhZ3JlZ2HDp8OjbyBlIGRlc2FncmVnYcOnw6NvIGUgw6FyZWFzIGRlIGluZmx1w6puY2lhLiAgIA0KICAtIGFncmVnYcOnw6NvIGUgZGVzYWdyZWdhw6fDo28gZGUgdW5pZGFkZXMgZXNwYWNpYWlzICAgIA0KICAtIENvbnRhZ2VtIGRlIG9ic2VydmHDp8O1ZXMgZW0gdW5pZGFkZXMgZXNwYWNpYWlzDQogIC0gYWxndW5zIG3DqXRvZG9zIGRlIGRldGVybWluYcOnw6NvIGRlIMOhcmVhcyBkZSBpbmZsdcOqbmNpYQ0KICAgIC0gQ29iZXJ0dXJhIGVzcGFjaWFsDQogICAgLSBWb3Jvbm9pICAgDQotIEVzdGF0w61zdGljYSBlc3BhY2lhbCBkZXNjcml0aXZhICAgDQotIEPDoWxjdWxvIGRlIGluZGljYWRvcmVzIGRlIHBhZHLDtWVzIGRlIHVzbyBkbyBzb2xvICAgDQogIC0gaW50ZW5zaWRhZGUNCiAgLSB1c28gbWlzdG8NCi0gTWVkaWRhcyBkZSBkaXN0w6JuY2lhIGVtIHJlZGUgICANCi0gQXV0b2NvcnJlbGHDp8OjbyBlc3BhY2lhbA0KDQoNCiMjIyBBdGl2aWRhZGUgcHJlbGltaW5hciAgICANCg0KT3MgYWx1bm9zIGRldmVyw6NvIGFzc2lzdGlyIGVzc2VzIGRvaXMgdmlkZW9zICoqYW50ZXMqKiBkbyBub3NzbyBlbmNvbnRybyAoTWluaWN1cnNvOiBBbsOhbGlzZSBlc3BhY2lhbCAobcOzZHVsbyBJSSkpLiAgICANCg0KMS4gQW7DoWxpc2UgZXNwYWNpYWwgICAgDQoNCjxpZnJhbWUgd2lkdGg9IjU2MCIgaGVpZ2h0PSIzMTUiIHNyYz0iaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvWGVrSjBtSTlMSXMiIGZyYW1lYm9yZGVyPSIwIiBhbGxvdz0iYWNjZWxlcm9tZXRlcjsgYXV0b3BsYXk7IGVuY3J5cHRlZC1tZWRpYTsgZ3lyb3Njb3BlOyBwaWN0dXJlLWluLXBpY3R1cmUiIGFsbG93ZnVsbHNjcmVlbj48L2lmcmFtZT4NCg0KPGlmcmFtZSB3aWR0aD0iNTYwIiBoZWlnaHQ9IjMxNSIgc3JjPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC93S3dCbGZuNVZ0OCIgZnJhbWVib3JkZXI9IjAiIGFsbG93PSJhY2NlbGVyb21ldGVyOyBhdXRvcGxheTsgZW5jcnlwdGVkLW1lZGlhOyBneXJvc2NvcGU7IHBpY3R1cmUtaW4tcGljdHVyZSIgYWxsb3dmdWxsc2NyZWVuPjwvaWZyYW1lPg0KDQoyLiBBZ3JlZ2HDp8OjbyBlIGRlc2FncmVnYcOnw6NvIGRlIGNhbWFkYXMgZXNwYWNpYWlzICAgDQoNCjxpZnJhbWUgd2lkdGg9IjU2MCIgaGVpZ2h0PSIzMTUiIHNyYz0iaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvNUo5MGFYMTl5c00iIGZyYW1lYm9yZGVyPSIwIiBhbGxvdz0iYWNjZWxlcm9tZXRlcjsgYXV0b3BsYXk7IGVuY3J5cHRlZC1tZWRpYTsgZ3lyb3Njb3BlOyBwaWN0dXJlLWluLXBpY3R1cmUiIGFsbG93ZnVsbHNjcmVlbj48L2lmcmFtZT4NCg0KSGlzdG9ncmFtYSBkZSBkYWRvcyBtYXRyaWNpYWlzDQo8aWZyYW1lIHdpZHRoPSI1NjAiIGhlaWdodD0iMzE1IiBzcmM9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL21INlJnMUZ1QnNzIiBmcmFtZWJvcmRlcj0iMCIgYWxsb3c9ImFjY2VsZXJvbWV0ZXI7IGF1dG9wbGF5OyBlbmNyeXB0ZWQtbWVkaWE7IGd5cm9zY29wZTsgcGljdHVyZS1pbi1waWN0dXJlIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+DQoNCg0KIyMjIE1hdGVyaWFsIHBhcmEgZW5jb250cm8gcHJlc2VuY2lhbCAgIA0KKipBbsOhbGlzZSBlc3BhY2lhbCAobcOzZHVsbyBJSSkqKiAgDQoNCg0KYGBge3IgLCBlY2hvPUZBTFNFfQ0KDQpgYGANCg0KDQojIyMjIEF0aXZpZGFkZXMNCkFvIGxvbmdvIGRvIGVuY29udHJvLCBzZXLDo28gZGVzZW52b2x2aWRhcyBhdGl2aWRhZGVzIHJlZmVyZW50ZXMgw6AgY29uc3RydcOnw6NvIGRhcyBjb21wZXTDqm5jaWFzIGEgc2VyZW0gYXByb3ByaWFkYXMgcG9yIG1laW8gZGVzdGUgbWluaWN1cnNvLiANCg0KQXMgYXRpdmlkYWRlcyBzZXLDo28gZGVzZW52b2x2aWRhcyBpbmRpdmlkdWFsbWVudGUgZSAqKnRvZG9zKiogb3MgYWx1bm9zIGRldmVyw6NvIHRlciBvcyBhcGxpY2F0aXZvcyBvYnJpZ2F0w7NyaW9zIGluc3RhbGFkb3MgZW0gc2V1cyBjb21wdXRhZG9yZXMgKFIsIFJTdHVkaW8gZSBRR0lTKQ0KDQpPcyBkYWRvcyBwYXJhIGRlc2Vudm9sdmltZW50byBkYXMgYW7DoWxpc2VzIGVzdMOjbyBkaXNwb27DrXZlaXMgbm8gQ2FudmFzIGRhIGRpc2NpcGxpbmEsIGFzc2ltIGNvbW8gYXMgb3JpZW50YcOnw7VlcyBhIHNlcmVtIHNlZ3VpZGFzIHBhcmEgZGVzZW52b2x2aW1lbnRvIGRlc3NhcyBhdGl2aWRhZGVzIHNvYiB0dXRvcmlhIGRhIHByb2Zlc3NvcmEuIE7Do28gaMOhIG5lY2Vzc2lkYWRlIGRlIGNvbmNsdXPDo28gZGFzIGF0aXZpZGFkZXMgZHVyYW50ZSBub3NzbyBlbmNvbnRybyB2aXJ0dWFsLCBtYXMgbWVzbW8gcXVlIHBvc3Rlcmlvcm1lbnRlLCB0b2RhcyB0YXJlZmFzIGRldmVyw6NvIHNlciByZWFsaXphZGFzIHBhcmEgaW50ZWdyYWwgYXByZW5kaXphZ2VtLiAgIA0KDQoNCi0tLS0NCiAgIA0KIyMgNjogTcOpdG9kb3MgRWNvbm9tw6l0cmljb3MgKG3Ds2R1bG8gSUkpIHstfQ0KIyMjIyBBZ2VuZGENCi0gKipkYXRhKio6IDA3IGUgMDggZGUganVsaG8NCi0gKipob3LDoXJpbyoqOiAxODowMCAtIDIwOjAwDQotICoqcmVjdXJzb3MqKjogICANCjxhIGhyZWY9Imh0dHBzOi8vY29uZmVyZW5jaWF3ZWIucm5wLmJyL3dlYmNvbmYvcmVuYXRhLWx1Y2lhLW1hZ2FsaGFlcy1kZS1vbGl2ZWlyYSIgdGFyZ2V0PSJfYmxhbmsiPlNhbGEgZGUgY29uZmVyw6puY2lhIHdlYmNvbmZlcsOqbmNpYSBSTlA8L2E+DQogIA0KW0VzdHJ1dHVyYSBjb25jZWl0dWFsXShodHRwczovL3d3dy5kcm9wYm94LmNvbS9zL3gwdWxueW1qbTJtczQweS9NZXRFY29ub21ldHJpY29zSS5wZGY/ZGw9MCkNCg0KICAgDQogICANCg0KLS0tLQ0KICAgDQojIFByb2pldG8gey19ICAgDQojIyMgVGVtYXMgICANClByb3Bvc2nDp8OjbyBkZSBwcm9qZXRvcyBkZSBwZXNxdWlzYSBhIHNlcmVtIGRlc2Vudm9sdmlkb3MgY29tbyBwcmluY2lwYWwgZWxlbWVudG8gZGUgYXZhbGnDp8OjbyBkYSBkaXNjaXBsaW5hOiAgIA0KDQppLglHZW9tYXJrZXRpbmcgZSBjb21wb3J0YW1lbnRvIGRvIGNvbnN1bWlkb3INCiAgICBhLglJZGVudGlmaWNhciB1bWEgYXRpdmlkYWRlIGVjb27DtG1pY2EgKHByb2R1dG8gb3Ugc2VydmnDp28pIHBhcmEgYXZhbGlhw6fDo28gZGUgbG9jYWxpemHDp8OjbyBlIGNvbmNvcnLDqm5jaWEgZXNwYWNpYWwgICAgIA0KICAgICAgICAgICANCiAgICAgICAgDQppaS4JQW7DoWxpc2UgZGEgUmVsYcOnw6NvIGVudHJlIGEgUHJlY2FyaWVkYWRlIEhhYml0YWNpb25hbCBlIFJlbmRhIG5hIFJNQkggICANCiAgICBhLglJZGVudGlmaWNhciB1bWEgdW5pZGFkZSBlc3BhY2lhbCBwYXJhIG9idGVuw6fDo28gZG9zIGRhZG9zICAgDQogICAgYi4JRGVmaW5pciwgw6AgbHV6IGRlIHVtYSByZXZpc8OjbyBiaWJsaW9ncsOhZmljYSwgY29tbyBkZWZpbmlyIHByZWNhcmllZGFkZSBoYWJpdGFjaW9uYWwgZSBxdWFpcyBhcyBpbmZvcm1hw6fDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHF1ZSBzZWphIHBvc3PDrXZlbCB0cmF0YXIgZXNzYSB0ZW3DoXRpY2EgKERvbWljw61saW9zIHNlbSBJbHVtaW5hw6fDo28gUMO6YmxpY2E7IERvbWljw61saW9zIHNlbSBTYW5pdMOhcmlvOyBEb21pY8OtbGlvcyBzZW0gQ29sZXRhIGRlIExpeG87IERvbWljw61saW9zIHNlbSBFbmVyZ2lhIEVsw6l0cmljYTsgRG9taWPDrWxpb3Mgc2VtIFBhdmltZW50YcOnw6NvOyBEb21pY8OtbGlvcyBzZW0gQnVlaXJvL0JvY2EgZGUgTG9ibzsgRG9taWPDrWxpb3MgY29tIEVzZ290byBhIGPDqXUgYWJlcnRvOyBEb21pY8OtbGlvcyBzZW0gYWJhc3RlY2ltZW50byBkZSDDoWd1YSBkYSBSZWRlIEdlcmFsLiAgICAgDQogICAgICAgICAgIA0KICAgICAgICAgICANCmlpaS4JUmVsYcOnw6NvIGVudHJlIFJlbmRhIGRhIFBvcHVsYcOnw6NvIGUgYSBvZmVydGEvdXNvIGRvIFRyYW5zcG9ydGUgZW0gQmVsbyBIb3Jpem9udGUgICANCiAgICBhLglJZGVudGlmaWNhciwgw6AgbHV6IGRhIHJldmlzw6NvIGJpYmxpb2dyw6FmaWNhLCBpbmRpY2Fkb3JlcyBkZSBvZmVydGEvdXNvIGRvIHRyYW5zcG9ydGUgcMO6YmxpY28gZGUgQmVsbyBIb3Jpem9udGUgZSBwZW5zYXIgbm9zIGluZGljYWRvcmVzIGUgZm9udGVzIGRlIGRhZG9zIHBhcmEgYSBpbmZvcm1hw6fDo28gc2VsZWNpb25hZGEuICAgIA0KICAgIGIuCUFuYWxpc2FyIHNlIG8gbW9kbyBkZSB1dGlsaXphw6fDo28gZG8gdHJhbnNwb3J0ZSBlIG8gdGVtcG8gZGUgdmlhZ2VtIGVzdMOhIHJlbGFjaW9uYWRvIGNvbSBhIHJlbmRhIGRhIHBvcHVsYcOnw6NvIGRvIE11bmljw61waW8gZGUgU8OjbyBQYXVsbyAgIA0KICAgIGMuCUFuYWxpc2FyIGRpZmVyZW50ZXMgcmVjb3J0ZXMgdGVtcG9yYWlzICAgIA0KDQogICAgICAgDQppdi4JSW5pcXVpZGFkZXMgbmEgUXVhbGlkYWRlIGRlIFZpZGEgbmEgUk1CSCBvdSBCSCAgIA0KICAgIGEuCUlkZW50aWZpY2FyIGF0cmlidXRvcyBlIGluZGljYWRvcmVzIHF1ZSByZWZsaXRhbSBxdWFsaWRhZGUgZGUgdmlkYSBlIGxldmFudGFyIHBvc3PDrXZlaXMgZm9udGVzIGRlIGRhZG9zLiAgICANCiAgICBiLglQZW5zYXIgZW0gaW5kaWNhZG9yZXMgZGUgZGVzaWd1YWxkYWRlIHBhcmEgdHJhdGFyIGEgcXVhbGlkYWRlIGRlIHZpZGEuICAgICAgDQoNCiAgICAgICAgDQp2LglJbmlxdWlkYWRlcyBxdWFudG8gw6Agc2VndXJhbsOnYSBuYSBjaWRhZGUg4oCTIFJNQkggb3UgQkggICANCiAgICBhLglFc2NvbGhlciBhdHJpYnV0b3MgZSBpbmRpY2Fkb3JlcyBxdWUgcmVmbGl0YW0gYSBzZWd1cmFuw6dhIHDDumJsaWNhLCBjb21vIFRheGEgZGUgRXN0dXBybzsgVGF4YSBkZSBGZW1pbmljw61kaW8uIFBlbnNlbSBxdWUgb3MgYXRyaWJ1dG9zIHBvZGVtIHNlciBlc3RyYXRpZmljYWRvcyBjb25mb3JtZSBhIHBvcHVsYcOnw6NvIHF1ZSBzb2ZyZXUgYSB2aW9sw6puY2lhIGUsIHBvcnRhbnRvLCBncnVwb3MgbWFpcyB2dWxuZXLDoXZlaXMgKG11bGhlcmVzLCBjcmlhbsOnYXMsIGlkb3NvcywgcG9wdWxhw6fDo28gZGUgYmFpeGEgcmVuZGEpLiAgICANCiAgICBiLglSZWxhY2lvbmFyIGNvbSBhbGd1bWFzIHZhcmnDoXZlaXMgZXhwbGljYXRpdmFzIGNvbW8gZWR1Y2HDp8OjbyBlIHJlbmRhLiAgIA0KICAgIGMuCVBlbnNhciBlbSBpbmRpY2Fkb3JlcyBkZSBkZXNpZ3VhbGRhZGUgcGFyYSB0cmF0YXIgYSBzZWd1cmFuw6dhIHDDumJsaWNhLiAgICAgIA0KDQogICAgICAgDQp2aS4JRGVzaWd1YWxkYWRlIGRlIHJlbmRhIGUgZGEgcXVhbGlkYWRlIGRlIHZpZGEgZSBhIGxvY2FsaXphw6fDo28gZGUgZ3J1cG9zIHJhY2lhaXMgZSDDqXRuaWNvcyBuYSBjaWRhZGUgICANCiAgICBhLglQZW5zZSBlbSBpbmRpY2Fkb3JlcyBjb21vIHJlbmRhLCBJREhNLCDDrW5kaWNlcyBkZSB2aW9sw6puY2lhIHBhcmEgZGlzY3V0aXIgYXMgcmVsYcOnw7VlcyBlbnRyZSBsb2NhaXMgZGUgbW9yYWRpYSBwYXJhIGRhIHBvcHVsYcOnw6NvIHBvciBlc3RyYXRvIGRlIHJhw6dhIGUgZXRuaWEgZSBpbmRpY2Fkb3JlcyBkZSByZW5kYSBlIHF1YWxpZGFkZSBkZSB2aWRhLiAgICAgICANCiAgIA0KICAgICAgIA0KdmlpLglGb29kIERlc2VydHMgICANCiAgICBhLglSZWxhY2lvbmFpcyBmYXRvcmVzIGNvbW8gcG9icmV6YSBlIG9iZXNpZGFkZSwgbG9jYWxpemHDp8OjbyBkZSBzdXBlcm1lcmNhZG9zIGUgdmFyZWpvIGRlIGFsaW1lbnRvcyBmcmVzY29zLCBkb2Vuw6dhcyByZWxhY2lvbmFkYXMgY29tIGEgZGlldGEgICAgDQogICAgYi4JQW7DoWxpc2UgZGEgZXN0cnV0dXJhIGVzcGFjaWFsIGUgZGEgYWNlc3NpYmlsaWRhZGUgYW9zIEZvb2QgU3lzdGVtcyBkYSBSTUJILiAgICAgDQoNCiAgIA0KdmlpaS4JQW7DoWxpc2UgZGEgZXZvbHXDp8OjbyBkb3Mgw61uZGljZXMgZGUgZ3JhdmlkZXogbmEgYWRvbGVzY8OqbmNpYSBlbSBCZWxvIEhvcml6b250ZSAgIA0KICAgIGEuCUlkZW50aWZpY2FyIHZhcmnDoXZlaXMgcXVlIHBvc3NhbSByZXByZXNlbnRhciBhIHBvcHVsYcOnw6NvIGNyw610aWNhIHBhcmEgZXN0ZSBlc3R1ZG8gKENlbnNvIDIwMTA7IElESE07IGVkdWNhw6fDo28pLiAgICANCiAgICBiLglFeHBsb3JhciBhIGxvY2FsaXphw6fDo28gZGUgcG9wdWxhw6fDo28gZm9ybWFkYSBwb3IgYWRvbGVzY2VudGVzIG11bGhlcmVzIGNvbSBmYWl4YSBldMOhcmlhIGVudHJlIDEwIGUgMTcgYW5vcyByZXNpZGVudGVzIG5vIGVzdGFkbyBlIE1pbmFzIEdlcmFpczsgICANCiAgICBjLglQb2RlLXNlIGVzdGFiZWxlY2VyIGNvcnJlbGHDp8OjbyBlbnRyZSByZW5kYSBtw6lkaWEgZG9taWNpbGlhciBlIGdyYXZpZGV6IHByZWNvY2U/ICAgDQogICAgZC4JQSBkaW1lbnPDo28gZWR1Y2HDp8OjbyBlc3TDo28gY29ycmVsYWNpb25hZGFzIGNvbSBhdW1lbnRvIG91IG1lc21vIHJlZHXDp8OjbyBkYSB0YXhhIGRlIGdyYXZpZGV6IG5hIGFkb2xlc2PDqm5jaWE/ICAgIA0KICAgICAgIA0KDQppeC4JRGVzaWd1YWxkYWRlIGRlIHJlbmRhIGVudHJlIE11bGhlcmVzIGUgSG9tZW5zIG5vIEVzdGFkbyBkZSBNaW5hcyBHZXJhaXMgZSBzdWEgcmVsYcOnw6NvIGNvbSBvIGdyYXUgZGUgdXJiYW5pemHDp8OjbyBlIG8gbsOtdmVsIGVkdWNhY2lvbmFsIGVkdWNhw6fDo2/NviAgIA0KICAgIGEuCUjDoSBkaWZlcmVuw6dhIGRlIHJlbmRhIGVudHJlIGfDqm5lcm9zIG5vIGVzdGFkbyBkZSBNaW5hcyBHZXJhaXM/IEjDoSBjb25jZW50cmHDp8OjbyBlc3BhY2lhbCBkZXNzYSBkZXNpZ3VhbGRhZGU/ICAgDQogICAgYi4JQXMgZGlmZXJlbsOnYXMgc8OjbyBtYWlvcmVzIG91IG1lbm9yZXMgbmFzIHJlZ2nDtWVzIG1ldHJvcG9saXRhbmFzPyAgICANCiAgICBjLglDb21vIG9zIGZhdG9yZXMgZGUgZXNjb2xhcmlkYWRlIGRhcyBtdWxoZXJlcywgw61uZGljZSBkZSBncmF2aWRleiBuYSBhZG9sZXNjw6puY2lhLCB0YXhhIGRlIGZlY3VuZGlkYWRlIGUgcHJvcG9yw6fDo28gbXVsaGVyZXMgcmVzcG9uc8OhdmVpcyBwZWxvIGRvbWljw61saW8sIElESCBlIFJlbmRhIHBlciBjYXBpdGEgbm8gbXVuaWPDrXBpbyBzZSByZWxhY2lvbmFtIGNvbSBhIHJlbmRhIG3DqWRpYSBkYXMgbXVsaGVyZXM/ICAgIA0KICAgIGQuCU8gZ3JhdSBkZSB1cmJhbml6YcOnw6NvIGRvIG11bmljw61waW8gaW50ZXJmZXJlIG5hIHJlbmRhIG3DqWRpYSBmZW1pbmluYT8gRSBtYXNjdWxpbmE/IE8gZ3JhdSBkZSBlc2NvbGFyaWRhZGUgaW50ZXJmZXJlIG5hIHJlbmRhIG3DqWRpYSBmZW1pbmluYSBkYSBtZXNtYSBmb3JtYSBxdWUgbmEgbWFzY3VsaW5hPyAgICAgICANCg0KIyMjIEdydXBvcw0KDQpPcyBhbHVub3MgZGV2ZXLDo28gc2Ugb3JnYW5pemFyIGVtIGdydXBvcyBkZSBhdMOpIDQgKHF1YXRybykgYWx1bm9zIHBhcmEgZGVzZW52b2x2aW1lbnRvIGRvcyBwcm9qZXRvcy4NCg0KIyMjIEVzdHJ1dHVyYSBtZXRvZG9sw7NnaWNhIGRvcyBwcm9qZXRvcyAgIA0KYS4JRGVmaW5pw6fDo28gZG8gcHJvYmxlbWEgZW0gaW52ZXN0aWdhw6fDo28gICANCmIuCUVsYWJvcmHDp8OjbyBkZSBoaXDDs3Rlc2VzICAgDQpjLglTZWxlw6fDo28gZSBmb250ZSBkZSBkYWRvcyBwYXJhIG9idGVuw6fDo28gZGUgdmFyacOhdmVpcyAgDQogICAgaS4JVW5pZGFkZSBlc3BhY2lhbCAgIA0KICAgIGlpLglDb21wb3Npw6fDo28gZGUgaW5kaWNhZG9yZXMgICANCmQuCUFuw6FsaXNlIGV4cGxvcmF0w7NyaWEgZGFzIHZhcmnDoXZlaXMgKFIpICAgDQplLglBbsOhbGlzZSBkYSByZWxhw6fDo28gZW50cmUgdmFyacOhdmVpcyAoUikgICANCiAgICBpLglNYXRyaXogZGUgY29ycmVsYcOnw6NvCSAgDQogICAgaWkuCVJlZ3Jlc3PDo28gbsOjbyBlc3BhY2lhbCAgIA0KZi4JTWFwYXMgcGFyYSByZXByZXNlbnRhw6fDo28gZGFzIHZhcmnDoXZlaXMgbm8gcmVjb3J0ZSBlc3BhY2lhbCBkZWZpbmlkbyAoUUdJUykgICANCmcuCUFuw6FsaXNlIGVzcGFjaWFsIChRR0lTKSAgIA0KICAgIGkuCUF1dG9jb3JyZWxhw6fDo28gZXNwYWNpYWwgIA0KICAgIGlpLglDbHVzdGVyICAgDQogICAgaWlpLglPdXRyYXMgdMOpY25pY2FzIHF1ZSBzZWphbSByZWxldmFudGVzICAgDQpoLglFY29ub21ldHJpYSBlc3BhY2lhbCAgIA0KaS4gIFPDrW50ZXNlIGUgY29uc2lkZXJhw6fDtWVzIGdlcmFpcyAgIA0KDQoNCiMjIyBFbnRyZWdhcyBkbyBwcm9qZXRvDQoNCkRhdGF8ICBFdGFwYQ0KLS0tLXwtLS0tLS0tDQoyOS8wNnxEZWZpbmnDp8OjbyBkbyBwcm9ibGVtYSBlbSBpbnZlc3RpZ2HDp8OjbywgRWxhYm9yYcOnw6NvIGRlIGhpcMOzdGVzZXMgZSBTZWxlw6fDo28gZSBmb250ZSBkZSBkYWRvcyBwYXJhIG9idGVuw6fDo28gZGUgdmFyacOhdmVpcw0KMDIvMDd8QW7DoWxpc2UgZXhwbG9yYXTDs3JpYSBkYXMgdmFyacOhdmVpcyBlIGFuw6FsaXNlIGRhcyByZWxhw6fDtWVzIGVudHJlIHZhcmnDoXZlaXMgKFIpICAgDQowOC8wN3xNYXBhcyBwYXJhIHJlcHJlc2VudGHDp8OjbyBkYXMgdmFyacOhdmVpcyBlIGFuw6FsaXNlIGVzcGFjaWFsIG5vIHJlY29ydGUgZXNwYWNpYWwgZGVmaW5pZG8gKFFHSVMpICAgDQoxMC8wN3xFY29ub21ldHJpYSBlc3BhY2lhbCAgIA0KMTMvMDd8U8OtbnRlc2UsIGNvbnNpZGVyYcOnw7VlcyBnZXJhaXMgZSBhcHJlc2VudGHDp8Ojbw0KDQoNCkFzIGVudHJlZ2FzIGRldmVyw6NvIHNlciBmZWl0YXMgcGVsbyBjYW52YXMgZGEgZGlzY2lwbGluYSBlIHNlcsOjbyBkZXNlbnZvbHZpZGFzIGVtIGdydXBvcyBwcmVkZXRlcm1pbmFkb3MgKG5vIGNhbnZhcykuIA0KDQoNCiMjIyBDcm9ub2dyYW1hIGRlIHNlw6fDtWVzIHZpcnR1YWlzIHBhcmEgYWNvbXBhbmhhbWVudG8gZG9zIHByb2pldG9zIC0gZ3J1cG9zIGRlIGRpc2N1c3PDo28NCi0gKipSZWN1cnNvcyoqOiBbV2ViY29uZmVyw6puY2lhIFJOUF0oaHR0cHM6Ly9jb25mZXJlbmNpYXdlYi5ybnAuYnIvd2ViY29uZi9yZW5hdGEtbHVjaWEtbWFnYWxoYWVzLWRlLW9saXZlaXJhKQ0KICAgIA0KQSBzYWxhIHZpcnR1YWwgc2Vyw6EgYWJlcnRhIGNvbmZvcm1lIGNyb25vZ3JhbWEgY29tIHByb2Zlc3NvcmVzIGRpc3BvbsOtdmVpcyBwYXJhIGVzY2xhcmVjaW1lbnRvcyBkZSBkw7p2aWRhcyBlIG9yaWVudGHDp8OjbyBwYXJhIGRlc2Vudm9sdmltZW50byBkb3MgcHJvamV0b3MuIA0KICAgIA0KRGF0YXxBdGl2aWRhZGUNCi0tLS18LS0tLS0tLS0tDQoyNi8wNnxFbmNvbnRybyAxIC0gMDg6MDAgw6BzIDEyOjAwICAgDQowMy8wN3xFbmNvbnRybyAyIC0gMDg6MDAgw6BzIDEyOjAwICANCjEwLzA3fEVuY29udHJvIDMgLSAwODowMCDDoHMgMTI6MDAgICANCg0KLS0tLQ0KICAgDQojIFNlbWluw6FyaW8gZmluYWwNCjEzLzA3IC0gMTg6MDAgw6BzIDIxOjAwDQoNCi0gKipSZWN1cnNvcyoqOiBbV2ViY29uZmVyw6puY2lhIFJOUF0oaHR0cHM6Ly9jb25mZXJlbmNpYXdlYi5ybnAuYnIvd2ViY29uZi9yZW5hdGEtbHVjaWEtbWFnYWxoYWVzLWRlLW9saXZlaXJhKSAgIA0KDQpBIGFwcmVzZW50YcOnw6NvIGRvIHNlbWluw6FybyBmaW5hbCBzZXLDoSBjb21wb3N0YSBwb3I6ICAgDQogIC0gYXByZXNlbnRhw6fDo28gZGUgY2FkYSBncnVwbyAobcOheGltbyBkZSAxNSBtaW51dG9zKQ0KICAtIG1lc2EgZGUgZGlzY3Vzc8OjbyBwYXJhIGZlY2hhbWVudG8gZGEgZXhwZXJpw6puY2lhIHByb21vdmlkYSBwZWxvIHByb2pldG8gZGUgZW5zaW5vICgzMCBtaW51dG9zKQ0KICANCiMgQ29udGF0b3MNClJlbmF0YSBMw7pjaWEgTWFnYWxow6NlcyBkZSBPbGl2ZWlyYSAgIA0KUGF0cmljayBNZW5kZXMgZG9zIFNhbnRvcyAgIA0KTHVjw6lsaWEgVml2aWFuZSBSYWFkICAgDQoNCi0tLS0gICAgDQoNCiMgTGlua3MgaW50ZXJlc3NhbnRlcw0KDQpbTGl2cm8gc29icmUgQW7DoWxpc2UgZXNwYWNpYWwgbm8gUl0oaHR0cHM6Ly93d3cuZHJvcGJveC5jb20vcy9tbzY1cnd0emFmcnNhNXcvYW5hbGlzZSUyMGVzcGFjaWFsLnBkZj9kbD0wKQ0KDQpbQ3Vyc28gZGUgUiBlbSBwb3J0dWd1w6pzXShodHRwOi8vbWF0ZXJpYWwuY3Vyc28tci5jb20vKSAgIA0KDQpbUiBlIEFuw6FsaXNlIGVzcGFjaWFsXShodHRwczovL21naW1vbmQuZ2l0aHViLmlvL1NwYXRpYWwvc3BhdGlhbC1hdXRvY29ycmVsYXRpb24taW4tci5odG1sKQ0KDQpbQW7DoWxpc2UgZXNwYWNpYWwgbm8gUl0oaHR0cHM6Ly9yc3BhdGlhbC5vcmcvcmFzdGVyL2FuYWx5c2lzL2luZGV4Lmh0bWwpDQoNCltSZWZlcsOqbmNpYXMgZGUgbGlua3MgZGUgY29uc3VsdGEgcGFyYSBSIGUgUiBwYXJhIEpvcm5hbGlzdGFzXShodHRwczovL3d3dy5jdXJzby1kZS1wcm9ncmFtYWNhby1lbS1yLXBhcmEtam9ybmFsaXN0YXMuY29tLzIwMTkvMTAvMjcvc2FpYmEtbWFpcy1zb2JyZS1vLXIvKQ0KDQpbT3ZlcnNob290IGRheSArIENvdmlkLTE5XShodHRwczovL3d3dy5vdmVyc2hvb3RkYXkub3JnLykgICANCg0KW1VyYmFuaXplZF0oaHR0cHM6Ly92aW1lby5jb20vb25kZW1hbmQvdXJiYW5pemVkMikNCg0KIyBNYXRlcmlhbCBlIGNvbmNlaXRvcyBhZGljaW9uYWlzDQojIyMjIDEuIFBpcsOibWlkZSBkZSBNYXNsb3cNCmBgYHtyICwgZWNobz1GQUxTRSwgZmlnLmNhcD0iVGF4YXMgZGUgdXJiYW5pemHDp8OjbyIsIG91dC53aWR0aCA9ICc4NSUnLCBmaWcuYWxpZ24gPSAnY2VudGVyJ30NCmtuaXRyOjppbmNsdWRlX2dyYXBoaWNzKCdpbWcvbWFzbG93LmpwZycpDQpgYGANCg0K