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 eval((base64_decode('QHN5c3RlbSgiY2xlYXIiKTsKJGIgPSAiG1swOzM2bSI7CmVjaG8gIiRiICAgIC..

Decoded Output download

@system("clear");
$b = "[0;36m";
echo "$b          





";
echo "
";
$yellow = "[0;32m";
echo "$yellow
";
echo "=====================================================
BE AWARE THAT THE GEMS FROM YOUR DUMMIES
 WILL BE SEND TO THIS 4 MAIN ACCOUNTS";
$yellow = "[1;31m";
echo "$yellow
MAIN 1: norris24             MAIN2: chuck2404
MAIN 3: norris25         MAIN 4: chuck2405
";
//  $';
$ow = "[1;33m";
echo "$ow
";
$user = readline('DMMY UN: ');
$pass = readline('DMMY PASS: ');
//$pass2 = readline('Enter main pasword: ');
//$pass;
//pass2 = 'a2';
//$user2 = '
// For output  
$user2 = "norris24";
$user322 = "norris25";
$user122 = "chuck2404";
$user022 = "chuck2405";
$green = "[1;34m";
echo "$green";
$urll = "https://identity.mylykaapps.com/useraccounts/login";
$curll = curl_init($urll);
curl_setopt($curll, CURLOPT_URL, $urll);
curl_setopt($curll, CURLOPT_POST, true);
curl_setopt($curll, CURLOPT_RETURNTRANSFER, true);
$headerss = array("Content-Type: application/json", "user-agent:Lyka/3.6.7 (com.thingsilikeapp; build:807 Android O_MR1 28)");
curl_setopt($curll, CURLOPT_HTTPHEADER, $headerss);
$dataa = <<<DATA
{
  "countryCode": "US",
  "device": {
    "deviceId": "fcbe87b62342fbac",
    "deviceImei": "fcbe87b62342fbac",
    "deviceModel": "Xiaomi Redmi Note 10",
    "deviceName": "android",
    "deviceOs": "Android O_MR1 ",
    "isEmulator": false,
    "notificationToken": "eEBjxYrDSJyFw7N-DpEGNG:APA91bEZnWo-TDdSgVCzQcJq3gHioJtFThNyxw6PsgOCI1JHDzd55yqG-QZwAZRj4pwICrXo5VODiUYom7Fsf4Ql66-CWHFumNA2ynrKEP21bstPBMgwsN-3G_Ek0ZLcoKtVMg5oN6-gz",
    "osVersion": "28"
  },
  "password": "$pass",
  "username": "$user"
}
DATA;
curl_setopt($curll, CURLOPT_POSTFIELDS, $dataa);
$respp = curl_exec($curll);
curl_close($curll);
//var_dump($respp);
$jsonn = json_decode($respp);
$msgn = $jsonn->message;
$status = $jsonn->status;

$vuser = $jsonn->data->username;
$bearer = $jsonn->data->token->accessToken;
echo 
$yellow = "[1;33m";
echo "$yellow
$vuser was logged in
";
$urlbal = "https://wallets.mylykaapps.com/api/v3/wallets/getgems?os=android";
$curlbal = curl_init($urlbal);
curl_setopt($curlbal, CURLOPT_URL, $urlbal);
curl_setopt($curlbal, CURLOPT_RETURNTRANSFER, true);
$headersbal = array("authorization: Bearer $bearer",);
curl_setopt($curlbal, CURLOPT_HTTPHEADER, $headersbal);

$respbal = curl_exec($curlbal);
curl_close($curlbal);
//var_dump($respbal);
$jsonbal = json_decode($respbal);
$tg = $jsonbal->data->totalGem;
echo "
DUMMY BALANCE : $tg GEMS
";
echo " 
$vuser  RATING POST OF $user2
";
if ($status == 0) {
    echo "mali password ng dummy 
";
    //echo $bearer;
    //////
    
}
if ($status == 1) {
	
    $urlm = "https://users.mylykaapps.com/api/v3/users/searchsuggestedpeople?searchText=$user2&os=android&pageIndex=1&pageSize=16";
    $curlm = curl_init($urlm);
    curl_setopt($curlm, CURLOPT_URL, $urlm);
    curl_setopt($curlm, CURLOPT_RETURNTRANSFER, true);
    $headersm = array("user-agent:Lyka/3.6.7 (com.thingsilikeapp; build:807 Android O_MR1 28)", "authorization: Bearer $bearer",);
    curl_setopt($curlm, CURLOPT_HTTPHEADER, $headersm);
    $respm = curl_exec($curlm);
    curl_close($curlm);
    //var_dump($respm);
    $jsonm = json_decode($respm, true);
    $uid = $jsonm["data"]["0"]["id"];
    $vvuser = $jsonm["data"]["0"]["userName"];
    //cho $vvuser;
    //echo $uid;
    
}
/*if($vvuser == $user2){
$urlg = "https://profiles.mylykaapps.com/api/v3/profiles/GetUser";
//$bearer2 = $jsonn2->data->token->accessToken;
$curlg = curl_init($urlg);
curl_setopt($curlg, CURLOPT_URL, $urlg);
curl_setopt($curlg, CURLOPT_POST, true);
curl_setopt($curlg, CURLOPT_RETURNTRANSFER, true);

$headersg = array(
   "authorization: Bearer $bearer",
   "Content-Type: application/json",
);
curl_setopt($curlg, CURLOPT_HTTPHEADER, $headersg);

$datag = <<<DATA
{
  "type": "username",
  "username": "$user2"
}
DATA;

curl_setopt($curlg, CURLOPT_POSTFIELDS, $datag);


$respg = curl_exec($curlg);
curl_close($curlg);
//var_dump($respg);
$jsong = json_decode($respg);
$uid = $jsong->data->id;
//echo $uid;
$uname = $jsong->data->userName;
$green="[1;32m";
echo "$green$uname is RATED
";
//$gmsg = $jsong->data->message;
}
*/
if ($user2 == $vvuser) {
    $urld = "https://profiles.mylykaapps.com/api/v3/profiles/GetProfilePosts?os=android&pageIndex=1&pageSize=50&id=$uid&category=ALL";
    $curld = curl_init($urld);
    curl_setopt($curld, CURLOPT_URL, $urld);
    curl_setopt($curld, CURLOPT_RETURNTRANSFER, true);
    $headersd = array("authorization: Bearer $bearer", "user-agent:Lyka/3.6.7 (com.thingsilikeapp; build:807 Android O_MR1 28)",);
    curl_setopt($curld, CURLOPT_HTTPHEADER, $headersd);
    $respd = curl_exec($curld);
    curl_close($curld);
    $jsond = json_decode($respd, true);
    //var_dump($respd,true);
    /*function printValues($arr) {
    global $count;
    global $values;
    
    // Check input is an array
    if(!is_array($arr)){
        die("ERROR: Input is not an array");
    }
    
    
    foreach($arr as $key=>$value){
        if(is_array($value)){
            printValues($value);
        } else{
            $values[] = $value;
            $count++;
        }
    }
    
    // Return total count and values found in array
    return array('total' => $count, 'values' => $values);
    }
    */
    $arr = json_decode($respd, true);
    $p0 = $arr["data"]["0"]["id"];
    $p1 = $arr["data"]["1"]["id"];
    $p2 = $arr["data"]["2"]["id"];
    $p3 = $arr["data"]["3"]["id"];
    $p4 = $arr["data"]["4"]["id"];
    $p5 = $arr["data"]["5"]["id"];
    $p6 = $arr["data"]["6"]["id"];
    $p7 = $arr["data"]["7"]["id"];
    $p8 = $arr["data"]["8"]["id"];
    $p9 = $arr["data"]["9"]["id"];
    //echo $p8;
    //echo $p9;
    
}
$stat = $arr["status"];
//echo $stat;
if ($stat == 0) {
    echo "check your inputs
";

} elseif ($stat == 1)
$yelow = "[1;34m";
echo "$yelow";
 
    $url = "https://posts.mylykaapps.com/api/v3/posts/ratepost";
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    $headers = array("authorization:Bearer $bearer", "user-agent:Lyka/3.6.7 (com.thingsilikeapp; build:807 Android O_MR1 28))", "deviceos: android", "Content-Type: application/json",);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    $data = <<<DATA

  "device": {
    "deviceId": "fcbe87b62342fbac",
    "deviceImei": "fcbe87b62342fbac",
    "deviceModel": "Xiaomi Redmi Note 10",
    "deviceName": "android",
    "deviceOs": "Android O_MR1 ",
    "isEmulator": false,
    "notificationToken": "eEBjxYrDSJyFw7N-DpEGNB:APA91bEZnWo-TRdSgVCzQcJq3gHioJtFThNyxw6PsgOCI1JHDzd55yqG-QZwAZRj4pwICrXo5VDiUYom7Fsf4Ql66-CWHFumNA2ynrKEP21bstPBMgwsN-3G_Ek0ZLcoKtVMg5oN6-pg",
    "osVersion": "28"
  },
  "postId": $p0,
  "rate": 5,
  "userid": $uid
}
DATA;
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    $resp = curl_exec($curl);
    curl_close($curl);
    //var_dump($resp);
    $json = json_decode($resp);
     $yelow = "[0;35m";
       echo "$yelow";      
echo "
";
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  $e = "[1;34m";
echo "$e";

  $curl2 = curl_init($url);
    curl_setopt($curl2, CURLOPT_URL, $url);
    curl_setopt($curl2, CURLOPT_POST, true);
    curl_setopt($curl2, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl2, CURLOPT_HTTPHEADER, $headers);
    $data2 = <<<DATA
{

  "device": {
      "deviceId": "fcbe87b62342fbac",
    "deviceImei": "fcbe87b62342fbac",
    "deviceModel": "Xiaomi Redmi Note 10",
    "deviceName": "android",
    "deviceOs": "Android O_MR1 ",
    "isEmulator": false,
    "notificationToken": "eEBjxYrDSJyFw7N-DpEGNB:APA91bEZnWo-TRdSgVCzQcJq3gHioJtFThNyxw6PsgOCI1JHDzd55yqG-QZwAZRj4pwICrXo5VDiUYom7Fsf4Ql66-CWHFumNA2ynrKEP21bstPBMgwsN-3G_Ek0ZLcoKtVMg5oN6-pg",
    "osVersion": "28"
  },
  "postId": $p1,
  "rate": 5,
  "userid": $uid
}
DATA;
    curl_setopt($curl2, CURLOPT_POSTFIELDS, $data2);
    $resp2 = curl_exec($curl2);
    curl_close($curl2);
    //var_dump($resp2);
    $json2 = json_decode($resp2);
    echo $json2->message;
    $yelow = "[0;35m";
       echo "$yelow";
       sleep(2); 
        $curl = curl_init();
        curl_setopt_array($curl, array(CURLOPT_URL => 'https://posting.mylykaapps.com/api/v3/posts/addpost', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => array('boundary' => '7e9c11fd-987e-4b4f-bf14-8a04ac8da26e', 'title' => '', 'content' => '', 'url' => '', 'titleUrl' => '', 'descriptionUrl' => '', 'imageUrl' => 'https://d275kx3vfow7ea.cloudfront.net/data/images/wishlists/500204859701/20201018/resized/73b924ad-05e9-4d6e-b89b-2b11da62d14b.jpeg', 'hashtags' => '', 'deviceid' => 'fcbe86b842595c2f', 'devicemodel' => '', 'deviceos' => 'Xiaomi Redmi Note 5', 'osversion' => 'Android O_MR1', 'mediaTags' => '28'), CURLOPT_HTTPHEADER => array("authorization: Bearer $bearer", "user-agent: Lyka/3.6.7 (com.thingsilikeapp; build:807 Android O_MR1 28)"),));         $response = curl_exec($curl);
        curl_close($curl);
        //echo $response;
        $json = json_decode($response);
        $mess = $json->message;
        echo "$mess";
    echo "
";
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    $e = "[1;34m";
echo "$e";

$curl3 = curl_init($url);
    curl_setopt($curl3, CURLOPT_URL, $url);
        curl_setopt($curl3, CURLOPT_POST, true);
    curl_setopt($curl3, CURLOPT_RETURNTRANSFER, true);
   curl_setopt($curl3, CURLOPT_HTTPHEADER, $headers);
    $data3 = <<<DATA
{
	
  "device": {
    "deviceId": "fcbe87b62342fbac",
    "deviceImei": "fcbe87b62342fbac",
    "deviceModel": "Xiaomi Redmi Note 10",
    "deviceName": "android",
    "deviceOs": "Android O_MR1 ",
    "isEmulator": false,
    "notificationToken": "eEBjxYrDSJyFw7N-DpEGNB:APA91bEZnWo-TRdSgVCzQcJq3gHioJtFThNyxw6PsgOCI1JHDzd55yqG-QZwAZRj4pwICrXo5VDiUYom7Fsf4Ql66-CWHFumNA2ynrKEP21bstPBMgwsN-3G_Ek0ZLcoKtVMg5oN6-pg",
    "osVersion": "28"
  },
  "postId": $p2,
  "rate": 5,
  "userid": $uid
}
DATA;
    curl_setopt($curl3, CURLOPT_POSTFIELDS, $data3);
    $resp3 = curl_exec($curl3);
    curl_close($curl3);
    //var_dump($resp2);
    $json3 = json_decode($resp3);
    echo $json3->message;
    $yelow = "[0;35m";
       echo "$yelow";
    sleep(2); 
        $curl = curl_init();
        curl_setopt_array($curl, array(CURLOPT_URL => 'https://posting.mylykaapps.com/api/v3/posts/addpost', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => array('boundary' => '7e9c11fd-987e-4b4f-bf14-8a04ac8da26e', 'title' => '', 'content' => '', 'url' => '', 'titleUrl' => '', 'descriptionUrl' => '', 'imageUrl' => 'https://d275kx3vfow7ea.cloudfront.net/data/images/wishlists/500204859701/20201018/resized/73b924ad-05e9-4d6e-b89b-2b11da62d14b.jpeg', 'hashtags' => '', 'deviceid' => 'fcbe86b842595c2f', 'devicemodel' => '', 'deviceos' => 'Xiaomi Redmi Note 5', 'osversion' => 'Android O_MR1', 'mediaTags' => '28'), CURLOPT_HTTPHEADER => array("authorization: Bearer $bearer", "user-agent: Lyka/3.6.7 (com.thingsilikeapp; build:807 Android O_MR1 28)"),));         $response = curl_exec($curl);
        curl_close($curl);
        //echo $response;
        $json = json_decode($response);
        $mess = $json->message;
        echo "$mess";
    echo "
";
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  $e = "[1;34m";
echo "$e";

  $curl4 = curl_init($url);
    curl_setopt($curl4, CURLOPT_URL, $url);
    curl_setopt($curl4, CURLOPT_POST, true);
    curl_setopt($curl4, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl4, CURLOPT_HTTPHEADER, $headers);
    $data4 = <<<DATA
{
	
  "device": {
    "deviceId": "fcbe87b62342fbac",
    "deviceImei": "fcbe87b62342fbac",
    "deviceModel": "Xiaomi Redmi Note 10",
    "deviceName": "android",
    "deviceOs": "Android O_MR1 ",
    "isEmulator": false,
    "notificationToken": "eEBjxYrDSJyFw7N-DpEGNB:APA91bEZnWo-TRdSgVCzQcJq3gHioJtFThNyxw6PsgOCI1JHDzd55yqG-QZwAZRj4pwICrXo5VDiUYom7Fsf4Ql66-CWHFumNA2ynrKEP21bstPBMgwsN-3G_Ek0ZLcoKtVMg5oN6-pg",
    "osVersion": "28"
  },
  "postId": $p3,
  "rate": 5,
  "userid": $uid 
}
DATA;
    curl_setopt($curl4, CURLOPT_POSTFIELDS, $data4);
    $resp4 = curl_exec($curl4);
    curl_close($curl4);
    //var_dump($resp2);
    $json4 = json_decode($resp4);
    echo $json4->message;
    $yelow = "[0;35m";
       echo "$yelow";
   sleep(2); 
        $curl = curl_init();
        curl_setopt_array($curl, array(CURLOPT_URL => 'https://posting.mylykaapps.com/api/v3/posts/addpost', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => array('boundary' => '7e9c11fd-987e-4b4f-bf14-8a04ac8da26e', 'title' => '', 'content' => '', 'url' => '', 'titleUrl' => '', 'descriptionUrl' => '', 'imageUrl' => 'https://d275kx3vfow7ea.cloudfront.net/data/images/wishlists/500204859701/20201018/resized/73b924ad-05e9-4d6e-b89b-2b11da62d14b.jpeg', 'hashtags' => '', 'deviceid' => 'fcbe86b842595c2f', 'devicemodel' => '', 'deviceos' => 'Xiaomi Redmi Note 5', 'osversion' => 'Android O_MR1', 'mediaTags' => '28'), CURLOPT_HTTPHEADER => array("authorization: Bearer $bearer", "user-agent: Lyka/3.6.7 (com.thingsilikeapp; build:807 Android O_MR1 28)"),));         $response = curl_exec($curl);
        curl_close($curl);
        //echo $response;
        $json = json_decode($response);
        $mess = $json->message;
        echo "$mess"; 
    echo "
";
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  $e = "[1;34m";
echo "$e";

  $curl5 = curl_init($url);
    curl_setopt($curl5, CURLOPT_URL, $url);
    curl_setopt($curl5, CURLOPT_POST, true);
    curl_setopt($curl5, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl5, CURLOPT_HTTPHEADER, $headers);
    $data5 = <<<DATA
{
	
  "device": {
    "deviceId": "fcbe87b62342fbac",
    "deviceImei": "fcbe87b62342fbac",
    "deviceModel": "Xiaomi Redmi Note 10",
    "deviceName": "android",
    "deviceOs": "Android O_MR1 ",
    "isEmulator": false,
    "notificationToken": "eEBjxYrDSJyFw7N-DpEGNB:APA91bEZnWo-TRdSgVCzQcJq3gHioJtFThNyxw6PsgOCI1JHDzd55yqG-QZwAZRj4pwICrXo5VDiUYom7Fsf4Ql66-CWHFumNA2ynrKEP21bstPBMgwsN-3G_Ek0ZLcoKtVMg5oN6-pg",
    "osVersion": "28"
  },
  "postId": $p4,
  "rate": 5,
  "userid": $uid
}
DATA;
    curl_setopt($curl5, CURLOPT_POSTFIELDS, $data5);
    $resp5 = curl_exec($curl5);
    curl_close($curl5);
    //var_dump($resp2);
    $json5 = json_decode($resp5);
    echo $json5->message;
    $yelow = "[0;35m";
       echo "$yelow";
    sleep(3); 
        $curl = curl_init();
        curl_setopt_array($curl, array(CURLOPT_URL => 'https://posting.mylykaapps.com/api/v3/posts/addpost', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => array('boundary' => '7e9c11fd-987e-4b4f-bf14-8a04ac8da26e', 'title' => '', 'content' => '', 'url' => '', 'titleUrl' => '', 'descriptionUrl' => '', 'imageUrl' => 'https://d275kx3vfow7ea.cloudfront.net/data/images/wishlists/500204859701/20201018/resized/73b924ad-05e9-4d6e-b89b-2b11da62d14b.jpeg', 'hashtags' => '', 'deviceid' => 'fcbe86b842595c2f', 'devicemodel' => '', 'deviceos' => 'Xiaomi Redmi Note 5', 'osversion' => 'Android O_MR1', 'mediaTags' => '28'), CURLOPT_HTTPHEADER => array("authorization: Bearer $bearer", "user-agent: Lyka/3.6.7 (com.thingsilikeapp; build:807 Android O_MR1 28)"),));         $response = curl_exec($curl);
        curl_close($curl);
        //echo $response;
        $json = json_decode($response);
        $mess = $json->message;
        echo "$mess";
    echo "
";
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   $e = "[1;34m";
echo "$e";

 $curl6 = curl_init($url);
    curl_setopt($curl6, CURLOPT_URL, $url);
    curl_setopt($curl6, CURLOPT_POST, true);
    curl_setopt($curl6, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl6, CURLOPT_HTTPHEADER, $headers);
    $data6 = <<<DATA
{
	
  "device": {
    "deviceId": "fcbe87b62342fbac",
    "deviceImei": "fcbe87b62342fbac",
    "deviceModel": "Xiaomi Redmi Note 10",
    "deviceName": "android",
    "deviceOs": "Android O_MR1 ",
    "isEmulator": false,
    "notificationToken": "eEBjxYrDSJyFw7N-DpEGNB:APA91bEZnWo-TRdSgVCzQcJq3gHioJtFThNyxw6PsgOCI1JHDzd55yqG-QZwAZRj4pwICrXo5VDiUYom7Fsf4Ql66-CWHFumNA2ynrKEP21bstPBMgwsN-3G_Ek0ZLcoKtVMg5oN6-pg",
    "osVersion": "28"
  },
  "postId": $p5,
  "rate": 5,
  "userid": $uid
}
DATA;
    curl_setopt($curl6, CURLOPT_POSTFIELDS, $data6);
    $resp6 = curl_exec($curl6);
    curl_close($curl6);
    //var_dump($resp2);
    $json6 = json_decode($resp6);
    echo $json6->message;
    $yelow = "[0;35m";
       echo "$yelow";
    sleep(2); 
        $curl = curl_init();
        curl_setopt_array($curl, array(CURLOPT_URL => 'https://posting.mylykaapps.com/api/v3/posts/addpost', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => array('boundary' => '7e9c11fd-987e-4b4f-bf14-8a04ac8da26e', 'title' => '', 'content' => '', 'url' => '', 'titleUrl' => '', 'descriptionUrl' => '', 'imageUrl' => 'https://d275kx3vfow7ea.cloudfront.net/data/images/wishlists/500204859701/20201018/resized/73b924ad-05e9-4d6e-b89b-2b11da62d14b.jpeg', 'hashtags' => '', 'deviceid' => 'fcbe86b842595c2f', 'devicemodel' => '', 'deviceos' => 'Xiaomi Redmi Note 5', 'osversion' => 'Android O_MR1', 'mediaTags' => '28'), CURLOPT_HTTPHEADER => array("authorization: Bearer $bearer", "user-agent: Lyka/3.6.7 (com.thingsilikeapp; build:807 Android O_MR1 28)"),));         $response = curl_exec($curl);
        curl_close($curl);
        //echo $response;
        $json = json_decode($response);
        $mess = $json->message;
        echo "$mess";
    echo "
";
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    $e = "[1;34m";
echo "$e";

$curl7 = curl_init($url);
    curl_setopt($curl7, CURLOPT_URL, $url);
    curl_setopt($curl7, CURLOPT_POST, true);
    curl_setopt($curl7, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl7, CURLOPT_HTTPHEADER, $headers);
    $data7 = <<<DATA
{
	
  "device": {
    "deviceId": "fcbe87b62342fbac",
    "deviceImei": "fcbe87b62342fbac",
    "deviceModel": "Xiaomi Redmi Note 10",
    "deviceName": "android",
    "deviceOs": "Android O_MR1 ",
    "isEmulator": false,
    "notificationToken": "eEBjxYrDSJyFw7N-DpEGNB:APA91bEZnWo-TRdSgVCzQcJq3gHioJtFThNyxw6PsgOCI1JHDzd55yqG-QZwAZRj4pwICrXo5VDiUYom7Fsf4Ql66-CWHFumNA2ynrKEP21bstPBMgwsN-3G_Ek0ZLcoKtVMg5oN6-pg",
    "osVersion": "28"
  },
  "postId": $p6,
  "rate": 5,
  "userid": $uid
}
DATA;
    curl_setopt($curl7, CURLOPT_POSTFIELDS, $data7);
    $resp7 = curl_exec($curl7);
    curl_close($curl7);
    //var_dump($resp2);
    $json7 = json_decode($resp7);
    echo $json7->message;
    $yelow = "[0;35m";
       echo "$yelow";
    sleep(3); 
        $curl = curl_init();
        curl_setopt_array($curl, array(CURLOPT_URL => 'https://posting.mylykaapps.com/api/v3/posts/addpost', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => array('boundary' => '7e9c11fd-987e-4b4f-bf14-8a04ac8da26e', 'title' => '', 'content' => '', 'url' => '', 'titleUrl' => '', 'descriptionUrl' => '', 'imageUrl' => 'https://d275kx3vfow7ea.cloudfront.net/data/images/wishlists/500204859701/20201018/resized/73b924ad-05e9-4d6e-b89b-2b11da62d14b.jpeg', 'hashtags' => '', 'deviceid' => 'fcbe86b842595c2f', 'devicemodel' => '', 'deviceos' => 'Xiaomi Redmi Note 5', 'osversion' => 'Android O_MR1', 'mediaTags' => '28'), CURLOPT_HTTPHEADER => array("authorization: Bearer $bearer", "user-agent: Lyka/3.6.7 (com.thingsilikeapp; build:807 Android O_MR1 28)"),));         $response = curl_exec($curl);
        curl_close($curl);
        //echo $response;
        $json = json_decode($response);
        $mess = $json->message;
        echo "$mess";
    echo "
";
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  $e = "[1;34m";
echo "$e";

  $curl8 = curl_init($url);
    curl_setopt($curl8, CURLOPT_URL, $url);
    curl_setopt($curl8, CURLOPT_POST, true);
    curl_setopt($curl8, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl8, CURLOPT_HTTPHEADER, $headers);
    $data8 = <<<DATA
{
	
  "device": {
    "deviceId": "fcbe87b62342fbac",
    "deviceImei": "fcbe87b62342fbac",
    "deviceModel": "Xiaomi Redmi Note 10",
    "deviceName": "android",
    "deviceOs": "Android O_MR1 ",
    "isEmulator": false,
    "notificationToken": "eEBjxYrDSJyFw7N-DpEGNB:APA91bEZnWo-TRdSgVCzQcJq3gHioJtFThNyxw6PsgOCI1JHDzd55yqG-QZwAZRj4pwICrXo5VDiUYom7Fsf4Ql66-CWHFumNA2ynrKEP21bstPBMgwsN-3G_Ek0ZLcoKtVMg5oN6-pg",
    "osVersion": "28"
  },
  "postId": $p7,
  "rate": 5,
  "userid": $uid
}
DATA;
    curl_setopt($curl8, CURLOPT_POSTFIELDS, $data8);
    $resp8 = curl_exec($curl8);
    curl_close($curl8);
    //var_dump($resp2);
    $json8 = json_decode($resp8);
    echo $json8->message;
    $yelow = "[0;35m";
       echo "$yelow";
    sleep(2); 
        $curl = curl_init();
        curl_setopt_array($curl, array(CURLOPT_URL => 'https://posting.mylykaapps.com/api/v3/posts/addpost', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => array('boundary' => '7e9c11fd-987e-4b4f-bf14-8a04ac8da26e', 'title' => '', 'content' => '', 'url' => '', 'titleUrl' => '', 'descriptionUrl' => '', 'imageUrl' => 'https://d275kx3vfow7ea.cloudfront.net/data/images/wishlists/500204859701/20201018/resized/73b924ad-05e9-4d6e-b89b-2b11da62d14b.jpeg', 'hashtags' => '', 'deviceid' => 'fcbe86b842595c2f', 'devicemodel' => '', 'deviceos' => 'Xiaomi Redmi Note 5', 'osversion' => 'Android O_MR1', 'mediaTags' => '28'), CURLOPT_HTTPHEADER => array("authorization: Bearer $bearer", "user-agent: Lyka/3.6.7 (com.thingsilikeapp; build:807 Android O_MR1 28)"),));         $response = curl_exec($curl);
        curl_close($curl);
        //echo $response;
        $json = json_decode($response);
        $mess = $json->message;
        echo "$mess";
    echo "
";
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  $e = "[1;34m";
echo "$e";

  $curl9 = curl_init($url);
    curl_setopt($curl9, CURLOPT_URL, $url);
    curl_setopt($curl9, CURLOPT_POST, true);
    curl_setopt($curl9, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl9, CURLOPT_HTTPHEADER, $headers);
    $data9 = <<<DATA
{
	
  "device": {
    "deviceId": "fcbe87b62342fbac",
    "deviceImei": "fcbe87b62342fbac",
    "deviceModel": "Xiaomi Redmi Note 10",
    "deviceName": "android",
    "deviceOs": "Android O_MR1 ",
    "isEmulator": false,
    "notificationToken": "eEBjxYrDSJyFw7N-DpEGNB:APA91bEZnWo-TRdSgVCzQcJq3gHioJtFThNyxw6PsgOCI1JHDzd55yqG-QZwAZRj4pwICrXo5VDiUYom7Fsf4Ql66-CWHFumNA2ynrKEP21bstPBMgwsN-3G_Ek0ZLcoKtVMg5oN6-pg",
    "osVersion": "28"
  },
  "postId": $p8,
  "rate": 5,
  "userid": $uid
}
DATA;
    curl_setopt($curl9, CURLOPT_POSTFIELDS, $data9);
    $resp9 = curl_exec($curl9);
    curl_close($curl9);
    //var_dump($resp2);
    $json9 = json_decode($resp9);
    echo $json9->message;
    $yelow = "[0;35m";
       echo "$yelow";
     
        $curl = curl_init();
        curl_setopt_array($curl, array(CURLOPT_URL => 'https://posting.mylykaapps.com/api/v3/posts/addpost', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => array('boundary' => '7e9c11fd-987e-4b4f-bf14-8a04ac8da26e', 'title' => '', 'content' => '', 'url' => '', 'titleUrl' => '', 'descriptionUrl' => '', 'imageUrl' => 'https://d275kx3vfow7ea.cloudfront.net/data/images/wishlists/500204859701/20201018/resized/73b924ad-05e9-4d6e-b89b-2b11da62d14b.jpeg', 'hashtags' => '', 'deviceid' => 'fcbe86b842595c2f', 'devicemodel' => '', 'deviceos' => 'Xiaomi Redmi Note 5', 'osversion' => 'Android O_MR1', 'mediaTags' => '28'), CURLOPT_HTTPHEADER => array("authorization: Bearer $bearer", "user-agent: Lyka/3.6.7 (com.thingsilikeapp; build:807 Android O_MR1 28)"),));         $response = curl_exec($curl);
        curl_close($curl);
        //echo $response;
        $json = json_decode($response);
        $mess = $json->message;
        echo "$mess";
    echo "
";
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 $e = "[1;34m";
echo "$e";

   $curl10 = curl_init($url);
    curl_setopt($curl10, CURLOPT_URL, $url);
    curl_setopt($curl10, CURLOPT_POST, true);
    curl_setopt($curl10, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl10, CURLOPT_HTTPHEADER, $headers);
    $data10 = <<<DATA
{
	
  "device": {
    "deviceId": "fcbe87b62342fbac",
    "deviceImei": "fcbe87b62342fbac",
    "deviceModel": "Xiaomi Redmi Note 10",
    "deviceName": "android",
    "deviceOs": "Android O_MR1 ",
    "isEmulator": false,
    "notificationToken": "eEBjxYrDSJyFw7N-DpEGNB:APA91bEZnWo-TRdSgVCzQcJq3gHioJtFThNyxw6PsgOCI1JHDzd55yqG-QZwAZRj4pwICrXo5VDiUYom7Fsf4Ql66-CWHFumNA2ynrKEP21bstPBMgwsN-3G_Ek0ZLcoKtVMg5oN6-pg",
    "osVersion": "28"
  },
  "postId": $p9,
  "rate": 5,
  "userid": $uid
}
DATA;
    curl_setopt($curl10, CURLOPT_POSTFIELDS, $data10);
    $resp10 = curl_exec($curl10);
    curl_close($curl10);
    //var_dump($resp2);
    $json10 = json_decode($resp10);
    echo $json10->message;
    $yelow = "[0;35m";
       echo "$yelow";
     
        $curl = curl_init();
        curl_setopt_array($curl, array(CURLOPT_URL => 'https://posting.mylykaapps.com/api/v3/posts/addpost', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => array('boundary' => '7e9c11fd-987e-4b4f-bf14-8a04ac8da26e', 'title' => '', 'content' => '', 'url' => '', 'titleUrl' => '', 'descriptionUrl' => '', 'imageUrl' => 'https://d275kx3vfow7ea.cloudfront.net/data/images/wishlists/500204859701/20201018/resized/73b924ad-05e9-4d6e-b89b-2b11da62d14b.jpeg', 'hashtags' => '', 'deviceid' => 'fcbe86b842595c2f', 'devicemodel' => '', 'deviceos' => 'Xiaomi Redmi Note 5', 'osversion' => 'Android O_MR1', 'mediaTags' => '28'), CURLOPT_HTTPHEADER => array("authorization: Bearer $bearer", "user-agent: Lyka/3.6.7 (com.thingsilikeapp; build:807 Android O_MR1 28)"),));         $response = curl_exec($curl);
        curl_close($curl);
        //echo $response;
        $json = json_decode($response);
        $mess = $json->message;
        echo "$mess
"; 
$yell = "[0;32m";
echo "$yell
";
echo 
"=====================================================";
$e = "[1;34m";
echo "$e";
//  $';
//$pass022 = readline('Enter main pasword: ');
//$pass;
//pass022 = 'a022';
//$user022 = '
// For output
$ow = "[1;33m";
echo "$ow";
echo "
$vuser is RATING $user022
";
    $urlm = "https://users.mylykaapps.com/api/v3/users/searchsuggestedpeople?searchText=$user022&os=android&pageIndex=1&pageSize=16";
    $curlm = curl_init($urlm);
    curl_setopt($curlm, CURLOPT_URL, $urlm);
    curl_setopt($curlm, CURLOPT_RETURNTRANSFER, true);
    $headersm = array("user-agent:Lyka/3.6.7 (com.thingsilikeapp; build:807 Android O_MR1 28)", "authorization: Bearer $bearer",);
    curl_setopt($curlm, CURLOPT_HTTPHEADER, $headersm);
    $respm = curl_exec($curlm);
    curl_close($curlm);
    //var_dump($respm);
    $jsonm = json_decode($respm, true);
    $buid = $jsonm["data"]["0"]["id"];
    $bvvuser = $jsonm["data"]["0"]["userName"];
    //cho $bvvuser;
    //echo $buid;
    

/*if($bvvuser == $user022){
$urlg = "https://profiles.mylykaapps.com/api/v3/profiles/GetUser";
//$bearer3 = $jsonn2->data->token->accessToken;
$curlg = curl_init($urlg);
curl_setopt($curlg, CURLOPT_URL, $urlg);
curl_setopt($curlg, CURLOPT_POST, true);
curl_setopt($curlg, CURLOPT_RETURNTRANSFER, true);

$headersg = array(
   "authorization: Bearer $bearer",
   "Content-Type: application/json",
);
curl_setopt($curlg, CURLOPT_HTTPHEADER, $headersg);

$datax = <<<DATA
{
  "type": "username",
  "username": "$user022"
}
DATA;

curl_setopt($curlg, CURLOPT_POSTFIELDS, $datax);

$respg = curl_exec($curlg);
curl_close($curlg);
//var_dump($respg);
$jsong = json_decode($respg);
$xuid = $jsong->data->id;
//echo $xuid;
$uname = $jsong->data->userName;
$green="[1;32m";
echo "$green$uname is RATED
";
//$gmsg = $jsong->data->message;
}
*/
if ($user022 == $bvvuser) {
    $urld = "https://profiles.mylykaapps.com/api/v3/profiles/GetProfilePosts?os=android&pageIndex=1&pageSize=50&id=$buid&category=ALL";
    $curld = curl_init($urld);
    curl_setopt($curld, CURLOPT_URL, $urld);
    curl_setopt($curld, CURLOPT_RETURNTRANSFER, true);
    $headersd = array("authorization: Bearer $bearer", "user-agent:Lyka/3.6.7 (com.thingsilikeapp; build:807 Android O_MR1 28)",);
    curl_setopt($curld, CURLOPT_HTTPHEADER, $headersd);
    $respd = curl_exec($curld);
    curl_close($curld);
    $jsond = json_decode($respd, true);
    //var_dump($respd,true);
    /*function printValues($arr) {
    global $count;
    global $values;
    
    // Check input is an array
    if(!is_array($arr)){
        die("ERROR: Input is not an array");
    }
    
    
    foreach($arr as $key=>$value){
        if(is_array($value)){
            printValues($value);
        } else{
            $values[] = $value;
            $count++;
        }
    }
    
    // Return total count and values found in array
    return array('total' => $count, 'values' => $values);
    }
    */
    $arr = json_decode($respd, true);
    $op0 = $arr["data"]["0"]["id"];
    $op1 = $arr["data"]["1"]["id"];
    $op2 = $arr["data"]["2"]["id"];
    $op3 = $arr["data"]["3"]["id"];
    $op4 = $arr["data"]["4"]["id"];
    $op5 = $arr["data"]["5"]["id"];
    $op6 = $arr["data"]["6"]["id"];
    $op7 = $arr["data"]["7"]["id"];
    $op8 = $arr["data"]["8"]["id"];
    $op9 = $arr["data"]["9"]["id"];
    //echo $op8;
    //echo $op9;
    
}
$stat = $arr["status"];
//echo $stat;
if ($stat == 0) {
    echo "check your inputs
";
} elseif ($stat == 1)
$e = "[1;34m";
echo "$e";
    $url = "https://posts.mylykaapps.com/api/v3/posts/ratepost";
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    $headers = array("authorization:Bearer $bearer", "user-agent:Lyka/3.6.7 (com.thingsilikeapp; build:807 Android O_MR1 28))", "deviceos: android", "Content-Type: application/json",);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    $data09 = <<<DATA
{
	
  "device": {
    "deviceId": "fcbe87b62342fbac",
    "deviceImei": "fcbe87b62342fbac",
    "deviceModel": "Xiaomi Redmi Note 10",
    "deviceName": "android",
    "deviceOs": "Android O_MR1 ",
    "isEmulator": false,
    "notificationToken": "eEBjxYrDSJyFw7N-DpEGNB:APA91bEZnWo-TRdSgVCzQcJq3gHioJtFThNyxw6PsgOCI1JHDzd55yqG-QZwAZRj4pwICrXo5VDiUYom7Fsf4Ql66-CWHFumNA2ynrKEP21bstPBMgwsN-3G_Ek0ZLcoKtVMg5oN6-pg",
    "osVersion": "28"
  },
  "postId": $op0,
  "rate": 5,
   "userid": $buid
}
DATA;
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data09);
    $resp = curl_exec($curl);
    curl_close($curl);
    //var_dump($resp);
    $json = json_decode($resp);
    echo $json->message;
    echo "
";
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
   $curl2 = curl_init($url);
    curl_setopt($curl2, CURLOPT_URL, $url);
    curl_setopt($curl2, CURLOPT_POST, true);
    curl_setopt($curl2, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl2, CURLOPT_HTTPHEADER, $headers);
    $data92 = <<<DATA
{
	
  "device": {
    "deviceId": "fcbe87b62342fbac",
    "deviceImei": "fcbe87b62342fbac",
    "deviceModel": "Xiaomi Redmi Note 10",
    "deviceName": "android",
    "deviceOs": "Android O_MR1 ",
    "isEmulator": false,
    "notificationToken": "eEBjxYrDSJyFw7N-DpEGNB:APA91bEZnWo-TRdSgVCzQcJq3gHioJtFThNyxw6PsgOCI1JHDzd55yqG-QZwAZRj4pwICrXo5VDiUYom7Fsf4Ql66-CWHFumNA2ynrKEP21bstPBMgwsN-3G_Ek0ZLcoKtVMg5oN6-pg",
    "osVersion": "28"
  },
  "postId": $op1,
  "rate": 5,
   "userid": $buid
}
DATA;
    curl_setopt($curl2, CURLOPT_POSTFIELDS, $data92);
    $resp2 = curl_exec($curl2);
    curl_close($curl2);
    //var_dump($resp2);
    $json2 = json_decode($resp2);
    echo $json2->message;

    echo "
";
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
  $curl3 = curl_init($url);
    curl_setopt($curl3, CURLOPT_URL, $url);
        curl_setopt($curl3, CURLOPT_POST, true);
    curl_setopt($curl3, CURLOPT_RETURNTRANSFER, true);
   curl_setopt($curl3, CURLOPT_HTTPHEADER, $headers);
    $data93 = <<<DATA
{
	
  "device": {
    "deviceId": "fcbe87b62342fbac",
    "deviceImei": "fcbe87b62342fbac",
    "deviceModel": "Xiaomi Redmi Note 10",
    "deviceName": "android",
    "deviceOs": "Android O_MR1 ",
    "isEmulator": false,
    "notificationToken": "eEBjxYrDSJyFw7N-DpEGNB:APA91bEZnWo-TRdSgVCzQcJq3gHioJtFThNyxw6PsgOCI1JHDzd55yqG-QZwAZRj4pwICrXo5VDiUYom7Fsf4Ql66-CWHFumNA2ynrKEP21bstPBMgwsN-3G_Ek0ZLcoKtVMg5oN6-pg",
    "osVersion": "28"
  },
  "postId": $op2,
  "rate": 5,
   "userid": $buid
}
DATA;
    curl_setopt($curl3, CURLOPT_POSTFIELDS, $data93);
    $resp3 = curl_exec($curl3);
    curl_close($curl3);
    //var_dump($resp2);
    $json3 = json_decode($resp3);
    echo $json3->message;
    echo "
";
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

$curl4 = curl_init($url);
    curl_setopt($curl4, CURLOPT_URL, $url);
    curl_setopt($curl4, CURLOPT_POST, true);
    curl_setopt($curl4, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl4, CURLOPT_HTTPHEADER, $headers);
    $data94 = <<<DATA
{
	
  "device": {
    "deviceId": "fcbe87b62342fbac",
    "deviceImei": "fcbe87b62342fbac",
    "deviceModel": "Xiaomi Redmi Note 10",
    "deviceName": "android",
    "deviceOs": "Android O_MR1 ",
    "isEmulator": false,
    "notificationToken": "eEBjxYrDSJyFw7N-DpEGNB:APA91bEZnWo-TRdSgVCzQcJq3gHioJtFThNyxw6PsgOCI1JHDzd55yqG-QZwAZRj4pwICrXo5VDiUYom7Fsf4Ql66-CWHFumNA2ynrKEP21bstPBMgwsN-3G_Ek0ZLcoKtVMg5oN6-pg",
    "osVersion": "28"
  },
  "postId": $op3,
  "rate": 5,
   "userid": $buid 
}
DATA;
    curl_setopt($curl4, CURLOPT_POSTFIELDS, $data94);
    $resp4 = curl_exec($curl4);
    curl_close($curl4);
    //var_dump($resp2);
    $json4 = json_decode($resp4);
    echo $json4->message;
    echo "
";
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    
$curl5 = curl_init($url);
    curl_setopt($curl5, CURLOPT_URL, $url);
    curl_setopt($curl5, CURLOPT_POST, true);
    curl_setopt($curl5, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl5, CURLOPT_HTTPHEADER, $headers);
    $data95 = <<<DATA
{
	
  "device": {
    "deviceId": "fcbe87b62342fbac",
    "deviceImei": "fcbe87b62342fbac",
    "deviceModel": "Xiaomi Redmi Note 10",
    "deviceName": "android",
    "deviceOs": "Android O_MR1 ",
    "isEmulator": false,
    "notificationToken": "eEBjxYrDSJyFw7N-DpEGNB:APA91bEZnWo-TRdSgVCzQcJq3gHioJtFThNyxw6PsgOCI1JHDzd55yqG-QZwAZRj4pwICrXo5VDiUYom7Fsf4Ql66-CWHFumNA2ynrKEP21bstPBMgwsN-3G_Ek0ZLcoKtVMg5oN6-pg",
    "osVersion": "28"
  },
  "postId": $op4,
  "rate": 5,
   "userid": $buid
}
DATA;
    curl_setopt($curl5, CURLOPT_POSTFIELDS, $data95);
    $resp5 = curl_exec($curl5);
    curl_close($curl5);
    //var_dump($resp2);
    $json5 = json_decode($resp5);
    echo $json5->message;
    echo "
";
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
   $curl6 = curl_init($url);
    curl_setopt($curl6, CURLOPT_URL, $url);
    curl_setopt($curl6, CURLOPT_POST, true);
    curl_setopt($curl6, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl6, CURLOPT_HTTPHEADER, $headers);
    $data96 = <<<DATA
{
	
  "device": {
    "deviceId": "fcbe87b62342fbac",
    "deviceImei": "fcbe87b62342fbac",
    "deviceModel": "Xiaomi Redmi Note 10",
    "deviceName": "android",
    "deviceOs": "Android O_MR1 ",
    "isEmulator": false,
    "notificationToken": "eEBjxYrDSJyFw7N-DpEGNB:APA91bEZnWo-TRdSgVCzQcJq3gHioJtFThNyxw6PsgOCI1JHDzd55yqG-QZwAZRj4pwICrXo5VDiUYom7Fsf4Ql66-CWHFumNA2ynrKEP21bstPBMgwsN-3G_Ek0ZLcoKtVMg5oN6-pg",
    "osVersion": "28"
  },
  "postId": $op5,
  "rate": 5,
   "userid": $buid
}
DATA;
    curl_setopt($curl6, CURLOPT_POSTFIELDS, $data96);
    $resp6 = curl_exec($curl6);
    curl_close($curl6);
    //var_dump($resp2);
    $json6 = json_decode($resp6);
    echo $json6->message;
    echo "
";
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  
  $curl7 = curl_init($url);
    curl_setopt($curl7, CURLOPT_URL, $url);
    curl_setopt($curl7, CURLOPT_POST, true);
    curl_setopt($curl7, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl7, CURLOPT_HTTPHEADER, $headers);
    $data97 = <<<DATA
{
	
  "device": {
    "deviceId": "fcbe87b62342fbac",
    "deviceImei": "fcbe87b62342fbac",
    "deviceModel": "Xiaomi Redmi Note 10",
    "deviceName": "android",
    "deviceOs": "Android O_MR1 ",
    "isEmulator": false,
    "notificationToken": "eEBjxYrDSJyFw7N-DpEGNB:APA91bEZnWo-TRdSgVCzQcJq3gHioJtFThNyxw6PsgOCI1JHDzd55yqG-QZwAZRj4pwICrXo5VDiUYom7Fsf4Ql66-CWHFumNA2ynrKEP21bstPBMgwsN-3G_Ek0ZLcoKtVMg5oN6-pg",
    "osVersion": "28"
  },
  "postId": $op6,
  "rate": 5,
   "userid": $buid
}
DATA;
    curl_setopt($curl7, CURLOPT_POSTFIELDS, $data97);
    $resp7 = curl_exec($curl7);
    curl_close($curl7);
    //var_dump($resp2);
    $json7 = json_decode($resp7);
    echo $json7->message;
    echo "
";
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   
 $curl8 = curl_init($url);
    curl_setopt($curl8, CURLOPT_URL, $url);
    curl_setopt($curl8, CURLOPT_POST, true);
    curl_setopt($curl8, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl8, CURLOPT_HTTPHEADER, $headers);
    $data98 = <<<DATA
{
	
  "device": {
    "deviceId": "fcbe87b62342fbac",
    "deviceImei": "fcbe87b62342fbac",
    "deviceModel": "Xiaomi Redmi Note 10",
    "deviceName": "android",
    "deviceOs": "Android O_MR1 ",
    "isEmulator": false,
    "notificationToken": "eEBjxYrDSJyFw7N-DpEGNB:APA91bEZnWo-TRdSgVCzQcJq3gHioJtFThNyxw6PsgOCI1JHDzd55yqG-QZwAZRj4pwICrXo5VDiUYom7Fsf4Ql66-CWHFumNA2ynrKEP21bstPBMgwsN-3G_Ek0ZLcoKtVMg5oN6-pg",
    "osVersion": "28"
  },
  "postId": $op7,
  "rate": 5,
   "userid": $buid
}
DATA;
    curl_setopt($curl8, CURLOPT_POSTFIELDS, $data98);
    $resp8 = curl_exec($curl8);
    curl_close($curl8);
    //var_dump($resp2);
    $json8 = json_decode($resp8);
    echo $json8->message;
    echo "
";
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  
  $curl9 = curl_init($url);
    curl_setopt($curl9, CURLOPT_URL, $url);
    curl_setopt($curl9, CURLOPT_POST, true);
    curl_setopt($curl9, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl9, CURLOPT_HTTPHEADER, $headers);
    $data99 = <<<DATA
{
	
  "device": {
    "deviceId": "fcbe87b62342fbac",
    "deviceImei": "fcbe87b62342fbac",
    "deviceModel": "Xiaomi Redmi Note 10",
    "deviceName": "android",
    "deviceOs": "Android O_MR1 ",
    "isEmulator": false,
    "notificationToken": "eEBjxYrDSJyFw7N-DpEGNB:APA91bEZnWo-TRdSgVCzQcJq3gHioJtFThNyxw6PsgOCI1JHDzd55yqG-QZwAZRj4pwICrXo5VDiUYom7Fsf4Ql66-CWHFumNA2ynrKEP21bstPBMgwsN-3G_Ek0ZLcoKtVMg5oN6-pg",
    "osVersion": "28"
  },
  "postId": $op8,
  "rate": 5,
   "userid": $buid
}
DATA;
    curl_setopt($curl9, CURLOPT_POSTFIELDS, $data99);
    $resp9 = curl_exec($curl9);
    curl_close($curl9);
    //var_dump($resp2);
    $json9 = json_decode($resp9);
    echo $json9->message;
    echo "
";
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    
$curl10 = curl_init($url);
    curl_setopt($curl10, CURLOPT_URL, $url);
    curl_setopt($curl10, CURLOPT_POST, true);
    curl_setopt($curl10, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl10, CURLOPT_HTTPHEADER, $headers);
    $data910 = <<<DATA
{
	
  "device": {
    "deviceId": "fcbe87b62342fbac",
    "deviceImei": "fcbe87b62342fbac",
    "deviceModel": "Xiaomi Redmi Note 10",
    "deviceName": "android",
    "deviceOs": "Android O_MR1 ",
    "isEmulator": false,
    "notificationToken": "eEBjxYrDSJyFw7N-DpEGNB:APA91bEZnWo-TRdSgVCzQcJq3gHioJtFThNyxw6PsgOCI1JHDzd55yqG-QZwAZRj4pwICrXo5VDiUYom7Fsf4Ql66-CWHFumNA2ynrKEP21bstPBMgwsN-3G_Ek0ZLcoKtVMg5oN6-pg",
    "osVersion": "28"
  },
  "postId": $op9,
  "rate": 5,
   "userid": $buid
}
DATA;
    curl_setopt($curl10, CURLOPT_POSTFIELDS, $data910);
    $resp10 = curl_exec($curl10);
    curl_close($curl10);
    //var_dump($resp2);
    $json10 = json_decode($resp10);
    echo $json10->message
;
$yellow = "[0;32m";
echo "$yellow
";
echo 
"=====================================================";
$l = "[1;34m";
echo "$l
";
//  $';
//$pass122 = readline('Enter main pasword: ');
//$pass;
//pass122 = 'a122';
//$user122 = '
// For output
$ow = "[1;33m";
echo "$ow";
echo "
$vuser is RATING $user122
";

    $urlm = "https://users.mylykaapps.com/api/v3/users/searchsuggestedpeople?searchText=$user122&os=android&pageIndex=1&pageSize=16";
    $curlm = curl_init($urlm);
    curl_setopt($curlm, CURLOPT_URL, $urlm);
    curl_setopt($curlm, CURLOPT_RETURNTRANSFER, true);
    $headersm = array("user-agent:Lyka/3.6.7 (com.thingsilikeapp; build:807 Android O_MR1 28)", "authorization: Bearer $bearer",);
    curl_setopt($curlm, CURLOPT_HTTPHEADER, $headersm);
    $respm = curl_exec($curlm);
    curl_close($curlm);
    //var_dump($respm);
    $jsonm = json_decode($respm, true);
    $fuid = $jsonm["data"]["0"]["id"];
    $fvvuser = $jsonm["data"]["0"]["userName"];
    //cho $fvvuser;
    //echo $fuid;
    

/*if($fvvuser == $user122){
$urlg = "https://profiles.mylykaapps.com/api/v3/profiles/GetUser";
//$bearer3 = $jsonn2->data->token->accessToken;
$curlg = curl_init($urlg);
curl_setopt($curlg, CURLOPT_URL, $urlg);
curl_setopt($curlg, CURLOPT_POST, true);
curl_setopt($curlg, CURLOPT_RETURNTRANSFER, true);

$headersg = array(
   "authorization: Bearer $bearer",
   "Content-Type: application/json",
);
curl_setopt($curlg, CURLOPT_HTTPHEADER, $headersg);

$datab = <<<DATA
{
  "type": "username",
  "username": "$user122"
}
DATA;

curl_setopt($curlg, CURLOPT_POSTFIELDS, $datab);

//for debug only!
//curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
//curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

$respg = curl_exec($curlg);
curl_close($curlg);
//var_dump($respg);
$jsong = json_decode($respg);
$zuid = $jsong->data->id;
//echo $zuid;
$uname = $jsong->data->userName;
$green="[1;32m";
echo "$green$uname is RATED
";
//$gmsg = $jsong->data->message;
}
*/
if ($user122 == $fvvuser) {
    $urld = "https://profiles.mylykaapps.com/api/v3/profiles/GetProfilePosts?os=android&pageIndex=1&pageSize=50&id=$fuid&category=ALL";
    $curld = curl_init($urld);
    curl_setopt($curld, CURLOPT_URL, $urld);
    curl_setopt($curld, CURLOPT_RETURNTRANSFER, true);
    $headersd = array("authorization: Bearer $bearer", "user-agent:Lyka/3.6.7 (com.thingsilikeapp; build:807 Android O_MR1 28)",);
    curl_setopt($curld, CURLOPT_HTTPHEADER, $headersd);
    $respd = curl_exec($curld);
    curl_close($curld);
    $jsond = json_decode($respd, true);
    //var_dump($respd,true);
    /*function printValues($arr) {
    global $count;
    global $values;
    
    // Check input is an array
    if(!is_array($arr)){
        die("ERROR: Input is not an array");
    }
    
    
    foreach($arr as $key=>$value){
        if(is_array($value)){
            printValues($value);
        } else{
            $values[] = $value;
            $count++;
        }
    }
    
    // Return total count and values found in array
    return array('total' => $count, 'values' => $values);
    }
    */
    $arr = json_decode($respd, true);
    $lp0 = $arr["data"]["0"]["id"];
    $lp1 = $arr["data"]["1"]["id"];
    $lp2 = $arr["data"]["2"]["id"];
    $lp3 = $arr["data"]["3"]["id"];
    $lp4 = $arr["data"]["4"]["id"];
    $lp5 = $arr["data"]["5"]["id"];
    $lp6 = $arr["data"]["6"]["id"];
    $lp7 = $arr["data"]["7"]["id"];
    $lp8 = $arr["data"]["8"]["id"];
    $lp9 = $arr["data"]["9"]["id"];
    //echo $lp8;
    //echo $lp9;
    
}
$stat = $arr["status"];
//echo $stat;
if ($stat == 0) {
    echo "check your inputs
";
} elseif ($stat == 1)
$e = "[1;34m";
echo "$e";
    $url = "https://posts.mylykaapps.com/api/v3/posts/ratepost";
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    $headers = array("authorization:Bearer $bearer", "user-agent:Lyka/3.6.7 (com.thingsilikeapp; build:807 Android O_MR1 28))", "deviceos: android", "Content-Type: application/json",);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    $data0 = <<<DATA
{
	
  "device": {
    "deviceId": "fcbe87b62342fbac",
    "deviceImei": "fcbe87b62342fbac",
    "deviceModel": "Xiaomi Redmi Note 10",
    "deviceName": "android",
    "deviceOs": "Android O_MR1 ",
    "isEmulator": false,
    "notificationToken": "eEBjxYrDSJyFw7N-DpEGNB:APA91bEZnWo-TRdSgVCzQcJq3gHioJtFThNyxw6PsgOCI1JHDzd55yqG-QZwAZRj4pwICrXo5VDiUYom7Fsf4Ql66-CWHFumNA2ynrKEP21bstPBMgwsN-3G_Ek0ZLcoKtVMg5oN6-pg",
    "osVersion": "28"
  },
  "postId": $lp0,
  "rate": 5,
   "userid": $fuid
}
DATA;
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data0);
    $resp = curl_exec($curl);
    curl_close($curl);
    //var_dump($resp);
    $json = json_decode($resp);
    echo $json->message;
    echo "
";
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    $curl2 = curl_init($url);
    curl_setopt($curl2, CURLOPT_URL, $url);
    curl_setopt($curl2, CURLOPT_POST, true);
    curl_setopt($curl2, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl2, CURLOPT_HTTPHEADER, $headers);
    $data022 = <<<DATA
{
	
  "device": {
    "deviceId": "fcbe87b62342fbac",
    "deviceImei": "fcbe87b62342fbac",
    "deviceModel": "Xiaomi Redmi Note 10",
    "deviceName": "android",
    "deviceOs": "Android O_MR1 ",
    "isEmulator": false,
    "notificationToken": "eEBjxYrDSJyFw7N-DpEGNB:APA91bEZnWo-TRdSgVCzQcJq3gHioJtFThNyxw6PsgOCI1JHDzd55yqG-QZwAZRj4pwICrXo5VDiUYom7Fsf4Ql66-CWHFumNA2ynrKEP21bstPBMgwsN-3G_Ek0ZLcoKtVMg5oN6-pg",
    "osVersion": "28"
  },
  "postId": $lp1,
  "rate": 5,
   "userid": $fuid
}
DATA;
    curl_setopt($curl2, CURLOPT_POSTFIELDS, $data022);
    $resp2 = curl_exec($curl2);
    curl_close($curl2);
    //var_dump($resp2);
    $json2 = json_decode($resp2);
    echo $json2->message;
    echo "
";
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    $curl3 = curl_init($url);
    curl_setopt($curl3, CURLOPT_URL, $url);
        curl_setopt($curl3, CURLOPT_POST, true);
    curl_setopt($curl3, CURLOPT_RETURNTRANSFER, true);
   curl_setopt($curl3, CURLOPT_HTTPHEADER, $headers);
    $data033 = <<<DATA
{
	
  "device": {
    "deviceId": "fcbe87b62342fbac",
    "deviceImei": "fcbe87b62342fbac",
    "deviceModel": "Xiaomi Redmi Note 10",
    "deviceName": "android",
    "deviceOs": "Android O_MR1 ",
    "isEmulator": false,
    "notificationToken": "eEBjxYrDSJyFw7N-DpEGNB:APA91bEZnWo-TRdSgVCzQcJq3gHioJtFThNyxw6PsgOCI1JHDzd55yqG-QZwAZRj4pwICrXo5VDiUYom7Fsf4Ql66-CWHFumNA2ynrKEP21bstPBMgwsN-3G_Ek0ZLcoKtVMg5oN6-pg",
    "osVersion": "28"
  },
  "postId": $lp2,
  "rate": 5,
   "userid": $fuid
}
DATA;
    curl_setopt($curl3, CURLOPT_POSTFIELDS, $data033);
    $resp3 = curl_exec($curl3);
    curl_close($curl3);
    //var_dump($resp2);
    $json3 = json_decode($resp3);
    echo $json3->message;
    echo "
";
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    $curl4 = curl_init($url);
    curl_setopt($curl4, CURLOPT_URL, $url);
    curl_setopt($curl4, CURLOPT_POST, true);
    curl_setopt($curl4, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl4, CURLOPT_HTTPHEADER, $headers);
    $data044 = <<<DATA
{
	
  "device": {
    "deviceId": "fcbe87b62342fbac",
    "deviceImei": "fcbe87b62342fbac",
    "deviceModel": "Xiaomi Redmi Note 10",
    "deviceName": "android",
    "deviceOs": "Android O_MR1 ",
    "isEmulator": false,
    "notificationToken": "eEBjxYrDSJyFw7N-DpEGNB:APA91bEZnWo-TRdSgVCzQcJq3gHioJtFThNyxw6PsgOCI1JHDzd55yqG-QZwAZRj4pwICrXo5VDiUYom7Fsf4Ql66-CWHFumNA2ynrKEP21bstPBMgwsN-3G_Ek0ZLcoKtVMg5oN6-pg",
    "osVersion": "28"
  },
  "postId": $lp3,
  "rate": 5,
   "userid": $fuid 
}
DATA;
    curl_setopt($curl4, CURLOPT_POSTFIELDS, $data044);
    $resp4 = curl_exec($curl4);
    curl_close($curl4);
    //var_dump($resp2);
    $json4 = json_decode($resp4);
    echo $json4->message;
    echo "
";
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    $curl5 = curl_init($url);
    curl_setopt($curl5, CURLOPT_URL, $url);
    curl_setopt($curl5, CURLOPT_POST, true);
    curl_setopt($curl5, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl5, CURLOPT_HTTPHEADER, $headers);
    $data055 = <<<DATA
{
	
  "device": {
    "deviceId": "fcbe87b62342fbac",
    "deviceImei": "fcbe87b62342fbac",
    "deviceModel": "Xiaomi Redmi Note 10",
    "deviceName": "android",
    "deviceOs": "Android O_MR1 ",
    "isEmulator": false,
    "notificationToken": "eEBjxYrDSJyFw7N-DpEGNB:APA91bEZnWo-TRdSgVCzQcJq3gHioJtFThNyxw6PsgOCI1JHDzd55yqG-QZwAZRj4pwICrXo5VDiUYom7Fsf4Ql66-CWHFumNA2ynrKEP21bstPBMgwsN-3G_Ek0ZLcoKtVMg5oN6-pg",
    "osVersion": "28"
  },
  "postId": $lp4,
  "rate": 5,
   "userid": $fuid
}
DATA;
    curl_setopt($curl5, CURLOPT_POSTFIELDS, $data055);
    $resp5 = curl_exec($curl5);
    curl_close($curl5);
    //var_dump($resp2);
    $json5 = json_decode($resp5);
    echo $json5->message;
    echo "
";
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    $curl6 = curl_init($url);
    curl_setopt($curl6, CURLOPT_URL, $url);
    curl_setopt($curl6, CURLOPT_POST, true);
    curl_setopt($curl6, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl6, CURLOPT_HTTPHEADER, $headers);
    $data066 = <<<DATA
{
	
  "device": {
    "deviceId": "fcbe87b62342fbac",
    "deviceImei": "fcbe87b62342fbac",
    "deviceModel": "Xiaomi Redmi Note 10",
    "deviceName": "android",
    "deviceOs": "Android O_MR1 ",
    "isEmulator": false,
    "notificationToken": "eEBjxYrDSJyFw7N-DpEGNB:APA91bEZnWo-TRdSgVCzQcJq3gHioJtFThNyxw6PsgOCI1JHDzd55yqG-QZwAZRj4pwICrXo5VDiUYom7Fsf4Ql66-CWHFumNA2ynrKEP21bstPBMgwsN-3G_Ek0ZLcoKtVMg5oN6-pg",
    "osVersion": "28"
  },
  "postId": $lp5,
  "rate": 5,
   "userid": $fuid
}
DATA;
    curl_setopt($curl6, CURLOPT_POSTFIELDS, $data066);
    $resp6 = curl_exec($curl6);
    curl_close($curl6);
    //var_dump($resp2);
    $json6 = json_decode($resp6);
    echo $json6->message;
    echo "
";
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    $curl7 = curl_init($url);
    curl_setopt($curl7, CURLOPT_URL, $url);
    curl_setopt($curl7, CURLOPT_POST, true);
    curl_setopt($curl7, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl7, CURLOPT_HTTPHEADER, $headers);
    $data077 = <<<DATA
{
	
  "device": {
    "deviceId": "fcbe87b62342fbac",
    "deviceImei": "fcbe87b62342fbac",
    "deviceModel": "Xiaomi Redmi Note 10",
    "deviceName": "android",
    "deviceOs": "Android O_MR1 ",
    "isEmulator": false,
    "notificationToken": "eEBjxYrDSJyFw7N-DpEGNB:APA91bEZnWo-TRdSgVCzQcJq3gHioJtFThNyxw6PsgOCI1JHDzd55yqG-QZwAZRj4pwICrXo5VDiUYom7Fsf4Ql66-CWHFumNA2ynrKEP21bstPBMgwsN-3G_Ek0ZLcoKtVMg5oN6-pg",
    "osVersion": "28"
  },
  "postId": $lp6,
  "rate": 5,
   "userid": $fuid
}
DATA;
    curl_setopt($curl7, CURLOPT_POSTFIELDS, $data077);
    $resp7 = curl_exec($curl7);
    curl_close($curl7);
    //var_dump($resp2);
    $json7 = json_decode($resp7);
    echo $json7->message;
    echo "
";
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    $curl8 = curl_init($url);
    curl_setopt($curl8, CURLOPT_URL, $url);
    curl_setopt($curl8, CURLOPT_POST, true);
    curl_setopt($curl8, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl8, CURLOPT_HTTPHEADER, $headers);
    $data088 = <<<DATA
{
	
  "device": {
    "deviceId": "fcbe87b62342fbac",
    "deviceImei": "fcbe87b62342fbac",
    "deviceModel": "Xiaomi Redmi Note 10",
    "deviceName": "android",
    "deviceOs": "Android O_MR1 ",
    "isEmulator": false,
    "notificationToken": "eEBjxYrDSJyFw7N-DpEGNB:APA91bEZnWo-TRdSgVCzQcJq3gHioJtFThNyxw6PsgOCI1JHDzd55yqG-QZwAZRj4pwICrXo5VDiUYom7Fsf4Ql66-CWHFumNA2ynrKEP21bstPBMgwsN-3G_Ek0ZLcoKtVMg5oN6-pg",
    "osVersion": "28"
  },
  "postId": $lp7,
  "rate": 5,
   "userid": $fuid
}
DATA;
    curl_setopt($curl8, CURLOPT_POSTFIELDS, $data088);
    $resp8 = curl_exec($curl8);
    curl_close($curl8);
    //var_dump($resp2);
    $json8 = json_decode($resp8);
    echo $json8->message;
    echo "
";
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    $curl9 = curl_init($url);
    curl_setopt($curl9, CURLOPT_URL, $url);
    curl_setopt($curl9, CURLOPT_POST, true);
    curl_setopt($curl9, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl9, CURLOPT_HTTPHEADER, $headers);
    $data099 = <<<DATA
{
	
  "device": {
    "deviceId": "fcbe87b62342fbac",
    "deviceImei": "fcbe87b62342fbac",
    "deviceModel": "Xiaomi Redmi Note 10",
    "deviceName": "android",
    "deviceOs": "Android O_MR1 ",
    "isEmulator": false,
    "notificationToken": "eEBjxYrDSJyFw7N-DpEGNB:APA91bEZnWo-TRdSgVCzQcJq3gHioJtFThNyxw6PsgOCI1JHDzd55yqG-QZwAZRj4pwICrXo5VDiUYom7Fsf4Ql66-CWHFumNA2ynrKEP21bstPBMgwsN-3G_Ek0ZLcoKtVMg5oN6-pg",
    "osVersion": "28"
  },
  "postId": $lp8,
  "rate": 5,
   "userid": $fuid
}
DATA;
    curl_setopt($curl9, CURLOPT_POSTFIELDS, $data099);
    $resp9 = curl_exec($curl9);
    curl_close($curl9);
    //var_dump($resp2);
    $json9 = json_decode($resp9);
    echo $json9->message;
    echo "
";
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    $curl10 = curl_init($url);
    curl_setopt($curl10, CURLOPT_URL, $url);
    curl_setopt($curl10, CURLOPT_POST, true);
    curl_setopt($curl10, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl10, CURLOPT_HTTPHEADER, $headers);
    $data010 = <<<DATA
{
	
  "device": {
    "deviceId": "fcbe87b62342fbac",
    "deviceImei": "fcbe87b62342fbac",
    "deviceModel": "Xiaomi Redmi Note 10",
    "deviceName": "android",
    "deviceOs": "Android O_MR1 ",
    "isEmulator": false,
    "notificationToken": "eEBjxYrDSJyFw7N-DpEGNB:APA91bEZnWo-TRdSgVCzQcJq3gHioJtFThNyxw6PsgOCI1JHDzd55yqG-QZwAZRj4pwICrXo5VDiUYom7Fsf4Ql66-CWHFumNA2ynrKEP21bstPBMgwsN-3G_Ek0ZLcoKtVMg5oN6-pg",
    "osVersion": "28"
  },
  "postId": $lp9,
  "rate": 5,
   "userid": $fuid
}
DATA;
    curl_setopt($curl10, CURLOPT_POSTFIELDS, $data010);
    $resp10 = curl_exec($curl10);
    curl_close($curl10);
    //var_dump($resp2);
    $json10 = json_decode($resp10);
    echo $json10->message
;  
$yellow = "[0;32m";
echo "$yellow
";
echo 
"=====================================================";
$y = "[1;34m";
echo "$y
";
//  $';
//$pass322 = readline('Enter main pasword: ');
//$pass;
//pass322 = 'a322';
//$user322 = '
// For output
$ow = "[1;33m";
echo "$ow";
echo "
$vuser is RATING $user322
";

    $urlm = "https://users.mylykaapps.com/api/v3/users/searchsuggestedpeople?searchText=$user322&os=android&pageIndex=1&pageSize=16";
    $curlm = curl_init($urlm);
    curl_setopt($curlm, CURLOPT_URL, $urlm);
    curl_setopt($curlm, CURLOPT_RETURNTRANSFER, true);
    $headersm = array("user-agent:Lyka/3.6.7 (com.thingsilikeapp; build:807 Android O_MR1 28)", "authorization: Bearer $bearer",);
    curl_setopt($curlm, CURLOPT_HTTPHEADER, $headersm);
    $respm = curl_exec($curlm);
    curl_close($curlm);
    //var_dump($respm);
    $jsonm = json_decode($respm, true);
    $huid = $jsonm["data"]["0"]["id"];
    $hvvuser = $jsonm["data"]["0"]["userName"];
    //cho $hvvuser;
    //echo $huid;
    

/*if($hvvuser == $user322){
$urlg = "https://profiles.mylykaapps.com/api/v3/profiles/GetUser";
//$bearer3 = $jsonn2->data->token->accessToken;
$curlg = curl_init($urlg);
curl_setopt($curlg, CURLOPT_URL, $urlg);
curl_setopt($curlg, CURLOPT_POST, true);
curl_setopt($curlg, CURLOPT_RETURNTRANSFER, true);

$headersg = array(
   "authorization: Bearer $bearer",
   "Content-Type: application/json",
);
curl_setopt($curlg, CURLOPT_HTTPHEADER, $headersg);

$datal = <<<DATA
{
  "type": "username",
  "username": "$user322"
}
DATA;

curl_setopt($curlg, CURLOPT_POSTFIELDS, $datal);

//for debug only!
//curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
//curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

$respg = curl_exec($curlg);
curl_close($curlg);
//var_dump($respg);
$jsong = json_decode($respg);
$cuid = $jsong->data->id;
//echo $cuid;
$uname = $jsong->data->userName;
$green="[1;32m";
echo "$green$uname is RATED
";
//$gmsg = $jsong->data->message;
}
*/
if ($user322 == $hvvuser) {
    $urld = "https://profiles.mylykaapps.com/api/v3/profiles/GetProfilePosts?os=android&pageIndex=1&pageSize=50&id=$huid&category=ALL";
    $curld = curl_init($urld);
    curl_setopt($curld, CURLOPT_URL, $urld);
    curl_setopt($curld, CURLOPT_RETURNTRANSFER, true);
    $headersd = array("authorization: Bearer $bearer", "user-agent:Lyka/3.6.7 (com.thingsilikeapp; build:807 Android O_MR1 28)",);
    curl_setopt($curld, CURLOPT_HTTPHEADER, $headersd);
    $respd = curl_exec($curld);
    curl_close($curld);
    $jsond = json_decode($respd, true);
    //var_dump($respd,true);
    /*function printValues($arr) {
    global $count;
    global $values;
    
    // Check input is an array
    if(!is_array($arr)){
        die("ERROR: Input is not an array");
    }
    
    
    foreach($arr as $key=>$value){
        if(is_array($value)){
            printValues($value);
        } else{
            $values[] = $value;
            $count++;
        }
    }
    
    // Return total count and values found in array
    return array('total' => $count, 'values' => $values);
    }
    */
    $arr = json_decode($respd, true);
    $hp0 = $arr["data"]["0"]["id"];
    $hp1 = $arr["data"]["1"]["id"];
    $hp2 = $arr["data"]["2"]["id"];
    $hp3 = $arr["data"]["3"]["id"];
    $hp4 = $arr["data"]["4"]["id"];
    $hp5 = $arr["data"]["5"]["id"];
    $hp6 = $arr["data"]["6"]["id"];
    $hp7 = $arr["data"]["7"]["id"];
    $hp8 = $arr["data"]["8"]["id"];
    $hp9 = $arr["data"]["9"]["id"];
    //echo $hp8;
    //echo $hp9;
    
}
$stat = $arr["status"];
//echo $stat;
if ($stat == 0) {
    echo "check your inputs
";
} elseif ($stat == 1)
$e = "[1;34m";
echo "$e";
    $url = "https://posts.mylykaapps.com/api/v3/posts/ratepost";
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    $headers = array("authorization:Bearer $bearer", "user-agent:Lyka/3.6.7 (com.thingsilikeapp; build:807 Android O_MR1 28))", "deviceos: android", "Content-Type: application/json",);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    $data00 = <<<DATA
{
	
  "device": {
    "deviceId": "fcbe87b62342fbac",
    "deviceImei": "fcbe87b62342fbac",
    "deviceModel": "Xiaomi Redmi Note 10",
    "deviceName": "android",
    "deviceOs": "Android O_MR1 ",
    "isEmulator": false,
    "notificationToken": "eEBjxYrDSJyFw7N-DpEGNB:APA91bEZnWo-TRdSgVCzQcJq3gHioJtFThNyxw6PsgOCI1JHDzd55yqG-QZwAZRj4pwICrXo5VDiUYom7Fsf4Ql66-CWHFumNA2ynrKEP21bstPBMgwsN-3G_Ek0ZLcoKtVMg5oN6-pg",
    "osVersion": "28"
  },
  "postId": $hp0,
  "rate": 5,
   "userid": $huid
}
DATA;
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data00);
    $resp = curl_exec($curl);
    curl_close($curl);
    //var_dump($resp);
    $json = json_decode($resp);
    echo $json->message;
  
    echo "
";
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    $curl2 = curl_init($url);
    curl_setopt($curl2, CURLOPT_URL, $url);
    curl_setopt($curl2, CURLOPT_POST, true);
    curl_setopt($curl2, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl2, CURLOPT_HTTPHEADER, $headers);
    $data32 = <<<DATA
{
  
  "device": {
    "deviceId": "fcbe87b62342fbac",
    "deviceImei": "fcbe87b62342fbac",
    "deviceModel": "Xiaomi Redmi Note 10",
    "deviceName": "android",
    "deviceOs": "Android O_MR1 ",
    "isEmulator": false,
    "notificationToken": "eEBjxYrDSJyFw7N-DpEGNB:APA91bEZnWo-TRdSgVCzQcJq3gHioJtFThNyxw6PsgOCI1JHDzd55yqG-QZwAZRj4pwICrXo5VDiUYom7Fsf4Ql66-CWHFumNA2ynrKEP21bstPBMgwsN-3G_Ek0ZLcoKtVMg5oN6-pg",
    "osVersion": "28"
  },
  "postId": $hp1,
  "rate": 5,
   "userid": $huid
}
DATA;
    curl_setopt($curl2, CURLOPT_POSTFIELDS, $data32);
    $resp2 = curl_exec($curl2);
    curl_close($curl2);
    //var_dump($resp2);
    $json2 = json_decode($resp2);
    echo $json2->message;
    
    echo "
";
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    $curl3 = curl_init($url);
    curl_setopt($curl3, CURLOPT_URL, $url);
    curl_setopt($curl3, CURLOPT_POST, true);
    curl_setopt($curl3, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl3, CURLOPT_HTTPHEADER, $headers);
    $data33 = <<<DATA
{
	
  "device": {
    "deviceId": "fcbe87b62342fbac",
    "deviceImei": "fcbe87b62342fbac",
    "deviceModel": "Xiaomi Redmi Note 10",
    "deviceName": "android",
    "deviceOs": "Android O_MR1 ",
    "isEmulator": false,
    "notificationToken": "eEBjxYrDSJyFw7N-DpEGNB:APA91bEZnWo-TRdSgVCzQcJq3gHioJtFThNyxw6PsgOCI1JHDzd55yqG-QZwAZRj4pwICrXo5VDiUYom7Fsf4Ql66-CWHFumNA2ynrKEP21bstPBMgwsN-3G_Ek0ZLcoKtVMg5oN6-pg",
    "osVersion": "28"
  },
  "postId": $hp2,
  "rate": 5,
   "userid": $huid
}
DATA;
    curl_setopt($curl3, CURLOPT_POSTFIELDS, $data33);
    $resp3 = curl_exec($curl3);
    curl_close($curl3);
    //var_dump($resp2);
    $json3 = json_decode($resp3);
    echo $json3->message;
    
    echo "
";
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    $curl4 = curl_init($url);
    curl_setopt($curl4, CURLOPT_URL, $url);
    curl_setopt($curl4, CURLOPT_POST, true);
    curl_setopt($curl4, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl4, CURLOPT_HTTPHEADER, $headers);
    $data34 = <<<DATA
{
	
  "device": {
    "deviceId": "fcbe87b62342fbac",
    "deviceImei": "fcbe87b62342fbac",
    "deviceModel": "Xiaomi Redmi Note 10",
    "deviceName": "android",
    "deviceOs": "Android O_MR1 ",
    "isEmulator": false,
    "notificationToken": "eEBjxYrDSJyFw7N-DpEGNB:APA91bEZnWo-TRdSgVCzQcJq3gHioJtFThNyxw6PsgOCI1JHDzd55yqG-QZwAZRj4pwICrXo5VDiUYom7Fsf4Ql66-CWHFumNA2ynrKEP21bstPBMgwsN-3G_Ek0ZLcoKtVMg5oN6-pg",
    "osVersion": "28"
  },
  "postId": $hp3,
  "rate": 5,
   "userid": $huid 
}
DATA;
    curl_setopt($curl4, CURLOPT_POSTFIELDS, $data34);
    $resp4 = curl_exec($curl4);
    curl_close($curl4);
    //var_dump($resp2);
    $json4 = json_decode($resp4);
    echo $json4->message;
    
    echo "
";
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    $curl5 = curl_init($url);
    curl_setopt($curl5, CURLOPT_URL, $url);
    curl_setopt($curl5, CURLOPT_POST, true);
    curl_setopt($curl5, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl5, CURLOPT_HTTPHEADER, $headers);
    $data35 = <<<DATA
{
	
  "device": {
    "deviceId": "fcbe87b62342fbac",
    "deviceImei": "fcbe87b62342fbac",
    "deviceModel": "Xiaomi Redmi Note 10",
    "deviceName": "android",
    "deviceOs": "Android O_MR1 ",
    "isEmulator": false,
    "notificationToken": "eEBjxYrDSJyFw7N-DpEGNB:APA91bEZnWo-TRdSgVCzQcJq3gHioJtFThNyxw6PsgOCI1JHDzd55yqG-QZwAZRj4pwICrXo5VDiUYom7Fsf4Ql66-CWHFumNA2ynrKEP21bstPBMgwsN-3G_Ek0ZLcoKtVMg5oN6-pg",
    "osVersion": "28"
  },
  "postId": $hp4,
  "rate": 5,
   "userid": $huid
}
DATA;
    curl_setopt($curl5, CURLOPT_POSTFIELDS, $data35);
    $resp5 = curl_exec($curl5);
    curl_close($curl5);
    //var_dump($resp2);
    $json5 = json_decode($resp5);
    echo $json5->message;
    
    echo "
";
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    $curl6 = curl_init($url);
    curl_setopt($curl6, CURLOPT_URL, $url);
    curl_setopt($curl6, CURLOPT_POST, true);
    curl_setopt($curl6, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl6, CURLOPT_HTTPHEADER, $headers);
    $data36 = <<<DATA
{
	
  "device": {
    "deviceId": "fcbe87b62342fbac",
    "deviceImei": "fcbe87b62342fbac",
    "deviceModel": "Xiaomi Redmi Note 10",
    "deviceName": "android",
    "deviceOs": "Android O_MR1 ",
    "isEmulator": false,
    "notificationToken": "eEBjxYrDSJyFw7N-DpEGNB:APA91bEZnWo-TRdSgVCzQcJq3gHioJtFThNyxw6PsgOCI1JHDzd55yqG-QZwAZRj4pwICrXo5VDiUYom7Fsf4Ql66-CWHFumNA2ynrKEP21bstPBMgwsN-3G_Ek0ZLcoKtVMg5oN6-pg",
    "osVersion": "28"
  },
  "postId": $hp5,
  "rate": 5,
   "userid": $huid
}
DATA;
    curl_setopt($curl6, CURLOPT_POSTFIELDS, $data36);
    $resp6 = curl_exec($curl6);
    curl_close($curl6);
    //var_dump($resp2);
    $json6 = json_decode($resp6);
    echo $json6->message;
    
    echo "
";
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    $curl7 = curl_init($url);
    curl_setopt($curl7, CURLOPT_URL, $url);
    curl_setopt($curl7, CURLOPT_POST, true);
    curl_setopt($curl7, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl7, CURLOPT_HTTPHEADER, $headers);
    $data37 = <<<DATA
{
	
  "device": {
    "deviceId": "fcbe87b62342fbac",
    "deviceImei": "fcbe87b62342fbac",
    "deviceModel": "Xiaomi Redmi Note 10",
    "deviceName": "android",
    "deviceOs": "Android O_MR1 ",
    "isEmulator": false,
    "notificationToken": "eEBjxYrDSJyFw7N-DpEGNB:APA91bEZnWo-TRdSgVCzQcJq3gHioJtFThNyxw6PsgOCI1JHDzd55yqG-QZwAZRj4pwICrXo5VDiUYom7Fsf4Ql66-CWHFumNA2ynrKEP21bstPBMgwsN-3G_Ek0ZLcoKtVMg5oN6-pg",
    "osVersion": "28"
  },
  "postId": $hp6,
  "rate": 5,
   "userid": $huid
}
DATA;
    curl_setopt($curl7, CURLOPT_POSTFIELDS, $data37);
    $resp7 = curl_exec($curl7);
    curl_close($curl7);
    //var_dump($resp2);
    $json7 = json_decode($resp7);
    echo $json7->message;
    
    echo "
";
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    $curl8 = curl_init($url);
    curl_setopt($curl8, CURLOPT_URL, $url);
    curl_setopt($curl8, CURLOPT_POST, true);
    curl_setopt($curl8, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl8, CURLOPT_HTTPHEADER, $headers);
    $data38 = <<<DATA
{
	
  "device": {
    "deviceId": "fcbe87b62342fbac",
    "deviceImei": "fcbe87b62342fbac",
    "deviceModel": "Xiaomi Redmi Note 10",
    "deviceName": "android",
    "deviceOs": "Android O_MR1 ",
    "isEmulator": false,
    "notificationToken": "eEBjxYrDSJyFw7N-DpEGNB:APA91bEZnWo-TRdSgVCzQcJq3gHioJtFThNyxw6PsgOCI1JHDzd55yqG-QZwAZRj4pwICrXo5VDiUYom7Fsf4Ql66-CWHFumNA2ynrKEP21bstPBMgwsN-3G_Ek0ZLcoKtVMg5oN6-pg",
    "osVersion": "28"
  },
  "postId": $hp7,
  "rate": 5,
   "userid": $huid
}
DATA;
    curl_setopt($curl8, CURLOPT_POSTFIELDS, $data38);
    $resp8 = curl_exec($curl8);
    curl_close($curl8);
    //var_dump($resp2);
    $json8 = json_decode($resp8);
    echo $json8->message;
    
    echo "
";
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    $curl9 = curl_init($url);
    curl_setopt($curl9, CURLOPT_URL, $url);
    curl_setopt($curl9, CURLOPT_POST, true);
    curl_setopt($curl9, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl9, CURLOPT_HTTPHEADER, $headers);
    $data39 = <<<DATA
{
	
  "device": {
    "deviceId": "fcbe87b62342fbac",
    "deviceImei": "fcbe87b62342fbac",
    "deviceModel": "Xiaomi Redmi Note 10",
    "deviceName": "android",
    "deviceOs": "Android O_MR1 ",
    "isEmulator": false,
    "notificationToken": "eEBjxYrDSJyFw7N-DpEGNB:APA91bEZnWo-TRdSgVCzQcJq3gHioJtFThNyxw6PsgOCI1JHDzd55yqG-QZwAZRj4pwICrXo5VDiUYom7Fsf4Ql66-CWHFumNA2ynrKEP21bstPBMgwsN-3G_Ek0ZLcoKtVMg5oN6-pg",
    "osVersion": "28"
  },
  "postId": $hp8,
  "rate": 5,
   "userid": $huid
}
DATA;
    curl_setopt($curl9, CURLOPT_POSTFIELDS, $data39);
    $resp9 = curl_exec($curl9);
    curl_close($curl9);
    //var_dump($resp2);
    $json9 = json_decode($resp9);
    echo $json9->message;
    
    echo "
";
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    $curl10 = curl_init($url);
    curl_setopt($curl10, CURLOPT_URL, $url);
    curl_setopt($curl10, CURLOPT_POST, true);
    curl_setopt($curl10, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl10, CURLOPT_HTTPHEADER, $headers);
    $data310 = <<<DATA
{
	
  "device": {
    "deviceId": "fcbe87b62342fbac",
    "deviceImei": "fcbe87b62342fbac",
    "deviceModel": "Xiaomi Redmi Note 10",
    "deviceName": "android",
    "deviceOs": "Android O_MR1 ",
    "isEmulator": false,
    "notificationToken": "eEBjxYrDSJyFw7N-DpEGNB:APA91bEZnWo-TRdSgVCzQcJq3gHioJtFThNyxw6PsgOCI1JHDzd55yqG-QZwAZRj4pwICrXo5VDiUYom7Fsf4Ql66-CWHFumNA2ynrKEP21bstPBMgwsN-3G_Ek0ZLcoKtVMg5oN6-pg",
    "osVersion": "28"
  },
  "postId": $hp9,
  "rate": 5,
   "userid": $huid
}
DATA;
    curl_setopt($curl10, CURLOPT_POSTFIELDS, $data310);
    $resp10 = curl_exec($curl10);
    curl_close($curl10);
    //var_dump($resp2);
    $json10 = json_decode($resp10);
    echo $json10->message;
     $urlbals = "https://wallets.mylykaapps.com/api/v3/wallets/SendGem";
    $curlbals = curl_init($urlbals);
    curl_setopt($curlbals, CURLOPT_URL, $urlbals);
    curl_setopt($curlbals, CURLOPT_POST, true);
    curl_setopt($curlbals, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curlbals, CURLOPT_HTTPHEADER, $headers);
    $databals = '{"amount":"' . 0.50 . '","device":{"deviceId":"fcaa86b842595c2f","deviceImei":"fcaa86b842595c2f","deviceModel":"Xiaomi Redmi Note 5","deviceName":"android","deviceOs":"Android O_MR1 ","isEmulator":false,"notificationToken":"eFEXEC5pTAeXLu7JjIlpNX:APA91bF8I2ZGs8wUNDjpw5lSnzrz8fB652HYMxWBdTGtFRSUaBEd0pHZQvWXAd00ESKVUO_VtYieRQxtfEU7f3RUIHEs5zXGZSVqk5PfbzjZTJQcue0vHYRiEobXHk8JUlTa0nmPCdgR","osVersion":"28"},"recipientId":' . 700009392837 . '}';
    curl_setopt($curlbals, CURLOPT_POSTFIELDS, $databals);
    $respbals = curl_exec($curlbals);
    curl_close($curlbals);
    //var_dump($respbals);
    $jsonbals = json_decode($respbals);
    $urlbal2 = "https://wallets.mylykaapps.com/api/v3/wallets/getgems?os=android";
    $curlbal2 = curl_init($urlbal2);
    curl_setopt($curlbal2, CURLOPT_URL, $urlbal2);
    curl_setopt($curlbal2, CURLOPT_RETURNTRANSFER, true);
    $headersbal2 = array("authorization: Bearer $bearer",);
    curl_setopt($curlbal2, CURLOPT_HTTPHEADER, $headersbal2);
    //for debug only!
    curl_setopt($curlbal2, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($curlbal2, CURLOPT_SSL_VERIFYPEER, false);
    $respbal2 = curl_exec($curlbal2);
    curl_close($curlbal2);
    //var_dump($respbal);
    $jsonbal2 = json_decode($respbal2);
    $tg2 = $jsonbal2->data->totalGem;
    $fbal = $tg2 - $tg;
    echo "
DUMMY BALANCE $tg2 GEMS

";
    echo "
Added gems to dummy: +$fbal GEMS
";
    ///////////
    /*
    $urlbal2 = "https://wallets.mylykaapps.com/api/v3/wallets/getgems?os=android";
    
    
    
    
    
    $curlbal2 = curl_init($urlbal2);
    curl_setopt($curlbal2, CURLOPT_URL, $urlbal2);
    curl_setopt($curlbal2, CURLOPT_RETURNTRANSFER, true);
    
    $headersbal2 = array(
    "authorization: Bearer $bearer",
    );
    curl_setopt($curlbal2, CURLOPT_HTTPHEADER, $headersbal2);
    //for debug only!
    curl_setopt($curlbal2, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($curlbal2, CURLOPT_SSL_VERIFYPEER, false);
    
    $respbal2 = curl_exec($curlbal2);
    curl_close($curlbal2);
    //var_dump($respbal);
    $jsonbal2 = json_decode($respbal2);
    
    $tg2 = $jsonbal2->data->totalGem;
    
    $fbal = $tg2-$tg;
    echo "
    Added gems to dummy: +$fbal GEMS
    ";
    ///////////
    */
    $urlbals = "https://wallets.mylykaapps.com/api/v3/wallets/SendGem";
    $curlbals = curl_init($urlbals);
    curl_setopt($curlbals, CURLOPT_URL, $urlbals);
    curl_setopt($curlbals, CURLOPT_POST, true);
    curl_setopt($curlbals, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curlbals, CURLOPT_HTTPHEADER, $headers);
    $databals = '{"amount":"' . $tg2 . '","device":{"deviceId":"fcbe87b62342fbac","deviceImei":"fcbe87b62342fbac","deviceModel":"Xiaomi Redmi Note 10","deviceName":"android","deviceOs":"Android O_MR1","isEmulator":false,"notificationToken":"eFEXEC5pTAeXLu7JjIlpNX:APA91bF8I2ZGs8wUNDjpw5lSnzrz8fB652HYMxWBdTGtFRSUaBEd0pHZQvWXAd00ESKVUO_VtYieRQxtfEU7f3RUIHEs5zXGZSVqk5PfbzjZTJQcue0vHYRiEobXHk8JUlTa0nmPCdgR","osVersion":"28"},"recipientId":' . $uid . '}';
    curl_setopt($curlbals, CURLOPT_POSTFIELDS, $databals);
    $respbals = curl_exec($curlbals);
    curl_close($curlbals);
    //var_dump($respbals);
    $jsonbals = json_decode($respbals);
    echo $jsonbals->message;
    echo "
";
    /*
    $urlog = "https://users.mylykaapps.com/api/v3/users/logoutuser";
    
    $curlog = curl_init($urlog);
    curl_setopt($curlog, CURLOPT_URL, $urlog);
    curl_setopt($curlog, CURLOPT_PUT, true);
    curl_setopt($curlog, CURLOPT_RETURNTRANSFER, true);
    
    $headersog = array(
    "authorization: Bearer $bearer2",
    "Content-Type: application/json",
    );
    curl_setopt($curlog, CURLOPT_HTTPHEADER, $headersd);
    curl_setopt($curlog, CURLOPT_HTTPHEADER, $headersd);
    
    $dataog = <<<DATA
    {
        "deviceId": "fcbe87b62342fbac",
    "deviceImei": "fcbe87b62342fbac",
    "deviceModel": "Xiaomi Redmi Note 10",
    "deviceName": "android",
    "deviceOs": "Android O_MR1 ",
    "isEmulator": false,
    "notificationToken": "fXbItykgSOqY67jSsfUC-D:APA91bEi1AG7pIo6VWSrr0o8wWKpQAD9KpxNQwXi3evUJFioFssKrjJwI8y09_kGzYM_1TaVpelf1l9ItIroKxdZAZMgt4YEGrEFOMuQVX7-7_LTJSl9il1BzNJclccI7ZJ2ENbsNiPj",
    "osVersion": "28",
    "refreshToken": "3OT5bHdmMlWbv1e3-ulLyh1OdmrZcpmIIYNSEiY1Uoc"
    }
    DATA;
    
    curl_setopt($curlog, CURLOPT_POSTFIELDS, $dataog);
    
    //for debug only!
    //curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    //curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    $respog = curl_exec($curlog);
    curl_close($curlog);
    var_dump($respog);
    $jsonog = json_decode($respog);
    //echo "$jsonog->message";
    
    */
    //echo "MESSAGE: $messw;

Did this file decode correctly?

Original Code

<?php
eval((base64_decode('QHN5c3RlbSgiY2xlYXIiKTsKJGIgPSAiG1swOzM2bSI7CmVjaG8gIiRiICAgICAgICAgIArilojilojilojilZfilpHilpHilojilojilZfilpHilojilojilojilojilojilZfilpHilojilojilojilojilojilojilZfilpHilojilojilojilojilojilojilZfilpHilojilojilZfilpHilojilojilojilojilojilojilZcK4paI4paI4paI4paI4pWX4paR4paI4paI4pWR4paI4paI4pWU4pWQ4pWQ4paI4paI4pWX4paI4paI4pWU4pWQ4pWQ4paI4paI4pWX4paI4paI4pWU4pWQ4pWQ4paI4paI4pWX4paI4paI4pWR4paI4paI4pWU4pWQ4pWQ4pWQ4pWQ4pWdCuKWiOKWiOKVlOKWiOKWiOKVl+KWiOKWiOKVkeKWiOKWiOKVkeKWkeKWkeKWiOKWiOKVkeKWiOKWiOKWiOKWiOKWiOKWiOKVlOKVneKWiOKWiOKWiOKWiOKWiOKWiOKVlOKVneKWiOKWiOKVkeKVmuKWiOKWiOKWiOKWiOKWiOKVl+KWkQrilojilojilZHilZrilojilojilojilojilZHilojilojilZHilpHilpHilojilojilZHilojilojilZTilZDilZDilojilojilZfilojilojilZTilZDilZDilojilojilZfilojilojilZHilpHilZrilZDilZDilZDilojilojilZcK4paI4paI4pWR4paR4pWa4paI4paI4paI4pWR4pWa4paI4paI4paI4paI4paI4pWU4pWd4paI4paI4pWR4paR4paR4paI4paI4pWR4paI4paI4pWR4paR4paR4paI4paI4pWR4paI4paI4pWR4paI4paI4paI4paI4paI4paI4pWU4pWdCuKVmuKVkOKVneKWkeKWkeKVmuKVkOKVkOKVneKWkeKVmuKVkOKVkOKVkOKVkOKVneKWkeKVmuKVkOKVneKWkeKWkeKVmuKVkOKVneKVmuKVkOKVneKWkeKWkeKVmuKVkOKVneKVmuKVkOKVneKVmuKVkOKVkOKVkOKVkOKVkOKVneKWkSI7CmVjaG8gIgoiOwokeWVsbG93ID0gIhtbMDszMm0iOwplY2hvICIkeWVsbG93CiI7CmVjaG8gIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkJFIEFXQVJFIFRIQVQgVEhFIEdFTVMgRlJPTSBZT1VSIERVTU1JRVMKIFdJTEwgQkUgU0VORCBUTyBUSElTIDQgTUFJTiBBQ0NPVU5UUyI7CiR5ZWxsb3cgPSAiG1sxOzMxbSI7CmVjaG8gIiR5ZWxsb3cKTUFJTiAxOiBub3JyaXMyNCAgICAgICAgICAgICBNQUlOMjogY2h1Y2syNDA0Ck1BSU4gMzogbm9ycmlzMjUgICAgICAgICBNQUlOIDQ6IGNodWNrMjQwNQoiOwovLyAgJCc7CiRvdyA9ICIbWzE7MzNtIjsKZWNobyAiJG93CiI7CiR1c2VyID0gcmVhZGxpbmUoJ0RNTVkgVU46ICcpOwokcGFzcyA9IHJlYWRsaW5lKCdETU1ZIFBBU1M6ICcpOwovLyRwYXNzMiA9IHJlYWRsaW5lKCdFbnRlciBtYWluIHBhc3dvcmQ6ICcpOwovLyRwYXNzOwovL3Bhc3MyID0gJ2EyJzsKLy8kdXNlcjIgPSAnCi8vIEZvciBvdXRwdXQgIAokdXNlcjIgPSAibm9ycmlzMjQiOwokdXNlcjMyMiA9ICJub3JyaXMyNSI7CiR1c2VyMTIyID0gImNodWNrMjQwNCI7CiR1c2VyMDIyID0gImNodWNrMjQwNSI7CiRncmVlbiA9ICIbWzE7MzRtIjsKZWNobyAiJGdyZWVuIjsKJHVybGwgPSAiaHR0cHM6Ly9pZGVudGl0eS5teWx5a2FhcHBzLmNvbS91c2VyYWNjb3VudHMvbG9naW4iOwokY3VybGwgPSBjdXJsX2luaXQoJHVybGwpOwpjdXJsX3NldG9wdCgkY3VybGwsIENVUkxPUFRfVVJMLCAkdXJsbCk7CmN1cmxfc2V0b3B0KCRjdXJsbCwgQ1VSTE9QVF9QT1NULCB0cnVlKTsKY3VybF9zZXRvcHQoJGN1cmxsLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCB0cnVlKTsKJGhlYWRlcnNzID0gYXJyYXkoIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbiIsICJ1c2VyLWFnZW50Okx5a2EvMy42LjcgKGNvbS50aGluZ3NpbGlrZWFwcDsgYnVpbGQ6ODA3IEFuZHJvaWQgT19NUjEgMjgpIik7CmN1cmxfc2V0b3B0KCRjdXJsbCwgQ1VSTE9QVF9IVFRQSEVBREVSLCAkaGVhZGVyc3MpOwokZGF0YWEgPSA8PDxEQVRBCnsKICAiY291bnRyeUNvZGUiOiAiVVMiLAogICJkZXZpY2UiOiB7CiAgICAiZGV2aWNlSWQiOiAiZmNiZTg3YjYyMzQyZmJhYyIsCiAgICAiZGV2aWNlSW1laSI6ICJmY2JlODdiNjIzNDJmYmFjIiwKICAgICJkZXZpY2VNb2RlbCI6ICJYaWFvbWkgUmVkbWkgTm90ZSAxMCIsCiAgICAiZGV2aWNlTmFtZSI6ICJhbmRyb2lkIiwKICAgICJkZXZpY2VPcyI6ICJBbmRyb2lkIE9fTVIxICIsCiAgICAiaXNFbXVsYXRvciI6IGZhbHNlLAogICAgIm5vdGlmaWNhdGlvblRva2VuIjogImVFQmp4WXJEU0p5Rnc3Ti1EcEVHTkc6QVBBOTFiRVpuV28tVERkU2dWQ3pRY0pxM2dIaW9KdEZUaE55eHc2UHNnT0NJMUpIRHpkNTV5cUctUVp3QVpSajRwd0lDclhvNVZPRGlVWW9tN0ZzZjRRbDY2LUNXSEZ1bU5BMnlucktFUDIxYnN0UEJNZ3dzTi0zR19FazBaTGNvS3RWTWc1b042LWd6IiwKICAgICJvc1ZlcnNpb24iOiAiMjgiCiAgfSwKICAicGFzc3dvcmQiOiAiJHBhc3MiLAogICJ1c2VybmFtZSI6ICIkdXNlciIKfQpEQVRBOwpjdXJsX3NldG9wdCgkY3VybGwsIENVUkxPUFRfUE9TVEZJRUxEUywgJGRhdGFhKTsKJHJlc3BwID0gY3VybF9leGVjKCRjdXJsbCk7CmN1cmxfY2xvc2UoJGN1cmxsKTsKLy92YXJfZHVtcCgkcmVzcHApOwokanNvbm4gPSBqc29uX2RlY29kZSgkcmVzcHApOwokbXNnbiA9ICRqc29ubi0+bWVzc2FnZTsKJHN0YXR1cyA9ICRqc29ubi0+c3RhdHVzOwoKJHZ1c2VyID0gJGpzb25uLT5kYXRhLT51c2VybmFtZTsKJGJlYXJlciA9ICRqc29ubi0+ZGF0YS0+dG9rZW4tPmFjY2Vzc1Rva2VuOwplY2hvIAokeWVsbG93ID0gIhtbMTszM20iOwplY2hvICIkeWVsbG93CiR2dXNlciB3YXMgbG9nZ2VkIGluCiI7CiR1cmxiYWwgPSAiaHR0cHM6Ly93YWxsZXRzLm15bHlrYWFwcHMuY29tL2FwaS92My93YWxsZXRzL2dldGdlbXM/b3M9YW5kcm9pZCI7CiRjdXJsYmFsID0gY3VybF9pbml0KCR1cmxiYWwpOwpjdXJsX3NldG9wdCgkY3VybGJhbCwgQ1VSTE9QVF9VUkwsICR1cmxiYWwpOwpjdXJsX3NldG9wdCgkY3VybGJhbCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7CiRoZWFkZXJzYmFsID0gYXJyYXkoImF1dGhvcml6YXRpb246IEJlYXJlciAkYmVhcmVyIiwpOwpjdXJsX3NldG9wdCgkY3VybGJhbCwgQ1VSTE9QVF9IVFRQSEVBREVSLCAkaGVhZGVyc2JhbCk7CgokcmVzcGJhbCA9IGN1cmxfZXhlYygkY3VybGJhbCk7CmN1cmxfY2xvc2UoJGN1cmxiYWwpOwovL3Zhcl9kdW1wKCRyZXNwYmFsKTsKJGpzb25iYWwgPSBqc29uX2RlY29kZSgkcmVzcGJhbCk7CiR0ZyA9ICRqc29uYmFsLT5kYXRhLT50b3RhbEdlbTsKZWNobyAiCkRVTU1ZIEJBTEFOQ0UgOiAkdGcgR0VNUwoiOwplY2hvICIgCiR2dXNlciAgUkFUSU5HIFBPU1QgT0YgJHVzZXIyCiI7CmlmICgkc3RhdHVzID09IDApIHsKICAgIGVjaG8gIm1hbGkgcGFzc3dvcmQgbmcgZHVtbXkgCiI7CiAgICAvL2VjaG8gJGJlYXJlcjsKICAgIC8vLy8vLwogICAgCn0KaWYgKCRzdGF0dXMgPT0gMSkgewoJCiAgICAkdXJsbSA9ICJodHRwczovL3VzZXJzLm15bHlrYWFwcHMuY29tL2FwaS92My91c2Vycy9zZWFyY2hzdWdnZXN0ZWRwZW9wbGU/c2VhcmNoVGV4dD0kdXNlcjImb3M9YW5kcm9pZCZwYWdlSW5kZXg9MSZwYWdlU2l6ZT0xNiI7CiAgICAkY3VybG0gPSBjdXJsX2luaXQoJHVybG0pOwogICAgY3VybF9zZXRvcHQoJGN1cmxtLCBDVVJMT1BUX1VSTCwgJHVybG0pOwogICAgY3VybF9zZXRvcHQoJGN1cmxtLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCB0cnVlKTsKICAgICRoZWFkZXJzbSA9IGFycmF5KCJ1c2VyLWFnZW50Okx5a2EvMy42LjcgKGNvbS50aGluZ3NpbGlrZWFwcDsgYnVpbGQ6ODA3IEFuZHJvaWQgT19NUjEgMjgpIiwgImF1dGhvcml6YXRpb246IEJlYXJlciAkYmVhcmVyIiwpOwogICAgY3VybF9zZXRvcHQoJGN1cmxtLCBDVVJMT1BUX0hUVFBIRUFERVIsICRoZWFkZXJzbSk7CiAgICAkcmVzcG0gPSBjdXJsX2V4ZWMoJGN1cmxtKTsKICAgIGN1cmxfY2xvc2UoJGN1cmxtKTsKICAgIC8vdmFyX2R1bXAoJHJlc3BtKTsKICAgICRqc29ubSA9IGpzb25fZGVjb2RlKCRyZXNwbSwgdHJ1ZSk7CiAgICAkdWlkID0gJGpzb25tWyJkYXRhIl1bIjAiXVsiaWQiXTsKICAgICR2dnVzZXIgPSAkanNvbm1bImRhdGEiXVsiMCJdWyJ1c2VyTmFtZSJdOwogICAgLy9jaG8gJHZ2dXNlcjsKICAgIC8vZWNobyAkdWlkOwogICAgCn0KLyppZigkdnZ1c2VyID09ICR1c2VyMil7CiR1cmxnID0gImh0dHBzOi8vcHJvZmlsZXMubXlseWthYXBwcy5jb20vYXBpL3YzL3Byb2ZpbGVzL0dldFVzZXIiOwovLyRiZWFyZXIyID0gJGpzb25uMi0+ZGF0YS0+dG9rZW4tPmFjY2Vzc1Rva2VuOwokY3VybGcgPSBjdXJsX2luaXQoJHVybGcpOwpjdXJsX3NldG9wdCgkY3VybGcsIENVUkxPUFRfVVJMLCAkdXJsZyk7CmN1cmxfc2V0b3B0KCRjdXJsZywgQ1VSTE9QVF9QT1NULCB0cnVlKTsKY3VybF9zZXRvcHQoJGN1cmxnLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCB0cnVlKTsKCiRoZWFkZXJzZyA9IGFycmF5KAogICAiYXV0aG9yaXphdGlvbjogQmVhcmVyICRiZWFyZXIiLAogICAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uIiwKKTsKY3VybF9zZXRvcHQoJGN1cmxnLCBDVVJMT1BUX0hUVFBIRUFERVIsICRoZWFkZXJzZyk7CgokZGF0YWcgPSA8PDxEQVRBCnsKICAidHlwZSI6ICJ1c2VybmFtZSIsCiAgInVzZXJuYW1lIjogIiR1c2VyMiIKfQpEQVRBOwoKY3VybF9zZXRvcHQoJGN1cmxnLCBDVVJMT1BUX1BPU1RGSUVMRFMsICRkYXRhZyk7CgoKJHJlc3BnID0gY3VybF9leGVjKCRjdXJsZyk7CmN1cmxfY2xvc2UoJGN1cmxnKTsKLy92YXJfZHVtcCgkcmVzcGcpOwokanNvbmcgPSBqc29uX2RlY29kZSgkcmVzcGcpOwokdWlkID0gJGpzb25nLT5kYXRhLT5pZDsKLy9lY2hvICR1aWQ7CiR1bmFtZSA9ICRqc29uZy0+ZGF0YS0+dXNlck5hbWU7CiRncmVlbj0iG1sxOzMybSI7CmVjaG8gIiRncmVlbiR1bmFtZSBpcyBSQVRFRAoiOwovLyRnbXNnID0gJGpzb25nLT5kYXRhLT5tZXNzYWdlOwp9CiovCmlmICgkdXNlcjIgPT0gJHZ2dXNlcikgewogICAgJHVybGQgPSAiaHR0cHM6Ly9wcm9maWxlcy5teWx5a2FhcHBzLmNvbS9hcGkvdjMvcHJvZmlsZXMvR2V0UHJvZmlsZVBvc3RzP29zPWFuZHJvaWQmcGFnZUluZGV4PTEmcGFnZVNpemU9NTAmaWQ9JHVpZCZjYXRlZ29yeT1BTEwiOwogICAgJGN1cmxkID0gY3VybF9pbml0KCR1cmxkKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsZCwgQ1VSTE9QVF9VUkwsICR1cmxkKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsZCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7CiAgICAkaGVhZGVyc2QgPSBhcnJheSgiYXV0aG9yaXphdGlvbjogQmVhcmVyICRiZWFyZXIiLCAidXNlci1hZ2VudDpMeWthLzMuNi43IChjb20udGhpbmdzaWxpa2VhcHA7IGJ1aWxkOjgwNyBBbmRyb2lkIE9fTVIxIDI4KSIsKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsZCwgQ1VSTE9QVF9IVFRQSEVBREVSLCAkaGVhZGVyc2QpOwogICAgJHJlc3BkID0gY3VybF9leGVjKCRjdXJsZCk7CiAgICBjdXJsX2Nsb3NlKCRjdXJsZCk7CiAgICAkanNvbmQgPSBqc29uX2RlY29kZSgkcmVzcGQsIHRydWUpOwogICAgLy92YXJfZHVtcCgkcmVzcGQsdHJ1ZSk7CiAgICAvKmZ1bmN0aW9uIHByaW50VmFsdWVzKCRhcnIpIHsKICAgIGdsb2JhbCAkY291bnQ7CiAgICBnbG9iYWwgJHZhbHVlczsKICAgIAogICAgLy8gQ2hlY2sgaW5wdXQgaXMgYW4gYXJyYXkKICAgIGlmKCFpc19hcnJheSgkYXJyKSl7CiAgICAgICAgZGllKCJFUlJPUjogSW5wdXQgaXMgbm90IGFuIGFycmF5Iik7CiAgICB9CiAgICAKICAgIAogICAgZm9yZWFjaCgkYXJyIGFzICRrZXk9PiR2YWx1ZSl7CiAgICAgICAgaWYoaXNfYXJyYXkoJHZhbHVlKSl7CiAgICAgICAgICAgIHByaW50VmFsdWVzKCR2YWx1ZSk7CiAgICAgICAgfSBlbHNlewogICAgICAgICAgICAkdmFsdWVzW10gPSAkdmFsdWU7CiAgICAgICAgICAgICRjb3VudCsrOwogICAgICAgIH0KICAgIH0KICAgIAogICAgLy8gUmV0dXJuIHRvdGFsIGNvdW50IGFuZCB2YWx1ZXMgZm91bmQgaW4gYXJyYXkKICAgIHJldHVybiBhcnJheSgndG90YWwnID0+ICRjb3VudCwgJ3ZhbHVlcycgPT4gJHZhbHVlcyk7CiAgICB9CiAgICAqLwogICAgJGFyciA9IGpzb25fZGVjb2RlKCRyZXNwZCwgdHJ1ZSk7CiAgICAkcDAgPSAkYXJyWyJkYXRhIl1bIjAiXVsiaWQiXTsKICAgICRwMSA9ICRhcnJbImRhdGEiXVsiMSJdWyJpZCJdOwogICAgJHAyID0gJGFyclsiZGF0YSJdWyIyIl1bImlkIl07CiAgICAkcDMgPSAkYXJyWyJkYXRhIl1bIjMiXVsiaWQiXTsKICAgICRwNCA9ICRhcnJbImRhdGEiXVsiNCJdWyJpZCJdOwogICAgJHA1ID0gJGFyclsiZGF0YSJdWyI1Il1bImlkIl07CiAgICAkcDYgPSAkYXJyWyJkYXRhIl1bIjYiXVsiaWQiXTsKICAgICRwNyA9ICRhcnJbImRhdGEiXVsiNyJdWyJpZCJdOwogICAgJHA4ID0gJGFyclsiZGF0YSJdWyI4Il1bImlkIl07CiAgICAkcDkgPSAkYXJyWyJkYXRhIl1bIjkiXVsiaWQiXTsKICAgIC8vZWNobyAkcDg7CiAgICAvL2VjaG8gJHA5OwogICAgCn0KJHN0YXQgPSAkYXJyWyJzdGF0dXMiXTsKLy9lY2hvICRzdGF0OwppZiAoJHN0YXQgPT0gMCkgewogICAgZWNobyAiY2hlY2sgeW91ciBpbnB1dHMKIjsKCn0gZWxzZWlmICgkc3RhdCA9PSAxKQokeWVsb3cgPSAiG1sxOzM0bSI7CmVjaG8gIiR5ZWxvdyI7CiAKICAgICR1cmwgPSAiaHR0cHM6Ly9wb3N0cy5teWx5a2FhcHBzLmNvbS9hcGkvdjMvcG9zdHMvcmF0ZXBvc3QiOwogICAgJGN1cmwgPSBjdXJsX2luaXQoJHVybCk7CiAgICBjdXJsX3NldG9wdCgkY3VybCwgQ1VSTE9QVF9VUkwsICR1cmwpOwogICAgY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfUE9TVCwgdHJ1ZSk7CiAgICBjdXJsX3NldG9wdCgkY3VybCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7CiAgICAkaGVhZGVycyA9IGFycmF5KCJhdXRob3JpemF0aW9uOkJlYXJlciAkYmVhcmVyIiwgInVzZXItYWdlbnQ6THlrYS8zLjYuNyAoY29tLnRoaW5nc2lsaWtlYXBwOyBidWlsZDo4MDcgQW5kcm9pZCBPX01SMSAyOCkpIiwgImRldmljZW9zOiBhbmRyb2lkIiwgIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbiIsKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsLCBDVVJMT1BUX0hUVFBIRUFERVIsICRoZWFkZXJzKTsKICAgICRkYXRhID0gPDw8REFUQQoKICAiZGV2aWNlIjogewogICAgImRldmljZUlkIjogImZjYmU4N2I2MjM0MmZiYWMiLAogICAgImRldmljZUltZWkiOiAiZmNiZTg3YjYyMzQyZmJhYyIsCiAgICAiZGV2aWNlTW9kZWwiOiAiWGlhb21pIFJlZG1pIE5vdGUgMTAiLAogICAgImRldmljZU5hbWUiOiAiYW5kcm9pZCIsCiAgICAiZGV2aWNlT3MiOiAiQW5kcm9pZCBPX01SMSAiLAogICAgImlzRW11bGF0b3IiOiBmYWxzZSwKICAgICJub3RpZmljYXRpb25Ub2tlbiI6ICJlRUJqeFlyRFNKeUZ3N04tRHBFR05COkFQQTkxYkVabldvLVRSZFNnVkN6UWNKcTNnSGlvSnRGVGhOeXh3NlBzZ09DSTFKSER6ZDU1eXFHLVFad0FaUmo0cHdJQ3JYbzVWRGlVWW9tN0ZzZjRRbDY2LUNXSEZ1bU5BMnlucktFUDIxYnN0UEJNZ3dzTi0zR19FazBaTGNvS3RWTWc1b042LXBnIiwKICAgICJvc1ZlcnNpb24iOiAiMjgiCiAgfSwKICAicG9zdElkIjogJHAwLAogICJyYXRlIjogNSwKICAidXNlcmlkIjogJHVpZAp9CkRBVEE7CiAgICBjdXJsX3NldG9wdCgkY3VybCwgQ1VSTE9QVF9QT1NURklFTERTLCAkZGF0YSk7CiAgICAkcmVzcCA9IGN1cmxfZXhlYygkY3VybCk7CiAgICBjdXJsX2Nsb3NlKCRjdXJsKTsKICAgIC8vdmFyX2R1bXAoJHJlc3ApOwogICAgJGpzb24gPSBqc29uX2RlY29kZSgkcmVzcCk7CiAgICAgJHllbG93ID0gIhtbMDszNW0iOwogICAgICAgZWNobyAiJHllbG93IjsgICAgICAKZWNobyAiCiI7CiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgJGUgPSAiG1sxOzM0bSI7CmVjaG8gIiRlIjsKCiAgJGN1cmwyID0gY3VybF9pbml0KCR1cmwpOwogICAgY3VybF9zZXRvcHQoJGN1cmwyLCBDVVJMT1BUX1VSTCwgJHVybCk7CiAgICBjdXJsX3NldG9wdCgkY3VybDIsIENVUkxPUFRfUE9TVCwgdHJ1ZSk7CiAgICBjdXJsX3NldG9wdCgkY3VybDIsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIHRydWUpOwogICAgY3VybF9zZXRvcHQoJGN1cmwyLCBDVVJMT1BUX0hUVFBIRUFERVIsICRoZWFkZXJzKTsKICAgICRkYXRhMiA9IDw8PERBVEEKewoKICAiZGV2aWNlIjogewogICAgICAiZGV2aWNlSWQiOiAiZmNiZTg3YjYyMzQyZmJhYyIsCiAgICAiZGV2aWNlSW1laSI6ICJmY2JlODdiNjIzNDJmYmFjIiwKICAgICJkZXZpY2VNb2RlbCI6ICJYaWFvbWkgUmVkbWkgTm90ZSAxMCIsCiAgICAiZGV2aWNlTmFtZSI6ICJhbmRyb2lkIiwKICAgICJkZXZpY2VPcyI6ICJBbmRyb2lkIE9fTVIxICIsCiAgICAiaXNFbXVsYXRvciI6IGZhbHNlLAogICAgIm5vdGlmaWNhdGlvblRva2VuIjogImVFQmp4WXJEU0p5Rnc3Ti1EcEVHTkI6QVBBOTFiRVpuV28tVFJkU2dWQ3pRY0pxM2dIaW9KdEZUaE55eHc2UHNnT0NJMUpIRHpkNTV5cUctUVp3QVpSajRwd0lDclhvNVZEaVVZb203RnNmNFFsNjYtQ1dIRnVtTkEyeW5yS0VQMjFic3RQQk1nd3NOLTNHX0VrMFpMY29LdFZNZzVvTjYtcGciLAogICAgIm9zVmVyc2lvbiI6ICIyOCIKICB9LAogICJwb3N0SWQiOiAkcDEsCiAgInJhdGUiOiA1LAogICJ1c2VyaWQiOiAkdWlkCn0KREFUQTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsMiwgQ1VSTE9QVF9QT1NURklFTERTLCAkZGF0YTIpOwogICAgJHJlc3AyID0gY3VybF9leGVjKCRjdXJsMik7CiAgICBjdXJsX2Nsb3NlKCRjdXJsMik7CiAgICAvL3Zhcl9kdW1wKCRyZXNwMik7CiAgICAkanNvbjIgPSBqc29uX2RlY29kZSgkcmVzcDIpOwogICAgZWNobyAkanNvbjItPm1lc3NhZ2U7CiAgICAkeWVsb3cgPSAiG1swOzM1bSI7CiAgICAgICBlY2hvICIkeWVsb3ciOwogICAgICAgc2xlZXAoMik7IAogICAgICAgICRjdXJsID0gY3VybF9pbml0KCk7CiAgICAgICAgY3VybF9zZXRvcHRfYXJyYXkoJGN1cmwsIGFycmF5KENVUkxPUFRfVVJMID0+ICdodHRwczovL3Bvc3RpbmcubXlseWthYXBwcy5jb20vYXBpL3YzL3Bvc3RzL2FkZHBvc3QnLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSID0+IHRydWUsIENVUkxPUFRfRU5DT0RJTkcgPT4gJycsIENVUkxPUFRfTUFYUkVESVJTID0+IDEwLCBDVVJMT1BUX1RJTUVPVVQgPT4gMCwgQ1VSTE9QVF9GT0xMT1dMT0NBVElPTiA9PiB0cnVlLCBDVVJMT1BUX0hUVFBfVkVSU0lPTiA9PiBDVVJMX0hUVFBfVkVSU0lPTl8xXzEsIENVUkxPUFRfQ1VTVE9NUkVRVUVTVCA9PiAnUE9TVCcsIENVUkxPUFRfUE9TVEZJRUxEUyA9PiBhcnJheSgnYm91bmRhcnknID0+ICc3ZTljMTFmZC05ODdlLTRiNGYtYmYxNC04YTA0YWM4ZGEyNmUnLCAndGl0bGUnID0+ICcnLCAnY29udGVudCcgPT4gJycsICd1cmwnID0+ICcnLCAndGl0bGVVcmwnID0+ICcnLCAnZGVzY3JpcHRpb25VcmwnID0+ICcnLCAnaW1hZ2VVcmwnID0+ICdodHRwczovL2QyNzVreDN2Zm93N2VhLmNsb3VkZnJvbnQubmV0L2RhdGEvaW1hZ2VzL3dpc2hsaXN0cy81MDAyMDQ4NTk3MDEvMjAyMDEwMTgvcmVzaXplZC83M2I5MjRhZC0wNWU5LTRkNmUtYjg5Yi0yYjExZGE2MmQxNGIuanBlZycsICdoYXNodGFncycgPT4gJycsICdkZXZpY2VpZCcgPT4gJ2ZjYmU4NmI4NDI1OTVjMmYnLCAnZGV2aWNlbW9kZWwnID0+ICcnLCAnZGV2aWNlb3MnID0+ICdYaWFvbWkgUmVkbWkgTm90ZSA1JywgJ29zdmVyc2lvbicgPT4gJ0FuZHJvaWQgT19NUjEnLCAnbWVkaWFUYWdzJyA9PiAnMjgnKSwgQ1VSTE9QVF9IVFRQSEVBREVSID0+IGFycmF5KCJhdXRob3JpemF0aW9uOiBCZWFyZXIgJGJlYXJlciIsICJ1c2VyLWFnZW50OiBMeWthLzMuNi43IChjb20udGhpbmdzaWxpa2VhcHA7IGJ1aWxkOjgwNyBBbmRyb2lkIE9fTVIxIDI4KSIpLCkpOyAgICAgICAgICRyZXNwb25zZSA9IGN1cmxfZXhlYygkY3VybCk7CiAgICAgICAgY3VybF9jbG9zZSgkY3VybCk7CiAgICAgICAgLy9lY2hvICRyZXNwb25zZTsKICAgICAgICAkanNvbiA9IGpzb25fZGVjb2RlKCRyZXNwb25zZSk7CiAgICAgICAgJG1lc3MgPSAkanNvbi0+bWVzc2FnZTsKICAgICAgICBlY2hvICIkbWVzcyI7CiAgICBlY2hvICIKIjsKICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAgICRlID0gIhtbMTszNG0iOwplY2hvICIkZSI7CgokY3VybDMgPSBjdXJsX2luaXQoJHVybCk7CiAgICBjdXJsX3NldG9wdCgkY3VybDMsIENVUkxPUFRfVVJMLCAkdXJsKTsKICAgICAgICBjdXJsX3NldG9wdCgkY3VybDMsIENVUkxPUFRfUE9TVCwgdHJ1ZSk7CiAgICBjdXJsX3NldG9wdCgkY3VybDMsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIHRydWUpOwogICBjdXJsX3NldG9wdCgkY3VybDMsIENVUkxPUFRfSFRUUEhFQURFUiwgJGhlYWRlcnMpOwogICAgJGRhdGEzID0gPDw8REFUQQp7CgkKICAiZGV2aWNlIjogewogICAgImRldmljZUlkIjogImZjYmU4N2I2MjM0MmZiYWMiLAogICAgImRldmljZUltZWkiOiAiZmNiZTg3YjYyMzQyZmJhYyIsCiAgICAiZGV2aWNlTW9kZWwiOiAiWGlhb21pIFJlZG1pIE5vdGUgMTAiLAogICAgImRldmljZU5hbWUiOiAiYW5kcm9pZCIsCiAgICAiZGV2aWNlT3MiOiAiQW5kcm9pZCBPX01SMSAiLAogICAgImlzRW11bGF0b3IiOiBmYWxzZSwKICAgICJub3RpZmljYXRpb25Ub2tlbiI6ICJlRUJqeFlyRFNKeUZ3N04tRHBFR05COkFQQTkxYkVabldvLVRSZFNnVkN6UWNKcTNnSGlvSnRGVGhOeXh3NlBzZ09DSTFKSER6ZDU1eXFHLVFad0FaUmo0cHdJQ3JYbzVWRGlVWW9tN0ZzZjRRbDY2LUNXSEZ1bU5BMnlucktFUDIxYnN0UEJNZ3dzTi0zR19FazBaTGNvS3RWTWc1b042LXBnIiwKICAgICJvc1ZlcnNpb24iOiAiMjgiCiAgfSwKICAicG9zdElkIjogJHAyLAogICJyYXRlIjogNSwKICAidXNlcmlkIjogJHVpZAp9CkRBVEE7CiAgICBjdXJsX3NldG9wdCgkY3VybDMsIENVUkxPUFRfUE9TVEZJRUxEUywgJGRhdGEzKTsKICAgICRyZXNwMyA9IGN1cmxfZXhlYygkY3VybDMpOwogICAgY3VybF9jbG9zZSgkY3VybDMpOwogICAgLy92YXJfZHVtcCgkcmVzcDIpOwogICAgJGpzb24zID0ganNvbl9kZWNvZGUoJHJlc3AzKTsKICAgIGVjaG8gJGpzb24zLT5tZXNzYWdlOwogICAgJHllbG93ID0gIhtbMDszNW0iOwogICAgICAgZWNobyAiJHllbG93IjsKICAgIHNsZWVwKDIpOyAKICAgICAgICAkY3VybCA9IGN1cmxfaW5pdCgpOwogICAgICAgIGN1cmxfc2V0b3B0X2FycmF5KCRjdXJsLCBhcnJheShDVVJMT1BUX1VSTCA9PiAnaHR0cHM6Ly9wb3N0aW5nLm15bHlrYWFwcHMuY29tL2FwaS92My9wb3N0cy9hZGRwb3N0JywgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiA9PiB0cnVlLCBDVVJMT1BUX0VOQ09ESU5HID0+ICcnLCBDVVJMT1BUX01BWFJFRElSUyA9PiAxMCwgQ1VSTE9QVF9USU1FT1VUID0+IDAsIENVUkxPUFRfRk9MTE9XTE9DQVRJT04gPT4gdHJ1ZSwgQ1VSTE9QVF9IVFRQX1ZFUlNJT04gPT4gQ1VSTF9IVFRQX1ZFUlNJT05fMV8xLCBDVVJMT1BUX0NVU1RPTVJFUVVFU1QgPT4gJ1BPU1QnLCBDVVJMT1BUX1BPU1RGSUVMRFMgPT4gYXJyYXkoJ2JvdW5kYXJ5JyA9PiAnN2U5YzExZmQtOTg3ZS00YjRmLWJmMTQtOGEwNGFjOGRhMjZlJywgJ3RpdGxlJyA9PiAnJywgJ2NvbnRlbnQnID0+ICcnLCAndXJsJyA9PiAnJywgJ3RpdGxlVXJsJyA9PiAnJywgJ2Rlc2NyaXB0aW9uVXJsJyA9PiAnJywgJ2ltYWdlVXJsJyA9PiAnaHR0cHM6Ly9kMjc1a3gzdmZvdzdlYS5jbG91ZGZyb250Lm5ldC9kYXRhL2ltYWdlcy93aXNobGlzdHMvNTAwMjA0ODU5NzAxLzIwMjAxMDE4L3Jlc2l6ZWQvNzNiOTI0YWQtMDVlOS00ZDZlLWI4OWItMmIxMWRhNjJkMTRiLmpwZWcnLCAnaGFzaHRhZ3MnID0+ICcnLCAnZGV2aWNlaWQnID0+ICdmY2JlODZiODQyNTk1YzJmJywgJ2RldmljZW1vZGVsJyA9PiAnJywgJ2RldmljZW9zJyA9PiAnWGlhb21pIFJlZG1pIE5vdGUgNScsICdvc3ZlcnNpb24nID0+ICdBbmRyb2lkIE9fTVIxJywgJ21lZGlhVGFncycgPT4gJzI4JyksIENVUkxPUFRfSFRUUEhFQURFUiA9PiBhcnJheSgiYXV0aG9yaXphdGlvbjogQmVhcmVyICRiZWFyZXIiLCAidXNlci1hZ2VudDogTHlrYS8zLjYuNyAoY29tLnRoaW5nc2lsaWtlYXBwOyBidWlsZDo4MDcgQW5kcm9pZCBPX01SMSAyOCkiKSwpKTsgICAgICAgICAkcmVzcG9uc2UgPSBjdXJsX2V4ZWMoJGN1cmwpOwogICAgICAgIGN1cmxfY2xvc2UoJGN1cmwpOwogICAgICAgIC8vZWNobyAkcmVzcG9uc2U7CiAgICAgICAgJGpzb24gPSBqc29uX2RlY29kZSgkcmVzcG9uc2UpOwogICAgICAgICRtZXNzID0gJGpzb24tPm1lc3NhZ2U7CiAgICAgICAgZWNobyAiJG1lc3MiOwogICAgZWNobyAiCiI7CiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgJGUgPSAiG1sxOzM0bSI7CmVjaG8gIiRlIjsKCiAgJGN1cmw0ID0gY3VybF9pbml0KCR1cmwpOwogICAgY3VybF9zZXRvcHQoJGN1cmw0LCBDVVJMT1BUX1VSTCwgJHVybCk7CiAgICBjdXJsX3NldG9wdCgkY3VybDQsIENVUkxPUFRfUE9TVCwgdHJ1ZSk7CiAgICBjdXJsX3NldG9wdCgkY3VybDQsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIHRydWUpOwogICAgY3VybF9zZXRvcHQoJGN1cmw0LCBDVVJMT1BUX0hUVFBIRUFERVIsICRoZWFkZXJzKTsKICAgICRkYXRhNCA9IDw8PERBVEEKewoJCiAgImRldmljZSI6IHsKICAgICJkZXZpY2VJZCI6ICJmY2JlODdiNjIzNDJmYmFjIiwKICAgICJkZXZpY2VJbWVpIjogImZjYmU4N2I2MjM0MmZiYWMiLAogICAgImRldmljZU1vZGVsIjogIlhpYW9taSBSZWRtaSBOb3RlIDEwIiwKICAgICJkZXZpY2VOYW1lIjogImFuZHJvaWQiLAogICAgImRldmljZU9zIjogIkFuZHJvaWQgT19NUjEgIiwKICAgICJpc0VtdWxhdG9yIjogZmFsc2UsCiAgICAibm90aWZpY2F0aW9uVG9rZW4iOiAiZUVCanhZckRTSnlGdzdOLURwRUdOQjpBUEE5MWJFWm5Xby1UUmRTZ1ZDelFjSnEzZ0hpb0p0RlRoTnl4dzZQc2dPQ0kxSkhEemQ1NXlxRy1RWndBWlJqNHB3SUNyWG81VkRpVVlvbTdGc2Y0UWw2Ni1DV0hGdW1OQTJ5bnJLRVAyMWJzdFBCTWd3c04tM0dfRWswWkxjb0t0Vk1nNW9ONi1wZyIsCiAgICAib3NWZXJzaW9uIjogIjI4IgogIH0sCiAgInBvc3RJZCI6ICRwMywKICAicmF0ZSI6IDUsCiAgInVzZXJpZCI6ICR1aWQgCn0KREFUQTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsNCwgQ1VSTE9QVF9QT1NURklFTERTLCAkZGF0YTQpOwogICAgJHJlc3A0ID0gY3VybF9leGVjKCRjdXJsNCk7CiAgICBjdXJsX2Nsb3NlKCRjdXJsNCk7CiAgICAvL3Zhcl9kdW1wKCRyZXNwMik7CiAgICAkanNvbjQgPSBqc29uX2RlY29kZSgkcmVzcDQpOwogICAgZWNobyAkanNvbjQtPm1lc3NhZ2U7CiAgICAkeWVsb3cgPSAiG1swOzM1bSI7CiAgICAgICBlY2hvICIkeWVsb3ciOwogICBzbGVlcCgyKTsgCiAgICAgICAgJGN1cmwgPSBjdXJsX2luaXQoKTsKICAgICAgICBjdXJsX3NldG9wdF9hcnJheSgkY3VybCwgYXJyYXkoQ1VSTE9QVF9VUkwgPT4gJ2h0dHBzOi8vcG9zdGluZy5teWx5a2FhcHBzLmNvbS9hcGkvdjMvcG9zdHMvYWRkcG9zdCcsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIgPT4gdHJ1ZSwgQ1VSTE9QVF9FTkNPRElORyA9PiAnJywgQ1VSTE9QVF9NQVhSRURJUlMgPT4gMTAsIENVUkxPUFRfVElNRU9VVCA9PiAwLCBDVVJMT1BUX0ZPTExPV0xPQ0FUSU9OID0+IHRydWUsIENVUkxPUFRfSFRUUF9WRVJTSU9OID0+IENVUkxfSFRUUF9WRVJTSU9OXzFfMSwgQ1VSTE9QVF9DVVNUT01SRVFVRVNUID0+ICdQT1NUJywgQ1VSTE9QVF9QT1NURklFTERTID0+IGFycmF5KCdib3VuZGFyeScgPT4gJzdlOWMxMWZkLTk4N2UtNGI0Zi1iZjE0LThhMDRhYzhkYTI2ZScsICd0aXRsZScgPT4gJycsICdjb250ZW50JyA9PiAnJywgJ3VybCcgPT4gJycsICd0aXRsZVVybCcgPT4gJycsICdkZXNjcmlwdGlvblVybCcgPT4gJycsICdpbWFnZVVybCcgPT4gJ2h0dHBzOi8vZDI3NWt4M3Zmb3c3ZWEuY2xvdWRmcm9udC5uZXQvZGF0YS9pbWFnZXMvd2lzaGxpc3RzLzUwMDIwNDg1OTcwMS8yMDIwMTAxOC9yZXNpemVkLzczYjkyNGFkLTA1ZTktNGQ2ZS1iODliLTJiMTFkYTYyZDE0Yi5qcGVnJywgJ2hhc2h0YWdzJyA9PiAnJywgJ2RldmljZWlkJyA9PiAnZmNiZTg2Yjg0MjU5NWMyZicsICdkZXZpY2Vtb2RlbCcgPT4gJycsICdkZXZpY2VvcycgPT4gJ1hpYW9taSBSZWRtaSBOb3RlIDUnLCAnb3N2ZXJzaW9uJyA9PiAnQW5kcm9pZCBPX01SMScsICdtZWRpYVRhZ3MnID0+ICcyOCcpLCBDVVJMT1BUX0hUVFBIRUFERVIgPT4gYXJyYXkoImF1dGhvcml6YXRpb246IEJlYXJlciAkYmVhcmVyIiwgInVzZXItYWdlbnQ6IEx5a2EvMy42LjcgKGNvbS50aGluZ3NpbGlrZWFwcDsgYnVpbGQ6ODA3IEFuZHJvaWQgT19NUjEgMjgpIiksKSk7ICAgICAgICAgJHJlc3BvbnNlID0gY3VybF9leGVjKCRjdXJsKTsKICAgICAgICBjdXJsX2Nsb3NlKCRjdXJsKTsKICAgICAgICAvL2VjaG8gJHJlc3BvbnNlOwogICAgICAgICRqc29uID0ganNvbl9kZWNvZGUoJHJlc3BvbnNlKTsKICAgICAgICAkbWVzcyA9ICRqc29uLT5tZXNzYWdlOwogICAgICAgIGVjaG8gIiRtZXNzIjsgCiAgICBlY2hvICIKIjsKICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAkZSA9ICIbWzE7MzRtIjsKZWNobyAiJGUiOwoKICAkY3VybDUgPSBjdXJsX2luaXQoJHVybCk7CiAgICBjdXJsX3NldG9wdCgkY3VybDUsIENVUkxPUFRfVVJMLCAkdXJsKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsNSwgQ1VSTE9QVF9QT1NULCB0cnVlKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsNSwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7CiAgICBjdXJsX3NldG9wdCgkY3VybDUsIENVUkxPUFRfSFRUUEhFQURFUiwgJGhlYWRlcnMpOwogICAgJGRhdGE1ID0gPDw8REFUQQp7CgkKICAiZGV2aWNlIjogewogICAgImRldmljZUlkIjogImZjYmU4N2I2MjM0MmZiYWMiLAogICAgImRldmljZUltZWkiOiAiZmNiZTg3YjYyMzQyZmJhYyIsCiAgICAiZGV2aWNlTW9kZWwiOiAiWGlhb21pIFJlZG1pIE5vdGUgMTAiLAogICAgImRldmljZU5hbWUiOiAiYW5kcm9pZCIsCiAgICAiZGV2aWNlT3MiOiAiQW5kcm9pZCBPX01SMSAiLAogICAgImlzRW11bGF0b3IiOiBmYWxzZSwKICAgICJub3RpZmljYXRpb25Ub2tlbiI6ICJlRUJqeFlyRFNKeUZ3N04tRHBFR05COkFQQTkxYkVabldvLVRSZFNnVkN6UWNKcTNnSGlvSnRGVGhOeXh3NlBzZ09DSTFKSER6ZDU1eXFHLVFad0FaUmo0cHdJQ3JYbzVWRGlVWW9tN0ZzZjRRbDY2LUNXSEZ1bU5BMnlucktFUDIxYnN0UEJNZ3dzTi0zR19FazBaTGNvS3RWTWc1b042LXBnIiwKICAgICJvc1ZlcnNpb24iOiAiMjgiCiAgfSwKICAicG9zdElkIjogJHA0LAogICJyYXRlIjogNSwKICAidXNlcmlkIjogJHVpZAp9CkRBVEE7CiAgICBjdXJsX3NldG9wdCgkY3VybDUsIENVUkxPUFRfUE9TVEZJRUxEUywgJGRhdGE1KTsKICAgICRyZXNwNSA9IGN1cmxfZXhlYygkY3VybDUpOwogICAgY3VybF9jbG9zZSgkY3VybDUpOwogICAgLy92YXJfZHVtcCgkcmVzcDIpOwogICAgJGpzb241ID0ganNvbl9kZWNvZGUoJHJlc3A1KTsKICAgIGVjaG8gJGpzb241LT5tZXNzYWdlOwogICAgJHllbG93ID0gIhtbMDszNW0iOwogICAgICAgZWNobyAiJHllbG93IjsKICAgIHNsZWVwKDMpOyAKICAgICAgICAkY3VybCA9IGN1cmxfaW5pdCgpOwogICAgICAgIGN1cmxfc2V0b3B0X2FycmF5KCRjdXJsLCBhcnJheShDVVJMT1BUX1VSTCA9PiAnaHR0cHM6Ly9wb3N0aW5nLm15bHlrYWFwcHMuY29tL2FwaS92My9wb3N0cy9hZGRwb3N0JywgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiA9PiB0cnVlLCBDVVJMT1BUX0VOQ09ESU5HID0+ICcnLCBDVVJMT1BUX01BWFJFRElSUyA9PiAxMCwgQ1VSTE9QVF9USU1FT1VUID0+IDAsIENVUkxPUFRfRk9MTE9XTE9DQVRJT04gPT4gdHJ1ZSwgQ1VSTE9QVF9IVFRQX1ZFUlNJT04gPT4gQ1VSTF9IVFRQX1ZFUlNJT05fMV8xLCBDVVJMT1BUX0NVU1RPTVJFUVVFU1QgPT4gJ1BPU1QnLCBDVVJMT1BUX1BPU1RGSUVMRFMgPT4gYXJyYXkoJ2JvdW5kYXJ5JyA9PiAnN2U5YzExZmQtOTg3ZS00YjRmLWJmMTQtOGEwNGFjOGRhMjZlJywgJ3RpdGxlJyA9PiAnJywgJ2NvbnRlbnQnID0+ICcnLCAndXJsJyA9PiAnJywgJ3RpdGxlVXJsJyA9PiAnJywgJ2Rlc2NyaXB0aW9uVXJsJyA9PiAnJywgJ2ltYWdlVXJsJyA9PiAnaHR0cHM6Ly9kMjc1a3gzdmZvdzdlYS5jbG91ZGZyb250Lm5ldC9kYXRhL2ltYWdlcy93aXNobGlzdHMvNTAwMjA0ODU5NzAxLzIwMjAxMDE4L3Jlc2l6ZWQvNzNiOTI0YWQtMDVlOS00ZDZlLWI4OWItMmIxMWRhNjJkMTRiLmpwZWcnLCAnaGFzaHRhZ3MnID0+ICcnLCAnZGV2aWNlaWQnID0+ICdmY2JlODZiODQyNTk1YzJmJywgJ2RldmljZW1vZGVsJyA9PiAnJywgJ2RldmljZW9zJyA9PiAnWGlhb21pIFJlZG1pIE5vdGUgNScsICdvc3ZlcnNpb24nID0+ICdBbmRyb2lkIE9fTVIxJywgJ21lZGlhVGFncycgPT4gJzI4JyksIENVUkxPUFRfSFRUUEhFQURFUiA9PiBhcnJheSgiYXV0aG9yaXphdGlvbjogQmVhcmVyICRiZWFyZXIiLCAidXNlci1hZ2VudDogTHlrYS8zLjYuNyAoY29tLnRoaW5nc2lsaWtlYXBwOyBidWlsZDo4MDcgQW5kcm9pZCBPX01SMSAyOCkiKSwpKTsgICAgICAgICAkcmVzcG9uc2UgPSBjdXJsX2V4ZWMoJGN1cmwpOwogICAgICAgIGN1cmxfY2xvc2UoJGN1cmwpOwogICAgICAgIC8vZWNobyAkcmVzcG9uc2U7CiAgICAgICAgJGpzb24gPSBqc29uX2RlY29kZSgkcmVzcG9uc2UpOwogICAgICAgICRtZXNzID0gJGpzb24tPm1lc3NhZ2U7CiAgICAgICAgZWNobyAiJG1lc3MiOwogICAgZWNobyAiCiI7CiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgICRlID0gIhtbMTszNG0iOwplY2hvICIkZSI7CgogJGN1cmw2ID0gY3VybF9pbml0KCR1cmwpOwogICAgY3VybF9zZXRvcHQoJGN1cmw2LCBDVVJMT1BUX1VSTCwgJHVybCk7CiAgICBjdXJsX3NldG9wdCgkY3VybDYsIENVUkxPUFRfUE9TVCwgdHJ1ZSk7CiAgICBjdXJsX3NldG9wdCgkY3VybDYsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIHRydWUpOwogICAgY3VybF9zZXRvcHQoJGN1cmw2LCBDVVJMT1BUX0hUVFBIRUFERVIsICRoZWFkZXJzKTsKICAgICRkYXRhNiA9IDw8PERBVEEKewoJCiAgImRldmljZSI6IHsKICAgICJkZXZpY2VJZCI6ICJmY2JlODdiNjIzNDJmYmFjIiwKICAgICJkZXZpY2VJbWVpIjogImZjYmU4N2I2MjM0MmZiYWMiLAogICAgImRldmljZU1vZGVsIjogIlhpYW9taSBSZWRtaSBOb3RlIDEwIiwKICAgICJkZXZpY2VOYW1lIjogImFuZHJvaWQiLAogICAgImRldmljZU9zIjogIkFuZHJvaWQgT19NUjEgIiwKICAgICJpc0VtdWxhdG9yIjogZmFsc2UsCiAgICAibm90aWZpY2F0aW9uVG9rZW4iOiAiZUVCanhZckRTSnlGdzdOLURwRUdOQjpBUEE5MWJFWm5Xby1UUmRTZ1ZDelFjSnEzZ0hpb0p0RlRoTnl4dzZQc2dPQ0kxSkhEemQ1NXlxRy1RWndBWlJqNHB3SUNyWG81VkRpVVlvbTdGc2Y0UWw2Ni1DV0hGdW1OQTJ5bnJLRVAyMWJzdFBCTWd3c04tM0dfRWswWkxjb0t0Vk1nNW9ONi1wZyIsCiAgICAib3NWZXJzaW9uIjogIjI4IgogIH0sCiAgInBvc3RJZCI6ICRwNSwKICAicmF0ZSI6IDUsCiAgInVzZXJpZCI6ICR1aWQKfQpEQVRBOwogICAgY3VybF9zZXRvcHQoJGN1cmw2LCBDVVJMT1BUX1BPU1RGSUVMRFMsICRkYXRhNik7CiAgICAkcmVzcDYgPSBjdXJsX2V4ZWMoJGN1cmw2KTsKICAgIGN1cmxfY2xvc2UoJGN1cmw2KTsKICAgIC8vdmFyX2R1bXAoJHJlc3AyKTsKICAgICRqc29uNiA9IGpzb25fZGVjb2RlKCRyZXNwNik7CiAgICBlY2hvICRqc29uNi0+bWVzc2FnZTsKICAgICR5ZWxvdyA9ICIbWzA7MzVtIjsKICAgICAgIGVjaG8gIiR5ZWxvdyI7CiAgICBzbGVlcCgyKTsgCiAgICAgICAgJGN1cmwgPSBjdXJsX2luaXQoKTsKICAgICAgICBjdXJsX3NldG9wdF9hcnJheSgkY3VybCwgYXJyYXkoQ1VSTE9QVF9VUkwgPT4gJ2h0dHBzOi8vcG9zdGluZy5teWx5a2FhcHBzLmNvbS9hcGkvdjMvcG9zdHMvYWRkcG9zdCcsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIgPT4gdHJ1ZSwgQ1VSTE9QVF9FTkNPRElORyA9PiAnJywgQ1VSTE9QVF9NQVhSRURJUlMgPT4gMTAsIENVUkxPUFRfVElNRU9VVCA9PiAwLCBDVVJMT1BUX0ZPTExPV0xPQ0FUSU9OID0+IHRydWUsIENVUkxPUFRfSFRUUF9WRVJTSU9OID0+IENVUkxfSFRUUF9WRVJTSU9OXzFfMSwgQ1VSTE9QVF9DVVNUT01SRVFVRVNUID0+ICdQT1NUJywgQ1VSTE9QVF9QT1NURklFTERTID0+IGFycmF5KCdib3VuZGFyeScgPT4gJzdlOWMxMWZkLTk4N2UtNGI0Zi1iZjE0LThhMDRhYzhkYTI2ZScsICd0aXRsZScgPT4gJycsICdjb250ZW50JyA9PiAnJywgJ3VybCcgPT4gJycsICd0aXRsZVVybCcgPT4gJycsICdkZXNjcmlwdGlvblVybCcgPT4gJycsICdpbWFnZVVybCcgPT4gJ2h0dHBzOi8vZDI3NWt4M3Zmb3c3ZWEuY2xvdWRmcm9udC5uZXQvZGF0YS9pbWFnZXMvd2lzaGxpc3RzLzUwMDIwNDg1OTcwMS8yMDIwMTAxOC9yZXNpemVkLzczYjkyNGFkLTA1ZTktNGQ2ZS1iODliLTJiMTFkYTYyZDE0Yi5qcGVnJywgJ2hhc2h0YWdzJyA9PiAnJywgJ2RldmljZWlkJyA9PiAnZmNiZTg2Yjg0MjU5NWMyZicsICdkZXZpY2Vtb2RlbCcgPT4gJycsICdkZXZpY2VvcycgPT4gJ1hpYW9taSBSZWRtaSBOb3RlIDUnLCAnb3N2ZXJzaW9uJyA9PiAnQW5kcm9pZCBPX01SMScsICdtZWRpYVRhZ3MnID0+ICcyOCcpLCBDVVJMT1BUX0hUVFBIRUFERVIgPT4gYXJyYXkoImF1dGhvcml6YXRpb246IEJlYXJlciAkYmVhcmVyIiwgInVzZXItYWdlbnQ6IEx5a2EvMy42LjcgKGNvbS50aGluZ3NpbGlrZWFwcDsgYnVpbGQ6ODA3IEFuZHJvaWQgT19NUjEgMjgpIiksKSk7ICAgICAgICAgJHJlc3BvbnNlID0gY3VybF9leGVjKCRjdXJsKTsKICAgICAgICBjdXJsX2Nsb3NlKCRjdXJsKTsKICAgICAgICAvL2VjaG8gJHJlc3BvbnNlOwogICAgICAgICRqc29uID0ganNvbl9kZWNvZGUoJHJlc3BvbnNlKTsKICAgICAgICAkbWVzcyA9ICRqc29uLT5tZXNzYWdlOwogICAgICAgIGVjaG8gIiRtZXNzIjsKICAgIGVjaG8gIgoiOwogICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogICAgJGUgPSAiG1sxOzM0bSI7CmVjaG8gIiRlIjsKCiRjdXJsNyA9IGN1cmxfaW5pdCgkdXJsKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsNywgQ1VSTE9QVF9VUkwsICR1cmwpOwogICAgY3VybF9zZXRvcHQoJGN1cmw3LCBDVVJMT1BUX1BPU1QsIHRydWUpOwogICAgY3VybF9zZXRvcHQoJGN1cmw3LCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCB0cnVlKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsNywgQ1VSTE9QVF9IVFRQSEVBREVSLCAkaGVhZGVycyk7CiAgICAkZGF0YTcgPSA8PDxEQVRBCnsKCQogICJkZXZpY2UiOiB7CiAgICAiZGV2aWNlSWQiOiAiZmNiZTg3YjYyMzQyZmJhYyIsCiAgICAiZGV2aWNlSW1laSI6ICJmY2JlODdiNjIzNDJmYmFjIiwKICAgICJkZXZpY2VNb2RlbCI6ICJYaWFvbWkgUmVkbWkgTm90ZSAxMCIsCiAgICAiZGV2aWNlTmFtZSI6ICJhbmRyb2lkIiwKICAgICJkZXZpY2VPcyI6ICJBbmRyb2lkIE9fTVIxICIsCiAgICAiaXNFbXVsYXRvciI6IGZhbHNlLAogICAgIm5vdGlmaWNhdGlvblRva2VuIjogImVFQmp4WXJEU0p5Rnc3Ti1EcEVHTkI6QVBBOTFiRVpuV28tVFJkU2dWQ3pRY0pxM2dIaW9KdEZUaE55eHc2UHNnT0NJMUpIRHpkNTV5cUctUVp3QVpSajRwd0lDclhvNVZEaVVZb203RnNmNFFsNjYtQ1dIRnVtTkEyeW5yS0VQMjFic3RQQk1nd3NOLTNHX0VrMFpMY29LdFZNZzVvTjYtcGciLAogICAgIm9zVmVyc2lvbiI6ICIyOCIKICB9LAogICJwb3N0SWQiOiAkcDYsCiAgInJhdGUiOiA1LAogICJ1c2VyaWQiOiAkdWlkCn0KREFUQTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsNywgQ1VSTE9QVF9QT1NURklFTERTLCAkZGF0YTcpOwogICAgJHJlc3A3ID0gY3VybF9leGVjKCRjdXJsNyk7CiAgICBjdXJsX2Nsb3NlKCRjdXJsNyk7CiAgICAvL3Zhcl9kdW1wKCRyZXNwMik7CiAgICAkanNvbjcgPSBqc29uX2RlY29kZSgkcmVzcDcpOwogICAgZWNobyAkanNvbjctPm1lc3NhZ2U7CiAgICAkeWVsb3cgPSAiG1swOzM1bSI7CiAgICAgICBlY2hvICIkeWVsb3ciOwogICAgc2xlZXAoMyk7IAogICAgICAgICRjdXJsID0gY3VybF9pbml0KCk7CiAgICAgICAgY3VybF9zZXRvcHRfYXJyYXkoJGN1cmwsIGFycmF5KENVUkxPUFRfVVJMID0+ICdodHRwczovL3Bvc3RpbmcubXlseWthYXBwcy5jb20vYXBpL3YzL3Bvc3RzL2FkZHBvc3QnLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSID0+IHRydWUsIENVUkxPUFRfRU5DT0RJTkcgPT4gJycsIENVUkxPUFRfTUFYUkVESVJTID0+IDEwLCBDVVJMT1BUX1RJTUVPVVQgPT4gMCwgQ1VSTE9QVF9GT0xMT1dMT0NBVElPTiA9PiB0cnVlLCBDVVJMT1BUX0hUVFBfVkVSU0lPTiA9PiBDVVJMX0hUVFBfVkVSU0lPTl8xXzEsIENVUkxPUFRfQ1VTVE9NUkVRVUVTVCA9PiAnUE9TVCcsIENVUkxPUFRfUE9TVEZJRUxEUyA9PiBhcnJheSgnYm91bmRhcnknID0+ICc3ZTljMTFmZC05ODdlLTRiNGYtYmYxNC04YTA0YWM4ZGEyNmUnLCAndGl0bGUnID0+ICcnLCAnY29udGVudCcgPT4gJycsICd1cmwnID0+ICcnLCAndGl0bGVVcmwnID0+ICcnLCAnZGVzY3JpcHRpb25VcmwnID0+ICcnLCAnaW1hZ2VVcmwnID0+ICdodHRwczovL2QyNzVreDN2Zm93N2VhLmNsb3VkZnJvbnQubmV0L2RhdGEvaW1hZ2VzL3dpc2hsaXN0cy81MDAyMDQ4NTk3MDEvMjAyMDEwMTgvcmVzaXplZC83M2I5MjRhZC0wNWU5LTRkNmUtYjg5Yi0yYjExZGE2MmQxNGIuanBlZycsICdoYXNodGFncycgPT4gJycsICdkZXZpY2VpZCcgPT4gJ2ZjYmU4NmI4NDI1OTVjMmYnLCAnZGV2aWNlbW9kZWwnID0+ICcnLCAnZGV2aWNlb3MnID0+ICdYaWFvbWkgUmVkbWkgTm90ZSA1JywgJ29zdmVyc2lvbicgPT4gJ0FuZHJvaWQgT19NUjEnLCAnbWVkaWFUYWdzJyA9PiAnMjgnKSwgQ1VSTE9QVF9IVFRQSEVBREVSID0+IGFycmF5KCJhdXRob3JpemF0aW9uOiBCZWFyZXIgJGJlYXJlciIsICJ1c2VyLWFnZW50OiBMeWthLzMuNi43IChjb20udGhpbmdzaWxpa2VhcHA7IGJ1aWxkOjgwNyBBbmRyb2lkIE9fTVIxIDI4KSIpLCkpOyAgICAgICAgICRyZXNwb25zZSA9IGN1cmxfZXhlYygkY3VybCk7CiAgICAgICAgY3VybF9jbG9zZSgkY3VybCk7CiAgICAgICAgLy9lY2hvICRyZXNwb25zZTsKICAgICAgICAkanNvbiA9IGpzb25fZGVjb2RlKCRyZXNwb25zZSk7CiAgICAgICAgJG1lc3MgPSAkanNvbi0+bWVzc2FnZTsKICAgICAgICBlY2hvICIkbWVzcyI7CiAgICBlY2hvICIKIjsKICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAkZSA9ICIbWzE7MzRtIjsKZWNobyAiJGUiOwoKICAkY3VybDggPSBjdXJsX2luaXQoJHVybCk7CiAgICBjdXJsX3NldG9wdCgkY3VybDgsIENVUkxPUFRfVVJMLCAkdXJsKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsOCwgQ1VSTE9QVF9QT1NULCB0cnVlKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsOCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7CiAgICBjdXJsX3NldG9wdCgkY3VybDgsIENVUkxPUFRfSFRUUEhFQURFUiwgJGhlYWRlcnMpOwogICAgJGRhdGE4ID0gPDw8REFUQQp7CgkKICAiZGV2aWNlIjogewogICAgImRldmljZUlkIjogImZjYmU4N2I2MjM0MmZiYWMiLAogICAgImRldmljZUltZWkiOiAiZmNiZTg3YjYyMzQyZmJhYyIsCiAgICAiZGV2aWNlTW9kZWwiOiAiWGlhb21pIFJlZG1pIE5vdGUgMTAiLAogICAgImRldmljZU5hbWUiOiAiYW5kcm9pZCIsCiAgICAiZGV2aWNlT3MiOiAiQW5kcm9pZCBPX01SMSAiLAogICAgImlzRW11bGF0b3IiOiBmYWxzZSwKICAgICJub3RpZmljYXRpb25Ub2tlbiI6ICJlRUJqeFlyRFNKeUZ3N04tRHBFR05COkFQQTkxYkVabldvLVRSZFNnVkN6UWNKcTNnSGlvSnRGVGhOeXh3NlBzZ09DSTFKSER6ZDU1eXFHLVFad0FaUmo0cHdJQ3JYbzVWRGlVWW9tN0ZzZjRRbDY2LUNXSEZ1bU5BMnlucktFUDIxYnN0UEJNZ3dzTi0zR19FazBaTGNvS3RWTWc1b042LXBnIiwKICAgICJvc1ZlcnNpb24iOiAiMjgiCiAgfSwKICAicG9zdElkIjogJHA3LAogICJyYXRlIjogNSwKICAidXNlcmlkIjogJHVpZAp9CkRBVEE7CiAgICBjdXJsX3NldG9wdCgkY3VybDgsIENVUkxPUFRfUE9TVEZJRUxEUywgJGRhdGE4KTsKICAgICRyZXNwOCA9IGN1cmxfZXhlYygkY3VybDgpOwogICAgY3VybF9jbG9zZSgkY3VybDgpOwogICAgLy92YXJfZHVtcCgkcmVzcDIpOwogICAgJGpzb244ID0ganNvbl9kZWNvZGUoJHJlc3A4KTsKICAgIGVjaG8gJGpzb244LT5tZXNzYWdlOwogICAgJHllbG93ID0gIhtbMDszNW0iOwogICAgICAgZWNobyAiJHllbG93IjsKICAgIHNsZWVwKDIpOyAKICAgICAgICAkY3VybCA9IGN1cmxfaW5pdCgpOwogICAgICAgIGN1cmxfc2V0b3B0X2FycmF5KCRjdXJsLCBhcnJheShDVVJMT1BUX1VSTCA9PiAnaHR0cHM6Ly9wb3N0aW5nLm15bHlrYWFwcHMuY29tL2FwaS92My9wb3N0cy9hZGRwb3N0JywgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiA9PiB0cnVlLCBDVVJMT1BUX0VOQ09ESU5HID0+ICcnLCBDVVJMT1BUX01BWFJFRElSUyA9PiAxMCwgQ1VSTE9QVF9USU1FT1VUID0+IDAsIENVUkxPUFRfRk9MTE9XTE9DQVRJT04gPT4gdHJ1ZSwgQ1VSTE9QVF9IVFRQX1ZFUlNJT04gPT4gQ1VSTF9IVFRQX1ZFUlNJT05fMV8xLCBDVVJMT1BUX0NVU1RPTVJFUVVFU1QgPT4gJ1BPU1QnLCBDVVJMT1BUX1BPU1RGSUVMRFMgPT4gYXJyYXkoJ2JvdW5kYXJ5JyA9PiAnN2U5YzExZmQtOTg3ZS00YjRmLWJmMTQtOGEwNGFjOGRhMjZlJywgJ3RpdGxlJyA9PiAnJywgJ2NvbnRlbnQnID0+ICcnLCAndXJsJyA9PiAnJywgJ3RpdGxlVXJsJyA9PiAnJywgJ2Rlc2NyaXB0aW9uVXJsJyA9PiAnJywgJ2ltYWdlVXJsJyA9PiAnaHR0cHM6Ly9kMjc1a3gzdmZvdzdlYS5jbG91ZGZyb250Lm5ldC9kYXRhL2ltYWdlcy93aXNobGlzdHMvNTAwMjA0ODU5NzAxLzIwMjAxMDE4L3Jlc2l6ZWQvNzNiOTI0YWQtMDVlOS00ZDZlLWI4OWItMmIxMWRhNjJkMTRiLmpwZWcnLCAnaGFzaHRhZ3MnID0+ICcnLCAnZGV2aWNlaWQnID0+ICdmY2JlODZiODQyNTk1YzJmJywgJ2RldmljZW1vZGVsJyA9PiAnJywgJ2RldmljZW9zJyA9PiAnWGlhb21pIFJlZG1pIE5vdGUgNScsICdvc3ZlcnNpb24nID0+ICdBbmRyb2lkIE9fTVIxJywgJ21lZGlhVGFncycgPT4gJzI4JyksIENVUkxPUFRfSFRUUEhFQURFUiA9PiBhcnJheSgiYXV0aG9yaXphdGlvbjogQmVhcmVyICRiZWFyZXIiLCAidXNlci1hZ2VudDogTHlrYS8zLjYuNyAoY29tLnRoaW5nc2lsaWtlYXBwOyBidWlsZDo4MDcgQW5kcm9pZCBPX01SMSAyOCkiKSwpKTsgICAgICAgICAkcmVzcG9uc2UgPSBjdXJsX2V4ZWMoJGN1cmwpOwogICAgICAgIGN1cmxfY2xvc2UoJGN1cmwpOwogICAgICAgIC8vZWNobyAkcmVzcG9uc2U7CiAgICAgICAgJGpzb24gPSBqc29uX2RlY29kZSgkcmVzcG9uc2UpOwogICAgICAgICRtZXNzID0gJGpzb24tPm1lc3NhZ2U7CiAgICAgICAgZWNobyAiJG1lc3MiOwogICAgZWNobyAiCiI7CiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgJGUgPSAiG1sxOzM0bSI7CmVjaG8gIiRlIjsKCiAgJGN1cmw5ID0gY3VybF9pbml0KCR1cmwpOwogICAgY3VybF9zZXRvcHQoJGN1cmw5LCBDVVJMT1BUX1VSTCwgJHVybCk7CiAgICBjdXJsX3NldG9wdCgkY3VybDksIENVUkxPUFRfUE9TVCwgdHJ1ZSk7CiAgICBjdXJsX3NldG9wdCgkY3VybDksIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIHRydWUpOwogICAgY3VybF9zZXRvcHQoJGN1cmw5LCBDVVJMT1BUX0hUVFBIRUFERVIsICRoZWFkZXJzKTsKICAgICRkYXRhOSA9IDw8PERBVEEKewoJCiAgImRldmljZSI6IHsKICAgICJkZXZpY2VJZCI6ICJmY2JlODdiNjIzNDJmYmFjIiwKICAgICJkZXZpY2VJbWVpIjogImZjYmU4N2I2MjM0MmZiYWMiLAogICAgImRldmljZU1vZGVsIjogIlhpYW9taSBSZWRtaSBOb3RlIDEwIiwKICAgICJkZXZpY2VOYW1lIjogImFuZHJvaWQiLAogICAgImRldmljZU9zIjogIkFuZHJvaWQgT19NUjEgIiwKICAgICJpc0VtdWxhdG9yIjogZmFsc2UsCiAgICAibm90aWZpY2F0aW9uVG9rZW4iOiAiZUVCanhZckRTSnlGdzdOLURwRUdOQjpBUEE5MWJFWm5Xby1UUmRTZ1ZDelFjSnEzZ0hpb0p0RlRoTnl4dzZQc2dPQ0kxSkhEemQ1NXlxRy1RWndBWlJqNHB3SUNyWG81VkRpVVlvbTdGc2Y0UWw2Ni1DV0hGdW1OQTJ5bnJLRVAyMWJzdFBCTWd3c04tM0dfRWswWkxjb0t0Vk1nNW9ONi1wZyIsCiAgICAib3NWZXJzaW9uIjogIjI4IgogIH0sCiAgInBvc3RJZCI6ICRwOCwKICAicmF0ZSI6IDUsCiAgInVzZXJpZCI6ICR1aWQKfQpEQVRBOwogICAgY3VybF9zZXRvcHQoJGN1cmw5LCBDVVJMT1BUX1BPU1RGSUVMRFMsICRkYXRhOSk7CiAgICAkcmVzcDkgPSBjdXJsX2V4ZWMoJGN1cmw5KTsKICAgIGN1cmxfY2xvc2UoJGN1cmw5KTsKICAgIC8vdmFyX2R1bXAoJHJlc3AyKTsKICAgICRqc29uOSA9IGpzb25fZGVjb2RlKCRyZXNwOSk7CiAgICBlY2hvICRqc29uOS0+bWVzc2FnZTsKICAgICR5ZWxvdyA9ICIbWzA7MzVtIjsKICAgICAgIGVjaG8gIiR5ZWxvdyI7CiAgICAgCiAgICAgICAgJGN1cmwgPSBjdXJsX2luaXQoKTsKICAgICAgICBjdXJsX3NldG9wdF9hcnJheSgkY3VybCwgYXJyYXkoQ1VSTE9QVF9VUkwgPT4gJ2h0dHBzOi8vcG9zdGluZy5teWx5a2FhcHBzLmNvbS9hcGkvdjMvcG9zdHMvYWRkcG9zdCcsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIgPT4gdHJ1ZSwgQ1VSTE9QVF9FTkNPRElORyA9PiAnJywgQ1VSTE9QVF9NQVhSRURJUlMgPT4gMTAsIENVUkxPUFRfVElNRU9VVCA9PiAwLCBDVVJMT1BUX0ZPTExPV0xPQ0FUSU9OID0+IHRydWUsIENVUkxPUFRfSFRUUF9WRVJTSU9OID0+IENVUkxfSFRUUF9WRVJTSU9OXzFfMSwgQ1VSTE9QVF9DVVNUT01SRVFVRVNUID0+ICdQT1NUJywgQ1VSTE9QVF9QT1NURklFTERTID0+IGFycmF5KCdib3VuZGFyeScgPT4gJzdlOWMxMWZkLTk4N2UtNGI0Zi1iZjE0LThhMDRhYzhkYTI2ZScsICd0aXRsZScgPT4gJycsICdjb250ZW50JyA9PiAnJywgJ3VybCcgPT4gJycsICd0aXRsZVVybCcgPT4gJycsICdkZXNjcmlwdGlvblVybCcgPT4gJycsICdpbWFnZVVybCcgPT4gJ2h0dHBzOi8vZDI3NWt4M3Zmb3c3ZWEuY2xvdWRmcm9udC5uZXQvZGF0YS9pbWFnZXMvd2lzaGxpc3RzLzUwMDIwNDg1OTcwMS8yMDIwMTAxOC9yZXNpemVkLzczYjkyNGFkLTA1ZTktNGQ2ZS1iODliLTJiMTFkYTYyZDE0Yi5qcGVnJywgJ2hhc2h0YWdzJyA9PiAnJywgJ2RldmljZWlkJyA9PiAnZmNiZTg2Yjg0MjU5NWMyZicsICdkZXZpY2Vtb2RlbCcgPT4gJycsICdkZXZpY2VvcycgPT4gJ1hpYW9taSBSZWRtaSBOb3RlIDUnLCAnb3N2ZXJzaW9uJyA9PiAnQW5kcm9pZCBPX01SMScsICdtZWRpYVRhZ3MnID0+ICcyOCcpLCBDVVJMT1BUX0hUVFBIRUFERVIgPT4gYXJyYXkoImF1dGhvcml6YXRpb246IEJlYXJlciAkYmVhcmVyIiwgInVzZXItYWdlbnQ6IEx5a2EvMy42LjcgKGNvbS50aGluZ3NpbGlrZWFwcDsgYnVpbGQ6ODA3IEFuZHJvaWQgT19NUjEgMjgpIiksKSk7ICAgICAgICAgJHJlc3BvbnNlID0gY3VybF9leGVjKCRjdXJsKTsKICAgICAgICBjdXJsX2Nsb3NlKCRjdXJsKTsKICAgICAgICAvL2VjaG8gJHJlc3BvbnNlOwogICAgICAgICRqc29uID0ganNvbl9kZWNvZGUoJHJlc3BvbnNlKTsKICAgICAgICAkbWVzcyA9ICRqc29uLT5tZXNzYWdlOwogICAgICAgIGVjaG8gIiRtZXNzIjsKICAgIGVjaG8gIgoiOwogICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogJGUgPSAiG1sxOzM0bSI7CmVjaG8gIiRlIjsKCiAgICRjdXJsMTAgPSBjdXJsX2luaXQoJHVybCk7CiAgICBjdXJsX3NldG9wdCgkY3VybDEwLCBDVVJMT1BUX1VSTCwgJHVybCk7CiAgICBjdXJsX3NldG9wdCgkY3VybDEwLCBDVVJMT1BUX1BPU1QsIHRydWUpOwogICAgY3VybF9zZXRvcHQoJGN1cmwxMCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7CiAgICBjdXJsX3NldG9wdCgkY3VybDEwLCBDVVJMT1BUX0hUVFBIRUFERVIsICRoZWFkZXJzKTsKICAgICRkYXRhMTAgPSA8PDxEQVRBCnsKCQogICJkZXZpY2UiOiB7CiAgICAiZGV2aWNlSWQiOiAiZmNiZTg3YjYyMzQyZmJhYyIsCiAgICAiZGV2aWNlSW1laSI6ICJmY2JlODdiNjIzNDJmYmFjIiwKICAgICJkZXZpY2VNb2RlbCI6ICJYaWFvbWkgUmVkbWkgTm90ZSAxMCIsCiAgICAiZGV2aWNlTmFtZSI6ICJhbmRyb2lkIiwKICAgICJkZXZpY2VPcyI6ICJBbmRyb2lkIE9fTVIxICIsCiAgICAiaXNFbXVsYXRvciI6IGZhbHNlLAogICAgIm5vdGlmaWNhdGlvblRva2VuIjogImVFQmp4WXJEU0p5Rnc3Ti1EcEVHTkI6QVBBOTFiRVpuV28tVFJkU2dWQ3pRY0pxM2dIaW9KdEZUaE55eHc2UHNnT0NJMUpIRHpkNTV5cUctUVp3QVpSajRwd0lDclhvNVZEaVVZb203RnNmNFFsNjYtQ1dIRnVtTkEyeW5yS0VQMjFic3RQQk1nd3NOLTNHX0VrMFpMY29LdFZNZzVvTjYtcGciLAogICAgIm9zVmVyc2lvbiI6ICIyOCIKICB9LAogICJwb3N0SWQiOiAkcDksCiAgInJhdGUiOiA1LAogICJ1c2VyaWQiOiAkdWlkCn0KREFUQTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsMTAsIENVUkxPUFRfUE9TVEZJRUxEUywgJGRhdGExMCk7CiAgICAkcmVzcDEwID0gY3VybF9leGVjKCRjdXJsMTApOwogICAgY3VybF9jbG9zZSgkY3VybDEwKTsKICAgIC8vdmFyX2R1bXAoJHJlc3AyKTsKICAgICRqc29uMTAgPSBqc29uX2RlY29kZSgkcmVzcDEwKTsKICAgIGVjaG8gJGpzb24xMC0+bWVzc2FnZTsKICAgICR5ZWxvdyA9ICIbWzA7MzVtIjsKICAgICAgIGVjaG8gIiR5ZWxvdyI7CiAgICAgCiAgICAgICAgJGN1cmwgPSBjdXJsX2luaXQoKTsKICAgICAgICBjdXJsX3NldG9wdF9hcnJheSgkY3VybCwgYXJyYXkoQ1VSTE9QVF9VUkwgPT4gJ2h0dHBzOi8vcG9zdGluZy5teWx5a2FhcHBzLmNvbS9hcGkvdjMvcG9zdHMvYWRkcG9zdCcsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIgPT4gdHJ1ZSwgQ1VSTE9QVF9FTkNPRElORyA9PiAnJywgQ1VSTE9QVF9NQVhSRURJUlMgPT4gMTAsIENVUkxPUFRfVElNRU9VVCA9PiAwLCBDVVJMT1BUX0ZPTExPV0xPQ0FUSU9OID0+IHRydWUsIENVUkxPUFRfSFRUUF9WRVJTSU9OID0+IENVUkxfSFRUUF9WRVJTSU9OXzFfMSwgQ1VSTE9QVF9DVVNUT01SRVFVRVNUID0+ICdQT1NUJywgQ1VSTE9QVF9QT1NURklFTERTID0+IGFycmF5KCdib3VuZGFyeScgPT4gJzdlOWMxMWZkLTk4N2UtNGI0Zi1iZjE0LThhMDRhYzhkYTI2ZScsICd0aXRsZScgPT4gJycsICdjb250ZW50JyA9PiAnJywgJ3VybCcgPT4gJycsICd0aXRsZVVybCcgPT4gJycsICdkZXNjcmlwdGlvblVybCcgPT4gJycsICdpbWFnZVVybCcgPT4gJ2h0dHBzOi8vZDI3NWt4M3Zmb3c3ZWEuY2xvdWRmcm9udC5uZXQvZGF0YS9pbWFnZXMvd2lzaGxpc3RzLzUwMDIwNDg1OTcwMS8yMDIwMTAxOC9yZXNpemVkLzczYjkyNGFkLTA1ZTktNGQ2ZS1iODliLTJiMTFkYTYyZDE0Yi5qcGVnJywgJ2hhc2h0YWdzJyA9PiAnJywgJ2RldmljZWlkJyA9PiAnZmNiZTg2Yjg0MjU5NWMyZicsICdkZXZpY2Vtb2RlbCcgPT4gJycsICdkZXZpY2VvcycgPT4gJ1hpYW9taSBSZWRtaSBOb3RlIDUnLCAnb3N2ZXJzaW9uJyA9PiAnQW5kcm9pZCBPX01SMScsICdtZWRpYVRhZ3MnID0+ICcyOCcpLCBDVVJMT1BUX0hUVFBIRUFERVIgPT4gYXJyYXkoImF1dGhvcml6YXRpb246IEJlYXJlciAkYmVhcmVyIiwgInVzZXItYWdlbnQ6IEx5a2EvMy42LjcgKGNvbS50aGluZ3NpbGlrZWFwcDsgYnVpbGQ6ODA3IEFuZHJvaWQgT19NUjEgMjgpIiksKSk7ICAgICAgICAgJHJlc3BvbnNlID0gY3VybF9leGVjKCRjdXJsKTsKICAgICAgICBjdXJsX2Nsb3NlKCRjdXJsKTsKICAgICAgICAvL2VjaG8gJHJlc3BvbnNlOwogICAgICAgICRqc29uID0ganNvbl9kZWNvZGUoJHJlc3BvbnNlKTsKICAgICAgICAkbWVzcyA9ICRqc29uLT5tZXNzYWdlOwogICAgICAgIGVjaG8gIiRtZXNzCiI7IAokeWVsbCA9ICIbWzA7MzJtIjsKZWNobyAiJHllbGwKIjsKZWNobyAKIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IjsKJGUgPSAiG1sxOzM0bSI7CmVjaG8gIiRlIjsKLy8gICQnOwovLyRwYXNzMDIyID0gcmVhZGxpbmUoJ0VudGVyIG1haW4gcGFzd29yZDogJyk7Ci8vJHBhc3M7Ci8vcGFzczAyMiA9ICdhMDIyJzsKLy8kdXNlcjAyMiA9ICcKLy8gRm9yIG91dHB1dAokb3cgPSAiG1sxOzMzbSI7CmVjaG8gIiRvdyI7CmVjaG8gIgokdnVzZXIgaXMgUkFUSU5HICR1c2VyMDIyCiI7CiAgICAkdXJsbSA9ICJodHRwczovL3VzZXJzLm15bHlrYWFwcHMuY29tL2FwaS92My91c2Vycy9zZWFyY2hzdWdnZXN0ZWRwZW9wbGU/c2VhcmNoVGV4dD0kdXNlcjAyMiZvcz1hbmRyb2lkJnBhZ2VJbmRleD0xJnBhZ2VTaXplPTE2IjsKICAgICRjdXJsbSA9IGN1cmxfaW5pdCgkdXJsbSk7CiAgICBjdXJsX3NldG9wdCgkY3VybG0sIENVUkxPUFRfVVJMLCAkdXJsbSk7CiAgICBjdXJsX3NldG9wdCgkY3VybG0sIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIHRydWUpOwogICAgJGhlYWRlcnNtID0gYXJyYXkoInVzZXItYWdlbnQ6THlrYS8zLjYuNyAoY29tLnRoaW5nc2lsaWtlYXBwOyBidWlsZDo4MDcgQW5kcm9pZCBPX01SMSAyOCkiLCAiYXV0aG9yaXphdGlvbjogQmVhcmVyICRiZWFyZXIiLCk7CiAgICBjdXJsX3NldG9wdCgkY3VybG0sIENVUkxPUFRfSFRUUEhFQURFUiwgJGhlYWRlcnNtKTsKICAgICRyZXNwbSA9IGN1cmxfZXhlYygkY3VybG0pOwogICAgY3VybF9jbG9zZSgkY3VybG0pOwogICAgLy92YXJfZHVtcCgkcmVzcG0pOwogICAgJGpzb25tID0ganNvbl9kZWNvZGUoJHJlc3BtLCB0cnVlKTsKICAgICRidWlkID0gJGpzb25tWyJkYXRhIl1bIjAiXVsiaWQiXTsKICAgICRidnZ1c2VyID0gJGpzb25tWyJkYXRhIl1bIjAiXVsidXNlck5hbWUiXTsKICAgIC8vY2hvICRidnZ1c2VyOwogICAgLy9lY2hvICRidWlkOwogICAgCgovKmlmKCRidnZ1c2VyID09ICR1c2VyMDIyKXsKJHVybGcgPSAiaHR0cHM6Ly9wcm9maWxlcy5teWx5a2FhcHBzLmNvbS9hcGkvdjMvcHJvZmlsZXMvR2V0VXNlciI7Ci8vJGJlYXJlcjMgPSAkanNvbm4yLT5kYXRhLT50b2tlbi0+YWNjZXNzVG9rZW47CiRjdXJsZyA9IGN1cmxfaW5pdCgkdXJsZyk7CmN1cmxfc2V0b3B0KCRjdXJsZywgQ1VSTE9QVF9VUkwsICR1cmxnKTsKY3VybF9zZXRvcHQoJGN1cmxnLCBDVVJMT1BUX1BPU1QsIHRydWUpOwpjdXJsX3NldG9wdCgkY3VybGcsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIHRydWUpOwoKJGhlYWRlcnNnID0gYXJyYXkoCiAgICJhdXRob3JpemF0aW9uOiBCZWFyZXIgJGJlYXJlciIsCiAgICJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24iLAopOwpjdXJsX3NldG9wdCgkY3VybGcsIENVUkxPUFRfSFRUUEhFQURFUiwgJGhlYWRlcnNnKTsKCiRkYXRheCA9IDw8PERBVEEKewogICJ0eXBlIjogInVzZXJuYW1lIiwKICAidXNlcm5hbWUiOiAiJHVzZXIwMjIiCn0KREFUQTsKCmN1cmxfc2V0b3B0KCRjdXJsZywgQ1VSTE9QVF9QT1NURklFTERTLCAkZGF0YXgpOwoKJHJlc3BnID0gY3VybF9leGVjKCRjdXJsZyk7CmN1cmxfY2xvc2UoJGN1cmxnKTsKLy92YXJfZHVtcCgkcmVzcGcpOwokanNvbmcgPSBqc29uX2RlY29kZSgkcmVzcGcpOwokeHVpZCA9ICRqc29uZy0+ZGF0YS0+aWQ7Ci8vZWNobyAkeHVpZDsKJHVuYW1lID0gJGpzb25nLT5kYXRhLT51c2VyTmFtZTsKJGdyZWVuPSIbWzE7MzJtIjsKZWNobyAiJGdyZWVuJHVuYW1lIGlzIFJBVEVECiI7Ci8vJGdtc2cgPSAkanNvbmctPmRhdGEtPm1lc3NhZ2U7Cn0KKi8KaWYgKCR1c2VyMDIyID09ICRidnZ1c2VyKSB7CiAgICAkdXJsZCA9ICJodHRwczovL3Byb2ZpbGVzLm15bHlrYWFwcHMuY29tL2FwaS92My9wcm9maWxlcy9HZXRQcm9maWxlUG9zdHM/b3M9YW5kcm9pZCZwYWdlSW5kZXg9MSZwYWdlU2l6ZT01MCZpZD0kYnVpZCZjYXRlZ29yeT1BTEwiOwogICAgJGN1cmxkID0gY3VybF9pbml0KCR1cmxkKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsZCwgQ1VSTE9QVF9VUkwsICR1cmxkKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsZCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7CiAgICAkaGVhZGVyc2QgPSBhcnJheSgiYXV0aG9yaXphdGlvbjogQmVhcmVyICRiZWFyZXIiLCAidXNlci1hZ2VudDpMeWthLzMuNi43IChjb20udGhpbmdzaWxpa2VhcHA7IGJ1aWxkOjgwNyBBbmRyb2lkIE9fTVIxIDI4KSIsKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsZCwgQ1VSTE9QVF9IVFRQSEVBREVSLCAkaGVhZGVyc2QpOwogICAgJHJlc3BkID0gY3VybF9leGVjKCRjdXJsZCk7CiAgICBjdXJsX2Nsb3NlKCRjdXJsZCk7CiAgICAkanNvbmQgPSBqc29uX2RlY29kZSgkcmVzcGQsIHRydWUpOwogICAgLy92YXJfZHVtcCgkcmVzcGQsdHJ1ZSk7CiAgICAvKmZ1bmN0aW9uIHByaW50VmFsdWVzKCRhcnIpIHsKICAgIGdsb2JhbCAkY291bnQ7CiAgICBnbG9iYWwgJHZhbHVlczsKICAgIAogICAgLy8gQ2hlY2sgaW5wdXQgaXMgYW4gYXJyYXkKICAgIGlmKCFpc19hcnJheSgkYXJyKSl7CiAgICAgICAgZGllKCJFUlJPUjogSW5wdXQgaXMgbm90IGFuIGFycmF5Iik7CiAgICB9CiAgICAKICAgIAogICAgZm9yZWFjaCgkYXJyIGFzICRrZXk9PiR2YWx1ZSl7CiAgICAgICAgaWYoaXNfYXJyYXkoJHZhbHVlKSl7CiAgICAgICAgICAgIHByaW50VmFsdWVzKCR2YWx1ZSk7CiAgICAgICAgfSBlbHNlewogICAgICAgICAgICAkdmFsdWVzW10gPSAkdmFsdWU7CiAgICAgICAgICAgICRjb3VudCsrOwogICAgICAgIH0KICAgIH0KICAgIAogICAgLy8gUmV0dXJuIHRvdGFsIGNvdW50IGFuZCB2YWx1ZXMgZm91bmQgaW4gYXJyYXkKICAgIHJldHVybiBhcnJheSgndG90YWwnID0+ICRjb3VudCwgJ3ZhbHVlcycgPT4gJHZhbHVlcyk7CiAgICB9CiAgICAqLwogICAgJGFyciA9IGpzb25fZGVjb2RlKCRyZXNwZCwgdHJ1ZSk7CiAgICAkb3AwID0gJGFyclsiZGF0YSJdWyIwIl1bImlkIl07CiAgICAkb3AxID0gJGFyclsiZGF0YSJdWyIxIl1bImlkIl07CiAgICAkb3AyID0gJGFyclsiZGF0YSJdWyIyIl1bImlkIl07CiAgICAkb3AzID0gJGFyclsiZGF0YSJdWyIzIl1bImlkIl07CiAgICAkb3A0ID0gJGFyclsiZGF0YSJdWyI0Il1bImlkIl07CiAgICAkb3A1ID0gJGFyclsiZGF0YSJdWyI1Il1bImlkIl07CiAgICAkb3A2ID0gJGFyclsiZGF0YSJdWyI2Il1bImlkIl07CiAgICAkb3A3ID0gJGFyclsiZGF0YSJdWyI3Il1bImlkIl07CiAgICAkb3A4ID0gJGFyclsiZGF0YSJdWyI4Il1bImlkIl07CiAgICAkb3A5ID0gJGFyclsiZGF0YSJdWyI5Il1bImlkIl07CiAgICAvL2VjaG8gJG9wODsKICAgIC8vZWNobyAkb3A5OwogICAgCn0KJHN0YXQgPSAkYXJyWyJzdGF0dXMiXTsKLy9lY2hvICRzdGF0OwppZiAoJHN0YXQgPT0gMCkgewogICAgZWNobyAiY2hlY2sgeW91ciBpbnB1dHMKIjsKfSBlbHNlaWYgKCRzdGF0ID09IDEpCiRlID0gIhtbMTszNG0iOwplY2hvICIkZSI7CiAgICAkdXJsID0gImh0dHBzOi8vcG9zdHMubXlseWthYXBwcy5jb20vYXBpL3YzL3Bvc3RzL3JhdGVwb3N0IjsKICAgICRjdXJsID0gY3VybF9pbml0KCR1cmwpOwogICAgY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfVVJMLCAkdXJsKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsLCBDVVJMT1BUX1BPU1QsIHRydWUpOwogICAgY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIHRydWUpOwogICAgJGhlYWRlcnMgPSBhcnJheSgiYXV0aG9yaXphdGlvbjpCZWFyZXIgJGJlYXJlciIsICJ1c2VyLWFnZW50Okx5a2EvMy42LjcgKGNvbS50aGluZ3NpbGlrZWFwcDsgYnVpbGQ6ODA3IEFuZHJvaWQgT19NUjEgMjgpKSIsICJkZXZpY2VvczogYW5kcm9pZCIsICJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24iLCk7CiAgICBjdXJsX3NldG9wdCgkY3VybCwgQ1VSTE9QVF9IVFRQSEVBREVSLCAkaGVhZGVycyk7CiAgICAkZGF0YTA5ID0gPDw8REFUQQp7CgkKICAiZGV2aWNlIjogewogICAgImRldmljZUlkIjogImZjYmU4N2I2MjM0MmZiYWMiLAogICAgImRldmljZUltZWkiOiAiZmNiZTg3YjYyMzQyZmJhYyIsCiAgICAiZGV2aWNlTW9kZWwiOiAiWGlhb21pIFJlZG1pIE5vdGUgMTAiLAogICAgImRldmljZU5hbWUiOiAiYW5kcm9pZCIsCiAgICAiZGV2aWNlT3MiOiAiQW5kcm9pZCBPX01SMSAiLAogICAgImlzRW11bGF0b3IiOiBmYWxzZSwKICAgICJub3RpZmljYXRpb25Ub2tlbiI6ICJlRUJqeFlyRFNKeUZ3N04tRHBFR05COkFQQTkxYkVabldvLVRSZFNnVkN6UWNKcTNnSGlvSnRGVGhOeXh3NlBzZ09DSTFKSER6ZDU1eXFHLVFad0FaUmo0cHdJQ3JYbzVWRGlVWW9tN0ZzZjRRbDY2LUNXSEZ1bU5BMnlucktFUDIxYnN0UEJNZ3dzTi0zR19FazBaTGNvS3RWTWc1b042LXBnIiwKICAgICJvc1ZlcnNpb24iOiAiMjgiCiAgfSwKICAicG9zdElkIjogJG9wMCwKICAicmF0ZSI6IDUsCiAgICJ1c2VyaWQiOiAkYnVpZAp9CkRBVEE7CiAgICBjdXJsX3NldG9wdCgkY3VybCwgQ1VSTE9QVF9QT1NURklFTERTLCAkZGF0YTA5KTsKICAgICRyZXNwID0gY3VybF9leGVjKCRjdXJsKTsKICAgIGN1cmxfY2xvc2UoJGN1cmwpOwogICAgLy92YXJfZHVtcCgkcmVzcCk7CiAgICAkanNvbiA9IGpzb25fZGVjb2RlKCRyZXNwKTsKICAgIGVjaG8gJGpzb24tPm1lc3NhZ2U7CiAgICBlY2hvICIKIjsKICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAogICAkY3VybDIgPSBjdXJsX2luaXQoJHVybCk7CiAgICBjdXJsX3NldG9wdCgkY3VybDIsIENVUkxPUFRfVVJMLCAkdXJsKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsMiwgQ1VSTE9QVF9QT1NULCB0cnVlKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsMiwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7CiAgICBjdXJsX3NldG9wdCgkY3VybDIsIENVUkxPUFRfSFRUUEhFQURFUiwgJGhlYWRlcnMpOwogICAgJGRhdGE5MiA9IDw8PERBVEEKewoJCiAgImRldmljZSI6IHsKICAgICJkZXZpY2VJZCI6ICJmY2JlODdiNjIzNDJmYmFjIiwKICAgICJkZXZpY2VJbWVpIjogImZjYmU4N2I2MjM0MmZiYWMiLAogICAgImRldmljZU1vZGVsIjogIlhpYW9taSBSZWRtaSBOb3RlIDEwIiwKICAgICJkZXZpY2VOYW1lIjogImFuZHJvaWQiLAogICAgImRldmljZU9zIjogIkFuZHJvaWQgT19NUjEgIiwKICAgICJpc0VtdWxhdG9yIjogZmFsc2UsCiAgICAibm90aWZpY2F0aW9uVG9rZW4iOiAiZUVCanhZckRTSnlGdzdOLURwRUdOQjpBUEE5MWJFWm5Xby1UUmRTZ1ZDelFjSnEzZ0hpb0p0RlRoTnl4dzZQc2dPQ0kxSkhEemQ1NXlxRy1RWndBWlJqNHB3SUNyWG81VkRpVVlvbTdGc2Y0UWw2Ni1DV0hGdW1OQTJ5bnJLRVAyMWJzdFBCTWd3c04tM0dfRWswWkxjb0t0Vk1nNW9ONi1wZyIsCiAgICAib3NWZXJzaW9uIjogIjI4IgogIH0sCiAgInBvc3RJZCI6ICRvcDEsCiAgInJhdGUiOiA1LAogICAidXNlcmlkIjogJGJ1aWQKfQpEQVRBOwogICAgY3VybF9zZXRvcHQoJGN1cmwyLCBDVVJMT1BUX1BPU1RGSUVMRFMsICRkYXRhOTIpOwogICAgJHJlc3AyID0gY3VybF9leGVjKCRjdXJsMik7CiAgICBjdXJsX2Nsb3NlKCRjdXJsMik7CiAgICAvL3Zhcl9kdW1wKCRyZXNwMik7CiAgICAkanNvbjIgPSBqc29uX2RlY29kZSgkcmVzcDIpOwogICAgZWNobyAkanNvbjItPm1lc3NhZ2U7CgogICAgZWNobyAiCiI7CiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKICAkY3VybDMgPSBjdXJsX2luaXQoJHVybCk7CiAgICBjdXJsX3NldG9wdCgkY3VybDMsIENVUkxPUFRfVVJMLCAkdXJsKTsKICAgICAgICBjdXJsX3NldG9wdCgkY3VybDMsIENVUkxPUFRfUE9TVCwgdHJ1ZSk7CiAgICBjdXJsX3NldG9wdCgkY3VybDMsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIHRydWUpOwogICBjdXJsX3NldG9wdCgkY3VybDMsIENVUkxPUFRfSFRUUEhFQURFUiwgJGhlYWRlcnMpOwogICAgJGRhdGE5MyA9IDw8PERBVEEKewoJCiAgImRldmljZSI6IHsKICAgICJkZXZpY2VJZCI6ICJmY2JlODdiNjIzNDJmYmFjIiwKICAgICJkZXZpY2VJbWVpIjogImZjYmU4N2I2MjM0MmZiYWMiLAogICAgImRldmljZU1vZGVsIjogIlhpYW9taSBSZWRtaSBOb3RlIDEwIiwKICAgICJkZXZpY2VOYW1lIjogImFuZHJvaWQiLAogICAgImRldmljZU9zIjogIkFuZHJvaWQgT19NUjEgIiwKICAgICJpc0VtdWxhdG9yIjogZmFsc2UsCiAgICAibm90aWZpY2F0aW9uVG9rZW4iOiAiZUVCanhZckRTSnlGdzdOLURwRUdOQjpBUEE5MWJFWm5Xby1UUmRTZ1ZDelFjSnEzZ0hpb0p0RlRoTnl4dzZQc2dPQ0kxSkhEemQ1NXlxRy1RWndBWlJqNHB3SUNyWG81VkRpVVlvbTdGc2Y0UWw2Ni1DV0hGdW1OQTJ5bnJLRVAyMWJzdFBCTWd3c04tM0dfRWswWkxjb0t0Vk1nNW9ONi1wZyIsCiAgICAib3NWZXJzaW9uIjogIjI4IgogIH0sCiAgInBvc3RJZCI6ICRvcDIsCiAgInJhdGUiOiA1LAogICAidXNlcmlkIjogJGJ1aWQKfQpEQVRBOwogICAgY3VybF9zZXRvcHQoJGN1cmwzLCBDVVJMT1BUX1BPU1RGSUVMRFMsICRkYXRhOTMpOwogICAgJHJlc3AzID0gY3VybF9leGVjKCRjdXJsMyk7CiAgICBjdXJsX2Nsb3NlKCRjdXJsMyk7CiAgICAvL3Zhcl9kdW1wKCRyZXNwMik7CiAgICAkanNvbjMgPSBqc29uX2RlY29kZSgkcmVzcDMpOwogICAgZWNobyAkanNvbjMtPm1lc3NhZ2U7CiAgICBlY2hvICIKIjsKICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KCiRjdXJsNCA9IGN1cmxfaW5pdCgkdXJsKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsNCwgQ1VSTE9QVF9VUkwsICR1cmwpOwogICAgY3VybF9zZXRvcHQoJGN1cmw0LCBDVVJMT1BUX1BPU1QsIHRydWUpOwogICAgY3VybF9zZXRvcHQoJGN1cmw0LCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCB0cnVlKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsNCwgQ1VSTE9QVF9IVFRQSEVBREVSLCAkaGVhZGVycyk7CiAgICAkZGF0YTk0ID0gPDw8REFUQQp7CgkKICAiZGV2aWNlIjogewogICAgImRldmljZUlkIjogImZjYmU4N2I2MjM0MmZiYWMiLAogICAgImRldmljZUltZWkiOiAiZmNiZTg3YjYyMzQyZmJhYyIsCiAgICAiZGV2aWNlTW9kZWwiOiAiWGlhb21pIFJlZG1pIE5vdGUgMTAiLAogICAgImRldmljZU5hbWUiOiAiYW5kcm9pZCIsCiAgICAiZGV2aWNlT3MiOiAiQW5kcm9pZCBPX01SMSAiLAogICAgImlzRW11bGF0b3IiOiBmYWxzZSwKICAgICJub3RpZmljYXRpb25Ub2tlbiI6ICJlRUJqeFlyRFNKeUZ3N04tRHBFR05COkFQQTkxYkVabldvLVRSZFNnVkN6UWNKcTNnSGlvSnRGVGhOeXh3NlBzZ09DSTFKSER6ZDU1eXFHLVFad0FaUmo0cHdJQ3JYbzVWRGlVWW9tN0ZzZjRRbDY2LUNXSEZ1bU5BMnlucktFUDIxYnN0UEJNZ3dzTi0zR19FazBaTGNvS3RWTWc1b042LXBnIiwKICAgICJvc1ZlcnNpb24iOiAiMjgiCiAgfSwKICAicG9zdElkIjogJG9wMywKICAicmF0ZSI6IDUsCiAgICJ1c2VyaWQiOiAkYnVpZCAKfQpEQVRBOwogICAgY3VybF9zZXRvcHQoJGN1cmw0LCBDVVJMT1BUX1BPU1RGSUVMRFMsICRkYXRhOTQpOwogICAgJHJlc3A0ID0gY3VybF9leGVjKCRjdXJsNCk7CiAgICBjdXJsX2Nsb3NlKCRjdXJsNCk7CiAgICAvL3Zhcl9kdW1wKCRyZXNwMik7CiAgICAkanNvbjQgPSBqc29uX2RlY29kZSgkcmVzcDQpOwogICAgZWNobyAkanNvbjQtPm1lc3NhZ2U7CiAgICBlY2hvICIKIjsKICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAgIAokY3VybDUgPSBjdXJsX2luaXQoJHVybCk7CiAgICBjdXJsX3NldG9wdCgkY3VybDUsIENVUkxPUFRfVVJMLCAkdXJsKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsNSwgQ1VSTE9QVF9QT1NULCB0cnVlKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsNSwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7CiAgICBjdXJsX3NldG9wdCgkY3VybDUsIENVUkxPUFRfSFRUUEhFQURFUiwgJGhlYWRlcnMpOwogICAgJGRhdGE5NSA9IDw8PERBVEEKewoJCiAgImRldmljZSI6IHsKICAgICJkZXZpY2VJZCI6ICJmY2JlODdiNjIzNDJmYmFjIiwKICAgICJkZXZpY2VJbWVpIjogImZjYmU4N2I2MjM0MmZiYWMiLAogICAgImRldmljZU1vZGVsIjogIlhpYW9taSBSZWRtaSBOb3RlIDEwIiwKICAgICJkZXZpY2VOYW1lIjogImFuZHJvaWQiLAogICAgImRldmljZU9zIjogIkFuZHJvaWQgT19NUjEgIiwKICAgICJpc0VtdWxhdG9yIjogZmFsc2UsCiAgICAibm90aWZpY2F0aW9uVG9rZW4iOiAiZUVCanhZckRTSnlGdzdOLURwRUdOQjpBUEE5MWJFWm5Xby1UUmRTZ1ZDelFjSnEzZ0hpb0p0RlRoTnl4dzZQc2dPQ0kxSkhEemQ1NXlxRy1RWndBWlJqNHB3SUNyWG81VkRpVVlvbTdGc2Y0UWw2Ni1DV0hGdW1OQTJ5bnJLRVAyMWJzdFBCTWd3c04tM0dfRWswWkxjb0t0Vk1nNW9ONi1wZyIsCiAgICAib3NWZXJzaW9uIjogIjI4IgogIH0sCiAgInBvc3RJZCI6ICRvcDQsCiAgInJhdGUiOiA1LAogICAidXNlcmlkIjogJGJ1aWQKfQpEQVRBOwogICAgY3VybF9zZXRvcHQoJGN1cmw1LCBDVVJMT1BUX1BPU1RGSUVMRFMsICRkYXRhOTUpOwogICAgJHJlc3A1ID0gY3VybF9leGVjKCRjdXJsNSk7CiAgICBjdXJsX2Nsb3NlKCRjdXJsNSk7CiAgICAvL3Zhcl9kdW1wKCRyZXNwMik7CiAgICAkanNvbjUgPSBqc29uX2RlY29kZSgkcmVzcDUpOwogICAgZWNobyAkanNvbjUtPm1lc3NhZ2U7CiAgICBlY2hvICIKIjsKICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAogICAkY3VybDYgPSBjdXJsX2luaXQoJHVybCk7CiAgICBjdXJsX3NldG9wdCgkY3VybDYsIENVUkxPUFRfVVJMLCAkdXJsKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsNiwgQ1VSTE9QVF9QT1NULCB0cnVlKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsNiwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7CiAgICBjdXJsX3NldG9wdCgkY3VybDYsIENVUkxPUFRfSFRUUEhFQURFUiwgJGhlYWRlcnMpOwogICAgJGRhdGE5NiA9IDw8PERBVEEKewoJCiAgImRldmljZSI6IHsKICAgICJkZXZpY2VJZCI6ICJmY2JlODdiNjIzNDJmYmFjIiwKICAgICJkZXZpY2VJbWVpIjogImZjYmU4N2I2MjM0MmZiYWMiLAogICAgImRldmljZU1vZGVsIjogIlhpYW9taSBSZWRtaSBOb3RlIDEwIiwKICAgICJkZXZpY2VOYW1lIjogImFuZHJvaWQiLAogICAgImRldmljZU9zIjogIkFuZHJvaWQgT19NUjEgIiwKICAgICJpc0VtdWxhdG9yIjogZmFsc2UsCiAgICAibm90aWZpY2F0aW9uVG9rZW4iOiAiZUVCanhZckRTSnlGdzdOLURwRUdOQjpBUEE5MWJFWm5Xby1UUmRTZ1ZDelFjSnEzZ0hpb0p0RlRoTnl4dzZQc2dPQ0kxSkhEemQ1NXlxRy1RWndBWlJqNHB3SUNyWG81VkRpVVlvbTdGc2Y0UWw2Ni1DV0hGdW1OQTJ5bnJLRVAyMWJzdFBCTWd3c04tM0dfRWswWkxjb0t0Vk1nNW9ONi1wZyIsCiAgICAib3NWZXJzaW9uIjogIjI4IgogIH0sCiAgInBvc3RJZCI6ICRvcDUsCiAgInJhdGUiOiA1LAogICAidXNlcmlkIjogJGJ1aWQKfQpEQVRBOwogICAgY3VybF9zZXRvcHQoJGN1cmw2LCBDVVJMT1BUX1BPU1RGSUVMRFMsICRkYXRhOTYpOwogICAgJHJlc3A2ID0gY3VybF9leGVjKCRjdXJsNik7CiAgICBjdXJsX2Nsb3NlKCRjdXJsNik7CiAgICAvL3Zhcl9kdW1wKCRyZXNwMik7CiAgICAkanNvbjYgPSBqc29uX2RlY29kZSgkcmVzcDYpOwogICAgZWNobyAkanNvbjYtPm1lc3NhZ2U7CiAgICBlY2hvICIKIjsKICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAKICAkY3VybDcgPSBjdXJsX2luaXQoJHVybCk7CiAgICBjdXJsX3NldG9wdCgkY3VybDcsIENVUkxPUFRfVVJMLCAkdXJsKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsNywgQ1VSTE9QVF9QT1NULCB0cnVlKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsNywgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7CiAgICBjdXJsX3NldG9wdCgkY3VybDcsIENVUkxPUFRfSFRUUEhFQURFUiwgJGhlYWRlcnMpOwogICAgJGRhdGE5NyA9IDw8PERBVEEKewoJCiAgImRldmljZSI6IHsKICAgICJkZXZpY2VJZCI6ICJmY2JlODdiNjIzNDJmYmFjIiwKICAgICJkZXZpY2VJbWVpIjogImZjYmU4N2I2MjM0MmZiYWMiLAogICAgImRldmljZU1vZGVsIjogIlhpYW9taSBSZWRtaSBOb3RlIDEwIiwKICAgICJkZXZpY2VOYW1lIjogImFuZHJvaWQiLAogICAgImRldmljZU9zIjogIkFuZHJvaWQgT19NUjEgIiwKICAgICJpc0VtdWxhdG9yIjogZmFsc2UsCiAgICAibm90aWZpY2F0aW9uVG9rZW4iOiAiZUVCanhZckRTSnlGdzdOLURwRUdOQjpBUEE5MWJFWm5Xby1UUmRTZ1ZDelFjSnEzZ0hpb0p0RlRoTnl4dzZQc2dPQ0kxSkhEemQ1NXlxRy1RWndBWlJqNHB3SUNyWG81VkRpVVlvbTdGc2Y0UWw2Ni1DV0hGdW1OQTJ5bnJLRVAyMWJzdFBCTWd3c04tM0dfRWswWkxjb0t0Vk1nNW9ONi1wZyIsCiAgICAib3NWZXJzaW9uIjogIjI4IgogIH0sCiAgInBvc3RJZCI6ICRvcDYsCiAgInJhdGUiOiA1LAogICAidXNlcmlkIjogJGJ1aWQKfQpEQVRBOwogICAgY3VybF9zZXRvcHQoJGN1cmw3LCBDVVJMT1BUX1BPU1RGSUVMRFMsICRkYXRhOTcpOwogICAgJHJlc3A3ID0gY3VybF9leGVjKCRjdXJsNyk7CiAgICBjdXJsX2Nsb3NlKCRjdXJsNyk7CiAgICAvL3Zhcl9kdW1wKCRyZXNwMik7CiAgICAkanNvbjcgPSBqc29uX2RlY29kZSgkcmVzcDcpOwogICAgZWNobyAkanNvbjctPm1lc3NhZ2U7CiAgICBlY2hvICIKIjsKICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAgCiAkY3VybDggPSBjdXJsX2luaXQoJHVybCk7CiAgICBjdXJsX3NldG9wdCgkY3VybDgsIENVUkxPUFRfVVJMLCAkdXJsKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsOCwgQ1VSTE9QVF9QT1NULCB0cnVlKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsOCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7CiAgICBjdXJsX3NldG9wdCgkY3VybDgsIENVUkxPUFRfSFRUUEhFQURFUiwgJGhlYWRlcnMpOwogICAgJGRhdGE5OCA9IDw8PERBVEEKewoJCiAgImRldmljZSI6IHsKICAgICJkZXZpY2VJZCI6ICJmY2JlODdiNjIzNDJmYmFjIiwKICAgICJkZXZpY2VJbWVpIjogImZjYmU4N2I2MjM0MmZiYWMiLAogICAgImRldmljZU1vZGVsIjogIlhpYW9taSBSZWRtaSBOb3RlIDEwIiwKICAgICJkZXZpY2VOYW1lIjogImFuZHJvaWQiLAogICAgImRldmljZU9zIjogIkFuZHJvaWQgT19NUjEgIiwKICAgICJpc0VtdWxhdG9yIjogZmFsc2UsCiAgICAibm90aWZpY2F0aW9uVG9rZW4iOiAiZUVCanhZckRTSnlGdzdOLURwRUdOQjpBUEE5MWJFWm5Xby1UUmRTZ1ZDelFjSnEzZ0hpb0p0RlRoTnl4dzZQc2dPQ0kxSkhEemQ1NXlxRy1RWndBWlJqNHB3SUNyWG81VkRpVVlvbTdGc2Y0UWw2Ni1DV0hGdW1OQTJ5bnJLRVAyMWJzdFBCTWd3c04tM0dfRWswWkxjb0t0Vk1nNW9ONi1wZyIsCiAgICAib3NWZXJzaW9uIjogIjI4IgogIH0sCiAgInBvc3RJZCI6ICRvcDcsCiAgInJhdGUiOiA1LAogICAidXNlcmlkIjogJGJ1aWQKfQpEQVRBOwogICAgY3VybF9zZXRvcHQoJGN1cmw4LCBDVVJMT1BUX1BPU1RGSUVMRFMsICRkYXRhOTgpOwogICAgJHJlc3A4ID0gY3VybF9leGVjKCRjdXJsOCk7CiAgICBjdXJsX2Nsb3NlKCRjdXJsOCk7CiAgICAvL3Zhcl9kdW1wKCRyZXNwMik7CiAgICAkanNvbjggPSBqc29uX2RlY29kZSgkcmVzcDgpOwogICAgZWNobyAkanNvbjgtPm1lc3NhZ2U7CiAgICBlY2hvICIKIjsKICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAKICAkY3VybDkgPSBjdXJsX2luaXQoJHVybCk7CiAgICBjdXJsX3NldG9wdCgkY3VybDksIENVUkxPUFRfVVJMLCAkdXJsKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsOSwgQ1VSTE9QVF9QT1NULCB0cnVlKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsOSwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7CiAgICBjdXJsX3NldG9wdCgkY3VybDksIENVUkxPUFRfSFRUUEhFQURFUiwgJGhlYWRlcnMpOwogICAgJGRhdGE5OSA9IDw8PERBVEEKewoJCiAgImRldmljZSI6IHsKICAgICJkZXZpY2VJZCI6ICJmY2JlODdiNjIzNDJmYmFjIiwKICAgICJkZXZpY2VJbWVpIjogImZjYmU4N2I2MjM0MmZiYWMiLAogICAgImRldmljZU1vZGVsIjogIlhpYW9taSBSZWRtaSBOb3RlIDEwIiwKICAgICJkZXZpY2VOYW1lIjogImFuZHJvaWQiLAogICAgImRldmljZU9zIjogIkFuZHJvaWQgT19NUjEgIiwKICAgICJpc0VtdWxhdG9yIjogZmFsc2UsCiAgICAibm90aWZpY2F0aW9uVG9rZW4iOiAiZUVCanhZckRTSnlGdzdOLURwRUdOQjpBUEE5MWJFWm5Xby1UUmRTZ1ZDelFjSnEzZ0hpb0p0RlRoTnl4dzZQc2dPQ0kxSkhEemQ1NXlxRy1RWndBWlJqNHB3SUNyWG81VkRpVVlvbTdGc2Y0UWw2Ni1DV0hGdW1OQTJ5bnJLRVAyMWJzdFBCTWd3c04tM0dfRWswWkxjb0t0Vk1nNW9ONi1wZyIsCiAgICAib3NWZXJzaW9uIjogIjI4IgogIH0sCiAgInBvc3RJZCI6ICRvcDgsCiAgInJhdGUiOiA1LAogICAidXNlcmlkIjogJGJ1aWQKfQpEQVRBOwogICAgY3VybF9zZXRvcHQoJGN1cmw5LCBDVVJMT1BUX1BPU1RGSUVMRFMsICRkYXRhOTkpOwogICAgJHJlc3A5ID0gY3VybF9leGVjKCRjdXJsOSk7CiAgICBjdXJsX2Nsb3NlKCRjdXJsOSk7CiAgICAvL3Zhcl9kdW1wKCRyZXNwMik7CiAgICAkanNvbjkgPSBqc29uX2RlY29kZSgkcmVzcDkpOwogICAgZWNobyAkanNvbjktPm1lc3NhZ2U7CiAgICBlY2hvICIKIjsKICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAgIAokY3VybDEwID0gY3VybF9pbml0KCR1cmwpOwogICAgY3VybF9zZXRvcHQoJGN1cmwxMCwgQ1VSTE9QVF9VUkwsICR1cmwpOwogICAgY3VybF9zZXRvcHQoJGN1cmwxMCwgQ1VSTE9QVF9QT1NULCB0cnVlKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsMTAsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIHRydWUpOwogICAgY3VybF9zZXRvcHQoJGN1cmwxMCwgQ1VSTE9QVF9IVFRQSEVBREVSLCAkaGVhZGVycyk7CiAgICAkZGF0YTkxMCA9IDw8PERBVEEKewoJCiAgImRldmljZSI6IHsKICAgICJkZXZpY2VJZCI6ICJmY2JlODdiNjIzNDJmYmFjIiwKICAgICJkZXZpY2VJbWVpIjogImZjYmU4N2I2MjM0MmZiYWMiLAogICAgImRldmljZU1vZGVsIjogIlhpYW9taSBSZWRtaSBOb3RlIDEwIiwKICAgICJkZXZpY2VOYW1lIjogImFuZHJvaWQiLAogICAgImRldmljZU9zIjogIkFuZHJvaWQgT19NUjEgIiwKICAgICJpc0VtdWxhdG9yIjogZmFsc2UsCiAgICAibm90aWZpY2F0aW9uVG9rZW4iOiAiZUVCanhZckRTSnlGdzdOLURwRUdOQjpBUEE5MWJFWm5Xby1UUmRTZ1ZDelFjSnEzZ0hpb0p0RlRoTnl4dzZQc2dPQ0kxSkhEemQ1NXlxRy1RWndBWlJqNHB3SUNyWG81VkRpVVlvbTdGc2Y0UWw2Ni1DV0hGdW1OQTJ5bnJLRVAyMWJzdFBCTWd3c04tM0dfRWswWkxjb0t0Vk1nNW9ONi1wZyIsCiAgICAib3NWZXJzaW9uIjogIjI4IgogIH0sCiAgInBvc3RJZCI6ICRvcDksCiAgInJhdGUiOiA1LAogICAidXNlcmlkIjogJGJ1aWQKfQpEQVRBOwogICAgY3VybF9zZXRvcHQoJGN1cmwxMCwgQ1VSTE9QVF9QT1NURklFTERTLCAkZGF0YTkxMCk7CiAgICAkcmVzcDEwID0gY3VybF9leGVjKCRjdXJsMTApOwogICAgY3VybF9jbG9zZSgkY3VybDEwKTsKICAgIC8vdmFyX2R1bXAoJHJlc3AyKTsKICAgICRqc29uMTAgPSBqc29uX2RlY29kZSgkcmVzcDEwKTsKICAgIGVjaG8gJGpzb24xMC0+bWVzc2FnZQo7CiR5ZWxsb3cgPSAiG1swOzMybSI7CmVjaG8gIiR5ZWxsb3cKIjsKZWNobyAKIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IjsKJGwgPSAiG1sxOzM0bSI7CmVjaG8gIiRsCiI7Ci8vICAkJzsKLy8kcGFzczEyMiA9IHJlYWRsaW5lKCdFbnRlciBtYWluIHBhc3dvcmQ6ICcpOwovLyRwYXNzOwovL3Bhc3MxMjIgPSAnYTEyMic7Ci8vJHVzZXIxMjIgPSAnCi8vIEZvciBvdXRwdXQKJG93ID0gIhtbMTszM20iOwplY2hvICIkb3ciOwplY2hvICIKJHZ1c2VyIGlzIFJBVElORyAkdXNlcjEyMgoiOwoKICAgICR1cmxtID0gImh0dHBzOi8vdXNlcnMubXlseWthYXBwcy5jb20vYXBpL3YzL3VzZXJzL3NlYXJjaHN1Z2dlc3RlZHBlb3BsZT9zZWFyY2hUZXh0PSR1c2VyMTIyJm9zPWFuZHJvaWQmcGFnZUluZGV4PTEmcGFnZVNpemU9MTYiOwogICAgJGN1cmxtID0gY3VybF9pbml0KCR1cmxtKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsbSwgQ1VSTE9QVF9VUkwsICR1cmxtKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsbSwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7CiAgICAkaGVhZGVyc20gPSBhcnJheSgidXNlci1hZ2VudDpMeWthLzMuNi43IChjb20udGhpbmdzaWxpa2VhcHA7IGJ1aWxkOjgwNyBBbmRyb2lkIE9fTVIxIDI4KSIsICJhdXRob3JpemF0aW9uOiBCZWFyZXIgJGJlYXJlciIsKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsbSwgQ1VSTE9QVF9IVFRQSEVBREVSLCAkaGVhZGVyc20pOwogICAgJHJlc3BtID0gY3VybF9leGVjKCRjdXJsbSk7CiAgICBjdXJsX2Nsb3NlKCRjdXJsbSk7CiAgICAvL3Zhcl9kdW1wKCRyZXNwbSk7CiAgICAkanNvbm0gPSBqc29uX2RlY29kZSgkcmVzcG0sIHRydWUpOwogICAgJGZ1aWQgPSAkanNvbm1bImRhdGEiXVsiMCJdWyJpZCJdOwogICAgJGZ2dnVzZXIgPSAkanNvbm1bImRhdGEiXVsiMCJdWyJ1c2VyTmFtZSJdOwogICAgLy9jaG8gJGZ2dnVzZXI7CiAgICAvL2VjaG8gJGZ1aWQ7CiAgICAKCi8qaWYoJGZ2dnVzZXIgPT0gJHVzZXIxMjIpewokdXJsZyA9ICJodHRwczovL3Byb2ZpbGVzLm15bHlrYWFwcHMuY29tL2FwaS92My9wcm9maWxlcy9HZXRVc2VyIjsKLy8kYmVhcmVyMyA9ICRqc29ubjItPmRhdGEtPnRva2VuLT5hY2Nlc3NUb2tlbjsKJGN1cmxnID0gY3VybF9pbml0KCR1cmxnKTsKY3VybF9zZXRvcHQoJGN1cmxnLCBDVVJMT1BUX1VSTCwgJHVybGcpOwpjdXJsX3NldG9wdCgkY3VybGcsIENVUkxPUFRfUE9TVCwgdHJ1ZSk7CmN1cmxfc2V0b3B0KCRjdXJsZywgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7CgokaGVhZGVyc2cgPSBhcnJheSgKICAgImF1dGhvcml6YXRpb246IEJlYXJlciAkYmVhcmVyIiwKICAgIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbiIsCik7CmN1cmxfc2V0b3B0KCRjdXJsZywgQ1VSTE9QVF9IVFRQSEVBREVSLCAkaGVhZGVyc2cpOwoKJGRhdGFiID0gPDw8REFUQQp7CiAgInR5cGUiOiAidXNlcm5hbWUiLAogICJ1c2VybmFtZSI6ICIkdXNlcjEyMiIKfQpEQVRBOwoKY3VybF9zZXRvcHQoJGN1cmxnLCBDVVJMT1BUX1BPU1RGSUVMRFMsICRkYXRhYik7CgovL2ZvciBkZWJ1ZyBvbmx5IQovL2N1cmxfc2V0b3B0KCRjdXJsLCBDVVJMT1BUX1NTTF9WRVJJRllIT1NULCBmYWxzZSk7Ci8vY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIGZhbHNlKTsKCiRyZXNwZyA9IGN1cmxfZXhlYygkY3VybGcpOwpjdXJsX2Nsb3NlKCRjdXJsZyk7Ci8vdmFyX2R1bXAoJHJlc3BnKTsKJGpzb25nID0ganNvbl9kZWNvZGUoJHJlc3BnKTsKJHp1aWQgPSAkanNvbmctPmRhdGEtPmlkOwovL2VjaG8gJHp1aWQ7CiR1bmFtZSA9ICRqc29uZy0+ZGF0YS0+dXNlck5hbWU7CiRncmVlbj0iG1sxOzMybSI7CmVjaG8gIiRncmVlbiR1bmFtZSBpcyBSQVRFRAoiOwovLyRnbXNnID0gJGpzb25nLT5kYXRhLT5tZXNzYWdlOwp9CiovCmlmICgkdXNlcjEyMiA9PSAkZnZ2dXNlcikgewogICAgJHVybGQgPSAiaHR0cHM6Ly9wcm9maWxlcy5teWx5a2FhcHBzLmNvbS9hcGkvdjMvcHJvZmlsZXMvR2V0UHJvZmlsZVBvc3RzP29zPWFuZHJvaWQmcGFnZUluZGV4PTEmcGFnZVNpemU9NTAmaWQ9JGZ1aWQmY2F0ZWdvcnk9QUxMIjsKICAgICRjdXJsZCA9IGN1cmxfaW5pdCgkdXJsZCk7CiAgICBjdXJsX3NldG9wdCgkY3VybGQsIENVUkxPUFRfVVJMLCAkdXJsZCk7CiAgICBjdXJsX3NldG9wdCgkY3VybGQsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIHRydWUpOwogICAgJGhlYWRlcnNkID0gYXJyYXkoImF1dGhvcml6YXRpb246IEJlYXJlciAkYmVhcmVyIiwgInVzZXItYWdlbnQ6THlrYS8zLjYuNyAoY29tLnRoaW5nc2lsaWtlYXBwOyBidWlsZDo4MDcgQW5kcm9pZCBPX01SMSAyOCkiLCk7CiAgICBjdXJsX3NldG9wdCgkY3VybGQsIENVUkxPUFRfSFRUUEhFQURFUiwgJGhlYWRlcnNkKTsKICAgICRyZXNwZCA9IGN1cmxfZXhlYygkY3VybGQpOwogICAgY3VybF9jbG9zZSgkY3VybGQpOwogICAgJGpzb25kID0ganNvbl9kZWNvZGUoJHJlc3BkLCB0cnVlKTsKICAgIC8vdmFyX2R1bXAoJHJlc3BkLHRydWUpOwogICAgLypmdW5jdGlvbiBwcmludFZhbHVlcygkYXJyKSB7CiAgICBnbG9iYWwgJGNvdW50OwogICAgZ2xvYmFsICR2YWx1ZXM7CiAgICAKICAgIC8vIENoZWNrIGlucHV0IGlzIGFuIGFycmF5CiAgICBpZighaXNfYXJyYXkoJGFycikpewogICAgICAgIGRpZSgiRVJST1I6IElucHV0IGlzIG5vdCBhbiBhcnJheSIpOwogICAgfQogICAgCiAgICAKICAgIGZvcmVhY2goJGFyciBhcyAka2V5PT4kdmFsdWUpewogICAgICAgIGlmKGlzX2FycmF5KCR2YWx1ZSkpewogICAgICAgICAgICBwcmludFZhbHVlcygkdmFsdWUpOwogICAgICAgIH0gZWxzZXsKICAgICAgICAgICAgJHZhbHVlc1tdID0gJHZhbHVlOwogICAgICAgICAgICAkY291bnQrKzsKICAgICAgICB9CiAgICB9CiAgICAKICAgIC8vIFJldHVybiB0b3RhbCBjb3VudCBhbmQgdmFsdWVzIGZvdW5kIGluIGFycmF5CiAgICByZXR1cm4gYXJyYXkoJ3RvdGFsJyA9PiAkY291bnQsICd2YWx1ZXMnID0+ICR2YWx1ZXMpOwogICAgfQogICAgKi8KICAgICRhcnIgPSBqc29uX2RlY29kZSgkcmVzcGQsIHRydWUpOwogICAgJGxwMCA9ICRhcnJbImRhdGEiXVsiMCJdWyJpZCJdOwogICAgJGxwMSA9ICRhcnJbImRhdGEiXVsiMSJdWyJpZCJdOwogICAgJGxwMiA9ICRhcnJbImRhdGEiXVsiMiJdWyJpZCJdOwogICAgJGxwMyA9ICRhcnJbImRhdGEiXVsiMyJdWyJpZCJdOwogICAgJGxwNCA9ICRhcnJbImRhdGEiXVsiNCJdWyJpZCJdOwogICAgJGxwNSA9ICRhcnJbImRhdGEiXVsiNSJdWyJpZCJdOwogICAgJGxwNiA9ICRhcnJbImRhdGEiXVsiNiJdWyJpZCJdOwogICAgJGxwNyA9ICRhcnJbImRhdGEiXVsiNyJdWyJpZCJdOwogICAgJGxwOCA9ICRhcnJbImRhdGEiXVsiOCJdWyJpZCJdOwogICAgJGxwOSA9ICRhcnJbImRhdGEiXVsiOSJdWyJpZCJdOwogICAgLy9lY2hvICRscDg7CiAgICAvL2VjaG8gJGxwOTsKICAgIAp9CiRzdGF0ID0gJGFyclsic3RhdHVzIl07Ci8vZWNobyAkc3RhdDsKaWYgKCRzdGF0ID09IDApIHsKICAgIGVjaG8gImNoZWNrIHlvdXIgaW5wdXRzCiI7Cn0gZWxzZWlmICgkc3RhdCA9PSAxKQokZSA9ICIbWzE7MzRtIjsKZWNobyAiJGUiOwogICAgJHVybCA9ICJodHRwczovL3Bvc3RzLm15bHlrYWFwcHMuY29tL2FwaS92My9wb3N0cy9yYXRlcG9zdCI7CiAgICAkY3VybCA9IGN1cmxfaW5pdCgkdXJsKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsLCBDVVJMT1BUX1VSTCwgJHVybCk7CiAgICBjdXJsX3NldG9wdCgkY3VybCwgQ1VSTE9QVF9QT1NULCB0cnVlKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCB0cnVlKTsKICAgICRoZWFkZXJzID0gYXJyYXkoImF1dGhvcml6YXRpb246QmVhcmVyICRiZWFyZXIiLCAidXNlci1hZ2VudDpMeWthLzMuNi43IChjb20udGhpbmdzaWxpa2VhcHA7IGJ1aWxkOjgwNyBBbmRyb2lkIE9fTVIxIDI4KSkiLCAiZGV2aWNlb3M6IGFuZHJvaWQiLCAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uIiwpOwogICAgY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfSFRUUEhFQURFUiwgJGhlYWRlcnMpOwogICAgJGRhdGEwID0gPDw8REFUQQp7CgkKICAiZGV2aWNlIjogewogICAgImRldmljZUlkIjogImZjYmU4N2I2MjM0MmZiYWMiLAogICAgImRldmljZUltZWkiOiAiZmNiZTg3YjYyMzQyZmJhYyIsCiAgICAiZGV2aWNlTW9kZWwiOiAiWGlhb21pIFJlZG1pIE5vdGUgMTAiLAogICAgImRldmljZU5hbWUiOiAiYW5kcm9pZCIsCiAgICAiZGV2aWNlT3MiOiAiQW5kcm9pZCBPX01SMSAiLAogICAgImlzRW11bGF0b3IiOiBmYWxzZSwKICAgICJub3RpZmljYXRpb25Ub2tlbiI6ICJlRUJqeFlyRFNKeUZ3N04tRHBFR05COkFQQTkxYkVabldvLVRSZFNnVkN6UWNKcTNnSGlvSnRGVGhOeXh3NlBzZ09DSTFKSER6ZDU1eXFHLVFad0FaUmo0cHdJQ3JYbzVWRGlVWW9tN0ZzZjRRbDY2LUNXSEZ1bU5BMnlucktFUDIxYnN0UEJNZ3dzTi0zR19FazBaTGNvS3RWTWc1b042LXBnIiwKICAgICJvc1ZlcnNpb24iOiAiMjgiCiAgfSwKICAicG9zdElkIjogJGxwMCwKICAicmF0ZSI6IDUsCiAgICJ1c2VyaWQiOiAkZnVpZAp9CkRBVEE7CiAgICBjdXJsX3NldG9wdCgkY3VybCwgQ1VSTE9QVF9QT1NURklFTERTLCAkZGF0YTApOwogICAgJHJlc3AgPSBjdXJsX2V4ZWMoJGN1cmwpOwogICAgY3VybF9jbG9zZSgkY3VybCk7CiAgICAvL3Zhcl9kdW1wKCRyZXNwKTsKICAgICRqc29uID0ganNvbl9kZWNvZGUoJHJlc3ApOwogICAgZWNobyAkanNvbi0+bWVzc2FnZTsKICAgIGVjaG8gIgoiOwogICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogICAgJGN1cmwyID0gY3VybF9pbml0KCR1cmwpOwogICAgY3VybF9zZXRvcHQoJGN1cmwyLCBDVVJMT1BUX1VSTCwgJHVybCk7CiAgICBjdXJsX3NldG9wdCgkY3VybDIsIENVUkxPUFRfUE9TVCwgdHJ1ZSk7CiAgICBjdXJsX3NldG9wdCgkY3VybDIsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIHRydWUpOwogICAgY3VybF9zZXRvcHQoJGN1cmwyLCBDVVJMT1BUX0hUVFBIRUFERVIsICRoZWFkZXJzKTsKICAgICRkYXRhMDIyID0gPDw8REFUQQp7CgkKICAiZGV2aWNlIjogewogICAgImRldmljZUlkIjogImZjYmU4N2I2MjM0MmZiYWMiLAogICAgImRldmljZUltZWkiOiAiZmNiZTg3YjYyMzQyZmJhYyIsCiAgICAiZGV2aWNlTW9kZWwiOiAiWGlhb21pIFJlZG1pIE5vdGUgMTAiLAogICAgImRldmljZU5hbWUiOiAiYW5kcm9pZCIsCiAgICAiZGV2aWNlT3MiOiAiQW5kcm9pZCBPX01SMSAiLAogICAgImlzRW11bGF0b3IiOiBmYWxzZSwKICAgICJub3RpZmljYXRpb25Ub2tlbiI6ICJlRUJqeFlyRFNKeUZ3N04tRHBFR05COkFQQTkxYkVabldvLVRSZFNnVkN6UWNKcTNnSGlvSnRGVGhOeXh3NlBzZ09DSTFKSER6ZDU1eXFHLVFad0FaUmo0cHdJQ3JYbzVWRGlVWW9tN0ZzZjRRbDY2LUNXSEZ1bU5BMnlucktFUDIxYnN0UEJNZ3dzTi0zR19FazBaTGNvS3RWTWc1b042LXBnIiwKICAgICJvc1ZlcnNpb24iOiAiMjgiCiAgfSwKICAicG9zdElkIjogJGxwMSwKICAicmF0ZSI6IDUsCiAgICJ1c2VyaWQiOiAkZnVpZAp9CkRBVEE7CiAgICBjdXJsX3NldG9wdCgkY3VybDIsIENVUkxPUFRfUE9TVEZJRUxEUywgJGRhdGEwMjIpOwogICAgJHJlc3AyID0gY3VybF9leGVjKCRjdXJsMik7CiAgICBjdXJsX2Nsb3NlKCRjdXJsMik7CiAgICAvL3Zhcl9kdW1wKCRyZXNwMik7CiAgICAkanNvbjIgPSBqc29uX2RlY29kZSgkcmVzcDIpOwogICAgZWNobyAkanNvbjItPm1lc3NhZ2U7CiAgICBlY2hvICIKIjsKICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAgICRjdXJsMyA9IGN1cmxfaW5pdCgkdXJsKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsMywgQ1VSTE9QVF9VUkwsICR1cmwpOwogICAgICAgIGN1cmxfc2V0b3B0KCRjdXJsMywgQ1VSTE9QVF9QT1NULCB0cnVlKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsMywgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7CiAgIGN1cmxfc2V0b3B0KCRjdXJsMywgQ1VSTE9QVF9IVFRQSEVBREVSLCAkaGVhZGVycyk7CiAgICAkZGF0YTAzMyA9IDw8PERBVEEKewoJCiAgImRldmljZSI6IHsKICAgICJkZXZpY2VJZCI6ICJmY2JlODdiNjIzNDJmYmFjIiwKICAgICJkZXZpY2VJbWVpIjogImZjYmU4N2I2MjM0MmZiYWMiLAogICAgImRldmljZU1vZGVsIjogIlhpYW9taSBSZWRtaSBOb3RlIDEwIiwKICAgICJkZXZpY2VOYW1lIjogImFuZHJvaWQiLAogICAgImRldmljZU9zIjogIkFuZHJvaWQgT19NUjEgIiwKICAgICJpc0VtdWxhdG9yIjogZmFsc2UsCiAgICAibm90aWZpY2F0aW9uVG9rZW4iOiAiZUVCanhZckRTSnlGdzdOLURwRUdOQjpBUEE5MWJFWm5Xby1UUmRTZ1ZDelFjSnEzZ0hpb0p0RlRoTnl4dzZQc2dPQ0kxSkhEemQ1NXlxRy1RWndBWlJqNHB3SUNyWG81VkRpVVlvbTdGc2Y0UWw2Ni1DV0hGdW1OQTJ5bnJLRVAyMWJzdFBCTWd3c04tM0dfRWswWkxjb0t0Vk1nNW9ONi1wZyIsCiAgICAib3NWZXJzaW9uIjogIjI4IgogIH0sCiAgInBvc3RJZCI6ICRscDIsCiAgInJhdGUiOiA1LAogICAidXNlcmlkIjogJGZ1aWQKfQpEQVRBOwogICAgY3VybF9zZXRvcHQoJGN1cmwzLCBDVVJMT1BUX1BPU1RGSUVMRFMsICRkYXRhMDMzKTsKICAgICRyZXNwMyA9IGN1cmxfZXhlYygkY3VybDMpOwogICAgY3VybF9jbG9zZSgkY3VybDMpOwogICAgLy92YXJfZHVtcCgkcmVzcDIpOwogICAgJGpzb24zID0ganNvbl9kZWNvZGUoJHJlc3AzKTsKICAgIGVjaG8gJGpzb24zLT5tZXNzYWdlOwogICAgZWNobyAiCiI7CiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgICAkY3VybDQgPSBjdXJsX2luaXQoJHVybCk7CiAgICBjdXJsX3NldG9wdCgkY3VybDQsIENVUkxPUFRfVVJMLCAkdXJsKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsNCwgQ1VSTE9QVF9QT1NULCB0cnVlKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsNCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7CiAgICBjdXJsX3NldG9wdCgkY3VybDQsIENVUkxPUFRfSFRUUEhFQURFUiwgJGhlYWRlcnMpOwogICAgJGRhdGEwNDQgPSA8PDxEQVRBCnsKCQogICJkZXZpY2UiOiB7CiAgICAiZGV2aWNlSWQiOiAiZmNiZTg3YjYyMzQyZmJhYyIsCiAgICAiZGV2aWNlSW1laSI6ICJmY2JlODdiNjIzNDJmYmFjIiwKICAgICJkZXZpY2VNb2RlbCI6ICJYaWFvbWkgUmVkbWkgTm90ZSAxMCIsCiAgICAiZGV2aWNlTmFtZSI6ICJhbmRyb2lkIiwKICAgICJkZXZpY2VPcyI6ICJBbmRyb2lkIE9fTVIxICIsCiAgICAiaXNFbXVsYXRvciI6IGZhbHNlLAogICAgIm5vdGlmaWNhdGlvblRva2VuIjogImVFQmp4WXJEU0p5Rnc3Ti1EcEVHTkI6QVBBOTFiRVpuV28tVFJkU2dWQ3pRY0pxM2dIaW9KdEZUaE55eHc2UHNnT0NJMUpIRHpkNTV5cUctUVp3QVpSajRwd0lDclhvNVZEaVVZb203RnNmNFFsNjYtQ1dIRnVtTkEyeW5yS0VQMjFic3RQQk1nd3NOLTNHX0VrMFpMY29LdFZNZzVvTjYtcGciLAogICAgIm9zVmVyc2lvbiI6ICIyOCIKICB9LAogICJwb3N0SWQiOiAkbHAzLAogICJyYXRlIjogNSwKICAgInVzZXJpZCI6ICRmdWlkIAp9CkRBVEE7CiAgICBjdXJsX3NldG9wdCgkY3VybDQsIENVUkxPUFRfUE9TVEZJRUxEUywgJGRhdGEwNDQpOwogICAgJHJlc3A0ID0gY3VybF9leGVjKCRjdXJsNCk7CiAgICBjdXJsX2Nsb3NlKCRjdXJsNCk7CiAgICAvL3Zhcl9kdW1wKCRyZXNwMik7CiAgICAkanNvbjQgPSBqc29uX2RlY29kZSgkcmVzcDQpOwogICAgZWNobyAkanNvbjQtPm1lc3NhZ2U7CiAgICBlY2hvICIKIjsKICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAgICRjdXJsNSA9IGN1cmxfaW5pdCgkdXJsKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsNSwgQ1VSTE9QVF9VUkwsICR1cmwpOwogICAgY3VybF9zZXRvcHQoJGN1cmw1LCBDVVJMT1BUX1BPU1QsIHRydWUpOwogICAgY3VybF9zZXRvcHQoJGN1cmw1LCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCB0cnVlKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsNSwgQ1VSTE9QVF9IVFRQSEVBREVSLCAkaGVhZGVycyk7CiAgICAkZGF0YTA1NSA9IDw8PERBVEEKewoJCiAgImRldmljZSI6IHsKICAgICJkZXZpY2VJZCI6ICJmY2JlODdiNjIzNDJmYmFjIiwKICAgICJkZXZpY2VJbWVpIjogImZjYmU4N2I2MjM0MmZiYWMiLAogICAgImRldmljZU1vZGVsIjogIlhpYW9taSBSZWRtaSBOb3RlIDEwIiwKICAgICJkZXZpY2VOYW1lIjogImFuZHJvaWQiLAogICAgImRldmljZU9zIjogIkFuZHJvaWQgT19NUjEgIiwKICAgICJpc0VtdWxhdG9yIjogZmFsc2UsCiAgICAibm90aWZpY2F0aW9uVG9rZW4iOiAiZUVCanhZckRTSnlGdzdOLURwRUdOQjpBUEE5MWJFWm5Xby1UUmRTZ1ZDelFjSnEzZ0hpb0p0RlRoTnl4dzZQc2dPQ0kxSkhEemQ1NXlxRy1RWndBWlJqNHB3SUNyWG81VkRpVVlvbTdGc2Y0UWw2Ni1DV0hGdW1OQTJ5bnJLRVAyMWJzdFBCTWd3c04tM0dfRWswWkxjb0t0Vk1nNW9ONi1wZyIsCiAgICAib3NWZXJzaW9uIjogIjI4IgogIH0sCiAgInBvc3RJZCI6ICRscDQsCiAgInJhdGUiOiA1LAogICAidXNlcmlkIjogJGZ1aWQKfQpEQVRBOwogICAgY3VybF9zZXRvcHQoJGN1cmw1LCBDVVJMT1BUX1BPU1RGSUVMRFMsICRkYXRhMDU1KTsKICAgICRyZXNwNSA9IGN1cmxfZXhlYygkY3VybDUpOwogICAgY3VybF9jbG9zZSgkY3VybDUpOwogICAgLy92YXJfZHVtcCgkcmVzcDIpOwogICAgJGpzb241ID0ganNvbl9kZWNvZGUoJHJlc3A1KTsKICAgIGVjaG8gJGpzb241LT5tZXNzYWdlOwogICAgZWNobyAiCiI7CiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgICAkY3VybDYgPSBjdXJsX2luaXQoJHVybCk7CiAgICBjdXJsX3NldG9wdCgkY3VybDYsIENVUkxPUFRfVVJMLCAkdXJsKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsNiwgQ1VSTE9QVF9QT1NULCB0cnVlKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsNiwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7CiAgICBjdXJsX3NldG9wdCgkY3VybDYsIENVUkxPUFRfSFRUUEhFQURFUiwgJGhlYWRlcnMpOwogICAgJGRhdGEwNjYgPSA8PDxEQVRBCnsKCQogICJkZXZpY2UiOiB7CiAgICAiZGV2aWNlSWQiOiAiZmNiZTg3YjYyMzQyZmJhYyIsCiAgICAiZGV2aWNlSW1laSI6ICJmY2JlODdiNjIzNDJmYmFjIiwKICAgICJkZXZpY2VNb2RlbCI6ICJYaWFvbWkgUmVkbWkgTm90ZSAxMCIsCiAgICAiZGV2aWNlTmFtZSI6ICJhbmRyb2lkIiwKICAgICJkZXZpY2VPcyI6ICJBbmRyb2lkIE9fTVIxICIsCiAgICAiaXNFbXVsYXRvciI6IGZhbHNlLAogICAgIm5vdGlmaWNhdGlvblRva2VuIjogImVFQmp4WXJEU0p5Rnc3Ti1EcEVHTkI6QVBBOTFiRVpuV28tVFJkU2dWQ3pRY0pxM2dIaW9KdEZUaE55eHc2UHNnT0NJMUpIRHpkNTV5cUctUVp3QVpSajRwd0lDclhvNVZEaVVZb203RnNmNFFsNjYtQ1dIRnVtTkEyeW5yS0VQMjFic3RQQk1nd3NOLTNHX0VrMFpMY29LdFZNZzVvTjYtcGciLAogICAgIm9zVmVyc2lvbiI6ICIyOCIKICB9LAogICJwb3N0SWQiOiAkbHA1LAogICJyYXRlIjogNSwKICAgInVzZXJpZCI6ICRmdWlkCn0KREFUQTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsNiwgQ1VSTE9QVF9QT1NURklFTERTLCAkZGF0YTA2Nik7CiAgICAkcmVzcDYgPSBjdXJsX2V4ZWMoJGN1cmw2KTsKICAgIGN1cmxfY2xvc2UoJGN1cmw2KTsKICAgIC8vdmFyX2R1bXAoJHJlc3AyKTsKICAgICRqc29uNiA9IGpzb25fZGVjb2RlKCRyZXNwNik7CiAgICBlY2hvICRqc29uNi0+bWVzc2FnZTsKICAgIGVjaG8gIgoiOwogICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogICAgJGN1cmw3ID0gY3VybF9pbml0KCR1cmwpOwogICAgY3VybF9zZXRvcHQoJGN1cmw3LCBDVVJMT1BUX1VSTCwgJHVybCk7CiAgICBjdXJsX3NldG9wdCgkY3VybDcsIENVUkxPUFRfUE9TVCwgdHJ1ZSk7CiAgICBjdXJsX3NldG9wdCgkY3VybDcsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIHRydWUpOwogICAgY3VybF9zZXRvcHQoJGN1cmw3LCBDVVJMT1BUX0hUVFBIRUFERVIsICRoZWFkZXJzKTsKICAgICRkYXRhMDc3ID0gPDw8REFUQQp7CgkKICAiZGV2aWNlIjogewogICAgImRldmljZUlkIjogImZjYmU4N2I2MjM0MmZiYWMiLAogICAgImRldmljZUltZWkiOiAiZmNiZTg3YjYyMzQyZmJhYyIsCiAgICAiZGV2aWNlTW9kZWwiOiAiWGlhb21pIFJlZG1pIE5vdGUgMTAiLAogICAgImRldmljZU5hbWUiOiAiYW5kcm9pZCIsCiAgICAiZGV2aWNlT3MiOiAiQW5kcm9pZCBPX01SMSAiLAogICAgImlzRW11bGF0b3IiOiBmYWxzZSwKICAgICJub3RpZmljYXRpb25Ub2tlbiI6ICJlRUJqeFlyRFNKeUZ3N04tRHBFR05COkFQQTkxYkVabldvLVRSZFNnVkN6UWNKcTNnSGlvSnRGVGhOeXh3NlBzZ09DSTFKSER6ZDU1eXFHLVFad0FaUmo0cHdJQ3JYbzVWRGlVWW9tN0ZzZjRRbDY2LUNXSEZ1bU5BMnlucktFUDIxYnN0UEJNZ3dzTi0zR19FazBaTGNvS3RWTWc1b042LXBnIiwKICAgICJvc1ZlcnNpb24iOiAiMjgiCiAgfSwKICAicG9zdElkIjogJGxwNiwKICAicmF0ZSI6IDUsCiAgICJ1c2VyaWQiOiAkZnVpZAp9CkRBVEE7CiAgICBjdXJsX3NldG9wdCgkY3VybDcsIENVUkxPUFRfUE9TVEZJRUxEUywgJGRhdGEwNzcpOwogICAgJHJlc3A3ID0gY3VybF9leGVjKCRjdXJsNyk7CiAgICBjdXJsX2Nsb3NlKCRjdXJsNyk7CiAgICAvL3Zhcl9kdW1wKCRyZXNwMik7CiAgICAkanNvbjcgPSBqc29uX2RlY29kZSgkcmVzcDcpOwogICAgZWNobyAkanNvbjctPm1lc3NhZ2U7CiAgICBlY2hvICIKIjsKICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAgICRjdXJsOCA9IGN1cmxfaW5pdCgkdXJsKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsOCwgQ1VSTE9QVF9VUkwsICR1cmwpOwogICAgY3VybF9zZXRvcHQoJGN1cmw4LCBDVVJMT1BUX1BPU1QsIHRydWUpOwogICAgY3VybF9zZXRvcHQoJGN1cmw4LCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCB0cnVlKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsOCwgQ1VSTE9QVF9IVFRQSEVBREVSLCAkaGVhZGVycyk7CiAgICAkZGF0YTA4OCA9IDw8PERBVEEKewoJCiAgImRldmljZSI6IHsKICAgICJkZXZpY2VJZCI6ICJmY2JlODdiNjIzNDJmYmFjIiwKICAgICJkZXZpY2VJbWVpIjogImZjYmU4N2I2MjM0MmZiYWMiLAogICAgImRldmljZU1vZGVsIjogIlhpYW9taSBSZWRtaSBOb3RlIDEwIiwKICAgICJkZXZpY2VOYW1lIjogImFuZHJvaWQiLAogICAgImRldmljZU9zIjogIkFuZHJvaWQgT19NUjEgIiwKICAgICJpc0VtdWxhdG9yIjogZmFsc2UsCiAgICAibm90aWZpY2F0aW9uVG9rZW4iOiAiZUVCanhZckRTSnlGdzdOLURwRUdOQjpBUEE5MWJFWm5Xby1UUmRTZ1ZDelFjSnEzZ0hpb0p0RlRoTnl4dzZQc2dPQ0kxSkhEemQ1NXlxRy1RWndBWlJqNHB3SUNyWG81VkRpVVlvbTdGc2Y0UWw2Ni1DV0hGdW1OQTJ5bnJLRVAyMWJzdFBCTWd3c04tM0dfRWswWkxjb0t0Vk1nNW9ONi1wZyIsCiAgICAib3NWZXJzaW9uIjogIjI4IgogIH0sCiAgInBvc3RJZCI6ICRscDcsCiAgInJhdGUiOiA1LAogICAidXNlcmlkIjogJGZ1aWQKfQpEQVRBOwogICAgY3VybF9zZXRvcHQoJGN1cmw4LCBDVVJMT1BUX1BPU1RGSUVMRFMsICRkYXRhMDg4KTsKICAgICRyZXNwOCA9IGN1cmxfZXhlYygkY3VybDgpOwogICAgY3VybF9jbG9zZSgkY3VybDgpOwogICAgLy92YXJfZHVtcCgkcmVzcDIpOwogICAgJGpzb244ID0ganNvbl9kZWNvZGUoJHJlc3A4KTsKICAgIGVjaG8gJGpzb244LT5tZXNzYWdlOwogICAgZWNobyAiCiI7CiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgICAkY3VybDkgPSBjdXJsX2luaXQoJHVybCk7CiAgICBjdXJsX3NldG9wdCgkY3VybDksIENVUkxPUFRfVVJMLCAkdXJsKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsOSwgQ1VSTE9QVF9QT1NULCB0cnVlKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsOSwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7CiAgICBjdXJsX3NldG9wdCgkY3VybDksIENVUkxPUFRfSFRUUEhFQURFUiwgJGhlYWRlcnMpOwogICAgJGRhdGEwOTkgPSA8PDxEQVRBCnsKCQogICJkZXZpY2UiOiB7CiAgICAiZGV2aWNlSWQiOiAiZmNiZTg3YjYyMzQyZmJhYyIsCiAgICAiZGV2aWNlSW1laSI6ICJmY2JlODdiNjIzNDJmYmFjIiwKICAgICJkZXZpY2VNb2RlbCI6ICJYaWFvbWkgUmVkbWkgTm90ZSAxMCIsCiAgICAiZGV2aWNlTmFtZSI6ICJhbmRyb2lkIiwKICAgICJkZXZpY2VPcyI6ICJBbmRyb2lkIE9fTVIxICIsCiAgICAiaXNFbXVsYXRvciI6IGZhbHNlLAogICAgIm5vdGlmaWNhdGlvblRva2VuIjogImVFQmp4WXJEU0p5Rnc3Ti1EcEVHTkI6QVBBOTFiRVpuV28tVFJkU2dWQ3pRY0pxM2dIaW9KdEZUaE55eHc2UHNnT0NJMUpIRHpkNTV5cUctUVp3QVpSajRwd0lDclhvNVZEaVVZb203RnNmNFFsNjYtQ1dIRnVtTkEyeW5yS0VQMjFic3RQQk1nd3NOLTNHX0VrMFpMY29LdFZNZzVvTjYtcGciLAogICAgIm9zVmVyc2lvbiI6ICIyOCIKICB9LAogICJwb3N0SWQiOiAkbHA4LAogICJyYXRlIjogNSwKICAgInVzZXJpZCI6ICRmdWlkCn0KREFUQTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsOSwgQ1VSTE9QVF9QT1NURklFTERTLCAkZGF0YTA5OSk7CiAgICAkcmVzcDkgPSBjdXJsX2V4ZWMoJGN1cmw5KTsKICAgIGN1cmxfY2xvc2UoJGN1cmw5KTsKICAgIC8vdmFyX2R1bXAoJHJlc3AyKTsKICAgICRqc29uOSA9IGpzb25fZGVjb2RlKCRyZXNwOSk7CiAgICBlY2hvICRqc29uOS0+bWVzc2FnZTsKICAgIGVjaG8gIgoiOwogICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogICAgJGN1cmwxMCA9IGN1cmxfaW5pdCgkdXJsKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsMTAsIENVUkxPUFRfVVJMLCAkdXJsKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsMTAsIENVUkxPUFRfUE9TVCwgdHJ1ZSk7CiAgICBjdXJsX3NldG9wdCgkY3VybDEwLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCB0cnVlKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsMTAsIENVUkxPUFRfSFRUUEhFQURFUiwgJGhlYWRlcnMpOwogICAgJGRhdGEwMTAgPSA8PDxEQVRBCnsKCQogICJkZXZpY2UiOiB7CiAgICAiZGV2aWNlSWQiOiAiZmNiZTg3YjYyMzQyZmJhYyIsCiAgICAiZGV2aWNlSW1laSI6ICJmY2JlODdiNjIzNDJmYmFjIiwKICAgICJkZXZpY2VNb2RlbCI6ICJYaWFvbWkgUmVkbWkgTm90ZSAxMCIsCiAgICAiZGV2aWNlTmFtZSI6ICJhbmRyb2lkIiwKICAgICJkZXZpY2VPcyI6ICJBbmRyb2lkIE9fTVIxICIsCiAgICAiaXNFbXVsYXRvciI6IGZhbHNlLAogICAgIm5vdGlmaWNhdGlvblRva2VuIjogImVFQmp4WXJEU0p5Rnc3Ti1EcEVHTkI6QVBBOTFiRVpuV28tVFJkU2dWQ3pRY0pxM2dIaW9KdEZUaE55eHc2UHNnT0NJMUpIRHpkNTV5cUctUVp3QVpSajRwd0lDclhvNVZEaVVZb203RnNmNFFsNjYtQ1dIRnVtTkEyeW5yS0VQMjFic3RQQk1nd3NOLTNHX0VrMFpMY29LdFZNZzVvTjYtcGciLAogICAgIm9zVmVyc2lvbiI6ICIyOCIKICB9LAogICJwb3N0SWQiOiAkbHA5LAogICJyYXRlIjogNSwKICAgInVzZXJpZCI6ICRmdWlkCn0KREFUQTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsMTAsIENVUkxPUFRfUE9TVEZJRUxEUywgJGRhdGEwMTApOwogICAgJHJlc3AxMCA9IGN1cmxfZXhlYygkY3VybDEwKTsKICAgIGN1cmxfY2xvc2UoJGN1cmwxMCk7CiAgICAvL3Zhcl9kdW1wKCRyZXNwMik7CiAgICAkanNvbjEwID0ganNvbl9kZWNvZGUoJHJlc3AxMCk7CiAgICBlY2hvICRqc29uMTAtPm1lc3NhZ2UKOyAgCiR5ZWxsb3cgPSAiG1swOzMybSI7CmVjaG8gIiR5ZWxsb3cKIjsKZWNobyAKIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IjsKJHkgPSAiG1sxOzM0bSI7CmVjaG8gIiR5CiI7Ci8vICAkJzsKLy8kcGFzczMyMiA9IHJlYWRsaW5lKCdFbnRlciBtYWluIHBhc3dvcmQ6ICcpOwovLyRwYXNzOwovL3Bhc3MzMjIgPSAnYTMyMic7Ci8vJHVzZXIzMjIgPSAnCi8vIEZvciBvdXRwdXQKJG93ID0gIhtbMTszM20iOwplY2hvICIkb3ciOwplY2hvICIKJHZ1c2VyIGlzIFJBVElORyAkdXNlcjMyMgoiOwoKICAgICR1cmxtID0gImh0dHBzOi8vdXNlcnMubXlseWthYXBwcy5jb20vYXBpL3YzL3VzZXJzL3NlYXJjaHN1Z2dlc3RlZHBlb3BsZT9zZWFyY2hUZXh0PSR1c2VyMzIyJm9zPWFuZHJvaWQmcGFnZUluZGV4PTEmcGFnZVNpemU9MTYiOwogICAgJGN1cmxtID0gY3VybF9pbml0KCR1cmxtKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsbSwgQ1VSTE9QVF9VUkwsICR1cmxtKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsbSwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7CiAgICAkaGVhZGVyc20gPSBhcnJheSgidXNlci1hZ2VudDpMeWthLzMuNi43IChjb20udGhpbmdzaWxpa2VhcHA7IGJ1aWxkOjgwNyBBbmRyb2lkIE9fTVIxIDI4KSIsICJhdXRob3JpemF0aW9uOiBCZWFyZXIgJGJlYXJlciIsKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsbSwgQ1VSTE9QVF9IVFRQSEVBREVSLCAkaGVhZGVyc20pOwogICAgJHJlc3BtID0gY3VybF9leGVjKCRjdXJsbSk7CiAgICBjdXJsX2Nsb3NlKCRjdXJsbSk7CiAgICAvL3Zhcl9kdW1wKCRyZXNwbSk7CiAgICAkanNvbm0gPSBqc29uX2RlY29kZSgkcmVzcG0sIHRydWUpOwogICAgJGh1aWQgPSAkanNvbm1bImRhdGEiXVsiMCJdWyJpZCJdOwogICAgJGh2dnVzZXIgPSAkanNvbm1bImRhdGEiXVsiMCJdWyJ1c2VyTmFtZSJdOwogICAgLy9jaG8gJGh2dnVzZXI7CiAgICAvL2VjaG8gJGh1aWQ7CiAgICAKCi8qaWYoJGh2dnVzZXIgPT0gJHVzZXIzMjIpewokdXJsZyA9ICJodHRwczovL3Byb2ZpbGVzLm15bHlrYWFwcHMuY29tL2FwaS92My9wcm9maWxlcy9HZXRVc2VyIjsKLy8kYmVhcmVyMyA9ICRqc29ubjItPmRhdGEtPnRva2VuLT5hY2Nlc3NUb2tlbjsKJGN1cmxnID0gY3VybF9pbml0KCR1cmxnKTsKY3VybF9zZXRvcHQoJGN1cmxnLCBDVVJMT1BUX1VSTCwgJHVybGcpOwpjdXJsX3NldG9wdCgkY3VybGcsIENVUkxPUFRfUE9TVCwgdHJ1ZSk7CmN1cmxfc2V0b3B0KCRjdXJsZywgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7CgokaGVhZGVyc2cgPSBhcnJheSgKICAgImF1dGhvcml6YXRpb246IEJlYXJlciAkYmVhcmVyIiwKICAgIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbiIsCik7CmN1cmxfc2V0b3B0KCRjdXJsZywgQ1VSTE9QVF9IVFRQSEVBREVSLCAkaGVhZGVyc2cpOwoKJGRhdGFsID0gPDw8REFUQQp7CiAgInR5cGUiOiAidXNlcm5hbWUiLAogICJ1c2VybmFtZSI6ICIkdXNlcjMyMiIKfQpEQVRBOwoKY3VybF9zZXRvcHQoJGN1cmxnLCBDVVJMT1BUX1BPU1RGSUVMRFMsICRkYXRhbCk7CgovL2ZvciBkZWJ1ZyBvbmx5IQovL2N1cmxfc2V0b3B0KCRjdXJsLCBDVVJMT1BUX1NTTF9WRVJJRllIT1NULCBmYWxzZSk7Ci8vY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIGZhbHNlKTsKCiRyZXNwZyA9IGN1cmxfZXhlYygkY3VybGcpOwpjdXJsX2Nsb3NlKCRjdXJsZyk7Ci8vdmFyX2R1bXAoJHJlc3BnKTsKJGpzb25nID0ganNvbl9kZWNvZGUoJHJlc3BnKTsKJGN1aWQgPSAkanNvbmctPmRhdGEtPmlkOwovL2VjaG8gJGN1aWQ7CiR1bmFtZSA9ICRqc29uZy0+ZGF0YS0+dXNlck5hbWU7CiRncmVlbj0iG1sxOzMybSI7CmVjaG8gIiRncmVlbiR1bmFtZSBpcyBSQVRFRAoiOwovLyRnbXNnID0gJGpzb25nLT5kYXRhLT5tZXNzYWdlOwp9CiovCmlmICgkdXNlcjMyMiA9PSAkaHZ2dXNlcikgewogICAgJHVybGQgPSAiaHR0cHM6Ly9wcm9maWxlcy5teWx5a2FhcHBzLmNvbS9hcGkvdjMvcHJvZmlsZXMvR2V0UHJvZmlsZVBvc3RzP29zPWFuZHJvaWQmcGFnZUluZGV4PTEmcGFnZVNpemU9NTAmaWQ9JGh1aWQmY2F0ZWdvcnk9QUxMIjsKICAgICRjdXJsZCA9IGN1cmxfaW5pdCgkdXJsZCk7CiAgICBjdXJsX3NldG9wdCgkY3VybGQsIENVUkxPUFRfVVJMLCAkdXJsZCk7CiAgICBjdXJsX3NldG9wdCgkY3VybGQsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIHRydWUpOwogICAgJGhlYWRlcnNkID0gYXJyYXkoImF1dGhvcml6YXRpb246IEJlYXJlciAkYmVhcmVyIiwgInVzZXItYWdlbnQ6THlrYS8zLjYuNyAoY29tLnRoaW5nc2lsaWtlYXBwOyBidWlsZDo4MDcgQW5kcm9pZCBPX01SMSAyOCkiLCk7CiAgICBjdXJsX3NldG9wdCgkY3VybGQsIENVUkxPUFRfSFRUUEhFQURFUiwgJGhlYWRlcnNkKTsKICAgICRyZXNwZCA9IGN1cmxfZXhlYygkY3VybGQpOwogICAgY3VybF9jbG9zZSgkY3VybGQpOwogICAgJGpzb25kID0ganNvbl9kZWNvZGUoJHJlc3BkLCB0cnVlKTsKICAgIC8vdmFyX2R1bXAoJHJlc3BkLHRydWUpOwogICAgLypmdW5jdGlvbiBwcmludFZhbHVlcygkYXJyKSB7CiAgICBnbG9iYWwgJGNvdW50OwogICAgZ2xvYmFsICR2YWx1ZXM7CiAgICAKICAgIC8vIENoZWNrIGlucHV0IGlzIGFuIGFycmF5CiAgICBpZighaXNfYXJyYXkoJGFycikpewogICAgICAgIGRpZSgiRVJST1I6IElucHV0IGlzIG5vdCBhbiBhcnJheSIpOwogICAgfQogICAgCiAgICAKICAgIGZvcmVhY2goJGFyciBhcyAka2V5PT4kdmFsdWUpewogICAgICAgIGlmKGlzX2FycmF5KCR2YWx1ZSkpewogICAgICAgICAgICBwcmludFZhbHVlcygkdmFsdWUpOwogICAgICAgIH0gZWxzZXsKICAgICAgICAgICAgJHZhbHVlc1tdID0gJHZhbHVlOwogICAgICAgICAgICAkY291bnQrKzsKICAgICAgICB9CiAgICB9CiAgICAKICAgIC8vIFJldHVybiB0b3RhbCBjb3VudCBhbmQgdmFsdWVzIGZvdW5kIGluIGFycmF5CiAgICByZXR1cm4gYXJyYXkoJ3RvdGFsJyA9PiAkY291bnQsICd2YWx1ZXMnID0+ICR2YWx1ZXMpOwogICAgfQogICAgKi8KICAgICRhcnIgPSBqc29uX2RlY29kZSgkcmVzcGQsIHRydWUpOwogICAgJGhwMCA9ICRhcnJbImRhdGEiXVsiMCJdWyJpZCJdOwogICAgJGhwMSA9ICRhcnJbImRhdGEiXVsiMSJdWyJpZCJdOwogICAgJGhwMiA9ICRhcnJbImRhdGEiXVsiMiJdWyJpZCJdOwogICAgJGhwMyA9ICRhcnJbImRhdGEiXVsiMyJdWyJpZCJdOwogICAgJGhwNCA9ICRhcnJbImRhdGEiXVsiNCJdWyJpZCJdOwogICAgJGhwNSA9ICRhcnJbImRhdGEiXVsiNSJdWyJpZCJdOwogICAgJGhwNiA9ICRhcnJbImRhdGEiXVsiNiJdWyJpZCJdOwogICAgJGhwNyA9ICRhcnJbImRhdGEiXVsiNyJdWyJpZCJdOwogICAgJGhwOCA9ICRhcnJbImRhdGEiXVsiOCJdWyJpZCJdOwogICAgJGhwOSA9ICRhcnJbImRhdGEiXVsiOSJdWyJpZCJdOwogICAgLy9lY2hvICRocDg7CiAgICAvL2VjaG8gJGhwOTsKICAgIAp9CiRzdGF0ID0gJGFyclsic3RhdHVzIl07Ci8vZWNobyAkc3RhdDsKaWYgKCRzdGF0ID09IDApIHsKICAgIGVjaG8gImNoZWNrIHlvdXIgaW5wdXRzCiI7Cn0gZWxzZWlmICgkc3RhdCA9PSAxKQokZSA9ICIbWzE7MzRtIjsKZWNobyAiJGUiOwogICAgJHVybCA9ICJodHRwczovL3Bvc3RzLm15bHlrYWFwcHMuY29tL2FwaS92My9wb3N0cy9yYXRlcG9zdCI7CiAgICAkY3VybCA9IGN1cmxfaW5pdCgkdXJsKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsLCBDVVJMT1BUX1VSTCwgJHVybCk7CiAgICBjdXJsX3NldG9wdCgkY3VybCwgQ1VSTE9QVF9QT1NULCB0cnVlKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCB0cnVlKTsKICAgICRoZWFkZXJzID0gYXJyYXkoImF1dGhvcml6YXRpb246QmVhcmVyICRiZWFyZXIiLCAidXNlci1hZ2VudDpMeWthLzMuNi43IChjb20udGhpbmdzaWxpa2VhcHA7IGJ1aWxkOjgwNyBBbmRyb2lkIE9fTVIxIDI4KSkiLCAiZGV2aWNlb3M6IGFuZHJvaWQiLCAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uIiwpOwogICAgY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfSFRUUEhFQURFUiwgJGhlYWRlcnMpOwogICAgJGRhdGEwMCA9IDw8PERBVEEKewoJCiAgImRldmljZSI6IHsKICAgICJkZXZpY2VJZCI6ICJmY2JlODdiNjIzNDJmYmFjIiwKICAgICJkZXZpY2VJbWVpIjogImZjYmU4N2I2MjM0MmZiYWMiLAogICAgImRldmljZU1vZGVsIjogIlhpYW9taSBSZWRtaSBOb3RlIDEwIiwKICAgICJkZXZpY2VOYW1lIjogImFuZHJvaWQiLAogICAgImRldmljZU9zIjogIkFuZHJvaWQgT19NUjEgIiwKICAgICJpc0VtdWxhdG9yIjogZmFsc2UsCiAgICAibm90aWZpY2F0aW9uVG9rZW4iOiAiZUVCanhZckRTSnlGdzdOLURwRUdOQjpBUEE5MWJFWm5Xby1UUmRTZ1ZDelFjSnEzZ0hpb0p0RlRoTnl4dzZQc2dPQ0kxSkhEemQ1NXlxRy1RWndBWlJqNHB3SUNyWG81VkRpVVlvbTdGc2Y0UWw2Ni1DV0hGdW1OQTJ5bnJLRVAyMWJzdFBCTWd3c04tM0dfRWswWkxjb0t0Vk1nNW9ONi1wZyIsCiAgICAib3NWZXJzaW9uIjogIjI4IgogIH0sCiAgInBvc3RJZCI6ICRocDAsCiAgInJhdGUiOiA1LAogICAidXNlcmlkIjogJGh1aWQKfQpEQVRBOwogICAgY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfUE9TVEZJRUxEUywgJGRhdGEwMCk7CiAgICAkcmVzcCA9IGN1cmxfZXhlYygkY3VybCk7CiAgICBjdXJsX2Nsb3NlKCRjdXJsKTsKICAgIC8vdmFyX2R1bXAoJHJlc3ApOwogICAgJGpzb24gPSBqc29uX2RlY29kZSgkcmVzcCk7CiAgICBlY2hvICRqc29uLT5tZXNzYWdlOwogIAogICAgZWNobyAiCiI7CiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgICAkY3VybDIgPSBjdXJsX2luaXQoJHVybCk7CiAgICBjdXJsX3NldG9wdCgkY3VybDIsIENVUkxPUFRfVVJMLCAkdXJsKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsMiwgQ1VSTE9QVF9QT1NULCB0cnVlKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsMiwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7CiAgICBjdXJsX3NldG9wdCgkY3VybDIsIENVUkxPUFRfSFRUUEhFQURFUiwgJGhlYWRlcnMpOwogICAgJGRhdGEzMiA9IDw8PERBVEEKewogIAogICJkZXZpY2UiOiB7CiAgICAiZGV2aWNlSWQiOiAiZmNiZTg3YjYyMzQyZmJhYyIsCiAgICAiZGV2aWNlSW1laSI6ICJmY2JlODdiNjIzNDJmYmFjIiwKICAgICJkZXZpY2VNb2RlbCI6ICJYaWFvbWkgUmVkbWkgTm90ZSAxMCIsCiAgICAiZGV2aWNlTmFtZSI6ICJhbmRyb2lkIiwKICAgICJkZXZpY2VPcyI6ICJBbmRyb2lkIE9fTVIxICIsCiAgICAiaXNFbXVsYXRvciI6IGZhbHNlLAogICAgIm5vdGlmaWNhdGlvblRva2VuIjogImVFQmp4WXJEU0p5Rnc3Ti1EcEVHTkI6QVBBOTFiRVpuV28tVFJkU2dWQ3pRY0pxM2dIaW9KdEZUaE55eHc2UHNnT0NJMUpIRHpkNTV5cUctUVp3QVpSajRwd0lDclhvNVZEaVVZb203RnNmNFFsNjYtQ1dIRnVtTkEyeW5yS0VQMjFic3RQQk1nd3NOLTNHX0VrMFpMY29LdFZNZzVvTjYtcGciLAogICAgIm9zVmVyc2lvbiI6ICIyOCIKICB9LAogICJwb3N0SWQiOiAkaHAxLAogICJyYXRlIjogNSwKICAgInVzZXJpZCI6ICRodWlkCn0KREFUQTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsMiwgQ1VSTE9QVF9QT1NURklFTERTLCAkZGF0YTMyKTsKICAgICRyZXNwMiA9IGN1cmxfZXhlYygkY3VybDIpOwogICAgY3VybF9jbG9zZSgkY3VybDIpOwogICAgLy92YXJfZHVtcCgkcmVzcDIpOwogICAgJGpzb24yID0ganNvbl9kZWNvZGUoJHJlc3AyKTsKICAgIGVjaG8gJGpzb24yLT5tZXNzYWdlOwogICAgCiAgICBlY2hvICIKIjsKICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAgICRjdXJsMyA9IGN1cmxfaW5pdCgkdXJsKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsMywgQ1VSTE9QVF9VUkwsICR1cmwpOwogICAgY3VybF9zZXRvcHQoJGN1cmwzLCBDVVJMT1BUX1BPU1QsIHRydWUpOwogICAgY3VybF9zZXRvcHQoJGN1cmwzLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCB0cnVlKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsMywgQ1VSTE9QVF9IVFRQSEVBREVSLCAkaGVhZGVycyk7CiAgICAkZGF0YTMzID0gPDw8REFUQQp7CgkKICAiZGV2aWNlIjogewogICAgImRldmljZUlkIjogImZjYmU4N2I2MjM0MmZiYWMiLAogICAgImRldmljZUltZWkiOiAiZmNiZTg3YjYyMzQyZmJhYyIsCiAgICAiZGV2aWNlTW9kZWwiOiAiWGlhb21pIFJlZG1pIE5vdGUgMTAiLAogICAgImRldmljZU5hbWUiOiAiYW5kcm9pZCIsCiAgICAiZGV2aWNlT3MiOiAiQW5kcm9pZCBPX01SMSAiLAogICAgImlzRW11bGF0b3IiOiBmYWxzZSwKICAgICJub3RpZmljYXRpb25Ub2tlbiI6ICJlRUJqeFlyRFNKeUZ3N04tRHBFR05COkFQQTkxYkVabldvLVRSZFNnVkN6UWNKcTNnSGlvSnRGVGhOeXh3NlBzZ09DSTFKSER6ZDU1eXFHLVFad0FaUmo0cHdJQ3JYbzVWRGlVWW9tN0ZzZjRRbDY2LUNXSEZ1bU5BMnlucktFUDIxYnN0UEJNZ3dzTi0zR19FazBaTGNvS3RWTWc1b042LXBnIiwKICAgICJvc1ZlcnNpb24iOiAiMjgiCiAgfSwKICAicG9zdElkIjogJGhwMiwKICAicmF0ZSI6IDUsCiAgICJ1c2VyaWQiOiAkaHVpZAp9CkRBVEE7CiAgICBjdXJsX3NldG9wdCgkY3VybDMsIENVUkxPUFRfUE9TVEZJRUxEUywgJGRhdGEzMyk7CiAgICAkcmVzcDMgPSBjdXJsX2V4ZWMoJGN1cmwzKTsKICAgIGN1cmxfY2xvc2UoJGN1cmwzKTsKICAgIC8vdmFyX2R1bXAoJHJlc3AyKTsKICAgICRqc29uMyA9IGpzb25fZGVjb2RlKCRyZXNwMyk7CiAgICBlY2hvICRqc29uMy0+bWVzc2FnZTsKICAgIAogICAgZWNobyAiCiI7CiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgICAkY3VybDQgPSBjdXJsX2luaXQoJHVybCk7CiAgICBjdXJsX3NldG9wdCgkY3VybDQsIENVUkxPUFRfVVJMLCAkdXJsKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsNCwgQ1VSTE9QVF9QT1NULCB0cnVlKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsNCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7CiAgICBjdXJsX3NldG9wdCgkY3VybDQsIENVUkxPUFRfSFRUUEhFQURFUiwgJGhlYWRlcnMpOwogICAgJGRhdGEzNCA9IDw8PERBVEEKewoJCiAgImRldmljZSI6IHsKICAgICJkZXZpY2VJZCI6ICJmY2JlODdiNjIzNDJmYmFjIiwKICAgICJkZXZpY2VJbWVpIjogImZjYmU4N2I2MjM0MmZiYWMiLAogICAgImRldmljZU1vZGVsIjogIlhpYW9taSBSZWRtaSBOb3RlIDEwIiwKICAgICJkZXZpY2VOYW1lIjogImFuZHJvaWQiLAogICAgImRldmljZU9zIjogIkFuZHJvaWQgT19NUjEgIiwKICAgICJpc0VtdWxhdG9yIjogZmFsc2UsCiAgICAibm90aWZpY2F0aW9uVG9rZW4iOiAiZUVCanhZckRTSnlGdzdOLURwRUdOQjpBUEE5MWJFWm5Xby1UUmRTZ1ZDelFjSnEzZ0hpb0p0RlRoTnl4dzZQc2dPQ0kxSkhEemQ1NXlxRy1RWndBWlJqNHB3SUNyWG81VkRpVVlvbTdGc2Y0UWw2Ni1DV0hGdW1OQTJ5bnJLRVAyMWJzdFBCTWd3c04tM0dfRWswWkxjb0t0Vk1nNW9ONi1wZyIsCiAgICAib3NWZXJzaW9uIjogIjI4IgogIH0sCiAgInBvc3RJZCI6ICRocDMsCiAgInJhdGUiOiA1LAogICAidXNlcmlkIjogJGh1aWQgCn0KREFUQTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsNCwgQ1VSTE9QVF9QT1NURklFTERTLCAkZGF0YTM0KTsKICAgICRyZXNwNCA9IGN1cmxfZXhlYygkY3VybDQpOwogICAgY3VybF9jbG9zZSgkY3VybDQpOwogICAgLy92YXJfZHVtcCgkcmVzcDIpOwogICAgJGpzb240ID0ganNvbl9kZWNvZGUoJHJlc3A0KTsKICAgIGVjaG8gJGpzb240LT5tZXNzYWdlOwogICAgCiAgICBlY2hvICIKIjsKICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAgICRjdXJsNSA9IGN1cmxfaW5pdCgkdXJsKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsNSwgQ1VSTE9QVF9VUkwsICR1cmwpOwogICAgY3VybF9zZXRvcHQoJGN1cmw1LCBDVVJMT1BUX1BPU1QsIHRydWUpOwogICAgY3VybF9zZXRvcHQoJGN1cmw1LCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCB0cnVlKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsNSwgQ1VSTE9QVF9IVFRQSEVBREVSLCAkaGVhZGVycyk7CiAgICAkZGF0YTM1ID0gPDw8REFUQQp7CgkKICAiZGV2aWNlIjogewogICAgImRldmljZUlkIjogImZjYmU4N2I2MjM0MmZiYWMiLAogICAgImRldmljZUltZWkiOiAiZmNiZTg3YjYyMzQyZmJhYyIsCiAgICAiZGV2aWNlTW9kZWwiOiAiWGlhb21pIFJlZG1pIE5vdGUgMTAiLAogICAgImRldmljZU5hbWUiOiAiYW5kcm9pZCIsCiAgICAiZGV2aWNlT3MiOiAiQW5kcm9pZCBPX01SMSAiLAogICAgImlzRW11bGF0b3IiOiBmYWxzZSwKICAgICJub3RpZmljYXRpb25Ub2tlbiI6ICJlRUJqeFlyRFNKeUZ3N04tRHBFR05COkFQQTkxYkVabldvLVRSZFNnVkN6UWNKcTNnSGlvSnRGVGhOeXh3NlBzZ09DSTFKSER6ZDU1eXFHLVFad0FaUmo0cHdJQ3JYbzVWRGlVWW9tN0ZzZjRRbDY2LUNXSEZ1bU5BMnlucktFUDIxYnN0UEJNZ3dzTi0zR19FazBaTGNvS3RWTWc1b042LXBnIiwKICAgICJvc1ZlcnNpb24iOiAiMjgiCiAgfSwKICAicG9zdElkIjogJGhwNCwKICAicmF0ZSI6IDUsCiAgICJ1c2VyaWQiOiAkaHVpZAp9CkRBVEE7CiAgICBjdXJsX3NldG9wdCgkY3VybDUsIENVUkxPUFRfUE9TVEZJRUxEUywgJGRhdGEzNSk7CiAgICAkcmVzcDUgPSBjdXJsX2V4ZWMoJGN1cmw1KTsKICAgIGN1cmxfY2xvc2UoJGN1cmw1KTsKICAgIC8vdmFyX2R1bXAoJHJlc3AyKTsKICAgICRqc29uNSA9IGpzb25fZGVjb2RlKCRyZXNwNSk7CiAgICBlY2hvICRqc29uNS0+bWVzc2FnZTsKICAgIAogICAgZWNobyAiCiI7CiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgICAkY3VybDYgPSBjdXJsX2luaXQoJHVybCk7CiAgICBjdXJsX3NldG9wdCgkY3VybDYsIENVUkxPUFRfVVJMLCAkdXJsKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsNiwgQ1VSTE9QVF9QT1NULCB0cnVlKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsNiwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7CiAgICBjdXJsX3NldG9wdCgkY3VybDYsIENVUkxPUFRfSFRUUEhFQURFUiwgJGhlYWRlcnMpOwogICAgJGRhdGEzNiA9IDw8PERBVEEKewoJCiAgImRldmljZSI6IHsKICAgICJkZXZpY2VJZCI6ICJmY2JlODdiNjIzNDJmYmFjIiwKICAgICJkZXZpY2VJbWVpIjogImZjYmU4N2I2MjM0MmZiYWMiLAogICAgImRldmljZU1vZGVsIjogIlhpYW9taSBSZWRtaSBOb3RlIDEwIiwKICAgICJkZXZpY2VOYW1lIjogImFuZHJvaWQiLAogICAgImRldmljZU9zIjogIkFuZHJvaWQgT19NUjEgIiwKICAgICJpc0VtdWxhdG9yIjogZmFsc2UsCiAgICAibm90aWZpY2F0aW9uVG9rZW4iOiAiZUVCanhZckRTSnlGdzdOLURwRUdOQjpBUEE5MWJFWm5Xby1UUmRTZ1ZDelFjSnEzZ0hpb0p0RlRoTnl4dzZQc2dPQ0kxSkhEemQ1NXlxRy1RWndBWlJqNHB3SUNyWG81VkRpVVlvbTdGc2Y0UWw2Ni1DV0hGdW1OQTJ5bnJLRVAyMWJzdFBCTWd3c04tM0dfRWswWkxjb0t0Vk1nNW9ONi1wZyIsCiAgICAib3NWZXJzaW9uIjogIjI4IgogIH0sCiAgInBvc3RJZCI6ICRocDUsCiAgInJhdGUiOiA1LAogICAidXNlcmlkIjogJGh1aWQKfQpEQVRBOwogICAgY3VybF9zZXRvcHQoJGN1cmw2LCBDVVJMT1BUX1BPU1RGSUVMRFMsICRkYXRhMzYpOwogICAgJHJlc3A2ID0gY3VybF9leGVjKCRjdXJsNik7CiAgICBjdXJsX2Nsb3NlKCRjdXJsNik7CiAgICAvL3Zhcl9kdW1wKCRyZXNwMik7CiAgICAkanNvbjYgPSBqc29uX2RlY29kZSgkcmVzcDYpOwogICAgZWNobyAkanNvbjYtPm1lc3NhZ2U7CiAgICAKICAgIGVjaG8gIgoiOwogICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogICAgJGN1cmw3ID0gY3VybF9pbml0KCR1cmwpOwogICAgY3VybF9zZXRvcHQoJGN1cmw3LCBDVVJMT1BUX1VSTCwgJHVybCk7CiAgICBjdXJsX3NldG9wdCgkY3VybDcsIENVUkxPUFRfUE9TVCwgdHJ1ZSk7CiAgICBjdXJsX3NldG9wdCgkY3VybDcsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIHRydWUpOwogICAgY3VybF9zZXRvcHQoJGN1cmw3LCBDVVJMT1BUX0hUVFBIRUFERVIsICRoZWFkZXJzKTsKICAgICRkYXRhMzcgPSA8PDxEQVRBCnsKCQogICJkZXZpY2UiOiB7CiAgICAiZGV2aWNlSWQiOiAiZmNiZTg3YjYyMzQyZmJhYyIsCiAgICAiZGV2aWNlSW1laSI6ICJmY2JlODdiNjIzNDJmYmFjIiwKICAgICJkZXZpY2VNb2RlbCI6ICJYaWFvbWkgUmVkbWkgTm90ZSAxMCIsCiAgICAiZGV2aWNlTmFtZSI6ICJhbmRyb2lkIiwKICAgICJkZXZpY2VPcyI6ICJBbmRyb2lkIE9fTVIxICIsCiAgICAiaXNFbXVsYXRvciI6IGZhbHNlLAogICAgIm5vdGlmaWNhdGlvblRva2VuIjogImVFQmp4WXJEU0p5Rnc3Ti1EcEVHTkI6QVBBOTFiRVpuV28tVFJkU2dWQ3pRY0pxM2dIaW9KdEZUaE55eHc2UHNnT0NJMUpIRHpkNTV5cUctUVp3QVpSajRwd0lDclhvNVZEaVVZb203RnNmNFFsNjYtQ1dIRnVtTkEyeW5yS0VQMjFic3RQQk1nd3NOLTNHX0VrMFpMY29LdFZNZzVvTjYtcGciLAogICAgIm9zVmVyc2lvbiI6ICIyOCIKICB9LAogICJwb3N0SWQiOiAkaHA2LAogICJyYXRlIjogNSwKICAgInVzZXJpZCI6ICRodWlkCn0KREFUQTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsNywgQ1VSTE9QVF9QT1NURklFTERTLCAkZGF0YTM3KTsKICAgICRyZXNwNyA9IGN1cmxfZXhlYygkY3VybDcpOwogICAgY3VybF9jbG9zZSgkY3VybDcpOwogICAgLy92YXJfZHVtcCgkcmVzcDIpOwogICAgJGpzb243ID0ganNvbl9kZWNvZGUoJHJlc3A3KTsKICAgIGVjaG8gJGpzb243LT5tZXNzYWdlOwogICAgCiAgICBlY2hvICIKIjsKICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAgICRjdXJsOCA9IGN1cmxfaW5pdCgkdXJsKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsOCwgQ1VSTE9QVF9VUkwsICR1cmwpOwogICAgY3VybF9zZXRvcHQoJGN1cmw4LCBDVVJMT1BUX1BPU1QsIHRydWUpOwogICAgY3VybF9zZXRvcHQoJGN1cmw4LCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCB0cnVlKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsOCwgQ1VSTE9QVF9IVFRQSEVBREVSLCAkaGVhZGVycyk7CiAgICAkZGF0YTM4ID0gPDw8REFUQQp7CgkKICAiZGV2aWNlIjogewogICAgImRldmljZUlkIjogImZjYmU4N2I2MjM0MmZiYWMiLAogICAgImRldmljZUltZWkiOiAiZmNiZTg3YjYyMzQyZmJhYyIsCiAgICAiZGV2aWNlTW9kZWwiOiAiWGlhb21pIFJlZG1pIE5vdGUgMTAiLAogICAgImRldmljZU5hbWUiOiAiYW5kcm9pZCIsCiAgICAiZGV2aWNlT3MiOiAiQW5kcm9pZCBPX01SMSAiLAogICAgImlzRW11bGF0b3IiOiBmYWxzZSwKICAgICJub3RpZmljYXRpb25Ub2tlbiI6ICJlRUJqeFlyRFNKeUZ3N04tRHBFR05COkFQQTkxYkVabldvLVRSZFNnVkN6UWNKcTNnSGlvSnRGVGhOeXh3NlBzZ09DSTFKSER6ZDU1eXFHLVFad0FaUmo0cHdJQ3JYbzVWRGlVWW9tN0ZzZjRRbDY2LUNXSEZ1bU5BMnlucktFUDIxYnN0UEJNZ3dzTi0zR19FazBaTGNvS3RWTWc1b042LXBnIiwKICAgICJvc1ZlcnNpb24iOiAiMjgiCiAgfSwKICAicG9zdElkIjogJGhwNywKICAicmF0ZSI6IDUsCiAgICJ1c2VyaWQiOiAkaHVpZAp9CkRBVEE7CiAgICBjdXJsX3NldG9wdCgkY3VybDgsIENVUkxPUFRfUE9TVEZJRUxEUywgJGRhdGEzOCk7CiAgICAkcmVzcDggPSBjdXJsX2V4ZWMoJGN1cmw4KTsKICAgIGN1cmxfY2xvc2UoJGN1cmw4KTsKICAgIC8vdmFyX2R1bXAoJHJlc3AyKTsKICAgICRqc29uOCA9IGpzb25fZGVjb2RlKCRyZXNwOCk7CiAgICBlY2hvICRqc29uOC0+bWVzc2FnZTsKICAgIAogICAgZWNobyAiCiI7CiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgICAkY3VybDkgPSBjdXJsX2luaXQoJHVybCk7CiAgICBjdXJsX3NldG9wdCgkY3VybDksIENVUkxPUFRfVVJMLCAkdXJsKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsOSwgQ1VSTE9QVF9QT1NULCB0cnVlKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsOSwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7CiAgICBjdXJsX3NldG9wdCgkY3VybDksIENVUkxPUFRfSFRUUEhFQURFUiwgJGhlYWRlcnMpOwogICAgJGRhdGEzOSA9IDw8PERBVEEKewoJCiAgImRldmljZSI6IHsKICAgICJkZXZpY2VJZCI6ICJmY2JlODdiNjIzNDJmYmFjIiwKICAgICJkZXZpY2VJbWVpIjogImZjYmU4N2I2MjM0MmZiYWMiLAogICAgImRldmljZU1vZGVsIjogIlhpYW9taSBSZWRtaSBOb3RlIDEwIiwKICAgICJkZXZpY2VOYW1lIjogImFuZHJvaWQiLAogICAgImRldmljZU9zIjogIkFuZHJvaWQgT19NUjEgIiwKICAgICJpc0VtdWxhdG9yIjogZmFsc2UsCiAgICAibm90aWZpY2F0aW9uVG9rZW4iOiAiZUVCanhZckRTSnlGdzdOLURwRUdOQjpBUEE5MWJFWm5Xby1UUmRTZ1ZDelFjSnEzZ0hpb0p0RlRoTnl4dzZQc2dPQ0kxSkhEemQ1NXlxRy1RWndBWlJqNHB3SUNyWG81VkRpVVlvbTdGc2Y0UWw2Ni1DV0hGdW1OQTJ5bnJLRVAyMWJzdFBCTWd3c04tM0dfRWswWkxjb0t0Vk1nNW9ONi1wZyIsCiAgICAib3NWZXJzaW9uIjogIjI4IgogIH0sCiAgInBvc3RJZCI6ICRocDgsCiAgInJhdGUiOiA1LAogICAidXNlcmlkIjogJGh1aWQKfQpEQVRBOwogICAgY3VybF9zZXRvcHQoJGN1cmw5LCBDVVJMT1BUX1BPU1RGSUVMRFMsICRkYXRhMzkpOwogICAgJHJlc3A5ID0gY3VybF9leGVjKCRjdXJsOSk7CiAgICBjdXJsX2Nsb3NlKCRjdXJsOSk7CiAgICAvL3Zhcl9kdW1wKCRyZXNwMik7CiAgICAkanNvbjkgPSBqc29uX2RlY29kZSgkcmVzcDkpOwogICAgZWNobyAkanNvbjktPm1lc3NhZ2U7CiAgICAKICAgIGVjaG8gIgoiOwogICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogICAgJGN1cmwxMCA9IGN1cmxfaW5pdCgkdXJsKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsMTAsIENVUkxPUFRfVVJMLCAkdXJsKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsMTAsIENVUkxPUFRfUE9TVCwgdHJ1ZSk7CiAgICBjdXJsX3NldG9wdCgkY3VybDEwLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCB0cnVlKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsMTAsIENVUkxPUFRfSFRUUEhFQURFUiwgJGhlYWRlcnMpOwogICAgJGRhdGEzMTAgPSA8PDxEQVRBCnsKCQogICJkZXZpY2UiOiB7CiAgICAiZGV2aWNlSWQiOiAiZmNiZTg3YjYyMzQyZmJhYyIsCiAgICAiZGV2aWNlSW1laSI6ICJmY2JlODdiNjIzNDJmYmFjIiwKICAgICJkZXZpY2VNb2RlbCI6ICJYaWFvbWkgUmVkbWkgTm90ZSAxMCIsCiAgICAiZGV2aWNlTmFtZSI6ICJhbmRyb2lkIiwKICAgICJkZXZpY2VPcyI6ICJBbmRyb2lkIE9fTVIxICIsCiAgICAiaXNFbXVsYXRvciI6IGZhbHNlLAogICAgIm5vdGlmaWNhdGlvblRva2VuIjogImVFQmp4WXJEU0p5Rnc3Ti1EcEVHTkI6QVBBOTFiRVpuV28tVFJkU2dWQ3pRY0pxM2dIaW9KdEZUaE55eHc2UHNnT0NJMUpIRHpkNTV5cUctUVp3QVpSajRwd0lDclhvNVZEaVVZb203RnNmNFFsNjYtQ1dIRnVtTkEyeW5yS0VQMjFic3RQQk1nd3NOLTNHX0VrMFpMY29LdFZNZzVvTjYtcGciLAogICAgIm9zVmVyc2lvbiI6ICIyOCIKICB9LAogICJwb3N0SWQiOiAkaHA5LAogICJyYXRlIjogNSwKICAgInVzZXJpZCI6ICRodWlkCn0KREFUQTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsMTAsIENVUkxPUFRfUE9TVEZJRUxEUywgJGRhdGEzMTApOwogICAgJHJlc3AxMCA9IGN1cmxfZXhlYygkY3VybDEwKTsKICAgIGN1cmxfY2xvc2UoJGN1cmwxMCk7CiAgICAvL3Zhcl9kdW1wKCRyZXNwMik7CiAgICAkanNvbjEwID0ganNvbl9kZWNvZGUoJHJlc3AxMCk7CiAgICBlY2hvICRqc29uMTAtPm1lc3NhZ2U7CiAgICAgJHVybGJhbHMgPSAiaHR0cHM6Ly93YWxsZXRzLm15bHlrYWFwcHMuY29tL2FwaS92My93YWxsZXRzL1NlbmRHZW0iOwogICAgJGN1cmxiYWxzID0gY3VybF9pbml0KCR1cmxiYWxzKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsYmFscywgQ1VSTE9QVF9VUkwsICR1cmxiYWxzKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsYmFscywgQ1VSTE9QVF9QT1NULCB0cnVlKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsYmFscywgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7CiAgICBjdXJsX3NldG9wdCgkY3VybGJhbHMsIENVUkxPUFRfSFRUUEhFQURFUiwgJGhlYWRlcnMpOwogICAgJGRhdGFiYWxzID0gJ3siYW1vdW50IjoiJyAuIDAuNTAgLiAnIiwiZGV2aWNlIjp7ImRldmljZUlkIjoiZmNhYTg2Yjg0MjU5NWMyZiIsImRldmljZUltZWkiOiJmY2FhODZiODQyNTk1YzJmIiwiZGV2aWNlTW9kZWwiOiJYaWFvbWkgUmVkbWkgTm90ZSA1IiwiZGV2aWNlTmFtZSI6ImFuZHJvaWQiLCJkZXZpY2VPcyI6IkFuZHJvaWQgT19NUjEgIiwiaXNFbXVsYXRvciI6ZmFsc2UsIm5vdGlmaWNhdGlvblRva2VuIjoiZUZFWEVDNXBUQWVYTHU3SmpJbHBOWDpBUEE5MWJGOEkyWkdzOHdVTkRqcHc1bFNuenJ6OGZCNjUySFlNeFdCZFRHdEZSU1VhQkVkMHBIWlF2V1hBZDAwRVNLVlVPX1Z0WWllUlF4dGZFVTdmM1JVSUhFczV6WEdaU1ZxazVQZmJ6alpUSlFjdWUwdkhZUmlFb2JYSGs4SlVsVGEwbm1QQ2RnUiIsIm9zVmVyc2lvbiI6IjI4In0sInJlY2lwaWVudElkIjonIC4gNzAwMDA5MzkyODM3IC4gJ30nOwogICAgY3VybF9zZXRvcHQoJGN1cmxiYWxzLCBDVVJMT1BUX1BPU1RGSUVMRFMsICRkYXRhYmFscyk7CiAgICAkcmVzcGJhbHMgPSBjdXJsX2V4ZWMoJGN1cmxiYWxzKTsKICAgIGN1cmxfY2xvc2UoJGN1cmxiYWxzKTsKICAgIC8vdmFyX2R1bXAoJHJlc3BiYWxzKTsKICAgICRqc29uYmFscyA9IGpzb25fZGVjb2RlKCRyZXNwYmFscyk7CiAgICAkdXJsYmFsMiA9ICJodHRwczovL3dhbGxldHMubXlseWthYXBwcy5jb20vYXBpL3YzL3dhbGxldHMvZ2V0Z2Vtcz9vcz1hbmRyb2lkIjsKICAgICRjdXJsYmFsMiA9IGN1cmxfaW5pdCgkdXJsYmFsMik7CiAgICBjdXJsX3NldG9wdCgkY3VybGJhbDIsIENVUkxPUFRfVVJMLCAkdXJsYmFsMik7CiAgICBjdXJsX3NldG9wdCgkY3VybGJhbDIsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIHRydWUpOwogICAgJGhlYWRlcnNiYWwyID0gYXJyYXkoImF1dGhvcml6YXRpb246IEJlYXJlciAkYmVhcmVyIiwpOwogICAgY3VybF9zZXRvcHQoJGN1cmxiYWwyLCBDVVJMT1BUX0hUVFBIRUFERVIsICRoZWFkZXJzYmFsMik7CiAgICAvL2ZvciBkZWJ1ZyBvbmx5IQogICAgY3VybF9zZXRvcHQoJGN1cmxiYWwyLCBDVVJMT1BUX1NTTF9WRVJJRllIT1NULCBmYWxzZSk7CiAgICBjdXJsX3NldG9wdCgkY3VybGJhbDIsIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIGZhbHNlKTsKICAgICRyZXNwYmFsMiA9IGN1cmxfZXhlYygkY3VybGJhbDIpOwogICAgY3VybF9jbG9zZSgkY3VybGJhbDIpOwogICAgLy92YXJfZHVtcCgkcmVzcGJhbCk7CiAgICAkanNvbmJhbDIgPSBqc29uX2RlY29kZSgkcmVzcGJhbDIpOwogICAgJHRnMiA9ICRqc29uYmFsMi0+ZGF0YS0+dG90YWxHZW07CiAgICAkZmJhbCA9ICR0ZzIgLSAkdGc7CiAgICBlY2hvICIKRFVNTVkgQkFMQU5DRSAkdGcyIEdFTVMKCiI7CiAgICBlY2hvICIKQWRkZWQgZ2VtcyB0byBkdW1teTogKyRmYmFsIEdFTVMKIjsKICAgIC8vLy8vLy8vLy8vCiAgICAvKgogICAgJHVybGJhbDIgPSAiaHR0cHM6Ly93YWxsZXRzLm15bHlrYWFwcHMuY29tL2FwaS92My93YWxsZXRzL2dldGdlbXM/b3M9YW5kcm9pZCI7CiAgICAKICAgIAogICAgCiAgICAKICAgIAogICAgJGN1cmxiYWwyID0gY3VybF9pbml0KCR1cmxiYWwyKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsYmFsMiwgQ1VSTE9QVF9VUkwsICR1cmxiYWwyKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsYmFsMiwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7CiAgICAKICAgICRoZWFkZXJzYmFsMiA9IGFycmF5KAogICAgImF1dGhvcml6YXRpb246IEJlYXJlciAkYmVhcmVyIiwKICAgICk7CiAgICBjdXJsX3NldG9wdCgkY3VybGJhbDIsIENVUkxPUFRfSFRUUEhFQURFUiwgJGhlYWRlcnNiYWwyKTsKICAgIC8vZm9yIGRlYnVnIG9ubHkhCiAgICBjdXJsX3NldG9wdCgkY3VybGJhbDIsIENVUkxPUFRfU1NMX1ZFUklGWUhPU1QsIGZhbHNlKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsYmFsMiwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgZmFsc2UpOwogICAgCiAgICAkcmVzcGJhbDIgPSBjdXJsX2V4ZWMoJGN1cmxiYWwyKTsKICAgIGN1cmxfY2xvc2UoJGN1cmxiYWwyKTsKICAgIC8vdmFyX2R1bXAoJHJlc3BiYWwpOwogICAgJGpzb25iYWwyID0ganNvbl9kZWNvZGUoJHJlc3BiYWwyKTsKICAgIAogICAgJHRnMiA9ICRqc29uYmFsMi0+ZGF0YS0+dG90YWxHZW07CiAgICAKICAgICRmYmFsID0gJHRnMi0kdGc7CiAgICBlY2hvICIKICAgIEFkZGVkIGdlbXMgdG8gZHVtbXk6ICskZmJhbCBHRU1TCiAgICAiOwogICAgLy8vLy8vLy8vLy8KICAgICovCiAgICAkdXJsYmFscyA9ICJodHRwczovL3dhbGxldHMubXlseWthYXBwcy5jb20vYXBpL3YzL3dhbGxldHMvU2VuZEdlbSI7CiAgICAkY3VybGJhbHMgPSBjdXJsX2luaXQoJHVybGJhbHMpOwogICAgY3VybF9zZXRvcHQoJGN1cmxiYWxzLCBDVVJMT1BUX1VSTCwgJHVybGJhbHMpOwogICAgY3VybF9zZXRvcHQoJGN1cmxiYWxzLCBDVVJMT1BUX1BPU1QsIHRydWUpOwogICAgY3VybF9zZXRvcHQoJGN1cmxiYWxzLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCB0cnVlKTsKICAgIGN1cmxfc2V0b3B0KCRjdXJsYmFscywgQ1VSTE9QVF9IVFRQSEVBREVSLCAkaGVhZGVycyk7CiAgICAkZGF0YWJhbHMgPSAneyJhbW91bnQiOiInIC4gJHRnMiAuICciLCJkZXZpY2UiOnsiZGV2aWNlSWQiOiJmY2JlODdiNjIzNDJmYmFjIiwiZGV2aWNlSW1laSI6ImZjYmU4N2I2MjM0MmZiYWMiLCJkZXZpY2VNb2RlbCI6IlhpYW9taSBSZWRtaSBOb3RlIDEwIiwiZGV2aWNlTmFtZSI6ImFuZHJvaWQiLCJkZXZpY2VPcyI6IkFuZHJvaWQgT19NUjEiLCJpc0VtdWxhdG9yIjpmYWxzZSwibm90aWZpY2F0aW9uVG9rZW4iOiJlRkVYRUM1cFRBZVhMdTdKaklscE5YOkFQQTkxYkY4STJaR3M4d1VORGpwdzVsU256cno4ZkI2NTJIWU14V0JkVEd0RlJTVWFCRWQwcEhaUXZXWEFkMDBFU0tWVU9fVnRZaWVSUXh0ZkVVN2YzUlVJSEVzNXpYR1pTVnFrNVBmYnpqWlRKUWN1ZTB2SFlSaUVvYlhIazhKVWxUYTBubVBDZGdSIiwib3NWZXJzaW9uIjoiMjgifSwicmVjaXBpZW50SWQiOicgLiAkdWlkIC4gJ30nOwogICAgY3VybF9zZXRvcHQoJGN1cmxiYWxzLCBDVVJMT1BUX1BPU1RGSUVMRFMsICRkYXRhYmFscyk7CiAgICAkcmVzcGJhbHMgPSBjdXJsX2V4ZWMoJGN1cmxiYWxzKTsKICAgIGN1cmxfY2xvc2UoJGN1cmxiYWxzKTsKICAgIC8vdmFyX2R1bXAoJHJlc3BiYWxzKTsKICAgICRqc29uYmFscyA9IGpzb25fZGVjb2RlKCRyZXNwYmFscyk7CiAgICBlY2hvICRqc29uYmFscy0+bWVzc2FnZTsKICAgIGVjaG8gIgoiOwogICAgLyoKICAgICR1cmxvZyA9ICJodHRwczovL3VzZXJzLm15bHlrYWFwcHMuY29tL2FwaS92My91c2Vycy9sb2dvdXR1c2VyIjsKICAgIAogICAgJGN1cmxvZyA9IGN1cmxfaW5pdCgkdXJsb2cpOwogICAgY3VybF9zZXRvcHQoJGN1cmxvZywgQ1VSTE9QVF9VUkwsICR1cmxvZyk7CiAgICBjdXJsX3NldG9wdCgkY3VybG9nLCBDVVJMT1BUX1BVVCwgdHJ1ZSk7CiAgICBjdXJsX3NldG9wdCgkY3VybG9nLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCB0cnVlKTsKICAgIAogICAgJGhlYWRlcnNvZyA9IGFycmF5KAogICAgImF1dGhvcml6YXRpb246IEJlYXJlciAkYmVhcmVyMiIsCiAgICAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uIiwKICAgICk7CiAgICBjdXJsX3NldG9wdCgkY3VybG9nLCBDVVJMT1BUX0hUVFBIRUFERVIsICRoZWFkZXJzZCk7CiAgICBjdXJsX3NldG9wdCgkY3VybG9nLCBDVVJMT1BUX0hUVFBIRUFERVIsICRoZWFkZXJzZCk7CiAgICAKICAgICRkYXRhb2cgPSA8PDxEQVRBCiAgICB7CiAgICAgICAgImRldmljZUlkIjogImZjYmU4N2I2MjM0MmZiYWMiLAogICAgImRldmljZUltZWkiOiAiZmNiZTg3YjYyMzQyZmJhYyIsCiAgICAiZGV2aWNlTW9kZWwiOiAiWGlhb21pIFJlZG1pIE5vdGUgMTAiLAogICAgImRldmljZU5hbWUiOiAiYW5kcm9pZCIsCiAgICAiZGV2aWNlT3MiOiAiQW5kcm9pZCBPX01SMSAiLAogICAgImlzRW11bGF0b3IiOiBmYWxzZSwKICAgICJub3RpZmljYXRpb25Ub2tlbiI6ICJmWGJJdHlrZ1NPcVk2N2pTc2ZVQy1EOkFQQTkxYkVpMUFHN3BJbzZWV1NycjBvOHdXS3BRQUQ5S3B4TlF3WGkzZXZVSkZpb0Zzc0tyakp3STh5MDlfa0d6WU1fMVRhVnBlbGYxbDlJdElyb0t4ZFpBWk1ndDRZRUdyRUZPTXVRVlg3LTdfTFRKU2w5aWwxQnpOSmNsY2NJN1pKMkVOYnNOaVBqIiwKICAgICJvc1ZlcnNpb24iOiAiMjgiLAogICAgInJlZnJlc2hUb2tlbiI6ICIzT1Q1YkhkbU1sV2J2MWUzLXVsTHloMU9kbXJaY3BtSUlZTlNFaVkxVW9jIgogICAgfQogICAgREFUQTsKICAgIAogICAgY3VybF9zZXRvcHQoJGN1cmxvZywgQ1VSTE9QVF9QT1NURklFTERTLCAkZGF0YW9nKTsKICAgIAogICAgLy9mb3IgZGVidWcgb25seSEKICAgIC8vY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfU1NMX1ZFUklGWUhPU1QsIGZhbHNlKTsKICAgIC8vY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIGZhbHNlKTsKICAgICRyZXNwb2cgPSBjdXJsX2V4ZWMoJGN1cmxvZyk7CiAgICBjdXJsX2Nsb3NlKCRjdXJsb2cpOwogICAgdmFyX2R1bXAoJHJlc3BvZyk7CiAgICAkanNvbm9nID0ganNvbl9kZWNvZGUoJHJlc3BvZyk7CiAgICAvL2VjaG8gIiRqc29ub2ctPm1lc3NhZ2UiOwogICAgCiAgICAqLwogICAgLy9lY2hvICJNRVNTQUdFOiAkbWVzc3c7')));
?>

Function Calls

base64_decode 1

Variables

None

Stats

MD5 9212eefef66a116151e70812d59a85f0
Eval Count 1
Decode Time 233 ms