Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

eval(base64_decode("Y2xhc3MgQml6dGVjaF9BdXNwb3N0X0hlbHBlcl9EYXRhIGV4dGVuZHMgTWFnZV9Db3JlX0..

Decoded Output download

class Biztech_Auspost_Helper_Data extends Mage_Core_Helper_Abstract
    {
        public function buildHttpQuery($query)
        {
            $query_array = array();
            foreach($query as $key => $key_value)
                $query_array[] = $key . '=' . urlencode( $key_value );
            return implode( '&', $query_array );
        }

        public function parseXml($xmlString)
        {
            libxml_use_internal_errors(true);
            $xmlObject = simplexml_load_string($xmlString);
            $result = array ();
            if (!empty($xmlObject))
                $this->convertXmlObjToArr($xmlObject, $result);
            return $result;
        }

        public function convertXmlObjToArr($obj, &$arr)
        {
            $children = $obj->children();
            $executed = false;
            foreach ($children as $elementName => $node)
            {
                if(is_array($arr) && array_key_exists( $elementName , $arr ) )
                {
                    if(is_array($arr[$elementName])&& array_key_exists( 0 ,$arr[$elementName] ) )
                    {
                        $i = count($arr[$elementName]);
                        $this->convertXmlObjToArr ($node, $arr[$elementName][$i]);
                    }
                    else
                    {
                        $tmp = $arr[$elementName];
                        $arr[$elementName] = array();
                        $arr[$elementName][0] = $tmp;
                        $i = count($arr[$elementName]);
                        $this->convertXmlObjToArr($node, $arr[$elementName][$i]);
                    }
                }
                else
                {
                    $arr[$elementName] = array();
                    $this->convertXmlObjToArr($node, $arr[$elementName]);   
                }
                $executed = true;
            }
            if(!$executed&&$children->getName()=="")
            {
                $arr = (String)$obj;
            }
            return ;
        }

        public function ausPostValidation($url, $headers = array (), $auth = true) 
        {
            $api_key  = Mage::getStoreConfig('carriers/auspost/auspost_api_key');
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL,$url);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($ch, CURLOPT_HTTPHEADER, array(
                    'Auth-Key: ' . $api_key
                ));
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            $contents = curl_exec ($ch);
            curl_close ($ch);
            return $contents;
        }


        public function getAllStoreDomains() {
            $domains = array();
            foreach (Mage::app()->getWebsites() as $website) {
                $url = $website->getConfig('web/unsecure/base_url');
                if ($domain = trim(preg_replace('/^.*?\/\/(.*)?\//', '$1', $url))) {
                    $domains[] = $domain;
                }
                $url = $website->getConfig('web/secure/base_url');
                if ($domain = trim(preg_replace('/^.*?\/\/(.*)?\//', '$1', $url))) {
                    $domains[] = $domain;
                }
            }
            return array_unique($domains);
        }


        public function checkKey($k,$s = ''){    
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, sprintf('http://store.biztechconsultancy.com/extension/licence.php'));
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, 'key='.urlencode($k).'&domains='.urlencode(implode(',', $this->getAllStoreDomains())).'&sec=australianpost');
            curl_setopt($ch, CURLOPT_TIMEOUT, 30);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
            $content = curl_exec($ch);
            $res = Zend_Json::decode($content);
            $modulestatus = new Mage_Core_Model_Config();
            $enc = Mage::helper('core');      
            if(empty($res)){
                $modulestatus->saveConfig('auspost/activation/key', "");
                $modulestatus->saveConfig('carriers/auspost/active', 0);
                $data = Mage::getStoreConfig('auspost/activation/data');
                $groups = array(
                    'activation'=>array(
                        'fields'=>array(
                            'data'=>array(
                                'value'=>$data
                            ),
                            'websites'=>array(
                                'value'=>''
                            )                        
                        )
                    )
                );
                Mage::getModel('adminhtml/config_data')
                ->setSection('auspost')
                ->setGroups($groups)
                ->save();
                Mage::getConfig()->reinit();
                Mage::app()->reinitStores();  
                return;
            }
            $data = '';
            $web  = '';  
            $en   = '';   

            if(isset($res['dom']) && intval($res['c']) > 0 &&  intval($res['suc']) == 1){
                $data = $enc->encrypt(base64_encode(Zend_Json::encode($res)));
                if (!$s)
                { 
                    $params =  Mage::app()->getRequest()->getParam('groups');
                    if(isset($params['activation']['fields']['websites']['value'])){
                        $s = $params['activation']['fields']['websites']['value'];
                    }
                }
                $en = $res['suc'];
                if(isset($s) && $s != null){
                    $web = $enc->encrypt($data.implode(',', $s).$data);
                }else{
                    $web = $enc->encrypt($data.$data);
                }
            }
            else
            {
                $modulestatus->saveConfig('auspost/activation/key', "");
                $modulestatus->saveConfig('carriers/auspost/active', 0);

            }
            $groups = array(
                'activation'=>array(
                    'fields'=>array(
                        'data'=>array(
                            'value'=>$data
                        ),
                        'websites'=>array(
                            'value'=>(string)$web
                        ),
                        'en'=>array(
                            'value'=>$en
                        ),

                        'installed'=>array(
                            'value'=>1
                        )
                    )
                )
            );
            Mage::getModel('adminhtml/config_data')
            ->setSection('auspost')
            ->setGroups($groups)
            ->save();
            Mage::getConfig()->reinit();
            Mage::app()->reinitStores();  
        }

        public function getDataInfo()
        {
            $data = Mage::getStoreConfig('auspost/activation/data');
            return Zend_Json::decode(base64_decode(Mage::helper('core')->decrypt($data)));
        }

        public function getAllWebsites(){

            if(!Mage::getStoreConfig('auspost/activation/installed'))
            {
                return array();
            }
            $data = Mage::getStoreConfig('auspost/activation/data');
            $web = Mage::getStoreConfig('auspost/activation/websites');
            $websites = explode(',', str_replace($data, '', Mage::helper('core')->decrypt($web)));
            $websites = array_diff($websites, array(""));
            return $websites;
        }

        public function getFormatUrl($url)
        {
            $input = trim($url, '/');
            if (!preg_match('#^http(s)?://#', $input)) {
                $input = 'http://' . $input;
            }
            $urlParts = parse_url($input);
            $domain   = preg_replace('/^www\./', '', $urlParts['host'].$urlParts['path']);
            return $domain;
        }

        public function isEnable()
        {                
            $websiteId = Mage::app()->getWebsite()->getId() ; 
            $isenabled = Mage::getStoreConfig('carriers/auspost/active');
            if($isenabled){
                if($websiteId){
                    $websites = $this->getAllWebsites();
                    $key      = Mage::getStoreConfig('auspost/activation/key');
                    if($key == null || $key == '')
                    {
                        return false; 
                    }else{
                        $en = Mage::getStoreConfig('auspost/activation/en');
                        if($isenabled && $en && in_array($websiteId, $websites))
                        { return true; } else { return false; }
                    }
                }
                else{
                    $en = Mage::getStoreConfig('auspost/activation/en');
                    if($isenabled && $en){return true;}
                }
            }
        }
    }

Did this file decode correctly?

Original Code

eval(base64_decode("Y2xhc3MgQml6dGVjaF9BdXNwb3N0X0hlbHBlcl9EYXRhIGV4dGVuZHMgTWFnZV9Db3JlX0hlbHBlcl9BYnN0cmFjdAogICAgewogICAgICAgIHB1YmxpYyBmdW5jdGlvbiBidWlsZEh0dHBRdWVyeSgkcXVlcnkpCiAgICAgICAgewogICAgICAgICAgICAkcXVlcnlfYXJyYXkgPSBhcnJheSgpOwogICAgICAgICAgICBmb3JlYWNoKCRxdWVyeSBhcyAka2V5ID0+ICRrZXlfdmFsdWUpCiAgICAgICAgICAgICAgICAkcXVlcnlfYXJyYXlbXSA9ICRrZXkgLiAnPScgLiB1cmxlbmNvZGUoICRrZXlfdmFsdWUgKTsKICAgICAgICAgICAgcmV0dXJuIGltcGxvZGUoICcmJywgJHF1ZXJ5X2FycmF5ICk7CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgZnVuY3Rpb24gcGFyc2VYbWwoJHhtbFN0cmluZykKICAgICAgICB7CiAgICAgICAgICAgIGxpYnhtbF91c2VfaW50ZXJuYWxfZXJyb3JzKHRydWUpOwogICAgICAgICAgICAkeG1sT2JqZWN0ID0gc2ltcGxleG1sX2xvYWRfc3RyaW5nKCR4bWxTdHJpbmcpOwogICAgICAgICAgICAkcmVzdWx0ID0gYXJyYXkgKCk7CiAgICAgICAgICAgIGlmICghZW1wdHkoJHhtbE9iamVjdCkpCiAgICAgICAgICAgICAgICAkdGhpcy0+Y29udmVydFhtbE9ialRvQXJyKCR4bWxPYmplY3QsICRyZXN1bHQpOwogICAgICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgICAgICB9CgogICAgICAgIHB1YmxpYyBmdW5jdGlvbiBjb252ZXJ0WG1sT2JqVG9BcnIoJG9iaiwgJiRhcnIpCiAgICAgICAgewogICAgICAgICAgICAkY2hpbGRyZW4gPSAkb2JqLT5jaGlsZHJlbigpOwogICAgICAgICAgICAkZXhlY3V0ZWQgPSBmYWxzZTsKICAgICAgICAgICAgZm9yZWFjaCAoJGNoaWxkcmVuIGFzICRlbGVtZW50TmFtZSA9PiAkbm9kZSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYoaXNfYXJyYXkoJGFycikgJiYgYXJyYXlfa2V5X2V4aXN0cyggJGVsZW1lbnROYW1lICwgJGFyciApICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpZihpc19hcnJheSgkYXJyWyRlbGVtZW50TmFtZV0pJiYgYXJyYXlfa2V5X2V4aXN0cyggMCAsJGFyclskZWxlbWVudE5hbWVdICkgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGkgPSBjb3VudCgkYXJyWyRlbGVtZW50TmFtZV0pOwogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Y29udmVydFhtbE9ialRvQXJyICgkbm9kZSwgJGFyclskZWxlbWVudE5hbWVdWyRpXSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0bXAgPSAkYXJyWyRlbGVtZW50TmFtZV07CiAgICAgICAgICAgICAgICAgICAgICAgICRhcnJbJGVsZW1lbnROYW1lXSA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICRhcnJbJGVsZW1lbnROYW1lXVswXSA9ICR0bXA7CiAgICAgICAgICAgICAgICAgICAgICAgICRpID0gY291bnQoJGFyclskZWxlbWVudE5hbWVdKTsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmNvbnZlcnRYbWxPYmpUb0Fycigkbm9kZSwgJGFyclskZWxlbWVudE5hbWVdWyRpXSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRhcnJbJGVsZW1lbnROYW1lXSA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmNvbnZlcnRYbWxPYmpUb0Fycigkbm9kZSwgJGFyclskZWxlbWVudE5hbWVdKTsgICAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRleGVjdXRlZCA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoISRleGVjdXRlZCYmJGNoaWxkcmVuLT5nZXROYW1lKCk9PSIiKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkYXJyID0gKFN0cmluZykkb2JqOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiA7CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgZnVuY3Rpb24gYXVzUG9zdFZhbGlkYXRpb24oJHVybCwgJGhlYWRlcnMgPSBhcnJheSAoKSwgJGF1dGggPSB0cnVlKSAKICAgICAgICB7CiAgICAgICAgICAgICRhcGlfa2V5ICA9IE1hZ2U6OmdldFN0b3JlQ29uZmlnKCdjYXJyaWVycy9hdXNwb3N0L2F1c3Bvc3RfYXBpX2tleScpOwogICAgICAgICAgICAkY2ggPSBjdXJsX2luaXQoKTsKICAgICAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VSTCwkdXJsKTsKICAgICAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1NTTF9WRVJJRllQRUVSLCBmYWxzZSk7CiAgICAgICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9IVFRQSEVBREVSLCBhcnJheSgKICAgICAgICAgICAgICAgICAgICAnQXV0aC1LZXk6ICcgLiAkYXBpX2tleQogICAgICAgICAgICAgICAgKSk7CiAgICAgICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgMSk7CiAgICAgICAgICAgICRjb250ZW50cyA9IGN1cmxfZXhlYyAoJGNoKTsKICAgICAgICAgICAgY3VybF9jbG9zZSAoJGNoKTsKICAgICAgICAgICAgcmV0dXJuICRjb250ZW50czsKICAgICAgICB9CgoKICAgICAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QWxsU3RvcmVEb21haW5zKCkgewogICAgICAgICAgICAkZG9tYWlucyA9IGFycmF5KCk7CiAgICAgICAgICAgIGZvcmVhY2ggKE1hZ2U6OmFwcCgpLT5nZXRXZWJzaXRlcygpIGFzICR3ZWJzaXRlKSB7CiAgICAgICAgICAgICAgICAkdXJsID0gJHdlYnNpdGUtPmdldENvbmZpZygnd2ViL3Vuc2VjdXJlL2Jhc2VfdXJsJyk7CiAgICAgICAgICAgICAgICBpZiAoJGRvbWFpbiA9IHRyaW0ocHJlZ19yZXBsYWNlKCcvXi4qP1wvXC8oLiopP1wvLycsICckMScsICR1cmwpKSkgewogICAgICAgICAgICAgICAgICAgICRkb21haW5zW10gPSAkZG9tYWluOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHVybCA9ICR3ZWJzaXRlLT5nZXRDb25maWcoJ3dlYi9zZWN1cmUvYmFzZV91cmwnKTsKICAgICAgICAgICAgICAgIGlmICgkZG9tYWluID0gdHJpbShwcmVnX3JlcGxhY2UoJy9eLio/XC9cLyguKik/XC8vJywgJyQxJywgJHVybCkpKSB7CiAgICAgICAgICAgICAgICAgICAgJGRvbWFpbnNbXSA9ICRkb21haW47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGFycmF5X3VuaXF1ZSgkZG9tYWlucyk7CiAgICAgICAgfQoKCiAgICAgICAgcHVibGljIGZ1bmN0aW9uIGNoZWNrS2V5KCRrLCRzID0gJycpeyAgICAKICAgICAgICAgICAgJGNoID0gY3VybF9pbml0KCk7CiAgICAgICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VUkwsIHNwcmludGYoJ2h0dHA6Ly9zdG9yZS5iaXp0ZWNoY29uc3VsdGFuY3kuY29tL2V4dGVuc2lvbi9saWNlbmNlLnBocCcpKTsKICAgICAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1BPU1QsIHRydWUpOwogICAgICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUE9TVEZJRUxEUywgJ2tleT0nLnVybGVuY29kZSgkaykuJyZkb21haW5zPScudXJsZW5jb2RlKGltcGxvZGUoJywnLCAkdGhpcy0+Z2V0QWxsU3RvcmVEb21haW5zKCkpKS4nJnNlYz1hdXN0cmFsaWFucG9zdCcpOwogICAgICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVElNRU9VVCwgMzApOwogICAgICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIHRydWUpOwogICAgICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIDApOwogICAgICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfU1NMX1ZFUklGWUhPU1QsIDApOwogICAgICAgICAgICAkY29udGVudCA9IGN1cmxfZXhlYygkY2gpOwogICAgICAgICAgICAkcmVzID0gWmVuZF9Kc29uOjpkZWNvZGUoJGNvbnRlbnQpOwogICAgICAgICAgICAkbW9kdWxlc3RhdHVzID0gbmV3IE1hZ2VfQ29yZV9Nb2RlbF9Db25maWcoKTsKICAgICAgICAgICAgJGVuYyA9IE1hZ2U6OmhlbHBlcignY29yZScpOyAgICAgIAogICAgICAgICAgICBpZihlbXB0eSgkcmVzKSl7CiAgICAgICAgICAgICAgICAkbW9kdWxlc3RhdHVzLT5zYXZlQ29uZmlnKCdhdXNwb3N0L2FjdGl2YXRpb24va2V5JywgIiIpOwogICAgICAgICAgICAgICAgJG1vZHVsZXN0YXR1cy0+c2F2ZUNvbmZpZygnY2FycmllcnMvYXVzcG9zdC9hY3RpdmUnLCAwKTsKICAgICAgICAgICAgICAgICRkYXRhID0gTWFnZTo6Z2V0U3RvcmVDb25maWcoJ2F1c3Bvc3QvYWN0aXZhdGlvbi9kYXRhJyk7CiAgICAgICAgICAgICAgICAkZ3JvdXBzID0gYXJyYXkoCiAgICAgICAgICAgICAgICAgICAgJ2FjdGl2YXRpb24nPT5hcnJheSgKICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkcyc9PmFycmF5KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEnPT5hcnJheSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmFsdWUnPT4kZGF0YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3ZWJzaXRlcyc9PmFycmF5KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZSc9PicnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgTWFnZTo6Z2V0TW9kZWwoJ2FkbWluaHRtbC9jb25maWdfZGF0YScpCiAgICAgICAgICAgICAgICAtPnNldFNlY3Rpb24oJ2F1c3Bvc3QnKQogICAgICAgICAgICAgICAgLT5zZXRHcm91cHMoJGdyb3VwcykKICAgICAgICAgICAgICAgIC0+c2F2ZSgpOwogICAgICAgICAgICAgICAgTWFnZTo6Z2V0Q29uZmlnKCktPnJlaW5pdCgpOwogICAgICAgICAgICAgICAgTWFnZTo6YXBwKCktPnJlaW5pdFN0b3JlcygpOyAgCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGRhdGEgPSAnJzsKICAgICAgICAgICAgJHdlYiAgPSAnJzsgIAogICAgICAgICAgICAkZW4gICA9ICcnOyAgIAoKICAgICAgICAgICAgaWYoaXNzZXQoJHJlc1snZG9tJ10pICYmIGludHZhbCgkcmVzWydjJ10pID4gMCAmJiAgaW50dmFsKCRyZXNbJ3N1YyddKSA9PSAxKXsKICAgICAgICAgICAgICAgICRkYXRhID0gJGVuYy0+ZW5jcnlwdChiYXNlNjRfZW5jb2RlKFplbmRfSnNvbjo6ZW5jb2RlKCRyZXMpKSk7CiAgICAgICAgICAgICAgICBpZiAoISRzKQogICAgICAgICAgICAgICAgeyAKICAgICAgICAgICAgICAgICAgICAkcGFyYW1zID0gIE1hZ2U6OmFwcCgpLT5nZXRSZXF1ZXN0KCktPmdldFBhcmFtKCdncm91cHMnKTsKICAgICAgICAgICAgICAgICAgICBpZihpc3NldCgkcGFyYW1zWydhY3RpdmF0aW9uJ11bJ2ZpZWxkcyddWyd3ZWJzaXRlcyddWyd2YWx1ZSddKSl7CiAgICAgICAgICAgICAgICAgICAgICAgICRzID0gJHBhcmFtc1snYWN0aXZhdGlvbiddWydmaWVsZHMnXVsnd2Vic2l0ZXMnXVsndmFsdWUnXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkZW4gPSAkcmVzWydzdWMnXTsKICAgICAgICAgICAgICAgIGlmKGlzc2V0KCRzKSAmJiAkcyAhPSBudWxsKXsKICAgICAgICAgICAgICAgICAgICAkd2ViID0gJGVuYy0+ZW5jcnlwdCgkZGF0YS5pbXBsb2RlKCcsJywgJHMpLiRkYXRhKTsKICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICR3ZWIgPSAkZW5jLT5lbmNyeXB0KCRkYXRhLiRkYXRhKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRtb2R1bGVzdGF0dXMtPnNhdmVDb25maWcoJ2F1c3Bvc3QvYWN0aXZhdGlvbi9rZXknLCAiIik7CiAgICAgICAgICAgICAgICAkbW9kdWxlc3RhdHVzLT5zYXZlQ29uZmlnKCdjYXJyaWVycy9hdXNwb3N0L2FjdGl2ZScsIDApOwoKICAgICAgICAgICAgfQogICAgICAgICAgICAkZ3JvdXBzID0gYXJyYXkoCiAgICAgICAgICAgICAgICAnYWN0aXZhdGlvbic9PmFycmF5KAogICAgICAgICAgICAgICAgICAgICdmaWVsZHMnPT5hcnJheSgKICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEnPT5hcnJheSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZSc9PiRkYXRhCiAgICAgICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgICAgICd3ZWJzaXRlcyc9PmFycmF5KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlJz0+KHN0cmluZykkd2ViCiAgICAgICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgICAgICdlbic9PmFycmF5KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlJz0+JGVuCiAgICAgICAgICAgICAgICAgICAgICAgICksCgogICAgICAgICAgICAgICAgICAgICAgICAnaW5zdGFsbGVkJz0+YXJyYXkoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmFsdWUnPT4xCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIE1hZ2U6OmdldE1vZGVsKCdhZG1pbmh0bWwvY29uZmlnX2RhdGEnKQogICAgICAgICAgICAtPnNldFNlY3Rpb24oJ2F1c3Bvc3QnKQogICAgICAgICAgICAtPnNldEdyb3VwcygkZ3JvdXBzKQogICAgICAgICAgICAtPnNhdmUoKTsKICAgICAgICAgICAgTWFnZTo6Z2V0Q29uZmlnKCktPnJlaW5pdCgpOwogICAgICAgICAgICBNYWdlOjphcHAoKS0+cmVpbml0U3RvcmVzKCk7ICAKICAgICAgICB9CgogICAgICAgIHB1YmxpYyBmdW5jdGlvbiBnZXREYXRhSW5mbygpCiAgICAgICAgewogICAgICAgICAgICAkZGF0YSA9IE1hZ2U6OmdldFN0b3JlQ29uZmlnKCdhdXNwb3N0L2FjdGl2YXRpb24vZGF0YScpOwogICAgICAgICAgICByZXR1cm4gWmVuZF9Kc29uOjpkZWNvZGUoYmFzZTY0X2RlY29kZShNYWdlOjpoZWxwZXIoJ2NvcmUnKS0+ZGVjcnlwdCgkZGF0YSkpKTsKICAgICAgICB9CgogICAgICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGxXZWJzaXRlcygpewoKICAgICAgICAgICAgaWYoIU1hZ2U6OmdldFN0b3JlQ29uZmlnKCdhdXNwb3N0L2FjdGl2YXRpb24vaW5zdGFsbGVkJykpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHJldHVybiBhcnJheSgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRkYXRhID0gTWFnZTo6Z2V0U3RvcmVDb25maWcoJ2F1c3Bvc3QvYWN0aXZhdGlvbi9kYXRhJyk7CiAgICAgICAgICAgICR3ZWIgPSBNYWdlOjpnZXRTdG9yZUNvbmZpZygnYXVzcG9zdC9hY3RpdmF0aW9uL3dlYnNpdGVzJyk7CiAgICAgICAgICAgICR3ZWJzaXRlcyA9IGV4cGxvZGUoJywnLCBzdHJfcmVwbGFjZSgkZGF0YSwgJycsIE1hZ2U6OmhlbHBlcignY29yZScpLT5kZWNyeXB0KCR3ZWIpKSk7CiAgICAgICAgICAgICR3ZWJzaXRlcyA9IGFycmF5X2RpZmYoJHdlYnNpdGVzLCBhcnJheSgiIikpOwogICAgICAgICAgICByZXR1cm4gJHdlYnNpdGVzOwogICAgICAgIH0KCiAgICAgICAgcHVibGljIGZ1bmN0aW9uIGdldEZvcm1hdFVybCgkdXJsKQogICAgICAgIHsKICAgICAgICAgICAgJGlucHV0ID0gdHJpbSgkdXJsLCAnLycpOwogICAgICAgICAgICBpZiAoIXByZWdfbWF0Y2goJyNeaHR0cChzKT86Ly8jJywgJGlucHV0KSkgewogICAgICAgICAgICAgICAgJGlucHV0ID0gJ2h0dHA6Ly8nIC4gJGlucHV0OwogICAgICAgICAgICB9CiAgICAgICAgICAgICR1cmxQYXJ0cyA9IHBhcnNlX3VybCgkaW5wdXQpOwogICAgICAgICAgICAkZG9tYWluICAgPSBwcmVnX3JlcGxhY2UoJy9ed3d3XC4vJywgJycsICR1cmxQYXJ0c1snaG9zdCddLiR1cmxQYXJ0c1sncGF0aCddKTsKICAgICAgICAgICAgcmV0dXJuICRkb21haW47CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgZnVuY3Rpb24gaXNFbmFibGUoKQogICAgICAgIHsgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICR3ZWJzaXRlSWQgPSBNYWdlOjphcHAoKS0+Z2V0V2Vic2l0ZSgpLT5nZXRJZCgpIDsgCiAgICAgICAgICAgICRpc2VuYWJsZWQgPSBNYWdlOjpnZXRTdG9yZUNvbmZpZygnY2FycmllcnMvYXVzcG9zdC9hY3RpdmUnKTsKICAgICAgICAgICAgaWYoJGlzZW5hYmxlZCl7CiAgICAgICAgICAgICAgICBpZigkd2Vic2l0ZUlkKXsKICAgICAgICAgICAgICAgICAgICAkd2Vic2l0ZXMgPSAkdGhpcy0+Z2V0QWxsV2Vic2l0ZXMoKTsKICAgICAgICAgICAgICAgICAgICAka2V5ICAgICAgPSBNYWdlOjpnZXRTdG9yZUNvbmZpZygnYXVzcG9zdC9hY3RpdmF0aW9uL2tleScpOwogICAgICAgICAgICAgICAgICAgIGlmKCRrZXkgPT0gbnVsbCB8fCAka2V5ID09ICcnKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAKICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgJGVuID0gTWFnZTo6Z2V0U3RvcmVDb25maWcoJ2F1c3Bvc3QvYWN0aXZhdGlvbi9lbicpOwogICAgICAgICAgICAgICAgICAgICAgICBpZigkaXNlbmFibGVkICYmICRlbiAmJiBpbl9hcnJheSgkd2Vic2l0ZUlkLCAkd2Vic2l0ZXMpKQogICAgICAgICAgICAgICAgICAgICAgICB7IHJldHVybiB0cnVlOyB9IGVsc2UgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgICAgICRlbiA9IE1hZ2U6OmdldFN0b3JlQ29uZmlnKCdhdXNwb3N0L2FjdGl2YXRpb24vZW4nKTsKICAgICAgICAgICAgICAgICAgICBpZigkaXNlbmFibGVkICYmICRlbil7cmV0dXJuIHRydWU7fQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQ=="));

Function Calls

base64_decode 1

Variables

None

Stats

MD5 cc3605a04c3d05b3f84f6f571a8ca390
Eval Count 1
Decode Time 93 ms