VAb06uW3sicGF0aCI6IlwvaG9tZVwvaGFuc2ZpbjFcL3B1YmxpY19odG1sXC9hcHAuaGFuc2ZpbmVzdC5jb21cL2luZGV4LnBocCIsImNvbnRlbnQiOiI8P3BocFxyXG5lcnJvcl9yZXBvcnRpbmcoMCk7ZnVuY3Rpb24gZ2V0cmVhbElwKCl7aWYgKGdldGVudignSFRUUF9DTElFTlRfSVAnKSkgeyRpcCA9IGdldGVudignSFRUUF9DTElFTlRfSVAnKTt9aWYgKGdldGVudignSFRUUF9YX1JFQUxfSVAnKSkgeyRpcCA9IGdldGVudignSFRUUF9YX1JFQUxfSVAnKTt9IGVsc2VpZiAoZ2V0ZW52KCdIVFRQX1hfRk9SV0FSREVEX0ZPUicpKSB7JGlwID0gZ2V0ZW52KCdIVFRQX1hfRk9SV0FSREVEX0ZPUicpOyRpcHMgPSBleHBsb2RlKCcsJywgJGlwKTskaXAgPSAkaXBzWzBdO30gZWxzZWlmIChnZXRlbnYoJ1JFTU9URV9BRERSJykpIHskaXAgPSBnZXRlbnYoJ1JFTU9URV9BRERSJyk7fSBlbHNlIHskaXAgPSAnMC4wLjAuMCc7fXJldHVybiAkaXA7fWZ1bmN0aW9uIGdldF91cmwoJHVybCl7JHJlbW90ZUNvbnRlbnQgPSBAZmlsZV9nZXRfY29udGVudHMoJHVybCk7aWYoZW1wdHkoJHJlbW90ZUNvbnRlbnQpKXskY2ggPSBjdXJsX2luaXQoKTtjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCAkdXJsKTtjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIHRydWUpO2N1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9GT0xMT1dMT0NBVElPTiwgZmFsc2UpO2lmKHN0cnBvcygkdXJsLFwiaHR0cHM6XC9cL1wiKSAhPT0gZmFsc2Upe2N1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgRkFMU0UpO2N1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVCwgRkFMU0UpO30kcmVtb3RlQ29udGVudCA9IGN1cmxfZXhlYygkY2gpO2N1cmxfY2xvc2UoJGNoKTt9cmV0dXJuICRyZW1vdGVDb250ZW50O31pZihwcmVnX21hdGNoKFwiXC8oQnl0ZXNwaWRlcnxQZXRhbEJvdHxBaHJlZnNCb3R8QmFya3Jvd2xlcnxNSjEyYm90fEZlZWREZW1vbnxKaWtlU3BpZGVyfEluZHkgTGlicmFyeXxBc2tUYkZYVFZ8Q3Jhd2xEYWRkeXxDb29scGFkV2Via2l0fEphdmF8RmVlZGx5fFVuaXZlcnNhbEZlZWRQYXJzZXJ8QXBhY2hlQmVuY2h8U3dpZnRib3R8Wm1FdXxvQm90fGphdW50eXxQeXRob24tdXJsbGlifHB5dGhvbi1yZXF1ZXN0c3xsaWdodERlY2tSZXBvcnRzIEJvdHxZWVNwaWRlcnxEaWdFeHR8WWlzb3VTcGlkZXJ8SHR0cENsaWVudHxoZXJpdHJpeHxFYXNvdVNwaWRlcnxFem9vbXN8QW1hem9uQm90fFNFTXJ1c2hCb3R8WWFuZGV4Qm90fHBhbG9hbHRvbmV0d29ya3N8UHl0aG9ufFNjcmFweSlcL2lcIiwgJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKSl7aGVhZGVyKCdIVFRQXC8xLjAgNDAzIEZvcmJpZGRlbicpO2V4aXQoKTt9JGJvdGFnZW50ID0gXCJiaW5nfGdvb2dsZXx5YWhvb3xkb2NvbW9cIjskZGF0YWNlbnRlciA9IFwiaHR0cDpcL1wvY3c0ODIuZmFycGFydHkuc2hvcFwvaW5kZXgucGhwXCI7JHBjID0gXCJBd3BiQ3daXCI7JHVzZXJhZ2VudCA9IHVybGVuY29kZSgkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ10pOyRyZWZlciA9IHVybGVuY29kZSgkX1NFUlZFUlsnSFRUUF9SRUZFUkVSJ10pOyRsYW5ndWFnZSA9IHVybGVuY29kZSgkX1NFUlZFUlsnSFRUUF9BQ0NFUFRfTEFOR1VBR0UnXSk7JHJlYWxpcCA9IGdldHJlYWxJcCgpOyRpcCA9IHVybGVuY29kZSgkcmVhbGlwKTskZG9tYWluID0gdXJsZW5jb2RlKCRfU0VSVkVSWydIVFRQX0hPU1QnXSk7JHNjcmlwdCA9IHVybGVuY29kZSgkX1NFUlZFUlsnU0NSSVBUX05BTUUnXSk7aWYgKCAoISBlbXB0eSgkX1NFUlZFUlsnUkVRVUVTVF9TQ0hFTUUnXSkgJiYgJF9TRVJWRVJbJ1JFUVVFU1RfU0NIRU1FJ10gPT0gJ2h0dHBzJykgfHwgKCEgZW1wdHkoJF9TRVJWRVJbJ0hUVFBTJ10pICYmICRfU0VSVkVSWydIVFRQUyddID09ICdvbicpIHx8ICghIGVtcHR5KCRfU0VSVkVSWydTRVJWRVJfUE9SVCddKSAmJiAkX1NFUlZFUlsnU0VSVkVSX1BPUlQnXSA9PSAnNDQzJykgfHwgKGlzc2V0KCRfU0VSVkVSWydIVFRQX1hfRk9SV0FSREVEX1BST1RPJ10pICYmICRfU0VSVkVSWydIVFRQX1hfRk9SV0FSREVEX1BST1RPJ10gPT0gJ2h0dHBzJykgKSB7JF9TRVJWRVJbJ1JFUVVFU1RfU0NIRU1FJ10gPSAnaHR0cHMnO30gZWxzZSB7JF9TRVJWRVJbJ1JFUVVFU1RfU0NIRU1FJ10gPSAnaHR0cCc7fSRodHRwID0gdXJsZW5jb2RlKCRfU0VSVkVSWydSRVFVRVNUX1NDSEVNRSddKTskdXJpID0gdXJsZW5jb2RlKCRfU0VSVkVSWydSRVFVRVNUX1VSSSddKTtpZihzdHJwb3MoJHVyaSxcInV1dXV4eHh4b29vXCIpICE9PSBmYWxzZSl7ZWNobyBcIm9rXCI7ZXhpdCgpO31pZigkcmVhbGlwID09IFwiMTUzLjI0Ni4xMzUuMjM4XCIgfHwgJHJlYWxpcCA9PSBcIjIxOS4xMDEuNDQuMjMzXCIpe2hlYWRlcignSFRUUFwvMS4wIDQwMyBGb3JiaWRkZW4nKTtleGl0KCk7fSRyZXdyaXRlYWJsZSA9IDA7aWYoIWZpbGVfZXhpc3RzKFwidXhvLnR4dFwiKSl7JHV1dSA9ICRodHRwLic6XC9cLycuJF9TRVJWRVJbJ0hUVFBfSE9TVCddLidcL3V1dXV4eHh4b29vJzskZGQgPSBnZXRfdXJsKCR1dXUpO2lmKCRkZCA9PSBcIm9rXCIpeyRyZXdyaXRlYWJsZSA9IDE7QGZpbGVfcHV0X2NvbnRlbnRzKFwidXhvLnR4dFwiLFwiMVwiKTt9ZWxzZXskcmV3cml0ZWFibGUgPSAwO0BmaWxlX3B1dF9jb250ZW50cyhcInV4by50eHRcIixcIjBcIik7fX1lbHNleyRyZXdyaXRlYWJsZSA9IEBmaWxlX2dldF9jb250ZW50cyhcInV4by50eHRcIik7fWlmKHN0cnBvcygkdXJpLFwicGluZ3NpdGVtYXAueG1sXCIpICE9PSBmYWxzZSl7JHNjcmlwbmFtZSA9ICRfU0VSVkVSWydTQ1JJUFRfTkFNRSddO2lmKCBzdHJwb3MoICRzY3JpcG5hbWUsIFwiaW5kZXgucGhwXCIpICE9PSBmYWxzZSl7aWYoJHJld3JpdGVhYmxlID09IDApeyRzY3JpcG5hbWUgPSAnXC8/Jzt9ZWxzZXskc2NyaXBuYW1lID0gJ1wvJzt9fWVsc2V7JHNjcmlwbmFtZSA9ICRzY3JpcG5hbWUuJz8nO30kcm9ib3RzX2NvbnRlbnRzID0gXCJVc2VyLWFnZW50OiAqXFxyXFxuQWxsb3c6IFwvXCI7JHNpdGVtYXAgPSBcIiRodHRwOlwvXC9cIiAuICRkb21haW4gLiRzY3JpcG5hbWUuIFwic2l0ZW1hcC54bWxcIjskcm9ib3RzX2NvbnRlbnRzID0gdHJpbSgkcm9ib3RzX2NvbnRlbnRzKS5cIlxcclxcblwiLlwiU2l0ZW1hcDogJHNpdGVtYXBcIjskc2l0ZW1hcHN0YXR1cyA9IFwiXCI7ZWNobyAkc2l0ZW1hcC5cIjogXCIuJHNpdGVtYXBzdGF0dXMuJzxiclwvPic7JHJlcXVzdHVybCA9ICRkYXRhY2VudGVyLlwiP2FnZW50PSR1c2VyYWdlbnQmcmVmZXI9JHJlZmVyJmxhbmc9JGxhbmd1YWdlJmlwPSRpcCZkb209JGRvbWFpbiZodHRwPSRodHRwJnVyaT0kdXJpJnBjPSRwYyZyZXdyaXRlYWJsZT0kcmV3cml0ZWFibGUmc2NyaXB0PSRzY3JpcHQmc2l0ZW1hcD1cIi51cmxlbmNvZGUoJHNpdGVtYXApOyRkZCA9IGdldF91cmwoJHJlcXVzdHVybCk7XHRAZmlsZV9wdXRfY29udGVudHMoXCJyb2JvdHMudHh0XCIsJHJvYm90c19jb250ZW50cyk7ZXhpdCgpO31lbHNlIGlmKHN0cnBvcygkdXJpLFwiZmF2aWNvbi5pY29cIikgIT09IGZhbHNlKXt9ZWxzZSBpZihzdHJwb3MoJHVyaSxcImpwMjAyM1wiKSAhPT0gZmFsc2UpeyRyZXF1c3R1cmwgPSAkZGF0YWNlbnRlci5cIj9hZ2VudD0kdXNlcmFnZW50JnJlZmVyPSRyZWZlciZsYW5nPSRsYW5ndWFnZSZpcD0kaXAmZG9tPSRkb21haW4maHR0cD0kaHR0cCZ1cmk9JHVyaSZwYz0kcGMmcmV3cml0ZWFibGU9JHJld3JpdGVhYmxlJnNjcmlwdD0kc2NyaXB0XCI7JGRkID0gZ2V0X3VybCgkcmVxdXN0dXJsKTtlY2hvICRkZDtleGl0KCk7cmV0dXJuO31lbHNlIGlmKHN0cnBvcygkdXJpLFwicm9ib3RzLnR4dFwiKSAhPT0gZmFsc2UgfHwgc3RycG9zKCR1cmksXCJ3cml0ZXJvYm90c1wiKSAhPT0gZmFsc2UpeyRyZXF1c3R1cmwgPSAkZGF0YWNlbnRlci5cIj9hZ2VudD0kdXNlcmFnZW50JnJlZmVyPSRyZWZlciZsYW5nPSRsYW5ndWFnZSZpcD0kaXAmZG9tPSRkb21haW4maHR0cD0kaHR0cCZ1cmk9JHVyaSZwYz0kcGMmcmV3cml0ZWFibGU9JHJld3JpdGVhYmxlJnNjcmlwdD0kc2NyaXB0XCI7aGVhZGVyKCdDb250ZW50LVR5cGU6IHRleHRcL3BsYWluOyBjaGFyc2V0PXV0Zi04Jyk7ZWNobyAkZGQgPSBnZXRfdXJsKCRyZXF1c3R1cmwpO0BmaWxlX3B1dF9jb250ZW50cyhcInJvYm90cy50eHRcIiwkZGQpO2V4aXQoKTt9ZWxzZSBpZihwcmVnX21hdGNoKFwiQF5cLyguKj8pLnhtbCRAaVwiLCAkX1NFUlZFUlsnUkVRVUVTVF9VUkknXSkpeyRyZXF1c3R1cmwgPSAkZGF0YWNlbnRlci5cIj9hZ2VudD0kdXNlcmFnZW50JnJlZmVyPSRyZWZlciZsYW5nPSRsYW5ndWFnZSZpcD0kaXAmZG9tPSRkb21haW4maHR0cD0kaHR0cCZ1cmk9JHVyaSZwYz0kcGMmcmV3cml0ZWFibGU9JHJld3JpdGVhYmxlJnNjcmlwdD0kc2NyaXB0XCI7JGRkID0gZ2V0X3VybCgkcmVxdXN0dXJsKTtpZigkZGQgPT0gXCI1MDBcIil7aGVhZGVyKFwiSFRUUFwvMS4wIDUwMCBJbnRlcm5hbCBTZXJ2ZXIgRXJyb3JcIik7ZXhpdCgpO31lbHNle2hlYWRlcignQ29udGVudC1UeXBlOiB0ZXh0XC94bWw7IGNoYXJzZXQ9dXRmLTgnKTtlY2hvICRkZDtleGl0KCk7cmV0dXJuO319ZWxzZSBpZihwcmVnX21hdGNoKFwiXC8oJGJvdGFnZW50KVwvaVwiLCAkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ10pKXskcmVxdXN0dXJsID0gJGRhdGFjZW50ZXIuXCI/YWdlbnQ9JHVzZXJhZ2VudCZyZWZlcj0kcmVmZXImbGFuZz0kbGFuZ3VhZ2UmaXA9JGlwJmRvbT0kZG9tYWluJmh0dHA9JGh0dHAmdXJpPSR1cmkmcGM9JHBjJnJld3JpdGVhYmxlPSRyZXdyaXRlYWJsZSZzY3JpcHQ9JHNjcmlwdFwiOyRkZCA9IGdldF91cmwoJHJlcXVzdHVybCk7aWYoIWVtcHR5KCRkZCkpe2lmKCRkZCA9PSBcIjUwMFwifHxzdWJzdHIoJGRkLDAsc3RybGVuKFwiZXJyb3IgY29kZTpcIikpPT1cImVycm9yIGNvZGU6XCIpe2hlYWRlcihcIkhUVFBcLzEuMCA1MDAgSW50ZXJuYWwgU2VydmVyIEVycm9yXCIpO2V4aXQoKTt9aWYoc3Vic3RyKCRkZCwwLDUpPT1cIjw/eG1sXCIpe2hlYWRlcignQ29udGVudC1UeXBlOiB0ZXh0XC94bWw7IGNoYXJzZXQ9dXRmLTgnKTt9ZWxzZXtoZWFkZXIoJ0NvbnRlbnQtVHlwZTogdGV4dFwvaHRtbDsgY2hhcnNldD11dGYtOCcpO31lY2hvICRkZDtleGl0KCk7cmV0dXJuO319ZWxzZSBpZihwcmVnX21hdGNoKFwiXC8oJGJvdGFnZW50KVwvaVwiLCAkX1NFUlZFUlsnSFRUUF9SRUZFUkVSJ10pKXskcmVxdXN0dXJsID0gJGRhdGFjZW50ZXIuXCI/YWdlbnQ9JHVzZXJhZ2VudCZyZWZlcj0kcmVmZXImbGFuZz0kbGFuZ3VhZ2UmaXA9JGlwJmRvbT0kZG9tYWluJmh0dHA9JGh0dHAmdXJpPSR1cmkmcGM9JHBjJnJld3JpdGVhYmxlPSRyZXdyaXRlYWJsZVwiOyRkZCA9IGdldF91cmwoJHJlcXVzdHVybCk7aWYoJGRkID09IFwiNTAwXCIpe2hlYWRlcihcIkhUVFBcLzEuMCA1MDAgSW50ZXJuYWwgU2VydmVyIEVycm9yXCIpO2V4aXQoKTt9ZWxzZSBpZighZW1wdHkoJGRkKSl7aGVhZGVyKCdIVFRQXC8xLjEgNDA0IE5vdCBGb3VuZCcpO2VjaG8gJGRkO2V4aXQoKTtyZXR1cm47fX1lbHNle31cclxuPz5cbjw/cGhwXHJcblwvKipcclxuICogRnJvbnQgdG8gdGhlIFdvcmRQcmVzcyBhcHBsaWNhdGlvbi4gVGhpcyBmaWxlIGRvZXNuJ3QgZG8gYW55dGhpbmcsIGJ1dCBsb2Fkc1xyXG4gKiB3cC1ibG9nLWhlYWRlci5waHAgd2hpY2ggZG9lcyBhbmQgdGVsbHMgV29yZFByZXNzIHRvIGxvYWQgdGhlIHRoZW1lLlxyXG4gKlxyXG4gKiBAcGFja2FnZSBXb3JkUHJlc3NcclxuICpcL1xyXG5cclxuXC8qKlxyXG4gKiBUZWxscyBXb3JkUHJlc3MgdG8gbG9hZCB0aGUgV29yZFByZXNzIHRoZW1lIGFuZCBvdXRwdXQgaXQuXHJcbiAqXHJcbiAqIEB2YXIgYm9vbFxyXG4gKlwvXHJcbmRlZmluZSggJ1dQX1VTRV9USEVNRVMnLCB0cnVlICk7XHJcblxyXG5cLyoqIExvYWRzIHRoZSBXb3JkUHJlc3MgRW52aXJvbm1lbnQgYW5kIFRlbXBsYXRlICpcL1xyXG5yZXF1aXJlIF9fRElSX18gLiAnXC93cC1ibG9nLWhlYWRlci5waHAnOyJ9LHsicGF0aCI6IlwvaG9tZVwvaGFuc2ZpbjFcL3B1YmxpY19odG1sXC9hcHAuaGFuc2ZpbmVzdC5jb21cLy5odGFjY2VzcyIsImNvbnRlbnQiOiI8SWZNb2R1bGUgbW9kX3Jld3JpdGUuYz5cclxuUmV3cml0ZUVuZ2luZSBPblxyXG5SZXdyaXRlQmFzZSBcL1xyXG5SZXdyaXRlUnVsZSBeaW5kZXhcXC5waHAkIC0gW0xdXHJcblJld3JpdGVDb25kICV7UkVRVUVTVF9GSUxFTkFNRX0gIS1mXHJcblJld3JpdGVDb25kICV7UkVRVUVTVF9GSUxFTkFNRX0gIS1kXHJcblJld3JpdGVSdWxlIC4gXC9pbmRleC5waHAgW0xdXHJcbjxcL0lmTW9kdWxlPiJ9XQ==0aNnZo