html/0040755000101200010120000000000011277240737013030 5ustar docbuilderdocbuilderhtml/copyright.html0100644000101200010120000000376211277240152015722 0ustar docbuilderdocbuilder Copyright
Manual do PHP
PHP Manual

Copyright

Copyright © 1997 - 2009 para o PHP Documentation Group. Este material pode ser distribuído apenas sob os termos e condições determinadas pela Creative Commons Attribution 3.0 ou posteriores. Uma cópia da Creative Commons Attribution 3.0 license é distribuída com esse manual. A úlima versão está atualmente disponível em » http://creativecommons.org/licenses/by/3.0/.

Se você está interessado na redistribuição ou republicação deste documento no todo ou em parte, tanto modificao ou não, ou se você tem qualquer questão, basta contatar os responsáveis pelo copyright em » doc-license@lists.php.net. Note que esse endereço tem suas mensagens preservadas em um arquivo público.


Manual do PHP
PHP Manual
html/preface.html0100644000101200010120000001442311277240152015313 0ustar docbuilderdocbuilder Prefácio
Manual do PHP
PHP Manual

Prefácio

PHP, que significa "PHP: Hypertext Preprocessor", é uma linguagem de programação de ampla utilização, interpretada, que é especialmente interessante para desenvolvimento para a Web e pode ser mesclada dentro do código HTML. A sintaxe da linguagem lembra C, Java e Perl, e é fácil de aprender. O objetivo principal da linguagem é permitir a desenvolvedores escreverem páginas que serão geradas dinamicamente rapidamente, mas você pode fazer muito mais do que isso com PHP.

Esse manual consiste primeiramente de uma referência de funções, mas ele também contém uma referência da linguagem, explicações sobre as mais importantes características do PHP, e outras informações suplementares.

Você pode fazer o download deste manual em vários formatos em » http://www.php.net/download-docs.php. Mais informações sobre como esse manual é desenvolvido podem ser encontradas no apêndice 'Sobre o manual'. Se você está interessado na história do PHP, veja o apêndice relevante.

Autores e colaboradores

Nós enfatizamos as pessoas mais ativas na capa do manual, mas há muitos mais colaboradores que atualmente nos ajudam no trabalho ou proveram uma enorme quantidade de ajuda no passado. Há uma enormidade de pessoas não citadas que ajudam com suas notas nas páginas do manual, que são continuamente inclúidas no corpo do manual, trabalho esse que nós somos muito gratos. A lista a seguir está em ordem alfabética.

Autores e Editores

Os seguintes colaboradores devem ser reconhecidos pelo impacto que tiveram e/ou continuam a ter pelo acréscimo de material ao manual: Bill Abt, Jouni Ahto, Alexander Aulbach, Daniel Beckham, Stig Bakken, Jesus M. Castagnetto, Ron Chmara, Sean Coates, John Coggeshall, Simone Cortesi, Markus Fischer, Wez Furlong, Sara Golemon, Rui Hirokawa, Brad House, Pierre-Alain Joye, Etienne Kneuss, Moriyoshi Koizumi, Rasmus Lerdorf, Andrew Lindeman, Stanislav Malyshev, Rafael Martinez, Rick McGuire, Yasuo Ohgaki, Derick Rethans, Rob Richards, Sander Roobol, Egon Schmid, Thomas Schoefbeck, Sascha Schumann, Dan Scott, Masahiro Takagi, Michael Wallner, Lars Torben Wilson, Jim Winstead, Jeroen van Wolffelaar e Andrei Zmievski.

Os seguintes colaboradores já fizeram um significativo trabalho editando esse manual: Stig Bakken, Gabor Hojtsy, Hartmut Holzgraefe e Egon Schmid.

Mantenedores das notas de usuários

Mantenedores mais ativos: Daniel Brown, Nuno Lopes, Felipe Pena, Thiago Pojda e Maciek Sokolewicz.

Estas pessoas já fizeram um grande esforço cuidando das notas de usuários Mehdi Achour, Daniel Beckham, Friedhelm Betz, Victor Boivie, Jesus M. Castagnetto, Nicolas Chaillan, Ron Chmara, Sean Coates, James Cox, Vincent Gevers, Sara Golemon, Zak Greant, Szabolcs Heilig, Oliver Hinckel, Hartmut Holzgraefe, Etienne Kneuss, Rasmus Lerdorf, Matthew Li, Andrew Lindeman, Aidan Lister, Hannes Magnusson, Maxim Maletsky, Bobby Matthis, James Moore, Philip Olson, Sebastian Picklum, Derick Rethans, Sander Roobol, Damien Seguy, Jason Sheets, Tom Sommer, Jani Taskinen, Yasuo Ohgaki, Jakub Vrana, Lars Torben Wilson, Jim Winstead, Jared Wyles e Jeroen van Wolffelaar.


Manual do PHP
PHP Manual
html/manual.html0100644000101200010120000000224711277240152015164 0ustar docbuilderdocbuilder Manual do PHP
Manual do PHP
PHP Manual

Manual do PHP


Manual do PHP
PHP Manual
html/intro-whatis.html0100644000101200010120000001070611277240152016336 0ustar docbuilderdocbuilder O que é PHP?
Introdução
PHP Manual

O que é PHP?

PHP (um acrônimo recursivo para PHP: Hypertext Preprocessor) é uma linguagem de script open source de uso geral, muito utilizada e especialmente guarnecida para o desenvolvimento de aplicações Web embútivel dentro do HTML.

Ótimo, mas o que isso significa?

Exemplo #1 Um exemplo introdutório

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <title>Exemplo</title>
    </head>
    <body>

        <?php
        
echo "Olá, Eu sou um script PHP!";
        
?>

    </body>
</html>

Ao invés de muitos comandos para mostrar HTML (como visto em C ou Perl), páginas PHP contém HTML juntamente com códigos que fazem "alguma coisa" (neste caso, mostra "Olá, Eu sou um script PHP!") O código PHP é delimitado por tags iniciais e finais <?php e ?> que lhe permitem pular pra dentro e pra fora do "modo PHP".

O que distingui o PHP de algo como Javascript no lado do cliente é que o código é executado no servidor, gerando HTML que é então enviado para o cliente. O cliente receberia os resultados da execução desse script, mas não saberia como é o código fonte. Você pode inclusive configurar seu servidor para processar todos os seus arquivos HTML como PHP, e então não haverá nenhum modo dos usuários descobrirem que se você usa essa linguagem ou não.

A melhor coisa em usar PHP está no fato de ele ser extremamente simples para um iniciante, mas oferece muitos recursos para o programador profissional. Não se preocupe em ler as longas listas de funções do PHP. Você pode pular essa parte (por enquanto) e começar a escrever scripts em poucas horas.

Apesar do desenvolvimento do PHP ser focado nos scripts do lado do servidor, você pode fazer muito mais com ele. Veja isso e leia mais na seção O que o PHP pode fazer?, ou diretamente no tutorial introdutório se você estiver interessado em programação web.


Introdução
PHP Manual
html/intro-whatcando.html0100644000101200010120000002164311277240152017011 0ustar docbuilderdocbuilder O que o PHP pode fazer?
Introdução
PHP Manual

O que o PHP pode fazer?

Qualquer coisa. O PHP é focado para ser uma linguagem de script do lado do servidor, portanto, você pode fazer qualquer coisa que outro programa CGI pode fazer, como: coletar dados de formulários, gerar páginas com conteúdo dinâmico ou enviar e receber cookies. Mas o PHP pode fazer muito mais.

Esses são os maiores campos onde os scripts PHP podem ser utilizados:

O PHP pode ser utilizado na maioria dos sistemas operacionais, incluindo Linux, várias variantes Unix (incluindo HP-UX, Solaris e OpenBSD), Microsoft Windows, Mac OS X, RISC OS, e provavelmente outros. O PHP também é suportado pela maioria dos servidores web atuais, incluindo Apache, Microsoft Internet Information Server, Personal Web Server, Netscape and iPlanet Servers, Oreilly Website Pro Server, Caudium, Xitami, OmniHTTPd, e muitos outros. O PHP pode ser configurado como módulo para a maioria dos servidores, e para os outros como um CGI comum.

Com o PHP, portanto, você tem a liberdade para escolher o sistema operacional e o servidor web. Do mesmo modo, você pode escolher entre utilizar programação estrutural ou programação orientada a objeto, ou ainda uma mistura deles. Mesmo sem todos os recursos da POO (Programação Orientada a Objetos) implementados no PHP 4, muitas bibliotecas de código e grandes aplicações (incluindo a biblioteca PEAR) são escritas somente em código POO. O PHP 5 corrige as fraquezas da POO do PHP 4, e introduz um modelo de objetos completo.

Com PHP você não está limitado a gerar somente HTML. As habilidades do PHP incluem geração de imagens, arquivos PDF e animações Flash (utilizando libswf ou Ming) criados dinamicamente, on the fly. Você pode facilmente criar qualquer padrão texto, como XHTML e outros arquivos XML. O PHP pode gerar esses padrões e os salvar no sistema de arquivos, em vez de imprimi-los, formando um cache dinâmico de suas informações no lado do servidor.

Talvez a mais forte e mais significativa característica do PHP é seu suporte a uma ampla variedade de banco de dados. Escrever uma página que consulte um banco de dados é incrivelmente simples. Os seguintes bancos de dados são atualmente suportados:

Também foi providenciado uma abstração de banco de dados (chamada PDO) permitindo a você utilizar qualquer banco de dados transparentemente com sua extensão. Adicionalmente, o PHP suporta ODBC (Open Database Connection, ou Padrão Aberto de Conexão com Bancos de Dados), permitindo que você utilize qualquer outro banco de dados que suporte esse padrão mundial.

O PHP também tem suporte para comunicação com outros serviços utilizando protocolos como LDAP, IMAP, SNMP, NNTP, POP3, HTTP, COM (em Windows) e incontáveis outros. Você pode abrir sockets de rede e interagir diretamente com qualquer protocolo. O PHP também suporta o intercâmbio de dados complexos WDDX, utilizado em virtualmente todas as linguagens de programação para web. Falando de comunicação, o PHP implementa a instanciação de objetos Java e os utiliza transparentemente como objetos PHP. Você ainda pode usar sua extensão CORBA para acessar objetos remotos.

O PHP é extremamente útil em recursos de processamento de texto, do POSIX Estendido ou expressões regulares Perl até como interpretador para documentos XML. No processamento de XML, o PHP 4 suporta os padrões SAX e DOM, além de você também poder utilizar a extensão XSL para transformar documentos XML. O PHP 5 padroniza toda a extensão XML a partir da base sólida da libxml2, além de estender os recursos com o acréscimo ao SimpleXML e XMLReader.

Por último mas longe de terminar, temos também outras extensões interessantes: funções para o search engine mnoGoSearch, funções para Gateway IRC, vários utilitários de compressão (gzip, bz2, zip), calendário e conversões de datas, tradução...

Como você pode ver, esta página não é suficiente para descrever todos os recursos e benefícios que o PHP pode oferecer. Leia nas seções sobre a Instalação do PHP, e veja a referência das funções para detalhes das extensões mencionadas aqui.


Introdução
PHP Manual
html/introduction.html0100644000101200010120000000247611277240152016434 0ustar docbuilderdocbuilder Introdução
Começando
PHP Manual

Introdução

Índice


Começando
PHP Manual
html/tutorial.requirements.html0100644000101200010120000000617511277240152020300 0ustar docbuilderdocbuilder O que eu preciso?
Um simples tutorial
PHP Manual

O que eu preciso?

Neste tutorial nós presumimos que seu servidor tem suporte ao PHP ativado e que todos os arquivos terminam com a extensão .php são tratados pelo PHP. Na maioria dos servidores esta é a extensão padrão para os arquivos PHP, mas pergunte ao seu administrador só para ter certeza. Se o seu servidor suporta PHP então você não precisa fazer mais nada. Apenas crie seus arquivos .php e coloque-os no seu diretório web e o servidor irá com um passe de mágica mostrar suas páginas PHP. Não há nenhuma necessidade de compilação para qualquer ferramenta extra. Pense nesses arquivos PHP como se eles fossem páginas HTML com algumas tags à mais que deixaram você fazer coisas mais interessantes do que somente páginas HTML estáticas.

Digamos que você quer salvar sua preciosa conexão e desenvolver tudo localmente. Neste caso, você precisará instalar um servidor web, como o » Apache, e claro o » PHP. Você também irá querer instalar uma base de dados, como por exemplo o » MySQL. Você pode instalá-los separadamente ou pelo jeito mais simples que é » usar os pacotes pré-configurados. que irão instalar automaticamente todas as coisas com apenas alguns cliques. É super fácil configurar um servidor web com suporte ao PHP em qualquer sistema operacional, incluindo Linux e Windows. No Linux, você deve procurar o » rpmfind que é muito útil na localização de pacotes RPM.


Um simples tutorial
PHP Manual
html/tutorial.firstpage.html0100644000101200010120000001772411277240152017543 0ustar docbuilderdocbuilder Sua primeira página PHP
Um simples tutorial
PHP Manual

Sua primeira página PHP

Crie um novo arquivo chamado ola.php e coloque-o em seu diretório root do seu servidor web (DOCUMENT_ROOT) com o seguinte conteúdo:

Exemplo #1 Nosso primeiro script PHP: ola.php

<html>
 <head>
  <title>PHP Teste</title>
 </head>
 <body>
 <?php echo "<p>Olá Mundo</p>"?>
 </body>
</html>

Use o seu navegador para acessar o arquivo pelo endereço de seu servidor web, ao final do endereço coloque o arquivo "/ola.php" como referência. Quando o desenvolvimento é local você usará uma url como esta http://localhost/ola.php ou http://127.0.0.1/ola.php mas dependendo da configuração do seu servidor web. Entretanto isto está fora do escopo deste tutorial, veja também as diretivas DocumentRoot e ServerName dos arquivos de configuração do seu servidor web. (no Apache o nome do arquivo é httpd.conf). Se tudo foi configurado corretamente, o arquivo irá ser interpretado pelo PHP e irá mostrar a seguinte mensagem de saída no seu navegador:

<html>
 <head>
  <title>PHP Teste</title>
 </head>
 <body>
 <p>Olá Mundo</p>
 </body>
</html>

Note que isto não é como em um script CGI. O arquivo não precisa ser executável ou especial em nenhum aspecto. Pense nesse arquivo como um arquivo HTML normal mas com a diferença que ele pode conter algumas tags especiais a mais que permitem a você fazer coisas mais interessantes do que somente páginas HTML estáticas.

Este exemplo é extremamente simples e você realmente não precisa usar o PHP para criar uma página como esta. Tudo o que ele faz é mostrar uma mensagem Olá Mundo usando a declaração echo() do PHP.

Se você tentar rodar este exemplo e ele não mostrar nenhuma mensagem de saída, ou aparecer uma caixa de diálogo pedindo para você salvar o arquivo, ou você ver o arquivo em formato de texto, há uma grande chance do seu servidor não ter o PHP habilitado. Peça ao seu administrar para habilitar o PHP para você, usando o capítulo de Instalação do manual. Se você está desenvolvendo localmente, também leia o capítulo indicado acima para ter certeza de que configurou tudo corretamente. Se os problemas continuarem a persistir, não hesite em usar uma das várias formas de » ajuda que o PHP pode lhe oferecer.

O objetivo do exemplo é mostrar o formato especial das tags do PHP. Neste exemplo nós usamos <?php para indicar que à partir daquele ponto começa um código PHP. Então nós colocamos uma declaração de fechamento para indicar que o script PHP acabou, usando a tag ?>. Você pode usar o PHP em qualquer parte do seu código HTML, e também pode usar várias tags de abertura e fechamento no mesmo arquivo. Para mais detalhes, leia a seção do manual que fala da sintaxe básica do PHP.

Nota: Uma Nota sobre os Editores de Texto
Há muitos editores de textos e Integrated Development Enviroments (IDEs) que você pode usar para criar, editar e gerenciar arquivos PHP. Uma lista parcial destas ferramentas pode ser vista na » Lista de Editores para PHP. Se você gostaria de recomendar algum editor, por favor visite o endereço acima e pergunte ao administrador do site para adicionar o seu editor à lista. Ter um editor que colora as sintaxes das tags pode ser muito útil.

Nota: Uma Nota sobre os Processadores Word
Processadores Word como o StarOffice Write, Microsoft Word e Abiword não são boas escolhas para editar arquivos PHP. Se você deseja usar um desses para testar seus scripts, você precisa verificar se você está salvando os arquivos como TEXTO PLANO ou o PHP não irá ser capaz de ler e executar o seu script.

Nota: Uma Nota sobre o Bloco de Notas do Windows
Se você está escrevendo seus scripts PHP usando o Bloco de Notas do Windows, você precisará verificar que os arquivos estão sendo salvos com a extensão .php. (O Bloco de Notas do Windows adiciona automaticamente a extensão .txt aos arquivos a não ser que você siga um dos passos a seguir para previnir isto). Quando a caixa de diálogo Salvar estiver aberta e você for digitar o nome do seu arquivo, coloque o nome do arquivo entre aspas (i.e. "ola.php"). Uma alternativa, é você clicar na lista drop-down 'Documentos de Texto' na caixa de diálogo salvar e alterar para "Todos os tipos de arquivos". Você agora pode digitar o nome do seu arquivo sem usar as aspas.

Agora que você criou com sucesso um script simples em PHP, é hora de criar o mais famoso dos scripts PHP! Uma chamada à função phpinfo() e você verá todas as informações sobre seu sistema e configurações disponíveis como a de Variáveis Pré-definidas, módulos carregados pelo PHP, e as opções de configuração. Tire algum tempo para ver e rever estas importantes informações.


Um simples tutorial
PHP Manual
html/tutorial.useful.html0100644000101200010120000002624511277240152017060 0ustar docbuilderdocbuilder Algo Útil
Um simples tutorial
PHP Manual

Algo Útil

Vamos fazer alguma coisa um pouco mais útil agora. Nós iremos checar qual é o tipo de navegador que o visitante está utilizando para ver a nossa página. De fato, para fazer isto nós teremos que checar qual é o valor da string agente que o navegador envia como parte de sua requisição HTTP. Esta informação é armazenada em uma variável. Variáveis sempre começam com um símbolo de cifrão no PHP. A variável que nos interessa no momento é a $_SERVER["HTTP_USER_AGENT"].

Nota: Nota sobre as Auto-Globais do PHP
$_SERVER é uma variável especial reservada do PHP que contém todas as informações sobre o servidor web. Ela é conhecida como uma Auto-Global (ou Superglobal). Veja a página do manual relacionada as Auto-globais para mais informações. Estas variáveis especiais foram introduzidas no PHP » 4.1.0. Antes desta versão, nós usávamos os velhos arrays $HTTP_*_VARS, como o $HTTP_SERVER_VARS. Entretanto, este estilo antigo foi removido, porém ainda existem. (Veja a nota sobre códigos antigos.)

Para chamar esta variável, nós podemos fazer isto:

Exemplo #1 Imprimindo a variável (Elemento Array)

<?php echo $_SERVER["HTTP_USER_AGENT"]; ?>

Um exemplo de saída deste script poderia ser:


Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)

Há muitos tipos de variáveis disponíveis no PHP. No exemplo acima nós escrevemos um elemento Array. Arrays podem ser muito úteis.

$_SERVER é somente uma variável que é automaticamente disponibilizada para você pelo PHP. Uma lista de Variáveis Reservadas pode ser vista na seção Variáveis Reservadas do manual ou você pode pegar uma lista completa delas criando um arquivo como este:

Exemplo #2 Exibindo todas as variáveis pré-definidas usando a função phpinfo()

<?php phpinfo(); ?>

Se você carregar este arquivo no seu navegador você irá ver uma página com todas as informações sobre o PHP junto com uma lista de todos os tipos de variáveis disponíveis para você.

Você pode colocar múltiplas declarações PHP dentro da tag PHP e criar pequenos blocos de códigos que fazem muito mais do que um simples echo. Por exemplo, se você quer checar se o navegador é o Internet Explorer faça algo como isso:

Exemplo #3 Exemplo usando controles de declarações e funções

<?php
if (strstr($_SERVER["HTTP_USER_AGENT"], "MSIE")) {
    echo 
"Você está usando o Internet Explorer<br />";
}
?>

Um exemplo de Saída seria:

Você está usando o Internet Explorer<br />

Aqui nós mostraremos alguns novos conceitos. Nós temos a declaração if. Se você é familiar com a sintaxe básica usada pela linguagem C isto parecerá ser lógico para você. Se você não conhece a linguagem C ou alguma outra linguagem onde a sintaxe usada acima é usada, você provavelmente precisará de um livro introdutório sobre o PHP, dê uma lida nos primeiros capítulos do livro, ou leia a parte sobre a Referência da Linguagem no manual. Você pode encontrar uma lista de livros sobre PHP em at » http://www.php.net/books.php.

O segundo conceito que iremos abordar é a chamada à função strstr(). A função strstr() é trazida junto com o PHP, ela faz uma busca em uma palavra por uma outra palavra. Neste caso nós procuramos pela palavra "MSIE" dentro de $_SERVER["HTTP_USER_AGENT"]. Se a palavra for encontrada, a função retorna TRUE e se ela não for encontrada a função retorna FALSE. Se o retorno for TRUE, a declaração if ocorre e o código dentro dela é executado. Caso contrário, o código não é executado. Sinta-se à vontade para criar exemplos similares com o if, else, e outras funções como a strtoupper() e strlen(). Cada uma delas está no manual com seus respectivos exemplos.

Nós podemos avançar agora e mostrar a você como alternar entre os modos PHP mesmo que você esteja executando blocos de códigos:

Exemplo #4 Mesclando entre os modos PHP e HTML

<?php
if (strstr($_SERVER["HTTP_USER_AGENT"], "MSIE")) {
?>
<h3>strstr retorna verdadeiro</h3>
<center><b>Você está usando o Internet Explorer</b></center>
<?php
} else {
?>
<h3>strstr retorna falso</h3>
<center><b>Você não está usando o Internet Explorer</b></center>
<?php
}
?>

Um exemplo de saída deste script poderia ser:

<h3>strstr retorna verdadeiro</h3>
<center><b>Você está usando o Internet Explorer</b></center>

Ao invés de usar a declaração echo do PHP para imprimir a saída dos dados, nós saímos do modo do PHP e usamos o HTML normal. O importante à notar aqui é que a lógica do script continua intacta. Somente alguns blocos HTML será enviados de acordo com o que a declaração strstr() retornar, ou seja TRUE ou FALSE. Em outras palavras, se a palavra MSIE for encontrada ou não.


Um simples tutorial
PHP Manual
html/tutorial.forms.html0100644000101200010120000001163511277240152016700 0ustar docbuilderdocbuilder Tratando Formulários
Um simples tutorial
PHP Manual

Tratando Formulários

Uma das características mais fortes do PHP é o jeito como ele trata formulários HTML. O conceito básico que é importante entender é que qualquer elemento de formulário em um formulário irá automaticamente ficar disponível para você usá-los em seus scripts PHP. Por favor leia a seção Variáveis externas do PHP para mais informações e exemplos de como usar formulários com PHP. Aqui vai um exemplo:

Exemplo #1 Um simples formulário HTML

<form action="acao.php" method="POST">
 Seu nome <input type="text" name="nome" />
 Sua idade: <input type="text" name="idade" />
 <input type="submit">
</form>

Não há nada de especial neste formulário. É um formulário HTML comum sem nenhuma tag especial de qualquer tipo. Quando o usuário preencher este formulário e clicar no botão enviar, a página action.php é chamada. Neste arquivo nós teremos algo como este:

Exemplo #2 Imprimindo dados de nosso formulário

Oi <?php echo $_POST["nome"]; ?>.
Você tem <?php echo $_POST["idade"]; ?> anos.

Um exemplo de saída deste script seria:

Oi Thomas.
Você tem 18 anos.

É óbvio o que este script faz. Não há nada de mais nele. As variáveis $_POST["nome"] e $_POST["idade"] são automaticamente criadas para você pelo PHP. Antigamente nós usávamos a auto-global $_SERVER, agora nós simplesmente usamos a auto-global $_POST que contém todos os dados vindos do POST. Se você usar o método GET então nossas informações residirão na auto-global $_GET. Você também pode usar a auto-global $_REQUEST se você não se importa com o tipo de dados que vêm do seu formulário. Esta auto-global contém uma mescla de GET, POST, COOKIE e FILE. Veja também a função import_request_variables().


Um simples tutorial
PHP Manual
html/tutorial.oldcode.html0100644000101200010120000001055411277240152017162 0ustar docbuilderdocbuilder Usando códigos antigos com a nova versão do PHP
Um simples tutorial
PHP Manual

Usando códigos antigos com a nova versão do PHP

Agora que o PHP cresceu e é uma linguagem de script popular, há recursos públicos que contém código que você pode reusar em seus próprios scripts. Os desenvolvedores do PHP tentaram largamente manter a compatibilidade, para que um script escrito em uma versão mais antiga do PHP (deva) rodar sem nenhuma alteração em uma versão mais nova do PHP. Na prática algumas alterações serão geralmente necessárias.

Duas das coisas mais importantes recentemente alteradas que afetam um código antigo é:

Para mais detalhes destas alterações, veja a seção variáveis pré-definidas.


Um simples tutorial
PHP Manual
html/tutorial.whatsnext.html0100644000101200010120000000321711277240152017574 0ustar docbuilderdocbuilder O que mais?
Um simples tutorial
PHP Manual

O que mais?

Com o que você sabe agora você deverá estar apto à entender a maioria do manual e também os vários exemplos de scripts disponíveis no arquivo de exemplos. Você também pode encontrar outros exemplos nos sites do php.net e nos links da seção: » http://www.php.net/links.php.


Um simples tutorial
PHP Manual
html/tutorial.html0100644000101200010120000000431411277240152015547 0ustar docbuilderdocbuilder Um simples tutorial
Começando
PHP Manual

Um simples tutorial

Índice

Aqui nós iremos mostrar o básico do básico do PHP em um curto tutorial. Este texto fala somente sobre a criação de páginas dinâmicas com o PHP, visto que o PHP pode criar mais do que somente webpages. Veja a seção entitulada O que o PHP pode fazer para mais informações.

Fazer páginas com PHP é o mesmo que criar páginas HTML e você pode criá-las e editá-las da mesma maneira que faz com suas páginas HTML normal.


Começando
PHP Manual
html/getting-started.html0100644000101200010120000000360211277240152017010 0ustar docbuilderdocbuilder Começando
Manual do PHP
PHP Manual

Começando


Manual do PHP
PHP Manual
html/install.general.html0100644000101200010120000001210511277240152016763 0ustar docbuilderdocbuilder Considerações Gerais sobre Instalação
Instalação e Configuração
PHP Manual

Considerações Gerais sobre Instalação

Antes de começar a instalar o PHP, primeiro você deve saber o que você deseja fazer com ele. Existem três principais formas de se usar o PHP, como descrito na seção O que o PHP pode fazer? do manual:

Para a primeira forma, e mais comum, você precisa de três coisas: o prório PHP, um servidor web e um cliente (browser) web. Você provavelmente já tem um browser, e dependendo da configuração do seu sistema operacional, vocêo pode tambem ter um servidor web (Ex.: Apache no Linux e MacOS X; IIS no Windows). Você também pode alugar um host em uma companhia qualquer. Dessa maneira, você não precisa configurar nada por conta própria, apenas escrever os seus scripts PHP, enviar (upload) para o servidor que você alugou, e ver os resultados no seu browser.

No caso de você instalar o servidor e o PHP por contra própria, você tem duas escolhas para o método de conexão do PHP com o servidor. Para muitos servidores o PHP tem uma interface direta de módulo (também chamada de SAPI). Entre esses servidores estão Apache, Microsoft Internet Information Server, Netscape e iPlanet. Muitos outros servidores têm suporte para ISAPI, a interface de módulo da Microsoft (OmniHTTPd por exemplo). Se o PHP não tiver suporte de módulo para o seu servidor web, você também pode usá-lo como processador CGI ou FastCGI. Isso significar configurar seu servidor para usar executáveis CGI do PHP para processar todas as requisições à arquivos PHP no servidor.

Se você também estiver interessado em usar o PHP para criar scripts em linha de comandos (Ex.: criar scripts que geram imagens enquanto estão offline, ou processar arquivos de texto dependendo de alguns argumentos que você passar ao script), você pode precisar do executável de linha de comando. Para mais informações, leia a seção sobre criando aplicações de linha de comando com o PHP. Nesse caso, vocêo não precisa de servidor nem de um browser.

Com o PHP, você também pode criar aplicações para desktop com interface gráfica (GUI) usando a extenção PHP-GTK. Isso é uma abordagem completamente diferente da criação de páginas web, já que a saída não é em HTML, mas o manuseio de janelas e objetos dentro delas. Para mais informações sobre PHP-GTK, por favor » visite o site dedicado à essa extensão. PHP-GTK não é inclusa na distribuição oficial do PHP.

Por enquanto, essa seção trata da instalação do PHP em servidores web no Unix e Windows como módulos dos servidores e executáveis CGI. Você também pode encontrar inforamação sobre executáveis de linha de comando nas seções seguintes.

O código fonte do PHP e distribuições binárias para Windows podem ser encontradas em » http://www.php.net/downloads.php. Nós recomentandos que você escolha um » mirror mais próximo de vocêo para baixar as distribuições.


Instalação e Configuração
PHP Manual
html/install.unix.apache.html0100644000101200010120000003217611277240152017563 0ustar docbuilderdocbuilder Apache 1.3.x em sistemas Unix
Instalação em sistemas Unix
PHP Manual

Apache 1.3.x em sistemas Unix

Essa seção contem notas e dicas específicas para a instação do Apache e do PHP em plataformas Unix. Também temos instruções e notas para o Apache 2 em uma página separada.

Você pode selecionar argumentos para adicionar ao configure na linha 10 abaixo através da Lista completa de opções do configure e das opções específicas das extensões em seus respectivos lugares no manual. Os números de versões foram omitidos aqui, para assegurar que as instruções não estejam incorretas. Você deverá trocar o 'xxx' aqui com os valores corretos dos seus arquivos.

Exemplo #1 Instruções de Instalação (Apache Versão de Módulo Compartilhado) para PHP

1.  gunzip apache_xxx.tar.gz
2.  tar -xvf apache_xxx.tar
3.  gunzip php-xxx.tar.gz
4.  tar -xvf php-xxx.tar
5.  cd apache_xxx
6.  ./configure --prefix=/www --enable-module=so
7.  make
8.  make install
9.  cd ../php-xxx

10. Agora, configure o seu PHP. É aqui que você personaliza seu PHP
    com várias opções, como quais extensões serão habilitadas. Execute o
    comando ./configure --help para uma lista das opções disponíveis. No nosso exemplo
    nós faremos uma simples configuração com Apache 1 e suporte ao MySQL. Seu caminho
    para o arquivo apxs pode ser diferente do exemplo.

      ./configure --with-mysql --with-apxs=/www/bin/apxs

11. make
12. make install

    Se você decidir mudar as opções de seu configure depois da instalação
    você precisará somente repetir os últimos 3 passos. Você somente precisará
    reiniciar o Apache para o novo módulo funcionar. Não será necessário recompilar
    o Apache.

    Note que, por padrão, 'make install' também instalará PEAR, além
    de várias ferramentas do PHP como phpize, instalar o CLI do PHP e mais.

13. Configurando seu arquivo php.ini:

      cp php.ini-dist /usr/local/lib/php.ini

    Você pode editar o seu arquivo .ini para configurar as opções do PHP.  Se
    você preferir que este arquivo fique em outro lugar, use a opção
    --with-config-file-path=/caminho no passo 10.

    Se ao invés de escolher o arquivo php.ini-dist, você escolher o arquivo php.ini-recommended,
    leia a lista de mudanças dentro do mesmo, uma vez que elas afetam a maneira como o PHP se comporta.

14. Edite o seu arquivo httpd.conf para carregar o módulo do PHP. O caminho no lado direito
    do comando LoadModule deve apontar para para o caminho do módulo PHP no seu sistema.
    O comando make install acima já deve ter adicionado estas linhas, mas tenha certeza
    de que as linhas abaixo foram adicionadas ao arquivo.

    Para o PHP 4:

      LoadModule php4_module libexec/libphp4.so

    Para o PHP 5:

      LoadModule php5_module libexec/libphp5.so

15. Em seguida, na seção AddModule do arquivo httpd.conf, em algum lugar
    abaixo de ClearModuleList, adicione isto:

    Para o PHP 4:

      AddModule mod_php4.c

    Para o PHP 5:

      AddModule mod_php5.c

16. Diga ao Apache para avaliar certas extensões como PHP. Por exemplo,
    vamos fazer o Apache interpretar a extensão .php como um script PHP. Você poderia
    ter qualquer extensão(ões) avaliadas como PHP simplesmente adicionando-as, com
    cada uma separada por um espaço. Vamos adicionar .phtml para demonstrar.

      AddType application/x-httpd-php .php .phtml

    Também é comum configurar a extensão .phps para mostrar o código-fonte
    do script PHP com highlight, isso pode ser feito com:

      AddType application/x-httpd-php-source .phps

17. Use seu procedimento normal para iniciar o servidor Apache. (Você deve
    parar e reiniciar o servidor, não somente fazer um reinício enviando
    um sinal HUP ou USR1.)

Outra maneira é instalar o PHP como um objeto estático:

Exemplo #2 Instruções de Instalação (Instalação como módulo estático do Apache) para o PHP

1.  gunzip -c apache_1.3.x.tar.gz | tar xf -
2.  cd apache_1.3.x
3.  ./configure
4.  cd ..

5.  gunzip -c php-5.x.y.tar.gz | tar xf -
6.  cd php-5.x.y
7.  ./configure --with-mysql --with-apache=../apache_1.3.x
8.  make
9.  make install

10. cd ../apache_1.3.x

11. ./configure --prefix=/www --activate-module=src/modules/php5/libphp5.a
    (A linha acima está correta! Sim, sabemos que libphp4.a não existe nesse
    estágio. E nem deveria. Ele será criado.)

12. make
    (você deve agora ter um binário httpd que você pode copiar para o diretório bin do Apache. Se
    for sua primeira instalação então você precisa executar "make install" também)

13. cd ../php-5.x.y
14. cp php.ini-dist /usr/local/lib/php.ini

15. Você pode editar o arquivo /usr/local/lib/php.ini para editar as opçso do PHP.
    Edite o seu arquivo httpd.conf ou srm.conf e adicione:
    AddType application/x-httpd-php .php

Nota: Substitua php-5 por php-4 e php5 por php4 no PHP 4.

Dependendo da sua instalação do Apache e das variações Unix, existem inúmeras maneiras possíveis de parar e reiniciar o servidor. Abaixo estão algumas linhas típicas usadas para reiniciar e o servidor, para instalações de versões de apache/unix. Você deve trocar /caminho/para/ pelo caminho destas aplicações nos seus sistemas.

Exemplo #3 Exemplo de comandos para reinicialização do Servidor Apache

1. Várias distribuições Linux e variantes do SysV:
/etc/rc.d/init.d/httpd restart

2. Usando os scripts apachectl:
/path/to/apachectl stop
/path/to/apachectl start

3. httpdctl and httpsdctl (Usando OpenSSL), igual ao apachectl:
/path/to/httpsdctl stop
/path/to/httpsdctl start

4. Usando mod_ssl, ou outro servidor SSL, você pode querer iniciar
ou reiniciar manualmente:
/path/to/apachectl stop
/path/to/apachectl startssl

As localizações dos binários apachectl e http(s)dctl geralmente variam. Se o seu sistema tem os comandos locate ou whereis ou which, estem podem lhe ajudar a encontrar os programas de controle do servidor.

Exemplos diferentes de compilação do PHP para apache estão a seguir:

./configure --with-apxs --with-pgsql

Isso criará uma biblioteca compartilhada libphp5.so (ou libphp4.so no PHP 4) que é carregada pelo Apache ao adicionar uma linha LoadModule no arquivo httpd.conf do Apache. O suporte ao PostgreSQL é embutido nessa biblioteca.

./configure --with-apxs --with-pgsql=shared

Isto irá criar uma biblioteca compartilhada libphp4.so para o Apache, mas isto também criará uma biblioteca compartilhada pgsql.so que é carregada com o PHP tanto ao usar a diretiva de extensão no arquivo php.ini ou então carregando ela explícitamente no script usando a função dl().

./configure --with-apache=/path/to/apache_source --with-pgsql

Isto irá criar uma biblioteca libmodphp5.a, o arquivo mod_php5.c e vários arquivos dependentes e copiará eles para o diretório src/modules/php5 na árvore de diretório do código fonte do Apache. Então você compilará o Apache usando a opção --activate-module=src/modules/php5/libphp5.a e o sistema de compilação do Apache irá criar o arquivo libphp5.a e fará um link estático dentro do binário httpd (substitua php5 por php4 no PHP 4). O suporte ao PostgreSQL estará incluído diretamente neste binário httpd, então o resultado final aqui será um único arquivo binário httpd que incluirá tudo do Apache e tudo do PHP.

./configure --with-apache=/path/to/apache_source --with-pgsql=shared

Mesmo que o anterior, exceto em vez de incluir o suporte ao PostgreSQL diretamente no binário httpd você terá uma biblioteca compartilhada pgsql.so que você poderá carregar com o PHP tanto do arquivo php.ini ou diretamente usando a função dl().

Quanto estiver decidindo compilar o PHP com maneiras diferentes, você deverá considerar as vantages e disvantagens de cada método. Complilando como uma biblioteca compartilhada significará que você poderá compilar o apache separadamente, e não terá que recompilar tudo quando quiser adicionar ou mudar o seu PHP. compilando o PHP dentro do apache (método estático) significará que o PHP irá carregar e rodar rapidamente. Para maiores informações, veja a página web do Apache que fala sobre » Suporte a Objetos Dinâmicos Compartilhados.

Nota: O arquivo httpd.conf padrão do Apache atualmente já contém uma seção que se parece com isso:

User nobody
Group "#-1"

A menos que você mude isto para "Group nogroup" ou algo assim ("Group daemon" é também muito comum) o PHP não estará apto a abrir arquivos.

Nota: Tenha certeza de especificar a versão instalada do apxs quando usar a opção --with-apxs=/caminho/para/apxs. Você NÂO deverá usar a versão do apxs que está nos fontes do apache e sim a que está atualmente instalada no seu sistema.


Instalação em sistemas Unix
PHP Manual
html/install.unix.apache2.html0100644000101200010120000002361511277240152017643 0ustar docbuilderdocbuilder Apache 2.0 em sistemas Unix
Instalação em sistemas Unix
PHP Manual

Apache 2.0 em sistemas Unix

Essa seção contém notas e dicas específicas para a instalação do Apache 2.0 com o PHP em sistemas Unix.

Aviso

Nós não recomendamos a utilização de um threaded MPM em produção com o Apache2. Use ao invés prefork MPM, ou use Apache1. para informações sobre o motivo, leia este faq sobre usando Apache2 com um threaded MPM

Recomendamos a » Documentação do Apache para obter um entendimento básico do servidor Apache 2.0.

Nota: Notas de compatibilidade do PHP e Apache 2.0.x
As seguintes versões do PHP são compatíveis com a versão mais recente do Apache 2.0.x:

Essas versões do PHP são compatíveis com Apache 2.0.40 ou superior.
Suporte a SAPI do Apache 2.0 começou no PHP 4.2.0. PHP 4.2.3 funciona com Apache 2.0.39, não use qualquer outra versão de Apache com PHP 4.2.3. No entando, a configuração recomendada é usar o 4.3.0 ou superior com a versão mais recente do Apache2.
Todas as versões mencionadas do PHP ainda funcionarão com Apache 1.3.x.

Baixe a versão mais recente do » Apache 2.0 e uma versão adequada do PHP dos lugares mencionados acima. Esse guia rápido cobre apenas o básico para para começar a usar o Apache 2.0 e o PHP. Para mais informação, leia a » Documentação do Apache Os número de versão foram omitidos para assegurar que as instruções não estejam incorretas. Você precisará substituir o 'NN' com os valores corretos dos seus arquivos.

Exemplo #1 Instruções de Instalação (Versão de Módulo Compartilhado do Apache 2)

1.  gzip -d httpd-2_0_NN.tar.gz
2.  tar xvf httpd-2_0_NN.tar
3.  gunzip php-NN.tar.gz
4.  tar -xvf php-NN.tar
5.  cd httpd-2_0_NN
6.  ./configure --enable-so
7.  make
8.  make install

    Agora você tem o Apache 2.0.NN disponível no diretório /usr/local/apache2,
    configurado com suporte a módulo compartilhado e o prefork MPM padrão.
    Para testar a instalação use o procedimento normal para iniciar
    o servidor Apache, ex.:
    /usr/local/apache2/bin/apachectl start
    e pare o servidor para ir para a configuração do PHP:
    /usr/local/apache2/bin/apachectl stop.

9.  cd ../php-NN

10. Agora, configure o seu PHP. É aqui que você personaliza seu PHP
    com várias opções, como quais extensões serão habilitadas. Execute o
    comando ./configure --help para uma lista das opções disponíveis. No nosso exemplo
    nós faremos uma simples configuração com Apache 2 e suporte ao MySQL. Seu caminho
    para o arquivo apxs pode ser diferente do exemplo. De fato, o binário pode até ser
    chamado de apxs2 no seu sistema.

      ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql

11. make
12. make install

    Se você decidir mudar as opções de seu configure depois da instalação
    você precisará somente repetir os últimos 3 passos. Você somente precisará
    reiniciar o Apache para o novo módulo funcionar. Não será necessário recompilar
    o Apache.

    Note que, por padrão, 'make install' também instalará PEAR, além
    de várias ferramentas do PHP como phpize, instalar o CLI do PHP e mais.

13. Configurando seu arquivo php.ini:

    cp php.ini-dist /usr/local/lib/php.ini

    Você pode editar o seu arquivo .ini para configurar as opções do PHP.  Se
    você preferir que este arquivo fique em outro lugar, use a opção
    --with-config-file-path=/caminho no passo 10.

    Se ao invés de escolher o arquivo php.ini-dist, você escolher o arquivo php.ini-recommended,
    leia a lista de mudanças dentro do mesmo, uma vez que elas afetam a maneira como o PHP se comporta.

14. Edite o seu arquivo httpd.conf para carregar o módulo do PHP. O caminho no lado direito
    do comando LoadModule deve apontar para para o caminho do módulo PHP no seu sistema.
    O comando make install acima já deve ter adicionado estas linhas, mas tenha certeza
    de que as linhas abaixo foram adicionadas ao arquivo.

    Para o PHP 4:

      LoadModule php4_module libexec/libphp4.so

    Para o PHP 5:

      LoadModule php5_module libexec/libphp5.so

15. Diga ao Apache para avaliar certas extensões como PHP. Por exemplo,
    vamos fazer o Apache interpretar a extensão .php como um script PHP. Você poderia
    ter qualquer extensão(ões) avaliadas como PHP simplesmente adicionando-as, com
    cada uma separada por um espaço. Vamos adicionar .phtml para demonstrar.

      AddType application/x-httpd-php .php .phtml

    Também é comum configurar a extensão .phps para mostrar o código-fonte
    do script PHP com highlight, isso pode ser feito com:

      AddType application/x-httpd-php-source .phps

16. Use seu procedimento normal para iniciar o servidor Apache ex.:

      /usr/local/apache2/bin/apachectl start

Seguindo os passos acima você terá rodando o Apache 2.0 com suporte para o PHP como um módulo SAPI. Claro que existem muitas outras opções de configuração disponível para ambos, Apache e o PHP. Para mais informações use o comando ./configure --help na árvore de arquivos fontes correspondente. Caso você desejar compilar uma versão multithreaded do Apache 2.0, você deve sobrescrever o Módulo-MPM padrão prefork ou com o módulo worker ou com o perchild. Para fazer isso, acrescente ao comando configure no passo 6 acima a opção --with-mpm=worker ou --with-mpm=perchild. Tome cuidado com as consequências e entenda o que está fazendo. Para mais informações, leia a documentação do Apache sobre os » Módulos-MPM.

Nota: Se você quiser usar negociação de conteúdo, leia o FAQ relacionado à MultiViews.

Nota: Para compilar uma versão multithreaded do Apache, seu sistema deve suportar threads. Isso também implica compilar o PHP com o Zend Thread Safety (ZTS) experimental. Portanto, nem todas as extensões podem estar disponíveis. A configuração recomendada para compilar o Apache é com o Módulo-MPM prefork padrão.


Instalação em sistemas Unix
PHP Manual
html/install.unix.lighttpd-14.html0100644000101200010120000001342111277240152020373 0ustar docbuilderdocbuilder Lighttpd 1.4 on Unix systems
Instalação em sistemas Unix
PHP Manual

Lighttpd 1.4 on Unix systems

This section contains notes and hints specific to Lighttpd 1.4 installs of PHP on Unix systems.

Please use the » Lighttpd trac to learn how to install Lighttpd properly before continuing.

Fastcgi is the preferred SAPI to connect PHP and Lighttpd. Fastcgi is automagically enabled in php-cgi in PHP 5.3, but for older versions configure PHP with --enable-fastcgi. To confirm that PHP has fastcgi enabled, php -v should contain PHP 5.2.5 (cgi-fcgi) Before PHP 5.2.3, fastcgi was enabled on the php binary (there was no php-cgi).

Letting Lighttpd spawn php processes

To configure Lighttpd to connect to php and spawn fastcgi processes, edit lighttpd.conf. Sockets are preferred to connect to fastcgi processes on the local system.

Exemplo #1 Partial lighttpd.conf

server.modules += ( "mod_fastcgi" )

fastcgi.server = ( ".php" =>
  ((
    "socket" => "/tmp/php.socket",
    "bin-path" => "/usr/local/bin/php-cgi",
    "bin-environment" => (
      "PHP_FCGI_CHILDREN" => "16",
      "PHP_FCGI_MAX_REQUESTS" => "10000"
    ),
    "min-procs" => 1,
    "max-procs" => 1,
    "idle-timeout" => 20
  ))
)

The bin-path directive allows lighttpd to spawn fastcgi processes dynamically. PHP will spawn children according to the PHP_FCGI_CHILDREN environment variable. The "bin-environment" directive sets the environment for the spawned processes. PHP will kill a child process after the number of requests specified by PHP_FCGI_MAX_REQUESTS is reached. The directives "min-procs" and "max-procs" should generally be avoided with PHP. PHP manages its own children and opcode caches like APC will only share among children managed by PHP. If "min-procs" is set to something greater than 1, the total number of php responders will be multiplied PHP_FCGI_CHILDREN (2 min-procs * 16 children gives 32 responders).

Spawning with spawn-fcgi

Lighttpd provides a program called spawn-fcgi to ease the process of spawning fastcgi processes easier.

Spawning php-cgi

It is possible to spawn processes without spawn-fcgi, though a bit of heavy-lifting is required. Setting the PHP_FCGI_CHILDREN environment var controls how many children PHP will spawn to handle incoming requests. Setting PHP_FCGI_MAX_REQUESTS will determine how long (in requests) each child will live. Here's a simple bash script to help spawn php responders.

Exemplo #2 Spawning FastCGI Responders

#!/bin/sh

# Location of the php-cgi binary
PHP=/usr/local/bin/php-cgi

# PID File location
PHP_PID=/tmp/php.pid

# Binding to an address
#FCGI_BIND_ADDRESS=10.0.1.1:10000
# Binding to a domain socket
FCGI_BIND_ADDRESS=/tmp/php.sock

PHP_FCGI_CHILDREN=16
PHP_FCGI_MAX_REQUESTS=10000

env -i PHP_FCGI_CHILDREN=$PHP_FCGI_CHILDREN \
       PHP_FCGI_MAX_REQUESTS=$PHP_FCGI_MAX_REQUESTS \
       $PHP -b $FCGI_BIND_ADDRESS &

echo $! > "$PHP_PID"

Connecting to remote FCGI instances

Fastcgi instances can be spawned on multiple remote machines in order to scale applications.

Exemplo #3 Connecting to remote php-fastcgi instances

fastcgi.server = ( ".php" =>
   (( "host" => "10.0.0.2", "port" => 1030 ),
    ( "host" => "10.0.0.3", "port" => 1030 ))
)

Instalação em sistemas Unix
PHP Manual
html/install.unix.caudium.html0100644000101200010120000000703011277240152017760 0ustar docbuilderdocbuilder Caudium
Instalação em sistemas Unix
PHP Manual

Caudium

O PHP pode ser compilado como um módulo do Pike para o » servidor web Caudium. Siga as instruções abaixo para instalar o PHP 4 para o Caudium.

Exemplo #1 Instruções de Instalação para o Caudium

1.  Verifique que você tem o Caudium instalado antes de tentar
    instalar o PHP 4. Para que o PHP funcione corretamente, você precisará do Pike
    7.0.268 ou superior. Nesse exemplo, presumiremos que
    o Caudium foi instalado no diretório /opt/caudium/server/.
2.  Mude para o diretório php-x.y.z (onde x.y.z é o número da versão).
3.  ./configure --with-caudium=/opt/caudium/server
4.  make
5.  make install
6.  Reinicie o Caudium se ele estiver sendo executado.
7.  Entre na interface gráfica de configuração e vá no
    servidor virtual (virtual server) onde você adicionará suporte ao PHP 4.
8.  Clique em Adicionar Módulo (Add Module) e localize e depois adicione o módulo PHP 4 Script Support.
9.  Se a documentação disser que o 'O interpretador do PHP não está
    disponível', verifique que você reiniciou o servidor. Se você
    verificou, procure em /opt/caudium/logs/debug/default.1 por algum erro relacionado à
    <filename>PHP4.so</filename>. Também certifique-se que o arquivo
    <filename>caudium/server/lib/[pike-version]/PHP4.so</filename>
    está presente.
10. Configure o módulo do PHP se necessário.

Você pode, é claro, compilar o módulo do Caudium com suporte para as várias extensões disponíveis no PHP 4. Veja as páginas de referência por opções específicas para a extensão que você deseja.

Nota: Quando compilar o PHP 4 com suporte ao MySQL, você deve verificar que o código normal de cliente MySQL é usado. Caso contrário, pode haver conflitos se seu Pike já tiver suporte ao MySQL. Você faz isso especificando um diretório de instalação do MySQL com a opção --with-mysql.


Instalação em sistemas Unix
PHP Manual
html/install.unix.fhttpd.html0100644000101200010120000000411211277240152017620 0ustar docbuilderdocbuilder Notas relacionadas à fhttpd
Instalação em sistemas Unix
PHP Manual

Notas relacionadas à fhttpd

Para compilar o PHP como módulo fhttpd, responda "yes" para "Build as an fhttpd module?" (a opção do script configure --with-fhttpd=DIR deve ser usada) e especifique o diretório base dos fontes do fhttpd. O diretório padrão é /usr/local/src/fhttpd. Se você estiver rodando fhttpd, compilar o PHP como um módulo lhe dará melhor performance, mais controle e capacidade de execução remota.

Nota: Suporte para fhttpd não está mais disponível a partir do PHP 4.3.0.


Instalação em sistemas Unix
PHP Manual
html/install.unix.sun.html0100644000101200010120000004151111277240152017140 0ustar docbuilderdocbuilder Sun, iPlanet e servidores Netscape no Solaris da Sun
Instalação em sistemas Unix
PHP Manual

Sun, iPlanet e servidores Netscape no Solaris da Sun

Essa seção contem notas e dicas específicas para instação do PHP nos servidores un Java System Web Server, Sun ONE Web Server, iPlanet e Netscape no Solaris.

A partir do PHP 4.3.3, você pode usar scripts PHP com o módulo NSAPI para gerar listagem de diretórios e páginas de erro personalizadas. Funções adicionais para compatibilidade com o Apache também estão disponíveis. Para suporte nos webservers atuais, leia a nota sobre sub-requisições.

Você pode achar mais informações sobre como instalar o PHP para o Servidor Netscape Enterprise (NES) aqui: » http://benoit.noss.free.fr/php/install-php4.html

Para compilar o PHP com servidores web Sun JSWS/Sun ONE WS/iPlanet/Netscape, entre o diretório apropriado de instalação para a opção --with-nsapi=[DIR] O diretório padrão é, normalmente /opt/netscape/suitespot/. Por favor, leia também /php-xxx-version/sapi/nsapi/nsapi-readme.txt.

  1. Instale os seguintes pacotes de » http://www.sunfreeware.com/ ou outro site de download:

    • autoconf-2.13
    • automake-1.4
    • bison-1_25-sol26-sparc-local
    • flex-2_5_4a-sol26-sparc-local
    • gcc-2_95_2-sol26-sparc-local
    • gzip-1.2.4-sol26-sparc-local
    • m4-1_4-sol26-sparc-local
    • make-3_76_1-sol26-sparc-local
    • mysql-3.23.24-beta (se você quiser suporte ao MySQL)
    • perl-5_005_03-sol26-sparc-local
    • tar-1.13 (GNU tar)

  2. Assegure-se que seu PATH inclue os diretórios apropriados PATH=.:/usr/local/bin:/usr/sbin:/usr/bin:/usr/ccs/bin E está disponível para o seu sistema export PATH .
  3. gunzip php-x.x.x.tar.gz (se você tiver uma distribuição .gz, caso contrário vá para o passo 4).
  4. tar xvf php-x.x.x.tar
  5. Mude para o diretório recém-criado: cd ../php-x.x.x
  6. Para o passo seguinte, assegure-se de que /opt/netscape/suitespot/ é onde o seu servidor Netscape está instalado. Caso contrário, mude o comando abaixo para o caminho correto e execute:

    ./configure --with-mysql=/usr/local/mysql \
    --with-nsapi=/opt/netscape/suitespot/ \
    --enable-libgcc

  7. Execute make seguido de make install.

Depois de fazer a instalação básica e ler o arquivo readme apropriado, você pode precisar executar alguns passos extras de configuração.

Instruções de Configuração para o Sun/iPlanet/Netscape

Primeiramente, você pode preciasr adicionar alguns caminhos para a váriavel de ambiente LD_LIBRARY_PATH para que o servidor ache as bibliotecas compartilhadas. A melhor maneira de fazer isso é no script de inicialização do ser servidor web. Esse script normalmente está localizado em: /caminho/para/servidor/https-nome_do_servidor/start. Você pode precisar também de editar os arquivos de configuração que estão localizados em: /caminho/para/servidor/https-nome_do_servidor/config/.

  1. Adicione a seguinte linha no arquivo mime.types (você pode fazer isso pelo servidor de administração):

    type=magnus-internal/x-httpd-php exts=php
    

  2. Edite o arquivo magnus.conf (para servidores >= 6) ou o arquivo obj.conf (para servidores < 6) e adicione a seguinte biblioteca compartilhada que pode variar dependendo do seu sistema, ela se parecererá com /opt/netscape/suitespot/bin/libphp4.so. Você deve colocar as seguintes linhas após mime types init.

    Init fn="load-modules" funcs="php4_init,php4_execute,php4_auth_trans" shlib="/opt/netscape/suitespot/bin/libphp4.so"
    Init fn="php4_init" LateInit="yes" errorString="Failed to initialize PHP!" [php_ini="/path/to/php.ini"]
    

    (PHP >= 4.3.3) O parâmetro php_ini é opcional mas com ele você pode colocar seu arquivo php.ini no diretório config do seu servidor web.

  3. Configure o objeto padrão no arquivo obj.conf (para classes de servidor virtuais [versão 6.0+] no arquivo vserver.obj.conf):

    <Object name="default">
    .
    .
    .
    .#NOTA Essa linha deve acontecer após todos as linhas 'ObjectType' e antes de todas as linas 'AddLog'
    Service fn="php4_execute" type="magnus-internal/x-httpd-php" [inikey=value inikey=value ...]
    .
    .
    </Object>
    

    (PHP >= 4.3.3) Como parâmetros adicionais, você pode acrescentar valores especiais do php.ini, por exemplo, você pode editar um docroot="/path/to/docroot" específico para o contexto php4_execute chamado. Para valores booleanos, use 0/1 como valor, não "On","Off",... (isso não funcionará corretamente) ,ex.: zlib.output_compression=1 ao invés de zlib.output_compression="On"

  4. Isso só é necessários se você quiser configurar um diretório que apenas consiste de scripts PHP (assim como um diretório cgi-bin):

    <Object name="x-httpd-php">
    ObjectType fn="force-type" type="magnus-internal/x-httpd-php"
    Service fn=php4_execute [inikey=value inikey=value ...]
    </Object>
    

    Depois que você pode configurar um diretório no servidor de Administração e atribuir a ele o estilo x-httpd-php. Todos os arquivo no diretório serão executados como PHP. Isso é bom para esconder uso do PHP renomeando os arquivos para .html.

  5. Configuração de autenticação: autenticação do PHP não pode ser usada com qualquer outra autenticação. TODA AUTENTICAÇÃO E PASSADA PARA O SEU SCRIPT PHP. Para configurar autenticação via PHP para o servidor todo, adicione a seguinte linha para o seu objeto padrão:

    <Object name="default">
    AuthTrans fn=php4_auth_trans
    .
    .
    .
    </Object>
    

  6. Para usar autenticação via PHP em apenas um diretório, adicione o seguinte:

    <Object ppath="d:\path\to\authenticated\dir\*">
    AuthTrans fn=php4_auth_trans
    </Object>
    

Nota: O tamanho da pilha que o PHP usa depende da configuração do servidor web. Se você tiver problemas com scripts PHP muito grandes, é recomendado aumentar o tamanho da pilha com o Admin Server (na seção "MAGNUS EDITOR").

Ambiente CGI e modificações recomendadas ao arquivo php.ini

É importante ter em mente quando escrever scripts PHP que os servidores web Sun JSWS/Sun ONE WS/iPlanet/Netscape são multithreaded. Por isso, todas as requisições estão rodando no mesmo espaço de processo (o espaço do servidor web em si) e esse espaço só tem um ambiente. Se você quiser usar variáveis CGI como PATH_INFO, HTTP_HOST etc, não é correto tentar fazer da maneira como PHP antigo faz, com a função getenv() ou de maneira similar (registrando globais ao ambiente, $_ENV). Você só pegaria o ambiente do servidor web sem qualquer variáveis CGI válidas.

Nota: Por que existem variáveis CGI inválidas no ambiente?
Resposta: Isso é porque você iniciou o processo do servidor do admin server que roda o script de iniciação do mesmo, você queria iniciar como um script CGI (um script CGI dentro do admin server!). Isso é porque o ambiente do servidor web iniciado tem algumas variáveis CGI de ambiente nele. Você pode testar isso iniciando o servidor web sem ser do admin server. Use a linha de comando como usuário root e inicie-o manualmente - você verá que não exite nenhuma variável CGI de ambiente.

Simplesmente mudando seus scripts para pegar variáveis CGI é a maneira correta para o PHP 4.x usando o superglobal $_SERVER. Se você tiver scripts velhos que usam $HTTP_HOST, etc., você deve ligar register_globals no arquivo php.ini e mudar a ordem das variáveis também (importante: remova "E" de lá, porque voe não precisa do ambiente aqui):

variables_order = "GPCS"
register_globals = On

Uso especial para páginas de erro e listagem de diretório auto-geradas (PHP >= 4.3.3)

Você pode usar o PHP para gerar as páginas de erro para "404 Not Found" ou similares. Adicione a seguinte linha no objeto do arquivo obj.conf para cada página de erro que você quiser sobrescrever:

Error fn="php4_execute" code=XXX script="/path/to/script.php" [inikey=value inikey=value...]

Onde XXX é o código do erro HTTP. Por favor remova qualquer outra diretiva Error que possa interferir com as suas. Se você quiser colocar uma página para todos os erros que podem existir, tire o parâmetro code. Seu script pode pegar o código do erro com $_SERVER['ERROR_TYPE'].

Outra possibilidade é criar uma listagem do diretório auto-gerada. Apenas crie um script PHP que mostra uma listagem do diretório e substitua o padrão correspondente Service line for type="magnus-internal/directory" no arquivo obj.conf pelo seguinte:

Service fn="php4_execute" type="magnus-internal/directory" script="/path/to/script.php" [inikey=value inikey=value...]

Tanto para os erros e as páginas de listagem do diretório a URI original e a URL traduzida estão nas variáveis $_SERVER['PATH_INFO'] e $_SERVER['PATH_TRANSLATED'].

Nota sobre nsapi_virtual() e sub-requisições(PHP >= 4.3.3)

O módulo NSAPI agora suporta a função nsapi_virtual() (sinônima (alias): virtual()) para fazer sub-requisições no servidor web e inserir o resultado na página web. Essa função usa algumas funcionalidades não documentadas da biblioteca NSAPI. No Unix, o módulo procura automaticamente para as funções necessárias e as usa se estiverem disponíveis. Se não, nsapi_virtual() é desabilitada.

Nota: Mas esteja avisado: Suporte para nsapi_virtual() é EXPERIMENTAL!!!


Instalação em sistemas Unix
PHP Manual
html/install.unix.commandline.html0100644000101200010120000001076211277240152020625 0ustar docbuilderdocbuilder CGI e instalações de linha de comando
Instalação em sistemas Unix
PHP Manual

CGI e instalações de linha de comando

O padrão é compilar o PHP como um programa CGI. Isso cria um interpretador de linha de comando, que pode ser usado para processamento de CGI, ou para criação de scripts não relacionados com a web. Se você estiver executando um servidor web que suporta o PHP como módulo, você deve geralmente usar essa opção por razões de performance. No entanto, a versão CGI permite que usuários executem diferentes páginas com PHP usando diferentes ids de usuário.

Aviso

Um servidor dispoto em modo CGI está aberto para várias vulnerabilidades possíveis. Por favor, leia nossa seção de segurança CGI para aprender em como se defender de tais ataques.

A partir do PHP 4.3.0, alguns acréscimos importentes aconteceram ao PHP. Um novo SAPI chamado CLI também existe e ele tem o mesmo nome que o binário CGI. O que é instalado no diretório {PREFIX}/bin/php depende das opções usadas com o comando configure e é descrito com mais detalhes na seção do manual chamada Usando o PHP da linha de comando. Para mais detalhes, por favor, leia essa seção do manual.

Testando

Se você compilou o PHP como um programa CGI, você pode testá-lo usando o comando make test. É sempre uma boa idéia testar os software que você compila. Dessa maneira, você pode achar um problema com o PHP na sua plataforma cedo, ao invés de ter de lidar com isso mais tarde.

Usando Variáveis

Algumas variáveis de ambientes fornecidas pelo servidor não são definidas na atual » especificação CGI/1.1. Apenas as seguintes variáveis são definidas lá: AUTH_TYPE, CONTENT_LENGTH, CONTENT_TYPE, GATEWAY_INTERFACE, PATH_INFO, PATH_TRANSLATED, QUERY_STRING, REMOTE_ADDR, REMOTE_HOST, REMOTE_IDENT, REMOTE_USER, REQUEST_METHOD, SCRIPT_NAME, SERVER_NAME, SERVER_PORT, SERVER_PROTOCOL, e SERVER_SOFTWARE. Todo o resto deve ser tratado como 'vendor extensions'.


Instalação em sistemas Unix
PHP Manual
html/install.unix.hpux.html0100644000101200010120000000433211277240152017317 0ustar docbuilderdocbuilder Notas expecificas da instalação em HP-UX
Instalação em sistemas Unix
PHP Manual

Notas expecificas da instalação em HP-UX

Esta sessão contém notas e avisos especificos sobre a instalação do PHP em sistemas HP-UX.

Existem duas opções principais para instalar o PHP em sistemas HP-UX systems. Ou compila-lo, ou instalar um binário pré-compilado.

Pacotes oficiais pré-compilados podem ser encontrados aqui: » http://software.hp.com/

Até que esta sessão do manual seja rescrita, a documentação sobre compilar o PHP (e as extensões relacionadas) em sistemas HP-UX foi removida. Por enquanto, considere ler o seguinte recurso externo: » Construindo o Apache e o PHP em HP-UX 11.11


Instalação em sistemas Unix
PHP Manual
html/install.unix.openbsd.html0100644000101200010120000001507211277240152017770 0ustar docbuilderdocbuilder Notas de instalação para o OpenBSD
Instalação em sistemas Unix
PHP Manual

Notas de instalação para o OpenBSD

Essa seção contêm notas e dicas específicas para a instalação do PHP no » OpenBSD 3.6.

Usando Pacotes Binários

Usando pacotes binários para instalar o PHP no OpenBSD é o método recomendado e o mais simples. O pacote núcleo foi separado dos vários módulos, e cada um pode ser instalado e removido independentemente dos outros. Os arquivos necessários podem ser encontrados no CD do OpenBSD ou no FTP do site.

O pacote principal que você precisa instalar é o php4-core-4.3.8.tgz, que contem o engine básico (mais gettext e iconv). Depois, olhe os pacotes com módulos, como o php4-mysql-4.3.8.tgz ou php4-imap-4.3.8.tgz. Você precisa usar o comando phpxs para ativar e desativar esses módulos no seu arquivo php.ini.

Exemplo #1 Exemplo de instalação de pacote no OpenBSD

# pkg_add php4-core-4.3.8.tgz
# /usr/local/sbin/phpxs -s
# cp /usr/local/share/doc/php4/php.ini-recommended /var/www/conf/php.ini
  (adiciona o módulo mysql)
# pkg_add php4-mysql-4.3.8.tgz
# /usr/local/sbin/phpxs -a mysql
  (adiciona o módulo imap)
# pkg_add php4-imap-4.3.8.tgz
# /usr/local/sbin/phpxs -a imap
  (remove o módulo mysql para teste)
# pkg_delete php4-mysql-4.3.8
# /usr/local/sbin/phpxs -r mysql
  (instala as bibliotecas do PEAR)
# pkg_add php4-pear-4.3.8.tgz

Leia o manual de » packages(7) para mais informações sobre pacotes binários no OpenBSD.

Usando Ports

Você também pode compilar o PHP dos fontes usando a » árvore ports. No entanto, isso só é recomendado para usuários familiarizado com OpenBSD. O port do PHP 4 é dividido em dois sub-diretórios: núcleo e extensões. O diretório de extensões gera sub-pacotes para todos os módulos suportados pelo PHP. Se você achar que não quer criar alguns dos módulos, use o comando no_* FLAVOR. Por exemplo, se você quiser que o módulo imap seja ignorado, atribua à FLAVOR o valor no_imap.

Problemas Comuns

Releases Antigas

Releases mais antigas do OpenBSD usam o sistema de FLAVORS para compilar um PHP estaticamente linkado. Já que é difícil gerar pacotes binários usando esse método, ele é depreciado agora. Você pode ainda usar as árvores de port velhas e estáveis se assim desejar, mas eles não tem suporte pelo time do OpenBSD. Se você tiver algum comentário sobre isso, o atual responsável pela manutenção do port é Anil Madhavapeddy (avsm at openbsd dot org).


Instalação em sistemas Unix
PHP Manual
html/install.unix.solaris.html0100644000101200010120000000672311277240152020015 0ustar docbuilderdocbuilder Dicas de instalação específicas para o Solaris
Instalação em sistemas Unix
PHP Manual

Dicas de instalação específicas para o Solaris

Essa seção contêm notas e dicas específicas para a instalação do PHP em sistemas Solaris.

Software Necessário

Instalações do Solaris frequentemente não possuem compiladores C e suas ferramentas relacionadas. Leia esse FAQ para informação sobre porque usar versões GNU para algumas dessas ferramentas é necessário. Os softwares necessários são os seguintes:

Além disso, você pode precisar instalar (e possivelmente compilar) qualquer software adicional específico para sua configuração, como o Oracle ou MySQL.

Usando Pacotes

Você pode simplificar o processo de instalação no Solaris usando pkgadd para instalar a maioria dos componentes necessários.


Instalação em sistemas Unix
PHP Manual
html/install.unix.debian.html0100644000101200010120000002157111277240152017561 0ustar docbuilderdocbuilder Notas de Instalação para o Debian GNU/Linux
Instalação em sistemas Unix
PHP Manual

Notas de Instalação para o Debian GNU/Linux

Essa seção contem notas e dicas específicas para a instalação do PHP no » Debian GNU/Linux.

Usando APT

Embora você possa apenas baixar o fonte do PHP e compilar por conta própria, usar o sistema de pacotes do Debian e o método mais simples e mais limpo de instalar o PHP. Se você não está familiarizado com compilar software no Linux, essa é maneira de se instalar.

A primeira decisão que você precisa fazer é se você quer instalar o Apache 1.3.x ou o Apache 2.x. Os pacotes correspondentes do PHP são, respectivamente, libapache-mod-php* e libapache2-mod-php*. Os passos abaixo usarão o Apache 1.3.x. Por favor, perceba que, até o fechamento desse documento, não há nenhum pacote oficial do Debian para o PHP 5. Então, o procedimento instalará o PHP4.

O PHP está disponível no Debian como CGI ou CLI também, pelos pacotes php4-cgi e php4-cli. Se você precisar deles, só terá que reproduzia os passos a seguir com o pacote desejado. Outro pacote especial que você pode querer instalar é o php4-pear. Ele contem um instalação PEAR mínima e a ferramenta de linha de comando pear.

Se você precisa de pacotes do PHP mais recentes que os do Debian stable ou se alguns módulos do PHP não se encontram no repositório oficial do Debian, talvez você deva procurar em » http://www.apt-get.org/. Um dos resultados encontrados deve ser » Dotdeb. Esse repositório não-oficial é mantido por » Guillaume Plessis e contem pacotes Debian das versões mais recentes do PHP 4 e 5. Para usá-lo, apenas adiciona as seguintes linhas ao seu arquivo /etc/apt/sources.lists e execute apt-get update :

Exemplo #1 Adicionando o repositório Dotdeb

deb http://packages.dotdeb.org stable all
deb-src http://packages.dotdeb.org stable all

A última coisa a ser considade é se sua lista de pacotes está atualizada. Se você não atualizou recentemente, você precisa executar apt-get update antes de qualquer coisa. Dessa forma, você estará usando a versão estável mais recente dos pacotes do Apache e do PHP.

Agora que está tudo no lugar, você pode usar o seguinte exemplo para instalar o Apache e o PHP:

Exemplo #2 Exemplo de Instalação no Debian com o Apache 1.3

# apt-get install libapache-mod-php4

O APT instalará o módulo do PHP 4 para o Apache 1.3 automaticamente, e todas as suas dependências e então ativá-lo. Se o programa não pedir para reiniciar o Apache durante a instalação, você terá que fazê-lo manualmente:

Exemplo #3 Parando e iniciando o Apache depois que o PHP estiver instalado

# /etc/init.d/apache stop
# /etc/init.d/apache start

Maior controle sobre a configuração

Na seção anterior, o PHP foi instalado apenas com os módulos principais. Isso pode não ser o que você quer e você discobrirá em breve que você precisa de mais módulos ativados, como MySQL, cURL, GD, etc.

Quando você compila o PHP do fonte, você precisa ativar os módulos através do comando configure. Com o APT, você só precisa instalar os pacotes adicionais. Todos eles tem o nome 'php4-*' (ou 'php5-*' se você instalou o PHP 5 de um repositório não-oficial).

Exemplo #4 Pegando a lista de pacotes adicionais do PHP

# dpkg -l 'php4-*'

Como você pode ver na saída do comando, existem vários módulos do PHP que você pode instalar (tirando os pacotes especiais php4-cgi, php4-cli ou php4-pear). Olhe com bastante atenção e escolha os que você precisar. Se você escolher um módulo e você não tiver as bibliotecas necessárias, o APT instalará todas as dependências automaticamente para você.

Se você escolher adicionar os módulos do MySQL, cURL e GD, o comando parecerá com esse:

Exemplo #5 Instalar o PHP com MySQL, cURL e GD

# apt-get install php4-mysql php4-curl php4-gd

O APT editará o seu arquivo php.ini (/etc/php4/apache/php.ini, /etc/php4/cgi/php.ini, etc) para dar suporte aos módulos novos.

Exemplo #6 Essas linhas ativam o MySQL, cURL e GD no PHP

extension=mysql.so
extension=curl.so
extension=gd.so

Você só terá que parar/iniciar o Apache como antes para ativar os módulos.

Problemas Comuns


Instalação em sistemas Unix
PHP Manual
html/install.unix.html0100644000101200010120000001325411277240152016337 0ustar docbuilderdocbuilder Instalação em sistemas Unix
Instalação e Configuração
PHP Manual

Instalação em sistemas Unix

Índice

Essa seção é um guia geral para configuração e instalação do PHP em sistemas Unix. Verifique se existe uma seção específica para usa plataforma ou servidor web antes de começar o processo.

Como nosso manual destaca na seção Considerações Gerais sobre Instalação, nós estamos lidando principalmente com configurações web do PHP nessa seção, embora cobriremos instalação do PHP para uso em linha de comando também.

Existem várias maneiras de instalar o PHP para a plataforma Unix, ou com um processo de compilar e configurar, ou atráves de vários métodos pré-empacotados. Essa documentação é focada principalmente no processo de compilação e configuração do PHP. Muitos sistemas baseados no Unix tem alguma forma de sistema de instalação de pacotes. Isso pode ajudar na instalação de uma configuração padrão, mas se você precisar ter uma série de características diferentes (como um servidor seguro, ou um driver de banco de dados diferente), você pode precisar montar o PHP e/ou servidor web. Se você não estiver familiarizado com o processo de montar e compilar seu próprio software, vale a pena checar se alguém já montou um pacote do PHP com as características que você precisa.

Pré-requisitos de software e de conhecimento para compilar:

O processo inicial de configuração de instalação do PHP é controlado pelo uso de opções de linha de comando do script configure. Você pode pegar a lista de todas as opções disponíveis junto com uma pequena explicação executando o comando ./configure --help. Nosso manual documenta as diferentes opções separadamente. Você encontrará as opções principais no apêndice, enquanto as opções específicas das diferentes extensões são descritas nas páginas de referência.

Quando o PHP é configurado, você está pronto para montá-lo como módulo e/ou executável. O comando make deve tomar conta disso. Se ele falhar e você não conseguir descobrir a razão, veja a Seção de Problemas.


Instalação e Configuração
PHP Manual
html/install.macosx.packages.html0100644000101200010120000000524611277240152020425 0ustar docbuilderdocbuilder Usando Pacotes
Instalação no Mac OS X
PHP Manual

Usando Pacotes

Existem algumas versões do PHP empacotadas e pré-compiladas para o Mac OS X. Isso pode ajudar na instalação de uma configuração padrão, mas se você precisar ter algumas características diferentes (como um servidor seguro, ou um driver de banco de dados diferente), você pode precisar compilar o PHP e/ou seu servidor web por conta própria. Se você não estiver familiarizado com o procedimento de compilar seu próprio software, vale a pena checar se alguém já fez um pacote do PHP com as características que você precisa.

Os seguintes recursos oferecem pacotes de fácil instalação e binários pré-compilados para usar o PHP no Mac OS:


Instalação no Mac OS X
PHP Manual
html/install.macosx.bundled.html0100644000101200010120000002215011277240152020255 0ustar docbuilderdocbuilder Usando o pacote do PHP para Mac
Instalação no Mac OS X
PHP Manual

Usando o pacote do PHP para Mac

PHP vem junto com Mac OS X desde a versão 10.0.0. Habilitar o PHP no servidor web padrão requer apenas descomentar algumas linhas no arquivo de configuração do Apache (httpd.conf) enquanto que a versão CGI e/ou CLI estão disponíveis automaticamente (facilmente acessíveis pelo programa Terminal).

Habilitar o PHP usando as instruções abaixo tem como objetivo configurar rapidamente um ambiente de desenvolvimento local. É altamente recomendado sempre atualizar o PHP para a versão mais nova. Como qualquer software ativo, novas versões são criadas para consertar bugs e adicionar funcionalidades e o PHP não é diferente. As seguintes instruções são direcionadas para iniciantes, os detalhes fornecidos permitem que uma configuração padrão funcionar. Todos os usuários são encorajados à compilar ou instalar uma versão nova do pacote.

O tipo de instalação padrão é usando mod_php, e habilitar o pacote mod_php no Mac OS X para o servidor Apache (o servidor web padrão, que é acessível via Preferências de Sistema) envolte os seguintes passos:

  1. Localize e abra o arquivo de configuração do Apache. Normalmente, ele está em: /etc/httpd/httpd.conf Usar Finder ou Spotlight para encontrar esse arquivo pode ser complicado, já que ele normalmente é privado e o dono é o administrador (root).

    Nota: Uma maneira de modificar o arquivo é usando um editor de texto baseado em Unix no Terminal, por exemplo nano, e, como o dono do arquivo é o root, nós usaremos o comando sudo para abrí-lo. Digite o seguinte comando na aplicação de Terminal (você precisará digitar a sua senha): sudo nano /etc/httpd/httpd.conf Comandos importantes do nano: ^w (busca), ^o (salvar), e ^x (sair) onde ^ representa a tecla Ctrl.

  2. Com um editor de texto, descomente as linhas (removendo os #) que parecem com as linhas abaixo (essas duas linhas normalmente não estão juntas, localize ambas no arquivo):

    # LoadModule php4_module libexec/httpd/libphp4.so
    
    # AddModule mod_php4.c
    
    Perceba a localização/caminho. Quando compilar o PHP no futuro, os arquivos acima devem ser substituidos ou comentados.

  3. Certifique-se que as extensões desejadas serão avalidadas como códigos PHP (exemplos: .php .html e .inc)

    Como a seguinte instrução já existe no httpd.conf (a partir do Mac Panther), uma vez que o PHP for habilitado, os arquivos .php serão automaticamente avaliados como códigos PHP.

    <IfModule mod_php4.c>
        # If php is turned on, we respect .php and .phps files.
        AddType application/x-httpd-php .php
        AddType application/x-httpd-php-source .phps
    
        # Since most users will want index.php to work we
        # also automatically enable index.php
        <IfModule mod_dir.c>
            DirectoryIndex index.html index.php
        </IfModule>
    </IfModule>
    

  4. Assegure-se de que a diretiva DirectoryIndex carrega o arquivo index desejado Isso também é configurável no arquivo httpd.conf. Tipicamente index.php e index.html são usados. Por padrão, index.php é habilitado porque também está na checagem mostrada abaixo. Modifique como desejar.
  5. Configure a localização do arquivo php.ini ou use a padrão Uma localização típica no Mac OS X é /usr/local/php/php.ini e uma chamada à phpinfo() revelerá essa informação. Se não for usado um arquivo php.ini, o PHP usará todos os valores padrão. Veja também o FAQ relacionado em encontrando php.ini.
  6. Localize ou configure DocumentRoot Esse é o diretório raiz para todos os arquivos do servidor. Arquivo nesse diretório serão servidos, então os arquivos PHP serão avaliados como PHP antes de terem seu resultado enviado para o servidor. Um caminho padrão para isso é /Library/WebServer/Documents mas isso pode ser modificado para qualquer um no arquivo httpd.conf. Além disso, o DocumentRoot para usuários individuais é /Users/yourusername/Sites
  7. Crie um arquivo phpinfo()

    A função phpinfo() mostrará informação sobre o PHP. Considere criar um arquivo no DocumentRoot com o seguinte código PHP:

    <?php phpinfo(); ?>

  8. Reinicie o Apache e carregue o arquivo PHP criado acima Para reiniciar, ou execute sudo apachectl graceful no shell ou stop/start na opção "Personal Web Server" em OS X System Preferences. Geralmente, carregar arquivos locais no browser pode ser feito usando uma URL assim: http://localhost/info.php ou se estiver usando o diretório DocumentRoot dentro de um diretório de usuário, seria assim: http://localhost/~yourusername/info.php

A versão CLI (ou CGI em versões mais antigas) tem nome php e provavelmente está em /usr/bin/php. Abra um terminal, leia a seção sobre linha de comando do manual desse binário. Uma chamada para phpinfo() também mostrará do PHP, e execute php -v para verificar a versão do PHP essa informação.


Instalação no Mac OS X
PHP Manual
html/install.macosx.server.html0100644000101200010120000001304611277240152020152 0ustar docbuilderdocbuilder Compilando para o Mac OS X - Versão Servidor
Instalação no Mac OS X
PHP Manual

Compilando para o Mac OS X - Versão Servidor

Instalação para o Servidor Mac OS X

  1. Pegue a última distribuição do Apache e PHP.
  2. Expanda o arquiv tar, e execute o programa configure do Apache dessa maneira (modifique para conformar com suas necessidades).

    ./configure --exec-prefix=/usr \
    --localstatedir=/var \
    --mandir=/usr/share/man \
    --libexecdir=/System/Library/Apache/Modules \
    --iconsdir=/System/Library/Apache/Icons \
    --includedir=/System/Library/Frameworks/Apache.framework/Versions/1.3/Headers \
    --enable-shared=max \
    --enable-module=most \
    --target=apache

  3. Se você quiser que o compilador faça alguma otimização, você pode também querer adicionar essa linha:

    setenv OPTIM=-O2

  4. Depois, vá para o diretório onde os fontes do PHP 4 estão e rode o configure.

    ./configure --prefix=/usr \
        --sysconfdir=/etc \
        --localstatedir=/var \
        --mandir=/usr/share/man \
        --with-xml \
        --with-apache=/src/apache_1.3.12

    Se você quiser qualquer outra extensão (MySQL, GD, etc.), adicione a opção a esse comando. Para a opção --with-apache, coloque o caminho do diretório dos fontes do Apache, por exemplo /src/apache_1.3.12.

  5. Digite make e make install. Isso irá adicionar um diretório para nos fontes do Apache em src/modules/php4.
  6. Agora, reconfigure o Apache para montar junto com o PHP 4.

    ./configure --exec-prefix=/usr \
    --localstatedir=/var \
    --mandir=/usr/share/man \
    --libexecdir=/System/Library/Apache/Modules \
    --iconsdir=/System/Library/Apache/Icons \
    --includedir=/System/Library/Frameworks/Apache.framework/Versions/1.3/Headers \
    --enable-shared=max \
    --enable-module=most \
    --target=apache \
    --activate-module=src/modules/php4/libphp4.a

    Você pode receber uma mensagem dizendo que libmodphp4.a está desatualizado. Se isso acontecer, vá para do diretório src/modules/php4 dentro do diretório dos fontes do Apache e execute o comando: ranlib libmodphp4.a. Depois volte para o diretório raiz dos fontes do Apache e execute o comando configure acima novamente. Isso fará a tabela de links ser atualizada. Execute make e make install novamente.

  7. Copie e renomei o arquivo php.ini-dist que está no diretório dos fontes do PHP para o seu diretório bin: cp php.ini-dist /usr/local/bin/php.ini ou (se você não tiver um diretório local) cp php.ini-dist /usr/bin/php.ini .


Instalação no Mac OS X
PHP Manual
html/install.macosx.client.html0100644000101200010120000000772711277240152020133 0ustar docbuilderdocbuilder Compilando para o MacOS X - Versão Cliente
Instalação no Mac OS X
PHP Manual

Compilando para o MacOS X - Versão Cliente

As instruções seguintes ajudarão você a instalar o módulo PHP para o servidor web Apache incluso no MacOS X. Essa versão inclui suporte para os bancos de dados MySQL e PostgreSQL. Essas instruções foram providas por » Marc Liyanage.

Aviso

Tenha cuidado quando for fazer isso, vocêo pode estragar seu servidor Apache!

Faça isso para instalar:

  1. Abra uma janela de terminal.
  2. Digite wget http://www.diax.ch/users/liyanage/software/macosx/libphp4.so.gz , e espere o download terminar.
  3. Digite gunzip libphp4.so.gz .
  4. Digite sudo apxs -i -a -n php4 libphp4.so
  5. Agora digite sudo open -a TextEdit /etc/httpd/httpd.conf . TextEdit abrirá o arquivo de configuração do servidor web. Localize Locate essas duas linhas perto do final do arquivo: (Use o comando Localizar (Find))

    #AddType application/x-httpd-php .php 
    #AddType application/x-httpd-php-source .phps

    Remove os caracteres de comentários (#), e depois salve o arquivo e saia do TextEdit.

  6. Finalmente, digite sudo apachectl graceful e reinicie o servidor web.

PHP deve estar funcionando. Você pode testar colocando um arquivo no seu diretório Sites chamado test.php. No arquivo, escreva essa linha: <?php phpinfo() ?>.

Agora abra 127.0.0.1/~your_username/test.php no seu navegador. Você deve ver uma tabela de status com informação sobre o módulo PHP.


Instalação no Mac OS X
PHP Manual
html/install.macosx.html0100644000101200010120000000377711277240152016657 0ustar docbuilderdocbuilder Instalação no Mac OS X
Instalação e Configuração
PHP Manual

Instalação no Mac OS X

Índice

Essa seção contem notas e dicas específicas para instalação do PHP no Mac OS X. Existem duas versões do Mac OS X um pouquinho diferentes entre si, Cliente e Servidor, nosso manual trata da instalação do PHP em ambos os sistemas. Note que o PHP não está disponível para MacOS 9 e versões anteriores.


Instalação e Configuração
PHP Manual
html/install.windows.installer.html0100644000101200010120000000762711277240152021051 0ustar docbuilderdocbuilder Instalador do PHP para o Windows (PHP 5.1.0 e anterior)
Instalação em sistemas Windows
PHP Manual

Instalador do PHP para o Windows (PHP 5.1.0 e anterior)

O Instalador do PHP para o Windows está disponível na página de downloads em » http://www.php.net/downloads.php. Ele instala a versão CGI do PHP e para IIS, PWS e Xitami, ele configura o servidor web também. O instalador não inclui qualquer extensão extra ao PHP (php_*.dll) uma vez que você só encontrará essas no pacote Zip para o Windows e nos downloads de PECL.

Nota: Embora o instalador para o Windows seja uma maneira fácil de fazer o PHP funcionar, ele é restrito em muitos aspectos já que, por exemplo, a instalação automática de extensões não é suportada. Uso do instalador não é o método preferido para instalar o PHP.

Primeiro, instale o servidor HTTP (web) de sua preferência no seu sistema e teste se o mesmo funciona.

Execute o instalador e siga as instruções mostradas pelas telas de instalação. Dois tipos de instalação são suportadas - padrão, que provê padrões sensíveis para todas as configurações possíveis, e avançado, que pergunta tudo enquanto instala.

O auxiliar de instalação junta informação suficiente para configura o arquivo php.ini, e configura certos web server para usar o PHP. Um dos servidores web que o instalador não configura é o Apache, então você precisará configurá-lo manualmente.

Uma vez que a instalação tiver completado, o instalador informará a você se você precisa reiniciar seu sistema, reiniciar o servidor ou simplesmente começar a usar o PHP.

Aviso

Cuidado, que essa configuração do PHP não é segura. Se você quiser ter uma configuração do PHP segura, é melhor usar a instalação manual, e editar cada opção com cuidado. Essa configuração automática te dé uma instalaço do PHP que funciona instantaneamente, mas ela não deve ser usada em servidores online.


Instalação em sistemas Windows
PHP Manual
html/install.windows.installer.msi.html0100644000101200010120000001561311277240152021632 0ustar docbuilderdocbuilder Instalador para Windows (PHP 5.2 ou posterior)
Instalação em sistemas Windows
PHP Manual

Instalador para Windows (PHP 5.2 ou posterior)

O Instalador do PHP para Windows para versões recentes do PHP é feito usando a tecnologia MSI através do Wix Toolkit (» http://wix.sourceforge.net/). Ele instala e configura o PHP e todas as extensões PECL integradas, assim como configura muitos dos web servers mais populares, como IIS, Apache, e Xitami.

Primeiro, instale seu servidor HTTP (web) predileto no seu sistema e verifique que ele funciona. Então prossiga com um dos seguintes tipos de instação.

Instalação Normal

Execute o instalador MSI e siga as instruções fornecidas pelo programa. Ele primeiro perguntará qual Web Server você deseja configurar, assim como qualquer detalhe de configuração necessário.

Depois você deve selecionar quais funcionalidades e extensões você deseja instalar e habilitar. Para cada item disponível, você pode selecionar "Será instalado no disco local" no menu para determinar quais funcionalidades serão instaladas. Selcionado "Funcionalidade inteira será instalada no disco local", você poderá instalar todas as sub-funcionalidades vinculadas à funcionalidade (por exemplo, selecionar essa opção na extensão "PDO" você instalará todos os drivers PDO).

Aviso

Não é recomendado instalar todas as extensões, já que muitas dependem de extensões externas ao PHP para funcionarem corretamente. Ao invés, use o Installation Repair Mode (Modo de Reparo) que pode ser acionado através da opção Add/Remove Programs (Adicionar/Remover Programas) do painel de controle para habilitar ou desabilitar extensões após a instalação.

O instalador então instala o PHP para ser usado no Windows e o arquivo php.ini, e configura certos servidores web para usá-lo. O instalador configura, atualmente, o IIS, Apache, Xitami e Sambar; se você estiver usando um servidor web diferente, você precisa configurá-lo manualmente.

Instalação silenciosa

O instalador também suporta um modo silencioso, que é útil para administradores de sistema implantarem o PHP facilmente. Para usar o modo silencioso:

msiexec.exe /i php-VERSION-win32-install.msi /q

Você pode controlar o diretório de instalação passando ele como parâmetro de linha de comando. Por exemplo, para instalar em e:\php:

msiexec.exe /i php-VERSION-win32-install.msi /q INSTALLDIR=e:\php
Você também pode usar a mesma sintaxe para especificar o diretório de configuração do Apache (APACHEDIR), do Sambar (SAMBARDIR), e do Xitami (XITAMIDIR).

Você pode especificar quais funcionalidades instalar. Por exemplo, para instalar a extensão mysqli e o executável CGI:

msiexec.exe /i php-VERSION-win32-install.msi /q ADDLOCAL=cgi,ext_php_mysqli

A lista atual de funcionalidades para instalação é a seguinte:

MainExecutable - php.exe executable
ScriptExecutable - php-win.exe executable
ext_php_* - the various extensions ( for example: ext_php_mysql for MySQL )
apache13 - Apache 1.3 module
apache20 - Apache 2.0 module
apache22 - Apache 2,2 module
apacheCGI - Apache CGI executable
iis4ISAPI - IIS ISAPI module
iis4CGI - IIS CGI executable
NSAPI - Sun/iPlanet/Netscape server module
Xitami - Xitami CGI executable
Sambar - Sambar Server ISAPI module
CGI - php-cgi.exe executable
PEAR - PEAR installer
Manual - PHP Manual in CHM Format

Para mais informações sobre instalando usando instaladores MSI a partir da linha de comando, visite » http://msdn.microsoft.com/en-us/library/aa367988.aspx

Atualizado o PHP com o instalador

Para fazer atualização, execute o instalador ou graficamente, ou a partir da linha de comando normalmente. O instalador lerá as opções atuais instalação, remover a instalação velha e reinstalará o PHP com as mesmas opções de antes. É recomendado que você use esse método para manter o PHP atualizado ao invés substituir manualmente os arquivos no diretório de instalação.


Instalação em sistemas Windows
PHP Manual
html/install.windows.manual.html0100644000101200010120000004201211277240152020314 0ustar docbuilderdocbuilder Passos da Instalação Manual
Instalação em sistemas Windows
PHP Manual

Passos da Instalação Manual

Esse guia de instalação ajudará você a instalar manualmente e configurar o PHP com um servidor web no Microsoft Windows. Para começar, você precisará baixar o zip com a distribuição binária da página de downloads em » http://www.php.net/downloads.php.

Embora existam muitos kits de instalação "completos", e nós também distribuímos um instalador do PHP para o Microsoft Windows, nós recomendamos que você se dê ao trabalho de instalar o PHP manualmente uma vez que isso lhe permitirá um melhor entendimento do sistema, e permite que você instale extensões do PHP facilmente quando precisar.

Nota: Atualizar uma versão instalado do PHP
Edições anteriores do manual sugeriam mover vários arquivo ini e DLL para o seu diretório SYSTEM (ex.: C:\WINDOWS) e, embora isso simplifique o processo de instalação, torna a atualização difícil. Nós aconselhamos que você remova esses arquivos (como php.ini e DLLs relacionadas ao PHP da pasta SYSTEM do Windows) antes de continuar com uma instalação nova do PHP. Assegure-se de fazer um backup desses arquivos já que você pode corromper o sistema inteiro. O arquivo php.ini da versão anterior a que você quer instalar pode ser útil na versão nova. E, como você aprenderá a seguir, o método preferido para instalar o PHP é manter todos os arquivos relacionados ao PHP em um diretório e disponibilizar esse diretório no PATH do seu sistema.

Nota: Requerimentos MDAC
Se você usa o Microsoft Windows 98/NT4, baixe a última versão do Microsoft Data Access Components (MDAC) para sua plataforma. MDAC está disponível em » http://msdn.microsoft.com/data/. Esse requerimento existe porque ODBC é compilado nos binários distribuídos para o Windows.

Os passos a seguite devem ser completados em todas as instalações antes de qualquer instruções específicas ao servidor sejam feitas:

Extraia o arquivo da distribuição no diretório de sua escolha. Se você estiver instalando o PHP 4, extraia em C:\, uma vez que o arquivo zip expande para uma pasta de nome parecido com php-4.3.7-Win32. Se você estiver instalando o PHP 5, extraia em C:\php já que o arquivo zip não expande como no PHP 4. Você pode escolher uma localização diferente, desde que não tenha espaços no caminho (como C:\Program Files\PHP) já que alguns servidores web irão travar se tiver.

A estrutura de diretório extraida do zip é diferente para as versões 4 e 5 e se parecem com as seguintes:

Exemplo #1 Estrutura de diretório para o PHP 4


c:\php
   |
   +--cli
   |  |
   |  |-php.exe           -- executável CLI - Só para uso na linha de comando.
   |
   +--dlls                -- DLLs de suporte, necessárias para algumas extensões
   |  |
   |  |-expat.dll
   |  |
   |  |-fdftk.dll
   |  |
   |  |-...
   |
   +--extensions          -- DLLs de extensões para o PHP
   |  |
   |  |-php_bz2.dll
   |  |
   |  |-php_cpdf.dll
   |  |
   |  |-..
   |
   +--mibs                -- arquivos de suporte para SNMP
   |
   +--openssl             -- arquivos de suporte para Openssl
   |
   +--pdf-related         -- arquivos de suporte para PDF
   |
   +--sapi                -- DLLs de SAPI (suporte a módulo de servidor)
   |  |
   |  |-php4apache.dll
   |  |
   |  |-php4apache2.dll
   |  |
   |  |-..
   |
   +--PEAR                -- cópia inicial do PEAR
   |
   |
   |-go-pear.bat          -- script de configuração do PEAR
   |
   |-..
   |
   |-php.exe              -- executável CGI
   |
   |-..
   |
   |-php.ini-dist         -- configurações padrão do php.ini
   |
   |-php.ini-recommended  -- configurações recomendadas do php.ini
   |
   |-php4ts.dll           -- DLL núcleo do PHP
   |
   |-...

Ou:

Exemplo #2 Estrutura de diretório para o PHP 5


c:\php
   |
   +--dev
   |  |
   |  |-php5ts.lib
   |
   +--ext                 -- DLLs de extensões para o PHP
   |  |
   |  |-php_bz2.dll
   |  |
   |  |-php_cpdf.dll
   |  |
   |  |-..
   |
   +--extras
   |  |
   |  +--mibs             -- arquivos de suporte para SNMP
   |  |
   |  +--openssl          -- arquivos de suporte para Openssl
   |  |
   |  +--pdf-related      -- arquivos de suporte para PDF
   |  |
   |  |-mime.magic
   |
   +--pear                -- cópia inicial do PEAR
   |
   |
   |-go-pear.bat          -- script de configuração do PEAR
   |
   |-fdftk.dll
   |
   |-..
   |
   |-php-cgi.exe          -- executável CGI
   |
   |-php-win.exe          -- executa scripts sem um prompt de comando aberto
   |
   |-php.exe              -- CLI executável - Só para uso em linha de comando
   |
   |-..
   |
   |-php.ini-dist         -- configurações padrão do php.ini
   |
   |-php.ini-recommended  -- configurações recomendadas do php.ini
   |
   |-php5activescript.dll
   |
   |-php5apache.dll
   |
   |-php5apache2.dll
   |
   |-..
   |
   |-php5ts.dll           -- DLL núcleo do PHP
   |
   |-...

Note as diferenças e similaridades. Tanto o PHP 4 quanto o 5 tem um executável CGI, um executável CLI, e módulos do servidor, mas eles estão localizados em pastas diferentes e/ou tem nomes diferentes. Enquanto no PHP 4 os módulos do servidor estão na pasta sapi, no PHP 5 não há tal diretório e, ao invés disso, eles estão na pasta principal do PHP. As DLLs de suporte para as extensões do PHP 5 também não estão em um diretório separado.

Nota: No PHP 4, você deve mover todos os arquivos localizados nas pastas dll e sapi para a pasta principal (ex.: C:\php).

Aqui está uma lista dos módulos de servidor liberados com o PHP 4 e PHP 5:

Módulos de servidor tem performance significativamente melhor e funcionalidades adiconais comparados com o binário CGI. A versão CLI é desenhada para permitir usar o PHP para scripts de linha de comando. Mais informação sobre CLI disponível no capítulo sobre usando PHP da linha de comando.

Aviso

Os módulos SAPI foram melhorados significativamente a partir do release 4.1, no entanto, em sistemas mais antigos, você pode encontrar erros de servidor e outros módulos do servidor podem falhar, como ASP.

Os binários CGI e CLI, e os módulos de servidor web todos necessitam do arquivo php4ts.dll (php5ts.dll) para funcionar corretamente. Você tem que assegurar que esse arquivo pode se encontrado pela sua instalação do PHP. A ordem de busca para essa DLL é como segue:

Para disponibilizar php4ts.dll / php5ts.dll você tem três opções: copiar o arquivo para o diretório system do Windows, copiar o arquivo para o diretório do servidor web, ou adicionar o diretório do PHP, C:\php no PATH. Para melhor manutenção, nós aconselhamos que você siga a última opção, adicione C:\php ao PATH, porque é mais simples atualizar o PHP no futuro. Leia mais sobre como adicionar o diretório ao PATH no FAQ correspondente (e então, não esqueça de reiniciar o computador - fazer o logoff não é suficiente).

O próximo passo é montar um arquivo de configuração para o PHP, php.ini. Existem dois arquivos ini distribuídos no arquivo zip, php.ini-dist e php.ini-recommended. Nós aconselhamos que você use php.ini-recommended, porque nós otimizamos as configurações padrões nesse arquivo para performance e segurança. Leia esse arquivo bem documentador cuidadosamente porque ele tem diferenças em relação a php.ini-dist que afetarão drasticamente sua configuração. Alguns exemplos são display_errors está off e magic_quotes_gpc está off. Além de ler isso, estude as configurações ini e configure cada elemento manualmente. Se você quiser alcança o máximo de segurança, então essa é a maneira que você deve fazer, embora o PHP funcione bem com os arquivos padrões. Copie o seu arquivo ini preferido para um diretódio que o PHP possa encontrar e renomei para php.ini. PHP procura pelo arquivo php.ini nas localidades descritas nessa O arquivo de configuração seção.

Se você estiver executando o Apache 2, a opção mais simples é usar a diretiva PHPIniDir (leia a página instalação no Apache 2). Caso contrário, sua melhor opção é criar a variável de ambiente PHPRC. Esse processo é explicado no seguinte FAQ.

Nota: Se você estiver usando NTFS no Windows NT, 2000, XP ou 2003, assegure-se que o usuário executando o servidor web tem permissões de leitura ao seu arquivo php.ini (ex.: faça com que seja lido por Everyone (Todos) ).

Os passos a seguir são opcionais:

O PHP agora está configurado no seu sistema. O próximo passo é escolher um servidor web, e habilitá-lo para executar o PHP. Escolha um servidor web da tabela de conteúdos.


Instalação em sistemas Windows
PHP Manual
html/install.windows.activescript.html0100644000101200010120000001024711277240152021544 0ustar docbuilderdocbuilder ActiveScript
Instalação em sistemas Windows
PHP Manual

ActiveScript

Essa seção contem notas específicas para a instalação do ActiveScript.

ActiveScript é um SAPI exclusivo do Windows que permite usar scripts PHP em qualquer host compatível com ActiveScript, como Windows Script Host, ASP/ASP.NET, Windows Script Components ou Microsoft Scriptlet Control.

A partir do PHP 5.0.1, ActiveScript foi transferido para o repositório do » PECL. Uma DLL para esta extenção PECL esta atualmente indisponível. Veja também a seção compilando no Windows section.

Nota: Você deve ler os passos da instalação manual antes!

Depois de instalar o PHP, você deve baixar o DLL do ActiveScript (php5activescript.dll) e colocá-lo na pasta principal do PHP (ex.: C:\php).

Depois de ter todos os arquivos necessários, você deve registrar a DLL no seu sistema. Para isso, abra um Prompt de Comando (localizado no seu Menu Iniciar). Então vá ao diretório do PHP digitando algo como cd C:\php. Para registrar a DLL apenas digite regsvr32 php5activescript.dll.

Para testar se o ActiveScript está funcionando, crie um arquivo novo, chamado test.wsf (a extensão é muito importante) e digite:

<job xml:id="test">

 <script language="PHPScript">
  $WScript->Echo("Alô Mundo!");
 </script>

</job>

Salve e clique duas vezes no arquivo. Se você receber uma pequena janela dizendo "Alô Mundo!", então está tudo certo.

Nota: No PHP 4, o engine foi chamado de 'ActivePHP', então se você estiver usando PHP 4, você deve substituir 'PHPScript' por 'ActivePHP' no exemplo acima.

Nota: ActiveScript não usa o arquivo php.ini padrão. Ao invés disso, ele procurará apenas no mesmo diretório do .exe que o carregou. Você deve criar um arquivo php-activescript.ini e colocá-lo nessa pasta, se você quiser acrescentar extensões, etc.


Instalação em sistemas Windows
PHP Manual
html/install.windows.iis.html0100644000101200010120000004346511277240152017640 0ustar docbuilderdocbuilder Microsoft IIS / PWS
Instalação em sistemas Windows
PHP Manual

Microsoft IIS / PWS

Essa seção contêm notas e dicas específicas para o IIS (Microsoft Internet Information Server).

Aviso

Um servidor dispoto em modo CGI está aberto para várias vulnerabilidades possíveis. Por favor, leia nossa seção de segurança CGI para aprender em como se defender de tais ataques.

Considerações Gerais para qualquer instalação do PHP com IIS ou PWS

Windows NT/200x/XP e IIS 4 ou superior

O PHP pode ser instalado como binário CGI, ou como módulo ISAPI. Em ambos os casos, você precisa iniciar o Microsoft Management Console (pode aparecer como 'Internet Services Manager', ou no seu Windows NT 4.0 Option Pack ou no Control Panel=>Administrative Tools no Windows 2000/XP). Então clique no botão direito no seu ícone Web server (Provavelmente aparecerá como 'Default Web Server'), e selecione 'Properties'.

Se você quiser usar o binário CGI, faça o seguinte:

Para usuar o módulo ISAPI, faça o seguinte:

Com o IIS 6 (2003 Server), abra o IIS Manager, vá até Web Service Extensions, selecione "Add a new Web service extension", digite um nome como PHP, clique no botão Add e coloque no campo valor coloque ou o arquivo ISAPI (php4isapi.dll ou php5isapi.dll) ou do CGI (php.exe ou php-cgi.exe) e selecione a opção "Set extension status to Allowed" e clique OK.

Para usar index.php como página padrão de conteúdo, faça o seguinte: Na aba Documents, escolha Add. Digite index.php e clique OK. Ajuste a ordem clicando em Move Up ou Move Down. Isso é similar a configurar DirectoryIndex no Apache.

Os passos acima devem ser repetidos para cada extensão que será associada com scripts PHP. .php é a mais comum embora .php3 pode ser necessária para código legado.

Se ocorrer 100% de uso de CPU depois de um tempo, desligue a configuração do IIS Cache ISAPI Application.

Windows e PWS 4

PWS 4 não tem suporte a ISAPI, somente o CGI deve ser usado.

Windows e PWS/IIS 3

O método recomendado para configurar o PHP nesses servidores é usar o arquivo REG incluso na distribuição (pws-php4cgi.reg na pasta SAPI para o PHP 4, ou pws-php5cgi.reg na pasta principal para o PHP 5). Você pode querer editar o arquivo e assegurar-se que o diretório das extensões e do PHP estão corretos. Ou você pode seguir os passos abaixo para fazer manualmente.

Aviso

Esses passos involvem trabalhar diretamente com o registro do Windows. Um erro aqui pode deixar seu sistema em um estado instável. Nós recomendamos que você faça um backup do seu registro primeiro. O time de desenvolvimento do PHP não será responsável se você danificar seu registro.

Os passos a seguir não afetam a instalação do servidor web e só se aplicam se você quiser que seus scripts sejam executados quando eles forem chamados da linha de comando (ex. run C:\myscripts\test.php) ou clicando duas vezes neles na janela de visualização de diretório. Você pode pular esses passos já que você pode preferir que os arquivos PHP sejam carregados em um editor de texto quando você clicar duas vezes neles.

Usuários do PWS e do IIS 3 agora tem um sistema totalmente operacional. Usuários do IIS 3 pode usar uma » ferramenta legal de Steven Genusa para configurar os mapas dos seus scripts.


Instalação em sistemas Windows
PHP Manual
html/images/0040755000101200010120000000000011277240720014265 5ustar docbuilderdocbuilderhtml/images/b4cf2bb34e3c20eebcf8f9e8e7949efd-iis6anonauth.png0100644000101200010120000006246111277240153024451 0ustar docbuilderdocbuilderPNG  IHDR&/ܳsRGBgAMA a cHRMz&u0`:pQ<dIDATx^=]7{ _88Bgvfg# m"8{er&gLN`*TnrYÏCp!>,$? l@(@D^Z75MpbP 4W=ٽ&z]#v ń)(@PvR|5FP @(> KؗO/w~'/?LvP @(`WN}z/W|ՏvqY>縣P lKZ{o[yRV+ Ww?ݿ/wO/}=95--* Pz]Vk7`4{T֗ZI`ۿ=~gO޿{ݟowo޽}﷯_ǘs} vJé6%ၭ|,Szưi[@!^_sӓϟxۻo_w_z/\acC]12c lHuU&Nw|.:#D; źiqC]"H֢UdE3b`oR\_|vu{\Kxqx_]_};$v / l -{=˵ILZxSEE-Ӂ6nQ @(Uw go/zv'?-|O//hrI/SQ;z],*I?֥$sY(CҠ(訏U$ۦ0 U]`urFE}3JnzG C(1Cخă׏_:N_~y`?z|ed0JRF7ݠ$`g}:R!c"L,D'w~>+>.'uZRz`3'PL}<۟xO lcdѶ qR)Jl9P @|t0to.I+`-9BSLZ P^*`g?]_w~zɯ<|Ϙ8m[nCi`*ySi:i#z^)` Ue)%G!>ӗ.~½EPFl(l$rJ{f!~%i"E.ˈP+2UGl3V !vGyG;žKZ !SDnü5c¨(vV {{x4{z`GSd 5Yt*Ͷ%d F wh D3lSOtf|) m:~褬T6{fր{>׿_\立O>ǩs˞^P 4QWw?ݿ/wO/}=}˵`/7d*P=|w߿߿yͻo?ܣ,ҹwU\0uus0N@H_'?wg_w_zyME8EVG-~jNN' u2Z؁P 7]]|׿=^<<}W~W>;c[pځoP7ќ {?reӑ~K0*^|O>xy[l;`?ǟ^^|fvH~b,MktځP.dӱx2S?_}Ko?<W`K̔<\)`VvB(N ^o-|Ta;`6[dسP`xZȰ'O_R;,t7͟acTS !";s젣F1Ͽ{|GOG;}ӻ)0Vn^gUqf}:|+`g5G( l_߸Ǔ?>~OUlRlffC$^e7ζlZ`l)-0 rC+{*i00*W_ؾCKW ͓aG7.$VslgSJ >j=VJ(0tǶz&N@(p0?_?׿;l~WO~ͤ4̤SӓNM%KSx&MIwv!_dW(eaZYh+8lr$}[zg/dlth-G<57䴑n`2ѝet1;ɳ"f{/}RvQ XN^vKwg`eḱ=Q"t]S KH) ۲`(5dn45jZn$Vl*άxi7;O89S1`3ZoʰYK`Gh^"zhQ.G-˳L~T9m}-OeW<ճs H/W.qIk=2Z٬̧݃2lSqkƬSv/ T<m}lhL8/?sc6w'rgRUI"k)T Xnt<{ݭQkmv 7X]l<$Tl{[T4Le}\l:i, X-]yuP6vl y`Lo4x zqأl\Тyޢn@vP 0\[]Ǝm!.4 F`C^x{jǨg| tk>څ v@`˓C2lc(:#r5gתmI(VϓX3Fۭ2싋GGȰ+#ޔ-XW2͂*Q=2.M"x Sʁ*ѲKafܻ$5N9GU#obW7?ߺl\9'g=?أ2l*~ہivx+vY ȺR8_1U1.W$ )`3;Z`YSOt 9`:xe%n̑ ] DgL@(lR4 l}֣Gw0k #6`{"CڝgQ`{ !'2)BH+Kˆ u! ۑhaOTP#rWPcJm~?/Ȱ` -4 h~uaf6ێH}(p`t#rݪ'C( >0%,gVl۔;>g8%> 0MvʑLì"|긱GZ-B(0]遳(ڵ_2lgO]2lyl(FgA2 ūˆb**c˵;*eLz?Z붭f~c=[1;d' e;('~nD(DhȢmܬr( -FW7S&tˀ߻v ;yh)#s:_l0|٦ ;L9z細(1=GvӁm1xNJؖ1IvNև6wfmf/; #c{H=ibQF꜃^X*=HH_5Z>1oꅏG6R(\"E(R,K]YPW(XR|EP`.h;4>|<Tܫז-[kZx+G1vlY2ZK6#$>-l[+{Tly%ؕh-|7`Gr+> )1BY6ar('eېVNia= wD*{alCғB EƲvQ`3m-KrkfҚyTͮgSt**{6=}X`Hx4.1;(` ;C-Qpn$}*JUߔV YK>{բUq;sPm}V2F[.P* ;Ml|4te[Qkl,¿g+4+%%\F+HG12;`EZEB*g>)+9r=2oS[h(CtcDgBtRUje&xRHl^N+`@)BȦM3+9Jά 3*!^e `aؔaAc/kG.aܸu.I(*`c]`ܵEķNC9h&`rOr<NE؋܆{*]c޽{G=y=.?zqu淕}Ӷ`O;4p ̣@c`;Z?~ fGY =* 4_yN{f{l;`MlO @c`Lڥ7v_^| hÎ >Z]B(72W(W"^mH(wteN` }nB3߷lv7?w%ܩw)k6em7v6I}}zX(bGkԛ.>)zl SLRvHswڽ=4~/_/CKRՃ3J3>=W-3Awn(2r{piJ篸[j-o> oi4}+a6(|6[7a  ģ[0T+/ }2`J} 1 "+JѬ{(_͖CUxMm 4QKøe+.– o.w:$ [.ˀ-4Iv`Gtg~ ٿ)٫d4"r%wAcuel vHY3S}-fD `]E,lR҈"[' lY^B `w yȰУV ln|?`OfC=5lʘp*k+[,dAHƃ=æK4SE î y6]3&ԡ8G<ܿLNԑu/H'8@`g=ĕg{7{fnoHܔAcuˑxTR(&hJ`r4  n*&dIԦ/yݑaӥv #vu kͤ&޶@B)JxQ2UY+zE"J)5L"2 OUl@װp [n(22mAh0Dw 94Z{i!0 ;fߔBG]{Nj2k 90-Ye9;۴cHm5- aPIf 5SwݽAڳ9keM#{#>=bG2,&i(g*sMSF23d|zkZ,fȔft~I+H8`Oܖˤl?=n2a)G8Cbe> v4EDÁ+ Bڑ;<K/(; nNF ly =?4Z^gѩ8%6s&jg޲!_]Y(~6Ii,*r-HgW``g03l᧵&M#]hlf,2,BnZdXSvM"dt] OEJb`v k2'ܺf{oH`Gw@nWޓßdIDb`gZ{nvri_7I] SNs1No7v2l /)epE> bU;M6 Mp?`/c8$K>< o6Ei4fԧHV2rG=d1Lh`Oد}\h/{yذف>x$~GaSJ2BMK*}Y-S'_2KWR6Qu?~ϗL-xC}-Y>HK{+MOS'#PQRӿ$;-ލtoGM@c+0%R{oZ߽/%^: l<>/-wCN~s؇µl7xr`~g*= .=M%)ذQS|5Vhll%.1IS .XFAj[9+ͰV2.VoJ8~ޗ_%+g .rvKyFw_e ;q0e6'P;%kH9 x2QlKHve-`/ cN}["鵻׎ ag9e <6'VrpH.[׮zxxq8W(Y?|x{6a^ U@oژh76R<Ɗ=,W؛T';v~'ZH 74L (BMZ #i:NjnT67)ŚPh]{%`?{M>-<3CǧjPK6ɰx)Ё9k2lvӯ&Mkz Nlz+BvPm^ a7˕XH<̘囄k 5`¯س;!æN=]6喿O}wGû|Xk4,ۚQwOcOF5=4`vC`X3~ `G"{O21$릦Px8,mcMgۀ]{Y`,yrh=F|ݙMh˜c%,\>kPak ׀dy-SgIwv$.3VfvB lv"oyMa-qNK}ɁmO.2|%u?ZK(0/% G&`^5Qf+fxu'GC8+~[]ԫ `a0 9@VC;77ցM-o:Ft=(JN}[?=ԝq$~em %i؛79PY>ڣ1 *0;Sa16dvB!Q(8TkUGւ-IXGR`v`g37U/?}_O??S*X82#AXE(vPa;N;<_lIf728 W`v`oJiNlilG~?v}̳\  +0;ސ!vg7~?>=.d>l$lU7h6&ʞOo8*;`1??LWFEG`728 W`v`oʰS`^`y{Zߥq@PyO`+4ʦEr?E(vPlkJ;ja}߼-ַWs^nylao٠T ;D:4X)vYu{Lf4S6}ɑ♻#3>  C7G_|3+_|[m3`G_.Z)0;e ?0;d{ٗ_|Ͱe"ʿVy];cϡn  3>{$̾ͧoŗyb|ә~$`6k^n0_ف]aӊ)XڧwOH.:Z!>nu2l-س*0;fةOD`)}_ʟo|w垸dQKuH؛:da2.CJNA(`>ֵ)Z؝;`Ǜ7|=p.Zib؛:da2.CJNA(`À).W|o>o8Zy' \ q.}8 Ec Te.{80o Q-l˔BP Mف5DN݄C}U' `c@(U`v`027W2MU)`g ge T*0;-{Kp_끻2 #v >Fu^@ ɳ>'p9~Js=l+&_4+ϴW5fP DI4 Q}r { ~Z ڲ<3}۳N=^k;WWr(euo$]B̍k<6 ҶVOXT`y`o(3z6jߞIQ^ ^aд ^m}0es.3rv[}4"%Ir<)g=Dw*P[CWt U`^`!}e{_aKftP/6u# ~a+Yy] X1ІdwG.NʁhQ4.5XT`^`$5zQ0 bN`Gؔd2vIY1`Ѧ)Ysll؇ h!}pᠮ[ɛ%rnv7`m ~Beس$ ?i>DP;S%whdXkkP L1]/K)ΰݏy|E]⩛pgEdHdV-_bWd}T`b%/jȔ7l=I@P`f&v6"LkGk=6æPKv$/fR:òv|"%lE?xg왣$|(0#72ڝ~;B_tM/'jpCQP  ~z Hmg(`aG(P?'n"]9Ql{W+v}Y["Nn >q+{aY~'W m^3N30 RP T*`7ofƣv'aa P;*`0P6WfBf BlA쎸Zh%tr$,B*`vGFUt tR;Ӭ],`U(06 `wT<=(6W N؝Y(pBl/t~aˣ_OOt `ۣAT~ \+ж#}-2P X`STi:lHZ-Ae(S?Қ4nA1+lbQ*bhKvUw%a&ԂP@*`!N!9[l]myRу}ZmSeƇli ],@zenuhEt{YӖE"'V`Nv'JZlDRGriqH^kv@k|Ȟح`Oɮ,F8ّNpC -Sa**}4>2}5BQ`lwXB,v\ea:r6q`T ϶RQz`P,NQFi} !l6FVvʰ!hOC=팟ӱ&vvJ]12:ȚflbsYS6W-%fۛ L`L+oؖ6Awo94aziٔ~P`-^$6]uv6fKfkx @IN B',B3+`"Zu*nLzRj_W]+P`Zl#X{4lfYuvjl#MP+޲rsQyXވ 7Vi`ø\ 7p @?~Kf+͒o]``<M)5fp&.8v/aoy=2lF,Vu3??Y``$࢛PF^6Y voP&ll.p3}-5Q uI{hw!`+4J @9}nBl#X{[͡~6;sV:;v%W$i~̎i|S')S7B7 gƺdRlkﶖD ;u EbE&V>_bd`m_inDqBM{X>*'%Yg6![F/6adz.F*69}D 6v}[̙bvYv9Qcb5B̥kMKv/.lIkoz'hakE-CbUL[u~G(}ݰx@f!+^݌V;b҆ث^䔅crSݱ7f0wgJhCLp}ʥBjVqi9F6WM[aY쓉`J*ˌF`*?i跔OAދ{FVioH(EDK2ŘU9Cbs[Sl#  `"N1.vv4l"{6T M>@m頒P/$3Z`!ַ^H`gqn$e:1Sc|KU:Ţ6S /WjJ7XJ`Ul`SfSq'Gv_gYMO4Ҡc4,f%$( P^B,;͒R+vY}/38|Q<уOFn.l?#ݿkFqɮbbv4&Fc ,*)7sޜnQ yBt+, 525VFg}Еݒ&2zVYX tNJ2̲ PՒFRVN%^J79SWR fYq*ciPt;:1G:S&\3^h,F3)]Ѧ!m}] 'T 4y<ߧgy̭`}&o P*EM ,AM=^vn+مtF} ̭`WcT1]vxh,(O(P]* v >FՁbǘ*`Wᶾ2g(:b[[Gy(v=s,؋nv3ON)e%};Aԇn2om;L*`Wᶾ2=vLz+`3‚ez1 ԕv,=^ In@V ̭`KilLo/Tb֍0 [&<^ 3oRm}e{|=j&QuYf|Y. K*`3e&\-d /b~ǚҁ]sKγ31(p *W*{$f',*Ijxb*WՍ, ljgL3&)S!4;-3E, ~eT@)[UVK?W=E+ȧ;2c֩O7ɍmKޜJe݂`YWm}eKTLrAR;TRi\ -Tb4ɺPTb5%lJaϰٽ\gzt=22lO/ ZFrq+xU|U{aBfNh,&e> G=nY/s:`'\xׇvEnJɔ([Vl#7xUVNNNU޶l686=W\Z:`o 9l{/Μ.'i.!8e*zޮaky_Eܿ*ţsEDQ`WΝ6=^{` M1 ̖Ŀdzײmϰ6{h8Y\f\` % HzjzՐR6FfD0R݅lZ^K\4nae9yxl{6cWYTYHeL$+Z+27T/u,!e#dcRƕFV Pi `TKb3K;06d-˳H-D HU{S*3n\- YJ]Kv(JJ٪"ov`8jady!@o , h1N&{ Ol6J@І씢6-I!!+]v˕ kS*':gx\?gk6ΒESO4˕ðE ]KIFz9 ^RЭRQlr|Mkcθ T+`Fٓr T)"*xx(9\z SWԔ4BTvsSYBz`]i wj. *$k]@`OƺqH`حϖ[yz`".=b =Pf B& F*n,XQ7P0@PEbV66b*`#"C(`Q[2(38vhGǺ+` VinػI 6=^{ ϡn x\6ݧmvhG+` VinػI 6=^&|iu#<V 5#G_y8g F1(T 9j2vhnGktRj5ہO-oXIaOaFt[.PPJN `l&`[i5L=; -RSXY'Mmo*,իgL)q.1SgşP@J,(BǂZV' lVC,Z=Oͫ۩XT1&FZ)`X* ,Z^˭f%%m@&n̼g_Dg`/P@_ aQZ"Ca}K!gN=IViVTau%2Ο倭ϓ$2V5:ef& '}g`ز'Q+<֣Kh{XIGiS4o z4cͶPr(/ ktoة~EfOm Mi1cN2OQgtg9(`)ژudDJa%KtZW!ng`+}L(@eld16# RW1/= "< /l&**0 l+UlVV; K [FոBD6@dCQW.˰SkvlvZ|7vs` @{hw`a236|ɓ$1-L4K~jg{4 OJ SP F*:w/H@N ؽHl `wk/x (`ګ=d(=ۈ(0v/]jlW_@V^=C#GvTd;#X]v՗P[x{P 6zfu#L^lI;G-V`>W6.š_~V ,T^t6b 4Uf({h:0aB%;] .ؖPnK_Pf[!<_C'oU3p85?뎅NvF]fKRfm%ֻt-8,^Y lde]Vs  WTJq( v.M2nW,i`H@тDlf0KߨT]E@0eD,CLEB`A6 \~ӊ[02l;[]9m^,b[Vԭjtye9O;j\7wEQrӔ75(,v?mWBRk aQ{U,vevem%e6 r ضCYXTv۠kP ؃!QOX,l%7GGh `7|()ogCli0*2ݨ ykv@(p6l=n8)x`;cC;P 4Tar={j)9j=lfÞʷ@(P.6; Vhs9p[s{1xNl_r` ˓pCV+s lꇒZ(V` լe$jE;U+I[ 66sl֡wo֦-9z=P9Oh4_idku|וSJc#vp5>}(<ol{\aEY/+/ϮK<9+Mndu&tJ!UO1'f[:E%keLM$sʱ b)dؽHl;'u_eN(,]f\MWXȳ!~.FF7C+#7FSڪyV|!\rF*D-ԮF*6Ͼl؊3lɖQv2mb6)/i<K|΢1PkT1 (he ֶQh)hj%Q*&advġkAN+i$š1FWv5`"fkE)~Eh1cl(!H'S; PU. *ڌFXYl":$RWTgH1o,AQv-H) :.ܕ;`UlN`%@/)e[]?HEFZL Ztxj /K[cBedl z$QY;dZJtuԖMFdghEbig?[i9Uw={^ l p/#=/cM5tP$f Qy[QZ`?lLexI˲)g,;TߣJ2eFnWeOsFCztg MsQgvٖy+Y ZKEgږ OݦJlCfd휳@b^i{`"aٸk'ZR %3H Ò٤b䨾\SnXP=7!wn r(׫غ 2Ww[k5kuB(Uvv sʩ[gyk +`ګ؜зLL=vEA& ؽHl;!Hg8ח+$8g^NŽCE(p^$6ڝ ƻv;+8W mkb9q]MM.PaP`^$6ڝ؛-sg{ecvMO6(](z SȦ簳Ff8g2=h @ F*6-锒$ӺS,X J_fX5؉l! `-A(`QEbݙm@&yͶ;Zg%e&}c蟬I- BSqW)f?3^`;خ#:˖%–+)~SlƬ'# ;EIi5 *hŎ݋FGvX* e@<+D1'ވؾ<6u>}P -I#c6=Ѿ>X|)]a  `=6 l 6d,i,fltbnRG3LTÞdc$l>`YjWˆ9cY`98Q `#WMh,>J1,\A~2Bu*t3ڒ'X,6=/j9T#XsxIRTƅ&4}fAi[{BkliPNDeS75` vHiMq}!|BaJ_4m9nVږo ~1:e9LT^) `ϋ}F4ϰif3yRd--UX>dIh 1m6stӋua\ҳ+|ٌ':fCe(/RPXW2N]2Evv4;gJA,#`[TW~Qzy3]2iW?30Mpw˰- 2;=vU6v@xrҜ8kS%vv8;EvQ&z.#<Y7YaZ@uWdClcvmj-l K 5bW؄N ` l?:E揬Ů: Ju_VWoPJ݊(PR{#`[+g1G tUnM{*#?@썀m]!?g2Xh0.ׁMC(Oc[VW-m8[çKsd jґn @}qL;3OԴ;t\q u88~kX`دM/XT_u6Uɸe=^GmY/`O;ء^- ` >95``U&i}`7o nU cGj`ϰ==^ĭ ` tI h87`WWu{T>d=Q)- Ӌ9-qBE?{֯Fs_;˶@Rq+xU+JR0HFi _ ë {64ݞY-7|Pv%X{UuMle!x;c#{쐵İܰrmٹ/5EJv󹾢AoaSiB+nԯLs`K kvzib+ګ:o/dyO`{Y7;'g4%OR{&fmXv/.anW4?Ý#. +Mr'ey]IdؓOrv8`BEZrah[`S0{E 6𩓪v^]*iAjlDu{G=P_8WY1Ze6=/m;4ج-ߐgd6gX}A{6˹Y>=Ȱgi ⣦mq5챃v0: `H|^ ~89s jܲ{.[ W2ŗeP "=w[oemV svUPz1.Mg(pmk v.v*S 57ҎG]6{:`6ڂ*`7Co!{ѕm]fC*P [f>᪓]1 *`qY-;;GP>(PRz ؕ3c#z*`qY-^8HO(0Pz gۈ(6z;c* d$pSF>g;x9pq١zmks8 M}톔_4C^{M67;W }` ǐF{ ތ9 5] ɰ';쨏YY`p ih\L #X/U6s>՗>f嵋5ն2l鬣m'kϐF-m-Q6](`wTY;m;*7Y=쬬@ mlŢ !-{l%w5gV;A:jo^찖hcxә0z묚h>_J1rݾȓzj>)%Lv" *Vl< `4/O]9,\T BM&Vo-)(OerUO՗8u8Rk{`Gz [O;c^&aM mcJFw~NߠapL(Y+%z$f3 Îgn‡/h>  ]? 98< ؞٬6ݾb!fVlBS^e6V2(Sn5G[ka8VYw +=T} 7hsMSX>~8ho8aޖl@`ӤY0?웳QvP~?`S}޵ѭ ԔGM;̰)15m]mZKfٚ(U: hNлtl63kv--@I7w44w =JҚv ǐFkTJld3 ÿw0&XoR2C1ؽW][ofXkKc65`Z<^q ǐF{CZ%U!{}>"EȪԶŊ&X+0U!1G{D[bREKԵsγYon;4:p @V q`j63d84D.P`6lSMoS8V+&+`X}yM[W+k,3(Z)`h5M׵`;v ̦WֳM. 'Q~w?E`; -B(pxB [&V¡<Pjq c `Tx^"P@Qv-q  @(CnIkInB(W`; 6q$AÿP U+'4{Pn0'x{\P @(vr0( ڸ7IENDB`html/images/b4cf2bb34e3c20eebcf8f9e8e7949efd-iis6defaultdoc.png0100644000101200010120000002031611277240153024737 0ustar docbuilderdocbuilderPNG  IHDR5sRGB pHYs+PLTE$k8QcAYYYyacicic989!A91iB9qZ!i9a!i111)BABRQRRQZJYZYRy)ZisByJyRiBsJZZB1sA9{YBsYsqskis{y{cakicysq{ysq{y{qsqsyckkksks{knjAa1aZqJqi֔Rޜ֔ƜΜƄ9Ƅǥ8ΥQyBq֭Ƶֽ޽޵ޥεޭέֵ֭εΞBΞc֦1Ʀs޾kζƾƾǽZJ1sהόoIDATx݇]F4rO8BԧcaB k_LP2 ILbbTHp֝Dl)ݝ7;+~oL!@L+DI@L&`'B@IQH1_?~7~wbalH[=n;W񓟄I'FvVQM~7|ۿeɓ)`p1_M??)QjW24s3Lgo/ԧ^|ހh~KI6 b23M|ݻ/G?Klf~/TFYUf72~E(O&5$L*lR h~[_߽KɨRϟE[DɖmyƤ|&7>|՘,9>P9#-3kdy7RIM*,OF'&.?o~6OFaRSɨ*)%=7߶ܬ¥mD_JbRPO~g_~ٻIj&uU3]ߍfw,Mw\R*|x9YT,o4dýVvG5&W 4ߟ4Mv9?W~?~ן rɪhcG=Nq?~/LFUjZ."GTD̻L=??ܚ)lQ7>/o>0:ζ%)8Qt `rf& Ul*dOYS*dEl2ID-+Zn#k飚 Wv#hu&0N&0ɢ--L"lkIkOa$‹I=ҚnRkKk$ƒɲꚋI-me15$RLdJ#ˤޖV΄&Ld̓YXmRoKkL$dS+* 6x_?tk}U*Y(τŢPo>en >"nC̲$kR--'v=MPz_@o2Os̓ΤҖ3~"&ad9|Rʬ kjK[cvI$0iZ&}ɨƤҖ1)nTwb`ңj̓QoRTmiZ‘~o¸m"S~ վ]4'onXΧY9up9gDٖXy kZ&7Y"GjJ#O&ݾda3|/ON )Jj7dێԔ݂7sAE+=Ok5&S1nyĥ ;_$FI9粛KYWMz!0꟒05?'b霹޷'Y>Imkd<3Yh:$-į]~LڢIBuuo_Vr#̆x7,@V'ԝ^ 8ZkӤ`Mrqp'̬Iɐ'a&DxamI$nQ"EBw"MLp4R L"&jN&؟&i2d{߾xqm&l5/0h1wZ;1/$b&o啃vH0~w>zUzM6 ɽGo$7)L¤ɴer/6'nb+m%'ˊՓ0 &9uO%qjRf{sT?I8b&vX7O>yiTuw2ɜcGL?O s`5ZM&(TM=Mf͡f?'UO2 o_L'${ϛrzh4I`j ;2KڄD{WJ&H$ JY9*OGV͠ny&G7i`'>L"ɤCܫv&qԦ')j9J Gpc՛ /'qǁL ub) 4c˜՚ oZ3əT:.w&sɢJUU eyrt2&05Y%o:xL͓DT/.1g!&gë jcD8VIi^|0MR*X¤{jU,i-_ŤngcԪT{4;v>ʓd0Jݤ7uuzj^3THR&gzWˬ35)㺹aRԟd[ %kIuOj+8$F,-duLIQOFqqq!&ÀRK5VR3""4`H}gɅI'&`e7%dImW{<=~z&ɼ:ƁUl?zw?\I#0ݤ~j&ivt1c'0I&%&'o]|vE'ary2['1ʋáLu*Ȭ!嬺@y[p&y[]SQZ '/_fs(&`ry8e)7?r֭ޥKE̔ '%L9Ovb/_>L䥧,(LzʓRBfsyfh 7KŅy3/`_Mn.&(Mn bry'w͓Z l.<Lz1-魥 #O ~&a2I73~7L&ݚI}M&e.jD6Iwk&f֡L.1K+ &Ifn3O&0|zO0 MJ4~8Ad.0 L 09I{nQMv Il6are&mm9$L$L$L$L$L$L$L.d>G6(o\L6ϪH܊o6NkY0/GwY ~dsc}VK?}0 08dQ$Lˑ~Td3:"3I,!~ݤ۬IΤYeTy0i/GG7ovVi,6iLorkuk|5kVG_aV'O4VL7)55NQ5)Ԗ-s䧡񭖰${!sB۸Ù4*GZBp-L֓-&%)"lLMIaD*l,aݤ}#ֲ[Ia Dm{'0 0906&ǹ ILNä/ɱLҠn2]'XS33Y\I&ɗIXYgXYpLa&cG)<ϕNګSLLL_[$VA^Vk44snSz_JYiO:T/X׽UUh㴷4Y&Y8Dj0m$8ɾy2JkbKd}hr"ewe2XK Rq|l淲;1Nz ?D_vI_i̒fT÷:~ ;ALʎ (a&Cϰ<2զ/!Lf0 0 09I:p07w$brIL"`&0ID$L¤WZW`%61@ ߱AI }L"S DL-oȗhBpIENDB`html/images/b4cf2bb34e3c20eebcf8f9e8e7949efd-iis7vistacgi.png0100644000101200010120000013562611277240153024452 0ustar docbuilderdocbuilderPNG  IHDRw)sRGBgAMA a cHRMz&u0`:pQ<IDATx^w|b|ιs߳gɖ,+YheJ$RHA9gٖ-YV)As9AUuOOO DӶ215 ;ݧT$Ld'-wL,cr+<[=o}k׮Gyͷ36` sfm6,HV>$&5ep)+}^cL҇:a`go`&(LK@;j$Pn];,?z&k6pkhB-jΆa͚PfEnӌjGtcv,Ը? gev,jt{ L mDI=JLX ,RE3Ɂ+Cm1jU+-J;`jFbf40vh]NCX.C[b Onp1Yi<"ʬA;lR)\bSŦrO'){J sM* DŽ/d!op P ,rdhș!&А78'_Fƭ% m0Dؼ!14d(oqt'rf8yԔ;b9b999ȋZ0P0pdb\|ݹ]G͹$sc,~iut~lْiӦdz +bȃq )m*Gqc`;iNS0s`zA! @{\U;FT0 QXB(BoD@1-8J9Hnl jvI( uD Mǘ>"SRWxW #@hQ01ct 򶫼JwXӐQ"rM  -X 8X'[^q0:sHmR;5[^gUX+-=rڪ(AzAlRա& &MI%8A$Kް}LFa^? T|tDzf(SꑘRV'rV3该{z4t^"}Z,0yQlRr 6L nCm]7"֡4vb.(ɺ ޸HfFAА .C34UȬc B"Ne`PFu3Jp>6(aor#4ts4$@$LH8H;np~ZI!Wp{g I'8֍i^^ݑc{Gk;ql^߱_==ٗ8KO=}b~;5}cLݧ=Oud^9v C&#|n:AbBpc(Hp8GQg MS%8Y,sj*kPa!6d}C&߀ :L*5sXA#V GO]x+aSԪo Ikeׂ^t9w}d^0\i*%6]QU׬oV6rMʓMfMa &VJ2W͐L ze*R*sV9+R >g9+9pe]֒.[QPb²ӊeq^Wj|޲^d{v(u(KR^GE^i.!f)wʺqZ6'tȷ,{FIlVv]<Q59HQG`b (Dhq0R5΁`bqmV [\֘a.jnţzuV3}HLJ?h#z@[=zb" b3n^k|7v)Peܻ˰we.]{wZK2ֿx–i5olDͰkݾV~-cC__d? S :[n%릻G;1!lhl j{XsuN؈5bpf߄?iOS=8-6[pz,0eƁdk5[zu=.CUPީ4T+dKXi(0u;Uq]Wܦ6WX*սNSy ZTyɺ'U?Z-;\wPњFun pi,뵕9TIAU^chJֲN+VJ,CdZ%=v'ZЪo6N6slیymNkI4sAN l3wVC\A@z")CÌr4ka-6CQ݀"=DRg!vԀ2WP(7)v:2DH7h`! ݜZ0P69&3&L (PN"[GdZok-ˠ؀2)v48T&Q>-5&Mɩ2:ln[}\mXQph-0ةFV.'4Ⱦٿk5Ů];_ک۵Ӱk雝ovھif_g#辂^qXrsݟھݧ>3}Ou|ןȿd9+/=$:jRF]uҠ5o;>/kTWsTv,YVG@(-1')GhIlzX'mqwjOi*!O2!Kn*C׈CH &P[*SCVSZİb&+Ȋ@G2qDh")fu˴>M(AC+Cn[T` {:`n34j{UuE]S֦*hڵ8Xe@@]D[ڮ)hZyVeQE] 8v: ]vcYP"j9uٵ5ǫVQ;T}`uFe^acYRXJ;Mt͚&mn&Aۤ49 ''5ړ-`V4٭XלhT?X!;PwRvj`5CU'M9ƢN9EWЮkӃ3Auzxx2Qתoc۬F dlPUlP²y-B^P/0~J&nۤ eBBv#MFnX\; jԢo(i8c4lݚulЎo9QzU" /nAmw_%Swb9FLjsXi[Tfhl.oB;; \x jCZd܌57:?x냷?|÷>zK[5[R}>㿚>~?,P8F?-;~[Oކ?yۺO|Gmo|Lο*.]n !H خ=KTtE G(d34 M4Wxw6ZOm-5s A̡0FZ[ }˥ ;t->P{@iaD5G8^'?7`Dڡz@SQԮGXPGr$B!aiF'XroBR`/pGAD8>d;'iari(@yez'0z}h FIDV.kh⬥GڧlU*%RDVk:eNZ"UK*?i:[Us`KKF?Xij둷*Z{uL:nF]Yz^I;ay//J|y_Wo<#|#~Ʒ^ҿ/j/7_r/!z_jKGo,7ԡptyJAd׶kzEY޺![ByR-$򝬬w13`8&+NWh=<z;+6ѻ* OyfeekdФ?Xh@Ʌ_ir* 0T _| PټZ-)f7v Ԑ?B(1{fZ\B =4!j[ϐGaUY;MACۀOУPV+u:YN,doU(95e;\ѵHrHHE5)rE-:9@2F߾B }o~^Y[ .v29ZDsxM~(}E]Kz(_ TPCiޒK+|ɮ_khgG??T/7u]mtP5A_DjE?HwN`YosZt+[܁P}Nw'[˓ = )R:*໬HyҞeM6Th1ፊ;8GG!DJC ƄBTȅ\9>&Bb ) IHȡxBD !yEߓPYA'0r׽HzT8Y?|=J_{{XP?]xdI?'k;Q/`^ՁJ1U"呂#yU'JKO+iHo_5\Stե^]yU5_6˖~)헝vb}-w׮[suߚkzΫ%w^vMw^xuw\]}5_St5&7r߻ $ dڥYw?-wum`?͈=#Ѿwge@p̥ʿ@ÆI/uǵStrp wpū.+z &^ˢA4t鬄hM^*jKV֛ ##0 ahfK]|)]vil氋4hT&ftMhATFB2Y4-]ɀثVW+*ezi^M/ x$&m*lSP$?YDu߉D@ "ЫC|tn0QS?H0NS;N'}ym?)hۓC!y{:mٓߺ{Oqº#C'~oTg,E|{mWv;_Ca=ȭۢ߾+9-kH'+?W{+?9XO~yc_f.ۃ:޲5/[I )Cq٭n] A ͓|]ndMo&yc_܇ b}] $8%?t->7iۍx/MvH< SPQyk 9ZG#oJ"*LBRY ֮}˾?Zo:O+k+wC9UTm=t%.h'/CVzIP~BXCUum{7G~{ّ\v??۟yKKjگHrEq{kZ.[|-﮹wtiMtiMtiMTpI]k/͡M;9`~egJ5}6А AVG퀋"{i< &ϻm$݅@D9(L[x<@ā  :A4/H[k!H+I^x+eeWz3 $ K 1v2 Pt.4WjZ;rS琹Ufhw;튒~* آD< ",C\& 7 P͑M:#dWܵ)E=:.hd>?\O}z ohW'Znݕ'Sֿrj }ꇎxp?ȋ2MjD0i A{|`- Q}W7>mNC}]^{C8B!0*xq,TPw&BX"D\O58>4@#ԎIa0FȔD.<(zqkU{OT9V݇K,(S|H~#uskdW5Kzپ!)s|o6)Sem'Y)?Z@PWS&}޽7_skN|ɛɽ[,[ۮjۯl;k<\.)Dvuu]Wy5w^Sw5$ۮ.[ɦ:v-;߿VDqw֚|v rCp5pН^r~~WKʂ r !aTЭFaUeqq qyZUh$ iQ/fJw+8TsRv?ANz4)ڴyxQ?|NTUJہ|2 ay/^Ӷhݫx00Mw^Ө8V-Cs_IBo r%{Q5K }Wn'?p8/5dW'Q5|W& 8j P<9X)=T*v7'[n&;P]صG >Ewzqt?+CN6}1g7iKz27P5&J8ȡtEЋ#sPsV}h0R;Fv}qL ~C1t*yurjeW=A*3~ha:Vt8@l l{vWd95ieUxxq3G kgY{c﻾7\r_~` mt};7ش 7VojT|kọG9/? Jgޣr^f8 ~5SӀ g[cpOBtl]uÁiyto&kAo% | yڬ h,QcR%DAKvtTt\?l$Z{T5V"[m p^ rPnrEJy%x>-x1uD8ИhrLMrd*7z5x_,mSiJbѕuC ʻԗkZ>DUԪD9]yM*$C;nCI;MD-zF7!2uAiPd[txڡ/4k&~H:7ʞ {@@'9\9xrpeaDU[Cyί :PG&}s%XٝV=u}Jk`8֩r[u޴͎@4AWGZ+e^I7~ PΣ5jn@J*9Xܹ(m._z%z*$=#L"=čBaB ׯo= VMP&ݪPAFƇ(r+;ڎ+n9R u=h'r%ٰn#O:2/i/EH9C'j|TuRòBҭӹ.=n][umVo_[}mk^Gz.ػl⎂b)ݏ <غG5l}H7gj E(Ab$06/[OEOU޺wa?|oYw4 IbuG fbl`uHI lb>EeE|#R'_9ysuLЄgSMLm&·QMF_Vז\:ǀkI1dm Xu "CcUt&+f,CAK%Z0f5:`Y #C*zU}tCN3"?2U2^;t,SO?ޠOMC+U.k7?tiӣ" crG\9Ec{%ÈA2nV1\<8ǖ!!Tǡ@02~B¸$|XqI 1W>X2XT++VTTWUVvcWuUvcY@!eq.^T)=Ÿ:{a vGޢ^^ھznY+-4J#VR'EV_SyQA+^W?/lozq[K_WU^,_*{m q{İmۥ~X%/ooy{K^QW=GyG<Wa\H88>Xz$6u=zT3Lv_ kaB8HzX#z;HXC>wp' %Bq0Hy"w-~޹CƆ$2'Ԃ;h0AxC$SF986@bμ$6Ѱ&ȣχpRHX r[G_eF7J^=1~kc^!%ZFjZ1bZЧi?j lע z" 0t0CP?Dt*,lӠq# !`k1(ARkx;A]=C:*J hs\L:T$!P ;-c~!̀>7-,c:x t@gČ&%>gq\ꄕt[1D0Ynؤk@bz~;:W ;PSQUпۂN^Re9uK:8P9toj0܅ߋ-r0ҋp#UnjGin|H(0ATH^GFڥ#8@uTiִZ`6Vee.+r,+ZVSVZRW1{EdYKFMCTðBv$ V+Qjڕx=*j^/?Z|$}z~Ns>70Ż(#zDzx9ٻuZx5wv|C, m?=7A8.%z$m xӍ7`IB"M8oI{Q}10A՘OB;NiP(zct QQG~][]QŻe:yOB{}#m>udu15!yyMA/I_+ W#{y(9?э m 6Gb#|0ԛAd$ԉW1x1_ O]Y8趍 3($\zSYjtRag "pb@q>+`0>tH1cwd\]7X`( 08V9#6詆Bw͠JU+zl2Atb'c?W!sUHp"(:WaH\/؊0wd `법tً)2ڤCROU+dxHGF{0؎è>áq>2c `d]aj0*Ī#ޅAMyeƈ䉁I^l 4vzcy2iFDhdxC Hۑ?:4 iGth""4Hp!n2A'* 0ZtLlز㭿 1YdiVO_b[Lo }i?/0*$Xdǘ-~=zr_W9rUI$_[f(5ʈs`'5WeU9QusU:+r\;1iV\]q#?gyrCΨYb Ǚ]lj| V_GMˠa~-ڿmmm F1$\[k:=w &`Ĭ5w B@w>FDeVAh8apq,J_Ռ4MmxVT5# N"5 }!w!Ʉ~>+;5d g3Ri>(!cJk`Nl!H:5vMiQzЕ!: rwiBa,B0xH-PB ";)"82uKiT aJ@[;X{1i1CekV:fQJ!?1 =:/r[)wI]rś<ԼJ/ jAUi$7t2yTJT>t!6䫕9CVJ0DTaFYwCﮓTVHaЈ%yq̙0 (H.) ;Aüxeb'uBXB-1{12*PtLI=.{3ȀfDAvM@F݇~/6nmP"%oc8wCn|v tc_aKaֳvzY3;dgns͗󨝿lE{v!+}g;w1V7Fy PԹי]AsrƦiiAXy;wdPT#:W 3 ץqf92vىMD~ ~0I6r f0ɂd$5 #^(!vk-x_6k-=`>@t~ߦ EZkVTtЖ&m-4a&Klo0b=EA(5(USC%؈%]QRP.AWACm0#jf r!gI3SF #<1:Rr'u>q!8> gZۇ IMT T891=aBW0t7bܠq(!I6\e9[`J *;,dPa"" G4"'m YV §*4d LK5ViUΨV?j: ,N1E9¨p'E "[ ^& yuxu" \kk[ժQE5{m@o'uHwIH&.JiO6Fp ZM;ʳo_)!%B[DO jMv !+jU FT12Q#*P\2CՏL$ڂP-L;ӌ`%b& l $T i0#+F`*QWU5Ǹ%1M2|۠Kbk,D׺Q=҈Bd4A@%b#D̕ ͂DY:z^˚q%pfm@GBj ü< ɣh^ {M}1i@! i+Aԝ@pY 1rRtOz` F#79Q>!0LX9Aыo rK'Qd&HL S jBc UO&!,f5549lC?:41oiӜl5Em4dEkl?IMx}.?}f8jIתHF@ ׈f*M%KD/ REE KRYS A8-bӌ4jFZm8]U@f{*kHŢ[o>Hi(`A=J|QJ" !TIuBTNZO%!O"!$WQ!hњҐ0>1 i]@-xc1QD 8< @=sN`4`c}F"oo9rC!^7#0aDZR"1Z,v)`D.M1vSJ ̭-v["My[hss$ 32J9Ez%r,ɟt;t88A"T?j\jtӒ…$(TjEQPScDTU)& O87DLW$2k&Z:E ??Id23 I o蒮(9xO6 _NE4*߮)hlXQ[56 񈵨Gqֈ퐷FTE=t|! AFEJ@TzDs6AW ꡂT I# #1 Z" FH 2 H :\K~ś ;Zp ]S lF(e"ܷ5C`LHO%1&!5vG&((L 1)X;W+)YV|UлFQ{$i]G?!MH^+kn4#R]kW\s̓v\AX.(1u׷ XǤ m*ޮH4MK^,xw옊q(4 4zwukݘ K2D4WMHA/< q&Gĵ X#h#("De* A4%E[ iM|ͱL)Rߒ\dFv$# h=>rnw!#QF8 A8~Ꝉ_("9 F%UGQˉdZ%7Q[%؀KhEHqQܻo舿3̣$J԰! ,DKW,؈)#U$1R!#KTOR #Eґ7:Q'A{}N j[mN愎4~< x |2zaT (tG0DFf`qjCN:ӡWQ!ڌ(PF[{ 5|5Ȗ9",*y9Vn.Xi+vJ{R/>]|b"2ASe٫BnHHO0ޕK!%uQi+vX $8A;T3жN2Y IDIebI֩?[#!k6'j7[0Q wn G̯Ѐ2"*^'#D !g-4ɇ8Q #ī6$}%'" W-Q{tn=Hǡ@$L@,ZPSM՘-v:a TAk;~|%c2 Ԁ?ၬI)8}Dp?HO$R2cLVXưoђ~BO:#mOznv 0Y0HC>D:rCu䜟$aA nJ<71]wtf )&P'u~Lidιevf&52o1{?YlNZdXMGE'N-**_ Z ErѶb&7 E~3B*0n9R SQ/9F# wp2DCئ`AQGhGw"LzJCφ3+/ #DCg{:t[݃K+ŰNtAwhsPQqvu<1(O{]rxJz 8|@駂.) Š1YsAsN}A}Iݬk3KTvY +2i2ei l"#)g#u`-7-:tv4ѿ=1Nr[TpO>8t!q1kҞl2 @݄>@ WEGhXFGhkVa VTGk*C%DCl*Zab&p͐ݢz!mVc>;ysn;VI&I?bi1CryHnѝ$(CO@K~@b ;Q!}ucuGdby ۰]1} ;M06@b 'F@ƥѹP-L;y`He*ЗvbPe$[ -RR XFLPnIw$% uYo _;rsʂȮWO8He,51C}FjACq2(/0(dEq_K0 s )T.L)%xlgIr!4d1 MJڇ,B {۠}Va SKߌUl p$ hd. S8ȍ rsqEzƟq@HUa&'˂Aנ4Y-nd ,fAbN FPúk, d=!ъDfD !y lhbEiDDO*E&Nhns6+آwˍ$D|3 PIme-d1yHdd1m r@e Щ p7~^:$0z!3v֧"&Uaѯur3`Z!$#36 dd_0y<$ RanwA (6V:_ FژL`= s3Psss-3t2-\7 Yr'K8^ߚ!Ks_Qr*Z]>"셌9]XҔdTD^Vbt 7n6h8Ab$ Ć"F>:F }DnlĤ*KM>P =7'QA 9䈎iDG8IO\GgyiN^ E;HE;Au֑I:nYB.dvP:a.2s+DsbQ(6J8#^oѣv;?=p08@pᓏ<2?=v<ǭOɗ<⦇۸?a>uCOϬߊ?S=z$_a˽>qCOb=[_ud=[\w<7?l_<!츁N3|ry=$Y>}[@y~ög \yp\Ar{6?~/faX8Er %@(d-O`GJBs{)zgQ͏/qˎgI 0⟭Zέl|d_K{qc/nz*9gɷ?7x=k[ѵCPz!%8r (φp=888}(' gG}/u/NjZ0Rzv©my8^bb0۰/ +X2$$ɟč܅dr$^+Ʉϐ|Bp -!ʀksyG_|W`۞~ w=ܟ{Dd۞z^Ľ ϬG1襹ݸFOQ'p-?áqe7һ7Æܾ1;';rq,y4[wu2A(ãwoDyvHk6lsÎ;߁X!FHo_I{٢spף۟(b qf#ww@!D[n}SsKr Հ>+{RO>nm0C02KΆyy-<7܆(ddw mmESc;^4qb>׋iqyI10hjDC#:щ3[yy`5xM=2׋.jTyA#*t 7D?jp O ϙ+8[2`n :f?2:ԋ1Zm̊# 2>7.o6AŃQNj C3|< hj:-ps1QbH84G v{ SQu~" C!"j92lye0F3PR]~UrdXxm@T0An~U~sgX8z~+°?q˞A:K },=iV=?(.jiab#B !%'~,/黕d`Ȝ)jX7wvo JBagn[&\1<ꮬ{:x:qx{ Ҧ/ݕu-EσI<ȟ9@ާ?ѡ?2{ <]pTmF$K4NiX ?` ď'q0$51cij.ɒpѽ{ﮬWx9pPp.@qd]\oeu \Uz3t]5'6P_\di39|2G?jr49(@'KcKb7 8渧,j*y.f`dtdt7?+C2$NӆMfR9n7eAo< EpL`e:YT㺨E9=";|QxmW>- o:w/ZƯ5CH [uab!rѣF<( JH?YPCwؘ]/Z' ,"▼h3t,}0Z$QUFi&QL6Dq>|J 9d>7_+EjRp i\DrRxcIw\-t fizcj?PϾ#m竿.s7!q:gq} N؀[aKA,G"xp6&:\\X9O4. 9$k3H_r̿!ljYpC[?߯䛏Q>g\wνWo809HP$s&_$ƴEX)k|]%8+bE׵cs} _4A*Hzjyisb(~=+EOuY˜b*ኚ"Θ`l38TZCp^+_w}Pv7w=Gސ}Ն_.Cx=W/c!sJ4O `l1:W::e3H$'vzq{ʖ у)LJ Bg#J]IJtԍqPR7'_ssRpD={*++˻;;MET?U{ ]~wC_aU;{~b\+;tXF`$Gc0If;?`|8MZ˓$ɒez<Bޝp᳽MJYfEx!"͔W6ܺmz_oc*X[u͆/6Υ7ӧ<}'o'cLNlP'u9A>L#m"̋&t3Wĸ4EM0&z?o׋E>O-KZųǃ֋S^*.h塯+?5=}[V]r{Ӄ/4Iڏ _3`< ;HU8Ht}FY5-ro?b4ޓcUW҉GJڴE%kOlЌ}V?'ƫrE5kg~O2;)Bc'Y$liˁ[:՟|^R4qu?]AKp4qpa<) J'qX<Ҝ`rBq\CwM3kK2i4q #gD1iwt%.M8t*vd+ 5YP@?VgAA˿o,vj QGA.#tCFaf`& ϙF叼'W $$z%``XnoxBLGMޓb\nyy M`~p$ӣFWjOyy`ylx=jO oKXx]^Vb4<_Lfp$2L`8i%a`X~dz?oѕ?`X 9 30>$}:75Vѣ>Jo9}<<,=pσOؽýjGѥrtΌ/V9˿,] <<uOpq{ì}p)ԙVn~ I5Nz@?It Bʽؙ1fГ.x0x.RN!k7Kć+*Щ{tj委ü 0Î3ޟnL?s{LNb)JaWXr_aOANq\ݜ3>mry,N,Lds*̉甕PRΩsJ<˷FqaNcyc*[HeVZ E'!D9NS!\NI(sM?3~-`Vs8}ǵbbQNĸVBM:Hb2Q݅|[  ߉`fsf~hyt;εTjH83ɹr˘i@)o:zs^Y #/yrEY v77s5SQܥLx90.5w%܋AAVOHNv)rlK,LIEgqL0; J;YisHт4ȵ^сf) 0w:sbIo!Anf`w#PoJ艍'9鷢|.mX.UQFϸV.yG8{HX9e m:IsżIECT;ΥTh\{c/6Y%;Ob&mW(,yι0'GSNnIu ~PR? 'ƈ"Obzwc swhG`gjFOx)$$7܎A@PS΋kq8$qLu*@ʱz %~u*;|8ʽ?r0Ğrʻy cڿĩ pp|T$=#7=jOW3Taw8քOa=s:>⤏Y_}Q+ ӿg>|n6蜼VIM|RzAܓܓQSVDr>^+?IƸ6Ec|qߥ4&)I|k6x7FZ_,v733 9F7w΅Ciݸ9_hLk46u =,74iɒ ixd{Oy#JOe)L>GƓ@}(Ɲ|a``XXn;AQCokdž3skN͏-saEc``lOim࿞qvϯ60< .dZTcwBwozt>a000,aܹ~Xe*K,UYY(Lc /saEc``8jmjK,US(!KntPg|wmw<7ìayi ibwa%I)fNkyX9ʌ~Ts/,R/3I(%s6/4 5^/?&bx2w .]fbC:$%P4nep0Eo4*SԳsǜ~fMVܹ?oxd@'~׆ D>=I(<46U<@xy9(q\דq0:d9ݞj??ΕsJ?'?"ϯTuZWcMQ73<2w`Z{Pk Bs7WL"LBWE?8w޸.Bzl|LUK2DrϠ=XYqH:-b4A;;U4 {fY41 y) 0LETJwYB-!O^_nHU߄}ӾLI̭>QX3d\:Ш0z_o'z?:_6y&WF7?N1pZ CKR ]}iKp54SI#”7_gQ(_z{$rե9,A ,zID"\ɇĹ"&4"у[:d:i:TIk*iީM,D ҫ-C'cg'@њKS=ީo3TfW d\ݏ:?ko MX#V(1t؋i& W<bEf/t`3/1[3!mI&M,RLTZ"=KlG%4gsa&&dg*g/l,џ \ s_ٮ\G4-hρoV3B^Gs~qpǸ%C0%"Dc>3b .g`d`*' Kusk$Z IyRO!ѓ)_9q0`8l%ފIْy^w_>;|Q8qof|D\sm#㓎ggz*Mrr?ة~㒥13D!zԛq!V׋2ߐx1gS|‰R/~uS:;%qΒzqB*R#;d74\S|L;55枙آ3zqWpCxq9P/BDYQ8 pl6?30Nm KEYdt|=5s$aEߓķ&Jcb(OH3%B6ir0EN'yO2SHiL,RJ&e}b(Z+q!nk'g>*fQ?$Jb̹qfspi͠9nZW$>'ijH*66z;4!G}L,_^ `08Nm탣@qxdč[zmWJ՝qpi^Q*ۉn`=ɹ+8H xy;+%G{w`uGuۛAd#]oNƒ _826As ;]>J<<<;0 sGϏ'׍۽Ü9|ؽ=V,-CV0K2o'_|Uׂ6O !w.򹲬zMzCN|tt/~VW; qt3fܿ#yu/~CAw&pۗyb2004XWPzt3fܰ=^ ^ߒ$ F^|}ۖyb200끻6><<2 cLĄ9KvtlDސC 툷gzc`X..xdc6wjb~ O`$iu=<<<<03}qL=ɒ<_H?jt$c|rp<<<1 r<ЄĀ|~nK3kg=|4pξ>4aFŨ>8vfT{︇]Gku.˘yy4x ĸ:OpTa*,A9$zCP>(>Uȋ>8 Y>Ν\w*&8 Yo <<1d<7g=כ|݆X>ܡ a͏2Oӂԋl  YpXl.˘yy4x ◚RS8k  ݭ_]/l8(]&:+&@J` BX u^@43vLtNLjvfna93-(&jJ:: q NY:Jֶ> ;o%O9RxT]IhE6G6fMT3W|H8Rs8#؁*WFGn3*bI }Uf&@R xQ>7=7ҩwj__y;I1ghy˕9NtG*8վA07k-[^Ehx e48a(hvM؂R64OqxVE@pV njBTĖĬMJ<0G$rۿ]ve9,p-Q[6rƃE`Iy5@ɄnS>JZ[AZ6(hz*JBHD#/2qx"CL,!Aa4¸l#*.glЗ$9},9@9G?ꫯ~9x'`cAfˬ.?~4g/b1YNLYa*j*hϭ4v93(Q{"A@PTk_7PBM7.5JPނi20dwߪ2:5}'sjxb֋_BAypT!oZCkf`H}^ ]gKcp՛7oل0~y3r4>j4+r@F8Ńھx0/5 Ry˟ni8U}")yy`y    5 ƴ 2$Lp}1:ͨJZUAH?jb\d10,#d78cu#@㋗ 2}YQmOx[CNf﷑$JmӜ٦ObG w˄y`yy ) _: ?9zNAG`VZS@&81HkRCfGŃg?9~Dó|p濝37zԧ~搆&67$-)jYGk)=ݓdV2͏da db?H8N FOw |Z*ՓC|Hr3aQF 4Ù:'aΑ)ig\z #0g,G OX+>ISi:{_g.}jyqQӛ3 .9.P6gH'^K=QXiGG Sq\~vܯwr'3G yRaIΚ !$P g݅gh4XSGQċN]SQV^$Y%/^QTfbŦ _ǻ .CSGWGis:}*<8xƷȗ]빻v5-upWDZh@I"==Kbp'4DD!f I3v6%=G񓶈J(˼!W,Vىe{ cvbDۃy;#9[dtۏyYݜ3^?ׯ_ =j㕫gIf%LOAAҽafz|l(\%mz2, 7+s0z(/Q:Y9o]a*jL>JăBژLّRy&%m p<A@h4 5Tljuݽ'NH>epzU=ƲN}E1:\! xgHq3vӣry}`_RŃգ+{f҅N řO2̌T+JtbȄSIߓz g< p𫯾 x VWrWZ'/[|e6Ma,YFI'Yz tOlV8r1 v{0JR Jjk{6?xKZEM1;:x .5WZʻL=2, OuY¸S9xȄ*K<< n9\H52'8x/`ezp0Bָ%DUtQ+J3̢3LNlS}>Łx%,œ>dy7!mPx>^oy.A+]3g=^!,;@&81>ج7) CFHZaԬ 7I5, !Y98ËY[HRj&&H8(2UP:zWEt4q$Y-r\7=ny\u.7#@pI? sxPX_B Aq$J{EA~3?N,d  ֧OZ^-8E}w숼 DsFq\Nzv\S` = _3t#; -c9:E9 `Pcb3zQCuN=+0 ZEm::IN/3p0$Lz{UTOaegbʭ=/sΝ9'O*9qpFw~*I}A߬/NWkt1!d}d2v_8ؾ={r#ʶrpƇu5'jWH՛8Ƚ-\3L:XtKz===s}_|VHAma+?"rbGR2,Sd^aZ[+K;D.?NgaYp0zԱ.E_;-lIBq$H1}YfwXO"2X%"֩캴`V21n#\~WU#4b=b1xNoŰeUbKLgPA1:94&4獳yxAdЛ1Gzn[7!: ^ 'Y =jc'q*1Iz#c@Hh+ 1]Y3.;Yf< Bk 7C*?=v4oi4O$q+B|(  5'hJ՚L.g* Xx}VBbD5D_h$'Qbuz 5׏ գLmFN;H rh_OEKԔo='mbx%l5)8$g,XD%QN%w.B g&$D>LpH<8ҬiюFF GQp+^pT#M^/Mr[7>9R3䯕zeۉVMLn~4ppQGj۸0L-7s$.W~/̺7Z'Bmcx4rQ$=",clg0ݜgV}t!-3p̍o?/=sw5YYk^9o8վA07k-[^Ehx eTwLx4su96{I!.5o!ƎhtP?pai䂫h]3V%9U]c-g>P5-p$ķH:^:1K$yOPDdUl朞"x{ ČTuZ0pl)q[A޲ذexm]wgqG/G>>oϕk: hUYw˫ muAy݃)ʯ4O3hvc.WG,c$I (_g̿\^sGDEAmKm95il  T5Xi$+%*\-$SJ똆$k SڧiFIH=Z8P*BsYDt\VppyJw7;c2oz(X#=\9xc\$Zj;ymJ9@@S\lg x`Q9huJ{eR{W^< 1ƥYz!YˮoԞluX%f#cKz\]dQy`yx`Q9x/~crJW UU*- ;V.?.8ӣ^w=+%@*]E=vʴXz1s/4f||cM햛o_qݔ堀B?Le]-}lZdB֧`f?>bOK-H Yy`)x BB>Σ||Տ=wmҫn{rp6k^ Y/'a5{`8_?>Ʈƞ+~w `{7~njl"IMsѣ :`t%POLXl2g_$Z?}r赏>_\{-u/T,zdCv7@COlm"oxyCÞ!灀;]ۓ\^~\02?voHvJ" UyX}A[|`.~)/̼1mRM?I{J _,CGadBiݣM"b7fNÐ:LRfqڷ|P 1Ce~MKNWEW]k tVmNRat28DkJ(&YNBX $MSHAaقM1`,sKӷ3q0ɫ%i(tpyRc+2kl۞^^\ZBqT "AAIէb6V/SNE2@qߊ A atuzZ:駈i 9A:'a񗇋b5iI?qEfi`Q9x~5)fQ3Gxe fZ:9<7i;b)B"/%h$;A֙:Qbq0$IdȞ("^,eĹ3VTkޱ#2 ke+^t黨.wx04J #V؃O9x C(+"]R3c'qjXTbb_x<뱐=_].kteFȚq0`<5ZܽȔ>-#t\jW33B֌KN_a\׆ Y/ Z=8Z<;o恈2A[p23z3^n<%q28+΄3_@8dM[f&d=Oݘy s4GQsqFGG…^0m#ׇ`9%eX*bkt>T;ǔc(B-SiU֞Mo\ȸ%OQ: f&:4Kwi}IdmtĒ&d p!!D9SۻdI]n=v y5)ޕWI(`ҡ:$Qy;j欒e",wu-\+!8vk%]׭tK,P/H6ʙ ԬxR'yR~W^NMci"QJ06dy sǁBqpAِJ7@p3?p RĘUZam [S^Cy`cEP AQ:cu"xDeK*.UwXC6! gEVo88ۇ`ckGkj_v.ݴ˭/Ւzoq : zִmQ7=^=g~BٸmR$R/iqz #kWLTE/eFghϞ\Dֳ9}=1hH9@ZݓE %x͛*ePR t |}]|[keC۝NَƨW͵0Y0btZM&ؒǪЦA1Y08>UcV/ýqGݸ1l? *,}ɻͺ ࠼َ-^Pbz88\%1H+'-[ @$GqU7 r1)M-mvWlGNiyl6  EQI MoXji׀CS-0-q q6lj\^3܈rL=, jʮ쇜ݬZ#?Im\>Usw?0tf8h @PR[u Gn,[kom,U ly騺}2tiCZ\ s G\ #)Cjq$942ܡ+p qkֆ"D+!pǓ4@\$p=Os j} (!}pՔTQWIsMrP 9(TkeIs|1v̌xT$F:y`f Q;NAi^2#d}*%ZrqxY\E*d8h6C@!2fr2!Ly廚 G7z;ɌI#f\n+=!b?Av88"QK2B-jQ'Ms|,r@F9(qpFIʒ2;_r3=%wX2A2Ń)ufr_549zqn(G)ϲ|W@!jع2,7dW5f\n7+/*@F9(ŃuF2]}XlFx*Q'ri/fzԫieg)d\H^Aoq0eMjttCJuXu"p(砀B&A:PUҽPKSjh VbGAQqiz:!H8׬,d\rW(QZryt?-FHspIQ]yb&U^Lq30P0>y';caV֧^e: 0У'K[鶗X,%GMV(W9Ug`<ͮXW?G_`LAِJ7Anz_T.1=jzqp`8񛛜~W- ƇcL`ckGkj_v.ݴ˭/Ւ-9=D%m z*Β;qpe\g JmBM}ID'_?K7U\-Cӣ  XkZhy_0p/ɺ\Fhj2lm~e}1ӣf2By StrlԎ7E݊Lznn@A6cD'wq֕$S fN<8`.5? K6푿~tK< ljHAX8 Q!ŃwQSE;wB,]%aՓ ;d$tKx 4 g`9m88]VG>x^MAxnc!̬\1e` ȦuJe~{vdaB0^cCO!z`>FAb2AM *0}1`:f\:xpVQtΉaX$ {Óf:͓֧Y<}qld\0+܂x ?NVAfκ_x/s@F9(Ńs,QsLzneIR{qpLz_+Awp0aLXX<tĒԭ݇j^zRcD8RNZԼl}=Sܻ R2AB2$aC0LDQ2X')V)vreZdf88}1t&uM?i Y<*ۻdI]n=v yx tW=o#rؾӵ=Ύ -؍p#(QkVY瑝rnM ׋P7')OfJ=B){KF0M'恨-&pv9Q**Oŷ"Q'7"O~(~"03a'5%iDAkM'-V:90 0&^񛛍S~rw>ˌ̼uFļ"c9xn(US9h2`"3G-?(jQ@XՑ 'Y$L /)8j5SՋY&.d$ρy`I9x _~S*_0>,`"$L=Ń#^s|WE}ZϚ0q0!؅Q/{왹"?}\`L 8 Y,shOqb+TZŀO;;^*q袋~J?g}W_cǎ>W x`2w̥so{58ƃ֭ۼy󫯾zj@paAr͐f[=ѻˆrP6MA?7yE}B$ĘUZam^N}M)@.F4z8~DR Q̍B%媗cʴ=>U_|#GH$ ՂŃ<) 7ңFMaD<#Ac_8hZn|.02&+Q:iKR+Q/ljnzx<^܌ĉ)' BT\YzԳrpIj!#L\q W.]A>{+\<pIj=3.狕syx q0s 8X`8޻$iLWH/,RrLDD0qPéspPh``$Lzy?XJq8X0p#F4ȁQ/gvz gI8ȡ0xd%y8(pp惱oR/s(L3\gȊ<<< xL+ă qИ#vR+sP@!ʾ1ZAwhA" ŒYǓZ?g`Xa230ZIE{_ܨbd M&(g@!?ogzXx V>3ޠiP6 yƃ ajld\;=U{>.Ϲ+p.8t.Ν;_~gV3JzU{V1\ )à!kky ܣf:4UZWO ùp^3_w{O>J\pF8Y-OuV +CUCZEܒrdseoK(kj m?:K`?+ddX8m [ h7t\ar7]%gA>suY\v8@eoeH49?z~z=^rzG2WE_*Q/s3 $N-3z1J߼!r6>uߛp.84A\?=[jD>| tG!\J&OH{_/{uߖwWjzD a<^\;c.5wdҥYkRgUsTKT5^gq)~7IKV5CHO=E[X'Sj_sG1 k|p.8tbcшje|p.8#׬8.b V)]AʘgssyDO+egp.8tN|6kG{t00,_A}̬3xq`<<1ۅyy`Ez ]+`'<<89p?ʼ쬘`b)VA/Z7;+U8 N5`zĮ};ێgx w-͐Fȭ2e'ۍ&DfA3^SFDnE? k3NIiiZbj7N!VovQ p3B3e_6& Sm6٫E7ިSjd#uz٬@z\򘫎;@̓(y5jÂ5BV +V V+'Z͐/5`Un} *ج F%d.:B[uz2A0<4fY7qu {y N(K( qWJRO}2+2L. XYm/I,9mv6s~׉Ta'ha$fN$g.3`GHX0t&0NtM%=C&ȡ|cMvV9Z%W)•C*H 8΀0B1ˈ&8#9F2VkdF1#(Gg'#pD2R=CLB8a/rpkU?ء8(aJr)PA0nfr"YAa:ԢiY(l7FQب +@!4\(쳌]w]֫޼]Pd^0W-< ]Q].v3ӞA,.; >Ñz~'gINN44tGu[;sT7j4i7֤&K?d-:QnՍ o~LbqD mV$ӌ4a,-hG$_a|Hz%Y3֬`M`b0P$ z}=.o~_,E%3 _#0 18(TÕ$X,8VRJd80 2|}%aԥ!A6/ 9 Jsq?F ôCB@!!BD @f+%* rQ!BBUD !!Ό$ĭ0Ca ?{onذ!޼yu۞c~ǾwA8ôyqN'HGvy͖M-M#c-#l9fnEgilVcvXPfo*TX?P;d̑ 6kõ:2h"8m@%]5@,X66XAQqhPkT 7X6"u؎_ Yyd#]i!$"}2T3~nOv+}uy\E}PH"2)I`PSKdW=>)q!ltA[cY!I \ {v{qݑ+ 6D=)ՎgB)ƃ\59q!ʮs(D W;B™Q8C xGoƇ~8?iӦKno(̌yyy`zWU[>M7ݴm6Yg_sοKn:+~ze?9ҟR;낟Τ+Xb Yw^s/&v!]!)# 1K~DfB%;{ 2Mo?[}e\x;gX [b_@KeȾ| )h 8-9=3"EEQ`Ys5 Υ(쬟]gʫs"G6q$s̩+λ0c` 8ϻ+~u=Q~G/YuzyIENDB`html/images/b4cf2bb34e3c20eebcf8f9e8e7949efd-iis7w2k8cgi.png0100644000101200010120000015243111277240153024110 0ustar docbuilderdocbuilderPNG  IHDR" gAMA a pHYs(JtEXtSoftwarePaint.NET v3.22}ԗIDATx^xTG7{={޸^s:1&s9!@ 3 DɮZԸu4 gFzsNwWWSs+&I"H@$  JgϜi7tp:}9(Yd s@2d4HIJ?4AۇzJ9 s@:9b"}'ϝ$ d9 s@1nsA!5s" "ѿQn^?ç;>^/S2dI*eS_a;Q:[?*^َGs{|>@cĴ*?v-y>8m}g74)&Vd+s@́7DvCX \Xd+9 s@@&cQOO?!!눶[)QJk @4 lDBYFN)B1zk`VG? D,hy,eL랗Sú-ҘY (>34N- ! d\?,) NBfר1 ) D6m9 s@́:̚1nvuXM riFYDzZ|fnmC._ F@O2^9,p}3vuO^l1-$& A_֕>Pm< A'ߟ2o@dڔzi&$8F Lͯ2MK3.-"ju([=6D ,*W/*dnVv S4XXpg(ͮ|$۽jʾ躨3: DV,-,5xF7E"[2d49`=Qy+iUZpxQ , 3poĦUn㾮ye7c¨A}9o1Ӥj|LJS~,"ߟ|2d)60LE2d9s`؅Ա}GWwf,D$d9 s@os?noMs[@6ŏH9 s@:9jx?^uN,29 s@2us"׮]u H@$  D%`"%]+ D"@ "D$  D"FFt, D""H@$  4|"'OB̦ԔtJNN4JJTשNWDPҕ&׮u(7JJLg8hE"H@$ h< D222ĹԦPj;/鳯[ӈc(5=6дhĤi4`>~"ČCÆw0կ,OҳH@$  D&Hff&iƒ:-b*SN)4ev<L#ǎcQcgK=u1ISTF_j4AH"H@$  4|">XA/Hёch6oKhʬm6~Q#4D+3)&)0^֤PQA:}mu%!=D"H@$_N.\3kQ~6RJNX43Ihuz)m;EAvmGkr)6!D"H@$а `i搲x*`qکIEdv^fFXDFO󖯧UqٔTp( F_GJ`a+K3ȸ􆕄& D"@Kg ]D%Ҷ]{x^eOY{(]D.taj꘱ci"y7Jgt%J9@K2M|vڮv*H!Lh\c E: D"Ha$Ȩ 4{n=CҨ ސ9:Q3r NL! 6*2sIm"ZSH?EEPq>ZMUޯ+{)%w'IiIH/"H@$  4|"YY6&"'S 4'h5 ?KLz3gӨI3ޡ*O9FP$Ek{gRQAVXVbSs\(ҡH@$  D #߀͔Eakiy{j׹u5zK ĩi4b  +iļ8 OG՛X7Oc_8HQЪx:qlHBz D"H%IڤR` 0z M? I=LnC&Pރhڬ4e4m3FM_BoXpLYkow |*J+M)H)m+;L.]ipH"H@$  Կ|"Yr(2&/_M͢w]{Q.}%d\ Df_DSզ)3Uoi4ui,d*0Fç:F9Z$d}^HH$H@$  O>վhJ3n*ޏuC'&P~õdVP# 41/Fl{i}J.Q\| ۼ+h/fQ&8Bn*4|pBSaI D" H6,B#iԹ4|x3qZYD҄he4[YNAŴ4LӔc?e\r]MA[hUl:vYo_}[o&!;|^CTTtMT^^Kt_ @ߟ4ś D"-H#N9Fy;(~c!mV9r)+w_FKW%hAp(]N,*OfgRȆu9IۏQ\Nڰ7o]j^:q_$KM111 Ԯ]:" /`bΜ9^ G!*{r_/rRz$H@$  x#6)1uB.Ђ5>!27o lW $B*+PHf%+h|.OL+ԞUy*9Oui[ѓތe]g"<)f1ڡ? Frf_ u̙3} H@$ h dffѲ4i|8}۱;uڛzÉ٘ 4~"6j2ZVP$BU,Z%ӗӈY4~zd8w* [FD,^S((.v=#u҅~_o~zg5={7LAAAt!޽;y睺"k׮[nRRRt^xA/7n~|rV{hiGgΜq D***讻Ç:P| {>q&A{롿GS//zȉzcrqzw5BXgڰa{W;a084ϙPڸq#WV襗^'jy@D"HeH' 0>t,uқ>}ݡ+u> C=ރFR"BW+(P,[E Tʹ%EQc~K 3}߿r6m'm_JÆ g_W BâaM.sz_nͭVA}<7˰܂10?P,]TQG"knßԑ#G駟`]13 C>sݏ@m۶Ç__DH@$  DRg9 WROz7jiMԾ^-t03YDW֒?,=ݶE7ѽsfuG~~>vmBӦMロvȮ/V@@ t_E#PSOv$kz= eݺu?IkhB1%--~81`?3 >`@"V411LyZδR$  \ D6nUOA#S]!ԭ3d<6 INq ^e 3*:"Rxy?^_4;~"7o֧f+1p93L ("hy^7a9xR ҥKԱcGzu5?>qdz?X8۷|AG9x:d ,;vp Dx8@L[{RP: gI"H@$2$ISIr}۶3ާ_QNݨKQM-2ǧRJ&JH̠4Su$TgFEѭoMo -K3:_^#aqmsy`9p5Z7:{ƴmMz:q9/Ҁ'hWi644[g) 'C D".HEd9uއwAmԆv? bpe62(@m<~[/VǼwOK+S evex Pq@/'7?LbZW& D"@Hw B*z o:tSV84belT- l-?DSCR Nw)Pʏ#k~K3jȹ1DCDgHD"H@$@>, Z/Hh=Q~#נIDڜ[Hv­%[D_}CoxZ?8 < ;&8H++GJ^;=fts/REXDdފD"H P$3=w}޺#u?}Pk08 gБ)'w+m߹Go gu\7HX-iw[z#ݕ{#t{ʉSe%D"H@$%٨_FO*H[ԥ3b#c;wK[wx)̭X\IUMRW=IfٓYr$ D"@`H' ̠Qc4rB7bZMC ]D=GQv#")=-^R@͡'?mOe"H@$  O@֍3N}FMqhjT7ZU6b2nM{TͪKgϞν降ew)'"2oE"H@$ @(׮]M)4z"6v6^҃%OFNm;))%RS.ed=t4)&z"],">d|"H@$ W)&j-}t{AЛt5:ZyW꣺,a㦩 5L͏)ѫ)PaAD"H@$ % bw-nEkvJ{H@$  i2D"H@$ ' ' YH@$  K@{I H@$  IDIBV$  D" ^FRC$  D"zS l'+-Yd~:yܣ2w%s@GdGqIx:f+˜ߍ2d4i0P:VaG @9 s@@"Dljy9QSNe4 "@6HX(r9 s "c eL2e4 "@6HX(r9 s "XD/Gk 3jɳiÉs/S3r|W^X 9eD~POş;Ix4ʏbUeUxESNDpx8\S"#ue9`DܖLJ (2dؙȃf"(&X[p.0_t[h:$~u{>?ͪ2d9E|GIUT󷿙` T2ڣ/ ZTe2=ʹ=p߮R t(H~_s' >e:/_e鍯fЀk5yI4lJ4v6M@w4ZXיJ~g7>QyrP"-ϤekOO\ cHYI:dW)V'4 H1nyqGZ(3}%oS}@W_ŅYc7e=F_|#M>1V}9޸?gO+A' rٜ星;NEE9-ū6ѡ`?>Olߣ"遵,3V zhA4q2F;Vy\Am,??9@,")Wƌd"ݷu_QK=Sn:3OhUa⎎<{c9'CY32]h~u0.\f}oOjQZrn{"+7͘6|y@Ƃ1+*d=|" :` P t?벀nnK b.Հ Do]}JaP<,5-eht~DPS\^x95U;AsgǏ ,C}ޣԠ)+U#/D}s<?f[+M@=D1Ϡ./g\l7|̛M7G2SYmbYs|k[S΀ߟ?_KLa֞}#Cws' bZ"Fzݥ]&Fd?V_:k_M O_L[`V񘦅s:h>Ӛ& =5c@3br]}ǺޛoFUկ(ti0XB=~ !A?jpxA Q  ~ԉ}@I }QOߐ.[[u]M;l1fi"BkuOv=>D1dP-ONcn_5/9.0ǫDkV1|s yYZ|xȆu7nvάb:2|>2z!Ҍ?Ӏ}tKe}9 ~A3 D\v҄wӏ?^G5ʤoq:mO'aCn߶"4jɃUbݻ~]`CKCce>]-͘KVj,5udʌe[eߴ!Sg|zDX'Kd߱wZމM_-"h0*2~4~( DLGF -%}JjޔP.x9s1kiْE/q`<ק$xA >_{ޘ"fh>tdxp}`G`@.!tW@mV,[c/Z_zj "{D%'@\XH0fl]6h,wse Ɖ2f¸QԿ_oe#j) b^=@{,0xb̠ `5gG>7,wLSPCӰG$5)}ӧN/p@9njJ) 95ڙe(UJ@i?2??cP?3M ~?m.g,3yKc?[,s1sLحeV^q߃) ٜz<>ϝ}GcOߟrJNyo޻㮞 9%ɏƛ9pUYB^Fd9 s9Pki%$uTܑ#s@zY>j-}t{AЌL;^~99 @DLi'/1ye9@8u2ٖI״&XD!>dhnsg N=3 <:r%M8bV)on;|Yyo)fE~6_|w݉lE2d49JOPΈ+W*:e ڪFѐehQQ#I#(9!Z_oXKv*@ٺ^Qf]oK&} pmѽ-ܶEK};U,]0Gg4_OE76.##`3w#%Ss|q]0tnSfj-o ܰ>!4' vtpo ,vL3hİ^j ph3aj 2*xX0ف֮A)/ci1lڔQ* rҒ׫ Ni&GjIU~y'Q=hE2ojq#9a=>D}wQe^vx x/C>=" P nqe/9G;# ^R%mNe][&[o!7v_oqrdɿwOPC' һg{:r`Or^оڒQq',?H{Kw(WU@ Z^}R|C]M]$x &ZZr-@_Nhә̛t&ڮV`dY5͍8y3Uy:yw?/l1{<]#܎3_VG.]fA?[ATʽ|o/8QLޜm(oiάi~p`(hwv}C:XA۷]tֿiXfn"߹O@"gcMsǡ}zf¸*wt~4PАPpk @EZAsX6PW,lߚiP4+AK1Vj\VBl}ݬptQepP1zwua2`5|e~1=#_vӦLsaKSͥ^G?łsԋoCl(3mKeEUASO93)9q}o  g l' RY/GبpZ4ƍJtb"Av@d񢙚5^F'dX@i iwifܘ]c) D8,l*b8FEEz@-Ls 2| "k[oд:>mwﺡs[6Mؤl,-ɤ]۷#F>PvcjRL٭s6iKGbUsth9"s DX)۽MEjc~{TB@V %ȖڏV|2`(OTxi:m lp3̴D BoGTDSEdY^ֆ=I}=q_|J~$ܩ,R_K5qwc:~+Æp~oIܿ5~M͛=]􇠂D.$K0 DD q멙~}zQ;ţЕ*swtnx"O'o/:w\0I5Tߍ"DsR 2]ws  R?U<_*&s@7s@@\{3d9<"Ddؚo/{k*s@(![JͪҔ;"M}R&])[ڈ:'mvӐWxT|Ss:Zq,W_h)IT\O"VR~>mb\._(=ymӚ2{#h  bGC}ӷ|+Yd s ρ1FQc. #m9MG?.+|[=Z4y;T' R!6 GmI|)xkk4o<ڶmyo,77Ό:v?")x+mܲO7Ν= z4wanGhZy& X1>qt-׫UtEf<.գvv0hobBIya'iڵ /,iS(?Gs՗5I/.[xӥ/(7CO`|L_ c@;x=(cWfLDsgO2cfd  O4^ߣI36z!]}@HNzۏ֩uƐ(h~|t#""u$D?K=t:}DyؐuN+TV߯R!U4j~ڋX PXB5b(s]5B3r~j@>i+~ "X(C?_|sL'Lm]{7QO#dLfhot2 sz3z;DA/AܣGk4dů_K˗QrGEEf6"TElsYFjsE=!W;͇[:x[4x~!uI3gcwW/L ++T̥(N3Mn7fpeNI | ۾5_٨{]5.ڠ-hڙÒ@e,+وa5/뒙 D!?to:$Co Qs;k.!BX/U&T!%GT"/@{2DݣȰ!=iтK5`Y2WѫD3+8^_mi45"bMΝ@$*&Ιmm95)VXEӦMs DLyyyzܸqwQqq1A?>66VE~i]iڙ`͛oSk/<+1Y2(;˝Es C:ϚQLxhA~5;}䫽y֌912r*J/Z0W_ \g?q|Uvռ$m^-蛲=x L<1}cع+@_֐ ʼp74e;(?W D(6F#&'DDBϙX=,) D0G ֤kK&j+KLJ4NvӀ> 4YXG@ٳZ)st D $%1EWYiQ.ȩS?VoK[n)S̙3(bQ}2FN\]vZYjJCMXZnMuT~ܹoҥ￯C=DGP>81yW5_<իW;}'HաCsXDO>2܃? r#5UܲG`D:_<O&:+_{_WCbX9|}"˖sX=0Еe\oۨƜYm%}hsf, .+.̡THf="KоRm A;a?JsjKӟ@dΝZQs޵kK \R#FАC\bh`Ȑ!_;6fPƖSʞ~iGŋ;h `ut`ä X9؜ a } ҠAt_O<54W^y7p;O޲Uz D|5tM[o8ޯHKzX(Yٹmc ȰF ~}:=%a-`-4e2)fRx#g뽮u+h4b٫'ݛJJJh}\%uNظ9|8q"]rƎKiiitq0`Vړ&M ?Æ D@}/nݺ$DiժU_/ZVBفudÆ zV\ի1` [lڵkhcU%ͪp4Wch?Wډ37*N\_fc:EhC ++q((۷o/B%/ 8ݺ~ɟt[qͮQ:vLGe@nM%E}RzRm43ǃvf].C}5)No5n*p;8BV/tn9P?-*+pJWO>0G>yƻYW2ӷwOsGS[3pz ;2Cg ?X XxòUǎ6A}ڱcrh9&OWKqJu:n:s`Ԋs/'g'9uLel*qÉ"b6b9VC3W@mxV.05}F|`*D,#DؚxڬZogl`]t mLYje8튎o6 DO6y+$LFc.4mͥ,?#W+a@+15:?O+v2eCdA= i\ w.q4__2NOϬueF5Y=:tQt㉇T;cE]32;6rH Y_%=  *|3iO3eoXK MdD@dg(}ox>4 ʡU,!. ⰰ… )YuI'{RSSu5Q{t]N5aܟ'ehL!ODAFf|PoVP: p;ApBHӦMa-j YD3}, CǍߦ"&} Ni J%b:3gU+VI/3f"X"NT_@$Z-t^s|Ꮳ2XzNx9C!]+30LixveМY69WC܎s4Wc`=;5rUh: Kl7n6H/]<mj/՘{DQ$[D)-+1mv﨑Jʼ!)umH6Fro1h> ]ݻ}_Zbz]RYH[)PuP @Ìi3,U&'T?o.@+ l A~Gn `d_^k3,є(52/WLS ,"|eE K3U4/rO$М%P@B8^=Sy QtP ϓW_~5 D"T9B9((# mPlyD~AәE|,0=WPEv"b?wc7:EӃXvuXAYLz6ESmQl@/u%ҹ(&:|1?SMs'^^@)"ss٬:VE/(b/iK̢+PysȺԩS:@B_tI٭Yƾ-puC!3]XdPzP@߿.@?3 g 2ƳtR=k(Ǹ@S:|p D2mxWUeڐe'7 d%90cANq ),_i`l]|2],?͙zY7da=J+[RZB{WJlW}̸߅5}iȥ 󄨱 ɴd*"1k+9ZklGR; p`3AFzh8A'D6@p Vidh* ji:Xyʏ+G=Ү5'NRZj p0Dh0II_@ptQsclL?_mml| "DlrhػV"'N=e{Tx IGrD`8t^N(1AѣGueKZ@4 gPPf\C3׬^S u`Ô+ b/>.^`K/?l޴Y?k,@e.p%і[_@Gtٲ03󔗝\1lW_yI[JZ}qS0u [p&f]/z}80qtzu:y@C;{i<=u|vhBS)"2&\Gbq4"bM/lxea<-9a=ϯ~?g4 e {5 9vR8"&^KVӒu/]xg 9s ‘jolEO? zkطڼ4s.j e . b-k( r߽8xD2~~Y/- `l@XB·zW"ya}Z?ud\#:N{uzj*9=6bo 8Z.> ǘeLl~x'f{3bwjJEyYfy2ۻjǼI]"1:F̶MrzOE{}L]JӼgZq޴ "@6 ͪH%O ⍒ǟGc}WD"U4G՝)I"." hW"uhjϪPif8|v|ip EZ=$7g}*5u"8pq՝܍zO#x6]G_8e> e2ޘp9C5xW5}á16fn3'ϸ#P\YWy8‰O .xA?ֲPf&MwE`|pXJj 8NWijD\r"nޘ˝5/gN\lܷy|Af9A ۷iS&U7_"&UKqαf]F;wh/^;IWcY16lB6Tr`LJ /pu|<.s'3"ߒGSǟ@GA8q]+}/\>y~PRhXi}8';pۤ{q ͚hs?Dx|&Hp:Ǝbp|UGI*3cY sax3&{36<CS2PlL^>T-eKe(&(0dx ]'}LTc(_2y's8B;x@E}_x>#}uRt_2ZT|^rϝ3k=ܳ?SQ :aCuߧzR9x j\hgϱrR'QjY=Vy䑇4:yc|8zki u|\쏟9so֙d J؍ MiL%D=qV%JLSʳ DfhTYI"2vvViqzHec:!.Vk@xvꊾ/2әWقzsjp2ӀNkhMmF D1u/?Ӑqht]ߏ]m4T)l" 6L/lSi㚝Cjo:^C]osŋ)cu}םw8zɕm _+ k?)bc C3GD9/;V~LxUQ02O?V;sgOwiRGZXvޭ}ŌK3#*22%+ ]yB4cǎ⩮k+  bmFź7-D@F}Ӈ q eؿi E N"p9zv(XA՞5+s]g@=x59;.޹ O>g>-@!wq]me8hKJc'pudۚ&hcq[֥v$vk(GmNm׎rLOn"&UK٬zy*Z8pb+Ȃڽ9"b&<hջ ,n}^%yP 12,[ /5 *(=!.^Da"\`0ք20$,̙5GoDZDPf3ǰpjȍ~u@]b !(~}{ jF u?emZ!=o>dA qvfr7}pho|&=˼WW/4 \y 2,I >;& ?Yڟ2S.V^ F R*,($,\tΟ;#H*G;==op* ,-29}FN52^V"MZ}s"H9V+7 //m뫍"&d9{wQWv?C#"uPݒ82J Ry+Eg8/ec8jnruW}aő=^g݇ fNe`\gQ/BE$ Dz覎~JkVk<7g4a 2QrP/YYA}םԡڡ0P:1TaQK]u%sx7" ͦou jơ=%3 0vLn%CczALqL ;p\a;X۱\]!O3rZAק" gQ{s[ a"g%84C9Ęz*]z22"}֝C3 M7Ѿh[6}]_R}$xݚuN:]_:)XdG@NАPc/[Mp<bA~K`-oH >hkx?8:c^h1/F;>vc܈ӳtR〜;\l, Z ꢎ DL t@u!?:}Y l۬~_zy5MȬᕔ-"}zl=O"V-w,@O4^^zJ7^~}PKBں"l"f4zqG_psC `qDXfǏB%WJ2S<%bbmgk|8;wlerR Qn‡]i{"DlM@? T~\+odgT$o\ĄDxV9We.D2-"f<wY3f龑2e2)S5>v-^8N3-Mcdpv/lqhδ\p0Xd`irBo8ݝĶoDMF P[ux[)SX!(sj*)a)ۡ>qDHϸIP:qgJAkefQϤ{3 ˌۙ4dv, `,;sS a"~"hK3"V2GbJ5uzYDLj˖,a0; b.8( b&g`˝Y<67. D{jltl mռ |]ƼSHmd/ qP͛Re "@cRfUѹkd:VY_{]@ll D`Ad,A R]=,\~aǒb,G [p̴h"M M"ӚeX3k.B`GG(yf={8ry, a,XBZRHJKJ5hgr5Yyq;b mY, "ۊ0;FH"Dl$Z©,`\`"%ON%P׀OA? p}a4aMLQP(2&7x0ǀ\zQze42Ϧ<X c\Yzf4 ߱"H]Mٔ[+ж⅋66"nc%PrdYplrss&֖Dp47JAδEqQ34܃O@TaO鮮/cogcŞ"&YiK8zǗv8j~41p:8rxKf_=zӮq;QC "@4O?iw*$ D/#8% eiS&{v5ʁQ(?tD8LŊv|.曯j# 7U<1oN娇)܍5c[: O?pvKfLA/Kc;c7噩D!e8|r_4&p)"&T-[WGw䝻v6HSW~_ӑ?SO>*Ӱ > r7z=iPcXƜY4).uiN)ncgX׀O,asHjDA2@"#ͪN٫]#tԏclEy ꨹cMUn1k%կ DXyAboG\;#A}}ߵx(G tK :0.q>UyiEXg=Î櫯D qF$`XI="No@06@ؗ,^@}Sq̮ "gto|MDB-stgR9}K *ܡUpdLo#2x&ixD8f8^Kwh^X qm.AU_8 ,5wnqK[nl$ OyC)\RA@7w \߯YBYM~&{N=s* VJO?ӂI꺈{{m8OؔکC;G X/\5&2.ͬ 2u=8Be%jG&5)N^//ZD4bݠ=x3 |#y3v|t| `|@N΀<dtB@G[%vYxWVH37R^NvjC3(6iMɛX3ąAp:Ďd {ZvƍXX+ %rӵVQP hs@WVҟ7"S"D4s椲(>z@ޙ,M<tܕޏЫGqZ32>>J  F[?@"pyraA!b1NE F}EƛRs |k1NđN<2<3@cTyWqoEwmOlD_xv8?>} D^G}<]lPE;\#FR1\< (C}C{Ў1N4FcMgW$xqlmas}> Ot5^la\>kGo3sv{oAC "@$ S3H$/ b]bimk}^FQ̫(3gYH+Ų L\0ˬK3(t}$Xk;> >ءܤ{Z ;5paz3o.aNs`􍸴 4Dp#" AE1\XqWtЄC.+Xڡljgh$'X.VYL\̴$  ھ+.WA6A)|;xUB;Y`!7)OA>VW'@D tȌY3kWphєRadLSQxix =W_APfWe\@ۙ R7{] #/@U; 4'\;k4A _nc]a4eqɋu|n{˔'}C _ "@D t 2}t:x;z W\>}84Mdd$eeeoA/J]v_~^y6l?^^QQ=ڢ/\PY+͝;'hz?G 6xT5 lͦTGt`'iq5 E[?@?5S\7|ӡA۶mkvUf@=S^^NIIKH/oݺ"(߼y3>|X!v ʑ9^Zs=Q4O8Qši&E)@i8FADCղ\\YF}<"C @$11LB+Vb{S~~> ~`/@cСyܸq4o< ۶m^_3UAKR@K"֣MY36e>ś"Hri4ͪ΀ȵ+H"/XKNX_H0aQ7\JC}+>d3]+M@ͦ""~"4s]⼨k4wkj߾QXX H cǎyTƕ4oti$FHHL>]?S?`+ [DNGV]vi:ϛpDp4tԉxr_#0;{ u?c]~+~~~]}Gȫh6W?7fǏv0y( A v`ZA=sѾ]Z~G4oݻ~qL41u+ݟ}X1h֛hEi "@2vXZ6mp͟W+LTx@K@<ՑV]eH[jt=w;b:bEYz Ӝ?wi[Zh[XȨCu{dv(sԉZuLSH]4q4B}'@D .Owvqi% DBet@[w.;{v{a1H]e"VV}"hu 7"(ۻc=ƌ_zQ#?+M :y.ﭼf'iS&P~S̮+M!O`д5}HSW.ŸHS <<":-2XyoQ{P7{.2eTLJqU8.gq]k&aX&A4#Yi?u?# uJ/*:cq;S;0͆ ݟ"~"MVM{9"bzNz"f'SSR8ګ/kkBC'o?m"5)Σ*`ƝtjZr`5kP<|h:`ҤIc&t[Wڸq#m߾]W3gxnnt;9>g0kc\cgNǡq]^ Wi Qذ^h D*)nA~!c˖.s D,9ƌ:ggQ†Zh1g"1`{:w;we׮]s3&W=u.2lpK?ٳg2g =k߾}5ƅ>JJuG^zA!qM  1&⮝9>}~>A6,3Xo>C]nV8ec)#1@ Ǚ1v%"~w[S#ycuS<RzJ'ESLdu_VF2m/̟VY_mL@5aMP"&Or8 ]]Dح:;fڣG S!RSSu9!`*h JO}8P;"G}/flo?g+L>|1/㱛ߋ y< k^c юYh^{` Opr9vD~xA4a:ww5e6b.jo8K6:-|{8.2~Nh+3g;2lmqkr7" j `if⤉$%Ҳe4uT1bK HPiij7 b twKfϵnT@}gֺb"hgqVݻӢEt:5_WYݷ[ pͼXsΙwDծ];@ɲ5Kf-5ڳ[|yS;Of@#g>GW_, 8LaC(mԧ|B[h~vǎu rc%'GWq>n9N:I_-hpyؒI;C]8!{ds|jL9^0D\,h L3I{=΁jGogR]t\-Ͱ̺~1 ٷ"`\1rDxD-> PXT3qre=fB+W8ai@&iePr_獏D_zF .>PO'챕i:7Ϣ>32k;l-Bjcqs!cyGY.\,O\s;7s{uA $?v$/"'pc"hR`)>66DײlT8{)@L!<$-^8_}>=|}Jņsl5ڂ+ͯobcc)&:FNK K{)a< {\k֬.o~eS(+륢"~"]HGY򱁲o+r-~ƟL}נkA{2OlRS4"D<~kѣE]t4'$< iX']kLD"")*(cGsgkd8*{Ӆ |!`m_ L뒕6pٟL1HRbMGtgM>K6Ҿ% j Ó16橙P*E[JtNm(bS&:s W"ڹ&˶m: F:;y⤦Qv`=;KC[Y@U9w:6ד{>GēwXzڮ)ճ;ך,"D|B.^EYd~M5t G*]]/ v@JLHhSǩeЀy 9cƗ,"8jګ2T?#޾nJ=~誁ȝwqJE 1Mng>J=sϬ4QnJw6d <>߸w'pW}Wk bҘHձ*r ]X}65)vmߥ"G)=5NjoxNӴWԐ _^TvYEv(喿h L4{c1fpLׅu" 5hbSE_~p,`Gmœ1O=sN4{'mc[ "@֏%OЁ}dW Qjb*:yJ]<,"Ud͔E889 uk+34r$z Dp0Vqߪ_~"_P/%zrN9Bð!h!ٱC[Ǡ2|ϭ9ٟcow}ugKv(@Dm RL Eӑz~ǶدV. /5͚9K[28  s~Z PΖLD`Ok>J D6ߠ`En ˌ6"S'O ^y״.X p_Y?/p D%aq|̤A}, ~ +ǏS5k cE@kڔ4o m 24{u-5'E@$Oجzy*Z#NDLVM62[D gVFh ػg. OXΙ3{"2E]X~ W"\fm0(C\VU({*(|x-ZS&Τꨶs#-+#x!vfڥw\g fD[D]<*@PfL>Ay zb.쉂n)u RǛP+gTaWBvGC9+׹Bu.?34[Q@e`Su[3i,Gp mA,3yaOԫ? `/-EI8"^('n\ZRJ[8X˗.7+>a=3!/6V^b bd,@Dd-YD@4U#@Dm {Dpꅣٺ1^I"."D· #rAfJJ "MUED-@@W.;2]ak 6s ⚏ryMpƚ@eɭA}ꍹ{.<5}]cq۶1ו0xũ&zDoK7 wٳ*Ǚz*ۻOq=w\.ޡఴ UMg`pS97gVp" GmQ9ά;c7TP{ʼn Rwg}p}Ř0'P18Ps-i"D$[%XDڕktU~:eelpՕgUV"p{1W$'%q`rP p#8=|wEJoP} ޵[$K+7^E;ĸa(Ceh Ǎ:',G6ǀv A `xϨ1H|"MU _kƖ zT~#9>NTU{C+q9siMR-A=dĹAS4 ӚXXA;k.YXja^hؚ`qGiHz;vz&2A* GZD:w7>g1|4ŴBE2EHk)@ЁC?T[C] !(weKS"P2ls #"̋3 2 gz eeeL`|; l|DFVDoK7 T4SغvJQQQQ#r93)!I"P&hصs9Z+u oNuDLXX/XVX)Q?~C|M ,QyytPjcTg\%W[ P~n>*2>䩗fY^j6 "@@D8-aC`@k W{Dp"{;8. 4?9n Pz! h6ʸʐ}ՠ ~]\45'[PL^WYj '흵clVujDbޟد:ۏ&i[􄯦 t-[){S6fT\TL/|ܶmn8m] ݆f9Z ,66ߴ߶o۴m| gN "n fkVҟH$pi,.Mp*?jm_ݖn~#;{\ͮ:SA&Vo%`=r|W"  \?"E[ԉSt5Gzw^7^p 7ҽO__^I=;Nwuv"xzO71 H] 8d[ t"*kxV=y$&ҩj썩t=3B1I:?8ǿ~G=Fx6nw v6u\MIӃS܂6>: ή0_i61*x+{D*dz D5}i@X]x[k?M){s6]v***jXD-nGmz'j(|W?V+`wtңogG6>P?>O=8}]2_L b-CLPܜ8MH{RI@E[P D.gә3gԩSD~E-[mҷ.8{ t|0 "çАIQU`0yk,=]͏^Aw_Y6dr5MdwJXԪNH][ﺆR-"Dl8[̉'6gm?J\fm$I{:]}ӭ(w4U="HR|ھm;ݳV޿w?ڹΟ?_=ާ?@&F'up|n^s8 'f*ތ#neG$^L]۳Ν=mT"^6DΜ>Cǫ;'ӧOJAm:?#_?QS;_v2.z r|kݦU'D"T.])**齥я+iA81{R\4}Zvv?IH4W];Ĵ51g}{W\i,"<?@C} "@6 d?"[l.Ν3dyH fkXYYсO_V}_ ""AS?]㻗]ryHˠ'Nz'#=왳ta}k$l~EN\Ϫu&ܱMK*,,Y6૨HFu"bcs.+//4ݯ3e`@z|@H]'vi b"_&WSBȢ˗/"w 7hoq]Zq.\.$dSZRJ9tZZ[]8-[Aܹs נk.MAŋA7Q@06mO3˚PbĻ ڡ=4di->?`;E<~Da0W{"DDw"rVtP TVRF?X;kzjJMpe/#A*c j:і-޽{);;[&b ؾC?ykVG332S/)ۣ?v$g-\QmcM%KcmÇSRb~gk 19ZqT/3ʐ !v  bTQ,.*vRzJc Y DpYڷokǡ?y$EEFi䉓)lyEGEx6&HaK/t<2i&"=5] .i THPV?}ttDYJ[.0vaSTTy7gg͜77"u/#"@.`D"-aidI]Lp `LΞK#t^pͺ΀+^,$YYX;x˲ LRPP@-"b\c:va 0/pP&qƧXEjJz|@8^Iǔ#j=|p84`K7xZd5٪f g.厜d\,z]V焸m]1+x+HOY3f``yGK)XZY^as=l 7v7X-"&M8HNJ gNy1džk͛=jXDevC2eBjK@Uz^uo: @E*uY D-ZË*6" 626[6fZ; c遯y"c`Mܞi3|bke%<'/7Ú鍪/n6̧Iәߴq[\iˈ3ewW%9,S6O~DCs)C}{ёCGI?K#5V1V_}W ?pl []ڈj-WV=GU9ׇ="l"2lcGze f 94FAbb zݢ"TifxW;U`?S]Խ1mRd l S3*^A7em3'ϸ{7m߾]i\# @v:ёg;P `\#Ƭ r >cퟏ ;;vl1ċ1ƖJÛr|W@KC"Dl@k5s5F=-5MH/(wjU+Wi[XgAϏ)8tbм ]n+ަ]c;}@ĝT2OՕ;8)R; ] .K?TH%=)U{XŒ;Ϫ/\mvW#pY䉋wAC4&̙5G{E<Ī5h%+_ 4y ]!s45FZAqb&P{ y1#"ހ+@D:Ż QQTOILqWԁbrGƚ9}p :?w2\+xc(3#CiaVdpӎdGhw` :tYh20]Û[6w+$mVD5~"pbvQJؐ@iǶ fr|c&V!!se˵T8LCęqM @pD62Q՚<"` q>#';G!vC- 2"|r;@fla}W,"#@D7,͜?s^GU"Px0СCx' 11,!K fRʼ r5. c,\c"22 j?\C>(MYfm@An2l ={ZsH {P#5V1S iHpM_Dx "M@4>E!9+@pАu D9긬lCyM$ K3D\xӗ"H ;48y"%$&Mج2RB$`=ͪظ4ذkSk٬* a"~"lta|A93䫗RNnS/_2m9|pشYuѥVC}Iw.:hrJJIIqGFY}W]P_ R9tPX37|@dƌԥKª3S߾}}l۶֯7t%q4tPlEΝKnHƕ.pR_D"0z:۩ȏt D}]ƜO`o3,/>3X P^ȠM6QDDD а`Zf4A?\?C;3mۖpL^uG8;e}J@4iu]W܃wkҸ*Xzj)#ԑtD>VqD_l?"<~{wUOL6[-O8"_&$WK3{? ^x B|1fQϑ u~i]zAδ^`cFzǝCHh`g4QLxD?e'(b ꫽"H s2^': esLL ?@'뭷(11/hI'Nm]֭[G.99Y}Ϟ=5mڴ TW‰Ws5w2DNs5;K]{RFO@6PIII-]vl!i1CEU9#5FQм ?ggZ-ݛ P <KB]C93gj6x%aG=Cڱc~Z np&MEpggH˙#Gg999t=k5D$kQGYf346^yA+1L^3`27c&߭?+li@9 z]@GqB22i]:Z`7N r-84 dQQQ:b߿_Áx44Ŏ_\hp& gd  8!gyFz̙'>ApGZn|aܸ&2aYZҠ4C5x-#1\l t@>}WESAD"G-" @2?Ǝszk2gs9ܹs' >\s\|Z]R38.".h[]s}(q+/LPV SN ݼY?++Kuѷ5uOv}Lsz|AAA5b$%%ǢX9L ]֘8D~6w%Li=", 6T[B豣iԥ[JOK՞Hli1TfϞ#" o߾r !#tZD*zJQt Y0wyGC[-"xܣGm@?Vv/7(C`}رc:N czіAUH7n%(+-XyЮSNQM baֱ6mɺG$F DˏHRbؾF^hq-="}"vPp>le%P0sP0s`\*Pܣ`ݯ{n c=2[y$´M(C;h\LJ:L cu5>r } |PGe\H>\ 笝)k\ H: @DHEතE[kel&Ҝs(haӌ#p{MKEC'^NRrwGt4#"nfk5X3j{Yti:uT|T,MN`ŋz# lP)z F$Xx[WLN[QD".+K3/@D:4:GqdD)I$% w4"Dlrh/[ҩ'J^J:X 1~Q8_-9K/v__ vV[[n#Ddٚl4SHEK1{-Ғr@$5%աJKJzmOCӊAٛꫪ4|M'OV=e{(tY]2n /T^^̹(&:F<9JurLJהx7!   8fBT+Е Wk?M){SO"b:UNnX`h9*3ۣ-qB8d{ܳC9`nUeݻm;SXrJKSKYr}蟗?i F9Mk. 9!msw QnDߕ&bs뫂au<ӧOSR|߻~'@֭UQ~U^p_HfF2(TPP/ k%!Ktiit:Yev$dhZXH5x@Nkzd]@ @ |)Qnwqo "@6 =""Pee1sisftz+\<,[L/`YU\V[,hϱ9"h U4wڭm`Ggrx-|E$@D," D g{!;8pnJvUroC!bO0a"H iHE!}SUGh!ĉt∾e="lol&[[D""eTe*c$@S@ʏH1]hy(Rk$@Dm 3/p,՚7$++Uk:{Ga% w)K'?"Dl@# 2wl/^쵢0x~ԨQԧO#"" Kܹs֓ #3O)/:7l{V  bE%Qnsrs7|.qdԩSAe8⊺U;d׮]ԱcG >9-osNGHJ@6b㝬 Dء,"eA\ZDL R\\-} >\+g}V3=z裏tbo8hW}N@yҥyfѣG_ DfΜ 0@wKv:ͪlol&[oVu483HXD(ڶm ﹌ kgNc b!\[u]BW(`%)% w/E*uV"u+і#mڼYM`(XιZ =e)`'@DHƚXCeܝwI_~%u҅vM?ǦR2 }Qm!0aR4cZDnZDM9<aÆQff>JyiPK&8:?jPc3u'""> 'vHw{D}lOS6O~Dx "}HzF:Ƹqq0h mY~n IΛ>n˖߭?E* Şl D*?O"ҲU>$ w)KOqR{9  1hcTYUwe@Rׁ;] _e&@D:tOQA vΜ=S#>sΜ9C$c/?d}-=FvW pWR  bgբ-E ve f 6љgg@vItСZGs4Xl@ ]ƗYYoYUUU'|Z+;{bc(lEX4JvPA~%%&ϗ1Zflo@l&[oV:V"._ݻvSZJ!3 0 g}$gzZ#AQ6B)/y ?wۀz 6-t_nQmNa{F$XI UW?#@te|2&m;++fSn-Ja(&*F/@iyMJOk{ٍyyt%ژQjq(Wxzj\I'NpKMItf͘U 0h!egckVuJJJrst5lǎ<˖;w(3DDSr$=u_Wep^34E'Ϫ: Hإ+@DH9qJwҞ=BNүzWyAL))TVZBYTd޴hʗ]Z?oV,^8."gG+jcMbVn-"xYvS]n0mg@ZD\/]^-> sϥsr|W]P_ D}HUe=r6$Px^ݱAҕEdْe{DxR  K`S,dX0hHZjwDP ql)6Xj6mc[(CA=1a R_@.]"Dl<͏/͜?s-NU{K"€KaFP`i&m%ټie۶Sl}pB:tz(AKF~V(#hoYD?,ŘM]Gؿo?͝3WiZ(<`Lu>p i1ˬbc5_ث2,wIr-9+@tC "@cj׮^.e>Z(놳ͪ(HA޳g>tXkׯ{dVڰ| tp5fʹF*5`ݼ3kux ܪ\@?S6@4Qp9ۻjc?rӽ+JjJ@ihiD"YdW ;[ЮGsO5극}_r|W  bLsS6¯H'@Dm 1ںx$ wx "~"G0ѣNsiYxoZXx$]oh")Ϫlol&[Kz8]Ȱo- g]{VFӧOw=хXvu/tꪳaslpuF Kqb^<?R^b4d]"Dxr>BgOu ~Dmv)--> Θ6[W<1MWLdbøeF*ԫΩǎʣ儍ྪBߛe$nC*ޗ"H;4/ ߅׮Sfz& ANp puIJ(0z X[`g\lmZ >F"1([vcȈVp ?g} Qzp}fh~ec U q-+ x Dڲ9:4Cz&'! DnX(1S,ܹle X!y]VnϹ3Wpf{8]_(0 mLG4% wxnzDx "ZC3,tu;l`E{$WfPf?1<jpf,X3 bFuD`@Q뢴4p&owXx.Ce- 4+p|x1a*Wܛeͪlol&6Lձ*:w꜎>X#k]ԟ@d}z]0=gZD,K'$dI-]pvW\՛F/Z 46oLw&[epAD\7 ijXD YW"u {5 QuE:;wNWE$\Nx3G{@;>_ނN9Ҡځ>N0fh\F{vdj ̕Ww݆T-/"Dl@X37t*8%Pq:ƫ6Dͪ\,ah=}tCv)}y)w&J,s*ǫҌ[p%@D&VG$p7z"&+]9+5+@Dm {DxOOHK@/ a"H [DƍGBѪիjU4o<8Zu'ЧeOΨp凴[wcif,h .i/@D3gPr̚5'7*++E͉wDOYO >L;cL98D]\B99΁67x TTqqqxbYk)HhhxDVhͰ,hFfպ]ZDBk}JJJgRu^{fΜxvcƌAm۶&'#7~֮vLp׮_ajG9nr|{*ʗ"~p @4, ed;]y7k)@~,oRRRHj'gg&lR*+)wE7 ހ"2lM4Kb'@ X f̘ܹs5Y$20~Pp2Y.3y5]V{w9$x!M7F[AL@GjaK,ɩ0Zd ]6ho{u(īsG}iΜ9Sh A@>h׮^n͟?~m}:/_qDD7o \x+34D!,b gkµ\?c m#:K+Vw}W\UeGY=eh%?wθ];:h:B]:k[0ߣ{G1?A%*/8KMbbeCʣ*d́&? yG7R[/o-"M KW ? "swÿE"@DD RBnV E2"D5ElE,29 @D-%TY9 s"DloOnʝ*E;3m+m'Sœ4f~.Fm/D)9s@[W y:uv6dAlapyWVrp֌=gOz[g}B[>(#2j bKYjxm+ݎ)5ڴ>JmUVTw]'WQΦ"9+}+m*"XIp|n2i?:Ӽ9e?\ْaCP&hYe@ h`?vqeGV-_[v|}֪F4lVeܳ(}Z᳂gVeJ|O~}vnkr@~aXzC#k\BO>qQ/1~[ `u9}rLuםa Yd7qzﮡ^2ҏ(42DRfe>UY(:Ӓ% b-ySg+PЦRhg=riF_#l6@XL }p>23F6bN7jy 'v6vRdRD{%^//x2 "@@ WZ_.N nc?m 1ZiNW &2jz:L4c"$%4@ 4vktPj̗|_絫l/ " &/͗6GD@/m]9:r@}q  Xw@|mߺE+˖)Y5,"UUTX孄PLhekNޔs=;eKh坽1CuҰs^d6ZY)ukV֢"ݏ+Y`3mXhdg+Uh0e HkLbRΖnP5޸tA]  =0%HYn=˨1>,Ce/]J ӳG7ei[s4zݷQÝw:1j 7f$͛SLUȒOǗKY ˼GOo6ŗl׿de58u㷅-,#\?6*R[`^OqmT6xFGzX"PnyfڻgR j&_ըKcrtbyܫkڱMmQ[V]v}lݞewV_/5EykUa"Xhv;uƛ΢ecΩŋSu^3ߣl¸ю{%ǫe|LMzxBg]ohO$f}dS!g XCgcQlw5vx(xkwCD uOǴb M#ڹm'_x|wDPKOaÔ*qꇿ#|o;?s|\OvZf|w}(&ġXD玮@JxQ:xp6A] !Gs{] OِcjHHc "@dudzY"ŷ;E&Ao.H6;=JAqO-5Lot+!} ji* QxQ;xSYjEg~k{Z3`8EbyG̪hyLϧa3H"jţpĸt߮j>#REhoVW(WpbP(J%$˼:$n[®&rؿ. 냛>AJmYacVkdMrdwīP(@j%8C F ``nLV7x/rvAPi.޹9 $ z*3]'*_xiZP.V*ɛ%[󵹄}mxfQ(J U?`('*1P/4$oep^%`Bs  *rM,TyI&9Op޻pdīP(@%L\8@-⁉⮔P솖{Fa*|X}tҞqw ˕G$lW𷲳2Y{|[]"[("2LǩD%gmFdE7 *)DBJ`%0x`^Z^4M>Z=vۭN !kp-l!\&h w/7ӻJ%?cuP]=uI۠N,_<wm;mm,gQ2" ᗋOP(L%3qDٙ I0ZwfL刕/o$!{$-kQ(Փ-C\_σhB& ^D0VH'6<N$E PK&X3-X&&*khP'C `b!P(J \fނ]59hy 8M^n(J%@ K`r0E P(J%LDk`J%@ P &,C P(J%0=0qA]ڽJji;āgZuN%@ P(P f&nnURwGAsЁD+KY;. oS,r%"_JҹUhp HrER@ P(T%L%wڣ=p>]agᄤ0{5[/$ z\Bɇzz$bRR$q?M%Q(J`I%|D$L n}[!UAWdpN&`\b _ђ^{j7{^ l|E`yb|0c`@ P(L/xD X 8v6K`IWfmG;@$n,6 A -Hc-rWt*õA6{L@P3a;&C$^!L3hr@91cwE[:H R^;aֽf>U_=H.!`Vsha?5S$Hlm:?> ƔMPnM|W} ,YE;̹>:Q`d20Z?~J(pff(J%|%'C诚:_2HſX/I]z=OlfDa:e{6,p *wdŸFP!8t^W@]A"]N 0aBwcV9!α{wt@|NV}`7 OZ)7Dc2rbLapWNF.Z#X8p X1@UxLX}䁤R&(n'?+@> / A~.,m!O菺 ` HC GӴl rr>Na⯀ oI]Z(m-} k.(>&+єSI:nΩ>[Zs_k?X@OwVe+C0$^mo{jXpGZ)W`qQU3as2A~P=0JEjTZ-F J%X% 1]姬RZ}ٓ-Y+O,OIe&1:CTacȁ|-`&@; I'D !/eOfih[m_wZRKzG37mu;hOLQV`oy lh# x ߽2;QoȱOW +V[&UA&f&s%s?7`ksP~T-__EHwOe-2+Y1b&:nܶkDպoui& ]yi^A 38 X`'\0fl;K6 ?'I4Wi|;Q+K?&`&-<[':@jyS\=ցeuG-mʕ-0gܯh3" Ej+?)˷& S .jϥL6럤^9Ayǂ' ͰbZڳ>`ǾP(@3x*H@֏ RT=TOr垄s3Lg$? c&= I@aE@O.0A4 M/A{zy~k>A]r}uP ɉ0J+TUsa4u$J$m$AڟPW,nȐ_"O45`&zwldh%16, J]Ֆ(PCaC `$_UƫMfs"HgͽӲߴR8J' @A@ Gdy Z>CMC@' εN~H~׷|b5^\&yp ԙ( ;i*ʇ^9eW_sLf/S0@!M BKpU"A[jE7!* D.0g7@Ѳiůj(g %՟nneC81[0A84ڞ +:C 1"L*7w,;J(59C0$ U  7.aɑʶ mm"HgB:3+rYڗ xp$^[n A~3.cAK|/Vm_?-/$ J%0 1*k,}>C9)_TBt&f`0$. E $D]z I؜e&x'|+q 8 g7@7`IH@EmyN}?:,6" + +:$8$aNľ*6w '޽t$/I'n䪶]* 9v@!sOW LLAO⃚V[{g?o0aDC xZLMrtB Ѓ>W`[+`/^- >?(K&lڿɢ!ec Pgp\|^7Mz jʛU1|˖.*aA dij_ZYTzP! ?} X6F#%J\`Dؓ 2 {iڟα $ 0"W"A1@u:wR&zVں4{IVI&MH!dt-`2?.fW d|gFa(4f cxb 2v30'%Q\3ץ.4[c0! Npq~G A|CԖrj!.fU6Ƕ aS=U gB\wZj{7Hh$'pFlU̾[ZṖr7}WzW Q޷{/׾LPfŽkjܿΉRQU1;uk|T ~Ӯo66N U3w!"y0aXҾ/0lBhxzhIgp ;u&.˙CЊX(o2kLf3:iú^*ev2SՙFQl(@ i?xq33A-R!3JU7$.6H g>OΉ0bwS!?Q>+#YތmsWt2mfߪsU{z7 `G~m9fSmK"`Bsrn3 xx7 Z0qG~<|/{4Nɠ:E~ĕHX%@ K >T/rzbN@ )w_\_Z=t&B -mI-l(AH z#4a&@[6~E*$@(ist @!@N7ZuJ_{X0TI-~V[t VdD0SlgV3jH$/].ޥ6Ιo\VGiV[X=S{P tނXLH" 0Az4:q_y.!Wp C8y> V 9 T113Q}CB1[<-`(Q/swU 4Z ST>3At hUWmy"h͢H^NlS bg&F8$/_ -Q fFZ~BV%?`d̟ 0 63mus3jY=cdjWdj)e.lp`X*ouək_ ͐;li3KV 64̘ vKbHLb3f" g`6\{^/U|k?S{S&3BEQ0aRY_̿^Cwc}X/İ^ח|2_d yk{_u5,+ b1 ,w *uPG7ͼ­jq@4Bg>i0qmq^z}q<1c`c 7kApi_8 K!3Is`2L[X/bO8Nz8c*H"m*k*j},_7eku`4A%gP[ w־)]HXwZw-):܆ a/ UcGTwO$G[)2ͦX%@ ._fVk!/AE,gHbٱlh!ݤGEd 0IJJ~S<[kÒcd̮ݒDcy}G]۷MՖ چ=1r=js}G탿r}*緕̶y&q&bL z IԾm2G10יv`p&b,x1X53f!wb⾒WsVa[8J{-8pA6H=(}\՞jS3-{lN6;FwfL,PcP(J ~#>t&\A8-} .pݷ7Arrߔ&5HNp-A[Z]M0id8p 14cĴ@ChfvmA?< JOӠ8< J$]_σ433| R#~j(*sIL6(J%@ 5Vk#Q.ml;tgWW2,!4mjZ/pʃÉ\{`@ P(Ֆ@6}^iOe?V+kLG#m0$F؂O|z*7TK4.Iވ*!(,@ P(@,  #ѣJ͝V{BkR :<@"\cXоACmJi/fL Gl^@ P(%0`9] g;RƒILpgP(J%H dP(J%@ D P(J%@ U 3RaJ%@ E>`mEC/=E=8Np 1v;`ە 8p `?Q8p 1cǀf&I 1c8@03"I48p !``O'h48p `² EcLp 1c1LLId2HH!1c73j^ I *#X,^O你B KX՗έ=Ig̠Q8p 1ϯAۆNxu%'M?M,96]Dy1c aH|y6`IK;s t¹6Z~mp*OcӷI8Po8p 1&,ˤHigᴗU1Tʌfۋv~~mp163} (+8&`„UpD6D.0Nv 2|͐߂wc{_"ed>b c`f"]/Y' cˁ/.l`/5r&g>ܗU7Iډ#>G(s9%ċaa82MVd}K>zx6J춱4Ytc}C3q#/ 8f1 C,7*GzeW+}Uunt<ouLQ$6a&L74N xi]M58r_dIxY+Ah&RLD(7ϳ&^—F~ v‰VwVq*]UE{!UՔ{]} `w1O4LhLLx(A0TbaxEfm ڸq.4 ' W9\`"J*L ~Ài& rDܟj~"vV<5f܄D(-MC6 %`#zgrLo4`:Tm'@W[ "1A/ C6koa_zCLPpNX6#2\]Lzqţu3 I+ݧ9v I9\;ǂ04>&1$\iCI%1KsI>9i/aӆL]1L ;Mr'W8-Ob&1 $Hv!Q#_q1'IHt])_Ø!$H H2I'_/W淴Q:0Jh I?d0>(]BП-NF]:Lݖ9A51ɖ_0]߽z.! e|VEvY« 2A8i6J.ƷDL6fsUwͿጐ 0HD0z 108 ~‡1D0'1d,|9W`4)̄A#"p0'Ƙ 7'7'$Dߋ"1AI&K!iORR9h> JJ_Q02lw|.޹R&<':p(dXz}AyRk$;?[+ClpU& ,ɻ6Uf _YlNBpѻcNއp ]?N6f>;Lj>(3Oxv=F; Cl0TO Lf.=(=}ib׎W O_ RBڝjA1)sNLv/˴9MvU!=ʓ>Q9\HSl[,I&8_|/+G٣|P*l`w#W.; `z%9 zvϕ:ذu<;) s!|#] "[ &yאp(PgbJ:b}/VѬ3s+pl S~,:{KzfcW|5 3a;m``:Z;ZoyPl>:OR~0FLM.ɤW%:z_d׷r;~>{+?j:GIQo5w@QZWqxalx4'^׵j |^F+rw#@k&&ES0Ӟ u&54C41QgO+`{T?ΕRz7ګbVP}/޼i/{NVd(@f_[IA 䰧ψeh9V骄o%Гجfٵ~6{˝ oj=ZO02:&)}mp<$`Y&k%veƂ "-E&RF+=Sm/`? kv LpgV4G%L;AE(KKVPlE_AzPtz*i؊K NBPmzҩˀoU%d^S(``\0@ 6W3S\7 1[{.ʎ^?;mbb!ܖ| |wgS/A>\ȟ{R=4=mYf3L@ P,m|{`9? Cr.vkۯ z2/fPlJǵixQ*UZ?7޵FȹP2@ *-O RW L%Wd%A DらƋ*Ue 1+|LL[!]f~*_YC]r pgai63Du,f8{¾s}/+fbL͓{́&vQ-cL8W+ 撾 TjW PJNMp 9U{r}OkKېzuuubչ,]aQ 0a !I. -at]VGS|lLLڙiS4/¦TPiLgwcu[ym GEpl̪Y29:xnAn*Mx@q嶼?L1|y"(`)/BJ ,c xBWg7iMl~L~BL ۀU&VQV;|O@u$U+UXEt&(-ӓri$e{0UdŌlsP;bA$ X|uXb?XI*?Z]( EQGR\تW-SV v\p I힑RU$\#WQU(e5f"i0m3Lg©%0IIou&3A-׿ ۠VPD13Y:ΙJ`& 01Du z:fLuy [&1q# 3YHo9;̄S5V{!t>UThUt1k s?1hw`j^v& Z.e'F`bIl 1d/=$0"L& z@;D9VF[*oO%8ٽ&m-p97S1|@9vg8lLp&s{ص ?S &v!ѻ˯YP;5.HDpX| @0蟪ֿ՗ȷ-wTrx4;'P)qvO A㲵vL[s,%`N ALdުOЂ2H L]b x}s89ll@m$riFx9lZ 103v2ηO=93ȧǸd͑kA[[:J^߹FyURQ+jsg/Y;Q&nUؘ 1M69W@cpU7CNGQU(eߵI 7PrC |8pË!c#lљpqPԙ΄ЌEmn~r.}?7*~[ : ssYuSu}˄Ze C%N JI@ a3X{u z`ĕ ~ZOQd| `2U忹N6W\n4.8 P_!m[ӟwm8z ùڗ0 8@I0H˴P`[QQڻ&LM1T 06y 2 7x k=p6l}mHppv7Pgb*:f: O{ qE|^UT+d8Qi>Ӱt# q)3S 9#zV}(@NJaQf&8 h <NJ 䘜vߗ`&]HcC[SfR8l6ZVkh_3Aa މ, EUߣIעNs0'm'8LC03Ās$s|`̄Gx E)LǦ$a[@)_cVDyN}I. 8IjcFq!3LpdA*~1R ;b&a>}VyzKo9[NONJlDQ^# 0q9YY' f+pE=@^sG~m 4u`&6i"$0wML8[iELW:`A 'Tg:w: ԙH3ӕL܆2!*"p̓%IcL0 e/pρ(gbbRF{_py46 { 1%,p9R=S࢖w 2]e[־LoZ`<+7h2JrJ`Z31-1'\gD7aE%ad D%ll 10f@3֠'&'iw,#Z)uir–4z4ES^'tV(Gs#AƊlb˹L`Qڻ&Lu&-K4 3;vlB;l-`C C& Ch.bC( %9ck0S2J,hi&&# 0&;IdnZT=J`%0wm"fG.;C fg"[L>~lV06QgI0~/PT!&QI%0 .|§?:W=r ?(U5!f}soP]~(+%P&d&΋,Fg: ;Yd9}jͱx %0E LǓa‰/G &:3v&3u۫˂y7*֫ցUL3^,<\KW&96%0_ L]3,L 5'L)L$i_<5m";-ikv8XI`u5]"r2bxe A,S7Ffl?0p6<v1;`ɾ {mwmՄhhԿz{Q?!&W I׸25r ܋vDk\7z-k3KFzH\i#<ɚUFݿYzl%\KT%zXԥߵ ?́9#̄yU͟b0xn&+ej`=}'7%0o L]C b" _U36e*oLmU RYaQ٧zf$Vbg"?8x ^\xlfOR{ o/Vt&XLp^MA M I5Q 9ZNU0`Αhb /LӅKfǖВ՘Kf̈́v&DlD_ꑒuYX/0U? $Nū *$,X/w+|E$yƪP3^~Uls,\ޤGD/6xNb jrz}`gپdTm_2;XE*rnC~4Zn[]`k`IMK{6:_0Va?_EwKK GD̅P.y C+ljc1O5SY swiC/{(77ҮZ`lgKh.s7AޜH VLpL)Ϛ:<4|"I &2Koj31=vDN 60:$_>63R_+={=g7 >B]yfBpՙQpEe R ! vG;K H \xC6L1lm ԙpcz ԙgkn{9sSX3bG[v BG BF"A ,P(! n5vӝ# ,#H0ጄAtGnxDRf- E 33!2/V]'9g.uFo4+wԷ  ę W"9DH`b)W` ! ?!7oo2QW & ԙ;:D9XIN+J-I@|&`"dW:do/nXؑ@B0~%O&HfI4:-PX4 &Ę 6TG]*i;'1ܴ rԙ3P p$3~4'wfwnpLW U 6pi28;=] :APfFc10k & `78kBLSS^ 1 [PT[rh L ψ:KJ6Fcmsþz` 0I:z%Lskò_!|~4rqL&h01\'o[Hg=<\;o0p1jr9 ;J@~0vD9 c)XilR|G9-I8֫Ff,`ـ=-AD1Sdjc&&^$`bY$=0Ac;3+E=( `ϑ1_7 SV^g ssB f@6[JL7^m_^'kpg;5<`i_| (.u\Cnr\ O{b^Ldo*p<γv z2(<#W.c`BYst-90oǙ px@fL7b|uv4|~-:`:}ٙ/c&:0j]~#N:V'_Vf G[L]8e!"[^z|eDahé)J!/ LN&d:nS, p"(L 1 Aذء+(ΰ3Gl( ~ѓ xלOC%16NNDF3KS5(^2@VuPTΉc2>q6ڕub0ֻf $Ͱ0|[6Sw܋MM .| 0.LN_DCk cL$9zuU~`Bu&| UbNO¥3*N3)nӲCo hgP=͡>\tS0([P2tUUל݌pR0ѐЮUb!Xu! 53N\y 1f" Uӂv&K4:b#Ƙ [KzlL0O#?^Cab8Kiy (t')OŻA|P1e(;˛vfVҷ0_&BWz[ҷLoǧ&|A_םoyg.[8]`g\+-q6tyFFz)@0Q6E9K?o0!L7kLp/cUL L"g>)1C4MLmmv?jۗ Z{ 8[.Оָ0_0?\5" .^X3X~-L8мRTНX&Q>{+\]"g4}!m,f\CAwNiT:N!!yU2أ34Og&H@-7@>Ya, fŸ`Hb̄&'kq5/UFi_ŗqܵz.l 'ę _0?!Kx 87]J/۹252)3q^1a#^,i$pc&<$ %c=j5L1u&Le&`(7j1rJ88?Zy-|~Opd^A_0ZC 뫠yp$W8~L0ľڢp  e>EnxDRf}^4D 3xXcDjt&x2-c@7&߯AsGl2u)Ro5 a&c'"C~gf/]}W^߽ߵ|ZX&D$^pWPbCCGHvCJr(9w˴r=]=qzlt/A0 Cә;Q\_6C N"'AH>[FB9&)`8`"wC$D\- D&Dtxq'lW 0GǼ*r]b6GcstK7Rb9Q۰*$L΄[g8g`70S?G*ސ6!|V9Fৰv&|?B&%K6ʒ% Tb0|)VK3ܺnF77>8݈`&Pg" l96:{Fu6{F512鷮s31F ١%%y- ɱ0b!`"W(7" @ Vì5kT>L z:cFdkK\*Lim6{B]J !31шբ(XE]iF`sP6k͋$j]t/Wu&ls3Lhs*o]shlA%jߛՍX2F01+Y% 2$X>ƻk=hrK@x\v*Oy~TSTb p$:` c*:pɸ1!Avbӫż΄mӽv& 0Υ9׌FSiV2 Ę<C J`j`[` ][h9ԁ8ie%=VP?^"lU !n$E /z ^C万qzVG_hg"ޡ)+U|vҎSj"%`b{R ~%/_ď!fg X+ ;'paIJ )gpg74s:~rf L Le&Pfzm}}oTYzl%*S6G&pX\X8p`!Au fg&'A L 99Lłk(;4 : r(Wj jσvZŶӛSgv!}_Xjn,ai@Ji/۵Jt}{뢩DVә)דpL)^ A @ Pԙ`o 3a 1p,hx<]JA|SRtIM5_W/to7|%&"n§bO~=tQB]z;t &|mNg؈Ez]?U 2 2|'o{ [mm2n6iKLؔø?#6bBfb%py$_;o#@L|YʯLf|5r6#lpī/)(y[^0!(t>Vg }b݉{L8ʥ9#0W2XϕSXKyb3#|2.CML@ 1f`kPsޘh# cXl'8Wls:.uI,O8ڙx9D ǑR'(|3|MMx~+3"d`^[.H101 z.u;3$ߋXNsI>.B."aG^8=`)_KKbv&΄cgس̑ +fjh*ІdD ԙz[M:}B\OEJdmgN"oעd&?pPh֏Gpv!Yj2T=1qORJNLxl_2k0`۾$zHgLp^CP'ԙNӞQzKrĹuw9}lNi== ΏZgSHy/'wO4lΡb'90;0r$#S ț1~J9AKPA/+[3<x+`")31=M~"@clj<;kZSv\ Fe(<]}yΡo^SoMh + ` 0;a*n3u:3>vKh?[?Fެ{ Jѯ-`BPP+`bv}5|+zK򮍍̄mgb #$T/y5Ĺv&g_оYPZ4ǼE]m5 bϒH '8.$([6-_wͿELf8fO1hgu&X5n6[vsoΏzA 9%ULp&R(1S8`6'Dn]*3Hg"ZuLj 2ߡf`QÕf9$AHxdaL^ " Y" $%6%1G蒼k f u&(ے `*fÊdEp4ㅞã8v=|stU7.kзLDmX`H2!Ia&N`蠟rvQg—x^2`۾dinrLz P`<}.]87{R|0'F|P:O97oX&+X5 B)5@`Ň Pڔ`av&Pgb g 3pf=);A9Z`"P\v 5?<$ OkLC>c*H t+\Ec ;my;:<::v6njN2= >F Gk(;t^CCR]C+ ?e+J˴̦8LMp&pTb! qT=ٻF0ĥA>K1|(aLgB1 C̊>`LD;d*(߸OHcAWTRϪMp&c#% O̚Z5CFx"M]8<Aџ%c#}kojP$Ac[6v&PgLx0 ΜkKWLb3/V$L8AG7۰u&,fЁ:( hgBL/} [o]B}Bb@0!&',$ O̚} ! 9³CPќ@q3O qvIݽzkd?+o@~bFs9 ]^ Bf&CKyI8jFp3sOuKԙ@ 0avU ifwbca L_ g[iN&f*^|I% O̔!hqO 3쀸Ns s ԙ`]4J+G>9s7?b`\ Bf&/3ks 1 ϾCE = +\A>t*Jo)uK4uR&f)]{Y% O,3ᶱNpa8[hgs녾9vH&f$Xvy% I@>Bm`߯q`#ߡB^C7iH4ubec&9 ~c&PgʎuoĪM؟@0_fxŊK H+30pWr,fֵYFFƖ <|1`__^_VA>}=SǩGr?fL{ݛLLWXjH X6fb" }s &Pgb5t$`bjĊVEDZ)L2NGD3؈1~b _r38 U ?1NK0Nu&4xSb?, ~xTJ X6fb hCp2؎(p_b {/h9ٰXF|/Q)?lb$ I@ ԙ9һRL,fRywE02v1b1҅ˀo/dP%5&L FN{2s&4a e1P|j<|;ӽ (b~V4?^0LL 4d% I̎([77jjoڗj}B}s g?`V9T,omr:U ڙXY{%Qߢb1u@C0$qc c&2<]v}s΄U쳟L@ $ I̎([r8*`eH 0 :Z@;.L3J &[-nPUA%?^@,<1;f8ʧJC<`wLD16O,џ+Ocz P@8]$0φrh≸$fL 0aȟʀ0 Ixу3_9:,=!$HzhEu&cicR=MNsc;41YheR}LI&*`FX`XR0UUS''۞z@,<1;f`$;!3`2יp)3ei#9L(0 ,).k4ڝfHrt8%\I0$r 1I"8ap O̔uK8Aq8#G<1g1l` #6!MXV0k{t?qF~\`0&w>O5}O)Z0X I̎/eb_b 6;41ZP;sΎXy'L}oԙHԄMLPuLù\)Rw"J\؟!noiOòR0ѾY مXxbFD`0(o^gge ԙ@YXH`D 3 ؿO!gH|!QH4})Ӟtֳ~ZOw edp} UаGK/N׍Hv03-pTA?,LxL9'Ǩ3;,Jw@qD,eU剔hk-ؑ+ Uص@ _}@sQ--w0X6f}soVKP$4`"ߦLiq _Gzmb8ڙz%H"`Jp};]E1ykm\ftd Q_df0ATl̄ӓ#:@ok K` H;`eY@tOzc{*u{2UqtR&|Вg-.oT2L{0Y/-EK…9"߹$:c#*}CcFPgu&"G8xH2 /8+^~mN6:>i'N@CۻҵgP@;`tOeZ饉z>-LD~0Yn ,L,731P rAE;hg"r>oTq`)#nT́]{td8”:om]*]ӸQ1KL m=Ovp1}!{HD1QA LN0A IؕQal3MX>S l=Bt~6n FwZVs l4 |ox-[o'O3]401qi|u maɤi)x' K`ܢ7) 0Q}aKdƿҕBaρs`9A؇-vuk-?nmmK6u*?f1g9`b%)+` 3 ې^ LDA+P LJh|+?Lz]iҀq[7s)9X`絋gyEKa&&$Pg7$\1w|ct>1~=A钝hgbq&{5mﷻ]`S|T=xh jN@tkB]k 󩧝r>6GA1:n 9Vs{@tL˒b*ԙ }sj,^)H_a?QYft`xl]0q8Hls:HR `F nwuhͼ\ܓ?!E>`bՙV##ߡ}s,~e]iq- v)Sf1Ȅb> LRLP˄6uz ȗo P[0qU֥5ibu@R J03A2LR嗦C5l qF$jqXBN|34~lj~%YzSoLb~VGiXDLp~!HHh;-ա'Ra/O 3A}3렽q&&޹;!b&DR23B;3 b ,= @ @?0 Q~_f!WŸeA.>k*%Lk;J #3tC}S2]Zҙ YHk/$@E;~#I/9"Zu&=S&$cbJlPP$0]W!{>[0%[8@N`cJ?ڃBذ S8 J.|u SB0 I8{"<ɻ_9Pgwo1PH2L Iܐf-OE(bUAvHE0B ;9bW*<&(i{F?h2# 0D Y 1QF Q]LBg5}L2j=1bMc';9f9S'BOa3-DL$؄@ Np83(Y[8Ԁ'gFzf"=ta_(saG^'`#^#Lfh?<)RĀX $طe/X,Z.9k0L:K9Ѿ9|}xI 96#a0A/s,[!bi-,-[ب5ǰ+a# `D( $&\@ X[M w$a8N.`*¡%%N1W , ,˱lc:xk-? `7@,@=gҐ| %&V`֙` 6gF޼Lu%#,tN[?+UciIa)3,V(%<`>(&5tp$@m"E`~Z=A׉s`+']`"d#)`roSUg&phrN@p6N LL{|c9a xf,Ũ 'nl.`:S,L8Ĩ5@ۗ(pE+^X0A  :@AP % E)lmIpFT"_M=Uo_~ͧa1X3p ORtI޵t&(91`XL89C_9 }Ia@aK >,Kak3f; L!bpr =8+رFP`k9,NvBl3ې2 $L0 7%`]E`)0_򜒣hߊ *($B ;сQ)D% *Ӎb! gO$i$y&Йp`{ qv!8LsUjK|t&f [+ rl L }sFw7Hn!F߲2ZC#r`c@ n`b Iuf dW1Z>CqPأ`<#%4bh)!EXxBEHg&Ӗ@aLeg)GRM(38 ^1,r= `Z31Ҹ{16ED83t&HaD/Xm $H0>H'`洁~ PZ> gjǜvx߉S CHAaH H331g&MLp>(Q c,L8Ux%8fib ~rx1*^Ct&f&NI9 !31V L K K+ôI:r؁uv:ɻL06a&9fӸd8Q`#HxeI>$:ae'31|\gKg61Jڙa%jg" 4 Gt1LĖ,&@T7$XxBU'y3= }s0~Ѹt _ySv0}l_2ۗav&B΄ jL%dCg~%0u BKLo14fiHӏvР4X;@ipq4$Xż[xՕ}س% O$Z|fb: C:iԙC F # ќ0@qC\L #+'@ NpmBfJb7(XHb ԙ@ d&6./ L+Cq};5Ac&dZ]qYM~ Fk'Quw->3:䘨;töO59:_J '8_/Cθٸ-wiI/ﱐ23Aq ax؀@%8?^T#t-92'Z}ydB9~z*k/l<a"Q85 O$Z|fu&^7zxL:ߢLpshT]5-a&.4b _Vû8Ild{w%\܄6ɺ*XBfu&Pgu&5[`=C L0o}GBs~Ᾱnqf 3d)~GA%/:)0Sa\M'Quw->3:3aţs^LpsdDRKѬW"&, 7,3Ҍt,$Zf/e{3z*G;&?Pov&J0!Mpuj| L̎3LP8}Yc AT]LPGCP@̷R5my缍4sJ>REmKP wP?khgLL-$LNWf6GI SA4wq __;A#H`7XBfwAn{$g/h|-hqO0Ƃ rO͡v0jMHN.qrHz$:>1~scdiȆ0䌖SNŸؾھ`2Uv0G09;hs3 VKC$0#? 2_`b AT]L Q/FQRn`a!H!=0Nb ( ̄7Mrl8(>j e^Cnp#aϸ=0 ;t-c!L6,Lpsr fiZwF2ft/jc!2 p'?yF0NŽ}}sLu2b)-,/3 Nb*(ڙQƽL猽'XxBU'y3 h/ә +΄h!E3ar~DC8!cA5(J2L39X:Lpsh(K H33^l1v3>!L0dPߡv@Pgu&: $s4f$ O$Z|f¶3hH𜄳%x%ƥ9 /|u&={2.Kc)|v7?:^CPs\GK5&P19 x3Z>gB)g&+sqLϋR6qhgLCsNg4A$ S@,s8˭K| _LB -3F'Quw->3972otZLLpsh31]0Y,~Ӡo҅G "U,4"-I񍽪NL d&D^Y,GI&T WL;LS+ II޵L2Sh $P3ݪ]/}J6#qop V"UD?o,! XHa2"+NM@ ԙ@f"}1%d&\o25Z5CL5'^-Vfxə+Z{`E5@LƋaO$``Q5HPoTʵAKE!H g$N^=v;n׆mw6ͭ&ƏFGlԾ: iRڐ^PxF.ric燤k\; ب@ 3NиFo4m鯴iңLP? ]zW8 w^SC$00f[LLBKLDڙ fܱ0v&8 P5tﱃ `J UJt5b^C8`U$`"VؗI[#=TRqW7yr8v0ۗڻg46n{ Ӷ1 蛃͎qL_ۗ68 d&bGXt@01]ybm+ XH"u9 /``c 67X +80P^ b&3!B! C[ڌgG1֔+ yJeZcxF1vNٲI <SB:`b!bǛ\ԙ $FqhYM_wZR E?13:0>MzWxF0bp >:)yHBKV[ԙ Гwy`M9zo>2A'\~D&h ?/ʝ@ ԙX {'$BbBoLt `wA҆KߔڶTkP*ZD8 {ã3APwc縣/ & 81JD3$Pg] apI :3G6kL|U!?G|6'3[ِ@1 0F:6pU V10n L 2 L ?}2N7*d_I$ OL#ppt# _%Aξ#TDL;myNncA p2}w=Hsu&Wx K ?\d$L0qʅJGZ9VncG0B*|앾H6Йx~. @ ML739&{UUy؏iJ .3A,S]Oo.ljtOT8-~ 5f,f…0xfٖ`9hg"r_LL}úV@&V!b+XHbظJe. ww Np?˥/J 1p9v:ָtL0fwls8.fdRU|9Pgboֶ@0O? e&h(T_/=VwI-~Vk[*`S2oFg:ȉ(L,2s$`bg :kaܠ݃4tAsqTpw q /_aY>h| F0{aHqcլdD=pNpt&F$LD(2)`XQZV (N7,ܳ ^az FPVM#PREWwOtW&6awi$`ޚ,`v$ fL3o@̉nce +׺tveRu / <%`zvOBbk '`'{ OKj I0LB7ǘ zL ԙXMI 璌Hyʗ ̌nGp̞r :3Xq^;PEdi.9Q[%] 5 SL&Oq5 #F$|1fǘJp}sot¹sɛw+8FJh NmlBH!k{u:afDcGꞪ)?۽BcWnѰ+;!v;=&uNd:_ cD 01#D}sE 3!4fJ `ms4b$hɒS J@8au?z!/+H?%oA@0d6޼XxBU'y!hAOz7I~2;C_,+Q%r-kNcMc>r8M> _Yf,dz1?&3>syaL,.Lpsh6L4)Cl?F`T@@kڵ+'C^—`ҙdsP`_$`x I5(Uљ1{08< ؂' OoG؂CB戜JK '8Fʏ搮桬ܛꃩ>`iOぐL\n0Qے='(ORXe3H` (eLv@C0ޕ_$T:s0ZE Oq~$ K&x o.H…*dl6S Og&31{UT:hL8313^9 Ox *Pgb s %dC#ls&a&;@&`{i#_xڞm`BnS Ʌ'0QFLh\VlG9ֱP0!L,L]g"`#u  TGFe&?$_NL,|Ltk@0 W3A7ɱ^k$I9>lH 8w9K\Ao] <DP;m@)ƫ^:Ok%rOڂ&g'ԙ`3z 71(&mޥ#) A$.A &`Y f/=XߐA ־JPCZUߖj`H Ijՙ d&DL ԙyӰL L8 BcO &hH0Ad0b.(nJ_ %(otLz(MpDìkz+iYLDS3k؇BPvȣ_@qPnu4u&@ңIU2Cw=>&IKFivP"Ս lqi-X``L@.`:-N 6'o]Аmiz&IL蔓h>Uk/U0+ Ѿk W<3m!yL8LL23aљ;i:/K&m+kyu·aSK&|:ؙp$bSbHǤL@`ҪLiJ:nj$Sj IB}<\?WOH.K`BE"Jgvy eDeze83aۭ3ZBV O8l$8ML<`K `i`j] eB} `B\20'Dm>&\p[cH' $*`Y<KGcP<^h Ss3LX`D.L\7XU0^wr__C >)!=aIt_-X1c1G9Đ@;_K `?AĶ^R> T/YKVv[;"6yXZ}+`v1H"my'=6-1 n˰QH xx-Jx,VKVjw,0;"0#j:#01` !X'z u@cgp=K3 ^siLDx,f LSIÙ=FWRk BR53H6@Eay Ik.01b&vves$I  FKT.qD.~iOA 3A CqG0<3?Rx 7S['jHaEn'an5YvZښ7&dQwA;(خvP-TܩAaH6*{Ll L0<';l0aoXpjT?&vo g9Wg)U*v&| ^)Z::zͤ̄u&fL΄(b&4m &`PiLtSĭ$VRnOFiD O8`BkYW|pIE%e0fB@fB u,U V`|\2s$Sf)%Pg}sX(H`}d*`Bwmbb rL 򧪾ӲGOXSr4O4(LI@戞..P&^oc8K.KC%] 9/ va>|W >$Ng1hݍ1_(ڙX"H9|}(W0`Ƴ[S3 f =bJ9Ia4.ɖlmtvKѪ;JVL!$Lxr2X;,Johh6ڙ@;1F>MR&8$L ,n>ӯ65 < *N 2ShN;}vMrns= !f):Vw97&%yH'p[ -;=^\,qk<p3aJ|bO $23v=螈B;,O} ;>~ld}xqt w=ԙ|@j$dCWb? ^ȗ a¤aAHT !fu&LqiS;}`ÖT&Te@# ԙ$?I|_MLOC0't3IJθ@0WbX~%v0!L$Ɏ X9q0vL5n;1<<–7&6u;[r0guZ ?lA$v0@ ԙmM:+oS'UqN& ԙ@ BW 3񖧲Drq3$Iީ\CDRfu&Pg<ͦsL&"e"+ga_{L13:LML| Ppyiv^f…&0ާLQ&*`")3:3DtEVke/r`KBOb szj|.`B@ ԙ@fbۻ+! )4#* 83T2\6H3L85YB;E~1_\L(L 3kٌ78A9^3(ẏ/3ᒽ <[/Yĵ7 H& ԙ@ d&9a]Ɨ'pHqa \ć`"Bc&4gQ2N'd&Pgu& }c7ẵԙ!M!L |& ԙ@ d&f=U`&$&Ĵpc&FL$e&L 3Yg3#0 s_;Rt.jrnὣN',Lx5."?! zLYN2MaԖv0!LL 31ۏL*Io>&#&n ZXt0`")3:3D:enO/y9Oީ\C3:3[s"2sov0@ ԙ@fbֳ۫Dg>!-w-אv0!LL 3񖧱jQ 31a;L$e&Pgu&k.Z% |y ;NPxy.q򉯝 Ai.%& ԙ@ d&9h &fr!Ù61aILJ{ߕL2>K.TAvb?~.oL Q V:©0xUZ! >ebBp|Dn=2iBL26&|Y)(=b' 3~^!:esf&"NxaDRfu&Pg)NX/i^B~4;SsIJ"!`I_2IJ{I޵)LL 31Y @ ~uV~̄ jpH3,#iBL2XxDX03&.k3!R.1;fb2 "`rKK~Bfu&Pg&3*XI&m&oq.an%#nW@ ԙ@fb*c&R'[!`y623:Ln6}G01bK, ԙ0MղHL6,b| s3oO3wN2i041\NrhK~i;Ґ%:KһR5!w_Plz*%`"H L$e&Pgu&L,rY{#X犽J !fu&Pgu&xi\ +1,H;HLL 3;`b"]iBڙ@;L}Y!Xlj&23:LLc:x pI `B@ ԙ@f9JZ L$e&Pgu&XhZ`bu.H;b&Pgu&|7a@0#%dI ԙ@ d&pڛLL[XK`% ԙ@ d&~.Z Xm&23:Le*yS7A01ǭiN ?3m*5ctVaE)}&Pg}soM؜%ә>:qulT^5?`1Bm\İC% x@(7jwڍN>;jƐ޽>YkfZo5Xo1iI ԙ@ d&f=;iwړzҹAKY"r)/yoVSRP-}6[ơԺл$.f @䗁.a9%`B@ ԙ@o&ֲ)k{s9hgIq0bOp@c%Ihn7 LtΕnZxW.~Q0ѾԻw& ':Vh#w4`")3:3k҂ 95_=5ku` s`r? `BZPPN[K&g9 y,\h+SuNTWQ(,5:(U,a- b&ڙ@f"=h2RL}a=GkOvݫD?ntH}߽5;'{fVPђ.UF[mL2rV1&N{R^f]&x"i.@!0B.&ޗ BGc9൰,KR[0-]cӁ-"S|WOTmpw:`B@ ԙ@fb%eĒ 4.˟_L'5E{X8K3QgT46L@7gwßp s"շ۠ɐDJ{SV!?oJDRfu&PgNOOc,HȨآ6+M;5.|V:' 54Z?1_hO;$L2ǂN|"?$~kI 4N4حҍ*vwi@P$dCCڣ>Snhuam;vlk"`\Nf?E/1_{EWE,Q̢0t'g, DH`nեT\便.`u DyGU7T |c!ɻ666 ԙ@ d&f1cH2 Ρ!A~lt `fGvd0ɴ o P&~is EDSﲭ@ 0'r{3wȉ֑D l?[-W?kW[ͽ4ڙ;"ӑsLwmL2+)$\r0>[ 91[mn0φ_l6 ]ZsNp7GL)ꃖBl ~0LԶ;ٿK 0Eډ^=ЊM$fZ> Hv'y33:LXfJH2 Ρ!-U43q.dGo;Gn&'<aS EVl"`>@k@Mn?-Y H55swk9`&ݟe҅y"`K|vu׊_veӾUvj)ѝ$"LM@ ԙ@f"}1%dդK{vۇv{6@ *::L=6u i`w(mp4{^eϲlY{7G^-:8+ZW?o^Kll/Bw->3:3DoK Np c&nT06 Sp#` 0{RQ{9pOT'! `/Ԡ/k&x0ѽVZj v:i#9{m6[Exfzs؟]D~^kjخ֢c,$L2]V lN) $l+{qg= 3;Ai3"?g-C$Lf}q^P_,po5}P|VH ri)IoJa_)hGW~tMRAgB}4 - JC}_0Qwq4|b AT]LL 3ʹ!'82obw*,SsB@^ X& L*lgB\! !> poQ{xX W3R&4r'…Q6~JmN~NYʛjგiWڏEv{6um,$L2Ӛ- &TlUWOD+ t>R&S]T-k*ibςFa*$nnՕuO&\0[;)g?vrߤ\< z s_zK`IVX/mj[(V.riy Ng&Pgu&H粰J2 Ρa-> 3}LrL@R tBiH쵥CYVӾִ/U' =ʗj윫[HT"H`H ]6 SLe}7OrnC-%pQ?3'F WJK%g Zv'123:L,’/L܀k9!_+ m ټ6Yt?V 2|3%F3 U@?11fN=(tލ7&jJ&hB?HR"=l-j E(Lt4A"Vo;W'DI޵L29Lpsh83ڗ8qk0'=;ʷwS@?{hT4_ςG^=/StOd+}t 0^_pv1u ҹx"g7Qثzi(%0QG$A?2)7 ҕt,$L2WV 7* +ڭ=0|il; <~#]S5hS@;R0#eRI|0v[8L6;ԟD@~ 摤<X'LX}&wf] ūbR9j%@Hwr_;>PCJ^XxBU'y33:Ld:yH2 ΡQ}#;m43)` 0Nc$``L(&e,(RΙ 2 Ɩ0G'UX_rDžipU(] Otm@ȿFA.|[iy23:LgeX,LŪqhChO @ʉ,9F8`&;a_U__@A^j?`wxBfb~ַ~dw!s|Q}sv {JySyb AT]LL 3 $'8Hzҡ4^3Üvo :ʿMwz> Z`#( 'L@ؙNf&(H-'"_Rc'Unf׾X_Z_˭d9bl\+~S&XSuBKLL 3\2v`x6QrQ)vصћ&`kT= Fh4J*ֳF-]8#9SZL5LHU(Nf < -sv'OKwڱ>%]oK,ۮ,|% O$Z|fu&PgeI&89td ~$@ ԙ@fOr3>\z :ɻ@ ԙ@fb'e@ Np]&q`[Q`x GJ.ɻ_9*N4xc$b0&;o0|.??-sbZ1(fYb;4"x '|A d&"W,SI&81ŗF]LL 34*44'8HL^^K+4VW,$:#Ng0'qN' f,<*?I1`9LbO cb~װs }c :Ćo'&9$aiCQ#zOb KJgL; g"%t, wq"DP6'5WSwU2P]>=k,n:{,$LLXRL!M0w7y oW` 0k|kQxL}R.TCņ`Xx"L2 < &X5۵]b&ALAާ%J|{C.d,$ڙ@ d&5[`=C L?.}bﺑO[:A *G$ߪ h̨jB q YoXx"L2xɤ)ɠ_oXK d+ːN%0|s~{Ra{kC1~X|Kb!%d&Pgu&  &|u\:-HU'  "'"#L?A$&bTwebT23:LDX`z.p~-r"x%pJܗ-˯"n]{Y\]W] jAkr;f_o]@!r՝K,$L2qg,%邉(@,j8NK:$@ ԙ@f'iK``.2l}ueL}ӡ%\A{) 9,2oXx"L2obJK'g&7lJ`" BKLL 31ԀHWD* ԙ@ d&pnLQx@,$L21-S+L,¶KD* ԙ@ d&5_}@&p\$@ ԙ@fiKĴ%bT23:L\4}@04 :/ BKLL 31ySq d&Pgu&db H,B`$ I,!3:3ĪZ?lA$ O@ ԙ@f"}3  ?\d$@ ԙ@fb (bT23:L6G V!XHb ԙ@ d&c.ZV"XmbT23:LkL0@ $ I,!3:3N{ӖiK[ d&Pgu&Xhi`b֏JB~ͺ X< BKLL 3oNH, ~ih+N7M'Wi*= jbj*4=.-D* ԙ@ d&R8n&It^,FWuB$4wFBk_nGOf˗2@'䃌+8Ϯ{Xc!%d&Pgu&X첺M/nG…Ns9Ir’LȉW`'T8e<ڽ*R"˛$OLTFg O@ ԙ@fbSۻuzڝ7֑BzL랩Cu Gc͘Ǝ=URG'&``¼Y7;c`⏎YSQ {D,$L2]1alll68TK&A Otbt8Cfl=F?*c.0!JJd&Pgu&Xڅy09fI?b 06>LtRWʻ*?Zl6nVLYQ6Mi8?M}B0 sQ/ 80ȅ!3(BW܇ G3IӘh=Ġ 4iAS:(]J;4]>i·f%Ob'!OO0ik4f0~i.?g0}c :Ćon>o4!# 4iAϥA1ʥ;Q#2cR>0Qz6Y臀^`ݿ &Dȉŀ7(ba@(V`! = 8$1 a@&L 3sҶ9=``B\hKzW: p C5; kt.A6^IܰK&w}&UAҿG yhvF0&d&Pgu&zHp9@B0ʝ  U0ѽдG q;>fBm˰Q#;^ʣvxWS~p#`~a@l4ydvY3uQ!E ԙ@ d&6䛃ؗ[ X LL^GhtNܾ֡4uWOh\X#H-h<  8 +'-<4M]BDjBfu&Pg +06GRoɔЁ f\Ovf & h[e_+0tvݧA:}%`b}و)|(^XK|e 5] dgƎc,3U@;3B揷z gwAhI2d F6L&^eҥ :zW0.5]fᓼ{nű##5{/j h}m޹dıYjk M! v:T{&>:б0!LL 31 @zmQ<}@^xЗL8ז|o5w;1y9>q]l?7nFmm; $GI^0a=xTsvlh$`sϴĹ%!Pgbdcs=+8?᱀ɬaھd61Gھپ}99}d/`,`rv0f[f$ ~sֶzphd|1rC . r?^s{wy\%`b/S?\z4^RB U/犧!c iR=e@L|Df"@BL23Z6Z? Lmc}Ba#Fl LkKLyh4]|j<`SmKo]UKy[,2ˊsxnZid&h=բkڬ6]m2$&LcۀVAhL8^97k$@zX'j?zSuJ`'XP PR &`dNX0QlYLN&c~'`|)7e{S\;e骪?6,-:0 YuA 'm_*;k`)"}Vt@.-3؞rI0,ї3:3s^_6G FE q3t DGH'A R6Oo閩/(ZZ9EC>ejCDZ{)խ f_ ^k⠯(c`:пK& ^Fko6L΄w(L_H 'VˠނD$adc*L2"%6M=X J`U%0wmBfL 35 nq};,k3>a4Qg4+׶Mp+'J`6!3972}d.Q~(& ԙ@ d&N,XS+@ MLL 3ړ"z7 n{/kBڙ@ d&?+P 6L+(YH`ڄL2xvӟ޶<( L]b&Pgu&h76P(k23:L,6OKwu(EI`j3:3Ģ7yߩMpoRziMLL 3!bI1 L/B 5 L]b&Pgu&xksB4 _b(>' ԙ@$nW|[p}D A !fu&PgU^S7iXQ oV g@ ԙ@f"uk7ě]ưi$`B@ ԙ@fbe X!HiX K*IDRfu&PgeZ`brg,2N&BL2s_ ():n H-$IҰha)IDRfu&Pg:ͷ`1!'xhlC rZ^0| o# ӸWuR:W5lB$0 b&Pgu&X̢F*&3@R5ƀ<ނLGĭD?Q>ѭq\Ȣ7M&I ԙ@ d&4> i% &Y2ILXmL౭_! ?00 L& ԙ@ d&滚 Ggwڃ 8<3":Y:]f¼k9`Bljur\ctd&x .p`IV̷oL& ԙ@ fBd#L,ؖp!3A9~a&(f^vALx) V-k3\X 8v АIoʃ.63g&D ߅HxdqA@ y`BE /3 HLL3޷D09^̑n3 b&Pgu&0`"mH /ԙ2=Ua&|\zmK ˗`!4m۳ L&23:LcYȌ{Ue&T*W_F9n{`@Bhg  1Wҙ06 L@Ŗ,P !fu&Pg"3L,pFryJw|fB_()5wt|i؞H`0@ ԙLDx}f,u;7^҅7M&BLD|fBcO+ړ QOL]hBHf- uL$e&Pgu&&2񙉩 &ƾx! Q !fu&PgB !*18P$`")3:3A |,f!x YLX'J%0 b&Pgu&B 1,|#p0qG f!IDRfu&PgBm%Q"NJ@D8f!gvnŀ@ P(J |[8e}D P(J '~:|eYɨZ Uڞh|ر9AI'WWR LDP7iV28Я[N=/bjiOobiIS@(Jk-7rه4TK4V8\eIl؛f9ӏZR3۾S,"z@?iviZ/i)Ǥ>i7,O(9IkcxP, /拮!L# <uV!д9!!qc ,Kx2JS tRahic. CD8"C$v:(&Q0G8:C$CH,T BHba>ocL љpҔiwigxA;sb9@ ԙmNپLOD;B8Pgu&& JQ|=泃R~PΟ;$pbƫJ&| O9B AG;$Pgu&Pg"nws^- ԙ@iDL0:*F9s\mVc0! ݎ `>na&-`Dԙ@ ԙ|vo;7lrL봧*ZV;i~Ӯo66NLL8lgR3:F;hg"03@73<Udךt&H+.$31ܡ'L?os0Ûҥ@ ԙpP1Ҕqo ߡ¶/7ǘ*!~}s,:0l$qCĕڻPm& QK~D=r!7Q3!L_(px>f5}sDPE'KcG Do*l}sxt-!]2 y1!%΄}sxvc2; 18:#kS:3a#: >}9\/΄  LL&=KY}^o%f&߼|U<<VP @(D3ͫ7?^ ڏ,| i@; )bf\nϗ[\C\}}y._O1;UG ׯm/_* iU9*30DWt1D`YUIxKlFviF<…z'BS0u}r(D H%R֋7w~m}yIC ?LJ?>ϱ!wChU+C7>;ač[^(q ~| Z Brqa?dz粋{̯?zezO\B{CXK[m6 ͆P tU!7qqo{;7鱣~'rp\Qz%r5 |!XZs ?6CwAR{ @+ |\S9'ОP%~Rlg eh~{dNW)CYl`JQVGP~4zR%!-4/D˷4tHK4I=`a_00Dᵻs+9 P Ta?lj~ @ qF4m*`T!tRP TWX'm8yq8ͽXTW T9oTB(J+@ ~,eDn3b㧧 zsP @(@1࣢M Ab(w#\;#Fa(T !&. @(00P @(XC@(P +P!$ 7Lv&j|zꪳtcp P @(U !?;LJGh鳓_e%%^-PfN^~z:I+SI5 (PV"'px(yB> 4>cչ XP%o˜qN:{qJ䡠!'zN~KީXBGRcP` T!Db xϮѓ# ;{ǧaANC=9pdOiI>^)C$z~?;}~Flo}kP` 9 J X@C@POD]/o//_.>\^\4c ۀ?E,3"dQ$/>^f%6Nuq> 5c6ɬ>M!jNĕ` :@FxXC IpyvNG̳xQ [o;_.oyAnog̎Lq~?|HL !x_>>ڿwh~j%stI$<!kP)sD1̒4A ByR  )3!//N^?uWɯ (V+ŧdϯ>_.sB k@8xX|X,?, ]P\D\|__ogo #N$G˜y1sqrN'/t3A˳'9"byMzA.]U,?]qIϞ'>EЬۄBVEN@kJ;qpU*m3b˫;9}_.~>c#HAXpv}:{}5?~ib绋燿Rd?9Fa,og$e?P;|w|e3(@C $ !  |:}8E~rvy6:.i3A&2t=?A$ |f48<%~\ q#8=V~g'O__gᯗg\quls~$CP#cٻ!Xhԁ3tY\|OGÃ?:yÇo;u<:xxf.p@ǐ-nAA!hh۫9x= oBb?7Bcri[\ K]7s{gg/gIʹt(wW^0CTgW!7l!\>~K=3;wܹݧwڽ&y=.s x8>x۩A>"ˁxwuK@,>,ˋwK7Bcto/vw{?ͯ7g:yr#Z*~ A*P4 Cb\ Rz@œ}ߙOoG_߸h7?nl<LJHr3F$&DI$$MH k0ȁ !ey٫1=A?Ϸo3zv˳[֯;_L >%av΋;>"iA4䝦iNs#e Ȯp/؁ ރ;_~qb/|ٟgM41 Xl}uӛ{r~Qj'?ny5ͪpAaSADK`g'{=~G{{E%P` N0b ȣC4I0j]>n~D@ FtUhۅ>ݽG.?%>1O|yηm}kLѬI$ex n_8qs:g{iϖg_D!G;CIOw7Y8*.{L*]OW8 LD!7*;!~xB76mݼ㍍6>=YlA{C#.(w&AwSDۇr=ȇHbvf$a>"  *yhs8Jw8wB;_|u~ ͺ$-!^$ _G`ZBk"!*1 L Ǎ}byy |q-\ˇolu[Nnt;!ܾ͛/oCMfH|~@3,6 j$Eć 0'I\=;^)C49$YoS7'U{϶Ofb h# A7?n?ܸuwBC:tBډ2P`: TgRC67@3;oo~{k&n6;w7?mR~t"ddmadʩtlWf"IS1n}q|_G4pJ>؇%`?I&&1!zrl=ZG#c:rII"49ƭÍ9mI.|() ՘!_36jza,fk̚Yoϵ8칖\(pC,#dx6 d |6?Zxo/onmwۯotl.o<{ߓAX3@ӐOIM}{iiC0@YL|/@!Aka$Yӄ|{v9=4%8yiJ&!?qknӒӒG qAzH`d/_ae\EMG+C?+Suh.~Ysz'=z6%-雧0"]p3Wz|v f^_?WCOiN"Fkn%@$knQʹIxQ @8 n…q_420ǬPUR2`+h\&&| { A) 7:]ۮXL0ūL{֚>~zv4}sX/SnAAqSs dKeF*7{7瘲^LTd<'sj?mj0.ˡ .(C .j" l'!FFS |ԠpCfo~q"RCh!DC0Y&rp#S2ӿW-w@ԥ!1?f;_l~g!$Z dΨUh?Q 26jHX*B .g" TgG22<6u;\x"}Lf&|t˴GL Exxa(Q Of<V HZ.q#Z[#Cȏ.g*@ ^Qʇ?%'@ `ԍCL[˄ ,z12ЛC(о 5 @zP>D'"U 0:T !:l+N 0q(@ !+IP S QN7+C@(0l#jX1߾)Pg5GA(J( O:ʩh[JOy`]P׏!a u:C\]]]?m BWS@(PBfW߅@rCN(ѵ(ZP !l?~u* @=`]&R0-t8%|GӰ 4 LH#6D׆ChȦp]> ~@{`D2}_CP P !}O~&$/!D׆ChA|,'CDV!.?-OCP Pwao>Ч=`H (ѵ(ZP@e BŇZH h+)(@C.W>@=`22&6D׆ChAC.Wf?MI=3Ē~ܞClllP Ԩ@iǸC{=`ޯV9˰VU:KWա~(\ H"x~ VPqqqXviP_sNP` 0C.7shM!ЁB99ָ9g5 }>>{dE:koCDpU@eX.WEw}jLJ(l @(u@ r*UtC\P + 龦'S\;MԝCy%8PsᑾYL? ao0S7 [saAT`'0ĤxCL7. !"}s`n}69, `` !"}s`n*CDO$d`(S D CL0w{-13|w`j]0DTo0 m@[b/,R@C4Q5!J3=Q˨?'>q !x M+!!dOӁC@+M@1.wA7;\{wM+(8 Q!`uZ _}Yӽ1(Cg?!xvMA:52]cr0X&|B!\}7|ڣ*lS0Dx!`A0L1G>~P=>|6U`&D` :5L!r0 `h0/ c3sBQV@ !J&Cfi&2LhA]HCݦ+Rv!eJ(X ;JFWre9hyZfKr*Q SvE`auhmCM(CL-zU ǰ6A`MA:`z$j+T (P 8CMC<WuB)$Է=`0D*,C+c 00@ 4l(3?#0x54까z# jNV LASCDsO{_"R\}i3k=ٛ?Sg}Y^}JO6I^;oeGKn/;E3}-d~y;wv>_ۦɟ;? ^Mwyv P$l!c`$qB` K`ED0x#E'kv!R#Em FKF =G 'L$xc X0q),=V`_)^0!"X3"% &=)LH0ncJ~C$@@>?"!|FnŁpCCF(P`\AÚaq#,Dn"'ħ{`nX.S>Ҁ-! "u# @Cv#tBB@0@DW&3&B?}^P4:DUQm𘮥Mp*2m,%s |ݍ(Xs#և3lCuh@dx!:^>{ 9!GCchc5̑#`p+B>Hr -R{,|퉪 1]KʠQ*|!8Cb btwo?fF`lUlU^Wt-SP@eL LW!87(󝷷ޝ:_\bԶ?yAj=ڟTiB$=Z-[idMIa^ !!\Ȋh ~:c i;6?/銝%F5h9Рc3U!=] 麖x %˨!Ct22$Ot|s> `W!Op1 O!]3O1MªF3p P@*ʚe칌!Cxnۺje?OJV1u]bIB@=xWZz!x.Cc0`[?n?<[l?[˰=Ces8Cj+~뵄  kB0D CCll,=Γg;`P S0D Q`J! ,R0:ȤKΙ0ԺgaE! <= .x!!d B8P*ܿvՁXs  xAw0D?{O @0D CPpT>ۙ"B 2$:v# |&:(7Cd|3(VEW܁`nu;S"u&0ߠfBȅllMn=2})=5T Q3C bZC`C5".{Rm+7bm4$_/CӐ+aC,Uރ|3)Hd!xC:xl> )>8/.Sޯ7we0!{UP !jf "_`PـC.=z>;i*B i@ˇex=La"q#dChLL|5ngCȝ™!2Hax"E,b@eY0zj(f!愰"|NOIb]m~l# \8؇0K6C%/9sOg nde{JX gVA(!|l~5P= ·.!s#EG3{D{9+HR7အa re/%egً]2!W?X`  @~*!X/cet1`~h`"ȇ(^/CIdUj2""ćH= 5`?ex/DI.ՍH23T>xL3F>?] ;=5T Q3CT!52!#!('Y 6ded /po,f}!{UP !jf a!:ˇ$ʊ>ĐPm`1||t2^F a` (CA>!!jYsHe!{.P !jf>!֖ϦfOѰ3u1+wեP;rl2 @CA>!R83(ȇ໳\>I lQd uH@ !jf>!l`QuʩCp- <;84 @FCA>Dq>Z/#:[{RC "#*>D hʡ`"ƇVҲ2D/!WZ[;X/#Y'^:[_fOux)얜~2Ul"BGBVLJB(P`"ȇ!V pWZ LʇH [vzkkUj̗ju QaJv/d$Z:#TC>D6x[Բj\KC ƋUtk+wn< B\iS_ٔګu;'1 P`p !jf "w հE‡n 6hqA۹u k3T΃z_Ϋwu|J>:#4 @)!* &Xd{jh #% vf-(B Yȇ2 s#$KeoIC 3B`"ȇX5d>D麝F0(HB%Q2OdTkCZ"ث=F5C8VOk!҇.y~՞S9 P`p !jf0"ȟX1U6?Nf-Uz|'QCZ0\|mCՇ``"!mK&Cd 5 W}n#l+22t65ȇH>~H`O"s&! gYC6а:2+!juo50"Rqf;ň @2-Rtȓ$Զg\SY;fD>D|fXćB !b53CF FmChOdeW/()`M:u>D7e|CPXu~Og8)@F;A넳C(PE(#PsP jRuSYFUXS⿆4ʇ3e` v ڷPRʇ." P  ! ZJa iׇ(^/CO@F6[%ˠu>uoڙ.ҍ䝷m/;V=kt Lޓia ;!OQL7L3Td 喪!TkɕW3¶^J1’!WχH8F H|ZMW\ ;@ !EDpY! Aet!S&ed>?Dx>*"7|6΄݇`foM ME.EQ,zTVK"`_qPxzS  Fm QՇb>DotHhV!Cs xO20Dlu#<P !]ki2z\fvFE$-t"ȇ@>Dm|zuվ@V":ۮNĬA}e/ca LA'2 uROU}/RSȇ<r#rB>Iv,b.DP$7qKrccckc!e)y~^X+j~^+K>ҹGMh-ml%O5eZ)9}2/X/5D(o,CuX{\\Neo?Ajm1jbZ!܈|-!BNܢ52ɭ2֗"d W r-9W9klԁj!];IX'}6!χ![hʫƘY:ֺ: bC*f-fEm Cd+I7uʇf|v&m_`[d+!J z $4|$ S9!jz*i~(+|mQ1D0A@ V/,#&^z[M3J.rr#!cJU8[;5ZPC+<̑z!7(Bgm=qCޡ9jzGP {S)5PiڍQeLwSHTي́}{ KkpPɅfE{}+7BCRcʇXB'.L@{>Di|8#r =RNC!}p !\R2kC 9P [.^̵9PhT5ە` R!|Z1U6?~CB,2DKChOgHBuP iTI!"r ">T{"GÇP,S7b覀9?DFlzbCCCT2(@a&q1j8K JٔmʩlOJD#ʇH&LA r*ɓ0ːdSl0X_S *< lkSUv~X~'P` H0! "ȇz ;aN-2aI؁! ! ],=|ivdj(:Q |SCC}2 0a^ 'P`( D1D-!|tkYDj{} EZC#c0wbm,һ^Jt=g?\j ^5e4(]/b() g> #2 m!Cd`aK(121N f!ٔQG>ZBZX<6MPfˇjN ,\;Zb.)z'4ߦ$4grl=~a,}4S Q3Cx}&jv)\x\C(0\53Ç@V5mwOO@mv e+B!QP `,FeX߶ wD{R|a skOdȩbj|ytrk_Od|fh-|}~cڰ\ a/y:xq۫O $^@(0C4Ch93D'懨s~MčN6OeF0@ b<~PB(P`b=B0AC$ j'"YSc5ʍH]ž 7"[dCX픟š!-Q"\Zdv^>cP\0D W[E>e]/!r*_|KǪ!2edr)'J·^Fvd8#[<]O+z ºjFC\bBj%ިWU!' G肛*ԥ*U Q3C8|F&RV)|2j)Nv&k|܇!>D !2$u;3T"!&PhCTvՅ4$TX(053!2 B9Ҋ+YeNhF.WV iy;c \ɮ m)vYk+B\ƺe)Ł2+N>T3*Yea.oPۯH!lJB;{f>j Cm$: dWi,+"9xh ${ҕ2xO*bmO|:P7| !d}'{ fPW{Rt_ru; –8UM$zFM*E_'2錮pQIf5#]QVg'K\bU ѓ f Z0D a!VF!<B G%Z?Fyy>4C" r\‡VVB aB!ֈ!$V"B?I{'dv(C0X$nD1|kߤN 5bsY|'!ӫpɠr4 tf!^*xNv 2PHgP`?>;!`"ˇ a(< v $LS&| VnDnK8/.VI2zc h~ZO׎8)`"̇P&$8R!x!\"|r i Pٞ C0OdOg~C6| B1iXFH`.+@>pZމ`\PF٤Rx[jC9r~V3FdZN%gBHܣ!@ēHq~=2ϊPL7BCƪ&ؓȷ>H57"C08TD{ uVXBJpMe\[57f:qR(053D>՜!H, MMAOyXM0 !an|ԓ=5 KBj8C9*L yo߂1):W  )!bfC w!4F2VE=YȇhGZW o:7]WzP!9WWg,Tۚ[ry*m>˨s NXz:Ct}y@, K) Me CЩmKf!|d"m2RVeN^5c=}R=!!|pV飛{f>KaNSRz2JhB!V0ϛfuٲILh& @k *ĠCkKDߑ(r4txˠ4^P Q (?+KC 9CA&}`mp#e|tCW/(Ǫ2hL۵0DpuH4ޟ/O^.53O^&_'ߓً3z>?M^NN<=>yzrO>>㷓c={^r+y϶={^c\^toz=Z5Cfn.%ZE( < Tá)@V 7hP` _kQ`s6P3P@S{<|`Fnp)#T@1čP DZbHW'5D_0DOzL4 @@K Q%Ƈ*#zA+@ @Q=5Ֆ; px_mvE9Rc.XHiD}Z( 'A(@f`?>Q}d0̀ڣ1Dt1 Ch !TdY°Bz9Xt4Ӈ'& bSS@c{*U4Z诧.PCpatl!X}vB :2!qܶW;P9YV(l%kcS `HgE!.2BF@Zbr b2D' Q5V@;Ĥ%&pd+Ը1D;֌!W\LSF-8**`e ːaSYogڠ(1B(0bXڰn n^}sCCL0ᒇ!j= " s*c54X j `s3)0İ Z?Ac a M+`eر Fg pPCTC+@_s /9T!-1,⒡@C CC aAԋOu",]P +PQoP @"B/(軡`yR! @(@Ɍz߮1]5(;Dž@('vBI)IݔXS0 (z 'b)CP !P` !z{IP !?pB0(z 'b)CP !P` !z{IP !?pB0(z '@ P @@Bm*o6o !UP` $䆴(xjZ03&~K0k> 8! +dH8>\(T !b6;[!jPZbE~ &?YBb\;j;'M( CY!>D׏: ‚\>;XJɵwA㤣W=`As4$tߗ@MUbtr܌nۀCZ!OTQ}G%P` DaATN.C s}N>kt 4WQ * [x**v`WA%fi}<vuM\ Ꜹ`@Tk!tՃh9CTp,0C ~ƅu1 4zJ#'wOJ>NeLf>y>&#P' !P` 4?*zvQ_ f$C ~Tq!T6yM7VtD3afsKCEW,,b_I\+CKxA+K;QgCh@ ?69b#H/y#rCh%R(E}SA /(0nKRfl.'ı(ʙP!0I^00D/2DP҄0RI)h;=>fΫ.ϺBҀpBNK̴i!ў !Z48hCwŸc: _bE Xq!!Kr"J\0h..tV]A ƚ"B$'U;!=c=_P`E4/\0D ce\ɮ(*y((RqIh )OXHѪwHmg)Pf !`QQ}S PqB႕!bFpp5ZCz/D0D (wਾ)0$[Ñ_`JnP{dQPWzьXz40ܝ@7 a,|`(0c:iĆ%`r=KgB(m0fTɇ0V߇PպPC/p"4/ Q!pT #l!b deXt NPe0Q  Z@9F^/CSXYC`q`AU!S8 @~*0E_XՓh7#*>pCD(@a-CpT`< =IdPNP0D?A @r !&pɃS QQP S0<`*()#(w8 K"u-4P`( !M ;DaATS@(0C P H(Q 1oGh @Dn*p.(z F@DyA(Ц`Ə6o DaAT~^/Z@' !P` DaATaꧨ(|IB(PQ0G{@Ubkv[4%@ *C@*£ +"P hWK^DA^}`0QXU6Wj}`x /7h]5V]Zҟ|#SqQQ DaATaru\>DN?}cnOG3pW l-"Pv!P` DaATa!#$@}Q** wJK,6Zmځ`Ҏ oUy JyMh[kj6HNo,`Ən< @&1c;V6uQ~ ? 0FQ%O@ P0$ܺBI~Q*Mob \!Sx] hE`P k =.:CH>ʌ ֈ.ðr4O3\,(V?r0&?F.RChN0 P(,*l2}¨!վv*!l9p q { 3ce6YS3bc:/ԥ@Df 6@MWm6GEeM@SO$V/l^uit)C@*Q32溭OF+/g;K_C0~L& DaATa]F+/-t< #T #CD0G'wN+ p.P[2 +]׮@D @*#LBz|RQXUW6@(=e: 1O< O+\CL: Q p/̓PM`# p@C0~s!µV(,*\tW-(:Q 1{ W( GxOjq8(aCk5QXUE %ڀ\*(wȩ]Xr pnS&-!:<*$GrQ|'S6hӥPaϒTUcU` Z|1G@T_ Q- F@0Rx0"K7B(PB2z,4V5sA(/mkgQ{̖h@Pk1/'C*6QXU~e]0m*<@ f\ö!Ӫ} 4܉<(-]‚¥/a`~_ ƁP *0wa\6.X-xP LSC~CZ !B~#J_T`  "& ~o}%K~ 1֯}D #<Rm< @aٕC24pG /C~aR> WQ7A>j6)Y~BJq,ZT?/rSP>tTIZv*M\LL3NCw‚SOa0:o!up(;C_5|8|R!qGaATZ>D-(:Q y*1(,*I?B(OFϥz p(FbAN0DV*QZ @ !5x_PFNT^Z(,*\I8 @)#cMbGaATi+P=b(&[V @DUP t@_IX‚cU @ Ω,qA(Qqh$(C@*Qkdp-(:Q 1ɝJ(,*\2d0X-P`(0B p~Jуyb\kjTi-PP0G᧎W *$G"ko%kU> J+C@*Q+5ҁVr5#d0DB* !F?8v DaATL& ^1ۄZU?6!*w헣!D-(:Q #T wOP S0G?o5M pWsA(s`(0B p{44 @6C0~y\T z*(:Q #T wOP S0G?o5M pWsA(s`1+ !;‚=<(T 1sM':j *P`1+0IC9NCQ)D P \0b L':‡P @C9u 0Dg7B@(C!Ƭt#|^%K0Ę#h]wpC|vQ)D P \0b 7vXÿ%C*P TW 1Zz -0NFC4*/*P 1ffx|oC3T 1{Ch́O  @C!Ƭ"OiZ6 CT 1:;671Qڠ`0Ęh!TTF401P 1:{Uj*X( 1fa>|CS@C9Nn6 rLG5P @p`1+0"CI(R 1Z]2z!tT QeW Ӊ!{=P.cu%ínv>QT\Gi"8`2*[в4  @)h5:d! *)R&0LIkN?Q+<)r Es>ʕ|^(Е`2*P;CDM`RDD&!Oq^(05FG,D0lg,!֏z@W !Bʴ@ {X UB)h5:d! !*r bj8 t"$L !]u8/Q !Z8Y`0DT/P t"$L !]u8/Q !Z8Y`0DT/P t"$L !]u8/Q !Z8Y`0DT/P t"$L Yͅ\[[bwl]Xkk@M S WP ^0D' Q a]%0{ı`wǸ@(08!A eZU5`AU^H𔴞Y斚!>:b4 T0D' Q 9a 0yl(0\!A eZU pkpk bI3CInQ2BKנ‡nCa)h5:d! !48"4Z(0\!A eZU w9͍e)!P`p !Z8Y0JZc9A[\ r 0`(0t!A eZUvzR Q6T8IzC(h5:d! !X4C E;C5iUn"6`<b2舓(%`h'`2*C cEDCq`L(0t!A eZU zNJC(h5:d! !qP` !Bʴ 1Q jtBC!&2C5iU:KuEokƬ]3[V<v_FPCqzZ_ vjm=?CN(0t!A eZU5`A[t\\Z$u.ܣ+j-`h?`V#N@ !@q]0bͭm^nP] F0DHPCVh!6!4As4(i!̫0= :;|tи(sFG,D2`4hr'C2=v<(0!A eZU !d,#M1舓(P!u;Dma[6BU8BP`" !Bʴ@ul_|B`ƅ6K)2DaATފA(о`^9"#C(P`F6!dCQ"y~@(0 ս&'x7C b2 H0Do#tV;Ctux.c@/ FbW^/C!F#C6Na2}!C{%<1^Q 1P+!Fv=`h `F6 `7C bX/Z FbWC_ב=ۉ|ȸ(0,m"<<(n핃!bۘ2V1PmXu_e`>út @( ս At/CD}( @umXEA QkF8(R 1P+6FCDA=P @0D};"H&w!0f\`5_0DEM|H(0k^`!F5 CTqx !*j DFB(]CT 1bwW QQS0 :_4 @0Dׯ`t͸(0k^`!P` !*v8~5Ck%@A(]CT 1#P Q+)b]3. B0Dׯ!vDFB(?Ɗ Xb_6/>E%`ׯzTW> |'ˢڐ" *(@xvxogxY͇$P`VO7?;NΫCTp,)@j\@ԔGGO{v  @* !z"ބ@`r2}_jۇONiǧ ztB1vCTp,)B }‚׫;G @* !Z >I C(꯫6N^~Z^uI{ҍg'dCTX(@E\} C|Nu_A%Ë:yYCTp8 )`a3EMFU3 *5oz;a\ʇP̆rPg҇( !Z uˡ0)`g.OMXjW?ZȵpBCL#\H, fZ||IʛP6>LJ0Ϯbe0Dk"N@NE2DHy]#h&CZCHbfNeqb7C k,a2Xc " r׹GP!)H:!BDbBuC$cʍP>IJȇfHr5ǺB\ a=, P @(Իi¼7X(X!.qDN/rChcf<2 <cԚ/fR3D %o7GO|*!,\ƟB f6!XF P@P4;,e!vLJPf`N+"|КO&2 !sfVn[)f{,ۗn_)l#a ؇ oG|#2!Lb_i}M=HXq>M}RA4>/f>DScCtI5!F/ `:}i/O|S>DA]ڤ~V!P*š~`XFߺVe!o߻  pu9/ +Cs*9!:Z`0bsIb;on;gqAAn5G )C!FႿ*! kr_S|`yˠ*_yXŚPu;/$|ͭrDy5OaʗCXc;M?1=V8U:}@>D8D 8eC@0]@(ہ܈B:EnDMChH7"r#܇728 r(Ө0DRy; Ғ4C "<K; E\&(Bȇ΄p :aS?g,IFBxCA&!u#>| hG0zp7o|Og6< ˚>Qȇ<{ٕcCnD҆XӥM>KOdpd4ICQ@ Q.BrpGW>4'5XC!?f%3W Q*D G>*  " #+$ xX49|n׶ȇ@5+ 8/\!p:A!Y""}NQCH(v إ!D=$YLu=g4kOgdȏ 0Q8?UeDFyCqaB9-bAQTy)ǐX1$qΖ@?GzOg6,郠i&\e$pV3; kզ>L^OF)vcm~dCC."$͵=\|j~Y '!59V& |Vܶ\|]A(e| ,Za=""ǑUD*y[?2)Ǔ-牱-F)J^n9m3s,a<[ܳդUBp~C6p`Q9ɹ85ÖCDC{*Gq#*$`z7fgA*:q(@3+Ms9_!hʳUmR:< 5̮s nA Rx `-̍r&b $ hk dș.ʇH37Bz3Ѱ|r(@>*kAdEP2'x۹ȇ-H¹t)R^Qe>șXዑɐabG'ed,eYwSYͶ6O*BT`u#Tz&Q +Lq8ʁ*Us6A6a‡oχ(@ i(@ԕ؁XSj:ȣ+$y~|,)Z!ZX=Il[8i+b 7ɬmbٮIlDCˇP#Y7RH]؁XIb0BNw>|C@(Q؇2`NCꝑ.Uj~5\ ױ^:jAwF/.E*2X/#C4A 'Z @ %`OB{_yNx*b~9!U@!tHcO eUy, Z;ceH`2>!A[p:(z@7> BʇCRș6@D,%$Ñ|8h3Q@ԺDxȇ@(P ЇȞHC[L7b2b"r΢ier sEDP) ֶkz5Ce2W?'X/B$(@>D!X/І;{9gț>nT6l˓C+i@ tsZ!2=oSPK2k^E 6Cvo*!WB\ r%Jȕ+!WB\ r%Jȕ+!WB\ r%J3%Jȳ3|};RR%(ƨ9OpҶ!w}x]gPBKG@Gd%"_^UӢN̥9mBrX-4rݞ| hm튕*q y44tq*jUy9Qfy4-DNMӏ EDb,anev)ŕl R ]e@={xb @ǁs] +ՑR!3Ri7>YLQVu9>TSV̩JuqAO#@=+F{13ZΒns"oS`3s5(]I*jS% mpJH,Ex+!֐,A?0;Àeo*A>-j(kR'YrȦ#&BI-4G=%5N4Fe `B[%"F81GD8`jw-(. EMHw~䮖@~rGH5FQ(٨#p$J(-+!Ɛ_*P}ȉu`^հH6뙫WYWM̋˚VMxg]R0p 8䔢N<9*\o]wM(PxwJt>^ K5)=fՅp7 :mVlײZ=X0+Uk tUü'UOREWX\z(cmxG yܯLR\!j`pQpW%尊a~`>&P)]/<#: c%Lq~`_} " k ?|˾ߓXx%ܶ y=^b%ԅGieq&g 4g.]aji ][ *wAٷ<[7=~0w|# ъZUǬQB}!?g~wnKwzUSRi }`rR/8~ >JܩZ1l_L9Ĩpc$/R|<H&Rþ#je'mN{Hյ]#!ĵp/kOV}$t< h6ZV5a#uͤ>{jwŧ_d̂f(5!h^JOR&֐IEBacy@+ /I?v%' } l+d@JE@t88]6aPwIi8)̟L3|aLE⼤m6%׻$U|uҴu&tk YWݠJӗrC%ٳ'88!PAsP*n_}qBz8CڳZXXCg&R&ǙsMQU_΋ku{l?ڛYޡ@,IN;pC<[h^k4Jtoh`䰛"[ѺƯY?h^e=/x%B'g)9f] jlć='D;y@V]*9i%C2{sˬD p1 Ͳd3ecE7y0r.g,YaK \4W/O ku4.i p3I[m@~]躖VszMa~ =Z\A>BMEq=`s8b]YSh20薪bprpoG現aO8WHyɳ)!Q[HPs0,CφFIҩ!~E3G["k^8QQvӠlY 'f2|bwg[K7FiwNxg CL un"gm}& qPQH; ߰m˾ gl XhX:s3f`.=j:O"NnCg;3е0so="\^6*dm\\9~0X,oQ]u,w\Z C~F:R6I;[|No 5ei6`5~QV2Þ*YLmYO^}*ҵl4 ՋD9OPFqMS5M3b@rJ^JFYȪxMp\6!Szf|ct~ UW1o[aYY8+]]i͏DQM\9oA `'*$i]S06.`Pe8kMI޸d _(e~k`)F$ޙ |5&ցcfn+OWddB6. T\ &yb")FI]y2f0:AyN᭴Ȓak v5]vBcYurou' 8WQoLSVQ FmV$$x>׉j:p]=m%fk@ˎ<6,Nhfl%R⬖\Drs2ny?"Y]/"M9-Z/CԉgWȗp6yB3rSL",XшݺQ@ѣY&)٭ c`Me)yn%Xw!/` uZ..[nBT|Iw@)> `v`hwyw-MXYtg@asoڃﷶNRsG*fK[N`5Zj~{%xCۊɁo=[]A)~ 6^D=^w% }W(!ϮnP ?â}U0Q5z]bfԤ~Khk~vw:SO_<9sWQY.Q{>g,ɋb@j#Y&4VVZT0j6bgk0,Q+Ƙ+ҽۅ~U"QQ@xJȳ)I'B!&%8_KU;N/KL":kX9iIsASVBQsajB2,?:>@d|k;.PI5ɆisLڷjYǡE$DVVgy<׆44ڗsA{׿6I'w\\y/5k;Lm!_꩟2>V`~ZiEuˊU<;@t3o~շ RBigM ?yrr%/\ 7 ɔ+!|I(%J!$[Br%~KVO%J3 r˖\ yfA~jc|r%yVn?!D%J!Rhhy?z真]>wc&eq&{HKF[KۉOVB@FAK\[J׼€T5"FzcMЏYƦzΩqSF'>coӰx|/ǀ偭n +k)rΣn$"˗KMSD ZI/.P]]C!\2col oWCmJI@H= ᭄/ k#N} *bh{97$!DGujano s&:Ll3so0g;p`͡6'o?xy@ké& )T+L[C i  צ,0x:9CZgsȃQSHq_.p[]9;FAR"IoJ?Cg{WWƢ +Jq`@ŭ<)QwVpj#)3%)7zt&Pd%%n(@|bj,G#5?EϢ p'\oȡ\h0/ڍ=-9&hj!rH"xhVlj5RhiMarԁa'0tnv=S KK?ȜI0kٯCg|Qp<#;;PLU1 q4mEM]!PŽʌl|<O(I8YmNƵ IU}3w;O~1N9j!u"R<2Hќ[ҽۧZK[ /p"0&\VW!R*P=$3L7oVTtWVQE"v{E~( DdI/K!)ԮQ@~ޥfƍG[݄`YX;,6zLViusBi kSp<0ޜZUǛ}_rC6ĪW{.|HȤzYeX=Y$.!|Rފh9lE0nq(][4G)+!+ P8\n{ IqJ_[pK9o-iM FpgJcmt='qG}e!m$<44ŕj[)MX ˌV^5 4%Nr#>_q3]_K8Z pS|k w{e![M2tO 6ҡzw܂K'"씛 7.p.?ʼnkVL M"g"n@@Twqs /mwF!Lo0Mp9qA _yY։0H&[" ޣVg>{ 0|ÀJaA綬MsR ԻlpJ좖*"+!Gt]wCCǘAGS+;i 3-гqnRZ2lzuU<x X|EHhpp]s&'ZuPRнeS xگ2 o*pΏ^X"vm[t&Zל2#yNjaS0./n^CBXjs*gwH뾏$bBs0l=7Ek4`mQő,bUM8?+rIO uV~Is gM4Agv fi+! l;!ieb5dSxFe9G b3ǟ7x5rZs|W8~x6.vQ"%G^e9O|6A{䄟O(!K jӛv4MҠ/D;Ǯ*NNFI?& n|!77w([[ F:#GϿyuk]gU-߲B!۫MH%TOؠ|uQ&. JG!-d0R! 8U9[^ {YSgɕ]* adv@Y@\`EE2x_{9?kƗ3r{-;.C~5N'.n޺fii`_7wiwq tH7:rםUg7I U,вd+M5cAGe9M~5|rUB' Nl{v~|5#=|}WG`Dݺ_[۱qIHu0ݮi&"Cީ4miP-\t{UZ?[Zk !攐uxtoI{f۷Jxl#m^ڽ'~?9vA $6z}qL_}-0 m}"r̀*L["2 OPBŐmRľˀD*Q,& fԷҡ)KYXТu< +S}iCm`|o哤* #M3!L*,S#L|F6D[6(!2BhR޵`8MЭcian#Gg1W f=j;^2i͝3LJ}&vIp{AW>$}tլ+Qkl0[CEO] ~٪KW uKY۬;K&T0upzEYy 8bSXUx0@!`aMFp*o8 |Q2VnUځy]{J @@`3atL-Urș6yQR ֠RR8޹ ;sWe)ވKx ToUOkBT%glsyhjW޵QmZ {iׄ ]IE#H!>٥Qc>Wk4hC0US g ѡ#^j3}gOM /Z&%'9FZnאַjn1tw/^e5 /lR4弽-4-Qڷ28)BǷ|S c֬d VȱyZw=|2< !Cljw|Vu4+r̵̢|TY؏>g@=lWs3:.D ymOwﵟ!?-ڏ8q۴m^ɭ}^ }}2 $$C'W(UH2i?}%<ѺnjjWޱRA>LgZ"s}n,fb?W32, Lz[VZ]ђmtsBz )OSģmK?s/{w:+uEۯG#d1z ?sa# 䋆g7{`8.쓲?Y=x9n1p]44} q‹!.޿9~}SSUaֶyg.Ub;;}H ~| 4O9cyKT.9g3ٺ[f C>,W-zO\ݻqV۾{O[FS[{: ȁ-C Kӈ}UkקTf47)ݤWoY7 g&jk5šo;d 3W7qV(,oճs358EQKKJ';_lZf F%O7"-CeoKZbr)_򨱝4_d̟N;X*@|EqY*ek `oCh g\ſwVoOOcT+̈́zB.nrwѤ{auVBK|vlr-s.>oRS;|ΛE?9SVv=]L?T8Zc|x¬ ilX :1rL1Ǖ iSÄELg٬{u[F/ n,Po|V/#--3KO^ yiWO{ڴ]u^yFŔ90)p@_]pПU óG0bu)G'ẝ7+!oy֭Wy %2%hl7WIrbfIM\BW,g0,*NvVMVJo  ]lB{\of&N3pLi*j ~p;(o OAT_)CIA7Edn /B)T(fcrKUT{{ anm_~bqV%NZEE/GK N>8|LJ6gz㒡U,VWiGs7?iVM{3sNa Cz=sͫ/|f^pk Re fIu'Q?mh^0Nc%{.{} řh;? ¤D1Kˮd瀿tթ*WnxMmsX;Bw. ~͕7oAavGs9¶+Mmc_Fz-ZWfs$B9VKŘEF_Ț@ ӐZ*EmzCg*ln=g}S'HۍbD랱#5a]':KyWF9e3oxN/A=hXe" :e]#ɑ.ݻwϵBb?ܞ^zyW_ "xى A, [\m&P^] )*/b{sҿGg%.ӻbj%N&| <q5ǭ/ *諳ԪYJ-ZԨRb*^UԮq'jny/[ :R$D n.gխDoqW V4E/jJ'`SB9 |UT7F r!<[+y$Hȣj̇VN{.cDߍ߶q ;5Rտ]{( j`|WO,[d! &_W mac}uJlBȃ4~$ogoFz:.&Ţݝ r_}= B[pgSN O2[D@okop=)!YVTu~@|ƧZ&{O̺@<÷X=:VC0kg,yR/omɥ[{RZOxxq4 h<NfmYRsf"?Vv΅=yP!WѮ WrfBmf~9^w|  HSvJZO5&;@~CM_<^/_D.8/,kwiJyh`V)`{zHcUE)؞18Od4xv w*;wLOW}} >ydȽBݿKY&$Ae(;XP ]Pktvmֵ|23⋘2.lp{<%a֪B @b6DNhƼ5z\hy hjnd.K&.'ٛ\WZp9eubhG ˗/;mڨ!ߏ B;I1Jm[*V!`^zT\B#Fr\y]u@bV,|J* l~HYH>i<5uÂK">H,{C{nqC7y800va]0!{{! f.kse^)ѽB q,3 FY6O2^ 2|ڴY_~@Stj7oMwEsmez$mc_v--gXQ]roZrȧ>sqU~Y/:\0 3K+~ Qa[%pI@(0i$\ɵA:i}CńL<hiz Q#X2 O%'OS%niq/*!KV>7 vkʅm(ju wmIW䲙bMBysجs?06|OM'zOiFS9,VsNTw'\ѳq4fmWL2[ hװKPlm^79:u~uM[Y?]YJQ)iu'VnO U+ԑGYѥ@e, p `!E2p ^;)*agd @dmc/\6/qm8N7ɉ٫'#uuԭ[v/P:լHpD/eAS} -!H1r.9'W `fW׬j2{z#O4|ݫ\ HRC?(6 lEZo&Յ!D!n+pC%O RA$؞dOLJ^;vh=n? KEچ<-Hfo}Gd7!ti!~8[UddKsrH}HsMl;+CL1A1 84jU!Y0ƹOו0u˼~ϽW#"m_ >5PDu5nMC>o~ {rakG_]KH }B¬F: ,YJO?(p=AUą9J`X0t!LIEHa}h0 X qpIHxr!u_[!f/$+#4u3./t^ܢ=#qx}H>=X y78#6E皾gۖe ab3ǽo?pihxLdtt f0}x!ՑSyphѓi} omuL~e`%6pf6/er/* H,|k\S -T_Vepy1boU!gґ>16nlWBȏ'撇t6(O?|%q{J c%eѳ֜,6e˩TVtd<ӶTCXo m^(g]E.i!|ǰ"nlo 0_t`x ç"T:Nw,@Y/_xf~'xHGC=lYyDÃS3ÃAWxcjNPٍd2˵>n. ,_|fz OuuG5^[}ӕZÂNρ'9ۊ_ALk \2;{{Rptje qE/'0AiW1u3XdTQ_sHfg[杖=bȣo-Ա̭G[QX[&u%>8w f-5~3^ϸ_|dn'];_ʐRZ3kBH1[vBH|y9Bi}}V-*_I׭|.5aϢr4vnJDnRȣ6u+4oك3TĬ ,*b_![c,D u!)zCݾalM_/ܩN:a]/C0LryS6Y.k4!ɻ +Z2&[܊m*9TnQ!p,ul_p=Bv9i]m!hM&9bvLUUTetUQ[»vl1I\䖸*!cF10@Ql\kEw.쎵uun P[AT$3,ԁ}yQf;339}έ:oϺ |ɸ1G~U^4$'Y;lUݘ<_ݞPXM>$Hqƿ0o9x:o4s/~N,FP:;ԈFZ~>/7fYqd2̐imL/)޵L}:%? @Y[#'MZAٌiM>r 䶜L6;()9RVZw֥K3&C3=(@Rޖ~,ۺڵc;ܹq_֮^u'-).6}'^b@ej_=}}SZ:i:XgO^ȟiH 4RyGH+LC. gByEf4 f!fG~/o3ηce+LU7i;~,i}"oἜ QJa= E/zkǹ WRo =%9~iQ^%WWd $gy]0nmƱHO#r>!uVeXOWnV8Ka? yx\wjD5p5"v"kNԢ"|`!ILHպ,|\3l[n* ʽ)ڝ7103 /{0nIAv_e-"BH"#,#Хy4F2#^ݿȁ+V!RUn0{=ܺz&p( 8$9;4"v[{EI265stuv6t`'Mܲc{j[k+y" g̴ ~2fTNk%͛MaADHh-?W-TDe:;@azNQnjµ.ލ9כhYp'K `r~ F"=1u3Y@N+Z[`hn$='߽+=ˉELD0/ȏ}4y ^,2Oe%9IOWҿ䗖~ UZ}M+eyefUj'cZ|F;;Wn:VZ oL~yo h蹺n'G%hW){RX.0eoI*^q>w8]SԬvJuΐܕa@0'?%QQifxk;[ށCg-2cI'E ڑnx;vM} .m9rC4̺=1t?_JApxM.$8[) u)Š@?+I8^z +/ eWѐ4z2ƺ &bKdv_N*(H\*I/`сlЖ|۷e뮲-~Y-'o3JGN.ޜ0sʅ&9hĕ;l8})&&>I7"Բg[jG8;9u;젦ӺwĚ&D$K1|<8ۏ~aαƕiXG!u!_/"?y)f 3Z*XO*G51=g]-̓.n;{s${}n[!z[}6Ѥ`J(0(w+K W=#, Ÿ1-2o=zx 02$o. =kCTdUFQ¦}o*l23Zv%&*"1NؒkEmg ?TaK| /`~qgexX3_*,܌mDy+mVX 8{i-_#9XPڤy(B.ݐ9^{&NN'@bz1 2 0#$&QAh/OMز.Q{5C{^}5@"-t}xvs}=ș]tU܍8OOF~,ׅfĎ tj.ITO=!# *& o1~Dllg>NSroϖB yBdW<&Hd /3矯TQ| 7OejKL(P=4eaޤMXsF}quLJ5|7vPBk[n"}gMp_u]ԊU72R&3nkP턜 Gs8ΗwvHAfv=DwAkP;P$ 1~TN!ItSw(ܳ!Um#!rte=zڴlZsU""m;H43f+zZu6R t=:M,t[tDL.Y#,T~=w빔P1|9OeH9aֶUæruax_^靏VulT d=p)@= ~tnAʊYEy ^˄/!gՊ9C 4W%RRhp}U]N0>c#D $:#{6z<9qF֑HFHOS"nAI MKVיaŝk$ok06PQ;)߷n3_;'#ujUӔ3bdL]ڊѢTUEkM` m&;!l[=9fa+Y|)ԶKh8DErT_ax1*g"O Dڋn.[?x'vUEik?HI0vpȕX:6kW+laGIɧ"KH $%5&{77w)Ol-'\âOMw.90-bo@V%@;/~@ dR]k.A$)+NߛjVi]=;WHIW~zyå%fכ pঽ-A^a!~GOi/}؂-[\}S8#W/wy*הbdm:'Ɲes~x6v:=Q pzQ9 `n?v`$˧q_'00=kxh<8j N?W7qUnX:ږ}QfshJȳ]olKibiҕMKn(\=,Nolse.Z1JF NxN6 lY2h+@g'`D׮ފ{ģinK/=XȉO!GKֱN$o8r޻5z0K-p/l@^euʙ._9},6(MbKі]+Ɔh=:Ao)\4N<߲ܾTfóTg @cCk,wmwm !mh>^U_rl$b*0E̿t55Z;6SrjsȰDn/L eS q2Ur1[^Yq.-a_!n],w萯n)QiޗN=T["Δkȁ'`4;Į6'E yH{zj/ԣO`84+MԬ>Oz#"sS ҮE&F**lITyՋSԐP^qb/y3'?jtue`A.uI&LVXs4;*ܦ, ɾ@g{rL0>]ϗ~uNZ{%rWnʔƱ͊k8riio9i>pHRAECEMMUSYF)%yx{?OudE\_S}ѯvuy5ڥWBMYܶ< ,QP^y&-1YwiM?Y*RŹf_{/ o;W#A4<_.S,!k$e[rRٚvʍz[W)FsRZrNWDJ ktȇ m챩ͳ n:-|xw;حgII_k$wj9ˆb1BG O@8WWBo0ki˴. &@ CE4C^*wh3Am! @ARz1fyQ'R&"-rLKal nNh*1R.0ĉ%>k|̳+HwNf6itG ~5ݽ A\%]kgZ5qD]z P%uO8# UEICA@j v2WxwS{ y_?FVm+#JPdddMm|I.[r9g$!mg %gM&$zֵS!DDj D4vBx֢ *% }=,{܃/*曠5h8 5(xt@!lgGr|rKOkX %h{.y9o7_\#^C}ff6xvcLFD6by7i2JCϣqx*O^ <+p I2|Vt鎋e;stCp--71$8=y5貥D}E-{-ͼb39Ge4e/ 8#)׮; @ Od](HD{V60AMb-vzTD<6/өU' %Eׁk>0t5oZsn֧CZmA6q]g(XcJ &N>{[#tO["LoH+rr5(8,͹~"?*9S=/Qh#@^p&9?#8,31fs]l pthw`!lrES: %65C' n$ uܓ$5ᜣ4K%æ4k)H88r;XFiEѽ'23n_aOEh&{)=PVT:?qx%5B67K`vΗ!k"DB:E@4=XoY߉AC$!'I22dlJf 5RVʐz!{YĴ'=MLd{)%(-H?1UsIA?b'׺%'h-j>~66ΝBM , M T54dSiý$#0)K| Ϲ{ ̐! roڱƣxZ:d9<eE$%?ÄGOش`K;we"F#~[:yb3?zg&N7آ|۫k_K++csMyE-s9=re6 ;L?enf%ztnq]aCDv)EFFڧG17o_AwH}Qe@.Cfn- 8SK$B;9rk׶--#$ rawI^'M!*)/-,HsVnƇ rpʧ[{Z4t>HL? GF"F?:u>r/oV@O8) 1O|r4AηyI5/"Cq/*F{>ߘGby=^99t~Rں*.HBͫ:ne!l%Fx#^V˔Uc ȯⶔdEC{uC.TW/_"? 3y"g@nӦZ~_y-hwEpe_rFVL>˓4O!A>4A򟺚 o &ț o &ț o &ț o &ț o &A_>!oo= {Yb>YyϧݲyrzF -_5!ZZ_s4ԵcKCt݋UtIENDB`html/images/21009b70229598c6a80eef8b45bf282b-imageconvolution_emboss.png0100644000101200010120000000567411277240312026153 0ustar docbuilderdocbuilderPNG  IHDRxC`1PLTEilnphgfd맪Ϛ̸׸ٌosikGF_gdeKHI㞜trsYVW"swno_^}vxw{lo" 趷WX|^`?=PgiŞUVxͮ1.9hjfh\[vljSQh.+/ťkndf꒕Åtxٕrvmp{}Z[~tsrtzzqtNNkkkٌ{~uyacjmnq;8<[\LKcސRRrCBX硤(%*97G{utRNS@fjIDATXýglǕ{{{0A:<6$B @!GcOnMeH6ŗ,6yT~_ꗿ~?o׾/_>Oꓟ>xwx7ox^Wꕯx^/xg?xӞ'?OxG?ꑏx?{{Wu{nw˝NiV9%j|F{]PBT4ϨoG} x$t>EnzM:Ek(Q7WJP}֛r`Mĩ˞Fi)Fٕʙ-YE*MQz]Y]0QelS2E#V1R|ܦo \#u(@W "*7I^v7[YsqLF.T:owghkU:4pbNikVjMMHf8XtB[9K 0;XONNf{4"H*֡^yԞCPo^P1O!]C$W"_to92e=+RzWHSN*wJ;!$[#kHİ[q`kkX7Z0 [Dt=?=n/ޕxtxQap*tE*Hbj /tvC)_<AvV;V0Z]Ap\ja6\o *^+\N1a֕PHl<ǁPuuVf=ߡcpsꈤ,1k!'E THW8A3qJ.VkO ^,a *{/٫rd% l=sLiUtj_s`(FUz!E?$]cegۥP=:Ʈ:ZsY.<7 *[2]Fl*B5/Z[$NjU}FI+1(^2ujl} =ŤR]Μ&Fz{m{x+7| ';8xx7i{zXjCoF)&i|;xeRӸ:T?%z8("gx7׺pӛ}>gutjMt0ĪEbr}W l,k~ Y/-tMc|'چy?=G:a߽ߢ܂/w/yFu6" 6-҈LL4X`Or۰#4B%tp;4N]BOj^{JQh毋nZ.pmGj(5Vf57F* {km ] 2({U;M6Vr u@)Jju ٦$)nóo»vWFb FL,B^M?9X hm%q&,t;6ahuI8?#################ÿrV.mIENDB`html/images/21009b70229598c6a80eef8b45bf282b-imagecopyresampled.jpg0100644000101200010120000000227611277240312025062 0ustar docbuilderdocbuilderJFIF>CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222/" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?6z<1S\&IZ&l'V46d-Ա<5i:]fRkYrI1BqWkv{vylŮfiت2?:&5W*J'|ztiv1=]֣֚+IAx9W~6|T&⛯JR0pH?e1z Z¬]nWyok-LҔo.?OWm.SWg,v,S[m' VQ,ECʹ=AW?kPI"jVڠ EsM##'9~8yvztr~{q:,yy$wA39n ZVy\jK]:^)|;v{%o]6V~}ci4nZ^HX x޵A: X!0`pl\;W͚Wt[9mNF#4J3,q -!FBk%I /#7O@<+n}qNGcg3{L`^*4%kǗ^]YMɦ4m:O.x? |}|mz:To]KWx.?|CgSo=FCC`~_|ij|rtӬ<i>\X]KG  1Y֚ƜTkcPC,oOg>}t}.XOjlƈr#?C3_ x}YQ RqINM9>h\s S|rk}:Zr? U-|U^,gmWJ֣Vּkqc 0^6YC̒؛YѦ/L#o|{6*O&,`ha-l# ygs[htLUJcZmPW9{yX Χ#j'=G u};laǎ|ch;M7DmBR+x,Ċ n_<ͧ/:gG/ xY|-aխPM6ObՎE~qbppNtvwVgrM5$|cqc~_?9>?8Ϯ>><6N s~'z)sIm%䓳3x_X 2Y5M?F4You=[U: _^K ( qq,qFgpVMSV; WZԬ42KGS#Wxt@Ȋ]A,au u=KDaI-˨Nje0]Z[kVvJaJK&F|'g8ᰴ%iR}[KFIwԙՅ%y-tֽh)nx/:x_Vv<1?c4oz|k%ῖKz֩h"[aY<ګPbcƺFC\$46$EԚ D@KC5|sxPO\Kid忑$м̂h: J2I&1P3bNY,K31%rXI5Þ`00\T9礟6retKnOit{Gx⯏|_3-B9fZ. G[@hQayPs;Ǟ1u?K4ŅqOnN<<_7//*q ][}1."/ fyTq0Y8J1Ku1=lvu_zRzz^ӧڰm`O(gEO?N?J|qËf/~7ۻs?˾{#@ eA8?ֶ|5[#-ÿZE|]݉U`Pv DP]@oA⽻Ktiõ|)} Cl6due%̈V,d<.:Z׷S :\[io/=-;mB&Zfs4)}MV/3ny@̷@I#?/ůcǞ/{8E F[Eo ,,b5TG;[jROL Fqe + o:rC%' p}V-OQd%rI$ē%1%I$$_y䰰5 <(SQT웖Mt8ƾ3VOCžӣ5q_5+8 --'aJ5H;+ؓ4W_|IOOiC>!`𝥣|%𯇵i7jqI4C<>ly#C$} HA*@_:1Œp7ԎHa$㟴n&ɲ̒RS]u]ŎW]S|im[ OO6Oh_?b,3P]oUʒM';jGiag1Gy15ẩFYhӔZߪo0&:8''^NK_W>?,.8dx#~k ;L}{C+Kx1[THfEYRK$4(K{S ܄rGs؂XdGqZ?o=kŏ+}fK?iZVh{Ůr^!xRwIJG_h >%~ϟ i؇֣md]յ-[Pβ˴'A"l37)ST_ ڮgi'iluxm%??ۿ Kg]Tt${%AF|"{Hևmc\4S$p˹("2{݀#*.rk?h~%ꟳ!v%m|Hb x Rt(h <8FQI/&~_JY@Yxcí{Z*bN)V}c)-w\¾{=4߯Wv:tB*cw_K $n}gJuLg' emݴ K<4r"1(HA~h 4dZĞ s$D-#Qh_,Sj  zhow5Gi>Ե_ix^qX\\?mQknnfvg4.~/A//xx+ƷiͤBnKP}"m|D&$°8xiehaw7vSVw}w3Ng']u:x^mCn@DoYy^|B{9ʟV5(ρ$3^SҵSKnf{nW-oJv;xHEKwbi»"'\``gNO#tC81w[Ih[Gᑵ@ϙ(\B<18 عQ4|]&-uޮ^"s/g=c4Hdž$t2oۈ-B2Hoh_]R/;h {MtU"MsPI#,Bv(C.K|PcŗJU2 $q~4'⏂NOB5k3c?,oL/*RDZdOY[_(h6h,oxKMɹ=jw[WZvRVL5u'$_cG&b@rq>1|\u6iV+=JٍYo4-Qjyi6Uo5hp`xmlK)=Z'bu >j xHWK~|/yH_Gl5?htKR;<-٥Y>?3)N(/y[~2zӕZuXTώ/t!-Ku Ɵ o>xk Pռkl0 0*_4 ^X[Wx'Ǻ>ۑk-[KYմĶaz=ϒ\*UXu?/> 㗾X EYj1iDZ&; ? |e {)Qy$y=Dф)G}y/fRN6Adcz~ڿ>?oB>_E6<=n.m8Λb{Bď@! ;k+Ў=y{Ү|L~KQ R *U `a1%8IFRIɭ%FeM]'4_&4C Yqk^6m~_|]x[_~ׅ>3xFѿ;-hag.[m$(h _O[Mߵ]fi|mq xkmSƺ'K/oQu8VB;-o-C2ʙveJ5e}a{En+]FJڊo_yn%[\s,vX痻o3Ͼc'Sק RYvnʉƷN@ A8N$wퟡzǧ;lXt];{~'ϯ|?_ƛ' Nye }pq$Jw8m":lAS)[>tNJ媌[;]_y6?-/NK Io|h-p1fY.OCbZְPܞ.=?f6Wh, =B @g}sRy+oE.^#u2LQ~(~! Hg)FZ;WSk\m[6Z:ȷvnM1yjXcV@|Z6u$8b{AOdK] L=4n)Z~On] ~xJѾ|5HH[{8.N9 )KN,5BI $zgm(gyHCXNkUPxR_ԴAzYo GP7$ Q/@p`}ZgwCxI4_kvW6j:U||g>?y{GdXl7U)a8wFki{|eש]VsOl[mt< ci?f6GMk\'<[j7:eoJtQѮ~mǧ* h ?iuYmYqx[ZءxmT\mU,r1|_H|T#񧎼EKgh:=̚o/uK[I/. XEq1^COٿZRxr]P7?LCծ4_Gÿc^:֖GW/}Z#hn̒<:';q8AUi;E%nڄcBa{F6KOo=[O _N?_5ӕX*ѧcj7Y6D1U %dVLg W&fa4GGi5^[lAP@/u:> ~$|O4_~vkԴԷ3<yʻ7ae_]|-xk⫪׻"q39^i-O}roZsּE FΣ}5<2W 8.z>93Ήu|NdW6$ѯ-iY ?F8.Iq3$G^5x3$s9ŭhC{78b1@fiaBZE@FHA/6QU( ^ͥeYy_i涊JZ~g_ާ%G+0l;MM`%2V r$w>VH +qzi^m溿n'ŎwK+[{lVڪY,?8?K-6IN[u[qeiT%w*27W/cOU3:+{\ wceQlדܷ-%+p8g<+//t"GK|"*]EE$3Xರ !x*Gw.AvŌv3ؤ++nǸ1gW+SO^+>:Z_ ~,iťx्1m^\v)."V4 0Fsf=N4dYٯ[0ӝZ.һkGFEV$"/YP8 {-g&|^Cx>|)\mH>bl Ea{F#ul< _ 8x+6V<_ŔyHW4cp_?tg!qRK/ x^T|+C[[u: 4K[HZ[7gq8/N5\T5z[xU*Y5{u??-vַkmq1+H2@,BPX_'CI!fe>oyiՃk/ #E)y/.17'A@nky?35'ī{񗃵M?$σKy~yuh#XVg\¿/˪6:}tx"E$t@֚N"I%g1To r,E\t:tZt%nfi_wV<Qwrڵ_tvtϦqB#?篾{Ѓs($r Ӂq1 _C>w-fg%U]?Ţ>[{}[TNxN#J+?5/>=ݼrŶ1O x3QYc兙x%PZWjg8g$ZoJw٦}N2Xxkյ/[__WZl,C< w┶v_# ;}iw~ /4'I׵ $.[PCq4*u+}V wVXR~Bv K-!ChCot&(Hi$^ {VУ[uќe86~;?+mĚu][CmmE.oT;إ7_fU‘#7|U Hҟ궷F2o'ILHH.>`_=7Jceyw6{I?|yXyI)Q(7ɞogN%Mkhvo}Sk?;/~_7?fs~)kxUx? /-ſg/IWdkjr`I>V5 ula]B ϩ,cqyyxnIn0?1`c$TV{[WwAo߃׭>ke(Z}^/ѾXQi5]?JխtRZ=w+%Hn2e~?J_x>(&_x ¶.{ x¶ x^'im/x4X5YI0"GzASӿc:C" oXYV.èµd*-[VRUc9k-4ۯs~mRyݟAK[__O3߱U-xOok~4xM#Ps5V2Wtһq_z,Yi8qנWxsyqr:rr%%tϥʼ9O;~h;O-.]F7%N919pc#"p=<-_>YWXӼOC}^/ZzfR\eu $g)FP@qۜg>]QԭPm<Dhp8saabe)*Gu9𘯪IEIkloS"~Пi~2x ;oGǣDRԚMW>"toe.N.{`f3Fc̒-$hsko|[[E_j^"ť*/< PC-̑J4[}>?a<;o\\\q ZvI@|'+\?&Ѭ>g1Fy D|/=빆r+37 `h]j]w{X)xom:oVҴ{)uyu m&}cPMԮ7Unn#\}@IUvŸչObyn!xf5=-RԜ~1K؞O\q汥Z FrV8J-u_Tց(+I]v?_*ë&c$Q7u޵߇_K]gu/ ^N|=_C')мgxn&x!մG^iZ}B9v2v^$aÏ ~^ Ӽ%ޕ+:χo"t7Ym&mKA䷎_IwO$|K_U>{'4O ws>!,6 ww7pAݏn>*TQ~XJ:;(Z[˫$Qz%kKomC?o씄\k;ӓ ¯bO>:Xբwo__|瞟5~kI5k$临ޖz]]Ch`?QیSy:_ϏlO~Uۯǧ۶Zn sӿO_(OF~:EA藗OpnQu d}}_֓@OpPyz3^Aﶻ_EE3?<7qA4ȵ'8 }_g?hTGSY/_޷67zy6b+WjSi~}@ug]IM=kR, 1)㏜(~ZK6=?WGAqwgp1#iF k5 m*-nmcLdJկ_μLHȥhPiO[TkEB<` t{_GWTGK/LJky.! Ƕ>3织M4a}iXx\5:upD=WxBvPk+gʛjugoz-:=os |?*n4^1 ^'Ï-738W}vWI|?u珼+[-YǪ[51EQa_'W|~^~$'WY,t xoSMzAe6ĚL=qZ̲zc=3xbqV]+g pEE.Zj9}Ͽӹé߷ONWI%P8=g)^Jf-4 \r}=Lqv4GOFxǸ \s=_ۥ4Oz)VmcgC>'G_oY'ltKjnftF3$UgsqNDR`~7Ak6׌O/m544m/^?~sO0iz^4a[y$cIfA/cȠž.𮱪xsTfjw._XIkizr:mr5ݽŭռ$7E,0;/:׃꿲íjmgW5m[SAS5=BWuu{{w,Www2qsq,M#rs|#U8=5zk$qnY+Gwi+LhYP@{[xӁ=ۛ`Qǧg'O i >ޛ|+o?<#c_'5kt4> 4ngIHؠA ,\qQ[ͫ;oG04ԑn`8`kz3}_O8KGO)neq5JK˵G ^7A oc bX Iּ|Wynӌn^N>^YEϭyl}ڃ\nl/o&U&3 lɿi+~ \9N|gi~sOX׆+- jZƷwNgcw%櫩_X[qu"EȀO xs?_xDOA֕xozUz]e ޛZ~au4W6w[2K)"KcojO+eAjևi΍wQixV;Sӯxn.X\|>eb1iAY}UO/ mwo>s#?ି|AhZNh泧sNhjZIjAa NӖeTo*))~?j/ËK?_.,jW ׊5a:L^(_x<='@})$Z_ 2B+ pOAځӠ{z?JVgʶ"'6TnXEYY4?c'o|,¯ tImx>;S^!ּEIunf_Bz*i^o?HztGoR@8==zuh!O^p><~R`z;yAS篱(:#q\Swt?html/images/21009b70229598c6a80eef8b45bf282b-imagecopyresized.jpg0100644000101200010120000000242511277240312024547 0ustar docbuilderdocbuilderJFIF>CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222/" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?o6o"W<{׷=5ڧ9%] cYl`pFs%H9KeqPrO\7uͼhj)GY)vJ 1'cJ~$&k#}6I =^ifP2l| vkK|vB@EXG'z|9`2:WNTI$LgqPפo1(T+8N䍉kާM.ndz6SiqZNWi|;Dd?ry^ R,Rڀ7ÒP䁂 ՗/-4Di9係En)uS`%W1f7ۿ`oݷg϶iJ qr'x5̚LAn9A.TG NLq[-ӾqgqȮW# d k*yMΝwq۝-'zlq`lD űb:d0jz˺)f# S\2L6 >*EWEP$eXgK+Ysl.柷d=r7RAӦ,|eHN/Y*@Xj>. $(k{l,X @b $(kzB# uԱ{`Bc2YB`mWŬnY!k˸fj*aWTY ^ Rv/ %ވmcZu5A.Sa{{y CX @b $H,X @b $H,X @b }|>IENDB`html/images/21009b70229598c6a80eef8b45bf282b-imagefilterpixelate.png0100644000101200010120000001163211277240312025234 0ustar docbuilderdocbuilderPNG  IHDR38%aIDATx]it\ŕUu^j-Xe[ x7ĬYHfd̙ddr&IB™$$d@`5`bڼHn/ouYyReYCSm޺n&0%p:%%?( |rݞ!TT 4c&c<9骡k'NriM:h>5?G~AW y eeUd𢡄J9PJY$g:T:98c1684`i>LL3*9)HWW > &{c"\^иqQyus¥aIrp fra&cٜsU΁[$Rs(-2c{Kj 1Xlf(F{Ȿho6✝L:`mm],,{C.Kq*xsGY9h @%8EZs9s9jt=k*gl&&)3'}tk֮Y׼jҥ˛/B@@ՌLFKDaAvZu$Ȥ6ޞƅo3./t$Be/ݱ&B(dzD0T-9OCkgˉWF# >@rz#8|هg֎fO~ۖtᮯl{%%L"f)3O?QWsӷ'іyVzq;*ȃ?h|4g?Z :z_D]ᒫNa*E7 IKqZ<}A_t\:7Wi`ar{c*/e2)#G?zU*!E[y=.A*qӾoc rZA[nd֭d[͛~LVAvFEM_>D ixz;䞻>/ʥx.?pZxU {x ~A^y|R r[O?Wg؟0 ~ᇾ%myT!sSrNJ8rn mp*s1 ( Hӭ5aE%иYwHT Νzj4ڒmxÌKV-kïS>q[?-k_ Ou% /aO R-֭y? RW7m͜vu +SifBv'K ۏr+AŗŠՅkjpW ÈGs𾽿ёhJAP$@1rY AjKί rtaŧrib?_>4We_uB$1WG[c#-c%I]F*RKes}gq.M\Nx뙧4-̬r?E]ټf +Hi ٌ È{5-ُ?kZȻ/ C}FmzĺQ۳lk/)Kh+/pg``8/'P(kZ2E!CB(!Tv󺌒zߞ=Q$x7m3̤r$g905Mkiib{apwhbC66v8Z:}3X,tP1/ sawDi2L5u16ə+ιJU8O ;+>#r9U׵TX|MyYuY. DNSq0m"pC 㺞s5dd9LS3Mqkz&nhK&\κ&|.KP">v B,.w/'SK"A<6 Ф(n/X^Q8]N͙!~Rܥ{ڈ߉0x&猙Q5MSsxTSU4ͳk;IENDB`html/images/21009b70229598c6a80eef8b45bf282b-imagelayereffect.png0100644000101200010120000000162511277240313024506 0ustar docbuilderdocbuilderPNG  IHDRdd\IDATx=R0zU*ጔh}JROa#jYk4{$ymrܥ݁ߤ(aJX(aJXZtu X]FS u@dcDJybL8bβblXyQayŃW`y|8bޱr ntG~LV$Chfuql$9Khe`5[1kK\.ZZ]KmRއ/Zg [=rpdO=^4Af, LCpL(R%T5#5H'^BXK¨zLĝ)=6Y1jЃ԰1:,ڇ2`ig|^mŊ2 hk2)XѴ SV?E.T5u jfww%,@XX%,@ P%,@X!}Z)a?1pZ 35uv}}u qYr^LsIcMfG9j19\MpZ?zx|8^2f_O5 !2[^ĝW͆EFz=LSڥCLIKo+p[$Z~O+od1{즹s5h<44 wYMk)sUmSqTZrݩEQcnt}n;Y^7v'/$߳omrwwb;Y^(2΄s>răwi"YY1'vF^YVW1;-O뛢9r|r4d[kwӕByt+x@ P%,@ P^@IENDB`html/images/21009b70229598c6a80eef8b45bf282b-imagesetbrush.png0100644000101200010120000000352211277240313024052 0ustar docbuilderdocbuilderPNG  IHDRddIDATx[Wxfk{Sv"-H &FEpyJ@BBJ-MJR]B/і6 I[&Y묽Μ T(=hwӷIkόe {S#őH`q$8X ,G#őH`q$8X ,G#őH`q$8X ,G#őH`q$8X ,G#őH`q$8X , ZNjFj5m?$tRߟfXEmEFݪVj^w<?p}߱=m۷m2]Ãac1Ɩg+jD> cPB?q䭊|XfzwhDVuw=<<'_|e}^>r[5r8iozӹo ?](7br?wvy>!ʒM"$oNCQtƨ$CgΟ]w|fc0QYk_GD"uϽ ~al!wO sx'~Eq9wRZQd Fxz]ץ/{̻g<;xow]WU-$4>9EHXT޻?%9c谰0ߣ%ph F:c!f~ W0FBHUuDZL?vᑑ, ~~pDkd'~z"aX)z'L0$ŋ+S<о}B?owl}so,{~_7aʲy#L^[\87w߷>7jjW uY1a@qc1,ͥh󱝓l6ۃ Օ|T4f˶<#B@"I!ұwmڌJ<)H`q$8X ,G#őH`q$8X ,G#őH`q$8X ,G#őH`q$8X ,G0]"OIENDB`html/images/21009b70229598c6a80eef8b45bf282b-imagesetstyle.jpg0100644000101200010120000000510511277240313024062 0ustar docbuilderdocbuilderJFIF>CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222dd" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?;950Cncu}dxː6ҒK_`ꓲʙkސ=\HMj??QEQQEQEVdž<1x\H n$噸Huw=d~`IƩr#H͸f"AQ$| C͸ uv뇸q(rI | C͸ uv뇸q(rI:> eᴚo,.>n# 23*u訩N5`]5gƝ.:fMQG|3{w,~F$0@s4WϾ?GQE}}},5M0oa=zH߸U$f ^}هs@2pbI-??׮EQL xcTvAI3p {(<1S:Fq',D#HK,,q&pQ@K,,q&pQz(xKoϛq&VpQOxKoϛq&VpQ~@?OkjmĜ* ̒I$'<]Mp$H:"22I$JǢ ( (5!05َ2~["ct"6NYWsFG j.!4<ۉ9fn$]e@?ax':o4o\5pu>s$IbRV)s^Rz/tbyap;E8^I'dr:֗= ߟ6L6a#-=:֗= ߟ6L6a#-=.&yۉ8U^$e?$I Ox\Wn$UxHtDddI$EQEQE j.!4<ۉ9fn$]e@'<1x\H n$噸Huw=d~`I_~Ņn$]]w>2pܒH_~Ņn$]]w>2pܒOQEW/i~n$#av22ݳܐ i~n$#av22ݳܐɾ'=u#&2||9DD9W$ppoΛrOx\Wn$UxHtDddI$E2B((<1S:Fq',D#Hdž5OkDmĜ7 粌  ]/zmĘk\=ÎFN{I< ]/zmĘk\=ÎFN{I( u/z>mę[[Dl=ÎFF[{mę[[Dl=ÎFF[{'<]Mp$H:"22I$@Tv6Iª ;($IǢגK]^3VU~Tޯp>ù 8q܊+^=r ,Yݘ'_ILa-n^]_ֹQE2( ]/zmĘk\=ÎFN{I( u/z>mę[[Dl=ÎFF[{mę[[Dl=ÎFF[{'<]Mp$H:"22I$@Tv6Iª ;($IǢ((ҳ[ )68WNnj h)$f >;*n}st4֫EUEljOx\Wn$UxHtDddI$EQEQEQEQE{Ï?\kZWmk$I[2,1fb(html/images/21009b70229598c6a80eef8b45bf282b-imagesettile.png0100644000101200010120000005312011277240314023664 0ustar docbuilderdocbuilderPNG  IHDR":9 IDATx=h$I> hA@Aa5Tp )*@eQIdOmHޕYm,HƁ84HUB1FB$B!רYTR?~ S/쬈Ȉ' Җ/E?ZׯUht(~^xxxm2!3Yf߿K%kaPT0?3y6K^_J (TL44ɲptq1R GeYFQ}yz=y1h#6GZ̟u||$yﲇaݻ/lgЯ /XN~t6]QD8V^S)UGQF|(1(z{VF|:~Tp>j'sE;݄aq^txn yY݃|\QՕ1b>ڳY\WWfpUu`?GA}j`29?w~dM\\P)&/lѯ /ǫ`.ݓ,|_h>۝V'hNd29s4a@eYZ__yAUUEQ)M!,Kg/lѯ v, NgO|/ˢՊܤgL$W'#$)El*x<i2Oâ,ţ;j,2s||p}=?;m []omIMD֞'" `o(^tj=SZJP}W:XyG/8>2Eǚ+Av䅴0>3CrҺ󫵡H}XMϧ*mZǹBka3=buaY_F2%%QJ[>Qt/)~d}ݣgzv QHz. /\)[ŬH>lݘ E ljE R:?/  Y?wQ?bq ybr&x;ƫ.$%zË[,noM[}z~[_-V/,_ׂ6xA>/ ,@[/߅`jgΆW╤wȣ7$_TixXpkÑI 5 !H{sƒrXzB"t9,-@֝~yr"4W `FmZ(W,u2 X (?' .֒JJM"IQЂ49bIz,+d"M'a2%W[` #;-jYY/\ܓ0ͤa7P~l-Iɖ"bخ) KX[bD`0oz#|p/AH(0W/QǟpE(hunHYy^LCcJB5/ogrT Ҿ+ekTd$Ѡ@ "$\-@$p8f-VOa\bWǺlsDT] ZXkjFDJxq8 +T̖HJ&jows8R(.߽FP_NonYL2MSt]Ly웛Y7$/gϟ4nzSМV+~QpUEi ~WifZv}<%TJQY h%_][|82# Y`p ( OG+uZa'j. U }us?zwݝ\8Afu":? P#M~:8@JSGuwӑd<>>~1'<`.jl K*~{mڀ3"'`jvRAl*VpE2{Qf{{-M9Ii :7{e4DFKfmY>N~ յ.]㣣#f981*@;8. Z t`~?r &e{fb52A%Ѡߧ!-RP϶(oC1JH4 jCAk׏X}~n uԉ8Қ ̳n:0r$i9J8]ONN;8AGe jIhWL-¥|>mEuipkrڲN\` bS(fAJY6\r 0 ]uHI,t<!h٘y؊IF2IFQeI** kp-ARU;P1~Q-R(R4Ks̀e[1,^>aX=Ճ)HF/C붔:СvA _u-S4Dj4f9 {t=IR6HpJ5IѶbmox(@^YFC' RvNLA\V* v0δomz+oӲRa0F=;{N% onWGe*c$8]z^%IB$ϓƷU]x |oڪN3 '^솱(,Yu@q>l e*nK6U[j1Ż ֭ok""cw(I`U5f9|t. wS{SO? NORN'\P*v'wP`Mn怛4y$#qLp:FNhfz)5Yvg21f:>9JR{>ɮ:MS3ƔٙNF2 SbdvWWC/d(N"0KpL1hz֘%8nL6I iEQ(M*<8Ir5kE~4c<6`S@*LAlRY#hvc ~'pJeé $EQVڗJ58WY0Te [MY뮗{HQt4tlvHaӉ㈂9Q1n2LfTGZ(r@i  <+ 5+KS4AHUۊ 2jfw&;NC.T J Ua .LTW뜭aAy}kCܱHBֺfeצ*J:AKD0O cx:3W+ Qg'JPHL`@͵"T`И,ǸY E`;]ohl544˭Rmi|Fbh! FH)T% 97 T i 62`R~Wx/)*.MU0B[;0X*Xl6. `ԨA,) h q-9jshI$>omzVd|WB V) 69sŖ+z\.s5/ȋp[cRS(IUHhG@,aNa;#X4ڎW8c&PL= $MXEafv^&"3Smi ǩkTeW6g4JTMI<*;4;_an4rѸa0!ENѻHWObvR:AӁels}kGzBJʠ,%",fUU ,@NCg Mime3r$e+ytejjj*EkO4wcP']!@lΚB1y N[^XH _GG&RkJjg^~ulY3cxoDwj5/ZxV/U?jpd'Jeӟ}k^+")*ˏmZIEYk'?Q:J 1Z7c,I%H.-^bXa°{||Uκ|oQH'V+Uz}C-VOd7/埙oX~'<,\/}-3+soɚ|ޙ <[6^aY6}vSw-EQH=qI߽ꅑ)H,l/b:/<X0p{{kSaC??P/-V_%F/6S{{~{{k_V^H9y΃ hq\?~~mXtχQ//'GGC=G#o|7B*>j r,{})%(]$i2ieb(<:ʲ8V)\){ {cDѾ1fjn?M,ϧIew'rү /XN~t6]QD8V^S)UGQF|(1(z{ Gx>*NGE~ppxt4ϧZ*\{Q:f7aFqW쉬KV'49: ,;~WQԛϧatHvw|^ex>&WcfTueLO{l2W.Մ\U{?GN9A}j`29?w~dM\\P)&/lѯ /Õ9A//'Vagʲ}w|nwZjr :M̥Oӄ#Yf8$+7nPUKPSɝn,dY%L*>m& ;y={p+N1A6A I_gbЋnmu^0@",z|RAgC x yJގj2I[7 ՉX9b7;xf?!RzL^!<.֞,C %H7ֽ %& $( hATs^~b$=2s0?kc #;-jY ҆X/ L*vq1H֒l9XFk| |@+ IIL>\Gʗ AWfI3*_ba3Pnzm٘4I#c"/.R\1|'|`m5)u HX(*`DRDAEʦNEQ4fIHJ.KVV+vD@`^ԗ"p!IQR""\k*~lO@c^X}gi 75M&$mA$jH )3X6sB-%7LKb /, CZ7:5I4(Ha?8 Hl")]7;lbQXXו`jMD< Ք;px"#65 76@$̌(!w,X U[)u-AL$H9Gb]<\ S}9W>U5&4AAucd8Tә)!/`'wRgc+&0Hr D P(sSUލbc4Ʈ$AM<yT@wZ96ӅrC (k"Au+EqhI$r_|lvA9M)O Gv/'.n{Gj&f)I}Iߍ.&?zwݝ\8Afu":? P#M~:8@JSGu5AoZ2\ВZQ<9WsQs킳53ҍqӊ X=ɉ2 PRAl*VpE2{Qf{{-M9Ii :7{e4DFKfmY>N~ յ.]㣣#f981r'ptP>g^fftsWր5)3X=.Gl)ܗA﷔,b WHr\'6 DTw?eiγy%afj[u"f0ge^:hɐٖe)g[ͷiiy҄P]! hC>jb\7I:niMEix|Na f9s%Ҁ ad''' ǣ^IhomzVd|WB V) 69sŖ+z\.s5/ȋp[cRS(IUHhG@,aNa;#X4ڎW8c&PL= $MXEafv^&"3Smi ǩkTeW6g4JTMI<*;4;_an4rѸa0!ENѻHWObvR:AӁels}kGzBJʠ,%",fUU ,@NCg Mime3r$e+ytejjj*EkO4wcP']!@lΚB1y N[^XH _GG&RkJjg^~ulY3cxoDwj5/ZxV/U?jpd'Jeӟ}k^+")*ˏmZIEYk'?Q:J 1Z7c,I%H.-^bXa°{||Uκ|oQH'V+Uz}C-VOd7/埙oX~'<,\/}-3+soɚ|ޙ <[6^aY6}vSw-EQH=qI߽ꅑ)H,l/b:/<X0p{{kSaC??P/-V_%F/6S{{~{{k_V^H9y΃ hq\?~~mXtχQ//'GGC=G#o|7B*>j r,{})%(]$i2ieb(<:ʲ8V)\){ {cDѾ1fjn?M,ϧIew'rү /XN~t6]QD8V^S)UGQF|(1(z{ Gx>*NGE~ppxt4ϧZ*\{Q:f7aFqW쉬KV'49: ,;~WQԛϧatHvw|^ex>&WcfTueLO{l2W.Մ\U{?GN9A}j`29?w~dM\\P)&/lѯ /Õ9A//'Vagʲ}w|nwZjr :M̥Oӄ#Yf8$+7nPUKPSɝn,dY%L*>m& ;y={p+N1A6A I_gbЋnmu^0@",z|RAgC x yJގj2I[7 ՉX9b7;xf?!RzL^!<.֞,C %H7ֽ %& $( hATs^~b$=2s0?kc #;-jY ҆X/ L*vq1H֒l9XFk| |@+ IIL>\Gʗ AWfI3*_ba3Pnzm٘4I#c"/.R\1|'|`m5)u HX(*`DRDAEʦNEQ4fIHJ.KVV+vD@`^ԗ"p!IQR""\k*~lO@c^X}gCh4"4$MJW\ d03*CP4YBm' F%|fA" RJJA)L$H9j# i\TD.OY+2aUH }^~_M7\__:>>pc GVo&gx-wyGӼl uSGt|]O6wwtz@VH9')x5Ҭx:fS^jXzo64Z 4h6=Jk(-^LY Ӽ\x `8%}&EQ+&_apL~:MYa> BY]mUoVh^{ڂՋ#VW,Ykt:-}-<돶((jp8(Ά[)C2MƧ< pc'ptS`}fflq6厱 XVX[vI_ѠJaa|=ZGagknc j6tup|Q BgelUSd,Ȍn>mQ[cgC1enb;8KBUvC˯A?Xbzo t؉(Ԛ$|<~CGsf9Xd %Ҁ}g8YC~gdzx%Eek"ؖ _q. ku sMfv.@U(CN/αjv^ fp0h9Oc,䁚zL$9<Ρ^Ÿql mayB_]k]5̇-@u{RjVۃ)ͮ? n^Kk,'q[LO0CcQTfOi<8t愊 JRnE +ۍpw aDd1v= 9}./%qsy:Mt4|6p.{5Io6In|2wG6K}(jZ|J,0:'Ffk7g8/MytO9 6Ό Xg\^=V[dg0K݈ 5mrxH)1 J ./nOEQXv3 qf0A0 4Mk"P$Hkyyvɟ1IN&ֽhau}?di׊HUnĺ|z*;lp+RInKI$ւdYbiR@%C1 '&X_|wJ]P:Zk=z3Vu,[bahMBu̠,_v̍Un-y-˹R…08/+J&*8+k򀊫F Q’`w$=gP-  d'=V/ban LnY( yE\咠\.1&3ƸYm'a7@$kYZ+VG1% .~Mbk-Pt"I,ACXEAn~?Zyn]du~7A%*g<l2X_aԆ:J0tEѻ>rZ5Y7zN"Nw=Vb))^d?l&֖e$O`r:۠*/-ǓW98 5#y4x+W۰+S IkuN![['/=Vo5,yz'R,KڕS5^[+063D·Y[5ƆZx\u>qd~dJvI=Vx VI)UQ L%ioxt'l}os%=V[e VoeXuMi"B1Fʗ>>GO^A>{L4r\.W |%>19 [Ni<ܠx) y㈵]0jڿ}:QF+ dM?/Ro */jfrz:_mlefߺz5q[,fť*`^5'̥;`:0Ey9G>OL&W?mnz>t=%drwyKGpr뛛 5LQ0\,fV +CIO&$y8<.>Ik}{*ʲpcK|~I Mu.`Maz dYd}y4!<7q<=9 +R)MKd<p$IXSivf"ZNxu5$7rH4c)!Ho|U煛Zni~rryi>G.n.oooZOJ,>MNƽϫ4?;Hg]\^Np=V Ayͭ_il.El=[9>8v(f;ȋ40zv6O ̓ |/ D?v%Ucg.+<z^P.нt @ }sstI_zJtuaxv;9_cHpJc-X0~#bo|4v;N1AA I_EǪ7y7R:/dXj'V:k7n޿֍ASoV.C$|GX;+'<\=v2џ?.~-L%ޡq@@h>{ Eeh4ֆ߇G<=?5EC5HmF v9z;V[.IJZ?|oKweOſ-C46޻$1 )Y>Fc$_~[d{`XxK]%C5[z{.Xn/׿Y}f 4@@? ~C/98x`7IPޓNGk].-XܻiOjIj|Moޑj4$oc< iˑIag~O. 3kҙ$m]Y.JS@Faq:Ig,AP|*/-Aj#콎e()5@& yf@ "\'>=V/s[!3$pOoܔlWהġ&O6*|#σ$Jݰ9il)Z-+j1OaOjm#rD*'%A2yb)OQM|k\Ċa1Pzm9ϓ8NNNi63(WUN[Jpn&d\z(8>^zNƬH}yqq: lOK k4 . PZR2[$:e:!VU+ђ{$AA A> }s@t$b [_5h wvc14yn~/B} n3d'75$+KbDR0e=&TR|ôJA R1H{¢*8uSQ}" C}`6Db Ih?HzٶUv5,vuҦI0W+/..>O7͇zFD<ĹI BD fF5s:& A-"<,HU$V pUI4"I)"1Q~$!6Õ+ȥ)kE7c6?ŷˊq5IENDB`html/images/c0d23d2d6769e53e24a1b3136c064577-hello_world_reflection.png0100644000101200010120000002256211277240316025654 0ustar docbuilderdocbuilderPNG  IHDRB pHYsHHFk>%$IDATxyTuo6=+00$HBM?ر}l+:DZ+J Yq>s[Q8vlYv䟣59֒h X æff~%U6 dXJ31nkƔҥکShnV.gu $ѵkq PJ-T"s`˖aWmv'eAxUFw( ? ΞU[ ز:%O_S_t%n}E^C{N"QЌ{EvF{d$,'￿z)g)i˂A)m%Y!Q]bL0cb2kmJ=KzI q2I\`bR[^M+*4BFruMcǼ >(hӣGhuו1vq6YDo^qM娒d q2GXY[ ̟//_nLh==mw횜D!>>>{wAtwDo Xhh(m=df{s,tb`V;I6l0&O7&&zK##뮴H[%&& ƍŒ3Ir7+Εf.ڻ ӍhI (XI rlC̙?ykM;g'XB֬Yu=ͷ.(ʬwWjoo8vN2_v횘wuUW3JeFNڽ;G@[ij*_bӝ/xGׇJ,V򑏬p]]{MzщvAZ[7~X13ǻq؉f<.5k!:<H2r*+)w8Y3Cǎx衮7 Ѩ\QA)?~7o?_d*+ :thm:b;UaGTJe¦}׮7` b @ $$Y S|顇:v T5pЁwv=TQ;۷#Ag ۷=*{ZJ&ϼ;?XWo[*/x9I$mxƆNX%NnkcЂ[(@m≮#GF|S.B6xĶwя!7[new{(e+o曻%۶կZ`&_~(gł#˽?]w]eOK]oE % ȑwݕ=~fޑUo;Ҹ~|}P4p#]iB/؏ܼqwrɒot؋/۹o)]\re͢r''~D"RQoBee/_;B,r/LUd/yfc /vO_& iݴi}ISgU--NFV9ޝ^@h۱C7۳Z@h5}ݳʽbHKرcǏۆ!*غ~lǎ4@Ӗ-C7iSچ/|A Ҵӌ[b"Aon\Y}<;/{{rG"K>!A=cż63'Nկ [nYy@~s}s߾;  a.x]yn(H|` 51Й3}sNAJ?{W~GF&'m> /(u'=Ǔ}rtt"tbRcUs3UU='ܵ(6_>LowHOO…{ /\r~㖛n65޷oՀPww_O 9380hb+cLߓ(X,Ǟd֌@q@lcqysQ03 B ~0s6xBJ(F"3G%d= HZ 0C$be6XB9ywq҄8,=r0h 4bq7HdR;#>c-6҅P^WriJ} SȑiⲲřR,$ӈ e۶mX˟I04 ,3n<)݃E$ug>} U2SU,?EuuC5BtZDj.Zt~̙SY;rd!H5vsͭ'J,[Vqc ږʻ%D3MIR6ߕ]̇dm(_\7g" ݧ]N&=T^Q}b" KE8.{pEDx2M%ab5ZYټf:'f˗]o-9s[oUW[ye9\Wg;6J ϛSB:4b@4 @`&&eDM9+YpX~TS\=3fq{frŋ Cko?ĉGg{ /nD3RV_o~ݡ2)M-EW#wQ[{o$d"ﺦe'\w[o<|K֭2RTuכ##G/x[Ppauc s6zh޽Ԁ#LEuzO|$@b{[Ĵ[j~pϓ~d<=keV:61yoj;?1uw3Ϥ(խ))Ȋuʁ=pIM۶|T ܴmqz/ /oVVN:S?igxotxͭVd 6ik{~{;ٻwؽnۧ?<[rv.p%WU"bw'2ZbA?Ǝ'Nx?3e۟\)™~i`EK Ws{'>i~K\۬oj_O=[.m1Oڵ5;s&3c˖O߰ßOC_wo_~,g;:~c?_{>&Ləf\{M'%-0B_ׇN$,dN0C yá?p$k%өKWGC8q>+ZU]00%/mmk|_{}Xy8CIÈ'?{x@qO(榛vcSk7l+x445]~}[Gt z_/w{yuu(N b׬wۼdIr/M&;돶oG9ٹO~|`l?oW^z.!ncUm۸ `2h*w1/wm۶64yX$^m>K-3R@/HSXP?{衚ӧNutdy|RK/Q_fq0,ٜs7v5::(wqCΜ9ڼysmfSBHoos4677777S׀ ˗/_z5;wZU]]u֜XqT*%bmmcy+5066w^4eY޲eKŌoٳǶmUU7mTYY9HGGؘeeeK,Y`qq;w&H$rwhn΃Nə ;!2E;dqqYYYΏiiH$"IReYeBc (Fm۩T TU~oR}Ar0Ʋ"$IRUUJ(h4:s!~H$"Nanu p]1&b .c,HBA(++dC*bP(;xc,6  ߛ fYcl?JIU񫼣####`ٲeѲ2 I&mBc,r$wN=s_l:wqh$^/]GSm^C{r*//O&Νb.Z49`2ba/^+/Ϸq]w|llbb4Mu@Yʪkj:!0MUQV S]tv2y55 )㣣axOuusߛ}}tZr*/-a! 8%c,L(ʁp]2M4dX1c 0wxD_i@$Ac㤒I-Rtwiԫ*(//w#WUJ5Md۶&qʘk0,H' #]ce u@txhhyBW>X mxQ!+%"Br034 c4 򊪪"˲&e% C}0t}6M ㊪JYQ(!tztx1QjQqC6!H1(ut=,44MDu]=␬txp011pռyP#dYĄWEK\t+|+dKCCҠՅQJ&GRpjQycYvf=%냳ccaƬ&`Ltg ՁRÉQ4*yeI-kr|<}p2M4cYOJ]˒e9ZVĶ,Rx`Â?`]c#b,>1az|lQ%uޟ!IjO**0ƃ==.!gn"QƵ:1d,֒I rEu5_¸FEIQPo쵽#z:͎mPdBe0q- LMiu%Q Gm't"F!?aLK$P0F8sCӲ+c,LR*_=qyUL:R㈢H3Mv(E2u2 CP$ S:zU./3Aŝr2s9۲mc5d9tYQ԰P03iD1`(Ba4ud9pXK&MMm;;ejP0VYL5u=~PB,]G(yW!kێe EۙeFlPM}ڽ!%HD vwWV} =!g=cI\LƎit.Ƣ,T1XXo&_+Q0B8tO׵u(0VC!I\OyFS]Ae0,]'}LRJ]׻kQ0E!רּlhLd<81$)|A{_)!`x{|KF)bLH *:!4wLN)p"yͬ?XkY0IRTUOT*ƘJcU%1He[`iw7(ɻg߰yY ! z9/'ڎM0(re3J{ֻgn:A z3J1R CB!#4ut4 91B,]}c3Y}B0{a;-4C^/{޽o9GPԬ" 񾾙q]o n(TU:N|p(w/G !mSBZPI6cv&p`PE8\KӨ㈒$grQEYv,uy]$Dz׶qj%83_ U&D m;2bY2\.UM$\YZV1±$D\8wLBd2e2QEcYbZN;C㸦DYF]TeIQLMi%0fiT LЌA$ײ\tNj@L)!V:_=0.\Q \3nŵ,a64(o뺷z u2}{ҋ#@阻bǝlqϸ,o$ G"4]`yqFY xBXPȵ,x_1+6I Ȳަk^GRC)iq]J(t!QQp:MlXW9E19)Kzuf`R+ ^`&,K4[T*dH$\ӜŻ핸E\w5C!a5yG}{D"v:m>>Nl[DYfeNN:Rc1:Q&"@4hkYf2( y:fLN2E}TmJ1@6 E=Kjۂ(zEKEAaFxvrhH$UEmNNښ`Pɦ)id S׵5-XQFFJ 0fFPBQa;.uh0E>ٌAqCU`MJ9Fy;"AP92)g f.4G 7J\]X$^ Cmۋ|`/ $i XeċT=je4 !XPHDoȡ%DF뚓Զ0){EKLr0bǓ{Ne2B@iR0W%7O5>%%#ٰrܜ?I[(i4ʲ E/=EܠkYK(J!cfۮecԶ S#IrBىBR8,u1 !E3)$o,P$ %pXTUU;tv#w/a3s(v/A0S)3"$颚*٫\߂43TitbYRhyDQP0\M2?XBR4qv䭡N׹`3ynlml1V# 'IWE{Α1M"$( 1 Wׁ1PA$!baqv|?o#os>w;œ.]~ϔ?y-P${ zf8?$8uXo>Cg\yz0K{(-x-lE gv0$4/MV@˺egj ?ms~~Y^d2s{p gu۬"I>PRЊƨ5Bu2Ǚb.ҴIy5)7/|Q_riW72;{C9j9Afv8vǸY̊,Tmrig3P.pThf&"?-psJܕ;؝0WT9y Npg NL|Ifs"J;3\{wU;p8p8p8p8p8p8p8 ?QIENDB`html/images/c0d23d2d6769e53e24a1b3136c064577-hello_world.png0100644000101200010120000001277611277240316023450 0ustar docbuilderdocbuilderPNG  IHDR`H/bKGD pHYsHHFk>IDATx{TT׽ǿ~ jT@X_Qy(`nĤ6iMduEI4FhFJ|b1`DE" ù A}:k3쳏 Bqt0AJhv% +$A*AL$A*AL$A*AL$A*AL$A*AL$A*S"HF;)C: B~TLssrpS~z ׭㝏~]Y998x1GTf_L 3qE+nNdHw|^{Np \ef:)?w|2(J-gm g`C~S> 4?.) V46+ppa{b̕uobw qXA ɓY1aUmH };S{;˟Gt4CBNӐ.NdH%h|^jmE,_~ltt8>?WנPo9n +`^A޷殮~?&!2=^nL ,Xv e$ 2xܹqqaAd OKD_vp5D G{\\2w) wv _|(mկ5ȻlF =&|##`Y-sK ??cEE!|<ĭ]SO.n>>k+1ql|e N*x755Ԅee(sh֭CܪU&{iOǍ%|1xe0`@]i) +?4f=<N\D.dg\mRSq*FyF$ǭ@(?s _A{]>Y αY^8;}Xpzx%F;/\@݅ 8u+a \t:ƦK2)R56^xmmGłhTѣĥ}8l $-p/;'AtCxJ ,:+5 .*G'r!.|z{zDǨZz!w^?lkÎŋQ{Xf-sk+>^9=v~7mŽE`1.>>r.$|5/͞kD ֆ~Eut=nG~Wq6Xw8La!{ >!!̧'0gbz@Jjt 6oO^Ϝ9?)|CCswGЄ /)ApRͺJZV9`WŻw2Y3W_!hxe=*#S}U۶RG)6mB3/dn.&Y]X^WWVJx]Y?ی5 pwgū!cS ڎ3AA7P97ՃGD&'!L.$6s~}"wf9mΘ`` x۬Xt+` t>4Yrkڪ]%M|= ?Յm.~ED-Yx>r^f[AY\PnVuj_4==S5 :7!w~,:-B(صguuk 6)ǂgOt[<۴g{ħۍƲzys*3ZyRR$۷FgCXR"WT?njU$j\~(6q 6ecDAJ΄(=|ߖ+wwW$=WR,/ķv!~5ꫫmވk~UVȦ?LZyR~m1]h4$p:+$R-cNumaS|x`܄(*ٍ,*+II,evTF6fɒN)=*wUhZ__D7./FGGK'o]>{g )3 #w(2ilQU^Ϋ*[~*6R ixjkeˋ5ZJɬ,Vݒ~KKÑ;'AR#q))֨w~)q }ɓ% ﹸ]na iP>XƆQjF[ 3\[YyvJJPuDO[娾pgPYZV}bU+B_R<}P_ϳ(~N7ݶİf(ֶgPEE H*8gEn4kܽx1qSZyn[݀ƃ# 0CM;m<.a`F-n/2/9g_z(H欆8"0\`#gӧZyc,!h'a\9뽥.a?: ֹ--2uk:ֹ#GJ_ȋ.J SW~#h8N<")̇F^~Yq1_qXq;o4vF1pfNAAc۝GM8&G` FUՐʃX[ξ7󋃼=eغxhognL̕KwD2^^LQj{N=ʌ˭NOg~S_Wǘf>cV ڏhYYF5u}lyeY?ۍOHtKR}#2w6mb*/_f̷n1kj̘0I(&*1>޾ r{VGGmLVT;4fۛo DΝvmY,q*n]$T2r%G|/P^~ꬄvb LX`1ǘ h^ut=_njva̞ ?14۬Yc;u`/iwȧRyc,9⣷ynzIJ]qJhZ(&zw ͆ /ݝY3LȹR)ut=555kNt;~L#񱱂7 I2)J]䌏O?eƎ3`۞z l6;O P O.3rǔ+FSSrrr_7o0CXX4JKJhOmm-ߏl`0=z4h",_A,֯_7|wӦM-NII 6Ynx f0ؽ{7233QXXh4DDD`Μ9x'(K<%C-4 ` FQf0A B%H T B%H T B%H T B%H T B%H T B%H T B%H T B%H T B%H TBW#AAڭ=^IENDB`html/images/c0d23d2d6769e53e24a1b3136c064577-adaptiveBlurImage.gif0100644000101200010120000001353211277240317024474 0ustar docbuilderdocbuilderGIF89axC736:79=:=@=??<@A>CEBEIEGFCJIFLLILPMNIGPMJSOMYQNTQOZURSYVWUS\YV[\Y\C~^VTbXWb[YdYWh]\k_^qa^c`_m`_rF{bJwiKzjRsuUpzUr|Uyzfcidblcbthgwljuee{ji|po|rq)7+;&'$"-!,!,)7'6*;      "$)#+* - .$3(:$4);'8%$#" ".#,!&&,(33>3<,2186J9N/@2D5JV&MK!D\‡\Eg;8޴?;PH7da6v5 >L3h#,{{|`d!aDdVfA\))`?H>"˨=0۬=C, ms1ڢS2҂ *.ă:'su]׷JQG_u:t Tw [b.^*SdP㐚Zԡi$3mHB8z!dse"&ldS9Ip\ ŴMsZ@h<࿹oqɓG<~ Bxpm\Y WbqhCA5A$'M3hY1Vou |+ R|)@mm{[PVĠ8z @@h  xhۂˢ4,b|ƛgWX 0fᛒ(8F)p,Z ``5@ `Ѐ>hP( p bO^"+HAhHb/&N1-˸d khE Bp@^ĀfcG+G ]x?.k Evat8@F 8 pY`',@f/c༄z<"`=jL0ȸEWn 'nmzF@>og>{ ;v8 0v <P pkP1 Zb C d`p2Z/. -`f耝v+zB@`,P0@0$pt@ 0"]:^+F+Y`ݠT$8 Yٳ:` Χ5[=6\Gn t?@>OV!⑛ϫB3ڸZϜħ,i k,X(o.bxo ;@/N* Vl`^J_ ,j?>?,e_>aXd r!t 4s ]s8~IF2d#}6 uUKG) fNUV6p)ג؋7iTOyupCRaXK~zYXfv 4؂.( lbO{ɋЖ(8VBy `z([pwodz'myi@qwvoQht -ɋؙ2P  @ p F|EFitq'KQmPV+ٍܙ3.gGXšvFk zh(G#hr`8ࠑJ fpsfcF e+Z d8،tS p8a@y5``aVVP ЩrFHbҰ4raO}Fb'&f@}k.pfdB GXeFb`:TaPhtP~J z5hfogm&aj]ťƣ3u-  Eʞ~\GǺ9'8ei5wd[P ~  F|p?;ʟsP Q?CSŠ]0vf~\w;^ = X5FiKFJ 5GDW5q*u8 WrpT]i8GSbFs8/vp$v!?7iY壒nD[ GڲGJ2;q*p{PYuYOeGĤXOHsRb`wffnKG8߂.tnd `.KLS~FO6$OT25S [P010;I cvOORrNJ iE QdE,K3F )@5Ȅ-D2-Ge-k@߫XE z PB8ᖮwG6_DM\ 0K p Djg\xtW֒(e1;@,OE[5 *%e FVc5J#W rCfD_ A[ 0 -L0`r]ƾS-#1f408:X-? Č۸$hQM1MPе6)5 c? 0HLXFn;-Ry2`ŌDL@ #PH5E1Ϡ];IDATx 0s*ONY f=~EBX$EBX$EBX$EBX$EBX$EBX$EBX$EBX$EBX$EBX$EBX$EBX$EBX$EBX$EBX$EBX$EBX$EBX$EBX$EBX$EBX$EBX$EBX$EBX$}< a a a a a a a a a a a a a a a a a a a a a a a a53c a a a a a a a a a a a a a a a a a a a a a a a ab& mIENDB`html/images/c0d23d2d6769e53e24a1b3136c064577-distortImage.png0100644000101200010120000000651311277240320023554 0ustar docbuilderdocbuilderPNG  IHDRozQ:bKGD#^ oFFs^ pHYsHHFk> vpAgok- `IDATxݝy?>sf6Q!(i+* A*Bh] UJU RUmZ ᘁrH)@B $%A fs\xf;;ٯx罟{3|¢JnˉüA*i34|ogx+qP:[NUg-kgM[*Kg?*Y$^Ur)ߣ(w6< `2}^S3$^U1ZxM2ˆ:NUu.m#&k˸&F3ĞĘ(U$qW{nv%K^#9WUx v+u լF~ ˹d';ؑ^EWs5w15}u(7p U/S 󸙛!qyYyeU5,t a}bmȋņW zR86ņ!22L=ieWU/ jÇ9.INv"@k,tְkc%uxG ^ֵ\M'9IkOE>.LA լp"?vՀs6X ʩW̳'=\̷ExCy&lF,TYM{9Z,=l4D 8sԯ do0cK(QH)l^.͖LĄ^lud]q\&~w=[yΥn]"bj;H,,cW$ՅP{#"ltmYAA24`;ΐ^csS#G r)2;Dc8zեjVRDEJPM $, JCGL"S$!uƵP}ͩ "< !t-jчx0 rG #.PF@6/~5s5TBQJO BSDDtr+EONn]G :inu՗xZz}jH J ${~$oIwZ#RDDmDoc~:C +JSh_(8#=j)A+LSݺ|ir7yjd:*h]H1լG^tTԦkvU3|y1F'Gg^fIO^~Cvj+asex^׊@%=͹Ols* G^ #GpkJCCEG@?8Jxm1D$D$(RBF ΚA.U[SU|"2}HFR+"E4#}WF)Q ,vdtf0@R%>W0Uo] 2/,9>7[5V|ݺ#x:Zayc&l!qrVK$2/S\[fQ秵b]ӑPkP uJWy/,SH"FBSg5s2C%T,ȟyI@&D^$N7a zcA顇$[~k6W@D6d|L"3SL% 6xOL9QMݐ~ԭ OB&H0d(/C6-:Z'x"Q"DE*-VY 1M G},6LdȣWz䧚ZP;80 pZɒ%Ϯ)A"@kTrd1QD,Ԯɑ#Kn- ?t d"E{-*9c[5[GV e)Q[9W$&K5唈C]3Hy/(ֽH`&bl!m eO?YV^H56S[`~d"BĨH^ih7;eҤXnT~O"B0&ܓF,QzY W"irȬ0ۀ2„zѢF,(s^SvhL-䩗'@dEThSUZ %qgS ycja^wgﻀ Q?x 2/^Qst*;]xPx!"=}X(1k5r੍$fsy!0S^gr8P}m96aq>=6Qu{>x#<2s+(,NQų@xOT&S^:kqer6S:8٤|uSf 3lSuF;ƨSabQV̀%tEXtdate:create2009-10-28T12:32:49+00:00j=%tEXtdate:modify2009-10-28T12:32:49+00:00ҁIENDB` html/images/c0d23d2d6769e53e24a1b3136c064577-floodfillpaint_result.png0100644000101200010120000000101111277240321025512 0ustar docbuilderdocbuilderPNG  IHDRdx(bKGD X pHYsHHFk>IDATxձ @193@k킜@A׶m yz@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ wG[y                        ׶sC<@@@@@@@@@@@@@@@@@@@@@@@@8?']&IENDB`html/images/c0d23d2d6769e53e24a1b3136c064577-importimagepixels.jpg0100644000101200010120000000053211277240323024655 0ustar docbuilderdocbuilderJFIFHHC        dd h?@Ach=,Oy6Ach=,Oy6Ach=,Oy6Aʸch=,Oy6Ach=,Oy6Ach=,Oy6Ach=2html/images/befd863081615f539082d9ff76bf7b39-zend.01-internal-structure.png0100644000101200010120000004410611277240717026362 0ustar docbuilderdocbuilderPNG  IHDRieBgAMAXG cHRMz%u._:oi+PLTE" )/'.!?'2/-1JkL3 F:'i&'>BC*0L9PQlKjqUE1fN9^w qc6O'N-I64Hm4i6m7p#s={4s,'yJ=Qv7LB}R+xb:bVV?mdDӔ~@(@2eJ7Z 6u S ՁQTO.]J;1Ё: JjDvoD@u*PUJ{?Fk`D6`5? q5QJ-3B h>3)MJ7a9 ~mRh9@TD6qri@& fD jA\&mR`v LD9@A;wnL&L @8U,PID6!I n9qʉN,PSԡ4u FfJSqX؍p X0TkFXhd4Py,RDpYr(u\ omݸM8]]+'N`IUĕ+@>| vR@肘1&Mićo(ڵAIԺoMs Hrr灊AQՐT+*qh߁*782 f:~@#4;7U`z҈7P껁 5TAdՐ6;AyP ҲPX3cMb?Ҁ77O8X*R5w u@] H I) HnČ4u FjJSqt i#w @ Ye jDI4)s]NPAJSӦRMaXfTJg&}be8:~@Һ7 "( ,S0Z>yhII4)m8BCHˆn X%F%&Ѐ4ۛ޼s:"Hj4Qh@?V͢4H 2Btaf4( O؅D:~@Ni] u% e;H£)d0٧4u Һ@)dzy OkJHBFU=҈q'5:~@tMiS!!^}bg\lה`0 5҈S;OJ z@Oi7ChCr@zH¨'рFSqk4u :a t#ԤMPڙi\H<7R&ST'!Զ">+AYwi@S{0=i<`6(t&9sg w  &<2:ЫS,'@ H M$5t#))m#b$J))e@)8N)'( -P. j@`zL) )Ls-mRX meD X0i$ l/  ' u݈ [7ݟ+LS΀ %:FJ:. ) mj"rJ t-M p*`M5( Ҁim81ik!g$%Ofÿބ?p@g3܃ϐ8BmP4BMi<TA `W*@r=zҎLed6"30ZO?OK*@5'<e@)½h`m<`J{}tPAfԔOLSz$ JcF'OhjJ;iЀ)h l1 SEJ S {x`]`V7HHi`zH`pIujhA5%ϫSV,J ]Ab őFMHi>^'vC4`Vk AEJ ljO^{ 5mwvSGSڠ"tX N5* I ΃7Wå*A)av>GSڠ"lTj*A0xv5B4 t SGSڠ"Zϟ|>GZcPo\l3)mPA^`V% PB aJ z4*BI5Jʉ0fت) jjZj+)'˜af04)5Jʉ0jj QSP # U () kJ @4XdA"# rX!ZxB 냉)Br\D)TQ-TQ(QPj1FW"`P4ԓ WЗ0yk+ubw~`Zʄa! xx6axdCUIo-^eQMٴYkf[DEy7m6jHݴS`PX\G7<(@RGi,dN2vd%i(iAҲR/LXL齙։CTVHOQ[h6- '($즵衼Eù;.4) 16lC 9[6E,P"R()( |1=\)  M4ͩmmk,L&0YsZ9fJ5C*%vJ@mP*Lpa=%$_*B@4~H)q1Ƅyv4IQa `Rzd.ҪUe7.$WRnDƧ"!nMI] `1iiC}^BSX2HhE;]$0IT{“K48($'-j  t5$(Ie86)®HA iv˗ ZHz@(1ƥƧkX1VPkB"P= oJCZiu~BIA-ᡦ &j# &-*QH[ ރtHij>u8jZ5J@P5 #M h zЌrjJS"id 4ȰluZ!J#@5j#NZTU`V=FnLÒp pJIJFUja`TZSSs@Ql6 i{M,v-(kKa_=fG+ѷ{(VY Al.ʡ |!"LMitTY A^Ki qyMiZ4/E񴑞+;1<K¡h=GzJH iЅ C5h6@V$wԪ(Aiڐ=2m4 Z51U3S@f046:r;h Ɣ@Fyޓ:)c[ztX1jcJ zF"1=biW> 󰦴U:G*) r"T)-:p4 ) (]5Ne @TJ,t"Kx*#) t 0^`P4"7] q@琀 F0 7n`P4"f$Ђ: p`.>F @䎧] AM46!HZi2 5`P4Bn;mRqTB~:"QFtJTv%N`]HiD9pj#* t*;JK'T0`P4֪2G`:A{B: EJ z, `4 DJ z `4 DJ2m#) r0є6) > <'53: )m:єF #EJ `J<'֞  @F a~$TvdU@`@EJ\P ~S)'8Ԟ_@RAU=)z`#Hi4BS5tD* 6hJcXiUDNnQ#D"HMi@ )hϟf]SȔ/ 9D"hJ35@!Mz f"ϗGOi#Hi4 "gp; I fJJ*&Ԕ0 @)yl3J :R @)m`]l3F4<>iHi4҆$/&Oa`P4MiCSaAh4 Ip3qEJє6D]K)Hi4F) FS"$oT4uȦ>?~~rP4b@.8g_#?s N(TZp"4uݻ7Qj\o$j:v7G@Д6HVxO-SIKigLgNj'ڠKi '$}ƚ`{$)"?Q5=AU\@xE?&j MbŘvHF9AG `?_ LM Ldϟ>Ot)HIi)Ki穕҆WR @ĉ?P7LTiD`iSPݠ&%jU A ? \a_,j]]vt٭ !QJSTJi_1WC| :R@!{ăHiX ZԘ[ }*)ʓz'4p:_`) KiR)|&X!=0uC{#]jJ90KA,ɠ#S@S !\N|Dꤴk+ tB) g!)(5ͦ4`bT`hJ`4¹u:` 6btPOiHzjWENMT2~> +zdɓWDBdRF^A%a&A,(i~s֫W&U# l04UC21Fd Jd,T+$EcBU 3LC +vb $% ,+_!9f ) VZ|K,ޣxpk}h4aMia$8)CdP>dWEA<"P% cP@R0=v'h)m24e>;u `'pR2#!MW$.h3h( Ϡ,Y ?C82 2ylAZme:HU< sHű4bx,g|6c?G3ā`Kii0Pe6)T9^1S*ZMu0VKϐ{"PeJ<I(? isAXjm?cvWB :Rȅ;m~'0`y6/Ӂ,'oeax&BcJf޿aǝĠ1RG28p)yc4yOwAB 0 VH]GRI,鿧pGYyФTEx]+ h}`^1?.ji=iN3 Ĥ 7` CY@ 0YxZ5Iޔ@ ='3z`S)ɮ R䁤;-LU_G+Tfl.a$4I ACu}ϟQ֧>cԐkOp˫K. OQ5>@ic -`3g7p;=P7  xo z`$|,Ug|TT*#&46zrSLi96l) ||L!W bcIi߀uog{vXg ? ?}Lo`%{`醒a -؄qP[Scc##C95T]3/n|:<Tc 0() B=jޔ &,Ɛ 1ɬ=B1lS:aPNiH}u@1eqfn1g ? HQ4OxJBIi,:p Ј(ӘIHig||ZZLì>NAu@8A9ݠDʄ: `J335='?:ۏo>۷O?O`6P÷@??ze?(e4!e "!l0O.8f1n(d$LCJhvfd9֔6R) )@ZRK@'h)ϟn~zlOgn~za;pI8NOA#e5ex{{[*Hm   Xi" X,Di%8lR) ڤ44=;J Y~(-;'Ǡt5v)?I/;lԔSB)vSO͏sLę3]y@ҜW2!Q/#rR='Ս3͐k߃e>J޿i)$j㈴TE1-ra@ ~B@ g9@ `#@MiHk㇣IqJs4,s0 )m'tw>쳷̟h`a666I2ޟz8=QR)hO[g;g"lO*M ٟ!< P"twtPz[,InRbxAZ$YNk [|#1<,FTJ;~mPVk5)A{HJHj@ xI60!h H2 Jz t l,( ". "dd`C\fn (f\;PYF4*NLFV@ke'*i`) %Sqi`b#-ß؛q Ӧ1HNCE[a&X5 4%45 $bs}u7kn=ASOirm.Cq)5T;3ɥ&"AjPz4 ?e \#=aa==a|R6iM|p=z@i~Xs5% 5 s % s4 4İ4R30#Mu 4adq)}_H;G.Ҩl5ᔆL2`c W*&|:UuqG'oe))͒ &M9q=p)',΀-)7*gr EȔF(&\j[MFJCIdL E(HC)@4"%G @Д0]A ecu Q`?A̕dC,* ى jBS$F~O`R_܌ FaP[ UؔF~ORS&;dS=anaaHg"M%7$6/1 FcaB Rl`P}.!&,PbLc`Ǒ@grP; &6m7F%1S`P4؁iOp{|z6Oi 0C* a)MkJ7= ?gb ٽ|{,+؃^ TgaqH813a ̻Ul4PgrLrz6) <\d&+)MDk:&Gk`/wXdͳ.1Ù{/Yg^0{ތ`B͘=m&e0U!d%i\Ml4āi'A|=6ԓ9HNi1YJj=vnHjBNkԦ/̍% 5h ?? @>T?sLk rh =P$`SZ " yHiNpCKi sPOP#-B;;RZ&4g.߼|&5C~| |UQHIi`gx}S?`VQ#10ΕA> 5!Fn <0J V>܄^}~[Z3A/0Qb8RHOix;0q'q&0 RIA D= z(D62˴( R3g.DQc'Fj g&׀ (!B߃W}߅53IҠQg >C:)!yHiӐOp KiH紑N&4&L\ M_? hJ) ps8@X!~; 8t0"6Pb*& x<$C!_4z4HG5nd"Ijt3АqyɫHh):gG)mҊ0npN{2k71@ܦ؋4@gI ? R,F&3AjO==P%~F3e8`n==B4 l /A2pD7D@:rKix}Wh}RQXGX[#ҀHhܘ-}p * ]zϠ%4a=Eh{̏?~|52&CZcf   4f(FY=%$ LnܰKisAO8`VQ3HHif^E}CSpB;I7$jBaJu: ޿~?sɟ4!0gLE 0 3gx ')) yޒLvc` JhN$O: ;B<?`V :kVJ-@ng zBQwOЀ-@Sڟ|`9s)Qlpro?:X+:3\y0VBQj5'vJcrJ7?iHf:`J h1?z?",aXr8%)ALqBʴ\1HziԊ!@ 0xb&3`m铟DA | ^'pXXmx ޟ97&ғaރف *Ը>a˭?g|3|ȼ2Y.i9NDL|dBn#iԊn2S| @YDOe&ؔ^Ԁ =8RA`9.iC_2;` 5p>E )hçk3\QҀ,!/\`6AeT0Mii/L c A6$L) ^;0z*3`B4Nl;:4 1.N|@gSSOU]v9bK2Q YG 䂎v}R| i e݆2RJ#fˆNi!;#zR&|hR{Pyzp)Li??~"noQkdU0Dgghc@QJ# ) ><Ӆn9\GbJC*]?Fn}\ Tu>>h~ ҝhm3TjÙMs3ૼ?0jf`ܯ)&2JPmZ{XM\JLٙ }P$;TgzkQ0K3vvvԄn<4~?T=-[7mئMWwvI- ԭ'5;3;j~jєҌQt6RAԠ:Q](<\R&X``&?X;6=$'nfК;Ikkmԍ ێseIij86_)۝%%|Õ^.u4Ac) {(J?5`m"dvg._ }2 8m3:wx#蔫@+.gfil[:: 텘B^HiH̄JiHр%'Pzc7=30, MegP{pyصGe[&2'\) bCʾb(5N{ACZHi Pf°4>(x'O <}Ќ { l!הjidz̷ɟ'x?\lJx OXShH;+N)[aKiH\i5zJÈ*MdW=Sz$4PiհI @>xO |dP3j1 3vpK[J#t R)'4`tcOiT-aDAMA0p %]i@AjO(sgϞllAA Hz 8zmJ#L+Xu&)畧h) [D W!%B `,z hh1#?=0L{CH(32-*1eY5닏B:&yNv K⻟.)%QQS?Q;"5""5** ԍq4mԠgpg8s;@ /܀㇠}?|~ b> B㇏gNiW> 4hg|Ç>|8+EVD3}R`=MHA<;m~6b|Vlcaኙl)CS8<ᾟv)p r@xtՈT  = +-n<:"Cl]`i'@1\oa3?3Ac|s* `T/ ԏ ṱ`(ta7" #?S`IiҸRd4MiT φ`@y-.%1 >[PK|TQ;w.;`p"s @@ r#; 1iCzdF# ㄄o.x|s1"z=䦴B)^Ľ"Qt:`NENii԰#:Jpc ͂WR c|;9? R,ΣGg =GL5bDiJI(, &x\_&6!!!2 *OC)B@bKlFMiPs^ 5EOkގ&@9`~rᛟ@vRyyAJ N4m<ӐRvZr-dH ^:B{v3w%"Ay; K QSbj=%"ZIJ淟AeQ>P ߲   ,@WBp=!1 FϓPR'pS}OXjC=BG'?\AIi^ eu&LcxpTO=vmG' V٢q?CݞOp4ApL"y1E~J6i\.n/ nIm4̔O_QRRx Gy0#/@1pc`PT 0m"l$Ԕ&c07P+S4 8g@n19괹y ZlgPx؁6q1O$bATggX:cHikiiMzz[7kM?~<>9;1ENaJÞn ɰ҃ ^tZ6yO|9$u~Q}[ < xRX1߀؍ooeg.aX{ %5PTPV}6ZYb/: tMG:H/k9) i1$5|5A"mE(LgO(/̼o1fZ} %קE!M;AYkl}K!`M֧Q i(Ӑr;仆A|I8t2/6`?X xIE-5!knKHGREh ?oNyp j3|etwm v;D= C>`Ig5ۻWTppl`ДbIi .);~ :vĽQ kH8FQ|~"&*5.ϜF28O =_:v=~~P=59"  :4."zPtaFMb? z4#LW) &tX0Kl$[J-LRyDJ іl m R@/)L0`*ָIDǔ9v@tLi ]I`*ֺs@R@3j8JIiDה6+@tNi ]G}@4wJSPP&F[0̰ hJ Q0Mb?є6"Mb?є6"Mb?є6"Mb?є6"Mb?є6"Mb?є6"Mb?є6"Mb? ڤ4lF(EhрԑQ@t!~$dXlu$V6~A\Ѭ#Q4F(E T۠+: ԑ@d#wjPظ+f-%EeV7֑hQ4@Ց#k?{D_ԔpRh~Ƭ1e-ԑF(Eha#ɘ | /ρbe;D֑DmUG(Eh c)u$"H"y4l%rUV.5d"WDjEhQ4: ؏pՑ$zG(Eh!Rk/j;HsdHjrEh/1&@Hԓg Dr @8kEPU59F(EhH!ZlB#|$(G(Eh\GˣhQ4F!בRGQ0 F(`?:rQ0 F(@: FQ0 F(@H#G(`t#h`Q0  u$cpG 4SV`ܩㅁ5${ix@Q0 F@H"$I@P/-UG_4jj` ~#hXՑh$P!Q֑` u$@SG `1B:K^WمXA0m4L#1hVQl"ճm܏*F(RGip4YSi,.r*zT٦`"d#.[j'0~c Q0 F(@H#HH-WNE!TGb"h,E6Oa; F(4: PGa@ՑxT֑d؎G;@Lw(`@HfI*bk)թdh[GH#1 ֑Q0 FH @f`ߏ$|\6E/0!5@cQ֑p0UbՋ?:(JX!3 F(4: FV`H @H @ŘfRXD]ts`d0Q0 F: F`Q0 F:ԑ4ZGQ0 F(RGh9 F(`H @u(`Q u$@ԑ`Q0 Fu$@ԑQ0 F(# ב4ZG.@qQ0 F( :Ptp6ݬ0 F(@HRGH?tv揂Q0 F( @JfYG' WFOV`m`Q0 R8:5 'ȵ~a ݬe(` Ց }܏cT R`Q0 @h"PGb}܏{I`Q0 |u \g L7+(7gQ0 F ,u$*pxX1Q? F(4zQ0 F(ZG(`(@u$@ב`Q0 `VE(`Q0}R: FQ0 F(@*8bìh`Q0<rG   FQ0 F(P^Gh9 F(`xH#G(` O@y @u(` ֑ rUGh9 F(`x:: FQ0 F(Ցh'SGh9 F(`x#h`Q0<kvh`Q0<u$@֑`Q0 ':rQ0 Fב4ZGQ0 F(Xym$: FQ0 F(pu$  H#I.@+0<|1 `HDpA#F xB raχF2Q 46IKH@dL C= u40#mǵ }:؈#Vu$j-Ҏ`0G(V (`Nc#Pޏ:'.XP\9e0v0>*>il$ 4ZGQ0`A$ӑ(Gh9 FShFOG& 3at\(S!^#;Ub%߲ .V;Ȇ2ʸR`=Yn>\Ufd}t=,+#: "ڇAGNص@W׵%(jKU\zթJʉ9js]E_q2_kqY=pvsQ, ‚$82IpVFH$ܨHįTwA3ik2u…: !@\y^ 2 w9~$ާD2 0H;0B6ԔQ!VjNT;τGtjַf! RNi/TB?KQYdo3+yhI)RqSё؋UJ"Ū&C ~@s!UKD%Vdv I+ @_C0Q}XJOJ\R e%P1M}MI@S꺐*N£bR}Ap90$^~$I ((G׵`$HHxTͧБd !@$)ƪ?H)u]H'QK1 D:EdRQhp@y? FH:I2p$%"m$xR;> $2 xxG@^hd@a? tUR̐_Eo./D$YR}G8y˵tQхr1 @|Ap9H[Q@QPޏ JLģCE k@ǐ*N1&S~ⲅTߑ*Nq.*'1]?,1F)II"QP؏~00FcuH]֥܁P{pB&;Zf"KE]&-wb%V*`#1 k7\Ldԣ41fo8=s\WztHV/y^T,e!j:L#mJMbIW!/n'?h#"suI!? 4G:`Р  @u$hL 0ZhPP؏:~`40hI#0ZhP(GhI@LRM`Ht;Z F j 4ZGQ0 (u$}hA@y? FHzEh1 oo$#h,\FQ0h'4ZGQ0 F(~$@֑`Q0 ' @u(`a (Gh9 F(`x4ZGQ0 F(~$@֑`Q0 ' @u(`a (Gh9 F(`x4ZGQ0 F(~$@֑`Q0 ' @u(`a (Gh9 F(`x4ZGQ0 F(~$@֑`Q0 ' @u(`a (Gh9 F(`x4ZGQ0 F(~$@֑`Q0 ' @u(`a (Gh9 F(`x4ZGQ0 F(~$@֑`Q0 ' @u(`a (Gu$ lYjiTxUu/Q0 FDN%81`Ļr{yQ0 P؏ H \MciGQ0 F%~$@VG⑥[9>ZGQ0 F( P؏ בh#Z00q"F Kb5Msz$&ɧXUb Q0 F(p@y? \Gb30.b* <*".<"Յh~'2l`Q~$@Ѫ_* .B|K* ]YsAqhQ0 F& @DkqH,zNh9 F( Duxq~\GĜ:rQ0 ##bHYt!1=]2GF[aQ0 F2 @T>gMˀ 0E j$XaI.Lr 9xX`Q0 HyXk ZX4 F(`H#G(` O@y? wQ0 F(~$@ލ5 F(`x4ZGQ0 F(~$@֑`Q0 ' @u(`a (Gh9 F(`x4ZGQ0 F(~$@֑`Q0 ' @u(`a (Gh9 F(`xDBY? F(` >(&1+D"%5 F(` UGRޏ `Q0 Fj. 4:9 F(`x4ZGQ0 F(~$@֑`Q0 ' @u(`a (Gh9 F(`x4ZGQ0 F(~$@֑`Q0 ' @u(`a (Gh9 F(`x4ZGQ0 F(~$@֑`Q0 ' @u(`a (Gu$p) Ѣ/vPnE5 F(̀~$@SG1B뀁 Q0 F#:v F(`H"DgDo pYr%$z`Q@O@y? G¬9mIF`Q0$HtM* @tIu(`A(G#P.O9ZkQ0 F`#ұVb$.+h7ڭ`!(Gkv*WLe\4)`,ZbQ0 F((G3`Q@#@y? FYt`Q0 F& @_G69 F(`P(GР#G(`Z 4ZGQ0 F(~$@֑`Q0 - @u(` (Gh9 F(` 44HZ/|%(LAbN@e@=aQ0 F( @CJb4S c,ZE8z(`P؏#AÑ;D$Q0 F(d4ZG`8UHl`Q@  @$ב3glj(@6m6sDo2$Ց'Q0 F(dD1L46VxLCcZQW3e&j{Q0 F%~$@\GbVudk#H@|-HFUh?rQ0 h(GHdבp.h"d"}R9Z/Q0 FMHu$ VШ?: F(  @GDSG1#x]`Q0 (GZx1j \"W@g8ě@ ߍQ0 F##7sQ0 F(P؏ATGR'`Q0 #u$1+`Q0 0HgQ0 F(d4ZGQ0 F(~$@֑`Q0 ' @u(`a (Gh9 F(`x4H:,vC(TG(`8 4TH:lVrQ0 F#h`Q0<H#G(` [@a? FQ0 F(Pޏ:rQ0 F#h`Q0<H#G(` [@a? FQ0 F(Pޏ:rQ0 F#h`Q0<H#G(` [@a? FQ0 F(Pޏ 2H$R!XMEM _al(`  @ԑhju %*j:`(`DrIN!+U% 1j`@a? H#q:t0j`@y? SGb**,6H+(/c qI~c:wڅǛ&~gQ0 F #u$Zq[U1M +h ZwV`k ǧ&u(` @y? \GSX*ɨ~*/0<57Iw<SQ0 F(̀~$@֑&&å~`j`Y!׵:iWG6TK(b\BO8cQ0 TpHY!uGbQ0 _4@XA7_GL+zF\~;VQ0 F(TpՑDsvb*Fc)T@.Vu}p\ UÈ)AgQ0 Fב4z^`XkQ0 F( P^Gh9 3F(x@y @uds8cQ0 ב4ZGQ0 F(: FQ0 F(P^Gh9 F(`xH#G(` O@y @u(` (#h`Q0<u$@֑`Q0 ':rQ0 Fב4ZGQ0 F(: FQ0 F(P^Gh9 F(`xH#G(` O@y @u(` (#h`Q0<u$@֑`Q0 ':rQ0 Fב4ZGQ0 F(: FQ0 F(P^Gh9 F(`xH#G(` O@y @u(` (#h`Q0<u$@֑`Q0 'VpDu$@֑`Q0 '` `VDBl~A&CvXVh aQ0 F(Vmē"@܏T@rW]KR<Zk(`RIKH@c=k "Cz(`H#fh9 F( Pޏ r :git&.Ÿ,?K.c1gXq$A]gG(` (GH\ ŹbLpUcM Ih9 F(T#H8zb=6u$.Aa}D""֑`Q@ @a?  QaB$R1=3בMr⫺:rQ0 (GH"+J:Hw(`JHUI)b*V`ĘӏԬxZF(`# dGjm!܆Ucq9$ykq9oQ0 F~$@: F(`x4ZGQ0 F(~$@֑`Q0 ' @u(`a (Gh9 F(`x4ZGQ0 F(~$@֑`Q0 ' @u(`a (Giu$jPZg HQ(`"H~$4"EsG(`  @#v!$U(` ~@y? FDIЊ:rQ0 % @Gbνo.1^/bDQ0 F((G u$ZmG< -Me)ʕ:yQ0 FH"Idg u$INGQ0 F#ұV4Y@+$21^ U$Ց`Q0  @#B:>uh9 F((Gc00I\Vc):o[9 F(CP؏ 7̑U\ʐhI?`,ZbQ0 F((G3`Q@;@a? FYt`Q0 F  @_G69 F(`P(GР#G(`4ZGQ0 F(~$@֑`Q0 ' @u(`a (Gh9 F(`x44HZ/|u00dQ0 FHu$6P28՘ (; F(~$@ dI]]H#qh8 F(P؏:8c`A(Gu$<< 5 Q$X#b> F(F~$@Qt*UD֑,SSGS=Q0 F(" @$בe=URු:`Q0 h(GHdבp.kDG(~$@ :>uh9 F(t#H\h (Fu$V5$U(`Pޏ J׵"scD0ï`,Z\%˜Q0 F(##7s6 F(Z~$@ :2㴣`Q0 FA@a? h^G3HQ0 F( Pޏ!p(`Q@ @u(` (Gh9 F(` 4ZGQ0 F(~$@֑`Q0 - @Cb!`Q0 HuQ0 F(HUvlUe@U(` f@y? FH9cQ0 F`#3ͱ :Y?EL밺F.c1] !D Q0 F(DX5\xD֑dbu!IN\jQ0 F( D#v#dRfHL Q0 F(D;DT@x%G(` DYGRPXG`>uQ0 F~$@ߏ*V`pY\\\ɀÈ#Tv.G(`P(Gu$֑I\"l&h'ک0{ Տ`Q0 (#:kF)SGR\`Q0 #hH3G)GQ0 F(X@y? 3J$ ~4l0F(`P(GP=|Q0 F((Gh9 F(` 4ZGQ0 F(~$@֑`Q0 - @u(` (Gh9 F(` 4ZGQ0 F(~$@֑`Q0 - @u(` (G ud(`Q0"Ĭ:(`Q0PWIy? H#Q0 F(હ(G|(` (Gh9 F(` 4ZGQ0 F(~$@֑`Q0 - @u(` (Gh9 F(` 4ZGQ0 F(~$@֑`Q0 - @u(` (Gh9 F(` 4ZGQ0 F(~$@֑`Q0 - @d֑ H¥'pCFʛ %e5ٶ5` @y? ȩ#JU !Ɓu y` (Gu$:yЮ[WT7 QQ0 F#:"AR֑`Q@k@a? SGb**,6H+(/c qI~c:wEЛD-:gQ0 FH~VVy`UB% Z%UK)aǏ(`P؏ *בָJp2 OMiGA,"UXű(` Pޏ:R_$d:Q0 F(' @T^:$HΦ]OF;u(`@HH\5 bxf+ biV/׈/$RXC`F1/G((Gu*?FS1[;.ñr/Hr*V<ыU1.O(` PޏZ;Z] KF(` 4ZGv0ZGQ0 Fy~$@֑Ck`QP؏:rQ0 F#h`Q0lH#G(` O@y? FQ0 F(P؏:rQ0 F#h`Q0lH#G(` O@y? FQ0 F(P؏:rQ0 F#h`Q0lH#G(` O@y? FQ0 F(P؏:rQ0 F#h`Q0lH#G(` O@y? FQ0 F(P؏:rQ0 F#h`Q0lH#G(` O@y? FQ0 F(P؏:rQ0 F#h`Q0lH#G(` O@y? FQ0 F(P؏ H$_?찬<ף`Q@@y? HGb*b9%BGpQ0 F~$@ :i-ȳ ]XE<`Q0 #h]u(` 6@a? Y0Rә+.Eǜa%ƑuX<`Q@ @T#qU$h5sQv 0MU7$]Dvu(`P؏ # ;\֑I4H0ZGQ0 FH"s$GU M_H̨^G7 ˉFQ0 F( @T#<(Quh9 F(GbVxHt 2 b,_v+G(`Hkv* '.e\4~u0-1~ԎU(`ב4F(`P^GЈ8nQ0 Fב4ul`Q0 FX ֑4(Q0 F(ג\B t!n`Q0 @#~Q0 F( :rQ0 F(au$@֑`Q0 F:ԑ>I*D`0xP $`E @u$Pw0?!h?3H}=ҟ0J`:r hTGu$nÕ@*KJg ֑Pe9Z0C y@ H\C 3'q ùd`) Aȶ$$NJ(1sBb} xL)x]T#d: ;gp0BQ7h()1DC=H1Z؃@bI cF]ȂCm0r`MFS1ׂ7rD\T@.;7]UL_(P\3B"g0-,E{~oz#s$g|u$ddRM=u$d^GB:O59ZGב\z"H*GHkT?Tt"#1O-Pb|:ޟ"]dԑ9O$ZU#!$f 3Ln#1ARp%1W}5)J)YWMP*mכZDT񻊓|~GsnMVd5@^H-*n@Gbfd`na Fnh3pi *>kpDcA`X#I U@Xa$a_*Eв3+s|M'OVq H4P0o"Rd$\dME7j1RȀ Ì$U9'mH9 `RG9V=F~$d:uIVIP ֎Z/X-"ޑ l2݈{$.=0f%QI r?|$jߎ$+p5"W~x ~$P D {Oo2yuZ9 @8H P Kuבx|$bwt>b0u$z1:`B:"Z?.= &*H{+\#9[`@D!$P`k?HX+jD>i,ufYG~$X+G:\Ѣԑ@##׈dATq$~+F: 󑐎&vh I=@r r? N 0@D5B<x_6>ʊ&{#<$$&ZG H_?r?,C;shI ZG%P?S/֪ OHG2Q0 Zlܕ^W! bJڧGHHY ΆH@(_ &$ `V0 $UAǘ ֑&, IL0J`Z!RAb h~$j ם!vi 1{u~$u.>x{ MK?<$X+@a_ &-pHuI`'(f?Z!$.DwK[!$UHXI*Hd3qջՑy\"ב ?[CZմzb 1H=|8P PqU9HuR=9Wкz2QL#4 b+: PH\5FCi 3/F( Q: FX`Q0 :rQ0 F(@: @uvG(` u$@Q0 F(;0X귞PIENDB`html/images/befd863081615f539082d9ff76bf7b39-zend.05-reference-test.png0100644000101200010120000004634211277240720025425 0ustar docbuilderdocbuilderPNG  IHDRauаgAMAXG cHRMz%u._:oi+LmIDATxb? F(` @ @(`Q0 @}}= hQ0 F(0#h`Q0  :~Q4F( lu$H? Q)"?hQ4Fr @Xʏ"ˢ!{iQ4FB$-HTO-]u$@aGՒh!֚УhQ4;DnU'.: #`\тubAªbQ4F(E kgp,[ E|$w(!P<$R?F+Q4F(u$L\u$@ᙏDM‡jayEhQDQRGbUFL?RD2qՑ 1R) 9zc+f%U ~s>F(EhрԑQ@t!~$dXlu$V6~A\Ѭ#Q4F(E T۠+: ԑ@d#wjPظ+f-%EeV7֑hQ4@Ց#k?{D_ԔpRh~Ƭ1e-ԑF(Eha#ɘ | /ρbe;D֑DmUG(Eh c)u$"H"y4l%rUV.5d"WDjEhQ4: ؏pՑ$zG(Eh!Rk/j;HsdHjrEh/1&@Hԓg Dr @8kEPU59F(EhH!ZlB#|$(G(Eh\GˣhQ4F!בRGQ0 F(`?:rQ0 F(@: FQ0 F(@H#G(`t#h`Q0  u$cpG 4SV`ܩㅁ5${ix@Q0 F@H"$I@P/-UG_4jj` ~#hXՑh$P!Q֑` u$@SG `1B:K^WمXA0m4L#1hVQl"ճm܏*F(RGip4YSi,.r*zT٦`"d#.[j'0~c Q0 F(@H#HH-WNE!TGb"h,E6Oa; F(4: PGa@ՑxT֑d؎G;@Lw(`@HfI*bk)թdh[GH#1 ֑Q0 FH @f`ߏ$|\6E/0!5@cQ֑p0UbՋ?:(JX!3 F(4: FV`H @H @ŘfRXD]ts`d0Q0 F: F`Q0 F:ԑ4ZGQ0 F(RGh9 F(`H @u(`Q u$@ԑ`Q0 Fu$@ԑQ0 F(# ב4ZG.@qQ0 F( :Ptp6ݬ0 F(@HRGH?tv揂Q0 F( @JfYG' WFOV`m`Q0 R8:5 'ȵ~a ݬe(` Ց }܏cT R`Q0 @h"PGb}܏{I`Q0 |u \g L7+(7gQ0 F ,u$*pxX1Q? F(4zQ0 F(ZG(`(@u$@ב`Q0 `VE(`Q0f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!iu$Wo< HD 0n`@Y!u$VAihxd}7ZGRa5H7 !M `V4|ȑ  #XAF"@Qah2`e0Πr Q0hRB^0ڻ%uPdR$\g86d:IJ]><߅3pB@!S-$I6 +!1GjݏvMb"ng]l;^4oOfp|ԕ CnBMzmzJB[:mZT=P }1 kׂŎK)2Oxp&Y~^ (Ud[~&%F:U!a$nSW£(r_K :'Y2H'ÿ(BTq*:tĈ RM 8H)j $PW4x^YmJ N+c$@"5d )zG}GfT<3d F(`"@֑`Q0 F`VDujdRQ0 F(BY!u΢ïS/Xo(`Q@9hLQ0 F(0+D#G(`h`Q0 @B:rQ0 F(  FQ0 F(0+D#G(`h`Q0 @B:rQ0 F(  FQ0 F(0+D#G(`h`Q0 @B:rQ0 F(  FQ0 F(0+D#G(`h`Q0 @B:rQ0 F(  FQ0 F(0+D#G(`h`Q0 @B:rQ0 F(  FQ0 F(0+D#G(`h`Q0 @B:rQ0 F(  FQ0 F(0+D#G(`h`Q0 @B H܀^'KF(` 9Y!iu$A(`Q0Df@CG(``VD|VTu(`Z  SG"OL"&X͇6: F(`  ֏Ĭ*$j1#3o/5(`dY! HLeHK`Q0 c#hp՝":ZGQ0 F( `V4H#1cq Q0 F(hB HSX+-\* Wl,r6Ѯ(`LY!kձp@:`Q0f@Ԭ#s=46 F(`0  SG9:`tuQ0 FY!X`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`VD9;hijA>f`Q04f@ԑ :xǠCcwQ0 F(B r΢#R ~(`2f@ՑdGQ0 F(C`VD:Sփ[1<.9`Q0f@ԯ#1+̺4\U#~]@]DʎQ0 F( B *בXPkO`Q0 =hՑMģr`QY!׵֑`Q0 (:#rO7$1&`Q0 F(D  sVYLXX v\p1=_`Q0 1hQ0 F(0+D#G(`h`Q0 @B:rQ0 F(  FQ0 F(0+D#G(`h`Q0 @B:rQ0 F(  FQ0 F(0+D#G(`h`Q0 @B:rQ0 F(  FQ0 F(0+D#G(`h`Q0 @B:rQ0 F(  FQ0 F(0+D#G(`h`Q0 @B:rQ0 F(  FQ0 F(0+D#G(`h`Q0 @B:rQ0 F(  FQ0 F(0+D#G(`h`Q0 @B H$@P*ΥQQ]K]UvJ':c9}#w4 2 -&"@֏Vj9 z4bA&XPO'7:?Y u$ ^ B0aY!Р#ikm(6\H~>9zV8uIv'n5ĵCH4?`y֑hIi Fx#IvtI"@V$ `MD$Wo$1_]Z(B,(t2r 9aMb1C[c!2CL:1*=g+b BFS[?,#eu6҂mt0yZ(4zʢ7ubA|RaoRU#_%>A|#1,V)cOЫ [U]|9*wQۊj H:7 n Y, ?"*IҗP˶儢'tBOwڮ> B?ݮ6)6frtkyaj>?Q{XgX}hz5> i4m(ss:v'vP﹬[Dd6 *a>b*TH:8:?{#vaCJ|]\=mF:E0lS$V@lݫt?EfR KX,(U[55U ~r8 `1P?U˦0xQ]gY NcUNhz~# -`p>Zz]uP"LDR!@slWz|q @] 0.B,e@2#Ӱls5,3j9OiW@}M(_oϚIID"g_7'Ma:r/fk!- !5#ۀ0̇N~K 5V+KEuB1mKXe3 HƤ\o KXdny%-'Y-NxQ^Yt@;HOrlg$pX@CVl`5P ޡQ0 F [Y!p# *!C‘`X0Hu:vGAQ0 !:G|D,1+Du(`Q@9h`Q0 @B:rQ0 F(  FQ0 F(0+D#G(`Nu$.Q iti(` f@#^o; F(`0+Dw?Z֑`Q0 0+D>u$ph9 F(TY!Ew,#`GS3HF#G(`P0+D"Zۡup+åw u(`Jf@ՑXۈ': F(``  ]I7jAQ0 F(Y!h9 F(`f@Tƣ`IXh9 F(rY!ֵ"Obd 0`5QXIQ0 F(#`V4z^(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!Eu$~ H"WQ0 F("@QZGbU\5",G(` ZY!u$>h9 F(`  PGbj*>:: F(`0  Ȭ#XB̮$:MFjx|Q0 F( 0+D~UW59ZGQ0 F(:2Ml|< F(`0+D:8}`Q0 B 2H\5DQ0 F(4"@\GS֑`Q0 u$\ KX(`"@PGV0U1Q0 F(B3G(`h`Q0 @B:rQ0 F(  FQ0 F(0+D#G(`h`Q0 @B:rQ0 F(  FQ0 F(0+D#G(`h`Q0 @B:rQ0 F(  FQ0 F(0+D#G(`h`Q0 @B:rQ0 F(  FQ0 F(0+D#G(`h`Q0 @B:rQ0 F(  FQ0 F(0+D#G(`h`Q0 @B:rQ0 F(  FQ0 F(0+D#G(`h`Q0 @B:rQ0 F(  H#pz<.`Q0f@Ց٣`Q0 F"@ :rJ`Q@ Y!XQ֑`Q0 h0+DN<1Ɔ`&jc5n.{(`0+DZ?CԎ@3h֔`Q0 f@4#1aVo*"-c/JzQ0 F( jG xb*Uw>h9 F(lY!#%?:9 F(7Z1|4Ĭ*%8 F(`  H#O%bp3_U ۰G`Q0 0f@T>Wn|Q0 F"@Q`v(`0+DNIhѱQ0 F(xf@wcQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!mϧI;9gQ0 F"@SGb0xv5 F(`  9HAFF`Q0 "@VG#G(` uY!uHLeXnE<tj挎Q0 F"@QĬx0BLpUurv); F(`$  \Gb>'b@D"PuH֑``Ie`VD ;C‘`Ѥ2 h0+DA s&Pj pBʚ ِDC ='ih'L,HU"!c~3\= ԯ ~0vF6˕o#1i:@c#N{DiL;ʓ)9 }nCw"RG&'qTJ?| Cȶʣx;< с]> wڇvΧvPiFr_pB163+l7 ㅨ q [G7Cd徣\/!F ^Z.<"% \N㑥Dx)H0+DV4)ۉw6y%ީ`$  XɀTi, h;deXƒd-\HˉtaEIN܏lg< 0+Du$TDJ$ GXI$F ěOjXQydHQ+i$թ`x  FH&$ zI2'4Z0$|RÊ*#CZ!G1&O#IN`V4HbtH5,DEgM/IQb2~$F  *.ȐVQIHF"@ :Tc)oD:B/ @^L#I%}f-\H^(@8.'ϝD2JB# `V44HdKΣ \_%H5xhBlA#N˩#b̀ztOp9uY!u$fo)F2 cۈ??yR@L>@dhPŅxdIH|~\&o#y81nFV l')": FW8 E+eSFp4;[k2ёɝᕤ A<,ReSЖ*&$˭Pu!.DV kK`8< F&hԑtvh59 7Mɣ``  iu:r c0G("@ :3H'r5` Z0ZGQ 0+D#q:8fZ:rLY!#$+`:rLY!`#n-PFpzBAZGQ0 F(t"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y! u$^@ 2 F(``VDr?#CV6ZGQ0 F(lB JH"5֑`Q0 h`Q0 F(`  6J2LXɫG(`f@בHUS> F(`P0+D~?&(L `Q0 "@Q>GyQ0 F(BY! H 5#I(`Q`V4ZGQ0 F( Y!MֵbK=.G(` f@9bLxTb `Q0 FB3G(`h`Q0 @B:rQ0 F(  FQ0 F(0+D#G(`h`Q0 @B:rQ0 F(  FQ0 F(0+D#G(`h`Q0 @B:rQ0 F(  FQ0 F(0+D#G(`h`Q0 @B:rQ0 F(  FQ0 F(0+D#G(`h`Q0 @B:rQ0 F(  FQ0 F(0+D#G(`h`Q0 @B:rQ0 F(  FQ0 F(0+D#G(`h`Q0 @B:rQ0 F(  H#pz<.`Q0f@Ց٣`Q0 F"@ :rJ`Q@ Y!XQ֑`Q0 h0+DN<1Ɔ`&jc5n.{(`0+DZ?CԎ@3h֔`Q0 f@4#1aVo*"-c/JzQ0 F( jG xb*Uw>h9 F(lY!#%?:9 F(7Z1|4Ĭ*%8 F(`  H#O%bp3_U ۰G`Q0 0f@T>Wn|Q0 F"@Q`v(`0+DNIhѱQ0 F(xf@wcQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!mϧI;9gQ0 F"@SGb0xv5 F(`  9HAFF`Q0 "@VG#G(` uY!uHLeXnE<tj挎Q0 F"@QĬx0BLpUurv); F(`$  \Gb>'b@D"P F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`VDBɀţu(`  H# G(`! 0+Duh< F(ZB 2#I4H1 F(`  SG"OL"&c.i(Q"8uQ0 FH"@QA1oA3kn͹5Y|$y-#|YFG?# ?f@1=0#9'å1@Fua$*LTaKvFBάQ*5ҟ>Z~7 G@üuoHpY5DHN#*H7H 3RDDL2VP̞!ar#$ G^K 2B`VZv:XHb~$yZu$A5X;vhLcxGz '🲱Vt#qB\țD&Q+};5׈\Q3@-jDABC=2,_GhQH֑쎂S< ,BhH8oD+D pA{ HGRXGG$'$?2h(a(kH 1M@(\wvTc2K} ԭ#j$@6M/Tc}]+GC÷H-#}$ҟ0J`TkTmIB,mTT#!c%I URZLVG[qP^G+li}GTQĬ#hLFCi 3@űV} \"Koh^AbZDPB\ƒwD1$ HB#q5J Q0H@F͊ԃHcyQ0 F(@: FQ0 F(@HՑ5`Q0 '֑4F(` 0;qglLIENDB`html/images/befd863081615f539082d9ff76bf7b39-zend.06-variable-creation.png0100644000101200010120000004613311277240720026100 0ustar docbuilderdocbuilderPNG  IHDRauаgAMAXG cHRMz%u._:oi+KIDATxb? F(` @ @(`Q0 @}}= hQ0 F(0#h`Q0  :~Q4F( lu$H? Q)"?hQ4Fr @Xʏ"ˢ!{iQ4FB$-HTO-]u$@aGՒh!֚УhQ4;DnU'.: #`\тubAªbQ4F(E kgp,[ E|$w(!P<$R?F+Q4F(u$L\u$@ᙏDM‡jayEhQDQRGbUFL?RD2qՑ 1R) 9zc+f%U ~s>F(EhрԑQ@t!~$dXlu$V6~A\Ѭ#Q4F(E T۠+: ԑ@d#wjPظ+f-%EeV7֑hQ4@Ց#k?{D_ԔpRh~Ƭ1e-ԑF(Eha#ɘ | /ρbe;D֑DmUG(Eh c)u$"H"y4l%rUV.5d"WDjEhQ4: ؏pՑ$zG(Eh!Rk/j;HsdHjrEh/1&@Hԓg Dr @8kEPU59F(EhH!ZlB#|$(G(Eh\GˣhQ4F!בRGQ0 F(`?:rQ0 F(@: FQ0 F(@H#G(`t#h`Q0  u$cpG 4SV`ܩㅁ5${ix@Q0 F@H"$I@P/-UG_4jj` ~#hXՑh$P!Q֑` u$@SG `1B:K^WمXA0m4L#1hVQl"ճm܏*F(RGip4YSi,.r*zT٦`"d#.[j'0~c Q0 F(@H#HH-WNE!TGb"h,E6Oa; F(4: PGa@ՑxT֑d؎G;@Lw(`@HfI*bk)թdh[GH#1 ֑Q0 FH @f`ߏ$|\6E/0!5@cQ֑p0UbՋ?:(JX!3 F(4: FV`H @H @ŘfRXD]ts`d0Q0 F: F`Q0 F:ԑ4ZGQ0 F(RGh9 F(`H @u(`Q u$@ԑ`Q0 Fu$@ԑQ0 F(# ב4ZG.@qQ0 F( :Ptp6ݬ0 F(@HRGH?tv揂Q0 F( @JfYG' WFOV`m`Q0 R8:5 'ȵ~a ݬe(` Ց }܏cT R`Q0 @h"PGb}܏{I`Q0 |u \g L7+(7gQ0 F ,u$*pxX1Q? F(4zQ0 F(ZG(`(@u$@ב`Q0 `VE(`Q0f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!uHU)e jC--C( #Gp"@QZGIC=uP70mh@*`VD~Id: F3*A0ZGHCC‘`X  Ȭ#Oă?rhF%Fw`H8xH8r KY!9u$)x't<ͥh(֑Z" !F Ga 0+DG͇ :rh!bC‘`X  H#K3AFH:!bC‘`X  {euFJݓK7R("B }i$xjKh/+9/8m)ALyrj\Ab+8[91ALW.7 uux+1Rۑa" V0IYqKH drwyPMN1HhQj6"+' k8 B߲?.#{eZw)q= OHB%%Ж֗k%Wyw MM_F͞J/gU#} |2H0^~\xu$~e)E^\RzpY\qSDZJ(BD:po %*1*|v0AAws(WF tu$”A|⏌)lA)afX sNM!9ҹ )NPҥe2\<|Mf~q^ p3'y"E,Qh|G1rW ]ྌ5%YO6+U\oC$Ut*>l9{V5^UA {@ -*\|GDxܮ5SDp$餲Գ$KapuY /t(>A1ߕhz"aq A!d؅?!d8yz/HOx(<'*NGEpF!#İJQb5y65=IQ@kY!`qaPjwцCd*4ݑ Vz:e'x;ɨUP[rJtĖH7?@t:<HJ4%zI5$( i2B;InЖd'I&յ '_u0y#U$?RF( 0+D]9 v35*#$>cqL kvQI^H2F\vRW`m(q ~@Z qI)1'HXy邰d.~4Zjخ+'<鲲RMCWhX"Dtr4oh#/!{e붮ć6ƨHC?r&C|j#Qe ׬ 8uQ@`Q0 F`yx  FHjr Fs"@֑tu(0+D#9k! F0+D##Q0 Fuh9<f@u$3F(`B:`trFs"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@$ԑ ].<БD%ydaQ0 F=f@$#_㷑,-,F(` Y!А#(đu(`4Y!hI)#G(`x  hUG2 "ePI6bՅR, yx"pQ0 F=f@4#1+!X-RmSGc>fmxcð`Q0B בk8\uZS110IE_`Q0 0+DZI^|`*|<ޤJi(`"@ :#R .Qn> (`"@ :#^T񨡤R$/`Q0 0+DN&Y+1u$'a(`"@Qz2Qx"CbO|lLx!8`Q0 `V4z(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y! u$n@;٣`Q0 0+D"$`Q0 (hhב(`j  Ȝ$ q(`a0+DN<1Ɔ`&j QXGQ0 F(#`VD~$4QDD8uQ0 F"@ѰT F!fHLLP(`0+D|$^& :;>ZGQ0 F"@ :?`Q0 F&Z1k#[S7Sع`Q0rf@$בvq$ؽchVXEQ0 F(#`VDZ֑V`Q0 F`VD:rI=`Q0 3:u$GG(`8hnQ0 F(0+D#G(`h`Q0 @B:rQ0 F(  FQ0 F(0+D"4t5Vw.y`Q[ @ԑ :vQ0 F(`VDYtD ԅU:hQ0 F  H#qɎ֑`Q0 ::u$2c1E(EGQ0 F(pY!H W5Y"IE|M#i(`:  fLJmi)1u.73#I2lQ0 F("@Qgj*Z G^G%<`Q0 0+D.xdɮW$|~AL6.D`Q0 h 0+D=|Q0 F(  FQ0 F(0+D#G(`h`Q0 @B:rQ0 F(  FQ0 F(0+D#G(`h`Q0 @B:rQ0 F(  FQ0 F(0+D#G(`h`Q0 @B:rQ0 F(  FQ0 F(0+D#G(`h`Q0 @B:rQ0 F(  FQ0 F(0+D#G(`h`Q0 @B:rQ0 F(  FQ0 F(0+D#G(`h`Q0 @B:rQ0 F(  FQ0 F(0+D#G(`:7s2F`Q0$f@ՑٴXǬHU@(`0+Du$Uh9 F($Y!W#x0ZGQ0 F(`VD:t k&j8ţu(` f@TGbV`h CX֑`Q0 0+Da Yu(`:  99q$X #G(`P`V4&8ɨ#8f`0+DVe8ԝ#L42% `i2?{f)1WeK5̆_jPF(9+<󳅌əjDؒb+Hiܓ.%e0n]/Q|FP-k7+fKЬx|.x 8^:fʾl5I&OP2x|JW3Y0v>ik%iU2a "H8CFRZ )Q̭jȜ7J!X ٔiZeP>+ƆVkXK/AW9 oqjfٌ&ؐTx9SRd/҄o.׷|x)[lc ^ثb`CeTT`g:oC arD?+[%QeRGe+?n芷h+͏CW ui ݚ a3.?͔ɤ!g0ɞ;Iq.vo^x%:)US8*A](KSFQ'J"yxgIA)xb|Jd4]P*+? x`A_nO9̦i];2e$tU袳^L+ ̒{RbFF`XV7 |Ѕx` nAZΐȺJ&@~ɝ?a^Cԭ(#]m`0h!h΄S+%\ LK_Q^0j7cRaTzAّ-S(d ?pI‘' $H$'ɔ{0jy&S}era/& pxa۞2YahL@3قVv.Z+D̾@)M%+QVXlVaӰ^ /C0Hxo$Se{ydNmB+,V&t,41 [p~9ǜjWeW!9~!n+w@n.ZxdCH0~dp)L)@$QL !Fi=lY`$#  F(`  XQ0 F("@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4H(`  X9 F(``V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@$ԑ ].<БD%ydaQ0 F=f@$#_㷑,-,F(` Y!А#(đu(`4Y!hI)#G(`x  hUG2 "ePI6bՅR, yx"pQ0 F=f@4#1+!X-RmSGc>fmxcð`Q0B בk8\uZS110IE_`Q0 0+DZI^|`*|<ޤJi(`"@ :#R .Qn> (`"@ :#^T񨡤R$/`Q0 0+DN&Y+1u$'a(`"@Qz2Qx"CbO|lLx!8`Q0 `V4z(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y! u$n@#b53 * *e|1 F(`H  H# iYۑQ0 F(#`V44H2:rQ0 FIB 2#YGP8``Q@!:u$H: MpqsOI2ZGQ0 F(.hՑMpQGqh9 F(#`VDup;GxL{`Q0 1:T"qQ\}A.pUXUbF(`4Y!k퓍Q0 F(B j֑{`Q0 .:u$`Q0 F"@ލ5 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@䟳`Q0 h0+D"z M; F(` `VDYtD 5 F(`"@VG#G(` uY!uHLeXnE y}MF(``VD:T:Zo.T|La x|`Q@uY!HʹĨ$14AQ0 F(T"@QZG2`*)b J<ƣHv\LsF(``VD5;e:Uj LKpwId;T_Q0 F(':{?pUT-j8<*I5l`Q@gY!p)#KvG%QCL-H|Q0 F("@Q,:\:S=\vaK V A bq `Q@kY!`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@u(`Q"@֑`Q0 F`V4ZGQ0 F( Y!h9 F(`f@$ԑ \rTN`Q0 :u$$.i8V႘FaNb%RSG(`Y!J?LF4MQ0 F(#`VD:S. ~WU 13A`Q0 F zi\+$Hoh9 F(#`V4O|Q0 F(B *kŬ;o:OLarQ0 F"@\GJqĥ`iZ%cwF(`Y!kZG XQ0 F(pY!5V' 6Q0 F(B ԑD`Q0 BѻF(`h`Q0 @B:rQ0 F(  FQ0 F(0+D#G(`svT \G(`"@SGb0kQ0 F( 0+D",:" kQ0 F"@VG((`B ԑʰ܊qLJt`Q0 0+D~Y]0Cd6IHFQ0 F(B *בXPGQ0 F(Ց4H218ZGQ0 F("@Qy]+HI*D`0xP $`E @u$Pw0?!h?3H}=ҟ0J`:r hTGu$nÕ@*KJg ֑Pe9Z0C !Q0 5$P?~Ν0?Kl ABy3'$L 0O Z E:M#s7 un`?CH<ԃŏ=$D0f,8?T˙#dK>E#{-Vw$.Gp)kL7'IehYIj܏<ڷ# \sȕ5 &*H$SěL^VAb:3##Ru$6 `I^L@(~?c"֏FdBI  HGCD<c>}DH5 DF-ڏD>R8֊D QDKFYAb֑< EW(u$~?oHl5"cxDUߊQ0D«F|$ 4ZBRoy\`܏;h< c8sOaD%pś^&O &+: ׏.ː&0ZG֑!1q'ԏԋ$ґŪw 🲱VdweUHeo e5)‘< @b֬B׵ªIp $L?AI#pU1#~$u~ K}B#(fVT$ !uxjGH5!#DHGj`I:r?^ABd$1O9 @׵Iyy{4q1|$2RG-4 OVH $VHI:b8V L\.%hu$qu$wD5e+H: F4`4F0TkG=|R]E :FkO$EE(n,}Gӈ:M r? :Wc ?D`0xP ˩Q0 dԬx@=;G(`t#h`Q0  P9]Q0 F(`p` @hQ0 F( z:ȍIENDB`html/images/befd863081615f539082d9ff76bf7b39-zend.07-warning-messages.png0100644000101200010120000001556111277240720025765 0ustar docbuilderdocbuilderPNG  IHDRB\QgAMAXG cHRMz%u._:oi+IDATxb? F(ʀ Q0 Fl @lQ0$h6`H6 lP?F(9l FBcȁ(E#!gcZC'r^ˢ!y{4F-IMZDх{mr,fQ4hYYHv"U=y@t!gc^`F. :ð;w! &z%e D@Cr2Zx0R?F(̈Y l @xu2Ml<$cUFLmor5l @jc)| !zjx縸X7h$G1mB 1T#Aj6/K;u$>FIh~lk< dc d}=$' k`#03|N&nƣ<4P٘ Ɛ:! pRh~̷RX2b񀧃Q4рdc2oh̕#r~Xhc!')Ƙ&#DpF3rnţ,AKQ4Gdc\`mޘu)og ь:hH`eHʳ1@YϨ 'xxPl-4jj4S@1@ lLFRu u4BDN6FkS4`mW!#S0-`!F /gl6L l6٘vcD~c8>gwxĩH2Tx{IU? 1Bgh4cgIKeg c d.8~栱)%;Lsp  .q" XDdZUM&qK#i 0,@|2&2Ob321 Y2|G-4rr8a)2 "451uK0̱:ty (tccڋ "K(!hBX\Aq<ka@XՃty c6 J"43 rA?W#[Awk"dmn_>;}]qdViBNh92X wv 5# - jр!0,@fF0y Ftkj igh4Q0fl< Fy F(C `Yƣ` 1gh4Q0fl< Fy F(C `Yƣ` 1gh4Q0fl< Fy F(C `Yƣ` 1gh4Q0fl< Fy F(C `Yƣ` 1gh4Q0fl< Fy F(C `Yƣ` 1gh4Q0fl< Fy F(C `Yƣ` 1g;z9~.3`6 HV$I,cJ3܈wHHiD< @$h<r2كhn#Ʃf jfce*V 4HdcV YlL$H͍0,@Q-OfE&Fy($.RM$R<lgh11ʈɮ$O&O%٘R+cLNdXw0y (ZEPVŸLc25ĈXe<>"R~[pt x@ّXJ;* S`Y]S= Fy F(C `Y#َ`Yƣ` 1gh4Q0fl< Fy F(C `Yƣ` 1glềp59X8l YS g'8uIFso/6$P0,@fc=Ҳ ic)z0,@Q!cz ǯS46%}i.A"=BPSX%NdX8 X4V밊)dq9.{t$Mf Ҳ1f|\l"RV6 !KH8ⱅFC2,EDZDab2 .4{ 9V`3٘nlL{UdIB3M[0Cp+C=2lxZ\S d4!U.E54'#a{BH}cGCDYK 1ȚȈ-1r&L<_mܨ"B1~%X@d6Ƭك1ZR]C200eL& ?\`@Ub@aÉB<9L/`işò1@ѯ6N[501@F11k6Ɯ7/O4$AS2 k3 Ά1<o @fHgbaBF5@0Fc@ kcH Gd`HNd`HH1OlTj`NGC>u Y/h6&nTC0$U b!c%If*(q-&@B<al @[# 2m%$GE Z\E#kY-%K;yx?,ND`0x\Q0"` a4G(]1 F(1@Q0 <0l@dzIENDB`html/images/befd863081615f539082d9ff76bf7b39-zend.08-phpinfo-output.png0100644000101200010120000005326511277240720025520 0ustar docbuilderdocbuilderPNG  IHDRI6(3gAMAXG cHRMz%u._:oi+V@IDATxb? F(`Q Q0 F(`ăz` -`Q0 F(2і(`Q0 @2 C(EhQ4FBnH? Q)"?hQ4F(! g@("@Hsa4F(Eh rDb@P_Dх2 camF:G(Eh!-[!54ɳ e@ M6rh;F(Ehd_ Wπdх,@8@Șf26F(EhDL\-³y>4рϣ-Q4F(E+eU1cM@3i !k q&{ M\\ZCQ4F(Eh@Ѐ 9`х,@8 K ꑍ e_v4H2|Q4F((4P-ئ KlZR Y@VƬ4rq -Q4F(Ee@@a3 @pRh~l `JaUXjQ4F(Eg Hr p3@XEQ4F(Eh"@amQ4F(Eh!@ F(`Q0be@-Q0 F(`e@-Q0 F(`e@-Q0 F(`e@-Q0 F(`e@[hjfq31LLdXr4쥧u6q6 F(#@ZDTˀ$qbA WˀPU-Q0 F(2a2D#*pe0 F(@ZDNm1p<   S0-`!F F3 @ˀZ24A89b["DVaco jF(B-hРk@ (&€  1qFpeADYV`hVw(` ա2A2PVϣ`jh`@і(`P ա2і(lꏂQ0 F 2`v@ Fܧ(`4/Te2і(-Q0 F(*2@[ML EˀQ5 p`*H:- hP F(` |62і(`Q@C0Z4(Z``*0@^ Kˀb`Q@U/TV F[  F(^ҹe@֖@ FmQ0 FUPgE3>F3 F[  F(^ҳe\Ohh`@і(`P Uz HjG]i jo@ Z-ʮ9@.`Q@u/T֘@ `FQ[Vz[Ө1 F(TBuho*:f@ w(*^1-і w(*^1-\+G(n0Drq4- xTb:MS A? F(^1-L Sp Qįx6:b4Y71 Ъ"M` W/T֘@ ҖZ<>fVZ/Fkbp9V1!h)Q0 Ck O?hˀxp[2"h5e8V: \-82 F(6^1V-і>q tkQL F(^1>-\ Ո4Ͱ)n qվHmgT( Cz4( ա5f@e R&c?:l@42&$0<E*#j I\LWau)q}3Q0 FpBuh j1 F(`P3і(-Q0 F(*Ck F[  F(^1m(?2`x: he0 h`Q0 3A2w\`4:F(R1-Q0 F(`!7f@-Q0 F(`ȍРhԏAFcQ0 j61,-Z: GW Q0 FUPg?c42Ppe0 F(TBuhh`@і(`P ա5f@-QG[`Q@U/T֘@ FmQ0 FUPZc4ZhB0EhhmQ[ p F"Gu-y`TbL(Ck Q0t>1\ZHzlf-.!RL)Ll+2 ģ}Q@ Ck F[Kijoyܧc>)cX:+x Hj \)lQ0 F~/T֘@ Ӵe0$$h'n&ؖh`a 32`@x+f4-hTj>-1E> j&W"0݃|&#ShX]+l1]K Q0 F^1; 0CJMn:,\-MjRYtn'p21 ڈ@<=<=DOF3/C^.׮V+"? -2o\QDL*{Ђĵ ́Te_I-d/xLNd-E3h`x: h ck0`Fa*Sx\28}ڴ vhqUXc 3q .5bMaE-Wt$1F(PZc4Z1]bcL6 q J.5+Aіh`BuhkS_SH>Oep*+ B|-N%$ij NmQ0^1t-x/K%~06b%1  </X)u =<Y=+`]YbIĪ 78& e2V 7; F(  ա5f@e0x*lP FF$e@@KG(^1m12ƀF-M mQ@/T֘@ 2`e@%D;$9 FBuhh`@2`x: he0 h`Q0 3A2w\`4:F(R1-Q0 F(`!7f@-Q0 F(`ȍРhԏQ0 F( l h 0F(Eh 4th`Q4F(>c42EhQ4@ F(Eh"꣡;f@-Q4F(Ehh`,qvAlROF\r "rܧh@ FHDu Z݆)GiX4r>3Fc42E# *`k(E 1mFDmQ43c42E# #΀ w.OQ4@ FHD 8.!|❁|e@11F3і(Y/#UIq#ǵXE ByRD٣h 1mQ4Lh7FѠBCw F[h 42EhP;f@-Q43Eh;f@-Q4F(Ehh`Q4F(>c4(ZG(`a uܐ3A2`Q0 +rc42`Q0 hܘ@ A(`4:F(`f(32dNQ0 F(@B-h`@і(`P ա5f@-QG[`Q@U/T֘@ FmQ0 FUPZc42Ppe0 F(TBuh j`\M(̻Y*(=\>2t<0M/!EdWObtQ0 FA/T֘@ `V~Wd1X}:mAw+Tf@-QG[`Q@U/T֘@ FmQ0 FUPZc42Ppe0 F(TBuhh`@і(`P ա5f@evqo}}ZWQ0 F^1t-zw@{2hQ0 Buh`o`?p3`x: hp p5b M:-Q0 F(*Ck F0 44p28@{9e r хU(` c/T֘@ f&q@KI }x`Q0PZc4ZecZfBpox# @lQ0 Ck Ftqhlǘbm Q0 F&Ck W?SZl4F[ `3!2VƥMNjHA`Q0PZc4ZJ0`#HxC~'bo>V5G(`xx: h F}l-Q0 F(dx: he0 h`Q0 3і(-Q0 F(*Ck F[  F(^1m(?2`x: hP WQ0 F("Cn E`Q0 F(`ȍh`Q0 F(!rc4(Z``*M| Kˀb`Q@U/T2O@ FmQ0 FUPZc42Ppe0 F(TBuhh`@і(`P ա5f@-QG[`Q@U/T֘@ Җ4uyhw Ӭe|+7a\L-g .bqIz Q0 .Ck ]r-re7bi2 BcuU /)EP/V,G(/T֘@ V>£}ط ȫȰbtvYeReG=VQ0 HBuhjj*[h$-vl0 b!Q0 F^1K DBҔ>HV>!?n---<߅n$L=:f͌ULd [bL4Ε,>cXtı= ؓy$տ b-dl;*\xϦw+x/&Mkg@mA?D ӈǴ>!R( /T֘@ ~6ډq Aj dqLijVU%AUb4YeQO^b!=Z0H`RPZc4[ȀTno>pOSdV/bj!|X\Vc5U2AqL9`"PZc4Zq1eIe2x~cѤ(v>Y-U lwvPexTRe F( ա5f@Cej' 'L#I;.R'e@V}-f@-Q0 F(`X he0 F(` @@ F(`a(3 Z4=aQ0 F(\S>f@ PF(`Q@7e1"epQ0 F(P,m FQ0 F( P8f@-Q0 F(` he0 F(` +@@ F(`(3і(`Q0c42`Q0 | F[`Q0 Fh`Q0 F(>1mQ0 F( P8f@-Q0 F(` he0 F(` +@@ F(`(3і(`Q0c42`Q0 | F[`Q0 Fh`Q0 F(>1mQ0 F( P8f@-Q0 F(` he0 F(` +@@ F(`(3і(`Q0c42`Q0 | F[`Q0 Fh`Q0 F(>1mQ0 F( P8f@-Q0 F(` he0 F(` +@@ F(`(3і(`Q0c42`Q0 | F[`Q0 Fh`Q0 F(>1m` (1`<`xb0aTF he0 ւҊ*u*$ ;J#(P>f@-QpLdX-dC ?h c42耊-n R~:{fF h`A2u? (`qAt0 4"X.\gɢh)ux lDV(:b0/v`g"GL42`I&$L)VB ʰZ,%Fh`JF$Ll/(QFd{'0wT4 M9 p F[_TIvQp:4%ʨed{'0d&VqD#wx< F | F[Qtb3IvDU,E{= *ƥ$BiEd8 (3і(@T,d. NE3)u}A2R>!ރȀ XPw +"}7 F| F[Q bB3c7Hu_P~'v*z( 8Ja5` he0 % Ad J$)Y– $pbT jkb)_He|GQ0c42"J 2e../Td2HIpQ4X22R}iaEw` he0 `يG1 0Cv;<xL1mQ0 F( P8f@-Q0 F(` he0 F(` +@@ F(`(3і(`Q0c42`Q0 | F[`Q0 Fh`Q0 F(>1mQ0 F( P8f@-Q0 F(` he0 F(` +@@ F(`(3і(`Q0c42`Q0 | 2? F(``@J(3і(`Q@'giZƘ@ F(`zz0i% h`Q0 F(9V1f@-Q0 F( д h[4kQ0 F(pP hmc42`Q0 h2O@ A(`,9 F EJ?5 h 0F(X4%G(" he0F(,9F3і(EF(ETDCw F[h"(͒hQ 1mQ4h4KQDE4t he0n@W x"h4KGj@lpCFhh`"̜?-zF$$ISH74t he0 ٦Ih,Q7[Q e(" 1m C2H]'AF$9?2E3і0DX[hhl45hp%Xet.'€0CY?"5/ğ D-?鈆@ !UؘZڂXJĔMh$0"7yz͌ 1m C{qc-yxl!h٣*h4K0s IIi~43N4t he0 Z%(--͒xf@KY883і0DG F$¦El4t he0 1`ߊhH,7*_2 <-He(xZ-D-M?72d$^\kǪ+o?Q@Gm '9xŚԑT"w4b<1x c(dxZ-D-Z*s>u# F-F3 gFRі(f> ZȕFP Eϖ6' a2 .i-Q0 і(T Eϖ14Zclde 0jR7ͅG[`XZd,r  TG#Abe0 332/hR-Q0 }-H G_=T|]hn&L@< F,g5f@e🔝U;.X,j.@nQ0>NEKh8Vhs1MÔ£+d8 kG(g5f@e0 F(@p Q0 F֘@ F(Ppe0 FUf@-Q0 F(`X he0 F(` @@ F(`a(3і(`Q0|c42`Q0 p HhQ0 F(`pWL@2B`Q0 F Q0 F(` @y?1]g0 F(` +@@ F(`(3і(`Q0c42`Q0 | F[`Q0 Fh`Q0 F(>1mQ0 F( P8f@-Q0 F(` he0 F(` +@@ F(`(3і(`Q0c42`Q0 | F[`Q0 Fh`Q0 F(>1mQ0 F( P8f@-Q0 F(` he0 F(` +@@ F(`(3і(`Q0c42`Q0 | F[`Q0 Fh`Q0 F(>1mQ0 F( P8f@-Q0 F(` he0 F(` +@@ F(`(3і(`Q0c42`Q0 | F[`Q0 Fh`Q0 F(>1mQ0 F( P8f@-Q0 F(` he0 -`RԅK1zSL @gq0IB` he0 - b #R/`w:zG(Ҁ1m ȫF[UQmQ0c42e_1n e@Ph`A(3і(Z-\? F(1maj)<M .aQ(\RD_AV_ 15 g\fRȞ`h he0 ! BcHZK *TF0$FI^OJ8;Vb`h he0  Xgbe+#FTjĬAN0z сK Q0 | F[`"?:dN{6L@p2,B$Ht(P8f@-Q0fUS!IԈ"݆\2)0Ve (3і(V3T/]$HEDjD"mXZ!CIR ӧQ0 3p F[`XJ%HEi$mFj %AJ2\%^( P>f@-Q0|KZ$AJ,a\)%0}_(CP8f@-Q0|ԋ2᷅ `km#Ng)ְM"g(3і(&Zc(WFb\)U#.3A0`1mQ0 F( P8f@-Q0 F(` he0 F(` +@@ F(`(3і(`Q0c42`Q0 | F[`Q0 Fh`Q0 F(>1mQ0 F( P8f@-Q0 F(` he0 F(` +@@ F(`(3і(`Q0c42`Q0 | F[`Q0 Fh`Q0 F(>1mQ0 F( P8f@-Q0 F(` he0 F(` +@@ F(`(3і(`Q0c42`Q0 | 2? F(``@J(3і(`Q@'giZƘ@ F(`zz0i% h`Q0 F(9V1f@-Q0 F( д h[4kQ0 F(pP hmc42`Q0 h2O@ A(`Q0:j`iP0}3 F(` F2O@ F(`x7 he0 F(`븡5f@-Q0 F(&^ 1mQ0 F(4:nh j0 b!T5mQ0 Fp:nh j@Z%bFV9ZQ0 F(3qCk {26,F(` u3і`Q0BZc4[XhW@3 Z"'84vQ0 F:nh`lS'bFxtau xmQ0 F:nh`lgcʓ2 Fx; F(`x7 hP A2OƊQ0 F(C븡5f@-|k'h,Q0 F(븡5f@äe@Ruﻓ\ UAgQ0 F(^ 1D-<08f|R| DR,`Q0 =qCk Q`Q0 F(N^ 1mQ0 F(4:nhh`Q0 F( qCk F[`Q0 FMZc42`Q0 hu3A2w\Q0 F(:nȍРhQ0 F( 1mQ0 F(4Cn F[`Q0 F 3і(`Q@C0 he0 F(` 1-Q0 F(`x7 K(`Q0g?c42`Q0 hu3і(`Q@֘@ F(`x7 he0 F(`븡5f@e6A.]B-@]F(` Z֘@ rI^L%8 F(`Dx7 hp 0+`:RLhbQ0 F qCk {ˀ<02`Q0^ 1\-bJ!0 fbUl XMcG(` r֘@ j1p$uX٘?!FcG[`Q0TZc4H[nO;1< h1>mQ0 F:nhРn'E?@P kܧޞQ0 F(:nhj9GH]~׎Q0 F(l^ 1t-RgNc5S ::R "G`Q0 -qCk ]>EI4M#VGoAq'LF(` N֘@ (`Q0lZc42`Q0 hu=[$2@-Q0 F(&^ѹe@JH@-Q0 F(&^ѿee@-Q0 F(&^ @ jQ0 F(qCe@e0 F(` W0Z42`Q0 he lh`Q0 F(!1\<-mQ0 F(4>Ye@-Q0 F(`[ hP G(`,-`Q0 F:nh he0 F(`븡2і(`Q@V F[`Q0 FMs4e@-Q0 F(&^ѳet#<>F3 mRՏ! \ c%GQrr$p@[CC%GQr$~f3 p 1T`x  c%GQrĒVĨDm`t`%GQr0o -b\(9JUSe@Ķ a 0:f0J(9H-< `"e@5M`؀1Qr%G@Z)'`6py#VG %3%GQr $ZL@`t`%GQr03u;3%GQr $ބQ(9J{h 쿺Q}&m[2--ǁ1%IADi`RU)/d`%rDřrrHeSY3RYDfWY1zDh&ޑX= FP4, U8 Y1PS)X٣ u Л!m@,-6|F(h@mL[ Eg{2FG6r+ .h֑d(Eh$*cS.rl2R @L,hryQ0t i%]@Jgp)4?cĘRX2bOh\&c| C⃹b?"e"S`hcߒ\4YW @c T0DnJţ,A"Hh()qe<W @/30Ǩg@* ђwQDZbWR^.~f>xH)IRO-]2@<k@TE(Ehh ȳ \  hEh"!r FEhG2@#5 F(@e-G(`H @(` )h\` 2@ˣ`Q0X\ 2B- 860T@)w*~xa`M#^zZi#m` ,DTL81^d[\ pi4rh< F.)hX˔h$P!Qˣ`@e"\F :`B^مXA0m4L#1hVQl"ճm܏*F(R.ip4Y5)D4{p9kDEXlp w0Aqd2-X (C@e5$CfEESqdxaXEp93KgAXQ0\ *d=P22юt< Fpr Y.Ө"#+bXJvGHr`JjO(\m/ 2@ ؼ2*G%|\6E/0!5@cQp0UbՋ?:(JX!3 Fr FFQ0r\ 2bL3hg21mݜ=A7Cc4)h< F(@e-G(`H @(` )h\` 2@`Q0  v(`2@˃ Я4 F(|R.z:8nV PJ` )K<"@@S7 ڙ? F(*RrY_?f2z2zm ݬe(`DH@eE3\ 4#tL-t` e@+Σ#XF(#@"P.c)Lޏ{`d)_<QtrsF( @ R.Sm ЅÊQ0 F  F x` ^)h|Q0 F(`\eB/)9 F(# `E(`r}Rr FQ0 F(&HYh< F(_6\ryQ0 (/h\`je-G(r FQ0 F(&Z.3`P\ryQ0 0eRe"e"\&~4~QQP1]"Qh r i/I4Ed3m*h,q EӎX2%Dj0F0~Yu+!2`'U ig#I1J⃂r)LY2B^o/.5|\֑Q0~#U/*ɓj2Mm*m@/~e(oր0XF$͘0@އM@L a F~P^rV`4X02@4sĂѨɀ2@4d9,hԏh\ 2s1`4Ge-iUG[LF(Oq{ Feѱ F~$4Z.Q0 Fe-G(2@ˣ`Q@e@a{ FQ0 F(& @(`PP^ryQ0 (o/h< F(Th\`jDѹT ᣋ`44F(Z2@\.ӮD3s0ъj(o/`)1Vˣ` 9@a{ ȆVh< FhP/*zFTIdz(C P^AcI8> F0h\x0> Fr_b_BGfbISt!xQ0 ~RxJZ e>In&ƝpeC i:XhQ@ @4,+\:q ~n&;z$}bgQ0 ebcLwhz1 F( P^!P.a,A-4܏T2 F( P^W.;2ZF(d 4Z.S;h(4 ?RQ(T@y{ Fe{Y"ޏT2 F( P^rޡ(HE-`Re-RCЩdZF(d 48 ;"!UT}=; F( P^r*΀EL Q0 F2@ r?Bil8.]%ߖQ0 F2@Qznx)@#\vw ~!O >` (l/Р8sQ0 @(`PP^ryQ0 (o/h< F(Th\`j4Z.Q0 Fe-G(2@ˣ`Q@e@a{ FQ0 F(& @(`PP^ryQ0 (o/h< F(Th\`j4Z.Q0 Fe-G(2@ˣ`Q@e@a{ FQ0 F(& @(`PP^ryQ0 (o/h< F(Th\`j4Z.Q0 Fe-G(2@ˣ`Q@e@a{ FQ0 F(& @(`PP^ryQ0 (o/h< F(Th\`j4Z.Q0 Fe"\f 4#Gp){h<3Y UZDZM OO_ȂCw@ЏCAG0:q|(eFV 2~0H1 (o/˘ʆn*-b=h< 9 @T.1{G9ׅTb@XB a#(kU|e-G( @(X( 4Z.Q0 F5e-G(ʀ2@ˣ`Q@M@y{ FQ0 F(2 @(`PP^G ת;^ _t^XF0'wu$n2Z8~ 4Ha9T( w ˤAiaGhFg083йeG.΀4qKdNr0]!(l/#5Z.S˴n\&ۢAG(o/ rAPt]j S! +̖ 73 Td=$𮚫ς*%Ǜ0u&UcK=\j5@#u%&<l$ϝ4ģxe&u \J?#d"-olAGh0#Ev"Ŵ܅+7?RJ%%{?15AHdtc5RG UR !"<'l 4+!I;I.!xe乄f;cxZ3[{y 1Fn f@I>P^r:`4F 2=e-)û;6 (iA(o/h< F(Th\`j4Z.Q0 Fe-G(2@ˣ`Q@e@a{ A+BH,.5Fh$Z@@y JQ (l/#E@VP T1dX(N2@ =R2`\$@a{ ) E0ô< ..]x\H] xkGcc0d@!CpG|A(o/`G .1Z8Mqbl QLF(2@ {G#V1FJC+,VpQM&;}hWBQ$89h\&$ bL&/m` 4Z.T0)1vWӧ\ƣh< 9 @)xD|LLTldS ٤>F%҃(2@ =Rx`$I \Z>c~ⷎH_hȂ1Z"=[щa(P^1)Z$ KF( 4Z.R0Z.Q0De-/ fcQ0e-G(2@ˣ`Q@e@a{ FQ0 F(& @(`PP^ryQ0 (o/h< F(Th\`j4Z.Q0 Fe-G(2@ˣ`Q@Mp,r1 a-G(R E.f! @(`P r FQ0 F(&\ryQ0 (/h\`je-G(Pe4Z.Q0 F5Z{W\ryQ0 01xe-G(2f\ryQ0 (ryQ0 (/h\`je-G(r FQ0 F(&D2@ˣ`Q@Mu/ Y!2~?G\(9H2}B *o1J䀓I0@,1TCw(9JNZ$`4Z.cQr%$e"\&fsQr%$fV @ĖD1RӤ6.c'0GqGI?Mɩ*32] hRLB]fͿ˞.8]O>( ʑbsudn]/\s:G_22(.w7a #t2E_H^6G1S+{Bv:,%s6^q9GdԂ",J6dPV +@^&旟} ge#le6W2ʜʟd\`\ra ʑGhXS N&n|ipiCxl \(؀o8AGvM5Zz_rh8?Y u<[Dҿ p9S֛e.s90eUʂ(\b('/_K lC0 z e,rHcLVLP ,ZkX-"ޑl2|Ж&y(E3jy| KƎ \26!_ `L^L@F=1 bH ЀH2=Y2eGCDe<c>maH DFMam/5)V4ʨE"%\,1eA O[PBi͍%i&d_R. \5o+es Od'h%%]K} ñP+@RW|,׸֐$OzZ{"_|3#~fY͙%sp r &21k)Kd?2^%5e,Vdc ؘ4]@ PHA@ŔLZG GHHYkΆek(_+2 `0 $\U(_  IL0JTc@P9eHq S"CNH  @b&SkW 2u x { EsBs hbfe$0ZFC*?1 2ES7K2 2UeXI ed3qZ<.epЄMFF5e er F-`48RDE چG#JB""ZW*Kj4v[(DJ(;`4yc"9P.h\Q0 F(,R.h< F(@e`Q 2@Q0 F(\ >Ũ._BIENDB`html/install.windows.iis6.html0100644000101200010120000002737111277240153017725 0ustar docbuilderdocbuilder Microsoft IIS 5.1 and IIS 6.0

Microsoft IIS 5.1 and IIS 6.0

This section contains instructions for manually setting up Internet Information Services (IIS) 5.1 and IIS 6.0 to work with PHP on Microsoft Windows XP and Windows Server 2003. For instructions on setting up IIS 7.0 and later versions on Windows Vista, Windows Server 2008, Windows 7 and Windows Server 2008 R2 refer to Microsoft IIS 7.0 and later.

Configuring IIS to process PHP requests

Download and install PHP in accordance to the instructions described in manual installation steps

Nota: Non-thread-safe build of PHP is recommended when using IIS. The non-thread-safe builds are available at » PHP for Windows: Binaries and Sources Releases.

Configure the CGI- and FastCGI-specific settings in php.ini file as shown below:

Exemplo #1 CGI and FastCGI settings in php.ini

fastcgi.impersonate = 1
fastcgi.logging = 0
cgi.fix_pathinfo=1
cgi.force_redirect = 0

Download and install the » Microsoft FastCGI Extension for IIS 5.1 and 6.0. The extension is available for 32-bit and 64-bit platforms - select the right download package for your platform.

Configure the FastCGI extension to handle PHP-specific requests by running the command shown below. Replace the value of the "-path" parameter with the absolute file path to the php-cgi.exe file.

Exemplo #2 Configuring FastCGI extension to handle PHP requests

cscript %windir%\system32\inetsrv\fcgiconfig.js -add -section:"PHP" ^
-extension:php -path:"C:\PHP\php-cgi.exe"

This command will create an IIS script mapping for *.php file extension, which will result in all URLs that end with .php being handled by FastCGI extension. Also, it will configure FastCGI extension to use the executable php-cgi.exe to process the PHP requests.

Nota: At this point the required installation and configuration steps are completed. The remaining instructions below are optional but highly recommended for achieving optimal functionality and performance of PHP on IIS.

Impersonation and file system access

It is recommended to enable FastCGI impersonation in PHP when using IIS. This is controlled by the fastcgi.impersonate directive in php.ini file. When impersonation is enabled, PHP will perform all the file system operations on behalf of the user account that has been determined by IIS authentication. This ensures that even if the same PHP process is shared across different IIS web sites, the PHP scripts in those web sites will not be able to access each others' files as long as different user accounts are used for IIS authentication on each web site.

For example IIS 5.1 and IIS 6.0, in its default configuration, has anonymous authentication enabled with built-in user account IUSR_<MACHINE_NAME> used as a default identity. This means that in order for IIS to execute PHP scripts, it is necessary to grant IUSR_<MACHINE_NAME> account read permission on those scripts. If PHP applications need to perform write operations on certain files or write files into some folders then IUSR_<MACHINE_NAME> account should have write permission to those.

To determine which user account is used by IIS anonymous authentication, follow these steps:

  1. In the Windows Start Menu choose "Run:", type "inetmgr" and click "Ok";

  2. Expand the list of web sites under the "Web Sites" node in the tree view, right-click on a web site that is being used and select "Properties";

  3. Click the "Directory Security" tab;

  4. Take note of a "User name:" field in the "Authentication Methods" dialog

To modify the permissions settings on files and folders, use the Windows Explorer user interface or icacls command.

Exemplo #3 Configuring file access permissions

icacls C:\inetpub\wwwroot\upload /grant IUSR:(OI)(CI)(M)

Set index.php as a default document in IIS

The IIS default documents are used for HTTP requests that do not specify a document name. With PHP applications, index.php usually acts as a default document. To add index.php to the list of IIS default documents, follow these steps:

  1. In the Windows Start Menu choose "Run:", type "inetmgr" and click "Ok";

  2. Right-click on the "Web Sites" node in the tree view and select "Properties";

  3. Click the "Documents" tab;

  4. Click the "Add..." button and enter "index.php" for the "Default content page:".

FastCGI and PHP Recycling configuration

Configure IIS FastCGI extension settings for recycling of PHP processes by using the commands shown below. The FastCGI setting instanceMaxRequests controls how many requests will be processed by a single php-cgi.exe process before FastCGI extension shuts it down. The PHP environment variable PHP_FCGI_MAX_REQUESTS controls how many requests a single php-cgi.exe process will handle before it recycles itself. Make sure that the value specified for FastCGI InstanceMaxRequests setting is less than or equal to the value specified for PHP_FCGI_MAX_REQUESTS.

Exemplo #4 Configuring FastCGI and PHP recycling

cscript %windir%\system32\inetsrv\fcgiconfig.js -set -section:"PHP" ^
-InstanceMaxRequests:10000

cscript %windir%\system32\inetsrv\fcgiconfig.js -set -section:"PHP" ^
-EnvironmentVars:PHP_FCGI_MAX_REQUESTS:10000

Configuring FastCGI timeout settings

Increase the timeout settings for FastCGI extension if there are applications that have long running PHP scripts. The two settings that control timeouts are ActivityTimeout and RequestTimeout. Refer to » Configuring FastCGI Extension for IIS 6.0 for more information about those settings.

Exemplo #5 Configuring FastCGI timeout settings

cscript %windir%\system32\inetsrv\fcgiconfig.js -set -section:"PHP" ^
-ActivityTimeout:90

cscript %windir%\system32\inetsrv\fcgiconfig.js -set -section:"PHP" ^
-RequestTimeout:90

Changing the Location of php.ini file

PHP searches for php.ini file in several locations and it is possible to change the default locations of php.ini file by using PHPRC environment variable. To instruct PHP to load the configuration file from a custom location run the command shown below. The absolute path to the directory with php.ini file should be specified as a value of PHPRC environment variable.

Exemplo #6 Changing the location of php.ini file

cscript %windir%\system32\inetsrv\fcgiconfig.js -set -section:"PHP" ^
-EnvironmentVars:PHPRC:"C:\Some\Directory\"


html/install.windows.iis7.html0100644000101200010120000004232011277240153017715 0ustar docbuilderdocbuilder Microsoft IIS 7.0 and later

Microsoft IIS 7.0 and later

This section contains instructions for manually setting up Internet Information Services (IIS) 7.0 and later to work with PHP on Microsoft Windows Vista SP1, Windows 7, Windows Server 2008 and Windows Server 2008 R2. For instructions on setting up IIS 5.1 and IIS 6.0 on Windows XP and Windows Server 2003 refer to Microsoft IIS 5.1 and IIS 6.0.

Enabling FastCGI support in IIS

FastCGI module is disabled in default installation of IIS. The steps to enable it differ based on the version of Windows being used.

To enable FastCGI support on Windows Vista SP1 and Windows 7:

  1. In the Windows Start Menu choose "Run:", type "optionalfeatures.exe" and click "Ok";

  2. In the "Windows Features" dialog expand "Internet Information Services", "World Wide Web Services", "Application Development Features" and then enable the "CGI" checkbox;

  3. Click OK and wait until the installation is complete.

To enable FastCGI support on Windows Server 2008 and Windows Server 2008 R2:

  1. In the Windows Start Menu choose "Run:", type "CompMgmtLauncher" and click "Ok";

  2. If the "Web Server (IIS)" role is not present under the "Roles" node, then add it by clicking "Add Roles";

  3. If the "Web Server (IIS)" role is present, then click "Add Role Services" and then enable the "CGI" checkbox under "Application Development" group;

  4. Click "Next" and then "Install" and wait for the installation to complete.

Configuring IIS to process PHP requests

Download and install PHP in accordance to the instructions described in manual installation steps

Nota: Non-thread-safe build of PHP is recommended when using IIS. The non-thread-safe builds are available at » PHP for Windows: Binaries and Sources Releases.

Configure the CGI- and FastCGI-specific settings in php.ini file as shown below:

Exemplo #1 CGI and FastCGI settings in php.ini

fastcgi.impersonate = 1
fastcgi.logging = 0
cgi.fix_pathinfo=1
cgi.force_redirect = 0

Configure IIS handler mapping for PHP by using either IIS Manager user interface or a command line tool.

Using IIS Manager user interface to create a handler mapping for PHP

Follow these steps to create an IIS handler mapping for PHP in IIS Manager user interface:

  1. In the Windows Start Menu choose "Run:", type "inetmgr" and click "Ok";

  2. In the IIS Manager user interface select the server node in the "Connections" tree view;

  3. In the "Features View" page open the "Handler Mappings" feature;

  4. In the "Actions" pane click "Add Module Mapping...";

  5. In the "Add Module Mapping" dialog enter the following:

    • Request path: *.php
    • Module: FastCgiModule
    • Executable: C:\[Path to PHP installation]\php-cgi.exe
    • Name: PHP_via_FastCGI

  6. Click "Request Restrictions" button and then configure the mapping to invoke handler only if request is mapped to a file or a folder;

  7. Click OK on all the dialogs to save the configuration.

Using command line tool to create a handler mapping for PHP

Use the command shown below to create an IIS FastCGI process pool which will use php-cgi.exe executable for processing PHP requests. Replace the value of the fullPath parameter with the absolute file path to the php-cgi.exe file.

Exemplo #2 Creating IIS FastCGI process pool

%windir%\system32\inetsrv\appcmd set config /section:system.webServer/fastCGI ^
/+[fullPath='c:\PHP\php-cgi.exe']

Configure IIS to handle PHP specific requests by running the command shown below. Replace the value of the scriptProcessor parameter with the absolute file path to the php-cgi.exe file.

Exemplo #3 Creating handler mapping for PHP requests

%windir%\system32\inetsrv\appcmd set config /section:system.webServer/handlers ^
/+[name='PHP_via_FastCGI', path='*.php',verb='*',modules='FastCgiModule',^
scriptProcessor='c:\PHP\php-cgi.exe',resourceType='Either']

This command creates an IIS handler mapping for *.php file extension, which will result in all URLs that end with .php being handled by FastCGI module.

Nota: At this point the required installation and configuration steps are completed. The remaining instructions below are optional but highly recommended for achieving optimal functionality and performance of PHP on IIS.

Impersonation and file system access

It is recommended to enable FastCGI impersonation in PHP when using IIS. This is controlled by the fastcgi.impersonate directive in php.ini file. When impersonation is enabled, PHP will perform all the file system operations on behalf of the user account that has been determined by IIS authentication. This ensures that even if the same PHP process is shared across different IIS web sites, the PHP scripts in those web sites will not be able to access each other's files as long as different user accounts are used for IIS authentication on each web site.

For example IIS 7, in its default configuration, has anonymous authentication enabled with built-in user account IUSR used as a default identity. This means that in order for IIS to execute PHP scripts, it is necessary to grant IUSR account read permission on those scripts. If PHP applications need to perform write operations on certain files or write files into some folders then IUSR account should have write permission to those.

To determine what user account is used as an anonymous identity in IIS 7 use the following command. Replace the "Default Web Site" with the name of IIS web site that you use. In the output XML configuration element look for the userName attribute.

Exemplo #4 Determining the account used as IIS anonymous identity

%windir%\system32\inetsrv\appcmd.exe list config "Default Web Site" ^
/section:anonymousAuthentication

<system.webServer>
  <security>
    <authentication>
      <anonymousAuthentication enabled="true" userName="IUSR" />
    </authentication>
   </security>
</system.webServer>

Nota: If userName attribute is not present in the anonymousAuthentication element, or is set to an empty string, then it means that the application pool identity is used as an anonymous identity for that web site.

To modify the permissions settings on files and folders, use the Windows Explorer user interface or icacls command.

Exemplo #5 Configuring file access permissions

icacls C:\inetpub\wwwroot\upload /grant IUSR:(OI)(CI)(M)

Set index.php as a default document in IIS

The IIS default documents are used for HTTP requests that do not specify a document name. With PHP applications, index.php usually acts as a default document. To add index.php to the list of IIS default documents, use this command:

Exemplo #6 Set index.php as a default document in IIS

%windir%\system32\inetsrv\appcmd.exe set config ^
-section:system.webServer/defaultDocument /+"files.[value='index.php']" ^
/commit:apphost

FastCGI and PHP Recycling configuration

Configure IIS FastCGI settings for recycling of PHP processes by using the commands shown below. The FastCGI setting instanceMaxRequests controls how many requests will be processed by a single php-cgi.exe process before IIS shuts it down. The PHP environment variable PHP_FCGI_MAX_REQUESTS controls how many requests a single php-cgi.exe process will handle before it recycles itself. Make sure that the value specified for FastCGI InstanceMaxRequests setting is less than or equal to the value specified for PHP_FCGI_MAX_REQUESTS.

Exemplo #7 Configuring FastCGI and PHP recycling

%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi ^
/[fullPath='c:\php\php-cgi.exe'].instanceMaxRequests:10000

%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi ^
/+"[fullPath='C:\{php_folder}\php-cgi.exe'].environmentVariables.^
[name='PHP_FCGI_MAX_REQUESTS',value='10000']"

Configuring FastCGI timeout settings

Increase the timeout settings for FastCGI if it is expected to have long running PHP scripts. The two settings that control timeouts are activityTimeout and requestTimeout. Use the commands below to change the timeout settings. Make sure to replace the value in the fullPath parameter to contain the absolute path to the php-cgi.exe file.

Exemplo #8 Configuring FastCGI and PHP recycling

%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi ^
/[fullPath='C:\php\php-cgi.exe',arguments=''].activityTimeout:"90"  /commit:apphost

%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi ^
/[fullPath='C:\php\php-cgi.exe',arguments=''].requestTimeout:"90"  /commit:apphost

Changing the Location of php.ini file

PHP searches for php.ini file in several locations and it is possible to change the default locations of php.ini file by using PHPRC environment variable. To instruct PHP to load the configuration file from a custom location run the command shown below. The absolute path to the directory with php.ini file should be specified as a value of PHPRC environment variable.

Exemplo #9 Changing the location of php.ini file

appcmd.exe set config  -section:system.webServer/fastCgi ^
/+"[fullPath='C:\php\php.exe',arguments=''].environmentVariables.^
[name='PHPRC',value='C:\Some\Directory\']" /commit:apphost


html/install.windows.apache1.html0100644000101200010120000001715511277240153020354 0ustar docbuilderdocbuilder Apache 1.3.x no Microsoft Windows

Apache 1.3.x no Microsoft Windows

Essa seção contem notas e dicas específicas para instalação do Apache 1.3.x com o PHP nos sistemas Microsoft Windows. Também há instruções e notas para o Apache 2 em uma página separada.

Nota: Por favor, leia os passos da instalação manual primeiro!

Existem duas maneiras de configurar o PHP para funcionar com o Apache 1.3.x no Windows. Uma é usar o binário CGI (php.exe para o PHP 4 e php-cgi.exe para o PHP 5), e a outra é usar o DLL do módulo do Apache. Em ambos os casos você precisa editar o arquivo httpd.conf para configurar o Apache para funcionar com o PHP e, então, reiniciar o servidor.

Vale a pena notar que agora o módulo SAPI tornou-se mais estável no Windows, nós recomendamos o seu uso ao invés do binário CGI, uma vez que é mais transparente e seguro.

Embora existam algumas pequenas variações de configuração do PHP com o Apache, elas são simples o suficiente para ser usado por iniciantes. Por favor, consulte a Documentação do Apache para mais diretivas de configuração.

Depois de mudar o arquivo de configuração, lembre-se de reiniciar o servidor, por exemplo, executando NET STOP APACHE seguido de NET START APACHE, se você rodar o Apache como um Windows Service, ou user os atalhos normais.

Nota: Lembre-se que quando acrescentando valores de caminhos nos arquivos de configuração do Apache para Windows, todas as contrabarras como em c:\directory\file.ext precisam ser convertidas para barras, como em c:/directory/file.ext. Uma barra ao final também é necessária para diretórios.

Instalando como um módulo do Apache

Você deve adicionar as seguintes linhas para o seu arquivo httpd.conf:

Exemplo #1 PHP como um módulo do Apache 1.3.x

Presume-se que o PHP esteja instalado em c:\php. Ajuste o caminho se não for o seu caso.

Para o PHP 4:

# Adicione ao fim da seção LoadModule
# Não se esqueça de copiar esse arquivo do diretório sapi
LoadModule php4_module "c:/php/php4apache.dll"

# Adicione ao fim da seção AddModule
AddModule mod_php4.c

Para o PHP 5:

# Adicione ao fim da seção LoadModule
LoadModule php5_module "c:/php/php5apache.dll"

# Adicione ao fim da seção AddModule
AddModule mod_php5.c

Para ambos:

# Adicione essa linha dentro das tags condicionais <IfModule mod_mime.c>
AddType application/x-httpd-php .php

# Para arquivos .phps com highlight de sintaxe adicione também
AddType application/x-httpd-php-source .phps

Instalando como um binário CGI

Se você dezipou o pacote PHP para o diretório C:\php\ como descrito na seção Passos da Instalação Manual, você precisa inserir as seguintes linhas ao arquivo de configuração do Apache para configurar o uso do binário CGI:

Exemplo #2 PHP e Apache 1.3.x como CGI

ScriptAlias /php/ "c:/php/"
AddType application/x-httpd-php .php

# Para o PHP 4
Action application/x-httpd-php "/php/php.exe"

# Para o PHP 5
Action application/x-httpd-php "/php/php-cgi.exe"

# especifica o diretório onde o php.ini está
SetEnv PHPRC C:/php

Note que a segunda linha na lista acima pode ser encontrada na versão padrão do httpd.conf, mas está comentada. Lembre-se de substituir também o c:/php/ pelo caminho do PHP no seu sistema.

Aviso

Um servidor dispoto em modo CGI está aberto para várias vulnerabilidades possíveis. Por favor, leia nossa seção de segurança CGI para aprender em como se defender de tais ataques.

Se você gostaria de apresentar os códigos-fonte dos PHP com highlight de sintaxe, não exites uma opção conveniente como na versão de módulo. Se você escolheu configura o Apache para usar o PHP como um binário CGI, você precisará usar a função highlight_file(). Para fazer isso, simplesmente crie um script PHP e adicione esse código: <?php highlight_file('some_php_script.php'); ?>.


html/install.windows.apache2.html0100644000101200010120000002367411277240153020360 0ustar docbuilderdocbuilder Apache 2.0.x no Microsoft Windows

Apache 2.0.x no Microsoft Windows

Essa seção contem notas e dicas específicas para instalação do Apache 2.0.x com o PHP nos sistemas Microsoft Windows.Também há instruções e notas para o Apache 1.3.x em uma página separada.

Nota: Por favor, leia os passos da instalação manual primeiro!

Nota: Suporte a Apache 2.2.x
Usuários do Apache 2.2.x devem usar a documentação abaixo exceto que o nome do arquivo da dll apropriada é php5apache2_2.dll e lea só existe a partir do 5.2.0. Veja também » http://snaps.php.net/

Aviso

Nós não recomendamos a utilização de um threaded MPM em produção com o Apache2. Use ao invés prefork MPM, ou use Apache1. para informações sobre o motivo, leia este faq sobre usando Apache2 com um threaded MPM

Encorajamos que você olhe a » Documentação do Apache para entender o básico do Servidor Apache 2.0.x. Também considere ler as » notas específicas para o Windows para o Apache 2.0.x antes de continuar.

Nota: Notas de compatibilidade do PHP e Apache 2.0.x
As seguintes versões do PHP são compatíveis com a versão mais recente do Apache 2.0.x:

Essas versões do PHP são compatíveis com Apache 2.0.40 ou superior.
Suporte a SAPI do Apache 2.0 começou no PHP 4.2.0. PHP 4.2.3 funciona com Apache 2.0.39, não use qualquer outra versão de Apache com PHP 4.2.3. No entando, a configuração recomendada é usar o 4.3.0 ou superior com a versão mais recente do Apache2.
Todas as versões mencionadas do PHP ainda funcionarão com Apache 1.3.x.

Aviso

Apache 2.0.x foi desenhado para rodar no Windows NT 4.0, Windows 2000 ou Windows XP. Até o momento, suporte para Windows 9x está incompleto. Apache 2.0.x não tem planos para funcionar nessas plataformas.

Baixe a versão mais recente do » Apache 2.0.x e uma versão apropriada do PHP. Siga os Passos da Instalação Manual e volte para continuar com a integração do PHP e Apache.

Existem duas maneiras de configurar o PHP para funcionar com Apache 2.0.x no Windows. Uma é usar o binário CGI e a outra é usar o DLL do módulo do Apache. Em ambos os casos você precisa editar o arquivo httpd.conf para configurar o Apache para funcionar com o PHP e, então, reiniciar o servidor.

Nota: Lembre-se que quando acrescentando valores de caminhos nos arquivos de configuração do Apache para Windows, todas as contrabarras como em c:\directory\file.ext precisam ser convertidas para barras, como em c:/directory/file.ext. Uma barra ao final também é necessária para diretórios.

Instalando como um binário CGI

Você precisa inserir essas três linhas para o arquivo httpd.conf de configuração do Apache para configura o binário CGI:

Exemplo #1 PHP e Apache 2.0 como CGI

ScriptAlias /php/ "c:/php/"
AddType application/x-httpd-php .php

# Para o PHP 4
Action application/x-httpd-php "/php/php.exe"

# Para o PHP 5
Action application/x-httpd-php "/php/php-cgi.exe"

Aviso

Um servidor dispoto em modo CGI está aberto para várias vulnerabilidades possíveis. Por favor, leia nossa seção de segurança CGI para aprender em como se defender de tais ataques.

Instalando como um módulo do Apache

Você precisa inserir essas duas linhas ao arquivo de configuração de Apache httpd.conf para configurar o módulo PHP para o Apache 2.0:

Exemplo #2 PHP e Apache 2.0 como Módulo

# Para o PHP 4 faça algo assim:
LoadModule php4_module "c:/php/php4apache2.dll"
# Não esqueça de copiar o arquivo php4apache2.dll do diretório sapi para o principal do PHP!
AddType application/x-httpd-php .php

# Para o PHP 5 faça algo assim:
LoadModule php5_module "c:/php/php5apache2.dll"
AddType application/x-httpd-php .php

# configure o caminho para o arquivo php.ini
PHPIniDir "C:/php"

Nota: Lembre-se de substituir o caminho c:/php/ para o caminho onde você instalou o PHP na sua máquina. Tome o cuidade de usar ou php4apache2.dll ou php5apache2.dll na sua diretiva LoadModule e não php4apache.dll ou php5apache.dll já que essas últimas são feitas para rodar com o Apache 1.3.x.

Nota: Se você quiser negociação de conteúdo, leia o FAQ relacionado.

Aviso

Não misture sua instalação com arquivos DLL de versões diferentes do PHP. Você só pode escolher usar as DLL's e extensões inclusas na versão do PHP que você baixou.


html/install.windows.sun.html0100644000101200010120000003701111277240153017650 0ustar docbuilderdocbuilder Servidores Sun, iPlanet e Netscape no Microsoft Windows

Servidores Sun, iPlanet e Netscape no Microsoft Windows

Essa seção contem notas e dicas específicas para instalação do PHP em servidores Sun Java System Web Server, Sun ONE Web Server, iPlanet e Netscape no Windows.

A partir do PHP 4.3.3 você pode usar seus scripts PHP com o módulo NSAPI para gerar listagens personalizadas de diretórios e páginas de erro. Funções adicionais para compatibilidade com o Apache também estão disponíveis. Para suporte nos servidores web atuais leia a nota sobre subrequests.

Configurando como CGI em servidores Sun, iPlanet e Netscape

Para instalar o PHP como um tratador de CGI, faça o seguinte:

  • Copie o arquivo php4ts.dll para a pasta raiz do seu sistema (o diretório onde você instalou o Windows)
  • Faça uma associação de arquivo a partir da linha de comando. Digite as duas linhas a seguir:

    assoc .php=PHPScript
    ftype PHPScript=c:\php\php.exe %1 %*

  • No Netscape Enterprise Administration Server crie um diretório dummy para o shellcgi e remova-o em seguida (esse passo cria 5 linhas importantes no obj.conf e permite que o servidor web trate scripts shellcgi).
  • No Netscape Enterprise Administration Server crie um novo tipo mime (Category: type, Content-Type: magnus-internal/shellcgi, File Suffix:php).
  • Faça isso para cada instância do servidor web que você quiser que rode o PHP

Mais detalhes sobre configuração do PHP como um executável CGI pode ser encontrado aqui: » http://benoit.noss.free.fr/php/install-php.html

Configurando como NSAPI em servidores Sun, iPlanet e Netscape

Para instalar o PHP com NSAPI, faça o seguinte:

  • Copie php4ts.dll para a pasta raiz do seu sistema (o diretório onde você instalou o Windows)
  • Faça uma associação de arquivo a partir da linha de comando. Digite as duas linhas a seguir:

    assoc .php=PHPScript
    ftype PHPScript=c:\php\php.exe %1 %*

  • No Netscape Enterprise Administration Server crie um novo tipo mime (Category: type, Content-Type: magnus-internal/x-httpd-php, File Suffix: php).
  • Edite o arquivo magnus.conf (para servidores >= 6) ou obj.conf (para servidores < 6) e adicione o seguinte: Você deve colocar as linhas depois de mime types init.

    Init fn="load-modules" funcs="php4_init,php4_execute,php4_auth_trans" shlib="c:/php/sapi/php4nsapi.dll"
    Init fn="php4_init" LateInit="yes" errorString="Failed to initialise PHP!" [php_ini="c:/path/to/php.ini"]
    

    (PHP >= 4.3.3) O parâmetro php_ini é opcional, mas com ele você pode colocar seu arquivo php.ini no diretório de configuração do seu servidor web.

  • Configure o objeto padrão no arquivo obj.conf (para classes de servidor virtual [Sun Web Server 6.0+] no arquivo vserver.obj.conf): Na seção <Object name="default">, coloque essa linha necessariamente após todas as linhas do tipo 'ObjectType' e antes das do tipo 'AddLog':

    Service fn="php4_execute" type="magnus-internal/x-httpd-php" [inikey=value inikey=value ...]
    

    (PHP >= 4.3.3) Como parâmetros adicionais,você pode adicionar alguns valores especiais do arquivo php.ini, por exemplo, você pode atribuir um docroot="/path/to/docroot" específico ao contexto no qual php4_execute é chamado. Para valores booleanos do php.ini, use 0/1 como valor, e não "On","Off",... (Isso não funcionará), ex.: zlib.output_compression=1 ao invés de zlib.output_compression="On"

  • Isso só é necessário se você quiser configurar um diretório que só consiste de scripts PHP (como em um diretório cgi-bin):

    <Object name="x-httpd-php">
    ObjectType fn="force-type" type="magnus-internal/x-httpd-php"
    Service fn=php4_execute [inikey=value inikey=value ...]
    </Object>
    

    Depois disso você pode configurar um diretório na ferramenta de Administração do servidor e atribuir a ele um estilo x-httpd-php. Todos os arquivos neles serão executados como PHP. Isso é bom para esconder o uso do PHP renomeando os arquivos como .html.

  • Reinicie seu servidor web e aplique as mudanças
  • Faça isso para cada instância do servidor web que você quiser que execute o PHP

Nota: Mais detalhes sobre configurar o PHP como um filtro NSAPI pode ser achado aqui: » http://benoit.noss.free.fr/php/install-php4.html

Nota: O tamanho de pilha que o PHP usa depende da configuração do servidor web. Se você tiver problemas com scripts muito grandes, é recomendado aumentar esse tamanho com o Administrador do Servidor (na seção "MAGNUS EDITOR").

Ambiente CGI e modificações recomendadas ao arquivo php.ini

É importante quando escrevendo scripts PHP levar em conta o fato que Sun JSWS/Sun ONE WS/iPlanet/Netscape são servidores multithreaded. Por isso, todas as requisições estão sendo executadas no mesmo espaço de processo (o espaço do servidor web) e esse espaço só tem um ambiente. Se você quiser usar variáveis CGI como PATH_INFO, HTTP_HOST etc, não é correto tentar pegá-las da maneira do PHP antigo, usando a função getenv() ou uma maneira similar (registrar globais para o ambiente, $_ENV). Você só iria pegar o ambiente do servidor web sem quaisquer variáveis CGI válidas!

Nota: Porque existem variáveis CGI (inválidas) no ambiente?
Resposta: Isso é porque você inicializou o processo do servidor a partir do administrador do servidor que executa o script de inicialização do servidor web, você queria iniciar, como um script CGI (um script CGI dentro do administrador do servidor!). Isso é porque o ambiente do servidor tem algumas variáveis CGI do ambiente nele. Você pode testar isso inicializando o servidor web de outra forma que não pelo administrador do servidor. Use a linha de comando como usuário root e inicialize-o manualmente - você verá que não há variáveis ambientes do tipo CGI.

Simplesmente mude seus scripts para pegar variáveis CGI da maneira correta para o PHP 4.x, usando o array superglobal $_SERVER. Se você tiver scripts mais antigos que usem $HTTP_HOST, etc., você deve ligar a diretiva register_globals no arquivo php.ini e mudar a ordem das variáveis também (importante: remova "E" da diretiva, porque você não precisa das variávies de ambiente aqui):

variables_order = "GPCS"
register_globals = On

Uso especial para páginas de erro ou listagens de conteúdo de diretório auto-geradas (PHP >= 4.3.3)

Você pode usar o PHP para gerar as páginas de erro para "404 Not Found" ou similar. Adicione a seguinte linha ao objeto no arquivo obj.conf para cada página de erro que você queira sobrescrever:

Error fn="php4_execute" code=XXX script="/path/to/script.php" [inikey=value inikey=value...]

onde XXX é o código de erro HTTP. Por favor apague qualquer outra diretiva Error que podem interferir com as suas. Se você quiser colocar uma página para todos os erros que podem existir, não informe o parâmetro code. Seu script pode determinar qual o erro pela variável $_SERVER['ERROR_TYPE'].

Outra possibilidade é gerar listagens de conteúdo de diretório. Apenas crie um script PHP que mostre uma listagem do diretório e substitua o valor padrão da linha Service type="magnus-internal/directory" no arquivo obj.conf com a seguinte:

Service fn="php4_execute" type="magnus-internal/directory" script="/path/to/script.php" [inikey=value inikey=value...]

Tanto para páginas de erro e de listagem de diretório a URI original e a URI traduzida estão nas variáveis $_SERVER['PATH_INFO'] e $_SERVER['PATH_TRANSLATED'].

Nota sobre nsapi_virtual() e subrequisições (subrequests) (PHP >= 4.3.3)

O módulo NSAPI agora suporta a função nsapi_virtual() (sinônimo (alias): virtual()) para fazer subrequisições no servidor web e inserir o resultado em uma página web. O problema é que essa função usa algumas características não documentadas da biblioteca NSAPI.

No Unix, isso não é um problema, porque o módulo procura automaticamente pelas funções necessárias e usa elas se disponíveis. Se não, nsapi_virtual() é desabilitada.

Limitações de tratamento de DLLs no Windows precisam da detecção automática do arquivo ns-httpdXX.dll mais recente. Isso é testado pelos servidores até a versão 6.1. Se uma versão mais nova do servidor Sun é usado, a detecção falha e nsapi_virtual() é desabilitada.

Se esse for o caso, tente o seguinte: Adicione o seguinte parâmetro para php4_init em magnus.conf/obj.conf:

Init fn=php4_init ... server_lib="ns-httpdXX.dll"

onde XX é o número de versão correto da DLL. Para obter esse valor, procure na pasta raiz do servidor para o nome correto da DLL. A DLL com o maior tamanho é a certa.

Você pode verificar o status usando a função phpinfo().

Nota: Mas esteja avisado: O suporte para nsapi_virtual() é EXPERIMENTAL!!!


html/install.windows.omnihttpd.html0100644000101200010120000001110211277240153021042 0ustar docbuilderdocbuilder Servidor OmniHTTPd

Servidor OmniHTTPd

Essa seção contem notas e dicas específicas para o » OmniHTTPd no Windows.

Nota: Você deve ler os passos de instalação do manual antes!

Aviso

Um servidor dispoto em modo CGI está aberto para várias vulnerabilidades possíveis. Por favor, leia nossa seção de segurança CGI para aprender em como se defender de tais ataques.

Você precisa completar os passos a seguir para fazer o PHP funcionar com OmniHTTPd. A instalação descrita a seguir é para o executável CGI. OmniHTTPd tem suporte à SAPI, mas alguns testes mostraram que não é estável usar o PHP como módulo ISAPI.

Nota: Importante para usuários CGI
Leia o faq sobre cgi.force_redirect para detalhes importantes. Essa diretiva precisa ter o valor 0.

  1. Instale o servidor OmniHTTPd.

  2. Clique com o botão direito no ícone azul do OmniHTTPd na barra do sistema e selecione Propriedades (Properties)

  3. Clique em Configurações Globais do Servidor Web (Web Server Global Settings)

  4. Na tab 'External', entre: virtual = .php | actual = c:\php\php.exe (use php-cgi.exe se você estiver instalando o PHP 5), e use o botão Adicionar (Add).

  5. Na tab Mime, entre: virtual = wwwserver/stdcgi | actual = .php, e use o botão Adicionar (Add).

  6. Clique em OK

Repita os passos 2 - 6 para cada extensão que você quiser associar com o PHP.

Nota: Alguns pacotes OmniHTTPd vem com suporte embutido ao PHP. Você pode escolher durante a instalação fazer uma configuração personalizada, e selecionar o componente PHP. Nós recomendamos que você use a versão mais nova dos binários do PHP. Alguns servidores OmniHTTPd vem com o PHP 4 beta, então você deve escolher não instalar o suporte embutido, mas instalar por conta própria. Se o servidor já estiver na sua máquina, use o botão Substituir (Replace) nos passos 4 e 5 para configurar a informação nova e correta.


html/install.windows.sambar.html0100644000101200010120000000700011277240153020303 0ustar docbuilderdocbuilder Servidor Sambar no Microsoft Windows

Servidor Sambar no Microsoft Windows

Essa seção contem notas e dicas específicas para o » Sambar Server para Windows.

Nota: Você deve ler os passos de instalação do manual antes!

Essa lista descreve como instalar o módulo ISAPI para que funcione com o servidor Sambar no Windows.

  • Ache o arquivo chamado mappings.ini (no diretório de configuração) no diretório de instalação dp Sambar.

  • Abra o arquivo mappings.ini e adicione a seguinte linha sob [ISAPI]:

    Exemplo #1 Configuração ISAPI do Sambar

    #para o PHP 4
    *.php = c:\php\php4isapi.dll
    
    #para o PHP 5
    *.php = c:\php\php5isapi.dll
    

    (Essa linha presume que o PHP foi instalado em c:\php.)

  • Agora reinicie o servidor Sambar para que as mudanças tenha efeito.

Nota: Se você deseja usar o PHP para se comunicar com recursos que estão guardados em um computador diferente em sua rede, então você precisará alterar a conta de usuário usada pelo Sambar Server Service. A conta padrão usada pelo Sambar Server Service é LocalSystem, que não tem acesso a recursos remotos. A conta pode ser modifica usando a opção Serviços (Services) dentro do das Ferramentas Administrativas (Administation Tools) do Painel de Controle (Control Panel) do Windows.


html/install.windows.xitami.html0100644000101200010120000000760311277240153020342 0ustar docbuilderdocbuilder Xitami no Microsoft Windows

Xitami no Microsoft Windows

Essa seção contem notas e dicas específicas para o » Xitami no Windows.

Nota: Você deve ler os passos de instalação manual primeiro!

Essa lista descreve como configura o binário CGI do PHP para funcionar com Xitami no Windows.

Nota: Importante para usuários que instalaram o CGI
Leia o faq sobre cgi.force_redirect para detalhes importantes. Essa diretiva precisa ser editada para 0. Se você quiser usar $_SERVER['PHP_SELF'] você tem que habilitar a diretiva cgi.fix_pathinfo.

Aviso

Um servidor dispoto em modo CGI está aberto para várias vulnerabilidades possíveis. Por favor, leia nossa seção de segurança CGI para aprender em como se defender de tais ataques.

  • Assegure-se que o servidor web está rodando e aponte o seu browser para o console de administração do Xitami (normalmente http://127.0.0.1/admin), e clique em Configuração (Configuration).

  • Navegue para os Filtros (Filters), e ponha a extensão que o PHP deve avaliar (ex.: .php) no campo extensões de Arquivo (.xxx).

  • No comando ou script Filtro (Filter) ponha o caminho e o nome do seu executável CGI, ex.: C:\php\php.exe para o PHP 4, ou C:\php\php-cgi.exe para o PHP 5.

  • Pressione o ícone Salvar (Save).

  • Reinicie o servidor para as mudanças terem efeito.


html/install.windows.building.html0100644000101200010120000006442011277240153020644 0ustar docbuilderdocbuilder Compilando a partir dos fontes

Compilando a partir dos fontes

Esse capítulo ensina como compilar PHP a partir dos fontes no Windows, usando as ferramentas da Microsoft. Para compilar o PHP com cygwin, veja o Instalação em sistemas Unix.

Quick Guide to Building On Windows

Este rápido guia passo-a-passo foi escrito em Março de 2008, executado no Windows XP Service Pack 2 com todos as últimas atualizações e compilando o PHP versões 5.2.5 e 5.3. Sua experiência pode ser diferente se utilizar outras ferramentas

  1. Baixar e instalar:

  2. Copie C:\Arquivos de Programas\Microsoft SDKs\Windows\v6.1\Include\WinResrc.h para C:\Arquivos de Programas\Microsoft SDKs\Windows\v6.1\Include\winres.h.
  3. Crie o diretório C:\work.
  4. Baixe » as ferramentas de compilação do Windows e descompacte o conteúdo em C:\work.
  5. Crie o diretório C:\usr\local\lib. Copie C:\work\win32build\bin\bison.simple para o novo diretório.
  6. Baixe » a biblioteca de resolução de DNS do Windows e descompacte o conteúdo em C:\work.
  7. Abra o arquivo C:\work\bindlib_w32\bindlib.dsw. Se e quando perguntao se deseja atualizar o projeto, escolha Sim (Yes). Escolha a configuração Release ou Debug na barra superior, então escolha Compilar (Build) => Compilar Solução (Build Solution).
  8. Obtenha uma cópia dos fontes do PHP e extraia para o diretório C:\work. A essa altura, o diretório deverá estar parecido com isso:
    +-C:\work
    | +-bindlib_w32
    | | +-Debug
    | | | +-resolv.lib
    | | | +-...
    | | +-...
    | +-win32build
    | | +-bin
    | | +-include
    | | +-lib
    | +-php-5.2.5
    | | +-build
    | | +-win32
    | | +-...
  9. Abra um shell utilizando o atalho no menu iniciar para o Visual Studio 2008 Command Prompt.
  10. Execute o comando:
    C:\Arquivos de Programas\Microsoft Visual Studio 9.0\VC> set "PATH=C:\work\win32build\bin;%PATH%"
    C:\Arquivos de Programas\Microsoft Visual Studio 9.0\VC>
  11. Entre no diretório C:\work\php-5.2.5.
  12. Execute cscript /nologo win32\build\buildconf.js.
  13. Execute cscript /nologo configure.js --disable-all --enable-cli --enable-cgi --enable-object-out-dir=.. --disable-ipv6. Para habilitar depuração (debug), adicione --enable-debug no final do comando.
  14. Execute nmake.
  15. Se tudo ocorreu bem, deverá existir um executável CLI do PHP em C:\work\Debug_TS\php.exe, ou C:\work\Release_TS\php.exe.

Ambiente de compilação

Para compilar e montar o PHP, você precisa de um Microsoft Development Environment. Os seguintes ambientes são suportados:

  • Microsoft Visual C++ 6.0 (official)
  • Microsoft Visual C++ .NET
  • Microsoft Visual C++ 2005, Windows Platform SDK e .NET Framework SDK (atual)

Embora VC6 (Microsoft Visual C++ 6.0) seja usado para executar oficiais compilações do Windows, ele não pode ser obtido do site da Microsoft. Novos usuários procurando compilar o PHP precisa usar Microsoft Visual C++ 2005 Express Edition e seus componentes auxiliares.

Configurando o Microsoft Visual C++ 2005 Express

Nota: Combinado, estes componentes são muito extenso e requisitará um gigabyte de espaço de disco.

Configurando o Microsoft Visual C++ 2005 Express é melhor contido, e requer a instalação de três pacotes separados e várias mudanças de compatibilidades. Mantenha uma lista de caminhos no qual estes programas estão sendo instalados. Faça download e instale os seguintes programas:

Há vários passos pós-instalação:

  • » MSVC 2005 Express precisa ser configurado para usar Windows Platform SDK. Ele não é necessário para executar o segundo passo, como PHP não usa interface gráfica de usuário.
  • Windows Platform SDK contém um arquivo chamado WinResrc.h normalmente na pasta Include dentro do diretório de instalação do SDK. Este necessita ser copiado e renomeado para winres.h, o nome que o PHP usa para o arquivo.

Finalmente, quando usando MSVC 2005 Express na linha de comando, várias variáveis de ambiente precisam ser definidas. vsvars32.bat normalmente encontradas em C:\Program Files\Microsoft Visual Studio 8\Common7\Tools (pesquise pelo arquivo caso contrário) contém estas declarações. As variáveis de ambiente PATH, INCLUDE e LIB precisam corresponder aos diretórios bin, include e lib dos dois recentes instalados SDK adicionado para eles.

Nota: O caminho do .NET SDK pode já estar presente no arquivo vsvars32.bat, como esta instalação do próprio SDK no mesmo diretório que o Microsoft Visual C++ 2005 Express.

Bibliotecas

Para extrair os arquivos baixados, você precisará de uma ferramenta que descompacte arquivos ZIP. O Windows XP e os mais novos já incluem essa funcionalidade embutida.

Antes de você começar, você tem que baixar:

Finalmente, você precisará dos fontes do PHP. Você pode pegar a verão mais recente de desenvolvimento usando » login anônimo ao CVS, um » snapshot ou o release mais novo dos » fontes.

Juntanto tudo

Depois de baixar os pacotes necessários, você tem que extrair eles em um lugar apropriado.

  • Crie um diretório de trabalho onde todos os arquivos serão extraídos, ex.: C:\work.
  • Crie o diretório win32build nesse diretório de trabalho (C:\work) e descompate o arquivo win32build.zip nele.
  • Crie o diretório bindlib_w32 nesse diretório de trabalho (C:\work) e descompate o arquivo bindlib_w32.zip nele.
  • Extraia o código fonte do PHP no diretório de trabalho (C:\work).
  • Compile as biblioteca que você precisará (ou baixe os binários se estiverem disponíveis) e coloque os cabeçalhos e bibliotecas no diretório C:\work\win32build\include e C:\work\win32build\lib, respectivamente.
  • Se você não tem o cygwin instalado com o bison e flex, você precisará também fazer o diretório C:\work\win32build\bin disponível no PATH, assim estas ferramentas podem ser encontradas pelo script configure.

Seguindo esses passos a sua estrutura de diretório parecerá com isso:

+--C:\work
|  |
|  +--bindlib_w32
|  |  |
|  |  +--arpa
|  |  |
|  |  +--conf
|  |  |
|  |  +--...
|  |
|  +--php-5.x.x
|  |  |
|  |  +--build
|  |  |
|  |  +--...
|  |  |
|  |  +--win32
|  |  |
|  |  +--...
|  |
|  +--win32build
|  |  |
|  |  +--bin
|  |  |
|  |  +--include
|  |  |
|  |  +--lib

Se você não estiver usando o » Cygwin, você também deve criar os diretórios C:\usr\local\lib e então copie o arquivo bison.simple de C:\work\win32build\bin para C:\usr\local\lib.

Nota: Se você quiser usar o PEAR e o conviniente instalador em linha de comando, o CLI-SAPI é necessário. Para mais informação sobre PEAR e o instalador leia a documentação no web site do » PEAR.

Compilando resolv.lib

Você deve compilar a biblioteca resolv.lib. Decida se você quer ter símbolos de depuração disponíveis (bindlib - Win32 Debug) ou não (bindlib - Win32 Release), mas por favor, lembre-se da escolha que você fará, por que a biblioteca com os símbolos só montará com o PHP se o mesmo for montado em modo de depuração. Monte a configuração apropriada:

  • Para usuários de GUI, execute VC++, clicando duas-vezes em C:\work\bindlib_w32\bindlib.dsw. Então selecione Build=>Rebuild All.
  • Para usuários de linha de comando, assegure-se que as variáveis de ambiente do C++ estão registradas, ou execute vcvars.bat, e então execute um dos seguintes comandos:
    • msdev bindlib.dsp /MAKE "bindlib - Win32 Debug"
    • msdev bindlib.dsp /MAKE "bindlib - Win32 Release"

Nesse ponto, você deve ter uma resolv.lib utilizável ou nos sub-diretórios C:\work\bindlib_w32\Debug ou Release. Copie esse arquivo para o diretório C:\work\win32build\lib, sobrescrevendo o arquivo de mesmo nome nesse diretório.

Montando o PHP usando no novo sistema de montagem [Apenas PHP >=5]

Esse capítulo explica como compilar o PHP >=5 usando o novo sistema de montagem, que é baseado em CLI e muito similar com o sistema de montagem principal do PHP no Unix.

Nota: Esse sistema de montagem não está disponível no PHP 4. Favor, ler Compilando a partir dos fontes se for o seu caso.

Antes de começar, assegure-se de let Compilando a partir dos fontes e que você compilou todas as bibliotecas necessárias, como » Libxml ou » ICU (necessária para o PHP >= 6).

Primeiro, você deve abrir um Prompt de Comando do Visual Strudio, que pode estar disponível no Menu Iniciar (Start Menu). Um Prompt de Comando comum não deve funcionar, uma vez que provavelmente as variáveis de ambiente necessárias não estão configuradas. Então digite algo como cd C:\work\php-5.x.x para entrar no diretório dos fontes do PHP. Agora se prepare para começar a configurar o PHP.

O segundo passo é executar o arquivo de lote buildconf para criar o script configure, procurando o diretório por arquivos config.w32. Via de regra, esse comando também procurará nos seguintes diretórios: pecl; ..\pecl; pecl\rpc; ..\pecl\rpc. A partir do PHP 5.1.0, vodê pode alterar esse comportamento usando o argumento --add-modules-dir (ex.: cscript /nologo win32/build/buildconf.js --add-modules-dir=../php-gtk2 --add-modules-dir=../pecl).

O terceiro passo é configurar. Para ver a lista de opções de configuração disponíveis, digite cscript /nologo configure.js --help. Depois de escolher as opções que você irá habilitar/desabilitar, digite algo como cscript /nologo configure.js --disable-foo --enable-fun-ext. Usar --enable-foo=shared tentará construir a extensão 'foo' como um módulo compartilhado, carregado dinâmicamente.

O último passo é compilar. Para isso, basta executar o comandocommand nmake. Os arquivos gerados (e.g. .exe e .dll) serão colocado ou nos diretórios Release_TS our Debug_TS (se compilado com Thread safety), ou no diretórios Release ou Debug caso contrário.

É opcional, mas você também pode executar os aplicativos de teste do PHP, executando nmake test. Se você quiser rodar apenas um teste específico, você pode user a variável 'TESTS' (ex.: nmake /D TESTS=ext/sqlite/tests test - só executará testes no sqlite). Para apagar esses arquivos que foram criados durante a compilação, você pode usar o comando nmake clean.

Uma opção de configuração muito útil para montar snapshots é --enable-snapshot-build, que adiciona un novo modo de compilação (nmake build-snap). Isso tenta montar cada extensão disponível (como compartilhada, por padrão), mas ignorará erros de montagem em extensões individuais ou SAPI.

Building PHP using DSW files [PHP 4]

Compilar o PHP usando os arquivos DSW não é suportado a partir do PHP5, já que um sistema mais flexível está disponível. De qualquer forma, você ainda pode usá-los, mas tenha em mente que ele não são testados freqüentemente, então você pode ter problemas de compilação. Para compilar o PHP 4 para Windows, no entanto, essa é a única opção disponível.

Configure MVC ++

O próximo passo é configurar o MVC ++ para prepará-lo para compilar. Rode o Microsoft Visual C++, e do menu selecione Tools => Options. No diálogo que aparecerá, selecione o tab de diretórios. Depois, mude o dropdown para arquivos Executables, Includes, e Library. Suas configurações devem parecer com isso:

  • Arquivos executáveis: C:\work\win32build\bin, Usuários do Cygwin: C:\cygwin\bin
  • Arquivos inclusos: C:\work\win32build\include
  • Arquivos de Bibliotecas: C:\work\win32build\lib

Compilando

A melhor maneira de começar é compilando a versão CGI:

  • Para usuários de GUI, execute VC++, e selecione File => Open Workspace e selecione c:\work\php-4.x.x\win32\php4ts.dsw. Depois vá em Build=>Set Active Configuration e selecione a configuração desejada, ou php4ts - Win32 Debug_TS ou php4ts - Win32 Release_TS. Finalmente, selecione Build=>Rebuild All.
  • Para usuários de linha de comenado, assegure-se que você ou registrou as variáveis de ambiente do C++, ou executou vcvars.bat, e então execute um dos seguintes comando no diretório c:\work\php-4.x.x\win32:
    • msdev php4ts.dsp /MAKE "php4ts - Win32 Debug_TS"
    • msdev php4ts.dsp /MAKE "php4ts - Win32 Release_TS"
    • Nesse ponto, você deve ter um arquivo php.exe usável ou no subdiretório c:\work\php-4.x.x.\Debug_TS ou em Release_TS.

É possível fazer algumas personalizações mínimas para o processo de compilação editando o arquivo main/config.win32.h. Por exemplo, você pode muda a localização padrão do arquivo php.ini, as extensões integradas, e a localização padrão para suas extensões.

Depois, você pode querer montar a versão CLI que é feita para usar o PHP da linha de comando. Os passos são o mesmos para compilar a versão CGI, exceto que você tem que selecionar o arquivo de projeto php4ts_cli - Win32 Debug_TS ou php4ts_cli - Win32 Release_TS. Depois de uma compilação sucedida você encontrará o arquivo php.exe ou no diretório Release_TS\cli\ ou Debug_TS\cli\.

Para montar o módulo SAPI (php4isapi.dll) para integrar o PHP com o Microsoft IIS, modifique o seu arquivo de configuração para php4isapi-whatever-config e construa a dll desejada.


html/install.windows.extensions.html0100644000101200010120000005321111277240153021242 0ustar docbuilderdocbuilder Instalação de extensões no Windows

Instalação de extensões no Windows

Depois de instalar o PHP e um servidor web no Windows, você provavelmente desejará instalar algumas extensões para ter funcionalidades extras. Você pode escolher quais extensões você quer que o PHP carregue quando é iniciado modificando o arquivo php.ini. Você também pode carregar um módulo dinamicamente no seu script usando dl().

Os DLLs para extensões do PHP são prefixadas com php_.

Many extensions are built into the Windows version of PHP. This means additional DLL files, and the extension directive, are not used to load these extensions. The Windows PHP Extensions table lists extensions that require, or used to require, additional PHP DLL files. Here's a list of built in extensions:

No PHP 4 (atualizado PHP 4.3.11): BCMath, Caledar, COM, Ctype, FTP, MySQL, ODBC, Overload, PCRE, Session, Tokenizer, WDDX, XML e Zlib

No PHP 5 (atualizado PHP 5.0.4), as seguintes mudanças existem. Embutido: DOM, LibXML, Iconv, SimpleXML, SPL e SQLite. E os seguintes não são mais embutidos: MySQL e Overload.

A localização padrão que o PHP procura por extensões é C:\php4\extensions no PHP 4 e C:\php5 no PHP 5. Para mudar esta configuração para refletir sua instalação do PHP, edite o arquivo php.ini:

  • Você precisará mudar a configuração extension_dirpara apontar o diretório onde suas extensões estão guardadas, ou onde você colocou os arquivos php_*.dll. Por exemplo:

    extension_dir = C:\php\extensions

  • Habilite as extensão(ões) no arquivo php.ini que você quiser descomentando as linhas extension=php_*.dll. Isso é feito removendo o ; na antes da linha com a extensão que você quer carregar.

    Exemplo #1 Habilitar a extensão Bzip2 para o PHP-Windows

    // Mude a seguinte linha de ...
    ;extension=php_bz2.dll
    
    // ... para
    extension=php_bz2.dll

  • Algumas das extensões precisam de DLLs extras para funcionarem. Algumas delas podem ser encontradas no pacote da distribuição, na pasta C:\php\dlls\ no PHP 4 ou na pasta principal no PHP 5, mas algumas, por exemplo o Oracle (php_oci8.dll) requerem DLLs que não estão agregadas ao pacote da distribuição. Se você estiver instalando o PHP 4, copie as DLLs agregadas da pasta C:\php\dlls para a pasta principal C:\php. Não se esqueça de incluir C:\php na variável de ambiente PATH (esse processo é explicado em outra página, nesse FAQ).

  • Algumas destas dlls não sao embutidas com a distribuição do PHP. Veja a documentação de cada extensão para maiores detalhes. Também leia o manual na sessão entitulada Instalação de extensões PECL para detalhes sobre PECL. Um crestente número de extensões para o PHP são encontradas no PECL, e estas extensões precisam de um download separado.

Nota: Se você estiver executando a versão de módulo do servidor do PHP lembre de reiniciar o servidor web para que as mudanças no arquivo php.ini sejam efetivadas.

A tabela a seguir descreve algumas das extensões disponíveis e requer dlls adicionais.

Extensões do PHP
Extensão Descrição Notas
php_bz2.dll Funções de Compressão de bzip2 Nenhuma
php_calendar.dll Funções de Conversão de Calendar Integrado desde o PHP 4.0.3
php_crack.dll Funções de Crack Nenhuma
php_ctype.dll Família de Funções ctype Integrado desde o PHP 4.3.0
php_curl.dll Biblioteca de Funções de Cliente URL - CURL Requer: libeay32.dll, ssleay32.dll (agregado)
php_dba.dll Camada de Funções de Abstração de Banco de Dados DBA Nenhuma
php_dbase.dll Funções de dBase Nenhuma
php_dbx.dll Funções dbx  
php_domxml.dll Funções DOM XML PHP <= 4.2.0 requer: libxml2.dll (agregado) PHP >= 4.3.0 requer: iconv.dll (agregado)
php_dotnet.dll Funções .NET PHP <= 4.1.1
php_exif.dll Funções EXIF php_mbstring.dll. e, php_exif.dll devem ser carregados depois de php_mbstring.dll no arquivo php.ini.
php_fbsql.dll Funções FrontBase PHP <= 4.2.0
php_fdf.dll Funções de Formato de Dados de Formulários (Forms Data Format) FDF. Requer: fdftk.dll (agregado)
php_filepro.dll Funções de filePro Acesso apenas de Leitura
php_ftp.dll Funções de FTP Integrado desde o PHP 4.0.3
php_gd.dll Funções da biblioteca de imagens GD Removido no PHP 4.3.2. Note também que funções truecolor functions não estão disponíveis no GD1, ao invés, use php_gd2.dll.
php_gd2.dll Funções da biblioteca de imagens GD GD2
php_gettext.dll Funções de Gettext PHP <= 4.2.0 requer gnu_gettext.dll (agregado), PHP >= 4.2.3 requer libintl-1.dll, iconv.dll (agregado).
php_hyperwave.dll Funções de HyperWave Nenhuma
php_iconv.dll Conversão de tabela de caracteres ICONV Requer: iconv-1.3.dll (agregado), PHP >=4.2.1 iconv.dll
php_ifx.dll Funções de Informix Requer: Informix libraries
php_iisfunc.dll Funções de manuseio de IIS Nenhuma
php_imap.dll Funções de IMAP POP3 e NNTP Nenhuma
php_ingres.dll Funções de Ingres II Requer: Ingres II libraries
php_interbase.dll Funções de InterBase Requer: gds32.dll (agregado)
php_java.dll Funções de Java PHP <= 4.0.6 requer: jvm.dll (agregado)
php_ldap.dll Funções de LDAP PHP <= 4.2.0 requer libsasl.dll (agregado), PHP >= 4.3.0 requer libeay32.dll, ssleay32.dll (agregado)
php_mbstring.dll Funções de Multi-Byte String Nenhuma
php_mcrypt.dll Funções de Mcrypt Encryption Requer: libmcrypt.dll
php_mhash.dll Funções de Mhash PHP >= 4.3.0 requer: libmhash.dll (agregado)
php_mime_magic.dll Funções de Mimetype Requer: magic.mime (agregado)
php_ming.dll Funções de Ming para Flash Nenhuma
php_msql.dll Funções de mSQL Requer: msql.dll (agregado)
php_mssql.dll Funções de MSSQL Requer: ntwdblib.dll (agregado)
php_mysql.dll Funções de MySQL PHP >= 5.0.0, requer libmysql.dll (agregado)
php_mysqli.dll Funções de MySQLi PHP >= 5.0.0, requer libmysql.dll (libmysqli.dll in PHP <= 5.0.2) (agregado)
php_oci8.dll Funções de Oracle 8 Requer: Oracle 8.1+ client libraries
php_openssl.dll Funções de OpenSSL Requer: libeay32.dll (agregado)
php_overload.dll Funções de sobrecarga de objetos Integrado desde o PHP 4.3.0
php_pdf.dll Funções de PDF Nenhuma
php_pgsql.dll Funções de PostgreSQL Nenhuma
php_printer.dll Funções de Impressora Nenhuma
php_shmop.dll Funções de Memória Compartilhada Nenhuma
php_snmp.dll Funções de get and walk de SNMP Apenas no NT!
php_soap.dll Funções de SOAP PHP >= 5.0.0
php_sockets.dll Funções de Socket Nenhuma
php_sybase_ct.dll Funções de Sybase Requer: bibliotecas de cliente do Sybase
php_tidy.dll Funções de Tidy PHP >= 5.0.0
php_tokenizer.dll Funções de Tokenizer Integrado desde o PHP 4.3.0
php_w32api.dll Funções de W32api Nenhuma
php_xmlrpc.dll Funções de XML-RPC PHP >= 4.2.1 requer: iconv.dll (agregado)
php_xslt.dll Funções de XSLT PHP <= 4.2.0 requer sablot.dll, expat.dll (agregado). PHP >= 4.2.1 requer sablot.dll, expat.dll, iconv.dll (agregado).
php_yaz.dll Funções do YAZ Requer: yaz.dll (agregado)
php_zip.dll Funções para Arquivos Zip Acesso apenas de leitura
php_zlib.dll Funções de compressão de ZLib Integrado desde o PHP 4.3.0


html/install.windows.commandline.html0100644000101200010120000001664611277240153021344 0ustar docbuilderdocbuilder Command Line PHP on Microsoft Windows

Command Line PHP on Microsoft Windows

This section contains notes and hints specific to getting PHP running from the command line for Windows.

Nota: You should read the manual installation steps first!

Getting PHP to run from the command line can be performed without making any changes to Windows.

C:\PHP5\php.exe -f "C:\PHP Scripts\script.php" -- -arg1 -arg2 -arg3

But there are some easy steps that can be followed to make this simpler. Some of these steps should already have been taken, but are repeated here to be able to provide a complete step-by-step sequence.

  • Add the location of the PHP executable (php.exe, php-win.exe or php-cli.exe depending upon your PHP version and display preferences) to the PATH environment variable. Read more about how to add your PHP directory to PATH in the corresponding FAQ entry.

  • Add the .PHP extension to the PATHEXT environment variable. This can be done at the same time as amending the PATH environment variable. Follow the same steps as described in the FAQ but amend the PATHEXT environment variable rather than the PATH environment variable.

    Nota: The position in which you place the .PHP will determine which script or program is executed when there are matching filenames. For example, placing .PHP before .BAT will cause your script to run, rather than the batch file, if there is a batch file with the same name.

  • Associate the .PHP extension with a file type. This is done by running the following command:

    assoc .php=phpfile
    

  • Associate the phpfile file type with the appropriate PHP executable. This is done by running the following command:

    ftype phpfile="C:\PHP5\php.exe" -f "%1" -- %~2
    

Following these steps will allow PHP scripts to be run from any directory without the need to type the PHP executable or the .PHP extension and all parameters will be supplied to the script for processing.

The example below details some of the registry changes that can be made manually.

Exemplo #1 Registry changes

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.php]
@="phpfile"
"Content Type"="application/php"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile]
@="PHP Script"
"EditFlags"=dword:00000000
"BrowserFlags"=dword:00000008
"AlwaysShowExt"=""

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\DefaultIcon]
@="C:\\PHP5\\php-win.exe0"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\shell]
@="Open"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\shell\Open]
@="&Open"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\shell\Open\command]
@="\"C:\\PHP5\\php.exe\" -f \"%1\" -- %~2"

With these changes the same command can be written as:

"C:\PHP Scripts\script" -arg1 -arg2 -arg3
or, if your "C:\PHP Scripts" path is in the PATH environment variable:
script -arg1 -arg2 -arg3

Nota: There is a small problem if you intend to use this technique and use your PHP scripts as commandline filter, like the example below:

dir | "C:\PHP Scripts\script" -arg1 -arg2 -arg3
or
dir | script -arg1 -arg2 -arg3
You may find that the script simply hangs and nothing is output. To get this operational, you need to make another registry change.
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer]
"InheritConsoleHandles"=dword:00000001
Further information regarding this issue can be found in this » Microsoft Knowledgebase Article : 321788.


html/install.windows.html0100644000101200010120000001122411277240153017042 0ustar docbuilderdocbuilder Instalação em sistemas Windows

Instalação em sistemas Windows

Índice

Essa seção aplica-se ao Windows 98/Me e Windows NT/2000/XP/2003. O PHP não funcionará em plataformas 16 bit como o Windows 3.1 e algumas vezes nos referimos às plataformas Windows suportadas como Win32. Windows 95 não é mais suportado a partir do PHP 4.3.0.

Nota: Os Windows 98/ME/NT4 não são mais suportados a partir do PHP 5.3.0.

Nota: O Windows 95 não é mais suportado a partir do PHP 4.3.0.

Existem duas maneiras principais de instalar o PHP para o Windows: ou manualmente ou usando o instalador.

Se você tiver o Microsoft Visual Studio, você pode também compilar o PHP a partir do código-fonte original.

Uma vez que você tiver o PHP instalado no seu sistema Windows, você pode também querer carregar várias extensões para adicionar funcionalidades.

Aviso

Existem vários instaladores completos na Internet, mas nenhum deles é apoioado pelo PHP.net, nós acreditamos que usando um dos pacotes oficial para Windows de » http://www.php.net/downloads.php seja a melhor maneira de ter seu sistema seguro e otimizado.


html/install.pecl.intro.html0100644000101200010120000000603211277240153017426 0ustar docbuilderdocbuilder Introdução para instalações PECL

Introdução para instalações PECL

» PECL é um repositório de extensões PHP que estão disponíveis à você pelo sistema de pacote » PEAR. Essa seção do manual é destinada para demonstrar como obter e instalar extensões PECL.

Essas instruções presumem que /your/phpsrcdir/ seja o caminho para o código-fonte do PHP, e extname é o nome da extensão PECL. Ajuste de acordo com suas necessidades. Essas instruções também presumem uma familiaridade com o » comando pear. A informação no manual do PEAR para o comando pear também se aplica ao comando pecl.

Para ser útil, uma extensão deve ser compilada, instalada e carregada. Os métodos descritos abaixo descrevem várias instruções de como compilar e instalar as extensões, mas elas não são carregadas automaticamente. Extensões pode ser carregadas adicionando uma diretiva extension no arquivo php.ini ou pelo uso da função dl().

Quando montar módulos do PHP, é importante ter as versões apropriadas das ferramentas requiridas (autoconf, automake, libtool, etc). Veja as » Instruções para leitura anônima do CVS para detalhes sobre as ferramentas e versões necessárias.


html/install.pecl.downloads.html0100644000101200010120000000772611277240153020300 0ustar docbuilderdocbuilder Baixando extensões PECL

Baixando extensões PECL

Existem várias opções para baixar extensões PECL, tais como:

  • » http://pecl.php.net/ O web site do PECL contém informação sobre as várias extensões que são disponibilizadas pelo Time de Desenvolvimento do PHP. As informações disponíveis aqui são: ChangeLog, informação de release, requerimentos e outros detalhes similares.
  • pecl download extname Extensões PECL que têm releases listadas no web-site do PECL estão disponíveis para download e instalação usando o » comando pecl. Revisões específicas também podem ser especificadas.
  • CVS A maioria das extensões PECL também residem no CVS. Um visualizado web pode ser acessado em » http://cvs.php.net/pecl/. Para baixar direto do CVS, a seguinte seqüência de comando pode ser usada. Perceba que phpfi é a senha para o usuário cvsread:


    $ cvs -d:pserver:cvsread@cvs.php.net:/repository login
    $ cvs -d:pserver:cvsread@cvs.php.net:/repository co pecl/extname

  • Downloads do Windows Usuários do Windows podem encontrar binários compilados das extensões PECL baixando a Coleção de módulos PECL da página de » Downloads do PHP, e baixando um » Snapshot do PECL ou uma extensão DLL em » PECL4WIN. Para compilar o PHP no Windows, leia o capítulo apropriado.

html/install.pecl.windows.html0100644000101200010120000000355411277240153017773 0ustar docbuilderdocbuilder PECL para usuários Windows

PECL para usuários Windows

Como qualquer outra extensão DLL do PHP, mova as DLLs das extensões no diretório extension_dir e inclua elas no arquivo php.ini. Por exemplo:


extension=php_extname.dll

Depois disso, reinicie o servidor web.


html/install.pecl.pear.html0100644000101200010120000000571111277240153017225 0ustar docbuilderdocbuilder Compilando extensões compartilhadas PECL com o comando pecl

Compilando extensões compartilhadas PECL com o comando pecl

PECL torna fácil criar extensões compartilhadas do PHP. Usando o » comando pecl, faça o seguinte:


$ pecl install extname

Isso baixará o código-fonte de extname, compilará e instalará extname.so no seu extension_dir. extname.so pode, então, ser carregado no arquivo php.ini

Por padrão, o comando pecl não instalará pacotes que estão marcados como alpha ou beta. Se nenhum pacote estável estiver disponível, você pode instalar um pacote beta usando o seguinte comando:


$ pecl install extname-beta

Você também pode instalar uma versão específica, usando essa forma:


$ pecl install extname-0.1

Nota: Depois de habilitada a extensão no php.ini, reiniciar o servidor web é requerido para as modificações funcionarem.


html/install.pecl.phpize.html0100644000101200010120000000626511277240153017602 0ustar docbuilderdocbuilder Compilando extensões compartilhadas PECL com phpize

Compilando extensões compartilhadas PECL com phpize

Algumas vezes, usar o instalador pecl não é uma opção. Isso pode acontecer se você estiver atrás de um firewall, ou porque a extensão que você quer instalar não está disponível como um pacote compatível com PECL, por exemplo, extensões ainda sem release no CVS. Se você precisar compilar tal extensão, você pode usar as ferramentas de compilação de baixo nível para realizar a compilação manualmente.

O comando phpize é usado para preparar o ambiente de compilação para uma extensão do PHP. No exemplo seguinte, os fontes para uma extensão estão em um diretório com nome extname:

$ cd extname
$ phpize
$ ./configure
$ make
# make install

Uma instalação bem sucedida criará um arquivo extname.so e o colocará no diretório de extensões do PHP. Você precisará ajustar o arquivo php.ini e acidionar uma linha extension=extname.so antes de usar a extensão.

Se o sistema não tiver o comando phpize, e pacotes pré-compilados são usados (como RPM's), certifique-se de instalar a versão devel apropriada do pacote do PHP, uma vez que eles freqüentemente contém o comando phpize assim como os arquivos de cabeçalho para compilar o PHP e suas extensões.

Execute phpize --help para mostra informações de uso adicionais.


html/install.pecl.static.html0100644000101200010120000000621411277240153017564 0ustar docbuilderdocbuilder Compilando extensões PECL estaticamente no PHP

Compilando extensões PECL estaticamente no PHP

Você pode decidir que precisa montar uma extensão PECL estaticamente no seu binário do PHP. Para isso, você precisará colocar os fontes da extensão no diretório php-src/ext/ e dizer para o sistema de montagem do PHP para regenerar o script configure.

$ cd /your/phpsrcdir/ext
$ pecl download extname
$ gzip -d < extname.tgz | tar -xvf -
$ mv extname-x.x.x extname

Isso resultará no seguinte diretório:


/your/phpsrcdir/ext/extname

Daqui, faça o PHP reconstruir o script configure e monte o PHP normalmente:


$ cd /your/phpsrcdir
$ rm configure
$ ./buildconf --force
$ ./configure --help
$ ./configure --with-extname --enable-someotherext --with-foobar
$ make
$ make install

Nota: Para executar o script 'buildconf' você precisa de autoconf 2.13 e automake 1.4+ (versões mais novas do autoconf podem funcionar, mas não são suportadas).

Se --enable-extname ou --with-extname são usadas depende da extensão. Tipicamente, uma extensão que não requer bibliotecas externa usa --enable. Para ter certeza, rode o seguinte comando após buildconf:


$ ./configure --help | grep extname


html/install.pecl.html0100644000101200010120000000362111277240153016275 0ustar docbuilderdocbuilder Instalação das extensões PECL

html/install.problems.faq.html0100644000101200010120000000260111277240153017740 0ustar docbuilderdocbuilder Leia o FAQ

Leia o FAQ

Alguns problemas são mais comuns que outros. Os mais comuns estão listados no FAQ do PHP, parte desse manual.


html/install.problems.support.html0100644000101200010120000000477511277240153020723 0ustar docbuilderdocbuilder Outros problemas

Outros problemas

Se você ainda estiver sem solução, alguém na lista de e-mail de instalação do PHP pode te ajudar. Você deve checar o histórico de mensagens antes, no caso de alguém já ter respondido outra pessoa que tenha tido o mesmo problema que você. Os históricos estão disponíveis na página de suporta em » http://www.php.net/support.php. Para se inscrever na lista de e-mail de instalação do PHP, envie um e-mail vazio para » php-install-subscribe@lists.php.net. O endereço da lista de e-mail é » php-install@lists.php.net.

Se você quiser pedir ajuda na lista de e-mail, por favor, tente ser preciso e dar os detalhes necessários sobre seu ambiente (qual sistema operacional, que versão do PHP, qual servidor web, se você está executando PHP com CGI ou módulo de servidor, safe mode, etc...), e, de preferência, código suficiente para permitir que outros reproduzam e testem seu problema.


html/install.problems.bugs.html0100644000101200010120000000401711277240153020134 0ustar docbuilderdocbuilder Relatos de Bug

Relatos de Bug

Se você acha que encontrou um bug (falha) no PHP, por favor, relate. Os desenvolvedores do PHP provavelmente não sabem sobre ele, e, a não ser que você o relate, provavelmente ele não será reparado. Você pode relatar bugs usando o sistema de caça-bugs em » http://bugs.php.net/. Por favor, não mande relatos de bug nas listas de e-mail ou e-mails pessoais. O sistema de bugs também é adequado para o envio de requisição de características (features).

Leia o documento » Como relatar um bug antes de enviar qualquer relato de bug!


html/install.problems.html0100644000101200010120000000274311277240153017201 0ustar docbuilderdocbuilder Problemas?

html/configuration.file.html0100644000101200010120000001702311277240153017473 0ustar docbuilderdocbuilder O arquivo de configuração

O arquivo de configuração

O arquivo de configuração (php.ini) é lido quando o PHP inicia. Para as versões de módulo de servidor, isso acontece apenas quando o servidor web for inicializado. Para as versões CGI e CLI, isso acontece à cada invocação.

php.ini é procurado nesses lugares (na ordem):

  • Local específico do módulo SAPI (diretiva PHPIniDir no Apache 2, -c opção de linha de comando quando CGI e CLI, parâmetro php_ini no NSAPI, variável de ambiente PHP_INI_PATH no THTTPD)

  • A variável de ambiênte PHPRC. Antes do PHP 5.2.0 isto era conferido depois da chave de registro mencionada abaixo.

  • A partir do PHP 5.2.0, a localização do arquivo php.ini pode ser definida para versões diferentes do PHP. As seguintes chaves do registro são examinadas na ordem: [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y.z], [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y] e [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x], aonde x, y e z significam a versão maior, menor e release do PHP. Se houver um valor para IniFilePath nestas chaves, então o primeiro encontrado será utilizado para a localização do php.ini (apenas Windows).

  • HKEY_LOCAL_MACHINE\SOFTWARE\PHP\IniFilePath (Local no registro do Windows)

  • Diretório de trabalho atual (exceto CLI)

  • O diretório do servidor web (para módulo SAPI), ou diretório do PHP (caso contrário, no Windows)

  • Diretório do Windows (C:\windows ou C:\winnt) (para o Windows), ou ou a opção de tempo de compilação --with-config-file-path

Se php-SAPI.ini existe (onde SAPI é o SAPI usado, então o nome de arquivo é, por exemplo, php-cli.ini ou php-apache.ini), é usado ao invés do arquivo php.ini. nome SAPI pode ser determinado pela função php_sapi_name().

Nota: O servidor web Apache muda o diretório para raiz durante a inicialização, causando com que o PHP tente ler o arquivo php.ini da raiz do arquivo de sistema, se ele existir.

As diretivas do arquivo php.ini tratadas por extensões são documentadas respectivamente nas páginas das próprias extensões. A lista de diretivas principais está disponível no apêdice. No entanto, provavelmente nem todas as diretivas do PHP estão documentadas no manual. Para uma lista completa das diretivas disponíveis na sua versão do PHP, por favor leia seu arquivo php.ini. Também há alternativa de baixar a » última versão do arquivo php.ini dos repositórios do CVS, que pode ser de ajuda também.

Exemplo #1 php.ini example

; any text on a line after an unquoted semicolon (;) is ignored
                        [php] ; section markers (text within square brackets) are also ignored
                        ; Boolean values can be set to either:
                        ;    true, on, yes
                        ; or false, off, no, none
                        register_globals = off
                        track_errors = yes

                        ; you can enclose strings in double-quotes
                        include_path = ".:/usr/local/lib/php"

                        ; backslashes are treated the same as any other character
                        include_path = ".;c:\php\lib"

A partir do PHP 5.1.0, é possível acessar as variáveis .ini dentro dos arquivos .ini. Exemplo:open_basedir = ${open_basedir} ":/new/dir".


html/configuration.changes.modes.html0100644000101200010120000000735011277240153021274 0ustar docbuilderdocbuilder Aonde uma configuração deve ser definida

Aonde uma configuração deve ser definida

Estes modos determinam quando e aonde uma diretiva do PHP pode ou não pode ser definida, e cada diretiva no manual faz referencia a um destes modos. Por exemplo, algumas definições podem ser feitas em um script PHP usando ini_set(), aonde outros podem requerer php.ini ou httpd.conf.

Por exemplo, a configuração output_buffering é PHP_INI_PERDIR portanto não pode ser definida usando ini_set(). Entretanto a diretiva display_errors é PHP_INI_ALL portanto pode ser definida em qualquer lugar incluindo com ini_set().

Definição dos modos PHP_INI_*
Modo Significado
PHP_INI_USER A entrada pode ser definida nos scripts do usuário (como com ini_set()) ou no registro do Windows
PHP_INI_PERDIR A entrada pode ser definida no php.ini, .htaccess ou httpd.conf
PHP_INI_SYSTEM A entrada pode ser definida no php.ini ou httpd.conf
PHP_INI_ALL Entrada pode ser definida em qualquer lugar


html/configuration.changes.html0100644000101200010120000002623611277240153020172 0ustar docbuilderdocbuilder Como mudar as configurações

Como mudar as configurações

Executando PHP como módulo do Apache

Quando usar o PHP como módulo do Apache, você pode mudar as configurações usando diretivas nos arquivos de configuração do Apache (ex.: httpd.conf e .htaccess). Você precisa de privilégios "AllowOverride Options" ou "AllowOverride All" para isso.

Há vários diretivas do Apache que você pode mudar a configuração do PHP de dentro dos arquivos dos arquivos de configuração do Apache. Para uma lista de quais diretivas são PHP_INI_ALL, PHP_INI_PERDIR, or PHP_INI_SYSTEM, olhe no apêndice Lista de diretivas do arquivo php.ini.

php_value nome valor

Configura o valor da diretiva especificada. Pode ser usado apenas com diretivas do tipo PHP_INI_ALL e PHP_INI_PERDIR. Para limpar um valor configurado anteriormente, use o valor none.

Nota: Não use php_value para configurar valores booleanos. php_flag (veja abaixo) deve ser usada, ao invés.

php_flag nome on|off

Usado para configurar diretivas de configuração booleanas. Pode ser usada apenas com diretivas do tipo PHP_INI_ALL e PHP_INI_PERDIR.

php_admin_value nome valor

Configura o valor da diretiva especificada. Isso não pode ser usado em arquivos .htaccess. Qualquer tipo diretiva configurada com php_admin_value não pode ser sobrescrita por diretivas .htaccess ou ini_set().. Para limpar um valor configurado anteriormente, use o valor none.

php_admin_flag nome on|off

Usado para configura diretiva de configuração booleana. Isso não pode ser usado em arquivos .htaccess. Qualquer tipo diretiva configurada com php_admin_flag não pode ser sobrescrita por diretivas .htaccess. Para limpar um valor configurado anteriormente, use o valor none.

Exemplo #1 Exemplo de configuração do Apache

<IfModule mod_php5.c>
                                    php_value include_path ".:/usr/local/lib/php"
                                    php_admin_flag safe_mode on
                                </IfModule>
                                <IfModule mod_php4.c>
                                    php_value include_path ".:/usr/local/lib/php"
                                    php_admin_flag safe_mode on
                                </IfModule>

Cuidado

Constantes PHP não existem fora do PHP. Por exemplo, no arquivo httpd.conf você não pode usar constantes do PHP como E_ALL ou E_NOTICE para configurar a diretiva error_reporting, já que elas não terão significado algum e serão avaliadas como 0. Ao invés, use os valores de bitmask associados. Essas constantes podem ser usados no arquivo php.ini

Mudando configuração do PHP através do registro do Windows

Quando executar o PHP no Windows, os valores de configuração pode ser modificados para cada diretório, usando o registro do Windows. Os valores de configuração são guardados na chave de registro HKLM\SOFTWARE\PHP\Per Directory Values, nas sub-chaves correspondentes aos caminhos dos diretórios. Por exemplo, valores para o diretório c:\inetpub\wwwroot estariam guardadas na chave HKLM\SOFTWARE\PHP\Per Directory Values\c\inetpub\wwwroot. As configurações para o diretório estariam ativos para qualquer script rodando desse diretório ou qualquer subdiretório dele. Os valores na chave devem ter o nome da diretiva de configuração do PHP e um valor string. Constantes do PHP nos valores não são avaliados. Entretanto, apenas valores de configurações modificáveis no PHP_INI_USER podem ser definidos desta maneira, valores PHP_INI_PERDIR não podem.

Outras interfaces para PHP

Independente de como você execute PHP, você pode mudar certos valore durante a execução de seus scripts através ini_set(). Veja a documentação na página ini_set() para mais informações.

Se você estiver interessado na lista completa de configurações no seu sistema com o valores atuais, você pode executar a função phpinfo() , e revisar a página resultante. Você pode também acessar os valores de configurações de diretivas individuais em tempo de execução usando ini_get() ou get_cfg_var().


html/configuration.html0100644000101200010120000000307711277240153016561 0ustar docbuilderdocbuilder Configuração em tempo de execução

html/install.html0100644000101200010120000001325111277240153015353 0ustar docbuilderdocbuilder Instalação e Configuração

Instalação e Configuração


html/language.basic-syntax.phpmode.html0100644000101200010120000002067211277240153021534 0ustar docbuilderdocbuilder Escapando o HTML

Escapando o HTML

Quando o PHP interpreta um arquivo, ele procura pelas tags de abertura e fechamento, as quais indicam para o PHP começar e parar de interpretar o código entre elas. Interpretar desta maneira permite ao PHP ser embutido em todos os tipos de documentos, já que tudo, fora o par de tags de abertura e fechamento é ignorado pelo interpretador do PHP. Na maioria das vezes você verá o PHP embutido em documentos HTML como neste exemplo.

<p>Isto vai ser ignorado.</p>
<?php echo 'Enquanto isto vai ser interpretado.'?>
<p>Isto também vai ser ignorado.</p>

Você também pode usar estruturas mais avançadas:

Exemplo #1 Escapando de modo avançado

<?php
if ($expression) {
    
?>
    <strong>Isto é verdadeiro.</strong>
    <?php
} else {
    
?>
    <strong>Isto é falso.</strong>
    <?php
}
?>

Isto funciona como o esperado, porque o quando PHP atinge o ?> fechando as tags, ele simplesmente começa a enviar para a saída qualquer coisa (exceto newlines em seguida - veja separação de instruções) que encontre até que atinja outra tag de abertura. O exemplo dado aqui é resumido, claro, mas para escrever grandes blocos de texto, sair do modo de interpretação do PHP é geralmente mais eficiente do que enviar todo o texto atráves de echo() ou print().

Existem quatro diferentes pares de tags de abertura e fechamento que podem ser usados com o PHP. Duas dessas, <?php ?> e <script language="php"> </script>, estão sempre disponíveis. As outras duas são tags curtas e tags no estilo ASP, e podem ser ativadas e desativadas a partir do arquivo de configuração php.ini. Assim, ao passo que algumas pessoas acham as tags curtas e tags no estilo ASP conveniente, elas são menos portáveis, e geralmente não recomendadas.

Nota: Também note que se você está embutindo o PHP no XML ou XHTML você irá precisar usar as tags <?php ?> para continuar cumprindo com os padrões.

Exemplo #2 Abrindo e Fechando as Tags do PHP

1.  <?php echo 'se você quer servir documentos XHTML ou XML, faça assim'?>

2.  <script language="php">
        
echo 'alguns editores (como o FrontPage) não
              gostam de instruções de processamento'
;
    
</script>

3.  <? echo 'esta é a mais simples, uma instrução de processamento SGML'?>
    <?= expressão ?> Isto é um atalho para "<? echo expressão ?>"

4.  <% echo 'Você pode opcionalmente usar tags no estilo ASP'; %>
    <%= $variavel; # Isto é um atalho para "<% echo . . ." %>

Enquanto as tags vistas nos exemplos um e dois estão ambas sempre disponíveis, o exemplo um é mais comumente usado, e recomendado, das duas.

Tags curtas (exemplo três) estão disponíveis apenas quando são ativadas pela configuração short_open_tag no arquivo php.ini ou se o PHP foi configurado com a opção --enable-short-tags.

Tags no estilo ASP (exemplo quatro estão disponíveis apenas quando elas estão ativadas atráves da diretiva de configuração asp_tags no arquivo php.ini.

Nota: O uso de tags curtas deve ser evitado ao desenvolver aplicações ou bibliotecas que serão redistribuídas, ou serão usadas em servidores PHP que não estão sobre o seu controle, porque as tags curtas podem não ser suportadas no servidor em questão. Para código portável, redistribuível, tenha certeza de não usar tags curtas.


html/language.basic-syntax.instruction-separation.html0100644000101200010120000000650411277240153024622 0ustar docbuilderdocbuilder Separação de instruções

Separação de instruções

Como no C ou Perl, o PHP requer que as instruções sejam terminadas com um ponto-e-vírgula ao final de cada comando. A tag de fechamento de um bloco de código PHP automaticamente implica em um ponto-e-vírgula; você não precisa ter um ponto-e-vírgula terminando a última linha de um bloco PHP. A tag de fechamento irá incluir uma nova linha logo após, se estiver presente.

<?php
    
echo 'Isto é um teste';
?>

<?php echo 'Isto é um teste' ?>

<?php echo 'Nós omitimos a última tag de fechamento';

Nota: A tag de fechamento de um bloco PHP ao final de um arquivo é opcional, e em alguns casos omiti-la é útil ao usar include() ou require(), assim espaço em branco indesejado não irá aparecer ao final dos arquivos, e você ainda será capaz de adicionar cabeçalhos a resposta após. Também é útil se você usar output buffering, e você não quer ter adicionado um espaço em branco ao final das partes geradas por arquivos incluídos.


html/language.basic-syntax.comments.html0100644000101200010120000001136711277240153021726 0ustar docbuilderdocbuilder Comentários

Comentários

O PHP suporta comentários no estilo 'C', 'C++' e shell do Unix shell (estilo Perl). Por exemplo:

<?php
    
echo 'Isto é um teste'// Estilo de comentário de uma linha em  c++
    /* Este é um comentário de múltiplas linhas
       ainda outra linha de comentário */
    
echo 'Isto é ainda outro teste';
    echo 
'Um teste final'# Este é um comentário de uma linha no estilo shell
?>

Os comentários de estilo "uma linha" apenas comentam até o final da linha ou do bloco PHP de código corrente, o que chegar primeiro. Isto significa que o código HTML após // ... ?> ou # ... ?> SERÁ exibido: ?> Interrompe o modo PHP e retorna para o modo HTML, e // ou # não podem influenciar isto. Se a diretiva de configuração asp_tags estiver ativa, ela funciona da mesma maneira que // %> e # %>. Entretando, a tag </script> não interrompe o modo PHP em um comentário de uma linha.

<h1>Isto é um <?php # echo 'simples';?> exemplo.</h1>
<p>O cabeçalho acima irá dizer 'Isto é um exemplo'.</p>

Comentários no estilo 'C' termina ao primeiro */ encontrado. Tenha certeza de não aninhar comentários no estilo 'C'. É fácil fazer este engano se você esta tentando comentar grandes blocos de código.

<?php
 
/*
    echo 'Isto é um teste'; /* Este comentário irá causar um problema */
 
*/
?>


html/language.basic-syntax.html0100644000101200010120000000275011277240153020076 0ustar docbuilderdocbuilder Sintaxe Básica

html/language.types.intro.html0100644000101200010120000002052211277240153017764 0ustar docbuilderdocbuilder Introdução

Introdução

O PHP suporta oito tipos primitivos.

São quatro tipos básicos:

Dois tipos compostos:

E finalmente dois tipos especiais:

Este manual também introduz alguns pseudo-tipos por razões de legibilidade:

E a pseudo-variável $... .

Algumas referências para o tipo "double" podem aparecer no manual. Considere o tipo double como sendo o float; os dois nomes existem por razões históricas.

O tipo de uma variável geralmente não é definido pelo programador: isto é decidido em tempo de execução pelo PHP, dependendo do contexto na qual a variável é usada.

Nota: Para checar o tipo e valor de uma expressão, utilize a função var_dump(). Para ter uma representação legível de um tipo para debugar, use a função gettype(). Para verificar por um certo tipo, não use gettype(), mas sim as funções is_tipo. Vejamos alguns exemplos:

<?php
$a_bool 
TRUE;   // um booleano
$a_str  "foo";  // uma string
$a_str2 'foo';  // uma string
$an_int 12;     // um inteiro

echo gettype($a_bool); // mostra:  boolean
echo gettype($a_str);  // mostra:  string

// Se ele é um inteiro, incrementa-o com quatro
if (is_int($an_int)) {
    
$an_int += 4;
}

// Se $bool é uma string, mostre-a
// (não imprime nada)
if (is_string($a_bool)) {
    echo 
"String: $a_bool";
}
?>

Para forçar a conversão de uma variável para um certo tipo, você pode converter (cast) a variável ou usar a função settype() nela.

Note que uma variável pode ser avaliada com valores diferentes em certas situações, dependendo de qual tipo ela é no momento. Para mais informações, veja a seção Manipulação de tipos. A tabela de conversão de tipos também pode ser útil, como mostra exemplos de comparações de vários tipos.


html/language.types.boolean.html0100644000101200010120000002262511277240153020256 0ustar docbuilderdocbuilder Booleanos

Booleanos

Este é o tipo mais simples. Um booleano expressa um valor verdade. Ele pode ser TRUE ou FALSE.

Nota: O tipo booleano foi introduzido no PHP 4.

Sintaxe

Para especificar um literal booleano, use as palavras-chave TRUE ou FALSE. Ambas são case-insensitive.

<?php
$foo 
True// atribui o valor True para $foo
?>

Tipicamente você pode utilizar algum tipo de operador que retorne um valor booleano, e passá-lo para uma estrutura de controle.

<?php
// == É um operador que testa
// igualdade e retorna um booleano.
if ($action == "mostrar_versao") {
    echo 
"A versão é 1.23";
}

// isto não é necessário ...
if ($exibir_separadores == TRUE) {
    echo 
"<hr>\n";
}

// ... porque você pode simplesmente escrever isso:
if ($exibir_separadores) {
    echo 
"<hr>\n";
}
?>

Convertendo para booleano

Para converter explicitamente um valor para booleano, utilize-se dos modificadores (bool) ou (boolean). Entretanto, na maioria dos casos, você não precisa utilizar o modificador, desde que qualquer valor será convertido automaticamente se um operador, função ou estrutura de controle requerer um argumento booleano.

Veja também Manipulação de tipos.

Ao converter para booleano, os seguintes valores são considerados FALSE:

Qualquer outro valor é considerado TRUE (incluindo qualquer recurso).

Aviso

-1 é considerado TRUE, como qualquer valor não zero (negativos ou positivos)!

<?php
var_dump
((bool) "");        // bool(false)
var_dump((bool) 1);         // bool(true)
var_dump((bool) -2);        // bool(true)
var_dump((bool) "foo");     // bool(true)
var_dump((bool) 2.3e5);     // bool(true)
var_dump((bool) array(12)); // bool(true)
var_dump((bool) array());   // bool(false)
var_dump((bool) "false");   // bool(true)
?>


html/language.types.integer.html0100644000101200010120000003430711277240153020274 0ustar docbuilderdocbuilder Inteiros

Inteiros

Um inteiro é um número do conjunto Z = {..., -2, -1, 0, 1, 2, ...}.

Veja também: Inteiros de tamanho arbitrário / GMP, Números de ponto flutuante e Precisão arbitrária / BCMath.

Sintaxe

Inteiros podem ser especificados em notação decimal (base 10), hexadecimal (base 16) ou octal (base 8), opcionalmente precedido de sinal (- ou +).

Para usar a notação octal, você precisa preceder o número com um 0 (zero). Para utilizar a notação hexadecimal, preceda número com 0x.

Exemplo #1 Literais inteiras

<?php
$a 
1234// número decimal
$a = -123// um número negativo
$a 0123// número octal (equivalente a 83 em decimal)
$a 0x1A// número hexadecimal (equivalente a 26 em decimal)
?>

Formalmente, as possíveis representação de inteiros são:

decimal     : [1-9][0-9]*
            | 0

hexadecimal : 0[xX][0-9a-fA-F]+

octal       : 0[0-7]+

integer     : [+-]?decimal
            | [+-]?hexadecimal
            | [+-]?octal

O tamanho de um inteiro é dependente de plataforma, sendo um número aproximado a 2 bilhões o valor mais comum (número de 32 bits com sinal). O PHP não suporta inteiros sem sinal. O tamanho do inteiro pode ser determinado pela constante PHP_INT_SIZE, e seu o valor máximo com a constante PHP_INT_MAX desde o PHP 4.4.0 e PHP 5.0.5.

Aviso

Se um dígito inválido é passado para inteiro octal (i.e. 8 ou 9), o resto do número é ignorado.

Exemplo #2 Octal weirdness

<?php
var_dump
(01090); // 010 octal = 8 decimal
?>

Overflow de inteiros

Se você especifica um número além dos limites do tipo inteiro, ele será interpretado como um ponto flutuante. Assim, uma operação que resulte em um número além dos limites do tipo inteiro, um ponto flutuante será retornado.

<?php
numero_grande =  2147483647;
var_dump($numero_grande);
// saida: int(2147483647)

$numero_grande =  2147483648;
var_dump($numero_grande);
// saida: float(2147483648)

// é válido também para inteiros hexadecimais entre 2^31 e 2^32-1:
var_dump0xffffffff );
// output: float(4294967295)

// porém não é válido para hexadecimais com valores acima de 2^32-1:
var_dump0x100000000 );
// output: int(2147483647)

$milhao 1000000;
$numero_grande =  50000 $milhao;
var_dump($numero_grande);
// saida: float(50000000000)
?>

Aviso

Infelizmente, há um bug no PHP que faz que ele nem sempre trabalhe corretamente quando há números negativos envolvidos. Por exemplo, quando você faz -50000 * $milhao, o resultado será -429496728. Entretanto, quando ambos os operadores são positivos, isso não ocorre.

Isto foi resolvido no PHP 4.1.0.

Não há operador de divisão inteira no PHP. 1/2 retorna o ponto flutuante 0.5. Você pode moldar (cast) o valor para inteiro para sempre truncar o número, ou você pode usar a função round().

<?php
var_dump
(25/7);         // float(3.5714285714286)
var_dump((int) (25/7)); // int(3)
var_dump(round(25/7));  // float(4) 
?>

Convertendo para inteiro

Para converter explicitamente um valor para inteiro, utilize-se dos modificadores (int) ou (integer). Entretanto, na maioria dos casos, você não precisa utilizar o modificador, desde que qualquer valor será automaticamente convertido se um operador, função ou estrutura de controle requerer um argumento inteiro. Você também pode converter o valor de um inteiro com a função intval().

Veja também Manipulação de tipos.

de booleanos

FALSE será retornado como 0 (zero), e TRUE como 1 (um).

De números de ponto flutuante

Quando convertendo de números de ponto flutuante para inteiros, o número será truncado.

Se o número convertido estiver além dos limites de um inteiro (usualmente +/- 2.15e+9 = 2^31), o resultado é indefinido, mesmo porque o ponto flutuante não tem a mesma precisão para fornecer um resultado inteiro exato. Não se preocupe, pois nenhum aviso será emitido neste caso!

Aviso

Nunca modifique uma fração desconhecida para inteiro, porque isto pode fornecer resultados inesperados as vezes.

<?php
echo (int) ( (0.1+0.7) * 10 ); // imprime 7!
?>

Para maiores informações, veja o alerta sobre a precisão de número flutuante..

De outros tipos

Cuidado

O comportamento da conversão de um inteiro é indefinido de outros tipos. Atualmente, o comportamento é o mesmo como se primeiro o valor fosse convertido para booleano. Entretanto, não confie neste comportamento, pois ele pode mudar sem aviso.


html/language.types.float.html0100644000101200010120000001157711277240153017750 0ustar docbuilderdocbuilder Números de ponto flutuante

Números de ponto flutuante

Números de ponto flutuante (também conhecidos como "floats", "doubles" ou "números reais") podem ser especificados utilizando qualquer uma das seguintes sintaxes:

<?php
$a 
1.234
$b 1.2e3
$c 7E-10;
?>

Formalmente:

LNUM          [0-9]+
DNUM          ([0-9]*[\.]{LNUM}) | ({LNUM}[\.][0-9]*)
EXPONENT_DNUM ( ({LNUM} | {DNUM}) [eE][+-]? {LNUM})

O tamanho de um número de ponto flutuante é dependente de plataforma, sendo o máximo de ~1.8e308 com uma precisão de 14 dígitos decimais um valor comum (número de 64 bits no formato IEEE).

Aviso

Precisão de números de ponto flutuante

É típico que frações simples como 0.1 ou 0.7 não podem ser convertidos em sua representação binária interna sem uma pequena perda de precisão. Isto pode causar erros confusos: por exemplo, floor((0.1+0.7)*10) irá retornar 7 em vez do esperado 8, como resultado da representação interna realmente ser algo como 7.9999999999....

Isto está relacionado ao fato de que é impossível expressar, exatamente, algumas frações em notação decimal com um número finito de dígitos. Por exemplo, 1/3 na forma decimal se torna 0.3333333. . ..

Então, nunca confie em resultados com números de ponto flutuante até a última casa e nunca compare números de ponto flutuante em igualdades. Se você realmente precisar de alta precisão, você pode utilizar as funções matemáticas de precisão arbitrária ou as funções relacionadas ao gmp.

Convertendo para float

Para informações sobre a conversão de strings para floats, veja a seção entitulada Conversão de Strings para números. Para valores de outros tipos, o valor é primeiro convertido para inteiro e então para float. Veja a seção Convertendo para inteiros para mais informações. No PHP 5, um aviso é emitido se você tentar converter um objeto para float.


html/language.types.string.html0100644000101200010120000015772711277240154020162 0ustar docbuilderdocbuilder Strings

Strings

Uma string é uma série de caracteres. Antes do PHP 6, um caracter é o mesmo que um byte. Ou seja, há exatamente 256 caracteres diferentes possíveis. Isto implica que o PHP não tem suporte nativo ao Unicode. Veja utf8_encode() e utf8_decode() para algumas funcionalidades básicas de Unicode.

Nota: Não é problema para uma string ser bastante longa. PHP não impõe limite de tamanho de uma string; o único limite é o de memória disponível do computador no qual o PHP está sendo executado.

Sintaxe

Uma string literal pode ser especificada de quatro formas diferentes.

Apóstrofos

A maneira mais simples para especificar uma string é delimitá-la entre apóstrofos (o caracter ').

Para especificar um apóstrofo. você precisará "escapá-la" com uma contra barra (\), como em muitas outras linguagens. Se uma contra barra precisa ocorrer antes de um apóstrofo ou no final da string, você precisa duplicá-la. Note que se você tentar escapar qualquer outro caracter, a contra barra também será impressa! Então geralmente não é necessário escapar a própria contra barra. Para especificar um apóstrofo, use escape (\). Para especificar uma barra invertida antes de uma apóstrofo, ou no final da string, use-o duas vezes (\\). Note que tentando usar escape qualquer outro caractere imprimirá a barra invertida também.

Nota: Diferentemente das duas outras sintaxes, variables e seqüências de escape para caracteres especiais não serão substituídas quando elas ocorrerem dentro de strings delimitadas por apóstrofes.

<?php
echo 'isto é uma string comum';

echo 
'Você pode incluir novas linhas em strings,
dessa maneira que estará
tudo bem'
;

// Imprime: Arnold disse uma vez: "I'll be back"
echo 'Arnold disse uma vez: "I\'ll be back"';

// Imprime: Você tem certeza em apagar C:\*.*?
echo 'Você tem certeza em apagar C:\\*.*?';

// Imprime: Você tem certeza em apagar C:\*.*?
echo 'Você tem certeza em apagar C:\*.*?';

// Imprime: Isto não será substituido: \n uma nova linha
echo 'Isto não será substituido: \n uma nova linha';

// Imprime: Variaveis $também não $expandem
echo 'Variaveis $também não $expandem';
?>

Aspas

Se a string é delimitada entre aspas ("), o PHP irá interpretar mais seqüências de escape para caracteres especiais:

Seqüências de escape
Seqüência Significado
\n fim de linha (linefeed ou LF ou 0x0A (10) em ASCII)
\r retorno de carro (carriage return ou CR ou 0x0D (13) em ASCII)
\t TAB horizontal (HT ou 0x09 (9) em ASCII)
\v TAB vertical (VT ou 0x0B (11) em ASCII) (desde o PHP 5.2.5)
\f form feed (FF ou 0x0C (12) em ASCII) (desde o PHP 5.2.5)
\\ contra barra ou barra invertida
\$ sinal de cifrão
\" aspas
\[0-7]{1,3} a seqüência de caracteres batendo a expressão regular dos caracteres em notação octal
\x[0-9A-Fa-f]{1,2} a seqüência de caracteres batendo a expressão regular de um caracter em notação hexadecimal

Como em uma string entre apóstrofos, usar escape em qualquer outro caractere resultará em uma barra invertida sendo mostrada também. Antes do PHP 5.1.1, a barra invertida em \{$var} não era mostrada.

O mais importante recurso de strings delimitadas por aspas está no fato de que nome de variáveis serão substituídos. Veja interpretação de strings para detalhes.

Heredoc

Uma terceira maneira para delimitar strings é a sintaxe heredoc: <<<. Após este operador, um identificador é fornecido, e após, um newline. Então vem a própria string, e então o mesmo identificador para fechar a string.

O identificador de fechamento precisa começar na primeira coluna da linha. Além, o identificador precisa seguir as mesmas regras de nomeação que qualquer outro rótulo no PHP: só pode conter caracteres alfanuméricos e sublinhados, e precisa começar com um caracter não numérico ou sublinhado.

Aviso

É muito importante verificar que a linha do identificador de fechamento não contenha nenhum outro caracter, exceto, possivelmente um ponto e vírgula (;). O que significa que o identificador não pode ser indentado, e que não pode haver nenhum espaço ou tabulações antes ou depois do ponto e vírgula. É também importante perceber que o primeiro caracter antes do identificador de fechamento precisa ser um caracter de nova linha como esperada por seu sistema operacional. Por exemplo, \n em sistemas UNIX, incluindo Mac OS X. O delimitador de fechamento (possivelmente seguido por um ponto e vírgula) precisa também ser seguido por newline.

Se essa regra for quebrada e o identificador de fechamento não estiver perfeito, então ele não será considerado como identificador de fechamento e o PHP irá continuar procurando por um. Se, neste caso, um identificador de fechamento apropriado não for encontrado antes do final do arquivo atual, um erro de interpretação (parse) será lançado na linha final do script.

Heredocs não podem ser usados para inicializar membros de classes. Use ao invés, nowdocs.

Exemplo #1 Exemplo inválido

<?php
class foo {
    public 
$bar = <<<EOT
bar
EOT;
}
?>

Textos heredoc se comportam como string delimitadas por aspas, com apenas uma diferença. Você não precisa escapar apóstrofos e aspas em seus heredocs, mas você ainda pode continuar utilizando os códigos de escape listados acima. Variáveis são substituídas, mas o mesmo cuidado precisa ser tomado quando expressando variáveis complexas dentro de heredocs assim como nas strings.

Exemplo #2 Exemplo de delimitação de strings heredoc

<?php
$str 
= <<<EOD
Exemplo de uma string
distribuída em várias linhas
utilizando a sintaxe heredoc.
EOD;

/* Exemplo mais complexo, com variáveis */
class foo
{
    var 
$foo;
    var 
$bar;

    function 
foo()
    {
        
$this->foo 'Foo';
        
$this->bar = array('Bar1''Bar2''Bar3');
    }
}

$foo = new foo();
$name 'Meu nome';

echo <<<EOT
Meu nome é "$name". Eu estou imprimindo $foo->foo.
Agora, eu estou imprimindo 
{$foo->bar[1]}.
Isto deve imprimir um 'A' maiúsculo: \x41
EOT;
?>

O exemplo acima irá imprimir:

My name is "MyName". I am printing some Foo.
Now, I am printing some Bar2.
This should print a capital 'A': A

É também possível usar sintaxe Heredoc para passar dados para argumento de funções:

Exemplo #3 Exemplo de Heredoc em argumentos

<?php
var_dump
(array(<<<EOD
foobar!
EOD
));
?>

Nota: O suporte a heredoc foi acrescentado no PHP 4.

Nowdoc

Nowdocs são para apóstrofos o que heredocs são para aspas dupla em strings. Um nowdoc é especificado similarmente a um heredoc, mas nenhuma análise é feito dentro de um nowdoc. A construção é ideal para colocar códigos PHP ou outros blocos grandes de texto sem a necessidade de usar escapes. Ele compartilha algumas características em comum com a construção SGML <![CDATA[ ]]>, assim é declarado um bloco de texto onde nada será analisado.

Um nowdoc é identificado com a mesma seqüência <<< usada para heredocs, mas o identificador precisa ficar entre aspas simples, e.g. <<<'EOT'. Todas as regras para identificadores heredoc se aplicam para identificadores nowdoc, especialmente aqueles considerando o identificador de fechamento.

Exemplo #4 Exemplo de string em Nowdoc

<?php
$str 
= <<<'EOD'
Example of string
spanning multiple lines
using nowdoc syntax.
EOD;

/* Exemplo mais complexo, com variáveis. */
class foo
{
    public 
$foo;
    public 
$bar;

    function 
foo()
    {
        
$this->foo 'Foo';
        
$this->bar = array('Bar1''Bar2''Bar3');
    }
}

$foo = new foo();
$name 'MyName';

echo <<<'EOT'
My name is "$name". I am printing some $foo->foo.
Now, I am printing some {$foo->bar[1]}.
This should not print a capital 'A': \x41
EOT;
?>

O exemplo acima irá imprimir:

My name is "$name". I am printing some $foo->foo.
Now, I am printing some {$foo->bar[1]}.
This should not print a capital 'A': \x41

Nota: Diferente de heredocs, nowdocs pode ser usado no contexto de dado estático. O exemplo típico é inicializando membros de classes ou constantes:

Exemplo #5 Exemplo com dado estático

<?php
class foo {
    public 
$bar = <<<'EOT'
bar
EOT;
}
?>

Nota: Suporte a Nowdoc foi adicionado no PHP 5.3.0.

Interpretação de variáveis

Quando uma string é especificada dentro de aspas ou heredoc, variáveis são interpretadas dentro delas.

Há dois tipos de sintaxe: um simples e um complexo . A sintaxe simples é a mais comum e conveniente, provendo uma maneira de interpretar uma variável, um valor de array ou uma propriedade de object em uma string com o menor esforço.

A sintaxe completa foi introduzida no PHP 4, e pode ser reconhecida por chaves ({}) envolvendo a expressão.

Sintaxe simples

Se um sinal de cifrão ($) é encontrado, o interpretador tentará obter tantos identificadores quanto possíveis para formar um nome de variável válido. Envolva o nome da variável com chaves se você deseja explicitamente especificar o fim do nome.

<?php
$cerveja 
'Heineken';
echo 
"O sabor das '$cerveja's é otimo"// funciona, "'" é um caracter inválido para nome de variáveis
echo "Ele bebeu algumas $cervejas";     // não funciona, 's' é um caracter válido para nome de variáveis
echo "Ele bebeu algumas ${cerveja}s";   // funciona
echo "Ele bebeu algumas {$cerveja}s";   // funciona
?>

Similarmente, um índice de array ou uma propriedade de object pode ser analisado. Com índices de array, o fechamento de colchete (]) marca o final do índice. A mesma regra aplica-se para propriedade de objetos como para simples variáveis.

<?php
// Esses exemplos são específicos para utilização de arrays dentro de strings
// Quando fora de strings, sempre delimite suas chaves de array strings
// e não use {colchetes}.

// Mostra todos os erros
error_reporting(E_ALL);

$fruits = array('morango' => 'vermelho''banana' => 'amarelo');

// Funciona, mas note que funciona de maneira diferente fora dos delimitadores de strings
echo "A banana é $fruits[banana].";

// Funciona
echo "A banana é {$fruits['banana']}.";

// Funciona, mas o PHP procura por uma constante chamada 'banana' antes,
// como descrito a abaixo.
echo "A banana é {$fruits[banana]}.";

// Nao funciona, use colchetes. Isto lanca um parse error.
echo "A banana é $fruits['banana'].";

// Funciona
echo "A banana é " $fruits['banana'] . ".";

// Funciona
echo "Este quadrado tem $square->width metros de lado.";

// Nao funciona. Para uma solução, veja a sintaxe complexa.
echo "Este quadrado tem $square->width00 centímetros de lado.";
?>

Para qualquer coisa mais complexa, você precisa utilizar a sintaxe complexa.

Sintaxe complexa (chaves)

Isto não é chamado sintaxe complexa porque a sintaxe em si é complexa, mas porque você pode incluir expressões complexas.

De fato, qualquer valor no namespace pode ser incluido em uma string com esta sintaxe. Simplismente escreva a expressão da mesma forma como apareceria fora da string, e então coloque-o em { e }. Desde que { não pode escapado, esta sintaxe somente mostrará ser reconhecida quando o $ imediatamente seguir o {. Use {\$ para ter um literal {$. Alguns exemplos para fazê-lo claro:

<?php
// Mostra todos os erros
error_reporting(E_ALL);

$bom 'fantastico';

// Não funciona, imprimindo: Isto é { fantastico}
echo "Isto é { $bom}";

// Funciona, imprimindo: Isto é fantástico
echo "Isto é {$bom}";
echo 
"Isto é ${bom}";

// Funciona
echo "Este quadrado tem {$square->width}00 centímetros de lado.";

// Funciona
echo "Isto funciona: {$arr[4][3]}";

// Isto está errado pela mesma razão que $foo[bar] é errado fora de uma string.
// Em outras palavras, isto ainda funciona MAS porque o PHP primeiro procura pro uma
// constante nomeada foo; um erro do tipo E_NOTICE (undefined constant) será
// disparado.
echo "Isto é errado: {$arr[foo][3]}";

// Funciona. Quanto mexendo com arrays multi dimensionais, sempre use colchetes em volta dos arrays
// quando detro de strings
echo "Isto funciona: {$arr['foo'][3]}";

// Funciona
echo "Isto funciona: " $arr['foo'][3];

echo 
"Isto funciona também {$obj->values[3]->name}";

echo 
"Este é o valor da variável chamada $name{${$name}}";

echo 
"Este é o valor da variável usando o valor retornado da getName(): {${getName()}}";

echo 
"Este é o valor da variável usando o valor retornado da \$object->getName(): {${$object->getName()}}";
?>

Nota: Chamada de funções e métodos dentro de {$} funcionam desde o PHP 5.

Acesso e modificação de caracteres da string

Caracteres nas strings podem ser acessados e modificados apenas especificando o deslocamento baseado em zero do caracter desejado depois da string dentro de colchetes, como um array, $str[42] então pense na string como um array de caracteres.

Nota: Strings podem também ser acessada usando colchetes, como $str{42} para o mesmo propósito. Contudo, esta sintaxe está obsoleto a partir do PHP 6. Use colchetes ao invés.

Aviso

Escrevendo em um offset fora do intervalo, preenche a string com espaços. Tipos diferentes de inteiro são convertidos para inteiro. Tipo ilegal de offset emite E_NOTICE. Offset negativo emite E_NOTICE na escrita mas na leitura uma string vazia. Somente o primeiro caractere de uma string atribuída é usada. Atribuindo uma string vazia designa NUL byte.

Exemplo #6 Alguns exemplos com strings

<?php
// Pega o primeiro caracter da string
$str 'Isto é um teste.';
$first $str[0];

// Pega o terceiro caracter da string
$third $str[2];

// Pega o último caracter da string
$str 'Isto ainda é um teste.';
$last $str[strlen($str)-1];

// Modifica o ultimo caracter da string
$str 'Olhe o mal';
$str[strlen($str)-1] = 'r';

?>

Nota: Acessando variáveis de outros tipos usando [] ou {} silenciosamente retorna NULL.

Funções e operadores úteis

Strings podem ser concatenados utilizando o operador '.' (ponto). Note que o operador '+' (adição) não funciona para isso. Veja operadores de string para mais informações.

Há bastante funções úteis para modificação de strings.

Veja a seção de funções de string para funções gerais e funções de expressões regulares ou a funções para expressão regular compatível com Perl para busca avançada & funcionalidade para substituições.

Há também funções para strings URL e funções para criptografia e descriptografia de strings (mcrypt e mhash).

Finalmente, veja também as funções de tipos de caracteres.

Convertendo para strings

Você pode converter um valor para string utilizando o molde (string), ou a função strval(). Conversão para string é automaticamente realizada no escopo de uma expressão para você onde uma string é necessária. Isto acontece quando você usa as funções echo() ou print(), ou quando você compara o valor de uma variável com uma string. Lendo as seções do manual sobre Tipos e Conversão de Tipos tornará o que se segue um pouco mais claro. Veja também a função settype().

O valor boolean TRUE é convertido para a string "1", o valor FALSE é representado como "" (uma string vazia). Desta forma, você pode converter livremente entre os tipos booleano e string.

Um integer ou um float é convertido para a representação string do número em dígitos arábicos (incluindo a parte expoente para um float). Números de ponto flutuante podem ser convertidos usando a notação exponencial (4.1E+6).

Nota: O caractere de ponto decimal é definido no locale do script (categoria LC_NUMERIC). Veja setlocale().

Arrays são sempre convertidos para uma string "Array"; por causa disso echo() e print() não podem por eles mesmo mostrar o conteúdo de um array. Para ver um elemento, use a construção como echo $arr['foo']. Veja abaixo dicas de como exportar/ver todo seu conteúdo.

Objects no PHP 4 são sempre convertidos para a string "Object". Se você quiser imprimir os valores das variáveis membro de um object por razão de debug, leia os parágrafos abaixo. Se você quiser encontrar o nome da classe do qual o objeto é uma instância, use get_class(). No PHP 5, o método __toString é usado se aplicável.

Resources são sempre convertidos para strings na estrutura "Resource id #1" onde 1 é o número único do resource assimilado pelo PHP na execução. Se você quiser obter o tipo do recurso, utilize get_resource_type().

NULL é sempre convertido para uma string vazia.

Como você viu acima, imprimir arrays, objetos ou recursos não fornece qualquer informação útil sobre os seus próprios valores. Veja as funções print_r() e var_dump() para melhores maneiras de imprimir valores para debug.

Você também pode converter valores PHP para strings para armazená-los permanentemente. Este método é chamado serialização, e pode ser feito com a função serialize(). Você também pode serializar valores PHP para estruturas XML , se você ativou o suporte a WDDX na configuração do seu PHP.

Conversão de strings para números

Quando uma string é avaliada como um valor numérico, o valor resultante e o tipo é determinado como segue.

A string será avaliada como um ponto flutuante se conter qualquer um dos caracteres '.', 'e', ou 'E'. Em outros casos, ela será avaliada como um inteiro.

O valor é obtido da porção inicial da string. Se a string começa com dados numéricos válidos, esse será o valor utilizado. Em outro caso, o valor será 0 (zero). Dados numéricos válidos são: um sinal opcional, seguido por um ou mais dígitos (opcionalmente contendo um ponto decimal), seguido de um expoente, também opcional. O expoente é um 'e' ou 'E' seguido de um ou mais dígitos.

<?php
$foo 
"10.5";                // $foo é float (11.5)
$foo "-1.3e3";              // $foo é float (-1299)
$foo "bob-1.3e3";           // $foo é integer (1)
$foo "bob3";                // $foo é integer (1)
$foo "10 Small Pigs";       // $foo é integer (11)
$foo "10.2 Little Piggies"// $foo é float (14.2)
$foo "10.0 pigs " 1;          // $foo é float (11)
$foo "10.0 pigs " 1.0;        // $foo é float (11)
?>

Para mais informações sobre esta conversão, veja página do manual UNIX de strtod(3).

Para testar qualquer exemplo nesta seção, copie e cole os exemplos e insira a seguinte linha para ver como funciona:

<?php
echo "\$foo==$foo; tipo " gettype ($foo) . "<br />\n";
?>

Não espere obter o código de um caracter por convertê-lo para inteiro, como é feito em C. Use as funções ord() e chr() para converter entre código de caracteres e os próprios caracteres.


html/language.types.array.html0100644000101200010120000021246011277240154017754 0ustar docbuilderdocbuilder Arrays

Arrays

Um array no PHP é atualmente um mapa ordenado. Um mapa é um tipo que relaciona valores para chaves. Este tipo é otimizado de várias maneiras, então você pode usá-lo como um array real, ou uma lista (vetor), hashtable (que é uma implementação de mapa), dicionário, coleção, pilha, fila e provavelmente mais. Como você pode ter outro array PHP como um valor, você pode facilmente simular árvores.

A explicação dessas estruturas estão além do escopo desse manual, mas você pode encontrar exemplos para cada uma dessas estruturas a seguir. Para mais informações sobre estruturas, refira-se a literatura externa sobre esses tópicos.

Sintaxe

Especificando com array()

Um array pode ser criado com o construtor de linguagem array(). Ele pega um certo número de pares separados por vírgula chave => valor .

array(  chave =>  valor
     , ...
     )
// chave pode ser tanto string ou um integer
// valor pode ser qualquer coisa
    

<?php
$arr 
= array("foo" => "bar"12 => true);

echo 
$arr["foo"]; // bar
echo $arr[12];    // 1
?>

A chave pode ser tanto um integer ou uma string. Se a chave é uma representação padrão de um integer, ele será interpretado assim (por exemplo, "8" será interpretado como 8, enquanto "08" será interpretado como "08"). Flotas em key são truncados para integer. Não há diferença entre arrais indexados e associativos em PHP, apenas um tipo de array, que pode ter índices inteiros ou string.

O valor pode ser qualquer tipo PHP:

<?php
$arr 
= array("somearray" => array(=> 513 => 9"a" => 42));

echo 
$arr["somearray"][6];    // 5
echo $arr["somearray"][13];   // 9
echo $arr["somearray"]["a"];  // 42
?>

Se omitir a chave quando fornece um novo item, o maior índice inteiro é obtido, e a nova chave será esse máximo + 1. Se você especificar uma chave que já possui um valor assimilada a ela, então o valor é sobrescrito.

<?php
// Esse array é como ...
array(=> 433256"b" => 12);

// ... este array
array(=> 43=> 32=> 56"b" => 12);
?>

Aviso

A partir do PHP 4.3.0, o comportamento da geração de índice descrito acima foi modificado. Agora, se você aumentar um array em que o maior índice atual for negativo, então a próxima chave criada será zero (0). Antes, o novo índice seria o maior índice existente mais 1, do mesmo jeito que os índices positivos.

Utilizar TRUE como chave será interpretado como o integer 1 na chave. Utilizando FALSE como chave será avaliado como o integer 0. Usar NULL como chave é interpretado como uma string vazia. Usar uma string vazia como chave irá criar (ou sobrescerver) uma chave com uma string vazia e seu valor, e isto não é o mesmo que usar colchetes vazios.

Você não pode usar arrays ou objetos como chaves. Fazendo isso resultará em um alerta: Illegal offset type.

Criando/modificando com a sintaxe de colchetes

Você pode também modificar um array existente explicitamente assimilando valores nele.

Isto é feito apenas assimilando valores para o array enquanto especificando a chave em colchetes. Você pode omitir a chave, colocando um par vazio de colchetes ("[]").

$arr[chave] = valor;
$arr[] = valor;
// chave tanto um integer ou string
// valor pode ser qualquer coisa
    
Se $arr não existir ainda, ele será criado. Então isto é um meio alternativo para especificar um array. Para mudar um certo valor, apenas assimile um novo valor para um elemento especificado por sua chave. Se você quiser remover um par chave/valor, você precisa aplicar unset() nele.

<?php
$arr 
= array(=> 112 => 2);

$arr[] = 56;    // Isto é o mesmo que $arr[13] = 56;
                // nesse ponto do script

$arr["x"] = 42// Isto acrescenta um novo elemento
                // para o array com a chave "x"

unset($arr[5]); // Isto remove um elemento do array

unset($arr);    // E isto apaga todo o array
?>

Nota: Como mencionado acima, não informar a chave dentro dos colchetes, então o maior índice inteiro é obtido, e a nova chave será esse máximo + 1. Se nenhum índice inteiro existir ainda, a chave será 0 (zero). Se você especificar uma chave que já possui um valor assimilada a ela, então o valor é sobrescrito.

Aviso

A partir do PHP 4.3.0, o comportamento da geração de índice descrito acima foi modificado. Agora, se você aumentar um array em que o maior índice atual for negativo, então a próxima chave criada será zero (0). Antes, o novo índice seria o maior índice existente mais 1, do mesmo jeito que os índices positivos.


Note que a chave inteira maior utilizada para isso não precisa necessariamente existir no array. Ele pode ter existido no array desde a última vez que o array foi indexado. Veja o seguinte exemplo:

<?php
// Criando um array normal
$array = array(12345);
print_r($array);

// Agora apagando todos os itens, mas deixando o array intacto:
foreach ($array as $i => $value) {
    unset(
$array[$i]);
}
print_r($array);

// Acrescentando um item (note que a chabe é 5, em vez de zero
// como voce pode ter esperado).
$array[] = 6;
print_r($array);

// Reindexando:
$array array_values($array);
$array[] = 7;
print_r($array);
?>

O exemplo acima irá imprimir:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
)
Array
(
)
Array
(
    [5] => 6
)
Array
(
    [0] => 6
    [1] => 7
)

Funções úteis

Há uma série de funções muito úteis para trabalhar com arrays. Veja a seção sobre arrays.

Nota: A função unset() permite apagar chaves de um array. Esteja avisado que o array NÃO vai ser reindexado. Se você somente usa "índices inteiros comuns" (começando do zero, aumentando um a um), você pode conseguir reindexar o aaray utilizando array_values().

<?php
$a 
= array( => 'um'=> 'dois'=> 'três' );
unset( 
$a[2] );
/* irá produzir um array que pode ser definido como
   $a = array( 1=>'um', 3=>'três');
   e NÃO
   $a = array( 1 => 'um', 2 => 'três');
*/

$b array_values($a);
// Agora $b é o  array(1 => 'um', 2 =>'três')
?>


foreach existe especificamente para lidar com arrays. Ele provém uma maneira fácil de percorrer qualquer array.

Array: faça e não faça

Porque $foo[bar] está errado?

Você sempre deve usar delimitadores em volta um índice de um array associativo. Por exemplo, utilizar $foo['bar'] e não $foo[bar]. Mas porque $foo[bar] está errado? Afinal de contas, você vê essa sintaxe nos scripts antigos:

<?php
$foo
[bar] = 'inimigo';
echo 
$foo[bar];
// etc
?>

Isto está errado, mas funciona. Então, porque está errado? A razão está neste código, que tem uma constante indefinida (bar) em vez de uma string ('bar' - repare nos delimitadores), e o PHP pode no futuro definir constantes que, infelizmente em seu código, podem ter o mesmo nome. Isto funciona, porque o PHP automaricamente converte uma string base (uma string não delimitada que não corresponde a nenhum símbolo conhecido) em uma string que contém a string base. Por exemplo, se não existir uma constante definida com o nome bar, então o PHP irá substituí-la pela string 'bar' e usá-la.

Nota: Isto não significa que você sempre deve delimitar as chaves nos arrays. Você não deve delimitar chaves que sejam constantes ou variáveis, porque isso vai impedir o PHP de interpretá-las.

<?php
error_reporting
(E_ALL);
ini_set('display_errors'true);
ini_set('html_errors'false);
// Arrays simples:
$array = array(12);
$count count($array);
for (
$i 0$i $count$i++) {
    echo 
"\nVerificando $i: \n";
    echo 
"Ruim: " $array['$i'] . "\n";
    echo 
"Bom: " $array[$i] . "\n";
    echo 
"Ruim: {$array['$i']}\n";
    echo 
"Bom: {$array[$i]}\n";
}
?>

O exemplo acima irá imprimir:

Verificando 0:
Notice: Undefined index:  $i in /path/to/script.html on line 9
Ruim:
Bom: 1
Notice: Undefined index:  $i in /path/to/script.html on line 11
Ruim:
Bom: 1

Verificando 1:
Notice: Undefined index:  $i in /path/to/script.html on line 9
Ruim:
Bom: 2
Notice: Undefined index:  $i in /path/to/script.html on line 11
Ruim:
Bom: 2

Mais exemplos para demonstrar esse fato:

<?php
// Vamos ver todos os erros
error_reporting(E_ALL);

$arr = array('fruta' => 'maçã''legume' => 'cenoura');

// Correto
print $arr['fruta'];  // maçã
print $arr['legume']; // cenoura

// Errado. Isto funciona mas lança um erro PHP do
// nível E_NOTICE porque é utilizada uma constante indefinida (fruta)
// 
// Repare: Quando utiliza-se a constrante indefinida fruta, o PHP assume 'fruta'
print $arr[fruta];    // maçã

// Agora vamos definir uma constante para demonstrar o que pode acontecer. Nós
// vamos assimilar o valor 'legume' para a constante de nome fruta
define('fruta''legume');

// Observe a diferenca agora
print $arr['fruit'];  // maçã
print $arr[fruit];    // cenoura

// O exemplo seguinte é normal dentro de uma string. Constantes não são
// observadas dentro de strings e por isso nenhum E-NOTICE não é lançado aqui
print "Olá $arr[fruta]";      // Olá maçã

// Com uma exceção: chaves envolvendo arrays dentro de strings
// ativam a checagem de constantes, como em
print "Olá {$arr[fruta]}";    // Hello cenoura
print "Olá {$arr['fruta']}";  // Hello maçã

// E isso não funciona, resultando em um erro de interpretação do tipo:
// Parse error: parse error, expecting T_STRING' or T_VARIABLE' or T_NUM_STRING'
// Isso se aplica ao uso de superglobais em strings
print "Olá $arr['fruta']";
print 
"Olá $_GET['foo']";

// Nesse caso, use concatenacao
print "Olá " $arr['fruta']; // Olá maçã
?>

Quando você ativa error_reporting() para mostrar erros de nível E_NOTICE (como configurando-a para E_ALL) você vê esses erros. Por padrão, error_reporting esté configurada para não mostrar esse nível de erro.

Como explicado na seção sintaxe, a chave precisa estar entre colchetes ('[' e ']'). Isto significa que você pode escrever coisas como isso:

<?php
echo $arr[algumafuncao($bar)];
?>

Isto é um exemplo de utilização de um valor de retorno de função como um índice de array. O PHP conhece constantes, como você deve ter visto algumas E_* antes.

<?php
$error_descriptions
[E_ERROR] = "Um erro fatal ocorreu";
$error_descriptions[E_WARNING] = "O PHP emitiu um alarme";
$error_descriptions[E_NOTICE] = "Apenas um aviso informal";
?>

Note que E_ERROR é um identificador válido, assim como bar no primeiro exemplo. Mas no último exemplo seria a mesma coisa que escrevendo:

<?php
$error_descriptions
[1] = "Um erro fatal ocorreu";
$error_descriptions[2] = "O PHP emitiu um alarme";
$error_descriptions[8] = "Apenas um aviso informal";
?>

porque E_ERROR é igual a 1, e assim por diante.

Como nós mostramos nos exemplos anteriores, $foo[bar] funciona mas está errado. Funciona porque bar, na sintaxe onde é utilizada é esperada como uma expressão constante. Entretanto, nesse caso não existe constante com o nome bar. O PHP, hoje, assume que você quer bar literalmente, como a string "bar", mas que você esqueceu de escrever os delimitadores.

Então, porque isso é tão mal?

Se em algum ponto do futuro, o time do PHP quiser acrescentar outra constante ou palavra chave, ou você mesmo introduzir outra constante na sua aplicação, você terá problemas. Por exemplo, se você já não pode utilizar as palavras empty e default dessa maneira, desde que elas são palavras reservadas especiais.

Nota: Só para fixar, dentro de uma string delimitada por aspas, é válido não englobar índices de arrays com apóstrofos, de forma que "$foo[bar]" é válido. Veja os exemplos anteriores para detalhes bem como na seção sobre interpretação de variáveis em strings.

Convertendo para array

Para qualquer dos tipos: integer, float, string, boolean e resource, se você converte um valor para um array, você obtêm um array com um elemento (de índice 0) contendo o valor escalar informado.

Se você converte um tipo object para um array, você obtêm as propriedades (variáveis membro) do objeto com elementos do array. As chaves serão o nome das variáveis membro com pequenas notáveis exceções: variáveis privada tem o nome da classe prefixado no nome da variável; variáveis protegidas tem um '*' prefixando o nome da variável. Estes prefixos tem null bytes em ambos os lados. Isto pode resultado em algum comportamente inesperado.

<?php

class {
    private 
$A// This will become '\0A\0A'
}

class 
extends {
    private 
$A// This will become '\0B\0A'
    
public $AA// This will become 'AA'
}

var_dump((array) new B());
?>

Acima aparece duas chaves chamadas 'AA', embora uma delas é atualmente chamada '\0A\0A'.

Se você converter um valor NULL para um array, você terá um array vazio.

Comparando

É possível comparar arrays através de array_diff() e operadorores de array.

Exemplos

O tipo array do PHP é muito versátil, por isso temos aqui alguns exemplos para mostrar todo o poder dos arrays.

<?php
// isto
$a = array( 'cor'   => 'vermelha',
            
'sabor' => 'doce',
            
'forma' => 'redonda',
            
'nome'  => 'maçã',
                       
4        // a chave será 0
          
);

// isto é equivalente a acima
$a['cor']   = 'vermelha';
$a['sabor'] = 'doce';
$a['forma'] = 'redonda';
$a['nome']  = 'maçã';
$a[]        = 4;        // a chave será 0

$b[] = 'a';
$b[] = 'b';
$b[] = 'c';
// o mesmo de array( 0 => 'a' , 1 => 'b' , 2 => 'c' ),
// ou simplesmente array('a', 'b', 'c')
?>

Exemplo #1 Utilizando array()

<?php
// Array como (propriedade-)mapa
$map = array( 'versao'     => 4,
              
'OS'         => 'Linux',
              
'lang'       => 'inglês',
              
'short_tags' => true
            
);

// apenas chaves numéricas
$array = array( 7,
                
8,
                
0,
                
156,
                -
10
              
);
// que é o mesmo que array( 0 => 7, 1 => 8, ...)

$switching = array(         10// chave = 0
                    
5    =>  6,
                    
3    =>  7,
                    
'a'  =>  4,
                            
11// chave = 6 (o índice máximo era 5)
                    
'8'  =>  2// chave = 8 (inteiro!)
                    
'02' => 77// chave = '02'
                    
0    => 12  // o valor 10 será sobrescrito por 12
                  
);

// array vazio
$empty = array();
?>

Exemplo #2 Coleção

<?php
$cores 
= array('vermelho''azul''verde''amarelo');

foreach (
$cores as $cor) {
    echo 
"Você gosta de $cor?\n";
}

?>

O exemplo acima irá imprimir:

Você gosta de vermelho?
Você gosta de azul?
Você gosta de verde?
Você gosta de amarelo?

Mudando diretamente valores de array é possível desde o PHP 5, passando-os como referência. Em versões anteriores precisava de um workaround:

Exemplo #3 Coleção

<?php
// PHP 5
foreach ($colors as &$color) {
    
$color strtoupper($color);
}
unset(
$color); /* ensure that following writes to
$color will not modify the last array element */

// Workaround for older versions
foreach ($colors as $key => $color) {
    
$colors[$key] = strtoupper($color);
}

print_r($colors);
?>

O exemplo acima irá imprimir:

Array
(
    [0] => RED
    [1] => BLUE
    [2] => GREEN
    [3] => YELLOW
)

Este exemplo cria um array na base 1.

Exemplo #4 Array baseado em 1

<?php
$primeiroquarto  
= array(=> 'Janeiro''Fevereiro''Março');
print_r($primeiroquarto);

?>

O exemplo acima irá imprimir:

Array
(
    [1] => 'Janeiro'
    [2] => 'Fevereiro'
    [3] => 'Março'
)

Exemplo #5 Preenchendo um array real

<?php
// preenchendo um array com todos os itens de um diretório
$handle opendir('.');
while (
false !== ($file readdir($handle))) {
    
$files[] = $file;
}
closedir($handle); 
?>

Arrays são ordenados. Você pode mudar sua ordem utilizando vários funções de ordenação. Veja as funções de arrays para mais informações. Você pode contar o número de itens de um array com a função count().

Exemplo #6 Ordenando arrays

<?php
sort
($files);
print_r($files);
?>

Porque o valor de um array pode ser qualquer coisa, isto pode ser outro array. Isto pode criar arrays recursivos e multidimensionais.

Exemplo #7 Arrays recursivos e multidimensionais

<?php
$fruits 
= array ( "frutas"  => array ( "a" => "laranja",
                                       
"b" => "banana",
                                       
"c" => "maçã",
                                     ),
                  
"numeros" => array ( 1,
                                       
2,
                                       
3,
                                       
4,
                                       
5,
                                       
6
                                     
),
                  
"buracos" => array (      "primeiro",
                                       
=> "segundo",
                                            
"terceiro",
                                     ),
                );

// Alguns exemplo de enderecos dos valores do array acima
echo $fruits["buracos"][5];   // prints "segundo"
echo $fruits["frutas"]["a"];  // prints "laranja"
unset($fruits["buracos"][0]); // remove "primeiro"

// Criando um novo array multidimensional
$sucos["maca"]["verde"] = "bom";
?>

Você precisa estar ciente que a atribuição sempre envolve cópia de valor. Também significa que o ponteiro interno do array usado por current() e funções similares são resetados. Você precisa utilizar o operador de referência para copiar um array por referência.

<?php
$arr1 
= array(23);
$arr2 $arr1;
$arr2[] = 4// $arr2 é modificado,
             // $arr1 continua sendo apenas array(2, 3)

$arr3 = &$arr1;
$arr3[] = 4// agora $arr1 e $arr3 sao os mesmos
?>


html/language.types.object.html0100644000101200010120000001027611277240154020105 0ustar docbuilderdocbuilder Objects

Objects

Object Initialization

To create a new object, use the new statement to instantiate a class:

<?php
class foo
{
    function 
do_foo()
    {
        echo 
"Doing foo."
    }
}

$bar = new foo;
$bar->do_foo();
?>

For a full discussion, see the Classes and Objects chapter.

Converting to object

If an object is converted to an object, it is not modified. If a value of any other type is converted to an object, a new instance of the stdClass built-in class is created. If the value was NULL, the new instance will be empty. Arrays convert to an object with properties named by keys, and corresponding values. For any other value, a member variable named scalar will contain the value.

<?php
$obj 
= (object) 'ciao';
echo 
$obj->scalar;  // outputs 'ciao'
?>

html/language.types.resource.html0100644000101200010120000000627611277240154020473 0ustar docbuilderdocbuilder Resource

Resource

Um recurso é uma variável especial, que mantém uma referência a um recurso externo. Recursos são criados e usados por funções especiais. Veja o apêndice para uma lista de todas essas funções e seus tipos correspondentes.

Nota: O tipo resource foi incluído no PHP 4.

Veja também get_resource_type().

Convertendo para recurso

Como as variáveis resource mantém manipuladores especiais para arquivos abertos, conexões de bancos de dados, canvas de imagens e coisas do tipo, converter para resource não faz sentido algum.

Liberando recursos

Através ao sistema de contagem de referência introduzido com o engine da Zend no PHP 4, quando um recurso não é mais referenciado, ele é automaticamente detectado (assim como no Java). Quando isto acontece, todos os recursos em uso por esse resource são liberados pelo coletor de lixo. Por essa razão, é raramente necessário liberar memória manualmente utilizando alguma função free_result.

Nota: Conexões persistentes de bancos são especiais. Eles não são destruídos pelo coletor de lixo. Veja também conexões permanentes.


html/language.types.null.html0100644000101200010120000000663711277240154017617 0ustar docbuilderdocbuilder NULL

NULL

O valor especial NULL representa que a variável não tem valor. NULL é o único valor possível do tipo NULL.

Nota: O tipo NULL foi incluído no PHP 4.

A variável é considerada null se:

  • ela foi assimilada com a constante NULL.

  • ela ainda não recebeu nenhum valor ainda.

  • ela foi apagada com unset().

Sintaxe

Há apenas um único valor do tipo null, e é a palavra-chave case-insensitive NULL.

<?php
$var 
NULL;
?>

Veja também as funções is_null() e unset().

Convertendo para NULL

Convertendo uma variável para null removerá a variável e apagar seu valor.


html/language.pseudo-types.html0100644000101200010120000002257411277240154020141 0ustar docbuilderdocbuilder Pseudo-tipos e variáveis utilizados nesta documentação

Pseudo-tipos e variáveis utilizados nesta documentação

mixed

mixed indica que um parâmetro pode aceitar vários (mas não necessariamente todos) os tipos

gettype(), por exemplo, aceita todos os tipos do PHP, enquanto str_replace() somente aceita strings e arrays.

number

number indica que um parâmetro pode ser tanto um integer ou float.

callback

Algumas funções como call_user_func() ou usort() aceitam callback de funções definidas por usuário como parâmetro. Funções de callback não podem ser somente simples funções, mas também métodos de objetos incluindo métodos estáticos de classes.

Uma função PHP é simplesmente passado pelo seu nome como uma string. Você pode passar qualquer função nativa ou definida por usuário. Note que construtores da linguagem como array(), echo(), empty(), eval(), exit(), isset(), list(), print() ou unset() não podem ser chamados usando um callback.

A method of an instantiated object is passed as an array containing an object as the element with index 0 and a method name as the element with index 1.

Static class methods can also be passed without instantiating an object of that class by passing the class name instead of an object as the element with index 0.

Apart from common user-defined function, create_function() can be used to create an anonymous callback function.

Exemplo #1 Exemplo de funções callback

<?php

// Exemplo simples de callback
function my_callback_function() {
    echo 
'Olá Mundo!';
}
call_user_func('my_callback_function');

// Exemplo de método callback
class MyClass {
    static function 
myCallbackMethod() {
        echo 
'Olá Mundo!';
    }
}

// Type 1: Simple callback
call_user_func('my_callback_function'); 

// Type 2: Static class method call
call_user_func(array('MyClass''myCallbackMethod'));

// Type 3: Chamada de método de objeto
$obj = new MyClass();
call_user_func(array(&$obj'myCallbackMethod'));

// Type 4: Static class method call (As of PHP 5.2.3)
call_user_func('MyClass::myCallbackMethod');

// Type 5: Relative static class method call (As of PHP 5.3.0)
class {
    public static function 
who() {
        echo 
"A\n";
    }
}

class 
extends {
    public static function 
who() {
        echo 
"B\n";
    }
}

call_user_func(array('B''parent::who')); // A

?>

Nota: No PHP 4, vocÊ irá ter que usar a referência para criar um callback que aponta para o objeto atual, e não uma cópia dele. Para mais detalhes, veja Referências explicadas.

void

void no tipo de retorno indica que não há valor a ser retornado. void na lista de parâmetros indica que a função não aceita parâmetros.

...

$... no protótipo de uma função significa e assim por diante. O nome desta variável é usado quando a função suporta infinito número de argumentos.


html/language.types.type-juggling.html0100644000101200010120000003371511277240154021427 0ustar docbuilderdocbuilder Manipulação de tipos

Manipulação de tipos

O PHP não requer (ou suporta) a definição de tipo explícita na declaração de variáveis: o tipo de uma variável é determinado pelo contexto em que a variável é utilizada. Isto significa que, se você atribuir um valor string para a variável $var , $var se torna uma string. Se você então atribuir um valor inteiro para $var , ela se torna um inteiro.

Um exemplo da conversão automática do PHP é o operador de adição '+'. Se qualquer um dos operadores for float, então todos os operadores são avaliados como floats, e o resultado será um float. De outra forma, se os operadores forem interpretados como integers então o resultado será um integer. Note que isso não muda os tipos dos operadores: apenas muda em como esses operadores são avaliados.

<?php
$foo 
"0";  // $foo é string (ASCII 48)
$foo += 2;   // $foo é agora um interio (2)
$foo $foo 1.3;  // $foo é agora um float (3.3)
$foo "10 pequenos porcos";   // $foo é inteiro (15)
$foo "10 minúsculos porcos"// $foo é inteiro (15)
?>

Se os últimos dois exemplos lhe parecerem estranhos, veja Conversão de strings para números.

Para forçar uma variável para ser avaliada como um certo tipo, veja a seção Moldando o tipo (casting). Se você deseja mudar o tipo de uma variável, veja settype().

Para testar qualquer um dos exemplo desta seção, você pode usar a função var_dump().

Nota: O comportamento de uma conversão automática para array é atualmente indefinida.
Também, pelo PHP suporta indexação em strings via índice usando a mesma sintaxe de array, o seguinte exemplo é válido para todas versões do PHP:

<?php
$a    
'car'// $a é uma string
$a[0] = 'b';   // $a é ainda uma string
echo $a;       // bar
?>

Veja a seção entitulada Acessando caracteres da string para mais informações.

Conversão de Tipos - Type Casting

A conversão de tipos no PHP funciona como no C: o nome de um tipo desejado é escrito entre parênteses antes da variável em que se deseja a moldagem.

<?php
$foo 
10;             // $foo é um inteiro
$bar = (boolean) $foo// $bar é um booleano
?>

As moldagens permitidas são:

  • (int), (integer) - molde para inteiro
  • (bool), (boolean) - converte para booleano
  • (float), (double), (real) - converte para número de ponto flutuante
  • (string) - converte para string
  • (binary) - converte para string binária (PHP 6)
  • (array) - converte para array
  • (object) - converte para objeto
  • (unset) - converte para NULL (PHP 5)

(binary) e o prefixo b é foram adicionados no PHP 5.2.1

Note que tabulações e espaços são permitidos dentro dos parênteses, então o seguinte são funcionalmente equivalentes:

<?php
$foo 
= (int) $bar;
$foo = ( int ) $bar;
?>

Convertendo uma string literal e variáveis para strings binárias:

<?php
$binary 
= (binary)$string;
$binary b"binary string";
?>

Nota: Em vez de converter uma variável para string, você também pode englobar a variável entre aspas duplas.

<?php
$foo 
10;            // $foo é um interio
$str "$foo";        // $str é uma string
$fst = (string) $foo// $fst tambem é uma string

// Isto imprimirah "eles são o mesmo"
if ($fst === $str) {
    echo 
"eles são o mesmo";
}
?>

Pode não ser tão óbvio o que exatamente ocorre quando se converte entre certos tipos. Para mais informações, veja essas seções:


html/language.types.html0100644000101200010120000000376511277240154016645 0ustar docbuilderdocbuilder Tipos

html/language.variables.basics.html0100644000101200010120000003513411277240154020707 0ustar docbuilderdocbuilder Introdução

Introdução

As variáveis no PHP são representadas por um cifrão ($) seguido pelo nome da variável. Os nomes de variável no PHP fazem distinção entre maiúsculas e minúsculas.

Os nomes de variável seguem as mesmas regras como outros rótulos no PHP. Um nome de variável válido se inicia com uma letra ou sublinhado, seguido de qualquer número de letras, algarismos ou sublinhados. Em uma expressão regular isto poderia ser representado desta forma: '[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'

Nota: Para nosso propósito, as letras a-z, A-Z e os bytes de 127 a 255 (0x7f-0xff).

Nota: $this é uma variável especial que não pode ser atribuída.

Para informação sobre funções relacionadas a variáveis, veja a Referência de funções para variáveis.

<?php
$var 
'Bob';
$Var 'Joe';
echo 
"$var$Var";      // exibe "Bob, Joe"

$4site 'not yet';     // inválido; começa com um número
$_4site 'not yet';    // válido; começa com um sublinhado
$täyte 'mansikka';    // válido; 'ä' é um caracter ASCII (extendido) 228
?>

Por padrão, as variáveis são sempre atribuídas por valor. Isto significa que quando você atribui uma expressão a uma variável, o valor da expressão original é copiado integralmente para a variável de destino. Isto significa também que, após atribuir o valor de uma variável a outra, a alteração de uma destas variáveis não afetará a outra. Para maiores informações sobre este tipo de atribuição, veja o capítulo em Expressões.

O PHP oferece um outro meio de atribuir valores a variáveis: atribuição por referência. Isto significa que a nova variável simplesmente referencia (em outras palavras, "torna-se um apelido para" ou "aponta para") a variável original. Alterações na nova variável afetam a original e vice versa.

Para atribuir por referência, simplesmente adicione um e-comercial (&) na frente do nome da variável que estiver sendo atribuída (variável de origem) Por exemplo, o trecho de código abaixo imprime 'My name is Bob' duas vezes:

<?php
$foo 
'Bob';              // Atribui o valor 'Bob' a variável $foo
$bar = &$foo;              // Referecia $foo através de $bar.
$bar "My name is $bar";  // Altera $bar...
echo $bar;
echo 
$foo;                 // $foo é alterada também.
?>

Uma observação importante a se fazer: somente variáveis nomeadas podem ser atribuídas por referência.

<?php
$foo 
25;
$bar = &$foo;      // Esta atribuição é válida.
$bar = &(24 7);  // Inválido; referencia uma expressão sem nome.

function test()
{
   return 
25;
}

$bar = &test();    // Inválido.
?>

Não é necessário variáveis inicializadas no PHP, contudo é uma ótima prática. Variáveis não inicializadas tem um valor padrão do tipo dela dependendo do contexto no qual eles são usados - padrão de booleanos é FALSE, de inteiros e ponto-flutuantes é zero, strings (e.g. usado em echo()) são definidos como uma string vazia e arrays tornam-se um array vazio.

Exemplo #1 Valores padrões de variáveis não inicializadas

<?php
// Limpa e remove referência (sem uso de contexto) a variável; imprime NULL
var_dump($unset_var);

// Uso de booleano; imprime 'false' (Veja sobre operadores ternário para saber mais sobre a sintaxe)
echo ($unset_bool "true" "false"); // false

// Uso de string; imprime 'string(3) "abc"'
$unset_str .= 'abc';
var_dump($unset_str);

// Uso de inteiro; imprime 'int(25)'
$unset_int += 25// 0 + 25 => 25
var_dump($unset_int);

// Uso de float/double; imprime 'float(1.25)'
$unset_float += 1.25;
var_dump($unset_float);

// Uso de array; imprime array(1) {  [3]=>  string(3) "def" }
$unset_arr[3] = "def"// array() + array(3 => "def") => array(3 => "def")
var_dump($unset_arr);

// Uso de objeto; cria novo objeto stdClass (veja http://www.php.net/manual/en/reserved.classes.php)
// Imprime: object(stdClass)#1 (1) {  ["foo"]=>  string(3) "bar" }
$unset_obj->foo 'bar';
var_dump($unset_obj);
?>

Confiar no valor padrão de uma variável não inicializada é problemático no caso de incluir um arquivo em outro que usa variável com mesmo nome. E também um principal risco de segurança com register_globals estando on. Erros E_NOTICE são emitidos no caso de ter variáveis não inicializadas, contudo não no caso de adicionar elementos para um array não inicializado. O construtor da linguagem isset() pode ser usado para detectar se uma variável não foi inicializada.


html/language.variables.predefined.html0100644000101200010120000001321511277240154021544 0ustar docbuilderdocbuilder Variáveis Pré-definidas

Variáveis Pré-definidas

O PHP oferece um grande número de variáveis pré-definidas para qualquer script que ele execute. Muitas destas variáveis, entretanto, não podem ser completamente documentadas uma vez dependem de diversos fatores, como o servidor no qual scripts são executados, a versão e configuração deste servidor e outros. Algumas destas variáveis não estarão disponíveis quando o PHP for executado na linha de comando. Para uma lista destas variáveis, veja a seção Variáveis reservadas.

Aviso

No PHP 4.2.0 e posteriores, o valor default da diretiva register_globals é off. Esta é a maior modificação no PHP. Tendo register_globals off afeta o conjunto de variáveis pré-definidas disponíveis no escopo global. POr exemplo, para ler DOCUMENT_ROOT você usará $_SERVER['DOCUMENT_ROOT'] em vez de $DOCUMENT_ROOT, ou $_GET['id'] da URL http://www.example.com/test.php?id=3 em vez de $id, or $_ENV['HOME'] em vez de $HOME.

Para informações relacionadas desta modificação, veja detalhes da diretiva register_globals, no capítulo de segurança em Usando register_globals , assim como o detalhamento de lançamento das versões do PHP » 4.1.0 e » 4.2.0.

Utilizar as Variáveis Pré-definidas do PHP, como os arrays superglobais, é muito mais preferível.

Desde a versão 4.1.0, o PHP fornece um conjunto adicional de arrays predefinidos contendo as variáveis do servidor web (se aplicável), as variáveis ambiente e as entradas do usuário. Esses novos arrays são especiais pelo motivo que são automaticamente globais (significa que são automaticamente disponíveis em qualquer escopo. Por causa disso, são também conhecidas como 'superglobais' (Não há um mecanismo no PHP para superglobais definidas pelo usuário) As superglobais são listadas abaixo. Entretanto, para uma explicação de seu conteúdo e detalhes sobre as variáveis pré-definidas do PHP e sua natureza, veja a seção Variáveis Pré-definidas. Veja também que todas as outras variáveis pré-definidas antigas ($HTTP_*_VARS) ainda existem. A partir do PHP 5.0.0, os grandes arrays de variáveis pré-definidas podem ser desativadas através da diretiva register_long_arrays .

Nota: Variáveis variáveis
Superglobais não podem ser utilizadas como variáveis variáveis dentro de funções ou métodos de classe.

Nota: Mesmo que superglobal e HTTP_*_VARS existam; elas não são idênticas, então modificando uma não irá alterar a outra.

Se todos os indicadores não estiverem configurados no variables_order, seus arrays superglobais predefinidos respectivos estarão vazios.


html/language.variables.scope.html0100644000101200010120000006173011277240154020555 0ustar docbuilderdocbuilder Escopo de variáveis

Escopo de variáveis

O escopo de uma variável é o contexto onde ela foi definida. A maior parte das variáveis do PHP tem somente escopo local. Este escopo local inclui os arquivos incluídos. Por exemplo:

<?php
$a 
1;
include 
'b.inc';
?>

Aqui a variável $a estará disponível no script incluído b.inc. Entretanto, com as funções definidas pelo usuário, um escopo local é introduzido. Quaisquer variáveis utilizadas dento da função é por default limitada dentro do escopo local da função. Por exemplo:

<?php
$a 
1/* escopo global */

function Teste()
{
    echo 
$a/* referencia uma variável do escopo local (não definida) */
}

Teste();
?>

Este script não produz nenhuma saída porque a instrução echo() refere-se a uma versão local da variável $a, e ela não tem nenhum valor assimilado nesse escopo. Essa é uma pequena diferença da linguagem C quando variáveis globais são automaticamente disponíveis para funções sem sobreescrever uma eventual definição local. Isto causa problemas quando as pessoas mudam inadivertidamente uma variável global. No PHP, as variáveis globais precisam ser declaradas globais dentro de uma função se ela vai ser utilizada naquela função.

A palavra chave global

Primeiro, um exemplo de global:

Exemplo #1 Usando global

<?php
$a 
1;
$b 2;

function 
Soma()
{
    global 
$a$b;

    
$b $a $b;
}

Soma();
echo 
$b;
?>

O script acima imprimirá "3". Declarando $a e $b globais na função, todas as referências a essas variáveis referem-se a versão global. Não há um limite para o número de variáveis globais que podem ser manipuladas por uma função.

Uma segunda maneira de acessar variáveis do escopo global é utilizando o array especial $GLOBALS definido pelo PHP. O exemplo anterior poderia ser rescrito como:

Exemplo #2 Usando $GLOBALS no lugar de global

<?php
$a 
1;
$b 2;

function 
Soma()
{
    
$GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
}

Soma();
echo 
$b;
?>

O array $GLOBALS é um array associativo onde o nome da variável global é a chave do array e o seu conteúdo da variável como o valor do elemento do array. Veja que $GLOBALS existe em qualquer escopo, isto porque $GLOBALS é uma superglobal. Segue um exemplo demonstrando o poder das superglobais:

Exemplo #3 Exemplo demonstrando superglobals e escopos

<?php
function test_global()
{
    
// A maioria das variaveis pré-definidas nao sao 'super' e requerem
    // 'global' para serem disponiveis para funcoes em qualquer escopo.
    
global $HTTP_POST_VARS;

    echo 
$HTTP_POST_VARS['name'];

    
// Superglobais são disponiveis em qualquer escopo e
    // nao precisam de 'global'. Superglobais existem
    // desde o PHP 4.1.0, e HTTP_POST_VARS é agora
    // tida como obsoleta.
    
echo $_POST['name'];
}
?>

Utilizando variáveis estáticas

Outro recurso importante do escopo de variáveis é a variável estática. Uma variável estática existe somente no escopo local da função, mas ela não perde seu valor quando o nível de execução do programa deixa o escopo. Considere o seguinte exemplo:

Exemplo #4 Exemplo demonstrando a necessidade de variáveis estáticas

<?php
function Teste ()
{
    
$a 0;
    echo 
$a;
    
$a++;
}
?>

Essa função é inútil partindo de que cada vez que ela é chamada, ela coloca em $a o valor 0 e imprime "0". A instrução $a++ , que aumenta o valor da variável não tem sentido desde que a função sai e a variável $a desaparece. Para faze-la mais útil como contadora sem deixar de perder o sua conta atual, a variável $a é declarada como estática:

Exemplo #5 Exemplo de uso de variáveis estáticas

<?php
function Teste()
{
    static 
$a 0;
    echo 
$a;
    
$a++;
}
?>

Agora, cada vez que a função Teste() for chamada ele imprimirá o valor de $a e o incrementará.

Variáveis estáticas fornecem uma solução ideal para funções recursivas. Uma função recursiva é aquela se chama a si mesma. Cuidados especiais precisam ser tomados quando escrevendo funções recursivas porque é possível que ela continue na recursão indefinidamente. Você tem de ter certeza que há uma maneira segura de terminar a recursão. A seguinte função recursiva conta até 10, utilizando a variável estática $count para saber quando parar:

Exemplo #6 Variáveis estáticas em funções recursivas

<?php
function Teste()
{
    static 
$count 0;

    
$count++;
    echo 
$count;
    if (
$count 10) {
        
Test ();
    }
    
$count--;
}
?>

Nota: Variáveis estáticas podem ser declaradas como nos exemplos acima. A tentativa de assimilar valores para essas variáveis com resultados de expressões causarão um erro de interpretação (parse).

Exemplo #7 Declarando variáveis static

<?php
function foo(){
    static 
$int 0;          // correro
    
static $int 1+2;        // errado (é uma expressão)
    
static $int sqrt(121);  // wrong  (é uma expressão também)

    
$int++;
    echo 
$int;
}
?>


Referencias em variáveis globais e estáticas

A Zend Engine 1, base do PHP 4, implementa os modificadores static e global para variáveis na questão de referências. Por exemplo, uma veriável global importada dentro do escopo de uma função com a instrução global atualmente cria uma referência para a variável global. Isto pode causar comportamentos impresíveis para os seguintes casos:

<?php
function test_global_ref() {
    global 
$obj;
    
$obj = &new stdclass;
}

function 
test_global_noref() {
    global 
$obj;
    
$obj = new stdclass;
}

test_global_ref();
var_dump($obj);
test_global_noref();
var_dump($obj);
?>

Executando esse exemplo você terá as seguites saídas:


NULL
object(stdClass)(0) {
}

Uma situação similar se aplica ao modificador static. Referências não são armazenadas estaticamente:

<?php
function &get_instance_ref() {
    static 
$obj;

    echo 
'Objeto estatico: ';
    
var_dump($obj);
    if (!isset(
$obj)) {
        
// Assimila uma referencia a variavel estatica
        
$obj = &new stdclass;
    }
    
$obj->property++;
    return 
$obj;
}

function &
get_instance_noref() {
    static 
$obj;

    echo 
"Objeto estatico: ";
    
var_dump($obj);
    if (!isset(
$obj)) {
        
// Assimila o objeto para a veriavel estatica
        
$obj = new stdclass;
    }
    
$obj->property++;
    return 
$obj;
}

$obj1 get_instance_ref();
$still_obj1 get_instance_ref();
echo 
"\n";
$obj2 get_instance_noref();
$still_obj2 get_instance_noref();
?>

Executando esse exemplo você terá as seguites saídas:


Objeto estatico: NULL
Objeto estatico: NULL

Objeto estatico: NULL
Objeto estatico: object(stdClass)(1) {
["property"]=>
int(1)
}

Este exemplo demonstra que quando assimilando uma referência para uma variável estática, ela não se lembra quando você chama a função &get_instance_ref() uma segunda vez.


html/language.variables.variable.html0100644000101200010120000001242711277240154021230 0ustar docbuilderdocbuilder Variáveis variáveis

Variáveis variáveis

As vezes é conveniente poder trabalhar com variáveis variáveis. Isto é, nomes de variáveis que pode ser criadas e utilizadas dinamicamente. Uma variável normal é criada numa instrução como:

<?php
$a 
'hello';
?>

Uma variável variável pega o valor de uma variável e a trata como o nome de uma variável. No exemplo acima, hello pode ser utilizada como o nome de uma variável utilizando dois sinais de cifrão:

<?php
$$a "world";
?>

Neste ponto, duas variáveis foram definidas e preservadas na árvore de símbolos do PHP: $a contendo "hello" e $hello contendo "world". Da mesma forma, esta instrução:

<?php
echo "$a ${$a}";
?>

produz a mesma saida que:

<?php
echo "$a $hello";
?>

no caso: hello world.

Para poder utilizar variáveis variáveis com arrays, você precisa resolver um problema de ambigüidade. Assim, se você escrever $$a[1] então o interpretador pode entender que você quer usar $a[1] como uma variável ou que você quer usar $$a como uma variável e [1] como o índice dessa variável. A sintaxe para resolver essa ambigüidade é ${$a[1]} para o primeiro caso e ${$a}[1] para o segundo.

Aviso

Note que variáveis variáveis não podem ser utilizadas com os novos arrays superglobais dentro de funções ou métodos de classes. A variável $this é também uma variável especial e não pode ser referenciada dinamicamente.


html/language.variables.external.html0100644000101200010120000004134111277240154021262 0ustar docbuilderdocbuilder Variáveis de fontes externas

Variáveis de fontes externas

Formulários HTML (GET and POST)

Quando um formulário é submetido para um script PHP, qualquer variável do formulário será automaticamente disponível para o script. Há várias maneiras de acessar estas informações, por exemplo:

Exemplo #1 Um formulário HTML simples

<form action="foo.php" method="post">
    Nome:  <input type="text" name="username" /><br />
    Email: <input type="text" name="email" /><br />
    <input type="submit" name="submit" value="Me aperte!" />
</form>

Dependendo da configuração local e suas preferencias pessoais, essas são as vias pela qual você pode acessar os dados de seus formulários:

Exemplo #2 Acessando dados de um formulário HTML via POST

<?php
// Disponível desde o PHP 4.1.0

   echo $_POST['username'];
   echo $_REQUEST['username'];

   import_request_variables('p', 'p_');
   echo $p_username;

// Indisponivel desde o PHP 6. A partir do PHP 5.0.0, essas longas
// variaveis pré-definidas podem ser desabilitadas pela diretiva register_long_arrays.

   echo $HTTP_POST_VARS['username'];

// Disponível se a diretiva register_globals = on.
// Desde o PHP 4.2.0 o valor default de register_globals é off
// Usar/manter esse método é preferível.

   echo $username;
?>

Utilizar um formulário GET é similar, exceto que você use a variável GET pré-definida. O metodo GET obtem os dados da QUERY_STRING (a informação depois do '?' numa URL). Então, por exemplo, http://www.example.com/test.php?id=3 contém os dados GET que serão acessíveis com $_GET['id']. Veja também $_REQUEST e import_request_variables().

Nota: Arrays superglobais, como $_POST e $_GET, estão disponíveis desde o PHP 4.1.0.

Como explicado, antes do PHP 4.2.0 o valor default de register_globals era on. E no PHP ele era sempre on. A comunidade PHP está encorajando todos a não alterarem essa diretiva, assumindo-a sempre como off e codificando em conformidade com isso.

Nota: A diretiva de configuração magic_quotes_gpc afeta os valores de GET, POST e Cookies. Se estiver ativada, o valor (It's "PHP!") se tornará automaticamente (It\'s \"PHP!\"). Escaping é necessário para inserção em bancos de dados. Veja também addslashes(), stripslashes() e magic_quotes_sybase.

O PHP entende arrays no contexto de variáveis de formulários (veja o FAQ relacionado). Você pode, por exemplo, agrupar variáveis relacionadas juntas, ou usar esse recurso para receber valores de um campo de seleção múltipla. Por exemplo, podemos ter um formulario que manda informações para si mesmo até um comando submetido para mostrar todos os dados.

Exemplo #3 Variáveis de formulários mais complexos

<?php
if ($_POST) {
    echo 
'<pre>';
    echo 
htmlspecialchars(print_r($_POSTtrue));
    echo 
'</pre>';
} else {
?>
<form action="" method="post">
    Nome:  <input type="text" name="personal[name]" /><br />
    Email: <input type="text" name="personal[email]" /><br />
    Cerveja: <br />
    <select multiple name="beer[]">
        <option value="antartica">Antartica</option>
        <option value="brahma">Brahma</option>
        <option value="skol">Skol</option>
    </select><br />
    <input type="submit" value="Enviar dados!" />
</form>

Nomes de variáveis SUBMIT IMAGE

Quando submetendo um formulário, é possível de se utilizar imagens ao invés do botão de submit padrão com uma tag do tipo:

<input type="image" src="image.gif" name="sub" />

Quando o usuário clica em algum lugar da imagem, o formulário que o acompanha é transmitido para o servidor com duas variáveis adicionais, sub_x e sub_y. Eles contém a coordenadas do clique do usuário na imagem. Os mais experientes percebem que os atuais nomes dessas variáveis enviados pelo browser contém um ponto ao invés de um sublinhado, mas o PHP converte o ponto para um sublinhado automaticamente.

Cookies HTTP

O PHP suporta transparentemente cookies HTTP como os definidos pela