content/pt_br/disposability.md0000644000175000056700000000575015232661434015301 0ustar0000000000000000## IX. Descartabilidade ### Maximize robustez com inicialização rápida e desligamento gracioso **Os [processos](./processos) de um app doze-fatores são *descartáveis*, significando que podem ser iniciados ou parados a qualquer momento.** Isso facilita o escalonamento elástico, rápido deploy de [código](./codebase) ou mudanças de [configuração](./config), e robustez de deploys de produção. Processos devem empenhar-se em **minimizar o tempo de inicialização**. Idealmente, um processo leva alguns segundos do tempo que o comando de inicialização é executado até o ponto que ele estará pronto para receber requisições ou tarefas. Períodos curtos de inicialização provém mais agilidade para o processo de [release](./build-release-run) e de escalonamento; e ele adiciona robustez, pois o gestor de processos pode mais facilmente mover processos para outras máquinas físicas quando necessário. Processos **desligam-se graciosamente quando recebem um sinal [SIGTERM](http://en.wikipedia.org/wiki/SIGTERM)** do seu gestor de processos. Para um processo web, desligamento gracioso é alcançado quando cessa de escutar à porta de serviço (consequentemente recusando quaisquer requisições novas), permitindo qualquer requisição em andamento terminar, e então desligando. Implícito neste modelo é que as requisições HTTP são curtas (não mais que alguns poucos segundos), ou no caso de um longo _polling_, o cliente deve ser capaz de transparentemente tentar se reconectar quando a conexão for perdida. Para um processo de trabalho (worker), desligamento gracioso é alcançado retornando a tarefa atual para fila de trabalho. Por exemplo, no [RabbitMQ](http://www.rabbitmq.com/) o trabalhador pode enviar um [`NACK`](http://www.rabbitmq.com/amqp-0-9-1-quickref.html#basic.nack); no [Beanstalkd](https://beanstalkd.github.io), a tarefa é retornada para a fila automaticamente sempre que um trabalhador se desconecta. Sistemas baseados em trava como o [Delayed Job](https://github.com/collectiveidea/delayed_job#readme) precisam se certificar de soltar a trava no registro da tarefa. Implícito neste modelo é que todas as tarefas são [reentrantes](http://en.wikipedia.org/wiki/Reentrant_%28subroutine%29), o que tipicamente é atingindo envolvendo os resultados numa transação, ou tornando a operação [idempotente](http://en.wikipedia.org/wiki/Idempotence). Processos também devem ser **robustos contra morte súbida**, no caso de uma falha de hardware. Ao passo que isso é muito menos comum que um desligamento via `SIGTERM`, isso ainda pode acontecer. Uma abordagem recomendada é usar um backend de filas robusto, como o Beanstalkd, que retorna tarefas à fila quando clientes desconectam ou esgotam o tempo de resposta. De qualquer forma, um app doze-fatores é arquitetado para lidar com terminações não esperadas e não graciosas. [Crash-only design](http://lwn.net/Articles/191059/) leva este conceito à sua [conclusão lógica](http://docs.couchdb.org/en/latest/intro/overview.html). content/ru/processes.md0000644000175000056700000001102215232661434013735 0ustar0000000000000000## VI. ПроцеÑ�Ñ�Ñ‹ ### ЗапуÑ�кайте приложение как один или неÑ�колько процеÑ�Ñ�ов, не Ñ�охранÑ�ющих внутреннее Ñ�оÑ�тоÑ�ние (stateless) Приложение выполнÑ�етÑ�Ñ� в Ñ�реде выполнениÑ� как один или неÑ�колько *процеÑ�Ñ�ов*. Ð’ проÑ�тейшем Ñ�лучае код Ñ�влÑ�етÑ�Ñ� незавиÑ�имым Ñ�криптом, Ñ�реда выполнениÑ� -- ноутбуком разработчика Ñ� уÑ�тановленной Ñ�редой иÑ�полнениÑ� Ñ�зыка, а процеÑ�Ñ� запуÑ�каетÑ�Ñ� из командной Ñ�троки (например, как `python my_script.py`). Другой крайний вариант -- Ñ�то рабочее развёртывание Ñ�ложного приложениÑ�, которое может иÑ�пользовать много [типов процеÑ�Ñ�ов, каждый из которых запущен в необходимом количеÑ�тве Ñ�кземплÑ�ров](./concurrency). **ПроцеÑ�Ñ�Ñ‹ приложениÑ� двенадцати факторов не Ñ�охранÑ�ÑŽÑ‚ внутреннее Ñ�оÑ�тоÑ�ние (stateless) и [не имеют разделÑ�емых данных (share-nothing)](http://en.wikipedia.org/wiki/Shared_nothing_architecture).** Любые данные, которые требуетÑ�Ñ� Ñ�охранить, должны быть Ñ�охранены в хранÑ�щей Ñ�оÑ�тоÑ�ние [Ñ�торонней Ñ�лужбе](./backing-services), обычно, в базе данных. ПамÑ�ть и файловаÑ� Ñ�иÑ�тема процеÑ�Ñ�а может быть иÑ�пользована в качеÑ�тве временного кÑ�ша длÑ� одной транзакции. Ð�апример, загрузка, обработка и Ñ�охранение большого файла в базе данных. Приложение двенадцати факторов не предполагает, что что-либо закÑ�шированное в памÑ�ти или на диÑ�ке будет доÑ�тупно Ñ�ледующим запроÑ�ам или задачам -- Ñ� большим количеÑ�твом разноплановых процеÑ�Ñ�ов выÑ�ока вероÑ�тноÑ�ть, что Ñ�ледующий запроÑ� будет обработан другим процеÑ�Ñ�ом. Даже Ñ� одним запущенным процеÑ�Ñ�ом перезапуÑ�к (вызванный развёртыванием, изменением конфигураций или переноÑ�ом процеÑ�Ñ�а на другое физичеÑ�кое уÑ�тройÑ�тво) приведёт к уничтожению вÑ�ех локальных (памÑ�ти, файловой Ñ�иÑ�темы) Ñ�оÑ�тоÑ�ний. Упаковщики реÑ�урÑ�ов (asset) (например, [Jammit](http://documentcloud.github.com/jammit/) или [django-compressor](http://django-compressor.readthedocs.org/)) иÑ�пользуют файловую Ñ�иÑ�тему как кÑ�ш длÑ� Ñ�компилированных реÑ�урÑ�ов. Приложение двенадцати факторов предпочитает делать данную компилÑ�цию во времÑ� [Ñ�тапа Ñ�борки](./build-release-run), например, как в [Rails asset pipeline](http://guides.rubyonrails.org/asset_pipeline.html), а не во времÑ� выполнениÑ�. Ð�екоторые веб-Ñ�иÑ�темы полагаютÑ�Ñ� на ["липкие Ñ�еÑ�Ñ�ии"] (http://en.wikipedia.org/wiki/Load_balancing_%28computing%29#Persistence) -- то еÑ�ть кÑ�шируют данные пользовательÑ�ких Ñ�еÑ�Ñ�ии в памÑ�ти процеÑ�Ñ�а приложениÑ� и ожидают того, что поÑ�ледующие запроÑ�Ñ‹ того же пользователÑ� будут перенаправлены к тому же процеÑ�Ñ�у. Липкие Ñ�еÑ�Ñ�ии Ñ�влÑ�ÑŽÑ‚Ñ�Ñ� нарушением двенадцати факторов и их никогда не Ñ�ледует иÑ�пользовать или полагатьÑ�Ñ� на них. Данные пользовательÑ�кой Ñ�еÑ�Ñ�ии Ñ�влÑ�ÑŽÑ‚Ñ�Ñ� хорошими кандидатами длÑ� хранилища данных, которое предоÑ�тавлÑ�ет функцию ограничениÑ� времени хранениÑ�, например, [Memcached](http://memcached.org/) и [Redis](http://redis.io/). public/images/process-types.png0000644000175000056700000005117415232661434015372 0ustar0000000000000000‰PNG  IHDR¤µ½Ù pHYs  šœ IDATxí� ¸Źþ Q!È.’x� 67ô  ¸Áˆ¯Ü•«DÉÕ+ˆñ½1¨Ñ%Æ�ˆT (Êâ/(KA4¯$EDA6AþïÛ§k¨é3s¦çÌÒ3Óo=Ï7UõUu-¿êéoºª§«ÞîÝ»�œˆ€ˆ€DM`¯¨ úE@D@D€d�tˆ€ˆ€”¤’5BD@D@I瀈€ˆ@Iˆ­AªW¯^‡’5BD@DÀ#[ƒ„Þß!£¤o�ˆ€”�X$¢f‚3!?,�¡PKD@D Þbi�0ä !C r" " %@ ®iˆÏþPÜ-Sã &ˆ€ˆ@ì ÄÎ ùëF'8#¯i;†‚" "�Ø$€ A0R{G5ªWD@D š@ Ò�Àà·BüŒ€NQ�"ˆ•Aò׋MÁxp �T" " E$+ƒ®Áé:‹úL+> .'" "�Ø$�hPÎ|œ�‚ˉ€ˆ€DD 6 |¹NÄõ¢tnHºéE@D@ O N)Ó:Ñ ¸‹êPxäªAD@D �X$}ˆ¯ ÊäÒ­1e:Né" " 9ˆ…A#ûª L¸†dÊ t�ˆ‹AŸ^%”²‰€ˆ@¾ T¼Aò×…ÜWeb¨i»L„”."  Pñ ̲50z•PN4)" ™ÄÁ É!�®W €(*" Å PÑ ÓuÜZ"Õ«‚2±Íôˆx¦ã•." "�%�Š6H`‘ít�ŧW YòE@D H*Ö áîˆ[J¤{UP&¼|•Ðù™2)]D@D *Ö Q¦We¢¨i»L„”." y$PÉ)WƒÂW Õeý)�ã¢D@D >*Ò Á�p+‰0¯ Ê4Òu]ƒÊT®ÒE@D@*Ò ¡�a_ÀQ#šë]V�¥HM€ ÿ•èÞC§†¤éØáÐ�tÒÞAø6'žÄÝVãÝ»woNR*"" "�wõp±Í{¡¥\ LÚ7Ûiã0èåĈ€@¥NÙE€RUŠ€ˆ€äB@)z:VD@D od�ò†R‰€ˆ€äB@)z:VD@D od�ò†R‰€ˆ€äB@)z:VD@D od�ò†R‰€ˆ€äB@)z:VD@D od�ò†R‰€ˆ€äB@)z:VD@D od�ò†R‰€ˆ€äB@)z:VD@D od�ò†R‰€ˆ€äB@)z:VD@D od�ò†R‰€ˆ€äB@)z:VD@D od�ò†R‰€ˆ€äB@)z:VD@D od�ò†R‰€ˆ€äB@)z:VD@D od�ò†R‰€ˆ€äB@)z:VD@D od�ò†R‰€ˆ€äB@)z:VD@D od�ò†R‰€ˆ€äB@)z:VD@D od�ò†R‰€ˆ€äB@)z:VD@D od�ò†R‰€ˆ€äB@)z:VD@D od�ò†R‰€ˆ€äB@)z:VD@D od�ò†R‰€ˆ€äB@)z:VD@D oöÎ[I*H"&P¯^½CÑ„S! ­ qwk`ä¹Ý»wwêé�A*ý1R 3€!ªB–_@NÈ�5¶É`4�¿†éÕØBPÇKž€¦ìJ~ˆÔÀtp‘Ý2é³!2Fé@Uë«àͯ[É­ö¬J�hÈ EÃ]µæHÀ¿¨>†b†åXT܉?·N«¿åA@¿”ÊcœÔÊš8E70¨îÒ¥‹¡´oß>˜»ø‡~hæÏŸo–-[ìû ô嘾ûe0Aqˆ’@=œ”QÖ_ôºñE¬B¥œâ±nô²ù¥Ocx8ZÉ«lâ Ð/ùKsôÑG—~ŠÜÂÅ‹›Q£F™õë×»5ïDäœû+]¥Â"%MÙEI_uוÀÏq`µlÙÒ<øàƒ2FihòŽ‘|ÈÉqä7‰+(‘�AŠ|Ô€làî¨!òŸéÃ_ÿ�‹­›¬0ðò'?ùI�EðLö`¢â"Pl2HÅ&®úr%Ð4¶…´iÓÆœtÒI6*¿§�všiÖ¬™›ƒÿÕêä*�( È EI_u×…À!îA�:ézêò¨-\¿~ýTÓš_¯í¥‰@1 È “¶êÊ�¤)¦ ä£ÌØ”¸Cb¿“n™bB-I2H%9,j”ˆ€Ä�€ RüÆ\=�’$ ƒT’âF‰€ˆ@üÈ ÅoÌÕc(I2H%9,j”ˆ€Ä�€ RüÆ\=�’$ ƒT’âF‰€ˆ@üÈ ÅoÌÕc(I2H%9,j”ˆ€Ä�€ RüÆ\=�’$ ƒT’âF‰€ˆ@üDb�ðÊûú�¾�» ¯AÖA¾„쀬�P÷{ÈȾñõ¸\ tíÚÕP é¶nÝjz÷î]ðz Ù•-©$½¨2U†|ê`\öCyW@®†¤{ËðH£ô€üB5þXìn¹¾œÄšÀ”)SÌgŸ}kê|e(Úïv€ð]ȯ éŒQ*Êm¡¼ò.Êø~ª Ò‰@\ìܹÓ<þøãqé®ú3E3Hàú¤=ä+Èë�Ñ�ó GAZC¸(ïØšCކ\¹²Bw äi/¤¨��šîÝ»›õë×{Gs[oN¯M�:Õ‹oذÁôèÑÃ0ß®]»Ì]wÝeN>ùdÓ«W//üÕWò7ÈvÈÈ©6 Ç|)ìj±­P~E A¢›1c†Ù±c‡Yºt©iÒ¤‰Y°`�g¨¦OŸî¥3Ÿ½kêÓ§�9å”S<=×nR¹nݺ™-Z$%]wÝuæàƒ6£F�JèçÌ™ã…Y¾m‹­3‘ �Tå1}îܹ¦Q£F©v}uWXÊ–@Ñ ’KƦ7âÓ œš£qj�ã‡Aö…t„<}Oør"�Gy¤iÛ¶­Y±b…™6mšÙ¾}»ýôS/Ì'äN<ñD/¼f�÷û,‘‡�TåQÏ»£ /¼�A9¨H‘$�që‚xcˆëê#²ç祛¢°Ô‘@UU•wä½÷Þk¸ý9§¿6lè­1Á¦·nÍeMã+,º8Àóƒ{íåžÊÕ©¼3Â*3zôho�Ú¦M›z‰¯¼òŠY´h‘'¯¿ÎåÔd—ª<æàËu+wÃÉ¥(&åG æ7©8}èâWc'ÃùpƒußCà?ÒÃ*å‹@>p}ˆîóÏ?7;vô¦À:wîìÅ©·SiýúõcÔ¼øâ‹fÖ¬Y^xÀ>(Î�{î¹fРAfåÊ•æ±Çó:î¸ã<ŸÓto¾ù¦gX2ÝñØx 5bô­sÃV'_Ê•@Qÿ‡ä@ÚßOƯH>ÞÍ�ÿ ëDo@÷¶¯ž+ñ#òD W�:u2Í›77œ>ëÒ¥úw×læÏŸï­1�îÒK/5ü*ï¤èøÝE]ä…Ã~ :Ô3h<ð€éÛ·¯1b„ÙgŸ}̸qã̶mÛ¼µ¢‘#G†-NùD â Ôƒ(z'ap>G¥46ÇC΀ة9>ôp5ÒÝDÈLjóHys(» …Ív œƒ:ªW»¥‚¥IãÇç«'ØÖ�uÖYæç?ÿ¹�ÊÏ@àæ›o6Ï>û¬›kÎÿ‡\…Â"�¨î�øt�Ñÿ:nÿgDcD7·ÚÓ§ˆ€ˆ@¥ˆj i\ °K¡û‹£ß†ð-N\A� &‰AÂÁ£`úÈþSñlèíü!�Ó©ˆÒ—ˆ�¨¦ìø¯s®W¯@#­ze9 WTD@D r Dr‡DœXœn¹§ê¶BìÝÓ¸ýD×ÊÅ®ž‰€ˆ€ Dr‡cÃ'ìfCìÿ‘‚íâÿ�^A¾cq·Ä äD@D@*œ@TwH7€k:cd‘7B@5XòE@D Â De�Î÷¹Ž†ß2ãø:½Ë.©D@D  D2e�í|˜·`JŽëGA¶Õïj©~Ñj0Mq� $ÕÒ{>Ë[aŒ¸ñžçæƒ|�Ð$_e_!äG剀äB`Ë–-ÁÃ÷ìLQ\ŠL *ƒô€ßÏ«á¯vú¼á»ÒD'MA �¤ýV­Z%*YHÁë_Y®¬"PPQ$þÿè‰ =ã´Ý}ò(9~Þr»¼lÙ2³zµû›ÆMUØ%ðî»ïš÷Þ³“^ “³œ”�H Ö�¸U9làKT_„¬‡ì‚|áûë†BÎ@ž/áˉ@‚Ήy5¡@€[…sëq¹ôÈç׿þu0_,¼1¨T\¢"‰A²�Å—áQH_H+ÈÞ�f�!¿ƒhnÛ‚’$�ô†�yóæ™[o½UF)HÉ�s»vnì·xñâ`Ž»‚ ÅE J‘l?i‡µýD”øóV7~™�ÂŽq <è ƒ¼=‹¸¿QûöíMýúõÝäX…yGÄ©Ì x¦˜Öœ�}§Å Š:[ò"3H¸ ðËp;¾ß%%Ĺ/Òo  |ºnÒøÒÕ¼:ÔS…ù–ë´’%QF>Æ‘ûd½¡/—�UÈη $= ’]Ê-ù'É”.&½Ñ•i�£Ù%Ä[Á{rd_HGÈsÐ÷„/'5øSn¬¸²F¢µx‰œ&—1ª�’Ò"!‰ABOG@ܺ‡ Þâ:ηØ�d]½Â"àÀE•Wþoí~ˆÖ=*i?ȇkFÝÀMF<-&%DI ª75Ø÷Ø]àwþ<Â÷>2ÒÃÑ+(5àâʧÄþwÓ·ÃçS›ý  BâîVåEÈ#`Űœ”,�HÖ�pñà¯5Þqz® d5„ïú¾4‡#½!Â[!;ß~ÞÊ®BaZCÊQ$" ù!Õß_ÒÂé>Ì@cDgbPõþŸä剀ˆ€T2�¨ ÷8:ò¿¸Oûñ‰¾?7�®¨ˆ€ˆ@…p,(fÇ¥¨l)tqô۾ʼn+(" "PÁ"1HXzLùBÃ麳¡·Û˜Ó8�Š(}9�ˆä¡†(¹ê¡†(é«nHO ’;$6†á4×’<‡ð�¿A¶C–@ì6‹|� &ÉC 06½Á”ojð "âöM öϱöM ½0m§*øT×D@DÀˆêIoj°# _D@DÀ#•AÊô¦†süñÑ›t¢Š€ˆ@LD2e¶ûû|'cºîëó²t|SÃн]õþ<ë剀ˆ€T2�¨ ’ÞÔPÉgUÄ}îEr]R­À�<¾ªKNJž@TIoj(ùS£¼#t(Z|%¤?¤DÎ'6¯"ȇˆ¸3_F+'%I ª5$½©¡$O‡òk.¶ !cÑrNó‡t€È%8ÑÛ oƒ߈.'%I ƒ„_izSCIžåÕ(\\Û¢Åü[À0HTwûå�¼&‚ÛåÔhµ5>ô¦c´…yžï¸¨ÒÑlþ¾ûîkZµÒÒÎ�;ÍÚµkƒxlügøaøK‘/¥@@¿*KaÔ†ºøJ2FíÛ·7Æ 3UUU†FIÎxiÊ”)fâĉfË>K”p·À¨¿£Äõ%9( ‘LÙ±çø2pîÿzóÞ ±/VeÚk�®%AH�(9878õÄõ¢„ëÒ¥‹yüñÇÍ)§œ"c” ‚Ý/Û´1—]v™?~¼iÖ¬™“âiÔåD dDb�pAáæ|üe6Ò Âb]Ç?ľ‚|ßu• ‹€Oàø‰s¦eË–æÎ;ï4�5 4;ì0ó‹_Ô°?UøŽžæ©E è"1Hèå û¶†t�æÕå–t‰ÒÇšÀ™nï/¿ürÓ¤ ãÈÕFàØc�5¼“ 8ûV”€ZQ(>�¨ Òù~Wy‡Ô2E·àëz¦H“JŽrœtÒInTáZôîÝ;˜ª;¤ Å##ÕC íüß‚EU®ÌòZ™’Qœø&ÏÕ¯_ßpÊN.�ƒ:(˜±CP¡¸DE ª;¤÷üß ct í<Â|Ð�ïµ›äëì;ílù"�Dà€HŠ+R;=}X;¥FK *ƒô€ßí«á¯vlExÄnÎ7ÑISPD@D ‚ De�îÓ'2på´Ý}ò(YD@D BDb�°n´ Âø^­!ë!» ŸAæB†BÎ@ž/áˉ€ˆ€Ä€@T5xhapE€"'" "s‘Ü!‘9^èù+¤ÊÆ!K!}]½Â" " •M ƒcs"°r�¨3ä&ˆënB„ohxùŽu¨\‘$à¼ÂéÂÇ ƒ!®‚È“¦ÿ "'" "Q¤î>Û¡XGúÀåŒø*ÄùP]ÒÛœ«Uú¨DQ$û†6i ¶ðõû¥I—ZD@D ÂDe�–û'a�è$HcÈ^��~H›ì§ëM v©;" "�Ž×i¢p@¥Üïè{�9�tîÁt Ò‹@)èÚµz¯E‹å½yï¾û®¹ë®»ÌòåË ¦¶ ßÞ}ýõ×›æÍ›ç½.(Qe�p×Ò�û)„oá>Ò_ï�¨H{ ñaˆgó 䫃N†œIçžA¸t‰Ò‹@Üüö·¿õŒÑ¯ýkóÕW_™+¯¼Ò|ñÅæ¾ûôB“¸� •Úߌ ‡ÍÌ†ÔØHŇÒþ+Èw,ŒÒ›¾®Vù¾B~¾©ad„›ô5…l‚,…< y�ùàˉ€€À˜1c¶mÛæ…ßxã�„N(waÖ� ²™Œ ÝŸ 'CZ@ö†4‡TAþ‘1*÷³«ÄÚ?pà@Ó½{w³~=ßT…_<>h8Å6uêT/¾aÃÓ£GÃ|t»víò¦ÈN>ùdÓ«W//Ì;ëx,eøðáæâ‹/¶ê„?yòd/ýž{îñt›7oö¦ØzöìiXæwÜavîܙȟ©<›qÇŽæ‘Gñ¢)ö7²Ùä‹@Ùc�x'C7’jãNãÑõ¬öÂâ.‰oeø3äcÈߟ ¿wøR”S Q¡A™9s¦wÀÂ… =Þ¼yžO=��Ý„ ÌĉͰaÃÌW\á…iÄ‚îì³ÏNº{aú’%K<ƒÓ¿sÕUWy‡Œ;Ö¼ð æšk®ñdÒ¤IfüøñÁâLªòÜL4˜œ¾;ðÀÍÿ÷»I ‹@Yc�ÜÍô6¤è-߸@g宎eø„ѹY8ØÂÇ¿÷ñý³á¿ˆô_À—�¼ A¢›1c†á]ÆÒ¥K½­Ï,XàªéÓ§{é6Ÿ½sêÓ§�9å”S¼´)S¦x¾ûÑ­[7Ó¢E We®»î:sðÁ›Q£F%ôsæÌñÂ,ßÖaëLdB UynúO<áÝ•}ðÁæ¶Ûns“�²&Æ ½ç÷0o›éÁØœ‹2ÿ_r?C¾ïgÈ£dMàÈ#�4mÛ¶5+V¬0Ó¦M3Û·o7ƒ6›6mòâÔ·k×ÎqÄ^™ëÖ­óü&Mšx†‹‘µk×z:÷c¿ýjþ]ŽÓï¿ÿ¾÷‚Íûé§ŸzAN³�xâ‰^xÍš569á§*/‘ˆ@Æ ͹çò+„WãÏ�ëùú�J Æ ñ‰8º|n¦Ç'öèÞ†ð‰S�|À¢„Fèoºÿªöô)ù!PUUåtï½÷š ˜ .¸À»Àóqj:›ÎpëÖ­éy‹F‹.Õµ{íUókÄ;#ü 2£G�ö¦ylÓ¦|nO½òŠácá”×_ÝÓ¹©ÊsÓÆ«§¢q’�J!Pó›T³g÷B•ïÍô:ûÕpÏ£©� î‘´Â9‘ÓýôN¾/OòBÀ®}þùç¦cÇŽ¦Q£F¦sçΆq:;•Æp¿~ýè™_|ÑÌšU=3=`ÀO—éƒw0ƒ 2+W®4�=ÆW6sÜqÇy>§éÞ|óMï�‡ /¼ÐÓ¥û°:0ýÒK/5Ǽ·>õÒK/y‡p½IN*…@ÆÇ¾i(ÐÙóñko*üÿ€Ð˜4ƒl†¼ áã>|*nÏãBPdpa !‹›/CuJ�j�:uòþHÊé³.]ºxJ®ÙÌŸ?ß[bºu4[·n5¼›¢ã“t]t‘MÎè:Ô3f<ð€éÛ·¯1b„ÙgŸ}̸qã Ûf½#GŽÌXŽÍÀø$>`Á»;3†åD RÔƒ!)z_`ÜøX·–à”¿‘œÿ BC×r;äÛ�¹h_õd;"ùp¨» åða ëæ ŽêÕn«‘_Ò0†‰“¶}ûöæ™gž)éö–Rã/^l.¿ür·I:ÿ] GJ ãR�ZwÊ¥Aâê1ï¼Ò¹êŸ¦éR¥¨)§Äø ´.– îHGÞßdÈÿ[äË´v•¡%‹€ˆ€” �”©�‡±¹õô…p¾e„kUŸ@øg�ï#]“ã!'" q!Õ”�ÇFçE(r" " 1'�Ò ÁPÔ+$LÎ@ùõ!× .>©''" "s9OÙÁ¸4‚tƒØMõ = ™ú@þ&³òˆ€ˆ€T>�”wHÁnÃØüºk!ß„4¦×!ε¢!|çJõ«—ëPˆ¨ï�`Œø6ï?@øˆv>Œé …|y åŸ 9Â;­ŒíáÁr" " •G ÌÒu!ºÍ·Pr.¬›ægìÿY÷ %7Êwv%+’R¨aîHxgDwd±2¦|n7qäßByDNŠJ`ãÆ�E­O•‰€Ž@ƒd_'ü:šñg¿)âÎåKÈ[ˆòu?ò}y"Ph;m[¶l1¹p¸‡RÀ­ Ä�È„1H|Ç×�ª_ylÌL­Ãuè3îÕ^æONÃ…•Ì¥)G ¬tûlw~uu §&ÀwÙܪ@\QˆŒ@ƒ´ÈoÝ¥0" ~²?d>ä Èݺ�ª½pŸ0f Ã!ó !_B>�Ì�\áÿ”äD þ�-á¸Õ¸\f«W¯öÞ>È93WT"#Æ Ý†Ö}ã·òÎ4­å SC9›–ÈHƒÆ2ù’U8>`A=Žø„†©1|9à–' ·lÙ2s÷ÝöwQB­€C€Óš7Üpƒ·u»£æ�æ«N\Aˆ”@Fƒ„»¢—ÑÂ3 Þa¾‡î=È—�ÿƒ\ }¦—¥"[Âý¡Î‰XêÀ Pßš:IÚ8À¹Æ»ö).ƒ‡~Øp—Öõë×»j…A€ÓtÿþïÿîmÝr Xî è�ÈDµ�â]Ñ2ÈÈkþ/© „�‚ó®ì{�uøÂ´�Ÿ7‡»®*6Û)PûÁ80Ê%ˆq<mår[·Íõë×7Üd�û$µk×ÎMŠUxÇŽžq^²d‰áT] 7 ß­³Rè¥�È„2Høò÷B yWó_8‰çØÖúwΕ\ =ÿåpÜ&dätÜ!8îŸÁƒ�þuèø8ФïLÏ%î·Y)ˆ%r,Æò4…o‡çÆŽrá pšî4|·6‡?D9E ð2NÙáKÏ[ùt§Øn‚¸î&D¾ yù¸ÖÍõ3¦«ß®Ù§ú–«|1"€ *ï¬yÞ-�Q·síêÐWÆ(WŒ:¾Ò·®Ùòd°›€ðÈ“¦ÿ Öñ½xk!S`ÈúBš@ö‚´† €þ9ŸÚ‘�´pa}‰ü±ôcÈ’´ã�Àu">™Ø¼þ²-Þ8ÔûR%�qÊâ34¾)dœÈ\çIrHoW’7 ½eRbšŽÙ�&)£uäô*!Ô]…J4e—‘tyfÀøŠ–ÒÖ—òìHî­¦úÀ—×ñ½Ñô\îLUB� ðÎ&“ã+‚èøpA ƒ ]^×zª‹Ô§dGÞ•8‚"'"PfÂLÙÙùùIøõy¤1„Ók- ýÐßÉ~Ÿß.³¾«¹" " %D Ì·žè ùd$�{0]BPŸë´þ! IDAT[°<ÅE@D@ÊŸ@˜;¤ÐM>¸P›{‰ãjË 4¨�@Fƒ„»¾6è|ÈÅ> ð)d„n}òcÈ÷‘�‹¨r" " "P'a¦ì¸IÞn”þ'_êT‘�Úd¼Cªí`¥‰€ˆ€ˆ@¾Ôj�ðÝ`È_ ‰Ç½n ™Ld3ä ÈAùj�ʈ'�´Sv02|ºîG.è"ηÛmÍ™|äX¤uÂÌÿ +'" " YHy‡ãB#“dŒü’/…ï#[á�üÔF2ù(wHÙ†|« BÍT®ÒE@D@Ê—@Jƒ„î\âtiÂÿæÇù>_'Äiº_úqzg:á|  C C ‹`”¾ _ND@D  ¤3H]œ¾^Ž©¸•0|Ÿ]_ÿt |·“ï[N¸AîŸt}! V™" " ÑH·†äî/óžßL¾æ¿¾žãû‰‡çúRXÇ»«— Üqv$d„w]4:ÜîâÈÇ�3 Ìsä¿!}!%é`°ÙÿÞ¾N‰Ó‹Ùð@öŠt|«4ß+7 ò ~Ä0^0‡1h‹ÂyÎTA8�LIwŽ#©âÝ'èá߂Α¯U|�ÕÁò&€“”ÿ3Jôˆ~å�(m˜Ç ú¬î_×ÍÑ­ –“.Žc¦øÇ}#U¤}ÛOï×÷ˆ³î©òg£CU~Y¶/³³9>˜eñ‚w9„ÛeØ2å×dA>ùå#Žr[AÆ@øãEìÓ3X>'䃹ÊH¾fŠG~x¤›²ã¯Zë†â—ç!ˆ öÿü·¡;ñûl&ø<Ùú>~F^@R¹Í¾r ïÛ;±œ¶žHUQ.:0à�$w,½Â_çré �Ï0{b7`LŸ;d Êꄬo@†Câ|7†XWdš f?“YyD ØÒ¤çœ†ÜŒð*·Ÿ ›Xí™·àóɺlÞe·Ý?ˆôõ�4…ð âÍ § íY?�¯-¢ã4ÝÆj/úO´“ÕÙk\£oTy´€¿L¿œ§4Q�Ñ\§æä¸ ìn Ÿ]9E 8Òý¢äà C ¼3rÝ?¹ÃUøáÛq×ä±Y’TFìžx!)%92Õ�òå­t¥´ÅÅoÑ^nß}÷5ýû÷7=zô0�çí& Q~¹6oÞlæÎ�kžþy³cÇ·ù' 2¿ÔÉá‚Ú òúè#3kÖ,oF‚ár|o è�ȤÝ1'+urÝètÈ.§¦®Å ü/øéÜ‚üUÈ}Ðñ…ÐÇrMˆÇt¬å ¿"­/ÊÞ€ü»ý|ÿ¯–c2&¡¬*dâ��usPf/ ã§(ÃtêÔÉŒ=Ú´ico$Ô�<¼0^{íµfÅŠÁwû%Ae˜8ÆàÈ÷37ïE]d† fêׯïª�Å‹›Q£F™õë“þ»Î¸Ž»M�D ¤5H…n.(œ²ùO׉¸Õòddä|Q¼©=ä¥?rt4Žuv)ŒI] �³�F4‡v˜?~¼iÔ¨Q�ÛUénÙ²Åüð‡?4«W¯v»úÆó:å_ “Ö�x!”1ª�.ùüìgI74< x&ŒJí%$¥öF,q§æ†ž”A‘šŽ<òHsþùçìƒCA½â"Pt‘$\„è®…ü ²’öUBE'’¹ÂÈ’X{ëСƒ7]—ù0åèÒ¥KpJ“w:|ò+[Ç5¨„;õÔSc½V”"pî¹çs%± &*.Å$‰AB¯�ðáˆÃ å¶ê| ÚœpüÕ)ž@ ^_t"gÒ#öœ2• G€}ôhˆ„|@DN"'•Aº<òžç©Z@Ïd“&\*Lr‰©·$m푤z�¤vXÁÔV­ZU2HA"ŠGB *ƒd'çbêA�}±>Ä,jH$TTiYÐ�‚².5VÒˆÊ ñ‘q:>Fþ$ݪséSD@D â De�ì^¿Qñ„ÕA�P¢2H|Ñ?!± ÚÂWÕ Õbe¨H‰Ç—‹Ü;n-Aw0ä/^©lוlº|�Ê%ÕRåUÏD@D@êD@©NØt�ˆ€ˆ@¾ D2e§i¸|£Ê�ò' ;¤òCõ@D@*‚@Ñî�ðÀ‚·…ïŽl8 AÝM…¡¤<" "Pþt‡Tþc¨ˆ€ˆ@E(ÚREÐ*³NtíZý"íE‹elù[o½eî½÷^o½¯¾úÊœtÒIÞ†nÚV##º²á^ãà �S@J.kE3HîÔ›.kzÔø_ýêWæïÿ»yà�Ì_|a®¼òJ³Ï>û˜ŸÿüçÔËòïŠÆ©üÇP=HO h)}”R zè¡D3vìØá…_~ùe¤•ÒhœJcԊˆd ‰O5À•ë}… ¿Ô�šîÝ»›õë×{š|Ðp hêÔê×ÿmذÁôèÑÃ0ßæÍ›Íõ×_ozöìiN>ùdsÇw˜�;wÖhßÓO?mN;í4sÉ%—$Ê­‘ÉQüõ¯õb�}sœå̆/{¹k×.s×]wy|{õêå…9¥idžÂk/¾øb«Nø“'OöÒï¹çO—iÌ2•—(�J'·Ÿ LJ@$ xËyƒ¾‚ž¼èñ‚7sæL¯ž… zþ¼yó<Ÿz^$i€ÆŽk^xásÍ5×x2iÒ$3~üøí[¹r¥¹üòËÍÒ¥K͘1cj¤»ŠM›6™Ûo¿ÝS]vÙenRE„³áËO˜0ÁLœ8Ñ 6Ì\qÅ^˜?‚îì³Ï®ÁvÉ’%Þ�„þýû›«®ºÊ;$옥*Ï­³ÒÇÉí«Âñ!•Aª˜ úò}ªð‚I7cÆ Ã©3nj·`ÁÏPMŸ>ÝKg¾9sæ$Âö8›î%øC‡õ £¯½öš›”ÆÚž¹á†ÌêÕ«ÍqÇgÎ;DôJˆXNaø²¿öδOŸ>æ”SNñL™2¥Šnݺ™-Z$鯻î:sðÁ{‡Ø„°c–ª<[FÆÉöU~¼De�ñ1kƒ¾ÀùÆ-¾Û¶më=í6mÚ4³}ûv3xð`Ã_ÄŒ¯X±Â´k×ÎqÄæÓO?õŽîÝ»·9ñĽðš5k%Ï 5nÜØÓþùç5Ò­âá‡6¼kÙ²¥¹ñÆ­º¢ülø²ãëÖ­óúÏv·Ûµkív^{Ðì·ß~{"~ˆÓ«ï¿ÿ¾Y¾|y"-옥*χq²}•/Q$û�Ö})窪*OËǰ4h`.¸àÓ°aCoý‚ 6½iÓ¦^¾W^yÅðÑnÊ믿îéÜ!>9G׬YêݪyWtÿý÷{õqZ¯uëÖn¶ü2ñe§-þ  ÐpÀžï~ìµWͯҨQ£¼7Ø�=Ú›feþ°c–ª<§qbåâE æ·¨8ý×}µpæú IÇŽ ÿ Ô¹sg/N½�vâ´§éÞ|óMoñü /ôtîÇÿøG3{ölOu '$’ì:\+ááÈ‘# ï"*Ù…åKýúõóP¼øâ‹fÖ¬Y^xÀ€žŸéãÜsÏ5ƒ 2\Ã{ì±Ç¼ìaÇÌ-;®ãä2P8¢zìûfà= ú†Á_ Ù„¹ñÝðcï:uêdš7oîMÉuéÒÅãÁ5…ùóç{ëL§1b„÷_¡qãÆ™mÛ¶æ¡A :5þJ?ú製Åù`:ãsçÎõÔ7ß|³¡XæOµ6o¹øaù²?—^z©Ùºu«÷§aÆù$ÝE]Ä`(Çõ;3þ¿«oß¾¡Ç,]áq§t ¤¯\õ¢°0B¡ ÚW/ŸøQwÊ«¾]¨.xê¨~’ DE8þbd›`³žuÖYú¯Ž…§±{öÙgÝœCÀÿ!W‘)Œ1àøUÙ|¿ûÝïŒ5ÜV'?=>Á÷ᇺ¾�1Xå*�(D5eE_U§ˆ€ˆ@ �A*áÁQÓD@D N"YCÊ÷4\œL}�J%ÉÖèôê J=«Ô/¨�Hî�ÐÎk wÔ¡½:DD@D B Dr‡–zuP…žPê–ˆ€Ô•@Té¿ÁzuP]GNlj€ˆ@…ˆÊ éÕAv"©;" "�+�¨ ’^”ëÈéønÇ!'"Pþ¢2H|7Í?!|uPOHS>vWŽ8u1ÌnÔì J�£¶9á°ÁÜŒ©Þ¾í¦+œLà“O>IV³1¨P\¢ ÕSvû�=þ_lÇSÙ¤üÏRÒÅ�ÛAÈ…'ðî»ï3ÿ+¨OÚc#E™!Šˆg¾-ÜnQïØ†ï˜ Rá«V­2Ë–-Ëâðøf]¼xqðj¼;ZT"¯ºÇpÝ-[¶¸*…ÓxòÉ'ƒ)I,ƒ‰Š‹@1 È eI¿&7ã�ÝÃn½õV]] )Â4·ÜrK0exÖeÊŽû»s<·~ýzs÷ÝwÛ¨ü4x7ÿÔSOS*�¨Db�8 V¢“¡ÞÛÝtNýô§?5ZËp©ì “Ë•W^ém.·Gë…~ˆ‡ŠúFìN7óäÉ“Ío~ó›àt”›%Öá ˜«®º*ȇSŸ�ÄŒ:_R´ý„1Ym?aGë]Üqm��Óç×ÜŽ¢{÷î¦M›6Ænîæ‰KxãÆ�†[xsÿn7X· †ñ0,—Ö•øsëÛ7 Ü2Ú·ooú÷ïoŽ:ê(S¿~}7)–á�>úȼôÒK‰ý®b &tŠŠ@dd�ên�cÔ¸«]õny‘ aYVÌu£žþ�N�;£tžáXÈeGà6ð¿>»C”[ K ’)»Âv©8¥ãËÌ5Œ¾�¤õ¤âÔ^ÖµÌ@ë{åjŒHe,‡×’ôä#Óäj%ð3£Zù(1"‘$|j¬!¡ÿ{C8 s<„[šó"ÃÇÂKÖ¡Ÿ q§A†C’E.ÙFG×0ò 9 Ü$äÚ”µe ¹ R—$rmB9ÿË;Ó:­Ý•SGÕÖò$É”]&TþT Ÿ¥þ#¾<—dÊŸM:Ê®Bþ:oaž®.”Ûi§BúA…´…Äy*‰Fg äïŠ^ÂXÔ`` Z¡žs Ç@8rÆðGÇ`*ø/(e¥j�x!ßù¾Dæ`¡ R>Û¨²D@D Ž8MV2Æb_4†¿roðÕºd§†ˆ€ˆ€”@$ †gwÈ^½2Ÿ²‰€ˆ€”9�HjÈ‚™þ~Ÿ,e�r&ÉR`Û‘¾2ëG¿Í�WÉ" " B ƒCS–[MTȘ«" "P’"™²ÃÒ È �ï–$5JD@D è"¹CB/O‚ð;ÿ*z�U¡ˆ€ˆ@Iˆä $øg=ºýª=}Š€ˆ€Ä�@Ti(Ày ÓvgB„4‚DÕž¸Ÿê¿ˆ€DN ª)»i~Ï»ÁÖ¥£äFùÍdERª"" " •B@w$•2’ꇈ€”9�¨î�Ê[ÍæãÎŽ,ù°_®z¤-„o/�«ã‹TùrUþ§l„/÷ä W âĿ֢ògíƒCáÙ—ÛòüÏë{(YG™¹Ð^~øRÛÉ8ÿù]�«� qZ,6U¾ºÈÊì\û�²@þî”iË–¿‡ó§àósHã\y�G™â¿‡sºs®�üiˆž„¤«[új6££‚ç¯â{ìOѦìðëé¯�Ÿ@À dåpLsÈe�…YXàÌhÏÞ�ߣš§ üRÊ¥'À»Å› óÁ¬üœ�øg…0ïüY;Æ€wDo@2.W+�þHåùÿÃZsÅ8±hÛO`ø+‰î+·�~ ²òd-„ÛM0­1äë�ƒt�TAŽ�ì Éù!´£ ÅÌfY¾›ƒ_(½l$eñW¡¾ˆÙ@«ÎËiŒÎàN¿ÎNüëŒ._üiŒ¦Ô¹ñ>pÎÿ‡â� fk|MuA4üup„»Àï ¼Ðn5r�»Àq1¼U$£úõë›Þ½{›>}ú˜Ö­[›–-[¸¥[üÖ­[ÍÚµkÍ’%KÌ”)SÌúõëÝÆr}áY0<_Ê�nBذø×NªüG &[qØa‡™þýû›o}ë[¦M›6†ß‰¸º�>úÈüãÿ0Ï?ÿ¼÷=p¸çðRœÿüQ.ç(ÚëÃ4‚w„†åH÷2��üƒ·5̵åAª�žÓÊàõ}HCˆç:è sç�wz_D«“_M`Ó¦MæÖ[o5³fÍ "©Ó¯Dñb¬=žoþ¬ cð,¼3mÍ4<#FŒ0çž{®UÉwL�:ÕÜ~ûífÇŽŽÖÔyvÆ-¤’ÂE5HNfþlê 9Òò-H3È>�-�ÿƒÌƒL�Ì‚!Ú?/uW¡ \ Ò­(c¤mP³fÍÌ£�>êý"´:ùÉvíÚe®½öZ3wî\7áŒí®"Lc(þa@9yòÌ¿ŠæºQÂ�5JÆ(A#u`úô鿯o &r–ൠ2®ñ¢=Ôà¦��ÐÐ\ ဴ�p·Ø½àï9r9d:$oÆÈmCŽá¤©º+®¸BÆ(Pþ‚¾þúë;ûr˜îp^ܲuâŸ%±<óçÚQÂuéÒEÆ(A#}à´ÓN3Çw\0CË`bÜ⑤t�a|v§K+=. œ®;Ô¶‡Ø~ýúÙ¨üZpM¡G�Á5Á n\ü]Ù…óÁ߯ñ·æÓO?Ý�*\ �3ÏLÌrÚ\I,­2®~I¤2¤„ãÚQ£F\“ Càˆ#jÌÐ%ñ QFR~ñAÌÉ’þ,-i R”éÔ¨ KਣŽr£ TÄ9.ƒ”ýès­+á¸~$žÀÔøZ‡ðG{9“€‹vôòÀŸò¯ ׸qR4¡W@²% ƒ”-1åω@œÎ \žÿ<�T1! ƒT¬*TD@D [2HÙS~�‚�A*V*" "�-¤l‰)¿ˆ€ˆ@AÈ « È–€ R¶Ä”_D@D  d� ‚U…Š€ˆ€dK@)[bÊ/" "P2HÁªBE@D@²% ƒ”-1å(¤‚`-�B»víj(Ù¸¯¾úÊ 6,ë㲩£’óÖ…y¶<â6Fùfšmyqã�íù˜Ïü2Hù¤Yæe½ýöÛfèСæµ×´_X©¥Æ¨¸##ÞÅå-ƒT\Þ%]ÛE]d¾øâ‹’ncܧ1*î ÞÅå-ƒT\Þk8p éÞ½»Y¿~½—÷Áô¦Ï¦N�êÅ7lØàmrÇ|›7oövaíÙ³§9ùä“ÍwÜavîÜY£Ž§Ÿ~Úp·ÊK.¹$Qn�LPœp fܸq©’*B— [v˜Û~ßu×]Û^½zyaNßXg§~†n.¾øb«Nø“'OöÆîž{îñt™Æ+Sy,¤RÇèË/¿4wÞy§Çš»ªòNýƒ>H°t™Æ%›²‚cäÖÃp¥òö³Tâ2H¥2~;xáãEoæÌ™žfáÂ…ž?oÞ<ϧž_H ±cÇš^xÁ\sÍ5žLš4ÉŒ?Þ/i�·råJsùå—›¥K—š1cÆìI„xñÝÿýÚʉfÖ½ž0a‚™8q¢·¦Æmêæ„ ;ûì³kp]²d‰÷¡ÿþ檫®ò ;^©Ê³uVêÝÿýæñÇ7W_}µùýïo-Zdn¸áÛí$?Ó¸„-+Õ%U„H¥òö³Tâ2H¥2~;xѤ›1c†Ù±c‡gDš4ib,XàªéÓ§{éÌ7gΜDØgÓ½ÿƒ¿6iÀèâ¼>d…aKVö®´OŸ>æ”SN¡ÊL™2ÅóÝ�nݺ™-Z¸*sÝu×™ƒ>ØŒ5*¡;^©ÊKR¡{ÞöíÛ×|ç;ßñ ÒC=”²·™Æ%lY©Æ(e…R�€ RÑP‡«èÈ#�4mÛ¶5+V¬0Ó¦M3Û·o7ƒ6›6mòâÔ·k×ÎpÛèO?ýÔ+´wïÞæÄOôÂkÖ¬©Q šÝÕóóÏ?¯‘E6lÉdݺuò£Ð­]»ÖóÝ�ýöÛÏ�zaN­¾ÿþûfùò剴°ã•ª¼D!øä“O¼ž}ík_ËØÃL㶬Tc”±re((¤‚â­[áUUUÞ�÷Þ{¯iР�¹à‚ LÆ ½é&Øô¦M›zù^yåï%§9^ýuOç~ÐÙ‡â¾å·e—‰-ùµnÝÚÃȺ[€›½öªù5â�Q½zõÌèÑ£½)Vv¼R•Çã+ÙµjÕÊëžå\[_3�KزR�Qmõ*­ðj~“ _§jÈ@ÀN¯Ñ�tìØÑ4jÔÈtîÜÙØ»;õÄÅ_:NQ¼ùæ›Þú…^X£ô?þñ�föìÙžž‹´ÖÙEt�ƒ–-Yôë×ÏCòâ‹/šY³fyáx~¦�sÏ=× 4Èpýî±Çó²‡/·ì¸Œ‘eýòË/›eË–yçò�!C\‰°Í›n\lz¦²R�Q\x'`–X`ïk�š�:u2Í›7÷¦äºtéâ1áºÂüùó½µ ¦Ó�1Âì³Ï>Þ“qÛ¶m3Ì3räH/Íý Qã/õ£�>Ú[ wÓâË–\.½ôR³uëVû):>IÇÇ€Ã:®Ýñ¢ùÀ®�„¯°åWR>²Ú²e‹7 ÀµSžË7ÞxcÊ.f—lÊ ŽQÊ ¥,�z»wï.Ze¥P¦QªÐŽêÛ…ê̓ê' B40x< Æï~÷»G* p]즛nraLÿÿpµ…Å¿6:™ÓråÏ0ïÃëÀ0Ý3ÏüðCç(· çÿ7œx¬ƒš²‹õð«ó" "P:d�Jg,Ôˆ5¤X¿:/" ¥C@©tÆB-�X�AŠõð«ó" "P:d�Jg,Ôˆ5¤X¿:/" ¥C@©tÆB-�X�AŠõð¿óü¾\tÄ?:öª93¤ÌŒ‚96ºŠ�“¢n’Â)Ø71;I«œp˜`pñƒlOž<ðga›÷”ˆ6Š”�|�AÊžbÒþ«W¯öÞÁ•}1ñ<âí·ßv<‰g01E<)¿ø§ T‹*üYzÒ¤(³–Ä;ÉÝŽÄ'‘z[ܘb’AÊràñÞ)~WÚÃ8Â÷ƒÉe&À½„Rl�Qs¿ŒZŠÿZàdHÊ¿Š9nUÏ>û¬U¸)®¯Ö’=vI2Huò§ÜÃø6g¾4Q.=n»~Ë-·x»à:¹Þ��YâÄÃÅ?,)?_žù?çVÏ­ÀŸ~úiW¥p Ü&fÞ¼yÁ”©AEœã2Huý»qØ6{(×1®¼òJóÞ{ïY•|‡7]ãfh)¾Œ·9Ù² Š´òÍßÿ1ÅmÂí·ßnžxâ W¥°C€Û®ÞrÏTî4ðš“-öAm?Q}R„Þ~ž1xÿ„“.¨õë×7ÜNœ»’¶lÙÒf�­Ï½„øëyÊ”)&ÅÃü"öÄrg]‰fjæ8Z°ÒØmÉa‡fN?ýtsÄG¸ê؆ß}÷]oÍ+Vðí±uœ!–U1q¤:$ž¸(r+ÐAs6¯#kPUg|é×Ù‰�Ñå‹ÿ9h§OµÑgöC1çÿ#ÙVÙGhÊ.·ñåö¡ãs+"vGs͈¿ s2F>5ñÏþôÉŒ!×?úCôÜwøq «A2F©�É ¥æJ‹“j'äRd>òN¨ƒâ›i#º~„Æhüœ�øg…0ïüY;Æ€8 yœq¹Z LAj70›Tk®'jÊ.‡);÷¼Áô§-Ž�pãPH3HÜׇøˆü«�©ø"ì—´ø§<ÕŠÆŸµc :ÀãùÏïA[ˆ\õ¶Ï~äj! ƒ”'ƒT c%‰€ˆ€„  )»�”ED@D ðd� ÏX5ˆ€ˆ€„ ƒ’²ˆ€ˆ@\`-0é¿eÅì· R1i«.(} a”ž„œáÃZEs2HEC­ŠD@D ,4D+Bø˜úG0Jc!|r²àN©àˆU�ˆ€”-�Vhù0È|¥¿Cn€t@¼ N© XU¨ˆ€Tþ¿òÈû0Js!—@òúK¤Š;gÔ!(8�PÃx§ôò¶Þ$ƒTðqS" "P±òºÞ$ƒT±ç‰:&" E%�óz“^dÌF Ù’¢›*�Ò%À'êxç“/ÇwYN€LÆûüx½Mëd�Ò¢Q‚ˆ€ˆ@ lCYÓ !ÏÁ8ñå¿I.މO…tòeL ED@D@ M€o=¿ é¾`E{•÷oçàÉ�Jïªú'" ¥Bà4ä)È#¸s /¥‹Ý’¥à??Ï;%9�=C0ûYqŠndd& ãµÈiæÒIDATºØ¤Z©(QD@bJ?ÖßG×;äÐ}Þq�ˆ1ðÎ(´‹Ý”]h2Ê(" "–×…h„8%Çp�œ R�°é ˆ=>ÂÍu¡‡j[ʆ’ R6´”WD@âM€�j»�ng\Ê— R6´”WD@âIà5t›Sr“²]Ê— R6´”WD@âC`ºJ#Ä)¹:¯ eƒK)ZÊ+" •O€Fˆ�i¿Zì®ê±ïbW}" " ) èmß)±H)" "Pl2HÅ&®úD@D@R�AJ‰EJ�b�A*6qÕ'" "�’€ RJ,RZx¯Õ'�ݾ|ÝÑwuôL?ÔIûº“–Õ»¬lµùNٻ󑯶2ò‘¶½µÕ,#¯íØRHK×^è[Cž(…6ª Ñ�AŠ~ J½søm'ÜË 3èÆÝ|ïò)*¢óx B_NŒ ’N‚Lêb�s •Ar`ä+ˆÿˆð/žä«ÌB–cÛJß©‡wF­�¸‚1' ƒó D÷k$ü²åªOð�ÝäûU¾OϽCr�78ö|È<ÈÈ&È_ ç8ÇzAèì4!ýÓ ÿ€ðî¯RÃAd%„ù×ASˆ52C�ôPíà±È{2d&„Ó—;!l÷"HÒ/{Ä[AÆC˜ï È4ˆË"US’tȪ äKðñÛ8ÀÑ=ì ýÃNÚ›]}ÈU�å�m�÷ £!��<‰z ¯1Б#Çð3Ù°ï3 U¶ úˆ'ʱñ4éÛý¼ïÈÃöRϲ˜¯•›®pÀ/#ƒtçNñþ®ÕP¦3\?Îȯœðá~úsŽn€-º;½-Óú7Ú|~VOÿ3縜0²2Ù4�,öõ[á,ƒq+HϦý�—_¶Û&¾Ø¯«ò¼•"ßzWgÛ�ÊG¾ÐeËD¼!ÄrZƒ°ýÓ;ïH>†XŽ mÝÐMòõ¶/Ö_}¿_Vg�·qŽÃiŽg¾„³ŸS—=*çTBïëžtÒNµÇûÇp,lþ'Ü4…÷œßåÌ"ñ%-çN¨í…;q8¹üYÃ�ðu¼è´ƒÐgÂúé+ý8uGûº>Žî„¿é ÃÌ÷äD;–¾ŽzÊ"È!�–�ïB¬žþ¾k¤XÆÀTe8ºlÛ±Ô¯ï§ð÷ƒì9Ñ×±þ~ÿF::Ãö Yâè‘5ýX!_è2R• ÝƒŽ¾“߮Ύn‚­º ýÝÓÞêèFúdz�V‚ã°ÚI;a²ù¡£[êÔgË€ªš�“ÏÕ¹Fç!›—>ÜŸœc’Œ•›OáôçX©³‘AªåQêƒWŒöáÀ þ—þ…€w ü%>Ã�/bàx¡bà ó[Eáý"‡?b/JçØ¶CçÞ�ýÙÑÛ¼ôϲz¿>7í1§ÜkÓå³zäͪö8¿Þ®8~d¡Sç6?íuG×ÇÝ©Žêô ä ]Fª2¡ëëè¯óÛe<�Yâ"ް5âÔèçmáÿ†¯sYÇ�w£6ý„ۥ럓Yj5H\Fø§Ÿÿsø_óÛñ5„9=Ìú˜¾—-G~úsªÜØÈ Õr�(·Á,T{ñåçƒ öÂÃ_ÜöÂpë„㧯…¤fÂ*Û&„Ý©«ŽÞ½~ìèm}ô½ fš4›oòµ²yèÃÙ4DÁ¬Úá—sʲS‚‰2mù~žÏl~§¾æŽêôä ]Fª2¡ãšËG~ÚK~»^ö㛽mýâëkôÇ×oõ�wÓƒã`˜Ø<üÁò*ä§�–¶®`9Vï×ãku~Þ›�´øºóÝÍn~…ÓŸS密¿FäD ÷Á„ÁÈÜØ?`nÀçSß÷uôhȬÛßàs§Iëx¶®¹ ü �xªh(oH•ÐeÕ,œ_‹ãÿù„m½ÒtœÎ³î €Ï_ùa]NeàâCƒ0ɯìx´�ãq¼é¼sµ®™ ¤ñy'tÁq¸Þt2ñzÂú~yõŸá¤e|™i¨è~Xí%|ê™.W�d�*pP Ð%× ]ì”Ï_ÃtÖgøR~øÎ5HŸZ%|×(¸F7�“Ýðî'�» 3ýÄÿÄE�ë6µ9·Ž0íêÆEú«ÃÑÙ ï­sËmj•!ü|”ñ¨_ ôA8…J÷Xµ—øÜœUO‹y��£ ßI·Á¤q@Þ ¡¤ä^ˆ{ž4Aœ†)k‡rWá —üûaLE˜kKt¼ó[å…ôQqd�*nH Ò!÷BÓÒ¯a%. 3 ŸÓAÖøâ§Ós�ã:“u=mþ Nø5'œ¢|®E¥tHã…öÿù‰¼ÿOÊŒ{”Ù¶Ã5pönà°=Å%BË!cº;ác�p¦`Îe€ÇT²Ò¯è ßçÃÿ뇭gûÂøQVY›Ÿj £›ù äpÿ=§ŒN8U�w;žƒÑáÓ€®ûƒ¡A�átV_ÓgE�Aª¨á,Xg\Ãb+±ÓuéâÔ[#ÅðüðÝm¸þ|ƒ‚ø­V ¬Ä…�áYþ¡ÜÚ.°Ù¶ƒsë.AÙ-cô¡kï Gwt 4η;úLÁ|”Á:ìÝ�½;{Œ¿�8�ù´µ)ä<ˆý¿PÊÎ1ì÷'ÿóÁANžwœpª {—F^mœLFxƒ·S¤ŒS/W©xžJÄ ¶sçþ^Ð\ù‘{ Ò.¤3ï7yîO‘Ç–yk ¯ÕC�<>n6 :ÞiÙcž¡Þ‰'•}6íî–ã„×9ánó—<ï¾l¬¿ÖÕÙö¦ò³)£¶2‘Æ;[?ýÎÁú ÛB#îæ³a®�uå1nzŠ2NBú67�Þ…ðéöGUõxB÷²«GØ7'ýî@úÝ6M~òw¢RxÈ.v•2°ùî. Ÿ.‡¹u í›�t^¨j<š Ÿ–âÝÕ!sý)ñß![&töâUò—/]ô³�4.®×VFØvp*é¿!ÿ€ì€¼  9bËŸÌ6Âñ¡ N)m„p=h:ä;›¯F_Rô-T™ÊDº}*ð�`6Ž<œû)䯎Ûý ¤£“§Ö¶#/§è&C8}ˇ&xžÌ„TÙ2èÃÕ(ºoCfCx®|y>pÌw¡K‡p¢]n>…“¿å̃ ˜g9(-˜Âã�ÞÛ~«–àZÕ¹´Z¨Öä›oÛåD@D dÀñ =^›~ã4J380*5¨;¤JYõKÊ” RpÚæïè §ë¶–i—Ôì�ô”]HPÊ&"P4|`„E¬‡ðÉC¾ŠIÆ *Ýé©ÒGXý�2! ;¤2(5SD@*�€ R¥�°ú'" eB@©Lªœ›‰Eês¸P áÿ]äêHüZCÜ·9Ô±¤â†v¿á90 øµ«Ær! ƒT.#U¦íĨš~�ßü eÚ�È› Žç¡oAè—£›à7únÿœ(Ç>¨Í& ƒT`À*Þ\|AéW»5‚°dO€wF­³?¬dŽàØóø:äÊ’i•RRd�Jj8*«1ø%\=â»àè^ã»|½ _Êi_àIÿHÈó�M���!|�iÂ!îæ? ñ@¶@fØLŸ™çëYÖ_ çØtëC·ärÈË`�3!|ÕP’ƒ®>ä*ÈrÈ6È{�Ñ�ÆnFÄY7ëû ²ò d¤ª.ùÜcF9IÿËaÜ—í¾ÿ1|²N8Æ!Ô3/óµòÃöØ0ÜóÖŒý4n¡ß@2Õµ'1Z $àDÑûìÄ  çN²S ö]d7ÛsÍÑ1�FÊæ±>ך¤ÉÏwžÙ|/0Ü�ŽÎ¦YÿF§¾—Žw6Íõ¿„>øþ5þªwóØðè½öÁ¿"Mæå»Ý¸‡¼pùl[]ÇÚzƒþ“NZb{r¿¾~NÚ¾Î=> ÷¼õ߯ÿ—N›Û¼»}U8Þ×ã‚\ˆtRÅû¤²ã�‹Ï]ÎèûŽÞ½0¾‰<߀Yæäž&?ߨͼ-!|ùfˆ-ï„¿é ÃÔsšèD–÷ï›—FïPHSÈ£¾~±Sç…¾Žùï†4‚p« {üH¿ÌÕŽî8„ùÂÒ:º¥Ùä³õ}§<$UŸ_йFç!«§÷'çÏX9qf¨•;ÒóÚ¿M�6ŒqÛ«°®Þ9¢A'B¡Î\|æ; #l=ŽŽÆSýéNÚÜTç˜sltýýŸý¼/;ºÄÝtBæ@\Ý ˆÛzô�çT¢Õ½áëø«»áv¶ ®}¨|î1nØ©ê„Aâ´×?ý´Ïá�iô!|Û8#L÷ÞºîÇm[k厼yí¿ß®ï8m˜oû!_× {èÉÿr[ òó÷åÀÅg­sjiÙ::^›8úæNÚFGo/¢ô=ãà¤ñõ26½…£w�ÇÇÔùyÛ¼©|äýÄ)×–ïú[ý2¹ŽåêùÊ›W!?…¸}•/U[üzu¸yPÇÍ›ö?ïùŽ.ÝTi­Üq|^ûï·«•Ó®un?Îß÷®œYêÕAø†È†®w dNaÑqÍ…ñà"}}è9­F=æ¹îB·zïX.ÆW«¼Ïý çÞ=žCóÛýte}‰cöM—×/*É äMJ³”‰lÞ®°Ï@Çéàã]ÊÈ÷\Ø|ÁlÇ'°^GßáÿƒPÇ îøŸ/¶ç,�ù&t«àgÅe¸\yx ÇvÀ‚„ŒýçÁÈËe·1 —ßê¨>E·ò‚ … À+ʵƈUxF'E]\ ²®‰ ÀÿÜ »A{A³:ngÝþ6¿™¶yh ¬sÓ­ÎõÝíµ9ÆoIÂÌÐý^'H/Ƚw»wöç7�Ðù˜7‡úW!ÿKþ1ý€�ëb\[¢{ÉO¯Ž%fâž×þûUÛŒ& lr³‹3¤8�~ûŽ !/8‰;„§©®§£ïæ„—9áDÅ r°Î-ë«„ÿš^êèºÛ0.â s UVÿM'|”®d_áæ@~9¾çdê`ÃÌ—1ŸÍðp´“ÆÞuð#ûŸ±?¬ÞÍkÃ.«TÜóÞTìþàØ`"_,$KB~!p*ɺ¯Û@À¿ ××à L¿ÍI{Ü ×|ÀIdYß @Ç'â¬ë¶ ø·#ß· -þä$ÈÝë±øÿƒ|M!çAìÿx<#‡øGwœ–:È9ö†ÃæsŽ Ý;Ð6N†?#l/ð=|=ãÔ§s™¸çµÿ~#t³Ê +(Õð‹�Ó 1Èû9€3ŒÆ‚¿ì)ýíyæè¨ÿ0§ndïTù­Îõ‘÷þeØzoµy‘‡?ÀžI“—ÓI}�¼{#>+MÞ/ ïʼp'A8�hësý]ПžM>[ÐG9/êàzQbÌ�FcêÖ}·›Îp ½VîÈ›×þûõrÚðû`ûß3žqe‘8¡ã @ý.Ü—÷1î_XÖÎE‰WÉ�g!¼È¯ƒÜijóÒ‡K\h]½F>Y6ÂiBÞM¼ èæñËâ…öjÈÈvï$¦Cz¦ÈË©/>-÷WËÝ¡AëèæEü{�ÉþÙ”†�kV3!UuÉçcÃ(ëÛ�Ù¿Ï ÏÛ4úpß…$8!œÔF?�›Þy2qÏwÿ¹ÆfÛPclÜþ(\¸ïe)³ÕSvø†È†¦•øôÛ? œŽ{_oÝzï ÊZ¡ ®‡P-—%0åÚÕÛþaKÀµs°ˆ¨¹£þ·Ð¦#!k ‡ �ÞS—Áv*_ZCŠïؼç¸àpÊjŒ_Ñ1¸ 5/x¥1«L›ø\ãtýN¸$‚hc;4„ƈnŒŒQ5}&�AJæ¡Xþ ŒC‘@8Uv^þ‹�}‰Ÿƒ§OóIü~É$´éû~ûx.؇L|•<¨& ƒ¤3¡ ðKx+*àš Ý¥Õž>óH€ën¼]y—–’y©¹ù ºªDÛWj¼bÙ­!ÅrØÕi(=ºC*½1Q‹D@D –d�b9ìê´ˆ€”¤ÒµHD@bI@)–îN‹€ˆ@éøÿ ÑCè… ¤IEND®B`‚content/fr/dev-prod-parity.md0000644000175000056700000001263215232661434014746 0ustar0000000000000000## X. Parité dev/prod ### Gardez le développement, la validation et la production aussi proches que possible Historiquement, il y a eu un fossé conséquent entre le développement (un développeur qui fait des modifications sur un [déploiement](./codebase) local de l'application) et la production (un déploiement de l'application accessible aux utilisateurs finaux). Ce fossé se manifeste de trois manières : * **Le fossé temporel** : un développeur peut travailler sur du code qui peut prendre des jours, des semaines ou des mois avant d'aller en production * **Le fossé des personnes** : les développeurs écrivent le code, et d'autres personnes le déploient. * **Le fossé des outils** : les développeurs peuvent utiliser une pile comme Nginx, SQLite, et OS X, alors que le déploiement de production utilise Apache, MySQL, et Linux. **Les applications 12 facteurs sont conçues pour le [déploiement continu (en)](http://avc.com/2011/02/continuous-deployment/) en gardant un fossé étroit entre le développement et la production.** Si l'on regarde les trois fossés décrits plus haut : * Réduire le fossé temporel : un développeur peut écrire du code et le déployer quelques heures ou même juste quelques minutes plus tard. * Réduire le fossé des personnes : les personnes qui écrivent le code sont impliquées dans son déploiement et pour surveiller son comportement en production. * Réduire le fossé des outils : réduire, autant que possible, les différences entre le développement et la production. Si l'on résume cela en un tableau :
Application traditionnelle Application 12 facteurs
Temps entre les déploiements Semaines Heures
Auteurs du code et ceux qui le déploient Des personnes différentes Les mêmes personnes
L'environnement de développement et celui de production Divergents Aussi similaires que possible
[Les services externes](./backing-services), tels que la base de données, la file de messages, ou le cache sont des éléments importants de la parité développement/production. La plupart des langages fournissent des bibliothèques qui simplifient l'accès à ces services externes, en fournissant des adaptateurs pour différents types de services. Voici quelques exemples dans le tableau ci-dessous.
Type Langage Librairie Adaptateurs
Base de données Ruby/Rails ActiveRecord MySQL, PostgreSQL, SQLite
File de messages Python/Django Celery RabbitMQ, Beanstalkd, Redis
Cache Ruby/Rails ActiveSupport::Cache Mémoire, système de fichiers, Memcached
Les développeurs trouvent parfois agréable d'utiliser des services externes légers dans leur environnement local, alors qu'un service externe plus sérieux et robuste est utilisé en production. Par exemple, utiliser SQLite en local, et PostgreSQL en production; ou bien, durant le développement, mettre les données en cache dans la mémoire des processus locaux, et utiliser Memcached en production. **Les développeurs des applications 12 facteurs résistent au besoin d'utiliser des services externes différents entre le développement local et la production**, même lorsque les adaptateurs permettent d'abstraire en théorie beaucoup de différences entre les services externes. Les différences entre les services externes signifient que de petites incompatibilités surviennent, ce qui va faire que du code qui fonctionnait et qui passait les tests durant le développement ou la validation ne fonctionnera pas en production. Ce type d'erreurs crée de la friction en défaveur du déploiement continu. Le coût de cette friction et son impact négatif sur le déploiement continu est extrêmement élevé lorsqu'il est cumulé sur toute la vie de l'application. Les services locaux légers sont moins attirants aujourd'hui qu'ils ne l'étaient autrefois. Les services externes modernes tels que Memcached, PostgreSQL, et RabbitMQ ne sont pas difficiles à installer et à faire fonctionner grâce aux systèmes de paquets modernes comme [Homebrew](http://mxcl.github.com/homebrew/) et [apt-get](https://help.ubuntu.com/community/AptGet/Howto). Autre possibilité, des outils de provisionnement comme [Chef](http://www.opscode.com/chef/) et [Puppet](http://docs.puppetlabs.com/), combinés à des environnements virtuels légers comme [Docker](https://www.docker.com/) et [Vagrant](http://vagrantup.com/) permettent aux développeurs de faire fonctionner des environnements locaux qui reproduisent de très près les environnements de production. Le coût d'installation et d'utilisation de ces systèmes est faible comparé aux bénéfices d'une bonne parité développement/production et du déploiement continu. Les adaptateurs à ces différents systèmes externes sont malgré tout utiles, car ils rendent le portage vers de nouveaux services externes relativement indolores. Mais tous les déploiements de l'application (environnement de développement, validation, production) devraient utiliser le même type et la même version de chacun de ces services externes. content/ja/concurrency.md0000644000175000056700000000677515232661434014250 0ustar0000000000000000## VIII. 並行性 ### プロセスモデル�よ��スケールアウト�る ����コンピュータープログラム��一度実行�れる��1�以上�プロセス���表�れる。Webアプリケーション��様々�プロセス実行形態��られ���。例���PHP�プロセス�Apache��プロセス���実行�れ�リクエスト��応��起動�れる。Javaプロセス��対�方法を�る。JVM�1��巨大�親プロセスを�供��起動時�システムリソース(CPUやメモリ)�大��ブロックを確���スレッドを使��内部的�並行性を管��る。��ら�場��も�実行�れるプロセス�アプリケーション�開発者����ん�見���。 ![スケール�実行�れるプロセス�数���表��れ�ワークロード�種類�プロセスタイプ���表��れる。](/images/process-types.png) **Twelve-Factor App��プロセス�第一級市民��る。** Twelve-Factor App���るプロセス�考�方��[サービス�デーモンを実行�る���Unixプロセスモデル](https://adam.herokuapp.com/past/2011/5/9/applying_the_unix_process_model_to_web_apps/)�ら大��ヒントを得��る。��モデルを使��個々�ワークロード�種類を *プロセスタイプ* �割り当�る����開発者�アプリケーション�多様�ワークロードを扱�るよ��設計�る�����る。例���HTTPリクエスト�Webプロセス�よ��処���時間���る�ックグラウンドタスク�ワーカープロセス�よ��処��る�����る。 ��モデル��ランタイムVM内�スレッドや�[EventMachine](https://github.com/eventmachine/eventmachine)�[Twisted](http://twistedmatrix.com/trac/)�[Node.js](http://nodejs.org/)�����期イベントモデル�よ���個々�プロセス�プロセス内部�多�化�る��を�止�る������。���個々�VM��れ��大���る(垂直�スケール�る)����������アプリケーション�複数�物�マシン�動作�る複数�プロセス��拡大����れ��ら��。 ��プロセスモデル�真価を発��る���スケールアウト�必���������る。[シェアードナッシング�水平分割�能�Twelve-Factor Appプロセス�性質](./processes)��並行性を高�る�作��純��確実�も���る��を�味�る。プロセスタイプ��れ�れ�タイプ�プロセス数��列�� *プロセスフォーメーション* �言�れる。 Twelve-Factor App�プロセス�[決��デーモン化�る�������](http://dustin.github.com/2010/02/28/running-processes.html)�PIDファイルを書�出�������。��代�り��OS�プロセスマ�ージャー(例:[systemd](https://www.freedesktop.org/wiki/Software/systemd/)�クラウドプラットフォーム�分散プロセスマ�ージャー��る��開発環境���る[Foreman](http://blog.daviddollar.org/2011/05/06/introducing-foreman.html)�よ��ツール)を頼る����[出力ストリーム](./logs)を管���プロセス�クラッシュ�対応��ユーザー�よる�起動やシャットダウンを処������る。 content/en/toc.md0000644000175000056700000000206615232661434012500 0ustar0000000000000000The Twelve Factors ================== ## [I. Codebase](./codebase) ### One codebase tracked in revision control, many deploys ## [II. Dependencies](./dependencies) ### Explicitly declare and isolate dependencies ## [III. Config](./config) ### Store config in the environment ## [IV. Backing services](./backing-services) ### Treat backing services as attached resources ## [V. Build, release, run](./build-release-run) ### Strictly separate build and run stages ## [VI. Processes](./processes) ### Execute the app as one or more stateless processes ## [VII. Port binding](./port-binding) ### Export services via port binding ## [VIII. Concurrency](./concurrency) ### Scale out via the process model ## [IX. Disposability](./disposability) ### Maximize robustness with fast startup and graceful shutdown ## [X. Dev/prod parity](./dev-prod-parity) ### Keep development, staging, and production as similar as possible ## [XI. Logs](./logs) ### Treat logs as event streams ## [XII. Admin processes](./admin-processes) ### Run admin/management tasks as one-off processes content/ko/intro.md0000644000175000056700000000217115232661434013052 0ustar0000000000000000머리� ============ 최근 소프트웨어를 서비스 형태로 제공하는게 �반화 �면서, 웹앱 혹� SaaS(Software As A Service)�고 부르게 �었다. Twelve-Factor app� 아래 특징� 가진 SaaS 앱� 만들기 위한 방법론�다. * 설정 ��화를 위한 **절차(declarative)** 를 체계화 하여 새로운 개발�가 프로�트� 참여하는� 드는 시간과 비용� 최소화한다. * OS� 따� **달�지는 부분� 명확히**하고, 실행 환경 사�� **��성� 극대화** 한다. * 최근 등장한 **��우드 플랫�** **배��** �합하고, 서버와 시스템� 관리가 필요없게 �다. * 개발 환경과 운� 환경� **차�를 최소화**하고 민첩성� 극대화하기 위해 **지��� 배�**가 가능하다. * 툴, 아키�처, 개발 방�� �게 바꾸지 않고 **확장(scale up)** 할 수 있다. Twelve-Factor 방법론� 어떤 프로그래� 언어로 작성� 앱�� �용할 수 있고 백엔드 서비스(��터베�스, �, 메모리 �시 등)와 다양한 조합으로 사용할 수 있다.content/ko/port-binding.md0000644000175000056700000000446415232661434014322 0ustar0000000000000000## VII. �트 바�딩 ### �트 바�딩� 사용해서 서비스를 공개함 웹앱� 웹서버 컨테�너 내부�서 실행�기� 합니다. 예를 들어, PHP 앱� [Apache HTTPD](http://httpd.apache.org/)� 모듈로 실행� 수� 있고, Java 앱� [Tomcat](http://tomcat.apache.org/) 내부�서 실행� 수� 있습니다. **Twelve-Factor 앱� 완전히 �립�**�며 웹서버가 웹 서비스를 만들기 위해 처리하는 실행환경� 대한 런타임 ��션� �존하지 않습니다. Twelve-Factor 웹 앱� **�트를 바�딩하여 HTTP 서비스로 공개�며** 그 �트로 들어오는 요청� 기다립니다. 로컬 개발 환경�서는 `http://localhost:5000`과 같� 주소를 통해 개발�가 애플리케�션 서비스� 접근할 수 있습니다. 배��서는 �우팅 레�어가 외부� 공개� 호스트명으로 들어온 요청� �트� 바�딩� 웹 프로세스� 전달 합니다. �는 �반�으로 [종�선 선언](./dependencies)� 웹서버 ��브러리를 추가함으로� 구현�니다. 예를 들어, 파��� [Tornado](http://www.tornadoweb.org/)나 루비� [Thin](http://code.macournoyer.com/thin/)�나 �바와 JVM 기반 언어들� 위한 [Jetty](http://www.eclipse.org/jetty/)가 있습니다. �것들� 전�으로 *유저 스페�스* 즉, 애플리케�션� 코드 내�서 처리�니다. 실행 환경과� 규약� 요청� 처리하기 위해 �트를 바�딩하는 것입니다. �트 바�딩� �해 공개�는 서비스는 HTTP �만� 아닙니다. 거� 모든 종류� 서버 소프트웨어는 �트를 바�딩하고 요청� 들어오길 기다리는 프로세스를 통해 실행� 수 있습니다. 예를 들면, [ejabberd](http://www.ejabberd.im/) ([XMPP](http://xmpp.org/)� 따름)나 [Redis](http://redis.io/) ([Redis protocol](http://redis.io/topics/protocol)� 따름) 등� 있습니다. �트 바�딩� 사용한다는 것� 하나� 앱� 다른 앱� 위한 백엔드 서비스가 � 수 있다는 것� �미한다는 �� 주목합시다. 백엔드 앱� URL� 사용할 앱� [설정](./config)� 리소스 핸들로 추가하는 방�으로 앱� 다른 앱� 백엔드 서비스로 사용할 수 있습니다. content/pt_br/processes.md0000644000175000056700000000535015232661434014424 0ustar0000000000000000## VI. Processos ### Execute a aplicação como um ou mais processos que não armazenam estado A aplicação é executada em um ambiente de execução como um ou mais *processos*. No caso mais simples, o código é um script autônomo, o ambiente de execução é o laptop local de um desenvolvedor com o runtime da linguagem instalado, e o processo é iniciado pela linha de comando (por exemplo, `python my_script`). Na outra extremidade do espectro, o deploy em produção de uma aplicação sofisticada pode utilizar vários [tipos de processos, instanciado em zero ou mais processos em andamento](./concurrency). **Processos doze-fatores são stateless(não armazenam estado) e [share-nothing](http://en.wikipedia.org/wiki/Shared_nothing_architecture).** Quaisquer dados que precise persistir deve ser armazenado em um serviço de apoio stateful(que armazena o seu estado), tipicamente uma base de dados. O espaço de memória ou sistema de arquivos do processo pode ser usado como um breve, cache de transação única. Por exemplo, o download de um arquivo grande, operando sobre ele, e armazenando os resultados da operação no banco de dados. A aplicação doze-fatores nunca assume que qualquer coisa cacheada na memória ou no disco estará disponível em uma futura solicitação ou job -- com muitos processos de cada tipo rodando, as chances são altas de que uma futura solicitação será servida por um processo diferente. Mesmo quando rodando em apenas um processo, um restart (desencadeado pelo deploy de um código, mudança de configuração, ou o ambiente de execução realocando o processo para uma localização física diferente) geralmente vai acabar com todo o estado local (por exemplo, memória e sistema de arquivos). Empacotadores de assets (como [Jammit](http://documentcloud.github.com/jammit/) ou [django-compressor](http://django-compressor.readthedocs.org/)) usa o sistema de arquivos como um cache para assets compilados. Uma aplicação doze-fatores prefere fazer isto compilando durante a [fase de build](./build-release-run), tal como o [Rails asset pipeline](http://guides.rubyonrails.org/asset_pipeline.html), do que em tempo de execução. Alguns sistemas web dependem de ["sessões persistentes"](http://en.wikipedia.org/wiki/Load_balancing_%28computing%29#Persistence) -- ou seja, fazem cache dos dados da sessão do usuário na memória do processo da aplicação, esperando futuras requisições do mesmo visitante para serem encaminhadas para o mesmo processo. Sessões persistentes são uma violação do doze-fatores e nunca devem ser utilizadas ou invocadas. Dados do estado da sessão são bons candidatos para um datastore que oferece tempo de expiração, tal como [Memcached](http://memcached.org/) ou [Redis](http://redis.io/). content/uk/backing-services.md0000644000175000056700000001077115232661434015151 0ustar0000000000000000## IV. Сторонні �лужби ### Вважайте �торонні �лужби (backing services) підключеними ре�ур�ами *Сторонн� �лужба* — це будь-�ка �лужба, �ка до�тупна за�то�унку по мережі і необхідна дл� його нормальної роботи: бази даних (наприклад, [MySQL](http://dev.mysql.com/) або [CouchDB](http://couchdb.apache.org/)), �и�теми черг повідомлень (наприклад, [RabbitMQ](http://www.rabbitmq.com/) або [Beanstalkd](https://beanstalkd.github.io)), �лужби SMTP дл� вихідної пошти (наприклад, [Postfix](http://www.postfix.org/)), �и�теми кешуванн� (наприклад, [Memcached](http://memcached.org/)) тощо. Допоміжні �лужби, такі �к бази даних, традиційно управл�ють�� тими ж �и�темними адміні�траторами, �кі розгортають за�то�унок. Окрім локальних �лужб, за�то�унок може також викори�товувати �лужби, що надають�� і керують�� третіми �торонами: SMTP-�ерві�и (наприклад, [Postmark](http://postmarkapp.com/)), �ерві�и збору метрик (наприклад, [New Relic](http://newrelic.com/) або [Loggly](http://www.loggly.com/)), �ховища бінарних даних (наприклад, [Amazon S3](http://aws.amazon.com/s3/)), а також різні �ерві�и, що надають до�туп через API (наприклад, [Twitter](http://dev.twitter.com/), [Google Maps](https://developers.google.com/maps/), або [Last.fm](http://www.last.fm/api)). **Код за�то�унку дванадц�ти факторів не бачить жодних відмінно�тей між локальними і �торонніми �ерві�ами.** Дл� за�то�унку кожен з них є підключеним ре�ур�ом, до�тупним за URL-адре�ою або іншими даними, що зберігають�� в [конфігурації](./config). [Розгортанн�](./codebase) за�то�унку дванадц�ти факторів повинно мати можливі�ть, наприклад, замінити локальну базу даних MySQL на будь-�ку керовану третьою �тороною (наприклад, [Amazon RDS](http://aws.amazon.com/rds/)) без жодних змін в коді за�то�унку. Крім того, локальний �ервер SMTP може бути замінений на �торонній SMTP-�ерві� (наприклад, Postmark) без зміни коду. В обох випадках необхідно змінити лише налаштуванн� відповідного ре�ур�у в конфігурації за�то�унку. Кожна окрема �торонн� �лужба є *ре�ур�ом*. �априклад, база даних MySQL є ре�ур�ом; дві бази даних MySQL (що викори�товують�� дл� шардінгу на рівні за�то�унку) кваліфікують�� �к два різних ре�ур�и. За�то�унок дванадц�ти факторів �приймає ці бази даних �к *підключені ре�ур�и*, що вказує на їхній �лабкий зв'�зок з розгортанн�м, в �кому вони підключені. production-розгортанн�, в �кому підключені чотири �торонні �лужби Ре�ур�и за необхідно�ті можуть бути підключені та відключені до розгортанн� за�то�унку. �априклад, �кщо база даних за�то�унку функціонує некорекно у зв'�зку з апаратними проблемами, адміні�тратор може запу�тити новий �ервер бази даних, відновленої з о�танньої резервної копії. Поточна база даних може бути відключена, а нова база даних підключена — в�е це без будь-�ких змін коду. content/fr/config.md0000644000175000056700000001002415232661434013156 0ustar0000000000000000## III. Configuration ### Stockez la configuration dans l'environnement La *configuration* d'une application est tout ce qui est susceptible de varier entre des [déploiements](./codebase) (validation, production, environnement de développement, etc.). Cela inclut : * Les ressources gérées par la base de données, Memcached, ou tout autre [service de stockage](./backing-services) * Les identifiants pour des services externes, tel qu'Amazon S3 ou Twitter * Les valeurs spécifiques au déploiement, tel que son nom d'hôte canonique Les applications stockent parfois la configuration avec des constantes dans le code. C'est une violation des 12 facteurs, qui requiert une **stricte séparation de la configuration et du code**. La configuration peut varier substantiellement à travers les déploiements, alors que ce n'est pas le cas du code. Un bon moyen de tester si une application a correctement séparé son code, c'est de se demander si l'application pourrait être rendue open-source à tout instant, sans compromettre d'identifiants. Notez que cette définition de "configuration" n'inclut **pas** la configuration interne de l'application, tel que `config/routes.rb` avec Rails, ou comment [les modules du noyau sont connectés (en)](http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html) dans [Spring](http://spring.io/). Ce type de configuration ne varie pas à travers les déploiements, et est ainsi mieux réalisé dans le code. Une autre approche de la configuration, c'est d'utiliser des fichiers de configuration qui ne sont pas inclus dans le système de contrôle de version, par exemple `config/database.yml` de Rails. C'est une amélioration considérable par rapport à l'utilisation de constantes qui sont versionnées dans le dépôt de code, mais a toujours des faiblesses : il est facile d'ajouter par inadvertance un fichier de configuration dans le dépôt. Il y a une tendance à ce que les fichiers de configuration soient dispersés à différents endroits et dans différents formats, rendant ainsi difficile de voir et gérer la configuration à un unique endroit. De plus, ces formats ont tendance à être spécifiques à un langage ou un framework. **Les applications 12 facteurs stockent la configuration dans des *variables d'environnement*** (souvent raccourcies en *variables d'env*, ou *env*). Les variables d'environnement sont faciles à changer entre des déploiements sans changer le moindre code ; contrairement aux fichiers de configuration, il y a peu de chance pour qu'elles soient ajoutées au dépôt de code accidentellement ; et contrairement aux fichiers de configuration personnalisés, ou tout autre mécanisme de configuration comme les propriétés système Java, ce sont des standards agnostiques du langage ou du système d'exploitation. Un autre aspect de la gestion de configuration est le groupage. Parfois, les applications regroupent la configuration dans des groupes nommés (souvent appelés les "environnements"), nommés ainsi d'après des déploiements spécifiques, comme les environnements `development`, `test`, et `production` de Rails. Cette méthode ne permet pas de grossir proprement : lorsque l'on ajoute de nouveaux déploiement à l'application, de nouveaux noms d'environnement sont nécessaires, comme `validation` ou `qa`. Quand le projet grossit encore plus, les développeurs vont avoir tendance à ajouter leurs propres environnements particuliers, comme `joes-validation`, ce qui entraîne une explosion combinatoire de la configuration qui rend la gestion des déploiements de l'application très fragile. Dans une application 12 facteurs, les variables d'environnement permettent un contrôle granulaire, chacune complètement orthogonale aux autres variables d'environnement. Elles ne sont jamais groupées ensemble en "environnements", mais sont plutôt gérées indépendamment pour chaque déploiement. C'est un modèle qui permet de grossir verticalement en souplesse, lorsque l'application grossit naturellement en un plus grand nombre de déploiements au cours de sa vie. content/it/dependencies.md0000644000175000056700000000555315232661434014357 0ustar0000000000000000## II. Dipendenze ### Dipendenze dichiarate e isolate Molti linguaggi di programmazione offrono dei sistemi di packaging per la distribuzione delle proprie librerie, come [CPAN](http://www.cpan.org/) per Perl o [Rubygems](http://rubygems.org/) per Ruby. Le librerie installate attraverso questi sistemi, inoltre, possono essere identificate come "system-wide" (attive a livello di sistema), oppure posizionate nella directory della singola applicazione (in questo caso si parla di "vendoring" o "bundling"). **Un'applicazione che aderisce alla twelve-factor non si basa mai sull'esistenza implicita di librerie system-wide**. Le dipendenze vengono tutte dichiarate, tramite un manifest dedicato. Inoltre, viene contemplato anche l'uso di un tool di *isolamento delle dipendenze* durante l'esecuzione, in modo tale da assicurarsi che non ci siano delle "dipendenze implicite" che creino interferenze nel sistema in cui ci si trova. La specifica completa ed esplicita delle dipendenze si applica in modo uniforme: sia in production che in sviluppo. Per esempio, [Bundler](https://bundler.io/) per Ruby offre il supporto di un file-manifesto `Gemfile` da usare per la dichiarazione delle dipendenze e `bundle exec` per il loro isolamento. In Python invece troviamo altri due tool per questi scopi -- [Pip](http://www.pip-installer.org/en/latest/) viene usato per la dichiarazione e [Virtualenv](http://www.virtualenv.org/en/latest/) per l'isolamento. Anche C ha [Autoconf](http://www.gnu.org/s/autoconf/) per la dichiarazione di dipendenze, mentre lo static linking si occupa dell'isolamento. Non importa quale sia il toolchain usato, le operazioni di dichiarazione e isolamento vanno sempre effettuate. In caso contrario, l'applicazione non aderisce più alla metodologia. Un altro importante beneficio di una dichiarazione esplicita delle dipendenze sta nel fatto che semplifica di molto la configurazione iniziale per gli sviluppatori appena entrati a lavorare al progetto. Il nuovo arrivato non dovrà fare altro che effettuare un check out della codebase nella propria macchina di sviluppo, occupandosi di dover installare solo ed esclusivamente le dipendenze, appunto, dichiarate. Molto spesso è inoltre presente un *build command* che permette di automatizzare il processo. Per Ruby/Bundler si usa `bundle install`, mentre per Clojure/[Leiningen](https://github.com/technomancy/leiningen#readme) c'è `lein deps`. Ogni applicazione che aderisce alla metodologia twelve-factor, inoltre, non si basa mai sull'esistenza di un qualsiasi tool di sistema. Alcuni esempi sono *ImageMagick* o *curl*. Nonostante questi software esistano già su buona parte dei sistemi in circolazione, non è comunque detto che siano presenti su tutti quelli su cui girerà l'applicazione in futuro. Se l'app non può fare a meno di questo tool, si dovrebbe prendere in considerazione l'idea di "vendorizzarlo" nell'applicazione stessa. content/th/port-binding.md0000644000175000056700000000546315232661434014324 0ustar0000000000000000## VII. Port binding ### นำออ�บริ�ารด้วย�ารเชื่อมโยง port เว็บ�อพ (Web App) บางครั้งทำงานข้างใน webserver container. ตัวอย่างเช่น PHP app จะทำงานเป็นโมดูลข้างใน [Apache HTTPD](http://httpd.apache.org/) หรือ Java app จะทำงานข้างใน [Tomcat](http://tomcat.apache.org/) เป็นต้น **Twelve-factor app เป็น self-contained โดยสมบูรณ์** �ละไม่ขึ้นอยู่�ับ runtime injection ของ webserver เข้ามายังสภาพ�วดล้อม�ารดำเนินงานเพิ่อสร้าง web-facing service. เว็บ�อพ **นำออ� HTTP เป็นบริ�ารโดยเชื่อมโยง�ับ port** �ละคอยตรวจสอบ request ที่เข้ามาจา� port นั้น นี้เป็น�ารทำงานปร�ติโดยใช้ [ประ�าศ�ารอ้างอิง](./dependencies) เพื่อเพิ่ม webserver library ของ app, เช่น [Tornado](http://www.tornadoweb.org/) สำหรับ Python, [Thin](http://code.macournoyer.com/thin/) สำหรับ Ruby หรือ [Jetty](http://www.eclipse.org/jetty/) สำหรับ Java �ละภาษา JVM-based อื่นๆ เ�ิดขึ้นใน *user space* นั้นคือภายใน code ของ app ซึ่งสั��า�ับสภาพ�วดล้อม�ารดำเนินงานที่เชื่อมโยง�ับ port เพื่อบริ�าร request ที่เข้ามา HTTP ไม่เป็นเพียง service ที่สามารถนำออ�โดย�ารเชื่อมโยง port, server software เ�ือบทุ�ชนิดสามารถทำงานผ่าน�ารเชื่อมโยง process ไปยัง port �ละรอ request ที่เข้ามา, ตัวอย่างรวมทั้ง ejabberd](http://www.ejabberd.im/) (speaking [XMPP](http://xmpp.org/)), �ละ [Redis](http://redis.io/) (speaking the [Redis protocol](http://redis.io/topics/protocol)) หมายเหตุ, วิธี�ารเชื่อมโยง port หมายความว่า app จะ�ลายเป็น [backing service](./backing-services) สำหรับ app อื่นๆ โดย�ารให้ URL �ับ backing app เป็นตัวจัด�ารทรัพยา�รใน [�ารตั้งค่า](./config) สำหรับใช้งาน app content/zh_cn/concurrency.md0000644000175000056700000000440515232661434014743 0ustar0000000000000000## VIII. 并� ### 通过进程模型进行扩展 任何计算机程�,一旦�动,就会生�一个或多个进程。互�网应用采用多�进程�行方�。例如,PHP 进程作为 Apache 的�进程存在,�请求按需�动。Java 进程则采�了相�的方�,在程��动之� JVM 就�供了一个超级进程储备了大�的系统资�(CPU 和内存),并通过多线程实现内部的并�管�。上述 2 个例�中,进程是开�人员�以�作的最���。 ![扩展表现为�行中的进程,工作多样性表现为进程类型。](/images/process-types.png) **在 12-factor 应用中,进程是一等公民。**12-Factor 应用的进程主�借鉴于 [unix 守护进程模型](https://adam.herokuapp.com/past/2011/5/9/applying_the_unix_process_model_to_web_apps/) 。开�人员�以�用这个模型去设计应用架构,将��的工作分�给��的 *进程类型* 。例如,HTTP 请求�以交给 web 进程�处�,而常驻的��工作则交由 worker 进程负责。 这并�包括个别较为特殊的进程,例如通过虚拟机的线程处�并�的内部�算,或是使用诸如 [EventMachine](https://github.com/eventmachine/eventmachine), [Twisted](http://twistedmatrix.com/trac/), [Node.js](http://nodejs.org/) 的异步/事件触�模型。但一�独立的虚拟机的扩展有瓶颈(垂直扩展),所以应用程�必须�以在多�物�机器间跨进程工作。 上述进程模型会在系统急需扩展时大放异彩。 [12-Factor 应用的进程所具备的无共享,水平分区的特性](./processes) �味�添加并�会�得简�而稳妥。这些进程的类型以��个类型中进程的数�就被称作 *进程构�* 。 12-Factor 应用的进程 [�需�守护进程](http://dustin.github.com/2010/02/28/running-processes.html) 或是写入 PID 文件。相�的,应该借助�作系统的进程管�器(例如 [systemd](https://www.freedesktop.org/wiki/Software/systemd/) ,分布�的进程管�云平�,或是类似 [Foreman](http://blog.daviddollar.org/2011/05/06/introducing-foreman.html) 的工具),�管� [输出�](./logs) ,�应崩溃的进程,以�处�用户触�的��和关闭超级进程的请求。 locales/tr.yml0000644000175000056700000000033115232661434012100 0ustar0000000000000000tr: # Name of language listed in locales menu language: Turkish (tr) # A text to make known that the article is a translation not an original. # Empty for English, original. translation: "Türkçe çeviri" content/de/background.md0000644000175000056700000000265415232661434014023 0ustar0000000000000000Hintergrund ========== Die Mitwirkenden an diesem Dokument waren direkt beteiligt an der Entwicklung und dem Deployment von hunderten von Apps und wurden Zeugen bei der Entwicklung, beim Betrieb und der Skalierung von hunderttausenden von Apps im Rahmen unserer Arbeit an der [Heroku](http://www.heroku.com/)-Plattform. Dieses Dokument ist eine Synthese all unserer Erfahrungen und der Beobachtungen einer großen Bandbreite von Software-As-A-Service Apps. Es ist eine Bestimmung der idealen Praktiken bei der App-Entwicklung mit besonderem Augenmerk auf die Dynamik des organischen Wachstums einer App über die Zeit, die Dynamik der Zusammenarbeit zwischen den Entwicklern die an einer Codebase zusammenarbeiten und der [Vermeidung der Kosten von Software-Erosion](http://blog.heroku.com/archives/2011/6/28/the_new_heroku_4_erosion_resistance_explicit_contracts/). Unsere Motivation ist, das Bewusstsein zu schärfen für systembedingte Probleme in der aktuellen Applikationsentwicklung, ein gemeinsames Vokabular zur Diskussion dieser Probleme zu liefern und ein Lösungsportfolio zu diesen Problemen mit einer zugehörigen Terminologie anzubieten. Das Format ist angelehnt an Martin Fowlers Bücher *[Patterns of Enterprise Application Architecture](http://books.google.com/books/about/Patterns_of_enterprise_application_archi.html?id=FyWZt5DdvFkC)* und *[Refactoring](http://books.google.com/books/about/Refactoring.html?id=1MsETFPD3I0C)*. content/de/build-release-run.md0000644000175000056700000000532015232661434015214 0ustar0000000000000000## V. Build, release, run ### Build- und Run-Phase strikt trennen Eine [Codebase](./codebase) wird durch drei Phasen in einen (Nicht-Entwicklungs)-Deploy transformiert: * Die *Build-Phase* ist eine Transformation, die ein Code-Repository in ein ausführbarers Code-Bündel übersetzt, das man auch *Build* nennt. Ausgehend von einer Code-Version eines Commits, der im Deployment-Prozess festgelegt wurde, holt sie [Abhängigkeiten](./dependencies), verpackt sie zum Mitliefern, und kompiliert Binaries und Assets. * Die *Release-Phase* übernimmt den Build von der Build-Phase und kombiniert ihn mit der zum Deploy passenden [Konfiguration](./config). Der so erzeugte *Release* enthält sowohl den Build, als auch die Konfiguration und kann direkt in einer Ausführungsumgebung ausgeführt werden. * Die *Run-Phase* (auch "Laufzeit" genannt) führt die App in einer Ausführungsumgebung aus, indem sie eine Menge der [Prozesse](./processes) der App gegen einen ausgewählten Release ausführt. ![Code wird zum Build und zusammen mit einer Konfiguration ergibt sich ein Release](/images/release.png) **Die Zwölf-Faktor-App trennt strikt zwischen Build-, Release- und Run-Phase.** Es ist nicht möglich, Code-Änderungen zur Laufzeit zu machen, weil es keinen Weg gibt, diese Änderungen zurück in die Build-Phase zu schicken. Deployment-Werkzeuge bieten meist eine Release-Verwaltung an. Am bekanntesten ist die Funktion auf einen früheren Release zurückzusetzen. Zum Beispiel speichert das Deployment-Werkzeug [Capistrano](https://github.com/capistrano/capistrano/wiki) Releases in einem Unterverzeichnis mit Namen `releases`. Der aktuelle Release ist ein symbolischer Link auf aktuelle Release-Verzeichnis. Mit dem Kommando `rollback` kann einfach und schnell auf einen früheren Release zurückgesetzt werden. Jeder Release sollte eine eindeutige Release-ID haben, wie zum Beispiel einen Zeitstempel des Releases (`2011-04-06-20:32:17`) oder eine laufende Nummer (`v100`). Releases werden nie gelöscht und ein Release kann nicht verändert werden, wenn er einmal angelegt ist. Jede Änderung erzeugt einen neuen Release. Builds werden durch die Entwickler der App angestoßen, wenn neuer Code deployt wird. Im Gegensatz dazu kann die Ausführung zur Laufzeit automatisch erfolgen, wenn ein Server neu gebootet wird oder ein abgestürzter Prozess von der Prozessverwaltung neu gestartet wird. Deswegen sollte die Run-Phase auf so wenig bewegliche Teile wie möglich beschränkt sein, denn Probleme, die eine App vom Laufen abhalten, können sie mitten in der Nacht zusammenbrechen lassen, wenn keine Entwickler zur Verfügung stehen. Die Build-Phase kann komplexer sein, denn Fehler sind immer sichtbar für den Entwickler, der den Deploy vorantreibt. content/ja/backing-services.md0000644000175000056700000000727715232661434015133 0ustar0000000000000000## IV. �ックエンドサービス ### �ックエンドサービスをアタッ��れ�リソース���扱� *�ックエンドサービス* �アプリケーション�通常�動作�中��ットワーク越��利用�る����サービスを言�。例�����データストア(例:[MySQL](http://dev.mysql.com/) や [CouchDB](http://couchdb.apache.org/))�メッセージキューイングシステム(例:[RabbitMQ](http://www.rabbitmq.com/) や [Beanstalkd](https://beanstalkd.github.io))�電�メールを�信�る���SMTPサービス(例:[Postfix](http://www.postfix.org/))�キャッシュシステム(例:[Memcached](http://memcached.org/))����る。 従��データストア����ックエンドサービス��デプロイ�れ�アプリケーション���システム管�者�よ��管��れ���。��よ��ローカル�管��れるサービス�加���サードパーティ�よ���供�管��れるサービスを利用�る��も�る。例�����SMTP サービス(例:[Postmark](http://postmarkapp.com/))�メトリクス�集システム(例:[New Relic](http://newrelic.com/) や [Loggly](http://www.loggly.com/))�ストレージサービス(例:[Amazon S3](http://aws.amazon.com/s3/))�APIアクセス�能�消費者��サービス(例:[Twitter](http://dev.twitter.com/)や[Google Maps](https://developers.google.com/maps/)�[Last.fm](http://www.last.fm/api))����る。 **Twelve-Factor App�コード��ローカルサービス�サードパーティサービスを区別���。** アプリケーション��������らもアタッ��れ�リソース��り�[設定](./config)�格��れ�URLや��他�ロケーター��証情報�アクセス�る。Twelve-Factor App�[デプロイ](./codebase)��アプリケーション�コード�変更を加�る�����ローカル�管��れるMySQLデータベースをサードパーティ�管��れるサービス([Amazon RDS](http://aws.amazon.com/rds/)��)�切り替�る�����る����る。�様��ローカル�SMTPサー�ーも�コードを変更�る����サードパーティ�SMTPサービス(Postmark��)�切り替�る�����る����る。��ら�場�も�変更�必����設定�中�リソース�ンドル����る。 �れ�れ��ックエンドサービス� *リソース* ��る。例���1��MySQLデータベース�リソース��る。2��MySQLデータベース(アプリケーション層��シャーディング�使�)�2��異�るリソース�見��る。Twelve-Factor App��れら�データベースを *アタッ��れ�リソース* ���扱�。�れ��アタッ��れ�リソース�アタッ��る対象�デプロイ�疎����る��を�味�る。 4���ックエンドサービス�アタッ��れ�本番デプロイ リソース�自由�デプロイ�アタッ���り�デプロイ�らデタッ���り��る。例����ードウェア��題�よ��アプリケーション�データベース�動作�����場��アプリケーション�管�者�最新��ックアップ�ら新��データベースサー�ーを立�上�る。����在�本番データベースをデタッ���新��データベースをアタッ��る -- コードを一切変更���。 content/pt_br/codebase.md0000644000175000056700000000405515232661434014164 0ustar0000000000000000## I. Base de Código ### Uma base de código com rastreamento utilizando controle de revisão, muitos deploys Uma aplicação 12 fatores é sempre rastreada em um sistema de controle de versão, como [Git](http://git-scm.com/), [Mercurial](https://www.mercurial-scm.org/), ou [Subversion](http://subversion.apache.org/). Uma cópia da base de dados do rastreamento de revisões é conhecido como *repositório de código*, normalmente abreviado como *repositório* ou *repo*. Uma *base de código* é um único repo (em um sistema de controle de versão centralizado como Subversion), ou uma série de repositórios que compartilham um registro raiz. ![Uma base de código para vários deploys](/images/codebase-deploys.png) Existe sempre uma correlação um-para-um entre a base de código e a aplicação: * Se existem várias bases de código, isto não é uma app -- é um sistema distribuído. Cada componente do sistema é uma app, e cada uma pode individualmente ser compatível com os 12 fatores. * Múltiplas apps compartilhando uma base de código é uma violação dos 12 fatores. A solução aqui é dividir o código compartilhado entre bibliotecas que podem ser incluídas através do [gerenciador de dependências](/dependencies). Existe apenas uma base de código por aplicação, mas existirão vários deploys da mesma. Um *deploy* (ou implantação) é uma instância executando a aplicação. Isto é tipicamente um local de produção, e um ou mais locais de testes. Adicionalmente, todo desenvolvedor tem uma cópia da aplicação rodando em seu ambiente local de desenvolvimento, cada um desses pode ser qualificado como um deploy. A base de código é a mesma através de todos os deploys, entretanto diferentes versões podem estar ativas em cada deploy. Por exemplo, um desenvolvedor tem alguns registros ainda não implantados no ambiente de teste, o ambiente de teste ainda tem registros não implantados em produção. Mas todos esses ambientes compartilham a mesma base de código, tornando-os identificáveis ​​como diferentes deploys do mesmo app. public/css/mobile.css0000644000175000056700000000336615232661434013350 0ustar0000000000000000@media screen and (min-width: 1041px) { section { min-width: 65em; } article, nav { max-width: 55em; } } @media screen and (min-width: 481px) and (max-width: 800px) { article img { float: none; display: block; margin: 0 auto; } } @media screen and (min-width: 481px) and (max-width: 1040px) { header { font-size: 1em; } article, nav { width:85%; min-width: none; max-width: none; } section, footer { width:100%; min-width: none; max-width: none; } article h1, article h2, article h3, article p, article table { padding-left: 15px; padding-right: 15px; } article ul, article ol { padding-left: 35px; padding-right: 10px; text-align: left; } article table { font-size: 0.8em; } article table td { padding-left: 0.25em; padding-right: 0.25em; } article img { max-width: 100%; margin-bottom: 1em; } nav a { padding:1em; } nav a { padding:1em; } footer { padding-left: 0; padding-right: 0; } } @media screen and (max-width: 480px) { header { font-size: 0.75em; } section, article, nav, footer { min-width: 320px; max-width: 480px; } article h1, article h2, article h3, article p, article table { padding-left: 15px; padding-right: 15px; text-align: left; } article ul, article ol { padding-left: 35px; padding-right: 10px; text-align: left; } article table { font-size: 0.5em; } article table td { padding-left: 0.25em; padding-right: 0.25em; } article img { max-width: 100%; margin-bottom: 1em; } nav a { padding: 1em; } footer { padding-left: 0; padding-right: 0; } }content/es/who.md0000644000175000056700000000035215232661434012511 0ustar0000000000000000¿Quién debería leer este documento? =================================== Cualquier desarrollador que construya aplicaciones y las ejecute como un servicio. Ingenieros de operaciones que desplieguen y gestionen dichas aplicaciones. content/de/codebase.md0000644000175000056700000000356715232661434013455 0ustar0000000000000000## I. Codebase ### Eine im Versionsmanagementsystem verwaltete Codebase, viele Deployments Eine Zwölf-Faktor-App wird immer in einem Versionsmanagementsystem verwaltet, wie zum Beispiel [Git](http://git-scm.com/), [Mercurial](https://www.mercurial-scm.org/) oder [Subversion](http://subversion.apache.org/). Eine Kopie der Versionsdatenbank wird *Code Repository* genannt, kurz *Code Repo* oder auch nur *Repo*. Eine *Codebase* ist jedes einzelne Repo (in einem zentralisierten Versionsmanagementsystem wie Subversion) oder jede Menge von Repos, die einen ursprünglichen Commit teilen (in dezentralisierten Versionsmanagementsystemen wie git). ![Eine Codebase bildet sich in viele Deploys ab.](/images/codebase-deploys.png) Es gibt immer eine eineindeutige Korrelation zwischen einer Codebase und einer App: * Wenn es mehrere Codebases gibt, ist es keine App -- sondern ein verteiltes System. Jede Komponente in einem verteilten System ist eine App, und Jede kann für sich den zwölf Faktoren entsprechen. * Wenn mehrere Apps denselben Code teilen, verletzt dies die zwölf Faktoren. Lösen lässt sich dies, indem man den gemeinsamen Code in Bibliotheken auslagert und über die [Abhängigkeitsverwaltung](./dependencies) lädt. Es gibt nur eine Codebase pro App aber viele Deploys der App. Ein *Deploy* ist eine laufende Instanz der App. Meist gibt es ein Produktionssystem und eines oder mehrere Staging-Systeme. Zusätzlich hat jeder Entwickler eine Kopie der App in seiner lokalen Entwicklungsumgebung, das sind auch Deploys. Die Codebase ist über alle diese Deploys hinweg dieselbe, auch wenn bei jedem Deploy unterschiedliche Versionen aktiv sind. So hat zum Beispiel ein Entwickler manche Commits noch nicht nach Staging deployt; Staging hat manche Commits noch nicht nach Produktion deployt. Aber alle teilen dieselbe Codebase, was sie als verschiedene Deploys derselben App auszeichnet. content/de/logs.md0000644000175000056700000000455015232661434012645 0ustar0000000000000000## XI. Logs ### Logs als Strom von Ereignissen behandeln *Logs* machen das Verhalten einer laufenden App sichtbar. In Server-basierten Umgebungen werden sie üblicherweise in eine Datei auf der Platte geschrieben (eine Logdatei) - das ist aber nur ein Ausgabeformat. Logs sind der [Stream](https://adam.herokuapp.com/past/2011/4/1/logs_are_streams_not_files/) von aggregierten, nach Zeit sortierten Ereignissen und zusammengefasst aus den Output Streams aller laufenden Prozesse und unterstützenden Dienste. Logs in ihrer rohen Form sind üblicherweise ein Textformat mit einem Ereignis pro Zeile (obwohl Backtraces von Exceptions über mehrere Zeilen gehen können) **Eine Zwölf-Faktor-App kümmert sich nie um das Routing oder die Speicherung ihres Output Streams.** Sie sollte nicht versuchen, in Logdateien zu schreiben oder diese zu verwalten. Statt dessen schreibt jeder laufende Prozess seinen Stream von Ereignissen ungepuffert auf `stdout`. Bei einem lokalen Deployment sichtet ein Entwickler diesen Stream im Vordergrund seines Terminals um das Verhalten der App zu beobachten. Auf Staging- oder Produktionsdeploys werden die Streams aller Prozesse von der Laufzeitumgebung erfasst, mit allen anderen Streams der App zusammengefasst und zu einem oder mehreren Zielen geleitet, zur Ansicht oder langzeitigen Archivierung. Diese Archivierungsziele sind für die App weder sichtbar noch konfigurierbar - sie werden vollständig von der Laufzeitumgebung aus verwaltet. Open-Source Log Router (wie [Logplex](https://github.com/heroku/logplex) und [Fluentd](https://github.com/fluent/fluentd)) stehen dafür zur Verfügung. Der Stream von Ereignissen für eine App kann in eine Datei geleitet werden oder mit einem Echtzeit-Tail in einem Terminal beobachtet werden. Sehr bedeutsam ist es, das der Stream in ein Log-Indexierungs- und Analyse-System wie [Splunk](http://www.splunk.com/) oder in ein allgemein verwendbares Data-Warehouse-System wie [Hadoop/Hive](http://hive.apache.org/) gelenkt werden kann. Mit diesem System kann das Verhalten einer App leistungsfähig und flexibel beobachtet werden. Dies schließt ein: * Bestimmte Ereignisse in der Vergangenheit zu finden * Umfangreiche graphische Darstellungen (wie Requests pro Minute) * Aktives Alarmieren aufgrund benutzerdefinierter Heuristiken (wie ein Alarm wenn die Anzahl von Fehlern pro Minute eine gewisse Grenze überschreitet) content/en/dependencies.md0000644000175000056700000000477615232661434014353 0ustar0000000000000000## II. Dependencies ### Explicitly declare and isolate dependencies Most programming languages offer a packaging system for distributing support libraries, such as [CPAN](http://www.cpan.org/) for Perl or [Rubygems](http://rubygems.org/) for Ruby. Libraries installed through a packaging system can be installed system-wide (known as "site packages") or scoped into the directory containing the app (known as "vendoring" or "bundling"). **A twelve-factor app never relies on implicit existence of system-wide packages.** It declares all dependencies, completely and exactly, via a *dependency declaration* manifest. Furthermore, it uses a *dependency isolation* tool during execution to ensure that no implicit dependencies "leak in" from the surrounding system. The full and explicit dependency specification is applied uniformly to both production and development. For example, [Bundler](https://bundler.io/) for Ruby offers the `Gemfile` manifest format for dependency declaration and `bundle exec` for dependency isolation. In Python there are two separate tools for these steps -- [Pip](http://www.pip-installer.org/en/latest/) is used for declaration and [Virtualenv](http://www.virtualenv.org/en/latest/) for isolation. Even C has [Autoconf](http://www.gnu.org/s/autoconf/) for dependency declaration, and static linking can provide dependency isolation. No matter what the toolchain, dependency declaration and isolation must always be used together -- only one or the other is not sufficient to satisfy twelve-factor. One benefit of explicit dependency declaration is that it simplifies setup for developers new to the app. The new developer can check out the app's codebase onto their development machine, requiring only the language runtime and dependency manager installed as prerequisites. They will be able to set up everything needed to run the app's code with a deterministic *build command*. For example, the build command for Ruby/Bundler is `bundle install`, while for Clojure/[Leiningen](https://github.com/technomancy/leiningen#readme) it is `lein deps`. Twelve-factor apps also do not rely on the implicit existence of any system tools. Examples include shelling out to ImageMagick or `curl`. While these tools may exist on many or even most systems, there is no guarantee that they will exist on all systems where the app may run in the future, or whether the version found on a future system will be compatible with the app. If the app needs to shell out to a system tool, that tool should be vendored into the app. content/it/admin-processes.md0000644000175000056700000000462415232661434015023 0ustar0000000000000000## XII. Processi di Amministrazione ### Esegui i task di amministrazione come processi una tantum La "[process formation](./concurrency)" è l'array dei processi che vengono usati durante le normali operazioni dell'applicazione (per esempio, la gestione delle richieste web). Non è tutto, però: ci sono dei task che lo sviluppatore può voler eseguire, una volta ogni tanto. Per esempio: * Esecuzione delle migration del database (esempi: `manage.py migrate` in Django, `rake db:migrate` in Rails). * Esecuzione di una console (una [REPL](http://en.wikipedia.org/wiki/Read-eval-print_loop) shell) in modo tale da avviare del codice arbitrariamente o analizzare alcuni aspetti dell'applicazione specifici. Molti linguaggi prevedono una REPL, in genere avviando l'interprete senza opzioni e argomenti aggiuntivi (esempi: `python` o `perl`) o in alcuni casi eseguibile con un comando separato (esempi: `irb` per Ruby, `rails console` per Rails). * Esecuzione one-time di alcuni script specifici (esempio: `php scripts/fix_bad_records.php`). Tali processi dovrebbero essere avviati in un ambiente identico a quello in cui [lavorano gli altri](./processes) nel contesto dell'applicazione. Dovrebbero essere eseguiti quindi su una specifica [release](./build-release-run), partendo dalla stessa [codebase](./codebase) e impostazioni di [configurazione](./config). Il codice per l'amministrazione dovrebbe inoltre essere incluso nel codice dell'applicazione, in modo tale da evitare qualsiasi problema di sincronizzazione. La stessa tecnica di [isolamento delle dipendenze](./dependencies) dovrebbe poter essere usata allo stesso modo su tutti i processi. Per esempio, se il processo web di Ruby può usare il comando `bundle exec thin start`, una migration del database dovrebbe poter usare `bundle exec rake db:migrate` senza problemi. Allo stesso modo, un programma Python che usa Virtualenv dovrebbe usare il `bin/python` per eseguire sia i server Tornado che processi di amministrazione. La metodologia twelve-factor favorisce molto tutti quei linguaggi che offrono una shell REPL out of the box, rendendo quindi semplice l'esecuzione di script una tantum. In un deployment locale, gli sviluppatori possono invocare questi processi speciali tramite un semplice comando diretto. In un ambiente di produzione, invece, gli sviluppatori possono raggiungere lo stesso obiettivo tramite SSH o un qualsiasi altro sistema di esecuzione di comandi remoto. content/ko/codebase.md0000644000175000056700000000417515232661434013472 0ustar0000000000000000## I. 코드베�스 ### 버전 관리�는 하나� 코드베�스와 다양한 배� Twelve-Factor 앱� 항� [Git](http://git-scm.com/), [Mercurial](https://www.mercurial-scm.org/), [Subversion](http://subversion.apache.org/) 같� 버전 컨트롤 시스템� 사용하여 변화를 추�하며, 버전 추� ��터베�스� 사본� *코드 저장소*, 줄여서 *저장소*�고 부릅니다. *코드베�스*는 단� 저장소(Subversion 같� 중앙 집중� 버전 관리 시스템� 경우) �수� 있고, 루트 커밋� 공유하는 여러 저장소(Git 같� 분산 버전 관리 시스템)�수� 있습니다. ![하나� 코드베스는 여러 배�로 매핑�니다.](/images/codebase-deploys.png) 코드베�스와 앱 사��는 항� 1대1 관계가 성립�니다. * 코드베�스가 여러개 있는 경우, 앱� 아니� 분산 시스템으로 �야합니다. 분산 시스템� 개별 구성요소가 앱� �며, 개별 앱� Twelve-Factor를 따릅니다. * 여러개 앱� ��한 코드를 공유한다면 Twelve-Factor를 위반하는것입니다. �를 해결하려면 공유하는 코드를 ��브러리화 시키고, 해당 ��브러리를 [종�성 매니저](./dependencies)로 관리해야합니다. 앱� 코드베�스는 한개여야 하지만, 앱 배�는 여러개가 �수 있습니다. *배�*는 실행중� 앱� �스턴스를 가리킵니다. 보통 운� 사�트와 여러 스테�징 사�트가 여기� 해당합니다. 모든 개발�는 �신� 로컬 개발 환경� 실행�는 앱� 가지고 있는�, �것 역시 하나� 배�로 볼 수 있습니다. 배�마다 다른 버전� 활성화 �수 있지만, 코드베�스 �체는 모든 배�� 대해 ��합니다. 예를 들어, 개발�는 아� 스테�징 환경� 배�하지 않� 커밋� 있� 수 있으며, 스테�징 환경�는 아� 운� 환경� 배��지 않� 커밋� 있� 수 있습니다. 하지만 � 모든 것들� 같� 코드베�스를 공유하고, 같� 앱� 다른 배��고 할 수 있습니다.locales/it.yml0000644000175000056700000000041515232661434012072 0ustar0000000000000000it: # Name of language listed in locales menu language: Italiano (it) # A text to make known that the article is a translation not an original. # Empty for English, original. translation: (Questo testo è una traduzione della versione originale in inglese.) content/ko/who.md0000644000175000056700000000032315232661434012511 0ustar0000000000000000� 문서� 대� ============================== 서비스로 �작하는 애플리케�션� 개발하는 모든 개발�. 그런 애플리케�션� 배�하고 관리하는 �프� 엔지니어. content/pl/logs.md0000644000175000056700000000473215232661434012672 0ustar0000000000000000## XI. Logi ### Traktuj logi jako strumień zdarzeń *Logi* zapewniają wgląd w zachowanie działającej aplikacji. W środowiskach korzystających z serwera zazwyczaj są zapisywane na dysku (plik "logfile"); jednak jest to tylko wybrany format zapisu. Logi są listą zaagregowanych i uporządkowanych w czasie [zdarzeń](https://adam.herokuapp.com/past/2011/4/1/logs_are_streams_not_files/) zebranych ze strumieni wyjściowych wszystkich uruchomionych procesów i usług wspierających. Logi w swojej pierwotnej formie występują zazwyczaj w formacie tekstowym, gdzie jedno zdarzenie zajmuje jedną linię w pliku (wyjątkiem jest jednak [backtrace](https://en.wikipedia.org/wiki/Stack_trace), który może zajmować wiele linii). Logi nie mają określonego początku ani końca, napływają nieustannie podczas działania aplikacji. **Aplikacja 12factor nie odpowiada za przekierowywanie i zapis swojego strumienia wyjściowego.** Nie powinna też zapisywać czy zarządzać plikami logów. Zamiast tego, każdy działający proces zapisuje swój niebuforowany strumień zdarzeń do `stdout`. Podczas pracy w lokalnym środowisku developer może obserwować zachowanie aplikacji przeglądając strumień w oknie terminala We wdrożeniu stagingowym czy produkcyjnym, każdy strumień procesów zostanie przechwycony przez środowisko wykonawcze, dołączony do pozostałych i skierowany do jednego lub wielu miejsc w celu przeglądania i długoterminowego zapisu. Miejsca zapisu nie są widoczne ani konfigurowane przez aplikację - w całości zarządza nimi środowisko wykonawcze. W tym celu można skorzystać z narzędzi do obsługi logów (takich jak [Logplex](https://github.com/heroku/logplex) lub [Fluentd](https://github.com/fluent/fluentd)) dostępnych na licencji open-source. Strumień zdarzeń aplikacji może być skierowany do pliku lub obserwowany w czasie rzeczywistym przy pomocy komendy `tail` w terminalu. Przeważnie strumień jest wysyłany do systemu indeksowania i analizowania jak np. [Splunk](http://www.splunk.com/), albo do systemu magazynowania danych jak [Hadoop/Hive](http://hive.apache.org/). Wymienione systemy oferują duże możliwości i elastyczność obserwacji i badania zachowań aplikacji w czasie, w tym: * Wyszukiwanie konkretnych zdarzeń z przeszłości. * Wizualizację masowych statystyk (np. zapytania na minutę). * Wysyłanie powiadomień na podstawie wcześniej zdefiniowanych heurystyk (np. o tym, że liczba błędów przekroczyła dozwoloną wartość). content/ru/intro.md0000644000175000056700000000416515232661434013074 0ustar0000000000000000Введение ============ В наши дни программное обе�печение обычно ра�про�тран�ет�� в виде �ерви�ов, называемых *веб-приложени�* (web apps) или *software-as-a-service* (SaaS). Приложение двенадцати факторов — �то методологи� дл� �оздани� SaaS-приложений, которые: * И�пользуют **декларативный** формат дл� опи�ани� проце��а у�тановки и на�тройки, что �водит к минимуму затраты времени и ре�ур�ов дл� новых разработчиков, подключённых к проекту; * Имеют **�оглашение** � операционной �и�темой, предполагающее **мак�имальную перено�имо�ть** между �редами выполнени�; * Подход�т дл� **развёртывани�** на �овременных **облачных платформах**, у�тран�� необходимо�ть в �ерверах и �и�темном админи�трировании; * **Свод�т к минимуму ра�хождени�** между �редой разработки и �редой выполнени�, что позвол�ет и�пользовать **непрерывное развёртывание** (continuous deployment) дл� мак�имальной гибко�ти; * И могут **ма�штабировать��** без �уще�твенных изменений в ин�трументах, архитектуре и практике разработки. Методологи� двенадцати факторов может быть применена дл� приложений, напи�анных на любом �зыке программировани� и и�пользующих любые комбинации �торонних �лужб (backing services) (базы данных, очереди �ообщений, к�ш-пам�ти, и т.д.). content/ko/dev-prod-parity.md0000644000175000056700000001231115232661434014742 0ustar0000000000000000## X. dev/prod �치 ### development, staging, production 환경� 최대한 비슷하게 유지 역사�으로, 개발 환경(애플리케�션� 개발�가 �접 수정하는 로컬� [배�](./codebase))과 production 환경(최종 사용�가 접근하게 �는 실행 중� 배�) 사��는 � 차�가 있었습니다. �러한 차�는 3가지 �역� 걸처 나타납니다. * **시간� 차�**: 개발�가 작업한 코드는 production� 반��기까지 며칠, 몇주, 때로는 몇개월� 걸릴 수 있습니다. * **담당�� 차�**: 개발�가 작성한 코드를 시스템 엔지니어가 배�합니다. * **툴� 차�**: production 배�는 아파치, MySQL, 리눅스를 사용하는�, 개발�는 Nginx, SQLite, OS X를 사용할 수 있습니다. **Twelve Factor App� 개발 환경과 production 환경� 차�를 작게 유지하여 [지��� 배�](http://avc.com/2011/02/continuous-deployment/)가 가능하�� 디�� �었습니다.** 위�서 언급한 3가지 차�� 대한 대�책� 아래와 같습니다. * 시간� 차�� 최소화: 개발�가 작성한 코드는 몇 시간, 심지어 몇 분 후� 배��니다. * 담당�� 차�를 최소화: 코드를 작성한 개발�들� 배�와 production�서� 모니터�� 깊게 관여합니다. * 툴� 차�를 최소화: 개발과 production 환경� 최대한 비슷하게 유지합니다. 위� 내용� 표로 요약하면 아래와 같습니다.
전통�� 애플리케�션 Twelve-Factor App
배� 간� 간격 몇 주 몇 시간
코드 작성�와 코드 배�� 다른 사람 같� 사람
개발 환경과 production 환경 불�치함 최대한 유사함
��터베�스, �잉 시스템, �시와 같� [백엔드 서비스](./backing-services)는 dev/prod �치가 중요한 �역 중 하나 입니다. 많� 언어들� 다른 종류� 서비스� 대한 *어댑터*를 �함하고 간단하게 백엔드 서비스� 접근할 수 있는 ��브러리들� 제공합니다. 아래� 표� 몇가지 예가 나와있습니다.
종류 언어 ��브러리 어댑터
��터 베�스 Ruby/Rails ActiveRecord MySQL, PostgreSQL, SQLite
�(Queue) Python/Django Celery RabbitMQ, Beanstalkd, Redis
�쉬 Ruby/Rails ActiveSupport::Cache 메모리, 파�시스템, Memcached
production 환경ì—�서는 ë�” 본격ì �ì�´ê³  강력한 백엔드 서비스가 사용ë�¨ì—�ë�„ 불구하고, 개발ìž�는 ìž�ì‹ ì�˜ 로컬 개발 환경ì—�서는 가벼운 백엔드 서비스를 사용하는 것ì—� í�° 매력ì�„ ëŠ�ë‚„ 수ë�„ 있습니다. 예를 들어, 로컬ì—�서는 SQLite를 사용하고 productionì—�서는 PostgreSQLì�„ 사용한다ë�˜ê°€, 개발 중ì—�는 로컬 프로세스ì�˜ 메모리를 ìº�싱용으로 사용하고 productionì—�서는 Memcached를 사용하는 경우가 있습니다. **Twelve-Factor 개발ìž�는 개발 환경과 production 환경ì—�서 다른 백엔드 서비스를 ì“°ê³  ì‹¶ì�€ ì¶©ë�™ì—� 저항합니다.** ì�´ë¡ ì �으로는 어댑터가 백엔드 서비스 ê°„ì�˜ ì°¨ì�´ë¥¼ ì¶”ìƒ�화해준다고 í•´ë�„, 백엔드 서비스 ê°„ì�˜ 약간ì�˜ 불ì�¼ì¹˜ê°€ 개발 환경과 스테ì�´ì§• 환경ì—�서는 ë�™ìž‘하고 테스트ì—� 통과ë�œ 코드가 production 환경ì—�서 오류를 ì�¼ìœ¼í‚¬ 수 있기 때문입니다. ì�´ëŸ° 종류ì�˜ 오류는 ì§€ì†�ì �ì�¸ ë°°í�¬ë¥¼ 방해합니다. 애플리케ì�´ì…˜ì�˜ ìƒ�명 주기 전체를 보았ì�„ 때, ì�´ëŸ¬í•œ 방해와 ì§€ì†�ì �ì�¸ ë°°í�¬ì�˜ 둔화가 ë°œìƒ�시키는 ì†�해는 엄청나게 í�½ë‹ˆë‹¤. 가벼운 로컬 서비스는 예전처럼 필수ì �ì�¸ 것ì�€ 아닙니다. Memcache, PostgreSQL, RabbitMQ와 ê°™ì�€ 현대ì �ì�¸ 백엔드 서비스들ì�€ [Homebrew](http://mxcl.github.com/homebrew/)나 [apt-get](https://help.ubuntu.com/community/AptGet/Howto)와 ê°™ì�€ 현대ì �ì�¸ 패키징 시스템 ë�•ë¶„ì—� 설치하고 실행하는ë�° 아무런 어려움ë�„ 없습니다. 혹ì�€ [Chef](http://www.opscode.com/chef/) and [Puppet](http://docs.puppetlabs.com/)와 ê°™ì�€ ì„ ì–¸ì � provisioning 툴과 [Vagrant](http://vagrantup.com/)등ì�˜ 가벼운 ê°€ìƒ� 환경ì�„ 결합하여 로컬 환경ì�„ production 환경과 매우 유사하게 구성할 수 있습니다. dev/prod ì�¼ì¹˜ì™€ ì§€ì†�ì �ì�¸ ë°°í�¬ì�˜ ì�´ì �ì—� 비하면 ì�´ëŸ¬í•œ 시스템ì�„ 설치하고 사용하는 비용ì�€ 낮습니다. 여러 백엔드 서비스ì—� 접근할 수 있는 어댑터는 여전히 유용합니다. 새로운 백엔드 서비스를 사용하ë�„ë¡� í�¬íŒ…하는 작업ì�˜ 고통ì�„ 낮춰주기 때문입니다. 하지만, 모든 애플리케ì�´ì…˜ì�˜ ë°°í�¬ë“¤(개발ìž� 환경, 스테ì�´ì§•, production)ì�€ ê°™ì�€ 종류, ê°™ì�€ 버전ì�˜ 백엔드 서비스를 ì�´ìš©í•´ì•¼í•©ë‹ˆë‹¤. content/de/dependencies.md0000644000175000056700000000536615232661434014335 0ustar0000000000000000## II. Abhängigkeiten ### Abhängigkeiten explizit deklarieren und isolieren Die meisten Programmiersprachen bieten ein System an, um unterstützende Bibliotheken zu verbreiten, wie [CPAN](http://www.cpan.org/) für Perl oder [Rubygems](http://rubygems.org/) für Ruby. Aus einem Paketsystem stammende Bibliotheken können systemweit installiert werden (auch "Site Packages" genannt) oder in ein Verzeichnis der App beschränkt werden (genannt "vendoring" oder "bundling" - deutsch auch "mitliefern"). **Eine Zwölf-Faktor-App verlässt sich nie auf die Existenz von systemweiten Paketen.** Sie deklariert alle Abhängigkeiten vollständig und korrekt über eine *Abhängigkeitsdeklaration*. Weiter benutzt sie zur Laufzeit ein Werkzeug zur *Isolation von Abhängigkeiten* um sicherzustellen, dass keine impliziten Abhängigkeiten aus dem umgebenden System "hereinsickern". Die vollständige und explizite Spezifikation der Abhängigkeiten wird gleichermaßen in Produktion und Entwicklung angewandt. So bietet zum Beispiel [Bundler](https://bundler.io/) für Ruby das Format `Gemfile` zur Abhängigkeitsdeklaration und `bundle exec` zur Isolation von Abhängigkeiten. In Python gibt es für diese Schritte zwei unterschiedliche Werkzeuge -- [Pip](http://www.pip-installer.org/en/latest/) für die Deklaration und [Virtualenv](http://www.virtualenv.org/en/latest/) für die Isolation. Selbst C hat [Autoconf](http://www.gnu.org/s/autoconf/) zur Deklaration der Abhängigkeiten, und statisches Linken kann für Isolation sorgen. Unabhängig von den Werkzeugen müssen Abhängigkeitsdeklaration und Isolation immer zusammen benutzt werden -- eines alleine genügt für die zwölf Faktoren nicht. Ein Nutzen der expliziten Abhängigkeitsdeklaration ist das einfachere Aufsetzen der App für neue Entwickler. Neue Entwickler können die Codebase der App auf ihre Entwicklungsmaschine auschecken und brauchen dazu nur eine Sprach-Runtime und eine Abhängigkeitsverwaltung. Um die App zum Laufen zu bringen wird lediglich ein deterministisches *Build-Kommando* benötigt. So ist zum Beispiel das Build-Kommando für Ruby/Bundler `bundle install` und für Clojure/[Leiningen](https://github.com/technomancy/leiningen#readme) ist es `lein deps`. Zwölf-Faktor-Apps verlassen sich auch nicht auf die implizite Existenz irgendwelcher Systemwerkzeuge. Beispiele dafür sind Shell-Aufrufe von ImageMagick oder `curl`. Auch wenn diese Werkzeuge auf vielen und sogar den meisten Systemen vorhanden sind, gibt es keine Garantie, dass sie auf allen Systemen vorhanden sind, auf denen die App in Zukunft laufen wird, oder dass die Werkzeug-Version die in Zukunft auf einem System vorhanden sein wird, kompatibel ist. Wenn die App per Shell auf ein Systemwerkzeug zugreift, sollte die App das Werkzeug mitliefern. content/es/config.md0000644000175000056700000000740315232661434013165 0ustar0000000000000000## III. Configuración ### Guardar la configuración en el entorno La configuración de una aplicación es todo lo que puede variar entre [despliegues](./codebase) (entornos de preproducción, producción, desarrollo, etc), lo cual incluye: * Recursos que manejan la base de datos, Memcached, y otros ["backing services"](./backing-services) * Credenciales para servicios externos tales como Amazon S3 o Twitter * Valores de despliegue como por ejemplo el nombre canónico del equipo para el despliegue A veces las aplicaciones guardan configuraciones como constantes en el código, lo que conduce a una violación de la metodología "twelve-factor", que requiere una **estricta separación de la configuración y el código**. La configuración varía sustancialmente en cada despliegue, el código no. La prueba de fuego para saber si una aplicación tiene toda su configuración correctamente separada del código es comprobar que el código base puede convertirse en código abierto en cualquier momento, sin comprometer las credenciales. Hay que resaltar que la definición de "configuración" **no** incluye las configuraciones internas de la aplicación, como `config/routes.rb` en Rails, o como [se conectan los módulos](http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html) en [Spring](http://spring.io/). Este tipo de configuraciones no varían entre despliegues, y es por eso que están mejor en el código. Otra estrategia de configuración es el uso de ficheros de configuración que no se guardan en el control de versiones, como ocurre con el `config/database.yml` de Rails. Esto supone una gran mejora con respecto a las constantes que se guardan en el repositorio, aunque todavía tiene ciertas debilidades: es fácil guardar un fichero de configuración en el repo por error; se tiende a desperdigar los ficheros de configuración en diferentes sitios y con distintos formatos, siendo más difícil la tarea de ver y gestionar toda la configuración en un solo sitio. Además, el formato tiende a ser específico del lenguaje o del framework. **Las aplicaciones "twelve-factor" almacenan la configuración en *variables de entorno*** (abreviadas normalmente como *env vars* o *env*). Las variables de entorno se modifican fácilmente entre despliegues sin realizar cambios en el código; a diferencia de los ficheros de configuración, en los que existe una pequeña posibilidad de que se guarden en el repositorio de código accidentalmente; y a diferencia de los ficheros de configuración personalizados u otros mecanismos de configuración, como los System Properties de Java, son un estándar independiente del lenguaje y del sistema operativo. Otro aspecto de la gestión de la configuración es la clasificación. A veces, las aplicaciones clasifican las configuraciones en grupos identificados (a menudo llamados "entornos" o "environments") identificando después despliegues específicos, como ocurre en Rails con los entornos `development`, `test`, y `production`. Este método no escala de una manera limpia: según se van creando despliegues de la aplicación, se van necesitando nuevos entornos, tales como `staging` o `qa`. Según va creciendo el proyecto, los desarrolladores van añadiendo sus propios entornos especiales como `joes-staging`, resultando en una explosión de combinaciones de configuraciones que hacen muy frágil la gestión de despliegues de la aplicación. En una aplicación "twelve-factor", las variables de entorno son controles granulares, cada una de ellas completamente ortogonales a las otras. Nunca se agrupan juntas como "entornos", pero en su lugar se gestionan independientemente para cada despliegue. Este es un modelo que escala con facilidad según la aplicación se amplía, naturalmente, en más despliegues a lo largo de su vida. content/fr/backing-services.md0000644000175000056700000000626415232661434015143 0ustar0000000000000000## IV. Services externes ### Traitez les services externes comme des ressources attachées Un *service externe* (backing service) correspond à tout service que l'application utilise à travers le réseau pour son fonctionnement nominal. Cela concerne par exemple les bases de données (tel que [MySQL](http://dev.mysql.com/) ou [CouchDB](http://couchdb.apache.org/)), les systèmes de messages/files (tel que [RabbitMQ](http://www.rabbitmq.com/) ou [Beanstalkd](https://beanstalkd.github.io)), les services SMTP pour l'envoi d'email (comme [Postfix](http://www.postfix.org/)), ainsi que les systèmes de cache (comme [Memcached](http://memcached.org/)). Les *services externes* comme la base de données sont le plus souvent gérés par les mêmes administrateurs réseau que ceux qui gèrent l'application de production. En plus de ces services gérés localement, l'application peut également avoir besoin de services gérés par des tiers. Cela concerne par exemple les services SMTP (comme [Postmark](http://postmarkapp.com/)), les services de gestion de métriques (comme [New Relic](http://newrelic.com/) ou [Loggly](http://www.loggly.com/)), les services de ressources binaires (comme [Amazon S3](http://aws.amazon.com/s3/)), et même les services que l'on peut consommer à travers une API (comme [Twitter](http://dev.twitter.com/), [Google Maps](https://developers.google.com/maps/), ou [Last.fm](http://www.last.fm/api)). **Le code d'une application 12 facteurs ne fait pas de distinction entre les services locaux et les services tiers**. Pour l'application, ce sont tous les deux des ressources attachées, accessibles via une URL ou un autre système de localisation et d'authentification stockée dans la [configuration](./config). Un [déploiement](./codebase) d'une application 12 facteurs doit pouvoir remplacer une base de données MySQL locale par une autre gérée par des tiers ([Amazon RDS](http://aws.amazon.com/rds/), par exemple) sans le moindre changement dans le code de l'application. De la même manière, un serveur SMTP local doit pouvoir être remplacé par un service tiers (Postmark, par exemple) sans changements dans le code. Dans les deux cas, seules les informations de configurations doivent changer. Chaque service externe est une *ressource*. Par exemple, une base de données MySQL est une ressource. Deux bases de données MySQL (utilisées pour faire du sharding dans la couche applicative) correspondent à deux ressources distinctes. L'application 12 facteurs traite ces bases de données comme des ressources attachées, ce qui indique leur couplage faible au déploiement auquel elles sont rattachées. Un déploiement de production lié à quatre services externes. Les ressources peuvent être attachées et détachées à volonté à des déploiements. Par exemple, si la base de données de l'application pose problème pour des raisons matérielles, l'administrateur de l'application peut vouloir lancer un nouveau serveur de base de données restauré à partir d'une sauvegarde récente. L'application courante pourrait être détachée de l'ancienne, puis rattachée à la nouvelle — le tout sans changement dans le code. content/it/background.md0000644000175000056700000000275315232661434014047 0ustar0000000000000000Background ========== Chi ha scritto questo documento è stato coinvolto direttamente nella realizzazione e nel deployment di centinaia di applicazioni, e ha indirettamente assistito allo sviluppo, le operazioni e lo scaling di centinaia (o migliaia) di app tramite il proprio lavoro sulla piattaforma [Heroku](http://www.heroku.com/). Questo documento riassume tutta quella che è stata la nostra esperienza, basata sull'osservazione di un grande numero di applicazioni SaaS. Si tratta di una "triangolazione" di pratiche di sviluppo ideali (con una particolare attenzione alla crescita organica dell'app nel tempo), la collaborazione dinamica nel corso del tempo tra gli sviluppatori sulla codebase e la necessità di evitare i costi di [software erosion](http://blog.heroku.com/archives/2011/6/28/the_new_heroku_4_erosion_resistance_explicit_contracts/). La nostra motivazione è di far crescere la consapevolezza intorno ad alcuni problemi sistemici che abbiamo scoperto nello sviluppo di applicazioni moderne, cercando di fornire un vocabolario condiviso per la discussione di tali problemi. Oltre, ovviamente, a offrire delle soluzioni concettuali a queste situazioni (senza però tralasciare il fattore tecnologia). Questo format si rifà ai libri di Martin Fowler *[Patterns of Enterprise Application Architecture](http://books.google.com/books/about/Patterns_of_enterprise_application_archi.html?id=FyWZt5DdvFkC)* e *[Refactoring](http://books.google.com/books/about/Refactoring.html?id=1MsETFPD3I0C)*. content/ko/admin-processes.md0000644000175000056700000000521315232661434015013 0ustar0000000000000000## XII. Admin 프로세스 ### admin/maintenance 작업ì�„ ì�¼íšŒì„± 프로세스로 실행 [프로세스 í�¬ë©”ì�´ì…˜](./concurrency)ì�€ 애플리케ì�´ì…˜ì�˜ ì�¼ë°˜ì �ì�¸ 기능들(예: Web requestì�˜ 처리)ì�„ 처리하기 위한 프로세스들ì�˜ ì§‘í•© 입니다. ì�´ì™€ëŠ” 별ë�„로, 개발ìž�들ì�€ 종종 ì�¼íšŒì„± 관리나 유지 보수 작업ì�´ 필요합니다. ê·¸ 예는 아래와 같습니다. * ë�°ì�´í„°ë² ì�´ìФ 마ì�´ê·¸ë ˆì�´ì…˜ì�„ 실행합니다. (예: Djangoì—�서 `manage.py migrate`, Railì—�서 `rake db:migrate`) * ìž„ì�˜ì�˜ 코드를 실행하거나 ë�¼ì�´ë¸Œ ë�°ì�´í„°ë² ì�´ìФì—�서 앱ì�˜ 모ë�¸ì�„ 조사하기 위해 콘솔([REPL](http://en.wikipedia.org/wiki/Read-eval-print_loop) Shell로ë�„ 알려져 있는)ì�„ 실행합니다. 대부분ì�˜ 언어ì—�서는 ì�¸í„°í”„리터를 아무런 ì�¸ìž� ì—†ì�´ 실행하거나(예: python, perl) 별ë�„ì�˜ 명령어로 실행(예: rubyì�˜ irb, railsì�˜ rails console)í•  수 있는 REPL를 제공합니다. * 애플리케ì�´ì…˜ 저장소ì—� 커밋ë�œ ì�¼íšŒì„± 스í�¬ë¦½íЏì�˜ 실행 (예: php scripts/fix_bad_records.php) ì�¼íšŒì„± admin 프로세스는 애플리케ì�´ì…˜ì�˜ ì�¼ë°˜ì �ì�¸ [오래 실행ë�˜ëŠ” 프로세스](./processes)들과 ë�™ì�¼í•œ 환경ì—�서 실행ë�˜ì–´ì•¼ 합니다. ì�¼íšŒì„± admin 프로세스들ì�€ 릴리즈를 기반으로 실행ë�˜ë©°, 해당 릴리즈를 기반으로 ë�Œì•„가는 모든 프로세스처럼 ê°™ì�€ [코드베ì�´ìФ](./codebase)와 [설정](./config)를 사용해야 합니다. admin 코드는 ë�™ê¸°í™” 문제를 피하기 위해 애플리케ì�´ì…˜ 코드와 함께 ë°°í�¬ë�˜ì–´ì•¼ 합니다. 모든 프로세스 타입들ì—�는 ë�™ì�¼í•œ [종ì†�성 분리](./dependencies) 기술ì�´ 사용ë�˜ì–´ì•¼ 합니다. 예를 들어, 루비 웹 프로세스가 `bundle exec thin start` 명령어를 사용한다면, ë�°ì�´í„°ë² ì�´ìФ 마ì�´ê·¸ë ˆì�´ì…˜ì�€ `bundle exec rake db:migrate`를 사용해야합니다. 마찬가지로, virtualenv를 사용하는 파ì�´ì�¬ 프로그램ì�€ tornado 웹 서버와 모든 `manage.py` admin 프로세스가 ê°™ì�€ virtualenvì—�서ì�˜ `bin/python`ì�„ 사용해야 합니다. Twelve-Factor는 별ë�„ì�˜ 설치나 구성없ì�´ REPL shellì�„ 제공하는 언어를 강하게 선호합니다. ì�´ëŸ¬í•œ ì �ì�€ ì�¼íšŒì„± 스í�¬ë¦½íŠ¸ë¥¼ 실행하기 쉽게 만들어주기 때문입니다. 로컬 ë°°í�¬ì—�서, 개발ìž�는 앱ì�„ ì²´í�¬ì•„웃한 디렉토리ì—�서 ì�¼íšŒì„± admin 프로세스를 shell 명령어로 바로 실행시킵니다. production ë°°í�¬ì—�서, 개발ìž�는 ssh나 ë°°í�¬ì�˜ 실행 환경ì—�서 제공하는 다른 ì›�격 명령어 실행 메커니즘ì�„ 사용하여 admin 프로세스를 실행할 수 있습니다.content/ko/toc.md0000644000175000056700000000246115232661434012506 0ustar0000000000000000The Twelve Factors ================== ## [I. 코드베ì�´ìФ](./codebase) ### 버전 관리ë�˜ëŠ” 하나ì�˜ 코드베ì�´ìŠ¤ì™€ 다양한 ë°°í�¬ ## [II. 종ì†�성](./dependencies) ### 명시ì �으로 ì„ ì–¸ë�˜ê³  분리ë�œ 종ì†�성 ## [III. 설정](./config) ### 환경(environment)ì—� 저장ë�œ 설정 ## [IV. 백엔드 서비스](./backing-services) ### 백엔드 서비스를 ì—°ê²°ë�œ 리소스로 취급 ## [V. 빌드, 릴리즈, 실행](./build-release-run) ### 철저하게 분리ë�œ 빌드와 실행 단계 ## [VI. 프로세스](./processes) ### 애플리케ì�´ì…˜ì�„ 하나 혹ì�€ 여러개ì�˜ 무ìƒ�태(stateless) 프로세스로 실행 ## [VII. í�¬íЏ ë°”ì�¸ë”©](./port-binding) ### í�¬íЏ ë°”ì�¸ë”©ì�„ 사용해서 서비스를 공개함 ## [VIII. ë�™ì‹œì„±(Concurrency)](./concurrency) ### 프로세스 모ë�¸ì�„ 사용한 확장 ## [IX. í��기 가능(Disposability)](./disposability) ### 빠른 시작과 그레ì�´ìŠ¤í’€ 셧다운(graceful shutdown)ì�„ 통한 안정성 극대화 ## [X. 개발/프로ë�•션환경 ì�¼ì¹˜](./dev-prod-parity) ### 개발, 스테ì�´ì§•, 프로ë�•ì…˜ 환경ì�„ 최대한 비슷하게 유지 ## [XI. 로그](./logs) ### 로그를 ì�´ë²¤íЏ 스트림으로 취급 ## [XII. Admin 프로세스](./admin-processes) ### admin/maintenance 작업ì�„ ì�¼íšŒì„± 프로세스로 실행 content/pt_br/admin-processes.md0000644000175000056700000000457015232661434015515 0ustar0000000000000000## XII. Processos administrativos ### Rode tarefas de administração/gestão em processos pontuais A [formação de processos](./concurrency) é o conjunto de processos que são usados para fazer as negociações regulares da app como ela é executada (tais como manipulação de requisições web). Separadamente, os desenvolvedores, muitas vezes desejam fazer tarefas pontuais de administração ou manutenção para a app, tais como: * Executar migrações de base de dados (ex: `manage.py migrate` no Django, `rake db:migrate` no Rails). * Executar um console (também conhecido como um [REPL](http://en.wikipedia.org/wiki/Read-eval-print_loop) shell) para rodar código arbitrário ou inspecionar os modelos da app ao vivo no banco de dados. A maioria das linguagens fornece um REPL para rodar o interpretador sem nenhum argumento (ex: `python` or `perl`) ou em alguns casos tem um comando separado (ex: `irb` para Ruby, `rails console` para Rails). * Executar uma vez os scripts comitados no repositório da app (ex: `php scripts/fix_bad_records.php`). Processos administrativos pontuais devem ser executados em um ambiente idêntico, como os [processos regulares de longa execução](./processes) da app. Eles rodam uma [versão](./build-release-run), usando a mesma [base de código](./codebase) e [configuração](./config) como qualquer processo executado com essa versão. Códigos de administração devem ser fornecidos com o código da aplicação para evitar problemas de sincronização. A mesma técnica de [isolamento de dependência](./dependencies) deve ser usada em todos tipos de processos. Por exemplo, se o processo web Ruby usa o comando `bundle exec thin start`, então uma migração de base de dados deve usar `bundle exec rake db:migrate`. Da mesma forma, um programa Python usando Virtualenv deve usar `bin/python` fornecido para executar tanto o servidor web Tornado e qualquer processo `manage.py` de administração. Doze-fatores favorecem fortemente linguagens que fornecem um shell REPL embutido, e que tornam mais fácil executar scripts pontuais. Em um deploy local, desenvolvedores invocam processos administrativos pontuais por um comando shell direto no diretório de checkout da app. Em um deploy de produção, desenvolvedores podem usar ssh ou outro mecanismo de execução de comandos remoto fornecido por aquele ambiente de execução do deploy para executar tal processo. content/uk/codebase.md0000644000175000056700000000710515232661434013474 0ustar0000000000000000## I. Кодова база ### Одна кодова база, що відÑ�лідковуєтьÑ�Ñ� в Ñ�иÑ�темі контролю верÑ�ій та має багато розгортань ЗаÑ�тоÑ�унок дванадцÑ�ти факторів завжди відÑ�лідковуютьÑ�Ñ� в Ñ�иÑ�темі контролю верÑ�ій, такій Ñ�к [Git](http://git-scm.com/), [Mercurial](https://www.mercurial-scm.org/) або [Subversion](http://subversion.apache.org/). КопіÑ� бази даних відÑ�теженнÑ� ревізій називаєтьÑ�Ñ� *репозиторій коду (code repository)*, що чаÑ�то Ñ�корочуєтьÑ�Ñ� до *code repo* або проÑ�то *repo*. *Кодова база* — це один репозиторій (в централізованих Ñ�иÑ�темах контролю верÑ�ій, Ñ�к Subversion), або декілька репозиторіїв, Ñ�кі мають Ñ�пільний початковий комміт (в децентралізованих Ñ�иÑ�темах контролю верÑ�ій, Ñ�к Git). ![Одна кодова база — багатьо розгортань](/images/codebase-deploys.png) Завжди Ñ–Ñ�нує однозначна відповідніÑ�ть між кодовою базою Ñ– заÑ�тоÑ�унком: * За наÑ�вноÑ�ті кількох баз коду, це не заÑ�тоÑ�унок, це — розподілена Ñ�иÑ�тема. Кожен компонент в розподіленій Ñ�иÑ�темі Ñ” заÑ�тоÑ�унком, Ñ– кожен з них може окремо дотримуватиÑ�Ñ� дванадцÑ�ти факторів. * Кілька різних заÑ�тоÑ�унків, що Ñ�пільно викориÑ�товують загальну базу коду, Ñ” порушеннÑ�м дванадцÑ�ти факторів. РішеннÑ�м в даній Ñ�итуації Ñ” виділеннÑ� загального коду в бібліотеки, Ñ�кі можуть бути підключені через [менеджер залежноÑ�тей](./dependencies). ІÑ�нує тільки одна кодова база длÑ� кожного заÑ�тоÑ�унку, але може бути багато розгортань одного Ñ– того Ñ�амого заÑ�тоÑ�унку. *РозгортаннÑ�м (deploy)* Ñ” запущений екземплÑ�Ñ€ заÑ�тоÑ�унку. Це, Ñ�к правило, production-Ñ�айт Ñ– один або більше staging-Ñ�айтів (проміжних розгортань). Крім того, розробник має копію заÑ�тоÑ�унку, запущеного в його локальному Ñ�ередовищі розробки. Кожну з таких копій також можна кваліфікувати Ñ�к розгортаннÑ� (deploy). Кодова база має бути єдина длÑ� вÑ�Ñ–Ñ… розгортань, хоча в кожному розгортанні можуть бути активні різні Ñ—Ñ— верÑ�Ñ–Ñ—. Ð�априклад, розробник може мати деÑ�кі зміни у коді, Ñ�кі ще не додані в staging-розгортаннÑ�; staging-розгортаннÑ� може мати деÑ�кі зміни, Ñ�кі ще не додані в production-розгортаннÑ�. Ð�ле вÑ�Ñ– вони викориÑ�товують одну Ñ– ту Ñ�аму кодову базу, таким чином можна Ñ—Ñ… ідентифікувати Ñ�к різні розгортаннÑ� одного Ñ– того ж заÑ�тоÑ�унку.content/es/logs.md0000644000175000056700000000523715232661434012667 0ustar0000000000000000## XI. Historiales ### Tratar los historiales como una transmisión de eventos Los *historiales* permiten observar el comportamiento de la aplicación durante su ejecución. En entornos basados en servidores es muy común escribir un fichero en disco (un "fichero de histórico") pero este, es tan solo un posible formato de salida. Los historiales son la [transmisión](https://adam.herokuapp.com/past/2011/4/1/logs_are_streams_not_files/) de un conjunto de eventos ordenados y capturados de la salida de todos los procesos en ejecución y de los "backing services". En bruto, los historiales suelen estar en formato texto y tienen un evento por línea (aunque las trazas de excepciones suelen estar en varias líneas). Los historiales no tienen un principio y un final fijo, sino que fluyen continuamente mientras la aplicación está en funcionamiento. **Una aplicación "twelve-factor" nunca se preocupa del direccionamiento o el almacenamiento de sus transmisiones de salida.** No debería intentar escribir o gestionar ficheros de historial. En su lugar, cada proceso en ejecución escribe sus eventos a la `salida estándar` (o `stdout`). Durante el desarrollo, los desarrolladores verán el flujo en su terminal para observar el comportamiento de la aplicación. En despliegues de preproducción y producción, cada transmisión del proceso será capturada por el entorno de ejecución, siendo capturadas junto con todos los otros flujos de la aplicación, y redirigidas a uno o más destinos finales para ser revisadas y archivadas. Estos destinos donde se archivan no son visibles o configurables por la aplicación, se gestionan totalmente por el entorno de ejecución. Las herramientas de código abierto que capturan y almacenan los historiales (como [Logplex](https://github.com/heroku/logplex) y [Fluentd](https://github.com/fluent/fluentd)) se usan con este objetivo. Las transmisiones de eventos para una aplicación pueden ser redirigidas a un fichero u observadas en tiempo real mediante un "tail" en un terminal. Cabe destacar que la transmisión se puede enviar a un sistema de análisis e indexado como [Splunk](http://www.splunk.com/), o a un sistema de almacenamiendo de datos de propósito general como [Hadoop/Hive](http://hive.apache.org/). Estos sistemas se tienen en cuenta por el gran poder y la flexibilidad para inspeccionar el comportamiento de la aplicación a lo largo del tiempo, incluyendo: * Encontrar eventos específicos del pasado. * Gráficas de tendencia a gran escala (como las peticiones por minuto). * Activación de alertas de acuerdo con heurísticas definidas por el usuario (como una alerta cuando la cantidad de errores por minuto sobrepasa un cierto límite). content/fr/who.md0000644000175000056700000000034015232661434012506 0ustar0000000000000000Qui devrait lire ce document ? ============================== Tout développeur qui construit des applications qui fonctionnent en tant que service, ainsi que les personnes qui déploient et gèrent de telles applications. content/pt_br/dependencies.md0000644000175000056700000000573015232661434015046 0ustar0000000000000000## II. Dependências ### Declare e isole explicitamente as dependências A maioria das linguagens de programação oferecem um sistema de pacotes para a distribuição de bibliotecas de apoio, como o [CPAN](http://www.cpan.org/) para Perl ou [Rubygems](http://rubygems.org/) para Ruby. Bibliotecas instaladas por meio de um sistema de pacotes podem ser instaladas em todo o sistema (conhecidas como "site packages") ou com escopo dentro do diretório contendo a aplicação (conhecidas como "vendoring" ou "building"). **Uma aplicação doze-fatores nunca confia na existência implícita de pacotes em todo o sistema.** Ela declara todas as dependências, completa e exatamente, por meio de um manifesto de *declaração de dependência*. Além disso, ela usa uma ferramenta de *isolamento de dependência* durante a execução para garantir que não há dependências implícitas "vazamento" a partir do sistema circundante. A completa e explícita especificação de dependências é aplicada de maneira uniforme tanto para produção quanto para desenvolvimento. Por exemplo, [Bundler](https://bundler.io/) para Ruby oferece o formato de manifesto `Gemfile` para declaração de dependência e `bundle exec` para isolamento das mesmas. Em Python existem duas ferramentas separadas para estas etapas -- [Pip](http://www.pip-installer.org/en/latest/) é utilizado para declaração e [Virtualenv](http://www.virtualenv.org/en/latest/) para isolamento. Mesmo C tem [Autoconf](http://www.gnu.org/s/autoconf/) para declaração de dependência, e vinculação estática pode fornecer o isolamento. Não importa qual o conjunto de ferramentas, declaração de dependência e isolamento devem ser sempre usados juntos -- apenas um ou o outro não é suficiente para satisfazer doze-fatores. Um dos beneficios da declaração de dependência explícita é que simplifica a configuração da aplicação para novos desenvolvedores. O novo desenvolvedor pode verificar a base de código do aplicativo em sua máquina de desenvolvimento, exigindo apenas runtime da linguagem e gerenciador de dependência instalado como pré-requisitos. Eles serão capazes de configurar tudo o que é necessário para rodar o código da aplicação com um determinístico *comando de build*. Por exemplo, o comando de build para Ruby/Bundler é `bundle install`, enquanto que para Clojure/[Leiningen](https://github.com/technomancy/leiningen#readme) é `lein deps`. Aplicações doze-fatores também não contam com a existência implícita de todas as ferramentas do sistema. Exemplos incluem executar algum comando externo como do ImageMagick ou `curl`. Embora possam existir essas ferramentas em muitos ou mesmo na maioria dos sistemas, não há garantia de que eles vão existir em todos os sistemas em que a aplicação pode rodar no futuro, ou se a versão encontrada em um futuro sistema será compatível com a aplicação. Se a aplicação precisa executar alguma ferramenta do sistema, essa ferramenta deve ser vendorizada na aplicação. public/12factor.epub0000644000175000056700000031361415232661434013075 0ustar0000000000000000PK D@oa«,mimetypeapplication/epub+zipPK D@®•âè¦öMETA-INF/container.xml]ŽA‚0E÷œ¢™­�êÎ4wž@PË€�íLC‹ÑÛ[Xâò'ÿý÷ÛË'xñÆ)9& §æÉrïhÔp¿]ë3\ºªµLÙ8Âé¯[hJ扛ä’"0©lG¤ží�²Zkj�®¢�˜óà<¦%í²fïëhòS”�†ã"`ïL�¿5˜½³&—+’ñSìËŒx(.r5È�¢•›¾ûPK D@#¾cl¼Œstylesheet.cssuÏKŽÂ0 à=§ð† RA �E{ .�6NcHbT»�ÑÜ�´ YÅþ?+Nv¸x°è(¡€èòa’….‘\�‚(�z„–ù›Ýªe;ÁD3ô”ª€Nk8­›w0Pï¿åûWß²*ÇW¤øÐÊêS ×Q”ÜԀ㤕Ð/ÖÑÒø_ul1¯]Ì™HaÊʉån:œü>óç}&Åa¡Ÿ2Êt,Ó©Lç2í·JæoÌoÚšQ=K÷PK D@`=X “title_page.xhtmlu�MOƒ@†ïüŠqî0n{4µѤjÓlS="Œ,q „]Kûï]h›xÐÓÎfžwž™hrÜk8pkʺŠQ·\eu^VEŒ[¹ôïp’xÑÍüu&ß× PÖñëíÃêièíÆ3¢¹œÃÛ£|^�Ñ╵Í=Q×uA7ê¶ ¹¡c¢\ë ·9:Ã0Ø-S™ø�¬ÃðœXNs÷ØÒjN¤b�ëûË4³u Ó¦‰èÜô"]V_ ZþŒÑØ“f£˜m�ƒ`O Çhùhiø·¬Cäòt‘}Ôù©W ÈtjÜ’ƒÿÓ+Ñã+œ~[U·˜Lót»²(ÊÊ8h”xÎpMýy‰÷PK D@4Z‹k$ content.opf¥–Ënã †÷} Ävdcœ»•¸ê,*ÍzZÍrDÛ¨6flܤo?˜¸ÆQWKÎùùç"`ÿx®JðΛVÔòqAÀ%­™�ù¾¾<[ø˜>ì¡o$çN÷J³W¶Xh­„N§S(˜ÊºÉQET« ‚NŠãR‹LðæÖõÛ/ÓöׄM.°„Ñ‘§º¦´,F/yeö·‡ �ƒÿ"xÁÄ`4)‰Ì;“AÊeðú{�¦¦Q¤….yúRpðrâå;ž Õuž”²;.þQîR‚¹¬ºF&]'XÇ$&›# ÖÇh,w Žq¶ ¢(&ÏŽÛl[®98m8éc›4’¦.ù’NÃô‰‘ üy.dk÷ºac_M Ieä´6Í‚€ÖRú°De2†ÙÚ£Ïâ_:A¤Èx«”м²yIz† h¸)¶®ih—g‚úCõçRª”h3è0}4ЦCC”)ªÕ%ÿ„ÙE[p®CÚ¶×LÍÏYë cÈë°‹ð\è>ÜÝCõî;'²-ý«lQ†G‹—xæhu-êM߆à[þ6$º…D_CÌ£1y'ö­’ó.\Þ‰Iƒ6‘\½ (�”˜ç_Öך(§×ñ‰½YïúâßbÆ·œñ­f|ëßfÆ·�ñíær�æœs•Ás¥Á‹±½¶£æË‡†?_úPK D@ÓHÛöo) toc.ncx�–]oÛ †ïû+×slœïÈNÕuªT©Û"-›r7a 1š ÆIº__p“µTkcsöy�^'×Dz{¦j.E Ñ ‚€ ")»þ\ß3x½¼J9¾DÅQ4F*êæZW‹0<Šyý8�jþÎg“ÐF†FÂåIÎ0µ3,™Æ@à’¥�êlÑp ‘B3¡SØ(±hÌ£EãO3L2óÉÑ|K‚,Þ΃(ŠqĶÙl;‰!ÿŸ“²J篲¢w#µÔ¸Xổ�Я$Ñ»’­à[SfL]T¹w¢ÚyÀK“ោçâ$T’5×;¥Ñ쨗ëœ�õ�{Üa¢¥7U•„í»VýZ”¼ÿŠ«“ÞLV’ 8Máyb·¯*ðãwE™²¥y~À+ÎþØìÀ®ùå³íÛð­"9-ÔŠ¤P[ÝïÊèÇ\—ÅK}Â3̇ ±_½ZIÚmÎj?T’#?Æ¡Ã8ìÀ8·’² ×=«IòØqä Ž: Æ/¬b‚šû€³º/çÐ�sìpŽ»p¶Å[¾ë‹8òCœ8ˆ“ˆ¿à3&Ì� ~0µç¤9Ç~¬S‡uz™Õ¢6¼ Ÿ€b3çÓ šÞ}4ñ£�9´³´fïWJšzÖýK:õƒœ;�ó.�–R* 2.¬±ö�ù�¢È½ã£N¨ÏÝD¥Lß?öE�{¢¾±£~t¿1÷¯+YãŒ\÷FE‘'«ëH¨ƒ%YT¶+ãK ÂÊÖÓ™�kM¨ƒ7mÌ x�»Þí„<� ¹Ö„:xÓÆžÒZr*ßîGT;k¢û»|PKcˆC@‹ÍsBóL|Rimages/img2.pngì»uP\ÁÓ6Š,°øâ`q îî‚ x°Ü‚»[,$8Á!@Bî w‚»»û· ù½ïû}u«nÕ­ºÿܺU»È™sfzzfºûé§O¤šŠ<&)¦¢‚Œ|ôëD†^AþÙ4 ý…ꨠ燎ûÂÃ¥¦ÃÁ�áe$µ<à÷2PkñÕÝ£«S{Ø@D 1¤˜ >þSpv-^[rÅ,qr©Ìïq–ˆ#Ê&΢a]$‡H ƒ±w™�ñ@’¹‚–X$#É'y0ShS´ÅíR°Ñ7Â=ê :ȯ}¦íÆÚ²½åP_RX:¿?דŒ€}d^šT‘e_ËJd Ÿ€9Ä•â©) O’—@ŒÌ+õØ$�¬¸ñx=BBQ&Y¢Saž@ ÿ¯¹•¤2¿@•›çøø8V .)-ñKâ n*ñç9j/`÷�ço¬!«ˆ`L*i°35ú¡“—#[G ޫͲ’k"¬dÓ?޳‹Ú9¾Ú‘c ©°F ‚Ý "œ"¡ À"Í–äÐð–ç…+Ñy ;Uâæ¤u±Fê6:@E� ¤Æ‹H–<žŒÂzÙæáˆ–¡õ4ž,-ˆ%PÞ¶%u­LÌ"†ÆÆ€ðØ7Nà1­Æ[5Ò@z\ПÈ'-É€ù�Q}êT:Ͼ¸Ú+Ô¶žô…¦ VAfF­�ÚVóX-‘|L¨ íÆ7¢­wu¤ŒÓBHeëi`A܈PIš›’låÚ0óÞl×')ÛAQ’¤¸¸YFtø¸I•°A%šQµ¡’‡Îê Y¼)²nPIbƒu�V;BFí«äåðJVƒWá!`‚]ý ìlcþPAÊuP‘™a�Õ†‘QGÝf_S�—q}ï?�ð(XI~ì†Bø�OÁ$~Ï5ãW¡ªî1lNÙ æ ðÒ~„¾Rž·¶}£OòÐÕg.&ç‰ùÃZáÕ  2}ù2yÒªýFfÒ n×A·¸cŠëÈýòx»€yÜqd‰ä€ª‚gÄÍ0¸W«|äIy°Æœ8ScüVušÔÃW1ù0uÀã(¼ @HÞœ—. ËÛšZŠs™—¼äcÈÄïœ{µ2×àî ¢ÁLý4 w„3ÇïýÞ9ù` e‚¿ü3Ö+Ï86×: ð»Š�ÈW™– ÐÐþ𸔫RÈLD^B¯ž&äÝðÇaH‘ÿãÿGÏô™ÔôjFMÒÃ!šTäà2°“» œ ÁjtïøƒÜ‰·ý·ð ’ÌwœèÜ ª©�Æ*=Þêß&<(-8a[ãSRjÝ/2 v•ü"ÆZ]Žñsd\„[?¨¸ä¶$´wJû‘*ô—�U"| ìËvþ\Whm) {¶¦«5‹E‰%þ¬F¥´eMR¢%©×,}¬7 ËÏQ´?’•Så° ö ¿á2œÒïíú`–ÃGV}ÂÝ0ñéÚ§æ I'œˆ Ñô$õ ãÓú#Ù¯RùéËßí±ˆO+q®òUáÌ<^ÿ.µ]F!Àb÷¿zár:,Ÿâ‡òa¶ýWQšz®Üç³�ÉÞ™U`ú ‹a~;5ˆþå´¬¢±Ûdrë “I;ñOÛé‘ËÅ`.9ë·Ç±ñ>=¿�VùÛ#Yâ¡Úùà °.îQgmQt?F•¥}åb3ˆ_)Bdý•‰ÏM¾,S«Ù"p)ü¢/¿v¦"@â©­²íJwQäcn!D(ÌxŸj=ñõsZðÃøö*3>a #*T_0AB[©ö%3„¶¼¶�‹X Züî´FS�+öˆó#%8¡÷$Vo÷¢æ1 c’®æöM%áÔJ¿iI´ÿüQŠœU:*�àówI°�Ѐ¡qÛe J³¨ ´à`­„Ž/r�¶ôº>¿úÆÍ`�ñÿýÇdÞ@{o®!Í�p…ä„dsÈnÀ×@µ ︞æ#2³ZT×½¿ãjh[Õösï¼.ö ½Ð¦Q’YŠ�´ME\Úa>Û&çÒž:åayÞárOn‰¥y‘ïuwíëšÓ��©­ILš}VY¾„6ÈÛ>¸ŒÉqÞöT€·¢Õ™{írÉ�Ùz/ýJ0F"% €»³u£"÷—+N[å×$Ü²Ü ‹×øy¢«,=;�aÈ X^òµt-ãÁTªtl˜\v%‚”;xÕš=§10%<¤A7–·¼‹¾ƒJÅË ¡ñ(‡©om§›Ã å† }†îs*bW棥:ìì·ã:"n¢ü>—Ž.G¿ˆ¥TÏ{[62½Eú×ûÓúÏ&�¼Îw·’½»É݉I‰w¸’»}¸­x®Üw©Že³¿ñGÁ¬ð‚%XšÝö"HžèǨæÂæDæ4æ‚«N=À_s)BéU™lÀ[Ý·Zê…úµŽ9ƒiüƒ'Å…T_pR9Lƒ> 8}!á³ýT·ü�¥‘S—Ùý|Ú*�ÓL ´±›U¯²shñô`aÁÀm\Û¨}ê»Y?:{£IyÝ:©*ýËTó®8Ê– °xR‰ýRƒ …×&•KÒm=B²|ö[dTよ7Ø&gÔ¡Pr¾JG ñ˜¿ç}nO1f·€…i÷Ý÷25?YÜlÉ/ÐQæ¿›…ëÕ»[�äEê}3 ´**PÍÚÏçÎj²Ù-Œ\KÒ�´×¨³Ÿ«ÿLÈúš–ª^·õÅ`l¾\¹¥Í�¾Ï+¡zÍvQeÜñ¨�Zkœ¾û³uÐÃ_üÞ× [GÐûQb#á°«€yœžšëô)o%\ò<Ô5DÅWõÒ™B„ Oá™g=S]¦÷ýMèg>»Ôéfß�oÓUÖ‰D…͆ ï×#hb9v&ÊN¶óÚ¾ •6LœSÞìÕ«YÜ]Üߤ­ýIa»;ÕdïcXU9’ao´Œ¹¸yL}°!ªKˆ¤ N‘B<1-ä¼ÓE�‡YÄÎ6MåÆF~Ú—oÀ±x míd÷Õ¦‹y›Ú;ÁÂR>ÛÍ2ζ‚û~‹—+$,¤Ïë±Z¡c{ï­eöŽ7r·c3s{�¾u …ü-x™æYÑxüA¯êmBsº„–»€��™y<¿”6¯.éS|ÜŽ*c¸¨‹ [àBZ¡¼júÆô¬øqt\T. Ȟϧ¥ØyÉêñƒwÅ~Ãï8^:ý›"-hœ|Ä[ì�¾itíQæh=Ë'fˆÖØÂ˜jU~-ϘüùÈÚÖq± "VV7|P3Ÿ, –.U¼¿n$XB5�È0¼”ÄæÝ‘¾*{MǬRhÛ1Ö{Vþ•ZM A�„öþa3Ct¥jΗä˜QÐ0ïÜÐh;ÍõÃëçMZ×Kí)ºÃý†ƒÔ‹ù‰xFh±µ‰?Ò¡x/Pw"¦V[�Òvñ…–qÈ×ðÝ 䥛�0©‰Lö¥?‘Ap‘Ø OÞ‰ýP—§ºS@ÏÆd˽¢ñóFÎ"-Àjè2VfüJYRW0V`陇XBð¨Z‚ßÚÏ%PÒBNÃâ”°%àd‚Hø! ¤E²Zú£Ä.!>_”Ï™�ßÒ˜|MmIï1¨—Ï_bž~‡þlâ°+D!c¾hM>¦*p#¶±Þ}£ÿ'w‘,Ù{Zær{4œFêú%”�°Ó\}sãÃ`V¿¿<Á®tõÑì j2„*DdçSHÂü˜Úo+íNßlÒrYgC ,ÿ²Ö8‘æ’*¥L -dèxŒWš¹�¤@WÆ×>tyâyˆ2 p|Ô=áµxÜÆr, tÐuç¥m*ΡU ?¶Ág«Æ¤2vV9Á w è¡Ã€ž;,D°=Þ‹blí¥)­˜‰µ6Îh`0óå×­~+‡‚–ûÍ ¦‘>h†|mìíO^1Ài²YU¨'IæAmÑÜ019ží}ó;ÍëŸ#¸#ÂýÚ{ØÞZ]š^¾ ‹gGÈ—�ha~aŠ?VºDÂRâ’Û›©áïÃäÖÖÖ“Sð@¶îMb²\üC(ö"ɱ¦µ¨!·óŒN‡!^yúûÆ%—ãþƒ�òdí;û+‹¿6�r:I…FA~�³Î³/!Pïåy{ÔÝÏT˜Nm–”4Ç>SÅ™bøþ3‰¸_# 5$.#Y�­Éd›Ã¢jGÉ¥uŸ[ >ÒÔvò7†Ýâ�ÍA> nÉhQª‹¸—‘.>®ðÄ�òâfó°„w9N¢ŒÇ¾‰k_Æ’g®ƒŠe³7a»ps tSæš±>¾öÑ5r¤;µõ³ý{Ë­óhªÿJϸÜâ”Yoc"†ÀÍ«¤€×ê8ŒbÐu¹òÓñ ã’­ñ_Üñ*PHTÄ:ãÀ Ž½ÖÒkàéþœð§á<0Î/и4æÞ-ÅB�¬v9%|ß1ÁëÏX êé€KzäÁñ ãÇ^¶g�ÁXBŒŸ¾K«åÔedÁЇ/n±ÐÌ\³÷DÚ}†~¦­îì ïÙ^QCd±>°hËúê SæË½xr{0÷²•õ€ï´àVÔT{rˆA0wµ�4ÊÀå¸öä ôž¤`êüf_…ÞŽBviTFDµCÕÎ’\—ú/[ÿ¸¹;$´°y=Þš:RÈPÿË’¹ ÄÏRÅ Rm"]±äõ’#vQ½ ò…YµÇ$WòKèÆ˜¹PsŽ)â^¥�ر— qxëAq놇OøèÆ‹ `Aàb#NûV{78˜ªœ,¨'Tð€ñŸ1¡n,o_l&GWþºu-ú’¹óJ Ñpd&½Tûú)³S$ót7Èa|ÖÙÕ‡g7ùŠ)¯ŸæÖ„NúãÍ3ÓŒMZ³#!ÄO!m·pç%&ÁûöbáÇÄQ,ܤõG‰üÙƒMoˆ Äu¿Íu$J‚ wóïO/² Ù(µ&σæ›òº�ò†¾ãµ?˜Õ˜ ó¾wg“iPà²ÑÄFÀˆ Z@'G@17L!KbÏF@ÆÀƒ˜"oÌ#Ó«ÌÕÒ`•°tÅ�LÉöZèF‹’˜Þž×´œEWøßÙœŒëf©hñ�¢£õæ›S©ÄÚ ôä¿ ÑȨÈádý}acS ¿ÂGïYzÜŸG�¤5—¿Â¾j–òk.6%5†¤�ò†Ú=Áð„\-ÂV- õ§î3hÜ·ºà±¢¯î¦´ÊÏјsY`é×ça<áZ’÷pñœÌ?J;ÿŠ;.JŒ6y»ÿð]Ð 5Á{+ð‹Ïm[‹½Ù´y4W»ÃǵáýÞqAÏÁ»>a¼�ç—‡KëËQìÕÛ!âžÇæìw™ÞûG®iüçSP`g­»Nî>kú~ösOV±HšSw,ùz¼<ÅѦsþÊéÕ(‰i ăAšŸ4áÝ ‰ÊÊðÙ×óvÿe¶H‹KîU³¬…,´÷K�$M@;N¶zŽägA—÷ÖöPtQÿùFÏLUÑP Ò\*^_g$^ÿ7ÓŽ>ƒ¥PëΠý݃*õÞ¦× t/D‚G[üý]Ƶ¡'8š\x¢ñ°}=Õ¦üÈ|$OÑòöò¨mY¹äxV™çSz³ða+b¿ÿÃ…ƒ"Z”„TÀÙþS¾¼MÖ…Z +ʵòX‹Ë�á:=‚)Êöî–‹£»K-§Æ­)x��8ÿàÝ’a×Hþ‹¦²A¢çº‹$%[£…Þ[|YM.ÿÁv�ULšÍ7Ãeúü£_dÑu,Êö…\ÛP` ºS—õ¾£öç ¦;ÊæR`mOûkBêúë6ŽYBtV3v®®A�J`¨\G‘õ>öÝ ç›óa‡X‘š�>­_Bä6@õ%ç§LИCM[{�Àõ é"“ô:[mkCë‰Ó;¡´G¨H[žÈQrQlãX?½÷´Ol:…in³¹råãÎ à=mG |ìQTᚎ?,™-%MûÏ�ÖQ÷ºŒ’t‘–~qJÀ T¢R;IÓúau!•|Ð*t3î8˜[ ÁíÇWQ´ Æ�Þ�ª4³«Ž¥Z˱}ï¯6 ̺caºÀec ÌIH8¹Ë±Åïnó3‘±Ïp_ª¶(·¨I+œjÊV°;G02&‹N9Oœh—©Ë¬S·§XáÖ¼ÏÉ˃Àp(ÚÍ¿ù†-ÄqƒlÝ”þ�5bgÐ?=ÛUÌ¡]ÝÍÖŒCÓ'G6Ì·CŸx‚mÃQ—VÄ|˜íW¤ÔÌM1¨¢€iìÒnJ„�ï`°ðø^¡wë›a½‡Rùt_–ø‚>Ê›z78ý{ÞÆ´/+‰®D†®ñ/6±a˜Ðòÿ bPÎX6ÑÈÇöéÆö·¢_RÒŠ™´5“r‡Aý¬p,˜ŠÉËØdöR¯æãbyK|:ðCJzÏYxuR÷ÖøÌ\˜úʱ¨míÐmg=;v{ܾ46r„E&VûÞœ¯¶ÊdÚ:ÿ¨±BÈndËõª5ŠB†¤hòJàr�À×îØ½ù’ËÛœ�#uÛY[ùDOF��©°ó½Š ÷#Ú¾…üü‚yσþ꟪÷É9@º¨'f =0 ¹˜8&ü{òÙi¨c³bˆ�v–Ä¥䀯0qŽêщ8A£Ù¤Œn"¹ Yã?¦‰“2nSc¡%RF�¸:£šÌf+fø/Ï&¨:ÝVËä<õò¬,ŠúùZ➀þÇñ'¦%˜ä®Ðfß1u ¬·¡ZáLR üü‚H峡tVš²£�…ó4“g$“èK¾q‰Ëˆ÷bÑ8[˜¡>XžhkY¨‚ vá²è½¥¶b%˃ûÈGܨêûkÔœIÙ¾¦­[í"?è]€‰éø{ÝßÓ±$hüëÁt_ÁÃJÆÁü;WŠ�=¿þ*pAÊ“PFðAÉd¥+F¶L5ê ðc%ˆƒÍ�n…R�¬Z˜ˆ–Ö^ôèG`»‰ûzR«½E¶CÒ¯¶åįsÔ†k´–¡vöC8|ºŸ‘OÆ•{Úö�”ËÈ;Ü(7‘¹qöÉÆ�ÖUU:B“ûò™ä1P¿ºÞغû¹¹¡Ò·ºO#Í–H¨ãDDC‡­êq˜Ëç FÇñC¬7[Eï™ÕÇ•49fqXb‚;¨NÀdTÆRb�}�ÈKI«2`øû8Ö¥ÚñZK„R�Šóy1ŠAnÛSÓ@MÉ\Ø„/ÉJÍñOÙº¦´ qÚÇ…à.®«mR1IQÊØKò�°bNA îâGÔ(æu¹˜;wW—* �MåŸu ®qkÈ]ÏX/…å"’$ä‚C¾¤ ·sƒçÉ@þø¦Íáû¢=)�‡`Lß‚”|jýö;Òœ�HÝíVTµ…T!Å¿x­u] çLlÁá”~SŽ)°Dû»PÉ€Qׇûƒ‡}»9 8gtÝ}ŒM|˜.e~RâRÆ,sõ{l@÷ìŨ!qA'å»Þ·ËöªÀ,þð†rf|¾&µ›6Ž^º'�ݾ³~M?´gþYó¸Z¨=xùAÛê;3�Œ*Í#—´ Ñø1Ê~hlæãÂVŒKáòøB ÝSçÄX rcjâšÈ} Ù]”òkÍq–Þ|Õu–J`?«-rï¶y)0D˜w@¤¨vŸ^¦ݓ⪖¢ÿŒ» t¡œ|ºðºýc©'u:óÁWÏyÖ8õ—½mþ�N£N´P30B¨)'Ù&;&6ÿ–pzŠùp'ŽšOá5Þ#V²Î ŒÝhÐAœz±�—¹yš™ÌýÓ{ 6�à‘tøÁMoR�±ÓôL¹¤n«§ÌTc†¡J<)ñ®ž–­—>ú£ŒL¤ï*ì—à\·¦L5 Ÿì+kK¢Ð'®°m^:JbÈ1q �&½J¢Æ �æòpDóÉA°hUÍЮ<=}u¥xy扛Ç2jà ¾Zøí—µÀö£¹´îÇ-=â¸5™›hWæX´Þ†RjY;U÷(Tÿ©Ðÿ&òë‰íÍ’ø$œ‡2ôR¬V-Í9råÝŸlœ'v´(æqÓ’4ómúôü‰a2™…øÛû"›õ\ÄÇEý³*Ôj ¦»µŠóöI÷ ÆÛZñX¸ðO`ù/мQºdÏ$?ò§ß {9ÄŸ3é1Gv7áØ£V&7ç^E푼zé}2> �Ušï9¸|ê÷åÙ7I©jügìú?ûP¬êæ¹µ÷Q<€Yž,)AOÁ3°"E“h}›Àz@J£¿¼“ãºbôwW˜ó)cKaõÿ!Ü›"¡²o°ìj�Õþ°Þ�r%fÌÐi]o|íäe%´äƒD–�- –G™$5£«<Åú¨yÜ †éÍF±ÅµÉÈ>Y†ØÆÏ\)Á>5‰ú*µ Éý,W_*´WŸŸÄÆS¨ [Ýg?É\Pn^oi¦Ì\¹‰ 'm\kèv7”¦€g�ÞÓšS„¸òÍî/cõtC¸Á}.x«-T¾Tt[&ߦæAÍ*‘£QÓ‡ç\}JyXø1�Ñü:9Œ8Â9ßFµ{hI Ä(+ºÇÒ/Ï1l.‘‚(ã+´}âÆÛŽé“¸•pO#üýÖüãí>auc^ÝOö—a~Ld‹5+¸ìö¥Ñ¦Èó�Q¥<˜ì¨‰ø±O^|l•+M¢í§WÍþ㇠Ø'"‹£ wÁ�‹)®µIsI1"”«5šXg}É.‰ËÙÝQn] Ãjp]¯B³åy?�¼´Ê•Š×;aË)Tç·59¸G7¶ô—"Óõb~rFuýÍÎÙ3ÂßÓ«3´ÕÙ„83hÝŸ7Q¶o8o¡BÞ„oøM”³„ÍÑz·C¾:H„I/ûðã‡é꘧¢[Šc'êyÊdOAÏzÞFzØlô!3°&+;MwïsÍâ ÖïzÛy‹š9ñ²Ó³@žÐCÌå~p!xOO<£‚õË ñ\×;ökÕªD¢ñi��A®ƒ–gUv‹2JKz!�:r̰°p}µ¯u×3Ëj›#w_V;ФÁ�ÜÎsâ8uÚ—K3N“«¤ßñõ´üåvq�”™TLt‚\ãqÇke®ùU¿~9 S�ðì|/xïn.øE½N9bÈ6öèÁê~uH|ó¶ë6™þ÷ž?̺±j®À\„í-8c¿—‚þb ‹(!øI¢|þ1 ôÇuwj¸ÊvzÄQyy{¢ÜÐFìz“†Ûfâ¹Ã3„grAKÎ>”¨›�>5oŽ“��ÅßÍynÓµ‡ XXPþ õ–ýyk6èV»Çwè>t«ÛùeD·ë×µìê2öÞù€Û†;ŸPKÅG3.úœ¯ÌæË1n.j–ìd¨+…Œ®Ûc¿£)DÿVY›9Ðv$álj4ryïý´üõ�  Ëù†NÒâ“@×"QÏ7ÿ�,‘¡y&™åödÅA ràóĉ÷ (µ± /!2ÙøÀ<^…PûglŒé•WªÀÉÈZŠqÀ1’9‰9î*¼�zc±èj¾8¼3’+O¬Û{¦hEC ܘr<áäï?=&mÆŠÔ3f´·Pì§+݆‹ó@�ùû†kü®úhÎUÃa!…7PÄ/ëöëwÚŸQ̈ÜJ®P>xÔá›6LI©w¿ø QÏ›Ä�kdᄬPõSyKŸ‡2e5 t2À‘I\ú¥G«‹ ­c$NÄxP%q–d°]ÝîZ)òóˆdSzÐG+íÑÑæŸË=wzV¸†M™™$Ÿ ˆ9Vp�†ú(x»ÁÒ’MËÔj®°l„AÈfyè-f%y¹¶”,CB];EO‚®÷ÎPN0¿aÊÇÚ&Ì9*%º ù³èwó…Ÿ�iš5½J‚ávܯÛ@v¡ûŽAÏ̆ð‹–öE©<\Šè¯Uoû€ÿ¦;ÞŽ3eJ cû»R[�М§s%£Ë`û(NßFP†øH@ã7jP²d½ÈqæF1ük‰A,óDzfeçÈâZ»½øŠw“»‡§�##+qÙÒ|2 Ë° Ñ.¥Q‹úQÈø?&F ð…KÁ‡|Xœ ï{ö_¼v”qôñ7OΣH!²;%jVØžUÒ�c•ÝHYl‹;™l[ÿ/ÛK'×XÃÕ|"S¶e$�‹U¦\!ÿ< Œ%)´®õÁÎí…q:�Ç ÙÂyÇ”ÒgOÔK�Äð>ä°5¨&pk+€!9÷24'OäÑŸÝ\õîÍŠKÔ$dAŒÉ5d‡˜¨¸î½¾£Þ“�"´°½Òwh²Øoº0rÀkªh¾î…%çæÃìÿ¾¢¡©'%©\2ZYÄ@‹ÑD–Pb³�Qàûcidl6^c—ÆwÛ:ëþ ž‹�(}PÀgZÞx¬ôcPìæSÖÃíÁØŸãƒ]Å·Ýj¢ ªÙo‘™|ñ’4Ð^›92Üïw§–B�ý®,HòÉ#À·éJfÏÆ>´ƒ"Ì1#Uy[“w�}CIP[Æþ'‰žŠBé3äˆöv{l{òÁî¿hôÿÁŠ[Ãr-.ÝäîŸ2„Ý'Þ.ŒªŠÛ©ïñ¸ü¦K¡í-‹ÿ­~{Váö&Ð×%ýÙY_»w�Í$›Ë¤¡»§�÷ÙöZ¨`¾5ywX;¹ {óå›R•Kû>rP·A¡šbÝÇ•œÂH¨DÁP“…Ö.A‹ŒêñÇ3¸9(“¼qó(ˆße]¹"3�Èë¾ÑóD$ËˈÖ: +–ÜÆÈc É¥ŸwÒƒËz„–Ûïö’tO¿Î9¿îöøO?ôŒôâ4{—×ðáeß燖9MÃ÷Óö²!?–þ`©~âhSNÆ ãë3púE`ôI÷1MSÞöþwÝ|\ÈýÝMZiy}¯0íî§|æÁ²#Ý¿÷JÛ�¨ '£äæõ±oÉa�"¿YFG17)Žý»“6„Aµ—Ybs/¬š]ÖiÛÏÒöé.)¥Ã±Î0ˆs+šÎSÓ’ð»þfÖ-…‘õm�—ö;u“[ 4æ�*E誘^V¶œT©f‰­'iª�”?så#øç¾Uñ/)ã�>òÍìc‰ˆ¾Ü³®ßçÚ~�°L#Ö§MpsëUkóLµÝŽèŸÝ_ž¾7ï¹=M:Œ;£+t¿·WýK³¬CWð,ºj�:ñšSymèH³yíg§Fý¡F‰w¤ly)œ’¯Ïfº2¿î¨‹¬¬þË­íeå ,?s=H‰ô¾fæ§ÍÞ{#ï¡Ýš?oj¿ˆÑRX‚F¯ÙÇ“šõQg„¸áN•¾É”ì�)Ò˜ d_¦�š’fÕ?ÝßÈxÞš°Õ."Œ~3•v¸ Båk²-0jÖ1òüu8lß»SѲ¿5‹MJ%&(?ùUo{®ÄSÇõáîÂûÌéu…Û΄=Aõ-בE!+Ê=8{ˆÜ±>óÀo÷§NÅH‘zn#ÿTÔ%¥YZÜ?ªŠ‚²Ðé�ÿÚ²lözM‘ÀÝ$²ïOÇõk9¦"Ë`> �Õ¹X±«4e¼_®"%Êž8ݶ£³ŸºîwS>\Ês{ŸÛªºµ£2Ð&ì"°,á/õÄÓ`P3O‡®½@¾»>;QûÄ||fÖÖÊ¬Ë /,?cÐá½û½»q×´»�U¸|e•KM€ðÅk÷ÆrQ¯ó:¬Ím:¤îhîÐì@ÈmÛ<•ßaÿåo·­‘_+m¼¡W'Þ;øÊ…dœoB.ŒsœVº>ÛÍT“¬çH¢ ‘òÞ+‰_oæ6ýº2ZqÙ8ã_ðù‘£K´®ú“Ï¡îÒôªR<ÅÈ«xºÞ­ô¢Ð´ëŠF×wš0vŸ “rß·”:,4çt?7\r"-tÅÈ«0@8ûò žC*û¯{Ö¥º;Aoi³a›Öv‘_XFVàþ�yšÉ�L· ½ëŠØPœöÂïÞçÓVséÒ­T:ñLÑœ‹—ÚÓ>-7sѼ³¯ÄEáÅÚ. »©ž¤9�Swí±ö (ÃkA$k¬ý��G…Â-µ©�>ÖÏA�žtï�A:²²/Ì:+Ñ�~“ãNÀmžng+‰–ޱ?úÄ@…}ÈЀ Ø},§IHæ§ðȬôrS ÍTÛþë,YB y ÔÒ½h(¯ÒýX ŠõF[ã’ï©ÿåâY`šyÒNÏÖ%Þ¾–À�{˜âï§òqSSUÐ{¯+àÆÙg?¶‹®”‘[-¸ô­ {6ºx¾y¯€%]y1QULññÎ"5À0h\ó=åM†(ñ½±m·ætîí ÆÈ/ÈŒdO(ŒýFæ~`)â¨þ5£‘ýLõ!а™uÖ^ýo*ìà††ˆjxÂŽ›–» u²“x§ØRé«2®?Yÿ,^Z6z8’¿k~­…B]QßíH4Ǫ_]Ë: ò8þÍ̤ø<8òCÔc›…"Y =ÿ „h®Ã¾éì•!ÈÌÔÎC\3ëü‚ÃÙc¢7ö¦Áå™H�ß�—ËÅœûLÑ-ÀƒÿaLSI“›Ÿ(°F×`½ú‚�˜3?3çªBrwZ(Îûú�cñ.jâŸd£-;¶ù�P?’ˆð×r»*ü'«¿ûüNÒ]“Òè&–�Ð ?Aí*sO¸fV\'i´�± ê.„SÏNÜT{ÇpÖÉ3ºA89ûÅûb¿j¾»ìÉö×#_x¬tÅ„é{¸Kú °x†Y‡®‘‚Bël'%Hþ@JúGxT¨l.YS~|â˜ô;É�^ë^ #+ÿž¦Y$ż7ë¥Po¹Ô½�ƒif9[Ò ÈºPêZ+´*´Ó“9RÎ s•xðÁ¨]—pÌÄãuN¦ ¸[BÙ¹ëP¯Û„ù’„Ãh��ÿâAµ¸"j–AYÇ3ÉÁЛ)ª|<š±�—¯¸°ºÞó„µ8;’�×›“†=%&ñ“`Î;ÌʽǨ‰’+«ò Ö' *P¼ë ú|ï—…ôÜâñ<;ÓCϳ²ÉL|3.ÖŽ|K?Dç÷6&�‚wÒšõ_jõ|*%{ ¹ÔŸ+;HG0zÐ!i x•žû&€ºNZŠ]5èÐ_ø�Ù+N;çß˸«X¨´—V¢õw%¢¾OU×�P3`ÍØê�å‰6úÞJ +„'Hf<³6 e»å±À^\ÂÔ`í7ØÐæ?‘—»*w…Ðo.«QBý/?*%áN›Ì•°þoZEû�Þgúýë+±Ï¯¾!—{á籆8°Ç•®Di]9kßÚb…°_¬¢ë /w¶ O|9¶Ú#–^šN™9¾ÜñfÔ“ÿ\‡=dä‡r©1ó[àáÊRvzýœ�PÔ\ßÓ»kpW‰,q¿ŸdýçcKøIá≋Š�'Jœüçå–p—z—rÈ­uDfH^©þõ;>äÜÜ �Šeï]Õá‚ÝÃ�­ H–Vk¶ùš£²K�$T�\w±ïíà/Ý$ynݱCZ)Їìy�±°3ZIœ8áµiIr¯ÏvÒæ›¼ÓÄ|¯?M”é§Á*—k òõo¡ÿÀ úè^ôÁJS¡7Îu9û.éqˆ÷fØKM}»œT)ÞbË£Ó#ë;M™††E{¾;ú0s¶Y[³·P,È1(þÐx! t¬¥Ü8ÔH¸UgÛÀƒ•¸îtÀñ¹“„„­�ˆ/à¹bo ƒkxûà®I’•@2GÉq{‘Î|¤#6°„6Á.î^Æ2¥‰Æ/MF ^®Oè;ðþ°ìG£.­�9Â~óU4Óáþ+¦ÙáóFn»~¹hŽ�Lïríßî@å ¡ñY¿›=Kh°;1æù¾‹5/¡]–W�ð™Šå½í6¦ âù1«w�„òܬØDõIœËM''Ûs¤ŒÑ,ÏN :`_nœØöu•ÐÕoÀû½¿åM篹Ý÷ ø—È£÷pÊ©•‰ÍïM%=�ûZð>¬×«·Ç�ò*u1JÒ¸™\Ÿn­w‘9`Ð;\ü™ÍU~ôEtl¡ 0phÈs) *бfªiñE�ÔYÐ\ˆÖ¡«ÇN:v)¯¸ž¥¼Vª‹Qí>¨ùþz§¿ùÆùÞ¾#1‘Ñl¥ÛrÝw‘“�¿êíÐxG6�ïbÕ¨ 7npHãþ1y3»Oœç 1õy_ø‚…@”-;½\x¬:œhÊïîzºèö5ÐñeŽ|EÛ3^ü6 {ƒ[CÒéГ¶…Š#@ ,Ð�‹a6@äTîsþk ø¼Œ«ÜO‘$�‹@š²òW=W΀4]z1‚æ]ß݆ºœ†ß¶dßï”ûç¬ÖI[cEÙ/‹rc�s1(‰µ:Ù‚“î6]ÊX–jýh‰2[áQÆ.É^‡Ê{ &Dù¿?=nÍ"8® A�¬uÒàÉÑ‘TÒ�ƒ“X9×#%Ò)P 2±Dµ8‘¨ÀÁZ ¯ÌO•ƒ`}.…i\M¿'‚EÀWÌO“äÙF2µ`hTw&=•eƒ¡þ -H;ôÉ�@fÒÓËþ”ŽAAj+‘zÊwþG´'æ‹$È„5FªáýÞ;ÆéZv…‚¤ç;+•Ź '¡žÕ"Ë|rW–©vžN+{WŸo¹®òôÖ-šîÎg,7‡rÖNVëcåwÕÒÐÌÿZc Ö2˜§3œ�¥~š¡!r‚½Ù,Y!'ó> ø?­$6dŽÙ[óM z-~M)m(”§ƒ*Û¿øm§휻}`Tþ{ӽ酂W«‰ýÿØ|½ÜØÂ,¿¿Ž5½/ØêhÕíc”ÕÒÛQ-gk�Š˜¥R0õßšñ[p›4¤˜1jòò4UYе*ô æ´gûo(ÚµÿX-ð¹‹EÓóyžF÷æö÷yÏÂîÔ†’c•»`l1…o®ˆŸ»èÒ*ƒÌV':ó�±Îh-s)äsáú {,­È:¬÷}δ\jÍw˜,Ì4V ÍþnÖ�JdäÑfª™Ê©<¿£)ÅçÙ­ãjœ×”\®ÖRÒò_¤¤ršuí*C<ŽæüîÿöFZv|lÊüW'^SÐe·M²Ž’-|³ûÃÆÑ°Ò<ò1Çÿá~½¤´ü Uب¸÷‡Û«mbØÓëGÝ”ü:ƾ?¯îü ¸Ñܾv yf�V|´6„•eœ˜N;Dáÿ�}8ï?EàV2©<Öoÿ»L �ßj ]fŠÂj´ ðÜÂgݺ¹Ü(fNjúâÕyù jN/ªþ:™‹û‡Uk™]æÜ&?C•6MÊËœƒ ñ¾F¼÷üùÞ̤φðÂƈ4¶hRe T§¶zÅ]Œ¡„1ÐM<¬^ºù_,à8³©*~7ÆRå~0¿Þ‰§zÚn3ñµX3unüädP¼"ž‚H–Ïö·ù\½éqîS±ø\t�Æx™ª”5?ÜßX^¯EV}[I.i”¡" ½\MTmÌôݳ1þ3Õ¡¼‚[ýUË,黳##ìP,—é/ikkÏ^Ì{WXeÖ-¡+w„a6m!ÒO�ª¾¯Œ<׈è �üïÜT7ü†€ÓáËÍk5)‘¬W?íçþvôP"â×ãë¤5�—\ñ.g¨7y�õmç61½¢ {ߨ‘ܽÂ2ýóÝxïNæš�¾1wÌ‹©J�u»3æ²CÀ;¿D4ãÂw=­*ÃXÖ—çÝX�ëþìôT™ðYç/c!õÆ«õ´y„ëP"#ÝÜSñû£8ËóÝéĮ̀ª‰iYW²¸`Ê�¬z§;“ƒÒÇËQì©z?,=—à‘=ü â\E'1Hyzïöaeä•áäì5»µÑñwÇØÓ,þ|ôÜ8†PIàG~ëO³7°õ*€‰fàÁ`òQ×ä×&.ñ?5ã«õ®[ËœKõí·W'M?Ñ Fcˆ9Ûw ŠÍ':ÍTÛq÷q;¯*°÷ße«¯°ŸA�Ò_ýl÷ÑeB¬? ØšN5~¸í¼êh`Sìîè*Ÿ;úrÕŠˆM\B^ñmMGC¬òo¥E?zëOÍÌ?üóf½l–¤)¶½h±ê½hùÏI½ÜØ^[ä«á¨— ÅnÏ„n#÷Ão3 Jñpxˆ`vø]4€ä™ÑQ w Òì�M•á ~†þjáú<ê¼6HÊ�|бÓÊ1Ç=(b…ÆäÃVe±ÛCéŽBFò´�þt�¯Á©•Qg‡¥'�ÖUjz•¬ž�á>RU¼Ð�£‹Ý"ôhzó¥%�‹]»¤XaÚkÃJôÉ´k ˜Ê *&Dß+r)¸‘Îv\òY5󨳉ÂÛ7øýa­ñhXª› Ô[îì@þ%þœIÜ8óJ|ãÕ`Yk–ßµµN¾#Â,½å|£g[R±¤lú ¬Ÿ»§)>oÆINXºôdÞû@/Ù'ŽßpÅò-Sst�àt%êªãþ…Î_víЉÚgz,£ê䓘)G™wÔÚç9LMd=—´W÷Õ™÷kÏäô@z†$²=’à*é Õ¶Ó#–1eƒM!—;ž½ILô¿:Pn©Ï;‰œ­ á"ý-ß!­û ¼þ™²ûmNn©"~çêÒ‰#_»=¶à{aè€ØOÀò @rˆ²÷Ý-� øQ›Ó‰$Oˆ”6¾–Ñ™eH’À…¿‚ÆFMÛʇdkr:Ò?cx-êAð-|¡êÏa«siNâ�šiÊWÓòo{ÙjŽÖÎsV\X¨ßË»ôG´`¸pɉñ ÞŸþ&ó�¦š¿–>�u¿t—JrÉþç¯ã*E%¾cXÕ0Ã;V) ^N³¦©÷à ézKð¿ÅÿØÏ0=Ó�ê^£*K¾ãçHÓ²)'fx×ËÎ$|ÑØvŠSÈèHº¢¦À­0K>~q[ )¾¤&ÜM©º,ÿЕõÓ C¨uåjð@R?ÂàÌ¿š0èïG´úó$1k¡›Ñ=Äp6S’$û¼‚—A]Þˆ�à`|„„ÊÇ ÇhÂʱÕbñk·CƒÓº”í1fñE@7MÊ IG\êx-ëÂ¥ +]öá±§ç@©ËO×òJfT>Ε‹*ÈÅ‹ÚO¾z{ÅÑãCœß"mà*ц¶‚uµ«ÈµžÁß·öÜp(¹P¥H_û¿ Éû l5Fõ8¦@ žZ‡°ðô¸zž6XëÐIéñ×Ã.|߈¢|Ë›râ•hDnÞ'‡1�ð+�ù‘n¡keØöØHdïv×S Põhz¹cù¢ôàQ ÚJë�‚ñ¨ÛŽÖZÙb‘#UC]�-”q1eŸ8 ´—¢-èÈ[Í&²Þ(É$‹¿!J%×� x¾Ô"Ï*SM-² {~ÔyBþ¢¸ø 0Ý¿2wQ…4å�žÓ{dssz œ•Ÿ=Öë#pp¸„°Z€ú)Ò¼×ÅŒê°ÑÞ(Á‰O,ÈO ¯ùÎÃ;eD`s0VEÍ%¾åê}*®}„› }"@×í˜‘Ž¡‘ñm ühÐDáÅÚûÝrÂßéõ†%`hðU%=¾0¿ü2 î]Cœ½•Q/rÊÿ¸®¸È뚦éœXiø4H›Ô+Ñt2Õ U [¿@f"{ÝËòˆÎUä"â¬[^ï–o?xƒ§ãû„Ú™P7혾+0=E¿ÿyIôIƒ¸I¥HY¥'m¼�e!ùœÆŸª ÐpD鹯k�ŠqÈ\³Ïܰ»Û©²ø˜âM}âÇñ†¯¶$?¯T¦Nâ+ª¹Žã «›~Ž<§!®Ø›ÒPx1i´©/�ÉÊW‚9 ³Ù~JMHþ.¤—v ³P¹7»æ|��™˜(à‰¿œ€<Ð¥ŒUÑ *AÊ€í7,´dIg“U–ˆ‡ˆCv²ÌÕÒ>©�f3J ÅáîreµAœ Ѓq‚–¹°!¦½­\£,Q=Œ›[½ÑnVl’vŽã8÷éé!ì¡ï1ot{InîòPÝ�‚‰÷+4:$ýáÌéB®&%q5#x¹¤OÕö¿÷xs™Ó‡Œ¦SÙ^P+Œ°{wêKvI:@ïá‰øC­­™àÚCY‚±úâðhF uXt—í®Cå/\²¡o�6d b¹çRÅdˆDzeWpb ÅÓtr§¿pƒµ«1®#z¿ñlÍÜ5RvTPötœk V~ªHN+wDµ²Òà»nÀ©݃ÊÇÕ ¸) °Åz*Ò—ü®]bíXÉê…É›XG¯ùÿúø‘¼R}àÞ¨%Jç¨äšæ |~~¦¿DIô<؉Ea°€üâŸb\=COÖB¤¾fÞ7ƒlòt»Zµ,êmg¾�U^ï" O~¿'ð{�¢è8§ÀÐ[ÞŒç½Ó¥2ÞäÒHF� ŽmN\(ˆµ*£¬G'¿›ŽÏooÊ]wÿˆ{´òí¯¢0–iåUN®þö˜ÕŸ€’ÔÀÄÁñ:¹ ª´±Ù¬t³„èä4Õ¥Ó Ýâñ’%kêÛÁ:ÑçK­è÷)÷¡îh·tbqìoÈ=rÞ,¢Oôe—î¨ÃÅ Þ°+mLUKoÌÞMÏ4žVzµˆñïqÎÚŒ®ýðZí/!?h™/ðÃ7ÏÑÜàßs“Ÿì¦@™+Ž¥Ø>%B_E7”+áÊÙÙÙ¬8™±ð�è-SÇ~ã]£Üܰ[zöVᢇÒèžËwG2“¿“•ˆ­÷ŽWÁ@î²0ëÁåÒødæˆ7DP´ïúSs «/8þÁ”[Íßõ¿Ç 8ö;[?ýÎÁú ÛB#îæ³a®�uå1nzŠ2NBú67�Þ…ðéöGUõxB÷²«GØ7'ýî@úÝ6M~òw¢RxÈ.v•2°ùî. Ÿ.‡¹u í›�t^¨j<š Ÿ–âÝÕ!sý)ñß![&töâUò—/]ô³�4.®×VFØvp*é¿!ÿ€ì€¼  9bËŸÌ6Âñ¡ N)m„p=h:ä;›¯F_Rô-T™ÊDº}*ð�`6Ž<œû)䯎Ûý ¤£“§Ö¶#/§è&C8}ˇ&xžÌ„TÙ2èÃÕ(ºoCfCx®|y>pÌw¡K‡p¢]n>…“¿å̃ ˜g9(-˜Âã�ÞÛ~«–àZÕ¹´Z¨Öä›oÛåD@D dÀñ =^›~ã4J380*5¨;¤JYõKÊ” RpÚæïè §ë¶–i—Ôì�ô”]HPÊ&"P4|`„E¬‡ðÉC¾ŠIÆ *Ýé©ÒGXý�2! ;¤2(5SD@*�€ R¥�°ú'" eB@©Lªœ›‰Eês¸P áÿ]äêHüZCÜ·9Ô±¤â†v¿á90 øµ«Ær! ƒT.#U¦íĨš~�ßü eÚ�È› Žç¡oAè—£›à7únÿœ(Ç>¨Í& ƒT`À*Þ\|AéW»5‚°dO€wF­³?¬dŽàØóø:äÊ’i•RRd�Jj8*«1ø%\=â»àè^ã»|½ _Êi_àIÿHÈó�M���!|�iÂ!îæ? ñ@¶@fØLŸ™çëYÖ_ çØtëC·ärÈË`�3!|ÕP’ƒ®>ä*ÈrÈ6È{�Ñ�ÆnFÄY7ëû ²ò d¤ª.ùÜcF9IÿËaÜ—í¾ÿ1|²N8Æ!Ô3/óµòÃöØ0ÜóÖŒý4n¡ß@2Õµ'1Z $àDÑûìÄ  çN²S ö]d7ÛsÍÑ1�FÊæ±>ך¤ÉÏwžÙ|/0Ü�ŽÎ¦YÿF§¾—Žw6Íõ¿„>øþ5þªwóØðè½öÁ¿"Mæå»Ý¸‡¼pùl[]ÇÚzƒþ“NZb{r¿¾~NÚ¾Î=> ÷¼õ߯ÿ—N›Û¼»}U8Þ×ã‚\ˆtRÅû¤²ã�‹Ï]ÎèûŽÞ½0¾‰<߀Yæäž&?ߨͼ-!|ùfˆ-ï„¿é ÃÔsšèD–÷ï›—FïPHSÈ£¾~±Sç…¾Žùï†4‚p« {üH¿ÌÕŽî8„ùÂÒ:º¥Ùä³õ}§<$UŸ_йFç!«§÷'çÏX9qf¨•;ÒóÚ¿M�6ŒqÛ«°®Þ9¢A'B¡Î\|æ; #l=ŽŽÆSýéNÚÜTç˜sltýýŸý¼/;ºÄÝtBæ@\Ý ˆÛzô�çT¢Õ½áëø«»áv¶ ®}¨|î1nØ©ê„Aâ´×?ý´Ïá�iô!|Û8#L÷ÞºîÇm[k厼yí¿ß®ï8m˜oû!_× {èÉÿr[ òó÷åÀÅg­sjiÙ::^›8úæNÚFGo/¢ô=ãà¤ñõ26½…£w�ÇÇÔùyÛ¼©|äýÄ)×–ïú[ý2¹ŽåêùÊ›W!?…¸}•/U[üzu¸yPÇÍ›ö?ïùŽ.ÝTi­Üq|^ûï·«•Ó®un?Îß÷®œYêÕAø†È†®w dNaÑqÍ…ñà"}}è9­F=æ¹îB·zïX.ÆW«¼Ïý çÞ=žCóÛýte}‰cöM—×/*É äMJ³”‰lÞ®°Ï@Çéàã]ÊÈ÷\Ø|ÁlÇ'°^GßáÿƒPÇ îøŸ/¶ç,�ù&t«àgÅe¸\yx ÇvÀ‚„ŒýçÁÈËe·1 —ßê¨>E·ò‚ … À+ʵƈUxF'E]\ ²®‰ ÀÿÜ »A{A³:ngÝþ6¿™¶yh ¬sÓ­ÎõÝíµ9ÆoIÂÌÐý^'H/Ƚw»wöç7�Ðù˜7‡úW!ÿKþ1ý€�ëb\[¢{ÉO¯Ž%fâž×þûUÛŒ& lr³‹3¤8�~ûŽ !/8‰;„§©®§£ïæ„—9áDÅ r°Î-ë«„ÿš^êèºÛ0.â s UVÿM'|”®d_áæ@~9¾çdê`ÃÌ—1ŸÍðp´“ÆÞuð#ûŸ±?¬ÞÍkÃ.«TÜóÞTìþàØ`"_,$KB~!p*ɺ¯Û@À¿ ××à L¿ÍI{Ü ×|ÀIdYß @Ç'â¬ë¶ ø·#ß· -þä$ÈÝë±øÿƒ|M!çAìÿx<#‡øGwœ–:È9ö†ÃæsŽ Ý;Ð6N†?#l/ð=|=ãÔ§s™¸çµÿ~#t³Ê +(Õð‹�Ó 1Èû9€3ŒÆ‚¿ì)ýíyæè¨ÿ0§ndïTù­Îõ‘÷þeØzoµy‘‡?ÀžI“—ÓI}�¼{#>+MÞ/ ïʼp'A8�hësý]ПžM>[ÐG9/êàzQbÌ�FcêÖ}·›Îp ½VîÈ›×þûõrÚðû`ûß3žqe‘8¡ã @ý.Ü—÷1î_XÖÎE‰WÉ�g!¼È¯ƒÜijóÒ‡K\h]½F>Y6ÂiBÞM¼ èæñËâ…öjÈÈvï$¦Cz¦ÈË©/>-÷WËÝ¡AëèæEü{�ÉþÙ”†�kV3!UuÉçcÃ(ëÛ�Ù¿Ï ÏÛ4úpß…$8!œÔF?�›Þy2qÏwÿ¹ÆfÛPclÜþ(\¸ïe)³ÕSvø†È†¦•øôÛ? œŽ{_oÝzï ÊZ¡ ®‡P-—%0åÚÕÛþaKÀµs°ˆ¨¹£þ·Ð¦#!k ‡ �ÞS—Áv*_ZCŠïؼç¸àpÊjŒ_Ñ1¸ 5/x¥1«L›ø\ãtýN¸$‚hc;4„ƈnŒŒQ5}&�AJæ¡Xþ ŒC‘@8Uv^þ‹�}‰Ÿƒ§OóIü~É$´éû~ûx.؇L|•<¨& ƒ¤3¡ ðKx+*àš Ý¥Õž>óH€ën¼]y—–’y©¹ù ºªDÛWj¼bÙ­!ÅrØÕi(=ºC*½1Q‹D@D –d�b9ìê´ˆ€”¤ÒµHD@bI@)–îN‹€ˆ@éøÿ ÑCè… ¤IEND®B`‚PKcˆC@dL–¸n6÷8images/img1.pngm{TT]Ô6 C Ò9ÔC‰´”ÀÐC·ÀH)5t‹  CwwI %¡ˆR‚t Ò¡  ߌ¾ú}ÿZ¿ëЮŽûž³ÏŽçÙ{ßX= rRfR<<^^#ž¦ª’É}ü�…Äót} Qœ1„†nód�3�k¤‰Hž¹]<ÏY˜$‹]0« ®úá®°aC_U/uÛ]U·ù+|¥¾0Ò*’˜ËŸà{¶ç߆dV†²v:êwF>|øp8Òá°Z˜»ìþsXøuÓóÜPPΟ –GòC@7ÒßB· ¨óç‚?t}{d €þ¹Rd÷l�Z†-miDðÿ\r"¿®æü�NêÏðyÌÖ™9È=(¡(‹ªÁ︷”ÓSq9ºöÉÉÅ è¹ð[0ÇavÁÏ]�ýö�þ'ô@Äê5P�ú»üeÝW'´ôÝÿ^éÀm�xÈDíp­Ñ,ó!ÀÅù6ÿyŸèÏ'µŠ™­àûbyôø©ŸŒN„\XËeàŠø7'áË‘ŸƒÇУÿmfH»˜™B§½×Çöz…ëûãû¥{¼0³;r. ivâöƒŠ£®Rg0Z&5Yr~Ò¬ozVs{Fàͬ«äï;ªTŠé)t !÷'ÿê¨ ¨ÅeK\!a=æþOOxX=Q?£±þÕj’dÅŸ˜í›ÿWWÜ¡¡¬9À@†î¿‚Š%°Oiml½ƒþU8ˆÃ–Š/×­öWÛ4|‰0IpN+»g­œ"¶péï³_�ˆF¯ví}%•ŸË‡•¡ G‡Å´Ëã»LVŠoò[©Ýsþ£´çZÅjW’ÒB_Ýc˜],R�©¶«’È£BÔ_œPN(€»ÆÒûÅ}LËû½ZûLX<˜±Ø-êž ~Òõíì”U‹t[¦8<½WiQãtãkÙ½–’ Dìwõf›} kc|~*lT“×J|Z¢žÛ)ÍÚJ@ú%úŸJ”1r£ !íK»b·&®6+ýª²ñEB=si÷„«®¦q‰“/üUÍöo™‚"Eõ‘ Ÿ�ýSú¡×˼§!‡U¯�êQÌw”Ñ(×Uw½úRnú6þÑ\Pƒ4æÏÓYÀ¡½®éçl+/þÙzö<1c÷Lÿ3vA¬©Û;è·²ý=C.À¸7ŸË­þ È$ � Rò.mIˆç¿eÐb?º¨Á~¼Ö#'d›�µ ¤ÖF�vxt‹�€/îôpt¼Z̲”}’L~Ë”ñÒjM±*vú�NjÛºÇyìðœ÷´ˆ»O®§3·É0Ã#�ú@åE¦svVíšøÌ@Ô©á?­û¾!½Ñf¦®Š`Jª+–•Ó»„]õÕâr �ª,ÉfÕßV@öE]¬–Œœ:³øk8(†eiÏ=¦y&ëЬû‡èŒ�p© ³Ÿ­4ã’q#¡¡]8 CìL~Öçhf;˜õLáÏ€‚ûý•èö@ÁŠÛÖÔ/ûe¬­7¶«µ±Vó8Š¢ÑÁ9_�ÞùXíE‚¦º¼(ë»î}‡,;HlvUõ9„Ð~à€Èq&×€T'©öç²ßÛ¥xW¤¦ 7-3')t”¤ú‡ÉRi|Ô,©#ч#ÄJúî5èpˆ÷ým«–)�ÙÔ®Õ <·/Hü*|¬?t¡=W_õJr‡–}±)Èéàë9…/k¶ž·Jðâ÷82¹'R¦n¼0ôzù�—1< U…˜�VãlTéûé)(C�w{¡ŠºRˆFu(ŠŒ/kò`üiøŠ`*ØP°´û¸öðÚf}Éú« Î�qÚ/H¿»&óßôUέÔiàWðÁtþ¼5P‡ªûzÀ`¬¡öˆq¯;.*A±/¦Yi‡rm€’œÂñxçž6ÒÌõ]ôC�7}ÁÆŒÒXR[ÓШTš�ìeü7Ž€-n�-ÑÀ! èÓš `»gMÿâí!|ü‚œn_v È“ú"=#í‘[˜&¬sˆQ}"¬Õáè`Æù %ö&’3 ;‰Äj¹=�‚œUúŠv¨=6b …aq.…ÊzÝ-rÐZÖdW¯¶"9u!Å�T..îÐÀŸ¾ÅYù:Pµnç<Ü»ž„uì¦l ¢œ¬ã ~‚�ÃPôéxç3þ–Ô@kÒåÔ¾!¿ãNQèxC_£� _lèÕú4/™Æ®DMB{Ì–Ã�Ѹ+&2ùš57@å äÕñ®õE™"ÔíEʵÚd3ëîÖ(ÉjÖÿÂ]Pl«kÍÞ/j` )H{ îé‘£êß覧œ²½)#’Ì!'"„·§öŸƒ—Å6ºÖŠG'Ø'ZvMÑݾ,%¦žÍ@V^G‰Ï·zOË?öa¾"¥÷6Hœ�îŽò½çQ®3¦1)µY¥¸�4Êë¤;%= ?Íiú—øLâ`Ž`F¼=²E—ÀTqo’ÎÞŸ>¿”½ ADºw‚¬{Œ1ïù¬Šî Š©À§Äj(߅ݘ�8“د"¹‘x¾~�Ó¨Fç7ï.tRß–5=fé_f€sh‡ß—B¥ƒãïtRI­·P¹¡’ Y^úÓdƒ˜9ìµÒO/=ì®8í­~¬ Äš¢Sw­­Œm×M_tYZ6Á6àø7³ÜXøØÒ'™�NÒ¡%ÀÙ¢»•U[›iÓ?§’%š‡~�GÜPõQßV³hÝc Œ¢.Bmþèu;R®5­1Œˆç”‘~^XIüKòoB©âÆ·ªm¼›^·Ë�ŽÒëÂŒ´Ð ½ênH�šbd2d nS½uŸ\:P=e§O“pG#ÐáQ¢IΚS5¥7òߺd­æN}Qt¬NvÍüë,ÅRß¶�DCU�· áA,aŸz'í×÷!¤ceý µú÷ÓÄ%ÒŽi1‹ÿ«35ŽÃúéOšW¾ÏOôÃ)úðÀé*�Ê-õŠ™æ²úÒ$ø²ºùE¦;j3t !�a�¿l.Õ­mO©¦Ä�°îãub’æˆpj%œ82@.sºˆÿÛ,-jÄ�Smùf?Þ¾l“ºKwYÑ)}‡µ O;æ ñ,šjnJÝGV"¤âjPøMÅôú€A·=h}» Gó °-gàl×|ÛõÙÑ"<Ù˜=¦HãÆ¿ìNJ=`D–ð¶ñ&‰`s–eâÉóWR˜Â]ý]RôM­¹&¬_»ŽÂ§YO³Ž•ùÚˆYW”˜ç|(‚H«#!ç¿4^r1G4Q”Åy¨ÿ‘4:d:k¾œ•jVÌ_®8mã“;Ä€sñG²Ã–©!¤ƒÇbÝEŸ%úÿÁµ'*ÆB"3JÛuö…xËa¯•­ ßž ´…ü?àmM€r"ÝÙ¬´DZT£$óÈ ªUêîy(,Œ@þ·h� ¡l%6 ΰ–?)½‘�áÉ`鸉?†h ð@Us>ô”ÅO^>|³[¨PÖïm²\óÑð½¼gºÊŸmìã2Ú©ùíŽg�™‰Ð´z#Š$ìÊìbǬw¶ekâuŸRĬ⠾Ÿ’ËèŒxS¡Ë|€¹Ýx:9è ·‰›¼râ~†äž²¡sÜ´ï}…‰ÞÅúíâÛ�ŸþeW-ì€mYÇ�`Œ“l&Ú]VžDî—iœCšG4Œ½ãÖ­Œ¸ËW †þ%ü&dq9ÕŽ*~’WNOSÀÎ&6ç'{˱Ù÷wj.AdâW¹ô§Â-XáYSbAÁ¨Ycs†;Æzô ØÀdŸ� Ì ‡ó¦Ú Íäü‚Á}Vyª{Éðe–ì’_»·3Ô–+×%M¯ðªû¶ûÏJ@wT…Ø!ä1Yu Q¥ìEpáG*ÏeóBEgùy÷hýD\ÆO#�¢pǘb‡5Ÿöcš[þËÝN}ô›Š»T'R1Þ<™ƒHãÏ<Í“¿nó?Yþä£-äzÔØeƒ ¥Ê$šg›ÔXS±0ô»b“9ëhûÔDåîÃ&y=®ùèuQèŒ]â�ª;;—Yýáð@?ï™�©r?®Ag¦ØCµKuOŒXIüýY÷dYºé·i­úÝ =M/õu‹ çÏ÷o&¯?P=r*dhrÊa‹8±ÏÁH?ŸmÞßá-ß·Ì‘ˆZ¤ÉŸ<Ôù|þúãä…+Õ›wöÓâyS«\ŸeÇê$@©êî‡?–nB&�¤pU£&Åd®‹ù+:¯Î£¨ÈóA›9°0£Þ ¹o_ôöZÓü†¥W‘–ö«±}ʵ׵õä‰ÃÎ~ø3xVþ4òÃ��À;Öî6û—IW¥DåØNÕä Mæ¦ëLâ"oxˆ £dr·NcNC�†öØÀ8 ƒò‘±»#üÇ�Nÿ]VˆÐ_¦F ư™oÀ.ÁX©vé¾T < a°XöØA/'Ô«úœ�)÷—Ф°Uv²W?дÒ,É¿^�îI×$}$̵ú?}á/yA*ÖóE—¹(õ¨·ªÝò!pÁtuøÐ¢#ü7Ý»@È/ùtÑjuDÙ;Ù°tÉÇp ÿ½^V™à´ÖÅ&<ò‘Ù—Œ2(‚Ô‚ Ï”‚d–ÔídeDò:¢RG_²úÔ5j>.=ëMkX§q&z!—GìˆS’(cõ^µ,=ý÷þDP2†sˆtuk™p—ÀØ¥Û ±÷-)†5#ùœ)¥²¬‚,pph3{t9Q¡Þ_›HŽ“ÔÉJ{¬,T�sêåÆð lWµï,XÙÿŸáB¨89‘”Ô�R¨­Œ˜E“FUkεC‹¹A  ,4¿³|ÁíªŸ¼”F¤Æ´«ÁÏI µ>ÇJ´Õ`�cÝϘV�Èï@�Å/`Hü(Ã9I s4±žDM1Ì QcMO®ÄäÁ<.®ÈoŽ“!©Ñ:KºÕyÏ*-ÚB}V!©®çrÀŒ—í‰D÷u¾vvˆö§­®„q£HKlôÍ£ž])ªRD�íÅÖ"ƒÁ¹vÞwi¿Ãú?n`¯ ZÙ«ìÍÇìC¸‚P =.GÔ>îµXHúdÙtÕÈì2n¥µC³ß�ßòÐ“å   °�È?4K4˜lM9ÜQýT<„Ä%Xšr­]"ïx?c‡ßŠ Š8¡(pÏ ®@<ÄQ飼â–Ý'êAèZ³Â%”æZ’wªÇÐË`Z-˜flÈ@¹c@Ÿ}$Ó=’ Ú!õÞÝÞ¸&qè£QŒÐç܃ý‡×2àxÄjwÏ`;%¬O5Ɦd¿àÃɧªºE6"2p¦y üåûmŸ¯Ù‘ºÁXP 5Ü7ö¾õK÷>þâ•fõý¢Õˆ“©_v,“ÙŒ‚5ƒsÈ8Ÿžj6òk ¦ Ûá9U—&SXãsšãÓÔ‘ðÔ"#ë²^«BqàõÀNΦ\Ø6Ȥõ>4¯ 0­¾ø7„DÁ6‹Áño¾@òåÈ÷–EƒðW>#M'õyÇk°„!Å`êmË @Ýÿš˜øQPñH½ãêð$XïàÈ%?D«êÛ[W ò˜§¦5CB]ÝJk Ò!®.´òs ½ú–ã¾é”+½Žû ¯Hâ¥wÇ}—ŸNædôËOƹ0·§Ó Ýi¬”ư1’ (Ý�¼^ÚÉHT˜”¥!ÿf•è’¨ùÓ\q¿„X�BõA¦…/¬N Ø´ªètùuëÑ£e÷Ù‹dƒ§f¦-)2ùEZÁ?§o�Ýk­qŒòtÅZÕ]#�|­Wõ9*Ÿ£ùí¦:¥ ¦ÍsÞÏ·5H‘îlk½ü0 a×›½mìJ¬Î6H9ù)àilÏu9+´–¼Ä:—Iž^Ñ7�þIª¼egHI4~§åtœ!¹é-bG#×ã“_ÒIbÒ~®éµŠgoØ©iã,E‚ú¨�©M7uVESµÀ[Mõÿ|‡/o'ÉÓbí&8‹3‚¡Ä¢`׫‰j¯2e‡jÝY\F°ûŽa¶¹0:¿cmš²Ù!&ô¬Aý]ÍÿIKjV(E-úѦ!ñ@ò=�Òש8ÂÕK³öð”vlˆ�×{×\B Á°¬}±< ž$’x#Uù5ü\Òz"ËðCFnªjfeøx{,1K„I\¿”ѹÝU“H>»ËSö�/»\?•�5C÷"N^žÆ"å·YUØ:¶¤Ü+f?¡W¿U$:S/Ù êXs¶Š_8RÎðwüôôÿò§¬D­†G¼åDz¢_�ù>"è]Ð4Yxѯ‡'¾$žœ«öÊù t,�Mï‰ËFÏŸú̈:ö VêS“4ùO�w,z\S‰Îï%M‚s`.$Ó­„Ûœðjö+ø² ’*à g7G]†7X›aädfŸ¥t–ÑŸß�9ÓլǮ˜éEyžöP!)îCÐå‡2EFÛ<( ›‡‹C­»ó“Ú0=‡‚€èõÚ°’15bùÒÚ#þ=ˇ¢Ç]s«Æ€(¡à“IÀüiÆHÞ'FKc“·¾xÁè¸ L9Ÿ´Q9ˆù&³–2+0¦Ý]sFu—Ó;dfcVãó*³*Ÿ†£<ºRù´«Ç}@Þ©OÙ’ »‹s»’3§bVíb/¹@Ž\±i]ßü^šÐO µÔ6%¯A dW‹ð"ù^Þ3ÑÖx?ò‹Žˆ›„À¡@à“­®kÊ3Ù%d™)sº®@…D¤åcªDs34ü hlH!Ã]D–I(Ñ�"‹ ‘âx 2Þ†sa>ÀŒ�-µ©3Ã[ µÞZÈP ͤ+õÜϯ{š×ŠÎJZÝØ´ï¾7�‚iå=‚yƆ¦"i,A¬‘v“ã¼íYû(&žß ©âC¹Èˆ™9›Œ<¶!nË“ÀÊÖXr�è%ûXšµV¿ý¼êä OúÙÌ�Ç]6Á,žu¿ãíóÂLêi»‰'oŒéw ¯•Kî] ÎH­4sÀE®jh×y€NšØi“P98^]˜eæ€; Æ’âã§çäS‘ªÀ`ÌP²À“üØ>/¶¿�”’/Ÿà û=ÐPeÃu—¸ko§'KÛíJ *r úÿoRà&ÚËú’ _–�5|³÷óÞ­lª"�¢Øˆî3žç“þå¼�cö! sáÏ(¢¡¨ç2"n ¼²$tSº´¤|ú—^'�SÖþ& L¡� CSâ’ˆ)^Ù2|à'69W÷ u‡§Ç?G�,Ò5®õ±µ:ó¸ƒ8*Ž’äÑ ŸZËGûF�ÙŒÒËìÿ098ªŠnË£€¶#õÇMô-z ³¼½P€†v©­/ÍÞ›öl‹¸WrûJ�1ù…z¿Ø!¯ÑÒ|¥äOÉ‚Žd-¦½Ïñ ¶Œ™Ã@OÓ&k0·0~7Í#cC¤E?eîÛ‘óA Æèsòùcó®TÒZ@Q˜)ú7q#Gn8¯$w(Í1WþkúÊMò$�¯ËÀ¯‘+þ\än|áSºÅ¯€CÛ]ŸúÙ´8¹óÿ¼5 ´û0™Æ—Ûô!ýÞûÄ(©'•éŒÃíSÐÊ|˜/IF#YµÌÒW±?òù¹BU ýªú¼’Ûíˆ:-UöØé—Œù ŒD,7x^r÷[�RÀ³ÊŠï™Kî5Ù :ÅnXœœA^nf�“±À ÓÖrr©¾z²ß!Rn~5˪-ƒ°`ÈŒ«X‹Ê9ý¦s"áx7uª�çL±}'½iEZ§þ,}žÝ2¾jX8_¯EÐw«D$¶\_ãìç¥ÉÐëÖTáW�¹°xPÆG~4}v¯àðH¿ˆ{òAÛ[ÎùŽODþ““Îì™ æÝ¤Ý4…¤}ÃÈAíþX”˜ô20ŽÓàq”"Úš§ƒ:1U“¡ÁµuºÖ/m¬¨›·=ú[{ /�™ LZgjßûI¤JÏ"ížfù·¶»'“ΛÁIÚÎwDóA#Ü8�¦la�_í÷ö*”s3Ko —A³_r`÷`Áªò…ð4ͺOéU–—57o…à"‰Pt–’K]*�ï•aî½Šì» “ÊÅ Ö …½fêÙ�IÎ O›ù*A†dû+ î ¼¤ØNUy6yÚj:Šá¡ÞSëÿÔ•õ6²V2ìØ¶Ú_ºzÍ}åÉ.þBV¥Óù2+úXâ–xbzJëöf­ å}F’z¹:nÙg´Ã8&HKQì)èqÅSe3gD´^1ÅÚ®¢þ£¡`¹´¹BnããÍn:¾>‹Âç 0B®Q�yü½Gè�ñ?Å!]ê®\¦%û Zû.ª©.‡ÄƒØ%}�„’$ö^–¸Æ¤W9-��D†�?TÔ�¾¶x qîš/>P2MÏkžàMu2R䉓5ÊéÅN¶WQ_ŸØ+ú*Æu£ÜßiZ|9µéRuO�š~ëÛtc‘%Oæ(Ê9±Yr¢oÝêÓ3¥Ÿ|¼3º¾vÇŸgP 4’(wMXä'õè: Bæ„� x52Ýõ_‚eSVZ««ï1£g³ÎSÇòWEôwƾ5îÌ…¥šÍí¦Ôó¯¦dU:ç>­ yÌÛÿTjd*?mF¹¾>Ø�Ë-~×�+ÙZ§*ËïÔÒžçùÖ"@qåT‘úcª-E&_žúú%›Ã S–ž’òZ�Ó'ž ¨Q�úœD Yò»âÄ!ŒõŸÒ«ê™¦-iD‰YÊ„ÄDÑJá9ãÊ­l.È7äèBMéx»ž&p¡‰žÆwŽDI0|qUº%ny|ZÕj }Y]Ñ�¬y /�W­} FÈ�´Ý$ré–5×Ìm5÷ÜyNäõÕã­”òl�ÉwhÓÿ¼£Àï)7yЫġ $:ï˜#廩RTJ]C+f.¨Ài·cëãÇ`AÌ5ÄF+Ã)EÒágíÓzå¥Áp×õÈR¦��tK ž”Ž@l~( $Ü“a¬~p°‚¼àS–'~–D:RG^˜ù1_«Èçè5™£R+«åÎnæîßþ¶áX5é~î;>øXN"ݱʥ>­šbºü ØUúzj5 ب²«¹fŠ?W"³Jn-î˜(Ú} Ÿ#³JŸ ê�]$­vØÔâ&V×܆×I¿I�•¢Š—ÐÓ¼= ª ëPµ™”UÖNF86½Kߥ— v?Só©P–��Îa5RHº¾ ŒŸew0a8�ýjh[ãD…—ìê ^o¾:dTIÍ ÏÂì°dYQ›f„!¿Hý!Ý ‘ô¾áÿ+¢q:·÷#»kŠfÑNtƵ©òOô,¥ÑfUŸjÌÒߊѽ´H´Õ³'†ÂðÏ�ëiÛƒÏá°±^3¸•Ø~Þ«d×Uñˆî:µÍ”º¾­Ú¿àiÛ%ÛVPÖà«]ÃÝ£$£É‚l½—> jÖpµäâDƒÛ/äBo"îIM iÍÝLÌ7Ôæ‹G8N¯CŒ-Ð&ÒŸÀÕMø>/ ¤r5“ùµg§ýbGS\<ç—þËl@|yÿ î99ù /rÙì—E`#טoö”jªÑËuÒÇ ñ“ÓË´ô2 v©ïi×ÏÀóþÔ.o«Æ×JÃáô‰Qø\1aʆ/.+Ãp!aÅâ¢*©EààÊc¶¦‹=‹&yw)º[tÄDÔ>¶èkKÒNÄÐáóþ¿\¨)Þ‘œûKõƒm·PpÓãõ«%‡H÷É ê!C6ùä$Xk·Y^«WTÙÎDÖ.é—×*÷¡àj5Š1^$“EW“XÚhd’jei%&éÎýÀ1È€±ëßg�ÚÛI£>»0´Øþ1Eõý8“gn[œ­7k>#tþkåâ9© ±ùÐUï&¦‹ï¹ 0¶KRª›í?X½Sì¨ëû±Y®¿èªŠ�‚„ùWî;öíDÈÚjWgUÚ{�›Lƒ E&«ä_Q+ÛŽ'$ð à IR 3Xr‰8&d—ÂOúØè}»Á¬²oF�Vþ½1�ÌxâÜSGùÿ2t'‰Ìëa]§­4¾þFSmWÄä–É�Z&ôk½‹NÕ™å²ü•#øw”ÄÖ”íŠÍZžD'Ÿ{áá1âf¶®�8&¢‡5s˜¾ 2ð õ¡ukÓ…•ÎÛ®Ÿ®Ø!„ĽÉôa}S޽ƒ—ò4FuØp˜òÐ[kµÌÉjþ·² §E=‘‘0fÕ­“RwY|nšGô´ÛâagnÍcÌÑà/£ôÍwðÑ<ÖDŽÛß^(#ŽÀV}܆�—- hÀ„x˜Sf,‰ƒÁÙ‡×^ƒ÷cèÕ.ù)ù ÿÏX¸ü�ØæÜª~6-ËkvÀ¿Ztê;þ»òiFÎñ?¶^EŠƒÂGFù 5Fe?ÁòæŸj¹e×Lvš\™)†>—p;u¨Å¡üb©ÿÁ¿m B€´ÐÇØô?)öÞD»–ôM¼ÙU°G9Ra±üTmÝÎ?Òt¨ æ(é&ç²æ4–8;bƒù›(I+n�n¿ ¸ ÷BÊ©Ÿ ˆîHý>�œH<½øÎ£-)î~µºkä‰Þí;[<ÛK:Å XX)Áb¥¿¶íýUÇd:GÁ…ñ ²îÕz7Ñ!®Ö%Ñkè.LÙïNý&x$ó(ç8ƒ¨mßLúÝ÷Ið;KWLÇME±çÀãbiÌ OyÛ| 5meR¬ýÖŒaét‡N@÷lÂ2d¾F˜�ÙT¿˜žs’™Z– ºëa›½U[jÇ~ÿÕÃø�Ó¦~.ÆCÊ›3ÚzÂ]�LFë>c€SÜ®„³6¡ëUU[öMÌ*¥aN>²·èÔËò0ËP[Ó«:Ø}V!6›«˜±'x€œæébán#Æ4Dé!]‡¸RÒ œëB*Ž[Ãa^þŽpo´ÿλøõ40$øågºßt¥š‹ô�â·G0¸Ï#·sÅO›0{‡²y Þ†,šgS>QV¼DþÇU¦jeçþÙ� £twã3¦é×` ÔK=fÒÌ3Ö´21ºÁ ›ã™/_¨xéåDBŸa7)¡zÜ'=fª‘vl�¦_ñA++°´Z‹ÒÊ)±›$­#ÝÚR-¾•U‡I‚[©øØnk�/8�Ügé q¾—â“^õ~ž²qW[µû¨$>¢•D2¤+ëÀ¥#ƒmó>KFm©i¹„b]¡ož�-ïø¹)ªTš ö\šÚʲ²üç¬ µÑP$‡Ç;? sôÛÒ;»j'à ÚjÂ- ½‚µHÍÛoIÀZÁcÃæ…ÏÍ ƒ¥‹ô7ÍÛâ3knóî Tº_E_nñß™Ë��Rwz£ž”4 ÒÂjØÂûFçóÝ®¹š¦¶’ÂÔuÝÕhÒ:A擌# Ž«êüÕ©žg~÷j²ªóœo.ª�W}s¬Ó«ófª¯ø› ²I}Û…L(Ò©{½_z±¿8*‚‘q8ðby͸“ 'q°œÑWÕV×Ô©çqù„µZ@ Ã1ødú|+öιƒœ6™“½qð\¿Šg]I†ž£¶ìiPH´û*»ž+¾ÿB!s?þE‚é¡ÿº$±|ê\û(TỸp§§”‘ªµe¾ÍNÜþöú‡8 %+ƒ}Þé9¿åC•޼×�‡ ñîÔdwÙþb—š“ë�•äê½^ù…â„…›wÛgrñùS±©BÕàÍ‚Iוµ!¹­õÄ�Ž �&ê�Y¢8ãòÁt|  Õ¢N1ëx&x‚Ä_†jïñ¢åhdD½¿‡ÅVN¨ )‰_æÙ`]†Ÿ½F—êI÷äÕTðÑòÂÉ \8ʤEKq²Bì±^}c¿¤’¬ÒÏ5£[á;{^¥èŸ�Üm,øž=Õcñ‚«pÇ j PàÏ¢"~àt‹·R-@ðsêùkyðrį7J—ô%¸þ PºhusþRÜôaõµðÏÂôLq'+Ðiܪ�ö…<ÃäÛ¡rw ¦l<»DÑp»WF8ËËq�kVnð<+\––5ªµ×ñ@³ôƒGáõºŸ‡è-æ!õš¹á×7pýµfuϲGÞ*™ÓÛ±´µtgÁ~RÁÃ¥wÔ[Qû4îÞܧÒùÊ+áÛ*ÇÅV*MAê2Yv®Ae‡×ê:õÛ‰·JgmWaÁH(k’ÁÛö` ΫuJì¡|�AD)�Ó÷M1» Rºa'޲§Y»oMí’²óÔð%ã�ùBr ±oA»J;ø…€à+&¡„i­âët)`|+/š£.õ Õð=\o)SI%J‚–mä^2kP+„6»†Ú_´³Ä¥ðJ‹¼YÀ߃ªÞ»økø¡¦Ÿšì¶¯Ó´�TÁÝyB"šÔX4æ>®‰Q{gk¶­ ­€ŒfûóG[oá¥rK0÷tp5¨[È¿”OÑó‘Í}û½dÆ$˜Ž.E…ƒ÷yPJÛÍ›ŽñbÆR¤4Ò� b¿„Igš©< ›ßb&ý½3í S ‹”SÀ·A=7y¤�8âh¸§Oœ�"\ë«Zw5 �ÿ)+™l³Án‘ÙÇö— ù {‡ð" ²�³ðÙ‹î«�®�ˆG\-Íž¸O‘vruÌÐp8"Bœ5: *L¿{óñVƒ�4äc7ªXú—FÁŠ�ɼY]],^‘WÇC¤©^ßµ¾ýE—S—"Z'¾a÷¹«%)#�ˆž]¢�ôœn·dJh©ìùi˜]µîóéPƒùèKHÆ6–x¨[G)¶!lز¤ùüšYÓTo ØécÐrÕ‡ðàiátl6¬AÒ2�¶n^3™ž¯Ð3—Eš)»82òñb˜ÎØú1§Ú¸Nj†Þ½Ì•Á;L]ŸÞ¯ï2Nƒö >q_�$ª°¦~Qˆ¸K,Œ]ý Ñÿ~BÌŸ-iVév>|GÀ¿l³gm÷“YT5¹^š•ÓYpÆÅ4êc Xà0xJ@ó”ùQÈ©Í*Ÿwq-¼ :4:q ©K«ÃË/y;ªbx<æQ�©¢ª‹l–zÙ¸ùÓtZâiu¤š�€`±?‹+`�䙓tß¡ò»õ1‰·^‰t¼þ Ap4ï³o<ÈJø÷Ö;Ö×DŸŸî0OksN=¥º§b‡!ä+ pô£I…’Mù„ÙÑL®/=+d·xZ@¿ws}‰úzüúyîH…áêLõB|gÖYÐâÆF¢ÐåˆæùÙ®gn‡ˆo~K¸dY’ø«û˜¿Pò�øñŠ\MÌ�‘£m%›`�ãF§�1*7OîRèòÊk¯W¤Ïý@Š6á!ˆü•[Û\¢·U|�û‹Ü ªá)àì«|moÛæqóç*kˆ[e�Ðù$þ[íqõæ,:U¼é!ÛÒŠñUc,Ä\Íi7c®;½�Ü[¯¹ÅÌúa]ñ‰}Ë´P<6TÆRmËU ŸãheÖx½p˜BCvçD5 TÍÀ\ó�ñt&ÐÓÉ�s?Â~_¬•µðJº~†­8êÍDñËçÓÉ.�·š8Iª3-Ðé±à—ù~7U^­BUv�q£þl|åÁOªþEûã©áûäíˇj‚FÝÊoàR¢r¹äž]¹É[¿d]Âopº3ÞÑMû™¸ê·ñUb1Ö'‘÷Ú‚¹1ý~dP±×›oBÞ?m.žY7<ÃuÊ3¦SŒäÌ2”“…`[Yïk‰ôÚÿ£�jC† „a†µÍ0hPmagsòÅ LV¦:^Kè:»Q’Ί·¡–¨u}.¦ûá#H;º_iÔ)3‡—ÝB4wuÆ‹ÙM{º pi8 ›—[s¬Äû®Š7Hhèr㯦7ÇÏ‘&0iµ-ø¾/•aã§8oö„r#‡·ÿÕ½1Õãý<¢²àX¿hQúàˆiµš‹"÷È?(nXE†«8?W±˜ ^÷Úµä)FÎnmÊ`²Ÿx\éñíLåI¶…ƒìø“� +Ó°QàÕb…N0žLצ\L†›‹¶á7;õyYŸG:¬*Gß`Õ´¡ØQ“ äU'Ýq[±âFuIy‡>ÛJ†I3~1ó�›ÿÝóÕÃÛÙ  ýì‰l47´�Ö‹ªØ9'åÁqƒêË×"u»€izxýj;Û˜È*;ëfÛÕ¸“ºêoÆ7bhŠ0–·}i~mu›#hº1÷aòÓ4{(’ÜÖåqeæ¹²á4òør"¯.Éq‹4"Yk¯U·¨W ú ;﫚ôÆÛp.ö!i¹äÿMÏ·O|:ÐÆ__í¦î).RQäƒF°4n¤öæÍß]GI®Ð²Ò¯ó+ª—Ñ'1Mld-X%Ls®]GËÂn:ÿ¾ú ¸´Êܯvô§ – ظá~×̺Q°4XMøÐSÜø.2ãÉòÖ�mìÊÊxyõ߀¨‘öÙý{¹dn§O×Dÿ|…bR€w$•›œøƒ©u":§Í¸/ZðÌšëRadÂõ¤¿„sWéË÷|ÅßÔZËß^ñÑÅd‘Fþ.ôìB ãCÈt1Á›ö:L'¼âéøê`ÐÉÏÇü‘´—Xé›E¡m)>— "x4UÒ(®ùžX†]îñŒ€ s�ß_ WG¸ŽUïÂrK}.ˆ;Öb®tȵÂÚA¯]#DÛ_ÊPšëjS÷&þ=p=dÿEƒ[v^W†è$$ÝÚ� cišh°Ì[Xe÷ƤƕG4[sî¿g.9Öè/©p²º+þ'º±,S+¶.‘ì …ÓÑŸßû»Éì4Ù/˜S�%±kà?¦|þŒÁŠ˜·ß:}A=&>•g8ò­lêð‹Lø.À‚‡RïšEÝãìyÜÔ< ìøªvƒH÷zoÜe.lö¨ìCü:e³pˆáŽV v“+mõù é¼±·wÝ~I4ÁLQ%%¯÷y¦žák´ �8˜±›ÁÁ²šgéÇŠ¡5ž€LŽÐô’ì¹=Ã=«Ô"… úSáS÷ÖÍÇ>N¥_SZËÆ”“!&ݰVÎÞ5#…"¥ÊI?½ž$jæ9ž9%Ê,ÙÕ01�TªkÑö½µî€+Ýãz”/Î*]íšœ"YaàDuŽæ‚Ô‰:-! Lþ®/rœô¦ú�‰´[ë#XeærÛCÓÛf2ÅP‹ÔÅ;~„廉PÎæpœ 5щ˜EF¼¾°¬à1å™}ÇWúf´8n(3 ÍuŽ¬ÍÆ€.z0+�UõróügV±áZ-¯ŽîèDQêú™íõ'ùX�j­ÌPËžjˆN™€} ˜\Õˆîß~D/ç‚e¬¾¸Ñ_Ä^§ºÅ¤@GEÕ%Ì«m Rqù: vÒ>yåŸãoé?ÝÄñC*Þè‡3‹ÍXƒ«‚¢”ÜtÓÞ'Ù OÚ'uÙw†tÈ©Ÿ«—L$]! ‰ÿ3ELÐ]&dJÿÓlÂKŠ&ZWèÉÉê-A#ÏA’޼"� “xkƒµÊ— [7DZ[åÅ �Úk´åA \ÒœAqUU¼±r¹íÚ8û<؈óï³\{oûwàÑË¿…iÛÿʃô¼ÿ¢ w.VÅÜG¬Ù£ÿ¾L°Æî|¿o]õß067΀7;6žçvét;¤õúÓàÅU•OÓ̽²�iZ]Ɇ¼þã/-¡"‚¨¢v ‡«i't·[Ivå¥YSV`׎ ƺ_ÿ­oŽ“åÃÔ@M±uÁjë¸É•͉Þ×Ï 1¿"‚•ŸàûyN㸋¥æ’Åž6–G‡*TSv’gµ¡¡)"€ºÊ×[rwÊ}¼qS{4KÝÄúÛT`ññEçÔí‚€ü‹ e¨À­Ö•ª¹­žþûV¬‚�°&TµÖÕÿ>áøÿÝó¡ËXcæòoÂ_»r͹ƒÿ¦éIP—Ä?®=tá9ný‰‡ý£©¦§Z¯lö?PKcˆC@æÛŽ ia;cimages/img0.pngŒ»w<Ûßû>Ž�±WljïØ{—¢µWÕ®Ú­ÕZµ{S£Z3Z£j¶”Ø EmEQ36µbÕæ§¯÷÷óÿï�ç#9É9'Ïç}Ý羯û:'ñ†úH‰‰qppHu´ïãààÆÜ]š„À»O6¯toï^ˆ¼µ-_âà�Pÿ»pqrò 88ì8:÷ÕLqwó �\Ý¿bÞÔ"[D÷öðIñu¼§j)¸G‰rìU¢Ò(ææ•¢0{{"-µB$‰B$;ËWû ³~[ Õ#ƒ,rAíå/š/ò>»¿ ¿Ø*S�€Û³C�ðï¨Ç}ÔžP 0>­ e8@ž2ÿ÷–\ÿ”¬!(¿ü¿Žöw�¤ÿe¾úðˈ€¼‡ùå£äÑ{œÇ€A^!œõ+"w©Ë»BÄòRùÃ2]¿E©ðéi)G¦œØùîÒR.Ñpý¨�_âøÖ�³*>#­Ú=ÒÉfC7b« æs¨.ì/wcY^ìP‡J6_´_V%8Àvt¶–ÙPíö>ì}޳è«t دRP!‹„Û#äÁW‘î û�äÎ {Š@˜ÇµÖ\KÓ‚ÇÖÏC®ãçªAŒBFX©ß©ug ļá¾²ŒÌ „duŸy*oÜ 03fÊÞ»'6<¿*Åü’ù©‰.Píª� ~bôrz#}?2¦’¿„Q˜ÜY-ço×NH–„ÿ¦‡&V}Oš×eoù&þûetÚÑ�i´žÙ«Ëûá½ÃÝ�c©œR6›€"æ²#Þ KøÖ—�©ÀÉ /]–Óöž^]Âð:âäȇcU™8®eñ›é?)ðÔVežKy–©ßèhO�¿;e:LÆQ¡ZÈjõ]‡Iw<�çì»Õ[ú´RØ Žz=¨¢\Û¹�Ê^õZŠ\‘V/øB$Yª/ØÆ† ׳%}Þ’þk£rP\‘¼|ˆeï ÝKqlFÿòy{½Ìó6´ê°¢êjƒ%^oP³óåÊ)ëÊ:ûüÈlôò•3•¨è ­øý=« åR&¹‘åÅè •JäbT¨Ö…#Q€  w†pË:F#ì��³)jÏ• O�lu4uZ_ø�ûðBUjoE©Ã÷Ì]%œ[ƒG µÒïèe1‹€Sʲå¤N†ØWë~ mT£ÈVROö+šCòžE­¸ÜhÕÙVº4z/÷ŠO*x#á {á}*x�š„Si•äÏëZƒ8>ÏUm°.päæ.EÍÖТEPþú ÁSqäûÍ�¾Sù›4{„0OˆT€rK�œT”è3B`kB S"jIVL©£ãü"+èÍôÚƒ¿c�«ÁcÂU˜ˆtƒò»µ¶—¡T$Þ^áÄP)S4öª¿7y´ßo�"ª™z&ÈQúJE­]9e¤¿{¶ ̓ Àˆ¥ò4vC)é 9_Òß¼@iaìP<‡\š¬J^Ð3ÇÁø—¤¨%vŸgsÓì¶šï|–uki“?±âñï9^‘¬ÿ±Mp¥ØE˜ ›Q$�´ý¢7oáIá2XÔVcË]· ¿/9ÍgFkºä_‰Ÿ gëéjú=íòªúèA3}�¢­B0wv„”uxY¨††9r X±ùGPS½mÛjJâ2 Ù—xè•ýp±JQ]Ô¬Hogm+ßþ£^s�Œ]ˆ-ˆ50§é�wØzJp;hÞÓ³ÿ7X E)€m,)C´NæF—1†ÀÍÕø•¸““®­Á�\Uc¡£ÀQu¡0áÏÄ”ûìVR¿bí¸ßãt½T a"aÀ6œ 1’x­êÄ2ÏÏŽ¸ôÇÚ·½jŸ/}®ÖªsIŸÓ>mjæšÄåTûÜÒ]ûŽì\Êç@CÞÐDxIQÜÚÑŸUuÏ`I3">{I#KuEœ”õKŠú&vž÷Þ-ÉÊùÞ/`#ò•­ <ùýpcS2À±¨%ýkK‰=y¼ÃeÅ;¤Ó³?Z%rñ@‘ÍΘ݃8wÑv$¿ bÏ*Û^]ç«å{̘G<�Ë?äÀïe~êß„¤ëR�…e 2 ¸=›Ft£‹Ø;|¾æØ¡ º}ÆÔ"±¢¦¦û_¢J”mRTl2êVÂYïŸbdž6À9bcälkÝÚÀNrGzŒÃRåOië9�;ƒ-¨àdµ9éŒUv;Q®Ç·à¼Ó’Uí‘f9tÁ cQ ºªºkoí&sD€Y5Ö]Ö ƒ‡«6�lƒc!-aæ^_d¹ y®h¦± Ògk�k�§»Pa*H¥gýûo <ÖY;„ΑR%z">Œ5° V@4úý²ßKXè±*§¸‰²òÕ�3„d^ü;°™›éa ïþø�ù¦NPv}0U0¥p‹ËCW½@2Eèyóä0Gta�%±VPMàVçJ˜Zäjnê¹ýtõÀɇÓÇJóÕßë~`sXÞã믟æ®Lÿ:ó§@ý¦æ-óÎúºÝ� D ²Mdlˆÿâ‘À#Ú´ù¼0,Y}@Ü 1LL“U<ÙÂû•ùý…ƒ™Vd" ¨³�å•Õ-l•¹®–ÂMFy¡—ì!�)_¦£"¼ŽGfe§àÂðf'z(N«®Í>FÏ“kÄé”QŒí7·¯FŒT䙎NÖñ I2iäËñ´a{möÔˆ¥þ«Ò÷á"Ÿº+4õ–ÙÏùΤ –¦\ôx•³[k÷³S„÷ýÇJ$YšÜ¤móxËÞ¶wö=âjÅzãäýƒz l%dv¥‡m© : ¦'ëøWŒævQÍ(ôA1:�±’à-×Ð$WKxï¶ûH-ø8·gþ{&ÔÒ*°ÔÿÏ£”d«qh„׌ ìöbÅKW½·­GmÎ:FR ;õxÝ<¯Hœ—‚\LȘ¡Ý>Lþà#‹û¦ˆÎÇ´¨ÿiPI´ú…> áÿÃ$ä�aÝTÿ#ÔŠ³bŒ& ,ýÑJQýõ–ɬHR<"Óņÿ ò‘×Á_µÈ˜&Ÿ�²ø”¥Ý¬DÄ[z*pæ3˜Ø°÷F¿Y¹¢)6Y¬5øË§Uä'QÈ-G ÒÄ?«ì•à$‚×3€—/›Õo•·qb�zZß1Ä%¾=¾Üôê\‘ÿŒVqßÔÑ™O+ôžeQWåPëgÕªìwœ`N¿õuü¼>& 6Ì#ô=Ù¢ç|Íejú…7Cˆé7Skœ(¬n}ýMÕiµR¦{{�èIAz‘|Ϙ±ož™†µä» ÙêŠÙª°ù’E‘•Kÿ-áͯº¿:«j(ô›e?n'·”•Ç®g {6Ã@k:‹•f!YÊiO�–ûÔ÷3›ß«m™+�‰rÈ—8©&We1%/#n?[ÏQŸYôͬ L›TˆŒ[„? …i]•¬)Gw¤É$ÚÅ­xøDóɲÒϽ# ǹmF`¹¨«�6 x³AjAº»d�_§L«ËÒ‹<,÷§ÚÇßkĸ§U“òz—Ÿ5â—ç•Ðl°4+‰fOõ­wo]Ò×êocsJÐ6tžÖ7åÅßdõ§r2ʤL V©ÄÏðßYÔ·¿}xDÒYócyÞ³ƒï(·ýŒŸÇ/ãbÉÌ~¾ødË£S’ª\y`û`¼ðü«•Yz*_vaL ˆ àFQ¬Ÿé»Ûª[¶Æ9AÖI‡_Ï4 ’¤ÅÉò#pBúýSI±ih²ÖÛj]ò°Õ¹Åu…¼2 Y¸cogùM²¤ï_‘µâ_WÓ<7 N­�G-þþy„Éß™†n/4~b¢Zßû¶¥qµÌàz߸�ÆIHð·–¬Ö€¸õ¯Åãpb¶˜EK¸àI$œ½Û*õä·Å¥Ð~ÏoÒÙ¢3¦�*©ZË_ÒdÀ)J½�XS”\~­m=nfzô‰Rá$.Ûü å†zyßCÒíà­�¬)¥®dœ:Öª¼c}ø‹÷'.s�ïJ¸ïöŽ(µ:êÜŠÒËPÜ«ÎÛ7­Sûî£UÜÜ-¸C  TŸöÇŠ” énàc¥õ›†ÿ¾a@}Gei…2õF븵çœYѸˆH‘'û™·qÒL7Mü\Õ›ÅP¾Ë+�‹ B­©–òœ’tàæf÷{@ž21¿+HË4 ˜¦Jê�®É�õMFÛóñ {1Ø2Æ/F^�ìFȾ7ùêDrt—ןê�·1W`Èq4Tus­iÿ`n}}¦0¢­ë© ¸ªY2"üpc 6Ðܤû¥b%æ"ÒüCߺ©dµÁ버Q⨫H´Þj yc±á°ñýçxÎ@Ç5ŒÈáœÚÜΙYBÝÇÈÄ(‹ÃvD4J?! ¤³Ö˜ñ™%\“·²d›f€õ2.žÂècO‚¿Äà€ ýæÙüø•Í£3Á•Û�Ɇ _ñY‰è€)+­²”uàÆbýRp�àéjÛBÃTêžÐÛ1•r¨ Ý3< Úm <XÆT ¡B×=â¿k´N!t­•0ß²«_´F³àÔ�Ö áÀzÞÌ— >¾N¹­)­A2žL»ÏñYA­t.¸ål�$   «þM ˜/Öô4ó#ÚH JžàðAi§˜Yê÷,káòòx}øãŸÖ@¡ù^_›GO ÿ8à­îÆP•D¼uƒŽŸ™‰r3¥#ÈX0…5ÌI«?ɺþjµÿh~†‡·ØÄr„Hè¥ûÅXGÌlyš�c œ�I$ f9TcMž¨´§²Ïç„Ùòx¡¡Ë¢‰«U6–ÄIÿD0„ƒªœ’Öˆæï(ñ|½–fZ¥ôGKoM±Ýé_tÞ�UoÐfoæ;;øQ�7ÊÇÇXn¬¦xr¬‘_ ¾ßÍ ÖèæO!þOLã« Y< Ç©pÊ ¬Á„ó…Z˜Hq:@Ü×Mïküû)42ãFÏ|âÁ¾ßœ!ÍäF¬äâŠæ>àßwIà3ØÃôƒŒ2-ëý*®.Œt¦Ì°ÁÓo˜¶ˆœtä¹µI'#5Ðæ»ö 3ÈÈSœÍÞ×{ã4ðp¶5^Y ë¦íeN^º¸<™åð©É„Š”øŸh‡ðbÀ¾)Kû²�=" ›Fñþ¯© ì„~—ýŸºqíV…Ę¿ú®öÿÄ@H ä: >  BØ5š�ò= »(ÿoBZ€äÉOJÐÿëéy þÿ#~Ÿ2³úߨ4y‡\ÐàmÖ3eù+¿A6ì‘cw‰;ÛOG˜ž6ÉÕ@ëñïßé¤ ¨RGLðë+päñ|éviÀ»í_áôV!@žê ¾:c,nrÛ-óÆíÐå†ZU±@ \͙ӷ¬ñ³Yü'x^§_�d0 ÊÞQ<¾ô„jHü툿håžš§í¾®šTn[~CÊ’Å�æèƒE ÷Xø–[?Í·ñÇŸñ¯Vðó,#§2ÝfÕh;bØ%ÿ·xI–ÉË3þÆÔ¿¦TÁ=³ÿ Ò뺃¶Tî×ÏŸÿ¡ÑÜs׬> )ÿŸ0Þ¹„äPyJ ðŠ£RwÍWÉeÚ´ÿM4¥ˆ)rÓ÷{%ùŒÕbwMEÍÏÿM”sç[z/?üøü¯’á¶áT‘•×ëCZ¨ÔßN?c[xBÃu.U@Ô7k{‘)2wáˆz¹ ¢ÅP}¿Pÿ¹l�À‚˜•Jq»•EÞߘï9stpµºYK?z\J{ž~pA«®ˆ�ÎV—#´¢ðÝàA[fŠÿä[6ð±¿`_¢žå˜å¦õѸf|_›E,­6›ðÐi7¥¦lò'QR)ì/Gu”`¢ÎQ¡ëiëì 1×[¾âà¡ñËM7è¨=8sª�|û'tS"7h*¢x÷®õ8"O!Œ©o6�þgËá;ãñ°áü¼þÏ „]†ƒÚÌ ÿl· Žrp=Ä¥˜ÿ(ïྋ!""*)‘ÿ ½ù}ªÎøÅo2Í*PÛÙ»‰Qó7‰á$EÿÕ ¸œ-�‹'–À!{e2ÿ{BÑž¾¥¤ìÝô¯Q¨ÕU9‰.u¥‹<$@ûçPXœš¹ ¿e¥±ÚÄ×Áo-™VÃ&¿Úõ9ÔðŒxtý$"cì ŠÞ‘·�äHNâyj¾_Enéh*D 8ËèÑy)�ŸÇµ�_J2ÓõCñ¤g”\çWíR~tö¶ã�k¶L‚•…ªÂð~<øªw«´7†‘Ä,—rÍgF…GÜŽ`nU+œÆ³åB@Óüõ‰È>Ù=P;÷sÙ^FñqËž¸L²p3.s°Y‘œÀ?…œ`°|KaM2LÀ—A‰ñÝo ¡Yü “,‹ Ægƒ•èHpï-¢Pge¨…¨ŠW$ᤊ�¸+…V‘\ޤzáßhà-AtžÁ=˜I»=1p¡+¥9G¢B†S5¨²¡µ”¢Ý?z_„L�ØþêHšòBúŠ mæÎ#~·0o×>Ïs—¹©º•Þì�8�¤ˆº ¥>üð/‚?µ÷KqÁ0¤Ý ³gÊDÔ�_í„§x�²á5h1Œ*FèÖ‘®By¶Þ¦¨Ÿw„úŠù-ù?¨´»FòË2<^ÿ… ³W MÁ¸d–š  ÐÅiÂÎ-µgÍ ¥óÛ™¶íZ¶øSG"•ó9cΪó*ó)‡†q!q&ŒÝëŸî­fŸè×+ïŠe¶™÷"=Ùg>Ý(/¿%9}ŠûVšôŒe‰†k/;�\ûÂ[ŠðχyïGwmg|¯Haí:‚½Ÿ…§A‘¡°×‡�ûƒl/ý e¤ATáP‡’g,x/.µ±½•Cá�*Ä;xaíÀþK{ÐØóĉ4Pã‚3È,Ã.ó3‘¯MºÛ/^Pw¡�g¤ kíÀwЮ}Ÿ¯�q#Xðš^±á‹�àX¤}•5äŽ1Þ…Nde—?6o”XmC_¡hUm÷ç†|Ò׎)Ý _Q¹>,&09Õ›�s€œ¹'n¸èYóߌãYuKßYàZPøÊiௗ“Y÷m~L¯ÁoE+à=" #jô_N`\½–"‹… Íògl�\FÓ„¿öø­#wLz¨"A¤}0úmVkˆ 4ðˆÞSÿá�|·\nÌÍ ±©ñ°½° .¨j§c3yë4Iè76ý^E®š,�‹àŠE;+„%±v9K˜•V?ú¤×¤—Q[pçq-Ò‘ª©}je•ÕSËo* {X=J6'ÚW8ãÒ\`üÎÉ�æâþŒ˜,Gä´ùÓšÒ�…é#æIv@Ál 걦^Žö×ʰÇégsa­•}LyÅXì kt�Þ|/iñ¥…ë[Ê]Gz‘o7ú{Cþ–«|bЉ,Fªõ]0±{é�’»±/ƽ¯Û‹YªY:Jé´|·^E”77D4·Ç×>lÖþ ±Ð¹ûÐòÍ_÷ÚP‹3i“…æs‹ôÖ1¿YW(çtþÕml ½wðŽVȻғ äëÖTqýÔ‹Ï\).ë«åè™â& ÎfaÉ ” ¦ÑÞ`L1E€¤j% êðp„1Ë1}¡Ùhø‰ƒ;£Þ"ë½æ|‡çŠð„å¼YÆ5ùìpËcxO�#ói™\g+N뙺{.M’•Ȱó¼É"!òÞ;‚O¦GuödVñý'æ¡/ígG@Ãyfëœ(7¾)#ËEY!mÛÓ¹?¶ìí¼!Ó ®\1‘Ô}—”A5=5�)?µHJ2¦p „ZèZÀmÐúªŽŸ¿¼ó­D¦¢:P_í•°TiSüèß,ð‰5®N8P§&Ç<’GÜšò4 Û‚¿¨ªù¹>Ñž™ý)¢xå³þ II9e‰µ]§öÃ"ãÊI êÚ᎙Ô;•¥_{ܨ¿èÀó¸4ë-í)ƒ¡Sõ³\¡Â2£0ê/FÓ›n·™ÅÂgPÉ ›ÜþÅKµ?àëì3»ìnÈ p�Ãdâ¤9?lÁKÐë³ížÚv9ðÇb™ëÜê‘ðGœ’áY�ØQhã›9…ýÏH‹P‘óy�Ë<-¤’%‰Ögº³OMÒwùv]_G’âZˆ›Ù"#Ù&'_ymúâ©'ï÷2õÍ.>(Õ]žaíY­»ü> sGB¤†pˆO8Ï´é™äÞ½ ~³q$Ršú ­ÚZOwG”?ñ§us˜óTs-öž¶\ŸÍnÛ9~©év$hOI1ö,+½/úëÛgF HÒ†ë÷žF*´j›8LÍ;ñ• ÆEøÐ€e~ààŽ¨`&³F×7§x$_ÓQdä6ËÛ¸W¶ÈtÉŽÜ�Ø3•v¨õæÎ J6å>ÜÜgò„hÜ×îC \¸¢#üÔš æUH™»d/(E¢:tº4µ3ÄÒ€¾fÍCš’D´,dë¸ßš+Y³ò ÷pîܪån¬ÏØ—¯÷E~¦ íŠ5ýøBµÐüñ9×ùªvá³ýF—­F/;ÉrûÙ�Eïò¯£½ ‹ÉLTà aÀ/i0•Y…`ô•NÒ‹bE¦%/œ�Poäb~ŠXÏÔ™Þ-Šï,>ñ.˜T3|jpÀ¶wjc�’ëÌEEYÉ&'�+‚#N ÂnˆèOžóÝ(¡“!ѹ§�V`ÓYh±™rÿÆÐÆ“·H”ÇùŽiÓ‹é(�r_^Ìõ—xß_*qávàΕ¦Ú˜ƒ1¯Æ¾VÑÍ(‘â/l™ÓNóÌ N3)°dgÏwz®Ù¼ÂOf@ɱjÔÛ&é°è[*,}Ì1oönì~ÓV’•³2•UéKg+ùåÕSžá£¥¤%#á¢÷eŸcŠ�‡Wb¤yÉ+RªàNE±×Õ s -ÙÔa³›„üô€¤>=¾3õ°mWöÞàÎë!d²�m¢‡´/裗ã9(÷Öª5k"ÉaÖî°EÚú¸¡A^óÙÜ6+ž?®dftü!ZyžÏi÷8WÈb9ôì´“¯¾)Í×�±{Ûš¨wá©¥í…êW3q«|²xƒnT‹y5ŒŠâ*/y9”¸ÍE U¤¢çGâÄ‚ 4ׂ¡(!Ñ#¤®x}£ÅáxAÑcø4’ÖôóÉS6û¹üçGŠòQ‹OŒE¾M¼¥‹pŸX!½JªÖʵ´êä«ÔOL>Üx¢ ¹½�D ú: ­_'Ý\¦hiçK  …)"¯š/*¸�® ¤KŠÒ†°Î?%òyil`‰Ý»÷SüÔ‡Ö±·Þ™Ë‰MµÎÇ¥Y&Û~^Ì•ðª{ô@½Ú�õ?‡Õ�ËîÂò ÉõäÏ'ìü(/,ùUetêãØ»zº[u1<o·hËÃ?ÝPÖ ú¤­þ'·'W¢ì<õÃp¶ÇEðÙ¼Áiô·@u‘�scá9b`Ãv\Yæ‰�îÍ�±F¤Ù½ÓÈ4yöYù™øuVÜ«=£t…æµ@I‚(&°$'àÛ3Hé*þ ™ /:ûä0xÌoòjÝCD @uCd>p&{ãˆÞ‚D‹ú.-‘sÒáOÄÁÜl¹ŸêŒE+r˾Èuñ=×Öë…7½”"ûÞB|4Lu„Nea�€5Ä[p¤è‹¦¨^§í-ÆÃ Â5ÛoFÄ@t°EûZ¹ö~¿+¾§ s0ÏSJ~¾sÌrë[éø»eólOsa2Í�idïs &x ¾×þ¾tW¢\�î=ÐïDDÀþ!-Pÿ•Ä;^‹†ŠHн¾èh™»�î 6ýõ.º Z Zv–,©õ7¸ýä](?[Ùñ¦Ú#d~©ãÙù’Ýq+‹†âßÙ¿z§»(ÿs‰[Ȳ¿glkP§QŒ‰ ^B…dæ[ÑR�‰7"Pâ0q…‰CÞqX#K_Ah _iÜJ!‰·ù…'§\ØþñKý߃½‚ÃÝ™€´­#I—•�·—¿¥{r»Ó(ŒsàÏ·7É¿³âîgÍõA¢A7’FÿÕàݪßH# …þâýÝFØ„ ù=k'½KêÒwF1çÂjc&�¨SRp\h–£¿}×E¢Ué>}vÀÜ;yYSðåÅ×q;K­ŽœXQLYT†lÿ;ò2𻄫I¤Âü<-1 ñì Ör¸/¢ØúO =E,ŒÑ>Á£¬l.wy[Wf4ý6nE-lûGï;ò.ö¹ÄÙQõÛ2DäÊøÔ)SóÇŸMÊ.ˆ–Y%·Ú‡{•4‡N92\×nb¼»,¢ÂáE³·>M»Îù=t·Ãiäf2Z/3 o ‡ÿ†eÔÞÝÒØôi7–ªJ‘ùt3åÔ¶øÎŒO�­©µ4ï ôK«Ž”Þ´ØÙž¼¡™Ml$C….ºv¦Ë2CÆo¶ó¶9GcB»Às±÷þ¨•½©ƒ«DT¡×Ž�¨æè·º,þ¹’%ä‘€)kÜ¿c("@çˆå]j^*çÍJV^>Æ”gª1KSÞ�¿üýß0ËS°ÀTuÀ²cusLrÊñöŽ®E‹§á›§/—f#6»h‘©£Ê³3™x ÏoÉ �F¿&ŽÓ°¾¥ /¹…±¿Åb‡€õEqÞW¦å-MÓ™M°�HfÐoì}û,ŸÍ¼¸øü3oyÚ�àÞçÎð­qÕÀ+©õîŠ/£µ®®cý÷5–‰5O¡x܇üžrNîÄ‚ 7~´ß¨½ $w[Oïýi°Ñã<6“Æ“e°6íI±Ú“³ šZ‘Ž^"í2졤Ñ4K‚{ðYÔÞ¯f]«"Ä ƒ" pÏÖ�’T5÷üè¶4H&Œk󞊵m&ÈFN¤É~|T]‘°odÎH—geÝ…âUu,ª 4 "²oRrÚRÎïUù°êG{™Î:"Œ¿ƃÚôç¯ô+„Ë�Éfv]Ð\¬41±M‡ŸŸ§„¹Õö²{ç½D?·_ÞyÜuEÆK±‚;RwÞÎ=}4v¯ø ÚjÀbkà[¯3<ˆh›y\`M¿,×ð¼7á\‹Òµ9‚Ây BqCÛ›2¤®Ä¬`înÞ �Ø)��á"ã”7>ÈG¬lÃè��gê–íØvæÐë¬tÛ�#ˆ‰ý|­“{MŽ=K‡¬O÷yñ˜êBæM³ÃŒþ¼62*¯màÕ”!·àø@.nÑUDÉ Õ(ɉnEH|É/U Ú swÄœœ<±ÐªÿR<F{«Œ2ûɬéͶFs HŽðÕ�)�³à¿e{Lþ)3_uN>|ÌS½Ää-ë-î#Á'Ã+ á¥ë2æ×ü� böÊÆKþ.‚ †sÃ6ôª ¸æ³‘GÞ!4�A!ƒÈ€�9@©»¹.éqÎ‹ç’•å ØåºçoÕ8k�È4/ ‘½¼Ý¹ÍßåW¸*Ðöÿ|üO’½¹ñè͹™qŒœÇDš+�©¼Àê*@Ã�éË�®ï¶ëÖ_R‰7K<Î%p³<1O/ü¥öV°«; Ïìƒùέ�‘Rè¯Çnbs¹¨UÍ[¾@Á£ÂèªÑ@Wk©wL8 VKWÀ<2ɽø�=µ½œ>1ÍŠâT¼„ËUIò>5&È^ÁôFƒïRÀÚây쵂B2À6ºÅÝŸÜ!v¼ßà 4tælÂä]Wá•>\zß"»÷íû¾ž¼K¯Ýa…ê÷–|ZõP�K 5.©†ozT/æ¾ÆÇŬ`¯²«¶uù¦¹q^ÉÀGy&˜aïÛñ7Û¿S%mý—öXîÇ$?Ú¬tŒ•©,â]e¬ÊI¿¿Ac^`*$€E*µB#E[þÀ‚BµÏä^-‡±v•—Ò~CI·¬PÐcVä…n®?çÐPñoºÛ÷¨øûC!19*š?QÌ€áAO ‚³ÃðrÔJ �7�cj7<) 2q$œG™o¦ÕòücÝ(>i¼CsLy&ÀÍã¡…&¯$cZÜ-Xàm‡ôc†µÜ›”`ÀõkãÛ5KÆF¾ÇøŠ¤¬€>äušÏö#kÿ}RœÆ×7±S/Šôà=F]U®àG.A ‹¿|™Cµ ¼[žBVwxìmößìK\Çm¸„aš¤vüïþÞ§ˆQ“¾‹“¾b˜î‚3¯~+¢O\6éÁr ¯ü«ñ”â%— mv/m]î¿r{«Ï¶“Û/‚Þt)È/è÷'ÔÀ‚ÑÔ–-ØÉz$‹óm6°Îyrê8“©Üš:°4ÒùE ÅpaŽúµH„º)Ó‰dH/òŽ)\M\Ýú~¢œJKšähtPZG r‡V‹Ü¯07_ŠBæ�QµÈX Òðîî>ñ´¯¯äÕm08Š\§lçlÓNáNð:�䨞®2}ŽÐª‘7w«¢ùªLÂÐ÷™¦Õ"Í‚{>¶À€ÈK~«Cõ`³&:9|“�뱆:ĸ§qñ»’ö-ä¼Ö7ߌïͱÁ2ˆ-¨Jõ–ßÚy}+§4ì)Ž/·rtTršj47&*¿¯®¡aP}ßqÀºô2±,³i�¯ZüéŒÅE úì ›,Í Ðººåya$ɻȠèÁTK ]§pÚð}�3B$µ"hÇ �–Aúñçu©Œc»QÇ+Ú)6ÂÊäy!Ÿ1´ñº3Ÿ�ÔZþ;óŒÇª½Ë]²:™Áq3#gÅÀ%+üщž Ø{†Ì³-ðñ¦M^iÄp7CYEÑS#±0âjܼ¦iði�'¾häk$«›oË¡ˆXn$§l¶gä<ÐZI‰„• a)ÁM¤óšÑÚÇ?|EW¬Óy|6‚Ãi_³'ÈM¢øÜ¨lBåÿn°¤⸺JR=øY@ïmrk]®z¡“/ì"˜ÿ% ßMÇbøë€Ù[ÞF‘FH¿¦* óˆ=T–|çÝI7mä,±|à.z¬Ô’b5ËT>²Ç.×X¼�ˆiq÷žs'FÆ¢YÞo“Ø,.{ÝoJ×%¼Á¡÷ÐVU‘Å; <‡ðØ=Œ8EÃí�íå*ÞœÚ÷D÷,{Ù3zË’¶sè+‰1»¾špëß@9&¿°ýÙÑwp†±X6v{5Ÿ g1PLÓ»Û Ç“0#ødSÒ ¾é‡_©€çį뭣5å~¹ÀGÊôõ‹œ]zÐo0§¨Ä±ÄKD "ÑÖ){!ñ7Öî÷{¤˜ oÑëQ>ÉèQ Þ÷§Ïø~»¤+ªEé*‹2’Z¼éöwtx^KDÉ8¾Ûg…F±äpûç%é� !?°3·PQTEa‡Lpœ„¢Ãy°ìK úÓƒ²ŒdÉñ§ÒîOú«[9–¹_ Ý-Z] Õu¶¬òƒžÏþ3°m4Rì&£á³¾n[·/?gGX^Shåvªwòk5dz*ƒ¨7–øŠ´':¦»Öo ŒÕ@O]úýX&V‹ôV†ÖR¼·‚çÜ?»ñ·8lV6R¬=Ÿç~BHMœÿm¨M�ɳÙ)EW*‰‹¾£¸*¨Í�?"�˜—óßê 6¤…5Ø .›áûqÖ75Æ_üa–‘Æ Žü†2W |š…Øæ2扢ßÚK!†/ñÙ~Œ†DY�›u¡丟[ÐU¸™—=²Õ˜—5÷TF'z-äéîßà†4¹:!Š� ²FGeBWÈ…—ï¨ÏT€-áô7i<Ï`/÷ßS'EîúôRHׂ—M—ïy™uaÂK–íûÓí<ÃÁÔR¢w%s-‡ZFDŸGÁû~™Ñ2�<�¨ãøK¾Ná�´pú3\ëw{]áøZKÝðϲLIÖ—°DÂ)Ùú6jº±gàg Í;ý9¾RøÕŒŒÓ³*�W4Rœ­XŸ>¬s¦&b=ä(�Ä&s⾉öïá©.vµôX~j' †mnÇN6¡ðß®³bF0fÿÓy†5—Þ£.è@³ù+ý›eŸGÙb*å^²ë¾ ß‚’æ#öfÒË”à»7™±/×Aµ×$Ë)Á¨_w¾+Jð_±áX—÷è+|©×®­½~¥Ñ�R-=3øøÉ.² =�¡È¼‘ÖYZiníxé:°‚¹ùz‰6¡Qt[ÎSÕÒ~)ax‡‚&}mS¯•fðö5ÃZqÖµìùcÀs¼jauù}Ñ]˜`¬¥ªŠ7Ö&öcü-8\:Zÿ_ö³é• aàQ�¥9xXßL²÷ƒ7p)Æô-ü!_V9’\ngÙB²»äE™r­uc�§\¨7o%SYR ² \*§`TA«fˆÝÝN£ÈìèH†aD9ß›‡°Ëp‰:Uý4÷¢ßZî¬të)ª×B RU?’þ÷ß–ìí�{S=JYXª[[::}è¨)Øô²œË‚È)\²’løÝåäÐWõÏÑã>”É�|?¦‘ ¢M¡_ÐÌQÉóOÛmMg¤X;õ‚&_‡¥o ܽÒz~Ê!ÎÑ1º 1om"&úE‘y}ÊwÒa<% ¯Z| lj��V¿hÔÙÏ­QþVoûÖž{®‚�Mõê¥åcY´ª ÔðEæm‚ÌùÜåu?„õº:B0fúí§=¢ðÌ?"@—_{Qé§ š,wà…דÅèé{ëøª½t¼´®ÿ›¤ë?Dº×*“HsA>ñ’¾ínòöùÚs`>–÷R7ˆùp/q\i,‡È>ž!@’J±!£±�…Í+äD@Æø?]®: ÚÌõŒ¬¢1†èºCt±},lN?hyÝ/$Û9uG sî«eÒ2ôÉžlq5Þ’á…5?sÆpV·,]�–BZ((Ç�ÿ0V]áÂØ©®PŒ€çt)‡Žg‹ðyß"6äå·èÞ¤Öèúsî¼þh.¦Ø˜\|SÌTM2vÚ6Ü£"µt£öúAèöøùÚÔØñ+¤M [uÀŸ4aBEótí‹êŠ7j]$«|Î�Ï{ÑN’�µ[üÌfCüAâ€%ö'´ty òç þÆkfIÝIQµïµª;|4iAº—oñäíƒ Û‡Üà ó) äȬÍ)½Ð{C»ßÝãcHkqk÷ÀcѪ£Õö¦Ï7䎻^”˜À¬t•׎  ¢K  ®Pd*â®’ƒ|jH¿!žI�G: ”Oj%H¬ÁÍ\3uM�›­m”UbX]OÞ! ?AXc… Ç­ÞêéîÉ*OU£„½Ô]ȼ¡ú·2 ÿ­ Ü䈦¦˜¶M툷?:dÇeUŸâ†dÌœ|!!nÿ^ õLÇ9ßIC†M3‘A3H{ß±²Z™Ž Z±�€¤2!Ãüo: pæ<ÔûÍãR �}»WÜÒ._o‚Ó{8‹o êô{¸Ãõm?/å¼�w?½qçkýy Ýhû ó‘1{aøC5)šâ ãzî±,iœO¼U0F˜†%®µ»Ôˆ,£lg;ø+wçgÁÿÔûÕlŒ(Š|ÝÏ‚•£Ky~ˆfË#k˜)ðóIºŒÛ %ª×,?®’¤À˜$Búšˆ³–,>´ÙóZhüí]\Æ omÔÕjù6K =ŠÃdžÚå%ù dAÁ&&Û ¨Üäù,ä›)›w™Ð!¥ƒ˜±¿¿rƒ»KTU0L?e(ÖH×EˆÜ@o\@T…à<Æ÷Ý(Ú¨K's¯ç2郺7Ú±ŸFÕ9Ì=B¢.¡ÚeÍMT1E“?âþâ„ÁˆúˆUÓÍjª�NW�Z\ꩵ÷b:*Ü©2µóTã¿(†A"Üs/¸ |vécú´ùCG1¾¯Ž8Þ(6WRÅ,™è†ƒ‘±³k$ÉõÒX' *°i|à“ýKÌÛ´åçgdØ� mæ-=#îXpÑ.¸µà 2{Mz ³RcÁß>ea ŸðØø0/ Î ùYGƒañ"fÖž—/Ä�ï\¶‡øòÍ)Ütùº¶�‡Áé 9®·ò’̸ñ8ÜռɆ¥>½”Ý©GuP\  ×oIº—Áß«6Ê–÷K»åz•-Ödý þM  �0 šYF¾uâ¬Läþ(/ˆ¬“úxuot÷�¹Lå’6eÙƒ �ëCýŒ2ˆ »…5zFým7˜½vžÀG(P·6o9ÖÉd¾¼² f¾s¯z £(@êê}}ßnq4\âºË0fû%Z¶iëmZ¯åÉùêéSÚAœPl¤Ñi»†MU\ÝßI³Ü%ùb0ø{»ƒvÒ½?¸4‹-õs a¯£¼®Úë'‹™~´rCÒi—3["?BɆÛïXŽ ;Xc¨ðƒ«}4v‹c?‘¿šñ¯|ä±ìŸ%òž¥°¯)ß%šîͽ=ˆ/Ùú/>»§Ã¡`© 'Œ~=ÅáÞ3aXxv­XñÒvŽT"<•¥?4gp¡[2ÄÅ„‘#_�ü··£ ¼+!—-Ë¥mëõ{ æx%ijâC ãl‰zн5óæÍÊ£3g¡Oݪ­FÂsþ�äÓËOivMZ¬s÷Ó â–©Fœ¬Lh’'0ê„·ú„МI&æ�¤. Æ~¡DP2ÕBɽY‘^cñR½ª¿ uŸÖ^Z†Ûÿ>‘�¬Ÿ÷òU Ob{‹ÛAôŠ­\±ßTy„§8UÙL3|zt¼-˸ßBØ¿/×�­O‡°ÌDÚõC´,gßœ@kÌ£dškxC¼–�„š÷Yfþ‚žx@�yž:Ë8Q>I "-ˆ'ýT1‚•4²âÓ5:‹½XP°è¤æâXÆšÕçtì!�qï€>2ï¯tný]©X}Á�)–÷•Œ+ˆ¨$¾ßþþÝΔ°ü ÛLñœãš7<š]°Óé™Ê…dð [_.飉ŒA©ô^om7à̬ˆ/桵çòת‹Ñ]Ãáö ?¼äIÕ³wå@o¬×¨GÑÕ›Ìp|R^¼ÆÅR/õ çA6¦†ö€ -°µÁ|XkmFìEùAH+‚{"Tͨ®+�•CÐÞP*äÚ_Ž32Y¦ªOg!àzÖîª�±(]”O+‰î¥o¦¿eÿƒ•­ÆÌž^%fY¸¯_(�ÃÅ—žpeý ÷^¾«ÀÈK¥j|7íXóíÞï/ÔMÒÆD]X�oȬÕ眤•Ò´SÞ°˜Ýߌžvv2zÝMôÍÚv2ÅT'ã¢�!)w¢a§†­0ÿ{;ûßÝ®úïežô‡äwãŒj²ÇQÖQlú­Àóï}(ŽzþêÄ'rœm® •íÇ_y» ¿ëBbèË·hG?L&GïÞ´sYQòötÂ&0¦®W7€°ì“—äÖ…¯ùD#?´Å'N\Ò—EÈÁ½D¡”K—ûÄ•tßýÝ�êòp{²¬Ð×òÛZw1 Ò²{ñ8!‹êÜ£é²�XX¶I�÷düËür! sÌ¢Ç6…7c€yÝß×µþmNš)\›×jšÅ´Q ’®ðb…—b)oþýmøó¿Üòjâ5°™~ºT5Ñl[06¥y,K¶Ya½…ë˜|ãáÞŠ_Išö¸ Ø{Øvãê:c&µï æÏ’¯·…¿µtl3kI5.Íf¿ƒý5VJ# Žw[›6¬SÇ}/6rYrœ‹Ðkj¼3`UÛŽ­;¤_E؈J)ú¦6 þ|/憀ÉSÞ– æ]øO%V!"*åìv¶ÂaÖ¯Ö7$¥B6@<èñ-zn’ 6¨Wâ P¡)Úé ©:w'ÀѼFÁSµBœ†æ’^犧VyÂå†ö`-ÀŸ G&D+2ySõµ£„ç¿<ãÓ˜Ì~ܺù–ÄtŠ|Þb]%Q´Ë¤ÛÆÅ²!�•ÃŒ^ì¸ÅAQ4-Æ Ûm!x<ÿJˆ}&ðÑíÚ·/¦ ¡ 6.k�]åœOSívžï2OL¦PuP)¨"õA¸É½ñø¼¦¬`X=§IÑ ]ñãëœ>¥ -‹•§}Tºn=ê5FŸËÈ¢ÙƵªi«€’åºÅ1`ÂZvokÚI#~>°_{qz1yw0+5±ŠG{ó?üK¦ZX½Û°k9qùþ‘ÝãˆÀ#�•­æNú¦=zßwUW®r•ÐñV­u±^ÄØûPVã´�¡YË@¿M³y*‰õGœ/~t£Jn´FÆ`ì°É„ß·È�ÖÆX€Ý‚ý¤žtÁ Æ¡á¸ÕÐ@9ÚåÈD�Ð¥(¢túËÕ¥#Œn ?ɯ‡-[B“'3—qÑô-¸(7è^™ë¡ÑóÕ®ÙZ&øŠSö î݇V8ÿFtŽ�Œ±¯b† yÙWo“iAŒ…Ce¢5Uâ®WÁÞSUnüÄ¿ÿâ­§/Ƨ°E£nÞúܲYÅF~à{ ¤ÅAð+ï ö!ø¥‰ó¿8¤Î-€M#Lf7s¹l›CxœÙqÙÙ©{êv³Û¤]·Þ!»Âù’’|7�†²o/$ŒË•¿”ÊëÏÏÆ;[oݽ^Ÿ�ˆ¤ñÉ3ãÞ]{RÄÙ¥µÊvý!,–ó86Û²ña s@¸K"³PJî(˜¯Ðï½Å>ܬ k’÷Ð[ì�uKg¨Y�8Ÿ„”¥Éb¨se7Q]訒QQ=»ºýÔ�‚ãvÞjªpÖ*Ç£AMÀ p+ÔæeÏ gº¾< ‡áû–*´Y^L'/HÑŽµcà?wËü ¸ι¬1íß±Ë}|­Þq¸D•&®WÉêšß¸ëbW‹š¶=÷2ž+óz”.€{xÌÉé-wUÉ»ä]#›óx¤R£ìÙ˜ÙbwûÝ· ±ú•;^¼ÁwóMÛ®à©íúqѵôË(Í¿$åøEU@~З€£óîo þ%|Y¹y‹zƒ„ûŽ¥ç–«”O>ó;è[ËøI$F½À?&§˜‹ ÑB^äšz†°›G|âzóÑÚÞøœ´mkÁz3uá>aÞI;Š‹¤yHã�[ Á*`ŒªDrÉlÇ/±Ö¬’áxgYZvÁ\ÃVó–d‚waÞÏÃ¥ÜS£ÞØ5ùc‡IŒ ÁH>ßи)/¶"¦¡4‹—1E0›Ëúfd~^ùmpõ“ï�«P¼“•'¤ÅX#úòs6ŒyÁL*TâX3óhËÜàQˆàÜ"ì2�ÝÎ÷þ|©hÑ’[{cêmíK ³‚URn§è­��ö×HEÛÂý™�4ÇÆqE4›…ª'‡æ�¾©Yel›Wöò›·¦FÄv` ç Oy%d*“Í„¢/¿›¼ö ¸ ÍÏ{2É€ÔÕ)VêçÿvÂl½õºŒÅx°zD_~³kÎç$(]/Ò\¾Êz*ÓJ‚6¤çœn3ù�ïáŸÛ¸å‚ôíÕçcÂÆ«Ýj>ßY~U†ôTÇÎÏ™·ìr;ô¾¶$b- A\£åÝ®6 ›1éç˜×Ç–¦í³`–W �"ÉÚ(�­€ò>56€Åfß«¾µ»«–|:‚hg![ø¢ö¶º{Ì+?M&S`ùcä} ãôëzãLê*à×à·”kȲÿE{$‚cÚôù0 ÷ÜXg)ªgƒ*¥­ùËàíMÏquò߇4¨ L‰«_@hŸDš§kÞ–åã¶æt™³>�wY ‡RŽÞ/öIÐW‰%Z¿òxöÎ<¥:È©r©ç6äÒæ fi%î¼Й'Mq4¼ŽâQfþ 1Ûò¶ æf§�í’£®âTe,Ï©¥D½½Ýâ,s´f•n×nà¤"Ü·¸—:ËC Ê×0Q}JäË2Ìw¿Íœ]Å‚ûâ^®y3å÷-Òæ¦0ö«’¤Jë!³ C>£FÇž„çV�ÕmM…n¹SŽ’�ÝB–»—±Um1X¥6ö.ÁÀ–@€(ш Ú!0hõ°mÊѳõÉBßõþª5‚ÖLÃ…ó¸Ôí�< 3Ê\>G?µñh†¿ú‚"ö°U»Ÿ Øõ˜W½o)S„ß$@…¬ÇÅ0:KjÆFÐö�‹oØ›¬5mÑí /¨^{‹üéC™DÖ¸ñn‘5  •PQÛªÕˆLBï²"Å J&€MŠ> ‰¸tœA“lÉiß&Øý•ûωTò2’¥Å+:•‚…=nÞ ˜?Ç¥èVBó¹=úµìšÇBEüÞä±�ÿ¶±éðz€E[Áöv߈U# ÞÜJ¯È° }cº(4VN µÿ™sž·s1BA¥R€³­Í¤@ØÛ¹὜ÃY¥ûˆƒ»å9KÞ-ì'ç;nÿòár¿óóvÝ][Y C-­R^CõÁ¬ÄZ…¦*Ê¢÷ô“‰‘MÛ^6JFTÐD•)Fõ9�öxeR)“hkSšÄŠ>êîHš¾oÈ‹gÌÛô ÒždG*oÏ;oÀ�œÊ6ÙÂcÁš{þ¸f Wß“Ü*ý™)êIc/kìO‡fúë8‡%`!´‘±«šÓ²P¬^á©)A)Ý M'dÐ X<†µw^ö9B‘”ª™<¬ê~ézÍñºR«•+Ì?!ï #ZûpZ_½œ�Ö«Äp 蕚´H�Y\�.¦«y·µ‡Dä€ÄÝõt]¹ÄËr«ÓÔÛbN|A^òj‹Fí8ÍT'}X]?h)�³ÊìD¹drpÛwÛ˜f@l© §ï]âäŸ\p"ÙùLX•Z ±a‘ò¡Á.k˜I²KŸº­¶[­’å<ýb‡ÎGÈgEo›P¼Fl¥vYìë.^¼6¨ºI†;ëÔkÅ¿ñ¢3?T%t|ä¤^¹96]m&¯2”Ð^*Òrµ&ÚÚ}d6š¸�«?÷>õ@�ó_GôN)w](mT¶ªYµ¹©ä¥‰õÖ�Öá÷ÙÓÝ®Ò]×+07‹¡®k;¤Í9¨€óÞ.ü¢Œ>¾çnVíÿàh·‡Ü¶¹õÙÞ`šëu˺¦]s% ÝA�¾Õ¥\!íĵ·©M2»ƒ@Ä?$º­h&ðXzÕŽNò‚[�WÏ�K¢˜§TódÖ¥EàG(ùDúuëÄ`.Œp˜΃™éYOœÂZ?È›Çlzùj|L·Ê©’­5¤^¦;õ" ^Q´×½#×ÀO| ØOXFüôG„Ecw7&Ôu`‡¦Ã×ìœÐc¾_7ñ+^IÛ~·ó篘ž¨©† m6WÒï~‘÷qç¼ Ìï|o%ÇÙJ?ªåÜ{b3pÙ÷ǪAù•ŬûéÉ.©Gj/€‘Lœÿ¨&ûÀä9q^>®ßY*U-ó"Cªî‰¶‹þÆ‘¶«ø£ž¤ )jªs[u§Œ{UH­6�,| ÙMZ#!á` #†SÛÖvž¤ïýþÖà4âK¶wˆµN_—¡K'ö‚Ô&Ù3ÂäénqÄÅè·ÔiáñðWëÔƒ…�œ€2úñLñã©•tcô*‰MœŸèöúDN&¨¥è/Rq_Ú‹*æ¥y@�ãŒÄ{wyËÒÚnôþFR¿d^—”åNÆÜ0ŒZI{�á5"ìBºr,%³ÕìüA¯i7±;xÄÂõa©^”�è- hG™x$›² ŸoEí}iÛ™"¿}<˜D­fÏÐ{VTÇGF…ºªü ý²^sØä(4Î0F¤7Œn9ýyÌiØ5:;A"rÌÈ;pã™·õ‡8æclŽ0W}îÇí†ö¹‘MºQD†)ïäO¹=›®gE:ër”™Píaî»ëÑKS÷íº‡å³À[7ˆiúLA#=AÏÌ2¨†ËönÉ×+%{Ïï:5ÄÝU‰Îzâ@ÐÉMXWŠUwíŸÚa í_7˜B; Na®€BzXIÉNC]óº 2þ;÷�}$2ûÇRŠKŸ~Tž¢qj- ÐOá[Ò÷Q'�›ÂçM _§íX(éäpûK¯8Ñ+NïœÅÌZ‰‰u{² ÎÈãË9Öà\½·Û\sÞïgM•JÇa8_ß@Q&‰j„jgöh jXë“Lª“Ýêüš&zéY7 É”·¤>‚Üص‰ö¶ÂWöÙáK �5IÀà “é_„MG¼g²ø¤˜lÌ�ù€Àc©!w+‰‡åÄšº¤¾õ]°¶í8?+÷ÓçÄûo>Üø1NoÓŽ¤ þؽ–{Úä ±¼¼f&1I0¡OË$üÍè–êezx?ë΃ Žáêtïj‚ÿ¨™-*Éè:Ú"$GÓ£)G{©W­·d*ž9�ÈH’þoáTî]&Áóy\öRO„÷5ïx©�ŸP”,!*XÈ¿6m¹pÁ« Âï¶`Øzø¡L²]o¬�Ü·´Ú¡Ùºhfn°0¿êªcÄÎõky3þ0=~�YT• ,£·O¡ÝšÏ²¼yAê¿+„ míÞÝv0h}ò�=StF¨–P¼y�ˆZ„V¸’“o†c­VÞzž¤îµœV=ãfÝâƒÑ€îÞ#ôÕ¦gêÕ2ãîàYÖ†L…þöa ÚOÑ�Õý=ƒ‚S“€Œpª©g“ü·Ê.bhä„–MÝ ÊØ¼m#¥GŸG½9.e£H7䧤é¢jþ•$”o�-žˆúËE@5!vÚ=îÂ{=váS”]g’ÙŠrú!{(רš/zùÚOÌ~%Oô|VÝ‘ÄîjËWþ+ ghj¼B¦$Ò4Ÿ-G–ìŠë@é\Ø…so\¿ù’„b²‘Ly)“¯[›¤ÛßÍEÙ`e�’»ÀÝ\P\Ö:¢ÑwêFû}@5$sFŽW×ײhü:ïÌŽ>K™OýûØKRæûúò ;:*§@eÖ¼” E|jŸ-ì©el1öfI¦M8æ—ש–¥—ÈÆ+÷.ª‰ÀÅ@§A%÷™IÞƒ6èvÝœ×�â=ɯ�%ƒANg—.?Åã¨"°[r„nBaÃYe21ù3.¹µõ§§ õóŒÖí§›K°Ïn€ÚóâLf.“êKæ`ž£½‡ÓÔÿ Ñ™÷êIÉ¿}ë•‹qo%LLÙý�¶ö,æ Pi ¾ 0B–¸êIÈ *MÇ RqÌ]"H¹à1?ýÚ¹_jŸMvºs® ¤¹§öÞú÷L-ÆÑÉt `×$`ÒßBE·š’À¬é²æ¶£àÚ4½«Û¦ 4s8XÛ±·{=»¹íç9ÕŒ`W`í ¢0Í™‰  ¾¥ÂÖoÏÛ*¿4R·òÓvT¨`q\ÜŸ‘i•‹æz>kŸ]ͳ�0¤êÝ�€ÜdÜ›Ÿ7ڤ̩5Ba»"lÂWŸ0í˜ím�³ÿdeÎ<]¦‚»à7G­�Ž]ïPh²äЖÌÈ �¤¬�‚Hh~?ŸÆRŒn…õù Ötv•Ê7Ÿs]g¯û·ž¹R'lO‡#Ù)ö0Ø´TPý ³¡–²3^¼›,¦Ò]"ŠMÓ)جèu�{j#ŒÓ éFUüßRjbwH9Y¥š¾_%òäàd½/™}hœçÇ\Nƒv€B@SÝ(<Þ7D|ø™nŸmqƃ…Ä_†/©‚LçŒëwy~÷;ôOÝší™×°ø£µ`ŸÝÇEᑸú0Ê(�÷¥ç’OqvŸ5c� ø¿—§æ«@(r`?ê9757YÚüˆ µo6ñdá€Î�î‘WháC"*Dž¦�LTš(/_�:ÿýkþ"äÓð†ôZÆ{Q¸s ]3ac9-ˆ SúzAvhi[öÑ”Év‚à7Àqäî� FKèŽÐ6äβëÁ ß ÎA©Bˆ¼9 ’£ãÖ¼ÞjG岜‚´ÎSÁ´ü¼Ó>[n?Œ ¿æ¡Xz—FŸ‰ãfH7_pB?O`\B‘éŒv_™œ$,Ü@De(�iÖÂjÕñ©oÊY&þŸRAyبϸó^Ô?\ëÊò-äÌìݧ†Ú®;K?t]wX˜�Ê­Áðìh/Z¡²�¿gY 6Ø>;ì ì ùÓpÌõ#^†"ë¾,0Q÷Køä­´ÈÙ�Ok§¤>£»f‘yþô”¢4é¿à?Љol]igT@Ÿ�¹Åqm#f&ð¶¯~ ¾K[ÕByðæàEÇSóJÌ /¹;Êa<�{³-BÁ³É2;†-Ìc:wEй£œÛ«øCÜUN×·f¨PšÐrw)=«çM=Ãòy�ij®éûÔo *jFå—À{Fž)+vvQÐM؈Éïë–‡µþ±XûìøÓ"Ð÷HUÀcý°Q�©ü eõF ¾Æ6וXA•÷œóª¸B `{À,ùB¯ éIÁX7XÂ%Õ„åtD:<“c†* ‚àO70#c Ö91C,—ÌŸ“‹À•i¾Ttéæqх裒Æ³ÜÆÌ ž�¼$IT�IõmÕ¥ÉÚz¬Ê8ƫà „O‡r¢õî‘fâ‘BÌËÀŸ§°�äf —:SÏ=£ÛµÿËZÇ<—‘o„¸·Õ¤(~H…|¯N/Ezmœ>´H¶0kF˜%MŠ©�ySc£lãê¼ ‹€dƒ„Ë�DÊŸ�Çâ ÷d† Œ¦·©ü%m©%ÔçÇ §‘"ù­»éŠC )qÂåS�wèõ©&EmZÐ-•úS«éärˆ·Öœpí ~—.ˆÏbÏáÓ¶wâ¤|Füj(ÐöbŸÇx8sù-s‡sà,ò:E8 Êçš§uä'nÕUH¬òßYæ…%v­0N�†©x�×mU¯r{ˆl¤K$Ñ¡]à¶›žÑËHž™·îL–Ã\|ËÎKÓHË¡@¤¼/ k®é|³eâRÇsãrhßòO›Úý©®•j÷ad xAã‚­NÈ'ùû›vñQWqS§0>"†ê’ýP·�{­(ý6Çï!¦›m¿yËZ^Jy Ø�k¢µí<ä/þ´Ø×½#GÊ%~ ¨l2["b²”8�ï÷†Ù‰ê) {rS÷-­~0Zíwl¹Ô¯~ˆ-Ä‚/~œhâäÿOSG)~¦�„µç4Dêì™æG�^?(GG 8’L¿€òÕ�¶'*~¡Ü>rnØAÄ_ç“Qü PÝM)ˉ M)“1óÅŠc»­„}Ôì$æAW€Ù±´æk×›áJ„Y{>ZK®€Ç;6ó_zákÖ„ö‚–¬¿ ë ž=h²ºqáÊñê_OÆ\ê¿ÅÞþ éûLwä“ìsOu¨m»š® GŠ~?Ê{7Ã~“†ˆZC`röp#éÐj »cAE‘P•IWª•VØ{¾^Œ9ɽP¬úkiº“ÂIÞ?|[UŠõRð€M³xß ¦/ò`¢ˆù2jwaêKTSá RD¢.*×›nm_vݳç­*[¦ûââÄ0ž›ßéjvÎÓ!Õ�ö”Üäñ7©–Þ¼Ø*âgHrƒ럴WÏvøafóûú©H‘$–“µ´î+Æ—œ'ùÔµSÄLÞàvü˜¬ûÝP]ÜŒ/lSø S]òͪÒMAÛ ™¢›Es) ê)óæ‰Ö/ZéÅ´¢ ¦XN”-Çœ W{Ys& l¶ß=d¯R{͉Þþ°€wëÛ›Øïuc¹èi4vaÁÒÏÁå’3Ñè)©i_ü¨ÿÓÇC§?éˆx$¼ÀlìÑû¨ø‚ã‚Ä �ˆNh\²$H+bþ²imvG?áá¦3<} ,ƒÆ6±öH~—a\O£q}™_4ÆÈð—R%_Ô0u¾Ô)(iæ�ø¸ š¬S":"{ýäå©ò†ËYª�zŠ­ìV*kØé°ÖùëS�Sú¯3ì)V0¼\ôí±ÌÓ¸ÍØ-ùë?2W°³Wš„ÜèZL+ÏOËþß©zN)”\{Ö´ó›^/þâiñv8„{%xœi–ÛÿÞŽ{ÚçýI ^À2u`ÛÉÿèYdîðÝ4¬ò”÷œ`–‘Ì�{§€;¯w6o)|]Î& ôè\kÙ­›[‹LÀ2iý›ú+Ž$SÖà)«œgåA`Üë�¸nå�A°§nC$¸_cy–~ξ¢¼°tÀò>ç¼Ô¥à¸¸ž•æ=P[Xü7ž+g’o´s×Íþm€ž3œú¿$œ€,×÷g·œæÎN-ÃëešöáÿPK D@´^4¦1^)fcover-image.pngì»wP“kÛö«Ë‚X`‰J/J�Ð{“EïštB'„Ž ŠŠ´@Ò¥wP¤é„Þ{ ½ï‹çyŸwïÙó~ß¿{öÌ—qf™Ì]Ïë<�ãwÜÞëÃ3-å;7io^ºt鎪ŠôÒ¥Ë;—.]yxã/ð‹q0Iø�»âsw]„�;ÊÒ vIÎñöPÕÙÒ…YZ{»¶Á¤ÀÌözÏÝŸkjHX!œ!–Û@¼œ].]|¤d½\,­aî_ÂlíáÒÌÕõÌí­¥™ …5ù4]äavö*>n0]-=+G+qkfY™‡R^àÎ0wˇ^ÎNp¤„—4ó¿Ž+þ~ñ3/óÃmâî(Íüï‹z®ùì¡< öPÂÇcÅ'Â÷P„Â/($**úä¡?/Ÿ/¿¿¨„ €ßÃÿú0ƒ³¹YÛH@”þë\à›4³�»»‹// …‚ !7[^~qqñ‹cð€-x�ÞpwK/8’å?GP€!­Üì]Üíð‡ß-_"<Ü¥™™ÿs Î.ÿ}X8ò¿Ê ÆëeéÂËáãýl¨©ù¿ßÔÙù¿·FºCa6ÿû­‘zÞ.0^( ‰ðp³ gÃr±³‹„¼ÌÒᦇ@8ý§ŠÏìî¤Â塼®ðCMK+{øÅ÷m¯©)¡ Gº[­`ª ÒÌàˆ½½µ„’‚œ¢¨ˆ¢ˆ�ˆ‚?¿"¿¸ ¨˜¸¢°â?Jb""rüJÿÙWaåá ƒ»ÿg_ëÿ{_Ñÿå¾­ðï½anöž0k%7„óÃݲ„ýÿp-|üò‚òÂò B"ò‚ÿóµü{_ëÿáZþk_Åÿå¾¼àbxÿ_ ýŸŸ@÷\üõ¿Û|ùïÆ‡ÁA·»�¶V1-Ô½tée²ª‚œž×ðê‰ßý…Ê ×µ|Ï~_ì3ù‡ÁÁ wkiù4_É Q99q”éÂ?F#§gÙÅUµüÐbuáÚZn=«�$_T]ꮾ«ÿÑS†]Hžv=èºANÿGÈß›Ç'QMž¶ž6ûç2Û�¿%))/ýŸÏÿùüÿáóê®ÇÀF&ZƒËŒ§Ú•J‚Ö­““Gdggïíyܸ�šÔ™œž.rèÏžúbkm­ghˆrwÿ®µ¹¸‘Wts³µ¸¼Ë122â_÷z²à…$’!|||¬¬Á.-,ÇŠ/Lê0Û¯olÈ"çÇÅŽzu \y?æ¹ag¼{´rvNN»d·ø•†ÅÁÕÕÕ ÍÄ2»î¯:iJ4áijžå¥¥œŠµS¬*œã<<‰Ä��Œ˜,¹éH0.†\(¶‰Rã¼’«Du--²²j ú­.ÚŽÍ©_-at ¼ú•_œ6 ù«33‚6¿ãºÓ”MŒŒ\�îÝ@}–E 1 X«¸ƒtù® åÆT?Ëöši‘–’ŠÙûÑÜüÎã½rö€åƒÉn>—ÉM¡T] Âܬ¬ 9ý´ Õ�>êê¡1k=—¨QÕ9ýÞ�ÃÃÆœOž<�@l„߸�õ2~3–v.¡²ðÓÁ»HJJFãkKKõÌ–ÝÛµš1 -$ÅĬmm988¸Í¶¤mâ@ ïN..R÷¨¢Çfk”pÜÍ.º]õj£Ç­H£èÏn$G·ò ¸a¾NNNÖÖ骖pÓ/Ž’4¨öçî)›ùŸT.Y€®Œ�ç–ɹ,¹ùJ5AYY¹àyáËæO4ZZZ6ÑfoL–b»Ý—ÅÃêCCC¥ÌõõõŸ?W© r!aä³°˜ÈLñqøùæšœœŨ4Ç3%tTvM]�¹ñ_œ=¾dâ ó{—èééYŠ‹ŠÔÔÕ� ½†ºÂCL@WëéÅl}X“þUûåË#AAAž¼ªªªÒÒ~¿ø^qæ‹E¡q¹Ѫœs‰|Å•º99½àÀ§cY Žj:5Æžžž ª[.×.M‘íˆsöÛþŽÛÚéÕ&§æû±êª÷…ža¬Æijšt½‹Ãá@�‰÷9TlÛf(¶z(L+ÝpÙÙõÃBî“„o>»IFÆ(âô+LfÔÁãŸêü�ñxüm×zÛ®”_!ä¬X,…¾z£kI—ú廥Ã�`aŠm»b-Ü%’ m ‰‰‚2G‹icÕ(:r®g::–öö4´´ËËËÃ&[ùI4ЖP(soï¿YVV†ày…‹¥»{IZšU7ZBB"!!ŒÛÞÆÐ ‹gÏ^¼.MNNVç(6,Á‰ˆˆhÊËË«©ÝT6�«¸âß „`©§-s˜ž™™IXÑ116¾yë9£T…÷ö¼ m§ )B@ÎŒ£ Ž@ ì}?a°˜¯ã‚ÑÇýÆF…¬ £50Õ2ÖoaÝ‹ŸoZ[[Çá�`Ç‡Û ¢ðÑ ÿã½£££”{%¥¥¨¨rú—/_¹~•„$qmH‡h–ÓOùàÁÜ쬊Õ|˯·3Š^v*“JÊÊ]qü¿ZZ®G«ÎA\“¢¢ºÿüù3’\€cÕ^qŸ±´NJJ²éL89‡^û6úºZÓ“Š k›êïI(‚™››×2(;;9Iùî­Æò˜�Ñ‹=d;¹cþ½ªj¸¹Yi˜èúx¾?ÖÛ«‹ß‹‰‰Þ3žpó• Ézdúa¿UŠ÷|<Ð²ÝØÕéé¦P ¿­¦½µ„� 8T­9ÐæÕµµµ……ÌQÉ‘�•/ÝCB[Leee‘¨ËÌÀ_‹†‹±?É1{-þù‡ÃEã2JKwû²t·¶¶¼½½Ë‰ 0¬µqFlç�ÃÒ�µõ÷ KI�NL¤&Úá*°àà !ïÞ»'ø²ñ†‰‰Iq¯ŠXÀZË_ï$=G§Çˆ`•�300Óó]IÒñ¼Ÿ>)’–‘ñ®ãb4HÒÍSÄ\§{pêš ³33Ve~±BÚÚڲzÓ[å’·HHHHQà§blº±‘‘jèôê*pÀ€¥6ŸqÐû¯ rÂÂÂÌŠ¬? òÇj«jEˆññG�¾,|XÍ\Áqa�ÌÌ-(FW… }ê;X †A6À”F‚4„dfï’R8=ç¤É1Æ>ÝðöÖE;“%srr(JP@EEEhè31VÖÆ“}…´¨Jnù_ØØX7ë§L$zÝ�YzÙ�äßýŽãg«HÓí²Ÿ•˪ö®�*ãOÒ–ogo•ÙÚª>öy°©¥ÅöhgéîÝ»·_çBMvkÅ (â÷DŒña} ´msò!dcð�OüYxp f`Ê“’¬Ím2 £(êrsŸHK'wÒü½þƒ]d†ö_­‹h‘VV^nQá2µÝ%;Që»o~‰åš¯¢â[…2@©©©u¨‡D2B°`g ôe×É8ÄŸÌFkw¦ÊÊ‚{\]c%€»ß_«ö\3æÄm¼’š�ÍÅË[p¡›"GÆye%%;ĹöO”Î>åËï(ãw¿Ýãк}çNíÏÝo×®]ÃBÌÐÖõ¢Å±ÓÒ ÷rrªfÇ}úÙÀT.PÕ¸VÞåo£—·b!f€,>~X,ÎmŸ $'%ϤÏ»¿<ŠôfÈjUðóó6ð{�_¥nÄßÞmT\ø´âJ¹CC0)ÅúÔÔÔÀÀ€Mµ2W8½xhÅÄqÁ Oà5ªí–¶¶À›7íl†y±£XRˆEݘ̾=à–Ñ$…L½PÜí….ìͪò)Ó˜{#  L¾ª§÷‹Š>¬þùóŒ€Xt~Ä6è©§·—››»ÒæA°¤Ë½ññqŠa@’%åtu£¯å›Uä™—¤ú9ÜÓüëûâÅäg¹ 'ùöÓ�Œóœ@# °ãi_ Š£uµîùy›¬3330gsTÅêÌ’”E?�ŒŒÊÅôhžV̸ÎÎÍ ƒö{‹ÊÇÇÇØÝüË02á÷ïß ¡@))©¨öÍU|}}íí³¬ËëëëW5âz•Ä‹²WØFqm–Û_,¦ôTv»¾3ÐÐÐ00ð`ÜmU Ö>@(>}ú$#�æìPRUmPÓ•,ÉÁ91b ŽE鵌_ÇfEñ ÏÀÇ6EMA!à8�ÛÍ@bGäÈÊÍÍÍϯ&øø”ư¶°PÇaûóçÏ“““ã´¬öÁÀ;Òݰ"¯.Zú©èúú:¨¥1pŒçÏã–ÖÆ@]ŠŠ¦§§Eà£qÉÉþ�ZÏìÁ|ûIsS¹`¿Q”$‘Üùë—|€ªºz4Ã-6PSu/¯ƒ[¼5|®Ó ªÐâ™*øúD}à¯ww2µ’«™±ê÷˜õ½ýýk�'Nþ ê {Ìþ�·›WÜjÿ@+TAVŽ÷£iÇ·o�ÛPÀ´‹ÛàÝÞh�—/_‚»119½ýÌ^b^ó¸òäÉê¡!F ÷dóÕå+Ja´sssMW�‹ Ó—¯}¢Œåµ€L mrkÛ$ Œ7ˆ„8¿°ðî¶9/YJJе:/7—µÃ—qƒ7c,ÈËëøý;æšMû—–™ÓÃ^»ëäŒ5Ömhqä|ÏÎ%?;[¸K™óˆV²Äîçuí±¡¡Çê̾Ôè `º6’ OØnášZ¹ÅÄOþ¤9:8X^~KneeE;EªÒq0Ÿ. =4ÖxPddäßΞƒr lœksa·éD4zRynq¡¤š1o�¥­[#�ßj¦H¡ m-B~·Ç ÚXî­H¼r¡6c££Ov+"""ÊËËW­wL�q¡Y€Ì€t|þüŠ%çáèVœ›«k<¸…$qä;2¬ù¦¹¹¹±±ñàà`È~È–‰5Ó?±ºÃ�]|Õ? ‹A¢‘•Míe–«˜)<™µ1$Ç �VÜ-=½†ðRœ� 6RæL±úåïØéZÀ_žb'''×oS¿ð´hüùSîŒë0àìÄÛgü²”¹&"¢ËâŒH•Õ!éÓÝ×·³Õ¤Ç÷¥¤Íü�‡¶ìéÎû», X0p¦Ã¦áa �žÎÎü²²½_ä²5 ™ýíÜ+îÅ¿Z×À) Ìyî<µXͽÔ,ö€ÂŸ'çuiIf�ANONþùçŸõµjƒe1kÑÚ±ƒØ±kòû¡nø�@]îo  ÛðG¨]hΕ+Wpl+ÞíÎ~^àÚ9_?~Z0ˆä¼wDkÛþ¡ÚöDŽ}·È–c†û8æ¦�{É]ÛçÇÜ5\iœ(b¬! ý7÷«œ¹ëéR̘ҒË`–ö]Z€§i¤Ê˜Ç*¼NNZZáŶڀ¿¿DÜø×Ú]Œ1&Û€8–~O~¥zPVÒZ�„€Îz¬«- „í1îQÔ`ŒÆ »ÀúÊÅ%²R}„Wru}Œ£èsÉãöXžÐ÷ï# EÎ==÷e‚k³¥–;söÙ亿ÖôŽÐ?@‹£g7þ|‘WŽ`d ¥õÙ§rVkPRTÔL²o�|DQúޤCË {@O/pœßªy§¦j¹¬^Å¡To…¨ô5-Í×üg PÒÈH—Câ\õÉ¥Ïn-WX®¹þ N¦Gـ͛m£.Êvycþ7 ©�ª'gÒBg2 ǤAÐ OHˆ„ªh7ï¨ß} ÜrùÚ‚”ii95ÆZ³ ØÚOÇŸx- ÍȉÕ‚ÁmÕKSáÊa ™¬É¬Õ÷Ë Hó÷áøèhîhþbg¾ :�QÜmÞ6ÈZÈ–Ö+…å É5BN7’ÆG�3uB¯jÙ†}AÈÞ-A#­«é'>ÐÈÔ¤¥¥m™ÄRºR¤]]]©xÍgAóF°·Þ½»nkk8Ó;>GÕæÿÁ#ë3àýõ‡–8—ð°0ÿ9Œá,Fóè9ĬªÄÿxp5×íýû÷ÿþû…ÔkÖj½#Šõ¢’Aʶu¤÷îq\'!¡ §n¯þ–—§©¢2ôÝòàbPžÃK¯\ZÒ²p8E<äýïßù憙åç€i¯ü;õÅÅyU7Uƒ¬vÉçÞß`o ëp'y–Š_ý»½:Ú’6k³åÅŠóÂÎ/”ÍC´S…@. !càòemæ‰ý k!€ºNwQÐz¤ÒK=[N·Rã<Š·D]Æ�� íÒ wõõûó¨6Ыº™Zþë• ³™=þR�꿈¹©þ{FnnEÄ7`5�°…î©j¥¿c«¤†d®ÌÕN,?�ãä]ÀçãnÈŸBjcýýýªòl’wˆáGçu ¯£¡_¿þ³´DùŽN�ówiq0" ÀÊj†§î…µõl¬=Åkš4ú55!D8GV-á4¶9¿ÿ¡¥¶7ŒqEÝ!1œ» P¼ á8p×u¢Rs8Cµ×ÖKÎ6ÂÍÐ'ç þ€´à¹:ô“OÌ]…{g £:IF#Ð8[‚¡ŽÔ(kD ¸ñšZ€^à{Ûó‚2ÑÐ¢êŠ ¯‰:ÿÃ÷ÅHUHžºŽN”Býl˜Ð«UD…6 ,÷/甆`ÑC¢�I¯£¥Lœ=?�8‡¤¤ïéÑn¢(b¾Nœš:+''ÚǬ8øP*e~U¯Pæ Ä¸ÔØË–ÙvrZ½˜y»?­QtÑn‰`²(‡›�¨DÈ9a;e›À…Ey«Ö"’Ú{JÄ$%Û¯â1š¢ë èXU‡½Ü·©ù~l~"%æòÖŸ£µe–Ò¾|zmòSQÃë+Ñ ‰ÔNëFþ¦S�µx寿|ªZŸ•µ[CiN¨ÎNÅM\ZÚì¦gÛ>�)¸hB\Üãh6:ÔeÂÐ@]”hO›7ºº´=@NùÄo^馸Rš…%H=öé\xKøU MÍ0ë=<Åâ»ö!Ú0ã¼Øl#f(;_b§@Ç7�´t›TqdFÌø;2Îf\éP‰}tß*Å–h~5ÈÁÙÙÙÖüÏ8.ÇÜmŒéD± ìúø››§zLÄÃ%ª£KäßÕØ ¾ØHk��‰¹�÷ü{Ýkõ±(&Vlog‡ÀÍÔ0“·i‘þErâáâZöîÈ.!‘““»EùÈwÊ–÷EîÛ·oM@y«=�–ó>eq?æäŒ¢Š�EŠ4oB)vÈÈÈÐÇ`€iI ŸqIÞ)º:°´´TxÕºÕ¼u©7sÄ�É—½o9ÁÀhl›™Ü\ ‘——7t%È�s0ªª¢bv~^í2œø$>  ÍÖŽå�xÿžo=2Šëx±; Z–*æ:M¤5™®Q¸Á˜òéGW¶ ŒÎ¼¿¿?Ì(Kß¶;ö.‹R®i¥ÛÑÎñÉLŽ%ðiÔÚ0n4&Aï»@ ]]ušŒ™·=;9ÍäöâÅç/òJöd ¬í‘11 !·ÿ¯7U›`Ÿb¡fEý4èD@Ðkܵ „{ÚR['Û]`>ÕWi™\¥=–û†KÙ&€ï­¿ a�`« zóæyù°sÖ‹°óX=.!!{¶ôw_o/r¼ÆZF7ñ\ÍSN+U¦Öò×u£ë„/L-@•G93qꪌ””6~ó‚«ï÷QäR¬ã½>ÖÕÕ�h\bÕ˜óÅ:ÖG\\ü0”·.}.)oMÂ,+k‘Ù«Z Qõ6õ$³Ž266Î7­„sE­­¯Cî|Ò[Ç«&]'îì® ¶45�†Ä.T22¦Šâóëׯ¯\¿é6ô'”çCÁN¿ž��Ú¤V’˜+P €ýÂ2’lüü® ‰"Î\�W´‹(™ÁS̓‰‰é—L°€‚ °~½}ôô;¯i… ÀÖw_Ø`4éwÕTTž×úx@¡md ‹¢Ì®œ…}�|¥æãmJaÁµÖ_AI‰+Äü4»¥¥%ðìpj4áŸ-"$Ô*Ú ÓZõSµiŒU6@e°ÞñBöè©õ9ö7YYYÇû²n³­cݤ@ˆ¾=Ø8èéé 2K~~¾š;׌0—+¯,ΆœŒÌ@Í& +( P;"ئŽåÜ’ÃyGâ͸ÜÕÕÕ?xÝ}ý#§ÓœG/â×·Zb9TyHII©v¥>Vµ³ãžöÆ…D#H¿`P]LMguaÁ�@ˆ™;XY±!a‘÷Ú½œKäu�ì€vBà•½cµ¦æáwvâMŠjsèè:ÓLÃ4TR\|‹ŒÌ‰\ñŽî¯æð% º~mD-;Ô×縴i,SYUÕÜØø8,2=ðÙ³gîîî€Ö@gYòÕ¯ioÇ[áÁ=»I_£ª§³“SL‚ß³Êp=ßÉéit|£U¹ª»<ýêÕ%Ð%´²ç2õvÑóì½êñ¹ýÉ Ó¼Ä!•hÂ>ƒXC­Ð˜=·Ÿo®�äøL+07??öûx•GÎýé�úG½L²1/eÍÅ\Wu8a�ôz©ÞJyuŠ,Žƒ2Wœ––vƒ¨Û ×`ö�7wÎBÛ :Ú§Î)í¾øì0kçÛÐðpYII«Ö�¼OuÜoë·n‰ïcÖ\]]ó1”_m ë °³ßñ‚ Í`âíííäôbßý�÷.P¢6Y˜¦YS5knff&k�ÀêW½9¨BfzzœéIÖN�zÌñÁˆÃ꤈nqã‚Ùê’«`¤Cý­ »Ú©2§o©Ìßü O&©›©•gT< ÊÞá Ñ`i«³nC´U‰Ÿð Ø%{nêà;¸ VÏ×7ƒOÎb+ÊÛM¹²²¬×7…&ë¶ÙCLµBM�&o[NÒ^ÀL>Z.èzScãïdIÃy¶µàš"Öã2瑽�‰‰by¥á8 lªEÚÉýýýú_-(Ý.2¹ˆó²÷Ÿ‹äÔ&×Oó½°IšZZ2¨õ$›ÐÙã`Ò{¯S|ÿþ=å…Êß©2þÆûúôp£±h©‡_LþxMTïZzÛãu•„„›…D%”9L³–vxNæ>/| " z•29臚­Æ0íνu¯}°bâ✶JjüëSS:P(À‡ô£[èm{r?ÌSì‘™=kúІ8Å+�‹'ÁªÒ`„½�H}⟿ô€È¡•´Hð]_\¬p™j´%G©d^YX¸z@¤˜Ë+²‹7œíàðή®Á%wt&uÚ0%ã°%%BÑ‚ ?,§r8=çÚk ví…X �Ûò"´­·Ôžw¥HK‚y¤)©–�\<6’–´Ng‹ã·jÆÏÂÌlýÒè¶ý v6´ëq7ï=þ†Áûüù,hjQ]Y©Z£V·0?ŸÐ7H±Õ•””¬®¨x|%Rµ¢]6::Z Õ8j àZñ0kÔ®\Ø£G–˜ºREã¡•×&ñî }+ÈMzh‚‘s¤Ã\⸵Õpunù»*� �Q«ØÏM`óäææf{s寿œœ�qÓ±.]@î‹ä·R¥ò„³i¾g=æHõs[üó%EÙqg�qp|Ìm¨Ç åõ m0N¸ûáÿë²þŽ”–ƒ�Íy¸DÕÁaî.¸üŸA$€K¹QPá ÷·¡ %ÏÝdÏZ‡©eýÁ€‚ª™ž�œu OÝ�©•<\�*¸ZÞv ßøåËKKËwÞ0øD�4?Tñ°ÜÙ(æÝ»ëœmµµµòÿü“Œõu±Xå6Ì�KÊêééaö^›››qéžz�,ÐM\�aþkt b&xæGNNî}±øxÍ!˜_vÿ'ÄÑ­™^‹:¿žtU¼«ç9j}´Ò¦#Á×K~¡Q9uuæh×Úí@4×ÖÖž›U̪Öt+ËÎV£jiQÆûÁ4^x?³'µùw—ŽNÒ¡ï±ê^BBBpp°óHÙÚHy—õ*í7Ò ·!¾Dc5Á‡×ÎŽvWæ8ÿ¥»ëw²zÙ,ÍLMÓ¹Ê�Ñá͘Mþ2$޹œë¿ @"‹OúyW&†¸eåBðóóÏ4‡évêk««‡FDLÔÚØd¨ ’$Ðïêa²NC|ñ ç@xg¦§�¡¶»\¼¿å›‘•¥úѽ�ðý;çæŒwÔ‰Ç ˆG×VEkˆû¸„vvÛ7úÛÙ-–Ø÷¾yó&r*p´” ¢¤ðÒS€ì¾àX'.É›\˜ìïß]Vò€ÝDy»¾»}5i޾yñ&!+«5èhtŸ��´U]Cý¢_éºðé$påÊ•+lll¹s™B¤ëÀ˜���wwwG€}· j£èq|¯VÄûüûÓfȾ;My0ϧrñ e’1: ÓZVXèêá±»¹éb˜¯—�›«¡¥%²”õ!11Wb¸ÞÊu‰__]}ÂÉ»•œšZ®™(bVåÞ–N�%�ïH,*ðú —¡V²8Riø•Yµç®”ÅE�žÞ\xóæ¯Ã¥¹96X)´†;SPíŽÞ ¾Ÿ­xõºä2þŽtÌÝ‘zqâV PŽé²-��pâl›zì“x1ׯé5R oùì.‡Ñ‰&0¸\¿8ª<Þöƒ[›»¬¬lV#æŒæ�3ʹçÑøøøÅk*4 Tozâ¼+€9ƒ‚–;�Øô¼r[Oc­>ÙÙÝÅŒbË,�¾¤Ù;8p92’3@^6Èg|ÿ¾9ÛM1}v}�¸¹I-é¹ÚÅâïç§qôt_úNìÑ�o% ÌÎÆÕòæ„…u€TÃ’�l×WÎ$›‚ŶH�`$ÿ,°þlÇãcÎÜ„\¼Ã,µSwIý,�GÎ%¡â¡Ì&œ#`4ìÒbÎu34t F=KîDfô*0FWUURÛµ²r…¨�P_?ad„œF@¬É¦ZLõ‹³ŸÖо�ððð¨¨(b×Á�WÛ  �c2;!hqKs³VªŒ™øµºoßì’ ÀÜÜ.žðTîøÔêMAƒƒîÄ �|�nÉ®«æ!kÕ|ûÃR„ìê_="ÔÚ32Ö¹ÍáA4áäe‹,fD�5hÀà4ÓÄÈÈÛÛ»è*j†ŽïÅSUÕ6B±mØF׃Ú>âLKDAvöÑÉvWX�2f^.§b\¢Ò ÍÌü�ø>? ‹=pǦŸ>†$°�\™0÷‚K××ÖœoG¨¼…ÐHÃG+‚ƒ¯ÎD[¦ëa±×?gd44û¢WpE|ú“mAaqƪ»ÌXþ©Õ%Œäæ¥�(RGΞ1 ÎýÅgdùj:©©©ˆ §Ò¬¬¬Â‹7]ˆsíÄjh¥zŒºúw'BQ\5ç!æ§XFHíÉìK= òA¬â�C� n_YR¥™7�ƒËÅ©Fº™<TµJ(ÎüüùÕÔ0€Tò¸q]3³5 ½Âé5š¡�…côáù]å(äí[㻽U¾)=_�Ú0/‡�½½Eµø¯§HX¿Á•]--­ rƒw¤Ñ.(W× Ú?ª]3*”¿·¹é’g02<Ì�gQoN4Sóà¸�úÌ4çke•¦†sóôÜ#¡ï^»#‘ ‡Õ€@šqN©Ë¡¼ub@Ù€�z«ùøø˜šŽî­� ‘H£è‹×Ôq@À{ŒÌn"?x´¡æÜzAæýà…£3Cû¯WIqNf«¸À¦E±Âä·)…R˜]héÙóõ:îrÙ÷$=QQ[[[,Óvõìì PÙ‰®¶4›ó+ƒœ¼‚ÙÀ³�t�«J‚ ?Ï+ZZêá꺵¹ù�sY™A>¬£­-Ê‚]3¡Ä®ûë·o�“µ8¾N5¼=88H–DÅb±ÅË€+O Á-ƒD#`úÑÝ£ƦXE±²Ä§âù,ßF�J‰�-í_QQs_‰äÊ™ÔÕ¦ê ‹8Åáp8 “““S\ŒTPh+Šù•‡>#!£™„·3U–—MŠûN°äŸ‰ÒòrC__’k×ÃÃj„üO4K KKY½K´´´7oÞš]æ±20z^ù+rÖF^¿`;Ø=<<üʹa8žWã}ËèÖ “M€Ž®êè••÷;�o=K%ж¨“�Πl;oMrù3ÛFívÿëüç5Ãò·GGJQ_»¿a´�<—NºeK«XŽõFW&ŽÍhr dãwð²ƒõµCP–úò›³Ù•г"¶Äþ”éø‘XÖLJ눠åç#K¯öaD}åÂxÍ\­.-—IÁ¾Lúæz‚IbÆô�Þ^À1U{ýj»ð¸BàùÜ­ˆö¢ Agû%'”��y�Ë£‚Ïùm_5f¥]ÝJj3V ®eejÙÆØés%—Zýø¼)wÅôv ÜÉøXÄÀé¸Z6\rKµ’ ¯éJ–|z`m–Wuö<9uÐä¤bì[ ¢*^Ahæåé­ùçΑðÖó;ýy�Óæ%¿U´4ü‘§Ô6ÂY2Ù˜0ðÕ�ô6�´›õûò´©‚°°°; ¹5g}*!~ÒìÃ]QM½ìuyǬ¥ñk}¶+'äZÜwì­T‰u¥ËmœiþÉyB”†¾�„~F“ÁÊiE˘Y¾G4@ïݧ”FtgïX<;ë‹©³rŠœÕJ(8õ;.Ý×MÞIõsîÜÙz�RKlÖsÀøÿ9ÚöhFx&n -ç0ÆÆJÔGNSåz#” òbzŠÛ›¡•>¨�-ONÙzïŠ/w ƒBÂLJv–vCx¹óxÅÄÞéD,ìœa3| 5� 4ölûw,+ÎK] Žú÷­4Î%œÚ+¯Ïtlýä^Ïèâ•öÆi‘î»’UˆžTì ÁÜWΠ3å5§ VšûÊ}÷Ê“V“2VW‰®ÁÇþÄ&Zö�“÷NR+‡ƒt­_ ·Ø*f`t~WàÜ}_`Ëxn'Ù1�¯@ Œœ&ûCÍ<Âê”{Œ²«HÕašk„¯Ë9÷–’œÝB^’«Ã3Y‹iâwyǾöti§P¸ÎL¿ýZ^ÉNû(‡qiÙˆg÷sãݤo¹ß2¦–­ $¸�F�5ÅKýü\¶áªÿÐU3i{8Ôtì¿‚,09þéÛé1³šX¤Í Z›føøäd[vG+ßv›’�r_«ñ#Ö!£r`‡ã<™š.½ìÙž+±õÂʃ°d™€Ê×ëW,XJõëÎW™ ^zó©ÒòpYÎ ú+†u¶º#Æ#݆ç'ý¤ÇW¯w™ˆ›ïÜm¨Õ.ao¬Oþ»@Ǩdl õå¬xâdYš‘VÛñ]X_:4#œ¬¸‡öÚwhY¹æ ùî­·µœí î÷S®­ÙÎÌóöRœŸxžÈ�uþUN¤„—6o¾ë=Õ+˜Ð¹é‰ÅŸ|ú-ûe¡d0£zÐoÝî>b:¿Ð7îæÕë":vÒÿ&�=œQ¤u\m¯×¡+UÒ{y3B΃ð?H_²"96Ê21IÔËë8ô6:÷32"Ø�0"¼YÆ››‹˜èa}‘OeM’“q¸ \þâj¼üJ½®ummžß`â|³’Ôáð‰ËJçFØYß™˜þâ­Þ7ù ‰x�:�Ùèj£ùqÊãyíÕPÔñŸMzFT�Iê1ÇÄVuY\òÊ|:1ã(á#r”íàß\§˜¦i’»©* �;e Ðeä~û–›ŸÕ.qpö¢Å‘Φ{¥ž§À1»Ugƒ½ÕpŘë™vn ×`ƒúï:·O¯Œ�¢ê…ç®+Sdä¹Êé#�=p[&ß¾åËœü4.ß c¬]NnHh®¢­í¾Õ§w?).¿p“Qš£²WW¦ÆÈ“#dиWm 8UYA�¯öá‰=]$×ßÕ,ŘÑ}Éýú5£Lfc§Jn~|g;^`Ç7NV” Kë÷;ŒØ¨BRyÈ“g Šà÷jφ‹ø<0†æ”§tõ¿ûìtv�à#ËËõÚy‡ä™#ææÇ÷fÖ ^Äâ˨î–âywG“cý¼¦–A¥1¥‰W"/ž-’Oµ¿ÍmÈNnŽõœÁ½ÌÏÊ‚ðòˆÕLÕÛ’é•!”t*ëMÜá¥7g6”wµ=ÞNÝ{˜è>62ñ'á·‘3ƒ¸çQêàjg~nBh©îlŸ=€]I%(lj»^¼T¿‘íh—›½*²âH‡CŽ_;$pD4ÖïÖ¾•?¥ß0{?T‡J_¾Ü7„üG*°2æU¸’¿JÓLåÔ��-ÈF|Ë~R}DáææáÁ¤â%ô ,½]-÷~®1É6RK®•–çAMÎ`>þþ¥Ds ^Wr°xj ;gÃH¼Ã ôè»ùäX¹*±f‰Ý¿³#¡j/6igçe„K ¯áLÈv§iÖŸÄ€× +żÉ�Ô4Ò}ý߬­šºC±Ëù†ö¥úh–¼Y¾^žp2’s}x$ûc¢ÄúR5<ïXù“Û`°?=“J‹æÁ‹Á¼¢ACëÍXVï[¥0�òÁ’Ò¾tI‹ϵéš�'_c¶±!wÈQȵ#ˆ-Ìô�…´m± ËnÑÄ{ÃÁDëݧï3s¿àý�1sö4‡¿B®�xŒxU.ešü–®-|Rû½BBêOÎñ|7æ¾HNÕ¾¤\fkFæycwu¸n÷о §¹+ò@ÚÖaàóä ÉdÅþ1³d/ÑDBÀ$yÆ[oûü<½°…ï‹[Èä.ÄàÄ·3›Àí¹@ßSÉâ¼°A]M˜¾UbPqb©®°oxÄ‘g•�½¥îÌ ¿evŽòøiy¥:� ^:É@ËåØó]ò:JÖ{¥kÂ߯ÍP¨d�•Íü[îà�pÚõ§¬Â>q±ÊˆÔãå²Ê®�Ó…ˆúýyYt‘Ã'‹ïE�eË¥^~GlèÌ/ƒ¼æÓ3ºqºxRŽåõÝx6<ÆñÕWÏK·‘qày¾œLÃ6 ¼Wú„´2åeYÀ/*YÇÄÕÚCxÙòGnq˜Ž<|4¼Ú«Ó7`¿f¡ q:óU¢²ç�íW'o¶ù^]wÊÃÃäÐáoX¿»Å[Øo0гW¡¿>ÖËyd9¨™š^Xòá9Ñ&¿nÅ>ìmæËÕßå�´Éû+�GÓ“¤á³ð­t‡Òæžì 4ŒÝ~d�m†„‡™W ÏOCƒâñiúRï¸×�°W»ñ &®¤P»Î”ç éO‚êÙ<ëßÌ·>æ�ÎV?þ-zž¢k|cY¼·iœ MsJ$°ˆ'ÝÁ'½²¾Ï8ŸöIÐEÌ�WöH}bY±ˆ­÷Úêíª;Y_ -ÅOày¥DÛ*qöBdë¿Î,Lc»·‡Qg;ÞfÎÁ¶*�©ÓZ(_* U*�s?ÒÂ0§Øä€)§Z‹*OûxY¥ 3Þ¯1±.Ò;ÏèWŒTçñ_/er–HH“2ö<Ù�)C™TR%ôík9¶¥ž¬¤«öW/QYÔÚK »u‹ò>ðÈÁö’�n8rSi'òù4¾�Òµým\GœóP†Ðhí¯$¶Ï…–Í ×·CjÏSy¥�w> ¥x•Œ¬Ð››:­Íq› ¯�ðRr’³;{�¸¾è+n�?¥G9‡x¹Õ„•¬Ü÷œ§Û8)ÎÎ1áREš–kôÙ•xN!EXû©5õO÷™üü§¾!Nf둎Ukoú¬›Âv+�¯ö7‡Ö—*N|Z~2ýWª´áŸµª’´ó£Â|ìB{žßŽ¢þ‰jm&µNFÖælzÈöü¨‰4z +¿Q÷Ò—çmî›úÓÑÝ~û‚ª“hX!?ÿ­Øüƒõºô¢õ‘úiQAy¦â+›cŠôÓêÚîïÅ»� ¿ä}R=DÏÆ�„"ÂÏŒ»ìmüÓ\+ηßf)MI°Î.³;Uîx¿o¯%ß·è¢uíµ¿c„±:qÍ“ux¶�þéÝš!¨äXdmûÝ¿|¾üU–úÌk²œ×ãxä u%¬µ sd?˜¨ç[Ï”Úÿk÷²Š»v2dK©½�ˆe‹FE®Ë¤êXÅü½¶‹ðGÔHj»KÛÂëꋎ5º”gíÓÝf&x-7Ûè —=¦ºr¦u ïãbø”qû§DÞ:WNgꈿ""eeežUt×Jõ{ÛÞf,Ìö'[Èöm+U+Ë Zhæ �Ý68[’5_ù-´[pîDA½q~Dãm}X€âêz^»¬úË:º®|Øk=ó|w&?l³o[Ò¾W6Qm¶r3T*¶óÀ¾`ì`…`�Ñ„v8¸U�_ö|«¤¼TéqÂŽÀï�¼ðSôi|S°&¸K SJ-ž?I}‚¬oGDï¶b{Û PikgÉk»f8*Iؼó]ÉXïxù^é“hBÍr˜Î Dˆ>mb¹¨{�J¾Ÿ¸ï䮾•¸Mû’ZÚ%Y‘žï”×Ö´²DÀžçEµcl§;;ŸM:´ò<ö´Óªb;ŠL¢³ÖÇûcÇ2t²œ«Þ俉o1‡KWO»˜Éy´\ñn׫LñI;±�nGã³nyÚ­4MË-©Œ³5®åøæÃ£�5¶´íÆC £åO<>?' Îk~¼âê»Wp:ùKë �lž•3ÓWšç ‹0ã7ÿfk£µµTÙ‚£ùî…ßqäó:K>/Ï�'�r…%wÇ:ˆ��YȾŸ¨]A0!ž8ÖÄÁIô¤Y¨èU´ÕUµÕÛñUèhljª…žž©±±yV/!ÕÓžQNÖe‹•¥[K‹‹Hqýýcüصùljl‚l}XØáh›{–**Û³O­š•W)1Õ@:×Q*jqŠ<›+Y­yÓP£~Ì›�ò¸á>Ak òŽ\y 2]·e[ýÖ6º'¿Ï3;~pš�%g–(0UÌ”{´”ÏÞ+Žd:gÝ;¯q­žb,ÝÉ[˜÷<¿:’U•§±]Ê5;tœjú;OИ�Äwã[õªÉÙröá£Aóº­h”ln½ÈJY—Œ”mÍÁ@�’6u`�c§ûðº·Ý†×Z{O÷À挨L«èú²µãƧw¯ÙƒïÙ=²Çîz/Lœ�±Ï`ü_eîž.û”ûU4Ô,tú–kGfûM¤ëÁÖwõÆ^ªåñ/ßÌ?îíª?ËôÝ /Háéuáþ’1ÛžÜÆýŽ&[oÄõKŸoñpÁ†IsÝ Ó·÷JÜùA¼k¿àmаˆ_C)/Tw¸ ) ‰ÏUŸaûcl7 M'é¸çxX€ ûãŒ[‚Oå‘ÖWktlNÝJ*{�•\éô¤{ÕŽXî;Ô6mÿ9Û%CHÑô7¡ $ï«‹=š8_Ì©¯W¦S³‚m¬ Ξ~굎­]‹‰´Íò¹ã³>G=÷JÛßÿõ€÷ŸÝ>÷ã}*›@êT¸�)f~ qîd©7¨B÷€t#`cÌ¿öÿj×<›š@®}»«²«*(*² ”(R¤f-ô^#%D¥ H‡PB’EEš4‘¤·€Ò!„, ½&¡%‘NI(!É{?ÿá�y¾<×ÇóõÌ\3gæ(?™¬Åp„ŸåÊqˆÅ,ÞFíêI&Ì�½¥…%<¬ªõŸKÅòãâzbµU æ~iÿ$óZêÒs¬� þ…Hd† î´Y!xT?Vû ½Ac?‹/Í%�N’Hú—K½içF^9’¶žÚ�ý=×ÀžF?[ËÅ”í½ã.ä–nàÁTå2ú'ÚóÞïç0�£cºZËHª†^JÄsägï×7T×”yÏ:T)ù×ÊTm°�ì+ñŽ`›bßQºã¹Ê:„½CD„Âúõ³û:–œzE§6·o;§ëè) HÁT(Q70šíÜ–›ˆÃMªcBíÞ«·æŸ‹m|-’Xv€þÓÙº²AÌXoYÿYÚä“Y«Ïwœ?…,=uâ’á¾FÐØLv€_}e'u ¿ÛKBÿ@† °qðƒ©Ð·/ïû5þ}›¾jaÙ=lº¾-ãGP'oܱwxˆO2ò ˾°·�(ìB÷£ÑrhtIgm¥šp6T£Yƒ=Wߘ_M¼ªDå>Œõ“ý|Û=ê*¥¿-›Ö†i&lÚy}G ÿÅë*`ÙÅ@Ëh.äuQêÙY·¨n^ ¬Ê‚’bHo¥ej gð—p@_*÷CòÑ’b5…/S,�3ÈÇí”Ë7©�U,  Ý`öÐí˜ñ›Uñ�úí�üÅ47HE‚ ÔøŸÛýÌˆßÆ†}€XüÁ¼'óU@UëL |ôÙkpá\ëªÝ&·p$]pu�öý§ŸŽÂ§ßË:°»G5ø‘/ɤ*!>æãŠÅè=X„„5¯øúªFë(£mÛ$¡^.+înã´ƒX8üºvÎ|mÀ£ž/w¸ ‡+¡P…zÃÁÆ[c;Kæúúñ„2ÚÆ•j¾á˜Ì|†¤®½wtŽD£ ®RB†ÅÿÝäÍD‡Ëö-M”ê4yýèŽý¥±îmá�{y·–´¢cKiÆë…Æ äCã1Ëßæ?zР(*mó:Ó»ÒÓ8P²“ÞÝ»‘K™&o¬1¬|œîkµ�ì•óTFk.<Ù’ƒÐÌŽ4ærì€Nð˜AœÅ�ŽÓ:ä˜dÃe‰Û’"ƒ{E·Û– ŒQÚDÑœkxõëü�O¾èj…ÊŠ¶æÒno·h(l-ŽüÙΛh®ÿ=Ê‘T�PΓØ# V�‘!sU5Ò¤ŽÚËle�ª«eW³Á>o�(1Q"9†¤9wÆ7�àÒžQÆú·ÙÊ‚úÌ}½­¶YéýÇ#&yZ¡¼#…Gí� À'|£ÐëÞÌ�sëù|Ò¯¡5!§'èÑÉAçæLÿ‰oåîî-2Ši8+‰EàŒž¾^öíKgQI‹~D¸‘{8œO]XM}Ô†íhyf†T�øZ_$q|ˆM^û‡ ëßC¤>+³ûtÜÇΙ[6@¡êúGóUu/«ë0ý6Y# ƒK)ßÉ.E'%á5•UeesíBg‹‡DÂØ–ر™åC1È0ÞwÀE�HOD…˜ÃìÖ±Û¼¤3*XsûÅ�•må«QÊat–Aé% _t•¢žöÜüô'é‚N¶ã[@V[RQ š-¸Í f„5~ÊŸÝß�§ü|gÖ.4©îÍ] ²f'^T`P½0tÉ×0'^&ð˜â݃‰vCs»Pû”ÉwÌ\ý|>«+"Œ}2ùªH¤&(E:ZPÚw˜G»øë½Æê‘””BŽžÊ-8¿vD\§Úަ?ê©”ø­ˆX9_�¹ÄZظeÉä梾¯qO] ­k=¶Ìk¼¼â-Ö¯$YÎ ËJ,š»ßyÏÅVóæÍéóñÓã§Ç™]:ŸzC?S1ö½ è‰³§ÎÞØ¿�u½5ùàã ƒ‡òÿy~íæõ?^�_ÿ|ÒØ80÷eæ–‡WÆ©È5jl{]Ø /;_ëÞºæzžÖ^î/Šô°àè@Åç«Á¼F“ öõ�Ö˜Õå3½ñ]z0¿³V^GÔ­\övëø®ùv]5ÅOSpc>‘²>׬ԹGÒ–�ýŒ×üù�x?b~Á Téªv»Cx„ŠvŸ'`‘„E‰ð»:)ð­YÍm)h®tOî�±Ñ$ˆ$¾ôfñQ­§¬ÈZ¨/qcY>à&}ºvíý�V6å;5Êø�x{ôycèl^»@K…2¤ë¢hßÒËóE —{¯�£—FæË8~§fĦ÷·¤­Dlj8ïIbHeERW:“ì¦+ãÃY -ú44×MÕž}mïì:€œ9i ÐÔœm´l‚Œì†¬ÐΖ仛50Ù—{=Ò’Û ­Ùβ…µ Ÿ]ÊŸ Þqlé ª°.>Äx¼*Ÿ� ½ºÄö³œ=ÖŸÿô±Iö­&.b[LWBXj’:ÞònÈͰþs!›Î™¤Oòss3¥ÃŸîÌìØu�–ê´/hHhÔ¤®<¦©ÚŠ4£?«­ÑÕ#êùÕ(ÌØ…qÉoó¯ï'#¶ïö‘ë­:[h¿b»TF‰NwýG3l†ZòaÖ=Öeg„ âÞö—­)ÞÎjlô=Ä#›,8屦U1“—Q}¿Ó¿�ЍsP5XŽ—èâj+‘Áý‡ ز�¢Ï;ãc Éråp—Ñ_e]ýµ1LClZ-v]ÖŠ¹µƒú6Z0—ÀYeß±2c)ÏíLì:£#–˜tæaàÝÿýÃ;è7šËïn;ŠZê*ä#þ€™âЂ¾â ;³u9°¶o³ª&¨úfT8󄯵s F™×Ú­°Ù»züª^¡j KÏ3tj·Þvë² £�œ�º«!ê±Läe~à¥TAs‘µyí�Ë’@3΂ÕúŒ[%JôžJ•3Û„GÝS]jÙxï/œÌVQŽ7×s%êœs*/+ñ¢�;lŸÎx3%/ôÒ©…½°µQ}Mñº-­íÏ/C#íéW"b(sá.Éå—�OÍzJ>Áz?<¤n-àË8yø:¥<ÁƒÂoGõ‘CYË™(e-\ÈÈmÝ;2.×(ºrѲfþÛ¼íÔRDÀŸmê´¶´>X¦F๨r§Õ¢Ý�ûͲU°ÒH`¿[WvM_C.uìá1–f%AaoÁ4ZKbÚ&2¤—“)¥«WqÅïMûËyˆ}3›o"ÅÖö~{ CØP²èåvå•_>v&’Ž«K‘Ó3FºêºL�¢õHª!¡Ôxc`¨úlaëþù‡‹`œûò¿ÅH/û¯ :UFY)]ô¬Ëù¥uSæaêr!ÞìR]¥–kdöë:¦GµhÎÀ3qvä£É+—2\¥rå»­Ó~ÈToÔ±„{SÎëõ.¸-~;>Çh% �1Ä_ɶLa �²aÃM]ܰ¸~,JÌ�ƒò^Êke½¯¯ÊƒúÀÊ-·õÏÙ°®GÅÜÖ~ï\ž.:(à`.T]S¨PG�¸4‰HïzY(Ü\ªs-Z©ÂÎkÏy=UåˆsÈB(.ha´=móH:b¢�#YÃ+AÛx~0d¬;2ÍQ—Lzœî6ºߌ­ü[¿~5¦fìÉÁòõ�Ánw´€ÊQ}àV·€ÔÛ’_qÀ­{3\›�lUñDäÒo7»VkîòD¦ÂÒÎ…¥U’›ºÿHD¹S…Ù{`’ÊÐ�upD| < °¶˜kJJ%–†v�aÜSYÀý5v•C×Îû„ú“€VáÔ‰q›è¯èi1ßK®íd]J�„«KxÊ_ÿ©ùÇ«(T-�uó(¦ñ©ó»7½ì°“Ëø5¹tÍbMe� ¯»mÞ*ïGêBý©í·ù0¶â¼#ȸg‹fAU@)OUMþÚñ]È6zW`w×}0zêï#6Öâ#PÆyþ�žì,9Œ ¹ÒÞ È> >Ÿ«‘éö"õë¢×šY3÷Å å&Hwá<Â[–†WB( ]±Ú[y”ç^xPÏ¿IxgèRÔ! &ÖgË}›�þõb¥tòUrCþrrõ_�¥ÚRŸ»ÿê÷…e^ޝz–ù7½ ­"`¢zOÙ…ÀþSøÐ^Ã_âöV…9aì?M)jüvÑ,_b¶2“õ—;‰Üµ¤:UO¶Ûõ{cÄüu_rÛ?&@}kV�ä¼M+æšÓÂ;ÏL` ³ÈX˜FÅrò„íùÕ.]E­Ù6u°¯šø‘ïÎÊh‰Ý»äM‹Fç§ŞTnGªE‚“yÚúâ8ö¦dˆ³FJq¾oúrª}콺Ÿ¦¹4»Èqkú®Ä9öí÷ÏÈÂ]õÐè¿énAø�›“ûhPSZÈœFà :Öc™1Wý_�ú’Ë4é‘MJw“Ä®™ t~ÄF,¿ d*uþ‘Ÿ½ªtðS+„Ú¹÷ç$�nç7ã{+Ø/'¿ÎÂU€o u—­GèÂÂ:Ç@AF\hº'ò™µþÈÓjŒ«[ª f®a&K�‰¬¢É;cܵf=©…®Î5ú• +Þ÷õNÙÕÏÇš‚&e&ß�ðŸÓNPëÑdiè?|¸Jƒôêo»P¥ø>¡ý‚ y™c¿é7åõ¥X/•ÍÔd+Ô¤�©™Jk:DÖ.3(Úurñº ç ˆ)“xªvW¥Ð$kq8ÚéðpäS¥çLäu úqªJô¢°µ›ï=’m.³Íw®Ì„2?wG &QA7Šøãè{ ha-â¡ß{ I I¦hwÿ„·)²7•Ó]Wä�û¹î¹€ìßâjþ™ïÌ;t³�c/"æný¸ú: Æp8é¤c>[Hù,|f/VܶH8ƒë{+rµfEUG44r9'� y«*âémª¶F]u ·_väêo0ü é †·¬‹¦ï³vsAï¬È<£Ô^¯}¶¯±¨#·¥™« xwPŸ’øÉíÛ©ˆç†1�T—ýWù�²Ïm‰<)[jG|‹4ÙvüÄyá¼²jT;¿P3K‡þ;È’¶Hä¿`f»”aNAŸt<#íù× þÿŠXM«’›ÎàÍ—o'w@A�x£én—æ|GÀ¦ò;ujŸèlÄ5e°£äËœ]!nã ¦)uäVWž¶áÍ-«l äNý¹ûþÉÛ¿Vk o½oW—ÕJ£Ò! C¤oÑ{ýR:p÷WºQdtŠ,Ül�:oj.žz°y7æƒÚ ŸÎÓ?Åú/”ÒæGŒJ�Áúôœo“­ªºm厛¸ çCBRƒŸØèñqÃe”§II5Ûé=ŒKº•º¥xTáp+©NÓf¦÷:ÕO——5]GuÜû±ÞN¶¼©*:][miœ.�³» USÈõ�›UÖ¹±Œ†ø”Õ‡ßÈ�QÞàxÄ8?üqÔ+Ò�ÔØ¡4ç%¥$‘ƒíþ´¬?�ùÒ‹§JË ZMƒ¶/ #Ÿ1‘û¼{ÆJW Këñ÷NÙ tg_¨Ô,‰ÛÎÝ­ š�¯¨PŸ·¤ @DÃDÛ¤lVuzÀ`räæÌýZ5¥ÕæFÎDmfd‡üÛ_?Ü801tõr û:Rmuå·u« Öñ›!&×TˆŸ’ϪB4,šÎ®2ò¬ÁÒ•�)͉�m[ô1=9«x†|ކ%ŠÔ»«eµ9ŸHåÚùnþÞI3²RÖ¨æ)Ç-LúuÅ?òUˆi�.…\ < à¶×£×ÅM@óï|à�÷ÓºÔü{Fäý•2¢¼ÂõdtÖ5‚©â:ï2u¾årY‰Æõ0/–áúåEÈnòÖn¾šÂx—Þ‡¿%H™£t2 WIü¥Ê�©0MËp빨“_nßGêõ’ÛA€Í¼»² /_Ëq #ÓðOÞÜR÷è‰yT™�Cê„lƒ§2¤ü¼ À5ð,—Ö&çðùšé�Q¥ÆŸ(±ÏÑY—Ø;‹ªº;þÚ7Kº÷ YŒüQ’Í`@…œÎO&çwR¿{1mºÒÈ~´õg&à¬ì ßÃO{FáBJŸƒŸ»Ò x¸ÁµË% ½«Á#ºÙâ?¯+HV­ÃÐ<ÞÁ? 6G�Ç÷,¼¼›­äÿwRŸëo±Oyåú¾ÛõCšÛr³¦äŽçGmÿ@�H@i}Ÿ}@@mQÅWÑœŠ‰Ö'Ò* §B5á냞ÐÁá ¥éæŠƒuéjªŠÂI0ôˆ1;tá£9p\¼þ{Çí!ä´…h©÷àqàëë¡Sž£¨ŠMÍNŽ—£Dñˆ÷Í÷G›¬¡”“H líü“»¸'XvNîU>wØé„4a$‘¦ò} 6ôQ:ø5lØš“ô _:�Ô^m¨Î½gw:ñ(6o!Q§å¢Ê;T{�Î] %Ï R='l=zx¡ò<£¬^ do%ØÈ3MBƒÁò&pï´òÍH:ÍÛÌÈåÿ$Ž¿0-SÞP+ˆŸ‰øõã ~ú}¦Ó:©ÏÌÌk”¹ÿÕ2ºjºô±«Jev¶˜¾ +õâi�q E4«4!ÞíõÑ--¡´¿.¿9 Ø5nºàoà~tB@&¬ý’†ÿnbUóÔ=ï«÷¢¸¾« >_È„@—„¾šñ©ä99>âåî°x¡ÿöÛQ0f�xÔKéXZ',ï|#Ú¦OÉì‚ÓoyÎh•s ßâ»òŠŠÛŠIé l…�ˆŒf’‰õÊB£æöçÏÌòlÌ|X}E³}$bÃvÕ¡åYþm}çR9‡]W){! Ûd¬ˆ ŠY(³ÐF¬ ÔÔâèÈ—Ó®ÓZÙ·@*æ#üÐÛ9“½ i¹6YvÛüÅÍûp{Y%'þ·o©ÿÇÿWþíù‰æRVžÐ”}JgÔ±M‹v˜Iü‰wä#•O!r`7öòâà®Sº:ê��ªÒFÇéä³b Ìhí׃Ôyì4¾ulc8¥xƒ†‡AÃ�áTß ¸Þ¸INŸœÂËž1§’ÜÐPoTLÃñ(Ò­v: •Y[2Ü^T›0͕Ṽa™pÊíäöÐ�F¸¸…ÎùÇB÷=‘„“óþHúJGyçÐI´ÜèguJ¢tÕ6!{†˜°A� ÐZ×_öÓ ‘‚ÞZ½Ñ8©n•ÝrrEç$™)_·:‚1ƒç$œózá89r)äî×?jç\2’W•da4G°¤�Ñë�‘¶€fh¶^u� b�Ö ¶ˆ/ �­®[§s˜•¶©)`Uª¾O„Ìâ ôk£À`üÏÀ~:4êÿ8Ö¿-’0ÛǤ›ëBîÎawäˆ:QÒ+-ú�óB•l�-‘§J‚¼0L1×F~¾ÎÊÛOΤÍ:;¼®a¹“æaѶJ–îÎÕª@ó6lt¨‡rú.ð1T® Ò’H‹:Vy§dw�,}ÐÄàÌ�©’úrî#¯!UCõ=ÔŸ‚°Ç�H£%oí¼8mC¯%Åj¢[黥·n4ì�xåÜ}H·€OÂoHo,{/àÝœaps6Óý •"ÆŸ9O8d’/ç£dlÝ<@k¦™{Üxæ2(æé믭£ü™äóåyq˜87v:Ñçt×8kQØ�D?Ø‹Ђ>B>l·›M˜‡xyÔPÚ#{–çÎR¸£í/g¥Ü ×WÿPK D@º3ð® ch2.xhtml�UÁrÛ6½û+¶¼´™É(¹Ô©¤Lb;­gâ&Ó*Óö+°(šýúî¤E¹9ä ¡àí¾}û\½}l4œÐyeÍ:[/3@SY©Ìa�}Ù~ÈÌÞn®VßÝ~ºÙþõùê@ç?yÿñþ²¼,ÿx}S–·Û[øó—íÃGX˲¼û5ƒ¬¡}S–}ßýëºC¹ý­|dørÉ€é!ƒÌ(C LdŒ_»¼¾¾Nˆx…¤GPAãæ¾€+q'<®Ê´tµÒÊ¡v¸_g> }�ŠÊû ÂÐâ: øÊøîPÏeP¾Sì¬8áò2 ½Óâ+Pr�Yƒy5îäÁ‰êˆ2W&wxR¬*mšà¬Îa†\b«íà³Í'ƒ0Á`„�20Á`„-€q0â(õ«ÍªÝ¼ƒÐ£>a¾U°DÛ‚ò t/?'¦æNñÀ>`³ßU5?«°€tUç” tí÷n7¢ xGÀv»‡Pã™]LA&)‚ˆ5Pú£±½á˜VØl¸6·1Œ£©vHN¤†²;žÂ #ãÙòM Ûé Íäæ>ºˆ¤_Óé Z}†ù¨ð½CÒ =�çi‰äU>8µë‰›´,àN�…© -‘2!Ùýÿç’58Ü"È¢e¨X%;¡õÃУW¡¾œ-j1göa å£x¸N/šTFÌ'eGuxl.‚Á–�[ÝÅíIdêÄ8ÈÑ_rŒeh]«�£DÈöS#ñïUº“<>µ³Ý¡Ž4¨‘h$Ýß7–Ì3‘/YÿYS­¡RíÜ-º¤)7ö¨WZsª¹G¦{€ŽòÕÀc˜vÎC®3†…QÆa*¼Àlk:íª¢ðZgeWEAè¦ÀÔ%fGz4–˜PœGä]Oy¥T|šá @ZæwBm¹Š:Þ?óK‹�t&ÅKÊ�¶”~‚5l4'å¬áÿ‹dÂ'Ñ…öþ!£¨=w"fHuOWÒvn®or…¨œõ8½‹!�Ƕµ.P­wN9DŸã(¯Hyºº{ó!9ܱ« ¿Ÿâ®ÛsãÓ¡<,évt#m|PuÍ…ÊÙ¸¯Î¥Ï•¡Ùö狃.˜~¾7ö`$ó�_£ ¿{�Æûìû£çR†Ïm Wm‚E.`£çÁºŽrk‚ÒFÊ Õ¶ÿ ú­ƒEÿ(ñú»hŠz:¾\e­€¼VÖì×o(¸~àE©$WŠmJ®HÿÖ�nú?b ‹1ˆ“Çn}ˆK›0Ü09™ô!&-„üˆìu7§­€ïŠ›õd?Ghw•á5Êè’}Xһ耈k¬ã9¡Âè%ÝÓ=Û&÷`-ꉂ2såN±|AC¥û­ïãÚXkV÷Õ€vél“F�Ä߸±¤-ÎËúNŸÆìÈ·œëRç©D+CöE´i]�PÜΆJdQÄ<ÙI´“ªmÛ° ã`ßaˆ€Sà�Óàæ[!æ9’»‘Oå®°y «R×¼ÊÒÓ„®x4*ôÚ:;�TC#ÑŒœcœ'~Ó–´1sºëB%¨cz`´ ~°ä¹•МFÔë¸n=-t§[As.†§Õü¥]ˆªfó�^%½�DèŠ*HæM š*¿ÓÚUÚÑAC«@^íjN(2öJK²ÁYÉi˜‹4Éõ¤|¸¹# l7‡ë  ’…´‹º.dó¡’"m"ì¯cµJ £I³Ù(bLáDoC3ƒäæ`„œÜ®jû/–YvËéâ÷1¹É½Æ©€ãϑۧ—�,oo©°‰^Ž÷R¥çoeºñRL†îúöä&Íë€ðéQ×it1±tÓ`.ïqŸ ÜP`ÝØÕ’¾¤®úMÐo†Fu}^©¦‘¤¤(¼‘¯‡¾?ÖK�N™ÀÂÓ¬§@rO ®@’ÓUÐ_·’Of­ûÞË¢Ü8VtÞ+SއLà�餀ƒåÉH-¹þ +!X¢Ë$•M9¥’ùÄ?ÁkK£;:‘ûÌW6‚9;©B>Ž¿$$´ ßzÃG^&ߘëgÿPK D@^ö³0F® ch4.xhtmluWMsÛ6½çW :´ÍŒ$ÖÉ¥‰eeR'™º“O¬LÛ#D.ED À dõ×÷-@H”ãœH�‹ÅîÛ·o¡Å«ûV‹9¯¬¹š\Ì›2¥­”Ù\M¾¬ÞÍ~Ÿ¼Z>YüôæÓõêßÛ·¢ °¿ýòÇû›k1™Åßϯ‹âÍê�øçÏÕ‡÷âb~Qo?NĤ ¡{Yûý~¾>·nS¬>÷¼ýâ‚7ä÷yª NˆŽŒñW�ì½xñâEÚmIVx4-onnæâÚšZmEZz²ÐÊlE㨾šøpÐä¢0/½Ÿˆpèèjè>ñ·#=6šˆû‹áˆµ­|àÅù1ø�ÅgBU¼Õ:š•ñËL™YhhFf§œ5-™0YÞ±�HB12€·gËE·|m„ìº_¼XP»,‡ƒð*”„ Bƒ¢`· ¼¤Õ–ôA+vÒ̞ȈŠ:m^üêƒÜÀ~*:g«¾ ¨ï_w¤mGn€Ÿ åÓ¹X5ð«L©ûŠüËEÑ-½^Ëågò¶w%‰Fš @ñ±œF%ƒ\KOSñ�ÚR– USañÕ‰µ,·³'·S%ùE_ìïÚQ…“•ÔÑjAÎH}4¾/!½xÝÊÿ¬wÏ…ubµW†G/·äf)_` ûÑ6Ž­”ÆUÂkc}0²%QÃI ;nJ~ Nèw¶Û–‚jÙѸfpˆ7 ¬rÑ"”óBŠ�²Z2ÈÂÖ¥Ð;šÕ²„›©Ø7 a9úÖ+ß €üf‰‡*rî¤;nެ�mã‹b°Îäãr«˜ê:F AY:ë}®þ4n•…�±aK‰AšÐö€‡|ˆ`슅’‘{¨.RÑ:QZç¨ pŸ2!Ôµ1ÁÎ=ûÈk̼ôº)E+aÆ10ì•æ ZËÔ6*4ì´´-ˆÚ*Ï|aƒòD‘ÿG(ñ?0îÕʨ ÜÏßz.Säé=åŸÑG,3Éñˆ‡ì5¸�%Ó#™œÕБ…C°äçn½(â2óá³T˜ÏÆî.-zŽûD&Àô`{×9d80‡¥hTô\¯G;:õ•· ùšëWYCglÌU6©ù�’³hIn°,>©3z?>µVhâ(‡Ë ‘Ëm ›í”€~úÈd-˜Zýœq§4ýqsµwÄx:ÄÄ…?µÙ)ž³XŽÄsÔÙ©Xƒ9>(P–©»'¹5ä=ÄK¨%%é£B‚VAnÉ€ÉÑÇ%Çùg=c¯—üæ(È€…å!vË`Øz{pBxrÍ4†ãJÕ5V�X§%k×í´G­dÍmeÔF»«ØŸ'ŠÆ­4q'¦|óäàŠG§sñ®wæ”-êØq)zÃóñ¬bÓS]!ƒ¸&Ä}% zÖÂ}¤àé‘-k+îe¬T>¦NíƒÓ�[jÄa¹%>Oùö4¦þ’;)î>àô[Çs9¨!ÐC@ŽªÈç}º›É�Á8S¥àF©Àœïúž+F žè«…Ü7P°.JÐÝqÚI~kÕ±ÒÈžgf•6ø\PÌS�Ť°ãKDZy:l’0v"sí¤aã�Ôc¸’¤›P\™_xJ—8û´|ºÏd•‡ñPr�bc«“´¢a¹òš$Ôà%‡Òò¤Ï”fS?j�#øNch?>&f™8 i‡ä@°ÊâpËA2ÕãÛ79,ÍÅë2úÊ%Ò{/êÜÙÇËb”àCU±µ­ö&A‹Áu–{$c:å+ž�‡0‹}¯CT�$€íZ‰�žî�?¿†$†R‘O4â½�`Å×S±v±­2oøˆïe*hÜá'M¯¥Ë³…ï¢<³êžo5ÐŽÆn,hÐ1Ñ;oçú]bøzœx…f3\jü#4�wƒuktž¬¢�ï¢Øó}'µLU?Æ“r�1LxÒé69åE¹l-¢äû˜?b€{/i@4ö©¹ÎiÇ ¨XÁ:ödC†ÿÿóY>ùPK D@õÒMG˜ ch5.xhtmluVÛnã6}ÏWLõÒ°¤zó²i/rÛ6@¼Í:N/�´8–S¤–¤¬¨_ß!uñe]À€mj®çœjöé½”°Cc…V7Ñ4ù9T™æBå7ÑÛêsü1ú4¿˜ýððÇýꟗG(Ù¿¼Ý=?ÝC§é_W÷iú°z€¿_-žašLÓôñKQá\õKš6M“4W‰6yºZ¦ïÞ}:õÃï„;Q†˜ŠQöæŒïôúúºó¶È8}9á$ΟþLàŽe[ª^ÑìD†v–vÏ.fR¨-77‘u­D[ º$³6×Vx9|wiøoPE�’ÚçZkÞúÌÓÿÉGèéœBd.^w6±ímbFçXV � Z]:�æ+o ½5 ÖÀèÓ[ÃhMy>ÌgÕüfXÎO|f)�� ?Õgà VU�ieë’âj";œ*t�6[Ÿ¨bÆ�Þ€p”6%“ +4Ì‘(x|geE €P™¬9gŽY§©*øÉÖYáC,ÚׯϠ Ük:y¸»œe³,§Óo5Ö*m­ÃòÀmÉÖká_½ç2e“[Nί‹ÕËŒ =Öµ[ëZqÀ’ ¹ñ¢­Ûˆwòaô0#ÄÎfZ`™4/“YZyïN!—bÛæ\3KÈ:0Œ �“²…’)–%ë6XZV☋ñR(aÉ�À öèÿhÁÔÊ ²åXIÝ&ð¤È¼‹ N{CJ'uæ“ÄC’¡²ÉHcÉZ`Òj(Ø÷•WFï'ÁQ‰Âð@¯@{†Éc”� -™Ù�™�sF%˜#¸Fó/ØÀ¥È<‹Ï:ÏeKžk¡˜¡j­EwÆé¶dÿRï¯W=q¸C·/O1ËÈΊµÄA´æŒûªΡ™ÀoZçdº`Áäó“4“M9²<#>´Êç«ÂÇ£ž½–¸åã Ëœÿ Ý¢—?p¢� Ô¬iH� Ì„:÷�ŽCf)WŸVzàŠЮú~�©çÐ&�í£zÞ–az´G9d£²ÒÌ GÒ 1aà81â2‘'pÛ ÊO¯?ÿ¾-[èZ’¨ )iÍ6¬òÓDY»¶ºÙEOÈ  ‰õ}Jâòáõ2¸…¨´}²‚©œÐtú`<ú <Ó�5ÂâdL?Š�:φb}‘åÅôÙã.û¡hÏhv,$°ÝW.ð‘Q‹^)Jv9Åñ=�»”èxM!¡¸¯ƒ¿ðRÖÖ£YS}Tn/ˆ^´ô³=§ˆ—CxbLù6~ 9Ž}0]õRžà,6<»v�´F}Y¼“ÁÀÃÚøŠ„µ5N\�–;9çmµŠÔRWä§hŽÁ{-@ÝÌnŒ.· sPK]uàgµ1þŒö7¯»�3FGaèuÒï<Î6âÇt5Èã9<,½Ðôo2©™š_üPK D@’Š sŽß ch6.xhtml­VM�Û6½çWLuh`mÙ›¢m¶¶ƒd7A¤m�núq¤¥±EX"’²×ÿ¾oHÊv‚´½ôdKšÏ7o¹xþе´gçµ5Ëb>�Ħ²µ6Ûeñáþõä‡âùêÑâ«»_oïÿz÷Ššûw^¾}sKŤ,ÿxz[–w÷wôçO÷?¿¥ùt^–¯~)¨hBèoÊòp8LO§ÖmËû÷僸Ïçâ0þŸÖ¡.�!F1Æ/¿à;öìYòˆ¶¬jüZ^ý>¥—ƒnë+rܲòŒ?ƒY”éë£E«ÍŽÇ›eáñeß0‡iå}AáØó²üÊøŒ—F•ð/s¶µ­�’{þ�ñ ߯I×Åé*´Ç‰ç^9x²—‰2õÆÔ–}±ú-ÛÑhGÑŽ`'A)Ù!öõjѯ^FÃk¤$í)8eüƺŽkÒ&XRôØX3©yÏ­í;6á ÕÜ·öH¡qvØ6òËœ£Þ,Ê~µÚ0ZÝ7L îV)}4X”x–D꜊�®”a@š Ÿ¤"ÑÛ\ƒ!~àjjÝJ3¦ÆÏÎØƒ!%æ§1ú”>xP ï3ÉnP#§¨*Äø]§ùž+½Ñhu}Œ©1i’zg+öþ*¾¿h€6ª†}DsϦ¶Î‹þ�ä:@‚^cä´ÖF¹ñ­òžƒŸ.J`s‰Où%BAíàtÎ�rê¡:WzYQNˆTpA[š‹v¾ñT ÎIS€x£·S’ÄŽýÐꢄ”fAiƒêmŽt&PRÂÄGLÒ�ËG Iw �Â¥q öÚD—ó 6{í¬�¿€ÄHÏTÈcÕz{žô×~„MЧ‡'Âè”êûÍv%صj0U#]{Ûq#;à¤òØe`[�@Øâ�M€})—] Ëk½§ªÅ`— «…îÝUËBw²%žçÓÞl RmX·BÃ5cb’%A{•wpæIÖiŒj,Aœ�¬:U!R²èÇì•ê¥ábõ…�‹\¢?‰´ÇšmœS8p»çÉFU3ÔÁ+©Ó¨9‚ýšaÊæL  qûT‹�,' ×ˆÉªë[X�Ì(Yw½õ^Ëî£Ð›AU£ÌVÄ~²Ù™W¨X>¹¨jÆÒAÅóí1Ù ­?Z«j7F»Ø­„B¿º; C°¶õ"óºR-DÖn6ìÆÆP��ÛÙðŠ: +Ú•VW­u«C¬ÆÙ¶=¥V(Ž÷Úþ4ƒOÑç[Õk/Êi/ÅJR¡`‹�}½ì¸;¬kíXFu$£DÖ‚Ö¸ð8â£0DÀŠhfµ{Šjí�]<õFÄ?³9%™ÒHxÎ�ö¤»œ#Ê® ¾‹â†áÂ5âðqÐÕðüy¯ ìÇSjߨAĩň=5j/,Œþ8ðÉæÍ81`ây!Áx»~ÜýÑìñh“꿞Íç“Ù·“Ùw“ëÙÍÓë›ù÷¹•'$ÔuÃÞÈDQÌЭA…Ï‚ìç³Ùè5¥÷ãt”á–õÁÉ1±Ý·\oÙ¥“âTR¥ ȃ]¢矨�j§ÍHK[Oé…9f*à |;m³áÃçèÅ{F*@t š�•$‚ù°Çé)¬0xr1P\3í3ó$ïû´pgÁ�"+ç‡SŠ‹ê1é‘ÔlaH[rV‡óT<»}ܤµµp€Ñ‡Âµ©e0ÐN¦ç.Ê?§ísñ€Ãí û�¶æ¤4#YçŽûiæq¤°¦{ ñ’‚,9£– ž:9jTˆÌú§ ÒÆÙN’ !=WjðqHH°Æ,vãÉÔéZ./™wFo›1¦¸Ð'Øe8V 3u:­/Ï{I |@{ñ¢ÑòÃX%;g³{Þ‡œW°Øâºnm"²§dHoãP�Žœ/‘0¸¬æ[j)WåÕ£¿PK D@M|%ѽ ch7.xhtml}VM“ÓF½ó+::„Ý*KŠá¯)K &§ÔXjYÃŽ4bfd¯óëózFòz)Š‹?FÓݯß{ÝöêémghÏÎkÛ_eËâ§Œ¸¯l­ûÝUöió2ÿ9{º~°úáÅ»ç›Þ_Spÿý§ßÞ¼zNY^–=~^–/6/èïß7oßвX–åõemÃ/ey8ŠÃãº]¹ùPÞJør)óç¢u† 11Àôþê±Ë'Ož¤ˆx—U�· ƒáõŸ¯ zïlÅÞ³_•éðÁÊèþ†ZÇÍUæÃѰo™CQyŸQ8|•¾ eüîØœ_ʨD|9ÙÚú(%—_ Ž‘®¯2¾åj œ‡–s5 ¹ò¹í9·.ï¬ãÜÙ}>ÌñÙú:Åb1¤¹,è]êÚâ�Hc›DÃÀUpc R½«Ø^̓±G¹2ìÐjt¥D¥SG=ã½?ž0‹ãü"µ‰¶TR,Xú��=é‚–{ÌÝ�à³,+Àçn½9°ÙsÞ¨* æt�Ô=¿¾ÅYÞ£%$Dš)=¨ZaMê™k€³4È€Þ݈—­$žh*•7£¡­ªnžg·×•øâ8 qcŽ"1’ná–²x´c´u�ªŠæk4ð}ànfxæ§‚P¼ÕbVE[§¹YÀˆýÎ`¬œê½JìW Êôò\ãÚzc•,-Äåà)¶ 1� rŽP’›¤;9Žýh‚ŸM÷år2Å©/’ŽÂ=DîÖÆ'ïÇBDV!|¤=A�,NL Fü£ý œoŒ´¬öJµ5,O5cÅ üe”ùCÀg»¥Š;£Å4¬ M 2�àæ{iáœMA3ÿæ=<ý¸E-øV®„ß÷ª§ÆÙ.­d€{íµÐj``gã`°wNîýxpœ …xkÒ� ”ûÌÇÝiGPš&{ÞJx.4>�ƒí‘yê-zfêPTÞY[Ë:«u-Dî´ãJMDÙ&) âsô¬ÓƹSï-wÓê@ôƾˆúà?Éôg¤”?BëÿPK D@·Ój„ò ch8.xhtml}UmoÛ6þÞ_qÓ—­€-Å-,…ìbKR$E’�Òv)ñl±¡H�¤ìèßÒd °DÞËóÜ=w*?>vè¼²f�­ò“ Ð4V*³_g÷Õ§åoÙÇÍ›ò§ó?Ϫ¿¶Ð²ßÞÿq}uÙ²(¾¾?+Šóê¾]V7×°ÊWEqq›AÖ†Ð(Šãñ˜ßçÖí‹ê®xd÷ÕŠæç\™Q†˜À¿~Åwuzzš<¢- IA�›/WW9l­ P+øË"]¼)µ2Ð:Ü­3F�¾E yã}aìq�| E|w¨ŸeP�1%ª­9íêµdtJWï@Éu†�=Ý-=ºƒjÐ/J,ãÉd�m.¢Ì@пŒ÷nSö›¯Xƒè{Â!xÛaP™ã#6C@ Êx%±æ`è ±&eÐåðÉ:2]¯qÛËm Õ©}À Å…ÎÊAãé÷^4-ÂeUmÏ@þŸÅAüÛo²­l׈�—EÏPKœ5ûMEîáˆú€Ë�h… oPž€1�€z$Þz·œ�ʲ˜\A ÒAc÷bk8#³¦¬ß± $P°»Œ• ¥Mea 4E!;4è²q(ÂT&FEžkŸ>¦:ÃL"uÐÇ:¤2MæP�s�8pêÚ�Ed •h& ‡èC¤ÏGÊ0§ÐŠ]çê]Q7@ÛFh�x@mûˆý�E¤8]ëƒò*¨g|p7Ôcš aŒGi:º¥PôúåfY O¸´0ûAì‰D-¥AC“KZŽÂ¦˜%v›�@�§¡Ã² ×ER†ò 8ªÀ‰'ˆ?³€ä¤VžG³mþGù”÷?Zå§Xˆ§6Í…ŽZWiö8¦5qR“2"¬F¨_ªäùÒÊá…#'aFxP\•LE÷v޼Ħ¼Fx鉹ᯠ床£P!ÍÍ4@O°á"­6Ïwz …„ßE]£“ð‹ïQ<°õ·›íömË;”ÄîÇsLg!ØÆê·s)n-o ímâýC¦Fjˆ³´(¡Ca|2²&6j"H`1úÕ¢yx¶n¢j„Ir‰Òã":{PrÆÄsÆž^ýÐMŽ‘}Ħ¯WÁ_ÏÍ›PK D@!¸kèDÍ ch9.xhtmlµVM“Û6 ½çW ºtwƶêäÒtlg’Ýd²�lêi½I{¤%ØbM‘*Iù#¿¾”ìU¶io=íš@àááA³WÇÚО}ÐÎγé䇌Ø®Ôv;ÏVïÆ?f¯ÏfßÝþr³úcù–ªûåÛw7”�óüó‹›<¿]ÝÒïïW÷h:™æùÛ�eUŒÍOy~8&‡ç·ùê×ü(îÓ©8œÿŸ”±ÌðB Œdl˜ÃwúòåËÎ#Ù²*ñ'êhxñéîînB7έ÷Èý4Ë»‹g3£íŽ*Ï›yâÉp¨˜ã¤!£xjxžE>Æ<ýöl†FåðÏû‡Ö®<ɳÓo=†S\=']"@¡ �]Ç{­Æ±âqã]Á!ŒkW2rÿM ‚õ” íùbÖ,^Û®nÚÈ^,¶^Õ#«L¾µ#Ò 7žÛÈ%­O¸CX�(þ’Ä>óšTÓªÔž)ª[R´W^s„Óæl;æ#m hã| ÏwˆÆGU7†G´|¿|Œ*)� TTÚ”ƒcD{ݨ¢‚}ˆÊKbWr­l)ö–¹ì’õüWË8ÓÖ<¡ŸÕ^ Iš ×4.èÈR‚w=¢ƒŽUºûùÓ½¸ìµP5•_«4ªl×ìϨÆJEœü�å·LkãŠ�äN!r-®õp «›åI¾5ÊÓµT�Ši›þíâ±÷xѪ-JÒ肷ʘSßVÞÃ;Kk'> e�RÚÀÎJÂ}‚W®I¡gιÖV×}˜ ×`JtÉ«ä=×`L%k9"“YÞ,f¥ÞSaPú<Ûèmë9[Ìt½¥à‹y†h[9~?Ÿ4v›‘2qžu$‡ø( œÚó$3IøàüÎ8U‰ežz]€Æ<…‰ŒÍ¬9çS¨Fufýÿñ`‚ ‡µLÍ,DïìvØ¢x`³çñF\`£ÇsEíAÔ.:ê/l²CË‹µþ—ˆU;{*ÀiÚxW'ÛÖêã×Ã-“u)Z©1Î¥Ñ,¸òä8Vº·}ÝxpCç1s‘‹(wºÏÀa¶m |;Ìøb�Q“™Ø¦ó“P ‰�¸*šq½b:Ëqðdü߯VËóÐ"=u¢5÷¯¦yVt€ÎôQFi~ Ÿ‹]«b·õ®ÅyTažø"—NæÄ½ki³X ¥¤ÖE¤R˜¶‡,ªÔe«Ì — ó²ƒP q{Kª[5*9â~4Q˜]òy2£®™>Ý�DIÓ�…“-r´ ©ì¹‰R†Â9(´@´|+F÷€X[¶:hK™}„ÛäOtø T_Ùa �0ikš}às àz…ºB+£ÆØPZ)×#¹êçÞà<)uÝ‚¼ÊàíP½\„FÙKÁ_‹¶í”rp[�Bz¤î€ÿd1Qô-’ ÉŠÖˆŽ²¢D®5yù¼Û&$þ¡ÂŒ�Ѽ*¡^9¯¿8“¼5PT-5¤¬­Š­O´üç€=P³²½ «2‰~ZvC=Ö"ñA i ±ÔuzA&(aÖ¥¦¼WÃí׉Ir±m�õ1¸ëÛãðà��v©�2œY�é™nˆÎ`þGQ¡r-–¨Ç|¯!¡ÍÁËâ[ÞÝB¤ §eJ)p Uɾï7d*L%­²ï²[Nž®Î}hÒ&Ã|B* YzÝ ­ŸÚ;ùB(ŒkqeT”š�Ub< Ń:ÈZ—1èªý¯…]¡¾^DYÕA’�“ùwTx…o¬r¨û‚|¯b-”qŒ=µ’ìà'IwÍ UK`ßñßgý‡Y.†‹gPK D@!A˜Ò8± ch10.xhtml�VÁvÛ6¼ç+¶¼´}O«äR7²òÛiÜÆ©›(/é"W"*`Pûõ�IÙŽÓ×^l Äbggf\¼8Ö†öìƒvö<›Ï~ȈmáJm·çÙÇÕëé�Ù‹å“Å7—¿]¬þ¸½¢*bÿíÇWo¯/(›æù§gy~¹º¤ÏoV7oi>›çùÕ»Œ²*Ææ§?Jø|.ãó¬Œe† é`€±áü+±ó³³³>"íeUâ_ÔÑðòúóŒ.uh\PkmtìyÿâÉÂh»£Êóæ< ±3*æ8+BÈ(v Ÿg‘�1O¿=›û›2ÊŸ‰Ö®ì$íükɰŠWOI—çY­ŽºÖóÔ»u¢å¦«éF…8 QùØ6SeËéÖ«‚7­™†ª�¥;Øly3Ó]0I0I0 Á„`ƒi ЧËE³\„è�Ý.WS<°Ù32ÑyRMóm Æ»Çr å™\/Ë¡Ë?'T³²ŸbÅÊÒšûÜ\Î Ñ5 Õ®fq¨uQ<[äCrZU:t!©È¡/€ þê‚B¡ ËvB^5º¤’ã:9ŠÜ†à<–4…³½¥¢RvËa’ª¾G v¢”²-"l;€ nOE†Êµ¦f¯÷ ÄÑÈO­mOõÈjÔ5Ÿ ˜ÑuÉʘyGÊ(ª�ÐF>P`à+Q—wµ•ÂÓƒQ­-*À¯k� øÈE+äµ6j“6�Gâí ¨‡Ï:è¹`Áêù¯–C ÂÅŸnfô¡¢x圽.�ªvPSm“!iƒÉG³ wÙ$ÏÀ=Ò>O¿u$¥Qȵè]¨6ð¤(FmÙ'?¤d8Y›Ï{¾g*`AOSuA#ŠJãT:Tlé ¼WT<jÔEüLbè“Å‘$';Žì(úpýóêêýÍ�ç‚ÞZd<)òò½–& ¯ÇW“Çm$ŠdÞC¯5ì/eJ/82:DÀp à÷ð<5ÎGú+ž×oÓ¦ýÊv‰ˆQÅïa$cÜa|W´Þ‹áO*#Á– Uïô(óQGÀŒuct©´$×"wÉF°ÆJEz³ZÝÞ�$} Û ,ëz­°Ë>4.ð€ Ý×RˆIÐP<¢ Ó7gzc´ »ˆU�é ˆŠ‘ë&†uÖrO2Ѱ � ŒÆ…8 >hàü^úÿ2xŽ­‡Ò‰<´…�%9‘@@˽Î|TàŒ'"×{µ^ëxóûiã`ãÀV¦ØB&ÎòÝË‹_yz|.A¯0ÑjfWöLH.€ê�Ô�7¥$ÕFW«(ŽÜ à÷ ň(A¿uÅnºå ´ƒ¥jL©CºÄ„ì°þ ’Yî³Èðm=÷L÷ýŒÄÚƒÖb7ºQЉ¾üO³È ‘y’|â¾rùø[>ùPK D@Ã×› ch11.xhtml�WMsÛ6½çW º4™‘Ä:¹4®¬Œc'“Níı•Iz„È•ˆX”Ìüú¾H}YÍôbK"öëíÛ·àäÍc¥ÅšœWÖ\ ÎÆ¿ ™ÜÊ,/_fïG¿ÞLŸM~¹þt5ûûî�(Îß}y{ó界²ìë««,»ž]‹of·7âl|–eï>Ä  ¡>ϲÍf3Þ¼[·Ìf÷Ù#›Ÿ�±Aÿy\„b€Ñ1’1þâ„íÙëׯ“E¾‹YIžR~•4jA>e`憎¤?ŸdõtÒè):=�øà¬YNa&‚ª¢%t¿ŠËƒjZ±±n%�ÈŽó¥ "ÈyQÈÖÐXáŸuFFTÖ„2Ö¼´ÈÿwÅ�'G?Êa¼5†"ÀÛ,Ι=) /6 Åø„"É ÑÄO:ŒT8í;X«ýûåêænÉÊWèÜŠÄGxЇÏ7ˆœõéA|C¹¥Ò²×´. ´Ã‹ËZæ%Ln['ËešÇ.ÁŒ{P&¹!½¦ÑBæ bì³â¼Z´z�ßr€ ¶é Ž´ xˆ8wÎUždçÁ|¦�wݾ±6–ÛÊÉDÎD*!…Ü©9r�s»¦ Ý‚é|ÇŸä÷\Ècòl[‰“¥BW\—¶A#zö|oÀÜ ¥ ©e ·ëë6äaú¸Å[J‹°v�këIƒ'fm�uÁÓ‘RàÒUi#C^¦ï<çHU!/œ<Åà=ÅúLVGÂôÿäè�MUA3ô½� Hã$1}8»1s §�ðfvL¤7gÇ ®×åyýÀ¨_EtšPZ€¶ö ­®1Î_«ÅZˆük²µ¦YQ÷Äç÷j"³V — ClÉ%>]žÖÝzúcÆ•A½Ö Šénò’uB÷+‹ Ê”ƒôOC Åã­TE©ÉÓŒaN¬I ‡®³r‡+‡O¨ª¶Ž5|,n¥iA+³lä³\!æ}îp˜˜8 i çZ«EÛ©-K§5?LÁM®^ÿbBÕT²]ý$ö)¶øñå`ÛzÇâÁLz”ˆ„GÌÐ(×”z‹–i»ÇÃö¦Kø&&Ú^v‘®;„î›y›ÝK¥ý%š±¦{Ê­+:ù¹³>,ÅÏIÌ>3œw-ºn²ëïpm¯H“kïå|®Âíç¡xKÒ@ õªŠ{¬0Åh‡yhjÆõü<>½¥Ê:ìÏÔ±ï~‹}*Ðò=Ñõ¨�UÃã0&ÙAzÐt‰�B/ÆZ-K—ÿcß�¥\·U÷Ù×+´Ä&¬°P,›<ƒÎÎY^Ž�m”Öi $]Ø›vñž…)µiØe–PL‘¡(ìxò¡ýLÕ”"~Œdª"NIÔe§6Oåz‹Üõ©¾î‹{údždY��Ý-DVôÜVµ j®4¤rgkÑÔCœ:¶»·ðM†×%ãE {&øãÈî.ɨ-Àùc^¤ ×v°É9ÖМ©Lb�ÛdTÅóƒáV­ÕNïÔ.�ñôŒ×=ÈÖÖ gË]ä«(A ‘`FR¼#âôéË<àÆî¨âµWbŠR³pØ« GjÉ%h»äœ±^\Œå‹ÓÉž4æR£¡ûì»ÙÌDîmoXÈ4Óœ{BZ§õûE¸Èž6Ć£%îDsû=°€Cc(z�ŠÁŒ ‘V*otàf©¨\:Í{[`VQë·³Ujm’©½åóÂ4w´‰ÆàôhIG�é¼G�Š×ïn?ƒ Àš —Œn¿5ÈÐBEããÕÄN“¡úr;XögcË8øÀ"†ù^4zˆ L}J¨W|Qa¥îèlPàx§“,êàJ-•áŽÅÛëû—¿ÿ"ò|'4‡â»}ÛMË áqÉÓÅî¦ÙÌ×  ˆC÷^g }ïC=‘F/›Ý[fƯ¹ÓgÿPK D@ܽ:—ª ch12.xhtml}VÁŽÛ6½ç+¦>4YÀ’êæÒ$^i6AØ4Aë é‘–F±©�”eÿ}ßPÒÆ X¤83oÞ¼jûúÔ:²ÚÙëÕ&ÿeElKWiÛ\¯¾ìßg¿­^ïžlºùôvÿÏçwÔFœÿüå÷»Û·´ÊŠâïço‹âfC_?ì?ÞÑ&ßÅ»?V´jcì_Å8Žùø§üt‰ŸPЕª�ƒtÂᜂð‰Ë!Ù_tñ:5ˆ´05Œs~*£´„KË¥Oúhש9¤ÔÉ0‰[Š„œ¡E›h ��šT .Oi®ÀPä— h›²ÕGerÚ·øaýØ^šK´‘¦—Y$ùÕº¼’­9Élz’Ç2ŸÐ9‘¡ýIFÿÏINŸz¶Ypƒ/“â¦D} gaáè4<žR¤÷f€ÑUФŽJ›„GRNªèß»ÀKQ÷-?Rd:ˆþ–®*ñ�Â}§u¢kIvT±l±{ÔѬŒÌ:Šˆ&zSÊÊé£ ð­«k #Íy}92çA¤’Ÿ¶Ÿ–â€!s¢ç3(ìhÉù¯Þ ö>�Q԰Ÿ0ÙœU**`ôŒFi`>6þ *çúâƒ>òRêéD¥¹4D©I·ZïFö I Š—ÛJÞãÆò.ôçÖú†œ %!f�£¥ä;ãeâ}0;\Ü»÷H4�ƒ¡g¹$æ–íU�ëåð�ò g3€�LõmjD´²Çh½Ð‚çoÄÒ\GP¼«ï^Þ,ºNü„º,qCÉØ0²ŠÑ1¨lË;}yá[rK[ž0~PS!HØ{ç/㦛ƒN3Ô!6_ÎT ¦\à+dþü(ä«g÷ä_PK D@NÇž¶ ch13.xhtmluVMsÛ6½çWlyiPãys•…8 sÌ«2ŠCÇWYäÇX¤ÿ=›c£Œ øS®ÒÕƒd¾øN>\àöéú*ó½](1h•U[nÙÆETá!,TX8Ë ·Ù,ž|³Õ}o)ÙJ¤M'É^­–ÝjÝð|Hç[1CÒ�".”÷j wä†cqÎÔ®):ªÝhÚu?t¿í�òTöA[ ù2ôU#4ÊÖ€qK{.aöoÏ!†3¹Ñ‘ÐkÈéî”W‘ÍpN5ïØ¸”¢½65D¶øš)çÜPjY‡G½cržZ¥-Œ•­xê}Í5žÓTЛeÑ­–½Ya¸‚�•ÚjU©S«·>!�8ßæ´›y5"›w…ÁVu¹,Ò1aŠ×ÿ(»uç“¡WLuùfŒÃGv÷J›p–/ ¤=N­¨B6g˜^*=X··�¢û÷w·6s&Í{´/5ZöI`éZÛÐq�fÑâÆÀ <Âxa¢¹Éœ>:œÔÝ£« CÞiD›2–ƒ¤Jʼn¯€ê;ÏøÄbãzðÀ(eÛ ×N‘êXعoÔ7³7ÓÙÙX4×2UJ¨Õ¨�$ ÐZ À듸Ú?�.S½ïËá€9��Q<1úäB¡¨‘>T^w1¤„:FðÍžÒºs§í5ÝìUlôã×RÕ_=WÎ×!ÇÝÜ㔳šu«OÇ”=Z©,MM%§ÑâJ᳤ºRBºÓÞÙ´Îj\ËyËŒ³ÛÅ<£C<ìëTzNXïadÌD% ÅÀûœdGÇÙ%C& Þ€p£·‰{˜ï,ÇA’LqfKîm�ÛÐè.QDJ0h"IJºªjçt�ö§A[ú¿Yp!OK9ŠRª©æŽ- ¨X83ÚF®«EAŽ Kr„K±˜Km†®|øQµ�AÓzGˆ“¤h¶íGq;°ntÙC¶î\áVø•�Ó|ÏÅ)ŸÑ�¹2„}&Òóò�Ó­~`hÊTt—6HêƒM; ëOíc¯ 8qœ@ÊÞ'çù©n¼§;(›0s¥tŽx­�· j ${¼à‰2öooŽò wŸ¶g³ãÅFUi Æ`¦hƒaCÁ³o4Ô÷¡IÒF¢'sK÷xž Í[A ¯Ø6Ì8Ëÿ´„9ÝÈŒ“�iŒ;}C´Ý9qßÙ@pCÔ^t¬ffè.•¤ j¸z�ZGsç‡)7¢Õ}•fÿLvZFð€!à¬=·îHç„} Ð‚á ¯Z;CUK‰iëÆØ(ä`}¬<ã#7w˜¦„_!ÓÏ�B~­^üPK D@oa«,mimetypePK D@®•âè¦ö:META-INF/container.xmlPK D@#¾cl¼Œstylesheet.cssPK D@`=X “ütitle_page.xhtmlPK D@4Z‹k$ 3content.opfPK D@ÓHÛöo) Çtoc.ncxPKcˆC@‹ÍsBóL|R[images/img2.pngPKcˆC@dL–¸n6÷8{Uimages/img1.pngPKcˆC@æÛŽ ia;cŒimages/img0.pngPK D@´^4¦1^)f¬ícover-image.pngPK D@9]\&Ï Lcover.xhtmlPK D@A! }?Ì YMch1.xhtmlPK D@º3ð® ¿Rch2.xhtmlPK D@¯5 Wch3.xhtmlPK D@^ö³0F® ]\ch4.xhtmlPK D@õÒMG˜ Êbch5.xhtmlPK D@’Š sŽß ‰gch6.xhtmlPK D@M|%ѽ >mch7.xhtmlPK D@·Ój„ò 6rch8.xhtmlPK D@!¸kèDÍ `vch9.xhtmlPK D@!A˜Ò8± Ë{ch10.xhtmlPK D@Ã×› +�ch11.xhtmlPK D@ܽ:—ª *ˆch12.xhtmlPK D@NÇž¶ R�ch13.xhtmlPK^’content/de/disposability.md0000644000175000056700000000553215232661434014561 0ustar0000000000000000## IX. Einweggebrauch ### Robuster mit schnellem Start und problemlosen Stopp **Die Prozesse einer Zwölf-Faktor-App können *weggeworfen* werden, sie können also schnell gestartet und gestoppt werden.** Dies erleichtert schnelles elastisches Skalieren, schnelles Deployment von [Code](./codebase) oder [Konfigurationsänderungen](./config) und macht Produktionsdeployments robuster. Prozesse sollten **möglichst geringe Startup-Zeiten** haben. Idealerweise braucht ein Prozess wenige Sekunden vom Startkommando bis der Prozess läuft und Requests oder Jobs entgegennehmen kann. Eine kurze Startup-Zeit gibt dem [Release-Prozess](./build-release-run) und der Skalierung mehr Agilität; sie hilft der Robustheit, weil ein Prozessmanager bei Bedarf einfacher Prozesse auf neue physikalische Maschinen verschieben kann. Prozesse **fahren ohne Schwierigkeiten herunter, wenn sie ein [SIGTERM-Signal](http://en.wikipedia.org/wiki/SIGTERM)** vom Prozessmanager bekommen. Für einen Web-Prozess kann ein problemloses Herunterfahren erreicht werden, indem er aufhört an seinem Service-Port zu lauschen (und damit alle neuen Requests ablehnt), die laufenden Requests zuende bearbeitet und sich dann beendet. Diesem Modell eigen ist, dass HTTP-Requests kurz sind (höchstens ein paar Sekunden) oder im Falle von Long-Polling, der Client sich nahtlos neu verbindet, wenn die Verbindung verloren geht. Für einen Worker-Prozess wird ein problemloser Stopp erreicht, indem er seinen laufenden Job an die Workqueue zurück gibt. Zum Beispiel kann bei [RabbitMQ](http://www.rabbitmq.com/) ein Worker einen [`NACK`](http://www.rabbitmq.com/amqp-0-9-1-quickref.html#basic.nack); bei [Beanstalkd](https://beanstalkd.github.io) wird der Job automatisch an die Queue zurückgegeben, wenn ein Worker die Verbindung beendet. Lock-basierte Systeme wie [Delayed Job](https://github.com/collectiveidea/delayed_job#readme) sollten sicherstellen, dass ihr Lock im Job-Record freigegeben wird. Diesem Modell eigen ist, dass alle Jobs [reentrant](http://en.wikipedia.org/wiki/Reentrant_%28subroutine%29) sind, was üblicherweise erreicht wird indem man die Ergebnisse in eine Transaktion einpackt oder den Vorgang [idempotent](https://de.wikipedia.org/wiki/Idempotenz) gestaltet. Prozesse sollte auch **robust gegen plötzlichen Tod** sein - falls die zugrundeliegende Hardware versagt. Auch wenn dies viel seltener ist als ein reguläres Herunterfahren mit `SIGTERM`, so kommt es dennoch vor. Wir empfehlen ein robustes Queue-Backend wie Beanstalkd, das Jobs an die Queue zurückgibt falls Clients die Verbindung beenden oder nicht mehr antworten. Wie auch immer ist eine Zwölf-Faktor-App darauf ausgelegt mit unerwarteten, irregulären Stopps umgehen zu können. [Crash-only design](http://lwn.net/Articles/191059/) führt dieses Konzept zu seinem [logischen Schluss](http://docs.couchdb.org/en/latest/intro/overview.html). content/it/logs.md0000644000175000056700000000477015232661434012675 0ustar0000000000000000## XI. Log ### Tratta i log come stream di eventi I *log* offrono una maggiore chiarezza riguardo un comportamento di un'app in esecuzione. In ambienti basati su server, questi sono tendenzialmente scritti su un file su disco (logfile). A ogni modo, è solo un formato. Un log può essere definito infatti come uno [stream](https://adam.herokuapp.com/past/2011/4/1/logs_are_streams_not_files/) di eventi aggregati e ordinati cronologicamente. Tali eventi vengono presi da tutti i vari output stream presenti di tutti i processi attivi, oltre che dai vari backing service. Nella loro forma grezza, i log si presentano come un file di testo con un evento per ogni linea (con le dovute eccezioni). Non hanno un inizio o una fine ben definiti, ma un continuo di informazioni fin quando l'applicazione è al lavoro. **Un'applicazione twelve-factor non dovrebbe preoccuparsi di lavorare con il proprio output stream.** Non dovrebbe lavorare o comunque gestire i vari logfile. Dovrebbe, invece, fare in modo che ogni processo si occupi di scrivere il proprio stream di eventi su "`stdout`". Durante lo sviluppo in locale, quindi, lo sviluppatore potrà visionare lo stream in modo completo direttamente dal terminale, per capire meglio il comportamento della sua applicazione. In staging o in produzione, invece, ogni stream viene "preso" dall'ambiente di esecuzione ed elaborato insieme a tutti gli altri stream dell'applicazione, quindi indirizzato verso una o più "destinazioni" finali per la visualizzazione e archiviazione a lungo termine. Queste "destinazioni" non sono visibili o configurabili, ma vengono gestite totalmente dall'ambiente di esecuzione. Per questi scopi esistono strumenti come [Logplex](https://github.com/heroku/logplex) e [Fluentd](https://github.com/fluent/fluentd)). Uno stream di eventi di un'applicazione può essere quindi indirizzato verso un file, o visionato in tempo reale su un terminale. Ancora, lo stream può essere inviato a un sistema di analisi e indicizzazione di log, come [Splunk](http://www.splunk.com/), oppure a un sistema di memorizzazione general-purpose come [Hadoop/Hive](http://hive.apache.org/). Questi sistemi hanno ottimi tool per effettuare un lavoro di analisi del comportamento dell'applicazione, come per esempio: * Ricerca di specifici eventi nel passato; * Grafici per rappresentare dei trend (es. richieste per minuto); * Attivazione di alert specifici in base a regole definite dall'utente (es. alert avverte l'amministratore se il rate di eventi al minuto sale oltre una certa soglia); content/pl/config.md0000644000175000056700000000667715232661434013205 0ustar0000000000000000## III. Konfiguracja ### Przechowuj konfiguracjÄ™ w Å›rodowisku *Konfiguracja* to jedyny element, który może siÄ™ różnić pomiÄ™dzy [wdrożeniami](./codebase) aplikacji (staging, produkcja, Å›rodowisko developerskie, etc). W jej skÅ‚ad wchodzÄ…: * Ustawienia połączeÅ„ do baz danych, Memcached, i innych [usÅ‚ug wspierajÄ…cych](./backing-services) * Dane uwierzytelniajÄ…ce zewnÄ™trznych usÅ‚ug takich jak Amazon S3 czy Twitter * WartoÅ›ci różne dla każdego wdrożenia, jak np. kanoniczna nazwa hosta Aplikacja czasem przechowuje konfiguracjÄ™ jako staÅ‚e wartoÅ›ci w kodzie źródÅ‚owym. Niestety jest to zÅ‚amanie zasady 12factor wg której konfiguracja jest **Å›ciÅ›le oddzielona od kodu aplikacji**. Dowodem na to, czy aplikacja posiada swojÄ… konfiguracjÄ™ oddzielonÄ… od kodu jest to, czy można jÄ… udostÄ™pnić na zasadach open source bez równoczesnego udostÄ™pniania np. danych uwierzytelniajÄ…cych. Należy pamiÄ™tać, że definicja "konfiguracji" **nie** dotyczy wewnÄ™trznych ustawieÅ„ aplikacji takich jak np. plik `config/routes.rb` w Railsach lub to jak [sÄ… połączone moduÅ‚y kodu](http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html) w [Springu](http://spring.io/). Konfiguracja tego typu nie zmienia siÄ™ pomiÄ™dzy wdrożeniami co sprawia, że najbardziej odpowiednim miejscem do jej przechowywania jest kod aplikacji. Innym podejÅ›ciem do konfiguacji jest korzystanie z plików, które nie znajdujÄ… siÄ™ w repozytorium i nie sÄ… wersjonowane, jak np. `config/database.yml` w Railsach. Jest to duże usprawnienie wzglÄ™dem używania staÅ‚ych wartoÅ›ci, które sÄ… zapisywane w repozytorium. Minusem tego rozwiÄ…zania jest możliwość przypadkowego umieszczenia pliku konfiguracyjnego w repo. Ponadto można spotkać siÄ™ z tendencjÄ… do rozrzucania takich plików w różnych katalogach i różnych formatach, co czyni je trudnymi do znalezienia i zarzÄ…dzania z jednego miejsca. **Aplikacja 12factor przechowuje konfiguracjÄ™ w *zmiennych Å›rodowiskowych*** (czasem nazywane z jÄ™zyka angielskiego *env vars* lub *env*). W tej sytuacji można Å‚atwo modyfikować zmienne Å›rodowiskowe pomiÄ™dzy wdrożeniami bez zmiany kodu aplikacji. W odróżnieniu do plików konfiguracyjnych istnieje maÅ‚a szansa by zostaÅ‚y umieszczone przypadkowo w repozytorium. Ich kolejnÄ… zaletÄ… jest to, że nie sÄ… powiÄ…zane z jÄ™zykiem programowania, frameworkiem, jak np. Java System Properties, czy też systemem operacyjnym. Kolejnym zagadnieniem zarzÄ…dzania konfiguracjÄ… jest jej grupowanie. Czasem aplikacje gromadzÄ… konfiguracjÄ™ w grupach (czasem nazywane "Å›rodowiskami") nazywanych od nazwy wdrożenia, takie jak `development`, `test`, czy `produkcja` w Railsach. Ten sposób organizacji jest niestety nieskalowalny. Im wiÄ™cej różnych wdrożeÅ„, tym wiÄ™ksza potrzeba nazw, jak np. `staging` czy `qa`. Wraz z rozwojem projektu programiÅ›ci mogÄ… dodawać swoje specjalne konfiguracje, jak `staging-józefa`. Efektem tego mogÄ… być niezliczone kombinacje nazw plików konfiguracyjnych, co utrudniać bÄ™dzie zarzÄ…dzanie wdrożonymi aplikacji. W aplikacji 12factor zmienne Å›rodowiskowe sÅ‚użą do precyzyjnej kontroli poszczególnych ustawieÅ„, posiadajÄ…c różne, nie mylÄ…ce siÄ™ ze sobÄ… nazwy. Nigdy nie sÄ… zgrupowane w "Å›rodowiskach", tylko niezależnie ustawiane dla każdego wdrożenia. Taki model konfiguracji skaluje siÄ™ bez problemu, nawet jeÅ›li aplikacja bÄ™dzie potrzebowaÅ‚a w przyszÅ‚oÅ›ci wiÄ™cej zróżnicowanych wdrożeÅ„. content/fr/background.md0000644000175000056700000000317315232661434014037 0ustar0000000000000000Contexte ========== Les contributeurs de ce document ont été directement impliqués dans le développement et le déploiement de centaines d'applications, et ont vu, indirectement, le développement, la gestion et le grossissement de centaines de milliers d'applications via le travail fait sur la plateforme [Heroku](http://www.heroku.com/). Ce document fait la synthèse de toutes nos expériences et observations sur une large variété d'applications software-as-a-service. C'est la triangulation de pratiques idéales pour le développement d'applications, en portant un soin tout particulier aux dynamiques de la croissance organique d'une application au cours du temps, les dynamiques de la collaboration entre les développeurs qui travaillent sur le code de l'application, en [évitant le coût de la lente détérioration du logiciel dans un environnement qui évolue (en)](http://blog.heroku.com/archives/2011/6/28/the_new_heroku_4_erosion_resistance_explicit_contracts/). Notre motivation est de faire prendre conscience de certains problèmes systémiques que nous avons rencontrés dans le développement d'applications modernes, afin de fournir un vocabulaire partagé pour discuter ces problèmes, et pour offrir un ensemble de solutions conceptuelles générales à ces problèmes, ainsi que la terminologie correspondante. Le format est inspiré par celui des livres de Martin Fowler *[Patterns of Enterprise Application Architecture (en)](http://books.google.com/books/about/Patterns_of_enterprise_application_archi.html?id=FyWZt5DdvFkC)* et *[Refactoring (en)](http://books.google.com/books/about/Refactoring.html?id=1MsETFPD3I0C)*. content/tr/toc.md0000644000175000056700000000243415232661434012522 0ustar0000000000000000On İki Faktör ============= ## [I. Kod Tabanı](./codebase) ### Bir çok dağıtım kod tabanı gözden geçirme kontrolünde izleme ## [II. Bağımlıklar](./dependencies) ### Bağımlıkları açık bir ÅŸekilde açıklama ve ayırma ## [III. Yapılandırma](./config) ### Ortamda yapılandırma depolama ## [IV. Destek servisi](./backing-services) ### Destek servislerine ekli kaynak olarak davranma ## [V. Derleme, Sürüm, Çalıştırma](./build-release-run) ### Derleme ve çalıştırma aÅŸamalarını tam olarak ayırma ## [VI. Süreç](./processes) ### Uygulamayı bir veya daha fazla bağımsız süreç olarak çalıştırma ## [VII. Port BaÄŸlama](./port-binding) ### Port baÄŸlama yolu üzerinden dışarı aktarma ## [VIII. EÅŸ Zamanlılık](./concurrency) ### Süreç modeli yardımıyla dağıtıklaÅŸtırma ## [IX. Kullanıma Hazır Olma Durumu](./disposability) ### Hızlı baÅŸlangıç ve otomatik zararsız kapama ile saÄŸlamlığı üst düzeye çıkarma ## [X.GeliÅŸtirme/Üretim EÅŸitliÄŸi](./dev-prod-parity) ### GeliÅŸim, evreleme ve üretimi olabildikçe benzer tutma ## [XI. Günlükler](./logs) ### Günlüklere olay akışı gibi davranma ## [XII. Yönetici Süreci](./admin-processes) ### Yönetici/yönetim görevlerini tek seferlik iÅŸlem olarak çalıştırma content/fr/admin-processes.md0000644000175000056700000000515315232661434015014 0ustar0000000000000000## XII. Processus d'administration ### Lancez les processus d'administration et de maintenance comme des one-off-processes La [formation de processus](./concurrency) est la liste des processus qui sont utilisés pour le fonctionnement normal de l'application (comme gérer les requêtes web) lorsqu'elle tourne. Les développeurs vont souvent vouloir effectuer des tâches occasionnelles d'administration ou de maintenance, comme : * Lancer les migrations de base de données (par ex. `manage.py migrate` avec Django, `rake db:migrate` avec Rails). * Lancer une console (également appelée terminal [REPL](http://en.wikipedia.org/wiki/Read-eval-print_loop)) pour exécuter du code arbitraire ou inspecter les modèles de l'application dans la base de données. La plupart des langages fournissent un terminal REPL en lançant l'interpréteur sans arguments (par exemple `python` ou `perl`), ou dans certains cas à l'aide d'une commande dédiée (par ex. `irb` pour Ruby, `rails console` pour Rails). * Exécuter des scripts ponctuels inclus dans le dépôt de code (par ex. `php scripts/fix_bad_records.php`). Les processus ponctuels d'administration devraient être lancés dans un environnement identique à ceux des [processus standards](./processes) de l'application. Ils s'exécutent sur une [release](./build-release-run), en utilisant la même [base de code](./codebase) et [configuration](./config) que tout processus qui tourne pour cette release. Le code d'administration doit être livré avec le code de l'application afin d'éviter les problèmes de synchronisation. La même technique d'[isolation de dépendances](./dependencies) doit être utilisée sur tous les types de processus. Par exemple, si le processus web de Ruby utilise la commande `bundle exec thin start`, alors une migration de base de données devrait être faite via `bundle exec rake db:migrate`. De la même manière, un programme Python qui utilise Virtualenv devrait utiliser la commande incluse `bin/python` pour lancer à la fois le serveur web Tornado et tout processus administrateur `manage.py`. Les applications 12 facteurs préfèrent les langages qui fournissent un terminal REPL prêt à l'emploi, et qui facilitent l'exécution de scripts ponctuels. Dans un déploiement local, les développeurs invoquent les processus ponctuels d'administration depuis le terminal, par une commande directement dans le répertoire où se trouve l'application. Dans un déploiement de production, les développeurs peuvent utiliser ssh ou d'autres mécanismes d'exécution de commandes fournis par l'environnement d'exécution de ce déploiement pour exécuter un tel processus. content/pt_br/build-release-run.md0000644000175000056700000000552715232661434015743 0ustar0000000000000000## V. Construa, lance, execute ### Separe estritamente os estágios de construção e execução Uma [base de código](./codebase) é transformada num deploy (de não-desenvolvimento) através de três estágios: * O *estágio de construção* é uma transformação que converte um repositório de código em um pacote executável conhecido como *construção*. Usando uma versão do código de um commit especificado pelo processo de desenvolvimento, o estágio de construção obtém e fornece [dependências](./dependencies) e compila binários e ativos. * O *estágio de lançamento* pega a construção produzida pelo estágio de construção e a combina com a atual [configuração](./config) do deploy. O *lançamento* resultante contém tanto a construção quanto a configuração e está pronta para execução imediata no ambiente de execução. * O *estágio de execução* roda o app no ambiente de execução, através do início de alguns dos [processos](./processes) do app com um determinado lançamento. ![Código vira uma construção, que é combinada com a configuração para se criar um lançamento.](/images/release.png) **O app doze-fatores usa separação estrita entre os estágios de construção, lançamento e execução.** Por exemplo, é impossível alterar código em tempo de execução, já que não há meios de se propagar tais mudanças de volta ao estágio de construção. Ferramentas para deploy tipicamente oferecem ferramentas de gestão de lançamento, mais notadamente a habilidade de se reverter à um lançamento prévio. Por exemplo, a ferramenta de deploy [Capistrano](https://github.com/capistrano/capistrano/wiki) armazena lançamentos em um subdiretório chamado `releases`, onde o lançamento atual é um link simbólico para o diretório de lançamento atual. Seu comando `rollback` torna fácil reverter para um lançamento prévio. Cada lançamento deve sempre ter um identificador de lançamento único, tal qual o timestamp do lançamento (como `2011-04-06-20:32:17`) ou um número incremental (como `v100`). Lançamentos são livro-razões onde apenas se acrescenta informações, ou seja, uma vez criado o lançamento não pode ser alterado. Qualquer mudança deve gerar um novo lançamento. Construções são iniciadas pelos desenvolvedores do app sempre que novos códigos entram no deploy. A execução de um executável, todavia, pode acontecer automaticamente em casos como o reinício do servidor, ou um processo travado sendo reiniciado pelo gerenciador de processos. Assim, no estágio de execução deve haver quanto menos partes móveis quanto possível, já que problemas que previnem um app de rodar pode causá-lo a travar no meio da noite quando não há desenvolvedores por perto. O estágio de construção pode ser mais complexo, já que os erros estão sempre à vista do desenvolvedor que está cuidando do deploy. content/ru/backing-services.md0000644000175000056700000001143215232661434015153 0ustar0000000000000000## IV. Сторонние Ñ�лужбы (Backing Services) ### Считайте Ñ�торонние Ñ�лужбы (backing services) подключаемыми реÑ�урÑ�ами *СтороннÑ�Ñ� Ñ�лужба*-- Ñ�то любаÑ� Ñ�лужба, котораÑ� доÑ�тупна приложению по Ñ�ети и необходима как чаÑ�ть его нормальной работы. Ð�апример, хранилища данных (например, [MySQL](http://dev.mysql.com/) и [CouchDB](http://couchdb.apache.org/)), Ñ�иÑ�темы очередей Ñ�ообщений (например, [RabbitMQ](http://www.rabbitmq.com/) и [Beanstalkd](https://beanstalkd.github.io)), Ñ�лужбы SMTP длÑ� иÑ�ходÑ�щей Ñ�лектронной почты (например, [Postfix](http://www.postfix.org/)) и кÑ�ширующие Ñ�иÑ�темы (например, [Memcached](http://memcached.org/)). Традиционно, Ñ�торонние Ñ�лужбы, такие как базы данных, поддерживаютÑ�Ñ� тем же Ñ�амым Ñ�иÑ�темным админиÑ�тратором, который разворачивает приложение. Помимо локальных Ñ�ервиÑ�ов приложение может иÑ�пользовать Ñ�ервиÑ�Ñ‹, предоÑ�тавленные и управлÑ�емые третьей Ñ�тороной. Примеры включают в Ñ�ебÑ� SMTP Ñ�ервиÑ�Ñ‹ (например [Postmark](http://postmarkapp.com/)), Ñ�ервиÑ�Ñ‹ Ñ�бора метрик (такие как [New Relic](http://newrelic.com/) и [Loggly](http://www.loggly.com/)), хранилища бинарных данных (например, [Amazon S3](http://aws.amazon.com/s3/)), а также иÑ�пользование API различных Ñ�ервиÑ�ов (таких как [Twitter](http://dev.twitter.com/), [Google Maps](https://developers.google.com/maps/) и [Last.fm](http://www.last.fm/api)). **Код приложениÑ� двенадцати факторов не делает различий между локальными и Ñ�торонними Ñ�ервиÑ�ами.** ДлÑ� приложениÑ� каждый из них Ñ�влÑ�етÑ�Ñ� подключаемым реÑ�урÑ�ом, доÑ�тупным по URL-адреÑ�у или по другой паре раÑ�положение/учётные данные, хранÑ�щимиÑ�Ñ� в [конфигурации](./config). Каждое [развёртывание](./codebase) приложениÑ� двенадцати факторов должно иметь возможноÑ�ть заменить локальную базу данных MySQL на любую управлÑ�емую третьей Ñ�тороной (например [Amazon RDS](http://aws.amazon.com/rds/)) без каких либо изменений кода приложениÑ�. Ð�налогичным образом, локальный SMTP Ñ�ервер может быть заменён Ñ�торонним (например Postmark) без изменениÑ� кода. Ð’ обоих Ñ�лучаÑ�Ñ… необходимо изменить только идентификатор реÑ�урÑ�а в конфигурации. КаждаÑ� различнаÑ� Ñ�тороннÑ�Ñ� Ñ�лужба Ñ�влÑ�етÑ�Ñ� *реÑ�урÑ�ом*. Ð�апример, база данных MySQL Ñ�влÑ�етÑ�Ñ� реÑ�урÑ�ом, две базы данных MySQL (иÑ�пользуютÑ�Ñ� длÑ� фрагментации на уровне приложениÑ�) квалифицируютÑ�Ñ� как два отдельных реÑ�урÑ�а. Приложение двенадцати факторов Ñ�читает Ñ�ти базы данных *подключёнными реÑ�урÑ�ами*, что указывает на их Ñ�лабое Ñ�вÑ�зывание Ñ� развёртыванием, в котором они подключены. Рабочее развёртывание приложениÑ�, подключённого к 4 Ñ�торонним Ñ�ервиÑ�ам. РеÑ�урÑ�Ñ‹ можно по необходимоÑ�ти подключать к развёртыванию и отключать от развёртываниÑ�. Ð�апример, еÑ�ли база данных приложениÑ� функционирует некорректно из-за аппаратных проблем, админиÑ�тратор может запуÑ�тить новый Ñ�ервер базы данных, воÑ�Ñ�тановленный из поÑ�ледней резервной копии. ТекущаÑ� рабочаÑ� база данных может быть отключена, а новаÑ� база данных подключена -- вÑ�Ñ‘ Ñ�то без каких-либо изменений кода. content/ru/disposability.md0000644000175000056700000001232515232661434014615 0ustar0000000000000000## IX. УтилизируемоÑ�ть (Disposability) ### МакÑ�имизируйте надёжноÑ�ть Ñ� помощью быÑ�трого запуÑ�ка и корректного завершениÑ� работы **[ПроцеÑ�Ñ�Ñ‹](./processes) приложениÑ� двенадцати факторов Ñ�влÑ�ÑŽÑ‚Ñ�Ñ� *утилизируемыми*, Ñ�то означает, что они могут быть запущены и оÑ�тановлены в любой момент.** Это Ñ�поÑ�обÑ�твует Ñ�табильному и гибкому маÑ�штабированию, быÑ�трому развёртыванию изменений [кода](./codebase) и [конфигураций](./config) и надёжноÑ�ти рабочего развёртываниÑ�. ПроцеÑ�Ñ�Ñ‹ должны Ñ�таратьÑ�Ñ� **минимизировать времÑ� запуÑ�ка**. Ð’ идеале процеÑ�Ñ� должен затратить вÑ�его неÑ�колько Ñ�екунд от момента времени, когда выполнена команда запуÑ�ка, и до того момента, когда процеÑ�Ñ� запущен и готов принимать запроÑ�Ñ‹ или задачи. Короткое времÑ� запуÑ�ка предоÑ�тавлÑ�ет большую гибкоÑ�ть длÑ� [релиза](./build-release-run) и маÑ�штабированиÑ�. Кроме того, Ñ�то более надёжно, так как менеджер процеÑ�Ñ�ов может Ñ�вободно перемещать процеÑ�Ñ�Ñ‹ на новые физичеÑ�кие машины при необходимоÑ�ти. ПроцеÑ�Ñ�Ñ‹ должны **завершатьÑ�Ñ� корректно, когда они получают [SIGTERM](http://en.wikipedia.org/wiki/SIGTERM)** Ñ�игнал от диÑ�петчера процеÑ�Ñ�ов. ДлÑ� веб-процеÑ�Ñ�а корректное завершение работы доÑ�тигаетÑ�Ñ� путём прекращениÑ� проÑ�лушиваниÑ� порта Ñ�ервиÑ�а (таким образом, отказатьÑ�Ñ� от каких-либо новых запроÑ�ов), что позволÑ�ет завершить текущие запроÑ�Ñ‹ и затем завершитьÑ�Ñ�. Ð’ Ñ�той модели подразумеваетÑ�Ñ�, что HTTP-запроÑ�Ñ‹ короткие (не более чем на неÑ�колько Ñ�екунд), в Ñ�лучае длинных запроÑ�ов клиент должен плавно попытатьÑ�Ñ� воÑ�Ñ�тановить подключение при потере Ñ�оединениÑ�. ДлÑ� процеÑ�Ñ�а, выполнÑ�ющего фоновые задачи (worker), корректное завершение работы доÑ�тигаетÑ�Ñ� путём возвращениÑ� текущей задачи назад в очередь задач. Ð�апример, в [RabbitMQ](http://www.rabbitmq.com/) рабочий процеÑ�Ñ� может отправлÑ�ть команду [`NACK`](http://www.rabbitmq.com/amqp-0-9-1-quickref.html#basic.nack); в [Beanstalkd](https://beanstalkd.github.io) задача возвращаетÑ�Ñ� в очередь автоматичеÑ�ки, когда рабочий процеÑ�Ñ� отключаетÑ�Ñ�. СиÑ�темы, оÑ�нованные на блокировках такие, как [Delayed Job](https://github.com/collectiveidea/delayed_job#readme) должны быть уведомлены, чтобы оÑ�вободить блокировку задачи. Ð’ Ñ�той модели подразумеваетÑ�Ñ�, что вÑ�е задачи Ñ�влÑ�ÑŽÑ‚Ñ�Ñ� [повторно входимыми](http://en.wikipedia.org/wiki/Reentrant_%28subroutine%29), что обычно доÑ�тигаетÑ�Ñ� путём оборачиваниÑ� результатов работы в транзакции или путём иÑ�пользованиÑ� [идемпотентных](http://en.wikipedia.org/wiki/Idempotence) операций. ПроцеÑ�Ñ�Ñ‹ также должны быть **уÑ�тойчивыми к внезапной Ñ�мерти** в Ñ�лучае отказа аппаратного обеÑ�печениÑ�. ХотÑ� Ñ�то менее вероÑ�тное Ñ�обытие, чем корректное завершение работы Ñ�игналом `SIGTERM`, оно вÑ�Ñ‘ же может Ñ�лучитьÑ�Ñ�. Рекомендуемым подходом Ñ�влÑ�етÑ�Ñ� иÑ�пользование надёжных очередей задач, таких как Beanstalkd, которые возвращают задачу в очередь когда клиент отключаетÑ�Ñ� или превышает лимит времени. Ð’ любом Ñ�лучае приложение двенадцати факторов должно проектироватьÑ�Ñ� так, чтобы обрабатывать неожиданные и неизÑ�щные выключениÑ�. [Ð�рхитектура только аварийного выключениÑ� (Crash-only design)](http://lwn.net/Articles/191059/) доводит Ñ�ту концепцию до её [логичеÑ�кого завершениÑ�](http://docs.couchdb.org/en/latest/intro/overview.html). content/tr/disposability.md0000644000175000056700000000571015232661434014614 0ustar0000000000000000## IX. Kullanıma Hazır Olma Durumu ### Hızlı baÅŸlangıç ve otomatik zararsız kapama ile saÄŸlamlığı üst düzeye çıkarma **On iki faktör uygulamalarını [süreçleri](./processes) *tek kullanımlıktır*, anlamı anlık uyarıda baÅŸlatılabilirler veya durdurulabilirler.** Bu hızlı esnek ölçeklemeyi, [kod](./codebase) ve [yapılandırma](./config) deÄŸiÅŸikliÄŸinin hızlı dağıtımı ve üretim dağıtımının saÄŸlamlığı kolaylaÅŸtırır. Süreçler **baÅŸlangıç zamanını küçültmeye* çabalamalıdır. İdeal olarak, bir süreç baÅŸlatma komutunun çalıştırılıp, sürecin ayaÄŸa kalkmış ve istek veya iÅŸleri almaya hazır olana kadar olan süre bir kaç saniye alır. Kısa baÅŸlama zamanı [sürüm](./build-release-run) süreci ve arttırım için daha fazla çabukluk saÄŸlar; ve saÄŸlamlığına yardımcı olur, çünkü süreç yöneticisi izin verildiÄŸinde süreçleri yeni fiziksel makinelere daha kolay taşıyabilir. Süreçler, süreç yöneticisinden **[SIGTERM](http://en.wikipedia.org/wiki/SIGTERM) sinyalini aldıkları zaman, incelikli kapanır.** Web süreci için incelikli kapama, servis portunun dinlenmesinin kesilmesi (dolayısıyla herhangi bir yeni istek reddedilir), herhangi bir o anki isteklerin bitmesine izin verilmesi ve daha sonra çıkılmasıyla sonuçlanır. Bu modelin içeriÄŸinde HTTP istekleri kısadır (bir kaç saniyeden fazla deÄŸildir) veya uzun sorgulama durumlarında, istemci baÄŸlantıyı kaybettiÄŸi zaman sorunsuzca tekrar baÄŸlanmayı denemelidir. Bir işçi süreç için incelikli kapama ÅŸu anki iÅŸi iÅŸ kuyruÄŸuna döndürülmesiyle sonuçlanır. ÖrneÄŸin [RabbitMQ](http://www.rabbitmq.com/)'da işçi [`NACK`](http://www.rabbitmq.com/amqp-0-9-1-quickref.html#basic.nack) gönderebilir; [Beanstalkd](https://beanstalkd.github.io)'da herhangi bir zamanda çalışan oturumu kapattığında iÅŸ kuyruÄŸa otomatik olarak döndürülür. Kilit tabanlı sistemler, [Delayed Job](https://github.com/collectiveidea/delayed_job#readme) gibi, iÅŸ kayıdındaki kilitlerini yayınlamak için emin olmalıdır. Bu modelin içeriÄŸinde bütün iÅŸler [tekrar giriÅŸlidir] [reentrant](http://en.wikipedia.org/wiki/Reentrant_%28subroutine%29), genellikle sonuçların iÅŸlemde saklanması veya iÅŸlemi [eÅŸgüçlü](http://en.wikipedia.org/wiki/Idempotence) yapmasıyla gerçekleÅŸir. Süreçler esas donanımdaki hata durumlarında **ani kapanmaya karşı dayanıklı olmalıdır.** Bu `SIGTERM` ile incelikli kapamadan daha az yaygın bir olay olduÄŸu için hala olabilir. Önerilen yaklaşım saÄŸlam arkaplan kuyruklama kullanımıdır, Beanstalkd gibi, istemciler oturumu kapattığı zaman veya süre dolduÄŸu zaman iÅŸi kuyruÄŸa döndürür. Her iki durumda, on iki faktör uygulaması incelikli olmayan sonlandırmaları idare edebilmek için tasarlanmıştır. [Crash-only dezaynı](http://lwn.net/Articles/191059/) bu konsepti [mantıksal sonucunu](http://docs.couchdb.org/en/latest/intro/overview.html) alır. content/uk/processes.md0000644000175000056700000001071315232661434013734 0ustar0000000000000000## VI. ПроцеÑ�и ### ЗапуÑ�кайте заÑ�тоÑ�унок Ñ�к один або декілька процеÑ�ів без збереженнÑ� внутрішньго Ñ�тану (stateless) ЗаÑ�тоÑ�унок запуÑ�каєтьÑ�Ñ� в Ñ�ередовищі виконаннÑ� у виглÑ�ді одного або декількох *процеÑ�ів*. У найпроÑ�тішому випадку код Ñ” окремим Ñ�криптом, Ñ�ередовище виконаннÑ� — ноутбук розробника зі вÑ�тановленим Ñ�ередовищем виконаннÑ� мови програмуваннÑ�, а процеÑ� запуÑ�каєтьÑ�Ñ� за допомогою командного Ñ€Ñ�дка (наприклад, `python my_script.py`). Ð’ іншому випадку, це може бути production-розгортаннÑ� Ñ�кладного заÑ�тоÑ�унку, Ñ�ке може викориÑ�товувати багато [типів процеÑ�ів, кожен з Ñ�ких запущений у необхідній кількоÑ�ті екземплÑ�рів](./concurrency). **ПроцеÑ�и заÑ�тоÑ�унку дванадцÑ�ти факторів не зберігають внутрішній Ñ�тан (stateless) Ñ– [не розділÑ�ють реÑ�урÑ�и](http://en.wikipedia.org/wiki/Shared_nothing_architecture).** Будь-Ñ�кі дані, що підлÑ�гають збереженню, мають зберігатиÑ�Ñ� в [Ñ�торонній Ñ�лужбі](./backing-services) зі збереженнÑ�м внутрішнього Ñ�тану (stateful) (Ñ�к правило, в базі даних). Пам'Ñ�ть та файлова Ñ�иÑ�тема процеÑ�у можуть бути викориÑ�тані Ñ�к короткоÑ�троковий кеш. Ð�априклад, завантаженнÑ�, обробка Ñ– збереженнÑ� великого файлу в базі даних. ЗаÑ�тоÑ�унок дванадцÑ�ти факторів ніколи не припуÑ�кає, що щоÑ�ÑŒ, закешоване в пам'Ñ�ті або на диÑ�ку, буде доÑ�тупне при наÑ�тупному запиті — за наÑ�вноÑ�ті багатьох запущених процеÑ�ів різних типів Ñ” велика ймовірніÑ�ть, що наÑ�тупний запит буде оброблений іншим процеÑ�ом. Ð�авіть при роботі тільки одного процеÑ�у перезапуÑ�к (викликаний розгортаннÑ�м, змінами конфігурації або переміщеннÑ�м процеÑ�у в інше фізичне міÑ�це розташуваннÑ� Ñ�ередовищем виконаннÑ�), Ñ�к правило, призведе до знищеннÑ� вÑ�Ñ–Ñ… локальних (у пам'Ñ�ті Ñ– файловій Ñ�иÑ�темі) Ñ�танів. Пакувальники реÑ�урÑ�ів (наприклад, [Jammit](http://documentcloud.github.com/jammit/) або [django-compressor](http://django-compressor.readthedocs.org/)) викориÑ�товують файлову Ñ�иÑ�тему Ñ�к кеш длÑ� Ñ�компільованих реÑ�урÑ�ів. ЗаÑ�тоÑ�унок дванадцÑ�ти факторів надає перевагу здійÑ�ненню такої компілÑ�ції під чаÑ� [етапу збірки](./build-release-run), наприклад, Ñ�к в [Rails asset pipeline](http://guides.rubyonrails.org/asset_pipeline.html), а не під чаÑ� виконаннÑ�. ДеÑ�кі веб-Ñ�иÑ�теми покладаютьÑ�Ñ� на ["липкі Ñ�еÑ�Ñ–Ñ—"](http://en.wikipedia.org/wiki/Load_balancing_%28computing%29#Persistence) — тобто кешують дані Ñ�еÑ�Ñ–Ñ— кориÑ�тувача в пам'Ñ�ті процеÑ�у заÑ�тоÑ�унку Ñ– очікують, що наÑ�тупні запити від того ж Ñ�амого кориÑ�тувача будуть Ñ�прÑ�мовані до того ж Ñ�амого процеÑ�у. Липкі Ñ�еÑ�Ñ–Ñ— Ñ” порушеннÑ�м дванадцÑ�ти факторів Ñ– Ñ—Ñ… ніколи не Ñ�лід викориÑ�товувати та покладатиÑ�Ñ� на них. Дані Ñ�еÑ�Ñ–Ñ— кориÑ�тувача Ñ” хорошим кандидатом длÑ� Ñ�ховища даних, Ñ�ке надає функцію обмеженнÑ� терміну зберіганнÑ�, наприклад, [Memcached](http://memcached.org/) або [Redis](http://redis.io/).content/pl/who.md0000644000175000056700000000033615232661434012517 0ustar0000000000000000Dla kogo przeznaczony jest ten dokument? ============================== Dla każdego developera tworzÄ…cego aplikacje, które dziaÅ‚ajÄ… jako usÅ‚uga. Dla każdego Dev-opsa, który wdraża i zarzÄ…dza takimi aplikacjami. content/tr/dev-prod-parity.md0000644000175000056700000001144515232661434014765 0ustar0000000000000000## X.GeliÅŸtirme/Üretim EÅŸitliÄŸi ### GeliÅŸim, evreleme ve üretimi olabildikçe benzer tutma Tarihsel olarak, geliÅŸtirme (bir geliÅŸtirici uygulamanın yerel [dağıtımına](./codebase) canlı düzenlemeler yapar) ve ürün (uygulamanın çalışan dağıtımı son kullanıcılar tarafından eriÅŸilmiÅŸtir) arasında önemli aralıklar vardır. Bu aralıklar üç alanda belirtilir: * **Zaman aralığı:** bir geliÅŸtirici kod üzerinde günler,haftalar hatta aylar boyunca bile ürünü oluÅŸturmak için çalışabilir. * **Eleman aralığı:** GeliÅŸtiriciler kod yazar, ops mühendisleri dağıtır. * **Araçların aralığı:** GeliÅŸtiriciler ürün dağıtımı Apache, MySQL ve Linux kullanırken; Nginx, SQLite, ve OS X gibi yığınları kullanıyor olabilir. **On iki faktör uygulaması, geliÅŸtirme ve ürün aralığını küçük tutarak, [sürekli dağıtım](http://avc.com/2011/02/continuous-deployment/) için tasarlanmıştır.** Yukarda tanımlanan üç aralığa bakarsak: * Zaman aralığını küçültme: bir geliÅŸtirici kod yazabilir ve bu kodu saatler veya hatta dakikalar sonra dağıtmış olabilir. * Eleman aralığını küçültme: kodu yazan geliÅŸtiriciler, kodu dağıtmakla yakından iliÅŸkilidir ve üründeki davranışını izler. * Araçların aralığını küçültme: geliÅŸtirmeyi ve ürünü olabildiÄŸi kadar benzer tut. Üstekileri bir tablo olarak özetlersek:
Geleneksel uygulama On iki faktör uygulaması
Dağıtımlar arasındaki zaman Haftalar Saatler
Kod yazarları ve kod dağıtımcıları Farklı insanlar Aynı insanlar
Geliştirme ve ürün ortamı Farklı Olabildiğince benzer
[Destek servisler](./backing-services); uygulamanın veritabanı, kuyruk sistemi veya önbellek gibi, geliştirme/üretim eşitliğinin önemli olduğu bir alandır. Bir çok dil, farklı tipteki servislerin *uyarlayıcılarını* içeren, destek servislerine ulaşımı kolaylaştıran kütüphanleri önerir. Bazı örnekler aşağıdaki tabloda vardır.
Tip Dil Kütüphane Uyarlayıcı
Veritabanı Ruby/Rails ActiveRecord MySQL, PostgreSQL, SQLite
Kuyruk Python/Django Celery RabbitMQ, Beanstalkd, Redis
Önbellek Ruby/Rails ActiveSupport::Cache Bellek, dosya sistemi, Memcached
Geliştiriciler, üründe ciddi ve sağlam destek servisleri kullanırken, bazen kendi yerel ortamlarında önemsiz destek servislerini kullanmak için istek duyarlar. Örneğin, yerelde SQLite üründe PostgreSQL kullanılır veya geliştirmede depolama için yerel süreç belleği ve üründe de Memcached kullanılır. **On iki faktör geliştiricisi**, uyarlayıcılar teorik olarak destek servislerindeki herhangi bir farklılığı soyutladığı zaman bile **geliştirme ve ürün arasında faklı destek servisi kullanma isteğine karşı direnir.** Destek hizmetleri arasındaki farklılıklar, küçük uyumsuzlukların ortaya çıkması, kodun işe yaraması ve geliştirme aşamasında testlere geçilmesi veya üretimde başarısız olmaya neden olması anlamına gelir. Bu tür hatalar, sürekli dağıtımın etkisini azaltan bir sürtüşme yaratır. Bu sürtünme maliyeti ve sonraki devamlı dağıtımın azaltılması, bir uygulamanın ömrü süresince toplamda düşünüldüğünde oldukça yüksektir. Önemsiz yerel servisler bir zamanlar olduğundan daha zorlayıcıdır. Memcached, PostgreSQL ve RabbitMQ gibi modern destek servisleri, [Homebrew](http://mxcl.github.com/homebrew/) ve [apt-get](https://help.ubuntu.com/community/AptGet/Howto) gibi modern paket sistemleri sayesinde yüklemesi ve çalıştırılması zor değildir. Alternatif olarak, [Chef](http://www.opscode.com/chef/) ve [Puppet](http://docs.puppetlabs.com/) gibi bildiri sağlayıcı araçlar önemsiz sanal ortamlarla birleşir, [Vagrant](http://vagrantup.com/) gibi, geliştiricilerin yerel ortamda çalışmalarına izin verir, yaklaşık olarak ürün ortamına benzer. Bu sistemlerin yüklenmesi ve kullanımının maliyeti, geliştirme üretim eşitliği ve sürekli dağıtımın faydasıyla karşılaştırıldığında düşüktür. Farklı destek servislerinin uyarlayıcıları hala kullanışlıdır, çünkü yeni destek servislerine bağlanmayı nispeten zahmetsiz yapar. Ama uygulamanın bütün dağıtımları (geliştirme ortamları, evreleme, ürün) her bir destek servisinin aynı tip ve versiyonunu kullanmalıdır. locales/fr.yml0000644000175000056700000000035015232661434012063 0ustar0000000000000000fr: # Name of language listed in locales menu language: "Français (fr)" # A text to make known that the article is a translation not an original. # Empty for English, original. translation: "Ce texte est une traduction" content/de/who.md0000644000175000056700000000026115232661434012471 0ustar0000000000000000Wer sollte dieses Dokument lesen? ============================== Jeder Entwickler der Apps baut, die als Dienst laufen. Administratoren, die solche Apps managen oder deployen. content/en/concurrency.md0000644000175000056700000000507215232661434014245 0ustar0000000000000000## VIII. Concurrency ### Scale out via the process model Any computer program, once run, is represented by one or more processes. Web apps have taken a variety of process-execution forms. For example, PHP processes run as child processes of Apache, started on demand as needed by request volume. Java processes take the opposite approach, with the JVM providing one massive uberprocess that reserves a large block of system resources (CPU and memory) on startup, with concurrency managed internally via threads. In both cases, the running process(es) are only minimally visible to the developers of the app. ![Scale is expressed as running processes, workload diversity is expressed as process types.](/images/process-types.png) **In the twelve-factor app, processes are a first class citizen.** Processes in the twelve-factor app take strong cues from [the unix process model for running service daemons](https://adam.herokuapp.com/past/2011/5/9/applying_the_unix_process_model_to_web_apps/). Using this model, the developer can architect their app to handle diverse workloads by assigning each type of work to a *process type*. For example, HTTP requests may be handled by a web process, and long-running background tasks handled by a worker process. This does not exclude individual processes from handling their own internal multiplexing, via threads inside the runtime VM, or the async/evented model found in tools such as [EventMachine](https://github.com/eventmachine/eventmachine), [Twisted](http://twistedmatrix.com/trac/), or [Node.js](http://nodejs.org/). But an individual VM can only grow so large (vertical scale), so the application must also be able to span multiple processes running on multiple physical machines. The process model truly shines when it comes time to scale out. The [share-nothing, horizontally partitionable nature of twelve-factor app processes](./processes) means that adding more concurrency is a simple and reliable operation. The array of process types and number of processes of each type is known as the *process formation*. Twelve-factor app processes [should never daemonize](http://dustin.github.com/2010/02/28/running-processes.html) or write PID files. Instead, rely on the operating system's process manager (such as [systemd](https://www.freedesktop.org/wiki/Software/systemd/), a distributed process manager on a cloud platform, or a tool like [Foreman](http://blog.daviddollar.org/2011/05/06/introducing-foreman.html) in development) to manage [output streams](./logs), respond to crashed processes, and handle user-initiated restarts and shutdowns. content/en/who.md0000644000175000056700000000026215232661434012504 0ustar0000000000000000Who should read this document? ============================== Any developer building applications which run as a service. Ops engineers who deploy or manage such applications. content/it/toc.md0000644000175000056700000000231115232661434012503 0ustar0000000000000000I "Dodici Fattori" ================== ## [I. Codebase](./codebase) ### Una sola codebase sotto controllo di versione, tanti deployment ## [II. Dipendenze](./dependencies) ### Dipendenze dichiarate e isolate ## [III. Configurazione](./config) ### Memorizza le informazioni di configurazione nell'ambiente ## [IV. Backing Service](./backing-services) ### Tratta i backing service come "risorse" ## [V. Build, release, esecuzione](./build-release-run) ### Separare in modo netto lo stadio di build dall'esecuzione ## [VI. Processi](./processes) ### Esegui l'applicazione come uno o più processi stateless ## [VII. Binding delle Porte](./port-binding) ### Esporta i servizi tramite binding delle porte ## [VIII. Concorrenza](./concurrency) ### Scalare attraverso il process model ## [IX. Rilasciabilità](./disposability) ### Massimizzare la robustezza con avvii veloci e chiusure non brusche ## [X. Parità tra Sviluppo e Produzione](./dev-prod-parity) ### Mantieni lo sviluppo, staging e produzione simili il più possibile ## [XI. Log](./logs) ### Tratta i log come stream di eventi ## [XII. Processi di Amministrazione](./admin-processes) ### Esegui i task di amministrazione/management come processi una tantum content/ru/logs.md0000644000175000056700000001074615232661434012707 0ustar0000000000000000## XI. Журналирование (Logs) ### Ра��матривайте журнал как поток �обытий *Журналирование* обе�печивает нагл�дное пред�тавление поведени� работающего приложени�. Обычно в �ерверной �реде журнал запи�ывает�� в файл на ди�ке ("logfile"), но �то только один из форматов вывода. Журнал -- �то [поток](https://adam.herokuapp.com/past/2011/4/1/logs_are_streams_not_files/) агрегированных, упор�доченных по времени �обытий, �обранных из потоков вывода в�ех запущенных проце��ов и в�помогательных �ерви�ов. Журнал в �воём �ыром виде обычно пред�тавлен тек�товым форматом � одним �обытием на �трочку (хот� тра��ировки и�ключений могут занимать не�колько �трок). Журнал не имеет фик�ированного начала и конца, поток �ообщений непрерывен, пока работает приложение. **Приложение двенадцати факторов никогда не занимает�� маршрутизацией и хранением �воего потока вывода.** Приложение не должно запи�ывать журнал в файл и управл�ть файлами журналов. Вме�то �того каждый выполн�ющий�� проце�� запи�ывает �вой поток �обытий без буферизации в �тандартный вывод `stdout`. Во врем� локальной разработки разработчик имеет возможно�ть про�матривать �тот поток в терминале, чтобы наблюдать за поведением приложени�. При промежуточном и рабочем развёртывании поток вывода каждого проце��а будет захвачен �редой выполнени�, �обран вме�те �о в�еми другими потоками вывода приложени� и перенаправлен к одному или не�кольким конечным пунктам назначени� дл� про�мотра и долго�рочной архивации. Эти конечные пункты архивации не �вл�ют�� видимыми дл� приложени� и на�траиваемыми приложением, вме�то �того они полно�тью управл�ют�� �редой выполнени�. Маршрутизаторы журналов � открытым и�ходным кодом (например, [Logplex](https://github.com/heroku/logplex) и [Fluentd](https://github.com/fluent/fluentd)) могут быть и�пользованы дл� �той цели. Поток �обытий приложени� может быть перенаправлен в файл или про�матривать�� в терминале в режиме реального времени. �аиболее значимым �вл�ет�� то, что поток �обытий может быть направлен в �и�тему индек�ировани� и анализа журналов, такую как [Splunk](http://www.splunk.com/), или �и�тему хранени� данных общего назначени�, такую как [Hadoop/Hive](http://hive.apache.org/). Эти �и�темы обладают большими возможно�т�ми и гибко�тью дл� до�конального анализа поведени� приложение в течении времени, что включает в �еб�: * Пои�к конкретных �обытий в прошлом. * Крупнома�штабные графики трендов (например, запро�ов в минуту). * �ктивные оповещени� �огла�но �ври�тиче�ким правилам, определ�емых пользователем (например, оповещение, когда количе�тво ошибок в минуту превышает определённый порог). content/th/concurrency.md0000644000175000056700000001025115232661434014251 0ustar0000000000000000## VIII. Concurrency ### ขยายออ�ของ�อพพลิเคชันด้วยรูป�บบ process โปร��รมคอมพิวเตอร์ใดๆ เมื่อทำงาน�ล้วจะถู��ทนที่ด้วย 1 หรือมา��ว่า process เว็บ�อพมีหลายรูป�บบของ process-execution ตัวอย่างเช่น PHP process ทำงานเป็น process ลู�ของ Apache, เริ่มต้นตามความต้อง�ารตามปริมาณคำขอ, Java process มีวิธีที่ตรง�ันข้ามซึ่ง JVM จะใช้หนึ่ง uberprocess ขนาดให�่ที่สงวนบล็อ�ขนาดให�่สำหรับทรัพยา�รระบบ (CPU �ละหน่วยความจำ) ในตอนเริ่มต้น ซึ่งจัด�าร concurrency ภายในด้วย thread ทั้งสอง�รณี process ที่ทำงานเป็นส่วนที่มองเห็นน้อยมา�สำหรับ developer ของ app ![Scale is expressed as running processes, workload diversity is expressed as process types.](/images/process-types.png) **ใน twelve-factor app, process เป็นพลเมืองชั้นหนึ่ง** Process ใน twelve-factor app จะใช้คำ�นะนำจา� [the unix process model for running service daemons](https://adam.herokuapp.com/past/2011/5/9/applying_the_unix_process_model_to_web_apps/) �ารใช้รูป�บบนี้ developer สามารถออ��บบ app เพื่อจัด�าร�ับ workload ที่หลา�หลายโดย�าร�ำหนดให้ work �ต่ละชนิดเป็น *process type** ตัวอย่างเช่น HTTP request อาจจะจัด�ารด้วย web process �ละ long-running background tasks จัด�ารด้วย worker process ไม่รวม process ย่อยจา��ารจัด�าร multiplexing ภายใน ด้วย thread ข้างใน runtim VM หรือ async/evnted model ที่พบในเครื่องมือเช่น [EventMachine](https://github.com/eventmachine/eventmachine), [Twisted](http://twistedmatrix.com/trac/) หรือ [Node.js](http://nodejs.org/) �ต่ VM �ต่ละตัวสามารถเติบโตได้มา�เท่านั้น (�ารขยาย�นวตั้ง) ดังนั้น application จำเป็นต้องสามารถขยายเป็นหลาย process ทำงานบนหลายเครื่องได้ รูป�บบ process ดีมา�เมือมา�ับ time to scale out [share-nothing, horizontally partitionable nature of twelve-factor app processes](./processes) หมายความว่าเพิ่ม concurrency ได้ง่าย�ละทำงานได้น่าเชื่อถือ อาเรย์ชนิดของ process �ละจำนวนของ process ของ�ต่ละชนิด รู้จั��ันใน *process formation* Process ของ twelve-factor app [should never daemonize](http://dustin.github.com/2010/02/28/running-processes.html) หรือเขียนไฟล์ PID �ต่จะขึ้นอยู่�ับตัวจัด�าร process ของระบบป�ิบัติ�าร�ทน (เช่น [systemd](https://www.freedesktop.org/wiki/Software/systemd/), ตัวจัด�าร process �ระจายบน cloud platform หรือเครื่องมือ อย่างเช่น [Foreman](http://blog.daviddollar.org/2011/05/06/introducing-foreman.html) ใน development) เพื่อจัด�าร [output streams](./logs) ตอบสนองต่อ process ที่ล้มเหลว �ละจัด�าร user-initiated restarts �ละ shutdowns locales/ja.yml0000644000175000056700000000033315232661434012047 0ustar0000000000000000ja: # Name of language listed in locales menu language: 日本語 (ja) # A text to make known that the article is a translation not an original. # Empty for English, original. translation: (日本語訳) content/pl/intro.md0000644000175000056700000000232715232661434013057 0ustar0000000000000000Wprowadzenie ============ We współczesnym świecie oprogramowanie jest powszechnie wytwarzane w formie usługi, nazywane _software-as-service (SaaS)_ lub aplikacjami internetowymi. Dwanaście aspektów aplikacji jest metodologią budowania aplikacji SaaS, które: * Używają **deklaratywnego** formatu by zautomatyzować konfigurację aplikacji w celu zmniejszenia czasu i kosztów dołączenia nowych programistów do projektu; * Mają **czysty kontrakt** z systemem operacyjnym, umożliwiając **jak największą możliwość przenoszenia** pomiędzy środowiskami, w których działają; * Są dopasowane do **wdrożenia** na nowoczesne **chmury obliczeniowe**, zapobiegając potrzebie użycia serwerów i administracji systemu; * **Minimalizują rozbieżności** pomiędzy środowiskami developerskimi i produkcyjnymi, umożliwiając **nieustanne wdrażanie aplikacji** by zmaksymalizować prędkość zmian; * I mogą **skalować się** bez większej zmiany narzędzi, architektury, czy sposobu pracy zespołu. Metodologia dwunastu aspektów może być stosowana do aplikacji napisanych w każdym języku programowania i wykorzystujących dowolną kombinację usług wspierających (bazy danych, kolejki, cache pamięci etc). content/pt_br/toc.md0000644000175000056700000000232415232661434013201 0ustar0000000000000000Os Doze Fatores =============== ## [I. Base de Código](./codebase) ### Uma base de código com rastreamento utilizando controle de revisão, muitos deploys ## [II. Dependências](./dependencies) ### Declare e isole as dependências ## [III. Configurações](./config) ### Armazene as configurações no ambiente ## [IV. Serviços de Apoio](./backing-services) ### Trate os serviços de apoio, como recursos ligados ## [V. Build, release, run](./build-release-run) ### Separe estritamente os builds e execute em estágios ## [VI. Processos](./processes) ### Execute a aplicação como um ou mais processos que não armazenam estado ## [VII. Vínculo de porta](./port-binding) ### Exporte serviços por ligação de porta ## [VIII. Concorrência](./concurrency) ### Dimensione por um modelo de processo ## [IX. Descartabilidade](./disposability) ### Maximizar a robustez com inicialização e desligamento rápido ## [X. Dev/prod semelhantes](./dev-prod-parity) ### Mantenha o desenvolvimento, teste, produção o mais semelhante possível ## [XI. Logs](./logs) ### Trate logs como fluxo de eventos ## [XII. Processos de Admin](./admin-processes) ### Executar tarefas de administração/gerenciamento como processos pontuais content/zh_cn/intro.md0000644000175000056700000000152215232661434013541 0ustar0000000000000000简介 ============ 如今,软件通常会作为一��务�交付,它们被称为网络应用程�,或软件��务(SaaS)。12-Factor 为构建如下的 SaaS 应用�供了方法论: * 使用**标准化**�程自动�置,从而使新的开�者花费最少的学习�本加入这个项目。 * 和�作系统之间尽�能的**划清界�**,在�个系统中�供**最大的�移�性**。 * 适�**部署**在现代的**云计算平�**,从而在�务器和系统管�方�节�资�。 * 将开�环境和生产环境的**差异�至最低**,并使用**�续交付**实施��开�。 * �以在工具�架构和开��程��生明显�化的��下实现**扩展**。 这套�论适用于任�语言和�端�务(数�库�消�队列�缓存等)开�的应用程�。 content/en/backing-services.md0000644000175000056700000000517015232661434015131 0ustar0000000000000000## IV. Backing services ### Treat backing services as attached resources A *backing service* is any service the app consumes over the network as part of its normal operation. Examples include datastores (such as [MySQL](http://dev.mysql.com/) or [CouchDB](http://couchdb.apache.org/)), messaging/queueing systems (such as [RabbitMQ](http://www.rabbitmq.com/) or [Beanstalkd](https://beanstalkd.github.io)), SMTP services for outbound email (such as [Postfix](http://www.postfix.org/)), and caching systems (such as [Memcached](http://memcached.org/)). Backing services like the database are traditionally managed by the same systems administrators who deploy the app's runtime. In addition to these locally-managed services, the app may also have services provided and managed by third parties. Examples include SMTP services (such as [Postmark](http://postmarkapp.com/)), metrics-gathering services (such as [New Relic](http://newrelic.com/) or [Loggly](http://www.loggly.com/)), binary asset services (such as [Amazon S3](http://aws.amazon.com/s3/)), and even API-accessible consumer services (such as [Twitter](http://dev.twitter.com/), [Google Maps](https://developers.google.com/maps/), or [Last.fm](http://www.last.fm/api)). **The code for a twelve-factor app makes no distinction between local and third party services.** To the app, both are attached resources, accessed via a URL or other locator/credentials stored in the [config](./config). A [deploy](./codebase) of the twelve-factor app should be able to swap out a local MySQL database with one managed by a third party (such as [Amazon RDS](http://aws.amazon.com/rds/)) without any changes to the app's code. Likewise, a local SMTP server could be swapped with a third-party SMTP service (such as Postmark) without code changes. In both cases, only the resource handle in the config needs to change. Each distinct backing service is a *resource*. For example, a MySQL database is a resource; two MySQL databases (used for sharding at the application layer) qualify as two distinct resources. The twelve-factor app treats these databases as *attached resources*, which indicates their loose coupling to the deploy they are attached to. A production deploy attached to four backing services. Resources can be attached to and detached from deploys at will. For example, if the app's database is misbehaving due to a hardware issue, the app's administrator might spin up a new database server restored from a recent backup. The current production database could be detached, and the new database attached -- all without any code changes. content/ja/processes.md0000644000175000056700000000677515232661434013724 0ustar0000000000000000## VI. プロセス ### アプリケーションを1�も���複数�ステートレス�プロセス���実行�る アプリケーション��実行環境�中�1�も���複数� *プロセス* ���実行�れる。 最も�純�場����コード��体�スクリプト��り�実行環境�言語ランタイム�インストール�れ�開発者�ローカルノートPC��り�プロセス�コマンドライン�ら実行�れる(例:`python my_script.py`)。対極��る���[複数�実行プロセス���インスタンス化�れる多��プロセスタイプ](./concurrency)を使�洗練�れ�アプリケーション�本番デプロイ��る。 **Twelve-Factor�プロセス�ステートレス��[シェアードナッシング](http://en.wikipedia.org/wiki/Shared_nothing_architecture)** ��る。永続化�る必���る����データ��ステートフル�[�ックエンドサービス](./backing-services)(典型的��データベース)�格����れ��ら��。 プロセス�メモリ空間やファイルシステム��短��一�トランザクション内��キャッシュ���利用��もよ�。例���大��ファイルをダウンロード����ファイルを処����果をデータベース�格��る���一連�処������ファイルシステムをキャッシュ���利用��る。Twelve-Factor App��メモリやディスク�キャッシュ�れ�も��将��リクエストやジョブ����利用��る��を決��仮定��� -- �れ�れ�プロセスタイプ�プロセス�多�実行�れ��る場��将��リクエストやジョブ�別�プロセス�処��れる�能性�高�。1��プロセス��実行�れ����場�����も�プロセス��起動�る������局所的�状態(メモリやファイルシステム��)�消���������る。プロセス��起動��因�����コード�デプロイ�設定�変更�プロセスを別�物��置���置�る実行環境����る。 アセットパッケージャー(例:[Jammit](http://documentcloud.github.com/jammit/) や [django-compressor](http://django-compressor.readthedocs.org/))��コンパイル�れ�アセットをキャッシュ�る���ファイルシステムを利用�る。Twelve-Factor App����コンパイル処�を実行時�行�よりも�[Rails asset pipeline](http://guides.rubyonrails.org/asset_pipeline.html)�よ��[ビルドステージ](./build-release-run)�行�����望����考���る。 Webシステム�中���[“スティッキーセッション�](http://en.wikipedia.org/wiki/Load_balancing_%28computing%29#Persistence)�頼るも���る -- �れ�ユーザー�セッションデータをアプリケーションプロセス�メモリ�キャッシュ����訪�者�ら�将��リクエスト���プロセス��られる��を期待�るも���る。スティッキーセッション�Twelve-Factor������り�決��使��り頼��り����ら��。セッション状態�データ��有効期�を��データストア(例:[Memcached](http://memcached.org/) や [Redis](http://redis.io/))�格������る。 content/pl/port-binding.md0000644000175000056700000000443015232661434014315 0ustar0000000000000000## VII. Przydzielanie portów ### Udostępniaj usługi przez przydzielanie portów Zdarza się, że aplikacje internetowe uruchamiane są w ramach serwera web. Napisane w PHP np. działają jako moduł [Apache HTTPD](http://httpd.apache.org/), natomiast aplikacje w Javie mogą być uruchomiane wewnątrz serwera aplikacji, np. [Tomcat](http://tomcat.apache.org/). **Aplikacja 12factor nie posiada zewnętrznych zależności** co czyni ją niezależną wobec innych modułów znajdujących się na serwerze. Aplikacja internetowa **udostępniać będzie np. HTTP w formie usługi przez przydzielenie portu**. Umożliwia jej to obsługę zapytań przychodzących do wybranego portu. Aby skorzystać z usługi udostępnionej przez aplikację, developer może otworzyć adres URL jak np. `http://localhost:5000/`. W przypadku aplikacji wdrożonej w środowisku produkcyjnym zapytania do udostępnionej publicznie nazwy hosta są obsługiwane przez warstwę nawigacji. Kierowane są one później do procesu sieciowego udostępnionego na danym porcie. Kwestię obsługi takich zapytań można rozwiązać dodając bibliotekę webservera jako kolejną [zewnętrzną zależność](./dependencies), jak np. [Tornado](http://www.tornadoweb.org/) w Pythonie, [Thin](http://code.macournoyer.com/thin/) w Ruby, lub [Jetty](http://www.eclipse.org/jetty/) dla Javy i innych języków opierających się na JVM. Obsługa zapytania jest całkowicie oprogramowana przez kod aplikacji, natomiast kontraktem ze środowiskiem wykonawczym jest przydzielenie portu w celu obsłużenia tego zapytania. HTTP nie jest jedyną usługą, którą możną eksportować przez przydzielenie portu. Niemal każdy rodzaj oprogramowania serwerowego może być uruchomiony przez przydzielenie portu na którym jest uruchomiony proces i oczekiwać na przychodzące zapytania. Do przykładów należą [ejabberd](http://www.ejabberd.im/) (komunikujący się przez [XMPP](http://xmpp.org/)), oraz [Redis](http://redis.io/) (komunikujący się przez [Redis protocol](http://redis.io/topics/protocol)). Warto również zauważyć, że przez przydzielnie portu aplikacja może pełnić funkcję [usługi wspierającej](./backing-services) dla innej aplikacji przez udostępnienie swojego adresu URL jako adres zasobu w [konfiguracji](./config) tejże aplikacji. content/ru/codebase.md0000644000175000056700000001005415232661434013500 0ustar0000000000000000## I. Кодова� база ### Одна кодова� база, от�леживаема� в �и�теме контрол� вер�ий, -- множе�тво развёртываний Приложение двенадцати факторов в�егда от�леживает�� в �и�теме контрол� вер�ий, такой как [Git](http://git-scm.com/), [Mercurial](https://www.mercurial-scm.org/) или [Subversion](http://subversion.apache.org/). Копи� базы данных от�леживаемых вер�ий называет�� *репозиторием кода (code repository)*, что ча�то �окращает�� до *code repo* или про�то до *репозиторий (repo)* *Кодова� база* -- �то один репозиторий (в централизованных �и�темах контрол� вер�ий, как Subversion) или множе�тво репозиториев, имеющих общие начальные коммиты (в децентрализованных �и�темах контрол� вер�ий, как Git). ![Одна кодова� база -- множе�тво развёртываний](/images/codebase-deploys.png) В�егда е�ть однозначное �оответ�твие между кодовой базой и приложением: * Е�ли е�ть не�колько кодовых баз, то �то не приложение — �то ра�пределённа� �и�тема. Каждый компонент в ра�пределённой �и�теме �вл�ет�� приложением и каждый компонент может индивидуально �оответ�твовать двенадцати факторам. * Факт того, что не�колько приложений �овме�тно и�пользуют тот же �амый код, �вл�ет�� нарушением двенадцати факторов. Решением в данной �итуации �вл�ет�� выделение общего кода в библиотеки, которые могут быть подключены через [менеджер зави�имо�тей](./dependencies). Суще�твует только одна кодова� база дл� каждого приложени�, но может быть множе�тво развёртываний одного и того же приложени�. *Развёрнутым приложением (deploy)* �вл�ет�� запущенный �кземпл�р приложени�. Как правило, �то рабочее развёртывание �айта и одно или не�колько промежуточных развёртываний �айта. Кроме того каждый разработчик имеет копию приложени�, запущенного в его локальном окружении разработки, кажда� из которых также квалифицирует�� как развёрнутое приложение (deploy). Кодова� база об�зана быть единой дл� в�ех развёртываний, однако разные вер�ии одной кодовой базы могут выполн�ть�� в каждом из развёртываний. �апример разработчик может иметь некоторые изменени� которые ещё не добавлены в промежуточное развёртывание; промежуточное развёртывание может иметь некоторые изменени�, которые ещё не добавлены в рабочее развёртывание. Однако, в�е �ти развёртывани� и�пользуют одну и ту же кодовую базу, таким образом можно их идентифицировать как разные развёртывани� одного и того же приложени�. Gemfile.lock0000644000175000056700000000227115232661434011535 0ustar0000000000000000GEM remote: http://rubygems.org/ specs: base64 (0.3.0) concurrent-ruby (1.3.5) daemons (1.4.1) eventmachine (1.2.7) i18n (1.14.7) concurrent-ruby (~> 1.0) logger (1.7.0) maruku (0.7.3) mustermann (3.0.3) ruby2_keywords (~> 0.0.1) nio4r (2.7.4) ostruct (0.6.2) puma (6.6.0) nio4r (~> 2.0) rack (3.1.16) rack-protection (4.1.1) base64 (>= 0.1.0) logger (>= 1.6.0) rack (>= 3.0.0, < 4) rack-session (2.1.1) base64 (>= 0.1.0) rack (>= 3.0.0) rack-ssl-enforcer (0.2.9) rackup (2.2.1) rack (>= 3) rexml (3.4.1) ruby2_keywords (0.0.5) sinatra (4.1.1) logger (>= 1.6.0) mustermann (~> 3.0) rack (>= 3.0.0, < 4) rack-protection (= 4.1.1) rack-session (>= 2.0.0, < 3) tilt (~> 2.0) thin (2.0.1) daemons (~> 1.0, >= 1.0.9) eventmachine (~> 1.0, >= 1.0.4) logger rack (>= 1, < 4) tilt (2.6.1) PLATFORMS ruby DEPENDENCIES i18n maruku ostruct (~> 0.6.2) puma (~> 6.6) rack-ssl-enforcer rackup (~> 2.2) rexml sinatra (>= 2.2.0) thin (>= 1.8.1) RUBY VERSION ruby 3.2.3p157 BUNDLED WITH 2.4.20 content/fr/dependencies.md0000644000175000056700000000612315232661434014344 0ustar0000000000000000## II. Dépendances ### Déclarez explicitement et isolez les dépendances La plupart des langages de programmation offrent des systèmes pour créer des paquets à partir de bibliothèques afin de les distribuer, tel que [CPAN](http://www.cpan.org/) pour Perl ou [Rubygems](http://rubygems.org/) pour Ruby. Les bibliothèques installées à travers un système de packaging peuvent être installées à travers tout le système, ou bien limitées au répertoire contenant l'application (que l'on appelle les "vendor" ou "bundles"). **Une application 12 facteurs ne dépend jamais de l'existence implicite de packages au niveau du système**. Elle déclare toutes ses dépendances, complètement et exactement, à travers un manifeste de *déclaration de dépendances*. De plus, elle utilise un outil d'isolation des dépendances durant l'exécution afin d'assurer qu'aucune dépendance implicite ne s'introduise depuis le système environnant. Les spécifications complètes et explicites sont appliquées uniformément en développement comme en production. Par exemple, [Bundler](https://bundler.io/) pour Ruby fournit le format de manifeste `Gemfile` pour la déclaration des dépendances, ainsi que la commande `bundle exec` pour l'isolation des dépendances. En python, il y a deux outils séparés pour ces étapes -- [Pip](http://www.pip-installer.org/en/latest/) est utilisé pour la déclaration et [Virtualenv](http://www.virtualenv.org/en/latest/) pour l'isolation. Même le C dispose d'[Autoconf](http://www.gnu.org/s/autoconf/) pour les déclarations de dépendances, et la liaison statique peut fournir l'isolation des dépendances. Peu importe la chaîne d'outils, la déclaration et l'isolation des dépendances doivent toujours être utilisées ensemble -- seulement l'un ou l'autre ne suffit pas à satisfaire les 12 facteurs. Un des bénéfices de la déclaration explicite des dépendances est que cela simplifie la mise en place pour les développeurs qui découvrent l'application. Les nouveaux développeurs peuvent jeter un œil à la base de code de l'application sur leur machine de développement, en ayant besoin uniquement d'avoir de quoi exécuter le langage ainsi que le gestionnaire de dépendances installé en pré-requis. Ils pourront mettre en place tout ce qui est nécessaire pour faire fonctionner le code de l'application de manière déterministe grâce à une *commande d'assemblage* (commande de build). Par exemple, la commande d'assemblage pour Ruby/Bundler est `bundle install`, alors que pour Clojure/[Leiningen](https://github.com/technomancy/leiningen#readme) c'est `lein deps`. Les applications 12 facteurs ne s'appuient pas sur l'existence implicite d'outils système, par exemple ImageMagick ou `curl`. Bien que ces outils puissent exister sur beaucoup voire la plupart des systèmes d'exploitation, il n'y a pas de garantie qu'ils existeront sur tous les systèmes où l'application sera exécutée à l'avenir, ou si la version disponible sur un système futur sera compatible avec l'application. Si l'application dépend d'un outil système, cet outil doit être distribué avec l'application. content/ja/intro.md0000644000175000056700000000256115232661434013036 0ustar0000000000000000���� ============ �代���ソフトウェア�一般�サービス����供�れ�*Webアプリケーション* や *Software as a Service* �呼�れる。Twelve-Factor App��次�よ��Software as a Serviceを作り上�る���方法論��る。 * セットアップ自動化���� **宣言的�** フォーマットを使��プロジェクト�新��加���開発者���る時間�コストを最�化�る。 * 下層�OS�� **�存関係を明確化** ��実行環境間�� **移�性を最大化** �る。 * モダン� **クラウドプラットフォーム** 上�� **デプロイ** �����り�サー�ー管�やシステム管�を���も���る。 * 開発環境�本番環境� **差異を最��** ���アジリティを最大化�る **継続的デプロイ** を�能��る。 * ツール�アーキテク�ャ�開発プラクティスを大幅�変更�る���� **スケールアップ** ��る。 Twelve-Factor�方法論����よ��プログラミング言語�書�れ�アプリケーション��も�用��る。�����よ���ックエンドサービス(データベース�メッセージキュー�メモリキャッシュ��)�組����を使����も�用��る。 content/uk/dev-prod-parity.md0000644000175000056700000001711215232661434014754 0ustar0000000000000000## X. Dev/prod паритет ### Прагніть мак�имальної ідентично�ті development, staging та production �ередовищ І�торично �клало��, що є �уттєві відмінно�ті між development �ередовищем (розробник вно�ить живі зміни в [локально розгорнутий](./codebase) за�то�унок) і production �ередовищем (до �кого мають до�туп кінцеві кори�тувачі). Ці відмінно�ті про�вл�ють�� в трьох обла�т�х: * **Різниц� в ча�і**: Розробник може працювати над кодом, �кий потрапить у production через дні, тижні або навіть мі��ці; * **Різниц� в пер�оналі**: Розробники пишуть код, Ops-інженери розгортають його; * **Різниц� в ін�трументах**: Розробники можуть викори�товувати �тек технологій такий, �к Nginx, SQLite та OS X, в той ча� �к на production викори�товуєть�� Apache, MySQL та Linux. **За�то�унок дванадц�ти факторів проектуєть�� дл� [безперервного розгортанн�](http://avc.com/2011/02/continuous-deployment/), завд�ки мінімізації різниці між production і development �ередовищами.** Розгл�немо три відмінно�ті, опи�ані вище: * Зменшити різницю в ча�і: розробник може напи�ати код і він буде розгорнутий через декілька годин або навіть хвилин; * Зменшити різницю в пер�оналі: розробники, �кі пи�али код, беруть активну уча�ть в його розгортанні і �по�терігають за його поведінкою на production; * Зменшити різницю в ін�трументах: тримати development та production �ередовища мак�имально ідентичними. Резюмуючи �казане вище в таблицю:
Традиційний за�то�унок За�то�унок дванадцати факторів
Ча� між розгортанн�ми Тижні Години
�втор коду/той хто розгортає Різні люди Ті ж люди
Dev/Prod розгортанн� Різні Мак�имально ідентичні
[Сторонні �лужби](./backing-services), такі �к бази даних, �и�теми черг повідомлень або кеш, є однією з обла�тей, де dev/prod паритет має важливе значенн�. Багато мов програмуванн� мають бібліотеки, �кі �прощують до�туп до �торонніх �лужб, в тому чи�лі, *адаптери* дл� різних видів �ерві�ів. Де�кі приклади наведені в таблиці нижче.
Тип Мова Бібліотека �даптери
База даних Ruby/Rails ActiveRecord MySQL, PostgreSQL, SQLite
Черга повідомлень Python/Django Celery RabbitMQ, Beanstalkd, Redis
Кеш Ruby/Rails ActiveSupport::Cache Пам'�ть, файлова �и�тема, Memcached
Іноді розробники бачать переваги у викориÑ�танні "легких" Ñ�торонніх Ñ�лужб в їхньому локальному Ñ�ередовищі, в той чаÑ� Ñ�к більш Ñ�ерйозні Ñ– надійні Ñ�торонні Ñ�лужби будуть викориÑ�товуватиÑ�Ñ� у production. Ð�априклад, локально викориÑ�товують SQLite, а на production PostgreSQL; або локально пам'Ñ�ть процеÑ�у длÑ� кешуваннÑ�, а на production Memcached. **Розробник заÑ�тоÑ�унку дванадцÑ�ти факторів уникає викориÑ�таннÑ� різних Ñ�торонніх Ñ�лужб в development Ñ– production Ñ�ередовищах**, навіть Ñ�кщо адаптери теоретично абÑ�траговані від будь-Ñ�ких відмінноÑ�тей у Ñ�торонніх Ñ�лужбах. ВідмінноÑ�ті між Ñ�торонніми Ñ�лужбами означають, що може виникнути крихітна неÑ�уміÑ�ніÑ�ть, в результаті чого код, Ñ�кий працював Ñ– пройшов теÑ�туваннÑ� в development та staging Ñ�ередовищах, піÑ�лÑ� розгортаннÑ� не працює в production Ñ�ередовищі. Такий тип помилок Ñ�творює перешкоди, Ñ�кі нівелюють переваги безперервного розгортаннÑ�. Ціна цих перешкод Ñ– подальшого відновленнÑ� безперервного розгортаннÑ� надзвичайно виÑ�ока, Ñ�кщо розглÑ�дати в Ñ�укупноÑ�ті за веÑ�ÑŒ чаÑ� екÑ�плуатації заÑ�тоÑ�унку. Ð’Ñ�тановленнÑ� локально "легких" Ñ�торонніх Ñ�ервіÑ�ів вже не Ñ” таким привабливим, Ñ�к було раніше. СучаÑ�ні надійні Ñ�торонні Ñ�ервіÑ�и, такі Ñ�к Memcached, PostgreSQL Ñ– RabbitMQ, доÑ�ить легко вÑ�тановити Ñ– запуÑ�тити завдÑ�ки Ñ�учаÑ�ним менеджерам пакунків, таким Ñ�к [Homebrew](http://mxcl.github.com/homebrew/) Ñ– [apt-get](https://help.ubuntu.com/community/AptGet/Howto). Крім того, декларативні інÑ�трументи підготовки Ñ�ередовища, такі Ñ�к [Chef](http://www.opscode.com/chef/) Ñ– [Puppet](http://docs.puppetlabs.com/), у поєднанні з "легким" віртуальним Ñ�ередовищем, таким Ñ�к [Vagrant](http://vagrantup.com/), дозволÑ�ють розробникам запуÑ�кати локальні Ñ�ередовища, Ñ�кі наближені до production. Ціна вÑ�тановленнÑ� Ñ– викориÑ�таннÑ� цих Ñ�иÑ�тем Ñ” низькою у порівнÑ�нні з кориÑ�тю dev/prod паритету Ñ– безперервного розгортаннÑ�. Ð�даптери длÑ� різних Ñ�торонніх Ñ�ервіÑ�ів вÑ�е ж кориÑ�ні, тому що вони роблÑ�ть перенеÑ�еннÑ� заÑ�тоÑ�унку длÑ� викориÑ�таннÑ� з іншими Ñ�торонніми Ñ�ервіÑ�ами відноÑ�но безболіÑ�ним. Ð�ле вÑ�Ñ– розгортаннÑ� заÑ�тоÑ�унку (development, staging та production Ñ�ередовища) мають викориÑ�товувати один Ñ– той Ñ�амий тип Ñ– верÑ�Ñ–ÑŽ кожного зі Ñ�торонніх Ñ�ервіÑ�ів.public/css/screen.css0000644000175000056700000000454715232661434013362 0ustar0000000000000000body { margin: 0; padding: 0; font-family: Georgia, sans-serif; line-height: 1.5em; font-size: 12pt; } h1, h2, h3 { padding: 0; margin: 0; } h1, h2 { line-height: 1.25em; } header { margin: 0; margin-bottom: 8pt; padding-top: 12pt; padding-bottom: 26pt; border: 1px solid black; color: #fff; background: #000; font-size: 19pt; text-align: center; box-shadow: 0px 2px 12px #888; } header h1 a { background: url(/images/symbol.png) top center no-repeat; color: #FFFFFF; display: block; margin-top: 0.25em; padding-top: 100px; text-decoration: none; } section { padding-top: 16pt; text-align: center; } section h1 { font-size: 19pt; } article { padding-top: 8pt; } article, nav { margin: 0 auto; text-align: justify; } article p a, article li a { text-decoration: none; border-bottom: 1px dashed #444; color: #000; } article p a:hover, article li a:hover { color: #337; } section.concrete { background: #ccc; margin-top: 24pt; padding-top: 24pt; padding-bottom: 32pt; border-top: 8pt solid #aaa; } section.concrete h1 { font-size: 28pt; margin-bottom: 32pt; text-align: center; } section.concrete h2 { margin-top: 12pt; } section.concrete h2 a { text-decoration: none; color: #000; } section.concrete h2 a:hover { border-bottom: 2px dashed #444; color: #337; } section.concrete h3 { color: #333; font-weight: normal; } section#factor h2 { font-size: 28pt; margin-bottom: 12pt; } section#factor h3 { font-size: 17pt; font-weight: normal; color: #555; margin-bottom: 16pt; } nav { margin-top: 16pt; margin-bottom: 48pt; } nav #locales { text-align: center; } nav #locales a { color: #000; } nav #locales span { font-weight: bold; } nav #next { float: right; } nav #prev { float: left; } nav #next a, nav #prev a { display: block; font-size: 19pt; text-decoration: none; color: #000; } code { border: 1px solid #999; background: #eee; padding: 1pt 3pt; } table { padding-left: 32pt; } td, th { padding-right: 12pt; padding-bottom: 4pt; } footer { color: #999; font-size: 10pt; background: #000; padding-top: 24pt; padding-bottom: 16pt; text-align: center; padding-right: 64pt; min-height: 56pt; } footer a { color: #999; } article img { float: right; margin-left: 32pt; } article img.full { float: none; margin-left: 0; } public/images/attached-resources.png0000644000175000056700000015517315232661434016343 0ustar0000000000000000‰PNG  IHDRhÆŸ¨Š pHYs  šœ IDATxì� œãÝlj ‚ ˆ·«NÒ ‚ !jSQQQQQ¤®©ûõm´EÅ‹J\*ˆºkTQ‹”¨ *%*š%AԪДU‹÷û;™Ù>;{ÎÙsvÏîž³ûû>¿}®3óÌwfgžÿ<ÏÌéúÕW_u±™€ ˜€ ˜€ ˜€ ˜€ ˜€ ´?�Ú¿ n� ˜€ ˜€ ˜€ ˜€ ˜€ ˜€ØAóy`&`&`&`&`&`%BÀZ‰7ÃLÀLÀLÀLÀLÀì ù000000�!нDÚáf˜€ ˜@IèÚµkª¤äƘ@óÔð1°eÍ[ÔK™€ ˜€ ´�®þŠc{`÷6MÀJ•ŽÙ`ÚvêSªmt»L uÔ½ˆ{ýÙ,ãª&`&`íHÀZ;Â÷¦MÀJ�ÚC´jDéµÌ-2�X'­¦EkðÂ&`&`mBÀï µ foÄL Œô(£¶º©&�/�žùVt=00�ö%àwÐÚ—¿·n&Pú–ÐÄÚÒo¦[h T�ò=¾'LÀL <øâ]ÇÉ­4h?25¬ªý6ï-›@ᘪ»�¥R…/é%LÀLÀÚ›€§8¶÷ðöMÀLÀLÀLÀLÀL "`ͧ‚ ˜€ ˜€ ˜€ ˜€ ˜€ ”;h%r Ü 00000°ƒæsÀLÀLÀLÀLÀLÀJ„€´9n† ˜€ ˜€ ˜€ ˜€ ˜€ ØAó9`&`&`&`&`&`%BÀZ‰7ÃLÀLÀLÀLÀLÀì ù000000�!`­D„›a&`&`&`&`&`vÐ|˜€ ˜€ ˜€ ˜€ ˜€ ˜@‰°ƒV"ÂÍ000000;h>LÀLÀLÀLÀLÀL DØA+‘áf˜€ ˜€ ˜€ ˜€ ˜€ ˜€4Ÿ&`&`&`&`&`&P"ì •È�p3LÀLÀLÀLÀLÀLÀšÏ00000(vÐJä@¸&`&`&`&`&`&`Íç€ ˜€ ˜€ ˜€ ˜€ ˜€ ”;h%r Ü 00000°ƒæsÀLÀLÀLÀLÀLÀJ„€´9n† ˜€ ˜€ ˜€ ˜€ ˜€ ØAó9`&`&`&`&`&`%BÀZ‰7ÃLÀLÀLÀLÀLÀì ù000000�!`­D„›a&`&`&`&`&`vÐ|˜€ ˜€ ˜€ ˜€ ˜€ ˜@‰°ƒV"ÂÍ000000;h>LÀLÀLÀLÀLÀL DØA+‘áf˜€ ˜€ ˜€ ˜€ ˜€ ˜€4Ÿ&`&`&`&`&`&P"ì •È�p3LÀLÀLÀLÀLÀLÀšÏ00000(vÐJä@¸&`&`&`&`&`&`Íç€ ˜€ ˜€ ˜€ ˜€ ˜€ ”;h%r Ü 00000°ƒæsÀLÀLÀLÀLÀLÀJ„€´9n† ˜€ ˜€ ˜€ ˜€ ˜€ ØAó9`&`&`&`&`&`%BÀZ‰7ÃLÀLÀLÀLÀLÀì ù000000�!`­D„›a&`&`&`&`&`vÐ|˜€ ˜€ ˜€ ˜€ ˜€ ˜@‰°ƒV"ÂÍ000000;h>LÀLÀLÀLÀLÀL DØA+‘áf˜€ ˜@¡ºvíúUÕ‘÷o´݈6(t½-­Ï6ëÛÕÒu5µ<ÛZÝÖkËí‡ÛuÜLÀLÀŠAÀZ1(z&`&P:ºÑ”UP �AÏâ°Tv8c¿öc§þŠÚLÀLÀL C°ƒÖ!£wÂLÀ²XŸ’ó³––w�FÎÖIîÂW_}Õ5V²Ìi00(uvÐJý¹}&`&��À!Y‘êß@“‚ÅF(Ný#¾z}‚fÄu‰ï�žŽòÿEø$Ú;.Cò{£É¨iZåt´YXGqò²NyÌVFþ è(ôg¤6.E£�âu†Û!?½�¸,L'êåµñòQ¸.áDôú ½†NB]Ãu;n&`&`Å  §ŒÅX�×a&`‚}îÇÙ‘Ê`g†q�¬ Ò%¥­õp9haÃ([�ôÇQÞç”-¬•­•Ϥ|7Ê'�>%ÊK?§Îyq&u5�ò9ô­8/ ÿI¸Vœ§v…ÛU:.S˜©L Pt'Ê4u±ŽüÝ�ŽS#˵=V[ÈþÕ³e#o!9½I;�íi�%gìëB• Ö—¶ViGMÀLÀJ”€GÐJôÀ¸Y&`&ÐtÌ»#½sva°ü»A<޾N$…z£SXf¸B${ mIqÙ¹Ôùöòhúïñü��³¿O¡ Ñ"ÔR;„ÄÎÙ‹Ä7Ak ÛQwtiÒÑS:™G½zkÆþÕ/KDŽî@$‡ö:ÛØ8ÒYC¸®„tÙLÀLÀŠDÀZ‘@z5&`&Оè$ÇSü>§r’Ž Ú3-ˆÇÑsqhÞD 9X?� Ï ïïñ3£|�j�ÅìÄO¡®Ö¥‘¦3‚üæFÇ žÌz 9I§£'PìHÕšŒºá �cû/¡‘Y?ŠH¼oX©“Æ÷`¿—pþMì¤ûïÝ60�¢ГH› ˜€ ˜@Ç%ð7víÜ »§‘©Ð†‰§‚ø“A|Ç Þ?ˆ?ÄÿÄ›Ý*XpNÇAZL¼2Nºáêç‰%AükA¼³FG±ãÝ� ØLÀLÀŠ@À#hE€èU˜€ ˜@ ø’¶,Cššx)Œc£÷Â’–ÌÓÂØ–ÆÂ�‚øšA|Õ þï ®‘®¼ŒQuì3YØ–O2UhF^¸Î|ö/Ü„FÎÒK�PÚ ¿‘Œi†b&`&PvЊÃÑk10�v%€ã�~‹°Z õG§¢³4¬6‘Ö �™^A½°N½ÓByX_ïie5:õá¨SÏ,Ãu‡ÛÏR=¯ì°ía{Ãõ‡uêW Ãðƒ!õùŽtѨäÚh¾Xpl‡¡3sHëk¡!}ØÅf&`&�;hy@r0èhð94ÒZýTB2w ©�³ƒüyA|û >$ˆÇÑÏâaøA‰ø##Aq:úR�Q¿n:ù)T…*£òzlj¼®Á2™¢…î_¦u8¯!�½£äZ„' û�Ž�~"A¹„ôÍHï%¾…äÄÙa› ˜€ ä `-™€ ˜@'"ðÛ`_5âÑW"/üä•A�»‚ø%ÔM!}Åñâ ?Ž.ˆ#„gQoU4€øUA~U§>¶‹©»1’ðk´ º"*ÔTÎØ´ýuãD†°Ðý˰ g%Äš~‚áXÊ^D;!9Þ+¡u�FØäHÉñiä°‘o30H°ƒ–⤠˜€ tFt°ïa¿¯�öý›„ú‚£¤¸ì"êÌ\MÿUÝç£ô„ Q5Z%íê cq9V/£p4-¨ÒåF÷G[ÊÁûéÓû_ S‘,S['§s3üiÆþeX‹³b8[:.¡÷Ðu¤{n‹äŒ-�·ÞEŒßsÔqy …Û¤m&`&`ØAËÅY&`&Ð Щ>šý>ÍBŸ"}üãOh?ÊÎ"¬7Òÿ!¡÷Šn@ú�ˆœ®hj`Ô�DÆOÑëHÙxÉ ÓhK#£þ—dþ�ˆ4ÝQÛú¥×Où£ÄeÇ *¤)”r¼ÿDº�±\Þû×`A'2ˆGÏî�Ž×p*­‚ž']-×¹�¼É ¶q꺡�Fõ˜€ ˜€ @@/•„ ˜€ ˜@D€ÎâãD+ øNViGM ä p/¤‘© ¡}9�«ƒt‹¢¬_£§Û ‘¬÷Ò׋Î&}>i�ªþ½‹¾Nž~§ï âuBr6é]ˆW¡§Ñ!HSjÿ¨º„9�eõ `ªÞ•³¢ MÀL  x­ š›l&`&`íEç¨+Û–c¤‡3Iª/±’Ý»<èò½(¼Ouä°É9“ÃölT6* 7'�42zq”×…e2ް‘¿u¦ Eq]‡&`&БØAëHGÓûb&`&`­L@v1úÒôÒ5Ñ èUÒz·P¦�„Èþ¸î’6âÙ5J*�æwÎä°izd<½q¶–Ãñú.y+¢Ù(mäO'2�2åkÊãZúi†P¦‘»Ø�¨ÅMÀL  ØA+Ç£æ6›€ ˜€ ˜@Èà°ÅÓ+p¼4›'þé„ß%w‹e?�ò®$¼‰týÏ+°l<¢¦–ØLÀL C°ƒÖ!£wÂLÀLÀʃNÕ´T•~šá>4m‚ž@éß²£Ž>:"Çí²OIïC\ƒÒF^ýˆŸ“>�P£to¡iHË6ùEHêÙLÀL ¤ØA+©ÃáÆ˜€ ˜@é ã[ßÉ¥¿«/øµŠµÕvZ¥ñ^i!âѳ‡Yè—èu$gLþˆGËÎ!-'nO΋?þé“þq9É.õ#jÔÙ™ô¦èWhšŠž$_ŽžÎÙÑÓ,ÿ¡ÍLÀJš€´’>iýHq¬oý -E7"½GÔ¤Qoô4úiyM_‹;ÞúŸÚþÒ¶ÞCÝ•*å«\õÔÉ·å #M/Ü…Ÿ¾Ï±D~E8U#ýöÙÒ|– Þk¨.¨«/9†#j‡’Þý�zý /G²H/!ŒÏ½—&Óž>ë¯Ñ1�”éóþk#�æ�dª£sh‘60hKvÐÚ’¶·e&`%J€N¸¦�é# ê ª³ªôžHÓÂ2Ùmd^�ôáur7B¹ø#ëR:“=N¦F&äÄ­�Æ ™9êSœþ¼ú‚;�FEÔ±ÖòzçhËjt¥ qu¶ïSÓ4·áéØÿìå+çÞ¨þKËDà|2g¢÷á|3:‰}{[ƒ5¿©‡ú$ÿÉQu~ ®sSŽÚ³¤{îŽd:>&üg:µü%z€ Çld”;uQÒ� ˜€ ´>;h­ÏØ[00�r  ß§úVÔп¦Ð†¨ÑØ‘ÿC$û Z]¤¦>)küç=²ÔYN!MI“m�ŽIÇ2üa[r´N‰Š^#Ü8’â²s©óíåÑ.×G¡µ1´0Ö ë8€iÑ�QRNÙÁèô!ezG먨NT¥íœªäˆÚoÙú t"zí‚d÷ JE°,§²Hçëó$Êâ¶È«"=é!…¾.©ÑÙa¨»â¡‘·3ºÉñ{ Í@ç þa=ÇMÀL PvÐ %æú&`&Ð1 ììÖ)tTßDo‘§÷r’vX�q õô±…K‚¼ýƒx=•º Ñ›d†ë��½°nÿiÑ2,ûw‰ø™Q~WÂØ!|„xìPîCGY£mê`+Œ÷OåzWÉ–›@ì´$kÉQŽ®A‹`ûúŠ�¹dýVOs>|ˆö@•ý>z½B:~ 6¼IU>^ ,=2FÞÄõÐà]ô,’Åû¾ñÐ}¨Šºé>aô;ò&#=Ì8ˆ®@rf5Š|+Òöl&`&P0�ôŦॼ€ ˜€ ˜@G#>õ�;ªÚÇ?gØÑ­ƒi:¤>Ïÿ„¿@‡ › ˜€ DÀZA¸\ÙLÀ:,�yÁžmćñ8ª÷nb ;»q^¶P#1±éc"±Å£q: ç‰pùpêãì Ž¢ê8˾†nAú²Ÿ,Î_žòß‚ à´,@ú�2‹uÐX4Õ¢l¦Q¨QHS&å¬=…NAý²-Кù‘ã•Þñ�Ю(>ŸÔN™KYì°iJäVèô6’3V‡F°lÂ=ÐæHN¬úVw’ÿ:awö3|0A–ÍLÀr°ƒ–›�KMÀL ³¸+ØÑKèT¦Ð†ä]äÇÑ[ãá/©·:Úé7Ƥ¤ÃW¿ˆ²MÑ×ɸ(Î$¼#ˆ'£úB_lZ¾¯DÆ…q&á•A\Ñ{Ð?£¼¢PiåÛŠD¤]�öb•rÖäÜÈ!®A¹LÎФwÖ^Eç¡Á¹h‹2Ú ÷Ëôð8ÒÏ?¨�¤}“ÉAÛ½„F 9ÿ‘Õ”I™–�ífòãOú«ž~»ïtôºíŽÂúñrCª®„Úmä1c£œi&Ъì µ*^¯ÜLÀʆÀµ´ôù¨µ[.DÕh=”4�D=ejäà#;xa•%ƒžd¼†£m¢B},D#+�Ž®œ*µM¦Ñ‰¿GR\vuf.�.ÿKú3brB»%Êó/Øê]/ý®Ø!¬r}4 ]ŽªQ.ëOáxô Nˆ>8£÷¾vE=r-Ôe´]¦ÑÁï �Ck¢PøÎš®ÿ ÙÚy¬D<>ß–×PÙ>h6„äÜý ½�¦"ýü ¨Òçú»‘—Íô?¦i“³Up¾ ˜@Ç"`­cOï� ˜€ 4‹Ru:wC7 9\êhÎ@êh70êÖ‘±':½ˆ>EZæ~´#ås3™¾¶8ɉ«AW!MÓú²åGSxš…´-}läOh?ÊÎ"Ìdr"CÓ~ÙÚ€€Ž'ªB'¡¾lrk$'ln›¯ |,š‰4òvt’cßæFÛ“ï¬Í§CнHÓrWG“Ðÿ¡xã,÷.mÞˆ¼‹Ñÿ"9iw uÑKHË~m‹†¢'%-ƒäœ&G×İ-B60�N@@/vw‚Ýô.š€ ˜@~èizSeP{×ɪ íhàY“�c²ãYÀš «Êvû³Ä«ÑRsÙ¶œ„Ncì¿F@SÁ÷…Au�n—(í’¶7ÒtÈJÔ5erNªÐ4¤QºÅ„íb´_ÖµèFô¤‡Ú§+‘Îõahôc¤ª/L#h¯¡w�êÈÖGg ÑGèh šÀ>žN¨¯JjdM6äÔ‘ý•êÙLÀ:8�|.Œ�wÏLÀL £ C»û¢{›F5bKަÅùÛ˜@ä\iÔiǪ¡FbGFÊ6R¦ã9<ÒD–›C\ÎÚ¬o.a[Úlì´”m§ßŤ=zðð&Œ´/jÓv”J‘-9g ½/éï—ƒöiM[”³*;’ô]¤wW¥4¡¨ =MùN„60�N@ÀZ'8ÈÞE(WtV¶¦íý¨…)×}q»ÛŒÀlj-éKzvÐPJ!É¿õRÚ!'çVþ×{î‚F£H£RÙlÒù,·€PÓfïEú9€:ÂV3Ö?‡mê�0M¿üá¯ÑSäßO(iÔKÛw äH*.›GzEB�ªÉ¦‘Þ’°/úšJzeÂuЗ(¶QQä©8# YFm7}°$~/4¬â¸ ˜@X¡ Ûì&›€ tt<îf7_@zrn3�| ¼OÅ/Ðè.4œŽ«Þ[³•0ŽQ-zÅ?Ž=„æž�ôÞW.ëGá‰èq¤w¿ZýDZiã³lKŸÔijã;l÷èJmŸ´Ú¬‘1Mü-š�ÔÆç�œ)Ù=(v¾f³N9eßErâ^D±Å#lr@ë�í¬„.!ãf¤i’oÕ:b&Pöì •ý!ô˜@Ç @gcUtº-Ú#=}–§?äo†Aë)m+t<ëĺ-ZÌöÖEÝQo´?rǵ-Ày79-á�cŸÊ&f5±™Þ”�AÓ�>2r?:)¿¨FÛ>EW¢­XñöHŽÙóHŽ×Pò�Er:?D{ 5È×ôƇÐ+¤çÆÎWmTLû(û�þ��°-!9[y�­D\£mk£¯�¦^j™sÐΊç2êÈÁ+:—\Ût™ ˜@þü‘�üY¹¦ ˜@+ ³°*«©#3½ƒ¡îh8R(…>DúaÙ ‹n´ãqVZ¬Ø `8Z8�ÒÒTÐÚ’øHHОfE#§BŽ�ÞõÒTÈy®HÎÝtt7×M‹l7cäŒ}½…–¡ è ´ zíF?§ÞÙĉ~Kú(ÂFùÿ‘qºÝF�*ò4]R(Ö"”ÃÖ�àÒŸ(ù½›Š®¡l\œïÐL 4è"a30�v'@'AÓ�¦D Gú}â¿GÝ�ž:«S¦ÎÊšHÓ˜ºÚLÀ:® ñ�cïÃnkIŽÆTƒrÙP /Bá�c+¯Í�}ÐtF]Ïdš&©ëÚ9è”vÎeÚ7Yƒé�˳ÒãuÜÀ:«¢|­{ŹDö"�cªÑD�¸…Ö—„Þ×ÓC0› ˜@‰°ƒVbÄÍ1�Î@@�t~†}½Š+¦ ɵxÊâËÇšœ¿ùh ’¦QC}QRåO"™FÒ´žuPü±‘#©ÛÈa£Üf&ІÜÁiCØÞ” tFêX`© ûþ6y_�ò7%ìŽôÂüqhÒSÞï¢;�FÕÔÁЈډèßèNd30�œp‚£Ih7*êÖƒ‘®+ºÞd3]�†£‰HÓ _D?C³-Кù´]ލ]ÁöäœÕÏDˆ¶;h’>­ˆ4Âö{$TÎ× $»—uêwu}•MFšN:lG¨Àf&жì µ-ooÍ:#� Ùiu&’:hzÒ«'Ä? Ã w%nŠ*ëc!Ÿ¿!JËAû)Ú„|-c30�¼ pÝÐ{k·"M÷“#"'LŽÉb”Ëä˜��ä¨-D—¡JÔ=×B­UFû?BúšíÐÄ6æ’–C¦}¬"”S¶€T&G­/Z‚t=•í½<è¢��4@3ô K¦÷yeµH#‡ Þ]£Í[�·Ò55þØHè°U‘¯wÒF [ÑUh°òl&`­GÀZë±õšMÀºt ½oÖ -@/¡ØBí62ŸCßBÓоh:ÒçõW¦Óñ&º ©“‘·Ñ‘èŽÔqz¥ò^ÐMÀ:®/Íýql9>ºné½µVûqì|ûñ.ú0ª2á~è`òþJ8*Ê¿7 ›tØØ§=©«‘´]ÑRô'ò~H˜6âÝÐÎ ã<‡&`-#`­eü¼´ ˜@@€ô¾¨ }Œž¡èèð¨Êwõ‘�Øê4:râÔ ¸¥Ð�hoòG¢W‰dl»7ÒÉ4§ŽÓt²™€ ˜@“¸î,@—¢�©¬©�c‘®%¹õ |$šŒä¬=¥ëêGº]ŒökJçTt7íèJ#îBù{,jÐJQ¨÷Ùd ¶åY]~M¨e�a=ÿKø�bJäIôg6q Ú>.ph&Ð<+4o1/e&` pSž@εè*¤¯…=…æqC×Ç<^@êäÔ?u%^ï ïB½÷‘žò@êPÄ/»«8/£ ƒÑÍT^„.BÁ‚c)SÊf&`yàZTƒ®Gš>¸&Ò(ÔTƒr™]‡ÚýDZÕHÚ/ ?4¢ì+�œ³øc# 6®™ú€Ó·�ìlÒgþZW‘‰‡¬W¤¾é”ÿ˜€ 4›€´f£ó‚&`1nÚzo줧Ëk¡¿¡¿£”iÚË$$;ny�þÛÀA ò вþè¤)’µ;erÄz“¿+²™€ ˜@³ààè½5}ýð0V°>ÒÛåhÊeý)�4ª¦÷ÖÚãDZµ�ýH~l$é°m-ôÂÓ‘³%èu[üÎÚI¬ïlä/ìÆdš@3 tå©™‹z10�ÎJ€ÎÅFìû*è¯\CÒòæ“Þ,“ËÈûÒ¨–~kG›;Њè÷,>‚°`c{)’ç©Gzr›Íä4NAײ­¹Ù*Åù¬WÓ*ã4á0–« ÒŽš@Éà<^H#SACûrWiG‹LæX¥œ•QhPž«_F½hz€c´4ÏåÚ¤ûô 6ôšFÛö#­‡\A$¿ª!½%ñ—Ðûh}ò¾ ldÔÛšÌ1QÁtê=Ú¨’3LÀê x­…#&`º‰¢®ÙHP´ ºŸrÝ�_F/�Þ0ª¿áÕh º�ƒdùJxRçã"4„¼¡‚�3¶§/Bª ꀞŠz¡L¦'Ú'"uôîÄÜL•œg&`Å À5FSº/@Û±¾ ÐÑh&ªCÙ¬'£Ñ-Hï­éDZO@ÙhË|öå-¶wÒWŸ&Ôþ¼ˆbG,=Ó¨bœGñ�冓Ò"÷C¡iä]Ah3ÈBÀ#hYÀ8Û:n˜w³Ï?@ßåF›ñé&uΧ\ß�Sôs¤)/šZ¸Ë|Eyâ?DšþòÒMùBŠTWŸjÖ¨™ªæê°¨jc¹ÞdŠÆ¡ÊfZ¯žFOdg«”+Ÿm=NyePÇ#h G˃ç±`¤‚Öz-€Ñ–QŽ…œ092z 5 )��é¡Ò4$çGñv3öA³ähuGÑžª1ä?O° IÞÊKuæ‘·9Ú‹:ÓI_K\N_Ò…@\×wÝn'O÷ › tjvÐ:õá÷ΛÀ p“<‹Ô¯Ð}Ü õiz½.‡í/¤ï#ÔÍXÎË.hM¤Q±HOŠ¿M½[q8q�¢ék�šòr)º„²/ 6Ö7ˆ…ŽB#9Ù¬†‚ÉHÓ«³UÊ'?ÚÇÊ ®´†£åA€óØZ *Ž‹®c;!�š�D(«¦’œµéè ®su„íjì‹f[è!ÝîhÚôYšI¡ÙY��þ”ôÆÄ wQyé{ù}Hÿ m‹ô0MñÐiH_ðÕ~êžÓ�`Gô4yGèTÏf�€´ŽvD½?&�ƒ7;Ý8u³“z£÷ÐƒÜø^¥lâ‹�žbV"Ý,å|­„¢ÎmÔÑ‹âû ÃIßHú—ÄÏFãHO"Ô uu­«š¼‚o¨,¯̾hŒrÙ '¢;ÙVm®Šù–±}9¡•A};h G˃ç±´28T']ãöD£Ð€<›\C½HÛÃ\û–å¹\«Wcâµ=i׃¤‡°QM�ÔûÆš]ÑÀ(™ í÷>”kêã‡Äç×rºŸè�`Ò:öC› g(ÿ¡Í:,uÖl&`�€7ºýÙÍ×�F¸ÖCºÉo†ô££—~€~�t]¸ ˆ4 Evuô´tj:Å4G’%Ó»²w–éù‹só|䜱¾ t!ë‘“x ÊæœÉ›‚¶cÒMHy60(+\»âÇÞ‚†Ëù8ÍB¹FÈôpí`¤ëqøãØ}H·›qýÖ=B÷=äz,jÈ+„Ÿ ôþPå;Hðä|mH çL ï#½*ájh#›W™öY£u÷¢¹Ô]3Ò¤eÃP#‡°QEg˜@‰ðZ‰7ËŠE€›”¦ˆ\�¶FÇÓ!xBë&_ŽØ ôº=„D»|ÉñÒô”Ú=‚FzaÒM7…¶e½Íz¢I;vgù£ÑH¤÷²Y5‘²šl•ZšO{Ô¹¨ Öã´†£åA€óx!-M­íËÿMu�v´„ püä�ì�t]�4³ “s7ÝÍñÖµ»Ý�}ù�¸½„†"=„Û É›ƒî¡­? žöW£‚!Û‘P÷©¿ôE�w'é'‰ïŒtx FgRö„i£ÎDþ‚´Œîk6(;ê ÙLÀ:6ݸôÄRòxB»Ê L75ÝøôYg�œé]3�–É!{É*)û‚P7VÙq¤¿$Ü �‰ôÎÀsHïŸ䜱ý^H_*Ó vÒSÒlΙÊÕIÙ„í\Štc¶™€ ˜@‡% ëjé�cë²ÏCrŠÚÍØ�ÛØ¸œ1=`;mEÞ‡„ó‘î#_ÐF]ÿÏ@²ëõ‡¼- 䜽‹î"½á6HöcÖñmB-ÿ«hyåË®@šönç,�ÃÊ‘€GÐÊñ¨¹Í&�'nZ[PUÎ7‘n€¿Bºé=‹ND2}†~ uo"þ'ô9º=Kþ`òõ$w1ZmL^5a³Œu `ÁãДë‰ðRÊ'#}ô£MŸÓF� ÞVÞ8�=‚VÞ‡0cë9®ºŽFû"=¸ê‡ò±%TÒÈÚTô×ÕÚ|jí:ì�öC™Ú·ºCûôU೉ÿRy$�&½'qíˤ·!½!ñj¤ûÅZÑ2br1Ú†ôg„¶"€u«Ñ¹§þ@O¤™9Ê‹My*Ëd}ÈLÞï—‘W“©2y:ÂóóͨžŽ³T˱U�m‚m3(S\45mq®nLYvAO+‹þ�f£AH6dy�þ;€¿ºØ½…VG“дë×ÔÅç o'­Q¸•QAƲºÎè&< mbá¹”OD·²ÝðÝÄb.60�ŽO€ëb{9+ÒI\_uýÖÔÀQ(¾¾mdê$��´ŒåfŸ†ÚõDZٟ»i‹Ší€ôa)ͪˆMû$»wy�ÞGEï‰Òß�™,'‡n-ÒW¡�´sÁÉÀ*E¾¬õ¢°Wö&®ó¥g”GPZFûãUY†jÐâ(®þL¬÷”Ïù ²²²îeÕZ7ÖL ž¨»IhjâwQÆß-#+t)�tóÖ´FMQ\ÍB2Ýàg"]¬õ)c}Y#h§"M{|^!ù_æm¬Cx�–�EŠg³Z ÔQ¸‚mÌÎVÉù&`&` pÍœGŽt×\]Ã5Ê4 E=P&SÇ[u¤:–«"œŽô{kÕ„mjlóŸlð¡p£´I=p}pä#ôG’z%G÷.™î29¦²8}%ñ›Xßœtn'ý+õíû!�0¦¢xê^œë~LqYY*ŸÖ.?�ÒÜbêWGZ…ú¨™òJÊtm&`åI@7!9hãУ\€ýnù«¢Z¤›µLNÐ+ÔÕÍï ¤i H®A¨Ñ¸Ÿ ÙD4Ý©Ëä휱®J‘c6 åºÆèB©í膪§]600�fà:ªkª¦^ËuXN˜=œÓµXéL¦kôðH—³Ü\ârxä¬)Þ.ƶ5+DS%½�¶6Á (EÑˤ{ßÕ¡HïC¸9ƒ:…±Ï:vÐfh ê�úE¡Êl T�”7ÌNŸ_ê'Í�¤¾�â¯q®)Þ.æØ.ؽQh.Èr¬6ä¢QM8ý�${gB�zm€V"�þÝ2âú臞¢Å¦‘3Ù÷�œ3™nà)t ÒËÚÓXÿ(â7¡¼Œetó?�tÃÈe3)¼©P—«¢ËLÀLÀ 'ÀµuKÝ*q}V_OÎÌh4©“šÍÔÑ—Îa¹Å„SÑt¤÷ÖÚízͶ?  ߣMI“é�¤öQ3<´¿A#©§w¨;¤±ï:.Û"…ƒ‘îµ=P[Ø6R‹–FÒ¹ ó#6‹š8‘U/yîô$¯w¢^œÔù©c*S¨´Lõµ\®eU¯9&Žâ*Õ̵_sÑœHÏsŽÍ¯¯ÐŠ‘®l¨WïU›€ “‹‹Xß7ù¿MOí }3郑.žšþ¡'i· ×£ø1„zßLõFš—ÿ4Š4×Kôt,ëÔï¡íO|âc›4ê÷§’FËÆ ]4³™.êj×$ÖÝ&·l i*Ÿ}zœ:•A½a´¹*H;j%O€óx!�L íËy\¤í¤87±ëº‡ŒBòÄ køt4 =̹¤Žk»û¡W­‹.C/Ó¦óÚµAEÜ8û&Çd0Ú U"ݳsÝc).ÈS[ý†8T\Òq}Õ(^Ê׌ˆQíì�ÄfCÔ+’ò¥>�ˆÅÄi6ªBzp1—°èf­èH½Bh\ŒVcÍï#]¸uA‹z g�ìH#f P í�žECºÈ_�F Ù‡HÎÙ§\\ôdRSHv ¸íBÞ›ÊËdÑEQ7÷£ÑðLu‚¼yÄ'"}ôCþ’7öÏZÉ%7°)œÇvК‚är]÷û�aO4É!Ðý¥)«¥BšŠô‘‘%„ífìƒLê=¢ºvkD6Ì~È™Ø�DºWËéh®-fÁj¤þ€¤øh œïT[�×(…6ŽBÅuþK½QsMçÿŒHú(J_ÇZs‡—3�6"À…¥ÿ𵄇±É‰h$Gê@òõåª9Ä5íA¿ s3é3ˆ_„¦“Þ‹ô‘Ä�GšÖ¸=Ò…Heº€ë­›ÀIè(´ùÏ62êéæq:éB—Íê(ÐSV�–Ue«Tªùì§´R=8nWÞ8�í åMËE€sF÷9k£�„(›E%uPïäš/gÀ–'˜÷¢ê¾è`T‰ 5ÝÇõÀv>š‡þª8Ça¡-Oѹ/Gm+Ô?Ò BýObêÿLG· 9kµ…,ÖµƒÒpÜJˆŒn4ç:¤Ñ*=ñ©@›£;�FÒ6àŸÿ3êÉqÓûgÏ’Îø»eÔù9å?Eš§ÿÒEc#´+ÒÍøAt&Ë¿KØÀXv0' Ñ¨{ƒÂ†‰%$¯AúÍÅËÒØ_;heyäÜè�ç±´ˆãàüéÁ»#�æè‘oGUÚT¤Îé,B[ðD¶¦Š¯Xçcº¯ÎFs�œ2Ýókm­D€ã¤~—€ëxICQO”�-£’µK9Nú¿(Èì „Ë•M u D7ÅØÊcüC/"ýñÝÐɤ/ÓÖÉ{ž`�˜­L|1Z ¢ž~·ìFâúݲÓH¿J¨å4…ñh¤'Dr´Ô�{é©§–¯7êê†q(Rý�õ™#³Èžˆîf=u™«”O.ûþ8­­ Z<Œýª ÒŽš@Éà<Öÿw*hh_Îãê í¨ äE€sI÷ =¨ÓÃB9kýP>¶„JÓÑ4¤{Zm> uä:°”Ó{&ªÌc?Åo&Ò=ö øÍÏcWieCõ‰vA•h8ÊÇaÓÿÀ¹ù„yYW*çUÑ•LÀšO€è•Xúlþ߯çZ õô£Ò?AR÷I놨ìôG?ÈÓ”ÆÃI_�Ò#f„r¾.!8]M•cI¯@ø¥Ê 1–Ó�÷84õBÙ,~2¤iŒó²U*Ç|ØA+Çç67 Àyl­'ŠE€skëÒ½i$’ã–�éž1é~¦�ŒÔä³PG©Ý[/cÄ,—ͦPœ49'WE—µ?ŽkwZ1Éñ�Ô‡Êfz€=�•Ïùo-Fç›@ ð�[ï”×tÅù§\=¹ZÊô±}&¿éƒÏ ôFÂÏ‘:ZúÈ–˜ú1[„ÖFšÞxZU"�†Õæm¬O]\Æ¡M,8Ÿò‰HýXÚDݲ,†‡´²t'­ó;c_ÌZ‚–“&�/þ©¶F]›¨_ï”Q¯>Î?ìèÛäMDr–¾ƒô�™~·ìÇè=$GéôCê�D¯ÏÛh^ ]Â-›‚¡LVKæd´Û‚ ~—-ÓJ�g&`&`ÜSæ }(K# › 9aU¨e³^èþ¨Ù&rÖBG Šl Dù£3”«| ˪C\ˆ³—aUyeiô,ÜŽœ³ÝØÿëóZÚ•:Ž»XœËN%ÏÍyz@ßÈì 5Bâ hšx�h½€†ÇµÉÓ(Õ¤§…±Õ;ed„ñ.ÔÓ{g‡£%üãÊ�z ÉôÂõòú ¯£§Ð—é’<ÿ°îÝÑýT�ŠzgYtAT¾>Ûø š“¥ž³MÀLÀL Å¸ÏèþvÆÊÖGcÐ4$'&›ÉÁ�&£EÜßžB?CýÃHË)ª óq9|M�È/vrhb…ãÙßÙ‰<';Îõ¯IìöàD:�´ƒ–‰ŠóL i±#s\PUSoDa^è”…q-öúmÆÍBŸßý)z 5˜ÊH:/c½Ð)HNÙ 4i=“M'S#r› ýˆâÒL•œg&`&`­E€{O º íÃ6ôÛ�£�œ°”Ëä��^Õ=]ˆ”§œrær™œ39i‡æªÔ²ŠÄò i';/�ù‰]ï™H§“vÐ2Qqž 4M`2Uä`�ä"ÿ�¨ºòæ ç£´‚Ð) ãúÐÇ”kMNÚ�ÐMè[ä4•‘íD×±¬Þ[›€ú¡LVC¦ÊõnÙ^è�L•œg&`&`mM€{’>‹¯/9j6‡œµ�‘îYM97ºç�‰žBº�æc=©4…{çÕ¨)‡.Ÿõ%ë$ŽžÏv´M['&À9ЇÝŸ;hùPrèbÎÍã}²~�º¡£ULÞŸ‘ÞáR~l¡SÆÓåÔÕHÖÚ„ë¡ÛP^SÕ´?z†å_DcQ¶›ÌÊÆ  Xÿi¨š¸ÍLÀLÀJ–÷ªYÑ=kùM¤Žíì&¼RåÉbÝ¿5š–íÁf²~sÓYðQ¶£º­àØ÷g·ÕgËöÊI*vÐàpÂ²àŸ«Ò;Þ&ìE8)ª=–t¶›Bè”).Ç®�qúªAFŽÛ©@Re!º ÎR½–ü[�>ø!§QSH”g300�²"Àýk>º ¡ázÏ[%g¢bÜ×ä<éÿ{¶¦é~ý2Û9uoÍ yÝ¥C€c­êú %=LOåÛ2Ÿ ù’r½NK€,}úþjô.Ú ­…ãF¡ßjÑtÆmÑÑÍHÿØ�à4tš�ÒNõÿE|*ØXç®,4�D¹þo«)¿]Ïöjm-' Ÿ'Ø¥å«ñL M è!’Í:îm‹Ù©ë%®Í= ÷Dº7î�VDÍ1­g뻜P3Mêš³’<–ÑèÉd4ŽmM Ô“[k[y4ÇUZ‹@tnÁúOE…n§+'F¡Ë¸¾ t*ü“é£ÑžÚ�ƒŽBúÇfh Ò¨Ú³ü/é阴_ÈA»š¼c•×c=ê`„Æ! �ç²Ê1{Àû\˜š.ƒûãÔªlº¦k˜@Yл§ÕeÕb7Ö Àµ{Õ îgØÄòöáÿEŽ`³Œ¶h–K*�…µ Ý»å¨-È£¾«”8޽FdÕw‹òyP6…cXr·<Å1IÄihL@ŽX7ô Ò—uØ}išá?ÑüSj$M¦©�cÐɨ`c=�Fì´�‰(›s¶”²ËÑ7ùçÞéåj?‰ˆÍLÀL óˆ:ÅÅpÎmÒ”ÇÝ‹HP÷êeÖ§6Ÿ�ô%JýtÀ (EÚVF8fê·ég^¦ÙšÊ¨Q³LÎÙò§¢&ÍZ“ˆ\¡£ài¥x߈ÐÇH/ kZcl#Òé‰Úç„·DÇ‘þ”¸FÐdGèyo¢›P­ÒùÛëŽÔ�ÞèühÔ3˲s£rývÙIh~–zÎn�Í[ÌK™@ɘÇu¢ºd[熙@Ë ìÛòU4XCoR3¸'ëóýÝ”4/q‹éC'z¨›íAêPÊäÈ-d›úù€KÐî([_€ª¶ö À1ÑÏí�ôP=LW¿MŽö€,íQpÒ90=K�ÙÅ8é¬Ð (uü3É1»} mOZÿ4c�¦#n�ô%E}B?¶›‰èIÚiÔ½•ðí¨`OÒ)âÑ¡MÉwнJ�^¬K#c�ú…˜:þrØô0Qz éK—z˜kk&ŽIOí‡6GºÞKrÆt¬ò5ƒè¤WOjÃÙÆ¡¤§yßAë´€úGíØRq$K¸!ùú‡øw–reë¸þ@pPª•ik_k}aQï…é‹‹{r\ät½K\çÀjhÚ %í2ê¦ß#£þš^†ôå—èMô,Ò9¡ß«?î¤3ëèIAüÑ�+ý7s&Ñk�ß+û/ÇL Ýðÿ;‚�OC÷¡ui·ÆxÃ&`õøßÔÃÎËë3ŠYƪt�—éa©îóúÔaN£MM:há ¨_Az4 EÝQ¡&Ç`šIñjômVhƒ¬Å¶R¿>Åûª_¦tsLçJÒ=Bý¶ø¼!ÙÐØ~^ZsN€†[jÇ;Ù‡Í÷ŽôužHy’œ¯’ÅiyÀR›í‹·£šÅQB¡Ò±3WM<¾¨Làÿ3A¡…ý t-«y-E»£ è$¤iŠ:/¾�4¦¼•‘FÒ4¢vŽÒÆz>$2fyjù_Ö/‡O›.ª7-Ïmü—zúÇ×t†ƒQ®óOçÁ¤¡ðy„60� Àÿð®4ã´z›ÿO;g%p\܈Œ" ûYºßK²¸Ï÷³”÷¿´LüÊ‚:Ôª£÷È«¶¥±MµóR‰ë�ú²ê¯¨R‰Ô‡ÈǺSIuÕg�Ú×j¤í(Ūߣx íH3 ^–Æ~ª�%¥Ðz¨©¯‡ý¢8A‹L<ÕO«B3а«%,c·ãg IDATšu/ÚšŠ¼¢èM±Zy¸ªx Y ¥’m?m MíLEq%3ì¿ Â Å¤¥èM…œ º Ø`·Y÷¢M‰ßEø#´7š�N$ïeÂw�œ+�~=LžFÊ4Òö:ÒôÇñhÊe¿¦Pëøc²ëÓ1×o³�F$Ëiý“_ƒn*÷‹cb¿œ4�²'ÀÿòÎì„FÍz «øÕÛ ˜@‰àrX‰4¥(͈úw³2I#>½ vB•hˆäÄbê“ô‹”u9¶¥²j´4’ú�u(v`—Eq‚tŸ4~X¥:ª›ÑØ§ê¸ êUÄéD¨v†e«’ÖþËäè:,L•IJ‡Ë‘,ª‰ÇœHU„ŠŽÑÖ1�hWã@¥h€æzöCýÑ@”B:�ÝÄ +ØéeA¤y„’æ!Ëy«%ì4‹o²³6þ’3ös4itKÃÍ·Sç`âÓÐÕè$Û`y�vâ”ÿ5ô>�.AY�uÊù“ê�mèx©ãP®‹EåjË5¬ç1B› ˜@‰àÿy0Mz­‚ä¤éº`30�6#@¡†�顳”6®Mˆl…!õ�¥*†¥Š±’p´7L–z|> Œ5‡øKƒmÝè6uÐ'”N*9c=Ûz§£íé„_l{1quš³Y5½Q®öªs.ï>¶Ti¥PmCit¸ XÏ#=ÍAšŠ7—,Ü_²ÊÛØG±>½ˆnG)¤iŠ�±¯wQ¾:ñëÐñèvòî#ïlâç#1“¥4Ên l*éuP5é/T˜¯±ì`ꞀF¡ðH®b “‘¦1ꜳ™€ ” þ§5:>­†ôàKuæ�ÿþw¯ n30�v!À5H}<éÖ¸\›Ô'ì�âA�ñ~H¡ú§¶ÿPÿ«ÉñŠ¥ë¼>´RKØîÖj ‰N”Aìá.¨)®“§˜¶”•©Ã+Õ ¥]aWG[eË$À+Þ¦‹l0þçHEÿ:¡ò+P¯H)B1R]åÛæ²ÂÙ¨ i¾¬¸•­Áõ·4þ'H¿S6 @·¡·P ‰¯æ—¯‰¶e_ Ôt�zí§8v5ùÇ.�ö7:®±ÔÑHçw.›EáDt7Û«ËUÑe&`íK€ÿm=™ÖÔåµ�®éÿ–ü'‰o‡V'ý9¡ÍLÀàZ±�ÌTPЗkFu�nÓ(íQß2…â÷²�ûš {Giõ›ÊÙ–Ñxõóå ¨�+Åñ7£´f™µ[?Œc¡YVSPl¿âØ=.-FÈFÕAÞ�DƒQK׿€uT£8du¸.p-aÉ[ÔÎꨡqØd»á™¢’þqäÌ)L¡~A¨¸Bl •%9rTÄuš†4Ÿ¶,xÒÖØn "mS´é ÷…hC´;û£™¼‘¸Þ/;�dc�8l‚VEëÔ18 �E½r,,žS�FËææ¨ç"0�!Àÿ·:*�"9gº6ÆÎÙyÄwFï 9kª3£wWGgð®ë�ÍLÀJŠ×&9.ó"em×5]ÓÔßÔuP}Lõ§dÊS™ú,t(‹ÔÉÏ×j¨8É›ƒükè@(¶q|z²Î�HïPÈ�V|Ê×ô„⤑§’5öõpw=šM[‡�Ö;dê(­ˆ6&¯š<=<˜I|)qMwԔƟ¡ëÐÉäg}ߌú½©£s}J¡l¦ŽÛt¤�~<œ­’óMÀʃÿû+ð¿ü%á)´xÒuâGäéýÖ‰ëÿ¼'Òõò,ò'ÚLÀL@3”‚! h×)ŽA;mgœêSN šÑò)ެTΘnVcPÔ”i$aV¤'¸�U7µ€Ë[NÎê0ÄÜÓ+äØõ"²ªŒ$§-Û1T§c¬ÄrU„—³Î{ KÑn§Q— Á´uÚù¡œËÞH ÑošLU™ž©lùYGÏXÇ êhî”�Eé¹Î“ åÌV+Ãf­M€óSçä=h2ç]úSÌ­½Íζ~¸Ê9ûûýkô%Cžœ3]BºNþ�…~Nþ„žî› ˜€ ˜@ËtÏgqn<êÜŸ‡ŽF¹–YFyšŽ4Mn1¡­p,–Ò =ñM�îpLÕ¹Ø�B#PÊd•dVR6áOYÏœL•Ú+�ö|JÛô.Ú©HN¥FÇ'_ªF¦údžÔ¨€ Ö£Nï¾hŒr™xLDú臜>› ´%�›Ù˜þo‡sÞžÊ9(çÀV¸õ¡º¦C뺦{W##ÿê麢Ù&šB½1q]Cõ…Ø»�®5_�¯)Óžî› ˜€ ˜@Ë är¶ÒkçÆ£÷n¦ ÞéŒÆÔ9��¦ ‡¹Y¹³ ˆR7Ž“:$D’s¢5 »€ú ¤ &ãêÉ)9�å5¥¯TLmš‡îTƒh[FçLe™Œ}J‘RG¬7Êf:·ï@“ØFI9ªÙìüŽG€óUNÅèhÏt ¿œ¼:ÎÉIoo[g�à¥kÜã¨?êGzø-Ë´5òo òõG¹éã!rÎ4Ý1f¯uècE600h6�r-É�ç ʧ¡L�ÖjòODp“ÚéÇ€Õ�µ•!Ž�~'M#K =™Ÿ™a7ÔÔ1ˆsC#p%a´ûMt*èücvG÷³¯£3Q¦ó\ûX�NE:×Cv΀ak{œ¯z� s5´ù$âÑ›0ßñ `؇ìØ9S�¡(ßkÚ<ê~…Ò©X× -‹t=ÔtÇÍÐä¯Oh300�fÈê qƒÑ�î^„’£l È�6¡£zª!në 8žz¯‘ÐÝØ¥­Ñô »6œÁ_�þ¦ë ¡ÍLÀLÀ &�ÑAãÆ2€5É9 ­ŽÄx´7)½w£´­àkTm/vQ#jÕ‰]JZ#¬­fœ‡}Pe16Àz¢«Y×»èrÔ?Ëz—’?éÄ^HÓ@m&Ю8wÑ€;Pø0AN†ÎÑÅíÚ¸2Û8¼–ÐäahV¢éº¦i·FزË߃t�È4Ýq0ùºfôD#Xת„600(ˆ@F�5üõÖ¤ŽÀnJ Ú ßÑN@€c®—⇠d‡f<uDŠnQ'IÓ�.iîÊYGw´?z†u¼ˆŽFáy®z‰±h}öWÓ—„…Ž›@{àü­`ÛšŠþ¯Õ‘>€óTç­­@pÓ=m”¼¦õ'ïq˜çtÒ¢ÍÍ# §;nKzZ é÷ÿ‚^g]º®ØLÀLÀL oÙ´‰5èóÂ�%òœìD8þKØÝ}PM°Ûrvv ÒE‰Ò¡Q'é9¤pi=•ÎÛ¨_�Îc�Eè”mùÚ¨|û·º)Ïfà|û´IA åQ™uÊ){õITǹêÑÝ”B’ðk‘“ÆòátÇ-Ùö#h tÒ5g<’¾<ð_00È�@6-|R«¯âùwvòãÙ¡kqÈ9›‘ØÉœïl$ê6™¤C:ˆJ9Ó¨AlÇÅ‘\!ËîŠ~O�…H�£d§6^|1‘3‘Þ-;ÍŽ š@3 ìÂr×qþumæò�cUÝÉÔÈ™T„6�söÚ0Ãñæ€cì¤ÍL¬AÌ5’^‡UÒ_Œ•3ö?HËëëŽ �~ÌúsBý~š>R�l&`&`&�7�lZƒp“:ªA†�’çAŠÙZ;Ïú‡²n9gIÇj4e½3m—üžè8ô2åê$�FêØf29—£�³‹Ñ’L•œg…à\º�e¾@GºlŽú×QV™(ŸÊ¶NKä9ÙðŒ�´©‰ÕÈI{ŽkKÒA®¯FÙ¦$4»dÕEDÿ!ÿbÂÑgèB¤Ÿ2Ye»6©ŠÍLÀLÀÒòrШ©ßÙÙßÌ:/ŽнuÄŒõ¥�õïKDS¹ŒÞ./M¿7Ö ãKýèJÊßEÑ€¨n2X•“Ž˜~ëH?Q—¬ä´ �€d�Ëy¹nK×Å:~Á:Æ$Ö3‹ô!‰<'‹@ º&Ȫ’Nši$­‘“FÞ”É!S=ŽöD ÐéHΙÞ|™º×µè=â‡ÚLÀLÀL +�|´¬án,W¢Vé gm¡ Ú�Çü ¡§Ã�:)Åh\Ôa¹ƒué<Ëfã¨×í‹4ʦ³q(“C§uÌCG#ývÙOÑ|eÚL µpŽ©c> ]Ñ’mDÿç$Ö¡óW¿7Y›Èw²H`«7…8iïQzíÍòê·$ÿŽnFz¯uÇSœ¾x«é¯—¢_�7–Ðf&`&` :ÝB⸹œOx­; ™v˜LŽó®ìÌ9hhkíÛ8�u_žÇú+¨³­�£®:XSÑ$ÎÍY9ê¹ÈŠB€ówEÎ5½oÛ%D^ _£µq.È¢ÿ¹É‰…–�–sV“Èw²È`\Ç1�“¦kÉÁêådi$muæ+ŸPS5¥z%âŸDy¿'”ÒFy?"o£��> R…>E—Qv;Ëý›¸ÍLÀLÀÈw-\¨7 u¨ßåsJ·uO½Óuz‘]š‰†¶Ö®±�ËXw>ÎYÜ„lΙ:°ç �–é£vÎbb[�çï×XùÓ„£iCœ{rÖŽDÉ[UyùõûSwê,³Œø~¬7íù޶X×!9iÉk“œ4½“VMŒêær²4º¶ŠGU�'®¶H÷R› ˜€ ˜€ 4"�¯ƒ¶ Ñ’ËßEOþBnXO¡£�o8@•zÇMSwGš–ó>šŒfhw-yÕò Êb;ú}²ëXèÄ‚l\¹Š¬ÑHŽÙ¹HŽšÍÚŠÀ64½ŠÆpN§¯§œ‡Ï�ž�ÎEy˪óÿ(ê,PG\?qâ”¶ŠÂ]Ó“NšŽÏC¯¡y¶C#gßAú¢£®Oº^=‹veýoêã!ë+´™€ ˜€ ˜@L _m �3¦z&ÓÍêô>7›g�æØ«ãb+QýV˜FÊ4GN™:”#=ÙÍdÓÈü&ªÊT˜oÛÓèÀíhl¾Ë$êi„BçÚtp4ÝènT—¨ã¤ ´�¹lä ´"Úí�b;‹È~œï[ÇÙBê¤;ý”W$ꜩó;‘çd€K�´shîpô=¤©�ÝÐ@Öû$¡œ³oèǬ5ÕÛf&`&`iy9hÜLjÑ,Ñ�ƒr½ 18ª£© ¢{Ðh0RçÜÖ`ŸB‡¢‘žø/B“‘žè†OíIÖ›Ÿ©H/»ë˜êú’fDØ®¶£|h›Í5½ëqm™×Üx9(9fK‘8h:㽜ãÇjª£>q"ÚFélF}]õ�d`¢ÎDÖ¡JØÚ™ÇANÚ„D3t-kr$�e¾Èy#ÒýS7š…bÛ„È*HAçG^÷èF :ÃLÀL ¬ ä0q³Ñ�s¹i\Lxƒ†¢lÖ‹‚Q‘T§–eÕ±ž�æ¢çÑ|Ö[Kh+÷cU[!9ËÐ Ôåk‹©8ÝıY�ïB¹êѦ>”߃Ԧ–Ø,|(º¶%+ñ²&PÍ­ädç÷ëÄŽ®Šþÿ4òõ4eïæ²+)‘¨0�´œ[‰à8žÆqÕuñò IrÒ%ÿ`Êu¼3e×Sg*…¡y¤uÞ¤-*Ó¹3+ÊJÔߒȤ{¥Î+› ˜€ ˜@'"н9ûÊMEÕõ7’áAHŽ˜�\ÖƒBÕiP�uÌ'/Ôk¤°�B[0Sç …6FýÑ@Ô/Š«¬PSçc’SÖ ³P芒õikò4r¦vÃÆ±;hÅ éuL€óYÓÔ~ƒŽFóHâFÓº5Ýñ:trT¦ÿɬõψêÔÛb‡°>�^ÛJˆÇä Ž™Z:iº§é'hô{g¹œ´�¨÷¢¦®žmNýÛ”&LOwTœ²ÿ!8}��nE600�NF YZȈ›K5é $n.êˆïŽF¢á¨ÊÇÔqoÔyg}ËÈ×Nu.!”#¡NOµâl¿Cvd"–ìãzH¡”Bý¢P¬[bâ6Í@ÃQâû¡ã*笥í Û¦©J›g…™Ž›@�s¦…W í£ÿWMuü †ª8?52’Ѩ¿?% «IïÅrºîÙJ�Ç&““Ö�¦6é¤iw8î½ Ek¯a}�Dùš"{: iTõ8Êj ë�ú+�÷e}†#&`&`–€n,E3nr nФ›‘ž ï€*ÑP$'£ëIe­CÊhºÉQ°-FŠ«sS�”'é&?Å®&.[’¼ù-Ï.þ_Ú§}gݘµ?º+ÞÉiQ¼R=…R ÛÄe6š…žP¼µ°ïƒÙަ5j?‹mDZBí‹ÍÚŒçô6v,ê�4eíhk$»�ÿ)Í&˜›NeùÃ:t-œ’(^JZ¿�¦k¨­„ pŒší¤±l Ç»§�ƒÞ�ô'´1üÏÎ 3/}³»9¦ÐÒðZ§{ª~¤¼;åšþšÑ(û’:röO&>3¬D~“ÓÃúŽ›€ ˜€ t<º™´«qsR‡[£=Ò�ac¸Q©##GmÃ(T§)”R¨£šœ�%hqVGq…oÀMaÉÇìu Ò¹¥}Ðñ•U§ÿ.OÇV¶ò¢ºÚÿZTÇþŠƒÍÚ”çóŠlðÇè[H/ºéAÒ6è%túÚ G�õô¤@#gýÆsnû!CJ¹$9v™œ45ÿr޹>’ËIÓ»fõFýŒÓÉ_ URQß|¬'æˆ ˜€ t\ÝKy׸©/ÍÎÖNn\rØÔù‘ö^Wžœ;åKŠk_•/SØVû®jZI‡Y5ŠóUï#¤ým³wäØV±íŽ›:µ6覲ƒ‘®!ê@ŸŽ4mמíˆkíoHS5í±‘QOך‘ÖÚd–¹ Ìp¼üp ›í¤Å{Ë9"?ÛtÇïS¶B½KÙ^V§/^ŸC00�ò&ÐVNJ«Qâf%ÇF6yPØß¨ó;ná±cæ…q� É™Jš¾Ì¥²Niì{ì|vÊý÷Nw\vboöDšrÖÝŒ!uÈ·á\Žøê¨)SÇ{t¢ÒLÒÇ$òœ,Sœ :'v£ùšÂª{GlIëM¹>™ŸËMwd9ÍÙ ýŠÖF&¿–õùgF€a3h®#_å»$×›mÈw9Õ ·®‡üu(žDÞÃõeËët–xÙ;h-=Pœݪnéz¼¼ ˜@‡#°{Ô Ëuâ2n»ׇoô¾íQÖ‘}ÊÒÆ2Ç91JÆÁ<"ûDמ8Ïa™àxVq¼5Ò•ü8Òxò{R~R¶]¤,9ÝñëÔ}É)“éAäÏ�Fi/d}ױ̗Äm&`&PV¸~íGƒõî¶œ´zË–__¡“E4eÇf&`&ИÀdiJònÇÓ!þ„¸ÞG“59rÆ2{SïòtíÿþÑón¬«Ó޲ÿEÇ‹q\g±WrÒ’Ç÷DÎ‡Ë Øc=U–sö(R'Fïö^ŒF =TÌûé7um&`&Ð.¸&v�4à.â œ³¨,[~°hç‰ÚAë<ÇÚ{j&Pn*ïR]£_ºNê³êrØ”~©#žÕ¨«÷ÍnA݃Jê´Ë9ó4àJG‹r|‹á¤Åï3þ>úZh%êƒ>G?f_qŽ­OÜf&`Ð%$T¸‚0ù¥¦ëë\otÍÑWŒë�ô[Q¾~ß±~$ÑG¢ü¿E¡–M?TŠÃx%Éòd~œVHÝnèx4Õ¢7ЯPý´râémEá„o¢OÐŒp]å·ƒVGÉm4h3\Èë�*nNz×gú+ŠôõÆáäk4-£±|? ôÅÆú›q�zŒf9Mo´upg9i;£¤3®‘´ëÂs, –WGè4é�ÀYè ô#Êf°¼Ö­NÓ „60hMD+ß‘kNÅ ûlåk´¿¿âä¯D {¥,^nyªåocúHÒæHÛÙéÚøÇh»Dؤ¾�VFz]¡¬ÌZY.7ÖL X¸ ÷Dúͪ5´NÂU‘n(ŸÞ�ÖU>â{ÑÔ í‚^U~&c™^äß�4ÚÚÑ,÷p˜áxÇ&ÀñžËCI'm,y·s®Ô?ÈD‚åï$_��u�Þ7;”¼©,7„øƒhU´%²™€ ˜@kÐõF&çl§tlù¨(šb§LårˆdñrËSüåV?Ò¦L¥cÕW òã<®{?"þÃ(ýB]ÿ.ŠÒÛfzÇ÷uòS¨7:••ÙA+«ÃåÆš€ ‘À$Ö¥�xü‰‹¿ž²ŽÔÖïð�Dúbž~ÿ,/£®:ÜrÎú'8ŸÐõ‰<';Žû|v3““6šü|œ´g¨§÷ÏŽd]·rŽ "®©:�½ýéáÂî m&`&Ð ž`�ÿŽÖ»k~;±�ØA‹Ë—Q®åŠe‡+º„ëá'¤/ òöâqô\꽉>@ñ´ñ¸¬äC;h%ˆÜ@0�V"ðsÖû ÚÍF;"ÝDé å¼ #ÌÇÔaŽoRqý;¸1œ'v>ÿ–:i7²Žë9õð`:Òjô2ýaäI¾ž"kÚã9„60(*®3Ÿ±ÂÇ¢•ÆXì Å3Câ{ßð¨Þc,÷Ÿ"6dë`]‹¸Þé�6=L�-ù`Tù/Æ…åÚA+Ç£æ6›€ 4›ö>HÓÄ4â¥é�£õÑè`n*ÿ üúÒ”Eu~Gf5ÊÏ£Pˇ6‹Ä!a†ã�“甜´�‘ÂÐ4’ö{Î�ˆ5eûQa=ô(ÒyúË�Kü ¤ŽÐs¤/Fú Í»è6´ù60h)�¢lËue3â›Dé_FáF䓸¶Q:®%[è^œËzd(üg†¼²É²ƒV6‡Ê 5h n‘žª“|úS¤ „ý’�F�cèü~J\âËÐBô,ÊhÔ?‚‚ñ‰Bmc/ÖS—Èw²“à\XÀ®k46é¤�"ï!Σ¦œ´yº« »SÿbB�ëÛŸõ«CôWt<ꃖ’·ˆPS ¡nŠÛLÀL Œ–ÑuD×™¦>Mø÷tªK—³ ãëL\?*jq )“±­Ìv»&am/»¨´²;dn° ˜@¡èœîË2� ÛÑ:h.îêÄž‰&#M;éærUÔù¥ÊW'“ÞžðCÂFF=½ûsM¢` i­i"ßÉNN€sBçF&'m(ù9�4–}’:ÉÕT=48}�¢l碦èNB2uf^Q„|-£Ñ\½ówžTd30�¼p�YLÅø=®¢…žŠÂ'¢pÿ(|‰úoGñL�¦'¦�kR×8N˜-_Uâm+®×š4Úðe“•J¸‚´>8nš ˜@Ë pýWÇõ*´;l9cÑ~G%EZõØ]‰4"q8ú©ó{#ÒW¦>V˜4–HÞTÔ=(SÇx–©ò5�zœ-qÒô¾Ç�HÔùÃúîâ\Dü!¤Q¸ß!MAz€ü] ïA+¡·©+‡Îf&`Í!ð`´Pì;<¥«ùq½(»Q ûdl)®SëF‰lù*¾5^€ð—,³:ÚÅ¿{6;(ïÑr‡Øï„ ˜€ „¸x�´:¬?¡sú"i]ó4âµ6JE�ü—ˆOGß%.§ì{H#fÓPFc=}(ˆ;ÄqM5Ó»AîFï Ãâà‰�´ä¹�¤õζ%–Õ4ƱHçô-œ‹—ã<äpòõÛiè>Ô]E^¦ÏPSd30�¼<�¨•A‹‹“õâü8œG5=RNeÙòUv=Òû·2=TýécI²Oиt¬ý±ƒÖ�¦wÅL �Éy�Îé}tdå”ý Í�j &xJŽ!^…>Cš¡ÏBÉ–¯mÔQoOt2z}Šä¤Ý�v¤‹Þ@;¡)è‡è5ô4RÞ@t>zébwc.RuQ›3úYžˆœ»†\ÆÇ?ÇQï¦�“Ž™@×�“†4²{Q29i–ä·HÒvºŠz+Q Ç÷@¿B—!9jú˜ˆnR\M�‘Ô•S86Ë?€Ðf&`&ÐCì õxOÖL ltñ)çJïÓLC›#]hÎÒ«þÝŠÖÍâK>ƒ¶åÂT�+Î%ž3.V{¹ ]œÓü{9õÎiN9bÝ@€mî&“:iº�pG{NZ6{rÌîEë£o¡·Ðvhiô]$ÓGCvaZrÒŽFG*Óf&`&Ð3ì õ wOÕL L¸¨|‘®¶@“ѪhO¤Ç5b¶ úÒcŠ“Ðzäÿ�ôçÒQKM�Bj”-¶ÛHhÎfÝN€í´'mCføQôålƧ¿»�œ±«ÑÛH#зà¤ýœð!4€¸F¡m&`&`=@ÀZ@÷$MÀÊC€‹ÈO¨'.6çŒ@×(�MÙ÷É—øîHN×lþûŒhk£�FMJ¦“Þ+» MŠœ4�î!Àö''í¼djÅŒ¤ÉÓ~rúmÃv~Ò ‡ûÑrèÓH¦þ>‰ôUS�°ÙLÀLÀz€€´€îIš€ ”N€ L]@>D¸:Ú› Øÿ¡ýÈ;õB¿$_�$’ýÑ� õž™>‚�ר»éðò¶§Ý‚¼�œiÝH€íP�žLRN•>Á¯í7Ÿé¦„¾üøWÂï ý�ÄŽèh${ §ŽÞ=Ó#Áï£W�ÍLÀL ØAë螤 ˜@YèœôžØ³h ¨¹ã™'“Þé"ó4ÉKû�Â|FÛaä�OÊä”}�vÍï§%åNš@·`{Ôcˆ©“¦÷&'pÒ~OÙú”mBÛ›Ð.¤õø¯L#j]^—ü{³}èÒ—#Ýä°™€ ˜€ ô�ªsÐ8�|”èMÒ-N$¤{#}>»EÝŽò¥ý èdôhz½†ôröÈ|ý‘ß í‹&!ÕÕ†¾ŽîFc‘N¤ÍFºy›31(†€=üÒã[ú0Èö(g\lÊ)ÛiÄì–\f�öÁAÝ€4L�…é�¨g† ‡&P)Ø.‹vÒ¨« AÖ×WÈ–á Â…Hïbþ½“í&oM¤›¯’7šÐf&`&ÐͪÎAËç/yº“›ÒáDççÄô9*?�NCë#=§/çJ/Në]—¨óÂf#½‰Éèj¤¯d©®.û¡áè*ôõV&´™€ ”F@ûÖ|¤/.jÿ¼•}ëû„9ã¢ó"_",è Q¿?unF c;�vSâ ÇM ’°}vÄI»†y—óõg¶ù¾´Õ6?}•ôÃèâ×¢ÐêH_9=�BÙ�„600�n$P špÉaŠ-MÇeÅÆõ˜ÇÀv*ïÏÉk”êê„ö;´¥Òmئ”ÝHõZa߯¢ºÈº†ûÏèùlÔÈÅæÞ„§£^Hï���6G«P&.¯QÞ‡�œ J*œJ» Iž“&PqØNå¤éi�øÓ�D=îxXÈÈB�¢Ý�þJÙ–´}ék§›¡¯�¿'Òyï-$›‚.FR_7@š�ôZh•æ GLÀLÀÊJ Ú�„Y�Ô! éPž«Æ E�ê± ]È5›ÒY¾ÊßCñÚ±¹w‰ëd¤Ÿ.榠`ßË"ß$Ü6d^�ô¨ÈÒèKè"LN\¡ºC‡&`… \MÑh2û«1í£zK_ŸÓ…èÝèÓ¨-»†ÂaI…ñôuZ’ç¤ T,¶×›˜99W©“vûF³“F=ÙñÔÓ×/¦L#g �’}’¼ûÐîHNŸìGèÔ霘3êö%rú'ñŸ#�dÛLÀLÀÊH Ú4�$dú“M=N¨‘,=>¸¾âؤÅA‹_•o‘ÇH‡Çoå$6�´^ž6�¼×Ðè92ƒS¦ò!Y¥QY¨à*êŒf¡÷Ñltù¿ˆê访ÍL s¢Ù?�Óz„ý~ö19m› 9hÃH?O˜×¨.yˆíß�37�j À¶žÏIÓ¬·pÒ”AÝ;‘Î[c‘Éÿ ÒùN#gÛ Ÿ¡¹HûÇ#Hæþ"aΈÏ'²3’³·.ºÙLÀLÀÊH Ú´é°Ð‰dI¤w¾d •V¾ÊóYêÅéßd ô¼~0=ò34-Ç êy´d¦p—~ãP™0vÄ¢ì%~%tai3è9Vhö½¿ÓL� ?ŒVC’¯O‰OG¢'ÈËkÔûG%…3I‹vñ(DRÅI¨\l»E;iZ êÏDB ÷È:鿥>®ó.Ò“&C(»Ÿ°…‘§Ç#u“C£Ð°O}¦E'LÀLÀJ"PíÚ–~jF`D*_å±½œ%¾Å E�thÄMá·²|•ëÑ(ÙÑè¥\lñèšÒ*Ó×!ïG‡ e²raNq]ìå3=.,7âMÀÚ&Àþ¦GåXÝG|.5Ò½-Ò(@_¤/§†ãÉÖF¹]¾()ÑÍ}N?=^$Õœ4�Ê&À6,'mk”nËI;«­¹§íï)?�CÑÓ(œ_‰æÎ—úBò™èHÎÜéH×ñPIÚLÀLÀJ!PíÚÛ,ü�0z×ãŠ2�XT›N<²O¡�s±%–лcáä2Ž“TîÑFÂ9äo€ÎA¯ `½‰è²K‘>¿¿J(ˆB�àå3µ –›NH84h—Ào©q ÒþúGö½CØOu§ÿ$4 ÍFz$+¯Q(Q¼êBVD­ýÝfUO€my* ±=J�´ãØ.lki«'H>�tîÛ�´þ^¦hCZ#Ì Ñ�H7, »È™Ðf&`&P&Õî é¤“‘L#Rz7L¡Lùé JÚG*ÄöY4‡ÊWy³qÒy‡tÂú :]�þƒdë 9j²W¹ßÁ!ÎÉí@tZƒ<)Ø!âÐL mì?½Øõ>ç~Ô<éfÌ¥ä�'Ü �€6¦üMÂVF½2ÿ„ÂÍ¢¹�*ìI›B�B«ŽÍªŽÛ´Îùœ´ÃÙÚsÒÞ¢ýHÿû¹4ýkaä­ˆô~÷€N˜€ ˜€ tˆ@›�6t¨§nªÌIfÉtRÙ×2yò嵪Ožòƒé�mõ�¼FÙ)�Š2êDÅ[2åk£»•Rp úT/x‘™¯±óL ÆlÅòÄ>¡?™žEx)韣½Hÿ^ËJÞ>ƒÇÎB£S)Ï{ŸzÛR~%ŠM�wíLÝh±™@]`ûŸÉþ± ¯GóE4’Ö‡2íwáÆgTüq”:ýHi${%âó¨×Ç¥¹¿­Ùžôf”�O™öe› ˜€ ˜@ TûZ‡—ƧÐghMñ7ê¤ •9ié½™/#;geàé.ª—û@úhã¹,Í`öS]仚ÈûH£bÇ£_Ò.¼GJòc£�>Ì£$ñÍ']pîN9w6¨kìMÐãŽQ‹m'w°-g¦qÚë&Çyª‹&«œ6«¡C‰êæ§öS9�Ç�§Qq› ˜€ ˜@ Ô•ƒ=‚¨ »pñ÷<ñnwИ¦ÍLàcÍ�6rñ'GL_I½„‹»åT…¼{ÖC?DúóÜôÂ’ìÜEb]4Ƙ‹H�¡ÍTB› ˜Ø4¢œÏIF~1Nšñÿ&ýè¿Ò>Oüq¤‘m}PDçU�b?…΢¼Þ®3Xl› ˜€ ”F ÞœzŸE�ôøÔpN0ïÚLÀzˆû F¶Â£�ºx|˜ô$tZ˜%òžE— BΙœ29gB›,<Š67%yNš@Ý`¿(ÕIû0ƒø•ÐÝHÀÒ;£ç H7HôUâU m&PO´íÇÖ'N8ní¨+�Òʨ7ê‡ö@/µÈå&`ÝB }´Q�2îÎ…ÝúíM�:zœñ4$©+‡ÎïÀ$Pœ4�@€ý#8iéó0êh$M£Òí™FÊd¿Bz/´©�FÃõWêëïôu¡Íê…ÀœdA5ªl3š`X˜¤sɺrÐòpž ˜@ÏàBQsÍ�6’Öãȇ£ Š˜»Ë¨£»õ±é=´#â ÇMÀZÈœ4=öŸÏI›Üž“Fû{i»'Ò;húëÝ\Ñ“*{£ùèv¤îõékiB› Ô�t:›í?½0¯^ƈÛÀn$u¬Œ-ÝVrevÐbDŽ›€ tTç¢fŒ ½�6’¾µùŽ(í�e†Lfzé}i›>b’TsÒL@ØWô!�|NÚ ò‹qÒ~G=9fzÄQ�>êC!³Ñ$ô)4½ˆžbŸõ�@Øjž€Î]Ú¯‚é&…ö¥}B†Ãú!Àzï�N`‰'&KÝD:ïkvÐRNš€ t=Tº€; é1ªe£)väÑÆ=hwvÔVÑ&¤ÿ:‹OŒÊ·™€ ´A  Nšn°èý3�„Ï@úüþ HÎÛFô á¤3Ÿ#´™@Í`{obátŽ‹MNÚµlÿw£Áq�ãµK€uÝÈÒ=�~‚z£`º‰<–mÅ�8"MÀzœÀo™ƒq軜ôçï9#^Ô£�ðô^˵Y³èqªíécnÈph&P<öÝØÐHÚmI«0’Ö�ä·HÒ^ûô­èn´"º�"ûìÄõN/t&é¯ÚL f °Ý_ÁÂ¥7µ¼ÃÑÓìB�ʰÕÖ«FÌvAºq5¥¹œ³ƒÙF¦æµ%)lU@‡-2©³d«JΨKl:�‰^Ÿ0Ÿ¥5�N`ÛIÛ؞ZÒΨ§‹ÅP¿¨L;ýÙõÔ(ÏQ0�N`Ó]Þë‘öÉØtóCûÙÌ83�Óþòä€}›ºÿ#ýÿˆŸ‰ônš>Ñú5ºœòŸÚL f °ýÀÂ]‚úXHíOºá8�ýaN�:ή¬ë!̦žî…˜eÝLɺ¾·@y.ÛZ[t\ÖŠŸ´VTœQ ¶=ÞqZ éíP1Ó݆ 8� Æ(/ŸQ¯?ùrÎÖHÊ÷¤�¥²™€ ”�ûZ©NÚRì“Òϑ̎ö{9gM›HžÞU{½Gú „6¨iló:gé¿G´³ S)Ÿ„neߘÑN]÷0�ì8¹)³±Ú¥#eé^IÆñ¬ÛyiAšö;h)§MÀºŠÀX:Þm‰NAOd'-¢K<ŠÞD·(‘Ϩ»<ùzd*uÎNä`gç,4ç™@' °O-¢é^èÆ¤ Ý$ÑÇ4’]Ðh/çl*hÄLKžœ³ˆÿÉI›Žl&PóØög!=>¼šÖÆ£ì'H�@¾ŒÆ¡Ñ(=ïµÑ…‹º’ëb:é)ý¿²nŸˆ£Bv›± 赎y…*ÅùA‹i8Þ.6H� µKÉRl7úŸ³ÕÑÉè=tÚý}•Ö;ÔéK¨¡ÿVFYo2õ_gºCÛ•:àÅŽ›€ ”�@¶ïéqÄ1I¯sI�ý¯Í»ü´×�]k\E\_tÔÇCtÇùy¤›5ï£�Ñ êÌ!´™@Í`_�#vÒ9Mç·bLûÜT$O77gŸÉ{ΤÌV¬§~t³ ‚†¢FÔc ¨4�ÏzšYLƒ¸Ž´˜†ãí`cµƒÖ.%W`;ù$]xéñÅÑãÇ4´¯ÿƒÑ—oG�hò´]4ê_HááI…I¤w¦­îôÛLÀº�@�}P ú0�.Û´lŸ×>+§l6úíæ�?†¸F6Cº�ñŸËÂVØþå迱F!9mµY4˜�äLGÏ)Î~´�ÐV$Öƒœ®5ÐW�F¡¡¨?êˆézät-Òcª:FvÊzwª•™€ ˜@èôg´îI¨;Oúbã¶h_¤¯·½ÃAë„û�žƒt‚*hÔÓ]ÆÔ9Ó‰hwúÑÁÐf&ÐÅØ×Ž`_ÔTâ}qyÒú«Œbœ4 6E/£mP/ÚJøo¤›8+¡¿’·�i]AÜf5O€m]�»i{¿‚max—©‘¸ö¯öLN…ÔÂèkM(„Šë‰•9LS#qug_1ÖÓ< (°SØQGŒ&ͦu8)Óíð�ß\RBÄ#h%À«Ç¦làé-»¿âÁp47b¶¦ � )ÁKNü$${é.zÒ(Ø+„­Œ6º³¨GzG…:¹¬_¯'™ˆƒ£&ÐíØ'ó�fë.q»Nm5RöU(§¢ i_~)oA¥Ÿgá$‡«/Ò�ÞU²¸œ­ •+®°\&VSÐTô Œ¦–Ýz—½Gwh&Pï¦@wêt—js¤‹2ÝU:™ƒé Ä…ÖGMhsòß#leÔÕÉi<Š�S:yè½�Tl&`ÝL€}O#i ™ìqѤuáØîHmïPÚA çìn´7ÚM@º�ÒK÷!› Ô-öícS2iŸÑypÒ …CÑ`ŸIm Ô”Ú4¦«òEhNVQ¡Ò5Òù8XÈi…i�¸,ÄåXéø›œS ‚õ%"Åù ¡°‹C­‡HNØtô8ëFa—[gWl—Ϙ'`&Pµ>ÁœÏG×#Ý¿•ƒü9¨]†Æ×�ü&ô-té]É×»f#o 7£øÀ­“‚êê`i3è!ìƒÇ³�ê&ÉEÑ,h_Õ×õ—Ú¿Û²§²Bݬy5"]�iÔ}?Úç4úZ•è¿È³™@]`?Ðùï±L9ìrX£ø½)�;å*”ïG¾BCÖ]³dÍâ;3’®3žCúx‘ʺÝüˆc·#¯î r@ÇŒ‰–Â�8F0ê=Êö± z¡EÔ>"}q}¹QvÒ…›F×ô‰m}jû H�< ¥zøO4ÝQ{¥'™©óòm&`@€ýû0f#vÒ4Wº˜i×I£íÔû>Z­Œ>@jw#¡F tÑ�j}©õçʳ™€ ´O€}GŽ›µÕ²°! u#DçØz´¹,´4 5E¡®Iš8Îôˆ#Æ´óš¼b› ˜€ ”L€“ÂVtò{ôiôSÒ?á€w ¡~¿F?F£!äÏ _�jèKŽ÷’ΙŽI9„bS_vÎb"Ž›@`Ÿü9û±æ"vÒ´ëÿÎÚtÒhû;ê¼DÝ‘Þ7M^Î9#¾ñ(×ãÑeÿ$鳕o3h›ûJx,/ïÓ&ìO}èAŽZú|ïK8Éy[5da¥;ss™Ïhš—Å›ç#•ý©LG©(ŒyjÓt µ™€ ˜@9\H'�£í�>2˜�WºšP�4m�¦�Öˆ™.ÀþEþ0¢ï*�Ù5„Ê‹íZêžg8n&PØ7ƒ“vs®)ã¤=Ì1àê.E?×åY"�È_‹Î¢žœ´SòÔq– ˜@°É�kÊÔnKö½àЩnCÖ`Båk‘( Î^”Õ*œª¸@ŽÔœ(C˜^ƒˆó«Îኖ§¨h8˜UÙ•LÀL %ÀÁ[Q ÓŸv -M#ißAŸ#½ ùzTIjaä¿2¨wñ=C: §ŽMòœ4¨ ìÇrÒtA5…ë …rÒŽRy¡Ù¥L�Í猺Ÿ"¢9_Ï´V®`ñ…ÙZ”/Cý¼Êê90(3ö¹àЩç¦2wïî ÒÅÎ60�¸`ZŽÒ»Ðæè¤¿ÄÁüNÂ-IëñE�†=DZï˜é.X^£ü ŽK g’þít×Ìf&PÁØOob?Ö –ÔI»ˆ|�˜tÒ´XÔÑÝö¿!½Ÿ*ÓcϺÑóGôgÚëc"ª§»öï‘þHi› ˜€ Ô"Ýù¶™€ ˜@g è‚lI¤Oc/�ô·u¸vÒ#�›¢'ÑͤÛrζ£Î%(¶¹$ô¿JzŽÜf&PØ_õ Ò›*rÒôA‘‚F[=ê¤Ç$¢ÐJäí�®Co긂þB¾FÝ_%þ=B› ˜€ Ô$� Ø?½ä IDATÕäjõB™@×àé\¦¢»Ùû#ÝݾÉ){�²osQ%gm ÒÍ�1oa”!ãF‹äÌéÏ«›m&`UD€ý6ßHš– Ý‘4ÚþŒc‚ÞI½ G³�FÍèc"}ÑÃHåç’ÿmî!n30�š"à´šZ�^è\�fJG¡CÑH.’^%Üýé"juF�ÿ6Êû(å¨wZÓ�÷Q4y,d84¨.ì¿IÓ»déȹœ4ÝØ)h´½˜Â3Ñ•Q%�°ë¸rúÒ£�º~Ù ÙLÀL æØA«¹Uê2�n!ð[¦¢/.ÊNã¢ë.¬tç{w¤¯9ÎF� ¼F}9erÎú'§Ÿ[“<'MÀªŒûñTfYŸÉO�´£ØÿuŒ(h´ÕßrèÑg�žit]ÎÞÓh_Êtç,¤wÕþ�l&`&Psì ÕÜ*õ™@×à"é}´S:é8r)R?#$û£nL¨Ç[YvÁu3ƒ“Âóhsi’ç¤ ˜@•`.ä¤^„“–ûZ#}È!{M@úo´s�@zW-w“ˆ¼U‰ÛLÀL fØA«™Ué1�®'À…Ð h¹0%.žN&¾?z�Æ!yiú[!ÓÝq½_Û�´Q{› ˜@ `¿î´“aбáXÔ„ŽA­ß›¾gs<ÒcÿNx¡ÍLÀj‚€´šX�^èZ\üôBÝÒ#Eúlþ'¹H’S¦¯®iÄì–�Ÿ/¤Ý)ä�IÊt76ÉsÒL FdNÚf,޾ΛFÒ®A½ãÌ4Nû‰ä튮C' µÉ»™vú(ÑíH�Li¯êØLÀL *´yP¬Š%ðLš€ t�_0‘¯"…ú?£�¹ÒûcäBI�;ÞCZÿ�6Ÿ¼¼Fù>œšÎ$½;íÒ÷T’jNš€ T3öñô.Ùd¤cG°QDúP¶uô8c^£ì! ¤œQC"“�þÜú)ôwô ù¿¤®ŽQ60¨ZE� qÀÓדl& ñ‰ÕDê€û¿Þ;ˆô§ÔúRãTt#�rÆEQ[ÎY#•Æç*~ü£»éú#êô®úÇ53¨ìëº!#'-ÝçG’w=Çš¢nSo=êëX´Òqh(:i„_Ÿêÿ$¡ÍLÀª–@!mV²D—%i'ë�'½]XìÉ¢?™¤�¬=_ÎIw©ÿŒÖGO WÑN¨Mc»D…?¡øâk!i�œé‚Íf&P'JuÒ8žôÕÝhEt ÒÈÛû„ú²ã¦è-Tp$Ž2› ˜€ T<�BÚødÎ÷ä xZ>Éw²N°î`Qu§2¶œ§ÇŽ×$�{YªçÑÒèMôC¤Ç‹ôîÙÿ¡‚ÆvÓŸB]L¥Çý×™Fál&`uF sÒ6b±Ó4IûS[×´�G�ó�Þ=Ûƒô"êëcEúˆˆµýÈSh30�ª%°$²V3ÏÁNwºEC’Â&ÒGÑFBi«l k°˜£täLw(7b[°ƒVÛÁ²,æH#¦¡õÐvh8Û€FÖZYv‘¥÷MôøQl:†œg8n&P8F莎e�M7o¶ç8± ÎŒã´]Šò �&_ññÚ“¼Ü�Dò5¶1Ò�Ä9„60¨yGÐ8˜éâ{/47Y’Ò7rà{í‚äÈÙj�ëv0ÒÉÓ(uδÄúCa;g"Qƺ~é¢IRº[½6Ú™¼BÎ™Ž ×£Ô9»œ6vÎc3�z'À±@×z'-IFÞœƒÒ‘÷fd´•s¶g£ÑhòrÎYV雄ú:¬¾:{X–çÀLÀª‚@Þ´0çÔ¿ yI8‹ôx4�£ïP%pª-ÉúîÃ<ï†F¡æ_w4õxÚ­Ê�mK°-é½Õƒ·‘ÖGA%ùNš€ Ô1Ž¥Œ¤É ÓµÌUBH_«ìŒôÁ�? •Ð_ÑéÔ¹‚Ðf&`O MMsÏÁNw°N@G¡¶FÌtw}"º�ƒ`¡­ dëW�ªíš©àKÊïA?dý¦w;ɶ™ÀblSG;/áñé­ÙväàÛLÀL Žýȸ kQ°ÄÓHõµWúøI_å·™€ ˜@E(ÚA sÏp0qÝ!ßõ ùí„zWi Ò(Û“uÁo묯¾LfC´)ÒIOÒI°Óú:iTtQ1 \§~ °­iÛÒ…Q|\Ј™>&£ ,› ˜€ ´I€ãH§�4ÚnKç÷ Ý‘FãÎ@Ç£÷‘ÞISÙsh ú<Ç¥ÚLÀL âtØA KÀ�P�#ì�ä¨é¬#6ŸÊ�!9n3Ð3h&K]ÌÙ:I€u2ˆ¦k¡Áhh®AØ›CåkÑïXZ?6h—@¶í=@E‚-"òu¶£)!á ˜€ ´G€ãI)Nš®K¾�ô!£•Qó×éw i}üJ7w"´™€ ˜@Eè´ƒ/ =9» ðä¬õF�±&Éa›…Wø¢B¦ ëÞ`=â½:j@rÊ”V�\�,Ú4ºqšgýç•ÍŠ&À6ÙŸÊ“‘¶ÁØô1™ëâ ÇMÀL Wä¤]ƒvMêë|¥/Èêú ¯Ñv3 D!ý/Úuäõ"®¶:_6’wy#‰¯FÜ_–„ÍL r”ÅA‹‡žªÛ¡áhS4•ÃæÒIR8' Íç ÛDX•·þ̸ØÉÓsòJ+†,Ý›°Téh ºnOt”ÛL  �l¿ƒ Ã’J§²]�–ä9i&`Eàø¢óÝõHŽTl:‡mÍ1ffœÇi;–´þ+í7Ê'½ÁôÒûi#]«ÈÖ£^Þ¿ Y\ì_0è^ewÐÒÙç Ø—¼­�.àä¬ EÊë*[@Çó�à £p>q)”Í™<=LéE!Qd('ªOTWVHËéê‡t¢€d CZåjßU¦e™�tRš†ôÑ–‚'5Êm&P4öï¨<2i0žmLG60(‰Ç�+;夅 Ó‡FÏžEk"� ×EÿA:7ßÃñê„60¨]î å[R–k�¿ŠE"j+�À\ÚÊù’C¦ðÅ9ù,$´™@Y °ŸK‡G%�ÞCz{¶9ݰ™€ ˜@ÉJuÒh¿ 3¡”2Ý�ý%z�Ž6äx5�:[—Î%­G#m&`&ÐczÄAË·´û�/Çm­,T¼!“â¶ÅæÌBMQ>²¢B› t9ö×0‘K’ 鯀>§¿ ÉwÒLÀJ"À1§7\†L:Ò�IÝšžä·HÒþGdìƒô‘ÙHçÑÛÑ8tÚÉŽ ¯‹Gýk&`=C b´öŸƒku Ï£þY<„ýH÷ÍòªÒä\IMY8‡P'…/†¸/~!aëÙ>6‡m¬ÍÑ/êéƒ@7"]0Ó¶ªÏék{µ™€ ˜@—àøs!žt®›BrÒ¦&ùy“ôñs ä°éܺZVIﲯˆÞD?¦¯ Y¾0èvUã K†¯5©!k#‡N’râ–Ϥx09}ñ…fšõÚ uq?F§•¯´¬)÷»8ýqå/ðEmFÅA�`ßÑ�dÝôØ�mR<­Œ:CÉœŒ´/SÝ-i3=d840�®"Àq¨ÓNZv� sï2Ùüý“Pý�—¥O <ý”cÚ•Yž0èV5ç u+=OÌj„-r¸^G}�-Ý�7H澂Ö@ð0’L£m;Q÷Î�áÐLÀºš@‰NÚ^ÌŸFÑôy}=æøô/´Úé�5½ŸÖŸcÛÛ„60èVKuëÔ<10�J%°3&çL6=ÊÐà\ŠŸì®óDcçLÅÛ9› ˜@wà¸sÓûI2MÝhºƒãUc’ß"IÛëÉøá9„º¹´;’Ã&Ó£�/ ã§mHÚLÀL {x­{8{*&PѸ ÑÈØ¦ÉLêÑÅ]Ñ}ènÔˆb;› œãã ÇMÀL ; pì:Œé]”LS#û{r|º)Éo•¤ýßÈü+Ò‡�f¡Ï¢èË´¿ŸÐf&`ÝNÀ#hÝŽÜ4�Ê"ÀŠFÊRçL3©»Ñ“�´FÛD;g1ÇMÀz‚Ç!�|žL[ï•O䨶[’Ÿ/y*™ÃÑè]¤ÿLbç 60�#à´Cï ›@eà"&ßÿ™µ5sS)Üš Ý¥¶™€ ˜@�à8Öé‘4ÚÀÈÑ[=�6çø¦'l&`&Ð#ì õvOÔ*ƒ&ºÓ¬—ã‹}×â9êãâe^e,�çÂLÀàx¦Çõ¸£ŽkÁŠzÜ‘¶ú@È—Ð Žoï‡ÆMÀL 'øÇž îiš@娅Y)Ö9Ó\ÏG ±™€ ˜@%À±º”ùÙÅ£ûrÖnÄÓ[A£í[è 9gÔ]í�¯2ù}Ð’ùÊœg&`å"`­\$Ý� T'�1œm}~Z_xlè`;W70�.'€ƒ¥ƒ¤Nš¦{Ç­6�4U¢ŽnXé£H×ÿ†òdÄ£‰ê=µ×ˆ¨|› ˜€ t;h]AÕ}š@àC_*щYD›‡i?´mÝÄLÀº”@)NmõøöyH+2Y3ʱnm‚Ðæh*ú1:‘ü¼£l”ÙLÀL $~­$|nlÕK€‹‹c™û³KX‚´Õ§¬o/¡750�.!À1N_q¼é?Íb;œãVøß³8¿9NÛ¥¨ó¡2ˆßK° ºíEþ¢,oEâë“g30�²ðZYqº3¨*¥>¢³‰F}³ð2B=6©Ç ï!´™€ ˜@§ ØAë4:74�ê$À…†Þ»¼ƒs¯÷.®EÇsñ¡Ñ3› ˜€ TŽƒ˜i}�±2ó:¾�åøÞ1KŠ[&éGNض褯9öB/£ßÒÇá„60è4?âØitnhUK`Lç|õõ(£.^ìœuž«›€ TŽa3™}ô#=–�"ïz¯ÞíÍmVG}<�ö¥O9ug¡Ï¢#› ˜€ ”DÀZIøÜت‹ƒ™ãM‹œëéÔÎÅÇöhF‘m\ÍLÀ*š@NÚHf¼]'-sÈ^¡îôÇÕsõˆäBt Êù«†¸C0è;h¡åº&PýŠù8ˆî,�Aq!¢ÿÿ±™€ ˜@M(ÕIÆÑHÿ%Ù„ŽAéw6¡¾ì¸%Áß SÚf&`!àwÐ:BËuM Š p¡ Gwþ…úXŒùä_„Îá"Cw‚m&`&PÓ8.`ïFz7-6½cö-Ž…?†DÛÍ©³ z ]GÝ åœé)…»Ð§�FÙ¾GÙÿm&`&P;hEar%¨~\4ìÆRܘgIôþÄ•è4."Ò÷2òTw– ˜€ ÔŽ�ýY}8$uÒ¦’§G¼ :i)úÚ�<=y°ÒcâD{ +è§Ýÿ]£žÍLÀ–°ƒæ�Àê„bQwJ÷6ÒGsá03ÉwÒLÀê†@9œ4úX`ú_´Ñï�>¹¿ˆ|�Æ5¢/’Ö»k60h“€ßAk� M 6p�0€%-�îìnÍÅÂÎvÎ"*Žš€ Ô%Žƒzz@_fLoV #駵àD¹×£’rÎnFÁ9;ƒø¶¨:“z_#´™€ ˜@›ì µ‰Ç…&P3öaIôZÒ…ƒ>›?…¸ÍLÀL™“¦�{èÑÆØä¤Mƹң�y�¶ó(8ÝŽö$­‘³ÿGüDôÒgø'¢k³|¢60ÈOÀ�8æçâ\¨)\<Ê݈~΅ÚZ8/Œ ˜€ ”‘ÇK�–Ý�ä˜Å¦Ñ5=y Ñ¶¼FÛ¥(ÿ�ðH*Èa“s¦›bÉÓÿ¤=ƒÞ#ýÂVÚ·*p† ˜@]°ƒVW«Û [�8áëb£óêqù½Ì&`&ÐQÙq³³NÚ:Lïélšc8ö^CúhÈ=h(º�¼�³ò\@ùW‰È¡›FÙÉq™ã&`õGÀZý­s/± ˜€ ˜€ ˜@;JtÒÆÒ½®±®¢}n_ŸÝß=�¶$ÿUB}’ÿszOmtÒçú?"´™€ Ô1;hu¼ò½è&`&`&`… dNÚ8jŒLjéqGýOšÂ‚Fûe)œ„¶Dúë¯ÑfùËן]„.F�¿�Ðf&`Kø#!ÞLÀLÀLÀL œ¦dï…nLБևC¶e›P¸)zi”ìÚ@(Ç®?Z�iüÔÎ$l&`Í<‚ÖŒÂ000hM§J_Á½¥#iú`ÈÖ8Xr¸òm·§@�6®ŽÎErÖôÿ“#´™€ ˜@+vÐZ!qF-àD9€åÓG3tç²RZ¦P'à~HåÁB~H+LëÄe!¾ˆÈœ�ˆBå©L× ùóÈÍÏ4‡“x¨O–ÍLÀL '”â¤i~iÿC‚g9¦ßÓóïiš€ T;hÕ³®<§pÒ“C5ÉéZ-Š+¯/j@ª#Ǫm3-ÇMwjå¸)lBrêÿ§BNúŠÛLÀLÀºˆ@æ¤é�±ƒ“Ièø»3ÇáÇ’|'MÀL Ãì u™ôNŠr®#="²jȤxµ:^ÌzYMŽ\š•„ÏpÑ |› ˜€ ˜@pNº�nOºÒ1x{Ž·S“üIÚnKÆêé#!60hEÀZ+$ÎèIœ¸ú0}9bz±zPWÚNJ0]8è iz>ÂÂ<â600�茓F›aLFÿ¯Ö 䬑7› ˜€ ´ `­'º›'«!LSΘNZŠË)Ó‰««LÉ|4'›@Sê$¹©L ¦ü÷B" Õ‡ž¶LË G,Sû<aùúïŸUhÈB¥•/‡´/Ê×Ùe3qx MC�(ä‚Al&`&`í舓9gËgÝ^Äñöˆv&áb0�:$`­WzO.2'¨ÁL;$‡¬É )ÕÑ��¦,”S¥´Bý¨ÂùÕz§fbœµ•ˆË‰“ã–*œô)ê´É9“³&݉¦ÂM|m&`&`ypŒ>…ìS“"ÝÄÛ•ãç½ÊÏãœ){>Ò(šB› ˜€ 4°ƒÖŒÂ‘® ÀI©7ýÊ!Û �@ ¨3&Çaf¦Y„Mèh'79cuo°Ö¨[Ò{z ×@rˆ!9x�1]d܆&¡Ûa=¯3�¸� ˜€ Ô2Ž¿‡±|%˨›[{¢Ñd”ï&Ú©WO£Ìf&`Íì 5£p¤œ²»…ûÐçH$Ç¡#&l:Ò(Žœ²ç8�)ÏÖI™ó&gí+hŠ”–]¬-¤¢µk‘œ5¥m&`&`(à¤}@ÑQ¡›dó)ó(l&`°ƒö1 ÇJ$ÀÉ©]È);éâ¿ÓÉi šŠ¦£Ç¹ðWž­‹ °¾äœi=mˆ†¡FÔ€Š±yTº]Áúš[L×10�Z'PÀIko±Oä8zf{•\n&P?ì ÕϺî²%Í.ôb'¢þíLH£.÷ Û�¾"(§ÌV!X—˜•-ЈLŬÏñÔ=‰u)§Íf&`uM€ã¨Î‡—¢^E‚ÐM.�¢ù©„"�¹š Ô:;hµ¾†»xù8iäå2ÔÖˆ™.ÜoD· û|‚B•ëwSfUïŽBk´1Ûõ<Žu{Eu\d&`5O€ãæ òaÔ· {8ÇÏŸw ¾«š€ Ô0;h5¼r»zÑ8 É4ÎFzT.µEdÈ)›ˆô¾’Ò¶*&ÀúÖ{kz„u *tá¡u>–õ½€Ðf&`uE€ã¤ž:ÐAä¤uÄæRy ÇN�¢u„šëš@�°ƒV£+¶«‹“Ð…Lãð<ÓÑHÊxt>'š9yÊ�UåX÷}X=Âs(Ê7ªöù[ÛIƒ‚ÍL n”àœFE $š@�°ƒVç@gŸ“�FQ®ÍÓöJòô.’îÚjœÛ�FN5Šz"Z>YÜñlc“<'MÀL & ”Á9—YhmŽ�~â¤&·/” OÀZñ¬\œ„ú<�âGÜ4j6’“Jî9‰ÛêˆÛÄ÷OhH²Ø#Ø&ôg×60¨YerΟ17'„„C0�ú$°T}.¶—º»Ð6vÎô¼ü–vÎJ ZåMY÷z”uK4=Y”1IÚI0¨Ez代ïœâp"ŸžN°™€ Ô1;hu¼ò;¹èƒ“vçq�>#És²Î° è£ G$‹�n+I±“&`&Pý8þ�ÆR¬‰.A¥~äc úÐk60�:&`­ŽW~'==SzäÑf"°R‚!}/-)vÒLÀjƒNÚ,ôC–æ Hïå–ò.öáµAÅKa&ÐYvÐ:KÎí�ƒyC�=Úê˜Û@‹Q#𢛀 ˜À8ióЙ ˆÆ Îb30�º'€“¶M@ëcšÔA(§v°¾«›€ Ô;h5´2{pQôBóy\¨?Š6íÁù𤻑ëº?º†IÞƒúwã¤=)0¨8iw¢í™áõÑxTÌ{jE”Íê•€´z]ó]³ÜCéöa.ÚïFÛuÍ$ÜkO`ÝB¿f>f£Q==?ž¾ ˜€ Tœ´éh,óªÇ‚æ·3ßGµSîb0�%`­FWl/Öp¦?‰‹øgÑ ¨¡‡çÇ“/‘ëpytº›®žE¢>%vëæ&`&PwpÒæ¢“XðUÑ¡hVÃ8æ6(s¶ ˜@ °ƒVÃ+·›íD¦3±À´‘¯»„³9É<€ŽEþôzX•–ͺÒ#ŒrÊnfÞ^GW"9ßùl:™MËGÆy&`&�‡NšÞS»éý»¢©yª�’'ÏY&`5NÀZ�¯ànX¼9œ\öb:ºpŸÒÆô†Qv6zš ~9l—¡=Py¶ Àºè‹¶Cg¡G™¥!9eºp(4Z6‹²ƒÑFèAd30è Σ·¢-i¦céD´(뢑ãqcw`&P'–ä€P'‹êÅ,NãègLÔ×¶¡ !M¹ÞC;颾wÈo'l¢\wC�#=§¿€ÐÖEXOZ7ÍÜ Ar kÓ¨xÒEEîB‚>Hë½´`M” ‡&`&`ÅÈŽ§‡Q{ šÊ±tçâZº– ˜@-(öº–ÕËÐ 8‰ÈÉÚ�“K?ÂÝÐ(¤‹ÿ¶¬�BIusFûD¤éh&z޾Ú:H–úÂâzhP¦¡„rÎú ŽØ,*ëή>­¸ÍLÀL  pŒm¢Û#8~ŸF8špysº`RîÒL  x­WJ%Ï'‰6GÐòÍ»N,äïˆvBÃQGšäl¿rÒä4Eá?”æäµ�°. Æ ,øêHáQ¨x_ÔY›FÃÛ�>-ç» eóà´‚„\`&`&`&`íèÝ~×0�Òdwý® —+¸ˆ—s¶–iSÂb6m¯ù‘Z}Ï'sš›…M„ó�òÿ™…ó™Ÿ&âo,Ofry$w¥,Þ@¨|åÅ!ɲ˜F,§fºVâg3000è&vк ´'³˜ü ‰Ý™i‰ÌaÓ#wzJá”×#¿=ëK©ÍöLSýh>äÈÉšr¿‹ÓÊ—ÉÑ[”‹-•.ż…>ä\Ç´!Ë yiÝЦܡ–iz¦ÇïcýÌ/÷DÜŸ ˜€ ˜€ ˜€ ˜@ñì ÏÊ5»€@æ°M¥k)g8PË‚Â{Skdi90å29G Yg!Ì’5Èéš…fdšIøˆGÇ `3000� #`­ÂVˆgg‰%pÀ¡…Ó&.8n} ä¬å{×J�üÕóö¬ÑÀ&$GL¡¤wófÂ3Œ’´™€ ˜€ ˜€ ˜€ T2�z¾ ­äõâyËCGC#AzOje8pa“>Ÿ…rÚ$�È…2Å•W 6�™”³Ú„´ìÒ$‡)Óö� IDATKzUi¸4ÚLÀLÀL K dO¸ôc":�êRç[…:ÇöAº‘*É”V~°¸,äê\¨sb°p~T:”-"®s¤ìÅÅÁâógvý�e90�Ê' �Êf5A )’ã2½½ŠN2Ú‚ÃN4jÞ ŸÌÒ“LÈïH8ŸÊR0ÍçÂ,¡Ê(œp°,ñ‰(«æÀLÀLÀÊO€s¢ÎƒÒ*Y(ÇJé$‡lù,NP}Æòi¦u®•3§ó¯âRˆû†'0l•C wåÌŠçĺ��Ò’lÖâÀ¿&`&`&P›pRÖ`ÉÖB ¥†(Ô�ÈZ79œ²A‹ƒÖ¿0ZDnÒuANy\;¨Üf]NÀZ—#öLÀLÀLÀL {àdhÄk4 ArH¤zpÂXÌ’L×ÅÁ�M;ZÛ™dJ3�žÖy§m¡ÍÊJÀZYqº3000è8 rº†¢-ЦY|aWÙB:ž›)Ä6?¢ŸÅ rU£ÿ ¦§V:ûø~_ÚJÁƒ*ÊÄ¢V¡�P׸b!‡U�h–jêON¯42tÆ:Ð2MC�eáƒÙS:¡ŠCè0;hFæ&`&`&`&Ðýptݶ)Ú5fq9&¥šœŒ9™ä€)Þ„åÊ«ù?Ø5°ræäÜÉq ’SÇIvÈäî”I 5ÒœµÛHËa“k3�¢ ØA+•+š€ ˜€ ˜€ ˜@÷àby¦¸ �äÄ#I$‹¶yÔœ�f¢Y¨ éïXšp æÖ´±ŒMí-`ƺ�zñßù¬Az’#WŒéÚzÓL‡. ß)„· [™­› ´IÀZ›x\h&`&`&`ÝK€ z]Ÿm‡F¡]QGFÉR_ŽØ44=£´(´c0Z@±“Zë¤/ƒÐzY8”p’Ý–©|§L—ÓÏ$âÑMLOëÊf­ØAk…Ä&`&`&`&Ðý2'à¦|ê_ä4Qo ’Cö’3¶ˆÐVF0�Owb,5ël0‰ Ѧ¨ B…L×ÝÁY»„¶—�¾”¾çjàüú$`­>×»—ÚLÀLÀL Bp¡®Q–cÑ¡H#5mÙ< 5 #éý¦&B[€¿FÛ¤ šÖe}ESŽØ¤÷Ûò™Öó‰è(Ú\Kx<}iÝÚL ÷…c0000è\œïÆd/B….ä5WMHñwr?•ÐV¡X? »5“¶ÁÄõážHñÔú�q IÝãhEZÁéú#°Tý-²—ØLÀLÀLÀz–ã½Ñ¹ÌÅ�(Ÿs¶�üËÑ–\´D'!;g©&c�é‘Ó3ѺÌ÷úè<4/Ï2hDMï¨]�–ÏSî¬:"`­ŽV¶ÕLÀLÀL ç È9c.®Gz×,5�À‡Vå¢þûÈNYJ¨JÓ¬Ëéèhfÿ èP4+Ï¢h¤í;iyÈÔQ–´:ZÙ^T000�Š ps12™“E¤ÏFkršŸ”;Y#X· Ñ¥,ÎÚHÎø‚dц‘>+És²ŽØA«£•íE500èYŒŒ40rÄbÓ¨ÙF\´ëCéÅz\Ïñ"Àº^„Îa‘ôøãŒdÑe[‘£f«CvÐêp¥{‘MÀLÀLÀzŒÀLY�8ÓûHrΦ‡ ‡õE€ußÄo†f&K¾O’v²NØA«“íÅ400¨ƒ’¹ø ès’<'ëŒÛ€FNõ¸clé¶—9^Ãì ÕðÊõ¢™€ ˜€ ˜€ T<�?‡žÁî"п»&äéT6;h•½~Úm›Cñ»i5¶˜^œBXïz/ñäÿ?+©Îòí ÕÙ ¯¦Å倥?mœŒ~…¾†”ÖÉke´=ÒÈÜI½OvÊh»; ŸA m&`&`&Ðtn»=ÌyiÓž˜O³û °®¡»™òDdç¬ûWAÅNÑZÅ®Ï~‡¶l‡Ä×)¿®�:mkäì³mUp™ ˜€ ˜€ t�¡LGNÚd´c7MÓ“éf¬Ûaèf&û,ÞÍ“÷䪀€´*XIõ8‹¸¾År#Zö+ˆ¯‰–F«£‹Q°�¨?"$ˆ|<1.S<´QÊâ¼,-ÊôøÉÛhº­”ÖËêîAÙCèô_t?Ú%®Kº¨ùËúk®K»•Ñ%è%ôz�Z<æI²Òix©+‰ÀÌLØ>åÜä³îºÁ G ƒý5Dã»–zt!Ø!Bxß<Šw&ª»lÁ憡ÞË ÏÓ#!“0žï(ÛQ00�J"ÀźŽõ{qÁ/'K7G¡FÔ–Éa™)W�ö³ˆ¨¯™hÒMÍ™ôß–ãG[LŽºѹUïr+‰h‡ì1j_‹~ÇzˆÏãêÄ•kŸ@¸®ý%õV�טá/d3ýÂÇó,€òƒ©~›ÆA¶W› ¾½Å—�â+DñùQ<®ÿ™(¿U´ˆùÓÈYÎ8°ëÿàB2—‹ñ|ëñH› ˜€ ˜@•à8¯sÉo$Ž÷rÀvD#2-OØž­A©…Ñ—7©) ÿA\�ZÎ#¬;ƒ‰œáhuÔ€Ä-„Š÷F�19ÃS�FËn‡o¡ÍÚ%ÐÙ ®ÝŽ]ÁJ$ Ÿà A|Tžþ‹òâÑ¢ælºKs@ü_–QÌ ­¹m‘cõF–þT”;=o’ß/+“³¦´Lý`!/¤õîZÑóÇr|ÔܰpDN\˜f<�þ¯¸Â“r‰ ˜€ ˜@wàð¯Ñ–à¬éÚmÚ mšÅ;r~“Ã!µ2ÎI‹Èœƒš�¦©¸œ6Åꦣòæ3Or +ÖX1ÑyYέ· •–äŒÅêCº¶�N¦ešBxœ”g3�èݡڮlÝGà&¥G;dûp •“u6Ò3Þ«¡cÐ(Lõƒ½Gd™,¡ñ+Y|�,Œ9=¹¡(¦±$R¥SÛ’Œ[²Ì�¢ÂQü1â#²´êÿ1‹ËB:hË:2‹[ÿ«y Óܘø�YÓÍŠïÂ5MÀLÀ*•§©EÌÛ”LºÑ§k¹!h“,J8uæOm26¦«B9i’œ�¹Hó6S^ì 4…‚†¨–G¡ÒÁúéƒt¾—S3¢]n:çNGºГ>�Ù!ƒ‚­dac/¹#w`e& çn¤¯ÉÆfÊ%’Ÿ»HßåÍ"<ž“Èq¤¢_FuBt‘0*Ö@Ý·9¸¦�KžKþLêiÄìœÐ�ð†(þ+â#²ôÙÔ:‹ŸÕ¹8‹wdþ¢æEEO­aYMÍ÷sÄåtÆó�;¨e¬û}Y¾«ó,ãþlããòä·›EŸËRé—´ÓVåbëµÕGw–1¿-n̰|¹+ÏR¦Uíó_ʲ»-øÅ›)glrX#� ÊÂÂrZ_:“dšF­Ú\LŽ˜®¤'Ñ ØëÂfe'`­ìHÝa9pÐÓ4ïA_7£­Úèó>ÊöTý¨ÎeÄ/ÉÒ‡J²9‹ƒ¿�‘Ú:ËÑWÿ„¾™¥C “ϳ!‘…ºS&§,gLþfæ÷ ¡µ‘úŠílêÜ“etdþâ>ЉkF£ Ѻh6’½¾8ðo8 À²îOþ¸e³Ù¾5­› Ç ¼Vl½¼��i&PœoÒ‘ÎoR³±.O¢­ž…kDáâ*¯G/]#ÌBMQø¥á9ŸÐfÝFÀZ·¡ö„:J€⛜L¶¡Ý>hÚÉYÒ�ò ¤Ç¯£Þ‡„ÍFúRÚé¸þ¬É9¹�Š^D±}ŸÄåh3ôÊ·O4’.Ò£‹ ? }Â^�]6郙ìd2Er�4_ÓÑE”ÝH˜³Î_hVT¨yb4êxÚ õBSÑQh²Õ¶]|}­À¢ê³Ðk²­<_ ¼U6õÇ�y)ÒZA+¶^Á\`&Ð¥Øï5â£sAÞóû°49jýÑjY\çÝ~Yžâ*SZu+ÙätiäkÒuÜ,T¼)K¿ª.ʳ™@ÅÐ;733ž‘Ê'ÀÁ[wÞÇDs:†mhB”v´N °m4°è³£Å×]Ç�QÚÑn"Àºø “:¡�ÉiD÷ø6Ê[Ñ_‹m—lQ!K[/_۞̫Öù̪}þÃrÔKÈúª™ó(Ë59kŠë¦ ¼`ræú„aCïHTÎÕ¢¬�B¥ƒÉ Ó V9YÒBŽQÊ«:ƒg#3=9šñ),ËÖQÚÑ:!лN–Ó‹i&`uA€üR,èèdauA86ÊÛ�z'râ׈°ÍLÀ:E€cˆF§$› ˜@ èDn30¨Û±(ñl=Âó¤0ØçˆŒ ‡&`&`&`•CÀZå¬ Ï‰ ˜€ ”ƒÀþI'×p—û]ò®NòÓzI1ÿ?Á£�RZòCYH·W/Où@Úþ=„^Cï¡Eh>š�ô½ÃÒvùÒÔÛ]…f¢·‘úÑ{¬ÿ‡.Fz/´CF›�Ñ]Hó£?‡�CCŠéˆzßD7 —‘Ú/DÏ£«Ñð"ûèOݳÐSè$FbsZ±˜>\ÇLÀL ºøÇêZ_ž[0(H€ ö•(L¿BzUÖ@áÑQc9ý²G”¢ìî‰2íï2¥KÐÒy¦¨?••¾‚ö§®¾|úæ5Ÿ³¸*er>ó9<}É_?Ó¡ôóâêGï«4ê}‚Bñ•Tú"é1h_êN?šÿVF™Þ»¹5&…:箑I}èïAö£Ÿ'õrIʵ.µlb›¸HRçÛq�ã&`&`ÕO`©ê_/� ˜€ ˜@F`_ÂØá™ÆÅî/"gRöPDJNˆêw»áTèK£W x^Ûš}mU] £9B¢|ÎY‹ºYâÂkò$yãI§ÎY\¥‰Ÿ3ýV#iä­LÙTÔˆÚ³©0…6á¿›ë“÷ úblêœ5×!¢å¿+ÎpÜLÀL ú ØA«þuè%00�@ þˆòÂèY(OÓiýP/âÔéK¿K¶È$òCYH·W/*?‹xè÷ ârõ8�0iÔ«=†bÛ;Ndñ« Fù/ß­‚äü B}‹mwœŸïÄyâš–œÙmÑrHN’òâ‘.�?ˆRãÕ£ÌéÄåˆ}©/9“� `ú¿Â‹BB!ó÷I}ØEŽ`°&"#‘ú‘ô7³‘¾žg30¨!:ÁØL ®pñ“{¯Fa¼à…òã:•¯öù¯d¶Õ0o¬ÿ¡ÌçW£y}‡øÄ(­èïÐÛQÞº´Û(JwWt4: ý í�ƒw-z}€ÞB÷‘?ŶVœ`¾Ik$.Ø+D6¦­Þ¹{ ½�žC‡�ÿËP) �IÒiò 2¶¡í_Ð;è?H�,þ(©Øâý8æi ÊåŒ{’È´ý3ú/R_÷’÷54-T"CÛ/E齈.J¿N\ýÜ”õ£¾þ@ž¦/×f&`&PCì ÕÐÊô¢˜€ Ô5�ý“¥¿Qóqé¤çOÛ%ÅåO2Ï SÑWÐ]¦�{43*ûLWT`Û9ôõjœÅÏ'þ"š€Æ"�DµeçÒW¾÷Ô¦$�VMÒé<�N?r”[yÿ#ã”(Sçâ=£ôNQ\Q-›Ð–å]Ø"Ó 00�ª'`­êW¡ £¸¨É=¶¥°£m+¹~­.W%3¯”ycô¥ó¢Q—ØÒÇCYš¿íõH]�ó1�D03O'3´L’Þ,Iß�¤›“ì/ 4�GMÍ…ù#çÏnñˆ£ª,›ÔÓZl�Ɖ$žNc˨|½(®èI:NNŠŽ›€ ˜€ T?;hÕ¿+~ ¸Øê…~„ôih}fúHŸÖnñîéæG‰¯‰nAÿEÿFiA ·BSÑ»è%th €ô6èN4é3ÛjÿÚ=Ô#Þ<��×Ñ�>ö@÷£·�¦£éMB�q_¤;³ìÛÓîE¤Oj?�Âü^“ô}MT¶[oñè¦ÚP¶:ý©_}6\œZ\P’.j~ãùp¼"è}$½»ìDî‰8Ä9Ñ,ž‹òô~•Úw»±½m†ÎD“Ñ|fàt:­ƒÚ²†¤P#då²¹:z/É&i£ÂþÛ"¤Þ’ºkGéøñFeÏŽÊÒè¬4Ãi00�*'ÀÉz Ë ŠÝØÜÇ!9A£ÛkK]½÷êÇá_É_&´Oê轊¸®âzŸæƒ<ùßW؈塟ܼÆíô³ö¡ÉÂÛí‰ûHâ‹H�í‰wfÙߊúÔû*!­‹F�þä>°ð*¡*ï“Ås˦Õý}\Åß'Þê/j~Cý8¤mjfH|v\îxámªT6°Öv³ïh\ïZ<¤}ªÛ�zC¨«÷¼:4ŸñtiûaÒ¾W\Þ‘xÒM;Ç‚~òŸŠ]F½Ÿ–[Y6êÊIl1�Ð�ÃÂë±'Ù°¾Æ%ëltOÎ�§]9Û ÛEc²mLöú©œõÓ�ëÂ#hì ¶®#ÀÝã½éý;Ù~A¸:;KëãºSžÏôéì•ÐØ¨pâzŒIù¹µ¬ìè,<‡PÛô�‘Fçô·­P°cC¤Äðø¨½F 4�QYž.–4µêì²?OóÔ‰�> […GŸt�»²2±›9h,\Íû»/¹aQÅk"�š\�ôÕ<½ŸSÊüª¹­‡°�iÔfë'ߘõSb7í7g:_¦Ö}HÛplºáp;ú)Ò1c5Ô–½›~*I÷Dòí&ª›,ÁÒ÷ÖZ‡i꽸#�F÷‚uvÙ5ÊÛ_HÌÍ2¶KÂ×Iëñ¶¶,8ŒªóX¨ÈEã¤Ç§dy��ßÐ¥Ãn&Àö¦cøè2MvtÖ_¾î´ßcÅÔÛ6éh$Ûàô$OÉô=¬´Ê´$cD’nN²\k¡&4�A Í…å�<œt·u’.6Ù¼Ÿf Â~Ÿ¯ý7óe:ÏLÀL z ØA«ÞuW-sÞ·�퓯œ ¶Ü#>„é_¡ü%¸è:о®F ·Ð/Ð&¨Üv>uªýH�:^€f3;fe�ZvÚjä°Ù@ ÷ZˆáôÿYÒšžìÊõÞ[[¶BT˜ã¥ãhgç7îÃñî%0œÉ}1šäkÄ—f›hwÄFõ�ü`êGýå³Ç`TÛ|VL½tŸ×öœÏþ_šÉtõq°ëC$ §ü I^Hj4}54�C·¢®°ë’NÏfžVLòŠIþ!©ôcú‰×s®˜¼/9"©ë¤ ˜€ ˜@•°ƒVå+° f?ûd¾ ÇŽ,íS‡-n~p”Ї:#�ŽFEU:¥_=Z5éîø%è9ìSDä¨É:»ìùÞ'ûíâ.s£€?&.�Ó‹Ô¬Z‹à¿Qª-'¬³óuïh7Ø?™žþðùý$/o2«wmR˜öŠ[Ü4 ³ç`´n¨�…ÅÔ›‘´Ñ×Z‡£eЧÐvèê|/©§är!�ù¿›øý!M(Gè!Új½ê�¡_’@TOÑ “tY’ÌÓd:šu¶ñÇ™�ÚõGúJê§Ñ&hjBã‘Ê¢vr gFi�Ì?@ý�Ú‹“×ò:ªç¨ ˜€ ˜@ Xª–Á‹PÙ⑦Á]<«ñæ0Ý/wÅ4¹“MA?Dƒ˜ÆÑt²x˜%‹^vúû0kß�÷W³²ŒC²Pï»<˜ÅÛ žŒ 7q.ðÐÔ˜åuj~C»—ëmE¦¸k2Õ«’t{É´þ®ôû™<�ÒwRg.:!©[L½‹’6k’–³¥ÿA“ж(ŸåÞ7� ôœFi•_�42(GU�DÅö'âŒ2ÇÇÒß«QŸ Ä5j÷/´½…¦¡ýÐjh4RùI(gìï5Wy|³æ‹¤o@j/NÑçQüÈ8I› ˜€ ˜@µ°ƒVík°òç?~äçt.þt÷wwþH*å29,Á`º€mq§œ¼eC…Άô1=šýÉï2ô?Zî|—{ÙÃhY¸c>‘ ¹�ŠXŽk¢:ç0¿«#±ùÚ ý<+/÷üfÝ:è"ûЯ¶½`�²9<Å„Ô×hVü¾“úS¿©i*ß¶–Ž µ[�ij;;;�@ž´F÷ÎJòµ½6}½DbsôPsfáˆæÿJôÚå[–Â-;PB×MTß=Zd³÷©'-F éGíwDé¨$YÍö&±]šSŽ˜€ ˜€ Ô�§,3(v`«‡tq4º­¶Ôë�îŠê‡v ßFCCû¸NÈSXl>õ�ëFñ×£øFQœî?^÷…òã:ÙülE]ÝÙŽ—%Äuç{‡¬^ÉËO›~%ÓÔ—ïš÷߸,É×�˜?ÆåQ\wô¿ÞÑù�ûqúiˆú�Ù¡ÌáÇë©\,à«Ñª°Ý)<¸3}ÓN#Lq?ÿ—¯ê|=ŒÞAz×ìytEZ—¼bëmIÝ둜,õ§}J77.Gª_ì+(ž·GÒéeõ–¤ÞÎHý½€ÔŸ�.=‚ÎC_Í×6kOƒ¬Âë‹~ŠªK=ÍÓNH7HžC:Þ}ˆÄ¯ Ý�ŽEÚ™ÞÊÔ9‰Íÿ�ÚOGg¡U;:ÿmMËe…×{9Ù°ÞÆ¡x;]ÎþÝW÷¬Ç®àÌvјl“»b:î³ò·½Hζ`3�â0ò¢˘¨ö¶¡ QºU”6Ÿ óP´/’“¡‹Œû‘>¥ÿ$aΨ׼1’¯‹›åÓ^mŽBšÖª¨ ]…䜄‘…?ÿ6ÊY1Ó uã�Im@ú4 éý½ç¥ÇÏ¢Ï)„9£^IËú !ý=N\Ó~Žéˆe³Q–—Ÿ*P&gñh,ZébQ®?¥ŸsVìü†úqHÛÒ³£¼&ú¥50�º'À±²ÃçѺ‡V'Ø6YÔÉÑâNá<ºu”v´NØA«“]®Åô‰¥\$k¯;hµ·N½D&`å'àóhù™ÖJ�vÐjeM–¾zôÉf&`&`&`&`&`&Pì UÀJð,˜€ ˜€ ˜€ ˜€ ˜€ ˜€ØAóv`&`&`&`&`&`BÀZ…¬φ ˜€ ˜€ ˜€ ˜€ ˜€ ØAó6`&`&`&`&`&`BÀZ…¬φ ˜€ ˜€ ˜€ ˜€ ˜€ ØAó6`&`&`&`5@€Ï´ß„>Šô»X¬.[8­€NFÿ‡ ÷Ñkè42ß„Éÿ"úz ý©þ�hH¾úÎ3�ÎП×ÚLÀLÀLÀLÀª˜Â'™ýÉ"ì@þ2üÙñ{I~Ý'áò9 LEŸ%-Ž#¨sìå¤×$þ R�`Šï†v¦|gêß š@g x­³äÜÎLÀLÀLÀ*‡€œŠe“ÙYžô7’<'¸€ uÎR6ûãt�Š2B<8gïàÀ-MüÈf%°ƒV2Bw`&`&`&`=NàÛÑÜÅãüæl�øQÈ5Iß‚þ‹þ�RE­ÐTô.Ò#}‡6w�EÈÛ݉æ¡EH}<†vu‰ÇÓjõRwý$‹åIDATôz©¯ûÑ.q�¬^ÜÏÊÔ¹ißCÏ¡#Ð’i»(½c?…ø*HO– BSP°ï…á<ô0ú7ú£eïÆ�‘®FÚf%ð#Ž%#t&`&`&`&ÐsðC>ÁÔwÊæ`!áÐH�=~“òÞ8‹ˆ²i¬^N›­IËÉ 7ó¿@übò? ¯ËT—¸FínG¡Ž²5j·!ú=åc¨;A™ÅõÏ£Þ‘IÝ-IoIÙÉôuFR’�ùbH~i„¬RŸùìÃ(s}¿–¥åÜÉ)û{–n~·Œ:âÚlÔß7g´tÖ¢lGM câªc-]ÛLÀLÀLÀL lÃLôÍfä.‰W‰OÊÒr¼³x¡@ïU­„ÆFö ~w–ŸQËÊŽŽêœC\×’rRä˜-�¶BÁŽU„ùY2Yá±@ÿV?8;à ‚söñÕ3).;�:_[mõûräH}ý:*=0ЧÑ?G¥ïŸiÐrÌëóÑüªÏBö§#9¿— ƒ‘ÍJ& �Êf&`&`&`&P½¾Íú²ø�Q^\e7GOÂ!ù7©øÑHž˜åÿ®¹æK qÊÖË™ É[Éy;?”~)Šç¢8@ݺ8ˉð�,þÃ,Tp,ý¾ ?.Ë×ãŠGdñ4øuŸDÿ¥ e˜VŒÒšWM_¶2RZé|æQ�U‚–!Ý–}>+Ôõ´úÐ<ÚL dÚ l&`&`&`&`UH'B×rá-�äü1[Œ?†¯7~‹zm9ÏgmdažÍ"¡ ¦Ç)›�n÷E�“¡Ç ÏDC› —X¢…ƒC=µ½éãzÄp?œª·eùߢøýQ|ó(G§G‰¹Q\#zy�éΡ`¤QÀW¢JzýG�U^ŠôùýU¢²4ªQ>9„ZßA§#› ”L@”ÍLÀLÀLÀL : lÁl'BÎ…>òñ¡œªà õ'^ȹÑ#ˆïP®Píb+”Ÿ«ÃtŽ"r5’£#GëhTÈN£ 8pç1¹û¢Š+DñùQ<8pÊúL”G5r–3ú|?ÄÛ ©û:i$ì+H�r^�ÄN¶’£–×h§ù¼"*Ü;Š;j�& Ùf&`&`&`&P�¾]äl«ÞƒEÖÍUÃI¶´yüÎÕªOËFÉÒzzÇLï�›&0�CÑÒHNÖ÷¢²ækeÊôWÏ¢ÿdõTmå¨npê¢,GM ãš7ºŽ7u 0000�ž"€“°!Ó^-›þ#8=-¾–¨4eáý¬�Ôß ÌóúrÔßô¿"é £<�œé}³_¢0Ÿ‡0_ÏÆu²ø¯¢¼³i7P"ï¬(ÿâ(^jTól#"z‡NïìiDììŽ!Ô;~ƒÐ§Ð�ÌßÒ„ßEÁ® ‡&P ;h¥Ðs[èc &�ð#Ó]´)pÿ!«â²S�þ”õ}Ô„ô¢{+#_ÿ�tz©îBô<º oÕ OõÖGzìçoHwŽõg´o¡§Ñ(¼S’§uË,ê~ ýé³ÖúZšúR¨´òZ¶h™¢¼‹–¥-SÅÖMë‘–µË—:Û¢«ÐLô6Ò²¼‰ôaý_”.žÛ5êUÔ:jw†]¡’è±Å`·†HÞ¥ãúQv§£±Ãô zy}Í‹zÔ»]ñ»YãÙæ[íÇ8mšÏð>—¾ùB&ÅegSçžÅÑÒ³¾Îo§§W(×{vÁŽ!òz–ø)¡ºS²´FäÎÎâL 4l z)Ô2ƒ¢¶¶6ÝUÒ3éA×`ÕÞõj—Û�îr†íBád¯ïò¬ï„«Ø™'ïG1oÊõQ€ÉyêÅëHñÛЊqÛ8N™.N>@i»8ý!åúLwÁãåŸ@ Ý�ŽÛ¦q=öt:Z*_iÛ|uB^±uÓz¤ÛäKùªèî<íÒeQúJ´L˜§8$¿¢ÖQ‡äp­‡žD±�'¢¸õØ9Ó]ç3Ðh¤y= )?ØîDN ‰nÛâ{5ó;g/‘Þ­‚–F:jŸˆmwö“…•¶ŽâùuÜLÀL  x­áW뤹ÐèǼ뎻î$Ǧ;ùº€;‡‹Å¹q�ãµE€m@° S‘¶‡Ø´èsË÷Æ™Žwž¼Ó´‰ðÝ+_�ÔÝ‚ü©Q™œ¨Í©ÿN”§Q69÷!�ŠË>DkRï…\Šê, �CìS”+/g”!¢6S‚(o"ÞlÔi ñ<ê�dšÎŽÔ›”KE?ÔAR#váæáûÄ×¢îìP�:-XP¶d(KÃbë¦õè'/_ê5RßÝ~…ôÌë„-ŒººAqH”ù8õ†*MYE­£hí¬ÿqLfL4)� E0ê9šçã´:Ý ÂI°Nß‹Ý\dèåß­Ñ̤½.ÀG³uB¹‹‘¤Ž“UL€u:�¢uŒ.Aý’ÅY@Zï Ø9KÀ”9)§¨�퓜Îúhᜩœ<�Vi]Óù`Ï�ÈÂ�’ô~ÿ¿½³�Ñìªë¸ SÒE¬º¦í’®H`I‹T©vª–ÐÐK PéyIH%𕀉D°Ô¶´„ò Щv°—´%K]d�ΚLaÑ¥YÒ!®ÖÏw¹gçÌíó<ó²³óÜyîç—|÷¼Þóò9÷™=¿9÷>ÃúŸqˆhãšBÙ`ÞŠæ[õ“|=*ÎYÒK½'8g)hòs²T,'uo(‰M ‡ñm³Í/£žàœ5ãÌ—E·¡ßC×¢bívƽFe\†�€$Ð:hX„­86%qÎòwJî0þœ®Ì ØËå[ÞþíPϬ-@€µÛ�®G÷2Ü8fïF»PÛæÈ¸’{cØ7‰µë›^?�qé [e´Òu²ý>i>Óµµ¯Í©Ð÷Ÿ¡«ÐSêÊCâ9«íŽ:1 ~{+ïªVz3’Ãøþj«ó|&Ÿƒo¢aÎk×ÖhàÌ”€$ �ñðÇñpŸ¨^Ù¤]Ä>€¦V˜Ø!ÊãÐ݃²yÉ£pZ °¦{VÖ5›ëËQœîa¶HÁ{ÐûXÓĵ &Àz´O²~Ö ƒº¡î£ä?uPÙ*òŽÆ©(õhë7‰ÿÚVòZaÖûÑ'P |ÂImä‹Gv bO£Þ‰’h‡ÔyÿUå?JýŸ,iÊ—± lØØò(áªê¶ëÑ×@¾ÔË qýÈçùƒæ\Æ:,¤�N­Ñ°qšn°þ·ÐòLÕzN o«ÒF{J€{c𩍦?˽qe•6Úž õd¡Ïå4ùá‘“_B7 œ¢ ³}¼ ݇¾Ë¢»PN×.CÛ‡]dþ¹'ÿ½è�èvôôøïè/PN/†9gÙd¿ý÷À�Hç ›d˾m±Õgí@´ŠVLþL]ƒ5ýéW£aýåÞxºåÞ¹Ž°míS¶am•ëÚåµsWê¬2–³ù™ÒCé¯|sfIÿ°DÖvm�Ö8|«K@�À¹$p6ÿ��ËqÙö#ÐlÎ?̰óGksòòz´ »ÇvRvu#‚ËÏ=LxB¡Ã´{ŠPÛ@pÞCsÏE—¢g£ËÐhµ–õùº�õɉ‚¶ùF9?`8ë=A‹ÃµÌXã;¹gþžÌëÑ«ÐóÑ S«ÜCqðãšO/–Ó¢œŠËØâܳ|Ódm#ï1úËßaôs¢íLÕm®Æ÷1.¬Û]i.ÃúéÚ §ù�€$0Ã6ÏcŠ]N 6K9Qû4§lØ^‰²©‹0ê~ËÆðÒF§-NÛ±#èp£#œ£�EBmØÅ»íEqÄFqŽ×jY‡;ÑÇ`ŸõÐÆH`ˆCRFôm"Ï* Â�Ôÿ~•^s”ëóÈáû#î«|�üo£+Ð4Ê}VÛ;IÔZî�8uÅžC$�E³”×öÍ:1 žºA'^?5 îª²Fð=JyZ Ø3‰´ßÓ+e£Â®­Ñ¨±Z& H@›L`Ô†y“‡bw“F€MÎqæôÁ¨qÖ^L|£8o+ÙyTˆc][W¦½Òó(›¿&ï?ÑBÓ7ÑÉ4æ6»]Ø„Ù(O5jošÉ^“ž} ÝÏpÖ¶�f˜µƒ–÷²Žk2î±).˜®ô[Üß@��wG£¼ç•óºý_&][i®´ëH�rÐ^S_L<××–{3÷±ü,ä µÇQêŸMx�‹km?é�\.¦ì4[»yâ±®­Ñ�Få¿�€$Ð ~IH'–¡ƒ`ó§+ßd6�.Gq66Ò²‰[@óèD£cMÇ1eyŒ©”-²yJÞ¦,vÒitÚÕ à„;P6Ÿa“xÊŠR#í$�Å!›Eÿ„„Gj À=òx= Öf[�®ãÔ�C–wÇŠåÔ9-§`«6Ú9LåÚÉùm¼©ÝõòøbÝöqêýt©GyNľZÒ„ÿ‹^B�{«¼ÓQêædîïГ«²K¨û•’¦Îñ‹JšðÊ?\¥ã4þ8éè×ê|ê äFýUñmÆ—Ç=‹eÞûh÷Û%£„Ôýñו4áÃÔË£Å_§Ö¨£ÑM ÀúßB73UW~IH£ÏQî�i柟]Åü’�B¢gáöžÍ×év„•lþ¢Ó+~(Å ¹Åq»´QòÖkqv¦­ª ÆPêÅQ«�“ùRÐ O’޳W[qªê¼�s•qËüÆñŒSö6új³$µ­N€µ<À½<Ë<¦›¹ä$ç!òþ”ðsè»è|”“ 7£+Ðl×Ï�ý%ú›Ó±ýsmüÑ¿Byì0÷ò>ônT[ú8c´÷0×}”Œ×6™O&̽—ð6t ]ˆRþG(åÅnçú3ÎY“y�ð¢R�ðÏi+ï†}å—.qÊÞƒ.CjŒå^úÊéßo4 ?�ðKäeÜq,óÙÚƒÞ‚^‡jË#¢§�v:µFe\†�€$Ð ž ucÅlzrJ´å·Î ³ñ)!Qm ”Ï¡8cGÅK¾¶…ðYXÕ O™õ§ˆDy_l-–?"}Ú± �'qáÝè%khà¿©û<Ú8Z_C[ùÅÅçѯÔù+Äóà‹hëd]�¶ò·Úâ$­d�PaÙüikÛ ‹hsÕ|©ûó´ñ%§rµv¯¡ÿ3ýÐÎy�Y#Æ¢mÖþºš©ºó­‚Ñç(÷Æ4ó?P1ð­‚ѧèö>MÖ¹n-ìeòÛèl`¢eƱ8kÏ@S(ñ]M<§R‰gC8ÉvŠÉ«´@|Å!ËæØ/RB_�ÏÎ<Ÿ‘2ÿ�£úý¯aHr2ö>ô®R�6þ�6^Nú¯ÑLÉæÞ{×åþ[fä�¤­+ÉLo@qþ†Yœ˜›ÐÛ¸î±v%ò?&ÿÆvY•λ¨/CUy¥ÿoÑNéÂ6á(Ë\ò'~Ÿë?c$;µFgfD�€ÆNÀ´±/�8Ø@ÅAÛ�â¬åÛÜr—tÂÏ/(.@©%>Ë Áqt ÅéŠ%L~¯”ÅYͦ3a¾%ùZOp?·7÷ÛV3u®K½—¢W¢œ^å3𴈾ƒ¾ŽfQ¾�³Ü{$—ÍäñãëQœ¾_DOEyœ0�KBŸF§�´;Òhë"*Ì «Ð^ô(àz}åïk„#�vr’övt9Êg<_çÿ/(c¹‰6¥Îª¸­¶íž1® Û«Ñ«Ñ Ð…(ŽgÆ‘¹Ü‡>Ê8&jM;�Z£¡ƒµ`C°æ·ÐÐLÕ˜'hŒ>G¹7¦™ÿ�Š�'hŒ>EuÐú´ÚÎuUø™Mìö¦r¤YÞãi;uqª¾7¨2yq´R^ì›·S%a( H@“O@mò×x½3ÔA[/¹É»®lB'ofÎHë$€Ót¬ui~®I@�€$  HàœõÀ9ïÜ$  H@�€$  H`‰€Ú c�€$  H@�€ÆJ@m¬øí\�€$  H@�À´%Æ$  H@�€$  Œ•€ÚXñÛ¹$  H@�€$ �%:hK,ŒI@�€$  H@+´±â·s H@�€$  H@KtЖX“€$  H@�€$0V:hcÅoç�€$  H@�€–è -±0& H@�€$  H`¬tÐÆŠßÎ%  H@�€$  ,ÐA[baL�€$  H@�ÀX è �¿�K@�€$  H@X" ƒ¶Ä˜$  H@�€$ �±ÐA+~;—€$  H gN´æ;ÓJ›ì/�ë[S?ÙJ›ì ´ž,´Ó”€$  H în�bzÛ¶m7¡í­|“="Àúÿ Ó�iMùS­´ÉžØöøã�÷dªNS�€$  ŒŸ›ñ{ÅU­‘Ì’~û²#­|“L€{a7Ó{?º¶5ÍäŸÏý°ØÊ7Ù:h=Xd§( H@�@w4›òѮ֨N‘þº‘�ùB«ÌäàØÉtÞŠÞ�v´¦v’ô¯sjå›ì ´ž,´Ó”€$  H ;Ø ïe4w¡=FGíôA6é(7k‹hÖý� ÿtÞ€iÄ1ë~ÿ€2³zB@­' í4%  H@è6ë9A» ]=bds”ÝŠ>Á¦=qm‹`�w3äßAסKG ÿ e¿ë:� Ô“"´ž,´Ó”€$  H ›ØÀ_ÃÈ>€¦VáÊóÅ÷ ûÙÈŸZ¡¾Åc"Àš^F×/Fq¾G9eáqô‡¬çÍIhÐAó�€$  H@c&À†>�»½å�¤½«NÞSÊcp9uùbB6ø‹„Ú&`í¶Óeœ°+P³i”wÌV²cTˆc~3kwb¥Ê–÷‡€ZÖÚ™J@�€$°4'j3 u?Šã¶ËiÚa”wÖ¡/'­Ó… ´Æ{6M^‚ö¡8dI¯e�f©+Êc«ž‚B[N@m9S�€$  H p.` yü1ï.]ŽrR³V;µ¾FzÇ �ÕiCÀ~'ESèblo¥õ¬ÃA®¿}ö99Ó$0”€ÚP4H@�€$ �nÀaØÁH^Šö7Úu–#Ë#uóh® �ãðHÂIw"à~»ÑÏ6áa´§ ãŸ�…ïç}V‡ølPöïZ´þ­¹3–€$  H`‹ÀÁȉΠÐ4ÊéZ‹�¶8l è$šoœ¼%ÿ:Šb©³ˆŽãˆ¤î¦Σ³8[ÛQ®Ø…(é)”“°(eqrSw m´…Éýh}‡5 ¬‹€Úº°y‘$  H@è•8!õ{QûHïãOÐwT¬8q%½–0ÎVq¾r]­³=áJ;ëµ8c6:D‡,Ž«&� ! ƒ¶!mD�€$  t‹N[™8iy�*ÛÞ&�¼œS�›IEND®B`‚content/es/port-binding.md0000644000175000056700000000443115232661434014312 0ustar0000000000000000## VII. Asignación de puertos ### Publicar servicios mediante asignación de puertos Las aplicaciones web se ejecutan a menudo mediante contenedores web. Por ejemplo, las aplicaciones de PHP se suelen ejecutar como módulos del [HTTPD de Apache](http://httpd.apache.org/), y las aplicaciones Java en [Tomcat](http://tomcat.apache.org/). **Las aplicaciones "twelve factor" son completamente auto-contenidas** y no dependen de un servidor web en ejecución para crear un servicio web público. Una aplicación web **usa HTTP como un servicio al que se le asigna un puerto**, y escucha las peticiones que recibe por dicho puerto. En los entornos de desarrollo, los desarrolladores usan una URL del servicio (por ejemplo `http://localhost:5000/`), para acceder al servicio que ofrece la aplicación. En la fase de despliegue, existe una capa de enrutamiento que se encarga de que las peticiones que llegan a una dirección pública se redirijan hacia el proceso web que tiene asignado su puerto correspondiente. Esto se implementa, normalmente, usando una [declaración de dependencias](./dependencies) donde se incluyen librerías de las aplicaciones web, como [Tornado](http://www.tornadoweb.org/) para Python, [Thin](http://code.macournoyer.com/thin/) para Ruby, o [Jetty](http://www.eclipse.org/jetty/) para Java y otros lenguajes basados en la Máquina Virtual de Java (JVM). Esto ocurre totalmente en el *entorno del usuario*, es decir, dentro del código de la aplicación. El contrato con el entorno de ejecución obliga al puerto a servir las peticiones. HTTP no es el único servicio que usa asignación de puertos. La verdad, es que cualquier servicio puede ejecutarse mediante un proceso al que se le asigna un puerto y queda a la espera de peticiones. Entre otros ejemplos podemos encontrar [ejabberd](http://www.ejabberd.im/) (que usa [XMPP](http://xmpp.org/)), y [Redis](http://redis.io/) (que usa [el protocolo Redis](http://redis.io/topics/protocol)). También es cierto que la aproximación de asignación de puertos ofrece la posibilidad de que una aplicación pueda llegar a ser un ["backing service"](./backing-services) para otra aplicación, usando la URL de la aplicación correspondiente como un recurso declarado en la [configuración](./config) de la aplicación que consume este "backing service". content/ja/disposability.md0000644000175000056700000000724315232661434014564 0ustar0000000000000000## IX. 廃棄容易性 ### 高速ã�ªèµ·å‹•ã�¨ã‚°ãƒ¬ãƒ¼ã‚¹ãƒ•ルシャットダウンã�§å …牢性を最大化ã�™ã‚‹ **Twelve-Factor Appã�® [プロセス](./processes) ã�¯ *廃棄容易* ã�§ã�‚ã‚‹ã€�ã�™ã�ªã‚�ã�¡å�³åº§ã�«èµ·å‹•・終了ã�™ã‚‹ã�“ã�¨ã�Œã�§ã��る。** ã�“ã�®æ€§è³ªã�Œã€�ç´ æ—©ã��柔軟ã�ªã‚¹ã‚±ãƒ¼ãƒ«ã�¨ã€�[コード](./codebase) ã‚„ [設定](./config) ã�«å¯¾ã�™ã‚‹å¤‰æ›´ã�®ç´ æ—©ã�„デプロイを容易ã�«ã�—ã€�本番デプロイã�®å …牢性を高ã‚�る。 プロセスã�¯ã€� **起動時間を最å°�化ã�™ã‚‹** よã�†åŠªåŠ›ã�™ã‚‹ã�¹ã��ã�§ã�‚る。ç�†æƒ³çš„ã�«ã�¯ã€�1ã�¤ã�®ãƒ—ロセスã�¯ã€�起動コマンドã�Œå®Ÿè¡Œã�•れã�¦ã�‹ã‚‰æ•°ç§’é–“ã�§ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚„ジョブをå�—ã�‘å�–れるよã�†ã�«ã�ªã‚‹ã�¹ã��ã�§ã�‚る。起動時間ã�ŒçŸ­ã�„ã�¨ã€�[リリース](./build-release-run)作業やスケールアップã�®ã‚¢ã‚¸ãƒªãƒ†ã‚£ã�Œé«˜ã��ã�ªã‚‹ã€‚ã�•らã�«ã€�プロセスマãƒ�ージャーã�Œå¿…è¦�ã�«å¿œã�˜ã�¦ãƒ—ロセスを新ã�—ã�„物ç�†ãƒžã‚·ãƒ³ã�«ç°¡å�˜ã�«ç§»å‹•ã�§ã��るよã�†ã�«ã�ªã‚‹ã�Ÿã‚�ã€�堅牢性も高ã��ã�ªã‚‹ã€‚ プロセスã�¯ã€�プロセスマãƒ�ージャーã�‹ã‚‰ **[SIGTERM](http://en.wikipedia.org/wiki/SIGTERM)シグナルをå�—ã�‘å�–ã�£ã�Ÿã�¨ã��ã�«ã€�グレースフルã�«ã‚·ãƒ£ãƒƒãƒˆãƒ€ã‚¦ãƒ³ã�™ã‚‹ã€‚** Webプロセスã�®å ´å�ˆã€�グレースフルシャットダウンã�¯ã€�サービスãƒ�ートã�®ãƒªãƒƒã‚¹ãƒ³ã‚’中止ã�—(従ã�£ã�¦æ–°ã�—ã�„リクエストを拒ã�¿ï¼‰ã€�処ç�†ä¸­ã�®ãƒªã‚¯ã‚¨ã‚¹ãƒˆã�Œçµ‚了ã�™ã‚‹ã�¾ã�§å¾…ã�¡ã€�シャットダウンã�™ã‚‹ã�“ã�¨ã�§å®Ÿç�¾ã�•れる。ã�“ã�®ãƒ¢ãƒ‡ãƒ«ã�§ã�¯æš—黙的ã�«HTTPリクエストã�ŒçŸ­ã�„(ã�›ã�„ã�œã�„数秒)ã�“ã�¨ã‚’仮定ã�—ã�¦ã�„る。ロングãƒ�ーリングã�®å ´å�ˆã€�クライアントã�¯ã‚³ãƒ�クションã�Œå¤±ã‚�れã�Ÿã�¨ã��ã�«é€”切れã�ªã��å†�接続を試ã�¿ã‚‹ã�¹ã��ã�§ã�‚る。 ワーカープロセスã�®å ´å�ˆã€�グレースフルシャットダウンã�¯ã€�処ç�†ä¸­ã�®ã‚¸ãƒ§ãƒ–をワーカーキューã�«æˆ»ã�™ã�“ã�¨ã�§å®Ÿç�¾ã�•れる。例ã�ˆã�°ã€�[RabbitMQ](http://www.rabbitmq.com/)ã�§ã�¯ãƒ¯ãƒ¼ã‚«ãƒ¼ã�¯[`NACK`](http://www.rabbitmq.com/amqp-0-9-1-quickref.html#basic.nack)ã‚’é€�ã‚‹ã�“ã�¨ã�Œã�§ã��る。[Beanstalkd](https://beanstalkd.github.io)ã�§ã�¯ã€�ワーカーã�®æŽ¥ç¶šã�Œå¤±ã‚�れるã�¨ã‚¸ãƒ§ãƒ–ã�¯è‡ªå‹•çš„ã�«ã‚­ãƒ¥ãƒ¼ã�«æˆ»ã‚‹ã€‚[Delayed Job](https://github.com/collectiveidea/delayed_job#readme)ã�ªã�©ã�®ãƒ­ãƒƒã‚¯ã‚’ベースã�«ã�—ã�Ÿã‚·ã‚¹ãƒ†ãƒ ã�§ã�¯ã€�ジョブレコードã�®ãƒ­ãƒƒã‚¯ã‚’確実ã�«è§£æ”¾ã�™ã‚‹å¿…è¦�ã�Œã�‚る。ã�“ã�®ãƒ¢ãƒ‡ãƒ«ã�§ã�¯ã€�暗黙的ã�«ã�™ã�¹ã�¦ã�®ã‚¸ãƒ§ãƒ–ã�Œ[å†�å…¥å�¯èƒ½](http://en.wikipedia.org/wiki/Reentrant_%28subroutine%29)ã�§ã�‚ã‚‹ã�“ã�¨ã‚’仮定ã�—ã�¦ã�„る。å†�å…¥å�¯èƒ½æ€§ã�¯ä¸€èˆ¬çš„ã�«ã€�çµ�果をトランザクションã�§åŒ…ã‚“ã� ã‚Šã€�処ç�†ã‚’[ã�¹ã��ç­‰](http://en.wikipedia.org/wiki/Idempotence)ã�«ã�™ã‚‹ã�“ã�¨ã�§å®Ÿç�¾ã�•れる。 ã�¾ã�Ÿã€�下層ã�®ãƒ�ードウェアã�®éšœå®³ã�«é–¢ã�—ã�¦è¨€ã�ˆã�°ã€�プロセスã�¯ **çª�ç„¶ã�®æ­»ã�«å¯¾ã�—ã�¦å …牢** ã�§ã�‚ã‚‹ã�¹ã��ã�§ã�‚る。ã�“ã�®ã‚ˆã�†ã�ªäº‹æ…‹ã�Œèµ·ã�“ã‚‹ã�“ã�¨ã�¯ã€�`SIGTERM`ã�«ã‚ˆã‚‹ã‚°ãƒ¬ãƒ¼ã‚¹ãƒ•ルシャットダウンã�«æ¯”ã�¹ã‚Œã�°ã�šã�£ã�¨å°‘ã�ªã�„ã�Œã€�ã��れã�§ã‚‚èµ·ã�“りã�†ã‚‹ã€‚ã�“ã�®å¯¾ç­–ã�¨ã�—ã�¦æŽ¨å¥¨ã�•れる方法ã�¯ã€�Beanstalkdã�ªã�©ã�®å …牢ã�ªã‚­ãƒ¥ãƒ¼ã‚¤ãƒ³ã‚°ãƒ�ックエンドを使ã�„ã€�クライアントã�®æŽ¥ç¶šã�Œåˆ‡æ–­ã�•れã�Ÿã‚Šã€�タイムアウトã�—ã�Ÿã�¨ã��ã�«ã‚¸ãƒ§ãƒ–をキューã�«æˆ»ã�›ã‚‹ã‚ˆã�†ã�«ã�™ã‚‹ã�“ã�¨ã�§ã�‚る。ã�©ã�¡ã‚‰ã�«ã�—ã�¦ã‚‚ã€�Twelve-Factor Appã�¯äºˆæœŸã�—ã�ªã�„グレースフルã�§ã�ªã�„å�œæ­¢ã‚’ã�†ã�¾ã��処ç�†ã�§ã��るよã�†è¨­è¨ˆã�•れる。[「クラッシュオンリーã€�設計](http://lwn.net/Articles/191059/)ã�¯ã�“ã�®ã‚³ãƒ³ã‚»ãƒ—トをã��ã�®[è«–ç�†çš„帰çµ�](http://docs.couchdb.org/en/latest/intro/overview.html)ã�«å°Žã��。 content/uk/port-binding.md0000644000175000056700000000646615232661434014334 0ustar0000000000000000## VII. Прив'Ñ�зка портів ### ЕкÑ�портуйте Ñ�ервіÑ�и за допомогою прив'Ñ�зки портів (port binding) Веб-заÑ�тоÑ�унки іноді запуÑ�каютьÑ�Ñ� вÑ�ередині контейнера веб-Ñ�ервера. Ð�априклад, PHP-заÑ�тоÑ�унок може бути запущений Ñ�к модуль вÑ�ередині [Apache HTTPD](http://httpd.apache.org/) або Java-заÑ�тоÑ�унок може бути запущений вÑ�ередині [Tomcat](http://tomcat.apache.org/). **ЗаÑ�тоÑ�унок дванадцÑ�ти факторів Ñ” повніÑ�тю автономним** Ñ– в процеÑ�Ñ– виконаннÑ�, щоб Ñ�творити веб-Ñ�ервіÑ�, доÑ�тупний через web, не покладаєтьÑ�Ñ� на ін'єкцію веб-Ñ�ервера в Ñ�ередовище виконаннÑ�. Веб-заÑ�тоÑ�унок **екÑ�портує HTTP-Ñ�ервіÑ� шлÑ�хом прив'Ñ�зки до порту** Ñ– проÑ�луховує запити, що надходÑ�ть на цей порт. У локальному development Ñ�ередовищі розробник відвідує URL-адреÑ�у виглÑ�ду `http://localhost:5000/` длÑ� доÑ�тупу до Ñ�ервіÑ�у, що екÑ�портуєтьÑ�Ñ� заÑ�тоÑ�унком. При розгортанні рівень маршрутизації оброблÑ�Ñ” запити до загальнодоÑ�тупного хоÑ�ту Ñ– перенаправлÑ�Ñ” Ñ—Ñ… до порту, до Ñ�кого прив'Ñ�зано веб-процеÑ�. Як правило, це реалізуєтьÑ�Ñ� за допомогою [оголошеннÑ� залежноÑ�тей] (./dependencies) шлÑ�хом додаваннÑ� бібліотеки веб-Ñ�ервера до заÑ�тоÑ�унку, наприклад, [Tornado](http://www.tornadoweb.org/) длÑ� Python, [Thin](http://code.macournoyer.com/thin/) длÑ� Ruby або [Jetty](http://www.eclipse.org/jetty/) длÑ� Java та інших мов на оÑ�нові JVM. Це відбуваєтьÑ�Ñ� повніÑ�тю в *проÑ�торі кориÑ�тувача*, тобто в коді заÑ�тоÑ�унку. Прив'Ñ�зка до порту длÑ� обробки запитів Ñ” "угодою" із Ñ�ередовищем виконаннÑ�. HTTP — не єдиний Ñ�ервіÑ�, Ñ�кий може бути екÑ�портований шлÑ�хом прив'Ñ�зки до порту. Майже будь-Ñ�кий вид Ñ�ерверного програмного забезпеченнÑ� може бути запущений, прив'Ñ�заний до порту Ñ– може очікувати вхідні запити. Прикладами Ñ” [ejabberd](http://www.ejabberd.im/) (викориÑ�товує [XMPP](http://xmpp.org/)) Ñ– [Redis](http://redis.io/) (викориÑ�товує [протокол Redis](http://redis.io/topics/protocol)). Також зверніть увагу, що підхід прив'Ñ�зки до портів означає, що заÑ�тоÑ�унок може виÑ�тупати Ñ�к [Ñ�тороннÑ� Ñ�лужба](./backing-services) длÑ� іншого заÑ�тоÑ�унку, надаючи Ñ�вою URL-адреÑ�у Ñ�к реÑ�урÑ� в [конфігурації](./config) заÑ�тоÑ�унку-Ñ�поживача.public/images/symbol.png0000644000175000056700000000370515232661434014054 0ustar0000000000000000‰PNG  IHDR(JÉÂ< pHYs  šœwIDAThµ™[¨”e†ó”™¦�É2#J(5Ð’Š¢¬A¨²ˆHè¢ëF*ˆn‚.‰ «Ë,©ˆB+ˆ$" Œ0£zQí–Aif¦»÷™ý­Ÿ5k¾ÿ03/¬½¾µÖ»ÞõÍ?3ß?3{Üèèè -b‚´fÈöËŽµ¡;¾ §1Që·eøVÐögkWWËð­ í ®K»2?ü&y ¶d7Is£ÄCk�C¤L–Æ—²‹eÇe<3_ËæËŽÈF[OñƒÚ›öˆ‰É…6®à,í`—ljÚÉQùIi}HþÙî÷íÚ¸‚OhªmŽ øó�<õÁ1ä y±ú#Æ„âŲ�Þ0Ã<ÅÜ5vÈ. —ç€âé!÷…â…2u%óß'ɸ9¦lÊŒ‚¿ xéÏRß^YÄGJŒ—á#àÓ××SÝÙ‰?§+þG6?qðÄôõ5³/r_$,NV¼6ÕM“8‚>ú�Sëk AŒ7Õ6YÄ·JL‘y=bòôwÞœòžŸ]g“�wÇi)^ZÒC>tÍnDJbÓåÉLÛX3Œz:èÕί%8‘§âÅûd3'§G^z9~W®+¨h˜«ÚÑ8Añý=^^zèz^Ϻ'QÒ°%ª+þXÆ™×Düt+û+‹©ùÖ¨ªø_Ù‚To¢>}è—j”RÓùâ'S½®?Öé‹@Ÿ9‘Û‰³IG~,ª)FpªãÔiø:}¹ÌÏ+ÖÅ"C¸P¹Ã²ˆ[”¨ê««ÑÁæõôö$é�¨¢˜\UOÓZcí2Á%™ÍPnVKD½æví©+HÅIò»b§âÕ©žë$‡^s™_è —|(v)Þ.›à8¹¾~sè¡ÁüB«X¤$·¥xéûþˆäÔ¬sݘ_Ü>ã_R1â%"¯ÍýöÑ™á]«¤ýla »µ8ÅÈÿ“GŸ9ìƒýèg€±�r¯üTQyÙú½¿§$ï9q�»�²ŸñF\w¦xóƒ®QÏ_2¼i7õÌ‹XiÍ;Cå â dVoâÏŸ§êï䉛ôçñ™ë±ÓŠ+|Vkî—“eV¯óïËÀ‘1׉û9š˜Ç\�~ð{¾¢õ#2_¯Z¯u½þë&ùª>_cžû)Þ$/’ñú1ü©Å92/’[/Ç¿û½yê¹>Ÿcó h°Ÿ® Òð°1’R…ÍQm_ââ8d—'O ¨Ã«ÒaŽûèðcÓD>sLî"—9ø“.3ðiy© M¼ÿô ~œGŒ>s Ìgn®áJ}ÇFþeÅñ Tü¢?7}s™_ðŠ…Ojý´Ìƒ§ÍsWù¢ÖëBݸä=è³]æúzÏkЊÓDüÁuŽh}’ŒúU2;J´Ý$ãNd½Þ“§n �~8è�È Ìc®ï/Ý ¤›­3yŽ�3e~ã܎꾟P÷·QúÑ‰Ç óº6GÜ“¤×86Z Ï]ã`s»wìâ5Zñ�2{d§j½G¨õú­Ž®Õ˜gù‹Lq’rv‹âöä…oWlتE•u}ÆEÏn›ÌažÕ _,rEåæÊËÀ+2Ï«“ûs[¨�¼¾åñèô™ãkźX””_-3Ü¡…õÌÖÚ^ø#ZÇcÇ+ðà[/:ô-ßã{ò8å¶$µ?äùéÌúüæã±ã�¿ úÑè¢oz=¾'QBF”ÿV/:^ñ'�l÷±ã�êð˜å,zèVšïTlðWd�’GSáy4ñ€oõR_Z�PUíY¦ Çd×ËŒû:Io9êð}–oä‘2¢ Traditional app Twelve-factor app เวลาระหว่าง deploys สัปดาห์ ชั่วโมง คนเขียน code vs คน deploy code คนละคน คนเดียวà¸�ัน สภาพà¹�วดล้อม Dev vs production à¹�ตà¸�ต่างà¸�ัน เหมือนà¸�ันมาà¸�ที่สุด [Backing services](./backing-services) อย่างเช่น à¸�านข้อมูลของ app, ระบบคิว, หรือ ระบบà¹�คช เป็นสิ่งที่ dev/prod ควรมีควมคล้ายคลึงà¸�ันมาà¸�ที่สุด หลายภาษามี library ซึ่งทำให้เข้าถึง backing service ได้ง่าย รวมทั้ง *adapter* à¸�ับบริà¸�ารที่à¹�ตà¸�ต่างà¸�ัน ตัวอย่างบางส่วนในตารางนี้:
Type Language Library Adapters
Database Ruby/Rails ActiveRecord MySQL, PostgreSQL, SQLite
Queue Python/Django Celery RabbitMQ, Beanstalkd, Redis
Cache Ruby/Rails ActiveSupport::Cache Memory, filesystem, Memcached
Developer บางครั้งหาวิธีที่ใช้ backing service ง่ายๆ ในเครื่องตัวเอง ในขณะที่ backing service ใช้งานอย่างเคร่งครัด�ละ�ข็ง��ร่งใน production ตัวอย่างเช่น ใช้ SQLite ในเครื่องพัฒนา �ละใช้ PostgreSQL ใน production หรือใช้ local process memory สำหรับ�คชใน development �ละ Memcached ใน production **Twelve-factor developer ต่อต้าน�ำใช้งาน backing service ที่�ต�ต่าง�ันระหว่าง development �ละ production** �ม้ว่าเมื่อใช้ adapter ในทางทฤษฎี�ล้วไม่มีความ�ต�ต่าง�ันใน backing service ความ�ต�ต่างระหว่าง backing service หมายความว่าความไม่เข้า�ันเพียงเล็�น้อยที่เป็นสาเหตุให้ code ทำงานได้�ละผ่าน�ารทดสอบใน development หรือ staging �ต่ไปทำงานผิดพลาดใน production ความผิดหลาดเหล่านี้สร้างความไม่ลงรอย�ัน�ับ�าร delopyment อย่างต่อเนื่อง �ละราคาของความไม่ลงรอย�ันนี้�ละความผันผวนตามมาของ�าร deployment อย่างต่อเนื่องสูงมา�เมื่อพิจารณาตลอดอายุ�ารทำงานของ application Lightweight local service ไม่น่าสนใจมา�เหมือนเมื่อ�่อน ด้วย backing service สมัยใหม่อย่างเช่น Memcached, PostgreSQL �ละ RabbitMQ ไม่มีความ�ต�ต่าง�ันใน�ารติดตั้ง�ละทำงาน ต้องขอบคุณระบบ packaging สมัยใหม่ อย่างเช่น [Homebrew](http://mxcl.github.com/homebrew/) �ละ [apt-get](https://help.ubuntu.com/community/AptGet/Howto) อี�ทางเลือ�หนึ่ง เครืองมือจัดเตรียมที่เปิดเผยอย่างเช่น [Chef](http://www.opscode.com/chef/) �ละ [Puppet](http://docs.puppetlabs.com/) รวม light-weight สิ่ง�วดล้อมเสมือนอย่างเช่น [Docker](https://www.docker.com/) �ละ [Vagrant](http://vagrantup.com/) ทำให้ developer รัน app ในสิ่ง�วดล้องของเครื่องได้ใ�ล้เคียง�ับสิ่ง�วดล้อมของ production มา�ที่สุด �ละค่าใช้จ่ายของ�ารติดตั้ง�ละใช้งานระบบเหล่านี้ต่ำมา�ถ้าเทียบ�ับประโยชน์ที่ได้รับสำหรับความเท่าเทียม�ันของ dev/prod �ละ�าร deployment ที่ต่อเนื่อง Adapter ไปยัง backing service ที่�ต�ต่าง�ันยังคงมีประโยชน์อยู่ เพราะว่าจะทำให้ port ไปใช้�ับ backing service ใหม่ๆ ได้อย่างง่ายดาย �ต่�าร deploy ทั้งหมดของ app (developer environment, staging, production) ควรจะใช้ชนิด�ละเวอร์ชันที่เหมือน�ันของ�ต่ล่ะ backing service. content/th/disposability.md0000644000175000056700000001256415232661434014607 0ustar0000000000000000## IX. Disposability ### เพิ่มความ�ข็ง��ร่งด้วย�ารเริ่มต้นระบบอย่างรวดเร็ว�ละปิดระบบอย่างนุ่มนวล **Process ของ twelve-factor app จะต้อง **disposable**, หมายความว่าสามารถเริ่มต้นหรือหยุดในขณะที่�จ้งให้ทราบล่วงหน้า** นี่ส่งเสริมให้ขนายยื่ดหยุ่นอย่างรวดเร็ว, deployment ของ�ารเปลี่ยน�ปลง [code](./codebase) หรือ [�ารตั้งค่า](./config) อย่างรวดเร็ว �ละ�ข็ง��ร่งสำหรับ production deploy Process ควรจะมุ่งมั่นที่จะ **ลดเวลาเริ่มต้น** จะเป็น�ารดีถ้า process ใช้เวลาไม่�ี่วินาทีจา�คำสั่งเปิดใช้งานถู�ประมวลผลจน�ระทั่ง process ทำงาน�ละพร้อมสำหรับรับ request หรือ job, �ารใช้เวลาเริ่มต้นที่สั้นนี้จะทำให้คล่องตัวสำหรับ�ระบวน�าร [release](./build-release-run) �ละขยายออ� �ละช่วยให้�ข็ง��ร่งเพราะเป็น�ารรับประ�ันว่าตัวจัด�าร process สามารถย้าย process ไปยังเครื่องใหม่ได้ง่าย Process จะต้อง **ปิดระบบอย่างนุ่มนวลเมื่อรับสั��าณ [SIGTERM](http://en.wikipedia.org/wiki/SIGTERM)** จา�ตัวจัด�าร process สำหรับ process ของเว็บ �ารปิดระบบอย่างอย่างนุ่มนวลสำเร็จได้ด้วยสิ้นสุด�ารเ�้าดู service port (ป�ิเสธ request ที่เข้ามาใหม่) ประมวลผล request ที่รับเข้ามา�ล้วให้เสร็จ �ละออ�จา�โปร��รม โดยนัยในรูป�บบนี้คือ HTTP request จะสั้นมา� (ไม่มา�ไป�ว่าสองสามวินาที) หรือใน�รณีของ�ารประมวลผลที่ยาวนาน, client ควรจะพยายามต่อเนื่องที่จะติดต่ออี�ครั้งเมื่อ�ารเชื่อมต่อขาดหายไป สำหรับ worker process �ารปิดระบบอย่างนุมนวลสำเร็จได้ด้วย�ารคืนงานที่ทำอยู่�ลับให้ work queue ตัวอย่างเช่น บน [RabbitMQ](http://www.rabbitmq.com/) worker สามารถส่ง [`NACK`](http://www.rabbitmq.com/amqp-0-9-1-quickref.html#basic.nack), บน [Beanstalkd](https://beanstalkd.github.io) งานจะถู�ส่ง�ลับไปยัง queue อัตโนมัติเมือใด�็ตามที่ worker ขาด�ารติดต่อ ระบบ Lock-based เช่น [Delayed Job](https://github.com/collectiveidea/delayed_job#readme) จำเป็นต้องทำให้�น่ใจว่าปล่อยงานที่ล�อ�ไว้ออ�ให้หม โดยนัยในรูป�บบนี้งานทั้งหมดเป็น [reentrant](http://en.wikipedia.org/wiki/Reentrant_%28subroutine%29) ซึ่งโดยปร�ติจะสำเร็จด้วย�ารห่อผลลัพธ์ใน transaction หรือสร้างตัวดำเนินงาน [idempotent](http://en.wikipedia.org/wiki/Idempotence) Process ควรจะ **ทนทานต่อ�ารหยุด�ารทำงานอย่างฉับพลัน** ใน�รณีนี้ความผิดพลาดที่เ�ิดขึ้นในฮาร์ด�วร์ ในขณะที่�รณีนี้เ�ิดขึ้นน้อยมา��ว่า�ารปิดระบบอย่างนุ่มนวลด้วย `SIGTERM` มัน�็ยังมีโอ�าสเ�ิดขึ้นได้ วิธีที่�นะนำคือใช้ robust queueing backend อย่างเช่น Beanstalkd ที่จะส่ง�ลับงานไปยัง queue เมื่อ client ขาด�ารติดต่อหรือหมดเวลา ทั้งสองวิธี twelve-factor app จะถู�ออ��บบให้จัด�าร�ับสิ่งที่คาดไม่ถึง, มี�ารปิดที่ผิดปร�ติ [Crash-only design](http://lwn.net/Articles/191059/) ใช้�นวคิดนี้�ับ [logical conclusion](http://docs.couchdb.org/en/latest/intro/overview.html) content/uk/toc.md0000644000175000056700000000412115232661434012507 0ustar0000000000000000Дванадц�ть факторів =================== ## [I. Кодова база](./codebase) ### Одна кодова база, що від�лідковуєть�� в �и�темі контролю вер�ій та має багато розгортань ## [II. Залежно�ті](./dependencies) ### Явно оголошуйте та ізолюйте залежно�ті ## [III. Конфігураці�](./config) ### Зберігайте конфігурацію в �ередовищі виконанн� ## [IV. Сторонні �лужби](./backing-services) ### Вважайте �торонні �лужби (backing services) підключеними ре�ур�ами ## [V. Збірка, реліз, виконанн�](./build-release-run) ### Суворо відокремлюйте етапи збірки та виконанн� ## [VI. Проце�и](./processes) ### Запу�кайте за�то�унок �к один або декілька проце�ів без збереженн� внутрішньго �тану (stateless) ## [VII. Прив'�зка портів](./port-binding) ### Ек�портуйте �ерві�и за допомогою прив'�зки портів (port binding) ## [VIII. Конкурентні�ть](./concurrency) ### Ма�штабуйте за�то�унок за допомогою проце�ів ## [IX. Утилізовувані�ть](./disposability) ### Підвищуйте надійні�ть за допомогою швидкого запу�ку і коректного вимкненн� ## [X. Dev/prod паритет](./dev-prod-parity) ### Прагніть мак�имальної ідентично�ті development, staging та production �ередовищ ## [XI. Журналюванн�](./logs) ### Сприймайте журналюванн� (logs) �к потоки подій ## [XII. Задачі адміні�труванн�](./admin-processes) ### Виконуйте задачі адміні�труванн�/керуванн� за допомогою разових проце�івcontent/tr/backing-services.md0000644000175000056700000000556015232661434015157 0ustar0000000000000000## IV. Destek servisi ### Destek servislerine ekli kaynak olarak davranma Bir *destek servisi* uygulamanın kendi normal işleminin bir parçası olarak ağ üzerinden tüketim yapan bir servistir. Örnekler veri deposu([MySQL](http://dev.mysql.com/) veya [CouchDB](http://couchdb.apache.org/) gibi), mesajlama/kuyruklama sistemleri( [RabbitMQ](http://www.rabbitmq.com/) veya [Beanstalkd](https://beanstalkd.github.io)), giden email için SMTP servisi([Postfix](http://www.postfix.org/) gibi) ve önbellekleme sistemleri([Memcached](http://memcached.org/) gibi) içerir. Destek servisleri, veri tabanı gibi, uygulamaların çalışma zamanlı dağıtımlarında olduğu gibi benzer sistem yöneticileri tarafından geleneksel olarak yönetilirler. Bu yerel yönetilen servislere ilave olarak, uygulama üçüncü parti uygulamalar tarafından onaylanmış ve yönetilmiş servislere sahip olabilirler. Örnekler SMTP servisleri([Postmark](http://postmarkapp.com/) gibi), Metrik toplama servisleri( [New Relic](http://newrelic.com/) veya [Loggly](http://www.loggly.com/) gibi), binary servisler([Amazon S3](http://aws.amazon.com/s3/) gibi) ve API-erişilebilir tüketici servisleri bile [Twitter](http://dev.twitter.com/), [Google Maps](http://code.google.com/apis/maps/index.html), ve [Last.fm](http://www.last.fm/api) gibi) içerir. **On iki faktör uygulaması için bu kod, yerel ve üçüncü parti servisler arasında ayrım yapmaz.** Uygulamada, her ikiside ek kaynaktır, [yapılandırmada](./config) saklanmış yer belirleyici/kimlik bilgileri ve URL aracılığıyla erişilir. On iki faktör uygulamasının bir dağıtımı, uygulama kodunda hiçbir değişiklik olmadan üçüncü parti([Amazon RDS](http://aws.amazon.com/rds/) gibi) tarafından yönetilenle yerel MySQL veritabanı silebilmelidir. Aynı şekilde bir yerel SMTP servisi(Postmark gibi), kod değişikliksiz bir üçüncü parti SMTP servisiyle değiş tokuş yapılabilir. Her iki durumda da, kaynak sadece değişmesi gereken yapılandırmada ele alınır. Her bir belirgin destek servisi bir *kaynaktır*. Örneğin, bir MySQL veritabanı(Uygulama katmanında parçalanma için kullanılmış) bir kaynaktır; iki MySQL veritabanı iki belirgin kaynak olarak nitelendirilir. On iki faktör uygulaması veritabanlarına, bağlı oldukları dağıtımlara gevşek bağlaşımlarını belirten *ek kaynak* olarak davranır. A production deploy attached to four backing services. Kaynaklar dağıtımlara istenilen zamanda eklenilip çıkartılabilir. Örneğin, eğer uygulamanın veritabanı donanım sorununa göre yanlış davranıyorsa, uygulamanın yöneticisi son yedeklemeden geri yüklenmiş yeni bir veri tabanı sunucusunu döndürebilir. Şuanki veritabanı ekten çıkarılmış olabilir ve yeni veri tabanı eklenmiş olabilir, hiç bir kod değişikliği olmadan. content/tr/concurrency.md0000644000175000056700000000602615232661434014270 0ustar0000000000000000## VIII. Eş Zamanlılık ### Süreç modeli yardımıyla dağıtıklaştırma Herhangi bir bilgisayar programı bir kere çalıştığı zaman bir veya daha fazla süreç tarafından temsil edilir. Web uygulamaları çeşitli süreç çalışma formlarını alır. Örneğin, Php süreçleri Apache'nin çocuk süreçleri olarak çalışır, istek üzerine talep hacmine tarafından ihtiyaç duyulduğunda başlatılır. Java süreçleri, karşıt yaklaşımı benimser; JVM, başlangıçta çok sayıda sistem kaynağı (CPU ve bellek) ayıran büyük bir uber işlemi sağlar ve eşzamanlılık iş parçacıkları aracılığıyla dahili olarak yönetilir. Her iki durumda, çalışan süreçler, uygulamanın geliştiricilerine yalnızca minimum düzeyde görünürdür. ![Ölçek, çalışan süreçler olarak ifade edilir, iş yükü çeşitliliği, süreç tipi olarak tanımlanır.](/images/process-types.png) **On iki faktör uygulamasında, süreçler birinci sınıf üyelerdir.** On iki faktör uygulamasındaki süreçler [arka planda çalışan servis programları için olan unix süreç modelinden](https://adam.herokuapp.com/past/2011/5/9/applying_the_unix_process_model_to_web_apps/) güçlü ipuçları alır. Bu modeli kullanarak geliştirici uygulamasını her bir tip işe bir *süreç tipi* atayarak, ayrı iş yüklerini kontrol etmek için uygulamasını planlayabilir. Örneğin, HTTP istekleri web süreçleri tarafından işlenir ve uzun çalışan arkaplan görevleri, işçi süreçler tarafından işlenir. Bu, bireysel süreçlerin kendi dahili çoklu işlemelerini içermiyor değil, çalışma zamanı içindeki iş parçacıkları aracılığıyla VM, veya [EventMachine](https://github.com/eventmachine/eventmachine), [Twisted](http://twistedmatrix.com/trac/), [Node.js](http://nodejs.org/) gibi araçlarda bulunan asenkron model. Fakat bireysel VM yalnızca çok aşırı büyüyebilir (dikey ölçekte), bu yüzden uygulama aynı zamanda çoklu fiziksel makinelerde çalışan çoklu süreçleri içerebilmelidir. Bu süreç modeli, konu ölçeklendirme zamanına geldiğinde gerçekten çok başarılıdır. Paylaşımsız, yatay olarak bölümlenebilir bir doğası olan on iki faktör uygulama süreçleri, daha fazla eş zamanlılık eklemenin kolay ve güvenilir bir işlem olduğu anlamına gelir. Süreç tipleri dizisi ve her bir tipin süreçlerinin numarası *süreç oluşumu* olarak bilinir. On iki faktör uygulama süreçleri [asla arka planda çalışmamalı](http://dustin.github.com/2010/02/28/running-processes.html) ya da PID dosyalarını yazmamalıdır. Bunun yerine, [çıktı akışlarını](./logs) kontrol etmek, çökmüş süreçlere cevap vermek, kullanıcı başlatımlı tekrar başlatma ve kapatmaları işlemek için işletim sistemlerinin süreç yöneticisine( [systemd](https://www.freedesktop.org/wiki/Software/systemd/) gibi bulut platformunda yayınlanmış süreç yöneticisi veya geliştirme sürecinde [Foreman](http://blog.daviddollar.org/2011/05/06/introducing-foreman.html)'e benzer araçlar ) dayanır. content/zh_cn/dependencies.md0000644000175000056700000000413515232661434015037 0ustar0000000000000000## II. �赖 ### 显�声明�赖关系( *dependency* ) 大多数编程语言都会�供一个打包系统,用�为�个类库�供打包�务,就� Perl 的 [CPAN](http://www.cpan.org/) 或是 Ruby 的 [Rubygems](http://rubygems.org/) 。通过打包系统安装的类库�以是系统级的(称之为 "site packages"),或仅供�个应用程�使用,部署在相应的目录中(称之为 "vendoring" 或 "bunding")。 **12-Factor规则下的应用程��会���赖系统级的类库。** 它一定通过 *�赖清�* ,确切地声明所有�赖项。此外,在�行过程中通过 *�赖隔离* 工具�确�程��会调用系统中存在但清�中未声明的�赖项。这一�法会统一应用到生产和开�环境。 例如, Ruby 的 [Bundler](https://bundler.io/) 使用 `Gemfile` 作为�赖项声明清�,使用 `bundle exec` �进行�赖隔离。Python 中则�分别使用两�工具 -- [Pip](http://www.pip-installer.org/en/latest/) 用作�赖声明, [Virtualenv](http://www.virtualenv.org/en/latest/) 用作�赖隔离。甚至 C 语言也有类似工具, [Autoconf](http://www.gnu.org/s/autoconf/) 用作�赖声明,��链接库用作�赖隔离。无论用什么工具,�赖声明和�赖隔离必须一起使用,�则无法满足 12-Factor 规范。 显�声明�赖的优点之一是为新进开�者简化了环境�置�程。新进开�者�以检出应用程�的基准代�,安装编程语言环境和它对应的�赖管�工具,�需通过一个 *构建命令* �安装所有的�赖项,��开始工作。例如,Ruby/Bundler 下使用 `bundle install`,而 Clojure/[Leiningen](https://github.com/technomancy/leiningen#readme) 则是 `lein deps`。 12-Factor 应用�样�会���赖�些系统工具,如 ImageMagick 或是`curl`。�使这些工具存在于几乎所有系统,但终究无法��所有未�的系统都能支�应用顺利�行,或是能够和应用兼容。如果应用必须使用到�些系统工具,那么这些工具应该被包�在应用之中。 content/ko/config.md0000644000175000056700000000716315232661434013172 0ustar0000000000000000## III. 설정 ### 환경(environment)� 저장� 설정 애플리케�션� *설정*� [배�](./codebase) (스테�징, 프로�션, 개발 환경 등) 마다 달�질 수 있는 모든 것들입니다. 설정�는 다�� �함�니다. * ��터베�스, memcached 등 [백엔드 서비스](./backing-services)들� 리소스 핸들 * Amazon S3 �나 트위터 등� 외부 서비스 �� 정보 * 배�� 호스트� 정규화� 호스트 �름(canonical hostname)처럼 � 배�마다 달�지는 값 애플리케�션� 종종 설정� �수로 코드� 저장합니다. �것� Twelve-Factor를 위반하며, Twelve-Factor는 **설정� 코드�서 엄격하게 분리하는 것**� 요구합니다. 설정� 배치마다 �게 다르지만, 코드는 그렇지 않습니다. 애플리케�션� 모든 설정� 정��으로 코드 바깥으로 분리�어 있는지 확�할 수 있는 간단한 테스트는 어떠한 ��정보� 유출시키지 않고 코드베�스가 지금 당장 오픈 소스가 � 수 있는지 확�하는 것입니다. � "설정"� 정�는 애플리케�션 내부 설정� *�함하지 않는다는 �*� 유�해야 합니다. Rails� `config/routes.rb`�나 [Spring](http://spring.io/)� ["어떻게 코드 모듈� 연결�는 가](http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html)과 같� 설정들� 배치 사��서 변하지 않기 때문� 코드� 내부� 있는 것� 가장 좋습니다. 설정� 대한 � 다른 접근방�� Rails� `config/database.yaml`처럼 버전 관리 시스템� 등��지 않� 설정 파�� �용하는 것입니다. � 방법� 코드 저장소� 등�� �수를 사용하는 것� 비하면 매우 � 발전�지만, 설정 파�� 여러 위치� 여러 �맷으로 �어지고 모든 설정� 한 곳�서 확�하고 관리하기 어렵게 만드는 경향� 있습니다. 게다가, �러한 형�들� 언어와 프레임워�� 따�가는 경향� 있습니다. **Twelve-Factor App� 설정� *환경 변수*** (envvars나 env�고� 불림)� 저장합니다. 환경 변수는 코드 변경 없� 쉽게 배� 때마다 쉽게 변경할 수 있습니다. 설정 파�과 달리, 잘못해서 코드 저장소� 올�갈 가능성� 낮습니다. �한, 커스텀 설정 파��나 Java System Property와 같� 다른 설정 매커니즘과 달리 언어나 OS� �존하지 않는 표준입니다. 설정 관리� 다른 측면� 그룹핑입니다. 종종 애플리케�션� 설정� 명명� 그룹("environments"�고� 함)으로 구성하기� 합니다. 해당 그룹� Rails� 'development', 'test', 'production' environments처럼, 배�� �름� 따서 명명�니다. � 방법� 깔�하게 확장하기 어렵습니다. �용 프로그램� 배�가 �가함� 따�, 'staging'���가 'qa'같� 새로운 그룹� �름� 필요하게 �니다. 프로�트가 성장함� 따�, 개발�� �기 �신� 그룹를 추가하게 �니다. 결과�으로 설정� � 그룹� 조합으로 �발하게 �고, 애플리케�션� 배�를 불안정하게 만듭니다. Twelve-Factor App�서 환경 변수는 매우 정�한 관리�며, ��� 환경변수는 서로 ��합니다. 환경 변수는 "environments"로 절대 그룹으로 묶�지 않지만, 대신 � 배�마다 �립�으로 관리�니다. � 모�� 애플리케�션� 수명주기를 거치는 �안 � 많� 배�로 �활하게 확장해 나갈 수 있습니다. content/es/admin-processes.md0000644000175000056700000000511415232661434015011 0ustar0000000000000000## XII. Administración de procesos ### Ejecutar las tareas de gestión/administración como procesos que solo se ejecutan una vez El [juego de procesos](./concurrency) es el conjunto de procesos que se usa para hacer las tareas habituales de la aplicación (como procesar las peticiones web). Por otro lado, es frecuente que los desarrolladores quieran ejecutar procesos de administración o mantenimiento una sola vez, como por ejemplo: * Ejecutar migraciones de las bases de datos (e.g. `manage.py migrate` de Django, `rake db:migrate` de Rails). * Ejecutar una consola (también conocidas como [REPL](http://en.wikipedia.org/wiki/Read-eval-print_loop)) para ejecutar código arbitrario o inspeccionar los modelos de la aplicación en una base de datos con datos reales. La mayoría de los lenguajes proporcionan un interprete del tipo REPL si se ejecuta el mismo mandato sin ningún argumento (e.g. `python` o `perl`) pero en algunos casos tienen un mandato distinto (e.g. `irb` en Ruby, `rails console` en Rails). * Ejecutar scripts incluidos en el repositorio de la aplicación (e.g. `php scripts/fix_bad_records.php`). Los procesos de este tipo deberían ejecutarse en un entorno idéntico al que se usa normalmente en los [procesos](./processes) habituales de la aplicación. Estos procesos se ejecutan en una [distribución](./build-release-run) concreta, usando el mismo [código base](./codebase) y la misma [configuración](./config) que cualquier otro proceso que ejecuta esa distribución. El código de administración se debe enviar con el código de la aplicación para evitar problemas de sincronización. Se deberían usar las mismas técnicas de [aislamiento de dependencias](./dependencies) en todos los tipos de procesos. Por ejemplo, si un proceso web Ruby usa el mandato `bundle exec thin start`, entonces una migración de la base de datos debería usar `bundle exec rake db:migrate`. De la misma manera, un programa Python que usa Virtualenv debería usar `bin/python` para ejecutar tanto el servidor web Tornado como cualquier proceso de administración `manage.py`. "Twelve-factor" recomienda encarecidamente lenguajes que proporcionan una consola del tipo REPL, ya que facilitan las tareas relacionadas con la ejecución de scripts que solo han de usarse una vez. En un despliegue local, se invocarán los procesos de administración con un mandato directo en la consola dentro del directorio de la aplicación. En un despliegue de producción, se puede usar ssh u otro mecanismo de ejecución de mandatos remoto proporcionado por el entorno de ejecución del despliegue para ejecutar dichos procesos. content/es/toc.md0000644000175000056700000000257015232661434012505 0ustar0000000000000000Twelve Factors ============== ## [I. Código base (Codebase)](./codebase) ### Un código base sobre el que hacer el control de versiones y multiples despliegues ## [II. Dependencias](./dependencies) ### Declarar y aislar explícitamente las dependencias ## [III. Configuraciones](./config) ### Guardar la configuración en el entorno ## [IV. Backing services](./backing-services) ### Tratar a los "backing services" como recursos conectables ## [V. Construir, desplegar, ejecutar](./build-release-run) ### Separar completamente la etapa de construcción de la etapa de ejecución ## [VI. Procesos](./processes) ### Ejecutar la aplicación como uno o más procesos sin estado ## [VII. Asignación de puertos](./port-binding) ### Publicar servicios mediante asignación de puertos ## [VIII. Concurrencia](./concurrency) ### Escalar mediante el modelo de procesos ## [IX. Desechabilidad](./disposability) ### Hacer el sistema más robusto intentando conseguir inicios rápidos y finalizaciones seguras ## [X. Paridad en desarrollo y producción](./dev-prod-parity) ### Mantener desarrollo, preproducción y producción tan parecidos como sea posible ## [XI. Historiales](./logs) ### Tratar los historiales como una transmisión de eventos ## [XII. Administración de procesos](./admin-processes) ### Ejecutar las tareas de gestión/administración como procesos que solo se ejecutan una vez content/pl/background.md0000644000175000056700000000250415232661434014040 0ustar0000000000000000Background ========== Kontrybutorzy tego dokumentu byli bezpośrednio zaangażowani w tworzenie i wdrażanie setek aplikacji i pośrednio byli świadkami produkcji, działania i skalowania setek tysięcy aplikacji dzięki naszej pracy na platformie [Heroku](http://www.heroku.com/). Ten dokument jest podsumowaniem całego naszego doświadczenia i obserwacji szerokiej gamy aplikacji SaaS. Jest on połączeniem idealnych praktyk developmentu, zwracania szczególnej uwagi na naturalny rozrost aplikacji w czasie, dynamiki współpracy developerów pracujących nad jednym codebase'm, oraz [unikania kosztów gnijącego oprogramowania](http://blog.heroku.com/archives/2011/6/28/the_new_heroku_4_erosion_resistance_explicit_contracts/). Naszym celem jest podniesienie poziomu świadomości o podstawowych problemach, które dostrzegliśmy przy tworzeniu nowoczesnych aplikacji, zapewnienie wspólnego słownictwa do rozmowy o tych problemach oraz zaoferowanie ogólnych rozwiązań dla tych problemów wraz z towarzyszącą terminologią. Format dokumentu jest inspirowany książkami Martina Fowlera *[Patterns of Enterprise Application Architecture](http://books.google.com/books/about/Patterns_of_enterprise_application_archi.html?id=FyWZt5DdvFkC)* oraz *[Refactoring](http://books.google.com/books/about/Refactoring.html?id=1MsETFPD3I0C)*. content/th/processes.md0000644000175000056700000001053615232661434013733 0ustar0000000000000000## VI. Processes ### รัน�อพพลิเคชันเป็นหนึ่งหรือมา��ว่าให้เป็น stateless processes App ทำงานในสภาพ�วดล้อม�ารดำเนินงานด้วยหนึ่งหรือมา��ว่า *processes* ใน�รณีที่ง่ายที่สุดคือ code คือ stand-alone script, สภาพ�วดล้อม�ารดำเนินงานคือเครื่องคอมพิวเตอร์อง developer ที่ติดตั้ง language runtime �ละวิธี�ารคือเปิด app ด้วยคำสั่ง (ตัวอย่างเช่น `python my_script.py`) ในอี�ด้านหนึ่ง app ที่ซับซ้อนที่ deploy บน production ใช้หลาย [process types, instantiated into zero or more running processes](./concurrency) **Twelve-factor processes เป็น stateless �ละ [share-nothing](http://en.wikipedia.org/wiki/Shared_nothing_architecture).** ข้อมูลใดๆที่จำเป็นต้องเ�็บ�บบถาวรจำเป็นต้องเ�็บไว้ใน stateful [backing service](./backing-services) โดยปร�ติจะเป็น�านข้อมูล พื้นที่หน่วยความจำหรือระบบไฟล์ของ process สามารถใช้เป็นช่วงสั้นๆ ได้, single-transaction cache. ตัวอย่างเช่น, �ารดาวน์โหลดไฟล์ขนาดให�่, ดำเนินงาน�ับไฟล์นั้น �ละเ�็บผลลัพธ์ของ�ารดำเนินงานไว้ใน�านข้อมูล twelve-factor app ไม่เคยสมมติว่ามีอะไร�คชในหน่วยความจำหรือบน disk จะพร้อมใช้งานใน request หรือ job ในอนาคต -- มีหลาย process ทำงานมีโอ�าสสูงมา�ที่ในอนาคต request จะทำงานบน process ที่�ต�ต่าง�ัน �ม้ว่าทำงาน process เดียว เมื่อมี�าร restart (trigger โดย code deploy, config change หรือเปลี่ยนสภาพ�วดล้อม�ารทำงาน) จะลบสภานะของ app ทั้งหมดอย่างสมบูรณ์ (เช่น หน่วยความจำ �ละระบบไฟล์) Asset packagers อย่างเช่น [django-assetpackager](http://code.google.com/p/django-assetpackager/) ใช้ระบบไฟล์เป็น�คชของ�าร compiled asset. Twelve-factor app ชอบที่จะทำ compiling เช่นนี้ในระหว่าง [ขั้นตอน�าร build](/build-release-run) Asset packagers อย่างเช่น [Jammit](http://documentcloud.github.com/jammit/) �ละ [Rails asset pipeline](http://ryanbigg.com/guides/asset_pipeline.html) สามารถตั้งค่าให้ pacakge asset ระหว่างขั้นตอน�าร build ได้ บางระบบเว็บขึ้นอยู่�ับ ["sticky sessions"](http://en.wikipedia.org/wiki/Load_balancing_%28computing%29#Persistence) -- นั้นคือ, ทำ�าร�คชขอมูล user session ในหน่วยความจำของ app สำหรับดำเนิน�ารในอนาคตจา�ผู้เยี่ยมชมเดียว�ันที่เชื่อมโยง�ับ process เดียว�ัน, Sticky session เป็น�ารละเมิด twelve-factor �ละไม่ควรใช้หรือพึ่งพา, ข้อมูลสถานะ Session เป็นสิ่งที่เหมาะสมอย่างมา�สำหรับที่เ�็บข้อมูลที่มี�ารหมดเวลา (time-expireation) อย่างเช่น [Memcached](http://memcached.org/) หรือ [Redis](http://redis.io/) content/tr/port-binding.md0000644000175000056700000000410115232661434014322 0ustar0000000000000000## VII. Port Bağlama ### Port bağlama yolu üzerinden dışarı aktarma Web uygulamaları bazı zamanlar web sunucu taşıyıcıları içinde çalıştırılırlar. Örneğin, PHP uygulamaları modül olarak [Apache HTTPD](http://httpd.apache.org/) içinde veya Java uygulamaları [Tomcat](http://tomcat.apache.org/) içinde çalıştırılabilirler. **On iki faktör uygulama tamamen bağımsız** ve web dönüştürme servisi oluşturmak için çalışma ortamı içindeki web sunucunun çalışma zamanlı enjeksiyonuna dayanmaz. Bu web uygulaması port bağlama tarafından HTTP'yi servis olarak dışa aktarır ve o porta gelen istekleri dinler. Yerel geliştirme ortamında, geliştiriciler `http://localhost:5000/` gibi servis URL'ini, onların duygulamaları tarafından dışa aktarılan servise erişmek için ziyaret ederler. Dağıtımda, yönlendirme katmanı dışa bakan makine adından port bağımlı web süreçlerine gelen yönlendirme isteklerini ele alır. Bu tipik olarak, uygulamaya web sunucusu kütüphanesi eklemek için bağımlılık tanımlaması kullanılarak geliştirilmiştir, Python için [Tornado](http://www.tornadoweb.org/), Ruby için [Thin](http://code.macournoyer.com/thin/) veya Java ve diğer JVM-tabanlı diller için [Jetty](http://jetty.codehaus.org/jetty/). Bu uygulamanın kodu içinde *kullanıcı alanında* gerçekleşir. Çalışma ortamıyla olan anlaşma isteklere hizmet veren bir porta bağlıdır. HTTP port bağlama ile dışarı aktarılabilen tek servis değildir. Nerdeyse herhangi bir sunucu yazılım tipi port için süreç bağlama aracılığıyla çalışır ve gelen istekleri bekler. Örnekler [ejabberd](http://www.ejabberd.im/) ([XMPP](http://xmpp.org/) ile haberleşir) ve [Redis](http://redis.io/) ([Redis protocol](http://redis.io/topics/protocol) ile haberleşir) içerir. Port bağlama yaklaşımı bir uygulamanın,tüketici uygulama için yapılandırmadaki kaynak olanağı gibi destek uygulamasına URL sağlayarak diğer bir uygulamanın [destek servisi](./backing-services) olabileceği anlamına geldiğini de unutmayın. content/de/intro.md0000644000175000056700000000215115232661434013027 0ustar0000000000000000Einführung ============ Heute wird Software oft als Dienst geliefert - auch *Web App* oder *Software-As-A-Service* genannt. Die Zwölf-Faktoren-App ist eine Methode um Software-As-A-Service Apps zu bauen die: * **deklarative** Formate benutzen für die Automatisierung der Konfiguration, um Zeit und Kosten für neue Entwickler im Projekt zu minimieren; * einen **sauberen Vertrag** mit dem zugrundeliegenden Betriebssystem haben, **maximale Portierbarkeit** zwischen Ausführungsumgebungen bieten; * sich für das **Deployment** auf modernen **Cloud-Plattformen** eignen, die Notwendigkeit von Servern und Serveradministration vermeiden; * die **Abweichung minimieren** zwischen Entwicklung und Produktion, um **Continuous Deployment** für maximale Agilität ermöglichen; * und **skalieren** können ohne wesentliche Änderungen im Tooling, in der Architektur oder in den Entwicklungsverfahren. Die Zwölf-Faktoren-Methode kann auf Apps angewendet werden, die in einer beliebigen Programmiersprache geschrieben sind, und die eine beliebige Kombination von unterstützenden Diensten benutzen (Datenbank, Queue, Cache, ...) content/en/background.md0000644000175000056700000000270215232661434014027 0ustar0000000000000000Background ========== The contributors to this document have been directly involved in the development and deployment of hundreds of apps, and indirectly witnessed the development, operation, and scaling of hundreds of thousands of apps via our work on the Heroku platform. This document synthesizes all of our experience and observations on a wide variety of software-as-a-service apps in the wild. It is a triangulation on ideal practices for app development, paying particular attention to the dynamics of the organic growth of an app over time, the dynamics of collaboration between developers working on the app's codebase, and avoiding the cost of software erosion. Our motivation is to raise awareness of some systemic problems we've seen in modern application development, to provide a shared vocabulary for discussing those problems, and to offer a set of broad conceptual solutions to those problems with accompanying terminology. The format is inspired by Martin Fowler's books *Patterns of Enterprise Application Architecture* and *Refactoring*. content/es/intro.md0000644000175000056700000000227315232661434013053 0ustar0000000000000000Introducción ============ En estos tiempos, el software se está distribuyendo como un servicio: se le denomina *web apps*, o *software as a service* (SaaS). "The twelve-factor app" es una metodología para construir aplicaciones SaaS que: * Usan formatos **declarativos** para la automatización de la configuración, para minimizar el tiempo y el coste que supone que nuevos desarrolladores se unan al proyecto; * Tienen un **contrato claro** con el sistema operativo sobre el que trabajan, ofreciendo la **máxima portabilidad** entre los diferentes entornos de ejecución; * Son apropiadas para **desplegarse** en modernas **plataformas en la nube**, obviando la necesidad de servidores y administración de sistemas; * **Minimizan las diferencias** entre los entornos de desarrollo y producción, posibilitando un **despliegue continuo** para conseguir la máxima agilidad; * Y pueden **escalar** sin cambios significativos para las herramientas, la arquitectura o las prácticas de desarrollo. La metodología "twelve-factor" puede ser aplicada a aplicaciones escritas en cualquier lenguaje de programación, y cualquier combinación de 'backing services' (bases de datos, colas, memoria cache, etc). content/ja/background.md0000644000175000056700000000321615232661434014020 0ustar0000000000000000背景 ========== ��ドキュメント��寄稿者��何百も�アプリケーション�開発�デプロイ�直接関�り�[Heroku](http://www.heroku.com/)プラットフォーム上��仕事を通���何百何�も�アプリケーション�開発・�用・スケール�間接的�立�会��。 ��ドキュメント��多種多様�SaaSアプリケーション開発�場������経験�観察を�������も���る。�れ��アプリケーション開発���る�想的�プラクティスを見出����三角測���る。特��アプリケーション�時間�共�有機的��長�る力学�アプリケーション�コードベース��り組む開発者間�コラボレーション�力学����[ソフトウェア�敗�よるコスト�回�](http://blog.heroku.com/archives/2011/6/28/the_new_heroku_4_erosion_resistance_explicit_contracts/)�注目���る。 ����動機������モダン�アプリケーション開発�見����る種�システム的��題��関心を高�る������題を議論�る���共通�語彙を�供�る���������題�対�る広�概念的�解決策�専門用語を�供�る����る。フォーマット�Martin Fowler�書��*[Patterns of Enterprise Application Architecture](http://books.google.com/books/about/Patterns_of_enterprise_application_archi.html?id=FyWZt5DdvFkC)* �よ� *[Refactoring](http://books.google.com/books/about/Refactoring.html?id=1MsETFPD3I0C)* ��想を得��る。 content/ja/build-release-run.md0000644000175000056700000000700715232661434015222 0ustar0000000000000000## V. ビルド�リリース�実行 ### ビルド�リリース�実行�3��ステージを厳密�分離�る [コードベース](./codebase)�3��ステージを経��(開発環境����)デプロイ��変��れる。 * *ビルドステージ* ��コードリ�ジトリを *ビルド* �呼�れる実行�能�塊��変�る変���る。デプロイプロセス�指定��コミット�コード�指定�れ��ージョンを使���ビルドステージ�[�存関係](./dependencies)を�得��ローカル環境��置���イナリやアセットファイルをコンパイル�る。 * *リリースステージ* ��ビルドステージ�生��れ�ビルドを���り��れをデプロイ��在�[設定](./config)����る。出�上�る *リリース* ��ビルド�設定�両方���れ�実行環境�中�����も実行��るよ�準備�整�。 * *実行ステージ* (ランタイム�も呼�れる)���択�れ�リリース�対���アプリケーション������[プロセス](./processes)を起動�る����アプリケーションを実行環境�中�実行�る。 ![コード�ビルド��り�ビルド�設定����れ�リリース�作られる。](/images/release.png) **Twelve-Factor App��ビルド�リリース�実行�3��ステージを厳密�分離�る。** 例���実行ステージ��るコードを変更��も��変更をビルドステージ���る方法������コードを実行中�変更�る����り得��。 デプロイツール�通常�リリース管�ツールを�供�る。中�も注目�����以��リリース�ロール�ック�る機能��る。例��デプロイツール�[Capistrano](https://github.com/capistrano/capistrano/wiki)��リリースを`releases`������サブディレクトリ�格����在�リリース��在�リリース�ディレクトリ��シンボリックリンク��る。Capistrano�`rollback`コマンドを使���簡����座�以��リリース�ロール�ック��る。 ����リリース�常�一��リリースIDを������る。リリースID�例�����リリース�タイムスタンプ(例:`2011-04-06-20:32:17`)や連番(例:`v100`)��る。リリース�追記専用��帳��り�一度作られ�リリース�変更�る�������。変更�る場��新��リリースを作ら��れ��ら��。 ビルドステージ��新��コード�デプロイ�れる���必�アプリケーション�開発者�よ��開始�れる。一方実行ステージ��サー�ー��起動時や�クラッシュ��プロセス�プロセスマ�ージャー�よ���起動�れ�時�自動�開始�れる。�����実行ステージ���る���変部分を����よ���る����る。���ら�アプリケーション�実行を妨�るよ���題�起�る��開発者�待機�����真夜中�アプリケーション�壊れる�果��る����る。ビルドステージ�も��複雑�も構���。���ら�ビルドステージ�エラー�常�デプロイを実行���る開発者�目���発生�る����る。 content/pl/backing-services.md0000644000175000056700000000546215232661434015146 0ustar0000000000000000## IV. Usługi wspierające ### Traktuj usługi wspierające jako przydzielone zasoby Usługą wspierającą jest każda, z której aplikacja korzysta przez sieć jako część normalnego działania. Zaliczamy do nich np. magazyny danych (takie jak [MySQL](http://dev.mysql.com/) albo [CouchDB](http://couchdb.apache.org/)), systemy wysyłania/kolejkowania wiadomości (takie jak [RabbitMQ](http://www.rabbitmq.com/) czy [Beanstalkd](https://beanstalkd.github.io)), usługi SMTP do zewnętrznej wysyłki emaili (np. [Postfix](http://www.postfix.org/)) oraz systemy cachowania pamięci (np. [Memcached](http://memcached.org/)). Usługa wspierająca taka jak baza danych jest zazwyczaj zarządzana przez tych samych programistów, którzy zajmują się wdrażaniem aplikacji. Dodatkowo aplikacja może również korzystać z usług oferowanych przez osoby trzecie. Do przykładów zaliczają się usługi SMTP ([Postmark](http://postmarkapp.com/)),usługi zbierające metryki ([New Relic](http://newrelic.com/) czy [Loggly](http://www.loggly.com/)), usługi przechowywania danych (takie jak [Amazon S3](http://aws.amazon.com/s3/)), czy również usługi dostępne przez publiczne API (jak np. [Twitter](http://dev.twitter.com/), [Google Maps](https://developers.google.com/maps/), lub [Last.fm](http://www.last.fm/api)). **Aplikacje 12factor nie rozróżniają usług lokalnych od zewnętrznych.** Dla aplikacji wszystkie są załączonymi zasobami, dostepnymi przez adres URL lub inny standard zdefiniowany w [konfiguracji](./config). Przy [wdrożeniu](./codebase) aplikacji nie może być problemów ze zmianą lokalnej bazy MySQL na oferowaną przez zewnętrznego usługodawcę (np. [Amazon RDS](http://aws.amazon.com/rds/)) bez żadnych zmian w kodzie aplikacji. Podobnie lokalny serwer SMTP może być zamieniony na zewnętrzną usługę SMTP (taką jak Postmark) bez zmian kodu. W obu przypadkach zmiana powinna wystąpić jedynie w konfiguracji aplikacji. Każda usługa jest traktowana jako *zasób*. Zasobem będzie np. baza MySQL; dwie bazy danych (używane do [shardingu](https://en.wikipedia.org/wiki/Shard_(database_architecture)) w warstwie aplikacji) kwalifikują się jako dwa odrębne zasoby. Aplikacja 12factor traktuje te bazy danych jako *załączone zasoby*, co wskazuje, że nie są z nią trwale powiązane. Produkcyjne wdrożenie aplikacji korzystajace z czterech usług wspierających. Zasoby mogą być dołączane i odłączane jeśli zajdzie taka potrzeba. W momencie gdy baza danych aplikacji z powodu usterek sprzętowych nie działa poprawnie, administrator może przełączyć bazę danych aplikacji na nowy serwer odtworzoną z ostatniego zapisu przywracania danych. Obecna produkcyjna baza może więc zostać przełączona bez żadnych zmian w kodzie aplikacji. content/th/logs.md0000644000175000056700000001041315232661434012663 0ustar0000000000000000## XI. Logs ### จัด�าร logs ให้เป็น�บบ event stream *Logs* จะทำให้เห็นได้ว่า app ทำงานอย่างไร ในสภาพ�วดล้อม server-based โดยทั่วไปจะเขียนเป็นไฟล์บนดิส�์ (ใน "logfile") �ต่นี่เป็นเพียง output format เท่านั้น Logs เป็น [stream](https://adam.herokuapp.com/past/2011/4/1/logs_are_streams_not_files/) ของ�ารรวบรวม, time-ordered events ที่รวมรวมจา� output stream ของ process ทั้งหมดที่ทำงานอยู่�ละ backing service, Log ในรูป�บบเดิมโดยปร�ติเป็นรูป�บบข้อความด้วยหนึ่ง event ต่อบรรทัด (�ม้�ระทั้ง backtrace จา� exception ที่มีหลายบรรทัด) Log ไม่มีจุดเริ่มต้นหรือสิ้นสุดที่�น่นอน �ต่มี�ารไหลอย่างต่อเนื่องตราบใดที่ app ทำงานอยู่ **Twelve-factor app ไม่เคย�ังวล�ับ�าร�ำหนดเส้นทางหรือ�ารจัดเ�็บสตรีมข้อมูลขาออ�** ไม่ควรพยายามเขียนหรือจัด�าร logfile �ทนที่, �ต่ล่ะ process ที่ทำงานจะเขียน event stream ไม่มี�ารบัฟเฟอร์ ด้วย `stdout` ในระหว่าง local development, developer จะดูสตรีมนี้ในเบื้องหลังของ terminal เพื่อสังเ�ตุพฤติ�รรมของ app ใน staging หรือ production deploy �ต่ละสตรีมของ process จะตรวจจับโดยสภาพ�วดล้อม�ารดำเนินงาน รวบรวมเข้าด้วย�ัน�ับสตรีมอื่นๆ จา� app �ละเชื่อมเส้นทางไปที่จุดหมายปลายทางสุดท้ายที่ใช้ดู�ละเ�็บถาวรในระยะยาว จุดหมายที่เ�็บถาวรเหล่านี้ไม่สามารถมองเห็นหรือ�ำหนดค่าโดย app �ละ�ทนจะได้รับ�ารจัด�ารอย่างสมบูรณ์โดยสภาพ�วดล้อม�ารดำเนินงาน, Open-source log routers (เช่น [Logplex](https://github.com/heroku/logplex) �ละ [Fluentd](https://github.com/fluent/fluentd)) มีไว้เพื่อ�ารนี้ สตรีมเหตุ�ารณ์สำหรับ app สามารถ�ำหนดเส้นทางไปที่ไฟล์ หรือดูได้ผ่านเรียลไทม์ใน terminal สตรีมสามารถส่งไป log indexing �ละระบบวิเคราะห์ เช่น [Splunk](http://www.splunk.com/) หรือ ระบบคลังข้อมูลทั่วไป เช่น [Hadoop/Hive](http://hive.apache.org/) ระบบเหล่านี้มีพลังมา��ละยืดหยุ่นใน�ารตรวจสอบพฤติ�รรมของ app ในช่วงเวลาหนึ่ง, รวมทั้ง: * ค้นหาเหตุ�ารณ์เฉพาะที่ผ่านมา * �ราฟขนาดให�่สำหรับ�สดง�นวโน้ม (เช่น จำนวน request ต่อนาที) * �าร�จ้งเตือน�บบ�อคทีฟตาม�ารวิเคราะห์พฤติ�รรมที่ผู้ใช้ระบุ (เช่น �าร�จ้งเตือนเมื่อจำนวน error ต่อนาทีเ�ินเ�ณฑ์ที่�ำหนด) locales/ru.yml0000644000175000056700000000035415232661434012106 0ustar0000000000000000ru: # Name of language listed in locales menu language: Ру��кий (ru) # A text to make known that the article is a translation not an original. # Empty for English, original. translation: (Ру��кий перевод)content/uk/config.md0000644000175000056700000001357615232661434013205 0ustar0000000000000000## III. Конфігураці� ### Зберігайте конфігурацію в �ередовищі виконанн� *Конфігураці�* за�то�унку — це в�е, що може змінювати�� між [розгортанн�ми](./codebase) (staging-розгортанн�, production-розгортанн�, локальне �ередовище розробника тощо). Це включає: * Параметри підключенн� до бази даних, Memcached і інших [�торонніх �ерві�ів](./backing-services); * Реє�траційні дані дл� підключенн� до зовнішніх �ерві�ів, таких �к Amazon S3 або Twitter; * Значенн�, що залежать від �ередовища розгортанн�, такі �к канонічне ім'� хо�ту. За�то�унки іноді зберігають конфігурації �к кон�танти в коді. Це є порушенн�м методології дванадц�ти факторів, �ка вимагає **обов'�зкового відокремленн� конфігурації від коду**. Конфігурації за�то�унку в розгортанн�х �уттєво відрізн�ють��, код — однаковий. Лакму�овим папірцем того, чи правильно розділені конфігураці� і код, є можливі�ть в будь-�кий момент відкрити вихідний код за�то�унку у вільний до�туп, при цьому не оприлюднюючи будь-�ких приватних даних. Зверніть увагу, що визначенн� "конфігурації" **не включає** в �ебе внутрішні налаштуванн� за�то�унку, такі �к `�onfig/routes.rb` в Rails, або [�к пов'�зані о�новні модулі](http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html) в [Spring](http://spring.io/). Ці налаштуванн� не змінюють�� між розгортанн�ми, і тому краще мі�це дл� них — �аме в коді. Іншим підходом до конфігурації є викори�танн� конфігураційних файлів, що не зберігають�� в �и�тему контролю вер�ій, таких �к `�onfig/database.yml` в Rails. Це перевага у порівн�нні з викори�танн�м кон�тант в коді, але в�е ж таки має �уттєві недоліки: є ймовірні�ть помилково зберегти файл конфігурації в репозиторій; і�нує тенденці� коли конфігураційні файли розкидані в різних мі�ц�х і в різних форматах, і �тає важко передивл�ти�� в�і налаштуванн� і керувати ними в одному мі�ці. Крім того, формати цих файлів, �к правило, �пецифічні дл� конкретної мови програмуванн� чи фреймворку. **За�то�унок дванадцати факторів зберігає конфігурацію в *змінних оточенн�*** (ча�то �корочуєть�� до *env vars* або *env*). Значенн� змінних оточенн� легко змінити між розгортанн�ми без зміни коду; на відміну від конфігураційних файлів, менш ймовірно випадково зберегти їх в репозиторій коду; і на відміну від конфігураційних файлів або інших механізмів конфігурації, таких �к Java System Properties, вони є �тандартом, незалежним від мови програмуванн� чи фреймворку. Іншим а�пектом керуванн� конфігурацією є групуванн�. Іноді за�то�унки об'єднують конфігурації в іменовані групи (�кі ча�то називають�� "оточенн�ми"), �кі називають�� в залежно�ті від конкретного розгортанн�, наприклад, `development`, `test` і `production` оточенн� в Rails. Цей метод погано ма�штабуєть��: чим більше �творюєть�� різних розгортань за�то�унку, тим більше необхідно нових імен оточень, наприклад, `staging` або `qa`. При подальшому ро�ті проекту розробники можуть додавати �вої вла�ні �пеціальні оточенн�, наприклад, `joes-staging`, що призводить до комбінаторного вибуху конфігурації, �кий робить керуванн� розгортанн�м за�то�унку не�табільним. У за�то�унку дванадц�ти факторів змінні оточенн� є незв'�заними між �обою за�обами керуванн�. Кожна змінна повні�тю незалежна від інших. Вони ніколи не групують�� разом в "оточенн�", керуванн� ними здій�нюєть�� незалежно дл� кожного розгортанн�. Ц� модель добре ма�штабуєть�� разом з по�вою більшої кілько�ті розгортань за�то�унку прот�гом його ек�плуатації.content/zh_cn/admin-processes.md0000644000175000056700000000352415232661434015506 0ustar0000000000000000## XII. 管�进程 ### ��管�任务当作一次性进程�行 [进程构�](./concurrency)(process formation)是指用�处�应用的常规业务(比如处� web 请求)的一组进程。与此��,开�人员�常希望执行一些管�或维护应用的一次性任务,例如: * �行数�移�(Django 中的 `manage.py migrate`, Rails 中的 `rake db:migrate`)。 * �行一个控制�(也被称为 [REPL](http://en.wikipedia.org/wiki/Read-eval-print_loop) shell),�执行一些代�或是针对线上数�库�一些检查。大多数语言都通过解释器�供了一个 REPL 工具(`python` 或 `perl`) ,或是其他命令(Ruby 使用 `irb`, Rails 使用 `rails console`)。 * �行一些�交到代�仓库的一次性脚本。 一次性管�进程应该和正常的 [常驻进程](./processes) 使用�样的环境。这些管�进程和任何其他的进程一样使用相�的 [代�](./codebase) 和 [�置](./config) ,基于�个 [�布版本](./build-release-run) �行。��管�代�应该�其他应用程�代�一起�布,从而���步问题。 所有进程类型应该使用�样的 [�赖隔离](./dependencies) 技术。例如,如果Ruby的web进程使用了命令 `bundle exec thin start` ,那么数�库移�应使用 `bundle exec rake db:migrate` 。�样的,如果一个 Python 程�使用了 Virtualenv,则需�在�行 Tornado Web �务器和任何 `manage.py` 管�进程时引入 `bin/python` 。 12-factor 尤其��那些�供了 REPL shell 的语言,因为那会让�行一次性脚本�得简�。在本地部署中,开�人员直接在命令行使用 shell 命令调用一次性管�进程。在线上部署中,开�人员�旧�以使用ssh或是�行环境�供的其他机制��行这样的进程。 content/de/backing-services.md0000644000175000056700000000540215232661434015115 0ustar0000000000000000## IV. Unterstützende Dienste ### Unterstützende Dienste als angehängte Ressourcen behandeln Ein *unterstützender Dienst* ist jeder Dienst, den die App über das Netzwerk im Rahmen ihrer normalen Arbeit konsumiert. Beispiele sind Datenspeicher (wie [MySQL](http://dev.mysql.com/) oder [CouchDB](http://couchdb.apache.org/)), Messaging/Queueing-Systeme (wie [RabbitMQ](http://www.rabbitmq.com/) oder [Beanstalkd](https://beanstalkd.github.io)), SMTP-Dienste für das Senden von Mail (wie [Postfix](http://www.postfix.org/)), und Cache-Systeme (wie [Memcached](http://memcached.org/)). Unterstützende Dienste wie Datenbanken werden traditionell von denselben Systemadministratoren verwaltet, die die App deployen. Außer diesen intern verwalteten Diensten können der App auch von Dritten verwaltete Dienste zur Verfügung stehen. Dazu gehören SMTP-Dienste (wie [Postmark](http://postmarkapp.com/)), Metrik-Sammler (wie [New Relic](http://newrelic.com/) oder [Loggly](http://www.loggly.com/)), Binary-Asset-Dienste (wie [Amazon S3](http://aws.amazon.com/s3/)), und auch über eine API zugängliche Dienste (wie [Twitter](http://dev.twitter.com/), [Google Maps](https://developers.google.com/maps/), oder [Last.fm](http://www.last.fm/api)). **Der Code einer Zwölf-Faktor-App macht keinen Unterschied zwischen lokalen Diensten und solchen von Dritten.** Für die App sind sie beide unterstützende Dienste, zugreifbar über eine URL oder andere Lokatoren/Credentials, die in der [Konfiguration](./config) gespeichert sind. Ein [Deploy](./codebase) einer Zwölf-Faktoren-App könnte eine lokale MySQL-Datenbank, durch eine von Dritten zur Verfügung gestellten, ersetzen (wie [Amazon RDS](http://aws.amazon.com/rds/)). Genauso ohne Codeänderung kann ein lokaler SMTP-Server durch einen von Dritten zur Verfügung gestellten SMTP-Dienst ersetzt werden. In beiden Fällen muss sich nur der Resource-Handle in der Konfiguration ändern. Jeder einzelne unterstützende Dienst ist eine *Ressource*. So ist zum Beispiel eine MySQL-Datenbank eine Ressource; zwei MySQL-Datenbanken (die für ein Sharding auf Applikationsebene verwendet werden) stellen zwei Ressourcen dar. Dass die Zwölf-Faktor-App diese Datenbanken als *angehängte Ressourcen* behandelt, zeigt ihre lose Kopplung, zu dem Deploy an dem sie hängen. Ein Produktions-Deploy der an vier unterstützenden Diensten hängt. Ressourcen können beliebig an Deploys an- und abgehängt werden. Wenn zum Beispiel die Datenbank einer App aufgrund von Hardwareproblemen aus der Rolle fällt, könnte der App-Administrator eine neue Datenbank aus einem Backup aufsetzen. Die aktuelle Produktionsdatenbank könnte abgehängt und die neue Datenbank angehängt werden -- ganz ohne Codeänderung. content/en/intro.md0000644000175000056700000000174615232661434013052 0ustar0000000000000000Introduction ============ In the modern era, software is commonly delivered as a service: called *web apps*, or *software-as-a-service*. The twelve-factor app is a methodology for building software-as-a-service apps that: * Use **declarative** formats for setup automation, to minimize time and cost for new developers joining the project; * Have a **clean contract** with the underlying operating system, offering **maximum portability** between execution environments; * Are suitable for **deployment** on modern **cloud platforms**, obviating the need for servers and systems administration; * **Minimize divergence** between development and production, enabling **continuous deployment** for maximum agility; * And can **scale up** without significant changes to tooling, architecture, or development practices. The twelve-factor methodology can be applied to apps written in any programming language, and which use any combination of backing services (database, queue, memory cache, etc). content/fr/codebase.md0000644000175000056700000000453115232661434013464 0ustar0000000000000000## I. Base de code ### Une base de code suivie avec un système de contrôle de version, plusieurs déploiements Une application 12 facteurs est toujours suivie dans un système de contrôle de version, tel que [Git](http://git-scm.com/), [Mercurial](https://www.mercurial-scm.org/), ou [Subversion](http://subversion.apache.org/). Une copie de la base de données de suivi des révisions est appelée *dépôt de code*, souvent raccourci en *dépôt*. Le terme anglais *code repository*, raccourci en *repository* et *repo* est également utilisé. Une *base de code* correspond à chaque dépôt (dans un système de contrôle de version centralisé tel que Subversion), ou tout ensemble de dépôts qui partage un commit racine (dans un système de contrôle de version décentralisé comme Git). ![Une base de code est associée à plusieurs déploiements](/images/codebase-deploys.png) Il y a toujours un rapport direct entre la base de code et l'application : * S'il y a plusieurs bases de code, ce n'est pas une application, c'est un système distribué. Chaque composant du système distribué est une application, et chacun peut individuellement respecter la méthodologie 12 facteurs. * Plusieurs applications partageant le même code est une violation des 12 facteurs. La solution dans ce cas est de factoriser le code partagé dans des bibliothèques qui peuvent être intégrées via un [gestionnaire de dépendances](./dependencies). Il y a seulement une base de code par application, mais il y aura plusieurs déploiements de l'application. Un *déploiement* est une instance en fonctionnement de l'application. C'est, par exemple, le site en production, ou bien un ou plusieurs sites de validation. En plus de cela, chaque développeur a une copie de l'application qui fonctionne dans son environnement local de développement, ce qui compte également comme un déploiement. La base de code est la même à travers tous les déploiements, bien que différentes versions puissent être actives dans chaque déploiement. Par exemple, un développeur a des commits qui ne sont pas encore déployés dans l'environnement de validation. L'environnement de validation a des commits qui ne sont pas encore déployés en production. Par contre, ils partagent tous la même base de code, ce qui les identifie comme étant des déploiements différents d'une même application. content/ja/codebase.md0000644000175000056700000000515615232661434013453 0ustar0000000000000000## I. コードベース ### �ージョン管��れ��る1��コードベース�複数�デプロイ Twelve-Factor App�[Git](http://git-scm.com/)や[Mercurial](https://www.mercurial-scm.org/)�[Subversion](http://subversion.apache.org/)����ージョン管�システム�常�変更を追跡���る。リビジョン追跡データベース�コピー� *コードリ�ジトリ* �言�れ��� *リ�ジトリ* �も言�れる。 *コードベース* ���一�リ�ジトリ(Subversion�よ��集中�ージョン管�システム�場�)���ルートコミットを共有�る複数�リ�ジトリ(Git�よ��分散�ージョン管�システム�場�)��る。 ![1��コードベース�複数�デプロイ�マッピング�れる](/images/codebase-deploys.png) コードベース�アプリケーション�間���常�1対1�関係��る。 * も�複数�コードベース��る場���れ�アプリケーション���� -- �れ�分散システム��る。分散システム��れ�れ�コン�ー�ント�アプリケーション��り�個別�Twelve-Factor����る�����る。 * ��コードを共有�る複数�アプリケーション��Twelve-Factor������る。��場��解決策��共通�コードをライブラリ�分解����ライブラリを[�存関係管�ツール](./dependencies)�組�込むよ���る����る。 アプリケーション�����1��コードベース�存在�る��アプリケーション�デプロイ�複数存在�る。 *デプロイ* �アプリケーション�実行中�インスタンス��る。�れ�通常1��本番サイト��1�以上�ステージングサイト��る。�ら�����開発者�ローカル開発環境�動作�るアプリケーション�コピーを����り��れらもデプロイ�見��る。 デプロイ���異�る�ージョン�アクティブ��る�も�れ����コードベース�����デプロイを通���一��る。例���開発者�ステージング環境���デプロイ�れ����コミットを抱���る��ステージング環境��本番環境�デプロイ�れ����コミット���れ��る。�����れら�デプロイ�����一�コードベースを共有���る����一�アプリケーション�異�るデプロイ��る��識��る。 content/ja/dependencies.md0000644000175000056700000000703015232661434014325 0ustar0000000000000000## II. �存関係 ### �存関係を明示的�宣言�分離�る ��ん��プログラミング言語��サ�ートライブラリを�布�る���パッケージ管�システムを�供���る。例���Perl���る[CPAN](http://www.cpan.org/)やRuby���る[Rubygems](http://rubygems.org/)����る。パッケージ管�システム�インストール�れるライブラリ��システム全体(“site packages��言�れる)�インストール�れる場���アプリケーションを�むディレクトリ�スコープ(“vendoring����“bundling��言�れる)�インストール�れる場���る。 **Twelve-Factor App��システム全体�インストール�れるパッケージ�暗黙的�存在�る���決���存���。** �����存関係を *�存関係宣言* マニフェスト�完全��厳密�宣言�る。�ら��実行時�� *�存関係分離* ツールを使����り囲ん��るシステム�ら暗黙��存関係�“�れ出�����を�証�る。完全��明示的��存関係�指定��本番環境�開発環境�両方�対���様��用�れる。 例���Ruby�使�れる[Bundler](https://bundler.io/) ���存関係宣言����マニフェスト�フォーマット��る`Gemfile`��存関係分離����`bundle exec`を�供���る。Python���れら�ステップ�2��別々�ツール�使�れる -- [Pip](http://www.pip-installer.org/en/latest/)�宣言����使�れ�[Virtualenv](http://www.virtualenv.org/en/latest/)�分離����使�れる。C言語�も[Autoconf](http://www.gnu.org/s/autoconf/)��存関係を宣言���的リンク��存関係を分離�る�����る。ツール�何��れ��存関係�宣言�分離�常�一緒�使���れ��ら�� -- ��ら�片方����Twelve-Factorを満足�る����分��る。 明示的��存関係を宣言�る利点�1���アプリケーション�新��開発者�加���際�セットアップを�純化��る����る。新��開発者��言語�ランタイム��存関係管�ツール��インストール�れ��れ��アプリケーション�コードベースを自分�開発マシン��ェックアウト�る�����る。開発者�決�られ� *ビルドコマンド* ��アプリケーション�コードを実行�る���必������も�をセットアップ��る。例���Ruby/Bundler�ビルドコマンド�`bundle install`��り�Clojure/[Leiningen](https://github.com/technomancy/leiningen#readme)��`lein deps`��る。 ���Twelve-Factor App�����るシステムツール�暗黙的�存在�も�存���。例����アプリケーション�らImageMagickや`curl`を使�場���る。�れら�ツール���ん��システム�存在�る�����アプリケーション�将��渡��実行�れ得る����システム�存在�る������る��将��システム���アプリケーション�互�性��る�ージョン�見��る���������何��証も��。アプリケーション�システムツールを必���る�ら����ツールをアプリケーション�組�込む����る。 content/zh_cn/toc.md0000644000175000056700000000171615232661434013200 0ustar000000000000000012-factors ================== ## [I. 基准代�](./codebase) ### 一份基准代�,多份部署 ## [II. �赖](./dependencies) ### 显�声明�赖关系 ## [III. �置](./config) ### 在环境中存储�置 ## [IV. �端�务](./backing-services) ### 把�端�务当作附加资� ## [V. 构建,�布,�行](./build-release-run) ### 严格分离构建和�行 ## [VI. 进程](./processes) ### 以一个或多个无状�进程�行应用 ## [VII. 端�绑定](./port-binding) ### 通过端�绑定�供�务 ## [VIII. 并�](./concurrency) ### 通过进程模型进行扩展 ## [IX. 易处�](./disposability) ### 快速�动和优雅终止�最大化�壮性 ## [X. 开�环境与线上环境等价](./dev-prod-parity) ### 尽�能的��开�,预�布,线上环境相� ## [XI. 日志](./logs) ### 把日志当作事件� ## [XII. 管�进程](./admin-processes) ### ��管�任务当作一次性进程�行 views/home.erb0000644000175000056700000000044215232661434012070 0ustar0000000000000000
<%= render_markdown('intro') %>
<%= render_markdown('background') %>
<%= render_markdown('who') %>
<%= render_markdown('toc') %>
content/it/codebase.md0000644000175000056700000000371015232661434013467 0ustar0000000000000000## I. Codebase ### Una sola codebase sotto controllo di versione, tanti deploy Un'app conforme alla metodologia twelve-factor è sempre sotto un sistema di controllo di versione, sia essa [Git](http://git-scm.com/), [Mercurial](https://www.mercurial-scm.org/), o [Subversion](http://subversion.apache.org/). Una copia della codebase è detta *code repository*, oppure più in breve *code repo* o *repo*. Una *codebase* è quindi un singolo repository (in un sistema centralizzato come Subversion), oppure un set di repo che condividono una root commit (in un sistema di controllo decentralizzato come Git). ![Una codebase, N deployment](/images/codebase-deploys.png) C'è sempre una relazione uno-ad-uno tra codebase e applicazione: * Se ci sono più codebase, non si parla più di applicazione ma di sistema distribuito. Ogni componente in un sistema distribuito è un'applicazione, e ognuna di queste applicazioni può individualmente aderire alla metodologia twelve-factor. * Se più applicazioni condividono lo stesso codice si ha una violazione del twelve-factor. La soluzione è, ovviamente, quella di sistemare il codice in modo adeguato, in modo tale da essere incluso eventualmente dove necessario tramite un [dependency manager](./dependencies). Quindi: una sola codebase per applicazione, ma ci saranno comunque tanti deployment della stessa app. Per *deploy* si intende un'istanza dell'applicazione. Può essere il software in produzione, oppure una delle varie istanze in staging. Ancora, un deploy può essere la copia posseduta dal singolo sviluppatore nel suo ambiente locale. La codebase rimane comunque sempre la stessa su tutti i deployment, anche se potrebbero essere attive diverse versioni nello stesso istante. Si pensi per esempio a uno sviluppatore che possiede dei commit in più che non ha ancora mandato in staging. Nonostante questo, comunque, rimane la condivisione della stessa codebase, nonostante la possibilità di avere più deploy della stessa app. content/it/who.md0000644000175000056700000000032715232661434012520 0ustar0000000000000000A chi è destinato questo documento? ============================== A ogni sviluppatore che costruisca applicazioni SaaS (Software As a Service), e a ogni ops che effettui il deploy e gestisca queste applicazioni. content/uk/admin-processes.md0000644000175000056700000000736215232661434015030 0ustar0000000000000000## XII. Задачі адміні�труванн� ### Виконуйте задачі адміні�труванн�/керуванн� за допомогою разових проце�ів [Формаці� проце�ів](./concurrency) є певним набором проце�ів, �кі необхідні дл� виконанн� регул�рних задач за�то�унку (наприклад, обробка веб-запитів). Разом з тим, розробникам ча�то необхідно виконувати разові адміні�тративні задачі дл� об�луговуванн� за�то�унку, такі �к: * Запу�к міграції бази даних (наприклад, `manage.py migrate` в Django, `rake db:migrate` в Rails). * Запу�к кон�олі ([REPL](http://en.wikipedia.org/wiki/Read-eval-print_loop)) дл� виконанн� довільного коду або перевірки моделі за�то�унку на діючій базі даних. Більші�ть мов надають REPL шл�хом запу�ку інтерпретатора без будь-�ких аргументів (наприклад, `python` або `perl`) або в де�ких випадках мають окрему команду (наприклад, `irb` дл� Ruby, `rails console` дл� Rails). * Запу�к разових �криптів, збережених в репозиторії за�то�унку (наприклад, `php scripts/fix_bad_records.php`). Разові проце�и адміні�труванн� �лід запу�кати в такому ж �ередовищі, в �кому запущені регул�рні [тривалі проце�и](./processes) за�то�унку. Вони запу�кають�� на базі [релізу](./build-release-run), викори�товуючи ту ж [кодову базу](./codebase) і [конфігурацію](./config), �к і будь-�кий інший проце� на базі цього релізу. Дл� уникненн� проблем з �инхронізацією код адміні�труванн� має по�тавл�ти�� з кодом за�то�унку. Дл� в�іх типів проце�ів мають викори�товувати�� однакові методи [ізол�ції залежно�тей](./dependencies). �априклад, �кщо веб-проце� Ruby викори�товує команду `bundle exec thin start`, то дл� міграції бази даних �лід викори�товувати `bundle exec rake db:migrate`. �налогічно, дл� програми на Python з Virtualenv �лід викори�товувати `bin/python` �к дл� запу�ку веб-�ервера Tornado, так і дл� запу�ку будь-�ких `manage.py` проце�ів адміні�труванн�. Методологі� дванадц�ти факторів надає перевагу мовам, �кі мають REPL "з коробки", і �кі дозвол�ють легко запу�кати разові �крипти. У локальному development �ередовищі розробник може запу�тити проце� адміні�труванн� за допомогою кон�ольної команди в�ередині директорії за�то�унку. У production �ередовищі дл� запу�ку такого проце�у розробники можуть викори�товувати ssh або інший механізм віддаленого виконанн� команд, що надаєть�� �ередовищем виконанн�.content/uk/intro.md0000644000175000056700000000403715232661434013063 0ustar0000000000000000В�туп ===== У наш ча� програмне забезпеченн� зазвичай по�тавл�єть�� у вигл�ді �ерві�ів, що називають�� *веб-за�то�унки* (web-apps) або *software-as-a-service* (SaaS). За�то�унок дванадц�ти факторів — це методологі� дл� �творенн� SaaS-за�то�унків, �кі: * Викори�товують **декларативний** формат дл� автоматизації в�тановленн� та налаштуванн�, що зводить до мінімуму витрати ча�у і коштів дл� нових розробників, що приєднують�� до проекту; * Мають **угоду** з операційною �и�темою, пропонуючи **мак�имальну перено�имі�ть** між �ередовищами виконанн�; * Придатні дл� **розгортанн�** на �уча�них **хмарних платформах**, що у�уває необхідні�ть у �ерверах та їх �и�темному адміні�труванні; * **Мінімізують різницю** між �ередовищем розробки і production �ередовищем, що дозвол�є **безперервне розгортанн�** (continuous deployment) дл� забезпеченн� мак�имальної �притно�ті розробки (agility); * Можуть **ма�штабувати��** без значних змін в ін�трументах, архітектурі і практиці розробки. Методологію дванадц�ти факторів можна викори�тати дл� за�то�унків, що напи�ані будь-�кою мовою програмуванн� та викори�товують будь-�ку комбінацію із �торонніх �лужб (бази даних, черги, кеш-пам'�ть тощо).content/de/toc.md0000644000175000056700000000226315232661434012465 0ustar0000000000000000Die zwölf Faktoren ================== ## [I. Codebase](./codebase) ### Eine im Versionsmanagementsystem verwaltete Codebase, viele Deployments ## [II. Abhängigkeiten](./dependencies) ### Abhängigkeiten explizit deklarieren und isolieren ## [III. Konfiguration](./config) ### Die Konfiguration in Umgebungsvariablen ablegen ## [IV. Unterstützende Dienste](./backing-services) ### Unterstützende Dienste als angehängte Ressourcen behandeln ## [V. Build, release, run](./build-release-run) ### Build- und Run-Phase strikt trennen ## [VI. Prozesse](./processes) ### Die App als einen oder mehrere Prozesse ausführen ## [VII. Bindung an Ports](./port-binding) ### Dienste durch das Binden von Ports exportieren ## [VIII. Nebenläufigkeit](./concurrency) ### Mit dem Prozess-Modell skalieren ## [IX. Einweggebrauch](./disposability) ### Robuster mit schnellem Start und problemlosen Stopp ## [X. Dev-Prod-Vergleichbarkeit ](./dev-prod-parity) ### Entwicklung, Staging und Produktion so ähnlich wie möglich halten ## [XI. Logs](./logs) ### Logs als Strom von Ereignissen behandeln ## [XII. Admin-Prozesse](./admin-processes) ### Admin/Management-Aufgaben als einmalige Vorgänge behandeln content/pl/admin-processes.md0000644000175000056700000000442315232661434015017 0ustar0000000000000000## XII. Zarządzanie aplikacją ### Uruchamiaj zadania administracyjne jako jednorazowe procesy [Formacja](./concurrency) jest zestawem procesów używanych przez aplikację podczas jej działania (np. obsługi zapytań z sieci). Do często wykonywanych zadań administracyjnych należą: * Wykonanie migracji bazy danych (np. `manage.py migrate` w Django, `rake db:migrate` w Railsach). * Uruchomienie konsoli (znanej również jako powłoka [REPL](http://pl.wikipedia.org/wiki/REPL)) by wykonać fragment kodu lub podejrzeć modele działającej bazy danych. Większość środowisk języków programowania udostępnia REPL poprzez wywołanie interpretera bez dodatkowych argumentów (np. `python` lub `perl`). W innych przypadkach przeznaczone są do tego osobne polecenia (np. `irb` w Ruby, `rails console` w Railsach). * Wykonywanie pojedynczych skryptów znajdujących się w repozytorium kodu aplikacji (np. `php scripts/fix_bad_records.php`). Pojedyncze zadania powinny być uruchamiane w identycznym środowisku jak [długoterminowe procesy](./processes) aplikacji. Działają w ramach tego samego [wdrożenia](./build-release-run), używając tego samego [kodu](./codebase) i [konfiguracji](./config) jak każdy inny działający proces. Kod zadania administracyjnego musi zostać dołączony do kodu aplikacji by uniknąć problemów z synchronizacją. Te same techniki [izolacji zależności](./dependencies) powinny być używane dla wszystkich typów procesów. Dla przykładu, jeśli proces sieciowy Ruby używa polecenia `bundle exec thin start`, wtedy do migracji bazy danych powinno się użyć `bundle exec rake db:migrate`. Podobnie program napisany w Pythonie używający Virtualenv powinien używać dołączonego `bin/python` by uruchomić zarówno webserver Tornado lub `manage.py` do procesów zarządzania. Aplikacja 12factor zaleca używanie języków programowania, które udostępniają powłokę REPL oraz takich w których można łatwo uruchomić pojedynczy skrypt. W środowisku lokalnym developerzy uruchamiają zadania zarządzające aplikacją poprzez bezpośrednie wywołanie polecenia w konsoli w katalogu roboczym aplikacji. We wdrożeniu produkcyjnym, developer może użyć ssh lub innego mechanizmu służącego do zdalnego wykonywania poleceń, by uruchomić ten sam proces. content/pl/disposability.md0000644000175000056700000000572115232661434014604 0ustar0000000000000000## IX. Zbywalność ### Zwiększ elastyczność aplikacji przez szybki start i bezproblemowe zamknięcie **[Procesy](./processes) aplikacji 12factor są *jednorazowe*, znaczy to, że mogą być wystartowane lub zatrzymane w dowolnym momencie.** Ułatwia to elastyczne skalowanie i szybkie wdrożenia [kodu](./codebase), zmianę [konfiguracji](./config) oraz zapewnia większą stabilność przy wdrożeniu na produkcję. Procesy powinny dążyć do **minimalizowania czasu swojego rozruchu**. W idealnej sytuacji proces powinien potrzebować kilku sekund na to aby wystartować i być gotowym na przyjmowanie zapytań. Dzięki krótkiemu czasowi startu można szybciej wykonywać kolejne [wdrożenia](./build-release-run) oraz łatwiej skalować aplikację. Zwiększa to również zdolności aplikacji do radzenia sobie z problemami, ponieważ `process manager` może bezproblemowo przenieść je na nową maszynę fizyczną, gdy zajdzie taka potrzeba. Procesy **zamykają się gdy otrzymają sygnał [SIGTERM](http://en.wikipedia.org/wiki/SIGTERM)** od managera procesów. Dla procesów sieciowych poprawne zamknięcie polega na zakończeniu nasłuchiwania na porcie usługi (skutkiem czego jest odrzucanie nowych zapytań), zakończenie obecnych, a ostatecznie zaprzestaniu działania. Wynika z tego, że zapytania HTTP są krótkie (trwają nie więcej niż kilka sekund), lub w przypadku `long pollingu` i utraty połączenia klient powinien bezproblemowo spróbować połączyć się ponownie. Dla procesów roboczych poprawnym zamknięciem jest zwrot obecnie wykonywanego zadania do kolejki. Dla przykładu w [RabbitMQ](http://www.rabbitmq.com/) działający proces może wysłać wiadomość [`NACK`](http://www.rabbitmq.com/amqp-0-9-1-quickref.html#basic.nack); w [Beanstalkd](https://beanstalkd.github.io), zadanie jest zwracane do kolejki automatycznie, gdy tylko proces się rozłączy. Systemy bazujące na blokadach zasobów jak [Delayed Job](https://github.com/collectiveidea/delayed_job#readme) muszą upewnić się, że odblokowały zajmowany wcześniej zasób. W tym modelu ważne jest to, że wszystkie zadania są [wielobieżne](http://pl.wikipedia.org/wiki/Wielobieżność), co zazwyczaj jest osiągane przez zebranie wyników w transakcję lub uczynienie operacji [idempotentną](http://pl.wikipedia.org/wiki/Idempotentno%C5%9B%C4%87). Architektura aplikacji 12factor jest również zaprojektowana by działające procesy zostały poprawnie **zakończone w razie awarii** sprzętu. Podczas gdy taka sytuacja jest o wiele rzadsza niż otrzymanie sygnału `SIGTERM`, wciąż może mieć miejsce. Zalecanym podejściem w takich przypadkach jest stosowanie serwerowego systemu kolejkowania zadań, jak Beanstalkd, który zwróci zadanie do kolejki, gdy klient się rozłączy, bądź minie maksymalny czas obsługi pojedynczego zapytania. Architektura ["crash-only"](http://lwn.net/Articles/191059/) jest więc rozwinięciem takiego [konceptu](http://docs.couchdb.org/en/latest/intro/overview.html). content/uk/logs.md0000644000175000056700000001033615232661434012673 0ustar0000000000000000## XI. Журналюванн� ### Сприймайте журналюванн� (logs) �к потоки подій *Журналюванн�* забезпечує наочне у�вленн� про поведінку запущеного за�то�унку. Зазвичай у �ерверних �ередовищах журнали запи�ують�� у файл на ди�ку ("logfile"), але це лише один з форматів виведенн�. Журнал — це [потік](https://adam.herokuapp.com/past/2011/4/1/logs_are_streams_not_files/) агрегованих, впор�дкованих за ча�ом подій, зібраних з потоків виведенн� в�іх запущених проце�ів і �торонніх �ерві�ів. Журнал в �ирому вигл�ді, �к правило, має тек�товий формат з однією подією на кожен р�док (хоча тра�уванн� вин�тків можуть займати кілька р�дків). Журнали не мають фік�ованого початку і кінц�, потік безперервний поки працює за�то�унок. **За�то�унок дванадц�ти факторів ніколи не займаєть�� маршрутизацію і зберіганн�м �вого потоку виведенн�.** За�то�унок не повинен запи�увати журнал у файл або керувати файлами журналів. Замі�ть цього кожен запущений проце� запи�ує �вій потік подій без буферизації в �тандартне виведенн� `stdout`. В development �ередовищі розробник має можливі�ть перегл�дати цей потік в терміналі, щоб �по�терігати за поведінкою за�то�унку. В staging та production розгортанн�х потік виведенн� кожного проце�у перехоплюєть�� �ередовищем виконанн�, збираєть�� разом з у�іма іншими потоками виведенн� за�то�унку і �пр�мовуєть�� до одного або кількох кінцевих пунктів призначенн� дл� перегл�ду і довго�трокового архівуванн�. Ці кінцеві пункти призначенн� не видимі дл� за�то�унку і не налаштовують�� ним, вони керують�� �ередовищем виконанн�. Дл� цього можуть бути викори�тані маршрутизатори журналів з відкритим вихідним кодом (наприклад, [Logplex](https://github.com/heroku/logplex) та [Fluentd](https://github.com/fluent/fluentd)). Потік подій за�то�унку може бути направлений у файл або перегл�нутий у терміналі в режимі реального ча�у. �айважливішим є те, що потік може бути направлений у �и�тему індек�уванн� і аналізу журналів, таку �к [Splunk](http://www.splunk.com/), або �и�тему зберіганн� даних загального призначенн�, таку �к [Hadoop/Hive](http://hive.apache.org/). Ці �и�теми мають широкі можливо�ті і гнучкі�ть дл� детального аналізу поведінки за�то�унку прот�гом тривалого ча�у, в тому чи�лі: * Ви�вленн� конкретних подій у минулому; * Побудова графіків трендів (наприклад, кількі�ть запитів за хвилину); * �ктивне оповіщенн� відповідно до визначених кори�тувачем еври�тичних правил (наприклад, попередженн�, коли кількі�ть помилок за хвилину перевищує певний поріг). content/zh_cn/disposability.md0000644000175000056700000000470015232661434015266 0ustar0000000000000000## IX. 易处� ### 快速�动和优雅终止�最大化�壮性 **12-Factor 应用的 [进程](./processes) 是 *易处�(disposable)*的,��是说它们�以瞬间开�或�止。** 这有利于快速�弹性的伸缩应用,迅速部署�化的 [代�](./codebase) 或 [�置](./config) ,稳�的部署应用。 进程应当追求 **最��动时间** 。 �想状�下,进程从敲下命令到真正�动并等待请求的时间应该�需很短的时间。更少的�动时间�供了更��的 [�布](./build-release-run) 以�扩展过程,此外还增加了�壮性,因为进程管�器�以在授�情形下容易的将进程�到新的物�机器上。 进程 **一旦接收 [终止信�(`SIGTERM`)](http://en.wikipedia.org/wiki/SIGTERM) 就会优雅的终止** 。就网络进程而言,优雅终止是指�止监��务的端�,�拒�所有新的请求,并继续执行当�已接收的请求,然�退出。此类型的进程所��的�求是HTTP请求大多都很短(�会超过几秒钟),而在长时间轮询中,客户端在丢失连接�应该马上�试�连。 对于 worker 进程�说,优雅终止是指将当�任务退回队列。例如,[RabbitMQ](http://www.rabbitmq.com/) 中,worker �以��一个[`NACK`](http://www.rabbitmq.com/amqp-0-9-1-quickref.html#basic.nack)信�。 [Beanstalkd](https://beanstalkd.github.io) 中,任务终止并退回队列会在worker断开时自动触�。有�机制的系统诸如 [Delayed Job](https://github.com/collectiveidea/delayed_job#readme) 则需�确定释放了系统资�。此类型的进程所��的�求是,任务都应该 [���执行](http://en.wikipedia.org/wiki/Reentrant_%28subroutine%29) , 这主�由将结果包装进事务或是使���作 [幂等](http://en.wikipedia.org/wiki/Idempotence) �实现。 进程还应当**在�对�然死亡时���壮**,例如底层硬件故障。虽然这�情况比起优雅终止�说少之�少,但终究有�能�生。一�推�的方�是使用一个�壮的�端队列,例如 [Beanstalkd](https://beanstalkd.github.io) ,它�以在客户端断开或超时�自动退回任务。无论如何,12-Factor 应用都应该�以设计能够应对�外的��优雅的终结。[Crash-only design](http://lwn.net/Articles/191059/) 将这�概念转化为 [�乎逻辑的�论](http://couchdb.apache.org/docs/overview.html)。 content/ja/logs.md0000644000175000056700000000625215232661434012650 0ustar0000000000000000## XI. ログ ### ログをイベントストリーム���扱� *ログ* �実行中�アプリケーション�挙動を�視化�る。サー�ーベース�環境���ログ�一般的�ディスク上�ファイル(“ログファイル�)�書�込�れる。����れ�出力フォーマット�一������。 ログ������実行中�プロセス��ックエンドサービス�出力ストリーム�ら�集�れ�イベント��集約�れ�時刻順�並�られ�[ストリーム](https://adam.herokuapp.com/past/2011/4/1/logs_are_streams_not_files/)��る。生�状態�ログ��通常1行�1��イベントを表�テキストフォーマット��る(例外��ックトレース�複数行�渡る場�も�る�)。ログ��固定�始�り�終�り����アプリケーション�稼動���る�り�れ続�る。 **Twelve-Factor App�アプリケーション�出力ストリーム��り先やストレージ����一切関知���。** アプリケーション�ログファイル�書�込ん�り管��よ���る������。代�り���れ�れ�実行中�プロセス�イベントストリームを`stdout`(標準出力)��ッファリング���書���。ローカル��開発中�開発者���ストリームをターミナル�フォアグラウンド�見る����アプリケーション�挙動を観察�る。 ステージングや本番�デプロイ����れ�れ�プロセス�ストリーム�実行環境��ら�られ�アプリケーション�ら�他�����ストリーム�一緒�並�られ�表示や長期アーカイブ����1�も���複数�最終目的地��られる。�れら��存����目的地��アプリケーション�ら�見る��も設定�る��も����代�り�実行環境�よ��完全�管��れる。[Logplex](https://github.com/heroku/logplex) や [Fluentd](https://github.com/fluent/fluentd) ���オープンソース�ログルーター���目的�利用��る。 アプリケーション�イベントストリーム��ファイル��られ�り�ターミナル�tailを使��リアルタイム�見られ�り�る。最も���用途����ストリーム��[Splunk](http://www.splunk.com/)���ログインデックス・解�システムや�[Hadoop/Hive](http://hive.apache.org/)���汎用データウェア�ウスシステム��られる��も�る。�れら�システム��長期�渡��アプリケーション�挙動を確��る���大��力�柔軟性をも�ら��次�よ�������るよ���る。 * �去�特定�イベントを見��る。 * 大��スケール�傾�をグラフ化�る。(1分��り�リクエスト数��) * ユーザー定義�ヒューリスティクス�基���素早�アラートを出�。(1分��り�エラー数��る閾値を超��場��アラートを出���) content/ru/port-binding.md0000644000175000056700000000666015232661434014337 0ustar0000000000000000## VII. Прив�зка портов (Port binding) ### Эк�портируйте �ерви�ы через прив�зку портов Иногда веб-приложени� запу�кают внутри контейнера веб-�ервера. �апример, PHP-приложение может быть запущено как модуль внутри [Apache HTTPD](http://httpd.apache.org/), или Java-приложение может быть запущено внутри [Tomcat](http://tomcat.apache.org/). **Приложение двенадцати факторов �вл�ет�� полно�тью �амодо�таточным** и не полагает�� на инъекцию веб-�ервера во врем� выполнени� дл� того, чтобы �оздать веб-�ерви�. Веб-приложение **�к�портирует HTTP-�ерви� путём прив�зки к порту** и про�лушивает запро�ы, по�тупающих на �тот порт. Во врем� локальной разработки разработчик переходит по URL-адре�у вида `http://localhost:5000/`, чтобы получить до�туп к �ерви�у, предо�тавл�емым его приложением. При развёртывании �лой маршрутизации обрабатывает запро�ы к общедо�тупному хо�ту и перенаправл�ет их к прив�занному к порту веб приложению. Это обычно реализует�� � помощью [объ�влени� зави�имо�ти](./dependencies) дл� добавлени� библиотеки веб-�ервера к приложению такой, как [Tornado](http://www.tornadoweb.org/) в Python, [Thin](http://code.macournoyer.com/thin/) в Ruby, и [Jetty](http://www.eclipse.org/jetty/) в Java и других �зыках на о�нове JVM. Это прои�ходит полно�тью в *про�тран�тве пользовател�*, то е�ть в коде приложени�. Контрактом �о �редой и�полнени� �вл�ет�� прив�зка приложени� к порту дл� обработки запро�ов. HTTP -- �то не един�твенный �ерви�, который может быть �к�портирован по�ред�твом прив�зки порта. Почти любой тип �ерверного ПО может быть запущен как проце��, прив�занный к порту и ожидающий вход�щих запро�ов. Примеры �того включают [ejabberd](http://www.ejabberd.im/) (предо�тавл�ет [XMPP протокол](http://xmpp.org/)) и [Redis](http://redis.io/) (предо�тавл�ет [Redis протокол](http://redis.io/topics/protocol)). Также обратите внимание, что подход прив�зки к порту означает, что одно приложение может вы�тупать [�торонней �лужбой](./backing-services) дл� другого приложени� путём предо�тавлени� URL-адре�а �тороннего приложени� как идентификатор ре�ур�а в конфигурации потребл�ющего приложени�. content/th/codebase.md0000644000175000056700000000656315232661434013477 0ustar0000000000000000## I. Codebase ### มีเพียง codebase เดียวที่ติดตามด้วย version control, มีหลาย deploy Twelve-factor app สามารถติดตามได้เสมอด้วย version control เช่น [Git](http://git-scm.com/), [Mercurial](https://www.mercurial-scm.org/), หรือ [Subversion](http://subversion.apache.org/) สำเนาของ�านข้อมูลติดตาม version เรีย�ว่า *code repository* หรือเรีย�สั้นๆว่า *code repo* หรือเรีย�เพียง�ค่ *repo* *codebase* เป็น repo เดียวใดๆ (ในระบบ version control ที่มีศูนย์�ลางอย่างเช่น Subversion) หรือเป็นเซตของ repo ซึ่ง�บ่งปัน root commit (ในระบบ version control ที่ไม่มีศูนย์�ลางอย่างเช่น Git) ![One codebase maps to many deploys](/images/codebase-deploys.png) มีความสัมพันธ์�บบ หนี่ง-ต่อ-หนึ่ง เสมอ ระหว่าง codebase �ละ app: * ถ้ามีหลาย codebase, จะไม่เป็น app -- จะเป็นระบบ�ระจาย (distributed system) �ต่ละคอมโพ�นนท์ในระบบ�ระจายเป็น app, �ละ�ต่ล่ะคอมโพ�นนท์จะป�ิบัติตาม twelve-factor * ถ้ามีหลาย app ที่ใช้งาน code เดียว�ันจะเป็น�ารละเมิด twelve-factor วิธี��้ปั�หาในที่นี้คือเอา code ที่ใช้ร่วม�ันทำเป็น libraries ซึ่งสามารถเข้า�ับ factor [dependency manager](./dependencies) มีเพียงหนึ่ง codebase ต่อ app �ต่มีหลาย deploy หรือ�ารนำไปใช้งานของ app, หนึ่ง *deploy* จะรัน instance ของ app นี่เป็น production site �ละมีหนึ่งหรือมา�ว่า staging site เพิ่มเติม, developer ทุ�คนจะมีสำเนาเดียวของ app ที่ทำงานอยู่บนสิ่ง�วดล้อมพัฒนาในเครื่องของตนเอง ซึ่งจัดได้ว่าเป็น deploy ด้วยเช่น�ัน Codebase จะเหมือน�ันตลอดทั้ง deploy ทั้งหมด �ม้ว่า version จะ�ต�ต่าง�ันอาจจะทำงานใน�ต่ล่ะ deploy ตัวอย่างเช่น developer มีบาง commit ที่ยังไม่ได้ deploy ไปยัง staging ซึ่ง staging จะมีบาง commit ที่ยังไม่ได้ deploy ไปยัง production �ต่ทั้งหมดจะใช้ codebase เดียว�ัน ดังนั้นจะต้องทำให้ระบุตัวตนได้ว่าเป็น deploy ที่�ต�ต่าง�ันของ app เดียว�ัน content/th/intro.md0000644000175000056700000000415415232661434013057 0ustar0000000000000000บทนำ ============ ในยุคสมัยใหม่ ซอฟต์�วร์ถู�ส่งมอบทั่วไปเป็นบริ�าร: เรีย�ว่า *web apps*, หรือ *software-as-service*. twelve-factor app เป็นหลั�ารสำหรับสร้าง�อพพลิเคชัน software-as-a-service ที่: * ใช้รูป�บบ **declarative** สำหรับติดตั้งระบบอัตโนมัต เพื่อลดเวลา�ละค่าใช้จ่ายสำหรับนั�พัฒนาใหม่ที่เข้าร่วม�ับโครง�าร; * มี **clean contract** �ับระบบป�ิบัติ�ารที่�อพพลิเคชันทำงานด้วย นำเสนอ **maximun portibility** ระหว่างสิ่ง�วดล้อมที่ระบบทำงาน; * เหมาะสมสำหรับ **deployment** บน **cloud platforms** สมัยใหม่, ลดความต้อง�ารของเซิร์ฟเวอร์�ละผู้ดู�ลระบบ; * **Maximized divergence** ระหว่าง�ารพัฒนา�ละ�ารใช้งานจริง ด้วย�ารใช้ **continuous deployment** เพื่อเพิ่มความเร็วสูงสุด; * �ละสามารถ **scale up** โดยปราศจา��ารเปลี่ยน�ปลงของ เครื่องมือ สถาปัตย�รรม หรือ�นวทางป�ิบัตของ�ารพัฒนา หลั��าร twelve-factor สามารถประยุ�ต์ใช้ได้�ับ�อพพลิเคชันที่เขียนด้วยภาษาใดๆ �ละซึ่งใช้ร่วม�ับบริ�ารสนับสนุนใดๆ (�านข้อมูล, คิว, หน่วยความจำเคช เป็นต้น).content/tr/build-release-run.md0000644000175000056700000000555115232661434015257 0ustar0000000000000000## V. Derleme, Sürüm, Çalıştırma ### Derleme ve çalıştırma aşamalarını tam olarak ayırma Bir [kod tabanı](./codebase) üç aşamada dağıtıma dönüşebilir: * *Derleme aşaması* kod deposunun *derleme* olarak bilinen çalıştırılabilir pakette çeviren bir dönüşümdür.Dağıtım süreci tarafından belirlenen bir commit'deki kodun versiyonunu kullanırken, derleme aşaması sağlayıcı [bağımlılıkları](./dependencies) getirir ve binary'leri derler. * *Sürüm aşaması*, derleme aşaması tarafından üretilmiş derlemeyi alır ve dağıtımı şu anki [yapılandırmasıyla](./config) birleştirir. Son durumda oluşan *sürüm* derleme ve yapılandırmanın ikisinide içerir ve çalışma ortamındaki doğrudan çalıştırma için hazırdır. * *Çalıştırma evresi* (aynı zamanda "runtime" olarak bilinir) seçili sürümün karşılığındaki uygulamanın [süreçlerini](./processes) bazı setlerini başlatarak, çalıştırma ortamındaki uygulamayı çalıştırır. ![Kod, sürüm oluşturmak için yapılandırmayla birleşmiş derlemeye dönüşür.](/images/release.png) **On iki faktör uygulamaları derleme,sürüm ve çalıştırma aşamaları arasında mutlak ayırmayı kullanır.** Örneğin, koddaki değişiklikleri derleme aşamasına geri döndürmenin bir yolu olmadığı için çalışma zamanında kodda değişiklik yapmak imkansızdır. Dağıtım araçları genel olarak sürüm yönetim araçlarını önerir, en dikkat çekeni bir önceki sürüme geri dönme yeteneğidir. Örneğin, [Capistrano](https://github.com/capistrano/capistrano/wiki) dağıtım aracı sürümleri, şu anki sürümün şimdiki sürüm dizinine bir sembolik link olduğu, `releases` adlı alt dizinde depolar. `rollback` komutu, bir önceki sürüme hızlı geri dönüşü kolaylaştırır. Her sürüm her zaman sürümlerin zaman damgası gibi (`2011-04-06-20:32:17` gibi) özel sürüm ID'sine veya artış numarasına (`v100` gibi) sahip olmalıdır. Sürümler yalnızca eklemeli bir defterdir ve bir kere oluşturulduğu zaman dönüştürülemez. Herhangi bir değişiklik yeni bir sürüm oluşturmalıdır. Derlemeler, herhangi bir zamanda yeni kod dağıtıldığında uygulama geliştiricileri tarafından başlatılır. Çalışma zamanı yürütmesi, kontras tarafından, sunucu tekrar çalıştırılması veya çökmüş süreçlerin süreç yöneticisi tarafından tekrar başlatılması gibi durumlarda otomatik olarak olabilir. Bunun sonucunda, çalıştırma evresi, gecenin bir yarısında çalışan geliştiriciler yokken uygulamanın çalışmasını engelleyen problemler uygulamanın bozulmasına yol açabildiği için, olabildiği kadar az sayıda hareketli bölüm olarak tutulmalıdır. Derleme evresinde, hatalar dağıtımı çalıştıran geliştiriciler için her zaman ön planda olduğu için daha fazla karış olabilir. locales/th.yml0000644000175000056700000000036515232661434012075 0ustar0000000000000000th: # Name of language listed in locales menu language: ภาษาไทย (th) # A text to make known that the article is a translation not an original. # Empty for English, original. translation: "�ปลภาษาไทย" content/es/build-release-run.md0000644000175000056700000000625515232661434015243 0ustar0000000000000000## V. Construir, distribuir, ejecutar ### Separar completamente la etapa de construcción de la etapa de ejecución El [código base](./codebase) se transforma en un despliegue (que no es de desarrollo) al completar las siguientes tres etapas: * La *etapa de construcción* es una transformación que convierte un repositorio de código en un paquete ejecutable llamado *construcción* (una "build"). En la etapa de construcción se traen todas las [dependencias](./dependencies) y se compilan los binarios y las herramientas usando una versión concreta del código correspondiente a un commit especificado por el proceso de despliegue. * En la *fase de distribución* se usa la construcción creada en la fase de construcción y se combina con la [configuración](./config) del despliegue actual. Por tanto, la *distribución* resultante contiene tanto la construcción como la configuración y está lista para ejecutarse inmediatamente en el entorno de ejecución. * La *fase de ejecución* (también conocida como "runtime") ejecuta la aplicación en el entorno de ejecución, lanzando un conjunto de [procesos](./processes) de una distribución concreta de la aplicación. ![El código se convierte en una construcción, que se combina con la configuración para crear una distribución.](/images/release.png) **Las aplicaciones "twelve-factor" hacen una separación completa de las fases de construcción, de distribución y de ejecución.** Por ejemplo, es imposible hacer cambios en el código en la fase de ejecución, porque no hay una manera de propagar dichos cambios a la fase de construcción. Las herramientas de despliegue ofrecen, normalmente, herramientas de gestión de distribuciones (releases). La capacidad de volver a una versión anterior es especialmente útil. Por ejemplo, la herramienta de despliegues [Capistrano](https://github.com/capistrano/capistrano/wiki) almacena distribuciones en un subdirectorio llamado `releases`, donde la distribución actual es un enlace simbólico al directorio de la distribución actual. Su mandato `rollback` hace fácil y rápidamente el trabajo de volver a la versión anterior. Cada distribución debería tener siempre un identificador único de distribución, como por ejemplo una marca de tiempo (timestamp) de la distribución (`2011-04-06-20:32:17`) o un número incremental (como `v100`). Las distribuciones son como un libro de contabilidad, al que solo se le pueden agregar registros y no pueden ser modificados una vez son creados. Cualquier cambio debe crear una nueva distribución. Cada vez que un desarrollador despliega código nuevo se crea una construcción nueva de la aplicación. La fase de ejecución, en cambio, puede suceder automáticamente, por ejemplo, cuando se reinicia un servidor, o cuando un proceso termina inesperadamente siendo reiniciado por el gestor de procesos. Por tanto, la fase de ejecución debería mantenerse lo más estática posible, ya que evita que una aplicación en ejecución pueda causar una interrupción inesperada, en mitad de la noche, cuando no hay desarrolladores a mano. La fase de construcción puede ser más compleja, ya que los errores siempre están en la mente de un desarrollador que dirige un despliegue. content/fr/disposability.md0000644000175000056700000000627415232661434014604 0ustar0000000000000000## IX. Jetable ### Maximisez la robustesse avec des démarrages rapides et des arrêts gracieux **Les [processus](./processes) des applications 12 facteurs sont *jetables*, c'est-à-dire qu'ils peuvent être démarrés ou stoppés en un instant.** Cela simplifie un rapide grossissement vertical, le déploiement rapide du [code](./codebase) ou de changements dans la [configuration](./config), ainsi que la robustesse des déploiements de production. Les processus doivent viser à **minimiser le temps de démarrage**. Idéalement, un processus prend quelques secondes entre le moment où une commande le lance et celui où il est en marche et prêt à recevoir des requêtes ou du travail. Un court temps de démarrage rend les processus de [release](./build-release-run) et de scalabilité verticale plus agiles; il aide également à la robustesse, car les gestionnaires de processus peuvent plus facilement déplacer des processus vers de nouvelles machines physiques lorsque c'est nécessaire. Les processus **s'éteignent gracieusement lorsqu'ils reçoivent un signal [SIGTERM (fr)](https://fr.wikipedia.org/wiki/SIGTERM)** du gestionnaire de processus. Pour un processus web, s'éteindre en douceur se fait en arrêtant d'écouter sur le port de service (refusant, par la même occasion, toute nouvelle requête), en permettant à la requête courante de se terminer, et en quittant ensuite. Ce qui est implicite dans ce modèle, c'est que les requêtes sont courtes (pas plus de quelques secondes), ou dans le cas de longues requêtes, les clients doivent pouvoir tenter de se reconnecter sans problème lorsque la connection est perdue. Pour un processus de worker, s'éteindre gracieusement est réalisé en renvoyant le travail en cours dans la file de travaux. Par exemple, avec [RabbitMQ](http://www.rabbitmq.com/) le worker peut envoyer un message [`NACK`](http://www.rabbitmq.com/amqp-0-9-1-quickref.html#basic.nack); avec [Beanstalkd](https://beanstalkd.github.io), le travail est renvoyé dans la file automatiquement dès qu'un worker se déconnecte. Les systèmes basés sur des verrous, comme [Delayed Job](https://github.com/collectiveidea/delayed_job#readme) doivent s'assurer de supprimer le verrou de leur travail en cours. Il est implicite dans ce modèle que toutes les tâches sont [réentrantes (fr)](http://fr.wikipedia.org/wiki/R%C3%A9entrance), ce qui est réalisé en englobant les résultats dans une transaction, ou en rendant l'opération [idempotente (fr)](http://fr.wikipedia.org/wiki/Idempotence). Les processus doivent également être **robustes face aux morts subites**, dans le cas d'une panne du hardware sous-jacent. Bien que ce soit bien moins courant qu'un arrêt gracieux avec `SIGTERM`, cela peut arriver malgré tout. L'approche recommandée est l'utilisation d'un backend robuste de files de messages, tel que Beanstalkd, capable de renvoyer les tâches dans la file lorsqu'un client se déconnecte ou ne répond plus. Dans les deux cas, une application 12 facteurs est structurée pour gérer des fins inattendues et non-gracieuses. Le [design crash-only (en)](http://lwn.net/Articles/191059/) amène ce concept à sa [conclusion logique (en)](http://docs.couchdb.org/en/latest/intro/overview.html). content/th/background.md0000644000175000056700000000566215232661434014050 0ustar0000000000000000ประวัติ ========== ผู้มีส่วนร่วมของเอ�สารนี้ได้มีส่วนเ�ี่ยวข้องโดยตรง�ับ�ารพัฒนา�ละ�ารใช้งาน�อพพลิเคชันจำนวนมา� �ละเ�ี่ยวข้องทางอ้อมสำหรับ�ารพัฒนา �ารดำเนินงาน �ละ�ารขยายขนาดของ�อพพลิเคชันจำนวมมหาศาลผ่านงานของเราที่�พลตฟอร์ม Heroku เอ�สารนี้สังเคราะห์จา�ประสบ�ารณ์�ละ�ารสังเ�ตทั้งหมดของพว�เราบน�อพพลิเคชัน software-as-a-service ที่หลา�หลายจำนวนมา� เป็นสามเหลียมของ�นวทางป�ิบัตในอุดมคติสำหรับ�ารพัฒนา�อพพลิเคชัน ให้ความสนใจเป็นพิเศษ�ับพลวัตของ�ารเจริ�เติบโตของ�อพพลิเคชันในช่วงเวลาหนึ่ง พลวัตของ�ารมีส่วนร่วมระหว่างนั�พัฒนาที่ทำงาน�ับ codebase ของ�อพพลิเคชัน �ละหลี�เลี่ยง�ารใช้จ่ายของซอฟต์�วร์. �รงจูงใจของเราเพื่อสร้างความตระหนั�ของปั�หาระบบบางอย่างที่เราเห็นใน�ารพัฒนา�อพพลิเคชันสมัยใหม่ เพื่อให้คำศัพย์ที่ใช้ร่วม�ันสำหรับ�ารพูดคุยเ�ี่ยว�ับปั�หาเหล่านี้ �ละนำเสนอ�นวทาง��้ไข�นว�ว้างสำหรับปั�หาเหล่านี้พร้อม�ับคำศัพท์ที่ใช้ประ�อบ�ัน รูป�บบนี้ได้รับ�รงบันดาลใจจา�หนังสือของ Martin Fowler *Patterns of Enterprise Application Architecture* �ละ *Refactoring*. content/tr/admin-processes.md0000644000175000056700000000457515232661434015041 0ustar0000000000000000## XII. Yönetici Süreci ### Yönetici/yönetim görevlerini tek seferlik işlem olarak çalıştırma [Süreç oluşumu](./concurrency) uygulama çalışırken uygulamanın sıradan işlerini (web isteklerini idare etmek gibi) yapmakta kullanılan süreçlerin bir dizisidir. Ayrı olarak, geliştiriciler çoğunlukla uygulamanın bir kereye mahsus yönetimsel veya bakım görevlerini yapmayı dileyecekler, şunun gibi: * Veri tabanı göçü çalıştırmak (Django'da `manage.py migrate`, Rails'de `rake db:migrate`). * Konsolu ([REPL](http://en.wikipedia.org/wiki/Read-eval-print_loop) kabuğu olarakta bilinir), rastgele kodu çalıştırmak veya canlı veritabanına karşılık uygulamanın modellerini denetlemek için çalıştırmak. Çoğu dil hiç bir arguman olmadan (`python` veya `perl`), yorumlayıcı veya bazı durumlarda ayrı komutlarla (Ruby için `irb`, Rails için `rails console`) çalıştırarak bir REPL sağlar. * Uygulamanın deposuna commit'lenmiş betikleri çalıştırmak (`php scripts/fix_bad_records.php`). Bir kerelik yönetici süreçleri uygulamanın sıradan [uzun çalışan süreçleri](./processes) gibi aynı ortamlarda çalışmalıdır. Onlar herhangi bir sürecin çalıştığı gibi [sürüme](./build-release-run) karşı aynı [kod tabanı](./codebase) ve [yapılandırmayı](./config) kullanarak çalışır. Yönetici uygulama kodunu senkronizasyon sorunundan kaçınmak için yüklemelidir. Aynı [bağımlılık yalıtımı](./dependencies) teknikleri bütün süreç yönetiminde kullanılmalıdır. Örneğin, eğer Ruby web süreçleri `bundle exec thin start` komutunu kullanıyorsa, veri tabanı göçü `bundle exec rake db:migrate` komutu kullanmalıdır. Aynı durumda, Virtualenv kullanan bir Python programı, Tornado web sunucusu ve herhangi bir `manage.py` yönetici süreçlerinin ikisini de çalıştırabilmek için `bin/python` kullanmalıdır. On iki faktör, REPL kabuğunu kural dışı sağlayan ve tek seferlik betikleri çalıştırmayı kolaylaştıran dilleri fazlasıyla destekler. Yerel dağıtımda, geliştiriciler uygulamanın kontrol dizinindeki açık kabuk komutuyla tek seferlik yönetici süreçlerini çalıştırır. Ürün dağıtımında, geliştiriciler bu gibi bir süreci çalıştırmak için ssh veya dağıtımın çalışma ortamı tarafından sağlanan diğer uzak komut çalıştırma mekanizmasını kullanabilir. README.md0000644000175000056700000000313615232661434010573 0ustar0000000000000000# Introduction This is a sample 12factor application that can be deployed on Kubernetes using Epinio. The 12factor application is a simple ruby web app with pages which explain about the 12 factors/principles to be followed while developing your cloud-native application. Note: This is the simplest ruby web app with no complexities. For a more complicated ruby app, you can go to [Ruby App](https://github.com/epinio/example-rails) # Deploy ## Step 1 - Create a cluster ```bash bash> k3d cluster create epinio -p 80:80 -p 443:443 ``` ## Step 2 - Download epinio cli Find the artifact that matches your OS and architecture by visiting the latest release here: https://github.com/epinio/epinio/releases You need to download that binary and put it in your PATH. Something like this should work on Linux (replace the link with right one for your binary): ```bash # Download the binary bash> wget https://github.com/epinio/epinio/releases/download/v0.7.1/epinio-linux-x86_64 # Make the binary executable bash> chmod +x epinio-linux-x86_64 # Put epinio in your PATH bash> mv epinio-linux-x86_64 /usr/bin/epinio # Enable epinio autocompletion bash> epinio completion bash > comp bash> source comp ``` ## Step 3 - Install epinio Follow the Epinio installation guide [here](https://docs.epinio.io/installation). ## Step 4 - Clone 12factor repo ```bash git clone https://github.com/epinio/example-12factor.git cd example-12factor ``` ## Step 5 - Push 12factor app ```bash epinio push -n app1 ``` ## Step 6 - Visit website You will recieve a URL at the end of the `push` process. Use that url to access your 12factor app. locales/pl.yml0000644000175000056700000000033115232661434012066 0ustar0000000000000000pl: # Name of language listed in locales menu language: "Polski (pl)" # A text to make known that the article is a translation not an original. # Empty for English, original. translation: "- edycja polska" content/ja/who.md0000644000175000056700000000043615232661434012477 0ustar0000000000000000��ドキュメント�対象者 ============================== サービス���動�アプリケーションを開発���る����開発者。�よ���よ��アプリケーションをデプロイ���管����るインフラエンジニア。 content/ko/disposability.md0000644000175000056700000000664715232661434014612 0ustar0000000000000000## IX. �기 가능(Disposability) ### 빠른 시작과 그레�스풀 셧다운(graceful shutdown)� 통한 안정성 극대화 **Twelve-Factor App� [프로세스](./processes)는 *간단하게 �기 가능*합니다. 즉, 프로세스는 바로 시작하거나 종료� 수 있습니다.** �러한 �성� 신축성 있는 확장과 [코드](./codebase)나 [설정](./config)� 변화를 빠르게 배�하는 것� 쉽게 하며, production 배�를 안정성 있게 해�니다. 프로세스는 **시작 시간� 최소화**하�� 노력해야합니다. ���으로, 프로세스는 실행 커맨드가 실행� 뒤 몇 초만� 요청�나 작업� 받� 수 있�� 준비 �니다. 짧� 실행 시간� [릴리즈](./build-release-run) 작업과 확장(scale up)� � 민첩하게 �루어질 수 있게 합니다. �한 프로세스 매니저가 필요� 따� 쉽게 프로세스를 새로운 머신으로 프로세스를 옮길 수 있기 때문� 안정성� 높아집니다. 프로세스는 프로세스 매니저로부터 **[SIGTERM](http://en.wikipedia.org/wiki/SIGTERM) 신호를 받았� 때 그레�스풀 셧다운(graceful shutdown)� 합니다.** 웹프로세스� 그레�스풀 셧다운 과정�서는 서비스 �트� 수신� 중지하고(그럼으로� 새로운 요청� 거절함), 현재 처리 중� 요청� �나길 기다린 뒤� 프로세스가 종료 �게 �니다. � 모�� 암묵�으로 HTTP 요청� 짧다는 가정(기�해야 몇 초)� 깔고 있습니다. long polling� 경우�는 ���언트가 연결� �긴 시�� 바로 다시 연결� 시�해야 합니다. worker 프로세스� 경우, 그레�스풀 셧다운� 현재 처리중� 작업� 작업 �로 ��리는 방법으로 구현�니다. 예를 들어, [RabbitMQ](http://www.rabbitmq.com/)�서는 worker는 [`NACK`](http://www.rabbitmq.com/amqp-0-9-1-quickref.html#basic.nack)� 메시지�로 보낼 수 있습니다. [Beanstalkd](https://beanstalkd.github.io)�서는 woker와� 연결� �기면 때 ��으로 작업� �로 ��립니다. [Delayed Job](https://github.com/collectiveidea/delayed_job#readme)와 같� Lock-based 시스템들� 작업 레코드� 걸어놨� lock� 확실하게 풀어놓� 필요가 있습니다. � 모�� 암묵�으로 모든 작업� [재입력 가능(reentrant)](http://en.wikipedia.org/wiki/Reentrant_%28subroutine%29)하다고 가정합니다. �는 보통, 결과를 트랜잭션으로 �싸거나 요청� [멱등(idempotent)](http://en.wikipedia.org/wiki/Idempotence)하게 함으로� 구현� 수 있습니다. 프로세스는 하드웨어 �러� �한 **갑작스러운 죽��� 견고해야합니다.** �러한 사태는 `SIGTERM`� �한 그레�스풀 셧다운� 비하면 드문 ��지만, 그럼�� 발�할 수 있습니다. �런 �� 대한 대책으로 Beanstalkd와 같� 견고한 �잉 백엔드를 사용하는 것� 권장합니다. �러한 백엔드는 ���언트가 접�� �기거나, 타임 아웃� 발�했� 때, 작업� �로 ��립니다. Twelve-Factor App� 예기치 못한, 우아하지 않� 종료� 처리할 수 있�� 설계�니다. [Crash-only design](http://lwn.net/Articles/191059/)�서는 [논리�� 결론](http://docs.couchdb.org/en/latest/intro/overview.html)으로 �러한 컨셉� 가져왔습니다. content/ru/dev-prod-parity.md0000644000175000056700000002110315232661434014756 0ustar0000000000000000## X. Паритет разработки/работы приложени� ### Держите окружени� разработки, промежуточного развёртывани� (staging) и рабочего развёртывани� (production) мак�имально похожими И�ториче�ки �уще�твуют значительные различи� между разработкой (разработчик делает живые изменени� на локальном [развёртывании](./codebase) приложени�) и работой приложени� (развёртывание приложени� � до�тупом к нему конечных пользователей). Эти различи� про�вл�ют�� в трёх обла�т�х: * **Различие во времени:** разработчик может работать � кодом, который попадёт в рабочую вер�ию приложени� только через дни, недели или даже ме��цы. * **Различие пер�онала**: разработчики пишут код, OPS инженеры разворачивают его. * **Различие ин�трументов**: разработчики могут и�пользовать �тек технологий, такой как Nginx, SQLite, и OS X, в то врем� как при рабочем развёртывании и�пользуют�� Apache, MySQL и Linux. **Приложение двенадцати факторов �проектировано дл� [непрерывного развёртывани�](http://avc.com/2011/02/continuous-deployment/) благодар� минимизации различий между разработкой и работой приложени�. Ра��мотрим три различи�, опи�анных выше: * Сделать различие во времени небольшим: разработчик может напи�ать код, и он будет развёрнут через не�колько ча�ов или даже минут. * Сделать небольшими различи� пер�онала: разработчик который напи�ал код, активно уча�твует в его развёртывании и наблюдает за его поведением во врем� работы приложени�. * Сделать различи� ин�трументов небольшими: держать окружение разработки и работы приложени� мак�имально похожими. Резюмиру� �казанное выше в таблицу:
Традиционное приложение Приложение двенадцати факторов
Врем� между развёртывани�ми �едели Ча�ы
�втор кода/тот кто разворачивает Разные люди Те же люди
Окружение разработки/работы приложени� Различные Мак�имально похожие
[Сторонние �лужбы](./backing-services), такие как базы данных, �и�темы очередей �ообщений и к�ш, �вл�ют�� одной из обла�тей, где паритет при разработке и работе приложени� имеет важное значение. Многие �зыки предо�тавл�ют библиотеки, которые упрощают до�туп к �торонним �лужбам, включа� *адаптеры* дл� до�тупа к различных типам �ерви�ов. �екоторые примеры, в таблице ниже.
Тип Язык Библиотека �даптеры
База данных Ruby/Rails ActiveRecord MySQL, PostgreSQL, SQLite
Очередь �ообщений Python/Django Celery RabbitMQ, Beanstalkd, Redis
К�ш Ruby/Rails ActiveSupport::Cache Пам�ть, файлова� �и�тема, Memcached
Иногда разработчики наход�т удобным и�пользовать лёгкие �торонние �лужбы в их локальном окружении, в то врем� как более �ерьёзные и надёжные �торонние �ерви�ы будут и�пользованы в рабочем окружении. �апример и�пользуют SQLite локально и PostgreSQL в рабочем окружении; или пам�ть проце��а дл� к�шировани� при разработке и Memcached в рабочем окружении. **Разработчик приложени� двенадцати факторов �опротивл�ет�� и�кушению и�пользовать различные �торонние �ерви�ы при разработке и в рабочем окружении**, даже когда адаптеры теоретиче�ки аб�трагированы от различий в �торонних �ерви�ах. Различи� в и�пользуемых �торонних �ерви�ах означают, что может возникнуть крошечна� не�овме�тимо�ть, котора� �танет причиной того, что код, который работал и прошёл те�ты при разработке и промежуточном развёртывании не работает в рабочем окружении. Такой тип ошибок �оздаёт помехи, которые нивелируют преимуще�тва непрерывного развёртывани�. Стоимо�ть �тих помех и по�ледующего во��тановлени� непрерывного развёртывани� �вл�ет�� чрезвычайно вы�окой, е�ли ра��матривать в �овокупно�ти за в�ё врем� �уще�твовани� приложени�. У�тановка локальных �ерви�ов �тала менее непреодолимой задачей, чем она когда-то была. Современные �торонние �ерви�ы, такие как Memcached, PostgreSQL и RabbitMQ не трудно у�тановить и запу�тить благодар� �овременным менеджерам пакетов, таким как [Homebrew](http://mxcl.github.com/homebrew/) и [apt-get](https://help.ubuntu.com/community/AptGet/Howto). Кроме того, декларативные ин�трументы подготовки окружени�, такие как [Chef](http://www.opscode.com/chef/) и [Puppet](http://docs.puppetlabs.com/) в �очетании � легкове�ным виртуальным окружением, таким как [Vagrant](http://vagrantup.com/) позвол�ют разработчикам запу�тить локальное окружение которое мак�имально приближено к рабочему окружению. Стоимо�ть у�тановки и и�пользовани� �тих �и�тем ниже по �равнению � выгодой, получаемой от паритета разработки/работы приложени� и непрерывного развёртывани�. �даптеры дл� различных �торонних �ерви�ов по-прежнему полезны, потому что они позвол�ют портировать приложение дл� и�пользовани� новых �торонних �ерви�ов отно�ительно безболезненно. �о в�е развёртывани� приложени� (окружение разработчика, промежуточное и рабочее развёртывание) должны и�пользовать тот же тип и ту же вер�ию каждого из �торонних �ерви�ов. content/es/codebase.md0000644000175000056700000000432715232661434013467 0ustar0000000000000000## I. Código base (Codebase) ### Un código base sobre el que hacer el control de versiones y multiples despliegues Una aplicación "twelve-factor" se gestiona siempre con un sistema de control de versiones, como [Git](http://git-scm.com/), [Mercurial](https://www.mercurial-scm.org/), o [Subversion](http://subversion.apache.org/). A la copia de la base de datos de seguimiento de versiones se le conoce como un *repositorio de código*, a menudo abreviado como *repo de código* o simplemente *repo*. El *código base* es cualquier repositorio (en un sistema de control de versiones centralizado como Subversion), o cualquier conjunto de repositorios que comparten un commit raíz (en un sistema de control de versiones descentralizado como Git). ![El código base se usa en muchos despliegues](/images/codebase-deploys.png) Siempre hay una relación uno a uno entre el código base y la aplicación: * Si hay multiples códigos base, no es una aplicación -- es un sistema distribuido. Cada componente en un sistema distribuido es una aplicación, y cada uno, individualmente, puede cumplir los requisitos de una aplicación "twelve-factor". * Compartir código en varias aplicaciones se considera una violación de la metodología "twelve factor". La solución en este caso es separar el código compartido en librerías que pueden estar enlazadas mediante un [gestor de dependencias](./dependencies). El código base de la aplicación es único, sin embargo, puede haber tantos despliegues de la aplicación como sean necesarios. Un *despliegue* es una instancia de la aplicación que está en ejecución. Normalmente, se ejecuta en un entorno de producción, y uno o varios entornos de pruebas. Además, cada desarrollador tiene una instancia en su propio entorno de desarrollo, los cuales se consideran también como despliegues. El código base es el mismo en todos los despliegues, aunque pueden ser diferentes versiones en cada despliegue. Por ejemplo, un desarrollador tiene algunos commits sin desplegar en preproducción; preproducción tiene algunos commits que no están desplegados en producción. Pero todos ellos comparten el mismo código base, de este modo todos son identificables como diferentes despliegues de la misma aplicación. content/es/dependencies.md0000644000175000056700000000614215232661434014345 0ustar0000000000000000## II. Dependencias ### Declarar y aislar explícitamente las dependencias La mayoría de los lenguajes de programación tienen un sistema de gestión de paquetes para distribuir sus librerías, como [CPAN](http://www.cpan.org/) en Perl o [Rubygems](http://rubygems.org/) en Ruby. Las librerías instaladas a través de estos sistemas se pueden instalar en el sistema (también conocido como "site packages") o limitarse al directorio que contiene la aplicación (también conocido como "vendoring" o "bundling"). **Una aplicación "twelve-factor" no depende nunca de la existencia explícita de paquetes instalados en el sistema.** Declara todas sus dependencias, completamente y explícitamente, mediante un manifiesto de *declaración de dependencias*. Además, usa herramientas de *aislamiento de dependencias* durante la ejecución para asegurar que las dependencias, implícitamente, no afectan al resto del sistema. La especificación de dependencias completa y explícita se aplica de la misma manera tanto en producción como en desarrollo. Por ejemplo, la [Bundler](https://bundler.io/) de Ruby tiene el formato de su manifiesto `Gemfile` para declarar sus dependencias y `bundle exec` para aislar sus dependencias. En Python existen dos herramientas independientes para estas tareas -- [Pip](http://www.pip-installer.org/en/latest/) se usa para la declaración de dependencias y [Virtualenv](http://www.virtualenv.org/en/latest/) para el aislamiento. Incluso C tiene [Autoconf](http://www.gnu.org/s/autoconf/) para la declaración de sus dependencias, y el enlace estático proporciona aislamiento de sus dependencias. No importa qué conjunto de herramientas se use, la declaración y el aislamiento de dependencias se deben usar siempre juntas, usar solo una o la otra no es suficiente para satisfacer las condiciones de "twelve-factor". Uno de los beneficios de la declaración explícita de dependencias es que simplifica la configuración para los nuevos desarrolladores de la aplicación. Cualquier desarrollador que se incorpore al equipo debe poder probar el código base de la aplicación en su máquina de desarrollo. Tan solo debe tener instalados el entorno de ejecución del lenguaje y el gestor de dependencias como prerequisitos. Lo cual permitirá configurar todo lo necesario para ejecutar el código de la aplicación con un *mandato para construir*. Por ejemplo, el mandato para construir en Ruby/Bundler es `bundle install`, mientras que en Clojure/[Leiningen](https://github.com/technomancy/leiningen#readme) es `lein deps`. Las aplicaciones "Twelve-factor" tampoco dependen de la existencia de ninguna herramienta en el sistema. Por ejemplo, ejecutar mandatos como `ImageMagick` o `curl`. Aunque estas herramientas pueden existir en muchos, o incluso en la mayoría de los sistemas, no existen garantías de que vayan a existir en todos los sistemas donde la aplicación pueda ser ejecutada en un futuro, ni de que las versiones futuras de un sistema vayan a ser compatibles con la aplicación. Si la aplicación necesita ejecutar una herramienta del sistema, dicha herramienta debería estar incluida dentro de la aplicación. content/th/toc.md0000644000175000056700000000415515232661434012512 0ustar0000000000000000The Twelve Factors ================== ## [I. Codebase](./codebase) ### มีเพียง codebase เดียวที่ติดตามด้วย version control, มีหลาย deploy ## [II. Dependencies](./dependencies) ### มี�ารประ�าศ�ละ�ย��ารอ้างอิง (dependency) ทั้งหมดอย่างชัดเจน ## [III. Config](./config) ### จัดเ�็บ�ารตั้งค่า (config) ไว้ในสิ่ง�วดล้อมของระบบ ## [IV. Backing services](./backing-services) ### จัด�าร�ับบริ�ารสนับสนุน (backing service) ให้เป็นทรัพยา�รที่�นบมา ## [V. Build, release, run](./build-release-run) ### �ย�ขั้นตอนของ�าร build �ละ run อย่างเคร่งครัด ## [VI. Processes](./processes) ### รัน�อพพลิเคชันเป็นหนึ่งหรือมา��ว่าให้เป็น stateless processes ## [VII. Port binding](./port-binding) ### นำออ�บริ�ารด้วย�ารเชื่อมโยง port ## [VIII. Concurrency](./concurrency) ### ขยายออ�ของ�อพพลิเคชันด้วยรูป�บบ process ## [IX. Disposability](./disposability) ### เพิ่มความ�ข็ง��ร่งด้วย�ารเริ่มต้นระบบอย่างรวดเร็ว�ละปิดระบบอย่างนุ่มนวล ## [X. Dev/prod parity](./dev-prod-parity) ### รั�ษา development, staging �ละ production ให้มีความใ�ล้เคียง�ันที่สุด ## [XI. Logs](./logs) ### จัด�าร logs ให้เป็น�บบ event stream ## [XII. Admin processes](./admin-processes) ### รันงานของผู้ดู�ลระบบ/�ารจัด�ารให้เป็น�ระบวน�าร�บบครั้งเดียว content/uk/dependencies.md0000644000175000056700000001117615232661434014360 0ustar0000000000000000## II. Залежно�ті ### Явно оголошуйте та ізолюйте залежно�ті Більші�ть мов програмуванн� мають �и�теми пакунків дл� розпов�юдженн� бібліотек, такі �к [CPAN](http://www.cpan.org/) дл� Perl або [Rubygems](http://rubygems.org/) дл� Ruby. Бібліотеки, в�тановлені через �и�тему пакунків, можуть бути до�тупними дл� в�ієї �и�теми (так звані "site-packages") або в�тановлені в каталог за�то�унку (так звані "vendoring" або "bundling"). **За�то�унок дванадц�ти факторів ніколи не залежить від не�вно і�нуючих, до�упних в�ій �и�темі пакунків.** За�то�унок повно і точно вказує в�і �вої залежно�ті за допомогою маніфе�ту *оголошенн� залежно�тей*. Крім того, він викори�товує ін�трумент *ізол�ції залежні�тей* під ча� виконанн�, щоб гарантувати, що ні�кі не�вні залежно�ті не "про�очили��" з зовнішньої �и�теми. Повна і �вна �пецифікаці� залежно�тей викори�товуєть�� однаково �к при розробці, так і в production. �априклад, [Bundler](https://bundler.io/) в Ruby викори�товує `Gemfile` �к формат маніфе�ту дл� оголошенн� залежно�тей і `bundle exec` дл� ізол�ції залежно�тей. В Python є два окремі ін�трументи дл� цих задач - [Pip](http://www.pip-installer.org/en/latest/) викори�товуєть�� дл� оголошенн� і [Virtualenv](http://www.virtualenv.org/en/latest/) дл� ізол�ції. �авіть C має [Autoconf](http://www.gnu.org/s/autoconf/) дл� оголошенн� залежно�тей, а �татичне зв'�зуванн� може забезпечити ізол�цію залежно�тей. Який би не викори�товував�� набір ін�трументів, оголошенн� і ізол�ці� залежно�тей завжди мають викори�товувати�� разом — тільки одне або інше не є до�татньою умовою дл� задоволенн� дванадц�ти факторів. Однією з переваг �вного оголошенн� залежно�тей є те, що це �прощує налаштуванн� за�то�унку дл� нових розробників. �овий розробник може �копіювати кодову базу за�то�унку на �вою машину, необхідними вимогами дл� �кої є тільки на�вні�ть �ередовища виконанн� мови програмуванн� та на�вні�ть менеджера залежно�тей. В�е необхідне дл� запу�ку коду за�то�унку може бути налаштоване за допомогою визначеної *команди збірки*. �априклад, команда збірки дл� Ruby/Bundler є `bundle install`, а дл� Clojure/[Leiningen](https://github.com/technomancy/leiningen#readme) це `lein deps`. За�то�унок дванадц�ти факторів також ніколи не залежить від не�вно і�нуючих будь-�ких �и�темних ін�трументів. Прикладом може бути запу�к за�то�унком таких �и�темних ін�трументів, �к ImageMagick або `curl`. У той ча�, �к ці ін�трументи можуть бути в�тановлені на багатьох або навіть більшо�ті �и�тем, немає жодної гарантії, що вони будуть в�тановлені на в�іх �и�темах, де за�то�унок може запу�кати�� в майбутньому, або вер�і� ін�трументу, в�тановлена в �и�темі, буде �умі�на з за�то�унком. Якщо за�то�унку потрібно запу�кати певні �и�темні ін�трументи, то такі ін�трументи мають бути включені в �ам за�то�унок.views/factor.erb0000644000175000056700000000051415232661434012416 0ustar0000000000000000
<%= render_markdown(@factor) %>
content/en/dev-prod-parity.md0000644000175000056700000001065715232661434014746 0ustar0000000000000000## X. Dev/prod parity ### Keep development, staging, and production as similar as possible Historically, there have been substantial gaps between development (a developer making live edits to a local [deploy](./codebase) of the app) and production (a running deploy of the app accessed by end users). These gaps manifest in three areas: * **The time gap**: A developer may work on code that takes days, weeks, or even months to go into production. * **The personnel gap**: Developers write code, ops engineers deploy it. * **The tools gap**: Developers may be using a stack like Nginx, SQLite, and OS X, while the production deploy uses Apache, MySQL, and Linux. **The twelve-factor app is designed for [continuous deployment](http://avc.com/2011/02/continuous-deployment/) by keeping the gap between development and production small.** Looking at the three gaps described above: * Make the time gap small: a developer may write code and have it deployed hours or even just minutes later. * Make the personnel gap small: developers who wrote code are closely involved in deploying it and watching its behavior in production. * Make the tools gap small: keep development and production as similar as possible. Summarizing the above into a table:
Traditional app Twelve-factor app
Time between deploys Weeks Hours
Code authors vs code deployers Different people Same people
Dev vs production environments Divergent As similar as possible
[Backing services](./backing-services), such as the app's database, queueing system, or cache, is one area where dev/prod parity is important. Many languages offer libraries which simplify access to the backing service, including *adapters* to different types of services. Some examples are in the table below.
Type Language Library Adapters
Database Ruby/Rails ActiveRecord MySQL, PostgreSQL, SQLite
Queue Python/Django Celery RabbitMQ, Beanstalkd, Redis
Cache Ruby/Rails ActiveSupport::Cache Memory, filesystem, Memcached
Developers sometimes find great appeal in using a lightweight backing service in their local environments, while a more serious and robust backing service will be used in production. For example, using SQLite locally and PostgreSQL in production; or local process memory for caching in development and Memcached in production. **The twelve-factor developer resists the urge to use different backing services between development and production**, even when adapters theoretically abstract away any differences in backing services. Differences between backing services mean that tiny incompatibilities crop up, causing code that worked and passed tests in development or staging to fail in production. These types of errors create friction that disincentivizes continuous deployment. The cost of this friction and the subsequent dampening of continuous deployment is extremely high when considered in aggregate over the lifetime of an application. Lightweight local services are less compelling than they once were. Modern backing services such as Memcached, PostgreSQL, and RabbitMQ are not difficult to install and run thanks to modern packaging systems, such as [Homebrew](http://mxcl.github.com/homebrew/) and [apt-get](https://help.ubuntu.com/community/AptGet/Howto). Alternatively, declarative provisioning tools such as [Chef](http://www.opscode.com/chef/) and [Puppet](http://docs.puppetlabs.com/) combined with light-weight virtual environments such as [Docker](https://www.docker.com/) and [Vagrant](http://vagrantup.com/) allow developers to run local environments which closely approximate production environments. The cost of installing and using these systems is low compared to the benefit of dev/prod parity and continuous deployment. Adapters to different backing services are still useful, because they make porting to new backing services relatively painless. But all deploys of the app (developer environments, staging, production) should be using the same type and version of each of the backing services. content/ko/backing-services.md0000644000175000056700000000622015232661434015135 0ustar0000000000000000## IV. 백엔드 서비스 ### 백엔드 서비스를 연결� 리소스로 취급 *백엔드 서비스*는 애플리케�션 정� �작 중 네트워�를 통해 �용하는 모든 서비스입니다. 예를 들어, ��터 저장소(예: [MySQL](http://dev.mysql.com/), [CouchDB](http://couchdb.apache.org/)), 메시지 �잉 시스템(예: [RabbitMQ](http://www.rabbitmq.com/), [Beanstalkd](https://beanstalkd.github.io)), 메�� 보내기 위한 SMTP 서비스 (예: [Postfix](http://www.postfix.org/)), �시 시스템(예: [Memcached](http://memcached.org/)) 등� 있습니다. ��터베�스와 같� 백엔드 서비스들� 통��으로 배�� 애플리케�션과 같� 시스템 관리�� �해서 관리�고 있었습니다. 애플리케�션� �런 로컬�서 관리하는 서비스 대신, 서드파티� �해서 제공�고 관리�는 서비스를 �용할 수 있습니다. 예를 들어, SMTP 서비스 (예: [Postmark](http://postmarkapp.com/)), 지표 수집 서비스 (예: [New Relic](http://newrelic.com/), [Loggly](http://www.loggly.com/)), 스토리지 서비스 (예: [Amazon S3](http://aws.amazon.com/s3/)), API로 접근 가능한 소비� 서비스 (예: [Twitter](http://dev.twitter.com/), [Google Maps](https://developers.google.com/maps/), [Last.fm](http://www.last.fm/api))등� 있습니다. **Twelve-Factor App� 코드는 로컬 서비스와 서드파티 서비스를 구별하지 않습니다.** 애플리케�션�게는 양 쪽 모� 연결� 리소스�며, [설정](./config)� 있는 URL 혹� 다른 로케�터와 �� 정보를 사용해서 접근 �니다. Twelve-Factor App� [배�](./codebase)는 애플리케�션 코드를 수정하지 않고 로컬�서 관리�는 MySQL DB를 서드파티�서 관리�는 DB(예: [Amazon RDS](http://aws.amazon.com/rds/))로 전환할 수 있어야 합니다. 마찬가지로, 로컬 SMTP 서버는 서드파티 SMTP 서비스(예: Postmark)로 코드 수정 없� 전환� 가능해야 합니다. � 경우 모� 설정� 있는 리소스 핸들만 변경하면 �니다. ��� 다른 백엔드 서비스는 *리소스*입니다. 예를 들어, 하나� MySQL DB는 하나� 리소스입니다. 애플리케�션 레�어�서 샤딩� 하는 � 개� MySQL ��터베�스는 � 개� 서로 다른 리소스�고 볼 수 있습니다. Twelve-Factor App� �러한 ��터베�스들� *첨부�(Attached) 리소스*으로 다룹니다. �는 서로 �슨하게 결합�다는 �� 암시합니다. 4개� 백엔드 서비스가 연결� production 배�. 리소스는 �유롭게 배�� 연결�거나 분리� 수 있습니다. 예를 들어, 애플리케�션� ��터베�스가 하드웨어 �슈로 작용� ��한 경우, 애플리케�션� 관리�는 최신 백업�서 새로운 ��터베�스 서버를 시작시킬 것입니다. 그리고 코드를 전혀 수정하지 않고 현재 운�� 사용하고 있는 ��터베�스를 분리하고 새로운 ��터베�스를 연결할 수 있습니다. content/tr/dependencies.md0000644000175000056700000000535715232661434014372 0ustar0000000000000000## II. Bağımlıklar ### Bağımlıkları açık bir şekilde açıklama ve ayırma Çoğu programlama dili destek kitaplıklarını dağıtmak için bir paketleme sistemi sunar, Perl için [CPAN](http://www.cpan.org/), Ruby için [Rubygems](http://rubygems.org/). Bir paketleme sistemi aracılığıyla yüklenen kütüphaneler, sistem genelinde ("site paketleri" olarak bilinir) yüklenebilir veya uygulamanın bulunduğu dizine ("sağlayıcı" veya "paketleme" olarak bilinir) dahil edilebilir. **On iki faktör bir uygulama asla sistem çapında paketlerin gizli var olmasına dayanmaz.** Bir *bağımlılık bildirimi* ile tüm bağımlılıkları tamamen ve eksiksiz olarak bildirir. Üstelik bağımlılıkların çevredeki sistemden sızmamasını sağlamak için yürütme sırasında bir *bağımlılık yalıtım* aracı kullanılır. Tam ve açık bağımlılık belirtimi hem üretim hem de geliştirme için eşit olarak uygulanmaktadır. Örneğin, Ruby için [Bundler](https://bundler.io/), bağımlılık bildirimi için `Gemfile` manifest formatını ve bağımlılık yalıtımı için `bundle exec`'i önerir. Python'da bu adımlar için iki ayrı araç bulunur: [Pip](http://www.pip-installer.org/en/latest/), bildirimde ve [Virtualenv'de](http://www.virtualenv.org/en/latest/) yalıtımda kullanılır. C bile bağımlılık bildirimi için [Autoconf'a](http://www.gnu.org/s/autoconf/) sahiptir ve bağımlılık yalıtımı statik link ile sağlanır. Ne olursa olsun birbiriyle uyumlu çalışan yazılım uygulaması, bağımlılık bildirimi ve bağımlılık yalıtımı birlikte kullanılmalıdır, sadece herhangi birinin olması on iki faktör için yeterli değildir. Açık bağımlılık bildiriminin bir faydası da uygulamaya yeni olan geliştiriciler için kurulumu kolaylaştırır. Yeni geliştirici geliştirme aracında uygulamanın kod tabanını kontrol edebilir, ön koşul olarak dil çalıştırma platformu ve bağımlılık yöneticisinin yüklenmiş olmasını ister. Rastgele olmayan *derleme komutları* ile birlikte uygulama kodunun çalışması için ihtiyaç duyulan her şeyi yükleyebilecekler. Örneğin, Clojure/[Leiningen](https://github.com/technomancy/leiningen#readme) için `lein deps` iken, Ruby/Bundler için `bundle install`'dir. On iki faktör uygulamaları ayrıca herhangi bir sistem aracının kapalı olmasına güvenmez. Örnekler `ImageMagick` yada `curl` kullanımını içerir. Bu araçlar çoğu sistemde var olabilse de, uygulamanın gelecekte çalışabileceği sistemlerde bu araçların var olup olmayacağının veya bu araçların sürümlerinin uygulamayla uyumlu olup olmayacağının garantisi yoktur. Uygulamanın bir sistem aracına geçirilmesi gerekiyorsa, o aracın uygulamayı sağlaması gerekiyor. content/de/processes.md0000644000175000056700000000466515232661434013716 0ustar0000000000000000## VI. Prozesse ### Die App als einen oder mehrere Prozesse ausführen Die App wird als ein oder mehrere *Prozesse* ausgeführt. Im einfachsten Fall ist der Code ein Stand-alone-Skript, die Ausführungsumgebung ist der lokale Laptop eines Entwicklers mit einer installierten Laufzeitumgebung einer Sprache, und der Prozess wird von der Kommandozeile gestartet (zum Beispiel `python my_script.py`). Am anderen Ende des Spektrums kann eine hochentwickelte App viele [Prozesstypen benutzen, die in keinen oder mehreren Prozessen laufen](./concurrency). **Zwölf-Faktor-Apps sind zustandslos und [Shared Nothing](https://de.wikipedia.org/wiki/Shared_Nothing_Architecture).** Alle Daten werden in [unterstützenden Diensten](./backing-services) gespeichert, normalerweise einer Datenbank. Der RAM oder das Dateisystem des Prozesses kann als kurzfristiger Cache für die Dauer einer Transaktion verwendet werden. Zum Beispiel kann ein Prozess eine Datei herunterladen, sie verarbeiten und die Ergebnisse in einer Datenbank speichern. Die Zwölf-Faktor-App geht nie davon aus, dass irgendetwas aus dem RAM oder im Dateisystem zwischengespeichertes für einen künftigen Request oder Job verfügbar sein wird. Es ist gut möglich, das ein künftiger Request von einem anderen Prozess bedient wird. Selbst wenn nur ein Prozess läuft, wird ein Neustart (verursacht durch Code Deployment, Konfigurationsänderung oder der Verlagerung der Ausführungsumgebung auf einen anderen physikalischen Ort) den gesamten lokalen Zustand (RAM und Dateisystem) löschen. Asset-Paketierer (wie [Jammit](http://documentcloud.github.com/jammit/) oder [django-compressor](http://django-compressor.readthedocs.org/)) benutzen das Dateisystem als Cache für kompilierte Assets. Eine Zwölf-Faktor-App wie die [Rails asset pipeline](http://guides.rubyonrails.org/asset_pipeline.html) würde diese Art von Kompilation eher in der [Build-Phase](./build-release-run) erledigen anstatt zur Laufzeit. Manche Web-Systeme verlassen sich auf ["Sticky Sessions"](http://en.wikipedia.org/wiki/Load_balancing_%28computing%29#Persistence) -- sie cachen Benutzer-Session-Daten im RAM des App-Prozesses und erwarten, dass künftige Requests desselben Benutzers zum selben Prozess geschickt werden. Sticky Sessions sind eine Verletzung der zwölf Faktoren und eine guter Kandidat für einen Datenspeicher, der ein zeitabhängiges Löschen anbietet, wie [Memcached](http://memcached.org/) oder [Redis](http://redis.io/). content/fr/logs.md0000644000175000056700000000521715232661434012665 0ustar0000000000000000## XI. Logs ### Traitez les logs comme des flux d'évènements Les *logs* fournissent de la visibilité au comportement de l'application qui s'exécute. Dans des environnements de type serveur, ils sont généralement écrits dans un fichier, sur le disque (dans un fichier de log). Mais c'est simplement un format de sortie. Les logs sont des [flux (en)](https://adam.herokuapp.com/past/2011/4/1/logs_are_streams_not_files/) d'agrégats d'évènements, ordonnés dans le temps, collectés à travers les flux de sortie de tous les processus et services externes qui tournent. Les logs, dans leur forme brute, sont au format texte avec un événement par ligne (bien que les traces d'exécutions puissent s'étaler sur plusieurs lignes). Les logs n'ont pas de début ou de fin fixe, mais se remplissent en continu tant que l'application est en marche. **Une application 12 facteurs ne s'inquiète jamais du routage ou du stockage de ses flux de sortie.** Elle ne devrait pas tenter d'écrire ou de gérer les fichiers de logs. À la place, chaque processus qui tourne écrit ses flux d'événements, sans tampon, vers `stdout`, la sortie standard ; en phase de développement local, les développeurs pourront voir ce flux dans leur terminal et observer le comportement de l'application. Dans les déploiements de validation ou de production, les flux de chaque processus seront capturés par leur environnement d'exécution, assemblés avec les autres flux de l'application, et routés vers une ou plusieurs destinations pour un visionnage et un archivage de longue durée. Le lieu d'archivage n'est pas visible et ne peut être configuré par l'application : ils sont complètements gérés par l'environnement d'exécution. Des routeurs opensource de logs, (tel que [Logplex](https://github.com/heroku/logplex) et [Fluentd](https://github.com/fluent/fluentd)) existent pour cela. Le flux d'événements d'une application peut être routé dans un fichier, ou surveillé en temps réel (avec tail) dans un terminal. Plus pertinent, les flux peuvent être envoyés vers un outil d'indexation et d'archivage des logs tel que [Splunk](http://www.splunk.com/), ou bien dans un entrepôt de données générique comme [Hadoop/Hive](http://hive.apache.org/). Ces systèmes sont très puissants et flexibles pour inspecter le comportement de l'application au cours du temps, ce qui inclut : * Trouver un événement spécifique dans le passé * Faire des graphiques à grande échelle des tendances (comme le nombre de requêtes par minutes) * Lever des alertes, à partir d'heuristiques définies par l'utilisateur (comme alerter dès que la quantité d'erreurs par minutes dépasse un certain seuil) content/it/processes.md0000644000175000056700000000472215232661434013734 0ustar0000000000000000## VI. Processi ### Esegui l'applicazione come uno o più processi stateless L'app viene eseguita nell'ambiente di esecuzione come uno o più *processi*. Nel caso più semplice, il codice non è che uno script stand-alone, l'ambiente di esecuzione è il laptop dello sviluppatore e il processo viene lanciato tramite linea di comando (per esempio, `python my_script.py`). Tuttavia, il deployment in produzione di un'app sofisticata potrebbe usare più [tipologie di processo, istanziate in zero o più processi](./concurrency). ***I processi twelve-factor sono stateless (senza stato) e [share-nothing](http://en.wikipedia.org/wiki/Shared_nothing_architecture).** Tutti i dati che devono persistere devono essere memorizzati in un [backing service](./backing-services), come per esempio un database. Lo spazio di memoria o il filesystem di un processo possono essere visti come una "singola transazione" breve. Come il download di un file, le successive operazioni su di esso e infine la memorizzazione del risultato sul database. Un'app twelve-factor non assume mai che qualsiasi cosa messa in cache sarà poi disponibile successivamente -- con tanti processi in esecuzione, le possibilità che una certa richiesta venga servita da un altro processo sono molto alte. Comunque, anche nel caso in cui si usi un singolo processo in esecuzione, un riavvio (dovuto a deployment di codice, cambio di file di configurazione e così via) resetterà lo stato in cui si trova il sistema. I packager di asset (come [Jammit](http://documentcloud.github.com/jammit/) o [django-compressor](http://django-compressor.readthedocs.org/)) usano il filesystem come cache per gli asset compilati. Un'app twelve-factor vuole questa compilazione durante la [fase di build](./build-release-run), così come [l'asset pipeline di Rails](http://guides.rubyonrails.org/asset_pipeline.html), e non a runtime. Alcuni sistemi web si basano inoltre sulle cosiddette ["sticky sessions"](http://en.wikipedia.org/wiki/Load_balancing_%28computing%29#Persistence) -- che consistono nel mettere in cache i dati di sessione dell'utente presenti nella memoria del processo, aspettandosi future richieste identiche dallo stesso visitatore, venendo quindi reindirizzati allo stesso processo. Le sticky session sono una palese violazione della metodologia twelve-factor. I dati di sessione sono un ottimo candidato per quei sistemi di datastore che offrono la feature di scadenza, come [Memcached](http://memcached.org/) o [Redis](http://redis.io/). content/pl/build-release-run.md0000644000175000056700000000537615232661434015252 0ustar0000000000000000## V. Buduj, publikuj, uruchamiaj ### Oddzielaj etap budowania od uruchamiania [Codebase](./codebase) jest przetwarzany we wdrożenie w trzech etapach (poza lokalnym środowiskiem). * Podczas *etapu budowania* kod z repozytorium konwertowany jest do wykonywalnej paczki tzw. *buildu*. Używając wersji kodu zdefiniowanej przez commit w procesie deploymentu, w tym etapie pobiera i dołącza się do projektu [zależności](./dependencies) oraz kompiluje niezbędne zasoby. * Podczas *etapu publikacji* aplikacji używany jest build stworzony w poprzednim etapie i konfigurowany na podstawie [ustawień](./config) obecnego wdrożenia. Stworzony w ten sposób *release* zawiera zbudowane źródło kodu, jego konfigurację i jest gotowy do uruchomienia w wybranym środowisku. * *Etap uruchamiania* (znany również jako "runtime") startuje aplikację w środowisku wykonawczym przez uruchomienie zestawu [procesów](./processes) w oparciu o wcześniej przygotowany release. ![Kod staje się buildem, jeśli zostanie połączony z konfiguracją by stworzyć release](/images/release.png) **Aplikacja 12factor ściśle rozgranicza etapy budowy, publikacji i uruchomiania** Kiedy aplikacja została już uruchomiona, nie można zmienić jej kodu w inny sposób niż zbudować ją na nowo na podstawie wcześniej naniesionych zmian. Narzędzia do obsługi wdrożeń zazwyczaj oferują moduły do zarządzania releasami, w tym możliwość do powrotu do poprzedniej wersji (rollback). Np. narzędzie [Capistrano](https://github.com/capistrano/capistrano/wiki) przechowuje releasy w podkatalogu `releases`, gdzie obecna wersja opublikowanej aplikacji jest symlinkowana do jednej z wersji przechowywanej w katalogu Capistrano. Komenda `rollback` pozwala na szybką zmianę wersji opublikowanej aplikacji na jedną z poprzednich. Każdy release powinien zawsze posiadać unikalny identyfikator, jak np. data publikacji aplikacji (taka jak `2011-04-06-20:32:17`) lub inkrementowany numer (np. `v100`). Do rejestru opublikowanych wersji aplikacji można jedynie dodawać jej nowe wersje, jego zawartość nie może być zmieniana w żaden inny sposób. Aplikacja może zostać zbudowana gdy developer zdecyduje o wdrożeniu zmian do kodu. Uruchomienie aplikacji może natomiast nastąpić automatycznie po restarcie serwera lub jednego z procesów aplikacji po błędzie krytycznym. Dlatego też etap uruchamiania aplikacji powinien być jak najbardziej jednolity minimalizując równocześnie ryzyko wystąpienia problemów ze startem aplikacji - mogą one spowodować zaprzestanie działania aplikacji np. w nocy, kiedy to nie ma żadnego developera "pod ręką". Etap budowy aplikacji może być bardziej złożony, ponieważ ewentualne błędy są zawsze widoczne dla developera, który nadzoruje ten proces. content/tr/logs.md0000644000175000056700000000501115232661434012673 0ustar0000000000000000## XI. Günlükler ### Günlüklere olay akışı gibi davranma *Günlükler* çalışan bir uygulamanın davranışının görünür olmasını sağlar. Sunucu tabanlı ortamlarda genellikle diskteki bir dosyaya yazılırlar("logfile"); ama bu sadece çıktı formatındadır. Günlükler, bütün çalışan süreçler ve destek servislerinin çıktı akışlarından kümelenmiş, zaman sıralı olayların [akışıdır](https://adam.herokuapp.com/past/2011/4/1/logs_are_streams_not_files/). Günlükler ilk formda her bir satır için bir olay olacak şekilde yazı formatındadır(Bununla birlikte istisnalardaki geri dönüşleri birden fazla satırda ölçebilir). Günlükler başta ve sonda düzeltilmemiş ama akış, uygulama işlediği sürece devam eder. **On iki faktör uygulaması çıkış akışlarının depolaması veya yönlendirilmesiyle ilgilenmez.** Günlük dosyalarını yazma ve yönetme yapmamalıdır. Bunun yerine, her çalışan süreç kendi olay akışını tamponlamadan `stdout`'a yazar. Yerel geliştirme süresince, geliştirici uygulamanın davranışını gözlemlemek için terminallerinin önplanında bu akışı inceleyecekler. Evreleme ve ürün dağıtımlarında herbir sürecin akışı çalışma ortamı tarafından yakalanmış diğer uygulamadaki, diğer bütün akışlarla birlikte sıralanmış, görüntüleme ve uzun dönem arşivleme için bir veya daha fazla son hedeflerine yönlendirilmiş olacaklar. Bu arşivsel hedefler uygulama tarafından görülebilir veya yapılandırılabilir değildir, bunun yerine tamamen çalışma ortamı tarafından yönetilirler. Açık kaynak günlük yönlendiricileri ([Logplex](https://github.com/heroku/logplex) ve [Fluentd](https://github.com/fluent/fluentd) gibi) bu amaç için erişilebilirdir. Bir uygulama için olay akışı dosyaya yönlendirilebilir veya terminalden gerçek zamanlı kuyruklama aracılığla izlenebilir. En önemlisi, akış [Splunk](http://www.splunk.com/) gibi günlük numaralandırma ve analiz sistemine veya [Hadoop/Hive](http://hive.apache.org/) gibi genel amaçlı veri depolama sistemine gönderilebilir. Bu sistemler uygulamanın zamanla olan davranışlarında iç gözlem yapmak için büyük güç ve esnekliğe izin verir. Bunları içerir: * Geçmişteki özel olayları bulmak. * Eğilimlerin geniş aralıklı grafikleri(her bir dakika için olan istekler gibi). * Kullanıcı tanımlı kestirme yollara göre aktif uyarma(Bir dakikadaki hataların niceliği belirli bir alt sınırı geçtiği zaman olan uyarı gibi). locales/uk.yml0000644000175000056700000000040115232661434012070 0ustar0000000000000000uk: # Name of language listed in locales menu language: "Україн�ька (uk)" # A text to make known that the article is a translation not an original. # Empty for English, original. translation: "(Переклад україн�ькою)" content/es/dev-prod-parity.md0000644000175000056700000001250615232661434014746 0ustar0000000000000000## X. Igualdad entre desarrollo y producción ### Mantener desarrollo, preproducción y producción tan parecidos como sea posible Históricamente, han existido dos tipos de entorno muy diferenciados: desarrollo (donde un desarrollador puede editar en vivo en un [despliegue](./codebase) local de la aplicación) y producción (un despliegue en el que la aplicación está en ejecución disponible para que lo usen los usuarios). Estas diferencias se pueden clasificar en tres tipos: * **Diferencias de tiempo**: Un desarrollador puede estar trabajando en un código durante días, semanas o incluso meses antes de que llegue a producción. * **Diferencias de personal**: Los desarrolladores escriben el código y los ingenieros de operaciones lo despliegan. * **Diferencias de herramientas**: Los desarrolladores pueden usar una pila como Nginx, SQLite y OS X, mientras que en producción se usa Apache, MySQL y Linux. ** Las aplicaciones "twelve-factor" están diseñadas para hacer [despliegues continuos](http://avc.com/2011/02/continuous-deployment/) que reducen las diferencias entre los entornos de desarrollo y producción.** Teniendo en cuenta las tres diferencias descritas anteriormente: * Reducir las diferencias de tiempo: Un desarrollador puede escribir código y tenerlo desplegado en tan solo unas horas, o incluso, minutos más tarde. * Reducir las diferencias de personal: Los desarrolladores que escriben el código están muy involucrados en el despliegue y observan su comportamiento en producción. * Reducir las diferencias de herramientas: tratar de hacer que desarrollo y producción sean tan parecidos como sea posible. Resumiendo lo anterior en una tabla:
Aplicaciones tradicionales Aplicaciones "twelve-factor"
Tiempo entre despliegues Semanas Horas
Desarrolladores vs Ingenieros de operaciones Diferentes personas Mismas personas
Entorno de desarrollo vs entorno de producción Divergentes Lo más parecidos posibles
Los ["backing services"](./backing-services), como la base de datos de la aplicación, el sistema de colas, o la caché, es donde la igualdad en los entornos de desarrollo y producción es importante. Muchos lenguajes ofrecen librerías en las que se simplifica el acceso a los servicios de respaldo, incluidos *adaptadores* para diferentes tipos de servicios. Se pueden observar algunos ejemplos en la siguiente tabla.
Tipo Lenguaje Librería Adaptador
Base de datos Ruby/Rails ActiveRecord MySQL, PostgreSQL, SQLite
Colas Python/Django Celery RabbitMQ, Beanstalkd, Redis
Caché Ruby/Rails ActiveSupport::Cache Memoria, sistema de ficheros, Memcached
Los desarrolladores, a veces, caen en la tentación de usar "backing services" ligeros en sus entornos de desarrollo, mientras que en producción se usan los más serios y robustos. Por ejemplo, se usa SQLite en desarrollo y PostgreSQL en producción; o memoria local para la caché en desarrollo y Memcached en producción. **Un desarrollador "twelve-factor" no cae en la tentación de usar diferentes "backing services" en desarrollo y producción**, incluso cuando los adaptadores teóricamente abstractos están lejos de cualquier diferencia en "backing services". Las diferencias entre los servicios de respaldo tienen que ver con las pequeñas incompatibilidades que surgen de la nada, causando que el código que funciona y pasa los tests en desarrollo o en preproducción, falle en producción. Este tipo de errores provocan conflictos que desincentivan la filosofía del despliegue continuo. El coste de estos conflictos y el enfriamiento subsiguiente del despliegue continuo es extremadamente alto cuando se hace balance del total de tiempo de vida de una aplicación. Los servicios ligeros locales son menos atractivos que antes. Los "backing services" modernos como Memcached, PostgreSQL, y RabbitMQ no son difíciles de instalar y ejecutar gracias a los sistemas de gestión de paquetes modernos, como [Homebrew](http://mxcl.github.com/homebrew/) y [apt-get](https://help.ubuntu.com/community/AptGet/Howto). Al mismo tiempo, las herramientas de gestión de la configuración como [Chef](http://www.opscode.com/chef/) y [Puppet](http://docs.puppetlabs.com/) combinadas con entornos virtuales ligeros como [Docker](https://www.docker.com/) o [Vagrant](http://vagrantup.com/) permiten a los desarrolladores ejecutar entornos locales que son muy parecidos a los entornos de producción. El coste de instalar y usar estos sistemas es bajo comparado con el beneficio que se puede obtener de la paridad entre desarrollo y producción y del despliegue continuo. Los adaptadores de los "backing services" todavía son de gran utilidad, porque hacen que cambiar de unos a otros sea un trámite relativamente poco doloroso. No obstante, todos los despliegues de una aplicación (en entornos de desarrollo, preproducción y producción) deberían usar el mismo tipo y versión de cada uno de los "backing services". content/fr/build-release-run.md0000644000175000056700000000614715232661434015243 0ustar0000000000000000## V. Assemblez, publiez, exécutez ### Séparez strictement les étapes d'assemblage et d'exécution Une [base de code](./codebase) est transformée en un déploiement (non-développement) à travers les étapes suivantes : * L'*étape d'assemblage* (ou "build") est une transformation qui convertit un dépôt de code en un paquet autonome exécutable appelé l'assemblage (ou "build"). En utilisant une version du code référencée par un commit spécifié lors du processus de déploiement, l'étape d'assemblage va chercher toutes les [dépendances externes](./dependencies) et compile les fichiers binaires et les ressources. * L'*étape de publication * (ou "release") prend l'assemblage produit à l'étape précédente et le combine avec la [configuration](./config) de déploiement courante. La release résultante contient à la fois l'assemblage et la configuration, et elle est prête pour une exécution immédiate dans l'environnement d'exécution. * L'*étape d'exécution* (ou "runtime") fait fonctionner l'application dans l'environnement d'exécution, en lançant un ensemble de [processus](./processes) de l'application associée à la release considérée. ![Le code devient un assemblage, qui est combiné à la configuration pour créer une release](/images/release.png) **Les applications 12 facteurs ont une séparation stricte entre les étapes d'assemblage, de publication et d'exécution.** Par exemple, il est impossible de faire des changements dans le code au moment de son exécution, car il n'y a pas moyen de propager ces changements vers l'étape de build. Les outils de déploiement offrent généralement des outils de gestion de release, permettant notamment de revenir à une release antérieure. Par exemple, l'outil de déploiement [Capistrano](https://github.com/capistrano/capistrano/wiki) stocke les releases dans un sous-répertoire appelé `releases`, où la release courante est un lien symbolique vers le répertoire de release courante. Sa commande `rollback` permet de facilement revenir à une release précédente. Chaque release devrait toujours avoir un identifiant unique, comme un horodatage (timestamp) de la release (tel que `2011-04-06-20:32:17`) ou un nombre incrémental (tel que `v100`). La liste des releases est accessible en écriture incrémentale uniquement, et il n'est pas possible de modifier une release une fois qu'elle a été réalisée. Tout changement doit créer une nouvelle release. Les assemblages sont initiés par le développeur de l'application dès que du nouveau code est déployé. Son exécution, au contraire, peut avoir lieu automatiquement en cas d'un reboot du serveur, ou du crash d'un processus qui est relancé par le gestionnaire de processus. De ce fait, l'étape d'exécution doit se limiter à un nombre minimal de parties mobiles, car les problèmes qui empêchent une application de fonctionner peuvent entraîner des dysfonctionnements au milieu de la nuit alors qu'aucun développeur ne sera là pour les corriger. L'étape d'assemblage peut être plus complexe, car les erreurs pourront toujours être résolues par le développeur qui réalise le déploiement. public/images/favicon.ico0000644000175000056700000000370515232661434014162 0ustar0000000000000000‰PNG  IHDR(JÉÂ< pHYs  šœwIDAThµ™[¨”e†ó”™¦�É2#J(5Ð’Š¢¬A¨²ˆHè¢ëF*ˆn‚.‰ «Ë,©ˆB+ˆ$" Œ0£zQí–Aif¦»÷™ý­Ÿ5k¾ÿ03/¬½¾µÖ»ÞõÍ?3ß?3{Üèèè -b‚´fÈöËŽµ¡;¾ §1Që·eøVÐögkWWËð­ í ®K»2?ü&y ¶d7Is£ÄCk�C¤L–Æ—²‹eÇe<3_ËæËŽÈF[OñƒÚ›öˆ‰É…6®à,í`—ljÚÉQùIi}HþÙî÷íÚ¸‚OhªmŽ øó�<õÁ1ä y±ú#Æ„âŲ�Þ0Ã<ÅÜ5vÈ. —ç€âé!÷…â…2u%óß'ɸ9¦lÊŒ‚¿ xéÏRß^YÄGJŒ—á#àÓ××SÝÙ‰?§+þG6?qðÄôõ5³/r_$,NV¼6ÕM“8‚>ú�Sëk AŒ7Õ6YÄ·JL‘y=bòôwÞœòžŸ]g“�wÇi)^ZÒC>tÍnDJbÓåÉLÛX3Œz:èÕί%8‘§âÅûd3'§G^z9~W®+¨h˜«ÚÑ8Añý=^^zèz^Ϻ'QÒ°%ª+þXÆ™×Düt+û+‹©ùÖ¨ªø_Ù‚To¢>}è—j”RÓùâ'S½®?Öé‹@Ÿ9‘Û‰³IG~,ª)FpªãÔiø:}¹ÌÏ+ÖÅ"C¸P¹Ã²ˆ[”¨ê««ÑÁæõôö$é�¨¢˜\UOÓZcí2Á%™ÍPnVKD½æví©+HÅIò»b§âÕ©žë$‡^s™_è —|(v)Þ.›à8¹¾~sè¡ÁüB«X¤$·¥xéûþˆäÔ¬sݘ_Ü>ã_R1â%"¯ÍýöÑ™á]«¤ýla »µ8ÅÈÿ“GŸ9ìƒýèg€±�r¯üTQyÙú½¿§$ï9q�»�²ŸñF\w¦xóƒ®QÏ_2¼i7õÌ‹XiÍ;Cå â dVoâÏŸ§êï䉛ôçñ™ë±ÓŠ+|Vkî—“eV¯óïËÀ‘1׉û9š˜Ç\�~ð{¾¢õ#2_¯Z¯u½þë&ùª>_cžû)Þ$/’ñú1ü©Å92/’[/Ç¿û½yê¹>Ÿcó h°Ÿ® Òð°1’R…ÍQm_ââ8d—'O ¨Ã«ÒaŽûèðcÓD>sLî"—9ø“.3ðiy© M¼ÿô ~œGŒ>s Ìgn®áJ}ÇFþeÅñ Tü¢?7}s™_ðŠ…Ojý´Ìƒ§ÍsWù¢ÖëBݸä=è³]æúzÏkЊÓDüÁuŽh}’ŒúU2;J´Ý$ãNd½Þ“§n �~8è�È Ìc®ï/Ý ¤›­3yŽ�3e~ã܎꾟P÷·QúÑ‰Ç óº6GÜ“¤×86Z Ï]ã`s»wìâ5Zñ�2{d§j½G¨õú­Ž®Õ˜gù‹Lq’rv‹âöä…oWlتE•u}ÆEÏn›ÌažÕ _,rEåæÊËÀ+2Ï«“ûs[¨�¼¾åñèô™ãkźX””_-3Ü¡…õÌÖÚ^ø#ZÇcÇ+ðà[/:ô-ßã{ò8å¶$µ?äùéÌúüæã±ã�¿ úÑè¢oz=¾'QBF”ÿV/:^ñ'�l÷±ã�êð˜å,zèVšïTlðWd�’GSáy4ñ€oõR_Z�PUíY¦ Çd×ËŒû:Io9êð}–oä‘2¢¢â)³ÊW¦-÷÷¦!”91ùíϸY9‹Pæó½)3òµÊã}2Ú6AíóI—Á·à+®Ýšú`ûí‡òmì}4ºú¾û­Ša€ìIéâÀ¾`ê¢îªˆWɰ+iwï­B.*?ƒ�` : üƒj¶ï *�Âç`x€kýFÜ»¹ÞkéÑÈÍhÓù@y,Qð5Ù�³øŠ 'r*8Š�BqÝ py~UÇÁ@0Pó t¦àÕ7êƒEÁž@ð/×{ZQsØç’¬)¥+�®9v_à xŒs€MÁ @™ œÃ`Y‘‰Äû…�ø ‚�Fd`B:u˜ìÓˆ¬×>UÔ0 Ü—‚˜-3r´Ä7€?�Púßgác�îbüû��³ �ƒKÒ£@!ý8º¨;&°¬Q”ù5n§BþIHÔ˜÷ò�?Þ•¼ræ€6¿bÝ#ÉÿMá¨ãŸÂ „zÌ?>°ÂïÀ—äoáƒã6Bž± 4Ÿ}N+½ðM^ l»’Õç¬Ì2<©Íîñ’o<ÒÚNûl¾´7l½!Á@G <@ä¶YÇyºfûã÷ãæ ÝÏÛ…±vãø?„…Ô3 ™"[“>¦9Ïâß…“?¬¸ß„}Fúc w+i0ÌÚé\†:à,{và€{Œ¿#‡tæu½и¼ n üòÆßFˆ›…@Û¼�oj«¨?ÏîÉ?·E×�¬l³¼y!ªÜ­çâO#O››á„Û¯Á.ÀvNÌ÷2¸™èËÉ÷:þ�` =œ, *éNÁ�Œ¡‹qÏ^S€= »�<޳!̱8+pz\àìS0ˆ´m&S$Ÿ‹¸i�ò)i¼¾§À?3˜ü†>·ÇB™S‘y`™ÊWÀ ¯×d+!­}X ØOåÒ}2Úûó/ÉæÈI«éß ÍПc sÌ9¶oNØ”Qà#Ò½_8*ç…ŽQ ÐFOä�@ö#د³zH³pÕ°˜8ŸžcÉË,gß'‚‰òyõ#“ƒ A©|†�T¬)~¥|„¯^ËŧtÉÕàíX”Gî*&¥±v:λw>o>ÖîY ¿·�<)¿ü ú¥üø5z‡/„”®Ø}‰¸ÅSž¬>yÞ ï ŸÆdå|¾ðWæ:ª'^*ú4ÆTòêÒºjHׇ¬¥óy8V‡ ž^Û–­û8Ì—O¯q’”ÚpþeÁÕ@c’Â-Ï1^JOl—K÷D‰ò5N¦¹xͧ2Uô®xŒ7Ÿ�cWø÷€”v�||Ön•ý[¹4§4„YçŽà^ðHå|Žßrwã¥ôåp;ŽÏÊÅÛž³Á&àwà1�ò&·Å0·šKsþmÀFà_ÀGnÍg¹[¥zñÓ û‚ Àá qdÜ£ Ø ^E˜qâJ°Xl)îcü æê^ŠcŽñ_‚SÁºÀ ÂCÊw/þ–�Œ7ð0^CéjJž¶·��qï€R}áv¬›�ÆÃ¹ÙØp|tÅ0LGº³<^;{%žðÏ Îâ,¯ƒË¤<ºÈy¹´^³䎋˸„¸É‹òo—KßÊ0®¡º<_\^:¾È´Eå ,Á+ðOV¿:aéz}ÿÌYÆÆïö{*»=wÒŒ“/³7þJ†ihR"2eOJ^OÈ›@R,óxÐB,~-ª 3ï [5Õ‡_%™ˆJo?0~.~ŽyÒ †�°qÀõYœu_ ¦ÈåµîmAªûqüå®› ·lòb¹¼Î$Ö#Aª»Å°˜ù5pÿ¶¹û¤¼¿Ê•­"Oá/àÏ+Ûû8ü Œ•Õ5þ—€ùœ™iŒ[f"ø'çƒt^]��™ê ·¹�c¡»†ÁÕé= �Ó¿gãp|ÂnÊ…?ƒßñ<P�—Æ ùgHcÿy •§ëäæ(°(Xœ Ô)Ía)oV÷v¹¸Ã@Ø/€“À”O%n¹K‚ÅÁ¡ ¿*q²š_ÁOÅqÒAƒð/TTﱄ¥>]Ž?]“³ãXï÷à8 n]Ü R¸Û¼³åËì�¿’†aá¬Ñ6\¥9IOJÞ?•½eIÒ¬Åe扻˜F8@Æ6ògð-ðÀJË@Jå–_Öš.•¯Ë\Ã\Ì“òä]ÂÌÒ|‚»~Vo±a8$Ÿ'KãE�Ì—HÓFù’gà¬* 6Û·vÊ‹ßþ&\•ìf-ƒ5¥M.q‚¯€y…Á™âu‘Y€}ô@#2S>>üÍk Ý2 Ùxº%KŽ'ïÓáVèIy«ðæÌ�+ŽÇÿ&®Þ ×nþZòš/ÞÞ‹°+A*ÿIü-.üÛ�TnÞ0¨üGeq#q[Mà²voDxº~œXý²¨Ý*üTöf)Ž0u×ÝYœùwÉÅixRž/ñO—‹S7] ö �‚¾Kñ½qmP¥äG ¶CÎ •¤Ö»'²™úeUFƒ‹ �„ï¹9ã Û.‹3�Ë0À` ¼KÚ!£½­~]¶zâÇm:ÆÓp<]æ Z•z–.Jc?'ÊÂ&Åõ$ݘç�GòúiË(Ê{ïöYœÊ¾•�æ'ÒÌL`0°? €AjÞ–§•ô¿œÁLœ­¸uæÌë>Êz ÷UŠõ¢È‹eN�Lˆ»iÓùKéäT( ùis>Œ ºÀ€z"IÒGë൦œÇ8u· E8þšaùwÖÉ‹{5pò˜óÝœ ¯OžEØšÀkUåê8:’-ˆLºá¿øo*‘ø„ݶöeKðHr ËQV¡7Ð�W0+PÞ·|£\%Ø/ëÖ A>ûú"yßÀÝ”]Ò‰({Á¨’ý¨ÈT$ó‚÷A»B‡W!r p/ÐZ;CW¦í~}Ò@e_J$5‰õ¦ÁåHb»Jɇ–*×}âÉYúé¥2çÂì«J¼”|R*�°�rá“çü>‰0'Ç‚å€x"ÐqûÈ|'€ÔÿÅð eek |Ê�®h@’,€çâtÐŽk[ä$$è)IÙšdVˆÛ>I¶dœ.Ÿrn~Ü-Ix? ÍËŒí¡ù€ÌïjØ™¹×…å8yêLlCš$ÝM¹_g ÌIÞ�„o•Å-[”æAŽ�ÀoÁá`Xxm+�PÎÀ‚oôÏÛ8×�-�ºe0¼J]ïà>n$Ïk¸e“¤ðÊV`® Ïñ«œTÐÖ³&¸ ”:©ÞH€î½` |=Ú)ü¦™.¨Å«EMâ ù);ø6â¶×gËM'>—¼°ï—Ž-ï‹vÒ¥4¹i6^œ&ß§–¾ÂÉL$¼,‘epöàÀz¼h€é@+a ØÖ³)ãQÜíÀºÀÁç¤Áœ¬–$ÍÖ$¿ž'ëjψ ôŽÆÝÄ”0YVŠãuhæOÏ�E•tœˆ©4‹Å1ÜFë_Rw~ØžNÈçµ­I†'O 7—ú–’w3Øx-ÎK;>Ƶ�¶ÁkÿÐ"´ui# ?PxýjLÉ �ñQßspÿAzõS¯¥+„ô¨ø1�½“Ìe Ž/#üÙчm~W!d£,tJÜ|:­¦GÅ=#åxC´E�–dáäÁMy ú¤üS´“NÒä´ù‰VAj¸’u�¿#ù±�Èù¸Dܬ¹°Á9ÿñ;g÷÷õ�pàS^™2×Y_Û3‚– ”d€1ê _%çÊUy…¿�7‹_ˆãkrñ…'¡8ܘ ÿº ð$®]ÞOÛ‚yAËyJí·²×T­òËX8¤1wK©vïî·àj�® 'p{§ôø·©œ§ñžéOñ¹¤=/—×ÉäÎÅé û°Nëðš*¥Á¿]n\þ©¤µ8Nך“§5Sžä¶2ø˜W´¼¤–Kó ¯ÈâÝn¿(ó›¾ø)&u“úáU`Ý®ZékÂ4©>ËëñÓŸù²[U’�(—Ÿ†Ži¤N”rí¼J§åƒÔ¯�”O4/•u we òr ÙÒ?Ž]¶¹\Mé¼ák^IÿhtS|Þ0LGø�¹8 ™my¼Rý®lS{�«: ,ßÙÑóà�ìØ0ëÞ·¨Íæ "µéCüæ{hDR¾_¸wö°°O)μöWX †ßY�+ü ƒ� Å[�õÙWû,ïÆÙ. G—/ÚTG¸?�ËF₱�7 Ž=ÇLŽ=gÑyåéXºL˜¸À?)x ¤1èªw=0%0nQp"¸ìæÏå=�ã”O÷c°?˜Löꈔæ(ü-ºÿv¹¸¼aPIÿ/7ÿÎ@Ý`¹æ{¤rïÁ?ijWÞ%|O0¨ïÒ¤Xž¦,JçðL�ÊTÙþÀÄÀ•F~òxÇ…Ii¾œžø[gO2w5�uV½!xعÔÑäJÒÛàP˜�–*›¸yÀå@¥žò&÷ ž›—Êkb˜ž�”Ow،ʅ¯š/‡pÖ…`((Îo^‰ßƒü ;_ÏĹrIƒ!Å©´÷MùR½«àC@J›\öàÿrq×à/¼æ�kÞ@C•7.)¿aO�R3ÜÝ Ô¹2ÿ'@£°ˆCn’Î]3ºŒ…¼aHã¬3W¥?W1_„­Þ)¿“.Ǭø&î5{2H×Üy¹8Ç©ËpbjÞüäïzŽ[^Vµ Èv ÕÙb²¸y‰S‡¥xõ€ºKäË}œã…‹û”މ³'¤©Ý¿‚_¤4É%¬?¸¤´©ÎbÔ!-“Ù”¿§nÁRR`U„½²q©H˯âq»ãÀ÷2pé9·S¡œUI$fý€†Â“ñÊP™µ+ä�…H´FÆ“©¡¸Œ|ÞàqPi‰•à ³]­„4Ë`Ýsƒ €Γ¢’u�ð3Ü‚�v|<–i?•½�³•-À2ÀüƒÁMä»·¤PÎRDlfc‚Aà.òÜAÜìø5г£ƒ‹Ú0aë‚…À4À�õ x\CÚÏqÛå:[YØÎ€Çß÷€‡õ{±†3NÚÛ�‰ãèm Qø+ãÈë·�PÞ² Žã¼8³ ·¤N¦ ¯+÷ä½Þ¶×�Ü.ǿ׎ò>0îPòyí¶ùwâà¬,Àw}æk‰ÄC¼× J\=ൗ®m¼…¯ ¯Á�´'”sqre›¼Ž¼wy7n!íl¼g©x ;¯àNþ» (‡TÕ0”£ÁQF0 Ô&(0×´îGâF'&o¢È†v�¶E™NH3�‰ �£ËpBi­Œ éó†Á‰ÚÚ„iT“W~¹ôÜ6BZ•ý²Y„ïLÝÚ&¤SYÏ ,s,àëmÒ¿†Û©�_c¥�<4 òA�Ô¬``�#�y^&oÁ0â/‹ä­]Y ŒB‚�` 9@9=FÏEÙ„2�M»º=’Lá–TðÅ’ömÂD‡BºwH º-(øñÈ´Ð((©V®ZôC�® DÅ% CÅ)Ž ‚�` (¬2–€WL«eœx¯à(}WS5#ajæTDC‚�` Á¸“þMVÔGïuÜPÖç‡aúüD‚�` Œ ø€K’ñ“§F\ï­$Ãà6”7ÎObµà½‚š’¸ù\S§# ½a€ý{o~O“•1<Û—ïM‘eËKÛ¼‰>1ðiHoV¤}ßâÖœ„a¨¹S ‚�` oð‘§�` ‚�` …�0 -T„'‚�`@Â0Ä8‚�` hÅ@†VtÄA0 Á@†Á@0 ­ÃЊŽ8‚�` Ãc ‚�` aZÑÁ@0 ab Á@0 ´b C+:â ‚�` CŒ�` ‚�V Ä×U[ÑÁ@0�g€¿9yÌÿ•d>:üuÌðóc~%¥jÑc€MH ü˼ôÙÙ’ ŠÀ¦cà{zü ƒôݦëy w˜ëÕ[,œ@þB‡�½ÿçÿÍûçA­¤*†�Af#v§·ª=‚�Ñ Ü�³N­~‚¸O—ì<ôûn0C3ö¿‰ú¼%×ÝÅý­Ö=ëYµ¸ò82VÁõOßCj‡�éiʵӜhI…XºT¹Õ¼Ç�ÿOÓ�ḭR а¦`Àm ÿ]k¶¬·n'…Ô^¯éšõ‰ï#€«ÿ�úeÀ-B·ôûg]Hç8;íTÓ0ä+>�ƒ£AÉF冿aX„ž=Ù°½k¬Žù—”û�·«[MÙ› èõ™ G½ï+àAøž½­0 ��Žc»Ý'"¸ÛõÜ5.׸^ëùÚv®;un§TëC½óí‚�` iÃÐ4§:: Á@×ÃÐ5ž"U0 MÃ@†¦9ÕÑÑ` ºÆ@†®ñ©‚�` hÂ04Í©ŽŽÁ@0Ð5Â0t�§H Á@Ó0†¡iNut4‚�®1†¡k.™ÿVîf!¿$½i\¦£kû6n÷¢gÁ@ã2ÐÛ­¤© F„Å Ì^ÇÁ@0P ôv+É­ ´ôþÇÀK ·åRDH1�Æ€ÛŠKe펯§ÖÑ Œ¦yÊ©À¿¥àKÀùÀ}æ�æa †ýér2 ÍÓûèi0Ð` ”Ó0H�ÿ± �iB¸ç«„&<ïÑåÆc ·÷�‘èQ0 MÎ@†&Ñý` ŠÃPÌHÁ@0Ðä „ahòÝ‚�` ˜�rß|..?Žƒ�` èsx0bB±uÖ�[xHfp¹EÙ PÖÊüÌ29^gnða—ãÖ�ÄŠ¡îNY48zÀÀää93ÃB=Èß& `l0€ˆ[Á¹»ã·®Srauå�C]�®hl0Pÿ  LýZ‚“Ò‘Àc'¾ ó93l��u«›¦Ð� ó 7Mo>Óùˆ¼yÓû4Ê0~<ð ø$ùžü¾k5u`^ÓX¯éS{>¶Ì,­a~ÈG²Mÿ=îÒà4àwâ¦$Ý”„‚ÿÏàÿ@«G÷‰›0ËØOË)´‹¸É8î¾%l8Ç2ÓYƈ”U$V U¡9* ‚�Oâÿ\ Î�7À1(D·|ߢ7�8 €¥I3%îßÀËÀø§ÀÞ„«t ‚ <·ãŸ[ƒ$*c M*µ�»yn{Æ¢ Ånà�,ü=Üc Ÿ÷A0>P\5<_ð�1Æ¡¸�‚ë²c Žm6ü�ÚtáÅ-'Ãï&lgÜ׳ãGpw L#Q5 ÃP5ª£¢` (b`uŽg*Pì~`” ³ùüì{Žo—�¯Á1à@à,ÿR ’?øæ½JxNœóÀ²à± ávG¬_ý¸)8XæÕà~`;×€$7á¹0;0ߨ  _i�ÆåoÀ<†Ùf½ý8¤¨¿‹fùš×À¼àX07¨šÞ‹Ú~ oþ–E½(/²Á@ó0ð]ݘm’�qÝ’Qœ�»�’×%ÿ6 øá €`8Ø�°mp5ê¢ÝP²óàjHfoƒ-H³îÑ ;by3ƒ}€zòXÊÙ w] !svŸ760a¥dmûHðǬÍÂ? ì~¾Êû`Òl‹»3�·ÞfU“_”ª r]’iÍ'yÅŸOnƒ]yËú%yí`ÉrMR· 8z<Ê u€‡Ô)\£Ðt•ÍjàVÎç}Ô•—©{XV·3ä½ÁüÀ@^ïÜÍq’åñôŽÅ;²À›q“S€9@š]¿Cù9Vn/øºö“ôÛBYrÛ7åyã÷xÕsÖ•D]ÙžØæ �<ÿ/K¤;L ~ ¾ÊûÔñàhoფ¶c,PU�Ú^egÐ�-²Æuæ¸ìSƶƒ! É€ë\g0xónCv¶‘:Å9›†þÌ TRÎ`W§�+@_IR†ÖÿeÖuÒØ™?9®’$üCðÛ,ð \gøŠÛ6Bñq’¯’§W%œ$ß AA¨·Ð8MA�¹©Í~K®ÐÜ/ÉŸÚg|ºžR˜ejúDÚ3 š.÷º¨å=ÍWTLÖ žÛ¥Àù åB©ÁvF“`ÅÓg°8Xü¤k~0~·hÜÎè+™4W±»ŠJ>o0 ˧ÆxôoÚï¬{:àž½ŠTSxŸwÒŒEÃ5Œí‰y“¸ZIâ= ǹ†¦%?ezà#�—¤ØóaÉÿqæéGÞ©hÏǸ–çÊÇ|ö©?¨Iƒ¤¸AÉúî �¡ oI iúÓÕ™³î†á¯áóŽÂY˜æ­ œÜÍ Üî(¾ÎU¾G¡ ÞÂíKY‘öj°ž»f ¹WEêVW’¼ÒuÛh;0#Ø�üÿ‡»p{ìMð,p¬n|²éפ¹×mª$Žagæ*ä©ÁÚ¤¹W#º-PÔwCÀ]à·`OÒ<Ž;¸¼I&!~8ͱç¶Ñ 1øéÇý#˜h o+€š‘âSªaÿ&P"B!”b§9¼¼øBjˆŒ[.ÎfÝS߸"˜¨Tó³`[‰Êõ‚V!}s`ÛÏΜUæ#Ài(×QYß8,H^÷ÜGÈé`_pØh$†ƒÉûy¯Æ¯ñX¨»44Ž$*}WJW�]ÁN@cª±˜ (ãƒ�À¿À²`=ð�×)ÁÙàSð˜ \.I¯šVyœ ¼ŽöÛ€é�m°Í¯ÑæÔ¾”—¨‚¤ãªNÌS¥©¥\_ÂHK¡RñÖà 0h¿jð.ÖM÷8ãÒX·Næ¿kgºI áíP{0×´Û$}-7ЀÀöàEpíºWqÌ=Uð�¾±\ðïËi‡fqÛâjPg�{€7ˆG�fK¼�¥Ákàð@Q§ù⚆Eåÿ`}—ƒ‘`ð%pêÒitwóƒOÀ¹àzâ¼íÌ_c0!PÑ+oÛ>ÄÒý@ºcð> ìkð$8Ü ”W�ò¼äA&?à>œh„ª&]1 UµTUëyTÔÆìNâH[P.ni¬V ô –ŸÈs Šj`òV"‹7�U袕þ K¶ ̈ûïuJ%Q¿OÄE‘­Ê#�Êö¯òI/Ë�î~ŽE!NÅž”{!ž°#ðˆ!Lîÿ›¡% ëq¥SÖ�…UŽ ‚+o.ûç,Sçjº¿Où�d!Á@Ÿ1P Ã0&½©÷÷#ìCH0Pv0 ÓRè‘à÷ ýù_ ÇaÞÇ ú”�üÀ,WC®¥ '@½�ÂÛå"#Ê …eðûƲ÷á’¸uôwpF!>C�X ·O(»a`p£G"$`ƒàu¶=8øžB’'ñìÇ5s_ 7¨Ên:êÈ„ÄÏ–¥iô}|WùèwÄIÄ56ÙÖÑnôò �ž:²Ó—ï'ÔËê´Ñ¯WÏI3ˆoÌwz.«jh�ß~¹¬ØÏúx#Šá�\üžŒ�&c€s¿]>8š>øÂÚw)°Æ]·…ýˆÉqëu‹¸Æ)®Jó4€ñ:«­Ú†a|4Sg�j xŸ8qåÒD  @]øÄ‘OåŸ:òhÃÅ(t:k#]­ˆ/ÝÝ â?škåŒô¼ê# |’’ú©Ú†¡Ùfù­ƒt"Âm`0 3нôÂZºè\\Ü:ú·Ķ'ý06~Ÿ¦ i<JNPÒ‰¯Vw? ¢ëªUY Ôóm(I| ´-šPf0 ËQä‘à×¹¢5>‰ä_lÖÓû=ƒió+`Ò˜ 86ï/Õµª.ŒçhÄÆ¥aÁ@½2€Ap‹t?àg-òOÝËñŸ÷OàÖ•Ðæ·è×&4z“›º:{]j¬»7Ã8Ïþ `©ªa°v›Û+6ªV›Kèï ,nCDHÇ 0žg$…+‚uAºžÜ‹? Ã8ú·.…¶¿IÃEH“1�rUºÍE4 浺¬—¶�î!Á@» 0žW&Ò±²D.Ñ�,ìŸ1¹È±Þºb ª†fü°Þª`±géÚo_4¯À øÈß6àh�ß:z„co0ß� Ô-Õ6 U«+…üIŒm¤<áoa£0;'ƒß¶Ž1Æ×øOÿÀ(ø‰‹�` ®¨¶að¾ÂHðe�³V//Õ8��Ó< ‚÷ž~þ Ìõl(þ=Á�…79bÂ[¿ TÛ0| U>ÊçÍçZ–¸ÀkùìT¹mØ„I©r'àý±‰rÕ?ˆ_ Âã¹°†ñÒo·É¼/è„.¤±ðœeìºÚm#U5 4ÂÆÄ$Ûœ†¨UPŽ3Ò¶À–¹6~…ÿð†ô'¹ð†ñÒï¹éŒ[f>([« sf[:âä÷&ÎóáŒáQ-¡™§ª†¡¸òü1 œ�ã5@ Â<1mý®¶ÜŠ»—ú~Ûè)ŒÉM(ËUB~ëh Ç{Âý͸�,^‹k6r£ocì—ÿ[¼•ÔŒa U¾aé ¼X¶¶:EmÜëvaÚÐÓû ‚/¬ù�#_X›,Wâ}ø÷Â(´¹�riÅëg0’xMúnFHc00N®%?¨WK†Á¶xA†tÎÀ„$©¥s×y‹ë$F¡?Mu e VF€óÀ…Ï hÉOО¤¿y…Ò4\Ý�ñ£Žçï›)ùó<:„ßZR.µÔ–‚jÔã ÐüŒ®F›Y_ÍÂ(¬N‹�KçZ>ÿþ„+raÍæýŒþûŽFH�3ÀŸŽ.tºú«%eü0 ö¥¡�ÎðfÑ3�'‹]a€‹Åí"·Žvçò\‡ÿp”⋹°fô¦•S3ö½ÑúÜ¥'BkÆ0pñ½Ë¸´ÑÎBô§¶À(ÌA ýÖÑZ )Àoðü¬…�X‡MÅ@Í.P÷ÍÓ¾W½œ÷ç>Ey¨HBêˆÆ›3§µ��¢Î—kú{øÝO÷…µxB.GLx›‡�š1 P¾8ÔËÅèìÒ·¸U"÷ƒ�:a Û:Ú‰æüîQ’;ñŠAx4„ 4#µd¦äÌUg'Á—õò{ÒuÖüæk.FÁwþ VËõ~8þcÁé…/ráá š’�Z2 %›ªñ³R/«›§±:ÍÃ(lHMÇ�¹s5Ä¿¸£P�c0וðåa – ƒ/m¹„¯'eëwFò“å^µQ Á{W¾å¹HïÊhn7{ðnH0 d ÔŒaàâ¼–6‰�` l `úSØ)à· ÉgxÎG2î¾L�áÁÀhjÆ0Ä ÊÍFaÊü3˜'W¶«ƒ?aîÉ……7r TÕ0p¡ú ßÀ¼ «_Y�´þʸ!Á@§ dãìpîsInÂs cé•n0 ´e ª†�êûŸïî_{^Ož0 �Ò1o,ŸVé…5·‹þ.0 ~2;$:` Ú†¡ƒ¦tO‹tHODb4냣À9FâwëÈÕBH0 t��j¼ÏŒû¬xWÿûÙ6Æ›Å�Rš�lëèÄòï•ÜÆñQ…KçŒÐ` (Å@µ ƒŸ,ööë ]},ulÒ¾ B‚�6 `V$ðHàÖQ·ŽŽgaâ…µÄJ¸Á@¨ªaà"õs¯¯w±m‘,h— ‚cw#ð/à§„“8‰ð+©·3Þb 2±n0Ð Ên¸`ý#ˆY€)뎸G<Œkù�îdŠ´ÍÇ@6Æö¦ç>ŠêŠRÑüÌŠÖd$$è!e7 ´c=à+ý8YW·‹HZ¸À/ÄÝÙƒ�` …E ?l�‹w‹ò p FaD.<¼Á@0Ð*aÆ¡…q{Ðg J2€QØ–ˆãA~ëÈǘà ܋ÛÐBÿ§ ƒãÓ×÷º£Ñ¹>g »Û=]i°Kúî¬òeš7$hÅ qàg-|?!oîæØæ#Ä�ú�_·%Qæ§SwÓ½�Ù€“°�` ì TbÅð­<¸b莢×H= B‚�b¼�°˜0áäcpðÛGn'}”¹¢4},úÃìØ§”|Óþëœë#І}à ܇"êA¦¡‘³�?‚­ÁåôóÜéÃW¸!Á@Y(»a`€>HËDH0P.f¢ âí'Sfè¬'(Žd@†á×pö)ʵàâ×€x�Bâc®º†�ÊŽG2¾¿ÃßWb“è÷sáÛƒËèø�Ð>ÛÚ”nµ�CÊEeÎNY+'WRvWß¿*Wú¤œ²†>éETÚè ,O7ÌuÒ™¾Û(]Ý22Ýdp:ËwîªÂéÓ@xü5ŠBÅ«±Ð°hhÒÊDCâ E÷c0%ò)n9ej +Þþuµpñ4í»÷"ê¶]M#ô{U:{8\TÆŽ[î9Yy×ã6…á ÃPÆEUŒ�k(yW°D®•ý@ 2Py;ƒžøæóŒ@C "uéC *ÔR°œb1½èŠ8ƒÔ�8£L®«ŠïQV�ˆ[\ÃÀ'@c¡«QyÍ\Ó¹=fyé>�Ç?¢äuû’Ï-ä~&ÀïÌv)°+uŸ�{9ø8—ŸÃúúã¹ØùùŽ~i°Ç nRœsÁl`âìXÃü~'ãϳù¾%ØóÒ"¤ñ…[ËWé˵Çf�{xx^œXž\â9¶lÇŠùFhº‚g¸ñ?þÇŽÍB=;VjVÂ0Ô쩉†%¸ˆ>ç¢:‚ãë€fRÚ³â_ìKšIãÅ_ ‚ ur\�ÇTôk<¦Í\÷ï'Þ³|ÝT—~QêzQQ©°º**'E7W$*¢2WáF·4 ƒÁ¼ 3±�¦; ìÎ%¿†õõZWF´±¤Ð~ÿ>ÀUÑ@ƒpá~ñNüw�‚rJ†©ˆW)ÿX¨”�@ÜN¸Îô&®çyp8p2q1ž '¿�¯È3 yo—�Ä.¸{�%€çM®O$Ý—¸óp|X|Ìñ!¸GËÜœ jVJ ôšml4¬©ðâ¿l‘cA#°¸� oW.ÈÇñ'Å›KV˜�«h;ÊÑXL4 ºÉ L‘ùUR†9kÔ�hT:*ää&CP±ÍJrGý¼Õ5K è¥kù3•Þnàbúv5îãðäì¶žd_{(ø\úƒ5Á²ôi1Ü›À‚@Eÿ(x+óŸ…»Ðxh\5˜W[áüœ4îw�þ``9N ã<׉3güÆ �ïày`;TþC(û*\Wl«€÷ÀãÀ¸€çÅ2jZÂ0Ôô鉯%Pf#¹àœý­¦Ká™»8îµÄïM:gÇ=ò«@Ä»�B}*g¥ Cr“ÁÐM†DC£ß•ŠÇ>hH\©èVRœ¥îv>Ú{îµôµ^öË×¥½Êû`Oð%X Ƚ[JGÒ§?âŸü“ã+96ΙþÁàmà¬Þ4Š¡?°,Ï¡évžŸ Aªo»ò1¾?s6uÍŒÿ0X¸ú[|v#ÍͤÙÿ™À‰DÍK†š?EÑÀÎÌn;faÎâ„ãx&pàT\ˆÎÖ*.Ôó-•ˆ�UF»l£³Ð ‰aº†©”&ikKWE'4&�¹�i{*–¿6XìA›þŽ{ýø·–åY·(X< ɸý�qëL\qvï ·zþ‡×m¡M�ÆQíh LgyŠßÕr}Fž;p»bäì&`]ï‘ï3ýˆçg~à¹5ìv ˜öD†A6B‚�r1àÅËøoÊ[ ¨$]’{ñ9;tv®=‰4ßស]ìxû^h‹ŠDti–Nì›Ê.Áí+g¥*�žÊp2¯€{ÁY»ðÖ´¸fÿ—³fØ÷qxÚ”>¼�ËáϱFÀúVÀÕß Àþ§Iƒ’¡p†Ÿä‹äéÄý‰ø|>� ŒcQñ¦³e0®.D«VVᄸœÒ»7WËò'ííZn`´­-œ³çc.ý�^Ü^�÷�e�³k�„ÆÃ§SN!}­Ï†ij[¡Ý­”}™”T®.º+îq¿^wƒû)[ãP7B{UìÀÁ|¸Îþ—k‚åÀòàj�$)h ÉY '\CþµR"Ü€“ W¦Mâ–_oÄ1©PơΉ©[cc=e×·VR ©DCCCO®DcË\¦û‹§”¹Ì(®: ¨øg+/d±8Ì\®»lŸƒ ó .Ì/ñ×»x_Â-�ÎDCø¸<ÞoÁÁ7¸u)œÃ?ÓðÅÀ«ôãHŽ]->œ|ªàW‰JÚªQA»êRf&Ïd¸<ÈD>î[€ˆ¿w°=è�xŽî·ÿ~þ ö÷º�D\9ë ª‡A˜R9ûeU�”ƒÛ1G�4«v‹Á‹n;ð"PÛ»�Ó¹è'6 Îŧ«¡bQ1~ ®»¹Ø ü žn/ƒz¸ir»ò.1›ƒ#8—nƒÝ\== ŠáŠi.Âý\grx ü¤IÂôøÏƒU�å\ Š9ÖÀ(i]|<:öç’ xhh4GÑžpWi¼â­mI�-g+�±ŒiIWβËU–'·.·ÊE@”ó }8ì˜õÅƒÛ [�ËÀ‚@ã° ðE§?£ ‡â¯W™‚†»jpÜjƒ‡Á™ë ]ßâoD¹’N}þÎÆOôy®²?8ô*dÓ&_K‚÷Á�`f`9«‘÷`Æ…Æâo`p:PyŸ ¾!N=1htÔiÊçÀc�m^Ñ¿Éñøà]ÏY·ÅoºõÁÛà0à¹Ò iÌkZ~Q�Ö¹ŒõT¢ìr5wl z´\…E9Õg€‹Ï§NN¡fgÇ*ÌÁ‘à÷À‹Ò‹|Y x< é÷ Ÿ µÅ™î àyp/ýÐ(4…ÐW'™÷d(Ùg’/ W‘År2cal° ÓíÉ_00„š%vœŒMøÍ¸¢ »­„ðÍSe,…&ð áGNØÌ8�‰÷6jZÊ®¼!â%z,B‚�J3àý|𧬢Mqïd ^Ê…¸1þ“€†Cqææ^³ï:Ü_©¯Ÿ[i÷MõÕäšn­“ LJ ü Æ…†Å°_å ðCÁ×ýŸuÈâ Aƒp;Î0°˜ ¼ Üjªi)»a謷ålÝ%Z�‹ÝÙPH€:_=…¬>¡2/˜üž°›‰ó ÔÝ9vé¿P~¶`+âUu#´·Q·‰úê8.6{ƒµÀV@y¨Ô/�óž^›œ/Á–`5 ÎûxÈÏx|„[ÓRUÃÀ9%l\«iVªÓ8÷,W¯V§ºÆ¬…‹ÌoÞœJïþ|¹he ¡¸Š8¿Qó§,üw¸Þs˜ø?»þ�&d€sï–ÎŒƒíqÇŽ å{âTâ=ò§\ŸŠs;SëDØú¾&Î{5/U5 °!A“‚Ékž™Ê7Ч*œI„ôž�s(Â-£�ø\˜îÃFáwÅà ѧ”4s€‹×8´ìÒd dŠºìÊšr5®êR’•¬fãCŽf[bK­ #�‹ðkŠ9¸ SÜ2r‹  Ä�g_°ð)eàÜì_8ŠŸ` ha Ú+†ï¨ù~à›k³ŠaèÕ’µYÉk§ß�î�hï+(Þk¸£ð¢¸~SÇŠrîÖ“ï6ˆ¿î¹8#3 xC‚�æf Ú†at\©ôôÆN=ž±´2H®}°ÿÎtCÊÀ@¦øO£¨_ƒ¹ÁÔà”þ6Iá㺼¿˜0ÏÃñ`Zàþ²ûÁS|ƒ9ì˸» î‡áoŽýFþ`NÞ´V¼1?á;_xá©?Á@“1PU÷.Û×ó7Ï>�p&ÃPá�B÷›ú®\9ø¦ébÀÇW5­„´Ï’ö÷^–È"ׯ=•ð?ÿ^N0ÐT Tû©$W e4¬ΘûÖͲBª…Óq�x(kÈØ¸¡èg,Õ0”¿/4ù¨ë½¹ø ð_Bž¹raá š†�j¯¼ù÷! šIQúV¼¹ Õ”ý÷(õ¿R×/�«W¨‡‚6Bú·I>µ´^–`%Ü«@üsYX8Á@S0PmÃà–Š7ùÜûý¡)ý®‚+†Ø–¨î ”ê.;gÕî„’÷3¯•jáoZß…Ø"K³(®oIoFü‹YX8Á@Ã3PUÃÀÅå¬Ù 6$¨(ŒµïPè'PÉr`!ࣩǶ1q%ß¡!üCâO:ŸXÚ¸ 5¸…ðŸºã ž�ª.®~0º$˜ ¸­R}|JjJðÉêW]õߢFoDŸì÷jÀ-#ïA”xÉ8õé$·ÿ~ºdfà#®»áú ¦»Ò¸ TÕ0@ã$à_@ãÒw ÜJÕ>}Ó—Rñ{.(pÿ ç::é‘�¯Nv#ìz¢|º¤çÖß‘¤® Ò÷½ÎÆ?5áþALÈiLªýTRc²½*Å@Ëv ŠÔ?E÷å±iÀLÀ'„æ.•©Üa(pß_8|—•í¤d]Úà ¢3ñ‡ýÀˆ,áD¸ÿv&{µ'UY *Ï@_ ³òLÖW î�WZ–Gy^K%ζݎ¸•è×M}"ÍíÄj‰†a °°ïG�‡Á@Ю`Tlç9ôÃm¥S€[J>åôO0/á“$}¸� �` 1¨¶’þ ÚŽÓƒfy*©ÖFŠ3å�Uh”JTô¹ ¼½­1ð;Jn'Ív~·«S!ÿMä÷íõóÀœ@C·ðûJÞ”þH0Ð0 TÕ0p�‚¹Ë†½èHwpk)Á|ßgäNþ ÒVÞŠˆï"xÚ­!å(õ«“]º OºHïc¬®>®<¶?Ô7H0Ð ”Ý0p‘X¦3*ï_tç%6g²þ{’Æ#¤þBîδ½Ñû9pfíªQQ‘j(¼Ñû0ç½¢7£)ß—Þ΢® ÁÀ!$lkâ4R� éžÒ�ð °`–á·¸§¾ñö9$¨{Ên`ä—à/ÀæuW!Ã>ÝÍék’�‡P”*ÑZ’7iÌÀÇU�ˆ¬ ¶Œ. }z #°‰}ºný,Ó–¸Þsð-éç³°Frº3Ák¤~7b_œŒu*•0 SSëŠÀ›�Ý•¸‘×]Æj7}Í=ñ†ÒöñÕ› Ìí£¥@?àÑ7å æ. i‘gŸ ¶™ÅÀ„ûeVol7’ÌJ¿þH‡ªñÐB#ñVk}ÑÀû0H§º¹†¡ÖȈö-  ´G äTè®|ÂhI°ag×å™1I?%�7°ÝÓÕÎ.%Üm%ŸÈªgÉöyèÈI@Rÿ äÏcþ<·ô¬†áSJ ¸‡Ûå �´6ðe Tš�˨`sà–�âløðŽ]”ÿÒ{¡í ¼žú?Ûý ñ7ã¯W)¾×WR�Ôkç¢Ý- ”|ѳ†ÁÏo HÝ5 Þˆ *Ê ûG÷�Tâý°ÉÁàÂ|ô´[o4“þkòíEþ—€�bû8ì´À¿ý+ñδëQ4j§�™@·8©ÇÎ6i›o§ß¯•ê{Ù ‚Ox +UY„µÂãԛȧӞƒ³6y£ü"Ðíû”å{g�×Y¶†À}ÜÉÀÑ„O„{ i|,·n„ö¾OÛýfÔ ;¼ºéc³7”süY{”Ý0´WQ„5ÈÀ™´Éí¤…�3ýÃP†ësÁ8¹é–�ÇYõùä÷b;ÌÆ‡ƒi ÷¾C]­ˆ³öÖU›á:¤ ľaHŒ"ê“ß»´Ü~z„oü¾´Öc¡Ìȼ%’â“<»ƒ£0ξC‚�šg CÍŸ¢h`…ðé!ï‹)®öF�ÏX8êáÆá~²úŽÄ3¹"Ü–ñ‰¥éraá j’�0 5yZ¢QÕb%îSÞdý<«s^Ü 3�Ê}šÌÞ·ð¥Í$à9ã0w 7¨EÂ0ÔâY©ß6ÕëMÊk Ü'4¯‰}PÞˆ^ ÆÁǯÝVº>WÐÚø}bi®\Xxƒ�šb CM�ŽºhŒß³juC%7® õãÔEŠI¼q|ø4‹š w�Ìß+‡²QÀ.À7®“,�Ç•ƒoK‡5Ç@ÙŸJb°û\x`Ùõ8ƒ´ÝorAŒÒ–¿ t Á>«ï¹žL<׳ƒºÎ÷óôë8ï»Êï9¾‰ð´’Úƒ_ÊFYÛ‘õ0°wV„7º¯'|oâó+Š,ºïÚöZñk0fß·&ZPf<§#ÀqŒ¿WŠË.»a ‚e€פ  ƒ«¨ýÁ• ¤-žßeAgc§•Éeôk3àg2Æ£ïãÂéöã«äm%”1œ²!ð+ «Ì ü2ëÄÄ_T©‘Ú¤‘?ô¯‘&E3*À÷ØÚ¬Ž;»¸{ÒÉ› LÔ“Ì5’ÇpHiÚÛ.ràK\n˸ÕägQêJPξÔu�Ö@ø˜©pgðoÐk¡ü‘” '·ß¦'þ#ñ—à¯ñ½x¼¶VÎFåÚ1m©¢+a¼ ðõ,®BJ3ð9ÁÁp0¸åö!ø8þ¨ø| ´Å­£‡ÀJÀq¼ Jûr”vY¶)Gãé·”ÆÇ=8�ru}&aúÏ$M-¬´mCjÇ(üwÏs=®ivHÆ€ºÍñÙ±¹6R Ãð*µ¸•äl# ¬6×p€†íÙn__7MŹºkH_7¤õÓ/·|Ž£ì…€÷P¼€v"ìïÄiüÊ"”õwÊ|�ÂÎÓ¯—ÓÀ\„N¼¶VÄÉÀ!´)®‹Z9#½hãëX²'ÃP²¤J†©éÐÞÌ¢Ö�…íþ¾$[(îI~ÔàThüþ~—õs\Ÿ*z);.‹ƒ¢½‰‹Ôû§‚9€co/0áûï ¬Ävi¸BêœÆ•[Áý:ëFÙ ƒYÅßôŠ•0fÆEgç Þâ]Š:nösÞ~àôM×Ó€€oDïJ\ÙV ”9åÝF¹Ûà½Ì äw'ð-á‡ÿþ�` ª ”Ý0tÔzºئ@‹Uë+‡ŽºÒ•8º;æ»$ôçKîãu¥�HÓ7 pÎ^çüý“Ú�ÉZàêárpWv\6‡º¥®èÊa1à ÝUÊ4„»rxH0P5ªjèÕlÀ§1ÜÇoy„Nz6 C}ží³hö`àüXõš(ê²Ïâ)óÊÞ�:¼>6Š�Îö'üOd/æ' IDAT�BHüU`Àek5Eùu5+ì㺾íãú£ú^0€2þ„ì®Ò¶Ùøß‹";ÌJ}ƒHàJáâ\Â¥ñûÄÒ¹°ðe Ú+Õóæe£o#¥“62y­[n§å÷�Õ€)߈¾%þþ² å¥ü=)ØÊæÀm%�Âå„ïH¼«Ð�` ¢ TÛ0¼No¼Ñæ otãàíŒScR§  ˆG¡�O¦ù>ûíûó‚Í ;‰¸Šœ[Êýœòw¦ÇÏnÀ±4?¸–ðÄk¬B‚�Š1PUÃÀ€NOÊ~ó®bìDÁÁ 0n}¬ô¿x·ÊQiß |4»"B�_Pç>îSP»'S¾ïpá»=þ’B¼OR�Cš÷K&ˆÀ` ªj°.Å]O*2Ûꤿ]‰›DopQ êJâHÓ4 HOW3‚¹À_ÏÎÞ{ý%Ê*)”í#«‡WÁßÁD@ãpán7]HšV+oÂ})ï"ð~ÿN´VÞ… I!õÂ@U ¤ôG‚•@«Íq­ˆËvÛèMÇ�Ñ Ô깪ÚùAÁ¾‡¢=‘ ÿ‘Uêc×Þ$¾%;®ˆ£â§Þ³(Ü Ë_Á”@qŠ~âþM’oñ��<œ�5�Ÿ±¸Ü B‚�n1PmàÒ�LÖ­VV?±ß±iXÉÈ„tзY5Ö *¡òñ\%Y4yšÜu&¾X¨¨ƒK¿¾ZÑY¹Æ�ºü ë0\',3ÏßñÀwŽÀUNÞÃSÃ{÷Ù5!Á@—¨¶a°aãv¹u}—°/x){oQ ài�{Î*û©3¿Še:à¶„†ZxcU·3q;°)û œºj¸8Ž}mgp¨¸PÿÕÔ?’Š4sÏÅþ@#彈AÞ oÄñ™à t™�j+@ïéàVP«/}y±ÕÝ r†çÒ'g €Y�Ê_ƒ &å�!âylV¹™Žß ~ \ií ÷7¢´ßÆ_q¡žÿRß@*º , 4û‚RbÜ‘¤¿Ÿ|»Rªâ«oªjœß3H/�2l­î[×rÛ £ }BÅëB`° ð1Ê)€Àí ÎÄ›ÿ¾¸åyÐHçáç•ó†ûã,Ýë¸gskõÁšWY¡ï_ÃÿiÔ²p%ÖlAرÄUeLSÍKÔ÷;ê=¬³íÉDl Îk/A„Å TÕ0XyvñTå*îl�k²m(•¾[?‹€_�•ÀìÀm„öľŒ_ä0ÿ»à=0|†g†ë~y1éØ?“I~’5§@Á-œ�ëèý€JywàvÍ *Bž£ çS™ª£{b®jüO‰ëÉã¹ :e ê†¡ÓE‚¸˜'äÀ•€[ë€ÕÀ¤ =Q©«ð €3ü7Á[Åð nHy8�b<'3ïÙ¸¥´» «¸P—ƒ#@GF!µÃñ³ðfuH0Ð)a:¥¨ú ¸èÝ"Ú,æSƒRâ¾ñ£^Â}h†  šù>TVà÷mÎÓ_©å¬¬¦mpÿ ®ÌŽ+æP¯7½¯® »"ã‘h[ò]D»�0„2†¡CzªÉEëDkŒþŒ X¾%Àí€ûÀ]à!ðø¬Z3Uê ù™�kñº¿2pKé Îãmœ ·æ*"”?/Ÿ ºjR;æÇ³.8;„ ´Ç@†ö˜©B8¹7‘g¿{‚Y@ñ9q{hx¸¯}?†úX8Ÿrÿ�f,ÜË_xÿÊ.Ùx9„‚éAác‘Ç÷þC»cÕЛ)K±j¦¾÷i_¹@Ý#^l Ü£.–×xÜþs1=5s¬¡¾hÜÇ8·7q¾žÃ_V¡Ìï(ûp }8û_¸MÔUñ^ÃÀ÷ B‚�vÃÐ.5å�à¢v…° Ø ¬ŠoúòÒõÀ½êGQïà†Ô0œ£¯8¯ÞˆvûÏí�ÙÁÁ„ýޏoð—U(Ó Ž£üSq}Uƒ´˜tEö#ïµ”ó^WGšædÀåeH…àBüp†ç}�3€O³$£ðþ��[+‚ݸh/a £NÄUÕÀs©¤Ùüè£ ü2>¾÷Rô_€“Œ}€+‰ïAG2#‘ê(A5ã¸.NOƒ «U/u�žÕyNµêìM=´uzp=x ¸eYq ÃPAŠ9‰€U¨âš *þI€âlòUpp¶y0úÓÀ÷BêˆÎÙ�4WÞŒ¹Fß™¹�WT¨û;à£È'QѲ`Càªó#ОlBÛ܆ªñ©;ÇÿüUlÌ>øY>"üõÉçÑ^sKÉO¾(�KÁuTChƒ*øÉŽ›iË/q7+ï-äeVv"Íäù!Qi?uÎL ܳ m·µZé�®?q>�åäUÃ÷aΖW“�W {ׯÊj\¼ñîÛé3á_¨ãæj*Iª+¹…pòx¯Ï<WñÏ�Ïí]ëXÇIÝ 0 È©‚çHó>n‹�vBS¯o?dø á–»Pž³Ë|™ø·p[ éw&`?0WáS‰ÕäÛÈ­@Íï—ŽÒVñqÜ>ðõkpp@%“ë½gt“‡ísX¯Üp^Užãt¾]NÓ—ý¡þéÀúà �“*¬EÚkqÎâ‡û¢»|{i»NK�—@âçü*Z�Iåàß¼–…7ì TòwÃ| £ —ð_•…=†;.X<—…™VÅ}h.ýíYœ_ÆMe8#ÏçùšãÀ¦AR;‡à× (ž åÊ™žãë�Ïx��ís O¤|Ïæü¦üy—x Ð;à¼,­» ãæÓt×OþqÀ‰Yy¶Å¿©m£ßc+ fÊ!X÷9�³Å‹�35·Éw yÃy'ÁO ÇÒ` p^¿¢K^tŸg]sËB…ÖgB›†‚iÀ>`ep pâ7øcv<ÜŠ õLA%{ƒù�³÷µÀMÀD‹�ΙøßÀìà°/p&X\ ¾óZ&˜¿[B^gÆM Ž–s$ØL $í¸m„p·kNæ± 'w^³ëƒÃ€’Îé4øM³.x, | xB06þ�Àà^ð›ÌÝw7Ð$± àoÁ-)°È5|#pGQxå4m¬µÆŠ¡/ípå Þ Î¯³ã&/•7ÂÚŽ½zç„síŒìï �gš¿¬•~Ñ•—[Ûƒ»ÁÜ¥ÚFøb l+†¬¼a¸ò²©u"§§�…îÙ±Jw! q}; ;×Ð;àK qY|,»?ø#øxìS[s�g€uœ•ÕÛjÅ@¸Êßø·ÀÒŸ“¹3¿³øçsázÝÖñ^Îø�…{Ý�S€;‰HܼøÝ ±.•y^\­”gýÊÇ”ádNy¸ ¤ñr{HÞ?7óåhïOe®ñ‚o�Bùw†Â?†»Í•Ä-µ…z¾ÎŒÙa D†aè© ¾ ɶX©(»3‡SÀ5œTg!MÈçþÆÈ9tý@à5¶pfëLµf„v~CcD5ÄYrw’|¸aI'¹káL>¯r¬\6rš”çyøWDŠ«·¡òù?0¢)nKJj)®£¶›>Å‹ÿur2<çOÆ%T;Þtj§E5Ü.ö…ižû`Ê\S� ^Náb{6Þæeà_tÝY­[!�?2~|iÑí€f”/è´ÊÚëÆYýëð1qvŒÓ"ƒ2ŸŠóRørÖ^,÷`º%À�ÀrïÊàÑNaöîí«ì¸#'Mâ&§M³’DzêGÛá¶T28Ó’Æ­$Ã=·Š[nÖãŠÁúg>‰t#n‹�o¦–ƒÎß7É%­¾7Y·ê×\G5rBgÎî[‚dœm=6»3Â(@DHa›äcx8¤™æÚø×obnT¶wfý÷ÍðÅñï tóòäÎmŸCH·:x| ö0!×™Jø:àö�ÆÅ<Þ PnÁôàò¬ žþ-ë_+%W¨rŸØ6'€‡åaðèç² ðÿ-–ÄÝßäÀüŸ‚€âÍî¥Áß�[f¦™¤S?�Üæí~8 EÓ>®Jß§À@�øHîs„ízu3¨ÿÖvLÖ#'Œ ÷ïÝ>JcæüSÕC_hçb@egÛuËñ¸êr”óvV¦å:Sÿ<;~!ñ± ÷½,Ütn]¦È¥Y1¿~ ×Evùz\Ñû„ÏôY¼7�MøTʇÿ÷àÍ,ܸ€+“å²jÐßö~~ÐîMßge ß�û:}p£pAŸf¢/Ë‚}ÀrEýú‚c—ºÿ¦Ï7ÅÅa0Ðe?~çÇ=ò?W k€UÀ] ¤>pÒø.xº>šÛ»V¶g¼!4CVôܸ‚À} pŸð?üä>\Ý }X˜F/6¿*Ñ�àeàrúøM‰ø ºË€+QŸJšLvgº?íöBH�3ÀyòætÓH{†a8¬ÆŠ3�U2¸½2ˆ�í~Ümàˆó‰‹šÚ: �óÂô†²«„døð¶ˆ{�g€;èϨ–Ðð½d€ñäÍÇC)æJ0Øl Î!Á@M1PÒ00ˆ`?GK§ë�-ÁÀg†5Þé÷‰±&‘‰ð»<~¸ãÿ€[u¡=ãQ©O,¶® ¦ÎÖòb;ïÿ>¾6"þ` Œ ÜBY7¯)ÅgÝýЖ§cFÇo0з ”4 6)S�*I;wà€^ ¸7¯ÑP¼)3ugâû—ÇîÏûxÚã¸ïƒáàSÊM/¢pX>¡�Õ”`* 1Xh lk±ø¤Õ›@CvmÒ *Êãl$ãôX*YL ú¯—}AH0P3 ´kò-d@ÿÈñ#"SÀËá_øœð‚`6�gê*e¡h(TľÁø*î`ði†Op½§1|£K}mVäs¥âlß­-�€–F@øÞÁ<À¶hŠWÄzžwÿ÷¶¦·¿ -ŽŸFcÀ•ø™àÏÀ1½Cû*Æ¢©�` &è’aÈ·”ü%ÇÞœ½#SÖsâŸ,\Uh0¦yÑP,’!nY*kݯÁ·º”ûî÷ÀÕH^܇‰Ád™§]ÑØÜ \Æ?|²Êí£�` ê 0ö|éíT*ÞxÝL#ÌOQ;9 úœ�n†|‹Ènɼ!ط㪬�Éû$ÓòÀ•…« gøýÀ8`,�ÄpQ.Ѱˆaàað?àLì#š÷ "¤ï`,z#úBZr8ðzø5X 8� úœ�^†|ë3#¡òï�»ü.•5ÎŒ\1Ì›¹Ó㺊W¦³=cƒöDC¤âw0 ¸Ò·…ž® ^ßgm Ô>ì°!pâä„É—ÞüÏ·XC‚�>e l†¡T/2ŬWi‹á"ðFñ ÀûúÝÒP¸âð�‹÷&’h4:Ã��« лԓOGPH0PÛ 0f?ã8�V^œ@­Öçƒ�` O¨¨aè¨g\Ÿ/^è(]Ä ÌÀ•ôm°eÖÇ£0wsm jà>G×ê€�ü~47š 4Ÿ¾;¸ª¸‚öÝW!Á@Ÿ1†¡Ï¨�Šƒ�Ïòëý†$ãq[)$è3Â0ôõQq0Px‘ÔUÃÅ``ÆÇÔ¸{²hð‘ì�` OÃÐ'´G¥ÁÀÏ °¥ôG§ÔPÖk|ñ ôaú€ô¨2(ÁÀ„ùV´â‹�dÕ0má(~‚�*3†¡Ê„GuÁ@)X5|Aøß€ïé(+ƒ- ¾ø ªÌ@†*Õ0àg[nÊÅûÒ[ÿÜqxƒ�ª0†¡*4G%Á@ç °jðc•G‚�Yê™qÿšùà ªÆ@†ªQ]bÀϹœžK¹«†Z¸íÓS!õÏ€çÑ H‡Ògo>wتˆ š”W ߈Þøm±ÉÁ~„ÝE\ºÿ@PUÅï—ÍL>Â�—ïªJ}Ù+Sç;¦:”0 Ò‘Á@õÀ B _HÍn#ùͰ_‚߀@_È”Tê7œü~†¾8å­Ó�–v(a:¤'"ƒ�>càj^¬||õ/ ¿¾:5$¿å 1ð+È!�Ç@IC÷ïDG�€ €Ÿ“?¤—Þ–Ä¿-Æ¡ä…\�.û?+÷÷£�É�[ƒ¾ußFÆd¶ Œ€` è{°îíŸvÈZã׈—åšõor+.Ôïg9fng…¢¨8ãU­ÀEÁ‡`ã©Í¹ ÃPÕs•Ýcå¼9îé-è ðïPêb&<$( ±•T£�` b ¼JÉGåJßÿ¦¹ãðeg CÙ)�ƒ�ò1ÀÊÀ›À×€³RÝÞÙ�•ÄÄÙq8Á@ÙÃPvJ£À` ¼ `†Râ9໬äq×Îüáeg CÙ)�ƒ�Š0p.¥>”•ìu»7«†™*RSÚô ÄÍç¦A@½0€!X†¶Þ Ò;Çâ?4Ûn*{7¨o íÚ<µRöÊ¢Àj3àäâeÆÎ»¥*ÃPŠ• j””õ©4m·¬yŸá®ÂÅý|¹›K=óSæÀUIHh0ñ}_–ÜŒñóvqßÂ03ÇÁ@ 3€Âž“æÝ fÌšyîVå^5P�O>YvHc3°cçúâ.Æ'1Љã` ¶x‹æ�NÎú~Öm.nÂz#¾\—ä{<¾ ÷$#õëzýöUÒýùóÜÒ«Ùž` ¨]˜ÝýÄlþjZø0/ð~Þ„ÝA”ŸÑ¨„ ¦ÐAè‹J°[½2Ýœ8±˜µ£jãDwÄNÄ5È`†à_4Í \ðØ\*!_Pç]•(8ʬ.Œ›I¨ñ°Îj�¥ag E|0P› œO³Ìšæ·Œö࢟­BMuË*¤1ðK½�žÏ0 �q²£MÆ3x¿ºz ‘u})Ü™?œ` W „aè}‘9è;0P»÷’ìΪÁÇLC‚�^1†¡WôEæ` Ïø-x=k…O›�qèt« Ï[ ¨iÂ0Ôô鉯3Àªa)þÒKh¿Â¿Y©\Ø‹~`ÂRq äÃ�g#üÁ@}2àA?“5ݯ¯î‹hõõUŽ}´Õï-í�¥ 'h—�0 íRÁ@}0ÀªÁ—ÏÎ_g-^×—ÞÆÀ Ìþ„÷F° X „2ï1tHODuÀ†a5°!ðñÕ1·–òÆ@£ tÈ@†é‰È` >`Õ0 Cp4­]LÌ€ÓJ¦ ÝL¤Ü*4‚�±•”##¼Á@�3ðí·“>¸š˜¯“4Ýä „ahòݯXL ö¥'w‚E:éQ?âã]‡NHjöèØJjöý¯[0ãÑø`'°8芸bX¨+ #Mó2†¡yÏ}ô¼þØ‘.ø/néݺÚ#ÿ™-$h—�ØJj—šˆjž?¤w øª›-õô ÝÌÉ›ˆ�0 Mt²£«�ÅOiû�ϻѻÉH;W7ÒGÒ&c C“�ðènc1€qPΠW~ã•.öNÃÛI]$«“…ahƳ}n80·Ó©-ÀÃ]蜟͘» é"I“2†¡IO|t»ñÀ8¨#0ÿE¡lB“ý3ŸrMw©Ï mX,|‹»âJÉúÚ[IU£ ÖÁùò¿4.k?¥> ,~CÜœÓçðWTÂ0T”Þ(<è{P$O P¶¤%ç•M’9 “øôïo)¼b.ÕMOáów+^*>åÛÑNá?$¦Äï÷œ4ïÓ¼—�#¯ßyZ LÞ$ü \ÃgñLßëxœð¯ sEä#¹ê¸÷{Wùa´ós}“Þ2�‘ë~^&ÏpÜ‚¯QUaŸ?Dø#x…tCq[„´;ë Œ7½uØŸUõ#*÷Y€e¾NšA¸I–ų�£ÍÁà6à'Ó÷Û�Ê rO2Ähð1€&™¾ƒ3Áø¥®·ÈÒ˜î…RiºF9~ÏéÙ\¹úßÉŽ±m5Ÿegø®.Tt×�)�ÊY#t<0ïàÒjTþ-B˜[jG‚5Àã`pXxÿcZ\åËÑÎ*í[Àf` XìNº qÍûgð>P©k°Ü¶Ú‡xÛi»“ÌŒG#µ Ð(µýt•t%¸üH^ëœ3KàŠ¥â†¡âGÁ@í0€¢ù†Öœ ¶nc¨°ª!³RÉšYE¥΀Uàn©(¶Ë­œe3ÿŸw‚ç�«…­�r3páÌW¥¼˜| ®€…ÁÇÀ2®n#M6ß‚¼,ÁÁJ@£síú/î_€ùm‹Š;/®JŽ&ÝÕ¸e= ¢ßüØÆûÀ%@1Þþ§m,ÃΤŒ³ÁµàJ FÁÐÞ`> aÑØT\ìDH0 4(¢Ÿèîu(•¤+‡jÈ$T2MV‘Û/n]~J†âuñ#˜¨•GF;-¿*{ó¼Až'ñªä—¶ßUÂÝĽEœ«'¼S�@^ä ¢®Âž|TúÊÓ`8° Û–gó#²WÊL`R`ùÊ� üؾÉ�-‰¯+âŠgß,áu¸×w%SoÓ„aè-ƒ‘?¨SPpÎl«%cæ*Ò$I~�•+Eƒål?¿íãöL’kñhœÑ�^“¹ý2÷ ÜKA¾Þg9'‹ONÚ5±…Õ¼¸­e{”âô)Ü8gðI¬'Õ}/þ×RDæÁÍëÛ/‹âÛÒW?gáîOÛòœ´ÉS®€|CËUf” Á@1*êOÁ`àìÞ}y�´ñ*>·\B Ã-%ÿ!ð]°"P¡;ÛO3éÁøëÛ›2’á(Rç.ÏÏ?áUÁ�Ï’fN܉€e¿ò2-ñPîHçÎ",ÃúÞÓƒ‰ÿ'n+!ß,¹€¼QÉ�ö’vi|'WP�o»ºªŠ$kY•Ê¢’` hZTä÷d½?Åçžùv`ñ,ÌÙöË@E¬’>Ü4àv0OXAP�*á€Ê{à}�O€rx̼ἠx¼v'¬xëìi¬w‚,ý¸ü[à:�W)(Ëm£ý²ˆÛp­3§�‰_ì¬÷`¹…I–§]‡´rq8˜h,Ïß®Qšå’ã1Åà Æ@Œ�Vcͳø)C¹Wu†¯Må¾�_%ïñóê"dP!§4ºO€yòºŠãU@J³QQÜžÄåëù�ã»�ûü»ó}•òàwËæ…,<•ù:ÇçÒ¼˜Å[´¦[ÒtÈTà* ñI卨wÉâUô)|ÍTv±KšÕséRúäúÎC«sÕ�cÊõ¦}ê‹e–|\5¶’`&$*Ï ìf¼ÛQÓzÀ=ygØ gÐH¨ð. �3øß‚i�+�K „›o"ŸÜjiu£š´ÿ¦Ûð¶ÉIDATŒç _8ÃV‘_Bøg„¿„ÿ\0„ðWÁoTÞnÙ¸ô4n±<@€3øM€ÛT>Uô$®mÿ˜r¶Ç»-pEñ#¸¸ºQ¾֭دöDcyPqKGùŠÓöøØ·{œ92Á@c2€‚sÅpyÖ»Ñ 5fO»Ö+øp–í=ß/�›ºúáŠAce_”MéÏ5£½?ÿŽõ³7|Á@0 í0྿Rü”ÒèÐû�­¤;¡Ñ�` ¨Þçø¸Õð†¡áOqt0zËÛ-[÷¶ŒzÊ[Iõt¶¢­Á@0 T��0 U 9ª‚�` žÃPOg+Ú Á@ÃP’£Š` ê‰�0 õt¶¢­Á@0 T��0 U 9ª‚�` žÃPOg+Ú Á@ÃP’£Š` ê‰�0 õt¶¢­Á@0 T��0 U 9ª‚�` žÃPOg+Ú Á@ÃP’£Š` ê‰�0 õt¶¢­Á@0 T��0 U 9ª‚�` žÃPOg+Ú Á@ÃP’£Š` ê‰�0 õt¶¢­Á@0 T��0 U 9ª‚�` Fø©+툿öì K‘&Æ ê—þžT£Ð¥s†¡~Ïs´<¨Saö¦²qªUaÔS~8‡†‰ÀT�•†¡3†">hNò3Ëé àÍICÃ÷ºäí„’� OEt0:càS|ßY¢ˆ¯{†–êA¬J±aÁ@0ðœV *–�èÙã¥z7æèû¥¢",‚�` ˆ­¤f<ëÑç` :` CäDT0 ÍÈ@†f<ëÑç` :` CäDT0 ÍÈÀÿXîúãòeäIEND®B`‚content/fr/intro.md0000644000175000056700000000242415232661434013051 0ustar0000000000000000Introduction ============ À l'époque actuelle, les logiciels sont régulièrement délivrés en tant que services : on les appelle des *applications web* (web apps), ou *logiciels en tant que service* (*software-as-a-service*). L'application 12 facteurs est une méthodologie pour concevoir des logiciels en tant que service qui : * Utilisent des formats déclaratifs pour mettre en oeuvre l'automatisation, pour minimiser le temps et les coûts pour que de nouveaux développeurs rejoignent le projet; * Ont un **contrat propre** avec le système d'exploitation sous-jacent, offrant une **portabilité maximum** entre les environnements d'exécution; * Sont adaptés à des **déploiements** sur des **plateformes cloud** modernes, rendant inutile le besoin de serveurs et de l'administration de systèmes; * **Minimisent la divergence** entre le développement et la production, ce qui permet le *déploiement continu* pour une agilité maximum; * et peuvent **grossir verticalement** sans changement significatif dans les outils, l'architecture ou les pratiques de développement; La méthodologie 12 facteurs peut être appliquée à des applications écrites dans tout langage de programmation, et qui utilisent tout type de services externes (base de données, file, cache mémoire, etc.) content/ko/build-release-run.md0000644000175000056700000000560515232661434015243 0ustar0000000000000000## V. 빌드, 릴리즈, 실행 ### 철저하게 분리ë�œ 빌드와 실행 단계 [코드베ì�´ìФ](./codebase)는 3 단계를 ê±°ì³� (개발용ì�´ 아닌) ë°°í�¬ë¡œ 변환ë�©ë‹ˆë‹¤. * *빌드 단계*는 코드 저장소를 *빌드*ë�¼ëŠ” 실행 가능한 번들로 변환시키는 단계입니다. 빌드 단계ì—�서는 커밋ë�œ 코드 중 ë°°í�¬ 프로세스ì—�서 지정ë�œ 버전ì�„ 사용하며, [종ì†�성](./dependencies)ì�„ 가져와 ë°”ì�´ë„ˆë¦¬ì™€ ì—�셋들ì�„ 컴파ì�¼í•©ë‹ˆë‹¤. * *릴리즈 단계*ì—�서는 빌드 단계ì—�서 만들어진 빌드와 ë°°í�¬ì�˜ 현재 [설정](./config)ì�„ ê²°í•© 합니다. 완성ë�œ *릴리즈*는 빌드와 설정ì�„ 모ë‘� í�¬í•¨í•˜ë©° 실행 환경ì—�서 바로 실행ë�  수 있ë�„ë¡� 준비ë�©ë‹ˆë‹¤. * *실행 단계*(런타임ì�´ë�¼ê³ ë�„ 하는)ì—�서는 ì„ íƒ�ë�œ 릴리즈ì—� 대한 애플리케ì�´ì…˜ [프로세스](./processes)ì�˜ ì§‘í•©ì�„ 시작하여, 애플리케ì�´ì…˜ì�„ 실행 환경ì—�서 ë�Œì•„ê°€ë�„ë¡� 합니다. ![코드 ë² ì�´ìŠ¤ëŠ” 빌드가 ë�˜ê³ , 빌드는 설정과 ì¡°í•©ë�˜ì–´ 릴리즈가 ë�©ë‹ˆë‹¤.](/images/release.png) **Twelve-Factor Appì�€ 빌드, 릴리즈, 실행 단계를 엄격하게 서로 분리합니다.** 예를 들어, 실행 단계ì—�서 코드를 변경할 수는 없습니다. 변경ì�„ 실행 단계보다 앞ì—� 있는 빌드 단계로 전달할 수 있는 방법ì�´ 없기 때문입니다. ë°°í�¬ ë�„구는 ì�¼ë°˜ì �으로 릴리즈 관리 ë�„구를 제공합니다. 특히 주목할만한 ì �ì�€ ì�´ì „ 릴리즈로 ë�˜ë�Œë¦´ 수 있는 롤백 기능입니다. 예를 들어, [Capistrano](https://github.com/capistrano/capistrano/wiki)는 ë°°í�¬ 툴ì�€ 릴리즈를 `releases`ë�¼ëŠ” 하위 디렉토리ì—� 저장시키고, 현재 릴리즈는 현재 릴리즈 디렉토리로 심볼릭 ë§�í�¬ë¡œ 연결합니다. ì�´ 툴ì�˜ `rollback` 명령어는 ì�´ì „ 버전으로 쉽고 빠르게 ì�´ì „ 릴리즈로 롤백할 수 있ë�„ë¡� í•´ì¤�니다. 모든 릴리즈는 í•­ìƒ� 유니í�¬í•œ 릴리즈 ì•„ì�´ë””를 지녀야 합니다. 예를 들어, 릴리즈ì�˜ 타임 스템프(예: 2011-04-06-20:32:17)나 ì¦�가하는 번호(예: v100, v101)ê°€ 있습니다. 릴리즈는 추가만 ë�  수 있으며, 한번 만들어진 릴리즈는 변경ë�  수 없습니다. 모든 변경ì�€ 새로운 릴리즈를 만들어야 합니다. 빌드는 새로운 코드가 ë°°í�¬ ë�  때마다 개발ìž�ì—� ì�˜í•´ 시작ë�©ë‹ˆë‹¤. 반면, 실행 단계는 서버가 재부팅ë�˜ê±°ë‚˜ ì¶©ë�Œì�´ ë°œìƒ�한 프로세스가 프로세스 매니저ì—� ì�˜í•´ 재시작 ë�˜ì—ˆì�„ 때 ìž�ë�™ìœ¼ë¡œ 실행ë�  수 있습니다. ë”°ë�¼ì„œ 대ì�‘í•  수 있는 개발ìž�ê°€ 없는 한밤중ì—� 문제가 ë°œìƒ�하는 것ì�„ 방지하기 위해, 실행 단계는 최대한 변화가 ì �어야합니다. 빌드 단계는 좀 ë�” 복잡해져ë�„ 괜찮습니다. í•­ìƒ� ë°°í�¬ë¥¼ 진행하고 있는 개발ìž�ì�˜ 눈 앞ì—�서 ì—�러가 ë°œìƒ�하기 때문입니다. content/pl/dependencies.md0000644000175000056700000000616515232661434014356 0ustar0000000000000000## II. Dependencies ### Jawnie zadeklaruj i wydziel zależnoÅ›ci WiÄ™kszość jÄ™zyków programowania oferuje narzÄ™dzia do dystrybucji dodatkowych bibliotek, takie jak [CPAN](http://www.cpan.org/) dla Perla lub [Rubygems](http://rubygems.org/) dla jÄ™zyka Ruby. Biblioteki zainstalowane w ten sposób mogÄ… być dostÄ™pne dla caÅ‚ego systemu (okreÅ›lane jako "site packages") lub zakres ich dziaÅ‚ania może być ograniczony dla pojedynczego projektu lub aplikacji (okreÅ›lane jako "vendoring" lub "bundling"). **Aplikacja 12factor nigdy nie jest zależna od bibliotek zainstalowanych dla caÅ‚ego systemu.** Wszystkie zależnoÅ›ci sÄ… dokÅ‚adnie okreÅ›lone przez dokument zawierajÄ…cy ich kompletnÄ… listÄ™ (*dependency declaration manifest*). Ponadto taka aplikacja korzysta z narzÄ™dzia sÅ‚użącego do izolacji tych zależnoÅ›ci podczas dziaÅ‚ania aplikacji. W ten sposób ma siÄ™ pewność, że np. jakaÅ› biblioteka nie jest przypadkiem jednÄ… z tych zainstalowanych w zewnÄ™trznym Å›rodowisku, w którym dziaÅ‚a aplikacja. Inaczej podobna sytuacja mogÅ‚aby uniemożliwiać poprawne dziaÅ‚anie aplikacji w innym Å›rodowisku, gdzie takiej biblioteki by brakowaÅ‚o. PeÅ‚na i dokÅ‚adna specyfikacja bibliotek używanych przez aplikacjÄ™ jest identyczna dla zarówno Å›rodowiska developerskiego jak i produkcyjnego. Np. [Bundler](https://bundler.io/) dla Ruby'ego używa pliku `Gemfile` dla deklaracji bibliotek z których korzysta aplikacja oraz komendÄ™ `bundle exec` do izolacji tych zależnoÅ›ci. W Pythonie istniejÄ… dwa oddzielne narzÄ™dzia dla tych zadaÅ„ -- [Pip](http://www.pip-installer.org/en/latest/) jest używany do deklaracji oraz [Virtualenv](http://www.virtualenv.org/en/latest/) do izolacji. Nawet jÄ™zyk C posiada narzÄ™dzie [Autoconf](http://www.gnu.org/s/autoconf/) do deklaracji zależnoÅ›ci, a statyczne wiÄ…zania mogÄ… zapewnić izolacjÄ™ zależnoÅ›ci. Bez wzglÄ™du na użyte narzÄ™dzia, deklaracja i izolacja zależnoÅ›ci muszÄ… być zawsze stosowane razem. Użycie tylko jednej z nich nie jest wystarczajÄ…ce by speÅ‚nić wymogi 12factor. JednÄ… z niewÄ…tpliwych korzyÅ›ci deklaracji zależnoÅ›ci jest uproszczenie poczÄ…tkowej konfiguracji aplikacji dla developera. Nowy programista może pobrać kod źródÅ‚owy z repozytorium. NastÄ™pnie, posiadajÄ…c wczeÅ›niej skonfigurowane Å›rodowisko danego jÄ™zyka i narzÄ™dzie do zarzÄ…dzania jego bibliotekami, jest w stanie zainstalować wszystkie moduÅ‚y i biblioteki potrzebne dla dziaÅ‚ania aplikacji przy pomocy jednej komendy. TakÄ… komendÄ… np. dla Ruby'ego/Bundlera jest `bundle install`, a dla Clojure/[Leiningen](https://github.com/technomancy/leiningen#readme) jest to `lein deps`. Aplikacje zgodne z 12factor również nie sÄ… zależne od systemowych narzÄ™dzi. WÅ›ród przykÅ‚adów można wymienić ImageMagick czy też `curl`. Pomimo, że narzÄ™dzia te mogÄ… być dostÄ™pne na wielu lub nawet wiÄ™kszoÅ›ci systemów, nie ma gwarancji, że bÄ™dÄ… istniaÅ‚y na wszystkich Å›rodowiskach, w których bÄ™dzie uruchamiana aplikacja w przyszÅ‚oÅ›ci lub że ich wersja bÄ™dzie kompatybilna. JeÅ›li aplikacja korzysta z jakiegokolwiek systemowego narzÄ™dzia, powinno być ono osobno do niej dołączone. content/uk/disposability.md0000644000175000056700000001201215232661434014577 0ustar0000000000000000## IX. УтилізовуваніÑ�ть ### Підвищуйте надійніÑ�ть за допомогою швидкого запуÑ�ку Ñ– коректного вимкненнÑ� **[ПроцеÑ�и](./processes) заÑ�тоÑ�унку дванадцати факторів Ñ” *утилізовуваними*, тобто вони можуть бути запущені або зупинені в будь-Ñ�кий момент.** Це Ñ�приÑ�Ñ” гнучкому маÑ�штабуванню, швидкому розгортанню [коду](./codebase) або змінам [конфігурації](./config) Ñ– надійноÑ�ті production-розгортаннÑ�. Слід намагатиÑ�Ñ� **мінімізувати чаÑ� запуÑ�ку процеÑ�ів**. Ð’ ідеалі чаÑ� між моментом виконаннÑ� команди запуÑ�ку процеÑ�у Ñ– моментом, коли процеÑ� готовий приймати запити чи задачі, має тривати лише пару Ñ�екунд. Короткий чаÑ� запуÑ�ку забезпечує більшу гнучкіÑ�ть длÑ� [релізу](./build-release-run) Ñ– маÑ�штабуваннÑ�. Крім того, це підвищує Ñ�тійкіÑ�ть, оÑ�кільки менеджер процеÑ�ів може легко переміщувати процеÑ�и на нові фізичні машини у разі необхідноÑ�ті. ПроцеÑ�и мають **коректно завершувати Ñ�вою роботу, коли вони отримують [SIGTERM](http://en.wikipedia.org/wiki/SIGTERM)** Ñ�игнал від диÑ�петчеру процеÑ�ів. ДлÑ� веб-процеÑ�у коректне завершеннÑ� роботи доÑ�Ñ�гаєтьÑ�Ñ� завдÑ�ки припиненню проÑ�луховуваннÑ� порту, до Ñ�кого він прив'Ñ�заний (що означає відмову від отриманнÑ� будь-Ñ�ких нових запитів), завершенню обробки будь-Ñ�ких поточних запитів та зупинці Ñ�амого процеÑ�у. Ð’ цій моделі передбачаєтьÑ�Ñ�, що HTTP-запити короткі (не більше ніж кілька Ñ�екунд), а у разі довгих запитів (long polling) клієнт має намагатиÑ�Ñ� відновити з'єднаннÑ� у разі його втрати. ДлÑ� процеÑ�у, що виконує фонові задачі (worker), коректне завершеннÑ� роботи доÑ�Ñ�гаєтьÑ�Ñ� за рахунок поверненнÑ� поточного завданнÑ� назад у чергу задач. Ð�априклад, в [RabbitMQ](http://www.rabbitmq.com/) робочий процеÑ� може надіÑ�лати команду [`NACK`](http://www.rabbitmq.com/amqp-0-9-1-quickref.html#basic.nack); в [Beanstalkd](https://beanstalkd.github.io) завданнÑ� повертаєтьÑ�Ñ� в чергу автоматично щоразу, коли процеÑ� втрачає з'єднаннÑ�. СиÑ�теми, що викориÑ�товують блокуваннÑ�, такі Ñ�к [Delayed Job](https://github.com/collectiveidea/delayed_job#readme), мають бути повідомлені, щоб звільнити блокуваннÑ� задачі. Ð’ цій моделі передбачаєтьÑ�Ñ�, що вÑ�Ñ– задачі Ñ” [повторно вхідними](http://en.wikipedia.org/wiki/Reentrant_%28subroutine%29), що зазвичай доÑ�Ñ�гаєтьÑ�Ñ� шлÑ�хом обертаннÑ� результатів їхньої роботи в транзакції або шлÑ�хом викориÑ�таннÑ� [ідемпотентних](http://en.wikipedia.org/wiki/Idempotence) операцій. ПроцеÑ�и також мають бути **Ñ�тійкі до раптової зупинки** в разі відмови апаратних заÑ�обів, на Ñ�ких вони запущені. Хоча це менш ймовірна подіÑ�, ніж коректне завершеннÑ� роботи за допомогою Ñ�игналу `SIGTERM`, вона вÑ�е ж таки може Ñ�татиÑ�Ñ�. Рекомендованим підходом Ñ” викориÑ�таннÑ� надійних черг завдань, таких Ñ�к Beanstalkd, Ñ�кі повертають завданнÑ� в чергу задач, коли клієнти втрачають з'єднаннÑ� або від'єднуютьÑ�Ñ� по тайм-ауту. У будь-Ñ�кому випадку, заÑ�тоÑ�унок дванадцÑ�ти факторів має проектуватиÑ�Ñ� таким чином, щоб оброблÑ�ти неÑ�подівані та некоректні вимкненнÑ�. Прикладом вдалої реалізації [архітектури "тільки аварійного вимкненнÑ�" (Crash-only design)](http://lwn.net/Articles/191059/) Ñ” [СouchDB](http://docs.couchdb.org/en/latest/intro/overview.html). content/zh_cn/config.md0000644000175000056700000000541715232661434013662 0ustar0000000000000000## III. é…�ç½® ### 在环境中存储é…�ç½® 通常,应用的 *é…�ç½®* 在ä¸�å�Œ [部署](./codebase) (预å�‘布ã€�生产环境ã€�å¼€å�‘环境等等)间会有很大差异。这其中包括: * æ•°æ�®åº“,Memcached,以å�Šå…¶ä»– [å�Žç«¯æœ�务](./backing-services) çš„é…�ç½® * 第三方æœ�务的è¯�书,如 Amazon S3ã€�Twitter ç­‰ * æ¯�份部署特有的é…�置,如域å��ç­‰ 有些应用在代ç �中使用常é‡�ä¿�å­˜é…�置,这与 12-Factor 所è¦�求的**代ç �å’Œé…�置严格分离**显然大相径庭。é…�置文件在å�„部署间存在大幅差异,代ç �å�´å®Œå…¨ä¸€è‡´ã€‚ 判断一个应用是å�¦æ­£ç¡®åœ°å°†é…�置排除在代ç �之外,一个简å�•的方法是看该应用的基准代ç �是å�¦å�¯ä»¥ç«‹åˆ»å¼€æº�,而ä¸�用担心会暴露任何æ•�感的信æ�¯ã€‚ 需è¦�指出的是,这里定义的"é…�ç½®"å¹¶**ä¸�**包括应用的内部é…�置,比如 Rails çš„ `config/routes.rb`,或是使用 [Spring](http://spring.io/) æ—¶ [代ç �模å�—é—´çš„ä¾�赖注入关系](http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html) 。这类é…�置在ä¸�å�Œéƒ¨ç½²é—´ä¸�存在差异,所以应该写入代ç �。 å�¦å¤–一个解决方法是使用é…�置文件,但ä¸�把它们纳入版本控制系统,就åƒ� Rails çš„ `config/database.yml` 。这相对于在代ç �中使用常é‡�å·²ç»�是长足进步,但ä»�然有缺点:总是会ä¸�å°�心将é…�置文件签入了代ç �库;é…�置文件的å�¯èƒ½ä¼šåˆ†æ•£åœ¨ä¸�å�Œçš„目录,并有ç�€ä¸�å�Œçš„æ ¼å¼�,这让找出一个地方æ�¥ç»Ÿä¸€ç®¡ç�†æ‰€æœ‰é…�ç½®å�˜çš„ä¸�太现实。更糟的是,这些格å¼�通常是语言或框架特定的。 **12-Factor推è��将应用的é…�置存储于 *环境å�˜é‡�* 中**( *env vars*, *env* )。环境å�˜é‡�å�¯ä»¥é�žå¸¸æ–¹ä¾¿åœ°åœ¨ä¸�å�Œçš„部署间å�šä¿®æ”¹ï¼Œå�´ä¸�动一行代ç �;与é…�置文件ä¸�å�Œï¼Œä¸�å°�心把它们签入代ç �库的概率微乎其微;与一些传统的解决é…�置问题的机制(比如 Java 的属性é…�置文件)相比,环境å�˜é‡�与语言和系统无关。 é…�置管ç�†çš„å�¦ä¸€ä¸ªæ–¹é�¢æ˜¯åˆ†ç»„。有时应用会将é…�置按照特定部署进行分组(或å�«å�šâ€œçŽ¯å¢ƒâ€�),例如Rails中的 `development`,`test`, å’Œ `production` 环境。这ç§�方法无法轻易扩展:更多部署æ„�味ç�€æ›´å¤šæ–°çš„环境,例如 `staging` 或 `qa` 。 éš�ç�€é¡¹ç›®çš„ä¸�断深入,开å�‘人员å�¯èƒ½è¿˜ä¼šæ·»åŠ ä»–ä»¬è‡ªå·±çš„çŽ¯å¢ƒï¼Œæ¯”å¦‚ `joes-staging` ,这将导致å�„ç§�é…�置组å�ˆçš„æ¿€å¢žï¼Œä»Žè€Œç»™ç®¡ç�†éƒ¨ç½²å¢žåŠ äº†å¾ˆå¤šä¸�确定因素。 12-Factor 应用中,环境å�˜é‡�的粒度è¦�足够å°�,且相对独立。它们永远也ä¸�会组å�ˆæˆ�一个所谓的“环境â€�,而是独立存在于æ¯�个部署之中。当应用程åº�ä¸�断扩展,需è¦�更多ç§�类的部署时,这ç§�é…�置管ç�†æ–¹å¼�能够å�šåˆ°å¹³æ»‘过渡。 LICENSE0000644000175000056700000000204015232661434010312 0ustar0000000000000000Copyright (c) 2012 Adam Wiggins Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. content/de/dev-prod-parity.md0000644000175000056700000001115415232661434014725 0ustar0000000000000000##X. Dev-Prod-Vergleichbarkeit ### Entwicklung, Staging und Produktion so ähnlich wie möglich halten Historisch gibt es große Lücken zwischen Entwicklung (wo ein Entwickler live an einem lokalen [Deploy](./codebase) der App Änderungen macht) und Produktion (ein laufender Deploy der App, auf den Endbenutzer zugreifen). Diese Lücken zeigen sich auf drei Gebieten: * **Die Zeit-Lücke** Ein Entwickler arbeitet an Code der Tage, Wochen oder sogar Monate braucht um in Produktion zu gehen. * **Die Personal-Lücke**: Entwickler schreiben Code, Operatoren deployen ihn. * **Die Werkzeug-Lücke**: Entwickler nutzen vielleicht einen Stack wie Nginx, SQLite und OS X - die Produktion nutzt Apache, MySQL und Linux. **Die Zwölf-Faktor-App ist ausgelegt auf [Continuous Deployment](http://avc.com/2011/02/continuous-deployment/) indem sie die Lücke zwischen Entwicklung und Produktion klein hält.** Mit Blick auf die oben beschriebenen drei Lücken: * Die Zeit-Lücke klein halten: Ein Entwickler kann Code schreiben, der Stunden oder sogar Minuten später deployed wird. * Die Personal-Lücke klein halten: Entwickler die Code schreiben sind intensiv am Deployment und der Überwachung des Verhaltens auf Produktion beteiligt. * Die Werkzeug-Lücke klein halten: Entwicklung und Produktion so ähnlich wie möglich halten. Das Gesagte in einer Tabelle:
Traditionelle App Zwölf-Faktor-App
Zeit zwischen Deployments Wochen Stunden
Code-Autoren und Code-Deployer Andere Menschen Dieselben Menschen
Entwicklungs- und Produktions-Umgebung Unterschiedlich So ähnlich wie möglich
Im Bereich der [unterstützenden Dienste](./backing-services) wie der Datenbank der App, dem Queue-System oder dem Cache ist die Dev-Prod-Vergleichbarkeit wichtig. Viele Sprachen bieten Bibliotheken, die den Zugriff auf die unterstützenden Dienste vereinfachen und ebenso *Adapter* für unterschiedliche Arten von Diensten.
Art Sprache Bibliothek Adapter
Datenbank Ruby/Rails ActiveRecord MySQL, PostgreSQL, SQLite
Queue Python/Django Celery RabbitMQ, Beanstalkd, Redis
Cache Ruby/Rails ActiveSupport::Cache Speicher, Dateisystem, Memcached
Für Entwickler ist es sehr elegant, einen leichtgewichtigen unterstützenden Dienst in der lokalen Umgebung zu benutzen, während ein ernst zu nehmender und robuster unterstützender Dienst in Produktion verwendet wird. So kann man SQLite lokal und PostgreSQL in Produktion benutzen; oder zum Cachen den lokalen Speicher in Entwicklung und Memcached in Produktion. **Der Zwölf-Faktor-Entwickler widersteht dem Drang, verschiedene unterstützende Dienste in Entwicklung und Produktion zu verwenden**, selbst wenn Adapter über alle Unterschiede hinweg abstrahieren. Unterschiede zwischen den unterstützenden Diensten verursachen kleinste Inkompatiblitäten, und Code, der in Entwicklung oder Staging funktioniert und Tests besteht, scheitert in Produktion. Diese Reibungskosten und die dann notwendige Dämpfung des Continuous Deployment sind sehr hoch, wenn man sie über die Lebensdauer einer App aggregiert. Leichtgewichtige lokale Dienste überzeugen weniger als früher. Moderne unterstützende Dienste wie Memcached, PostgreSQL und RabbitMQ sind dank moderner Paketierungs-Systeme wie [Homebrew](http://mxcl.github.com/homebrew/) und [apt-get](https://help.ubuntu.com/community/AptGet/Howto) nicht schwierig zu installieren und zu starten. Auch deklarative Installationssysteme wie [Chef](http://www.opscode.com/chef/) oder [Puppet](http://docs.puppetlabs.com/) in Kombination mit leichtgewichtigen virtuellen Umgebungen wie [Vagrant](http://vagrantup.com/) setzen Entwickler in den Stand, lokale Umgebungen ans Laufen zu bringen, die nahe an Produktionsumgebungen herankommen. Die Installations- und Betriebskosten dieser Systeme sind gering verglichen mit dem Nutzen der Dev-Prod-Vergleichbarkeit und einem Continuous Deployment. Adapter für unterschiedliche unterstützende Dienste sind weiterhin von Nutzen, weil sie das Portieren auf andere unterstützende Dienste schmerzlos machen. Aber alle Deploys der App (Entwicklungsumgebungen, Staging, Produktion) sollten denselben Typ und dieselbe Version eines jeden unterstützenden Dienstes benutzen. content/es/backing-services.md0000644000175000056700000000600715232661434015136 0ustar0000000000000000## IV. Backing services ### Tratar a los "backing services" como recursos conectables Un *backing service* es cualquier recurso que la aplicación puede consumir a través de la red como parte de su funcionamiento habitual. Entre otros ejemplos, podemos encontrar bases de datos (como [MySQL](http://dev.mysql.com/) o [CouchDB](http://couchdb.apache.org/)), los sistemas de mensajería y de colas (como [RabbitMQ](http://www.rabbitmq.com/) o [Beanstalkd](https://beanstalkd.github.io)), los servicios SMTP de email (como [Postfix](http://www.postfix.org/)), y los sistemas de cache (como [Memcached](http://memcached.org/)). Tradicionalmente, los "backing services" (como las bases de datos) han sido gestionadas por los mismos administradores de sistemas que despliegan la aplicacion en producción. Además de esos servicios gestionados localmente, las aplicaciones también pueden usar servicios proporcionados y gestionados por terceros, como por ejemplo los servicios SMTP ([Postmark](http://postmarkapp.com/)), los servicios de recopilación de métricas (como [New Relic](http://newrelic.com/) o [Loggly](http://www.loggly.com/)), los servicios de activos binarios (como [Amazon S3](http://aws.amazon.com/s3/)), e incluso servicios que se consumen accediendo a ellos mediante un API (como [Twitter](http://dev.twitter.com/), [Google Maps](https://developers.google.com/maps/), o [Last.fm](http://www.last.fm/api)). **El código de una aplicación "twelve-factor" no hace distinciones entre servicios locales y de terceros.** Para la aplicación, ambos son recursos conectados, accedidos mediante una URL u otro localizador o credencial almacenado en la [config](./config). Un [despliegue](./codebase) de una aplicación "twelve-factor" debería ser capaz de reemplazar una base de datos local MySQL por una gestionada por un tercero (como [Amazon RDS](http://aws.amazon.com/rds/)) sin ningún cambio en el código de la aplicación. Igualmente, un servidor SMTP local se podría cambiar por un servicio de terceros (como Postmark) sin modificaciones en el código. En ambos casos, solo el manejador del recurso necesita cambiar en la configuración. Cada "backing service" distinto es un *recurso*. Por ejemplo, una base de datos MySQL es un recurso; dos bases de datos MySQL (usadas para "sharding" en la capa de aplicación) les convierte en dos recursos distintos. Una aplicación "twelve factor" trata esas bases de datos como *recursos conectados*, lo que demuestra su bajo acoplamiento al despliegue al que se unen. Un despliegue en producción conectado a cuatro backing services. Los recursos se pueden conectar y desconectar a voluntad. Por ejemplo, si la base de datos funciona mal debido a un problema en el hardware, el administrador de la aplicación puede cambiar a un nuevo servidor de bases de datos que haya sido restaurado de un backup reciente. La base de datos actual de producción se puede desconectar, y conectar una nueva base de datos sin tener que cambiar nada en el código. content/ja/admin-processes.md0000644000175000056700000000576115232661434015004 0ustar0000000000000000## XII. 管ç�†ãƒ—ロセス ### 管ç�†ã‚¿ã‚¹ã‚¯ã‚’1回é™�りã�®ãƒ—ロセスã�¨ã�—ã�¦å®Ÿè¡Œã�™ã‚‹ [プロセスフォーメーション](./concurrency)ã�¯ã€�アプリケーションã�Œå®Ÿè¡Œã�•れã�Ÿã�¨ã��ã�«ã‚¢ãƒ—リケーションã�®é€šå¸¸ã�®å½¹å‰²ï¼ˆWebリクエストã�®å‡¦ç�†ã�ªã�©ï¼‰ã�«ä½¿ã‚�れるプロセス群ã�§ã�‚る。ã��れã�¨ã�¯åˆ¥ã�«ã€�開発者ã�¯ã�—ã�°ã�—ã�°ã‚¢ãƒ—リケーションã�®ã�Ÿã‚�ã�«1回é™�りã�®ç®¡ç�†ãƒ»ãƒ¡ãƒ³ãƒ†ãƒŠãƒ³ã‚¹ç”¨ã�®ã‚¿ã‚¹ã‚¯ã‚’実行ã�—ã�Ÿã��ã�ªã‚‹ã€‚例ã�ˆã�°ï¼š * データベースã�®ãƒžã‚¤ã‚°ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã‚’実行ã�™ã‚‹ã€‚(例:Djangoã�«ã�Šã�‘ã‚‹ `manage.py migrate` ã‚„Railsã�«ã�Šã�‘ã‚‹ `rake db:migrate`) * ä»»æ„�ã�®ã‚³ãƒ¼ãƒ‰ã‚’実行ã�—ã�Ÿã‚Šã€�生ã�®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã�«å¯¾ã�—ã�¦ã‚¢ãƒ—リケーションã�®ãƒ¢ãƒ‡ãƒ«ã‚’調査ã�—ã�Ÿã‚Šã�™ã‚‹ã�Ÿã‚�ã�«ã€�コンソール([REPL](http://en.wikipedia.org/wiki/Read-eval-print_loop)シェルã�¨ã‚‚言ã‚�れる)を実行ã�™ã‚‹ã€‚多ã��ã�®è¨€èªžã�§ã�¯ã‚¤ãƒ³ã‚¿ãƒ—リタを引数ã�ªã�—ã�§å®Ÿè¡Œã�™ã‚‹ï¼ˆä¾‹ï¼š`python` ã‚„ `perl`)ã�“ã�¨ã�§REPLを利用ã�§ã��ã‚‹ã�Œã€�別ã�®ã‚³ãƒžãƒ³ãƒ‰ã‚’用æ„�ã�—ã�¦ã�„ã‚‹å ´å�ˆã‚‚ã�‚る(例:Rubyã�§ã�® `irb` ã‚„ Railsã�§ã�® `rails console`)。 * アプリケーションã�®ãƒªãƒ�ジトリã�«ã‚³ãƒŸãƒƒãƒˆã�•れã�Ÿ1回é™�りã�®ã‚¹ã‚¯ãƒªãƒ—トを実行ã�™ã‚‹ï¼ˆä¾‹ï¼š`php scripts/fix_bad_records.php`)。 1回é™�りã�®ç®¡ç�†ãƒ—ロセスã�¯ã€�アプリケーションã�®é€šå¸¸ã�®[長時間実行ã�•れるプロセス](./processes)ã�¨å…¨ã��å�Œã�˜ç’°å¢ƒã�§å®Ÿè¡Œã�•れるã�¹ã��ã�§ã�‚る。ã�“れらã�®ãƒ—ロセスã�¯ã€�ã�‚ã‚‹[リリース](./build-release-run)ã�«å¯¾ã�—ã�¦å®Ÿè¡Œã�•れã€�ã��ã�®ãƒªãƒªãƒ¼ã‚¹ã�«å¯¾ã�—ã�¦å®Ÿè¡Œã�•れるã�™ã�¹ã�¦ã�®ãƒ—ロセスã�¨å�Œã�˜[コードベース](./codebase)ã�¨[設定](./config)を使ã�†ã€‚管ç�†ç”¨ã�®ã‚³ãƒ¼ãƒ‰ã�¯ã€�å�ŒæœŸã�®å•�題をé�¿ã�‘ã‚‹ã�Ÿã‚�ã�«ã‚¢ãƒ—リケーションコードã�¨ä¸€ç·’ã�«ãƒ‡ãƒ—ロイã�•れるã�¹ã��ã�§ã�‚る。 å�Œã�˜[ä¾�存関係分離](./dependencies)技術をã�™ã�¹ã�¦ã�®ãƒ—ロセスタイプã�«åˆ©ç”¨ã�™ã‚‹ã�¹ã��ã�§ã�‚る。例ã�ˆã�°ã€�ã‚‚ã�—Rubyã�®Webプロセスã�Œã‚³ãƒžãƒ³ãƒ‰ `bundle exec thin start` を使ã�†ã�®ã�§ã�‚れã�°ã€�データベースã�®ãƒžã‚¤ã‚°ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã�«ã�¯ `bundle exec rake db:migrate` を使ã�†ã�¹ã��ã�§ã�‚る。å�Œæ§˜ã�«ã€�Virtualenvを使ã�£ã�¦ã�„ã‚‹Pythonプログラムã�¯ã€�仮想環境内ã�® `bin/python` ã‚’Tornado Webサーãƒ�ーã�¨ã�™ã�¹ã�¦ã�® `manage.py` 管ç�†ãƒ—ロセスã�®ä¸¡æ–¹ã�§åˆ©ç”¨ã�™ã‚‹ã�¹ã��ã�§ã�‚る。 Twelve-Factorã�¯ç´°ã�‹ã�„設定ã�ªã�—ã�§ã�™ã��ã�«ä½¿ã�ˆã‚‹REPLシェルをæ��ä¾›ã�™ã‚‹è¨€èªžã‚’å¼·ã��好む。1回é™�りã�®ã‚¹ã‚¯ãƒªãƒ—トを実行ã�™ã‚‹ã�®ã�Œç°¡å�˜ã�«ã�ªã‚‹ã�‹ã‚‰ã�§ã�‚る。ローカルデプロイã�§ã�¯ã€�開発者ã�¯1回é™�りã�®ç®¡ç�†ãƒ—ロセスをã€�アプリケーションをãƒ�ェックアウトã�—ã�Ÿãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã�®ä¸­ã�§ã‚·ã‚§ãƒ«ã‚³ãƒžãƒ³ãƒ‰ã�§ç›´æŽ¥èµ·å‹•ã�™ã‚‹ã€‚本番デプロイã�§ã�¯ã€�開発者ã�¯SSHやデプロイã�®å®Ÿè¡Œç’°å¢ƒã�Œæ��ä¾›ã�™ã‚‹ä»–ã�®ãƒªãƒ¢ãƒ¼ãƒˆã‚³ãƒžãƒ³ãƒ‰å®Ÿè¡Œæ–¹æ³•を使ã�£ã�¦ã��ã�®ã‚ˆã�†ã�ªãƒ—ロセスを実行ã�™ã‚‹ã€‚ content/pt_br/backing-services.md0000644000175000056700000000544315232661434015640 0ustar0000000000000000## IV. Serviços de Apoio ### Trate serviços de apoio como recursos anexados Um *serviço de apoio* é qualquer serviço que o app consuma via rede como parte de sua operação normal. Exemplos incluem armazenamentos de dados (como [MySQL](http://dev.mysql.com/) ou [CouchDB](http://couchdb.apache.org/)), sistemas de mensagens/filas (tais como [RabbitMQ](http://www.rabbitmq.com/) ou [Beanstalkd](https://beanstalkd.github.io)), serviços SMTP para emails externos (tais como [Postfix](http://www.postfix.org/)), e sistemas de cache (tais como [Memcached](http://memcached.org/)). Serviços de apoio como o banco de dados são tradicionalmente gerenciados pelos mesmos administradores de sistema do servidor de deploy de tempo de execução do app. Adicionalmente à esses serviços localmente gerenciados, o app pode ter serviços providos e gerenciados por terceiros. Exemplos incluem serviços SMTP (tais como [Postmark](http://postmarkapp.com/)), serviços de colheita de métricas (tais como [New Relic](http://newrelic.com/) ou [Loggly](http://www.loggly.com/)), serviços de ativos binários (tais como [Amazon S3](http://aws.amazon.com/s3/)), e até serviços de consumidores acessíveis via API (tais como [Twitter](http://dev.twitter.com/), [Google Maps](https://developers.google.com/maps/), ou [Last.fm](http://www.last.fm/api)). **O código para um app doze-fatores não faz distinção entre serviços locais e de terceiros.** Para o app, ambos são recursos anexados, acessíveis via uma URL ou outro localizador/credenciais na [config](./config). Um [deploy](./codebase) do app doze-fatores deve ser capaz de trocar um banco de dados MySQL por um gerenciado por terceiros (tais como [Amazon RDS](http://aws.amazon.com/rds/)) sem realizar quaisquer mudanças no código do app. Da mesma forma, um servidor local SMTP poderia ser trocado por um serviço de terceiros (tais como Postmark) sem as mudanças em código. Em ambos os casos, apenas o identificador de recurso precisa mudar. Cada serviço de apoio distinto é um *recurso*. Por exemplo, um banco MySQL é um recurso; dois bancos MySQL (usados para sharding na camada da aplicação) qualificam como dois recursos distintos. O app doze-fatores trata tais bancos como *recursos anexados*, o que indica seu baixo acoplamento ao deploy que ele está anexado. Um deploy de produção anexado a quatro serviços de apoio. Recursos podem ser anexados e desanexados a deploys à vontade. Por exemplo, se o banco de dados do app não está funcionando corretamente devido a um problema de hardware, o administrador do app pode subir um novo servidor de banco de dados restaurado de um backup recente. O atual banco de produção pode ser desanexado, e o novo banco anexado -- tudo sem nenhuma mudança no código. content/ru/dependencies.md0000644000175000056700000001144315232661434014364 0ustar0000000000000000## II. ЗавиÑ�имоÑ�ти ### Явно объÑ�влÑ�йте и изолируйте завиÑ�имоÑ�ти БольшинÑ�тво Ñ�зыков программированиÑ� поÑ�тавлÑ�ÑŽÑ‚Ñ�Ñ� вмеÑ�те Ñ� менеджером пакетов длÑ� раÑ�проÑ�транениÑ� библиотек, таким как [CPAN](http://www.cpan.org/) в Perl или [Rubygems](http://rubygems.org/) в Ruby. Библиотеки, уÑ�танавливаемые менеджером пакетов, могут быть уÑ�тановлены доÑ�тупными длÑ� вÑ�ей Ñ�иÑ�темы (так называемые "Ñ�иÑ�темные пакеты") или доÑ�тупными только приложению в директорию Ñ�одержащую приложение (так называемые "vendoring" и "bundling"). **Приложение двенадцати факторов никогда не завиÑ�ит от неÑ�вно Ñ�ущеÑ�твующих, доÑ�тупных вÑ�ей Ñ�иÑ�теме пакетов.** Приложение объÑ�влÑ�ет вÑ�е Ñ�вои завиÑ�имоÑ�ти полноÑ�тью и точно Ñ� помощью манифеÑ�та *декларации завиÑ�имоÑ�тей*. Кроме того, оно иÑ�пользует инÑ�трумент *изолÑ�ции завиÑ�имоÑ�тей* во времÑ� выполнениÑ� длÑ� обеÑ�печениÑ� того, что неÑ�вные завиÑ�имоÑ�ти не "проÑ�очилиÑ�ÑŒ" из окружающей Ñ�иÑ�темы. ПолнаÑ� и Ñ�внаÑ� Ñ�пецификациÑ� завиÑ�имоÑ�тей применÑ�етÑ�Ñ� равным образом как при разработке, так и при работе приложениÑ�. Ð�апример, [Bundler](https://bundler.io/) в Ruby иÑ�пользует `Gemfile` как формат манифеÑ�та длÑ� объÑ�влениÑ� завиÑ�имоÑ�тей и `bundle exec` -- длÑ� изолÑ�ции завиÑ�имоÑ�тей. Python имеет два различных инÑ�трумента длÑ� Ñ�тих задач: [Pip](http://www.pip-installer.org/en/latest/) иÑ�пользуетÑ�Ñ� длÑ� объÑ�влениÑ� и [Virtualenv](http://www.virtualenv.org/en/latest/) -- длÑ� изолÑ�ции. Даже C имеет [Autoconf](http://www.gnu.org/s/autoconf/) длÑ� объÑ�влениÑ� завиÑ�имоÑ�тей, и Ñ�татичеÑ�кое Ñ�вÑ�зывание может обеÑ�печить изолÑ�цию завиÑ�имоÑ�тей. Ð�езавиÑ�имо от того, какой набор инÑ�трументов иÑ�пользуетÑ�Ñ�, объÑ�вление и изолÑ�циÑ� завиÑ�имоÑ�тей должны вÑ�егда иÑ�пользоватьÑ�Ñ� Ñ�овмеÑ�тно -- только одного из них недоÑ�таточно, чтобы удовлетворить двенадцати факторам. Одним из преимущеÑ�тв Ñ�вного объÑ�влениÑ� завиÑ�имоÑ�тей Ñ�влÑ�етÑ�Ñ� то, что Ñ�то упрощает наÑ�тройку приложениÑ� длÑ� новых разработчиков. Ð�овый разработчик может Ñ�копировать кодовую базу приложениÑ� на Ñ�вою машину, необходимыми требованиÑ�ми длÑ� которой Ñ�влÑ�ÑŽÑ‚Ñ�Ñ� только наличие Ñ�реды выполнениÑ� Ñ�зыка и менеджера пакетов. Ð’Ñ�Ñ‘ необходимое длÑ� запуÑ�ка кода приложениÑ� может быть наÑ�троено Ñ� помощью определённой *команды наÑ�тройки*. Ð�апример, длÑ� Ruby/Bundler командой наÑ�тройки Ñ�влÑ�етÑ�Ñ� `bundle install`, длÑ� Clojure/[Leiningen](https://github.com/technomancy/leiningen#readme) Ñ�то `lein deps`. Приложение двенадцати факторов также не полагаетÑ�Ñ� на неÑ�вное Ñ�ущеÑ�твование любых инÑ�трументов Ñ�иÑ�темы. Примером Ñ�влÑ�етÑ�Ñ� запуÑ�к программ ImageMagick и `curl`. ХотÑ� Ñ�ти инÑ�трументы могут приÑ�утÑ�твовать во многих или даже в большинÑ�тве Ñ�иÑ�тем, нет никакой гарантии, что они будут приÑ�утÑ�твовать на вÑ�ех Ñ�иÑ�темах, где приложение может работать в будущем, или будет ли верÑ�иÑ� найденнаÑ� в другой Ñ�иÑ�теме Ñ�овмеÑ�тима Ñ� приложением. ЕÑ�ли приложению необходимо запуÑ�тить инÑ�трумент Ñ�иÑ�темы, то Ñ�тот инÑ�трумент должен быть включён в приложение. content/ja/config.md0000644000175000056700000001027615232661434013152 0ustar0000000000000000## III. 設定 ### 設定を環境変数ã�«æ ¼ç´�ã�™ã‚‹ アプリケーションã�® *設定* ã�¯ã€�[デプロイ](./codebase)(ステージングã€�本番ã€�開発環境ã�ªã�©ï¼‰ã�®é–“ã�§ç•°ã�ªã‚Šå¾—る唯一ã�®ã‚‚ã�®ã�§ã�‚る。設定ã�«ã�¯ä»¥ä¸‹ã�®ã‚‚ã�®ã�Œå�«ã�¾ã‚Œã‚‹ã€‚ * データベースã€�Memcachedã€�ä»–ã�®[ãƒ�ックエンドサービス](./backing-services)ã�ªã�©ã�®ãƒªã‚½ãƒ¼ã‚¹ã�¸ã�®ãƒ�ンドル * Amazon S3ã‚„Twitterã�ªã�©ã�®å¤–部サービスã�®èª�証情報 * デプロイã�•れã�Ÿãƒ›ã‚¹ãƒˆã�®æ­£è¦�化ã�•れã�Ÿãƒ›ã‚¹ãƒˆå��ã�ªã�©ã€�デプロイã�”ã�¨ã�®å€¤ アプリケーションã�¯æ™‚ã�«è¨­å®šã‚’定数ã�¨ã�—ã�¦ã‚³ãƒ¼ãƒ‰å†…ã�«æ ¼ç´�ã�™ã‚‹ã€‚ã�“れã�¯Twelve-Factorã�«é�•å��ã�—ã�¦ã�„る。Twelve-Factorã�¯ **設定をコードã�‹ã‚‰å޳坆ã�«åˆ†é›¢ã�™ã‚‹ã�“ã�¨** ã‚’è¦�求ã�™ã‚‹ã€‚設定ã�¯ãƒ‡ãƒ—ロイã�”ã�¨ã�«å¤§ã��ã��ç•°ã�ªã‚‹ã�Œã€�コードã�¯ã��ã�†ã�§ã�¯ã�ªã�„。 アプリケーションã�Œã�™ã�¹ã�¦ã�®è¨­å®šã‚’コードã�®å¤–部ã�«æ­£ã�—ã��分離ã�§ã��ã�¦ã�„ã‚‹ã�‹ã�©ã�†ã�‹ã�®ç°¡å�˜ã�ªãƒ†ã‚¹ãƒˆã�¯ã€�èª�証情報をæ¼�æ´©ã�•ã�›ã‚‹ã�“ã�¨ã�ªã��ã€�コードベースを今ã�™ã��ã�«ã�§ã‚‚オープンソースã�«ã�™ã‚‹ã�“ã�¨ã�Œã�§ã��ã‚‹ã�‹ã�©ã�†ã�‹ã�§ã�‚る。 ã�ªã�Šã€�ã�“ã�®â€œè¨­å®šâ€�ã�®å®šç¾©ã�«ã�¯ã€�アプリケーション内部ã�®è¨­å®šã�¯ **å�«ã�¾ã�ªã�„** ã�“ã�¨ã�«æ³¨æ„�ã�™ã‚‹ã€‚内部ã�®è¨­å®šã�¨ã�¯ã€�Railsã�«ã�Šã�‘ã‚‹`config/routes.rb`ã‚„ã€�[Spring](http://spring.io/)ã�«ã�Šã�„ã�¦[コードモジュールã�Œã�©ã�†æŽ¥ç¶šã�•れるã�‹](http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html)ã�ªã�©ã�®è¨­å®šã‚’指ã�™ã€‚ã�“ã�®ç¨®ã�®è¨­å®šã�¯ãƒ‡ãƒ—ロイã�®é–“ã�§å¤‰ã‚�らã�ªã�„ã�Ÿã‚�ã€�コードã�®å†…部ã�§è¡Œã�†ã�¹ã��ã�§ã�‚る。 設定ã�«å¯¾ã�™ã‚‹ã‚‚ã�†1ã�¤ã�®ã‚¢ãƒ—ローãƒ�ã�¯ã€�ãƒ�ージョン管ç�†ã‚·ã‚¹ãƒ†ãƒ ã�«ãƒ�ェックインã�•れã�ªã�„設定ファイルを使ã�†æ–¹æ³•ã�§ã�‚る。例ã�¨ã�—ã�¦ã€�Railsã�«ã�Šã�‘ã‚‹`config/database.yml`ã�Œã�‚る。ã�“ã�®æ–¹æ³•ã�¯ã€�リãƒ�ジトリã�«ãƒ�ェックインã�•れる定数を使ã�†ã�“ã�¨ã�«æ¯”ã�¹ã‚‹ã�¨é�žå¸¸ã�«å¤§ã��ã�ªé€²æ­©ã�§ã�‚ã‚‹ã�Œã€�ã�¾ã� å¼±ç‚¹ã�Œã�‚る。設定ファイルã�Œèª¤ã�£ã�¦ãƒªãƒ�ジトリã�«ãƒ�ェックインã�•れやã�™ã�„ã�“ã�¨ã�¨ã€�設定ファイルã�Œç•°ã�ªã‚‹å ´æ‰€ã�«ç•°ã�ªã‚‹ãƒ•ォーマットã�§æ•£ä¹±ã�—ã€�ã�™ã�¹ã�¦ã�®è¨­å®šã‚’一ã�¤ã�®å ´æ‰€ã�§è¦‹ã�Ÿã‚Šç®¡ç�†ã�—ã�Ÿã‚Šã�™ã‚‹ã�“ã�¨ã�Œé›£ã�—ã��ã�ªã‚Šã�Œã�¡ã�§ã�‚ã‚‹ã�“ã�¨ã�§ã�‚る。ã��ã�®ä¸Šã€�ã�“れらã�®ãƒ•ォーマットã�¯è¨€èªžã‚„フレームワークã�«å›ºæœ‰ã�®ã‚‚ã�®ã�«ã�ªã‚Šã�Œã�¡ã�§ã�‚る。 **Twelve-Factor Appã�¯è¨­å®šã‚’ *環境変数* ã�«æ ¼ç´�ã�™ã‚‹ã€‚** 環境変数ã�¯ã€�コードを変更ã�™ã‚‹ã�“ã�¨ã�ªã��デプロイã�”ã�¨ã�«ç°¡å�˜ã�«å¤‰æ›´ã�§ã��る。設定ファイルã�¨ã�¯ç•°ã�ªã‚Šã€�誤ã�£ã�¦ãƒªãƒ�ジトリã�«ãƒ�ェックインã�•れるå�¯èƒ½æ€§ã�¯ã�»ã�¨ã‚“ã�©ã�ªã�„。ã�¾ã�Ÿã€�独自形å¼�ã�®è¨­å®šãƒ•ァイルやJava System Propertiesã�ªã�©ä»–ã�®è¨­å®šã�®ä»•組ã�¿ã�¨ã�¯ç•°ã�ªã‚Šã€�環境変数ã�¯è¨€èªžã‚„OSã�«ä¾�å­˜ã�—ã�ªã�„標準ã�§ã�‚る。 設定管ç�†ã�®ã‚‚ã�†1ã�¤ã�®å�´é�¢ã�¯ã‚°ãƒ«ãƒ¼ãƒ”ングã�§ã�‚る。アプリケーションã�¯è¨­å®šã‚’å��å‰�付ã��ã�®ã‚°ãƒ«ãƒ¼ãƒ—(ã�—ã�°ã�—ã�°â€œç’°å¢ƒâ€�ã�¨å‘¼ã�°ã‚Œã‚‹ï¼‰ã�«ã�¾ã�¨ã‚�ã‚‹ã�“ã�¨ã�Œã�‚る。グループã�¯ã€�Railsã�«ã�Šã�‘ã‚‹`development`ã€�`test`ã€�`production`環境ã�®ã‚ˆã�†ã�«ã€�デプロイã�®å��å‰�ã‚’å�–ã�£ã�¦å��付ã�‘られる。ã�“ã�®æ–¹æ³•ã�¯ã�†ã�¾ã��スケールã�—ã�ªã�„。アプリケーションã�®ãƒ‡ãƒ—ロイã�Œå¢—ã�ˆã‚‹ã�«ã�¤ã‚Œã�¦ã€�æ–°ã�—ã�„環境å��(`staging`ã‚„`qa`)ã�Œå¿…è¦�ã�«ã�ªã‚‹ã€‚ã�•らã�«ãƒ—ロジェクトã�Œæ‹¡å¤§ã�™ã‚‹ã�¨ã€�開発者ã�¯`joes-staging`ã�®ã‚ˆã�†ã�ªè‡ªåˆ†ç”¨ã�®ç’°å¢ƒã‚’追加ã�™ã‚‹ã€‚çµ�æžœã�¨ã�—ã�¦è¨­å®šã�Œçµ„ã�¿å�ˆã‚�ã�›çš„ã�«çˆ†ç™ºã�—ã€�アプリケーションã�®ãƒ‡ãƒ—ロイã�®ç®¡ç�†ã�Œé�žå¸¸ã�«ä¸�安定ã�«ã�ªã‚‹ã€‚ Twelve-Factor Appã�®å ´å�ˆã€�環境変数ã�¯ç²’度ã�®ç´°ã�‹ã�„管ç�†ã�§ã�‚りã€�ã��れã�žã‚Œã�®ç’°å¢ƒå¤‰æ•°ã�¯äº’ã�„ã�«ç›´äº¤ã�—ã�¦ã�„る。環境変数ã�¯â€œç’°å¢ƒâ€�ã�¨ã�—ã�¦ã�¾ã�¨ã‚�られるã�“ã�¨ã�¯ã�ªã�„ã�Œã€�代ã‚�りã�«ãƒ‡ãƒ—ロイã�”ã�¨ã�«ç‹¬ç«‹ã�—ã�¦ç®¡ç�†ã�•れる。ã�“れã�¯ã€�アプリケーションã�®ãƒ©ã‚¤ãƒ•サイクルã�«æ¸¡ã�£ã�¦ã€�アプリケーションã�Œå¤šã��ã�®ãƒ‡ãƒ—ロイã�¸ã�¨è‡ªç„¶ã�«æ‹¡å¤§ã�—ã�¦ã�„ã��ã�«ã�¤ã‚Œã�¦ã€�スムーズã�«ã‚¹ã‚±ãƒ¼ãƒ«ã‚¢ãƒƒãƒ—ã�™ã‚‹ãƒ¢ãƒ‡ãƒ«ã�§ã�‚る。 content/ko/background.md0000644000175000056700000000253715232661434014044 0ustar0000000000000000ë°°ê²½ ========== ì�´ 문서ì—� 기여한 사람들ì�€ 수백개 앱ì�˜ 개발과 ë°°í�¬ì—� ì§�ì ‘ 참여했으며, [Heroku](http://www.heroku.com/) 플랫í�¼ì�„ 통해서 방대한 앱ì�˜ 개발, ìš´ì˜�, 확장ì�„ ê°„ì ‘ì �으로 관찰했다. ì�´ 문서는 실제로 ì“°ì�´ëŠ” 다양한 SaaS 앱ì—� 대한 경험과 관찰ì�„ 종합한 결과물ì�´ë‹¤. 특히 시간ì�´ 지나면서 앱ì�´ 유기ì �으로 성장하는 부분, 앱 코드베ì�´ìФì—�서 작업하는 개발ìž�들 ê°„ì�˜ 협업, [시간ì�´ 지나면서 ë§�가지는 소프트웨어 유지비용ì�„ 줄ì�´ëŠ” 법](http://blog.heroku.com/archives/2011/6/28/the_new_heroku_4_erosion_resistance_explicit_contracts/)ì—� 집중하여 ì�´ìƒ�ì �ì�¸ 앱 개발 방법ì�„ 찾고ìž� 했다. ì�´ 문서는 우리가 최신 애플리케ì�´ì…˜ 개발ì—�서 만났ë�˜ 몇가지 시스템ì �ì�¸ 문제ì—� 대한 ì�¸ì§€ë�„를 높ì�´ê³ , ì�´ 문제들ì�„ 가지고 ë…¼ì�˜ 하는ë�° 필요한 공통ì�˜ 어휘를 제공하며, ì�´ 문제들ì—� 대한 ë„“ì�€ ê°œë…�ì�˜ í•´ê²°ì±…ê³¼ 용어를 제공하기 위해 작성 했다. 형ì‹�ì�€ Martin Fowlerì�˜ ì±…, *[Patterns of Enterprise Application Architecture](http://books.google.com/books/about/Patterns_of_enterprise_application_archi.html?id=FyWZt5DdvFkC)*ê³¼ *[Refactoring](http://books.google.com/books/about/Refactoring.html?id=1MsETFPD3I0C)*ì—�서 ì˜�ê°�ì�„ 받았다.content/pt_br/port-binding.md0000644000175000056700000000413615232661434015013 0ustar0000000000000000## VII. Vínculo de Portas ### Exporte serviços via vínculo de portas Apps web as vezes são executadas dentro de container de servidor web. Por exemplo, apps PHP podem rodar como um módulo dentro do [Apache HTTPD](http://httpd.apache.org/), ou apps Java podem rodar dentro do [Tomcat](http://tomcat.apache.org/). **O aplicativo doze-fatores é completamente auto-contido** e não depende de injeções de tempo de execução de um servidor web em um ambiente de execução para criar um serviço que defronte a web. O app web **exporta o HTTP como um serviço através da vínculação a uma porta**, e escuta as requisições que chegam na mesma. Num ambiente de desenvolvimento local, o desenvolvedor visita a URL de um serviço como `http://localhost:5000/` para acessar o serviço exportado pelo seu app. Num deploy, uma camada de roteamento manipula as requisições de rotas vindas de um hostname público para os processos web atrelados às portas. Isso é tipicamente implementado usando [declaração de dependências](./dependencies) para adicionar uma biblioteca de servidor ao app, tal como [Tornado](http://www.tornadoweb.org/) para Python, [Thin](http://code.macournoyer.com/thin/) para Ruby, ou [Jetty](http://www.eclipse.org/jetty/) para Java e outra linguagens baseadas na JVM. Isso acontece completamente no *espaço do usuário*, isso é, dentro do código do app. O contrato com o ambiente de execução é vincular a uma porta para servir requisições. HTTP não é o único serviço que pode ser exportado via vínculo de portas. Quase todos os tipos de software servidores podem rodar via um processo vinculado a uma porta e aguardar as requisições chegar. Exemplos incluem [ejabberd](http://www.ejabberd.im/) (comunicando via [XMPP](http://xmpp.org/)), e [Redis](http://redis.io/) (comunicando via [protocolo Redis](http://redis.io/topics/protocol)). Note que a abordagem de vincular portas significa que um app pode se tornar o [serviço de apoio](./backing-services) para um outro app, provendo a URL do app de apoio como um identificador de recurso na [configuração](./config) para o app consumidor. content/ru/concurrency.md0000644000175000056700000001237715232661434014277 0ustar0000000000000000## VIII. Параллелизм ### МаÑ�штабируйте приложение Ñ� помощью процеÑ�Ñ�ов ЛюбаÑ� компьютернаÑ� программа поÑ�ле запуÑ�ка предÑ�тавлÑ�ет Ñ�обой один или неÑ�колько работающих процеÑ�Ñ�ов. ИÑ�торичеÑ�ки веб-приложениÑ� принимали различные формы выполнениÑ� процеÑ�Ñ�ов. К примеру, PHP-процеÑ�Ñ�Ñ‹ выполнÑ�Ñ‚Ñ�Ñ� как дочерние процеÑ�Ñ�Ñ‹ Apache и запуÑ�каютÑ�Ñ� по требованию в необходимом длÑ� обÑ�луживаниÑ� поÑ�тупивших запроÑ�ов количеÑ�тве. Java-процеÑ�Ñ�Ñ‹ иÑ�пользуют противоположный подход, JVM предÑ�тавлÑ�ет Ñ�обой один монолитный мета-процеÑ�Ñ�, который резервирует большой объём Ñ�иÑ�темных реÑ�урÑ�ов (процеÑ�Ñ�ор и памÑ�ть) при запуÑ�ке и управлÑ�ет параллельноÑ�тью внутри Ñ�ебÑ� Ñ� помощью нитей иÑ�полнениÑ� (threads). Ð’ обоих Ñ�лучаÑ�Ñ… запущенные процеÑ�Ñ�Ñ‹ лишь минимально видны длÑ� разработчика приложениÑ�. ![МаÑ�штабирование выражаетÑ�Ñ� в количеÑ�тве запущенных процеÑ�Ñ�ов, различие рабочей нагрузки выражаетÑ�Ñ� в типах процеÑ�Ñ�ов.](/images/process-types.png) **Ð’ приложении двенадцати факторов процеÑ�Ñ�Ñ‹ Ñ�влÑ�ÑŽÑ‚Ñ�Ñ� Ñ�ущноÑ�Ñ‚Ñ�ми первого клаÑ�Ñ�а.** ПроцеÑ�Ñ�Ñ‹ в приложении двенадцати факторов взÑ�ли Ñ�ильные Ñ�тороны из [модели процеÑ�Ñ�ов Unix длÑ� запуÑ�ка демонов](https://adam.herokuapp.com/past/2011/5/9/applying_the_unix_process_model_to_web_apps/). С помощью Ñ�той модели разработчик может Ñ�проектировать Ñ�воё приложение таким образом, что длÑ� обработки различной рабочей нагрузки необходимо назначить каждому типу работы Ñ�воего *типа процеÑ�Ñ�а*. Ð�апример, HTTP-запроÑ�Ñ‹ могут быть обработаны веб-процеÑ�Ñ�ом, а длительные фоновые задачи обработаны рабочим процеÑ�Ñ�ом. Это не иÑ�ключает возможноÑ�ть иÑ�пользованиÑ� внутреннего мультиплекÑ�ированиÑ� длÑ� индивидуальных процеÑ�Ñ�ов через потоки выполнениÑ� виртуальной машины или аÑ�инхронные/Ñ�обытийные модели в инÑ�трументах таких, как [EventMachine](https://github.com/eventmachine/eventmachine), [Twisted](http://twistedmatrix.com/trac/) и [Node.js](http://nodejs.org/). Ð�о каждаÑ� индивидуальнаÑ� виртуальнаÑ� машина может маÑ�штабироватьÑ�Ñ� только ограничено (вертикальное маÑ�штабирование), поÑ�тому приложение должно иметь возможноÑ�ть быть запущенным как неÑ�колько процеÑ�Ñ�ов на различных физичеÑ�ких машинах. Модель, поÑ�троеннаÑ� на процеÑ�Ñ�ах, дейÑ�твительно Ñ�иÑ�ет, когда приходит времÑ� маÑ�штабированиÑ�. [ОтÑ�утÑ�твие разделÑ�емых данных и горизонтальное разделение процеÑ�Ñ�ов приложениÑ� двенадцати факторов](./processes) означает, что добавление большего параллелизма Ñ�влÑ�етÑ�Ñ� проÑ�той и надёжной операцией. МаÑ�Ñ�ив процеÑ�Ñ�ов различного типа и количеÑ�тво процеÑ�Ñ�ов каждого типа называютÑ�Ñ� *формированием процеÑ�Ñ�ов (process formation)*. ПроцеÑ�Ñ�Ñ‹ приложениÑ� двенадцати факторов [никогда не должны демонизироватьÑ�Ñ�](http://dustin.github.com/2010/02/28/running-processes.html) и запиÑ�ывать PID файлы. ВмеÑ�то Ñ�того они должны полагатьÑ�Ñ� на менеджер процеÑ�Ñ�ов операционной Ñ�иÑ�темы (например, [systemd](https://www.freedesktop.org/wiki/Software/systemd/), раÑ�пределённый менеджер процеÑ�Ñ�ов на облачной платформе, или инÑ�трумент как [Foreman](http://blog.daviddollar.org/2011/05/06/introducing-foreman.html) в процеÑ�Ñ�е разработки) длÑ� управлениÑ� [потоком вывода](./logs), реагированиÑ� на падениÑ� процеÑ�Ñ�а и обработки инициированных пользователем перезагрузки или завершениÑ� работы. content/ru/toc.md0000644000175000056700000000443615232661434012527 0ustar0000000000000000Двенадцать факторов ================== ## [I. КодоваÑ� база](./codebase) ### Одна кодоваÑ� база, отÑ�леживаемаÑ� в Ñ�иÑ�теме контролÑ� верÑ�ий, -- множеÑ�тво развёртываний ## [II. ЗавиÑ�имоÑ�ти](./dependencies) ### Явно объÑ�влÑ�йте и изолируйте завиÑ�имоÑ�ти ## [III. КонфигурациÑ�](./config) ### СохранÑ�йте конфигурацию в Ñ�реде выполнениÑ� ## [IV. Сторонние Ñ�лужбы (Backing Services)](./backing-services) ### Считайте Ñ�торонние Ñ�лужбы (backing services) подключаемыми реÑ�урÑ�ами ## [V. Сборка, релиз, выполнение](./build-release-run) ### Строго разделÑ�йте Ñ�тадии Ñ�борки и выполнениÑ� ## [VI. ПроцеÑ�Ñ�Ñ‹](./processes) ### ЗапуÑ�кайте приложение как один или неÑ�колько процеÑ�Ñ�ов не Ñ�охранÑ�ющих внутреннее Ñ�оÑ�тоÑ�ние (stateless) ## [VII. ПривÑ�зка портов (Port binding)](./port-binding) ### ЭкÑ�портируйте Ñ�ервиÑ�Ñ‹ через привÑ�зку портов ## [VIII. Параллелизм](./concurrency) ### МаÑ�штабируйте приложение Ñ� помощью процеÑ�Ñ�ов ## [IX. УтилизируемоÑ�ть (Disposability)](./disposability) ### МакÑ�имизируйте надёжноÑ�ть Ñ� помощью быÑ�трого запуÑ�ка и корректного завершениÑ� работы ## [X. Паритет разработки/работы приложениÑ�](./dev-prod-parity) ### Держите окружениÑ� разработки, промежуточного развёртываниÑ� (staging) и рабочего развёртываниÑ� (production) макÑ�имально похожими ## [XI. Журналирование (Logs)](./logs) ### РаÑ�Ñ�матривайте журнал как поток Ñ�обытий ## [XII. Задачи админиÑ�трированиÑ�](./admin-processes) ### ВыполнÑ�йте задачи админиÑ�трированиÑ�/управлениÑ� Ñ� помощью разовых процеÑ�Ñ�ов content/th/build-release-run.md0000644000175000056700000001175015232661434015243 0ustar0000000000000000## V. Build, release, run ### à¹�ยà¸�ขั้นตอนของà¸�าร build à¹�ละ run อย่างเคร่งครัด [codebase](./codebase) จะเปลี่ยนà¹�ปลงไปเป็น (non-development) deploy ด้วย 3 ขั้นตอน: * *ขั้นตอนà¸�าร build* เป็นà¸�ารà¹�ปลงซึ่งเป็นà¸�ารเปลี่ยน code repo ไปเป็นโปรà¹�à¸�รมที่ทำงานได้ (executable bundle) เรียà¸�ว่าà¸�าร *build* ใช้ version ของ code ที่ระบุ commit ด้วยà¸�ระบวนà¸�าร deployment ซึ่งขั้นตอนà¸�าร build นี้จะดึง[à¸�ารอ้างอิง](./dependencies) à¹�ละ compile เป็น binariy à¹�ละ assets. * *ขั้นตอนà¸�าร release* จะนำ build ที่ได้จาà¸�ขั้นตอนà¸�าร build à¹�ละรวามเข้าà¸�ับ [à¸�ารตั้งค่า](./config) ของ deploy ซึ่งจะได้ *release* ที่มีทั้ง build à¹�ละ à¸�ารตั้งค่า ที่พร้อมจะทำงานได้ในสิ่งà¹�วดล้อมà¸�ารทำงาน * *ขั้นตอนà¸�าร run* (หรือเรียà¸�ว่า "runtime") เป็นà¸�ารทำให้ app ทำงานในสิ่งà¹�วดล้อมà¸�ารทำงาน ด้วยà¸�ารเริ่มใช้งานบางเซตของ app [processes](./processes) ด้วย release ที่ถูà¸�เลือà¸� ![Code becomes a build, which is combined with config to create a release.](/images/release.png) **Twelve-factor app ใช้à¸�ารà¹�ยà¸�ขั้นตอนà¸�าร build, release à¹�ละ run ออà¸�จาà¸�à¸�ันอย่างเคร่งครัด** ตัวอย่างเช่น เป็นไปไม่ได้ที่ทำà¸�ารเปลี่ยนà¹�ปลงของ code ในขณะทำงาน เนื่องจาà¸�ไม่มีวิธีใดในà¸�ารเผยà¹�พร่à¸�ารเปลี่ยนà¹�ปลงà¸�ลับสู่สถานะ build เครื่องมื่อสำหรับ deployment โดยทั่วไปจะมีเครื่องมือจัดà¸�ารà¸�าร release อยู่à¹�ล้ว à¹�ละส่วนใหà¸�่จะมีความสามารถ roll back à¸�ลับสู่ release à¸�่อนหน้าได้ ตัวอย่างเช่น [Capistrano](https://github.com/capistrano/capistrano/wiki) เป็นเครื่องมือ deployment ที่เà¸�็บà¸�าร release ในไดเรà¸�ทอรีย่อยชื่อว่า `releases` ที่ซึ่ง release ปัจจุบันเชื่อมโยงเข้าà¸�ับไดเรà¸�ทอรี release ปัจจุบัน สามารถใช้คำสั่ง `rollback` เพื่อทำให้มัน roll back à¸�ลับไปเป็น release à¸�่อนหน้าอย่างรวดเร็ว ทุà¸�ๆ release ควรจะมี release ID เฉพาะเสมอ เช่น timestamp ของ release (เช่น `2011-04-06-20:32:17`) หรือจำนวนนับที่เพิ่มขึ้น (เช่น `v100`), release เป็นบัà¸�ชีà¹�ยà¸�ประเภทที่เพิ่มขึ้นได้เท่านั้นà¹�ละ release ไม่สามารถà¹�à¸�้ไขได้เมื่อถูà¸�สร้างขึ้นà¹�ล้ว ทุà¸�ๆ à¸�ารเปลี่ยนà¹�ปลงจำเป็นต้องสร้าง release ใหม่เสมอ à¸�าร build เริ่มต้นโดย developer ของ app เมื่อไรà¸�็ตามที่ code ใหม่ถูà¸� deploy, à¸�ารทำงานในขณะทำงาน ในทางตรงà¸�ันข้าม สามารถเà¸�ิดขึ้นได้โดยอัตโนมัติในà¸�รณีที่ server reboot หรือ crashed process ถูà¸� restart โดย process manager ดังนั้นขั้นตอนà¸�าร run ถูà¸�ทำให้มีขั้นตอนน้อยที่สุดเท่าที่จะเป็นไปได้ เพื่อป้องà¸�ันปัà¸�หา app สามารถหยุดà¸�ารทำงานได้ในเวลาตอนà¸�ลางคืนเมื่อไม่มี developer อยู่ทำงาน ขั้นตอนà¸�าร build สามารถเป็นขั้นตอนที่ซับซ้อนได้ ในเมื่อ error จะà¹�สดงต่อ developer ผู้ซึ่งทำà¸�าร deploy มัน content/zh_cn/logs.md0000644000175000056700000000361215232661434013354 0ustar0000000000000000## XI. 日志 ### 把日志当作事件æµ� *日志* 使得应用程åº�è¿�行的动作å�˜å¾—é€�明。在基于æœ�务器的环境中,日志通常被写在硬盘的一个文件里,但这å�ªæ˜¯ä¸€ç§�输出格å¼�。 日志应该是 [事件æµ�](https://adam.herokuapp.com/past/2011/4/1/logs_are_streams_not_files/) 的汇总,将所有è¿�行中进程和å�Žç«¯æœ�务的输出æµ�按照时间顺åº�收集起æ�¥ã€‚尽管在回溯问题时å�¯èƒ½éœ€è¦�看很多行,日志最原始的格å¼�确实是一个事件一行。日志没有确定开始和结æ�Ÿï¼Œä½†éš�ç�€åº”用在è¿�行会æŒ�续的增加。 **12-factor应用本身从ä¸�考虑存储自己的输出æµ�。** ä¸�应该试图去写或者管ç�†æ—¥å¿—文件。相å��,æ¯�一个è¿�行的进程都会直接的标准输出(`stdout`)事件æµ�。开å�‘环境中,开å�‘人员å�¯ä»¥é€šè¿‡è¿™äº›æ•°æ�®æµ�,实时在终端看到应用的活动。 在预å�‘布或线上部署中,æ¯�个进程的输出æµ�ç”±è¿�行环境截获,并将其他输出æµ�æ•´ç�†åœ¨ä¸€èµ·ï¼Œç„¶å�Žä¸€å¹¶å�‘é€�给一个或多个最终的处ç�†ç¨‹åº�,用于查看或是长期存档。这些存档路径对于应用æ�¥è¯´ä¸�å�¯è§�也ä¸�å�¯é…�置,而是完全交给程åº�çš„è¿�行环境管ç�†ã€‚类似 [Logplex](https://github.com/heroku/logplex) å’Œ [Fluentd](https://github.com/fluent/fluentd) 的开æº�工具å�¯ä»¥è¾¾åˆ°è¿™ä¸ªç›®çš„。 这些事件æµ�å�¯ä»¥è¾“出至文件,或者在终端实时观察。最é‡�è¦�的,输出æµ�å�¯ä»¥å�‘é€�到 [Splunk](http://www.splunk.com/) 这样的日志索引å�Šåˆ†æž�系统,或 [Hadoop/Hive](http://hive.apache.org/) 这样的通用数æ�®å­˜å‚¨ç³»ç»Ÿã€‚这些系统为查看应用的历å�²æ´»åЍæ��供了强大而ç�µæ´»çš„功能,包括: * 找出过去一段时间特殊的事件。 * 图形化一个大规模的趋势,比如æ¯�分钟的请求é‡�。 * æ ¹æ�®ç”¨æˆ·å®šä¹‰çš„æ�¡ä»¶å®žæ—¶è§¦å�‘警报,比如æ¯�分钟的报错超过æŸ�个警戒线。 content/de/concurrency.md0000644000175000056700000000545415232661434014237 0ustar0000000000000000## VIII. Nebenläufigkeit ### Mit dem Prozess-Modell skalieren Jedes Computerprogramm wird, wenn es läuft, repräsentiert durch einen oder mehrere Prozesse. Webapps nutzen verschiedenste Arten der Prozess-Ausführung. Zum Beispiel laufen PHP-Prozesse als Kind-Prozesse von Apache und werden nach Bedarf gestartet, wenn Requests kommen. Java-Prozesse gehen anders vor: die JVM stellt einen massiven Über-Prozess zur Verfügung der große Mengen an Systemressourcen (Speicher und CPU) reserviert und die Nebenläufigkeit wird intern über Threads verwaltet. In beiden Fällen sind die laufenden Prozesse für die Entwickler der App nur minimal zu sehen. ![Die Skalierung wird dargestellt als laufende Prozesse, die Diversität der Workload wird dargestellt als Prozesstypen.](/images/process-types.png) **In der Zwölf-Faktor-App sind Prozesse First Class Citizens.** Die Prozesse der Zwölf-Faktor-App orientieren sich am [Unix-Prozess-Modell für Service Daemons](https://adam.herokuapp.com/past/2011/5/9/applying_the_unix_process_model_to_web_apps/). Mit diesem Model können Entwickler ihre App für die Bearbeitung verschiedenster Aufgaben konzipieren in dem sie jeder Aufgabe einen *Prozesstyp* zuweisen. Zum Beispiel können HTTP-Requests durch einen Web-Prozess bedient werden und langlaufende Hintergrundarbeiten durch einen Worker-Prozess. Dies hindert die einzelnen Prozesse nicht daran, ihr internes Multiplexing zu verwalten, mittels Threads in der Laufzeit-VM oder mit dem Async/Event-Modell von Werkzeugen wie [EventMachine](https://github.com/eventmachine/eventmachine), [Twisted](http://twistedmatrix.com/trac/) oder [Node.js](http://nodejs.org/). Aber eine einzelne VM ist in der Größe dadurch beschränkt (vertikale Skalierung), dass eine App noch in der Lage sein muss, mehrere Prozesse auf mehreren physikalischen Maschinen zu starten. Das Prozess-Modell glänzt besonders, wenn es um Skalierung geht. Die [Share-Nothing, horizontal teilbare Art und Weise der Prozesse der Zwölf-Faktor-App](./processes) hat zur Folge, dass weitere Nebenläufigkeit einfach und zuverlässig hinzugefügt werden kann. Das Bündel von Prozesstypen und die Zahl der Prozesse wird auch *Prozess-Formation* genannt. Die Prozesse einer Zwölf-Faktor-App [sollten nie als Daemons laufen](http://dustin.github.com/2010/02/28/running-processes.html) oder PID-Dateien schreiben. Stattdessen sollen sie sich auf den Prozessmanager des Betriebssystems verlassen (wie [systemd](https://www.freedesktop.org/wiki/Software/systemd/), den verteilten Prozessmanager einer Cloud-Plattform oder ein Werkzeug wie [Foreman](http://blog.daviddollar.org/2011/05/06/introducing-foreman.html) während der Entwicklung) um [Output-Streams](./logs) zu verwalten, auf abgestürzte Prozesse zu reagieren und mit von Benutzern angestoßenen Restarts und Shutdowns umzugehen. content/es/background.md0000644000175000056700000000303115232661434014030 0ustar0000000000000000Contexto ======== Los colaboradores de este documento han estado involucrados directamente en el desarrollo y despliegue de cientos de aplicaciones, y han sido testigos indirectos del desarrollo, las operaciones y el escalado de cientos de miles de aplicaciones mediante nuestro trabajo en la plataforma [Heroku](http://www.heroku.com/). Este documento sintetiza toda nuestra experiencia y observaciones en una amplia variedad de aplicaciones SaaS. Es la triangulación entre practicas ideales para el desarrollo de aplicaciones, prestando especial atención a las dinámicas del crecimiento natural de una aplicación a lo largo del tiempo, las dinámicas de colaboración entre desarrolladores que trabajan en el código base de las aplicaciones y [evitando el coste de la entropía del software](http://blog.heroku.com/archives/2011/6/28/the_new_heroku_4_erosion_resistance_explicit_contracts/). Nuestra motivación es mejorar la concienciación sobre algunos problemas sistémicos que hemos observado en el desarrollo de las aplicaciones modernas, aportar un vocabulario común que sirva para discutir sobre estos problemas, y ofrecer un conjunto de soluciones conceptualmente robustas para esos problemas acompañados de su correspondiente terminología. El formato está inspirado en los libros de Martin Fowler *[Patterns of Enterprise Application Architecture](http://books.google.com/books/about/Patterns_of_enterprise_application_archi.html?id=FyWZt5DdvFkC)* y *[Refactoring](http://books.google.com/books/about/Refactoring.html?id=1MsETFPD3I0C)*. content/it/backing-services.md0000644000175000056700000000541515232661434015145 0ustar0000000000000000## IV. Backing Service ### Tratta i backing service come "risorse" Un "backing service" è un qualsiasi servizio che l'applicazione consuma attraverso la rete durante la sua esecuzione. Alcuni esempi includono i database (come [MySQL](http://dev.mysql.com/) o [CouchDB](http://couchdb.apache.org/)), servizi di messaging/code (come [RabbitMQ](http://www.rabbitmq.com/) oppure [Beanstalkd](https://beanstalkd.github.io)), servizi SMTP per la posta (come [Postfix](http://www.postfix.org/)) e sistemi di cache (come [Memcached](http://memcached.org/)). Un backing service (prendiamo ad esempio un database) è tradizionalmente gestito dallo stesso amministratore di sistema, al deployment dell'applicazione. In aggiunta a questi servizi gestiti in locale potrebbero esserne presenti altri, forniti da terze parti. Parliamo di servizi SMTP (come [Postmark](http://postmarkapp.com/)), servizi di raccolta metriche (come [New Relic](http://newrelic.com/) o [Loggly](http://www.loggly.com/)), servizi per asset (come [Amazon S3](http://aws.amazon.com/s3/)), e anche servizi accessibili via API (come [Twitter](http://dev.twitter.com/), [Google Maps](https://developers.google.com/maps/), o [Last.fm](http://www.last.fm/api)). **Il codice di un'app twelve-factor non fa distinzioni tra servizi in locale o third party**. Per l'applicazione, entrambi sono risorse connesse, accessibili via URL (o tramite un altro locator) e credenziali memorizzate nell'opportuno file di [configurazione](./config). A un qualsiasi [deployment](./codebase) di un'applicazione twelve-factor si deve poter permettere di passare velocemente da un database MySQL locale a uno third party (come [Amazon RDS](http://aws.amazon.com/rds/)) senza alcuna modifica al codice. Allo stesso modo, un server SMTP locale dovrebbe poter essere cambiato con uno third party (come Postmark). In entrambi i casi, a cambiare dovrebbero essere **solo** i file di configurazione necessari. Ogni backing service è quindi definibile come una "risorsa connessa". Un Database MySQL è una risorsa. Due database MySQL (utilizzati per lo sharding a livello di applicazione) saranno visti come due distinte risorse. Un'app twelve-factor vede questi database come *risorse* anche per sottolineare la separazione dal deployment a cui fanno riferimento. Un deployment di produzione collegato a quattro backing service. Le risorse possono essere collegate e scollegate da un deployment a piacimento. Per esempio, supponiamo che il database dell'applicazione si comporti in modo anomalo per problemi hardware. L'amministratore potrebbe decidere di voler configurare un altro server di database ripreso da un recente backup. Il vecchio database verrebbe scollegato, quello nuovo connesso -- senza modifiche al codice. content/ru/background.md0000644000175000056700000000452615232661434014061 0ustar0000000000000000ПредпоÑ�ылки ========== УчаÑ�тники, внёÑ�шие вклад в Ñ�тот документ, были непоÑ�редÑ�твенно вовлечены в разработку и развёртывание Ñ�отен приложений и коÑ�венно были Ñ�видетелÑ�ми разработки, выполнениÑ� и маÑ�штабированиÑ� Ñ�отен тыÑ�Ñ�ч приложений во времÑ� нашей работы над платформой [Heroku](http://www.heroku.com/). Ð’ Ñ�том документе обобщаетÑ�Ñ� веÑ�ÑŒ наш опыт иÑ�пользованиÑ� и наблюдениÑ� за Ñ�амыми разнообразными SaaS-приложениÑ�ми в дикой природе. Документ Ñ�влÑ�етÑ�Ñ� объединением трёх идеальных подходов к разработке приложений: уделение оÑ�обого вниманиÑ� динамике органичеÑ�кого роÑ�та приложениÑ� Ñ� течением времени, динамике Ñ�отрудничеÑ�тва разработчиков, работающих над кодовой базой приложениÑ�, и [уÑ�транение поÑ�ледÑ�твий Ñ�розии программного обеÑ�печениÑ�](http://blog.heroku.com/archives/2011/6/28/the_new_heroku_4_erosion_resistance_explicit_contracts/). Ð�аша мотивациÑ� заключаетÑ�Ñ� в повышении оÑ�ведомлённоÑ�ти о некоторых Ñ�иÑ�темных проблемах, которые мы вÑ�третили в практике разработки Ñ�овременных приложений, а также длÑ� того, чтобы предоÑ�тавить общие оÑ�новные понÑ�тиÑ� длÑ� обÑ�уждениÑ� Ñ�тих проблем и предложить набор общих концептуальных решений Ñ�тих проблем Ñ� Ñ�опутÑ�твующей терминологией. Формат навеÑ�н книгами Мартина Фаулера (Martin Fowler) *[Patterns of Enterprise Application Architecture](http://books.google.com/books/about/Patterns_of_enterprise_application_archi.html?id=FyWZt5DdvFkC)* и *[Refactoring](http://books.google.com/books/about/Refactoring.html?id=1MsETFPD3I0C)*. content/ru/config.md0000644000175000056700000001463415232661434013210 0ustar0000000000000000## III. КонфигурациÑ� ### СохранÑ�йте конфигурацию в Ñ�реде выполнениÑ� *КонфигурациÑ�* приложениÑ� -- Ñ�то вÑ�Ñ‘, что может менÑ�тьÑ�Ñ� между [развёртываниÑ�ми](./codebase) (Ñ�реда разработки, промежуточное и рабочее развёртывание). Это включает в Ñ�ебÑ�: * Идентификаторы подключениÑ� к реÑ�урÑ�ам типа базы данных, кÑ�ш-памÑ�ти и другим [Ñ�торонним Ñ�лужбам](./backing-services) * РегиÑ�трационные данные длÑ� подключениÑ� к внешним Ñ�ервиÑ�ам, например, к Amazon S3 или Twitter * ЗначениÑ� завиÑ�имые от Ñ�реды развёртываниÑ� такие, как каноничеÑ�кое имÑ� хоÑ�та Иногда приложениÑ� хранÑ�Ñ‚ конфигурации как конÑ�танты в коде. Это нарушение методологии двенадцати факторов, котораÑ� требует **Ñ�трогого разделениÑ� конфигурации и кода**. КонфигурациÑ� может Ñ�ущеÑ�твенно различатьÑ�Ñ� между развёртываниÑ�ми, код не должен различатьÑ�Ñ�. ЛакмуÑ�овой бумажкой того, правильно ли разделены конфигурациÑ� и код приложениÑ�, Ñ�влÑ�етÑ�Ñ� факт того, что кодоваÑ� база приложениÑ� может быть в любой момент открыта в Ñ�вободный доÑ�туп без компрометации каких-либо приватных данных. Обратите внимание, что Ñ�то определение "конфигурации" **не** включает внутренние конфигурации приложениÑ�, например такие как 'config/routes.rb' в Rails, или того как [оÑ�новные модули будут Ñ�вÑ�заны](http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html) в [Spring](http://spring.io/). Этот тип конфигурации не менÑ�етÑ�Ñ� между развёртываниÑ�ми и поÑ�тому лучше вÑ�его держать его в коде. Другим подходом к конфигурации Ñ�влÑ�етÑ�Ñ� иÑ�пользование конфигурационных файлов, которые не Ñ�охранÑ�ÑŽÑ‚Ñ�Ñ� в Ñ�иÑ�тему контролÑ� верÑ�иÑ�, например 'config/database.yml' в Rails. Это огромное улучшение перед иÑ�пользованием конÑ�тант, которые Ñ�охранÑ�ÑŽÑ‚Ñ�Ñ� в коде, но по-прежнему и у Ñ�того метода еÑ�ть недоÑ�татки: легко по ошибке Ñ�охранить конфигурационный файл в репозиторий; Ñ�ущеÑ�твует тенденциÑ� когда конфигурационные файлы разброÑ�аны в разных меÑ�тах и в разных форматах, из за Ñ�того Ñ�тановитÑ�Ñ� трудно проÑ�матривать и управлÑ�ть вÑ�еми наÑ�тройками в одном меÑ�те. Кроме того форматы Ñ�тих файлов, как правило, Ñ�пецифичны длÑ� конкретного Ñ�зыка или фреймворка. **Приложение двенадцати факторов хранит конфигурацию в *переменных окружениÑ�*** (чаÑ�то Ñ�окращаетÑ�Ñ� до *env vars* или *env*). Переменные окружениÑ� легко изменить между развёртываниÑ�ми, не изменÑ�Ñ� код; в отличие от файлов конфигурации, менее вероÑ�тно Ñ�лучайно Ñ�охранить их в репозиторий кода; и в отличие от пользовательÑ�ких конфигурационных файлов или других механизмов конфигурации, таких как Java System Properties, они Ñ�влÑ�ÑŽÑ‚Ñ�Ñ� незавиÑ�имым от Ñ�зыка и операционной Ñ�иÑ�темы Ñ�тандартом. Другим подходом к управлению конфигурациÑ�ми Ñ�влÑ�етÑ�Ñ� группировка. Иногда приложениÑ� группируют конфигурации в именованные группы (чаÑ�то называемые "окружениÑ�ми") названые по названию конкретного развёртываниÑ�, например как `development`, `test` и `production` окружениÑ� в Rails. Этот метод не Ñ�влÑ�етÑ�Ñ� доÑ�таточно маÑ�штабируемым: чем больше различных развёртываний приложениÑ� Ñ�оздаётÑ�Ñ�, тем больше новых имён окружений необходимо, например `staging` и `qa`. При дальнейшем роÑ�те проекта, разработчики могут добавлÑ�ть Ñ�вои Ñ�обÑ�твенные Ñ�пециальные окружениÑ�, такие как `joes-staging`, в результате проиÑ�ходит комбинаторный взрыв конфигураций, который делает управление развёртываниÑ�ми приложениÑ� очень хрупким. Ð’ приложении двенадцати факторов переменные окружениÑ� Ñ�влÑ�ÑŽÑ‚Ñ�Ñ� не Ñ�вÑ�занными между Ñ�обой Ñ�редÑ�твами управлениÑ�, где каждаÑ� переменнаÑ� окружениÑ� полноÑ�тью незавиÑ�има от других. Они никогда не группируютÑ�Ñ� вмеÑ�те в "окружениÑ�", а вмеÑ�то Ñ�того управлÑ�ÑŽÑ‚Ñ�Ñ� незавиÑ�имо длÑ� каждого развёртываниÑ�. Эта модель котораÑ� маÑ�штабируетÑ�Ñ� поÑ�тепенно вмеÑ�те Ñ� еÑ�теÑ�твенным поÑ�влением большего количеÑ�тва развёртываний приложениÑ� за времÑ� его жизни. content/th/admin-processes.md0000644000175000056700000000755015232661434015023 0ustar0000000000000000## XII. Admin processes ### รันงานของผู้ดูà¹�ลระบบ/à¸�ารจัดà¸�ารให้เป็นà¸�ระบวนà¸�ารà¹�บบครั้งเดียว [process formation](./concurrency) เป็นอาร์เรย์ของ process ที่ใช้ในà¸�ารทำธุรà¸�ิจปรà¸�ติของ app (เช่นà¸�ารจัดà¸�าร reqeust ของเว็บ) ขณะทำงาน developer มัà¸�ต้องà¸�ารทำà¸�ารดูà¹�ลหรือบำรุงรัà¸�ษาเพียงคนเดียวสำหรับ app เช่น: * รันà¸�ารย้ายข้อมูลà¸�านข้อมูล (เช่น `manage.py migrate` ใน Django, `rake db:migrate` ใน Rails) * รันคอนโซล (เป็นที่รู้จัà¸�ในชื่อ [REPL](http://en.wikipedia.org/wiki/Read-eval-print_loop) shell) เพื่อรัน code à¹�บบทันทีทันใดหรือตรวจสอบโมเดลของ app ที่ติดต่อà¸�ับà¸�านข้อมูลทันที ภาษาคอมพิวเตอร์ส่วนใหà¸�่มี REPL โดยà¸�ารรัน interpreter โดยไม่ต้องมี argument ใดๆ (เช่น `python` หรือ `perl`) หรือในบางà¸�รณีมีà¸�ารà¹�ยà¸�คำสั่ง (เช่น `irb` สำหรับ Ruby, `rails console` สำหรับ Rails) * รันสคริปต์ครั้งเดียวที่ commit ไปที่ repo ของ app (เช่น `php scripts/fix_bad_records.php`) à¸�ารดูà¹�ล process ครั้งเดียวควรจะทำงานในสภาพà¹�วดล้อมที่เหมือนà¸�ับทั้วไป [long-running processes](./processes) สำหรับ app ซึ่งทำงานà¸�ับ [release](./build-release-run) ใช้ [codebase](./codebase) and [à¸�ารตั้งค่า](./config) เดียวà¸�ันà¸�ับ process ใดๆที่ทำงานà¸�ับ release ผู้ดูà¹�ลระบบของ code จำเป็นต้อง ship ด้วย application code เพื่อหลีà¸�เลี่ยงปัà¸�หาà¸�ารประสาน (synchronization) เทคนิค [dependency isolation](./dependencies) เดียวà¸�ันควรจะใช้à¸�ับชนิดของ process ทั้งหมด ตัวอย่างเช่น ถ้า Ruby web process ใช้คำสั่ง `bundle exec thin start` ดังนั้นà¸�ารย้ายข้อมูลà¸�านข้อมูลควรจะใช้คำสั่ง `bundle exec rake db:migrate` ในทำนองเดียวà¸�ันà¸�ับ Python program ใช้ Virtualenv ควรจะใช้คำสั่ง `bin/python` สำหรับทำงานทั้ง Tornado webserver à¹�ละà¸�ารดูà¹�ลระบบ process `manage.py` ใดๆ Twelve-factor ชื่นชอบภาษาคอมพิวเตอร์ที่มี PERL shell out of the box เป็นอย่างมาà¸� à¹�ละซึ่งทำให้ง่ายสำหรับรันสคริปต์ครั้งเดียว ใน local deploy, developer ใช้à¸�ระบวนà¸�ารดูà¹�ลระบบครั้งเดียวโดยใช้คำสั่ง shell ข้างใน app ใน production deploy, developer สามารถใช้ ssh หรือคำสั่งรีโมทอื่นที่à¸�ลไà¸�à¸�ำทำงานโดยสภาพà¹�วดล้อมà¸�ารดำเนินงานของ deploy เพื่อรัน process content/th/backing-services.md0000644000175000056700000001220515232661434015137 0ustar0000000000000000## IV. Backing services ### จัดà¸�ารà¸�ับบริà¸�ารสนับสนุน (backing service) ให้เป็นทรัพยาà¸�รที่à¹�นบมา *บริà¸�ารสนับสนุน (backing service)** เป็นบริà¸�ารใดๆ ที่ app ใช้บริà¸�ารผ่านระบบเครือข่ายซึ่งเป็นส่วนหนึ่งของà¸�ารดำเนินงาน (operation) ตัวอย่างเช่น รวมที่เà¸�็บข้อมูล (datastore) (เช่น [MySQL](http://dev.mysql.com/) หรือ [CouchDB](http://couchdb.apache.org/)), ระบบ messaging/queueing (เช่น [RabbitMQ](http://www.rabbitmq.com/) หรือ [Beanstalkd](https://beanstalkd.github.io)), บริà¸�าร SMTP สำหรับส่งอีเมล์ออà¸� (เช่น [Postfix](http://www.postfix.org/)), à¹�ละระบบ caching (เช่น [Memcached](http://memcached.org/)) บริà¸�ารสนับสนุนอย่างเช่นà¸�านข้อมูลเป็นà¸�ารจัดà¸�ารà¹�บบดั่งเดิมด้วยผู้จัà¸�ารระบบเดียวà¸�ันà¸�ับ app ที่ทำงานหลังจาà¸� deploy เพิ่มเติมจาà¸�บริà¸�ารจัดà¸�ารภายใน, app อาจจะมีบริà¸�ารที่ให้บริà¸�ารà¹�ละจัดà¸�ารโดยบริà¸�ารภายนอà¸� (third parties) ตัวอย่างเช่น รวมบริà¸�าร SMTP (เช่น [Postmark](http://postmarkapp.com/)), บริà¸�าร metrics-gathering (เช่น [New Relic](http://newrelic.com/) หรือ [Loggly](http://www.loggly.com/)), บริà¸�าร binary asset (เช่น [Amazon S3](http://aws.amazon.com/s3/)), à¹�ละà¹�ม้à¹�ต่บริà¸�าร API-accessible consumer (เช่น [Twitter](http://dev.twitter.com/), [Google Maps](https://developers.google.com/maps/), หรือ [Last.fm](http://www.last.fm/api)). **code สำหรับ twelve-factor app จะไม่มีความà¹�ตà¸�ต่างระหว่างบริà¸�ารภายใน (local) à¹�ละบริà¸�ารภายนอà¸� (third party)** ใน app ทั้งสองบริà¸�ารจะเป็นทรัพยาà¸�รที่à¹�นบอยู่ใน app à¹�ละเข้าถึงได้ด้วย URL หรือที่เà¸�็บ locator/credentials อื่นๆใน [à¸�ารตั้งค่า](./config). [deploy](./codebase) ของ twelve-factor app ควรจะส่ามารถสลับสับเปลี่ยนà¸�านข้อมูล MySQL ใน app ด้วยบริà¸�ารภายนอà¸� (เช่น [Amazon RDS](http://aws.amazon.com/rds/)) โดยไม่ต้องเปลี่ยน code ของ app เหมือนà¸�ับ SMTP ภายใน app ควรสามารถสลับสับเปลี่ยนด้วยบริà¸�าร SMTP ภายนอà¸�ได้ (เช่น Postmark) โดยไม่ต้องเปลี่ยน code ในทั้งสองà¸�รณีทรัพยาà¸�รจัดà¸�ารด้วยà¸�ารตั้งค่าที่จะต้องเปลี่ยนเท่านั้น สิ่งที่à¹�ตà¸�ต่างà¸�ันของบริà¸�ารสนับสนุนคือ *ทรัพยาà¸�ร* ตัวอย่างเช่น à¸�านข้อมูล MySQL เป็นทรัพยาà¸�ร; à¸�านข้อมูล MySQL 2 à¸�านข้อมูล (ใช้สำหรับ sharding ใน application layer) มีคุณสมบัติเป็นทรัพยาà¸�รที่à¹�ตà¸�ต่างà¸�ัน 2 à¹�หล่ง, twelve-factor app จัà¸�à¸�ารà¸�านข้อมูลเป็น *ทรัพยาà¸�รà¹�นบ (attached resouces)* ซึ่งเป็นà¸�ารระบุ loose coupling à¸�ับ deploy ที่ทรัพยาà¸�รเหล่านี้à¹�นบใช้งาน A production deploy attached to four backing services. ทรัพยาà¸�รสามารถà¹�นบà¹�ละถอดออà¸�จาà¸� deploy ได้ ตัวอย่างเช่น ถ้าà¸�านข้อมูลของ app ทำงานผิดปรà¸�ติเนื่องจาà¸�ปัà¸�หาของฮาร์ดà¹�วร์ ผู้ดูà¹�ลระบบของ app อาจจะ spin up เซิร์ฟเวอร์à¸�านข้อมูลขึ้นมาใหม่จาà¸�à¸�ารข้อมูลที่สำรองล่าสุด à¸�านข้อมูลของ production ปัจจุบันควรจะถอดออà¸�à¹�ละà¹�นบด้วยà¸�านข้อมูลใหม่ -- ทั้งหมดนี้ไม่มีà¸�ารเปลี่ยนà¹�ปลง code locales/ko.yml0000644000175000056700000000032415232661434012066 0ustar0000000000000000ko: # Name of language listed in locales menu language: 한국어 (ko) # A text to make known that the article is a translation not an original. # Empty for English, original. translation: (한국어) content/en/build-release-run.md0000644000175000056700000000467615232661434015243 0ustar0000000000000000## V. Build, release, run ### Strictly separate build and run stages A [codebase](./codebase) is transformed into a (non-development) deploy through three stages: * The *build stage* is a transform which converts a code repo into an executable bundle known as a *build*. Using a version of the code at a commit specified by the deployment process, the build stage fetches vendors [dependencies](./dependencies) and compiles binaries and assets. * The *release stage* takes the build produced by the build stage and combines it with the deploy's current [config](./config). The resulting *release* contains both the build and the config and is ready for immediate execution in the execution environment. * The *run stage* (also known as "runtime") runs the app in the execution environment, by launching some set of the app's [processes](./processes) against a selected release. ![Code becomes a build, which is combined with config to create a release.](/images/release.png) **The twelve-factor app uses strict separation between the build, release, and run stages.** For example, it is impossible to make changes to the code at runtime, since there is no way to propagate those changes back to the build stage. Deployment tools typically offer release management tools, most notably the ability to roll back to a previous release. For example, the [Capistrano](https://github.com/capistrano/capistrano/wiki) deployment tool stores releases in a subdirectory named `releases`, where the current release is a symlink to the current release directory. Its `rollback` command makes it easy to quickly roll back to a previous release. Every release should always have a unique release ID, such as a timestamp of the release (such as `2011-04-06-20:32:17`) or an incrementing number (such as `v100`). Releases are an append-only ledger and a release cannot be mutated once it is created. Any change must create a new release. Builds are initiated by the app's developers whenever new code is deployed. Runtime execution, by contrast, can happen automatically in cases such as a server reboot, or a crashed process being restarted by the process manager. Therefore, the run stage should be kept to as few moving parts as possible, since problems that prevent an app from running can cause it to break in the middle of the night when no developers are on hand. The build stage can be more complex, since errors are always in the foreground for a developer who is driving the deploy. content/en/disposability.md0000644000175000056700000000525615232661434014576 0ustar0000000000000000## IX. Disposability ### Maximize robustness with fast startup and graceful shutdown **The twelve-factor app's [processes](./processes) are *disposable*, meaning they can be started or stopped at a moment's notice.** This facilitates fast elastic scaling, rapid deployment of [code](./codebase) or [config](./config) changes, and robustness of production deploys. Processes should strive to **minimize startup time**. Ideally, a process takes a few seconds from the time the launch command is executed until the process is up and ready to receive requests or jobs. Short startup time provides more agility for the [release](./build-release-run) process and scaling up; and it aids robustness, because the process manager can more easily move processes to new physical machines when warranted. Processes **shut down gracefully when they receive a [SIGTERM](http://en.wikipedia.org/wiki/SIGTERM)** signal from the process manager. For a web process, graceful shutdown is achieved by ceasing to listen on the service port (thereby refusing any new requests), allowing any current requests to finish, and then exiting. Implicit in this model is that HTTP requests are short (no more than a few seconds), or in the case of long polling, the client should seamlessly attempt to reconnect when the connection is lost. For a worker process, graceful shutdown is achieved by returning the current job to the work queue. For example, on [RabbitMQ](http://www.rabbitmq.com/) the worker can send a [`NACK`](http://www.rabbitmq.com/amqp-0-9-1-quickref.html#basic.nack); on [Beanstalkd](https://beanstalkd.github.io), the job is returned to the queue automatically whenever a worker disconnects. Lock-based systems such as [Delayed Job](https://github.com/collectiveidea/delayed_job#readme) need to be sure to release their lock on the job record. Implicit in this model is that all jobs are [reentrant](http://en.wikipedia.org/wiki/Reentrant_%28subroutine%29), which typically is achieved by wrapping the results in a transaction, or making the operation [idempotent](http://en.wikipedia.org/wiki/Idempotence). Processes should also be **robust against sudden death**, in the case of a failure in the underlying hardware. While this is a much less common occurrence than a graceful shutdown with `SIGTERM`, it can still happen. A recommended approach is use of a robust queueing backend, such as Beanstalkd, that returns jobs to the queue when clients disconnect or time out. Either way, a twelve-factor app is architected to handle unexpected, non-graceful terminations. [Crash-only design](http://lwn.net/Articles/191059/) takes this concept to its [logical conclusion](http://docs.couchdb.org/en/latest/intro/overview.html). content/pl/processes.md0000644000175000056700000000533515232661434013734 0ustar0000000000000000## VI. Procesy ### Uruchamiaj aplikacjÄ™ jako jeden lub wiÄ™cej bezstanowych procesów Aplikacja jest uruchamiana w Å›rodowisku wykonawczym w postaci jednego lub kilku *procesów*. W najprostszym przypadku kod aplikacji jest samodzielnym skryptem, Å›rodowiskiem wykonawczym jest laptop developera z wsparciem dla jÄ™zyka programowania, a proces jest uruchamiany za pomocÄ… linii komend (na przykÅ‚ad `python my_script.py`). Innym razem wdrożenie produkcyjne mocno rozwiniÄ™tej aplikacji może wymagać wiele [różnych rodzajów procesów](./concurrency). **Wg zasad 12factor, procesy sÄ… bezstanowe i [nie-współdzielÄ…ce](http://en.wikipedia.org/wiki/Shared_nothing_architecture).** Jakiekolwiek dane wymagajÄ…ce zapisu musza być zmagazynowane w "trwaÅ‚ej" [usÅ‚udze wspierajÄ…cej](./backing-services), najczęściej bÄ™dÄ…cÄ… bazÄ… danych. PrzestrzeÅ„ adresowa lub system plików procesu mogÄ… być używane jako tymczasowy cache dla pojedynczych operacji. PrzykÅ‚adem jest pobieranie dużych plików, dziaÅ‚anie na nich, a nastÄ™pnie zapisywanie wyników operacji w bazie danych. Aplikacja dwunastu aspektów nigdy nie zakÅ‚ada, że jakiÅ› fragment informacji zapisany w pamiÄ™ci lub dysku bÄ™dzie dostÄ™pny w przyszÅ‚oÅ›ci podczas jakiegokolwiek zapytania -- wraz z wieloma aktywnymi procesami roÅ›nie szansa, że przyszÅ‚e zapytanie zostanie obsÅ‚użone przez zupeÅ‚nie inny proces. Nawet w przypadku pojedynczego procesu, restart (spowodowany przez deployment kodu, zmianÄ™ konfiguracji lub relokacja procesu do innej fizycznej lokalizacji wykonana przez Å›rodowisko wykonawcze) zazwyczaj usunie wszystkie dane z lokalnego stanu aplikacji (system plików, pamięć podrÄ™czna). NarzÄ™dzie do pakowania plików, z których korzysta aplikacja (takie jak [Jammit](http://documentcloud.github.com/jammit/) lub [django-compressor](http://django-compressor.readthedocs.org/)) używajÄ… systemu plików jako cache dla skompilowanych zasobów. Wg 12factor taka kompilacja powinna mieć miejsce podczas [etapu budowy aplikacji](./build-release-run), jak to siÄ™ dzieje np. w [Rails asset pipeline](http://guides.rubyonrails.org/asset_pipeline.html). Niektóre systemy sieciowe polegajÄ… na tzw. ["sticky sessions"](http://en.wikipedia.org/wiki/Load_balancing_%28computing%29#Persistence) -- oznacza to, że sesja użytkownika jest zapisywana tymczasowo w pamiÄ™ci procesu aplikacji, zakÅ‚adajÄ…c, że kolejne zapytania dotyczÄ…ce użytkownika bÄ™dÄ… kierowane do tego samego procesu. "Sticky sessions" sÄ… zÅ‚amaniem zasad aplikacji 12factor i nigdy nie powinny być używane jako źródÅ‚o informacji. Dane sesji nadajÄ… siÄ™ bardziej do zapisu w magazynie oferujÄ…cym wygasanie danych w czasie, jak np. [Memcached](http://memcached.org/) czy [Redis](http://redis.io/). content/pt_br/logs.md0000644000175000056700000000464715232661434013372 0ustar0000000000000000## XI. Logs ### Trate logs como fluxos de eventos *Logs* provém visibilidade no comportamento de um app em execução. Em ambientes de servidor eles são comumente escritos num arquivo em disco (um "logfile"); mas este é apenas um formato de saída. Logs são o [fluxo](https://adam.herokuapp.com/past/2011/4/1/logs_are_streams_not_files/) de eventos agregados e ordenados por tempo coletados dos fluxos de saída de todos os processos em execução e serviços de apoio. Logs na sua forma crua são tipicamente um formato de texto com um evento por linha (apesar que pilhas de exceção podem ocupar várias linhas). Logs não tem começos ou términos fixos, mas fluem continuamente enquanto o app estiver operante. **Um app doze-fatores nunca se preocupa com o roteamento ou armazenagem do seu fluxo de saída.** Ele não deve tentar escrever ou gerir arquivos de logs. No lugar, cada processo em execução escreve seu próprio fluxo de evento, sem buffer, para o `stdout`. Durante o desenvolvimento local, o desenvolvedor verá este fluxo no plano de frente do seu terminal para observar o comportamento do app. Em deploys de homologação ou produção, cada fluxo dos processos serão capturados pelo ambiente de execução, colados com todos os demais fluxos do app, e direcionados para um ou mais destinos finais para visualização e arquivamento de longo prazo. Estes destinos de arquivamento não são visíveis ou configuráveis pelo app, e ao invés disso, são completamente geridos pelo ambiente de execução. Roteadores de log open source (tais como [Logplex](https://github.com/heroku/logplex) e [Fluentd](https://github.com/fluent/fluentd)) estão disponíveis para este propósito. O fluxo de evento para um app pode ser direcionado para um arquivo, ou visto em tempo real via `tail` num terminal. Mais significativamente, o fluxo pode ser enviado para um sistema indexador e analisador tal como [Splunk](http://www.splunk.com/), ou um sistema mais genérico de _data warehousing_ como o [Hadoop/Hive](http://hive.apache.org/). Estes sistemas permitem grande poder e flexibilidade para observar o comportamento de um app durante o tempo, incluindo: * Encontrando eventos específicos no passado. * Gráficos em larga escala de tendências (como requisições por minuto) * Notificações ativas de acordo com as heurísticas determinadas pelo usuário (como uma notificação quando a quantidade de erros por minuto exceder um certo limite). content/th/config.md0000644000175000056700000001450015232661434013165 0ustar0000000000000000## III. Config ### จัดเà¸�็บà¸�ารตั้งค่า (config) ไว้ในสิ่งà¹�วดล้อมของระบบ *à¸�ารตั้งค่า (config)* ของ app เป็นสิ่งที่เปลี่ยนà¹�ปลงระหว่าง [deploys](./codebase) (staging, production, developer environments เป็นต้น) รวมทั้ง: * ทรัพยาà¸�รที่จัดà¸�ารà¸�ับà¸�านข้อมูล, Memcached, à¹�ละ [backing services](./backing-services) อื่นๆ * ข้อมูลประจำตัว (credentials) สำหรับบริà¸�ารภายนอà¸� อย่างเช่น Amazon S3 หรือ Twitter * ค่า Pre-deploy อย่างเช่น canonical hostname สำหรับ deploy บางครั้ง app เà¸�็บà¸�ารตั้งค่าเป็นค่าคงทีใน code เป็นà¸�ารละเมิด twelve-factor ซึ่งต้องà¸�ารให้ **à¹�ยà¸�à¸�ารตั้งค่าออà¸�จาà¸� code อย่างสมบูรณ์** à¸�ารตั้งค่าสามารถเปลี่ยนà¹�ปลงได้ตาม deploy ที่ไม่อยู่ใน code à¸�ารทดสอบ litmus เพื่อดูว่า app มีà¸�ารเอาà¸�ารตั้งค่าทั้งหมดออà¸�จาà¸� code ถูà¸�ต้องหรือไม่ ทำให้ codebase สามารถ open source ได้ตลอดเวลา โดยไม่à¸�ระทบà¸�ับ credential ใดๆ โปรดทราบว่าà¸�ารนิยามนี้ของ "à¸�ารตั้งค่า" **ไม่**รวมà¸�ารตั้งค่า internal application อย่างเช่น `config/routes.rb` ใน Rails หรือ [code modules เชื่อมต่อà¸�ันอย่างไร](http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html) ใน [Spring](http://spring.io/) ชนิดของà¸�ารตั้งค่าเหล่านี้ไม่เปลี่ยนà¹�ปลงตาม deploy à¹�ละควรจะอยู่ใน code อีà¸�วิธีà¸�ารหนึ่งของà¸�ารตั้งค่าคือà¸�ารใช้ไฟล์à¸�ารตั้งค่าซึ่งไม่รวมไว้ใน revision control อย่างเช่น `config/database.yml` ใน Reals ซึ่งเป็นà¸�ารพัฒนาสำหรับà¸�ารใช้ค่าคงที่ซึ่งถูà¸�รวมเข้าไปใน code repo à¹�ต่à¸�็ยังมีจุดอ่อนคือมันจะเà¸�ิดความผิดพลาดจาà¸�à¸�ารที่รวมค่าà¸�ารตั้งค่านี้เข้าไปใน repo จะทำให้มีà¹�นวโน้มที่à¸�ารไฟล์à¸�ารตั้งค่าจะà¸�ระจายอยู่ในที่à¹�ตà¸�ต่างà¸�ันà¹�ละà¹�ตà¸�ต่างรูปà¹�บบ ทำให้มันยาà¸�ที่จะดูà¹�ลà¹�ละจัดà¸�ารà¸�ารตั้งค่าทั้งหมดในหนึ่งที่ นอà¸�จาà¸�นี้รูปà¹�บบเหล่านี้ยังขึ้นอยู่à¸�ับภาษาคอมพิวเตอร์ หรือ เฉพาะ framework. **Twelve-factor app เà¸�็บà¸�ารตั้งค่าไว้ใน *environment variable*** (เรียà¸�สั้นๆ ว่า *env vars* หรือ *env*) Env vars จะทำให้ง่ายที่จะเปลี่ยนà¹�ปลงระหว่าง deloy โดยปราศจาà¸�à¸�ารเปลี่ยนà¹�ปลงของ code ใดๆ ไม่เหมือนà¸�ับไฟล์à¸�ารตั้งค่าที่จะมีโอà¸�ารผิดพลาดที่จะรวมเข้าไปใน code repo ได้ à¹�ละไม่เหมือนà¸�ับไฟล์à¸�ารตั้งค่าที่à¸�ำหนดเองหรือà¸�ลไà¸�à¸�ารตั้งค่าอื่นๆ อย่างเช่น Java System Properties ที่เป็ของภาษาคอมพิวเตอร์ à¹�ละมาตรà¸�านของระบบปà¸�ิบัติà¸�าร (OS-agnostic) อีà¸�à¹�ง่มุมของà¸�ารจัดà¸�ารà¸�ารตั้งค่าคือà¸�ารจัดà¸�ลุ่ม (Grouping) บางครั้งà¸�ารตั้งค่า app à¹�บบà¸�ลุ่ม (batch) ในชื่อของà¸�ลุ่ม (เรียà¸�ว่า "environment") หลังจาà¸� deploy เฉพาะ อย่างเช่น `development`, `test` à¹�ละ `production` environment ใน Rails วิธีà¸�ารนี้ทำให้à¸�ารขยายไม่เรียบร้อยทำให้มี deploy ของ app ถูà¸�สร้างมาà¸�ขึ้น, จำเป็นต้องตั้งชื่อของ environment ใหม่ อย่างเช่น `staging` หรือ `qa` เป็นตั้น เมื่อ project โตขึ้น developer อาจจะเพิ่ม environments เฉพาะของตัวเองขึ้นมา เช่น `joes-staging` ผมà¸�็คือมีà¸�ารตั้งค่าจำนวนมาà¸�เà¸�ินไปซึ่งทำให้จัดà¸�าร deploy ของ app ทำได้ยาà¸�มาà¸� ใน twelve-factor app, env vars เป็นราà¸�à¸�านà¸�ารควบควมของà¹�ต่ล่ะ evn vars อื่นๆ ไม่เคยมีà¸�ารจัดà¸�ลุ่มเป็น "environments" à¹�ต่จะจัดà¸�ารà¹�บบอิสระสำหรับà¹�ต่ล่ะ deploy à¹�ทน นี่เป็นรูปà¹�บบที่à¸�ารขยายทำได้อย่างราบรื่นของ app เป็นà¸�ารขยายโดยธรรมชาติของ deploy มาà¸�ขึ้นตลอดอายุà¸�ารทำงานของ app. Procfile0000644000175000056700000000006115232661434010774 0ustar0000000000000000web: bundle exec ruby web.rb -p $PORT -o 0.0.0.0 content/es/processes.md0000644000175000056700000000567515232661434013737 0ustar0000000000000000## VI. Procesos ### Ejecutar la aplicación como uno o más procesos sin estado La aplicación se ejecuta como uno o más *procesos* en el entorno de ejecución. El caso más sencillo que podemos plantear es que el código es un script independiente, el entorno de ejecución es un portátil de un desarrollador, el compilador o interprete correspondiente del lenguaje está instalado, y el proceso se lanza mediante la linea de mandatos (por ejemplo, `python my_script.py`). Por otro lado podemos encontrar el caso de un despliegue en producción de una aplicación compleja que puede usar muchos [tipos de procesos, instanciados como cero o más procesos en ejecución](./concurrency). **Los procesos "twelve-factor" no tienen estado y son "[share-nothing](http://en.wikipedia.org/wiki/Shared_nothing_architecture)".** Cualquier información que necesite persistencia se debe almacenar en un ['backing service'](./backing-services) con estado, habitualmente una base de datos. Tanto el espacio de memoria de un proceso como el sistema de ficheros se pueden usar como si fueran una cache temporal para hacer transacciones. Por ejemplo, descargar un fichero de gran tamaño, realizar alguna operación sobre él, y almacenar sus resultados en una base de datos. Las aplicaciones "twelve-factor" nunca dan por hecho que cualquier cosa cacheada en memoria o en el disco vaya a estar disponible al realizar una petición al ejecutar diferentes procesos. Con muchos procesos de cada tipo ejecutándose al mismo tiempo, existe una gran probabilidad de que otro proceso distinto sirva una petición en el futuro. Incluso cuando solo está corriendo un solo proceso, un reinicio (provocado por el despliegue de código, un cambio de configuración o un cambio de contexto del proceso) normalmente elimina todo el estado local (e.g. memoria y sistema de ficheros). Los compresores de estáticos (como [Jammit](http://documentcloud.github.com/jammit/) o [django-compressor](http://django-compressor.readthedocs.org/)) usan el sistema de ficheros como una cache para ficheros compilados. En las aplicaciones "twelve-factor" es preferible realizar esta compilación durante la [fase de construcción](./build-release-run), como con el [asset pipeline de Rails](http://guides.rubyonrails.org/asset_pipeline.html), en lugar de hacerlo en tiempo de ejecución. Algunos sistemas webs dependen de ["sticky sessions"](http://en.wikipedia.org/wiki/Load_balancing_%28computing%29#Persistence), esto quiere decir que cachean la información de la sesión de usuario en la memoria del proceso de la aplicación y esperan peticiones futuras del mismo visitante para redirigirle al mismo proceso. Las "sticky sessions" son una violación de "twelve-factor" y no deberían usarse nunca ni depender de ellas. La información del estado de la sesión es un candidato perfecto para almacenes de información que ofrecen mecanismos de tiempo de expiración, como [Memcached](http://memcached.org/) o [Redis](http://redis.io/). content/uk/background.md0000644000175000056700000000433615232661434014051 0ustar0000000000000000Передумови ========== Люди, що працювали над цим документом, брали безпоÑ�ередню учаÑ�ть в розробці Ñ– розгортанні Ñ�отень заÑ�тоÑ�унків, Ñ– мимоволі Ñ�тали Ñ�відками розвитку, екÑ�плуатації та маÑ�штабуваннÑ� Ñ�отень тиÑ�Ñ�ч заÑ�тоÑ�унків під чаÑ� нашої роботи над платформою [Heroku](http://www.heroku.com/). Ð’ цьому документі узагальнюєтьÑ�Ñ� веÑ�ÑŒ наш доÑ�від викориÑ�таннÑ� Ñ– Ñ�поÑ�тереженнÑ� за найрізноманітнішими SaaS-заÑ�тоÑ�унками "в Ð´Ð¸ÐºÑ–й Ð¿Ñ€Ð¸Ñ€Ð¾Ð´Ñ–". Документ об'єднує ідеальні практики розробки заÑ�тоÑ�унків, оÑ�облива увага приділÑ�єтьÑ�Ñ� динаміці органічного роÑ�ту заÑ�тоÑ�унку з плином чаÑ�у, взаємодії між розробниками, Ñ�кі працюють над кодом заÑ�тоÑ�унку, та [уникненню витрат при ерозії програмного забезпеченнÑ�](http://blog.heroku.com/archives/2011/6/28/the_new_heroku_4_erosion_resistance_explicit_contracts/). Ð�аша мета полÑ�гає в тому, щоб підвищити обізнаніÑ�ть про деÑ�кі Ñ�иÑ�темні проблеми, Ñ�кі ми бачили в практиці розробки Ñ�учаÑ�них заÑ�тоÑ�унків, а також в тому, щоб Ñ�формулювати Ñ�пільні загальні понÑ�ттÑ� длÑ� обговореннÑ� цих проблем, Ñ– запропонувати набір загальних концептуальних рішень цих проблем з Ñ�упутньою термінологією. Формат навіÑ�ний книгами Мартіна Фаулера (Martin Fowler) *[Patterns of Enterprise Application Architecture](https://books.google.com/books/about/Patterns_of_enterprise_application_archi.html?id=FyWZt5DdvFkC)* та *[Refactoring](https://books.google.com/books/about/Refactoring.html?id=1MsETFPD3I0C)*.content/de/admin-processes.md0000644000175000056700000000457215232661434015001 0ustar0000000000000000## XII. Admin-Prozesse ### Admin/Management-Aufgaben als einmalige Vorgänge behandeln Die [Prozess-Formation](./concurrency) ist das Bündel von Prozessen zur Erledigung der üblichen Aufgaben einer App (wie die Abarbeitung von Web-Requests) während sie läuft. Daneben möchten Entwickler oft einmalige Administrativ- oder Wartungsaufgaben an der App erledigen, wie zum Beispiel: * Datenbank-Migrationen starten (z.B. `manage.py migrate` in Django, `rake db:migrate` in Rails) * Eine Konsole starten (auch bekannt als [REPL](http://en.wikipedia.org/wiki/Read-eval-print_loop) Shell) um beliebigen Code zu starten oder die Modelle der App gegen die Live-Datenbank zu prüfen. Die meisten Sprachen stellen eine REPL zur Verfügung, wenn man den Interpreter ohne Argumente startet (z.B. `python` oder `perl`) oder in manchen Fällen mit einem anderen Kommando (z.B. `irb` für Ruby, `rails console` für Rails). * Einmalig auszuführende Skripte aus dem Repo der App starten (z.B. `php scripts/fix_bad_records.php`). Einmalige Administrationsprozesse sollten in einer Umgebung laufen, die identisch ist zu der Umgebung der üblichen [langlaufenden Prozesse](./processes). Sie laufen gegen einen [Release](./build-release-run) und benutzen dieselbe [Codebase](./codebase) und [Konfiguration](./config) wie jeder Prozess, der gegen einen Release läuft. Administrationscode wird mit dem App-Code ausgeliefert um Synchronisationsprobleme zu vermeiden. Dieselben Techniken zur [Isolation von Abhängigkeiten](./dependencies) sollten für alle Prozessarten verwendet werden. Wenn zum Beispiel ein Ruby-Web-Prozess das Kommando `bundle exec thin start` verwendet, dann sollte eine Datenbankmigration `bundle exec rake db:migrate` verwenden. Wenn ein Python-Programm Virtualenv nutzt, sollte es sein mitgeliefertes `bin/python` sowohl zum Start des Tornado Webservers als auch für alle `manage.py` Admin-Prozesse verwenden. Die Zwölf Faktoren bevorzugen Sprachen, die eine REPL Shell direkt mitbringen. Das erleichtert das Starten von einmal auszuführenden Skripten. In einem lokalen Deploy rufen Entwickler einmal auszuführende Admin-Prozesse direkt über ein Shell-Kommando im Checkout-Verzeichnis der App auf. In einem Produktions-Deploy können Entwickler ssh oder andere Kommando-Fernsteuerungs-Mechanismen benutzen, die die Ausführungsumgebung dieses Deploys für das Starten eines solchen Prozesses bereitstellt. content/ru/build-release-run.md0000644000175000056700000001105015232661434015247 0ustar0000000000000000## V. Сборка, релиз, выполнение ### Строго разделÑ�йте Ñ�тадии Ñ�борки и выполнениÑ� [КодоваÑ� база](./codebase) транÑ�формируетÑ�Ñ� в развёртывание (не учитываÑ� развёртывание длÑ� разработки) за три Ñ�тапа: * *Этап Ñ�борки* -- Ñ�то транÑ�формациÑ�, котораÑ� преобразует репозиторий кода в иÑ�полнÑ�емый пакет, называемый *Ñ�борка*. ИÑ�пользуÑ� верÑ�ию кода по указанному процеÑ�Ñ�ом развёртываниÑ� коммиту, Ñ�тап Ñ�борки загружает Ñ�торонние [завиÑ�имоÑ�ти](./dependencies) и компилирует двоичные файлы и реÑ�урÑ�Ñ‹ (assets). * *Этап релиза* принимает Ñ�борку, полученную на Ñ�тапе Ñ�борки, и объединÑ�ет её Ñ� текущей [конфигурацией](./config) развёртываниÑ�. Полученный *релиз* Ñ�одержит Ñ�борку и конфигурацию и готов к немедленному запуÑ�ку в Ñ�реде выполнениÑ�. * *Этап выполнениÑ�* (также извеÑ�тный как "runtime") запуÑ�кает приложение в Ñ�реде выполнениÑ� путём запуÑ�ка некоторого набора [процеÑ�Ñ�ов](./processes) приложениÑ� из определённого релиза. ![Код Ñ�тановитÑ�Ñ� Ñ�боркой, котораÑ� объединÑ�етÑ�Ñ� Ñ� конфигурацией длÑ� Ñ�озданиÑ� релиза.](/images/release.png) **Приложение двенадцати факторов иÑ�пользует Ñ�трогое разделение между Ñ�тапами Ñ�борки, релиза и выполнениÑ�.** Ð�апример, невозможно внеÑ�ти изменениÑ� в код во времÑ� выполнениÑ�, так как нет Ñ�поÑ�оба раÑ�проÑ�транить Ñ�ти изменениÑ� обратно на Ñ�тап Ñ�борки. ИнÑ�трументы развёртываниÑ�, как правило, предÑ�тавлÑ�ÑŽÑ‚ Ñ�обой инÑ�трументы управлениÑ� релизами, и что немаловажно, дают возможноÑ�ть отката к предыдущему релизу. Ð�апример инÑ�трумент развёртываниÑ� [Capistrano](https://github.com/capistrano/capistrano/wiki) Ñ�охранÑ�ет релизы в подкаталогах каталога Ñ� именем `releases`, где текущий релиз Ñ�влÑ�етÑ�Ñ� Ñ�имволичеÑ�кой Ñ�Ñ�ылкой на каталог текущего релиза. Команда Capistrano `rollback` даёт возможноÑ�ть быÑ�тро откатитÑ�Ñ� к предыдущему релизу. Каждый релиз должен иметь уникальный идентификатор, такой как отметка времени релиза (например `2015-04-06-15:42:17`) или увеличивающееÑ�Ñ� чиÑ�ло (например `v100`). Релизы могут только добавлÑ�тьÑ�Ñ� и каждый релиз невозможно изменить поÑ�ле его Ñ�озданиÑ�. Любые изменениÑ� обÑ�заны Ñ�оздавать новый релиз. Сборка инициируетÑ�Ñ� разработчиком приложениÑ� вÑ�Ñ�кий раз, когда разворачиваетÑ�Ñ� новый код. ЗапуÑ�к Ñ�тапа выполнениÑ�, напротив, может проиÑ�ходить автоматичеÑ�ки в таких Ñ�лучаÑ�Ñ…, как перезагрузка Ñ�ервера, или перезапуÑ�к упавшего процеÑ�Ñ�а менеджером процеÑ�Ñ�ов. Таким образом, Ñ�тап выполнениÑ� должен быть как можно более техничеÑ�ки проÑ�тым, так как проблемы, которые могут помешать приложению запуÑ�титьÑ�Ñ� могут возникнуть в Ñ�ередине ночи, когда нет доÑ�тупных разработчиков. Этап Ñ�борки может быть более Ñ�ложным, так как возможные ошибки вÑ�егда видимы разработчику, который запуÑ�тил развёртывание. content/tr/processes.md0000644000175000056700000000517215232661434013745 0ustar0000000000000000## VI. Süreç ### Uygulamayı bir veya daha fazla bağımsız süreç olarak çalıştırma Uygulama bir veya birden fazla *süreç* olarak çalıştırma ortamında çalıştırılır. En basit senaryoda, kod bağımsız bir betiktir, çalışma ortamı, dil çalışma zamanı yüklenmiÅŸ, geliÅŸtiricilerin yerel laptopudur ve süreç komut satırı aracılığıyla baÅŸlatılır (ÖrneÄŸin, `python my_script.py`). DiÄŸeri spekturumun sonunda, çok yönlü uygulamanın ürün dağıtımı birden fazla [süreç tipi kullanabilir, sıfır veya daha fazla çalışan süreci somutlaÅŸtırabilir](./concurrency). **On iki faktör süreçleri durumsuz ve [paylaşımsızdır](http://en.wikipedia.org/wiki/Shared_nothing_architecture).** Devamlılığa ihtiyaç duyan herhangi bir veri kapsamlı [destek servisinde](./backing-services) saklanmalıdır, genel olarak bir veri tabananında. Süreçlerin bellek uzayı ve dosya sistemi, kısa tek iÅŸlemli önbellek olarak kullanılabilir. ÖrneÄŸin, büyük bir dosya indirirken, çalıştırırken, iÅŸlem sonuçlarını veri tabanında saklarken. On iki faktör uygulaması, bellek veya önbellekteki depolanmış hiçbir ÅŸeyin gelecekteki istek veya iÅŸlerde eriÅŸilebilir olacağını hiçbir zaman varsaymaz, çalışan her bir tipin bir çok süreciyle birlikte, gelecek isteÄŸin farklı süreç tarafından sunulma ÅŸansı yüksektir. Sadece bir süreç çalıştırıldığında bile, tekrar baÅŸlatma (kod dağıtımı, yapılandırma deÄŸiÅŸikliÄŸi veya çalışma ortamı sürecin farklı fiziksel adrese tekrar yerleÅŸtirimi tarafından tetiklenir) genellikle bütün yerel (bellek ve dosya sistemi v.b gibi) durumları temizler. Varlık paketleyicileri ( [Jammit](http://documentcloud.github.com/jammit/) veya [django-compressor](http://django-compressor.readthedocs.org/) gibi), derlenmiÅŸ varlıklar için önbellek olarak dosya sistemi kullanılır. On iki faktör uygulaması [derleme aÅŸaması](./build-release-run) boyunca, [Rails asset pipeline](http://guides.rubyonrails.org/asset_pipeline.html) gibi, bu derlemeyi yapmayı tercih eder, çalışma zamanında yapmaktansa. Bazı web sistemleri ["sticky sessions"](http://en.wikipedia.org/wiki/Load_balancing_%28computing%29#Persistence) dayanır, bu, kullanıcı oturum verisini uygulama sürecinin belleÄŸinde saklar ve aynı sürece yönlendirilecek olan gelecek istekleri aynı ziyaretçiden bekler. Sticky sessions on iki faktörü ihlal eder ve asla kullanılmamalıdır veya buna güvenmemelidir. Oturum durum verisi [Memcached](http://memcached.org/) veya [Redis](http://redis.io/) gibi bitiÅŸ süresi öneren veri deposu için iyi bir adaydır. locales/es.yml0000644000175000056700000000037015232661434012065 0ustar0000000000000000es: # Name of language listed in locales menu language: Español (es) # A text to make known that the article is a translation not an original. # Empty for English, original. translation: (Traducción de la versión original en Inglés) content/uk/build-release-run.md0000644000175000056700000001040315232661434015241 0ustar0000000000000000## V. Збірка, реліз, виконаннÑ� ### Суворо відокремлюйте етапи збірки та виконаннÑ� [Кодова база](./codebase) перетворюєтьÑ�Ñ� в розгортаннÑ� (крім розгортаннÑ� длÑ� розробки) у три етапи: * *Етап збірки* — це транÑ�формаціÑ�, Ñ�ка перетворює код в репозиторії у пакунок, що може бути запущений, Ñ– Ñ�кий називаєтьÑ�Ñ� *збірка*. ВикориÑ�товуючи верÑ�Ñ–ÑŽ коду за вказаним у процеÑ�Ñ– розгортаннÑ� коммітом, етап збірки завантажує [залежноÑ�ті](./dependencies) та компілює бінарні файли Ñ– реÑ�урÑ�и (assets). * *Етап релізу* приймає збірку, отриману на етапі збірки, Ñ– об'єднує Ñ—Ñ— з поточною [конфігурацією](./config) розгортаннÑ�. Отриманий *реліз* міÑ�тить збірку Ñ– конфігурацію Ñ– готовий до негайного запуÑ�ку в Ñ�ередовищі виконаннÑ�. * *Етап виконаннÑ�* (також відомий Ñ�к "runtime") запуÑ�кає заÑ�тоÑ�унок у Ñ�ередовищі виконаннÑ�, увімкнувши деÑ�кий набір [процеÑ�ів](./processes) заÑ�тоÑ�унку з певного релізу. ![Код Ñ�тає збіркою, Ñ�ка поєднуєтьÑ�Ñ� з конфігурацією длÑ� Ñ�твореннÑ� релізу.](/images/release.png) **ЗаÑ�тоÑ�унок дванадцÑ�ти факторів дотримуєтьÑ�Ñ� Ñ�уворого відокремленнÑ� етапів збірки, релізу Ñ– виконаннÑ�.** Ð�априклад, не можна вноÑ�ити зміни в код під чаÑ� етапу виконаннÑ�, оÑ�кільки немає Ñ�поÑ�обу поширити ці зміни назад на етап збірки. ІнÑ�трументи розгортаннÑ�, Ñ�к правило, надають заÑ�оби керуваннÑ� релізами, Ñ�кі дають можливіÑ�ть відкату до попередньої верÑ�Ñ–Ñ—. Ð�априклад, інÑ�трумент розгортаннÑ� [Capistrano](https://github.com/capistrano/capistrano/wiki) зберігає релізи в підкаталог з назвою `releases`, де поточний реліз Ñ” Ñ�имволічним поÑ�иланнÑ�м на каталог поточного релізу. Команда Capistrano `rollback` дає можливіÑ�ть швидко виконати відкат до попередньої верÑ�Ñ–Ñ—. Кожен реліз повинен завжди мати унікальний ідентифікатор, наприклад, мітку чаÑ�у релізу (наприклад, `2011-04-06-20:32:17`) або номер, що зроÑ�тає (наприклад, `v100`). Релізи можуть тільки додаватиÑ�Ñ�, неможливо змінити реліз піÑ�лÑ� його Ñ�твореннÑ�. Будь-Ñ�кі зміни мають Ñ�творювати новий реліз. Збірка ініцюєтьÑ�Ñ� розробником заÑ�тоÑ�унку щоразу при розгортанні нового коду. ЗапуÑ�к етапу виконаннÑ�, навпаки, може відбуватиÑ�Ñ� автоматично в таких випадках, Ñ�к перезавантаженнÑ� Ñ�ервера або перезапуÑ�к процеÑ�у, шо впав, менеджером процеÑ�ів. Таким чином, етап виконаннÑ� має бути макÑ�имально технічно проÑ�тим, бо проблеми, Ñ�кі заважають заÑ�тоÑ�унку запуÑ�титиÑ�Ñ�, можуть призвеÑ�ти до його зупинки поÑ�еред ночі, коли розробників немає на міÑ�ці. Етап збірки може бути більш Ñ�кладним, бо можливі помилки завжди видимі розробнику, Ñ�кий запуÑ�тив процеÑ� розгортаннÑ�.content/fr/toc.md0000644000175000056700000000247115232661434012505 0ustar0000000000000000Les 12 facteurs ================== ## [I. Base de code](./codebase) ### Une base de code suivie avec un système de contrôle de version, plusieurs déploiements ## [II. Dépendances](./dependencies) ### Déclarez explicitement et isolez les dépendances ## [III. Configuration](./config) ### Stockez la configuration dans l'environnement ## [IV. Services externes](./backing-services) ### Traitez les services externes comme des ressources attachées ## [V. Build, release, run](./build-release-run) ### Séparez strictement les étapes d'assemblage et d'exécution ## [VI. Processus](./processes) ### Exécutez l'application comme un ou plusieurs processus sans état ## [VII. Associations de ports](./port-binding) ### Exportez les services via des associations de ports ## [VIII. Concurrence](./concurrency) ### Grossissez à l'aide du modèle de processus ## [IX. Jetable](./disposability) ### Maximisez la robustesse avec des démarrages rapides et des arrêts gracieux ## [X. Parité dev/prod](./dev-prod-parity) ### Gardez le développement, la validation et la production aussi proches que possible ## [XI. Logs](./logs) ### Traitez les logs comme des flux d'évènements ## [XII. Processus d'administration](./admin-processes) ### Lancez les processus d'administration et de maintenance comme des one-off-processes content/it/config.md0000644000175000056700000000653615232661434013200 0ustar0000000000000000## III. Configurazione ### Memorizza le informazioni di configurazione nell'ambiente La "configurazione" di un'applicazione è tutto quello che può variare da un [deployment](./codebase) all'altro (staging, production, ambienti di sviluppo). Ad esempio: * Valori da usare per connettersi a un database, Memcached, oppure altri [backing service](./backing-services); * Credenziali per servizi esterni, come Amazon S3 o Twitter; * Valori eventualmente definiti per i singoli deployment, come l'hostname; Molto spesso, queste informazioni vengono memorizzate come costanti nel codice: la cosa viola la metodologia twelve-factor, che richiede una **separazione ben definita delle impostazioni di configurazione dal codice**. Le impostazioni possono infatti variare da un deployment all'altro: il codice, invece, no. Il codice dell'applicazione, infatti, potrebbe essere reso open-source in ogni momento: un buon motivo per separare le due cose. Nota che comunque la definizione di "configurazione" **non** include eventuali configurazione interne dell'applicazione, come `config/routes.rb` in Rails, o come [i moduli di codice sono connessi](http://static.springsource.org/spring/docs/2.5.x/reference/beans.html) in [Spring](http://www.springsource.org/). Questo tipo di configurazione non varia da deployment a deployment: come giusto che sia, quindi, rimane nel codice. Un ottimo approccio al "rispetto" di questo principio consiste nell'usare dei file di configurazione non coinvolti dal version control, come per esempio `config/database.yml` in Rails. Stiamo parlando di un miglioramento enorme rispetto all'uso di costanti nel codice, ma c'è da dire la cosa ha il suo lato negativo: basta poco per sbagliarsi e includere nel repo il file di configurazione che, invece, non dovrebbe essere lì. C'è una certa tendenza, infatti, a non avere tutti i file di configurazione necessari nello stesso posto. Inoltre, i vari formati tendono a essere collegati a un certo linguaggio/framework. **L'applicazione che rispetta la metodologia twelve-factor memorizza tutte le impostazioni in *variabili d'ambiente*** (spesso dette *env vars* o *env*). Le variabili d'ambiente sono molto semplici da cambiare di deployment in deployment senza dover toccare il codice direttamente. Inoltre, a differenza dei file di configurazione classici, c'è una probabilità molto bassa di venire inclusi nel repo. Infine, questi file sono indipendenti sia dal linguaggio che dal sistema operativo utilizzato. Un altro aspetto del config management è il raggruppamento. A volte, infatti, alcune applicazioni prevedono la memorizzazione delle impostazioni in gruppi (chiamati spesso "ambienti") dal nome ben preciso: "development", "test" e "production", per esempio. Questo metodo non scala correttamente, se ci pensi: potrebbero essere necessari nuovi ambienti, come "staging" e "qa". Oppure, i vari sviluppatori potrebbero aver bisogno di creare i propri ambienti "speciali", come "joes-staging" e così via. Il risultato? Una quantità di combinazioni ingestibile e disordinata. In una buona twelve-factor app, le variabili di ambiente sono controllate in modo più "granulare", in modo totalmente ortogonale alle altre. Non sono mai raggruppate e classificate sotto "ambienti" specifici, ma vengono gestite in modo totalmente indipendente per ogni deployment. Il prodotto finale ne risente positivamente in termini di scalabilità.content/ja/port-binding.md0000644000175000056700000000541115232661434014274 0ustar0000000000000000## VII. ãƒ�ートãƒ�インディング ### ãƒ�ートãƒ�インディングを通ã�—ã�¦ã‚µãƒ¼ãƒ“スを公開ã�™ã‚‹ Webアプリケーションã�¯Webサーãƒ�ーコンテナã�®å†…部ã�§å®Ÿè¡Œã�•れるã�“ã�¨ã�Œã�‚る。例ã�ˆã�°ã€�PHPアプリケーションã�¯[Apache HTTPD](http://httpd.apache.org/)内部ã�®ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã�¨ã�—ã�¦å®Ÿè¡Œã�•れるã�‹ã‚‚ã�—れã�ªã�„ã�—ã€�Javaアプリケーションã�¯[Tomcat](http://tomcat.apache.org/)ã�®å†…部ã�§å®Ÿè¡Œã�•れるã�‹ã‚‚ã�—れã�ªã�„。 **Twelve-Factor Appã�¯å®Œå…¨ã�«è‡ªå·±å®Œçµ�** ã�—ã€�Webã�«å…¬é–‹ã�•れるサービスを作æˆ�ã�™ã‚‹ã�Ÿã‚�ã�«ã€�コンテナã�Œå®Ÿè¡Œç’°å¢ƒã�«Webサーãƒ�ーランタイムを注入ã�™ã‚‹ã�“ã�¨ã‚’頼りã�«ã�—ã�ªã�„。Webアプリケーションã�¯ **ãƒ�ートã�«ãƒ�インドã�™ã‚‹ã�“ã�¨ã�§HTTPをサービスã�¨ã�—ã�¦å…¬é–‹ã�—ã€�** ã��ã�®ãƒ�ートã�«ãƒªã‚¯ã‚¨ã‚¹ãƒˆã�Œæ�¥ã‚‹ã�®ã‚’å¾…ã�¤ã€‚ ローカルã�®é–‹ç™ºç’°å¢ƒã�§ã�¯ã€�開発者ã�¯ã‚¢ãƒ—リケーションã�«ã‚ˆã�£ã�¦å…¬é–‹ã�•れã�Ÿã‚µãƒ¼ãƒ“スã�«ã‚¢ã‚¯ã‚»ã‚¹ã�™ã‚‹ã�Ÿã‚�ã�«ã€�`http://localhost:5000/`ã�®ã‚ˆã�†ã�ªã‚µãƒ¼ãƒ“スã�®URLã�«ã‚¢ã‚¯ã‚»ã‚¹ã�™ã‚‹ã€‚本番環境ã�§ã�¯ãƒ«ãƒ¼ãƒ†ã‚£ãƒ³ã‚°å±¤ã�Œã€�外å�‘ã��ã�®ãƒ›ã‚¹ãƒˆå��ã�‹ã‚‰ãƒ�ートã�«ãƒ�インドã�•れã�ŸWebプロセスã�¸ã�¨ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’ルーティングã�™ã‚‹ã€‚ ã�“れã�¯ä¸€èˆ¬ã�«ã€�[ä¾�存関係宣言](./dependencies)を使ã�£ã�¦Webサーãƒ�ーライブラリをアプリケーションã�«è¿½åŠ ã�™ã‚‹ã�“ã�¨ã�§å®Ÿè£…ã�•れる。Webサーãƒ�ーライブラリã�®ä¾‹ã�¨ã�—ã�¦ã€�Pythonã�«ã�Šã�‘ã‚‹[Tornado](http://www.tornadoweb.org/)ã€�Rubyã�«ã�Šã�‘ã‚‹[Thin](http://code.macournoyer.com/thin/)ã€�Javaã‚„ã��ã�®ä»–ã�®JVMベースã�®è¨€èªžã�«ã�Šã�‘ã‚‹[Jetty](http://www.eclipse.org/jetty/)ã�ªã�©ã�Œã�‚る。ã�“れã�¯ *ユーザー空間* ã�™ã�ªã‚�ã�¡ã‚¢ãƒ—リケーションã�®ã‚³ãƒ¼ãƒ‰å†…ã�§å®Œçµ�ã�™ã‚‹ã€‚リクエストを処ç�†ã�™ã‚‹ã�Ÿã‚�ã�®å®Ÿè¡Œç’°å¢ƒã�¨ã�®å¥‘ç´„ã�¯ã€�ãƒ�ートをãƒ�インドã�™ã‚‹ã�“ã�¨ã�§ã�‚る。 ãƒ�ートãƒ�インディングã�«ã‚ˆã�£ã�¦å…¬é–‹ã�•れるサービスã�¯HTTPã� ã�‘ã�§ã�¯ã�ªã�„。ã�»ã�¼ã�™ã�¹ã�¦ã�®ã‚µãƒ¼ãƒ�ーソフトウェアã�¯ã€�ãƒ�ートをãƒ�インドã�™ã‚‹ãƒ—ロセスを用ã�„ã�¦å‹•作ã�—ã€�リクエストã�Œæ�¥ã‚‹ã�®ã‚’å¾…ã�¤ã€‚例ã�¨ã�—ã�¦ã€�[ejabberd](http://www.ejabberd.im/)([XMPP](http://xmpp.org/)を話ã�™ï¼‰ã‚„ [Redis](http://redis.io/)([Redisプロトコル](http://redis.io/topics/protocol)を話ã�™ï¼‰ã�ªã�©ã�Œã�‚る。 ã�“ã�“ã�§æ³¨ç›®ã�™ã�¹ã��ã�¯ã€�ãƒ�ートãƒ�インディングã�®æ–¹æ³•ã�«ã‚ˆã�£ã�¦ã€�ã�‚るアプリケーションã�Œä»–ã�®ã‚¢ãƒ—リケーションã�«ã�¨ã�£ã�¦ã�®[ãƒ�ックエンドサービス](./backing-services)ã�«ã�ªã‚Œã‚‹ç‚¹ã�§ã�‚る。ãƒ�ックエンドアプリケーションã�¸ã�®URLã‚’æ��ä¾›ã�—ã€�利用ã�™ã‚‹ã‚¢ãƒ—リケーションã�®[設定](./config)ã�«ãƒªã‚½ãƒ¼ã‚¹ãƒ�ンドルã�¨ã�—ã�¦æ ¼ç´�ã�™ã‚Œã�°ã‚ˆã�„。 content/ko/logs.md0000644000175000056700000000510515232661434012663 0ustar0000000000000000## XI. 로그 ### 로그를 ì�´ë²¤íЏ 스트림으로 취급 *로그*는 실행 중ì�¸ appì�˜ ë�™ìž‘ì�„ 확ì�¸í•  수 있는 수단입니다. 서버 기반 환경ì—�서 로그는 보통 디스í�¬ì—� 파ì�¼(로그 파ì�¼)로 저장ë�©ë‹ˆë‹¤. 하지만, ì�´ê²ƒì�€ 출력 í�¬ë§· 중 하나ì—� 불과합니다. 로그는 모든 실행중ì�¸ 프로세스와 백그ë�¼ìš´ë“œ 서비스ì�˜ 아웃풋 스트림으로부터 수집ë�œ ì�´ë²¤íŠ¸ê°€ 시간 순서로 ì •ë ¬ë�œ [스트림](https://adam.herokuapp.com/past/2011/4/1/logs_are_streams_not_files/)입니다. 가공ë�˜ì§€ 않는 로그는 보통, 하나ì�˜ ì�´ë²¤íŠ¸ê°€ 하나ì�˜ ë�¼ì�¸ìœ¼ë¡œ 기ë¡�ë�œ í…�스트 í�¬ë§·ìž…니다.(예외(exception)ì—� ì�˜í•œ backtrace는 여러 ë�¼ì�¸ì—� 걸ì³� 있ì�„ 수ë�„ 있습니다.) 로그는 ê³ ì •ë�œ 시작과 ë��ì�´ 있는 것ì�´ 아니ë�¼, appì�´ 실행ë�˜ëŠ” ë�™ì•ˆ 계ì†� í��르는 í��름입니다. **Twelve-Factor Appì�€ 아웃풋 스트림ì�˜ 전달ì�´ë‚˜ 저장ì—� 절대 관여하지 않습니다.** appì�€ 로그 파ì�¼ì�„ 작성하거나, 관리하려고 해서는 안ë�©ë‹ˆë‹¤. 대신, ê°� 프로세스는 ì�´ë²¤íЏ 스트림ì�„ 버í�¼ë§� ì—†ì�´ `stdout`ì—� 출력합니다. 로컬 개발환경ì—�서 작업 중ì�¸ 개발ìž�는 appì�˜ ë�™ìž‘ì�„ 관찰하기 ì›�하면 ê°�ìž�ì�˜ 터미ë„�ì—� 출력ë�˜ëŠ” ì�´ 스트림ì�„ ë³¼ 수 있습니다. 스테ì�´ì§•ì�´ë‚˜ production ë°°í�¬ì—�서는 ê°� 프로세스ì�˜ 스트림ì�€ 실행 환경ì—� ì�˜í•´ì„œ 수집ë�œ 후, 앱ì�˜ 다른 모든 스트림과 병합ë�˜ì–´ 열람하거나 보관하기 위한 하나 ì�´ìƒ�ì�˜ 최종 목ì �지로 전달ë�©ë‹ˆë‹¤. ì�´ëŸ¬í•œ 목ì �지들ì�€ 앱ì�´ 열람하거나 설정할 수 없지만, 대신 실행 환경ì—� ì�˜í•´ì„œ 완벽하게 관리ë�©ë‹ˆë‹¤. ì�´ë¥¼ 위해 오픈 소스 로그 ë�¼ìš°í„°ë¥¼ 사용할 수 있습니다.(예: ([Logplex](https://github.com/heroku/logplex), [Fluentd](https://github.com/fluent/fluentd))) 앱ì�˜ ì�´ë²¤íЏ 스트림ì�€ 파ì�¼ë¡œ 보내지거나 터미ë„�ì—�서 실시간으로 보여질 수 있습니다. 가장 중요한 ì �ì�€ 스트림ì�€ [Splunk](http://www.splunk.com/)ê°™ì�€ 로그 ë¶„ì„� 시스템과 [Hadoop/Hive](http://hive.apache.org/)ê°™ì�€ 범용 ë�°ì�´í„° 보관소ì—� 보내질 수 있다는 ì �입니다. ì�´ëŸ¬í•œ 시스템ì�€ 장기간ì—� 걸ì³� 앱ì�˜ ë�™ìž‘ì�„ 조사할 수 있는 강력함과 유연성ì�„ 가지게 ë�©ë‹ˆë‹¤. * 과거ì�˜ 특정 ì�´ë²¤íŠ¸ë¥¼ 찾기 * 트렌드ì—� 대한 거대한 규모ì�˜ 그래프 (예: 분당 요청 수) * 유저가 ì •ì�˜í•œ 휴리스틱ì—� 따른 알림 (예: 분당 오류 수가 임계 ê°’ì�„ 넘는 경우 알림ì�„ ë°œìƒ�시킴) content/pt_br/background.md0000644000175000056700000000273615232661434014542 0ustar0000000000000000Experiência =========== Os contribuidores deste documento estão diretamente envolvidos no desenvolvimento e implantação de centenas de aplicações, e indiretamente testemunhando o desenvolvimento, operação e escalada de centenas de milhares de aplicações através de seu trabalho na plataforma [Heroku](http://www.heroku.com/). Este documento sintetiza toda nossa experiência e observação em uma variedade de aplicações que operam como software-como-serviço. Isto é a triangulação de práticas ideais ao desenvolvimento de software, com uma atenção particular a respeito das dinâmicas de crescimento orgânico de uma aplicação ao longo do tempo, a dinâmica de colaboração entre desenvolvedores trabalhando em uma base de código, e evitando os [custos de erosão de software](http://blog.heroku.com/archives/2011/6/28/the_new_heroku_4_erosion_resistance_explicit_contracts/) Nossa motivação é aumentar a consciência de alguns problemas sistêmicos que temos visto no desenvolvimento de aplicações modernas, prover um vocabulário comum para discussão destes, e oferecer um amplo conjunto de soluções conceituais para esses problemas com a terminologia que os acompanha. O formato é inspirado nos livros de Martin Fowler *[Padrões de Arquitetura de Aplicações Enterprise](http://books.google.com/books/about/Patterns_of_enterprise_application_archi.html?id=FyWZt5DdvFkC)* e *[Refatorando](http://books.google.com/books/about/Refactoring.html?id=1MsETFPD3I0C)*. content/pt_br/dev-prod-parity.md0000644000175000056700000001141615232661434015444 0ustar0000000000000000## X. Paridade entre desenvolvimento e produção ### Mantenha o desenvolvimento, homologação e produção o mais similares possível Historicamente, houveram lacunas substanciais entre desenvolvimento (um desenvolvedor editando código num [deploy](./codebase) local do app) e produção (um deploy acessado pelos usuários finais). Essas lacunas se manifestam em três áreas: * **A lacuna do tempo:** Um desenvolvedor pode trabalhar em código que demora dias, semanas ou até meses para ir para produção. * **A lacuna de pessoal:** Desenvolvedores escrevem código, engenheiros de operação fazem o deploy dele. * **A lacuna de ferramentas:** Desenvolvedores podem estar usando um conjunto como Nginx, SQLite, e OS X, enquanto o app em produção usa Apache, MySQL, e Linux. **O App doze-fatores é projetado para [implantação contínua](http://avc.com/2011/02/continuous-deployment/) deixando a lacuna entre desenvolvimento e produção pequena.** Olhando às três lacunas descritas acima: * Diminua a lacuna de tempo: um desenvolvedor pode escrever código e ter o deploy feito em horas ou até mesmo minutos depois. * Diminua a lacuna de pessoal: desenvolvedores que escrevem código estão proximamente envolvidos em realizar o deploy e acompanhar seu comportamento em produção. * Diminua a lacuna de ferramentas: mantenha desenvolvimento e produção o mais similares possível. Resumindo o acima em uma tabela:
App tradicional App doze-fatores
Tempo entre deploys Semanas Horas
Autores de código vs deployers Pessoas diferentes Mesmas pessoas
Ambientes de desenvolvimento vs produção Divergente O mais similar possível
[Serviços de apoio](./backing-services), como o banco de dados do app, sistema de filas, ou cache, são uma área onde paridade entre desenvolvimento e produção é importante. Muitas linguagens oferecem diferentes bibliotecas que simplificam o acesso ao serviço de apoio, incluindo *adaptadores* para os diferentes tipos de serviços. Alguns exemplos na tabela abaixo.
Tipo Linguagem Biblioteca Adaptadores
Banco de dados Ruby/Rails ActiveRecord MySQL, PostgreSQL, SQLite
Fila Python/Django Celery RabbitMQ, Beanstalkd, Redis
Cache Ruby/Rails ActiveSupport::Cache Memory, sistema de arquivos, Memcached
Desenvolvedores as vezes vem uma grande vantagem em usar um serviço de apoio leve em seus ambientes, enquanto um serviço de apoio mais sério e robusto seria usado em produção. Por exemplo, usando SQLite localmente e PostgreSQL em produção; ou memória de processo local para caching em desenvolvimento e Memcached em produção. **O desenvolvedor doze-fatores resiste a tentação de usar diferentes serviços de apoio entre desenvolvimento e produção**, mesmo quando adaptadores teoricamente abstraem as diferenças dos serviços de apoio. Diferenças entre serviços de apoio significam que pequenas incompatibilidades aparecerão, fazendo com que código que funcionava e passava em desenvolvimento ou homologação, falhe em produção. Tais tipos de erros criam fricção que desincentivam deploy contínuo. O custo dessa fricção e do subsequente decaimento de deploy contínuo é extremamente alto quando considerado que vai acumular no tempo de vida da aplicação. Serviços locais leves são menos tentadores que já foram um dia. Serviços de apoio modernos tais como Memcached, PostgreSQL, e RabbitMQ não são difíceis de instalar e rodam graças a sistemas modernos de empacotamento tais como [Homebrew](http://mxcl.github.com/homebrew/) e [apt-get](https://help.ubuntu.com/community/AptGet/Howto). Alternativamente, ferramentas de provisionamento declarativo tais como [Chef](http://www.opscode.com/chef/) e [Puppet](http://docs.puppetlabs.com/) combinado com ambientes virtuais leves como [Vagrant](http://vagrantup.com/) permitem desenvolvedores rodar ambientes locais que são bem próximos dos ambientes de produção. O custo de instalar e usar esses sistemas é baixo comparado ao benefício de ter a paridade entre desenvolvimento, produção e deploy contínuo. Adaptadores para diferentes serviços de apoio ainda são úteis, pois eles fazem a portabilidade para novos serviços de apoio relativamente tranquilas. Mas todos os deploys do app (ambientes de desenvolvimento, homologação, produção) devem usar o mesmo tipo e versão de cada serviço de apoio. locales/pt_br.yml0000644000175000056700000000034715232661434012570 0ustar0000000000000000pt_br: # Name of language listed in locales menu language: Brazilian Portuguese (pt_br) # A text to make known that the article is a translation not an original. # Empty for English, original. translation: "(traduzido)" locales/zh_cn.yml0000644000175000056700000000034415232661434012560 0ustar0000000000000000zh_cn: # Name of language listed in locales menu language: 简体中文 (zh_cn) # A text to make known that the article is a translation not an original. # Empty for English, original. translation: (简体中文) content/it/disposability.md0000644000175000056700000000575115232661434014610 0ustar0000000000000000## IX. Rilasciabilità ### Massimizzare la robustezza con avvii veloci e shutdown graduali **I [processi](./processes) di un'applicazione twelve-factor sono *rilasciabili*, cioè possono essere avviati o fermati senza problemi al momento del bisogno.** Questa caratteristica ovviamente facilita le procedure di scaling, deploy rapido della [codebase](./codebase) o cambi dei file di [configurazione](./config). I processi dovrebbero inoltre ambire a **minimizzare i tempi di avvio**. Idealmente, un processo impiega pochi secondi dal tempo di lancio al momento in cui tutto è pronto per ricevere nuove richieste. Dei tempi brevi di avvio inoltre forniscono una maggiore agilità in fase di [release](./build-release-run); il tutto a vantaggio della robustezza dell'applicazione, dato che il process manager può così muoversi agevolmente verso un'altra macchina fisica, se necessario. I processi dovrebbero inoltre **terminare in modo tutt'altro che brusco, quindi graduale, in caso di ricezione di un segnale [SIGTERM](http://en.wikipedia.org/wiki/SIGTERM)** dal process manager. Per un'applicazione web, la giusta terminazione di un processo viene ottenuta quando si cessa innanzitutto di ascoltare sulla porta dedicata del servizio (evitando quindi di ricevere altre richieste), permettendo poi di terminare le richieste esistenti e infine di concludere la fase di terminazione in modo definitivo. Per un processo worker, invece, la fase di terminazione più adatta vede il ritorno del job corrente alla coda. Per esempio, su [RabbitMQ](http://www.rabbitmq.com/) il worker può inviare un [`NACK`](http://www.rabbitmq.com/amqp-0-9-1-quickref.html#basic.nack); su [Beanstalkd](https://beanstalkd.github.io), il job viene automaticamente rimandato in coda nel caso in cui il worker si disconnette. I sistemi basati su lock come [Delayed =3.2' gem 'sinatra', '>=2.2.0' gem 'thin', '>=1.8.1' gem 'maruku' gem 'i18n' gem 'rexml' gem 'rack-ssl-enforcer' gem "rackup", "~> 2.2" gem "puma", "~> 6.6" gem "ostruct", "~> 0.6.2" content/en/logs.md0000644000175000056700000000430215232661434012652 0ustar0000000000000000## XI. Logs ### Treat logs as event streams *Logs* provide visibility into the behavior of a running app. In server-based environments they are commonly written to a file on disk (a "logfile"); but this is only an output format. Logs are the [stream](https://adam.herokuapp.com/past/2011/4/1/logs_are_streams_not_files/) of aggregated, time-ordered events collected from the output streams of all running processes and backing services. Logs in their raw form are typically a text format with one event per line (though backtraces from exceptions may span multiple lines). Logs have no fixed beginning or end, but flow continuously as long as the app is operating. **A twelve-factor app never concerns itself with routing or storage of its output stream.** It should not attempt to write to or manage logfiles. Instead, each running process writes its event stream, unbuffered, to `stdout`. During local development, the developer will view this stream in the foreground of their terminal to observe the app's behavior. In staging or production deploys, each process' stream will be captured by the execution environment, collated together with all other streams from the app, and routed to one or more final destinations for viewing and long-term archival. These archival destinations are not visible to or configurable by the app, and instead are completely managed by the execution environment. Open-source log routers (such as [Logplex](https://github.com/heroku/logplex) and [Fluentd](https://github.com/fluent/fluentd)) are available for this purpose. The event stream for an app can be routed to a file, or watched via realtime tail in a terminal. Most significantly, the stream can be sent to a log indexing and analysis system such as [Splunk](http://www.splunk.com/), or a general-purpose data warehousing system such as [Hadoop/Hive](http://hive.apache.org/). These systems allow for great power and flexibility for introspecting an app's behavior over time, including: * Finding specific events in the past. * Large-scale graphing of trends (such as requests per minute). * Active alerting according to user-defined heuristics (such as an alert when the quantity of errors per minute exceeds a certain threshold). content/en/port-binding.md0000644000175000056700000000357115232661434014311 0ustar0000000000000000## VII. Port binding ### Export services via port binding Web apps are sometimes executed inside a webserver container. For example, PHP apps might run as a module inside [Apache HTTPD](http://httpd.apache.org/), or Java apps might run inside [Tomcat](http://tomcat.apache.org/). **The twelve-factor app is completely self-contained** and does not rely on runtime injection of a webserver into the execution environment to create a web-facing service. The web app **exports HTTP as a service by binding to a port**, and listening to requests coming in on that port. In a local development environment, the developer visits a service URL like `http://localhost:5000/` to access the service exported by their app. In deployment, a routing layer handles routing requests from a public-facing hostname to the port-bound web processes. This is typically implemented by using [dependency declaration](./dependencies) to add a webserver library to the app, such as [Tornado](http://www.tornadoweb.org/) for Python, [Thin](http://code.macournoyer.com/thin/) for Ruby, or [Jetty](http://www.eclipse.org/jetty/) for Java and other JVM-based languages. This happens entirely in *user space*, that is, within the app's code. The contract with the execution environment is binding to a port to serve requests. HTTP is not the only service that can be exported by port binding. Nearly any kind of server software can be run via a process binding to a port and awaiting incoming requests. Examples include [ejabberd](http://www.ejabberd.im/) (speaking [XMPP](http://xmpp.org/)), and [Redis](http://redis.io/) (speaking the [Redis protocol](http://redis.io/topics/protocol)). Note also that the port-binding approach means that one app can become the [backing service](./backing-services) for another app, by providing the URL to the backing app as a resource handle in the [config](./config) for the consuming app. content/fr/concurrency.md0000644000175000056700000000634215232661434014253 0ustar0000000000000000## VIII. Concurrence ### Grossissez à l'aide du modèle de processus Tout programme informatique, lorsqu'il s'exécute, est représenté par un ou plusieurs processus. Les applications web ont adopté différentes approches d'exécution de processus. Par exemple, les processus PHP s'exécutent comme des processus fils d'Apache, démarrés à la demande lorsque c'est requis par le volume de requêtes. Les processus Java ont adopté l'approche inverse, avec une machine virtuelle qui fournit un super-processus massif qui réserve un gros bloc de ressources système (processeur et mémoire) au démarrage, et la concurrence est gérée en interne à l'aide de threads. Dans les deux cas, les processus qui tournent sont à peine visibles aux développeurs de l'application. ![La scalabilité est exprimée par des processus qui s'exécutent, la diversité de la charge de travail est exprimée par les types de processus](/images/process-types.png) **Dans une application 12 facteurs, les processus sont des élèves modèles**. Les processus dans une application 12 facteurs s'inspirent fortement du [modèle de processus unix pour faire fonctionner les daemon (en)](https://adam.herokuapp.com/past/2011/5/9/applying_the_unix_process_model_to_web_apps/). En utilisant ce modèle, les développeurs peuvent structurer l'application pour gérer différents types de charge en assignant chaque type de travail à un *type de processus*. Par exemple, les requêtes HTTP peuvent être gérées par un processus web, et les tâches d'arrière-plan ayant une longue durée d'exécution peuvent être des processus dits "worker". Chaque processus peut malgré tout et individuellement, gérer son propre multiplexage interne, avec des threads à l'intérieur de la machine virtuelle d'exécution, ou à l'aide du modèle d'évènements asynchrones que l'on retrouve dans des outils comme [EventMachine](https://github.com/eventmachine/eventmachine), [Twisted](http://twistedmatrix.com/trac/), ou [Node.js](http://nodejs.org/). Mais une machine virtuelle a individuellement une taille limitée (grandissement vertical), donc l'application doit également pouvoir déclencher plusieurs processus qui tournent sur plusieurs machines physiques. Le modèle de processus prend de l'envergure dès qu'il est question de grossir. La [nature sans partage, avec une partition horizontale des processus des applications 12 facteurs](./processes) signifie qu'ajouter plus de concurrence est une opération simple et fiable. La liste des types de processus et du nombre de processus de chaque type est appelée *formation de processus*. Les processus des applications 12 facteurs ne devraient [jamais être des daemons (en)](http://dustin.github.com/2010/02/28/running-processes.html) ou écrire des fichiers PID. À la place, utilisez le gestionnaire de processus du système d'exploitation (tel que [systemd](https://www.freedesktop.org/wiki/Software/systemd/), un gestionnaire de processus distribué sur une plateforme cloud, ou un outil comme [Foreman (en)](http://blog.daviddollar.org/2011/05/06/introducing-foreman.html) durant le développement) pour gérer les [flux de sortie](./logs), répondre à un processus qui plante, et gérer les redémarrages et les arrêts initiés par les utilisateurs. content/tr/config.md0000644000175000056700000000710515232661434013202 0ustar0000000000000000## III. Yapılandırma ### Ortamda yapılandırma depolama Bir uygulamanın *yapılandırması* muhtemelen [dağıtımlar](./codebase) arasındaki değişikliktir(kademelendirme, ürün, geliştirici ortamları vb.). Bunları içerir: * Veri tabanını ele alan kaynaklar, önbellek ve diğer [destek servisleri](./backing-services) * Amazon S3 ve Twitter gibi dış servisler için kimlik bilgileri * Dağıtımlar için standart sunucu ismi gibi her dağıtım için değerler Uygulamalar bazen yapılandırmayı koddaki sabitler gibi saklar. Bu on iki faktörün, **yapılandırmayı koddan mutlak ayırmayı** gerektiren bir ihlalidir. Yapılandırma dağıtımlar arasında önemli derecede değişime uğrar, kod uğramaz. Bir uygulamanın tüm yapılandırmaları koddan doğru bir biçimde çıkarılıp çıkarılmadığına dair bir litot testi, herhangi bir kimlik bilgilerinden ödün vermeksizin kod tabanının her an açık kaynak yapıp yapamayacağına karar verir. Bu *yapılandırma* tanımlamasının, [Spring](http://spring.io/)'de [kod modullerinin bağlantısında](http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html) olduğu gibi ve Rails'de `config/routes.rb` gibi dahili uygulama yapılandırmasını **içermediğini** unutmayın. Bu tip yapılandırma dağıtımlar arasında değişiklik göstermez ve bu kod içinde en iyi şekilde gerçekleştirilmiştir. Yapılandırmaya diğer bir yaklaşım Rails'deki `config/database.yml` gibi gözden geçirme kontrolünde kontrol edilmemiş yapılandırma dosyalarının kullanımıdır. Bu kod deposundaki kontrol edilmiş sabitlerin kullanımındaki büyük bir gelişmedir, fakat hala zayıflıkları vardır: Depoda, yapılandırma dosyalarının kontrolünde hata kolay yapılabilir; Yapılandırma dosyalarının farklı yerlerde ve farklı formatlarda dağılmış olması için bir eğilim vardır, bu durum bütün yapılandırmayı bir yerde görmeyi ve yönetmeyi zorlaştırır. Bu formatların özel dil veya çatı olma eğilimi vardır. **On iki faktör uygulamalarında yapılandırma *ortam değişkenlerinde* kaydedilir**(sıklıkla *env vars* veya *env* olarak kısaltılır). Ortam değişkenleri herhangi bir kod değişikliği olmadan, dağıtımlar arasında kolay değişebilir; Yapılandırma dosyalarının aksine, kod deposunda yanlışlıkla kontrol edilme şansı az; ve özel yapılandırma dosyalarının veya Java sistem özellikleri gibi yapılandırma mekanizmalarının aksine, onlar dil ve işletim sisteminden etkilenmez. Yapılandırma yönetiminin diğer bir açısı da gruplandırmadır. Bazen uygulamalar, Rails'deki `geliştirme`, `test` ve `üretim` ortamları gibi belirli dağıtımlardan sonra adlandırılmış, adlandrılmış guruplar içinde yapılandırılır(genellikle "environments" olarak adlandırılır). Bu method temiz bir ölçüm yapmaz: uygulamanın daha fazla dağıtımı oluştuğu sürece, yeni ortam isimleri gereklidir, `staging` veya `qa` gibi. Projeler ilerde geliştikçe, geliştiriciler `joes-staging` kendi özel ortam değişkenlerini ekleyebilir, dağıtım yönetimini çok hassas yapan yapılandırmanın birleşimsel infilakıyla sonuçlanır. On iki faktör uygulamasında ortam değişkenleri parçacıklı kontrol edilirler, her biri diğer ortam değişkenlerine karşı suffix/prefix olarak gelmez ayrı tanımlanır. Asla "environments" olarak beraber gruplandırılamaz, fakat onun yerine her bir dağıtım için bağımsız yönetilir. Bu, uygulamayı yaşam süresi boyunca daha fazla dağıtıma genişletmeyi sorunsuzca büyüten bir modeldir. content/tr/intro.md0000644000175000056700000000167515232661434013076 0ustar0000000000000000Giriş ========== Modern çağda yazılımlar yaygın olarak servis olarak sunulur;*web uygulamaları* ya da *yazılım hizmetleri*. On iki faktörlü uygulama, aşağıdaki gibi bir yazılım hizmeti oluşturmak için bir yöntemdir: * Projeye katılan yeni geliştiriciler için zaman ve maliyeti en aza indirmek için ayar otomasyonu için **bildirim** biçimleri kullanılır; * Çalışma ortamları arasında maksimum taşınabilirlik sunan temel işletim sistemi ile **şifresiz sözleşmesi** vardır * Sunucu ve sistem yönetimine olan ihtiyacı ortadan kaldıran modern **bulut platformlarına kurulum** için uygundur; * İşlem, mimari veya geliştirme uygulamalarında önemli değişiklikler olmaksızın **ölçek büyültülebilir**. On iki faktör uygulaması herhangi bir programlama dili ile yazılmış uygulamalara uygulanabilir ve destek servislerinin herhangi bir kombinasyonu kullanılabilir (Veritabanı, kuyruk, önbellek vb.). content/it/build-release-run.md0000644000175000056700000000520315232661434015240 0ustar0000000000000000## V. Build, release, esecuzione ### Separare in modo netto lo stadio di build dall'esecuzione Una [codebase](./codebase) viene "trasformata" in deployment attraverso tre fasi: * la fase di *build*, che converte il codice del repo in una build "eseguibile". Usando una certa versione del codice, a una specifica commit, nella fase di build vengono compilati i binari con gli asset appropriati includendo anche le eventuali dipendenze; * la fase di *release* prende la build prodotta nella fase precedente e la combina con l'attuale insieme di impostazioni di configurazione del deployment specifico. La *release* risultante contiene sia la build che le impostazioni; * la fase di *esecuzione* (conosciuta anche come "runtime") vede l'applicazione in esecuzione nell'ambiente di destinazione, attraverso l'avvio di processi della release scelta; ![Il codice diventa build, che combinata con le impostazioni diventa release.](/images/release.png) **Un'app twelve-factor definisce una separazione netta tra build, release ed esecuzione.** Per esempio, è impossibile effettuare dei cambiamenti del codice a runtime, dato che non c'è modo di propagare queste modifiche all'"indietro", verso la fase di build. I tool di deployment offrono tipicamente dei tool di gestione delle release, in particolare alcuni dedicati a un rollback verso una release precedente. Per esempio, [Capistrano](https://github.com/capistrano/capistrano/wiki) memorizza le varie release in una sotto-directory chiamata `releases`, in cui la release attuale non è che un symlink verso la directory della release attuale. Il comando di rollback permette di tornare indietro a una certa release velocemente. Ogni release dovrebbe inoltre possedere un ID univoco di rilascio, come per esempio un timestamp (es. `2011-04-06-20:32:17`) o un numero incrementale (es. `v100`). In un certo senso, la creazione di una release è una procedura "a senso unico" e una certa release non può essere modificata dopo la sua creazione. Qualsiasi cambiamento deve quindi prevedere una nuova release. Una fase di build è sempre avviata da uno sviluppatore, non appena il codice viene modificato. Al contrario, l'esecuzione può essere anche gestita in modo automatico (si pensi al riavvio del server oppure a un crash con successivo riavvio del processo). A ogni modo, una volta in esecuzione, la regola aurea è di evitare il più possibile (se non del tutto) modifiche che potrebbero rompere qualche equilibrio. Magari nel bel mezzo della notte, quando non c'è nessuno disponibile. La fase di build può essere sicuramente più "faticosa", comunque, visto che possono verificarsi degli errori da risolvere prima di proseguire. content/ru/who.md0000644000175000056700000000047615232661434012537 0ustar0000000000000000Кому �ледует читать �тот документ? ============================== Разработчикам, которые �оздают SaaS-приложени�. Ops инженерам, выполн�ющим развёртывание и управление такими приложени�ми. content/pl/concurrency.md0000644000175000056700000000573515232661434014264 0ustar0000000000000000## VIII. Współbieżność ### Skaluj przez odpowiednio dobrane procesy Każdy program komputerowy od momentu uruchomienia jest reprezentowany przez jeden lub więcej procesów. Aplikacje internetowe mogą być uruchamiane w różnorodny sposób. Dla przykładu - procesy PHP uruchamiane są na żądanie (w zależności od potrzeby obsługi odpowiednio dużej liczby zapytań) jako podrzędne procesy Apache'a. W Javie procesy obsługiwane są zupełnie inaczej, z JVM zapewniającym jeden nadrzędny proces, który rezerwuje zasoby systemu (CPU oraz pamięć) na starcie oraz współbieżnością zarządzaną wewnętrznie i opartą na wątkach. Dla developerów aplikacji różnica jednak nie będzie szczególnie odczuwalna. ![Skala wyrażana jest przez działające procesy, natomiast różnorodność obciążenia wyrażana jest w typach procesów](/images/process-types.png) **W aplikacji 12factor, procesy są typem pierwszoklasowym** Zachowanie tych procesów jest mocno wzorowane na [modelu procesów unixowych dla usług działających w wewnątrz systemu operacyjnego](https://adam.herokuapp.com/past/2011/5/9/applying_the_unix_process_model_to_web_apps/). Używając tego modelu programista może zaprojektować aplikację by radziła sobie z różnorodnym obciążeniem przez przypisywanie każdej czynności do *typu procesu*. Przykłady to m.in obsługa procesów sieciowych przez HTTP oraz długotrwałe działanie zadań w tle opierających się na procesach roboczych. Mimo tego procesy wciąż mogą się zwielokrotnić przez wątki w środowisku maszyny wirtualnej lub w asynchronicznym modelu wydarzeń, którego implementację możemy znaleźć wśród narzędzi takich jak [EventMachine](https://github.com/eventmachine/eventmachine), [Twisted](http://twistedmatrix.com/trac/), albo [Node.js](http://nodejs.org/). Należy pamiętać, że pojedyncza maszyna wirtualna może z czasem wymagać coraz więcej zasobów (skala pionowa), dlatego aplikacja musi być również w stanie pracować w oparciu o wiele procesów działających na wielu fizycznych maszynach. Największa zaleta modelu procesów objawia się w momencie skalowania. [Niezależność oraz dzielenie się na podprocesy](./processes) umożliwia proste i bezproblemowe dodawanie wiekszej liczby równolegle działajacych procesów. Tablica typów procesów i liczba procesów nazywana jest ich *formacją*. Procesy aplikacji 12factor [nigdy nie powinny być uruchamiane w tle](http://dustin.github.com/2010/02/28/running-processes.html) i nie mogą zapisywać plików PID. Zamiast tego opierają się na narzędziach systemu operacyjnego: do zarządzania procesami (np. [systemd](https://www.freedesktop.org/wiki/Software/systemd/), do zarządzania rozproszonymi procesami w chmurze, lub [Foreman](http://blog.daviddollar.org/2011/05/06/introducing-foreman.html) w developmencie) do zarządzania [stumieniami wyjściowymi](./logs), do obsługi zatrzymanych procesów, restartu i zakończenia działań zainicjowanych przez użytkownika. content/tr/background.md0000644000175000056700000000304215232661434014050 0ustar0000000000000000Arkaplan ========== Bu belgeye katkıda bulunan kişiler, yüzlerce uygulamanın geliştirilmesi ve dağıtılmasında doğrudan yer almış, ve dolaylı olarak Heroku platformundaki üzerinde çalıştığımız yüz binlerce uygulamanın geliştirilmesi, çalıştırılması ve ölçeklendirilmesine tanık olmuştur. Bu belge, çok çeşitli yazılım servislerinin, yabancı ortamdaki deneyim ve gözlemlerini birleştirir. Bu uygulama geliştirimindeki uygun, ideal uygulamalarda bir üçgenleştirme vardır; uygulamanın zamanla olan doğal gelişmesinin, büyümesinin temel etmenlerine dikkat etmek, uygulamanın kod tabanında çalışan yazılımcıların arasındaki işbirliğinin önemli noktaları ve yazılım erozyonunun getirdiği ücretten kaçmak. Bizim motivasyonumuz, modern uygulama geliştirmesinde gördüğümüz bazı sistemik problemlerin farkındalığını arttırmak, terimlerle birlikte geniş kavramsal çözüm setleri sağlamak ve bu problemleri tartışmak için ortak bir kelime sunmakdır. Martin Fowler'ın kitabları *Patterns of Enterprise Application Architecture* ve *Refactoring'den* ilham alınmıştır. content/zh_cn/port-binding.md0000644000175000056700000000327015232661434015004 0ustar0000000000000000## VII. 端�绑定 ### 通过端�绑定(*Port binding*)��供�务 互�网应用有时会�行于�务器的容器之中。例如 PHP �常作为 [Apache HTTPD](http://httpd.apache.org/) 的一个模���行,正如 Java �行于 [Tomcat](http://tomcat.apache.org/) 。 **12-Factor 应用完全自我加载** 而��赖于任何网络�务器就�以创建一个��网络的�务。互�网应用 **通过端�绑定��供�务** ,并监���至该端�的请求。 本地环境中,开�人员通过类似`http://localhost:5000/`的地��访问�务。在线上环境中,请求统一��至公共域�而�路由至绑定了端�的网络进程。 通常的实现�路是,将网络�务器类库通过 [�赖声明](./dependencies) 载入应用。例如,Python 的 [Tornado](http://www.tornadoweb.org/), Ruby 的[Thin](http://code.macournoyer.com/thin/) , Java 以�其他基于 JVM 语言的 [Jetty](http://www.eclipse.org/jetty/)。完全由 *用户端* ,确切的说应该是应用的代�,�起请求。和�行环境约定好绑定的端���处�这些请求。 HTTP 并�是唯一一个�以由端�绑定�供的�务。其实几乎所有�务器软件都�以通过进程绑定端��等待请求。例如,使用 [XMPP](http://xmpp.org/) 的 [ejabberd](http://www.ejabberd.im/) , 以�使用 [Redis �议](http://redis.io/topics/protocol) 的 [Redis](http://redis.io/) 。 还�指出的是,端�绑定这�方�也�味�一个应用�以�为�外一个应用的 [�端�务](./backing-services) ,调用方将�务方�供的相应 URL 当作资�存入 [�置](./config) 以备将�调用。 .ruby-version0000644000175000056700000000000615232661434011752 0ustar00000000000000003.1.2 content/ja/dev-prod-parity.md0000644000175000056700000001332515232661434014731 0ustar0000000000000000## X. 開発/本番一致 ### 開発�ステージング�本番環境を��る��一致���状態を�� 歴�的��開発環境(開発者�直接変更�るアプリケーション�ローカル[デプロイ](./codebase))�本番環境(エンドユーザー�らアクセス�れるアプリケーション�実行中デプロイ)�間��大��ギャップ����。�れら�ギャップ�3��領域��れる。 * **時間�ギャップ**: 開発者�編集��コード�本番��映�れる��数日�数週間�時��数ヶ月��る����る。 * **人��ギャップ**: 開発者�書��コードを�インフラエンジニア�デプロイ�る。 * **ツール�ギャップ**: 本番デプロイ��Apache�MySQL�Linuxを使����開発者�Nginx�SQLite�OS X�よ��スタックを使�����る。 **Twelve-Factor App���[継続的デプロイ](http://avc.com/2011/02/continuous-deployment/)�や��よ�開発環境�本番環境�ギャップを�����。** 上�述��3��ギャップを見る。 * 時間�ギャップを����る: 開発者�書��コード�数時間後��ら��数分後��デプロイ�れる。 * 人��ギャップを����る: コードを書��開発者���コード�デプロイ�深�関�り���コード�本番環境��挙動をモニタリング�る。 * ツール�ギャップを����る: 開発環境�本番環境を��る��一致���状態を��。 上�述����を表����る。
�統的�アプリケーション Twelve-Factor App
デプロイ�間隔 数週間 数時間
コードを書�人�デプロイ�る人 異�る人 ��人
開発環境�本番環境 異�る ��る��一致
[�ックエンドサービス](./backing-services)(アプリケーション�データベース�キューイングシステム�キャッシュ��)��開発/本番一致�����る領域�一���る。多��言語��異�る種類�サービス�� *アダプター* を����ックエンド・サービス��アクセスを�純化�るライブラリを�供���る。以下�表������例を示�。
種類 言語 ライブラリ アダプター
データベース Ruby/Rails ActiveRecord MySQL, PostgreSQL, SQLite
キュー Python/Django Celery RabbitMQ, Beanstalkd, Redis
キャッシュ Ruby/Rails ActiveSupport::Cache メモリ, ファイルシステム, Memcached
本番環境ã�§ã�¯ã‚ˆã‚Šæœ¬æ ¼çš„ã�§å …牢ã�ªãƒ�ックエンドサービスã�Œä½¿ã‚�れるã�«ã‚‚ã�‹ã�‹ã‚�らã�šã€�開発者ã�¯è‡ªèº«ã�®ãƒ­ãƒ¼ã‚«ãƒ«é–‹ç™ºç’°å¢ƒã�§è»½é‡�ã�ªãƒ�ックエンドサービスを使ã�„ã�Ÿã��ã�ªã‚‹ã�“ã�¨ã�Œã�‚る。例ã�ˆã�°ã€�開発環境ã�§ã�¯SQLiteを使ã�„ã€�本番ã�§ã�¯PostgreSQLを使ã�£ã�Ÿã‚Šã€�開発環境ã�§ã�¯ãƒ­ãƒ¼ã‚«ãƒ«ãƒ—ロセスã�®ãƒ¡ãƒ¢ãƒªã‚’キャッシュã�«ä½¿ã�„ã€�本番ã�§ã�¯Memcachedを使ã�£ã�Ÿã‚Šã�™ã‚‹ã�ªã�©ã�§ã�‚る。 ã�Ÿã�¨ã�ˆç�†è«–çš„ã�«ã�¯ã‚¢ãƒ€ãƒ—ターã�Œãƒ�ックエンドサービスã�®é�•ã�„ã‚’ã�™ã�¹ã�¦æŠ½è±¡åŒ–ã�—ã�¦ã��れるã�¨ã�—ã�¦ã‚‚ã€� **Twelve-Factorã�®é–‹ç™ºè€…ã�¯ã€�開発ã�¨æœ¬ç•ªã�®é–“ã�§ç•°ã�ªã‚‹ãƒ�ックエンドサービスを使ã�„ã�Ÿã��ã�ªã‚‹è¡�å‹•ã�«æŠµæŠ—ã�™ã‚‹ã€‚** ãƒ�ックエンドサービスã�®é�•ã�„ã�¯ã€�ã‚�ã�šã�‹ã�ªé�žäº’æ�›æ€§ã�Œé¡•在化ã�—ã€�開発環境やステージング環境ã�§ã�¯æ­£å¸¸ã�«å‹•作ã�—ã�¦ãƒ†ã‚¹ãƒˆã‚‚通é�Žã�™ã‚‹ã‚³ãƒ¼ãƒ‰ã�Œæœ¬ç•ªç’°å¢ƒã�§ã‚¨ãƒ©ãƒ¼ã‚’èµ·ã�“ã�™äº‹æ…‹ã‚’æ‹›ã��ã�“ã�¨ã‚’æ„�味ã�™ã‚‹ã€‚ã�“ã�®ç¨®ã�®ã‚¨ãƒ©ãƒ¼ã�¯ç¶™ç¶šçš„デプロイを妨ã�’る摩擦を生む。ã�“ã�®æ‘©æ“¦ã�¨ã��れã�«ä¼´ã�£ã�¦ç¶™ç¶šçš„デプロイã�Œå¦¨ã�’られるã�“ã�¨ã�®ã‚³ã‚¹ãƒˆã�¯ã€�アプリケーションã�®ãƒ©ã‚¤ãƒ•サイクルã�«æ¸¡ã�£ã�¦ãƒˆãƒ¼ã‚¿ãƒ«ã�§è€ƒã�ˆã‚‹ã�¨é�žå¸¸ã�«é«˜ã��ã�¤ã��。 軽é‡�ã�ªãƒ­ãƒ¼ã‚«ãƒ«ã‚µãƒ¼ãƒ“スã�¯ã€�以å‰�ã�»ã�©é­…力的ã�ªã‚‚ã�®ã�§ã�¯ã�ªã��ã�ªã�£ã�¦ã�„る。Memcachedã€�PostgreSQLã‚„RabbitMQã�ªã�©ã�®ãƒ¢ãƒ€ãƒ³ã�ªãƒ�ックエンドサービスã�¯ã€�[Homebrew](http://mxcl.github.com/homebrew/) ã‚„ [apt-get](https://help.ubuntu.com/community/AptGet/Howto) ã�ªã�©ã�®ãƒ¢ãƒ€ãƒ³ã�ªãƒ‘ッケージングシステムã�®ã�Šã�‹ã�’ã�§ã€�ç°¡å�˜ã�«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã�—ã�¦å®Ÿè¡Œã�§ã��る。ã�‚ã‚‹ã�„ã�¯ [Chef](http://www.opscode.com/chef/) ã‚„ [Puppet](http://docs.puppetlabs.com/) ã�ªã�©ã�®å®£è¨€çš„ã�ªãƒ—ロビジョニングツールã�¨ã€�[Vagrant](http://vagrantup.com/) ã�ªã�©ã�®è»½é‡�ã�ªä»®æƒ³ç’°å¢ƒã‚’組ã�¿å�ˆã‚�ã�›ã‚‹ã�“ã�¨ã�§ã€�開発者ã�¯æœ¬ç•ªç’°å¢ƒã�«é™�りã�ªã��è¿‘ã�„ローカル環境を作るã�“ã�¨ã�Œã�§ã��る。開発/本番一致ã�¨ç¶™ç¶šçš„デプロイã�®åˆ©ç›Šã�«æ¯”ã�¹ã‚‹ã�¨ã€�ã�“れらã�®ã‚·ã‚¹ãƒ†ãƒ ã‚’インストールã�—ã�¦åˆ©ç”¨ã�™ã‚‹ã‚³ã‚¹ãƒˆã�¯ä½Žã�„。 ç•°ã�ªã‚‹ãƒ�ックエンドサービスã�¸ã�®ã‚¢ãƒ€ãƒ—ターã�¯ä¾�然有用ã�§ã�‚る。ã�“れらã�®ã‚¢ãƒ€ãƒ—ターã�¯ã€�æ–°ã�—ã�„ãƒ�ックエンドサービスã�«ç§»æ¤�ã�™ã‚‹ã�¨ã��ã�®è‹¦ç—›ã‚’比較的和らã�’ã�¦ã��れるã�Ÿã‚�ã�§ã�‚る。ã�—ã�‹ã�—ã€�アプリケーションã�®ã�™ã�¹ã�¦ã�®ãƒ‡ãƒ—ロイ(開発ã€�ステージングã€�本番環境)ã�¯å�Œã�˜ç¨®é¡žã�‹ã�¤å�Œã�˜ãƒ�ージョンã�®ãƒ�ックエンドサービスを利用ã�™ã‚‹ã�¹ã��ã�§ã�‚る。 content/pl/codebase.md0000644000175000056700000000416515232661434013473 0ustar0000000000000000## I. Codebase ### Jedno źródÅ‚o kodu Å›ledzone systemem kontroli wersji, wiele wdrożeÅ„ Aplikacja 12factor zawsze jest zarzÄ…dzana w systemie kontroli wersji takim jak [Git](http://git-scm.com/), [Mercurial](https://www.mercurial-scm.org/), czy [Subversion](http://subversion.apache.org/). Miejsce, w którym trzymany i rewizjonowany jest kod nazywane jest *repozytorium kodu źródÅ‚owego*, czÄ™sto skracane do samego *code repo*, albo po prostu *repo*. *Codebase* (baza kodu) jest wiÄ™c niczym innym jak pojedynczym repo (w przypadku zcentralizowanego systemu kontroli wersji jak Subversion), albo zestawem repozytoriów, które współdzielÄ… tzw. root commit. (w przypadku zdecentralizowanego systemu jak Git). ![Jeden codebase, wiele wdrożeÅ„](/images/codebase-deploys.png) Aplikacja powinna zawsze odzwierciedlać bazowy kod: * JeÅ›li istnieje wiele źródeÅ‚, z których pobierany jest kod, nie można mówić o aplikacji, a systemie rozproszonym. Każdy komponent w systemie rozproszonym bÄ™dzie wtedy aplikacjÄ… i każdy z osobna może speÅ‚niać wszystkie zasady 12factor. * JeÅ›li wiele aplikacji dzieli ten sam kod, mamy do czynienia z naruszeniem 12factor. WyjÅ›ciem z tej sytuacji może być wyizolowanie współdzielonego kodu do bibliotek, które bÄ™dÄ… dodane do aplikacji przez tzw. [dependency manager](./dependencies). Aplikacja może posiadać tylko jeden codebase, jednoczeÅ›nie majÄ…c wiele wdrożeÅ„. *Deploy* (z ang. wdrożenie) jest dziaÅ‚ajÄ…cÄ… instancjÄ… aplikacji. Zazwyczaj mówi siÄ™ o wersji produkcyjnej i jednej lub wiÄ™cej przedprodukcyjnych. Ponadto każdy developer pracujÄ…cy nad aplikacjÄ… posiada jej kopiÄ™ dziaÅ‚ajÄ…cÄ… w swoim lokalnym Å›rodowisku developerskim, co również kwalifikuje siÄ™ jako osobne wdrożenie. Codebase jest taki sam dla wszystkich wdrożeÅ„ aplikacji, jednak poszczególne wdrożenia aplikacji mogÄ… korzystać z jego różnych wersji. Dla przykÅ‚adu, developer pracujÄ…cy nad aplikacjÄ… może nanieść zmiany, które nie znajdÄ… siÄ™ jeszcze w wersji produkcyjnej. Obie wersje dzielÄ… jednak ten sam codebase, przez co kwalifikujÄ… siÄ™ jako osobne wdrożenia tej samej aplikacji. content/uk/who.md0000644000175000056700000000045215232661434012522 0ustar0000000000000000Кому Ñ�лід читати цей документ? ============================== Розробникам, Ñ�кі Ñ�творюють SaaS-заÑ�тоÑ�унки. Ops-інженерам, Ñ�кі виконують розгортаннÑ� Ñ– керуваннÑ� такими заÑ�тоÑ�унками.content/zh_cn/background.md0000644000175000056700000000217715232661434014534 0ustar0000000000000000背景 ========== 本文的贡献者å�‚与过数以百计的应用程åº�的开å�‘和部署,并通过 [Heroku](http://www.heroku.com/) å¹³å�°é—´æŽ¥è§�è¯�了数å��万应用程åº�的开å�‘,è¿�作以å�Šæ‰©å±•的过程。 本文综å�ˆäº†æˆ‘们关于 SaaS 应用几乎所有的ç»�验和智慧,是开å�‘此类应用的ç�†æƒ³å®žè·µæ ‡å‡†ï¼Œå¹¶ç‰¹åˆ«å…³æ³¨äºŽåº”用程åº�如何ä¿�æŒ�良性æˆ�长,开å�‘者之间如何进行有效的代ç �å��作,以å�Šå¦‚何 [é�¿å…�软件污染](http://blog.heroku.com/archives/2011/6/28/the_new_heroku_4_erosion_resistance_explicit_contracts/) 。 我们的åˆ�衷是分享在现代软件开å�‘过程中å�‘现的一些系统性问题,并加深对这些问题的认识。我们æ��供了讨论这些问题时所需的共享è¯�汇,å�Œæ—¶ä½¿ç”¨ç›¸å…³æœ¯è¯­ç»™å‡ºä¸€å¥—针对这些问题的广义解决方案。本文格å¼�çš„ç�µæ„Ÿæ�¥è‡ªäºŽ Martin Fowler 的书ç±�: *[Patterns of Enterprise Application Architecture](http://books.google.com/books/about/Patterns_of_enterprise_application_archi.html?id=FyWZt5DdvFkC)* , *[Refactoring](http://books.google.com/books/about/Refactoring.html?id=1MsETFPD3I0C)* 。 public/images/release.png0000644000175000056700000003436715232661434014177 0ustar0000000000000000‰PNG  IHDR0é:_ ¡ pHYs  šœ IDATxí�ØÅÙ†!ˆQlØ "ön,ÑhT0šXc‹%ö‚]"–+–¨HDìb/Q±Å¨Ä»bDl؈]AÅ‚ ¨ˆÿýv`ùøÊ9ßwÊ–ç½®çÌìììî̽gwß�™ÝmýË/¿´²™€ ˜€ ˜€ ˜@šü*M…uYMÀLÀLÀL@ìÀø`&`&`&�:v`R·Ë\`000;0þ˜€ ˜€ ˜€ ¤ŽÀÕ(qëÖ­We;{¡È£†«½vۘ¦ÿÍàðgjWoÙLÀL ëZWú)$œ—¶@|ý&ë0]¿Fû=ÿ­÷g¤8b&`&`e$P�.¤y)ïe,³W•|ji[)ùÅt MÀLÀÒJ ]Hê2šú‘ðRô-j¥9H?íãyÐîHÝ…ñ}ΤÍLÀLÀÊK L¼Är`.¦káóx¢ãé'@Wa;j±’c300�ЍFRÝ TÛiª»}OW†€ö«[Õ*ÃÖk50¨C L�"xÒLÀLÀLÀJ#`¦4^Îm&`&`&�v`°\000�ÒØ�)�—s›€ ˜€ ˜€ $€€˜ìÁLÀLÀL 4v`JãåÜ&`&`&` `&;ÁE000(�@5˜ºo¬;]Z‰�ÛLÀLÀL ÷ZüR¹èc�s5B²=󂣤�ÍË2J³¥‹ÀTÞ <)]EviMÀLÀ²J E ŽÈ’€¹mˆjY‘ó>æ¨�ü=�~F¶ôÐ>Áþî‰órzŠí’š€ ˜€ d•@‹ l†v+Ž.„K—�ßY“C`ŠrNÌk81S“S,—ÄLÀL �ZêÀÄ—W÷‚»²õ/R«šºõ¡F™¾8º þ100�Zˆ; ÍÙ~¼Ûè2VеAþ¨_sh&o™Éé/¨’#3 ÙLÀLÀL æZêÀÄ+0ž®…±ñÇÓO€.£qÔ"¿R®� ˜€ ˜@ê ”³;À­.©ÿ;Ô[ï×z±8ÑLÀL –ÊéÀÔ²Þ¶ ˜€ ˜€ ˜@ŽØ�ÉÑÎvUMÀLÀL +ìÀdeOº&`&`&�#åÄ›#l®ª Tާ5îH/‡\yuåP·dÍÚGóàÂ;-Y‰—5h>;0Ígç%M R¶aÅw ½¹Ú–\£ð5�Ɖ”Ü"ºd&�]îBÊî¾uÍÒK`mŠnç%ùûoYŠx NL×äÕ%4�ìp Löö©k”~ñ¾GuÔMáÇÙ“³_Õ­·&Z-Ž®Æ‰9‚–˜Ç‰ÛLÀªD ¥LüD�W©øÞŒ džÀ\{g¾–)« Ë:ùnÔ%Ò­¤êíH7Õt`8ÛS³Qcƒ‰Õ~–ñ‡c@RÕ�ýwœxǧ¤¼y+¦[^¸Ç9^^ã|·/E»©%f1¤î¤}˜÷q› ˜@… ÔëÀp®Àvû"Ýe4äÀ¨Åe~ì ";!�« DÒêù:û¼7'Þ7ÓQä\•ÒLBw7ÇË ‘sE\…î¤îÌ{2¡Åv±L 3êu`¨Ýh—k©G>%[út¦Èr^ìÀ¤oß¹Ä5$€£ò_œ˜½(ÂõHÝIºù»�4w'Âf•$Ð�Ó6¶Qu-|…|'ƒ’�¨ZÖÔE(ɼ§s內D'æÙ¨%&Þ�¤�½?0ÏÝI%Ñtf(ž@CL¼Û蟬î,䮡⹦!çÏòhtbTØø>OCù]FH u'íG�îDêNZɉQKÌSÄm&`e&Ð�ßÌ·€#ã Žgƒ'ׯ³Q×ÂjO€óäsS{R’‘º’¤�‘ã—ÝÃfå$PL«J1yÊY&¯«z¼o«ÇÚ[Êœ˜ÁTs4"ª®žNRKÌVÑ´0�2ð¬L ½0œ˜öGc4�©;é*œ˜ß¦üc&Pv`Ê‚Ñ+10�™pbžeJÝIF©]õj › ˜@™Ø�)H¯ÆLÀâ4&†éƒciËÄ⎚€ ´�€˜ôâ&`&Ð�w˜žðóçVåY&P*;0¥s~0(ž€Ï±Å³rN(‰€®’p9³ ˜€ ˜€ ˜@ó˜$”³è20Ò¿™wC롹Ðè^ú£?&l¶±Þ>,¬�W^Áº†5{E^ÐLÀLÀL Å2åÀàdt†Èåh+ÿÂÁÌ;ÇãÁÓ`<90� ;0-éEMÀLÀL ¥2ãÀà ÌŒ+ÐзèU¤Ás¡UÑ%äy'f4ñVÄõ¥íÅÑ÷h8éãgóebÍ(á%B­SÌT¥1_ßú5Rš¾õ ëƒõ˜´™€ ˜€ ˜€ TŠ@fé Újy‘3q¾Äý„r4þBp&zMaz^ÂSÑá(|ÈPß1éÉ2CHÓ2«Ü‚6Ð4ö4ê¨6�ùâv!R«L{$'è&ÒO`“ˆÛLÀLÀLÀ*H Kƒx7�“‹aÁy7â·l�Ž">–pOÔ ÉÑÙ @¿Aýp@@br’ó"‡Fó>A�L­,»£èQ¤žÿ¢£ÐÈf&`&`&PaYr`ŽXÍÒ¤4—1觨åä ’ÔýÓ�4µÊü }„6DrFä©Jvy†ž�äüÈÄlïB¬U«Q„‹!98²�§þ500¨$]¬³b“¢Šè)¤†LÎÇÊÑÌ·ʹÁ±‘ÓÓÉQ}»DVx 8yF�çÇéIçGye�T˜àg©qh&`&`&P9ºXgņGYgcµP)â {‘Ƽ̇&DóæQHz‚ðÄÒdâê" ÎPȣDZ㬔Ov’3³4’óZnˆÚLÀLÀLÀ*E ~Q®Ô6ªµÞûØÐÇHÅ“C"§åF¦Õµ£®¢ŽHÝF2 ú•m�ä€È±yé)£×‘l»éA«­ ŒârpôT’lyZg´ÍÐïPhÝ!j300¨�Ìt!EÝ<Çê:´Y¤ÀMÝ?g“眚Kˆë³ö‡×ÓFr:4~¦zƒZà¶(m·hº¾@¯KÐrze‚ÍL §Ü“ÓŸ¤jsÁ›“òèE‚ë%¤\­)‡ZŠ5µèÝBÒhê£Gù"µÌŒGSqŠâ]R$¥Þ&Qu¡)T Š˜©efCt5 ôȯ�½iT_ùôéÝ4‰—xèýIÛ"9‹ß#ÙOÓƒYH–Ó2z}�ÖSXaSN¦±™€ d”€˜ŒîØ”UKµ Ц)+w}Å]šDé�HÝ—¡þè[”EÛ§â5U 'C/s¼uÖ4&çD-*" ˆ–­Œ†¢ОH/”C²:š€f1Ö)'ét0jÏôy„g†Ðf&�cv`r¼óVuÝÁgÅ4ä?èô" _2'š9ë…Sñ%µÒþ[)ªÝí„zrK-kúGè"Z7£4µÖ´E‘˜ºû?´XͼÓЧè|´=ZÙLÀrNÀLÎÿ ©¾¾îÝuHHytqÕãÓ¥t#Éi‰îEÿFoÑ2¡‹xÖm�:Ô¾|’ºOÁ± NIpFâYãiñx<�â{E g�³Êg˜„ôd˜ÍL ÇìÀäxç'¥ê\˜4†âI)�ÊÁ…²Ø.Ÿ�È> ©ëäaê’‹'‘¨k°—‰LŒ&Ú®‚.ƒŸ8´hŒ ë�#©�Ò29.2u?iߨ� › ä˜@ÙN6;Âqs¤æà´Øã\pžJKa]Îê࿬® �ËiÈtÕ]u=Ëha^m_êÿŽ*71;õE=Q?T×Ô­TŠ…Vœ°ŒZkk± ùš€ dœ@Ù8©oúДñÒã²v`R¶ÓjT\�cyÝ�ÔEôîðä “¹µ%p\4F¦±-] ±éc\‚£1yæ�x­Ío2 ¿Þ 3‚Œà»&RK—Zx´› ˜@Î ”Ó� '«4!Mc™ÓÄ7ÍeUwˆL][궸=ÏEUc y.y¾!´™@æ TÅ�ယœy’®  ˜€ T�@ä ‹Ãò"›; éÝ1zÞñhUÒO'Ï«Äm&�iUq`"È�vóþÐÐüœ¦F½çô}Nëïj›€ A€sÄ­œCŸ%«º”4FF]JÛ"½3F-ÞýÈ“©VfêUÓkLmÕ'0�ÿq½ÃOjýgX ݪÏ#Ñ[Ô“Qm]BÎL 8±�⢾…y�Ž–D‹" ø]—yj�IýX?ê¡ND{£Z_·(‚­J´ß?gÿ÷åüRÝmÖú�P¯WU·�9›žJ}ýÔVÎvº«kÍ%À‰]­,8É¿N¨ñ†› µÆü­Aúäù'ñ4[G  êœæJ¸ìÍ&0KÎÖ[SkFÕÈŽÌôý*oS]H™jö�^5ÿš€ T’NŠønÇ6ŽD'£öh5¤¾7ö&Ï„i´vZçG™nðtŽô�žhd×´¿CoÄ‚õU³ÖŒFÍ_U_Á–¦»©*ÆIF­060(‰çŽoYà<–!„¡uМèp´é§�çâi39+ÁaQ—X/¤›½àÔµeˆ€öµZûEuª·‘£ÖŒ¬¤äQÈ�v*¢¿‘0�Äà|õÎÊ)èqèX47ZÝKúå„}È3Ž0�6‘B¿Hù5^ЖQüOÕ;Ó¨ÕÚ�QŸæÎ�–03O¢i¼kI=—ÂL ê¸Àkð£Î±/"��é„ô¸õ‰h=æC½å7m¦Öð¤ßø¦�iËÛdëZ­˜å ¶fÉÕ)S½ýouòxÒLÀEåg ôOœ•á„zÜz{¤ ƒžþ|„ôso!ßdB› ¤Š@“Nªj㚀 ˜€ ÌFåõT’>=ðy”aYÂk‘ùvŽÒ˜@jÔºæ!H©¶Þ: ¡¨QÐilfM>ÃL pbôÕê¢Öu)m•kWÂUH?•pù’|>ŽŠìÀjüB ”»Ø ’ÍL ~ºèØÒK@Neœw‡â¬ì@¡ÎE =¢¬ï)é\|1ó4À×ßS†-ÙªÒñ8ô"šð\STÆs}ÑT&Ï7�ØŽã§ÉÑø9à�Ö*ÎKÁ«ö †b!q~ÕãÖGñßD(Gf=¤§BõÀÂf¤ë ¾O·™@b TÅ�¡ög K p;yu ÙL �âOXü’-ý7æ'Ey5À·/Ú éš°1º‹t ú½„ÌZ…\Ÿ�¡I䀃ò ÎÊ>”m0:-�t–³óÎ"Ï»Äm&�(Õr`UiÆNà~Ê·Òk×ý�pvI,žö¡ºlKbáT&=n}%ÎÊÓ„GÛ"Ù^hcÒÏ'¼–|Åв6¨(�j90zTïiTÌŸ_»š4m&�K\#ôNŽrYyWº¦øïýgeO ñWtšuB—£Ð3–x½Æ²�˜Ñ‘õ¼To'š@ TÅ�áϬ;�ÄÞ}”‘§We&`©&Àùz8gäB}‹F/Õë$Ž@’~rtNgr¦‘>S¡å‰w%�Ÿdš‰Ç± (›Ãv ʧ±.jŠ,ÆÔÒ¢¼c¢¦˜eœÇLÀL  ä¤p^ÿ›:ƒäÄüé{J—žGž‰„Áö%²Òu¥'yÎd~±×ƒ°‡&P4�²90l±':ÓM (OÿpôŸ�àÐLÀL p@>ÅÑ¡j�Ñ ÞåQ{t2Ò×­{‘ç%Âu˜> …kŠºŸ^FÏe3�жr¬\êRŸR“£d30H �¨ånœ½‘ü<¤VYWôé½ wGK¢`séü—Y~LHthå$PÎ÷”Òòê eš³\XÞ¡ ˜€ ˜@àˆ¼Åfö@ÝÑ×Ñ&õ’Ò«ÑVÑth4'jÈþÌ u# l(ƒÓM ¹ÊæÀðÇJ!$› ˜€ ˜@† è|�s$U|éá�†L7ª§“w˼ÓP&§›@s”³ ©9Û÷2&`&`)#€C"ÇDO'5漄Z­JD‰Ô¸› ”�€˜²¡ôŠLÀL 7ö§¦û•PÛmÈ«—ãÙL lìÀ” ¥Wd&`Ù'@KJgj©ôê½0¥X–]»”œ×#`¦1:žg&`&0ƒÈ¥$8æ/£&f—¸ &`Y$€Còõ’^ÅA¹–p^$'¦+Ú-‡–Aj­‘s Ë$馗bÙÒB œŒ^�ÄWF—³ŽiÙ¯µ(§? Q êÞ¦ $”މ¾D==©ËÊÄõ^˜u‘Þâ» º ÙL d弸kp×÷%— ò ¨L¾¸–‡ó4V3�“�ºæä¬jx®;­$:°Ëf&�85ïRé>N#‹–ó”„*º U$PÎ?OÊ};’×�$Sóä„$(ÅeY�²ë ‚#ÍGØé¤~îÎÈf&`MÀ™Ûd¦dÀÓÀe�ë‰ÛOLŒ¡ŽÄг޹˜·y40Ëi즭 es`>ŠmI¶ìø-U“š2µÐ$Í‘mªÌžo&`Í!p 馮®�Ä1¹ˆkã¥ugÔ3Ý‘´ÿDé+åøÔ³ž\%•Í�iŒZä¡v"O^ºrÂÓO�óçÍâàau%ÉA Ò~�;,/0ý²™€ ˜@Ö h˜‚�ë'G•mO¸:‘ëßý\FFé¤Ö–ù‘Λß0OçÎøµQçׂ‘W×è�®)ß’w–§i™¯®{Ió'ǯ7ÌÓ›’ÕB®®}m#l‹èt#�^L¨–tõTh~¼Ó3%ø·* õ?í‘`•(šFâÿeÉ�Ñ£’ƒ�š~¿FÑ·HÕw¨0F†ð}Ž5¡ÚLÀL /ö§¢F•U·’//�–B‡Aƒ˜ÏBºjhà ¤�I8‹c´�eNGû �5HÚß8·~H\óõ¨º^&¸©¦±�IëO8©Kÿ¤íÈ™Ò`ê0ÿl–×µ),ß›è¶Hi×0¿óå�¥ÂªåÀÈ;Ì›e±ÎOñç>)o;Òõ50�"LáüXh=Á�C¢k€¦Õú’[‰®‹Î@z«RÞË�Z? ˰¼ZU®BÛ¡+�˜#ÐÌÛ•P-8·¡ÑHŽ“ZZäìÈ¡yÉé9©{ëÞhú(B93°Ž ïFZîÿPWtúžy}C=˜N´UË�‘§©;ö<™ê[øãf¨ÒmùsÏÉŸ;4“f¨j®Š ˜€ ´ˆÀuœCëŬI{_DEk•3²>z ]�º ½ÐžèŸH× ]“Õz½:Ú ©eäJ$FNÉæH­8ÑÖ7-‹4OÎI[Ô ­‚‚½Dd0Ò:BK�Zf´Ü“è4mƒöEr¦B=ˆ&תåÀœ 5mÉÃ̃ɋÖeT*ë:š€ ˜€ ºŠ�ÿFpÃ÷e”¨7ÕËÖ@c ±é?KÌ›žF| ¤±2‹"9+q[„uþ„³Ô™ÄóÑ:èU¤K�i‘sÚý)ÒPÂÛ�ž–©õGÖ}VˆMÿY�`Nd&@öhâ’ÍLÀLÀ²H@ÎÄWH]2êš¹�kß3„Á~Eä�œÅå¬Èt}Ô`Û`º –ɹèQˆMïŽRô5œ—N„jÅYƒnE� �P[¶;€4X÷L$çcæ�"ü©kiDv"<É Ú]�þ†4Þæfô{4�‚Z±Ž7 ö@�¡3Ñ~èt8óRá¼PÖBs”ÂJ›vÎG•ÞH�ׯf=› ˜€ ˜@¾l@uå|¨¾`8Oã´¬À„ÒåTü¬¤¿Nú¾DÕÝ£›ÞïHû�4åÓ`Þ_ÐHyß'ýp¢½P4‘´ „š§õý‹ùƒ Õb3Aó˜¾E³‘®¹g K‘õ*ÿ×ä™JX0âÏ’ÿ&Âbuw©K*56G•Jªpz•¶U‹Íè�(oÛf&`&�#\ô‡�ùp�IDATå,Ìf�¤ËI˜eòÊÉSw%¤O&­àÐÔ�§iækÐð cZ-3q O@ÅÓfÄÉÿ=R*­* �|qOåߣPhX600H�ª804SM­7FjÚ²U†€š¯ÁY|¾™«ŸÑïÉþR“äÜHÍš�Z˜l&`&`&�Uq`¨íæHÏ£Û*G@-%�Õ\f}—î,¿êˆEútArhl&`&`&�Õr`|_ù]®Ö’–pÖÈu©1ÓûÜ¥Ô!Ï30¨ �j90ïR›«R£ünD]H�Ø*�º“~DZ§‘ÉiÑÀ³颚1Š�i› ˜€ ˜€ Ô„@U.zz¡ŽdK.�7(ÚH£Ú5Bþk$'Fï#�£GðFÚLÀLÀL æÊæÀ0~B]R©6� £»%J¥Vþü÷°ôò%› ˜€ ˜€ $ž@Ùjª·úí‰äŒó´‘ÆkhLÅÕHwþ¶Ú(ç¡¶5ñÖMÀLÀ2O œ­Õ¡µc‰ÄôvÀGK\ÆÙMÀLÀLÀrN 9]> !kκôzä–<9ÓPYœn&`&�` ;˜Í“à"ºh 'PΘ÷¨k©]AêBú$áŒ\<00�2ÀaÑ—’;£UÑH׌[‘ÍJ&P6† 7±uÉf&`&`8-í‰üýéÇk¡ÅÐÃè>d3�f(›Ó¬­{!00�LP×Ò×–×GÛ!½‰})´ ¦wVõæÆwbHph¥°S*1ç70˜…N‹¾�¶RëJ7$ÇE­, �q¼çå%æÛL ÙìÀ4]&,æq÷LTÔ•0(/œ–v¬qS´Z­ŽGMÙÓdèÓT&Ï7�¦Ø�iŠP†æsÂÑ“báŽHaÛ UÏU1¨Î#³™ƒ�Ƶ,�Ô]T¬}KÆSh}Ѿm&Ð"v`Z„/9 sRÑãˆ:‘tˆÂùÕ¬¦.‚äĨåEót"²™€ ˜@)ÔUt jSÊBäÕKN/ÀyRârÎnõ°S/–ä&⨨ådY´ZuAË!9( Ƥ‘ÿ¥˜› ˜€ 4EàN2¨ëè°¦2Ö™?”é+ë¤yÒšMÀL³ÑU~A|½3AŽÉ2H#ú7Š$GeÞH¥ÜéÍÇaÜ‹â’"}¸ñd30�F Ђ2…sÓ)dZmØhæ™3õ´Ñéî:š ı–°Ór†e]'uó¨UE£ùu—³ R“mSöÔ¿4�¸N •ö’£2É”_óÕòò';0€°™€ 4M€óÅ8ÎUG’ó^¤á¦ìJ–y¢©Lžo¥°S ­ ååD V–­ÑŽH]Cr`æG ÙgÌx½iá7(8/ßq²�ãbK1�è¡‹„º5~À–,j½”äx”¬¢U¥4?±�sšr`'ÏùU)‘7’+v`j´»£––uØüÞhK¤w&h nÜtчƢaèEôú©åGNœ¡E…I[ÆJ}ÎËX�²X�}8žOäX¼*‹•«['ê*§m¤ÿæòuç×™ÖÓFgÃFŽŽÍÊJÀLYq6¾²èÀ׫´»¡�‘âuM߇ ­+ô6½Ì Œ]©›ßÓÙ%°tv«–©ši<ÚEß?s˜^“©šÕ© uTËð_‘ÆÀhŒžL­¿ê¢î„êÚÍ0Ñ9Ìfe'`¦ìHg_!};R÷Dºk‘Ó² Š›ZZ^Ew¡Ðôê&²å›@Üi½ �!³ÉùO¨%â/h ¤×\±>�c÷:â™3ê¶>•ê‹¶ŒUîuâG"�¥ÓùKï… ¦sÚÙa¡ ”›€O†å&[¼Æ.ìŠA]PüÅq“˜þ=€îAïqâóË�a«—À`þ7×;lj5#À1.§òô$'ærÒÚ²¯2Ó�D}äœìŽ.BK"™º®"½”n´Èw:�Z ”ÿ{Ô‹y_ÚL "ìÀT+òʬv'¤;91qû‚‰§ÐCh¸š_m&ЫMªÁ|Žß‘ïÝÙôÕH/†T·J?Ò¦2ïZâ©6ê¡§"�CÇ#ÕM¦sÖù¨?uŒ�ÁS+á‘nÚú#�çl&P1>)–-{gV'§Ew+ñ‘ù¿0=Ý„þÃAÿ¡ÍL 8žßäØÿ3U¹©{Eƒñ/%­Uš�Ê¿õ¸É1 ¦0ö¤^Ï…„’6‰eN`Z­/3wnB¶r…:§ÚrNÀLþ´rVDG¡Ž±UþHü t%z€Ú#ñcp5�¬àØÍy@ç€�HüÐ�4óRÕ�D=æ¤ü{#=e´’ɹ�J}¾TB}Ƽ,á”úæ—)MÎK%×_¦bz5-$Ðä>¶Ó¨êÖ�×!hõت4(÷)¤;²»8˜5ÞÅf&�aç#9'F5Dcbä\HÚæ]G<ñFY¦�Ë¢›±p}�ÃrR«ŠÞÞݨ‘§É O£+hz¦œªž”U]YocË]CWiªZáÚT>Ï�àÀ™�I9-‡£•b³tp¿€ÎEOs «Æf&�ó¡;é&ªÜµCØÛšy×O¬QDµ]Œ6Œòâ'QöciµŠ¶‰6¬Ç“jUo·&¾Ÿeãö^gÁÑøøÚ”êjdç60�Ù p~ÝIÿe®Z Ôz°?ç–ygÏ]�¶=ÒëîBÁyѣϗ¡?QæÄ9/”Ëf³p L$ØH:†ºÄfëI¢ëÑp¿Ç%ÆÑ|àXQ÷ÃHOàµFo£q||AXcºÉR·Á–HýHƒ8çFº�Ðëêm”q$õ8›BÞƒæCó Ð]C´zF9–ckz£î.±­¾O¼å|8–æ¨ $ž€˜hq`ëÎH'Jõo„Bë”=�ÎGÏs�WúA6c3�dàxY‡j�ç¯Q¸ëXÙ�ysœ¼C¼¶*+¹-ŒÔJ .„�]pïÀPFÙ¤�±²šŒß`¿lŶu[_…ÀT�ÛŽcù¦LDl©"�{†ƒZƒë6C=Ðv(8.D /¡»”ðàáä£t› ä–ÇÌBT^­‘ë¡/Ñp¤]7Aú2ó3ºhë9jÕ\ µCj�μi¤ÏO\7 ?£ÁhM¤uƒ^CºÀîˆä¼ŒGG¢!h¤ñ$3œÖµÓrväD½‚6@º)їܵ¾Z›Î+j¥ªºÁFŽFg 1—ýˆú¢ á3Q 6H�b˜šÜ-T$öNlç0Ô É‘ ö1 nSs¸NÐ60�™ö&*çE­,Ý9Fs,µ%ÞÉÉxŒt=�£ åæÓS ÎÉ@ÒOdº z4JW÷Šœ‡º êø» �‡dºðÞŠöE§ 9+{¡;Xׄ7¡_#Ù½h—BŒ×>ÅsÀfe*}.Ú5Vù·‰ëÝ.ÿŽ¥9j©#omh¨ðí8Ô÷œ £.À¶º› Ý‚Ômœ—¯ˆ_Œô.=mç6¨C 8#zO-'zâF]«ýÑH_(žÀ1¦n9 Ê[Ž&”“#çCoÛ ¦–—®Hëh�ôA—#™ŽÅµÑ Î[“Ù†Z5”WÎËchS4 ¦Ö�\h¶¥â÷¡¸ó"‡Quí¼äò_‘­JÇôxÍâé1ceÝ!½€Þâϯ­©2ʯ“¢Nn ?!5«û‚ˆNŒ§nï†D‡&`õ襎‰Ï娑³0*–&‡CÇœŽ¯ÞÌÿ�ãð|â·£C‘�Ê&£ã™ÿóG?-ŒäÀ|€dúºóŠ�'80¿0Ùé&Dv.yþË|u•tE:æsgÔ_7œb؈_�·ÑxB› ¤ž@ÜQ‰WæM&¦"Í—t%}‡^å‘#ó4ÂÁ #±FY;S¸=�Nr:™Æû¡ÕT}H=†ÚLÀš&n`ä<4f‹2S7 8¾>Œ2þ/ Õµn"äøŒˆÒuq•c"Ó±Ú¦ÓÆzÂ<%+>7Z"ЇH7!rŠrg ZƒJ÷EÁ©uõ :µPÙL 3r`þC Õ½/Ú…»!�°¶Œ$,Ì3„¢—Ðx’ï kf”Gwg*ïhwô{´ŠÛ7L¨iõRôz�“b<Ÿã&`³Ð Î6¨ÇÛÍ?Ÿ+ qkjY¹ ©‹"8¿b^[òM!M‡LƒHã]HrbJ598Z‡ÖÛ…u+Ô¼\Œ·§ÂýQ—¨ârðîGïò~”æÀ2C ^†?»Z_–8(tµ’C³6ZɈ¤;©îH}Ô/“á«hͺä,TÔØ¦NX:hWBjeQQ('Ñö±ÇÑõ”Ke´™€ ”Nà9 ÉaÀñwáâèÔ éœð$ú�C‘ò>„v@2��‰ßì4ÇáÐ2jŽÖA[£Hç*u£äÂàß�ŠŠý)hž¨Ò⢖˜¾œë‚#Ír`Ù P¯¯~õ_ß(q ¬H¨&ÊÍÐVhML')5[†¦ËψÂ2 ?Dj:–F£ÏX¯œ¤’�õ©…E-*+ uÑZHΊœ5%×5mçtz†íŽ ´™€ 4“ÇÐ+‡'°ø%h§HamºaÑ¿ñª+çÔK!Ó¯vCcÑ(œft‘& ÓrP‚cÒâóÛ°�Y¯œé<âÛ.‹âù™Ì¦QßÕ©ÙÅHçã`+t"l M ‹št`â•æ€P3äû4j–\uFrX¶Ar"t'0’É™ˆ;º Ð×$¤“ÎBµÒèM'=Ió⦓×üh1´ZuBº»j‡æCrhêÚw$ŒDƒ�—(»Æ»ØLÀÊCàZV£ãw¤›u弊®ãXL¨'“~æ8?‹¨Î#µ’<ˆ.ežÆÒéâ«V÷Z^¦ð¤VU�3~@Ê£©`#¢Há˜f]W³.�ËG:çôDw¢EPX/ÑìõÕyogt!ê„dê2º� “O”`3�,Р¸²Ô�jyV´!Ú©•fY¤“‰�jØÇlD'J�DGÏR·)„6H%Ž©þü¯Qá�æÿ|E*+RÁBÃH71;"9;�Âè;ÒV þ:jƒ6!maM�2ý–<€tã÷4Ú‰r�',ÙXWê…z pÃø-qý_ú°^±°™@æ ”ÔÓ 9Ò�`:q,�GK"uïÈ©Q”ZQ”^_Ë ÉEÙçäÒ¶Þ@:9©‹J-.RŽLÞqQ7› ˜ÀìÚ“tZ ½Á¹G­Bƒ£VZµÀ¾‹2cÔom*#GeËX¥^ Þ‹sß3±4GM óÊæÀÄIq ýÌ´ ©`xsQ³ðœH'—ÐB³ quéÎDóꚣ}‰t‡1}„ÔEôúžm…~t&m&`9# ›™? H­¿k¡¯Ñ9H^UTê�ó§nøöCª—ne:Ϫ«Lã]>U‚ÍòD "L}9ÀäpH29$#±™€ ˜@s p^ù…eßB‡6wI_çE7y'F çlÝÌ]$�À7q€°å�@8òWsרLÀNçåwñoh³XQ_&®1QCciŽš@îØ�ÉÝ.w…MÀ’NÇEçæ½Ñ…¨cT^µ`ߊô­©øSYÑl&�/v`òµ¿][0�„ÀyÑx@=eÔé�™ºÝÏB×£±/6È=;0¹ÿ € ˜@R༬FY®Azì:ØsDŽÃqQבÍL "Ð’G™ ÑLÀL ¼ôr>½¤S¦÷¹è‘é?Ùy› ÌJÀ̬<ÌÐkôÇ¡!èAòû›?€°™€ L'`Æÿ0�ŠÀY’ Ü€¶@ú*½ì~Ô ü­Ñ¾H¦¯ÏßÉzôýŸ)…ÿ˜€ 䞀»�rÿ0¨8�#ØÂ6(8/¥n° ˆv)uAç7È.;0ÙÝ·®™ $…@·XAî#Þ½K«/z‰Ç¢¢™m »Fq&`&ÐÊ]Hþ˜€ TšÀÂÑô~“^t½ÛÔÉ£q/Cè6ÒG å×Gm&`&P àÿLÀ*M ÞuôM‰Ó Þ`j…±™€ ˜@�€ÿLÀ*M ul-9ç´dÙX5ÈŸ²°]H(º€ÔúÎ3ÓšQÌø£Óîòn@/bY%N,Y­Ÿëe&P[«°y½÷E6M.ÄŠÿ™@Öï£ì‹âµ/~Qç4È2;0YÞ»®› Ô�ÎÆblþ4´@TŒŽ�âÅo“ñÕ(³^‚w4ëÕcÕ60�œ°“ó?€«o• €“¡—×éQé]‘ž>zõ/õmºäŸÈrg¢÷�º£ÎB�"› ˜@Î Ø�ÉùÀÕ7� ˜“õ.Ž4€WoÏ•Ó15dž±ÐÐhA­·KsVâeLÀ²EÀL¶ö§kcI!0–‚�F µœœ�ô-¤’Œ– ܽ…Ï Â˜–Ç Û"�…ù 5f'0³Òàɬ">¸±å<ÏL 'ìÀädG»š&Pk8!zЍ¨'‰È;™¼’ÍLÀê%à.¤z±8ÑLÀLÀL ÉìÀ$yï¸l&`&`&`õ°S/'š€ ˜€ ˜€ $™€˜$ï—ÍLÀLÀL ^v`êÅâD000�$°“ä½ã²™ÀLM½7efNÇ’H ¨§¯’Xp—É’JÀ�Q'uϸ\&0+�ž¼Ge’ô[ºè=8�Þ@,ó>œÎÁ¿&Ð"v`Z„Ï ›@E ´‰­}Eâ’-ýäÐÄ¿²�þ¹&PîBªtoÒŠ$ 7׎+2¯³¥‡€>©¾ •žR»¤&�0­§¿å;a¥rqLÀZÑe¤ŒÐâÆ‘ ÚŸú¾Ó[œw›ú”B&*ìJ˜@% Ø�©$]¯ÛLÀLÀL "Ü…T¬^© ˜€ ˜€ ˜@% Ø�©$]¯ÛLÀLÀL "ìÀT«Wj&`&`&PIv`*I×ë600¨�ÿü,|j%óºýIEND®B`‚content/ko/dependencies.md0000644000175000056700000000605015232661434014345 0ustar0000000000000000## II. 종ì†�성 ### 명시ì �으로 ì„ ì–¸ë�˜ê³  분리ë�œ 종ì†�성 대부분ì�˜ 프로그래ë°� 언어는 ë�¼ì�´ë¸ŒëŸ¬ë¦¬ ë°°í�¬ë¥¼ 위한 패키징 시스템ì�„ 제공하고 있습니다. Perlì�˜ [CPAN](http://www.cpan.org/) ì�´ë‚˜ Rubyì�˜ [Rubygems](http://rubygems.org/)ê°€ ê·¸ 예입니다. ë�¼ì�´ë¸ŒëŸ¬ë¦¬ëŠ” 패키징 시스템ì�„ 통해 시스템 ì „ì²´(site pakages)나 애플리케ì�´ì…˜ì�„ í�¬í•¨í•œ 디렉토리(vendoring 혹ì�€ bundling)ì—� 설치ë�  수 있습니다. **Twelve-Factor Appì�€ ì „ì²´ 시스템ì—� 특정 패키지가 암묵ì �으로 존재하는 것ì—� 절대 ì�˜ì¡´í•˜ì§€ 않습니다.** *종ì†�ì„  ì„ ì–¸* mainifest를 ì�´ìš©í•˜ì—¬ 모든 종ì†�성ì�„ 완전하고 엄격하게 선언합니다. ë�”나아가, *종ì†�성 분리* 툴ì�„ 사용하여 실행ë�˜ëŠ” ë�™ì•ˆ 둘러싼 시스템으로 암묵ì �ì�¸ 종ì†�성 "유출"ì�´ ë°œìƒ�하지 않는 것ì�„ 보장합니다. ì�´ëŸ° 완전하고 명시ì �ì�¸ 종ì†�성ì�˜ 명시는 개발과 서비스 모ë‘�ì—�게 ë�™ì�¼í•˜ê²Œ ì �ìš©ë�©ë‹ˆë‹¤. 예를 들어, 루비ì—�서 사용ë�˜ëŠ” [Bundler](https://bundler.io/)는 종ì†�성 ì„ ì–¸ì�„ 위해 `Gemfile` manifest í�¬ë§·ì�„ ì§€ì›�하며, 종ì†�성 분리를 위해 `bundle exec`를 ì§€ì›�합니다. 파ì�´ì�¬ì—�는 ì�´ë¥¼ ì§€ì›�하기 위한 2가지 ë�„구가 있습니다. [Pip](http://www.pip-installer.org/en/latest/)ì�€ 종ì†�성 ì„ ì–¸ì�„ 위해 사용ë�˜ë©°, [Virtualenv](http://www.virtualenv.org/en/latest/)는 종ì†�성 분리를 위해 사용ë�©ë‹ˆë‹¤. 심지어 C언어ì—�ë�„ 종ì†�성 분리를 위해 [Autoconf](http://www.gnu.org/s/autoconf/)ê°€ 있으며, static link를 활용해 종ì†�성 분리ë�„ 가능합니다. ì–´ë–¤ 툴체ì�¸ì�„ 사용하든, 종ì†�성 선언과 분리는 í•­ìƒ� ê°™ì�´ 사용ë�˜ì–´ì•¼ 합니다. 하나만 사용하는 것ì�€ Twelve-Factorì—� 만족하는 ë�° 불충분합니다. 명시ì �ì�¸ 종ì†�성 ì„ ì–¸ì�˜ 장ì � 중 하나는 애플리케ì�´ì…˜ 개발ì—� 새로 참가하게 ë�œ 개발ìž�ê°€ 설치를 간단하게 í•  수 있다는 ì �입니다. 새로 참가한 개발ìž�는 애플리케ì�´ì…˜ì�˜ 코드베ì�´ìŠ¤ë¥¼ 개발 머신ì—� ì²´í�¬ì•„웃 하고, 언어ì�˜ 런타임과 종ì†�성 매니저만 미리 설치하면 ë�©ë‹ˆë‹¤. 개발ìž�는 정해져있는 *빌드 명령어*ë§Œ 입력하면 ì�‘ìš© 프로그램ì�˜ 코드를 실행하는 ë�° 필요한 모든 것ì�„ 설치할 수 있습니다. 예를 들어, Rubyì�˜ 빌드 명령어는 `bundle install`ì�´ë©°, Clojure/[Leiningen](https://github.com/technomancy/leiningen#readme)ì—�서는 `lein deps`입니다. Twelve-Factor Appì�€ 어떠한 시스템 ë�„구ì—�ë�„ 암시ì �으로 ì�˜ì¡´í•˜ì§€ 않습니다. 예를 들어, ImageMagickì�´ë‚˜ `curl`ì�„ 사용하는 경우가 있습니다. ì�´ëŸ¬í•œ 툴들ì�€ 대부분ì�˜ 시스템ì—� 존재하지만, 모든 시스템ì—� 존재하는 것ì�´ 보장ë�˜ëŠ” 것ì�€ 아닙니다. 미래ì�˜ 시스템ì—�서는 존재하지 않ì�„ 수 있으며, 호환ë�˜ëŠ” 버전ì�´ 있으ë�¼ëŠ” 보장ë�„ 없습니다. 애플리케ì�´ì…˜ì—�게 시스템 ë�„구가 필요하다면, ê·¸ ë�„구를 애플리케ì�´ì…˜ê³¼ 통합해야 합니다. content/zh_cn/build-release-run.md0000644000175000056700000000416615232661434015734 0ustar0000000000000000## V. 构建,å�‘布,è¿�行 ### 严格分离构建和è¿�行 [基准代ç �](./codebase) 转化为一份部署(é�žå¼€å�‘环境)需è¦�以下三个阶段: * *构建阶段* 是指将代ç �仓库转化为å�¯æ‰§è¡ŒåŒ…的过程。构建时会使用指定版本的代ç �,获å�–和打包 [ä¾�赖项](./dependencies),编译æˆ�二进制文件和资æº�文件。 * *å�‘布阶段* 会将构建的结果和当å‰�部署所需 [é…�ç½®](./config) 相结å�ˆï¼Œå¹¶èƒ½å¤Ÿç«‹åˆ»åœ¨è¿�行环境中投入使用。 * *è¿�行阶段* (或者说“è¿�行时â€�)是指针对选定的å�‘布版本,在执行环境中å�¯åŠ¨ä¸€ç³»åˆ—åº”ç”¨ç¨‹åº� [进程](./processes)。 ![代ç �被构建,然å�Žå’Œé…�置结å�ˆæˆ�为å�‘布版本](/images/release.png) **12-factor 应用严格区分构建,å�‘布,è¿�行这三个步骤。** 举例æ�¥è¯´ï¼Œç›´æŽ¥ä¿®æ”¹å¤„于è¿�行状æ€�的代ç �是é�žå¸¸ä¸�å�¯å�–çš„å�šæ³•ï¼Œå› ä¸ºè¿™äº›ä¿®æ”¹å¾ˆéš¾å†�å�Œæ­¥å›žæž„建步骤。 部署工具通常都æ��供了å�‘布管ç�†å·¥å…·ï¼Œæœ€å¼•人注目的功能是退回至较旧的å�‘布版本。比如, [Capistrano](https://github.com/capistrano/capistrano/wiki) 将所有å�‘布版本都存储在一个å�« `releases` çš„å­�目录中,当å‰�的在线版本å�ªéœ€æ˜ å°„至对应的目录å�³å�¯ã€‚该工具的 `rollback` 命令å�¯ä»¥å¾ˆå®¹æ˜“地实现回退版本的功能。 æ¯�一个å�‘布版本必须对应一个唯一的å�‘布 ID,例如å�¯ä»¥ä½¿ç”¨å�‘布时的时间戳(`2011-04-06-20:32:17`),亦或是一个增长的数字(`v100`)。å�‘布的版本就åƒ�一本å�ªèƒ½è¿½åŠ çš„è´¦æœ¬ï¼Œä¸€æ—¦å�‘布就ä¸�å�¯ä¿®æ”¹ï¼Œä»»ä½•çš„å�˜åŠ¨éƒ½åº”è¯¥äº§ç”Ÿä¸€ä¸ªæ–°çš„å�‘布版本。 新的代ç �在部署之å‰�,需è¦�å¼€å�‘人员触å�‘构建æ“�作。但是,è¿�行阶段ä¸�一定需è¦�人为触å�‘,而是å�¯ä»¥è‡ªåŠ¨è¿›è¡Œã€‚å¦‚æœ�务器é‡�å�¯ï¼Œæˆ–是进程管ç�†å™¨é‡�å�¯äº†ä¸€ä¸ªå´©æºƒçš„进程。因此,è¿�行阶段应该ä¿�æŒ�å°½å�¯èƒ½å°‘的模å�—,这样å�‡è®¾å�Šå¤œå�‘生系统故障而开å�‘人员å�ˆæ�‰è¥Ÿè§�肘也ä¸�会引起太大问题。构建阶段是å�¯ä»¥ç›¸å¯¹å¤�æ�‚一些的,因为错误信æ�¯èƒ½å¤Ÿç«‹åˆ»å±•示在开å�‘人员é�¢å‰�,从而得到妥善处ç�†ã€‚ content/zh_cn/dev-prod-parity.md0000644000175000056700000000761215232661434015442 0ustar0000000000000000## X. å¼€å�‘环境与线上环境等价 ### å°½å�¯èƒ½çš„ä¿�æŒ�å¼€å�‘,预å�‘布,线上环境相å�Œ 从以往ç»�验æ�¥çœ‹ï¼Œå¼€å�‘环境(å�³å¼€å�‘人员的本地 [部署](./codebase))和线上环境(外部用户访问的真实部署)之间存在ç�€å¾ˆå¤šå·®å¼‚。这些差异表现在以下三个方é�¢ï¼š * **时间差异:** å¼€å�‘人员正在编写的代ç �å�¯èƒ½éœ€è¦�几天,几周,甚至几个月æ‰�会上线。 * **人员差异:** å¼€å�‘人员编写代ç �,è¿�维人员部署代ç �。 * **工具差异:** å¼€å�‘人员或许使用 Nginx,SQLite,OS X,而线上环境使用 Apache,MySQL 以å�Š Linux。 **12-Factor 应用想è¦�å�šåˆ° [æŒ�续部署](http://avc.com/2011/02/continuous-deployment/) 就必须缩å°�本地与线上差异。** å†�回头看上é�¢æ‰€æ��述的三个差异: * 缩å°�时间差异:开å�‘人员å�¯ä»¥å‡ å°�时,甚至几分钟就部署代ç �。 * 缩å°�人员差异:开å�‘人员ä¸�å�ªè¦�编写代ç �,更应该密切å�‚与部署过程以å�Šä»£ç �在线上的表现。 * 缩å°�工具差异:尽é‡�ä¿�è¯�å¼€å�‘环境以å�Šçº¿ä¸ŠçŽ¯å¢ƒçš„ä¸€è‡´æ€§ã€‚ 将上述总结å�˜ä¸ºä¸€ä¸ªè¡¨æ ¼å¦‚下:
传统应用 12-Factor 应用
�次部署间隔 数周 几�时
开�人员 vs �维人员 ��的人 相�的人
开�环境 vs 线上环境 �� 尽�接近
[�端�务](./backing-services) 是��开�与线上等价的��部分,例如数�库,队列系统,以�缓存。许多语言都�供了简化获��端�务的类库,例如��类型�务的 *适�器* 。下列表格�供了一些例�。
类型 语言 类库 适�器
数�库 Ruby/Rails ActiveRecord MySQL, PostgreSQL, SQLite
队列 Python/Django Celery RabbitMQ, Beanstalkd, Redis
缓存 Ruby/Rails ActiveSupport::Cache Memory, filesystem, Memcached
å¼€å�‘人员有时会觉得在本地环境中使用轻é‡�çš„å�Žç«¯æœ�务具有很强的å�¸å¼•力,而那些更é‡�é‡�级的å�¥å£®çš„å�Žç«¯æœ�务应该使用在生产环境。例如,本地使用 SQLite 线上使用 PostgreSQLï¼›å�ˆå¦‚本地缓存在进程内存中而线上存入 Memcached。 **12-Factor 应用的开å�‘人员应该å��对在ä¸�å�ŒçŽ¯å¢ƒé—´ä½¿ç”¨ä¸�å�Œçš„å�Žç«¯æœ�务** ,å�³ä½¿é€‚é…�器已ç»�å�¯ä»¥å‡ ä¹Žæ¶ˆé™¤ä½¿ç”¨ä¸Šçš„差异。这是因为,ä¸�å�Œçš„å�Žç«¯æœ�务æ„�味ç�€ä¼šçª�然出现的ä¸�兼容,从而导致测试ã€�预å�‘布都正常的代ç �在线上出现问题。这些错误会给æŒ�续部署带æ�¥é˜»åŠ›ã€‚ä»Žåº”ç”¨ç¨‹åº�的生命周期æ�¥çœ‹ï¼Œæ¶ˆé™¤è¿™ç§�阻力需è¦�花费很大的代价。 与此å�Œæ—¶ï¼Œè½»é‡�的本地æœ�务也ä¸�åƒ�以å‰�那样引人注目。借助于[Homebrew](http://mxcl.github.com/homebrew/),[apt-get](https://help.ubuntu.com/community/AptGet/Howto)等现代的打包系统,诸如Memcachedã€�PostgreSQLã€�RabbitMQ ç­‰å�Žç«¯æœ�务的安装与è¿�行也并ä¸�å¤�æ�‚。此外,使用类似 [Chef](http://www.opscode.com/chef/) å’Œ [Puppet](http://docs.puppetlabs.com/) 的声明å¼�é…�置工具,结å�ˆåƒ� [Vagrant](http://vagrantup.com/) 这样轻é‡�的虚拟环境就å�¯ä»¥ä½¿å¾—å¼€å�‘人员的本地环境与线上环境无é™�接近。与å�Œæ­¥çŽ¯å¢ƒå’ŒæŒ�续部署所带æ�¥çš„益处相比,安装这些系统显然是值得的。 ä¸�å�Œå�Žç«¯æœ�务的适é…�器ä»�然是有用的,因为它们å�¯ä»¥ä½¿ç§»æ¤�å�Žç«¯æœ�务å�˜å¾—简å�•。但应用的所有部署,这其中包括开å�‘ã€�预å�‘布以å�Šçº¿ä¸ŠçŽ¯å¢ƒï¼Œéƒ½åº”è¯¥ä½¿ç”¨å�Œä¸€ä¸ªå�Žç«¯æœ�务的相å�Œç‰ˆæœ¬ã€‚ content/ko/concurrency.md0000644000175000056700000000630115232661434014250 0ustar0000000000000000## VIII. ë�™ì‹œì„±(Concurrency) ### 프로세스 모ë�¸ì�„ 통한 확장 모든 컴퓨터 프로그램ì�€ 실행ë�˜ë©´ 하나 ì�´ìƒ�ì�˜ 프로세스로 표현ë�©ë‹ˆë‹¤. 웹 애플리케ì�´ì…˜ì�€ 다양한 프로세스 실행 형태를 취해왔습니다. 예를 들어, PHP 프로세스는 Apacheì�˜ ìž�ì‹� 프로세스로 실행ë�˜ë©°, requestì�˜ ì–‘ì—� ë”°ë�¼ 필요한 ë§Œí�¼ 시작ë�©ë‹ˆë‹¤. ìž�ë°” 프로세스들ì�€ 반대 ë°©í–¥ì—�서ì�˜ 접근법ì�„ 취합니다. JVMì�€, 시작ë�  때 í�° 시스템 리소스(CPU와 메모리) 블ë¡�ì�„ 예약하는 하나ì�˜ 거대한 부모 프로세스를 제공하고, ë‚´ë¶€ 쓰레드를 통해 ë�™ì‹œì„±(concurrency)ì�„ 관리합니다. ë‘� 경우 모ë‘� 실행ë�˜ëŠ” 프로세스는 애플리케ì�´ì…˜ 개발ìž�ì—�게 최소한으로 노출ë�©ë‹ˆë‹¤. ![Scale는 실행ë�˜ëŠ” 프로세스ì�˜ 갯수로 표현ë�˜ê³ , Workload Diversity는 프로세스ì�˜ 타입으로 표현ë�©ë‹ˆë‹¤. ](/images/process-types.png) **Twelve-Factor Appì—�서 프로세스들ì�€ ì�¼ê¸‰ 시민입니다.** Twelve-Factor Appì—�서ì�˜ 프로세스는 [서비스 ë�°ëª¬ë“¤ì�„ 실행하기 위한 유닉스 프로세스 모ë�¸](https://adam.herokuapp.com/past/2011/5/9/applying_the_unix_process_model_to_web_apps/)ì—�서 í�° 힌트를 얻었습니다. ì�´ 모ë�¸ì�„ 사용하면 개발ìž�는 애플리케ì�´ì…˜ì�˜ 작업ì�„ ì �절한 *프로세스 타입*ì—� 할당함으로서 다양한 작업 부하를 처리할 수 있ë�„ë¡� 설계할 수 있습니다. 예를 들어, HTTP 요청ì�€ 웹 프로세스가 처리하며, 시간ì�´ 오래 걸리는 백그ë�¼ìš´ë“œ 작업ì�€ worker 프로세스가 처리하ë�„ë¡� í•  수 있습니다. ì�´ëŠ” 런타임 VM ë‚´ë¶€ì�˜ 쓰레드나 [EventMachine](https://github.com/eventmachine/eventmachine), [Twisted](http://twistedmatrix.com/trac/), [Node.js](http://nodejs.org/)ì—�서 구성ë�œ 것 처럼 async/evented 모ë�¸ì²˜ëŸ¼ 개별 프로세스가 ë‚´ë¶€ì �으로 ë�™ì‹œì—� 처리하는 것ì�„ 금지하는 것ì�€ 아닙니다. 하지만 개별 VMì�´ 너무 커질 수 있습니다.(수ì§� 확장) ë”°ë�¼ì„œ 애플리케ì�´ì…˜ì�€ 여러개ì�˜ 물리ì �ì�¸ 머신ì—�서 ë�Œì•„가는 여러개ì�˜ 프로세스로 넓게 í�¼ì§ˆ 수 있어야만 합니다. 프로세스 모ë�¸ì�´ 진정으로 빛나는 것ì�€ 수í�‰ì �으로 확장하는 경우입니다. [아무것ë�„ 공유하지 않고, 수í�‰ìœ¼ë¡œ ë¶„í• í•  수 있는 Twelve-Factor App 프로세스ì�˜ 성질](./processes)ì�€ ë�™ì‹œì„±ì�„ 높ì�´ëŠ” 것ì�€ 간단하고 안정ì �ì�¸ 작업ì�´ë�¼ëŠ” 것ì�„ ì�˜ë¯¸ 합니다. 프로세스ì�˜ 타입과 ê°� 타입별 프로세스ì�˜ 갯수ì�˜ 배치를 *프로세스 í�¬ë©”ì�´ì…˜*ì�´ë�¼ê³  합니다. Twelve-Factor App 프로세스는 [절대 ë�°ëª¬í™”해서는 안ë�˜ë©°](http://dustin.github.com/2010/02/28/running-processes.html) PID 파ì�¼ì�„ 작성해서는 안ë�©ë‹ˆë‹¤. 대신, OSì�˜ 프로세스 관리ìž�(예: [systemd](https://www.freedesktop.org/wiki/Software/systemd/))나 í�´ë�¼ìš°ë“œ 플랫í�¼ì�˜ ë¶„ì‚° 프로세스 매니저, 혹ì�€ [Foreman](http://blog.daviddollar.org/2011/05/06/introducing-foreman.html) ê°™ì�€ 툴ì—� ì�˜ì¡´í•˜ì—¬ [아웃풋 스트림](./logs)ì�„ 관리하고, ì¶©ë�Œì�´ ë°œìƒ�한 프로세스ì—� 대ì�‘하고, 재시작과 종료를 처리해야 합니다. content/de/config.md0000644000175000056700000000662315232661434013151 0ustar0000000000000000## III. Konfiguration ### Die Konfiguration in Umgebungsvariablen ablegen Die *Konfiguration* einer App ist alles, was sich wahrscheinlich zwischen den [Deploys](./codebase) ändern wird (Staging, Produktion, Entwicklungsumgebungen, usw.). Dies umfasst: * Resource-Handles für Datenbanken, Memcached und andere [unterstützende Dienste](./backing-services) * Credentials für externe Dienste wie Amazon S3 oder Twitter * Direkt vom Deploy abhängige Werte wie der kanonische Hostname für den Deploy Manchmal speichern Apps die Konfiguration als Konstanten im Code. Dies ist eine Verletzung der zwölf Faktoren. Sie fordern **strikte Trennung der Konfiguration vom Code**. Die Konfiguration ändert sich deutlich von Deploy zu Deploy, ganz im Gegensatz zu Code. Ein Lackmustest, ob eine App die Konfiguration vollständig ausgelagert hat, ist, wenn die Codebase jederzeit als Open Source veröffentlicht werden könnte, ohne Credentials preiszugeben. Es sei darauf hingewiesen, dass diese Definition von "Konfiguration" die interne Anwendungskonfiguration **nicht einschließt**, wie `config/routes.rb` in Rails oder wie Code-Module [mit Spring verdrahtet sind](http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html). Diese Art von Konfiguration ändert sich nicht von Deploy zu Deploy und gehört daher zum Code. Als Konfiguration könnte man auch Dateien verwenden, die nicht ins Versionsmanagement eingecheckt sind wie `config/database.yml` in Rails. Dies ist eine deutliche Verbesserung gegenüber der Verwendung von Konstanten, die ins Versionsmanagement eingecheckt sind, hat aber Schwächen. Es ist relativ einfach, versehentlich eine Konfigurationsdatei ins Repo einzuchecken. Zusätzlich gibt es Tendenzen, Konfigurationsdateien an verschiedenen Orten und in verschiedenen Formaten zu streuen. Das macht es schwer die Konfiguration von einem Punkt aus zu managen. Desweiteren sind diese Formate oft sprach- oder plattformspezifisch. **Die Zwölf-Faktor-App speichert die Konfiguration in *Umgebungsvariablen*** (kurz auch *env vars* oder *env*). Umgebungsvariablen von Deploy zu Deploy zu ändern ist einfach; im Gegensatz zu Konfigurationsdateien ist es unwahrscheinlich, dass sie versehentlich ins Code Repository eingecheckt werden und im Gegensatz zu speziellen Konfigurationsdateien oder anderen Konfigurationsmechanismen wie den Java Properties sind sie Sprach- und Betriebssystemunabhängig. Ein anderer Aspekt des Konfigurationsmanagements ist die Gruppierung. Manchmal sammeln Apps die Konfiguration in benamten Gruppen (oft "Umgebungen" genannt), benannt nach bestimmten Deploys wie zum Beispiel die Umgebungen `development`, `test` und `production` in Rails. Diese Methode skaliert nicht sauber: Je mehr Deploys einer App es gibt, desto mehr Umgebungsnamen werden benötigt, wie zum Beispiel `staging` oder `qa`. Wenn das Projekt noch weiter wächst, könnten Entwickler ihre eigenen speziellen Umgebungen wie `joes-staging` hinzufügen. Am Ende explodiert die Konfiguration kombinatorisch und die Verwaltung der Deploys wird fehleranfällig. In einer Zwölf-Faktor-App sind Umgebungsvariablen granulare Stellschrauben und vollständig orthogonal zueinander. Sie werden nie als "Umgebungen" zusammengefasst, sondern können für jeden Deploy unabhängig verwaltet werden. Dieses Modell skaliert reibungslos aufwärts, wenn die App sich natürlicherweise über ihre Lebenszeit hinweg auf mehr Deploys ausdehnt. content/pt_br/who.md0000644000175000056700000000033215232661434013206 0ustar0000000000000000Quem deve ler este documento? ============================= Qualquer desenvolvedor que esta construindo aplicações que rodam como serviço. Engenheiros de Operações que implantam ou administram tais aplicações. content/ja/toc.md0000644000175000056700000000271215232661434012466 0ustar0000000000000000The Twelve Factors ================== ## [I. コードベース](./codebase) ### ãƒ�ージョン管ç�†ã�•れã�¦ã�„ã‚‹1ã�¤ã�®ã‚³ãƒ¼ãƒ‰ãƒ™ãƒ¼ã‚¹ã�¨è¤‡æ•°ã�®ãƒ‡ãƒ—ロイ ## [II. ä¾�存関係](./dependencies) ### ä¾�存関係を明示的ã�«å®£è¨€ã�—分離ã�™ã‚‹ ## [III. 設定](./config) ### 設定を環境変数ã�«æ ¼ç´�ã�™ã‚‹ ## [IV. ãƒ�ックエンドサービス](./backing-services) ### ãƒ�ックエンドサービスをアタッãƒ�ã�•れã�Ÿãƒªã‚½ãƒ¼ã‚¹ã�¨ã�—ã�¦æ‰±ã�† ## [V. ビルドã€�リリースã€�実行](./build-release-run) ### ビルドã€�リリースã€�実行ã�®3ã�¤ã�®ã‚¹ãƒ†ãƒ¼ã‚¸ã‚’厳密ã�«åˆ†é›¢ã�™ã‚‹ ## [VI. プロセス](./processes) ### アプリケーションを1ã�¤ã‚‚ã�—ã��ã�¯è¤‡æ•°ã�®ã‚¹ãƒ†ãƒ¼ãƒˆãƒ¬ã‚¹ã�ªãƒ—ロセスã�¨ã�—ã�¦å®Ÿè¡Œã�™ã‚‹ ## [VII. ãƒ�ートãƒ�インディング](./port-binding) ### ãƒ�ートãƒ�インディングを通ã�—ã�¦ã‚µãƒ¼ãƒ“スを公開ã�™ã‚‹ ## [VIII. 並行性](./concurrency) ### プロセスモデルã�«ã‚ˆã�£ã�¦ã‚¹ã‚±ãƒ¼ãƒ«ã‚¢ã‚¦ãƒˆã�™ã‚‹ ## [IX. 廃棄容易性](./disposability) ### 高速ã�ªèµ·å‹•ã�¨ã‚°ãƒ¬ãƒ¼ã‚¹ãƒ•ルシャットダウンã�§å …牢性を最大化ã�™ã‚‹ ## [X. 開発/本番一致](./dev-prod-parity) ### 開発ã€�ステージングã€�本番環境をã�§ã��ã‚‹ã� ã�‘一致ã�•ã�›ã�ŸçŠ¶æ…‹ã‚’ä¿�ã�¤ ## [XI. ログ](./logs) ### ログをイベントストリームã�¨ã�—ã�¦æ‰±ã�† ## [XII. 管ç�†ãƒ—ロセス](./admin-processes) ### 管ç�†ã‚¿ã‚¹ã‚¯ã‚’1回é™�りã�®ãƒ—ロセスã�¨ã�—ã�¦å®Ÿè¡Œã�™ã‚‹ locales/en.yml0000644000175000056700000000031115232661434012053 0ustar0000000000000000en: # Name of language listed in locales menu language: English (en) # A text to make known that the article is a translation not an original. # Empty for English, original. translation: "" web.rb0000644000175000056700000000377115232661434010423 0ustar0000000000000000require 'sinatra' require 'maruku' require 'i18n' require 'rack/ssl-enforcer' configure do # For Development use only! set :host_authorization, { permitted_hosts: [] } use Rack::SslEnforcer if ENV['FORCE_SSL'] I18n.enforce_available_locales = true I18n.load_path += Dir[File.join(settings.root, 'locales', '*.yml')] # I18n.available_locales = Dir[File.join(settings.root, 'locales', '*.yml')].map { |f| File.basename(f, '.yml').to_sym } # I18n.available_locales = [:en, :pt] I18n.backend.load_translations I18n.default_locale = :en end before do I18n.locale = I18n.default_locale end before '/:locale/*' do locale = params[:locale].to_sym if locale != I18n.default_locale && I18n.available_locales.include?(locale) I18n.locale = locale request.path_info = '/' + params[:splat][0] end end get '/' do erb :home end TOC = %w(codebase dependencies config backing-services build-release-run processes port-binding concurrency disposability dev-prod-parity logs admin-processes) get '/:factor' do |factor| halt 404 unless TOC.include?(factor) @factor = factor erb :factor end helpers do def render_markdown(file) markdown = File.read("content/#{I18n.locale}/#{file}.md", :encoding => 'utf-8') Maruku.new(markdown).to_html rescue Errno::ENOENT puts "No content for #{I18n.locale}/#{file}, skipping" end def render_prev(factor) idx = TOC.index(factor) return if idx == 0 "« Previous" end def render_next(factor) idx = TOC.index(factor) return if idx == TOC.size-1 "Next »" end def render_locales(factor) I18n.available_locales.map {|locale| if locale == I18n.locale "#{I18n.t(:language)}" else path_prefix = locale == I18n.default_locale ? "" : "/#{locale}" "#{I18n.t(:language, :locale => locale)}" end }.join(" | ") end end not_found do "Page not found" end content/it/concurrency.md0000644000175000056700000000611215232661434014253 0ustar0000000000000000## VIII. Concorrenza ### Scalare attraverso il process model Ogni software, una volta avviato, è rappresentato da uno o più processi. Le web application in particolare hanno assunto nel tempo una gran varietà di forme e di tipologie di esecuzione, in tal senso. Per esempio, i processi PHP vengono eseguiti come sotto-processi figli di Apache, avviati su richiesta quando necessari in base al volume di richieste. Java invece gestisce le cose nella maniera opposta, tramite un superprocesso unico che usa una grande quantità di risorse sul server (CPU e memoria) dall'avvio, con una concorrenza gestita "internamente" tramite i threads. In entrambi i casi, comunque, i processi non sono esplicitamente visibili allo sviluppatore. ![Il fattore di scale è espresso con un numero di processi dello stesso tipo avviati, la diversità del carico di lavoro, invece, come le varie tipologie di processo.](/images/process-types.png) **In un'applicazione twelve-factor, i processi sono "first class citizen"**. La visione del concetto di processo prende spunto dal [concetto, in unix, dedicato all'esecuzione di demoni di servizi](https://adam.herokuapp.com/past/2011/5/9/applying_the_unix_process_model_to_web_apps/). Attraverso l'uso di questo modello, lo sviluppatore può realizzare la propria applicazione in modo tale da farle gestire senza problemi diversi livelli di carico di lavoro, assegnando ogni tipo di lavoro a un tipo di processo ben definito. Per esempio, le richieste HTTP possono essere gestite da un web process, mentre dei compiti più lunghi (in background) possono essere gestiti da un altro processo separato. Questo non esclude che un certo processo, individualmente, possa gestire in modo autonomo e interno il multiplexing, tramite threading, all'interno della VM in esecuzione, o magari un modello asincrono o basato su eventi come quello di [EventMachine](https://github.com/eventmachine/eventmachine), [Twisted](http://twistedmatrix.com/trac/), o [Node.js](http://nodejs.org/). Tuttavia, tutto questo può non bastare: l'applicazione deve essere anche adatta all'esecuzione su più macchine fisiche. Il modello di processo così come presentato rende il massimo quando arriva il momento di scalare. La [natura orizzontalmente partizionabile (e non soggetta a condivisioni) di un "processo twelve-factor"](./processes) permette di gestire la concorrenza in modo semplice e affidabile. L'array dei tipi di processo e il numero di processi presenti per ogni tipo è conosciuto come *process formation* (formazione di processi). I processi di un'app twelve-factor non dovrebbero [essere soggetti a daemonizing](http://dustin.github.com/2010/02/28/running-processes.html), o scrivere file PID. Al contrario, facendo affidamento sul process manager del sistema operativo (come [systemd](https://www.freedesktop.org/wiki/Software/systemd/), un process manager distribuito su piattaforma cloud, o tool come [Foreman](http://blog.daviddollar.org/2011/05/06/introducing-foreman.html) durante lo sviluppo) per gestire [gli stream in output](./logs), rispondere adeguatamente a crash di processi e gestire riavvii e shutdown. content/it/dev-prod-parity.md0000644000175000056700000001121515232661434014747 0ustar0000000000000000## X. Parità tra Sviluppo e Produzione ### Mantieni lo sviluppo, staging e produzione simili il più possibile Storicamente, ci sono sempre state differenze sostanziali tra gli ambienti di sviluppo (lo sviluppatore che effettua delle modifiche live a un [deployment](./codebase) in locale) e quello di produzione (un deployment in esecuzione raggiungibile dagli utenti finali). Differenze (o gap) che si possono raggruppare in tre categorie: * **Tempo:** uno sviluppatore può lavorare sul codice per giorni, settimane o mesi prima di poter andare in produzione; * **Personale**: gli sviluppatori scrivono il codice, gli ops effettuano il deployment; * **Strumenti**: gli sviluppatori potrebbero usare uno stack quale Nginx, SQLite e OS X, mentre in produzione per il deployment verrebbero installati Apache, MySQL e Linux. **Un'applicazione twelve-factor è progettata per il [rilascio continuo](http://avc.com/2011/02/continuous-deployment/), tenendo così queste differenze al minimo possibile.** A proposito di queste tre tipologie di differenze appena viste: * Rendi la differenze temporali minime: cerca di scrivere (o far scrivere) del codice da rilasciare nel giro di poche ore, se non minuti; * Rendi le differenze a livello di personale minime: fai in modo che gli sviluppatori siano coinvolti anche nella fase di deploy, per permettere loro di osservare il comportamento di ciò che hanno scritto anche in produzione; * Rendi le differenze a livello di strumenti minime: mantieni gli ambienti di lavoro il più simile possibile; Riassumendo tutto in una tabella:
App Tradizionale App Twelve-factor
Tempo tra i Deployment Settimane Ore
Sviluppatori e Ops Sono diversi Sono gli stessi
Sviluppo e Produzione Divergenti Il più simili possibile
I [backing service](./backing-services), come il database dell'applicazione o la cache, sono una delle aree in cui la parità degli ambienti è molto importante. Molti linguaggi offrono delle librerie che facilitano l'accesso a questi servizi, tra cui anche degli adattatori per questi tipi di servizi. Eccone alcuni:
Tipologia Linguaggio Libreria Adattatore
Database Ruby/Rails ActiveRecord MySQL, PostgreSQL, SQLite
Code Python/Django Celery RabbitMQ, Beanstalkd, Redis
Cache Ruby/Rails ActiveSupport::Cache Memory, filesystem, Memcached
Gli sviluppatori, inoltre, trovano utile usare dei servizi "leggeri" in fase di sviluppo, passando quindi a qualcosa di più serio e robusto in produzione. Per esempio, usando SQLite localmente e PostgreSQL in produzione. Ancora, un sistema di cache in locale in fase di sviluppo e Memcached in produzione. **Lo sviluppatore twelve-factor "resiste" a questa necessità**, anche se gli adapter ci sono e funzionano in modo tale da astrarre in modo sufficiente tutte le differenze nella gestione. Nulla impedisce, infatti, a qualche altra incompatibilità di uscire allo scoperto quando meno ce lo si aspetta, soprattutto se in ambiente di sviluppo funziona tutto e poi, magari, in produzione i test non vengono superati. Il costo di questa differenza può risultare abbastanza alto, soprattutto in situazioni in cui si effettua il rilascio continuo. Rispetto al passato, usare dei sistemi "light" in locale è una prassi poco convincente. Si pensi al fatto che alcuni servizi moderni come Memcached o PostgreSQL si possono installare e usare senza difficoltà tramite alcuni sistemi di packaging come [Homebrew](http://mxcl.github.com/homebrew/) e [apt-get](https://help.ubuntu.com/community/AptGet/Howto). In alternativa, esistono anche alcuni tool di provisioning come [Chef](http://www.opscode.com/chef/) e [Puppet](http://docs.puppetlabs.com/), che combinati con sistemi di ambienti virtuali come [Vagrant](http://vagrantup.com/) permettono agli sviluppatori di riprodurre in locale delle macchine molto simili, se non identiche, a quelle in produzione. Ne risente quindi positivamente il costo di deployment. Tutto questo, sia chiaro, non rende gli adapter meno utili: grazie ad essi infatti il porting verso nuovi servizi, in un secondo momento, rimane un processo indolore. Nonostante questo, comunque, rimane scontato che sarebbe buona norma usare uno stesso backing service su tutti i deployment di un'applicazione. content/tr/codebase.md0000644000175000056700000000342015232661434013476 0ustar0000000000000000## I. Kod Tabanı ### Bir çok dağıtım kod tabanı gözden geçirme kontrolünde izlenmeli On iki faktör bir uygulama her zaman [Git](http://git-scm.com/), [Mercurial](http://mercurial.selenic.com/) veya [Subversion](http://subversion.apache.org/) gibi bir sürüm takip sistemiyle izlenir. VEritabanının gözden geçirme sisteminin bir kopyası *kod deposu* olarak bilinir. *kod repo* ya da sadece *repo* olarak kısaltılır. Bir *kod tabanı* herhangi tek bir depo(Subversion gibi merkezi gözden geçirme kontrol sistemi) ya da kök iÅŸleyicini paylaÅŸan bir takım repodur(Git gibi merkezi olmayan gözden geçirme kontrol sistemi). ![Bir kod tabanı bir çok dağıtımla eÅŸlenir](/images/codebase-deploys.png) Kod tabanı ve uygulama arasında bire-bir iliÅŸki her zaman vardır: * EÄŸer birden fazla kod tabanı varsa bu bir uygulama deÄŸil, dağıtık sistemdir. Dağıtık sistemdeki her bileÅŸen bir uygulamadır ve her biri on iki faktörle bireysel olarak uyumlu olmalıdır. * Aynı kodu paylaÅŸan birden fazla uygulama, on iki faktörü ihlal eder. Burada çözüm, paylaşılan kodun [bağımlılık yöneticisi](./dependencies) aracılığıyla dahil edilebilecek kütüphanelere dönüştürülmesidir. Uygulamanın sadece bir kod tabanı vardır fakat birden fazla dağıtımı olacaktır. Bir *dağıtım*, uygulamanın çalışan bir örneÄŸidir. Ayrıca her geliÅŸtiricinin kendi yerel geliÅŸtirme ortamında çalışan bir kopyası vardır ve bunların her biri aynı zamanda dağıtım olarak nitelendirilirler. Sürümler her bir dağıtımda etkin olabilir fakat kod temeli tüm dağıtımlarda aynıdır. ÖrneÄŸin, geliÅŸtiricilerin henüz uygulamaya eklenmemiÅŸ commitleri olabilir. Bu nedenle hepsi ayrı dağıtım olarak tanımlanır ama kod tabanı aynıdır. public/12factor.mobi0000644000175000056700000114111415232661434013063 0ustar0000000000000000The_Twelve-Factor_AppSÍ‹SÍ‹BOOKMOBIs9$x+»4k@s%B{ñD„[F�]H–)J�ÞL¦èN¯_P¯©R¯¬T°¤V² X³ÈZ´¼\·8^¸ `¸ðb¹dºf¼„h¿xj¿”l¿¸n¿ìpÂHr—Ï MOBIýéäÍ-0ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ T Pÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿEXTH<t õj2014-02-18T21:15:22ZdHerokum Copyright © 2014 Heroku 2AFB en horizontal-lr�kindle:embed:0005ƒ ,,€ôíì¾Ì ÊÍ Î 0730-890adc2Ï } y The Twelve-Factor App‚÷‚÷p�˜1> ‚¡‚¯‚¯…Ÿ‚¯ X¿ÈLog»÷¿¯¿¯¿¯¿¯‚I5¿¯¬Ìl‚X¬i‡n�Y­pm¾×¾×¾×¾×¼J¾ß¾ß0359“�…˜¾àAdm¶¢—¾ÿ¾ÿ¾ÿ¾ÿ¾ÿ36¢0¾þR«Xa‚¡/man«�¸yôask²â¦€-off¦¿¿¿¿¿ß/nav> T¼ðTwelve-Fac½ØÁpp½H�»‚—‚—‚—

Aô…Ûf…Û°Ñi½Hlways‚‡—8öer‚�ožhystem˜Èuch¾Ñ¼Èhref="http://git-scm.com/">Git¿ ,�?�ŠÑŠX½iŽÈ¯˜€ „`fte¿˜h¶hen‹xto�o�i�:ºÑj¨À‚B€¶.½¸>I�êˆÁˆàmultip¼àšÍs,ét'sî‰�a¯˜™(--€›‰°iªibut›È˜£.Å”xŠáp¤˜«Šó�G�­�’›¡²³e�²ƒŠPividually‚:€8ºÚ�o£@’`¹Ð…ñM…��ø´x�–Á—qsam¡ž²öioˆô˜qŸ×‚h ¦Asolu¶²‹-–Ø Ô‘ºdㆀÀ†odeéntoìibraries÷hichãanâ€ácludedôhrough€@e dependencyíanager.

Therƒ˜sïnly€(eã„ baseðerápp,âutƒA�@will„9‚xy ‚øloy�Ðf„2�X.Á <�, >II.Ę͛Most–!gra‹Ø—Èlanguœ™qŽø—ack–ystˆˆf–Ødistri›€–Úupport _,€˜“ÑsŸ‘href="http://www.cpan.org/">CPANŸY‚¢Perl™¹�§�£rubygems�¤R€|�Æ€‰.̤F�âll£ç†/†/¥>�e†ë-w�x (known™Y"ž©ˆes")ž¹s�¦È§ò¦±dir�XožHcontai¢ �å‚_"v§ or¢ð" é"bundl€q)œE<Š ong>Aôwelve-fšP¢@ !n¡Yòel«Q£hiš8�iš�ŒX©Ø¥Z†/…¯ª8‚ÄÉš™�Òž®’þ,›ñœØte¦Á¦(�Xc’`,öia¨Ð©|­E“a§É©û­ÈifestŸ@ur¬)§ñ, …us£¹‚¯K”»�þtoo¦�uˆù¡(ec’Ъ˜³ensu�Rat À‡Ç–³Ø™˜ak´€"ærom¦ ur³Ènd•Ï® eæu°Ð‡‚W³õspec©8c†Â°’pš ¶0u†èorm³Ð·˜both¯Ï‘@¯˜¬otª½§‡°¸˜O˜K–ˆ� er.§°˜XG£XB€“–חМC¬«<·™>III.ïèigA½À¥ŠžÁ�{žŠ·Ù¡G©Œs²k•i¬�vary®°¬ˆµÐ»æœHpos=X€ >¾Xloy˜Øº`(»hgƒ€€�À¸Á¡¸À‘ing,ðroduction,äeveloperånvironments,åtc).Ôhiséncludes:

  • Resourceèandlesôoôheäatabase,Íemcached, �ï€ðr back„àóervicesAppƒ°ometim„tor‚onfig„A€PstaŠ@‰à‚óodeŠusáöiolaŒ ïfôwelve-fac‚8,÷hi†prequirŠÀ€8ict‰par�Þƒœfromƒ"�ë/rˆ˜es.rbS„�)¡$typ�È”Ž’e“ùyŽÈ—Ž “† �so˜Yb’ádon‹9™W””p“‚p¥�¢X£!›,ƒ™£pu‘è˜?¢É“š†ñ„ ¤ck”XŽ0oš¨v‘˜�ûš°lŽŽŽŽŽ¦ý.ymlŽŽŽŸoŽug—Ø•‰veªñ €@r…ا�¡W…¿…Ÿª¤œúr© ,âš�sti›°›ñweakness¬àét'såasy¬Q˜ÐtakenŸ`ˆ ¤Aa‰?l˜È­{‚±;­É¦¤Òten«`cž(ªŠÇ¯ �s˜«øžèabžù§dif“jtðl—¸§¯x€¯ª8ma²™ma¯it± rd±‰seŸ°àmana‰ ¢i©s�#¨ð�È‚ª.Æur²,³1¡˜‚´…‚„Ülangu‚@-¯ñfr®work-specif™¸¦Äª�Tµp«ß®¦ª®Z®„¸ß–’iab·�qa¼×¼Ö.Á³ƒ´@j“a’ wsæ¤�Žež0ma–Hd¦ðhei˜€w �¤alŠW¯q�j³¯³¯³¯³¨jº8-†�³w�Ý¥Xultª²¯ mbina¦`ƒŠx»x·z¼Ï¸ë¬P½«²´)��µ½Àr¡º¼}I²!©—©”,‘¦granula±â»¿pe½Ùfu¢ ¬È¦gonˆx¾`¾ó© ¹™ 4n˜�r�˪Jg“HŸJœ?œ9,"¸‚iºea´ˆ¶!µðp¶t·à²Ãd¶b„2ªK¼ïa•de³±a•üsõ°(mo¦P¹èž°ÉЏur¨IŠÁ·˜q»Q——¾ÉiŽúf£R³£/s¥›€W> IV.Âac¹úServi»0A·‚�¯ƒbµÛ‰y³x‚Lž^½hsuª¡‡ê½ùnµ°»È¯�par¬Êˆ¡n½‘l ¯©a£q·Øxamp‹™inclu³¨data¼ (ŸŽaèref="http://©p.mysql.—p/">MySQLM€…).

    Back‚zervicesìikeôheäatabaseár€ˆraditionallyíanagedây�Rsam€(„„adminis�ˆtor€xs‚japp'sòunti�`deploy.Én�x‚Ãôoƒ±ƒxlocƒ)-ƒ-„Õ,‚Mƒøyálsoèavƒð…Õprovid„¸a‰8…†hirdðarties.Åxampl‡PincludeÓMTPˆЇЇЂpostmark†X.comŠ�P€”ŠŠ,íetrics-ga‰ørН‚¯�/�-newrelic‚”NewÒ€��!ïrޝެwww.loggly„$L€j„binarˆàssetŽ—‘‘‘aws.amazon†Šs3‘0A€‚Ó3†¬ŠaevenÁPI-ac‘sibleãonsumer‘Ï”O”O”Jdev.twitter‰ÌT€s”I,•Ç•Äcode.google‹Bapis/maps/index.html">G� Í€À‚;‰o‰o‰iast.f‚2‰h€k˜˜<•Xong>T—˜ƒÙ拸aôwelve-fac–8“´k˜ønoä–ð‘à•²be�Hˆð•ª“Ê“wyš®›hƒ4Ô—:˜��xot�Кðatt�Ròesour—j‹c›(via„€URL����‹ ™šð/credeš˜˜hó›xœ˜išP�è hæile•¨=X€ >�¸fig .Á�7�7�2�”#f jˆˆ}shoul ¡���øswapïut‰ðˆ{MySQL¢G�hïne¡ÿž8œ÷‰€¦g¦g•W•Wrds•_RDS¦’ƒƒúnyãhang¦p¢³£ü’Ò̧wise–à�¼ –xc†µ†qp§ …²…<-Ž»¡�ce¬ u„O’z„T§j�Šcª ¦honªH«A�¥¦pndšÐŽ�Sîeed†:†“­½E°0”Nâ®/„¢i¬8 ’…»¬RŸ=¾p¢! µÙde‚W¹Sº°t™øllŽŽiœëºëŽGsíisbe¸ð¾Ñduœò¶p��w¾iissu—ø¼Ç½§§imigh±øp¢Xup¨Xµ ž/™<¥H£ƒfrom‘ºc¤H”JupŽÃcurr€¡‰_ _›6‡e³K¿ ƒw¡˜¨Î--¿�lŸŸš÷« ®h/se¬²€W> V.Âuil„p¼¨e¥ €Hun«Ç¬÷¬õde©Y¿òž(Œˆns´€m®ÊŽ*(non-º�elopm¯à)–_rough€Ae¥ðƒš:·"ul>ôak£c�¬ Ó†7‹¿°ƒ‹ƒX´Ø‡˜¸’¤µ™¬¾¾¾¾©é±èul°(g„ÿ‘ù޹¿Xtain†Ð³±‰Ï›M³ £‘±€«˜dy®Òim“xi–1�;®‘´¤€�environ”‰7‰6—¥“(also‘"š˜time")šé‰Û¯±ƒ'ƒ'ƒ%,�¡launch·Bom¤Qt’e¾ûš·š·š±‘ì�­gˆ©“ÁsŸ ct²JŸj�|/™�¯ÿ¯ÿ03¯üC¾Ábe•À´±Ÿk³þ® �dŽû¾D¾¶¹¹Pƒ†°�‚—‚—‚—‚—‚—‚—‚—†µÛ®XongŸšºÿºý¾ s¤ ¥¡¥•½±be¼Pe�K†œ¨6¦W¦Q¹ƒ ´´zt³áim¦¸si é»hm˜ø­5»íŸÝ�L, ¡cµ(he´êîo÷a¼èo»9­Øª‘¯À¾9‚Lºá¾]¦‡ˆD¡×toolªHypic²y£ðfµúžCman°Ð�O,ío�àno¦é¤3abilit„rro´ƒÝa¶Èeviou™á’¼ï¼é¼Ñ¯H¬xf="https://g¶ub.§˜/cap»šno€_o/wiki">C€æ°Z¨Unƒ€€ÀÀ¸À‹tôoolótoresòeleas€Hináóubdirec€àyîamed ‚

    Eveˆà†5shouldálwaysèaveŠ0unique‡VID,ŠÈchᇙtimestampïfˆÊˆ�(�%‹—‹—‹—‹�2011-04-06-20:32:17‹ï‹î)ïránŽÈcrem‹ØingîumberƒgŽ÷Ž÷Ž÷Žðv100Ž×‚ï.Ò‘Õa�ƒ@append-onŠ`ledgƒ8‹�a�–cannotâeíutat’àonc�Ht�a… €™.Ányãhang�9st€Ì”ànewŒgŒcBuild„ initi‚ªbް“€„x'säevelopers”Yn€pr‚J–©”deployƒÁRu‰meåxecution,‚Qc—˜rast,…ñ�‡!áutomatical‘À™Ècš�'serƒIreboo�ØŒA‡ashš€processˆ8Œ�œtar…¿€þ•`aŠ.Ôšf�`,‘sun�؀ؓ݊xkepž©“f‰(mov�Yp‚À› sðossibl‚s�`ƒ€pmsœ¸at—BœÁŽæromƒ)n‘q‡¡cau�qƒ b�(k¡Qž‰middle–5night‹"îo‹¿�óo‰ÙnŽè†hâ�©†$Š©��¤X� plex…5erro�üšôƒÄˆagrouž`ˆ¸¥¨�&£poŽªriˆ£¹� �ë/s¦ÐŽÐ€W> <�, >VI.ÐŽ§�h2�w�q3�w�qE’R§óŠÙŸøon‰ˆr‡ƒ (t«è�X�œ‚š3£ >‰AŒq©(”ƒ¬H‹¼•ånvironžÙ‚çŠc‚·/€p¥ýI�ësi‹išù¯è’Ó˜�°0t©H-al…qscrip—øƒßƒßƒÛ®J›F› lo˜Èìaptop÷it§È¤1§¨l À€Èngu– –X¨i,¡:—ç´X‚ aunc™yvi©˜„ò­û±x©X�Éexª(–±µµµµpyth”my_†s.pyµo©‡.Ï–Óoµ€ƒ±h­sp¸˜rum…Xždu‘¡ë®A¹Ðophis ¡¦ÉšQmay ™Ù³°y Twelve-½@¿’ç­:“§¸Y„¨h¢à="http://en.wikipedia.org/€q/Sh¯d_­Øh²_archit¼¸ur¿ès€é-€ä„t„D®RdatŽ£@nee­X¿H¬i‰P®ó°hs¿–û“Òteful‰‡‰‡‰‚¾ñ¶A«iceˆ¨Àyp¬d hƒˆb½šRme£yŽ0ºH¸©ŒIsystem¼%¬­¤„§�¾ ½qbrief©Êgle-°XnsŠÀ ùca•.Æ”W,äownload»Qa˜r¶(�±°´±�¼¨`i²x¸Ù‡Ñ¥E°Hul­€ª|�„�i«s†Æª"t�'¿)­À¶Ûassum¼˜®Ò“À�š…[¢ ˆT´ˆ•ùisk�ll¼™availa±0­iaæu�½Øqu¡1¶job --žƒ–š’×°eˆp–*±å¹ˆ¾(·P¼òh°ð„¬‚߂ۄ ¹¢½ò®�iff·°´°¹t.ŵ(²û´íon»èª‰º”œéº| (trig¹øºÃ¿j¿S¾@onfi¶Ø´ˆgŒÉrª·ª·ª´r¶(žˆ²e�n»X…'ðhys”§Ê³)гusu”ªwš�ïu»‹X¨ë(e.g.,”ͨ”§)°Ó­�A³`½0—À¿¨º€(su‹X¿X�÷�ódoc�àntcloud.g«Àub.º¨/jammit/">J€J¡¡´)Ÿ÷Ÿó°.goo—H�ºp/dj­Xo-’¨et„ ‚8€¿€¿¤I)§z½›š2™b½r¿)¨8šñ†¸ŽÀA–g–fp¤¨‡Y§ødo¿ ¾˜�þ©du™¦ª¯ª¯¡*uilšñ¾¨¡ ‰��¬§¯§¨ryanb‘h‰Zguides/‡’_p¨P³y.html">R™¸ðŒ{€Ü¤žÐ±‰§8¦ ‘°¶Ã»•Some÷eb £›s’±•É«ÿ«ÿ«ÿ«þL¢€_ba¹°c«ù%28Š!¼8ng%29#Pªse›X">"´ k§P¿À½8s"�b�°¬i³¥±²´Èr�=­+ ÷·¬¶ ¾h¼¥½!ex¸A´  ÿ ùsærom¹Sa‡hvisi³áµø¯r—Ø¿¸¶`�ž¶S…‡…�µ"a¿ ol§ë¼¶§Y©¹hou�§“­u¹�pi»àupon‚І䷒‡®‰—d¯9di´Ø”£±«´:µ[o£ñ¼ Ž(-‡ i¬S’?¹Ç¹Ã³«¹ª">M€…›_»O“¢»s.ioœ R€Y¾?/s‹on€W> VII.Ðo¨ bi‡(¼©h2�— ><ƒ€€ÐÀ¸Á¸À‘h3álign="left">Exportóervicesöia €’binding

    Webáppsáreóometim�€executedénsideá÷eb‚qerãontainer.Æor�Xample,ÐHP‚[mightòuná‚Àíodule‚UA€jÈTTPD, ƒ8Java‚ÿ‚û‚Ÿ‚Ÿ‚˜tomcat‚§‚¡T€¢‚q.TƒXtwelve-fact†�ˆ€és‡@†ÁtelyŠ@lf-‡Åd‘\ƒzhost:5000/…ÈendencyŒclara“Q™q�:dd�Ÿ�˜librar‡è“߈,óuch� œ�œ‹www.˜0nadoŸ ™þ€ŠƒfŸ¨Python,žwžtŽQ.macournoŠ(.š(/thinœ€8‚RubyžÂ ‡ ƒjetty�¸dehaus ’€š ÀJ€Ù„ ‹œošX¡VM-bas¥˜languag‹X™Xž@h§en¦ œ¸�"–˜u¨ð “bacˆj½„›>a²À–é�Š�™rovi®c¹ª ²T‚ µÙ»ªresœ °¦3®9„¢¢}¾ figžþ´é¿8su°©i¹ª/s¶‹€W> VIII.Ãoncurr¥éA—À½‰ut»«hgram£n¸¼€,¾�repˆ°«�¿hmo˜Ð¬÷׺ӡ¹�Htake·Qvariet¾øf®U-½ï¨ˆm£hF¨Àe˜Ã,ÐHP¯§›š¼°child°_�!A·h�€staµ»`dem›ú xeedµ³¼´öolum¤X§êƒ…9¡Ëp±Hi•�”¬¦k¼Z©’•massi¤xu�0 e¿R‰A±È½q²Øg“¿Xk¢¢ystem’þs (CPU¬:meŠXy)††ju³ ©*©˜�}ƒ�n¬Ðd¬�@n·ºŽÃ‘àd­ˆ¼˜b®€§x¹X¬‘¥zn¼©º(es) ¦q©"¤¸im‚Šp¿ytwelve-fµ¸¢¡¿é”ß°Éa¤¨r’ðcl�ˆã¯°zen´à‚<ЖN¸´‚—‚””ƒ»ã¶àærom¾ï¾ìadam.½poku¿m/past/2011/5/9/½@ly¹�_¾ˆ_unix_µ _Ÿb_to_web_œñ²€¼ñ�) � ‰©º‘�ºda”àn± .Õs°ó½¢“3‘†»Rar�Xt§h¿i‡oªe�“e�¿X»ÈšXg•Je°a�¡¼!‘9ºÃ�—p¯(€ˆ¡·¡²HTTP»6œøy¿¡®¿ša ˆ½½¸³l�H-™%²Agrou½ðtask¦)�畚¨ó¿±¶ýTˆQdo¾`³h¦¾ƒ¶á³Xual¨ïŽ£²Š» ˆØownžvíulti¨x¾Ð,ž×‰insi‚¸žŒti¸ˆVM­³casync/�˜¬êŽM†9µÁoolsóu»¶Ø¾Ÿ¾œuby�Êm¼ine’Â">E‚aM€›¾q,”g”dtwi¦Xdmatrix”rtrac’ÈT€Ë�³¼(–/–+n³Èjs.org”0N´0.j’ÜBµ8¿ˆ‰ç‡ ’‚¥bŒÈwóoª”(¡°ti¶ðó·)°¾[˜1€Àºmu¯ al�¨�@a¦üsp•‹U¸{sƒ€€ðÀ¸À‹sesòunningïníultipleðhysicalíachines.

    Th€èrocessíodelôrulyó�2÷henétãom‚Ðtimeôoó‚Peïut. ‚share-notƒ�g,èorizontalƒpartitionab„ønatur‚�fôwelve-factorápp„õesíean„Hhatádd‡9mo�Ðconcurrencyésáóim‡Áandòeliƒ2operaƒ¡…»arrayƒ¡ˆtyp‰ø�™number€çй„èe‰è�2ƒ!knowná„iˆem>Š=formƒ:U€«�Ù,Œ°distributed“·‚Ì•xaãlou€ØlatŠ1,…Ña“�olìik“R‰O‰Hblog.daviddollar.org‰a1/05/06/introduc‰�Œ¸e†(‰tF€s’¢in䉰lopment)—‡s–×–×–Ò—Øput †heam”ÊŠAspo“x™crash‡es‡à”Hh”pœ`user-in—ðaˆA�À‰Á“Ëshutd’À�/sec™)€W> <�, >IX.Äi„Èsability€L¹á—ßs¡…(�¯'¯". ¨ðº web»õ,Ÿw¥»B‡0³€dâœHˆÑœ±o­`²àn²­§xv›Øð�(¹pre�x·€u�‚any‰â�­)±Hllow€å¾Ãt‘¯¬øf©øshª³»øn”@ªxng¶¸¿¸icŽð®¨tŸmœ l½�th ˆHTTP“ÿ£¹¸„¹n¯ “A�0´A˜G„�½ˆ‚ze£p‘ l¦ø†ˆl¡#€Òli ñœ­°À»8sºØatºHpt˜onn®˜ŽÖš`€Š­ù¤xlostŸMŒ$ork¾€Œ?«¯Œ?Œ?‘Qtur¨ý‰î›0¶¹¿!‚‘ œue�Cexa‰ e»`n¾§¾¤www.rabbitmq¾”R€zMQ¹Ò‚…™ se¸•‚7‚7‚2amqp-0-9-1-quick¾˜¼º#bšèc.nack"><ªq>NACKlogicalãonclusion.

    <�, >X.Äev/prodðarity

    Histor†ály,ôhereèaveâeenóub‚Ànti‡Øgaps€°tw€Éƒßt (a„Ueríak„0ìi‚editsôoáìo‰ñdeplo‡¨a>ïf„)ápp)†W‰Óƒ@runn‚ù�‹�opáccessedâyåˆusers).Ôhese…ãmanifestén‡Hreƒ0Œàs:Ž*ul>�¸ôim�Ò�€´Á‡W‡Py÷ork ލcod�€hatôakesäays, ‰Pk€8or �Hníonthˆ‚go„ ˆÀ�?’Pƒñ„„Šˆsonne‹ê„6:‘q‹{s÷‘xe„ƒH�en�0e€Ñ‰$it‚ç†÷†ðools‚ǂǂÆñbeŠ8Žqa’ñckްkeΓ8x,ÓQLƒÐ“{OS؇xhŽØ�ò“ÿ�UŒxsÁpach…@My�è•KLinux‡ì/Œ!š€Œ “hlve-fac•(�Bi†És™è�XfŠÐ’˜ŽXf="http://www.avc.com/a_vc/2011/02/�Ðtƒhous-“{™¹.html">€ç’Ôš™”z’pk›X–™”¹˜ ˜›÷›§Ÿ#smšx è‘½Loo˜²‘’ɓꚂ†`crib•Àabove”g”`M’X�ƒ”L‚Ã:šx›‡”2�&Ÿê�úit™,˜˜hou‘P”=ju˜m‹Àt•Hlater““׃ǟ7“¸ho“Øoƒ¾¡°closel“ˆnvo�¨d›9žË ‰„€¤Éwatch€ƒ¢i£Pi˜øœˆ¥—˜_ˆ•eˆŒ¡§ÿŒ§¯§¯§¯“G“ASumm«hzŽåŒ œÃaž8©( Óp>Tra¦P¯ °¤È€µ”ç”ã�u¡¹©G¦Ñs‚LW ‰‚¬HŒ©ƒ C�Úuthož�vs¢{�ü�.Diff¬ð«ˆpeop®„êSa¥0€—�Iev‚)°'¨ˆvi¦¸±I‚wverg—:‡"A±?±?ƒ%­Ç­Ç­ÁB ¨¯q«`vi¬¸¡´Puch³¹®D'¨yŠ€as¥queue�šystem¨êc ³žÐon¬£¢X´A·¸¯t¦Xsémpor´‘.Íany–ngu»0–øˆñ³Àbrº¬¤p„8·Øplify±´i²ùb…υɃ边dµÑadap˜À�¸€h¶ d‹ætypƒj‡¦.Óo±@exaƒP¯Ø˜Y³ ²’)ºHlow¯³(’²€8head€pr¾Èth>T‚˜DŒƒHƒÙ€÷€òRuby/Rail‚¹��öA¼veRecord‚ƒ">®¤Postgre¯±ƒ‹…B„Ï„Ï>Q�‘„·…§">Py˜�n/Dj�(o…φ¿">Celeˆê†¯†¯abbitMQ,Âean¶lkd,Òedi‡4„¯‰w‚¼µI‰_ŠO‰_‰_‹O‰_Sup•I::‚WŒŸ‰�emory,šÒ˜}€ ˜z‹4ŽüŽÃ/‘üŸ½Es“è±s�¼P‹à³(¹He¥`¬¾�Xhºh€1—ï�³•ti™èoc§¡ots¾­a …XeŸAi¹)¿¡rob²IšW‚kwill¹¿‰°¸·.Æ´™C,„Ô‘#ƒÓ±àºA’°Çº±;¶…»XžrmŠæ¢,³B¼Ï¼ÍЦ³G³D¦ë½4T¼Ñ®§¹x»7resisµ�½ñu©¸¢A‡ Ç¢—¨\°µ7µ7·JH€\¢â�ç�às�èhelp.ubuntu�ê•0munity/AptGet/Howto">½¸-get‚I.Ál¾ n–h©h«8declar€z¤±v’Po�²tool‰o…Ç…Ãwww.ƒ€€�À¸ÀŒopscode.com/chef/">C€8ánd P€Š�ª‚Hbined÷ithìight-we€9öirtualån€PonmentsóuchásƒOƒLvagrantupƒV€ƒ„Ëllowäevelopersôoòunìoc‚ÿ‚ûwhiƒcloselyápproximate €Pduction„�„ˆ.Ôhe†0stïfénstƒpingˆrus€QtheseóystemsésƒÀw‡Ápar‡À„`�âenefi‚*…H/ƒq �it„0ŠÀcontinuous†@ployˆq.

    Adapt†Ädiffer‰Xâack„Iservices ƒxótill„Àeful,ƒ¨ca€`…yíak‡0orƒ@… oîew‚'‚%relatiŠHy„ðinlesˆBut‹!„ÔsˆI†™‰ð (‹¶Ž?Ž8,„Hag‰8,ŠÇn)óhouldˆ`‰×óam…yp‚€“v�øŒ‹`ea�Pƒ\‡g‡cˆÓ/se�Š€W> <�, >XI.Ìogs‚k€H’yvide—(sibil�Ain�fhavior’‘a•Qn’Špp.ÉnŽ‚er-bas™°˜ç˜àŽ:�1œðmon–w’ten—‰aæile •ødisk (a "…€€¡");âŽth”à”ø�Òa‹ utpŽÐfor˜“eˆy’R•©ŸwŸsadam.heroku¡past/2011/4/1/ˆù_— _ˆÔ_not_„©s¢0‰s¢B‡±ggreg›¸d,ôime-ord–°‡€ŠÙs¡°llŽà¡¸fromš …t‹´‰Ú—P‰íž@˜s˜1¥0˜ß‘|�2�ð�airòaw‡º‡Kypi¡@ yôexˆ�¥‹one�|—ŸÈe (t–0ghœtra›Ñ…*excep¢s›Xyóp‹multipŒ¸�Ñs)„D�ðeîo�ˆx¨Èbe™H���enˆ��if¢+ ± ¨¥a¢Á£Á�B›êŽa§€�ˆng¡e<”¸�8>Aôwelve-fact“X�in©r£Ycer…0it¨(f¬Ër�h„s�x™ø§z¬ˆ‹Ç—p¤�ƒɘž{�8á”8mp“ o”¢£˜o†yman‚Y”LªhIªea�°žò�÷�ò�Û„Ê›'› ,õnbu§Â‘�o <µ!>F€‚¨™)½âavail‡‚Š™­rpurpose¬íŠ8³ï”y‹á®P¼Qc®�ºÈ�¿°‹,¢±watch²pvi³xea¤ »¡ƒp¨™§±•Ó.Íos¶È¹if¨ ntly˜»—ôƒ$s·ù³šŠindex�ퟀlys™�yŸHm Ч²W²Qwww.splunk²J">S€j±…’açen¦Øl-ˆäata†Hre«ðs®êƒ�·µg“Ðe.a xhe.org´Hadoop/H€È´A”µ…S¾Èl«™–q´à¿ppow¯˜²yf�X¾-—q¾Hr£Pµ—£Ÿ¾¼«9¶¹,¿ clud¾ø:»ul>

  • F‰ µ‚ ‹Q·½¢ôº¹¼€�H�iLarge-sµe„Ðaph±Z£°r±h•¿ŽÈquœÀ‘¨µP¤P�ø)‚7A¢ð³°‚(r…³cc» ¹Ù­˜u¹H-dežè¼he©Ÿc˜Ÿ“"�Ñ÷he¨qu�øˆ‰¾perrošƒÇ¸be„èa ³X“H»Ére±€ld„¥/ˆa/sŠ)on€W> XII.Ád«È²-es¶°Ðm¨Ê š½½jrra‰R…&¾ “§Ù‹à«2do±w�(gularâ—Y¸Ñ¤îh¬àl½Qweb�ž¢¾yº�» Separ¯°�鶆ºè¶‰oftŽwishƒ¤‡uˆ‚�¸�È‘A½â—@enan©@ˆë¤»±$©t–Ç–ÀŠÈ¾‚�aba¯�mi•�±;(e.g.½×½×½×½Ñ®#.py¢ncdb¾'¾&¼)Django,‚‡‚‡‚‡‚�rak¾°b:„SŸÈ‚‚Ò«Ðs™w†N–·o´°(alsoënow«x–ɱ7¦“en.wikipedia£Š€q/Rµ8-e¸ -pr¡¸_l¤”EPL±šshell)»)�ع€biŒry½Àd»¢·H£9�×¼0del¹¨gš¨­`¿álžÉ‹�®$lˆøu¸h²rovi‚pa ƒ±ºY‘0�2¿y�rprº±0ithƒ€€ À¸Á”¸À’outányárguments (e.g. python<€ Runningïne-ti†hscripŠè…ùitted‡8toôh†èpp'sòepo‹ß‹ß‹ß‹ßphp‚�/fix_bad_records.€àŒ§ŠÏ„Ü/ul>

    O„¸offádm‹pproces‹ishouldâeòunŒIa€0d�°icalånviron‘1ás…âregula�€a fil† s=X€ >long-‚`ˆjƒF,—é“äatabŸ`íigŸ‰‘”D…ð¤G¤G¤Gƒ�ƒ‹rakeäb:‚S�w¤ï.Ìikewis‡¨aЦ"˜ ƒÐm’|Virtual—p„GŽ�Pv‹Ðor�à¨ï¨ï¨ïˆ1in/©©£÷˜­bo‘p 9Tornado‹ùserver•r¬Ù¬_¬_¬_¬X¨ˆage.py¬w¬wŸ'Ÿ"“Nwelve-®¸t­€stžÈgly¯8vorsìangu‚ s÷hich¡v H¬HREPL¡@e’ˆ±Ùž4boxŠ€¬¸�{mŒAit �Py—Ñ¢q¨Y£¡¨T.É�élo¢Ñ–¨lo¬hdevelope„invoŽh�µ¥W¥S•@‘Ði§°›±„q°Í¢…Qª×check·9�{oryƒä§Àduc�„„c§à” ssh¶‘�8Œ˜remo´/—2uŸ"m›ðanism‰]ª0‡Ø¡q†ë¯�wªW¢�ˆûsu‹8„¢¬a {/s†ø¢€W> ‚€ÀÀ‡INDXÀôýéÿÿÿÿÀTAGX, @18IDXTìINDXÀ ÿÿÿÿÿÿÿÿ00oõÚ€€�Œ01Çÿ–�€��02&ÆÛ¢�€ŽŽ03>¡ù³�€��04[š©¿�€��05rÃÜÔ�€‘‘06 Ÿ£ë�€’’07ÂÉù�€““081‹é‹�€””09GôÏ��€••0A`Ã%�¯�€––0BÒÂÂ�€——0C”»Ë�€˜˜0DóÓà‚�0E&÷ª—‚‚0F>Í̓10[Ïôã‚„11rú¥�‚…12 Íõ·‚†13ô—ꂇ141½·‹‚ˆ15H¦�«‚‰16`ö$Ü炊17û™¨‚‹18ɆĂŒIDXTÀÍÚçô*9HWfu��™¥±¾ËØåòÿ•The Twelve-Factor App‹I. Codebase�II. Dependencies‹III. Config”IV. Backing Services–V. Build, release, run�VI. Processes‘VII. Port binding‘VIII. Concurrency‘IX. Disposability’X. Dev/prod parityˆXI. Logs”XII. Admin processes¶One codebase tracked in revision control, many deploys«Explicitly declare and isolate dependenciesŸStore config in the environment¬Treat backing services as attached resources¦Strictly separate build and run stages²Execute the app as one or more stateless processes Export services via port bindingŸScale out via the process model»Maximize robustness with fast startup and graceful shutdownÀKeep development, staging, and production as similar as possible›Treat logs as event streams¯Run admin/management tasks as one-off processesÿØÿàJFIFHHÿÛC   %# , #&')*)-0-(0%()(ÿÛC   (((((((((((((((((((((((((((((((((((((((((((((((((((ÿÀE†"ÿÄ ÿĵ}!1AQa"q2�‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2�B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ú¦Š( ¼·Çÿ|à�Môë뛫íB3‰`°ŒHb>ŒY•AöÎk²ø…ªÍ¡xÄ­·úû; §�ýåBGë^Kû)ø;GmüIwgÞ¯ªM3És:uU‘�('§Ý$úæ€;ï†ßü-ñ ˃u*^Ä»ÞÎé<¹Bú€ } Åw•ç?tñ'Oñ–œÒé—¶¼¼j±Ç;r2ÃÁ ã­r~*ñß‹|WñBóÀ¿n-4Á¦Ç¾ÿU¸ŒJTñ•U Ž Ó“ž€P¹Ñ^¡x߯> ø™¦x;â-ݦ­i¬ Xj°B!mùÀVPë�Œq�rj?øßÆ^0ø±{à�‡·Öº<T{ﵡY˜‘Œ€¬À,;òr(Ñõ¯ˆšN‘ñGð]ͽójš¤>|2ƈaUùøbX0?»nŠzŠì«å O‰£ýª<iã)-.u Kcw–ɱn¢Û;+•þË@ã+]f¡ãïøïâ¹ ø/[Ó<3¤hŽažþéY'�0ªüc*߀ÎyÅ}Çj’{s\oÂÿˆzOÄ�ïRÐíï ‚ÚàÛ:Þ"+ ­‘µ˜c ;×ð§â·?�uxÒâÆ÷V³‡íÚ�–\Ç€p@à0ë4Ž23ôü{µá >.júçÁ¯ø“V¶‚çTÐüÕýÐÚ³íŒ2’N¼ãÒ¹ø»â�‹t‹MwÃþ2ðýõô—eðóÅF$ÜG,pÝ9À9Áà“Å}GExÿÆ_‰:Ç…âðæƒ¢ÛÙGâ½tªžLÁi’6N7 Ä€O`N;W%¬xßÇ? /´›ÿø—Hñ^ƒy:ÛÜ­¼qÅ-³NWhäúcŒŠú6ŠDu‘ÐåXdQK@Q@Q@Q@Q@Q@Q@Q@g޾'xOÀ·ÖÖž'ÔÚÎââ3,J-å—rçÊ)‘XZÇ¿†÷÷)^$�ŽžÚh—ñf@ç^uñþÎÛQý þÙßÛÅsi?—°Ê�‘ÔÌr<^£âOƒ>Öô›‹1á½6ÊYˆî,àX^6Ç ã8=�èQH“D’Âë$n+©È`z{Šu|½ð3âhðwÁŸI®.ãðýçÙ­c݆“Ìû±ƒØn }†}+ ºñïÅÝ+ÃcÆ:§‡t'ðøAq%„r8ºŠÎârGç¹ÇZúŠð�Œ?¯ôø?Ä^ŽÚkmi˜²\Ä]‚€§hà 0$ƒÖªø¯â?ÅÙÛxŸÄ^Ñá–EYÛÌÍsn­Ó{tÏМŠõïøÛAðMµ¥Ç‰/ZÒ+¹¼ˆH…äÜøÎ>Pqø×G_5þÕÚ�¶µà?j–,ZÖòþ9â'®Ö�#?�w~&êšG‹tïx#K‡SñEêy¬g}°Û'8-޼zŒ¨ Y¢¼2‰¾2ð_‹t�⦙¥­Ž¬þU¾§¦3yhù ž¤g§\óÍoëÞ<ÖtŽz/†5´>Öm‹ZÊ#"E˜ –Î#ÓøÅz¥å>>Ö®þ?Aà½;C¤ZÙý£Q•ã- ;K¬ÞŒt=Mr“|Sñ׋‡ž+ª Š( Š(  ZÞ›±£ßi·c6÷p¼öX�|Ãá_xÃà4^×¼/u­h‹;Éc{jHRäàí#®$õÍ}WE|ãà ¼oñCâ­—‹u+[ÿx_LM±ZùŽŸiêBž›òpXãS5huo„?5ÏI¢ßj¾×�ù³Y&÷·rCGûÀõÀ õ⾑¢€>l�õOŒÿ<1®Yè·úg…¼:þx¹¾�Ëiä z’¨0 À“Î)š»ê>:ë^(¼Ñïõ/ x‚2 öQïh\•bõOŒƒÅ}-E|¦ºæ§âÿÚÁºÜú£¦i¦Ü¥ŸÚâ*ïY°ì?‡,[Óµ�âé ø›â)þ!ø;R×¼;©Ü5Í•ý‹I˜K31R”ó`‚sÀ#ƒ_bQ@ðCMðU߉nu? ü?ÖôQm¬:�ì²lpÃv¼‡Ÿ ?…yÇìëã»ß‡^Õ¿¶ü5¬Üh·7e£º´·Ücœ"åN0Ûƒìzר”PÎÿ4Ok^#ñßÄ9¬IºÖ­Þ * �†ÏY�ì F3Žyí^iàUÑl õ·�<â/xù®`¸G–9I<“€3Ôá³_iÑ@/~Î+¯h¿ xšãÁž×uí6^èöâcOYÊðïÞå;‰ ò’9Ï>µGL¶øQ¬j6v:/Â�]ÜÊÁfS$è!÷É—|W×TP �b‚8ÑJ¢(P¤ç”ú( Š( Š( Š( Š( Š( Š( Š( —¿i]j×ß>ëâV´±�n%ÎUf$à9ükoZý¨¼9&Ÿ,~Ò5›ÍQÔ¬1Ë¢î#‚Hf'žÀW¿]XÚ]°k«X'eHÃ?dm�¼�ಶ‰ÇFH•Oæ|¦ßÑe<0˃Àa?­müF–†ÿ´%·�5+;‹� ê6‚Ö{ˆP¿ÙØ S‘ÿSî ÇJú"æÖÞéT\ÁÁNTH�°}FjI#IQ’DWFà« ƒ@.|Vñ=ŸÆïøcÃŽæúÞÞì]^jŽ8W¡ûÀ'·85ÝþÔÚ\ãÂ:WŠtôÍÿ‡5¯‡Q`ðÜþì–Ö¶öªVÖ¡SÉ P*ó�žñߌ!:†¯4{?^@©{%Æÿ´nÞKÀ#i=^höh‚MzãÅ¿o!)>»|ÑÛê�GÐgë�ÿ¯-ñ�ÇÃíwÆ:ùñ݆«à?Ã7Éqh^u¹ãï�>£‚s_SøÃVÞðŽ— Ù¹’+(D~a.ÝY±îI5¯sektTÜÛA1^†HÃcó ý”u_ø[½Õõî… È�Iº½R$‘íÝrq�œdà’3Å{­"*¢…E  `0-QEQEQ^ñ'ã>¹á߈²øOÃ~}rê+t˜ùr1vÈÜpª§€æ€=Šùãþ/ÄÏú$š—ýó7ÿ£þ/ÄÏú$š—ýó7ÿ ¡è¯ž?árüLÿ¢I©ß3ñº?árüLÿ¢I©ß3ñºúŠùãþ/ÄÏú$š—ýó7ÿ£þ/ÄÏú$š—ýó7ÿ ¡è¯ž?árüLÿ¢I©ß3ñº?árüLÿ¢I©ß3ñºúŠùãþ/ÄÏú$š—ýó7ÿ£þ/ÄÏú$š—ýó7ÿ ¡è¯ž?árüLÿ¢I©ß3ñº?árüLÿ¢I©ß3ñºúŠùãþ/ÄÏú$š—ýó7ÿ£þ/ÄÏú$š—ýó7ÿ ¡è¯ž?árüLÿ¢I©ß3ñº‚ÿã�ÄM>Ê{Ëï…wÖö°!’Y¥ó•Q@É$”à ú:Šå>ø´øëÀz_ˆšÐYµà“t÷…)#!ÁÀÈùsø×W@Q@Q@Q@Q@Q@‹ãmløoÂ:Æ´°‰ÚÂÖK�m¡Ê© gµx&‰ñ·âf»¦Å¨hÿE匹òæ„ÈÊØ88?PhéZ+ç�øZß?è–ËùIGü-o‹ŸôKeü¤ ¡è¯ž?ák|\ÿ¢[/å%ðµ¾.Ñ-—ò’€>‡¢¾xÿ…­ñsþ‰l¿””ÂÖø¹ÿD¶_ÊJúŠùãþ·ÅÏú%²þRQÿ [âçýÙ)(èz+ç�øZß?è–ËùIGü-o‹ŸôKeü¤ ¡è¯ž?ák|\ÿ¢[/å%ðµ¾.Ñ-—ò’€>‡¢¾xÿ…­ñsþ‰l¿”•›¯üuø�á»}¯ü<[-á ³4ˆ¤žƒ>¼úfŠ«¤^ GJ²½T(·0¤ÁIÎÝÊ?Z(ÕRHÁ#f=@ _<ÛÿÉç\ÿØ(襬ÍãÇ�üF÷’xgÀ1j–ó‹ÄîÛO`HïŠåã¿ø¢Ÿdñàø{roÛìßeÚÞXBç=sÅ}ƒE|ñÿ WâïýöÿÈŸãGü-_‹¿ôKÛÿ"�}E|ñÿ WâïýöÿÈŸãGü-_‹¿ôKÛÿ"�}E|ñÿ WâïýöÿÈŸãGü-_‹¿ôKÛÿ"�}E|ñÿ WâïýöÿÈŸãGü-_‹¿ôKÛÿ"�}E|ñÿ WâïýöÿÈŸãGü-_‹¿ôKÛÿ"�}E|ñÿ WâïýöÿÈŸãGü-_‹¿ôKÛÿ"�}E|ñÿ WâïýöÿÈŸãGü-_‹¿ôKÛÿ"�}\oÆù$¾0ÿ°UÇþ‹5åºÆÏ¯�¼?áïø2-%ui„HÌq¸ÁÁÅz—Æù$¾0ÿ°UÇþ‹4Î~ËŸòC<7ÿo?úQ-z­yWì¹ÿ$3Ãöóÿ¥תÐEPEPEPEPEPñŸþI?‹ì?þ€kœý—ä‰hY¿ôk×GñŸþI?‹ì?þ€kœý—ä‰hY¿ôkЫQEQEQEQEQEQEW†þØŸòHÇýÃüš½Ê¼7öÄÿ’F?ëþäÔë~ÿ‘GDÿ¯?ôZÑGƒ¿äQÑ?ëÆý´P½GsÿÒÿ¸•p¾ ÉðÛÁ±ëPØ-ü²Ý¥ªÄòlPYY·ƒÙç^f>3|J¸·Ì nÚ9*ÀÊAp~íMûȳâ�û ÿìµô5|uð�]ø‰ðãMÔ­-~ê7Âöçí¤IiÆ1šïár|Lÿ¢UyùËÿÄÐÑWÎÿð¹>&Ñ*¼üåÿâhÿ…Éñ3þ‰Uçç/ÿ@DQ_;ÿÂäø™ÿDªóó—ÿ‰£þ'ÄÏú%WŸœ¿üM}E|ïÿ “âgý«ÏÎ_þ&�ø\Ÿ?è•^~rÿñ4ôEó¿ü.O‰ŸôJ¯?9øš?ár|Lÿ¢UyùËÿÄÐÑWÎÿð¹>&Ñ*¼üåÿâhÿ…Éñ3þ‰Uçç/ÿ@DQ_;ÿÂäø™ÿDªóó—ÿ‰£þ'ÄÏú%WŸœ¿üM}E|ïÿ “âgý«ÏÎ_þ&º�ƒ?µ/x›YеÏ�ûNˆHÉæ– îÁVR‘@ׯïù8o…_õÔèÑ^§ñŸþI/Œ?ìqÿ¢ÍygÆïù8o…_õÔèÑ^§ñŸþI/Œ?ìqÿ¢ÍsŸ²çü�Ï ÿÛÏþ”K^«^Uû.É ðßý¼ÿéDµê´QEQEQEQEQ\·Š¾ øOÂ�¿·µëYGü±ó7Ëÿ|.[ô¯9¶ý ´ïø¢ËÃþÑï5kÛ§ 'Ÿ÷Æ¿Äç«£$ð>´Þ|gÿ’OâßûÏÿ ç?eßù"ZÖoýõÑ|fÏü*_nƳ&Î?Ü5ÎþË¿òD´¬ßú5èÕ©‚�˜�Û“K^û^˜ÇÃ�Îì‘ rß{) …Ù.HÇz÷êA!†Sž”�Ðç §žkå=At›-oâu—€îo ¿…$žèC9š»#ƒ¸“óÉ<õÎzT:Ÿ‡ôýá_˸Ò[M#]–Í|Ix²¾d‡ª»gåA¹†PÖa�]À‚¾¹¬ñv’¾4O Ÿû]ì¾ÞaÙäî+�Ý3�x¯–(_ÁãØ&¸¹o ZËqÈÑï}±g FNlü׫~Ê÷wŸ4–ºšIš9g�YÛq $l ú õºðßÛþIÿ¯ø“W¹W†þØŸòHÇýÃüš€=oÁßò(èŸõãþ‹Z(ðwüŠ:'ýxÁÿ¢ÖŠñÏÛCþIE�ý…áÿÑSWµø{þ@oý{Eÿ  ñOÛCþIE�ý…áÿÑSWµø{þ@oý{Eÿ  ¿EPEPEPEPEPEPEP_<|!ÿ“™ø™þïþεô=|ñð‡þNgâgû¿û:о7ÉÃ|*ÿ®£ÿFŠõ?ŒÿòI|aÿ`«�ýkË>7ÉÃ|*ÿ®£ÿFŠõ?ŒÿòI|aÿ`«�ýhœý—?ä†xoþÞô¢ZõZò¯ÙsþHg†ÿíçÿJ%¯U Š( Š( Š( ¼+ö³±ÖÀé¬hþ!¹Ó¡´`—6iqå-ʱÀ#%‡¦yô®¿â׎áÝ¡ŠáþݭȹƒN„üìOBçøWëÉì y�…þx§â®±Š>.M-¾–§}žˆ„¦ôÈpãǾ(äbÌY‰,y$õ5÷ì³ðÏþ �wW·Ù®j¨ûÐ[œ_b~ñüj̇ötÓ­þ1ìÃ#ÂH¿j$ä¬ã¤xþæ~oÃm} 8Æ|gÿ’OâßûÏÿ ç?eßù"ZÖoýõÑügÿ’OâßûÏÿ ç?eßù"ZÖoýôêÕÅ|Wð/ü'úŸ§h}ƒìš„WÞg“æïØmÆáŒîëíÒ»Z(> I‚ÖêÚ .Æ;k¬›ˆ’ÝMž»ÀlûÔÇN±:pÓÍ�·ØÅ·”¾PAÑvãöÅZ¢€)ÛiZu®œl-l-!± ©¶ŽXÈ=FÐ1ÍAcáýO�&°ÒtûY’3 I ²#,dä  p¹9ÇJÓ¢€2"ð΃ #C¢iq²L.­¤`¬££Ž8o~µf=L‹S}J=:É5k¥�D¬= ã'ó«ÔPCxgAhg…´M,Å<‚iPÚG¶Ipì1Ëry<óVoô}3Q¸‚}CN³ºž˜¤žvŒÿ²HÈü*õQ4Ûõoã²¶[é�G%ÊÄ¢GQŒ)ldŽÔí7O²Òí×L³·³¶RH†Þ%�<’*ÍW†þØŸòHÇýÃüš½Ê¼7öÄÿ’F?ëþäÔë~ÿ‘GDÿ¯?ôZÑGƒ¿äQÑ?ëÆý´PŽ~ÚòJ,ì/þŠš½¯ÃßòÓëÚ/ýWŠ~ÚòJ,ì/þŠš½¯ÃßòÓëÚ/ýPñ›À:‡�ô{ =/^“E’Ús+JŠÍ¼Æß•–¼/^ø%uá÷…5Ï‹Ñéí0&1r^2àuÆf稯­«Â¿i˜<æh7?†²[GkýœW§Ê[v P”ÿµ°ÿ¢å§ÿßãÿǨÿ…kaÿEËOÿ¿Çÿ�V.~ÿwÆ?šQŸ€Ýñ�攵ÿ ÖÃþ‹–Ÿÿ�ÿ£þ­‡ý-?þÿþ=X¹øýßþiF~ÿwÆ?šP§|%Ñ4Oø´k—Ž/W€@ðý™î6Œ¶0Ù2Æ=+Ú¿ádø+þ†½ÿükæÏ‡¾ ø/ãÏ�C)f&›3Ȉ»WçžkÓÿá˜|ýígÿ×ÿˆ F�â7ƒ$‘R?èÌìBª‹´$“Û­uuâV¿³G€í®až6Ö7Äá×7C#økÛh¢Š(¢Š(¯ž>ÿÉÌüLÿwÿgZú¾xøCÿ'3ñ3ýßý�hß¿äá¾×Qÿ£EzŸÆù$¾0ÿ°UÇþ‹5埿äá¾×Qÿ£EzŸÆù$¾0ÿ°UÇþ‹4Î~ËŸòC<7ÿo?úQ-z­yWì¹ÿ$3Ãöóÿ¥תÐEPE‘â¯éÑåÕ5ûèl¬ãzCËî¨êÌ}k;*#;°UQ’IÀ¼â?Æ›ÝOX>øGnumrS²Kø”Ôt{Ö‘m¯ {y3† Ã�zð¥ý•¼4£ âx@Ñý’€>„ócÿž‰ùŠ<Øÿç¢~b¾}ÿ†Xðßý zÿý÷ÿGü2džÿèc×ÿï¸ÿøšú Í�þz'æ(ócÿž‰ùŠù÷þcÃô1ëÿ÷ÜüMðËÿ¡�_ÿ¾ãÿâhè/6?ù蟘£Í�þz'æ+çßøe� ÿÐǯÿßqÿñ4Ã,xoþ†=þû�ÿ‰  ¼Øÿç¢~b�6?ù蟘¯Ÿá–<7ÿC¿ÿ}ÇÿÄÑÿ ±á¿úõÿûî?þ&€>‚ócÿž‰ùŠ<Øÿç¢~b¾}ÿ†Xðßý zÿý÷ÿGü2džÿèc×ÿï¸ÿøšú Í�þz'æ(ócÿž‰ùŠù÷þcÃô1ëÿ÷ÜüMðËÿ¡�_ÿ¾ãÿâhè/6?ù蟘¯ý°�á ÊOÛáè}š³¿á–<7ÿC¿ÿ}ÇÿÄÒÙ[Ã-�'ˆ5ç\ä‚ÑsÿŽP·ø;þEþ¼`ÿÑkEhiö‘XX[Z[çÉ·�bLœ�ªü៶‡ü’‹û Ãÿ¢¦¯kð÷ü€4ßúö‹ÿ@⟶‡ü’‹û Ãÿ¢¦¯kð÷ü€4ßúö‹ÿ@~²õÏèºøˆkºFŸ©rc–É6ÌõÆàqœ Ô¢€>lø·ªiÞ ñgöV‹ðƒDÖ-~Γ}¥4 Fæ'+òÆG�qð°þˆF‘ÿ‚“ÿÆ«×>,Ãñ�ü\Çáì�.‡ä&µ¸>g;¾ÿ>•Æ}›ö’ÿžÖ¿÷Ý¥rßð°þˆF‘ÿ‚“ÿƨÿ…€ßôB4�üŸþ5]OÙ¿i/ùíkÿ}ÚQöoÚKþ{Zÿßv”‡£üWÔô[ϵèßìì.¶”ó­t÷‰öž£rÆ+wþÇôMî¿ïÜÿüE'Ù¿i/ùíkÿ}ÚR‹oÚG#3ZãýûJ?á¡|qÿDÞëþýÏÿÄQÿ ã�ú&÷_÷îþ"¾˜³ó~ÉÚ×ì_3ýìsúÔ´óü4/Ž?è›Ýß¹ÿøŠèþügñ_‰¼c§i§‚.4ÛK–*÷M G…'<¨«Þ¨ Š( ¾xøCÿ'3ñ3ýßý�kèzùãáüœÏÄÏ÷öu |nÿ“†øUÿ]Gþ�êÿä’øÃþÁWú,×–|nÿ“†øUÿ]Gþ�êÿä’øÃþÁWú,Ð9û.É ðßý¼ÿéDµêµå_²çü�Ï ÿÛÏþ”K^«@Ù"�¤‘•ff8¤šðˆ?õ-wYüµmSV|¤Ú’.è  Bxãûçå³@¿Å¿‹º'ÃÛ_³±†¿(Ät-—Éè_uSØW›øWáw‰~(k1x«âüóEe÷ìôHÉ@«ÔÀ¾ßx÷"»/„Ÿ,<)t5ïÎu¿L|É.§;Ò=vg’ßí}1^Á@iöVÚu”6vñ[Z¡#Š% ¨£ TôQ@Q@Q@§Åmjóÿ|C«éŽ©{ihòBÌ»‚·cŽõá o�-ð͆»¥ø›J[+Ä/™Q_ŠòG¸=ëÙ¾<ÿÉñoýx?ôª_³‡ü‘? × ?ôkÐÿ÷í ÿC>‰ÿŽñª?áý¡ègÑ?ñÏþ5_DQ@;ÿÂ=ûBÿÐÏ¢ãŸüj�øG¿h_úôOüsÿ�WÑPÎÿð�~пô3èŸøçÿ£þïÚþ†}ÿÿãUôEó¿ü#ß´/ý ú'þ9ÿƨÿ„{ö…ÿ¡ŸDÿÇ?øÕ}E|ïÿ÷í ÿC>‰ÿŽñª?áý¡ègÑ?ñÏþ5_DQ@;ÿÂ=ûBÿÐÏ¢ãŸüj�øG¿h_úôOüsÿ�WÑPÎÿð�~пô3èŸøçÿ®Sâ.½ñ·áΑm«ëþ"Ó&µ’å`T†4rX‚Ü�,q…=ëë:ùÿöÔÿ’e¥ÿØV?ý-{Ýœ†kH%ltV8õ#4Tzgüƒm?ëŠ!Exwí¡ÿ$¢ÇþÂðÿè©«Úü=ÿ 7þ½¢ÿÐx§í¡ÿ$¢ÇþÂðÿè©«Úü=ÿ 7þ½¢ÿÐCâhÞ·Š}{S³Ó¡•¶#ÜÊ# ØÎ=ëÅ>5ÉáˆÑéKcñ3GÑÍ“HX¥Â·™»o£Ž˜ýkÔ¾#ü>Ñ>!iö¶^"[“ ´¦Xü‰vÄc“ƒÚ¸øf_‡ßóÏUÿÀ¿þÆ€<×Ãßÿá$Ši4Š‘j1ÂBÈÖÊÒ' 8—ŠúsÁ$žðŽ“£Ovo%²·XZà‚ „wÁ'ùÖOÃo‡:û[Û­ÐŽñÖI|ù|Õ p1Ö»(¢Š(¢Š(¢Š(¢Š(¢Š+ç�„?òs??ÝÿÙÖ¾‡¯ž>ÿÉÌüLÿwÿgZwÆïù8o…_õÔèÑ^§ñŸþI/Œ?ìqÿ¢ÍygÆïù8o…_õÔèÑ^§ñŸþI/Œ?ìqÿ¢ÍsŸ²çü�Ï ÿÛÏþ”K]ç‹|O£øGE›Uñìv–qŽ­Ë9þꎬO ®ö\ÿ’á¿ûyÿÒ‰kæÿÚÆMe~-Ê5C °Fö #™"òð!HÀù�Ü9ä{Šô+�WÆŸ´%óÙh©7‡<íšåó¾çŽ1¸ÿ²>QÜž+Þ¾øBðŠšv�h±ä5à Ë;yÛút«Âü+ñÆOØÝxjO jÚKF>Ïö%ShìÉŒtÇ­QãO�6ý?Àº}ÐóÀƒŸûæV ¢(¯�Ûã7Ä«!�KáUöÑÕ£�ÿ ŒþÒw¶§n©ð÷X�‡R$?Ö1@FQ_>ÛþÔž\ GC×-O|F��Í…kÚ~ÒÿgÇ›q©ÛgþzÙ“�ûäšöº+Ì,þ=|6ºÆÏÅô–Þdþi^=û@ühšÏÄþ»øsâXå†+y À·a$NK ,ˆx<üŒñ@XQ_4|>ý©4ëï�ôö°”àÛ@dˆŸVO¼£éº¾…Ð5Ý+Ä:z_hz…µý«t’ ¡ÇCìh•øóÿ$wÅ¿õàÿÒ©~ÎòDü-ÿ\$ÿѯW~<ÿÉñoýx?ôª_³‡ü‘? × ?ôkФÑEQEq×Å_èºäšF§®C ìN±Ê<©8˜ô RŠ~¤PoEyµ‡ÅíëâF«á7ó-Í„d›¹QÄnê¬ò íªª“¹ˆ¶xη‡>'øCÄz™Óô�ad»òÚUY`’"/VFu€ðOÐgEp_| }iei¯G5ÍÝÚÙ[ªÁ.%•ŽÑ´íÁ\ñ»îûÕ-'âÞ‡™u{âmFÂÊ!¬Ë¤C%¸�к8rÑ®Öç“÷G÷¨Ó(®/Jø£àÍSNÕo­5È>Ï¥€×†TxŒ@ð WPH'�€riÞø�áêðiz­ö›ù 7)ÙåC僂NåúH ô4ÙQEWÏÿ¶§ü“-/þ±ÿè©kè ùÿöÔÿ’e¥ÿØV?ý-{¾™ÿ ÛOúâŸÈQF™ÿ ÛOúâŸÈQ@ûhÉ(±ÿ°¼?ú*jö¿ÈMÿ¯h¿ô^)ûhÉ(±ÿ°¼?ú*jö¿ÈMÿ¯h¿ô@_ÆojÞÒ,.ôMõ¹n'14ÿ¢oqùÍÿÄWÓÕæcø�ñé_ð¬&Š'O¶y‚‘òìÿXû](Ëá¢|iÿDÞãó›ÿˆ£þ'ÆŸôMî?9¿øŠ_³þÒŸóûiÿ|Ùñ4}Ÿö”ÿŸÛOûæËÿ‰ ÿ†‰ñ§ý{�Îoþ"ºünñO‰ð¯ìËãm[dš»Yh°7$M'› ÿ€¦GæÂ½Çá¯ì÷¦ø3P‹Qokß!ýO³FÞÌ%‡¶kÛè  ãÏü‘ßÿ׃ÿJ§û8Éð·ýp“ÿF½]øóÿ$wÅ¿õàÿÒ©~ÎòDü-ÿ\$ÿѯ@“EP_1|Cð߉4Ïk—~ÑüQeª_ÝG/î–;­.ÿ-’òîâlϵ}‰PÞÚÁ}g=¥ä)=´èÑ˃*êF#¸"€>R–}A,þ 躇†ï4É´�rÞÞK™Â™ƒ®LD]H‹3ëV,|â¶ÒbŸ@ÔJ/ÄG¾•^Ù°-O—ûÓÇú¾ÍÓƒ^åáï… ðö±©¥hËä04—ʰ“Ô¢»_À îh匞×õ¯|@¹Óôé–Úk;)`–Eòâ»hü²Ñ«œ)n Æz­tžÕfÖ¿i}"ö]ïDφÙE½Ú*J@r2Ê9QžHPxÍ{‡‰¼?¥xŸH—K׬¢½±”‚ÑIÓ#¡rõ‘àÿ‡¾ð}Ü÷z›ä]Ì‚7žI¤šBŸÝ #1�Àô ®Š( ¾ýµ?ä™iö�ÿEK_@WÏÿ¶§ü“-/þ±ÿè©hÝôÏùÚ×þBŠ4ÏùÚ×þBŠðïÛCþIE�ý…áÿÑSWµø{þ@oý{Eÿ  ñOÛCþIE�ý…áÿÑSWµø{þ@oý{Eÿ  ¿^-ûHø{OסІ¥ã;_ ˆZ]†w+çä.qÈé�Ö»�‰¿ô‡Z]­þ½ÛÃs7’‚Ú0çv ç$q�^ ñâßÂOˆIb¾$°ñ¢Ì¹‹ÉU�±œáùè(�ÿ…wáïú-:_ýþ?ü]ð®ü=ÿE§Kÿ¿Çÿ‹®ëáÃÿ-õ ´ ;\�lY_´Ü$°$cÿt×qÿ ×ðëþ|µü zðßøW~ÿ¢Ó¥ÿßãÿÅÑÿ ïÃßôZt¿ûüøº÷/øf¿‡_óå¨àcÑÿ ×ðëþ|µü zðßøW~ÿ¢Ó¥ÿßãÿÅÑÿ ïÃßôZt¿ûüøº÷/øf¿‡_óå¨àcÑÿ ×ðëþ|µü zðßøW~ÿ¢Ó¥ÿßãÿÅ×¼|/ñ‚<à»ïÇÚ>£5¹rnäÛœ·rOÅCÿ ×ðëþ|µü z?ášþÏ–¡ÿ��@�ü-�ÿÐߢÿàRÑÿ cÀ?ô7è¿øµÇÃ5ü:ÿŸ-Cÿ�øf¿‡_óå¨àcÐcÿ cÀ?ô7è¿øµCñÿ„õýE4ýÄ:eõ쀲Áêî@8ÐWŸÿÃ5ü:ÿŸ-Cÿ·|ðWÁÞ ñ Ö…mwü*è�%Ë:ᔩàûôªùãáüœÏÄÏ÷öu¯¡ëç�„?òs??ÝÿÙÖ€ñ»þNáWýuú4W©üfÿ’Kãû\è³^)ûNØê:ŸÅÿ‡ÖZ%ïØ5)Õ£·ºÉS™#ž*åßÀ­¤ÖÚÏÄË™íçR’ÄZWWSÔXdPyû.É ðßý¼ÿéDµêµÊü/ð�ð7�t¿‹£vlÕó6Í»‹»9ãÓ,Gá]Urümãßê$ûVw_2ÖSÿ,¦_ºßNÇØšóÿÙ—ÆSêšçƒ=éWü}¤|RðìGÉ2­¶­p$ŒŸ÷”c?Þ zÐñ#á¶µð÷ÄrxûáB• —Ô4•WL劯uîW¨ê¾Þ«ðŸâ^�ñDûNœþF¡îÆCûÈ[×ÝIèßÈñ]f…ªÚkš5–©§H%³¼…f‰ýU†Gã^ñgá>§¥kð�|)cc¯BL—60ð—#«^„žéѾ½@=úŠó?ƒ_tψvÚe#¶\]ØIÁÈà²g’¹íÔwõ>™@Q@Q@ÇŸù#¾-ÿ¯þ•Köpÿ’'áoúá'þ�z¹ñçþHï‹ëÅÿ¥p¾&x3DøMáÝ;VñŸi}.²Ã#á�™óÇ¡ï4Wÿ ‡áïý º_ýü?áGü.‡¿ô6é÷ðÿ…w´Wÿ ‡áïý º_ýü?áGü.‡¿ô6é÷ðÿ…w´Wÿ ‡áïý º_ýü?áGü.‡¿ô6é÷ðÿ…w´Wÿ ‡áïý º_ýü?áGü.‡¿ô6é÷ðÿ…w´Wÿ ‡áïý º_ýü?áGü.‡¿ô6é÷ðÿ…w´Wÿ ‡áïý º_ýü?áGü.‡¿ô6é÷ðÿ…wµóÿí©ÿ$ËKÿ°¬ú*Zô?ø\?èmÒÿïáÿ ñoÚ·ÇžñGÃý>ÏÃÚå–¡u¢’´P¾HAƒ?L‘ùÐÓºgüƒm?ëŠ!Egüƒm?ëŠ!Exwí¡ÿ$¢ÇþÂðÿè©«Úü=ÿ 7þ½¢ÿÐx§í¡ÿ$¢ÇþÂðÿè©«Úü=ÿ 7þ½¢ÿÐÆ�¦kP$:ÆŸi}6åK˜–@§Ô:ÖOü >ÿ¡cEÿÀ(ÿ±~1ÚøæëD²_‡1[ê|ÎÒ2cÚ¼|W‘ÿcþÑô²ÿ¿�ÿñ4ôV�¡i:Jº6›g`²�dЬaÈéœzšÑ¯™?±ÿh¿ú ÙßÈøš?±ÿh¿ú ÙßÈøšúnŠù“ûö‹ÿ ­—ýü‡ÿ‰£ûö‹ÿ ­—ýü‡ÿ‰ ¦è¯øO§ü^¶ñh“Ç÷ÖÓè¾C‚‘¼dùœm?(Ö½¢€ (¢€ (¢€ (¢€ ùãáüœÏÄÏ÷öu¯¡ëãèôxƒö‚ñý·�õäÑ.VB×32îL®`Ö€;Ï�ßòpß ¿ë¨ÿÑ¢¾…¯žü5ðGÅ£Çzˆ¼aãA«*a2#+»ps´è ¯¡(¢Š(¬ßè¶^#Ð/ô}R!-�äM Š}qî> V•ó§ìñ­Þø3ÆÏÂÏJL–²<Úd®p:•\ö#çýêú.¼+öžð…Üšu‡Žü6-{Ãî%wŒ|Ï9ϾÓÏеzoÃOÚxçÁzv»fTÓÆú©GŸ�éíƒ@wñ›áºµúø»À2ÿexÂÔù¹„ùktG©ìþýCëW¾ ü_‹ÅìÞñ4_Ù~1´ÊMm"ì•êÈC꿈㧯W“|iøCoãT]k@”i~.´ÃÛÞFJy¤tW#œú7Qô Y¢¼;à×ÅÛ›ÝLø/âM§xºÔùJò€«wŽžÁñø7Qé^ã@Q@5}6ÏXÓ.tíNÝ.l®c1Môu=A®þgßúm¿ïãÿñUÓ|K¿¹Ò¾øŽþÂS ݽ„ÒE"õFpG¸¯œ~xcâÇŽ¼%i¯ØüG¸¶‚ä¸M4¥†Ö+Î;P´ÂŒøsÿBÍ·ýüþ*�øQŸèY¶ÿ¿�ÿÅWžÿ©øÃÿEA¿ïôßáGü*ŸŒ?ôTþÿMþè_ð£>ÿгmÿÿŠ£þgßúm¿ïãÿñUç¿ðª~0ÿÑPoûý7øQÿ §ãýÿ¿Ó…zü(χ?ô,ÛßÇÿâ¨ÿ…ðçþ…›oûøÿüUyïü*ŸŒ?ôTþÿMþ©øÃÿEA¿ïôßá@…ÿ 3áÏý 6ß÷ñÿøª?áF|9ÿ¡fÛþþ?ÿ^{ÿ §ãýÿ¿Ó…ðª~0ÿÑPoûý7øP¡ÂŒøsÿBÍ·ýüþ*�øQŸèY¶ÿ¿�ÿÅWžÿ©øÃÿEA¿ïôßáGü*ŸŒ?ôTþÿMþè_ð£>ÿгmÿÿŠ£þgßúm¿ïãÿñUç¿ðª~0ÿÑPoûý7øQÿ §ãýÿ¿Ó…zü(χ?ô,ÛßÇÿâ©Ñüøt’+� Z¤3¹ê3Íyßü*ŸŒ?ôTþÿMþÈüPÐ~+|<ð³k·ÿnnáY’.¥ –ïÈÇjúåT*…P�€j+/ÂWS_xWF»º}÷ÙC,�ŒnfŒ3Ex×í¡ÿ$¢ÇþÂðÿè©«Úü=ÿ 7þ½¢ÿÐx§í¡ÿ$¢ÇþÂðÿè©«Úü=ÿ 7þ½¢ÿÐ_¯ý¢¼7·.‡5ÇŽbð¢D%AæÈÈ. ÚxØýkÚ«�ø�ðãÃÿâ±�Ä‘ÜH¶lí“1�±œã¯A@1ÂaÿEÊËÿ_ÿŽQÿ‡ý+/ü þ9^Íÿ Óðóþ}µ/ü j?áš~϶¥ÿ��@3ÿ‡ý+/ü þ9Gü vô\¬¿ð%ÿøå{7ü3OÃÏùöÔ¿ð1¨ÿ†iøyÿ>Ú—þ5yN‡ð¦MzüYh¿"¾»*\CÒ;`u8WGÿ ãâ¿ú(×”¿ür½SÀŸ<#à}}u�ĽXÚ e¸.»[¯éó=¯ìëâ¨na•¾"]º£†+‰yôÿY_L”Q@…â¯ø–¿hñ¯i`˜ÈY_ço÷T|Çðãú×í+£½ÛYx/@Õ|Ex~ç—�û ?÷Í{íó›x—ã牰ÚW†ôý݇ 8PØ÷óŸütS×áׯ­Ys«üC‚Éï%¶r¿÷Ê(ýhèšùãáüœÏÄÏ÷öu¤|Wsó_üUÖ™½eÇþŽþ•Ùü ø?ÃÍkTզ׮õ›ëøÄO$ñìèrI;˜’N:šõZ(¢€ (¢€ (¢€4QÏ Å2+ÄêU•†CÁWÍ’O‚ÿï|)|æ? ø‰üí9Øü‘ÈN{÷ü×ÓUæ´'€Žü *اüN´ân¬˜pÌÀ|Ñçý¡ú�@ŸEy�ìûãñã¿Âoÿm騵¿FûÅ€áÈÿhÌôêóŒ ´ÏˆšXpVÇ_·´Ôa”ŽB¾9+úŽ¢¸_„ÿuM\ø¬ÏY„ˆíu ›)pÝ Ý{?CÐàõú ¼›ö“Ñü!}ðúê÷Æ -å¶R,®bÎ%=ñÜ1“Æ3@ƒ¯ø—GðüºtZÅü6²j kj®y’CÐñéÈõ­ŠüÁÖ|G¬kRY>«©]]½ŒK³K!&$^€ëÖ¾ùø ã±ã߇¶wÓ¸:�¯ú-èõ‘@ù¿àCêO¥kü_ÿ’[â¿ûÏÿ äÿeù"š/ýtŸÿF5uŸÿä–ø¯þÁ³ÿè¹?Ù_þH¦‹ÿ]'ÿÑ�@µEPEPEPEPEPEP^%û_ÿÉ—þ¿ þf½¶¼Kö¿ÿ’=/ýAüÍz��?äHð÷ýƒ­ÿôRÑG�?äHð÷ýƒ­ÿôRÑ@CûhÉ(±ÿ°¼?ú*jö¿ÈMÿ¯h¿ô^)ûhÉ(±ÿ°¼?ú*jö¿ÈMÿ¯h¿ô@袊(¢Š(¢Š(¬ox£Eð¦šoüC¨ÛØ[JܱôQÕ�°àú¿ÅÿüF¿›Gø=£Í²¶Éu‹¥(õ¾TürÞ€=—Ç¿ü3à[O;ÄZ”pJÃ1Û'Ï4ŸDþ'Þ¼Uþ |Nø¯+CðçI:€ÇiÔîð‡®âü=k§ðÀ +O¼þÙñÝÓøŸÄ7™#Ü1hU¾‡—ú·½¶(Ò–8‘R4UT`èx_…g �íj7¾&Õd;¤i¤dŒŸÏs~'ð캇¥h6kk¢éÖ–ãø-â×O¹­(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(æ?Á'Áo�¶~-³W_ x…ÌZ‚ ùc‘Ž[�¯Î?àB¾™‚Xç†9¡u’)::œ†d}+›ø—á _ø/QЯ0¿hLÃ)ꥣ~¯¶kÌf/]µ…ÿ€¼Kº-ÃîÑ¢HyxAǾÓÇЭ{­sÞ4ðf�ã]=,¼K§E{ d˜Ë­=J° Šèh ”¼}û+ºù·^ÕCŽ¢ÆûƒôYõ�s?'ñ/Á¿‰Péþ.Ón¬4�]–Òg�fäþíÃŒ¯ƒÏF5ö�C{im}m%µí¼Wò !ðy·¾oíHôéỎDhX†Ü>VVkƒÔþø�¾øVëìwä»kZµœä2°,óòº¨P0z牾j—¯…áVÆú÷]·º’ÍH]ÜM 33äáÍÈÜÄгxŸâŸ„ü3¬Ë¥êº„¢êW¹òm¤•m•ˆ ee 9}j¦µñƒÁúF¯w¦ÜÞÝKwmn—N¶Ö’Ì NŠáÁU ®Öž‚¼ëÄžñ^�¬|L³Ó¼9.µmãÒò9c n̬¤K¸‚ï$Ÿº?gÂ6úǃ>+x‹J³Ñ&ñ密¬ì¥ŽÞD?“ÏÎFSwãœPПÄO éÞÓ5¹/ÌÖZ™ d-áyd¸b3…E‰õâ²o>1ø.ÒËHºmFi"ÕL«j!µ‘Ýž<B€n –i$דMð£ÄZW‚~™-/¯¦Ðå¹{û-6ìAp«9Ýû¹7™:pyúUÝáî£iãO‡º�Ÿ…o´»/ïï/c¹¿�xã $Œq†b™Ú3ƒßš÷„ñ›ø]õý—Kb–ÏtÊð2JA$ydnÝ€xÆk‹øQñûÇ>%ñe•Þ’Ú]¶’Ö¦\"¹&A’ùAtÏ5éuæ 4 WLø§ñ/R¿²– JâÑìæb10TpÄ`ö$uõ O¯ý¯ÿä�Kÿ_Ð3^Û^%û_ÿÉ—þ¿ þf€=GÀŸò$x{þÁÖÿú)h£ÀŸò$x{þÁÖÿú)h  /Œâø“á¢Ë|ö/ÂÜÅ2 pU— ¹sÜv¯'H~9ü;ˆCl,¼_¥D ÆùGcåý ë_HÑ@=éÿ´­¥„Ékã� k%×BÁ7¯¹Ãm`>™®óGøßðóUŒ4^%´€ÿvè4'ÿ½úÂÓP�¡¿µ‚êà¤Ñ‡Søáµƒ?uWg¹ðµ„n{Û? ~”»Žü%:î‹Äú#úþˆìÔÛ¯ø>Õ Ïâ�TsŸ¶Æ‘¯=¸ýš¾Jû–×Q‹Ù.Î?PiöŸ³wûy5�ôÿìËvØý1@¼Eû@|=ÑQ¶ëQ”#±ˆÉŸø ú× /Åÿˆž;³ü5ðlÖ–’pº�úäcûÀœ üÚ½{Ãÿ ¼á÷Y4¿ é±Ê¼¬’Eæ¸>¡Ÿ$WbªB¨€PÏþýŸeÕu%Ö¾*ë×> Ô› m’F¯û%º‘ì¡E{¶•¦ÙiYiv�ZZD6¤0 EQônŠ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š+çOÚD½ð_Œ4�оˆ™mdXu8‡Iü¡�±aÿ€šú.¨ëºMž»£^ézœBk+¸šP÷R1ùúZ�ÃZÝ—ˆôcK”Kgy–6ö=�¸9ÜV•|áðV»ø{ãý_ágˆ%-˜×LÏÀpFì÷—æö`ý}@Q@�Åÿù%¾+ÿ°lÿú®OöWÿ’)¢ÿ×IÿôcWYñþIoŠÿì?þ€k“ý•ÿäŠh¿õÒýÔëTQEQEQE‘iá½"ÓÄ·¾ ·²DÖ/bXn.C6é@œq´t«^Š(¢Š(¢Š+Ä¿kÿù#Òÿ×ôÌ׶׉~×ÿòG¥ÿ¯è?™ Qð'ü‰ÿ°u¿þŠZ(ð'ü‰ÿ°u¿þŠZ(rŠ( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ý§<q©h6¾0ðøxüCáæ£Ä>g„‘ï´üÃÛw­wß ÿø?ÿ[ð�|5ÿ¡wÂÿøøQÿÃ_ú|/ÿ€ðÿ…bÃBü5ÿ ûÿàÿüEðп è>ÿø?ÿ[ð�|5ÿ¡wÂÿøøQÿÃ_ú|/ÿ€ðÿ…bÃBü5ÿ ûÿàÿüEðп è>ÿø?ÿ[ð�|5ÿ¡wÂÿøøQÿÃ_ú|/ÿ€ðÿ…bÃBü5ÿ ûÿàÿüEðп è>ÿø?ÿ[ð�|5ÿ¡wÂÿøøQÿÃ_ú|/ÿ€ðÿ…bÃBü5ÿ ûÿàÿüEðп è>ÿø?ÿ[ð�|5ÿ¡wÂÿøøQÿÃ_ú|/ÿ€ðÿ…bÃBü5ÿ ûÿàÿüEðп è>ÿø?ÿ[ð�|5ÿ¡wÂÿøøQÿÃ_ú|/ÿ€ðÿ…bÃBü5ÿ ûÿàÿüEywíñkÁ¾2øo&•áíU®¯�ÔRͼ‰ò©99e½³þ/†¿ô.ø_ÿáÿ rx á¾õÙáß ÈÀО*ßð'ü‰ÿ°u¿þŠZ+mcEHÔ*(ÀP0ôPÑEQEQEQEQEQEQEQEQEQEQEQEQEQEWœüyð øÿÀW6vè¿ÚÖŸé6/ßÌ”ÏûC�®jôj(Êg/·�<–Ú‹ŸíÝ ‹[Õ¾ØÈG#Ü pkÕ«å?Šz¥¿ÁÏŽÐx§Fš‹]Z':–— ª2Hí¸áÁ=Á®§àwÆÍOâ/ÄÍCN¾·‚ÇLû KilŸ3W\–sÉ%Iôt LøÝ#Åð�ů28Ó¥Ã)ÁW‚ü$ø¢xËáæ�¯ßë¬77¨ìñÄë´m‘”c#ÑE{ÇÇ/ù$.ÿ°t¿Ê²ÿfŸù!þÿ®sèù(Šÿ†[ð×ýu¯ûí?Â�øe¿ ÐwZÿ¾Óü+è*(çßøe¿ ÐwZÿ¾Óü(ÿ†[ð×ýu¯ûí?¾‚¢€>}ÿ†[ð×ýu¯ûí?Â�øe¿ ÐwZÿ¾Óü+è*(çßøe¿ ÐwZÿ¾Óü(ÿ†[ð×ýu¯ûí?¾‚¢€>}ÿ†[ð×ýu¯ûí?Â�øe¿ ÐwZÿ¾Óü+è*(çßøe¿ ÐwZÿ¾Óü(ÿ†[ð×ýu¯ûí?¾‚¢€>}ÿ†[ð×ýu¯ûí?¼×ãßÁ­+áσ­µ�'UÔî.$¼K}³¸ÚV9à~Q_fW‚~ÙÿòKlì'þ‹’€=»Dbú5ƒ1%�¼d“Ô�¢ŠM þ@šý{Çÿ Š(õQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@6hıøÿðOTð}ÝÖ¿¥Iqªh2¹y%�—šØ“ÿ-Ví~~üÇìáª�'ã/‡$ÎyšÕ¾’)_æE~ƒIKG*+ÆÀ«+ ‚b+æOŠ?‡üKeã?ÀLwqÝÝiiÕ¸fh½FÜü½(Ù>9É ñwýƒ¥þU—û4ÿÉð¿ýs›ÿGÉZ_Ø?ÁÏ0èÚl‡ô¬ßÙ§þH…ÿëœßú>JôÚ(¯;ñ�õYxKÃ$z¶«%£_Üy×^BE8;NXžÔP¢Q_/|;øÍ¨èÞ ´�V•u kTÕîã†M_PCmk!å àØÖ»Ë�‹ᯠkÖúJ.Ÿ¨j¿Ù‹5Æ~Å!# u çµàv¶±»µÐl3Î[tžbYXúö‡øU®Ý¿†nuSGû^›®GªÌ–v m‰ Q–=~g$óùû-áú·Á�be×t=;Ä6öþ ×5¨Þ[=¹k”bÁ™#líÚJ¯Qž¾yÑ x�þ?xÒÏÁ·ÖÚcG£ZÛ+ÝÛ´‘˜ü¨—‚Ã/zr+é*(Ã[àlºE—†¥ð½þœu]&ÒK9µ-<ø.Ù�›oð�ìÄ}=óðÓRoü=Ô¦Ôìæoý¥®ÊZ¬v™@ù0@#üšõ:(›ø‹¥k:çƒõ 3ÃZ„Zv£t¢%º�7îП›ä¹öÍs?|âi«£ê2xy´˜¢%Ÿ©<“>y˜†ã=½; ôª(¯ý³ÿä–ØÿØN?ý%{Ýx'íŸÿ$¶ÇþÂqÿè¹(Ût/ùiÿõïþ‚(£Bÿ�&Ÿÿ^ñÿè"нEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP ñËþI‹¿ì/ò¬¿Ù§þH…ÿëœßú>JÙøÓo5×ÂoÃmË3éò…D]Ìxì|ýð«ãͧ‚ü¤x~ëýÌöHêÒÇ€­ºFnçø¨ëZ+çoøj;þ… sóZ?á¨tïú5ÏÍhèš+çoøj;þ… sóZ?á¨tïú5ÏÍhèš+çoøj;þ… sóZ?á¨tïú5ÏÍhèš+çoøj;þ… sóZ?á¨tïú5ÏÍhèš+çoøj;þ… sóZ?á¨tïú5ÏÍhèš+çoøj;þ… sóZ?á¨tïú5ÏÍhèšðOÛ?þIm�ý„ãÿÑrUøj;þ… sóZó¯Ž_£ø™á;]MðÞ­kp·‰8iT0l+.Ð9ù…}�¡ÈOÿ¯xÿôE;FF‹G±ŽE*ëjÊz‚qE\¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(ÿÙÿØÿàJFIFHHÿÛC   %# , #&')*)-0-(0%()(ÿÛC   (((((((((((((((((((((((((((((((((((((((((((((((((((ÿÀÆh"ÿÄ ÿĵ}!1AQa"q2�‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2�B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ú¦Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š(  _ø§Fð~‹&­â;Õ³±F æg%�E  ’~ƒµyÿü4GÃ?úËÿ€7üEbþÙ?òHáÿ°œ?ú•Âß‚ÿõ¯‡>Ôõ?Ç=õÝ„SM)¹™w¹PIÀpá@ßðÑ ÿè?/þÜñÃD|3ÿ ü¿øqÿÄU¿øPŸ ÿèW‹ÿî?øåð¡>ÿЯþÜñÊ©ÿ ðÏþƒòÿà ÇÿGü4GÃ?úËÿ€7üE[ÿ… ðÏþ…x¿ð.ãÿŽQÿ áŸý ñà]Çÿ  ŸðÑ ÿè?/þÜñÃD|3ÿ ü¿øqÿÄU¿øPŸ ÿèW‹ÿî?øåð¡>ÿЯþÜñÊ©ÿ ðÏþƒòÿà ÇÿGü4GÃ?úËÿ€7üE[ÿ… ðÏþ…x¿ð.ãÿŽQÿ áŸý ñà]Çÿ  ŸðÑ ÿè?/þÜñÃD|3ÿ ü¿øqÿÄU¿øPŸ ÿèW‹ÿî?øåð¡>ÿЯþÜñÊ©ÿ ðÏþƒòÿà ÇÿGü4GÃ?úËÿ€7üE[ÿ… ðÏþ…x¿ð.ãÿŽQÿ áŸý ñà]Çÿ  ŸðÑ ÿè?/þÜñÃD|3ÿ ü¿øqÿÄU¿øPŸ ÿèW‹ÿî?øåð¡>ÿЯþÜñÊ©ÿ ðÏþƒòÿà ÇÿGü4GÃ?úËÿ€7üE[ÿ… ðÏþ…x¿ð.ãÿŽQÿ áŸý ñà]Çÿ  ŸðÑ ÿè?/þÜñÃD|3ÿ ü¿øqÿÄU¿øPŸ ÿèW‹ÿî?øåð¡>ÿЯþÜñÊ©ÿ ðÏþƒòÿà ÇÿGü4GÃ?úËÿ€7üE[ÿ… ðÏþ…x¿ð.ãÿŽQÿ áŸý ñà]Çÿ  ŸðÑ ÿè?/þÜñÞx/Åú�ts©øjùolÖC 8FB®%J°zw¯1ñßÁ‡šg�üCcáÈ⻵Ӯ'†Au9Øë2œÁÁ­cþÄÿòMµŸû ?þ‰Š€>„¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(ÂÿlŸù$pÿØNýJïþ É#ð‡ýƒ ÿÐp¶Oü’8ì'þ�%wÿ?䑸CþÁ�è€;Z(¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€9¯‰¿òM¼Yÿ`›¿ýõä±?ü“mgþÂÏÿ¢b¯_ø›ÿ$ÛÅŸö »ÿÑ/^AûÿÉ6Öì,ÿú&*úŠ( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š(  ý²ä‘Ãÿa8ô +¿ø)ÿ$�Âö ƒÿ@À~Ù?òHáÿ°œ?ú•ßüÿ’GáûAÿ  íh¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Šæ¾&ÿÉ6ñgý‚nÿôK×�~ÄÿòMµŸû ?þ‰Š½âoü“oØ&ïÿD½yìOÿ$ÛYÿ°³ÿ蘨èJ(¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€Ï¢¼ ľ$ñî�â¿|9´ñ5­çˆõv{¹u©4èÐ[ÛØU„|¤�*S“×�ÇQ{ÁµÍ#_ñ×…üq,ž¡á›ÔÒúÞ!Ú`TW!�p­‡Nž¤sŒ�eÕ5+"Â[íVöÚÆÊ,y—2¬Q¦H,Ä’@ú‘RÚ\Áyk ÕœÑOm:,‘K†I†C)A_#xÏZø�âÿÙ÷Wñn³¬iï ê3¢e%˜Skrª%v|Äkgå$ç5Ú|ñŽ»{ñ \ßoÐ,|%§Ü[Úù1�’k2Nð»�úÇà’9öôUó¾‰ño]Ó�Æ{ýfáu o ß,e»D‘¬{çš$RQAa‘I$àuæ¶<"¿u}DÖ�‰4ÉíuÛròAöÐéi,e¢š3ÖR¹S±¸'Ž„°ö+ýcLÓ¬î®õ FÊÖÒÕ‚\M<ê‰ ¸ÄáIܼïQVm.`¼µ†êÎh§¶�H¥‰Ã$ˆÃ!”Ž ‚¯Š|q¯ÚþÎÞ:ñöÌ76?oXÛM½ÓáºW¹ilɸg”6ã´•ÚAùºŠõ{¿øŽX>x'Â3ÙéºÆ¹¢Û^Ü_µ¢·�ÉÉòâ ÿW!Û€ìô%à:OÄoéÍñ/Â~"½·ºñ‡4‹�FËT‚ÝcóDY£Á\�ñœc�sŒžQŠóŠ_õ={ÅZ‹ü#¨ZXø›G4¨Íñü�·‘÷œp:1éÁªžøWw¥âÍsÇWÖº†»âHÎäX«,0ÀÊ¢äðdŽ޼šôÝ_WÓt[Oµk…žŸm¸/�u2Ä™=·15Äxwâl:çÅÍgÁV¶´}‚_&¥Бg °�À¾ë¸ýß~<Âëà¿Ä1ðæûÀ–ž"ÐÃË?�heŽUšAæ‡Ù!„\åø w3ƒÆ¦—ð�Æ~ñ^•â/êÚ ß×JÔ"¿YZ<Å Q³G´Ã÷(Fvôç®+Û4Ï躭Üöº^¯§^ÜÁþ¶{”‘ãíó*’GãU&ñŸ…à7‚h±›9D!ï¢D™#cå¾VʰÁçå>”äž ø#ª[éß4ïj¶wqx¦HäŽêÔ7˜$•üÇB ¹Ñ¶‚Gg½lxÁ?ô™<;¦k'ғÚÓã�\^FªU"›pÚ8ÏO\½ñâ\^ñ�ôË}=5(|Owöd¹K ‹ß‡+o½ÏQÓ¯f€¾\'�Ÿ›¾:tÚßÂ]kì¾Ö<;©ØZx¿Âút®ÞÖáR=¬¤�¸.KóŒ�Ç¡¯Y¾×t‹ ‹/µ[ iïÛm¤s\"5Áàb0N\üËÓ=G­;RÖ´­.æÎßSÔìlî/_˶Šât�§|�µXå”`g¨õ %Ñ>k_cñî¯â-JÂïÅþ(Óç± ºZÛ+ǵT7ÈLœdOTÿ…U®Ã6½ûV›ýµÿ=¼Çû?ü~yÿ{fï»ÇÝëíÍ{U‹à�*}Áz‘xñ=Ο§ÛÚJÑQž8ÕIR@8È8ȵEQEÍ|Mÿ’mâÏûÝÿè—¯ ý‰ÿä›k?öýzÿÄßù&Þ,ÿ°Mßþ‰zòØŸþI¶³ÿagÿÑ1PЕWV¸šÓK¼¹¶·{™á…äŽûÒ°RB�rF?µL†XçŒI ‰$g£!Æ€>løu¦jžñWƒ­n¦Ômo[O¿ñ‰Hû\Kò¢ó´2�¹ã9™à«ŸK‚àÓ|Ay¡âíBãWºŽã÷†+H¾ê´Ÿ{k(޼b¾©##¸/ˆ>·°ð­î¥á] ¿aaqo¦%ŠùE à © Ã'~<ŒŽh|ñOÃÞ*¾‚ÎÏí¶óÝOs ™¸€¬w~F7´n2¬0sŒçƒÇÒMâ}=ÿUMBÞ{+xîl‘<wçoRHõæ>ø[ªøitû›Û{é|;¥M•`±ùCí3Ò´�’I(ŒÈ9Þû;ÛçâM&×CÑô¨×QžÎ×k­Î Ã$áGϰ�y÷T�B†æ9<µ'dÏ“Ér�î>¼TÕâ÷�®|#{¨_\%´þ%šÈêWö�ó;UÿSo¾1¶02ÙrN]˜ãc¨Ñþ.hw�Ü˨Cu§Åe¤[jײȡã·YÀ+ÛóÁ¼�~(Ñè®@|EðÙñ9ÐVôý½lN¢ùŒª¤!Cd–Ç;Np2qœô5¿áífÇÄ:-¦­¤Lg°»O2 2n_\0~"€4(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¬}wÄšn‹ski{?ú}âJÖ–ˆ3-É�7² èN=Hê+#Â?¼3â‹=K-NÞ+½V=½ŒÒªÎB’mÏPU‡Ý>”×ÑEá¶Oü’8ì'þ�%wÿ?䑸CþÁ�è¸Û'þI?ö‡ÿ@’»ÿ‚ŸòHü!ÿ`È?ô@­Q@Q@Q@;üd‚×Uý¤~é^%T—Ã�jî°Ïþ©ç&^<²Â1ß w¯,ñ4vþø‘ñ‚/„‚ÚÆ‹kÂÄ­=˜�WÝ(Àé�júçÆž ðï�láµñF— üP±x·3#!=v²�Ã8ç³ü=ðÃÁžÕ.µ A·¶¹º´û øwhä„… lÅ9ع8Éç$ääç_†þÕUøc¯ÁªøE�DMZÝI ö£¤ŠÀ‰%ÁeÀÀËÓ¹ðÃAð–¹ñOã"ø¾ )ü›Ë–ˆ\ã÷qùóy².zÂ|ÑŸz÷¯ |*ðO†uÏí�ÃÖ¶º�;eÜïå烱YˆN2>P8¯3ðOÁxµ/|F¹ø‡áȦӵWíz\­p72gbA‰÷ !ãÈ8ÏqÀ‰x.âö{O‚ëzÎÐÃâ©ãµÝÚ/6Äà{o2W¨øKKмQñâã|EŠÚâ[<Çj/1û‹@dDÏ݈aÈÝžõîW_|'t|9æhÑ(ðôžn˜±Hñ­»îVÎÕ`æE?6rG¹Ì>/øcàßj1ßø�B·¼½@Îñ;Ð1F€÷Í|ÕáýWñì°5MÒ�CÃ:œ—º\§–ñ„.ôÈ혫¶ð&®¿¾8éÞ"XÏö7†´¨dGÊ/%\‘õ XgÖ^¿ã8µ=ÁI§øÂÖš£öE°óã¶ŠŠ6\îá€;A\‚wkö|øy7ÿ‹-KÊ:½äÆæìÆw8P7|ôÉ8 N¢Š(¢Š(¢Š(šø›ÿ$ÛÅŸö »ÿÑ/^AûÿÉ6Öì,ÿú&*õÿ‰¿òM¼Yÿ`›¿ýõä±?ü“mgþÂÏÿ¢b  .¥·–8ä1;)U‘FJ’:ŒúWÊ÷¾ x:æKχ~0yrÛÌ&Vµ‘Ï¡(ÿð"+êÊ(äôøÏñ[À±|Að±½¶Sƒpðù%¾“F Gðèžý¤ü ­ì�S–ïD¹n1wèóìéž=Ø-{[ªº2º†V Œ‚+μ[ðWÀ^'Þ÷š½­ËËŇú;çÔ…ùIÿxî4}cMÖíÖ�¨Z_Û’ÛL²/æ¤ÕÖPà y¯—u�Ù“VÑnÍÿÃÏOmp¿q.Y¡�Ûh¿ø‘Tá4øéðãåñ&Žúæ›Y¤„Núù±r>¯š÷Ïü3ðãêqÝÛÝ]À–ÓÜYܼ-$jÛ•YAØàï)®?Å¿.u�V-+U¶�IÖõ++�JÖhH³@1å$€œŽU*1޵ƒá/Ú“ÂڎȼG§ßhÓ½"�´B?¿ñÓ^ÍáŸøwÅ0ùžÖ¬5Œ”†`]ÞO¼¿ˆâßô-oLõ³2ê^'¹²Ñt‰cê[ºìaÇÌœ �HÁ9¦è¾1¿ð’x«FµÕ] F– *Æîâcj`¶g»pªí¢0rì£8&¾ˆ®/Ç^³×4f‡N´°†à\=ËÄñìŠìÉG*ÊSŸ��ã,Vçn(Çí1qcxw@—£®ëX™Oûg2H1ýÜ©ôí?¾±ÓïÑõ™õ‹ò�2ì 2畜üØ$žp8Í~Ù?òHáÿ°œ?ú•ßüÿ’GáûAÿ  à?lŸù$pÿØNýJïþ É#ð‡ýƒ ÿÐv´QEQEQEQEQEQEQEQEQEQEs_ä›x³þÁ7ú%ëÈ?bù&ÚÏý…ŸÿDÅ^¿ñ7þI·‹?ìwÿ¢^¼ƒö'ÿ’m¬ÿØYÿôLTô%Q@Q@Q@�‹~x?Å»Û^ðý�ÄïÖáÊ›þþ&õ¯ñ7ì±§™¾ÕàßÞi· w$wCÌP}�v²ýpƾ”¢€>Mòþ?ü6û�'‰4Ø»ôå ~Sù Ûð×íOf³ý“Æž»Óîí’KC¼ïíeüØ×Òõ‰â_ è'ƒÊñ�c¨.0 ð«2ÿºÝWð"€2|%ñ7Á¾,غˆ,¦�ú[ÈþTÄú|1üuZ…¤wö6sïÜDÑ>Æ*ÛXpG óּſ²ç„õ=òxzöûE˜ôB~Ñÿ€±Ýÿ�Wÿ'LJ?7…õ¦Ö´èúAâPÓÉ›§Ñ2hé¿ xsLðÖ�a¦éVëP x™€/°òÝNNI÷5“ÿhÓ­ôÛO ê éö†áÞÒƒ¤í(8,[‘µÎî>œq�Òi�oB»[ˆžšÞuážÝZ õò¤ëÿ}^¹á/�Þñ>ĵ×a²¹oùa¨³°>™o”Ÿ£ä|Gðëĺ?Áÿhžµ´½×´-b AöÍû·eyÈKí$u$uÆ@Î3^[­Éão iÞ#ðöŸ>¡Që>tº”ªQõ[«„Ž4�20P•–B9¿ØñºI¼l®Œ2¬§ �Pj;«Kk±»·†q‹* P6ÇS•až„‡µ|ç¬ø«Ä^Õ<]6�¨ÙÿaxCLµ±[3l"‚KÉ‚ä¢G´d6xè7cŠõ½Æ–ºe–‹¥xÛU±´ñ]Å´oqo¼`; ðPÌ@㓎MXñÿëvÚŒrÛËlú…Ô7ÓËo& Oke3ÆËówÏÀx»á6£­xß_»‘š}+ÄÚý¢Xµ&¶’Þ(Te ~[¬Ÿ2+/Nã#­{he.T0Ü$g�ÿ¨Ò׎èú||Tñ?ŒÎƒw梀:;O„¦ÛÜI««èVúÜÞ!ŽÉmñ+Ý¿MònÁT9# 8=3\ ÏÃ�j[Ý u�>Hµ=cÄ×Ö­©Z±&ÊÞ Æ8„ëÊt‚}ëß¼?â=ÄvßhÐu[-F,dµ´Ë&ߨ ûÕ  øY«êþ(ð¤šdW×Å5�Bêñfšgytý+Ì(¨‰mîÈꄜ€Y‡ÜÅ{œ1$0ÇJ4Pª£°U&]?I‹PÔäŽe(g»œ& */Þb98QOÒ5;-cM·Ô4«¨nì§]ñM VÄPº(¢€ (¯ øµñãþ¸—M·FÕõÄá­`p© ô‘ùÁÿd}q@¿UuFÇLƒÏÔ¯-­!òÒâU�2@¯•cÖ¾;üPf“ø{H”|²F>È¥OB³+}WŠÐÓe»ýJµøÏÆ2Ü\·ßñ´¬í¬‡?øí{±ñ«áÞ’X\øªÂV­w\gñŒ0®?Rý§üjH·�Y½ô0Zªƒÿ}ºÕ½öjøy`íVº†¤G{«¶\þì®ÇMøMà8má±ÐÏn&?›æ€<‚óö²Ñ“?bðÆ£7§�p‘ÿ Õ˜jûË‚E‡‚7}oÙÿ”B¾•²ðö‹b²Ò4ë`:y6Șü…jp •á¤üc/0x uÿ\ßÉiá¡þ ¿ÏÃÿÝÿ×½Áýq_TÑ@*ÿÃHøÑ>i|„~YÇë¶�øj�^×þBÛŽ¿éoóŒ×ÕTPÌVµ®œøûg„îâõò¯VOæ‹]ŸûSx&à…»°×-¹h#uоJöûÍ'N½ÏÛ4ûKŒõóaWÏæ+žÔ~x#Qí~ÐØž¬–Q£ßJ {IøóðãS!SÄqÛȆê "Çü®ßÖ»­Äz&º�´]_OÔÿE¹IôkÎ5ÙßáÆ  �FšÅÏñÚÝÈ?F%Jàõ¿ÙGNÝæøkÄ÷Ö’©Ü‹w ËÏûɰ�® }1E|šþøõðã÷šN¥'ˆtèºÄ’ý¬môòäAôOκ¯‡Ÿ´­…ýúé>>ÓŽƒ¨†òÚåCyý[æ�ñÈõ"€>ˆ¢›¤±¬‘²º0 ¬§ ƒÐƒE:Š( Š( Š($I8½Veçˆ4k,ý³WÓ­ñ×͹DÇæk*ˆ~ ·È›ÅÞB;Jþ[¨¨¢¸Çø©à%b‹ô<�KÄ?ÈÓÅ’Gü%ú'ôô¿ã@µÇEñCÀ’ýßhœ|×ѯó5~ßÇ^¹ÿ�oè3gþyê·òj訪¶š�•ïüyÞ[\×)Uÿ‘«TQEQEQEQEQEp>7ø¡£xkHñ,öùÔ5-ak»LN®ª¬ /+󃑑ùÐ}\ßÄ fïGðÕóh’ØŸ5¼²iö·MŸ´¼j]•PXí�íž+Î.þ45�Žî´ýbÝt­Òñ­$yìn$y…Ža*üŠ¬Ç€Aã<×ñÃþ"ѵïjñh×—š–�«éšÂ ÇöPƒÍ¶‘³ÀP€ÆO8ã9ößx²ûÅv~ÕtÍ:еžæëí{yÆ”üÁ†sÛóæ<a ËXéw‘-.t ôÉ“$[[“ \ŒĤpsR|;ð6—yá ‚_Iuá­OQMwL·…š´ ¶Ael�·ç¿Mß|Hð_€ xµmNÖÞpZO°Ú€ó31,NÅèX’rØ“Íy>—ð{Ä~&Õâºñ¬YoŠ{=VXï7½âù›à{ePV�lxwy9õû#Âß`¾Õîï#µšíP_jz…Ïï.™AÚ\’nOݯ¼Xý ¼aã[çÒ¾øjtcÇÚd‹Ï™Gf#ý\ð"ÃÞ�¢~Ï*ñ}új¿Š(¢Š(¢Š(¢Šð¿Û'þI?ö‡ÿ@’»ÿ‚ŸòHü!ÿ`È?ôUþ5øþ#ø%´H/–Æu¸K˜åtÞ¤¨#œÇšðø?f¿Á EŽÒ(�mTF™UG ñ@VÑ_*ÿÃ8øãþ‡ÿü~ñ£þÇÇô?ÿãóÿ�}UE|«ÿ ãã�úÿñùÿÆ�øgÐÿÿ�Ïþ4õUò¯ü3�Ž?èÿÇçÿ?áœ|qÿCÿþ??øÐÕTWÊ¿ðÎ>8ÿ¡ÿÿŸühÿ†qñÇýÿøüÿã@UQ_*ÿÃ8øãþ‡ÿü~ñ£þÇÇô?ÿãóÿ�}UE|«ÿ ãã�úÿñùÿÆ�øgÐÿÿ�Ïþ4õUò¯ü3�Ž?èÿÇçÿ?áœ|qÿCÿþ??øÐÕTWÊ¿ðÎ>8ÿ¡ÿÿŸükãàοoâ«O Éñ1?¶®¡{ˆí•®¶/RØ8^øÎ3ƒŠûŠùWþÇÇô?ÿãóÿ�ðÎ>8ÿ¡ÿÿŸühêª+å_øgÐÿÿ�Ïþ4Ã8øãþ‡ÿü~ñ ¡~&ÿÉ6ñgý‚nÿôK×�~ÄÿòMµŸû ?þ‰Š¹yfßKÇ/�ãpU•šr Œò+Ù¾ü9—ោ®t«�A/î.nÚéäŽ2йUP£''îg>ôèÔQEQEQEQEQEQEQEQEQEÃx·á7‚cñì¶m.~ÛàO\ØÜ¡Ìiy�TûKÿ¾Mekü|øoÆ¡i'ˆ´Øÿ�“í ŽçzbQõjúÆŠø÷Ç?´�ü$ÿu­]ãMÖo"ÆD”<[K&r.WpÆ^µå¿ þ*kÿ õ-úl¿iÒålÜió1òä÷_î7ûCÛ Ž+Ò¿l½F-CǺ^‘aj�=�¯™q$Q ìòˆ8TR?Þ¯ ƒÃúÍÆ>Ϥj2ç¦Ëgoä(ô?á§Ä]â�öÝ ç÷ñ�ö‹9p&€žÌ;�FÌWc_œ^о!hZž©á½ Ä–÷М¤¶ú|Ç#¸#nàäû_á�õïé¢ßÅþÕt=^ù¤šÒHíç÷RÃå?ìŸÀž€¬ñµüÚWƒ5íFÔââÓO¸¸Œú2FÌ?Q_)~ÈñxCQñ&£qâgŠãÅ�(’Ä_ÊÀòÌ›¸iwsÏ8äw¯¨¾&ÿÉ6ñgý‚nÿôK×Èþ ÚüJø{¨jvúœºvµi¨41HW|N‚8ØrÇæ¿C@pÑ_%ÇwñçápKo'‰4¨¸RTÞ¦ÑF=pmhµe’?‘⟠ÞÙ̇kµœ¢NÜ}¤}2héª+É´ÚáÆ¤>·%”‡ø.íd\}X¿­v:oÄj`}‡Å:$Ì€^Æþù'4ÔQPÛ][Ý&ûYâ™?½†¥M@Q@Q@Ù$H�¼®¨ƒ«1À‡¨øÏÂúh'Pñ�kŽ¢kØ�þE¨zŠó=_ã¯Ã�,/‰`�ÇEµŠI³øª‘úׯþÕž¶V]DÕ5 C;%ºÇ,ñÚú.¼ öµ´ðYð\·ßÙãñFÓš,}¡Îy ÜÇŒç<Üãj?#ƒÆ_u‹É—PU¸†Ý$̲ÆyRÎxE ðª:Êô ›Å?µG‡¬äh|3£_jÒgh’fñ·¸á˜ý ŠçGÄÿŽ>.ÿ‘gŸÙÖïþ®e± cþºNvʾ‡ðŸ€¼-á(Ñ|=¡XÙºŒyËéOÖFËÄ×M@)ÿ¾øýâ>uo07ÞS¨˜¿Ku"œ?fj‡wˆ|u½�-ˆd¸ý]Ö¾ª¢€>h³ý“4dÇÛÒ.@í¶½ŽÒæ Ëhî,çŠâÞA¹%‰Ã«PGWœx×à�|Y�6��xË­8R loÅMxÜ^,ýšüabVýµ_êÅÑePFñ°Ÿ’P ƒƒî2Ù4Tvó%żSBÛ£‘C©õdT”Tw"cm(µhÖà¡òÚ@J†Ç€A#>õ…ã¯hþðüúÆ¿r!·�„AËÌý‘»Ó©ÀÕß ë–ž%ðæ›­iÌM­ô :Õr9SîA÷ó�ö¶±âÓáëŸÝ]]i—Z¤þ×ôhFÈm.v²Ã"ªŒã$9,H : G㟇šÍßÂ;eÕ »�ÆZ\Ï£YÉ2¶¯i¿äV “·oÌ cY'æ½ï[Õüà¾Ôµ[­7G{é<ùÜàKràc;GÌç€×ˆø·ö›{ÛÏ쿆þ¸Ôo$%#žæ6;�û§Ì߉JöCàý{-7SñR;]ZZ@· =ôŸe -ÿ)¶°ÎHëÍqh¯x}&´ÓY¼Ey‚¦;\yF”ðGû¡«Î-¾|Sø£“§h–)e£ØÛXÚ'݆Þ!�Àw÷«´Q@Q@Q@Q@Q@Q@Q@W–òÝÏkñµÌZXƒ|È;I³ƒ�¡©è¨î'ŠÚÞIîeH`‰K¼’0UE$’xõ%|£ñ·â§ñ?ÅQ|8øvLöo.ˢÛä�”óó‘&2OñÆF2õln²"¼l¬§ �QK\×Ã� §‚ü¦h)yq{öHö´ó1%˜òvƒ÷W'GA�­t´QEQEQEQE`øïLÕuŸêz‡õ3¥j“ÂR °¹Ø}=FFFáÈÎG"€'ñ|ÚÕ¿†ïåð½¥½æ²#Å´7lBÄã$û œqœc#9¯žü¨ÿÂã=cU¡ÕƟźåæÕ†k­¿ºµ·m›ÁWÀÀÈÇðð¢ªüøµªx'\ÿ„â�–Ù­ßɶ½¸l˜ºŽßÅþì1ü<¯¼xËÁz_‰MšâÙ&uÛj1Úp!º›có0y çÛ¸&€)ü7ø…mâý6)oícÑ5 äq›ur¦æHÀI°…8 ƒÀïSÒ|io¨½´z÷ÅKÈþÕ¨$³yvšŽè›æ ÓŽOSžsóý àïYø³ÃV昳-�ê�fP®0H €HêBElQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEÍ|Mÿ’mâÏûÝÿè—¯ ý‰ÿä›k?öýzÿÄßù&Þ,ÿ°Mßþ‰zòØŸþI¶³ÿagÿÑ1PЕ—­øwE×cÙ­é~ ¸ÀVé.>›�ÅjQ@Y¬|øq©îcáõµ�ÿ¥Ä‘ãþoé\~¥û*ø>rZÇUÖíIìÒG"�Ã`?­}E|·sû%¢¾ý?ÆRÄÃî‰4üŸûèH?•Cÿ ÝãK^4ÿm§Í4É�}UE|«ÿ /âÔ_ñïñõÿ‰�Úÿ%£þ¯Æ…ù#ø�û£÷¿âsz?M•õUò¯ü(ß‹Ò|²üDÊ¿ñ4¼?¦Ú?á�¼uÿ!ˆ�ëûû‰?™õUò¼²…͡աák¸#žÆG;JÅ"†Q£*x9ØÜŽŸ-z‡í­ÿ$³Jÿ°Ô_ú"zôÿ†v¶÷ß¼#m{Wòh–jñJ�ч�œx4ÍøKãßÃÿª/öÂéw-Ö I|ŒÀùOüz½6ÊòÖþÝg±¹†æû²BáÔý⼣ųÏÃý}žHté´‹†äɧKå®Ü`P æ÷Ÿ²þ±¤Ü5σ|jöòÿ™Y#cŸûäPÔÔWÊcÂ_´G‡8Óuãª*÷ûlsçÿ4¿ðžþÐ:7Þ7ûzÿÄ´ËŸûòÃô ªè¯•á þ#ØÈcáþÜuÿE¹‡ÿBÍðÕ·ö¼jÚëý£þqzúªŠùm?kxÝþ ”zãRù ¤oÚÚËiÛá‚{~£ÿiÐÔWË~×€<¿»zîÕ1ÿ´M3þ‡_»ãNð.âz¤I'òŒPÕTWÊ¿ð¼>.ê\i°£f]K�Çp‡^ý£uÞ,ô£§+uÿF·‡þÛ­}WYÿ‰ô/Dd×u�?O\gý&ác'è Éü+æ£ð§ãw‰Aÿ„ƒÆ_c�þüM¨Éÿ D6ε´ÙKLY|ïøšúùØîd´‰aÉ÷f.Oä(sÆ¿´ç„tt’/Cs®ÝŽ•L0îÌ7ÁH>µó‡Æ _Ç^,KxÒÎ[=6áž:†(Ô`Ø„î ñóž¼sÆÙþøMàŸºK£è6¿kNEÍÎg”PÏ�§ýÜW�þÜòð¯ý}Oÿ -}áïùiŸõëþ€+âg�ô_‡ž}OZ›26VÚÕó.ûª=:eºÈ5ÿÍá_ØÞXèÚžµ~Ö±­½�…³ÊÎû,TŠ;±ü2x¯ŽñÚÆ¹á­n[‰8DkV�!Lðˆ§¢�שÉ$Ð-ñ3Çú×Ä?>§­Kˆ×+mj„ùvéýÕ½2ÝOägð£Æß/´(ü ðüƒ±¤¸óQTKlFá½ÎÔ@Ç99n½+‚?çÆÏ Þ ÿ}ãOæÂ½à߯‰þ ø…£ë�áã¤rùw@ß[üÐ?Êü 2Hp PcáOÙ–mBóûSâWˆn5 Éé ¶‘˜±ÿngù�Ðìkß|%àïxBÏìÞÒm,## Ñ'Îÿï9Ë7âMoQ@Q@Q@Q@Q@Q@Q@Q@Q@6VÙ¾ÒÛA8M:¼‡âOŒäñ–Ú_ÃmBßXÔ!¸Æ£ma©%­ÂÁµ†ä”ôPû72öã#9xoâ —Œ­ÿá-Ðí&µÖ4`!Ôô§`ÓMfÁYˆQ÷¶’^3ßk7šö(eIáŽX˜ch�É\ÿ|ÿü=I÷(¢Š(¢Š(¢Š(¢Š(¢ŠóŸ� ô¿‰z Žb¶šÕºŸ²_É_öÕéÔwÆ>|QÕ~k§áïÄõ’ÞÞÚÞÊßñîÝ¿Š#ü-ü?O»õmyÿƆWÄ­ìט¶Õ Ùß*å¢?Ýoï!î?Íg¯ÁO I¤‹Q.¨Ë<²Myp—¬%ÔŒ¬î>úü«�Æ1ž¤“ç¾ Õõûï‹¿ÙúEÄÚrÁgk!Кfû.� Rn-Ú0¸ÜW÷ˆøùyÁçá?ĽcáGˆ�€>&¬‘éñ0K[Ç%…ºŸºC'±þÀ�ô¯ˆì¯5;YôMN[9#š;–ke�¾Ùäù%›€­Ÿ½Ûé@|=¯i¾!´žçG¹0Aq%¬Œ®Ù#m¬¼�Ð÷èkN¼ËZšK‹•³ñEÃÜÜÊ<Èü/¡Å�=g“å,¤ç%ŒqžA ]?„5w¼šòÂò] Ë] i–2ï{Hñ€ñ“þê€1Œž´ÓQEQEQEQEQEQEQEQEQEQEQEQEQEQEÍ|Mÿ’mâÏûÝÿè—¯ ý‰ÿä›k?öýzÿÄßù&Þ,ÿ°Mßþ‰zòØŸþI¶³ÿagÿÑ1PДQEQEQEQEQEQEQEÂütÿ’?âïûÉü«º®ã§ü‘ÿØ>Oå@Wìyÿ$}ì!?òZ(ý�?ä�¯ý„'þKEgþÚßòK4¯û Eÿ¢'¯UøOÿ$³Á¿ö²ÿÑ ^UûkÉ,Ò¿ì5þˆž½Wá?ü’ÏÿØËÿD%uTQEQEQEDöÐ>wÁg®PÔk§Ù+¶–àŽ„D¿áVh Gq“å¢.zí§ÑEQEQEó/íÁÿ  ÿ×Ôÿú×ÓUó/íÁÿ  ÿ×ÔÿúÐÑ~ÿ�™ÿ^±è¯ÕÈLÿ¯X¿ôW袊(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¨îfK{yg�9HлlRÍ€2p$ûjJùÇâ_Ä'û2_„Ôõ9åþ "Æ{ˆ#¶ÒÖB¦æW€‚dp¹ŽÔ 8Èù€;Ûÿ�} Úú6Ô¯4» Rî{[bÃOíÿHç1ó‘À'¸ããxáΧ³á�Fm_GÔô]1ÒµK`Âò{V‰‘-å#ähÀ`AŸ— šå¼; Úêü>!ð¹6§v–Ž/£ó¡Ômä€Í$7J:ÌŠ’|Ç“ò†9%�¦øÃÄø)ðüµ¥¬vð+8±Óãc™¥bX�œ�¹9'°üVøíñRÏá·‡rcŸ_¼R,­‰ÎÞÆWÝ©àw#Ï?g/…w—7ÿð°üx$¹Ö/ÜYEqË)n|÷Þ?Â;zã_üª|Pñ\¿¾"=›K¾ÒÚEù'eÛjV;ËhæYÚR¡ŒnTõ­*ùWÄžÓ´!uo­›­+Â>¹P…@kÿj¨û²ĢåàqÇl|¾ÃðgÄÖ¼5Ù„¢Š(¬ÿéPkÚ§¤^<©m¨ZËi+D@uI©*H#8'´( Œ5ÿ‚žÓ¾?xkÀð^êí¤êz{ÝÍ+Ë�\-ÁH�h¹^ªzŸl{…õ‘ð¯Åãáä»ÂÖš4ú¦Ÿw77.C´’¬Œ0‡½# 0ç=Mïx;]½ý¥ü'â»kúŽ˜ö÷^tcd…n@ n?ë�çØÕÚkáö¿ã ûÁÖæ}^ѧµ•Vdˆ›y£*ù.@#Œc9ùÍszí¬^ü%ñ¿wa¦¯ˆìï µ´µH¤H³`¡e/¸œ Og¸y¼O¯éþøÉw¢Yé&¯iªÛEª^Ù=È–`÷íù\+ù„}Ý +?p¸îõ?‚Úª|`ðÌÚ}¸oÁŒ×Òy¨Ï´�’0P�Í�ª2¼9ïU›á?‹/4ß�v’XGnÞ"Ô"ºÒÚKˆÈ¸XøX”Ê•ûØûÞÇ®¿®|LµÓ¾XÍ¡Åi¨µ›é‘Û½À”û?—öÜò@Þ„„ã%½½â_Å-WÂ~ðÚ§Šµ+ešîêþá¡Ó­pfÜHm¥•Âäçu'Æëþ ñö¥á¯…·©áˆSVðmÂFúqÔaÍÌq‹}² 3µwH#$Œ÷®�â×ÃýoÄ*ð§�¬Oå@Wìyÿ$}ì!?òZ(ý�?ä�¯ý„'þKEgþÚßòK4¯û Eÿ¢'¯UøOÿ$³Á¿ö²ÿÑ ^UûkÉ,Ò¿ì5þˆž½Wá?ü’ÏÿØËÿD%uTQEQ^1ûE|Q×þMᨼ7e§]ɪµÂºÝÅ#œ§”.×^¾aëžÔìôW‹ø‡ã Õ§À�ÆZeµœÚÞ¦ÐÚÅlê͸,DŠ0l ’`nÏNM;ö{øÆ>#ZÝÙkÒX[xŽ)Hí-!•­•còÅ�;Ù†7g§zöj+Ï|kñkÃ~ƒÄ‘,ï}«hVë=Å”Q8ÆöE@dÛ°e¥Là’2xà×”¿Æ¿‰š^‹iâ½{Áxð}ÁGY �‰|·#iϘØÎF @G­}1Ex¯�þ3^A«hÚÃ�kÚî§iò IÅ®äÜ•ä倎y¨¼ñoıxêÏÂ?ü7‰©_®lî-›1HÜá~óœc!�8sšöú+Ì?g¯ˆ¯Ä�Þêú彌0jh«fލQc��!™Žrç¿¥z}QEó/íÁÿ  ÿ×Ôÿú×ÓUó/íÁÿ  ÿ×ÔÿúÐÑ~ÿ�™ÿ^±è¯ÕÈLÿ¯X¿ôW袊(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠËñN±oáÿê:µïŸökHZW0Ddpp ðO #Ä“Kñ¡á¸´É¡*yÑÃ#¦@úzŠð›[½CÂÌžÐSÖ|G©Ü¿Ûn-dŠ+�Nâ4 +¥ °ÁâŠî$?+ü\߃¼UâOÙïÆÂþ3Yo<+pÅàš0YPþ¶öçæ�בþרøïÂZwˆ,nµ/2çIÕ3}§ë:lm=Æ—pê¡Ø*|Ï ›;rU‹d`‚ þüA’W…noçš1v4ýGMÔ$‰¯t¹Ú_%taD‘4˜L‘¸8â½’¾MÕmbø{ i�xzÇE‰ÖêÊûS¾¸7ÍÚY¥-EbY£RQO]½‰ÝôV—âÏø¢†½®Ø]Ø4%㹂;y&ed�ÆYUT³!#p8û¤ê(ªº^¡i«ið_i× qi:ïŽT9 ?ÏìjÕQEQEQEQEQEQEQEQEQEQEQEs_ä›x³þÁ7ú%ëÈ?bù&ÚÏý…ŸÿDÅ^¿ñ7þI·‹?ìwÿ¢^¼ƒö'ÿ’m¬ÿØYÿôLTô%Q@Q@Q@Q@Q@Q@Q@p¿?ä�ø»þÁò*î«…øéÿ$Åßö“ùPûÉ_ûOü–Š?cÏù#ëÿa ÿ’Ñ@ÿ¶·ü’Í+þÃQè‰ëÕ~ÿÉ,ðoý�l¿ôBW•~ÚßòK4¯û Eÿ¢'¯UøOÿ$³Á¿ö²ÿÑ @UQ@|íûQÅçüAøE_3T‘?9mE}Yú–‰¥j—VW:ž™cysdþe¬·é#Û¾AÝ`JœªœŒt”òO…´«Û¯Œü<–?ø”x{UÔuHÇû 0Œ{§þÚã~´ž Ñt‰0$�–¿6›¨ªrLD`}^½Ê×ÝèšTÌú¼:eŒz¬éåÍz–è'‘8ùZLn#å^ þé^YñCᎳâ9|/áðLJütÑÏ~°Úîe|’ª€!XúàåqœPð×M•¾ xãÇ:æƒý»{âYe»—O2˜Ì¶ÊçåV Jã20ÀþÆ85å_ð–h^ðͶ«ðÛÆ¾$Òõ�ÈÍáË�×+ù†ý«(ä‚A'Ðg�·tM2ÛEÑìtËÙig[Ä¾ŠªýP‹Â‹RþÑ‹ÃÚ:j·ý©l¢îõß·9÷Í|ésâIþ|v³ñ¯�ì'¶°ñ.‡I$q³yPù‹Ž¹V‹uÃçšç§ø�ß~0ü=‚XllÎ�ª<¿jŽfX®#߃`Vc’ONq__jZu–©hÖº��µå³}èn"YýU�ÏÞü;ðuå�½¤ÞÒÚ …ÄQÃj±�r6è2:‡4ó¯ì¿ñKÁÞð¡¦øŸXû 캜— Ùf—1˜¢PrˆGUn3ž+éÿ x‡KñV…k¬è7_kÓnwySymí¬Q¾V�™Häv¬¯øWÿ¡7Ãø+ƒÿ‰®ƒKÓlt‹¬t«+k(³åÛÛD±F™$œ*€I'êMZ¢Š(¯™nùxWþ¾§ÿоš¯™nùxWþ¾§ÿЀ>‹ð÷ü€4Ïúõ‹ÿ@~¨x{þ@gýzÅÿ  ¿@Q@Q@Q@Q@Q@Q@Q@S&–8!yfuŽ(Ô³»œ*�É$ž‚€(K®iðÞßÚÏ?•5•ºÝÌHÄGwÎ?¼>FÎ3ŒW‚ø³Ç7&ñu”’_x?]´“n�uy?™c¨yˆŽm®UFØÝ•£;y#pÏ8Ýjö·švµä[î½¼ƒÍ¿Ò �»í¶®Aº°f=O!“?ôϨF­=#á¶“Š&ך{Ùín.£•tª`¶º*ÎU+•pÏû`?…ž µÕµ]A`Ónõ7ûMÝ…­Á66„g&0@Û‘ËØÀàW‚üGñV±ñãÇ�ø/Á,Éá»i7ÍrA (Sƒ;ÿ°?…{’R1­ñçâ6¥ã¿§Ã_‡{®DÒù7·ž&aÖ0Ý£\Íßè}·áÃ�7á¿…ÓO³Û5üØ{Û͸i¤ÇoE€?©4³ài^ðÍ®‰¢E²Þ—‘¾üÒ½#žäþƒpt4Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@ßÄèþ;ðìÚF½n$‰¾h¦P<ȳ¡ìB8ñ‰¿g_Â?â�-ÿ„/¼RF ]¹ÿ[z0ÈÝÿXŸ°«ŸñÏ„4øz}_¶[IÊ8áá|pè{0ÿë‚Egk>ð�ÄÝÂúò(õK P<Á3ÇæFH% B \¨Êžã¦Er>/մѬî.nc€»´÷/ºIÝ�Ù�©f&·k狾+ñNŸâK­/kG+J�øzÆÙgYîòƒuÏÚ ŒyW 0#qô¯†?tÏ[›!{ º½š¤7„,WS*)•íùË bFqéØƒ@õQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@×Äßù&Þ,ÿ°Mßþ‰zòØŸþI¶³ÿagÿÑ1W³|@µšûÀ~$´µC%ÄúmÌQ êÌÑ0ó5àß±F¹§/†u­î£MWí¦ímØáž3.åðPç2=héz(¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ á~:ÉñwýƒäþUÝWš~ÑzÞ�¤|#ñZ…ÔpÍ}lÖÖÑ“óK#`aGSާÐP7ûÉ_ûOü–Š—öC¶šƒvï4l‹=ìòFHûË�¹Š‘øQ@_¶·ü’Í+þÃQè‰ëÕ~ÿÉ,ðoý�l¿ôBW•~ÚßòK4¯û Eÿ¢'¯UøOÿ$³Á¿ö²ÿÑ @UQ@Q@Q@Q@Q@Q@Q@|ËûpÈ¿õõ?þ€µôÕ|ËûpÈ¿õõ?þ€´ô_‡¿ä¦׬_ú«õCÃßòÓ?ëÖ/ýUú(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠŠææ X„—SG e•7HÁFæ`ª2{’@¹"¼‡â�¦ÔumW¾Ñ´ýxZÚyÚ–�xï ·°:‚~ËÆ rOÓnj/�^+Ò5m?SðìºUλ¡Zy/®Ýiwq™´á濻à ÄwtÚ_LáÅ׎<3me©éº¦‹gïø¢Ù±y †Hñ†UÁ 1×�éž ÛâH4}RÒ =|–V×D %Í´ÁYNH;@vàuätëæ?´Å››9¿áðCI?ˆ/H‚æ[~^Ü“òѳÉþ}O|Tø¡ðÇáþ™á³6�qã™m„_ñ/‹d©ÈYcƒŒm\œœ6?g„RxjøK<[Kâ{àd�&ùšÕ_’Nå£g“ÔŽæ€:€ ­¾è?i¿Xæñ%êµL9¯_% î{Ÿ`+Öh¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€0ügám'ÆZÆ�¯Ú­ÅœÃ#³FÝ�f¿‡BE|­ayâŸÙ³Æ¿bÔºŸ‚¯å%YGÊãûéÙ%QŒ¯F�bÖ?‹|7¥x·A¹ÑõëDº±œr§‚§³)êv"€2¯-ü;ñGÁ­îšãJÔ"*—V�åʪq¹CuRqµ”öÈ"¼WÇ:N¥áívÏ Ðê�™l<¡hòmHnîg#Ðåƒq×9#‘FñOì×ã]¯çjž Ô%ü$£²L£ð`?ä}⇀n™|dÓµKY-ÅÔIa†ò¬:?�XðljmîÍž•}v¯­‹eiad†éÔ+ÀÄu „œdfºjùëþÒ¾x¥|IñTÑ4X,·Ûhº~Ÿº8åP›å£Ég••€=qžOLz—ÃOâí2ê[›˜M´¾Z]½¤–ðÞ¡åe‰dù€ÇU9ÁîG4ÙÑEQEQEQEQEQEQEQEQEQEWÏß¿g˜µ�bOx ühšÙs3C¹’'“®ôeù£lúd}+è(举%ücøf5ÐWÓ¢ãí3GŸ”ÓÄy_ûì]Ÿ‡joß]kNÔô©OV ³Æ?àJCãµô r^ øoàÏ–m_ÃZ\ò·Þ”@#�ÿÀ× úÐ~�ñ‡áö®ìž+Ó·Au!·?”�k°Óõm;R]Úuý¥ÚõÌ,ƒô5ãºÇìËðþø±³MSM' ¶ºÜýü üë�Ô?d»}Ú_‹n Ç*'³Y殿ʀ>ž¢¾Uÿ†uñö�Æ‹ãý€}ßß\Aÿ “Gü*�Ž–_ñïãß<ƒûbå¿ô4 ª¨¯•áý¡"ùSÄûÁç?où­ðŒþу�í¼ÿÛÜá@UQ_*ÿÂûCK÷üG³w_ôäü—ùQÿ ÇãÍçøßÈŒÿkL¿úPÕU ÕÕ½¤~eÜñA÷¥p£ó5òßü(/‰ú‡ü†~ ‡ÏÞÿNºŸÿB¦µý“Úiº¿Œä•ÏÞYsÿ}4‡ùPºjßü¤†ûwŠôeeê‘Ý,®?à(Iý+€×ÿiŸiªÃN}GV�p>Ïlc\û™6œ~©é?²ß‚mkûÍfý»«Î‘¡üAýk½Ð>ü?Њ5�…ô÷‘yt¦å³ëûÂØ?Jðû¯�¿¹¢¸ |WðOŠÕ“â /´?Kk‡ò%Ï WÁ?†Ew‘ÅQEQEQEQEQEQP_^ZØ[5ÅõÌ6Ð/Þ’i(ú“ÅO_2þÜòð¯ý}Oÿ -wž6ý¡< á¸äK;ó­Þ¯Htñ½3ï)ù1ô$ûWŒÛéþ4ý£¼Wc«Z'Á¶nv• BFàŒFd�€ì`c·Bõ¯‡¿ä¦׬_ú«ôÈbH!Ž(”,h¡UG@S袊(¢Š(¢Š(¢Š(¢Š(¢Š(®[ĺö›qswáxu©týjâÕÙg·ˆ¹´xv|CÓˆ'ŒuÔ׎|Fø/‰5›ÍJÎêIΣ0’âËP¼”YÂÞPŒÎ‘FyTÀ,q€0¼ à e|W êvÓèž!ÑJ×´Ø—ìºå£9ÊJ‡Í ’ Oð×gñâ�ð—Áè–Vö˨J­�§D¡=ܨÆIÉÇSÇ|�_x£GøOðòÞmBi&ŽÆÞ;;H™ÿ{tê�Usêq’{ šð/„>Õ~1xÎoˆ?ɤ,Ÿè¶ÌIÊŸ•ùd�ÿ¼sœüÔµû<|0¾×usñ#â™uu'Ú,a¸±='aØtؽÿv¾›¡@U  ¨ Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š(  ¿ègŠ4K­#\´K» …Úñ¿èAêêäWÉ×6þ)ýšükö‹_7TðN¡.?vAýÖì“(èz0P>Ŭïèšwˆ´k­+Z´ŽîÂå6IŽõ¨ òäEsöSøwâw†ôí_Kºi#ŽA=­Ü,ö“£�v·8e ‚ ƒ^cñsÂÞ!ÕügªÎº5æ¯$ÐEo ÌÓˆ¬´ S\Hw%VÉSŽ˜ä�ó­WMñGìÝãOí- Ë©x2þ@®®~WóÍñ÷e;_?š�£ío¼=ñsáìÂÂúá´­F?*o³ËåMà´mއ± ƒÜoÃ߈ŠãMÓµ/µÝX0¶7aEë" òCÎ]Aê@î;Oo^>›‚S¯íáÏ–æÁµH—§îmî2?í™ùóKÿ ë⎓ƿðÿzŸ°ÜÛçñb¾«¢€>Y‡ö²x[ËÔ|ñ¸ë³PÁÿ¾L_Ö´ ý¬´6¿ðÖ¦‡ý‰£oçŠúFhb�6ÍH¾Ž �Ö³gðÞ‡9Ìú.™!õ{XÏóá±þÕ¾9ó4Mu}6¤'ÿj ü5oƒ¿è âûõÿ¯b“ÀÞ“g…ô'ÇMÚ|'ÿe¦Âàïúü?ÿ‚Øøšñ™jÿ ŒùZ´Üñ»Ê_ýœÕ ŸÚÓJ\ý›Â·Òzy—hŸÉM{ä^ ð¼Xò¼7¢¦Û‡þËW­´M*ÛfÓ,aÇO.Ýù ù”þÔúÅù+¢ø{tºy¿EŒR‹ßõ¿—Fð/Ù‘ºH4¹Ïþ<í·ô¯ªÀtŠùLé?´g‰øº¾m&è|ø-¶�ûe—üù©lÿfMZ¹[ŸøÕî%xD$¹cÿm$#÷ɯ©è )ðwÀ?xeÒa¥¶«v˜"mI¼îÜÀOüv½V4XÑR5 Š0ª£AKEQEQEQEQEQEQEQEÆFzâ²|Wâ-7šæ³­Ü-½�ªnv=XöUØž¯Ž~/ü^Öl~:ÞjÞ¾1äãN� ÌSªæ^Œ –ç®�AÕ«�oÄ?´Ÿ�tíÒt(ÅÄð¬›Ä``<�·¹'jŒpûÄ€_ðÖ“­þÑ¿¤×5å–ÓÁúsìXUˆzˆP÷và»vŸ(¯¯,,íôû(,ì`ŽÞÖÅkµQ@ÀvU/ h:w†4+=E¶[k TÙ/êIîIÉ'¹5©@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@uÍ&Ã]Òn´Í^Ö;» ”1Ë ƒ!‡ô=ÁƒÈ¯’¼C¢xŸörñŸö߇ º‡ƒ¯\$‘È~R3ÄRãî¸çkãŸÍkì:©«é¶zÆ™s§ê–Ñ]Y\¡ŽXeWSØÐc{áÏ‹þŠ÷I¼–3ËCq ùwZuÆÒ29W�±¸5äž>ðÕ÷€ï<;i èfëÃzrk·Ú•ìÛcº¾ $î2ÌTá‚–-´qÈåüYá¯þÏ1ÿ„“Â--÷„®˜$ÑHIP¤ÿª—?,Ÿ‡¨?Dø{[ð¯ÆÈV8ï´ËµÝÙJpð¸ í|©=�€9ï…tÍz-#D×5« ü[sO4vˆVbr!Ê™‘� äõšùËUøS¨'�í¢M6 /nídÔíšRÞÑ�›n~ðš9�p Ië�£mP '¶OzZ(¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ ä~-x©|ðóZÖ÷<·¼Ïò§þb öºêù“ö´½Õ¼Q®h>ðÅ�ÅýØÚ0Û®ì”�qè  ä“Ç ÐÉí#³ÈÅ�ŽK’O­vß ¼9ã=kÄö×>‚é/­\7ÛPìŠ÷Üü¸#?)ÎFF {çÂÿÙ~ÞßÉ¿øƒr.%ᆛjä ö’AË}Ü×ÒºN™c£éðØéV�YÙÂ10F{@è+©&�fºëÚɪ€¹{PÂ&~åCs�­_¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š¯©XÚêvZ…¼w6—c–Wrºž Šù#ÆÞñÀx!¥ºð¼ìx$%–5'ýTØþý×ꟽõýC{io}g5¥ì1Ïm:åŠE ®¤`‚Q@G…|EáoŒ~�ùQÝÙN/tù�Ï ‚+cž£!‡\}k”ñ_„ Õ>$ê“øÂI´…± ¢]B§ìz`Xs,®Aù% VaŒç¦<¯â‚|FMFîçÃZþ£kw¬iÏ£j�[_ÎT–HÎÕ×q‘ÜS¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢¸ßüLðŸ���êðÅuŒ­¤_¼�½>Eäêp=ëÄuŸÚ†óR»6^ðŒ÷“¶|¶º-#·ý²‹Ÿüz€> ¢¾R¿´W‹ù‚ÙôKWê pÚíÿ¾ó-/ü(O‰Ú÷Íâ� 7T7—8öÁÚ?héûý_MÓÁ:†¡gjü÷™SùšÀ»ø“à‹C‰ü] +ª/âb?Ù¯°ý’ôõÁÔ¼Yw9<Ÿ"ÍcþlÕ¿iû+ø&!›�G_�½ç‰Gä#Ïë@ôß¾Âpþ,Ó�ûŒÍü�ªoñÛ᪠ŸÛŸ¥¼Çù%aCû4ü;Œaíu}Þñ¿¦*Ú~Ο Täè·ì×ÓF  ëñëá¡ E“ëk8ÿÙ*Ä>I�¾*´þôr�æµ–ß³¿ÃB  ú‹éøÿÇê ?g‡ Ý.í?ݽ—úšê­þ-xã<]£úépÿBÅlÙxÓÂ×Ä /h—$ôßÄùüš¼¶ãöað¹òÛYƒþ¹Ý©ÿÐ�Ö-ïì¡áwì:öµ íçyR%Zú"c™Ã"H‡£)Ž ;h.n. ·Š;‹’iiÇ©À ö¯—¥ý–5=>C/‡ünb“¶ëV„ÿßI!þUøyñïÃv‹â£©¢}È×Q2qé¶àJú²ŠùE¾/|cð_üŽ^ûmª}û‡´hÇýý‹1�Ê»~Ó~Öž85Ènô+†ÀÝ(ó¡Ïûê2>¥@ w¢«i·öz¥”WšmÔv’�ÑÍ�ÑǨaÁ«4QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEͼ7VÒÛÝD“A*”’92º‘‚=Aò_į‡úïÁ_/Ž>´­¢nÿIµ9q“Ìrâˆö=Tãœà××É¢ŽxdŠhÒH¤R®Ž2¬zŠà>xçCø·à«Ÿ³I%¼ÒÂmïìÒb“[–R`àóµ‡èA“¸ø©iž'Ñá²Óo hn’hšUœÞ\orº¼•†A N0žÃ®|ëâ§Ã}ká‰�~4‹¥ÆÅ®m,-ÔŸ™X'ó^=ÏÅïÚQñŽƒg¥x~ ôhd�[Pq'ïOùæŒ:GÆsÁ=rõÖ‹¤j‹z5{V’âëiT´µÌV�ƒè¹Ý!ÿiÉõ µ¿\?Á'�>išÁ`oBýžñGð΀úg†Ì+¸ Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ¼ƒöšø…à/CýˆÞV©©ÌmâŸò.]Çû]ôÎ{W¯×Ì¿·ü€<+ÿ_Sÿè @øKû;é÷¶¾#ø…s6­¨_*Ý}�L|±¸nGs· œ;|Ýkè}DÒ´1i¢iÖš}°ÿ–vЬ`ûœO½|“áÏ|Jø'gicâ]!õ_ •SnîIDB2s€võûŽ8ì{„ÿhÏkª‰{y>�rÝc¾ˆíϳ®Wçì”Vv�¯iÜ"]T±Ô#ÆwZÜ$£ÿ&´h¢Š(¢Š(¢Š(¢Š(¢ŠF`ªYˆU$“€(k‚ñ¿Â/øÊ9©¢Á ÛÿËå˜Ì©eá¿à@Š·â?Š ðâ¿ö·‰´Øä^±E/� ÿ€&[ô¯ñwíEhò}‡ÀZÖ¥}!Ù×jUKvÛ’ÏôÊÐ,Z÷ìáñ+N·‡TmGÂú£îxIǙ୹?†EÈ!‡^=Àû&¿<þ*iþ9:¶‘∢d¼Õ™¾ÏÄ+ÇexòǯÏÂðz’;ŸÐÊ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Šùãö²×üim¢+AÒ/#ðôÑæÿS€oÞXÎܘÓÔœnÎ:g?Wê¥yoÄ�~ ñ—™;ØejO“ö½<ËVLmosŒûÐÎÿ²/Ž?áñËø~öRº~¶G“Â\/Ü?ð!•÷%}+íªøgÆÿ³ç�¼r5 þ'V¶î%Ž{VxÊœ‚bëœ�á-_\ü*ñbø×ÀÚn®ËåÞ2ù7�‘´Åpœ:‘Ûž@ô"€:Ú(¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ ù—öàÿ�…ëêýkéªù—öàÿ�…ëêýhè�4›Ãz|r¢¼oiea�FÁÁÂx§àgÃÿ³É>…�ÃËm=�¹ÿ¾Wä?Š×}áïùiŸõëþ€*ý|ɬ~Ê6‰/�á¿^Z:œ¢Ý@$?÷ÚÇןÿ —ãg‡ÿäãoµB¿v1©L?ñÉhüëêº(åO¶~ÒZ7[ø—§Ég.ïŒ7çKÿ [ã¦�Åç�>ÒSý‘p߬oŠúªŠùWþâM·üü>ÚG_ôK˜ÿž{Ñÿ /âÔùeðÎ:üÓÓm}UE|«ÿ 3â¯úÿñùøŠ?á£üm?üzx9à|“¿òQ_UQ@*ÿÂðø½yÆ�ðó9è²îäþL(ÿ„ßö„Õx´ðÏØ³ÐÿgˆñÿX×ÕTPʇÃÿ´n»Åö¬tånÿj·‡þØ‚­öqñ¾¾ÀøËÇbPNXy“^üˆV¾«¢€<ÿ²çƒ, ¾±w©êÎ:£H!Œþ7ãÕë¾ðg†ü)Ïè¶:y#âˆyŒ?ÚsóÄÖýò¯íµÿ!_ÿÛ×þ… }U_*þÛ_òð?ý½èP×ÕTQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES#Š8ÞGŽ4V�îrªcŒdúð¬�x«Cðžžo|Gª[iöüí3?ÌävU3` ¯ ñOíO¤C9¶ðŽ…yªÌNÔ–á¼”cþÊ€ÌßC´ÐÒWÊ#Æ_´ŒùÑ4&Ñퟣ D€mõÝpI?QøS‡Á¿Œ~"ù¼Gã�³ÄÝb:„Òcþ 'ë@R^_ZY.ë˨-×®e� ýkóâƒl².¼Y ÄÃø[P‹wå»5à–²rHþn¯ã¦‘¹o*Ëþúg9ü« ³ý•< Ö­¯NGe–$ÿ!“úТ\|cø{Ãø³L?õÍËÿè Õ~;|5�ïx¦Üó�–ÞfþIXÿ³?ÃØ‡Ï§7ýt¼#ÿA®Åû:|5O½¢ÜIÇñ_MýPÿø_ ÿèh‹ÿ.?øÝ>?Žß dû¾)€½o2ÿ4ª?ðÎÿ ÿè/þ\ñtÉ?gO†¯÷tYÓýÛé¿«ß·øÇðös„ñf˜?ßrŸú­gñ Á—˜¾,ÐdcÑF¡ïËvkÏ.?f‡²�’ N÷/ ÿÐ�¬‹ÏÙWÁ²dÚêÚô {4±:�ü†ë@õgi|»¬®­î®b�8ý X¯—odèão3Hñ„ðȼ¯�e“ÿ}+Œ~UTüøÅáß›Ã~8óâ^‘ Bxóÿ`Sõ «(¯”O‹ÿhó¬èm¬Û'RmàmõÝnASøÖç…ÿj}.Iů‹ôÍ2e;^[fó”û�…eú Æ€>’¢±<'âÍÅÖlðÞ©m¨@1»Êo™3Ð:Ÿ™O±¶è¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¯™nùxWþ¾§ÿоš¯™nùxWþ¾§ÿЀ>‹ð÷ü€4Ïúõ‹ÿ@~¨x{þ@gýzÅÿ  ¿@ËüPñOü!^Ö¼@"Yd³‡1#}Ö‘˜"í¹—>Õá‚þ,øŸÂPøÍ~"^Ûjw�}¶×KBÂB7 0EÈÇädÐÓôWÏ:gÇû›/‚:g‹µ%5-GûKû"ê4Ÿìêd´ž`;[ª…ÈÇV8Æ1]çÅ߉—^Õ|/¦éþþ۽צ’ÞþÚ-± h•FJ0ùŒ£’@ü€=*ŠùÇâwŽüCð7ÇZµà¹…Rî7‡[´¼$ó­ì±Ä¸u]ŒÍ¿8;ˆ9$× øSãUæ�áÿ¯Šü7ªA£j6Öö‹¯Ü]+™¦ª´Œœ¶ÒÙmÌÙa–пQ^k㟊h¾/·ð§†|?sâO¼?i–Ú+…·Hcë–‘�ãœc¸ç‘\¶µûBØY|=_ÚhSÍ}¦º]î—qqäÉm!I%¶6GîÈý1Š÷:+€ø�ñþ¿x/FþËûoü$w¦ÏÎûG—öž$Ý·ißþ·8Èû½yãÏtOÚTÖü%¨ëÚgÃÛÛ‹m5Ûí®šŠ¢Œ(;ƒ ÍËeBð$óÀÐ4W“ë¿4�?áç‡üMc§]ß\k¯äØéÊBÈò*ê[œÃä‘Ç5ÃÚøßĺ¿í9á7SµÕ¼=ö|‹w£½ï™Ž"¹q ØvH1³æÆAL }!EPÊ¿¶×ü…|ÿo_ú5õU|«ûmÈWÀÿöõÿ¡C_UPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP\÷Ä/�ø'Y×¼Ÿ=¬mÚTŒœ~жHϵt5ç_´?ü‘oÿרÿÐÖ€< á?Ã-CãUÝÇ�~ k7Y<ÍpBà<…z¨íc8 žzu?PxOÁðŒ/h¶V82$y•¿Þ�å›ñ5ñ�»߉^ðÜ~+ð�£êº‘ÅͰS4a�í%Ð|ÈxûëÛ=«Ü<ûPøSSD‹Ä–—š%ÏFp¦âýTn÷Ïã@@Q\qáþÄñ™xíÒ8îÌüP�ÃñÑPEPEPEPEPEP\ÿŠüá¿Û˜¼G£Y_ñ�$‘âEì¸Ã/àE'ˆѵó�ï`$c¢¸%XmÀãÚ¾7ø¥ñ/ÇþŸÅ^(³}?Ãn† r¦Ë;üÎ~o¾xÆpGJú�önÿ’%áoúã'þŽzôª(¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ ù—öàÿ�…ëêýkéªù—öàÿ�…ëêýhè¿ÈLÿ¯X¿ôWꇇ¿ä¦׬_ú«ôËüPð·ü&žÖ¼>%X¤¼‡;}Õ‘X:í¹W>Õá'Œþ-x_Â0ø1~^ÜêV�}Š×TŒ3BˆÔ' P�1ƒ¼GZú~Šù[żA¥þÍÖZ•©½×"ÕF¯ymnw·1´eSxª”Î:àã5sÇ·Þ&ñïÄ/…š”~ñ›§éºœo<—V‡(Æh …‚䢃 ØÏÍǾ�®ƾ1м¥E©xžûì6RÌ-ÒO&Is!V`0ŠOEnqŽ(å­ÃÞ&Ó>ø÷À÷^ׯ¬o£¼ŠD²wŠuó­T¬l3½±7�£9àÖ·ˆ4ïx÷À~ðø7YÓ%°kg¼Ô.¡Ùn‘$%‡þöÇ%”რ`šú>÷Æ:—Œ¬<)s}³_¾„Ü[Úù2ñ€ä�áv�õoÁ ñî+  ñ>›®xãÝïŽí|?©ëú.¯§‹I“L‹Îž û™Î?r¼ôù�¦šxƒáWŒu†Þ)×$Ñæ‹VÖuôÕÆ’¿4É ‹�÷½›ƒòõÂôí_bÑ@1xöûÄÞ=ø…ð³R�Àþ#Ótý7S�ç’êÐåÍ�°\”@a›ù¸àÕ�‚^ÖôïÙ»ÇÚf¡£jVº�ÏÛü‹Ií]&—uœj»PŒ¶X09Uý¶¿ä+àûzÿС¯ª«å_ÛkþB¾ÿ·¯ý úª€ (¢€ (¢€ (¢€ (¢€ (¢€2üS­[xsÚž³|ѬmÞáÆp[hÎÑîOÜ׊ü.ý£­¼mãKÝx{û+í�–+ƒ}ç áI G–½pFs×µ[öÉñKÙxKLðµ“3]ë‰%D䘣 ��öœ®?Ü5çßþMðÛÂ_¼E£¨‹QÒ„p^Jƒþ^7•Î:�þ`ϦÑ@dW¨|HÑ-~%i~…Þç[»ÞÓ*}ÛUXZQ¼ú°Q€;œq�ÿ ë–Þ%ðΗ­Yô{ët�Fs·pÉSîA÷ñgö_Ä?øi?°né¿ðŸÐKËgÿ�=Ý<¬©ùÕõüèëOŠ4O†ú"^ëNò\O¹m-"ÿYpËŒã°#$ôÈêHµ¯‰¿jÛYÞøe¼c«XßÛ=®ËT¶@¦9–qtǯ/̼ž;/JúSÃg↾k,’×Å>&ŠG–Î+±«Ç±¡ù#6òx'Œœ ôZ+çö‡Ö4“­C¨éPu2&”öè³c²á¢lèή+¨ý�¾,]øûÃľ$[xotr�=ÄCb)¼Ñ5"îo,ÚÛD¾Z6 ye¶+ƒ€Ø9aÇzú–ŠóЬ¼ðÛOñ-­¸¹¹Õ¢�´ûyMûŸ óާŒäyÊ]þÐG@ÿ„£ízA¶ò¾ÕýŽ`�Íòñ»ÙžŸÃæní׊úVŠò¯|dÓ|Cð§Qñ~¡ÙeÒ‘…ý´g?¼P žÏ‘Œ÷8ϯ5ðw‹~5üMûV½ák�HÑb”¤V÷1)IHꡊ3±ÙQž˜è=+þçü_oøWØŸ÷û_ý:ùÿê¶À~÷¿µz­|gð÷VÕu¿ÚöÊ÷Ä6 §ê奆êÙU$ŽÁã%O¡Ù‘Éàõ=kìÊ(¢Š(¢Š(¢Š(¢Š(¢Š+οhù"Þ+ÿ¯Qÿ¡­z-y×íÿ$[Åõê?ô5  Ù'þH¶Ÿÿ_Wú0×câ߆ ñk<šç‡ì¦¸½q˜e'Ôº`ŸÄšã¿dŸù"Úý}\èÃ^É@:xƒöSðÕÑgÐõ½ONcÑfT¸Aô)üÉ®{þ7ÅÈ©ã±å/D—Ùî�Ëùšú²ŠùSì?´–‰ÄGP‰zŸ2Òlÿßxj_øX_ôÏøúð�Úñ×þ%�&ïÓ úªŠùWþ¯Å‹Oùü<ÛŽ¿ñ-»‹ù“Gü4�� ÿ�¿ã–tçñS_UQ@*ÿÃLø«þ„?ü~_þ"�øiOÿ¾ÏaòÌüþ +êª(å_ø^ß.¿äðóq=?â[w'ò"�øXµ?øõð‡Ù3Óþ%�?ïëúªŠùSì_´–·Ä÷'O‰º2ÒßzOøQ¼BâªñØ7T7—8î�«ùú²ŠùÏ@ý”¼9jUµÍsRÔuX-Ðý~ñüˆ¯Xð—ÂßøM’MÃÖQܧ+q*™¥Ô;ä�ÃÚQ@AûXÉÕÿ뵿þŽZÕý›¿ä‰x[þ¸Éÿ£ž²¿kù"Z¿ýv·ÿÑËZ¿³wü‘/ ×?ôsÐ¥QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEWÌ¿·ü€<+ÿ_Sÿè _MWÌ¿·ü€<+ÿ_Sÿè @Eø{þ@gýzÅÿ  øö/ˆ>;ñlz¿ˆô)Âð÷ü€4Ïúõ‹ÿ@åà�݆¡©'…ñ›s®kV·š?ˆ­í’V½oµ"ÿ°,Ÿúåv´5׋lþO/�äê>z ÚÑ7L�a·œçg#� 5wYøuý¥ñ—Bñïö§•ý—dÖaû>ï7"a»ÌÝÇúî›OÝëÏŽ|;'Š<=6�o¬jz5Ã0xï4éÚ)‡®Ò7)Ï*zûùëáw�í¬ï5{»Oø–îK=.âê_x’/:YdŠ&rcœ6~îÜãÖ59oï-ÖÁ¤Ò%· AHBg 1‚p0sÈ+Ϻxwà󧌉|mâIüQ©%›ØCæY¥²,L¬Œ);Ž×qž>ñÎxÅMà¶¡¡Kka§øÿ^·ð­µÑ¹�K· 2NJ5Â0b‡¸Æ9'ƒÍrW±xƒÅ´ïŠü1‹¼A¤è°XÅpÑX^2m+~#*„»‚H#pþ#YÚ§‹u¯†:�Å V×µMA¿³c¼ÑnonžIÌ",¡'‚QÓþy“^É£|:þÍøË®ø÷ûSÍþÔ²[?°ýŸo•�ÝænçýOM£ïuãš>iÿ|OáÝbîóìÇLp."ò<ϵÂ8Œ�Ão!¹ÁûçŠòï]xŸEøÓð»BÕüA­\‹½îïíîo¥‘d™ÖíþufÁ+„^¸=+_J—Ä_~(xîÉ|Y¬xMðÜÂÎÒ 2_+|›¤Pò|f&$ïÅzN³ðëûKã.ƒãßíO+û.ɬþÃö}ÞnDÃw™»�õÝ6Ÿ»×ž1uÿ„7OâýWÄñm熧ÕÓf£VÉ:Mê˸�Œy9ä‚IÍyÿÅox»H×¼àmGSÖ§¹–ÇíZ¥Ï† ÿM»9�ã’HÇRqÆ+¹ý�5ŸßXkÚ‹ìõÔ†ÆáN�w¬Ú4Àûð# Ë´‚q¿Æ*ηðfÖâÇÂï¡kÚ†•®øv/&ÏTeÊrH‘[†K`dŒcŠë>øV÷ÂÚ}Òj¾$Õ,øVˆ0ø7íSÍ«ÊQÁ›vÏÈYI €2r0äõÆ/޾x#Æ´Ú�Ìšuìí¾i4ùV1+¬U•—'¹g©­O‡¼#ðþí¯t[I¦ÔJ”—’y’*ž¡p®}@µxÁ¿n¼‘œÿå2ºÏÛ[þIf•ÿa˜¿ôDõèðª´?ø[ð°¾Õ©mÏ1>Ïþ£Èû»7}Þ~÷_n+Câ‡Ãý+âF�o¤k—Ð[At·jÖnŠåÕ@%•†0ç·¥|ÓûDi×S|øI¨Æ¬m-´Ø¡”Ž�¤¶„¦ïÛW[¢|1×µŸA¬éÿõ§Ó$ˆIço”* d†ÿIùHèAé^òžÑÛÁ6¾¾¶û~�œV^]κF¡T’ù¾Pr1ƒÈÅyEÇì»à9nÌÉq®Ã9òé l´e¿ZägøPžøñ=Äðx’-Bk…kXB,k›Ü‚²8l®}>ïzíÿdßiw_,´èî [Í2IÅÔLà2†•¤G÷pÀg§Ò½'Àþðÿ‚4wÓ|;§¥µ¼‡tÌÄ»ÌqŒ»OÓ ìyÖ³û5øSÖý#Ô¬QÛ{ZZ\*ÂO|¤¨öÛå>Öl´ñfŠoín­SdVi"}™G‘äž o$‚X’Ù,Iö¯P Š( Š( Š( Š( Š( ¼ëö‡ÿ’-â¿úõú×¢×�~ÐÿòE¼Wÿ^£ÿCZÀý’ä‹iÿõõqÿ£ {%xßì“ÿ$[Oÿ¯«�ýkÙ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(È?kù"Z¿ýv·ÿÑËZ¿³wü‘/ ×?ôsÖWíaÿ$KWÿ®Öÿú9kWönÿ’%áoúã'þŽzôª(¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ ù—öàÿ�…ëêýkéªù—öàÿ�…ëêýhè¿ÈLÿ¯X¿ôWë?ÃßòÓ?ëÖ/ýV…QEQEQEQEQEQEQE|«ûmÈWÀÿöõÿ¡C_UWÊ¿¶×ü…|ÿo_ú5õUQEQEQEQEQXóx£@‡X}&msJ�UE,ÖMw™@Mä”Îà6|Ý:sÒ€6(¬í]Ò5Øå“DÕl5â;dkK„˜!ô%IÁª—Þ/ðÖŸ~loüC£ÚÞƒ�³Í{IŸM¥³@”R#+¢º0ea�AÈ#Ö²5Ÿh˵®iZt¬2©ww,G°b(bН§ßZjV©u§]AwlÿvX$#}àÒßÞÚéö¯ss­²ròÍ D_©< žŠÈѼM ë’ø—âßø®Â-.ûPQ«Gi†Ž6'æXÈfuþ#€˜' ЦÃñÓá´ÐC*x¦Ü$²˜W|! 9  *¿0ùޝ<léß¼©ø£þÛÙ\jä•Xc,Uˆê«&61öšùSÁÖvÇöBñÝÙ‚3sý± ù¥Fì+ÚàgÛ{ÿßGÖº¿Z[Ù7ìÒÖ°Ç HmYÊ(‹5›ýK±ÿ�÷üZð7…µ‡ÒõßAo~˜ß Å$¥3È QHSŽÇˆþ0xÃ’ÙG«ø‚(�í²Þ[´VóL²BÅ‚°hчUn3ž+çßx˜êºßÅM/PÖm|)eaç,:e•´qM¬Ìwª´��ϸ„-ê¯Øit�ˆO¥üðgƒtmFÚË\ÖÅÄrÞ\Î!ŽÆØÝL¦Fv ) ;às· Fi¿<¨øRëĶÚìØ–³›ineŽH€”*¶À®¡˜á— 9ϱ«ž ñ÷…ül“Ÿ ë_´2F£u¡(à6=ñŠùÛ⎓á½Âß cðõíž«à­'X ¬\ÚȳÇ$¤ÄÌÒ”$n+æpz¦+¥Ó/l|EûYYj^ ž ­2ÛH+ª\Ù�Ñ;�(,8'&ÿö @¾»ÿ„¢%¥0€mæ¸Oɳp0ù±Ž¼ðkÐt½BÓVÓ­ïôÛˆ®¬îIÑ6UÔô ×ÊŸôÛ9¿f?‰72ÛB÷ ·ªddˆŽÑ}˜’= ¯aý—X·À¯ $œ\ŽëæZàíþ4|Fñ\š¦¥ðóÁ–7¾°™¢in\™ŸhÏÌ_˜‚ÕVÆGZì´¯‹×ž ø@|W០]êZÀ˜Ù¾›i<¹€±*2P) ÀÏ qÖ¼"ëSðd> ñÄš�ˆ¾xžÞåÕ­,&’ê Øu *!lü¤…ÁàñëŸ >-ߨüOxúÛP¼XoZÑn-`RóE�¶V¨ÆâÉ»ÔäšÔðwÄŸ'Å_xçKÒúòÏí‘M¤Hì° ¬Û%NŒúíê5ìµóoƒîôÓûQ™þÜÇ}¢êÚkÞk2C'œ‹+;Žv�þWʈÀè>’  ý¬?ä‰jÿõÚßÿG-jþÍßòD¼-ÿ\dÿÑÏY_µ‡ü‘-_þ»[ÿèå­_Ù»þH—…¿ëŒŸú9èÒ¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š+Ï~7ü9‹âOƒ[MI–ÛQ·“ís¾v‡‚­Žv°8öàóŒB¢€>Fð¯Åß| ’ üGЮnôûp#·Ÿ8•c6I÷%P: ‚:gŒW¸øOão€|J¨-µû{+†ÿ–‡ú;é–ùIú1®÷TÓluk'³Õlí¯mïCqÈ�õR¯!ñOìÛà-iž[{Ívç6Se3þã†{.(Ù š+ˆV[yXœe]2‘ìE>¾U›öiñ^ƒ3MàŸy/œ®ã-£~-lþTßì_Ú7ÜYê-ªD½OÚ-çÈÿ¶À7åÍ}YE|©ÿ ;ãÆ�Æ¡à³xï7öT¯úÄØ¥ÿ†�ñµ‡ü…ü´Ž¿$ðÿèJhêª+åtý­3²ïÁE[ý�K¡Š¬¯íke�»Â7 ÷ÅòŸý’€>Ÿ¢¾cÚÓMy~¼cþÕâ�ý”ÔþÖöÃýWƒ¦n?‹Q Ïýû4õò¯ü5F­wÿ ßn'§úcËü£Âõø±©q£|>Îzì멱ø‚}UE|¨|EûFk¼XéN ÿN°C�ûüI¤? ¾7ø˜ÅAã±@ß~&ÔdÿÐ"Oç@JxƒÅ‡b2kºÎŸ§€3‹›…F?@NOá^3ãÚwºJI†-îuËΊûLîÌ7Áyõ¬}öRÒÖ_;ÄÞ%¾¾‘Žæ[X–ŸvbäþB½Á¿ ¼à÷ItMÕ.“‘u83L¨gÉ_ø(Á|àO|`ñ½—Œ>$FöZ%³+ÁjècóTÂ8ã<ªÉf䎄õXÑEQEQEQEQEñ¯�|=Šÿl;�æIc¶»’ŸÊr¬Ñ g\Ž›”>ƾʯ•æû?Ïý(³øË›ðcàåô>³Lº�â[ c‘ÝÕ�X³ob[;# sÆr+È< cð'þËqãnîoÜÅæ\Ì#»ÞFäªmM‡oL�Ù9=+èïÚÁ>=ømw¦i¡[R·•/-QŽŽ€‚¹= V`=ȯðÄ/x[@µÐþ!|.ŒkÖH iF�nÍq·€Ïæ`ØÆOÍ“Ïzêd?JÚψ¼º‹ê:M˜k­6w ¿ºY6rªÛ‘¶œ`“êkÉ<1qá{oˆ>$�㞟ª\êÌG˜¯ ɸîf Áˆ#nÜd`tÁô·Á½RËÄV:¦£á¿‡Þ»ò+kù,¢Ž9‰åW*¨ì¹ Hq×8¯*ºø”ö7úž•ñÿÁ'R™dÿDž³ô*ŒJåPÁ‰äþ�û7øoÂz+j÷^ ñœºå­×/b@Œ@7|ŒÑŸœ0.ã€yã¦<ïX‚�Ÿ´^£á½Zòâ/ è&aöh›nDL#r;niïc;xíQ~Ï>¸Ô¾5Ï⯠è—Úƒ!IGrÌ|ÀÑí†?{çùñ’g¦t|i¥xƒáÆëßizEÆ­áÍPÈ×BÝI1‰iˆiÞF9Í?ãÏ À^Oø®ô{ý*h‹ˆî]÷p��bH`̽0O[ãωæñ—ìÉàÝzéT\Ýjq‰¶Œ"ErŽ@ì )8÷¨¾'|R¿øÏ£Eàÿ‡¾Õ�n¦F»šám A v’ª»€%˜Ž�9®¯âÿà BÓöpѼ7£D÷÷šÑÝÊ�)f”âO4 ê~iY±×€={á?ü’ÏÿØÏÿD%|ÿû Ìíÿn?ûqV¾ür¹“Àzg„´O j÷Þ,´´M>%�ÈWbÈí�Ê�F8<޵Wöÿ™ÛþÜöâ€9ÿøz/þØw:%Ì’Çmw$ ?”åY¢(ι7(*}�u?´réÿ >XxgÀv§H‡^¹–K§ŠWi#T »Ø–ÁÞ½ú;š­ÿ7Ùþè]÷íQð÷Qñ¿„,nô(ZçSÒeyÝ~ô±8Âú°*§ðqÎT±ý™ü<–WQ]6¸Ð Úˆ¸pVR:„ÎÍ ö œwïMÓtï|øâ95MjßRžÕ°XÑŠÚ4Œ#3}å ÊÀ`Ï­`Z~Ó"×ÃI§_xgWÿ„Â(|Ÿ+Ë&” n9;ÆO;vŸL÷®ŸÃG޾$ü×´ïˆB[ÝJ0,Ûù2�¸uyTpu^6‚'¸ ø^>Þèsê_õ»»Ï^Í#Ê’-Ùò†pè׿c÷²Iê85ÕþÎ^(³Ðþ2ê>ðέ>©á DI%‹L¬¥]SÌÎÖƒ€êx°¥bøÄÞøo¦ÉáÏŠß #žþÚWò¯N™ÒJ¤“†i1¸N1Àí^Áð_Ä>ñWˆžçAøW… ¸fƒY0D#ÜHb RÜx ñ½Æ“gûCø‚OŒ•î�ÒH¶© ²â-ÃÈa†RP&rõÏR¯Yøá¿ÛxÞûYðŒçž9‘€Ñ÷ec#£‡ùÜ+rŽ9<çÅ_u¿øÃTÓ>5øRoÃ�‘e-¶ž�àœV%ùÉzá6{ž™ÀÚTQEQEQEQEQEç_´?ü‘oÿרÿÐÖ½¼ëö‡ÿ’-â¿úõúÐì“ÿ$[Oÿ¯«�ýkÙ+ÆÿdŸù"Úý}\èÃ^É@ú~‰¥i··—šv™ciwzÛîg‚Ý#yÛ$åØ ±É''=MhšTºÌZ¼še‹êÑ'—ë[¡�Ÿ”I�À|ÇŒ÷>µ¡EbÃá?A£O¤A ié7$šÉ,£Hãn£ ´Ÿ•y#øG ©gðæ‡qý™çèÚl¿ÙxûûTo²cn<¬�“q÷G ­Z(.çú-Öªš¥Î�§M© näµF™@é‡##󬶸wঠÁþ!F2IÀù}Iü먢€2¬<7¡iÚ\únŸ¢é–ºtì^[X-cH¤b%� €#°©tmJÐàh4]2ÇN…ÎæŽÒÝ!R}HPkBŠÊÓü9¡éÚUΙ§èÚm¦›s»Ï´‚Õ#†]Ê· l¨är*Þ—¦ØéXéVVÖ6QgË·¶‰b�2I8U ’OÔšµEcjþðö³t·:Æ…¥_ܨeº³ŽWذ&´��±²6fÚhSËò ›1�»zcªz(;Eд� 9#Ñ4« :9ç[Kt„1õ!@ÍhÑEyíaÿ$KWÿ®Öÿú9kWönÿ’%áoúã'þŽzÊý¬?ä‰jÿõÚßÿG-jþÍßòD¼-ÿ\dÿÑÏ@•EPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP]A‡UaèFj»iÖLIk;bO\ļþ•jФšF›&=>ÍIô…Gô©¢³¶‹ýU¼)Î~T§¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ ó¯ÚþH·ŠÿëÔèk^‹^uûCÿÉñ_ýz�ý höIÿ’-§ÿ×ÕÇþŒ5ì•ã²Oü‘m?þ¾®?ôa¯d Š( Š( Š( Š( Š( Š( Š(  ý¬?ä‰jÿõÚßÿG-jþÍßòD¼-ÿ\dÿÑÏY_µ‡ü‘-_þ»[ÿèå­_Ù»þH—…¿ëŒŸú9èÒ¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š+3Äú%Ÿ‰<=¨èÚ’–³¾… “iÁŽ£Üuâ´è Ž­%ø‰û:jW0›?í¯Ë.ýà%»n 2ar09Å€kØ|ûEøÄ‰w6‰vÜï“äÏ´‹•Ç»múW±º,ˆÉ"†Fea�G¡¯2ñwÀ¿x™žYôUÓúsyë´|„û•4è:V­§jöþ~“i}üô¶™e_ÍIv¾^Õ?ey,î Ï„¼_qk*ýŹ„†öÒ2?ô©ÿíá¾4��MWî�¨ ¸ú\(êÊ+åOøLÿhm‹ÿ@¯Sö—?÷á‡éKÿ ÿâfŸÿ!Ÿ‡Û1÷¿Ð®`úýìÐÕTWÊ¿ðÕš�¯‡�öžÿéÍóˆÕˆÿkkSþ³Áó/ûº€?ûLPÔTWÌðÖ¶?ô(ÜÿàrÿñÉ?kkQþ¯Áó·ûÚ€ûLÐÔTWÊ¿ðÕº…×�÷úÿi?”CÚ�øh‰z‡ü�¾oÏÝÿC¹ŸÿAÆhêª+åOøMh]o‹ <·Cö‹÷ý�ëH| û@ø“�[ħKVûÀê>–àŠúƒTÕtý&ÜÜj·ö–0ùis2Ä¿›+Ê|aûExÃèée{.µv¼¬)Ÿy �pOÒ¸ 3öWžöà\ø·ÆÜÊß}má,ÇþÚHÇÿA¯Qð�ÀŸxi’X´eÔn“¤ú‹yçë°á3î€<*úïâ'í¨[ÛAcý‹á¥\ƒäŒq¸¹Á™Ç8 ƒ­}_á=ÏÂþÓ´M00´±…aBÝ[Xû“’}ÍjF‰kj¨Šª¨Àv�@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@A%•¬¿ë- |z0h¢€ý›cÿ>Vß÷韕¬yòí LõÛQ@ÑEQEQEQEQEQEQEQEQEQEQEQEÿÙÿØÿàJFIFHHÿÛC   %# , #&')*)-0-(0%()(ÿÛC   (((((((((((((((((((((((((((((((((((((((((((((((((((ÿÀé0"ÿÄ ÿĵ}!1AQa"q2�‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2�B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ú¦Š( ¼“Ä´�t vûI½¸¿{«)Z ŒV¥”:œFpx¯[¯�þéÖWÿ¾-ýºÎÚçf¨6ùÑ+í̳gPßü4ÏÃßùëªÿà'ÿ^�øiŸ‡¿ó×UÿÀOþ½zÏü#º/ýôïüOð£þÝþ€úwþ§øP“ÃLü=ÿžº¯þõèÿ†™ø{ÿ=u_üÿë׬ÿÂ;¢ÿÐNÿÀTÿ ?áÑè§à*…y7ü4ÏÃßùëªÿà'ÿ^�øiŸ‡¿ó×UÿÀOþ½zÏü#º/ýôïüOð£þÝþ€úwþ§øP“ÃLü=ÿžº¯þõèÿ†™ø{ÿ=u_üÿë׬ÿÂ;¢ÿÐNÿÀTÿ ?áÑè§à*…y7ü4ÏÃßùëªÿà'ÿ^�øiŸ‡¿ó×UÿÀOþ½zÏü#º/ýôïüOð£þÝþ€úwþ§øP“ÃLü=ÿžº¯þõèÿ†™ø{ÿ=u_üÿë׬ÿÂ;¢ÿÐNÿÀTÿ ?áÑè§à*…y7ü4ÏÃßùëªÿà'ÿ^�øiŸ‡¿ó×UÿÀOþ½zÏü#º/ýôïüOð£þÝþ€úwþ§øPàÏŽž ñˆ­´]&âõo®wyB{rŠÄqœžp z�|óã«+KÚ‹áúYZÁl�jä¬1„þóž+èj(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š*Û…´³žáÁe†6��Ô€3SU þ@Z—ý{Iÿ šð]/öˆ×µ‹_µèß u›û2ÅV{y]Ô‘Û+öÍq_¼aãø³ÆÑøkâ ±¯Ý ‘ŠTò>glgË;¾ÿ\•꿲ü‘«oúüŸÿBí4à?ð¼ü_ÿD�Ä?œ¿üf�ø^~/ÿ¢GâÎ_þ3^ýExü/?ÿÑ#ñç/ÿ£þŸ‹ÿè‘ø‡ó—ÿŒ×¿Q@ÿ ÏÅÿôHüCùËÿÆhÿ…çâÿú$~!üåÿã5ïÔP€ÿÂóñý?þrÿñš?áyø¿þ‰ˆ9øÍ{õà?ð¼ü_ÿD�Ä?œ¿üf�ø^~/ÿ¢GâÎ_þ3^ýExü/?ÿÑ#ñç/ÿ£þŸ‹ÿè‘ø‡ó—ÿŒ×¿Q@ÿ ÏÅÿôH¼CùËÿÆk¹ø5ñ4|H±Õd}m&çNœA,KærAï´F#èµà?²Ïü…þ#ÿØdÿ7 â?ü�7Ãïúôý©^ý^ñþN›á÷ýz?þÔ¯~ Š( Š( Š( Š( ŠÄñ—ŠtŸè3k ¸6ö12¡uBä³5ç?ðÑß ÿè-uÿ€Rÿñ4ì4W�ÃG|7ÿ µ×þKÿÄÑÿ ðßþ‚×_ø/ÿ@ÃEx÷ü4wÃú ]à¿üMðÑß ÿè-uÿ€Rÿñ4ì4W�ÃG|7ÿ µ×þKÿÄÑÿ ðßþ‚×_ø/ÿ@ÃEx÷ü4wÃú ]à¿üMðÑß ÿè-uÿ€Rÿñ4ì4W�ÃG|7ÿ µ×þKÿÄÑÿ ðßþ‚×_ø/ÿ@ÃEx÷ü4wÃú ]à¿üM9?h߆ìê¿Ú÷#'6Ràã´ëôT}í¶£cåŒñÜZ΂H¥�²®¤djz(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Šà~8xÖóÀîµÍ6Þ ‹¤–8‘gÎÁ¸ã$ ùך|tÕô�Ñx?Ek[È2®$”uàó/¡®‡öºÿ’3wÿ_–ÿúz‡ƒäPÐÿëÆý´ó�Ë?�~ðÌz“á-2kT•åq2Ëž’]Gü%ÿèLÑ?ïèÿãµïÔP€ÿÂQñïþ„Íþþ�þ;Gü%ÿèLÑ?ïèÿãµïÔP€ÿÂQñïþ„Íþþ�þ;Gü%ÿèLÑ?ïèÿãµî××Öš|uýÔ°çæ�"çÓ&¥†Xç‰%†D’'WBaê ÿ„£ãßý š'ýýüv�øJ>=ÿЙ¢ßÑÿÇkߪï-¥»šÖ;ˆ^æ �«‚èBËÔgÞ€<#þ��ô&hŸ÷ôñÚ?á(ø÷ÿBf‰ÿGÿ¯~¢€<þ��ô&hŸ÷ôñÚ?á(ø÷ÿBf‰ÿGÿ¯~¢€<þ��ô&hŸ÷ôñÚŠëÆímf¸ŸÁÚ"à 4ŽÞ`8P2OúßJú²üUÿ"¾±ÿ^sè€9O�Þ6¼ø�à }oS¶‚Þ馒X3°í=@9#¯­p²Ïü…þ#ÿØdÿ7­OÙ þHÝ¿ý~ÏüÅeþË?òø�ÿa“üÞ€ˆÿòtß¿ëÑÿö¥{õxÄù:o‡ßõèÿûR½ú€ (¢€ (¢€ (¢€ (¢€<_öºÿ’3wÿ_–ÿúvþð�†åðÆ‘$žÑÝÚÎfk(‰$ É'mqµ×ü‘›¿úü·ÿЫÔü%ÿ"¦‹ÿ^Pÿèµ  ÿð‡xcþ…Íÿbÿâhÿ„;Ãô.hßøÿ[´Pü!Þÿ¡sFÿÀ¿øš?áðÇý š7þÅÿÄÖí…ÿw†?è\Ñ¿ð/þ&�øC¼1ÿBæ�ÿ€1ñ5»EaÂá�ú4oü‹ÿ‰£þï й£à _üMnÑ@_ð‡xcþ…Íÿbÿâhÿ„;Ãô.hßøÿ[´Pü!Þÿ¡sFÿÀ¿øš«©øÂz–ŸqgsáÍ'É� nc´�Ü0ƒî+§¢€>dÒõ közñBi:ÓÜj5 ÑnðY¬Øž‡Ðú¯CÔs‘_Ji÷¶Ú�”–Çqk: "–6 ®§¡UOèzw‰4[­'ZµK«”Ù$oú{ÔÒ¼KöV{�?Qøƒá‘w<ú^‰©ùi)ÉEß2ŸÏbŸLçÖ€=þŠ( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ý®¿äŒÝÿ×å¿þ…^¡àßù4?úñƒÿE­yíuÿ$fïþ¿-ÿô*õÿÈ¡¡ÿ׌ú-hbŠ( Š( ñvŸ£x«ö„¸Ñ¼|êú5¦Ž“i¶³ÎbŠI†öàŒ·Þïü>ÕNÞÿMÐbð·„>ø–tÒu�bæ�Cx�¬ö*±‚-ãhÎF8>¼æ½—Æ>ðߌá†?iú€„“>UÓ=@e �횆‡ÞŸÃ0ø}ô;1¤BþdVè lï†0oö³Ÿzñ‹¯ˆÞ*‡Á·ÚhÕ‘µîw1äwsÎs@ÿo<[4Õ§Œaœ k�ö)®¤·k‡‰�ÊÊ!%C)p3ŸjôJÅð§…tO ØÉgáí>+($s$›If‘½Y˜–cõ5µ@Q@eø«þE}cþ¼æÿÐ jV_Š¿äWÖ?ëÎoýДþÈ_òFíÿëöæ+/öYÿ�¿Äû Ÿæõ©û!É·ÿ¯Ùÿ˜¬¿ÙgþBÿÿì2›ÐñþN›á÷ýz?þÔ¯~¯ø�ÿ'Mðûþ½ÿjW¿PEPEPEs_o§­:I0 ލ ÀÜq“é@¢Š(¢Š(¯ýš¿ä ü_ÿ°×þÕ¸¯~¯ýš¿ä ü_ÿ°×þÕ¸ ~¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(Åÿk¯ù#7õùoÿ¡W¨x7þE þ¼`ÿÑk^_û]É»ÿ¯Ëý ½CÁ¿ò(hõãþ‹ZÊñÄ�xkT}7]×ììo‘UÚIÜ¥fÂæøwÿCf�ÿ}7øT¾-øMàÏkRjÚþ‘ö«ùQ¤óä\…+_3ø�UøS¢xƒRÒßᦧ3Y\IneKér¬FG=(é?ø\ßÿèlÓ¿ï¦ÿ ?ás|;ÿ¡³Nÿ¾›ü+å¿øJ>ÿÑ.Õð>Oñ£þ�„ÿôKµ_ü“ühêOø\ßÿèlÓ¿ï¦ÿ ’ßã€.n"‚éï4¬3e˜œÒ¾Wÿ„£á?ýíWÿäÿ–ÓÆ í.¡¹·øaª¬ÐºÈ�öç8`r_Q@oÑ_7ÿÃSØС«ßÕÿ ?á©ì?èPÕ¿ïêÿ…}!EEk0¸µ†`¥Dˆ¶FjZ(¢Š+/Å_ò+ëõç7þ€kR²üUÿ"¾±ÿ^sè€<§öBÿ’7oÿ_³ÿ1Y²Ïü…þ#ÿØdÿ7­OÙ þHÝ¿ý~ÏüÅeþË?òø�ÿa“üÞ€ˆÿòtß¿ëÑÿö¥{õxÄù:o‡ßõèÿûR½ú€<“âßø‡Å:ŽƒñûDÓäT e9T!@'‡’ éÞ¹ÏøSÿ¿è¯j÷îOþ9^ýExü)ÿ‰_ôWµ?û÷'ÿ£þÿįú+ÚŸýû“ÿŽW¿Q@)|\øiã�áÞ³¨ë?oõ}>ÐËe"8Y�u¹NÕó�†ü1­øžì[xK»Ô&î Œ°_©è?_¥ÚÖ“a®i“iÚ½¬Wv3cÌ‚Q•|FGÔ “MÓìôËDµÓm ´¶O»„Qø(æ?ƒ¿>#èSEsuâ¹|9m�ÆÎÚO´3}Pæ1ÿ�}+êdx­ãŽYZi@i\ú�8…IEx¿íuÿ$fïþ¿-ÿô*õ? È©¢ÿ×”?ú-kË?k¯ù#7õùoÿ¡W©øKþEMþ¼¡ÿÑk@´QEå?µ'ü�Ïým¿ô¢:õjÈño‡4ÏhZ.»\i×;|ØÖFBv°aÊ�G*(åŸ h÷¿þ!øoRÔ2Ñ|¤G©xŠèÛÚÉ2À¥T±,ÞÜ’}�­�/Q³Õ¬!¾Ó.¡»³™wG4.X{@¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠñÚëþHÍßý~[ÿèUê ÿ‘CCÿ¯?ôZ×—þ×_òFnÿëòßÿB¯PðoüŠýxÁÿ¢Ö€6+Á|`~8�êŸð�Zé-£yíöC"Á¸Çž3“œýkÞ«;Ä© žÕRêsmnÖ’¬““”9l{hçìþÑóé¢ÿß6ÿãFh�ùôÑï›ñ¯0ÿ„_áŸýíCÿóQÿ¿Ã?ú+Ú‡þM@ŸŸÚ#þ}4_ûæßüjΘ~?�JÓíöš0³óSÎÂÛçfFì`úf¼Ÿþ†ôWµüš�øEþÿÑ^Ô?ðjû{É‹þy§ýò(òbÿžiÿ|Šø‡þ†ôWµüš½ Dýœ¬5½&ÓSÒüªOcu–E¹Ôô8-šú~Šù·þuèxÕïÏÿgGü2êÿÐñªÿߟþ΀>’¢¼—á'Á±ðóÄ: ñî©ç[&xöªå•·}ãÏË�ƽj€ ËñWüŠúÇýyÍÿ Ô¬¿ȯ¬לßú )ý�¿ä�Ûÿ×ìÿÌV_ì³ÿ!ˆÿö?ÍëSöBÿ’7oÿ_³ÿ1Y²Ïü…þ#ÿØdÿ7 â?ü�7Ãïúôý©^ý^ñþN›á÷ýz?þÔ¯~ Š( Š( Š( Š( ý®¿äŒÝÿ×å¿þ…^§á/ù4_úò‡ÿE­ygíuÿ$fïþ¿-ÿô*õ? È©¢ÿ×”?ú-hVŠ( Š( Š( Š( Š( Š( ¼öjÿ’ƒñþÃ_ûVâ½ú¼öjÿ’ƒñþÃ_ûVâ€=¿\Ñôí{KŸNÖlá¼²�vÉ Ë�ÀûŽE|ýªøÆ?oçÖ¾Í.¯á†>eÞ‡9.È;•îp?ˆ|Þ¡…}!EpŸ ¾(øâ%‰m.co©D?Ò4ùÎ%ˆ÷#ûËî?Ww^CñGàµ�ˆïÿá!ð¥ÓxÅ�·›Õ¿È“8þøûCŸPkÁu[�Â쿲µ`vC©�‹{�Ð3ƒ?Þzí z¢›‰,k$N¯€ÊÊr=4ê(¢Š(¢¾xøÉqâ­gㆃá/x¢÷B·ºÓŒÅ c·p2Hd� u ¡è¯ÿ…=ñþŠæ©ÿ|IÿÇ(ÿ…=ñþŠæ©ÿ|IÿÇ(ߨ¯ÿ…=ñþŠæ©ÿ|IÿÇ(ÿ…=ñþŠæ©ÿ|IÿÇ(ߨ¯ÿ…=ñþŠæ©ÿ|IÿÇ(ÿ…=ñþŠæ©ÿ|IÿÇ(ߨ¯ÿ…=ñþŠæ©ÿ|IÿÇ(ÿ…=ñþŠæ©ÿ|IÿÇ(ߨ¯ÿ…=ñþŠæ©ÿ|IÿÇ(ÿ…=ñþŠæ©ÿ|IÿÇ(ߨ¯ÿ…=ñþŠæ©ÿ|IÿÇ(ÿ…=ñþŠæ©ÿ|IÿÇ(ߨ¯ÿ…=ñþŠæ©ÿ|IÿÇ(ÿ…=ñþŠæ©ÿ|IÿÇ(ߨ¯žï>|G¶´žsñkTaløÙ'8ÿž•ÑþÊþ!Õ¼KðÁîõëùï–švÜû¡ž§–=hÚëþHÍßý~[ÿèUê ÿ‘CCÿ¯?ôZ×—þ×_òFnÿëòßÿB¯PðoüŠýxÁÿ¢Ö€6+À#%¼)c)É  gï{WÑP€ÿÂÈøÇÿDÂ?ûúøª?ád|cÿ¢aýý?üU{õà?ð²>1ÿÑ0�þþŸþ*�øYÿè˜GÿOÿ^ýExü,�ŒôL#ÿ¿§ÿŠ£þGÆ?ú&ÿßÓÿÅW¿Q@ÿ #ãýÿïéÿâ¨ÿ…‘ñ�þ‰„÷ôÿñUïÔP€ÿÂÈøÇÿDÂ?ûúøª?ád|cÿ¢aýý?üU{õà?ð²>1ÿÑ0�þþŸþ*�øYÿè˜GÿOÿ^ýExü,�ŒôL#ÿ¿§ÿЫ߳_‡|K¥êž:Ö•.µ|—QÂÌ%¥f’p € ׸Q@Q@`xÛÂ'�tY4ÏY%Í»r�Ñâoï#uSþNk~Šù¡¡ñÏÀ)‹ÛyÞ(ø|%úë5Ïþ;õû§ý’kÜü ãm Ç::ê>½Kˆ†‘Ÿ–H[û®½Aýl×Fê®ŒŽ¡•†# �Jðoˆ_gÐõ¼cð³P_êÖêežÓpKiÔrÝ~Uƒòý:м³ª²«2†oº äý)kàüqñV½âý _ßœÚ:�* ò�Ï1®ñÆ;=ëí¯‡~/Óüsá+sKa²uıg- ƒï!÷ó=褯ñoü�Ç„ìÿÊj÷ºðOÿÉÜxGþÁOü¦ {¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(žµÿ {ÿúá'þ‚kÅcOù$—ö›ÿ@޽«Zÿ�=ÿýp“ÿA5⿱§ü’K�û Mÿ G@¿k¯ù#7õùoÿ¡W¨x7þE þ¼`ÿÑk^_û]É»ÿ¯Ëý ½CÁ¿ò(hõãþ‹Zäükñ“ÁÞ ×¤Ñõûëˆo£E‘‘-�Ædr+þ?áÇýîÿð Oð¯@Öüá}vý¯µŸé—׌¡L×êî@è2E|íãDh¾)Õ4Ý7ànŸ¨YZÎÑCt–DÊ 1ûP¤ÿÃGü8ÿ �ßþIþÃGü8ÿ �ßþIþã¿ð’ÝÿÑ¿Ùà¾Oþ7Gü$·ôoö_ø/“ÿ�бÃGü8ÿ �ßþIþêÚ>£m¬i6Z•‹´¼…'…Š�J0œùþ[¿ú7û/üÉÿÆë¬³ø×ãÛ+Hmm>ÝÃm ãŠ8§ ŠËà@LQ_6ÿÂôø‰ÿD²ûþøŸÿˆ£þ§ÄOú%—ß÷ÄÿüE}%E|ûáߌþ=Ôµý:Æ÷áµí¥­ÍÄqKpÉ6"V` ¦85ôQE—â¯ùõ�úó›ÿ@5©Y~*ÿ‘_Xÿ¯9¿ô@Sû!É·ÿ¯Ùÿ˜¬¿ÙgþBÿÿì2›Ö§ì…ÿ$nßþ¿gþb¼›ág„¼câoxàøOÅÍáûXµYtE%¥bσǠ÷ Eø�ÿ'Mðûþ½ÿjW¿W‡x?ষ§øÿJñO‰üks®O§†¤°œòqc�ÎzW¸ÐEPEPEPEPEPEPEPEPEPEPEPEPEPEP\ßÄO �xNóB“R»Ó¢ºI-¶ÝÌ çiÈû§¸Ï­t”PÆþ(ý•¼EfOêö:šÄs)·|~«ŸÄR|“Æ¿¼ZÖÞ(Ð5|7¨8ŽîEŒÉ-Ñf™^;óÓè+ìšFA Æë$jñ°d`YNA¸¯ñoü�Ç„ìÿÊj÷°€:^ âßù;�ÿØ)ÿ”ÔïtQEQEWÈÞ&ø�¯Aâ+|I¸Ò¯´ÝRæ 7F`Ÿí*¬v(p¸\Ÿ—œôÍzλñro ø{ÂQkçĺ½ŠÝM ÝÚÙAÔËÈÀ…$äÇ^8 `¢¼ CøÄ5o ]nnbð¢xJMV[ªY'Žà£sŒ“ò•àÖÿÃÿ�VÞ,Ô.ì?²ãKÄÓŽ§o¥üwdcþY¹ùDrŒŒ«3É ^¢¼2Ûö€·ŽãXƒQÑ¢i,lý›~.ѰS0U†FHÜ. ß k:þ¯¥ÛÁ¦éö¢èO§êQÞ$™ÇîˆY$Éqï@«Ey¿‹v¾:×.t‡³·µ¾KE¿�ì×Év�fP6È¥”2öÏZõ (¢Š§­Èÿþ¸Iÿ šñ_ØÓþI%Çý…&ÿÐ#¯jÖ¿äÿ\$ÿÐMx¯ìiÿ$’ãþ“èÐïÚëþHÍßý~[ÿèUê ÿ‘CCÿ¯?ôZ×—þ×_òFnÿëòßÿB¯PðoüŠýxÁÿ¢Ö€6+æÿiåñ†±&“ñKBÓ,åÌsj!Ï WaÁ•è>?øÛáOø‰ô]mux‘¤§È€:á†G;…|óâ}_à‰} åEªBî^S!”¯\ÛÛ’jmá}õ¦ƒ¢êþ$ûf›6šÚ\Ûéñ[´q•Û½œe�ñ�Ôjõ (ÅôƒZ®—¨é·�âðe±ÒŸH„æFž\?À@,À¶rX°;³Ú¦Ñ~ZGÿ 뺌7kV"ÂA§X­”j †ó6A“rƒ»§·5ìTPðïÁº§…Ø�O^‹R†+tµ¶Š-:+`ˆ¸ù�†YÜ€2rµwQ@Q@õ¯ùßÿ× ?ô^+ûÉ$¸ÿ°¤ßúuíZ×ü�ïÿ넟ú ¯ý�?ä’\ØRoý:½û]É»ÿ¯Ëý ½CÁ¿ò(hõãþ‹ZòÿÚëþHÍßý~[ÿèUê ÿ‘CCÿ¯?ôZÐõ èz�ɹԴm2òà€¦[‹XäbA’ ª¿ð…ø[þ…­ÿ"ÿâk~ŠDEDTE Š0 =)h¢€ (¢€ (¢€ *¾¡}i¦ÙÉw¨\ÃkkÜòÌáG¹†ò2C\¿‰þ0xMT·‹Å:|“Ik*"£3n%`TZìýðÞÈ è&àúÏs+ìÕ³Áï‡Ð€ÂzgÞŒ·ó4É~È_òFíÿëöæ+ÚªŽ‰¤iÚ�†�e•œy+ FNIÀ«ÔQEQEQEQEQEQTuûÇÓô-Fö­%µ´“(n„ª’3ùWÍÞñ?Ç/øz=oC¼Ð>Å$�‰¢T`Tàñƒ@OÑ^öÚþ<5ù/ÿGÙÿhoùüð×ä¿üM{õà?gý¡¿çóÃ_’ÿñ4}Ÿö†ÿŸÏ ~KÿÄпQ^öÚþ<5ù/ÿGÙÿhoùüð×ä¿üM{õà?gý¡¿çóÃ_’ÿñ4}Ÿö†ÿŸÏ ~KÿÄпQ^öÚþ<5ù/ÿGÙÿhoùüð×ä¿üM{õà?gý¡¿çóÃ_’ÿñ4}Ÿö†ÿŸÏ ~KÿÄпQ^3ð‡âÅæ§®\ø7â ¦xÂÕʧ˲;±þÏmØçŽr=+Ù¨¢Š(¢Š(¬x¢ËÁ¾º×5Hn島ǘ-bóqœd`{“ŠÞ¯øÃñwNÑÞ_ xzÅ|IâkÕ6ÿ`�|È“pÁc©Áû£ñÅyŠ¿jû¹ÅáoÃežþBçë±p?SY µ/|iñ¦Ý{]¾_Yšú;fò"qŸ–,&3»®x¼×Æü[á­kDÓï´ô{½kÙ-›z‰ æ2z¹öÇsŠûá7�¬þx2ÏGµ×ónçýtÄ Íôì=€ Â(Ò(Ò8Ô" ª£Ð ðoÿÉÜxGþÁOü¦¯{¯ñoü�Ç„ìÿÊj÷º(¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€)ë_ò¿ÿ®è&¼Wö4ÿ’IqÿaI¿ôëÚµ¯ùßÿ× ?ô^+ûÉ$¸ÿ°¤ßút{öºÿ’3wÿ_–ÿúz‡ƒäPÐÿëÆýµçµe…Þ¡ðvþ;i®dK˜dd‰ �¡¹8…3á§Æßê:—§M«®›}¼Px»â§ŒáÑ|sâth´jÙIÌ.ó;+¢´›ƒÕ€ އ¯ûå„­=�¼¯�òF®qÓ$f€'¢Š(Í~4|-³øƒ¦Gqm'Ø|Gd7Øß!ÚCB1íÏ~ ò;ç àŸÄÍGQÔæðG�`{?iê@g]¢�½‘ÆìsÇ 9ëÙëÀuñÿƒáïû7þƒ-{õQ@WÔ¯­tËïu ˆ­­ RòÍ+TQÜ“\ÏĈZÃí Þë×X•Áò-cæYÈì£ÓÜð+Ætï xÃã¥ü·Žm ÁHÂK]*+%ÀìÍžyþñÿ€�Ö€,x‡â/Š>+ê×øK–š:—ºü   zì=Wðù�lu¯MøUð¯Aøwb~À†ïV˜¤j3€e�÷û«ì?k¯Ð4];ÃÚM¾™¢ÙÅgcÛQ ïî}IäÖ…G-¼3I’ż-¾6e£`ŒƒØà‘øš’Š(¯ ø»àÞ|RÒ<_à1§4ÖvFßnÖËçƒÔaëÜè Ïí éá¯ürŒþÐÞžÿÇ+ߨ Ïí éá¯ürŒþÐÞžÿÇ+ߨ Ïí éá¯ürŒþÐÞžÿÇ+ߨ Ïí éá¯ürŒþÐÞžÿÇ+ߨ Ïí éá¯ürŒþÐÞžÿÇ+ߨ Ïí éá¯ürŒþÐÞžÿÇ+ߨ Ïí éá¯ürŒþÐÞžÿÇ+ߨ Ÿn#ý ç‚Hd_ l‘J6 t#Ú~ÏÕ|ðüé:éƒí²^IrVÞ0P}~\þ5éÔP\‹>ø;Å{Û[Ð,¦�úΉåKõÞ¸?­vP�ÜþÎpi“4þñ†» ¹9‰7¦à%N>¹¦|sÑ~]'Ç:f©í}Ìß÷Ò7þ…^ÿExÿÚ?—ÊðÔ˜þ,¯?¨¤:Çý_ä»ñƒ¤ÂßxÀŠ\}1?­{ýà6ÿ³Ýε:Oñ ÆúÆ»ƒ¸ÀŒQ3õbß ë>ð'†|�Ú=­›ckJ«ºVîrÇó®–Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠÈñ—üŠçýxÏÿ¢Ú¼ÃöGÿ’1cÿ_wúzŒ¿äP×?ëÆýÕæ²?ü‘‹úû¸ÿÐèÙ¨¢Š+/Äú›â}ïHÖí–æÂåvÉqî#�AÁV¥ç~ øCá¿ kÚöòjZŽ ‘!—R¹óüˆÈÁTã¿úÒi?¼3¦jÐ]Àú“ÛZË$öz|·Eím$¼ñ¡xÉ8í^‹Eyý·Â�ßÂ^ðìsê&ÇAÔRµc*ù�*»¸và®\ðíÍ4ü%ðùÒÚÃÏÔ|–×á!'Í]ßiþïÝûžÝ}ëШ ›~!ü/ñ/ˆ5?YiºZ[ë‰1»‹ZˇÏ{b¡Ì¥A ®N{_FÚCö{XaÎ|´TÏ®*Z(¢Š(¯×ÿäð|;ÿ`†ÿÐe¯~¯×ÿäð|;ÿ`†ÿÐe ~¯ø¡ñ¢-'Rð%§ü$-˜ùk|VíþÑHôíÜŠìþ+øÄ&ð£éžÖÆ�u4гM´üОA©ÁÏqŒŒÔ? þhôÓ‘›}(âþ` ³¯ð¯û#õ<ÐðãàÄ¿Úÿð–|N»þÞñ<¤:Ã)ß ©êŽÜm‡zöê( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š(  �È¡®׌ÿú-«Ì?dù#?õ÷qÿ¡×§øËþE sþ¼gÿÑm^aû#ÿɱÿ¯»�ý€=šŠ( Š( ¼KÃ~=ñ�‹~6k6�ŒÐ.Mµþð ²}õܺ8ëúíÝÕ†‹w§Ù5ýä<�Ú«m3¸RBÛ'Œ×‡~Êau üsâÉÕu½KR&öÄ)SjC;sê]¿/Zö_®¶ÞÔ…Ý5Ãú+\c`l޹öÍpŸ<¬x×KÖí|MoZÆ�wöYÞ…~½»U‡t¯U¯œ¾ ]Ï¢ütñ΃¢Aý­¡Þ^5ÅÞ ™Qe(ó#da¾bS�¯c@FÑEQEW€ëÿòx>ÿ°Cè2׿W€ëÿòx>ÿ°Cè2пQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE‘ã/ù5ÏúñŸÿEµy‡ì�ÿ$bÇþ¾î?ô:ôÿÈ¡®׌ÿú-«Ì?dù#?õ÷qÿ¡Ð³QEQEWÍŸ 5vðgí ãmWÓ¯£ê[–?ÝíY$‘ÁWê3ÈÅ}'FsŽhÆ^!µðŸ†5 sPŽyml£ó$H# p ¿­xçì¡oy<4×î,§´´Ö5?>ÛÎ]¥—.Ç o=3š÷Â29¢€ (¢€ (¢€ ðþOÿöoýZ÷êðþOÿöoýZ÷ê(¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ Ô-"¿°¹³¸Ï“qDûNÖ~¼?Ù{ð©X%ÿ¿Ñÿñ5ïôP€Ã1h_ô4ø—þÿGÿÄÑÿ Å¡ÐÓâ_ûýÿ^ÿExü3…ÿCO‰ïôüMðÌZý >%ÿ¿Ñÿñ5ïôP€Ã1h_ô4ø—þÿGÿÄÑÿ Å¡ÐÓâ_ûýÿ^ÿExü3…ÿCO‰ïôüMðÌZý >%ÿ¿Ñÿñ5ïôP€Ã1h_ô4ø—þÿGÿÄÑÿ Å¡ÐÓâ_ûýÿ^ÿExü3…ÿCO‰ïôüMt_>è~ ñd ·Õµ{ûÈcxã[¹¨Ü0O B{÷¯]¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€?ÿÙÿØÿàJFIFHHÿÛC   %# , #&')*)-0-(0%()(ÿÛC   (((((((((((((((((((((((((((((((((((((((((((((((((((ÿÀ¤"ÿÄ ÿĵ}!1AQa"q2�‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2�B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ú¦Š( Š( Š( ©k¥ž�bo5)ÒÞØIFGèÝQGâÌ]¯™?m_m+D𽬥e¹�ß\8!+ú,~¨(éº+�øCâ‘ã/‡:´Îâh\ÿ×dù_ó`OЊì(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¯Î�Ž^*ÿ„Ç↹©Å&û4—ìÖ¤�*?”ìØ-ÿ¯¸¾3ëwšÃMrëJ‚âãR’ol–ñ³¸y>PÀî‚[þ_žŽ‹ªé‘,º–™}i6Õ{ˆ0O $héŸØŸÅXms—uÆ¡j ú$ƒÿEœ}kêºüñøCÿ „ü kñhº³ZG2ùÌ–’ð8Úä`sò±#è+ô8r8 Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ¾uý¶¿äAпì'ÿ´ž¾Š¯�m¯ùt/û ÿí' kø{ÿ"†¿ìmÿ¢–·ëáïüˆ>ÿ°e·þŠZß Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ¾uý¶¿äAпì'ÿ´ž¾Š¯�m¯ùt/û ÿí' kø{ÿ"†¿ìmÿ¢–·ëáïüˆ>ÿ°e·þŠZß Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ¾uý¶¿äAпì'ÿ´ž¾Š¯�m¯ùt/û ÿí' kø{ÿ"†¿ìmÿ¢–·ëáïüˆ>ÿ°e·þŠZß Š( Š( Š( Š( Š( ©ë�–�¥Ýj:¥ÄvÖ6Ñ™fšC€Š;ÿõªå|ûûhêW¿tË(¤7º‚‰°~ú¢3>Û¶ŸªŠÀ×?j˽R[øRKëhÏ\gqëå ùGԟ¨ÿÃFøÿþ„XÿïÅÅzà Ç@ð>‘m§Â‰æ[G4ÎÍ,Œ ³ß“ø ÕÔЊÃFøÿþ„XÿïÅÅðѾ?ÿ¡?ûñq^×Ex§ü4o�ÿèE�þü\Qÿ ãÿúcÿ¿ítPŠÃFøÿþ„XÿïÅÅðѾ?ÿ¡?ûñq^×Ex§ü4w�G-àXöŽOînè¿>>é;ÕEÕ,›FÖß"(ÚMñNGUVÀ!¸?)BMtÕó·í9¦C£jþñ.”¢×TiX<±Œxö²?ûÞ~ž”öm_M¸7zu­Ë¦h’Bl€­X Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š+Æþ0]øõ'Ôe´×ôoø>ÍSv©.e¹¸,«�ªÛ†%@bGÍ{%ò¦¡¡ë:‹¢Ð[ãåêøšB¡,®¢œÅ¹°UYŒŒŠNF9s^ïð×þ˜mïl¾ ®—<Öþ_Ùµ Àºvíè@ÚË…è;¸èh´¯�m¯ùt/û ÿí'¯¢«ç_ÛkþD þÂûIèÚþÿȃá¯û[襭úÀø{ÿ"†¿ìmÿ¢–·è¢Š(¢Š(¢Š(¢Š(¢Š(¯œ?mÏùü=ÿaÿÑm_G×ζçü‰~ÿ°ƒè¶ ÛÂò*èßõåþ€+V²¼'ÿ"®�ÿ^Pÿè±<_ãx|-¬Ãi¨Z¢ÏaqwÏ›�ÒB»š-¸î¼ƒŸlPaEyD¿lâÓm.ßJ—› oob|Ö¥eòVϪøv>âÑn7£ƒ •6É´u�»Ç½vÔWŠx³âÖŸ}ðûÄZ’M§é·–÷·2Y[Ý´‹:›xÌAþUï~2Îzã£ñ_Äáá©m-oôëEÔO:�Ä/¨ª" 8 •ýì‡ Î:ФQ\]·�ßPñ†™£iZrÏo{¥G¬}®[�/d/&ÜlØrqƒÔg8ã­`|×õ3Â7VúÔÖ·h‰uq<.Qã‹ÍHÀ 9™¿�@§^ ûZÈÃßõñ/þ‚µïuàŸµ§ü�¼=ÿ_ÿè+@Xx{þ@gýzÅÿ  ¿T<=ÿ 3þ½bÿÐ_ Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ¼³ö‹Ðµ-oÁ:{éZQÖ[MÕmõ ôÑÉ»…7�ç;‡ðû…;¢TŸBbl#ùPiá?ùtoúò‡ÿ@ŸãŸé^4´³·Ö<õKYÄèаRx ©È?)Ï#ØsW|*MáH˜bß»À|Çw$ò]³ðFŸo¤ë¶r\ÞÜÍ­DÑ^ÞLêgu1ùc(QµO/×5ÔÑ@�ßÃíò?Eyö‰àÐí$³‚)JÍÄ"o3åäíPF6óU×áÕŒpéÿfÕõ«{»;6ÓÖò)Ñf{rÛ„lÛ1�Ø€c­vÔP·…ì­üU¾“]µìzhÒÂÉ&õ1߸’7ÏrÜýy¬]Wᦇ¬xat�Yîï§T®­rR[ð¢S&Ñ3!8É+Œ}ÒEvôPvÐCko½´QÃH#Ž8Ô*¢�€ ŒW„~ÖŸòð÷ý|Kÿ ­{Ýxíi* 7Ã�îišg ßTgõõŸ‡¿ä¦׬_ú«õKC�¢ÑtøäR®–ñ«Ø…«´QEQEQEQEQEQEQEQEQEQEQEW ñ‡Å÷ð¤3éÚjjz¦£y™ei!ÂI4¹ÀoQ…ð€+höš šÖ›!¢¶{¸À'ª˜Èuѱô«_ð°¾2Ñ<Ÿÿ—ŸüU}‡E|yÿ ã'ýÉÿðIyÿÅQÿ ã'ýÉÿðIyÿÅWØtPÇŸð°¾2Ñ<Ÿÿ—ŸüUð°¾2Ñ<Ÿÿ—ŸüU}‡E|yÿ ã'ýÉÿðIyÿÅQÿ ã'ýÉÿðIyÿÅWØtPÇŸð°>2·Ê>N àì[Î?6­o‡Ÿ •eà›¯x3WÔåñ"xÄßhB8›}Ä;R$i[hd/•ë�2&¾ß ¾uý¶¿äAпì'ÿ´ž¾Š¯�m¯ùt/û ÿí' kø{ÿ"†¿ìmÿ¢–·ëáïüˆ>ÿ°e·þŠZß Š( Š( Š( Š( Š( ©kZ¥–‰¤Ýêz¥Â[XÚÆešWèª?ŸÓ½]¯ ý²ïg´øKo V;½R&ø�$��ûéþÅêß´‡‹5íVx~xL\ÙBÖOo-Ĭ;1XÈ ŸBOÖ«ÂçøÓÿB\?ø)¹ÿâëÐ~i6º?ý8•<ëH®e rò:f'¿'@jë¨Ä?ásüiÿ¡.üÜÿñtÂçøÓÿB\?ø)¹ÿâëÛè ÿ…Ïñ§þ„¸ðSsÿÅÑÿ ŸãOý pÿà¦çÿ‹¯o¢€©sñOÃ犼n¶Ö·”wÚ#N`‡MX¢aÊ¥‚’Ä�¤Žª9' ÖÕ矼S}áÚ)í »Õ5tµº¼PÐÚ‰wn•Áà€õãžsÒ©~ÎÞ ÔüAà;‡Õõª-F{+mH©SymÛ)Ï<äŽyãžsZ¿o|1eðïQo[=Þ•!Xż_ëe”Ÿ�Fr0ÙÎxÁí@‡Äç·øeáý#Äþ´ð½µä3Ä·é�RêJä+™ySË6<¸j¯Š>Øx/ÃÞ4Òï¼Wà_i6RÜ ³»Õ¥ßl²ò_&>3ƒ÷›Ü_kÐ_:þÛ_ò è_öÿÚO_EWο¶×üˆ:ý„ÿö“еü=ÿ‘Ã_ö ¶ÿÑK[õ�ð÷þD Ø2ÛÿE-oÐEPEPEPEPEP^ûkÉ,Ò¿ì5þˆž½þ¼öÖÿ’Y¥Øj/ý=oxþD_Ø6ÛÿE-nÖ€äEðçýƒm¿ôR×;ñÇ7 Õ­~Ó»iWV7-²¶ñuîT'8ÚÀ1œ÷ þŠò] â~£*Ç=�²Ë¦i—wÚÜJ­º)bvE‰>o”’¤ó»‚*M;â.°l5m§›¯øF�ˆ¬Ì*ápq€±$ƒŽAàP«Q^ãoj:}ÇÃ_ê°[ÜÝ=�õÚAi"¨’Ö<Ë1À-’{ÜsÕx“ÇÚæ�}§éšlz�üšGö¬’ZÙ\OÁ-µc‰c$ 8ûìHÆhÕ(® ÛÅzÅÿÄ 3D·¶¶³³ŸD�W¸K¨\Ï2ìh¾ò€@ r89ëÒ¢øÑ¢Cuá-KU�O‚òþÒÎP’\Nê-£ÚY¥�yS À ðÚì@= ¼Gö®ÿ‘7Hÿ¯ÿý¦õë>•gð®�2\Mr²YBây†$”sï§Üד~Õßò&éõÿÿ´Þ€>“ø{ÿ"†¿ìmÿ¢–·ëáïüˆ>ÿ°e·þŠZß Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( C⇊õ_èú†‡á‹ïÜÉt°5¥™}è…Œ‡j9À*OâúüåâMR?jòjšÇìé­Í}#n’Tšî/1½X$1÷#šúò¾*·Ô|[âMKEÕ|Añ;QðÕ‡ˆã$‰<‘ÛÙÍ ¥|†DUÊí ŸP0zÐÓ_5‹�cÁß¿ðuǃ£³¸kX4Ù•—1…VódC‚]‡NªyÎj¿ÇIâ/ YEeªÙézÅž¥î™-Û…�î“vÄ9êH-�ƒÈéX?²åÃ\xViõ[­^í5›ˆ®/§œÌ³²¬j¯7Ͱ B3“œýÿÚ'Gñ¯àÝ1¼#cÞ©aªÁ~¯4É·+·š º©ÁÚ0r0ÇŽà‡Ô´Œ¢‡Ãž7ÓôMÃ�4o{qlÊÒNˆÁ° Hä@ì¿—ôU|É¢üPøÍªÜ}�KÑ|©]¨ù£ƒS·’N:’©wý+éº+ç_ÛkþD þÂûIëèªù×öÚÿ‘Bÿ°ŸþÒzö¿‡¿ò økþÁ–ßú)k~°>ÿȃá¯û[襭ú(¢Š(¢Š(¢Š(¢Š(¢Š+À?moù%šWý†¢ÿÑ׿×�þÚQ<Ÿ töE,±ë»‘ü#ɘdþ$Æ€6üÿ"/‡?ìmÿ¢–¦ñ'†ôŸÛÛÁ­Ù­ÔVó-ÄJ]—k€@?)êx<¥ðÖê+χ¾šŸÙð! ç ¨‡àA…t”�§xcFÓµ VúÎÂ4¹ÕH7ŽY˜MŒõ�ÌrÏ5VÃÁ>°²¿´µÓ‚A}µœdba �-X±(¸c€¤ž+£¢€0Ï…4FmµŠ·ö<mbG"(Þ1)á²€›5F_‡Þ–ÂÒÍôæò-bx"æ`Â&9hËÜȺIÕÕQ@VÞÒ­µ˜µ[{5Šú+!§££0 np@¹Û€{ã=³ŠÇ_‡>[ K4ÒöÛZÆðÆ«q(&7rìŒCeÔ±'k=«­¢€iIH©ªª0€ ñ?Ú»þDÝ#þ¿ÿö›×·W…þÖ1/†tKRãÏ{Æ‘S¹UB üØ~tôÏÃßù|5ÿ`Ëoýµ¿Xž‚Koø~ ”¤±iÖèêz‚#PEmÐEPEPEPEPEPEPEPEPEPEP^!à�Fø¡à}~öïÁúDz5þ¥=‘y€òÚYJócÎÎÄðz·²êº�ž“§\_êwPÚY[®ùf™‚ªRM|½â_ xKNÓSľøµªøcºÕ᥼s²JáÊÈ#Dem¡�*qÇ8"€=�à¡iwàY,­4k]}"ú}6îÒÕ‹Ä'Œ�̬I,àrI>ç­a~Õ—°|8°]Jú{]6m^Ú;ÈàÏ™sÎ^5ã°»†ì“×ö?´?h>°·ð…ïö†™1iþÚ_s\HÇævô9ÇlcµtšÞ‰¥kÖ©k®i–:•²8‘b¼·I‘\ÀŒà‘Ÿs@øÞçàÅž—§Ü|9¾½ÓüIÔàûQXq¹ä@\œ '8í_Vxâ†fÜíÝ´ ã'é“@µó¯íµÿ"…ÿa?ý¤õôU|ëûmȃ¡ØOÿi={_Ãßù|5ÿ`Ëoýµ¿XäAð×ýƒ-¿ôRÖýQEQEQEQEQE‰ã_ éþ0ðÅþ…«¡kKÈö’¿y«¯¸ ô­º(ãÅøwñ‡á�Ìö~Ư£3—CÇSîcs¹×oæ¤þÔøóÿBÔŸøŸüU}E|�ý©ñçþ…©?ð ?øª?µ><ÿе'þ§ÿ__Ñ@ j|yÿ¡jOüOþ*�íO�?ô-Iÿ€iÿÅW×ôPÈÚŸèZ“ÿÓÿŠ£ûSãÏý RàñUõýòö—Ç–ùG†ÜÆ~ȃ›VÇ€~ x·Å^.·ñ'Å©À‚Ý•ÒŤGypr„ù<ò@äò03šúžŠ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠðÿÛÙ~n³a�P…î¶ôò°àgÛy�ñÅy|z¯�õÿ\k+¦ùŸ ü!¡,)nmŽÆ¸�ö…ØGßg•¾cüI»=ëëˈ"¹‚H.bŽhdR¯ŠX ƒÁ›oá�ßJ“K·Ñ4È´Ù;Ú%¤k 0 ‚P 8êy?ìc}eðˆ=úH‘ÜßË=¨qŒÄU#ز¹©?k+]>óáÞ•­,öö¯­[+]F2¶À¬ŠÒ:à–P¥¸$íç±ö”UDTE ª0Wœü}ñÐ|#] ß^¸Õo"ÓmìntrI&JîOÝãã‘@5üAøuð³@Э/¼?ã9õ«Óq5…µäËpŒÀ0M‰û¶’ 8ÇS^åû>DÚ'ˆüá+=ZçTÑ4;»t³–â@ìŒèÞly|¬¸ 25å^ð?Ä�ê±jšG E{oŽInÚ_-»W¼!Hõb¾©Ð¼=¥h¨>‘e³êR^Ý2’ZYœå˜’Iêzt€  Zù×öÚÿ‘Bÿ°ŸþÒzú*¾uý¶¿äAпì'ÿ´ž€=¯áïüˆ>ÿ°e·þŠZÒÖõ[I»Ôõk”¶±µŒË4¯ÑT3è$ñY¿äAð×ýƒ-¿ôR×�þÚz�ŷí.Ê) æ ¾pï*#0S휪Šçu�ÚsXÔu9¡ð7„šòÒ#þ²ád–G‰Hþçæj§ü4'Ä¿ú"ÿÀ+Ÿñ¯Eøg¢Ùh^Ñíl!XÕí£šFIAf>¤“ù`v®ž€%ÿЉþ\ÿ�ðПÿèD‹ÿ®ƽ²Šñ?øhO‰C“àHqÿ^W?ã^ƒðãþ›ã]]4-vÄèÚã’±)}ÑNê‚@*Ý~SœúçŠêëçÚƒN‡JÕ<=â=4 mPÊÊÓGÁfM¬�õóôôöeCyu•¤÷W“$Ð!’Ydl*($žÀ f™p×zm¥Ë€hRBb@?Ö¼‹ö¶ÔçÓ¾]ÇnìŸmº†ÚB§a%Èüvcèhˆñ7í7yw¬Kcð÷ÃM©Ç \\$Žeø„I‚Üœû Ëÿ…÷ñ_þ„8ðYwÿÅ×_ð7D³Ñþék,÷°­Ôòcæ‘›‘“ìé]õx—ü/¿Šÿô!Ãÿ‚Ë¿þ.�ø_ÿèC‡ÿ—ü]{mâ_ð¾þ+ÿЇþ .ÿøº?á}üWÿ¡ü]ÿñuí´P‰Âûø¯ÿB?ø,»ÿâèÿ…÷ñ_þ„8ðYwÿÅ×¶Ñ@%ÿ óâ°å¼Ñ×þ%·cÿg®Çáíiâ z-Æ_ö§+ˆ¢˜1òšCÑ7Ì„ôÈúWy^ûT趇Ún¸‘*j]­±•F FÈí‚{à¨Ç¦M}sEsŸ õõ‡¾Ôo½ÕÖ›o4¬‰Ú5,šè袊(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¯"ý öëÞþÉѼ[á½R²Ô­¥¹“S½HL#Éç ÑÈJ«¯•VÁÆsëµã?t�h^Ôuÿøn}^ëV¾µSo ÔѵÕÌqI<«|¸ŒÈ8÷â€<é5ωÈ�GÆß†äŽo­‰üͽ}W_ ?G` þÎ^$ ô#QÔøÝ}«@|ëûmȃ¡ØOÿi=}_:þÛ_ò è_öÿÚO@×ð÷þD Ø2ÛÿE-xí¹ÿ"_‡¿ì ßú-«Ü>ÿȃá¯û[襯ý·?äKð÷ý„ÿEµvÞÿ‘WFÿ¯(ôZµ•á?ùtoúò‡ÿ@«@Îx¯ÄëáËý .­ƒXêWc’èË´[¹RS#† Ž£õÆYüd³ºÓ,®—K�K5Ìë$oš+xbóš»ÏÈT…ã9ëÅzµä‹ñ:?xcĶö¨–Z„z Ú”iz&(» Ì åS·+Ôds[ <_q¨Ç¤èZ­¬ÑßÿaÛj)s$þi¹Œ€ŒíÆCç©Îrpx C¢¼¿â¬·VZ�Šh:¶¨Þ'Ô§†=>Å.·‰Q�‘Þ1€P®r_w¶0kÔ(¯ý­?ä áïúø—ÿAZ÷ºðOÚÓþ@Þÿ¯‰ô ¬<=ÿ 3þ½bÿÐx×í“ÿ$Žû Ãÿ I^ËáïùiŸõëþ€+Æ¿lŸù$pÿØNýJ›áOü“_ ÿׄ?ú®ª¹_…?òM|3ÿ^ÿè"§ñ_‰××ú][±Ô®þÇ%Ñ—h·r¤¦F9 AF=裢¼ÓÿaןF‚ÏKay¨ßÉkä<ø1ˆ$3ýÞAFBs׊»á�ˆðëš¾—oýœöö:ÇÚ³n|àÆo á÷¦Î#“øP}Ex‡ˆ¾"Þê> ð—Š$†MM—_·ù�#I™„ªà*å~NœçÓŽz�Gâ`°Ñ¼?yq§ÚA>¸d{T¸ÔV8’PÛä—i Äù@<¶3@�Eyä?N¢¾þÄÒ…Ëx�nJ î|‘€À��žw ñÓÞµþ$Ëac ¶©«êš•��–æ1XܘåÈ¡eù‰Ï@ç®Eu•ãßµ7ü“›Oû Eÿ¢ä®ûáÏöÏü ú9ñ33jæÌ[ïrNÝßímÛŸ|×ûSÉ9´ÿ°”_ú.J÷oƒ¿òIüÿ`›_ýµ××!ðwþI?ƒ¿ìkÿ¢–ºú(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š+Êÿhë-rïÀ–røfÖÎkûN ß>êxá[Af†‘Õ2jóžñÜz¥xÇíZÚzü<Óµu,:wöÕ©¸† Ûîc×�H ·sØN¹ÅyÚ|mø ª øpÄ mn×'ò¼¯ªëå8�ìÆcRÁ�Ç!¿´ò>¸â¾¬ ¾uý¶¿äAпì'ÿ´ž¾Š¯�m¯ùt/û ÿí' kø{ÿ"†¿ìmÿ¢–¼?öÜÿ‘/ÃßöoýÕîäAð×ýƒ-¿ôR׈þÛq¹ð6� RQu¥»blÐþTÚxOþE]þ¼¡ÿÐjÖ?ƒ&ŽhrÂáã{ °èFÁ[‡ãO Xx¿Ãói£L–ò²¿™‘H © �n� ¬k?†~µÖåÔÄSÈòéÃLh]‡—åXó€ÜQBç=;WkEr6>³´Ñ¯t¶Õu›‹+›ÓR)®A[xJ•Äj.àÞ`Ç€3Ž)š7Ãí7IŽãì·Ú¡¸“M]*+–œy¶Ð(8ò˜(Úrwgœ1€1]�ÆEààÖ†­mâr=@ZEeç1·™Œh u’9b71I&»:( ¼ö´ÿ�7‡¿ëâ_ýkÞëÀ?kI£þÎð䇚ÒÌá{àýhëOÈLÿ¯X¿ô^5ûdÿÉ#‡þÂpÿèW³è‘¼:-„R)WKxÕ�ìBŒŠñÏÛ—áôRV-Fsè0ëüØP¾ÿÉ5ðÏýxCÿ Š½ãO Xx¿Ãói£L–ò²¿™‘H © �n� ¬Ï„3ÇsðËÃo U³HÉÞ_”�Àƒ]}r/ÃíFñJkÖbà^%’X¢3)�QP0Îí¨sŒv§h>Ò4MZ ëW»qkç}ŽÞYŠÓÍ9“ËϹ>ÕÖÑ@]¿Ã� h�zöZ5òêt-#‡vÛ'Ë‚¹‘†æ’/‡]½µ”VWº•«X\Ísc,R&ëA(ÃÇP�‡Ñ�>õÚÑ@Òø:Èj^¾’óQžçBYÖž5¥ó“k™Y�f8é‚1ôâ¨ê¿íõ9¡–ç\× Ô$Ô¡,R¬R8*¬‘°˜;Wn?‡gEWÓíåµ³Žï'½‘s™çòIä"ªñÓ€:zó^MûSÉ9´ÿ°”_ú.JöñŸÚ¦xÓÀ³�,šŠ^ääÉü2?1@÷ðwþI?ƒ¿ìkÿ¢–ºúäþÄðü,ð„r©W]&× õºZë(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(®ã_…ußxVÖÃâ%ìw©;�bÖ;ˆ|°’)¼RÙeçh8Ï<à÷õæ?–i¼7¡ÙÚø—UðåÅö³¤Wzj3;»¤Š±¶$�IœžTqèàž4øsñ ÂJêz«ü?:xš8fž̈7¸@î  ;rÃ;A<ô¯²kçõýŸ5}FæÙ<]ñ/]×t¨åY$±™dÛ&q—™Àúã5ôó¯íµÿ"…ÿa?ý¤õôU|ëûmȃ¡ØOÿi={_Ãßù|5ÿ`Ëoýµ[âWƒ,|{àûÝQcÌÅ2Œ´2¯*àwÇqÜ;ÕŸ‡¿ò økþÁ–ßú)k~€>5´Ðþ3|/¤éÚKk:R1040›¨ñžª‡\ú}*Çü&ßèD›ÿ?üU}…E|{ÿ ·ÆŸú&ÿÁEÏÿGü&ßèD›ÿ?üU}…E|{ÿ ·ÆŸú&ÿÁEÏÿGü&ßèD›ÿ?üU}…E|{ÿ ·ÆŸú&ÿÁEÏÿGü&ßèD›ÿ?üU}…E|{ÿ §Æ§ùWÀÓ)<ý“p1ù¶+gáÏÁïx¿Æ¶¾+ø«˜mí™dŠÊB»åÚr©±xHÁäƒÉçŽI¯ªh ±üaáÛxgQÐõT-g{�öýå=U‡¸ î+bŠøÞ?ü]øQwscá»C®h®å£hbó�ÿµåçz61‘ÓÜõ©ÿá+øÝÿB\¿ø,—ÿН°h �¿á+øÝÿB\¿ø,—ÿŠ£þ¿�ßô%Ëÿ‚ÉøªûŠøûþ¿�ßô%Ëÿ‚Éøª?á+øÝÿB\¿ø,—ÿН°h �¿á+øÝÿB\¿ø,—ÿŠ£þ¿�ßô%Ëÿ‚ÉøªûŠøûþ¿�ßô%Ëÿ‚ÉøªµáŸ„¾;ø—â›M[âx}?F¶9Í„w\ä¢F¿prÍÏ×·ÖôPb�"�#‰U#@UF ê( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ¼+ãöµá�ïð.±â«� _[]Cvn'³v†é<²@V ªT3ŽIá£éÆGºÖO‰<7¢øšËìž Òí5qÊ­ÄA¶ŸU=TûŒPÌOá¨,íC/í+"Ä£„Ší˜�ì«uŸÒ¾ˆð/�ô/Ë©Â5-ÅÕµ‰D{¦�£ŠFmß*±yã�Ëë\õ¯ÀŸ†¶×bâ? @ÒœIq4‰ÿ|3•ý+ÑllítûH­l-¡µµˆmŽP" ô 8=|ëûmȃ¡ØOÿi=}_:þÛ_ò è_öÿÚO@×ð÷þD Ø2ÛÿE-jjú•ž�¥Ýj:�ÄvÖV±™fšC€Š:Ÿþµeü=ÿ‘Ã_ö ¶ÿÑK^EûgjWŸ ,m r‘Þê1Ç6?‰ŸøSøP/­þÓzÆ¥ªMmà µí¼g‰nI]Ç÷¼¸ñ´}Iª_ð¾þ+ÿЇþ .ÿøºô…Z%ž…à ‘ Ö±ÜLàs$Ž¡™‰ïÉü€ÖЉÂûø¯ÿB?ø,»ÿâèÿ…÷ñ_þ„8ðYwÿÅ×¶Ñ@%ÿ ïâ¿ýpÿà²ïÿ‹£þßÅúáÿÁeßÿ^ÛEx—ü/¿Šÿô!Ãÿ‚Ë¿þ.�ø_ÿèC‡ÿ—ü]{mâ_ð¿~*¯Í'�!Ø:ÿĶì~»«¾øGûAiþ0Ö£Ð~ÔšT/¡xŠÅE¾¥ç˜žhþVm 21>ªAÁ÷öö=TÕõ+=KºÔu;ˆí¬­c2Í4‡u?ýj�Ã×­¨èeôƒsmÌ=Ù?μKöÎÔ®->XÚ@å#½ÔcŽl*;…?ð §ð _[ý¦õ�KTšÛÀkÛxÏÜ$’»�ïyqãhú“T¿á}üWÿ¡ü]ÿñuè ´K= À:,1"­c¸™ÀæIC3ß“ù+­ ÿ…÷ñ_þ„8ðYwÿÅÑÿ ïâ¿ýpÿà²ïÿ‹¯m¢€¬Ñ«ÔÖÕQEQEQEQEQEQEQEó¯íµÿ"…ÿa?ý¤õôU|ëûmȃ¡ØOÿi={_Ãßù|5ÿ`ËoýµâŸ¶×üˆ:ý„ÿö“×µü=ÿ‘Ã_ö ¶ÿÑK^)ûmȃ¡ØOÿi=u¾ ÿ‘7Aÿ¯ ýµ³XÞ ÿ‘7Aÿ¯ ýµ³@Îx¯ÄëáËý .­ƒXêWc’èË´[¹RS#† Ž£õÆYüd³ºÓ,®—K�K5Ìë$oš+xbóš»ÏÈT…ã9ëÅzµä‹ñ:?xcĶö¨–Z„z Ú”iz&(» Ì åS·+Ôds[ <_q¨Ç¤èZ­¬ÑßÿaÛj)s$þi¹Œ€ŒíÆCç©Îrpx C¢¼ÛâµÖ¹c®øB[-OìÚLúÕ•¤¶ð‚²LÌî_{gîmU{å³ÐW¤Ð^ûXÈ«¢×éÿÐ {•xoíaÿ"®‰ÿ_§ÿ@4ôç‚?äKÐ?ìoÿ¢Ö¼?öÚÿ‘Bÿ°ŸþÒz÷È— Ø>ßÿE­xíµÿ"…ÿa?ý¤ôÖø+þDÝþ¼-ÿôZÖÍcx+þDÝþ¼-ÿôZÖG‹üo…µ˜m5 OôYì..â¹óqºHWsE·×�síŠì(¯8Ò>)Ûj?a?ÙÏ:mÎ¥¨ƒ6ZÉ!b…q·æ%•‡ðúÓ´ÿ‰f{B[½ Û\C¢~Ús¼Om‚F[hØÙ†ÆzšôZ+Å×-Ç—²“n6l98Áê3œqÖ²¾>]kš€îïô=Oû>p¦vˆ3––4PŽÈ>g$Žx¡4é5῵‡üŠº'ý~Ÿý×¹W†þÖò*èŸõúô@Nx#þD½þÁöÿú-kÇÿlÿù$ö_ö‡ÿEM^Áà�ùôûÛÿ赯ý³ÿä“ÙØZý5h|1ÿ’sá�ûÛÿè±]5s? äœøcþÁ¶ÿú,WM@È]øºñüQ¨èÚˆÚ“i‚zßjXY|ÞTF¬0ä(ÜrËéÉ®SÃ^1¸Ò4ÿËz×:•Ô¾/ŸJ°‚YÎb�# s±ÌxvëTWÿ ìuýœÿÚ‡WþÂûœ6ý¯v1æcîã�Û Èø�âmOJÐ<5©j‘\h^Wˆ­Òí ºó[u[æLF;XÇ+@«EdxKW›^Ð-5I­Ñn×͆5˜J|³Ê– �3Ž™5Æü4º×Çž7°ñ§öé­�UŒ†"ñ;°� àrz� žhÒkÅjßùt¿û /þŠ’½ª¼Wö­ÿ‘Kÿ°’ÿè©(蟆_òM¼'ÿ`›Oý•Ò×5ðËþI·„ÿìiÿ¢RºZ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š+ç_ÛkþD þÂûIëèªù×öÚÿ‘Bÿ°ŸþÒzö¿‡¿ò økþÁ–ßú)kÅ?m¯ùt/û ÿí'¯kø{ÿ"†¿ìmÿ¢–¼_ö؉ÛáÞ‹*©(š¢†>™ŠL*ê¼ÿ"nƒÿ^ÿú-kf°¼ðü°¸xÛOƒ×5·hÆž°ñ‡æÒ5F™-åe2 "2�ARAÝ:XÖ ü=k­Ë©ˆ§‘åÓ†˜Ð»/ʱ縢…Îzv®ÖŠäl| gi£^émªë7W6 ¦¤S\‚¶ð•+ˆÔ(]À¼Á�gS4o‡Ún“ÇÙoµCq&šºTW-8óm Pqå0Q´äîÏ8 cb»(�Õ<'iªiÚ¥íÝü¿Ø×V÷�ÌÒ’i!)•Š�ÙÉ-Œ{Šè¨¢€ ðßÚÃþE]þ¿Oþ€kÜ«Â?k+ˆ×Ãú ¹aç=ÓȾÕLÿ� ú‡Áò%èö·ÿÑk^ûmȃ¡ØOÿi={§„!{o è°J6É”ÃЈÔðïÛb'o‡z,ª¤¢jŠúf)1ü¨ªðWü‰ºýx[ÿ赪~9ð^•ãKK;}cÏTµœN� '‚ œƒòœò=‡5cÀSÇsàË ‡�´ø0GýsPkv€9M'À:&™«xŠþ8æ–Mw"ê9X Û·*‹rMVÓþév:…·Ú/ç7zqÒD³H¥àµÁ8ÈPÎH'�œ×iEr7´[Èü9çÚ'ƒC´’Τe+4o‰¼Ï—“µAÛÍW_‡V1çý›WÖ­îììÛO[ȧE™íËn³lÆba޵ÛQ@VÞ²·ñTZúMv×±é£K $›ÔÄ~âHÜ_=Ësõæ©j ´Ô¼ '…uKV»µ“îçœIrØ”H2åpp@: {×UE῵‡üŠº'ý~Ÿý×¹W„~ÖW¯‡ôrÃÎ{§�/}ª˜'ÿõ‚?äKÐ?ìoÿ¢Ö¼öÏÿ’OeÿahôTÕìž…í¼'¢Á(Û$VP#B#PkÇ¿lÈžO„¶ÌŠJǪBÌGaåÊ3ù‘ùÐ߆?òN|1ÿ`Ûý+¦®WáLÑÏðÛÃ/ ‡Qa ?¼ª�À‚+ª cRðe�æ»qªÁªXOt"[µ²¸ò…ÈŒü›Ž7 >V\Ž V?tƒ§ê6¾uîo5fÖ„ÂEó-îI4gnàzœæ» (’>҇Ɨ¾ïp½þÒûg˜<ÿµnÝçgwgýœcŒS¯|c¨iúm®£ª^ý‹RMPKs8‘ä•s…l®ÑÌFÅ =1]]Ëh~ µÑ'°þÎÔõx¬ì¦¸š+p¹Žce ó"œ•äy5¡¥øvÓMñ¹­A$íu«ùz;‹å!EØÈÈ<äŸÂ¶h ¼Wö­ÿ‘Kÿ°’ÿè©+Ú«Ä¿jéc_i—WÔª÷ FàŸÃpüèèφ_òM¼'ÿ`›Oý•Ò×;ðÞ7‹áß…£•JÈšUª²ž ˆW"º*(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š+ç_ÛkþD þÂûIëèªù×öÚÿ‘Bÿ°ŸþÒzö¿‡¿ò økþÁ–ßú)j?ˆ~°ñÏ„oôL²Er ¤ª2ÑHUÇÐöî2;ÔŸäAð×ýƒ-¿ôRÖý|mkῌ¿ Ú]'HÓN³¤‡&†/´GÉê éŸC�œýjÇü%¿èK—ÿ’ÿñUö ñ÷ü%¿èK—ÿ’ÿñTÂWñ»þ„¹ðY/ÿ_`Ñ@ÂWñ»þ„¹ðY/ÿGü%¿èK—ÿ’ÿñUö ñ÷ü%¿èK—ÿ’ÿñTÂWñ»þ„¹ðY/ÿ_`Ñ@ÂWñ»þ„¹¿ðY/ÿZžø=ãøÊ×ÄßsoclÊée!]ó9Tؼ"g®y>œä}[EÎ|Cð�‡Ž|# êe’+•%Q–Š@r®>‡·q‘Þº:(ãk_ üeø^Òé:Fšu�$9041}¢>OU‡Lú çëV?á+øÝÿB\¿ø,—ÿН°h �¿á+øÝÿB\¿ø,—ÿŠ£þ¿�ßô%Ëÿ‚ÉøªûŠøûþ¿�ßô%Ëÿ‚Éøª?á+øÝÿB\¿ø,—ÿН°h �¿á+øÝÿB\¿ø,—ÿŠ£þ¿�ßô%Ëÿ‚ÉøªûŠøûþ¿�ßô%Íÿ‚ÉøªÔðÁïøßÆV¾&ø«›{fWK) ï˜)ʦÅá=sÉôç#êÚ(¬?øfÃÆ>Ô4UIµ¼�aeûÈÀå]}Áþ¹E|o„>0|*¸ŸNÐ,Ž·£3–‰¡‹ÏŒç¾Àw¡õ3ëÖ§ÿ„¯ãwý rÿà²_þ*¾Á¢€>>ÿ„¯ãwý rÿà²_þ*�øJþ7З/þ %ÿâ«ì(ãïøJþ7З/þ %ÿâ¨ÿ„¯ãwý rÿà²_þ*¾Á¢€>>ÿ„¯ãwý rÿà²_þ*�øJþ7З/þ %ÿâ«ì(ãïøJþ7З/þ %ÿâªï„~xãâ7‹-5¿ŠA¬´›b´}ªò¨9òÖ5ûŠ{“ó~£ëJ(U*ª Z( Š( Šó�Žþ?½øoá=kO´·¼g¿ŽÚH§$Œ’1ÁTsÏ~+•ðWí-àÍwˇZ: Ûqþ�<ÈIö‘GêÁE{�WKÔ¬uk4»Òï-¯m_îÍo*È�ô ‘V¨¢Š(¢Š(¢Š(¢Š(¯)ý£üñÀñÛi2�ya)¼Ž ™7 ”F )9êkÕ¨ “4ËÏÚ/MÓm,m4²–Ö±$)†Ð�Š$óÀgûgö’ÿ oþ@´ÿúªŠùWûgö’ÿ oþ@´ÿ?¶i/úÿä Oñ¯ª¨ •¶i/úÿä Oñ£ûgö’ÿ oþ@´ÿúªŠùWûgö’ÿ oþ@´ÿ?¶i/úÿä Oñ¯ª¨ •¶i/úÿä Oñ£ûgö’ÿ oþ@´ÿúªŠùWûgö’ÿ oþ@´ÿ?¶i/úÿä Oñ¯ª¨ •¶i/úÿä Oñ£ûgö’ÿ oþ@´ÿúªŠùWûgö’ÿ oþ@´ÿ?¶i/úÿä Oñ¯ª¨ •¶i/úÿä Oñ£ûgö’ÿ oþ@´ÿúªŠùWûgö’ÿ oþ@´ÿ?¶i/úÿä Oñ¯ª¨ •¶i/úÿä Oñ£ûgö’ÿ oþ@´ÿúªŠùWûgö’ÿ oþ@´ÿ?¶i/úÿä Oñ¯ª¨ •¶i/úÿä Oñ£ûgö’ÿ oþ@´ÿúªŠùWûgö’ÿ oþ@´ÿ?¶i/úÿä Oñ¯ª¨ •¶i/úÿä Oñ£ûgö’ÿ oþ@´ÿúªŠùWûgö’ÿ oþ@´ÿ?¶i/úÿä Oñ¯ª¨ •¶i/úÿä Oñ£ûgö’ÿ oþ@´ÿúªŠùWûgö’ÿ oþ@´ÿ?¶i/úÿä Oñ¯ª¨ •¶i/úÿä Oñ£ûgö’ÿ oþ@´ÿúªŠùWûgö’ÿ oþ@´ÿ?¶i/úÿä Oñ¯ª¨ †>4jn¼'í<�]¡Fò _ßm}£(sÓµx•~‚þÐÞÕ~!x.ËFÐÚÚ;…Ôc�ä¸r¨ˆ@O“Ë®Á_²×‡tï.oê7:Äã“?èðý sõÊý(å?j^%Óõˆÿá¹Õ"Ô\ü©§—/'±UûÃØƒ_j|Ô~.]¤?ðžiºbiøÿ]pÞMá»#kÒ¼7á­Ã6eðþ•g§ÃÜ[Ä·»¬}Îk^€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ ð ãf®ÿ üu­ëVšdzχîþÉ0Ç"ÄìÄ"nRå�Ï»8#�Û­{õ|=â=>åþ9ø‡Àq!Zï‰-®®ÿžyyǦÙÉÿ€ŠõáñËWo<[%–�ˆíuìÙ-š9!÷ÊoÝþ¬ÿ{¨ü+Òµ/‰…¼;¢]xãU´Óoï­c•áDv%Ê‚ÛQC0PÄŒœýkåŸ�6WV_5¯„Xkºåž§8ùäFVÀ÷iOýð+Ôµ Í?õ�íÿŒ¦·³ÒçÑÕ4«‹²ÈXÁ� ÈœÀ½èÙfñÿ…âðdž,:Ä2x~=»îâW�)gU�ÜÀc漫â¿í ¤i·¸ø¨iÚ¶¦nbYb¹·œ¢Bñ»nÏÉód(Ær2Aéå0FÒ|øÏ¨iÑ´~¼ÕíÛLJ¡Qx2Tzm1ë¡øãeogû+|;[hc�t–2ªYí%v?‹M{ÇŽ¾#ézî›eyþ'±Ò®5ìü‰eUòâgS+ Â�Áe<�QT~üJƒQø?¦xÓÆw:~–'óDÍdˆ™ãPªK1$ ã$“šñ¯E/‚áø¿àï#¼Ñ®µuV}üfÝ÷ ŸBIÇ®ÿJæ.¢ø-ð[PÔci<3i«Ü6¦6–M¦ðãpÿtJ?w «|ãï øÙ'>Ö ¿h0dŒ+FêBQÀl{ã‹©|fø}¦kri7¾&µŽö9<§QŒˆÙÁ@¥\ž;ך闶>"ý¬¬µ/OÖ™m¤Õ.lÈh�ŠÈ“ÿ€ûW�x£ÄÇÄŸ ¼Lú޳k¡½¾¢°ÙxGO¶ŽÝάÒHÜØòOñ''�(ëß|Gð�ƒå´�ÄZ嵜—jÃHYFÂ…ÿhàpy®_à×Ä›ïø§ÇVS®œÚn‹x°ØOf3DÏ0 ÌX†ÊƧ*äþ5ðÏSÓtŒº¥ã›{k ¯X�:êñ‚Æ®- VÃ7å'RGzêdɬn|cñR}!UtÙoá{UUÚFK’€ß.8 oñ§�¼;à«8n|QªCaÌV ÊÎÎG]ª ±ÆFHdWŒj¿/fñg‹í4 ß `éšl¶Z•Ü72#3ÉjŒ$ò‰b3<‹…@CÏF¥øÉ5®“ûH|=ÕüJɇÕãOþª9Á—’O ðœöÀ=«Æþ"ßé:ŸŽ>/^xyá“M—L€¤�ãc·Ûl²‘ÁÃ޹ÏzúãÃ_4kû�è÷Ú�³x“UÓ"Ô+{yÖ•£Ü^&u/ÊÄ;°9­-#ÆÞÕõ=rÃOÔ’K�Šê;£tKr7g.À)ÆÖèOC^ã¨Ãÿ þ|B³‰ž]ÖÆ; œ¶’gë•õÒ«èÞÕcý”üUªÆ’>¹â"Ú­ÁPw´FU${ƒ»ÀÍ{‡…¾'ø3ÅZËéZ¿kw¨&O’о:ì,|~\ñÍfé_þê×6vö$†Iîæ0D�o2üu܃hù‡Ìp:óÁÇ‚ü9Ó4­_Uøa=×ÄËyõ+/)¬´k] a©’ %ˆä•†ùBÍÜ×Eû)èúeÿÁ/hÆËÝÕŭ̱FZQ¶�î€ $oräð(×4ߌ¿µ-n=&ËÄÖ’^É'”Šc‘QØœ$*äôÁæ°õÿŠëá¯ø¾ÏY¿ÑßGÑ4ä»[;h.~ß½¼€¡Ø¯’Ušl §#zg1>Ûk?ð†éº-®‡®ø_Çþ}C˶ѯ4ñö¨Ý‰Ë�wÆIÈ œe†»o£IñçãZ ,ÍàÛ€êOÙ­hѾü}ðŸ‰4Ý5u{äÓuË˃oö!î±³JË™vlÉP§99éŒCñŒ4/kF•«ßy†­'•eÃ$�+eGð©Ú2ÖÀü�|á èÖ¾1ý‘-m4˘¥×<>Ój N °:ÜLø r FX�߃[_µ9þ-|]4¿…–ÏÃúT°« µH‡Ì tà™¿ ”ô¥Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@e7†ô6×F´Ú.˜u‘ÒüÚÇö�»·ýf7}Þ:ôâµh  ›ÿ èZ†«oª_èºeÖ§o·É»žÖ7š-§rír20NF¦ÖtM+\� Ö´ËF;–;»t™Aõ�§ëšŒZ>‰¨jw˜,­ä¹�? ¯–t_ëž ø//Ä;hlo5ßø……Ã^#º‚JT+)LDp#(ê;�IºÑÿ²ntË´¬û–èÐà@ØFÜu¡áÍQÒ­´ÍCFÓnôÛm¾E¤ö©$1mR«µÂáI€q^UÄïh¼;¢øïDÒ¬ôßü¶/e+¼°HH9KpÌ ;@0 ž•Ÿá߉Ówç'î–Y) ÇtŒFÐ6¶zŒ{.©áÍV»K­WFÓon’&�f¹µI\FÀ†@Ì ÚC0#¡Éõ©m´M&×GM¶™c”_±Gn‹ $�€mÁ$“ÇS^/Æ?k6~$ñƒ4ãÂ: ­Ïy,‚âéPeÚ=§jáHnAàŽ§ŠÕÖ¾4Ýjð‡ißôÛk½sݘ×PvZ¢– ¿o-ƒƒƒü®@ \Ñ´M+C� ÑtË:;š;Kt…Iõ!@ªÒøSÃÓ^]]Í é2]]£Gq3YÆ^ea†Wle�z×�uïø/Äú·Ä- +;� €Y96÷û€Øb-óY•NzgÔ8o|vÔï|Uá»Eá·±ñ l4‹Ã-Å“±áI8bYF8ê{‚(ÚçðŸ‡'±´²Ÿ@Ò$³³$Û@öq˜àÉÉØ¥p¼úU­/CÒt››Ë�+K±²¸¼2æ[kt�§l“¹Ê€Xå˜äç©õ¯Ÿ´Ž1ñ^£zþÓ<*ÑAuäG£_^˜5Ó#æRì±÷ç¸ ð{ëøãã&¿eñ øOEµðö‘s ¤wMâ;†HÚGE%3·pߌä‚AçÔÛu}#MÖ­>ˬiöz…¶àÞMÔ+*dt;XšÍ—Á~•®_ hŽ×,°ˆ™cR¥Q¾^TÓð6/ ¨þêºÞ³á›{¿éé:›ncž7�†Óž„ä`õàŸ �Zø‘wûKø§MÑï4IgÓìXCm|f6±Z3@ë±TƒçÑî$��Ã8Û€¢®4m2ãGMÆ›e.”#X…“À­EÆÕØFÜ ``U»kxmm¢·µŠ8mâAqF¡U pb¼WAøÓ=ÇÀíkÅÚ¥µ¤ö—$–rÚ*²Çö�ÀD6–-��sÏfävÆ—â×ÄüWà¯G£h3êzþ’·òDË4B's6ß›{aU#Fa‚N d`Ü´ß èz]ô·ºf�¦ÙÞK‘$öö©�ŸVRèš&• Ú½®‡¦Xé¶ÎæFŠÎÝ!Fr,B€3€}…xî�ñ®ÿJ>5Ó¾ i––ú߆ %tæo*媨]ä‘–’.Ogè1ŠÌðWÇmN÷Å^±ñ^{¶ÃH¼2ÜY;.“†%”cާ¸"€=² xzßU:�¾…¥E©XÝ¥œk1'©ÞsøÕ˜´=&-bãV‹K±MVæ?*{Å·A4©ò�¬øÜÃå^ þé_?hr�’¤‚Ê^5È$`hÐø‡àßø·ÁÒ,5=]–Co©=êÄmc•Dn3ó1ØùzžzUëÏ„>!ðm×€uïÇm¬j~µ{K«9f €í#9Fn3Ê9é•ëȯ¢( '¾ð׌¾ |;ñf•ãT°ÒeÕN�g‰M˜B¬¢I‡Ë¨'Ž}@·ÃOx£OÔ¼;cª|;ðN�m¥* ­nHb¸¹¹hñ²Hva’NÌùçæö?@Ñ@-|Iø_âÿÞj6Ïà F{ ðx�M¼û"÷L°3–w#988Ïë]OÄOø’é4›+�h>7Óí´Ø­>Ô×&ËPY‘–i™þd, `âöÉ÷Ê(Í?g¿êþøw•â ÖK×¹’ãÊGÞ¶êÁ@Œ‡•,qÆXõë\úxOÅZ'í#¨ø»OÑâÔt-fÒ+9§iZ(†r�ó1Np!ºö¯k¢€>Dñ—ƒPý£¦ð~Ÿr¯ kWpkš�´g!6+— è[sñÿMÐWKñmµh?j¿Éá«{{�N-¼VóÉ太¿k.›°v’�€8À$gŠöŸ|9ðŸ‚'¸ŸÃ463λ$—Ìy®s´3± dJ»{àí ÷ÆV+¹±ß¯ØÂmíî¼éÈÈpFÀÛOúÇä‚yöâvß¼KãKŸˆ:ïŒ`¶ÑuOÛ%¥¥šN'ˆÚ'Bî¹f‡ýã�À« <â�?Rð펩ðïÁ:u¶”¨.µ¹!Šâæå£ÆÉ!Ù†I83矛ØýE|µñ'á‹üSy¨Û?€|45îƒÁâ=6óìˆ#Ü 2ÀÎYÜŒäàã/|ð¨�ïot8öîàõeC]¿Þ6ç¯vµôed[xkI¶ñ=çˆa³Y»…-å¹i‰�z(áG� dòs@ôQEQEQEQEQEQEQEQEQEÿÙRESCsize=PQ&version=1&type=12014-02-18T21:15:22ZFLISAÿÿÿÿÿÿÿÿFCIS—Ï((SRCS0PK ë©RDoa«,mimetypeapplication/epub+zipPK ö±RD META-INF/PKë©RDwvøÒw -META-INF/com.apple.ibooks.display-options.xml]�± @÷~ÅåF“JÝ€n~�Φ)‡¹¤ÐÔ¿­.®//ïéq <(Žbð°HæèXn/çSÄÑvÚqIËô¼ÆT›Xl ¨>æ22¸Ã7m|s¾´$šÙ3¹ÞG©mÍwÒjs>õë´�úÿ¼PKë©RD®•âè¦öMETA-INF/container.xml]ŽA‚0E÷œ¢™­�êÎ4wž@PË€�íLC‹ÑÛ[Xâò'ÿý÷ÛË'xñÆ)9& §æÉrïhÔp¿]ë3\ºªµLÙ8Âé¯[hJ扛ä’"0©lG¤ží�²Zkj�®¢�˜óà<¦%í²fïëhòS”�†ã"`ïL�¿5˜½³&—+’ñSìËŒx(.r5È�¢•›¾ûPKû±RDë£)Ê¡ ch001.xhtmlu‘»n„0EûýЉ{ð’ +ƒåÑ&MJí±-{Xàïc¤$Eª‘}�æ\Ùâîõã¥úú|Eƒ.b0Ú„‚)"wâ|š¦tzH­?ó,Ïs>¯ Û º±þCö­ënìýñøÈ­ lÝŠ²-b@’Ð(éRÁFê’'Æ#,Ø zIÖ3h¬!4uÒ´¶ÙYêIcY)„jB}Åä]6‡gçßÂÓ½¹€G]°@‹Æ ‰�òØý¾I›Ð⢙p&¾ž£G𭵨m»Ä°¡ÞèÛÈ)LhSw7u"�‹mµ ñÝ4^Qg035zlY)Tö_ߘ¾/_­»Žoò PKû±RDµ.AË[• ch002.xhtml�VM�Û6½çWLuiXÒv÷ÐîV�¦i‘C�ÝK�´4¶XS$KRöª¿>3$eË›Cs0d‘óùæ½�šï~ûüþùï??ÀFÕ¾iø/£Ò~[ !اº>ŸÏÕù¡2îPÿøøøX¿°M‘ŒžÐN»KÙÛ}´½¿»û©6ÖEß¾hF ºA8�a[La_þ\Ô×-FÜÔèD0®€Î耚L­Ð½é²m�Aaû±‚÷¦Ç�ðØÔéˆ/•ÔGp¨¶…³B? †‡ûõIÕy_@˜-å øj~§èM�jmv¦Ÿéá± Òh�ý¶�UÙå„T™ž0RxBu_´Íp[½ß8�ï28ѱ/¥.ž¤'£’[uF•£ÐsÙ£Ufö·i8ÍCûY#,‘ G©a‰9Ò8äPTÑCÛØ%à^:J+œ€ëßRìºr Dï œQ�°Ü‹Ž&ÂZ�„:‹Ù¯³ 8¡[§?û€ãüÔ <4"£ŸYr�¡ôÝXuf¬‹öšZ´›¯ÌFtÝä¤P•G…ZvÙáÓržÜ¨¶×ž~Úåš*aE7`äcÑþu9g× ÞQÉv³‡0à¾ØœÔèEdjü¨ÍYs7[ÆŸ<¬ñ’Й›šÎ¨‚OƒŒ£'ÁÌ­q4ãŠÿ™|ˆW—Óª©-�‡p_<�Ø�q§AzªI¥@ðCD¾#i8¡ä”ëõôó@É#µó·±·›€ó`¨ná�¢:cEGrž¿9�óíÒK#ÇxבrFq@_Óû]eõ¡ ‘¦oˆ< ë°5gI�9Ôÿšf»ç®ˆ*€uLibG{ADIî�øMÃâÉ_ÓŽ‰Dö§pR-í“öcdƒC¿qRAZuuó�á{š`:*¥,ÓA'}pr7.áTÁâ$l©(’ˆ¾¶Kcçp›XF/:‘º—'ÙOB©9†¡ÇY†áV±4ªœ«ÿ´L¡|œ2“›ûô´nc1œ¤Éè°$n‚Á3›5ÅëdšA^‘;}Ž¥é\É�£DÈÔ’¹ðßujêYƒ3Óaˆe\ô[Ó0Q÷¨;r,ÚËÛÌ£&¹¨ÛÔXͳY Üh‚Á¬ibÑ%ôÕ<¿³TŠËX3gÑ?™òJ`ù¥›«øÀMZ3hRû t‡7>ÏÙ0³•]ŠëL?¥åOÓ¹:Âj4T Å9pD¾õ”·ï%[³ûhÙ;®�v¾á.†¸wÖËŠIv-Š�¤e(ýâ62µPŸ¤3šÿo�È? D(oà_"‘Üó”b†ÔwuÕÒLîoaŒèœñ,1µ`¸aAq ½Üï jJž7Ž'´g�˜"OL�TIN¿$ø"ˆÆ Ó«®½‰ å]”6ÓÖJži¿f¹úM^×ñTðkbÇûI;ðFÜþ†Ž&n䘥Cê$bÂNìXY~Õ÷+^%Ȉ(Ö:¬þÑ7GþبÓGØPKû±RD/DÇŒ²© ch003.xhtml}WÉŽÛF½û+*Ì!1 ‰Žç�ØàpÆv0€—A`$ȱEÅÎ�ÝL/£áßûUsIV|’ÔK-¯Þ«j?¼ý|ó埻wÔ„®Ý>+äƒ»Öøë¬ ¡�ç‡Ãas¸ÚX·ÏyõêUþ(g²ñÐkîãî䤮ú:�}ùâů¹í}&VYUÛgDEÇAQÙ(ç9\g1Ôëß²üiÇ¨Ž¯³=v*X—QiM`ƒ£½2•-§³A‡–···zË=›ŠM©Ùù¸.'ZmîÉq{�ù0´ìæ�Qã¸>^Ù”Þg†N?†\~ÃE‘�;[ øð\m éê:Óz³®Ž¼"ÆVy Õò·/³mѼ¼OÌðcßêñ° Ž×Èp­½mUàïx¸WÛwË}šîîÓtŸªSçWÛ¢Ÿ­ÔÚù°î•Sôôu­êÀnÝÀúGëõÎî�ê:möÔ*³�jÏžl]³#E½*ïÕ^öüàwT[G•öÁé] i=ö½u�Z½sÊ!ˆ–ʆ”§BMu8"M‰ò&ÒdÛ›»7ŸŠ\m“Í;v-áóüŽ‹»aÏ�Ÿîü9ý\îɆ>ÌÎITÛrE¡q6î›KI”ÊÐŽ�ÎŽë냮˜~¾7ö`$þÌk<ÞFqžK|¾´=.h,<~íPkë†D`¥�¸‘ Õ÷ǦP$ë°™‰•lMÕʯç›"ïQ3p&8köÛ7Ü>ðºVb7Ù1 ƒ’K†B«n¤ñ#J�Ú3 v’Ä4¬Ové6Ìüñ„¬Oˆ³Bô°É�Á2a?Â{;¬èA+ Xp·]ÎÏå};A-êɨv¶KàãŠoª§šoè ÖëˆÄÇüÎ- ä{.u­K5J× ô@¼¢ˆä¬ë BÚÙЈhª8J\¬U"WÛwè_s9ߣtQ@]}Cj08€Ý¸ƒÖ€”¿�+'ÌuèSNEi+–“µn¹ÈÓ¯x¹Ñ©0Êób¡R £�ÑwBz¶svo©Ï†nÍŠî†ÐHAPX[ r°äYÚ "ÕóÉx€¸÷´^_Ô¯ûõ¬;—DÍ&—Fæp¸Ó}Êàƒ8ÕÖY¬>h¢jÙ<|cò¯ekAö(»wÐ%ÝPó?Ýjob2èsƒ…ÂkX|3}]ì]|•¢E¦A—$SJÈ(�äy�^Æû“EQZ4„õRy“TÃäwj»Ø .‚ª=¨ÁK›KH»g©ŸÔÅPÙ¦±ddÓ076@:54 Aea»‡E_§=iæøg˜Øa‚×ÐúÏ%M©ý(dœðIɵ¨σØO0& ß hj°á¨]Y[Ž$ ˆË{²1Ìò$tÞ)°ÐNZ»cy۲њtü_Ô©ã$8ÄÂ<þÈEtÇ“¶—d 6캣¹ÚôŽ“)™>E:ÐA£Íyµk9¡Èh„=I‡’ħa®RUÄ×Yø¸dlUhÇs- ’º‹º­¤U#’*µN4ÜãF#†N-�$ŸÚ‹TᤠLÉL�`Ö¡½¤k7­ýÝ7?†—ö…øâ.µ®Àec,<•CÞrš~l~txSuœm?Ì+£¨Ã“s9+ÐúÉïL©/ç³Of•·TÙDNlj¹)ÏËCP™ažò©/Aâ#8ò4(Ûxñ lÛTø˜8~Û¡ªñ@2¹)À2º“ ý�0»ÛØí:5Œ~%šNœJ¤™tò¨#ð«©e&i¸å¹Ó< SC2–§«¨§É7¾$ÄŸ0E�¹×1D°VºÄ¨kY¿¼(­–Ù— N'gHfbÊ´‡(…ž‰l‹ÐnëÅ¥PÔ'ö ^3XêÝÕ”‰ŒoߨÞí$ yê?’Ät*p>=Œ�¾á >½½óñ�ÉWPKû±RDÜei³©¼ ch004.xhtmluWM�Û6½çW°º4l)ÝEÑf£5°HS ÚÙ½ôHK#‹YŠTHÊ^÷×÷ )Úòns²Lq¾ß¼Õ?üþéýÃ?Ÿ?ˆ> zóªæñ4hão‹>„ñ¦ª‡Cy¸.­ÛU?¿}û¶zâ;EºtCã´½¸©Ú±‹w¯Þ¼ùµ²£/X+ÉvóJˆz  EÓKç)ÜSèÖ¿Õù�‘Ý;2äd°®�5� ®ŽÒ´¶™ï4m>~üXŠ÷ÖtjWWéˆ_je…#}[øpÔä{¢PˆÞQ·<)ï Ž#ìz ÿ‡öºJ¾Ö[Ûñã© Ê¡ÚÛB)U®›hžié‘#M{ÒWŦî¯.Âÿ a�xh–^+³=­É앳f@„— ¯YáõæžeD’ÊȈ… Œ\oê1KvÊù°¥“âü¸–] ·î¡ñÎ9Ž?zQÓ°if7ñ(”0ꎡWf#2ð‘V�¤�"X±—î(¶DFÔrÎeÕØ–¶ÒS±iiÔöèëJnÄkäzVbt¶�bV¢å¨ìHné¿_ ÍO¥xèaO™FO-ù›º7õ¤7¨äæ y;¹†D�ú£tìg¡•A²í•ø‹†F6=µ+�+Ââ­[8¹•Í#¼Y{r{ÕÐ8Ÿˆ|Â^×l±½÷ŽZx¦¤Ž¦ rFêÓe᧦Ò‹»Aþ‹ÊÞ_ ëÄÃA\O/ÒHäˆÛ?Å›§!W<*-Å“c7W|ÃSÖý�]ÓÒì&èYs_t¤{°îqíGjT‡~˜á’Ûó–.È2ÒP$_¿p�'éb E ”[ÍCoÎ þÚb ƒizëðKÑ©Y–eÒuöl>Œÿ1?Ìïcésý°>$äYGœ ‹_ŸÈ èx'&ÃÃü¢b«s]Á½Ø�¢\C3‰P!ø]¸�ÙÅDÈ4ÿ.V*›™�§á™5Ä–q>ˆí)?œgãŸr/ÅýÑXÿìxYjvô Ud{Ÿî×rg0CU#¸QZ çEßs…âÁœbµû:"ÐRÜŸF¬ä‰»•^�*�èyP·IÀç‚bˆkË¥¦øi¾7/‘vf®å.�8cÞŽÒNOVóˆ§#Ž9ŸW«Ì-Kž ëm{&T´)×[ƒÕõñ†]x©È@šÇ(>2Ž#x½2tXš‰Q&d‚ÿA4 éçd8ï‚ÙIx|ú&ç£RÜ¥D ¢¯\(ä÷àE—ûù´7ÂG ´-ßVÓÁ¤ÔbZ^Ä!˜¬|EÀëKVÀ®Ÿtˆ\“hoØ*ÃQÓRà/7žÄ½à'ò <,û?¹â Zl]l¦ŒÂ�lâ�¬-ûz礙´ty¢ðZÌ“ª›x�côvgy+¨³8×wî Ã|Bg¤—ݼ?ùKp®Š8% >s¢¤§�‘Øy¡JíÑF†�^¤H—# ßtZw"’¼˜@�ƒ…o¼ðùSF�ÖÉÅ-yx}j¤K°±Û*Ö­‹ý—RWÍŸN‹'|šÍßdUúVýPKû±RD¥Ž’:›> ch005.xhtml�W]oÜ6|ϯ`õÒ°¤$~h“žØIZ°[Çv ô‘’Vq)“Ô�Õ_ß!E݇?Î䑳ÃÝÙ!oõÃç¿>Ýý{ý…u®—Å›•ÿ`½Tö,éœ>æùv»Í¶§™6mþîÇùƒ_“Ì‹>Ò0–G+E=4aíû·oÉõ`�J¼.Þ0¶êÉqVuÜXrgÉèšô×$ߣxOgIKŠ wÚ$¬ÒÊ‘ÂÒ�«ZWq­NRñõŸŒ]ðj-TËnÉlDEv•ÏßùUR¨53$Ïë&I¶#r ë 5‡3YemÂÜ4 °£—û1¬ò™ôªÔõ„K•Z1QŸ%b“¥å9µ12¸Jn‘5I’ï“bÕ½�"¾8‚s†¸{˜rü9Ç«ŽêÔ�Õ£yæÔ‡9-î<‹l`€íþ´X L#ŒuéÀ gûSÞ82iøs¶¢¾x½Ê1ÇàÕ´Ì1×ãÃàKfÇáõ†L˜Uä¶Ú¬= ;¦&œeJ›žK¦_lä"c_x? .L¨JŽ5±š;n!LýdǪó+kEWÓ&ë'{/³J÷yR\M·ß.W9/˜6OW(u™ñÁ§%è4)>ùÉÏ~ÏÏ' Ô-oqÚü~¤‘±'ë¨ÿ/|ÃËR¸þ>Ò¸ ëo/1Y›¬®˰¾$®¬ãr]cëÅn)Ý^Ý]ïËÚM�®Ô£ªõ\Èï´u�xˆ‡½žG]Å*¤âU§ì©¯‚š"ÔÕ2`Ù* ¬ââ± ¥XÏêðÕ,¹…L & ¯…/;—rb=W¼…LË)¬´ð�^÷B ë‚%UG©ýh™•X[Ó õ”±¯ Ëg\æ´_ˆpRW>HºY˜�ì4Ûó‰qi5ëø†öÌ£7¢ÆŸ¦#ŠÂÔAË‚ì3²=®×‹ùô…é¹YƒAÍuœÙIÑQÙ´å jŽ’ú"¨¢-Ø\¨š²pŸ„ì ó3ÌKÉ‚#eM@A²æÁQ¬ U­Úâ®ó‡‚|Ãræ¶$7”6¼r~T·&oƒ¬†º¡� ÚfIÈNmHÖ^m;³µˆ£°;½ÈåÒ® ÝõÔ÷‘ø�kÌmŸ¿o.ýµ—VˆZye¨Æ}+Ð ,o Qü]*�NÕˆ6)æOôŒ�}_“o󤘻rV^Pž&Ávz”è*pö*@ÓÚ-¼Á�㜄àè{÷@©;¦v$?ÊÒkõij»èÍçÛPÆ€ÂãrÃSEµ(’Ó¦ôÄ.ak[aédÇs×öHhµœÊŸfÉÀ:ÒLgš‡6±ç¼xÀžHQd,.”¹B.PU­äì™K¥áaªF&cÝæ*á¦:cÆY´ú*ÙÉïñ "Üðáþ_°ÃÅŸ±ßQ;šMÏŸþQ}®eÇo(¹~´�=zú¾°x Ö>&01Ã0«ð`’Od~f÷#—¢™‚ño÷Ͳ—vÆîž•VxWÙx ìƒ{]àÏ=�0}¶�@R` ž…ýÂwˆ¶>›#ø�nĬpÿïtÜwNïì@ôȨ©ðlì!W˜Nß¾ËÕ&¸rð²=÷×L=ÎÝñ`�¥Ñ¡B-›½yÔ´GšÁý£Ò’òQEs ñÃbö–„‹ÑǯÇТh+”mëO,¬éä`ëÑu�Ím‡›c€Çûp=íÁc¯ ³Õ4F÷A;<(œyæâV£1~î0U ʮՖ³žDÛ¤ãh»¼¤)2/�ûü°ÅBbóøB?ø¿ â��|þµô?PKû±RDôuGÊÎ ch006.xhtml­WM�Û6½çW°º$V–w·hš…V@š¤@N-Ò´@�”4²K¤BRöúß÷ IYÚ —ž,‰ä|¼yo†.¿ûðËû/þúQô~ª%ÿˆ§qÐî1뽟Šâ|>ïÎ÷;cÅíÛ·o‹'Þ“ÅM4Íõ³�ª�º°÷n¿S˜Éel•d[½¢ÉKÑôÒ:ò�Ùì»üǬXW´é1;�&+½±™hŒö¤±u’º5MÚ땨úc'~šÕÐÞKIGx˜uYÄUÞ7(}äÅÇÌùË@®'ò™è-uÛ/»Æ¹LøËמž|ÁïpT1ì²6í?ޝŒª}ÌN»¼fßyr�Ã3¢¤n�h¸Ëª²¿ûÇ ±ôÌ óV5~¸äŽ&‰ä)ÙGÚl;w^È=wqÏ.î«ßÒQ±á¨ÀQö%âQ¸¼¯Êi1Ð)ë|ÎûÅú˜ËΓÍ{~'J™�*ÓR�гjy* Y å„·R»ÎØ‘Z¡´7BŠWÚè¼åðÌ4¢t¯EKÓ`.Â÷Ö̇ž‰RPe1UåØGå…›¨Q�Bªõ%숉q’b²¦!çnÂ÷M¢#ßôäB1N[·Að�t£PÛjûæCp>)0UÔJK«’)Ô�¼Û•pÛb—H¶EÏË#­q!ÔvnÖ,¶Ñ&‡p…#Hù¬|¿Iõ¥Íl-'¼e‡îÔ�¹Á¿÷Np8–ÜdBh”ï™¶5¡ŠL•ìMÒ ÀLÕmciÐM”�«¼:E ✪ÿËb2W¢Õ}%ñgN”w²A·PÏÀCÄf¸ô3¼&l%½reÓOŸ÷9¸IÄϰIOrœì›¬'ãœâÆ€GHƒ§‘>°BÌ3Ù'*Üt‡†xÉ[ÐFœå…w£~ªæyѸÕP-›ãbm#®%ÿk×ðÆ Ž'�jä€nºŽì’¢Ó8¶n¼£A´áƵ+k5(¢±f®®%‚£“2³»¢ÿ >|%%Oo‡ñ}@çz‡‚�œ”ã–k¶�guTYõþú!·}ž’5�þâ×±xÀé¹n•%.ó%LùV”ŒôÒ �ðʼb C%R«YðcÀ]Æ0Õ—j}³çêd'>a6$€†‘I>B?gÒŒ¡3‚80ü:«æhÿ ËTÉ�˜—«k×›™{Øz8ÑËsÖêëL×=Ÿ>€O3tó Ô§¥Y,Û^-{büwûÛÛ|ÿ}¾ÿ!¿Û?Üß=ܾI©¼,n‚P—€[�žÇ4úÆÈév¿_NíÄç¥:Òr×géaôäF#û�ÚÙ8f®!5RƒxС1X¹;–ETU”z»ïô%ÉÛÀÕkÐtþ½p-Š(­¼ FÓLŠ]3Ý"0–™o6 U.1�ý~Žb];tèʾÚ8±´«¥ÁÞFžMÒf2ýcEgÍÈN4›àœ9»P$8¨Q‹ã2ÊFÕò­(ñN«CïÆÜÞ6°sq C§Û8Ô·—vÀ|@zá–2ÐÓ%YkÒñ¤‡ä—±8ànuÙ«3¸7¡¨VÖ[G$L‘nË›'ÜÐÓÕ¼ˆÿ^þPKû±RDTཀྵ² ch007.xhtml�W]oÜ6|ϯ`U±�“”Ú�ƒ³€ M�-$A�>Œ$è‹OäîìÎìPÞþðëû_>ÿýá­èà«g[þ�ƒ6þ6ëC_—å~¿/ö×…u]ùÓÍÍMùÈk²´è5�Óîl¥jÆ6®½zùòçÒŽ>ã¨$›ê™Û�‚u/�§p›M¡Í_eåñ�‘Ýfr2X—‰Úš@KGi[/kƒ šª¿Þ⃳5yO~[¦‡üZ+s/éÛ̇Y“ï‰B&zGíé“¢ö>a‘1Ðc(ùñ·eB»ÝÙfÆ�§:(k„jn³Uäãšè´ô蓦ÒWYµí¯ž‚“³ôHõ(=årsésk(·.¬£Üøü·²\s–ëêm #F Œ�^ Œ°Npq#Æ(×Õv\ƒµÊù��ÒIq¼ÌeÈå=’|^+/È�P&æK÷\™å¬@ÐS[ª“ܸ+¶åջūa jéiÕ¶!N(¿ir©9¢¯�Ãæ;©ã–†»cGr/¼Ð¶–Zh9;н ½�è¾AT­Q‡–¦›dGÂM&¨Ù‘-Æ_sD-'S÷Xý ä‚nxÄEâ¢E¡ô(¹†�Ø2òjœCdÃ|— ã¼-ã›ËB¼OU[üÁF„±mjÃq¸iÎÞLI* �ÚμͰc¯|Pµd˜”AÎbò„_3‹­\”�\¦žœ#SÏÙÚü¨o¿IÕ£Z™ˆ VüKÎèB'Œ2Ý©\ä�±­huW}Þ“~ ¼•5Fó¸TÈ3Åq�˜_ SìÕ½©Q2zß•Ÿ`ÔÜ4¹ï¤«{ÐŽÉQVy~™/ï4 ñe720/2CÔ N+@¾G£Ä0áÏŽ1¡´([™ðµ“>i×NÖ÷ˆ�{r ¥dÕòD,O8놈Ök=³È�t½®�á)œA¤¬£ü[…6Ì>аr¼RQC…€æ)vNQ»Á(˜NÜ4^&þk íâ·S•5vo´• #”Чƒ‚9ÙF°ìeàçì2!陫çGŒÀ‘Ÿtð+ e=/N²<Ô%¸¢pÆ3 Î`¸påý4€ïØuH/R“ Æ./�ÀV°ò÷˜=­¹dù •–;MüŽ31Ç@õÏÄ€ _ìNäyšÕ¨ê£º€™�" yÕé†�S/ÚëU×/ ž†^0£¹‹$ª¶%ÇÆ±$)ÄÛ2bßãÏ:Ö€p¶Ÿe Ï'º¤ â"8ÕuäRÀèZi^7|\µª‹è:&Æ}Ƕp@Á§ÂÊÑa`í9Æ~ö*ÚY\lÍe*jòSåS%ì„Úµ^Œï‚Š®Ø¬t°Žš¼L“° ø ZŒÐ=üÐyqá'´â|:Á8{'F]k;5Ež¦]K,¿ÈaP¡ÌªßãÏ —ýt?w©è¬…Ðã¶±l¾ G ¬æk�9èet&¢™3sb“ÒMº#’C!p ~Ä­ì—Xûv¶s©ÝÍÒì ˜Xx7©†|Þ� �Ï“"~QU1%>�ë«ãÊDŽù ëÁµ²øÉ$ö´©-ž¥ÅêýŸ>üLån'q,ÖìÃϯ^qC&Væó«›?$[ű[Îø º‡ÝAª£Ï"áÝ8 sÂtpA—[—%·>±ˆvýryqøD‰B¥G>yûù {Ñ:;¤Ÿˆ8”½bBA"¦ÛÙø}ìqÁa´?�ã�†!±ßêä€ å\#ì�½�Ào²½Õ²ñ}U¸šFky©-ÔR!ë*oØëÕð f:9ây”eÛ¤A�˜£f•ìø(£§Ä¡oÉg#kYõçzÿ­yƒ9)_(‹µùòxž—ËçèÉ>y—oÝ2ýðPKû±RDR’U ¬( ch008.xhtml}VQoÜ6 ~ï¯àü² ¸³³ÃÖÀ10¬š¢íEÖm�²MŸ•È’'Éwñ¿)ÉN.M  K¦>’?ò\~÷æÏßoÿÝ]CïU½*y�‡Aiw•õÞ�—Eq<óãEnì¾øéõë×ÅÛdÑèÇ©>±”íØÛó³³_ 3ºŒQQ´Õ+€r@/ é…u诲ÉwÛ_³âñ�^e{Ôh…76ƒÆh�šLG¡[Ó$[/½ÂêóÍM;c=ÔR·RïË"¾`%õ=XTW™ó³B×#ú z‹ÝÓ“¼q.?�äÕãƒ/xO>Ê"F\Ö¦�iqØxi4Èö*;H™oGr»Mn)J%ñ¥ð€ê<«Êþü¥àèôŠC{� ºíAŠoà^0îEu.Ár 茧n.ªr\®vÒ:¿…ðø¸�G»í òo¬AŒ£aœ¡"È�Pñ›Éc R;Ù"8bÍ>ц’IÊácÉT £Â ìÞî"Ô ÷½;i„ ƒi'… R)R’dxis1Š¦Ç ›¬ú-làíííîMYˆjäæ�8ˆçð_�ôfh„?ż gŒ–—ÅHQ)¼5z_Ý’+DuÀm'{é(OÎË£š‰mÕm—¼Û²HW�4 ­!¾´ñ,¶¨´“HÑÝ¥b›î„@©½On#Ël�ú r ©½l, ŸX稨®KÅsà€�±l°$¥äg‘õdõ¼(ƒ�£VÖ6!%õX²°øß„·ôùHjÎÉ÷‡« {7T\P¦ ZV§CìOòØ„ÓKÊú �ôO#ûëÓ{r}OõkL‹U*^Àì�ó—?Ÿ��e^†ØÒ» ¨ DL›dJYÒ¹ µË�‚kqTfŽq°†h¦d”˜)’ž’¦þ_O×”;k¦hª•lÞ9K�Š;ÔLDWa´†ÃB·0sÛ“vèGCER*¤ É:âPb “cØU´…ŠºEÝH¤Y¹îfÊ�š˜æ „…8hÛ))Y[aç%6Ê~njzÖÀó¶àáLòÖ¢5°öE8øi7ûÞèÍ—¹ ù 3YmˆÄœäQø^jÆ eø4ÕshØçwèýœ3N/&܇#xÇëŠ;�è5”m?ØÖÂwJèý$öD5’{J5 +ê·Ð|¤Õ‡j"rÀQ÷cYÐvÕ+ÝŽ’C^¨úžEÞ¦Žâî¶ÔÿÁæÝI~¿è'~ Y¥´ˆ!ô£Œó�1�Ó$ª7„Õ õ©’ŸŽó>¢°tIèî%³ÒA*¾3�?òÜN<ùï@,¢|!RæU…ô±·S“¯aÃuœæŽß©é…áÊ*Â;Q×hÛ\T½e øƒQÜŸ<]|¨5£èþù°Û±õ�qþ<·´ØJ—KC–Ÿøñ0óøÕ+ÞP×¹‚ð¦1*!À²^—â|4YÜݹ�9sñ⫟{{÷çí;ÕÆÎ,_,ä�:tƆë¢�±ÿ¡ªöû}¹¿*�ßT¯ß¼ySäM1<ú�û´zôR7ý:¿½¼¸ø®r}(D+S³|¡Ô¢ãHªnÉŽ×EŠëù÷Eõpc©ãëbÖ=Eç U;ÙâiO¶qõø6êhxùùææ¦To�­“÷lëã¢.ä‰Ñv«<›ë"Ä£áÐ2ÇBµž×Ó“²¡PñØÃjäC¬ä6Õàñbåš#þ®£vVéæºØi­Ëyý`^ ÀËðŽÍe±\´—ÿåN) 5ž»ç;MóØò¼÷®ææ�kØá@m“:ãŠÊ %*rôáÿ³q 2Dïìf H%ü¸g³ãùšjt#c6á�à9ÖPpªÖQÿÃÊF5êöüZAã@ÃὪÁWµö®S ›ÕØZ©¡®lÙ»m*Q²UO!¢Å¾~]}S½© ÇÁ=LÜ'«÷£›÷¹-ÜGw¿çÕ½”hU,Åyô¸wHEž¡&k´�†@P-Kõ)ÈUlõ(1{LðëQ¯]Nîô¡C_° 27dƒÏé R¦RO›l•Q{9B?y#¢¤Ü-§ÙZT8xÒ:>ÜÝÝž îÑQ­x´š{)p x–kÏñù)àÕÛ�w ç‘Â6<‘…/C‹ñYî‰Æ!eÖE¸R›Ô€�Qê&‘™p%ç4« hÜÞžKZuÉD�H¸ŸMËO‚nøTÕQw¬>œIÎ޶®�‚Ü¡O‰”0„pΙ Bª üSJù´:fÁ°kË™WÅò�}Ž$ï³g‚q¯ÑÏšŽ¢×‡,=Õ½.)8øTн¿BÞŠå¯ø(ÿ©õ&Ù)vè»Â§Ü°�˜½ nl«/Á¡¨Ñ Tž ¯fr56+ƒó<^º„ª$ƒð€Æ°Eœ‘~6Ö…“|9έª‘UkÑ~¹ŽÂ+|»€-{¥ëê% ŸºÞ$ÅtAžÓáD¦V"¯ñ^� •°_€A•ì=�”‚jåš\dXÌÑ•Þáúv¿‰¢BüºfçvÂgU£U 1Hç$ ª¾ßɹq¬0ÁÛ‹›Ä�#Ágøä¡úÉKÉdƒÚ(p]Éè§|—|ûÃõ›ï’bº`<¬÷jm�ä¾ËwŠÍÄ÷,Q1P9¿ZÜ÷î2W g©E 22,H+´òpcacò •»…êDÇ}~‚'ŽJ®hÕÇõÒì"v33¾9µ¶Ãü®ê�cÉ홃 V ¹oFõ‰¶*à¼í´ªÐ]Å›+¦PMšs ¼àÇëë÷‡Hl.>Òc{±ÊœŠù 5ÖR�[,R Q�í!¾Ñгœ•I²Åìðh¢ �Ú.L"°ÆÀÚ÷�Óƒèõa}˜92õÀº è÷ùmpz7;ãÓV3Zp»î’‹µ“e©B{“AûyR|ˆ·ï~� ›ãMñ„~ܧè½(²½éÒ³ô2}šÞôªÚ`qƇ…GpQUeFV 6Óâ×—¯~^F‡-xÇe¹qÙó«/cðƒn¢75²ýnÃ_��b,Ú@›p‰�ÙÛÊÀ"ž`��94µ Öõ‹­6);?¾å[8s—”þ4G�$�2¬Àîù-Áäd~ÊÕŸ�×#ö˃äõøLüdË´¡1Qr½£‘LÑé8wåÀœj3 Ž dª¹úõ€*£ �sö³¬å�PlgŸŸ?ó}éléÑãóKvßé݈öÐ( �cÓ窫ÝÌTG¾×Фbùq /£,¢úZ¹™×ÙŽÏ|ê<œ.&^ÛYØQXÕ|üϹ*µ�PÏæ< "© ‘úº&žÎ24{S]ܵ˜ˆTš›5½èMMNï¸lk (ð�Fi;Ã舖ùÃÎG-ª´Õ¨ájïM÷- žÞF½ìý>Þ-xÎEebDkl‹3‘ÉÄËH�'™š�HÜ}‰c{Î}*9Š‚3.¡I,_ì ~PÖb¤Ò¨'?ÒéDSÑìFôGâÆÆqeâ�âÉ€Q'÷N‹ò|9jhÔša¥m.p¾3ûC°À)Ç¡Èhõ.[ô`2C!é vŽÿ,OϾ¹„g¼rÒ7©5 ,Î •£ÕÅcRlò¯httü½Èøÿá¡sàT—‘‡dr͇Ë�+¨Ãæ8:`"Ò=/)´]Ç3‡Õ˜‰ÖÈ™OŽ®ð§cú·‘�ÿÅþPKû±RD¿‡î/{j ch011.xhtmlµXM“Û¸½ûW ºd]%‰þ8$žÕ¨j<“ÄU±³¶Ç•lN)�l‰X�€Òh}^ (i4ö\r˜ýùúuC‹?Üýrûíߟÿ"šÐê勈‡V=iB變b·ÛÍwoçÖ­‹×ïÞ½+xÏ$mº¢®/Ovªº[Žo^½úSa;?a©$ëå !-)ªF:OázÒ‡ÕìÏ“b|cdKד5r2X7•5� ¶vÒÔ¶Ê{ƒ š–¿ÎÅm‹ÎÙZtÒ©°_é ïÑÊl„#}=ña¯É7Da"G«ã•yåýD„}µ�BÁß¡dQ$“¥­÷øðTe�Põõäa>«iËjgI-ÌÔÒ#`š¶¤ßL–‹æÍEë°|"iCÔ±,Ò¶káæÌ¹Vf=ƒ³3>Ùǽ3ég^µJKÇ��õ^•šNÕ¾eµo—‡Hq$r*²Ì©€P1 Ò‹,”¡0òírÑ ¢WÊùÀnJ1>Îä*�›5PùAyäIURëýT„†‰FnI”DFø¾„v”Ôb-;�Õ°ãGŠŸäð•œhå¶ ­ ‚j¼VH¡-4ˆ…Ìù+*[S)=M–5uÚ"´r)ìŠ ²ë^žû ®7†E§G›…¬*òžjQîá\ïÉù—sñ­!OÉîVµ"„28æIµ(ºå¢×K  ™ ΚõÇDPm<‰ yUÜœx¹;ë6¦±+�)ƒrC^Ôrï§QÚàÃ:�CF´(ƒ&Æbma>Gçæ‹‚µŸY5ÞC1ð+®“É/v%EýP'É'ÄorŒT¸,;X«ýÓrÙ»’F·düUdtCâPð0÷_>Bsä/÷âW¸Û(M1!GIËV ^Üt²jpäÓ‡ÓÉ�ÊôÙÀ‚sÐ�¹#½¥ÙJVh̳bǼZ¤z…µœŽØKn«yeÛBþg[�Á^¿.^½)˜„ Ìö~–lbÜÎ# .Çwb|á4q}sØ1„ë"üÏ�ê[”Ò|„ÍGkcE0>Ø«¾ˆIøR9UÂYÚ-�`ñ ”ög &¹WBž£ð€�hH,]²+ÝØ`ø[�hán@J´ Œ9¨‚]c¡ÖÔ‚1*m=iÎl-’Vs™%Øu•‚´“¡jÒw&˜ª`v^*…1VK6gù.ߣ۞® ŠYÈQ8Èl�È‘¥mÉ­#Ìã÷›'I|9rv àÞvÝ*0îdù>­ˆa…Ëýª¯”éù�L‰ˆ)Ø~*þÛSOñÈÞj#AV‰PÝÖ$^ĸÕ§í—w¨¶³Ž;Ò\|’f ›u/×@³å�¥J‡ÍÄ(U0~uZ­ö¹G0³Yå©áPn*Ý×¼´ v)kÙ…}|á3õ!þcÿ-iЉúa¸dYªðéËT¼'iкõ¦žŠ¯ÅüE§ž‘¬[®ÏÿO¦îûŽëùêê¹:>QkÕÆ��B°)¤>r°È¨,rÉEf˜GÁr_õƒÞ�Ô£9ƒ©�Òæ(nÀäüÿœ0r…+—Ûc’†!‰¡\€Ї îRΖ܀υí”ÖiàJ�󨊿rëNÜ2Í–%ˆ&Íè¹,xDðéùŸ™_“‰XŒ ØÆÆù‰£ûñã�æÓGý¹ûþœ6N'£š© ôh7Ì£ððˆKÏâpùvqÚÝsÕ4 4hèø™œXBT î.V ¹“¦ýA5ë‚_çúqá;Ú0óÈÊ…•~exæÁ¼ÙÉ J¥1)`Cål'únЧŒ�W¾4ðÀÇNÉxgÁ$üy È|ë㨭PSç¸Hw›C7"çx~¨Ê$V¸ÐÅæu¢ôa#Ī­ú�Í»4ñF‰xxÆ›zíA [ËYäÛ ¡ƒÃÀˆ¤xÃ[£~µ<6¨¢”,lö Ý.AK®Û5ÛŒÌE-h×±:Y2�ºÔHè1ú>f÷!7Ü}5ÜsBZ§/æ‹pg4\mÐ�é)q’; /‡8mŠ�b£2cC„•ªz8Y*’®NõÞǘM<Ú¤¡MJm"0?NLçšö¡Òóµ M_ÆKMâ*í ÜÛóc¼©°®“³‡Òݼ/{úxmo0G7]ø…âƒÝ;Y¢vfkŠWž¹¸Ñ($#™›ù÷€šÐ&\üÊèÛIÖ$TòTþ”Ý|Ã…”aŸT7´‚Í·ø¸l/ÎÔ¶òóý€‚FåÆsè“q!ÂB©øê·C@9Ï2@¾¡?£á'�ÛʵÃÙwYÅ?Ó÷d˜Æ¬v|×AÚ8‰�Y>Ï—ÃÅ(uöAµŒä'†ïÓ Ë0‰�&þd‘¯"(ê . ¶&² —Ë0»’¡•ŠBÎd–t¹º‡IÿÀ”ö{<ÌÀö�»{Õë)”2—Q*£–ïfÜ·3?Ú=–áHgÁ:e¸(çâ}8ÆÃÕèøGœŸÆÎqÚM?�q})<¥ˆôÄ·!fÄÐ ƒ5’# yPõˆócdŠü£ÞÑÓ‹E‘:,Ò/«ÿPKû±RDnÙï} ch012.xhtml}VÁŽÛ6½ç+¦º$ XV6[ Mê4  E tíiAK#‰XŠdHʲÿ¾o(y× H¢g†oÞ¼r÷Ó‡¯¿ßýû×4¤ÑÔ/vò ãhl¼-†”ü»ªšçy;ßl]è«ë·oßVG±)£wì§ý3KÝú.Û¾yýú—ÊùXHTVmý‚h7rRÔ *DN·Å”ºò×¢zúǪ‘o‹ž-•\(¨q6±…©W¶uÍj›t2\ÿóyK_\wÕò-ÿm(°¹-b:Žs*hÜ]®l› J'�ÍS%ß½« »½kOxDn’v–t{[õ¶4Ø ˜ŒŠ`Çð�Í›¢Þ o. àã™[ ¬Rv,U,ábSeqü.Ò�Dº©ïĞĞT¤lO«=‚ßÔ;öêtˆ©ô*(zz-U—8”ƒDã±^0á…|pÝ2tÔ{mt:‘¶ÉQ˜ö<¨ƒv�\GŠÂd­¶=)ï·ôÙRäp@ȽŠÜۃΎ€Å÷D*0ª4ŽÎšÍA'Ô‹XP&ÐÐêø@¯ÈJÖŠ«ßh?%¸ëHøeOeÉMÉc¹saTi»«<’Íä=èN­¥\õ¦Z5nîaÚCåULÐÝõuõsu] ‰÷p½_ù»·.Ý €Xõ²¶«T�³îûÀ½JÜn(é‘KZ’ï!gÚ8cPT,tÁ�ËŠv��ƒóHèn8FvÛÒ^5²*Tj¬/bA$’ÔœÓ^=yÝ 8!çJÍ: àŠWQxµ3½Jƒ›ú!o’‚Bø$ö¢ÃH£:QDÑ8™¤=Ê"žñjÅ�ê3Y‡‚‘áž{½$E°#R¬Î¸9w£¶nŠ.B¥"“¬QK®¥—Î…ó¹~;³ú=¥™Í�ËN5èìlo‘I�   Ô)²é–<è]!D˜«ž…aX<绬ñé3Ö@„i‘I"Ž>‰E“,/ˆ5*+¡V!FÑwLhù ±j†ï«·¸f`Ï:qC“ÝO]' ÙHä]ãZ†¤Z€ÛUùcK¦ ±ŒC1©•w^úf“ùZ�ÿ¬¡›ƒæyiˆe‹UR{îAD„üµ ÁGmTrÚçö<—àe|læs¤ƒ“êW2‘Y;-Ó©eoÜ)®©¯)¿<ïŸQíÑÚʧI:aÊ›ð‘›)û_Œ‚Mni`êva)£´„ËŸç>yì Ýäæ�RgÇ,n)r†m¦-BjQ1¸È<åáG‘_)d mšA”ÙÒÝÀ‘¿ŸûKs‰6ò4gI@~�î§ diMò›^äqrèœÄÐþ"£s²¥¯žmÝš¬¸%ÑéUœ@8úæÙ8‹˜g=8›öy”-SMf6=2å%,Aö#ßÎL°>Ú¢þ˜_Äõ*g¢J›œ¯PšUç§à]ä³hî~¦ølˆù!]Ûà a<•m™ô!sV©°zÐ8GX™¥”°›èY=*wKºˆØº·ºÃ°³Éœ–¶X·[÷ˆ‚ ï üiÛòñ\|TÀœ¢ôË %é9]¯$Ñ›É>djŠúïü!ddÄŠ–Û†)W ¨U¸ˆÌà Ó$æ©ýã 4Þ*�&â|ï)êOªuÎWŸð‡ìsVå'JS¸<ï©Ï‡½w3‡œT‡ ŸOgù'tpÑËu"§ý]‹““ù)o`Ú˜©…Ù»\ÂÉÔ¸ ÕÁYN1„éóy¶N9/QrŠñz.#Æ™òCž˜:§À…l›ÐW1A¨'tpõå=Àb !HXP7 SyC!'L«²e47D20&$ú³¹ˆ-9Š'Í/¿M�‡$‚ —ûæCŽ—Jx©œWÀ%Ï™öŒ©.ªõNvñ†ÛÞzÍ«–»ïPKû±RD7à  ch013.xhtmluVMoÜ6½çWLuix¥4>´1dE“R4pƒ¢=”4»bM‘*IíZýõ}CI^­a_öCÎ ß{ó¨ò»¿ÿòõï/©‹½©^•òE½±á6ëbnŠât:å§ëÜùCñÃû÷ï‹‰Éæ Æú"R·Ã>ž{ûöÇ !“¬¬ÚêQÙsTÔtÊŽ·Ù÷»Ÿ²â¼bUÏ·Ù�-{�Ϩq6²Eè lëš%6êh¸úëÓ§œ~n{mið®á8”ż&QFÛ{òln³'ácŽuž÷Û'yBFqP8òC,ä?Ê”ÅÜtY»vÂWà&jgI··ÙƒÖùNIåÝceôjTj†�lÞeUÙ½{¡E,\¤ó£�³õʪ÷8ð.ªpv*ìœå�Ûï_*t-…®«»ÑRJQœsPÊA*В㢇ëªÖL{íCÜ Ê+:ÿÜ©}d¿ëPákÇTªºœ4£÷l›)«–”´w¾Wr¢²Pé@{”÷j"·)ŒÇ*â9Ó¸¥è¨usè0|ÀÖa4ÊS=m%íë06�¡ÿ ô@'®öïÈ!†7²¢#À�Ó,mG6Óµ‚�Ø:icÐd„Ÿ¡[j®�$ÐtˆØ¨�LÎS¯´hNÙ†q¶µÇ+Zº)‹¡*GSAf‚¾•ÞZU­S¯>¡�p~È©l\ËÕÌM>L&Û´uY¤Çy|øGÙƒ»Z½ºgjë›9oâî”6áM^(»-­dT‚3L¯• Žî­;Y�G�™[¦”m~Ò÷zàV«4©ò¯¸ƒÚw|TJߌsCVÝ}üò91ŠY1æ�€çEj¾Ö€ÌO$� jÚ†’ÞpÙcÅ þx†yÁÄ+H9ýæðÜàÜ#P "’£F6ER•êIJ¥ÃÉ^!Åžñ cçFèÈNhå0ŠÚ/‘&DØ7ô7?fo–goæ¦)¸ž©Q"ÍN¥xXd„£õ ¬½È«ý#i¢Š»±žÎœ�™•…‹ ( F�ò¡ñzˆ!Ô1b.pØË±ÜåñºaÝUìõ÷Zµß<7η!ÇÚzÆ¥f!2ªß·’ߌd–¦¥šµXRbK€T7ÊÛ£öÎ&CQóX¯Sz¶„³9UÆÙÃn%nc8ÐŒ`9SN°”i–Ò¢��N‹zÔ¦ÝÁºÄH²¬ZþHž+w˜Upa\XSËY%Ÿ© °wá[{}�eùžBÒÐjbÛ~’Q-UWObïG¬†NI†r ’™§u0§ŽN·iÆ;@§ÿ›Wup­<Ç�<õI÷-l|£ÈÇv:s6×ÈMgµ8à†ºd§(¢`vëqäRƒ/þ òƒêÃW¤gD¸ÉJרq6ç³êg¡Õ#l—±�¬Ê¼Då㢯+Ù€’ÏøÞÚÒ>“éy{Ëé³¾gx4ÚTô%M°ô‡˜~¡üOí㨠4¹- m�•óüØ7nÂK�I\eY;'»¾:on Øa-rt‘ÄÃ^³<™�G2OlŽ¼Û«o-À¬ÌD{7ÐÙâN�ÆíñÄè’µ’øÙ2 µ{¸J�Ìá½ …[JœV^¯¯Årú$<' áwyj{tHâ^ph$j/>w³ª£ �ž­¨é¸¹—^çpç§¥6²µãüNóL ¤ªRA¥O+,¸†*¯“Ü"³A¿ñKí2›~rÉÿù0°Bî Ö\jÈí/üˆÑ¾“o]rßs’yú¤`…™R™äL›ƒGŽžÐ[cñÅL^’j}Êಃz }^×·H GMÚÙ;DÁž/óé÷Ú8z;œV¶±\¶IB}†Ü‘í‘ø­L&û¿íg>îçË÷A@/D; ]X86qa“‘°È…E#aS6 ›¹°ÙHØÜ…ÍGÂb�„-\ØbŒŒ#anБ@Ý  #+€º@ÇT€ÌÓ~Ëdn.�š´S¾*Ò[žI;ýƒÞ3ègá=#ü,crϘ¼Ë0Åi"ËZÉ�iç&âx1dãèÅ-‹Qfì™y¦œàöêwÌmø€ÝùÞÃ!q2$FCâtHœ ‰ó!1¢©ãqh‡èÐÑÉ%ã6Éö35¹Ë3ÈØAeÞ³&ýçŽ^rŒlªWøÕgÙ}WïøuIº—ðúá?PK ö±RDimages/PKë©RDæÛŽ 5a;cimages/img0.pngÝüw4œ_Ô Ãh£·Ñ‰ÞG ¢¢DïÑ#¢%j´h3Zt¢D¢‹Þ%„Ñg¢· ‰6:ÑF‰^>~Ïó|ëûç[ëýûµÖ,ç÷½¯}ö¾ö>gŸ=�'Ä„ô„€XCý±€u÷QÅÝýfóJóöî�‡º¹7@DyÿÁdfCV€Æc%#¬Ý\GÏTÔû:D«ðÞ1ކÇL‡Yˆ ÓV!"™ln^.½·'ÔZ'@'@´³|µ/3ë³%ãW3:Ä$½ÐQþ÷ð¢å"»Âå“HèÅV©ˆrÜ–‚ ƒGšõSºAÉÀ8@”"”hyÎøß�dà†ç¬`þGËÿÓÑö®ÿ£LÀWŸ§ôqI{½Ÿ&ŒíØÌ€C@.ì<8-r*,k©Û£RÈüRþó2oý€i‰àéi [š´Èùî(Â\:Noý¨�Wìü6X ýóP o÷H#ƒÕ„æ¯Á�Ϥ¸°½Ü}wÈôz‡2X¼å¢ã²:Ö¶£±µÌ‚ì°ýûy¯"Ú´¿ŽßÙo¿ZYˆO�$n›ÿ|îÒ¸ŸÏ—еaKæs½V›km^pÝÿ1ì4y®@/ �‘ø�TKÈêÅ'Eψ› ì9ODá�bÌHÞw÷ÆzGà7%è)ɿ᪨\Åî:á™ÀgúÞ¿6Röãªx‹éùA ]5Ò¾6Ý¡Äþ$ñ8Þ0m¡â'âìn[ó÷1ß/#“ÏîD£öÂVù‘öG¬�Éh¦ªyãŸÐü¹Œ°�‚b^ ß%a pR½‹EÇ%ûä½çW—p ¼ž0!\k¢P‘�íZ §…¶L†«®J?í\­TùFCý'éÇS†Ã€ÅBz›×:ìaçóyöþ[í¥²•¼.pÄÛ!ùº®}dƪûRøÊCåÜ/âyÁ:üí,˜PmkâW­)SUC¢²¤åÃL{)î²t._u4H¾jgC)>Ë*®6šc÷´¼¼\9e^Yg���üâKºr¦ù¤z`‘*_ =º¼™ªP…XŒV»°'ðãwf‚â aýÁß²Œz„ôEÃYdÕ犧úÖªm¯=I=¹¡ u·Â”!ô{ÆùÝÅì[CG2u?ÒJ¡�§ä~$ÿäã;ÙéÞ½Y÷¡k§C´»±^Q’ö.ªEgE*ζÑ$Óº»T–)`�’…Òí…ö+`7©âÏ$W‘¾ªo `«˜«Þ`^Öe×ÍÊZŠ˜­¥F !}uð†NEŸ6ûOÝ$ÛæË�²ˆùÈ·tP ñqž£¸Ö†”09‚ÖÙÄz¶¡/Rü o-Ñ8;†Ðè†×\†yqgø!¯s[G)RAì#þ ŠBž¬©Où“áû�í§S$AíÌ ~¶ê`3ð/Ý5ê‰;¾<î§Yÿ¡Q¹µÈ:<–gOÀè=D'Ýè®ó+MÍ>Ñn#Å·A™¨O0¦¦»š£ˆ{Âþ«¶þ­z=£ÇTöG©¼\û~z{P×q‘;,æ0à{j8‘RyPTžQoHq]D-–õ`Oé›þ)ô®YÚÜ=>®â/$x¾�FZý(åÝåC§÷Ì :›rdy;¯˜‰/НÎ$޾ÎH«ùƒè1Ì­’X‚÷Yóz_¬u`L×Up[ÓQò]ˆ÷2ý¥™hqQŸyGYU| eòŽ‘0ÇzöCõ%¶ÉP†n-‹gJÚÒÔ”¢}J—ਈµ¦î« ­ÓÇ1‡:%ÍXþÃ¥¢ÆÇ5þñ ’yIö¦g§°4ߤ  i·ôk‹fq†Rñó�D´5W}-(qÑË´R|¼æ!#ëÙ^‹! ðäëŽ 4_ I[zõà½ûÍ.²½¨—³¬ƒTPê�Oè™Í­Gq¡ýÐ"ɇ\M=P²&H¦–7íÍk¤ÚùÄmر٢øí-hŒsFŒ\bõ|1W˜ÿ‹ÕZõ£ç²fµé+X$Ûò# ¹Áºže51n�è�;tÏÐZ€’Õ´ÈÒÚXZ?êøÑ ºFÂ*@‡âÇèšPu>²ÛzŒ{;dÚÛ»È×*çÇ2Ÿ*\/y£I…ëìdð€BÔA—AÓZ÷G–¢�À‘ÿ˜²@ˆ`¡ù>«…ÄÔ;ÎO hMwhˆP(‘0A¯óDþ3Ïö±!,ù±ömïµRÅ¥çîZMQÓ+êÃçÍm#ÓXìJ­=uIÎ%<·@*ÒÆfüK²¢¶Î�ôêºKÂèQþÐÙK*)Š+Âøô) Ê› Øyö'çx‹—θ�áo¬­à Ÿþ‚›š€ö­Q¨©-9Ö„ÉNÇ� .·�H…ðÅY=8}Foþ¹£º=émkzéöê:O�}6áO,Þa;^w“SßfM·â/aX*2M—Ó­Y+¬UÀÚÉçù5Ó¥Ûã9¡Ž62ÚÿQ,o•¨`•Z¿Êd¶Š–Êw³Í fÛê×w:S¢ì–ªÆZKkÜ lA�Þî 1QÕã@¾Ó ø¨&¥Øû�éÐ#ˆAÒi*j®‘}°™Î¢¥×Zv[Ò ¥®Zu± M…µ†˜¸±“âÈãÖZQMf¢ÍPŸT;Oq¤@Wñ?œmòˆ[¼�pY¦ïà¿Ä —(Öò¤«…0#QŸ–}ޛÂ�ÙE å密]!Dó¢àßþ-œ Z‰Üû“KT&›•˜õ¡$þÄ>à-MÍÑ ¾ÛͳÃLá…¦¸:~%¾[�+AJ¡«Y¸‘Û´ìꉃ'»§…6ú«¯ûcÿ–�l³ë¯eó|WF'/y¡>3óæÙç~ý=Îþ¹Âºq†’V„'ØDð°­ƒvÏ×zÅ«OUF©Ò‹¦[¹¿2~ºp 3V �#‚Gì7K¯°Î ʼn% Bñ�Œ¶ŒùmZØ Û«C¬ß.÷½¦~Ô ™ô�µ¢YÏ–þöƒ�¦½÷@WÏ?Žù�L9Oñ.œy±÷O̳:Ò“×¹'†žÚ†B�u D0j%†…¥éÇ�ØÙ¨§XÙÕŸõ¡mù�·„§Æ±ÿ>ÿˆsÐIÆ}ÝJí¤Ðù‰ýbòÑ’‘ïý–Ôˆr½�=hðÁq&aÏWÐ#õ¿vyJÛŸ?Ð_ôö¸Uzûϰ¶˜?⸌‚þL$¡=uˆÇ�(Q˜ýê÷ø»×!¦l/ ÞhÎ=ª.>é‘c_óWiP…S|x±´ŠÒ_Š® RCu&V©ΩbL”\)>,ðNöó/9?ÎñC�窚ëPÒ·,2*ÇÓP¬SÞ¿$4�¡õ'JÙgø•å°ú: ²ùÕÄã„<×Í·ûqôF¸o6²Ú:Bñ8:F´övÞ©·š�ÎÒ=$É�P’q[zËC>3º�Üæ`y’<ãõGZÁo/:Üjà¦{Z z�y@ìs›TgÿWK²èĉ�ÒÏù­ùã”ëüiaȶN n*–ÏôS´ôáV"GðÂ&ù\pêäõ\ÎF2ŽàgQ1©¤¨ZBËjœÛ¶V$7Ä ±À¥�{�’“ªP ®àÚì½-Yõض³:ëMÌëÒævv»"z¹àhHÂíùüyúIô7YTºUùo£‚PœÅꀊcò/w€@€Gª>tSù¯@`5�>?oìGYÍ×["£,~PѨd7 Γðo24s<5Bª<ºò¢3æ6³bah)Ài/`"Á6œÆ¤²F˜‘^äДg›Ð8AÐ-[-ÂÐ7½ôë „Ý;ˆ�#•>`‘½ñÏù¼¡s˜Ct{r¹ù͹,ïµìþK¼Î®j�OL‹š ‡jãÕ«6°ßÑ6À9�¶·1ó:h X/ß ïÙ-û[#£/Ü© ¿â±™£…aõëÛ¨oŠ«U’=Û{Ïr£Q‹¤sØôýóŒTÌÅß­HVWŒWuI—L ,nño¦êO4V•�¨÷Ë>DºœΉ+f¸Ngx¶,zþ–4¦+-Rä¿ÜðÔ\f¾ŸYý^lO[銓Fx’ ¯J£Š½Ãn+,ç(ÏLûÿ¬ä5+´ Ø „¨]•è®ÉGv&KÆÙD¯¸zDrH1ÓÎ}$ ܶäc8(k@V ºØ³aJƒš»$M_gŒªͤh‹Dü´Ê})öqöšÐ.É5ÄÜ�¥ÇgM8åÙ¥´¹[ºLÍErÂ3ý«#=[—´u:ÛúL¾bT§�›åMyÑ7)�™ÌÔR ÃÜUŠFÑ3œ�¦ mE´Žˆºj,Ï»uòeuœñrù¤^,ÛÎ×€žm¹v‰S”ËnLæ�µ0NIâÉÈ‹JÄ#:“é¤yí¶i–®1…ÿ$é¢Á©…§éRˆ“ Ò}ýò½~O($Z56[joµ-¹ZkÜb9AÞ-ܱ·³œf)âO¯HÚp ®k¨^&U>ÊXü=~„ÎÙùÝ^h*f X?ø¶¥rµHçôØ ƒÊ��ïwRGR§Ë;ÒvbjJȵHgç¿" ‡³öX$ýûmz)°ßû[ˆøI†ð£'…¤Aµå°/É’àD¹¾§Ì‰rŽãk[f- O?"� ¼þ„E"›~rPN¨›¾ÇÍöúèš\ÒJšî©}�ÂGæ§Àì¿Ñië}ã_͉T§nPëM-/@Ä- =õœcÒ» ê­ª#Ä)mç½Ã `À‘ÔÏ)>I±¹°dß ÙÎ éíðútA¤(ò*¥½ÚJÚT¤7bðøöK�}˜ZèpNinçL‚$¶¾0<î”Én;,)Ž„ÿ#ð§±Tù3ê9‹¿öÈœå׬�~ñFûî_à—( ."¦ó‡q6'feóu¾þÿÊ�í¦½…¯8Ì4 Ä•6)òzpS‘N ¸–ÿtµ}¡q&i[Ø×9“x(ÝÓ; ØmÄ?÷[FW ý‚×]c¾«´ÍäkZÊ¡¿eÔ¼n‹dÔ×¢à î4o:O/‡¬¶Ä6¿I7¶ÝW8Ìxm4ŽXå,þD2xµhf�›V0Ï;£)hZ!J_ JþÉä�RÏ025ì=YVÃâærÿü#Ê7¹‘Lõ“Ž: @ C/ôPv¦«Ž'Ü:ŠBÅüùálDƒ› 4ei>Æ�{¨ü,ýú«yÄþÓù?\äXE†æ£Þhœí×�Q³åÉ6öÅp:Y\ž˜ºGqLâ®ù&¡T�ú¿‰&¡dQÎ:>oÄÿƒ±Fä®é*«ZñßD™Qwº¥í]QXøüoàÖ¡á¦U×ëÃjȤÏßN+¾±,<£â8—È%蟵¾Hš»°GzïâQ£)  ¾_È„Ž/ÛæcðåJ°zä…>Ýâšì½dëähÇw¶•º^>t;ýìˆR\›­.*ÏW‹Àö€‡¬ÉþKß²€�}ùû«ó˜Ž™nú�ZùMk�Õ™D’{a³±Z»‰µ¥Óãñ% `h ÙYŒÖBž#ƒ×“×íX颮·¼DÁÓ—›ÎÐ1[pÚ$T=áöK>ßY„Ø ªŒà’Ý_ëµÏo:…Ð'½ßÔÿYŽÜ �‹0~ýŸbéð»õ†Ôñþ“Ý*8ÂÎé‹lþ@ù÷Z RH ¿ô¦7Èú\™þ‹Ït²…¿úK�fzÕßDzÓdWC¢ÒÖ¸Žn\»Œ•éœï±{:æâRwÓ¿E"WW¥Åº•å~,r�l_AaÑ(ÆfœÖ•¦C/;Ÿµj«œ§WP½[pþÓëga©ï‘´öÜXDGÒb¯’r|*³JÆ’Àx”À#°¤6�»üäyt[Àä¥8#Í4DC|FÎqž{Õá*áCck=iV»e(ß8$Pm‚ýãÉWí[¹½ ´8Úo¹„c>-"4ìv}«Xùä4†% :H‡÷Kw�·!Ñ/µ‡×ÁùJª�^tÒ¼7:�$Ô˜Ãl\ ÍwŸ!gê.ß’Y�à²À%‘"<�›‚¨?K&Ha�qX`Åbœ{‹ÈAäY)r!¢ò QX(±lÖJ®E8Ÿ=±6_è7*xk�[`ïgFâ74\àJnΞ �îT *¯g)!ksOï IaÛ_í‰_?¼ÂMþó°D�Ó#ÈݽÏõÊqn¦~則ëSv} ‚n=‰ŠÂÏ÷ü¹­O¢#ŸõNˆ-CZ~ýùÕNh`¢;^¼%‚VD Üä§(�Ÿ­·kúëd!¿¢¿€ñ–|ŸTÙ\#x¥èÌÖ§Ð!¶2¤x30É¥f¨ tñW~¾�sRïš;R6ê÷Kêök©¢²Î8Š—çô™3È6´T²,“Š~!îO«û ÍÕvá¯÷+ïŠa´šÿø:%Ás>E?;§5!e†óö!ñÓ ËVêWBÝk ü¿Ÿçõ¾¡]Ô_⸇ ª×ãî�çË< †½=4ø ö³ÊgóöÍ“|ˆG µ+~Á„ýúRÓW5Ú¥@¸ƒ‚Û¸´Å›x×*–Œ×´ðÏ8Õ&­‚ÀË*Åy˜; 'O×-ÜŠ9€‚zð‚3`×¶ßK›Ê  ,|K+;�ï{÷“hYH9ö&}Øm2²�ü3=£<Ð̤Ilµu…¤V´ÞŸöLY;8&öÈ|Efy2¥¤3­:UÎ�Ò&nX¡Âg-'©Ç³Êæ^³’ µ€Ð•Sÿ)ïéôÇV¿s­Àeo…µŠd°Ÿ…t. �ܗ‹íôŒsþX;8Ž% ~íõYGìöâR4†ã±÷Ãh·™-!ŽPÿ#Z7߯÷�z¤³¢n†� FlMA¥p~E ƒ¨é[‡i|Ÿ‰_Ÿ¤kHR8p¯˜T0³"KdzØÙ‡Ê ϔڔRJSÎlŽEb%¥²¦1f)m¥œæòá­š1’9áþ¼?ŽA-¹\¨.ÿ“d �¶”­É ›=eœfæÎ#Ïó×”ËQ¾j©¶€žIGæ:)3ò+ú"×hH“ÓÜÈ&ÿ'qÓ/­¤±šòîPð K)u¯ÿ±;ÅŸýªÀGèÜöX# ¡À{"^•¾["~7& ñLcYÜ×U©àð–ÍžœQôëÈ®ÿÖs}ëÉB¹ÓhâÃÆ@_ÐI¹B�FxB©ÿ‚~�8¹€Õ]ƒ˜Ô™t19õ©~/j©vé(±Ëüãz5AöÜ0ÁÜOLjqÇ“‚ü…®]-ó÷'.u¹x­/‰›LUÿš˜¦´MøÌ:É@Ùå\ݾk¥õÜÑÆxT¹á}Ýš)j¦�y]Á‘hç¸Î·ZŽúSÔÌdÊÞ"¨÷ÓOi…n²Õ��M”"(ÚpI@\l!ŒRà _¨6Çù"g”[$}×ì±�òݱùa™ï—± +ìn¹ô(³¥=/•îj´�)»DcQÅ[�¼œ7\ÄG<øˆ[ftToKb3ð/Ì„-ØÛvvo$Ûx�éÌ3£o¾(% n}:÷äÇ–­�ä�GT8eÿ%y@moí�yY«¸8}"_°©¦)Ü ¥£h_ñå#˜g%< Ù‰üj+‡¡HžáEýFb@‰,±„¡ �ÚL“H6a[â Þ,l þºn¸v|ýgGZFYXÑJ…Î�aq9y±¥M—ºV�Áù4 uêtÁMkŸJÑ®L˜5é¬;±]�Ž-K»z ò@èLÃ,G° ä y‚Võ Ùma2õ’3Æ$t|±ÄPì:¿{é9»ì¢Ç t„Â$£Ÿ$¿Ôjã\ÑØ˜PEýÒóåÌ(Õµ[ÛàŒð÷¶,N†¿$ÎoüpŽÂu‘Íè·Ëmä»C6öP6½q~wìYùïÀ‰kÅ{Œ<ÑŽk(†CŠtŽ0ÍNzضªÄ¥€–'É8ETpY‰€�¿oýdõîè,«[Ð�ô„Üœ«°L€DÇùò~xƒc]lIMÄI&o~N'»!ÄÒj$"‰¾$ß÷¡ÓäÔ§ëÔýάú¾z€=aखîPCx�%y/$Q•�M§'7-�-·ŽMÃötï6«€S6 zA쎾ãŠrŸEq�év\jÎ}\Kê"ã°t+›°.¿Ù²²¾RöÏ 7ïf9¢a¶ù wljdþ^RÆäñUH>•L­šöKüVè¹ÀÃèÿ$iJô èb§¥Ã5! S‚òù۞ņÓpòHãÄ;üø�îB—†.-”�ºTçI/ØPŠy"zÝP®öòÓSöu¨ž/J8i°ù}Êz}nCÔgGµÐGLºHƒ_!LUjŠó¹Ûéñºf×°€(€�HÌeï×Ó¥„ϱŸ…›¼JŽA“.O«�­iá“wÛÂÑ>�rR ³\åîƒ�> oB|IH.hÀ òè/í�ˆï£Š��ƒƒL™»›7ñü¾k|—xü==îv|ÈšœûèëdpŸûçà߆ñZÓQ ±h÷!¿·B•.§äÅ�æ*º_£þì±KI–W¹ñÉ\ö0ïNz+yf©½TD¦<öY×?Þº^«¦Èk–è~ÏmŸ8D/o�æ‘8>%ìàQeõŸ(» zqCÇ—|ÿ<)Ï5²‰Çà|E+º³ïïu™×ò’;u³ôð¼yäÊnU-J-¹sq ÄŒÝRdMB‘��ݪê©"É /ã–aUqj&’u¬o-UÌ�9ø{€;µj½kÊ5ñåëc¡ñd��<‘æ_(ZžçWDa½¼ª[¨°ýBï¸õ‡ÞÝF¼–”Ézöcñ!úÄGo#ìÝ¡‹ àŸ‚À©‡` ãJþÈ+�ø×E² Kîv€B¨ wøb#N¢HïÌ™.ö-’ç,&îΘÔЕ5Úa:ºÔ1 õ&ÂÂÌSR “²à°ÓÜÜš¡¯xnäP �Hˆ¤ôó.‹N°Ñ,4ˆÐX~`cxãÙÒõ|Ǩùõ¯�r/nôõ—¯)…èPp×Js]ÔÁ„{S›ðf„PÑ&›Äa§åÏkvc °xWïwZŽÙì(ü2c�^¢ØD#%òCóÃ�È[ mÔ1w3ænì~óV¼ÅKy ‹Jbï—�–WO¹FŽ–â—ô >•VD ¯Dˆ³V$Á]²"¯¯kçb[3(/Bf7ñyi�ñýÚ<ƒÆÊ!ÛN¬}�]×Èë8ׇ^x…îö;¤xX·mé?ãíò�;춈ÛÌ©¾&™ÛfÆöŲƒü›¼€Ã„«ÎsØm̲L—ƒÏN»xš“½œé{¶¡)þÚnjêöP¨N §B™©VªÑ_)êÍ2‚£¼Ø{& n›W­@AÛ‡È�)ŸÜD v„$‡DŽ;a÷ëŽåu†bDNàP‰[ÒÎ'&n÷³xÏ�dE,>3úöóM˜ËÏⱫøµ,s›á.ž*�¸$�ÖÆ3yÈí $‚ßËnxý:þæ2QM=G ÉKzÓrQÉép%>).H¡Ã¼ËᎣ²²ƒÅõì>hJôRnZ¾»õH[Žk®{y\’n(vÒ>~1WÌ­ìÚ õ8h¤C4Œ�(—6Þ™å!%¢ëéñg¬¼Hw éUUd’Ù»»xºGqÒ;žì0mÏÆ9Ý�W (SWþ�Õ›%Vú žôy$Ãõ"ðl^÷4ò›¿²Ð“§þYïà™"`½,)ÆŸƒ=›;Mã§áÉ�ìXgý‰YgƺÚÓO‘9`ŒUòÇ�`‹³¿½€”¬â ;r£2þNøL_­» ©¡ü(nLÿ…HÝØ£¶ ‘Â^KKÄ Ìø3Q0'KVÅA½�pe}é—GÃÝ<¯ÔµûàÍÞ$ß;ñ¸…zIöЙt ¸f—ÿ.üº9¢–ÛaÛO�þ0�Îú›>!hÚ±ÖLª¾?à„ã&ɈÁvS‡’�_€ïT½ÜöáaÌݲy¶¥º0üÅ‹nbíwôÁ}"º×ñ¾t"�@.½Ðï �a€šÞÀ•ØGnÓÆÊp;²½þÈHÉ;“î6š‚z\,‘mù•6æLI 7X@Ä� (¿XÙñ ØÃgôÖpëòfµßJ§"»?û×àpgà/±ò˜ö÷l­us¡àd²  ×] �Äw+R¢)îFJ"*sï8ÙæßÖð’7jݸ7êº�Ÿ“‰co‡"±¥Õ@Ë~Û?¦”ï_ì î¢n�¿¬ò7½½üý°7«'™Ì þj{“ô;3öá~ú\ï�>$Ok#~ì>ïQüFž'p‚}²�o,àój¢ƒøÎ©?¼Š F=­OÑ”˜p´£ZŽüö]�R¤¥+«°C?øç][ë÷åõ×qʸs­ö~ìatiDªT †¿¼Ilá9‘è 7èñ½kCØ^³G›ÃXx·Odã]Ïsö^Ä6 ÷)>ì=)Ù��ýk0ŽEË8‰¥�~q¿÷Ît�7ØË¡iù¯¥ÌM›âÔŸ!�Âßç‡ßAFuçpU _%ÇùÅ‚=Àjv�…dÛî“@@Ÿ¤·€‰>Ò3pŒ™ÅñÎokŠÂô}ˆ^Q ÙþÑ÷‘´›u.nvLù¶4?|er攡¥p¼YÞ1¿uVÎʹNëb¯ŠêÐ!S’âÔ ôľó"A lîT{뿨×Ù¿'á]ÀmMœ ú륆~“í¡ðß°Ôº»GÚ=ïÁPTËR"žo&~žQ—߉ñ9¨-©Žê#”vi՞܃3ûÄ�;8­™å³x°ÀE÷ίҴ É›íìmö±¨ànðÜ»•J Þ×êQkÇGs´[ݦ÷ªd¹'0yõÁÇw Eôòsþò.%7…áËÍ*fnúÄŠQK3�Þ�oè嘒2pÙ¾¦%*a ñ‰hGg÷¢éóÐÔÍSï¥ÙðÁÍnjDÒ˜üìŸ4l<·o xx*ª‡s~7©©�¯éb'Ÿ)åEQöW†(ù-U£?›`]<É!Ÿ‰O³­©ŒÝ×7¡§Iˆ¶°ìFr+ÚT’ë�[N6˽ Ø’ÏéSø¼êC}™Â<*ˆ³Â…Üòå­ã÷ɃJŸIeäu_P]¬43°ü =?O q®ëcu3ÈöF½²]Þ1ë¾¢ á&[Á­?ïàüu4ñ è ÒbÐtkð[ßKx ÐËß:b–kI»,Ýøª/ö\�Ü©%ŒÌq @vCÝ—8¬,Ç(câbÒý¹SÅ BDËo|~¶² £}ið§~Ù†eG+“Vc¥ÇFHèãe™ÐgDwì*[2lyºÏ�³ÀP4o”¢ÿ÷­¾~y] ·ª$©)ßgRQÓîr:µ&qÖpT[¾Ø—œ‚¼ÎΨÿž™ª5|) ¡¾•G�3*†{°,…Pè\ù¼4£Ê£MyoYÌHËÒrçt¡#Ç\5 R¢ž"ì\"nšN}Ní1âF÷ ì„ïBˆ@8'lC»F—c>qäDe†4tÀ†xœf»˜hg¾~%^UN‡Yî¤yõÞ^‰½„H&r7úÑwÀÝ“¥eò1§ÒI†z`Üì)¶8kKþÓ÷çÆQÒ®?“�¨Œñ­®rUô¾ kz=a¹n›’Ð"Ü,v=ÃJ_pC?¿ð•Ø[Á¬î4æ¾°¡ä9÷]„K ¾;‹Ìe!ÃUoyüù�ò"[)Æü�,%>2Lé,–®@Ù$â{~ð[iBªÙ™1Ç«^¢„}Jt€­ŒÑ� Ï%Ÿ¥é«JØ)r‰ ƒmôˆº<»Cìx+¦—¤÷’½�}]�]¢µô©UjïÛ÷}íGŽ}r4‡•Šß[s¨•ƒùð‹)±ˆU¼RQcÚQ�U ÓcA}òNê–å›&ÙÅ{@_€üŸ@º½oÇ߬OgŠÛ.mu1œfD?Ú-4ŸL”*,ça_¥®ðK?ùtƒB¿FW-ˆÇ‚ êF ¶|A¹yDJ¤î­‡@‘ï‡>Ãñ·ÌP<3fÄ…V–/ûðpÑošÛOȘÇÃZ�¨LÕq$#pdÈ $óÒnd9bÅŸËD‹6²Œ™æúy$˜Mžc¬Öúª°~ ‡8Æ®%ª<� èìªeªÊ-ÎEŸÜ wäûÐùÐŒnG)ë&1x}ÆÜôaÍœ¾‰Ç G–˜Ø�¸NöÜ~jéé»O hz{ónæu�6¼W¿»Ú üÔ1 vqÊ‹1X-WÆ£õ9du‡ËÖjÿý¾Øuô†cºYbÇ7ÿãÉc²(¥‡wvÒKÝ3ˆ{æ>`APÆa•x -óÆ·[.F|q)7ÏjÇÿÒÚ).öñç:,;YB¨]~Çb¾œÜQ`-,EiÞŠ™n@0½¼ÍÕ¿ü9õôÿ“&ß–4¸4ÚõE Iwa‚œZ$@Þ”j„Ó¥xDå­Æ­n}¿Ž9 ’O¢&Ž·×?(©§ÄsÀ�Ö=®41YŠ@dOP´JšRqïî>s³m¨f×oÐÙ ]'­ç¬“OáðzׄˆÞîRC¶àêÑ(g‹‚ùê4üàOiF5B-ü{ž�¸Ö ¿ðK^‹=Iå@ã$*1r“�嶆(üŠéÓ6‘Õâ²ûãæ�`ü h¤W—ú8¿æ«‚ö1ß‹I—�VØ) nûÒVºòý©modï²»-½Ç#½€<â69F§7?�6�ö ¯­Ç;ûÎÐV£@ó¦÷–¨Y4Ý<Áê<äú,D>ÝÿÇèóŽ—„ß+· –‘ªÒSް¸ÑR�‚—Ž}|Ct¨÷èSdÜD\�y¾¿,ÁÖ)ká7æžO{Äèáë1ñÈ1SîO§/x~;¦È*EhÊ Ó›¾ïñµ·{UG@N?¹Ûo…F0erúfÇkŸ #>³2¶R�UG`† ‘¡\Ö¥'�_CRô$ 1§]ž Ô´±-s¾¸[´šbhŠë LiÕgmÏý`ë�H„ÈM*,JÅs}ݺ~ÿÑœ ~ymž…ó©ö¿©ÕL·êT‚¾w„WĽ‘Q=u6Øk`Œ jæ:ÏçÇ2¡R¸‡Ì´Žì#¸ <çRáÌÛj·YÕD¶öjžó>0)nþ·ž:)öˆÅF.²J¾@Tø#ÙUn]VÌñÏyiß­NJ=¼�F[þecö†&ý¦˜‹¿ŒRB±ÿ!M€e?…áG¹ÖYôÙ¨¶ù#—Øþ,?Fýƒ",& Œ»‘¸Òœ¯,qi*�M*&¥NLñjMJ[z«"ã†Ü²5÷o°‚š�ò ±R�úG¥W~ˆï�”g  V²PÚ›d®0ïý#”ñỞ}ÀDâµÀe£å;Ç@Zj™ë-cÈ´ýø×E×H ¥„ð]È\Ǧ”Öïšûi@r¬”/[#â8îÍÓ%XH §=òü¸×Š£¶ä׃�—¦‰3{Ãâðg¤vX(i&^€_Ķì dzIàÔÐÿ5HI¯z¹¢B—øÒ‚ù¹V5˜=)ã+M† 4œõŠËgýšähSG‹á¥t¡Yævl¤bóîw�íòÿðGí—�‡ ™³h]ëcAvT›S)ßÌû]K“È÷œöùy\T…˜ÏxˆÃ>†X¯½éÔý‡Ñ�{ÍRìb¬þ*aðõ—wA‰Î€eùñq¯Ž\î—QõšàºÛ‘7*HÅ’3ÝÂ2›ðfÔO4YÚÍC�¥•–¶Î�ÐÑîÛg蛯—(C² YçålE5uo1½;Tiêšû,TG1oéÖBÓ¯(¥ÎÍ€¯°k‚Ê�ö…ƒ4aüïÌ<80Vï cnÁ¡êб†ÿ°ñæ7 øþGµæ&àcñ¾Ï ¥(£p-žF>œTzgÑJ´÷nÉ�<ñZíÆ[´Ð`ÒF*¢°$Caã¿TNF¯€RL¹{ @“Ðì Þ‘$ݨ|Ž~·Þe’òiÖE Ž¥ôYÉÖsdŸ©¤:¢a4åäÇšäÃ�3½réŠ[kè˜Øè²œÃ”À!T¼ŠdäãåôðWåŠÈIOò׿x›ŽSдNañó²íöæ3bŒ�rn³—Ý}èw©…´�Ÿ²A35ô/¨LÚš ¦ÈÒ®OyþuÌÃ+A¦e¡€wa•/š4ö³jå¿5X°åœ«ÄgQ¼ò67“B)Bõ^w£?ÄJžÏ]^ðB˜¯kÂø£~}(Û#Mû+’qœÚ‹H9ëMw-±�¹?[Œüõ@«ž§Æ]Ã]í*î¿IºÿC¤g­ê7ÑCH0þÛ¾Þ&·^¿—-º°¼�²QÄ“s±€íJe9T÷QžÙ\± "ӕײBJ¢Ï…ßçåjB -Áˆj*ƒ`P�¦ DÓÿ×Ôêýâg5÷Çy$;§.HAö}¥4*º~©[M·$Ø!-/^¢ÙkZ—.ˆK ­däˆ{ŒW8Ð6Š+d~à9Í)ùàÉ ƒƒ@!�Ûü�G�¶hÞ'Õêàû²ï¼ýl)"Û˜^|_ÄPC4qÚ>Ò« ±t£ô‚÷ßù)¨âÚÈÀþ+¤�¯GqЗ8ö§‚êéÚgäS$wĺPzùœ�Ç¢�^PFúnÑ «?hÂÏbLﮑÑK�·x¾\�߸�Í)»@|£Š6ཎ²úçӦÄ{9¦Ï>< °ÖâiœO¤#E¤oÎh?ÞýîeG\‡U·ÿþ¥8VckôjCú¸ûu±!ÌBS~íX*¼„—ÊŒHÊ¿‹$E e�)7„ñ&Ã_ð•O«ÅŠ­Á��Ò4�Ž›óÛÚÉ«E02šnÜà _Ü�¦JC¶[íÕÓÝGÈlE•&<Ì¥æBÚ ÅýÊ€þ·2°š¢Ú7Õý ®¼¨ E€ãªÙ Ñ„ éBlôþÊ?Õlk¤<ÿ*éR­Zt[ðÔ÷í«jäipkdqéñ~J2ÞOGN›‡z¼7+ãÛ·y³ÁùÐñëM`J/{Ñ D™vk¤¡}üRÚãån…¾þ{ž¶ñKèFûgÉBÞÅŒ…‘Ï5Ä(F$ Ç+×eqƒÂ­Ü üd a�퇥&D)yËÁ‰ô�žÞg lW3ÐÂHÒuSf¶nùùaª-×ø;½4¾ñg)’ÎCäÈ>ãœè*¢F }¼Að[ö:’˜à·k�Éwv#¸µQ_§æÕ"†r- ‘|n“ï×nÇ"³æÓïg¬z]$ƒ‡å¢&N¦²ò‡v ‹Ð ã’dkÄëBÎxïñ(òÀ�ØôŸz�Ô—&î¯$S†4;oÔßUŒ)³˜¸�#/¡ê¥-ÍQÓ?¢Op€‚àü†'ù«F›5A]NuXvŽ”3kŸD48“$ëæ)&§ÈFð„8ç^sæý¨pìg8 Øü¡¡„Ü‚WGíod›Ž«(¢– 5CÁˆw³kD 1d`£Lø`™­7úCòò«3L"žuÚ--=ÖD`Á.¸-÷¨0{M| ¹RkÊÛ1cjÿéºñy^œ4^O…er'dTŸ—/DƒïTv@xù„ên´|]×�ÂFº‚Ž,ÜÅSo\wUo2`IÏ/¥v��d×ü# Ûúâ.¥ðOŠMRå}#�³ÜKkÓÿþ&Ò†éúƒù�Í#p�ߺ+?³~”Næ†×? (¼z0¶{ L[ ¤pLž1oŒBÏõ#Ç#t#ÁÎAMn'º³×/âäËP¶µlÙ×K¦y_™2Þ©Wƒ©~PâòSCÿnQ$\ìº[/jÛ%Õ¼õ!¹Ïüßùêésê!@/Þ»pg‚Ó«êèú“i㬥GE`ð÷;:õøS±¨[æèBÞF¸ã^u4LÛ 1ühㄤP/§Ê¶†BIF:îX¦#+Xe8ﳓm$f‹m?Ž·†þD >j&õw‰´w)äëEâw±æsbŠ·þ³Ï.)p(X"àÙgý©çÎ=Cº…ײ•ÞÖsÄb¡ILÁ™C M˜âa´4é Ô�UÐ]¹l^¾øpj[{À5Ž[œª6&Xo�>Úš ÕW;oÒ"o:öç,ø¹s�¥™8<óþ$ŸvNb‹Süb½‹� §dMþ¿•Ÿª¤±ô¡mžATgâq™Ä~IC‹üï¾âé#…�’5© }éáîZïp€}Š¿ó4Ÿ×]Zú‡Úþþ'Þ0ïî¥Ï0ñ«“à +J¾r¿9ò[v¦>¼…jäôèx[Š~¿`_º#Ó�aún3Q3Ÿ}ÿZçg!ÙRËä¾|Ä+вÏôçïÙ�+ôåb×3½— ÙRv¤g|§iì P«]~˜Œv¦(Ÿ™8¼²ì•ÎZ$Ì]tPr´/eNïw8vC;Šöñ ÷Wº¶NV*W_s¦‰d%aÃðçW^‰nÿnc„_þžåOÑ{Àqí{.U1¾nØé¯?U‰2­ˆÀ *–þ,â§?S‡$Rúè<Ô�Af…¼(ÐZ–nƒˆ©UGý¿šz#?}°¦Ï>–ƒ<1îc®WïÓBqp‰q¹±›K€Ü”7ìèZêÜvÿ¶F“µµ?"¯Ë?óÛAÚò1ÿjè•5Å0Ò( ÊJ�X;a;#‘b¸¡(; 70÷T¾Cj"=Ûˆ4/½Ò|ÍixŸ¬l5¥õöÉ1JÁ½|‚¹ì.F9´«^«¸ôñ\ùG½åjpœ}Õ{a-ÃÔØ¿¿P6?4 èÆð}C¤¯¾b'®zH=ã‹ÚýMïfc#©ÝÓLÛâªn#YDñoR¸)(±p'vª×ó}°³ÿÝùjàAÚ?¿� œ®À$°6ciÁ¢Ój4ùÞ�dkà­‰{&ÍÞî„·²mö•»[ïk‘&$ж|‹zlaèótBäîM‡9pO#ä'ÚÈéê’ñÏ›Ô2�ï-¯ŒP\øçö˜¸Ÿ—´¥aÒ0{wa(ùÒ%Ù>aÍw_g„òßl¬Þt Ôõ£mµ;nÞ³x›N }٫긑¿°lûÈ�þ„Ñ{!}̤Í2ƒ= £ƒ¹?Þ×´ümBœ& Z›WkžE·“ ¯úqc—Þ‘ßÒÝ— WÜû–7?ß‚Zh•(Æoó¿Kl™H—j‘Yoå8&ÝÐÚ[ñ)NVŸ”{ŒXo\]§þIê†þ»äåaêkùð] sq Õæ€�wP@„Î[ʇ`•àÜÝz§z[j4ŕտLž¿_G—y�È’µÉ?Å&�œp_éÒ¿^çþ¿³IÊêW8@c[¤ƒ«„*î¹�ÿÎJKÇîÊEá…5&z±SC?Ñø›â,t1î�Ì�fp¸:ZsiÙ²«øàòûDWs¤v¸ãÝ –©£u‡BwöâÔ‡¢]Õ ·ÒµSøŒ’w1ºƒ‚ó†ùæ+ÑIñ•ï/ê�uäk΄®µˆ}õ¶Ê±;I}¾ß´kÓqo_Ïw³‚ÆÝ�7´‡”‚ó£Ÿ$ë–œË_î^‚ŽÂ† db±Ù×Ù‡~%Ì}£nÈ/â ˆ¬ï®UwÁ[ì=ÕE˜utBŽjžïÑÙ¿E�V1ÌY�Ý=ô‰ÿj.«OŠƒÕuMAbaÍHÈèÈBà5çoÚ.{%ý;SÔ"ê±âŠù’›¤•z¦ ¿{W0ïþ IÈ­NƒÉBd¾Û¿.Ecb`Ñ1ðIXºb%Ö°guô ïì¦v_ò8øçßæŠ?çJ¨ŽwŸåÞÞ¾7þk?³ÀÑÁ)S]¸\ºPÏ3G0hƒJSzƆ,ßh§¸$ÁCe³Cáð¼/Š9¢;q¸‰Üqæü‰œ§ÓÕ&& _¿8›õSýˆx3Öd.1MÀGSpx`Éi.�9çÃÕAgFSVF®ÕÙñlܼ¹ÞrE¸ µäŒ. ý˜‘Æ:€…nCÆî@²SÈo 6”bÆýîl�ÝŠo³OpF�°?o »>!=Ú8ÂwY.ÖëðÝõÌßÞ¸IÌS¦Ž÷’ »Å�#•L÷Úу¢ ¡w;õS!%VœÄ{´çF‘}­=šIi!ßýûÁ'4ÉSxó ·¿…6Ñ«ø25OìEµ1ÁíHƒG3‡Ø„³r�Ö’Ù¨–^™4J\$!²tÞ%8•üܰØkãY�{k°¨È׋ã\†<Ÿ{_Ô™DÝJkP±Œ_éþÎÙ‹bêÂpQ¼WÕ{3^³„…Ä$ÁÊ=tÛʶÔu`ŒÈ/ „ÜÍùžuÛ�X SßXÚH?Šº\˜ßF8z3»þCaeššìÛtß:ÿüJåÁ9ÍòJé×—ïÆO ‡µ~žÊü•£«Âg¬ßí§xüŠxÄUXéŽôܳY³ß£5l¾½W´I®__ó`§wX(ÄÁlàéÈä눓ïñ›U(Õm+ZJŠr„Dm‡ˆàmýRHÕI‘(UD f'mo^³À4üоÔù|Ê ¹…ĆŸ@…�Ïk\®tc¶ûWšI@�òÿFLÒ¨†Ñ€¹W‘é0 Ð6l Y”/§_^‰ÁÃÄ®$QØ=7õˆü¹,·ÖþoDq�±•°¡—AήøD�í[÷A=%æ¥Ï‘æÚA—] 6çü¡ ]†,wÒYw38QEåçgžË¨ŒLЧ¯G&mÊתªJ^{ÜÕ %ò¯ëÕJ¶×jX[¬¼w²8´zÜš�À2‰’E¨¼­ íWݦ|ìŠMO{ŸoÖÁ‰Ü…]"­Ðlò³ªgbÆ Ï?Á]ZB;E=´¶XGV^g5­ó=HSÆÍ#jq¡2�Yï«’’¹ßºmèS„D�|,W–¢m–|ïìÄ 3W<�ö tÂ÷ jƒ ÔQš 3)¼ô/�’Ä BH¤NTi,ì““; óí\ƒÏ[90ÂÁÜ“ [O)V:†f\¶œ æ»Ñ€-¿:4öx4@i/&‘§$÷»ó#¿“ÄM»sã›Õ?5'1˜•]Ê  pë�µUAW±�å¾Rž�‹ªÀ=(—黽2~5$kžsdüe„Ù¸' 3<¾NŒ|€|ÇÈ'ô%݈-Vº`Aå pc[[ó$ÊËŸ™Ë?¸úרµöÖê×íàa€k¡|˜�TœÂIùÎú³œ…=%ñø�û‚«&$¾†™WÏÙXô�|Fž2aQÏÕ³¾núöl+¹FÁS¾¶jÜ}Jo7òÁ� 7%¤›©p±l;Ø�Ë&%Û›Ý[²”­€È×]ø4*ø›#=ýkGe)¦£É£»VÛfL}ó¬Pð�rʰ õ#y·¸d_e\C¬Zw…gÄKZiôrq걃>�5yXlùqÙ*@Mi– c¦ÈéWgT+ïcgôtµO˜xÎɳ`þ¹zàz(r’¤n·ߤâ¾Ûõ6«�ó°6ÆÏ]yÓaE®3™q]p³…¼@ƒ“YRùªTÿ¸2xŽ,¿Ã¾üÜèÜJ¯C§ÏP\ÞÀ½â{–Ä¢±†^¤iûÉ I¶C`tè‡ÕÄZ˜Ÿ�±I�”‹’2#•͈üdÒì$t½kžmÓ«í Å>ºqž¹Â€Ä.Q2�y‡ža¥ãÉÅ"Zø”»² �ú'$ízé�®_á•\dø�É Ûª[ VÖ'ßÌèÞx"cÌ{:Ë_.Úó¼`3;•†×÷ÄÁÅ$š(©úýXºÜ(]JpË„-ØÃºó³–õ›¼ÉA‚ÐÖ˜¬¡y*?É1RŽ/ŒÄhw” o݉ v�'úþk¤t⯫p¿õÆàïz¬,Pƒ±HFpðjë™W¸„Ó%»þ$¶¿ÝˆðÞ�ßÙgM:fvV¥‡ŒÓ¤gX0Ά·¢æŠÿ¨�=ÏÅUÕf‡8üZîó€¾´ŽI Ü#ÿýEÓ�-ß3X†H4C}'W­|Osê l�V…3ö3,ÿC o¸#Ì';}jÖ¥G1°xÖ„”5§§î´ËƒãÂ,˜p¸&œpÀGò(lW"¡Ä¯ÃwlßíØ}'W³6�6ï G›‹ ĉ¶°€C$\l³µ¨Ûߟ0þØ“úÂBÛÓcCžŸX…{o}¦­×|EƒŽ?ô\Áœ–��ÒKìƒþ¼¡s{öÛ¤ÅÊZ˜OGUµÚ€Q‡A~"/µY¬³þlÃ{éíüô�õåYNdà|¶!L&†A}®ílžà‹Pz€µeu…ãõ@_ÚÒ �FqÑ�W ú•‚äÑšÓ>Dסæ€2ÌR>÷‹êÂRˆjNÿ.ø�$òmÇEüo».ÂÇQv›XåàâþFZ³ržV±w†H‰l#G|6í€�êÞÒo®Ñ�$/·Ÿ~{á¢bÿX⻹µ_JÂNƒ»Ùué©|-žW•%à!–WfÚFÀµéãØJü¦‚Ãsèg ¯›–¦ oMac–|KÜ­ÐKTvC·—“ÖHfá …K©ªÄ…ÐI¤s.í%½í€¥a�5ŽÎÒóÀ‡´Ì ëh›7óæÕl”pÑ� çñ]ØË4á͆�?Û½æ×ÛOßøÉá¢y±Gg^ÓÖ§ä¶-œÈ$¤×>öz\Çîdg·rÁέ½ÌUª]ŸÒ÷•çï“Ù¥F#Q©É”ÞjŽn¹¦X ·é•XÔ…#H>æ û�r/ù>²(ÙÏYÝ!iÞôwÆò‰„—²#p°‡eö‚*ûµþCP«Y�âcu»¬U{)Pѧõ?g3îÏÝŒý^^ŸczöÁoŽYHVG^穨7=ò§Ÿ@Ùf>iž=BŸ$ôöÈ.é¹�¨c4þa8ëFpÛŸŸÓ”²Ì+�á×CnØ;ì5; ÅæÖW0æVðÃ÷ùEÀj(ò*/Œ¶<¼WŒZ„[¼,ùTDfHª�<·Âß ¡•ÊW�”¯Ñ\,‘ŠÉgê{Þ» ·>beT·äÓ¾O§Ù¹ã‰O÷çå5íש¯ §Tlœ6ž+:8Îú  þz¥ùš”¬=2¼•• a;èúBxÚ.0÷Æ�Ö «äG±¹mgጪ/Öù[ËñˈÑcó6Édí3£�w·§èa�9 Œ?uí«¬ðKO çüÑ„1'�L~G¡Ä�–·êÎO÷¯ÕM)x_ §•ŠeÈʬþÓ\Ô‘B· àd1õ)§2ø˜¦ Áˆa´êÖÖkè§Ü??ißE|)X½}<½K�…ð³Q#@ÙJñd;fiÀ™ÊåÊ\bŸ KÞÙ(ÿA ¨!œËå½Yü[Š?K(•ÚIÛ€>Êq;�#@È…Mÿð(4²’÷%Nm»ß[ÏzdG'‰l��U˜>�¦¦>ù7ëeQh¸×4{�3Zz¦LîñYkÄlFì°Ë©T«ó4u hÚÔŵZ+ò ·¾)8œ¦†7‚RRˆÉ§®ù… õr"ÇÎnó•{ö çÖx#$…S–|™-­H:Ip’ Ç1R2‹¿•wvͬ¬q²pÜ3Ž«E{[”&�ÝÐÀ?³Óµ~Voë]�^VÆŸ�æ2.ü9·ì�®Ð0Ý9[V3«OÑ[íÅn.¾°˜Íª¡²ž’ ©‘JÙEPB2ò DxäPkï ÿȃS‡¶+©Ø¼·vH�”=‰xy—±Åª��±=íEGÖEøå#`°G¡‡RÞËσaÁH/Õë‹0ûŒ–Û’QIê;‹sAB6ú䀦Į0c¤k‘<ÄcâLÈ¿E>s¶Õ¤ÑÒÆ&®br<‡À "ƒÁy .µÂÕª¼å!¨eƯŸ§™IûàëÈØ¢°{¢¬ž † 8\3©eG ‘¯ÂîÅ‹Ë1E´‹FÃwCæ^£™£�bâ2©ÿ<"H8ê:ŽúZñâ Ó˜ä“Ù-û0†Á¶¿€¬÷©ð®kBi~‘Ý…ØwÁ›¶ˆÞÍbK¦ðD«o.ˆbD:FI�-l�Æ`}Ⴜ§‹Áôʆ0#¨WB)oa>r+úåºX8�¸5଑éÃç2û8· ùއXènîK�ç”Í%�µ¼=Žó× cJíÕðúÜ¡cMà4qðC^Ãd> &r?:4Ìš!Y;®×Æ+ær\¾fôí�^úÿYAì‡/¡ ´…?{˜É0'L¥Ùò勘Q;�_¹~9+šÊRTñÅz=Aü_ÞwåÇʱŸ9ÝS `mF°ÒÝj7¸B_(Þþ8``ˆ\²!?ËÆ„Ù>L¦uüËçPàÄcô½uÆ·g‹qŽÒõh/¡*Ô ~mB·ê]¼üj±Z0FûAMñl%‹lt¢Š5ÅÅ¡þþ6×ûö´±¤©“P01OÍ™~ö =Ši§V¹äëýLYžl›ÏÙL±ûÑ”†uÅÙ·�ÝÎn8í½œÇ$@biì-Œë ¤°±¸™ó¹Î×¢šZÒ.™öN‘SêÖsÌôïbP/>±”Z�ÿš#´ìUÀ ú:°[x7å_0ô$hk׈oÇþ) û�®¾Œ4!è"îÆG÷í¿� ò«i¥¢*§ÿ’cò™YIèxv�”²Hþî¡/4^m‡¶Ã( Ÿî°gÒŸ’°>(Ú§³xË~¡üÌK óöLÂŒ@ NðßœÖtQAÛbì‡ÔûðVÈ•PºþH¼¥ÈPVóäJK,=È«¤^Î>üä±JѲ5”1AÆlŠÌŪ!´-:¾îº?å͔ߩcóX^�èÏX¸5™©„Áåò_E ‹öTQ˜:ÇÑ,=À¨€‘—À‹yš =Ä2†NwÊ•âD%þ¨N›T‰M<Öú3U÷‰Þ¬³`èK…z)¸‰5v¶b5É4ÞÆý±I]º²2»Í2GKH™°õ&�Õw\ ñ2ýø5S�Ãt_!”ÆÏû5Ø-ÿdæ/ ~Ê$.™ ‹“!€¼ru"ìddJö_ÙÄ]¼9Z–ÇŽn_Gq0¬xZðr@6Å@]ÐcºúžP=ÿ÷?�»{lm{û~"¿:aÞïÜ?Ç}}4wÓbr\W|Lò¤‹å§Þ4À•6è€|Œu _ÀŽËD!<($]ĹIÃr\Nè‹)èë%ž�08ß}ÁÉ@Ä”"/ÈL"Hél¶¿ÅÃ.HØqFªº‹Yù(™§p�LP´£…Û@Ïå„ÅíÕ3÷Õ|âO8QŠà:Œ}ú“0¸ùßOž·™çÝwCïk³+ô™¨q�VÏ‘£ÍÙ¹ZÍ$•QÏ仓†lÿFaãêï&Ýåý~UDƒA™iX¦ÄìÅèæ³×_úQ!óª–-·ŠzÆ=ûÃOä»2ö+4ƒónÈ”ç’å€ðï‚Júû%ùܦÙÿdMs‘ñ¶¤y:ÜoºüæMÀ‡Š �YÈm½ÁüÂï„ôïß{J¡ß—uûj"móÛÀ¶ŒQËÒèÖªUjÏ™‘«%œÿßb¡BÅòié;>­’•QŸø ©þƒ¿o”°`+)¶CalfQ� 2¸}Ë â³n|�’eîÌ„»¤d¿œ |Fºˆ¡W—zGZ‹ùHºõbÓñ‰@.iXiÿÊÅ_7Uä-Õtõ\5giÉ®ã"�5 u'èA0ÄæÃ\üÁ‘¯çb”JŒ¢¥H,ëÊM]Ÿ'z9”@½g²f-¡—¤+oî«n/VGn¿q±,ÔË-K³b›ßHç·žÐÁ¹N_ ¹u½eï°ÌX ”íSŸrP²ÿÛ~Kr}bÁ¼sXŸ²móMïëÆ¨ƒßKC6e@PR½ÖS†”�‘ TßÓ;³f}o5L�U×móGéÎýå\#u³“<7ßTæ�Z0—9ƒþ÷ÄåÝòCVØ‘ñÞ`Mh9uvuš—[þŠ ±í2ð$§¯ÞéH²#ûJ1Xª¤�*1_[»‡åôïŸqbpÃÔ¾ànN17Ä)ïP’ßu„"+P£#@GAkª™Œ…^$ëà&âT­ŽØ ü?)´}‘ûÓõ  O7,ÊN¢Ž s0Á§ÇjúpØ«XH~GÒ~Ü™’­˜¶ùòÛ)(¡Š‡xµîSš!ؤf ëüÓ"–9>q’û²û/éiììm(Å1 înhSª<"ócmª8ùüÿ÷¦‚ÚP�ÖSâ“bn¿0ÕG[ú Ë+VïtÔ]N6iºœ�“]×Z€  •ñ3,[î:©ÍXÄs³2~ví£ûd_ÀhðqÛ Ý¯÷BgÂn[,ó-Øo? rÜ¿òÝèŒÌh|�K.–B‘áYE–à?Ð1x~ˆ²?ë¾PûÍ×ÂÊ„€.�3 è>Ú:ÞÚ¯.c*9ñd‚Ëþny¥æ`6ÝìE`žz#ù¦! •t¡�n²Y +ŽJºÔH;§Þzæ`7©;|›&Ë‘ÝV›ÙyÃ[‰¶h¤Þ?š†nЛÖRJV·ö!è\×3ão™�MNä%ø€zÚ`ç±ÙU³_<Ü6ÿý]p±‚ ÀýièŒÒb gM«®˜�žåc à—çNEõtÁ [À †sDMŠÓÓ âsÎ4 ¿S€»h2°8+ònÆ2=KÓfñ9n’ü¡q ¦ô%ËÛ?Û8!¶ÜñºªãÖ¨°#wZ‰!¸È_£€a•¢›Å^à¸"¶ìvìþòtqÛ?SKà­ºÊÞüqŠÈdzn×päÌœº šó~;ËškÔc.Œ¬VߨŽ”Px|ÆîùFÅÓ"¢�^f›… ^²ÝçWžñ?v¾Ss˜C‡N¦BãCO=Mrá0ŠýÍ=yŠ5  $öÒ%cüqˆÀ¸>Q1âvàч‹¡ÎŠkB»š~L|Ü‹4pnaP“ÝúmÙ|±ØŸÈòEö5€Q $âÚ©·ç‘˜Û’‹›÷‘rQ®™‹°Ò¯ÐÉ–t_E“›ó³1Ë›bÃ.ë!oa³‡/Yû¢:ñ¬\1W6lŒœˆ  Q¥H©23h\žíÍ‹‘PÛ n-IvOzœQ”™ù/bó‹¾CçÖíÒør8Hú›{ª�ƒÓûÿî"€(b�ù/";�»1¸(œüå®W^|¿‰ÎþÍÌ £ÐBc,< Éj=o¥<|CèϘ0…¡—áÿœng·Xò¯%ò°Ïj„ŒÞÌÀyáæìod¡ûTh² €Ñ� òG —'aÈ[&<3:ÿ[ûg–kƒã#¾] äK[V3Š�ÏáKGŒ¼^¹kÝ\ãŸwþ³Î­©CñOØ¿Œñ|ÿ~“þ†�}¥n½�-¦…Ž-^¦ˆ*X¦z‚‹RÜ…Â>ŸGMgƒ±ÜìËê*Øê ú3ÍUC‹™F`Æh·ržÆÁêl±Û„_ؼ2²î%æA½4dZÜùˆDXƒÅ‹Dõ!EkpÜØµqb/†µ  PšŠ…Þø»Â{6°ó×q±2Â5š‰\óSzf¹üÏ‹$WØ¿z/‘œŠ" 7¥¯ºGŠâëQßÐt@M5õØ‚­|¾Ýø/#Ë�Ç÷EEâä@žÏy›{>`ÿHR†ŸþDMF°“/ð¨M)—û b5ظhÜ5ÿ½]5»�»ÍN«hM³ÊJ÷™ª¦+2º˜´•ªÏ~ uˆ?NC÷É;ç"þ^RfÒóyUÉi¿Î7�Ï¡’�ÎT _{¥Ð¹»rò4ÅõÀ ’=šƒk�Ú|-zJ4§¥Ô±à(Í̧«óGâ SäN¢Ú!0mù˜wNÊ£QÅ=,|3cðx�5¼=+·<Ë82UÀs$']ÚÓ�=Ìnè7¬�© ¿L£üïz ß_]•-3zg!8 ‰šºá€O¾É’D™€¤[�ó– cU÷@¯@fVWl uF½=›%š²Äƒc°!„;:ªÀ²dŒJ"¥Œ¦¼Ô™‹�9tbŠ Pêí©coŒ<è¾XÀš gˆ¹åvãg[h†µé÷ã&�¤ø:qMõ’°Ý)Z[*b9\ÍÓ>§ÜŸé|2Z=}Ñ®@Ö³‘{îk{ 0ôûdPQµ*E~Ní ÅaÔ5SÒKæ[b€ R ƒáº0/<Ò!@ÛRØÒFêË]忽ãÜUå&p͈Àâ¾²@?J¦5åò ¾.¼þ=ëQ-FWšcC¾ƒSuJnÛI­ñ¡Ôê]ƒ—§ÔG:'�QœEÊýLŠÐ5Ü”‘4k¯b<ÜÄ0\�{Æ«ÒÌlêU‹­½Ö‘`ùpô÷Á €[©x‹.,à°%vÅXQ³^_.÷ûÚö9|¥~yÕŠuœ~ˆö\��M?Ôǰ1Ñö±Çb/«¹¡ÄbâÍ#4_þ�ÆZÙ/¿þeãcÞ a#ß/Z™SÞ[«#*•ÞS9öÿJ‚ÿÆ9|²”hL±åº¯¦ãî`½l›ÕŸ|‹” püEä8¦^†bM;[ s†ó'h°DdѺ?Èßsqö)Ìl¸-™Å4’Øý÷gâ7l€RÝ&ïm”Ï#:#n-¡ØT|S”;ŽÑ‚ÛoÓ±¸ÛYE˜Ø™6lÖHÞø˜£æõíG¯Æ¾VAÕv¢E¿{ºúWíÉcûf=OZ­'籓'g¿š˜³¥Eï櫓……y÷xL·ÒŽSI¼Ôm�æ?óø°+‡¿(œœÕBu±«dï`“¦½5*QØ®p›ø¯^2èïÛ…¢;: ®Ò&6Ç@— ÕE ™‚ñœ{ ‰\Ø8ƒ ¨§0wFhI×ó ôþ¢£AÀ¬ ÅicüÛ �o?Wÿ7�üŽ+³JWüÏÝc¹wq›ž®#ÿŸÿ¹æŠú¾‰›Rûß]Lcîúþ¿g¨䬜7ºód‡Pë=×]÷^%ýß ¬›\£Â±boHTAȨwƒ,¤ŒhhGyRòÕ³ÂØî§aHê}T Ò('�9ª@,ê�<ÄIt(6¸•�fÖPé>mYÝ�H�ëªþ'úGöhCŠ EóÏѵ� ¨•ª š_îËØ¡U6À„€�þœaó÷Jñ[ÉõÍKòâÏþ÷*8:ºèꢗ²Ûãÿ½Ï£û+ßðVý§Ã÷<õÿÿ‘·@³½‹•C‡URÀÝ—†ªÎãeÛ°ÿPKë©RD‹ÍsBÌL|Rimages/img3.pngí»uP\ѳ. d€ÁÝ nÁÝ]CpM€ÁÝ]‚ žà‡ Ü!0!¸»»»Ë��üÎ9÷Ö«zU¯êýóêQƒíµ÷’^«»¿¯»w¸šŠ<*)*†¢‚Œ|.ôÛˆ½‚ô«i ú ÅNAÏ ö —’F ‚S”‘ÔrƒßKG©Åÿ]w�¦N„°aŹE‘b`óñŸ‚²jñÚÂ�Êg‰KdþŒ±„Q6qèºÀa8DZèŒ=ËHìŒ/’Žé¯KJKüí=q7•ø‹ôlµ—°û@ó€w–`ŽÕg *i�5ú¡“•!Y† ܫͲ’k"¬dÑ?޳‹ÒÙºÚ‘c )·F €Ý�Mà?IBë‡Iš%É¡á)Ï W¬ó8�¬‰çÃàÖÅ©ÛH?ulxlj¼°DÉã‰ÌWmnv¨éZOãÉÒb³ÊÚ¶„"®•‰YÄPÙûÆñŸ$¦õMÿ FÚïH‹ øþ$%ŠW�JçÙ7'…zÀÖ“¼PUA*HL#BC(µÛjn«Å’�SøëB»ñ+GíY.å4RÙzX7,X�æ¦8K¹6Ĭ'Ëéi–íØa’¤¸¸™Ftø¸ °A%šQ´¡3žÕA4WhÙ ”Àë¤v„„Ò[ÁËᑨ¯ÂCÀ»úØÙÂø —é  ú12Ã.þ© !¡Œ8Ͼ¡+ àúÙwæ–¿’øØ 5˜Îÿ3Ÿ‚IìžSúï=ÜcØš²Ìã ¥ý0}¥\Om5úF¯ÄÁ«¯\L†O ó…µÂ«çCçôíÌÉ�Ví“N`»ʘùSLGηÇÛÅÌà6°K8T<ÃΆ�=ZeÃOÂC€5fǼ5&ÀoU§IÙ1|…�<ŽÂ+?´‡ÄÍyé‚�Ü­É¥Á§áyÉK>† üι×+s ®¶*ÌÔOËpE8³ûÙç™�gBW&˜æŸ±\yα¹ÖI€ÿØU˜ŸDžÊ”¬Ÿ†öçÇ­\•’@b"òzý´ [è�?Ñ@ ÿÿÿ?ÒxÞ¯¯È¬ ¦W+7j’ Ò¤"•‚ì]­àLVë gÇÛ•xÛw ,É|Ç©�Æ�íGU,•d,¡óVÿ1áANoÁ Ù›”Rë~™á—¿«ä6Úê°‹�#ã"ܪ¤â’Û’ÐÞ)YìC,×ÿSzþ]‰Àÿ’í0üµ®ÐÚR(ò.dMWk“2Süy�JIËš¤DKB�iÚhO @@–Ÿ£p8/"»ÊvAì ~Ãe(¥Ï‡õ�LÛ$V}ÂÝñéÚ—æsI{œ°8 Ñ´õqãÓú#ÙïRyiË?m0‰O+p®òTáLÝÞü)±^F&Àd÷½zéx:$Ÿìƒüy¶ýwQªzŽÜ׳�‰Þ™U`Ú ‹a^;56ü«)YEcç‰ÄÖ{“vâ_ÖSÃ"—‹�\r–Ž£c½ ìWùÛÃYb¡Òùìõ³.îRgnQt?øG”¦~çb3ˆ_)‚e}•‰ÏM¾-S«Y#p)ü¦/»v $@ä©®²éJsVäcn!D(HwI±ÿþ55ðal{•ŸÐŸ*/ØD‚[©ö%Ó…¶<¶� Y Z|î´FRŒË÷ˆóÂ%8¡÷ÄWo÷ ûç2å#a�®æôN&àÔJ¿k‰·ùúî™9«"tT:Á`¡3Æ]ã¶Ë@”fQãhA�Zqßämé-t~ÛöŽ™Â,ãÿû�ɼöÜ\ƒ›Á  rÉqÉæ ]¿ïþjž8HóáY­ŠÓÞô˜êVµÍÜG�‹}ÃCÔ)äDV„" mS!—vˆ×¶‰Á¹´»ŽDYH®çßCx…œS¿[b©g¼H÷º»6uÍiÀΔÖ&Í^‹LoB+¤m/s\ÆirÜ¿CCH9h+R�¹çSv#ù1[Ï¥O1úp¸„pw¶nDäþrÅ~«ìš„A–[añ?Wt•²Ÿ€ä%ßH×â1L¦HG‡ÀÕaU H¹‚V-Ùs±p Ÿùû?CN�‚‡TèÁò”wÔ·U)•.4a;ù£íts¨ƒc¡Ì°¡×ÐuÎ\EìÊl¤D‡�ývLGÄùB@X”ßëÒÎñè7Ñ�â¡t<ƒêyOËF†§Hßz_jßÙ„±­ÇùîV¢g7¹+1)ñWb··E?ÏÂU¿ë.Õ±lÖ7 þˆ^жSÓ¶[ÂÆOÑíÅL،ȌÆLpÕÂlñæ1Ó‘"”^•ÉR|Ðý å¦^ _k—½1�Ê?pRT@õ '…ãmÀWûo$|Ö_ê–?³4r`è2»žOY¤rš ”4v³êUt.ž,,8�iµOþ4íCco4)«['U¥•bÖCÙ²O(¡_j0¡ðؤrlC¼-¥g@H”Ïú€„bœßöY…áŒØHÎW)àˆ=;懸@p!E|Ý^d¦Ý�?KÕ|dq³$¿AG ™úiªWïTd9œ®÷ÃÄߢ0_5s?�;³Éj{¤ Fp-ASDtÂF£Îf®þ+!ëZ:¨x�×±ør䢔67z¿®ë5Š(åŽEñ×ZãôÞŸ­Ë‡*‘‹·3–Ž. 'Ib=î%°+Ÿy”–’cÿ1o%Tò<Ø)HÙ[õÒ�L„ Oážk9S]ª÷ó]ðW¾O)SÍÞ $"n?¦ª,㉠š \ÖÃh¢9vÆKO¶sÛ¾ –6ŒŸRÞìÕ«™ Ü]Üߤ®ýMf»;ÕdïeXU9’ao|uqó"6:1õ�†¨,Á’‚8… ±Ä´àçðö;n¦a;Û4y©ß~Gc%´µ]W›.æ­jï ZHù¬7Kq8ÛòklúÌ_­�°�¾¨†)Ð Ûso-£g¬¨‘»‹™Ûãôƒ-)x:ÿUªGxyãñg½ª± å-ýk£fÉÅ"ë‹ää�)Y\;þä1Ò#¬Ég­ó xo.ë˜2t\Ù:/H/>î`^‹�Úy‡íŸ ˆó“ »œæ· ¹îïþ.ªÑ´¼»>3m¼\Žx?þ]ÏÈ­NŒ‘´?Ýs¿îý`–äûµžÄõŸÝ'˜Bûµ+"™#N¶ÍWùº\sG“ÈänY¼ïNK;^3z%ÔBW%¦°T»ÊÄæûb0vdl%.ª)Ë3XŽhŽe@:éBÎ\}©üüib;Ãy×®8ÖPqPúŒ3}ø%;ïí3æƒÜÍKü9Y"ÃÕàtr¡QîX"‡~[35å$œï‚¦ f¡·Ö~¥·úÓLã¯o±4ò!¬*W2YË(£�ðŒ oíÄäóxøº¥ûý&‹ÅNíx‡}�s2�î°_wGÆÔà>Ô´@¡b�ò¼€/Ü_:‘G = Ù¡`TzìpÉvü¶“k<26)Žæ‘õæÞ-UÔHQØp2Þžƒ÷/Ìß½,w,#Ô)'F– )õ0ÌÒÑzâ(2¡2iºi6À:Šö‚íj©Ý9œ‘Ú;™‰žßeOˆ»`ÚÁ°û^z÷!6`où!ÆH²ÙÔ¾¦´úHuÌiZ® ü~VB¦f±üRX¼º¤Oø¸EÆÜQ²À…¸By)Ôô— ñyÑãè¸(2\æÈà=¯/5&JÑ;ò’Õc‹|†>r¼²ÿ·DZì1òaO±¿úo#k�26°×1½¢i�Í�©Vå×ÂaxÆäok[ÇÅ.6±²ºà³2ˆ9ðÔoa d©Ü庑` »�hX†á•$È?÷Žôué:f=l…¶c½çeß©ÕÔÔIhï6ÃÑEWªæ¼IŽ}ó �ÖS\•¿nR»^iOÒî7¤\ÌWÆã¡DׯW¦Aùž¿:îxT­¶ ¥õâK-ã ï¡»^HK7;!RýìKÃ%àúñ°Ýy³%üôƒwìëN��‰–{gŽgÆ/9 µ ߨ¡ÛX‘þ;yI]ÁX�2~Æ£j ü`3GI > ‰q?YÿªoÛ¤-Ǥð'ƱÁÅf·ÆíhÙ$º!õ·,H !ÖZÇ2ô×�LÂåÉk~ Ÿ¯1íÑöh"›Y��¢µ-ê7ç{¯ ú8·ªì.ßYÔ‹ˆFèFÈÿ2žæOé]ðõ³�þ1€š[¡6ëð¯�p3þ]gû°-ˆäUo¾kÕ F¸JîTQÆÑ©Ë‰uÅÞ˜5Ág³'“ûkCúk²hEAq†8=¬W ØÈÙ蛆-Á9St�úmžÏˆÍŒä!ŽƒAì ¼ÀK"M›ïµrßðá¸!‡§Ñ'sGÅ SSAe!¥*/1[ š'^ꯙL73lj§^Äi•M$Ò¹·Ýó .Êl) µ’›k}%'ÂJO'£*æç�¼˜4\t½An¿Àr w A±/pq¹§ óÏu¤¦cC3õº*d©åý×ðpk²“ß? {ùÂ_alw´XÎ;oïQ†aÆt€uMÖÌJÓDÕ®O%Œ³€ì3ÿ¼§Lêíé2uZ›º¢‚OÜãa@û¡X¯„©Œå;b5ò³ûÌUäµ'õÑâò/Dǽ¢8n�¯U½9 oç—>©w0®å Æ÷DÝy…ÖLN¾ö§3ØÍ¿aˆÆÕÔÚÔœ ºDøÊ¾WpREõ•Ù53_FÒ?3z >é1vØjvcÝ6ôÇV‰Í#TÅ Óò!‡,ñ'âDBIÀ-’ÕÒI»„ø|^ÿe>þHcpð5µ%Ø~…q>ðú³‰ãS2ó%@kâ1T�¶�©hûñ Èø?±‹DÉžÓüÇÛ£¡TR§o0ª(¡ „isõÍ�ƒiýþð«ÂÉK³ƒl°É*‘�ÿM qó£j,´;½;°HËd 50}K[cDš‹_ª”2$´� ã1^iæ4’iœßxÑåŠç>“ég€ã+§†„†Õâq˱0 ÐA÷�—¶©(›V5ôØ Ÿ­ƒÊtÈAå3ÔÉB‡'?4² $Xc{¼70ÈØÒCSZ1smŒÑÀ`æÛï[ýV-×›5@T#}À ùÚè‡_¼b€Ó|$Óª`w’ŒƒÚÂa¸!br<ëûæ›}«7¿†q‡ûÓ…û¦YºYßZ\¾½|IËŽ�'!ÑÂüò-þhH=ö%"¦—ÜÞL G·¶¶vˆœb¿’eOÓûåÎð÷ Å^&ØÕ´¶ ätžÑ â0¢ Ä*Oýܸä²ÛðRžÌ£þdm>m.£“TˆbDà8ë<ûõnî·GÝ}LiÔ¦ Ysì3UœÉ†._IÄ}a¬!~ÑrtM&Ë †ªí$—Ö½nÍùH‡QÚÉßv‹w6x-8'¢Fø©.â^†;æ›ÿMZï>à‰"åÅÍâ` ïrœD�þ×¾Œ&ÏXÇ.’ÍÚ„�ÂÍ5 ì›ê§ôõ±µ$§ðáî”Ö¯6ì-·#¹(¾+�1¹ÅIÓÞÆxt�›× ~oÔqÅ û<|å£ã:Ê%[㻸㑯¯ˆvÀ�Q­¥7ÀÓý9á/Ź œß44ØcÒ{· ²Úe”ˆð½Ço¾bÆ©§.鑯Ê�ìzTØžûb 1~ù)­–] ”‘A¾¸Å\@5uÊÚi÷ô?ø•ºº³+¼gMxE –Yô{†©ð™EC^Ô[W˜2Oîå“{؃¹lkY7øN›~þ!EMµ'‡sWûˆ# \vkOÞ@ï©A &Î6UhíÈd—F¥DT;T  LÉu©ÿ²õ�‡»ÓOB ‹×íÃ[; Y?êQ2G„ØYªXA £MÄ+–Üòg]T/©¼aVí1È•ø z0¦ŽÔ?¢ ¹WéÃvl¤‚l?¸Q\E;ãá>ºñB\lÄißjïR•‘@â±óÐÿ3Æ3¨ËÝ›ÉÖ•¿n]‹¼dî¼R{f8<“V¢}ýÙ)”�yº¤>ˬêó›<Åä7OkkB�tóœámú&­‚)ÄLöQHÝ-Øy…AàÒ^$ü8І›°üfç+‘7{°é ;í·9¡ GH0ánNÿò +—� \kr?h¾)«Û)kè=^û‹‘_�±0ï}w6‘ %.MlŒêØ@s°ÝÄ0vÔ S�í’ØóalcàAT¡‚'ÆÑÛ0‹ŒÕ’@•�4dÅ� ÉöZèA‹�˜Þž×´œE•ûÞY�Œée)oö‚²£õæ›S©øÚt´Äé…H$¤P²¾Þ�ÑI…ß¡ÃÏîY ®/"‡S›Ë^c]5Kù4½%5¥žò[¼Aw_-Âvͯõ §)îs(î[^p[‰ R�’WW„·ã`ÔŠ¯‘s™ é7ç!<¡Z’÷p±œÌ•%�Óâv‹#Mž®•>¢ ZÁÆ"Xb~ó9ok±7¿í@É‘ÇêðrjpÙ;·ü½ëÆÛq{a~y¸´¾Á^½$î~lÆ~—á¹ä”Êo{ž? %v–ºë䮳o]ög¿B2‹DRí»£É×cå)޾1�óWL­FHLáMÁn Òü¤qWHTV†Î¾Ÿ·û.³…Ûš_r¯šB02Q[\/54í8YêÙ’_ó][ÛƒÑD}çÝ3TE£°£ç‚Pðz;Ãñú~¼íè%Ð1X ¶ì Øß­P©÷|{G÷R$p¤Å××qLªÁ‘äÂã�‡íhë)VeGfùŠïo/�Ú–•‹�g•y¾¤5 ¶>ëó}¸ðmPD��ÐÃNp¶ï”/w“u¡V‚r­,Úü2h¨ŽDO€`’²½»åâè®r©%ìÔ¸5Ï¿ç½[2ìÎ{ÙT:@ôBw‘¤xk¤Às‹/³Éñ?Ü®±ŠI3ß­ùf¨TŸä›,šŽyYþ�ãa2,€Cwê¸Þ{Ôþbaü펲™HÛÝæOUdi.ÑzÇzõŒ�c<>¡=v¨iã‚Ã6u«m2-‚ëÁÉA\ºùÀ’c†|µ¡‰áù4SÍËòú;ÇHþ+î™[þ@d,¾T¾OÇË£5VýÏí;qŒ¾ÂØÝ-”纅DÄþ²šðº0m¹ûxo=â{ÐòÐ|�Ðw³U�é!©R™î¶näÖ—ÂË'¸TÀÌ&õ }uÇ,A:+é;WרþJ 輎Âê½lò»Î7çC1Ã5ý½Z¿ÉmÚb×?ŸŸ2A1‡š¶ö�ÓAÓE é4¶ÚÖ†Öû�B©ývÐ)m¹#EÈE°�aþòÜÓ>±ê¦¹ÍâÊ‘�9χw·É÷²AV…k:þ¼dº”0aì;7RGYÔã8BÒEZRðÍ>Ï_‰Jí$U«ÒâB*ñ ïTèfÌn §Œ�½[EÑ.;rwªÒÌ® 8–j-Ãò¾¿ÚÈ7펆1è|Ç�þ{!áÄ.»Ÿ»Í¯DÆ^C½)ڢܢ&­pªÉ[�®�H\,:e<1¢]:|¤Ž³öÝîb[ó^'¯üC¡lwp$ïæ–ÇŒ²uSú6Öˆ�AÿtµkRT0Ktu7[2N�YÙ2ß>ø ~á ´iDYZób¶X‘R3³{‹NLe—vV"ôÿ£…Ç÷ =[•l†õnJeS½™â úÈïê�yàôklxS¿­Ä;:žêßÄ‚qÂ÷ÿWœ�ræ}�|t¯nt_+2ñ%%­˜I[ƒ0)wÔÏjG©˜<ŒMf/uñj’È[bÓ€èRÒx«3àºÆgfÂÔWv… ¨k‡oQwÖ³¢·ÇlJb¡°‘#$<¾Úûæ|ý«EÓÖy’Æ !»‘5Ô«Ö( =’¢Ê+�VÈ5ü߸bõäI.os4×mgæoiä=ub¦‚ÎK´*6Ü$Ô} ùù3ȃþêß*—Äl ]ÄSf Í?©ˆ8*ôgÒÙi°]³ù³ +íL‰K ð�aü Õ£±‡¢Ù„ôn"¹ Yã¿L'xÔ¦6ÊBK¤ŒÜ/quF5‘Å&VÄð_žMPuª­–'À)pòÕY;HåëµÄ=}åñSNLKÌ?ÁU¡Í¦còXoEµÄÌŸ êÿõí•׆ÒYIòŽZ&ÎÓJž#�€M"/ùÄ%.Ã\Ä"q¶0‚½0ÝQ×2Q±Û…K#÷–ÚþM+QÔK>ìLUßW£æ@Êö=uÝbéAïDLÇßãêBǧAð¯[|„·û n2®f?‰¸ò‘½løíñW� Rî„2*€ÏJ&+]Q²¥ª‰PW€-AhfÌp+”rdÑÂD´Ü¿ö¢†uì,~ìíN­öAø¢~µ5'~� 6T£µ¥“€À âTðê~N>SlìnÝ‹­\JÞáL¹‰Ä�³O6f´®ªÒœØ›Ç$�ŽòÝéÆÚÕÇÙµ€¾Õu q¶XÂ@',:lÄv.�ƒ ÇçY…¸™Ø*d»>¦¸É.“ã=¨ƒêDFe,%æßëo€´ô�°*"€¿�a]ª«5x�P¢S~>/F䯆r{j¨)™ ÷F$Y©9îç)]CÓ”$NM‚(vq]Åi“ ˆ™HŠRF_’…qz âq“Pj œ×ñbîÜU]ªÔOÚo$…Ö.°Æ¹!g=}½wK�� jø–<ÔÎ š'#ÀöÅÛº/ I?`xç'çQë·ß‘f÷‡ën·¢¨-¤)N àµÖu5œ3±†RúLÚ%�Ãíƒ%ýFœîö?ÍQÀ9 éî£oâÃd)ó‹—2jÙpˆ „Xaß³¡Åœ”íz‚�/Û«ü3ùCʘñùf˜ÔnÚ8zèÂìE°?­á;è×ôA{æŸ5‹¹¡…ÚãþWŸµÝ ¾3ÃÞ¨Â,|IË•c¡´Rc3¶c\ —ÇRhî:'Æá“ã×D®ý‰h¢”˜kv³ôf«N³Tû™m�à{çÍK�AÂÜ"åºý=$&¢0:‡]ÇÄ<Á¶¡]ÑK(v)û<^5|¡â2‚²Y‡.•©¥—äúWNä“6µûô2ÍhîWµ„øã}gÜù% eäS×íI%^œÔ~hÌßÝçYcÔk÷¶øƒ:]Œ:‘BÍØ€a@MÎÙ1±Ù�T¿Cì'̇;~ÔäfE¥i¹–J‘8¨ A÷»fN“aÆâùWìÞz#‡ßþ<5…ÄU‘¬¤·:S‹}�Äk¼VÁ:/0z£A¶ïÁDZææif2óMƒl(:(ØÂ#êÄñƒšÌ5Þ¥£§Òé™rH�WO™©F ƒ•xÌ“c�Üß·^R|NòEO>ÞUØ/ÍǹnMž8j:5ØWÖ–òG9ì§�_a ؼ´“Ä�càMxGŒÍäáˆæ`hUí= ]yjêêJñòÌ7—3hÄŠt7¸ðÇ's�­²¹¤î_Ž[ªâ¸5›¨Wf˜´éž†Rj™;U÷ÈTÿ©Ðÿ!òû)9Ú“)ñE8yð•X­Zª'RøÊÇ¿Y<8OÙѨÇCKÒÌ·éù�-†~ÈdFäkã�xl ¹ˆ�‰(ügU¨ÕÞæïÖ*ÎÛ$Ü3okÅbâÂ?‘åi Y£tñžI^ø¿œ~3pô#øÎb ïn±AûªLnƽŠ‘¼úîy2>a þUš.\^õûòl„›¤Ôý5¾3Ÿú¾zQ¬êæ:·÷R<€Xž,)AOÁ=°"EoyÇ|@J£¿ä¼•ãºbôuU˜ ñ*aIaöýWB¸'YB)0hß`Ùɳýa½ùJ̘¡Ó²ÞøÚÞÃBhÉ ‘,+K$ Š0IhF1VyÂú(¹Ü †iÍFÑEµ‰H^™†XÆÏ�(A^5ñú*µØ’û™NÞT¨¯¿>MkO¡&duŸý$cA¹y½¥™2cå&<”{ãZC·»¡$4kïBkFäjÈ#4»¿Œ ésƒzñV[¨¼©è¶L~L=Ìc7«„�DLJœvò*áY`áÇ8Fõéä0âåüÑîÞ¯%)¥¬èMS´<ǰ¹D \è§Œ-×öŠk;¦÷‹OxàVÂ= óõYó�aüô³ãúû>Ðx¢o¨#)ž-Ú4ÿ²Û›F›"×{F•ò`¢£&¬rŸ¼èØ"GšDÛG¯š½²RPì ‘ùQ€«`ÐŒù$×Ú„™¤òÕM´ƒ¾d—ÄåŠìî·.PŒa5°®G¡ùýgy·ÜÔŠ•ò7;!ËÉTaèç·5Ù¸G7Öô—"Sõb>rFu}ÍY3Â?Óª3´ÕÙ„8Ói]_4Q¶o8l¡€ž„ïøM”3…ÍP{¶ƒ¾ÛJ„H/{ñã‡è꘥ ½ÇŠ×s—Éš„êzîFZÈlä!3°&3+UwïkÍâ æŸzëyóš9ñ0²Ó3žàCŒå>PhOO<½œõÛ ñ\×GökÕªx¢±)l+ƒ[-÷*?¬eä–´u¤¨!`Áúj;^-Ê® F¦!Ô6 †ï¾­v Jƒ¹æÄqê:´/—fì'VIâëÅiùÊíâ)3ܨ˜è¹ÆbŽ×J�òª~ÿ¶¢0ÂÆ³Yð¾à½»¹àõ8åˆ"ÛØ£©ûÔ!òÙÎ[¯÷§[eøÞ»WšvcÖ\1€¸Û[pFÿ,L£#‹(!xJ"­ìúë´;9Te=5l§¼¼=^fh%v½IÃm5þÂö9Âs¹€%/[J”ÍGŸš;ÇIÈÀâëì0·éaä—ýF¹e¿DÚš ¸Õ†xÁbv;¼ ëvú¾–ÕB]ÊÞ3ïwÛpçÕ�ÝRždÊEŸý�Ùl9=ÊÙQí=;ÊJc‡ÓöèŸH Ñé*KS[ÚŽü‘F#Ͻ_ï&hÃtEº¡“4ÿ"еH¹àæ?�%24 Á {¿=Q~PL€äÿßyâøû†~dŠÚè†W`™,|`.¯B°Ís6Æ´Š+UàDx-ÅàÑŒÄ wÞK½±Ht5OÞщ'ÚÙ…)RÑ7ª2]Ž'”ÜåËcÐf´P=}F{ Ùfªâ÷ía¨8Ô™»4\ãw�ˆèàÐGr® )¼›>@¿ô¯Û¯ßiN1#r+y¸Bù àV#„ozØ0)¥Þýò³D=on?®qÀ'0'x…ª�ÊSú<ô�)ë'vC'™Ä¥oaZ¤º˜Ðš1züx”Ugq:ÛÕí®…"?�H¥}¤ÒmÞ¹Ü ûçë!X” ’±)€h‘cG(ÔGÆÛ ”–lZ¦Vs‚E# ‚6Ë‚o1*Èãε¥dâêÚ) qºž;ƒÙ�ü†ÉWk›P2g§ï*äuÌ¢ßÍ[$|6ªiÚô:‡Ún¿nÉ‘î':=3ÂoZXعÜÿp)¬´V½íšN³»c"Ê�@52Æòu¢¶¦9OãJD“÷ÃòPœ~£ ò’€â7jìDÉz‘ãŒ�"ø7˜fñôÌÊáE5´Ÿöbs)=À¹.ºm£¯Kß js)HR–—1šQ2l¼Û–{ÿëD~ñQ�VKËRg0& ‚”�÷5`7¬tk/$&wO;GFV츥ùd@—a¢]J£õ£ ±™5À7./ò!q*¼ŸYÓxí:ÈchcïÌŸœG¡BxwrĬ° «¤+Ç*»�²Èw"Ѻþ_ ¶‡{Œ\c W{à)™²-#�T¤2éþçi`Y’ËZ/¬œXNÇÿ˜!K8÷˜Rúì)õ 1´>l ¨ D[  Kν ÎÎyôg÷§P­{ÓÂÇ5 YlÆir ÙAæJ§½7wÔ{²„æÖWú¶MæûMF¶xMåÍ×=°àÜ|ˆÍôkšzR’Š%£•EtÔ(M$ %6+X |4•ŒÍʃ`ôÒøn[gýÀ÷¡Á}ѹJøÞ–5+UˆÝ|É|¸Ý ý{|ð¹«è¶[MTA5ë“7^‚*€Âc3[†Ûewr)ØØçÊœ$�8 ü�¦dú|ôs;v˜F¸*okâ’w0 JËèÿL¢§ Sz Ú¡~ØÝžxøô_iôÿ‘·„ÅZ»É]¿¤ »ŽXQÿ¤"¼Çãø‡.™¶§4ö�úíY¹ïÙ;oÇ´çkd½!ìžuVlކ®î^žgÛkÁ‚y–äÝ!íäVìÍ—ïJT.aÙ÷ჺ ÕdË^®ÄdFb% †šLÔîP Z$·¿î�Íä�›GüŽëÊåÁhD÷�î'"™F´–~]ÑäVFnKˆŽ}¼n\–ôÜ>·—¤{úuyu·Çû :Ò÷…ÓôcnÃçW©|_gl[æ4 ]¦Ìm4dƒ*—þbª~áhSNB'ãë5°ÿM`ôE÷1LSÖæò'Žn>&èþî&µ¤¬¾G˜v÷Kó@iåp÷Ÿ½’ö#*¨fÁ¸>ö.> Pä7íBï(â&űùXcÒ†0 ö*Slî¥E³ ã:mû¹@ê>Ý%¥t(æ:qNyÓyJj~×tFÝRYïöXIŸ}7¹E¿ðAcî©R˜®ÊÛËŠ–óþ*ÕL±õM•#lå¯\yHŸÿ“sß*ÿ”ñÄ � úašT,¢/÷¼ëϹ¶O#,ÒˆyÄiØÜzÕÅÚwŽs®3…·<7þ‡QMUDMJ,f|"ÿBXºFƒèõ7„øìù™9'’»ÓqÞ7íŠvQâÿ&êm}b«‘ß ö! ý|-·«Â²ú'¾ÏÖç$uÑ)!•n| �ð Ô®2CB53c:I#…Œ5UwAœzŸÄßÊcíÎÚG�lNÌFó¼ØÏ‡šï.²ýõð—n+]Q!únŽ6ü8º5 �#ŽÉã‰È—Ž;3ü òY®é[Ûë‹Ûh¡mFÍo~¦¤¥±kHãéðËð»2l¤wèôÈNŸ?K˜ÌÀÛ6`RÓÑÚÃ3÷XŒ·z¯{�s2îÓUÒ…árœð13°–t!æò‹|‡-b Ò úÔ— 8¦†v—"�¼•¿½¼‘ÍàܳÜåQ£ñ_½;žk#àÌ_„NàÅ�®ÒŒ¬~¤;ä&ÉysÅÈI Cu^$¿Se?xJ `8Šé§œPwt·¿ϦÌ̲/� ‘Ž£�e›’“Ÿà8&AD›ÅÅ¢]�~žð `þ£M#™Öá“” ù)é_á¡Ò¹DMù±ñcZì? †ôZ÷Zè™y÷4Í"Éf=™¯„zʤî…lßf”±%Ì`[H]KbWwº3‡ËY`¬’>µëŽš˜ ¿ÉÎpuK 9tÊãu›0_²ãbã0š#ä}»Q-®ˆše�×ñL²Ñ5Äf +U3 ðê5f×;cž�ÛC²±z3Ò‚�§À$~Ìy‡X¸BŒš(¹2+žh}‚ ¿ÅGHÀ×{ŸLÄæ�úì@Õg $“™Øf\.Ìù–>°ÎŸ'nL KÜIk&é¿Ò‚|)!{„\qꯤÃè4ðA-¯Ò“²o¨ë¤¥ØU}…˜=b´³ÿ½€¶Š‰B{i!ZW,êýTuÝ™5–Œ­¾˜î¨#.R˜A<2cµ™ÈÛ-�ö* b¦KŸ�†6ßñ<¸œU¹+„>3Y�bêñQ) WÚD®¸íÐË*Ü÷<×ï[_é�~qõɸÌ?—5È–=¦d%BëÊAû¾À3ˆýbMm¹³iüÛ±Åq ôÒTòÌñíÀŽ'£žü×:¬A#äK�™?W†à’(8�ý›|„ÚØÍõ�ž]ƒ›˜ $‰ûýË¿I-¡'‹'Ž +îÈ1ò_—[BëËÀ·–aA¹%ú×ù|‘rr6Ê—=wU‡òww¶ÊÁ™˜­YfkvÊŽsp°¹îbï‡�yðBNJèV£'�¡µáw*è¤íû³Û´ôK‹`Žƒ[=á.?W[ $.6ÿ{…µ«‡Ž7Ž¿~~˜Q5Á¾d ßgÖ¤û TŽ1ÍXƒf^q”r®î€}�üµ$£ýw1þ\Q!Wå þî}¯×œhÌØdMKFi~¤“Ý6%QÒÿ×2²Q¥¥_åv'’ÍøÖ22´ŽàHÌV½µ•õþ )Â땳$Ï­³VPC+ÅZã  ¯&VzC+‰=g#¼6-IÎõÙNê|“gª˜÷õ—ñRýTXår-Ažþ-ôX!A_ÝË^Xi*ôƹ.ï%=Bãžt©É—*ÅÀ[,y4z$}ûÉ·¡_ahÏÖ{GfnBÂkëavãÊ9Ä/D�vµ”‡i·êlx°×�8žW’ �5lâ x®(ÿ[ÂÀÞ^ø_k’dÅàŒrÜžEÄ3oé° L¡M�ãFº«‡±LI¼ñ+“‘üWëãú¶¼•ïûP©‹FÊeްÞ}Ͱ½ÿŽazø¢‘ûS��\$ÇF†g™öW rºÐجÏÍÞ{(X‰uwébÍ�k—åU |®òþÞzCðÙ0ù1«7D Ì ~ì Töï  šFgÇtÖÉÎ2À.e4Íý¤°7'FlûŽºJèêÀeoÚ¼¬éü ·ë¾ÿyäNµ2±)ãý[ A÷ãÞ¼ÏëõêíQ¤¼J]Œ’4Î&×§[ë]d¶èôI‹¿²¸Ê޾‰Ž."äûû`,ùUùÛÕL6- ’:š ÑÚvA>IG/åÕ³”ÕJu1>S»h¾¿Þék¾qø‚·oGLd4[ἜI÷SädcZ½Šwday/V�¨pC醇4î_“w³Ë±Ä¹Nà·^./YDÙ²ÒÊ„G«C‰&}î®§ oßí^eËÇP´=çÅoC·1¸5$� >i[(?ÔÀ€î\³š?÷€r¯Ã´�â‹R®2E’\.inÐÊ´zŽœi<šôbÍÇÞAº#tu9 Ÿ#,ÉÞ?qÈ÷/X-Ñ5¶F ³^.æD;ä Sku ²&Üm:–²,ÕúÐe´Â#�^’½ =”÷Œ÷‹ðu9=nÍ$8.'A™¨µ×àÉÖ‘TÐ�X9×Â%Ò(Ÿõ£d`>ˆøkq"R�µ°¿3?U‚ô¸¦p5}ž(l6_0?½c O’kÎÔòdá$� •à‘C’üÐ5ª;žJ‰²@Pÿ† üd÷Ì^J 1é¿ëa ÇbCAl+–zŠwþgjO™/F t�Ö(©—½�ŒSµ0î %I/vV*ŠrâNƃݫE–ùä®Þ§|r·_Iß»ú2pË¥p•«·nÞtw>ó~s0{ý×D•±nf^Wa- Íüï5Ö@-ƒy:ÃXè§ ‘ãlLgÉ 8™÷I@ÿi%±"°ËÚšojÐkñiJ¾hC¦<ÍÈWIßþÍo=¹øÉ¡Û –Êwy»7UY xµß÷/›¯—]�é3mWÓó’­ŽVÝ&JY-Í®åýl­}Q³T2†¾Ë—Ÿç CŠ£&÷·* º>!X”6lÿME»ö«¾v±hº¿ÈÕèÞüËÞÂã:ï^Ð�ÒP|¬rˆ%¦ðÃéÙ×.ºÔŠÓÕñ»¼cÌóJ­e.…<.\a·¥YÛõÞ¯ï—Úƒ3ÄmçE 2ŒH³~šv§¹µ@‰j†r ÏŸHJñyv˘‡5%Ç«µäÔ¼—É)œ¦]»ŠÀ ·£9߇»gÓ=áï;’š2þÕ‰×äw}Ú&YÇ Ê¾Ù­´²3¬0 ¿x–íûp¿^\RvŒ‰"lTÔSéüz›öôúQ7%¿Ž±÷¯«»_[(o4³©]BšÙ£© be#¦ÓRø?æ>”ûŸ"p ™Ëw„ÿ]&ÐËoÑŸ&3Ia1Òxlá³lÝ\n3# ~ûòõyÙ¨jv”ªþ>™‹ùÇUk™çœ'¾B…6IÊËœ�›âK|�lxÏùó½™ ¯ á…#ôai,Ñ„Š¨L­õŠº̓5£ ‡xH-´dóÿ¾XÀnfSUün”¥Êõ`~½Oõ´Ýjü{‘:FÊÜØÉÉ€xy,‘,Ÿõ³¹zg Ò㜧bñ¹èˆòx«RÚüpóþêx-¼êÇJbq£ éåj¼jc†÷ž•ñßÉåÜêïZ¦ ?ÌaJ±\ª¿¤­­=ï1ïYn9˜å_·€¦Ü‚Ñ´õŒ~òVõ}eä¾Fp@DW hä{笺á3œ %Xn^«1Og½úe37Ý¡|†_�¯ï—Út^|Å»œ®ÞäqÖ»9”ÓÄôš‚Ì¥Q#±{…eê×DZž�Œ5}c“QêŸÎ˜K}âQ� >B$ZUʇÀ°¨/ÏÇQˆÓþìÔd™ðYçoc!õÆ«õÔy„ë`"#ÝœSñû£˜÷ç»SUãS²Nd1�”I¬z§;ÒÇËì)z•ïÝ—àŸ!¹ùäÇ8ˆN “ò@ìîöaeä¡äì5»µ‘±æwÇÙSÍÿ&¹oƒ©¤ ðÃô¥ÚX{äæfàÆ`’¤kr€k“òì?5ãù«õN[ËœKõí·W'M¿PóG¢ˆ9Ûw+Äæãígª?q÷r;¬*°÷Ýe©¯°ŸA�Ò´~–ëÈ2!æß$¶¦S�Jç�× LBbŠÝÝ~BesGß®ZŸa—E‘—ÿXÓÑ«˜®0�àGký¥™ñ—ÞÍ´‡í=i²uj´zjÞ R�×¶7æyj8ùêŃÑÛ3ÁÛH}ð�Û (R<n"]> ØòÌh(v†»ù©6o•áì~ÿnáú:â°6@Ê�tбÓÊ1Ç= b ¥ÆäC¥±ÛCéŽFòÔ�þ4·ï�)g‡%'�ÖUjz•,^Œâ>¦ªx¡'G«EèÑôæIK 9uI±ÂòXþº°·›þ?FÔrrKÔlàè:/ä†>Ð ÈWÿ9Š,þ›M\;p’ŸSX±$Íî‹ ®ÝV µj†È¡ÅÛÔ‹„0 ßç</¨{éÉx7|�ù˜çnKôæ<YÞ«YÀt ·àà”aj¹,iE0cÝêy ç2V&v ÿ™‹îdˆõПýò.N²ÇañhžÉ‡DgºC±ý"ð�9}kS�†uŒºcKä›Ï¸oÍz�}[> ÚhÃJôÉ´k ˜ÊÊÇãD]¹œÉŽ f;.ù,šyÔÙDám|þ²Ö¸5, ÕÍûûë-wv ýÁ$nœq%¾ñz ´5ÓçÚR'Ïa–þý|£{[B‘¤lÚ ¬Ÿ»ûI>OÆ NX¸ôdÞó@/Ñ+Žßpåý¦æÈÁ© ”Ͼ„UÇ} 8œ¿?µCj“á¶Œ¢“÷CÚo¦ yÞa@kŸç0%žõ\ò“¸º·FмO{§â0(ž­ð1 ®’ÖWm=5ü>ªt )èrǽ'�‰þwò-õy'‘ƒ…!\¸ïû�ˆë¾o~`O~úó6”ü½Šø�“c'Ž|íödÈ‚÷…¡í³>–×’C佟ÎiTÀ$mN{’\!RÚ øZF–AIG>ür+5m /’­‰©pßô¡µˆÁ𪿆,Î¥9‰7h¦(_OÉèa«9Z;Ï^qd¡v‘wì kAwä’ã=¸?ýCæI5!~-}:ëzi*‘ä’+òÿÊ[ÇUŠˆÿȰªa&†w¬R¸œjISïƒÔõ�àÃÿXÏ1ÜÓìëÞ (K~äçHÕ²*#føØÃÊ$|ÑØvŠSÀíoGº¢¦À­0K>zv[.º¤&ÜM®º,ûÜ•ùË]¨uåjà@R?ÌàÌ·š0àëC´úŠyµÐLéžb(‹©œ û^aàe@—7ì_#(!®âôMX9¶ZÌïÖ kpZ–°=bo´· AiÏ–:ÞÈ:r)ÈJ—~~ìé�G†Yêò˵<‡’)•—CÅ¢ RÑb˜öÓ»á¬þ¯?\q@¼ˆóZ¤müœ$AÐV�®öc¹Ösøû–cBÈ ‡’#U²ÄñµïK’ÜÏ£T�c øã©u¸ N�«çiµí5õø'à¸váçF¸ýã[Þtà�x#r³^9ô©¸o˜©Ì�é†aºV†m·�xönW=?å®›[·¦W;fàáoêO�ÅZZo„G5Ð&p´Ö¢È�®ìtl®Œ‹!û”Ó@}åg+Ú‚†´Õl"ë‰L�HqaK²±ø¬tP|ý˜Ï“ZÄãYe‚ÐÔ"9¢²çEÌ‘Çå-Š‹Óý+sPHsPÞèÙ¶A2C0£GÇYù±\†ƒÃ%„ÕÔO’æ¾)bT‡�öN N||A~BxuÐ{Þ>= ‹ó°Ÿ±*b.ÁðWÏSq=vÜDð‡ ºn»ô4t�ô[ Gƒ& /ÖÞçœúQŸ¨'$]ƒ¯*áñ…ùåW~1bl, ˆz�’ÿÇuÅE^§TM‡ø Ãÿ£AÚ„ ^‰¦“©N¨Í<ð%Ù›–Gv®ê'cÙòf·lûçÁ;<ï'Ö΄²ùi�é§ÓúýÏK¢OÔÀK*…Ë*=Iã, Ég?öT=ŽƒÂ¥oÜÊÇÀsÍ^sC®Î§Ê⣊7õñIc ß­I~]©L5œÄ–WsÇV7ý#xAC\¾7©¡ðrÂhS_:ƒ1˜¯cf³}Еš}I/?1ÌþEáÞìšó:@:fbF €'þv‚í†&e¬ˆD�S Pl¿c:¢&J:˜¬²„=„²“e¬–ôJ%™Î(-…ºÊ•¦×p2@ã$saEL{[±FY¬z3·z£Ý¬:Ð$íÃ/pî�Bè!Æ  �nÉÍ]ª»Ѓß!ñ~¹F‡¤/œ]ÐÕ„$®f/—´ÿ©ÚÞâOˆ'—}ÐH²0•õµÂ0»g§¾d—ô—4OØ_jmÍ8'e1úêËã�Ö!Ñ]BÔ»•i¸T$Coˆ6x ü |Ê¡ŠJ ÷È*çÄŒ¥é>äNý8àiW£_‡1ôü<âÙš¹k¤ì(§„tœk T|)OL-³CÄne'¤Á tÚ€S9ºÇ.SËç¦4À§.ù\;FÛø±’Õ “7±Ž\óO{ù�¼V}àÞ¨%Jã¨àšâñq~¦¿DIô"ОEa Ÿüì›l\=COÖ¢cÝP)Ü &±‡h¯ÞRêuD:7nVZ´û^o±Ü 8ËßÔ‹El¡uô^¬Ê'5G{ôPC¨ÀIà©ï÷ÍØV¹º]­ZæõÖ3?GË /wŸ Mü¼'ðy�¢è8§@×[ÞŒå½Ó¥2ÞäÒHD™ ŒnŽ_(ë�¶ (¥¬G#¿›ŽÏooÊ]wWƼXù1­(Œù¶â*;G{Ôâ¯_qŠüÀX�ÜUj²Ølfši\dbªêÒé†nQe¬dñ‚úv NäùB+Ú}ò}°Ÿ+ê-�XG û;²E·ìw‹(Àýg²Ï–î¨CÅ Þ±+mLVKoÌûßM Í4žTx´ˆñïqÌZ�¬Uz¬ö“Ÿ ´Ì— øà›eknð‰ï9ËOtS ÏESlŸ¡­¢Êseïìl–ŸÌ˜ûŠ€õ–©£ð.�Rnn|ZzþRÜíïšÃwG4“·“�¥÷‘WÁ@î² óÁñÒødæˆ7HP´÷úKs2«<ô ÏNB@cþŒ5m/´<�Ö6QÎÛ;ŒgÏÛíˆv‚ÈV ʃ}s)ß·3ÏÐÍ•FÏ7}v7?yŸ6¡½OáIµ%;þUá¾Ù1Å#ƒGÔö}z)Ù§§B3 œëÓ•OÆ€õs¼‚æõÇÉcý›üJÊ_yŸé—> Fç+ÏS›>Ý}—w¬N»'lÏb\GWL|¿LŠÜ¶3¯€“ªËL_L¬�[9û̧¦WQ^ÖŸ�ÏõÙø�dj®u…´È­Ê€ðà/Ú‚Ú ³“â&6­xš Χ ßg� wÜpªËê0·þnÅž1Ú*$bš�a¾H3ŽXy\Q}jB~†ë”Ö_¹�Fæ7`|õÖPÅ|qY:�ãOù®[UúŠ}#¥/îV£ã¯²¯¹Gî Ï�ÚìkŸ“Ì;qy´_û—ý¼ ™oè¼&k‰äøcâç÷Ò°Q¸ï::eÁ;|¿k¢9öˆ·ñ»d¯Kp|;†¦@¤¥Ž?}L¤ºõJ8*4ÆÂ8õ•VºÐý•|9›ÔV�p�çø¢,(Ö´åÚKÌû‚²ñr‰V�Â<3x$ÓB˜¬Bt–²’oŸÝ¼UÆ’ýbõÒ©ñD-øTÝ6I´aª ©‘áò·tlè”Üè™#’ã—Ï— FcV„â�E?ÁÝ£¨\ò2¤¿y•Éæ9)¬Ÿ?\…7T{"=¦ª;xíÎmˆþ¦“ú‹GeZ/¼dšn—oÒoî×� U1\¾‰º°Ñ�ü°ZjqÓ~©þZ/5óãó¬œÔgW(«vÏD "1U´Á®Â�CK#~e7�”Ù’éÀ¥gxN¯�ÉG,dqÀ’Å…K/t- :Þ±üqÞZÕ§ù}øìöpîSí½W`Àeékßïx˜ä�Á`¢%½{x¢ìÙi¶SÕ�DŽ;l’S¬Ø$¦§ÙV€yWd'rO�ðµr›WB›Ðî¸IØóy$.‘o NŒ@ÔeÕ/¦U‘°»µJä~ÎÝ \†Dà r›¤J†kš]q–g²œÑ§4e_9·@ÊÍÜHMv�"€[†RgVµ#ÜÆ=<¶Ñ ÁU¬'ú0f.÷?‚û¾jlw’»¨|L:]D̆„ChÞrÊ4#{>œ!Þ›o�x?i%hBpÉx’,rÐlMö½e|lê<ÿ¸’)§š+¶K˜@_ü®¿í:k†LŠf½òm™¿ó§�Çg.©k>þ¼ùàísby,í37©‹ŠùI2~†»}‰ë9¾W>Ç®ß4Ü Äˆl.‰\?®ö‘ÙÐ3‘Ø0CëœA{©þNF…ERÐÈ3“–çÆ�¾TŽwLG TúôNçË@íãdvCÒÓÊt¶²‰×r“.vÌ[-T~»~�h$(‚¸ïþföòµe£«0} ²ý ´*Œ�Z.g¬qʪEòµG¦Þ›ù0Ý„œ/Z$ é†iµ;yæ=7'¾`¼š†½`“^ZÀûo(½[Fo�Ö×fÇ#r½­ô{i·2/$w1»^×ì—ÏCí¾ÚˆÇ·P®õ¢}!¶xDdŒ¬_ÚWÒçg|J’ߌÕU½)_M…³�Y{´fÀVì#Q£TŸ%,nfÞBá\%r½³—€ž8t »éõƒMÔ‚�ê$ËäÑ]0à4ÁPA­ DÕx¼L‚°d¿‡þ‘nþ¬Ø1Ïma ËëÞ=R.ª,á\.FÞÇŠæt(öÉ‹ùñ#Í¥  T©8-5\vÛ±V céÁpu[îö�ôl�àèÏÜeÊ—ø%AެË_%]° &�vþ^'b!NŠOÌÂ-Šùt$#z#ÇVr39'u‘ÿÚæ!�±[¬°‘z»I+ó¼’—ä–voÀ3U?(Ì©ÿn½8yòüRhµ'Î2‘TCÆ“? 0—p^ÒPŠ.7,nuä4x5¡÷X/*>(@NÀ¯ÀQ`d*/ËvªýuqŒ#_‰j‰÷“ÊÀL¬¯;zãP84é´#]C´êAþ5Iç¦òS‹ ,[e†8@ø žà!p—�\§ÿÎ zÞ1ŠRn1ÛÕ¬)±œ âÃß·³É{Íœ^*]T£Üì'¿Ž;Î'9fOÆ}#ïHyl²$¸Æ~1p¾A¥.Ê Ýìvf� ¨¦BtnhÆ?ãØ7Ä%׳þSl"…4÷Ï€kÆ”;Ölzt¾Þƒ\ÁóæähWR¾¾³– ±Ë{ÞûbדÉC„ͦó¶êWëk sµ¡¸�vWÖú†”ÝÓ�÷ñ*oÞy:´4û¨Lã5÷‹Š¡_4ž-”?$«¤âÎ46xk ÌO¬„9iü¾É­X‰‰0ìGܼ�º=Žæp‘¿çzë«”ôâ …}�¬T^Wï)ÃXž0ʨcʦLâÅvj²Ü�š‚&$§Ùç§æFpsôÕAO€] ºç­BKïXô¾@ÐUû0¥P}ÞÔjå²w�­v¦ñ c”`]0lè Ú¿/L>™ömyõ,�/Ò~¦äGɼà7Z¤ööÞ,•%Z¯Û—ªÁó8ÐeëÒ)i¸ËÚ˜Í�&=™A¼s2÷7=•<ÁÎümõ•R%NB¸õ|Ù�‰î­Ž¬ÃDÈ…Á¤W‚õónâFò ðK�jÝû—™ìÕ/€1WôN%‹¿ÉÍk ÜÝ0º]ZÉ‚"ï6Ú ÉÍk8Ñ“‰¶ ÅdájŽ@Á V‚ž_]aÚnr ²†heá­³( ’ž’•B6@‹¹{>¸–¯xÕî@ßGJûÏæö~ tQÚ*¶÷Þ=3bP`‡4a»6¸žoðƒ¯¾ð“…^ëP=¼¼ç¼óKßyg ÿÍó�jy4�ïû匉ûíJ²Hztk‡JüXèK Æþ&�Š] \˜$ˆ¬ ¨¬ ç`=(YpIû7¥Ã�~Ö@IÐC ¥Ñöfý Û29ȤýùáƒW^Ž™ñÒº„‚às’æ ³m“Ž^@2gfå!‘]U|×¼³ï!ÍM{&ð§8àû|ŸU[‰Öìɼ¯Öîý⤠µ1à< íK)* óŸúò‰ÖŒ‰‰�rKŸ¢ç,Ê¡W«¢™ÞB–D7Ãòw²dŠjÔËš…+ö=Á*-d{‡â'üåC ×+ª ÉÝ7šÐK\yWøö´$!ˆà9yHǺc4Òœ0!é ŸJˆ8�5û¡¨—èÊh�ã×Ú�_>4˜N¤•=(,Œc€Ãˆ¨\NÈ� wdW@Ë.ÓÝžûúfáv� …Ù�Öt b/îñÍ'=l¹Ç†Š·f(Æ'�(z§7zÒˆ±¼šgÏ:èi´c�ˆú°ãxg8˜™ñJLßwP^�y{ÑCý]/XÎt{Ü»&µßÔôz’ Ý•3,‡éÓüî {óX�ìT‰;¶Ùd8"Ê Î}cÝñ~Ùp�?˜` ªFHyà,²åÇ“áЗ ›Èä(ÄôøˆÚ-¥æ_5¢’l®ý]>ÿÁ…¸hó¥=ò!‹ØÅX/t€ç€Ù’;›ë²·žà?Ø÷S !QV¯¹©´�ÿlP˜v0îÌ€§°I[@3<×v Á´Ti£râ1©óðî\ö®u]ïgÔL­gï jÌ™*Ç4]žt,?ñòtF”íI` °�Cð8@íy“�VªÆšLϱ6=6sÿöeë/Ça…u9÷5ƒù4TV Ð¬¨yÍä6f c„7ÒŸ&‰7jíz>FqÖ‚xÙÝò8Kà”S/ |Wœî°Tji>˜ óu…ÙDFªó½éñÀ’JëÙº÷(‘Ò±”Ú.F÷1Þá™�päª'Š·ä>Hh«¶n|nÜØ&C•½Ep ¡3—;; pøÒ�…y1c.o,CìDÁoǦÏË¡=9)ν¨Žò £¾XfFçcã»)ŠRªß“c–�(C¡^š¹‰S=â1ë˜õ©ïw·«£bP}&Ãû¥ðóQ”@bJê(S�½ó&±…sù€1$½‰ Ê…ƒ~)ʪȔI™ü/PKë©RD�¬¼Î{Úimages/img1.pngìýuX”a×> SJ HKw—ÒÝ C§ ­RCK Hw C#3’Ò#"ˆ ÒHÌÐ  „Ì"8€ôõy¿ßûìï¿}û¯íq{ˆ ÷½îu­8Ïu­kM¢¡¾& =‰PÝ „……ÝOpûú_°Kª’®ÿ |´ðÅÂ"¦¼ù��•_x ‹KK]Åô9öNq!ÓÚÒe"QkÂÛZ}äõl®&F7¿¨¨aõÕg‡p*�¾dmkþ„v7Ó»xFÉYU¬ü\üù\*S5Y“�ÏäòæåBÆæ}Æ·œ�…+v…Ö‹ýúèä\|%?þ}:mnçß”Aøò_p¥Hê….BÏÈÿþ�—s*¿‚ãpÿï‹Kµ›Ô2‘‘@êžn÷ÿºvJOïcSþ¯+’‚m¢S}á›ÓÍ•µÈQ oÜj`ôëý/•Lý|Ðè8j5¥óW,8~dýe’}ÈãcI½n<íl¬ÔùÇ d[&5~º¥X8þS� !ó·×jþʲ ¼–E®ç¸âæû!X¤ jpWuô›ÏB¢‘4ä�ðyê*4Ü~öüý^Õî½Ò7„N^½xº¥)^hk{5wšHdñ‰™ŸÂ_a�¸¾N,äv½õÄá6<ÅË™è]@zUX�pHLÓ>`Sðܼj©<ÁïUæ�¡:qlJ�¾¨Äëš É=¡åox/k:Ò^ÇŠ ¹þje¡ ¢Rºõ˜üç‘ÞÿV—.+ûcüÑʨÿV|¶ˆË‡õËÊÿÒfcôwßîÿÖºvLœBæ®gÜßèzùdþŸ/ßcü:uÒ˜‚'ÿ}£€‰¤ÿm2ʉw£ÍØñ{FÿûFׯ¤ˆÿ_Ô-U¿61�tÜ¿Öñ¿.&ñÜÿz ·!ûµŒÙƒ‘ÏÄþûFݤùãÿý@J^òkµ×•ÛèþûF×jßü¿9Âÿ§öÿOíÿ/ª]¹ ¯=`÷ôáíéôc/øÝ¥I^¿N¡ºqÉíÅi¤¿ÄùEKü%ê·‘ÝøEÿ/ÿrý:xƒ™þ¬‹,^;"ë¡!Xe|µÑôn€´}ב}åeÕž¨v-à )4°çæïÍ�J2~µääFÆf´~ô˜Û…NK˜5vùÏÒùß,ÝÁ»Ð›û§áGv³Y¤o­(gFõx™õ/8>àS†F9õú'îAŠS®4~s.È “©„@‡ªn»XnøÁ-iz4ë}6\¡x1Î0Ia 2hѪÜ"›R'¸MP—gkãMøþ�Q›ð7u Íé�Î8}U›OþržÿtÝÇZZ™Ò÷2ûg˜¢°B ̧?vŽó.zM„ä¢|UwHûLôä¯3`´¼™.ôš%»Ž9{öBj˜'M‘kXç¶RåX�7·¿ø@S'-Bt¥ÕfVX»øPVØäeµ.±¡ϰ¸SêùRZª ÇÈ3«ÁËéG/6™N-9ð®K—óζ*}6ýLn«¾‹æß®�¡9¡�én³¸x‚ÇïsG§oÀ“ÆóùÔúœ±ÁP“GNmªœ!$ŒZÞóï¦NŽ@§{ûç࢖®»e$ö)c¹êÞ±ùä^)·ÒE£@?$ÂD6O³3Ø­ÿrZDG=õ‡2gü‘,Õâœ4ÒB­­>Æ�tþŸ!¨_Bºr°ÄŠñPœ&犕L>©Ä bB _oв: «Ì#%01Á8ëÞžôصˆª�z‡²× ¬~æUz…XÔùwÀqñç`ZV­J(�áðöt~ M{ø7"ˆý™HYxº…Rð½×£êÌþãÇ]¹Ï.õv`g{K’7SN9‘ ,øë \?¥v¿Üé¨L¯žˆ»�Xõ;SåÅë²R‚CïcoÃÿ£gúŒ*–ºïEõiïÝlÛÆ^‰|‰Œ!oë€ Xï2u¥“§¸Ä=ýݯm>éÂíÁÍûpE¬¥…á'72X’jV–“µˆ¿–Lg™!.ʳUélÔïœT zd·çâ(!{ø­Êd\�ú“ü⸱BÃNãî“�O‡ñþ[æDŸ~F³ž¤ú!ªÖ@=s�/»-æ Üv+£e �ësÂùë^×Q"HÙ‡úÆóP ¼Ÿ2âHË SUÑ@R¢žêÈ–èó •g¬Šœ×«9¾Jðä·JâooÙSã4£.OÙ>ÓX~èAð@âûú�¢yå±?ì*ü¥Ø";¡ë–1<¥gi©�0v²w1˜QàׇØõÞù'”–k�õ1¾>#í òRæaÿ¹øØNbaÎ.rN¿ž­RÔõ›kJ�-´o•U)U8�#ÆÙÈë¡xÄï‡*a÷V*¶&Ww<È üé'ngçŸ2›ƒ_ø¯©Ç5N\Œ49sô’æ‡E}{4l«.Ç&³,P柘[² í»¬7¦{‰ý 7Àë蔃µ »‘Ç€ã׸÷¤«|tQs…µí°o}¶fÖ»z¸´ ÅÐÄIX’qín±Ú3z˘‰@Ÿ‰ U!7ÇštVÃϰГgv¥&邌Ô&V<•¾bç.ý—Ž�’[žâH[É 3”OøÃBîz&¯§E¾]ÖHYñ�òºKºHóøxè®ôVß_¯¦#œ¨VÌ¿PÄU-a=_3) �±¿–B^±•'y*Ÿ¦%ÖÓ�î¹>ž*Rï7@lYæŸãN‚t8 —¹—XE âKF‹§w_Íœ@{Jùa|Y>ôï¯ÔÛ#›¬—Ïf«ðˆ’'hŽÿ€¤Î>㯋*污º;û.ò=þ1S+¾÷V{Y5à�éoÆQVÉfˆùëmêc«k긬ŸÚôÍn]G¦ÒuÂgÌ"°ôêÒ²PHm´_rùk;håbiúëclä,9Kòw¨¢ ¸æòVgòýâ°Ê=’UzUI´M‚yY%‚ hâzUÕ#vÇ«»C–_àþ/Dïj`mV ,æØÃâéÄ´jDšh3–:äQ�¼ï Hiýׇd2?¹›JòIñ0BÄEƒ½³fcESÓ»nûW”jxÛÄÿÑrúµÊ·�š“gOÿݹNW™”6àÁ))ƒ”@£"ƒßV@b/ÛäA¨F� }ªA‹ÏÖß3ÑeóÝK*N�ù¹›ß}—éXœ(öl!®Œ¥ßåϽ ÇnpË/„ïâ?à]ZDø•74Büi…ˆo?7�öØü¾7žÄÙUç@âÕ> ˆ�MxHNêÎÙ:�ð>®8I¬J*ãwj‡uœÃõÁ�ø?ÙHyŒ¶F®—9˜ç2»e–~¾â� ÉUòy mþ´O�cë�.Áò�Þ­9ŸöO…ƒÊçy=Ö xD‹D7܆×,ñN]âX +Ò;æèÁU}·Hÿ¨™ñÄ @¿Kütäƒ_û&ž½/à¹DǬp&;*Aê9ß'ú]Œ 4ºË—W�åÌýÿÉö××p4–þôm¸)ivXþ7Eq�¨beôJ34UQ–}`—œ±Ù@kOÍš…’. °½H §+ÉT,2„úy•¹G$O4€[ÒM)ì¸TúÖÿG(4yéšÕÊЫ®Z‘ßo’ÞLX¾Ú·uaÃ[E´Ä[ rQþœÎº,— š#clB<žcÉJ”—·Ñ™—Þ2C‡®Sóy˜ ”9ˆ ?©˜Ó.µxlž 1)xu«lôOjÍ¿ÆwŠòž…ÿP–Ÿ4Îþ™óä³—ëç+4?Øô³ù;++Žç˜Õ¤ +Ƈ\=p#.™òŠÀY [†úÚ-cEm±ü¡!u0ýnoóéÝ!¢×{”=ðô·øäà €K(ìMýtÂ,Là7äçdÃVhjþÿÑbe+ò¶›x y ΄“Xi-\2[8E`Uþ�»žü�Zue5x›¼$žY£&�É›ïNž¤¹S¬½é‡nfyB2r¡šzÏ8d¯8R\Á˜;ރБr’ïêOj‘伯–$OBLþØæ0*å�™.Ûp8�ZvÊ[Ðý¦þû¹8Ùt¹ÔDƒáx£¢ËÐûµyøÝ b! )öNÍ)˜‘W8FüÏ%HÏ.Ynù´§dá’Ùº¬¶Ô“ÍÏ´Qk}85ôvƒ‹COä ulɇñ&õ0 é‡dGóÈ9¥ËnUÂUµ"2q®ñËT‘Á„"šÍ´@¶”qÊÎ\îI‚bÅíÄpú×¥ø;S¤C Ô”N!y°A:×¹r!£õ­ãl­¡ßV‰æ Ù*­i©Á'{Dç=l#1ßnûûH©Ò¿ûͱm,›© _à^ï­‹ì/Í“Ù2)¼|Š%—Иjš9ÞÑ�¸ú½"fòöoÝ3aœû =~µC³!°¹\u®Ã4¢þõ…¨sùñ·b²‰¡!VÑäô”]´Õñ·N9¯†ŒpýÃî°Öûš¤.´\ø©²dŠÜçβoÎq¹‚#Xܲhåü��JpÅë´[7>gõðû°–®TžšMMtÝ­˜ˆ«Bà0ͱ¤_©qž‘XRÛÀð*XÈù˜ÜÎ7š§,ôÙô´2=À©Z¢çO¬|àú‰I¶_¤3V›}«ín „g5ËpÞ<€ßgš!Þ–f&�p¹…ˆ42ÖŸÿˆ¢Á°9knWU雾ÚÅ)¬YOXðš?½ãÇLºåp\ª­ÑH'XIÞLÜÜþÅIK9¼JÞÊ0XË®@…f‹ý \�˜RÕ±Z–þV¬�th?„pTy³ôò‰ÂÀŸ°ax½*D\ßOÿÔ„;”;3|~¦+ê^é•Ç>�Ò¼ 1M±:Qï/¢ŸßSÈn'F8Ämƒ‹:=¯\¢‚g�‰¿óŒÂÌ{æØ^Ä<ß1ü¡¦iõØz,�rl°l>”S ¼çt2¢K­WI~|ÆxJ—TôÎáÂÌÀWñE‘2}ö…b0A§ªlA©ä{-†‡Š¶„‚ ¢€ešÞɯ6ÁŒ¾³4û”¡UIíhEÊ'd¹n…ÏÒ4L õÊ>NI/�Gî|ã~$¦¯âë«÷ÿøæ�·ûŠêŠý'Ÿ÷&¨ÇâÌ}›?:{k: ~Ì#Oñw7˜tN5à”H¹¬`Ög<ÈK�ÄzU�‰•ª³»²ÙÏ•0lÁQ[²dà„áÝkC»õÍÇñ¾kÄßh ¸«ÑÏw©5›cš×�­¼Úv×Ë¿ñö"KBY?8ÝÍ�¦ „“%¬žð¿•PÁÒ´'=%\ˆ¨‘ã�y‚æ —¡É¶÷afìLö-‡tnJ”÷ •/ùÌlÀEÔV4]5PO0üè\BG!²ös#6�ìÉ7äÁd.§åcécL2O5ËýeÀÍi9ЃӈvhZk Ñ6‹æo"Y²¿ážõÆžz6†ÿØÓÂs�¹– >K…Atd•àÛ° ƒ›:+ñ&Z]º9mˆ0¥Ö•“½µÑ¦,ó‘]|€©ÉI(’Ü(>H=kÆËºú‹öËQUg¨Wó7JW¼6ñ!¦âÅ�ü8LzzÈ9ðd÷)ü FÞ‚­‚[Ï*¼¹ó›×k�÷}I»ÏAôáÄ/®�,öùtGŠÏÌúgô EY˜âøUxL—r<ë0KuÆTÚ¬ço2ˆ¬`dÐÇb–Þx¼}éšcϧÄrÞ¶­†šÐöìM}P:oÙ;›x‰ÏNžm­í”¦–_ÛÆ‡8O•ÓæÁ1»âƒ•(¯pAåS°(S²ÿÄ#q¦ér÷ £*#  ÷Æk…X}•‹f¡‰ü“ôµìe¼}ÈD=¯bÉ”~£ŽÅN£‹öºŠ#™!fhtgéQ˜øÔ}j˜q%û$ðHìÅ}•œ?i·òú@tþøoËÝ6�9„Êô:­Û0® ¬Ö¾‰T¿•] CKõÃ`Ÿ¨Ì»šõ³Cm¼cœï9x §ªvî–Ôûc½¹¿e«X#B&” ï™Ê ]6“Ô±ða·m GO³¯Uöe�­^å�îØ,pÆVc³ìã;P²èBéñ&ü§4r\©  ÍRY¤êŒ°Ê\ѧOgiåå€w�Ö Nk‹Ã:öü0Xíô»©=§û>tj5õ1 ëì¡….×öQs ²ÞðÛ6ü)Q Çu¿�cNªÞXÝVŸ)d‰ƒÕè]׿rPÉ=§r�6›+ºØá} Ô£\5TP�C€œZ_ÈÿF¯‘Ø¥il@îï$ ¾Ò9{êC¥ÚÁ5Lö‹Q„{nËFä¢~ŽíµO¨ø›Ô#ámƒoÏ1wô¥¡Ç4|„¦èá6ˆ�{¬Ejnå´†¿Çòë¯Xçï.½V—W\É!Ÿ¥2œWIÒǬ¹ ꌬ`¿ 8'ªb@nžv¤çŽb”*\2)[>ûpÃfÙ¯Óµ=“ÁøÆÂÄ“±˜ŒýeÕ¤Xe¬·@cÊ[ ©û[3éM<²t� Š–ßÃà¾byZ¥™†kUÌÙôÈ'O›é74MžcåÇÂ…BÝ×ÿRˆÏ>ìj“aó ©<5ª•~‘ýlÊJG¾NabŒ ÿ‹Ù¡wKÕ:èÏÊC OuR+úNH_*¯[»L¹P ÔЖžj†%�+Ödä‘ê9jÖc ¸¯½„ŸX-�»ï�ó<*Wú` Á?rÓ§ÀE\'²ÂµÓ…dœÃY;EÐ{”¹ÑG8.zVY-ürX 9ã+&ñž²*"½ý˜¿ ¼Ž.<҃˔¼æ8~f­»ôU,±|³¡Þ‹)݉Bh�à€ Cm¶¡®Cã6žM³ËÙk$€’¡Æóîwo!OßFN:íiœÊDÈö˜‰Í(Å{lÝ×ë:'ÿÖ€0Y_1àu™Ò!] $\ò hk¨‚k†*Ò—3ENñóµƒ{ü'ry[�ŒÖ«¥9îX<È¥B9ÃDÄ_¯¶ÝPŠGeww¸¯©ƒŽŸü');å`O±È„ï úD&ðQÂâ…©µËV-Ù÷±S�„‚ïõ)¥*Ä|/†`–Í…·5¿%¢¼a�]–M.k-î:%Sá÷\\×äÜ�ÉPÚ%ð…×éôÂÏ…ò#§ú7Ó ùæx>8µèË8®hø¬Úª7õq¸û(oƒw_dz­9Á\2¼¦ie¯i�áÑ »`Ã�^{«²³ýC?úv¡…ЦJ¥u¯8R•m>²k¡·Ã{Û…,?Íh,yÁ•|ÞuÓ10JÉ}ƒØ— s;I4å-gAT&ÓE}”dqøºª‹Šæåu�ö�€©ó¿€©³† Y%õ�R‰ÁYLü„l“¼Ìü–‡i¸îïYÑe-¤QˆMÆ*(²NÝêámH«°uÍó�KÚÝü( ›k½è—w­ÕK¼óô´s‹w×_ P”¶4ò׆3TsˆÝ팦)û’6Æç�UT?}2OK˜ì _ó6³¤{=ÇBHøXÚ’OB‹Dš^æß@àD±“G¥j*xùi:ÈT[òó“š%ÕKv—²gYO eêŒÍ)#D±Â ƒqv J•Ëó½á‰a:§¼=·'WéÞí¤K€"þqc2Þö¬O3�¯LÈ^&†ú΂¤ú2w뽉k—'@±?ûSÎâQæQ™Œ¬P'¡Ó< ]íÒ\J+–­5©ÎN¾l§¸)Ë’c×ïCì÷>yºái¥öS™Fû̉¨^k\ a:á°wÈç®Þ^�AÝÍ #p\�²ˆFƒGZ�ákþ_ºekË_Ô…P÷½S?bO³¯A¨ƒÛbgrc–g'ÕîÜ”Éɣ͞â÷Ž>ˆSV.ºåÚ™$¯7{b4õî%Õ4Âä@*='ˆØ#öøeaék�¯ÍÅG>þìóéÙ¶ ŠöQ|õbÉiaŒ!�Y{ ÆäÖ¹§›nôgl“sB(ߺ¼V?® ¹,zDø>/¸”%�‡Ê uíÑ«OÏ¢ê¶V†Ø¦³žÉ¸_©XÆ/g†$¡œ«ÈÚoó…“ù‘/è¹ÜzFqM ?œwúS¢^ãaÖ�~?ßDS¹'ý` ¥9å1Ž_½/+ÐBxhïn:ôÎ;IjÙû1’Ð/Çš¡‡e`Æôc]za£Œ^wõuGÆËßüÊÄm�ëµµ ¥Änsz“Rs2"ðÆwd@ô§ œÔ¹š“áQÜ‹ÔL‰5ˆpÓx·�È^‰"£˜ŸÛئ:|ÄdqÑØ/™$Uó”ån$LýÙér#!JÅ·×…º×[ÄêOs¤®¤æ3å0`X_9¸Ï»�ÇÙ�ýñìä”Kû&†ðÚúQ›2ÂÊ‹FmØö¢”èo†’ÛZ±Q4œÎ»F~Œ”æ¦P›Ó§é E� ’!ò7χWY(GHó »N@D”Fj¡FÆìy$¼Øßð¼)�£zqð ô‹Ó5ˆÃûòÑEmn9릔·õèqõ�³KÉ ;È�×N*¦çÜDŽ4YÞ+¿æ}ÓS'Q+(}‡?fZˆ÷,Šª’âßbš‰N¯h_v³�ÄA�“¬v×/†Ûr¹à64©U6�Ö §ÇÕZYä@ Š4u â=G!œø¦c³¬œ¹þ[�¸þ¡Ùz€|}:YwͪîáZo@Š�—×(ž,G$ñ¼‹?w�,(YËÓ«Tú©4�Ë3‰Ûž­„¢‹M{DåŒo!æ…�ýÑÞ>[šq{Ë®wœÉÁΣ›:ô4kdýed½JH=·L{JaVµî!àLIõ4w¢Wò{FŽZEèkö,“ÖÛô¦Üšu"–Q~ Ù»�ò¨rX(ï7—ÕšwÍC\Ó�׉ÿôÜùR 9¦16⺳—2XõM“•iŠ%]2ªÃ×c*Ž5: �™ôR…Ü‘Í#í­EÙ¬þ¥å’Øõ§EÍi*¤*>=ùÁ¿3ËSëÝ ÐÀw€¥Ì>©ŒÚ®ë΀¢¸²%†U§â8Èñ �#ždÙ:j•ö–)!q9D5>LoDJ­A�7¾X§y�ü¶›ó¯‘j» ^§× ‰�²HÙœ*þ®¤h‰ÚŠêäÄ�,róмbrŸ»�°:3ý-"•:åLðêÀv‚úú'e™°ëEF/¼ÝeÛ=Ñ�oÌμw^�œí ŸÞ¯ ý†z|p©-Í?Ü%ETà77W©P]›·Acx€/%W—&ƈÖäo pB׸Ìñü=üÚ_•#0ªˆBSŠËP,¨ŸUÃ�‡é�¹-&qYRŸÕ)Â6êW`�×�f¹y"­ƒ{‡’vHœ¢2u’À�êOÍG9¯í‡ rnyQõëê4ûôz®ẇ¥/8óSÖ_+¼Ú¾»¥Ùn“r䦽iê'µ‹Òæø¡J"è:¡mTu<ï@ÂØºaa¦Wåy¢p¥ó›†ò”A{] ã,éM´ (ü tm{ò8â^Dþ”LHŸ™+�½AñÃbb¿{«ÍÈÛ*o­O)ùsÙî•’ï©v§�*oöŠtÔJ‹@I¢£¦¶1ªÔ£ìùLð‡ÿìQ~µ4�®×ÌWlãFòNÝÄìFˆxMÅñÌÂÚ@ÃÈ0Ì�ÝèqOƒß3™ÎØÂ…ò§²:[Ðz½ç¾.²ÓïÀ˜¯,Fè·ÁR�—üàÚ Ç´#Æú;gü¨k5$-ùÁ÷ÌeAÜÌ‘Á3:dUN˜›&S�ÜDêXP1ªñ±}MƧÊjÍ`Ÿ‚Ñuq}•Ùæºwóü}'¯Í'Ãù×Ä¿ÝÏ©%B¦æ+Q~•·r˜¨¨�ù0›ã»h&ëb}Ç}ôª0ÛdX\kè¤ÑGØÃÅÇ7`ôgIÌí|ÀâG]¼u¸ gW ['×~îÄ(ôà«»ÃÔbþçFý¶ª2nöÊ·nªæÌ±×jmO,¯Ÿ‰ÚK|–Òì"iË÷kºh¿MƒˆÚïE;|zG®ýœÂxs�]<æ}xYT‘Xk¥ˆj ÉVDqRp™nÏ»?=æGïÝìBç¿»¤Ý“våŦ$w�Úükž[P„p¯=Ðd L=Oyq´!Ôˆ‡4g,ឺ|ŸðTS�Ya²êi¡æ~8x#.IË~¬ÆRæ²n£ºŽxƒªÝ ‹néEæ1…H^=+ý¤µ<Íí¬ اHüýqêjóßGyU 6�~þb¤Oñ™g$â)—›7ó¨O:Éi •)ËV •ûŸÕb‚‹J›2òج©C'"ä ¬Õ:逤‹Ÿ¬Ïr6ÞYךۇ¯’¿Qp™�†Å7é�§Îúómݼáywv�³Ü¶Öâ{7)g}ÚKP‘�©‘²Gj¥Î¼Wde×¹YÛæŒÀ’j¿˜�M´Í¨µyÅa Ð\ʰˆ0ˆŸM1S‚8‰F©?îç*Û'®™AÏ5ÙAИƒ�>Ifñýõ—z½°é‘Ûvzæsâáï…CäQ­ö H=`ПŒÉ+€cݱÊ2°7r"M=ªú0ˆy¶û¶íý{m.ø¶ÀûbFAõ˜Ta=XÐuP ¦¤si¸!$û¹þÂȺ©KF´ÇÑÉÿÍÄAUÀhžwdõ?.7e#†¤‡1Ð9~2ä¸~{ çkðKñ“À2‘ùžÔ^’FDAVE‚5¤00Éö\u›Û.uŽs»_�2F½ãîÐ>“Eµ€«Å ¦}r©'ÛêØ9\®%à|EaÇ Í·(Ó›óݳ-ó B¦ÞUÝ™Y#ÿ�ñ=gÒ»U·;r¥çŸ�!|v¾ž¶ö³aŒoaeÉô•bZÝŸyÓ±=!·ÝcWˆY$ºÖPô�²:¥Òâ#sh=Ûbºáqu%F?-�Í“¸—âGöœšàl|ã£W¿Œ‚§üp“¤ä•ÃÙ*ýCÝ%±—Ú0½Æ,ÏU;†It¥$–~c,œÁ…h1pÎ[ó?ßY”¡”Ù¼7¬‹ó qQ"f¬Û¸Wr³\¶@;þI’€ÛH¤ûXÞð´Ö|Ì®u’Ÿ}ëŸÔÏUºÍ芆Øoã7�«ù$-ŒÎAçÚ (<–ÃóÐXŽ�ù•þƒÃn`s5®Ü¼}ÿ^ˆp½°3ù{'Å7Ià‘ý̾‡ªÐU-(hc¤^9ÿÈsSü)|8=Bsbx¿êÝ(w¶§¥•áCÒ1©tψ.Õv´B²¾ºhh\¡¿û%F¦[AçòñÁ!gàKr][‰'-)þ$�?®MÜËÚNüi<ÌÊ�ê•àL ¥ØËfË×P!Êl9þ¾ý¶L}{*àŒ]¡m+þ ‰Ë9¸`ŠÁ›�^xAãº+»9R#Í[xK×Näv†yøµ%ñÊ8ˆÂÝÉã½û)ö–­“mßvÖg‰}êó`!ãÓÊ~7ÂÿV-â]奲,Of8Y/ˆÄ!tPwy/7Ý<³Z4H–¶çׯѪâÔÓ‘¦‡E¤Qמ×ÇZ\ÂûÞS×"@Å@ <ùìUJ:\gx¹ˆ®ö¹ÎX3ÍÌ <8îöìTß&¡O�Q[¶‘JsûŠ[ž”Äãé·wYêo›—~â,õ>þÓ ’j±ý”)DF©emç13ÕmÄû᥇Ã' OÙpº[·p8Ð4_Òá’Ìœ´�yÂ7Z“ wÆÙ”¶¬©±—ˆ\�ôä òÄ{ !ÍËXÒà¾4‡¨ºù5>0¾>,o4¿{Ä]ÿë•s–¦¡%àlíöCJ‹8׉UÞúKÝ×ÇYã'¥ÍÍÍ?§-¥f®)p1mU‡Èu5ШEˆ#\À��>Òï×  gdM9ª*ºôÕ™Ýæõ!Ÿ}(½¨’]/ä…-Û‰Åw�×j´ÏÁ9`�$çK¢)£¶(�ÏcfC'w§¯Üh¡fªö¬µÍ'‰aqz Cn“+˜lN-{a*&Äm:ÆÃÕýW‰ûϲgP¸–³ÐgëÍŒ`.Ícá¼´¢2ÍÒ¡\û�V ýÅÑï—ØïÓ £ßûÛÕ¸†¹µå#7À‰xºßøÓé,ñ{‡šÙŒ}‰STgæ�N!rÇž¼ë‹1AøÁ®aénðh«R)É T�^+ ;2“‡‡w©pTWVÉÁšöd…Ùc£Ó¼Q0´š£�4NÎ ß•þâ�dJΗN'x(ôÃÙXn[8uRmÏoR×=|c]ïø°A†;u•šáó;_D!pÜ7u´¡a")½Þ½ŠÚ|ïaA!U&mrò£©“.=ƒ]ÖP1ttºpqþe�ËÛÒYèï1Á+º‡Ì€üÜ+qú$ñÙp ­ŸàöÔ^Ù®Á ²U{‚ñ­ãÊ ÀH?«�xKžð–ë,çÌ7í[wþ’ÐàBÙl•Î'ðwü@9W.ƒ›Ö½E²;dÍcÚ…áIKÝnÚn�OQÅ=è-uûí'N¢ðù,Õ­ƒþ¬ŒÌ¼.YXMd²â×Â�/ÒgÜ÷²/µø.Ùó Ò˜X]ÄI›Z#½C¦ym‡gSŒníî€{�Ô¦2^)F&ÐôõºHÖ¨?{�Ûˆr¯C;U)AL8Ö)fö£{6mþ*÷’ƒK�Óv€NĆD»‘Åájíƒv‘ÖùxàØ|¥µ5ÆÁØÀÚF¹«º\0<â€Ð0’:†"~êúG½êåaŨÑ^fH�“Z±pI5òáLäG­ûØŸE>1§b›¸xÅWûJ•:? “žÎ³ë´ͬ»¥PÞà¦N.ù9l0oŽ ¬Þn>‚Õ 9}t…]FÀ~3€ ©öLo[ÍRóÆJ¦ªöù_êtùêm^¥OÃyµíH-}ÉâsÅ"%Ù»c_á_ý|ß4”¢æÔÜR>8ܨ‘镨Ué"öC‹%ØÅTd.'cÒ{!šù3m ÈX c{Äöíº‚n-/œådü®¤èú»7ž,=Z5wt‹wÂÄ œóбִæd§’ n¬ íi~“WvK7ôF¨5"|Ç·eÜ iŒ1̼,\þ†{ëù"ÎÝ9<Ø/�Ë·> ›&I, v(æÇ_ÖH<¡+2ÀA¼Ñô˜RB²ª^P=ݺÒÕ|Ë*ãö&V�qæM4 òÙ<í,ÚOñMY‚_a¿Z¹*—@J~-¹Ûòž„Ù¤©mô²íµ”¿&z�3 >–¿}¨:/& sIùÕü�àŽ›$ÜMI)Öî wü:lržkÔê놵�ìtáÌXË� ‹à¢Ã* )Së-†šÕ”KV"öὂ¹£†…â82<æ¹o”°SÝ-P í3ƒ§â‡�‚#ne�Ÿxá 16 ”‰ B¬ö²ÈgýúÈN*­ÞYcšHC¹»èÑÑLã¥*@Ïxº¬å)Ö ANøËSúV13€üåçø–dÙÁqÓ7YÚ€öž�u¹ž tÉA"�åâÑ‚úR³`\<¼YÞÇÓø‡ˆôî›±u™}L:Vß*¬�.àJ8nU™•¡«†1¸œ>:æ e¬µ·2ªãrCÝÝi ˆ‘¡½­ò(¾>"ƒ¡ãÙ/”LæI ç ö6Ù¯ä‹<ð…h™ró”‰ ~Bºù8ê f=™å$aRœ ·<"1ßÈdlOfðz a…:–{iKãÍ+3¬ª½iï[-NB½;Ðä2bòÚ _þ$}œKáå eÚlBì[H¾No&„ï6 nŒ ›à0*üž°SÇÛ‰;}h/s$åÈ«ã\—V×}ò§¸Ö­´Lûú›Ý9ô(i†wû£e%E5:ÐzÝ}(,®^{àzAÔ}FÁ3ÙÆ…þ+º¥ü ´×ø=U8"¢J{ÍötMßÉœ•’î:F}•ÿ‹1*ŸA&öœ\¨€dwgÕ?!$x?Ä“�‚¶º‹£m×—a� "jå?èܤ҇|¨MÓ}¹b‹9DLxdlÊÞ\6Žr< äÞt§9±úäBæ°ùú ©²\}îše¼8ÔÅ-ÿã¨�¸ææ‘ÃXúoy=ª@ôSü:rŠkòeD£oZ>ìé¾a«äñÃÀ6„à|§øÁ´:�:„�ê�Ðø4À<²_ér³� mͶ�Ž$Õ72�½w8ØüÙý€LÙ糸y°wNð˜ä¿cÖ5€uFÄ ¼šä�¾«Œmš–stˆÙžš qއr�¯ GazqNK •¹è ù«ÆKˆ Óp¦¢¤`g ?ÓŠ‹¿ ó3_·ü§�³¯mup‹¾xFÓ~Bœ“‡»`è#}$7TãËJ±ª’Úŧ[À¾š;¿(¼e^Ðë1¤ Šø€žÆ®Í¯Ì'ÊóÈÑa�a25hí}U—-‚Gç$&ýÒ-uÁiâðµ6|hBí¥þÄ•ë-tDwz×£Tµdå‚/˜Dâå0PVÄž©s‚¨?GœÂ…@!S�DŽç€õ"aùŸšÜMÁ\#"Ä€¤�p÷“$f±šVØHŸ5²ŽU±�V ³IȪÄ/ôùî“W(&ãÿ½fª§9©÷€˜Â…GN$ò$Ñf/X™0!jä]L(®÷Xôáúcð:û¸ªýà{é&5ÁG¼v:1@›å†§§¿™ÐCY­ÓŠg§ï’©Ï6½^¶*ˆ8½^yµŠáCÏy[Täÿ!˜‡^DH†brƒˆŒ«d|ᛢôz2Rí›E‰Åªí�ïö Õâ±!›ÓU|ñÂ%‡\Ûœ,©Åãp=+în™‰ø%–29Љ¡%êéØèZhs¤½ úPw¹$}ù›q˜{™ MÿäÆÔ4pf!f»lÑÐÖ„nú6\)8nÃNÝÞ¨µà3ãp)É£+—ªü¶ÑÿœçÉÁ:®±@(¸QÒŸèÁRww¸éßSn =]ê’ÈÏÙýèÔæ;‰kñÓ¨JÚ^GIñuîØùí´óÈѰ.Àý×g=xÍ”_Kj�ørËÜ;Ò|5 9~­ª¨,>á�úHoÜÓ@*Þbµ2­±#[;.ɘqgιUšâo¶J#`–³Ø?¯nfï¾pSlÇ")ûúñãœg¢¡LŸÒ‹Š¢SUOï8�î «ZÎEÐè—Œp;ÊA•Žü÷öÙ³Œö [�™búÙHÀ›ÍtTÃBºiϬ_æ GŸ­MÕ¸·W¸½T¶ Ÿè¨œvœ~zM¾‰X»ß„�Oÿ pžëe<8úv¥‘ú¸%¥”£Ã‰}C²Ô±Q%4ýP›%��Ú p˜dH>2”ŒµäóV¾ï�V¯ %HW9õ‘†™KãO9‡Jë’ÿM AznâÊ©WQ ±Ÿªzl¯€›Ø�%òø¶f5� ¤N6—qÑ®J‰¸ í«ô×ÝÙ¾¾gcxw‘YKÉ@Ãã-Gº™JɆKû¯›�WcÁ €'í´õíÌb[1Ÿ?\eÔ¢;6OqPYÎ=Jj™™`]¥øÊâòêùJÂ^rÍÄP䎛¥½{8’�¸°óVýÖ@úeV`ÂAEäU^`X‡<¹·¸�:u¼Œb9M‰�4ûB}.æµ@a×yÄ“9’nÔê³NžòÅËÿòv«Í¸<åÂ�чâ�Ô¼ŒÅÚx¶],1d‰‹xßJF«ñWìªl¯ 9œžDèLü൲‹¨i=bí~€§ßc¨ tÍ»ôR�"w�Ÿá eî+èÝžï“FÓ¿ž ¼9Ýu.6ô ƒ&”ØÃÀòJÜ>­‚ÃóZ ¡ªJ­‰(­—©Î쟻U� �|«”y?þÁGȈc×ÓøŠGýTJ’¸ˆü캌_VúXh}­×ñÈÞ+û•^(ÜN¼³®ráÙ[¢.Wî¤5Ãvc…+R…¿Þ¢ÛžRúM¢2ižJT¯rŠÈpÏ.ôÂáž8ÅûÝÅÔkf;å_vøö»Ð͵ˆ«ªC̘¹[þ�.ü_]W�Êô†'è;qµ‹l_ëp„Û§�âž”½ô™ÃÜ7 &Aëä¿tsãÆNÕ2 Ù�—Ôl_Öñé÷{} ÁM‡¢�™¸~º5ß_«Ä ¢[QÙ†“ÒGœbi2íÎ{sê´±�œÆÿÌñqÜfi»T~fX“íâf‡ÃèúÄh/�œâc½îשc½Ùí "]¸Ãµ+ºU±Â½Ì§²�Ãàmä¢ô0‚H™²ÚZ¥01úm”–Ê9‚M'p!åË�pK[8¡Ð-]"øy%6P;.ÃõgryÛÿüÓu†8Äû½2õild[,‰Ö¢¿Æ’‹~Rýã×éT8õ}¨žž,èQ•�Jp¸8‰Æ’Q÷Àcì|­}WÌm3P4Öë¾Vã.Eê¾3Ê» ?_ÝMmj¤‚êEëï÷lósa¶×TY?"ÎÊu€Jn>~ô8ãßS Ê(l Êès ê6.¸·›üžßg¤Z†l3דÿ@P¥Kú•âJL¥,övøE©ŸPm•�F”Å sI’ù)NQñ>;€/ ¥OEö+rŠ:¹žØÍˆÄ�×H �{œçŸÌúÅEÕÿ2ØüH+ûô§¹‹‚µûêg½ø3œ"¸àÊ@Ιë™õ<Ê‚ö;gí+:ÍmãÔÇ-Y´Ç]pÝóá(Ù©èñ`-uë«&½7¿Œ·Á§Í[ UdƉSñƒí&Zþ ÓÎE ³®°]^*Ü>êšès’] «mNX „ëÕDpNumüE¹´J²®ü´A­ªØec-— ýÛ5çÿôäû‹,ä'½/Gáé5YµáÔ<¿cQú*ÃCɃXoWWƒÎû—þNQOxiìÕ-”^lá�öÒ9 ¼Çoé,ŽËõW4~sÀ¥òÁúœ{Ž=�i…à0ÝbÀ°8òH‰ØÑ;vUnÿ¶o¦Øž|0ëÕÂpŽPº\dÚE{ò'Û?í*�læé¾:Û‰Œ—Öþf™þÄø§¡çî×pŸG‰â¯xGN±[Dµ8; T³AwéÖ{©Ÿneb’³üeZ_5»ÂÅ3N‹üyçjxGù•ˆ‡=z%[S€˜«ÜjcÝbyØ‹V¯ ˆs¬Í˜¹YÇEÉ âëRàfkiÇ�¤ Ö$Æ„'¥R"fD‚Ì×”_�"¾©] ”³Teï-õ² àÏ¡YU`A1ßÙF‚j¹vÄo'{5·ÐK^ÒfˆùŠc»øé|}k²ùxurbE͹ø8(-`5ëJ£HV±ûŸdn�=PÏ«™Ö ë“5˜6\G$^o>PýÛ¼ôõ*è¾^0V]Ô: ÝþøOWˆ$‡2KY]Ö’%Y¯‡›à{›í°èÜ«¤¦ŒgLp)ÝœàŠ$)ñ¿u£oy,¡$ý'(x²ôùeìƒ+¡»è;÷�Þþù-·:�ê�j|…÷[M]^z�«¹øµ‘<çP UÉO’Ê¥üb×<¼8§Ù¤ˆÕ™à©Éwmý�¦†@£²ûÛû¨€ƒ{î«›2_1‰{–ºó£ý %Ð"¦/švoGÊ~2ëŸÒe¦W<Ø*lÉ‹ Ìbž¬”�UÄ­‹Ã|Õ!óÿžvÅpØÀêù·yŒ­[*�žiö.˜âÙ�¬ª@¨öÀe§•­W†WµôCûI¯¶ß+Â�uæ~̸²&êg©ì|®¢à«Ï¬|Ùš•]ýI`šõÕ-›'ŒæšVŽ#œÝË·“™Ýï_n5®dË €|ªŒm6h¿7÷ÌW¹|xÝ–]÷ñð­ø%°ËD’žDùmÙ[C¢Ä†ï¹ ‰­Žáv¬S~ØààÝJ鉓aÍ‘”l=~Ó¸(\ ñMÝOj±vä!Âñ朚NÄ•‡BÞÌÔÆ›´zZ|ôUÎ9O¢W¼Ï…ÌßóFôä_-›Ò>›NäºüÓ<'yw�VDcW�›© gùD!š.‡Ãó9ˆç‡¿6ˆ« }ûRP¸SÞ+¥û2 3Cwº®Õ9a!À `Ze™¬m¤3Ûáo •¦rðo£¾ýLèÉ�ÕÔØVU™÷œCÇ·¼òŒKïõÏ|ºea*Uámªî¬Ù\2T>¦½þ·óãÄKZŸ#gæ½mYDŽ”)ÒÁ>MÚ=ÊLã&›=�&ktú ›¤F¾¯Údÿs޽ûê­,?„]ƹ]²l>¨7°Ç*ãFKY# 4gÑtþ^¿�ö÷ÄUÖ,·Œð/vG†Y ›É©•)ÃPÝÃJ‡a“¼Syï®Ê¨ç�œ&U~’:·nù÷^+Ñ.;h¨äª•UÏ6&†‰†~å,rb©M ¼—üQ2$^úeô£GP¨Q}t¦ŽË(XµïPkâVLÑByf�,CL⣰ûpŽ…D™/ â’ç�žÓô!¯×K…¬Ñ£è7—Ü[Òc¦jNĉ¶Ú©Yëç36Ó÷²‹b>ÌkO�Ü U=w9X/íŒ9ÍA|Âß§GôâÈÆO“†bÔ6ß^¿W©.ÁO%«OW§xùgp%û+�ò5jñéÇÔAá\a”B\#có>4—n8܆xm©ÓHÌб�– :o#sïÖ¡T…¢ /}òÔÐø¬k•4Ã]Aô¹J™·ÕûEpóX$pÏp0ÒìÖð,&f•–ÎÂT™!qtøŒ>P!_Ï*>mFÎa‹·.A’»!_^Aþ¥Ö >o½À©¬þ’²í‰¡uçЕ”ÓÎj¨o(£v™{Eê¢ &_x�­ôþÜ»:øÙuÎõ�þ鿪¹Ž¾˜aJܾzσ<<<àùÓ»©«,–EÅF] šåKU‘côpÆ)dØ2Ñ'ÌGð¥¾6{éifoH6•åÂùÄ ÆÓùPêMÄÈ5xÛºßûeR`}î�½·&…³Rhñ�i¥ýë^Ÿ‡1¹-c!„:ÏJ£ÜÒ�p†…œ²Â‘e Ë„W¾îÃ{yŤÕî'šã�X·@T?°²À”èwc™„ŸÍ>9áÔéEü2Ù\W‰nÚœš|®ëk k–9£9»pÃpÑ«ŠÙ00«¶ë_’ņé_RÇÿ ÀûwŽ|„ÀoÜÙÛS~ëKI|*à]Ž ˆ:?U\ÏóAYÁ3Áä…}=È�gºÓïæn�U9 o ;d;˜‡K~3°/ÔÍ^€½Ð^¼¦aÕ@ýW€R;¦@Å©CñTUÄ�¨þÞßF‡¼çºê§¨øBÅB8WdÁüËK¯xßåâaÞÍn3,ì¶Ã²ö µíöŠsŽ+ê-t{ù%SYQÿÎâ] Q‚±Tj¦,'™z†o9¹IsÄi)Œ„{�nkˆO¼!ñªÁT×#?þ‡i4È °©ë˜—ª�Ne¬ùZjØIöížræ@K¦fž~çhÜ�¤«ð½ìØ�“——•3äë+·/kUJ[šÁd¿…Fà^w±4YÈÞÑ¢×Ø|ÆÄ—85ø£ì5$ÿM}IFRû �7ï W–é͸¨3<Ë\ÀGDLG¾ÉfÃN- ãÑãÐa`UÈ+É{"5E7õ <ÁW�ã×ø™ž%?êÜž%@ó¸…²*fTñËúìX_Cv–L-`,â‰[NaCpZ©¯ü„sQpeÿÞã¹ø�9pïŠÛ‚üVX,’¬úÑ,«P²ŸÂ”ßÀèîzƒè?Ì܉|p«Ô;ùa“u'dK–AƒoÕ°yn³âIS4¤O,ͽªC`îtHÊûƒ26q5¯²5 BÐ_ Èf:çp+ËB`(S³H;Õ‰5~B](Á³1WÉO½½3¹iË`__ ö•¡/xïŸòÔ™×÷}=gÝ ×)YKwi‡*~´‹¼¬Ø¾SöŸªwBe­_4BbH†¸.µ÷9ü–_g ^‡Kùõž›©‡H€‡ët¢ “¶%Çë:§ÂøPCÇ’ÝÁ·Ëk-f;P>SJ#Á¹JØhì^[ल÷D=žt >"BÎð÷}ý¸1DßîB›è¢ôûœ‰õ' ³rt{… ý[À\3ýÈJ´_Ñ ø’÷ý“v'Œ:Ç£Ùš˜ÿ,%o‚2,qŽsH0Kí&ðÔ¦-]`]Aè+GØ×ç®Æ—:Ä;É3ÝõWOò4âÑšLvù1l¡xS£ñŸ� øÄTLšØ =2ŸÌ¥‰‰M-P!ÿz^÷x1?‰á²a:]1â—éf]�2γI²¬÷‡<{Þ/7ý�壣w*åeYXD¯Kj¦tMç¥=¼¢A‰ˆ¨ò}DŸž™ú2l¨„o”ûzNHÁìP4ôÎSg¶O6ì£l?çŒX2†-Qž'Y™µ�›q°&C?Ÿ™Æ…³.=°|;kˆÍ„I�‘>õH�x Ë[¦|‘×NK>û¥°OñŸÙ7¬‘/˜à̯¿‘z š—›¡K�=ʈаÎYéË*?�eùú@ÖSOÞEû£åGœÖªfqw“Ň+È[¼y3Õ*ý?«ir\Ì ^8.è–¾!x–Zm¯HhƒÈðP¿"Ûäœ)ûeÞ%eQ0Ø Ä{\‹/+í²gNŒ³;zÀB¹õ–ó*ÕÜàO?`BZøáy-º!·Ü.M*gÂé_9–Ž�JvI•i·í]¡Áó:9bº¼€—º©¿êw>Ë€@n»T‹Ò‘þvŧU-÷ꊠõ²�Lœc£2[ïñ’T#~jŒItzQ-r©Û²ÚAßÐ{ –_½JŒÍIËñ5˼mï±õÀƒ´Ì ·!ì�[.œ÷ü¿ ”šÐI¼ æZ-QêâÉB‚”ؽ �4EVãXE�\£¹‘‹‚ÿ©ÐÒß Ä²®’"ô¯ZÙ¸íˬMþÖÿ.£Aç¤?^pºM~b\ëL}xäQ â˜Å—÷±<ÙÆMVpÊ0öô)©ksoöÑÉd ”ÅE­0Äg&U�rÈêaÐ ýá™I ý³`KÊï°×R»Tx'©­Ø�fÙd\†Ü2 Å;3ÍÂõR¶¾û4‹··²$i>„ðÔ“·2�� þ�ØgOkˆn-EdŒ¬hÐ\ªz>2(ƒ¦yIÓ)gÓ è™àjæçüRÌO¹í  š¦; ~*wÚ¼ýÕEãný.é5˜:ÿ˜š?Š·�Ô}WRœ 3©ÿ™~eCeaüxZqä˜FÝHͯ+Þ-:ACMk%ïU|Rì¬Ö¤›IêLýüÔq5Ɔ² V5ç•Órh½A»­Br€ã…ÅÖÛ¶üßte]V;|bš4± Ò`îÉÑ-zŒ¢T�sÚ÷¹Úµ§F8Œ,f/¯:“¦~žl>‡Âü¨Ãäà9wͰéK/æÅIT÷.ÈýÃç–KŒêæ�ß3ñ%”§inÕŒ~+ò�û: œ}�|7ò©\ò`XážÕݼêLî"Ëœs«°ú—\ú¦ED¸NÜôãFV ^šPž9ã,+lñ¢D ¼–˜^ü�uºàÉ€¾èº"n "h‹¢}:‰H×@«YYÊC&è@÷�7¿Ì�â=.Q�/gH/þ-¢š™^ŒŠ3ØÕš)`,©Štl3½Ü:ÍpRŸ«o…’½ŒJtn{SxäÍ~¡~.CÉK�-㤓Î, ’]ë,\¸ëZU¼ç;@»Bm(Ó—�©Ï”‘iÏ-äa ¨è/Ĩ‹ù ¹ùp‚÷Ê‹? q /LX¤òcŸ.Æ òÉTè65m�QbÙ¿“¾J_R­ß÷nAP�}ß¹Xë>¿KWî>“e”nZ™ã8ÝT þ^¾‰x1c¥ À¾wlÿЊMfw‚uŠaÃ-¹ZúÖRo“EÚžêu^©PÌZ‰žªÈ™£|ÁÛÞÊ%°ßÌmˆ‡C?Z·î@·y¼ÝžZŸty%~p(î¸Gþ½Y€�1½ê>^ˆc•x÷«tq¿÷´ÿþA©–’™ëêñ°ÿ{1zÇYgþX†² ˜ÿ2Lˆò�˜À°6þÔJÆ ,äÕ˜À?@ÉÃ>Ñ)s6¬§A:}H!•AõM˜ú’1Òz&ZuÚÅâÿ™GdÊ FÛXDÓ,qßd“5Vp�PžIª}mh²i;Ãd¦´Å•”qèâÆr îS@󩿉BÔÇŠö§Ò�øe19� ø$[ L¶K,íËúù˜V\ ½&¥?OØ"ŸZd|ߨ¶]ÔNÀX'Jͳ¤’ui¯Dó€0!Îï á�ªãršŠzæbý‹Å,n]ƒ@ÓÂæ+6i²Pü"°ç? ©(µ µL(Б@sz o%ì¥Ê¿UÑLy{M9‡Ž ÎèûS ³eq”é¼YuïR p`Ï¡ÞY –e©^”¾¶zº*É0ªLöɈéS9ÃYÙÿæëW»$‹,ÕÌÚαy׈…�<Í·‚œ4Ö¼tze®çNLW#­$!š�¨êRºEËET«µ×çÓþc^; k€;3s¦¨B s ”þÑIȬáFÙð$¢~’ÏB/Käbz(=ìJ¸ >H;v �ãøë L9ž‚bžÌ>¥žI°‚ôbÖ½~„!'ôî¶–c�Ú0¨}Ȩ‘J�TëkÎâAsÓ*õÕs [e¼?¾´[¨ ¥q^zùF©�\`wÈÅè=­±B¬1õb¯£d~l±áû7t�{Ñó©®JÉMª»É×ñ)kƒ% ¸wÜ%¹qv€¯øF¹_è;ž|’õ*ÌàµÕ¶ì*ªp«ª‹!|–’¿ kr'Ç騄DË뿸ÕóiB… §ö¿Tyä5µï7LŸúÇÒ6YYʦSÀ²üÆÁ²ôRô2>s·ËUŒ^²»'ºw©š©ZõlM?aOáÈú”;ºîîÒ¡eR<¼09åé]ÿ½4Wš&émÞGó¢‰xC·¦{£’˜¦»� Å�ª`µ»sâå¥éÍ Þz6“Sðt#Y·n�}2¡`¼ì­·u÷°´M!å×GCZVº”{Êû¡¦e¤>ì…qëw“#·-ÝÒR~„–1"jF³·Rß{‘ x€¶Ñ#žB”ßÞFxz�Kº•rED°_%+R-C0wyàÎÇLjÄEBq[:d*ð'�?-+CjÂ`ïå6ò/ó¼g²>GÜŠb¯ÕÃ2'™>�¦þ�èã'�Óž¯õö5Ž·‚* ‹žØ·Usphz|â5ůÄáË2®‚æ¦q�¼©Ì4½c½ºõž Ñ ìÐû“ ß½ �ØÏ~Xy%l0@jÖz@VÞ¾pei:p™}mYX›¿’Ü ¬€,"í·Ð*HI—Õ)Ó‰&øSæp¾  î÷õC¹à�óŽõó³÷çÏîìÂúBFdØñ•ýöLZñéU;uæmÍ*ElKÔþF—î 3}íZ£U'®€dx�áÜJÕ/*9Ïo=Mö´ßc½Áw†ò´ó?|~լﲲó"`øâX?�Çš!à©×‘z¾Ï íRÊm6ÿÁ·ß¬ÃSoUñ™ „ø•#u‘œ…‚&8…IJ<ГüžšMwz­m½wŠy%#ôz�2£ŒóÄ”LI3€pÃg@ÄÍù[3v=‡ÝFçlÁm�Á@™iâ·”õñçþ¼ÅêËdŸGȶýržÏË�„ é—j<ÑÁïßßt»s4b‡L‘0�ø¯Šz2vÜ��÷ÂÜú°k4“:Œì —y ÝÿQžýL}¶XzüIå×çfÞï%�ÙçÒÈç!ÆaÆ­60A™¥ýí©Pæ!¾L´ÊúxÀEÄ!t¶ésnïßù$fxma»šÑ‡?Z áÁ#9vve™âŽ!ÀÄËnJíÈŒ�cõ±ø¢9{…‡9¾G¼Æ<€½#Û«‚éç3´”ÿŸOãµq€©Å¿ ¯’¶T Z…5‚6T¶åB\¯%ÃÂöäß3¶�ÚµëoµlùÌe…áWsOWÕ�zª,EkoÁGd~‰ÅÒÖLöy‘ü Ö·'vI£xj âÚŠVÔTrb°óN­3øòçMnQNpqš¶EÝ?yU±½míå7Š0OÙc¬Œ>„­4…Ñs"4ËÏ»4Êrô”L“>=ç:p+4.y¢þgÓÜgí¡ñ�9Æ«Ü`"å™ÍÆÝ·Ñf¤šC7óÅp¬·‹ø=õƒg�©Nè“0‡ýßÖÝÄ… M/”ˆ0}ý§·½ÁÁ)N2z^pÿg8ŒÎ2.rP˜X}:|»ÇW�’(Ç\…%NŠŽì¶@c8†�ßÏÔéOþ¥õ =2u�•t7}²>Â3 ÷»nð®®ÕõõÒ�W‚¶žA5á^öÔ§@äwàâ<zá÷¨C�aŽ ö!Ò lSöú3©¥“ðŸ¾øGxm¥Çê§£5pýž‡éž¼%äË�™‡ŠL«!¬)’Ý(Û‡aÜöy¶ë+ñò„àñ³—ßžpwï�0“ªiñx½õ­ŸR"T�ÚØã´+‚ø§-KÉe½¯”Šù zçú{Ð�bâÀ½é^éç~‚[Å›Oú´RwÃ'ÁaßgÄä|ƒÞL Y¡ûÊ~Úœè`M¾>D‰ýò͕pr‘Ü)xàØÿÀ¤JJöVvö¼Š@í§�þüBªônΙW�çç‰É]ÅÍL©St3{?Áê§O‹Ã®E®)ÒŸ±S醉ÛnlìÔ³b™™’ùç/ áÎU•Çã©6o}RIØë«eé‹:é.ðÐßz~ý5L"¼âÇEW©3nTarMEs*É#¹FõIŽñ·Úc¶¿ñÀDŽÈV½1Ö[�‰ŠÊûðý¶×ëjr ®ð„/Ê×AÈŒý§ïÌÑã(@Ž} ï¶:š„pã= Çç�©'©^ÆÞrm ™xq¯rd]¤šS·eÈ>–Eâ»bD/ž¬‡k}(fw[X“ù»ø¼üØõb%M=åÙý¤�vJûÄÔVCV~V-Û —°K:l?¶In[FI*è‚…N›žˆôÇnÜ[øŸ)râX´GŠÀÉ^ñÕWè{è!õØ“ÿŠõœô™¥á¦y×Ibxj8/™ÜËö$n­(k3«^”Þ3!žq2ÆN�p<3z¢€áE�Þ)Ò9¿K�ð…‰NKG;P’pì“¿†Ê‰_Ní>âï(¶Z Ž¶|¬‡gþn5’­gá²bDÙŽ;ðž;ǽojŽ6“Œ&‘¸þ)BlOfÜôbœšÌÔ§&0Âú‹Œ"@‘=êU½ô!�60ó—xqË#cÎ>Øø)1†eµj¹Zcîåg+ ¥[=þˆÙÈù‘’z'gúì&-mf2Vã!µ&Å5;3g²2¯9^¨Ý¦˜¿[62„ƒ^/$æ}èÄ d`9Èã‹¡9QÒÐû¯jóOù”YÂO#Ñ1É7=¨F-(!Kñj"x$©SíK°ï Â7õZ¯Uc4`Iþå–ˆz;6…x“§lDøÌÖe]G?çj^ŽVº£âן%¢B‚�_œ?!dе®-ÛlJˆSEçarûÕRuy½P’—w5œ×’ßSï®ú>¥ºÆ+Q DB’dÑåʦCC“Ó¨Œ˜ó÷Â<™ÜÍ‹Å-?Üö.–f:�éÞI^ÜæÑc!åkÛ5:bÛ�-‹-|C†¸w€±sÑ®íbIûÝ8ß¼{N$ÚÊqÉ4¼â"ì×û·�µx3E`1=äf:Ãg÷­�l€æð÷ŒÔ©Yeð³8æCŒ°:Ç/§³^ê‹­B�ªôÛé‡12v´½íi»Ò•'æWþ’od6³ò°ÍïiuH¢e¥]vÁ04Ó®Ñï8 9Kª$àT.QsBù�‹ú¶HÓ™¸þ9ˆ“äîŸ�âà ˜Nz_y³i.Œsú¾“ÙþEÚö°Åˆbò²²\*%�7^VöS &G? ´6ö7*;µ(N(숳îP0Ú«€d¦æ)ÏÞMËŒo1½%ãBOÇœ³þˆ `lO 0*¸w¬Ü¥šË&ãzú2ÁÓØZ¯(}*ÛDZrD)â_ }B o§ôðîsƒ`ëŽç·Ï·©½7©«VÀa"CÖ’_ÞZJš]Õ¡PŒnÝè1…Œq‹ ›…P¾c&±)œ<‘9sÑ—yг¤áñƒ€;SÖ¥=ò™fˆ¾¥dˆÏçÛP¯²· Œ 礦ZÀKd*@“òßóÅnž'Ðà&êèâµU½H¯oUÎDÔ€ `w%ž¶’\C,û¤Ì‰àõ+z&fIo¤£QuÍj]‚¨®³ã’~Ä.œŠÇCÍé·fýŸ¥²«#­°©±ä˜xûvQø“M<¢ Pöo@µÂÍ(22åcΛµˆäAƒ*aÉMÊåY^0“ÞüñPxîï@ýYwªË³� %ÕÓ®È\è(ÕK*�üÁÖ}ÄóûÞÁµ/6D>æC{z×ãS@Ø-$IüÂ5 ¬¸TLÄ<47þ›5qq˜#~h]#ð,ýb]eEõ6Ù…⹫²‹A9ÜCÕ.N;gÆBxXœ§•6[ÕÁp }ë'ãAkåRÔ{p¡ Î0b×ÂÂ\¬k¬Ÿ­ø±aWª]óáü·yÏë¸7E ¢ä Á&©L]V˜äø¸5Oû×Ä‹3#U »v{ Tx!¦x®t‡¶êÝmÞ5ØbA³ÿº'N:¤séyX|²1^Ï - Ý«äÚ¸Žwo)‡LÙ'TgVsóÐ',„#T±Cc)õàÕÊÂféŒÃø ¾¸H_!ÞMæf›žf‰û�ú`Ÿ®´1ˆ1=¸FòqÌ çøÈ5«ÓûƒG¼ÎÖîÃ|‹Ø.½;9ÖN‘,GU¨–"Ä)Èu!±hH•sÜ�xnC>¼9áädU- ½ÊÌ,½ù`η;=±À½§—÷:3wñù½ô`Œ Rùÿq‰Q¼š1•‘O•×¹2“¹ùM�j“–i³#﩯¶Í¡P)²©-¢¿m“ËPõ‹¡Ç‰£“"qå kp¨®f>+û†âÇ`šqßìYd”Ïf^ÀD„]¯Þg‡nŸÅȬ•ÿbf·cD•u)ù{ˆìåÒLVï è•f4†ôjuÄåþ:tn=ùŸ–T¢ ÍÆ|BѭΖãOlídXŠTç#ÿíVGzr“æ?z’$¤7àØ×ør ;€o|È-këîVÌ‘üÒc®"k xhùd¥¿¼}¯=ëlœuâ>5Ø÷}9¦j Ü+*‚HjÖrã 7-Ç〠I´ù µ;µ®s»¡7Þœþ íB þ}{¬®ðãù£ÁAUpùäR{>zíVYPÖ�ÖŃ Úâ,ˆÐÛI)çƒ1– ìïw4ÿ ÒÖ.](б O±£ ‹kû 5 ”[M$6ƒH‹Ã+jôû MïpÉ·`”%Âß+J¯Œ°¯p~‘t °�ÄT "Q:(v*]}ë2Úv5¦›IF±„Özl�èY-ãƒ]h0£Ž]Éd,j 5Y%Ô×óD+vão™q�¥L±[g ^ÊȘWg�ŸZ2 óûS“³ "ºδ¬àŒÐŒ÷g׎_²£‰º5…�.|)¶uÄåƒʳ_ÂvXü÷ÀÒ&ñ"N‡ÓL=ýªtAŶ«s°>•d»l2¯ôOñXÀøR¯ NIܶ˜T2òýì>JF4Ú¤â€Íâ•‘EÕWþ-¦§²c„»ÞIWª¾ë¦ÛÊ�´|^)�y28æ"Œéè�ŒG« èPÉàålU¸ð-ú „]fа£T¤+kwkñ¸Öäë·Ï�Y*KrécVöéÌCWÄÈ}çÅÒ’²wÀ³`ø÷Kö'c ã<Íb-o…Û©æÿ�·€£'´`�ˆ²Í> ÿ²ØbìC¯8�`Þ‡ÝW 8g Ü ‚;T<Ë [3Ì»Ð[¾ÃFÇå÷Ä寡°°eÌ@¸G�]“ºb¥35²ŒƒDMÚržÁ·©3ì[š\±bZáÉû¼êÆ}Z”UÖ8îr.–D[ãêáªd¥Çƒ²Ôèï¯ë #3¹Õx;JcÓ+8ü3Õ ø�¡·þ ‰×f7Ü%]ÀÉ sîLD15ë¤+vuió&¨‚¿nˆ½!É)ÐJß”Ír»½ª½I�—§šG�jsþ•WœâÄ£€`N�£pÞ[”FïY¶TÍÂÕë.–œpDxñ7)hÁ׿ð…Ýݰ]jy€Š¿‹iðKÛŠp�š%ÇgbDPJ¿´c0<ï_H4䯙þQŠÆƒe¦ërKé–éž  µI4ù{�,Åã‡ÍƒZ¼‘A¸Lñ~=§D²6�Ëh‡mV×fsZüw+ÙÆ†v•ý(-£åùæØVo,zàì(uΑ*n†MÉã¢�>¿Z‡ð|!*Š�¬8×ë1tÞ½Šé½Wþ¿£U  Q­M½ŽÌ©X‹ð±ð“Bø§yÚ_ärù%ðêì�ø…¼æï]‚ž_ç@UÒw&¦ß«þ�ÿ'0íˆ>’¼S¬~5ú¨0'Öç³âÕ�ÓZ̤úê² =“Œî·ôª�–ëŽ l¡ÓF–Í]evl� ­ž3ñQ^û¿Ç.ŒŒNŽ·×+NÞ³‡ó'ɹâp§Åc�-79œOÛ·lª”ξÁX—†XÀ˜¦(—õxN%É…A¾\ žÃ«xä÷#ˆ›¬Îµ�ŽI}ËRe–+Žú_èúa{;Ë쯨ø´g³Qþ-.z$Ó¬µåüLç݉ۂ‹t>“`?6€� å|ÂUB  iºþcc}çö8þÚX<üað}Öû…€åaºÔ¡z�œÉ#‘£†“˜`‡G’ .]ãn˜ùQ”™ª6°­®1î“k8Jù¸CdH+»)¼.ÞOÑíÉz]&ì8‚æ–þ¿ÏšHP.€HúUUzÖ|Örò3ž¿5+t°Áø¦Æ ø  ñ8ü̳ð¥%‰n…«÷Y‰n¸A;²ñ�ŸÝ9 7yžž×ÐôK·´ŸÀ½ï€±W±L)¯Xã9ºÚ ¼²Ñ^VÄ‹& S¥…šð�‡Ð–/‡q%éAwu–@MyÊ6�ÏJ†.›èˆ4ákÜϘ‰Ý üÖïlzî�%{tá áZýU>;ðê]WÝ|1Æ)«È ïÈñ+Æ'4=#°Œ§É¥ì¯œpQ…ëíK1mÁîd˸ ;óD8䜿¢…kr±Î”OAkïG™Ø¬ßêÈ<BŸ@í�Âï5µì¡EŠŸ¡ œû£<6Ï~è3ÈJRV¹áìàëaM¬¥Ò%{ðP6’ ±8Wx/lsÕ$s×JÖ–©%n}¯<2‘‰H«4òþ¡¦²£o3(DUw<Û?–ß÷ œxYq ¾ÚãŒB$}öy4uí´:c’;6Lc߇̨)©Ÿþú‚éÉØù¢ñ4ÇF¼Ÿöe2R6jzs$ oŽE¼¼p\‹ö@?ŸyÿŠûÕ…T48÷†¥{„ªo>?UŠ+¿\/öÈý�Y€ÒeÒÂà�½ôÎHÌï©gú÷÷þ´Š'`�•Z{ àöç/^b8ý,_rkä–ªŽåŠÊ8ãªÊ'IJq]Ðåã.Þi­³ûÑ¿™z²'–€,ÝH9èf)9P ˆy¸ú�ÐãÆ“à»3<úÒž8»äUø`Jäp•ÔVü‘²ÈüÁ�kw]Re …ADŒÅ.�îêÉîß缩—îus^çjåˆ i4Á¯û[ N=(r70ìÐ¥,'¯.|:4§ÛÚÞÃøß+ÅÛŠí.tP‘¨qÃ&¿—ÿøÑK˜ïP»ÏÄö³âkÍ�S~U5¢õ½VrÆÌÚ`<”$éeÇH´ã° ­ç¸îÝx–”ƒ…â G%ãZ_Š3g!.©mÖb·'§ÿë¡%3Ç€‰§ê7[Ý~ ؤ¦›åNø)Ä�4×ÿ@÷æ$•wâG¦ëL�u)P|šaê‹ÄÓUÆ›3ǰ½Ð_`=HöF†i*È8÷A·ÔØZœ>q¦Î„â§%‡`Jå9×âˆ1›…†(4wìÑ«PÕ¸O§lÝÁ{`ýlj<Ü:Kê²{n÷&(Œõ¯™ªŸÂµírDè5ŽP¾€uD¿(0`Ê Á »’M6H~{3…U¥ôŽ~¾g#êB 3®|z~I[`‰¾1ÂÄJ8àyÊ£�C¼ž~óKMÖÓ_xã~ýè¹öF'Âi© }Üž(ŸãÑ‘¾Í~Ï‚ »½ò¢½QŒ…˜Í=Û)(˜ñ'Ævä�EË]”wÍ.ÚÞsðf8¨¡<öÓÒÜpÁC«ö~ÆLÚMÄö S‡ò„³·Ó�ÙÃÉÏvèz™õEü¸Ñ ä º¥N„�Kv{^I‘¿yÿ 1¹ƒ® nœ¦Áž©|Pi÷– {Eú®°%zPq÷û.>÷‡ÊñB¢Õ-µÚcU:8î ²Ø�DÛ’û%w_1IDê“?^¤×úT0WlÉŽ«ªLîÃ7ìªÒÅ—»˜?œâ7ºéܹû˜eÒfy;ýhhÎï—ÚÙügi1ðä彃õˆÐ‚ö+Ž‹«„’DŒg¾""œåT¢½ð „⯤,Ý=6Q§T�€»íߤ#/žèGÊŽÕãà¼Þfû\Qüƒ.ö6ÕKÇ%]æ¡öo•ƒ„I-­ü¬g’°J˜àf¦…Fw°[™–½™-‰Ñ8»8¤†ô&Y–∥‹JûyEJŒ”N|Æf€Ãǰ"æW7ûŽY‘Xg–Õú Æ;™,ÈñôÏ©G!2ÎôzÀâå‡!·;5O‰¯Ùg• Žû/YgtŽ&¼¥Ô„¯$ÆÓqå%B߆öø~äŽô;¾–&¦êWŽhF[­þý׋A.*ùGr >òÊ›)¸IÝ�d—é<õU x„Êuä“–Õßò¦�WuÈŸ;ðû�é¯?vÞdßÌSæ!l4*GÛ¢úaÄKœˆRñ › �Ȧ;?¨W—…”N§¸°…:áŠnH« Õ�ÛðÞÜ‘3›‚â{Êü™~2è¢ü!¥¿ Á«°÷›Üž�µý”@–͇{ÑÕìI_’pªÀp« ‰õ&5(–¿ï„Y%ÙEzY[)}£3DmŒã.uZÒ2�B)ø1-\à†fãÎÈM¡uªÊ®Ì^¢‡vÎíjÔ‹Ù²_ûènÜ7 ¢Üº‡öî} Õà«^tÑ0ÚqŸÓÙ¸YkXÛùM ¨ù œÁ $ö `Ä�­Ïl7^BùØ.�#àRFoóíSݳ/¦œøRRÌÎ%C!c°Ïf·q^W†ùµÒGÅ•¦h©í‰«Äɋƃó-t£ÛR™à/ãÖv)Û¿‰žæ2,w‚‡Ïió½ß‡À[£‡7\E#r¼4Á ð¸ µø–ðÛ7­ØkXQ÷sÃoÛÓ”#C iYOïC„éáî%³Š•î’§ô»ßÓ”âÚ4’jíiû%#¸=f,xs—X¨®&›ŒÓ ñ—‘ëXºšã|cað´ 3Nì™èÂz‰ ó4@Ïí²²*¥­tð:³ŸÒ¾F0X“Íðg“‡…q†“QüЪ’38}ºÖ ²ƒ5¼íü¤²Ms–VíÅšš´éŸ’™Lž">Þ°’‰>¼¹ÙÔÇvS¦«¡ÞAÈÓÚ”§…âLÄ’"PC‘&íß^°i�²®Œ·i.6*_œp$®é� ¤Ã%¤+Ê#ëÉóÜêô¶£†#]ýØ©” �oLÒvb¶Œ® ‡·¿3�݃™IyÞF“9#ÍîÑ i¾ÉÝŸE+ÖÆª½ ®îÚ� ÷¯ôè{”B]«÷>>—zÚJÍXÁ .åcüˆ­³-Ô?çä ÁA ã"yçbêR$Û[ª4ñ‚5ceß½¶kàÉKˆ†rOìâÍñü;m {wèÓ{HÉÓ*$®g }/¥œ°¦Z+1‰\çÄÜëÚøµ½¬ìºQÐ6å`ºüu¢åžŸâCÞÊrB»0\>/•W%Îß8ãkE�àå‡Ím…u¬Ùõ�ÖÜf&¦Ö” òœ¥àÜNÍÀ›¸¹‡W�«¸å—ëê K]z(›�&î ��ÑÔù¬p¸;NM¹È'ALdƒP�´E¦7;Kº¡.Äy;Þ˜ÿ·¹@z�=C†ÖÍO¸Ô–žr{R瘅í:Ñ aQïÚ›ˆº” ‚ž IîĪ!S•°hÑx�Le-ˆWÔh€ôÍŒÊ�ôÈéGƒd.±.Em‚½�Ð¿É M˜ˆ£¹ØûNHÊ“Õêâé€ús~émÀ“\+gs÷Üñ—<7ôô žâÇÂqÍYŽ%ò®ìès2™*›¸~ÊÙÈsnŒ�Úfh–©Ã‰Ã‹„B ú»».3jkëñŸúÎNô@ d‹{H!²›že:Ì¥]èZl®lV]zD)Án“æ2ª´°É(~j™�êl¹†—”�•&NöštehvX|݆þîä+’ÃßàÏÚÓü ª6cCÐâ0Š·*'–Q/V¬vú<}¸}é<Áþ-GÃBå{)‰9=iÀý-…á£&ª;ÁeŒSŠì¡ôޡ‘±€YL¢G¨ë1"Oò*ø·�ø’QÖ+ž<Üê_ 7„…úÝœÝwâ@Š›·¿t™Õ‚î2O�)Z2Ô¥(*»r”îø1"Š\C«7‡oN©Â "B5S ßL77²ùs¨oÎÃß Âʼn%4Êêµò¥Ç0 ýð_ùïŸþÅzº™=f~!Œ Ré[D QiX@ €e[gµƒ¸¢tR�3HÇòRµèebžšØŒ=eO-P&£|\r.sÖô�= 'Û¾[ðC‚Îä¶Þ«/á§/K1èÙŽÉp|ÀÛ'ã�]CÐ;^q¢[²o>ÌT€u¦ý\Pdo’{Ç ¥’j‰{ú‚fOGk(ÈŠYÂáÉ+9_ß¼ñ[ Òüܾ‚MŽì Êj]Íj^ü” ×I?Ö7‰ �5�ÝMS$}IÉlÞžo÷W¤Í$ä w_j\Þ/ßã/š—ˆNÞµÜ*¦r–¾ù r:¼9©èÌf_ªz>*š5˜Âç_±¶„5”f7,ØÁƒvÉcåÅ…p“ƒ)ïœ4NÐÈ2é6<å©sÔùu¢ÚSmæ1µê¾A:ï�1Û¬i~úš6åÔ©B^5Ò—¶Ñ ¿jǾ%åTV�¤_Ò<œÏþs¸‚«û£­=É$mI«¾‡ËŠJ G'ñI°©–ë“õ.JѪ@š}5YâÊ»©z…âØ”U¬8;>H? òØm¢XdªqPÙü+]ÈèfJ{ {9ƒŒÝ8ܬþñ~ì¼e–ˆÚÅ{êá-™›1ì£wׂnVˆîý ºK€�Äéû3‹)²¯í±e*²câ;*ÖÕûñ\¿GHk{_§ n¹÷-üÈzÎJ”ªCäœqI³ë7ûù:ü~Ä›3ðzª4C’3¥Õ‘ðü’Ö 4…X:êbë,៴oGüÒÄ8/lÛ³×Tví¥_]þ˜Ö;öÒÉß�´Î„¨(w-˜�½CýÖ¿-É.(çAŒÂ}ÆZ¡c\¼­ï81]ÚÁ©7}h†·ðæìÉY™(‘ü>HŒJzÀJa 6ÀI[Î4¡½¾Y¯æµÕu©ú°dÇu© ú÷yœØ�Ò9¥ÎõÿôL¯»ªæ)ÏR~ÅA[W”wÌŸq,-}¸5Ä’ÖìåkÄåìAŒ…< ðz’Eƶ bI^ÿŒ¯- ¸ñ¼‡ê’+ÀüœÒ¥tñ…Ëû¨e­Î;$š-i€ÑÛä({öPÄ'àÆfƎǶ¿gÀóÙ¿’Ãó-‹lïQ¢˜q¬ï��´5ËÔ@á [®/·/°Ñì®þ€´+Éá3^Š Üª@|Kæ[“EÇFâA‚7e¾*aœ�.z­Éôà»Bñ¥9>¼óe�"Ûˆ Ü¸Ýæƒ{J�„BÚÃæ ÿ~øØw‚9•Úw·n‰Fz²ý´ª(Ö_+ß¾+üÚo3$Ö 3€”¾„Ê8Þ4{Q“V–XeÊó\³š¬³}S'‹’!ƒ"8tîÊ?…Ÿ^ñA!œÁÅ.~6cË“ »a?ÊMAXàôåߣV†¾x;¥Ó_øqþ(• g1‘ÅEKûðÑ+qpžAY(=u«˜­,>ú‹ÝŠÎìùòu¹©,½TΦx.¼c²�ÉÌ9³äd ¹¥§|ê÷%€(› f&¼˜ø·áÈéæµò¢o=ˆ¬çéŽ� ½»Ï%\¬ÏýA)˜… ÜÏärŠcÅ6¹äÝiG±†…Ü  !ÜõžIód¢éÛ£©˜Túº•‚ξòHZû+ýç÷þHt�Š`‚ç?ÛP¢,q¬Ï1ªôKH�S÷KžªwÀ “Іú›�¦´Øß:DkØ[Jrè†}•ôœS?ŒÑ�õ*�kŸÅõÏ×w“êÕxJß uäœò"v�]2—–­¿4ÊO2|�ÄõS÷†háGÚÝOo`�=U‚‚ßÝCžÙ‡¯«jAä–Õ,¯"%KÞ¿œ(RæS�qvÊí"�M3\oè™éµSïÓ1âb„ç`öš�F꧆­´þi{[è¬Ð(\�=3íòË)&sç¤ VŸjôgã¨ÊG\êÝ=9›éÎÍŠ³Ÿ8­¾�uÖµL-‡Ç”€©œ:5^3õã ‡øôkY�Ypd÷oò‡�C;Ч[˜úÓ ÆkÓ®¢ÃÙÙngãàZÚÔÌTÈ/÷¤7ñRØÚ~ÇAzƒxe\bìJ¶®8ÿê¸&G™ ßìY=—Ë…g; ‹§ÓæÑùP¹R¬èµŽÝ�V`õUÊŒ¦A©9B¿JϾƒN=V©ì÷ª› ¸5zxð´ý‘ÒÅÜé%�†1rpñ,æ´y­%dúŒ3Uô�Ë›ÊGª’.üv;^/}Žk©8جOÐøƒì±‘¥h+]á½ÊºÔYÎÈ‹šM¥‡Qƒ $c~Ì_•EõL–¨Úè¾ ½˜Í|»1p«/RòiÓ$ƒ8½Ö™‰Õ,=¼H³èWÚ²Âb4†}kÛ^ã4!�ñÍŠɟö‘5\�œøÍfbãõÛY4Ô2z¸‘š@¸ªK-.Ž;±[ãKZ¨ßºn ¯ÔS«Æh3–Å�Í‚ßo9*ðË'@Ò‹€K‹€ôWÇz˜ßFî²q…,sT8ž4u;5•œÞ¢'åÕº)ÝÄ:–²·I: #„pÛ…ïïc/d¾ÿV?�èi}€÷þ뀬¢Ç Òœ�~‰^ —²È¸�”òùro7j}pÞ5 k;à>’`h’× Þ{ªöDΙÝ¿¿= ]®EkÜnÕ)¹�÷^õ:Ñ“ÌB§d: %ưìÅ"ƒyº›”gïó1i1–™ £‘éÇNðlßVR:g(tà3fa†.ˆ9•}ýA6äQÎæŸúpM”ò29üþ&ãÔí»]¸$¤AZÒɘç⑸Ð=C®g5BC§?>ÉïÅÊÈo}· ?|¾Pwk¸ÈG§QÝ9MIõ6}FS…†ë䯦`§Ò¾J� N¾ùüPhWK¾“‚ù˜¦Tš=a‡@O½‹ú»…AmPª‡¯ç{³$�úÊše­€Ï~�¡ìíEÑ�)ËꈶÍ!5»ùÕ_™t†÷T”.*å†ZóºŸâ¸›hRȉ|Û¿‡®›Xÿú7ÝÂNe¸l£#q3j쥘Ò¾1?ý-ïx¯µP4Ï“qûTÃÏ#êÔûTðÇöùó•;H-_†�¾ˆN(‰õc[)FãØŽø«\•Š /|šÝx­)3¯6aÂsU÷�Y¦y@\4|^D!IÉ«±«ÃÑ(Ž¡“²?Ë+X—sùÓˆ'†º]V¼ U$nc‚ºmP0p÷ˆwO,�¼`ÇN<¥—(8=XQËŽ~ãퟔ«AÁ» Bì;Žýì¾÷Û å!áÉnL°¹ ’w1“ñžÿG¯ík–ÙðA×I ·Ô2@j5Þ›<•%s1õ3z@b]FØX粈Œ5za=‘�§È %üÛ1§±¬,_ðÔÙ<¾Î�€µ1åèqú²–ɼ/ˆõT~àU8ùŸ‚ÒU¿9b�îHCÇNäzºç5‡dÉ0„MÆSlB Ä�¯cóy^V+Â_4¡Â­ì#DS¯2G^ ¶á†Ø{Äb©$I ÊUnÝUPÖ`¢�b?ðo…ò±}*û#…fÄšŸ~~½Î† šmôk– xÇ%ô\[Š)�þO(x4� ¾‚ v+ÓÏõׇ€¢&nú¡'±Tæ¿ËUI+ˆ ·—+`¬vʺ*û g™ÝƒX§ .ˆ·{3äã9_lf�â%qwKΗ g¦·~œÃ<ÈÛþ[Ô-½‡Ãh¾³‰ÐÛÚ~ñJdp딵 FĬÎÂv!²à¿~È^ß*k'™ÈÄ‘Øøb—s+æfûׇ «O%™6·˜´f±ìÈD/ûÓw¤¥±4u8îè&ë¢ú£ìÛo/?·Í aOúh 0÷Ä .4šR~ªµSzÞ2ðËZÔ-e�tïŠ&ú”¡]ÙlS”s³rm.”_—ÿZ:¦šºËÆ{Œ>pr*¤p‘Ë�_ ìJ ót²|ÄÃ\çZ›ÚÁ¨ír× ë�?'¾Q¶8Ž�ÈùÍÒ¹Ü÷uiÂ_×_“h oó[)üJ#ýJ }¦èÍ—E9šÇ(¯€C®‹Ö`3ràå©105'5Ž ·âýÊé"ˆÔ,7\WV8æEúçÇa9Q<Ã×äVûh�¡J^Ôå~±‡.­æß¶íD¬�{Er°XÂÉxÀx±†{ñ¬Æ•ЬÔʧý-†±íŽÍ�Ò +cÒ·´.fú¤Û쮑ÝÖ Ã'j?ÉûdN9áyÊ„�,%:ñš\EËjÁ!­2K÷þ4¨(Ý$P¡XC–èRÚW0uQªäús‰"Y«»¹c\uš[*íñ‚{UFÞÂÏÒD<êMß³e®¶öá}'ÿ¬ªgtO±¹œürúÉ`ͲÜO×É D÷G(Vv±"ÿn`w?¨”b²Ž#Õ•E‚µ–¨ò‹oJ•—š;Ñìôyà&b!íG±@?”ZÚ�L£yáö§_I­ô)#üˆ¦$Ú ×ÿvé8ôÒB>æx˜!¶H`㼈 ý—ƒ¥»+òC÷TŸ@e A"al¯H[‰öŸZlc¯,[™X±otÝ-1Á÷×E½„'M�X‡OQ>ß/%ûÒ �b_„÷`ÿBú9^oNÞ¾]†äît˜>Ë$`ÜhT“¨ö x�µ-É3Ý�+×É—_�ÇÑ ¥ {†›› cœ½ìjž hâÅÀï–®kwÔÑÏÇaè0?¥Èrò00}í¸i&¢'xG“œLA!…8!jE¾x½•Ù|ÏÀ±/ŸoA¦poßY~Aƒ En‹½ŸŠ *ñû]H{YÄÖX꫆$îwSV2X¤>…lf¸�D�Óü¯‚Ô–dI5R§“óSo…@6}Þ�Ú—NoР붬—O…~~„8&ÿöäèQÐ*éý^:¢|UŠŽ¶H¿ªW~þæ~Ã×âŠW\ù8‚ü¿ ¤é|ªfêò‘xKbø…HÖŠîùb½P@m®°ä8Ÿ'bQ¹«oOîÌþJny'éW³Öົ3uô]Zx JXQ ÅÁõ¢Ê¾˜$¬hϾjùZ#P½ýi$‰Òë§ðØpÁ4¼ Ònb¥ÝØ%Й%‹öI·ü?4,VôÿÎ vbØýü6‹Z–ˆDÂ:'µzw‘Züèº ó—8A&/+uoSÊ.…a›L/ ÚUs ·G1ârM0Ý -‹°ªJÜ8+ ­Ü•‡°ß�wz"ò4¸ŒŽ»å GÙÔY9EåÂŽW”y—£@ŽÕ Ëjøí2ö®ž.�¼Å7~AS nªð1Ä„á¦Mã;ôwéÍw/¨RþF#£FjSY �·Å¼HæNOù:l¸Á’8‹Úv~%Zãp¿O Æ`ì¬P ?èñÄë­§[ŽáS›£è¡äµ‡ˆGRýëðH‹ ”öRÐü6)Š1¦¥vø„ù‚·é;ÃÞ.d‰åi;÷—¶(Ï”ÍTÐ6üðON˜!œ&»Y¸9å$è`#Çšó¦“ùÃéÄRA´>äÕ {ÃNºòþ¢ ÓBu€‡ B<þÞÔ�|w·âù·iÔ²h$â�ôÕè¬�­ ²‘îÞS[`‚“Ñ_–*™Ú¬‚õGc&·>“ü}T8rïW7ô“ˆUiw¬�'åo›~íÝDG�:EþZ £Æ5jÔ…PÄ>{œ™ øöö73ªâ1U¼×S¸e˜AøÝà¶-/�üöÝ&†O‹8Ú³¿äÅÝêKz¨æEa8ççÉ{Ý„]=�¹X5 Y¢•ñzó{§å8ª'¶òÐG�C Íâ”#6ì¾Ä[Ù¹áÒzLLcùyŒµ¬-–°Vhq"`$ìsW†�WÌ/JK@êU¥Î¯¾ë.‚ñ‹yçÁ?ç ™oã(°ö™'¹e¾ è¿- Y »¾ß¥K<û�Õù-dã»snõÊç0 ãP…–v^@pHP�·].Ú†~iM”—úzµYa•ƒ-Ç ¡S™ÀKÛ>1[æÐÇìú##É ½È¾üLàL¿KúÊ]?Ö»³7¯+ݸjÿô:y')‚ªä>Ö3ÖVU[¦òiš;¿H(×HûLÚ?ñÖ ÕG݉ÌlãRâ—Ã0qwȨÇÇ£¶Í?}…îªN-Õf…ìcTì·\ä¯Õ3ºÞ¯¬X²Be/ vªaÖØƒxS¹ÆT¡œ@’øŽøßŠYùœŽfýOg�»ø/rVÑ}˃°—*Qh “á2„�V™M,>Oì’w‰fÉ%™{«$ âì~NŒ<¡wüå™ŒéÂûÓ�é×¶V¤b%ÓOm”…tv—f}“BÏ]›ŽH�>KÆ TŎȹNÂo“ÿŠ'Ô€ÆÈAð]´6.Ïë¾QG¢eP¤Áô=@aí“t€›ÊÎ+šöˆ¾¬øéµRâ)Œ‹ã¾@²áQ¾ð¤×%ꩊəГ— ììneÞØŠÇ ŽìîâQ8L}­¯-¾�î<–$Ã�Ô¿eÀÅVÍe/YF×[Fê„ÌËÑ«êe¿ÖÄâ(íºMx[,­võ§°¶%Br½`+»6$Iq󼕷w©7Ñ�é—ÎÿŒ c�ÇédpTdµ(תtb´uìû ^¿6òÑW�5"ÈH u†åùeþUôç¬Öÿ[½eìékߨÚI?‰®iúöÍo¶“CýȦ"JVÓ%·?à…O­�±Þ¬Úc\%nc¡M ;bñ®û]¢ËŠ­±ñ7c’€™æ*ÀÛêI2¬ÕÇ ‚¿�_j„q›©%‰©œFE{ä�šAÔ Ëxdy¹ v¿S¦¤6ñ6}3n©ÊâŸgÒ´˜_ÃÉsUóäÙµ¯DŸ˜_\âä>³í“.Lá oà˜B›±âuyýHU&Žyõ�ùŸ=C{¸›IÄ›A›y“/‡§žŒK/p Ó#^�­ç£ÎÉÃTòI%P„>¼¯ƒå+1,˜TÄž¬]Ø }ý¤¤ëâ«O1¾õ ¬÷)ƒ‘I+©¬Yp–í†~@R=ã|dQ—ªßŸj8otçñ°]í$Úù/s)+m£+Y,¾âcÌ¿ƒê|5!ZL¨¢îT,¼ ™ÃIb•ð2öš[釪nRÙ3 ,<^ÕL–Þóõy8%é�Fx�ýÔØòÛ[Æü9s±jÞì&Ð/Ù˃Û^ëGÂ0X’iè &�Y&0Ζ’ë©C†~o€DÐ?Ĺ µ®5ì º¡@ß›OLjæ(<Æ›U·!Ì2:©ˆ’~Ìh³Çf‹N•œzϸ‚£LþÞ!!‹¿ðϼp™¿øKÂ5ó3-�YŽ™Iqï0K…˜ÌéSÌ^%úÎþRã>ò­åŽÇãýv3¢Š ½Í?ôr*£1jÚW³ìÄœ"Þæ'‚¢j½uZP�?]fªÜ›zzGL�НjÕW…|¬}SŒîBvw¡ñÑ–ý:†aN8Î &ðÍžŠ„ó,o.¾�–¹xH—õyÚ½w)ЕîŠÑà ±H–âá_söP Z) O›È½�ªr‚À¥¡´ÁÍÂF{ßþ¶õõ…žÝêÏÄ]nëÛ+ÙyW~øo¤Sïxi[?;À�•vhx:Gz"ëá+Gæady7,¿zÐÊ:5ñ‘ùć{˜¾B½£¹^yíåwJ†1,ÿG×V˜E?ßÐG‡ó½œeKf¼=q¬‘•±órÒ×Á'Ôã«ûR¾‡xêIÛŸ�DrA+9ÂP4©Õ�/ëZÞÔ½jq`�ÐŒ� I>B¦CØËI¢“ a*+?DÇa ¯ÝÅ™2ÞÙÏÖPŸŸù?Gërc,;}|a8§r·S/ï%zò÷¬û@J9Lzò É컽‚d’6ĹIñ@ͪáñS¥#8gâ>ê¬}Ò\0P�?ʇÖ@\ÿÛ¡#šÅJ#Fò'Aš¾­SlvÀrã|®d Bu÷V d…^â‰Æ-Ëã³HLRÚÇDÎmG Í}A">S·U¨›¦›f„ÛLýŽ5è£X¹Ž ä>%d EAÁ—ô5:þœ�i-¨(­PÏøÇŸ©ž#JÔkªúg>ÉÊ|búÉOg=.‡â³Ú 9È"Zv¦ÅÎÍQ«ù—ziÞ IòÜp §ëw«A¯ÁÚ„PËÓGg¿dS¬MúeÉ\£ Ýd÷hUDrJ¬Z`]BPï4aFÿÇê0‘ˆQŠi“ø¬Â¬Qhk´ÞÐøsq°xþ2DìC�ÔfÙá2©ë˜ k©Gœ§K梁•Í*UÿîhWå‘=”àor™8±ÙíwHs’÷¢5)è~€ïz®tâ ÙCÓóGôä�ˆšó|ÙxÖ7£’‹0zËWRL{ä:’"Û×mÊeP*®œô¯YÊʼn_üò2Z˜‚’qU%wP,P3&¤˜‹=kÚïìÖ Ü;RkàñuÖ„K{•HD ì}ºøQК€´Ó"ÑòVq!äÒk¥@ŒåOüZÈÎ ¼—¾t{­3äkO)w/yu;%ˆ¢ÁÇøØ¸þ›ÌÖ©9çìpÎc˜þ›ƒ:�Ù<¶t‡µ¸5DSLL"§ý—ù}9«aË–ý¸¬—*ðÍúÞEù÷Úûwò“”�? ž#פs‘Ddô¹ £$?|£7‰ �³·;RKfUŽXœÁsgý×Rx¡:�­ƒ“žÿxË·ÕEFÿ,´.@ÌìÖx—oº£ÒÏl2‰÷d‹xk;$T·†ÖúEƒbånà>ÈÏSR‡[Æèb\^Z/˜ÈëÑ/…Ó)Uå{¼5. GRËXÐn%Ü"¸n—z—e'2�êßq®‚jAÕß_>ÿÈ2:}!Üâœ;Ö«é)à“�pLËÓ¸çÝø�º³e3ºQÆ&_>½0�`ÕâÌÌg ]nJYþn ºI�<ùæ°+²Ø’m`Þ'¬¸X{™ýʱ¤®i0Eow³£!«®lÚ¨LL=nÌÇ Qm^�!Þ·{õ½bryaSÉÄщwA'åPŸ«’ÃÅ’rÍ#"v/yM9&'·/ýFœLa§­ÁL5ëFøoQÜ�×[®éû(c Ö}cÙ å.¯Î�Ë|ŠÒBœúuŠ…*Ù×?›�¤,Ñ5e.ˆ¾m¬–Vôp^=‘-زeô‰m'šV@J½ìZö±Õ(Êu¹Ì‹�fgÝ©§¨ücâæa"t™xŽN( (”áŒäíÖb¦µ—·C¹ÛŠ¢§Ä0ŠÏ) =nUc_=ˆð”þ¬)Oq/cÕ¯Ãul•œOnI"y}õ}| 'Vûù¶Â©fÉkÓ ýLàç¹xqŽ�Ö<«ãïx oB�þ²ïÔ5Áæ|Ñwðº¥×uU^[SDš[#iª�v× §jÒ‹ƒ'þ£LnØ™aª¡ÇñG·éaÇ鹌ËD¯ØÕ­]½éѼ Ù$KüÖºiúëÞÙ‹­[Ht—ÿ:på÷J2"X¸£�©þÉOÌÈùt»È!óq:/¥%Üä)dº±åû¥Ã§*Ú×¶â«}ý®Ñãiý0ÃähìÎî®�aâ«F÷{hyÛÍC‹¾å§Úùõ¢X\q�É~ËýË|¾3¯Z�ht€¿5Hr½FµÐ�ÅFHc�àÉ›._mK;÷@K߆f(‘Ÿ¤o+#ÌÚ2CñƒÜRcë _�˜Î*}ê a¥øÔÍÖ˜jzAþ,Î6Õ~[]­š�ǽGʃ0Š­–Bf´…ó£d6ïl àúƒ¿¹Žz�êüÀ}¾‘e–˜ßÚÀX˜‘H_ bY% ¼·6P~�'1Í_Cú­ß3Q›¤Wѳoi?Y‹Œ8ëýœÂ y�o0¡áØHSØ2þ!ý3üï/½‹š0IƒWÑ¿Ð)ÒG7zOd[ƒõK0¶žg8S¯L6ÔÆ¨îq˜õ´û.^THù 'ÒéÅlÍúŒ«„pæ-²„~È3LÇ©DËÄhPD ,óµ‘í?bc^9ÓÇ8×)˜o¬)ì'Ö2��æã#ƒ4PÜcn°à6�$ªM2x¼SÀõ$ê£/”쌞xo>µÔ¯X%m|”~™¦ª¢¾ƒ ÃJôi)‡°/Oþƒ¦ïHE~„Û¦Á¦ùêa¢Ì)z"ocTˆÂ�­îõ‚�ŸlÇ‘; VT‚‡%¦25ÿI¿5´1-¾=¹}ƒØþûÏË;wC|ª5möo2‘FwίÒLµ€å+Ðñ;͈>äH·u]Ä(mˆƒÔœ+Àȸ?iˆâ/§;�^p6w”>y¹Én4×//ÆKf€F ;2x[Ý>F£‡¤´�-&¡#æ ðó•K¶•aÄažyB·� }TÿÆJL'¥Š~œÐƒñ+ב¢ðGá'rA‹_ð_½µfTnWOô¬S»{mÑ^7ß_¯-AG Il>Ç ÙtKeÚ‰Aš ª�4Y8n5â§Lî¼õ¯?NÀ‹jÑ`d"‰ðœOû´ÐŽVÆÕ-Ó¦´ˆzýM™ïU¿;/ðÏV5’À”§(‘ƒi&Õm>œÕ8w@[ˆéíi¹vn‡µGï˼ŸÁÊ7GmÕ,K1åIrå:â®h®55²L‡kD–{D~I? T¸ø¬y&ŽÌa«ã;“,iÔç>\‡È«·l¨¥#G{y_gVu¯J8eÅ„µ¿Mžìw°j ìû¦Ø¦Nà9`Û*‚•+õÐé/"@uÙŠ.6äm7žóY½þ £¦ -¿5ýHÖr£âJOª[ †mÐ]E:ú5 ¼Ñ1üËKGU¶°‘Ãên½Ó3çô?Xq'ÎW‘W›µl°TOÚ²F©˜3ß´f¼b']N:[-»kÀú\ñD(𼩽Û5�Îà”-¢:2X‰Ö¬É.‘ ¥� ñ}Ê©-Ú ùx`ù#{ Çü¼Ζ²¿2yrp{_jFf“nê.1ËP¥ÜRr1xéP¥ÜšcØd€Sú`Sˆ®+ÖQ�‰Ú›ð�fœ½_övþö›ÀÁ|<^žqjR:ðo>ë³ �ÂäA±²êúq¼û³/éôJ QHµ>¤K2àOse”ºøœ~g¾F9¤r‰ß‘9Ÿgä[*`7ÙÿN#lôtÇ]¿ë´G%�`}gžÝ;Çd_Œ§ ^ƒ.ÈPË“ÇcTa@8Ã/ù�i ©úùý’�¶çCî|�gùÜóa_oËÿ´@g�ëŒ3k°ÉÑO²ð,ûrxý´Ëš�¥Nøá™òä µµæÆ÷ìø÷–Ê�}_æ<ãXG�»„˜G;²Î�å�§qf8 ô镼ÎÓýÕœ9€9ÉjÇu7¦ôŽ’åùL ŽÆðÏF1TØ]Ÿ1Þ¸�’~åeá ûÄU^á€Â©ÛÜÎvJ ÷ çqh»,ËX Ç×è§Ö¨l ѼÇjÍÜ„å4,lJ5oP>ÞI’¤yÕ.n÷º”-²mHeZ|íÛjý~˧q1) ¢Èç'RûÍÉÒYôâNë#JªÓmŒ©§ÃSWä‰ U�b[ˆaÍÏ\ÙÈÉ#mÃwŸÚ›FôúDŒ®PlIqÈ•lBªºf8Á×% žz·ÄeÉ{MÔÕ{ÌtR�Ù#Õ¨—Iô�¤�‚¨�¨; ´Ì&{x¡)Zu›ÎÜñ¬!âb¼OD¨fçö»4vZ4þ¡ßџ˜b îw¡j·þWô±g®�ž²t<êÓ9•R÷KÃ`iä‚¥,o¥Œâ Fè*DB"³–�m=&‚¾p„F�³Ÿ>ß,ó2üÂHše€Î`UÍÇBU¢ÏÃËýžG!å§“sƒ}´ ¯;b·(»Iþ4MÕ¨lv"L°8¦Þè$S‰ˆ½J\äbKª/jPA»6£á*8Ù7€÷ºúM|«q–U3zg-J•}SÝÔ•äùd/Üï?ªa©ß+¶f�Ï>tÊèq HúLóžgD1º/+$#¾¨´)K ›h»r´Î«îJÍ6ùœø)Ì[¤r$üaJêjL÷¶L yc¼Z‘U†ôkª¬dÞ`l¼ÍùüÙ*G”yù奈…ò"–WÎy)Ic¼ åùPfB•“�6yËtöü{‡lú~Ùì1÷bÍùÌEµôhZ…Ús‰1†uC p×ÍŸO—éê¶oŸFã Jß¶æ Œ6$¼-÷~8þíÝy¶þøpÔAÿNA*.•šKVi�;4ÓØ&±“+ =öX'Uw"åÁ#(*—Ø%fÅ7+  Ý×6ÙÍã {ƒýö^ Uª|þاK‚­÷ö4mbr^°ñKá 5ù–Ð$ñ¸š�7•–(æ\Ít÷׊‘mãeA5i�õCbn«Â"åÚ0-%e hNRŸKØè!펜ÀÍ:)9ÿÐT§œ£|£²m÷e7 ÿã-ó bVð™‰@áè\¢¯ÍBÑ^–7àu9¹@õJs}Õá3·/kî=ÇÙD"%V(WþúíåÇì+7Ž++G«2årµ¶Ò¨Æu×^ì¼ÿ*ï•ú´ƒãåP�_3Ûè~V¸Vѳ½cÓ�ºV´ónìLrTG×çè²1‰°ºt¹˜ 'Yf+g�ˆUbßUÝ/`‚=šÞ!í²F±bBØ1» óætgè8ß�”© ¤rvóX|àTçºdÄê WÿX8¾R :„¸#.aVx¦GrÚž^(“—4ZO“Ö¢ÍXÌn£rc½~ö-ÿ}ÂeÔžãö·$+wË›eñ¨HJ  Öb+�ØÖ.ôãžP^gݾúMŠÕýú™v~”ÊLü‡½yuÛ>‚²íJš%ëñXÂÈ+­úÚ@Nu0reN˜ƒìÒ2kµ<—1Ý]iÍ9Náாaþ.Íü!ÿ4TX)èÞrf–Jcþ¼¸-á,R¿þXðFA/i5d!¤pë:¾WÀ=½ƒþWpñI‘A,õZæè/Y–Òy£È4åœve|T¥v4î£øôVâ¤e€{$£¯ðA�KýBrö†P,ÔDæ _ÎV<#ŽÖöyÌóblbŽØ8Ìü!áæ[qÎ ôáj�ffÃŒŽ!á�x ™¨­ŸEYÁ¼´„Y.ÙQH9ìíÕ¦ú|=T{“‚øÂí�Aí;q£ÞߦQË] ʶ�iŽá¯º… ÌÓf•iŸg“’K0M Õu�|2xw?’gP:æ]T"‘’Òþæ´¸ªÝïòÞ:n}«•«ø1@Ô¿ßTb<~L¶¼-PNÈ·íÿFú�4Eç’vë©­é6¹šDÆ­.0}¡µ™’Ÿ1Lx£*AÑó@ê’Ètâª8ðžó½ã ¼Ì&4­�9—à•ßÈûªnVºmŠÊü[ÍL»¦—Ò{º÷¹hÑm´N5d•Ô"¶½Z—t6•!zy¯Mæ2pü�žacB¨Ò8`¿ýèýe¤.‡#"zïÅâ}£B’È\Þk]:»ÕJ•�‰ˆÙzŠRî0�¥ŽÇ™;IgXø—/·³ø§hÀkl#™‘—w1â�M†_š^’ú7â¨kSŸY}ÜîZƒ‹dybK¹C¹±�ïÏ*²JD¿Þ<ÃZv%<¹/â¶›(Ç{ûbNDÍò° xÁ…·ˆSùfõ'–4©´“WVîÁ—'ÞË©Y3N0WµÄ£åÎl‰À-‚•¯�¡­/kþ¤¥\€¤¸<³ËŽ®hiišã3Eÿi¹X³FZº„˸ i}B{Ο€Z Šð§i•¼*tçÃ$ßj ùÇïaG+Â)äÕ§Õ–�_¹_UÜæmèA¼ýÃÏ¿0Wn@ç4Z昕¼ôÜù„±®±ö@!^>÷üƒ¤Ï$t7êf™µ“):ÐsN³É U.4ûbµÅåÈ„Çßj°`Æ)ŽÙað4æï™BE6%âØo˜K§—¯…Öí0Öbîû&ö7\ó^ri™ž%žñóqèÐ’ËÌqÉmµEr*u¨]K>�´ßHæq¡MýiØr×Öí+t¾K®ñ_'vh’»PnÝ/¤ÚÀSŸcè^Sç¡ÍÓ†éA�ïÅûòñ²^©êéšQÍà'öYxÝ£L7´A=´ Ù÷VczígEô ]Õ±-Ñl5 ×dÃÇÞ·t+ÉÌÚËb¸š¦‘&G&9”8uÍxšvã·mWv§r¶õòIò ¨M%ýb�…5'¶æ€JN=Þêdo x!Î1X3mz¬÷‰Œ~FÉÞ‰‚qÙñS\�, 7¯:oƒJâ»âbvAfÒ.WÞ>„Ùª:vA‡³1úò0RÆž91Žnà×IŸ£f1Xâׯ\µI¡(¬¦Eð§e¼ŽÄ]bº›-£iz;, ngëo}I¥�;ùòpuk]'²:ò¥Ô­Ü-ÍN ãBÒ·n2¸Û> ‚ lªñálñÎÙß>ž› [ÍŽŸ‚Å‹ŸJžA>ÄA¶T¥A.¦"õ»sãûrêöÁ]?M’àþª:�†„¯7‹f5 …ѯ‰JMýŒ² Œ49íV.œ?Ò¢oúÓ·µíRÉîãD }ÀÐØs¢�à)³^­µmNoGd“`~Ößï»ßF© ™­{[ Ag¹V×|_؇«ÿ ¥�ÑŽÒu3G[°˜Øâ ¿u~´�Û¬àûl÷{X™:û}0EÍ?˜þÖK@’‚Ì9(·�áo÷.™ö›26¨oo¶E5U-û䮇ˆ^,êQMG ¬åç~ûس÷¹¡þ4Ÿ²¿ku'òJa9Z!}/ÒËzf1êr⊕¦2ºÁ[¯ùÁš�Ïz�Ôí6ˆ[DõõÚ߈²{‘iáñ6—}€ÌµP�Ó={k?O£ý×KNe:5“žøõ¶FD¢$þ$esÁ>2%åg…ùrÝí®ÌÇÚõŒ^�ᨊô¾ 8¢È�2¶å¦¢Qè l(:>Aã>wíÔ2ÍÔ´÷0ì8º«�Äæ0æä,êœTN/K³NƳwºèlw1«è:çWÚ¶®Ef¤šÈ…E”wVP[´sFá[»)ÐégœeŸÅ‹f¼÷»›ì¢ásð¸àœèC¥F�…LÁ—ç%mÀ<¾lMýÎT>*Ò÷Û»uêÇ&p"ãÄPÞ“Ïun­ã©Íز‘_µr5›£j’t;Ђ2Œâà_EÛrµ~–5W†£×dÛMXïà3-¾;Ñ~!¸'h#lZ4é¯0çìØ²ä,rÉ2öÔ‚"µ-“0€UñLöhŸ±,“ýÓØÙ¤�¨.«ÕRÝŸdâÝÒ"xk@ÏŒhèfÚ–òd¹�Stt´ê¾VŸTrõêáK¥‡êCGücŽA´«Õá|]î4ýïÈ?dK1_�-ç­šÔ>yRƒ%®Ú83‹¨²JF8¯ìà‡´cz{9àÛÅ·‘xtÑኧ™w%?záÌ­Ã2‹xÎ両‘}741Yɧ~üâÊÓÃK®ÚV�ÌAä+w�•€å�zÕSy‘|‚xJ·Ÿz:L¦ðnzmAJŸY5ë<®A°…ôÓ¨Ñ^·Ä€I…1—:üT‘ªÞßF¾=n.®ÒîÀ°*5Wð ä[Z³o•¼ËBÄѹC¡2Múôva’¹z}il`�z(úõA4%Ó5³0–Uè ì¡øL¤N-n·ÝÖD<{ãá9Ã?@4gª04ÌÓ¨Ü5¥¸sØØÈ.Svü¼¤On…¼ —¬ØÒ;;{Zøù%cçi‘Åù&�ª§û¤iû~Ã"±E÷ÄœÀ–-ýÜw8½z?\¬¢a �ÞB6ñ¥Z�‘C>#%H k8l $šåþÁ#‘S`æc®5VW@nõµà±•ðèo%ès§<ô8Ü>d?ÙKªÎÂlüF'ºuß4ÿ'CÓ¦pT{�,ï” ÊXòÍ—BœÈ£ìZ!NØ$Èš—JÄÚ*ÛÀsÖ~µfF2ïÌ +b‰~«?–‘³û`àdÁаQZçÝ Iክ͆àþçÃ}î¬~ÿ§«_Ò¬3m½¾OâÉšmË_¯ÕSõš‘éÌù骴¹çN�f�Þ˜fô»Ÿ »ÔìÈÐcâÿÄT4Q°çóçç#É|WÕì$ª�ZçèªE)ÞДÂ-.#§ÜªÞ}äÂЖîüñ‹ïò�kl5­%(‘¯,Û1{cÙïíi‡s¼ pN†† cÓeÇåž “šŠð£níŸ3lwµeWKú…[w/˜®ö–9Ý AŒ”œñãÑÑß;4Ë8˜*ê�É<l ¦%Òsn~\\Ós½â)÷rÒzwJeø��ºoÃŒ¨áeI|X÷DfBlÊ b-†znRnûq•¯ºÒÄ]tdž_Ó¨2ËoÒÌÚ¶Qmƒä›&Jê¨Ã0“Üõ‡Æ-…3ð=‰{ÓÑ@³'ò—JÛÅ0F[{é•„2°§+µ Ð4$!Iq}?x6:‰gê(P¸lãO1,ÜçeR?EkÌ .'}2-?¤XçžçòêækÆMR•’� y×óæNZ÷úC´‰çå·Ã"yü™~}]ŒL�ÆA«è»î¹‡91±]8�B 'Þ­y äf vkÒŽ“\Q“Ï×òDwßþ†›*øUº(hŒŒÂKˆS˜¦ÔP¥-:QÀ!1µ¾�ŒàV* ÚÈœ»¶ zGÎ Ú¥˜‚øx˜åŸÅÉRuŸ2á,ÇðôöŽ-–kæb}á·?ãj@o +Ê¿†ÚÛòi](2Ûì�òëyûÕ¯G¼’´çR#€mhþìRüy·Ö{5G«îœ7îg^^„7 $¬k<öOØf¤-AN.ÅY­dÂFÞŸŠe^÷ðÀ‰$ ˆöýÒ|g>Ûê7Yˆ'`6ÇE=�u opw”ÓÕ^<™}x-ÊÆuöÓz^x“å ZÝØfW%Àï�˜²ÕýÙžt©ÝQjGȺؘ›÷Þ0ÎÎ^DD$[2§x6¢tô¾M€Ì¿Mö…\ÃÍz)býV N1»f˜ÚÅ!¢!=¥ª³ˆ"f`YVÊDÉ|´%¿ç%»UB¯?|ÊXkœ¡û;";ñ9»˜�—̬ٓœ*ÜÝ…€¯¥²qb´µîùp(#sÕ¤Ö§ýÜQü;nx89jfíK˜œÝÙˆ3?åŒçgbÓ¾xlø†W˜ôRªg 1ŒO¤dœ-6±÷O�ÞIô¬iyÁ;` +—K»ˆK¢¸™ü¡¥Þ�R#öïå°²šyÑ&^ÿq5:‰Û´jªm?±˜)Ÿ©]ow9ƒ´�/vœçw²ØOŠý•9åÉÊLwÙ˜s>È�mY�¤,Œ(\·Mä’S�8ÅތȘO 8P©‡TtíDD•)‹ �«)*äÈ/øG|©Æ˜Ž•»7›¾00@‹¾�ŸU—·É&"|ë¤:h6å ˜©YèÉ-Bj…,$(Îs(¾Rœé‡{µˆãð/^(à<± ­ ÑʽØýÌì†âß‘Z¸ö­ŸåÊ7õeÀ‡áåYÇ ‚E*A›÷I°£¼jžê2E™‡ñÜ¿óýøèŽŸUàÃÖ«œä‘z‘êc®Ië_çK<« í�Rx¥æ’iÄÆngÉM%ºj­¾ã5JŠ}z¡ÏC¬¿T+It«+!$òߊ©!¹ÓÉ•몂?éµ0«wT1LBþI`áA®%Ôuhçö³lTúý~1 #-/$aU‰ñW5Å¿X« µ�bø’ªî¤ibDi%(¯ÞEs!XzS Êy·v[ռޝüÝe`r�<³ß�¬ß[D"™ €%j,$I:ß"4ù#žýæ3»Ž3ûu;5žçàÔJ”¼å!ß9²G®ìm!5¥Ù;ݘ± =UÓF-ì-¿u͸g”oRiæSýÅÙ&N.¡¢³*y–(³yŽÿæËg HLÒS®K ÕŸO c$ðÞV Dû8pFmœˆ-ÍÑs†iIóõ²d‚^žÉÅ%å÷>••ÉÄL{ ‘{߆½µBêóÅY"«ìºÕgb´æE4ðùµ¦ß13¥|±|d³¦��7hk$ßì^�f§XÉçZ>î™Iüâú¸Ž¯LSj€¶(UL—‰‘¬"I–<üïµÆpüäˆÆ$=&~tˆ—ŸUö�ú„ɤ¯Fq Q¥±÷‚-9·ü³{,­+"„N~‡Ä–@§O B-ä¼ñ´ù õ;U"ä#+R46xÿùŠ^¦>ìóñéU9ˆ£È$•z­¥µ¥:v]' pP¼äÄví áØyÞÈ<šf׌µ¶Úá>¤ãÜR/éP8¡{ bg',É5Ëïˆ÷´Eɾk¾¡fîF÷OeA :Ê"«+gT¥ž¥W³½«å±9x¬>æç¥„Ï… Æ^ö:/©ÈÁ·x=§Ï“¡to?-ËS‡ ñ„jCĹãd`c j“gàºu«¸ê(øÖòDÇi­ä¥ó6˜ÁX+¨‚-±‚˜ÿ¼’;8‡6(©†fÜ„#ó†NHŒ£=µ„Ïjéº"xb1oèøÒubÞA»… emù×›‚¹sùMG{<êΫÁëí5h*˜o—™MìuŽ éh}ÂÕvídwQ wcqi&DBvoðÐâXè¢Ü§*,¼pF�‡È"¶…P7C¼M‹GŒñx?èÆ�XœñpoiÊ—ë´ão’Oü'Bá`_6:ÓÛ`÷{>OJ÷¥á¢-¤X¯¾R«?8™”÷ÙÝx¥à{bÓð*¿FÄüQ;±Øc�};ãšp«~òÒ ãR«¤áˆÌ Ñ6üñ~tj!‡v÷¤êNBêûÁ4á9p9T.0V÷1nŽ|mšÌ™3Ç¿ýlBØÞë­q~"úfm·Ù‡· ø ä…+—šžÅ�ÚÏpLï{þÃÑ>­Æ‡­ú+3ë†{½BN£?ÄÓÚÑ/¤»­l´7rºac�õí#¯Š‹õ˜§|=?ÅÒù¤ž³ä“·h×5WGF–±UòøPó|X&xBÀ�È�óÏÆx·¤p¦¨Ìˆ¿.œØ§Ì﻾ݓ^²¬>8ª8-Ÿ¦Lg:�újàD3¨ß{»{Gápå2'¤–Ω&.i×*tM³v©âõii-W’„a6͹ˆ�º °šÚÍùyH›ÔzŒûÌ­*_”mî‹î�Yi^*5¨¼+¢ïOjоŠ%YHU¶úìC¾ìdånsU@’ koO¬¦˜mÿ䘈<ê»|í-’¨n ‚R€Ldg½ncáú?=4ÞUg‚_÷9à1Ž/†\^F­ˆØ"'®ðòTA„&¿ÉËM\3úÛ%«Ä¦Åª¿‚Ç¿ôñP÷›PËX…­Ow<ùT©@%ÞÍêû¶TU·‡�FÃì|„#—Ò%]P›vÞ³ð¯%w ä|ñšIu7«ÿJƒÜ}ïùî ¦hTÑí( Û%Ù?Áã`K‡„ÓÇQ¡èz_ªëãóV8ƒRºœÍ8TL5›Ãöv±‰ózWòòT¨:ûü%ï&¤´™õº�DwZ:¥Ô°­QÉ÷xãjL½þþÅNÑÉfµéö@)þ\°7S†Äñƒõc¼k� á¨�áÃ*†Îª^ÂYí'ŸOŸÒ(‰£Þ™mp„Ù¦n>7-Œ¸Â„ú3Â"»bÓ•ƒ-Êî¡<¶øx, PóHé(»Â¥â¸}“‡X‚Zë&/äo?k~íÿîüF�Ž7Wļ‘eÅëAd¾›µE‘L+†¹Ú ù Þ§8�–¦}¹eòF<|Õ¹2)ðÃb‘˜Þ—UÊ|‰=·ìËŒ/bÕ°€Sù&(ŒmŸáäušDŒM–Ò»|áñ'4Žvg¡-éí4C7{?îĶîÓ÷‰\´‰„Gw7ߵǔ r’$©AËÓNh Ÿn Øt<ëI�õÊAú8Ž×ùcžÍ4nbþÍÏRÍô¬’áÒ[µäbMÁ (jP\ÖAë Ì(Šj›�:^†dW;™�Ë&‡L& ý†ùí‚ã„õ¡è6È2c$v"3YYNb‚BJ‹Îsi}éêËxW$Ìñ\£Ñ’Yùó¯5bâ2Ýæ×"^œƒ?ú\ÊÓÒ"å¢�|!tò–UU_®bKI±÷¥âÖEÅZ…�%.OŽ{�±ñx¯AxžºK±F�d1zþ Š‘åæÚb%l¨ �³[¾ÞEº9:¡ 6é™J�‡0R6Ø#†Sê:±[_Òààá4@¹3ÀR\¿—D˜5ri»”Uš% Òµ3~0~a6ß×—¸íh«�ƒí–í4a’i�É‘T´‘=ÙK¬R0SŒÖ)õ,#J…BQ•©5¶£â{+*2àdà¦EÊÖL46„¡a@ñK‰.ÎÒÅ:gâŸ/s]"lWp3¤gÌ¢Ö O’üÄXGôǕۘ„lXl�ÜêtØ™<^1Gª> ?tªæ‚ä|Ïâ_JÃ!—û�¿(3~±çÙÓ´2z‹„JEF¶¥xZ)„*Àà2r䥴OÉ}“U5”‡6=¸f¸pƒ´G©1ZÁ!ô~.¸JþŒç›�õ°Ucn½¯)Ñ×bZ0òýN¦‰Dp …˦¡NØGݵ¸�øøû÷ÕÃ¥Pò³®Üür¨öö€Ì2€¨|/Vø)u€/ÛA™®oâçóûòc?Ƥ¹!¯Àæ#S“¶ßɇ’`QâþÀë=tÎ-1™)0þ*T¤ûnšf`:‚]çÝq6@è)ò}¬;ÉŸ¹3ˆp�Í>ùB¯ž�y�ÅØéÓ ^€=‰Ò’¿Y•ðИa=Ší)e>±ÝŒ¼½7«{d`>yEcÒ ÄôëR¤pZ�–÷Ì{¡YˆL´ Ÿ$õ¾}¶&¡t�Ën7�V›ç8=}ļT¶Ý¸›’lŸÄp¹îÛ¸Y7êf/ÈV«„Õ¸d¾D¯¹ù=Rù꣖÷ª| è«äk‘QJUR$1Øæb•"0K€’“wb™?ºÆw±”@�d*-˜—~TïOøs>¼}ܪ¡6Å)3nlyÓÌ„tÛ¶ Úô„SÁÏ6¹4Ô¸Þlf,;H®QÎ:A �gZ¶;Õ~µÙ“lˆÒU¹Q1á¿FÙÒƒ˜_¯-¼ÆkyB±¶Ð[ã´§Ýh3»öÞMo»â1OjýEú¥ÌVµŸ›µâm�ìäcO'Ф�_¹²$ ~|g3½³Àmpö ËÌ)1ÔqDb¨æXÞÁíèȧ� «µ×SËÓƒî Õ Õ¨˜Êk\ iœüÏ ¾Qs’(Î 2n£ri`È ô¾íûÔ“ ôÐI䛯 T à�„™ÐŽ˜Tôç÷CÏWDšmnr†v`åÐcXžvù7—T+êø\©ãà¬(¢Áéåo8õ~ã–NtO/ÍÉánà=•¯NU„T=gO9+æŒí8?_nÍ’b‘_ü"dî(ŸF-G«=DPh^ñ‘;N›DÖ•Fpo öü¢s¨Í‘×Òm:Cé² qrÒN¨ÈÓÝx­�÷ä\¾à]b§ìõÃE`½f¹'г- ܉v”£+{â6 ÅÄ-yç¸oéŠn¿Ü/ûç+”oÀ_wNDqÛ`?[È£;G†>N»>yêtAé9-RL&üyûeuÀbJ÷¼ ò¦y#ÇÙ¬ ]U•°’ZFd I”L³‰·ÞIá/¼’€Aª#.ëðO%.“&*~�¡Wl3Þ:xƆzEm÷ÇŽ™3;ð$`Òã‚°~¾u*�V2ãéÐfu~ûWý&IÝÈíTþçï�:O6>´~÷>$õŒ¤.Ö�g¿–…ó]ÜðÚ¢d\¼—<äãF Áq˵)£±!¥]E솚h›ªˆNM¥úòžÖþd²š÷¾Ws;Wõu|´š“ÄV06©gÑ.%Ÿ!j«÷r-bqÀµŽßÒ%@Q�)5?0Ä쿘mÑRÄ)ï"€°Ì" %�7e!ª�{ŸZyÇ”&sÔy+-‘±{ŽÙ¹SÎ~}ôýI¨ˆ†@®yÒë�(­@º=zP7M¦Üm(e¨üc{ êN±£×b�&­ ³«V&@2©^½Qk€@4Žb³r�Y€ÊÚlÿ®ÓÇÒy¤“£óó§.Û×î¥òÞj_Ú ÆBo£M¤³}Ë?Žkn¯[î@“Êë”K®R‹FÈ£•2~<�0*\á»Úº·9µí·�µ ¼~vèÔ“Ö+mµpe{6Ç �¸F?œJá[ú<1é~bZÓCLü>dTsd·ž›kÜý31^l³tš3<µåŠD–âx'c `îÆhFívimÐ<štpñ,"­,ÃêÑØîÖ,ÏNºÐ‚>TOŒ­×3t)Ûþˆç–âB4ø³çðIŒ6é)ŽÀ¥}=%ýûJµ ÷¢�m¢ƒ¢E™Í«ô4G7É?Ü6[7ý’“ò$éˆ75JwÍp™9^KuívÏé'¬CÚ{—ûìHþRÇðRÈ¢áŒ{Ê?9fJ ]�qˆµ-퇀û#ã­yæµî——¼#úIÞñ?ÀZÁ?FíØÞú?XKãtXá”!³�Y3¹ØZ|Ň%‘ýCyÕê› ûñÌlÈ“pûA:p1ÈSøý?ú !ò<,(È»‘P}\•HÖ>Œ`Ô²Ðh:ÝGÁLͲ�'í~¢ÜÞ†þCÿùW õtü“â*YoSGŽT ZÿÙÚ<“ËÒü&ƒƒí÷ŽÒ+ÑY!SËîî XõÄÛ—ãÇߣmw,�ã�>Ì.ÓWZÆi˜Ïü´s˜Ë‹¶uûêWzuÜpÈ@XìúÞ“„¨:ÿ–÷:Bè�­O×vÂGž¼!nÉ(m9F­|Û`>ëá;–Ðxúãî[ñ橸êdóK”]«£¹MG3°UN­�è¤6󡱪h±V¤�ŒP¿gT?Eyƒ¤e7Íàú4—²´)htD47�„ç6ry]m®àÊs*¯Ò ¸‰0Q»¬†©ôSá­/øÞŸZ»1´^Í.¨dëW¡z%éróV?ë]&t®i¿Ö“áhR)ÁxÛ㩟2ÒZÂ%ƒóÌ› ¿ðö,Pm«K`‰yÐèˆ = w_‚^ä=Ðæ�µ,ÊÊ{Ô: j¹‚ï ‘ NKvKÍ�–+Öæ¾¹’¦¹wá�r1sJ–’1ˆcb|rqؽÅ @^�Ü­?\ÄkÞŽÊpa Žî,ñAðlN—×£J¹- ¬Î2YãýAØÑÒk­Ùž]ÿÍ—>�lxõpeG3«ÝTV]Î;‹;N™R:HU j³Ý¡eÊ+‡šÀ ˜¿û`û#¯8„Ò�<]O=Ý6¢¦·\ÌÍ‘”…#eM•�”{9O«0æÊaå0Lhs¬MOBó·pñ!JFr{U‘lH~È{3ôšõP¨Ê×wL¶D1âòÍ‚Eé·ÁQÁ¿¾Éy@/fG<ž¡ž#§«îž¹v é/¬Ø‰x¸”µ –ðx»4h™ì>Îü Í`ÎüKî&©K¢9M½nã��2äjîo­r”fze=¢€²C4î^áa@V¥(ù ±ôÔˆG¾g<>¡ì|Ãþõý_?™EaÏâcZü}á÷o=JˆWTœï¡üç‡N|dŠâžÿ%&1ÈóùfÔÿüÌ€0Ó”Ùcþ âßÇlˆAj—?¸ýIeTwhêóÇIÿ„ž[1ˆE÷«�ÿ�0}3�£–›ñ¦S�¤'jq„ῲãA¥ _˜«üÏtžclæ�ˆ:²•ÿ ásÚ¼�Æ/]ïþg:µøP)„0Iûsgž ªZúȸRæ.WðŽ¡¶Ä â? ÄärØÆ“ÿº‰uÿ%è…Ï\£“`þ^¥_’mçå-Æx¶�ê…veCîôéùJÜ™e™šö?ÍEÊ<ô}Òý¬2a(1€àªŽñ �J�¯¹à¸¯DK#ÿðç‚ÜÑëšéÁ™{üˆ=·,fþª¤:_æÚcXÕd‰Z nKèBº|hï;åt¿ûBÔB°gC‘g"¼Ú ‡Ü~íÿ±êtÞ�ŸW¾Ø= ‘ü6\J` ›YÐ!ßvòôèö�ûB�Ý—§�÷wnƒxê}¤%Ñ*™0÷øþBú&1²À@ªÃXì…¥[ò|”ø§"1§h<³l/ÞÕE©©|eùG·ÔV;ÂqÔI´ÿóþLÔéNÓÏ}wÖóã%¼�ãn¼³¼«™¾\ƒüön ÚÎ àÐ¥]`õdÉ^±1¬h‹XšcÊ–Ђ±ó­x\kÛƒµì‚¶òÇj ÚÎ�‹ÒçÑ¡³Œf{�ãVY5läõvÉ^Cºuk%€×ÁëEá@êYx¶AàälºÒŸµ¯¹�ÎÇdÏûÈC"j¥‘tÐnÖ<Ùk;Ÿ‹©rüAVCÏ_U“7§ùB–ŠÕVÙÖ¥�lå9oP¤ Õ|ÀÑþ›ºäàü€ÓŒÚûçÓNãXW­z]‘®ûïÛ�>”½Ôq_ídÐ;˜ä´7_¢9¾*<©ø,UÕAà� ŒÓs'#ØLƒ�øŠ|‰Ûi>ýIÁ$êTpÖ#•n�ÎãØ¶ ƒ nå‡B—¢í÷'­°Q�%Bó†bŒò\PØÁ©¿nø¹£Æé�EÃMe3oê_œMÐù©/ran�Gƒ…17é3^ue}d¸%ŽzQZ»Q°_ô„|R/d8§I^5ƼŒœTÃlåâªíõЩ!¬ÿÚ–Øÿ v8:?FE4Þ–ï„¿ùh™8^ŠùˤŸ�*�Š€¢ç¨�ÿoN†z£½ZÓìˆ~¼«Y]+`5çëO%¨ÎÚ^ãc_òƒ¼¢ÿ‚¡ÜÎ\‹‹`wLO‘”¿©jž!èÞ‡l‘ÍÞOƜއn¬‚aJØøI"çZÿ»aDèyíÅø-g Ó½’7ü^òÇûä5FÅŠyI¹$ÜÌŽ­ô÷�Q„^;ÙpŒ˜d5�Ìúy,Ñbëº ”9Bðß=B°tRmìˆô¤Ò;$õŒ €Ðýÿ‘›R£M…)þ÷r’$â2¾. ðÿx÷÷[ä¡¥3vqí¸L$ÄŸ¢œšl•´Ù›ÿPKë©RDdL–¸n6÷8images/img2.pngm{TT]Ô6 C Ò9ÔC‰´”ÀÐC·ÀH)5t‹  CwwI %¡ˆR‚t Ò¡  ߌ¾ú}ÿZ¿ëЮŽûž³ÏŽçÙ{ßX= rRfR<<^^#ž¦ª’É}ü�…Äót} Qœ1„†nód�3�k¤‰Hž¹]<ÏY˜$‹]0« ®úá®°aC_U/uÛ]U·ù+|¥¾0Ò*’˜ËŸà{¶ç߆dV†²v:êwF>|øp8Òá°Z˜»ìþsXøuÓóÜPPΟ –GòC@7ÒßB· ¨óç‚?t}{d €þ¹Rd÷l�Z†-miDðÿ\r"¿®æü�NêÏðyÌÖ™9È=(¡(‹ªÁ︷”ÓSq9ºöÉÉÅ è¹ð[0ÇavÁÏ]�ýö�þ'ô@Äê5P�ú»üeÝW'´ôÝÿ^éÀm�xÈDíp­Ñ,ó!ÀÅù6ÿyŸèÏ'µŠ™­àûbyôø©ŸŒN„\XËeàŠø7'áË‘ŸƒÇУÿmfH»˜™B§½×Çöz…ëûãû¥{¼0³;r. ivâöƒŠ£®Rg0Z&5Yr~Ò¬ozVs{Fàͬ«äï;ªTŠé)t !÷'ÿê¨ ¨ÅeK\!a=æþOOxX=Q?£±þÕj’dÅŸ˜í›ÿWWÜ¡¡¬9À@†î¿‚Š%°Oiml½ƒþU8ˆÃ–Š/×­öWÛ4|‰0IpN+»g­œ"¶péï³_�ˆF¯ví}%•ŸË‡•¡ G‡Å´Ëã»LVŠoò[©Ýsþ£´çZÅjW’ÒB_Ýc˜],R�©¶«’È£BÔ_œPN(€»ÆÒûÅ}LËû½ZûLX<˜±Ø-êž ~Òõíì”U‹t[¦8<½WiQãtãkÙ½–’ Dìwõf›} kc|~*lT“×J|Z¢žÛ)ÍÚJ@ú%úŸJ”1r£ !íK»b·&®6+ýª²ñEB=si÷„«®¦q‰“/üUÍöo™‚"Eõ‘ Ÿ�ýSú¡×˼§!‡U¯�êQÌw”Ñ(×Uw½úRnú6þÑ\Pƒ4æÏÓYÀ¡½®éçl+/þÙzö<1c÷Lÿ3vA¬©Û;è·²ý=C.À¸7ŸË­þ È$ � Rò.mIˆç¿eÐb?º¨Á~¼Ö#'d›�µ ¤ÖF�vxt‹�€/îôpt¼Z̲”}’L~Ë”ñÒjM±*vú�NjÛºÇyìðœ÷´ˆ»O®§3·É0Ã#�ú@åE¦svVíšøÌ@Ô©á?­û¾!½Ñf¦®Š`Jª+–•Ó»„]õÕâr �ª,ÉfÕßV@öE]¬–Œœ:³øk8(†eiÏ=¦y&ëЬû‡èŒ�p© ³Ÿ­4ã’q#¡¡]8 CìL~Öçhf;˜õLáÏ€‚ûý•èö@ÁŠÛÖÔ/ûe¬­7¶«µ±Vó8Š¢ÑÁ9_�ÞùXíE‚¦º¼(ë»î}‡,;HlvUõ9„Ð~à€Èq&×€T'©öç²ßÛ¥xW¤¦ 7-3')t”¤ú‡ÉRi|Ô,©#ч#ÄJúî5èpˆ÷ým«–)�ÙÔ®Õ <·/Hü*|¬?t¡=W_õJr‡–}±)Èéàë9…/k¶ž·Jðâ÷82¹'R¦n¼0ôzù�—1< U…˜�VãlTéûé)(C�w{¡ŠºRˆFu(ŠŒ/kò`üiøŠ`*ØP°´û¸öðÚf}Éú« Î�qÚ/H¿»&óßôUέÔiàWðÁtþ¼5P‡ªûzÀ`¬¡öˆq¯;.*A±/¦Yi‡rm€’œÂñxçž6ÒÌõ]ôC�7}ÁÆŒÒXR[ÓШTš�ìeü7Ž€-n�-ÑÀ! èÓš `»gMÿâí!|ü‚œn_v È“ú"=#í‘[˜&¬sˆQ}"¬Õáè`Æù %ö&’3 ;‰Äj¹=�‚œUúŠv¨=6b …aq.…ÊzÝ-rÐZÖdW¯¶"9u!Å�T..îÐÀŸ¾ÅYù:Pµnç<Ü»ž„uì¦l ¢œ¬ã ~‚�ÃPôéxç3þ–Ô@kÒåÔ¾!¿ãNQèxC_£� _lèÕú4/™Æ®DMB{Ì–Ã�Ѹ+&2ùš57@å äÕñ®õE™"ÔíEʵÚd3ëîÖ(ÉjÖÿÂ]Pl«kÍÞ/j` )H{ îé‘£êß覧œ²½)#’Ì!'"„·§öŸƒ—Å6ºÖŠG'Ø'ZvMÑݾ,%¦žÍ@V^G‰Ï·zOË?öa¾"¥÷6Hœ�îŽò½çQ®3¦1)µY¥¸�4Êë¤;%= ?Íiú—øLâ`Ž`F¼=²E—ÀTqo’ÎÞŸ>¿”½ ADºw‚¬{Œ1ïù¬Šî Š©À§Äj(߅ݘ�8“د"¹‘x¾~�Ó¨Fç7ï.tRß–5=fé_f€sh‡ß—B¥ƒãïtRI­·P¹¡’ Y^úÓdƒ˜9ìµÒO/=ì®8í­~¬ Äš¢Sw­­Œm×M_tYZ6Á6àø7³ÜXøØÒ'™�NÒ¡%ÀÙ¢»•U[›iÓ?§’%š‡~�GÜPõQßV³hÝc Œ¢.Bmþèu;R®5­1Œˆç”‘~^XIüKòoB©âÆ·ªm¼›^·Ë�ŽÒëÂŒ´Ð ½ênH�šbd2d nS½uŸ\:P=e§O“pG#ÐáQ¢IΚS5¥7òߺd­æN}Qt¬NvÍüë,ÅRß¶�DCU�· áA,aŸz'í×÷!¤ceý µú÷ÓÄ%ÒŽi1‹ÿ«35ŽÃúéOšW¾ÏOôÃ)úðÀé*�Ê-õŠ™æ²úÒ$ø²ºùE¦;j3t !�a�¿l.Õ­mO©¦Ä�°îãub’æˆpj%œ82@.sºˆÿÛ,-jÄ�Smùf?Þ¾l“ºKwYÑ)}‡µ O;æ ñ,šjnJÝGV"¤âjPøMÅôú€A·=h}» Gó °-gàl×|ÛõÙÑ"<Ù˜=¦HãÆ¿ìNJ=`D–ð¶ñ&‰`s–eâÉóWR˜Â]ý]RôM­¹&¬_»ŽÂ§YO³Ž•ùÚˆYW”˜ç|(‚H«#!ç¿4^r1G4Q”Åy¨ÿ‘4:d:k¾œ•jVÌ_®8mã“;Ä€sñG²Ã–©!¤ƒÇbÝEŸ%úÿÁµ'*ÆB"3JÛuö…xËa¯•­ ßž ´…ü?àmM€r"ÝÙ¬´DZT£$óÈ ªUêîy(,Œ@þ·h� ¡l%6 ΰ–?)½‘�áÉ`鸉?†h ð@Us>ô”ÅO^>|³[¨PÖïm²\óÑð½¼gºÊŸmìã2Ú©ùíŽg�™‰Ð´z#Š$ìÊìbǬw¶ekâuŸRĬ⠾Ÿ’ËèŒxS¡Ë|€¹Ýx:9è ·‰›¼râ~†äž²¡sÜ´ï}…‰ÞÅúíâÛ�ŸþeW-ì€mYÇ�`Œ“l&Ú]VžDî—iœCšG4Œ½ãÖ­Œ¸ËW †þ%ü&dq9ÕŽ*~’WNOSÀÎ&6ç'{˱Ù÷wj.AdâW¹ô§Â-XáYSbAÁ¨Ycs†;Æzô ØÀdŸ� Ì ‡ó¦Ú Íäü‚Á}Vyª{Éðe–ì’_»·3Ô–+×%M¯ðªû¶ûÏJ@wT…Ø!ä1Yu Q¥ìEpáG*ÏeóBEgùy÷hýD\ÆO#�¢pǘb‡5Ÿöcš[þËÝN}ô›Š»T'R1Þ<™ƒHãÏ<Í“¿nó?Yþä£-äzÔØeƒ ¥Ê$šg›ÔXS±0ô»b“9ëhûÔDåîÃ&y=®ùèuQèŒ]â�ª;;—Yýáð@?ï™�©r?®Ag¦ØCµKuOŒXIüýY÷dYºé·i­úÝ =M/õu‹ çÏ÷o&¯?P=r*dhrÊa‹8±ÏÁH?ŸmÞßá-ß·Ì‘ˆZ¤ÉŸ<Ôù|þúãä…+Õ›wöÓâyS«\ŸeÇê$@©êî‡?–nB&�¤pU£&Åd®‹ù+:¯Î£¨ÈóA›9°0£Þ ¹o_ôöZÓü†¥W‘–ö«±}ʵ׵õä‰ÃÎ~ø3xVþ4òÃ��À;Öî6û—IW¥DåØNÕä Mæ¦ëLâ"oxˆ £dr·NcNC�†öØÀ8 ƒò‘±»#üÇ�Nÿ]VˆÐ_¦F ư™oÀ.ÁX©vé¾T < a°XöØA/'Ô«úœ�)÷—Ф°Uv²W?дÒ,É¿^�îI×$}$̵ú?}á/yA*ÖóE—¹(õ¨·ªÝò!pÁtuøÐ¢#ü7Ý»@È/ùtÑjuDÙ;Ù°tÉÇp ÿ½^V™à´ÖÅ&<ò‘Ù—Œ2(‚Ô‚ Ï”‚d–ÔídeDò:¢RG_²úÔ5j>.=ëMkX§q&z!—GìˆS’(cõ^µ,=ý÷þDP2†sˆtuk™p—ÀØ¥Û ±÷-)†5#ùœ)¥²¬‚,pph3{t9Q¡Þ_›HŽ“ÔÉJ{¬,T�sêåÆð lWµï,XÙÿŸáB¨89‘”Ô�R¨­Œ˜E“FUkεC‹¹A  ,4¿³|ÁíªŸ¼”F¤Æ´«ÁÏI µ>ÇJ´Õ`�cÝϘV�Èï@�Å/`Hü(Ã9I s4±žDM1Ì QcMO®ÄäÁ<.®ÈoŽ“!©Ñ:KºÕyÏ*-ÚB}V!©®çrÀŒ—í‰D÷u¾vvˆö§­®„q£HKlôÍ£ž])ªRD�íÅÖ"ƒÁ¹vÞwi¿Ãú?n`¯ ZÙ«ìÍÇìC¸‚P =.GÔ>îµXHúdÙtÕÈì2n¥µC³ß�ßòÐ“å   °�È?4K4˜lM9ÜQýT<„Ä%Xšr­]"ïx?c‡ßŠ Š8¡(pÏ ®@<ÄQ飼â–Ý'êAèZ³Â%”æZ’wªÇÐË`Z-˜flÈ@¹c@Ÿ}$Ó=’ Ú!õÞÝÞ¸&qè£QŒÐç܃ý‡×2àxÄjwÏ`;%¬O5Ɦd¿àÃɧªºE6"2p¦y üåûmŸ¯Ù‘ºÁXP 5Ü7ö¾õK÷>þâ•fõý¢Õˆ“©_v,“ÙŒ‚5ƒsÈ8Ÿžj6òk ¦ Ûá9U—&SXãsšãÓÔ‘ðÔ"#ë²^«BqàõÀNΦ\Ø6Ȥõ>4¯ 0­¾ø7„DÁ6‹Áño¾@òåÈ÷–EƒðW>#M'õyÇk°„!Å`êmË @Ýÿš˜øQPñH½ãêð$XïàÈ%?D«êÛ[W ò˜§¦5CB]ÝJk Ò!®.´òs ½ú–ã¾é”+½Žû ¯Hâ¥wÇ}—ŸNædôËOƹ0·§Ó Ýi¬”ư1’ (Ý�¼^ÚÉHT˜”¥!ÿf•è’¨ùÓ\q¿„X�BõA¦…/¬N Ø´ªètùuëÑ£e÷Ù‹dƒ§f¦-)2ùEZÁ?§o�Ýk­qŒòtÅZÕ]#�|­Wõ9*Ÿ£ùí¦:¥ ¦ÍsÞÏ·5H‘îlk½ü0 a×›½mìJ¬Î6H9ù)àilÏu9+´–¼Ä:—Iž^Ñ7�þIª¼egHI4~§åtœ!¹é-bG#×ã“_ÒIbÒ~®éµŠgoØ©iã,E‚ú¨�©M7uVESµÀ[Mõÿ|‡/o'ÉÓbí&8‹3‚¡Ä¢`׫‰j¯2e‡jÝY\F°ûŽa¶¹0:¿cmš²Ù!&ô¬Aý]ÍÿIKjV(E-úѦ!ñ@ò=�Òש8ÂÕK³öð”vlˆ�×{×\B Á°¬}±< ž$’x#Uù5ü\Òz"ËðCFnªjfeøx{,1K„I\¿”ѹÝU“H>»ËSö�/»\?•�5C÷"N^žÆ"å·YUØ:¶¤Ü+f?¡W¿U$:S/Ù êXs¶Š_8RÎðwüôôÿò§¬D­†G¼åDz¢_�ù>"è]Ð4Yxѯ‡'¾$žœ«öÊù t,�Mï‰ËFÏŸú̈:ö VêS“4ùO�w,z\S‰Îï%M‚s`.$Ó­„Ûœðjö+ø² ’*à g7G]†7X›aädfŸ¥t–ÑŸß�9ÓլǮ˜éEyžöP!)îCÐå‡2EFÛ<( ›‡‹C­»ó“Ú0=‡‚€èõÚ°’15bùÒÚ#þ=ˇ¢Ç]s«Æ€(¡à“IÀüiÆHÞ'FKc“·¾xÁè¸ L9Ÿ´Q9ˆù&³–2+0¦Ý]sFu—Ó;dfcVãó*³*Ÿ†£<ºRù´«Ç}@Þ©OÙ’ »‹s»’3§bVíb/¹@Ž\±i]ßü^šÐO µÔ6%¯A dW‹ð"ù^Þ3ÑÖx?ò‹Žˆ›„À¡@à“­®kÊ3Ù%d™)sº®@…D¤åcªDs34ü hlH!Ã]D–I(Ñ�"‹ ‘âx 2Þ†sa>ÀŒ�-µ©3Ã[ µÞZÈP ͤ+õÜϯ{š×ŠÎJZÝØ´ï¾7�‚iå=‚yƆ¦"i,A¬‘v“ã¼íYû(&žß ©âC¹Èˆ™9›Œ<¶!nË“ÀÊÖXr�è%ûXšµV¿ý¼êä OúÙÌ�Ç]6Á,žu¿ãíóÂLêi»‰'oŒéw ¯•Kî] ÎH­4sÀE®jh×y€NšØi“P98^]˜eæ€; Æ’âã§çäS‘ªÀ`ÌP²À“üØ>/¶¿�”’/Ÿà û=ÐPeÃu—¸ko§'KÛíJ *r úÿoRà&ÚËú’ _–�5|³÷óÞ­lª"�¢Øˆî3žç“þå¼�cö! sáÏ(¢¡¨ç2"n ¼²$tSº´¤|ú—^'�SÖþ& L¡� CSâ’ˆ)^Ù2|à'69W÷ u‡§Ç?G�,Ò5®õ±µ:ó¸ƒ8*Ž’äÑ ŸZËGûF�ÙŒÒËìÿ098ªŠnË£€¶#õÇMô-z ³¼½P€†v©­/ÍÞ›öl‹¸WrûJ�1ù…z¿Ø!¯ÑÒ|¥äOÉ‚Žd-¦½Ïñ ¶Œ™Ã@OÓ&k0·0~7Í#cC¤E?eîÛ‘óA Æèsòùcó®TÒZ@Q˜)ú7q#Gn8¯$w(Í1WþkúÊMò$�¯ËÀ¯‘+þ\än|áSºÅ¯€CÛ]ŸúÙ´8¹óÿ¼5 ´û0™Æ—Ûô!ýÞûÄ(©'•éŒÃíSÐÊ|˜/IF#YµÌÒW±?òù¹BU ýªú¼’Ûíˆ:-UöØé—Œù ŒD,7x^r÷[�RÀ³ÊŠï™Kî5Ù :ÅnXœœA^nf�“±À ÓÖrr©¾z²ß!Rn~5˪-ƒ°`ÈŒ«X‹Ê9ý¦s"áx7uª�çL±}'½iEZ§þ,}žÝ2¾jX8_¯EÐw«D$¶\_ãìç¥ÉÐëÖTáW�¹°xPÆG~4}v¯àðH¿ˆ{òAÛ[ÎùŽODþ““Îì™ æÝ¤Ý4…¤}ÃÈAíþX”˜ô20ŽÓàq”"Úš§ƒ:1U“¡ÁµuºÖ/m¬¨›·=ú[{ /�™ LZgjßûI¤JÏ"ížfù·¶»'“ΛÁIÚÎwDóA#Ü8�¦la�_í÷ö*”s3Ko —A³_r`÷`Áªò…ð4ͺOéU–—57o…à"‰Pt–’K]*�ï•aî½Šì» “ÊÅ Ö …½fêÙ�IÎ O›ù*A†dû+ î ¼¤ØNUy6yÚj:Šá¡ÞSëÿÔ•õ6²V2ìØ¶Ú_ºzÍ}åÉ.þBV¥Óù2+úXâ–xbzJëöf­ å}F’z¹:nÙg´Ã8&HKQì)èqÅSe3gD´^1ÅÚ®¢þ£¡`¹´¹BnããÍn:¾>‹Âç 0B®Q�yü½Gè�ñ?Å!]ê®\¦%û Zû.ª©.‡ÄƒØ%}�„’$ö^–¸Æ¤W9-��D†�?TÔ�¾¶x qîš/>P2MÏkžàMu2R䉓5ÊéÅN¶WQ_ŸØ+ú*Æu£ÜßiZ|9µéRuO�š~ëÛtc‘%Oæ(Ê9±Yr¢oÝêÓ3¥Ÿ|¼3º¾vÇŸgP 4’(wMXä'õè: Bæ„� x52Ýõ_‚eSVZ««ï1£g³ÎSÇòWEôwƾ5îÌ…¥šÍí¦Ôó¯¦dU:ç>­ yÌÛÿTjd*?mF¹¾>Ø�Ë-~×�+ÙZ§*ËïÔÒžçùÖ"@qåT‘úcª-E&_žúú%›Ã S–ž’òZ�Ó'ž ¨Q�úœD Yò»âÄ!ŒõŸÒ«ê™¦-iD‰YÊ„ÄDÑJá9ãÊ­l.È7äèBMéx»ž&p¡‰žÆwŽDI0|qUº%ny|ZÕj }Y]Ñ�¬y /�W­} FÈ�´Ý$ré–5×Ìm5÷ÜyNäõÕã­”òl�ÉwhÓÿ¼£Àï)7yЫġ $:ï˜#廩RTJ]C+f.¨Ài·cëãÇ`AÌ5ÄF+Ã)EÒágíÓzå¥Áp×õÈR¦��tK ž”Ž@l~( $Ü“a¬~p°‚¼àS–'~–D:RG^˜ù1_«Èçè5™£R+«åÎnæîßþ¶áX5é~î;>øXN"ݱʥ>­šbºü ØUúzj5 ب²«¹fŠ?W"³Jn-î˜(Ú} Ÿ#³JŸ ê�]$­vØÔâ&V×܆×I¿I�•¢Š—ÐÓ¼= ª ëPµ™”UÖNF86½Kߥ— v?Só©P–��Îa5RHº¾ ŒŸew0a8�ýjh[ãD…—ìê ^o¾:dTIÍ ÏÂì°dYQ›f„!¿Hý!Ý ‘ô¾áÿ+¢q:·÷#»kŠfÑNtƵ©òOô,¥ÑfUŸjÌÒߊѽ´H´Õ³'†ÂðÏ�ëiÛƒÏá°±^3¸•Ø~Þ«d×Uñˆî:µÍ”º¾­Ú¿àiÛ%ÛVPÖà«]ÃÝ£$£É‚l½—> jÖpµäâDƒÛ/äBo"îIM iÍÝLÌ7Ôæ‹G8N¯CŒ-Ð&ÒŸÀÕMø>/ ¤r5“ùµg§ýbGS\<ç—þËl@|yÿ î99ù /rÙì—E`#טoö”jªÑËuÒÇ ñ“ÓË´ô2 v©ïi×ÏÀóþÔ.o«Æ×JÃáô‰Qø\1aʆ/.+Ãp!aÅâ¢*©EààÊc¶¦‹=‹&yw)º[tÄDÔ>¶èkKÒNÄÐáóþ¿\¨)Þ‘œûKõƒm·PpÓãõ«%‡H÷É ê!C6ùä$Xk·Y^«WTÙÎDÖ.é—×*÷¡àj5Š1^$“EW“XÚhd’jei%&éÎýÀ1È€±ëßg�ÚÛI£>»0´Øþ1Eõý8“gn[œ­7k>#tþkåâ9© ±ùÐUï&¦‹ï¹ 0¶KRª›í?X½Sì¨ëû±Y®¿èªŠ�‚„ùWî;öíDÈÚjWgUÚ{�›Lƒ E&«ä_Q+ÛŽ'$ð à IR 3Xr‰8&d—ÂOúØè}»Á¬²oF�Vþ½1�ÌxâÜSGùÿ2t'‰Ìëa]§­4¾þFSmWÄä–É�Z&ôk½‹NÕ™å²ü•#øw”ÄÖ”íŠÍZžD'Ÿ{áá1âf¶®�8&¢‡5s˜¾ 2ð õ¡ukÓ…•ÎÛ®Ÿ®Ø!„ĽÉôa}S޽ƒ—ò4FuØp˜òÐ[kµÌÉjþ·² §E=‘‘0fÕ­“RwY|nšGô´ÛâagnÍcÌÑà/£ôÍwðÑ<ÖDŽÛß^(#ŽÀV}܆�—- hÀ„x˜Sf,‰ƒÁÙ‡×^ƒ÷cèÕ.ù)ù ÿÏX¸ü�ØæÜª~6-ËkvÀ¿Ztê;þ»òiFÎñ?¶^EŠƒÂGFù 5Fe?ÁòæŸj¹e×Lvš\™)†>—p;u¨Å¡üb©ÿÁ¿m B€´ÐÇØô?)öÞD»–ôM¼ÙU°G9Ra±üTmÝÎ?Òt¨ æ(é&ç²æ4–8;bƒù›(I+n�n¿ ¸ ÷BÊ©Ÿ ˆîHý>�œH<½øÎ£-)î~µºkä‰Þí;[<ÛK:Å XX)Áb¥¿¶íýUÇd:GÁ…ñ ²îÕz7Ñ!®Ö%Ñkè.LÙïNý&x$ó(ç8ƒ¨mßLúÝ÷Ið;KWLÇME±çÀãbiÌ OyÛ| 5meR¬ýÖŒaét‡N@÷lÂ2d¾F˜�ÙT¿˜žs’™Z– ºëa›½U[jÇ~ÿÕÃø�Ó¦~.ÆCÊ›3ÚzÂ]�LFë>c€SÜ®„³6¡ëUU[öMÌ*¥aN>²·èÔËò0ËP[Ó«:Ø}V!6›«˜±'x€œæébán#Æ4Dé!]‡¸RÒ œëB*Ž[Ãa^þŽpo´ÿλøõ40$øågºßt¥š‹ô�â·G0¸Ï#·sÅO›0{‡²y Þ†,šgS>QV¼DþÇU¦jeçþÙ� £twã3¦é×` ÔK=fÒÌ3Ö´21ºÁ ›ã™/_¨xéåDBŸa7)¡zÜ'=fª‘vl�¦_ñA++°´Z‹ÒÊ)±›$­#ÝÚR-¾•U‡I‚[©øØnk�/8�Ügé q¾—â“^õ~ž²qW[µû¨$>¢•D2¤+ëÀ¥#ƒmó>KFm©i¹„b]¡ož�-ïø¹)ªTš ö\šÚʲ²üç¬ µÑP$‡Ç;? sôÛÒ;»j'à ÚjÂ- ½‚µHÍÛoIÀZÁcÃæ…ÏÍ ƒ¥‹ô7ÍÛâ3knóî Tº_E_nñß™Ë��Rwz£ž”4 ÒÂjØÂûFçóÝ®¹š¦¶’ÂÔuÝÕhÒ:A擌# Ž«êüÕ©žg~÷j²ªóœo.ª�W}s¬Ó«ófª¯ø› ²I}Û…L(Ò©{½_z±¿8*‚‘q8ðby͸“ 'q°œÑWÕV×Ô©çqù„µZ@ Ã1ødú|+öιƒœ6™“½qð\¿Šg]I†ž£¶ìiPH´û*»ž+¾ÿB!s?þE‚é¡ÿº$±|ê\û(TỸp§§”‘ªµe¾ÍNÜþöú‡8 %+ƒ}Þé9¿åC•޼×�‡ ñîÔdwÙþb—š“ë�•äê½^ù…â„…›wÛgrñùS±©BÕàÍ‚Iוµ!¹­õÄ�Ž �&ê�Y¢8ãòÁt|  Õ¢N1ëx&x‚Ä_†jïñ¢åhdD½¿‡ÅVN¨ )‰_æÙ`]†Ÿ½F—êI÷äÕTðÑòÂÉ \8ʤEKq²Bì±^}c¿¤’¬ÒÏ5£[á;{^¥èŸ�Üm,øž=Õcñ‚«pÇ j PàÏ¢"~àt‹·R-@ðsêùkyðrį7J—ô%¸þ PºhusþRÜôaõµðÏÂôLq'+Ðiܪ�ö…<ÃäÛ¡rw ¦l<»DÑp»WF8ËËq�kVnð<+\––5ªµ×ñ@³ôƒGáõºŸ‡è-æ!õš¹á×7pýµfuϲGÞ*™ÓÛ±´µtgÁ~RÁÃ¥wÔ[Qû4îÞܧÒùÊ+áÛ*ÇÅV*MAê2Yv®Ae‡×ê:õÛ‰·JgmWaÁH(k’ÁÛö` ΫuJì¡|�AD)�Ó÷M1» Rºa'޲§Y»oMí’²óÔð%ã�ùBr ±oA»J;ø…€à+&¡„i­âët)`|+/š£.õ Õð=\o)SI%J‚–mä^2kP+„6»†Ú_´³Ä¥ðJ‹¼YÀ߃ªÞ»økø¡¦Ÿšì¶¯Ó´�TÁÝyB"šÔX4æ>®‰Q{gk¶­ ­€ŒfûóG[oá¥rK0÷tp5¨[È¿”OÑó‘Í}û½dÆ$˜Ž.E…ƒ÷yPJÛÍ›ŽñbÆR¤4Ò� b¿„Igš©< ›ßb&ý½3í S ‹”SÀ·A=7y¤�8âh¸§Oœ�"\ë«Zw5 �ÿ)+™l³Án‘ÙÇö— ù {‡ð" ²�³ðÙ‹î«�®�ˆG\-Íž¸O‘vruÌÐp8"Bœ5: *L¿{óñVƒ�4äc7ªXú—FÁŠ�ɼY]],^‘WÇC¤©^ßµ¾ýE—S—"Z'¾a÷¹«%)#�ˆž]¢�ôœn·dJh©ìùi˜]µîóéPƒùèKHÆ6–x¨[G)¶!lز¤ùüšYÓTo ØécÐrÕ‡ðàiátl6¬AÒ2�¶n^3™ž¯Ð3—Eš)»82òñb˜ÎØú1§Ú¸Nj†Þ½Ì•Á;L]ŸÞ¯ï2Nƒö >q_�$ª°¦~Qˆ¸K,Œ]ý Ñÿ~BÌŸ-iVév>|GÀ¿l³gm÷“YT5¹^š•ÓYpÆÅ4êc Xà0xJ@ó”ùQÈ©Í*Ÿwq-¼ :4:q ©K«ÃË/y;ªbx<æQ�©¢ª‹l–zÙ¸ùÓtZâiu¤š�€`±?‹+`�䙓tß¡ò»õ1‰·^‰t¼þ Ap4ï³o<ÈJø÷Ö;Ö×DŸŸî0OksN=¥º§b‡!ä+ pô£I…’Mù„ÙÑL®/=+d·xZ@¿ws}‰úzüúyîH…áêLõB|gÖYÐâÆF¢ÐåˆæùÙ®gn‡ˆo~K¸dY’ø«û˜¿Pò�øñŠ\MÌ�‘£m%›`�ãF§�1*7OîRèòÊk¯W¤Ïý@Š6á!ˆü•[Û\¢·U|�û‹Ü ªá)àì«|moÛæqóç*kˆ[e�Ðù$þ[íqõæ,:U¼é!ÛÒŠñUc,Ä\Íi7c®;½�Ü[¯¹ÅÌúa]ñ‰}Ë´P<6TÆRmËU ŸãheÖx½p˜BCvçD5 TÍÀ\ó�ñt&ÐÓÉ�s?Â~_¬•µðJº~†­8êÍDñËçÓÉ.�·š8Iª3-Ðé±à—ù~7U^­BUv�q£þl|åÁOªþEûã©áûäíˇj‚FÝÊoàR¢r¹äž]¹É[¿d]Âopº3ÞÑMû™¸ê·ñUb1Ö'‘÷Ú‚¹1ý~dP±×›oBÞ?m.žY7<ÃuÊ3¦SŒäÌ2”“…`[Yïk‰ôÚÿ£�jC† „a†µÍ0hPmagsòÅ LV¦:^Kè:»Q’Ί·¡–¨u}.¦ûá#H;º_iÔ)3‡—ÝB4wuÆ‹ÙM{º pi8 ›—[s¬Äû®Š7Hhèr㯦7ÇÏ‘&0iµ-ø¾/•aã§8oö„r#‡·ÿÕ½1Õãý<¢²àX¿hQúàˆiµš‹"÷È?(nXE†«8?W±˜ ^÷Úµä)FÎnmÊ`²Ÿx\éñíLåI¶…ƒìø“� +Ó°QàÕb…N0žLצ\L†›‹¶á7;õyYŸG:¬*Gß`Õ´¡ØQ“ äU'Ýq[±âFuIy‡>ÛJ†I3~1ó�›ÿÝóÕÃÛÙ  ýì‰l47´�Ö‹ªØ9'åÁqƒêË×"u»€izxýj;Û˜È*;ëfÛÕ¸“ºêoÆ7bhŠ0–·}i~mu›#hº1÷aòÓ4{(’ÜÖåqeæ¹²á4òør"¯.Éq‹4"Yk¯U·¨W ú ;﫚ôÆÛp.ö!i¹äÿMÏ·O|:ÐÆ__í¦î).RQäƒF°4n¤öæÍß]GI®Ð²Ò¯ó+ª—Ñ'1Mld-X%Ls®]GËÂn:ÿ¾ú ¸´Êܯvô§ – ظá~×̺Q°4XMøÐSÜø.2ãÉòÖ�mìÊÊxyõ߀¨‘öÙý{¹dn§O×Dÿ|…bR€w$•›œøƒ©u":§Í¸/ZðÌšëRadÂõ¤¿„sWéË÷|ÅßÔZËß^ñÑÅd‘Fþ.ôìB ãCÈt1Á›ö:L'¼âéøê`ÐÉÏÇü‘´—Xé›E¡m)>— "x4UÒ(®ùžX†]îñŒ€ s�ß_ WG¸ŽUïÂrK}.ˆ;Öb®tȵÂÚA¯]#DÛ_ÊPšëjS÷&þ=p=dÿEƒ[v^W†è$$ÝÚ� cišh°Ì[Xe÷ƤƕG4[sî¿g.9Öè/©p²º+þ'º±,S+¶.‘ì …ÓÑŸßû»Éì4Ù/˜S�%±kà?¦|þŒÁŠ˜·ß:}A=&>•g8ò­lêð‹Lø.À‚‡RïšEÝãìyÜÔ< ìøªvƒH÷zoÜe.lö¨ìCü:e³pˆáŽV v“+mõù é¼±·wÝ~I4ÁLQ%%¯÷y¦žák´ �8˜±›ÁÁ²šgéÇŠ¡5ž€LŽÐô’ì¹=Ã=«Ô"… úSáS÷ÖÍÇ>N¥_SZËÆ”“!&ݰVÎÞ5#…"¥ÊI?½ž$jæ9ž9%Ê,ÙÕ01�TªkÑö½µî€+Ýãz”/Î*]íšœ"YaàDuŽæ‚Ô‰:-! Lþ®/rœô¦ú�‰´[ë#XeærÛCÓÛf2ÅP‹ÔÅ;~„廉PÎæpœ 5щ˜EF¼¾°¬à1å™}ÇWúf´8n(3 ÍuŽ¬ÍÆ€.z0+�UõróügV±áZ-¯ŽîèDQêú™íõ'ùX�j­ÌPËžjˆN™€} ˜\Õˆîß~D/ç‚e¬¾¸Ñ_Ä^§ºÅ¤@GEÕ%Ì«m Rqù: vÒ>yåŸãoé?ÝÄñC*Þè‡3‹ÍXƒ«‚¢”ÜtÓÞ'Ù OÚ'uÙw†tÈ©Ÿ«—L$]! ‰ÿ3ELÐ]&dJÿÓlÂKŠ&ZWèÉÉê-A#ÏA’޼"� “xkƒµÊ— [7DZ[åÅ �Úk´åA \ÒœAqUU¼±r¹íÚ8û<؈óï³\{oûwàÑË¿…iÛÿʃô¼ÿ¢ w.VÅÜG¬Ù£ÿ¾L°Æî|¿o]õß067΀7;6žçvét;¤õúÓàÅU•OÓ̽²�iZ]Ɇ¼þã/-¡"‚¨¢v ‡«i't·[Ivå¥YSV`׎ ƺ_ÿ­oŽ“åÃÔ@M±uÁjë¸É•͉Þ×Ï 1¿"‚•ŸàûyN㸋¥æ’Åž6–G‡*TSv’gµ¡¡)"€ºÊ×[rwÊ}¼qS{4KÝÄúÛT`ññEçÔí‚€ü‹ e¨À­Ö•ª¹­žþûV¬‚�°&TµÖÕÿ>áøÿÝó¡ËXcæòoÂ_»r͹ƒÿ¦éIP—Ä?®=tá9ný‰‡ý£©¦§Z¯lö?PKû±RD1Lúw  nav.xhtmlÅXÁnã6½ïW äkdYÎî&œÛm m±E¹Òm¡I�¤ì¸_ßв�ÄsˆkÀšä<=òi†�šVn)áy)•½M*çê›,[¯×ÃõåP›E–O&“ì™æ$í¤^7³3EYÏýÜñht•éÚ&wŸ¦g%5°é„“üî¡âð°ærÅÓ_Yá´�ou=ÍÚÁv¢ê —·‰uÉmŹKÀmj~›8þì²ÂÚ*Ãçû3†Ô›ù‡fÝS§3]nªb+ Ö7H ˆò6yøñ=i§ÝÜ÷á`ê%ÇøVù6FK($³¶Åìºý:¶`R¤ùÞ²°€¢�òa»·ûpŠ­™:ö|?¶�—±�‘:@lüjø¹ñAr;‚¿ á».ùŒYþ–ÖjQz(^˜r˜æ@+ž�Oê +žx™ •¾Vh…ƒÊ-Ó%S›´äµÔ{¾[àÅ¡C„€BA‡ñäá½8²Ô)ÅÛ�Óò•rof½Ú¨ÏýZ^Æ´D1æ5W%W…àGñ‚~‰ ¸øs-E�ÉHjá3 O™BI­–ÌqRpK·WÆ_¶8pq à@]ö‘¥˜v_ûµûÕÎg¢š‹ÅÉd»ŠËh,–*ÊDâCùç*žrµF«%W®Wª{Š…6–2 ca/ö<ò\÷Ëó%&Ï?Cø k‡P ¸çf%Ц×$®Sà;p†3—ÎZf© ÌR†?çXQaõ4ÜêÆ‘üz @ÐÃ_‚-ÐyÌGý~�HH 6B–dN8žØhÔÉDÌó¸Š_·ÙfDA%Òòšª‹3bê+%rL­c‹ˆ~÷:ð¾H"´gR.âQ®bÊaiüËh|óì ³.‡M¹Úžj¼hP&*‹¬®)ßȹh“.©nâf;|ǬMëŽväpóp¾R"eºE‚ƒ-Ôý»pd'>NȈA¹Ž IJjƒ…F¨ ÍéÄ|‡E¹ÞY¤´+ž+ÁRßHÆ| ­g[01êè �¬òㄊ¸‘I\¨ÖŽ�1èª6§ê¦dÒ•É‚IL²Æy‰(÷B>`Ö•üÐjv+º§XÀX¯%Zˆ{&™ú]I>й’G4üÂÖÚ²™�Â�P¦¸'騖ìY,Å¿<5zÖX§H µpU:gÖQm4®©ýÙ¶ÀëŸ72µUãJ½V½þpa‡ „ „ ×x.t¸ç‘wÜïXòÃv &uù*õ<ÔO©ï8îV:ºƒ'Îk¼¸­¸Ô5zoOÈ~’¤D¶)]ÕñP´(ÞÕ¨‰/©3ú&Ó#ñï {а/¼®;p:"85;ð3éÜïoòØ7˜G¬µèÅé¬Í8nm:’áF!‘©†Rx�±sùž Å‘ >BÜ™Té7+yìkÊ#�ßÊ%Þ`#¶ë#Šû•Žð€nŒx-™BSïSÐ1ûd·6t>§ñüo*Ûa�Ç ”°þg×ùrÆþèndš)¶¢æ4k¿O3Úš»OÿPKë©RDGn±6Ý·stylesheet.cssu�1nÃ0 EwŸ‚K—vê¦é`]#P,Úf+‹FDU‚ܽ”Y4‰Äûú Þ~§‰"8(`„(ÉëcƒƒÞÛu^#: 2!œ™`·¯ÎìÜ`¶—‘BÇ7‚¿R[O£îßk’��ƒÔ‘®ØÁŒŽÖÙÀ½êÙ¡~ÞØ`gòI)Ž‹í1¦VñkŸÇA6ðQ‡ø,�c |•@ۉϧçK»ÊÄ—Çvhœ•aß÷:.Ö9 cïæ)ªÎU´¸ix=iÖSTOÙ}-iQ[�š¿ÚðÚv¯þPKû±RD#"pçititle_page.xhtmlu�?OÄ0 Å÷û&û5W §´âÏ CÆ\ê^ªK“(ñÑöÛ“´HÀÀd=û÷ü,‹›ç·§öãý4�¦Ù‰\`��5ÓDþÈù4MÅtW¸pæeUU|Î Û #úëé9t¾_ÙÛÃáž;YÞŠ²kvbD’ ´ ©fWê÷ŒÿL¬±fg´$¹À@9Khê¥íœúfi ƒM«Ú Í'î_¥J8�Âeª2!Ÿ¦Á?÷Ÿé(xûn"Óõî«$Š.iè*«i°0¦¼ ÃÕjuž1Q=Ÿ+ýþ¼�®Bü2„¾apûŽ�É‚³ Ð,¸aD²‚OƒÌÌnj‘$UÒpi¦A­åM ¯n.ç³ì:Ï(O†3:ŒÒŒŽØðš^�F£d GãÑ0 áá13^šÅÞ¨ñÑ/�2,¿cOü£ª¥ÙëíR°5vø«.f\è1 Û`'™Jï…ɹÈðµ¹½_pr¿âù’ÓÏ,5J“e9 ›ÿšÞû�&’-¿²Òö‡‡;%¤!"›í�‚Íß›¾°ÏÛž˜Í‡áËΩt: Rú·„ÀÏ× Sä»é [&o² Êœ=Ó×(ÈÿÁ9]DQü‚îQ‚‰C0 öø¼¦Ø’üãœ|TŸ±Š»Ô‘;D/yEï(Á ‡àEà°9D±%ùMrX¥–Äh–þà’h¾˜ÖÍÖ*?#“Ï’'WÏÕËxGôFL%9mq©Å¥BÒ—Z\аÔº3ñbm|sx¶†Îl =å=ç%—TBÁ_Í�Ÿ¦þš^:,/ý5ý´.s‘BN¢^iÎ4'L‚ª•Ê™á¨áÑ ü…´� øŒZ0 `Ô‚Ñ}°SÉwåLÌ•¯|M>ʹxê§ÜÐ_¹k‡àµ¿rß¡”a>"KÌBuŽË¥ÐJ@¦¿Z–ü BºÀtºp*…FÎŒ<z8'¿A!�A¾s½iß$»ô—jì0ûKu¯93dfùV–/að3†¥ (£šWªÖ¢ð×ÍF20ˆF-mÑ(ƒŸE£[´S‰Gî¶ùɈ*Ö"ÏÎ þœCy‡F-û yå/düÂDÄ]²N‹«eÅK¦±DÎ0€¦huRp6ÿAÄ«mòmph‹Cœ¦^ÝàœL>×´Äž®åÊä�V°Žª¾éwÝA5׸Ĝ˧5OkÐ k$+KÌ<0¼`�E&ÓÀú«*R‹Æ_Áëíf×`6e01ÿÐÈ(M“n1éódjºž%ö4-¸ëÝ) •JH<½õStÔAQ×¶ÄÝ| 2ÝÖÒ¥`¤|ƒ»¿~£�Y�ñvõhóÆ"œL-עĞå¡5)i­5x¦ç~j�;¨åZ•¸‹WIYéV›F'ÌB»è!ÿ2ž÷kÜ–K ÐÈ„)ghp2­\³ûº•G8ˆªT›‰\˜~ZÅQ­\¯w0+_ÙZâ''ZÍêÊHTi%Ì‚ÌYe°TjS—Í~÷G1>¯sR-j“©Õ«�Û[Ç6´AaÁéœ"8EpjÁ›M°§-ø©4N\+“xZ”˜/CXv�»·È¯ïŽ3umLÒÁÆüÉy ‡»%ÏU‰fþ¬1.PÕÎe1Š:5x¦‡­²Ià°†MX•˜å¯.)ü•¶ñ ~ºÇ€Z�¸;|Ü6->6[ü“‰ýâ¶ÆÓø ¤�\ch005.xhtmlPKû±RDôuGÊÎ ¤� ch006.xhtmlPKû±RDTཀྵ² ¤� ch007.xhtmlPKû±RDR’U ¬( ¤�î%ch008.xhtmlPKû±RDw·£ê ¤�Ã*ch009.xhtmlPKû±RDñN¡eœ ¤�1ch010.xhtmlPKû±RD¿‡î/{j ¤��7ch011.xhtmlPKû±RDnÙï} ¤�3@ch012.xhtmlPKû±RD7à  ¤�ÙEch013.xhtmlPKû±RDµ!ŠÍ; ¤�Kcontent.opfPK ö±RDíANimages/PKë©RDæÛŽ 5a;c¤�:Nimages/img0.pngPKë©RD‹ÍsBÌL|R¤�œ¯images/img3.pngPKë©RD�¬¼Î{Ú¤�•üimages/img1.pngPKë©RDdL–¸n6÷8¤�~Ëimages/img2.pngPKû±RD1Lúw  ¤�nav.xhtmlPKë©RDGn±6Ý·¤�·stylesheet.cssPKû±RD#"pçi¤�Àtitle_page.xhtmlPKë©RDŒu�+¤�Õtoc.ncxPK9CMET -o|untitled-book.mobi| V2.9 Mac 1 Info(prcgen):I1047: Added metadata dc:Title "The Twelve-Factor App" Info(prcgen):I1047: Added metadata dc:Date "2014-02-18T21:15:22Z" Info(prcgen):I1047: Added metadata dc:Creator "Heroku" Info(prcgen):I1047: Added metadata dc:Rights "Copyright © 2014 Heroku" Info(prcgen):I1002: Parsing files 0000015 Info(prcgen):I1016: Building enhanced PRC file Info(prcgen):I1015: Building PRC file Info(prcgen):I1006: Resolving hyperlinks Warning(prcgen):W14001: Hyperlink not resolved: dependencies Warning(prcgen):W14001: Hyperlink not resolved: codebase Warning(prcgen):W14001: Hyperlink not resolved: backing-services Warning(prcgen):W14001: Hyperlink not resolved: config Warning(prcgen):W14001: Hyperlink not resolved: processes Warning(prcgen):W14001: Hyperlink not resolved: concurrency Warning(prcgen):W14001: Hyperlink not resolved: build-release-run Warning(prcgen):W14001: Hyperlink not resolved: logs Warning(prcgen):W14001: Hyperlink not resolved: code Warning(prcgen):W14002: Some hyperlinks could not be resolved. Info(prcgen):I1008: Resolving start reading location Warning(prcgen):W14016: Cover not specified Info(pagemap):I8000: No Page map found in the book Info(prcgen):I1045: Computing UNICODE ranges used in the book Info(prcgen):I1046: Found UNICODE range: Basic Latin [20..7E] Info(prcgen):I1017: Building PRC file, record count: 0000010 Info(prcgen):I1039: Final stats - text compressed to (in % of original size): 51.79% Info(prcgen):I1040: The document identifier is: "The_Twelve-Factor_App" Info(prcgen):I1041: The file format version is V6 Info(prcgen):I1031: Saving PRC file Info(prcgen):I1033: PRC built with WARNINGS! Info(prcgen):I1007: Resolving mediaidlinks Info(prcgen):I1011: Writing mediaidlinks Info(prcgen):I1009: Resolving guide items Info(prcgen):I1017: Building PRC file, record count: 0000014 Info(prcgen):I1039: Final stats - text compressed to (in % of original size): 50.36% Info(prcgen):I1041: The file format version is V8 Info(prcgen):I1032: PRC built successfully Info(prcgen):I15000: Approximate Standard Mobi Deliverable file size : 0000129KB Info(prcgen):I15001: Approximate KF8 Deliverable file size : 0000138KB ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿdeaéýÿÿÿÿÿÿÿÿto éýÿÿÿÿÿÿÿÿs méýÿÿÿÿÿÿÿÿað@MC0BOUNDARYίMOBIýéäÍ-0ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿH PÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿEXTH0t æj2014-02-18T21:15:22ZdHerokum Copyright © 2014 Heroku 2AFB en horizontal-lr�kindle:embed:0005ƒ ,,€º°»ýÌ ÊÍ Î 0730-890adc2Ï } The Twelve-Factor App<€1ømlns="http://www.w3.org/1999/x�Q"�+:epub�W�Pidpf�b2007/ops"‚¨ead> TheÔwelve-Fac�xÁppI.Ãodebase‡'‹‡G‹¿ŽwŽw“ZBŽw�'޷ޱ3Ž·“?C�7ŽïŽ÷Ž÷‡§Ž÷�`M•—D’�‘G�7˜¤E">One§€‡Ëôrackedén¦vision¨jrol,íanyäeploys�?”7�”ß‘&li—‘Åoœ$’W�7˜_˜_-4˜^‘xžÅF™ß˜«˜«‘4˜˜ úGœšÇ˜Ÿ¢H‘(‘0Dependencieˆ?œg˜—�ŸÇŸÇ¤«IŸÇžw  5 ¤�J¡‡ ? G G‡Ï G™` GIK£ß¢— ‡©ôL">Explic¸(�1³pre ¸øésolate�шǡ7¥7¡w¥×�ÿ¨�ÿ¨§’/§·©W©T6©Všð¯½Mª×©w¼w©w¼‰5©w©w±òN­«¿©—³O�ù¢2nfig©G­?©g­ß°—°—µzP°—¯G°×°Ñ7°×µ_Q²W±±±‡§±¢'¹‘R´¯³g±WºÄS">S¾°¢1‡É¡át¿˜environment±§µŸ±ç¶G¡o¡o¡o¡o¢Ÿ¸'¹Ç¹Å8¹Æ¡¸¾MT»G¹ç¹ç¹ç¹á6¹ç¹ç¿ZU½¼/º¾ˆV²�V.ª€ingÓervic¡�½çº¾‡º?º?¿ËJ0¿Ï¿ÿº_ºY9º_�Ç1¿w¿¯ºº‡ïººèŠp„2¾W¿¿ºŸ…L3">Treatâˆsˆá€ttach³HresourˆÏ¿¿Ÿ»Ç¾/²�¾Ï²�½Ÿ³¿¼7¼7-1°¼<«8‹%4½ÿ¼¼¼¼7¼²—�Z5¾w¾g»ÿŽh6">‘!uild,»ˆle¼ €Hunºÿ¾'ºß¾Ç²Ç²Ç‘:7¿ÿ¿ßºo‡â²x²Ï“8ºw¾çº—º—ˆº—²ÈA•_9¼Ï¿×º·–ŒA¡ùric²¹separ²abˆ™²òˆhótag»g¿g»‡»‡½ç²§¾‡²§³×³×»÷»÷12»þ²øœ5B½¿»ß»ß»ß»Ù8»ß²¯žjC¿÷¿÷»¿ŸxD‘² Pro¡èsºÏ¿çº¯¾/²¿²¿¢E¿w¿Wº?˜ª¹ð²Ç£ÍFºG¾·ºgºg‡¿ºg²ÀQ¦'G">� €€^Executeôheáppásïneïríoreótatelessðroc€@es‚ÿ‚ï/a€¿€¯li�o�Mol‚�7…—…Pli …9toc-li-14"öalue="7"†I"„G‡ aèref="kindle:pos:fid:0009:off€I€‚?J‚?‰W‰W‰PK">VII.Ðortâ‚ØingˆO‹Wˆ/‹÷ Scal¡xut�Š¢1¡L¢del¡o¤w¡o¥¡o¡o¡o¡o¢Ÿ¦ÿ¡o¡n�`¡l9¡nK0¡o¡o¡o¡o¡iB¡o¡o‚:1£§ª¿ª¿ƒH2">IX.Äis£ðabilit�·¬·©—­W¡o¡o…ó3§_®w©'©"‡h¡o‡½4©'°—©G©G‡ß©G¡oŠ5«²ï²·‹D6">Maximizeòobustn² withæas¢ tartu³`ndçracefulóhutdown²ÿ¶²ÿ¶¯²ÿ²ÿ²ÿ²ÿ´/¸�²ÿ²ý2°p«E°ÏK7³³³³³C³³“Ò8µ?¼W¼W”à9">‘‘ev/»@dðar‘§¾O»7¾ç³³—•A¸ÿ½/ºÇ‡Ê²¸³™]BºÇ¿?ºçºç‡çºç³3›·C½¿�»œäD">Keepäevelopment,‘Ag»@,‘JˆÁuctio¼¨só’ølar€Y¿sible¼¾_¼Ÿ¿´´´´µ?¿½‘κ`½ ½KE¾ß¼÷¼÷¼÷¼ñD¼÷´¥šF¿O¿?¼×¦¨G‘È´Logs¼¾�»÷¿/³Ï³Ï© H¹¿½ï»‡™BŽÐ³ÏªÕI»‡¿ÿ»§»§‡—»§002G­/J½ß¿¿»Ç®\K">Treatì‡À��‘¸n¢É€¨mˆO½ï¼7¾Ÿ¼ß³¯½³¯´ß¾¯¼§¢4¼§ºWKL¾w¼�¼�¼�¼‰E¼�³·µêM¾ç¾×¼o¶øN�Q�XAdmin¼5e�·¾»÷¿³Ï³Ï¹»O¹¿½ï»‡©ò5³Ï»‡P»‡¿ÿ»§»§‡÷»§³È¾(½ÝQ½ß¿¿»Ç¿ R">Ru¼8ˆ /manage¢Iôask‘2one-¾¸ˆï¼·¾—¼×¿?³o³o³o³o´Ÿ¿O´µ�¿¤µO<€1ømln®àhttp://www.w3.org/1999/x�Q"�+:epub�W�Pidpf�b2007/ops"‚¨eadƒjmetaãharset="utf-8"/€×nam¸ˆgenerator"ãont¬Ø="¿€d³P�ctitle>TheÔwelve-Fac�xÁpp I.Ãodebase‚¯ƒÀone‚¶-tracked-in-revisƒÐƒ˜ntrol-many-deploy†˜ƒÿel3ƒÿM3ƒù3†Ÿ4">One‹ˆŠ“ ƒénŠhƒŒrƒ, ƒ ƒ‰3>Aôwelve-fac�xáppésálways„náöer„olóystem,óuchás Git,�Ÿ�œmercurial.selenic�ï�³7">M�%‚… ƒÏƒËsub…d.apache.org„HM8">S�&„Q.Á—@pyïfôhe‹�*ingäataŒªˆèknowˆˆ‰0 “¡—Ðposi™èy�.The‡È™÷a ¡‰to-¡Àª8r¨�a¥ be›¨��“YŸvªð“âœ:Žêul§wH§pli§÷I¥P•Z‹Q‹pmultipް§­s,ét'sîŒ a�ðž¸--€›Œ@istribut¢èž3.Å™H�qp§(ntŸ“�G�E’#¡1,…Še�²ƒ®°ividually‚:€8with¢ÿ¢ù•°li†W®AJž�…í£ès‘ú›‘œAs´h¨‚¤¢öioŠ�A¥Ç‚È ‹èóolu°ŒM›H¦Ä”ªd‚dnœlibrƒHe•¡i†,b€áclud�!hroug† x¦ÖX€€_€¯€ø²÷MK">°endency­�”Èr£rˆ3/ulž¶�L’‘ÈŠ8‘»°lpe¬ê, �¸�Ìwill…¡°_­˜¦®@¦©¥¹˜M„Š´  òunn§instance‚‚Th°XŠ9ypicŽÒaðrodu»C§ e�;— ±èmoŸÈ‚@g©‘€ñsªÈddi¼±�É, ¼rµ¹¼Ho†‘hª2«ß—ú„¯™irìoƒø�½m•environ€a‚°•á­ØŽSalsoñ”PifŽù­B¼c©¯¿ŒN�ª»—‘™“½acros¸QƒÉ¾R—˜lth�²diffŸh™H¸´s¼ˆy’ º8iv“!˜ãƒÌƺàexa˜À‰™ˆˆso—:©Q�“yª ¾ã±sФ;Šî�·�·�·�´�_.‘³Ž‘ ­›±4,·àu†I·’¸@Ÿx•ètŠ@abœùs‡Ç“‡¹“‰›“¨´Â/se‘€W> II.ÄžU¡�‚ÿ»ÈexplicˆHyƒ0‚Ðre-µX-i«hateƒ×ƒ×ƒÔ3ƒ×83Œá3†Ÿ4">E‚ƼP‚¸‚ļñ‹�/h3½ †Äfirst-para €_-after-hƒ·285²àost¥¡gra𸲏langu¬P©Qž¦‘ack¥œ·#f±€¹¦Zupport±§,€˜£Qs°ß–.c’ –*‹ß86">CPAN¯ùƒPerl©™‚˜rubygems‚�#7">R€Ü‚&€‰.̶N®"llµï†ï†ï·F�e¾Ë-wŸX (know¿Ðs "®éˆÜ’˜)®ùs­@º ¹ú¼ñdirŸ8o®ˆ™ñai²J®%‚_"v¸ o¾¡"±)"bu˜¸€q)¬‡—T8ž‹Ào¿ø—ö9">A¿o¾j±!n²Y›Ñ¾˜QªØ•9«0�Ø»˜¶Z†ï†o»øƒ#>É«9–¢¯NŸ6,¬‘­xte·Á·(­øc˜0,öia¹ÐºÞ�A¿g¿`™Ca¹)»[¿èifest°@ur½é¹Q, …pusµ½GŸ�B‚o‚h›K‚^too¸PuŠy²ˆec•¼X± ensu®²at² ˆ‡ ß¸h  ak¿h"ærom ƒˆ€�À¸À‹theóurroundingóystem.Ô€Àfullándåxplicitäependencyópecificationésáp�(edõniformlyôoâothðroduc�B‚qdevelopment.

    Forƒˆample, Gem€ó „8Òubyïffers ‡aía†est�ñma€:‡¿yˆclar‡«ˆÙ‚‡†F">…‰ ec‚¥‚'‰Úisol‰º.Én,ÐythŠŒPr„Ѐ twoóepƒ9€hools†Z�Xs�hteps --ˆßˆÜwww.pip-instal‰org/en/ƒ`†€‰g28G">Pip‰"�Èus�°‡;†ç†â‹ïƒvirtualenv‚ÿ‚ÿŽ+H">V�>ŒV‡·ÅvenÃèas�†7.gnu…âs/autoconf�O28I">A€¼�6”Ç�oŠØ•éˆpticìink— can”‰vi�8–Œ§.Îo�(tter÷h�™Œ)chai�p˜�g–ÌŽÆíu’alwaysâe‹toge�!�áon˜øone Ž» ™0ƒxš(notœxfšÀi˜øšs›sfšhwelve-factor™Ç™ÄJ">O‚xbenef�@of�§�§•ï�“t†ùž°si›hž`es“¸tup—¤�2™Ánewža¡YŸ( ã€¡�Šªcheckïu‰“ p's ›iba•°on‚ i‚Οù›hchinŸ@requir¤ ˆÚ¤±languageòuntim�¨¡â¤�H€ð’À—„d ’xprš(‚Xsi— ¦2y÷i¦8Œ0abœ¸Š‘et ‡(¤0r›Ð§©need�ƒa…ÿ…ú�ø¦a§Ø��minis’q<£X¥®KŸ©ild‡xm¡ød
    . ¦O¦H«A�/ª©¤õ/¥œª!¤÷¨rL¢vž¬¥,,”Ð¥˜§ Clojure/©W©Ps©Y…Àub©:techno¦Ðcy/le† ngen#readmeª8M">L€õ ë�ø„¯­N">‚!°as©¬®?®T•‡®ˆ°è±lsoäo—*re˜¬¢“ú²ùexŠð²ð˜Àf³È³(´r¨#¡¸°³s�˜clu®8shelžÀ‘¨“±oÉm‘€Magi”Ir¯g²ãP">curŠ%.׊"ª³«3may„#„ѰH±Ð´`¥imo°�¸ãsŽj­X�z • rante‚Q¡s“”‚N¬h�Ý¢�¯)šTƒ‚“‘Šp¼AfutŽP, ©�@¡b¼ù•@s»!f½!‚Š�Tˆý— ¸�p¼x—9•ª�ŽIfƒž—Y¸P³‰á‰Ía‹Wol•i§Á³È‹ou–Ȧ ­˜dor¿iž\ b¾/se¾ò€W> <€1ømlnsµ�µˆw3µ21999/x�Q"�+:epub¶ß¶Øidpf¶’2007/ops"‚¨–> III.ó¨ig‚¯½ˆs²xe‚´-in-·x-¾ðiron­ƒO°�3ƒOQ3Œ 3…ï4">S‚aŠé‰à–­‚gt‡¨3µ±…Üfirst-p½h €_-af»Ð-hƒWIQ5¿�»²’«Î‰�6ž��L«�º®¯¶ôs¿Èk£aºXvary¼xºPž�©†X€€_€¯€øŠ÷Q7">º€loy§Ø©(³Øgµ°,³Èodu˜2,¹ß‡ïnt¡¸etc)¹ñ¿@¦s:¾Jul�'8–Àli�§9">Resour¨°h¸¨¼ldataºñ,ÍemcºXed,¹2o¡â‡‡‡o‡¿‡”!A¶hac–�g¹Hrvice‡ZC €¾8i®ÈºÉ—€erna§p�Ìóuc¹àsÁmaz¯hS3¬¹Tº�º`‚——ýC">P�à‹ �plu‚¼²canonicƒh¬€ž±º2ˆbŒ²…3/u£ˆ´tš¹D’´so¡@œÐ„À•Og… €»�(¬]¿Ñ�]µÈöiolªØµˆ´Ð’¶ß¼b‡0requir´è€˜ic²e—q‚=™Dfromƒ‚ª@�Ò´Ø£û•‰iŠ2b„ò‹@¹¨across‡Œ´h¼òdo¸¸ºÀ¼W¢œF™à˜tmu¯°e¶Ð‰‰²õaš²’¸¼ál�Ícorr®ˆ½½ë¯ »‡ÉˆÔ·Ùµ‰s”I´±tma¼ø˜n‹¨•ڸؾ‰mŒnt‰ µ½©µ™ˆis¾1¿‘c’Ÿ†g¨üG">Not»N¼definiŒÅ"¨åˆrŒGªôH">‰‹6œ%¶‰•»¼˜l’ð«‚«;,–<‹:­VI£Õ/rºes.rbSpring.Ôhisôypeïfãonfigäoesîotöaryâetweenäeploys,ándóo �Àbest�pneénôhe‚de.

    A‚pherápproachôoƒmƒù�Ðus„gæil„whi�Xare„jcheckedƒX�èrevision…™trol,óu�as <„!‡M">†³/database.yml…¹RailsˆDˆXaèug†€m…Hvement €@r…‰˜‰ stant„燠„Çoˆ.…po,âutótillè„Øweaknesses:ét'såasyˆYmi‚°kenly‡3Šyaˆgle‰�‹‚±;‹Qˆ …jtendencyæor‰ï‰é‹beócatt�pdábo„h�@diff‚†Èplac�PŽ�€¯‚Hmat�8mak‡™it…àrd�‘seŠÈ�èmana‰ a†¸�«ŽKn �Q‚ª.Æur�‘,�¹ŽØ‚´…‚„Ülangu‚@- …Øframework-specific’?•ÌN">T“¸•lve-factˆ8“(‹¨or–(„ßenvi‚`� —8iab“�
    (of‹óhor‹@“Ø•°‚Gš`Q‚B™9�Û†QƒO›hRƒJ‚º).Å�d–š�åchˆ@e›7›3÷ith�‰€ú“Ùan�èšø;õnlik‹¾™Z‹:�£litt‘ˆ‚¹cžªœÀmž(•úš•_•Zácci’Ptލy;Ÿƒ=uŠ`mœÏƒr“hž‹¡”me†9ismsœFJavaÓyst‹ÈProperti…Lyž¢a�¢šOS-agno™xc™ £(“°¢g¥ôS¢ga‘Qœð¥¾”»�š¦ group§8.Óometim—Qpp¥¨at¤•®¤Pn“àd�‹s�­c–ð£h"‘Gts")�\a�Àr •U¨×¤%¨Y¤G«ºT">develop¢¡¤,¥w¬ëU">tª €þ«Y¦�®V">ª duct§ø¦E–w¤Ø¦¯®ê‡èhoŸ®­ ˜‘lea£€:©™m™`“Α“š*¦òreated,îewƒ?¨°‰©–Sne¢0s±X¬/¬/³¡R0">©¸–9«Í™I­O�!1">qa¬Ä.Á°³±pj�)Žhws梥ŠTešXma’pd¤øhei”¨w�x¢ alˆ§­y™’°ß„²2">j·P-„ߌ£¡Èult§â¬;mbina¢Ð‚²x¸0³Ò¹‡µC©€¹¸¨â±YЇІ²@ºxr� ¹7‰$3">I¯±¦g¦d,Žñ¡Çgranula¯r·Ñ¼ˆeº‘fu�ЪX¡¸gonˆ»»«¥¿i›än”Xr™¦ºg‘ šš—�—‰,"¶i·¨ea²³±³€p³ªtµp°Sd³ò„2¥ûºa’ède±Aa“Ôsõ¬ømo¢·x™l­™‹ur£ù‹!´ –I¸á”ï”è¼YiŽ‚fž¢±3/s P˜x€W> <€1ømlns="http://www.w3.org/1999/x�Q"�+:epub�W�Pidpf�b2007/ops´€hˆ¸> <£½ˆ¹Hset="utf-8"/€×£="g²(r’I"�ê¼="‡Qoc�dti­Ø>IV.Âac»òServi½(T¦±°P‹+†µ¹‚Í 1‚ˉ3´!†ôfirst-para»Ø€]-°’-hƒ¿3C5µX <»àŠ®6">ƒŸŽÂ
    ™B¾ðŠL«þ¿suµ¹—²½ynetworkºù„·â˜inorm§ˆ»!a°±.Åxamp›ainclu¿ data¾@¦Ø (­.a‘¬˜|µ.mysql.§˜/ŽC7">MySQLC� DB‚),´ˆ±p°i/queueŒy£m„ç„ç�_.rabbitmq„ÿ•c9">R€ÚMQ…†ßŸQkr.github†Úb·Ø´€lkd‡73CA">B€Î…\SMTP�ÿ§1outbou¼¸em» ŠoŠo¢çpostfixˆ�šãB">P€ÓˆŒ¿1c® ˆW�7�7¥¬mem�aed‹G�›C�0€å‹R³ž¬D‡—Ÿ—›¸Ê¿‰‘bas¿Ð¿°tradiª‘¬‚¯5by¼ªs¿Ð�–adminis�ˆ¹š·t'sòun­!°®·d‚ôñ¿ƒxlo°°ly-²]¢},¹¾¿lsoèavƒð�mprovidµø‰ù…»pird™ie· ˜_˜\ާŸ™˜w˜w°ê�émark½È˜‡¨ëEŽ €ñ–žtrics-ga»‘¢§››³õnew®(ic›w«ÛF">NewҀᛗ�_µÕloggly�g­ËG">L€Ê›k ƒˆ€°À¸À‹binaryássetóervices (such€¨ A€âÓ3),ándåvenÁPI-ac‚àsibleãonsumerƒŸƒŸƒŸƒšdev.twitterƒ¢ƒ�CI">T€Óƒy,…w…tcode.google…zapis/maps/index.html†CJ">G�jÍ� ‚›orˆ'ˆ$www.last.f‚’ˆCK">L€Ë‡ú.

    Ôo�e‚‰,âot�r€pttachedòesour�è�¨�B€ via„€URLˆ9���€ƒq„¸/credentialsó…@‚inƒ‘žX€€_€¯€ø‘çCN">� fig‘É.Á“ׂ?‚�‚ß‚?”O">deploy”ïf‡’Š�Š�shouldŠá”qtoówapïutŒŠ‹MySQLäatabase ”hïneŒ`nag‰€b™¨‹—‹�™§™§™§™§rds™¯3CP™®RDS™²ƒb„Znyãhangœ�…�ì's‘j.Ìikewise›0�,SMTPž*šÈc‡†Ñp�†…œ-‘+�†Ÿ¨Ÿ§Postmark„O”ê„T.É“à‘ùcˆÀ‘ponly’Ê’ …˜dŸ �„Ž»îeed†:†“˜ç¡ìQ">E”P—âacki™P…is˜à•µœÿœý‡R,÷hi­¦8„¡‘heiœño•`�Ø…`£(‘¬˜“Ÿé¯HŸ§¡ˆo¥®$T¥im‹°rc="ŒŽH:embed:0002?mime=im˜/jpg¯àlt="Aðrodu¤»ƒlƒ'o¦¸urޤÍ"/>©² U">R¤=’ø§!¥²Yde‚·ŸC�¨tœèll�ï�êiŸÛ™ƒ�síisbehav’ÙduŸâ· �`w¨yissušˆ›_admin«°r§±�ègh¹8p§Xu®À–¨w¡›ÌªH¨ƒfro•hªÈc©H–zup�“curr€¡‰¿£O�Ƈeº+­Ñƒw¤ˆ­Î--Œ0l¡¯¡©�‡° ´(/se±²€W> <¸qømlns·_·Xw3.org/1999/x¹“�*:epub¸¯¸¨idpf�b2007/ops·xhead> V.ÂuilˆØrele¬ø€HunƒO¹ø¿ictly-se¿à pƒÄ¬0ƒ¡-stµˆ†Àƒßel3ƒßU3�93†Ç4">S‚œ²h‚› †Zœ"‹P¿�‚™ˆ¸3®!†¤first²Ña €_-after-hƒ�JU5·˜¿¿¿W¿§¿‹¢6">·é¼™¿°¨œØns­�m¼¨inžz(non-d‹opm›è)¨rough€Ae¸ÐˆÊ:´RulŽÏ7¨ li�O8">®A³æ�é9">ˆ›Šò³úµ„~­·ø¼x¯p—ðº9repo…Dnµ`ecu´ð¹pbu¹ªknown¼1·g“jAƒ„·LUs´Ú ¿Ps´‘o§{½Jµˆƒammi¥Yecifi¿øb½+°cˆ©­©µ ¾½é†oeæet³ »x«�ve›ðr´È����ߎ/�™B">³è‚enciµá�˜®A„ðpiœ¸âinar€Ð®ò˜Ðet¥‰liŒ›QCŒ›öD¿éŸêŒ>ôak¸k•Œ´Ë‡ÿ�§¾�„K„¿È‰`ª¹‡y±À­E•g•o•¿–•g¡E•anfig•Q¯Ë¾0ult¼Ù’o¢PF†f’K§áainˆøo„œ›ÿ�;‚¹¸’¶�r«y»(rém˜(i�y’ˤZn¸J€�environ˜Á‹_¦®G—g§NH‹XŸ­—S(also•g"«ðtª(")¬AŒ»Ðƒçƒçƒæ,”‘launch¼Ysomºt–U½Ë¡/¡7¡‡¡×¡/¬ÉI">–ä“�gŠq˜¹s±€ct¼è±Ì“l/u¸¾ˆ®ÝJµÐim„°rc±†embed±‰3±‹imª¸/jpg®0l¶˜C»©be›È™Ù©‹, ,¥8“Td“;Ž¥pc�ø«a„–¸°½š„UK">‚÷‚÷‚÷‚÷‚÷‚÷‚÷‡�‚ß¶(Uƒˆ€ÀÀ¸À‹L">Theôwelve-factoráppõses �pictóeparationâe�Xenô�¨build,òelease,ándòun�°ages.Æ‚ exampl�0itésémpossiblƒàoíakeãhan�À€�‚ñcodeát‚‘tim‚øsinc…Phere‚no÷ay�ñpropagat€éos‚Oback‚u…b„Ó„Èp>Deployment„xol„(ypicallyïffer‡-…Pn†è�O,íost„htab�hˆ¹abilit„Òroll„>a…Hevious‰�.ˆ×ˆÑŠ¡C�Fä†ç†áލorŽà�¼ŒXn„Øsubdire�ùyîamed <Œ‘UP">��,÷Œj�rurr‰ñ‰E�‚¨ymlinŒ&�'ŠcƒŽ.Étsƒ‡”ÓQƒ€‰øŽ)ƒ„�˜mŒd‘z’t “À�quick�`‹‡‹‡‹‡�×—õR">Eve‡�Žýshou‘@al’Øsèav”õnique�ID”`uchá‡!”á—ˆmp‘H˜²‘U(�%ŠG›’S">2011-04-06-20:32:17Šœ) ›ùnŒ cr“2i�hnumb”‚�ŒÏžT">v100‚.ÒŽÕa™P‚hžxend-on–pledg–x�Ya–®can–žàíutš@dï›Y�S„H€™.Ány�$�8— €Ë–¸new‹šç£U">B¡9„kinitiƒ b™dpp's•velopers’‘n€pr‚ª ¡h–„!R k¢pecu¤‰,‚Qcon˜¸st,†Q�°‡�áutom¥¨ž3—(c—r�×serƒIreboo�اÁ‡hash—࢘ces¢eŒ ™xtar…¿€þ sr. ª �°šÀž3¨6’�ŠØkep¢é‘±f‰ˆmovŽáªÈ—Ø’P¨}§E¦¨¨èm¨xh¨(¡Ñ¤éŽsærom«Yn�ù‡¡ca­€ªÙªhb�ˆkž±­!midd« ”änight‹"©ù‹¿‘R®ð¬�H°‰©‡�ú�⡸œ®0x¬uerro�ü™¤ƒÄˆagrou°˜ˆ¸§à�&¡¨oŽªriˆ²Q¥¬Ë/s¤0³X€W> <€1ømlns©K©@www.w3.org/1999/x�Q"�+:epub�W�Pidpf�b2007/ops¸Øhead> ‚Ϻ¨œóe-¾8-£è-as£èe-or-’!-¼0tºxssƒ÷ƒ÷ Y3ƒ÷G3ŒÑ3†§4­˜‚û¢ ¬A‚ø©Ñ•‚þž5…3¿™‡first-›Øa €_-after-hƒï4G5">˜i›™¶ˆ†¼dšå¤.ånviron»"„w™Š„§/em>´—�œ7">I�Ósi›Q«A½0¢»¨…½xt¸@-al‡Áscrip§à„Ÿ„Ÿ„›¼j«.«ˆlo¨°ìaptop÷it¶`³¡¶@l±€Èngu¥ñ¦@·,±‚§Ï»à‚ aunc©avi¸0„ò¼ó¿˜·ðŸ±ex¸À¦™¾ß”Â8ˆ8yth£ˆmy_…û.py¶O¥ãoºx‚(¿ˆºÜsp Ørum„€­du–c°û¼®¨ophis¯±¶9©amay ¨é­`y s�I-�D…”…>¿êda¨À´znee¾�¶h½¡‹xíu•H·(s¨ˆ™ •"teful‹¯‹¯‹ÿŒO‹¯¥êD">bac¨Xg½RiceŠ)»yp¾¤²¨„�b¾¸š?§ÔE�Ëmeµ¨y‘Àaº�¿fi«Pystœ ¸”¿M·$º0‘°›brief¼jgl¦PransŒˆ©Ùca—¸.Æ—,äownload¾™ašÈr¿Øƒi, »at¿Y«±�8šY‰9·åresult¦½�„­¾‡&¼Ât�ﺹ§ðn¾0»ssum‘(Œú—P�b…[¥‚ˆT¼X™‰iskŸ¸ll¾¹availablª�±fu�É´Ðqu£é½àjob --¡;š*”ŸœÀeˆp´Š—­,¹Ùn·ˆ•Šhig€ø„ª‚߂ۄ Žñª¨bŽŠifferª9´Ì.Åven÷h€(šµon�译µì yŠ0tart (trigg‚‚ЩРû„¸onfiˆ „ðgŒÉr®/®/®,¼È©�º§¿—’…'… hys”aª‚º¹)гusu• wœXïu° ‹X«£(e.g.,”ͪ¹”§)µÛ°§¾A½ˆ ˜€¬¸rs (su‹¸·È  doc�@ntcloud.g®Øub.¬Ð/jamƒˆ€ÐÀ¸À‹mit/"áid="7K4GG">Jam€¨ïr ��ƒ )õseôheæilesystemásáãac€±„ƒ(p€èd€Àƒs.Áôwelve-fact…appð…ersôoäo‚ˆis�Äingäur€9ƒ9†vX€€_€¯€øˆ¯GI">buildót†èˆÑ,óuch…Y‚·‰'ryanbigg‰ guides/ˆú_pipe„ e.html‹¿GJ">Rail‡ÐŠ1 �=ƒ[ra‰r‰8anátòuntime.

    Some÷eb Š[sòelyïnŽ7Ž4en.wik„hdia.org/€q/Load_balanc‰À_%28‹éutŠ(%29#P‹i�nce‘—GL">"stickyóessions"‘ê--…™tés,ŽzŒY�xr�=äataéníemor…8f�RŽx'sŽˆoc‚pándåxpec„)æuture†°questsærom‘úsa‡Èvisi�‰�(b�(out‘°���‚¬.Ó…‡…�Ⴈa‚olat„Ñ„Y“'“!„8shou� nevŒhƒ•Ød™‹ i”øupon‚Іä‘Pte‡–�™�d–¨ndi‡°–Ëaˆ s–˜ŽÈof–#Žè-‡ i�ÀŠp“_œ_œ[‰À™:dŽž/GM">M€åžGžG•"�Øs.ioŸï4GN”0€¹Ÿá’û/s‹Ñon€W> <–Yømlns¡.www.w3’Ê1999/x—{�*:epub�W�Pidpf”*2007/ops"‚¨ead> VII.ÐortâiŒPngƒ¯šP‚ñœ(višø-viaƒ‡ƒ‡ƒ„3ƒ‡23Œ¡3†W4">E‚jŸ¨‚k›øa €’ƒÿ3¥ †first-para¯h€]-after-hƒ_L25">W¦®¸œËs¦¨§‰s Hecžªinsª¨±8§`†i¨ð�ÁaªÐr.Ƶ¸example,ÐHP‚[migh©ê³ module‚U·7·3·id.a¶xheš÷Ž+6">A€ÊÈTTPD°{¹PJavaƒ_ƒ[‚ÿº/º(to�Ðtƒƒ‘(7">T�œ?¯4’8˜èstro¶À’¾9��º ¸¿¸½¸«"doŽno²ð±”³4­j•­‹�r­ÈªÜŒ³®‰envi„Ðmœ¼Qcre¨)�2½i¼a“Ü. …‰µQ½ñ†�™DA">•[s‹"�“•´ây�ý¿y“£†n,±’lµ:�±v¼p´!³�¸�´Ú›aºG�,B">I»Hìocalä›Ñop†¢‡t,¿Ê€ì¼è³â…7eÕRL„8k’Øco•Y C">¼$ƒhost:5¢ /†¢c·â¶Ê‡¬�Ó¶€‡ð¹0i�. …Hdeploy„£a·²»Ilay»Ph¹ø¦X€¶¹Ï¹É�xublicŒå„aª�¹¥¤Sou¼�Q¼œes”§¦¼D”·8·P¨Pi‰¸“piœ�Y…«us¾ ¶X€€_€¯€ø§o2E">‡0endencyŒ�¨¨¸ã¶ê�)dd o¼ðlibrar‰P¿ë¢Xº7º7µg¿nado¢pº_­“Fœi€êºJ½ÁPyth¼¹¼¼{�A.macourno‹ð.›Ø/thin¡ïL2G‰Z…Ë‚iRuby¡ò¾ï¾ëjetty‚dehaus¿€š¤WL2H">J�9„Þ¤žxoœÈ¤�VM-bas©ˆlanguag�à›È °hªðenª�Ÿ(Ÿ’˜¨u±8ó¨e Š¦È¥i£ùon¦Ú ãž²can♟¡‰´Çng.Îear¨€any ¾Ñ¦Ñ²4softw³©‚$±y¶Á¶Ð—ó£ß…¶©ùawai›Âin£4†Å´[˜ønclu³o””ejabberd.im³gL2K¨H€Ô—b(spea… šWµ•xm €µW½ªL">XMPPµ)¨Ë·G·Credis.io·L2M">R€¹ƒ�ƒŠ¯Y¹?�ÿ�útoŸ¸s/¡tocol¾w2N‚t¡ù€â„r¶¿¿¬O">No±ils²±¬à¤¯l¾0ro¼ˆíea•Ø® onžò�œ·`�¾£?£‡£×£?¾ËP">bacŠòµ<Ÿ¦a¸Øš‘¢R’�rovi´»È¯a¸l‚ »ñµ²res ˆµ¸¬c³ñŠW¨O¨‡¨×¨O¿íQ">¾fig¤n¼ ¾˜su¶Ú°¡¶z/s½«€W> <€1øƒˆ€àÀ¸À‹mlns="http://www.w3.org/1999/xhtml"ø�):epub�W�Pidpf�b2007/ops"> VIII.Ãoncurrencyƒ„ scale-out-via-the-process-mode�ƒel3ƒK3Œ™3†O4">S‚a ‚` ‚` ‚` ‚d ‚bˆ3>AnyŽ8mpu€è‚©gram, �°eòun,és�@pres�@edây€à„PrƒÈr„6es.×ebáppsèaveôakenáöariet�¨f…•-execuŒ:form�ÐF‚pexample,ÐHP‚·„ás”˜ildƒo‚qApach�€star„ÉŽ°dem”8��need…kreques‰¸olume.Êava…·…:Šzopposite†ro‚Ø,÷ith‹ZJVM‹yviding‡úm‘@i‡0uberŒMthat–˜serv…Èaìargeâlock‡ñsystem� our�0 (CPU …�meŠXy)††jupƒä”çyƒ�nagŒi›ˆrnally�Tr�à‹ðInâo�¡aŒh,‘�øn…‰“´(es)á� on�èminim‚Œ �Qtwelve-fac© ™,™¿ŒŠ�4£ûãitizen‹˜‚›>И~i‚—‚—›¨–C„c—ˆærom ¤��‰¤¯§ žù”.˜¹i¢ da—pns.Õsš‰th£ ¨š•Ô–h¢rŸèt­À§±i‡to£(±)‘e‘žs¥ œég—Úe¡ ±‚¤’¹—1a <œH±>B">’wpeT‰do¨€not©XcludšPn™idual¬?�ÈêŠÛ‰™ow·�¡Äíulti«Px¦`,¢'‰Ðinsi‚¸¡Üt»¨ÖM°Xr 3sync/¸Ð°:� †™”©oolsóu‹p­p“¿“»ruby�Êm­˜ine“âºÿKD">E‚ÁM€û�á,•ç•ätwiªdmatrix•òtrac”O5KE‰H�+‚µ ˜˜ n»Èjs.org–5KF">N¼�.j”¼B»8“Ћˆ@”b©ÒŽHwóo¯(¥ti¿P ¿z)´ˆªCšq€À·Bmu´al�¨‘Àa«lsp–ðŒuºO­¾�€õhysƒ*Ф¾UG‘1¼†œ tru±@s�’÷h¼ˆi£0om·ÉŽù„1¬ªout. ‚¡–X€€_€¯€ø KH">sh²Ø-”ø�’ÀhorizontµJp½¦¨on‡Únatu´1²è¨Ï¦<¿Î¡¸ÈanºÄad»â¹He¸¿¸¸²paói�9ºbreli‹ ¶‹ê†Ãarr�°¼8±Ï±È»únuµÀ™(€æ½ð½€¡ßµ�knš!µpºÁ¡÷¸HI¡÷§x”ð�€¢¹Ÿ¹›J”ù°W‡�°K­g­cd‘ in.github­r­H0/02/28š�¾Ú-¹®.html¬¯KKŒ‘oul†ø¾€r«¼²ÀŠÊ´8wrª¨ÐID³àlºÉnšøad,ЉPµÛŠ4®y›ðm'»×man¾ør (Ÿ·³o³iupst�È.ub¢h³ƒ±·KL">U� Ÿ{a¿hºibu¢ùƒ/ƒ+š a¸øou€Ølat‹Q¤Ê¥è£Ðìi·ð·o·kblog.da©dol�hŸ²·j05/06/¨�roducŠAµPe†ˆŠ7¾ÃM">°@€Ñ”‚»ð´äm¨0)´9ˆ3»O™¿šš_™¿¹ÒN">›Èp£p¿Peam¸²Œ spo±Yoãrashˆ‡e²ì·ìuº¨-inšØa¬¡�À‹‰–³shutd¯È²„/sº¤X€W> <’ømlns­Öwww.w3©‚1999/x“;�*:epub�W�Pidpf‹407/ops"‚¨²Ø> ƒd="ƒˆ€ðÀ¸Áñ¸À‘maximize-robustness-with-fast-startup-and-graceful-shutdown"ãlass="level3"áid="AFM63">MƒD ƒG ƒA ƒA ƒD ƒ@ ƒE ƒETheôwelve‡ ctorápp's proc‰¸esáre disposable,íeani„Àtheyãanâeˆ#ed „ˆstopp€Xatáíoment…notice.ÔhisŠcilitate€aŠ`eŒ¨�Hócalƒ ,òapidäeploy‚Yïf‡o‡o‡¿ˆ‡oŽÂ9">cod†(‡@‰À‰—‰Ÿ‰ïŠ?‰—�éA‚)nfig‰zchanges,�Ú”'…!ŠÀduction…ìs‡àp�Q“NB">P‹õ‘€ould’`riv�o �÷”ÄC">min”C“�timŒ°Šœ.Édeally„€„ŽÁôakŠà“pewóe…àd‹°rom�ñ�ú€Jlaunchãomm–1ŒÐexecuŽ‘until�r‚��À—tready…irece…Árequestˆrêobs.Óhor™ƒŠ“˜vid��mo“xag�yæ–`„¡–W–_–¯–ÿ–W�©D">releas�‡õœ™’\… ;�i”Àiˆ0¡§,–causˆc‰ÕˆPager—…R‚ðily–˜�™¾�YnŠàphysi•¨�¸chi¤P÷hen÷arran˜Ð�÷£¥Q ¥Y¢®ƒè‚ª›Ê‹�aŸçhttp://en.wikiœ ia.org/€q/SIGTERM§O6G">€¬Ÿáœ×sign†H‘6ˆ�ˆŠ.Æ£¹÷eb“5,§Ç«’!ˆQªðdâ¡@‰ñ¡©oìistˆØ˜Ð”!serv Ðð‘A(¢ re�x¦`u�‚any‹’Õ)›hllow€åcurr ¹“Ö™Øf™8shœ³¥(n–hit¥�™mplic�iŠ1¤m �l—�th¥€HTTP–'¨iœ¸„¹no•k�0nšoši„€¬(‚ze¨h’ ¥l­¹pol¦€Òli¥éŸ5eamlµh’pattemptš,onnect�6œˆ€Š¢1©plost¢7µ|H">Œ„ork•xŒŸ´_ŒŸŒŸ’tur®UŠN�¸£ù ù‚‘ žˆue�£exaŠe‡�n³�“¬www.rabbitmq.¢@/º—6I">R€ÚMQ³2‚åšìse¹È–?‚—‚—‚’amqp-0-9-1-quick·€.html#bœÈc.nack¾?6J¾8¯�¾ÏK">NACK;†W™ÿkr.g¾àub†:b·h¿lkd†—M6L">B€Î¹Ñ�3‰á¶°ŠË¸pŠDŠáutoma¸0­ ò˜à�Ï »@�©¸Lock-†Àº˜sy™xm±u­a¿_ŸzsŸ€…w†Ðll‘�ve«a/–àayed_¬X#­ame¿ï6M">D�Êob¿úne…«¾‰u—y®Ñª²¿iir–Èck�Í‘I•™rdšÇšÇšÇšÀ´¨°zšš¥¥¥¥}Re¿h©Ù_%28subrouže%29¾Ÿ6N¯±�DŒ3whi¶@typ‹<¤7¤2wrapp—•resulµ` `a ƒasa½Šž’mak˜Õoper�À—¯«W«W«W/¼0mpo§c‹M6O">·¨€Ë…j°—¿ P°—�p¡SalsŒz±·ŒQ·ˆ¶ ºai•‘dd³��Àth®n,¤ß¤Û¥èailŽé¥¤underly¹hardµˆŸpWhil¸q¿X®Aí“ᥑ¤�mm­Ðoc«Ë­È¨¤°°wš0 œ'½BR³§œ;…t 3ti‘0h�¶Á¨rmm Ø²�¨roºÀ²©½9†B‡ü¥¿b ¢P,™N�¬!®ø§‹s”[œçœà½b­#sœOt®Ùtim® ut.Å °«way´ ôwelve-f‘ ¸ypp·’r¿èt®Ÿë±pdŠ@unexp€ª,îon-¹ntermin’⟠¾G¾Clwn.net/Ar¡¨±x/191059ª×M6S">Crash-on²`de½Ù«ak’(·µ8ce³i¹­Ï­Ëdocs­ˆ¢èdb›úen/lat»`/iœo/o¥0view«b®·6T">log¦yƒl½€oƒêµ/¹µÉ€W> <­ñømlns²G²@w3 B1999/xƒ³�*:epub³—³�idpf¡¢2007/ops¯¨h§H> ƒ¾Pkeepƒ!elopœÀt-¸¸gª`-—(-ˆÉu©ò-as-similar€Ypossibl³È„el3„O3�¡3‡O4">KƒX¦Hƒ^ž ƒc›ÈnŒƒloƒˆ€�À¸ÀŒnásóimilar€YpossibleHistorically,ôhereèaveâeenóubstantialçaps€°tw€Édevelopment (a€}eríakingìi‚editsôoáìoƒ deployïf…1ápp)ándðroduction„Irunn„�‹�opáccessedâyå�Àusers).Ôhese†ëmanifesténˆPreƒ0reas:

    ‚Øôim‚ò‚(�>Á‰‰xy÷ork …øcod�€hatôakesäays, ‹xk€8or ‹˜níonthŠªgo…@Šèˆ.FŽ\welve-fac™�’¢iˆIsign’¸f�—http://www.avc.com/a_vc/2011/02/cŽ0„(ous-–ÛšI.htmlœ÷OG">�G–”›‰˜:–0keep›a˜yœèœçœç™™smŸ@‘8”]Loo�z“¡•i—ªŸJ†Àcrib™€above˜'¡åH˜'¢bI">M•¸‚C—¬ƒƒ: ¡—’’Æž£‚it�¬�hou“ð—�juœ˜m� t˜¨la¦0—O¦^Jƒÿ–ׄ':¥–¸ho–Øo„§˜closel–ˆnvo�(d £«¦q„à£Ywatch€ƒ¨Q©8iœ¸¡h¤'œ«.KˆÏ˜ˆÕŽ!ªo��¦�¯‡¯‡le•ç•ç®xL">Summariz�Å�ê¡Ca¢¸±`¦s——OM¥Hra­Xª¯8ªÈ�±;N¦X—ç—ã‚7²[O§x§Y±­‘sƒo³“P">W¦‰„/´SQ´P�©„ïµR">C‘:utho¤�vs©;‘\��¶�S">Diff¶8´Ðpeop¸ñ‡�·±T‰8a¬°€÷ 6OU‚evƒI²×±ˆvi®ø·y†Ÿº,Vƒ‘vergœÚŠç»P0">A½—½—„§�L1²�¸ï¸ÿ¹O¹Ÿ¸ïƒ2">B©0»¡¶ˆvi·(¹9,½Øch‘ù¹l'²��as®`queue�šystem²òc©;¦˜on·ËªàŠ8¿Y/»)ð’Èt¯ sémporta¥˜Íanyœ¨nguagµ o‹Ù¿ðbr”0¶ ¬ø„8–plify¼,µñ¾!b…υɃènclud¾adapŸÈ’€em>·ñd�.typƒÊˆ.Óo»¨exaƒ°º@Ÿ¾’¼p˜³low¹h¾°˜š€8head€pˆ8lass®€€er¿8t…ðtyle="text-al¯p:ìeft;¿ƒØLˆü�_‚—‚—�[‰Òy‚¯ƒçƒçƒâAˆ–„/tr€)†Q—a†·ŽgŽgŽbPy£n/Dj–`oˆ7�ç�ç�âCele�J‰‘/‘/‰xabbitMQ,Âeanstalkd,ÒediІ¯�o�o“Ç“ÇC�a�W••�W�W�–o–o�SSupžá::ƒ'‘Ϙ'˜'Memory,æi›`¢|€ ¢z�””씳/›œµÇP4«š¼õs�èt²Xs‚˜»¨�8a»øppe´è¼°us¼‘a£ gh³X€1¢O¨Ÿti¤Hoc¶˜­÷ts,¤™  a …¸e©¡iou¡ ¾ørobus‚o‚mwill¿pƒÈed¿o¿jƸh£D,„Ô•{ƒÓl§�¾€–w‚¾ñ;«Á…¿˜¨ÒmŠr欌¾9¥Ø¬ˆñ³ù…R‹„‡„‚¾ß³û5²°stµÈ‰ˆ´�6¿x¨Q¾�¾ˆƒ ­Øresist±»u¶ ­a‡Ð«‡­·³|¿Ÿ…7Š‚ºL‚Ètwe€1ìocalóervicesár‚hess†°…hll…qth‚˜†`yïnce÷„@.Ío„€nâack†‘‚suchásÍemcached,Љ…�SQL,ˆºRabbitMQƒjnoˆÈifficultôo‡stallŠ ruƒÉanks€Ñmƒ›pƒ˜agƒªystems,ƒ®H€¼�Ê‚G‚@s‚Hhelp.ubuntu‚Jˆðmunity/AptGet/Howto‚·P9">apt-get‚©.Ált‰xŒ�vŽÐ,’ clar€zðrovis‘ ‹boolŠ/†‡†ƒwww.opsc‹à„;hef†g6PA">C€˜†Gˆ‡ˆ‚docs.puppetlabsˆ¢ˆ_PB">P€êˆJ�bin“˜wŠ“‘ -‘¬virtu‘¸en€Pon˜a�׌/Œ+vagra‰Èpƒ”SC">V€ã‹Ëllowšð‰oper�š� •ƒ_ƒXwhi“0clos™A—proxim˜‘Šhduœ„ïts�W�Q“œQ�9us—3es�x’›œI„q˜1˜˜žXožrbenefiŸz…H/ƒq”€r�HŸŠž¯¡7tœœD">Ad�ð‡$—ñžØ¡šoœwóti˜puseful,„ca€`œ{mak‘øor¢H‘Ñîewœ�ž•rel“¼™Ðinžé.Âut‹�¦ds¥ûe¡Á (ŒŽÿŽø›(t›²,‹'n)óhouldˆÀŠ7óa¤Htyp‚€¨(¥–é©e ˆƒ]¡Ï£Ó¥C/se©ú€W> <€1ømlns˜Ç˜Àw3.org/1999/x�Q"�+:epubššidpf�b2007/š€"‚¨ead> ‚²¨µxat‚Š-as-�ønt-s€©mƒƒ3ƒA3‹¡3…Ÿ4">T‚A´€g´0¸8‚A—è‚B‡83¶)…„first-œÈa €_-af«-hƒ7NA5ŽÐemˆÏ6·àŒ‚em>«Ãde¦hsibilž!inŸFhaviorº‚´9½ºº¸.Én¹rƒXbas¼ˆ¨'¨ ¹2º!± on¾(w è‘¶Ñ…ql½¨n·ˆsk (a "Œ8€¡");✘th£À£Ø�Ò¾@outp�Pfor¦è¾W�<¾Q‰r½ ¤é·÷·óadam.herokµ«past— 11/4/1/�_¿x_�d_¼P_… s¸õ’Y¸ðŽc¸âˆqg¾Xg«X¾Èt”ø-or¼°ˆA�És±°llž ±¸from©ª†4�¤Šš¿Š­·ø§Xs§q¿�¨ ¼š ­�­iròawˆz‡«ypi°à° ™1‰Lµ‹one’,¦Y¯he (t¥pgh«Btra«…*excep±¡sª˜yóžXíultip�x�Ñs)„D�°eîo“¸x¸Èbe¨ˆ½º‘Penˆ�Ž)�ù°T°Hµ²a³a‘«*�!· ¬Èng±�ü9¤€š�šž�¾ÐAôwelve-fac£Ø­jn¹pr³¹cer…ðit¸ˆf½‹r‘è„Üs¥Pag“зؽHŒ‡� ´ðƒc>É›€®{�Xᕸmp” o–"³˜o‡9man‚Y•̺ÈIºh©è,®ó޷޲�Û„Êž— Ð,õnbu·Â’Ao .Äur½�lo�ˆ»áµ¾Ù”0¾Ðµ§w¹qvi¸Pšj¤K’šIegˆÈ¿¨·“’�¼8min‚¨‡bžÚ¸e's N¾/«$C"> Q¸£�¸·ºµˆœ— '„e…¹ˆcaptu™Ñby»êexec�˜¹X»Ç†øš‰›y¿ge¿¸‡–ø½ño€zšÅ›†¾0,»Ú��ʘj�鈩˜‡qdes•”—±£‰¢§*½ •y-ˆÉ¦`chival.Ôhes¾�€„‚™±§‘‘¡ªZ§‘[¸Øfigura€™‡,„æi‘»©m›Pte©x’ûˆ§ˆ§«?.Ïpen-sourc”R‡Krs (su” ±ð¨_¿¸s¿Àg ˜ub¨:¨“¨žøx··AD°ò€©§j¤yªŸ‚G‚Eflu¿È€F€â©¡)°zavailˆB‹Y¯:purpose®·½ìF¸P�q¸m�°x¡Ñc°¸‘èŽß²³,¤watch´˜viµ ea¦m°ÐƒÐª©—S.Íosºàignifªntlyš;™tƒ$s¼µÂ‹!index‘  (lys›yŸðm ‹Ç´´www.splunk´¼ßAG">S€Ê²É…òaçen¨ l-ˆÜäata†¨re­¸s°²ƒw�7·�•Pe.ap¤@e.org¶GNAH">Hadoop/H�(¶i–•†º0l­Á˜Q·²(pow±À´¡f‘8ibilƒˆ€ À¸ÀŒityæoréntrospectingánápp'sâehavi�overôime,�Xclud�8:

    Fin�a ‚áificåventsƒˆôheðast.Large-scaleçraph„Éofôrends (suchásòeques‚�p…minute)‚—„ÞL">A†ève ‚ˆr‡3ccor„êtoõser-definedèeuristicƒGˆ¢�Ñ÷he…ãquantŠ „°error„'teåxcee…Haダa‡‚reshold…/ul€(s‹©on€W> ƒ?˜€runƒ3managem—°-tasks-as-one-off„„„ 3„S3�Y3†÷4">Ru�‹!/‚ç ‚â˜‰‚䌉03>T�� £ma—ésŸÊarra™Ò‘> €at€Àeœadœ¡do�[¤Zregularâus� ‚¸ h”8’Àg÷eb ~) áit Œ8s.Óe‡�tely,ä�o¡ps÷ill¢ –p€Xshƒ¤Š ‘" 8—¸¡Á©0mž8—Øance‹„©á…$, ¤œ¨Ç”•7¨Ç•8Ž"n«Ydatabase¥Ø§0 I¦àe.g. ’S.pyóyncdbrakeäb:ƒe�§Òails©gšB„ÿ¥ð„�o¬ (alsoënow°è¦¹�Ƥ”en.wikipedia¤Â€q/R£0-eval›h³(_loopšÿSC–pEPL�Ò hll)¬i™à‘bi‹Øry£€ˆ@µ"µ �§í‰l¬Øgªøs€Ël¯Š­.Ío€Àlˆàuœ ± roviб ƒ±ây‘ŒB´iŽérpre˜P�Øthou”€n¢ÐrgužŒ×Œ×£€D—Xy�p—Œƒº€�駱E">erl�„)†kóomeã�à–´Éó•<«m¡¸d�W�W7SF">ir�î½ñRub–È‘�¨:G�á�Ž���ˆ�ß½—©áH”×¥!¿‘ócrip½˜„©itt¹˜0œß¼po•¯•¯7SI 0hp‚/fix_bad_re»Ñs.€àˆ¥¸Ÿ¥Y®fJ">Oœ²·¡xºXuldâe‘z»½Žà¼˜calånviron¨Ú½ð½�¢¦�¦—¦ç§7¦�²±K">long-‘�¶ÿ¦±¦H¥\. ©¨’”ƙgª'ªoª¿ª'¶KL�ðele ð©Ñ,¨À•Us¼ ¬Ï¬Ï­­o¬Ï¸òM">¢É¬b“®ÿ¯¯W¯§®ÿ»!N‚1nfig‚C³È™@¯�‡ç�i®¨†4¹µ¦Êmu��ship›Z¯)l�Ƚ2§Ê°avoid§bhŽXiz€óiss¯¥¸«(‘WSOµsˆ×µŸµÏ¶µŸ¿^P">depen’ cyµ@olµ·techni²Ù“ǵC¿xa²0·mtyp„èÆ±pexample,é�ë�1µ"¸Í·@¸kŸ}¯Ÿ¿ÚQ">bu¶àe‚Xec¹¸¡©tart¯Ì,ºQ¬p²/².˜õºX²O¾»R‚·‚±±±e>.Ìike¸¨…øaЦú½Yµ m”DVirtual›Hƒo¸¸¾àvŠ or¾ ¶¸:S†€in/©o¦¬-bo�P¿™Torna¿ø¾�serv¬€¨q¬a¸·ºÒT¸·y¸}¡O¡J‘W¼tU‘Pwelve-fact¾¸¿žÐlyæ“�rs±‡÷hi¾˜±·±²µB °éŸ´box‰0­x�{m»‘it �Èy¶uªi¦)ªd.É�Álo¥Y“¨lo®develope„invo½¸�µ§ß§ÛµÀ�¨iª8š„q±�¹ ·¹check¶I�{oryƒä¸Xduc›‚„„cªh‘ássh»ÙŒÀ¸ remo´ï”ªu�Šm˜ðanism» ¬¸‡ØŸÙ†ë½`�w¬ß¾`¿ksu‹8„¢®éžã/s¿h x€W> /*ªðis‰˜fin°!tyl¾¸¹Ycla°ºœªºðŒËok */ bodyûŒÈrgin: 5%;žˆxt-alig€€j¤Xify;º`nt-size:†˜dium;ý ¿j{€ãfamily€ðonospace� h1‚à‚‡:ìeft€Ê2€Ï€Ï�‘3�—�—‚Y4‚_‚_ƒ!5ƒ'ƒ'ƒé6ƒïƒï„².tit¡à{„R.auž r€s3.¡�†©}‚ˆ°À¸À‹ ol.tocûðadding: 0;íargin-left: 1em;ý�Mli�`list-style-type:îone�½‚‚w�à �INDXÀðýéÿÿÿÿÀTAGX  0000049879IDXTàINDXÀØÿÿÿÿÿÿÿÿ 0000000318€€€€¸ 0000000630���€6² 0000007928£‚‚€€ 0000008382·ƒƒ€  0000011177Ë„„€¡ 0000014736ß……€Û 0000019002󆆀³ 0000022846‡‡‡€î 0000026612›ˆˆ€° 0000030064¯‰‰€ì 0000033064ÃŠŠ€� 0000036739׋‹€Ÿ 0000040687댌€,ú 0000046764ÿ��€Ü 0000049879“ŽŽ€ÊIDXTÀÑãõ+=Pcv‰œ¯Â�P-//*[@aid='0']’P-//*[@aid='UGI0']“P-//*[@aid='1T140']“P-//*[@aid='2RHM0']“P-//*[@aid='3Q280']“P-//*[@aid='4OIQ0']“P-//*[@aid='5N3C0']“P-//*[@aid='6LJU0']“P-//*[@aid='7K4G0']“P-//*[@aid='8IL20']“P-//*[@aid='9H5K0']“P-//*[@aid='AFM60']“P-//*[@aid='BE6O0']“P-//*[@aid='CCNA0']“P-//*[@aid='DB7S0']INDXÀìýéÿÿÿÿÀTAGX SKEL0000000014IDXTØINDXÀXÿÿÿÿÿÿÿÿSKEL0000000000 ��€Ì€ÌSKEL0000000001 ��„€„€SKEL0000000002 ��;¶Ð;¶ÐSKEL0000000003 ��?†Æ?†ÆSKEL0000000004 ��TìËTìËSKEL0000000005 ��pØÆpØÆSKEL0000000006 ��ùÏùÏSKEL0000000007 ��/ûÑ/ûÑSKEL0000000008 ��MºÈMºÈSKEL0000000009 ��h²Ìh²ÌSKEL0000000010 ��êÌêÌSKEL0000000011 ��ÅÌÅÌSKEL0000000012 ��;°Í;°ÍSKEL0000000013 ��j÷Ãj÷ÃSKEL0000000014 ��–Ï–ÏIDXTÀØò &@Zv’®Êæ:INDXÀàýéÿÿÿÿÀTAGXtocIDXTØINDXÀÈÿÿÿÿÿÿÿÿtoc€�€IDXTÀ•The Twelve-Factor AppINDXÀøýéÿÿÿÿÀTAGX0 @€18IDXTðINDXÀDÿÿÿÿÿÿÿÿ00ï=æ_É€€�Œ‚€01ÿA¬ë–�€��ƒ€02ÿW—ç¢�€ŽŽ„€03ÿrþ!ª³�€��…€04ÿ¨„¿�€��†€05ÿ2¬¶Ô�€‘‘‡€06ÿOâüë�€’’ˆ€07ÿjÞ¸ù�€““‰€08ÿ–Û‹�€””Š€09ÿñì��€••‹€0Aÿ=Ý/½¯�€––Œ€0Bÿmš«Â�€——�€0CÿÅêË�€˜˜Ž€0DŸB”ƒà‚�ƒÖ0EŸX‰õ—‚‚„à0FŸsæ ƒ…Ö10Ÿ¢Šã‚„†è11Ÿ3¨º�‚…‡ê12ŸPÎ�·‚†ˆÚ13ŸkÒÄꂇ‰â14ŸŠç‹‚ˆŠâ15Ÿåø«‚‰‹â16Ÿ>Ò.È炊Œã17Ÿmüɨ‚‹�Ð18Ÿ¿ðÄ‚ŒŽèIDXTÀÏÞíü ,<M^o€‘Ÿ­»ÊÙè÷$3•The Twelve-Factor App‹I. Codebase�II. Dependencies‹III. Config”IV. Backing Services–V. Build, release, run�VI. Processes‘VII. Port binding‘VIII. Concurrency‘IX. Disposability’X. Dev/prod parityˆXI. Logs”XII. Admin processes¶One codebase tracked in revision control, many deploys«Explicitly declare and isolate dependenciesŸStore config in the environment¬Treat backing services as attached resources¦Strictly separate build and run stages²Execute the app as one or more stateless processes Export services via port bindingŸScale out via the process model»Maximize robustness with fast startup and graceful shutdownÀKeep development, staging, and production as similar as possible›Treat logs as event streams¯Run admin/management tasks as one-off processesFDST ίίÐfFLISAÿÿÿÿÿÿÿÿFCISί((DATP ÎÙ)S4ñ@µK¥VCbÆn\zQ†¸“g�NªûµRÁÌsn-.ëBë?ìCí@íCí@CíínHԮҖЮ¢·®–¢––z®–®®–®lŠ®¢¢–– ‰‡{––p·Û®¢¢®{®¢{––º®–¢‡T–`{¢––�¢®®®–¢º¢Æ–Ø¢–®¢¢¸– -º¢Ïîø®¢–‡{¢l–––––{®’ϢÖ–––®¢Ã®––®q¢º¢¢{¢Ã®¢¢¢ºÃ·p–––¢¸®¢¢¢–º–Ö®¢¢ÃN¢ä¢·¢®––¢¢“–¢¢º–{–¢$·ºÆ–º®¢¢ÞÞâ ÕÖÕ¢–®–––¢–®®¢–¢–f–®––®‰ˆ¢––º–®®®–…·®`®–``‡Ãù¢·lx~––éŽ content/en/processes.md0000644000175000056700000000466215232661434013725 0ustar0000000000000000## VI. Processes ### Execute the app as one or more stateless processes The app is executed in the execution environment as one or more *processes*. In the simplest case, the code is a stand-alone script, the execution environment is a developer's local laptop with an installed language runtime, and the process is launched via the command line (for example, `python my_script.py`). On the other end of the spectrum, a production deploy of a sophisticated app may use many [process types, instantiated into zero or more running processes](./concurrency). **Twelve-factor processes are stateless and [share-nothing](http://en.wikipedia.org/wiki/Shared_nothing_architecture).** Any data that needs to persist must be stored in a stateful [backing service](./backing-services), typically a database. The memory space or filesystem of the process can be used as a brief, single-transaction cache. For example, downloading a large file, operating on it, and storing the results of the operation in the database. The twelve-factor app never assumes that anything cached in memory or on disk will be available on a future request or job -- with many processes of each type running, chances are high that a future request will be served by a different process. Even when running only one process, a restart (triggered by code deploy, config change, or the execution environment relocating the process to a different physical location) will usually wipe out all local (e.g., memory and filesystem) state. Asset packagers like [django-assetpackager](http://code.google.com/p/django-assetpackager/) use the filesystem as a cache for compiled assets. A twelve-factor app prefers to do this compiling during the [build stage](/build-release-run). Asset packagers such as [Jammit](http://documentcloud.github.com/jammit/) and the [Rails asset pipeline](http://ryanbigg.com/guides/asset_pipeline.html) can be configured to package assets during the build stage. Some web systems rely on ["sticky sessions"](http://en.wikipedia.org/wiki/Load_balancing_%28computing%29#Persistence) -- that is, caching user session data in memory of the app's process and expecting future requests from the same visitor to be routed to the same process. Sticky sessions are a violation of twelve-factor and should never be used or relied upon. Session state data is a good candidate for a datastore that offers time-expiration, such as [Memcached](http://memcached.org/) or [Redis](http://redis.io/). content/ko/processes.md0000644000175000056700000000563015232661434013730 0ustar0000000000000000## VI. 프로세스 ### 애플리케ì�´ì…˜ì�„ 하나 혹ì�€ 여러개ì�˜ 무ìƒ�태(stateless) 프로세스로 실행 실행 환경ì—�서 앱ì�€ 하나 ì�´ìƒ�ì�˜ *프로세스*로 실행ë�©ë‹ˆë‹¤. 가장 간단한 ì¼€ì�´ìŠ¤ëŠ” 코드가 stand-alone 스í�¬ë¦½íЏì�¸ 경우입니다. ì�´ 경우, 실행 환경ì�€ 개발ìž�ì�˜ 언어 런타임ì�´ 설치ë�œ 로컬 노트ë¶�ì�´ë©°, 프로세스는 커맨드 ë�¼ì�¸ 명령어ì—� ì�˜í•´ì„œ 실행ë�©ë‹ˆë‹¤.(예: `python my_script.py`) 복잡한 ì¼€ì�´ìŠ¤ë¡œëŠ” ë§Žì�€ [프로세스 타입별로 여러개ì�˜ 프로세스](./concurrency)ê°€ 사용ë�˜ëŠ” 복잡한 애플리케ì�´ì…˜ì�´ 있습니다. **Twelve-Factor 프로세스는 무ìƒ�태(stateless)ì�´ë©°, [아무 것ë�„ 공유하지 않습니다](http://en.wikipedia.org/wiki/Shared_nothing_architecture).** 유지ë�  필요가 있는 모든 ë�°ì�´í„°ëŠ” ë�°ì�´í„°ë² ì�´ìФ ê°™ì�€ 안정ë�œ [백엔드 서비스](./backing-services)ì—� 저장ë�˜ì–´ì•¼ 합니다. ì§§ì�€ 단ì�¼ 트랙잭션 ë‚´ì—�서 ìº�시로 프로세스ì�˜ 메모리 공간ì�´ë‚˜ 파ì�¼ì‹œìŠ¤í…œì�„ 사용해ë�„ ë�©ë‹ˆë‹¤. 예를 들ìž�ë©´ í�° 파ì�¼ì�„ 받고, 해당 파ì�¼ì�„ 처리하고, ê·¸ 결과를 ë�°ì�´í„°ë² ì�´ìФì—� 저장하는 경우가 있습니다. Twelve-Factor 앱ì—�서 절대로 메모리나 디스í�¬ì—� ìº�시ë�œ ë‚´ìš©ì�´ 미래ì�˜ 요청ì�´ë‚˜ 작업ì—�서ë�„ 유효할 것ì�´ë�¼ê³  가정해서는 안ë�©ë‹ˆë‹¤. ê°� 프로세스 타입ì�˜ 프로세스가 여러개 ë�Œì•„가고 있는 경우, 미래ì�˜ 요청ì�€ 다른 프로세스ì—� ì�˜í•´ì„œ 처리ë�  가능성ì�´ 높습니다. 하나ì�˜ 프로세스만 ë�Œê³  있는 경우ì—�ë�„ 여러 ìš”ì�¸(코드 ë°°í�¬, 설정 변경, 프로세스를 다른 물리ì � 장소ì—� 재배치 등)ì—� ì�˜í•´ì„œ ë°œìƒ�하는 재실행ì�€ 보통 모든 로컬ì�˜ ìƒ�태(메모리와 파ì�¼ 시스템 등)를 없애버립니다. ì—�ì…‹ 패키징 ë�„구 (예: [Jammit](http://documentcloud.github.com/jammit/), [django-assetpackager](http://code.google.com/p/django-assetpackager/))는 컴파ì�¼ë�œ ì—�ì…‹ì�„ 저장할 ìº�시로 파ì�¼ 시스템ì�„ 사용합니다. Twelve-Factor Appì�€ ì�´ëŸ¬í•œ 컴파ì�¼ì�„ 런타임ì—� 진행하기보다는, [Rails asset pipeline](http://ryanbigg.com/guides/asset_pipeline.html)처럼 [빌드 단계](./build-release-run)ì—�서 수행하는 것ì�„ 권장합니다. 웹 시스템 중ì—�서는 ["Sticky Session"](http://en.wikipedia.org/wiki/Load_balancing_%28computing%29#Persistence)ì—� ì�˜ì¡´í•˜ëŠ” 것ë�„ 있습니다. ì�´ëŠ” 유저ì�˜ 세션 ë�°ì�´í„°ë¥¼ 앱ì�˜ 프로세스 메모리ì—� ìº�싱하고, ê°™ì�€ 유저ì�˜ ì�´í›„ 요청ë�„ ê°™ì�€ 프로세스로 전달ë�  것ì�„ 가정하는 것입니다. Sticky Sessionì�€ Twelve-Factorì—� 위반ë�˜ë©°, 절대로 사용하거나 ì�˜ì¡´í•´ì„œëŠ” 안ë�©ë‹ˆë‹¤. 세션 ìƒ�태 ë�°ì�´í„°ëŠ” [Memcached](http://memcached.org/)나 [Redis](http://redis.io/)처럼 유효기간ì�„ 제공하는 ë�°ì�´í„° 저장소ì—� 저장하는 것ì�´ ì �합합니다.content/th/who.md0000644000175000056700000000066515232661434012524 0ustar0000000000000000ใครควรจะอ่านเอà¸�สารนี้? ============================== นัà¸�พัฒนาที่สร้างà¹�อพพลิเคชันซึ่งทำงานเป็นเซอร์วิซ (service) วิศวà¸�รดำเนินงานผู้ซึ่งปรับใช้ (deploy) หรือจัดà¸�ารà¹�อพพลิเคชันดังà¸�ล่าว content/tr/who.md0000644000175000056700000000024215232661434012525 0ustar0000000000000000Bu belgeyi kim okumalı? ======================= Herhangi bir çalışan uygulama geliÅŸtirenler. Bu tür uygulamaları dağıtan ve yöneten Ops mühendisleri. content/fr/processes.md0000644000175000056700000000576615232661434013740 0ustar0000000000000000## VI. Processus ### Exécutez l'application comme un ou plusieurs processus sans état L'application est exécutée dans l'environnement d'exécution comme un ou plusieurs *processus*. Dans la situation la plus simple, le code est un script indépendant, l'environnement d'exécution est l'ordinateur portable du développeur sur lequel est installé de quoi exécuter le langage, et le processus est lancé depuis la ligne de commande. (par exemple, `python mon_script.py`). De l'autre côté du spectre, un déploiement de production d'une application sophistiquée peut utiliser plusieurs [types de processus, instanciés dans zéro ou plus processus en fonctionnement](./concurrency). **Les processus 12 facteurs sont sans état et ne partagent [rien (en)](http://en.wikipedia.org/wiki/Shared_nothing_architecture).** Toute donnée qui doit être persistée doit être stockée dans un [service externe](./backing-services) stateful, typiquement une base de données. L'espace mémoire ou le système de fichier du processus peut être utilisé comme cache momentané pour des transactions uniques. Par exemple, télécharger un gros fichier, effectuer une opération dessus, puis stocker le résultat de l'opération dans la base de données. Les applications 12 facteurs ne supposent jamais que quelque chose ayant été mis en cache en mémoire ou sur le disque sera disponible dans une future requête ou job — avec plusieurs processus de chaque type qui s'exécutent, il y a de grandes chances qu'une future requête soit effectuée par un processus différent. Même lorsque l'on fait tourner seulement un processus, un redémarrage (déclenché par le déploiement du code, un changement de configuration, ou l'environnement d'exécution qui déplace le processus vers un lieu physique différent) va généralement balayer toutes les modifications locales (c'est-à-dire en mémoire et sur le disque). Des outils de création de paquets de ressources (ou "asset packagers") (tel que [Jammit](http://documentcloud.github.com/jammit/) ou [django-compressor](http://django-compressor.readthedocs.org/)) utilisent le système de fichier comme cache pour les ressources compilées. Une application 12 facteurs préfère faire cette compilation durant l'[étape d'assemblage](./build-release-run), comme avec le [pipeline des ressources de Rails](http://guides.rubyonrails.org/asset_pipeline.html), plutôt que durant l'exécution. Certains systèmes web s'appuient sur des ["sessions persistantes" (en)](http://en.wikipedia.org/wiki/Load_balancing_%28computing%29#Persistence) -- c'est-à-dire, mettre en cache les données de session utilisateur dans le processus de l'application et attendre que les requêtes futures du même visiteur seront routées dans le même processus. Les sessions persistantes sont une violation des 12 facteurs, qu'il ne faudrait jamais utiliser. Les états de session sont de bons candidats pour un datastore qui offre des dates d'expiration, comme [Memcached](http://memcached.org/) ou [Redis](http://redis.io/). content/zh_cn/codebase.md0000644000175000056700000000354515232661434014162 0ustar0000000000000000## I. 基准代ç � ### 一份基准代ç �(*Codebase*),多份部署(*deploy*) 12-Factor应用(译者注:应该是说一个使用本文概念æ�¥è®¾è®¡çš„应用,下å�Œ)通常会使用版本控制系统加以管ç�†ï¼Œå¦‚[Git](http://git-scm.com/), [Mercurial](https://www.mercurial-scm.org/), [Subversion](http://subversion.apache.org/)。一份用æ�¥è·Ÿè¸ªä»£ç �所有修订版本的数æ�®åº“被称作 *代ç �库*(code repository, code repo, repo)。 在类似 SVN 这样的集中å¼�版本控制系统中,*基准代ç �* 就是指控制系统中的这一份代ç �库;而在 Git 那样的分布å¼�版本控制系统中,*基准代ç �* 则是指最上游的那份代ç �库。 ![一份代ç �库对应多份部署](/images/codebase-deploys.png) 基准代ç �和应用之间总是ä¿�æŒ�一一对应的关系: * 一旦有多个基准代ç �,就ä¸�能称为一个应用,而是一个分布å¼�系统。分布å¼�系统中的æ¯�一个组件都是一个应用,æ¯�一个应用å�¯ä»¥åˆ†åˆ«ä½¿ç”¨ 12-Factor 进行开å�‘。 * 多个应用共享一份基准代ç �是有悖于 12-Factor 原则的。解决方案是将共享的代ç �拆分为独立的类库,然å�Žä½¿ç”¨ [ä¾�赖管ç�†](./dependencies) 策略去加载它们。 尽管æ¯�个应用å�ªå¯¹åº”一份基准代ç �,但å�¯ä»¥å�Œæ—¶å­˜åœ¨å¤šä»½éƒ¨ç½²ã€‚æ¯�份 *部署* 相当于è¿�行了一个应用的实例。通常会有一个生产环境,一个或多个预å�‘布环境。此外,æ¯�个开å�‘人员都会在自己本地环境è¿�行一个应用实例,这些都相当于一份部署。 所有部署的基准代ç �相å�Œï¼Œä½†æ¯�份部署å�¯ä»¥ä½¿ç”¨å…¶ä¸�å�Œçš„版本。比如,开å�‘人员å�¯èƒ½æœ‰ä¸€äº›æ��交还没有å�Œæ­¥è‡³é¢„å�‘布环境;预å�‘布环境也有一些æ��交没有å�Œæ­¥è‡³ç”Ÿäº§çŽ¯å¢ƒã€‚ä½†å®ƒä»¬éƒ½å…±äº«ä¸€ä»½åŸºå‡†ä»£ç �,我们就认为它们å�ªæ˜¯ç›¸å�Œåº”用的ä¸�å�Œéƒ¨ç½²è€Œå·²ã€‚ content/en/config.md0000644000175000056700000000575215232661434013165 0ustar0000000000000000## III. Config ### Store config in the environment An app's *config* is everything that is likely to vary between [deploys](./codebase) (staging, production, developer environments, etc). This includes: * Resource handles to the database, Memcached, and other [backing services](./backing-services) * Credentials to external services such as Amazon S3 or Twitter * Per-deploy values such as the canonical hostname for the deploy Apps sometimes store config as constants in the code. This is a violation of twelve-factor, which requires **strict separation of config from code**. Config varies substantially across deploys, code does not. A litmus test for whether an app has all config correctly factored out of the code is whether the codebase could be made open source at any moment, without compromising any credentials. Note that this definition of "config" does **not** include internal application config, such as `config/routes.rb` in Rails, or how [code modules are connected](http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html) in [Spring](http://spring.io/). This type of config does not vary between deploys, and so is best done in the code. Another approach to config is the use of config files which are not checked into revision control, such as `config/database.yml` in Rails. This is a huge improvement over using constants which are checked into the code repo, but still has weaknesses: it's easy to mistakenly check in a config file to the repo; there is a tendency for config files to be scattered about in different places and different formats, making it hard to see and manage all the config in one place. Further, these formats tend to be language- or framework-specific. **The twelve-factor app stores config in *environment variables*** (often shortened to *env vars* or *env*). Env vars are easy to change between deploys without changing any code; unlike config files, there is little chance of them being checked into the code repo accidentally; and unlike custom config files, or other config mechanisms such as Java System Properties, they are a language- and OS-agnostic standard. Another aspect of config management is grouping. Sometimes apps batch config into named groups (often called "environments") named after specific deploys, such as the `development`, `test`, and `production` environments in Rails. This method does not scale cleanly: as more deploys of the app are created, new environment names are necessary, such as `staging` or `qa`. As the project grows further, developers may add their own special environments like `joes-staging`, resulting in a combinatorial explosion of config which makes managing deploys of the app very brittle. In a twelve-factor app, env vars are granular controls, each fully orthogonal to other env vars. They are never grouped together as "environments", but instead are independently managed for each deploy. This is a model that scales up smoothly as the app naturally expands into more deploys over its lifetime. content/it/intro.md0000644000175000056700000000231115232661434013051 0ustar0000000000000000Introduzione ============ Nell'era moderna, il software viene fornito sempre più di frequente come servizio (delivered as a service): si parla di *web app* o *software as a service* (SaaS). La **twelve-factor app** è una metodologia di sviluppo orientata alla costruzione di applicazioni software-as-a-service che: * Seguono un formato **dichiarativo** per l'automazione della configurazione, minimizzando tempi e costi di ingresso per ogni sviluppatore che si aggiunge al progetto; * **Si interfacciano in modo pulito** con il sistema operativo sottostante, in modo tale da offrire la **massima portabilità** sui vari ambienti di esecuzione; * Sono **adatti allo sviluppo** sulle più recenti **cloud platform**, ovviando alla necessità di server e amministrazioni di sistema; * **Minimizzano la divergenza** tra sviluppo e produzione, permettendo il **contiuous deployment** per una massima "agilità"; * Possono **scalare significativamente** senza troppi cambiamenti ai tool, all'architettura e al processo di sviluppo; La metodologia twelve-factor può essere applicata a ogni software, scritto in qualsiasi linguaggio di programmazione, che fa uso di una serie di servizi come database, code, cache e così via. content/es/disposability.md0000644000175000056700000000616715232661434014605 0ustar0000000000000000## IX. Desechabilidad ### Hacer el sistema más robusto intentando conseguir inicios rápidos y finalizaciones seguras **Los [procesos](./processes) de las aplicaciones "twelve-factor" son *desechables*, lo que significa que pueden iniciarse o finalizarse en el momento que sea necesario.** Esto permite un escalado rápido y flexible, un despliegue rápido del [código](./codebase) y de los cambios de las [configuraciones](./config), y despliegues más robustos en producción. Los procesos deberían intentar conseguir **minimizar el tiempo de arranque**. En el mejor de los casos, un proceso necesita unos pocos segundos desde que se ejecuta el mandato hasta que arranca y está preparado para recibir peticiones o trabajos. Mejorar el tiempo de arranque proporciona mayor agilidad en el proceso de [distribución](./build-release-run) y escalado; y lo hace más robusto, porque el gestor de procesos puede mover procesos de forma segura entre máquinas físicas más fácilmente. Los procesos **se paran de manera segura cuando reciben una señal [SIGTERM](http://en.wikipedia.org/wiki/SIGTERM)** desde el gestor de procesos. Un proceso web para de manera segura cuando deja de escuchar el puerto asociado al servicio (así rechaza cualquier nueva petición), permitiendo que cualquier petición termine de procesarse y pueda finalizar sin problemas. Implícitamente, según este modelo, las peticiones HTTP son breves (no duran más de unos pocos segundos) y, en el caso de un sondeo largo, el cliente debería intentar reconectar una y otra vez cuando se pierda la conexión. Para finalizar de manera segura, un trabajador (o "worker") debe devolver el trabajo actual a una cola de trabajos. Por ejemplo, en [RabbitMQ](http://www.rabbitmq.com/) un trabajador puede mandar un [`NACK`](http://www.rabbitmq.com/amqp-0-9-1-quickref.html#basic.nack); en [Beanstalkd](https://beanstalkd.github.io), el trabajo se devuelve a una cola automáticamente en el momento en el que el trabajador finaliza. Los sistemas de exclusión mutua como [Delayed Job](https://github.com/collectiveidea/delayed_job#readme) necesitan estar seguros para liberar su candado en el registro de trabajos. Implícitamente, según este modelo, todos los trabajos son [reentrantes](https://es.wikipedia.org/wiki/Reentrancia_%28inform%C3%A1tica%29), lo que se consigue normalmente generando los resultados de manera transaccional, o convirtiendo la operación en [idempotente](http://es.wikipedia.org/wiki/Idempotencia). Los procesos deberían estar **preparados contra finalizaciones inesperadas**, como en el caso de un fallo a nivel hardware. Aunque es un caso más raro que una finalización mediante la señal `SIGTERM`, se puede dar el caso. Lo recomendable es usar un sistema de colas robusto, como Beanstalkd, que devuelve los trabajos a su cola cuando los clientes se desconectan o expira su tiempo de espera ("timeout"). En cualquier caso, una aplicación "twelve-factor" es una arquitectura que trata finalizaciones inesperadas y peligrosas. El [diseño Crash-only](http://lwn.net/Articles/191059/) lleva este concepto a su [conclusión lógica](http://docs.couchdb.org/en/latest/intro/overview.html). content/pl/toc.md0000644000175000056700000000234615232661434012512 0ustar0000000000000000The Twelve Factors ================== ## [I. Codebase](./codebase) ### Jedno źródÅ‚o kodu Å›ledzone systemem kontroli wersji, wiele wdrożeÅ„ ## [II. ZależnoÅ›ci](./dependencies) ### Jawnie zadeklaruj i wydziel zależnoÅ›ci ## [III. Konfiguracja](./config) ### Przechowuj konfiguracjÄ™ w Å›rodowisku ## [IV. UsÅ‚ugi wspierajÄ…ce](./backing-services) ### Traktuj usÅ‚ugi wspierajÄ…ce jako przydzielone zasoby ## [V. Buduj, publikuj, uruchamiaj](./build-release-run) ### Oddzielaj etap budowania od uruchamiania ## [VI. Procesy](./processes) ### Uruchamiaj aplikacjÄ™ jako jeden lub wiÄ™cej bezstanowych procesów ## [VII. Przydzielanie portów](./port-binding) ### UdostÄ™pniaj usÅ‚ugi przez przydzielanie portów ## [VIII. Współbieżność](./concurrency) ### Skaluj przez odpowiednio dobrane procesy ## [IX. Zbywalność](./disposability) ### ZwiÄ™ksz elastyczność pozwalajÄ…c na szybkie uruchamianie i zatrzymywanie aplikacji ## [X. Jednolitość Å›rodowisk](./dev-prod-parity) ### Utrzymuj konfiguracjÄ™ Å›rodowisk jak najbardziej zbliżonÄ… do siebie ## [XI. Logi](./logs) ### Traktuj logi jako strumieÅ„ zdarzeÅ„ ## [XII. ZarzÄ…dzanie aplikacjÄ…](./admin-processes) ### Uruchamiaj zadania administracyjne jako jednorazowe procesy content/uk/concurrency.md0000644000175000056700000001174315232661434014264 0ustar0000000000000000## VIII. КонкурентніÑ�ть ### МаÑ�штабуйте заÑ�тоÑ�унок за допомогою процеÑ�ів Будь-Ñ�ка комп'ютерна програма піÑ�лÑ� запуÑ�ку предÑ�тавлена одним або декількома процеÑ�ами. Веб-додатки мають різні форми виконаннÑ� процеÑ�ів. Ð�априклад, PHP-процеÑ�и виконуютьÑ�Ñ� Ñ�к дочірні процеÑ�и Apache, Ñ�кі запуÑ�каютьÑ�Ñ� в разі потреби в залежноÑ�ті від навантаженнÑ�. Java-процеÑ�и викориÑ�товують протилежний підхід: JVM забезпечує один маÑ�ивний мета-процеÑ�, Ñ�кий резервує велику кількіÑ�ть Ñ�иÑ�темних реÑ�урÑ�ів (процеÑ�ора Ñ– пам'Ñ�ті) під чаÑ� його запуÑ�ку, Ñ– керує конкурентніÑ�тю вÑ�ередині Ñ�ебе за допомогою потоків виконаннÑ� (threads). Ð’ обох випадках запущені процеÑ�и видимі длÑ� розробників заÑ�тоÑ�унку мінімально. ![МаÑ�штабуваннÑ� виражаєтьÑ�Ñ� у виглÑ�ді запущених процеÑ�ів, різноманітніÑ�ть навантаженнÑ� виражаєтьÑ�Ñ� в типах процеÑ�ів.](/images/process-types.png) **Ð’ заÑ�тоÑ�унку дванадцÑ�ти факторів, процеÑ�и Ñ” Ñ�утноÑ�Ñ‚Ñ�ми першого клаÑ�у.** ПроцеÑ�и в заÑ�тоÑ�унку дванадцÑ�ти факторів взÑ�ли Ñ�ильні Ñ�торони від [моделі процеÑ�ів UNIX длÑ� запуÑ�ку Ñ�ервіÑ�ів](https://adam.herokuapp.com/past/2011/5/9/applying_the_unix_process_model_to_web_apps/). ВикориÑ�товуючи цю модель, розробник може Ñ�проектувати Ñ�вій заÑ�тоÑ�унок таким чином, що длÑ� обробки різних робочих навантажень необхідно призначити кожному виду робіт Ñ�вій *тип процеÑ�у*. Ð�априклад, HTTP-запити можуть бути оброблені за допомогою веб-процеÑ�у (web process), а тривалі фонові завданнÑ� оброблені робочим процеÑ�ом (worker process). Це не виключає можливоÑ�ті викориÑ�таннÑ� індивідуального мультиплекÑ�уваннÑ� длÑ� окремих процеÑ�ів через потоки виконаннÑ� віртуальної машини або аÑ�инхронні/подієві моделі в таких інÑ�трументах, Ñ�к [EventMachine](https://github.com/eventmachine/eventmachine), [Twisted](http://twistedmatrix.com/trac/) або [Node.js](http://nodejs.org/). Ð�ле індивідуальна віртуальна машина може маÑ�шабуватиÑ�Ñ� тільки обмежено (вертикальне маÑ�шабуваннÑ�), тому заÑ�тоÑ�унок також повинен мати можливіÑ�ть бути запущеним Ñ�к декілька процеÑ�ів на декількох фізичних машинах. Модель, побудована на процеÑ�ах, дійÑ�но показує Ñ�ебе з найкращого боку, коли поÑ�тає необхідніÑ�ть маÑ�штабуваннÑ�. [ВідÑ�утніÑ�ть розділених даних Ñ– горизонтальне розділеннÑ� процеÑ�ів заÑ�тоÑ�унку дванадцÑ�ти факторів](./processes) означає, що додаваннÑ� більшої конкурентноÑ�ті Ñ” проÑ�тою Ñ– надійною операцією. МаÑ�ив типів процеÑ�ів Ñ– кількіÑ�ть процеÑ�ів кожного типу називаєтьÑ�Ñ� *формацією процеÑ�ів*. ПроцеÑ�и заÑ�тоÑ�унку дванадцÑ�ти факторів [ніколи не мають демонізуватиÑ�Ñ�](http://dustin.github.com/2010/02/28/running-processes.html) та запиÑ�увати PID-файли. ЗаміÑ�ть цього вони мають покладатиÑ�Ñ� на менеджер процеÑ�ів операційної Ñ�иÑ�теми (наприклад, [systemd](https://www.freedesktop.org/wiki/Software/systemd/), розподілений менеджер процеÑ�ів на хмарній платформі, або в процеÑ�Ñ– розробки на такий інÑ�трумент, Ñ�к [Foreman](http://blog.daviddollar.org/2011/05/06/introducing-foreman.html)) длÑ� керуваннÑ� [потоком виведеннÑ�](./logs), реагуваннÑ� на падіннÑ� процеÑ�ів Ñ– обробку ініційованих кориÑ�тувачем перезавантаженнÑ� чи завершеннÑ� роботи. content/zh_cn/processes.md0000644000175000056700000000413415232661434014416 0ustar0000000000000000## VI. 进程 ### 以一个或多个无状æ€�进程è¿�行应用 è¿�行环境中,应用程åº�通常是以一个和多个 *进程* è¿�行的。 最简å�•的场景中,代ç �是一个独立的脚本,è¿�行环境是开å�‘人员自己的笔记本电脑,进程由一æ�¡å‘½ä»¤è¡Œï¼ˆä¾‹å¦‚`python my_script.py`)。å�¦å¤–一个æž�端情况是,å¤�æ�‚的应用å�¯èƒ½ä¼šä½¿ç”¨å¾ˆå¤š [进程类型](./concurrency) ,也就是零个或多个进程实例。 **12-Factor 应用的进程必须无状æ€�且 [无共享](http://en.wikipedia.org/wiki/Shared_nothing_architecture) 。** 任何需è¦�æŒ�久化的数æ�®éƒ½è¦�存储在 [å�Žç«¯æœ�务](./backing-services) 内,比如数æ�®åº“。 内存区域或ç£�盘空间å�¯ä»¥ä½œä¸ºè¿›ç¨‹åœ¨å�šæŸ�ç§�事务型æ“�作时的缓存,例如下载一个很大的文件,对其æ“�作并将结果写入数æ�®åº“的过程。12-Factor应用根本ä¸�用考虑这些缓存的内容是ä¸�是å�¯ä»¥ä¿�留给之å�Žçš„请求æ�¥ä½¿ç”¨ï¼Œè¿™æ˜¯å› ä¸ºåº”用å�¯åŠ¨äº†å¤šç§�类型的进程,将æ�¥çš„请求多å�Šä¼šç”±å…¶ä»–进程æ�¥æœ�务。å�³ä½¿åœ¨å�ªæœ‰ä¸€ä¸ªè¿›ç¨‹çš„æƒ…形下,先å‰�ä¿�存的数æ�®ï¼ˆå†…存或文件系统中)也会因为é‡�å�¯ï¼ˆå¦‚代ç �部署ã€�é…�置更改ã€�或è¿�行环境将进程调度至å�¦ä¸€ä¸ªç‰©ç�†åŒºåŸŸæ‰§è¡Œï¼‰è€Œä¸¢å¤±ã€‚ æº�文件打包工具([Jammit](http://documentcloud.github.com/jammit/), [django-compressor](http://django-compressor.readthedocs.org/)) 使用文件系统æ�¥ç¼“存编译过的æº�文件。12-Factor 应用更倾å�‘于在 [构建步骤](./build-release-run) å�šæ­¤åŠ¨ä½œâ€”â€”æ­£å¦‚ [Rails资æº�管é�“](http://guides.rubyonrails.org/asset_pipeline.html) ,而ä¸�是在è¿�行阶段。 一些互è�”网系统ä¾�赖于 “[粘性 session ](http://en.wikipedia.org/wiki/Load_balancing_%28computing%29#Persistence)â€�, 这是指将用户 session 中的数æ�®ç¼“存至æŸ�进程的内存中,并将å�Œä¸€ç”¨æˆ·çš„å�Žç»­è¯·æ±‚路由到å�Œä¸€ä¸ªè¿›ç¨‹ã€‚粘性 session 是 12-Factor æž�力å��对的。Session 中的数æ�®åº”该ä¿�存在诸如 [Memcached](http://memcached.org/) 或 [Redis](http://redis.io/) 这样的带有过期时间的缓存中。 locales/de.yml0000644000175000056700000000034615232661434012051 0ustar0000000000000000de: # Name of language listed in locales menu language: "Deutsch (de)" # A text to make known that the article is a translation not an original. # Empty for English, original. translation: "Dies ist eine Übersetzung." content/zh_cn/backing-services.md0000644000175000056700000000450015232661434015624 0ustar0000000000000000## IV. å�Žç«¯æœ�务 ### 把å�Žç«¯æœ�务(*backing services*)当作附加资æº� *å�Žç«¯æœ�务*是指程åº�è¿�行所需è¦�的通过网络调用的å�„ç§�æœ�务,如数æ�®åº“([MySQL](http://dev.mysql.com/),[CouchDB](http://couchdb.apache.org/)),消æ�¯/队列系统([RabbitMQ](http://www.rabbitmq.com/),[Beanstalkd](https://beanstalkd.github.io)),SMTP 邮件å�‘é€�æœ�务([ Postfix](http://www.postfix.org/)),以å�Šç¼“存系统([Memcached](http://memcached.org/))。 类似数æ�®åº“çš„å�Žç«¯æœ�务,通常由部署应用程åº�的系统管ç�†å‘˜ä¸€èµ·ç®¡ç�†ã€‚除了本地æœ�务之外,应用程åº�有å�¯èƒ½ä½¿ç”¨äº†ç¬¬ä¸‰æ–¹å�‘布和管ç�†çš„æœ�务。示例包括 SMTP(例如 [Postmark](http://postmarkapp.com/)),数æ�®æ”¶é›†æœ�务(例如 [New Relic](http://newrelic.com/) 或 [Loggly](http://www.loggly.com/)),数æ�®å­˜å‚¨æœ�务(如 [Amazon S3](http://http://aws.amazon.com/s3/)),以å�Šä½¿ç”¨ API 访问的æœ�务(例如 [Twitter](http://dev.twitter.com/), [Google Maps](https://developers.google.com/maps/), [Last.fm](http://www.last.fm/api))。 **12-Factor 应用ä¸�会区别对待本地或第三方æœ�务。** 对应用程åº�而言,两ç§�都是附加资æº�,通过一个 url 或是其他存储在 [é…�ç½®](./config) 中的æœ�务定ä½�/æœ�务è¯�书æ�¥èŽ·å�–æ•°æ�®ã€‚12-Factor 应用的任æ„� [部署](./codebase) ,都应该å�¯ä»¥åœ¨ä¸�进行任何代ç �改动的情况下,将本地 MySQL æ•°æ�®åº“æ�¢æˆ�第三方æœ�务(例如 [Amazon RDS](http://aws.amazon.com/rds/))。类似的,本地 SMTP æœ�务应该也å�¯ä»¥å’Œç¬¬ä¸‰æ–¹ SMTP æœ�务(例如 Postmark )互æ�¢ã€‚上述 2 个例å­�中,仅需修改é…�置中的资æº�地å�€ã€‚ æ¯�个ä¸�å�Œçš„å�Žç«¯æœ�务是一份 *资æº�* 。例如,一个 MySQL æ•°æ�®åº“是一个资æº�,两个 MySQL æ•°æ�®åº“(用æ�¥æ•°æ�®åˆ†åŒºï¼‰å°±è¢«å½“作是 2 个ä¸�å�Œçš„资æº�。12-Factor 应用将这些数æ�®åº“都视作 *附加资æº�* ,这些资æº�和它们附属的部署ä¿�æŒ�æ�¾è€¦å�ˆã€‚ 一ç§�部署附加4个å�Žç«¯æœ�务 部署å�¯ä»¥æŒ‰éœ€åŠ è½½æˆ–å�¸è½½èµ„æº�。例如,如果应用的数æ�®åº“æœ�务由于硬件问题出现异常,管ç�†å‘˜å�¯ä»¥ä»Žæœ€è¿‘的备份中æ�¢å¤�一个数æ�®åº“,å�¸è½½å½“å‰�的数æ�®åº“,然å�ŽåŠ è½½æ–°çš„æ•°æ�®åº“ -- 整个过程都ä¸�需è¦�修改代ç �。 content/de/port-binding.md0000644000175000056700000000403315232661434014271 0ustar0000000000000000## VII. Bindung an Ports ### Dienste durch das Binden von Ports exportieren Web-Apps laufen manchmal in einem Webserver als Container. Zum Beispiel laufen PHP-Apps als Modul in [Apache HTTPD](http://httpd.apache.org/), oder Java-Apps laufen manchmal in [Tomcat](http://tomcat.apache.org/). **Die Zwölf-Faktor-App ist vollständig eigenständig** und verlässt sich nicht darauf, dass ein externer Webserver zur Laufzeit injiziert wird, um dem Web einen Dienst zur Verfügung zu stellen. Die Web-App **exportiert HTTP als Dienst, indem sie sich an einen Port bindet** und wartet an diesem Port auf Requests. In einer lokalen Entwicklungsumgebung öffnet ein Entwickler eine Dienst-URL wie `http://localhost:5000/`, um auf den Dienst der App zuzugreifen. Beim Deployment sorgt eine Routing-Schicht dafür, dass Requests von einem öffentlich sichtbaren Hostnamen zu den an die Ports gebundenen Prozessen kommen. Üblicherweise wird dies mittels [Abhängigkeitsdeklaration](./dependencies) implementiert. Zu der App fügt man eine Webserver-Bibliothek hinzu wie [Tornado](http://www.tornadoweb.org/) für Python, [Thin](http://code.macournoyer.com/thin/) für Ruby oder [Jetty](http://www.eclipse.org/jetty/) für Java und andere JVM-basierenden Sprachen. Dies findet vollständig im *User Space* statt, also im Code der App. Der Vertrag mit der Laufzeitumgebung ist das Binden an einen Port um Requests zu bedienen. HTTP ist nicht der einzige Dienst, der durch Portbindung exportiert werden kann. Fast jede Server-Software kann betrieben werden, indem ein Prozess an einen Port gebunden wird und auf ankommende Requests wartet. Einige Beispiele sind [ejabberd](http://www.ejabberd.im/) (spricht [XMPP](http://xmpp.org/)) und [Redis](http://redis.io/) (spricht das [Redis-Protokoll](http://redis.io/topics/protocol)). Es sei auch erwähnt, dass durch Portbindung eine App ein [unterstützender Dienst](./backing-services) für eine andere App werden kann, indem die URL der unterstützenden App der konsumierenden App als Resource-Handle zur Verfügung gestellt wird. content/pl/dev-prod-parity.md0000644000175000056700000001230615232661434014750 0ustar0000000000000000## X. Jednolitość Å›rodowisk ### Utrzymuj Å›rodowisko developerskie, stagingowe i produkcyjne tak podobne jak tylko możliwe Z doÅ›wiadczenia wiadomo, że od zawsze istniaÅ‚y różnice pomiÄ™dzy Å›rodowiskiem developerskim (developer pracujÄ…cy nad swojÄ… lokalnÄ… wersjÄ… [kodu](./codebase) aplikacji) a produkcyjnym (dziaÅ‚ajÄ…ca aplikacja dostÄ™pna dla użytkowników. Ze wzglÄ™du na ich charakter, możemy wymienić trzy rodzaje różnic: * **Różnica czasowa:** Developer może pracować nad kodem przez dni, tygodnie, miesiÄ…ce zanim ostatecznie pojawi siÄ™ on w wersji produkcyjnej. * **Różnica odpowiedzialnoÅ›ci**: Developer tworzy kod aplikacji, natomiast kto inny wdraża go do na produkcjÄ™. * **Różnica narzÄ™dzi**: Developer może używać narzÄ™dzi takich jak Nginx, SQLite i systemu OS X, natomiast wersja produkcyjna bÄ™dzie opierać siÄ™ na Apache, MySQL i systemie Linux. **Aplikacja 12factor jest zaprojektowana tak by można jÄ… byÅ‚o [bez przerwy wdrażać na produkcjÄ™](http://avc.com/2011/02/continuous-deployment/) minimalizujÄ…c różnice pomiÄ™dzy Å›rodowiskami.** MajÄ…c na uwadze powyższe różnice, można sobie z nimi radzić na różne sposoby: * Zmniejsz czas deploymentu: czas wdrożenia kodu napisanego przez developera powinien być mierzony w godzinach, a nawet w minutach. * PrzenieÅ› odpowiedzialność: developer piszÄ…cy kod powinien być zaangażowany we wdrożenia aplikacji na produkcjÄ™. * Stosuj ten sam zestaw narzÄ™dzi: utrzymuj wszystkie Å›rodowiska w których dziaÅ‚a aplikacja tak podobne jak to możliwe. PodsumowujÄ…c w formie tabeli:
    Tradycyjna aplikacja Aplikacja 12factor
    Czas pomiędzy wdrożeniami Tygodnie Godziny
    Tworzenie kodu vs wdrażanie kodu Różne osoby Te same osoby
    Środowisko developerskie vs produkcyjne Mocno różniące się Jak najbardziej zbliżone
    Zachowanie podobieństw między wdrożeniami jest ważne w przypadku [usług wspierających](./backing-services) takich jak baza danych aplikacji, system kolejkowania czy też cache. Wiele języków oferuje biblioteki, które upraszczają korzystanie z usług wspierających w tym *adaptery* do usług różnego typu. Kilka przykładów w tabeli poniżej:
    Typ Język Biblioteka Adaptery
    Baza danych Ruby/Rails ActiveRecord MySQL, PostgreSQL, SQLite
    Kolejka Python/Django Celery RabbitMQ, Beanstalkd, Redis
    Cache Ruby/Rails ActiveSupport::Cache Pamięć, system plików, Memcached
    Czasami zdarza się, że developerzy w swoim lokalnym środowisku wolą korzystać z "lżejszych" wersji różnych usług, na produkcji natomiast używając bardziej zaawansowanych narzędzi. Przykładem takiej sytuacji jest używanie lokalnie SQLite, a PostgreSQL na produkcji. Podobnie wygląda też użycie na środowisku developerskim do cachowania pamięci, zamiast Memcached znajdującego się na produkcji. **Developer postępujący zgodnie zasadami 12factor opiera się pokusie używania usług różniących się pomiędzy środowiskami**, nawet wtedy, gdy adaptery teoretycznie ukrywają różnice w implementacji pod warstwą abstrakcji. Z powodu różnic pomiędzy usługami wspierającymi mogą pojawić się niezgodności, powodując, że kod, który działał i był testowany lokalnie lub na stagingu, przestanie funkcjonować na produkcji. Pojawianie się tego typu błędów negatywnie wpływa na proces ciągłego wdrażania aplikacji. Czas stracony na wykrywaniu takich błędów i konsekwentnych awariach podczas wdrażania aplikacji może sporo kosztować, zwłaszcza gdy podobne problemy będą się z czasem gromadzić. Lekkie wersje usług w obecnych czasach nie są już tak atrakcyjne jak kiedyś. Nowoczesne usługi takie jak Memcached, PostgreSQL oraz RabbitMQ nie są trudne do instalacji w lokalnym środowisku, dzięki narzędziom jak [Homebrew](http://mxcl.github.com/homebrew/) i [apt-get](https://help.ubuntu.com/community/AptGet/Howto). Innym rozwiązaniem są narzędzia do deklaratywnego [provisioningu](https://en.wikipedia.org/wiki/Provisioning) takie jak [Chef](http://www.opscode.com/chef/) czy [Puppet](http://docs.puppetlabs.com/) połączone z lekkimi środowiskami wirtualnymi jak np. [Vagrant](http://vagrantup.com/). Pozwala ono developerom na uruchamianie lokalnych środowisk, które są bardzo zbliżone do produkcyjnych. Koszt instalacji i używania takich rozwiązań jest stosunkowo niski, biorąc pod uwagę korzyści płynące z utrzymywania jednolitych środowisk i procesu ciągłego wdrażania aplikacji. Adaptery dla różnych usług wspierających są wciąż użyteczne, gdyż dzięki nim zmiana usługi jest relatywnie łatwa. Należy jednak pamiętać, że wszystkie wdrożenia aplikacji (środowiska developerskie, stagingowe, produkcyjne) powinny używać tych samych typów i wersji usług wspierających. content/en/codebase.md0000644000175000056700000000340415232661434013455 0ustar0000000000000000## I. Codebase ### One codebase tracked in revision control, many deploys A twelve-factor app is always tracked in a version control system, such as [Git](http://git-scm.com/), [Mercurial](https://www.mercurial-scm.org/), or [Subversion](http://subversion.apache.org/). A copy of the revision tracking database is known as a *code repository*, often shortened to *code repo* or just *repo*. A *codebase* is any single repo (in a centralized revision control system like Subversion), or any set of repos who share a root commit (in a decentralized revision control system like Git). ![One codebase maps to many deploys](/images/codebase-deploys.png) There is always a one-to-one correlation between the codebase and the app: * If there are multiple codebases, it's not an app -- it's a distributed system. Each component in a distributed system is an app, and each can individually comply with twelve-factor. * Multiple apps sharing the same code is a violation of twelve-factor. The solution here is to factor shared code into libraries which can be included through the [dependency manager](./dependencies). There is only one codebase per app, but there will be many deploys of the app. A *deploy* is a running instance of the app. This is typically a production site, and one or more staging sites. Additionally, every developer has a copy of the app running in their local development environment, each of which also qualifies as a deploy. The codebase is the same across all deploys, although different versions may be active in each deploy. For example, a developer has some commits not yet deployed to staging; staging has some commits not yet deployed to production. But they all share the same codebase, thus making them identifiable as different deploys of the same app. views/layout.erb0000644000175000056700000000361015232661434012455 0ustar0000000000000000 The Twelve-Factor App <%= I18n.t(:translation) %> <% if ENV['GOOGLE_TAG_MANAGER_ACCOUNT'] %> <% end %>

    The Twelve-Factor App

    <%= yield %>