Análise
Fatorial - AF
Aspectos
Históricos
Historicamente, a origem das técnicas de análise de fatores ou
análise fatorial está ligada a estudos da área de psicologia. Sua
criação data do início do século XX, quando Karl Pearson
(1901) e Charles Spearman (Spearman, 1904)
desenvolveram um método para a criação de um índice geral de
inteligência (fator “g”) com base nos resultados em vários testes
(escalas) que refletiriam essa aptidão. Tratava-se de um primeiro método
de AF, adequado para a estimação de um único fator. No entanto, o termo
Análise de Fatorial foi introduzido por Louis L.
Thurstone em 1931 no seu artigo Multiple Factor
Analysis.
Thurstone (1931) identificou sete habilidades
mentais primárias, em vez de um único fator g. Estudos mais recentes têm
alterado a quantidade de fatores a serem considerados na análise de
inteligência. No início, os métodos apresentavam uma característica mais
empírica do que inferencial. Em 1933 Pearson e Hotteling deram um
formalismo melhor as idéias criadas por Spearman, e assim impulsionado
com essas idéias, em 1940 com Lawley, surge um primeiro trabalho com um
maior rigor matemático, o que fez com que se aumentasse à aceitação
dessas técnicas no ramo da psicologia (LAWLEY,
1940).
Certos conceitos das ciências sociais e comportamentais não são bem
definidos e existem muitas discussões sobre o real significado de termos
como classe social, opinião pública, comportamento de risco ou
personalidade extrovertida. Tais conceitos são freqüentemente chamados
de variáveis latentes, desde que não são diretamente observáveis mesmo
na população. Trata-se de construtos inventados pelos cientistas com o
propósito de entender alguma área de interesse na pesquisa sendo
realizada e para a qual não existe método operacional para fazer uma
medida de forma direta.
Embora as variáveis latentes não possam ser observadas diretamente,
alguns de seus efeitos aparecerão nas variáveis manifestas, ou seja,
aquelas que podem ser verificadas. Fica claro que medir diretamente um
conceito como preconceito racial não é possível; no entanto, pode-se,
por exemplo, observar quando uma pessoa aprova, ou não, alguma
legislação do governo a respeito deste assunto. Pode-se, também, saber
de que raça são os amigos desta pessoa e assim assumir que tais
observações são de algum modo, indicadores de uma variável mais
fundamental, o preconceito racial (Everitt, 1984). O método mais
conhecido para investigar a dependência de um conjunto de variáveis
manifestas em relação a um número menor de variáveis latentes é a
chamada Análise de Fatores.
A análise de fatores é uma das técnicas mais usuais do que se
convencionou chamar de análise multivariada. Quando empregamos este tipo
de análise estamos frequentemente interessados no comportamento de uma
variável ou grupos de variáveis em covariação com outras (GREEN,
1976).
Em realidade a análise fatorial não se refere a uma única técnica
estatística, mas a uma variedade de técnicas relacionadas para tornar os
dados observados mais facilmente (e diretamente) interpretados. Isto é
feito analisando-se os inter-relacionamentos entre as variáveis de tal
modo que estas possam ser descritas convenientemente por um grupo de
categorias básicas, em número menor que as variáveis originais, chamado
fatores. Assim, o objetivo da análise fatorial é a parcimônia,
procurando definir o relacionamento entre as variáveis de modo simples e
usando um número de fatores menor que o número original de
variáveis.
Mais precisamente, um fator é um construto, uma entidade hipotética,
uma variável não observada, que se supõe estarem subjacente a testes,
escalas, itens e, de fato, medidas de qualquer espécie. Como construtos,
os fatores apenas possuem realidade no fato de explicarem a variância de
variáveis observadas, tal como se revelam pelas correlações entre as
variáveis sendo analisadas, ou seja, a única realidade científica que os
fatores possuem vem das correlações entre testes ou variáveis sendo
pesquisadas. Se os resultados de indivíduos em itens ou testes caminham
juntos, então, na medida em que existam correlações substanciais entre
eles, está definido um fator.
Definição
Clássica - AF
A análise fatorial (AF), de modo geral, é uma técnica estatística
multivariada que tem como princípio analisar a estrutura das
inter-relações (correlações) entre um grande número de variáveis, ou
seja, descrever a estrutura de dependência de um conjunto de variáveis
através da criação de fatores, que são variáveis que, supostamente,
medem aspectos comuns (Hair et al, 2005). Com o emprego
dessa técnica, inicialmente podem-se identificar as dimensões isoladas
da estrutura dos dados e então determinar o grau em que cada variável é
explicada por cada dimensão ou fator.
Segundo Mingoti (2005), a AF tem como objetivo
principal descrever a variabilidade original do vetor aleatório X, em
termos de um número menor M de variáveis aleatórias, chamadas de fatores
comuns e que estão relacionadas com o vetor original X através de um
modelo linear. Neste modelo, parte da variabilidade de X, é atribuída
aos fatores comuns, sendo o restante da variabilidade de X atribuído ás
variáveis que não foram incluídas no modelo, ou seja, o erro
aleatório.
Para Barroso e Artes (2003), a AF é uma técnica que
descreve a estrutura de dependência de um conjunto de variáveis, através
da criação de fatores, que são variáveis que, supostamente, medem
aspectos comuns.
Reis (1997) descreve a AF como um conjunto de
técnicas cuja finalidade é representar ou descrever um número de
variáveis iniciais a partir de um menor número de variáveis hipotéticas.
Trata-se de uma técnica estatística multivariada que, a partir da
estrutura de dependência existente entre as variáveis de interesse (em
geral representada pelas correlações ou covariâncias entre essas
variáveis), permite a criação de um conjunto menor de variáveis
(variáveis latentes ou fatores), obtidas a partir das originais.
De acordo com Malhotra (2001), análise fatorial é um
nome genérico que denota uma classe de processos essencialmente para
redução e sumarização dos dados”.
A análise fatorial é uma técnica de interdependência na qual todas as
variáveis são simultaneamente consideradas, cada uma relacionada com
todas as outras, empregando o conceito da variável estatística, a
composição linear das variáveis. Ela difere das técnicas multivariadas
de dependência (Regressão Múltipla, Análise Discriminante, Análise
Multivariada de Variância ou Correlação Canônica), nas quais uma ou mais
variáveis são explicitamente consideradas como as variáveis de critério
ou dependentes e todas as outras são as variáveis preditoras ou
independentes.
Na análise fatorial, as variáveis estatísticas (fatores) são formadas
para maximizar seu poder de explicação do conjunto inteiro de variáveis,
e não para prever uma variável (eis) dependente(s).
Na concepção de Pasquali (2003), a análise fatorial
é uma técnica caucada sobre o pressuposto de que uma série de variáveis
observadas, medidas, chamadas de variáveis empíricas ou observáveis pode
ser explicada por um número menor de variáveis não observáveis, chamadas
precisamente de variáveis fontes, mais conhecidas sob o nome de
fatores.
As chamadas variáveis fontes seriam a causa do fato de que as
variáveis observáveis se relacionam entre si, isto é, são responsáveis
pelas intercorrelações (covariâncias) entre as variáveis. Supõe-se que,
se as variáveis empíricas se relacionam entre si, é porque elas têm uma
causa comum que produz esta correlação entre elas. E a esta causa comum
que se chama de fator e cuja descoberta é precisamente a tarefa da
análise fatorial. Então, nestas afirmações já fizemos dois postulados
que a análise fatorial assume (Pasquali, 2003):
- Princípio da Parcimônia ou de Rank Reduction: Um
número menor de variáveis-fonte é suficiente para explicar uma série
maior de variáveis observáveis, isto é, redução do posto da matriz das
intercorrelações entre as variáveis observáveis.
- Princípio da Causalidade: As variáveis-fonte são as
causas da covariância entre as variáveis observáveis, ou seja, a análise
fatorial é um modelo causal.
Tipos de
Análise Fatorial
Técnicas analíticas fatoriais podem atingir seus objetivos ou de uma
perspectiva exploratória ou de uma confirmatória. Existe um debate
contínuo sobre o papel apropriado da análise fatorial, onde muitos
pesquisadores consideram a AF apenas exploratória, útil na busca da
estrutura em um conjunto de variáveis ou como um método de redução de
dados. Sob essa perspectiva, as técnicas analíticas fatoriais consideram
o que os dados oferecem e não estabelecem restrições a priori sobre o
número de componentes a serem extraídos. Para muitas, talvez a maioria
das aplicações, esse uso da AF é adequado. No entanto, em outras
situações, o pesquisador tem preconcebido idéias sobre a real estrutura
dos dados, baseado em suporte teórico ou em pesquisas anteriores. Ele
pode desejar testar hipóteses envolvendo questões sobre, por exemplo,
quais variáveis deveriam ser agrupadas em fator ou número exato de
fatores. Nesses casos, o pesquisador espera que a análise fatorial
desempenhe um papel confirmatório, ou seja, avalie o grau em que os
dados satisfazem à estrutura esperada.
Análise
Fatorial Exploratória - AFE
È comum um pesquisador analisar dados relativos a um fenômeno sem
dispor de um quadro de referência teórica que o oriente completamente.
Na maioria das vezes, essa situação decorre da falta de investimento na
estruturação teórica do problema, da existência de lacunas na teoria ou
da falta de ajuste de um modelo teórico proposto de antemão aos dados
observados.
De qualquer modo, sempre deve haver um mínimo de teoria indispensável
à utilização da AF, mesmo em sua forma exploratória. No mínimo, o
pesquisador deve supor que, por trás das variáveis observadas, há uma
estrutura de fatores ortogonais ou oblíquos. Isso por si só não é pouco,
pois exclui relações causais entre fatores, relações causais entre
variáveis observadas e correlações dos fatores únicos com outros fatores
ou com variáveis cuja especificidade não determina.
Assumida a existência de uma estrutura fatorial subjacente, o objetivo
primário da Análise Fatorial Exploratória é determinar a menor
quantidade possível de fatores que possam reproduzir a estrutura de
correlações das variáveis observadas. Secundariamente, o propósito é
ajustar soluções em que um pequeno número de variáveis tenha carga
elevada em cada fator, pois isso facilita a interpretação da
solução.
Análise
Fatorial Confirmatória - AFC
A aplicação na análise fatorial confirmatória procura verificar se os
dados observados se comportam de acordo com uma expectativa teórica. Se
isso ocorrer, serve como evidência favorável à validade dos dados e
reforça a teoria proposta, se não acontecer, alerta para existência de
problemas com os dados, com a teoria ou com ambos. O requisito mínimo
para execução da análise fatorial confirmatória é o pesquisador possuir
de antemão uma hipótese acerca da quantidade de fatores comuns e
apresentar uma expectativa teórica sobre qual fator deve carregar em
qual variável.
Cargas
Fatoriais
As cargas fatoriais obtidas são, com efeito, reduções de dados muito
mais complexos a tamanho manuseável para que o pesquisador possa
interpretar melhor os resultados (KERLINGER, 1980).
A expressão carga fatorial ocorre freqüentemente. Uma matriz de
cargas fatoriais é um dos produtos finais da análise fatorial. Uma carga
fatorial é um coeficiente, um número decimal, positivo ou negativo,
geralmente menor do que 1, que expressa o quanto um teste ou variável
observada está carregado ou saturado em um fator. Por outras palavras,
quanto maior for a carga em cima de um fator, mais a variável se
identifica com o que quer que seja o fator.
Em síntese, a análise fatorial é essencialmente um método para
determinar o número de fatores existentes em um conjunto de dados, para
determinar quais testes ou variáveis pertencem a quais fatores, e em que
extensão os testes ou variáveis pertencem a/ou estão saturados com o que
quer que seja o fator.
Assim, na AF uma situação, com inúmeras variáveis (\(X_{1}, X_{2},..., X_{p}\)), é explicada a
partir de dimensões escondidas (fatores: \(F_{1}, F_{2}, F_{3}\)). A Figura 1
demonstra graficamente o esquema geral da análise de fatores.
Modelo
Estatístico - AF
O modelo estatístico usado na análise fatorial explica uma estrutura
de correlação existente entre um conjunto de informações, diretamente
observado por meio de combinação linear de variáveis, as quais não são
diretamente observadas, denominados fatores comuns, acrescidas de
componente residual. Um modelo de análise fatorial pode ser apresentado
na seguinte forma conforme (DILLON e GOLDSTEIN,
1984).
Sejam variáveis aleatórias, m fatores comuns; m<p.
\[ X_{i} = \sum_{j=1}^{m} \lambda_{ij}
F_{j} + \epsilon_{i} \]
Em que:
\(X_{i}\) = variáveis originais ou
observadas;
\(\lambda_{ij}\) = Cargas fatoriais
da i-ésima variável no j-ésimo fator comum e refletem a importância do
j-ésimo fator na composição da i-ésima variável.
\(F_{j}\) = variáveis
não-observáveis ou variáveis latentes chamadas de fatores comuns;
\(\epsilon_{i}\) = Fatores
específicos que descrevem a variação residual específica da i-ésima
variável (resíduo que afeta somente \(X_{i}\)). É a parte da variável \(X_{i}\) que não é explicada pelos fatores
comuns.
Comunalidades
A porção da variância que a variável contribui para o fator comum m é
chamada de comunalidade. A porção da variância Var(X)= \(\sigma^{2}\) devido ao fator específico,
chama-se especificidade ou variância específica.
Então tem-se que A variância de cada variável \(X_{i}\) é a soma das Comunalidades \(h_{i}^{2}\) com suas respectivas
especificidades ou variância específica \(\psi_{i}\).
\[\underbrace{\sigma_{ij}}_{\mbox{Var}
(X_{i})} =
\underbrace{l^{2}_{i1}+l^{2}_{i2}+\ldots+l^{2}_{im}}_{\mbox{Comunalidades}} +\underbrace{\psi_{i}}_{\mbox{Variancia
Especifica}}\] Denotando-se a i-ésima comunalidade por \(h_{i}^{2}\) tem-se:
\[h_{ij}^{2}
= l^{2}_{i1}+l^{2}_{i2}+\ldots+l^{2}_{im} = \sum_{ij}^{m} l^{2}_{ij} \
\ \ \ \ com \ \ \ \ i=1,2,...,p \]
Então:
\[ \sigma_{ij} = h_{i}^{2} +
\psi_{i}\]
A i-ésima comunalidade é a soma dos quadrados dos carregamentos da
i-ésima variável com m fatores comuns. Portanto as comunalidades são as
maiores parcelas do total da variância de uma variável \(X_{i}\). A segunda parcela é proveniente da
variância específica de cada variável, representada por \(\psi\). Quanto mais a comunalidade se
aproximar de 1, melhor será o modelo fatorial. Autores consideram boa
comunalidade valores acima de 0,70.
Principais
Etapas para Aplicação - AF
A análise fatorial possui, basicamente, oito etapas para a sua
elaboração que são:
Formular o Problema: Formulação do problema da
análise fatorial e identificação das variáveis originais que serão
investigadas para resumo ou redução dos dados.
Cálculo da Matriz de Correlação: Cálculo da
matriz de correlação das variáveis em estudo para a verificação do grau
de associação entre as variáveis. Para testar a conveniência do modelo
fatorial, pode-se aplicar o teste de esfericidade de Bartlett para
testar a hipótese nula de que as variáveis não sejam correlacionadas na
população, ou seja, que a matriz de correlação da população é uma matriz
de identidade. Outra estatística utilizada pode ser a medida de
adequacidade da amostra de Kaiser-Meyer-Olkin (KMO), um índice usado
para avaliar a medida de adequacidade da amostra da análise fatorial.
Valores altos (entre 0,5 e 1,0) indicam que a análise fatorial é
apropriada. Assim, a partir de uma análise da matriz de correlação das
diversas variáveis, é possível obter indicadores sintéticos, ou,
utilizando o termo técnico, escores fatoriais, que consistem numa
combinação linear das variáveis originais que as sintetizam e explicam
(KAISER E RICE, 1974, SPSS, 1999).
Método de Análise: Escolha do método de análise
fatorial mais apropriado para extração dos fatores a serem utilizados
existem vários dentre os mais usuais são: Método de Componentes
Principais, Método de Análise Fatorial Comum e Método de Máxima
Verossimilhança.
Extrair Fatores Iniciais: Extração dos fatores
(cargas fatoriais) mais significativos que representarão os dados,
através do método mais adequado. Podem ser: a priori, com base em
autovalores, com base em um gráfico de Declive (Scree Plot), na
percentagem da variância. Aqui se sabe o quão bem o modelo representa os
dados (HAIR et. al, 2005).
Rotação dos Fatores: Aplicar algum tipo de
rotação nos fatores para facilitar o entendimento dos mesmos. Podem ser:
ortogonal, quando os eixos são mantidos em ângulo reto e rotação
oblíqua, quando os eixos não são mantidos em ângulo reto. (Geralmente,
utiliza-se rotação para transformar a matriz de fatores em uma matriz
mais simples e mais fácil de interpretar. O método de rotação mais
comumente usado é o processo varimax que objetiva diminuir o número de
variáveis com cargas fatoriais altas em um só fator, resultando em
fatores ortogonais. Se há fatores altamente correlacionados na população
pesquisada, pode-se usar a rotação oblíqua).
Interpretação de Fatores: É facilitada através
da identificação das variáveis que apresentam grandes cargas sobre o
mesmo fator. O fator pode então ser interpretado em termos das variáveis
que o pesam fortemente
Cálculo dos Escores Fatoriais: Escores fatoriai
são estimados para cada observação nos fatores derivados. A redução de
dados pode ser conseguida calculando escores para cada dimensão latente
e substituindo as variáveis originais pelos mesmos. A análise fatorial
pode auxiliar na seleção de um subconjunto representativo de variáveis
ou mesmo da criação de novas variáveis como substitutas das variáveis
originais, e ainda mantendo seu caráter original.
Determinação do Ajuste do Modelo: As diferenças
entre as correlações observadas (matriz de entrada) e as correlações
reproduzidas (estimada com base na matriz de fatores) são chamadas de
resíduos e se há muitos resíduos grandes, o modelo fatorial não dá um
bom ajuste aos dados, e deve ser reconsiderado.
Método de
Rotação dos Fatores
Uma ferramenta importante na interpretação de fatores é a
rotação fatorial. O termo rotação significa exatamente
o que sugere. Especificamente, os eixos de referência dos fatores são
rotacionados em torno da origem até que alguma outra posição seja
alcançada. As soluções de fatores não-rotacionadas extraem fatores na
ordem de sua importância.
O primeiro fator tende a ser um fator geral com quase toda a variável
com carga significativa, e explica a quantia maior de variância. O
segundo fator e os seguintes são então baseados na quantia residual de
variância. Cada fator explica porções sucessivamente menores de
variância. O efeito final de rotacionar a matriz fatorial é redistribuir
a variância dos primeiros fatores para os últimos com o objetivo de
atingir um padrão fatorial mais simples e teoricamente mais
significativo.
O caso mais simples de rotação é uma Rotação
Ortogonal, na qual os eixos são mantidos a 90º. Também é
possível rotacionar os eixos sem manter o ângulo de 90 graus entre os
eixos de referência. Procedimento de rotação se chama **Rotação
Oblíqua*.
Rotação
Ortogonal dos Fatores
Para rotação ortogonal dos fatores existem vários tipos na literatura
como: Varimax (mais usado) que é um método de rotação
ortogonal que minimiza o número de variáveis que cada agrupamento terá.
Ele simplifica a interpretação dos fatores.
Quartimax é um método que minimiza o número de
fatores necessários para explicar cada variável. Ele simplifica a
interpretação das variáveis obtidas.
O Equamax é também um método que busca uma
combinação dos outros (varimax e quartimax). O número de variáveis
obtido terá carga fatorial maior e o número de fatores será
minimizado.
Rotação
Varimax
A rotação varimax é uma das rotações ortogonais mais utilizadas em
análise fatorial. Intuitivamente, ela busca soluções nas quais se busca
maximizar as correlações de cada variável com apenas um fator.
O método varimax é um processo em que os eixos de referência dos
fatores são rotacionados em torno da origem até que alguma outra posição
seja alcançada. Intuitivamente, ela busca soluções nas quais se busca
maximizar as correlações de cada variável com apenas um fator. O
objetivo é redistribuir a variância dos primeiros fatores para os demais
e atingir um padrão fatorial mais simples e teoricamente mais
significativo (REIS, 2001; HAIR, 2005).
Varimax é um tipo de rotação ortogonal na qual mantém os fatores
perpendiculares entre si, ou seja, sem correlação entre eles. È o tipo
de rotação mais utilizado e que tem como característica o fato de
minimizar a ocorrência de uma variável possuir altas cargas fatoriais
para diferentes fatores, permitindo que uma variável seja facilmente
identificada como único fator (CORRAR et al, 2007).
Rotação
Oblíqua dos Fatores
Para rotação oblíqua dos fatores cita-se: Direct
Oblimin um método diferentemente dos três anteriores é oblíquo
(não ortogonal). Quando delta é igual a 0 (default), a solução é mais
oblíqua. Tomando-se delta mais negativo, os fatores ficaram menos
oblíquos. Ignorando-se o default delta de 0, deve-se usar um número
menor ou igual a 0,8.
O Promax também é um método oblíquo de rotação, o
qual possibilita os fatores correlatos. Ele pode ser calculado mais
rapidamente que a rotação direct oblimin. Assim ele é usado para grandes
grupos de dados. Kappa na maioria das vezes é tomado com o valor 4.
Existem outros métodos de rotação oblíqua na literatura como:
- Covarimin;
- Oblimax;
- Quartimin
mas que não são tão usados como os anteriores mensionados.
Os mesmos princípios gerais de rotações ortogonais são aplicáveis a
rotações oblíquas. O método de rotação oblíqua é mais flexível, pois os
eixos fatoriais não precisam ser ortogonais. Além disso, é mais realista
porque as dimensões inerentes que são teoricamente importantes não são
supostas sem correlações entre si. A solução oblíqua fornece informações
sobre o grau em que os fatores realmente estão correlacionados um com o
outro.
Métodos de
Escolha do Número de Fatores
A escolha do número de fatores é uma das tarefas mais importante de
uma análise fatorial. Quando o pesquisador opta por um número muito
reduzido, ele pode não identificar estruturas importantes existentes nos
dados e, por outro lado, se o número é excessivo, ele pode vir a ter
problemas de interpretação dos fatores. Existem, na literatura, vários
critérios que auxiliam na determinação do número de fatores que,
invariavelmente, quando empregados em um mesmo conjunto de dados,
conduzem a resultados diferentes (HAIR, 1998).
Os métodos de escolha, que se passou a descrever, têm caráter apenas
indicativo, não existindo uma hierarquia entre eles.
Técnica de Raiz Latente (Critério de Kaiser) :
Esta técnica parte do princípio de que qualquer fator individual deve
explicar a variância de pelo menos uma variável para que seja mantido
para interpretação. Cada variável contribui com um valor 1 do autovalor
total. Com efeito, apenas os fatores que têm raízes latentes ou
autovalores maiores que 1 são considerados significantes e os demais
fatores com autovalores menores do que 1 são considerados
insignificantes e descartados (KAISER, 1958).
Critério da % da Variância Explicada : O número
é determinado de modo que o conjunto de fatores comuns explique uma
porcentagem pré-definida da variabilidade global, por exemplo, desejamos
explicar pelo menos 70% da variabilidade total dos dados.
Critério Scree Test : È comum que a diferença de
explicação entre os primeiros fatores de uma AF seja grande e que tenda
a diminuir com o aumento no número de fatores. Por este critério, o
número ótimo de fatores é obtido quando a variação da explicação entre
fatores consecutivos passa a ser pequena. Com isso, de acordo com a
Figura 5, pode-se verificar melhor o Critério Scree Test junto com o
Critério da Raiz Latente ou de Kaiser.
Métodos Inferenciais : Outros métodos foram
desenvolvidos para os casos em que as variáveis originais seguem uma
distribuição normal. Esses métodos consistem no desenvolvimento de
testes estatísticos que se alicerçam na suposição de normalidade e,
dessa forma, não são, em princípio, adequados à análise da maioria das
escalas psicológicas. Apesar disso, esses métodos podem ser utilizados
com um fim puramente indicativo, sendo que a significância obtida nessas
situações não corresponde à realidade. Dentre esses testes destacamos o
de Bartlett (Johnson e Wichern, 1992) que verifica a adequabilidade do
modelo de AF estimado (pelo método da máxima verossimilhança) para
representar a estrutura de dependência dos dados.
Tamanho de
Amostra para Aplicação da AF
Uma AF envolve a estimação de um grande número de parâmetros e, para
que isso seja feito com um mínimo de qualidade, é necessário um tamanho
amostral relativamente grande em comparação ao número de variáveis
envolvidas. Há, na literatura estatística, uma série de sugestões para a
escolha desse tamanho amostral.
Em geral, essas opções baseiam-se na experiência pessoal dos diversos
autores que, em alguns casos, sugerem um tamanho amostral da ordem de
20 vezes o número de variáveis envolvidas (ver Hair et
al., 1995).
Reis (1997) e Hair et al. (1995) sugerem que o número de observações
deva ser de no mínimo 5 vezes o número de variáveis,
além disso, indicam que preferencialmente a análise seja feita com pelo
menos 100 observações. Hair et al. (2005) enfatiza que ela não deve ser
utilizada em amostras inferiores a 50 observações.
Métodos de
Estimação dos Escores Fatoriais
Quando o objetivo final da análise de dados é a descrição e o
entendimento da estrutura de correlação das variáveis, o que vimos sobre
análise fatorial pode levar às respostas desejadas. Outras vezes,
entretanto, os objetivos da pesquisa podem envolver análises posteriores
aplicadas aos fatores identificados aos dados. È suposto que cada
variável na amostra tenha um valor para cada um dos Fatores Comuns, que,
como já foi dito, não são diretamente observáveis. Esses valores são os
chamados Escores Fatoriais que posteriormente podem ser
utilizados em outras análises conjuntamente. (BARROSO; ARTES, 2003).
Existem na literatura vários métodos de estimação dos escores
fatoriais para cada elemento amostral, tais como:
- Método dos Mínimos Quadrados Ponderados;
- Método de Bartlett;
- Método de Anderson Rubin;
- Método de Regressão.
Sendo o Método de Regressão usado para estimar os escores dos
coeficientes dos fatores. Os escores gerados têm média 0 e variância
igual ao quadrado da correlação múltipla entre os escores dos fatores
estimados e os valores verdadeiros dos fatores. Os escores devem ser
igualados com os fatores ortogonais.
Em relação ao Método de Bartlett usado também para estimação dos
escores dos coeficientes dos fatores. Os escores produzidos têm média de
zero. A soma dos quadrados de um fator é feita sobre a extensão das
variáveis minimizadas. Já o Método de Anderson Rubin é similar ao de
Bartlett a diferença está em garantir a ortogonalidade dos fatores
estimados. Os escores gerados têm uma média de 0, desvio padrão de 1,0 e
são não correlatos.
Padronização dos Escores Fatoriais
Ao realizar a análise sobre um conjunto de dados com variáveis com
variâncias de magnitudes diferentes (provenientes de diversos setores),
podemos estar introduzindo dificuldades na explicitação dessa
dependência. Nos casos que existe uma grande diferença entre as
variâncias das variáveis originais, sugere-se que a análise seja
realizada sobre as variáveis padronizadas (Johnson, 1998).
Para facilitar a comparabilidade dos índices de um município nos
diversos grupos trasformou-se a base dos índices, ou seja, o escore
fatorial foi padronizado para se obter valores positivos dos escores
originais e permitir a hierarquização dos municípios, de tal forma que
os valores do índice estimado estejam situados entre zero e um (Santana,
2007).
A fórmula é a seguinte:
\[ Escore_{(Fatorial)_{(pad)}}
=\left(\frac{F_{i}-F_{min}}{F_{max} - F_{mini}}\right) \] Em
que \(F_{min}\) e \(F_{max}\) são os valores de mínimo e máximo
observado para os escores fatoriais associados aos municípios.
Viabilidade
da Análise de Fatores
Apresentam-se algumas medidas adicionais para aferir a viabilidade da
aplicação de uma análise fatorial a um conjunto de dados. As principais
medidas aplicadas foram: Matriz Anti-Imagem, Teste de Esfericidade de
Bartlett, Teste de Kaiser-Meyer-Olkin (KMO) e Measure of Sampling
Adequacy (MSA).
Matriz
Anti-imagem
Uma das premissas de uma análise fatorial é que exista uma estrutura
de dependência clara entre as variáveis envolvidas. No modelo estudado,
essa estrutura é expressa através da matriz de covariância ou de
correlação. A existência de tal estrutura implica que uma variável pode,
dentro de certos limites, ser prevista pelas demais. Para verificar esse
fato, pode-se calcular os coeficientes de correlação parcial entre os
pares de variáveis, eliminado o efeito das demais variáveis. Espera-se
que os valores obtidos sejam baixos. A matriz anti-imagem é construída
com esses coeficientes com sinais invertidos, muitas vezes, coloca-se na
diagonal principal dessa matriz os indicadores MAS (Measure of
Sampling Adequacy(MSA)) (BARROSO ; ARTES, 2003).
Teste de
Esfericidade de Bartlett
Esse teste avalia a significância geral da matriz de correlação, ou
seja, testa se todas as variáveis oriundas de diversos setores possuem
uma possível relação em comum (Dillon; Goldstein, 1984; Reis, 2001).
O teste de Bartlett testa as seguintes hipóteses nulas
\[
H_{0}: R = I \\
H_{1}: \lambda_{1} = \lambda_{2} = \ldots = \lambda_{p}
\]
E a estatística do teste
\[\chi^{2} = -
[n-1-\frac{1}{6}(2p+5)]\sum_{i=1}^{p} ln|R|\]
Em que \(|R|\) é o determinante da
matriz de correlação amostral, \(\lambda\) é a variância explicada por cada
fator, n é o número de observações e p é o número de variáveis.
A estatística tem uma distribuição assintótica de \(\chi^{2}\) com (0,5p(p-1)) graus de
liberdade.
Teste de
Kaiser-Meyer-Olkin (KMO)
Este teste é usado para compara as correlações parciais entre os
pares de variáveis sem o efeito das demais, ou seja, testa se duas a
duas variáveis possuem algum tipo de relação entre si (Dillon;
Goldstein, 1984; Kaiser, 1970; Reis, 2001).
\[ KMO =
\left(\frac{\sum_{i}\sum_{j}r_{ij}^{2}}{\sum_{i}\sum_{j}r_{ij}^{2}+\sum_{i}
\sum_{j}a_{ij}^{2}}\right) \] Em que \(r_{ij}\) é o coeficiente de correlação
observado entre as variáveis i e j e \(a_{ij}\) é o coeficiente de correlação
parcial entre as mesmas variáveis que é, simultaneamente, uma estimativa
das correlações entre os fatores, eliminado o efeito das demais
variáveis. Os \(a_{ij}\) deverão
assumir valores próximos de zero, uma vez que se pressupõe que os
fatores são ortogonais entre si.
Conforme, (Kaiser; Rice, 1974), os valores do teste são classificados
da seguinte forma:
Tabela 1. Classificação Geral do Teste de
adequabilidade KMO segundo (Kaiser; Rice, 1974).
| 0.90 - 1.00 |
Excelente |
| 0.80 – 0.90 |
Ótimo |
| 0.70 – 0.80 |
Bom |
| 0.60 – 0.70 |
Regular |
| 0.50 – 0.60 |
Ruim |
| 0.00 – 0.50 |
Inadequado |
Measure of
Sampling Adequacy(MSA)
Essa medida é bastante similar ao KMO. Novamente, deseja-se verificar
a possibilidade de existir uma estrutura fatorial nos dados. Na verdade,
a, MSA deve ser calculada separadamente para cada variável. O objetivo é
verificar se uma dada variável pode ser explicada pelas demais (o que é
esperado num modelo fatorial). Valores baixos de MSAi são indícios de
que a respectiva variável pode ser retirada da análise sem maiores
prejuízos (BARROSO; ARTES, 2003).
\[ MSA_{i} =
\left(\frac{\sum_{j=1}^{p}r_{ij}^{2}}{\sum_{j=1}^{p}r_{ij}^{2} +
\sum_{j=1}^{p}a_{ij}^{2}} \right) \]
Referências
Bibliográficas
ANDERSON, T. W. An Introduction Multivariate Analysis. New York: John
Wiley, 2003.
BARROSO, L.P.; ARTES, R. Análise Multivariada. São Paulo: IME-USP,
2003.
DILON, W.R.; GOLDSTEIN, M. Multivariate Analysis: methods and
applications. New York: John Wiley & Son, 1984.
DRAPER, N.R.; SMITH, H. Applied Regression Analysis. New York: John
Wiley & Sons, 1981.
ELIAN, Silva. N. Análise de Regressão. São Paulo: IME, 1998.
GREENE, W. H. Econometric Analysis. 3.ª Ed. Prentice Hall. New
Jersey, 1997.
GORSUCH, R. L. Factor Analysis. New Jersey: Lawrence Erlbaum,
1983.
GUJARATI, Dalmodar. N. Econometria Básica. São Paulo: Makron Book,
2000.
HAIR JR, J.F., ANDERSON, R.E., TATHAM, R.L., BLACK, W.C. Análise
Multivariada de Dados. 5. ed. Porto Alegre: Bookman, 2005.
HAIR JR, J.F., ANDERSON, R.E., TATHAM, R.L., BLACK, W.C. Multivariate
Data Analysis. New York: Prentice Hall, 1998.
JOHNSON, R. A.; WICHERN, D. W. Applied Multivariate Statistical
Analysis. 4. ed. Nova Jersey: Prentice Hall, 1998.
KAISER, H. F. The Varimax Criteion for Analaytic Rotation in Factor
Anaysis. Psychometrika, 1958.
KAISER, H. F.; RICE, J. Little Jiffy, mark IV. Education and
Psychological Measurement, 1974.
NETER, J.; WASSERMAN, W. Applied linear statistical models. Illinois:
Richard D. Irwin, 1974.
REIS, E. Estatística Multivariada Aplicada. 2. ed. Lisboa: Silabo,
2001.
RENCHER, A. Methods of Multivariate Analysis. 2 ed. New York: John
Wiley & Son, 2002.
ROYSTON, J. B. Some techniques for assessing multivariate based on
the Shapiro-Wilk W. Applied Statistics, London, v. 32, n. 2, p. 121-133,
1983.
SANTOS, A. C.; FERREIRA, D. F. Definição do tamanho amostral usando
simulação Monte Carlo para o teste de normalidade baseado em assimetria
e curtose: II. Abordagem multivariada. Ciência e Agrotecnlogia, Lavras,
v. 24, n. 1, p. 62-69, 2003.
MAHALANOBIS, P. C. On the Generalized Distance in Statistics.
Proceedings of the National Institute of Science of India, 1936.
MALHOTRA, N. K. Marketing Research: An Applied Orientation. New
Jersey: Prentice Hall, 2001.
MINGOTI, S.A. Análise de Dados Através de Métodos de Estatística
Multivariada: Uma Abordagem Aplicada. Belo Horizonte: UFMG, 2005.
LS0tDQp0aXRsZTogIioqQW7DoWxpc2UgRmF0b3JpYWwgbm8gUjogdW0gR3VpYSBQcsOhdGljbyoqIg0KYXV0aG9yOg0KLSBuYW1lOiBNw6FyaW8gRGllZ28gVmFsZW50ZQ0KLSBuYW1lOiBDYXJsb3MgUGFpeMOjbw0KZGF0ZTogImByIGZvcm1hdChTeXMudGltZSgpLCAnJWQgJUIsICVZJylgIg0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50OiANCiAgICBjb2RlX2Rvd25sb2FkOiB5ZXMNCiAgICBoaWdobGlnaHQ6IHRleHRtYXRlDQogICAgbnVtYmVyX3NlY3Rpb25zOiB5ZXMNCiAgICB0aGVtZTogY2VydWxlYW4NCiAgICB0b2M6IHllcw0KICAgIHRvY19kZXB0aDogNg0KICAgIHRvY19mbG9hdDoNCiAgICAgIGNvbGxhcHNlZDogeWVzDQogICAgICBzbW9vdGhfc2Nyb2xsOiB5ZXMNCiAgICBrZWVwX21kOiB5ZXMNCiAgcGRmX2RvY3VtZW50Og0KICAgIHRvYzogeWVzDQogICAgdG9jX2RlcHRoOiAnNicNCmluc3RpdHV0ZToNCmFic3RyYWN0OiAiQSBBbsOhbGlzZSBGYXRvcmlhbCDDqSB1bWEgdMOpY25pY2EgZXN0YXTDrXN0aWNhIHV0aWxpemFkYS4uLiINCi0tLQ0KDQoNCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFKQ0KYGBgDQoNCg0KYGBgez1odG1sfQ0KPHN0eWxlPg0KYm9keXt0ZXh0LWFsaWduOiBqdXN0aWZ5fQ0KPC9zdHlsZT4NCmBgYA0KDQoNCjo6OiBwcm9ncmVzcw0KOjo6IHsucHJvZ3Jlc3MtYmFyIHN0eWxlPSJ3aWR0aDogMTAwJTsifQ0KOjo6DQo6OjoNCg0KIyAqKkFuw6FsaXNlIEZhdG9yaWFsIC0gQUYqKg0KIyMgKipBc3BlY3RvcyBIaXN0w7NyaWNvcyoqDQoNCkhpc3RvcmljYW1lbnRlLCBhIG9yaWdlbSBkYXMgdMOpY25pY2FzIGRlIGFuw6FsaXNlIGRlIGZhdG9yZXMgb3UgYW7DoWxpc2UgZmF0b3JpYWwgZXN0w6EgbGlnYWRhIGEgZXN0dWRvcyBkYSDDoXJlYSBkZSBwc2ljb2xvZ2lhLiBTdWEgY3JpYcOnw6NvIGRhdGEgZG8gaW7DrWNpbyBkbyBzw6ljdWxvIFhYLCBxdWFuZG8gKipLYXJsIFBlYXJzb24gKDE5MDEpKiogZSAqKkNoYXJsZXMgU3BlYXJtYW4gKFNwZWFybWFuLCAxOTA0KSoqIGRlc2Vudm9sdmVyYW0gdW0gbcOpdG9kbyBwYXJhIGEgY3JpYcOnw6NvIGRlIHVtIMOtbmRpY2UgZ2VyYWwgZGUgaW50ZWxpZ8OqbmNpYSAoZmF0b3Ig4oCcZ+KAnSkgY29tIGJhc2Ugbm9zIHJlc3VsdGFkb3MgZW0gdsOhcmlvcyB0ZXN0ZXMgKGVzY2FsYXMpIHF1ZSByZWZsZXRpcmlhbSBlc3NhIGFwdGlkw6NvLiBUcmF0YXZhLXNlIGRlIHVtIHByaW1laXJvIG3DqXRvZG8gZGUgQUYsIGFkZXF1YWRvIHBhcmEgYSBlc3RpbWHDp8OjbyBkZSB1bSDDum5pY28gZmF0b3IuIE5vIGVudGFudG8sIG8gdGVybW8gQW7DoWxpc2UgZGUgRmF0b3JpYWwgZm9pIGludHJvZHV6aWRvIHBvciAqKkxvdWlzIEwuIFRodXJzdG9uZSoqIGVtIDE5MzEgbm8gc2V1IGFydGlnbyAqKk11bHRpcGxlIEZhY3RvciBBbmFseXNpcyoqLiANCg0KKipUaHVyc3RvbmUgKDE5MzEpKiogaWRlbnRpZmljb3Ugc2V0ZSBoYWJpbGlkYWRlcyBtZW50YWlzIHByaW3DoXJpYXMsIGVtIHZleiBkZSB1bSDDum5pY28gZmF0b3IgZy4gRXN0dWRvcyBtYWlzIHJlY2VudGVzIHTDqm0gYWx0ZXJhZG8gYSBxdWFudGlkYWRlIGRlIGZhdG9yZXMgYSBzZXJlbSBjb25zaWRlcmFkb3MgbmEgYW7DoWxpc2UgZGUgaW50ZWxpZ8OqbmNpYS4gTm8gaW7DrWNpbywgb3MgbcOpdG9kb3MgYXByZXNlbnRhdmFtIHVtYSBjYXJhY3RlcsOtc3RpY2EgbWFpcyBlbXDDrXJpY2EgZG8gcXVlIGluZmVyZW5jaWFsLiBFbSAxOTMzIFBlYXJzb24gZSBIb3R0ZWxpbmcgZGVyYW0gdW0gZm9ybWFsaXNtbyBtZWxob3IgYXMgaWTDqWlhcyBjcmlhZGFzIHBvciBTcGVhcm1hbiwgZSBhc3NpbSBpbXB1bHNpb25hZG8gY29tIGVzc2FzIGlkw6lpYXMsIGVtIDE5NDAgY29tIExhd2xleSwgc3VyZ2UgdW0gcHJpbWVpcm8gdHJhYmFsaG8gY29tIHVtIG1haW9yIHJpZ29yIG1hdGVtw6F0aWNvLCBvIHF1ZSBmZXogY29tIHF1ZSBzZSBhdW1lbnRhc3NlIMOgIGFjZWl0YcOnw6NvIGRlc3NhcyB0w6ljbmljYXMgbm8gcmFtbyBkYSBwc2ljb2xvZ2lhICgqKkxBV0xFWSwgMTk0MCoqKS4gDQoNCkNlcnRvcyBjb25jZWl0b3MgZGFzIGNpw6puY2lhcyBzb2NpYWlzIGUgY29tcG9ydGFtZW50YWlzIG7Do28gc8OjbyBiZW0gZGVmaW5pZG9zIGUgZXhpc3RlbSBtdWl0YXMgZGlzY3Vzc8O1ZXMgc29icmUgbyByZWFsIHNpZ25pZmljYWRvIGRlIHRlcm1vcyBjb21vIGNsYXNzZSBzb2NpYWwsIG9waW5pw6NvIHDDumJsaWNhLCBjb21wb3J0YW1lbnRvIGRlIHJpc2NvIG91IHBlcnNvbmFsaWRhZGUgZXh0cm92ZXJ0aWRhLiBUYWlzIGNvbmNlaXRvcyBzw6NvIGZyZXHDvGVudGVtZW50ZSBjaGFtYWRvcyBkZSB2YXJpw6F2ZWlzIGxhdGVudGVzLCBkZXNkZSBxdWUgbsOjbyBzw6NvIGRpcmV0YW1lbnRlIG9ic2VydsOhdmVpcyBtZXNtbyBuYSBwb3B1bGHDp8Ojby4gVHJhdGEtc2UgZGUgY29uc3RydXRvcyBpbnZlbnRhZG9zIHBlbG9zIGNpZW50aXN0YXMgY29tIG8gcHJvcMOzc2l0byBkZSBlbnRlbmRlciBhbGd1bWEgw6FyZWEgZGUgaW50ZXJlc3NlIG5hIHBlc3F1aXNhIHNlbmRvIHJlYWxpemFkYSBlIHBhcmEgYSBxdWFsIG7Do28gZXhpc3RlIG3DqXRvZG8gb3BlcmFjaW9uYWwgcGFyYSBmYXplciB1bWEgbWVkaWRhIGRlIGZvcm1hIGRpcmV0YS4NCg0KRW1ib3JhIGFzIHZhcmnDoXZlaXMgbGF0ZW50ZXMgbsOjbyBwb3NzYW0gc2VyIG9ic2VydmFkYXMgZGlyZXRhbWVudGUsIGFsZ3VucyBkZSBzZXVzIGVmZWl0b3MgYXBhcmVjZXLDo28gbmFzIHZhcmnDoXZlaXMgbWFuaWZlc3Rhcywgb3Ugc2VqYSwgYXF1ZWxhcyBxdWUgcG9kZW0gc2VyIHZlcmlmaWNhZGFzLiBGaWNhIGNsYXJvIHF1ZSBtZWRpciBkaXJldGFtZW50ZSB1bSBjb25jZWl0byBjb21vIHByZWNvbmNlaXRvIHJhY2lhbCBuw6NvIMOpIHBvc3PDrXZlbDsgbm8gZW50YW50bywgcG9kZS1zZSwgcG9yIGV4ZW1wbG8sIG9ic2VydmFyIHF1YW5kbyB1bWEgcGVzc29hIGFwcm92YSwgb3UgbsOjbywgYWxndW1hIGxlZ2lzbGHDp8OjbyBkbyBnb3Zlcm5vIGEgcmVzcGVpdG8gZGVzdGUgYXNzdW50by4gUG9kZS1zZSwgdGFtYsOpbSwgc2FiZXIgZGUgcXVlIHJhw6dhIHPDo28gb3MgYW1pZ29zIGRlc3RhIHBlc3NvYSBlIGFzc2ltIGFzc3VtaXIgcXVlIHRhaXMgb2JzZXJ2YcOnw7VlcyBzw6NvIGRlIGFsZ3VtIG1vZG8sIGluZGljYWRvcmVzIGRlIHVtYSB2YXJpw6F2ZWwgbWFpcyBmdW5kYW1lbnRhbCwgbyBwcmVjb25jZWl0byByYWNpYWwgKEV2ZXJpdHQsIDE5ODQpLiBPIG3DqXRvZG8gbWFpcyBjb25oZWNpZG8gcGFyYSBpbnZlc3RpZ2FyIGEgZGVwZW5kw6puY2lhIGRlIHVtIGNvbmp1bnRvIGRlIHZhcmnDoXZlaXMgbWFuaWZlc3RhcyBlbSByZWxhw6fDo28gYSB1bSBuw7ptZXJvIG1lbm9yIGRlIHZhcmnDoXZlaXMgbGF0ZW50ZXMgw6kgYSBjaGFtYWRhIEFuw6FsaXNlIGRlIEZhdG9yZXMuDQoNCkEgYW7DoWxpc2UgZGUgZmF0b3JlcyDDqSB1bWEgZGFzIHTDqWNuaWNhcyBtYWlzIHVzdWFpcyBkbyBxdWUgc2UgY29udmVuY2lvbm91IGNoYW1hciBkZSBhbsOhbGlzZSBtdWx0aXZhcmlhZGEuIFF1YW5kbyBlbXByZWdhbW9zIGVzdGUgdGlwbyBkZSBhbsOhbGlzZSBlc3RhbW9zIGZyZXF1ZW50ZW1lbnRlIGludGVyZXNzYWRvcyBubyBjb21wb3J0YW1lbnRvIGRlIHVtYSB2YXJpw6F2ZWwgb3UgZ3J1cG9zIGRlIHZhcmnDoXZlaXMgZW0gY292YXJpYcOnw6NvIGNvbSBvdXRyYXMgKCoqR1JFRU4sIDE5NzYqKikuICAgDQoNCkVtIHJlYWxpZGFkZSBhIGFuw6FsaXNlIGZhdG9yaWFsIG7Do28gc2UgcmVmZXJlIGEgdW1hIMO6bmljYSB0w6ljbmljYSBlc3RhdMOtc3RpY2EsIG1hcyBhIHVtYSB2YXJpZWRhZGUgZGUgdMOpY25pY2FzIHJlbGFjaW9uYWRhcyBwYXJhIHRvcm5hciBvcyBkYWRvcyBvYnNlcnZhZG9zIG1haXMgZmFjaWxtZW50ZSAoZSBkaXJldGFtZW50ZSkgaW50ZXJwcmV0YWRvcy4gSXN0byDDqSBmZWl0byBhbmFsaXNhbmRvLXNlIG9zIGludGVyLXJlbGFjaW9uYW1lbnRvcyBlbnRyZSBhcyB2YXJpw6F2ZWlzIGRlIHRhbCBtb2RvIHF1ZSBlc3RhcyBwb3NzYW0gc2VyIGRlc2NyaXRhcyBjb252ZW5pZW50ZW1lbnRlIHBvciB1bSBncnVwbyBkZSBjYXRlZ29yaWFzIGLDoXNpY2FzLCBlbSBuw7ptZXJvIG1lbm9yIHF1ZSBhcyB2YXJpw6F2ZWlzIG9yaWdpbmFpcywgY2hhbWFkbyBmYXRvcmVzLiBBc3NpbSwgbyBvYmpldGl2byBkYSBhbsOhbGlzZSBmYXRvcmlhbCDDqSBhIHBhcmNpbcO0bmlhLCBwcm9jdXJhbmRvIGRlZmluaXIgbyByZWxhY2lvbmFtZW50byBlbnRyZSBhcyB2YXJpw6F2ZWlzIGRlIG1vZG8gc2ltcGxlcyBlIHVzYW5kbyB1bSBuw7ptZXJvIGRlIGZhdG9yZXMgbWVub3IgcXVlIG8gbsO6bWVybyBvcmlnaW5hbCBkZSB2YXJpw6F2ZWlzLg0KDQpNYWlzIHByZWNpc2FtZW50ZSwgdW0gZmF0b3Igw6kgdW0gY29uc3RydXRvLCB1bWEgZW50aWRhZGUgaGlwb3TDqXRpY2EsIHVtYSB2YXJpw6F2ZWwgbsOjbyBvYnNlcnZhZGEsIHF1ZSBzZSBzdXDDtWUgZXN0YXJlbSBzdWJqYWNlbnRlIGEgdGVzdGVzLCBlc2NhbGFzLCBpdGVucyBlLCBkZSBmYXRvLCBtZWRpZGFzIGRlIHF1YWxxdWVyIGVzcMOpY2llLiBDb21vIGNvbnN0cnV0b3MsIG9zIGZhdG9yZXMgYXBlbmFzIHBvc3N1ZW0gcmVhbGlkYWRlIG5vIGZhdG8gZGUgZXhwbGljYXJlbSBhIHZhcmnDom5jaWEgZGUgdmFyacOhdmVpcyBvYnNlcnZhZGFzLCB0YWwgY29tbyBzZSByZXZlbGFtIHBlbGFzIGNvcnJlbGHDp8O1ZXMgZW50cmUgYXMgdmFyacOhdmVpcyBzZW5kbyBhbmFsaXNhZGFzLCBvdSBzZWphLCBhIMO6bmljYSByZWFsaWRhZGUgY2llbnTDrWZpY2EgcXVlIG9zIGZhdG9yZXMgcG9zc3VlbSB2ZW0gZGFzIGNvcnJlbGHDp8O1ZXMgZW50cmUgdGVzdGVzIG91IHZhcmnDoXZlaXMgc2VuZG8gcGVzcXVpc2FkYXMuIFNlIG9zIHJlc3VsdGFkb3MgZGUgaW5kaXbDrWR1b3MgZW0gaXRlbnMgb3UgdGVzdGVzIGNhbWluaGFtIGp1bnRvcywgZW50w6NvLCBuYSBtZWRpZGEgZW0gcXVlIGV4aXN0YW0gY29ycmVsYcOnw7VlcyBzdWJzdGFuY2lhaXMgZW50cmUgZWxlcywgZXN0w6EgZGVmaW5pZG8gdW0gZmF0b3IuIA0KDQo6OjogcHJvZ3Jlc3MNCjo6OiB7LnByb2dyZXNzLWJhciBzdHlsZT0id2lkdGg6IDEwMCU7In0NCjo6Og0KOjo6DQoNCiMjICoqRGVmaW5pw6fDo28gQ2zDoXNzaWNhIC0gQUYqKg0KDQpBIGFuw6FsaXNlIGZhdG9yaWFsIChBRiksIGRlIG1vZG8gZ2VyYWwsIMOpIHVtYSB0w6ljbmljYSBlc3RhdMOtc3RpY2EgbXVsdGl2YXJpYWRhIHF1ZSB0ZW0gY29tbyBwcmluY8OtcGlvIGFuYWxpc2FyIGEgZXN0cnV0dXJhIGRhcyBpbnRlci1yZWxhw6fDtWVzIChjb3JyZWxhw6fDtWVzKSBlbnRyZSB1bSBncmFuZGUgbsO6bWVybyBkZSB2YXJpw6F2ZWlzLCBvdSBzZWphLCBkZXNjcmV2ZXIgYSBlc3RydXR1cmEgZGUgZGVwZW5kw6puY2lhIGRlIHVtIGNvbmp1bnRvIGRlIHZhcmnDoXZlaXMgYXRyYXbDqXMgZGEgY3JpYcOnw6NvIGRlIGZhdG9yZXMsIHF1ZSBzw6NvIHZhcmnDoXZlaXMgcXVlLCBzdXBvc3RhbWVudGUsIG1lZGVtIGFzcGVjdG9zIGNvbXVucyAoKipIYWlyIGV0IGFsLCAyMDA1KiopLiBDb20gbyBlbXByZWdvIGRlc3NhIHTDqWNuaWNhLCBpbmljaWFsbWVudGUgcG9kZW0tc2UgaWRlbnRpZmljYXIgYXMgZGltZW5zw7VlcyBpc29sYWRhcyBkYSBlc3RydXR1cmEgZG9zIGRhZG9zIGUgZW50w6NvIGRldGVybWluYXIgbyBncmF1IGVtIHF1ZSBjYWRhIHZhcmnDoXZlbCDDqSBleHBsaWNhZGEgcG9yIGNhZGEgZGltZW5zw6NvIG91IGZhdG9yLg0KDQpTZWd1bmRvICoqTWluZ290aSAoMjAwNSkqKiwgYSBBRiB0ZW0gY29tbyBvYmpldGl2byBwcmluY2lwYWwgZGVzY3JldmVyIGEgdmFyaWFiaWxpZGFkZSBvcmlnaW5hbCBkbyB2ZXRvciBhbGVhdMOzcmlvIFgsIGVtIHRlcm1vcyBkZSB1bSBuw7ptZXJvIG1lbm9yIE0gZGUgdmFyacOhdmVpcyBhbGVhdMOzcmlhcywgY2hhbWFkYXMgZGUgZmF0b3JlcyBjb211bnMgZSBxdWUgZXN0w6NvIHJlbGFjaW9uYWRhcyBjb20gbyB2ZXRvciBvcmlnaW5hbCBYIGF0cmF2w6lzIGRlIHVtIG1vZGVsbyBsaW5lYXIuIE5lc3RlIG1vZGVsbywgcGFydGUgZGEgdmFyaWFiaWxpZGFkZSBkZSBYLCDDqSBhdHJpYnXDrWRhIGFvcyBmYXRvcmVzIGNvbXVucywgc2VuZG8gbyByZXN0YW50ZSBkYSB2YXJpYWJpbGlkYWRlIGRlIFggYXRyaWJ1w61kbyDDoXMgdmFyacOhdmVpcyBxdWUgbsOjbyBmb3JhbSBpbmNsdcOtZGFzIG5vIG1vZGVsbywgb3Ugc2VqYSwgbyBlcnJvIGFsZWF0w7NyaW8uDQoNClBhcmEgKipCYXJyb3NvIGUgQXJ0ZXMgKDIwMDMpKiosIGEgQUYgw6kgdW1hIHTDqWNuaWNhIHF1ZSBkZXNjcmV2ZSBhIGVzdHJ1dHVyYSBkZSBkZXBlbmTDqm5jaWEgZGUgdW0gY29uanVudG8gZGUgdmFyacOhdmVpcywgYXRyYXbDqXMgZGEgY3JpYcOnw6NvIGRlIGZhdG9yZXMsIHF1ZSBzw6NvIHZhcmnDoXZlaXMgcXVlLCBzdXBvc3RhbWVudGUsIG1lZGVtIGFzcGVjdG9zIGNvbXVucy4gDQoNCioqUmVpcyAoMTk5NykqKiBkZXNjcmV2ZSBhIEFGIGNvbW8gdW0gY29uanVudG8gZGUgdMOpY25pY2FzIGN1amEgZmluYWxpZGFkZSDDqSByZXByZXNlbnRhciBvdSBkZXNjcmV2ZXIgdW0gbsO6bWVybyBkZSB2YXJpw6F2ZWlzIGluaWNpYWlzIGEgcGFydGlyIGRlIHVtIG1lbm9yIG7Dum1lcm8gZGUgdmFyacOhdmVpcyBoaXBvdMOpdGljYXMuIFRyYXRhLXNlIGRlIHVtYSB0w6ljbmljYSBlc3RhdMOtc3RpY2EgbXVsdGl2YXJpYWRhIHF1ZSwgYSBwYXJ0aXIgZGEgZXN0cnV0dXJhIGRlIGRlcGVuZMOqbmNpYSBleGlzdGVudGUgZW50cmUgYXMgdmFyacOhdmVpcyBkZSBpbnRlcmVzc2UgKGVtIGdlcmFsIHJlcHJlc2VudGFkYSBwZWxhcyBjb3JyZWxhw6fDtWVzIG91IGNvdmFyacOibmNpYXMgZW50cmUgZXNzYXMgdmFyacOhdmVpcyksIHBlcm1pdGUgYSBjcmlhw6fDo28gZGUgdW0gY29uanVudG8gbWVub3IgZGUgdmFyacOhdmVpcyAodmFyacOhdmVpcyBsYXRlbnRlcyBvdSBmYXRvcmVzKSwgb2J0aWRhcyBhIHBhcnRpciBkYXMgb3JpZ2luYWlzLiANCg0KRGUgYWNvcmRvIGNvbSAqKk1hbGhvdHJhICgyMDAxKSoqLCBhbsOhbGlzZSBmYXRvcmlhbCDDqSB1bSBub21lIGdlbsOpcmljbyBxdWUgZGVub3RhIHVtYSBjbGFzc2UgZGUgcHJvY2Vzc29zIGVzc2VuY2lhbG1lbnRlIHBhcmEgcmVkdcOnw6NvIGUgc3VtYXJpemHDp8OjbyBkb3MgZGFkb3PigJ0uIA0KDQpBIGFuw6FsaXNlIGZhdG9yaWFsIMOpIHVtYSB0w6ljbmljYSBkZSBpbnRlcmRlcGVuZMOqbmNpYSBuYSBxdWFsIHRvZGFzIGFzIHZhcmnDoXZlaXMgc8OjbyBzaW11bHRhbmVhbWVudGUgY29uc2lkZXJhZGFzLCBjYWRhIHVtYSByZWxhY2lvbmFkYSBjb20gdG9kYXMgYXMgb3V0cmFzLCBlbXByZWdhbmRvIG8gY29uY2VpdG8gZGEgdmFyacOhdmVsIGVzdGF0w61zdGljYSwgYSBjb21wb3Npw6fDo28gbGluZWFyIGRhcyB2YXJpw6F2ZWlzLiBFbGEgZGlmZXJlIGRhcyB0w6ljbmljYXMgbXVsdGl2YXJpYWRhcyBkZSBkZXBlbmTDqm5jaWEgKFJlZ3Jlc3PDo28gTcO6bHRpcGxhLCBBbsOhbGlzZSBEaXNjcmltaW5hbnRlLCBBbsOhbGlzZSBNdWx0aXZhcmlhZGEgZGUgVmFyacOibmNpYSBvdSBDb3JyZWxhw6fDo28gQ2Fuw7RuaWNhKSwgbmFzIHF1YWlzIHVtYSBvdSBtYWlzIHZhcmnDoXZlaXMgc8OjbyBleHBsaWNpdGFtZW50ZSBjb25zaWRlcmFkYXMgY29tbyBhcyB2YXJpw6F2ZWlzIGRlIGNyaXTDqXJpbyBvdSBkZXBlbmRlbnRlcyBlIHRvZGFzIGFzIG91dHJhcyBzw6NvIGFzIHZhcmnDoXZlaXMgcHJlZGl0b3JhcyBvdSBpbmRlcGVuZGVudGVzLg0KDQpOYSBhbsOhbGlzZSBmYXRvcmlhbCwgYXMgdmFyacOhdmVpcyBlc3RhdMOtc3RpY2FzIChmYXRvcmVzKSBzw6NvIGZvcm1hZGFzIHBhcmEgbWF4aW1pemFyIHNldSBwb2RlciBkZSBleHBsaWNhw6fDo28gZG8gY29uanVudG8gaW50ZWlybyBkZSB2YXJpw6F2ZWlzLCBlIG7Do28gcGFyYSBwcmV2ZXIgdW1hIHZhcmnDoXZlbCAoZWlzKSBkZXBlbmRlbnRlKHMpLg0KDQpOYSBjb25jZXDDp8OjbyBkZSAqKlBhc3F1YWxpICgyMDAzKSoqLCBhIGFuw6FsaXNlIGZhdG9yaWFsIMOpIHVtYSB0w6ljbmljYSBjYXVjYWRhIHNvYnJlIG8gcHJlc3N1cG9zdG8gZGUgcXVlIHVtYSBzw6lyaWUgZGUgdmFyacOhdmVpcyBvYnNlcnZhZGFzLCBtZWRpZGFzLCBjaGFtYWRhcyBkZSB2YXJpw6F2ZWlzIGVtcMOtcmljYXMgb3Ugb2JzZXJ2w6F2ZWlzIHBvZGUgc2VyIGV4cGxpY2FkYSBwb3IgdW0gbsO6bWVybyBtZW5vciBkZSB2YXJpw6F2ZWlzIG7Do28gb2JzZXJ2w6F2ZWlzLCBjaGFtYWRhcyBwcmVjaXNhbWVudGUgZGUgdmFyacOhdmVpcyBmb250ZXMsIG1haXMgY29uaGVjaWRhcyBzb2IgbyBub21lIGRlIGZhdG9yZXMuDQoNCkFzIGNoYW1hZGFzIHZhcmnDoXZlaXMgZm9udGVzIHNlcmlhbSBhIGNhdXNhIGRvIGZhdG8gZGUgcXVlIGFzIHZhcmnDoXZlaXMgb2JzZXJ2w6F2ZWlzIHNlIHJlbGFjaW9uYW0gZW50cmUgc2ksIGlzdG8gw6ksIHPDo28gcmVzcG9uc8OhdmVpcyBwZWxhcyBpbnRlcmNvcnJlbGHDp8O1ZXMgKGNvdmFyacOibmNpYXMpIGVudHJlIGFzIHZhcmnDoXZlaXMuIFN1cMO1ZS1zZSBxdWUsIHNlIGFzIHZhcmnDoXZlaXMgZW1ww61yaWNhcyBzZSByZWxhY2lvbmFtIGVudHJlIHNpLCDDqSBwb3JxdWUgZWxhcyB0w6ptIHVtYSBjYXVzYSBjb211bSBxdWUgcHJvZHV6IGVzdGEgY29ycmVsYcOnw6NvIGVudHJlIGVsYXMuIEUgYSBlc3RhIGNhdXNhIGNvbXVtIHF1ZSBzZSBjaGFtYSBkZSBmYXRvciBlIGN1amEgZGVzY29iZXJ0YSDDqSBwcmVjaXNhbWVudGUgYSB0YXJlZmEgZGEgYW7DoWxpc2UgZmF0b3JpYWwuIEVudMOjbywgbmVzdGFzIGFmaXJtYcOnw7VlcyBqw6EgZml6ZW1vcyBkb2lzIHBvc3R1bGFkb3MgcXVlIGEgYW7DoWxpc2UgZmF0b3JpYWwgYXNzdW1lIChQYXNxdWFsaSwgMjAwMyk6DQoNCi0gICAxKSAqKlByaW5jw61waW8gZGEgUGFyY2ltw7RuaWEgb3UgZGUgUmFuayBSZWR1Y3Rpb24qKjogVW0gbsO6bWVybyBtZW5vciBkZSB2YXJpw6F2ZWlzLWZvbnRlIMOpIHN1ZmljaWVudGUgcGFyYSBleHBsaWNhciB1bWEgc8OpcmllIG1haW9yIGRlIHZhcmnDoXZlaXMgb2JzZXJ2w6F2ZWlzLCBpc3RvIMOpLCByZWR1w6fDo28gZG8gcG9zdG8gZGEgbWF0cml6IGRhcyBpbnRlcmNvcnJlbGHDp8O1ZXMgZW50cmUgYXMgdmFyacOhdmVpcyBvYnNlcnbDoXZlaXMuDQotICAgMikJKipQcmluY8OtcGlvIGRhIENhdXNhbGlkYWRlKio6IEFzIHZhcmnDoXZlaXMtZm9udGUgc8OjbyBhcyBjYXVzYXMgZGEgY292YXJpw6JuY2lhIGVudHJlIGFzIHZhcmnDoXZlaXMgb2JzZXJ2w6F2ZWlzLCBvdSBzZWphLCBhIGFuw6FsaXNlIGZhdG9yaWFsIMOpIHVtIG1vZGVsbyBjYXVzYWwuIA0KDQo6OjogcHJvZ3Jlc3MNCjo6OiB7LnByb2dyZXNzLWJhciBzdHlsZT0id2lkdGg6IDEwMCU7In0NCjo6Og0KOjo6DQoNCiMjICoqVGlwb3MgZGUgQW7DoWxpc2UgRmF0b3JpYWwqKg0KDQpUw6ljbmljYXMgYW5hbMOtdGljYXMgZmF0b3JpYWlzIHBvZGVtIGF0aW5naXIgc2V1cyBvYmpldGl2b3Mgb3UgZGUgdW1hIHBlcnNwZWN0aXZhIGV4cGxvcmF0w7NyaWEgb3UgZGUgdW1hIGNvbmZpcm1hdMOzcmlhLiBFeGlzdGUgdW0gZGViYXRlIGNvbnTDrW51byBzb2JyZSBvIHBhcGVsIGFwcm9wcmlhZG8gZGEgYW7DoWxpc2UgZmF0b3JpYWwsIG9uZGUgbXVpdG9zIHBlc3F1aXNhZG9yZXMgY29uc2lkZXJhbSBhIEFGIGFwZW5hcyBleHBsb3JhdMOzcmlhLCDDunRpbCBuYSBidXNjYSBkYSBlc3RydXR1cmEgZW0gdW0gY29uanVudG8gZGUgdmFyacOhdmVpcyBvdSBjb21vIHVtIG3DqXRvZG8gZGUgcmVkdcOnw6NvIGRlIGRhZG9zLiBTb2IgZXNzYSBwZXJzcGVjdGl2YSwgYXMgdMOpY25pY2FzIGFuYWzDrXRpY2FzIGZhdG9yaWFpcyBjb25zaWRlcmFtIG8gcXVlIG9zIGRhZG9zIG9mZXJlY2VtIGUgbsOjbyBlc3RhYmVsZWNlbSByZXN0cmnDp8O1ZXMgYSBwcmlvcmkgc29icmUgbyBuw7ptZXJvIGRlIGNvbXBvbmVudGVzIGEgc2VyZW0gZXh0cmHDrWRvcy4gUGFyYSBtdWl0YXMsIHRhbHZleiBhIG1haW9yaWEgZGFzIGFwbGljYcOnw7VlcywgZXNzZSB1c28gZGEgQUYgw6kgYWRlcXVhZG8uIE5vIGVudGFudG8sIGVtIG91dHJhcyBzaXR1YcOnw7VlcywgbyBwZXNxdWlzYWRvciB0ZW0gcHJlY29uY2ViaWRvIGlkw6lpYXMgc29icmUgYSByZWFsIGVzdHJ1dHVyYSBkb3MgZGFkb3MsIGJhc2VhZG8gZW0gc3Vwb3J0ZSB0ZcOzcmljbyBvdSBlbSBwZXNxdWlzYXMgYW50ZXJpb3Jlcy4gRWxlIHBvZGUgZGVzZWphciB0ZXN0YXIgaGlww7N0ZXNlcyBlbnZvbHZlbmRvIHF1ZXN0w7VlcyBzb2JyZSwgcG9yIGV4ZW1wbG8sIHF1YWlzIHZhcmnDoXZlaXMgZGV2ZXJpYW0gc2VyIGFncnVwYWRhcyBlbSBmYXRvciBvdSBuw7ptZXJvIGV4YXRvIGRlIGZhdG9yZXMuIE5lc3NlcyBjYXNvcywgbyBwZXNxdWlzYWRvciBlc3BlcmEgcXVlIGEgYW7DoWxpc2UgZmF0b3JpYWwgZGVzZW1wZW5oZSB1bSBwYXBlbCBjb25maXJtYXTDs3Jpbywgb3Ugc2VqYSwgYXZhbGllIG8gZ3JhdSBlbSBxdWUgb3MgZGFkb3Mgc2F0aXNmYXplbSDDoCBlc3RydXR1cmEgZXNwZXJhZGEuDQoNCiMjIyAqKkFuw6FsaXNlIEZhdG9yaWFsIEV4cGxvcmF0w7NyaWEgLSBBRkUqKg0KDQrDiCBjb211bSB1bSBwZXNxdWlzYWRvciBhbmFsaXNhciBkYWRvcyByZWxhdGl2b3MgYSB1bSBmZW7DtG1lbm8gc2VtIGRpc3BvciBkZSB1bSBxdWFkcm8gZGUgcmVmZXLDqm5jaWEgdGXDs3JpY2EgcXVlIG8gb3JpZW50ZSBjb21wbGV0YW1lbnRlLiBOYSBtYWlvcmlhIGRhcyB2ZXplcywgZXNzYSBzaXR1YcOnw6NvIGRlY29ycmUgZGEgZmFsdGEgZGUgaW52ZXN0aW1lbnRvIG5hIGVzdHJ1dHVyYcOnw6NvIHRlw7NyaWNhIGRvIHByb2JsZW1hLCBkYSBleGlzdMOqbmNpYSBkZSBsYWN1bmFzIG5hIHRlb3JpYSBvdSBkYSBmYWx0YSBkZSBhanVzdGUgZGUgdW0gbW9kZWxvIHRlw7NyaWNvIHByb3Bvc3RvIGRlIGFudGVtw6NvIGFvcyBkYWRvcyBvYnNlcnZhZG9zLg0KDQpEZSBxdWFscXVlciBtb2RvLCBzZW1wcmUgZGV2ZSBoYXZlciB1bSBtw61uaW1vIGRlIHRlb3JpYSBpbmRpc3BlbnPDoXZlbCDDoCB1dGlsaXphw6fDo28gZGEgQUYsIG1lc21vIGVtIHN1YSBmb3JtYSBleHBsb3JhdMOzcmlhLiBObyBtw61uaW1vLCBvIHBlc3F1aXNhZG9yIGRldmUgc3Vwb3IgcXVlLCBwb3IgdHLDoXMgZGFzIHZhcmnDoXZlaXMgb2JzZXJ2YWRhcywgaMOhIHVtYSBlc3RydXR1cmEgZGUgZmF0b3JlcyBvcnRvZ29uYWlzIG91IG9ibMOtcXVvcy4gSXNzbyBwb3Igc2kgc8OzIG7Do28gw6kgcG91Y28sIHBvaXMgZXhjbHVpIHJlbGHDp8O1ZXMgY2F1c2FpcyBlbnRyZSBmYXRvcmVzLCByZWxhw6fDtWVzIGNhdXNhaXMgZW50cmUgdmFyacOhdmVpcyBvYnNlcnZhZGFzIGUgY29ycmVsYcOnw7VlcyBkb3MgZmF0b3JlcyDDum5pY29zIGNvbSBvdXRyb3MgZmF0b3JlcyBvdSBjb20gdmFyacOhdmVpcyBjdWphIGVzcGVjaWZpY2lkYWRlIG7Do28gZGV0ZXJtaW5hLiAgDQpBc3N1bWlkYSBhIGV4aXN0w6puY2lhIGRlIHVtYSBlc3RydXR1cmEgZmF0b3JpYWwgc3ViamFjZW50ZSwgbyBvYmpldGl2byBwcmltw6FyaW8gZGEgQW7DoWxpc2UgRmF0b3JpYWwgRXhwbG9yYXTDs3JpYSDDqSBkZXRlcm1pbmFyIGEgbWVub3IgcXVhbnRpZGFkZSBwb3Nzw612ZWwgZGUgZmF0b3JlcyBxdWUgcG9zc2FtIHJlcHJvZHV6aXIgYSBlc3RydXR1cmEgZGUgY29ycmVsYcOnw7VlcyBkYXMgdmFyacOhdmVpcyBvYnNlcnZhZGFzLiBTZWN1bmRhcmlhbWVudGUsIG8gcHJvcMOzc2l0byDDqSBhanVzdGFyIHNvbHXDp8O1ZXMgZW0gcXVlIHVtIHBlcXVlbm8gbsO6bWVybyBkZSB2YXJpw6F2ZWlzIHRlbmhhIGNhcmdhIGVsZXZhZGEgZW0gY2FkYSBmYXRvciwgcG9pcyBpc3NvIGZhY2lsaXRhIGEgaW50ZXJwcmV0YcOnw6NvIGRhIHNvbHXDp8Ojby4NCg0KIyMjICoqQW7DoWxpc2UgRmF0b3JpYWwgQ29uZmlybWF0w7NyaWEgLSBBRkMqKg0KDQpBIGFwbGljYcOnw6NvIG5hIGFuw6FsaXNlIGZhdG9yaWFsIGNvbmZpcm1hdMOzcmlhIHByb2N1cmEgdmVyaWZpY2FyIHNlIG9zIGRhZG9zIG9ic2VydmFkb3Mgc2UgY29tcG9ydGFtIGRlIGFjb3JkbyBjb20gdW1hIGV4cGVjdGF0aXZhIHRlw7NyaWNhLiBTZSBpc3NvIG9jb3JyZXIsIHNlcnZlIGNvbW8gZXZpZMOqbmNpYSBmYXZvcsOhdmVsIMOgIHZhbGlkYWRlIGRvcyBkYWRvcyBlIHJlZm9yw6dhIGEgdGVvcmlhIHByb3Bvc3RhLCBzZSBuw6NvIGFjb250ZWNlciwgYWxlcnRhIHBhcmEgZXhpc3TDqm5jaWEgZGUgcHJvYmxlbWFzIGNvbSBvcyBkYWRvcywgY29tIGEgdGVvcmlhIG91IGNvbSBhbWJvcy4gTyByZXF1aXNpdG8gbcOtbmltbyBwYXJhIGV4ZWN1w6fDo28gZGEgYW7DoWxpc2UgZmF0b3JpYWwgY29uZmlybWF0w7NyaWEgw6kgbyBwZXNxdWlzYWRvciBwb3NzdWlyIGRlIGFudGVtw6NvIHVtYSBoaXDDs3Rlc2UgYWNlcmNhIGRhIHF1YW50aWRhZGUgZGUgZmF0b3JlcyBjb211bnMgZSBhcHJlc2VudGFyIHVtYSBleHBlY3RhdGl2YSB0ZcOzcmljYSBzb2JyZSBxdWFsIGZhdG9yIGRldmUgY2FycmVnYXIgZW0gcXVhbCB2YXJpw6F2ZWwuDQoNCjo6OiBwcm9ncmVzcw0KOjo6IHsucHJvZ3Jlc3MtYmFyIHN0eWxlPSJ3aWR0aDogMTAwJTsifQ0KOjo6DQo6OjoNCg0KIyMgKipDYXJnYXMgRmF0b3JpYWlzKioNCg0KQXMgY2FyZ2FzIGZhdG9yaWFpcyBvYnRpZGFzIHPDo28sIGNvbSBlZmVpdG8sIHJlZHXDp8O1ZXMgZGUgZGFkb3MgbXVpdG8gbWFpcyBjb21wbGV4b3MgYSB0YW1hbmhvIG1hbnVzZcOhdmVsIHBhcmEgcXVlIG8gcGVzcXVpc2Fkb3IgcG9zc2EgaW50ZXJwcmV0YXIgbWVsaG9yIG9zIHJlc3VsdGFkb3MgKCoqS0VSTElOR0VSLCAxOTgwKiopLiANCg0KQSBleHByZXNzw6NvIGNhcmdhIGZhdG9yaWFsIG9jb3JyZSBmcmVxw7xlbnRlbWVudGUuIFVtYSBtYXRyaXogZGUgY2FyZ2FzIGZhdG9yaWFpcyDDqSB1bSBkb3MgcHJvZHV0b3MgZmluYWlzIGRhIGFuw6FsaXNlIGZhdG9yaWFsLiBVbWEgY2FyZ2EgZmF0b3JpYWwgw6kgdW0gY29lZmljaWVudGUsIHVtIG7Dum1lcm8gZGVjaW1hbCwgcG9zaXRpdm8gb3UgbmVnYXRpdm8sIGdlcmFsbWVudGUgbWVub3IgZG8gcXVlIDEsIHF1ZSBleHByZXNzYSBvIHF1YW50byB1bSB0ZXN0ZSBvdSB2YXJpw6F2ZWwgb2JzZXJ2YWRhIGVzdMOhIGNhcnJlZ2FkbyBvdSBzYXR1cmFkbyBlbSB1bSBmYXRvci4gUG9yIG91dHJhcyBwYWxhdnJhcywgcXVhbnRvIG1haW9yIGZvciBhIGNhcmdhIGVtIGNpbWEgZGUgdW0gZmF0b3IsIG1haXMgYSB2YXJpw6F2ZWwgc2UgaWRlbnRpZmljYSBjb20gbyBxdWUgcXVlciBxdWUgc2VqYSBvIGZhdG9yLiANCg0KRW0gc8OtbnRlc2UsIGEgYW7DoWxpc2UgZmF0b3JpYWwgw6kgZXNzZW5jaWFsbWVudGUgdW0gbcOpdG9kbyBwYXJhIGRldGVybWluYXIgbyBuw7ptZXJvIGRlIGZhdG9yZXMgZXhpc3RlbnRlcyBlbSB1bSBjb25qdW50byBkZSBkYWRvcywgcGFyYSBkZXRlcm1pbmFyIHF1YWlzIHRlc3RlcyBvdSB2YXJpw6F2ZWlzIHBlcnRlbmNlbSBhIHF1YWlzIGZhdG9yZXMsIGUgZW0gcXVlIGV4dGVuc8OjbyBvcyB0ZXN0ZXMgb3UgdmFyacOhdmVpcyBwZXJ0ZW5jZW0gYS9vdSBlc3TDo28gc2F0dXJhZG9zIGNvbSBvIHF1ZSBxdWVyIHF1ZSBzZWphIG8gZmF0b3IuIA0KDQpBc3NpbSwgbmEgQUYgdW1hIHNpdHVhw6fDo28sIGNvbSBpbsO6bWVyYXMgdmFyacOhdmVpcyAoJFhfezF9LCBYX3syfSwuLi4sIFhfe3B9JCksIMOpIGV4cGxpY2FkYSBhIHBhcnRpciBkZSBkaW1lbnPDtWVzIGVzY29uZGlkYXMgKGZhdG9yZXM6ICRGX3sxfSwgRl97Mn0sIEZfezN9JCkuIEEgRmlndXJhIDEgZGVtb25zdHJhIGdyYWZpY2FtZW50ZSBvIGVzcXVlbWEgZ2VyYWwgZGEgYW7DoWxpc2UgZGUgZmF0b3Jlcy4NCg0KOjo6IHByb2dyZXNzDQo6Ojogey5wcm9ncmVzcy1iYXIgc3R5bGU9IndpZHRoOiAxMDAlOyJ9DQo6OjoNCjo6Og0KDQojIyAqKk1vZGVsbyBFc3RhdMOtc3RpY28gLSBBRioqDQoNCk8gbW9kZWxvIGVzdGF0w61zdGljbyB1c2FkbyBuYSBhbsOhbGlzZSBmYXRvcmlhbCBleHBsaWNhIHVtYSBlc3RydXR1cmEgZGUgY29ycmVsYcOnw6NvIGV4aXN0ZW50ZSBlbnRyZSB1bSBjb25qdW50byBkZSBpbmZvcm1hw6fDtWVzLCBkaXJldGFtZW50ZSBvYnNlcnZhZG8gcG9yIG1laW8gZGUgY29tYmluYcOnw6NvIGxpbmVhciBkZSB2YXJpw6F2ZWlzLCBhcyBxdWFpcyBuw6NvIHPDo28gZGlyZXRhbWVudGUgb2JzZXJ2YWRhcywgZGVub21pbmFkb3MgZmF0b3JlcyBjb211bnMsIGFjcmVzY2lkYXMgZGUgY29tcG9uZW50ZSByZXNpZHVhbC4gVW0gbW9kZWxvIGRlIGFuw6FsaXNlIGZhdG9yaWFsIHBvZGUgc2VyIGFwcmVzZW50YWRvIG5hIHNlZ3VpbnRlIGZvcm1hIGNvbmZvcm1lICgqKkRJTExPTiBlIEdPTERTVEVJTiwgMTk4NCoqKS4NCg0KU2VqYW0gIHZhcmnDoXZlaXMgYWxlYXTDs3JpYXMsIG0gZmF0b3JlcyBjb211bnM7IG08cC4NCg0KDQokJCAgWF97aX0gPSBcc3VtX3tqPTF9XnttfSBcbGFtYmRhX3tpan0gRl97an0gKyBcZXBzaWxvbl97aX0gJCQNCg0KRW0gcXVlOiANCg0KJFhfe2l9JCA9IHZhcmnDoXZlaXMgb3JpZ2luYWlzIG91IG9ic2VydmFkYXM7DQoNCiRcbGFtYmRhX3tpan0kID0gQ2FyZ2FzIGZhdG9yaWFpcyBkYSBpLcOpc2ltYSB2YXJpw6F2ZWwgbm8gai3DqXNpbW8gZmF0b3IgY29tdW0gZSByZWZsZXRlbSBhIGltcG9ydMOibmNpYSBkbyBqLcOpc2ltbyBmYXRvciBuYSBjb21wb3Npw6fDo28gZGEgaS3DqXNpbWEgdmFyacOhdmVsLg0KDQokRl97an0kID0gdmFyacOhdmVpcyBuw6NvLW9ic2VydsOhdmVpcyBvdSB2YXJpw6F2ZWlzIGxhdGVudGVzIGNoYW1hZGFzIGRlIGZhdG9yZXMgY29tdW5zOw0KDQokXGVwc2lsb25fe2l9JCAgPSBGYXRvcmVzIGVzcGVjw61maWNvcyBxdWUgZGVzY3JldmVtIGEgdmFyaWHDp8OjbyByZXNpZHVhbCBlc3BlY8OtZmljYSBkYSBpLcOpc2ltYSB2YXJpw6F2ZWwgKHJlc8OtZHVvIHF1ZSBhZmV0YSBzb21lbnRlICRYX3tpfSQpLiDDiSBhIHBhcnRlIGRhIHZhcmnDoXZlbCAkWF97aX0kIHF1ZSBuw6NvIMOpIGV4cGxpY2FkYSBwZWxvcyBmYXRvcmVzIGNvbXVucy4NCg0KOjo6IHByb2dyZXNzDQo6Ojogey5wcm9ncmVzcy1iYXIgc3R5bGU9IndpZHRoOiAxMDAlOyJ9DQo6OjoNCjo6Og0KDQojIyAqKkNvbXVuYWxpZGFkZXMqKg0KDQpBIHBvcsOnw6NvIGRhIHZhcmnDom5jaWEgcXVlIGEgdmFyacOhdmVsIGNvbnRyaWJ1aSBwYXJhIG8gZmF0b3IgY29tdW0gbSDDqSBjaGFtYWRhIGRlIGNvbXVuYWxpZGFkZS4gQSBwb3LDp8OjbyBkYSB2YXJpw6JuY2lhIFZhcihYKT0gJFxzaWdtYV57Mn0kIGRldmlkbyBhbyBmYXRvciBlc3BlY8OtZmljbywgY2hhbWEtc2UgZXNwZWNpZmljaWRhZGUgb3UgdmFyacOibmNpYSBlc3BlY8OtZmljYS4gDQoNCkVudMOjbyB0ZW0tc2UgcXVlIEEgdmFyacOibmNpYSBkZSBjYWRhIHZhcmnDoXZlbCAkWF97aX0kIMOpIGEgc29tYSBkYXMgQ29tdW5hbGlkYWRlcyAkaF97aX1eezJ9JCBjb20gc3VhcyByZXNwZWN0aXZhcyBlc3BlY2lmaWNpZGFkZXMgb3UgdmFyacOibmNpYSBlc3BlY8OtZmljYSAkXHBzaV97aX0kLiANCg0KDQokJFx1bmRlcmJyYWNle1xzaWdtYV97aWp9fV97XG1ib3h7VmFyfSAoWF97aX0pfSA9IFx1bmRlcmJyYWNle2xeezJ9X3tpMX0rbF57Mn1fe2kyfStcbGRvdHMrbF57Mn1fe2ltfX1fe1xtYm94e0NvbXVuYWxpZGFkZXN9fSAgK1x1bmRlcmJyYWNle1xwc2lfe2l9fV97XG1ib3h7VmFyaWFuY2lhIEVzcGVjaWZpY2F9fSQkDQpEZW5vdGFuZG8tc2UgYSBpLcOpc2ltYSBjb211bmFsaWRhZGUgcG9yICRoX3tpfV57Mn0kIHRlbS1zZToNCg0KDQokJGhfe2lqfV57Mn0gPSAgbF57Mn1fe2kxfStsXnsyfV97aTJ9K1xsZG90cytsXnsyfV97aW19ID0gXHN1bV97aWp9XnttfSBsXnsyfV97aWp9IFwgXCBcIFwgXCBjb20gXCBcIFwgXCBpPTEsMiwuLi4scCAkJCANCg0KRW50w6NvOg0KDQoNCiQkIFxzaWdtYV97aWp9ICA9IGhfe2l9XnsyfSArIFxwc2lfe2l9JCQNCg0KQSBpLcOpc2ltYSBjb211bmFsaWRhZGUgw6kgYSBzb21hIGRvcyBxdWFkcmFkb3MgZG9zIGNhcnJlZ2FtZW50b3MgZGEgaS3DqXNpbWEgdmFyacOhdmVsIGNvbSBtIGZhdG9yZXMgY29tdW5zLiBQb3J0YW50byBhcyBjb211bmFsaWRhZGVzIHPDo28gYXMgbWFpb3JlcyBwYXJjZWxhcyBkbyB0b3RhbCBkYSB2YXJpw6JuY2lhIGRlIHVtYSB2YXJpw6F2ZWwgJFhfe2l9JC4gQSBzZWd1bmRhIHBhcmNlbGEgw6kgcHJvdmVuaWVudGUgZGEgdmFyacOibmNpYSBlc3BlY8OtZmljYSBkZSBjYWRhIHZhcmnDoXZlbCwgcmVwcmVzZW50YWRhIHBvciAkXHBzaSQuIFF1YW50byBtYWlzIGEgY29tdW5hbGlkYWRlIHNlIGFwcm94aW1hciBkZSAxLCBtZWxob3Igc2Vyw6EgbyBtb2RlbG8gZmF0b3JpYWwuIEF1dG9yZXMgY29uc2lkZXJhbSBib2EgY29tdW5hbGlkYWRlIHZhbG9yZXMgYWNpbWEgZGUgMCw3MC4NCg0KOjo6IHByb2dyZXNzDQo6Ojogey5wcm9ncmVzcy1iYXIgc3R5bGU9IndpZHRoOiAxMDAlOyJ9DQo6OjoNCjo6Og0KDQojIyAqKlByaW5jaXBhaXMgRXRhcGFzIHBhcmEgQXBsaWNhw6fDo28gLSBBRioqDQoNCkEgYW7DoWxpc2UgZmF0b3JpYWwgcG9zc3VpLCBiYXNpY2FtZW50ZSwgb2l0byBldGFwYXMgcGFyYSBhIHN1YSBlbGFib3Jhw6fDo28gcXVlIHPDo286DQoNCi0gICAqKkZvcm11bGFyIG8gUHJvYmxlbWEqKjogRm9ybXVsYcOnw6NvIGRvIHByb2JsZW1hIGRhIGFuw6FsaXNlIGZhdG9yaWFsIGUgaWRlbnRpZmljYcOnw6NvIGRhcyB2YXJpw6F2ZWlzIG9yaWdpbmFpcyBxdWUgc2Vyw6NvIGludmVzdGlnYWRhcyBwYXJhIHJlc3VtbyBvdSByZWR1w6fDo28gZG9zIGRhZG9zLg0KDQotICAgKipDw6FsY3VsbyBkYSBNYXRyaXogZGUgQ29ycmVsYcOnw6NvKio6IEPDoWxjdWxvIGRhIG1hdHJpeiBkZSBjb3JyZWxhw6fDo28gZGFzIHZhcmnDoXZlaXMgZW0gZXN0dWRvIHBhcmEgYSB2ZXJpZmljYcOnw6NvIGRvIGdyYXUgZGUgYXNzb2NpYcOnw6NvIGVudHJlIGFzIHZhcmnDoXZlaXMuIFBhcmEgdGVzdGFyIGEgY29udmVuacOqbmNpYSBkbyBtb2RlbG8gZmF0b3JpYWwsIHBvZGUtc2UgYXBsaWNhciBvIHRlc3RlIGRlIGVzZmVyaWNpZGFkZSBkZSBCYXJ0bGV0dCBwYXJhIHRlc3RhciBhIGhpcMOzdGVzZSBudWxhIGRlIHF1ZSBhcyB2YXJpw6F2ZWlzIG7Do28gc2VqYW0gY29ycmVsYWNpb25hZGFzIG5hIHBvcHVsYcOnw6NvLCBvdSBzZWphLCBxdWUgYSBtYXRyaXogZGUgY29ycmVsYcOnw6NvIGRhIHBvcHVsYcOnw6NvIMOpIHVtYSBtYXRyaXogZGUgaWRlbnRpZGFkZS4gT3V0cmEgZXN0YXTDrXN0aWNhIHV0aWxpemFkYSBwb2RlIHNlciBhIG1lZGlkYSBkZSBhZGVxdWFjaWRhZGUgZGEgYW1vc3RyYSBkZSBLYWlzZXItTWV5ZXItT2xraW4gKEtNTyksIHVtIMOtbmRpY2UgdXNhZG8gcGFyYSBhdmFsaWFyIGEgbWVkaWRhIGRlIGFkZXF1YWNpZGFkZSBkYSBhbW9zdHJhIGRhIGFuw6FsaXNlIGZhdG9yaWFsLiBWYWxvcmVzIGFsdG9zIChlbnRyZSAwLDUgZSAxLDApIGluZGljYW0gcXVlIGEgYW7DoWxpc2UgZmF0b3JpYWwgw6kgYXByb3ByaWFkYS4gQXNzaW0sIGEgcGFydGlyIGRlIHVtYSBhbsOhbGlzZSBkYSBtYXRyaXogZGUgY29ycmVsYcOnw6NvIGRhcyBkaXZlcnNhcyB2YXJpw6F2ZWlzLCDDqSBwb3Nzw612ZWwgb2J0ZXIgaW5kaWNhZG9yZXMgc2ludMOpdGljb3MsIG91LCB1dGlsaXphbmRvIG8gdGVybW8gdMOpY25pY28sIGVzY29yZXMgZmF0b3JpYWlzLCBxdWUgY29uc2lzdGVtIG51bWEgY29tYmluYcOnw6NvIGxpbmVhciBkYXMgdmFyacOhdmVpcyBvcmlnaW5haXMgcXVlIGFzIHNpbnRldGl6YW0gZSBleHBsaWNhbSAoS0FJU0VSIEUgUklDRSwgMTk3NCwgU1BTUywgMTk5OSkuDQoNCi0gICAqKk3DqXRvZG8gZGUgQW7DoWxpc2UqKjogRXNjb2xoYSBkbyBtw6l0b2RvIGRlIGFuw6FsaXNlIGZhdG9yaWFsIG1haXMgYXByb3ByaWFkbyBwYXJhIGV4dHJhw6fDo28gZG9zIGZhdG9yZXMgYSBzZXJlbSB1dGlsaXphZG9zIGV4aXN0ZW0gdsOhcmlvcyBkZW50cmUgb3MgbWFpcyB1c3VhaXMgc8OjbzogTcOpdG9kbyBkZSBDb21wb25lbnRlcyBQcmluY2lwYWlzLCBNw6l0b2RvIGRlIEFuw6FsaXNlIEZhdG9yaWFsIENvbXVtIGUgTcOpdG9kbyBkZSBNw6F4aW1hIFZlcm9zc2ltaWxoYW7Dp2EuDQoNCi0gICAqKkV4dHJhaXIgRmF0b3JlcyBJbmljaWFpcyoqOiBFeHRyYcOnw6NvIGRvcyBmYXRvcmVzIChjYXJnYXMgZmF0b3JpYWlzKSBtYWlzIHNpZ25pZmljYXRpdm9zIHF1ZSByZXByZXNlbnRhcsOjbyBvcyBkYWRvcywgYXRyYXbDqXMgZG8gbcOpdG9kbyBtYWlzIGFkZXF1YWRvLiBQb2RlbSBzZXI6IGEgcHJpb3JpLCBjb20gYmFzZSBlbSBhdXRvdmFsb3JlcywgY29tIGJhc2UgZW0gdW0gZ3LDoWZpY28gZGUgRGVjbGl2ZSAoU2NyZWUgUGxvdCksIG5hIHBlcmNlbnRhZ2VtIGRhIHZhcmnDom5jaWEuIEFxdWkgc2Ugc2FiZSBvIHF1w6NvIGJlbSBvIG1vZGVsbyByZXByZXNlbnRhIG9zIGRhZG9zIChIQUlSIGV0LiBhbCwgMjAwNSkuDQoNCi0gICAqKlJvdGHDp8OjbyBkb3MgRmF0b3JlcyoqOiBBcGxpY2FyIGFsZ3VtIHRpcG8gZGUgcm90YcOnw6NvIG5vcyBmYXRvcmVzIHBhcmEgZmFjaWxpdGFyIG8gZW50ZW5kaW1lbnRvIGRvcyBtZXNtb3MuIFBvZGVtIHNlcjogb3J0b2dvbmFsLCBxdWFuZG8gb3MgZWl4b3Mgc8OjbyBtYW50aWRvcyBlbSDDom5ndWxvIHJldG8gZSByb3Rhw6fDo28gb2Jsw61xdWEsIHF1YW5kbyBvcyBlaXhvcyBuw6NvIHPDo28gbWFudGlkb3MgZW0gw6JuZ3VsbyByZXRvLiAoR2VyYWxtZW50ZSwgdXRpbGl6YS1zZSByb3Rhw6fDo28gcGFyYSB0cmFuc2Zvcm1hciBhIG1hdHJpeiBkZSBmYXRvcmVzIGVtIHVtYSBtYXRyaXogbWFpcyBzaW1wbGVzIGUgbWFpcyBmw6FjaWwgZGUgaW50ZXJwcmV0YXIuIE8gbcOpdG9kbyBkZSByb3Rhw6fDo28gbWFpcyBjb211bWVudGUgdXNhZG8gw6kgbyBwcm9jZXNzbyB2YXJpbWF4IHF1ZSBvYmpldGl2YSBkaW1pbnVpciBvIG7Dum1lcm8gZGUgdmFyacOhdmVpcyBjb20gY2FyZ2FzIGZhdG9yaWFpcyBhbHRhcyBlbSB1bSBzw7MgZmF0b3IsIHJlc3VsdGFuZG8gZW0gZmF0b3JlcyBvcnRvZ29uYWlzLiBTZSBow6EgZmF0b3JlcyBhbHRhbWVudGUgY29ycmVsYWNpb25hZG9zIG5hIHBvcHVsYcOnw6NvIHBlc3F1aXNhZGEsIHBvZGUtc2UgdXNhciBhIHJvdGHDp8OjbyBvYmzDrXF1YSkuDQoNCi0gICAqKkludGVycHJldGHDp8OjbyBkZSBGYXRvcmVzKio6IMOJIGZhY2lsaXRhZGEgYXRyYXbDqXMgZGEgaWRlbnRpZmljYcOnw6NvIGRhcyB2YXJpw6F2ZWlzIHF1ZSBhcHJlc2VudGFtIGdyYW5kZXMgY2FyZ2FzIHNvYnJlIG8gbWVzbW8gZmF0b3IuIE8gZmF0b3IgcG9kZSBlbnTDo28gc2VyIGludGVycHJldGFkbyBlbSB0ZXJtb3MgZGFzIHZhcmnDoXZlaXMgcXVlIG8gcGVzYW0gZm9ydGVtZW50ZQ0KDQotICAgKipDw6FsY3VsbyBkb3MgRXNjb3JlcyBGYXRvcmlhaXMqKjogRXNjb3JlcyBmYXRvcmlhaSBzw6NvIGVzdGltYWRvcyBwYXJhIGNhZGEgb2JzZXJ2YcOnw6NvIG5vcyBmYXRvcmVzIGRlcml2YWRvcy4gQSByZWR1w6fDo28gZGUgZGFkb3MgcG9kZSBzZXIgY29uc2VndWlkYSBjYWxjdWxhbmRvIGVzY29yZXMgcGFyYSBjYWRhIGRpbWVuc8OjbyBsYXRlbnRlIGUgc3Vic3RpdHVpbmRvIGFzIHZhcmnDoXZlaXMgb3JpZ2luYWlzIHBlbG9zIG1lc21vcy4gQSBhbsOhbGlzZSBmYXRvcmlhbCBwb2RlIGF1eGlsaWFyIG5hIHNlbGXDp8OjbyBkZSB1bSBzdWJjb25qdW50byByZXByZXNlbnRhdGl2byBkZSB2YXJpw6F2ZWlzIG91IG1lc21vIGRhIGNyaWHDp8OjbyBkZSBub3ZhcyB2YXJpw6F2ZWlzIGNvbW8gc3Vic3RpdHV0YXMgZGFzIHZhcmnDoXZlaXMgb3JpZ2luYWlzLCBlIGFpbmRhIG1hbnRlbmRvIHNldSBjYXLDoXRlciBvcmlnaW5hbC4gDQoNCi0gICAqKkRldGVybWluYcOnw6NvIGRvIEFqdXN0ZSBkbyBNb2RlbG8qKjogQXMgZGlmZXJlbsOnYXMgZW50cmUgYXMgY29ycmVsYcOnw7VlcyBvYnNlcnZhZGFzIChtYXRyaXogZGUgZW50cmFkYSkgZSBhcyBjb3JyZWxhw6fDtWVzIHJlcHJvZHV6aWRhcyAoZXN0aW1hZGEgY29tIGJhc2UgbmEgbWF0cml6IGRlIGZhdG9yZXMpIHPDo28gY2hhbWFkYXMgZGUgcmVzw61kdW9zIGUgc2UgaMOhIG11aXRvcyByZXPDrWR1b3MgZ3JhbmRlcywgbyBtb2RlbG8gZmF0b3JpYWwgbsOjbyBkw6EgdW0gYm9tIGFqdXN0ZSBhb3MgZGFkb3MsIGUgZGV2ZSBzZXIgcmVjb25zaWRlcmFkby4NCg0KOjo6IHByb2dyZXNzDQo6Ojogey5wcm9ncmVzcy1iYXIgc3R5bGU9IndpZHRoOiAxMDAlOyJ9DQo6OjoNCjo6Og0KDQojIyAqKk3DqXRvZG8gZGUgRXh0cmHDp8OjbyBkb3MgRmF0b3JlcyoqDQoNCkjDoSBuYSBsaXRlcmF0dXJhIHbDoXJpb3MgbcOpdG9kb3MgcGFyYSBhIGVzdGltYcOnw6NvIGRlIGZhdG9yZXMgdGFpcyBjb21vOiANCg0KLSAgICoqTWV0aG9kIFVud2VpZ2h0ZWQgTGVhc3QgU3F1YXJlcyoqOiB1bSBkb3MgbcOpdG9kb3MgZGUgZXh0cmHDp8OjbyBxdWUgbWluaW1pemEgYSBzb21hIGRhcyBkaWZlcmVuw6dhcyBxdWFkcsOhdGljYXMgZW50cmUgYSBtYXRyaXogZGUgZGFkb3MgZSBhIG1hdHJpeiBkZSBjb3JyZWxhw6fDo28gcmVwcm9kdXppZGEsIGlnbm9yYW5kbyBhcyBkaWFnb25haXMuDQotICAgKipNZXRob2QgR2VuZXJhbGl6ZWQgTGVhc3QgU3F1YXJlcyoqOiBpZGVtIGFvIGFudGVyaW9yLCBtYXMgbmVzdGUgY2FzbyBhIGNvcnJlbGHDp8OjbyDDqSBwZXNhZGEgcGVsbyBpbnZlcnNvIGRhcyBzdWFzIHNpbmd1bGFyaWRhZGVzLCBhc3NpbSBjb21vIGFzIHZhcmnDoXZlaXMgY29tIGFsdGFzIHNpbmd1bGFyaWRhZGVzIHPDo28gdG9tYWRhcyBjb20gcGVzbyBtZW5vciBxdWUgYXF1ZWxhcyBjb20gbWVub3Igc2luZ3VsYXJpZGFkZXMuDQotICAgKipNZXRob2QgTWF4aW11biBMaWtlbGlob29kKio6IGVzdGUgY3JpYSBwYXLDom1ldHJvcyBlc3RpbWFkb3MgY29tbyBzZW5kbyBtYWlzIHByb3bDoXZlaXMgcGFyYSBwcm9kdXppciBhIG1hdHJpeiBkZSBjb3JyZWxhw6fDo28gb2JzZXJ2YWRhLCBzZSBhIGFtb3N0cmEgcG9kZSBzZXIgY2FyYWN0ZXJpemFkYSBwb3IgdW1hIGRpc3RyaWJ1acOnw6NvIG5vcm1hbCBtdWx0aXZhcmlhZGEuIEFzIGNvcnJlbGHDp8O1ZXMgc8OjbyBwZXNhZGFzIHBlbG8gaW52ZXJzbyBkYXMgc2luZ3VsYXJpZGFkZXMgZGFzIHZhcmnDoXZlaXMsIHBlbG8gZW1wcmVnbyBkZSB1bSBhbGdvcml0bW8g4oCcaXRlcmF0aXZv4oCdLiANCi0gICAqKk1ldGhvZCBQcmluY2lwYWwgQXhpcyBGYWN0b3JpbmcqKjogcGFydGUgZGEgbWF0cml6IGRlIGNvcnJlbGHDp8OjbyBvcmlnaW5hbCBjb20gb3MgY29lZmljaWVudGVzIGRlIGNvcnJlbGHDp8O1ZXMgbcO6bHRpcGxvcyBjb2xvY2Fkb3MgbmEgZGlhZ29uYWwgY29tbyBlc3RpbWF0aXZhcyBpbmljaWFpcyBkYXMgY29tdW5hbGlkYWRlcy4gDQotICAgKipNZXRob2QgUHJpbmNpcGFsIENvbXBvbmVudHMqKjogw6kgdXNhZGEgcGFyYSBvYnRlciB1bWEgY29tYmluYcOnw6NvIGxpbmVhciBuw6NvLWNvcnJlbGF0YSBkYXMgY29tYmluYcOnw7VlcyBkYXMgdmFyacOhdmVpcyBtZW5zdXJhZGFzLCBvYnRlbmRvLXNlIGFzIHNvbHXDp8O1ZXMgZG9zIGZhdG9yZXMsIGVsYSBwb2RlIHNlciB1c2FkYSBxdWFuZG8gYSBtYXRyaXogZGUgY29ycmVsYcOnw6NvIMOpIHNpbmd1bGFyLiANCi0gICAqKk1ldGhvZCBBbHBoYSBGYWN0b3JpbmcqKjogw6kgdW0gbcOpdG9kbyBkZSBleHRyYcOnw6NvIHF1ZSBjb25zaWRlcmEgYXMgdmFyacOhdmVpcyBuYSBhbsOhbGlzZSBjb21vIHVtYSBhbW9zdHJhIGRvIHVuaXZlcnNvIHBvdGVuY2lhbCBkZSB2YXJpw6F2ZWlzLiBFbGUgbWF4aW1pemEgYSBjb25maWFiaWxpZGFkZSBvdSBmaWRlZGlnbmlkYWRlIGFsZmEgKGRlIENyb25iYWNoKSBkb3MgZmF0b3Jlcw0KLSAgICoqTWV0aG9kIEltYWdlIEZhY3RvcmluZyoqOiDDqSB1bSBtw6l0b2RvIGZhdG9yaWFsIGRlIGV4dHJhw6fDo28gZGVzZW52b2x2aWRvIHBvciBHdXR0bWFuIGUgZXN0w6EgYmFzZWFkbyBuYSBUZW9yaWEgZGUgSW1hZ2Vucy4gQSBwYXJ0ZSBjb211bSBkYSB2YXJpw6JuY2lhLCBjaGFtYWRhIGRlIGltYWdlbSBwYXJjaWFsLCDDqSBkZWZpbmlkYSBjb21vIHVtYSByZWdyZXNzw6NvIGxpbmVhciBzb2JyZSBhcyByZXN0YW50ZXMsIHByZWZlcml2ZWxtZW50ZSBxdWUgYSBmdW7Dp8OjbyBkb3MgZmF0b3JlcyBoaXBvdMOpdGljb3MuDQoNCjo6OiBwcm9ncmVzcw0KOjo6IHsucHJvZ3Jlc3MtYmFyIHN0eWxlPSJ3aWR0aDogMTAwJTsifQ0KOjo6DQo6OjoNCg0KIyMgKipNw6l0b2RvIGRlIFJvdGHDp8OjbyBkb3MgRmF0b3JlcyoqDQoNClVtYSBmZXJyYW1lbnRhIGltcG9ydGFudGUgbmEgaW50ZXJwcmV0YcOnw6NvIGRlIGZhdG9yZXMgw6kgYSAqKnJvdGHDp8OjbyBmYXRvcmlhbCoqLiBPIHRlcm1vIHJvdGHDp8OjbyBzaWduaWZpY2EgZXhhdGFtZW50ZSBvIHF1ZSBzdWdlcmUuIEVzcGVjaWZpY2FtZW50ZSwgb3MgZWl4b3MgZGUgcmVmZXLDqm5jaWEgZG9zIGZhdG9yZXMgc8OjbyByb3RhY2lvbmFkb3MgZW0gdG9ybm8gZGEgb3JpZ2VtIGF0w6kgcXVlIGFsZ3VtYSBvdXRyYSBwb3Npw6fDo28gc2VqYSBhbGNhbsOnYWRhLiBBcyBzb2x1w6fDtWVzIGRlIGZhdG9yZXMgbsOjby1yb3RhY2lvbmFkYXMgZXh0cmFlbSBmYXRvcmVzIG5hIG9yZGVtIGRlIHN1YSBpbXBvcnTDom5jaWEuIA0KDQpPIHByaW1laXJvIGZhdG9yIHRlbmRlIGEgc2VyIHVtIGZhdG9yIGdlcmFsIGNvbSBxdWFzZSB0b2RhIGEgdmFyacOhdmVsIGNvbSBjYXJnYSBzaWduaWZpY2F0aXZhLCBlIGV4cGxpY2EgYSBxdWFudGlhIG1haW9yIGRlIHZhcmnDom5jaWEuIE8gc2VndW5kbyBmYXRvciBlIG9zIHNlZ3VpbnRlcyBzw6NvIGVudMOjbyBiYXNlYWRvcyBuYSBxdWFudGlhIHJlc2lkdWFsIGRlIHZhcmnDom5jaWEuIENhZGEgZmF0b3IgZXhwbGljYSBwb3LDp8O1ZXMgc3VjZXNzaXZhbWVudGUgbWVub3JlcyBkZSB2YXJpw6JuY2lhLiBPIGVmZWl0byBmaW5hbCBkZSByb3RhY2lvbmFyIGEgbWF0cml6IGZhdG9yaWFsIMOpIHJlZGlzdHJpYnVpciBhIHZhcmnDom5jaWEgZG9zIHByaW1laXJvcyBmYXRvcmVzIHBhcmEgb3Mgw7psdGltb3MgY29tIG8gb2JqZXRpdm8gZGUgYXRpbmdpciB1bSBwYWRyw6NvIGZhdG9yaWFsIG1haXMgc2ltcGxlcyBlIHRlb3JpY2FtZW50ZSBtYWlzIHNpZ25pZmljYXRpdm8uDQoNCk8gY2FzbyBtYWlzIHNpbXBsZXMgZGUgcm90YcOnw6NvIMOpIHVtYSAqKlJvdGHDp8OjbyBPcnRvZ29uYWwqKiwgbmEgcXVhbCBvcyBlaXhvcyBzw6NvIG1hbnRpZG9zIGEgOTDCui4gVGFtYsOpbSDDqSBwb3Nzw612ZWwgcm90YWNpb25hciBvcyBlaXhvcyBzZW0gbWFudGVyIG8gw6JuZ3VsbyBkZSA5MCBncmF1cyBlbnRyZSBvcyBlaXhvcyBkZSByZWZlcsOqbmNpYS4gUHJvY2VkaW1lbnRvIGRlIHJvdGHDp8OjbyBzZSBjaGFtYSAqKlJvdGHDp8OjbyBPYmzDrXF1YSouIA0KDQojIyMgKipSb3Rhw6fDo28gT3J0b2dvbmFsIGRvcyBGYXRvcmVzKioNCg0KUGFyYSByb3Rhw6fDo28gb3J0b2dvbmFsIGRvcyBmYXRvcmVzIGV4aXN0ZW0gdsOhcmlvcyB0aXBvcyBuYSBsaXRlcmF0dXJhIGNvbW86ICoqVmFyaW1heCoqIChtYWlzIHVzYWRvKSBxdWUgw6kgdW0gbcOpdG9kbyBkZSByb3Rhw6fDo28gb3J0b2dvbmFsIHF1ZSBtaW5pbWl6YSBvIG7Dum1lcm8gZGUgdmFyacOhdmVpcyBxdWUgY2FkYSBhZ3J1cGFtZW50byB0ZXLDoS4gRWxlIHNpbXBsaWZpY2EgYSBpbnRlcnByZXRhw6fDo28gZG9zIGZhdG9yZXMuIA0KDQoqKlF1YXJ0aW1heCoqIMOpIHVtIG3DqXRvZG8gcXVlIG1pbmltaXphIG8gbsO6bWVybyBkZSBmYXRvcmVzIG5lY2Vzc8OhcmlvcyBwYXJhIGV4cGxpY2FyIGNhZGEgdmFyacOhdmVsLiBFbGUgc2ltcGxpZmljYSBhIGludGVycHJldGHDp8OjbyBkYXMgdmFyacOhdmVpcyBvYnRpZGFzLiANCg0KTyAqKkVxdWFtYXgqKiDDqSB0YW1iw6ltIHVtIG3DqXRvZG8gcXVlIGJ1c2NhIHVtYSBjb21iaW5hw6fDo28gZG9zIG91dHJvcyAodmFyaW1heCBlIHF1YXJ0aW1heCkuIE8gbsO6bWVybyBkZSB2YXJpw6F2ZWlzIG9idGlkbyB0ZXLDoSBjYXJnYSBmYXRvcmlhbCBtYWlvciBlIG8gbsO6bWVybyBkZSBmYXRvcmVzIHNlcsOhIG1pbmltaXphZG8uDQoNCiMjIyMgKipSb3Rhw6fDo28gVmFyaW1heCoqDQoNCkEgcm90YcOnw6NvIHZhcmltYXggw6kgdW1hIGRhcyByb3Rhw6fDtWVzIG9ydG9nb25haXMgbWFpcyB1dGlsaXphZGFzIGVtIGFuw6FsaXNlIGZhdG9yaWFsLiBJbnR1aXRpdmFtZW50ZSwgZWxhIGJ1c2NhIHNvbHXDp8O1ZXMgbmFzIHF1YWlzIHNlIGJ1c2NhIG1heGltaXphciBhcyBjb3JyZWxhw6fDtWVzIGRlIGNhZGEgdmFyacOhdmVsIGNvbSBhcGVuYXMgdW0gZmF0b3IuDQoNCk8gbcOpdG9kbyB2YXJpbWF4IMOpIHVtIHByb2Nlc3NvIGVtIHF1ZSBvcyBlaXhvcyBkZSByZWZlcsOqbmNpYSBkb3MgZmF0b3JlcyBzw6NvIHJvdGFjaW9uYWRvcyBlbSB0b3JubyBkYSBvcmlnZW0gYXTDqSBxdWUgYWxndW1hIG91dHJhIHBvc2nDp8OjbyBzZWphIGFsY2Fuw6dhZGEuIEludHVpdGl2YW1lbnRlLCBlbGEgYnVzY2Egc29sdcOnw7VlcyBuYXMgcXVhaXMgc2UgYnVzY2EgbWF4aW1pemFyIGFzIGNvcnJlbGHDp8O1ZXMgZGUgY2FkYSB2YXJpw6F2ZWwgY29tIGFwZW5hcyB1bSBmYXRvci4gTyBvYmpldGl2byDDqSByZWRpc3RyaWJ1aXIgYSB2YXJpw6JuY2lhIGRvcyBwcmltZWlyb3MgZmF0b3JlcyBwYXJhIG9zIGRlbWFpcyBlIGF0aW5naXIgdW0gcGFkcsOjbyBmYXRvcmlhbCBtYWlzIHNpbXBsZXMgZSB0ZW9yaWNhbWVudGUgbWFpcyBzaWduaWZpY2F0aXZvIChSRUlTLCAyMDAxOyBIQUlSLCAyMDA1KS4NCg0KVmFyaW1heCDDqSB1bSB0aXBvIGRlIHJvdGHDp8OjbyBvcnRvZ29uYWwgbmEgcXVhbCBtYW50w6ltIG9zIGZhdG9yZXMgcGVycGVuZGljdWxhcmVzIGVudHJlIHNpLCBvdSBzZWphLCBzZW0gY29ycmVsYcOnw6NvIGVudHJlIGVsZXMuIMOIIG8gdGlwbyBkZSByb3Rhw6fDo28gbWFpcyB1dGlsaXphZG8gZSBxdWUgdGVtIGNvbW8gY2FyYWN0ZXLDrXN0aWNhIG8gZmF0byBkZSBtaW5pbWl6YXIgYSBvY29ycsOqbmNpYSBkZSB1bWEgdmFyacOhdmVsIHBvc3N1aXIgYWx0YXMgY2FyZ2FzIGZhdG9yaWFpcyBwYXJhIGRpZmVyZW50ZXMgZmF0b3JlcywgcGVybWl0aW5kbyBxdWUgdW1hIHZhcmnDoXZlbCBzZWphIGZhY2lsbWVudGUgaWRlbnRpZmljYWRhIGNvbW8gw7puaWNvIGZhdG9yIChDT1JSQVIgZXQgYWwsIDIwMDcpLg0KDQojIyMgKipSb3Rhw6fDo28gT2Jsw61xdWEgZG9zIEZhdG9yZXMqKg0KDQpQYXJhIHJvdGHDp8OjbyBvYmzDrXF1YSBkb3MgZmF0b3JlcyBjaXRhLXNlOiAqKkRpcmVjdCBPYmxpbWluKiogdW0gbcOpdG9kbyBkaWZlcmVudGVtZW50ZSBkb3MgdHLDqnMgYW50ZXJpb3JlcyDDqSBvYmzDrXF1byAobsOjbyBvcnRvZ29uYWwpLiBRdWFuZG8gZGVsdGEgw6kgaWd1YWwgYSAwIChkZWZhdWx0KSwgYSBzb2x1w6fDo28gw6kgbWFpcyBvYmzDrXF1YS4gVG9tYW5kby1zZSBkZWx0YSBtYWlzIG5lZ2F0aXZvLCBvcyBmYXRvcmVzIGZpY2FyYW0gbWVub3Mgb2Jsw61xdW9zLiBJZ25vcmFuZG8tc2UgbyBkZWZhdWx0IGRlbHRhIGRlIDAsIGRldmUtc2UgdXNhciB1bSBuw7ptZXJvIG1lbm9yIG91IGlndWFsIGEgMCw4LiANCg0KTyAqKlByb21heCoqIHRhbWLDqW0gw6kgdW0gbcOpdG9kbyBvYmzDrXF1byBkZSByb3Rhw6fDo28sIG8gcXVhbCBwb3NzaWJpbGl0YSAgb3MgZmF0b3JlcyBjb3JyZWxhdG9zLiBFbGUgcG9kZSBzZXIgY2FsY3VsYWRvIG1haXMgcmFwaWRhbWVudGUgcXVlIGEgcm90YcOnw6NvIGRpcmVjdCBvYmxpbWluLiBBc3NpbSBlbGUgw6kgdXNhZG8gcGFyYSBncmFuZGVzIGdydXBvcyBkZSBkYWRvcy4gS2FwcGEgbmEgbWFpb3JpYSBkYXMgdmV6ZXMgw6kgdG9tYWRvIGNvbSBvIHZhbG9yIDQuIEV4aXN0ZW0gb3V0cm9zIG3DqXRvZG9zIGRlIHJvdGHDp8OjbyBvYmzDrXF1YSBuYSBsaXRlcmF0dXJhIGNvbW86IA0KDQotICAgKipDb3ZhcmltaW4qKjsNCi0gICAqKk9ibGltYXgqKjsNCi0gICAqKlF1YXJ0aW1pbioqDQoNCm1hcyBxdWUgbsOjbyBzw6NvIHTDo28gdXNhZG9zIGNvbW8gb3MgYW50ZXJpb3JlcyBtZW5zaW9uYWRvcy4NCg0KT3MgbWVzbW9zIHByaW5jw61waW9zIGdlcmFpcyBkZSByb3Rhw6fDtWVzIG9ydG9nb25haXMgc8OjbyBhcGxpY8OhdmVpcyBhIHJvdGHDp8O1ZXMgb2Jsw61xdWFzLiBPIG3DqXRvZG8gZGUgcm90YcOnw6NvIG9ibMOtcXVhIMOpIG1haXMgZmxleMOtdmVsLCBwb2lzIG9zIGVpeG9zIGZhdG9yaWFpcyBuw6NvIHByZWNpc2FtIHNlciBvcnRvZ29uYWlzLiBBbMOpbSBkaXNzbywgw6kgbWFpcyByZWFsaXN0YSBwb3JxdWUgYXMgZGltZW5zw7VlcyBpbmVyZW50ZXMgcXVlIHPDo28gdGVvcmljYW1lbnRlIGltcG9ydGFudGVzIG7Do28gc8OjbyBzdXBvc3RhcyBzZW0gY29ycmVsYcOnw7VlcyBlbnRyZSBzaS4gQSBzb2x1w6fDo28gb2Jsw61xdWEgZm9ybmVjZSBpbmZvcm1hw6fDtWVzIHNvYnJlIG8gZ3JhdSBlbSBxdWUgb3MgZmF0b3JlcyByZWFsbWVudGUgZXN0w6NvIGNvcnJlbGFjaW9uYWRvcyB1bSBjb20gbyBvdXRyby4NCg0KDQoNCjo6OiBwcm9ncmVzcw0KOjo6IHsucHJvZ3Jlc3MtYmFyIHN0eWxlPSJ3aWR0aDogMTAwJTsifQ0KOjo6DQo6OjoNCg0KIyMgKipNw6l0b2RvcyBkZSBFc2NvbGhhIGRvIE7Dum1lcm8gZGUgRmF0b3JlcyoqIA0KDQoNCkEgZXNjb2xoYSBkbyBuw7ptZXJvIGRlIGZhdG9yZXMgw6kgdW1hIGRhcyB0YXJlZmFzIG1haXMgaW1wb3J0YW50ZSBkZSB1bWEgYW7DoWxpc2UgZmF0b3JpYWwuIFF1YW5kbyBvIHBlc3F1aXNhZG9yIG9wdGEgcG9yIHVtIG7Dum1lcm8gbXVpdG8gcmVkdXppZG8sIGVsZSBwb2RlIG7Do28gaWRlbnRpZmljYXIgZXN0cnV0dXJhcyBpbXBvcnRhbnRlcyBleGlzdGVudGVzIG5vcyBkYWRvcyBlLCBwb3Igb3V0cm8gbGFkbywgc2UgbyBuw7ptZXJvIMOpIGV4Y2Vzc2l2bywgZWxlIHBvZGUgdmlyIGEgdGVyIHByb2JsZW1hcyBkZSBpbnRlcnByZXRhw6fDo28gZG9zIGZhdG9yZXMuIEV4aXN0ZW0sIG5hIGxpdGVyYXR1cmEsIHbDoXJpb3MgY3JpdMOpcmlvcyBxdWUgYXV4aWxpYW0gbmEgZGV0ZXJtaW5hw6fDo28gZG8gbsO6bWVybyBkZSBmYXRvcmVzIHF1ZSwgaW52YXJpYXZlbG1lbnRlLCBxdWFuZG8gZW1wcmVnYWRvcyBlbSB1bSBtZXNtbyBjb25qdW50byBkZSBkYWRvcywgY29uZHV6ZW0gYSByZXN1bHRhZG9zIGRpZmVyZW50ZXMgKCoqSEFJUiwgMTk5OCoqKS4NCg0KDQpPcyBtw6l0b2RvcyBkZSBlc2NvbGhhLCBxdWUgc2UgcGFzc291IGEgZGVzY3JldmVyLCB0w6ptIGNhcsOhdGVyIGFwZW5hcyBpbmRpY2F0aXZvLCBuw6NvIGV4aXN0aW5kbyB1bWEgaGllcmFycXVpYSBlbnRyZSBlbGVzLiANCg0KDQotICAgKipUw6ljbmljYSBkZSBSYWl6IExhdGVudGUgKENyaXTDqXJpbyBkZSBLYWlzZXIpKiogOiBFc3RhIHTDqWNuaWNhIHBhcnRlIGRvIHByaW5jw61waW8gZGUgcXVlIHF1YWxxdWVyIGZhdG9yIGluZGl2aWR1YWwgZGV2ZSBleHBsaWNhciBhIHZhcmnDom5jaWEgZGUgcGVsbyBtZW5vcyB1bWEgdmFyacOhdmVsIHBhcmEgcXVlIHNlamEgbWFudGlkbyBwYXJhIGludGVycHJldGHDp8Ojby4gQ2FkYSB2YXJpw6F2ZWwgY29udHJpYnVpIGNvbSB1bSB2YWxvciAxIGRvIGF1dG92YWxvciB0b3RhbC4gQ29tIGVmZWl0bywgYXBlbmFzIG9zIGZhdG9yZXMgcXVlIHTDqm0gcmHDrXplcyBsYXRlbnRlcyBvdSBhdXRvdmFsb3JlcyBtYWlvcmVzIHF1ZSAxIHPDo28gY29uc2lkZXJhZG9zIHNpZ25pZmljYW50ZXMgZSBvcyBkZW1haXMgZmF0b3JlcyBjb20gYXV0b3ZhbG9yZXMgbWVub3JlcyBkbyBxdWUgMSBzw6NvIGNvbnNpZGVyYWRvcyBpbnNpZ25pZmljYW50ZXMgZSBkZXNjYXJ0YWRvcyAoS0FJU0VSLCAxOTU4KS4NCg0KLSAgICoqQ3JpdMOpcmlvIGRhIFwlIGRhIFZhcmnDom5jaWEgRXhwbGljYWRhKiogOiBPIG7Dum1lcm8gw6kgZGV0ZXJtaW5hZG8gZGUgbW9kbyBxdWUgbyBjb25qdW50byBkZSBmYXRvcmVzIGNvbXVucyBleHBsaXF1ZSB1bWEgcG9yY2VudGFnZW0gcHLDqS1kZWZpbmlkYSBkYSB2YXJpYWJpbGlkYWRlIGdsb2JhbCwgcG9yIGV4ZW1wbG8sIGRlc2VqYW1vcyBleHBsaWNhciBwZWxvIG1lbm9zIDcwJSBkYSB2YXJpYWJpbGlkYWRlIHRvdGFsIGRvcyBkYWRvcy4gDQoNCg0KLSAgICoqQ3JpdMOpcmlvIFNjcmVlIFRlc3QqKiA6IMOIIGNvbXVtIHF1ZSBhIGRpZmVyZW7Dp2EgZGUgZXhwbGljYcOnw6NvIGVudHJlIG9zIHByaW1laXJvcyBmYXRvcmVzIGRlIHVtYSBBRiBzZWphIGdyYW5kZSBlIHF1ZSB0ZW5kYSBhIGRpbWludWlyIGNvbSBvIGF1bWVudG8gbm8gbsO6bWVybyBkZSBmYXRvcmVzLiBQb3IgZXN0ZSBjcml0w6lyaW8sIG8gbsO6bWVybyDDs3RpbW8gZGUgZmF0b3JlcyDDqSBvYnRpZG8gcXVhbmRvIGEgdmFyaWHDp8OjbyBkYSBleHBsaWNhw6fDo28gZW50cmUgZmF0b3JlcyBjb25zZWN1dGl2b3MgcGFzc2EgYSBzZXIgcGVxdWVuYS4gQ29tIGlzc28sIGRlIGFjb3JkbyBjb20gYSBGaWd1cmEgNSwgcG9kZS1zZSB2ZXJpZmljYXIgbWVsaG9yIG8gQ3JpdMOpcmlvIFNjcmVlIFRlc3QganVudG8gY29tIG8gQ3JpdMOpcmlvIGRhIFJhaXogTGF0ZW50ZSBvdSBkZSBLYWlzZXIuDQoNCg0KLSAgICoqTcOpdG9kb3MgSW5mZXJlbmNpYWlzKiogOiBPdXRyb3MgbcOpdG9kb3MgZm9yYW0gZGVzZW52b2x2aWRvcyBwYXJhIG9zIGNhc29zIGVtIHF1ZSBhcyB2YXJpw6F2ZWlzIG9yaWdpbmFpcyBzZWd1ZW0gdW1hIGRpc3RyaWJ1acOnw6NvIG5vcm1hbC4gRXNzZXMgbcOpdG9kb3MgY29uc2lzdGVtIG5vIGRlc2Vudm9sdmltZW50byBkZSB0ZXN0ZXMgZXN0YXTDrXN0aWNvcyBxdWUgc2UgYWxpY2Vyw6dhbSBuYSBzdXBvc2nDp8OjbyBkZSBub3JtYWxpZGFkZSBlLCBkZXNzYSBmb3JtYSwgbsOjbyBzw6NvLCBlbSBwcmluY8OtcGlvLCBhZGVxdWFkb3Mgw6AgYW7DoWxpc2UgZGEgbWFpb3JpYSBkYXMgZXNjYWxhcyBwc2ljb2zDs2dpY2FzLiBBcGVzYXIgZGlzc28sIGVzc2VzIG3DqXRvZG9zIHBvZGVtIHNlciB1dGlsaXphZG9zIGNvbSB1bSBmaW0gcHVyYW1lbnRlIGluZGljYXRpdm8sIHNlbmRvIHF1ZSBhIHNpZ25pZmljw6JuY2lhIG9idGlkYSBuZXNzYXMgc2l0dWHDp8O1ZXMgbsOjbyBjb3JyZXNwb25kZSDDoCByZWFsaWRhZGUuIERlbnRyZSBlc3NlcyB0ZXN0ZXMgZGVzdGFjYW1vcyBvIGRlIEJhcnRsZXR0IChKb2huc29uIGUgV2ljaGVybiwgMTk5MikgcXVlIHZlcmlmaWNhIGEgYWRlcXVhYmlsaWRhZGUgZG8gbW9kZWxvIGRlIEFGIGVzdGltYWRvIChwZWxvIG3DqXRvZG8gZGEgbcOheGltYSB2ZXJvc3NpbWlsaGFuw6dhKSBwYXJhIHJlcHJlc2VudGFyIGEgZXN0cnV0dXJhIGRlIGRlcGVuZMOqbmNpYSBkb3MgZGFkb3MuDQoNCjo6OiBwcm9ncmVzcw0KOjo6IHsucHJvZ3Jlc3MtYmFyIHN0eWxlPSJ3aWR0aDogMTAwJTsifQ0KOjo6DQo6OjoNCg0KIyMgKipUYW1hbmhvIGRlIEFtb3N0cmEgcGFyYSBBcGxpY2HDp8OjbyBkYSBBRioqDQoNClVtYSBBRiBlbnZvbHZlIGEgZXN0aW1hw6fDo28gZGUgdW0gZ3JhbmRlIG7Dum1lcm8gZGUgcGFyw6JtZXRyb3MgZSwgcGFyYSBxdWUgaXNzbyBzZWphIGZlaXRvIGNvbSB1bSBtw61uaW1vIGRlIHF1YWxpZGFkZSwgw6kgbmVjZXNzw6FyaW8gdW0gdGFtYW5obyBhbW9zdHJhbCByZWxhdGl2YW1lbnRlIGdyYW5kZSBlbSBjb21wYXJhw6fDo28gYW8gbsO6bWVybyBkZSB2YXJpw6F2ZWlzIGVudm9sdmlkYXMuIEjDoSwgbmEgbGl0ZXJhdHVyYSBlc3RhdMOtc3RpY2EsIHVtYSBzw6lyaWUgZGUgc3VnZXN0w7VlcyBwYXJhIGEgZXNjb2xoYSBkZXNzZSB0YW1hbmhvIGFtb3N0cmFsLiANCg0KRW0gZ2VyYWwsIGVzc2FzIG9ww6fDtWVzIGJhc2VpYW0tc2UgbmEgZXhwZXJpw6puY2lhIHBlc3NvYWwgZG9zIGRpdmVyc29zIGF1dG9yZXMgcXVlLCBlbSBhbGd1bnMgY2Fzb3MsIHN1Z2VyZW0gdW0gdGFtYW5obyBhbW9zdHJhbCBkYSBvcmRlbSBkZSAqKjIwIHZlemVzIG8gbsO6bWVybyBkZSB2YXJpw6F2ZWlzKiogZW52b2x2aWRhcyAodmVyIEhhaXIgZXQgYWwuLCAxOTk1KS4gDQoNClJlaXMgKDE5OTcpIGUgSGFpciBldCBhbC4gKDE5OTUpIHN1Z2VyZW0gcXVlIG8gbsO6bWVybyBkZSBvYnNlcnZhw6fDtWVzIGRldmEgc2VyIGRlIG5vIG3DrW5pbW8gKio1IHZlemVzIG8gbsO6bWVybyBkZSB2YXJpw6F2ZWlzKiosIGFsw6ltIGRpc3NvLCBpbmRpY2FtIHF1ZSBwcmVmZXJlbmNpYWxtZW50ZSBhIGFuw6FsaXNlIHNlamEgZmVpdGEgY29tIHBlbG8gbWVub3MgMTAwIG9ic2VydmHDp8O1ZXMuIEhhaXIgZXQgYWwuICgyMDA1KSBlbmZhdGl6YSBxdWUgZWxhIG7Do28gZGV2ZSBzZXIgdXRpbGl6YWRhIGVtIGFtb3N0cmFzIGluZmVyaW9yZXMgYSA1MCBvYnNlcnZhw6fDtWVzLg0KDQo6OjogcHJvZ3Jlc3MNCjo6OiB7LnByb2dyZXNzLWJhciBzdHlsZT0id2lkdGg6IDEwMCU7In0NCjo6Og0KOjo6DQoNCiMjICoqTcOpdG9kb3MgZGUgRXN0aW1hw6fDo28gZG9zIEVzY29yZXMgRmF0b3JpYWlzKioNCg0KDQpRdWFuZG8gbyBvYmpldGl2byBmaW5hbCBkYSBhbsOhbGlzZSBkZSBkYWRvcyDDqSBhIGRlc2NyacOnw6NvIGUgbyBlbnRlbmRpbWVudG8gZGEgZXN0cnV0dXJhIGRlIGNvcnJlbGHDp8OjbyBkYXMgdmFyacOhdmVpcywgbyBxdWUgdmltb3Mgc29icmUgYW7DoWxpc2UgZmF0b3JpYWwgcG9kZSBsZXZhciDDoHMgcmVzcG9zdGFzIGRlc2VqYWRhcy4gT3V0cmFzIHZlemVzLCBlbnRyZXRhbnRvLCBvcyBvYmpldGl2b3MgZGEgcGVzcXVpc2EgcG9kZW0gZW52b2x2ZXIgYW7DoWxpc2VzIHBvc3RlcmlvcmVzIGFwbGljYWRhcyBhb3MgZmF0b3JlcyBpZGVudGlmaWNhZG9zIGFvcyBkYWRvcy4gw4ggc3Vwb3N0byBxdWUgY2FkYSB2YXJpw6F2ZWwgbmEgYW1vc3RyYSB0ZW5oYSB1bSB2YWxvciBwYXJhIGNhZGEgdW0gZG9zIEZhdG9yZXMgQ29tdW5zLCBxdWUsIGNvbW8gasOhIGZvaSBkaXRvLCBuw6NvIHPDo28gZGlyZXRhbWVudGUgb2JzZXJ2w6F2ZWlzLiBFc3NlcyB2YWxvcmVzIHPDo28gb3MgY2hhbWFkb3MgKipFc2NvcmVzIEZhdG9yaWFpcyoqIHF1ZSBwb3N0ZXJpb3JtZW50ZSBwb2RlbSBzZXIgdXRpbGl6YWRvcyBlbSBvdXRyYXMgYW7DoWxpc2VzIGNvbmp1bnRhbWVudGUuIChCQVJST1NPOyBBUlRFUywgMjAwMykuDQoNCg0KRXhpc3RlbSBuYSBsaXRlcmF0dXJhIHbDoXJpb3MgbcOpdG9kb3MgZGUgZXN0aW1hw6fDo28gZG9zIGVzY29yZXMgZmF0b3JpYWlzIHBhcmEgY2FkYSBlbGVtZW50byBhbW9zdHJhbCwgdGFpcyBjb21vOiANCg0KLSAgICoqTcOpdG9kbyBkb3MgTcOtbmltb3MgUXVhZHJhZG9zIFBvbmRlcmFkb3MqKjsNCi0gICAqKk3DqXRvZG8gZGUgQmFydGxldHQqKjsNCi0gICAqKk3DqXRvZG8gZGUgQW5kZXJzb24gUnViaW4qKjsNCi0gICAqKk3DqXRvZG8gZGUgUmVncmVzc8OjbyoqLiANCg0KU2VuZG8gbyBNw6l0b2RvIGRlIFJlZ3Jlc3PDo28gdXNhZG8gcGFyYSBlc3RpbWFyIG9zIGVzY29yZXMgZG9zIGNvZWZpY2llbnRlcyBkb3MgZmF0b3Jlcy4gT3MgZXNjb3JlcyBnZXJhZG9zIHTDqm0gbcOpZGlhIDAgZSB2YXJpw6JuY2lhIGlndWFsIGFvIHF1YWRyYWRvIGRhIGNvcnJlbGHDp8OjbyBtw7psdGlwbGEgZW50cmUgb3MgZXNjb3JlcyBkb3MgZmF0b3JlcyBlc3RpbWFkb3MgZSBvcyB2YWxvcmVzIHZlcmRhZGVpcm9zIGRvcyBmYXRvcmVzLiBPcyBlc2NvcmVzIGRldmVtIHNlciBpZ3VhbGFkb3MgY29tIG9zIGZhdG9yZXMgb3J0b2dvbmFpcy4gDQoNCkVtIHJlbGHDp8OjbyBhbyBNw6l0b2RvIGRlIEJhcnRsZXR0IHVzYWRvIHRhbWLDqW0gcGFyYSBlc3RpbWHDp8OjbyBkb3MgZXNjb3JlcyBkb3MgY29lZmljaWVudGVzIGRvcyBmYXRvcmVzLiBPcyBlc2NvcmVzIHByb2R1emlkb3MgdMOqbSBtw6lkaWEgZGUgemVyby4gQSBzb21hIGRvcyBxdWFkcmFkb3MgZGUgdW0gZmF0b3Igw6kgZmVpdGEgc29icmUgYSBleHRlbnPDo28gZGFzIHZhcmnDoXZlaXMgbWluaW1pemFkYXMuIErDoSBvIE3DqXRvZG8gZGUgQW5kZXJzb24gUnViaW4gw6kgc2ltaWxhciBhbyBkZSBCYXJ0bGV0dCBhIGRpZmVyZW7Dp2EgZXN0w6EgZW0gZ2FyYW50aXIgYSBvcnRvZ29uYWxpZGFkZSBkb3MgZmF0b3JlcyBlc3RpbWFkb3MuIE9zIGVzY29yZXMgZ2VyYWRvcyB0w6ptIHVtYSBtw6lkaWEgZGUgMCwgZGVzdmlvIHBhZHLDo28gZGUgMSwwIGUgc8OjbyBuw6NvIGNvcnJlbGF0b3MuDQoNCg0KIyMjICoqUGFkcm9uaXphw6fDo28gZG9zIEVzY29yZXMgRmF0b3JpYWlzKioNCg0KQW8gcmVhbGl6YXIgYSBhbsOhbGlzZSBzb2JyZSB1bSBjb25qdW50byBkZSBkYWRvcyBjb20gdmFyacOhdmVpcyBjb20gdmFyacOibmNpYXMgZGUgbWFnbml0dWRlcyBkaWZlcmVudGVzIChwcm92ZW5pZW50ZXMgZGUgZGl2ZXJzb3Mgc2V0b3JlcyksIHBvZGVtb3MgZXN0YXIgaW50cm9kdXppbmRvIGRpZmljdWxkYWRlcyBuYSBleHBsaWNpdGHDp8OjbyBkZXNzYSBkZXBlbmTDqm5jaWEuIE5vcyBjYXNvcyBxdWUgZXhpc3RlIHVtYSBncmFuZGUgZGlmZXJlbsOnYSBlbnRyZSBhcyB2YXJpw6JuY2lhcyBkYXMgdmFyacOhdmVpcyBvcmlnaW5haXMsIHN1Z2VyZS1zZSBxdWUgYSBhbsOhbGlzZSBzZWphIHJlYWxpemFkYSBzb2JyZSBhcyB2YXJpw6F2ZWlzIHBhZHJvbml6YWRhcyAoSm9obnNvbiwgMTk5OCkuIA0KDQpQYXJhIGZhY2lsaXRhciBhIGNvbXBhcmFiaWxpZGFkZSBkb3Mgw61uZGljZXMgZGUgdW0gbXVuaWPDrXBpbyBub3MgZGl2ZXJzb3MgZ3J1cG9zIHRyYXNmb3Jtb3Utc2UgYSBiYXNlIGRvcyDDrW5kaWNlcywgb3Ugc2VqYSwgbyBlc2NvcmUgZmF0b3JpYWwgZm9pIHBhZHJvbml6YWRvIHBhcmEgc2Ugb2J0ZXIgdmFsb3JlcyBwb3NpdGl2b3MgZG9zIGVzY29yZXMgb3JpZ2luYWlzIGUgcGVybWl0aXIgYSBoaWVyYXJxdWl6YcOnw6NvIGRvcyBtdW5pY8OtcGlvcywgZGUgdGFsIGZvcm1hIHF1ZSBvcyB2YWxvcmVzIGRvIMOtbmRpY2UgZXN0aW1hZG8gZXN0ZWphbSBzaXR1YWRvcyBlbnRyZSB6ZXJvIGUgdW0gKFNhbnRhbmEsIDIwMDcpLiANCg0KQSBmw7NybXVsYSDDqSBhIHNlZ3VpbnRlOg0KDQokJCBFc2NvcmVfeyhGYXRvcmlhbClfeyhwYWQpfX0gPVxsZWZ0KFxmcmFje0Zfe2l9LUZfe21pbn19e0Zfe21heH0gLSBGX3ttaW5pfX1ccmlnaHQpICAgJCQNCkVtIHF1ZSAkRl97bWlufSQgIGUgICRGX3ttYXh9JCBzw6NvIG9zIHZhbG9yZXMgZGUgbcOtbmltbyBlIG3DoXhpbW8gb2JzZXJ2YWRvIHBhcmEgb3MgZXNjb3JlcyBmYXRvcmlhaXMgYXNzb2NpYWRvcyBhb3MgbXVuaWPDrXBpb3MuDQoNCjo6OiBwcm9ncmVzcw0KOjo6IHsucHJvZ3Jlc3MtYmFyIHN0eWxlPSJ3aWR0aDogMTAwJTsifQ0KOjo6DQo6OjoNCg0KIyMgKipWaWFiaWxpZGFkZSBkYSBBbsOhbGlzZSBkZSBGYXRvcmVzKioNCg0KQXByZXNlbnRhbS1zZSBhbGd1bWFzIG1lZGlkYXMgYWRpY2lvbmFpcyBwYXJhIGFmZXJpciBhIHZpYWJpbGlkYWRlIGRhIGFwbGljYcOnw6NvIGRlIHVtYSBhbsOhbGlzZSBmYXRvcmlhbCBhIHVtIGNvbmp1bnRvIGRlIGRhZG9zLiBBcyBwcmluY2lwYWlzIG1lZGlkYXMgYXBsaWNhZGFzIGZvcmFtOiBNYXRyaXogQW50aS1JbWFnZW0sIFRlc3RlIGRlIEVzZmVyaWNpZGFkZSBkZSBCYXJ0bGV0dCwgVGVzdGUgZGUgS2Fpc2VyLU1leWVyLU9sa2luIChLTU8pIGUgTWVhc3VyZSBvZiBTYW1wbGluZyBBZGVxdWFjeSAoTVNBKS4NCg0KDQojIyMgKipNYXRyaXogQW50aS1pbWFnZW0qKg0KDQpVbWEgZGFzIHByZW1pc3NhcyBkZSB1bWEgYW7DoWxpc2UgZmF0b3JpYWwgw6kgcXVlIGV4aXN0YSB1bWEgZXN0cnV0dXJhIGRlIGRlcGVuZMOqbmNpYSBjbGFyYSBlbnRyZSBhcyB2YXJpw6F2ZWlzIGVudm9sdmlkYXMuIE5vIG1vZGVsbyBlc3R1ZGFkbywgZXNzYSBlc3RydXR1cmEgw6kgZXhwcmVzc2EgYXRyYXbDqXMgZGEgbWF0cml6IGRlIGNvdmFyacOibmNpYSBvdSBkZSBjb3JyZWxhw6fDo28uIEEgZXhpc3TDqm5jaWEgZGUgdGFsIGVzdHJ1dHVyYSBpbXBsaWNhIHF1ZSB1bWEgdmFyacOhdmVsIHBvZGUsIGRlbnRybyBkZSBjZXJ0b3MgbGltaXRlcywgc2VyIHByZXZpc3RhIHBlbGFzIGRlbWFpcy4gUGFyYSB2ZXJpZmljYXIgZXNzZSBmYXRvLCBwb2RlLXNlIGNhbGN1bGFyIG9zIGNvZWZpY2llbnRlcyBkZSBjb3JyZWxhw6fDo28gcGFyY2lhbCBlbnRyZSBvcyBwYXJlcyBkZSB2YXJpw6F2ZWlzLCBlbGltaW5hZG8gbyBlZmVpdG8gZGFzIGRlbWFpcyB2YXJpw6F2ZWlzLiBFc3BlcmEtc2UgcXVlIG9zIHZhbG9yZXMgb2J0aWRvcyBzZWphbSBiYWl4b3MuIEEgbWF0cml6IGFudGktaW1hZ2VtIMOpIGNvbnN0cnXDrWRhIGNvbSBlc3NlcyBjb2VmaWNpZW50ZXMgY29tIHNpbmFpcyBpbnZlcnRpZG9zLCBtdWl0YXMgdmV6ZXMsIGNvbG9jYS1zZSBuYSBkaWFnb25hbCBwcmluY2lwYWwgZGVzc2EgbWF0cml6IG9zIGluZGljYWRvcmVzIE1BUyAoKipNZWFzdXJlIG9mIFNhbXBsaW5nIEFkZXF1YWN5KE1TQSkqKikgKEJBUlJPU08gOyBBUlRFUywgMjAwMykuDQoNCg0KIyMjICoqVGVzdGUgZGUgRXNmZXJpY2lkYWRlIGRlIEJhcnRsZXR0KioNCg0KRXNzZSB0ZXN0ZSBhdmFsaWEgYSBzaWduaWZpY8OibmNpYSBnZXJhbCBkYSBtYXRyaXogZGUgY29ycmVsYcOnw6NvLCBvdSBzZWphLCB0ZXN0YSBzZSB0b2RhcyBhcyB2YXJpw6F2ZWlzIG9yaXVuZGFzIGRlIGRpdmVyc29zIHNldG9yZXMgcG9zc3VlbSB1bWEgcG9zc8OtdmVsIHJlbGHDp8OjbyBlbSBjb211bSAoRGlsbG9uOyBHb2xkc3RlaW4sIDE5ODQ7IFJlaXMsIDIwMDEpLg0KDQoNCk8gdGVzdGUgZGUgQmFydGxldHQgdGVzdGEgYXMgc2VndWludGVzIGhpcMOzdGVzZXMgbnVsYXMNCg0KJCQNCkhfezB9OiBSID0gSSBcXA0KSF97MX06IFxsYW1iZGFfezF9ID0gXGxhbWJkYV97Mn0gPSBcbGRvdHMgPSBcbGFtYmRhX3twfQ0KJCQNCg0KRSBhIGVzdGF0w61zdGljYSBkbyB0ZXN0ZQ0KDQoNCiQkXGNoaV57Mn0gPSAtIFtuLTEtXGZyYWN7MX17Nn0oMnArNSldXHN1bV97aT0xfV57cH0gbG58UnwkJA0KDQoNCkVtIHF1ZSAkfFJ8JCDDqSBvIGRldGVybWluYW50ZSBkYSBtYXRyaXogZGUgY29ycmVsYcOnw6NvIGFtb3N0cmFsLCAkXGxhbWJkYSQgIMOpIGEgdmFyacOibmNpYSBleHBsaWNhZGEgcG9yIGNhZGEgZmF0b3IsIG4gw6kgbyBuw7ptZXJvIGRlIG9ic2VydmHDp8O1ZXMgZSBwIMOpIG8gbsO6bWVybyBkZSB2YXJpw6F2ZWlzLiANCg0KQSBlc3RhdMOtc3RpY2EgdGVtIHVtYSBkaXN0cmlidWnDp8OjbyBhc3NpbnTDs3RpY2EgZGUgJFxjaGleezJ9JCBjb20gKDAsNXAocC0xKSkgZ3JhdXMgZGUgbGliZXJkYWRlLg0KDQoNCiMjIyAqKlRlc3RlIGRlIEthaXNlci1NZXllci1PbGtpbiAoS01PKSoqDQoNCkVzdGUgdGVzdGUgw6kgdXNhZG8gcGFyYSBjb21wYXJhIGFzIGNvcnJlbGHDp8O1ZXMgcGFyY2lhaXMgZW50cmUgb3MgcGFyZXMgZGUgdmFyacOhdmVpcyBzZW0gbyBlZmVpdG8gZGFzIGRlbWFpcywgb3Ugc2VqYSwgdGVzdGEgc2UgZHVhcyBhIGR1YXMgdmFyacOhdmVpcyBwb3NzdWVtIGFsZ3VtIHRpcG8gZGUgcmVsYcOnw6NvIGVudHJlIHNpIChEaWxsb247IEdvbGRzdGVpbiwgMTk4NDsgS2Fpc2VyLCAxOTcwOyBSZWlzLCAyMDAxKS4NCg0KDQokJCBLTU8gPSBcbGVmdChcZnJhY3tcc3VtX3tpfVxzdW1fe2p9cl97aWp9XnsyfX17XHN1bV97aX1cc3VtX3tqfXJfe2lqfV57Mn0rXHN1bV97aX0gXHN1bV97an1hX3tpan1eezJ9fVxyaWdodCkgJCQNCkVtIHF1ZSAkcl97aWp9JCDDqSBvIGNvZWZpY2llbnRlIGRlIGNvcnJlbGHDp8OjbyBvYnNlcnZhZG8gZW50cmUgYXMgdmFyacOhdmVpcyBpIGUgaiBlICRhX3tpan0kIMOpIG8gY29lZmljaWVudGUgZGUgY29ycmVsYcOnw6NvIHBhcmNpYWwgZW50cmUgYXMgbWVzbWFzIHZhcmnDoXZlaXMgcXVlIMOpLCBzaW11bHRhbmVhbWVudGUsIHVtYSBlc3RpbWF0aXZhIGRhcyBjb3JyZWxhw6fDtWVzIGVudHJlIG9zIGZhdG9yZXMsIGVsaW1pbmFkbyBvIGVmZWl0byBkYXMgZGVtYWlzIHZhcmnDoXZlaXMuIE9zICRhX3tpan0kIGRldmVyw6NvIGFzc3VtaXIgdmFsb3JlcyBwcsOzeGltb3MgZGUgemVybywgdW1hIHZleiBxdWUgc2UgcHJlc3N1cMO1ZSBxdWUgb3MgZmF0b3JlcyBzw6NvIG9ydG9nb25haXMgZW50cmUgc2kuDQoNCkNvbmZvcm1lLCAoS2Fpc2VyOyBSaWNlLCAxOTc0KSwgb3MgdmFsb3JlcyBkbyB0ZXN0ZSBzw6NvIGNsYXNzaWZpY2Fkb3MgZGEgc2VndWludGUgZm9ybWE6DQoNCg0KDQoqKlRhYmVsYSAxKiouIENsYXNzaWZpY2HDp8OjbyBHZXJhbCBkbyBUZXN0ZSBkZSBhZGVxdWFiaWxpZGFkZSBLTU8gc2VndW5kbyAoS2Fpc2VyOyBSaWNlLCAxOTc0KS4NCg0KfCAqKktNTyoqICAgICB8ICoqQ2xhc3NpZmljYcOnw6NvKiogfA0KfCA6LS0tLS0tLTogICB8ICAgIDotLS0tLS0tLS06ICAgIHwgDQp8IDAuOTAgLSAxLjAwIHwgICAgRXhjZWxlbnRlICAgICAgfCAgICANCnwgMC44MCDigJMgMC45MCB8ICAgIMOTdGltbyAgICAgICAgICB8ICAgDQp8IDAuNzAg4oCTIDAuODAgfCAgICBCb20gICAgICAgICAgICB8ICANCnwgMC42MCDigJMgMC43MCB8ICAgIFJlZ3VsYXIgICAgICAgIHwgICAgDQp8IDAuNTAg4oCTIDAuNjAgfCAgICBSdWltICAgICAgICAgICB8ICAgIA0KfCAwLjAwIOKAkyAwLjUwIHwgICAgSW5hZGVxdWFkbyAgICAgfA0KDQoNCiMjIyAqKk1lYXN1cmUgb2YgU2FtcGxpbmcgQWRlcXVhY3koTVNBKSoqDQoNCkVzc2EgbWVkaWRhIMOpIGJhc3RhbnRlIHNpbWlsYXIgYW8gS01PLiBOb3ZhbWVudGUsIGRlc2VqYS1zZSB2ZXJpZmljYXIgYSBwb3NzaWJpbGlkYWRlIGRlIGV4aXN0aXIgdW1hIGVzdHJ1dHVyYSBmYXRvcmlhbCBub3MgZGFkb3MuIE5hIHZlcmRhZGUsIGEsIE1TQSBkZXZlIHNlciBjYWxjdWxhZGEgc2VwYXJhZGFtZW50ZSBwYXJhIGNhZGEgdmFyacOhdmVsLiBPIG9iamV0aXZvIMOpIHZlcmlmaWNhciBzZSB1bWEgZGFkYSB2YXJpw6F2ZWwgcG9kZSBzZXIgZXhwbGljYWRhIHBlbGFzIGRlbWFpcyAobyBxdWUgw6kgZXNwZXJhZG8gbnVtIG1vZGVsbyBmYXRvcmlhbCkuIFZhbG9yZXMgYmFpeG9zIGRlIE1TQWkgc8OjbyBpbmTDrWNpb3MgZGUgcXVlIGEgcmVzcGVjdGl2YSB2YXJpw6F2ZWwgcG9kZSBzZXIgcmV0aXJhZGEgZGEgYW7DoWxpc2Ugc2VtIG1haW9yZXMgcHJlanXDrXpvcyAoQkFSUk9TTzsgQVJURVMsIDIwMDMpLg0KDQokJCBNU0Ffe2l9ID0gXGxlZnQoXGZyYWN7XHN1bV97aj0xfV57cH1yX3tpan1eezJ9fXtcc3VtX3tqPTF9XntwfXJfe2lqfV57Mn0gKyBcc3VtX3tqPTF9XntwfWFfe2lqfV57Mn19IFxyaWdodCkgICQkDQoNCjo6OiBwcm9ncmVzcw0KOjo6IHsucHJvZ3Jlc3MtYmFyIHN0eWxlPSJ3aWR0aDogMTAwJTsifQ0KOjo6DQo6OjoNCg0KIyAqKlJlZmVyw6puY2lhcyBCaWJsaW9ncsOhZmljYXMqKg0KDQoNCkFOREVSU09OLCBULiBXLiBBbiBJbnRyb2R1Y3Rpb24gTXVsdGl2YXJpYXRlIEFuYWx5c2lzLiBOZXcgWW9yazogSm9obiBXaWxleSwgMjAwMy4NCg0KQkFSUk9TTywgTC5QLjsgQVJURVMsIFIuIEFuw6FsaXNlIE11bHRpdmFyaWFkYS4gU8OjbyBQYXVsbzogSU1FLVVTUCwgMjAwMy4NCg0KRElMT04sIFcuUi47IEdPTERTVEVJTiwgTS4gTXVsdGl2YXJpYXRlIEFuYWx5c2lzOiBtZXRob2RzIGFuZCBhcHBsaWNhdGlvbnMuIE5ldyBZb3JrOiBKb2huIFdpbGV5ICYgU29uLCAxOTg0Lg0KDQpEUkFQRVIsIE4uUi47IFNNSVRILCBILiBBcHBsaWVkIFJlZ3Jlc3Npb24gQW5hbHlzaXMuIE5ldyBZb3JrOiBKb2huIFdpbGV5ICYgU29ucywgMTk4MS4NCg0KRUxJQU4sIFNpbHZhLiBOLiBBbsOhbGlzZSBkZSBSZWdyZXNzw6NvLiBTw6NvIFBhdWxvOiBJTUUsIDE5OTguDQoNCkdSRUVORSwgVy4gSC4gRWNvbm9tZXRyaWMgQW5hbHlzaXMuIDMuwqogRWQuIFByZW50aWNlIEhhbGwuIE5ldyBKZXJzZXksIDE5OTcuDQoNCkdPUlNVQ0gsIFIuIEwuIEZhY3RvciBBbmFseXNpcy4gTmV3IEplcnNleTogTGF3cmVuY2UgRXJsYmF1bSwgMTk4My4NCg0KR1VKQVJBVEksIERhbG1vZGFyLiBOLiBFY29ub21ldHJpYSBCw6FzaWNhLiBTw6NvIFBhdWxvOiBNYWtyb24gQm9vaywgMjAwMC4NCg0KSEFJUiBKUiwgSi5GLiwgQU5ERVJTT04sIFIuRS4sIFRBVEhBTSwgUi5MLiwgQkxBQ0ssIFcuQy4gQW7DoWxpc2UgTXVsdGl2YXJpYWRhIGRlIERhZG9zLiA1LiBlZC4gUG9ydG8gQWxlZ3JlOiBCb29rbWFuLCAyMDA1Lg0KDQpIQUlSIEpSLCBKLkYuLCBBTkRFUlNPTiwgUi5FLiwgVEFUSEFNLCBSLkwuLCBCTEFDSywgVy5DLiBNdWx0aXZhcmlhdGUgRGF0YSBBbmFseXNpcy4gTmV3IFlvcms6IFByZW50aWNlIEhhbGwsIDE5OTguDQoNCkpPSE5TT04sIFIuIEEuOyBXSUNIRVJOLCBELiBXLiBBcHBsaWVkIE11bHRpdmFyaWF0ZSBTdGF0aXN0aWNhbCBBbmFseXNpcy4gNC4gZWQuIE5vdmEgSmVyc2V5OiBQcmVudGljZSBIYWxsLCAxOTk4Lg0KDQpLQUlTRVIsIEguIEYuIFRoZSBWYXJpbWF4IENyaXRlaW9uIGZvciBBbmFsYXl0aWMgUm90YXRpb24gaW4gRmFjdG9yIEFuYXlzaXMuIFBzeWNob21ldHJpa2EsIDE5NTguDQoNCktBSVNFUiwgSC4gRi47IFJJQ0UsIEouIExpdHRsZSBKaWZmeSwgbWFyayBJVi4gRWR1Y2F0aW9uIGFuZCBQc3ljaG9sb2dpY2FsIE1lYXN1cmVtZW50LCAxOTc0Lg0KDQpORVRFUiwgSi47IFdBU1NFUk1BTiwgVy4gQXBwbGllZCBsaW5lYXIgc3RhdGlzdGljYWwgbW9kZWxzLiBJbGxpbm9pczogUmljaGFyZCBELiBJcndpbiwgMTk3NC4NCg0KUkVJUywgRS4gRXN0YXTDrXN0aWNhIE11bHRpdmFyaWFkYSBBcGxpY2FkYS4gMi4gZWQuIExpc2JvYTogU2lsYWJvLCAyMDAxLg0KDQpSRU5DSEVSLCBBLiBNZXRob2RzIG9mIE11bHRpdmFyaWF0ZSBBbmFseXNpcy4gMiBlZC4gTmV3IFlvcms6IEpvaG4gV2lsZXkgJiBTb24sIDIwMDIuDQoNClJPWVNUT04sIEouIEIuIFNvbWUgdGVjaG5pcXVlcyBmb3IgYXNzZXNzaW5nIG11bHRpdmFyaWF0ZSBiYXNlZCBvbiB0aGUgU2hhcGlyby1XaWxrIFcuIEFwcGxpZWQgU3RhdGlzdGljcywgTG9uZG9uLCB2LiAzMiwgbi4gMiwgcC4gMTIxLTEzMywgMTk4My4NCg0KU0FOVE9TLCBBLiBDLjsgRkVSUkVJUkEsIEQuIEYuIERlZmluacOnw6NvIGRvIHRhbWFuaG8gYW1vc3RyYWwgdXNhbmRvIHNpbXVsYcOnw6NvIE1vbnRlIENhcmxvIHBhcmEgbyB0ZXN0ZSBkZSBub3JtYWxpZGFkZSBiYXNlYWRvIGVtIGFzc2ltZXRyaWEgZSBjdXJ0b3NlOiBJSS4gQWJvcmRhZ2VtIG11bHRpdmFyaWFkYS4gQ2nDqm5jaWEgZSBBZ3JvdGVjbmxvZ2lhLCBMYXZyYXMsIHYuIDI0LCBuLiAxLCBwLiA2Mi02OSwgMjAwMy4NCg0KTUFIQUxBTk9CSVMsIFAuIEMuIE9uIHRoZSBHZW5lcmFsaXplZCBEaXN0YW5jZSBpbiBTdGF0aXN0aWNzLiBQcm9jZWVkaW5ncyBvZiB0aGUgTmF0aW9uYWwgSW5zdGl0dXRlIG9mIFNjaWVuY2Ugb2YgSW5kaWEsIDE5MzYuDQoNCk1BTEhPVFJBLCBOLiBLLiBNYXJrZXRpbmcgUmVzZWFyY2g6IEFuIEFwcGxpZWQgT3JpZW50YXRpb24uIE5ldyBKZXJzZXk6IFByZW50aWNlIEhhbGwsIDIwMDEuDQoNCk1JTkdPVEksIFMuQS4gQW7DoWxpc2UgZGUgRGFkb3MgQXRyYXbDqXMgZGUgTcOpdG9kb3MgZGUgRXN0YXTDrXN0aWNhIE11bHRpdmFyaWFkYTogVW1hIEFib3JkYWdlbSBBcGxpY2FkYS4gQmVsbyBIb3Jpem9udGU6IFVGTUcsIDIwMDUuIA0KDQoNCg0KDQoNCjo6OiBwcm9ncmVzcw0KOjo6IHsucHJvZ3Jlc3MtYmFyIHN0eWxlPSJ3aWR0aDogMTAwJTsifQ0KOjo6DQo6OjoNCg==