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 $_F=__FILE__;$_C816270277='Pz48P2dkZwp4Q0dUV3hDKCIuLi9XNVlfRkN4T0N4LmdkZyIpOwp4Q0dUV..
Decoded Output download
?><?php
require("../inc_server.php");
require("../class/class_order.php");
require("../class/class_customer.php");
page::$o->check("sale-print-invoice");
if(page::$o->status == "Y"){
$order_rowid = get_num("rowid",0);
customer::$o = new customer_; //use to format customer name in order
order::$o = new order_($order_rowid);
$sale_list = order::$o->get_sale_list("weight", "DESC");// ORDER BY WEIGHT DESC
$pay_list = order::$o->get_pay_list();
//--- PAPER SIZE
$paper = "A4";
if($paper=="A4"){
$page_size = "A4";
$page_product = "17";
$string_length = 38;
}else if($paper=="CUSTOM9X5.5"){
$page_size = array(229, 140);
$page_product = "3";
$string_length = 10;
}
//---
/*
//FOR TESTING
for($i=0;$i<=22;$i++){
$sale_list[$i]["product_name"] = " Cockneys VS Zombies 2012 ";
$sale_list[$i]["barcode"] = $i.".8850123254000001414552";
$sale_list[$i]["price"] = 15;
$sale_list[$i]["rowid"] = $i;
$sale_list[$i]["unit_count_title"] = " 4 x 8";
$sale_list[$i]["product_rowid"] = 2;
$sale_list[$i]["qty"] = 1;
$sale_list[$i]["cost"] = 0;
$sale_list[$i]["discount_amount"] = 0;
$sale_list[$i]["total"] = "15";
$sale_list[$i]["qty_text"] = "1";
$sale_list[$i]["cost_text"] = "$0.00";
$sale_list[$i]["discount_amount_text"] = "$0.00";
$sale_list[$i]["price_text"] = "$15.00";
$sale_list[$i]["total_text"] = "$15.00";
}
// END FOR TESTING
*/
//--- USE STORE PRIMARY LANGUAGE -------
$money_word = "";
if(store::$o->primary_language == "thai"){
require("../language/lang_thai.php");
$money_word = (store::$o->inv_show_money_word == "Y") ? "(".money2word_thai(order::$o->grand_total).")" : "-";
}else{
require("../language/lang_eng.php");
$money_word = (store::$o->inv_show_money_word == "Y") ? "(".money2word_eng(order::$o->grand_total).")" : "-";
}
//---
//--- LOGO
$root_path = $_SERVER['DOCUMENT_ROOT'];
$logo = $root_path."/images/invoice_logo.png";
if(isset(store::$o->invoice_logo[0])){
$logo = (file_exists($root_path."/data/".store::$o->invoice_logo)) ? $root_path."/data/".store::$o->invoice_logo : $root_path."/images/invoice_logo.png";
}
//---
//--- HTML & STYLE
$css = "<style>.bl {border-left:1px solid #555555} .bt {border-top:1px solid #555555} .br {border-right:1px solid #555555} .bb {border-bottom:1px solid #555555} .btl {border-top:1px solid #BEBEBE} .sm{font-size:15px;} .md{font-size:16px;} .lg{font-size:18px;} .mat10{border-top:1px solid #555555}</style>";
//---
// HEAD OF INVOICE
$store_info = "<b class=\"md\">".store::$o->name."</b><span class=\"sm\">";
$store_info .= (store::$o->inv_show_address == "Y") ? "<br>".sub(store::$o->address1,0,40) : "";
$store_info .= (store::$o->inv_show_address_ext == "Y") ? "<br>".sub(store::$o->address2,0,40) : "";
$store_info .= (store::$o->inv_show_tel == "Y") ? "<br>".lang::$o["tel"].": ".sub(store::$o->tel,0,25) : "";
$store_info .= (store::$o->inv_show_mobile == "Y") ? "<br>".lang::$o["tel_mobile"].": ".sub(store::$o->mobile,0,25) : "";
$store_info .= (store::$o->inv_show_fax == "Y") ? "<br>".lang::$o["fax"].": ".sub(store::$o->fax,0,30) : "";
$store_info .= (store::$o->inv_show_email == "Y") ? "<br>".lang::$o["email"].": ".sub(store::$o->email,0,30) : "";
$store_info .= (store::$o->inv_show_tax_number == "Y") ? "<br>".lang::$o["tax_number"].": ".sub(store::$o->tax_number,0,25) : "";
$store_info .= "</span>";
//-----------------------------------
// sub_header1
//-----------------------------------
//-----
$dynamic_colmun_width = "45%";
$dynamic_colspan = "2";
$tax_info1 = "";
$tax_info2 = "";
if(store::$o->inv_show_tax=="Y"){
$dynamic_colmun_width = "30%";
$dynamic_colspan = "3";
$tax_info1 = "<td width=\"30%\" class=\"bt bl br sm\">".lang::$o["tax"]."</td>";
$tax_info2 = "<td class=\"bl bb lg br\">".order::$o->tax_text."</td>";
}
//---
$invoice_sub_header1 = "<table width=\"100%\" border=\"0\">
<tr>
<td width=\"10%\" class=\"\"> </td>
<td width=\"".$dynamic_colmun_width."\" class=\"bt bl sm\">".lang::$o["date_time"]."</td>
<td width=\"".$dynamic_colmun_width."\" class=\"bt bl br sm\">".lang::$o["sell"]["total"]."</td>
".$tax_info1."
</tr>
<tr>
<td> </td>
<td class=\"bl bb md\" style=\"font-weight:bold\">".order::$o->created."</td>
<td class=\"bl bb lg br\" style=\"font-weight:bold;font-size:18px;\">".order::$o->grand_total_text."</td>
".$tax_info2."
</tr>";
$invoice_sub_header1 .= "<tr><td height=\"30\"> </td><td colspan=\"".$dynamic_colspan."\" class=\" bl br sm\" align=\"right\">".$money_word." </td></tr></table>";
//-----------------------------------
// end sub_header1
//-----------------------------------
$invoice_sub_header2 = "";
if(store::$o->inv_show_paid_info == "Y"){
$debt_amount_text = (order::$o->have_debt=="Y") ? order::$o->debt_amount_text : "-";
$debt_due_date = (order::$o->have_debt=="Y") ? order::$o->debt_due_date : "-";
$invoice_sub_header2 = "<table width=\"100%\" border=\"0\">
<tr>
<td width=\"10%\" class=\"bt\"> </td>
<td width=\"30%\" class=\"bt bl sm\">".lang::$o["invoice"]["already_paid"]."</td>
<td width=\"30%\" class=\"bt bl sm\">".lang::$o["unpaid"]."</td>
<td width=\"30%\" class=\"bl bt br sm\">".lang::$o["invoice"]["due_date"]."</td>
</tr>
<tr>
<td> </td>
<td class=\"bl bb md\" style=\"font-weight:bold\">".order::$o->total_pay_text."</td>
<td class=\"bl bb md\" style=\"font-weight:bold\">".$debt_amount_text."</td>
<td class=\"bl br bb md\" style=\"font-weight:bold\">".$debt_due_date."</td>
</tr></table>";
}
$billing_address = "-";
/*
old version compatible
if no sale_stats_billing record use shipping address to billing address
*/
$arr_billing_address = array("fname"=>"", "lname"=>"", "address1"=>"", "address2"=> "", "address3"=>"", "tel"=>"", "email"=>"", "vat_number"=>"", "remark"=>"");
if(order::$o->sale_stats_billing_rowid > 0){
$billing_address = store::$o->shipping_customer_prefix.format_customer_fullname(order::$o->billing_fname, order::$o->billing_lname, "")."<br>";
$billing_address .= (isset(order::$o->billing_address1[0])) ? order::$o->billing_address1."<br>" : "";
$billing_address .= (isset(order::$o->billing_address2[0])) ? order::$o->billing_address2."<br>" : "";
$billing_address .= (isset(order::$o->billing_address3[0])) ? order::$o->billing_address3."<br>" : "";
$billing_address .= (isset(order::$o->billing_tel[0])) ? lang::$o["tel"].": ".order::$o->billing_tel."<br>" : "";
$billing_address .= (isset(order::$o->billing_email[0])) ? lang::$o["email"].": ".order::$o->billing_email."<br>" : "";
$billing_address .= (isset(order::$o->billing_vat_number[0])) ? lang::$o["tax_number"].": ".order::$o->billing_vat_number : "";
}else{
//check is shipping?
if(order::$o->shipping){
$billing_address = store::$o->shipping_customer_prefix.format_customer_fullname(order::$o->shipping_fname, order::$o->shipping_lname, "")."<br>";
$billing_address .= (isset(order::$o->shipping_address1[0])) ? order::$o->shipping_address1."<br>" : "";
$billing_address .= (isset(order::$o->shipping_address2[0])) ? order::$o->shipping_address2."<br>" : "";
$billing_address .= (isset(order::$o->shipping_address3[0])) ? order::$o->shipping_address3."<br>" : "";
$billing_address .= (isset(order::$o->shipping_tel[0])) ? lang::$o["tel"].": ".order::$o->shipping_tel."<br>" : "";
$billing_address .= (isset(order::$o->shipping_email[0])) ? lang::$o["email"].": ".order::$o->shipping_email : "";
}
}
//-------------------
$arr_param = array();
$arr_param["logo"] = $logo;
$arr_param["store_info"] = $store_info;
$arr_param["order_id_text"] = order::$o->id_text;
$arr_param["invoice_title"] = store::$o->invoice_title;
$arr_param["invoice_sub_header1"] = $invoice_sub_header1;
$arr_param["billing_address"] = $billing_address;
$arr_param["invoice_sub_header2"] = $invoice_sub_header2;
function get_invoice_header($arr_param){
return "<table width=\"100%\" border=\"0\"><tr><td rowspan=\"2\" width=\"20%\" align=\"left\"><div style=\"font-size:9px;\"> </div><img src=\"".$arr_param["logo"]."\" width=\"128\" height=\"128\" /></td><td rowspan=\"2\" width=\"30%\">".$arr_param["store_info"]."</td><td height=\"75\" width=\"50%\" style=\"text-align:right;\"><span style=\"font-size:20px;font-weight:bold;\"># ".$arr_param["order_id_text"]."<br></span><span style=\"font-size:28px;font-weight:bold\">".$arr_param["invoice_title"]."</span><br></td></tr>
<tr><td style=\"text-align:center;\">".$arr_param["invoice_sub_header1"]."</td></tr>
<tr><td colspan=\"2\" class=\"bt\" style=\"font-size:15px;\">".$arr_param["billing_address"]."</td><td class=\"bt\" style=\"text-align:center\">".$arr_param["invoice_sub_header2"]."</td></tr></table>";
}
// INVOICE PRODUCT
$invoice_product_table_header = "<br><br><table width=\"100%\" border=\"0\"><tr style=\"color:black;font-size:16px;font-weight:bold;\"><td width=\"15%\" style=\"font-weight:bold;\" class=\"bb\">".lang::$o["barcode"]."</td><td width=\"35%\" style=\"font-weight:bold;\" class=\"bb\">".lang::$o["product"]."</td><td width=\"10%\" style=\"text-align:center;font-weight:bold;\" class=\"bb\">".lang::$o["sell"]["qty"]."</td><td width=\"10%\" style=\"font-weight:bold;\" class=\"bb\">".lang::$o["unit_count"]."</td><td width=\"10%\" style=\"text-align:right;font-weight:bold;\" class=\"bb\">".lang::$o["price"]."</td><td width=\"10%\" style=\"text-align:right;font-weight:bold;\" class=\"bb\">".lang::$o["sell"]["discount"]."</td><td width=\"10%\" style=\"text-align:right;font-weight:bold;\" class=\"bb\">".lang::$o["sell"]["amount"]."</td></tr>";
$invoice_product_table_footer = "</table>";
//INVOICE FOOTER
//$invoice_footer1 = "<br><table width=\"100%\" border=\"0\"><tr><td width=\"51%\" rowspan=\"2\" style=\"font-size:16px;\">".order::$o->note."</td><td width=\"25%\" style=\"text-align:right\" class=\"bb\">".lang::$o["sell"]["total"].": </td><td width=\"24%\" class=\"bb\" style=\"text-align:right;font-weight:bold;font-size:20px;\">".order::$o->grand_total_text."</td></tr><tr><td width=\"25%\" class=\"bb\" style=\"text-align:right\">".lang::$o["tax"].": </td><td width=\"24%\" class=\"bb\" style=\"text-align:right\">".order::$o->tax_text."</td></tr></table><div align=\"right\">(".$money_word.")</div>";
$invoice_footer2 = "<br><table width=\"100%\" border=\"0\"><tr><td width=\"51%\" rowspan=\"3\" style=\"font-size:16px;\"> </td><td width=\"10%\"> </td><td width=\"27%\" style=\"text-align:right\"> </td><td width=\"12%\" style=\"text-align:right\"> </td></tr> <tr><td width=\"10%\"> </td><td width=\"27%\" style=\"text-align:right\"> </td><td width=\"12%\" style=\"text-align:right\"> </td></tr> <tr><td width=\"10%\"> </td><td width=\"27%\" style=\"text-align:right\"> </td><td width=\"12%\" style=\"text-align:right\"> </td></tr></table>";
$html = "";
for($ix=1;$ix <= store::$o->inv_multiple_page;$ix++){
//--HEADER TITLE FOR EACH SET
if($ix > 1){
if($ix==2){
$arr_param["invoice_title"] = store::$o->inv_invoice_title2;
}else if($ix==3){
$arr_param["invoice_title"] = store::$o->inv_invoice_title3;
}else if($ix==4){
$arr_param["invoice_title"] = store::$o->inv_invoice_title4;
}
$invoice_header = get_invoice_header($arr_param);
$html .= "<br pagebreak=\"true\"/>".$invoice_header.$invoice_product_table_header;
}else{
$html .= $css; //add css for first page
$html .= get_invoice_header($arr_param).$invoice_product_table_header;
}
//--/HEADER TITLE FOR EACH SET
//--- ITEMS ---
$total_item = count($sale_list);
$i = 1;
$item_remain = $total_item;
foreach ($sale_list as $row){
$barcode = dirty($row["barcode"]);
$barcode = sub($barcode,0,15);
$product_name = dirty($row["product_name"]);
$product_name = sub($product_name,0,$string_length);
$unit_count_title = dirty($row["unit_count_title"]);
$unit_count_title = sub($unit_count_title,0,9);
$html .= "<tr style=\"font-size:17px;\"><td class=\"btl\" style=\"height:35px;\">".$barcode."</td><td class=\"btl\">".$product_name."</td><td style=\"text-align:center\" class=\"btl\">".$row["qty"]."</td><td class=\"btl\">".$unit_count_title."</td><td style=\"text-align:right\" class=\"btl\">".$row["price_text"]."</td><td style=\"text-align:right\" class=\"btl\">".$row["discount_amount_text"]."</td><td style=\"text-align:right\" class=\"btl\">".$row["total_text"]."</td></tr>";
$result = $i % $page_product;
if($result == 0){
$html .= $invoice_product_table_footer;
//check is last page
if($item_remain>1){
$html .= "<br pagebreak=\"true\"/>".get_invoice_header($arr_param).$invoice_product_table_header;
}else{
if($item_remain==1){
//$html .= "END";
}
}
$i = 1;
}else{
$i++;
}
//
$item_remain--;
}
if($item_remain == 0 && $result != 0){
$html .= $invoice_product_table_footer;
}
//---
}
//echo $html;
//---------------------------------- PDF -----------------------------------------------
ob_clean();
require_once('../tcpdf/config/lang/eng.php');
require_once('../tcpdf/tcpdf.php');
class MYPDF extends TCPDF {
public $receiver;
public $sender;
public $collector;
public $manager;
public $dateword;
public $money_word;
public $grand_total_text;
//Page header
public function Header() {
}
// Page footer
public function Footer() {
// Set font
$this->SetFont('angsanaupc', '', 13);
$this->SetY(-25);
//$temp = "<div align=\"right\">Total: ".$this->grand_total_text." (".$this->money_word.")</div>";
$temp = "<table border=\"0\"><tr><td width=\"25%\" align=\"center\" style=\"border-top:1px solid black;\">".$this->receiver."</td>";
$temp .= "<td width=\"25%\" align=\"center\" style=\"border-top:1px solid black;\">".$this->sender."</td>";
$temp .= "<td width=\"25%\" align=\"center\" style=\"border-top:1px solid black;\">".$this->collector."</td>";
$temp .= "<td width=\"25%\" align=\"center\" style=\"border-top:1px solid black;\">".$this->manager."</td></tr>";
$temp .= "<tr><td align=\"center\"><br><br>.............................................</td>";
$temp .= "<td align=\"center\"><br><br>.............................................</td>";
$temp .= "<td align=\"center\"><br><br>.............................................</td>";
$temp .= "<td align=\"center\"><br><br>.............................................</td></tr>";
$temp .= "<tr><td align=\"center\"><br>".$this->dateword." .............................................</td>";
$temp .= "<td align=\"center\"><br>".$this->dateword." .............................................</td>";
$temp .= "<td align=\"center\"><br>".$this->dateword." .............................................</td>";
$temp .= "<td align=\"center\"><br>".$this->dateword." .............................................</td></tr></table>";
$this->writeHTML($temp, true, 0, true, true);
}
}
// create new PDF document
//$pdf = new MYPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$pdf = new MYPDF('V', 'mm', $page_size, true, 'UTF-8', false);
$pdf->receiver = lang::$o["receiver"];
$pdf->sender = lang::$o["sender"];
$pdf->collector = lang::$o["collector"];
$pdf->manager = lang::$o["authorized"];
$pdf->dateword = lang::$o["date"];
//$pdf->money_word = $money_word;
//$pdf->grand_total_text = order::$o->grand_total_text;
// set document information
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('POS++');
$pdf->SetTitle('POS++');
$pdf->SetSubject('POS++');
$pdf->SetKeywords('POS++');
// set header and footer fonts
$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
// set default monospaced font
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
//set margins
//$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->SetMargins(5, 5, 5);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
//set auto page breaks
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
//set image scale factor
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
//set some language-dependent strings
$pdf->setLanguageArray($l);
// ---------------------------------------------------------
// set font
$pdf->SetFont('angsanaupc', '', 14);
// add a page
//$pdf->AddPage("V","A4");
$pdf->AddPage("V");
//write output
$pdf->writeHTML($html, true, 0, true, true, "");
//$pdf->writeHTML($html, true, false, false, false, '');
// reset pointer to the last page
$pdf->lastPage();
// ---------------------------------------------------------
//Close and output PDF document
$output_mode = (store::$o->open_pdf_in_browser=="Y") ? "I" : "D";
$pdf->Output('full_receipt_'.order::$o->id_text.'.pdf', $output_mode);
//============================================================+
// END OF FILE
//============================================================+
}else{
echo lang::$o["page_status"][page::$o->status];
}
?>
Did this file decode correctly?
Original Code
<?php $_F=__FILE__;$_C816270277='Pz48P2dkZwp4Q0dUV3hDKCIuLi9XNVlfRkN4T0N4LmdkZyIpOwp4Q0dUV3hDKCIuLi9ZbUhGRi9ZbUhGRl9zeHBDeC5nZGciKTsKeENHVFd4QygiLi4vWW1IRkYvWW1IRkZfWVRGMnNrQ3guZ2RnIik7CmdIekM6OiRzLT5ZZENZNygiRkhtQy1neFc1Mi1XNU9zV1lDIik7CldVKGdIekM6OiRzLT5GMkgyVEYgPT0gInQiKXsKCgkkc3hwQ3hfeHNRV3AgPSB6QzJfNVRrKCJ4c1FXcCIsYSk7CglZVEYyc2tDeDo6JHMgPSA1Q1EgWVRGMnNrQ3hfOyAvL1RGQyAycyBVc3hrSDIgWVRGMnNrQ3ggNUhrQyBXNSBzeHBDeAoJc3hwQ3g6OiRzID0gNUNRIHN4cEN4Xygkc3hwQ3hfeHNRV3ApOwoJJEZIbUNfbVdGMiA9IHN4cEN4Ojokcy0+ekMyX0ZIbUNfbVdGMigiUUNXemQyIiwgIk5uMFMiKTsvLyBMaU5uaSBsdCBNblpYSzYgTm4wUwoJJGdIRF9tV0YyID0gc3hwQ3g6OiRzLT56QzJfZ0hEX21XRjIoKTsKCgkvLy0tLSBqQWpuaSAwWkpuCgkkZ0hnQ3ggPSAiQXkiOwoJV1UoJGdIZ0N4PT0iQXkiKXsKCQkkZ0h6Q19GV2ZDID0gIkF5IjsKCQkkZ0h6Q19neHNwVFkyID0gIjllIjsKCQkkRjJ4VzV6X21DNXoyZCA9IDN1OwoJfUNtRkMgV1UoJGdIZ0N4PT0iU3cwNkw0RXFjLmMiKXsKCQkkZ0h6Q19GV2ZDID0gSHh4SEQoYmJFLCA5eWEpOwoJCSRnSHpDX2d4c3BUWTIgPSAiMyI7CgkJJEYyeFc1el9tQzV6MmQgPSA5YTsKCX0KCS8vLS0tCgoJLyoKCS8vUkxpIDZuMDZaVlgKCVVzeCgkVz1hOyRXPD1iYjskVysrKXsKCQkkRkhtQ19tV0YyWyRXXVsiZ3hzcFRZMl81SGtDIl0gPSAi4LiE4Lil4Li04Lib4LiI4Liy4LiB4Lir4LiZ4Lix4LiHIFNzWTc1Q0RGIHIwIEpza29XQ0Yg4LmA4Lih4Li34LmI4Lit4Lib4Li1IGJhOWIg4LiB4Lix4Lia4LiJ4Liy4LiB4Lin4Li04LmI4LiH4Lir4LiZ4Li14LiL4Lit4Lih4Lia4Li14LmJ4LiX4Li14LmI4Lil4Li44LmJ4LiZ4LiX4Li14LmI4Liq4Li44LiUIOC5gOC4l+C5iOC4suC4l+C4teC5iOC5gOC4hOC4ouC4oeC4teC4oeC4suC5g+C4meC4m+C4o+C4sOC4p+C4seC4leC4tOC4qOC4suC4quC4leC4o+C5jOC4p+C4h+C4geC4suC4o+C4oOC4suC4nuC4ouC4meC4leC4o+C5jOC5gOC4peC4ouC4geC5h+C4p+C5iOC4suC5hOC4lOC5iSDguKXguLjguYnguJnguIjguJnguIrguLLguKfguYDguJnguYfguJXguJnguLXguYjguYHguIrguKPguYzguKrguJnguLHguYjguJnguYLguIvguYDguIrguLXguKLguKXguYDguKXguKLguJfguLXguYDguJTguLXguKLguKciOwoJCSRGSG1DX21XRjJbJFddWyJvSHhZc3BDIl0gPSAkVy4iLnV1Y2E5YjNiY3lhYWFhYTl5OXljY2IiOwoJCSRGSG1DX21XRjJbJFddWyJneFdZQyJdID0gOWM7CgkJJEZIbUNfbVdGMlskV11bInhzUVdwIl0gPSAkVzsKCQkkRkhtQ19tV0YyWyRXXVsiVDVXMl9Zc1Q1Ml8yVzJtQyJdID0gIuC4guC4p+C4lOC5guC4q+C4peC5g+C4q+C4jeC5iCB5IEIgdSI7CgkJJEZIbUNfbVdGMlskV11bImd4c3BUWTJfeHNRV3AiXSA9IGI7CgkJJEZIbUNfbVdGMlskV11bIkcyRCJdID0gOTsKCQkkRkhtQ19tV0YyWyRXXVsiWXNGMiJdID0gYTsKCQkkRkhtQ19tV0YyWyRXXVsicFdGWXNUNTJfSGtzVDUyIl0gPSBhOwoJCSRGSG1DX21XRjJbJFddWyIyczJIbSJdID0gIjljIjsKCQkkRkhtQ19tV0YyWyRXXVsiRzJEXzJDQjIiXSA9ICI5IjsKCQkkRkhtQ19tV0YyWyRXXVsiWXNGMl8yQ0IyIl0gPSAiJGEuYWEiOwoJCSRGSG1DX21XRjJbJFddWyJwV0ZZc1Q1Ml9Ia3NUNTJfMkNCMiJdID0gIiRhLmFhIjsKCQkkRkhtQ19tV0YyWyRXXVsiZ3hXWUNfMkNCMiJdID0gIiQ5Yy5hYSI7CgkJJEZIbUNfbVdGMlskV11bIjJzMkhtXzJDQjIiXSA9ICIkOWMuYWEiOwoJfQoJLy8gblZOIFJMaSA2bjA2WlZYCgkqLwoKCS8vLS0tIHcwbiAwNkxpbiBqaVo0QWl0IHZBVlh3QVhuIC0tLS0tLS0KCSRrczVDRF9Rc3hwID0gIiI7CglXVShGMnN4Qzo6JHMtPmd4V2tIeERfbUg1elRIekMgPT0gIjJkSFciKXsKCQl4Q0dUV3hDKCIuLi9tSDV6VEh6Qy9tSDV6XzJkSFcuZ2RnIik7CgkJJGtzNUNEX1FzeHAgPSAoRjJzeEM6OiRzLT5XNU9fRmRzUV9rczVDRF9Rc3hwID09ICJ0IikgPyAiKCIua3M1Q0RiUXN4cF8yZEhXKHN4cEN4Ojokcy0+enhINXBfMnMySG0pLiIpIiA6ICItIjsKCX1DbUZDewoJCXhDR1RXeEMoIi4uL21INXpUSHpDL21INXpfQzV6LmdkZyIpOwoJCSRrczVDRF9Rc3hwID0gKEYyc3hDOjokcy0+VzVPX0Zkc1Ffa3M1Q0RfUXN4cCA9PSAidCIpID8gIigiLmtzNUNEYlFzeHBfQzV6KHN4cEN4Ojokcy0+enhINXBfMnMySG0pLiIpIiA6ICItIjsKCX0KCS8vLS0tCgoJLy8tLS0gdkxYTAoJJHhzczJfZ0gyZCA9ICRfMG5pcm5pWydOTFN3NG5WNl9pTEw2J107CgkkbXN6cyA9ICR4c3MyX2dIMmQuIi9Xa0h6Q0YvVzVPc1dZQ19tc3pzLmc1eiI7CglXVShXRkZDMihGMnN4Qzo6JHMtPlc1T3NXWUNfbXN6c1thXSkpewoJCSRtc3pzID0gKFVXbUNfQ0JXRjJGKCR4c3MyX2dIMmQuIi9wSDJILyIuRjJzeEM6OiRzLT5XNU9zV1lDX21zenMpKSA/ICR4c3MyX2dIMmQuIi9wSDJILyIuRjJzeEM6OiRzLT5XNU9zV1lDX21zenMgOiAkeHNzMl9nSDJkLiIvV2tIekNGL1c1T3NXWUNfbXN6cy5nNXoiOwoJfQoKCS8vLS0tCgoJLy8tLS0gSzY0diAmIDA2dHZuCgkkWUZGID0gIjxGMkRtQz4ub20ge29zeHBDeC1tQ1UyOjlnQiBGc21XcCAjY2NjY2NjfSAubzIge29zeHBDeC0yc2c6OWdCIEZzbVdwICNjY2NjY2N9IC5veCB7b3N4cEN4LXhXemQyOjlnQiBGc21XcCAjY2NjY2NjfSAub28ge29zeHBDeC1vczIyc2s6OWdCIEZzbVdwICNjY2NjY2N9IC5vMm0ge29zeHBDeC0yc2c6OWdCIEZzbVdwICNsbmxubG59IC5Ga3tVczUyLUZXZkM6OWNnQjt9IC5rcHtVczUyLUZXZkM6OThnQjt9IC5tentVczUyLUZXZkM6OXVnQjt9IC5rSDI5YXtvc3hwQ3gtMnNnOjlnQiBGc21XcCAjY2NjY2NjfTwvRjJEbUM+IjsKCS8vLS0tCgoKCgkvLyBLbkFOIExSIFpWckxaU24KCSRGMnN4Q19XNVVzID0gIjxvIFltSEZGPVwia3BcIj4iLkYyc3hDOjokcy0+NUhrQy4iPC9vPjxGZ0g1IFltSEZGPVwiRmtcIj4iOwoJJEYyc3hDX1c1VXMgLj0gKEYyc3hDOjokcy0+VzVPX0Zkc1FfSHBweENGRiA9PSAidCIpID8gIjxveD4iLkZUbyhGMnN4Qzo6JHMtPkhwcHhDRkY5LGEseWEpIDogIiI7CgkkRjJzeENfVzVVcyAuPSAoRjJzeEM6OiRzLT5XNU9fRmRzUV9IcHB4Q0ZGX0NCMiA9PSAidCIpID8gIjxveD4iLkZUbyhGMnN4Qzo6JHMtPkhwcHhDRkZiLGEseWEpIDogIiI7CgkkRjJzeENfVzVVcyAuPSAoRjJzeEM6OiRzLT5XNU9fRmRzUV8yQ20gPT0gInQiKSA/ICI8b3g+Ii5tSDV6Ojokc1siMkNtIl0uIjomNW9GZzsiLkZUbyhGMnN4Qzo6JHMtPjJDbSxhLGJjKSA6ICIiOwoJJEYyc3hDX1c1VXMgLj0gKEYyc3hDOjokcy0+VzVPX0Zkc1Ffa3NvV21DID09ICJ0IikgPyAiPG94PiIubUg1ejo6JHNbIjJDbV9rc29XbUMiXS4iOiY1b0ZnOyIuRlRvKEYyc3hDOjokcy0+a3NvV21DLGEsYmMpIDogIiI7CgkkRjJzeENfVzVVcyAuPSAoRjJzeEM6OiRzLT5XNU9fRmRzUV9VSEIgPT0gInQiKSA/ICI8b3g+Ii5tSDV6Ojokc1siVUhCIl0uIjomNW9GZzsiLkZUbyhGMnN4Qzo6JHMtPlVIQixhLDNhKSA6ICIiOwoJJEYyc3hDX1c1VXMgLj0gKEYyc3hDOjokcy0+VzVPX0Zkc1FfQ2tIV20gPT0gInQiKSA/ICI8b3g+Ii5tSDV6Ojokc1siQ2tIV20iXS4iOiY1b0ZnOyIuRlRvKEYyc3hDOjokcy0+Q2tIV20sYSwzYSkgOiAiIjsKCSRGMnN4Q19XNVVzIC49IChGMnN4Qzo6JHMtPlc1T19GZHNRXzJIQl81VGtvQ3ggPT0gInQiKSA/ICI8b3g+Ii5tSDV6Ojokc1siMkhCXzVUa29DeCJdLiI6JjVvRmc7Ii5GVG8oRjJzeEM6OiRzLT4ySEJfNVRrb0N4LGEsYmMpIDogIiI7CgkkRjJzeENfVzVVcyAuPSAiPC9GZ0g1PiI7CgoJLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJLy8JRlRvX2RDSHBDeDkKCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgkvLy0tLS0tCgkkcEQ1SGtXWV9Zc21rVDVfUVdwMmQgPSAieWMlIjsKCSRwRDVIa1dZX1lzbUZnSDUgPSAiYiI7CgkkMkhCX1c1VXM5ID0gIiI7CgkkMkhCX1c1VXNiID0gIiI7CglXVShGMnN4Qzo6JHMtPlc1T19GZHNRXzJIQj09InQiKXsKCQkkcEQ1SGtXWV9Zc21rVDVfUVdwMmQgPSAiM2ElIjsKCQkkcEQ1SGtXWV9Zc21GZ0g1ID0gIjMiOwoJCSQySEJfVzVVczkgPSAiPDJwIFFXcDJkPVwiM2ElXCIgWW1IRkY9XCJvMiBvbSBveCBGa1wiPiIubUg1ejo6JHNbIjJIQiJdLiI8LzJwPiI7CgkJJDJIQl9XNVVzYiA9ICI8MnAgWW1IRkY9XCJvbSBvbyBteiBveFwiPiIuc3hwQ3g6OiRzLT4ySEJfMkNCMi4iPC8ycD4iOwoJfQoJLy8tLS0KCgkkVzVPc1dZQ19GVG9fZENIcEN4OSA9ICI8MkhvbUMgUVdwMmQ9XCI5YWElXCIgb3N4cEN4PVwiYVwiPgoJPDJ4PgoJCTwycCBRV3AyZD1cIjlhJVwiIFltSEZGPVwiXCI+JjVvRmc7PC8ycD4KCQk8MnAgUVdwMmQ9XCIiLiRwRDVIa1dZX1lzbWtUNV9RV3AyZC4iXCIgWW1IRkY9XCJvMiBvbSBGa1wiPiIubUg1ejo6JHNbInBIMkNfMldrQyJdLiI8LzJwPgoJCTwycCBRV3AyZD1cIiIuJHBENUhrV1lfWXNta1Q1X1FXcDJkLiJcIiBZbUhGRj1cIm8yIG9tIG94IEZrXCI+Ii5tSDV6Ojokc1siRkNtbSJdWyIyczJIbSJdLiI8LzJwPgoJCSIuJDJIQl9XNVVzOS4iCgk8LzJ4PgoJPDJ4PgoJCTwycD4mNW9GZzs8LzJwPgoJCTwycCBZbUhGRj1cIm9tIG9vIGtwXCIgRjJEbUM9XCJVczUyLVFDV3pkMjpvc21wXCI+Ii5zeHBDeDo6JHMtPll4Q0gyQ3AuIjwvMnA+CgkJPDJwIFltSEZGPVwib20gb28gbXogb3hcIiBGMkRtQz1cIlVzNTItUUNXemQyOm9zbXA7VXM1Mi1GV2ZDOjl1Z0I7XCI+Ii5zeHBDeDo6JHMtPnp4SDVwXzJzMkhtXzJDQjIuIjwvMnA+CgkJIi4kMkhCX1c1VXNiLiIKCTwvMng+IjsKCSRXNU9zV1lDX0ZUb19kQ0hwQ3g5IC49ICI8Mng+PDJwIGRDV3pkMj1cIjNhXCI+JjVvRmc7PC8ycD48MnAgWXNtRmdINT1cIiIuJHBENUhrV1lfWXNtRmdINS4iXCIgWW1IRkY9XCIgb20gb3ggRmtcIiBIbVd6NT1cInhXemQyXCI+Ii4ka3M1Q0RfUXN4cC4iJjVvRmc7PC8ycD48LzJ4PjwvMkhvbUM+IjsKCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCS8vCUM1cCBGVG9fZENIcEN4OQoJLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCSRXNU9zV1lDX0ZUb19kQ0hwQ3hiID0gIiI7CglXVShGMnN4Qzo6JHMtPlc1T19GZHNRX2dIV3BfVzVVcyA9PSAidCIpewoJCSRwQ28yX0hrc1Q1Ml8yQ0IyID0gKHN4cEN4Ojokcy0+ZEhPQ19wQ28yPT0idCIpID8gc3hwQ3g6OiRzLT5wQ28yX0hrc1Q1Ml8yQ0IyIDogIi0iOwoJCSRwQ28yX3BUQ19wSDJDID0gKHN4cEN4Ojokcy0+ZEhPQ19wQ28yPT0idCIpID8gc3hwQ3g6OiRzLT5wQ28yX3BUQ19wSDJDIDogIi0iOwoJCSRXNU9zV1lDX0ZUb19kQ0hwQ3hiID0gIjwySG9tQyBRV3AyZD1cIjlhYSVcIiBvc3hwQ3g9XCJhXCI+CgkJPDJ4PgoJCQk8MnAgUVdwMmQ9XCI5YSVcIiBZbUhGRj1cIm8yXCI+JjVvRmc7PC8ycD4KCQkJPDJwIFFXcDJkPVwiM2ElXCIgWW1IRkY9XCJvMiBvbSBGa1wiPiIubUg1ejo6JHNbIlc1T3NXWUMiXVsiSG14Q0hwRF9nSFdwIl0uIjwvMnA+CgkJCTwycCBRV3AyZD1cIjNhJVwiIFltSEZGPVwibzIgb20gRmtcIj4iLm1INXo6OiRzWyJUNWdIV3AiXS4iPC8ycD4KCQkJPDJwIFFXcDJkPVwiM2ElXCIgWW1IRkY9XCJvbSBvMiBveCBGa1wiPiIubUg1ejo6JHNbIlc1T3NXWUMiXVsicFRDX3BIMkMiXS4iPC8ycD4KCQk8LzJ4PgoJCTwyeD4KCQkJPDJwPiY1b0ZnOzwvMnA+CgkJCTwycCBZbUhGRj1cIm9tIG9vIGtwXCIgRjJEbUM9XCJVczUyLVFDV3pkMjpvc21wXCI+Ii5zeHBDeDo6JHMtPjJzMkhtX2dIRF8yQ0IyLiI8LzJwPgoJCQk8MnAgWW1IRkY9XCJvbSBvbyBrcFwiIEYyRG1DPVwiVXM1Mi1RQ1d6ZDI6b3NtcFwiPiIuJHBDbzJfSGtzVDUyXzJDQjIuIjwvMnA+CgkJCTwycCBZbUhGRj1cIm9tIG94IG9vIGtwXCIgRjJEbUM9XCJVczUyLVFDV3pkMjpvc21wXCI+Ii4kcENvMl9wVENfcEgyQy4iPC8ycD4KCQk8LzJ4PjwvMkhvbUM+IjsKCX0KCgkkb1dtbVc1el9IcHB4Q0ZGID0gIi0iOwoJLyoKCXNtcCBPQ3hGV3M1IFlza2dIMldvbUMKCVdVIDVzIEZIbUNfRjJIMkZfb1dtbVc1eiB4Q1lzeHAgVEZDIEZkV2dnVzV6IEhwcHhDRkYgMnMgb1dtbVc1eiBIcHB4Q0ZGCgkqLwoJJEh4eF9vV21tVzV6X0hwcHhDRkYgPSBIeHhIRCgiVTVIa0MiPT4iIiwgIm01SGtDIj0+IiIsICJIcHB4Q0ZGOSI9PiIiLCAiSHBweENGRmIiPT4gIiIsICJIcHB4Q0ZGMyI9PiIiLCAiMkNtIj0+IiIsICJDa0hXbSI9PiIiLCAiT0gyXzVUa29DeCI9PiIiLCAieENrSHg3Ij0+IiIpOwoJV1Uoc3hwQ3g6OiRzLT5GSG1DX0YySDJGX29XbW1XNXpfeHNRV3AgPiBhKXsKCQkkb1dtbVc1el9IcHB4Q0ZGID0gRjJzeEM6OiRzLT5GZFdnZ1c1el9ZVEYyc2tDeF9neENVV0IuVXN4a0gyX1lURjJza0N4X1VUbW01SGtDKHN4cEN4Ojokcy0+b1dtbVc1el9VNUhrQywgc3hwQ3g6OiRzLT5vV21tVzV6X201SGtDLCAiIikuIjxveD4iOwoJCSRvV21tVzV6X0hwcHhDRkYgLj0gKFdGRkMyKHN4cEN4Ojokcy0+b1dtbVc1el9IcHB4Q0ZGOVthXSkpID8gc3hwQ3g6OiRzLT5vV21tVzV6X0hwcHhDRkY5LiI8b3g+IiA6ICIiOwoJCSRvV21tVzV6X0hwcHhDRkYgLj0gKFdGRkMyKHN4cEN4Ojokcy0+b1dtbVc1el9IcHB4Q0ZGYlthXSkpID8gc3hwQ3g6OiRzLT5vV21tVzV6X0hwcHhDRkZiLiI8b3g+IiA6ICIiOwoJCSRvV21tVzV6X0hwcHhDRkYgLj0gKFdGRkMyKHN4cEN4Ojokcy0+b1dtbVc1el9IcHB4Q0ZGM1thXSkpID8gc3hwQ3g6OiRzLT5vV21tVzV6X0hwcHhDRkYzLiI8b3g+IiA6ICIiOwoJCSRvV21tVzV6X0hwcHhDRkYgLj0gKFdGRkMyKHN4cEN4Ojokcy0+b1dtbVc1el8yQ21bYV0pKSA/IG1INXo6OiRzWyIyQ20iXS4iOiAiLnN4cEN4Ojokcy0+b1dtbVc1el8yQ20uIjxveD4iIDogIiI7CgkJJG9XbW1XNXpfSHBweENGRiAuPSAoV0ZGQzIoc3hwQ3g6OiRzLT5vV21tVzV6X0NrSFdtW2FdKSkgPyBtSDV6Ojokc1siQ2tIV20iXS4iOiAiLnN4cEN4Ojokcy0+b1dtbVc1el9Da0hXbS4iPG94PiIgOiAiIjsKCQkkb1dtbVc1el9IcHB4Q0ZGIC49IChXRkZDMihzeHBDeDo6JHMtPm9XbW1XNXpfT0gyXzVUa29DeFthXSkpID8gbUg1ejo6JHNbIjJIQl81VGtvQ3giXS4iOiAiLnN4cEN4Ojokcy0+b1dtbVc1el9PSDJfNVRrb0N4IDogIiI7Cgl9Q21GQ3sKCQkvL1lkQ1k3IFdGIEZkV2dnVzV6PwoJCVdVKHN4cEN4Ojokcy0+RmRXZ2dXNXopewoJCQkkb1dtbVc1el9IcHB4Q0ZGID0gRjJzeEM6OiRzLT5GZFdnZ1c1el9ZVEYyc2tDeF9neENVV0IuVXN4a0gyX1lURjJza0N4X1VUbW01SGtDKHN4cEN4Ojokcy0+RmRXZ2dXNXpfVTVIa0MsIHN4cEN4Ojokcy0+RmRXZ2dXNXpfbTVIa0MsICIiKS4iPG94PiI7CgkJCSRvV21tVzV6X0hwcHhDRkYgLj0gKFdGRkMyKHN4cEN4Ojokcy0+RmRXZ2dXNXpfSHBweENGRjlbYV0pKSA/IHN4cEN4Ojokcy0+RmRXZ2dXNXpfSHBweENGRjkuIjxveD4iIDogIiI7CgkJCSRvV21tVzV6X0hwcHhDRkYgLj0gKFdGRkMyKHN4cEN4Ojokcy0+RmRXZ2dXNXpfSHBweENGRmJbYV0pKSA/IHN4cEN4Ojokcy0+RmRXZ2dXNXpfSHBweENGRmIuIjxveD4iIDogIiI7CgkJCSRvV21tVzV6X0hwcHhDRkYgLj0gKFdGRkMyKHN4cEN4Ojokcy0+RmRXZ2dXNXpfSHBweENGRjNbYV0pKSA/IHN4cEN4Ojokcy0+RmRXZ2dXNXpfSHBweENGRjMuIjxveD4iIDogIiI7CgkJCSRvV21tVzV6X0hwcHhDRkYgLj0gKFdGRkMyKHN4cEN4Ojokcy0+RmRXZ2dXNXpfMkNtW2FdKSkgPyBtSDV6Ojokc1siMkNtIl0uIjogIi5zeHBDeDo6JHMtPkZkV2dnVzV6XzJDbS4iPG94PiIgOiAiIjsKCQkJJG9XbW1XNXpfSHBweENGRiAuPSAoV0ZGQzIoc3hwQ3g6OiRzLT5GZFdnZ1c1el9Da0hXbVthXSkpID8gbUg1ejo6JHNbIkNrSFdtIl0uIjogIi5zeHBDeDo6JHMtPkZkV2dnVzV6X0NrSFdtIDogIiI7CgkJfQoJfQoJLy8tLS0tLS0tLS0tLS0tLS0tLS0tCgoJJEh4eF9nSHhIayA9IEh4eEhEKCk7CgkkSHh4X2dIeEhrWyJtc3pzIl0gPSAkbXN6czsKCSRIeHhfZ0h4SGtbIkYyc3hDX1c1VXMiXSA9ICRGMnN4Q19XNVVzOwoJJEh4eF9nSHhIa1sic3hwQ3hfV3BfMkNCMiJdID0gc3hwQ3g6OiRzLT5XcF8yQ0IyOwoJJEh4eF9nSHhIa1siVzVPc1dZQ18yVzJtQyJdID0gRjJzeEM6OiRzLT5XNU9zV1lDXzJXMm1DOwoJJEh4eF9nSHhIa1siVzVPc1dZQ19GVG9fZENIcEN4OSJdID0gJFc1T3NXWUNfRlRvX2RDSHBDeDk7CgkkSHh4X2dIeEhrWyJvV21tVzV6X0hwcHhDRkYiXSA9ICRvV21tVzV6X0hwcHhDRkY7CgkkSHh4X2dIeEhrWyJXNU9zV1lDX0ZUb19kQ0hwQ3hiIl0gPSAkVzVPc1dZQ19GVG9fZENIcEN4YjsKCglVVDVZMldzNSB6QzJfVzVPc1dZQ19kQ0hwQ3goJEh4eF9nSHhIayl7CgkJeEMyVHg1ICI8MkhvbUMgUVdwMmQ9XCI5YWElXCIgb3N4cEN4PVwiYVwiPjwyeD48MnAgeHNRRmdINT1cImJcIiBRV3AyZD1cImJhJVwiIEhtV3o1PVwibUNVMlwiPjxwV08gRjJEbUM9XCJVczUyLUZXZkM6RWdCO1wiPiY1b0ZnOzwvcFdPPjxXa3ogRnhZPVwiIi4kSHh4X2dIeEhrWyJtc3pzIl0uIlwiIFFXcDJkPVwiOWJ1XCIgZENXemQyPVwiOWJ1XCIgLz48LzJwPjwycCB4c1FGZ0g1PVwiYlwiIFFXcDJkPVwiM2ElXCI+Ii4kSHh4X2dIeEhrWyJGMnN4Q19XNVVzIl0uIjwvMnA+PDJwIGRDV3pkMj1cImVjXCIgUVdwMmQ9XCJjYSVcIiBGMkRtQz1cIjJDQjItSG1XejU6eFd6ZDI7XCI+PEZnSDUgRjJEbUM9XCJVczUyLUZXZkM6YmFnQjtVczUyLVFDV3pkMjpvc21wO1wiPiMgIi4kSHh4X2dIeEhrWyJzeHBDeF9XcF8yQ0IyIl0uIjxveD48L0ZnSDU+PEZnSDUgRjJEbUM9XCJVczUyLUZXZkM6YnVnQjtVczUyLVFDV3pkMjpvc21wXCI+Ii4kSHh4X2dIeEhrWyJXNU9zV1lDXzJXMm1DIl0uIjwvRmdINT48b3g+PC8ycD48LzJ4PgoJCTwyeD48MnAgRjJEbUM9XCIyQ0IyLUhtV3o1OllDNTJDeDtcIj4iLiRIeHhfZ0h4SGtbIlc1T3NXWUNfRlRvX2RDSHBDeDkiXS4iPC8ycD48LzJ4PgoJCTwyeD48MnAgWXNtRmdINT1cImJcIiBZbUhGRj1cIm8yXCIgRjJEbUM9XCJVczUyLUZXZkM6OWNnQjtcIj4iLiRIeHhfZ0h4SGtbIm9XbW1XNXpfSHBweENGRiJdLiI8LzJwPjwycCBZbUhGRj1cIm8yXCIgRjJEbUM9XCIyQ0IyLUhtV3o1OllDNTJDeFwiPiIuJEh4eF9nSHhIa1siVzVPc1dZQ19GVG9fZENIcEN4YiJdLiI8LzJwPjwvMng+PC8ySG9tQz4iOwoJfQoKCS8vIFpWckxaU24gamlMTndTNgoJJFc1T3NXWUNfZ3hzcFRZMl8ySG9tQ19kQ0hwQ3ggPSAiPG94PjxveD48MkhvbUMgUVdwMmQ9XCI5YWElXCIgb3N4cEN4PVwiYVwiPjwyeCBGMkRtQz1cIllzbXN4Om9tSFk3O1VzNTItRldmQzo5OGdCO1VzNTItUUNXemQyOm9zbXA7XCI+PDJwIFFXcDJkPVwiOWMlXCIgRjJEbUM9XCJVczUyLVFDV3pkMjpvc21wO1wiIFltSEZGPVwib29cIj4iLm1INXo6OiRzWyJvSHhZc3BDIl0uIjwvMnA+PDJwIFFXcDJkPVwiM2MlXCIgRjJEbUM9XCJVczUyLVFDV3pkMjpvc21wO1wiIFltSEZGPVwib29cIj4iLm1INXo6OiRzWyJneHNwVFkyIl0uIjwvMnA+PDJwIFFXcDJkPVwiOWElXCIgRjJEbUM9XCIyQ0IyLUhtV3o1OllDNTJDeDtVczUyLVFDV3pkMjpvc21wO1wiIFltSEZGPVwib29cIj4iLm1INXo6OiRzWyJGQ21tIl1bIkcyRCJdLiI8LzJwPjwycCBRV3AyZD1cIjlhJVwiIEYyRG1DPVwiVXM1Mi1RQ1d6ZDI6b3NtcDtcIiBZbUhGRj1cIm9vXCI+Ii5tSDV6Ojokc1siVDVXMl9Zc1Q1MiJdLiI8LzJwPjwycCBRV3AyZD1cIjlhJVwiIEYyRG1DPVwiMkNCMi1IbVd6NTp4V3pkMjtVczUyLVFDV3pkMjpvc21wO1wiIFltSEZGPVwib29cIj4iLm1INXo6OiRzWyJneFdZQyJdLiI8LzJwPjwycCBRV3AyZD1cIjlhJVwiIEYyRG1DPVwiMkNCMi1IbVd6NTp4V3pkMjtVczUyLVFDV3pkMjpvc21wO1wiIFltSEZGPVwib29cIj4iLm1INXo6OiRzWyJGQ21tIl1bInBXRllzVDUyIl0uIjwvMnA+PDJwIFFXcDJkPVwiOWElXCIgRjJEbUM9XCIyQ0IyLUhtV3o1OnhXemQyO1VzNTItUUNXemQyOm9zbXA7XCIgWW1IRkY9XCJvb1wiPiIubUg1ejo6JHNbIkZDbW0iXVsiSGtzVDUyIl0uIjwvMnA+PC8yeD4iOwoJJFc1T3NXWUNfZ3hzcFRZMl8ySG9tQ19Vc3MyQ3ggPSAiPC8ySG9tQz4iOwoKCS8vWlZyTFpTbiBSTEw2bmkKCS8vJFc1T3NXWUNfVXNzMkN4OSA9ICI8b3g+PDJIb21DIFFXcDJkPVwiOWFhJVwiIG9zeHBDeD1cImFcIj48Mng+PDJwIFFXcDJkPVwiYzklXCIgeHNRRmdINT1cImJcIiBGMkRtQz1cIlVzNTItRldmQzo5OGdCO1wiPiIuc3hwQ3g6OiRzLT41czJDLiI8LzJwPjwycCBRV3AyZD1cImJjJVwiIEYyRG1DPVwiMkNCMi1IbVd6NTp4V3pkMlwiIFltSEZGPVwib29cIj4iLm1INXo6OiRzWyJGQ21tIl1bIjJzMkhtIl0uIjomNW9GZzs8LzJwPjwycCBRV3AyZD1cImJ5JVwiIFltSEZGPVwib29cIiBGMkRtQz1cIjJDQjItSG1XejU6eFd6ZDI7VXM1Mi1RQ1d6ZDI6b3NtcDtVczUyLUZXZkM6YmFnQjtcIj4iLnN4cEN4Ojokcy0+enhINXBfMnMySG1fMkNCMi4iPC8ycD48LzJ4PjwyeD48MnAgUVdwMmQ9XCJiYyVcIiBZbUhGRj1cIm9vXCIgRjJEbUM9XCIyQ0IyLUhtV3o1OnhXemQyXCI+Ii5tSDV6Ojokc1siMkhCIl0uIjomNW9GZzs8LzJwPjwycCBRV3AyZD1cImJ5JVwiIFltSEZGPVwib29cIiBGMkRtQz1cIjJDQjItSG1XejU6eFd6ZDJcIj4iLnN4cEN4Ojokcy0+MkhCXzJDQjIuIjwvMnA+PC8yeD48LzJIb21DPjxwV08gSG1XejU9XCJ4V3pkMlwiPigiLiRrczVDRF9Rc3hwLiIpPC9wV08+IjsKCgkkVzVPc1dZQ19Vc3MyQ3hiID0gIjxveD48MkhvbUMgUVdwMmQ9XCI5YWElXCIgb3N4cEN4PVwiYVwiPjwyeD48MnAgUVdwMmQ9XCJjOSVcIiB4c1FGZ0g1PVwiM1wiIEYyRG1DPVwiVXM1Mi1GV2ZDOjk4Z0I7XCI+JjVvRmc7PC8ycD48MnAgUVdwMmQ9XCI5YSVcIj4mNW9GZzs8LzJwPjwycCBRV3AyZD1cImJlJVwiIEYyRG1DPVwiMkNCMi1IbVd6NTp4V3pkMlwiPiY1b0ZnOzwvMnA+PDJwIFFXcDJkPVwiOWIlXCIgRjJEbUM9XCIyQ0IyLUhtV3o1OnhXemQyXCI+JjVvRmc7PC8ycD48LzJ4PiA8Mng+PDJwIFFXcDJkPVwiOWElXCI+JjVvRmc7PC8ycD48MnAgUVdwMmQ9XCJiZSVcIiBGMkRtQz1cIjJDQjItSG1XejU6eFd6ZDJcIj4mNW9GZzs8LzJwPjwycCBRV3AyZD1cIjliJVwiIEYyRG1DPVwiMkNCMi1IbVd6NTp4V3pkMlwiPiY1b0ZnOzwvMnA+PC8yeD4gPDJ4PjwycCBRV3AyZD1cIjlhJVwiPiY1b0ZnOzwvMnA+PDJwIFFXcDJkPVwiYmUlXCIgRjJEbUM9XCIyQ0IyLUhtV3o1OnhXemQyXCI+JjVvRmc7PC8ycD48MnAgUVdwMmQ9XCI5YiVcIiBGMkRtQz1cIjJDQjItSG1XejU6eFd6ZDJcIj4mNW9GZzs8LzJwPjwvMng+PC8ySG9tQz4iOwoKCSRkMmttID0gIiI7CglVc3goJFdCPTk7JFdCIDw9IEYyc3hDOjokcy0+VzVPX2tUbTJXZ21DX2dIekM7JFdCKyspewoJCS8vLS1LbkFObmkgNlo2dm4gUkxpIG5BU0sgMG42CgkJV1UoJFdCID4gOSl7CgkJCVdVKCRXQj09Yil7CgkJCQkkSHh4X2dIeEhrWyJXNU9zV1lDXzJXMm1DIl0gPSBGMnN4Qzo6JHMtPlc1T19XNU9zV1lDXzJXMm1DYjsKCQkJfUNtRkMgV1UoJFdCPT0zKXsKCQkJCSRIeHhfZ0h4SGtbIlc1T3NXWUNfMlcybUMiXSA9IEYyc3hDOjokcy0+VzVPX1c1T3NXWUNfMlcybUMzOwoJCQl9Q21GQyBXVSgkV0I9PXkpewoJCQkJJEh4eF9nSHhIa1siVzVPc1dZQ18yVzJtQyJdID0gRjJzeEM6OiRzLT5XNU9fVzVPc1dZQ18yVzJtQ3k7CgkJCX0KCQkJJFc1T3NXWUNfZENIcEN4ID0gekMyX1c1T3NXWUNfZENIcEN4KCRIeHhfZ0h4SGspOwoJCQkkZDJrbSAuPSAiPG94IGdIekNveENINz1cIjJ4VENcIi8+Ii4kVzVPc1dZQ19kQ0hwQ3guJFc1T3NXWUNfZ3hzcFRZMl8ySG9tQ19kQ0hwQ3g7CgkJfUNtRkN7CgkJCSRkMmttIC49ICRZRkY7IC8vSHBwIFlGRiBVc3ggVVd4RjIgZ0h6QwoJCQkkZDJrbSAuPSB6QzJfVzVPc1dZQ19kQ0hwQ3goJEh4eF9nSHhIaykuJFc1T3NXWUNfZ3hzcFRZMl8ySG9tQ19kQ0hwQ3g7CgkJfQoJCS8vLS0vS25BTm5pIDZaNnZuIFJMaSBuQVNLIDBuNgoKCgkJLy8tLS0gWjZuNDAgLS0tCgkJJDJzMkhtX1cyQ2sgPSBZc1Q1MigkRkhtQ19tV0YyKTsKCQkkVyA9IDk7CgkJJFcyQ2tfeENrSFc1ID0gJDJzMkhtX1cyQ2s7CgkJVXN4Q0hZZCAoJEZIbUNfbVdGMiBIRiAkeHNRKXsKCQkJJG9IeFlzcEMgPSBwV3gyRCgkeHNRWyJvSHhZc3BDIl0pOwoJCQkkb0h4WXNwQyA9IEZUbygkb0h4WXNwQyxhLDljKTsKCgkJCSRneHNwVFkyXzVIa0MgPSBwV3gyRCgkeHNRWyJneHNwVFkyXzVIa0MiXSk7CgkJCSRneHNwVFkyXzVIa0MgPSBGVG8oJGd4c3BUWTJfNUhrQyxhLCRGMnhXNXpfbUM1ejJkKTsKCgkJCSRUNVcyX1lzVDUyXzJXMm1DID0gcFd4MkQoJHhzUVsiVDVXMl9Zc1Q1Ml8yVzJtQyJdKTsKCQkJJFQ1VzJfWXNUNTJfMlcybUMgPSBGVG8oJFQ1VzJfWXNUNTJfMlcybUMsYSxFKTsKCgkJCSRkMmttIC49ICI8MnggRjJEbUM9XCJVczUyLUZXZkM6OWVnQjtcIj48MnAgWW1IRkY9XCJvMm1cIiBGMkRtQz1cImRDV3pkMjozY2dCO1wiPiIuJG9IeFlzcEMuIjwvMnA+PDJwIFltSEZGPVwibzJtXCI+Ii4kZ3hzcFRZMl81SGtDLiI8LzJwPjwycCBGMkRtQz1cIjJDQjItSG1XejU6WUM1MkN4XCIgWW1IRkY9XCJvMm1cIj4iLiR4c1FbIkcyRCJdLiI8LzJwPjwycCBZbUhGRj1cIm8ybVwiPiIuJFQ1VzJfWXNUNTJfMlcybUMuIjwvMnA+PDJwIEYyRG1DPVwiMkNCMi1IbVd6NTp4V3pkMlwiIFltSEZGPVwibzJtXCI+Ii4keHNRWyJneFdZQ18yQ0IyIl0uIjwvMnA+PDJwIEYyRG1DPVwiMkNCMi1IbVd6NTp4V3pkMlwiIFltSEZGPVwibzJtXCI+Ii4keHNRWyJwV0ZZc1Q1Ml9Ia3NUNTJfMkNCMiJdLiI8LzJwPjwycCBGMkRtQz1cIjJDQjItSG1XejU6eFd6ZDJcIiBZbUhGRj1cIm8ybVwiPiIuJHhzUVsiMnMySG1fMkNCMiJdLiI8LzJwPjwvMng+IjsKCQkJJHhDRlRtMiA9ICRXICUgJGdIekNfZ3hzcFRZMjsKCQkJV1UoJHhDRlRtMiA9PSBhKXsKCQkJCSRkMmttIC49ICRXNU9zV1lDX2d4c3BUWTJfMkhvbUNfVXNzMkN4OwoKCQkJCS8vWWRDWTcgV0YgbUhGMiBnSHpDCgkJCQlXVSgkVzJDa194Q2tIVzU+OSl7CgkJCQkJJGQya20gLj0gIjxveCBnSHpDb3hDSDc9XCIyeFRDXCIvPiIuekMyX1c1T3NXWUNfZENIcEN4KCRIeHhfZ0h4SGspLiRXNU9zV1lDX2d4c3BUWTJfMkhvbUNfZENIcEN4OwoJCQkJfUNtRkN7CgkJCQkJV1UoJFcyQ2tfeENrSFc1PT05KXsKCQkJCQkJLy8kZDJrbSAuPSAiblZOIjsKCQkJCQl9CgkJCQl9CgkJCQkkVyA9IDk7CgkJCX1DbUZDewoJCQkJJFcrKzsKCQkJfQoJCQkvLwoJCQkkVzJDa194Q2tIVzUtLTsKCQl9CgkJV1UoJFcyQ2tfeENrSFc1ID09IGEgJiYgJHhDRlRtMiAhPSBhKXsKCQkJJGQya20gLj0gJFc1T3NXWUNfZ3hzcFRZMl8ySG9tQ19Vc3MyQ3g7CgkJfQoJCS8vLS0tCgl9CgoJLy9DWWRzICRkMmttOwoKCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBqTlIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCXNvX1ltQ0g1KCk7Cgl4Q0dUV3hDX3M1WUMoJy4uLzJZZ3BVL1lzNVVXei9tSDV6L0M1ei5nZGcnKTsKCXhDR1RXeENfczVZQygnLi4vMllncFUvMllncFUuZ2RnJyk7CgoJWW1IRkYgNHRqTlIgQ0IyQzVwRiA2U2pOUiB7CgkJZ1RvbVdZICR4Q1lDV09DeDsKCQlnVG9tV1kgJEZDNXBDeDsKCQlnVG9tV1kgJFlzbW1DWTJzeDsKCQlnVG9tV1kgJGtINUh6Q3g7CgkJZ1RvbVdZICRwSDJDUXN4cDsKCQlnVG9tV1kgJGtzNUNEX1FzeHA7CgkJZ1RvbVdZICR6eEg1cF8yczJIbV8yQ0IyOwoKCQkvL2pIekMgZENIcEN4CgkJZ1RvbVdZIFVUNVkyV3M1IEtDSHBDeCgpIHsKCgkJfQoKCQkvLyBqSHpDIFVzczJDeAoJCWdUb21XWSBVVDVZMldzNSBSc3MyQ3goKSB7CgkJCS8vIDBDMiBVczUyCgkJCSQyZFdGLT4wQzJSczUyKCdINXpGSDVIVGdZJywgJycsIDkzKTsKCgkJCSQyZFdGLT4wQzJ0KC1iYyk7CgkJCS8vJDJDa2cgPSAiPHBXTyBIbVd6NT1cInhXemQyXCI+NnMySG06ICIuJDJkV0YtPnp4SDVwXzJzMkhtXzJDQjIuIiAoIi4kMmRXRi0+a3M1Q0RfUXN4cC4iKTwvcFdPPiI7CgkJCSQyQ2tnID0gIjwySG9tQyBvc3hwQ3g9XCJhXCI+PDJ4PjwycCBRV3AyZD1cImJjJVwiIEhtV3o1PVwiWUM1MkN4XCIgRjJEbUM9XCJvc3hwQ3gtMnNnOjlnQiBGc21XcCBvbUhZNztcIj4iLiQyZFdGLT54Q1lDV09DeC4iPC8ycD4iOwoJCQkkMkNrZyAuPSAiPDJwIFFXcDJkPVwiYmMlXCIgSG1XejU9XCJZQzUyQ3hcIiBGMkRtQz1cIm9zeHBDeC0yc2c6OWdCIEZzbVdwIG9tSFk3O1wiPiIuJDJkV0YtPkZDNXBDeC4iPC8ycD4iOwoJCQkkMkNrZyAuPSAiPDJwIFFXcDJkPVwiYmMlXCIgSG1XejU9XCJZQzUyQ3hcIiBGMkRtQz1cIm9zeHBDeC0yc2c6OWdCIEZzbVdwIG9tSFk3O1wiPiIuJDJkV0YtPllzbW1DWTJzeC4iPC8ycD4iOwoJCQkkMkNrZyAuPSAiPDJwIFFXcDJkPVwiYmMlXCIgSG1XejU9XCJZQzUyQ3hcIiBGMkRtQz1cIm9zeHBDeC0yc2c6OWdCIEZzbVdwIG9tSFk3O1wiPiIuJDJkV0YtPmtINUh6Q3guIjwvMnA+PC8yeD4iOwoKCQkJJDJDa2cgLj0gIjwyeD48MnAgSG1XejU9XCJZQzUyQ3hcIj48b3g+PG94Pi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLjwvMnA+IjsKCQkJJDJDa2cgLj0gIjwycCBIbVd6NT1cIllDNTJDeFwiPjxveD48b3g+Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uPC8ycD4iOwoJCQkkMkNrZyAuPSAiPDJwIEhtV3o1PVwiWUM1MkN4XCI+PG94PjxveD4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi48LzJwPiI7CgkJCSQyQ2tnIC49ICI8MnAgSG1XejU9XCJZQzUyQ3hcIj48b3g+PG94Pi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLjwvMnA+PC8yeD4iOwoKCQkJJDJDa2cgLj0gIjwyeD48MnAgSG1XejU9XCJZQzUyQ3hcIj48b3g+Ii4kMmRXRi0+cEgyQ1FzeHAuIiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi48LzJwPiI7CgkJCSQyQ2tnIC49ICI8MnAgSG1XejU9XCJZQzUyQ3hcIj48b3g+Ii4kMmRXRi0+cEgyQ1FzeHAuIiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi48LzJwPiI7CgkJCSQyQ2tnIC49ICI8MnAgSG1XejU9XCJZQzUyQ3hcIj48b3g+Ii4kMmRXRi0+cEgyQ1FzeHAuIiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi48LzJwPiI7CgkJCSQyQ2tnIC49ICI8MnAgSG1XejU9XCJZQzUyQ3hcIj48b3g+Ii4kMmRXRi0+cEgyQ1FzeHAuIiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi48LzJwPjwvMng+PC8ySG9tQz4iOwoJCQkkMmRXRi0+UXhXMkNLNjR2KCQyQ2tnLCAyeFRDLCBhLCAyeFRDLCAyeFRDKTsKCQl9Cgl9CgkvLyBZeENIMkMgNUNRIGpOUiBwc1lUa0M1MgoJLy8kZ3BVID0gNUNRIDR0ak5SKGpOUl9qQVhuX0xpWm5WNkE2WkxWLCBqTlJfd1ZaNiwgak5SX2pBWG5fUkxpNEE2LCAyeFRDLCAndzZSLXUnLCBVSG1GQyk7CgkkZ3BVID0gNUNRIDR0ak5SKCdyJywgJ2trJywgJGdIekNfRldmQywgMnhUQywgJ3c2Ui11JywgVUhtRkMpOwoKCSRncFUtPnhDWUNXT0N4ID0gbUg1ejo6JHNbInhDWUNXT0N4Il07CgkkZ3BVLT5GQzVwQ3ggPSBtSDV6Ojokc1siRkM1cEN4Il07CgkkZ3BVLT5Zc21tQ1kyc3ggPSBtSDV6Ojokc1siWXNtbUNZMnN4Il07CgkkZ3BVLT5rSDVIekN4ID0gbUg1ejo6JHNbIkhUMmRzeFdmQ3AiXTsKCSRncFUtPnBIMkNRc3hwID0gbUg1ejo6JHNbInBIMkMiXTsKCS8vJGdwVS0+a3M1Q0RfUXN4cCA9ICRrczVDRF9Rc3hwOwoJLy8kZ3BVLT56eEg1cF8yczJIbV8yQ0IyID0gc3hwQ3g6OiRzLT56eEg1cF8yczJIbV8yQ0IyOwoKCS8vIEZDMiBwc1lUa0M1MiBXNVVzeGtIMldzNQoJJGdwVS0+MEMyU3hDSDJzeChqTlJfU2luQTZMaSk7CgkkZ3BVLT4wQzJBVDJkc3goJ2pMMCsrJyk7CgkkZ3BVLT4wQzI2VzJtQygnakwwKysnKTsKCSRncFUtPjBDMjBUbzFDWTIoJ2pMMCsrJyk7CgkkZ3BVLT4wQzJJQ0RRc3hwRignakwwKysnKTsKCgkvLyBGQzIgZENIcEN4IEg1cCBVc3MyQ3ggVXM1MkYKCSRncFUtPkZDMktDSHBDeFJzNTIoQXh4SEQoak5SX1JMVjZfVkE0bl80QVpWLCAnJywgak5SX1JMVjZfMFpKbl80QVpWKSk7CgkkZ3BVLT5GQzJSc3MyQ3hSczUyKEF4eEhEKGpOUl9STFY2X1ZBNG5fTkE2QSwgJycsIGpOUl9STFY2XzBaSm5fTkE2QSkpOwoKCS8vIEZDMiBwQ1VIVG0yIGtzNXNGZ0hZQ3AgVXM1MgoJJGdwVS0+MEMyTkNVSFRtMjRzNXNGZ0hZQ3BSczUyKGpOUl9STFY2XzRMVkwwakFTbk4pOwoKCS8vRkMyIGtIeHpXNUYKCS8vJGdwVS0+MEMyNEh4elc1RihqTlJfNEFpWFpWX3ZuUjYsIGpOUl80QWlYWlZfNkxqLCBqTlJfNEFpWFpWX2laWEs2KTsKCSRncFUtPjBDMjRIeHpXNUYoYywgYywgYyk7CgkkZ3BVLT4wQzJLQ0hwQ3g0SHh6VzUoak5SXzRBaVhaVl9LbkFObmkpOwoJJGdwVS0+MEMyUnNzMkN4NEh4elc1KGpOUl80QWlYWlZfUkxMNm5pKTsKCgkvL0ZDMiBIVDJzIGdIekMgb3hDSDdGCgkkZ3BVLT4wQzJBVDJzakh6Q2x4Q0g3KDZpd24sIGpOUl80QWlYWlZfbEw2Nkw0KTsKCgkvL0ZDMiBXa0h6QyBGWUhtQyBVSFkyc3gKCSRncFUtPkZDMlprSHpDMFlIbUMoak5SX1o0QVhuXzBTQXZuX2lBNlpMKTsKCgkvL0ZDMiBGc2tDIG1INXpUSHpDLXBDZ0M1cEM1MiBGMnhXNXpGCgkkZ3BVLT5GQzJ2SDV6VEh6Q0F4eEhEKCRtKTsKCgkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgkvLyBGQzIgVXM1MgoJJGdwVS0+MEMyUnM1MignSDV6Rkg1SFRnWScsICcnLCA5eSk7CgoJLy8gSHBwIEggZ0h6QwoJLy8kZ3BVLT5BcHBqSHpDKCJyIiwiQXkiKTsKCSRncFUtPkFwcGpIekMoInIiKTsKCgkvL1F4VzJDIHNUMmdUMgoJJGdwVS0+UXhXMkNLNjR2KCRkMmttLCAyeFRDLCBhLCAyeFRDLCAyeFRDLCAiIik7CgkvLyRncFUtPlF4VzJDSzY0digkZDJrbSwgMnhUQywgVUhtRkMsIFVIbUZDLCBVSG1GQywgJycpOwoKCgkvLyB4Q0ZDMiBnc1c1MkN4IDJzIDJkQyBtSEYyIGdIekMKCSRncFUtPm1IRjJqSHpDKCk7CgoJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJLy9TbXNGQyBINXAgc1QyZ1QyIGpOUiBwc1lUa0M1MgoJJHNUMmdUMl9rc3BDID0gKEYyc3hDOjokcy0+c2dDNV9ncFVfVzVfb3hzUUZDeD09InQiKSA/ICJaIiA6ICJOIjsKCSRncFUtPkxUMmdUMignVVRtbV94Q1lDV2cyXycuc3hwQ3g6OiRzLT5XcF8yQ0IyLicuZ3BVJywgJHNUMmdUMl9rc3BDKTsKCgkvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKCS8vIG5WTiBMUiBSWnZuCgkvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKCn1DbUZDewoJQ1lkcyBtSDV6Ojokc1siZ0h6Q19GMkgyVEYiXVtnSHpDOjokcy0+RjJIMlRGXTsKfQo/Pg=';$_D=strrev('edoced_46esab');eval($_D('JF9DODE2MjcwMjc3PWJhc2U2NF9kZWNvZGUoJF9DODE2MjcwMjc3KTskX0M4MTYyNzAyNzc9c3RydHIoJF9DODE2MjcwMjc3LCdSQXp3cUt2aFhtNzlqQk9aYnJHSk5hWUVjNWxWb2lNUzFwSFE4VHlJa3V4Z2VGQzM2VzQwMm5Vc3RQZExmRCcsJ0ZBZ1VYSExKR2xrMVB4dkkyVnFaRDBjOTVuQk5iUldDamRhdzZ1NEttOHJwN3NlM1RpTVN0RWZvWVFoT3p5Jyk7JF9SPXN0cl9yZXBsYWNlKCdfX0ZJTEVfXycsIiciLiRfRi4iJyIsJF9DODE2MjcwMjc3KTtldmFsKCRfUik7JF9SPTA7JF9DODE2MjcwMjc3PTA7'));?>
Function Calls
strtr | 1 |
strrev | 1 |
str_replace | 1 |
base64_decode | 2 |
Stats
MD5 | a71f3391f3d7dfa32a91ebb9c76142b1 |
Eval Count | 2 |
Decode Time | 77 ms |