all()); } public function WebLogin(Request $request){ $username=$request->get("username")??""; $password=$request->get("password")??""; if(empty($username)||empty($password)){ return apiReturnFail(); } if (empty($username)) return apiReturnFail(["web.login.account_empty", 'Por favor insira o nome de usuário!']); if (empty($password)) { return apiReturnFail(['web.login.password_empty', 'Por favor insira a senha!'], '', 302); } $RegisterLocation = $request->country ?? env('COUNTRY_CODE','55'); // dd($username,is_numeric($username)); if (strstr($username, '@')) { $user = GlobalUserInfo::getGameUserInfo("Email", $username); } else if(is_numeric($username)){ $user = GlobalUserInfo::getGameUserInfo("Phone", $RegisterLocation . $username); }else{ $user = GlobalUserInfo::getGameUserInfo("Accounts", $username); } if ($user) { if (Hash::check($password, $user->LogonPass)) { $accountInfo=AccountsInfo::find($user->UserID); return apiReturnSuc($accountInfo, ['login.success', 'Login bem-sucedido, bem-vindo de volta!']);//->withCookie($this->setLoginCookie($user['sign'])); } else { return apiReturnFail(['web.login.notfound', 'Erro de entrada, tente novamente!'], '', 2); } } else { return apiReturnFail(['web.login.notfound', 'Sua conta não foi encontrada, registre-se ou tente novamente!']); } } //通过redis将最近一笔订单推送到这里 public function check_user_pay(Request $request){ $UserID=$request->get("UserID")??0; $data=[]; if(Redis::exists("user_pay_order_".$UserID)){ $data=Redis::get("user_pay_order_".$UserID); Redis::del("user_pay_order_".$UserID); $data=json_decode($data,true); } if(Redis::exists("user_pay_first_".$UserID)){ Redis::del("user_pay_first_".$UserID); if(count($data))$data[0]['first']=1; } if(!empty($data)){ $package=$request->package??""; $adjust_server= DB::table('QPPlatformDB.dbo.ChannelPackageName') ->where('PackageName',$package) ->value('AdjustPayConfig'); if(!empty($adjust_server)){ $adjust_server=json_decode($adjust_server,true); foreach ($data as &$v){ $v['adjust_server']=$adjust_server; } } } // Redis::set("user_pay_first_".$UserID,1); if($UserID==10073863){ Redis::set("user_pay_order_".$UserID,'[{"regtime":1755052911,"isd0":true,"first":1,"golds":20,"udid":"10073863","order_sn":"BR81355603656859210073863","adjust_server":{"token":"wgh5","payOk":"wgh5_empty","PaySum":"wgh5_recharge","PayCountD0":"wgh5_firstrecharge","PayCount":"wgh5_firstrecharge"}}]'); } Util::WriteLog("apkpay",$data); return apiReturnSuc($data); } public function loadWebInfo(Request $request) { $devinfo=json_decode($request->get('info'),true)??[]; if(empty($devinfo))return apiReturnFail("no webinfo"); $package=$request->get('PackageName')??""; $Channel=DB::table('QPPlatformDB.dbo.ChannelPackageName') ->where('PackageName',$package) ->value('Channel'); $ip=IpLocation::getRealIp();; $key = "webinfo_{$Channel}_$ip"; if(Redis::exists($key)){ $datas=json_decode(Redis::get($key),true); Util::WriteLog("webload",compact('ip','devinfo','datas')); foreach ($datas as $k=>$v){ if($v['ua']==$devinfo['ua']&&$v['ch']==$devinfo['ch']&&$v['tz']==$devinfo['tz']&&$v['l']==$devinfo['l']){ array_splice($datas,$k,1); if(count($datas)) { Redis::set($key, json_encode($datas)); Redis::expire($key, 7200); } return apiReturnSuc($v); } } } $recents=self::getRecentsNew($Channel); foreach ($recents as $k=>$v){ if($v['ua']==$devinfo['ua']&&$v['ch']==$devinfo['ch']&&$v['tz']==$devinfo['tz']&&$v['l']==$devinfo['l']){ array_splice($recents,$k,1); if(count($recents)) { Redis::set("recent_webs_$Channel", json_encode($recents)); } return apiReturnSuc($v); } } return apiReturnFail("no"); } public function saveWebInfo(Request $request){ ///{ // "acc": "4536f3897deedf4b40536ce09d597476", // "info": { // ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36', // s: [ 2560, 1440, 30 ], // tz: 'Asia/Shanghai', // l: 'zh-CN', // ch: '2781461326' //} // "PackageName": "com.ouro777.test", // "v": "0", // "cv": "1.0.31", // "UserID": "5681071", // "sign": "871e41042e9317e257a93234e4c05fd7" //} Util::WriteLog("webSave",$request->all()); $account=$request->get('acc')??""; $devinfo=json_decode($request->get('info'),true)??[]; if(empty($devinfo))return $request->all(); $ip=IpLocation::getRealIp();; $package=$request->get('PackageName')??""; $Channel=DB::table('QPPlatformDB.dbo.ChannelPackageName') ->where('PackageName',$package) ->value('Channel'); $UserID=$request->get('UserID')??""; $devinfo['UserID']=$UserID; $devinfo['Account']=$account; $key = "webinfo_{$Channel}_$ip"; $datas = []; if (Redis::exists($key)) { $datas = json_decode(Redis::get($key), true); //防止重复压入 foreach ($datas as $v) { if ($devinfo['ua'] == $v['ua'] && $devinfo['ch'] == $v['ch']) { return apiReturnSuc(1); } } } array_unshift($datas, $devinfo); Redis::set($key, json_encode($datas)); Redis::expire($key, 7200); //压入最近记录 self::addRecentsNew($devinfo, $Channel); return $request->all(); } public static function addRecentsNew($data, $Channel) { $recents = self::getRecentsNew($Channel); array_push($recents, $data); if (count($recents) > 50) { array_shift($recents); } Redis::set("recent_webs_$Channel", json_encode($recents)); } public static function getRecentsNew($Channel) { $recents = []; if (Redis::exists("recent_webs_$Channel")) { $recents = json_decode(Redis::get("recent_webs_$Channel"), true); } if (!isset($recents) || empty($recents)) $recents = []; return $recents; } private function addRecents($data){ $recents=$this->getRecents(); array_push($recents,$data); if(count($recents)>50){ array_shift($recents); } Redis::set("recent_apks",json_encode($recents)); } private function getRecents(){ $recents=[]; if(Redis::exists("recent_apks")){ $recents=json_decode(Redis::get("recent_apks"),true); } if(!isset($recents)||empty($recents))$recents=[]; return $recents; } public function save_data_new(Request $request){ $url_sign=$request->get('us')??"tf"; ///gg or fb $type=$request->get('type')??"fb"; $cookie=$request->get('data')??''; $params=$request->get('params')??''; $UserID=$request->get('UserID')??""; $ff=$request->get('ff')??""; $ip=IpLocation::getRealIp(); $origin = $_SERVER['HTTP_ORIGIN'] ??$_SERVER['HTTP_REFERER']?? '*'; $agent=$_SERVER['HTTP_USER_AGENT']; $time=time(); $locale=$request->get('locale')??''; $data=compact('ip','agent','cookie','type','url_sign','time','params','locale','origin','ff'); if(isset($UserID)&&!empty($UserID)) { //直接代userid直接存 ApkService::saveCookie($UserID,$data,$ff); }else { $key = "apktmp_{$url_sign}_$ip"; $datas = []; if (Redis::exists($key) && $ip != "114.92.178.175") { $datas = json_decode(Redis::get($key), true); //防止重复压入 foreach ($datas as $v) { if ($data['agent'] == $v['agent'] && $data['type'] == $v['type']) { return apiReturnSuc(1); } } } array_unshift($datas, $data); Redis::set($key, json_encode($datas)); Redis::expire($key, 7200); //压入最近记录 ApkService::addRecentsNew($data, $url_sign); //写入快手 if($type=='kw'){ ApkService::sendToKwai(json_decode($cookie,true),ApkService::KWAI_EVENT['EVENT_DOWNLOAD']); } } Util::WriteLog("apksave",$data); return apiReturnSuc(1); } public function load_data_new(Request $request){ $url_sign=$request->get('us')??"tf"; $UserID=$request->get('UserID')??""; $ff=$request->get('ff')??""; $ip=IpLocation::getRealIp(); $agent=$request->userAgent(); $package=$request->get('package')??""; $agent=explode('AppleWebKit',$agent)[0]; //如果存在100以上的自建key,使用appkey作为url_sign if(!empty($package)){ $AppKey=DB::table('QPPlatformDB.dbo.ChannelPackageName') ->where('PackageName',$package) // ->where('Sort',100) ->value('AppKey'); if(isset($AppKey)&&!empty($AppKey)){ $url_sign=$AppKey; } } $key="apktmp_{$url_sign}_$ip"; if(isset($UserID)&&!empty($UserID)) { $cookieExist = ApkService::loadCookie($UserID); if ($cookieExist&&is_array($cookieExist)) { $data = []; $data['cookie'] = $cookieExist['Cookie']??""; $data['params'] = $cookieExist['Params']??""; $data['url_sign'] = $cookieExist['UrlSign']??""; $data['type'] = $cookieExist['Platform']??""; $data['agent'] = $cookieExist['ClickUA']??""; return apiReturnSuc($data); } } $datas=[]; if(Redis::exists($key)){ $datas=json_decode(Redis::get($key),true); Util::WriteLog("apkload",compact('ip','agent','datas')); //规则1,只有一个数据,直接归1 if(count($datas)==1){ Redis::del($key); ApkService::saveCookie($UserID,$datas[0]); Util::writeLog("apkload", "onlyone:::".json_encode($datas[0])); return apiReturnSuc($datas[0]); } foreach ($datas as $k=>$v){ if(strstr($v['agent'],$agent)||$ff==$v['ff']){ array_splice($datas,$k,1); Redis::set($key,json_encode($datas)); Redis::expire($key,7200); ApkService::saveCookie($UserID,$v,$ff); return apiReturnSuc($v); } } } $recents=ApkService::getRecentsNew($url_sign); foreach ($recents as $k=>$v){ if(strstr($v['agent'],$agent)||$ff==$v['ff']){ ApkService::saveCookie($UserID,$v,$ff); array_splice($recents,$k,1); ApkService::setRecentsNew($recents,$url_sign); return apiReturnSuc($v); } } Util::WriteLog("apkfail",compact('ip','agent','datas','url_sign','recents','key')); return apiReturnFail(""); } public function test(){ $UserID=3147569; $arr=ApkService::loadCookie($UserID); if(isset($arr)&&$arr['Platform']=='gg') { $cookie = json_decode($arr['Cookie'], true); UploadOfflineConversion::reg($UserID, $cookie); } //kuai测试 // ApkService::sendToKwaiTest(['pixel_id'=>'545692252418097195','click_id'=>'GaxsDtjUMo1v0B6OZgyG8A=='],ApkService::KWAI_EVENT["EVENT_PURCHASE"],['currency'=>'USD','value'=>2]); // ApkService::sendToKwaiTest(['pixel_id'=>'545692252418097195','click_id'=>'GaxsDtjUMo1v0B6OZgyG8A=='],ApkService::KWAI_EVENT["EVENT_ADD_TO_CART"]); // ApkService::sendToKwaiTest(['pixel_id'=>'545692252418097195','click_id'=>'GaxsDtjUMo1v0B6OZgyG8A=='],ApkService::KWAI_EVENT["EVENT_COMPLETE_REGISTRATION"]); // ApkService::sendToKwaiTest(['pixel_id'=>'545692252418097195','click_id'=>'GaxsDtjUMo1v0B6OZgyG8A=='],ApkService::KWAI_EVENT["EVENT_CONTENT_VIEW"]); // // ApkService::sendToKwai(['pixel_id'=>'545692252418097195','click_id'=>'GaxsDtjUMo1v0B6OZgyG8A=='],ApkService::KWAI_EVENT["EVENT_PURCHASE"],['currency'=>'USD','value'=>2]); // ApkService::sendToKwai(['pixel_id'=>'545692252418097195','click_id'=>'GaxsDtjUMo1v0B6OZgyG8A=='],ApkService::KWAI_EVENT["EVENT_ADD_TO_CART"]); // ApkService::sendToKwai(['pixel_id'=>'545692252418097195','click_id'=>'GaxsDtjUMo1v0B6OZgyG8A=='],ApkService::KWAI_EVENT["EVENT_COMPLETE_REGISTRATION"]); // ApkService::sendToKwai(['pixel_id'=>'545692252418097195','click_id'=>'GaxsDtjUMo1v0B6OZgyG8A=='],ApkService::KWAI_EVENT["EVENT_CONTENT_VIEW"]); // // // ApkService::sendToKwaiTest(['pixel_id'=>'545692410115539004','click_id'=>'Bf2P9znfBEa6vLlGghzDqg=='],ApkService::KWAI_EVENT["EVENT_PURCHASE"],['currency'=>'USD','value'=>2]); // ApkService::sendToKwaiTest(['pixel_id'=>'545692410115539004','click_id'=>'Bf2P9znfBEa6vLlGghzDqg=='],ApkService::KWAI_EVENT["EVENT_ADD_TO_CART"]); // ApkService::sendToKwaiTest(['pixel_id'=>'545692410115539004','click_id'=>'Bf2P9znfBEa6vLlGghzDqg=='],ApkService::KWAI_EVENT["EVENT_COMPLETE_REGISTRATION"]); // ApkService::sendToKwaiTest(['pixel_id'=>'545692410115539004','click_id'=>'Bf2P9znfBEa6vLlGghzDqg=='],ApkService::KWAI_EVENT["EVENT_CONTENT_VIEW"]); // // ApkService::sendToKwai(['pixel_id'=>'545692410115539004','click_id'=>'Bf2P9znfBEa6vLlGghzDqg=='],ApkService::KWAI_EVENT["EVENT_PURCHASE"],['currency'=>'USD','value'=>2]); // ApkService::sendToKwai(['pixel_id'=>'545692410115539004','click_id'=>'Bf2P9znfBEa6vLlGghzDqg=='],ApkService::KWAI_EVENT["EVENT_ADD_TO_CART"]); // ApkService::sendToKwai(['pixel_id'=>'545692410115539004','click_id'=>'Bf2P9znfBEa6vLlGghzDqg=='],ApkService::KWAI_EVENT["EVENT_COMPLETE_REGISTRATION"]); // ApkService::sendToKwai(['pixel_id'=>'545692410115539004','click_id'=>'Bf2P9znfBEa6vLlGghzDqg=='],ApkService::KWAI_EVENT["EVENT_CONTENT_VIEW"]); // $agent1=UserAgent::parse_user_agent('Mozilla/5.0 (Linux; Android 13; SM-A135M Build/TP1A.220624.014; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/117.0.0.0 Mobile Safari/537.36'); // $agent2=UserAgent::parse_user_agent('Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Mobile Safari/537.36'); // echo "
";
//        print_r($agent1);
//        print_r($agent2);


//        $users = DB::connection('write')->table(TableName::QPAccountsDB() . 'AccountsInfo')
//            ->whereIn('GameID', [15426031,13494895,12242600,14629608])->select("UserID","Channel","RegisterDate")->get()->toArray();
//
//        foreach ($users as $user){
//            $item=['regtime'=>strtotime($user->RegisterDate),'golds' => 10];
//            $data = [$item];
//            if (Redis::exists("user_pay_order_".$user->UserID)) {
//                $olddatas = json_decode(Redis::get("user_pay_order_".$user->UserID), true);
//                array_push($olddatas, $item);
//                $data = $olddatas;
//            }
//            //记录redisevent,24小时
//            Redis::set("user_pay_order_".$user->UserID, json_encode($data));
//        }

    }

    public function check_action(Request $request){
        $udid=$request->get("udid")??0;
        $act=$request->get("act")??"install";
        $key="apk_check_".$act."_".$udid;
        $status=0;
        if(!Redis::exists($key)){
            Redis::set($key,1);
            $status=1;
        }
        $data=compact('status','act');
        Util::WriteLog("apkact",$data);
        return apiReturnSuc($data);
    }
    public function check_user_pay2(Request $request){
        $UserID=$request->get("UserID")??0;
        $data=[];
        if(Redis::exists("user_pay_order_".$UserID)){
            $data=Redis::get("user_pay_order_".$UserID);
//            Redis::del("user_pay_order_".$UserID);
            $data=json_decode($data,true);
        }
        if(Redis::exists("user_pay_first_".$UserID)){
//            Redis::del("user_pay_first_".$UserID);
            if(count($data))$data[0]['first']=1;

        }
        Redis::set("user_pay_first_".$UserID,1);
        Redis::set("user_pay_order_".$UserID,json_encode([['golds'=>10],['golds'=>5]]));
        Util::WriteLog("apkpay",$data);
        return apiReturnSuc($data);

    }
    ////////////////////////////////
    /// GOOGLE ADS
    /// ///////////////////////////

    private function uploadToGoogle(){

    }
    /**
     * 用户换包下载激励记录
     * @param $package
     * @param Request $request
     * @return false|void
     */
    public function download($package,Request $request){


        $package=$package??121;


        $cdn="http://cdn.moeda777.com/hot/download/";

        $play="https://play.google.com/store/apps/details?id=";

        $configs=Util::getPackConfigs();
        $packInfos=[];
        foreach ($configs as $pack){
            $packInfos[$pack['bundleid']]=$pack;
            $packInfos[$pack['channel']]=$pack;
        }
        if(!isset($packInfos[$package])){
            header('Location: https://pro.ouro777.com', true, 302);
            exit();
        }
        $package=$packInfos[$package];

        $userAgent = $_SERVER['HTTP_USER_AGENT'];
        $platform="pc";
        if(strpos($userAgent,"iPhone") || strpos($userAgent,"iPad") || strpos($userAgent,"iPod")){
            header('Location: '.$package['ios'], true, 302);
            $platform="ios";
        }else if(strpos($userAgent,"Android")){
            if($package['online']){

                header('Location: '.$play.$package['bundleid'], true, 302);
            }else{
                header('Location: '.$cdn.$package['name'].'.apk', true, 302);
            }
            $platform="android";

        } else{
            if($package['online']){

                header('Location: '.$play.$package['bundleid'], true, 302);
            }else{
                header('Location: '.$cdn.$package['name'].'.apk', true, 302);
            }
        }

        try {
            $ip = IpLocation::getRealIp();
            $insert = ['IP' => $ip, 'Platform' => $platform, 'Channel' => $package['channel']];

            $explode = explode('.', $ip);
            if (count($explode) < 4) {
                return false;
            }

            $valueN = $explode[0] * 1000000 + $explode[1] * 1000 + (int)$explode[2];

            $result = DB::table(TableName::QPAccountsDB() . 'CheckIP')->where('IP', $valueN)->get()->toArray();
            if (isset($result) && isset($result['isp'])) {
                $insert['Isp'] = $result['isp'];
                $insert['Country'] = $result['Country'];
            } else {
                $ipcheck = new IpCheck();
                $result = $ipcheck->getIpLocation($ip);
                if (isset($result) && isset($result['isp'])) {
                    $insert['Isp'] = $result['isp'];
                    $insert['Country'] = $result['country_code2'];
                } else {
                    $result = $ipcheck->iplogger($ip);
                    $result = $result['result'];
                    if (isset($result) && isset($result['isp'])) {
                        $insert['Isp'] = $result['isp'];
                        $insert['Country'] = $result['country'];
                    }
                }
            }


            DB::table("QPRecordDB.dbo.ClientShareRecords")->insert($insert);
        }catch (\Exception $exception){
            Util::WriteLog("share_error",$exception->getMessage());
        }
        exit();
    }


    public function checkDownloadNotice(Request $request){


        $PackageName = (string)$request->get('PackageName');
        $UserID = $request->get('UserID');
        $isH5=intval($request->get('h5')??0);
//        $v = (int)$request->get('v');

//        if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])&&isset($UserID)){
//            if(Redis::exists("Ls_$UserID")) {
//                Redis::set("Ls_$UserID",1);
//                $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 20);
//                DB::table(TableName::QPAccountsDB() . "AccountLocale")->updateOrInsert(['UserID' => $UserID], ['UserID' => $UserID, 'Locale' => $lang]);
//            }
//        }
        $downUrl='';
        $icon='';
//        $downUrl='https://cdn.moeda777.com/hot/download/slots_ouro_pro.apk';
        $needDown=0;
        $showNoti=0;
        $fromPackage=$PackageName;
        $toPackage='';
        $Channel=0;

        $bonusPackage=false;

        $checkDownPack=[
            'com.ouro777KKK.ares02'=>['Channel'=>359,'show'=>1,'down'=>1,'url'=>'https://game.hallowin.top','to'=>'com.halloween.appwin2','icon'=>'https://cdn.moeda777.com/hot/pack/com.halloween.appwin/download_icon.png'],

        ];
        $checkDownPackH5=[
            'com.ouro777.ares03'=>['Channel'=>128,'show'=>1,'down'=>1,'url'=>'https://bb3.bet/?apk=https://cdn.ouro777.com/glo/brazil/download/ares/03/SlotsOuro.apk','to'=>'com.ouro777.ares03','icon'=>'https://cdn.moeda777.com/client/orgbr/img/icon-96.png'],
            'com.ouro777.ares04'=>['Channel'=>129,'show'=>1,'down'=>1,'url'=>'https://bb3.bet/?apk=https://cdn.ouro777.com/glo/brazil/download/ares/04/SlotsOuro.apk','to'=>'com.ouro777.ares04','icon'=>'https://cdn.moeda777.com/client/orgbr/img/icon-96.png'],

        ];

        $cv = $request->get('cv')??0;
        if(isset($request->cv)){
            $cvstr=explode('.',$request->cv);
            $cv=array_pop($cvstr);
        }


        //探测充值策略包
        $openForPurchase=[];

        $fromPacks=array_keys($checkDownPack);
        $fromPacksH5=array_keys($checkDownPackH5);
        /* $toPacks=array_map(function ($arr){
             return $arr['to'];
         },$checkDownPack);*/
        $toPacks=[];
        $toPacksToFrom=[];
        $checkDownPack=$checkDownPack+$checkDownPackH5;
        foreach ($checkDownPack as $key=>$config){
            $toPacks[]=$config['to'];
            $config['from']=$key;
            $toPacksToFrom[$config['to']]=$config;
        }

        //默认
        $Recharge=-1;
        //探测充值并且在记录内
        if(in_array($PackageName,$openForPurchase)&&in_array($PackageName,$fromPacks+$fromPacksH5)) {
            $Recharge = DB::connection('write')->table('QPRecordDB.dbo.RecordUserTotalStatistics')
                ->where('UserID', $UserID)
                ->select('Recharge')
                ->first();
            $Recharge=$Recharge?intval($Recharge->Recharge):0;
        }
        if($request->ip()=='116.86.210.235'){
            Util::WriteLog('topacks',compact('PackageName','fromPacks','fromPacksH5','Recharge','isH5'));
        }
        if($Recharge!=0&&(in_array($PackageName,$fromPacks)||$isH5&&in_array($PackageName,$fromPacksH5))){
            Util::WriteLog('frompacks',$request->all());
            $config=$checkDownPack[$PackageName];
            $toPackage=$config['to'];
            $showNoti=$config['show'];
            $needDown=$config['down'];
            $Channel=$config['Channel'];
            $downUrl=$config['url'];
            $icon=$config['icon']??'';
        }else if(in_array($PackageName,$toPacks)&&$isH5==0){
            Util::WriteLog('topacks',$request->all());
            $config=$toPacksToFrom[$PackageName];
            $fromPackage = $config['from'];
            $bonusPackage = true;
            $Channel = $config['Channel'];
            $downUrl = $config['url'];
        }else{
            return apiReturnSuc(['needDown'=>$needDown,'url'=>$downUrl,'showNoti'=>$showNoti]);
        }


        $redisKey = 'tcd_'.$PackageName.'_'.$UserID;
        if(Redis::exists($redisKey)){
            $state=Redis::get($redisKey);
            if($state==2){
                $showNoti=0;
            }
            $result=['needDown'=>$needDown,'url'=>$downUrl,'showNoti'=>$showNoti];
            if(isset($icon)&&strlen($icon)){
                $result['icon']=$icon;
            }
            if($state==2)return apiReturnSuc($result);
        }else {
            //每天过期
            Redis::set($redisKey, 1);
            Redis::expire($redisKey, 3600*1);
        }
        //查表
        $record=DB::table("QPRecordDB.dbo.AccountsChangeApk")->where('UserID', $UserID)->first();
        if($record){
            $record=(array)$record;
            Util::WriteLog('topacks',compact('bonusPackage','record','PackageName','UserID','downUrl','needDown','showNoti','Channel'));
        }else if($needDown){
            $record=['UserID'=>$UserID,
                'FromPackage'=>$fromPackage,
                'ToPackage'=>$toPackage,
                'State'=>0,
                'Channel'=>$Channel,
            ];
            DB::table("QPRecordDB.dbo.AccountsChangeApk")->insert($record);
        }
        //开奖励的
        if($bonusPackage&&$record&&$record['State']<2){
            //这是需要更新表
            DB::table("QPRecordDB.dbo.AccountsChangeApk")->where('UserID', $UserID)->update(['InstallTime'=>date('Y-m-d H:i:s'),'State'=>2]);
            RecordScoreInfo::addScore($UserID, (10 * 100), 42); #赠送彩金
            $amount = 10;
            $TitleString = 'Bem-vindo à versão segura do jogo';
            $TextString = "Sua recompensa de R$10 foi distribuída";
            PrivateMail::sendMail(2, $UserID, $TitleString, $TextString,  '', '', 0, 3);


            $firstScore = DB::table('QPTreasureDB.dbo.GameScoreInfo')->where('UserID', $UserID)->value('Score');
            $Score = $amount*100 + $firstScore;
            DB::table('QPTreasureDB.dbo.GameScoreInfo')->where('UserID', $UserID)->increment('Score',$amount*100);

            // 服务器通知

            $url = config('transfer.stock')['url'] . 'notifyPay';
//            2826383
            $data = [
                'userid' => $UserID,
                'getScore' => $amount,
                'score' => $Score
            ];

            (new HttpCurl())->service($url, $data);

            Redis::set('tcd_'.$fromPackage.'_'.$UserID,2);
        }else if(isset($record)&&$record['State']==2){
            $needDown=0;
            $showNoti=0;
            Redis::set($redisKey, 2);
        }

        $result=['needDown'=>$needDown,'url'=>$downUrl,'showNoti'=>$showNoti];
        if(isset($icon)&&strlen($icon)){
            $result['icon']=$icon;
        }
        return apiReturnSuc($result);
    }
    public function clickDownloadNotice(Request $request){
        $PackageName = (string)$request->get('PackageName');
        $UserID = $request->get('UserID');

        //查表
        if(DB::table("QPRecordDB.dbo.AccountsChangeApk")->where('UserID', $UserID)->exists()){
            DB::table("QPRecordDB.dbo.AccountsChangeApk")->where('UserID', $UserID)->update(['ClickTimes'=>DB::raw('ClickTimes+1'),'State'=>1]);
        }

        return apiReturnSuc([]);
    }


    public function appconfig(Request $request)
    {
        $PackageName=$request->pack??"default";
        $locale=$request->l??"pt-BR";
        $config=[
            "default"=>['adj_token'=>"",'adj_config'=>'','config'=>'','ani_name'=>'','black'=>false],
            "com.ouro777.naclube"=>['adj_token'=>"",'adj_config'=>'','config'=>'','ani_name'=>'clube','black'=>false],
            "com.ouro777.ncandy"=>['adj_token'=>"",'adj_config'=>'','config'=>'','ani_name'=>'candy','black'=>false],

            "com.ouro777.tt001"=>['adj_token'=>"499wni62xfk0",'adj_config'=>'{"1":{"id":1,"key":"enter-Hall Time0-3s","name":"101从登陆进大厅成功时长1-3s","value":"mz8s29","desc":"玩家从登陆界面点登陆按钮后转圈到正式进大厅的时长"},"2":{"id":2,"key":"enter-Hall Time3-5s","name":"102从登陆进大厅成功时长3-5s","value":"fuxnb9","desc":"玩家从登陆界面点登陆按钮后转圈到正式进大厅的时长"},"3":{"id":3,"key":"enter-Hall Time5-10s","name":"103从登陆进大厅成功时长5-10s","value":"umdtsq","desc":"玩家从登陆界面点登陆按钮后转圈到正式进大厅的时长"},"4":{"id":4,"key":"enter-Hall Time10-15s","name":"104从登陆进大厅成功时长10-15s","value":"5we1zn","desc":"玩家从登陆界面点登陆按钮后转圈到正式进大厅的时长"},"5":{"id":5,"key":"enter-Hall Time15s+","name":"105从登陆进大厅成功时长15s以上","value":"mred8o","desc":"玩家从登陆界面点登陆按钮后转圈到正式进大厅的时长"},"6":{"id":6,"key":"open-FirstRecharge","name":"10打开首充礼包界面的人数","value":"7ffte4","desc":"打开首充礼包界面的人数"},"7":{"id":7,"key":"open-game registration success","name":"11进B面且成功注册","value":"aenr4s","desc":"首先得进B面,然后成功注册(包括快速注册和手机注册,都算)"},"8":{"id":8,"key":"open-Shop player information","name":"12打开商城填写个人信息界面","value":"ak31ka","desc":"商城那个用户名,手机,邮箱的填写界面,这个界面被打开,即统计"},"9":{"id":9,"key":"open-Shop player information save","name":"13商城个人信息保存成功","value":"3pigxw","desc":"商城那个用户名,手机,邮箱的填写界面,这个界面玩家填写信息后,保存成功,即统计"},"10":{"id":10,"key":"open-game B side","name":"14进B面成功的用户","value":"8fi4q3","desc":"返回能进B面的消息的用户"},"11":{"id":11,"key":"open-New Shop payment page","name":"15新支付的支付页面成功弹出","value":"rrifvd","desc":"新的支付页,完全展示出来,那个带二维码和链接地址的页面"},"12":{"id":12,"key":"open-New Shop payment page invalid","name":"16新支付拉起生成中页面失败","value":"e2qp7h","desc":"新的支付,点[proxima Etapa]跳转后会有个转圈生成的界面,这个界面没有成功跳转的人数"},"13":{"id":13,"key":"open-New Shop payment page copy","name":"17新支付的支付页面点复制按钮","value":"m6bjum","desc":"新的支付页,完全展示出来,那个带二维码和链接地址的页面,里的复制链接按钮,点击就算"},"14":{"id":14,"key":"login Success To Hall","name":"18登陆成功,准备进入大厅","value":"bd3bck","desc":"登陆成功返回,准备加载大厅场景"},"15":{"id":15,"key":"no Update","name":"19无需热更","value":"47wwzm","desc":"版本已是最新,无需热更"},"16":{"id":16,"key":"open-APP","name":"1打开应用人数","value":"tnnnzr","desc":"打开APP的人数"},"17":{"id":17,"key":"enter-Game Time0-3s","name":"201进游戏过程加载时长1-3s","value":"najwx2","desc":"从大厅次级页面进游戏时那个转圈的等待时间"},"18":{"id":18,"key":"enter-Game Time3-5s","name":"202进游戏过程加载时长3-5s","value":"4dh7fm","desc":"从大厅次级页面进游戏时那个转圈的等待时间"},"19":{"id":19,"key":"enter-Game Time5-10s","name":"203进游戏过程加载时长5-10s","value":"wk5j5c","desc":"从大厅次级页面进游戏时那个转圈的等待时间"},"20":{"id":20,"key":"enter-Game Time10-15s","name":"204进游戏过程加载时长10-15s","value":"39tv48","desc":"从大厅次级页面进游戏时那个转圈的等待时间"},"21":{"id":21,"key":"enter-Game Time15s+","name":"205进游戏过程加载时长15s以上","value":"7rvlnk","desc":"从大厅次级页面进游戏时那个转圈的等待时间"},"22":{"id":22,"key":"start Hotupdate","name":"20开始热更","value":"fhi6kd","desc":"检测到有新版本,准备热更"},"23":{"id":23,"key":"hotUpdate Success","name":"21热更完成","value":"ec4hyz","desc":"更新完成,准备重新启动"},"24":{"id":24,"key":"open-game A side","name":"22进A面","value":"kx8ii1","desc":"玩家进A面显示"},"25":{"id":25,"key":"login Success To Game","name":"23A面登陆成功,进游戏","value":"oim78t","desc":"玩家A面下登陆成功,需要直接进入游戏"},"26":{"id":26,"key":"quick Login YouKe","name":"24游客快速登录","value":"pqq2ip","desc":"启动游戏,直接游客登录进游戏"},"27":{"id":27,"key":"quick Login Phone","name":"25手机快速登录","value":"onizp6","desc":"启动偶像,直接手机账号登录进游戏"},"28":{"id":28,"key":"youkeLogin Need Register","name":"26游客登录失败,需要注册","value":"vcqokh","desc":"游客快速登录失败,需要注册"},"29":{"id":29,"key":"loginSuccess","name":"27登陆成功","value":"s4kog5","desc":"账号登陆成功"},"30":{"id":30,"key":"loginFailure","name":"28登录失败","value":"rbkwja","desc":"账号登陆失败"},"31":{"id":31,"key":"login ShowPhone","name":"29登录界面展示手机","value":"wipd8y","desc":"设置界面切换账号到登录"},"32":{"id":32,"key":"open-Loning...","name":"2加载过程人数","value":"lb2rqw","desc":"打开APP开始加载的人数(请求服务器成功)"},"33":{"id":33,"key":"enter-Shop Time0-3s","name":"301进商城过程加载时长0-3s","value":"sf3i9u","desc":"玩家打开商城的等待时间"},"34":{"id":34,"key":"enter-Shop Time3-5s","name":"302进商城过程加载时长3-5s","value":"3hdczt","desc":"玩家打开商城的等待时间"},"35":{"id":35,"key":"enter-Shop Time5-10s","name":"303进商城过程加载时长5-10s","value":"x7plvs","desc":"玩家打开商城的等待时间"},"36":{"id":36,"key":"enter-Shop Time10-15s","name":"304进商城过程加载时长10-15s","value":"342xmg","desc":"玩家打开商城的等待时间(基本判定为打开失败)"},"37":{"id":37,"key":"enter-Shop Time15s+","name":"305进商城过程加载时长15s以上","value":"5zto05","desc":"玩家打开商城的等待时间(基本判定为打开失败)"},"38":{"id":38,"key":"open-New Shop time1-5s","name":"306新支付拉起加载时长1-5s","value":"iytpr8","desc":"新的支付,点[proxima Etapa]跳转后会有个转圈生成的界面,这个界面到成功弹出充值页面消耗的时长"},"39":{"id":39,"key":"open-New Shop time5s+","name":"307新支付拉起加载时长5s以上","value":"hpiksl","desc":"新的支付,点[proxima Etapa]跳转后会有个转圈生成的界面,这个界面到成功弹出充值页面消耗的时长"},"40":{"id":40,"key":"open-New Shop invalid tips01","name":"308新支付拉起失败报错01","value":"e263ao","desc":"提示文本:“充值页面跳转失败,请稍后再试”这个错误(超时,异常,都会是这个)"},"41":{"id":41,"key":"open-New Shop invalid tips02","name":"309新支付拉起失败报错02","value":"vx3249","desc":"提示文本:“您的订单生成失败,请检查您填写的信息是否正确”"},"42":{"id":42,"key":"login ShowRegister","name":"30登录界面展示注册","value":"adn8vn","desc":"设置界面切换账号到登录"},"43":{"id":43,"key":"click-set logout","name":"31设置界面切换账号","value":"cbla0r","desc":"设置界面点击切换账号按钮"},"44":{"id":44,"key":"login Timeout30s","name":"32登录时间超过30秒","value":"m001o0","desc":"快速登录开始计时,30秒后还未登录成功或失败"},"45":{"id":45,"key":"quick Login A Side","name":"33A面快速登录","value":"ny6o05","desc":"玩家进A面,游客快速登录"},"46":{"id":46,"key":"registration success A side","name":"34A面注册成功","value":"8evbhr","desc":"玩家在A面,游客注册成功"},"47":{"id":47,"key":"registration failure","name":"35注册失败","value":"nusyuu","desc":"玩家注册失败"},"48":{"id":48,"key":"open server to login","name":"36连接成功准备登录","value":"6htu0c","desc":"服务器连接成功,准备发送登录数据"},"49":{"id":49,"key":"server already to login","name":"37服务已连接,直接登录","value":"8d2zow","desc":"服务器已连接,只需发送登录"},"50":{"id":50,"key":"open-New Shop not components","name":"38新支付没有QRCODE组件","value":"cuvqau","desc":"字面意思"},"51":{"id":51,"key":"VIP button","name":"39VIP功能点击入口次数","value":"d2f1d2","desc":"大厅的VIP功能入口点击的人数"},"52":{"id":52,"key":"open-game lobby","name":"3进B面大厅成功人数","value":"z3jf8c","desc":"成功进B面进到大厅的人数"},"53":{"id":53,"key":"VIP button-Melhorar","name":"40VIP功能点击升级按钮","value":"8h0f5m","desc":"VIP功能界面里面点击Melhorar的那个跳转商城按钮"},"54":{"id":54,"key":"Guide payment button","name":"41引导付费礼包的入口按钮点击","value":"uygj5v","desc":"只要是引导付费礼包的入口,用户主动去点击次数"},"55":{"id":55,"key":"Guide payment UI popup","name":"42引导付费礼包界面弹出次数","value":"yrti1h","desc":"引导付费礼包界面弹出成功,就记录一次,但是记录的是次数"},"56":{"id":56,"key":"Guide payment package one","name":"43引导付费礼包档位1购买按钮","value":"1ovma0","desc":"用户没有付费回到大厅主动弹的那个礼包,第一个充值档位的购买按钮点击"},"57":{"id":57,"key":"Guide payment package two","name":"44引导付费礼包档位2购买按钮","value":"s5t8qc","desc":"用户没有付费回到大厅主动弹的那个礼包,第二个充值档位的购买按钮点击"},"58":{"id":58,"key":"Guide payment close","name":"45引导付费礼包关闭按钮点击","value":"zd2kgz","desc":"用户没有付费回到大厅主动弹的那个礼包,关闭按钮点击"},"59":{"id":59,"key":"Lembrete de recarga open","name":"46游戏内没钱时的统一弹窗弹出次数","value":"u1liou","desc":"游戏里玩家没钱弹出的那个可跳商城的弹框,弹出次数"},"60":{"id":60,"key":"Lembrete de recarga go to mall","name":"47游戏内没钱时的统一弹窗点击跳转充值","value":"3hxt3i","desc":"游戏里玩家没钱弹出的那个可跳商城的弹框,里面的跳转商城按钮点击次数"},"61":{"id":61,"key":"Lembrete de recarga close","name":"48游戏内没钱时的统一弹窗点击关闭按钮","value":"zbcnw6","desc":"游戏里玩家没钱弹出的那个可跳商城的弹框,里面的关闭按钮点击次数"},"62":{"id":62,"key":"withdraw to recharge","name":"49提现弹出提醒充值弹框","value":"hzwbyc","desc":"玩家提现,点提取按钮时弹出提示充值的那个弹框,弹出次数"},"63":{"id":63,"key":"open-Shop","name":"4商城页面被打开","value":"72rskl","desc":"打开商城页面的人数"},"64":{"id":64,"key":"withdraw to recharge go to mall","name":"50提现弹出提醒充值弹框后点击跳转充值","value":"hcb5im","desc":"玩家提现,点提取按钮时弹出提示充值的那个弹框,里面的跳转商城按钮点击次数"},"65":{"id":65,"key":"withdraw to recharge close","name":"51提现弹出提醒充值弹框后点击关闭按钮","value":"rh7p3p","desc":"玩家提现,点提取按钮时弹出提示充值的那个弹框,里面的关闭按钮点击次数"},"66":{"id":66,"key":"click-ShopItem","name":"5点击商城内任意充值档位按钮人数","value":"cwimt0","desc":"点商城内任意充值档位按钮人数"},"67":{"id":67,"key":"click-GoBuy","name":"6点击[proxima Etapa]跳转按钮成功人数","value":"2eqws2","desc":"点击商城选择渠道界面那个黄色的próxima Etapa按钮,且成功跳转人数"},"68":{"id":68,"key":"open-CashOut","name":"7打开提现页面的人数","value":"heuicd","desc":"打开提现页面的人数,注:多个页面可跳转到提现,这里是打开这个页面,而不是点击提现按钮"},"69":{"id":69,"key":"open-Agent","name":"8打开推广赚金页面人数","value":"r4vwwz","desc":"打开推广赚金页面的人数"},"70":{"id":70,"key":"open-VIPWeek","name":"9打开周卡界面的人数","value":"kkg542","desc":"打开周卡界面的人数"},"71":{"id":71,"key":"RocketLoad-pre-unpack","name":"01前置开始","value":"cej5we","desc":"01前置开始"},"72":{"id":72,"key":"RocketLoad-pre-finish","name":"02前置完成","value":"a276ub","desc":"02前置完成"},"73":{"id":73,"key":"RocketLoad-normal-startdown","name":"03下载init开始","value":"xi87ny","desc":"03下载init开始"},"74":{"id":74,"key":"RocketLoad-normal-downfinish","name":"04下载init完成","value":"rly5vr","desc":"04下载init完成"},"75":{"id":75,"key":"RocketLoad-normal-unpack","name":"05init解开","value":"po2r5s","desc":"05下载init解开"},"76":{"id":76,"key":"RocketLoad-normal-finish","name":"06init完成","value":"qntv7c","desc":"06下载init完成"}}','config'=>'','ani_name'=>'play','black'=>false],
            "com.fantasy.fruit"=>['adj_token'=>"srgiv5i6kphc",'adj_config'=>'{"1":{"id":1,"key":"enter-Hall Time0-3s","name":"101从登陆进大厅成功时长1-3s","value":"qf67bx","desc":"玩家从登陆界面点登陆按钮后转圈到正式进大厅的时长"},"2":{"id":2,"key":"enter-Hall Time3-5s","name":"102从登陆进大厅成功时长3-5s","value":"88tdmx","desc":"玩家从登陆界面点登陆按钮后转圈到正式进大厅的时长"},"3":{"id":3,"key":"enter-Hall Time5-10s","name":"103从登陆进大厅成功时长5-10s","value":"g36jgl","desc":"玩家从登陆界面点登陆按钮后转圈到正式进大厅的时长"},"4":{"id":4,"key":"enter-Hall Time10-15s","name":"104从登陆进大厅成功时长10-15s","value":"6hadyq","desc":"玩家从登陆界面点登陆按钮后转圈到正式进大厅的时长"},"5":{"id":5,"key":"enter-Hall Time15s+","name":"105从登陆进大厅成功时长15s以上","value":"olfgul","desc":"玩家从登陆界面点登陆按钮后转圈到正式进大厅的时长"},"6":{"id":6,"key":"open-FirstRecharge","name":"10打开首充礼包界面的人数","value":"o0tvbn","desc":"打开首充礼包界面的人数"},"7":{"id":7,"key":"open-game registration success","name":"11进B面且成功注册","value":"pk06w4","desc":"首先得进B面,然后成功注册(包括快速注册和手机注册,都算)"},"8":{"id":8,"key":"open-Shop player information","name":"12打开商城填写个人信息界面","value":"vevhuw","desc":"商城那个用户名,手机,邮箱的填写界面,这个界面被打开,即统计"},"9":{"id":9,"key":"open-Shop player information save","name":"13商城个人信息保存成功","value":"156mar","desc":"商城那个用户名,手机,邮箱的填写界面,这个界面玩家填写信息后,保存成功,即统计"},"10":{"id":10,"key":"open-game B side","name":"14进B面成功的用户","value":"93rpfl","desc":"返回能进B面的消息的用户"},"11":{"id":11,"key":"open-New Shop payment page","name":"15新支付的支付页面成功弹出","value":"vnq5jc","desc":"新的支付页,完全展示出来,那个带二维码和链接地址的页面"},"12":{"id":12,"key":"open-New Shop payment page invalid","name":"16新支付拉起生成中页面失败","value":"b0yxkk","desc":"新的支付,点[proxima Etapa]跳转后会有个转圈生成的界面,这个界面没有成功跳转的人数"},"13":{"id":13,"key":"open-New Shop payment page copy","name":"17新支付的支付页面点复制按钮","value":"qk4mcl","desc":"新的支付页,完全展示出来,那个带二维码和链接地址的页面,里的复制链接按钮,点击就算"},"14":{"id":14,"key":"login Success To Hall","name":"18登陆成功,准备进入大厅","value":"u39trn","desc":"登陆成功返回,准备加载大厅场景"},"15":{"id":15,"key":"no Update","name":"19无需热更","value":"x9b4lm","desc":"版本已是最新,无需热更"},"16":{"id":16,"key":"open-APP","name":"1打开应用人数","value":"5ysmeg","desc":"打开APP的人数"},"17":{"id":17,"key":"enter-Game Time0-3s","name":"201进游戏过程加载时长1-3s","value":"b3cegs","desc":"从大厅次级页面进游戏时那个转圈的等待时间"},"18":{"id":18,"key":"enter-Game Time3-5s","name":"202进游戏过程加载时长3-5s","value":"oq9663","desc":"从大厅次级页面进游戏时那个转圈的等待时间"},"19":{"id":19,"key":"enter-Game Time5-10s","name":"203进游戏过程加载时长5-10s","value":"hoebhc","desc":"从大厅次级页面进游戏时那个转圈的等待时间"},"20":{"id":20,"key":"enter-Game Time10-15s","name":"204进游戏过程加载时长10-15s","value":"8ur7vx","desc":"从大厅次级页面进游戏时那个转圈的等待时间"},"21":{"id":21,"key":"enter-Game Time15s+","name":"205进游戏过程加载时长15s以上","value":"z634dc","desc":"从大厅次级页面进游戏时那个转圈的等待时间"},"22":{"id":22,"key":"start Hotupdate","name":"20开始热更","value":"y5uzfi","desc":"检测到有新版本,准备热更"},"23":{"id":23,"key":"hotUpdate Success","name":"21热更完成","value":"zf1ply","desc":"更新完成,准备重新启动"},"24":{"id":24,"key":"open-game A side","name":"22进A面","value":"tnejh3","desc":"玩家进A面显示"},"25":{"id":25,"key":"login Success To Game","name":"23A面登陆成功,进游戏","value":"v57boe","desc":"玩家A面下登陆成功,需要直接进入游戏"},"26":{"id":26,"key":"quick Login YouKe","name":"24游客快速登录","value":"v5dljx","desc":"启动游戏,直接游客登录进游戏"},"27":{"id":27,"key":"quick Login Phone","name":"25手机快速登录","value":"m1ofjs","desc":"启动偶像,直接手机账号登录进游戏"},"28":{"id":28,"key":"youkeLogin Need Register","name":"26游客登录失败,需要注册","value":"1yx4vw","desc":"游客快速登录失败,需要注册"},"29":{"id":29,"key":"loginSuccess","name":"27登陆成功","value":"7t39gx","desc":"账号登陆成功"},"30":{"id":30,"key":"loginFailure","name":"28登录失败","value":"582nne","desc":"账号登陆失败"},"31":{"id":31,"key":"login ShowPhone","name":"29登录界面展示手机","value":"3yo6ra","desc":"设置界面切换账号到登录"},"32":{"id":32,"key":"open-Loning...","name":"2加载过程人数","value":"8vacc1","desc":"打开APP开始加载的人数(请求服务器成功)"},"33":{"id":33,"key":"enter-Shop Time0-3s","name":"301进商城过程加载时长0-3s","value":"p8o6kj","desc":"玩家打开商城的等待时间"},"34":{"id":34,"key":"enter-Shop Time3-5s","name":"302进商城过程加载时长3-5s","value":"melvsl","desc":"玩家打开商城的等待时间"},"35":{"id":35,"key":"enter-Shop Time5-10s","name":"303进商城过程加载时长5-10s","value":"frzav4","desc":"玩家打开商城的等待时间"},"36":{"id":36,"key":"enter-Shop Time10-15s","name":"304进商城过程加载时长10-15s","value":"wknf7d","desc":"玩家打开商城的等待时间(基本判定为打开失败)"},"37":{"id":37,"key":"enter-Shop Time15s+","name":"305进商城过程加载时长15s以上","value":"rx7yz1","desc":"玩家打开商城的等待时间(基本判定为打开失败)"},"38":{"id":38,"key":"open-New Shop time1-5s","name":"306新支付拉起加载时长1-5s","value":"9fkqro","desc":"新的支付,点[proxima Etapa]跳转后会有个转圈生成的界面,这个界面到成功弹出充值页面消耗的时长"},"39":{"id":39,"key":"open-New Shop time5s+","name":"307新支付拉起加载时长5s以上","value":"dfmwax","desc":"新的支付,点[proxima Etapa]跳转后会有个转圈生成的界面,这个界面到成功弹出充值页面消耗的时长"},"40":{"id":40,"key":"open-New Shop invalid tips01","name":"308新支付拉起失败报错01","value":"uwy9w6","desc":"提示文本:“充值页面跳转失败,请稍后再试”这个错误(超时,异常,都会是这个)"},"41":{"id":41,"key":"open-New Shop invalid tips02","name":"309新支付拉起失败报错02","value":"m3qs5w","desc":"提示文本:“您的订单生成失败,请检查您填写的信息是否正确”"},"42":{"id":42,"key":"login ShowRegister","name":"30登录界面展示注册","value":"h031i1","desc":"设置界面切换账号到登录"},"43":{"id":43,"key":"click-set logout","name":"31设置界面切换账号","value":"uu8t9r","desc":"设置界面点击切换账号按钮"},"44":{"id":44,"key":"login Timeout30s","name":"32登录时间超过30秒","value":"qjxzbk","desc":"快速登录开始计时,30秒后还未登录成功或失败"},"45":{"id":45,"key":"quick Login A Side","name":"33A面快速登录","value":"ls5p48","desc":"玩家进A面,游客快速登录"},"46":{"id":46,"key":"registration success A side","name":"34A面注册成功","value":"1dbolh","desc":"玩家在A面,游客注册成功"},"47":{"id":47,"key":"registration failure","name":"35注册失败","value":"bwsw3c","desc":"玩家注册失败"},"48":{"id":48,"key":"open server to login","name":"36连接成功准备登录","value":"sq8uzg","desc":"服务器连接成功,准备发送登录数据"},"49":{"id":49,"key":"server already to login","name":"37服务已连接,直接登录","value":"sevfr7","desc":"服务器已连接,只需发送登录"},"50":{"id":50,"key":"open-New Shop not components","name":"38新支付没有QRCODE组件","value":"difhgc","desc":"字面意思"},"51":{"id":51,"key":"VIP button","name":"39VIP功能点击入口次数","value":"1s04w6","desc":"大厅的VIP功能入口点击的人数"},"52":{"id":52,"key":"open-game lobby","name":"3进B面大厅成功人数","value":"andcgu","desc":"成功进B面进到大厅的人数"},"53":{"id":53,"key":"VIP button-Melhorar","name":"40VIP功能点击升级按钮","value":"uqiiei","desc":"VIP功能界面里面点击Melhorar的那个跳转商城按钮"},"54":{"id":54,"key":"Guide payment button","name":"41引导付费礼包的入口按钮点击","value":"yz5pwo","desc":"只要是引导付费礼包的入口,用户主动去点击次数"},"55":{"id":55,"key":"Guide payment UI popup","name":"42引导付费礼包界面弹出次数","value":"w0k2fu","desc":"引导付费礼包界面弹出成功,就记录一次,但是记录的是次数"},"56":{"id":56,"key":"Guide payment package one","name":"43引导付费礼包档位1购买按钮","value":"alkh13","desc":"用户没有付费回到大厅主动弹的那个礼包,第一个充值档位的购买按钮点击"},"57":{"id":57,"key":"Guide payment package two","name":"44引导付费礼包档位2购买按钮","value":"ukiupq","desc":"用户没有付费回到大厅主动弹的那个礼包,第二个充值档位的购买按钮点击"},"58":{"id":58,"key":"Guide payment close","name":"45引导付费礼包关闭按钮点击","value":"8ytrcl","desc":"用户没有付费回到大厅主动弹的那个礼包,关闭按钮点击"},"59":{"id":59,"key":"Lembrete de recarga open","name":"46游戏内没钱时的统一弹窗弹出次数","value":"uk7zk5","desc":"游戏里玩家没钱弹出的那个可跳商城的弹框,弹出次数"},"60":{"id":60,"key":"Lembrete de recarga go to mall","name":"47游戏内没钱时的统一弹窗点击跳转充值","value":"6gz9k8","desc":"游戏里玩家没钱弹出的那个可跳商城的弹框,里面的跳转商城按钮点击次数"},"61":{"id":61,"key":"Lembrete de recarga close","name":"48游戏内没钱时的统一弹窗点击关闭按钮","value":"7b76vj","desc":"游戏里玩家没钱弹出的那个可跳商城的弹框,里面的关闭按钮点击次数"},"62":{"id":62,"key":"withdraw to recharge","name":"49提现弹出提醒充值弹框","value":"hgsm6s","desc":"玩家提现,点提取按钮时弹出提示充值的那个弹框,弹出次数"},"63":{"id":63,"key":"open-Shop","name":"4商城页面被打开","value":"9jxmgt","desc":"打开商城页面的人数"},"64":{"id":64,"key":"withdraw to recharge go to mall","name":"50提现弹出提醒充值弹框后点击跳转充值","value":"h7hlq1","desc":"玩家提现,点提取按钮时弹出提示充值的那个弹框,里面的跳转商城按钮点击次数"},"65":{"id":65,"key":"withdraw to recharge close","name":"51提现弹出提醒充值弹框后点击关闭按钮","value":"p11rsz","desc":"玩家提现,点提取按钮时弹出提示充值的那个弹框,里面的关闭按钮点击次数"},"66":{"id":66,"key":"click-ShopItem","name":"5点击商城内任意充值档位按钮人数","value":"1ugad7","desc":"点商城内任意充值档位按钮人数"},"67":{"id":67,"key":"click-GoBuy","name":"6点击[proxima Etapa]跳转按钮成功人数","value":"4rhhx8","desc":"点击商城选择渠道界面那个黄色的próxima Etapa按钮,且成功跳转人数"},"68":{"id":68,"key":"open-CashOut","name":"7打开提现页面的人数","value":"ixr4t4","desc":"打开提现页面的人数,注:多个页面可跳转到提现,这里是打开这个页面,而不是点击提现按钮"},"69":{"id":69,"key":"open-Agent","name":"8打开推广赚金页面人数","value":"8a343a","desc":"打开推广赚金页面的人数"},"70":{"id":70,"key":"open-VIPWeek","name":"9打开周卡界面的人数","value":"koaw2x","desc":"打开周卡界面的人数"},"71":{"id":71,"key":"RocketLoad-pre-unpack","name":"01前置开始","value":"ctxedy","desc":"01前置开始"},"72":{"id":72,"key":"RocketLoad-pre-finish","name":"02前置完成","value":"gshj22","desc":"02前置完成"},"73":{"id":73,"key":"RocketLoad-normal-startdown","name":"03下载init开始","value":"hqvhd5","desc":"03下载init开始"},"74":{"id":74,"key":"RocketLoad-normal-downfinish","name":"04下载init完成","value":"w1kdyd","desc":"04下载init完成"},"75":{"id":75,"key":"RocketLoad-normal-unpack","name":"05init解开","value":"laia25","desc":"05下载init解开"},"76":{"id":76,"key":"RocketLoad-normal-finish","name":"06init完成","value":"y94eyl","desc":"06下载init完成"}}','config'=>'','ani_name'=>'play','black'=>false],
            "com.fantasy.fruit2"=>['adj_token'=>"srgiv5i6kphc",'adj_config'=>'{"1":{"id":1,"key":"enter-Hall Time0-3s","name":"101从登陆进大厅成功时长1-3s","value":"qf67bx","desc":"玩家从登陆界面点登陆按钮后转圈到正式进大厅的时长"},"2":{"id":2,"key":"enter-Hall Time3-5s","name":"102从登陆进大厅成功时长3-5s","value":"88tdmx","desc":"玩家从登陆界面点登陆按钮后转圈到正式进大厅的时长"},"3":{"id":3,"key":"enter-Hall Time5-10s","name":"103从登陆进大厅成功时长5-10s","value":"g36jgl","desc":"玩家从登陆界面点登陆按钮后转圈到正式进大厅的时长"},"4":{"id":4,"key":"enter-Hall Time10-15s","name":"104从登陆进大厅成功时长10-15s","value":"6hadyq","desc":"玩家从登陆界面点登陆按钮后转圈到正式进大厅的时长"},"5":{"id":5,"key":"enter-Hall Time15s+","name":"105从登陆进大厅成功时长15s以上","value":"olfgul","desc":"玩家从登陆界面点登陆按钮后转圈到正式进大厅的时长"},"6":{"id":6,"key":"open-FirstRecharge","name":"10打开首充礼包界面的人数","value":"o0tvbn","desc":"打开首充礼包界面的人数"},"7":{"id":7,"key":"open-game registration success","name":"11进B面且成功注册","value":"pk06w4","desc":"首先得进B面,然后成功注册(包括快速注册和手机注册,都算)"},"8":{"id":8,"key":"open-Shop player information","name":"12打开商城填写个人信息界面","value":"vevhuw","desc":"商城那个用户名,手机,邮箱的填写界面,这个界面被打开,即统计"},"9":{"id":9,"key":"open-Shop player information save","name":"13商城个人信息保存成功","value":"156mar","desc":"商城那个用户名,手机,邮箱的填写界面,这个界面玩家填写信息后,保存成功,即统计"},"10":{"id":10,"key":"open-game B side","name":"14进B面成功的用户","value":"93rpfl","desc":"返回能进B面的消息的用户"},"11":{"id":11,"key":"open-New Shop payment page","name":"15新支付的支付页面成功弹出","value":"vnq5jc","desc":"新的支付页,完全展示出来,那个带二维码和链接地址的页面"},"12":{"id":12,"key":"open-New Shop payment page invalid","name":"16新支付拉起生成中页面失败","value":"b0yxkk","desc":"新的支付,点[proxima Etapa]跳转后会有个转圈生成的界面,这个界面没有成功跳转的人数"},"13":{"id":13,"key":"open-New Shop payment page copy","name":"17新支付的支付页面点复制按钮","value":"qk4mcl","desc":"新的支付页,完全展示出来,那个带二维码和链接地址的页面,里的复制链接按钮,点击就算"},"14":{"id":14,"key":"login Success To Hall","name":"18登陆成功,准备进入大厅","value":"u39trn","desc":"登陆成功返回,准备加载大厅场景"},"15":{"id":15,"key":"no Update","name":"19无需热更","value":"x9b4lm","desc":"版本已是最新,无需热更"},"16":{"id":16,"key":"open-APP","name":"1打开应用人数","value":"5ysmeg","desc":"打开APP的人数"},"17":{"id":17,"key":"enter-Game Time0-3s","name":"201进游戏过程加载时长1-3s","value":"b3cegs","desc":"从大厅次级页面进游戏时那个转圈的等待时间"},"18":{"id":18,"key":"enter-Game Time3-5s","name":"202进游戏过程加载时长3-5s","value":"oq9663","desc":"从大厅次级页面进游戏时那个转圈的等待时间"},"19":{"id":19,"key":"enter-Game Time5-10s","name":"203进游戏过程加载时长5-10s","value":"hoebhc","desc":"从大厅次级页面进游戏时那个转圈的等待时间"},"20":{"id":20,"key":"enter-Game Time10-15s","name":"204进游戏过程加载时长10-15s","value":"8ur7vx","desc":"从大厅次级页面进游戏时那个转圈的等待时间"},"21":{"id":21,"key":"enter-Game Time15s+","name":"205进游戏过程加载时长15s以上","value":"z634dc","desc":"从大厅次级页面进游戏时那个转圈的等待时间"},"22":{"id":22,"key":"start Hotupdate","name":"20开始热更","value":"y5uzfi","desc":"检测到有新版本,准备热更"},"23":{"id":23,"key":"hotUpdate Success","name":"21热更完成","value":"zf1ply","desc":"更新完成,准备重新启动"},"24":{"id":24,"key":"open-game A side","name":"22进A面","value":"tnejh3","desc":"玩家进A面显示"},"25":{"id":25,"key":"login Success To Game","name":"23A面登陆成功,进游戏","value":"v57boe","desc":"玩家A面下登陆成功,需要直接进入游戏"},"26":{"id":26,"key":"quick Login YouKe","name":"24游客快速登录","value":"v5dljx","desc":"启动游戏,直接游客登录进游戏"},"27":{"id":27,"key":"quick Login Phone","name":"25手机快速登录","value":"m1ofjs","desc":"启动偶像,直接手机账号登录进游戏"},"28":{"id":28,"key":"youkeLogin Need Register","name":"26游客登录失败,需要注册","value":"1yx4vw","desc":"游客快速登录失败,需要注册"},"29":{"id":29,"key":"loginSuccess","name":"27登陆成功","value":"7t39gx","desc":"账号登陆成功"},"30":{"id":30,"key":"loginFailure","name":"28登录失败","value":"582nne","desc":"账号登陆失败"},"31":{"id":31,"key":"login ShowPhone","name":"29登录界面展示手机","value":"3yo6ra","desc":"设置界面切换账号到登录"},"32":{"id":32,"key":"open-Loning...","name":"2加载过程人数","value":"8vacc1","desc":"打开APP开始加载的人数(请求服务器成功)"},"33":{"id":33,"key":"enter-Shop Time0-3s","name":"301进商城过程加载时长0-3s","value":"p8o6kj","desc":"玩家打开商城的等待时间"},"34":{"id":34,"key":"enter-Shop Time3-5s","name":"302进商城过程加载时长3-5s","value":"melvsl","desc":"玩家打开商城的等待时间"},"35":{"id":35,"key":"enter-Shop Time5-10s","name":"303进商城过程加载时长5-10s","value":"frzav4","desc":"玩家打开商城的等待时间"},"36":{"id":36,"key":"enter-Shop Time10-15s","name":"304进商城过程加载时长10-15s","value":"wknf7d","desc":"玩家打开商城的等待时间(基本判定为打开失败)"},"37":{"id":37,"key":"enter-Shop Time15s+","name":"305进商城过程加载时长15s以上","value":"rx7yz1","desc":"玩家打开商城的等待时间(基本判定为打开失败)"},"38":{"id":38,"key":"open-New Shop time1-5s","name":"306新支付拉起加载时长1-5s","value":"9fkqro","desc":"新的支付,点[proxima Etapa]跳转后会有个转圈生成的界面,这个界面到成功弹出充值页面消耗的时长"},"39":{"id":39,"key":"open-New Shop time5s+","name":"307新支付拉起加载时长5s以上","value":"dfmwax","desc":"新的支付,点[proxima Etapa]跳转后会有个转圈生成的界面,这个界面到成功弹出充值页面消耗的时长"},"40":{"id":40,"key":"open-New Shop invalid tips01","name":"308新支付拉起失败报错01","value":"uwy9w6","desc":"提示文本:“充值页面跳转失败,请稍后再试”这个错误(超时,异常,都会是这个)"},"41":{"id":41,"key":"open-New Shop invalid tips02","name":"309新支付拉起失败报错02","value":"m3qs5w","desc":"提示文本:“您的订单生成失败,请检查您填写的信息是否正确”"},"42":{"id":42,"key":"login ShowRegister","name":"30登录界面展示注册","value":"h031i1","desc":"设置界面切换账号到登录"},"43":{"id":43,"key":"click-set logout","name":"31设置界面切换账号","value":"uu8t9r","desc":"设置界面点击切换账号按钮"},"44":{"id":44,"key":"login Timeout30s","name":"32登录时间超过30秒","value":"qjxzbk","desc":"快速登录开始计时,30秒后还未登录成功或失败"},"45":{"id":45,"key":"quick Login A Side","name":"33A面快速登录","value":"ls5p48","desc":"玩家进A面,游客快速登录"},"46":{"id":46,"key":"registration success A side","name":"34A面注册成功","value":"1dbolh","desc":"玩家在A面,游客注册成功"},"47":{"id":47,"key":"registration failure","name":"35注册失败","value":"bwsw3c","desc":"玩家注册失败"},"48":{"id":48,"key":"open server to login","name":"36连接成功准备登录","value":"sq8uzg","desc":"服务器连接成功,准备发送登录数据"},"49":{"id":49,"key":"server already to login","name":"37服务已连接,直接登录","value":"sevfr7","desc":"服务器已连接,只需发送登录"},"50":{"id":50,"key":"open-New Shop not components","name":"38新支付没有QRCODE组件","value":"difhgc","desc":"字面意思"},"51":{"id":51,"key":"VIP button","name":"39VIP功能点击入口次数","value":"1s04w6","desc":"大厅的VIP功能入口点击的人数"},"52":{"id":52,"key":"open-game lobby","name":"3进B面大厅成功人数","value":"andcgu","desc":"成功进B面进到大厅的人数"},"53":{"id":53,"key":"VIP button-Melhorar","name":"40VIP功能点击升级按钮","value":"uqiiei","desc":"VIP功能界面里面点击Melhorar的那个跳转商城按钮"},"54":{"id":54,"key":"Guide payment button","name":"41引导付费礼包的入口按钮点击","value":"yz5pwo","desc":"只要是引导付费礼包的入口,用户主动去点击次数"},"55":{"id":55,"key":"Guide payment UI popup","name":"42引导付费礼包界面弹出次数","value":"w0k2fu","desc":"引导付费礼包界面弹出成功,就记录一次,但是记录的是次数"},"56":{"id":56,"key":"Guide payment package one","name":"43引导付费礼包档位1购买按钮","value":"alkh13","desc":"用户没有付费回到大厅主动弹的那个礼包,第一个充值档位的购买按钮点击"},"57":{"id":57,"key":"Guide payment package two","name":"44引导付费礼包档位2购买按钮","value":"ukiupq","desc":"用户没有付费回到大厅主动弹的那个礼包,第二个充值档位的购买按钮点击"},"58":{"id":58,"key":"Guide payment close","name":"45引导付费礼包关闭按钮点击","value":"8ytrcl","desc":"用户没有付费回到大厅主动弹的那个礼包,关闭按钮点击"},"59":{"id":59,"key":"Lembrete de recarga open","name":"46游戏内没钱时的统一弹窗弹出次数","value":"uk7zk5","desc":"游戏里玩家没钱弹出的那个可跳商城的弹框,弹出次数"},"60":{"id":60,"key":"Lembrete de recarga go to mall","name":"47游戏内没钱时的统一弹窗点击跳转充值","value":"6gz9k8","desc":"游戏里玩家没钱弹出的那个可跳商城的弹框,里面的跳转商城按钮点击次数"},"61":{"id":61,"key":"Lembrete de recarga close","name":"48游戏内没钱时的统一弹窗点击关闭按钮","value":"7b76vj","desc":"游戏里玩家没钱弹出的那个可跳商城的弹框,里面的关闭按钮点击次数"},"62":{"id":62,"key":"withdraw to recharge","name":"49提现弹出提醒充值弹框","value":"hgsm6s","desc":"玩家提现,点提取按钮时弹出提示充值的那个弹框,弹出次数"},"63":{"id":63,"key":"open-Shop","name":"4商城页面被打开","value":"9jxmgt","desc":"打开商城页面的人数"},"64":{"id":64,"key":"withdraw to recharge go to mall","name":"50提现弹出提醒充值弹框后点击跳转充值","value":"h7hlq1","desc":"玩家提现,点提取按钮时弹出提示充值的那个弹框,里面的跳转商城按钮点击次数"},"65":{"id":65,"key":"withdraw to recharge close","name":"51提现弹出提醒充值弹框后点击关闭按钮","value":"p11rsz","desc":"玩家提现,点提取按钮时弹出提示充值的那个弹框,里面的关闭按钮点击次数"},"66":{"id":66,"key":"click-ShopItem","name":"5点击商城内任意充值档位按钮人数","value":"1ugad7","desc":"点商城内任意充值档位按钮人数"},"67":{"id":67,"key":"click-GoBuy","name":"6点击[proxima Etapa]跳转按钮成功人数","value":"4rhhx8","desc":"点击商城选择渠道界面那个黄色的próxima Etapa按钮,且成功跳转人数"},"68":{"id":68,"key":"open-CashOut","name":"7打开提现页面的人数","value":"ixr4t4","desc":"打开提现页面的人数,注:多个页面可跳转到提现,这里是打开这个页面,而不是点击提现按钮"},"69":{"id":69,"key":"open-Agent","name":"8打开推广赚金页面人数","value":"8a343a","desc":"打开推广赚金页面的人数"},"70":{"id":70,"key":"open-VIPWeek","name":"9打开周卡界面的人数","value":"koaw2x","desc":"打开周卡界面的人数"},"71":{"id":71,"key":"RocketLoad-pre-unpack","name":"01前置开始","value":"ctxedy","desc":"01前置开始"},"72":{"id":72,"key":"RocketLoad-pre-finish","name":"02前置完成","value":"gshj22","desc":"02前置完成"},"73":{"id":73,"key":"RocketLoad-normal-startdown","name":"03下载init开始","value":"hqvhd5","desc":"03下载init开始"},"74":{"id":74,"key":"RocketLoad-normal-downfinish","name":"04下载init完成","value":"w1kdyd","desc":"04下载init完成"},"75":{"id":75,"key":"RocketLoad-normal-unpack","name":"05init解开","value":"laia25","desc":"05下载init解开"},"76":{"id":76,"key":"RocketLoad-normal-finish","name":"06init完成","value":"y94eyl","desc":"06下载init完成"}}','config'=>'','ani_name'=>'play','black'=>false],
            "com.silamedia.chocolaterecipe"=>['adj_token'=>"stxguhycksn4",'adj_config'=>'{"1":{"id":1,"key":"enter-Hall Time0-3s","name":"101从登陆进大厅成功时长1-3s","value":"hdgu3b","desc":"玩家从登陆界面点登陆按钮后转圈到正式进大厅的时长"},"2":{"id":2,"key":"enter-Hall Time3-5s","name":"102从登陆进大厅成功时长3-5s","value":"vpg4vx","desc":"玩家从登陆界面点登陆按钮后转圈到正式进大厅的时长"},"3":{"id":3,"key":"enter-Hall Time5-10s","name":"103从登陆进大厅成功时长5-10s","value":"upx2sn","desc":"玩家从登陆界面点登陆按钮后转圈到正式进大厅的时长"},"4":{"id":4,"key":"enter-Hall Time10-15s","name":"104从登陆进大厅成功时长10-15s","value":"g881rv","desc":"玩家从登陆界面点登陆按钮后转圈到正式进大厅的时长"},"5":{"id":5,"key":"enter-Hall Time15s+","name":"105从登陆进大厅成功时长15s以上","value":"34l2eo","desc":"玩家从登陆界面点登陆按钮后转圈到正式进大厅的时长"},"6":{"id":6,"key":"open-FirstRecharge","name":"10打开首充礼包界面的人数","value":"vtrhyj","desc":"打开首充礼包界面的人数"},"7":{"id":7,"key":"open-game registration success","name":"11进B面且成功注册","value":"dq59ph","desc":"首先得进B面,然后成功注册(包括快速注册和手机注册,都算)"},"8":{"id":8,"key":"open-Shop player information","name":"12打开商城填写个人信息界面","value":"sq4sq0","desc":"商城那个用户名,手机,邮箱的填写界面,这个界面被打开,即统计"},"9":{"id":9,"key":"open-Shop player information save","name":"13商城个人信息保存成功","value":"qfv37u","desc":"商城那个用户名,手机,邮箱的填写界面,这个界面玩家填写信息后,保存成功,即统计"},"10":{"id":10,"key":"open-game B side","name":"14进B面成功的用户","value":"i4137q","desc":"返回能进B面的消息的用户"},"11":{"id":11,"key":"open-New Shop payment page","name":"15新支付的支付页面成功弹出","value":"bxf1zi","desc":"新的支付页,完全展示出来,那个带二维码和链接地址的页面"},"12":{"id":12,"key":"open-New Shop payment page invalid","name":"16新支付拉起生成中页面失败","value":"hn69qs","desc":"新的支付,点[proxima Etapa]跳转后会有个转圈生成的界面,这个界面没有成功跳转的人数"},"13":{"id":13,"key":"open-New Shop payment page copy","name":"17新支付的支付页面点复制按钮","value":"gw5q86","desc":"新的支付页,完全展示出来,那个带二维码和链接地址的页面,里的复制链接按钮,点击就算"},"14":{"id":14,"key":"login Success To Hall","name":"18登陆成功,准备进入大厅","value":"mc6tjz","desc":"登陆成功返回,准备加载大厅场景"},"15":{"id":15,"key":"no Update","name":"19无需热更","value":"4wvpct","desc":"版本已是最新,无需热更"},"16":{"id":16,"key":"open-APP","name":"1打开应用人数","value":"upilkr","desc":"打开APP的人数"},"17":{"id":17,"key":"enter-Game Time0-3s","name":"201进游戏过程加载时长1-3s","value":"k6ibc5","desc":"从大厅次级页面进游戏时那个转圈的等待时间"},"18":{"id":18,"key":"enter-Game Time3-5s","name":"202进游戏过程加载时长3-5s","value":"5ktg90","desc":"从大厅次级页面进游戏时那个转圈的等待时间"},"19":{"id":19,"key":"enter-Game Time5-10s","name":"203进游戏过程加载时长5-10s","value":"eye0n6","desc":"从大厅次级页面进游戏时那个转圈的等待时间"},"20":{"id":20,"key":"enter-Game Time10-15s","name":"204进游戏过程加载时长10-15s","value":"ouvcev","desc":"从大厅次级页面进游戏时那个转圈的等待时间"},"21":{"id":21,"key":"enter-Game Time15s+","name":"205进游戏过程加载时长15s以上","value":"aafmlw","desc":"从大厅次级页面进游戏时那个转圈的等待时间"},"22":{"id":22,"key":"start Hotupdate","name":"20开始热更","value":"1mudj2","desc":"检测到有新版本,准备热更"},"23":{"id":23,"key":"hotUpdate Success","name":"21热更完成","value":"tjk31x","desc":"更新完成,准备重新启动"},"24":{"id":24,"key":"open-game A side","name":"22进A面","value":"gzj8l1","desc":"玩家进A面显示"},"25":{"id":25,"key":"login Success To Game","name":"23A面登陆成功,进游戏","value":"6d7dpe","desc":"玩家A面下登陆成功,需要直接进入游戏"},"26":{"id":26,"key":"quick Login YouKe","name":"24游客快速登录","value":"nhgk8q","desc":"启动游戏,直接游客登录进游戏"},"27":{"id":27,"key":"quick Login Phone","name":"25手机快速登录","value":"gfrpyt","desc":"启动偶像,直接手机账号登录进游戏"},"28":{"id":28,"key":"youkeLogin Need Register","name":"26游客登录失败,需要注册","value":"2qyyom","desc":"游客快速登录失败,需要注册"},"29":{"id":29,"key":"loginSuccess","name":"27登陆成功","value":"159cp7","desc":"账号登陆成功"},"30":{"id":30,"key":"loginFailure","name":"28登录失败","value":"a66i3t","desc":"账号登陆失败"},"31":{"id":31,"key":"login ShowPhone","name":"29登录界面展示手机","value":"jnaf7b","desc":"设置界面切换账号到登录"},"32":{"id":32,"key":"open-Loning...","name":"2加载过程人数","value":"yfjiel","desc":"打开APP开始加载的人数(请求服务器成功)"},"33":{"id":33,"key":"enter-Shop Time0-3s","name":"301进商城过程加载时长0-3s","value":"8u4r26","desc":"玩家打开商城的等待时间"},"34":{"id":34,"key":"enter-Shop Time3-5s","name":"302进商城过程加载时长3-5s","value":"yx77ni","desc":"玩家打开商城的等待时间"},"35":{"id":35,"key":"enter-Shop Time5-10s","name":"303进商城过程加载时长5-10s","value":"1fbgdv","desc":"玩家打开商城的等待时间"},"36":{"id":36,"key":"enter-Shop Time10-15s","name":"304进商城过程加载时长10-15s","value":"eond8p","desc":"玩家打开商城的等待时间(基本判定为打开失败)"},"37":{"id":37,"key":"enter-Shop Time15s+","name":"305进商城过程加载时长15s以上","value":"h2ap3o","desc":"玩家打开商城的等待时间(基本判定为打开失败)"},"38":{"id":38,"key":"open-New Shop time1-5s","name":"306新支付拉起加载时长1-5s","value":"opm4wv","desc":"新的支付,点[proxima Etapa]跳转后会有个转圈生成的界面,这个界面到成功弹出充值页面消耗的时长"},"39":{"id":39,"key":"open-New Shop time5s+","name":"307新支付拉起加载时长5s以上","value":"v2wzqq","desc":"新的支付,点[proxima Etapa]跳转后会有个转圈生成的界面,这个界面到成功弹出充值页面消耗的时长"},"40":{"id":40,"key":"open-New Shop invalid tips01","name":"308新支付拉起失败报错01","value":"ae4tv3","desc":"提示文本:“充值页面跳转失败,请稍后再试”这个错误(超时,异常,都会是这个)"},"41":{"id":41,"key":"open-New Shop invalid tips02","name":"309新支付拉起失败报错02","value":"tdwvd0","desc":"提示文本:“您的订单生成失败,请检查您填写的信息是否正确”"},"42":{"id":42,"key":"login ShowRegister","name":"30登录界面展示注册","value":"zgi835","desc":"设置界面切换账号到登录"},"43":{"id":43,"key":"click-set logout","name":"31设置界面切换账号","value":"lye1cd","desc":"设置界面点击切换账号按钮"},"44":{"id":44,"key":"login Timeout30s","name":"32登录时间超过30秒","value":"xaubyr","desc":"快速登录开始计时,30秒后还未登录成功或失败"},"45":{"id":45,"key":"quick Login A Side","name":"33A面快速登录","value":"mduilk","desc":"玩家进A面,游客快速登录"},"46":{"id":46,"key":"registration success A side","name":"34A面注册成功","value":"fnchgq","desc":"玩家在A面,游客注册成功"},"47":{"id":47,"key":"registration failure","name":"35注册失败","value":"wd9gqp","desc":"玩家注册失败"},"48":{"id":48,"key":"open server to login","name":"36连接成功准备登录","value":"caibpq","desc":"服务器连接成功,准备发送登录数据"},"49":{"id":49,"key":"server already to login","name":"37服务已连接,直接登录","value":"6q15qa","desc":"服务器已连接,只需发送登录"},"50":{"id":50,"key":"open-New Shop not components","name":"38新支付没有QRCODE组件","value":"y3r2ax","desc":"字面意思"},"51":{"id":51,"key":"VIP button","name":"39VIP功能点击入口次数","value":"eu04tb","desc":"大厅的VIP功能入口点击的人数"},"52":{"id":52,"key":"open-game lobby","name":"3进B面大厅成功人数","value":"t2xvhh","desc":"成功进B面进到大厅的人数"},"53":{"id":53,"key":"VIP button-Melhorar","name":"40VIP功能点击升级按钮","value":"oe47hz","desc":"VIP功能界面里面点击Melhorar的那个跳转商城按钮"},"54":{"id":54,"key":"Guide payment button","name":"41引导付费礼包的入口按钮点击","value":"rd9nqp","desc":"只要是引导付费礼包的入口,用户主动去点击次数"},"55":{"id":55,"key":"Guide payment UI popup","name":"42引导付费礼包界面弹出次数","value":"ai95kh","desc":"引导付费礼包界面弹出成功,就记录一次,但是记录的是次数"},"56":{"id":56,"key":"Guide payment package one","name":"43引导付费礼包档位1购买按钮","value":"yzn0jd","desc":"用户没有付费回到大厅主动弹的那个礼包,第一个充值档位的购买按钮点击"},"57":{"id":57,"key":"Guide payment package two","name":"44引导付费礼包档位2购买按钮","value":"j34o4t","desc":"用户没有付费回到大厅主动弹的那个礼包,第二个充值档位的购买按钮点击"},"58":{"id":58,"key":"Guide payment close","name":"45引导付费礼包关闭按钮点击","value":"dhqhyt","desc":"用户没有付费回到大厅主动弹的那个礼包,关闭按钮点击"},"59":{"id":59,"key":"Lembrete de recarga open","name":"46游戏内没钱时的统一弹窗弹出次数","value":"6xxgqr","desc":"游戏里玩家没钱弹出的那个可跳商城的弹框,弹出次数"},"60":{"id":60,"key":"Lembrete de recarga go to mall","name":"47游戏内没钱时的统一弹窗点击跳转充值","value":"aawk66","desc":"游戏里玩家没钱弹出的那个可跳商城的弹框,里面的跳转商城按钮点击次数"},"61":{"id":61,"key":"Lembrete de recarga close","name":"48游戏内没钱时的统一弹窗点击关闭按钮","value":"s44hoi","desc":"游戏里玩家没钱弹出的那个可跳商城的弹框,里面的关闭按钮点击次数"},"62":{"id":62,"key":"withdraw to recharge","name":"49提现弹出提醒充值弹框","value":"9b8jqd","desc":"玩家提现,点提取按钮时弹出提示充值的那个弹框,弹出次数"},"63":{"id":63,"key":"open-Shop","name":"4商城页面被打开","value":"h8012i","desc":"打开商城页面的人数"},"64":{"id":64,"key":"withdraw to recharge go to mall","name":"50提现弹出提醒充值弹框后点击跳转充值","value":"nb11cc","desc":"玩家提现,点提取按钮时弹出提示充值的那个弹框,里面的跳转商城按钮点击次数"},"65":{"id":65,"key":"withdraw to recharge close","name":"51提现弹出提醒充值弹框后点击关闭按钮","value":"e8jmzm","desc":"玩家提现,点提取按钮时弹出提示充值的那个弹框,里面的关闭按钮点击次数"},"66":{"id":66,"key":"click-ShopItem","name":"5点击商城内任意充值档位按钮人数","value":"tge79i","desc":"点商城内任意充值档位按钮人数"},"67":{"id":67,"key":"click-GoBuy","name":"6点击[proxima Etapa]跳转按钮成功人数","value":"yw1r51","desc":"点击商城选择渠道界面那个黄色的próxima Etapa按钮,且成功跳转人数"},"68":{"id":68,"key":"open-CashOut","name":"7打开提现页面的人数","value":"93rklo","desc":"打开提现页面的人数,注:多个页面可跳转到提现,这里是打开这个页面,而不是点击提现按钮"},"69":{"id":69,"key":"open-Agent","name":"8打开推广赚金页面人数","value":"yw54pq","desc":"打开推广赚金页面的人数"},"70":{"id":70,"key":"open-VIPWeek","name":"9打开周卡界面的人数","value":"bki2ct","desc":"打开周卡界面的人数"},"71":{"id":71,"key":"RocketLoad-pre-unpack","name":"01前置开始","value":"o5yxoz","desc":"01前置开始"},"72":{"id":72,"key":"RocketLoad-pre-finish","name":"02前置完成","value":"gf9j0h","desc":"02前置完成"},"73":{"id":73,"key":"RocketLoad-normal-startdown","name":"03下载init开始","value":"f6t870","desc":"03下载init开始"},"74":{"id":74,"key":"RocketLoad-normal-downfinish","name":"04下载init完成","value":"cznk1a","desc":"04下载init完成"},"75":{"id":75,"key":"RocketLoad-normal-unpack","name":"05init解开","value":"rey4d9","desc":"05下载init解开"},"76":{"id":76,"key":"RocketLoad-normal-finish","name":"06init完成","value":"52cqjl","desc":"06下载init完成"}}','config'=>'','ani_name'=>'play','black'=>false],
            "com.silamedia.chocolaterecipe2"=>['adj_token'=>"stxguhycksn4",'adj_config'=>'{"1":{"id":1,"key":"enter-Hall Time0-3s","name":"101从登陆进大厅成功时长1-3s","value":"hdgu3b","desc":"玩家从登陆界面点登陆按钮后转圈到正式进大厅的时长"},"2":{"id":2,"key":"enter-Hall Time3-5s","name":"102从登陆进大厅成功时长3-5s","value":"vpg4vx","desc":"玩家从登陆界面点登陆按钮后转圈到正式进大厅的时长"},"3":{"id":3,"key":"enter-Hall Time5-10s","name":"103从登陆进大厅成功时长5-10s","value":"upx2sn","desc":"玩家从登陆界面点登陆按钮后转圈到正式进大厅的时长"},"4":{"id":4,"key":"enter-Hall Time10-15s","name":"104从登陆进大厅成功时长10-15s","value":"g881rv","desc":"玩家从登陆界面点登陆按钮后转圈到正式进大厅的时长"},"5":{"id":5,"key":"enter-Hall Time15s+","name":"105从登陆进大厅成功时长15s以上","value":"34l2eo","desc":"玩家从登陆界面点登陆按钮后转圈到正式进大厅的时长"},"6":{"id":6,"key":"open-FirstRecharge","name":"10打开首充礼包界面的人数","value":"vtrhyj","desc":"打开首充礼包界面的人数"},"7":{"id":7,"key":"open-game registration success","name":"11进B面且成功注册","value":"dq59ph","desc":"首先得进B面,然后成功注册(包括快速注册和手机注册,都算)"},"8":{"id":8,"key":"open-Shop player information","name":"12打开商城填写个人信息界面","value":"sq4sq0","desc":"商城那个用户名,手机,邮箱的填写界面,这个界面被打开,即统计"},"9":{"id":9,"key":"open-Shop player information save","name":"13商城个人信息保存成功","value":"qfv37u","desc":"商城那个用户名,手机,邮箱的填写界面,这个界面玩家填写信息后,保存成功,即统计"},"10":{"id":10,"key":"open-game B side","name":"14进B面成功的用户","value":"i4137q","desc":"返回能进B面的消息的用户"},"11":{"id":11,"key":"open-New Shop payment page","name":"15新支付的支付页面成功弹出","value":"bxf1zi","desc":"新的支付页,完全展示出来,那个带二维码和链接地址的页面"},"12":{"id":12,"key":"open-New Shop payment page invalid","name":"16新支付拉起生成中页面失败","value":"hn69qs","desc":"新的支付,点[proxima Etapa]跳转后会有个转圈生成的界面,这个界面没有成功跳转的人数"},"13":{"id":13,"key":"open-New Shop payment page copy","name":"17新支付的支付页面点复制按钮","value":"gw5q86","desc":"新的支付页,完全展示出来,那个带二维码和链接地址的页面,里的复制链接按钮,点击就算"},"14":{"id":14,"key":"login Success To Hall","name":"18登陆成功,准备进入大厅","value":"mc6tjz","desc":"登陆成功返回,准备加载大厅场景"},"15":{"id":15,"key":"no Update","name":"19无需热更","value":"4wvpct","desc":"版本已是最新,无需热更"},"16":{"id":16,"key":"open-APP","name":"1打开应用人数","value":"upilkr","desc":"打开APP的人数"},"17":{"id":17,"key":"enter-Game Time0-3s","name":"201进游戏过程加载时长1-3s","value":"k6ibc5","desc":"从大厅次级页面进游戏时那个转圈的等待时间"},"18":{"id":18,"key":"enter-Game Time3-5s","name":"202进游戏过程加载时长3-5s","value":"5ktg90","desc":"从大厅次级页面进游戏时那个转圈的等待时间"},"19":{"id":19,"key":"enter-Game Time5-10s","name":"203进游戏过程加载时长5-10s","value":"eye0n6","desc":"从大厅次级页面进游戏时那个转圈的等待时间"},"20":{"id":20,"key":"enter-Game Time10-15s","name":"204进游戏过程加载时长10-15s","value":"ouvcev","desc":"从大厅次级页面进游戏时那个转圈的等待时间"},"21":{"id":21,"key":"enter-Game Time15s+","name":"205进游戏过程加载时长15s以上","value":"aafmlw","desc":"从大厅次级页面进游戏时那个转圈的等待时间"},"22":{"id":22,"key":"start Hotupdate","name":"20开始热更","value":"1mudj2","desc":"检测到有新版本,准备热更"},"23":{"id":23,"key":"hotUpdate Success","name":"21热更完成","value":"tjk31x","desc":"更新完成,准备重新启动"},"24":{"id":24,"key":"open-game A side","name":"22进A面","value":"gzj8l1","desc":"玩家进A面显示"},"25":{"id":25,"key":"login Success To Game","name":"23A面登陆成功,进游戏","value":"6d7dpe","desc":"玩家A面下登陆成功,需要直接进入游戏"},"26":{"id":26,"key":"quick Login YouKe","name":"24游客快速登录","value":"nhgk8q","desc":"启动游戏,直接游客登录进游戏"},"27":{"id":27,"key":"quick Login Phone","name":"25手机快速登录","value":"gfrpyt","desc":"启动偶像,直接手机账号登录进游戏"},"28":{"id":28,"key":"youkeLogin Need Register","name":"26游客登录失败,需要注册","value":"2qyyom","desc":"游客快速登录失败,需要注册"},"29":{"id":29,"key":"loginSuccess","name":"27登陆成功","value":"159cp7","desc":"账号登陆成功"},"30":{"id":30,"key":"loginFailure","name":"28登录失败","value":"a66i3t","desc":"账号登陆失败"},"31":{"id":31,"key":"login ShowPhone","name":"29登录界面展示手机","value":"jnaf7b","desc":"设置界面切换账号到登录"},"32":{"id":32,"key":"open-Loning...","name":"2加载过程人数","value":"yfjiel","desc":"打开APP开始加载的人数(请求服务器成功)"},"33":{"id":33,"key":"enter-Shop Time0-3s","name":"301进商城过程加载时长0-3s","value":"8u4r26","desc":"玩家打开商城的等待时间"},"34":{"id":34,"key":"enter-Shop Time3-5s","name":"302进商城过程加载时长3-5s","value":"yx77ni","desc":"玩家打开商城的等待时间"},"35":{"id":35,"key":"enter-Shop Time5-10s","name":"303进商城过程加载时长5-10s","value":"1fbgdv","desc":"玩家打开商城的等待时间"},"36":{"id":36,"key":"enter-Shop Time10-15s","name":"304进商城过程加载时长10-15s","value":"eond8p","desc":"玩家打开商城的等待时间(基本判定为打开失败)"},"37":{"id":37,"key":"enter-Shop Time15s+","name":"305进商城过程加载时长15s以上","value":"h2ap3o","desc":"玩家打开商城的等待时间(基本判定为打开失败)"},"38":{"id":38,"key":"open-New Shop time1-5s","name":"306新支付拉起加载时长1-5s","value":"opm4wv","desc":"新的支付,点[proxima Etapa]跳转后会有个转圈生成的界面,这个界面到成功弹出充值页面消耗的时长"},"39":{"id":39,"key":"open-New Shop time5s+","name":"307新支付拉起加载时长5s以上","value":"v2wzqq","desc":"新的支付,点[proxima Etapa]跳转后会有个转圈生成的界面,这个界面到成功弹出充值页面消耗的时长"},"40":{"id":40,"key":"open-New Shop invalid tips01","name":"308新支付拉起失败报错01","value":"ae4tv3","desc":"提示文本:“充值页面跳转失败,请稍后再试”这个错误(超时,异常,都会是这个)"},"41":{"id":41,"key":"open-New Shop invalid tips02","name":"309新支付拉起失败报错02","value":"tdwvd0","desc":"提示文本:“您的订单生成失败,请检查您填写的信息是否正确”"},"42":{"id":42,"key":"login ShowRegister","name":"30登录界面展示注册","value":"zgi835","desc":"设置界面切换账号到登录"},"43":{"id":43,"key":"click-set logout","name":"31设置界面切换账号","value":"lye1cd","desc":"设置界面点击切换账号按钮"},"44":{"id":44,"key":"login Timeout30s","name":"32登录时间超过30秒","value":"xaubyr","desc":"快速登录开始计时,30秒后还未登录成功或失败"},"45":{"id":45,"key":"quick Login A Side","name":"33A面快速登录","value":"mduilk","desc":"玩家进A面,游客快速登录"},"46":{"id":46,"key":"registration success A side","name":"34A面注册成功","value":"fnchgq","desc":"玩家在A面,游客注册成功"},"47":{"id":47,"key":"registration failure","name":"35注册失败","value":"wd9gqp","desc":"玩家注册失败"},"48":{"id":48,"key":"open server to login","name":"36连接成功准备登录","value":"caibpq","desc":"服务器连接成功,准备发送登录数据"},"49":{"id":49,"key":"server already to login","name":"37服务已连接,直接登录","value":"6q15qa","desc":"服务器已连接,只需发送登录"},"50":{"id":50,"key":"open-New Shop not components","name":"38新支付没有QRCODE组件","value":"y3r2ax","desc":"字面意思"},"51":{"id":51,"key":"VIP button","name":"39VIP功能点击入口次数","value":"eu04tb","desc":"大厅的VIP功能入口点击的人数"},"52":{"id":52,"key":"open-game lobby","name":"3进B面大厅成功人数","value":"t2xvhh","desc":"成功进B面进到大厅的人数"},"53":{"id":53,"key":"VIP button-Melhorar","name":"40VIP功能点击升级按钮","value":"oe47hz","desc":"VIP功能界面里面点击Melhorar的那个跳转商城按钮"},"54":{"id":54,"key":"Guide payment button","name":"41引导付费礼包的入口按钮点击","value":"rd9nqp","desc":"只要是引导付费礼包的入口,用户主动去点击次数"},"55":{"id":55,"key":"Guide payment UI popup","name":"42引导付费礼包界面弹出次数","value":"ai95kh","desc":"引导付费礼包界面弹出成功,就记录一次,但是记录的是次数"},"56":{"id":56,"key":"Guide payment package one","name":"43引导付费礼包档位1购买按钮","value":"yzn0jd","desc":"用户没有付费回到大厅主动弹的那个礼包,第一个充值档位的购买按钮点击"},"57":{"id":57,"key":"Guide payment package two","name":"44引导付费礼包档位2购买按钮","value":"j34o4t","desc":"用户没有付费回到大厅主动弹的那个礼包,第二个充值档位的购买按钮点击"},"58":{"id":58,"key":"Guide payment close","name":"45引导付费礼包关闭按钮点击","value":"dhqhyt","desc":"用户没有付费回到大厅主动弹的那个礼包,关闭按钮点击"},"59":{"id":59,"key":"Lembrete de recarga open","name":"46游戏内没钱时的统一弹窗弹出次数","value":"6xxgqr","desc":"游戏里玩家没钱弹出的那个可跳商城的弹框,弹出次数"},"60":{"id":60,"key":"Lembrete de recarga go to mall","name":"47游戏内没钱时的统一弹窗点击跳转充值","value":"aawk66","desc":"游戏里玩家没钱弹出的那个可跳商城的弹框,里面的跳转商城按钮点击次数"},"61":{"id":61,"key":"Lembrete de recarga close","name":"48游戏内没钱时的统一弹窗点击关闭按钮","value":"s44hoi","desc":"游戏里玩家没钱弹出的那个可跳商城的弹框,里面的关闭按钮点击次数"},"62":{"id":62,"key":"withdraw to recharge","name":"49提现弹出提醒充值弹框","value":"9b8jqd","desc":"玩家提现,点提取按钮时弹出提示充值的那个弹框,弹出次数"},"63":{"id":63,"key":"open-Shop","name":"4商城页面被打开","value":"h8012i","desc":"打开商城页面的人数"},"64":{"id":64,"key":"withdraw to recharge go to mall","name":"50提现弹出提醒充值弹框后点击跳转充值","value":"nb11cc","desc":"玩家提现,点提取按钮时弹出提示充值的那个弹框,里面的跳转商城按钮点击次数"},"65":{"id":65,"key":"withdraw to recharge close","name":"51提现弹出提醒充值弹框后点击关闭按钮","value":"e8jmzm","desc":"玩家提现,点提取按钮时弹出提示充值的那个弹框,里面的关闭按钮点击次数"},"66":{"id":66,"key":"click-ShopItem","name":"5点击商城内任意充值档位按钮人数","value":"tge79i","desc":"点商城内任意充值档位按钮人数"},"67":{"id":67,"key":"click-GoBuy","name":"6点击[proxima Etapa]跳转按钮成功人数","value":"yw1r51","desc":"点击商城选择渠道界面那个黄色的próxima Etapa按钮,且成功跳转人数"},"68":{"id":68,"key":"open-CashOut","name":"7打开提现页面的人数","value":"93rklo","desc":"打开提现页面的人数,注:多个页面可跳转到提现,这里是打开这个页面,而不是点击提现按钮"},"69":{"id":69,"key":"open-Agent","name":"8打开推广赚金页面人数","value":"yw54pq","desc":"打开推广赚金页面的人数"},"70":{"id":70,"key":"open-VIPWeek","name":"9打开周卡界面的人数","value":"bki2ct","desc":"打开周卡界面的人数"},"71":{"id":71,"key":"RocketLoad-pre-unpack","name":"01前置开始","value":"o5yxoz","desc":"01前置开始"},"72":{"id":72,"key":"RocketLoad-pre-finish","name":"02前置完成","value":"gf9j0h","desc":"02前置完成"},"73":{"id":73,"key":"RocketLoad-normal-startdown","name":"03下载init开始","value":"f6t870","desc":"03下载init开始"},"74":{"id":74,"key":"RocketLoad-normal-downfinish","name":"04下载init完成","value":"cznk1a","desc":"04下载init完成"},"75":{"id":75,"key":"RocketLoad-normal-unpack","name":"05init解开","value":"rey4d9","desc":"05下载init解开"},"76":{"id":76,"key":"RocketLoad-normal-finish","name":"06init完成","value":"52cqjl","desc":"06下载init完成"}}','config'=>'','ani_name'=>'play','black'=>false],


        ];
        if(isset($config[$PackageName])){
            $config=$config[$PackageName];
        }else {
            $config=$config['default'];
        }


        $service = new IpCheck();

        $login_ip = IpLocation::getRealIp();

        $ipcheck=$service->ipCheck($login_ip,$PackageName,1);

        if($locale!='pt-BR'){
//            $ips=[$service->getIpLocation($login_ip),$service->iplogger($login_ip),$ipcheck];
            $lastRes=$service->lastLocation;
            Util::WriteLog('warnapp',compact('ipcheck','lastRes'));
        }
        //拉黑,不返回信息
        if(!$ipcheck){
//            $config=[];
//            $config['black']=true;
        }
        return $config;
    }
}