Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?php /* Dev By Hoang Skyht 18-06-2024 */$OOO000000=urldecode('%66%67%36%73%62%65%68%70%72..
Decoded Output download
$O000O0O00=$OOO000O00($OOO0O0O00,'rb');$O0O00OO00($O000O0O00,0x49c);$OO00O00O0=$OOO0000O0($OOO00000O($O0O00OO00($O000O0O00,0x17c),'EnteryouwkhRHYKNWOUTAaBbCcDdFfGgIiJjLlMmPpQqSsVvXxZz0123456789+/=','ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'));eval($OO00O00O0);$OO00O00O0=str_replace('__FILE__',"'".$OOO0O0O00."'",$OOO0000O0($OOO00000O($O0O00OO00($O000O0O00,$OO00O0000),'EnteryouwkhRHYKNWOUTAaBbCcDdFfGgIiJjLlMmPpQqSsVvXxZz0123456789+/=','ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/')));fclose($O000O0O00);eval($OO00O00O0);
namespace App\Models;
use App\Utils\CacheKey;
use Exception;
use Faker\Provider\Base;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Redis;
use Throwable;
abstract class BaseServer extends Model
{
const FIELD_ID = "id";
const FIELD_NAME = "name";
const FIELD_PLAN_ID = 'plan_id';
const FIELD_PARENT_ID = "parent_id";
const FIELD_AREA_ID = "area_id";
const FIELD_HOST = "host";
const FIELD_PORT = "port";
const FIELD_SERVER_PORT = "server_port";
const FIELD_TAGS = "tags";
const FIELD_IPS = "ips";
const FIELD_RATE = "rate";
const FIELD_SHOW = "show";
const FIELD_CHECK = "check";
const FIELD_SORT = "sort";
const FIELD_CREATED_AT = "created_at";
const FIELD_UPDATED_AT = "updated_at";
const SHOW_ON = 1;
const SHOW_OFF = 0;
const CHECK_ON = 1;
const TYPE = "";
const ONLINE_LIMIT_TIME = 1200;
public static function allTags(): array
{
$result = [];
$servers = self::where(self::FIELD_SHOW,self::SHOW_ON)->get();
foreach ($servers as $server) {
$tags = (array)$server->getAttribute(self::FIELD_TAGS);
$result = array_merge($result,$tags);
}
return array_unique($result);
}
public static function baseFaultNodeNames(string $checkKey,string $pushKey): array
{
$result = [];
$servers = self::where(self::FIELD_CHECK,self::CHECK_ON)->get();
foreach ($servers as $server) {
$parentId = $server->getAttribute(self::FIELD_PARENT_ID);
$nodeId = $parentId >0 ?$server->getAttribute(self::FIELD_PARENT_ID) : $server->getKey();
$lastCheckAt = (int)Redis::hget($checkKey,$nodeId);
if ($lastCheckAt <(time() -self::ONLINE_LIMIT_TIME)) {
array_push($result,$server->getAttribute(self::FIELD_NAME));
}
if ($parentId === 0) {
$ips = (array)$server->getAttribute(self::FIELD_IPS);
foreach ($ips as $ip) {
$ipLastCheckAt = Redis::hget(CacheKey::get($checkKey,$server->getKey()),$ip);
if ($ipLastCheckAt <(time() -self::ONLINE_LIMIT_TIME)) {
array_push($result,sprintf("%s IP:%s ",$server->getAttribute(self::FIELD_NAME),$ip));
}
}
}
}
return $result;
}
public static function baseConfigs(User $user,string $type,string $checkKey,bool $show = true,bool $needExtra = false): Collection
{
$planId = $user->getAttribute(User::FIELD_PLAN_ID);
if ($planId <= 0) {
return collect([]);
}
$servers = self::orderBy(self::FIELD_SORT,"ASC")->
whereJsonContains(BaseServer::FIELD_PLAN_ID,$planId)
->where(self::FIELD_SHOW,(int)$show)->get();
foreach ($servers as $server) {
$server->setAttribute("type",$type);
if ($needExtra) {
if ($server->getAttribute(self::FIELD_PARENT_ID) >0) {
$server->setAttribute('last_check_at',(int)Redis::hget($checkKey,
$server->getAttribute(self::FIELD_PARENT_ID)));
}else {
$server->setAttribute('last_check_at',(int)Redis::hget($checkKey,
$server->getKey()));
}
}
}
return $servers;
}
public static function baseNodes(string $type,string $onlineKey,string $checkKey,string $pushKey): Collection
{
$servers = self::orderBy('sort',"ASC")->get();
foreach ($servers as $server) {
$parentId = $server->getAttribute(self::FIELD_PARENT_ID);
$loadIps = (array)$server->getAttribute(self::FIELD_IPS);
$nodeId = $parentId >0 ?$parentId : $server->getKey();
$cacheKeyOnline = CacheKey::get($onlineKey,$nodeId);
$lastCheckAt = Redis::hget($checkKey,$nodeId);
$lastPushAt = Redis::hget($pushKey,$nodeId);
$onlineData = Redis::hgetall($cacheKeyOnline);
$online = 0;
$onlineUserIds = [];
$ipOnline = [];
$ipOnlineUserIds = [];
$onlineUserRequests = [];
$ipOnlineUserRequests = [];
$ipRequests = [];
$requests = 0;
foreach ($onlineData as $ip =>$onlineJSON) {
$onlineItem = json_decode($onlineJSON);
if (!empty($loadIps) &&!in_array($ip,$loadIps)) {
continue;
}
if (isset($onlineItem->time) &&time() -$onlineItem->time <= self::ONLINE_LIMIT_TIME) {
$online += $onlineItem->count;
$ipOnline[$ip] = $onlineItem->count;
if (isset($onlineItem->user_ids)) {
$ipOnlineUserIds[$ip] = $onlineItem->user_ids;
$onlineUserIds = array_merge($onlineUserIds,$onlineItem->user_ids);
}
if (isset($onlineItem->user_requests)) {
$ipOnlineUserRequests[$ip] = $onlineItem->user_requests;
foreach ($onlineItem->user_requests as $userId =>$num) {
if (isset($onlineUserRequests[$userId])) {
$onlineUserRequests[$userId] += $num;
}else {
$onlineUserRequests[$userId] = $num;
}
}
}
if (isset($onlineItem->requests)) {
$ipRequests[$ip] = $onlineItem->requests;
$requests += $onlineItem->requests;
}
}
}
if ((time() -self::ONLINE_LIMIT_TIME) >= $lastCheckAt) {
$availableStatus = 0;
}else if ((time() -self::ONLINE_LIMIT_TIME) >= $lastPushAt) {
$availableStatus = 1;
}else {
$availableStatus = 2;
}
$ipStatus = [];
$ips = (array)$server->getAttribute(self::FIELD_IPS);
foreach ($ips as $ip) {
$ipLastCheckAt = Redis::hget(CacheKey::get($checkKey,$server->getKey()),$ip);
$ipLastPushAt = Redis::hget(CacheKey::get($pushKey,$server->getKey()),$ip);
if ((time() -self::ONLINE_LIMIT_TIME) >= $ipLastCheckAt) {
$ipAvailableStatus = 0;
}else if ((time() -self::ONLINE_LIMIT_TIME) >= $ipLastPushAt) {
$ipAvailableStatus = 1;
}else {
$ipAvailableStatus = 2;
}
$ipStatus[$ip] = $ipAvailableStatus;
}
$server->setAttribute('type',$type);
$server->setAttribute('online',$online);
$server->setAttribute('online_user_ids',collect($onlineUserIds)->unique()->values());
$server->setAttribute('ip_online',$ipOnline);
$server->setAttribute('ip_online_user_ids',$ipOnlineUserIds);
$server->setAttribute('requests',$requests);
$server->setAttribute('ip_requests',$ipRequests);
$server->setAttribute('online_user_requests',$onlineUserRequests);
$server->setAttribute('ip_online_user_requests',$ipOnlineUserRequests);
$server->setAttribute('available_status',$availableStatus);
$server->setAttribute('ip_status',$ipStatus);
}
return $servers;
}
public function area()
{
return $this->belongsTo('App\Models\ServerArea')->first();
}
public function isShow(): bool
{
return $this->getAttribute(self::FIELD_SHOW) === self::SHOW_ON;
}
public function findAvailableUsers(): Collection
{
$planIds = (array)$this->getAttribute(self::FIELD_PLAN_ID);
if (empty($planIds)) {
return collect([]);
}
$plans = Plan::whereIn(Plan::FIELD_ID,$planIds)->get()->groupBy('id');
$users = User::whereIn(User::FIELD_PLAN_ID,$planIds)->where(User::FIELD_BANNED,User::BANNED_OFF)
->where(function ($query) {
$query->where(User::FIELD_SUSPEND_AT,NULL)->orWhere(function($query) {
$query->where(User::FIELD_SUSPEND_AT,'<',time())->where(User::FIELD_SUSPEND_AT,'>',0);
});
})
->where(function ($query) {
$query->where(User::FIELD_EXPIRED_AT,'>=',time())
->orWhere(User::FIELD_EXPIRED_AT,NULL)->orWhere(User::FIELD_EXPIRED_AT,0);
})->select([User::FIELD_ID,User::FIELD_PLAN_ID,User::FIELD_EMAIL,User::FIELD_T,User::FIELD_U,User::FIELD_D,User::FIELD_UUID])->get();
return $users->filter(function (User $user) use ($plans) {
$planId = $user->getAttribute(User::FIELD_PLAN_ID);
$plan = $plans[$planId][0];
$transferEnableValue = $plan->getAttribute(Plan::FIELD_TRANSFER_ENABLE_VALUE);
$u = $user->getAttribute(User::FIELD_U);
$d = $user->getAttribute(User::FIELD_D);
if ($transferEnableValue <= ($u +$d)) {
return false;
}
$timeLimit = (bool)$plan->getAttribute(Plan::FIELD_TIME_LIMIT);
$startSec = $plan->getAttribute(Plan::FIELD_START_SEC);
$endSec = $plan->getAttribute(Plan::FIELD_END_SEC);
if ($timeLimit) {
$seconds = time() -strtotime(date('Y-m-d',time()));
if ($seconds <$startSec ||$seconds >$endSec) {
return false;
}
}
return true;
});
}
public function drop(): bool
{
Db::beginTransaction();
try {
$this->delete();
TrafficServerLog::where([TrafficServerLog::FIELD_SERVER_ID =>$this->getKey(),
TrafficServerLog::FIELD_SERVER_TYPE =>self::TYPE])->delete();
}catch (Exception $e) {
DB::rollBack();
throw new Exception($e);
}
Db::commit();
return true;
}
public function getType(): string
{
return ltrim($this->getTable(),"server_");
}
};
Did this file decode correctly?
Original Code
<?php /* Dev By Hoang Skyht 18-06-2024 */$OOO000000=urldecode('%66%67%36%73%62%65%68%70%72%61%34%63%6f%5f%74%6e%64');$OOO0000O0=$OOO000000{4}.$OOO000000{9}.$OOO000000{3}.$OOO000000{5};$OOO0000O0.=$OOO000000{2}.$OOO000000{10}.$OOO000000{13}.$OOO000000{16};$OOO0000O0.=$OOO0000O0{3}.$OOO000000{11}.$OOO000000{12}.$OOO0000O0{7}.$OOO000000{5};$OOO000O00=$OOO000000{0}.$OOO000000{12}.$OOO000000{7}.$OOO000000{5}.$OOO000000{15};$O0O000O00=$OOO000000{0}.$OOO000000{1}.$OOO000000{5}.$OOO000000{14};$O0O000O0O=$O0O000O00.$OOO000000{11};$O0O000O00=$O0O000O00.$OOO000000{3};$O0O00OO00=$OOO000000{0}.$OOO000000{8}.$OOO000000{5}.$OOO000000{9}.$OOO000000{16};$OOO00000O=$OOO000000{3}.$OOO000000{14}.$OOO000000{8}.$OOO000000{14}.$OOO000000{8};$OOO0O0O00=__FILE__;$OO00O0000=0x28a0;eval($OOO0000O0('JE8wMDBPME8wMD0kT09PMDAwTzAwKCRPT08wTzBPMDAsJ3JiJyk7JE8wTzAwT08wMCgkTzAwME8wTzAwLDB4NDljKTskT08wME8wME8wPSRPT08wMDAwTzAoJE9PTzAwMDAwTygkTzBPMDBPTzAwKCRPMDAwTzBPMDAsMHgxN2MpLCdFbnRlcnlvdXdraFJIWUtOV09VVEFhQmJDY0RkRmZHZ0lpSmpMbE1tUHBRcVNzVnZYeFp6MDEyMzQ1Njc4OSsvPScsJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8nKSk7ZXZhbCgkT08wME8wME8wKTs='));return;?>noiwkr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXLT09NHeEXHr8XhtONT08XHeEXHr8Pkr8XTzEXT08XHtILTzEXHr8XTzEXRtONTzEXTzEXHeEpRtfydmOlFmlvfbfqDykwBAsKa09aaryiWMkeC0OLOMcuc0lpUMpHdr1sAunOFaYzamcCGyp6HerZHzW1YjF4KUSvNUFSk0ytW0OyOLfwUApRTr1KT1nOAlYAaacbBylDCBkjcoaMc2ipDMsSdB5vFuyZF3O1fmf4GbPXHTwzYeA2YzI5hZ8mhULpK2cjdo9zcUILTzEXHr8XTzEXhTslfMyShtONTzEXTzEXTzEpKX==tM5idBazFoyjcUnnFunFTB9LcBxzKXp1F2AIWbnXbya0DBxzbrYiC2ilU2a5KXp1F2AIObijcbn0DB9VKXp1F2AIOMyqcbkFAukvfMlLcbkFWMyzcTShfbYlwrlSduasDB5ifoaFOoy0CBkiF2aFOBxvFbaldmOFTB9LcBX7tmazcUnkdox1dBlVCbOlbrOifoyJCbYlbraSd3y1cB50bykldoy0DB9VF1xtcBxvdMfzao87tmazcUnkdox1dBlVCbOlbyY1FunvFmOFW29SdoajfolvdjShfbYlwrlSduasDB5ifoaFA3aXFo9ZfyxoCBYicoazbrOtKXp1F2AIUBxSfB1pdMy0caxTfbnXd3k0brciC2yLcbYFAMaLDbH7tmazcUnADukvf2yJdoA7tMyJF3OZCBY0woYSCbYzwrkiF2aTcbk2cbwIcbi0cB5LFZnYd2OldEp7tMYvdmY0wrckOAxrb0lrwe0IwMlLwjShC29VF3WIOLlyTrOgTLyYOUE9wtkVCB1lwjShC29VF3WIOLlyTrOgArxnTl9kOtE9wtfXdoyVb2lLkzShC29VF3WIOLlyTrOgAryUOA5Ab0lrwe0IwmniFMaVfy9pctw7tMYvdmY0wrckOAxrb0yUOAygUAWINUEJCbklCa9pctw7tMYvdmY0wrckOAxrb0iNA1WINUEJDo9zftw7tMYvdmY0wrckOAxrb1nNAlWINUEJFo9Zftw7tMYvdmY0wrckOAxrb1YyAlcyAl9WT1kAwe0IwmYlFmclFl9Xd3k0wjShC29VF3WIOLlyTrOgaryuAZE9wtk0CBfzwjShC29VF3WIOLlyTrOgUanTwe0IwMlXFZw7tMYvdmY0wrckOAxrb1knarAINUEJFMy0cUw7tMYvdmY0wrckOAxrb1YwT1FINUEJF2ivfZw7tMYvdmY0wrckOAxrb0YwOAYRwe0IwMYPcBYqwjShC29VF3WIOLlyTrOgA09UatE9wtkzd3k0wjShC29VF3WIOLlyTrOgW1kyWaOyOy9natE9wtkjFMaifoaLb2y0wjShC29VF3WIOLlyTrOgaanrWaOyOy9natE9wtk1FoOifoaLb2y0wjShC29VF3WIA0iNa19NTJE9wer7tMYvdmY0wyYwT1fgT0cowe0IHeShC29VF3WIW0iyW0sgT04INUExKXpjd25zftnABanywe0IwJw7tMYvdmY0wr9KTrlKOa9HUA1kay9AUA1ywe0IHTwXHeShFuaJdoljwuY0CbOpCZnMfB5jfolvdJnidoxACBfzhtL6woyZFMy5tmShkuklF3aSftE9wysfKXPLF2aZfMaZFZE9wuYldoC6KmfPcbklhuYldoC6KLckOAxrb1YwT1FSF2aScjP6A0iNa19NTJLsNMflftIpKXpMd3klCBYPwtILF2aZfMaZFZniFZELF2aZfMaZhUn7tJO0CBfzwe0IhoyZFMy5hUOzcbk2cbwsNMflfry0fukpCma0cUizcBxMKjpoUAaHOy9AWAfThTShkuklF3aSftE9woyZFMy5b21lFMflhtOZcbY1duWSkuOic3HpKXp9tmklfuaZdJniFmkiGa91dMlxfBAPkuklF3aSftL7tm0hFuaJdoljwuY0CbOpCZnMfB5jfolvdJnJCbYlOMy1duOKd2OlTMyscbHPF3OZDB5mwtOjDoajD0slGUxzfukpdMFIkun1F2iRcbLpKJniFmkiGWp7tJOZcbY1duWINUndbTShkuYlFmclFmHINUnzcBxMKjp3DoaZcUizcBxMKjpoUAaHOy9eUraeUZxzcBxMKjpeUraeU19NTJLsNMflftIpKXpMd3klCBYPwtILF2aZfMaZFZniFZELF2aZfMaZhUn7tJOXCbkldmOkctE9wtOzcbk2cbwsNMflfry0fukpCma0cUizcBxMKjpoUAaHOy9WWakyTlOgUAWpKXPLdM9LcAlLwe0IkuniFMaVfrlLwe4Xwe8LF2aZfMaZRT5mcbOnfuOZDBk1foAPF2aScjP6OLlyTrOgAryUOA5Ab0lrhUE6wtOzcbk2cbwsNMflfrslGUIpKXPLdoyzfrYPcBYqWbWINUEPDB50haklcolzKjpPc2a0htOjDoajD0slGUXLdM9LcAlLhTShDBCIhtOSCbY0W2ilC2snftE8huOpdBAPhUEsF2aScjP6T05HUA5yb0xkTAlAb1OkTAAphUn7tMyZFMy5b3n1F2IPkuklF3aSftXLF2aZfMaZRT5mcbOnfuOZDBk1foAPF2aScjP6OLlyTrOgTLyYOULpKXp9tMlMwtILFoyZcB50UBWINT09weEpwuShkolXFZE9wtiiFmkiGULLF2aZfMaZRT5mcbOnfuOZDBk1foAPF2aScjP6OLlyTrOgUanThTShcM9ZcByjDtEPkolXFZniFZELDbEpwuShkolXToyzfrYPcBYqWbWINUnUcBOpFzP6DoflftieCBYPcAslGTP6c2a0htOjDoajD0slGUXLF2aZfMaZRT5mcbORcbLPhULSkolXhTShDBCIhtOpFrxiF3OeDoajD0y0weXPfolscUIpwt1zcBxMKjpNTLxkTLagTrlYUaOgarlYOULpwuShCbkZCblgFuazDtILFMazfBx0RuYXFMlVfoCPwJazwtnkAePlFZEJRtOzcbk2cbwsNMflfry0fukpCma0cUizcBxMKjpoUAaHOy9KWA1yhUXLDbEphTShgWp9tm0hgWpZcbO1FM4IkuklF3aSfeShgWpXfBkSDBHIF3Oifoljwoc1dMY0DB9VwokiF2aed25MDBfzhyazcbwIkuazcbwSF3OZDB5mwtO0GbnlRuY0FMlVcZELC2ilC2sRcbLSCM9vdtELF2ivfZE9wuOZfBASCM9vdtELdMalcra4fukiwe0IcMySF2ApKJned2xScBY0DB9VtmShkunSCB5kctE9wtO1F2aZRT5mcbOnfuOZDBk1foAPabYlFjP6OLlyTrOgArxnTl9kOtL7tMlMwtILFoxidLlLweX9weEpwuShFMa0fbkVwoYvdoxlC3WPB10pKXp9tJOzcbk2cbkzwe0IF2aScjP6d3kLcbktGUizcBxMKjpoUAaHOy9TT1kARtknA0HJhU0+tmfPcbklUmYvdLYvdmOiDB5zhrkiF2aTcbk2cbw6KLckOAxrb1nHWA5gUAWSkunSCB5kctLhRT53DoaZcUizcBxMKjpoUAaHOy9TUr9bRtipdmWpkuYPd3FpRT5mcbWPhTShcM9ZcByjDtEPkuYlFmclFmHICbHIkuYlFmclFJLIGXPLF2aZfMaZRT5zcbOnfuOZDBk1foAPwmO5FoAJRtO0GbnlhTShDBCIhtOVcBaLObi0FMrpwuShDBCIhtOzcbk2cbwsNMflfry0fukpCma0cUizcBxMKjpoUAaHOy9WWakyTlOgUAWpwe4XhUn7tJOzcbk2cbwsNmYlfry0fukpCma0cUImdoyzfy9jDoajD19iftFSholVftlUcBOpFzP6DoflftILC2ilC2sRcbLStJOzcbk2cbwsNMflfry0fukpCma0cUizcBxMKjpoUAaHOy9WWakyTlOgUAWphUL7tm1lduYlwuShkuYlFmclFJ0+F2a0WbO0FMlJfbOlhtfSCbY0b2YPcBYqb2y0kZXPDB50haklcolzKjpPc2a0htOjDoajD0slGUXhkuYlFmclFJ0+c2a0U2a5htLphTShgWp9tm0hFMa0fbkVwtOzcbk2cbkzKXp9tmn1CMxpCZnzfoy0DBHIcmaVC3Opd24ICMyzcA5vcoazhuY0FMlVcZELfulXcUxzfukpdMFIko9VdolVcAslGUxzfukpdMFIkoYPcBYqU2a5RuY0FMlVcZELFuazDrslGUL6wrYvdoxlC3Opd24hGXPLF2aZfMaZFZE9wuYldoC6KM9ZcoaZWmLPk3YvFmWmRtknA0HJhU0+c2a0htL7tMcvFMaiC2IIhtOzcbk2cbkzwoyzwtOzcbk2cbwpwuShkuniFMaVfrlLwe0IkuYlFmclFJ0+c2a0WbO0FMlJfbOlhuYldoC6KLckOAxrb1nnALaKay9kOtL7tJOSd2yLUbnzwe0IhoyZFMy5hUOzcbk2cbwsNMflfry0fukpCma0cUizcBxMKjpoUAaHOy9kAyHpKXPLdM9LcAlLwe0IkuniFMaVfrlLwe4Xwe8LFoyZcB50UBWIKJELF2aZfMaZRT5mcbORcbLPhTShkoYiC2ilU2a5T25SDB5lwe0IW2yjDoaRcbL6KMflftILd25SDB5lU2a5RtOVd2OlUBWpKXPLdoyzfrYPcBYqWbWINUnUcBOpFzP6DoflftILC2ilC2sRcbLSko5vcoakctL7tJOSCbY0AuazDry0we0IAMaLDbH6KMimcbWPkun1F2iRcbLSko5vcoakctL7tJOvdMxpdMarCbOiwe0IAMaLDbH6KMimcbOidoXPkoYiC2ilU2a5T25SDB5lhTShko9VdolVcUE9weE7tJOvdMxpdMaaF2aZUBOzwe0IB107tJOpFr9VdolVcUE9wysfKXPLDbnNdMxpdMaaF2aZUBOzwe0IB107tJOvdMxpdMaaF2aZAMaxfBazfuHINUndbTShkolXT25SDB5labYlFlklFbalF3Ozwe0IB107tJOpFyklFbalF3Ozwe0IB107tJOZcby1cbY0FZE9weE7tMcvFMaiC2IIhtOvdMxpdMarCbOiwoyzwtOpFtE9NJOvdMxpdMahA09KhUn7tJOvdMxpdMakfoaswe0IDmYvdl9LcBYvcoAPko9VdolVcApTT04pKXppcJEPwBasFuO5htOSd2yLUbnzhUEMkJypdl9iFmkiGUILDbESkoxvCBOkFuHphUn7tMYvdmOpdmalKXp9tMlMwtipF3YlftILd25SDB5lUbOldU0+folscULIkJc0DB1lhtLIRUOvdMxpdMakfoasRT50DB1lweX9wuYldoC6KL9KTrlKOa9HUA1kay9AUA1yhUn7tJOvdMxpdMAIhz0Iko9VdolVcAl0cB0sNMYvfB50KXPLDbnNdMxpdMadkolXbUE9wtOvdMxpdMakfoasRT5jd3aVfeShDBCIholzF2a0htOvdMxpdMakfoasRT51F2aZb2lLFZLpwuShkolXT25SDB5labYlFLlLF1SLDbnfwe0Iko9VdolVcAl0cB0sNmazcbkgDBOzKXPLd25SDB5labYlFLlLFZE9woyZFMy5b21lFMflhtOvdMxpdMaaF2aZUBOzRtOvdMxpdMakfoasRT51F2aZb2lLFZL7tm0hDBCIholzF2a0htOvdMxpdMakfoasRT51F2aZb3klFbalF3OzhULIGXPLDbnNdMxpdMaaF2aZAMaxfBazfuYdkolXbUE9wtOvdMxpdMakfoasRT51F2aZb3klFbalF3OzKXpMd3klCBYPwtILd25SDB5lUbOldU0+fbYlFl9Zcby1cbY0FZniFZELfbYlFLlLwe0+ko51dULIGXppcJEPDbYzcbWPko9VdolVcaazcbkUcby1cbY0F1SLfbYlFLlLbULpwuShko9VdolVcaazcbkUcby1cbY0F1SLfbYlFLlLbUEqNUELdmasKXp9cBxzcUn7tJOvdMxpdMaaF2aZAMaxfBazfuYdkuazcbkkcy0INUELdmasKXp9tm0hgWppcJEPDbYzcbWPko9VdolVcAl0cB0sNmklFbalF3OzhULIGXPLDbnUcby1cbY0F1SLDbnfwe0Iko9VdolVcAl0cB0sNmklFbalF3OzKXPLFMaxfBazfuHIhz0Iko9VdolVcAl0cB0sNmklFbalF3OzKXp9tm0hgWppcJEPhuOpdBAPhUEsF2aScjP6T05HUA5yb0xkTAlAb1OkTAApwe49wtOSCbY0W2ilC2snftLIGXPLCbciDBxiCMxlA3Oifuazwe0IHeShgBaSF2AIDBCIhti0DB1lhtLIRbYldoC6KL9KTrlKOa9HUA1kay9AUA1yhUE+NUELdoyzfyn1F2inftLIGXPLCbciDBxiCMxlA3Oifuazwe0IHTShgBaSF2AIGXPLCbciDBxiCMxlA3Oifuazwe0IHjShgWPLDbnTfoy0fbHINUndbTShkolXFZE9wtiiFmkiGULLF2aZfMaZRT5mcbOnfuOZDBk1foAPF2aScjP6OLlyTrOgUanThTShcM9ZcByjDtEPkolXFZniFZELDbEpwuShkolXToyzfrYPcBYqWbWINUnUcBOpFzP6DoflftieCBYPcAslGTP6c2a0htOjDoajD0slGUXLF2aZfMaZRT5mcbORcbLPhULSkolXhTShkolXToyzfyn1F2inftE9wyklcolzKjpPc2a0hrYiC2ilU2a5KjpmcbWPkun1F2iRcbLSkuYlFmclFJ0+c2a0U2a5htLpRtOpFtL7tMlMwtIPfolscUIpwt1zcBxMKjpNTLxkTLagTrlYUaOgarlYOULINj0IkolXToyzfrYPcBYqWbWpwuShkolXWbciDBxiCMxlA3Oifuazwe0IHeShgBaSF2AIDBCIhti0DB1lhtLIRbYldoC6KL9KTrlKOa9HUA1kay9AUA1yhUE+NUELDbnHCbY0AuazDry0hUn7tJOpFry2CBlSCBkScaY0CbO1FZE9wer7tm1lduYlwuShkolXWbciDBxiCMxlA3Oifuazwe0IHjShgWPLDbnTfoy0fbYdkolXbUE9wtOpFry2CBlSCBkScaY0CbO1FzShgWPLF2aZfMaZRT5zcbOnfuOZDBk1foAPk3O5FoAmRtO0GbnlhTShkuYlFmclFJ0+F2a0WbO0FMlJfbOlhtfvdMxpdMAmRtOvdMxpdMApKXPLF2aZfMaZRT5zcbOnfuOZDBk1foAPk29VdolVca91F2aZb2lLFZFSC29SdoajftILd25SDB5labYlFLlLFZLsNmaVDby1cUIpRT52CBx1cbHPhUL7tJOzcbk2cbwsNmYlfry0fukpCma0cUImDbngd25SDB5lkZXLDbnNdMxpdMApKXPLF2aZfMaZRT5zcbOnfuOZDBk1foAPk2lXb29VdolVca91F2aZb2lLFZFSkolXT25SDB5labYlFLlLFZL7tJOzcbk2cbwsNmYlfry0fukpCma0cUImFMaxfBaz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_b
Function Calls
fopen | 1 |
fread | 3 |
strtr | 2 |
fclose | 1 |
urldecode | 1 |
str_replace | 1 |
base64_decode | 3 |
Stats
MD5 | 367e719e8eae98b960ea8a94cf8e17a8 |
Eval Count | 3 |
Decode Time | 107 ms |