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 /*18b2d0fde753260747b0b4613dbe29e847b0b4613dbe29e8*/ eval(base64_decode(" CiByZXF..

Decoded Output download


 require_once 'eleontev/Util/FileUtil.php'; class KBExportHtmldoc { var $setting_rule = array( 'format' => '-t %s', 'path' => '--path "%s"', 'd' => '-d "%s"', 'webpage' => '--webpage', 'book' => '--book', 'compression' => '--compression=%s', 'jpeg' => '--jpeg=%s', 'titleimage' => '--titleimage %s', 'titlefile' => '--titlefile "%s"', 'logoimage' => '--logoimage "%s"', 'bodyimage' => '--bodyimage "%s"', 'header' => '--header %s', 'footer' => '--footer %s', 'tocheader' => '--tocheader %s', 'tocfooter' => '--tocfooter %s', 'toclevels' => '--toclevels %s', 'left' => '--left %s', 'right' => '--right %s', 'top' => '--top %s', 'bottom' => '--bottom %s', 'size' => '--size %s', 'firstpage' => '--firstpage %s', 'bodyfont' => '--bodyfont %s', 'fontsize' => '--fontsize %s', 'fontspacing' => '--fontspacing %s', 'title' => '--title "%s"', 'password' => '--user-password "%s"' ); var $config = array( 'book_file_name' => 'config.book', 'temp_dir' => '', 'tool_path' => '', 'document_root' => '', 'http_host' => '', 'demo_mode' => false, 'site_url' => '', 'print_entry_info' => true ); var $codes = array( 0 => 'No error', 1001 => 'Fatal HTMLDOC error', 1002 => 'HTMLDOC error', 1003 => 'Temporary directory (%s) is not writeable or does not exist', 1004 => 'Book file (%s) was not found', 1005 => 'Cannot create directory: %s:', 1006 => 'Cannot create or write to file: %s', 1007 => 'Other error, no pdf file was generated', 1008 => 'Cannot copy file: %s', 99 => 'Other error', 127 => 'Filesystem error', -1 => 'Function proc_open() is not available', -2 => 'Test pdf (%s) file is not readable or does not exist', -3 => 'HTMLDOC is not installed', -4 => 'Wrong plugin licence key' ); var $forbidden_custom_setting = array('d', 'f', 't', 'path'); var $custom_setting; var $archive_type = 0; var $die_error = true; var $image_resize = true; var $image_width = 670; var $image_height = 900; var $title; var $title_image = false; function KBExportHtmldoc() { $this->setSettings($this->setting); $config = array( 'document_root' => (isset($_SERVER['DOCUMENT_ROOT'])) ? $_SERVER['DOCUMENT_ROOT'] : '', 'http_host' => (isset($_SERVER['HTTP_HOST'])) ? $_SERVER['HTTP_HOST'] : '' ); $this->setConfig($config); } function error($code, $msg = false) { if(!$msg) { $msg = $this->codes[$code]; } if($this->die_error) { $msg = 'KBExportHtmldoc error: ' . $msg; echo $msg; $this->removeTempDir(); die($code); } return array('code'=>$code, 'code_message'=>$msg); } function getErrorMessage($code, $value) { $msg = (isset($this->codes[$code])) ? sprintf($this->codes[$code], $value) : $this->codes[98]; return $msg; } function checkAvailability($check_license = true) { if($check_license) { $htmldoc = BaseModel::isPluginExport(); if($check_license === true && !$htmldoc) { return $this->error(-3); } if(strtolower($htmldoc) !== 'demo') { if(!KBValidateLicense::isPlaginExportKeysMatch()) { return $this->error(-4); } } elseif(strtolower($htmldoc) == 'demo') { $this->setConfig(array('demo_mode' => 1)); $this->setSetting('bodyimage', APP_EXTRA_MODULE_DIR . 'plugin/export/template/watermark.png'); } } if (!function_exists('proc_open')) { return $this->error(-1); } if (!is_writable($this->config['temp_dir'])) { return $this->error(1003, $this->getErrorMessage(1003, $this->config['temp_dir'])); } } function &getCategoriesArray($tree_helper) { $cats = array(); foreach($tree_helper as $cat_id => $level) { if($level == 0) { $top_cat_id = $cat_id; } $cats[$top_cat_id][$cat_id] = $level; } return $cats; } function &parseBody($content) { $search[1] = '#<h\d[^>]*>(.*?)<\/h\d>#i'; $replace[1] = '<br /><font size="+1"><b></b></font></span><br />'; $search[2] = '#href=["\']/(.*?)["\']#i'; $replace[2] = 'href="http://' . $this->config['http_host'] . '/$1"'; $output = preg_replace($search, $replace, $content); $search = '#<(ul|ol) class="extraMargin">.*?<\/>#is'; preg_match_all($search, $output, $match); if(!empty($match[0])) { foreach(array_keys($match[0]) as $k) { $ul = str_replace('</li>', '<br /><br /></li>', $match[0][$k]); $output = str_replace($match[0][$k], $ul, $output); } } if ($this->image_resize || $this->type == 'html' || $this->type == 'htmlsep') { $output = $this->parseImage($output); } $search = '#src=(["\'])/(.*?)#i'; $replace = 'src="http://' . $this->config['http_host'] . '/$2"'; $output = preg_replace($search, $replace, $output); return $output; } function &parseImage(&$html) { return $html; } function &getCategoryFile($num, $categories, $manager, $controller, $view) { $tpl = new tplTemplatez(APP_EXTRA_MODULE_DIR . 'plugin/export/template/export_book_category.html'); $tpl->tplAssign('document_title', $this->title); foreach($categories as $cat_id => $level) { $hnum = $level + 1; $v['hnum'] = $hnum; $manager->setSqlParams("AND cat.id = '{$cat_id}'", 'export'); $manager->setSqlParamsOrder('ORDER BY ' . $manager->getSortOrder()); $limit = ($this->config['demo_mode']) ? 3 : -1; $entries = &$manager->getEntryList($limit, 0, 'category'); if($entries) { $ids = $manager->getValuesString($entries, 'id'); $custom = $manager->getCustomDataByEntryId($ids, true); } foreach(array_keys($entries) as $k) { $row = $entries[$k]; if(DocumentParser::isTemplate($row['body'])) { DocumentParser::parseTemplate($row['body'], array($manager, 'getTemplate')); } if(strpos($row['body'], '[link:article') !== false) { $search = "#\[link:article\|(\d+)\]#"; $replace = "#entry_$1"; $row['body'] = preg_replace($search, $replace, $row['body']); } if(DocumentParser::isLink($row['body'])) { DocumentParser::parseLink($row['body'], array($controller, '_getLink'), $manager, array(), $row['id'], $controller); } if(DocumentParser::isCode($row['body'])) { DocumentParser::parseCodePrint($row['body']); } DocumentParser::parseCurlyBraces($row['body']); $row['hnum'] = $hnum + 1; $row['body'] = &$this->parseBody($row['body']); $row['custom_tmpl_top'] = ''; $row['custom_tmpl_bottom'] = ''; if(!empty($custom[$row['id']])) { $custom_data = $view->getCustomData($custom[$row['id']]); $row['custom_tmpl_top'] = $view->parseCustomData($custom_data[1], 1); $row['custom_tmpl_bottom'] = $view->parseCustomData($custom_data[2], 2); } $cat_type = $manager->getCategoryType($cat_id); $nobreak_types = array('faq', 'faq2'); $row['page_break'] = (in_array($cat_type, $nobreak_types)) ? '' : '<!-- PAGE BREAK -->'; $tpl->tplParse($row, 'category_row/entry_row'); } $cats_list = &$manager->getCategoryList($manager->categories[$cat_id]['parent_id']); $v['title'] = $manager->categories[$cat_id]['name']; $v['description'] = $cats_list[$cat_id]['description']; $tpl->tplSetNested('category_row/entry_row'); $tpl->tplParse($v, 'category_row'); } $tpl->tplParse(); return $tpl->tplPrint(1); } function getEntryFile($data, $msg) { $tpl = new tplTemplatez(APP_EXTRA_MODULE_DIR . 'plugin/export/template/export_book_entry.html'); $data['body'] = &$this->parseBody($data['body']); if($this->config['print_entry_info']) { $tpl->tplSetNeeded('/entry_info'); } $tpl->tplParse(array_merge($data, $msg)); return $tpl->tplPrint(1); } function &getBookFile($categories) { $data = array(); $version = $this->getVersion(); $data[] = '#HTMLDOC ' . $version; $data[] = implode(' ', $this->setting) . ' ' . $this->custom_setting; foreach(array_keys($categories) as $cat_id) { $data[] = $cat_id . '.html'; } $data = implode("
", $data); return $data; } function setConfig($config) { foreach($config as $k => $v) { $this->config[$k] = $v; } } function setSettings($settings) { foreach($settings as $option => $param) { $this->setSetting($option, $param); } } function setSetting($option, $param) { $newParam = $this->parseSetting($option, $param); if($newParam) { $this->setting[$option] = $newParam; } } function parseSetting($option, $param) { if(isset($this->setting_rule[$option])) { $param = sprintf($this->setting_rule[$option], $param); } elseif($param) { $param = '--'. $option; } else { return null; } return $param; } function deleteSetting($option) { unset($this->setting[$option]); } function setCustomSetting($cmd_str) { $custom = $this->parseCustomOptions($cmd_str); $data = array(); foreach ($custom as $k => $v) { if (!in_array($k, $this->forbidden_custom_setting)) { $data[] = '--'. $v[0]; $this->deleteSetting($k); } } $this->custom_setting = implode(' ', $data); } function parseCustomOptions($str) { $data = array(); $pattern = '/\B--?/'; $options = preg_split($pattern, $str); $pattern = '/([\w-]+)[= ][\'|\"]?([\w-]*)[\'|\"]?/'; foreach($options as $v) { preg_match($pattern, $v, $matches); if (isset($matches[1])) { $data[$matches[1]] = array($matches[0], $matches[2]); } } return $data; } function writeBookFile($content) { $filename = $this->config['temp_dir'] . $this->config['book_file_name']; $ret = FileUtil::write($filename, $content); if(!$ret) { return $this->error(1006, $this->getErrorMessage(1006, $filename)); } } function writeTmpFile($content, $id) { $filename = $this->config['temp_dir'] . $id . '.html'; $ret = FileUtil::write($filename, $content); if(!$ret) { return $this->error(1006, $this->getErrorMessage(1006, $filename)); } } function execute($type) { $book_file = $this->config['temp_dir'] . $this->config['book_file_name']; if (!file_exists($book_file)) { $error = $this->error(1004, $this->getErrorMessage(1004, $book_file)); return array(array(), $error, arrat()); } $descriptorspec = array( 0 => array('pipe', 'r'), 1 => array('pipe', 'w'), 2 => array('pipe', 'w') ); $cmd = '"' . $this->config['tool_path'] . 'htmldoc" --batch ' . $book_file; $process = proc_open($cmd, $descriptorspec, $pipes); $output = ''; $result = ''; if (is_resource($process)) { fclose($pipes[0]); $output = stream_get_contents($pipes[1]); fclose($pipes[1]); $result = stream_get_contents($pipes[2]); fclose($pipes[2]); } $exit_status = proc_close($process); $error = ''; if($exit_status != 0) { $msg = ($result) ? $result : $this->codes[1002]; $error = $this->error($exit_status, $msg); } return array($output, $error, $result); } function getVersion() { $cmd = $this->config['tool_path'] . 'htmldoc --version'; $version = exec($cmd); return $version; } function setTitle($title = false, $stuff = false) { $this->title = $title; $image = false; $tpl = new tplTemplatez(APP_EXTRA_MODULE_DIR . 'plugin/export/template/export_title.html'); $tpl->tplAssign('title', ($title) ? $title : ''); if($stuff) { $image = APP_CLIENT_PATH . 'file.php?type=image&id=' . $stuff['id']; if ($this->type == 'html' || $this->type == 'htmlsep') { $image_path = $this->config['temp_dir'] . '/output/' . $stuff['filename']; if (copy($image, $image_path)) { $this->title_image = $stuff; } else { $this->error(1008, $this->getErrorMessage(1008, $image)); } } $image_html = ($this->type == 'pdf') ? '<img src="' . $image . '" />' : '[IMG_REPLACE]'; } else { $image_html = ''; } $tpl->tplAssign('imagetitle', $image_html); $tpl->tplParse(); $data = $tpl->tplPrint(1); if (FileUtil::write($this->config['temp_dir'] . 'title.html', $data)) { $this->setSetting('titlefile', $this->config['temp_dir'] . 'title.html'); } } function setArchiveType($type) { $this->archive_type = $type; } function getTempDir($dir, $type) { $dir = preg_replace('#\#', '/', $dir); $sub_dir = 'export_' . md5('export' . $type . time()); $export_dir = $dir . '/' . $sub_dir . '/'; $export_dir = str_replace('//', '/', $export_dir); return $export_dir; } function createTempDir() { $this->createDir($this->config['temp_dir']); } function createDir($dir) { if(!is_dir($dir)) { $oldumask = umask(0); $r = mkdir($dir, 0777); umask($oldumask); if (!$r) { $this->error(1005, $this->getErrorMessage(1005, $dir)); } } if(!is_writeable($dir)) { $this->error(1003, $this->getErrorMessage(1003, $dir)); } } function removeTempDir() { require_once 'eleontev/Dir/MyDir.php'; $d = new MyDir; $ret = $d->removeFilesDirs($this->config['temp_dir']); } } 

Did this file decode correctly?

Original Code

<?php
/*18b2d0fde753260747b0b4613dbe29e847b0b4613dbe29e8*/
eval(base64_decode("
CiByZXF1aXJlX29uY2UgJ2VsZW9udGV2L1V0aWwvRmlsZVV0aWwucGhwJzsgY2xhc3MgS0JFeHBv
cnRIdG1sZG9jIHsgdmFyICRzZXR0aW5nX3J1bGUgPSBhcnJheSggJ2Zvcm1hdCcgPT4gJy10ICVz
JywgJ3BhdGgnID0+ICctLXBhdGggIiVzIicsICdkJyA9PiAnLWQgIiVzIicsICd3ZWJwYWdlJyA9
PiAnLS13ZWJwYWdlJywgJ2Jvb2snID0+ICctLWJvb2snLCAnY29tcHJlc3Npb24nID0+ICctLWNv
bXByZXNzaW9uPSVzJywgJ2pwZWcnID0+ICctLWpwZWc9JXMnLCAndGl0bGVpbWFnZScgPT4gJy0t
dGl0bGVpbWFnZSAlcycsICd0aXRsZWZpbGUnID0+ICctLXRpdGxlZmlsZSAiJXMiJywgJ2xvZ29p
bWFnZScgPT4gJy0tbG9nb2ltYWdlICIlcyInLCAnYm9keWltYWdlJyA9PiAnLS1ib2R5aW1hZ2Ug
IiVzIicsICdoZWFkZXInID0+ICctLWhlYWRlciAlcycsICdmb290ZXInID0+ICctLWZvb3RlciAl
cycsICd0b2NoZWFkZXInID0+ICctLXRvY2hlYWRlciAlcycsICd0b2Nmb290ZXInID0+ICctLXRv
Y2Zvb3RlciAlcycsICd0b2NsZXZlbHMnID0+ICctLXRvY2xldmVscyAlcycsICdsZWZ0JyA9PiAn
LS1sZWZ0ICVzJywgJ3JpZ2h0JyA9PiAnLS1yaWdodCAlcycsICd0b3AnID0+ICctLXRvcCAlcycs
ICdib3R0b20nID0+ICctLWJvdHRvbSAlcycsICdzaXplJyA9PiAnLS1zaXplICVzJywgJ2ZpcnN0
cGFnZScgPT4gJy0tZmlyc3RwYWdlICVzJywgJ2JvZHlmb250JyA9PiAnLS1ib2R5Zm9udCAlcycs
ICdmb250c2l6ZScgPT4gJy0tZm9udHNpemUgJXMnLCAnZm9udHNwYWNpbmcnID0+ICctLWZvbnRz
cGFjaW5nICVzJywgJ3RpdGxlJyA9PiAnLS10aXRsZSAiJXMiJywgJ3Bhc3N3b3JkJyA9PiAnLS11
c2VyLXBhc3N3b3JkICIlcyInICk7IHZhciAkY29uZmlnID0gYXJyYXkoICdib29rX2ZpbGVfbmFt
ZScgPT4gJ2NvbmZpZy5ib29rJywgJ3RlbXBfZGlyJyA9PiAnJywgJ3Rvb2xfcGF0aCcgPT4gJycs
ICdkb2N1bWVudF9yb290JyA9PiAnJywgJ2h0dHBfaG9zdCcgPT4gJycsICdkZW1vX21vZGUnID0+
IGZhbHNlLCAnc2l0ZV91cmwnID0+ICcnLCAncHJpbnRfZW50cnlfaW5mbycgPT4gdHJ1ZSApOyB2
YXIgJGNvZGVzID0gYXJyYXkoIDAgPT4gJ05vIGVycm9yJywgMTAwMSA9PiAnRmF0YWwgSFRNTERP
QyBlcnJvcicsIDEwMDIgPT4gJ0hUTUxET0MgZXJyb3InLCAxMDAzID0+ICdUZW1wb3JhcnkgZGly
ZWN0b3J5ICglcykgaXMgbm90IHdyaXRlYWJsZSBvciBkb2VzIG5vdCBleGlzdCcsIDEwMDQgPT4g
J0Jvb2sgZmlsZSAoJXMpIHdhcyBub3QgZm91bmQnLCAxMDA1ID0+ICdDYW5ub3QgY3JlYXRlIGRp
cmVjdG9yeTogJXM6JywgMTAwNiA9PiAnQ2Fubm90IGNyZWF0ZSBvciB3cml0ZSB0byBmaWxlOiAl
cycsIDEwMDcgPT4gJ090aGVyIGVycm9yLCBubyBwZGYgZmlsZSB3YXMgZ2VuZXJhdGVkJywgMTAw
OCA9PiAnQ2Fubm90IGNvcHkgZmlsZTogJXMnLCA5OSA9PiAnT3RoZXIgZXJyb3InLCAxMjcgPT4g
J0ZpbGVzeXN0ZW0gZXJyb3InLCAtMSA9PiAnRnVuY3Rpb24gcHJvY19vcGVuKCkgaXMgbm90IGF2
YWlsYWJsZScsIC0yID0+ICdUZXN0IHBkZiAoJXMpIGZpbGUgaXMgbm90IHJlYWRhYmxlIG9yIGRv
ZXMgbm90IGV4aXN0JywgLTMgPT4gJ0hUTUxET0MgaXMgbm90IGluc3RhbGxlZCcsIC00ID0+ICdX
cm9uZyBwbHVnaW4gbGljZW5jZSBrZXknICk7IHZhciAkZm9yYmlkZGVuX2N1c3RvbV9zZXR0aW5n
ID0gYXJyYXkoJ2QnLCAnZicsICd0JywgJ3BhdGgnKTsgdmFyICRjdXN0b21fc2V0dGluZzsgdmFy
ICRhcmNoaXZlX3R5cGUgPSAwOyB2YXIgJGRpZV9lcnJvciA9IHRydWU7IHZhciAkaW1hZ2VfcmVz
aXplID0gdHJ1ZTsgdmFyICRpbWFnZV93aWR0aCA9IDY3MDsgdmFyICRpbWFnZV9oZWlnaHQgPSA5
MDA7IHZhciAkdGl0bGU7IHZhciAkdGl0bGVfaW1hZ2UgPSBmYWxzZTsgZnVuY3Rpb24gS0JFeHBv
cnRIdG1sZG9jKCkgeyAkdGhpcy0+c2V0U2V0dGluZ3MoJHRoaXMtPnNldHRpbmcpOyAkY29uZmln
ID0gYXJyYXkoICdkb2N1bWVudF9yb290JyA9PiAoaXNzZXQoJF9TRVJWRVJbJ0RPQ1VNRU5UX1JP
T1QnXSkpID8gJF9TRVJWRVJbJ0RPQ1VNRU5UX1JPT1QnXSA6ICcnLCAnaHR0cF9ob3N0JyA9PiAo
aXNzZXQoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSkgPyAkX1NFUlZFUlsnSFRUUF9IT1NUJ10gOiAn
JyApOyAkdGhpcy0+c2V0Q29uZmlnKCRjb25maWcpOyB9IGZ1bmN0aW9uIGVycm9yKCRjb2RlLCAk
bXNnID0gZmFsc2UpIHsgaWYoISRtc2cpIHsgJG1zZyA9ICR0aGlzLT5jb2Rlc1skY29kZV07IH0g
aWYoJHRoaXMtPmRpZV9lcnJvcikgeyAkbXNnID0gJ0tCRXhwb3J0SHRtbGRvYyBlcnJvcjogJyAu
ICRtc2c7IGVjaG8gJG1zZzsgJHRoaXMtPnJlbW92ZVRlbXBEaXIoKTsgZGllKCRjb2RlKTsgfSBy
ZXR1cm4gYXJyYXkoJ2NvZGUnPT4kY29kZSwgJ2NvZGVfbWVzc2FnZSc9PiRtc2cpOyB9IGZ1bmN0
aW9uIGdldEVycm9yTWVzc2FnZSgkY29kZSwgJHZhbHVlKSB7ICRtc2cgPSAoaXNzZXQoJHRoaXMt
PmNvZGVzWyRjb2RlXSkpID8gc3ByaW50ZigkdGhpcy0+Y29kZXNbJGNvZGVdLCAkdmFsdWUpIDog
JHRoaXMtPmNvZGVzWzk4XTsgcmV0dXJuICRtc2c7IH0gZnVuY3Rpb24gY2hlY2tBdmFpbGFiaWxp
dHkoJGNoZWNrX2xpY2Vuc2UgPSB0cnVlKSB7IGlmKCRjaGVja19saWNlbnNlKSB7ICRodG1sZG9j
ID0gQmFzZU1vZGVsOjppc1BsdWdpbkV4cG9ydCgpOyBpZigkY2hlY2tfbGljZW5zZSA9PT0gdHJ1
ZSAmJiAhJGh0bWxkb2MpIHsgcmV0dXJuICR0aGlzLT5lcnJvcigtMyk7IH0gaWYoc3RydG9sb3dl
cigkaHRtbGRvYykgIT09ICdkZW1vJykgeyBpZighS0JWYWxpZGF0ZUxpY2Vuc2U6OmlzUGxhZ2lu
RXhwb3J0S2V5c01hdGNoKCkpIHsgcmV0dXJuICR0aGlzLT5lcnJvcigtNCk7IH0gfSBlbHNlaWYo
c3RydG9sb3dlcigkaHRtbGRvYykgPT0gJ2RlbW8nKSB7ICR0aGlzLT5zZXRDb25maWcoYXJyYXko
J2RlbW9fbW9kZScgPT4gMSkpOyAkdGhpcy0+c2V0U2V0dGluZygnYm9keWltYWdlJywgQVBQX0VY
VFJBX01PRFVMRV9ESVIgLiAncGx1Z2luL2V4cG9ydC90ZW1wbGF0ZS93YXRlcm1hcmsucG5nJyk7
IH0gfSBpZiAoIWZ1bmN0aW9uX2V4aXN0cygncHJvY19vcGVuJykpIHsgcmV0dXJuICR0aGlzLT5l
cnJvcigtMSk7IH0gaWYgKCFpc193cml0YWJsZSgkdGhpcy0+Y29uZmlnWyd0ZW1wX2RpciddKSkg
eyByZXR1cm4gJHRoaXMtPmVycm9yKDEwMDMsICR0aGlzLT5nZXRFcnJvck1lc3NhZ2UoMTAwMywg
JHRoaXMtPmNvbmZpZ1sndGVtcF9kaXInXSkpOyB9IH0gZnVuY3Rpb24gJmdldENhdGVnb3JpZXNB
cnJheSgkdHJlZV9oZWxwZXIpIHsgJGNhdHMgPSBhcnJheSgpOyBmb3JlYWNoKCR0cmVlX2hlbHBl
ciBhcyAkY2F0X2lkID0+ICRsZXZlbCkgeyBpZigkbGV2ZWwgPT0gMCkgeyAkdG9wX2NhdF9pZCA9
ICRjYXRfaWQ7IH0gJGNhdHNbJHRvcF9jYXRfaWRdWyRjYXRfaWRdID0gJGxldmVsOyB9IHJldHVy
biAkY2F0czsgfSBmdW5jdGlvbiAmcGFyc2VCb2R5KCRjb250ZW50KSB7ICRzZWFyY2hbMV0gPSAn
IzxoXGRbXj5dKj4oLio/KTxcL2hcZD4jaSc7ICRyZXBsYWNlWzFdID0gJzxiciAvPjxmb250IHNp
emU9IisxIj48Yj5cXDE8L2I+PC9mb250Pjwvc3Bhbj48YnIgLz4nOyAkc2VhcmNoWzJdID0gJyNo
cmVmPVsiXCddLyguKj8pWyJcJ10jaSc7ICRyZXBsYWNlWzJdID0gJ2hyZWY9Imh0dHA6Ly8nIC4g
JHRoaXMtPmNvbmZpZ1snaHR0cF9ob3N0J10gLiAnLyQxIic7ICRvdXRwdXQgPSBwcmVnX3JlcGxh
Y2UoJHNlYXJjaCwgJHJlcGxhY2UsICRjb250ZW50KTsgJHNlYXJjaCA9ICcjPCh1bHxvbCkgY2xh
c3M9ImV4dHJhTWFyZ2luIj4uKj88XC9cMT4jaXMnOyBwcmVnX21hdGNoX2FsbCgkc2VhcmNoLCAk
b3V0cHV0LCAkbWF0Y2gpOyBpZighZW1wdHkoJG1hdGNoWzBdKSkgeyBmb3JlYWNoKGFycmF5X2tl
eXMoJG1hdGNoWzBdKSBhcyAkaykgeyAkdWwgPSBzdHJfcmVwbGFjZSgnPC9saT4nLCAnPGJyIC8+
PGJyIC8+PC9saT4nLCAkbWF0Y2hbMF1bJGtdKTsgJG91dHB1dCA9IHN0cl9yZXBsYWNlKCRtYXRj
aFswXVska10sICR1bCwgJG91dHB1dCk7IH0gfSBpZiAoJHRoaXMtPmltYWdlX3Jlc2l6ZSB8fCAk
dGhpcy0+dHlwZSA9PSAnaHRtbCcgfHwgJHRoaXMtPnR5cGUgPT0gJ2h0bWxzZXAnKSB7ICRvdXRw
dXQgPSAkdGhpcy0+cGFyc2VJbWFnZSgkb3V0cHV0KTsgfSAkc2VhcmNoID0gJyNzcmM9KFsiXCdd
KS8oLio/KVxcMSNpJzsgJHJlcGxhY2UgPSAnc3JjPSJodHRwOi8vJyAuICR0aGlzLT5jb25maWdb
J2h0dHBfaG9zdCddIC4gJy8kMiInOyAkb3V0cHV0ID0gcHJlZ19yZXBsYWNlKCRzZWFyY2gsICRy
ZXBsYWNlLCAkb3V0cHV0KTsgcmV0dXJuICRvdXRwdXQ7IH0gZnVuY3Rpb24gJnBhcnNlSW1hZ2Uo
JiRodG1sKSB7IHJldHVybiAkaHRtbDsgfSBmdW5jdGlvbiAmZ2V0Q2F0ZWdvcnlGaWxlKCRudW0s
ICRjYXRlZ29yaWVzLCAkbWFuYWdlciwgJGNvbnRyb2xsZXIsICR2aWV3KSB7ICR0cGwgPSBuZXcg
dHBsVGVtcGxhdGV6KEFQUF9FWFRSQV9NT0RVTEVfRElSIC4gJ3BsdWdpbi9leHBvcnQvdGVtcGxh
dGUvZXhwb3J0X2Jvb2tfY2F0ZWdvcnkuaHRtbCcpOyAkdHBsLT50cGxBc3NpZ24oJ2RvY3VtZW50
X3RpdGxlJywgJHRoaXMtPnRpdGxlKTsgZm9yZWFjaCgkY2F0ZWdvcmllcyBhcyAkY2F0X2lkID0+
ICRsZXZlbCkgeyAkaG51bSA9ICRsZXZlbCArIDE7ICR2WydobnVtJ10gPSAkaG51bTsgJG1hbmFn
ZXItPnNldFNxbFBhcmFtcygiQU5EIGNhdC5pZCA9ICd7JGNhdF9pZH0nIiwgJ2V4cG9ydCcpOyAk
bWFuYWdlci0+c2V0U3FsUGFyYW1zT3JkZXIoJ09SREVSIEJZICcgLiAkbWFuYWdlci0+Z2V0U29y
dE9yZGVyKCkpOyAkbGltaXQgPSAoJHRoaXMtPmNvbmZpZ1snZGVtb19tb2RlJ10pID8gMyA6IC0x
OyAkZW50cmllcyA9ICYkbWFuYWdlci0+Z2V0RW50cnlMaXN0KCRsaW1pdCwgMCwgJ2NhdGVnb3J5
Jyk7IGlmKCRlbnRyaWVzKSB7ICRpZHMgPSAkbWFuYWdlci0+Z2V0VmFsdWVzU3RyaW5nKCRlbnRy
aWVzLCAnaWQnKTsgJGN1c3RvbSA9ICRtYW5hZ2VyLT5nZXRDdXN0b21EYXRhQnlFbnRyeUlkKCRp
ZHMsIHRydWUpOyB9IGZvcmVhY2goYXJyYXlfa2V5cygkZW50cmllcykgYXMgJGspIHsgJHJvdyA9
ICRlbnRyaWVzWyRrXTsgaWYoRG9jdW1lbnRQYXJzZXI6OmlzVGVtcGxhdGUoJHJvd1snYm9keSdd
KSkgeyBEb2N1bWVudFBhcnNlcjo6cGFyc2VUZW1wbGF0ZSgkcm93Wydib2R5J10sIGFycmF5KCRt
YW5hZ2VyLCAnZ2V0VGVtcGxhdGUnKSk7IH0gaWYoc3RycG9zKCRyb3dbJ2JvZHknXSwgJ1tsaW5r
OmFydGljbGUnKSAhPT0gZmFsc2UpIHsgJHNlYXJjaCA9ICIjXFtsaW5rOmFydGljbGVcfChcZCsp
XF0jIjsgJHJlcGxhY2UgPSAiI2VudHJ5XyQxIjsgJHJvd1snYm9keSddID0gcHJlZ19yZXBsYWNl
KCRzZWFyY2gsICRyZXBsYWNlLCAkcm93Wydib2R5J10pOyB9IGlmKERvY3VtZW50UGFyc2VyOjpp
c0xpbmsoJHJvd1snYm9keSddKSkgeyBEb2N1bWVudFBhcnNlcjo6cGFyc2VMaW5rKCRyb3dbJ2Jv
ZHknXSwgYXJyYXkoJGNvbnRyb2xsZXIsICdfZ2V0TGluaycpLCAkbWFuYWdlciwgYXJyYXkoKSwg
JHJvd1snaWQnXSwgJGNvbnRyb2xsZXIpOyB9IGlmKERvY3VtZW50UGFyc2VyOjppc0NvZGUoJHJv
d1snYm9keSddKSkgeyBEb2N1bWVudFBhcnNlcjo6cGFyc2VDb2RlUHJpbnQoJHJvd1snYm9keSdd
KTsgfSBEb2N1bWVudFBhcnNlcjo6cGFyc2VDdXJseUJyYWNlcygkcm93Wydib2R5J10pOyAkcm93
WydobnVtJ10gPSAkaG51bSArIDE7ICRyb3dbJ2JvZHknXSA9ICYkdGhpcy0+cGFyc2VCb2R5KCRy
b3dbJ2JvZHknXSk7ICRyb3dbJ2N1c3RvbV90bXBsX3RvcCddID0gJyc7ICRyb3dbJ2N1c3RvbV90
bXBsX2JvdHRvbSddID0gJyc7IGlmKCFlbXB0eSgkY3VzdG9tWyRyb3dbJ2lkJ11dKSkgeyAkY3Vz
dG9tX2RhdGEgPSAkdmlldy0+Z2V0Q3VzdG9tRGF0YSgkY3VzdG9tWyRyb3dbJ2lkJ11dKTsgJHJv
d1snY3VzdG9tX3RtcGxfdG9wJ10gPSAkdmlldy0+cGFyc2VDdXN0b21EYXRhKCRjdXN0b21fZGF0
YVsxXSwgMSk7ICRyb3dbJ2N1c3RvbV90bXBsX2JvdHRvbSddID0gJHZpZXctPnBhcnNlQ3VzdG9t
RGF0YSgkY3VzdG9tX2RhdGFbMl0sIDIpOyB9ICRjYXRfdHlwZSA9ICRtYW5hZ2VyLT5nZXRDYXRl
Z29yeVR5cGUoJGNhdF9pZCk7ICRub2JyZWFrX3R5cGVzID0gYXJyYXkoJ2ZhcScsICdmYXEyJyk7
ICRyb3dbJ3BhZ2VfYnJlYWsnXSA9IChpbl9hcnJheSgkY2F0X3R5cGUsICRub2JyZWFrX3R5cGVz
KSkgPyAnJyA6ICc8IS0tIFBBR0UgQlJFQUsgLS0+JzsgJHRwbC0+dHBsUGFyc2UoJHJvdywgJ2Nh
dGVnb3J5X3Jvdy9lbnRyeV9yb3cnKTsgfSAkY2F0c19saXN0ID0gJiRtYW5hZ2VyLT5nZXRDYXRl
Z29yeUxpc3QoJG1hbmFnZXItPmNhdGVnb3JpZXNbJGNhdF9pZF1bJ3BhcmVudF9pZCddKTsgJHZb
J3RpdGxlJ10gPSAkbWFuYWdlci0+Y2F0ZWdvcmllc1skY2F0X2lkXVsnbmFtZSddOyAkdlsnZGVz
Y3JpcHRpb24nXSA9ICRjYXRzX2xpc3RbJGNhdF9pZF1bJ2Rlc2NyaXB0aW9uJ107ICR0cGwtPnRw
bFNldE5lc3RlZCgnY2F0ZWdvcnlfcm93L2VudHJ5X3JvdycpOyAkdHBsLT50cGxQYXJzZSgkdiwg
J2NhdGVnb3J5X3JvdycpOyB9ICR0cGwtPnRwbFBhcnNlKCk7IHJldHVybiAkdHBsLT50cGxQcmlu
dCgxKTsgfSBmdW5jdGlvbiBnZXRFbnRyeUZpbGUoJGRhdGEsICRtc2cpIHsgJHRwbCA9IG5ldyB0
cGxUZW1wbGF0ZXooQVBQX0VYVFJBX01PRFVMRV9ESVIgLiAncGx1Z2luL2V4cG9ydC90ZW1wbGF0
ZS9leHBvcnRfYm9va19lbnRyeS5odG1sJyk7ICRkYXRhWydib2R5J10gPSAmJHRoaXMtPnBhcnNl
Qm9keSgkZGF0YVsnYm9keSddKTsgaWYoJHRoaXMtPmNvbmZpZ1sncHJpbnRfZW50cnlfaW5mbydd
KSB7ICR0cGwtPnRwbFNldE5lZWRlZCgnL2VudHJ5X2luZm8nKTsgfSAkdHBsLT50cGxQYXJzZShh
cnJheV9tZXJnZSgkZGF0YSwgJG1zZykpOyByZXR1cm4gJHRwbC0+dHBsUHJpbnQoMSk7IH0gZnVu
Y3Rpb24gJmdldEJvb2tGaWxlKCRjYXRlZ29yaWVzKSB7ICRkYXRhID0gYXJyYXkoKTsgJHZlcnNp
b24gPSAkdGhpcy0+Z2V0VmVyc2lvbigpOyAkZGF0YVtdID0gJyNIVE1MRE9DICcgLiAkdmVyc2lv
bjsgJGRhdGFbXSA9IGltcGxvZGUoJyAnLCAkdGhpcy0+c2V0dGluZykgLiAnICcgLiAkdGhpcy0+
Y3VzdG9tX3NldHRpbmc7IGZvcmVhY2goYXJyYXlfa2V5cygkY2F0ZWdvcmllcykgYXMgJGNhdF9p
ZCkgeyAkZGF0YVtdID0gJGNhdF9pZCAuICcuaHRtbCc7IH0gJGRhdGEgPSBpbXBsb2RlKCJcbiIs
ICRkYXRhKTsgcmV0dXJuICRkYXRhOyB9IGZ1bmN0aW9uIHNldENvbmZpZygkY29uZmlnKSB7IGZv
cmVhY2goJGNvbmZpZyBhcyAkayA9PiAkdikgeyAkdGhpcy0+Y29uZmlnWyRrXSA9ICR2OyB9IH0g
ZnVuY3Rpb24gc2V0U2V0dGluZ3MoJHNldHRpbmdzKSB7IGZvcmVhY2goJHNldHRpbmdzIGFzICRv
cHRpb24gPT4gJHBhcmFtKSB7ICR0aGlzLT5zZXRTZXR0aW5nKCRvcHRpb24sICRwYXJhbSk7IH0g
fSBmdW5jdGlvbiBzZXRTZXR0aW5nKCRvcHRpb24sICRwYXJhbSkgeyAkbmV3UGFyYW0gPSAkdGhp
cy0+cGFyc2VTZXR0aW5nKCRvcHRpb24sICRwYXJhbSk7IGlmKCRuZXdQYXJhbSkgeyAkdGhpcy0+
c2V0dGluZ1skb3B0aW9uXSA9ICRuZXdQYXJhbTsgfSB9IGZ1bmN0aW9uIHBhcnNlU2V0dGluZygk
b3B0aW9uLCAkcGFyYW0pIHsgaWYoaXNzZXQoJHRoaXMtPnNldHRpbmdfcnVsZVskb3B0aW9uXSkp
IHsgJHBhcmFtID0gc3ByaW50ZigkdGhpcy0+c2V0dGluZ19ydWxlWyRvcHRpb25dLCAkcGFyYW0p
OyB9IGVsc2VpZigkcGFyYW0pIHsgJHBhcmFtID0gJy0tJy4gJG9wdGlvbjsgfSBlbHNlIHsgcmV0
dXJuIG51bGw7IH0gcmV0dXJuICRwYXJhbTsgfSBmdW5jdGlvbiBkZWxldGVTZXR0aW5nKCRvcHRp
b24pIHsgdW5zZXQoJHRoaXMtPnNldHRpbmdbJG9wdGlvbl0pOyB9IGZ1bmN0aW9uIHNldEN1c3Rv
bVNldHRpbmcoJGNtZF9zdHIpIHsgJGN1c3RvbSA9ICR0aGlzLT5wYXJzZUN1c3RvbU9wdGlvbnMo
JGNtZF9zdHIpOyAkZGF0YSA9IGFycmF5KCk7IGZvcmVhY2ggKCRjdXN0b20gYXMgJGsgPT4gJHYp
IHsgaWYgKCFpbl9hcnJheSgkaywgJHRoaXMtPmZvcmJpZGRlbl9jdXN0b21fc2V0dGluZykpIHsg
JGRhdGFbXSA9ICctLScuICR2WzBdOyAkdGhpcy0+ZGVsZXRlU2V0dGluZygkayk7IH0gfSAkdGhp
cy0+Y3VzdG9tX3NldHRpbmcgPSBpbXBsb2RlKCcgJywgJGRhdGEpOyB9IGZ1bmN0aW9uIHBhcnNl
Q3VzdG9tT3B0aW9ucygkc3RyKSB7ICRkYXRhID0gYXJyYXkoKTsgJHBhdHRlcm4gPSAnL1xCLS0/
Lyc7ICRvcHRpb25zID0gcHJlZ19zcGxpdCgkcGF0dGVybiwgJHN0cik7ICRwYXR0ZXJuID0gJy8o
W1x3LV0rKVs9IF1bXCd8XCJdPyhbXHctXSopW1wnfFwiXT8vJzsgZm9yZWFjaCgkb3B0aW9ucyBh
cyAkdikgeyBwcmVnX21hdGNoKCRwYXR0ZXJuLCAkdiwgJG1hdGNoZXMpOyBpZiAoaXNzZXQoJG1h
dGNoZXNbMV0pKSB7ICRkYXRhWyRtYXRjaGVzWzFdXSA9IGFycmF5KCRtYXRjaGVzWzBdLCAkbWF0
Y2hlc1syXSk7IH0gfSByZXR1cm4gJGRhdGE7IH0gZnVuY3Rpb24gd3JpdGVCb29rRmlsZSgkY29u
dGVudCkgeyAkZmlsZW5hbWUgPSAkdGhpcy0+Y29uZmlnWyd0ZW1wX2RpciddIC4gJHRoaXMtPmNv
bmZpZ1snYm9va19maWxlX25hbWUnXTsgJHJldCA9IEZpbGVVdGlsOjp3cml0ZSgkZmlsZW5hbWUs
ICRjb250ZW50KTsgaWYoISRyZXQpIHsgcmV0dXJuICR0aGlzLT5lcnJvcigxMDA2LCAkdGhpcy0+
Z2V0RXJyb3JNZXNzYWdlKDEwMDYsICRmaWxlbmFtZSkpOyB9IH0gZnVuY3Rpb24gd3JpdGVUbXBG
aWxlKCRjb250ZW50LCAkaWQpIHsgJGZpbGVuYW1lID0gJHRoaXMtPmNvbmZpZ1sndGVtcF9kaXIn
XSAuICRpZCAuICcuaHRtbCc7ICRyZXQgPSBGaWxlVXRpbDo6d3JpdGUoJGZpbGVuYW1lLCAkY29u
dGVudCk7IGlmKCEkcmV0KSB7IHJldHVybiAkdGhpcy0+ZXJyb3IoMTAwNiwgJHRoaXMtPmdldEVy
cm9yTWVzc2FnZSgxMDA2LCAkZmlsZW5hbWUpKTsgfSB9IGZ1bmN0aW9uIGV4ZWN1dGUoJHR5cGUp
IHsgJGJvb2tfZmlsZSA9ICR0aGlzLT5jb25maWdbJ3RlbXBfZGlyJ10gLiAkdGhpcy0+Y29uZmln
Wydib29rX2ZpbGVfbmFtZSddOyBpZiAoIWZpbGVfZXhpc3RzKCRib29rX2ZpbGUpKSB7ICRlcnJv
ciA9ICR0aGlzLT5lcnJvcigxMDA0LCAkdGhpcy0+Z2V0RXJyb3JNZXNzYWdlKDEwMDQsICRib29r
X2ZpbGUpKTsgcmV0dXJuIGFycmF5KGFycmF5KCksICRlcnJvciwgYXJyYXQoKSk7IH0gJGRlc2Ny
aXB0b3JzcGVjID0gYXJyYXkoIDAgPT4gYXJyYXkoJ3BpcGUnLCAncicpLCAxID0+IGFycmF5KCdw
aXBlJywgJ3cnKSwgMiA9PiBhcnJheSgncGlwZScsICd3JykgKTsgJGNtZCA9ICciJyAuICR0aGlz
LT5jb25maWdbJ3Rvb2xfcGF0aCddIC4gJ2h0bWxkb2MiIC0tYmF0Y2ggJyAuICRib29rX2ZpbGU7
ICRwcm9jZXNzID0gcHJvY19vcGVuKCRjbWQsICRkZXNjcmlwdG9yc3BlYywgJHBpcGVzKTsgJG91
dHB1dCA9ICcnOyAkcmVzdWx0ID0gJyc7IGlmIChpc19yZXNvdXJjZSgkcHJvY2VzcykpIHsgZmNs
b3NlKCRwaXBlc1swXSk7ICRvdXRwdXQgPSBzdHJlYW1fZ2V0X2NvbnRlbnRzKCRwaXBlc1sxXSk7
IGZjbG9zZSgkcGlwZXNbMV0pOyAkcmVzdWx0ID0gc3RyZWFtX2dldF9jb250ZW50cygkcGlwZXNb
Ml0pOyBmY2xvc2UoJHBpcGVzWzJdKTsgfSAkZXhpdF9zdGF0dXMgPSBwcm9jX2Nsb3NlKCRwcm9j
ZXNzKTsgJGVycm9yID0gJyc7IGlmKCRleGl0X3N0YXR1cyAhPSAwKSB7ICRtc2cgPSAoJHJlc3Vs
dCkgPyAkcmVzdWx0IDogJHRoaXMtPmNvZGVzWzEwMDJdOyAkZXJyb3IgPSAkdGhpcy0+ZXJyb3Io
JGV4aXRfc3RhdHVzLCAkbXNnKTsgfSByZXR1cm4gYXJyYXkoJG91dHB1dCwgJGVycm9yLCAkcmVz
dWx0KTsgfSBmdW5jdGlvbiBnZXRWZXJzaW9uKCkgeyAkY21kID0gJHRoaXMtPmNvbmZpZ1sndG9v
bF9wYXRoJ10gLiAnaHRtbGRvYyAtLXZlcnNpb24nOyAkdmVyc2lvbiA9IGV4ZWMoJGNtZCk7IHJl
dHVybiAkdmVyc2lvbjsgfSBmdW5jdGlvbiBzZXRUaXRsZSgkdGl0bGUgPSBmYWxzZSwgJHN0dWZm
ID0gZmFsc2UpIHsgJHRoaXMtPnRpdGxlID0gJHRpdGxlOyAkaW1hZ2UgPSBmYWxzZTsgJHRwbCA9
IG5ldyB0cGxUZW1wbGF0ZXooQVBQX0VYVFJBX01PRFVMRV9ESVIgLiAncGx1Z2luL2V4cG9ydC90
ZW1wbGF0ZS9leHBvcnRfdGl0bGUuaHRtbCcpOyAkdHBsLT50cGxBc3NpZ24oJ3RpdGxlJywgKCR0
aXRsZSkgPyAkdGl0bGUgOiAnJyk7IGlmKCRzdHVmZikgeyAkaW1hZ2UgPSBBUFBfQ0xJRU5UX1BB
VEggLiAnZmlsZS5waHA/dHlwZT1pbWFnZSZpZD0nIC4gJHN0dWZmWydpZCddOyBpZiAoJHRoaXMt
PnR5cGUgPT0gJ2h0bWwnIHx8ICR0aGlzLT50eXBlID09ICdodG1sc2VwJykgeyAkaW1hZ2VfcGF0
aCA9ICR0aGlzLT5jb25maWdbJ3RlbXBfZGlyJ10gLiAnL291dHB1dC8nIC4gJHN0dWZmWydmaWxl
bmFtZSddOyBpZiAoY29weSgkaW1hZ2UsICRpbWFnZV9wYXRoKSkgeyAkdGhpcy0+dGl0bGVfaW1h
Z2UgPSAkc3R1ZmY7IH0gZWxzZSB7ICR0aGlzLT5lcnJvcigxMDA4LCAkdGhpcy0+Z2V0RXJyb3JN
ZXNzYWdlKDEwMDgsICRpbWFnZSkpOyB9IH0gJGltYWdlX2h0bWwgPSAoJHRoaXMtPnR5cGUgPT0g
J3BkZicpID8gJzxpbWcgc3JjPSInIC4gJGltYWdlIC4gJyIgLz4nIDogJ1tJTUdfUkVQTEFDRV0n
OyB9IGVsc2UgeyAkaW1hZ2VfaHRtbCA9ICcnOyB9ICR0cGwtPnRwbEFzc2lnbignaW1hZ2V0aXRs
ZScsICRpbWFnZV9odG1sKTsgJHRwbC0+dHBsUGFyc2UoKTsgJGRhdGEgPSAkdHBsLT50cGxQcmlu
dCgxKTsgaWYgKEZpbGVVdGlsOjp3cml0ZSgkdGhpcy0+Y29uZmlnWyd0ZW1wX2RpciddIC4gJ3Rp
dGxlLmh0bWwnLCAkZGF0YSkpIHsgJHRoaXMtPnNldFNldHRpbmcoJ3RpdGxlZmlsZScsICR0aGlz
LT5jb25maWdbJ3RlbXBfZGlyJ10gLiAndGl0bGUuaHRtbCcpOyB9IH0gZnVuY3Rpb24gc2V0QXJj
aGl2ZVR5cGUoJHR5cGUpIHsgJHRoaXMtPmFyY2hpdmVfdHlwZSA9ICR0eXBlOyB9IGZ1bmN0aW9u
IGdldFRlbXBEaXIoJGRpciwgJHR5cGUpIHsgJGRpciA9IHByZWdfcmVwbGFjZSgnI1xcXFwjJywg
Jy8nLCAkZGlyKTsgJHN1Yl9kaXIgPSAnZXhwb3J0XycgLiBtZDUoJ2V4cG9ydCcgLiAkdHlwZSAu
IHRpbWUoKSk7ICRleHBvcnRfZGlyID0gJGRpciAuICcvJyAuICRzdWJfZGlyIC4gJy8nOyAkZXhw
b3J0X2RpciA9IHN0cl9yZXBsYWNlKCcvLycsICcvJywgJGV4cG9ydF9kaXIpOyByZXR1cm4gJGV4
cG9ydF9kaXI7IH0gZnVuY3Rpb24gY3JlYXRlVGVtcERpcigpIHsgJHRoaXMtPmNyZWF0ZURpcigk
dGhpcy0+Y29uZmlnWyd0ZW1wX2RpciddKTsgfSBmdW5jdGlvbiBjcmVhdGVEaXIoJGRpcikgeyBp
ZighaXNfZGlyKCRkaXIpKSB7ICRvbGR1bWFzayA9IHVtYXNrKDApOyAkciA9IG1rZGlyKCRkaXIs
IDA3NzcpOyB1bWFzaygkb2xkdW1hc2spOyBpZiAoISRyKSB7ICR0aGlzLT5lcnJvcigxMDA1LCAk
dGhpcy0+Z2V0RXJyb3JNZXNzYWdlKDEwMDUsICRkaXIpKTsgfSB9IGlmKCFpc193cml0ZWFibGUo
JGRpcikpIHsgJHRoaXMtPmVycm9yKDEwMDMsICR0aGlzLT5nZXRFcnJvck1lc3NhZ2UoMTAwMywg
JGRpcikpOyB9IH0gZnVuY3Rpb24gcmVtb3ZlVGVtcERpcigpIHsgcmVxdWlyZV9vbmNlICdlbGVv
bnRldi9EaXIvTXlEaXIucGhwJzsgJGQgPSBuZXcgTXlEaXI7ICRyZXQgPSAkZC0+cmVtb3ZlRmls
ZXNEaXJzKCR0aGlzLT5jb25maWdbJ3RlbXBfZGlyJ10pOyB9IH0g
")); 
?>

Function Calls

base64_decode 1

Variables

None

Stats

MD5 68b1aaf326d8853587fcfa282e5ee456
Eval Count 1
Decode Time 90 ms