请问这位大大可以帮我解一解密吗 php的

谢金宏 发布于 2013/02/11 16:19
阅读 1K+
收藏 0
PHP

@酒逍遥 你好,想跟你请教个问题:

位牛哥, 请问可以帮小弟解一解以下文件吗?我找了很多解密的软件都无法解出,请各位大大帮帮忙,先谢谢了。 请把答案发到我邮箱-robbertcha@live.com

<?
 $O00OO0=urldecode("%6E1%7A%62%2F%6D%615%5C%76%740%6928%2D%70%78%75%71%79%2A6%6C%72%6B%64%679%5F%65%68%63%73%77%6F4%2B%6637%6A");$O00O0O=$O00OO0{3}.$O00OO0{6}.$O00OO0{33}.$O00OO0{30};$O0OO00=$O00OO0{33}.$O00OO0{10}.$O00OO0{24}.$O00OO0{10}.$O00OO0{24};$OO0O00=$O0OO00{0}.$O00OO0{18}.$O00OO0{3}.$O0OO00{0}.$O0OO00{1}.$O00OO0{24};$OO0000=$O00OO0{7}.$O00OO0{13};$O00O0O.=$O00OO0{22}.$O00OO0{36}.$O00OO0{29}.$O00OO0{26}.$O00OO0{30}.$O00OO0{32}.$O00OO0{35}.$O00OO0{26}.$O00OO0{30};print($O00O0O("JE8wTzAwMD0iWW9RbVBVRWJpRmdzdUtXQ3FsVE56d0RkSG5KYUJSQXJNY3ZmWHlwSWVMU2haanhHdGtWT09sZm5ad21QVm9qYXhYTmdGRWh6RHRJR1lLaXVNdmRDYnBCVWVxeXJKTEFUU1FIa3NXUmNaSTl0dVlkemduUzFQbnowdU45eHJremxTTnpDZTN6RXBLU0VwVmp5cllhemdqV1dHMlJWckkwamlvOWh2UmlOdlJyak5xR2h2UmlOdlJpVWhXb3p2QUdHY3QwWGdORW5yZ2pUcll6MHBLejBwVmRscmd2M1NOcmFyZ2l0T041S1BuRTF1bkVFTG56QlBBcmpYQVdqSnQwWGdmRXlTVmRsckFNREdZaURHWXJqWGdkV0cyUlZMZ2RWUGs5UU9OSGxQM3owclZkeVhBTTdJZmxpZ2ZFeVNWZGxyQU1ER1lpREdZcmpYZ2RXRzJSVkxnZFZiaHIzTFFkeGJnNEhyVmR5WEFNN0lmbGlnZldpU2VUeUdnZGxYaGF6Z2pXaWdlMHpnaldpVWYwWGdlMHpnSzB6Z2owWFNLUnhPM3Z5UDI0amUyR0VHbzlRT2V2RWUySHlwM2ZsaWtFMFNOMVVPMm8wU1I5c1AyZmFyZ3Z5U2dkOXJJZGFyZ3ZhU2VTRVBnV2pKdDBYZ056bFNOekNlM3pFcEtTRXBWZGxYaGF6Z2pXV3BuUkRySTBqaWtFMFNOMVVPMm8wU1I5c1AyZnNabjlxU2tScXJnamppMjlxU2tFV3Jtb2hmcXBqWEEwK0cyVEVwbndqWGdkS3BrRVdaQXBqTFZkV3VOZmpMVmRLcm1vY3ZnTTBKZU1FWmhkamZ3NW1yWXowT2V2MXBEMEhpcWR5TGg1RFNOSEVPM2ZqWGdXN0lmbGlTbjlxU05vUXVnZGxyZ3ZxU2Viak9lYmppa3NFSkFkOVpWZFdHbm9hcmdXakp0MFhnZldXcDNNVE8yd2paQWRLaURhemdqV2lTbjlxWGd2eXJJMGpiSWFqaWtXalpnZFdQa1IyU050N3JndnlyZ2FDWEFNN0lmbGlnZldXcDNNVE8yd2pMUTBqaXFTeE9LenRjcVN4T0t6dGNxU3hPS3p0Y3FTeE9LenRjcXA3SWZsaWdlMHpnaldpaWtIeXAzZmpMUTBqaURIQnBZdnlQMjRqR25vYUdOdzlyVnBqTFZkV0dub2Fyb2FLdU5mS2VBZHhyZ3BWWlZwakxWZFdwM01UTzJ3akxWZFdHbm9hcm9hS1Bub3NTQUdHcmc0amlEdEJQM00wdU45eFpWcDdJZmxpZ0F2bE9lYmpaQWRXdWV2RVBSOVFPZXZFZTIxQlNnMCtHMlRFcG53alhnZEtwa0VXWkFwakxWZFdHbm9hcm9hS3VOZktlQWR4cmdwamZ3NW1yWXY1cGt3OWJnTU1oV2ZqcDN2VEdZUkRaaG1LcmdXc1puekJHTjUwcmdqeWN0MFhnZkV5U1ZkbGlrVFRwcWQrcklkeXJZYXpnaldpZ0F2YXVlejByZzQ5cm85S1NldlVPMm8wU1I5YXVlejByZ2pqaWtFMFNOMVVPMm8wU1I5c1AyZmFyZ3YyT050ak5xR3lTZ0dHTGdkV1BrUjJTTnRqWHFkSHJnVzdJZmxpZ2UwemdqRTlJZmxpcG5SMEdlaXhyZ3ZhdWV6MGN0MFhVZjBYSWZ5bkdONVFHa0VCUFZNVVMyUjBlM3ZWZTN2QnBnanlyWWF6Z2pFUXVrUlF1MTlEU2VpMlNlcmpYZ1c3SWZsaWlrb3R1UjlRUDI1bnVOcGpaQU16cmdqamkyRTBTTjFVcDJFMFNBcGpYQTArRzJURXBud2pYZ01UcEtpVEpBZGxpMnpCU2t3S3JJMCtyZ0cwT045Vk9OOEtyZ1dqWEEwK1MyUjB2bkVFUGtmalhnZEtPMjl4U25FS2lxZHljdDBYZ0F2ME9uekJQblN5U3FkOXJZUnhwMlJxdU5vYXVleUVyZ2pqaWtvdHVSOVFQMjVudU5walhoYXpnald6Z2pFMlNONVdQM3JqWGdkS1Jrb0JPbm9CR2s5dExFdkJwbXphdU5SeEdncGpYaGF6Z2pFMlNONVdQM3JqWGdkS1Jrb0JPbm9CR2s5dExFaUVwZVJFcDN2SXVrUlF1MVIwdU50S3JnVzdJZmxpR25SeFNrOXFyZ2pqaTF2VFAyaVRQM3ZCcGc1YlAyR0tTZXJLcmdXN0lmbGlpWXZWZTN2QnBnZDlyazVFR3FNd1AzTUlQa0VFUEtmalhnVzdJZmxpaVl2VmUzdkJwZzArT2VNdHUyUjVySTBqaVl2Vk8yOXhTbkVLcm9hS09lTXRlMnNFSkFHR2N0MFhnQXYwT0U5MFAzZHNaS3pFTzNpRUdtc0VKQWQ5cmd2ME9uekJQblN5U3FNUGkyb3RwbzlEU056cVNlZktlaGF6Z2pFcVNldjFwbjRqaVl2VmUzdkJwSWF6Z0swemdqMFhTS1J4TzN2eVAyNGplMkdFR285YXVlejBYZ3ZzT2VkYXJndnRYQU03SWZsaWlZdlZlM3ZCcGdkOXJvOUtTZXZVR2tpVUdrOXRyZ2p5Y3QwWGdBdnFTZW1qWkFkV0draVVHazl0TGg1YVAyb1dlMm90dUFkbHJnR3dPTjlWT045Q1N3RTBTTjFEdjJSMHduUkhHTlJER2dwalhoYXpnaldXcG5SSExoNURTZXZrdU5SYVNZYmpYZ2RLUEtSc2UyRXlTZ0gwdWV2YVNBSHh1TnpDTFlNeU8xOTFwbnRhcFlpeU8yd2FPMkh5TzJzVUdlaWFMa3pCUE4xeXAzenlQMjRhTzI5c1BORURwMkVCUEU5cU9ldkVMa3pCUE4xeXAzenlQMjVVUEtSc0xrekJQTjF5cDN6eVAyNVVHbjlhR04xRUxZemxQM01VTzJIeU8yc1VHZWlhTFl6RVBrSEVwRTlRcG5SV3VldlVwMnpCcG53YXVldkVQUjlhUDJ6VEdrRUJQVkgyUDJIMVBOd0tyZ1c3SWZsaWlZaUVwQTArcDJSMHdrb0tTdzVCcmdqamlZZGpYaGF6Z2pXV1BOb3Ryb2FLdTJSNUcyOXFTZ0dHcmdPbnJndnFTZW1zWkt6RUdtc0VKZUdCcG5malhnZFdQTm90cm9hS3UyUjVHMjlxU2dHR3JnVzdJZmxpaWsxVHBnTVBpMnp5U2dHR3JnT25yZ3ZxU2Vtc1pLekVHbXp5U2dkbHJndnNPZWRqTnFHUXVOZktlQWR5Y3QwWGdBdnNPZWRqTnFHREdrb3FHbzl0cG5FUVNBR0dyZ09ucmd2cVNlbXNaS3pFR296ME9laTB3WWl5TzJ3alhnZFdQTm90cm9hS3AzdlRwS3ZVcFlpeU8yd0tlQWR5Y3QwWGdBdnNPZWRqTnFHRVBudlVwWWl5TzJ3S2VBZG5pVmRXcG5SSExoNURTZXZvUG52ZnBuRVFTQWRscmd2c09lZGpOcUdFUG52VXBZaXlPMndLZUFkeWN0MFhnQXZzT2Vkak5xR0RHa29xR285UVAyMXN1ZXpEdU45eHdubzBTQUdHcmdPbnJndnFTZW1zWkt6RUdvejBPZWkwZjI5c1BORURwMkVCUEVpVEdrd2pYZ2RXUE5vdHJvYUtwM3ZUcEt2VU8yOXNQTkVEcDJFQlBFaVRHa3dLZUFkRnJJbXRiZ2R5Y3QwWGdBdnNPZWRqTnFHRVBudlVPMjlzUE5FRHAyRUJQRWlUR2t3S2VBZG5pVmRXcG5SSExoNURTZXZvUG52SVAyMXN1ZXpEdU45eHdubzBTQWRscmd2c09lZGpOcUdFUG52VU8yOXNQTkVEcDJFQlBFaVRHa3dLZUFkRnJJbXRiZ2R5Y3QwWGdBdnNPZWRqTnFHREdrb3FHbzlRUDIxc3VlekR1Tjl4aEtSc2kxMGppVk9qaVlpRXBBMCtwMlIwdzN2VHBLdklQMjFzdWV6RHVOOXhoS1JzcmdqamlrMVRwZ01QaTN6ME9laTBlMnpCUE4xeXAzenlQMjVjR04wS2VBZHljdDBYZ0F2c09lZGpOcUdFUG52VU8yOXNQTkVEcDJFQlBXNTFQQUdHcmdPbnJndnFTZW1zWkt6RUdtUnhTbXpCUE4xeXAzenlQMjVjR04walhnZFdQTm90cm9hS1NONVdlMnpCUE4xeXAzenlQMjVjR04wS2VBZHljdDBYZ0F2c09lZGpOcUdER2tvcUdvOTBQM3ZUUGs1MVBBR0dyZ09ucmd2cVNlbXNaS3pFR296ME9laTBSazkwT05IeEdOMGpYZ2RXUE5vdHJvYUtwM3ZUcEt2VUdrOTBPTkh4R04wS2VBZHljdDBYZ0F2c09lZGpOcUdFUG52VUdrOTBPTkh4R04wS2VBZG5pVmRXcG5SSExoNURTZXZvUG52d1AzdlRQazUxUEFkbHJndnNPZWRqTnFHRVBudlVHazkwT05IeEdOMEtlQWR5Y3QwWGdBdnNPZWRqTnFHREdrb3FHbzlRcG5SV3VlZktlQWRuaVZkV3BuUkhMaDVEU2V2aEdrb3FHbXpxU052eUdnZGxyZ3ZzT2Vkak5xR0RHa29xR285UXBuUld1ZWZLZUFkeWN0MFhnQXZzT2Vkak5xR0VQbnZVTzNpRVNrRTBpMTBqaVZPamlZaUVwQTArcDJSMHZONVdmM2lFU2tFMHJnamppazFUcGdNUGkyUnhTbzlRcG5SV3VlZktlQWR5Y3QwWGdBdnNPZWRqTnFHc09OSGFlMkUwU04wS2VBZG5pVmRXcG5SSExoNURTZXZ6T05IYUFldkVQQWRscmdHMHBLUkVpcWR5Y3QwWGdBdnNPZWRqTnFHS0dOb3FPTjUwU053S2VBZG5pVmRXcG5SSExoNURTZXZZR05vcU9ONTBTTndqWGdkS0dZaTFTQXBqWGhhemdqV1dQTm90cm9hS3AyUjJTTjVXT2VFRGUzaUVHWVJxUFZHR3JnT25yZ3ZxU2Vtc1pLekVHb3pFR25SeFNrbzVwMWlFR1lScVBWZGxyZ0cwcEtSRWlxZHljdDBYZ0F2c09lZGpOcUdxU05vYWUydkVwMnpxdU5pRWkxMGppVk9qaVlpRXBBMCtwMlIwd25SVFBtdkVwMnpxdU5pRXJnamppM3ZxR053S3JnVzdJZmxpaWsxVHBnTVBpMnpUcDJUVU8yOTFwazl4aTEwamlWT2ppWWlFcEEwK3AyUjBmMm9EdW16QkdlTUJQVmRscmdHMHBLUkVpcWR5Y3QwWGdBdnNPZWRqTnFHRFAzaTBpMTBqaVZPamlZaUVwQTArcDJSMHcyOXFHZ2Rscmd2c09lZGpOcUdEUDNpMGkxMGpYaGF6Z2pXV1BOb3Ryb2FLT2VpRU9BR0dyZ09ucmd2cVNlbXNaS3pFR21vcVNObWpYZ2RXUE5vdHJvYUtPZWlFT0FHR3JnVzdJZmxpaWsxVHBnTVBpM01UUzJSVXAyRTZTQUdHcmdPbnJndnFTZW1zWkt6RUdvTVRTMlJodWV5RXJnamppazFUcGdNUGkzTVRTMlJVcDJFNlNBR0dyZ1c3SWZsaUlmbGlpWWlFcDNkalpBZFdHa2lVR2s5dExoNUVKa1JRR2V2RXJnamppWWlFcEFkeWN0MFhnQXZRUDNSeEdnZDlyZ3ZxU2V6dExoNTBQM3ZUUG85cVNlejFQWXZEY3QwWGdmMFhnQXZ5dU52RHJJMGpPZWlxT2VXalhnVzdJZmxpaVlpRXAzTVV1ZXZFUGVialpBZGxya29xcG5vNXJnV2ppWWlFcDNkc1pLdlRQMmlUUDJzRWUyRTBTTjFEY3QwWGdBdjBPTjlWT045Q1NSOXlHa1JzZTJIeXAzZmpaQU1UcEtpVEpBZGxYaGF6Z2pFblAzaUVPTnpscmdqamlZaUVwM01VdWV2RVBlYmpOcUcwT045Vk9OOUNTUjl5R2tSc2kxMGpPZWJqaVlTVFBnZHlyWWF6Z2pXaWlZU1RQZ2Q5cmdqak9laXFPZVdqWEFkV0dub2FjdDBYZ2ZFREcyRTBPMmpqWGd2c09lZGpOcUdhdU5zRWUyRXh1ZWZLZUFXakp0MFhnZldpTzJvRFNBZEtHbjlhR04xRWlxZDZJZmxpZ2ZXaWlZU1RQZ01QaTJIeXUyUkRpMTBqWkFkV0dub2Fyb2FLR245YUdOMUVpMTA3SWZsaWdmV2lPS2lFT05hN0lmbGlnZkVXU05TVEdOSDBySWx6Z2pXaWdmV1dHbm9hcm9hS1BrRUNTZWJLZUFkOXJJZDdJZmxpZ2ZXaU9LaUVPTmE3SWZsaWdlMHpnaldpaVl2VFAyaVRQMnNFZTJFMFNOMVVQa0VER2dNUGlZU1RQZ01QaTI1MVBSOXl1TmZLZVIwalpBZFdHbm9hY3QwWGdlMHpnaldpSWZsaWlrRXlTWWJqWkFNVHBLaVRKUjlDU2VFRHJnamppWXZUUDJpVFAyc0VlMkUwU04xVVBrRURHZ2R5Y3QwWGdBdnFTZW1qWkFkV0draVVHazl0TGg1YVAyb1dlMm90dUFkbHJnR2lHa1JzcDBIeXAzdllTZXZBU2VvMVNlejBpcWR5Y3QwWGdBdnFTZW1zWkt6RUdtU3lTTkhXcHFkbHJnR3hHTjFVdU5FV0xrRTBTTjFVdU4xS0xZTXFQM01EZTI1VFBOd0tyZ1c3SWZsaWlZaUVwQTArcDJSMGhLUnNBTkVXcHFkbHJrRXNwa0hCU2t3alhnZEtMZ3Bhcmd2eXVOdkRyZ1dqWGhhemdqV1dwblJEcGdkOXJndjBPRTkwUDNkc1puUjRTTnoxR2t3alhnZFdwblJIcmdXN0lmbGlpWWlFcDNNVXVldkVQZWJqWkFkbHJrb3Fwbm81cmdXamlZaUVwM2RzWm5FMFNOMURjdDBYZ0F2cVNlenRlMkUwU04xVVBrRURHZ2Q5cmd2cVNlenRlMkUwU04xRHJvYUt1ZXZFUEFHR2N0MFhnTlNCcG5SVE8yampYZ2RXcG5SRHBvOXlHa1JzZTJIeXAzZmpPZWJqaVlTVFBnZHlyWWF6Z2pXaWlrRXNTM2JqWkFNVHBLaVRKQWRsWGhhemdqV2lpWVNUUGdkOXJnampPZWlxT2VXalhBZFdHbm9hY3QwWGdmV1d1ZXZFUFI5eVBOR0RySTBqWGdNVHBLaVRKQWR5cmd2Mk9OdGpOcUd5R2tSc2UyRXNTM2JLZWhhemdqV2lpa0UwU04xVXVOMUtwcWQ5cmdqak9laXFPZVdqWEFkV3VldkVQUjl5UE5HRHJvYUt1ZXZFUFI5eVBOcEtlaGF6Z2pXaVNuOXFTTm9RdWdkbHJndnlHa1JzZTJFc1MzYmpPZWJqaW85eVBOcGpYQU03SWZsaWdmV1dlMkVzU3FkOXJnampPZWlxT2VXalhBZFdlMkVzU0RhemdqV2lnTkVucmdqV2UyRXNTcU1QaTNScVBnR0dYQU03SWZsaWdmV2lpa0VzUzNiak4xMGpaQU1UcEtpVEpBZGxpM1JxUGdwalpoNGppbzl5UE5wak5xRzFwbnRLZUF0amkzejFwbnRLckkwK3JndlV1TjFLcm9hS0dlaWFpMTBqTFZkS2VEbXRiWWpIYklkeHVLTUtpcXRqaTI5cVNrRVdpcWQ5WlZkV2UyRXNTcU1QaTNNQnAyRTB1Tjl4aTEwalhoYXpnaldpZ2UwemdqV2lVZjBYZ2ZXV0drb0JPbm9CdTJSVXVldkVQUjlhdWV6MHJvYVdHbm9hcm9hS1BLUnNlMkV5U2dHR2VBTVBpMkVzUzNiS2VBZDlyZ3Z5UE5HRGN0MFhnZld6Z2pXaWlZTXFQM01EZTN2eUdrSEVySTBqZTNNcVAzTURlM3Z5R2tIRXJnamppWVNUUGdNUGkzTXFQM01EZTI1VFBOd0tlQWR5Y3RXemdqV2lwMjlxR2dqV3BZaUJwWXpVR2tFMFBrUlBpM01xUDNNRGkxMHljdFdpSWZsaWdORW5yZ2pXUE5vdE5xRzB1ZXZhU1I5c1AydkVpMTBqWmgwamJWV2pKdDBYZ2ZXaXAyVDFTblNhU0FkbHJndnRwbjl0cDE5MHVldmFTUmFLcFlpQnBZYktlQWR5Y3QwWGdmRTlnZldpSWZsaWdBdjBPTjlWT045Q1NSOXlHa1JzZTJIeXAzZmpOcXYyT050ak5xR3hHTjFVdU5FV2kxMUdyb2FLdU41MHBuOEtlQWQ5cmd2dHBuOXRwMTkwdWV2YVNSYUtPS2lUUG5mS2VBZHhyZ3Z0cG45dHAxOTB1ZXZhU1JhS3BrNUJpMTBqTFZkS3JncGpMVk15UGVNYVAydkVyZ2pqaXFwYXJndnRwbjl0cDE5MHVldmFTUmFLcFlpQnBZYktlQWR5Y3QwWGdmRXlTVmRsdU41MEdub2FYZ3ZzT2VNUGkzdnlHa0hFZTIxQlNrd0tlQVdqWlZkdFhBTTdJZmxpZ2ZFeVNWZGxyTlJzcFl2NVhndnNPZU1QaTN2eUdrSEVlMjFCU2tSVVBrUnhpMTB5WEFNN0lmbGlnZldpaVl2eUdrSEVySTBqaXFwN0lmbGlnZldpU245cXJnald1aDB0Y3FkV3VoSHlQS3YyT050bGlrMVRwb2FLR2tFMFBrUlVQTjlXU1I5YVNONEtlQVc3cmd2eVhxYXlyWWF6Z2pXaWdmV2lpWXZ5R2tIRXJnNDlyZ3Z0cG45dHAxOTB1ZXZhU1JhS3BZaUJwWWJLZVJhV3VSMDdJZmxpZ2ZXaVVmMFhnZldpZ0F2ME9OOVZPTjlDU1I5eUdrUnNlMkh5cDNmak5xdjJPTnRqTnFHeEdOMVV1TkVXaTExR3JvYUtHa0UwUGt3S2VBZDlyZ3Z0cG45dHAxOTB1ZXZhU1JhS09LaVRQbmZLZUFkeHJndnRwbjl0cDE5MHVldmFTUmFLcGs1QmkxMGpMVmRLcmdwakxWZFdHa0UwUGt3N0lmbGlnZkU5cmtSYXAyd2pKdDBYZ2ZXaWdBdjBPTjlWT045Q1NSOXlHa1JzZTJIeXAzZmpOcXYyT050ak5xR3hHTjFVdU5FV2kxMUdyb2FLR2tFMFBrd0tlQWQ5cmd2dHBuOXRwMTkwdWV2YVNSYUtPS2lUUG5mS2VBZHhyZ3Z0cG45dHAxOTB1ZXZhU1JhS3BrNUJpMTBqTFZkS3JncGpMVk15UGVNYVAydkVyZ2pqaXFwYXJndnRwbjl0cDE5MHVldmFTUmFLcFlpQnBZYktlQWR5Y3QwWGdmV2lVZjBYZ2ZFOUlmbGlVZjBYZ2VpRUdZUnFQVk1UcEtpVEpBZGxpMnpCR041MGlxZDlaVk15UEt2Mk9OdGpYZ2RXTzI5MVBLZmpYQXRqaTJFMFNOMVVQa0VER2dwalpoNGppWXZUUDJpVFAyc0VlMkUwU04xVVBrRURHZ2R5Y3QwWFVmMFhJZnluR041UUdrRUJQVk1VUzJSMGUyekJHZU1CUEU5YXVlejBYZ3ZzT2VkYXJndnRYQU03SWZsaWlZdlZlM3ZCcGdkOXJvOUtTZXZVR2tpVUdrOXRyZ2p5Y3QwWGdBdnFTZW1qWkFkV0draVVHazl0TGg1YVAyb1dlMm90dUFkbHJnR3dPTjlWT045Q1N3RTBTTjFEZjI5MXBrOXh2MlIwd25SSEdOUkRHZ3BqWGhhemdqV1dwblJITGg1RFNldmt1TlJhU1lialhnZEtQS1JzZTJFeVNnSDB1ZXZhU0FIeHVOekNMWU15TzE5MXBudGFwWWl5TzJ3YU8ySHlPMnNVR2VpYUxrekJQTjF5cDN6eVAyNGFPMjlzUE5FRHAyRUJQRTlxT2V2RUxrekJQTjF5cDN6eVAyNVVQS1JzTGt6QlBOMXlwM3p5UDI1VUduOWFHTjFFTFl6bFAzTVVPMkh5TzJzVUdlaWFMWXpFUGtIRXBFOVFwblJXdWV2VXAyekJwbndhdWV2RVBSOWFQMnpUR2tFQlBWSDJQMkgxUE53YU8yOTFwazl4ZTNNcXVOekVMa3pCR2VNQlBFOXFPZXZFTGt6QkdlTUJQRTlER2tvcUdvOTB1TjFFTGt6QkdlTUJQRTlFUG52VUdrRXNTQUhEdWs5dGUzdjVwa3dLcmdXN0lmbGlpWWlFcEEwK3AyUjB3a29LU3c1QnJnamppWWRqWGhhemdqV1dQTm90cm9hS3UyUjVHMjlxU2dHR3JnT25yZ3ZxU2Vtc1pLekVHbXNFSmVHQnBuZmpYZ2RXUE5vdHJvYUt1MlI1RzI5cVNnR0dyZ1c3SWZsaWlrMVRwZ01QaTJ6eVNnR0dyZ09ucmd2cVNlbXNaS3pFR216eVNnZGxyZ3ZzT2Vkak5xR1F1TmZLZUFkeWN0MFhnQXZzT2Vkak5xR0RHa29xR285UVAzUnRQMjVVcG5vMFNBR0dyZ09ucmd2cVNlbXNaS3pFR296ME9laTBmMjkxcGs5eHdubzBTQWRscmd2c09lZGpOcUdER2tvcUdvOVFQM1J0UDI1VXBubzBTQUdHcmdsamJoZHRyZ1c3SWZsaWlrMVRwZ01QaTJSeFNvOVFQM1J0UDI1VXBubzBTQUdHcmdPbnJndnFTZW1zWkt6RUdtUnhTbXpCR2VNQlBFaVRHa3dqWGdkV1BOb3Ryb2FLU041V2UyekJHZU1CUEU5cU9ldkVpMTBqWFZkSGJJZGpYaGF6Z2pXV1BOb3Ryb2FLcDN2VHBLdlVPMjlzUE5FRHAyRUJQRWlUR2t3S2VBZG5pVmRXcG5SSExoNURTZXZoR2tvcUdtekJQTjF5cDN6eVAyNUFPZXZFcmdqamlrMVRwZ01QaTN6ME9laTBlMnpCUE4xeXAzenlQMjVBT2V2RWkxMGpYVmRIYklkalhoYXpnaldXUE5vdHJvYUtTTjVXZTJ6QlBOMXlwM3p5UDI1QU9ldkVpMTBqaVZPamlZaUVwQTArcDJSMHZONVdmMjlzUE5FRHAyRUJQRWlUR2t3alhnZFdQTm90cm9hS1NONVdlMnpCUE4xeXAzenlQMjVBT2V2RWkxMGpYVmRIYklkalhoYXpnaldXUE5vdHJvYUtwM3ZUcEt2VU8yOXNQTkVEcDJFQlBXNTFQQUdHcmdPbnJndnFTZW1zWkt6RUdvejBPZWkwZjI5c1BORURwMkVCUFc1MVBBZGxyZ3ZzT2Vkak5xR0RHa29xR285UVAyMXN1ZXpEdU45eGhLUnNpMTBqWGhhemdqV1dQTm90cm9hS1NONVdlMnpCUE4xeXAzenlQMjVjR04wS2VBZG5pVmRXcG5SSExoNURTZXZvUG52SVAyMXN1ZXpEdU45eGhLUnNyZ2pqaWsxVHBnTVBpMlJ4U285UVAyMXN1ZXpEdU45eGhLUnNpMTBqWGhhemdqV1dQTm90cm9hS3AzdlRwS3ZVR2s5ME9OSHhHTjBLZUFkbmlWZFdwblJITGg1RFNldmhHa29xR29TQlBZUnNTQWRscmd2c09lZGpOcUdER2tvcUdvOTBQM3ZUUGs1MVBBR0dyZ1c3SWZsaWlrMVRwZ01QaTJSeFNvOTBQM3ZUUGs1MVBBR0dyZ09ucmd2cVNlbXNaS3pFR21SeFNvU0JQWVJzU0FkbHJndnNPZWRqTnFHRVBudlVHazkwT05IeEdOMEtlQWR5Y3QwWGdBdnNPZWRqTnFHREdrb3FHbzlRcG5SV3VlZktlQWRuaVZkV3BuUkhMaDVEU2V2aEdrb3FHbXpxU052eUdnZGxyZ3ZzT2Vkak5xR0RHa29xR285UXBuUld1ZWZLZUFkeWN0MFhnQXZzT2Vkak5xR0VQbnZVTzNpRVNrRTBpMTBqaVZPamlZaUVwQTArcDJSMHZONVdmM2lFU2tFMHJnamppazFUcGdNUGkyUnhTbzlRcG5SV3VlZktlQWR5Y3QwWGdBdnNPZWRqTnFHRHVrOXRlM3Y1cGt3S2VBZG5pVmRXcG5SSExoNURTZXZodWs5dFJZRXRTQWRscmd2c09lZGpOcUdEdWs5dGUzdjVwa3dLZUFkeWN0MFhnQXZzT2Vkak5xR0RQM2kwaTEwamlWT2ppWWlFcEEwK3AyUjB3MjlxR2dkbHJndnNPZWRqTnFHRFAzaTBpMTBqWGhhemdqV1dQTm90cm9hS09laUVPQUdHcmdPbnJndnFTZW1zWkt6RUdtb3FTTm1qWGdkV1BOb3Ryb2FLT2VpRU9BR0dyZ1c3SWZsaWlrMVRwZ01QaTNNVFMyUlVwMkU2U0FHR3JnT25yZ3ZxU2Vtc1pLekVHb01UUzJSaHVleUVyZ2pqaWsxVHBnTVBpM01UUzJSVXAyRTZTQUdHcmdXN0lmbGlJZmxpaVlpRXAzZGpaQWRXR2tpVUdrOXRMaDVFSmtSUUdldkVyZ2pqaVlpRXBBZHljdDBYZ0F2UVAzUnhHZ2Q5cmd2cVNlenRMaDUwUDN2VFBvOXFTZXoxUFl2RGN0MFhnZjBYZ0F2eXVOdkRySTBqT2VpcU9lV2pYZ1c3SWZsaWlZaUVwM01VdWV2RVBlYmpaQWRscmtvcXBubzVyZ1dqaVlpRXAzZHNaS3ZUUDJpVFAyc0VlMkUwU04xRGN0MFhnQXYwT045Vk9OOUNTUjl5R2tSc2UySHlwM2ZqWkFNVHBLaVRKQWRsWGhhemdqRW5QM2lFT056bHJnamppWWlFcDNNVXVldkVQZWJqTnFHME9OOVZPTjlDU1I5eUdrUnNpMTBqT2ViamlZU1RQZ2R5cllhemdqV2lpWVNUUGdkOXJnampPZWlxT2VXalhBZFdHbm9hY3QwWGdmRURHMkUwTzJqalhndnNPZWRqTnFHYXVOc0VlMkV4dWVmS2VBV2pKdDBYZ2ZXaU8yb0RTQWRLR245YUdOMUVpcWQ2SWZsaWdmV2lpWVNUUGdNUGkySHl1MlJEaTEwalpBZFdHbm9hcm9hS0duOWFHTjFFaTEwN0lmbGlnZldpT0tpRU9OYTdJZmxpZ2ZFV1NOU1RHTkgwcklsemdqV2lnZldXR25vYXJvYUtQa0VDU2ViS2VBZDlySWQ3SWZsaWdmV2lPS2lFT05hN0lmbGlnZTB6Z2pXaWlZdlRQMmlUUDJzRWUyRTBTTjFVUGtFREdnTVBpWVNUUGdNUGkyNTFQUjl5dU5mS2VSMGpaQWRXR25vYWN0MFhnZTB6Z2owWGdBdnl1TnZEckkwak9laXFPZUVVdTJSNXBxZGxyZ3YwT045Vk9OOUNTUjl5R2tSc2UySHlwM2ZqWGhhemdqV1dwblJIckkwamlZdlZlM3ZCcGcwK1BrOVRTbzlUcGtXalhnZEtBZXZFUGV6YnVlejB2MlIwd25SSEdOUkRHZ3BqWGhhemdqV1dwblJITGg1RFNldmt1TlJhU1lialhnZEtQS1JzZTJFeVNnSHlHa1JzZTJFc1NxSHRwbjl0cDE5eE9OMUVpcWR5Y3QwWGdBdnFTZW1zWkt6RUdtNTFQd0V5U1lialhnTXlQZU1hUDJ2RXJnamppcXRLTGdkV3VORVdwcWR5cmdXN0lmbGlpWWlFcDNkalpBZFdHa2lVR2s5dExoNUVKa1JRR2V2RXJnamppWWlFcEFkeWN0MFhnQXZxU2V6dGUyRTBTTjFEckkwalhnTVRwS2lUSkFkeXJndnFTZXp0TGg1eUdrUnNwRGF6Z2pXV3BuUkRwbzl5R2tSc2UySHlwM2ZqWkFkV3BuUkRwbzl5R2tSc3BxTVBpMkUwU04wS2VoYXpnakVuUDNpRU9OemxyZ2pqaVlpRXAzTVV1ZXZFUFI5YXVlejBya29Ecmd2Mk9OdGpYQU03SWZsaWdBdnlQTkdEckkwak9laXFPZVdqWGdXN0lmbGlnQXYyT050alpBZGxya29xcG5vNXJnV2ppWVNUUElhemdqV2lpa0UwU04xVXVOMUtwcWQ5cmdqak9laXFPZVdqWEFkV0dub2Fyb2FLdWV2RVBSOXlQTkdEaTEwN0lmbGlnQXZ5R2tSc2UyRXNTM2JqWkFkbHJrb3Fwbm81cmdXamlrRTBTTjFVdU4xS3BxTVBpMkUwU04xVXVOMUtpMTA3SWZsaWdOU0JwblJUTzJqalhnZFd1ZXZFUFI5eVBOR0Rya29Ecmd2VXVOMUtyZ1dqSnQwWGdmV2lpbzl5UE5walpBZGxya29xcG5vNXJnV2ppbzl5UE5wN0lmbGlnZkV5U1ZkbGlvOXlQTnBqTnFHMXBudEtlQVdqSnQwWGdmV2lnQXZ5UE5HRHJvc0dySTBqT2VpcU9lV2pYZ0cxcG50S3JJMCtyZ3ZVdU4xS3JvYUtHZWlhaTEwYXJnR0RHZWlhaXFkOVpWZFdlMkVzU3FNUGkzUnFQZ0dHcmc0amkxOEhiSU00YmhkdExueXRTcXBhcmdHQnBudnlTZ3BqWmg0amlvOXlQTnBqTnFHdFAzenlHa0VCUFZHR3JnVzdJZmxpZ2ZFOUlmbGlnZTB6Z2pXaWlZdlRQMmlUUDJzRWUyRTBTTjFVUGtFREdnTVBpWVNUUGdNUGkyNTFQUjl5dU5mS2VSMGpOcUd5UE5HRGkxMGpaQWRXdU4xS3BEYXpnaldpSWZsaWdBdnRwbjl0cDE5MHVldmFTQWQ5cm85dHBuOXRwMTkwdWV2YVNBZGxyZ3YyT050ak5xR3Rwbjl0cDE5eE9OMUVpMTBqWGhhaUlmbGlnZXpCcEtmbGlZTXFQM01EZTN2eUdrSEVOcUd0cG45dHBxR0dYaGFpZ2YwWGdmRXlTVmRsaWsxVHBvYUtHa0UwUGtSVVBOOVdTQUdHckkwOXJJcnlyWWF6Z2pXaWdlemxHTlNuUGt3alhnZFdwWWlCcFl6VUdrRTBQa1JQaTNNcVAzTURpMTBqWGhhemdqV2lVZldpZ2YwWGdmV1dHa29CT25vQnUyUlV1ZXZFUFI5YXVlejByb2FXR25vYXJvYUtQS1JzZTJFeVNnR0dlQU1QaTJFeEdZaUJpMTBqWkFkV3BZaUJwWXpVR2tFMFBrUlBpMmlxT041V2kxMGpMVmRXcFlpQnBZelVHa0UwUGtSUGkzTXhQcUdHcmc0amlxZEtyZzRqdU4xdFBrOVdTQWRscmdwS0xnZFdwWWlCcFl6VUdrRTBQa1JQaTNNcVAzTURpMTBqWGhhemdqV2l1Tk9qWGtFeEdZU1RQZ2pXUE5vdE5xRzB1ZXZhU1I5c1AydkVpMTB5ckk0amJnV2pKdDBYZ2ZXaXVOT2pYZ29FUGVNMEpBaldQTm90TnFHMHVldmFTUjlzUDJ2RWUySEVQVkdHWEFXakp0MFhnZldpZ0F2MHVldmFTQWQ5cmdwS2N0MFhnZldpZ05TQnBWZGxpa1c5YklhamlrVzh1TjUwR25vYVhndnNPZU1QaTN2eUdrSEVlMjFCU2tSVVBrUnhpMTB5Y3FkV3VBYUNYQU03SWZsaWdmV2lnQXYwdWV2YVNBZHhaQWRXcFlpQnBZelVHa0UwUGtSUGkzTXFQM01EaTExUGlrRUdjdDBYZ2ZXaWdlMHpnaldpZ2ZXV0drb0JPbm9CdTJSVXVldkVQUjlhdWV6MHJvYVdHbm9hcm9hS1BLUnNlMkV5U2dHR2VBTVBpM3Z5R2tIRWkxMGpaQWRXcFlpQnBZelVHa0UwUGtSUGkyaXFPTjVXaTEwakxWZFdwWWlCcFl6VUdrRTBQa1JQaTNNeFBxR0dyZzRqaXFkS3JnNGppWXZ5R2tIRWN0MFhnZldpVUFNRVBZekVyWWF6Z2pXaWdmV1dHa29CT25vQnUyUlV1ZXZFUFI5YXVlejByb2FXR25vYXJvYUtQS1JzZTJFeVNnR0dlQU1QaTN2eUdrSEVpMTBqWkFkV3BZaUJwWXpVR2tFMFBrUlBpMmlxT041V2kxMGpMVmRXcFlpQnBZelVHa0UwUGtSUGkzTXhQcUdHcmc0amlxZEtyZzRqdU4xdFBrOVdTQWRscmdwS0xnZFdwWWlCcFl6VUdrRTBQa1JQaTNNcVAzTURpMTBqWGhhemdqV2lnZTB6Z2pXaVVmMFhnZTB6Z2pXemdqRXFTZXYxcG40ak9laXFPZVdqWGdHUVAzUnhHZ3BqWmg0anVONTBHbm9hcmdqamlrekJHTjUwcmdXYXJnR3lHa1JzZTJIeXAzZktySTArcmd2ME9OOVZPTjlDU1I5eUdrUnNlMkh5cDNmalhoYXpnSzB6Z2owWFNLUnhPM3Z5UDI0amUzTXFQM01EZTN2eUdrSEVYZ3Z0cG45dHAxOXhPTjFFWEFNN0lmbGlpWU1xUDNNRGUyNVRQTndqWkFNdHBuUktlM2lFcGtIVE8yd2pYZ2RWTHFUUGJnMDVlQWE2TkRkc2NSMENjVldCclZ0anJWcmFyZ3Z0cG45dHAxOXhPTjFFcmdXN0lmbGlwWWlFUzE5c09ldlF1Z2RscmdyQjVTY001NG5iY1ZqeFhEOHljcThWTGdkV3BZaUJwWXpVUG5vc1NBdGppa2lxT041V3JnVzdJZmxpaWtpcU9ONVdySTBqdWV6RFNlZmpYZ2RXT0tpVFBuZmpORG9HcmdXalpxZFdPS2lUUG5mak5Eb0dySWxqaXFwN0lmbGlwWWlFUzE5c09ldlF1Z2RscmdyQk4rVjB5K05aczNERUtsQkVRN0dHY1ZqeFhEOHljcThWTGdkV3BZaUJwWXpVUG5vc1NBdGppWU14UHFkeWN0MFhnQXZ0UG44alpBTXlwM3pFR2dkbHJndnRQbjhqTkRvR3JnV2pacWRXcGs1QnJvYUhlQWQ2cmdwS2N0MFhnQXZ0cG45dHAxOXhPTjFFckkwanBZaUVTMTlxU2VNYU9OekVyZ2pqclYvRVc0WUtWT3Q2WGc0Q1pxVzdMcXJhcmdyVkxnZFdwWWlCcFl6VVBub3NTQWR5Y3QwWGdBdnRwbjl0cDE5eE9OMUVySTBqcFlpRVMxOXFTZU1hT056RXJnampyVjlQNkxBSzVPKzNVY05KVitOWnMxMDZYZzRDWnFXN0xxcmFyZ3JWTGdkV3BZaUJwWXpVUG5vc1NBZHljdDBYZ2YwWGdBdnRwbjl0cDE5eE9OMUVySTBqU2VUdFBrOVdTQWRscmdyN3JWdGppWU1xUDNNRGUyNVRQTndqWGhhemdqRW5QM2lFT056bHJnamppWU1xUDNNRGUyNVRQTndqT2Viamlrc0VKQWQ5WlZkV0dub2FyZ1dqSnQwWGdmRXlTVmRscFlpRVMxOXNPZXZRdWdkbHJncEI1UGc2VWNOb2ozREV5U1V5eWlNOGllREVuNzU4NXlWQlVjTmZ5S0RuRTZNODVPTjI1THhOVW90bExxcGFyZ3YyT050alhBV2pKdDBYZ2ZXaUdONURTZWZqWGdkV3BZaUJwWXpVUG5vc1NBTVBpa3NFSlIwalhoYXpnaldpVUFNRVBZekVyWWF6Z2pXaWdBdnRwbjl0cDE5eE9OMUVyb2FXdTJSNWVBZDlyWU1xU05HVXBuUnRQa29RU0FkbHJnckJYZzRDWkRseUxxcmFyZ3JWTGdkV0dub2FyZ1c3SWZsaWdlMHpnakU5SWZsaXBuUjBHZWl4cmtvcXBubzVYZ0dWcG5veFNncDlaVnZWcG5veFNndGppM014UHFwOVpWdnRQbjhhcmdHdHBuOXRwcXA5WlZ2dHBuOXRwMTl4T04xRVhoYXpnSzB6Z2owWFNLUnhPM3Z5UDI0amUzTTFPbkh5cDJUVXVONURTZWkwWGd2eUdrUnNMZ2RXTzJvMFNSOXlTZ1dqSnQwWGdBdjFwMlJxZTIxQlNnZDlybTBqWGdkS0dlekVwVnBqWGhhemdqV1dHZXpFcFZkOXJndjFwMlJxZTIxQlNnMCtHMlRFcG53alhnZEtPZVIwUHFkOXJJbUtyZ1dzWm45cVNrUnFyZ2pqaTFpTWhXZmxYQXBqWEEwK1NuRXhTZ2RsWGhhemdqRXlTVmRsU04xdEdZV2xpWVJEU2VyeVhBTTdJZmxpZ0F2MXAyUnFySTBqaVlSRFNlaVVQTjlXTGg1M3VrUnFTQWRscmdHVEdldkJySTBqYmdwalhBMCtQM2lXU2VyalhnZEt3V29jdmdqeWlxZHlMaDVudU41V3JnanljdDBYZ2UwemdqV1d1ZXZFUEFNUGkzdnlHa0hFaTEwalpBTURHWWl5cG85ME9OR0RyZ2pqaWtFMFNOMGpOcUcwdWV2YVNBR0dyZ1c3SWZsaUlmbGlpa0V4cDJScUdvOXlHa1Jzckkwak9laXFPZVdqWGdHQ1NlRVV1TmZLckkwK3JnRzBPTjlWT045VWlxZHhyZ3Z5R2tSc3JvYUtQS1JzZTJFeVNnR0dMZ2RLR2tvQk9ub0JlM3p5U2dwalpoNGppa0UwU04wak5xRzBPTjlWT045VXAyRVdpMTBhcmdHUU9ldkVlMkVXaXFkOVpWZFdPMm8wU1I5eVNndGppM1J5U2dwalpoNGppWVJEU2Vyak5xR3lTZ0dHTGdkS0dONVRQTndLckkwK3JndjFwMlJxcm9hS0dlekVwbjVUUE53S2VBdGppM3Z5R2tIRWlxZDlaVmRXdWV2RVBBTVBpM3Z5R2tIRWkxMGFyZ0d5UEt2cVBxcGpaaDRqaWtFMFNOMGpOcUd5UEt2cVBxR0dMZ2RLdU4xS2lxZDlaVmRXdWV2RVBBTVBpM015TzE5MXBudEtlQXRqaTNNcXVOekVpcWQ5WlZkV3VldkVQQU1QaTNNcXVOekVpMTBhcmdHMXBudEtySTArcmd2eUdrUnNyb2FLTzJIeU8yc1VHZWlhaTEwYXJnR3FPZXZFcHFwalpoNGppa0UwU04wak5xR1FQMjFzdWV6RHVOOXhlM2lUR2t3S2VBZEJySW10Ymd0amkySHl1MlJEaXFkOVpWZFd1ZXZFUEFNUGkySHl1MlJEaTEwYXJnR3lQTkdEaXFkOVpWZFd1ZXZFUEFNUGkyRXNTM2JLZUF0amkzemxQM01VUG5FUXVxcGpaaDRqaWtFMFNOMGpOcUd4dU56Q2kxMGFyZ0dEU05IYVNlaVVPM2lFU2tFMGUzelFQM2lFaXFkOVpWZFd1ZXZFUEFNUGkzekVQa0hFcEU5UXBuUld1ZXZVcDJ6QnBud0tlQXRqaTN6bFAzTVVPMkh5TzJzVUdlaWFpcWQ5WlZkV3VldkVQQU1QaTN6bFAzTVVPMkh5TzJzVUdlaWFpMTBhcmdHeUdrUnNlMkhCTzJvMHVOOXhpcWQ5WlZkV3VldkVQQU1QaTJFMFNOMVVQazlRT2V2eVAyNEtlQXRqaTNTQlBZUnNTQXBqWmg0amlrRTBTTjBqTnFHMlAySDFQTndLZUFkeWN0MFhnZjBYZ05FbnJnVEVQZU0wSkFkbHJndnlHa1Jzcm9hS3VOMUtwcUdHcmdXeXJZYXpnaldpaWtFeHAyUnFHbzl5R2tSc3JvYUt1TjFLcHFHR3JJMGpPZWlxT2VXalhrb3Fwbm81cmdqS0dlaWFpcWQ5WlZkV3VONURTZWkwZTJFMFNOMGpOcUd5UE5wS2VBZHlyZ1c3SWZsaVVmMFhnQXZxU2V6MVBZZmpaQU10R05pYXVlemxyZ2pqaWtFeHAyUnFHbzl5R2tSc3JnVzdJZmxpcG5SMEdlaXhyZ3ZxU2V6MVBZZjdJZnk5SWZsemduUzFQbnowdU45eHJvOXRHTmlhdWV6bGUyekJHZU1CUEU5eVBLekVwS2ZsaWtFMFNOMGFyZ3ZRT2V2RWUyRVdYQU03SWZsaWlZUkRTZWlVUE45V3JJMGpoQWRscmdHMXAyUnFpcWR5Y3QwWGdBdjFwMlJxckkwamlZUkRTZWlVUE45V0xoNTN1a1JxU0FkbHJnR1RHZXZCckkwamJBcGpYQTArUDNpV1NlcmpYZ2RLd1dvY3ZnanlpcWR5TGg1bnVONVdyZ2p5Y3QwWGdORW5yZ1RFUGVNMEpBaldHZXpFcFZXeXJZYXpnaldpaVlSRFNlcmpaQWRXR2V6RXBFOXNQMmZzWktHbFNlaUVyZ2pqaTJvMUdrOGpaQWR0aXFkeUxoNUJwbnZFcFZkbHJnR0FmdzVtWGdXS3JnV3NablN5UG5malhnVzdJZmxpVWYwWGdBdnlHa1Jzcm9hS0drRTBQa3dLZUFkOXJZejBwbkV0ZTN2VFMzYmpYZ2RXdWV2RVBBTVBpM3Z5R2tIRWkxMGpYaGF6Z2pXemdqV1d1TjVEU2VpMGUyRTBTTjBqWkFNVHBLaVRKQWRsaTJzRUpSOXlTZ3BqWmg0amkzdlRQMmlUUDE4S3JnNGppa0UwU04wak5xR3hHTjFVdU5FV2kxMGFyZ0cwT045Vk9OOVVwMkVXaXFkOVpWZFd1ZXZFUEFNUGkzdlRQMmlUUDE5RHVOZktlQXRqaTJ6VEdrUlV1TmZLckkwK3JndlFPZXZFZTJFV0xnZEtHTkVXaXFkOVpWZFdHZXpFcFZNUGkyRVdpMTBhcmdHMVBub3NTQXBqWmg0amlZUkRTZXJqTnFHMXAyUnFQbm9zU0FHR0xnZEtHa0UwUGt3S3JJMCtyZ3Z5R2tSc3JvYUtHa0UwUGt3S2VBdGppMkV4R1lpQmlxZDlaVmRXdWV2RVBBTVBpMkV4R1lpQmkxMGFyZ0d5UE5wS3JJMCtyZ3Z5R2tSc3JvYUtwa0VRZTNScVBnR0dMZ2RLcFlpeU8yd0tySTArcmd2eUdrUnNyb2FLcFlpeU8yd0tlQXRqaTNScVBncGpaaDRqaWtFMFNOMGpOcUdRUGtFUXUxOTFwbnRLZUF0amkzaVRHa1JEaXFkOVpWZFd1ZXZFUEFNUGkyekJQTjF5cDN6eVAyNVVwbm8wU0FHR3JnOGpiaGR0TGdkS1BrRUNTZWJLckkwK3JndnlHa1Jzcm9hS1BrRUNTZWJLZUF0amkyRXNTM2JLckkwK3JndnlHa1Jzcm9hS3VOMUtwcUdHTGdkS3AyVEJwbzl4dU56Q2lxZDlaVmRXdWV2RVBBTVBpMjV5TzJhS2VBdGppM3psUDNNVUdZRXRTQXBqWmg0amlrRTBTTjBqTnFHRHVrOXRlM3Y1cGt3S2VBdGppM3pFUGtIRXBFOVFwblJXdWV2VXAyekJwbndLckkwK3JndnlHa1Jzcm9hS3AyUmFQa1JxZTJ6cVNOdnlHbzlETzI5cVNBR0dMZ2RLcDJUQnBvOVFQa0VRdTE5MXBudEtySTArcmd2eUdrUnNyb2FLcDJUQnBvOVFQa0VRdTE5MXBudEtlQXRqaTJFMFNOMVVQazlRT2V2eVAyNEtySTArcmd2eUdrUnNyb2FLdWV2RVBSOWFQMnpUR2tFQlBWR0dMZ2RLTzI5MXBrOXhlM2lUR2t3S3JJMCtyZ3Z5R2tSc3JvYUtPMjkxcGs5eGUzaVRHa3dLZUFkQnJJbXRiZ3RqaTJ6QkdlTUJQRTl0cG5FUVNBcGpaaDRqaWtFMFNOMGpOcUdRUDNSdFAyNVVwWWl5TzJ3S2VBdGppMnpCR2VNQlBFOURHa29xR285MHVOMUVpcWQ5WlZNc0pSOXN1M3Z5UE53alhnZFd1ZXZFUEFNUGkyekJHZU1CUEU5REdrb3FHbzkwdU4xRWkxMGpYQXRqaTJ6QkdlTUJQRTlFUG52VUdrRXNTQXBqWmg0alBlRVVQTnMwdU4xRXJnamppa0UwU04wak5xR1FQM1J0UDI1VVNONVdlM3Z5UE53S2VBZHlMZ2RLR245YUdOMUVpcWQ5WlZkV3VldkVQQU1QaTNTQlBZUnNTQUdHcmdXN0lmbGlJZmxpdU5PalhrUnNwWXY1cmdqamlrRTBTTjBqTnFHeVBOR0RpMTBqWEFXakp0MFhnZldXdU41RFNlaTBlMkUwU04wak5xR3lQTkdEaTEwalpBTVRwS2lUSkFkbE9laXFPZVdqWGdHMXBudEtySTArcmd2eVBLekVwS3ZVdWV2RVBBTVBpMkVzU3FHR3JnV2pYaGF6Z2pFOUlmbGlpWWlFcDNSYUdnZDlyWU0xT25IeXAyampYZ2RXdU41RFNlaTBlMkUwU04walhoYXpnakVxU2V2MXBuNGppWWlFcDNSYUdJYXpnSzB6Z2owWFNLUnhPM3Z5UDI0anBZUlZQa0VEdWdqV3VldkVQQXRqaWtvYU9LUnNlMkVXckkwamJndGppa29RZTJFV3JJMGpiZ1dqSnQwWGdBdnlHa1JzZTIxQlNnZDlybWZqWGdkS3VldkVQQXBqWGhhemdqV3pnaldXT25vV0cyOXFTbzlzUDJmalpBTW1yZ2pqaTJpVFNZR0JwbmZLcmdXN0lmbGlpa3psU056Q2UzaUVwM1JhR2dkOXJndlZPTnYzUDNpV2UyMUJTZzArTzJURU8yYWpYZ2RXdWV2RVBBTVBpM3Z5R2tIRWkxMGpYaGF6Z2pFREcyRTBPMmpqWGd2UXVrUlF1MTlxU2V6MVBZZmpOcUdRUDJ2RWkxMHlyWWF6Z2pXaU8yb0RTQWRIcklsemdqV2lnZWlFR1lScVBWTW5PTkhEU2hhemdqV2lnTmlxU05vQ2N0MFhnZkVRT2V6RXJJYmpjajBYZ2ZXaWlrRTBTTjBqTnFHREdrbzBHZWJLZUFkOXJJZDdJZmxpZ2ZFVnBuUlR1RGF6Z2pFOUlmbGlpa0UwU04wak5xRzB1ZXZhU0FHR3JJMGppa3psU056Q2UzaUVwM1JhR2dNUGkyekJQS3ZFUEtmS2VoYXpnald6Z2pFeVNWZGx1ZXpEU2VmalhnZFd1ZXZFUEFNUGkyRXhHWWlCaTEwalhBZG5pVmRXdWV2RVBBTVBpMkV4R1lpQmkxMHlyWWF6Z2pXaWlremxTTnpDZTNpRXAzUmFHZ2Q5cmd2Vk9OdjNQM2lXZTIxQlNnMCtPMlRFTzJhalhnZFd1ZXZFUEFNUGkyRXhHWWlCaTEwalhoYXpnaldpcDNHeUdremxyZ2pXTzJURU8yc1VwblJER05IMHJvYUtPMjlXU0FHR1hBTTdJZmxpZ2ZFUU9lekVySW1qY2owWGdmV2lnZWlFR1lScVBWTW5PTkhEU2hhemdqV2lnZkVWcG5SVHVEYXpnaldpZ056VHAyd2picWQ2SWZsaWdmV2lpa0UwU04wak5xR0RHa28wR2ViS2VBZDlySWQ3SWZsaWdmV2lPS2lFT05hN0lmbGlnZTB6Z2pXaWlrRTBTTjBqTnFHeVBLdnFQcUdHckkwamlremxTTnpDZTNpRXAzUmFHZ01QaTJ6QlBLdkVQS2ZLZWhhemdqRTlya1JhcDJ3akp0MFhnZldXdWV2RVBBTVBpMkV4R1lpQmkxMGpaQWRXdWV2RVBBTVBpM3Z5R2tIRWkxMDdJZmxpVWYwWGdmMFhnTkVucmdqV3VldkVQUjlzUDJmc1pLR2xTZWlFcmdqak9laXFPZVdqWGdHQ1NlRVV1TmZLckkwK3JndnlHa1Jzcm9hS3UyUjVlMkVXaTEwalhBZHlMaDVRUDNSeEdnZGxYQVdqSnQwWGdmV1d1ZXZFUFI5c1AyZnNabnpxU05vMFNBZGxyZ3Z5R2tSc3JnVzdJZmxpZ0F2eUdrUnNlMkVXckkwamlrRTBTTjFVUE45V0xoNTN1a1JxU0FkbHJrb3Fwbm81cmdqS3UyUjVlMkVXaXFkOVpWZFd1ZXZFUEFNUGkyc0VKUjl5U2dHR3JnV2pYQTArcDJvMlNBZGxYaGF6Z2pXaXBuUjBHZWl4cmtTVFBZekVjdDBYZ2UwemdqV3pnakV5U1ZkbHJBTXlwM3pFR2dkbHJndnlHa1Jzcm9hS0drb0twcUdHcmdXalVZdGpTTjF0R1lXalhnZFd1ZXZFUEFNUGkzdlRTM2JLZUFkeVhBTTdJZmxpZ0F2ME9OR1VQa0VER2dkOXJtZmpYZ2RLR2tvS2lxZHlMaDVLU2V2VUdrb0twMTlWSlI5MHVldmFTQWRscmd2eUdrUnNyb2FLdU41MHBuOEtlQXRqYlFkalhoYXpnakU5cmtSYXAyd2pKdDBYZ2ZXV0drb0tlMkh5cDNmalpBTUVKWU1hUDJ2RXJnamppcWRLTGdkV3VldkVQQU1QaTN2VFMzYktlQWR5Y3QwWGdlMHpnakV5U1ZkbHJBZFd1ZXZFUEFNUGkyelRHa1JVdU5mS2VBV2pKdDBYZ2ZXV3VldkVQQU1QaTJ6VEdrUlV1TmZLZUFkOXJrR0VHbzlRdU52VU9LRVVHa29LcHFkbHJndjBPTkdVUGtFREdnZHljdDBYZ2UwemdqV1RyZ3Z5R2tSc3JvYUtQM2l5UzE5eVNnR0dyZ09ucmd2eUdrUnNyb2FLUDNpeVMxOXlTZ0dHckkwanZnZGxyZ0d5R2tSc2UyOXF1TnBLcmdXc1puR0VHbzl5U285VkpSOTFwbnRqWGdkV3VldkVQQU1QaTNScVBnR0dyZ1c3SWZsaUlmbGlpa0UwU04xVVBOOVdMaDVRcG5SVEdrd2pYZ2RXdWV2RVBBZHljdDBYZ0F2eUdrUnNlMkVXckkwamlrRTBTTjFVUE45V0xoNVRTa2ZqWGdXN0lmbGlJZmxpdU5PalhndnlHa1JzZTJFV1hBTTdJZmxpZ05FbnJnVHlwM3pFR2dkbHJndnlHa1Jzcm9hS3VOMUtwcUdHcmdXamlWT2ppa0UwU04wak5xR3lQTkdEaTEweXJZYXpnaldpZ0F2eUdrUnNlMkVzUzE5c1AyZmpaQU1tcmdqamkyRTBTTjFVdU4xS2lxZHljdDBYZ2ZXaVNuOXFTTm9RdWdkbHJndnlHa1Jzcm9hS3VOMUtwcUdHcmtvRHJndlV1TjFLcmdXakp0MFhnZldpZ0F2VXVOMUtyb2FLdWV2RVBSOXlTZ0dHckkwamlrRTBTTjFVdU5mN0lmbGlnZldpaWtFMFNOMVV1TjFLZTIxQlNnMCtPM2lFT2V2RXJnamppbzl5UE5walhoYXpnaldpZ2ZXV3VldkVQUjl5UE5HVVBOOVdMaDVUU2tmalhnVzdJZmxpZ2ZFOUlmbGlnZTB6Z2pXaXVOT2pYZ3YwT05HVVBrRURHZ1dqSnQwWGdmV2lpa0UwU04xVUdrb0tlMm9xcFZkOXJndjBPTkdVTzJvUXVrd2paQU1UcEtpVEpBZGxYaGF6Z2pXaWdBdjBPTkdVUE45V3JJMGpoQWRscmdHME9OcEtyZ1c3SWZsaWdmRW5QM2lFT056bHJnamppWXZUUzE5YXVlejBya29Ecmd2VUdrb0tlMjVUUE53alhBTTdJZmxpZ2ZXaWlZdlRTMTl5U2dkOXJndjBPTkdVUE45V0xoNTN1a1JxU0FkbHJrb3Fwbm81cmdqS1Bub3NTQXBqWmg0amlvOTBPTkdVUG5vc1NBZHlyZ1dzWm5HRUdtU3lTTkhXcmdqamkyRVdpcWR5Y3QwWGdmV2lnQW1qaVl2VFMxOXlTZ2RuaVZkV0drb0tlMkVXckkwamlZdlRTMTlzUDJmc1pub1dTZ2RscmtvcXBubzVyZ2pLUG5vc1NBcGpaaDRqaW85ME9OR1VQbm9zU0FkeXJnVzdJZmxpZ2ZXaWlrRTBTTjFVR2tvS2Uyb3FwVk1QZUFkOXJrb3Fwbm81cmdqS3VldkVQUjl5U2dwalpoNGppa0UwU04xVXVOZmFyZ0cwT05HVXVOZktySTArcmd2ME9OR1V1TmZqWGhhemdqV2lnZldXR2tvS2UyelRPMlRFcm9hV0drb0tlMkVXZUFkOXJndlVHa29LZTI1VFBOdzdJZmxpZ2ZFOUlmbGlnZkV5U1ZkbGlrRTBTTjFVR2tvS2Uyb3FwVldqSnQwWGdmV2lndzBqWGdkS3VldkVQUjkwT05wS3JnV3Nabm9XU21vYVBnZGxyZ3Z5R2tSc2UzdlRTMTlUcEtyalhoYXpnaldpZ2ZFMXBrdlRHa1JVR2tvS2UyelRPMlRFcmdqamlrRTBTTjFVdU5mYXJndjBPTkdVTzJvUXVrd2pYaGF6Z2pXaWdlMHpnaldpVWYwWGdmV3pnaldpaEFkbHJnRzFwMlJxaXFkeUxoNTN1a1JxU0FkbHJrb3Fwbm81cmdqS3VOZktySTArcmd2eUdrUnNyb2FLR05FV2kxMGpYQWR5TGg1RFNldmlQbmJqWGdkS3AyVFRwblJEaXFkeWN0MFhnZld6Z2pXaWlrb2FPS1JzZTIxQlNnZDlybWZqWGdkS09OSFZHTjBLcmdXN0lmbGlnQW1qaWtvYU9LUnNlMkVXcmdPbnJndlRQa2kxUFI5eVNnZDlyZ3ZUUGtpMVBSOXNQMmZzWm52RVNubzFQWXZVT05IVkdOMGpYZ01UcEtpVEpBZGxpMkVXaXFkOVpWZFd1ZXZFUEFNUGkzUnlTZ0dHTGdkS1Bub3NTQXBqWmg0amlrRTBTTjBqTnFHMVBub3NTQUdHcmdXYXJndlRPMTl5U2dkeWN0MFhnZldXT05IVkdOMVVQTjlXTGg1VFNrdlV1ZXZFUEFkbHJndnlHa1JzZTJFV0xnZFdPTkhWR04xVXVOZmFyZ3Z5R2tSc3JvYUt1TjUwcG44S2VBZHljdDBYZ2ZXemdqV2lpWXZCcGtFUWUyMUJTZ2Q5cm1malhnZEtHazl0dU5iS3JnVzdJZmxpZ0F2MFAzTXlPMTlzUDJmc1pLTTFPbkh5cDJqalhnTVRwS2lUSkFkbGkzUnlTZ3BqWmg0amlrRTBTTjBqTnFHMXVOZktlQXRqaTNSeE9OMUVpcWQ5WlZkV3VldkVQQU1QaTNSeE9OMUVpMTBhcmdHUVAyNTBTTjUwaXFkOVpWZFd1ZXZFUEFNUGkyRXhHWWlCaTEwYXJnR0VKWXZxT0FwalpoNGppa0UwU04wak5xR3lQTnBLZUF0amkzenFPMTl5U2dwalpoNGppa0UwU04xVXVOZmpYQWR5Y3QwWGdmV3pnaldpcG5SMEdlaXhyZ3Z5R2tSc2UyRVdjdDBYZ2UwalNOSERTQU03SWZsaWdlaUVHWVJxUFZNbk9OSERTaGF6Z2pFOUlmeTlJZmx6Z25TMVBuejB1Tjl4cmtHRUdvOVF1TnZVT0tFVUdrb0twcWpXR2tvS3BxV2pKdDBYZ0F2V1NOU1VPMkVXckkwamhBZGxyZ0d5R2tSc2UyelRHa3dLcmdXc1pLR2xTZWlFcmdqak9laXFPZVdqWGdHREdrbzBHZWJLckkwK3JJbWFyZ0cwSmVNRWlxZDlaVmR0cmdXalhBMCtQM2lXU2VyalhnZEtQM2lXdU5mS3JnV3NabkdFR21TeVNOSFdyZ2pqaTJFV2lxZHljdDBYZ05FbnJnalRyZ3YwT05HRFhmMFhnZkVxU2V2MXBuNGppa3ZFU0U5UXVOZjdJZmxpaVl2VFMzYmpaQU1UcEtpVEpSOTFQbkVIR053alhnZFdHa29LcHFkeWN0MFhnQXYwdU52VU9laXFySTBqaEFkbHJnRzBPTnBLcmdXc1pLR2xTZWlFcmdqak9laXFPZVdqWGdHeE9OMUVpcWQ5WlZNVHBLaVRKQWRsaTBFY2lxdGppWXZUUzNialhBZHlyZ1dzWm5HRUdtU3lTTkhXcmdqamkyRVdpcXRqR1lpMVNBZHljdDBYZ05FbnJnaldHa0VXZTJvcXBWV2pKdDBYZ2ZXV1NraVVwWWlFckkwamZxZGxyZ0dtZkU5ZndXUmtBUmpLcmdXN0lmbGlnQXYwT05pYVNBZDlyZ3ZXT0U5dHBud2pMVmRLdWV2RVBSOVFPZXZFZTN2VFNxcDdJZmxpZ0F2c09lZGpaQU1UcEtpVEpBZGxpWXZUT25IRXJnNGppcTVRT2V2RWUyRVdpcWQ5WlZNVHBLaVRKQWRsaTBFY2lxdGppWXZ5U285VHBLcmpYQWR5Y3QwWGdmV1dQTm90cm9zR3JJMGpPZWlxT2VXalhnR1FMS3Y1cGt3S3JJMCtySWRqWGhhemdqV2lpa3lCdU40alpBZFdTa2lVcFlpRXJnNGppMkUwU04xVU8ybzBTQU1Rcm05Y3JrYnh1TmZqWkFkS3JnNGppWXZUT25IRXJnNGppcTVRT2V2RWUyRVdpRGF6Z2pXaWlrOXFTa1JxckkwamlZdlRPbkhFcmc0amlxNTNTTkVLdVlmanZtUmhmcXA3SWZsaWdBdlF1TnZEckkwamhBZGxyZ0d5R2tSc2UyelRHa1JVR2tvS2lxZHlMaDUzdWtScVNBZGxyZ3ZzT2VkalhBMCt1bjl5UFZkbHJndkZQMkV4cmdXc1puOXFTa1JxcmdqamlrOXFTa1JxcmdXc1puR0VHbVN5U05IV3JnamppMnpUR2tSVXVOZktyZ1c3SWZsaVVmMFhnTkVucmdqVHJndlFPZXZFZTJFV1hBTTdJZmxpZ2VpRUdZUnFQVmRXU2tSbmUyenlTSWF6Z2pFOUlmbGlwblIwR2VpeHJndlFPZXZFZTJFV2N0MFhVZjBYSWZ5bkdONVFHa0VCUFZNMXBrdlRHa1JVR2tvS2UyelRPMlRFWGd2eVNndGppWXZUUzE5UU9OemxTQWQ5cmdwS1hBTTdJZmxpdU5PalhnbWp1ZXpVT2VpcU9lV2pYZ2RXR2tvS2UyelRPMlRFcmdXeXJZYXpnaldpaVl2VFMxOXlTWWJqWkFNenJnamppMkUwU04xVUdrb0tpcWR5TGg1M3VrUnFTQWRscmtvcXBubzVyZ2pLdWV2RVBSOXlTZ3BqWmg0amlrRVdyZ1dqWEEwK1MyUjB2bkVFUGtmalhnZEtHa29LZTJFV2lxdGpHWWkxU0FkeWN0MFhnZldXR2tvS2UzaUVwcWQ5cm0walhnZEtHa29LaXFkeUxoNTN1a1JxU0FkbHJrb3Fwbm81cmdqS3VOZktySTArcmtvcXBubzVyZ2pLQXc0S0xnZFdHa29LZTJFV3BxZHlyZ1dqWEEwK3AyUmFTTnowcmdqeWN0MFhnZldXR2tvS2UyelRPMlRFckkwak9laXFPZVdqWGdXN0lmbGlnTlNCcG5SVE8yampYZ2RXR2tvS2UzaUVwcU1UcHFkV0dub2FyZ1dqSnQwWGdmV2lpWXZUUzE5UU9OemxTQU1QaVlTVFBnTVBpMkVXaTExR3JJMGppWVNUUGdNUGkyNVRQTndLZWhhemdqV2lVZjBYZ2UwemdqRXFTZXYxcG40anZnZGxyZ0d5R2tSc2lxZHlMaDUzdWtScVNBZGxya29xcG5vNXJnakt1TmZLckkwK3JndnlTZ2R5cmdXc1pLekVHbVN5U05IV3JnamppM3ZUUzE5UU9OemxTQXBhcll6RXBuRVRQa0U2U0FkbHJndjBPTkdVTzJvUXVrd2pYQWR5Y3QwWFVmMFhJZnluR041UUdrRUJQVk1VTzI5YVBrUlFHbzlXU2V2VHVOSERYZ3Z5dU52RExnZFdQTjlXU0FXakp0MFhnQXYwT0U5MFAzZGpaQU1VUzJSMGUzdlZlM3ZCcGdkbFhoYXpnaldXcG5SSHJJMGppWXZWZTN2QnBnMCtQazlUU285VHBrV2pYZ2RLUmtvQk9ub0J1MlJpR2tSc3AwdkVHa295UG1HRUdvaUVwZVJFcDNmS3JnVzdJZmxpaVlpRXBBMCtwMlIwdm5FRVBrdkRyZ2pqaTI1MVBSOXl1TmZhU2tSRE9xcGpYaGF6Z2pXV3VORVdwcWRuaVZkV3BuUkhMaDVEU2V2Y0dOMWl1TnZEcmdqamlrRXlTWWJqWGhhemdqV1dwblJEcGdkOXJndjBPRTkwUDNkc1puUjRTTnoxR2t3alhnZFdwblJIcmdXN0lmbGlpWWlFcDNNVXVldkVQZWJqWkFkbHJrb3Fwbm81cmdXamlZaUVwM2RzWkt2VFAyaVRQMnNFZTJFMFNOMVVTa1IwT05FYXBEYXpnaldXdWV2RVBSOXNQMmZqWkFNenJnamppMkUwU04wS3JnVzdJZmxpU245cVNOb1F1Z2Rscmd2cVNlenRlMkUwU04xRHJvYUtHa29CT25vQnUyUlV1ZXZFUFI5V1NldlR1TnRLZUFNVHBxZFdHbm9hcmdXakp0MFhnZldXR25vYXJJMGpYZ01UcEtpVEpBZHlyZ3YyT050N0lmbGlnQXYyT050alpBZGxya29xcG5vNXJnV2ppWVNUUGdNUGkyRTBTTjBLZWhhemdqV2lJZmxpZ0F2V09ldlRySTBqT2VpcU9lV2pYZ1c3SWZsaWdBdldPZXZUcm9hS3UyUjVlMkVXaTEwalpBZEtHa29CT25vQmVxcGpMVmRXR25vYXJvYUtQS1JzZTJFeVNnR0djdDBYZ2ZFeVNWZGxpazFCU2t3alpoMGpiQVdqSnQwWGdmV2lpa3ZUR2ttak5xR1dTZXZUdU5IRGkxMGpaQWRXR25vYXJvYUtTa1JET3FHR2N0MFhnZkU5cmtSYXAyUnlTVmRsaWsxQlNrd2paaDBqYlZXakp0MFhnZldpaWt2VEdrbWpOcUdXU2V2VHVOSERpMTBqWkFkV0dub2Fyb2FLU2tSRE9xR0djdDBYZ2ZFOXJrUmFwMndqSnQwWGdmV2lpa3ZUR2ttak5xR1dTZXZUdU5IRGkxMGpaQWRXR25vYXJvYUtTa1JET3FHR2N0MFhnZkU5SWZsaWdBdnlHa1JzZTIxQlNnMCtHMlRFcG53alhnZFZ1MlI1ZTJFV1pBRzdpa3ZUR2tvUGkyc0VKUjl5U2dHR1VBcFZyZ1dzWkt6VEdud2pYZ2RXU2tvME9BZHljdDBYZ2UwemdLMHpnajBYU0tSeE8zdnlQMjRqZTJ6QlBrSEVPM3ZVcDN2VEdZUkRlMjl4U0FqV3VORVdMZ2RXdWV2RVBSOXlTZ3RqaWsxQlNrd3lyWWF6Z2pFUXVrUlF1MTlEU2VpMlNlcmpYZ1c3SWZsaWlrRTBTTjFVUE45V3JJMGpoQWRscmdHeUdrUnNpcWR5Y3QwWGdBdkRTTkhhU2VpVXVOZmpaQU1VUzJSMGUzekVQa0hFcEU5eVNnZGxyZ3Z5dU5malhoYXpnakV5U1ZkbHJBZFdwMlJhUGtScWUyRVdYQU03SWZsaWdORW5yZ1RzUDJ2RXJJMDlySW15cllhemdqV2lnQXZ5R2tSc2UyMUJTZzArRzJURXBud2pYZ2RLdU5mOWlxZHhyZ3Z5R2tSc2UyRVdyZ1dzWkt6RUdtU3lTTkhXcmdqamkyOXFTa0VXaXF0amNoVzVyZ1c3SWZsaWdlMGpTTkhEU0FNN0lmbGlnZldXdWV2RVBSOXNQMmZzWktHbFNlaUVyZ2pqaTJFV1pBcGpMVmRXdWV2RVBSOXlTZ2R5TGg1RFNldmt1TlJhU2dkbHJnR0RHa28wR2ViS0xnZHRyZ1c3SWZsaWdlMHpnakU5SWZ5OUlmbHpnblMxUG56MHVOOXhyWVIwU1FUVXAzdnFQa1J4WGd2REdZaXlQbnBqWkFNeEdOSGFYQU03SWZsaXBZaUVTMTlzT2V2UXVvOVRQa3RqWGdkVkxxNEJHZWJWTGdkV3AzdnF1TjVLTGdkV1BObzBPMmpqWGhhemdqRXFTZXYxcG40ak8yOTFQS2ZqWGdkV1BObzBPMmpqTkRNR3JnVzdJZnk5SWZsemduUzFQbnowdU45eHJrMTVlMjFDR2tFc1NBaldwM3ZxWEFNN0lmbGlpa29xcFZkOXJrUjRwa0hCU2t3alhnZEtyZ3Bhcmd2REdZcmpYaGF6Z2pFeVNWZGxwM3ZxcGs5RHJnamppa29xcFZNUGJvMGFyZ3J4clZkeXJJNGpiZ1dqSnQwWGdmV1dPZWlxYmdkOXJrUjRwa0hCU2t3alhnZEtMVnBhcmd2VHBLcmpORE1HcmdXN0lmbGlVQU1FUFl6RXJZYXpnaldpaWtvcXBRZGpaQU1FSllNYVAydkVyZ2pqaXEwS0xnZFdPZWlxcm9hdGVBZHljdDBYZ2UwaUlmbGlpa29xcFFtalpBTUVKWU1hUDJ2RXJnamppRGxLTGdkV09laXFyb2FIZUFkeWN0MFhnZWlFR1lScVBWTXN1M3Z5UE53alhnZFdPZWlxYkFNUGJvMGFyZ3ZUcEtySHJvYUhlQXRqaWtvcXBRbWpORGlHTGdkV09laXFiZ01QYlIwYXJndlRwS3J0cm9hcWVBdGppa29xcFFkak5ETUdyZ1c3SWZ5OUlmbHpnblMxUG56MHVOOXhya29EcDI5UWUzUnh1ZW8xU0FqV09laXFMZ2RXdTJSNVhBTTdJZmxpaVl2c3BvOVRwS3JqWkFNVHBLaVRKQWRsWGhhemdqRW5QM2lFT056bHJnamppa29xcFZNVHBxZFd1cWQ5WlZkV0dWZHlyWWF6Z2pXaXVOT2pYa0V4ZTJvcXBubzVyZ2pqaVlPak5xdkNTZUVHTGdkV0drMXRlMm9xcFZkeVhBTTdJZmxpZ2ZFMVBLekVHZ2Rscmd2VHBLcmpOcXZDZUFkeWN0MFhnZkU5cmtSYXAyd2pKdDBYZ2ZXaWlZdnNwbzlUcEtyak4xMGpaQWRXR1ZNUGlrc0VKUjA3SWZsaWdlMHpnakU5SWZsaXAyOXFHZ2Rscmd2VHBLcmpYaGF6Z2pFcVNldjFwbjRqaWtvcXBRYXpnSzB6Z2owWFNLUnhPM3Z5UDI0amUyR0VHbzlEU05IYVNlaVV1TmZsaWtFeVNnV3pnS2F6Z2pXV3VldkVQUjkxcG50alpBZEt1WXYwcElsQkwyRTBTTjB4R2tvQk9ub0JMbnpCUEE5eUdrUnNMblQwUGg5eVNJMEtyZzRqaWtFeVNJYXpnaldXcHFkOXJrU3lQa1JVUzJSMGUyekJQS3ZFUEt2RFhndnlHa1JzZTNScVBnVzdJZmxpcFlpRVMxOXNPZXZRdWdqVkwzUkRTZWl5U0kwbE5EZHNjUjBDWEE4VkxnZFdwcXRqaWsxVEdremxTZWJ5Y3QwWGdmV3pnakV5U1ZkbGlrMVRHa3psU2VieXJZYXpnVmRqcmdkanJnZGpwblIwR2VpeHJndnNPZXZRdWtSRE5Eb0djdDBYZ2UwalNOSERTQU03SWZsaWdlaUVHWVJxUFZNbk9OSERTaGF6Z2pFOWdmMFhVZjBYSWZ5bkdONVFHa0VCUFZNS1NldlVHZXpFcEU5eVBOcGxpa3Z5cDNNYU9lRVJwMlJxaEtSc0FOZnlyWWF6Z2pXV0dlaWFySTBqaTJUMEdZZDZMcTkzRzJieEdrb0JPbm9CTzJ2eExuekJQQTlUR25vME9lckJTMlIwZmVTVEdrb3FMbnZCWjNSRFNlaWlTSTBLcmc0amlrdnlwM01hT2VFUnAyUnFoS1JzQU5makxWZEtpS0d5U1l2bFpobTJiZ1NsU05FS3VZZjliaE90aUt2NXBrdzlwMjVEaURhemdqV1dTMlIwZTJTeVBrd2paQU1udU5IRWUyR0VHbzlRUDI1MFNONTBwcWRscmd2MXBudGpYaGF6Z2pXV3AybzJTUjl0T2V2bHJJMGpmcWRscmdHdHVONVVPZXYwT056bGUzTVRHa2pLcmdXakxWZEtPZVNUR2tvcUwzdkVQZWRCaURhemdqV1dHa1JzcG85eE9OMUVySTBqR2tFc1NBZGxYQWR4cmdweHVLTUtpRGF6Z2pXV1NLZGpaQU1kU245dFNONGpYZ2RXcDJvMlNSOXRPZXZscmc0amlZdkVQZU1VUG5vc1NBdGpyS3BWcmdXN0lmbGlma1MzcG5FMFNBZGxyZ3ZucGd0amlrR0VHbzludU5IRXJnVzdJZmxpZmtTUVBrOURTQWRscmd2bnBnZHljdDBYZ2YwWGdORW5yZ2pXU2tFRHBrSFRKUlJEU2VpY0dOMWlTZ1dqSnQwWGdmRXFTZXYxcG40amlZdkVQZU1VUG5vc1NoYXpnakU5cmtSYXAyd2pKdDBYZ2ZFcVNldjFwbjRqU25vYXAydzdJZmxpVWYwWFVmMFhJZnluR041UUdrRUJQVk0xcDJScWUzdmxHTjFWWGd2eVNndGppa0VzU3FXakp0MFhnQXZ5UE5HVXBrbzB1Z2Q5cmtvMk9ldlRwRTlXdWVyalhnZFd1TmZqWGhhemdqV1dPZVNUR2tvcWUzenlKbndqWkFNRUpZTWFQMnZFcmdqamlxdEtMZ01JcmdqamkzTXlQRTlUR25vME9laVVwMkU2U0FwalhBZHljdDBYZ0F2dE9ldmxwcWQ5cm1ialhnZEtwa0V4ZTJvMEdrb1F1bzl0T2V2bGlxZHljdDBYZ2YwWGdOU0JwblJUTzJqalhnZFdPZVNUR2tvcWUzenlKbndqT2ViamlZenlKbndqWEFNN0lmbGlnTkVucmdqV3BrbzB1WWJqTFZkS09lU1RHa29xTHFwakxWZFd1TjFLZTNNVEdrampMVmRLTHFwakxWTXNTSXdqWGdkV3VOZmpYQWR4cmdHVWlxZHhyZ3ZEdWV5RXJnNGppcTVGcGtwS1hBTTdJZmxpZ2ZFZEdONWF1TjVDcmdqamlZTVRHa1REcmc0amkybzJPZXZUcFY4S3JnNGppa0VzUzE5dE9ldmxyZzRqaXE4S3JnNGpQTmYxcmdqamlrRVdyZ1dqTFZkS2VxcGpMVmRXcDJFNlNBZHhyZ3B4dUtNS2lxZHljdDBYZ2ZFOUlmbGlnQW1qdWV6VVNrRXFyZ2pqaVlNVEdrVERyZzRqaTJvMk9ldlRwVjhLcmc0amlrRXNTMTl0T2V2bHJnV2ppVk9qUE5zV3VlcmpYZ2RXcGtvMHVZYmpMVmRLT2VTVEdrb3FMcXBqTFZkV3VOMUtlM01UR2tqYXJJZDN6RHBhcll2cUdOd2pYaGF6Z2pXaUFOMVRTMnc2Y0t2bEdOMVZyZ2pqaVlNVEdrVERyZzRqaTJvMk9ldlRwVjkwU04xdExxcGpMVmRXdU4xS0xnZFdwa28wdVliakxWZEtPZVNUR2tvcUxxcGpMVmRXdU4xS2UzTVRHa2pqTFZkS0xxcGpMVk1zU0l3alhnZFd1TmZqWEFkeHJnR1VpcWR4cmd2RHVleUVyZzRqaXE1RnBrcEtMZ2RLaXF0amlZenlKbndhcmd2RHVleUVMZ00wcEtSRXJnVzdJZmxpVWYwWGdmMFhnd00xUG5IeVBuYWpYZ2RXcGtvMHVZYmpMVmRLT2VTVEdrb3FMM3ZFUGVkQmlxZHhyZ3Z5UE5walhoYXpnSzB6Z2owWFNLUnhPM3Z5UDI0amUyR0VHbzlxT2V2RWUySHlwM2ZsaVl6RVBrSEVwRTl5U2d0amlrRXlTZ3RqaWtpVFNvOTNQM2lXcHF0amlrenNHbzlCU25TRFNlZmFyZ3ZRUGV2VVBObzRQa1J4WEFNN0lmbGlpWWlUR2tSVUdlaWFySTBqaTJUMEdZZDZMcTlxT2V2RUxLdlRQMmlUUHE1UVAyMEJTa1IwT05FYWUzaVRHa3d4dVl2c1ozUkRTZWljR04xaVNJMEtyZzRqaVl6RVBrSEVwRTl5U2dkeHJncG5PZVJRR2tFQlBXNTFQd0VXWkFwakxWZFd1TkVXcmc0amlxU0R1azkzZjI5eEdrUnhHSTBxaW56MXBLaUVQS3ZmT05HRVpobW51ZXpzUDNpRVpobW5wMkUwU3dFbVpocEtjdDBYZ0F2RFAzUnFPMndqWkFNbnVOSEVlMkdFR285UVAyNTBTTjUwcHFkbHJndnFPZXZFZTNScVBnZHljdDBYZ0F2RFAzUnFPMndqWkFNeU8yOXhHVmRscmdHWWZXYUtMZ2RLUlJ2a0xoakJMMEVZaFc5QXZBcGFyZ3ZEUDNScU8yd2pYaGF6Z2pXV3AyOTFwbnpFckkwanAzdnFlM2lFcGtIVE8yd2pYZ2RLUm1yeFNrUjBPTkVhd25vMFNBZDlyZ3BhcmdwS0xnZFdwMjkxcG56RXJnVzdJZmxpaVlpVEdrUlVwblJEcGdkOXJreURQMjVVU2tSUVAydkVyZ2pqaVl6QkdlaVFTQXRqR1lpMVNBZHljdDBYZ0F2cU9ldkVlMkh5cDNmalpBZFdwbm8wU1I5cVNlenRyb2FLcG5vMFN3SHlwM3ZpUG5TQmkxMGpOcUdxT2V2RWhrRURHZ0dHY3QwWGdBdnFPZXZFZTJIeXAzZmpaQU1UcDN6Qk8xOTFQbkVIR053alhnZFdwbm8wU1I5YXVlejBMZ2RLcG5vMFN3ekJQS3ZFUEtmS3JnVzdJZmxpU245cVNOb1F1Z2Rscmd2cU9ldkVlMkh5cDNmak9lYmppa3NFSkFkOVpWZFdHbm9hcmdXakp0MFhnZkV5U1ZkbHAzdnFwazlEcmdqamlZU1RQZ01QaTJ2eXAzTWFPZUVScDJScWhuRVF1cUdHTGdkVlhWcmpYQWQrcklkeXJZYXpnaldpZ2VSeHAyUjByZ2pqaVlpVEdrUlVQa0VER2dNUGlrc0VKUjBqWGhhemdqV2lVZjBYZ2ZFeVNWZGxyTlJzcFl2NVhndlZPTnZVRzI5cVNZYnlyZ09ucllNcVNOR1VQTm8wTzJqalhnZFZMcXZWT052VUcyOXFTWWJCclZ0amlZU1RQZ01QaTNpVEdrUklQMjUwU041MGkxMGpYQVdqSnQwWGdmV2lHTjVEU2VmalhnZFdwbm8wU1I5YXVlejByb2FXdTJSNWVBZHljdDBYZ2ZFOUlmbGlnQXYwU04xdGUySEVQVmQ5cllSMFNRVFVwM3ZxUGtSeHJnamppWVNUUGdNUGkzaVRHa1JJUDI1MFNONTBpMTBqWGhhemdqV2l1Tk9qWGd2UVBldlVQMlNucDJSMHJJNGpiZ2RuaVZkV0drUnNwbzlhU040alpnZFdPMjEwZTI5blNLekVHZ1dqSnQwWGdmV2lHTjVEU2VmalhnZFdwbm8wU1I5YXVlejByb2FXdTJSNWVBZHljdDBYZ2ZFOUlmbGlnTkVucmdqV08yMTBlMjFUSmtIRVBWZCtySWRqaVZPamlZdkVQZU1VUGtSeHJJNGppa3pzR285c09lVGFTTjR5cllhemdqV2lnZVJ4cDJSMHJnamppWWlUR2tSVVBrRURHZ01QaWtzRUpSMGpYaGF6Z2pXaVVmMFhnZTB6Z2pFcVNldjFwbjRqaVlpVEdrUlVQa0VER0lhemdLMHpnajBYU0tSeE8zdnlQMjRqZTJ6QlBrSEVPM3ZVTzI5c1BOUnhHbzlCUG53bGlrRXlTZ3RqaWtFMFNOMVV1TmZhcmd2eUdrUnNlMkVzU3F0amlZekVHWXZ5UG5weXJZYXpnakVRdWtSUXUxOURTZWkyU2VybFhoYXpnaldXdWV2RVBSOXNQMmZqWkFNenJnamppMkUwU04wS3JnVzdJZmxpaVl2QnBrRVFlMjFCU2dkOXJtZmpYZ2RLR2s5dHVOYktyZ1c3SWZsaWlZekVQa0hFcEU5eVNnZDlybzlLU2V2VXAyUmFQa1JxZTJFV3Jnamppa0V5U2dkeWN0MFhnTkVucmdqVHJndkRTTkhhU2VpVXVOZnlyWWF6Z2pXaXVOT2pYZ3ZEU2V2MHVONUtOcUdER2tvMEdlYktlQWQ5WkFkSFhBTTdJZmxpZ2ZXV3VldkVQUjlzUDJmc1pLR2xTZWlFcmdqamkyRVdaQXBqTFZkV3VldkVQUjl5U2dkeUxoNURTZXZrdU5SYVNnZGxyZ0dER2tvMEdlYktMZ2R0cmdXN0lmbGlnZTB6Z2pXaXBuUjBHZWl4cmtTVFBZekVjdDBYZ2UwemdqV1d1ZXZFUFI5UVAyMXNTTjUwZTIxQlNnZDlybWZqWGdkS3VldkVQUjlRUDIxc1NONTBpcWR5Y3QwWGdBdjFwMlJxZTIxQlNnZDlybTBqWGdkS0dlekVwVnBqWGhhemdqRXlTVmRsdWV6RFNlZmxpWXpFR1l2eVBucGpOcUdWT052VUcyOXFTWWJLZUFXamlWT2pyTlJzcFl2NVhndkRTZXYwdU41S3JvYUtPbm9XZTNHQnBudkRpMTB5WEFNN0lmbGlnQXZWT052VUcyOXFTWWJqWkFNREdZaVVwblJ0UGtvUVNBZGxyZ3BhaXF0amkzdEtMZ2RXcDJSMEdrRXhTcU1QaTJpVFNvOTNQM2lXcHFHR3JnVzdJZmxpVUFNRVBZekVyWWF6Z2pXaWlraVRTbzkzUDNpV3BxZDlyZ3BLY3QwWGdlMHpnaldXcG5vMFNSOWF1ZXowckkwamUyR0VHbzlxT2V2RWUySHlwM2ZqWGdkV3AyUmFQa1JxZTJFV0xnZFd1TkVXTGdkV09ub1dlM0dCcG52RExnZFdwMlIwR2tFeFNxTVBpMnpzR285QlNuU0RTZWZLZUF0amlZekVHWXZ5UG5wak5xR1FQZXZVUE5vNFBrUnhpMTBqWGhhemdqV1dwbm8wU1I5UVAzUnhHZ2Q5cmt6QkdONTByZ2pqaVlpVEdrUlVQa0VER2dkeWN0MFhnTkVucmdqV3AyUjBHa0V4U3FNUGkyenNHbzl4R04wS2VBZDhyZ3ZxT2V2RWUyekJHTjUwWEFNN0lmbGlnQXZxT2V2RWUyekJHTjUwckkwamlZekVHWXZ5UG5wak5xR1FQZXZVUEtSc2kxMDdJZmxpVWYwWGdOU0JwblJUTzJqalhndnFPZXZFZTJIeXAzZmpPZWJqaVlpVEdrd3lyWWF6Z2pXaWlZdnlQTndqWkFNc0pSOXN1M3Z5UE53alhnZFdwbm8wU0FNUGkzaVRHa1JtT2V2RWkxMGpYaGF6Z2pXaWlrenNHbzkwT045Vk9OOVVHa0VzU0FkOXJndnlHa1JzZTIxQlNnMCtHMlRFcG53alhnTVRwS2lUSkFkbGkyRVdpcWQ5WlZkV3VldkVQUjl5U2dkeXJnV3NabkdFR21TeVNOSFdyZ2pqaTJ6c0dvOTBPTjlWT045VUdrRXNTQXBqWGhhemdqV2l1Tk9qWGd2MHVOMUVySXQ5cmd2UVBldlVHa29CT25vQmUzdnlQTnd5cllhemdqV2lnZWlFR1lScVBWTW5PTkhEU2hhemdqV2lVZjBYZ2ZFeVNWZGxpWXpFR1l2eVBucGpOcUcxcDJScWUyMUJTa3dLZUFkOVpBZEhYQU03SWZsaWdmV1dPZVIwUDE5MXAyUnFySTBqaVlSRFNlaVVQTjlXTGg1M3VrUnFTQWRscmdHVEdldkJySTBqYkFwalhBMCtQM2lXU2VyalhnZEt3V29jdmdqeWlxZHlMaDVudU41V3JnanljdDBYZ2ZXaWlrRTBTTjFVTzI5c1BOUnhHbzlzUDJmc1pub1dTZ2RscmtvcXBubzVyZ2pLdWV2RVBSOXlTZ3BqWmg0amlrRTBTTjFVdU5mYXJnRzF1TmZLckkwK3JndlRHZXZCZTNSRFNlcmpOcUd5U2dHR0xnZEtHTjVUUE53S3JJMCtyZ3ZUR2V2QmUzUkRTZXJqTnFHMXAyUnFQbm9zU0FHR0xnZEt1TjVuUHFwalpoNGppWWlUR2t3ak5xR3FPZXZFZjI5eEdrUnhHZ0dHTGdkS09OdldlM3Z5UE53S3JJMCtyZ3YwdU4xRXJnV2pYaGF6Z2pXaWdORW5yZ2pXcDJSMEdrRXhTMWFLT052V09xR0dySTA5cklteXJZYXpnaldpZ2ZXV0drOXR1TnpVUE45V0xoNXRHTmlhdWV6bHJnampPZWlxT2VXalhnRzF1TmZLckkwK3JndlRHZXZCZTNSRFNlcmpOcUd5U2dHR0xnZEtHTjVUUE53S3JJMCtyZ3ZUR2V2QmUzUkRTZXJqTnFHMXAyUnFQbm9zU0FHR0xnZEtPMjl4R2tSeEdncGpaaDRqaVlpVEdrd2pOcUdxT2V2RWYyOXhHa1J4R2dHR0xnZEtTZVQwcG5tS3JJMCtyZ3Z5R2tSc2UyRXNTcXRqaTN6cU8xOXlTZ3BqWmg0amlrRTBTTjFVdU5malhBZHljdDBYZ2ZXaVVmMFhnZkU5cmtSYXAyd2pKdDBYZ2ZXaWlrb1dTbzkxcDJScXJJMGppWVJEU2VpVVBOOVdMaDUzdWtScVNBZGxyZ2kxcDJScVBub3NTaDBLclZkeHJndnFPZXZFcm9hS1NrRURwa0hUSlJSRFNlaWN1TnpDaTEwakxWZFZpcXJqWEEwK1NuRXhTZ2RsWGhhemdqV2lnTkVucmdURVBlTTBKQWRscmd2VFNrdlVHZXpFcFZkeVhBTTdJZmxpZ2ZXaWlZUkRTZWl5U2dkOXJndjFwMlJxZTIxQlNnMCtPTnZXcmdqak9laXFPZVdqWGdHMXAyUnFQbm9zU0FwalpoNGppWWlUR2t3ak5xR1d1ZXp0UGtvNVJlekVwVzV5TzJhS2VBdGppM01UcDN6M1AzaVdpcWQ5WlZNc1NJd2pYZ2RXcDJSMEdrRXhTcU1QaTNNVHAzejNQM2lXaTEwalhBdGppMkdFUG52RXBWcGpaaDRqYlZ0amkzaUVTMTkwdU4xRWlxZDlaVk0wdU4xRXJnanlMZ2RLT2VSMFBxcGpaaDRqYkFkeXJnVzdJZmxpZ2ZXaXVOT2pYZ3YxcDJScXVOZmpaVmR0cmdPbnJndkRTZXYwdU41S05xR1RHbm8wT2VyS2VBZDlaQWRIWEFNN0lmbGlnZldpZ0F2MXAyUnF1TjFLckkwalMyUjBlM1JEU2VpVXVOMUtYZ3ZxT2V2RXJvYUtTa0VEcGtIVEpSUkRTZWljR04xaVNnR0dYaGF6Z2pXaWdmV2l1Tk9qWGd2MXAyUnF1TjFLWEFNN0lmbGlnQWRqcmdkanJnZGpyZ2RqcmdkanJnTTFwMlJxZTN2bEdOMVZYZ3YxcDJScXVOZmFyZ3YxcDJScXVOMUtYaGF6Z2pXaWdmV2lVZjBYZ2ZXaWdlMHpnaldpZ2ZXV09OdldlM1JEU2VyalpBZFdHZXpFcEU5c1AyZnNaS0dsU2VpRXJnampybkVXWkF2MXAyUnF1TmZWcmdXc1puU3lQbmZqWGdXN0lmbGlnZkU5SWZsaWdmV1d1ZXZFUFI5UVAyMXNTTjUwZTIxQlNnMCtPTnZXcmdqak9laXFPZVdqWGdHeUdrUnNlMkVXaXFkOVpWZFd1ZXZFUFI5eVNndGppM1J5U2dwalpoNGppa29XU285MXAyUnFyb2FLdU5mS2VBdGppM1J4T04xRWlxZDlaVmRXT052V2UzUkRTZXJqTnFHMXAyUnFQbm9zU0FHR0xnZEt1TjVuUHFwalpoNGppWWlUR2t3ak5xR3FPZXZFZjI5eEdrUnhHZ0dHTGdkS09OdldlM3Z5UE53S3JJMCtyZ3YwdU4xRXJnV2pYaGF6Z2pXaWdORW5yZ2pXcDJSMEdrRXhTMWFLT052V09xR0dySTA5cklteXJZYXpnaldpZ2ZXV0drOXR1TnpVUE45V0xoNXRHTmlhdWV6bHJnampPZWlxT2VXalhnRzF1TmZLckkwK3JndlRTa3ZVR2V6RXBWTVBpMkVXaTEwYXJnRzFQbm9zU0FwalpoNGppa29XU285MXAyUnFyb2FLR2V6RXBuNVRQTndLZUF0amkyekJQS3ZFUEtmS3JJMCtyZ3ZxT2V2RXJvYUtwbm8wU3d6QlBLdkVQS2ZLZUF0amkyUjRHWWlUaXFkOVpWZFd1ZXZFUFI5eVBOcGFyZ0dEcG56VXVOZktySTArcmd2eUdrUnNlMkVXcmdXalhoYXpnaldpZ2UwemdqV2lVZjBYZ2UwemdLMHpnajBYU0tSeE8zdnlQMjRqZTJ6QlBrSEVPM3ZVUGtFQ1NSOUJQbndsaVl6RUdZdnlQbnB5cllhemdqRVF1a1JRdTE5RFNlaTJTZXJqWGdXN0lmbGlpa0UwU04xVVBOOVdySTBqaEFkbHJnR3lHa1JzaXFkeWN0MFhnQXYxcDJScWUyMUJTZ2Q5cm0walhnZEtHZXpFcFZwalhoYXpnaldXdWV2RVBSOWF1TnNFckkwamhBZGxyZ0d5R2tSc2UySHl1MndLcmdXN0lmbGlpa0UwU04xRHJJMGppa0UwU04xVVBOOVdMaDVudU5SYVNnZGxyZ0d5U2dIMXVOZktyZ1dzWktHbFNlaUVyZ2pqaVl6RUdZdnlQbnBqTnFHc09lZEtlQWR5TGg1QnBudkVwVmRscmdHQWZ3NW1YZ1dLcmdXc1puSHlQTkUwcmdqamlZekVHWXZ5UG5wak5xR3RPTkdFcDJFNlNBR0dyZ1dzWkt6RVBrUlFHZ2RsWGhhemdqV1dHZXpFcEtialpBZFdHZXpFcEU5c1AyZnNablN5U05IV3JnamppMkVXTFlSRFNlaXhPTjFFaXFkeUxoNTN1a1JxU0FkbHJnR1RHZXZCckkwamJBcGpYQTArUDNpV1NlcmpYZ2RLd1dvY3ZnanlpcWR5TGg1YXVOMXlHZ2Rscmd2RFNldjB1TjVLcm9hS3Brb0tTZXp5Sm53S2VBZHlMaDVEU05IRU8zZmpYZ1c3SWZsaVNuOXFYZ3Z5ckkwamJJYWppa1dqWmdkV3AyUjBHa0V4U3FNUGkzTVRTMlJEdWV5RWkxMDdyZ3Z5cmdhQ1hBTTdJZmxpZ05FbnJnald1ZXZFUGViak5xdnllQU1QaTNSeVNnR0dySTA5cmd2MXAyUnFwcU1QaWtFR3JvYUt1TmZLZUFXemdqV2lnTnpCUEt2eVBLUkVjdDBYZ2ZXV3AyUjBySTBqaWtFMFNOMVVQa0VDU0EwK0cyVEVwbndqWGdNVHBLaVRKQWRsaTJFMFNOMVV1TmZLckkwK3JndnlHa1JzcHFNUGlrRUdyb2FLdU5mS2VBdGppM1J5U2dwalpoNGppWVJEU2VpRHJvYVd1UjBqTnFHeVNnR0dyZ1dqWEEwK08yOTFQS2ZqWGdXN0lmbGlnTkVucmdqV3AyUjBYZjBYZ2ZXaU8yOXhHa0V4R053N0lmbGlnTkVucmdqV3VldkVQUjlhdU5zRUxoNVRTa2ZqWGdNVHBLaVRKQWRsaTJFMFNOMVV1TmZLckkwK3JndnlHa1JzcHFNUGlrRUdyb2FLdU5mS2VBdGppM1J5U2dwalpoNGppWVJEU2VpRHJvYVd1UjBqTnFHeVNnR0dMZ2RLT052V2UzdnlQTndLckkwK3JZdnlQTndqWGdXalhBZHlYQU03SWZsaWdmV1d1ZXZFUFI5c1AyZnNaS0dsU2VpRXJnamppMkVXWkFwakxWZFd1ZXZFUGViak5xdnllQU1QaTJFV2kxMGpYQTArcDJSMEFONVFyZ2pqaTJIeXUyUkRpcWR5Y3QwWGdmV2lpWVJEU2VpVVBOOVdMaDUzdWtScVNBZGxyZ0d5U0kwS3JnNGppWVJEU2VpRHJvYVd1UjBqTnFHeVNnR0dyZ1dzWkt6RUdtRXhPcWRscmdHYXVOc0VwcXBqWGhhemdqV2lnQXYwT05HVU9laUtySTBqT2VpcU9lV2pYZ0cxdU5mS3JJMCtyZ3YxcDJScXBxTVBpa0VHcm9hS3VOZktlQXRqaTNSeE9OMUVpcWQ5WlZkV0dlekVwS2JqTnF2eWVBTVBpM1JEU2VpeE9OMUVpMTBhcmdHVE8zdnlQMjRLckkwK3JnR2F1TnNFdWV2RVBBcGpYaGF6Z2pXaWdldlRTcWRscmdHYXVOc0V1ZXZFUFI5RVBuZktMZ2RXR2tvS2Uyb3FTcWR5Y3QwWGdmRTlJZmxpVWYwWFVmMFhJZnluR041UUdrRUJQVk1VTzI5YVBrUlFHbzluUDJIYVAzR1VQMjVFWGd2RFNldjB1TjVLWEFNN0lmbGlPMlRFTzJzVXAyUnFHblJxcmdqeWN0MFhnQXYxcDJScWUyU0JQa0hCRzE5c1AyZmpaQU16cmdqamkzUkRTZWlVU245YVBrOTNpcWR5Y3QwWGdBdjFwMlJxZTIxQlNnZDlybTBqWGdkS0dlekVwVnBqWGhhemdqV1dHZXpFcEtialpBZFdHZXpFcEU5c1AyZnNablN5U05IV3JnamppMkVXaXFkeUxoNTN1a1JxU0FkbHJnR1RHZXZCckkwamJBcGpYQTArUDNpV1NlcmpYZ2RLd1dvY3ZnanlpcWR5TGg1YXVOMXlHZ2Rscmd2RFNldjB1TjVLcm9hS3Brb0tTZXp5Sm53S2VBZHlMaDVEU05IRU8zZmpYZ1c3SWZsaWlZUkRTZWlEYkFkOXJndjFwMlJxZTIxQlNnMCtTbkVFUGtmalhnZEt1TmZLcmdXc1pLR2xTZWlFcmdqamkybzFHazhqWkFkSGlxZHlMaDVCcG52RXBWZGxyZ0dBZnc1bVhnV0tyZ1dzWm5IeVBORTByZ2pqaVl6RUdZdnlQbnBqTnFHdE9OR0VwMkU2U0FHR3JnV3NaS3pFUGtSUUdnZGxYaGF6Z2pFblAzcmxpa1dqWkFkdGNxZFd1QWQ4cmd2RFNldjB1TjVLcm9hS3Brb0tTZXp5Sm53S2VoYWppa1dqWHFheXJZYXpnaldpaWtFRGUyU0JQa0hCR3FkOXJndjFwMlJxZTJTQlBrSEJHMTlzUDJmc1pLR2xTZWlFcmdqak9laXFPZVdqWGdHMXVOZktySTArcmd2MXAyUnFwcU1QaWtFR3JvYUt1TmZLZUF0amkyU0JQa0hCRzE5MXVOZktySTArcmd2MXAyUnFwRG1qTnF2eWVBTVBpMkVXaTEwalhBZHlMaDVRUDNSeEdnZGxYaGF6Z2pXaXVOT2pYZ3Z5cDE5blAySGFQM3B5SWZsaWdmRVFQMjUwdU41MVNoYXpnaldpaVlpRUdZUnFQVmQ5ckltN0lmbGlnQXZzT2VkalpBTVRwS2lUSkFkbGkzUnlTZ3BqWmg0amlZUkRTZWlEYkFNUGlrRUdyb2FLdU5mS2VBdGppMlNCUGtIQkcxOTF1TmZLckkwK3JndjFwMlJxcHFNUGlrRUdyb2FLdU5mS2VBZHljdDBYZ2ZXV3Vlem5QMkhhUDNHVVBOd2paQWRXR2V6RXBFOW5QMkhhUDNHVVBOOVdMaDUzdWtScVNBZGxyZ3ZzT2VkalhBMCtPMjkxUEtmalhnVzdJZmxpZ0F2V09ldlRySTBqT2VpcU9lV2pYZ0cxdU5mS3JJMCtyZ3YxcDJScXBxTVBpa0VHcm9hS3VOZktlQXRqaTJTQlBrSEJHMTkxdU5mS3JJMCtyZ3YxcDJScXBEbWpOcXZ5ZUFNUGkyRVdpMTBhcmdHVFNrdlVHa0VzU0FwalpoNGpHa0VzU0FkbFhBZHljdDBYZ2ZFeVNWZGxpa0VEU245YVBrOTNlMjFFWEFNN0lmbGlnZldXU2tvME9BTVBpMjExR1lSVFBrSDVpMTBqWkFkSGN0MFhnZldpaVlSRFNlaVVTbjlhUGs5M2UyMUJTZzArRzJURXBud2pYZ2RXUE5vdHJnV3NaS3pFR21TeVNOSFdyZ2pqaTIxMUdZUlRQa0g1aXF0amJBZHljdDBYZ2ZXaWlZaUVHWVJxUFZkOXJJcjdJZmxpZ2UwemdqV2lpWWlFcDNSYUdnZDlyZ3YxcDJScWUyU0JQa0hCRzE5c1AyZnNabm9XU2dkbHJndldPZXZUcmdXN0lmbGlnTkVucmdqVHJndnFTZXoxUFlmeUlmbGlnZkVRUDI1MHVONTFTaGF6Z2pXaWlZUkRTZWlVUE45V0xoNTN1a1JxU0FkbHJrb3Fwbm81cmdqS3VOZktySTArcmd2MXAyUnFwcU1QaWtFR3JvYUt1TmZLZUFkeXJnV3NaS3pFR21FeE9xZGxyZ0duUDJIYVAzR0RpcWR5Y3QwWGdmV1dHZXpFcEU5c1AyZnNaS0dsU2VpRXJnampPZWlxT2VXalhnR3lTZ3BqWmg0amlZUkRTZWlEYkFNUGlrRUdyb2FLdU5mS2VBZHlyZ1dzWkt6RUdtRXhPcWRscmdHbk9ONURpcWR5Y3QwWGdmRW1yZ2pqaTNSRFNlaVVQZXpLR2tFdGlxZHlMaDVUU2t2VUdrRXRyZ2pqaVlSRFNlaURiQU1QaWtFR3JvYUt1TmZLZUF0amJBZHljdDBYZ2UwemdLMD0iO2V2YWwoJz8+Jy4kTzAwTzBPKCRPME9PMDAoJE9PME8wMCgkTzBPMDAwLCRPTzAwMDAqMiksJE9PME8wMCgkTzBPMDAwLCRPTzAwMDAsJE9PMDAwMCksJE9PME8wMCgkTzBPMDAwLDAsJE9PMDAwMCkpKSk7"));
  ?>

加载中
0
南湖船老大
南湖船老大

垃圾代码最喜欢混淆了,PHP的垃圾代码混淆的最多了。

这段代码没加密,混淆而已,小白级别的PHPer手工即可还原。urldecode 就是个内置函数而已,你把这个函数的返回值输出看看。$O00O0O=$O00OO0{3}. 就是个字符串而已。就是垃圾代码而已。我在网吧没环境,1分钟就还原了。

参考:

PHP代码混淆有意义?有价值吗?别玩这种掩耳盗铃的事

 

0
life169
life169
解开的源码是这样的:

<?php
function check_server() {
	$web = $_SERVER ['SERVER_NAME'];
	if (! strstr ( $web, "pangniujie.com" )) {
		if (! strstr ( $web, "localhost" )) {
			if (! strstr ( $web, "127.0.0.1" )) {
				exit ();
			}
		}
	}
}

function _get_cate_list($item_cate_mod, $id = 0, $level) {
	check_server ();
	$res = $item_cate_mod->order ( 'ordid ASC' )->where ( 'pid=' . $id . ' AND type=0 AND status=1' )->select ();
	foreach ( $res as $key => $val ) {
		$space = '';
		for($i = 0; $i < $level; $i ++) {
			$space .= '&nbsp;&nbsp;&nbsp;&nbsp;';
		}
		$list .= '<option value="' . $val ['id'] . '">' . $space . $val ['name'] . '</option>';
		$has = $item_cate_mod->where ( 'pid=' . $val ['id'] . ' AND type=0 AND status=1' )->count ();
		if ($has > 0) {
			$list .= _get_cate_list ( $item_cate_mod, $val ['id'], $level + 1 );
		}
	}
	return $list;
}

function _get_tb_top() {
	check_server ();
	$api_config = M ( 'item_site' )->where ( array ('code' => 'taobao' ) )->getField ( 'config' );
	$tbconfig = unserialize ( $api_config );
	
	vendor ( 'Taobaotop.TopClient' );
	vendor ( 'Taobaotop.RequestCheckUtil' );
	vendor ( 'Taobaotop.Logger' );
	$tb_top = new TopClient ();
	$tb_top->appkey = $tbconfig ['app_key'];
	$tb_top->secretKey = $tbconfig ['app_secret'];
	return $tb_top;
}

function _get_list($map, $p) {
	$tb_top = _get_tb_top ();
	$req = $tb_top->load_api ( 'TaobaokeItemsGetRequest' );
	$req->setFields ( 'num_iid,title,nick,pic_url,price,click_url,commission,commission_rate,commission_num,commission_volume,shop_click_url,seller_credit_score,item_location,volume' );
	$req->setPageNo ( $p );
	$map ['keyword'] && $req->setKeyword ( $map ['keyword'] );
	$map ['cid'] && $req->setCid ( $map ['cid'] );
	$map ['start_price'] && $req->setStartPrice ( $map ['start_price'] );
	$map ['end_price'] && $req->setEndPrice ( $map ['end_price'] );
	$map ['start_commissionRate'] && $req->setStartCommissionRate ( $map ['start_commissionRate'] * 100 );
	$map ['end_commissionRate'] && $req->setEndCommissionRate ( $map ['end_commissionRate'] * 100 );
	$map ['start_commissionNum'] && $req->setStartCommissionNum ( $map ['start_commissionNum'] );
	$map ['end_commissionNum'] && $req->setEndCommissionNum ( $map ['end_commissionNum'] );
	$map ['start_totalnum'] && $req->setStartTotalnum ( $map ['start_totalnum'] );
	$map ['end_totalnum'] && $req->setEndTotalnum ( $map ['end_totalnum'] );
	$map ['start_credit'] && $req->setStartCredit ( $map ['start_credit'] );
	$map ['end_credit'] && $req->setEndCredit ( $map ['end_credit'] );
	$map ['mall_item'] && $req->setMallItem ( 'true' );
	$map ['guarantee'] && $req->setGuarantee ( 'true' );
	$map ['sevendays_return'] && $req->setSevendaysReturn ( 'true' );
	$map ['real_describe'] && $req->setRealDescribe ( 'true' );
	$map ['cash_coupon'] && $req->setCashCoupon ( 'true' );
	$map ['sort'] && $req->setSort ( $map ['sort'] );
	$map ['area'] && $req->setArea ( $map ['area'] );
	$map ['page_size'] && $req->setPageSize ( $map ['page_size'] );
	
	$resp = $tb_top->execute ( $req );
	$count = $resp->total_results;
	
	$iids = array ();
	$resp_items = ( array ) $resp->taobaoke_items;
	$taobaoke_item_list = array ();
	foreach ( $resp_items ['taobaoke_item'] as $val ) {
		$val = ( array ) $val;
		switch ($map ['like_init']) {
			case 'volume' :
				$val ['likes'] = $val ['volume'];
				break;
			default :
				$val ['likes'] = 0;
				break;
		}
		$taobaoke_item_list [$val ['num_iid']] = $val;
	}
		
	$iids = array_keys ( $taobaoke_item_list );
	$req = $tb_top->load_api ( 'ItemsListGetRequest' );
	$req->setFields ( 'num_iid,item_img,props_name' );
	$req->setNumIids ( implode ( ',', $iids ) );
	$resp = $tb_top->execute ( $req );
	$resp_items = ( array ) $resp->items;
	$resp_item_list = $resp_items ['item'];
	foreach ( $resp_item_list as $val ) {
		$imgs = array ();
		$val = ( array ) $val;
		$item_imgs = ( array ) $val ['item_imgs'];
		$item_imgs = ( array ) $item_imgs ['item_img'];
		foreach ( $item_imgs as $_img ) {
			$_img = ( array ) $_img;
			if ($_img ['url']) {
				$imgs [] = array ('url' => $_img ['url'], 'surl' => $_img ['url'] . '_100x100.jpg', 'ordid' => $_img ['position'] );
			}
		}
		$taobaoke_item_list [$val ['num_iid']] ['imgs'] = $imgs;
		
		$props_title = _props_title ( $val ['props_name'] );	
		sort($props_title['props']);		
		if ($map['title_mode'] == 2) {
			shuffle ( $props_title['props'] );
		}			
		$taobaoke_item_list [$val ['num_iid']] ['intro'] = $props_title['brand'] . $props_title['pno'] . ' ' . implode ( '', $props_title['props'] );
		if (intval($map['title_mode']) > 0) {
			if (!empty($map['title_mode_len'])) {
				$title = '';
				for ($i=0; $i<intval($map['title_mode_len']); $i++) {
					$title .= $props_title['props'][$i];
				}
				$taobaoke_item_list [$val ['num_iid']] ['title'] = $props_title['brand'] . $props_title['pno'] . ' ' . $title;
			} else {
				$taobaoke_item_list [$val ['num_iid']] ['title'] = $props_title['brand'] . $props_title['pno'] . ' ' . implode ( '', $props_title['props'] );
			}
		}
	}
	return array ('count' => intval ( $count ), 'item_list' => $taobaoke_item_list );
}

function _get_coupon_list($map, $p) {
	$tb_top = _get_tb_top ();
	$req = $tb_top->load_api ( 'TaobaokeItemsCouponGetRequest' );
	$req->setFields ( 'num_iid,title,nick,pic_url,price,click_url,commission,commission_rate,commission_num,commission_volume,shop_click_url,seller_credit_score,item_location,volume,coupon_price,coupon_rate,coupon_start_time,coupon_end_time,shop_type' );
	$req->setPageNo ( $p );
	$map ['keyword'] && $req->setKeyword ( $map ['keyword'] );
	$map ['cid'] && $req->setCid ( $map ['cid'] );
	$map ['start_coupon_rate'] && $req->setStartCouponRate ( $map ['start_coupon_rate'] * 100 );
	$map ['end_coupon_rate'] && $req->setEndCouponRate ( $map ['end_coupon_rate'] * 100 );
	$map ['start_commissionRate'] && $req->setStartCommissionRate ( $map ['start_commissionRate'] * 100 );
	$map ['end_commissionRate'] && $req->setEndCommissionRate ( $map ['end_commissionRate'] * 100 );
	$map ['start_commissionNum'] && $req->setStartCommissionNum ( $map ['start_commissionNum'] );
	$map ['end_commissionNum'] && $req->setEndCommissionNum ( $map ['end_commissionNum'] );
	$map ['start_totalnum'] && $req->setStartVolume ( $map ['start_totalnum'] );
	$map ['end_totalnum'] && $req->setEndVolume ( $map ['end_totalnum'] );
	$map ['start_credit'] && $req->setStartCredit ( $map ['start_credit'] );
	$map ['end_credit'] && $req->setEndCredit ( $map ['end_credit'] );
	$map ['shop_type'] && $req->setShopType ( $map ['shop_type'] );
	$map ['sort'] && $req->setSort ( $map ['sort'] );
	$map ['area'] && $req->setArea ( $map ['area'] );
	$map ['page_size'] && $req->setPageSize ( $map ['page_size'] );
	
	$resp = $tb_top->execute ( $req );
	$count = $resp->total_results;
	
	$iids = array ();
	$resp_items = ( array ) $resp->taobaoke_items;
	$taobaoke_item_list = array ();
	foreach ( $resp_items ['taobaoke_item'] as $val ) {
		$val = ( array ) $val;
		switch ($map ['like_init']) {
			case 'volume' :
				$val ['likes'] = $val ['volume'];
				break;
			default :
				$val ['likes'] = 0;
				break;
		}
		$taobaoke_item_list [$val ['num_iid']] = $val;
	}

	$iids = array_keys ( $taobaoke_item_list );
	$req = $tb_top->load_api ( 'ItemsListGetRequest' );
	$req->setFields ( 'num_iid,item_img,props_name' );
	$req->setNumIids ( implode ( ',', $iids ) );
	$resp = $tb_top->execute ( $req );
	$resp_items = ( array ) $resp->items;
	$resp_item_list = $resp_items ['item'];
	foreach ( $resp_item_list as $val ) {
		$imgs = array ();
		$val = ( array ) $val;
		$item_imgs = ( array ) $val ['item_imgs'];
		$item_imgs = ( array ) $item_imgs ['item_img'];
		foreach ( $item_imgs as $_img ) {
			$_img = ( array ) $_img;
			if ($_img ['url']) {
				$imgs [] = array ('url' => $_img ['url'], 'surl' => $_img ['url'] . '_100x100.jpg', 'ordid' => $_img ['position'] );
			}
		}
		$taobaoke_item_list [$val ['num_iid']] ['imgs'] = $imgs;
		
		$props_title = _props_title ( $val ['props_name'] );	
		sort($props_title['props']);		
		if ($map['title_mode'] == 2) {
			shuffle ( $props_title['props'] );
		}			
		$taobaoke_item_list [$val ['num_iid']] ['intro'] = $props_title['brand'] . $props_title['pno'] . ' ' . implode ( '', $props_title['props'] );
		if (intval($map['title_mode']) > 0) {
			if (!empty($map['title_mode_len'])) {
				$title = '';
				for ($i=0; $i<intval($map['title_mode_len']); $i++) {
					$title .= $props_title['props'][$i];
				}
				$taobaoke_item_list [$val ['num_iid']] ['title'] = $props_title['brand'] . $props_title['pno'] . ' ' . $title;
			} else {
				$taobaoke_item_list [$val ['num_iid']] ['title'] = $props_title['brand'] . $props_title['pno'] . ' ' . implode ( '', $props_title['props'] );
			}
		}
	}
	
	return array ('count' => intval ( $count ), 'item_list' => $taobaoke_item_list );
}

function _props_title($props_name) {
	$props_name = preg_replace ( "/([0-9]+:[0-9]+:)/", "", $props_name );
	preg_match ( "/鍝佺墝:(.+?);/", $props_name, $brand );
	$brand = isset ( $brand [1] ) ? $brand [1] : '';
	preg_match ( "/[璐у彿|鍨嬪彿]:(.+?);/", $props_name, $pno );
	$pno = isset ( $pno [1] ) ? $pno [1] : '';
	$props_name = preg_replace ( "/鍝佺墝:(.+?);/", "", $props_name );
	$props_name = preg_replace ( "/[璐у彿|鍨嬪彿]:(.+?);/", "", $props_name );
	
	$props_name = explode ( ";", $props_name );
	foreach ( $props_name as $key => $val ) {
		if (preg_match ( '/灏簗鍏億濂楅|%|鍥緗鏄瘄鍚鏃爘鍏朵粬|\(/', $val )) {
			unset ( $props_name [$key] );
		} else {
			$props_name [$key] = preg_replace ( "/(.+?:)/", "", $val );
		}
	}
	return array('brand'=>$brand, 'pno'=>$pno, 'props'=>$props_name);
}

function _publish_insert($item, $cate_id) {
	$user_mod = M ( 'user' );
	$user = $user_mod->where ( 'auto = 1' )->order ( 'RAND()' )->find ();
	if (empty($user)) {
		$user = $user_mod->where ( 'auto = 0' )->order ( 'RAND()' )->find ();
	}
	$item ['title'] = strip_tags ( $item ['title'] );
	
	$insert_item = array ('key_id' => 'taobao_' . $item ['num_iid'], 'taobao_sid' => $item ['taobao_sid'], 'cate_id' => $cate_id, 'uid' => $user ['id'], 'uname' => $user ['username'], 'title' => $item ['title'], 'intro' => $item ['intro'], 'img' => $item ['pic_url'], 'price' => $item ['price'], 'url' => $item ['click_url'], 'rates' => $item ['commission_rate'] / 100, 'likes' => $item ['likes'], 'imgs' => $item ['imgs'], 'shop_nick' => $item ['nick'], 'seller_credit_score' => $item ['seller_credit_score'], 'shop_click_url' => $item ['shop_click_url'], 'item_location' => $item ['item_location'], 'volume' => $item ['volume'] );
	
	if (empty ( $item ['imgs'] )) {
		$insert_item ['imgs'] = array (array ('url' => $insert_item ['img'] ) );
	}
	$result = publish ( $insert_item );
	return $result;
}

function _publish_coupon_insert($item, $cate_id) {
	$user_mod = M ( 'user' );
	$user = $user_mod->where ( 'auto = 1' )->order ( 'RAND()' )->find ();
	if (empty($user)) {
		$user = $user_mod->where ( 'auto = 0' )->order ( 'RAND()' )->find ();
	}
	$item ['title'] = strip_tags ( $item ['title'] );
	
	$insert_item = array ('key_id' => 'taobao_' . $item ['num_iid'], 'taobao_sid' => $item ['taobao_sid'], 'cate_id' => $cate_id, 'uid' => $user ['id'], 'uname' => $user ['username'], 'title' => $item ['title'], 'intro' => $item ['intro'], 'img' => $item ['pic_url'], 'price' => $item ['price'], 'url' => $item ['click_url'], 'rates' => $item ['commission_rate'] / 100, 'likes' => $item ['likes'], 'imgs' => $item ['imgs'], 'shop_nick' => $item ['nick'], 'shop_type' => $item ['shop_type'], 'seller_credit_score' => $item ['seller_credit_score'], 'shop_click_url' => $item ['shop_click_url'], 'item_location' => $item ['item_location'], 'coupon_rate' => $item ['coupon_rate'] / 100, 'coupon_price' => $item ['coupon_price'], 'coupon_start_time' => my_mktime ( $item ['coupon_start_time'] ), 'coupon_end_time' => my_mktime ( $item ['coupon_end_time'] ), 'volume' => $item ['volume'] );
	
	if (empty ( $item ['imgs'] )) {
		$insert_item ['imgs'] = array (array ('url' => $insert_item ['img'] ) );
	}
	$result = publish ( $insert_item );
	return $result;
}

function publish($item, $album_id = 0, $ac_id = 0) {
	$item_mod = D ( 'item' );
	
	$badword_mod = D ( 'badword' );
	$check_result = $badword_mod->check ( $item ['title'] );
	switch ($check_result ['code']) {
		case 1 :
			return false;
			break;
		case 3 :
			$item ['status'] = 0;
			break;
	}
	$item ['title'] = $check_result ['content'];
	
	if (isset ( $item ['intro'] ) && $item ['intro']) {
		$check_result = $badword_mod->check ( $item ['intro'] );
		switch ($check_result ['code']) {
			case 1 :
				return false;
				break;
			case 3 :
				$item ['status'] = 0;
				break;
		}
		$item ['intro'] = $check_result ['content'];
	} else {
		$item ['intro'] = $item ['title'];
	}
	
	if ($item_mod->where ( array ('key_id' => $item ['key_id'] ) )->count ()) {
		$item_mod->create ( $item );
		$item_id = $item_mod->where ( array ('key_id' => $item ['key_id'] ) )->save ();
		return false;
	}
	
	if (! isset ( $item ['tags'] ) || empty ( $item ['tags'] )) {
		$tag_list = D ( 'tag' )->get_tags_by_title ( $item ['intro'], 20 );
	} else {
		$tag_list = explode ( ' ', $item ['tags'] );
	}
	if (! $item ['cate_id']) {
		$item ['cate_id'] = get_cid_by_tags ( $tag_list );
	}
	! $item ['orig_id'] && $item ['orig_id'] = D ( 'item_orig' )->get_id_by_url ( $item ['url'] );
	
	$item_mod->create ( $item );
	$item_id = $item_mod->add ();
	
	if ($item_id) {
		if (isset ( $item ['imgs'] ) && $item ['imgs']) {
			$item_img_mod = D ( 'item_img' );
			foreach ( $item ['imgs'] as $_img ) {
				$_img ['item_id'] = $item_id;
				$item_img_mod->create ( $_img );
				$item_img_mod->add ();
			}
		}
		if ($tag_list) {
			$item_tag_arr = $tag_cache = array ();
			$tag_mod = M ( 'tag' );
			foreach ( $tag_list as $_tag_name ) {
				$tag_id = $tag_mod->where ( array ('name' => $_tag_name ) )->getField ( 'id' );
				! $tag_id && $tag_id = $tag_mod->add ( array ('name' => $_tag_name ) );
				$item_tag_arr [] = array ('item_id' => $item_id, 'tag_id' => $tag_id );
				$tag_cache [$tag_id] = $_tag_name;
			}
			if ($item_tag_arr) {
				M ( 'item_tag' )->addAll ( $item_tag_arr );
				update_tag_cache ( $item_id, $tag_cache );
			}
		}
		
		M ( 'user' )->where ( array ('id' => $item ['uid'] ) )->setInc ( 'shares' );
		
		$album_mod = D ( 'album' );
		! $album_id && $album_id = $album_mod->default_album ( array ('id' => $item ['uid'], 'name' => $item ['uname'] ), $ac_id );
		$album_mod->add_item ( $item_id, $album_id, $item ['intro'] );
		
		$topic_mod = D ( 'topic' );
		$topic_mod->publish ( array ('uid' => $item ['uid'], 'uname' => $item ['uname'], 'content' => $item ['intro'], 'extra' => $item ['img'], 'src_id' => $item_id ) );
		
		return $item_id;
	} else {
		return false;
	}
}

function get_cid_by_tags($tags) {
	$def_cid = M ( 'item_cate' )->where ( array ('status' => 1, 'type' => 0 ) )->order ( 'ordid' )->getField ( 'id' );
	if (! $tags)
		return $def_cid;
	$tags = array_unique ( $tags );
	$tid_arr = M ( 'tag' )->where ( array ('name' => array ('IN', $tags ) ) )->getField ( 'id', true );
	if ($tid_arr) {
		$db_pre = C ( 'DB_PREFIX' );
		$table = $db_pre . 'item_cate_tag';
		$map = array ($table . '.cate_id' => array ('IN', $tid_arr ) );
		$map [] = array ('c.type' => 0 );
		$join = $db_pre . 'item_cate c ON c.id = ' . $table . '.cate_id';
		$order = $table . '.weight DESC';
		$cids = M ( 'item_cate_tag' )->where ( $map )->join ( $join )->order ( $order )->getField ( 'cate_id' );
	}
	if (! $cate_id) {
		return $def_cid;
	}
	return $cate_id;
}

function update_tag_cache($id, $tag_cache = '') {
	if (! is_array ( $tag_cache )) {
		$tag_ids = M ( 'item_tag' )->where ( array ('item_id' => $id ) )->getField ( 'tag_id', true );
		$tag_res = M ( 'tag' )->where ( array ('id' => array ('IN', $tag_ids ) ) )->select ();
		$tag_cache = array ();
		foreach ( $tag_res as $val ) {
			$tag_cache [$val ['id']] = $val ['name'];
		}
	}
	return D ( 'item' )->where ( array ('id' => $id ) )->setField ( 'tag_cache', serialize ( $tag_cache ) );
}

function _collect_details($iids, $mode) {
	$tb_top = _get_tb_top ();
	$req = $tb_top->load_api ( 'TaobaokeItemsDetailGetRequest' );
	$req->setFields ( 'num_iid,desc' );
	$iids && $req->setNumIids ( $iids );
	$resp = $tb_top->execute ( $req );
	$resp_items = ( array ) $resp->taobaoke_item_details;
	$item_mod = M ( 'item' );
	foreach ( $resp_items ['taobaoke_item_detail'] as $val ) {
		$val = ( array ) $val;
		$val = ( array ) $val ['item'];
		
		$data = array ();
		$data ['key_id'] = 'taobao_' . $val ['num_iid'];
		if ($mode == 1) {
			$data ['details'] = $val ['desc'];
		} elseif ($mode == 2) {
			$data ['details'] = $val ['desc'];
		} else {
			$data ['details'] = $val ['desc'];
		}
		$item_mod->where ( "key_id='{$data['key_id']}'" )->save ( $data );
	}
}

function _collect_status_one($iid, $item_id, $mode) {
	check_server ();
	$item_mod = M ( 'item' );
	$seller_id = _get_seller_id ( $iid );
	if (! $seller_id) {
		if (mode == 1) {
			$item_mod->where ( 'id=' . $item_id )->setField ( 'ordid', 999 );
		} else {
			$item_mod->where ( 'id=' . $item_id )->setField ( 'status', 0 );
		}
	}
}

function utf8_strlen($string = null) {
	preg_match_all ( "/./us", $string, $match );
	return count ( $match [0] );
}

function my_mktime($str) {
	$arr = explode ( ' ', $str );
	if (strpos ( $arr [0], "." ) > 0) {
		$arr0 = explode ( '.', $arr [0] );
	} else {
		$arr0 = explode ( '-', $arr [0] );
	}	
	$arr1 = explode ( ':', $arr [1] );
	return mktime ( $arr1 [0], $arr1 [1], $arr1 [2], $arr0 [1], $arr0 [2], $arr0 [0] );
}

function assoc_unique($arr, $key) {
	$tmp_arr = array ();
	foreach ( $arr as $k => $v ) {
		if (in_array ( $v [$key], $tmp_arr )) {
			unset ( $arr [$k] );
		} else {
			$tmp_arr [] = $v [$key];
		}
	}
	sort ( $arr );
	return $arr;
}

function _get_seller_id($iid)
{
	$item_url = 'http://item.taobao.com/item.htm?id=' . $iid;
	$s = file_get_contents($item_url);
	preg_match("/userid=([0-9]+)/", $s, $matches);
		
	if ($matches) {
        return $matches[1];
	} else {
		return false;
	}	
}

function get_user_img($displayUserNumId) {
	$url = 'http://wwc.taobaocdn.com/avatar/getAvatar.do?userId=' . $displayUserNumId . '&width=160&height=160&type=sns';
	$get_file = file_get_contents ( $url );
	$save_path = C ( 'pin_attach_path' ) . 'avatar/temp/';
	$temp_name = time () . '.jpg';
	$fp = @fopen ( $save_path . $temp_name, "w" );
	@fwrite ( $fp, $get_file );
	@fclose ( $fp );
	
	if ($displayUserNumId) {
		return $temp_name;
	} else {
		return false;
	}
}

function user_thumb($id, $img) {
	$img_path = avatar_dir ( $id );
	$avatar_size = explode ( ',', C ( 'pin_avatar_size' ) );
	$paths = C ( 'pin_attach_path' );
	
	foreach ( $avatar_size as $size ) {
		if ($paths . 'avatar/' . $img_path . '/' . md5 ( $id ) . '_' . $size . '.jpg') {
			@unlink ( $paths . 'avatar/' . $img_path . '/' . md5 ( $id ) . '_' . $size . '.jpg' );
		}
		! is_dir ( $paths . 'avatar/' . $img_path ) && mkdir ( $paths . 'avatar/' . $img_path, 0777, true );
		Image::thumb ( $paths . 'avatar/temp/' . $img, $paths . 'avatar/' . $img_path . '/' . md5 ( $id ) . '_' . $size . '.jpg', '', $size, $size, true );
	}
	
	@unlink ( $paths . 'avatar/temp/' . $img );
}

function _get_rate_list($seller_id, $iid, $bad_words, $cmt_offset, $cmt_maxlen) {
	$rate_url = 'http://rate.taobao.com/detail_rate.htm?userNumId=' . $seller_id . '&auctionNumId=' . $iid . '&showContent=2&currentPage=1&ismore=1&siteID=7';
	$source = file_get_contents ( $rate_url );
	$source = iconv ( 'GBK', 'UTF-8//IGNORE', $source );
	$source = str_replace ( 'TB.detailRate = ', '', $source );
	$rate_resp = json_decode ( $source, true );
	$rate_list = $rate_resp ['rateListInfo'] ['rateList'];
	$rate_list = assoc_unique ( $rate_list, 'rateContent' );
	foreach ( $rate_list as $key => $val ) {
		if (strpos ( $val ['displayUserNick'], "*" ) > 0) {
			unset ( $rate_list [$key] );
		}
		if (!empty($bad_words) && preg_match ( "/$bad_words/", $val ['rateContent'] )) {
			unset ( $rate_list [$key] );
		}
		$temp_len = utf8_strlen ( $val ['rateContent'] );
		if ($cmt_offset > 0 && $temp_len < $cmt_offset) {
			unset ( $rate_list [$key] );
		}
		if ($cmt_maxlen > 0 && $temp_len > $cmt_maxlen) {
			unset ( $rate_list [$key] );
		}
	}
	return $rate_list;
}

function _collect_comment_one($iid, $item_id, $item_img, $setting) {
	check_server();
	$item_mod = M ( 'item' );
	$topic_mod = D ( 'topic' );
	$seller_id = _get_seller_id ( $iid );
	if (! $seller_id) {
		if ($setting['status'] == 1) {
			$item_mod->where ( 'id=' . $item_id )->setField ( 'status', 0 );
		}
		return false;
	}
	$item_comment_mod = D ( 'item_comment' );
	$user_mod = M ( 'user' );
	if (isset($setting ['bad_words']) && !empty($setting ['bad_words'])) {
		$bad_words = str_replace ( ',', '|', $setting ['bad_words'] );
	} else {
		$bad_words = '';
	}
	$rate_list = _get_rate_list ( $seller_id, $iid, $bad_words, $setting ['cmt_offset'], $setting ['cmt_maxlen'] );
	$rate_count = count ( $rate_list );
	if ($setting ['cmt_num'] < $rate_count) {
		$rate_count = $setting ['cmt_num'];
	}
	foreach ($rate_list as $rate) {
		$time = my_mktime ( $rate ['rateDate'] );
		$cmt_taobao_time = $item_mod->where ( array ('id' => $item_id ) )->getField ( 'cmt_taobao_time' );
		if ($time <= $cmt_taobao_time) {
			return false;
		}
		if ($setting ['user_mode'] == 1) {
			$auto_user = $user_mod->where ( 'auto = 1' )->order ( 'RAND()' )->find ();
			$item_comment_mod->add ( array ('item_id' => $item_id, 'uid' => $auto_user ['id'], 'uname' => $auto_user ['username'], 'info' => $rate ['rateContent'], 'add_time' => $time ) );
			if ($setting['addc'] == 1) {
				$topic_mod->publish ( array ('uid' => $auto_user ['id'], 'uname' => $auto_user ['username'], 'content' => $rate ['rateContent'], 'extra' => $item_img, 'src_id' => $item_id ) );
			}
		} else {
			$add_user = $user_mod->where ( "username='" . $rate ['displayUserNick'] . "'" )->find ();
			if (empty ( $add_user )) {
				$userid = $user_mod->add ( array ('username' => $rate ['displayUserNick'], 'password' => md5 ( $setting ['password'] ), 'gender' => 2, 'reg_time' => time (), 'auto' => 1 ) );
				if ($userid > 0 && $setting['avatar'] == 1) {
					$userimg = get_user_img($rate ['displayUserNumId']);
					if ($userimg) {
		                user_thumb($userid, $userimg);
					}
				}
				$add_user = $user_mod->where ( "id=$userid" )->find ();
			}
			$item_comment_mod->add ( array ('item_id' => $item_id, 'uid' => $add_user ['id'], 'uname' => $add_user ['username'], 'info' => $rate ['rateContent'], 'add_time' => $time ) );
			if ($setting['addc'] == 1) {
				$topic_mod->publish ( array ('uid' => $add_user ['id'], 'uname' => $add_user ['username'], 'content' => $rate ['rateContent'], 'extra' => $item_img, 'src_id' => $item_id ) );
			}
		}
	}
}

function _collect_like_one($setting) {
	check_server ();
	$item_mod = M ( 'item' );
	$user_mod = M ( 'user' );
	$item_like = M ( 'item_like' );
	$items = $item_mod->field ( 'id,uid' )->where ( $setting ['map'] )->order ( 'RAND()' )->limit ( $setting ['pagesize'] )->select ();
	$users = $user_mod->field ( 'id,username' )->where ( 'auto = 1' )->order ( 'RAND()' )->limit ( $setting ['pagesize'] )->select ();
	for($i = 0; $i < $setting ['pagesize']; $i ++) {
		if ($items [$i] ['uid'] == $users [$i] ['id'])
			continue;
		$set = $item_like->where ( array ('item_id' => $items [$i] ['id'], 'uid' => $users [$i] ['id'] ) )->count ();
		if ($set)
			continue;
		if ($item_like->add ( array ('item_id' => $items [$i] ['id'], 'uid' => $users [$i] ['id'], 'add_time' => time () ) )) {
			$item_mod->where ( 'id=' . $items [$i] ['id'] )->setInc ( 'likes' );
			$user_mod->where ( 'id=' . $users [$i] ['id'] )->setInc ( 'likes' );
			$tag_arg = array ('uid' => $users [$i] ['id'], 'uname' => $users [$i] ['username'], 'action' => 'likeitem' );
			tag ( 'likeitem_end', $tag_arg );
		}
	}
}

function _collect_follow_one($setting) {
	check_server ();
	$user_follow_mod = M ( 'user_follow' );
	$user_mod = M ( 'user' );
	$users = $user_mod->field ( 'id' )->where ( 'auto = 1' )->order ( 'RAND()' )->limit ( $setting ['pagesize'] )->select ();
	$users1 = $user_mod->field ( 'id' )->where ( 'auto = 1' )->order ( 'RAND()' )->limit ( $setting ['pagesize'] )->select ();
	for($i = 0; $i < $setting ['pagesize']; $i ++) {
		$is_follow = $user_follow_mod->where ( array ('uid' => $users [$i] ['id'], 'follow_uid' => $users1 [$i] ['id'] ) )->count ();
		if ($is_follow)
			continue;
		$return = 1;
		$map = array ('uid' => $users1 [$i] ['id'], 'follow_uid' => $users [$i] ['id'] );
		$isfollow_me = $user_follow_mod->where ( $map )->count ();
		$data = array ('uid' => $users [$i] ['id'], 'follow_uid' => $users1 [$i] ['id'], 'add_time' => time () );
		if ($isfollow_me) {
			$data ['mutually'] = 1;
			$user_follow_mod->where ( $map )->setField ( 'mutually', 1 );
			$return = 2;
		}
		$result = $user_follow_mod->add ( $data );
		if (! $result)
			continue;
		$user_mod->where ( array ('id' => $users [$i] ['id'] ) )->setInc ( 'follows' );
		$user_mod->where ( array ('id' => $users1 [$i] ['id'] ) )->setInc ( 'fans' );
		D ( 'user_msgtip' )->add_tip ( $users1 [$i] ['id'], 1 );
	}
}
?>




返回顶部
顶部