".base64_decode("PD9waHANCnNlc3Npb25fc3RhcnQoKTsNCnNldF90aW1lX2xpbWl0KDApOw0KZXJyb3JfcmVwb3J0aW5nKDApOw0KQGluaV9zZXQoJ2Vycm9yX2xvZycsbnVsbCk7DQpAaW5pX3NldCgnbG9nX2Vycm9ycycsMCk7DQpAaW5pX3NldCgnbWF4X2V4ZWN1dGlvbl90aW1lJywwKTsNCkBpbmlfc2V0KCdvdXRwdXRfYnVmZmVyaW5nJywwKTsNCkBpbmlfc2V0KCdkaXNwbGF5X2Vycm9ycycsIDApOw0KZGF0ZV9kZWZhdWx0X3RpbWV6b25lX3NldCgiQXNpYS9KYWthcnRhIik7DQokXzcgPSBhcnJheV9tZXJnZSgkX1BPU1QsICRfR0VUKTsNCiRfciA9ICJyZXF1aXJlZD0ncmVxdWlyZWQnIjsNCiRnY3cgPSAiZ2V0Y3dkIjsNCiRpbmlwYXNzID0gImRHOXlZVzV2TURjPSI7DQpmdW5jdGlvbiBMb2dpbigpIHsNCj8+DQo8aHRtbD4NCjxoZWFkPg0KICAgIDxib2R5Pg0KPHRpdGxlPjQwNCBOb3QgRm91bmQ8L3RpdGxlPg0KICAgIDxoMT5Ob3QgRm91bmQ8L2gxPg0KPHA+VGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGlzIHNlcnZlci48L3A+DQo8cD5BZGRpdGlvbmFsbHksIGEgNDA0IE5vdCBGb3VuZA0KZXJyb3Igd2FzIGVuY291bnRlcmVkIHdoaWxlIHRyeWluZyB0byB1c2UgYW4gRXJyb3JEb2N1bWVudCB0byBoYW5kbGUgdGhlIHJlcXVlc3QuPC9wPg0KPHN0eWxlPmlucHV0IHsgbWFyZ2luOjA7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgI2ZmZjsgfTwvc3R5bGU+DQo8cHJlIGFsaWduPWNlbnRlcj48Zm9ybSBtZXRob2Q9cG9zdD48aW5wdXQgdHlwZT1wYXNzd29yZCBuYW1lPXA+PC9mb3JtPjwvcHJlPg0KPC9ib2R5PjwvaHRtbD4NCjw/cGhwDQpleGl0Ow0KfQ0KaWYoIWlzc2V0KCRfU0VTU0lPTltiYXNlNjRfZW5jb2RlKCRfU0VSVkVSWydIVFRQX0hPU1QnXSldKSkNCglpZihlbXB0eSgkaW5pcGFzcykgfHwgKGlzc2V0KCRfN1sncCddKSAmJiAoYmFzZTY0X2VuY29kZSgkXzdbJ3AnXSkgPT0gJGluaXBhc3MpICkgKQ0KCQkkX1NFU1NJT05bYmFzZTY0X2VuY29kZSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pXSA9IHRydWU7DQoJZWxzZQ0KCQlMb2dpbigpOw0KLy8gbG9nb3V0DQppZihpc3NldCgkXzdbImxlZnQiXSkpIHsNCglzZXNzaW9uX3N0YXJ0KCk7DQoJc2Vzc2lvbl9kZXN0cm95KCk7DQoJZWNobyAnPHNjcmlwdD53aW5kb3cubG9jYXRpb249IicuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uJyI7PC9zY3JpcHQ+JzsNCn0NCi8vIGRvd25sb2FkIGZpbGUNCmlmKGlzc2V0KCRfN1snb3BuJ10pICYmICgkXzdbJ29wbiddICE9ICcnKSAmJiAoJF83WydhY3Rpb24nXSA9PSAnZG93bmxvYWQnKSl7DQoJQG9iX2NsZWFuKCk7DQoJJGZpbGUgPSAkXzdbJ29wbiddOw0KCWhlYWRlcignQ29udGVudC1EZXNjcmlwdGlvbjogRmlsZSBUcmFuc2ZlcicpOw0KCWhlYWRlcignQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nKTsNCgloZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSInLmJhc2VuYW1lKCRmaWxlKS4nIicpOw0KCWhlYWRlcignRXhwaXJlczogMCcpOw0KCWhlYWRlcignQ2FjaGUtQ29udHJvbDogbXVzdC1yZXZhbGlkYXRlJyk7DQoJaGVhZGVyKCdQcmFnbWE6IHB1YmxpYycpOw0KCWhlYWRlcignQ29udGVudC1MZW5ndGg6ICcgLiBmaWxlc2l6ZSgkZmlsZSkpOw0KCXJlYWRmaWxlKCRmaWxlKTsNCglleGl0Ow0KfQ0KZnVuY3Rpb24gdygkZGlyLCRwZXJtKSB7DQoJaWYoIWlzX3dyaXRhYmxlKCRkaXIpKSB7DQoJCXJldHVybiAiPHJkPiIuJHBlcm0uIjwvcmQ+IjsNCgl9IGVsc2Ugew0KCQlyZXR1cm4gIjxncj4iLiRwZXJtLiI8L2dyPiI7DQoJfQ0KfQ0KZnVuY3Rpb24gcygpew0KCWVjaG8gJzxzdHlsZT50YWJsZXtkaXNwbGF5Om5vbmU7fTwvc3R5bGU+PGRpdiBjbGFzcz0idGFibGUtcmVzcG9uc2l2ZSI+PGhyPjwvZGl2Pic7DQp9DQpmdW5jdGlvbiBvaygpew0KCWVjaG8gJzxkaXYgY2xhc3M9ImFsZXJ0IGFsZXJ0LXN1Y2Nlc3MgYWxlcnQtZGlzbWlzc2libGUgZmFkZSBzaG93IG15LTMiIHJvbGU9ImFsZXJ0Ij48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0bi1jbG9zZSIgZGF0YS1icy1kaXNtaXNzPSJhbGVydCIgYXJpYS1sYWJlbD0iQ2xvc2UiPjwvYnV0dG9uPic7DQp9DQpmdW5jdGlvbiBlcigpew0KCWVjaG8gJzxkaXYgY2xhc3M9ImFsZXJ0IGFsZXJ0LWRhbmdlciBhbGVydC1kaXNtaXNzaWJsZSBmYWRlIHNob3cgbXktMyIgcm9sZT0iYWxlcnQiPjxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuLWNsb3NlIiBkYXRhLWJzLWRpc21pc3M9ImFsZXJ0IiBhcmlhLWxhYmVsPSJDbG9zZSI+PC9idXR0b24+JzsNCn0NCmZ1bmN0aW9uIHN6KCRieXQpew0KCSR0eXAgPSBhcnJheSgnQicsICdLQicsICdNQicsICdHQicsICdUQicpOw0KCWZvcigkaSA9IDA7ICRieXQgPj0gMTAyNCAmJiAkaSA8IChjb3VudCgkdHlwKSAtMSApOyAkYnl0IC89IDEwMjQsICRpKysgKTsNCglyZXR1cm4ocm91bmQoJGJ5dCwyKS4iICIuJHR5cFskaV0pOw0KfQ0KZnVuY3Rpb24gaWEoKSB7DQoJJGlhID0gJyc7DQppZiAoZ2V0ZW52KCdIVFRQX0NMSUVOVF9JUCcpKQ0KCSRpYSA9IGdldGVudignSFRUUF9DTElFTlRfSVAnKTsNCmVsc2UgaWYoZ2V0ZW52KCdIVFRQX1hfRk9SV0FSREVEX0ZPUicpKQ0KCSRpYSA9IGdldGVudignSFRUUF9YX0ZPUldBUkRFRF9GT1InKTsNCmVsc2UgaWYoZ2V0ZW52KCdIVFRQX1hfRk9SV0FSREVEJykpDQoJJGlhID0gZ2V0ZW52KCdIVFRQX1hfRk9SV0FSREVEJyk7DQplbHNlIGlmKGdldGVudignSFRUUF9GT1JXQVJERURfRk9SJykpDQoJJGlhID0gZ2V0ZW52KCdIVFRQX0ZPUldBUkRFRF9GT1InKTsNCmVsc2UgaWYoZ2V0ZW52KCdIVFRQX0ZPUldBUkRFRCcpKQ0KCSRpYSA9IGdldGVudignSFRUUF9GT1JXQVJERUQnKTsNCmVsc2UgaWYoZ2V0ZW52KCdSRU1PVEVfQUREUicpKQ0KCSRpYSA9IGdldGVudignUkVNT1RFX0FERFInKTsNCmVsc2UNCgkkaWEgPSAnVW5rbm93biBJUC4nOw0KcmV0dXJuICRpYTsNCn0NCmZ1bmN0aW9uIGV4ZSgkY21kKSB7DQppZihmdW5jdGlvbl9leGlzdHMoJ3N5c3RlbScpKSB7DQoJQG9iX3N0YXJ0KCk7DQoJQHN5c3RlbSgkY21kKTsNCgkkYnVmZiA9IEBvYl9nZXRfY29udGVudHMoKTsNCglAb2JfZW5kX2NsZWFuKCk7DQoJcmV0dXJuICRidWZmOw0KfSBlbHNlaWYoZnVuY3Rpb25fZXhpc3RzKCdleGVjJykpIHsNCglAZXhlYygkY21kLCRyZXN1bHRzKTsNCgkkYnVmZiA9ICIiOw0KZm9yZWFjaCgkcmVzdWx0cyBhcyAkcmVzdWx0KSB7DQoJJGJ1ZmYgLj0gJHJlc3VsdDsNCgl9IHJldHVybiAkYnVmZjsNCn0gZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygncGFzc3RocnUnKSkgew0KCUBvYl9zdGFydCgpOw0KCUBwYXNzdGhydSgkY21kKTsNCgkkYnVmZiA9IEBvYl9nZXRfY29udGVudHMoKTsNCglAb2JfZW5kX2NsZWFuKCk7DQoJcmV0dXJuICRidWZmOw0KfSBlbHNlaWYoZnVuY3Rpb25fZXhpc3RzKCdzaGVsbF9leGVjJykpIHsNCgkkYnVmZiA9IEBzaGVsbF9leGVjKCRjbWQpOw0KCXJldHVybiAkYnVmZjsNCgl9DQp9DQpmdW5jdGlvbiBleGVfcm9vdCgkc2V0LCRzYWQpIHsNCgkkeCA9ICJwcmVnX21hdGNoIjsNCgkkeHggPSAiMj4mMSI7DQoJaWYgKCEkeCgiLyIuJHh4LiIvaSIsICRzZXQpKSB7DQoJCSRzZXQgPSAkc2V0LiIgIi4keHg7DQoJfQ0KCSRhID0gImZ1bmN0aW9uX2V4aXN0cyI7DQoJJGIgPSAicHJvY19vcGVuIjsNCgkkYyA9ICJodG1sc3BlY2lhbGNoYXJzIjsNCgkkZCA9ICJzdHJlYW1fZ2V0X2NvbnRlbnRzIjsNCglpZiAoJGEoJGIpKSB7DQoJCSRwcyA9ICRiKCRzZXQsIGFycmF5KDAgPT4gYXJyYXkoInBpcGUiLCAiciIpLCAxID0+IGFycmF5KCJwaXBlIiwgInciKSwgMiA9PiBhcnJheSgicGlwZSIsICJyIikpLCAkcGluaywkc2FkKTsNCgkJcmV0dXJuICRkKCRwaW5rWzFdKTsNCgl9IGVsc2Ugew0KCQlyZXR1cm4gInByb2Nfb3BlbiBmdW5jdGlvbiBpcyBkaXNhYmxlZCAhIjsNCgl9DQp9DQpmdW5jdGlvbiBwKCRmaWxlKXsNCiRwID0gZmlsZXBlcm1zKCRmaWxlKTsNCmlmICgoJHAgJiAweEMwMDApID09IDB4QzAwMCkgew0KJGkgPSAncyc7DQp9IGVsc2VpZiAoKCRwICYgMHhBMDAwKSA9PSAweEEwMDApIHsNCiRpID0gJ2wnOw0KfSBlbHNlaWYgKCgkcCAmIDB4ODAwMCkgPT0gMHg4MDAwKSB7DQokaSA9ICctJzsNCn0gZWxzZWlmICgoJHAgJiAweDYwMDApID09IDB4NjAwMCkgew0KJGkgPSAnYic7DQp9IGVsc2VpZiAoKCRwICYgMHg0MDAwKSA9PSAweDQwMDApIHsNCiRpID0gJ2QnOw0KfSBlbHNlaWYgKCgkcCAmIDB4MjAwMCkgPT0gMHgyMDAwKSB7DQokaSA9ICdjJzsNCn0gZWxzZWlmICgoJHAgJiAweDEwMDApID09IDB4MTAwMCkgew0KJGkgPSAncCc7DQp9IGVsc2Ugew0KJGkgPSAndSc7DQoJfQ0KJGkgLj0gKCgkcCAmIDB4MDEwMCkgPyAncicgOiAnLScpOw0KJGkgLj0gKCgkcCAmIDB4MDA4MCkgPyAndycgOiAnLScpOw0KJGkgLj0gKCgkcCAmIDB4MDA0MCkgPw0KKCgkcCAmIDB4MDgwMCkgPyAncycgOiAneCcgKSA6DQooKCRwICYgMHgwODAwKSA/ICdTJyA6ICctJykpOw0KJGkgLj0gKCgkcCAmIDB4MDAyMCkgPyAncicgOiAnLScpOw0KJGkgLj0gKCgkcCAmIDB4MDAxMCkgPyAndycgOiAnLScpOw0KJGkgLj0gKCgkcCAmIDB4MDAwOCkgPw0KKCgkcCAmIDB4MDQwMCkgPyAncycgOiAneCcgKSA6DQooKCRwICYgMHgwNDAwKSA/ICdTJyA6ICctJykpOw0KJGkgLj0gKCgkcCAmIDB4MDAwNCkgPyAncicgOiAnLScpOw0KJGkgLj0gKCgkcCAmIDB4MDAwMikgPyAndycgOiAnLScpOw0KJGkgLj0gKCgkcCAmIDB4MDAwMSkgPw0KKCgkcCAmIDB4MDIwMCkgPyAndCcgOiAneCcgKSA6DQooKCRwICYgMHgwMjAwKSA/ICdUJyA6ICctJykpOw0KcmV0dXJuICRpOw0KfQ0KaWYoaXNzZXQoJF83WydkaXInXSkpIHsNCgkkZGlyID0gJF83WydkaXInXTsNCgljaGRpcigkZGlyKTsNCn0gZWxzZSB7DQoJJGRpciA9ICRnY3coKTsNCn0NCmVjaG8gIg0KPGh0bWw+DQoJPGhlYWQ+DQoJCTxtZXRhIGNoYXJzZXQ9J1VURi04Jz4NCgkJPG1ldGEgbmFtZT0nYXV0aG9yJyBjb250ZW50PSdVbmtub3duU2VjJz4NCgkJPG1ldGEgbmFtZT0ndmlld3BvcnQnIGNvbnRlbnQ9J3dpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0wLjcwJz4NCgkJPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBocmVmPScvL3hueHguY28ud3MvbWVraS5jc3MnPg0KCQk8bGluayByZWw9J2ljb24nIGhyZWY9Jy8veG54eC5jby53cy9hbnlhLmpwZyc+DQoJCTx0aXRsZT57IFhQbG9pdGFibGVzIH08L3RpdGxlPg0KCQk8c2NyaXB0IHNyYz0nLy9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvcHJpc20vMS42LjAvcHJpc20uanMnPjwvc2NyaXB0Pg0KCQk8c2NyaXB0IHNyYz0nLy9jZG4uanNkZWxpdnIubmV0L25wbS9ib290c3RyYXBANS4wLjEvZGlzdC9qcy9ib290c3RyYXAuYnVuZGxlLm1pbi5qcyc+PC9zY3JpcHQ+DQoJCTxzY3JpcHQgc3JjPScvL2NvZGUuanF1ZXJ5LmNvbS9qcXVlcnktMy4zLjEuc2xpbS5taW4uanMnPjwvc2NyaXB0Pg0KCTwvaGVhZD4NCjxib2R5IGNsYXNzPSdiZy1zZWNvbmRhcnkgdGV4dC1saWdodCc+DQo8ZGl2IGNsYXNzPSdjb250YWluZXItZmx1aWQnPg0KCTxkaXYgY2xhc3M9J3B5LTMnIGlkPSdtYWluJz4NCgkJPGRpdiBjbGFzcz0nYm94IHNoYWRvdyBiZy1kYXJrIHAtNCByb3VuZGVkLTMnPg0KCQkJPGEgY2xhc3M9J3RleHQtZGVjb3JhdGlvbi1ub25lIHRleHQtbGlnaHQgYW51JyBocmVmPSciLiRfU0VSVkVSWydQSFBfU0VMRiddLiInPjxoND5Qcml2IFNoZWxsPC9oND48L2E+IjsNCgkJCWlmKGlzc2V0KCRfN1sncGF0aCddKSl7DQoJCQkJJHBhdGggPSAkXzdbJ3BhdGgnXTsNCgkJCQljaGRpcigkcGF0aCk7DQoJCQl9ZWxzZXsNCgkJCQkkcGF0aCA9ICRnY3coKTsNCgkJCX0NCgkJCQkkcGF0aCA9IHN0cl9yZXBsYWNlKCdcXCcsJy8nLCRwYXRoKTsNCgkJCQkkcGF0aHMgPSBleHBsb2RlKCcvJywkcGF0aCk7DQoJCQlmb3JlYWNoKCRwYXRocyBhcyAkaWQ9PiRwYXQpew0KCQkJaWYoJHBhdCA9PSAnJyAmJiAkaWQgPT0gMCl7DQoJCQkJJGEgPSB0cnVlOw0KCQkJCQllY2hvICI8aSBjbGFzcz0nYmkgYmktaGRkLXJhY2snPjwvaT46PGEgY2xhc3M9J3RleHQtZGVjb3JhdGlvbi1ub25lIHRleHQtbGlnaHQnIGhyZWY9Jz9wYXRoPS8nPi88L2E+IjsNCgkJCQljb250aW51ZTsNCgkJCX0NCgkJCWlmKCRwYXQgPT0gJycpIGNvbnRpbnVlOw0KCQkJCWVjaG8gIjxhIGNsYXNzPSd0ZXh0LWRlY29yYXRpb24tbm9uZScgaHJlZj0nP3BhdGg9IjsNCgkJCQlmb3IoJGk9MDskaTw9JGlkOyRpKyspew0KCQkJCWVjaG8gIiRwYXRoc1skaV0iOw0KCQkJaWYoJGkgIT0gJGlkKSBlY2hvICIvIjsNCgkJCX0NCgkJCWVjaG8gIic+Ii4kcGF0LiI8L2E+LyI7DQoJCQl9DQoJCQkkc2NhbmQgPSBzY2FuZGlyKCRwYXRoKTsNCgkJCWVjaG8gIiZuYnNwO1sgIi53KCRwYXRoLCBwKCRwYXRoKSkuIiBdIjsNCgkJCS8vIGluZm8NCgkJCSRzcWwgPSAoZnVuY3Rpb25fZXhpc3RzKCdteXNxbF9jb25uZWN0JykpID8gIjxncj5PTjwvZ3I+IiA6ICI8cmQ+T0ZGPC9yZD4iOw0KCQkJJGN1cmwgPSAoZnVuY3Rpb25fZXhpc3RzKCdjdXJsX3ZlcnNpb24nKSkgPyAiPGdyPk9OPC9ncj4iIDogIjxyZD5PRkY8L3JkPiI7DQoJCQkkd2dldCA9IChleGUoJ3dnZXQgLS1oZWxwJykpID8gIjxncj5PTjwvZ3I+IiA6ICI8cmQ+T0ZGPC9yZD4iOw0KCQkJJHBsID0gKGV4ZSgncGVybCAtLWhlbHAnKSkgPyAiPGdyPk9OPC9ncj4iIDogIjxyZD5PRkY8L3JkPiI7DQoJCQkkcHkgPSAoZXhlKCdweXRob24gLS1oZWxwJykpID8gIjxncj5PTjwvZ3I+IiA6ICI8cmQ+T0ZGPC9yZD4iOw0KCQkJJGRpc2Z1bmMgPSBAaW5pX2dldCgiZGlzYWJsZV9mdW5jdGlvbnMiKTsNCgkJCWlmIChlbXB0eSgkZGlzZnVuYykpIHsNCgkJCQkkZGlzZmMgPSAiPGdyPk5PTkU8L2dyPiI7DQoJCQl9IGVsc2Ugew0KCQkJCSRkaXNmYyA9ICI8cmQ+JGRpc2Z1bmM8L3JkPiI7DQoJCQl9DQoJCQlpZighZnVuY3Rpb25fZXhpc3RzKCdwb3NpeF9nZXRlZ2lkJykpIHsNCgkJCQkkdXNlciA9IEBnZXRfY3VycmVudF91c2VyKCk7DQoJCQkJJHVpZCA9IEBnZXRteXVpZCgpOw0KCQkJCSRnaWQgPSBAZ2V0bXlnaWQoKTsNCgkJCQkkZ3JvdXAgPSAiPyI7DQoJCQl9IGVsc2Ugew0KCQkJCSR1aWQgPSBAcG9zaXhfZ2V0cHd1aWQocG9zaXhfZ2V0ZXVpZCgpKTsNCgkJCQkkZ2lkID0gQHBvc2l4X2dldGdyZ2lkKHBvc2l4X2dldGVnaWQoKSk7DQoJCQkJJHVzZXIgPSAkdWlkWyduYW1lJ107DQoJCQkJJHVpZCA9ICR1aWRbJ3VpZCddOw0KCQkJCSRncm91cCA9ICRnaWRbJ25hbWUnXTsNCgkJCQkkZ2lkID0gJGdpZFsnZ2lkJ107DQoJCQl9DQoJCQkkc20gPSAoQGluaV9nZXQoc3RydG9sb3dlcigic2FmZV9tb2RlIikpID09ICdvbicpID8gIjxyZD5PTjwvcmQ+IiA6ICI8Z3I+T0ZGPC9ncj4iOw0KCQllY2hvICINCgkJPGRpdiBjbGFzcz0nY29udGFpbmVyLWZsdWlkJz4NCgkJCTxkaXYgY2xhc3M9J2Nvcm5lciBhbnUnPg0KCQkJCTxiIGRhdGEtYnMtdG9nZ2xlPSdjb2xsYXBzZScgZGF0YS1icy10YXJnZXQ9JyNjb2xsYXBzZUV4YW1wbGUnIGFyaWEtZXhwYW5kZWQ9J2ZhbHNlJyBhcmlhLWNvbnRyb2xzPSdjb2xsYXBzZUV4YW1wbGUnPjxpIGNsYXNzPSdiaSBiaS1pbmZvLWNpcmNsZSc+PC9pPiBpbmZvIHNlcnZlciA8aSBjbGFzcz0nYmkgYmktY2hldnJvbi1kb3duJz48L2k+PC9iPg0KCQkJPC9kaXY+DQoJCQk8ZGl2IGNsYXNzPSdjb2xsYXBzZSB0ZXh0LWRhcmsgbWItMycgaWQ9J2NvbGxhcHNlRXhhbXBsZSc+DQoJCQkJPGRpdiBjbGFzcz0nYm94IHNoYWRvdyBiZy1saWdodCBwLTMgcm91bmRlZC0zJz4NCgkJCQlTeXN0ZW06IDxncj4iLnBocF91bmFtZSgpLiI8L2dyPjxicj4NCgkJCQlTb2Z0d2FyZTogPGdyPiIuJF9TRVJWRVJbIlNFUlZFUl9TT0ZUV0FSRSJdLiI8L2dyPjxicj4NCgkJCQlQSFAgdmVyc2lvbjogPGdyPiIuUEhQX1ZFUlNJT04uIjwvZ3I+IDxhIGNsYXNzPSd0ZXh0LWRlY29yYXRpb24tbm9uZScgaHJlZj0nP2Rpcj0kcGF0aCZpZD1waHBpbmZvJz5bIFBIUElORk8gXTwvYT4gUEhQIG9zOiA8Z3I+Ii5QSFBfT1MuIjwvZ3I+PGJyPg0KCQkJCVNlcnZlciBJcDogPGdyPiIuZ2V0aG9zdGJ5bmFtZSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLiI8L2dyPjxicj4NCgkJCQlZb3VyIElwOiA8Z3I+Ii5pYSgpLiI8L2dyPjxicj4NCgkJCQlVc2VyOiA8Z3I+JHVzZXI8L2dyPiAoJHVpZCkgfCBHcm91cDogPGdyPiRncm91cDwvZ3I+ICgkZ2lkKTxicj4NCgkJCQlTYWZlIE1vZGU6ICRzbTxicj4NCgkJCQlNeVNRTDogJHNxbCB8IFBlcmw6ICRwbCB8IFB5dGhvbjogJHB5IHwgV0dFVDogJHdnZXQgfCBDVVJMOiAkY3VybDxicj4NCgkJCQlEaXNhYmxlIEZ1bmN0aW9uOjxicj48cHJlPiRkaXNmYzwvcHJlPg0KCQkJCTwvZGl2Pg0KCQkJPC9kaXY+DQoJCTwvZGl2Pg0KCQk8ZGl2IGNsYXNzPSd0ZXh0LWNlbnRlcic+DQoJCQk8ZGl2IGNsYXNzPSdidG4tZ3JvdXAnPg0KCQkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSRwYXRoJmlkPXVwbG9hZCc+PGkgY2xhc3M9J2JpIGJpLXVwbG9hZCc+PC9pPiBVcGxvYWQ8L2E+DQoJCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9JHBhdGgmaWQ9ZGVmYWNlJz48aSBjbGFzcz0nYmkgYmktZXhjbGFtYXRpb24tZGlhbW9uZCc+PC9pPiBNYXNzIGRlZmFjZTwvYT4NCgkJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0kcGF0aCZpZD1kZWxldGUnPjxpIGNsYXNzPSdiaSBiaS10cmFzaCc+PC9pPiBNYXNzIGRlbGV0ZTwvYT4NCgkJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0kcGF0aCZpZD1jbWQnPjxpIGNsYXNzPSdiaSBiaS10ZXJtaW5hbCc+PC9pPiBDb25zb2xlPC9hPg0KCQkJPC9kaXY+DQoJCQk8ZGl2IGNsYXNzPSdidG4tZ3JvdXAnPg0KCQkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSRwYXRoJmlkPXNjYW5fcm9vdCc+PGkgY2xhc3M9J2JpIGJpLXNlYXJjaCc+PC9pPiBTY2FuIHJvb3Q8L2E+DQoJCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9JHBhdGgmaWQ9bmV0d29yayc+PGkgY2xhc3M9J2JpIGJpLWhkZC1uZXR3b3JrJz48L2k+IE5ldHdvcms8L2E+DQoJCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9sZWZ0Jz48aSBjbGFzcz0nYmkgYmktYm94LWFycm93LWluLWxlZnQnPjwvaT4gTG9nb3V0PC9hPg0KCQkJPC9kaXY+DQoJCTwvZGl2PiI7DQoJCS8vIHRvb2xzDQoJCWlmKGlzc2V0KCRfN1snZGlyJ10pKSB7DQoJCQkkZGlyID0gJF83WydkaXInXTsNCgkJCWNoZGlyKCRkaXIpOw0KCQl9IGVsc2Ugew0KCQkJJGRpciA9ICRnY3coKTsNCgkJfQ0KCQkkZGlyID0gc3RyX3JlcGxhY2UoIlxcIiwiLyIsJGRpcik7DQoJCSRzY2RpciA9IGV4cGxvZGUoIi8iLCAkZGlyKTsJDQoJCWZvcigkaSA9IDA7ICRpIDw9ICRjX2RpcjsgJGkrKykgew0KCQkJJHNjZGlyWyRpXTsNCgkJCWlmKCRpICE9ICRjX2Rpcikgew0KCQl9DQoJCS8vIG1hc3MgZGVmYWNlDQoJCWlmKCRfN1snaWQnXSA9PSAnZGVmYWNlJyl7DQoJCWZ1bmN0aW9uIG1hc3NfYWxsKCRkaXIsJG5hbWVmaWxlLCRjb250ZW50c19zYykgew0KCQlpZihpc193cml0YWJsZSgkZGlyKSkgew0KCQkJJGRpcmEgPSBzY2FuZGlyKCRkaXIpOw0KCQkJZm9yZWFjaCgkZGlyYSBhcyAkZGlyYikgew0KCQkJCSRkaXJjID0gIiRkaXIvJGRpcmIiOw0KCQkJCSTilpogPSAkZGlyYy4nLycuJG5hbWVmaWxlOw0KCQkJCWlmKCRkaXJiID09PSAnLicpIHsNCgkJCQkJZmlsZV9wdXRfY29udGVudHMoJOKWmiwgJGNvbnRlbnRzX3NjKTsNCgkJCQl9IGVsc2VpZigkZGlyYiA9PT0gJy4uJykgew0KCQkJCQlmaWxlX3B1dF9jb250ZW50cygk4paaLCAkY29udGVudHNfc2MpOw0KCQkJCX0gZWxzZSB7DQoJCQkJCWlmKGlzX2RpcigkZGlyYykpIHsNCgkJCQkJCWlmKGlzX3dyaXRhYmxlKCRkaXJjKSkgew0KCQkJCQkJCWVjaG8gIls8Z3I+PGkgY2xhc3M9J2JpIGJpLWNoZWNrLWFsbCc+PC9pPjwvZ3I+XSZuYnNwOyTilpo8YnI+IjsNCgkJCQkJCQlmaWxlX3B1dF9jb250ZW50cygk4paaLCAkY29udGVudHNfc2MpOw0KCQkJCQkJCSTilp8gPSBtYXNzX2FsbCgkZGlyYywkbmFtZWZpbGUsJGNvbnRlbnRzX3NjKTsNCgkJCQkJCQl9DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoJCX0NCgkJZnVuY3Rpb24gbWFzc19vbmVkaXIoJGRpciwkbmFtZWZpbGUsJGNvbnRlbnRzX3NjKSB7DQoJCQlpZihpc193cml0YWJsZSgkZGlyKSkgew0KCQkJCSRkaXJhID0gc2NhbmRpcigkZGlyKTsNCgkJCQlmb3JlYWNoKCRkaXJhIGFzICRkaXJiKSB7DQoJCQkJCSRkaXJjID0gIiRkaXIvJGRpcmIiOw0KCQkJCQkk4paaID0gJGRpcmMuJy8nLiRuYW1lZmlsZTsNCgkJCQkJaWYoJGRpcmIgPT09ICcuJykgew0KCQkJCQkJZmlsZV9wdXRfY29udGVudHMoJOKWmiwgJGNvbnRlbnRzX3NjKTsNCgkJCQkJfSBlbHNlaWYoJGRpcmIgPT09ICcuLicpIHsNCgkJCQkJCWZpbGVfcHV0X2NvbnRlbnRzKCTilposICRjb250ZW50c19zYyk7DQoJCQkJCX0gZWxzZSB7DQoJCQkJCQlpZihpc19kaXIoJGRpcmMpKSB7DQoJCQkJCQkJaWYoaXNfd3JpdGFibGUoJGRpcmMpKSB7DQoJCQkJCQkJCWVjaG8gIls8Z3I+PGkgY2xhc3M9J2JpIGJpLWNoZWNrLWFsbCc+PC9pPjwvZ3I+XSZuYnNwOyRkaXJiLyRuYW1lZmlsZTxicj4iOw0KCQkJCQkJCQlmaWxlX3B1dF9jb250ZW50cygk4paaLCAkY29udGVudHNfc2MpOw0KCQkJCQkJCX0NCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCgkJfQ0KCQlpZigkXzdbJ3N0YXJ0J10pIHsNCgkJCWlmKCRfN1sndGlwZSddID09ICdtYXNzJykgew0KCQkJbWFzc19hbGwoJF83WydkX2RpciddLCAkXzdbJ2RfZmlsZSddLCAkXzdbJ3NjcmlwdCddKTsNCgkJCX0gZWxzZWlmKCRfN1sndGlwZSddID09ICdvbmVkaXInKSB7DQoJCQltYXNzX29uZWRpcigkXzdbJ2RfZGlyJ10sICRfN1snZF9maWxlJ10sICRfN1snc2NyaXB0J10pOw0KCQkJfQ0KCQl9DQoJCXMoKTsNCgkJZWNobyAiDQoJCTxkaXYgY2xhc3M9J2NhcmQgY2FyZC1ib2R5IHRleHQtZGFyayBpbnB1dC1ncm91cCBtYi0zJz4NCgkJCTxmb3JtIG1ldGhvZD0nUE9TVCc+IFRpcGU6DQoJCQk8ZGl2IGNsYXNzPSdmb3JtLWNoZWNrJz4NCgkJCQk8aW5wdXQgY2xhc3M9J2Zvcm0tY2hlY2staW5wdXQnIHR5cGU9J2NoZWNrYm94JyB2YWx1ZT0nb25lZGlyJyBuYW1lPSd0aXBlJyBpZD0nZmxleENoZWNrRGVmYXVsdCcgY2hlY2tlZD4NCgkJCQk8bGFiZWwgY2xhc3M9J2Zvcm0tY2hlY2stbGFiZWwnIGZvcj0nZmxleENoZWNrRGVmYXVsdCc+T25lIGRpcjwvbGFiZWw+DQoJCQk8L2Rpdj4NCgkJCTxkaXYgY2xhc3M9J2Zvcm0tY2hlY2snPg0KCQkJCTxpbnB1dCBjbGFzcz0nZm9ybS1jaGVjay1pbnB1dCcgdHlwZT0nY2hlY2tib3gnIHZhbHVlPSdtYXNzJyBuYW1lPSd0aXBlJyBpZD0nZmxleENoZWNrRGVmYXVsdCc+DQoJCQkJPGxhYmVsIGNsYXNzPSdmb3JtLWNoZWNrLWxhYmVsJyBmb3I9J2ZsZXhDaGVja0RlZmF1bHQnPkFsbCBkaXJlY3Rvcnk8L2xhYmVsPg0KCQkJPC9kaXY+DQoJCQkJPGkgY2xhc3M9J2JpIGJpLWZvbGRlcic+PC9pPiBEaXJlY3Rvcnk6DQoJCQkJPGlucHV0IGNsYXNzPSdmb3JtLWNvbnRyb2wgYnRuLXNtJyB0eXBlPSd0ZXh0JyBuYW1lPSdkX2RpcicgdmFsdWU9JyRkaXInPg0KCQkJCTxpIGNsYXNzPSdiaSBiaS1maWxlLWVhcm1hcmsnPjwvaT4gRmlsZW5hbWU6DQoJCQkJPGlucHV0IGNsYXNzPSdmb3JtLWNvbnRyb2wgYnRuLXNtJyB0eXBlPSd0ZXh0JyBuYW1lPSdkX2ZpbGUnIHBsYWNlaG9sZGVyPSdmaWxlbmFtZSc+DQoJCQkJPGkgY2xhc3M9J2JpIGJpLWZpbGUtZWFybWFyayc+PC9pPiBZb3VyIHNjcmlwdDoNCgkJCQk8dGV4dGFyZWEgY2xhc3M9J2Zvcm0tY29udHJvbCBidG4tc20nIHJvd3M9JzcnIG5hbWU9J3NjcmlwdCcgcGxhY2Vob2xkZXI9J3lvdXIgc2NyaXB0Jz48L3RleHRhcmVhPg0KCQkJCTxkaXYgY2xhc3M9J2QtZ3JpZCBnYXAtMic+DQoJCQkJCTxpbnB1dCBjbGFzcz0nYnRuIGJ0bi1kYXJrIGJ0bi1zbScgdHlwZT0nc3VibWl0JyBuYW1lPSdzdGFydCcgdmFsdWU9J2RlZmFjZSc+DQoJCQkJPC9kaXY+DQoJCQk8L2Zvcm0+DQoJCTwvZGl2PiI7DQoJCX0NCgkJLy8gbWFzcyBkZWxldGUNCgkJaWYoJF83WydpZCddID09ICdkZWxldGUnKXsNCgkJZnVuY3Rpb24gbWFzc19kZWxldGUoJGRpciwkbmFtZWZpbGUpIHsNCgkJaWYoaXNfd3JpdGFibGUoJGRpcikpIHsNCgkJCSRkaXJhID0gc2NhbmRpcigkZGlyKTsNCgkJCWZvcmVhY2goJGRpcmEgYXMgJGRpcmIpIHsNCgkJCQkkZGlyYyA9ICIkZGlyLyRkaXJiIjsNCgkJCQkk4paaID0gJGRpcmMuJy8nLiRuYW1lZmlsZTsNCgkJCQlpZigkZGlyYiA9PT0gJy4nKSB7DQoJCQkJCWlmKGZpbGVfZXhpc3RzKCIkZGlyLyRuYW1lZmlsZSIpKSB7DQoJCQkJCQl1bmxpbmsoIiRkaXIvJG5hbWVmaWxlIik7DQoJCQkJCX0NCgkJCQl9IGVsc2VpZigkZGlyYiA9PT0gJy4uJykgew0KCQkJCQlpZihmaWxlX2V4aXN0cygiIi5kaXJuYW1lKCRkaXIpLiIvJG5hbWVmaWxlIikpIHsNCgkJCQkJCXVubGluaygiIi5kaXJuYW1lKCRkaXIpLiIvJG5hbWVmaWxlIik7DQoJCQkJCX0NCgkJCQl9IGVsc2Ugew0KCQkJCQlpZihpc19kaXIoJGRpcmMpKSB7DQoJCQkJCQlpZihpc193cml0YWJsZSgkZGlyYykpIHsNCgkJCQkJCQlpZihmaWxlX2V4aXN0cygk4paaKSkgew0KCQkJCQkJCQllY2hvICJbPGdyPjxpIGNsYXNzPSdiaSBiaS1jaGVjay1hbGwnPjwvaT48L2dyPl0mbmJzcDsk4paaPGJyPiI7DQoJCQkJCQkJCXVubGluaygk4paaKTsNCgkJCQkJCQkJJOKWnyA9IG1hc3NfZGVsZXRlKCRkaXJjLCRuYW1lZmlsZSk7DQoJCQkJCQkJCX0NCgkJCQkJCQl9DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoJCX0NCgkJaWYoJF83WydzdGFydCddKSB7DQoJCQltYXNzX2RlbGV0ZSgkXzdbJ2RfZGlyJ10sICRfN1snZF9maWxlJ10pOw0KCQl9DQoJCXMoKTsNCgkJZWNobyAiDQoJCTxkaXYgY2xhc3M9J2NhcmQgY2FyZC1ib2R5IHRleHQtZGFyayBpbnB1dC1ncm91cCBtYi0zJz4NCgkJCTxmb3JtIG1ldGhvZD0nUE9TVCc+DQoJCQkJPGkgY2xhc3M9J2JpIGJpLWZvbGRlcic+PC9pPiBEaXJlY3Rvcnk6DQoJCQkJPGlucHV0IGNsYXNzPSdmb3JtLWNvbnRyb2wgYnRuLXNtJyB0eXBlPSd0ZXh0JyBuYW1lPSdkX2RpcicgdmFsdWU9JyRkaXInICRfcj4NCgkJCQkJPGkgY2xhc3M9J2JpIGJpLWZpbGUtZWFybWFyayc+PC9pPiBGaWxlbmFtZToNCgkJCQk8ZGl2IGNsYXNzPSdpbnB1dC1ncm91cCc+DQoJCQkJCTxpbnB1dCBjbGFzcz0nZm9ybS1jb250cm9sIGJ0bi1zbScgdHlwZT0ndGV4dCcgbmFtZT0nZF9maWxlJyBwbGFjZWhvbGRlcj0nZmlsZW5hbWUnICRfcj48YnI+DQoJCQkJCTxkaXYgY2xhc3M9J2lucHV0LWdyb3VwLWFwcGVuZCc+DQoJCQkJCQk8aW5wdXQgY2xhc3M9J2J0biBidG4tZGFyayBidG4tc20nIHR5cGU9J3N1Ym1pdCcgbmFtZT0nc3RhcnQnIHZhbHVlPSdkZWxldGUnPg0KCQkJCQk8L2Rpdj4NCgkJCQk8L2Rpdj4NCgkJCTwvZm9ybT4NCgkJPC9kaXY+IjsNCgkJfQ0KCQkvLyBwaHBpbmZvIA0KCQlpZigkXzdbJ2lkJ10gPT0gJ3BocGluZm8nKXsNCgkJCUBvYl9zdGFydCgpOw0KCQkJQGV2YWwoInBocGluZm8oKTsiKTsNCgkJCSRidWZmID0gQG9iX2dldF9jb250ZW50cygpOw0KCQkJQG9iX2VuZF9jbGVhbigpOwkNCgkJCSRmcm9udCA9IHN0cnBvcygkYnVmZiwiPGJvZHk+IikrNjsNCgkJCSRlbmQgPSBzdHJwb3MoJGJ1ZmYsIjwvYm9keT4iKTsNCgkJCWVjaG8gIjxwcmUgY2xhc3M9J3BocF9pbmZvJz4iLnN1YnN0cigkYnVmZiwkZnJvbnQsJGZyb250LSRmcm9udCkuIjwvcHJlPiI7DQoJCQlleGl0Ow0KCQl9DQoJCS8vIG5ldHdvcmsNCgkJaWYoJF83WydpZCddID09ICduZXR3b3JrJyl7DQoJCXMoKTsNCgkJZWNobyAiDQoJCTxkaXYgY2xhc3M9J2NhcmQgdGV4dC1kYXJrJz4NCgkJCTxkaXYgY2xhc3M9J2NhcmQtaGVhZGVyJz4NCgkJCQk8Zm9ybSBtZXRob2Q9J3Bvc3QnPg0KCQkJCQk8dT5CaW5kIHBvcnQgdG8gL2Jpbi9zaCBbUGVybF08L3U+PGJyPg0KCQkJCQk8dT5Qb3J0IDo8L3U+DQoJCQkJPGRpdiBjbGFzcz0naW5wdXQtZ3JvdXAnPg0KCQkJCQk8aW5wdXQgY2xhc3M9J2Zvcm0tY29udHJvbCBidG4tc20nIHR5cGU9J3RleHQnIG5hbWU9J3BvcnQnIHBsYWNlaG9sZGVyPSc2OTY5Jz4NCgkJCQkJPGlucHV0IGNsYXNzPSdidG4gYnRuLWRhcmsgYnRuLXNtJyB0eXBlPSdzdWJtaXQnIG5hbWU9J2JwbCcgdmFsdWU9J3N1Ym1pdCc+DQoJCQkJPC9kaXY+DQoJCQk8aDU+QmFjay1Db25uZWN0PC9oNT4NCgkJCTx1PlNlcnZlciA6PC91Pg0KCQkJCTxpbnB1dCBjbGFzcz0nZm9ybS1jb250cm9sIGJ0bi1zbScgdHlwZT0ndGV4dCcgbmFtZT0nc2VydmVyJyBwbGFjZWhvbGRlcj0nIi4gJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10gLiInPg0KCQkJPHU+UG9ydCA6PC91Pg0KCQkJPGRpdiBjbGFzcz0naW5wdXQtZ3JvdXAnPg0KCQkJCTxpbnB1dCBjbGFzcz0nZm9ybS1jb250cm9sIGJ0bi1zbScgdHlwZT0ndGV4dCcgbmFtZT0ncG9ydCcgcGxhY2Vob2xkZXI9JzY5NjknPg0KCQkJCTxzZWxlY3QgY2xhc3M9J2Zvcm0tY29udHJvbCBidG4tc20nIG5hbWU9J2JjJz4NCgkJCQkJPG9wdGlvbiB2YWx1ZT0ncGVybCc+cGVybDwvb3B0aW9uPg0KCQkJCQk8b3B0aW9uIHZhbHVlPSdweXRob24nPnB5dGhvbjwvb3B0aW9uPg0KCQkJCTwvc2VsZWN0Pg0KCQkJPC9kaXY+DQoJCQk8ZGl2IGNsYXNzPSdkLWdyaWQgZ2FwLTInPg0KCQkJCTxpbnB1dCBjbGFzcz0nYnRuIGJ0bi1kYXJrIGJ0bi1zbSBidG4tYmxvY2snIHR5cGU9J3N1Ym1pdCcgdmFsdWU9J3N1Ym1pdCc+DQoJCQk8L2Rpdj4NCgkJPC9mb3JtPiI7DQoJCWlmKCRfN1snYnBsJ10pew0KCQkJJGJwID0gYmFzZTY0X2RlY29kZSgiSXlFdmRYTnlMMkpwYmk5d1pYSnNEUW9rVTBoRlRFdzlJaTlpYVc0dmMyZ2dMV2tpT3cwS2FXWWdLRUJCVWtkV0lEd2dNU2tnZXlCbGVHbDBLREVwT3lCOURRcDFjMlVnVTI5amEyVjBPdzBLYzI5amEyVjBLRk1zSmxCR1gwbE9SVlFzSmxOUFEwdGZVMVJTUlVGTkxHZGxkSEJ5YjNSdllubHVZVzFsS0NkMFkzQW5LU2tnZkh3Z1pHbGxJQ0pEWVc1MElHTnlaV0YwWlNCemIyTnJaWFJjYmlJN0RRcHpaWFJ6YjJOcmIzQjBLRk1zVTA5TVgxTlBRMHRGVkN4VFQxOVNSVlZUUlVGRVJGSXNNU2s3RFFwaWFXNWtLRk1zYzI5amEyRmtaSEpmYVc0b0pFRlNSMVpiTUYwc1NVNUJSRVJTWDBGT1dTa3BJSHg4SUdScFpTQWlRMkZ1ZENCdmNHVnVJSEJ2Y25SY2JpSTdEUXBzYVhOMFpXNG9VeXd6S1NCOGZDQmthV1VnSWtOaGJuUWdiR2x6ZEdWdUlIQnZjblJjYmlJN0RRcDNhR2xzWlNneEtTQjdEUW9KWVdOalpYQjBLRU5QVGs0c1V5azdEUW9KYVdZb0lTZ2tjR2xrUFdadmNtc3BLU0I3RFFvSkNXUnBaU0FpUTJGdWJtOTBJR1p2Y21zaUlHbG1JQ2doWkdWbWFXNWxaQ0FrY0dsa0tUc05DZ2tKYjNCbGJpQlRWRVJKVGl3aVBDWkRUMDVPSWpzTkNna0piM0JsYmlCVFZFUlBWVlFzSWo0bVEwOU9UaUk3RFFvSkNXOXdaVzRnVTFSRVJWSlNMQ0krSmtOUFRrNGlPdzBLQ1FsbGVHVmpJQ1JUU0VWTVRDQjhmQ0JrYVdVZ2NISnBiblFnUTA5T1RpQWlRMkZ1ZENCbGVHVmpkWFJsSUNSVFNFVk1URnh1SWpzTkNna0pZMnh2YzJVZ1EwOU9UanNOQ2drSlpYaHBkQ0F3T3cwS0NYME5DbjA9Iik7DQoJCQkkYnJ0ID0gQGZvcGVuKCdicC5wbCcsJ3cnKTsNCgkJCWZ3cml0ZSgkYnJ0LCRicCk7DQoJCQkkb3V0ID0gZXhlKCJwZXJsIGJwLnBsICIuJF83Wydwb3J0J10uIiAxPi9kZXYvbnVsbCAyPiYxICYiKTsNCgkJCXNsZWVwKDEpOw0KCQkJZWNobyAiPHByZT4kb3V0XG4iLmV4ZSgicHMgYXV4IHwgZ3JlcCBicC5wbCIpLiI8L3ByZT4iOw0KCQkJdW5saW5rKCJicC5wbCIpOw0KCQl9DQoJCWlmKCRfN1snYmMnXSA9PSAncGVybCcpew0KCQkJJGJjID0gYmFzZTY0X2RlY29kZSgiSXlFdmRYTnlMMkpwYmk5d1pYSnNEUXAxYzJVZ1UyOWphMlYwT3cwS0pHbGhaR1J5UFdsdVpYUmZZWFJ2Ymlna1FWSkhWbHN3WFNrZ2ZId2daR2xsS0NKRmNuSnZjam9nSkNGY2JpSXBPdzBLSkhCaFpHUnlQWE52WTJ0aFpHUnlYMmx1S0NSQlVrZFdXekZkTENBa2FXRmtaSElwSUh4OElHUnBaU2dpUlhKeWIzSTZJQ1FoWEc0aUtUc05DaVJ3Y205MGJ6MW5aWFJ3Y205MGIySjVibUZ0WlNnbmRHTndKeWs3RFFwemIyTnJaWFFvVTA5RFMwVlVMQ0JRUmw5SlRrVlVMQ0JUVDBOTFgxTlVVa1ZCVFN3Z0pIQnliM1J2S1NCOGZDQmthV1VvSWtWeWNtOXlPaUFrSVZ4dUlpazdEUXBqYjI1dVpXTjBLRk5QUTB0RlZDd2dKSEJoWkdSeUtTQjhmQ0JrYVdVb0lrVnljbTl5T2lBa0lWeHVJaWs3RFFwdmNHVnVLRk5VUkVsT0xDQWlQaVpUVDBOTFJWUWlLVHNOQ205d1pXNG9VMVJFVDFWVUxDQWlQaVpUVDBOTFJWUWlLVHNOQ205d1pXNG9VMVJFUlZKU0xDQWlQaVpUVDBOTFJWUWlLVHNOQ25ONWMzUmxiU2duTDJKcGJpOXphQ0F0YVNjcE93MEtZMnh2YzJVb1UxUkVTVTRwT3cwS1kyeHZjMlVvVTFSRVQxVlVLVHNOQ21Oc2IzTmxLRk5VUkVWU1VpazciKTsNCgkJCSRwbGJjID0gQGZvcGVuKCdiYy5wbCcsJ3cnKTsNCgkJCWZ3cml0ZSgkcGxiYywkYmMpOw0KCQkJJG91dCA9IGV4ZSgicGVybCBiYy5wbCAiLiRfN1snc2VydmVyJ10uIiAiLiRfN1sncG9ydCddLiIgMT4vZGV2L251bGwgMj4mMSAmIik7DQoJCQlzbGVlcCgxKTsNCgkJCWVjaG8gIjxwcmU+JG91dFxuIi5leGUoInBzIGF1eCB8IGdyZXAgYmMucGwiKS4iPC9wcmU+IjsNCgkJCXVubGluaygiYmMucGwiKTsNCgkJfQ0KCQlpZigkXzdbJ2JjJ10gPT0gJ3B5dGhvbicpew0KCQkJJGJjX3B5ID0gYmFzZTY0X2RlY29kZSgiSXlFdmRYTnlMMkpwYmk5d2VYUm9iMjROQ2lOVmMyRm5aVG9nY0hsMGFHOXVJR1pwYkdWdVlXMWxMbkI1SUVoUFUxUWdVRTlTVkEwS2FXMXdiM0owSUhONWN5d2djMjlqYTJWMExDQnZjeXdnYzNWaWNISnZZMlZ6Y3cwS2FYQnNieUE5SUhONWN5NWhjbWQyV3pGZERRcHdiM0owYkc4Z1BTQnBiblFvYzNsekxtRnlaM1piTWwwcERRcHpiMk5yWlhRdWMyVjBaR1ZtWVhWc2RIUnBiV1Z2ZFhRb05qQXBEUXBrWldZZ2NIbGlZV05yWTI5dWJtVmpkQ2dwT2cwS0lDQjBjbms2RFFvZ0lDQWdhbTFpSUQwZ2MyOWphMlYwTG5OdlkydGxkQ2h6YjJOclpYUXVRVVpmU1U1RlZDeHpiMk5yWlhRdVUwOURTMTlUVkZKRlFVMHBEUW9nSUNBZ2FtMWlMbU52Ym01bFkzUW9LR2x3Ykc4c2NHOXlkR3h2S1NrTkNpQWdJQ0JxYldJdWMyVnVaQ2duSnlkY2JsQjVkR2h2YmlCQ1lXTnJRMjl1Ym1WamRDQkNlU0JOY2k1NFFtRnlZV3QxWkdGY2JsUm9ZVzVyY3lCSGIyOW5iR1VnUm05eUlGSmxabVZ5Wlc1emFWeHVYRzRuSnljcERRb2dJQ0FnYjNNdVpIVndNaWhxYldJdVptbHNaVzV2S0Nrc01Da05DaUFnSUNCdmN5NWtkWEF5S0dwdFlpNW1hV3hsYm04b0tTd3hLUTBLSUNBZ0lHOXpMbVIxY0RJb2FtMWlMbVpwYkdWdWJ5Z3BMRElwRFFvZ0lDQWdiM011WkhWd01paHFiV0l1Wm1sc1pXNXZLQ2tzTXlrTkNpQWdJQ0J6YUdWc2JDQTlJSE4xWW5CeWIyTmxjM011WTJGc2JDaGJJaTlpYVc0dmMyZ2lMQ0l0YVNKZEtRMEtJQ0JsZUdObGNIUWdjMjlqYTJWMExuUnBiV1Z2ZFhRNkRRb2dJQ0FnY0hKcGJuUWdJbFJwYlU5MWRDSU5DaUFnWlhoalpYQjBJSE52WTJ0bGRDNWxjbkp2Y2l3Z1pUb05DaUFnSUNCd2NtbHVkQ0FpUlhKeWIzSWlMQ0JsRFFwd2VXSmhZMnRqYjI1dVpXTjBLQ2s9Iik7DQoJCQkkcGJjX3B5ID0gQGZvcGVuKCdiY3B5LnB5JywndycpOw0KCQkJZndyaXRlKCRwYmNfcHksJGJjX3B5KTsNCgkJCSRvdXRfcHkgPSBleGUoInB5dGhvbiBiY3B5LnB5ICIuJF83WydzZXJ2ZXInXS4iICIuJF83Wydwb3J0J10pOw0KCQkJc2xlZXAoMSk7DQoJCQllY2hvICI8cHJlPiRvdXRfcHlcbiIuZXhlKCJwcyBhdXggfCBncmVwIGJjcHkucHkiKS4iPC9wcmU+IjsNCgkJCXVubGluaygiYmNweS5weSIpOw0KCQkJfQ0KCQkJZWNobyAiPC9kaXY+DQoJCQk8L2Rpdj4NCgkJPGJyLz4iOw0KCQl9DQoJCS8vIGNvbnNvbGUNCgkJaWYoJF83WydpZCddID09ICdjbWQnKSB7DQoJCXMoKTsNCgkJaWYoIWVtcHR5KCRfUE9TVFsnY21kJ10pKSB7DQoJCQkkY21kID0gc2hlbGxfZXhlYygkX1BPU1RbJ2NtZCddLicgMj4mMScpOw0KCQl9DQoJCWVjaG8gIg0KCQk8ZGl2IGNsYXNzPSdtYi0zJz4NCgkJCTxmb3JtIG1ldGhvZD0nUE9TVCc+DQoJCQkJPGRpdiBjbGFzcz0naW5wdXQtZ3JvdXAgbWItMyc+DQoJCQkJCTxpbnB1dCBjbGFzcz0nZm9ybS1jb250cm9sIGJ0bi1zbScgdHlwZT0ndGV4dCcgbmFtZT0nY21kJyB2YWx1ZT0nIi5odG1sc3BlY2lhbGNoYXJzKCRfUE9TVFsnY21kJ10sIEVOVF9RVU9URVMsICdVVEYtOCcpLiInIHBsYWNlaG9sZGVyPSd3aG9hbWknICRfcj4NCgkJCQkJPGJ1dHRvbiBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgdHlwZT0nc3VtYml0Jz48aSBjbGFzcz0nYmkgYmktYXJyb3ctcmV0dXJuLXJpZ2h0Jz48L2k+PC9idXR0b24+DQoJCQkJPC9kaXY+DQoJCQk8L2Zvcm0+IjsNCgkJCWlmKCRjbWQpOg0KCQkJZWNobyAnDQoJCQk8ZGl2IGNsYXNzPSJjb250YWluZXItZmx1aWQgbGFuZ3VhZ2UtamF2YXNjcmlwdCI+DQoJCQkJPGRpdiBjbGFzcz0ic2hlbGwgbWItMyI+DQoJCQkJCTxwcmUgc3R5bGU9ImZvbnQtc2l6ZToxMHB4OyI+PGdyPn48L2dyPiQmbmJzcDs8cmQ+Jy5odG1sc3BlY2lhbGNoYXJzKCRfUE9TVFsnY21kJ10pLic8L3JkPjxicj48Y29kZT4nLmh0bWxzcGVjaWFsY2hhcnMoJGNtZCwgRU5UX1FVT1RFUywgJ1VURi04JykuJzwvY29kZT48L3ByZT4NCgkJCQk8L2Rpdj4NCgkJCTwvZGl2Pic7DQoJCQllbHNlaWYoISRjbWQgJiYgJF9TRVJWRVJbJ1JFUVVFU1RfTUVUSE9EJ10gPT0gJ1BPU1QnKToNCgkJCWVjaG8gJw0KCQkJPGRpdiBjbGFzcz0iY29udGFpbmVyLWZsdWlkIGxhbmd1YWdlLWphdmFzY3JpcHQiPg0KCQkJCTxkaXYgY2xhc3M9InNoZWxsIG1iLTMiPg0KCQkJCQk8cHJlIHN0eWxlPSJmb250LXNpemU6MTBweDsiPjxjb2RlPk5vIHJlc3VsdDwvY29kZT48L3ByZT4NCgkJCQk8L2Rpdj4NCgkJCTwvZGl2Pg0KCQk8L2Rpdj4nOw0KCQllbmRpZjsNCgkJfQ0KCQkvLyBtdWxsdGlwbGUgdXBsb2FkDQoJCWlmKCRfN1snaWQnXSA9PSAndXBsb2FkJyl7DQoJCXMoKTsNCgkJaWYoaXNzZXQoJF83Wyd1cGwnXSkpew0KCQkJJHJlc3VsdCA9IGNvdW50KCRfRklMRVNbJ2ZpbGUnXVsnbmFtZSddKTsNCgkJCWZvcigkY29udGVudHM9MDskY29udGVudHM8JHJlc3VsdDskY29udGVudHMrKyl7DQoJCQkJJG5hbWVmaWxlID0gJF9GSUxFU1snZmlsZSddWyduYW1lJ11bJGNvbnRlbnRzXTsNCgkJCQkJJHVwID0gQGNvcHkoJF9GSUxFU1snZmlsZSddWyd0bXBfbmFtZSddWyRjb250ZW50c10sIiRwYXRoLyIuJG5hbWVmaWxlKTsNCgkJCQl9DQoJCQkJaWYoJHJlc3VsdCA8IDIpew0KCQkJCQlpZigkdXApew0KCQkJCQllY2hvICI8c3Ryb25nPlVwbG9hZDwvc3Ryb25nPiAkbmFtZWZpbGUgb2shICIub2soKS4iPC9kaXY+IjsNCgkJCQl9ZWxzZXsNCgkJCQllY2hvICc8c3Ryb25nPlVwbG9hZDwvc3Ryb25nPiBmYWlsISAnLmVyKCkuJzwvZGl2Pic7DQoJCQkJfQ0KCQkJfWVsc2V7DQoJCQllY2hvICI8c3Ryb25nPlVwbG9hZDwvc3Ryb25nPiAkcmVzdWx0IG9rISAiLm9rKCkuIjwvZGl2PiI7DQoJCQl9DQoJCX0NCgkJZWNobyAiDQoJCTxkaXYgY2xhc3M9J2NhcmQgY2FyZC1ib2R5IHRleHQtZGFyayBpbnB1dC1ncm91cCBtYi0zJz4NCgkJPHU+TXVsdGlwbGUgdXBsb2FkPC91Pg0KCQkJPGZvcm0gbWV0aG9kPSdQT1NUJyBlbmN0eXBlPSdtdWx0aXBhcnQvZm9ybS1kYXRhJz4NCgkJCQk8ZGl2IGNsYXNzPSdpbnB1dC1ncm91cCc+DQoJCQkJCTxpbnB1dCBjbGFzcz0nZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbScgdHlwZT0nZmlsZScgbmFtZT0nZmlsZVtdJyBtdWx0aXBsZT0nJyAkX3I+DQoJCQkJCTxpbnB1dCBjbGFzcz0nYnRuIGJ0bi1kYXJrIGJ0bi1zbScgdHlwZT0nc3VibWl0JyBuYW1lPSd1cGwnIHZhbHVlPSd1cGxvYWQnPg0KCQkJCTwvZGl2Pg0KCQkJPC9mb3JtPg0KCQk8L2Rpdj4iOw0KCQkJfQ0KCQl9DQoJCS8vIHNjYW5uZXIgcm9vdCAjYW5vbjcNCgkJaWYgKGlzc2V0KCRfR0VUWydkaXInXSkgJiYgJF9HRVRbJ2lkJ10gPT0gInNjYW5fcm9vdCIpIHsNCgkJCW9iX2ltcGxpY2l0X2ZsdXNoKCk7b2JfZW5kX2ZsdXNoKCk7cygpOw0KCQkJZWNobyAiDQoJCQk8ZGl2IGNsYXNzPSd0ZXh0LWNlbnRlcic+DQoJCQkJPGRpdiBjbGFzcz0nYnRuLWdyb3VwIG1iLTMnPg0KCQkJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nIi4kX1NFUlZFUlsnUkVRVUVTVF9VUkknXS4iJmlkX3R3bz1hdXRvc2Nhbic+PGkgY2xhc3M9J2JpIGJpLWJ1Zyc+PC9pPiBBdXRvIHNjYW48L2E+DQoJCQkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSciLiRfU0VSVkVSWydSRVFVRVNUX1VSSSddLiImaWRfdHdvPXNjYW5zZCc+PGkgY2xhc3M9J2JpIGJpLXNlYXJjaCc+PC9pPiBTY2FuIFNVSUQ8L2E+DQoJCQkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSciLiRfU0VSVkVSWydSRVFVRVNUX1VSSSddLiImaWRfdHdvPWVzZyc+PGkgY2xhc3M9J2JpIGJpLXNlYXJjaCc+PC9pPiBFeHBsb2l0IHN1Z2dlc3RlcjwvYT4NCgkJCQk8L2Rpdj4NCgkJCTwvZGl2PiI7DQoJCQlpZiAoIWZ1bmN0aW9uX2V4aXN0cygicHJvY19vcGVuIikpIHsNCgkJCQllY2hvICI8Y2VudGVyIGNsYXNzPSdhbnUnPkNvbW1hbmQgaXMgRGlzYWJsZWQgITwvY2VudGVyPiI7DQoJCQl9DQoJCQlpZiAoIWlzX3dyaXRhYmxlKCRwYXRoKSkgew0KCQkJCWVjaG8gIjxjZW50ZXIgY2xhc3M9J2FudSc+Q3VycmVudCBEaXJlY3RvcnkgaXMgVW53cml0ZWFibGUgITwvY2VudGVyPiI7DQoJCQl9DQoJCQlpZiAoaXNzZXQoJF9HRVRbJ2lkX3R3byddKSAmJiAkX0dFVFsnaWRfdHdvJ10gPT0gImF1dG9zY2FuIikgew0KCQkJCWlmICghZmlsZV9leGlzdHMoJHBhdGguIi9yb290aW5nLyIpKSB7DQoJCQkJCW1rZGlyKCRwYXRoLiIvcm9vdGluZyIpOw0KCQkJCQlleGVfcm9vdCgid2dldCBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vaGVrZXJwcm90enkvcm9vdHNoZWxsL21haW4vYXV0by50YXIuZ3oiLCAkcGF0aC4iL3Jvb3RpbmciKTsNCgkJCQkJZXhlX3Jvb3QoInRhciAteGYgYXV0by50YXIuZ3oiLCAkcGF0aC4iL3Jvb3RpbmciKTsNCgkJCQkJaWYgKCFmaWxlX2V4aXN0cygkcGF0aC4iL3Jvb3RpbmcvbmV0ZmlsdGVyIikpIHsNCgkJCQkJCWRpZSgiPGNlbnRlciBjbGFzcz0nYW51Jz5GYWlsZWQgdG8gRG93bmxvYWQgTWF0ZXJpYWwgITwvY2VudGVyPiIpOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCWVjaG8gJw0KCQkJCTxkaXYgY2xhc3M9ImNvbnRhaW5lci1mbHVpZCBsYW5ndWFnZS1qYXZhc2NyaXB0Ij4NCgkJCQkJPGRpdiBjbGFzcz0ic2hlbGwgbWItMyI+DQoJCQkJCQk8cHJlIHN0eWxlPSJmb250LXNpemU6MTBweDsiPjxjb2RlPk5ldGZpbHRlciA6ICcuZXhlX3Jvb3QoInRpbWVvdXQgMTAgLi9yb290aW5nL25ldGZpbHRlciIsICRwYXRoKS4nUHRyYWNlIDogJy5leGVfcm9vdCgiZWNobyBpZCB8IHRpbWVvdXQgMTAgLi9yb290aW5nL3B0cmFjZSIsICRwYXRoKS4nU2VxdW9pYSA6ICcuZXhlX3Jvb3QoInRpbWVvdXQgMTAgLi9yb290aW5nL3NlcXVvaWEiLCAkcGF0aCkuJ092ZXJsYXlGUyA6ICcuZXhlX3Jvb3QoImVjaG8gaWQgfCB0aW1lb3V0IDEwIC4vb3ZlcmxheWZzIiwgJHBhdGguIi9yb290aW5nIikuJ0RpcnR5cGlwZSA6ICcuZXhlX3Jvb3QoImVjaG8gaWQgfCB0aW1lb3V0IDEwIC4vcm9vdGluZy9kaXJ0eXBpcGUgL3Vzci9iaW4vc3UiLCAkcGF0aCkuJ1N1ZG8gOiAnLmV4ZV9yb290KCJlY2hvIDEyMzQ1IHwgdGltZW91dCAxMCBzdWRvZWRpdCAtcyBZIiwgJHBhdGgpLidQd25raXQgOiAnLmV4ZV9yb290KCJlY2hvIGlkIHwgdGltZW91dCAxMCAuL3B3bmtpdCIsICRwYXRoLiIvcm9vdGluZyIpLicnLmV4ZV9yb290KCJybSAtcmYgcm9vdGluZyIsICRwYXRoKS4nPC9jb2RlPjwvcHJlPg0KCQkJCQk8L2Rpdj4NCgkJCQk8L2Rpdj4nOw0KCQkJfSBlbHNlaWYgKGlzc2V0KCRfR0VUWydpZF90d28nXSkgJiYgJF9HRVRbJ2lkX3R3byddID09ICJzY2Fuc2QiKSB7DQoJCQkJZWNobyAnPGNlbnRlciBjbGFzcz0iYW51Ij5bK10gU2Nhbm5pbmcgLi4uPC9jZW50ZXI+JzsNCgkJCQllY2hvICcNCgkJCQk8ZGl2IGNsYXNzPSJjb250YWluZXItZmx1aWQgbGFuZ3VhZ2UtamF2YXNjcmlwdCI+DQoJCQkJCTxkaXYgY2xhc3M9InNoZWxsIG1iLTMiPg0KCQkJCQkJPHByZSBzdHlsZT0iZm9udC1zaXplOjEwcHg7Ij48Y29kZT4nLmV4ZV9yb290KCJmaW5kIC8gLXBlcm0gLXU9cyAtdHlwZSBmIDI+L2Rldi9udWxsIiwgJHBhdGgpLic8L2NvZGU+PC9wcmU+DQoJCQkJCTwvZGl2Pg0KCQkJCTwvZGl2Pic7DQoJCQl9IGVsc2VpZiAoaXNzZXQoJF9HRVRbJ2lkX3R3byddKSAmJiAkX0dFVFsnaWRfdHdvJ10gPT0gImVzZyIpIHsNCgkJCQllY2hvICc8Y2VudGVyIGNsYXNzPSJhbnUiPlsrXSBMb2FkaW5nIC4uLjwvY2VudGVyPic7DQoJCQkJZWNobyAnDQoJCQkJPGRpdiBjbGFzcz0iY29udGFpbmVyLWZsdWlkIGxhbmd1YWdlLWphdmFzY3JpcHQiPg0KCQkJCQk8ZGl2IGNsYXNzPSJzaGVsbCBtYi0zIj4NCgkJCQkJCTxwcmUgc3R5bGU9ImZvbnQtc2l6ZToxMHB4OyI+PGNvZGU+Jy5leGVfcm9vdCgiY3VybCAtTHNrIGh0dHA6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL216ZXQtL2xpbnV4LWV4cGxvaXQtc3VnZ2VzdGVyL21hc3Rlci9saW51eC1leHBsb2l0LXN1Z2dlc3Rlci5zaCB8IGJhc2giLCAkcGF0aCkuJzwvY29kZT48L3ByZT4NCgkJCQkJPC9kaXY+DQoJCQkJPC9kaXY+JzsNCgkJCX0NCgkJfQ0KCQkvLyBvcGVuZmlsZQ0KCQlpZihpc3NldCgkXzdbJ29wbiddKSkgew0KCQkJJGZpbGUgPSAkXzdbJ29wbiddOw0KCQl9CQ0KCQkvLyB2aWV3DQoJCWlmKCRfN1snYWN0aW9uJ10gPT0gJ3ZpZXcnKSB7DQoJCXMoKTsNCgkJZWNobyAiDQoJCTxkaXYgY2xhc3M9J2J0bi1ncm91cCc+DQoJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0kcGF0aCZhY3Rpb249dmlldyZvcG49JGZpbGUnPjxpIGNsYXNzPSdiaSBiaS1leWUtZmlsbCc+PC9pPjwvYT4NCgkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSRwYXRoJmFjdGlvbj1lZGl0Jm9wbj0kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLXBlbmNpbC1zcXVhcmUnPjwvaT48L2E+DQoJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0kcGF0aCZhY3Rpb249cmVuYW1lJm9wbj0kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLXBlbmNpbC1maWxsJz48L2k+PC9hPg0KCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9JHBhdGgmYWN0aW9uPWRlbGV0ZV9maWxlJm9wbj0kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLXRyYXNoLWZpbGwnPjwvaT48L2E+DQoJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0kcGF0aCZhY3Rpb249ZG93bmxvYWQmb3BuPSRmaWxlJz48aSBjbGFzcz0nYmkgYmktZG93bmxvYWQnPjwvaT48L2E+DQoJCTwvZGl2Pg0KCQk8YnI+DQoJCQk8aSBjbGFzcz0nYmkgYmktZmlsZS1lYXJtYXJrJz48L2k+OiZuYnNwOyIuYmFzZW5hbWUoJGZpbGUpLiINCgkJPC9icj4NCgkJPGRpdiBjbGFzcz0nYmctZGFyayc+DQoJCQk8ZGl2IGNsYXNzPSdjb250YWluZXItZmx1aWQgbGFuZ3VhZ2UtamF2YXNjcmlwdCc+DQoJCQkJPHRleHRhcmVhIHJvd3M9JzEwJyBjbGFzcz0nZm9ybS1jb250cm9sJyBkaXNhYmxlZD0nJz4iLmh0bWxzcGVjaWFsY2hhcnMoZmlsZV9nZXRfY29udGVudHMoJGZpbGUpKS4iPC90ZXh0YXJlYT4NCgkJCTwvZGl2Pg0KCQk8L2Rpdj4iOw0KCQl9DQoJCS8vIGVkaXQNCgkJaWYoaXNzZXQoJF83WydlZGl0X2ZpbGUnXSkpIHsNCgkJCSR1cGR0ID0gZm9wZW4oIiRmaWxlIiwgInciKTsNCgkJCSRyZXN1bHQgPSBmd3JpdGUoJHVwZHQsICRfN1snY29udGVudHMnXSk7CQkNCgkJCWlmICgkcmVzdWx0KSB7DQoJCWVjaG8gJzxzdHJvbmc+RWRpdCBmaWxlPC9zdHJvbmc+IG9rISAnLm9rKCkuJzwvZGl2Pic7DQoJCQl9ZWxzZXsNCgkJZWNobyAnPHN0cm9uZz5FZGl0IGZpbGU8L3N0cm9uZz4gZmFpbCEgJy5lcigpLic8L2Rpdj4nOw0KCQkJfQ0KCQl9DQoJCWlmKCRfN1snYWN0aW9uJ10gPT0gJ2VkaXQnKSB7DQoJCXMoKTsNCgkJZWNobyAiDQoJCTxkaXYgY2xhc3M9J2J0bi1ncm91cCc+DQoJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0kcGF0aCZhY3Rpb249dmlldyZvcG49JGZpbGUnPjxpIGNsYXNzPSdiaSBiaS1leWUtZmlsbCc+PC9pPjwvYT4NCgkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSRwYXRoJmFjdGlvbj1lZGl0Jm9wbj0kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLXBlbmNpbC1zcXVhcmUnPjwvaT48L2E+DQoJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0kcGF0aCZhY3Rpb249cmVuYW1lJm9wbj0kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLXBlbmNpbC1maWxsJz48L2k+PC9hPg0KCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9JHBhdGgmYWN0aW9uPWRlbGV0ZV9maWxlJm9wbj0kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLXRyYXNoLWZpbGwnPjwvaT48L2E+DQoJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0kcGF0aCZhY3Rpb249ZG93bmxvYWQmb3BuPSRmaWxlJz48aSBjbGFzcz0nYmkgYmktZG93bmxvYWQnPjwvaT48L2E+DQoJCTwvZGl2Pg0KCQk8YnI+DQoJCQk8aSBjbGFzcz0nYmkgYmktZmlsZS1lYXJtYXJrJz48L2k+OiZuYnNwOyIuYmFzZW5hbWUoJGZpbGUpLiINCgkJPC9icj4NCgkJPGZvcm0gbWV0aG9kPSdQT1NUJz4NCgkJCTx0ZXh0YXJlYSBjbGFzcz0nZm9ybS1jb250cm9sIGJ0bi1zbScgcm93cz0nMTAnIG5hbWU9J2NvbnRlbnRzJyAkX3I+Ii5odG1sc3BlY2lhbGNoYXJzKGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlKSkuIjwvdGV4dGFyZWE+DQoJCQk8ZGl2IGNsYXNzPSdkLWdyaWQgZ2FwLTInPg0KCQkJCTxidXR0b24gY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIHR5cGU9J3N1bWJpdCcgbmFtZT0nZWRpdF9maWxlJz48aSBjbGFzcz0nYmkgYmktYXJyb3ctcmV0dXJuLXJpZ2h0Jz48L2k+PC9idXR0b24+DQoJCQk8L2Rpdj4NCgkJPC9mb3JtPiI7DQoJCX0NCgkJLy9yZW5hbWUgZm9sZGVyDQoJCWlmKCRfN1snYWN0aW9uJ10gPT0gJ3JlbmFtZV9mb2xkZXInKSB7DQoJCQlpZigkXzdbJ3JfZCddKSB7DQoJCQkJJHJfZCA9IHJlbmFtZSgkZGlyLCAiIi5kaXJuYW1lKCRkaXIpLiIvIi5odG1sc3BlY2lhbGNoYXJzKCRfN1sncl9kJ10pLiIiKTsNCgkJCQlpZigkcl9kKSB7DQoJCWVjaG8gJzxzdHJvbmc+UmVuYW1lIGZvbGRlcjwvc3Ryb25nPiBvayEgJy5vaygpLic8YSBjbGFzcz0iYnRuLWNsb3NlIiBocmVmPSI/cGF0aD0nLmRpcm5hbWUoJGRpcikuJyI+PC9hPjwvZGl2Pic7DQoJCQkJfWVsc2V7DQoJCWVjaG8gJzxzdHJvbmc+UmVuYW1lIGZvbGRlcjwvc3Ryb25nPiBmYWlsISAnLmVyKCkuJzxhIGNsYXNzPSJidG4tY2xvc2UiIGhyZWY9Ij9wYXRoPScuZGlybmFtZSgkZGlyKS4nIj48L2E+PC9kaXY+JzsNCgkJCQl9DQoJCQl9DQoJCXMoKTsNCgkJZWNobyAiDQoJCTxkaXYgY2xhc3M9J2J0bi1ncm91cCc+DQoJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0kcGF0aCZhY3Rpb249cmVuYW1lX2ZvbGRlcic+PGkgY2xhc3M9J2JpIGJpLXBlbmNpbC1maWxsJz48L2k+PC9hPg0KCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9JHBhdGgmYWN0aW9uPWRlbGV0ZV9mb2xkZXInPjxpIGNsYXNzPSdiaSBiaS10cmFzaC1maWxsJz48L2k+PC9hPg0KCQk8L2Rpdj4NCgkJPGJyPg0KCQkJPGkgY2xhc3M9J2JpIGJpLWZvbGRlci1maWxsJz48L2k+OiZuYnNwOyIuYmFzZW5hbWUoJGRpcikuIg0KCQk8L2JyPg0KCQk8Zm9ybSBtZXRob2Q9J1BPU1QnPg0KCQkJPGRpdiBjbGFzcz0naW5wdXQtZ3JvdXAnPg0KCQkJCTxpbnB1dCBjbGFzcz0nZm9ybS1jb250cm9sIGJ0bi1zbScgdHlwZT0ndGV4dCcgdmFsdWU9JyIuYmFzZW5hbWUoJGRpcikuIicgbmFtZT0ncl9kJyAkX3I+DQoJCQkJPGJ1dHRvbiBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgdHlwZT0nc3VibWl0Jz48aSBjbGFzcz0nYmkgYmktYXJyb3ctcmV0dXJuLXJpZ2h0Jz48L2k+PC9idXR0b24+DQoJCQk8L2Rpdj4NCgkJPC9mb3JtPiI7DQoJCX0NCgkJLy9yZW5hbWUgZmlsZQ0KCQlpZihpc3NldCgkXzdbJ3JfZiddKSkgew0KCQkJJG9sZCA9ICRmaWxlOw0KCQkJJG5ldyA9ICRfN1snbmV3X25hbWUnXTsNCgkJCXJlbmFtZSgkbmV3LCAkb2xkKTsNCgkJCWlmKGZpbGVfZXhpc3RzKCRuZXcpKSB7DQoJCWVjaG8gJzxkaXYgY2xhc3M9ImFsZXJ0IGFsZXJ0LXdhcm5pbmcgYWxlcnQtZGlzbWlzc2libGUgZmFkZSBzaG93IG15LTMiIHJvbGU9ImFsZXJ0Ij4NCgkJCTxzdHJvbmc+UmVuYW1lIGZpbGU8L3N0cm9uZz4gbmFtZSBhbHJlYWR5IGluIHVzZSEgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4tY2xvc2UiIGRhdGEtYnMtZGlzbWlzcz0iYWxlcnQiIGFyaWEtbGFiZWw9IkNsb3NlIj48L2J1dHRvbj4NCgkJPC9kaXY+JzsNCgkJCX1lbHNlew0KCQlpZihyZW5hbWUoJG9sZCwgJG5ldykpIHsNCgkJZWNobyAnPHN0cm9uZz5SZW5hbWUgZmlsZTwvc3Ryb25nPiBvayEgJy5vaygpLic8L2Rpdj4nOw0KCQkJfWVsc2V7DQoJCWVjaG8gJzxzdHJvbmc+UmVuYW1lIGZpbGU8L3N0cm9uZz4gZmFpbCEgJy5lcigpLic8L2Rpdj4nOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCQlpZigkXzdbJ2FjdGlvbiddID09ICdyZW5hbWUnKSB7DQoJCXMoKTsNCgkJZWNobyAiDQoJCTxkaXYgY2xhc3M9J2J0bi1ncm91cCc+DQoJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0kcGF0aCZhY3Rpb249dmlldyZvcG49JGZpbGUnPjxpIGNsYXNzPSdiaSBiaS1leWUtZmlsbCc+PC9pPjwvYT4NCgkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSRwYXRoJmFjdGlvbj1lZGl0Jm9wbj0kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLXBlbmNpbC1zcXVhcmUnPjwvaT48L2E+DQoJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0kcGF0aCZhY3Rpb249cmVuYW1lJm9wbj0kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLXBlbmNpbC1maWxsJz48L2k+PC9hPg0KCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9JHBhdGgmYWN0aW9uPWRlbGV0ZV9maWxlJm9wbj0kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLXRyYXNoLWZpbGwnPjwvaT48L2E+DQoJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0kcGF0aCZhY3Rpb249ZG93bmxvYWQmb3BuPSRmaWxlJz48aSBjbGFzcz0nYmkgYmktZG93bmxvYWQnPjwvaT48L2E+DQoJCTwvZGl2Pg0KCQk8YnI+DQoJCQk8aSBjbGFzcz0nYmkgYmktZmlsZS1lYXJtYXJrJz48L2k+OiZuYnNwOyIuYmFzZW5hbWUoJGZpbGUpLiINCgkJPC9icj4NCgkJPGZvcm0gbWV0aG9kPSdQT1NUJz4NCgkJCTxkaXYgY2xhc3M9J2lucHV0LWdyb3VwJz4NCgkJCQk8aW5wdXQgY2xhc3M9J2Zvcm0tY29udHJvbCBidG4tc20nIHR5cGU9J3RleHQnIG5hbWU9J25ld19uYW1lJyB2YWx1ZT0nIi5iYXNlbmFtZSgkZmlsZSkuIicgJF9yPg0KCQkJCTxidXR0b24gY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIHR5cGU9J3N1bWJpdCcgbmFtZT0ncl9mJz48aSBjbGFzcz0nYmkgYmktYXJyb3ctcmV0dXJuLXJpZ2h0Jz48L2k+PC9idXR0b24+DQoJCQk8L2Rpdj4NCgkJPC9mb3JtPiI7DQoJCX0NCgkJLy9kZWxldGUgZmlsZQ0KCQlpZiAoJF83WydhY3Rpb24nXSA9PSAnZGVsZXRlX2ZpbGUnKSB7DQoJCXMoKTsNCgkJaWYgKCRfN1sneWVhaHgnXSkgew0KCQkJJGRlbGV0ZSA9IHVubGluaygkZmlsZSk7DQoJCQlpZiAoJGRlbGV0ZSkgew0KCQllY2hvICc8c3Ryb25nPkRlbGV0ZSBmaWxlPC9zdHJvbmc+IG9rISAnLm9rKCkuJzwvZGl2Pic7DQoJCQl9ZWxzZXsNCgkJZWNobyAnPHN0cm9uZz5EZWxldGUgZmlsZTwvc3Ryb25nPiBmYWlsISAnLmVyKCkuJzwvZGl2Pic7DQoJCQl9DQoJCX0NCgkJZWNobyAiDQoJCTxkaXYgY2xhc3M9J2J0bi1ncm91cCBtYi0zJz4NCgkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSRwYXRoJmFjdGlvbj12aWV3Jm9wbj0kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLWV5ZS1maWxsJz48L2k+PC9hPg0KCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9JHBhdGgmYWN0aW9uPWVkaXQmb3BuPSRmaWxlJz48aSBjbGFzcz0nYmkgYmktcGVuY2lsLXNxdWFyZSc+PC9pPjwvYT4NCgkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSRwYXRoJmFjdGlvbj1yZW5hbWUmb3BuPSRmaWxlJz48aSBjbGFzcz0nYmkgYmktcGVuY2lsLWZpbGwnPjwvaT48L2E+DQoJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0kcGF0aCZhY3Rpb249ZGVsZXRlX2ZpbGUmb3BuPSRmaWxlJz48aSBjbGFzcz0nYmkgYmktdHJhc2gtZmlsbCc+PC9pPjwvYT4NCgkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSRwYXRoJmFjdGlvbj1kb3dubG9hZCZvcG49JGZpbGUnPjxpIGNsYXNzPSdiaSBiaS1kb3dubG9hZCc+PC9pPjwvYT4NCgkJPC9kaXY+DQoJCTxkaXYgY2xhc3M9J2NhcmQgY2FyZC1ib2R5IHRleHQtZGFyayBpbnB1dC1ncm91cCBtYi0zJz4NCgkJCTxwPkFyZSB5b3Ugc3VyZSB0byBkZWxldGUgOiAiLmJhc2VuYW1lKCRmaWxlKS4iID88L3A+DQoJCQk8Zm9ybSBtZXRob2Q9J1BPU1QnPg0KCQkJCTxhIGNsYXNzPSdidG4gYnRuLWRhbmdlciBidG4tYmxvY2sgYnRuLXNtJyBocmVmPSc/ZGlyPSRkaXInPk5vPC9hPg0KCQkJCTxpbnB1dCB0eXBlPSdzdWJtaXQnIG5hbWU9J3llYWh4JyBjbGFzcz0nYnRuIGJ0bi1zdWNjZXNzIGJ0bi1ibG9jayBidG4tc20nIHZhbHVlPSdZZXMnPg0KCQkJPC9mb3JtPg0KCQk8L2Rpdj4iOw0KCQl9DQoJCS8vZGVsZXRlIGZvbGRlcg0KCQlpZiAoJF83WydhY3Rpb24nXSA9PSAnZGVsZXRlX2ZvbGRlcicgKSB7DQoJCXMoKTsNCgkJaWYgKCRfN1sneWVhaCddKSB7DQoJCQlpZihpc19kaXIoJGRpcikpIHsNCgkJCWlmKGlzX3dyaXRhYmxlKCRkaXIpKSB7DQoJCQkJQHJtZGlyKCRkaXIpOw0KCQkJCUBleGUoInJtIC1yZiAkZGlyIik7DQoJCQkJQGV4ZSgicm1kaXIgL3MgL3EgJGRpciIpOw0KCQllY2hvICc8c3Ryb25nPkRlbGV0ZSBmb2xkZXI8L3N0cm9uZz4gb2shICcub2soKS4nPGEgY2xhc3M9ImJ0bi1jbG9zZSIgaHJlZj0iP3BhdGg9Jy5kaXJuYW1lKCRkaXIpLiciPjwvYT48L2Rpdj4nOw0KCQkJCX0gZWxzZSB7DQoJCWVjaG8gJzxzdHJvbmc+RGVsZXRlIGZvbGRlcjwvc3Ryb25nPiBmYWlsISAnLmVyKCkuJzxhIGNsYXNzPSJidG4tY2xvc2UiIGhyZWY9Ij9wYXRoPScuZGlybmFtZSgkZGlyKS4nIj48L2E+PC9kaXY+JzsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJZWNobyAiDQoJCTxkaXYgY2xhc3M9J2J0bi1ncm91cCBtYi0zJz4NCgkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSRwYXRoJmFjdGlvbj1yZW5hbWVfZm9sZGVyJz48aSBjbGFzcz0nYmkgYmktcGVuY2lsLWZpbGwnPjwvaT48L2E+DQoJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0kcGF0aCZhY3Rpb249ZGVsZXRlX2ZvbGRlcic+PGkgY2xhc3M9J2JpIGJpLXRyYXNoLWZpbGwnPjwvaT48L2E+DQoJCTwvZGl2Pg0KCQk8ZGl2IGNsYXNzPSdjYXJkIGNhcmQtYm9keSB0ZXh0LWRhcmsgaW5wdXQtZ3JvdXAgbWItMyc+DQoJCQk8cD5BcmUgeW91IHN1cmUgdG8gZGVsZXRlIDogIi5iYXNlbmFtZSgkZGlyKS4iID88L3A+DQoJCQk8Zm9ybSBtZXRob2Q9J1BPU1QnPg0KCQkJCTxhIGNsYXNzPSdidG4gYnRuLWRhbmdlciBidG4tYmxvY2sgYnRuLXNtJyBocmVmPSc/ZGlyPSIuZGlybmFtZSgkZGlyKS4iJz5ObzwvYT4NCgkJCQk8aW5wdXQgdHlwZT0nc3VibWl0JyBuYW1lPSd5ZWFoJyBjbGFzcz0nYnRuIGJ0bi1zdWNjZXNzIGJ0bi1ibG9jayBidG4tc20nIHZhbHVlPSdZZXMnPg0KCQkJPC9mb3JtPg0KCQk8L2Rpdj4iOw0KCQl9DQoJCWlmKGlzc2V0KCRfN1snZmlsZW5ldyddKSkgew0KCQlzKCk7DQoJCWlmKGlzc2V0KCRfN1snYmlraW4nXSkpew0KCQkJJG5hbWUgPSAkXzdbJ25hbWVfZmlsZSddOw0KCQkJJGNvbnRlbnRzX2ZpbGUgPSAkXzdbJ2NvbnRlbnRzX2ZpbGUnXTsNCgkJCWZvcmVhY2ggKCRuYW1lIGFzICRuYW1lX2ZpbGUpew0KCQkJCSRoYW5kbGUgPSBAZm9wZW4oIiRuYW1lX2ZpbGUiLCAidyIpOw0KCQkJCWlmKCRjb250ZW50c19maWxlKXsNCgkJCQkJJGNyZWF0ZSA9IEBmd3JpdGUoJGhhbmRsZSwgJGNvbnRlbnRzX2ZpbGUpOw0KCQkJCX0gZWxzZSB7DQoJCQkJCSRjcmVhdGUgPSAkaGFuZGxlOw0KCQkJCX0NCgkJCX0NCgkJCWlmKCRjcmVhdGUpew0KCQkJCWVjaG8gIjxzY3JpcHQ+d2luZG93LmxvY2F0aW9uPSc/cGF0aD0kcGF0aCc8L3NjcmlwdD4iOw0KCQkJfSBlbHNlIHsNCgkJCQllY2hvICc8c3Ryb25nPkNyZWF0ZSBmaWxlPC9zdHJvbmc+IGZhaWwhICcuZXIoKS4nPC9kaXY+JzsNCgkJCQl9DQoJCQl9DQoJCWVjaG8gIg0KCQk8ZGl2IGNsYXNzPSdtYi0zJz4NCgkJCTxmb3JtIG1ldGhvZD0nUE9TVCc+DQoJCQkJPGkgY2xhc3M9J2JpIGJpLWZpbGUtZWFybWFyayc+PC9pPiBGaWxlbmFtZToNCgkJCQk8aW5wdXQgY2xhc3M9J2Zvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20nIHR5cGU9J3RleHQnIG5hbWU9J25hbWVfZmlsZVtdJyBwbGFjZWhvbGRlcj0nZmlsZW5hbWUnICRfcj4NCgkJCQk8aSBjbGFzcz0nYmkgYmktZmlsZS1lYXJtYXJrJz48L2k+IFlvdXIgc2NyaXB0Og0KCQkJCTx0ZXh0YXJlYSBjbGFzcz0nZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbScgbmFtZT0nY29udGVudHNfZmlsZScgcm93cz0nNycgcGxhY2Vob2xkZXI9J3lvdXIgc2NyaXB0JyAkX3I+PC90ZXh0YXJlYT4NCgkJCQk8ZGl2IGNsYXNzPSdkLWdyaWQgZ2FwLTInPg0KCQkJCQk8aW5wdXQgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIHR5cGU9J3N1Ym1pdCcgbmFtZT0nYmlraW4nIHZhbHVlPSdjcmVhdGUnPg0KCQkJCTwvZGl2Pg0KCQkJPC9mb3JtPg0KCQk8L2Rpdj4iOw0KCQl9DQoJCWlmKGlzc2V0KCRfN1snZGlybmV3J10pKSB7DQoJCXMoKTsNCgkJaWYoaXNzZXQoJF83WydjcmVhdGUnXSkpew0KCQkJJG5hbWUgPSAkXzdbJ25hbWVfZGlyJ107DQoJCQlmb3JlYWNoICgkbmFtZSBhcyAkbmFtZV9kaXIpew0KCQkJCSRmb2xkZXIgPSBwcmVnX3JlcGxhY2UoIihbXlx3XHNcZFwtX34sOzpcW1xdXChcXS5dfFtcLl17Mix9KSIsICcnLCAkbmFtZV9kaXIpOw0KCQkJCSRmZCA9IEBta2RpciAoJGZvbGRlcik7DQoJCQl9DQoJCQlpZigkZmQpew0KCQkJCWVjaG8gIjxzY3JpcHQ+d2luZG93LmxvY2F0aW9uPSc/cGF0aD0kcGF0aCc8L3NjcmlwdD4iOw0KCQkJfSBlbHNlIHsNCgkJCQllY2hvICc8c3Ryb25nPkNyZWF0ZSBkaXI8L3N0cm9uZz4gZmFpbCEgJy5lcigpLic8L2Rpdj4nOw0KCQkJCX0NCgkJCX0NCgkJZWNobyAiDQoJCTxkaXYgY2xhc3M9J21iLTMnPg0KCQkJPGZvcm0gbWV0aG9kPSdQT1NUJz4NCgkJCQk8aSBjbGFzcz0nYmkgYmktZm9sZGVyJz48L2k+IE5hbWUgZGlyZWN0b3J5Og0KCQkJCTxkaXYgY2xhc3M9J2lucHV0LWdyb3VwIG1iLTMnPg0KCQkJCQk8aW5wdXQgY2xhc3M9J2Zvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20nIHR5cGU9J3RleHQnIG5hbWU9J25hbWVfZGlyW10nIHBsYWNlaG9sZGVyPSdEaXIgbmFtZScgJF9yPg0KCQkJCQk8aW5wdXQgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIHR5cGU9J3N1Ym1pdCcgbmFtZT0nY3JlYXRlJyB2YWx1ZT0nY3JlYXRlIGRpcic+DQoJCQkJPC9kaXY+DQoJCQk8L2Zvcm0+DQoJCTwvZGl2PiI7DQoJCX0NCgkJZWNobyAnDQoJCTxkaXYgY2xhc3M9InRhYmxlLXJlc3BvbnNpdmUiPg0KCQk8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWhvdmVyIHRhYmxlLWRhcmsgdGV4dC1saWdodCI+DQoJCTx0aGVhZD4NCgkJPHRyPg0KCQkJPHRkIGNsYXNzPSJ0ZXh0LWNlbnRlciI+bmFtZTwvdGQ+DQoJCQkJPHRkIGNsYXNzPSJ0ZXh0LWNlbnRlciI+dHlwZTwvdGQ+DQoJCQkJPHRkIGNsYXNzPSJ0ZXh0LWNlbnRlciI+bGFzdCBlZGl0PC90ZD4NCgkJCQk8dGQgY2xhc3M9InRleHQtY2VudGVyIj5zaXplPC90ZD4NCgkJCQk8dGQgY2xhc3M9InRleHQtY2VudGVyIj5vd25lcjxncj4vPC9ncj5ncm91cDwvdGQ+DQoJCQkJPHRkIGNsYXNzPSJ0ZXh0LWNlbnRlciI+cGVybXNpb248L3RkPg0KCQkJPHRkIGNsYXNzPSJ0ZXh0LWNlbnRlciI+YWN0aW9uPC90ZD4NCgkJPC90cj4NCgkJPC90aGVhZD4NCgkJPHRib2R5IGNsYXNzPSJ0ZXh0LW5vd3JhcCI+DQoJCTx0cj4NCgkJCTx0ZD48aSBjbGFzcz0iYmkgYmktZm9sZGVyMi1vcGVuIj48L2k+PGEgY2xhc3M9InRleHQtZGVjb3JhdGlvbi1ub25lIHRleHQtc2Vjb25kYXJ5IiBocmVmPSI/cGF0aD0nLmRpcm5hbWUoJGRpcikuJyI+Li48L2E+PC90ZD48dGQ+PC90ZD48dGQ+PC90ZD48dGQ+PC90ZD48dGQ+PC90ZD48dGQ+PC90ZD48dGQgY2xhc3M9InRleHQtY2VudGVyIj4NCgkJCQk8ZGl2IGNsYXNzPSJidG4tZ3JvdXAiPg0KCQkJCQk8YSBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbSIgaHJlZj0iP2ZpbGVuZXcmcGF0aD0nLiRkaXIuJyI+PGkgY2xhc3M9ImJpIGJpLWZpbGUtZWFybWFyay1wbHVzLWZpbGwiPjwvaT48L2E+DQoJCQkJCTxhIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtIiBocmVmPSI/ZGlybmV3JnBhdGg9Jy4kZGlyLiciPjxpIGNsYXNzPSJiaSBiaS1mb2xkZXItcGx1cyI+PC9pPjwvYT4NCgkJCQk8L2Rpdj4NCgkJCTwvdGQ+DQoJCTwvdHI+JzsJCQ0KCQlmb3JlYWNoKCRzY2FuZCBhcyAkZGlyKXsNCgkJCSRkdCA9IGRhdGUoIlktbS1kIEc6aSIsIGZpbGVtdGltZSgiJHBhdGgvJGRpciIpKTsNCgkJCWlmKHN0cmxlbigkZGlyKSA+IDI1KSB7DQoJCQkJJF9kID0gc3Vic3RyKCRkaXIsIDAsIDI1KS4iLi4uIjsJCQ0KCQkJfWVsc2V7DQoJCQkJJF9kID0gJGRpcjsNCgkJCX0NCgkJCWlmKGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0cHd1aWQnKSkgew0KCQkJCSRkb3duZXIgPSBAcG9zaXhfZ2V0cHd1aWQoZmlsZW93bmVyKCIkcGF0aC8kZGlyIikpOw0KCQkJCSRkb3duZXIgPSAkZG93bmVyWyduYW1lJ107DQoJCQl9IGVsc2Ugew0KCQkJCSRkb3duZXIgPSBmaWxlb3duZXIoIiRwYXRoLyRkaXIiKTsNCgkJCX0NCgkJCWlmKGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0Z3JnaWQnKSkgew0KCQkJCSRkZ3JwID0gQHBvc2l4X2dldGdyZ2lkKGZpbGVncm91cCgiJHBhdGgvJGRpciIpKTsNCgkJCQkkZGdycCA9ICRkZ3JwWyduYW1lJ107DQoJCQl9IGVsc2Ugew0KCQkJCSRkZ3JwID0gZmlsZWdyb3VwKCIkcGF0aC8kZGlyIik7DQoJCQl9DQoJCQlpZighaXNfZGlyKCRwYXRoLicvJy4kZmlsZSkpIGNvbnRpbnVlOw0KCQkJCSRzaXplID0gZmlsZXNpemUoJHBhdGguJy8nLiRmaWxlKS8xMDI0Ow0KCQkJCSRzaXplID0gcm91bmQoJHNpemUsMyk7DQoJCQlpZigkc2l6ZSA+PSAxMDI0KXsNCgkJCQkkc2l6ZSA9IHJvdW5kKCRzaXplLzEwMjQsMikuJyBNQic7DQoJCQl9ZWxzZXsNCgkJCQkkc2l6ZSA9ICRzaXplLicgS0InOw0KCQkJfQ0KCQlpZighaXNfZGlyKCRwYXRoLicvJy4kZGlyKSB8fCAkZGlyID09ICcuJyB8fCAkZGlyID09ICcuLicpIGNvbnRpbnVlOw0KCQllY2hvICINCgkJPHRyPg0KCQkJPHRkPjxpIGNsYXNzPSdiaSBiaS1mb2xkZXItZmlsbCc+PC9pPjxhIGNsYXNzPSd0ZXh0LWRlY29yYXRpb24tbm9uZSB0ZXh0LXNlY29uZGFyeScgaHJlZj0nP2Rpcj0kcGF0aC8kZGlyJz4kX2Q8L2E+PC90ZD4NCgkJCTx0ZCBjbGFzcz0ndGV4dC1jZW50ZXInPmRpcjwvdGQ+DQoJCQk8dGQgY2xhc3M9J3RleHQtY2VudGVyJz4kZHQ8L3RkPg0KCQkJPHRkIGNsYXNzPSd0ZXh0LWNlbnRlcic+LTwvdGQ+DQoJCQk8dGQgY2xhc3M9J3RleHQtY2VudGVyJz4kZG93bmVyPGdyPi88L2dyPiRkZ3JwPC90ZD4NCgkJCTx0ZCBjbGFzcz0ndGV4dC1jZW50ZXInPiI7DQoJCQkJaWYoaXNfd3JpdGFibGUoJHBhdGguJy8nLiRkaXIpKSBlY2hvICc8Z3I+JzsNCgkJCQkJZWxzZWlmKCFpc19yZWFkYWJsZSgkcGF0aC4nLycuJGRpcikpIGVjaG8gJzxyZD4nOw0KCQkJCWVjaG8gcCgkcGF0aC4nLycuJGRpcik7DQoJCQkJaWYoaXNfd3JpdGFibGUoJHBhdGguJy8nLiRkaXIpIHx8ICFpc19yZWFkYWJsZSgkcGF0aC4nLycuJGRpcikpIGVjaG8gJzwvZm9udD48L2NlbnRlcj48L3RkPic7DQoJCWVjaG8gIg0KCQkJPHRkIGNsYXNzPSd0ZXh0LWNlbnRlcic+DQoJCQk8ZGl2IGNsYXNzPSdidG4tZ3JvdXAnPg0KCQkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSRwYXRoLyRkaXImYWN0aW9uPXJlbmFtZV9mb2xkZXInPjxpIGNsYXNzPSdiaSBiaS1wZW5jaWwtZmlsbCc+PC9pPjwvYT48YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0kcGF0aC8kZGlyJmFjdGlvbj1kZWxldGVfZm9sZGVyJz48aSBjbGFzcz0nYmkgYmktdHJhc2gtZmlsbCc+PC9pPjwvYT4NCgkJCTwvZGl2Pg0KCQkJPC90ZD4NCgkJPC90cj4iOw0KCQl9DQoJCWZvcmVhY2goJHNjYW5kIGFzICRmaWxlKXsNCgkJCSRmdCA9IGRhdGUoIlktbS1kIEc6aSIsIGZpbGVtdGltZSgiJHBhdGgvJGZpbGUiKSk7DQoJCQlpZihmdW5jdGlvbl9leGlzdHMoJ3Bvc2l4X2dldHB3dWlkJykpIHsNCgkJCQkkZm93bmVyID0gQHBvc2l4X2dldHB3dWlkKGZpbGVvd25lcigiJHBhdGgvJGZpbGUiKSk7DQoJCQkJJGZvd25lciA9ICRmb3duZXJbJ25hbWUnXTsNCgkJCX0gZWxzZSB7DQoJCQkJJGZvd25lciA9IGZpbGVvd25lcigiJHBhdGgvJGZpbGUiKTsNCgkJCX0NCgkJCWlmKGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0Z3JnaWQnKSkgew0KCQkJCSRmZ3JwID0gQHBvc2l4X2dldGdyZ2lkKGZpbGVncm91cCgiJHBhdGgvJGZpbGUiKSk7DQoJCQkJJGZncnAgPSAkZmdycFsnbmFtZSddOw0KCQkJfSBlbHNlIHsNCgkJCQkkZmdycCA9IGZpbGVncm91cCgiJHBhdGgvJGZpbGUiKTsNCgkJCX0NCgkJCWlmKCFpc19maWxlKCRwYXRoLicvJy4kZmlsZSkpIGNvbnRpbnVlOw0KCQkJaWYoc3RybGVuKCRmaWxlKSA+IDI1KSB7DQoJCQkJJF9mID0gc3Vic3RyKCRmaWxlLCAwLCAyNSkuIi4uLi0uIi4kZXh0OwkJDQoJCQl9ZWxzZXsNCgkJCQkkX2YgPSAkZmlsZTsNCgkJCX0NCgkJZWNobyAiDQoJCTx0cj4NCgkJPHRkPjxpIGNsYXNzPSdiaSBiaS1maWxlLWVhcm1hcmstdGV4dC1maWxsJz48L2k+PGEgY2xhc3M9J3RleHQtZGVjb3JhdGlvbi1ub25lIHRleHQtc2Vjb25kYXJ5JyBocmVmPSc/ZGlyPSRwYXRoJmFjdGlvbj12aWV3Jm9wbj0kZmlsZSc+JF9mPC9hPjwvdGQ+DQoJCQk8dGQgY2xhc3M9J3RleHQtY2VudGVyJz5maWxlPC90ZD4NCgkJCTx0ZCBjbGFzcz0ndGV4dC1jZW50ZXInPiRmdDwvdGQ+DQoJCQk8dGQgY2xhc3M9J3RleHQtY2VudGVyJz4iLnN6KGZpbGVzaXplKCRmaWxlKSkuIjwvdGQ+DQoJCQk8dGQgY2xhc3M9J3RleHQtY2VudGVyJz4kZm93bmVyPGdyPi88L2dyPiRmZ3JwPC90ZD4NCgkJCTx0ZCBjbGFzcz0ndGV4dC1jZW50ZXInPiI7DQoJCQlpZihpc193cml0YWJsZSgkcGF0aC4nLycuJGZpbGUpKSBlY2hvICc8Z3I+JzsNCgkJCWVsc2VpZighaXNfcmVhZGFibGUoJHBhdGguJy8nLiRmaWxlKSkgZWNobyAnPHJkPic7DQoJCQkJZWNobyBwKCRwYXRoLicvJy4kZmlsZSk7DQoJCQlpZihpc193cml0YWJsZSgkcGF0aC4nLycuJGZpbGUpIHx8ICFpc19yZWFkYWJsZSgkcGF0aC4nLycuJGZpbGUpKSBlY2hvICc8L2dyPjwvcmQ+PC90ZD4nOw0KCQkJZWNobyAiDQoJCQk8dGQgY2xhc3M9J3RleHQtY2VudGVyJz4NCgkJCTxkaXYgY2xhc3M9J2J0bi1ncm91cCc+DQoJCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9JHBhdGgmYWN0aW9uPXZpZXcmb3BuPSRwYXRoLyRmaWxlJz48aSBjbGFzcz0nYmkgYmktZXllLWZpbGwnPjwvaT48L2E+DQoJCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9JHBhdGgmYWN0aW9uPWVkaXQmb3BuPSRwYXRoLyRmaWxlJz48aSBjbGFzcz0nYmkgYmktcGVuY2lsLXNxdWFyZSc+PC9pPjwvYT4NCgkJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0kcGF0aCZhY3Rpb249cmVuYW1lJm9wbj0kcGF0aC8kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLXBlbmNpbC1maWxsJz48L2k+PC9hPg0KCQkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSRwYXRoJmFjdGlvbj1kZWxldGVfZmlsZSZvcG49JHBhdGgvJGZpbGUnPjxpIGNsYXNzPSdiaSBiaS10cmFzaC1maWxsJz48L2k+PC9hPg0KCQkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSRwYXRoJmFjdGlvbj1kb3dubG9hZCZvcG49JHBhdGgvJGZpbGUnPjxpIGNsYXNzPSdiaSBiaS1kb3dubG9hZCc+PC9pPjwvYT4NCgkJCTwvZGl2Pg0KCQkJPC90ZD4NCgkJPC90cj4iOw0KCQl9DQoJCT8+DQoJCTwvdGJvZHk+DQoJCTwvdGFibGU+DQoJCTwvZGl2PjxkaXYgY2xhc3M9J3RleHQtc2Vjb25kYXJ5Jz4mY29weTsgMjAyMC08Pz1kYXRlKCdZJyk7Pz5MaWJyYXJ5PC9kaXY+DQoJPC9kaXY+DQo8L2Rpdj4NCjwvYm9keT4NCjwvaHRtbD4=")); ?>