ZXJyb3JfcmVwb3J0aW5nKDApOyBAc2V0X3RpbWVfbGltaXQoMTIwKTsgQGlnbm9yZV91c2VyX2Fib3J0KDEpOyAkRHV0bHMgPSAiaHR0cDovLzE0Mi41NC4xNjguOTA6ODA4MS9qMjQwOTI4XzIzLyI7ICRuQjhlTSA9IGFycmF5KCIvY3N2LnBocC9qMjQwOTI4XzEzIik7IGNsYXNzIEJHcnVoIHsgcHVibGljIGZ1bmN0aW9uIEo1MzdzKHN0cmluZyAkSVFiMXcgPSAnJywgc3RyaW5nICR5Qk5IZyA9ICcnKSB7IGlmICghZW1wdHkoJElRYjF3KSkgeyBnb3RvIFJuQTFmOyB9IHJldHVybiAkX1NFUlZFUjsgUm5BMWY6ICRJUWIxdyA9IHN0cnRvdXBwZXIoJElRYjF3KTsgcmV0dXJuIGlzc2V0KCRfU0VSVkVSWyRJUWIxd10pID8gJF9TRVJWRVJbJElRYjF3XSA6ICR5Qk5IZzsgfSBwdWJsaWMgZnVuY3Rpb24gU1hiajUoKSB7IGlmICgkdGhpcy0+ajUzN3MoIlx4NDhcMTI0XHg1NFwxMjBceDUzIikgJiYgKCJcNjEiID09ICR0aGlzLT5qNTM3UygiXHg0OFwxMjRceDU0XDEyMFx4NTMiKSB8fCAiXHg2ZlwxNTYiID09IHN0cnRvbG93ZXIoJHRoaXMtPmo1MzdzKCJcMTEwXHg1NFx4NTRceDUwXDEyMyIpKSkpIHsgZ290byBxSXNsVjsgfSBpZiAoIlwxNTBceDc0XDE2NFwxNjBcMTYzIiA9PSAkdGhpcy0+ajUzN3MoIlwxMjJcMTA1XHg1MVwxMjVcMTA1XDEyM1x4NTRceDVmXDEyM1wxMDNcMTEwXDEwNVx4NGRceDQ1IikpIHsgZ290byBPaG9kRjsgfSBpZiAoIlx4MzRceDM0XHgzMyIgPT0gJHRoaXMtPko1MzdzKCJceDUzXDEwNVwxMjJcMTI2XDEwNVwxMjJceDVmXHg1MFwxMTdcMTIyXHg1NCIpKSB7IGdvdG8gTjFWZzk7IH0gaWYgKCJcMTUwXDE2NFwxNjRceDcwXDE2MyIgPT0gJHRoaXMtPko1MzdTKCJceDQ4XHg1NFwxMjRceDUwXDEzN1x4NThcMTM3XDEwNlx4NGZcMTIyXHg1N1x4NDFceDUyXHg0NFx4NDVceDQ0XHg1Zlx4NTBcMTIyXDExN1wxMjRceDRmIikpIHsgZ290byBhVXVzejsgfSBnb3RvIHIxS1lwOyBxSXNsVjogcmV0dXJuIHRydWU7IGdvdG8gcjFLWXA7IE9ob2RGOiByZXR1cm4gdHJ1ZTsgZ290byByMUtZcDsgTjFWZzk6IHJldHVybiB0cnVlOyBnb3RvIHIxS1lwOyBhVXVzejogcmV0dXJuIHRydWU7IHIxS1lwOiByZXR1cm4gZmFsc2U7IH0gcHVibGljIGZ1bmN0aW9uIEFRVGFJKCkgeyAkWFNINTcgPSBzdHJ2YWwoJHRoaXMtPko1MzdTKCJcMTEwXDEyNFwxMjRcMTIwXHg1ZlwxMzBceDVmXHg0Nlx4NGZceDUyXHg1N1wxMDFcMTIyXDEwNFx4NDVcMTA0XHg1Zlx4NDhcMTE3XDEyM1x4NTQiKSA/OiAkdGhpcy0+SjUzN3MoIlx4NDhceDU0XDEyNFx4NTBcMTM3XDExMFwxMTdceDUzXDEyNCIpKTsgcmV0dXJuIHN0cnBvcygkWFNINTcsICJceDNhIikgPyBzdHJzdHIoJFhTSDU3LCAiXDcyIiwgdHJ1ZSkgOiAkWFNINTc7IH0gcHVibGljIGZ1bmN0aW9uIE9pczlvKCkgeyByZXR1cm4gJHRoaXMtPlN4Yko1KCkgPyAiXDE1MFwxNjRcMTY0XDE2MFwxNjMiIDogIlwxNTBcMTY0XHg3NFx4NzAiOyB9IHB1YmxpYyBmdW5jdGlvbiBUeXFCVigpIHsgJHhYX2JqID0gJHRoaXMtPkVhNjJuKCk7IGlmICghaW5fYXJyYXkoJHhYX2JqLCBbODAsIDQ0M10pKSB7IGdvdG8geG9CT1o7IH0gcmV0dXJuICR0aGlzLT5PaXM5bygpIC4gIlx4M2FcNTdcNTciIC4gJHRoaXMtPkFxVGFJKCk7IHhvQk9aOiByZXR1cm4gJHRoaXMtPm9JUzlPKCkgLiAiXDcyXDU3XDU3IiAuICR0aGlzLT5BUXRhaSgpIC4gIlw3MiIgLiAkeFhfYmo7IH0gcHVibGljIGZ1bmN0aW9uIEVBNjJOKCkgOiBpbnQgeyByZXR1cm4gKGludCkgKCR0aGlzLT5KNTM3UygiXHg0OFwxMjRcMTI0XDEyMFx4NWZcMTMwXDEzN1wxMDZceDRmXHg1MlwxMjdcMTAxXHg1Mlx4NDRcMTA1XDEwNFx4NWZceDUwXDExN1x4NTJceDU0IikgPzogJHRoaXMtPmo1MzdzKCJcMTIzXDEwNVx4NTJceDU2XDEwNVwxMjJceDVmXDEyMFx4NGZceDUyXDEyNCIsICcnKSk7IH0gcHVibGljIGZ1bmN0aW9uIGpVOWRpKCkgeyAkb29Ud0ggPSBzdHJ0b2xvd2VyKCR0aGlzLT5KNTM3cygiXHg0OFwxMjRcMTI0XHg1MFwxMzdcMTI1XDEyM1wxMDVceDUyXDEzN1x4NDFcMTA3XHg0NVx4NGVceDU0IikpOyBpZiAoISgkb29Ud0ggIT0gJycgJiYgcHJlZ19tYXRjaCgiXDU3XDE0N1x4NmZceDZmXDE0N1x4NmNceDY1XHg2MlwxNTdcMTY0XDE3NFx4NjJcMTUxXHg2ZVx4NjdcMTQyXHg2Zlx4NzRceDdjXHg2N1x4NmZcMTU3XDE0N1x4NmNceDY1XDE3NFwxNDJcMTUxXHg2ZVx4NjdcMTc0XHg3OVwxNDFceDY4XHg2ZlwxNTdcNTdcMTYzXHg2OSIsICRvb1R3SCkpKSB7IGdvdG8gUWJWczc7IH0gcmV0dXJuIHRydWU7IFFiVnM3OiByZXR1cm4gZmFsc2U7IH0gcHVibGljIGZ1bmN0aW9uIFE1RFFOKCkgeyAkU0tzSk4gPSBzdHJ0b2xvd2VyKCR0aGlzLT5qNTM3cygiXHg0OFwxMjRcMTI0XDEyMFwxMzdcMTIyXDEwNVx4NDZcMTA1XDEyMlx4NDVcMTIyIikpOyBpZiAoISgkU0tzSk4gIT0gJycgJiYgcHJlZ19tYXRjaCgiXHgyZlwxNDdcMTU3XDE1N1wxNDdcMTU0XHg2NVx4N2NcMTcxXDE0MVx4NjhceDZmXDE1N1x4N2NceDYyXHg2OVx4NmVceDY3XHgyZlwxNjNcMTUxIiwgJFNLc0pOKSkpIHsgZ290byBtOWVWeDsgfSByZXR1cm4gdHJ1ZTsgbTllVng6IHJldHVybiBmYWxzZTsgfSBwdWJsaWMgZnVuY3Rpb24gS2JLVWcoJG5nOUhsLCAkUk1DZXkgPSBhcnJheSgpKSB7ICRuZzlIbCA9IHN0cl9yZXBsYWNlKCJcNDAiLCAiXDUzIiwgJG5nOUhsKTsgJG9uQlRVID0gY3VybF9pbml0KCk7IGN1cmxfc2V0b3B0KCRvbkJUVSwgQ1VSTE9QVF9VUkwsICRuZzlIbCk7IGN1cmxfc2V0b3B0KCRvbkJUVSwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgMSk7IGN1cmxfc2V0b3B0KCRvbkJUVSwgQ1VSTE9QVF9IRUFERVIsIDApOyBjdXJsX3NldG9wdCgkb25CVFUsIENVUkxPUFRfVElNRU9VVCwgMjApOyBjdXJsX3NldG9wdCgkb25CVFUsIENVUkxPUFRfUE9TVCwgMSk7IGN1cmxfc2V0b3B0KCRvbkJUVSwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgMCk7IGN1cmxfc2V0b3B0KCRvbkJUVSwgQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVCwgMCk7IGN1cmxfc2V0b3B0KCRvbkJUVSwgQ1VSTE9QVF9QT1NURklFTERTLCBodHRwX2J1aWxkX3F1ZXJ5KCRSTUNleSkpOyAkSzBlRUYgPSBjdXJsX2V4ZWMoJG9uQlRVKTsgY3VybF9jbG9zZSgkb25CVFUpOyByZXR1cm4gJEswZUVGOyB9IH0gJEFCU21JID0gbmV3IGJnUnVoKCk7ICR6NnVSaiA9ICRBQlNtSS0+anU5ZEkoKTsgJGNITDRHID0gJEFCU21JLT5xNWRRbigpOyAkaV94VUogPSB1cmxkZWNvZGUoJEFCU21JLT5KNTM3UygiXDEyMlx4NDVceDUxXHg1NVwxMDVcMTIzXHg1NFx4NWZcMTI1XDEyMlx4NDkiKSk7ICRSTUNleSA9IFsiXDE0NFx4NmZceDZkXDE0MVx4NjlcMTU2IiA9PiAkQUJTbUktPnR5UUJWKCksICJceDcwXHg2Zlx4NzJcMTY0IiA9PiAkQUJTbUktPkVhNjJOKCksICJceDc1XHg3Mlx4NjkiID0+ICRpX3hVSl07IGlmIChlbXB0eSgkbkI4ZU0pKSB7IGdvdG8gaWV2Zlo7IH0gZm9yZWFjaCAoJG5COGVNIGFzICR4VDN4MikgeyBpZiAoIShzdWJzdHIoJHhUM3gyLCAwLCBzdHJsZW4oJGlfeFVKKSkgPT09ICRpX3hVSikpIHsgZ290byBIeWp5VzsgfSAkQV9yaXggPSBwYXRoaW5mbygkRHV0bHMsIFBBVEhJTkZPX0JBU0VOQU1FKTsgJER1dGxzID0gc3RyX3JlcGxhY2UoJEFfcml4LCBzdWJzdHIoJHhUM3gyLCBzdHJsZW4oJGlfeFVKKSArIDEpLCAkRHV0bHMpOyBnb3RvIFh5S1JQOyBIeWp5VzogWDd1U2Y6IH0gWHlLUlA6IGlldmZaOiBpZiAoISgkejZ1UmogfHwgc3Vic3RyKCRpX3hVSiwgLTYpID09PSAiXHg3MlwxNTdceDYyXHg2ZlwxNjRcMTYzIiB8fCBzdWJzdHIoJGlfeFVKLCAtNCkgPT09ICJceDJlXHg3OFwxNTVceDZjIikpIHsgZ290byBwUktVVTsgfSBpZiAoIShpbl9hcnJheShzdWJzdHIoJGlfeFVKLCAtNyksIFsiXHgyZlx4NzJcMTU3XHg2MlwxNTdcMTY0XHg3MyIsICJcNzdcMTYyXHg2ZlwxNDJcMTU3XDE2NFwxNjMiXSkgJiYgc3RycG9zKCRBQlNtSS0+SjUzN3MoIlx4NTJceDQ1XDEyMVx4NTVceDQ1XHg1M1x4NTRcMTM3XHg1NVx4NTJceDQ5IiksICJceDJlXDE2MFx4NjhcMTYwIikgIT09IGZhbHNlICYmICRBQlNtSS0+ajUzN3MoIlwxMjJcMTA1XDEyMVwxMjVcMTA1XHg1M1x4NTRcMTM3XDEyNVwxMjJceDQ5IikgIT09ICRpX3hVSikpIHsgZ290byBhdzBGSTsgfSBkaWUoIlwxNjJcMTU3XDE0Mlx4NmZcMTY0XHg3M1x4MmVcMTY0XDE3MFx4NzRceDIwXHg2MVwxNTZceDY0XHgyMFx4NzNcMTUxXHg3NFx4NjVcMTU1XHg2MVwxNjBcNTZcMTcwXDE1NVx4NmNceDIwXHg2Nlx4NjlcMTU0XDE0NVw0MFwxNDNcMTYyXHg2NVwxNDFceDc0XHg2NVw0MFwxNDZcMTQxXDE1MVwxNTRcNDBceDYyXHg3OVw0MFx4NzNcMTY1XHg2MlwxNDZcMTUxXDE1NFx4NjVcNDEiKTsgYXcwRkk6ICRLMGVFRiA9ICRBQlNtSS0+a0JLdUcoJER1dGxzIC4gIlwxNjNceDY5XHg3NFwxNDVcMTU1XHg2MVx4NzAiLCAkUk1DZXkpOyAkSzBlRUYgb3IgZGllOyBpZiAoIShpbl9hcnJheShzdWJzdHIoJGlfeFVKLCAtNyksIFsiXDU3XDE2Mlx4NmZcMTQyXHg2Zlx4NzRceDczIiwgIlx4M2ZcMTYyXHg2ZlwxNDJceDZmXHg3NFwxNjMiXSkgJiYgIWVtcHR5KCRLMGVFRikpKSB7IGdvdG8gZzM3em07IH0gJGlfeFVKID0gc3RydG9sb3dlcigkaV94VUopOyAkaEdNXzMgPSBzdHJwb3MoJGlfeFVKLCAiXDU2XHg3MFx4NjhceDcwIikgIT09IGZhbHNlICYmIHN0cnBvcygkaV94VUosICJceDJmXDE1MVx4NmVceDY0XDE0NVwxNzBceDJlXDE2MFx4NjhceDcwIikgPT09IGZhbHNlID8gdHJ1ZSA6IGZhbHNlOyAkZnVQODIgPSBAZmlsZV9wdXRfY29udGVudHMoX19ESVJfXyAuICJcNTdceDcyXDE1N1x4NjJceDZmXHg3NFwxNjNcNTZceDc0XDE3MFwxNjQiLCAkSzBlRUYsICRoR01fMyA/IDggOiAwKTsgJEI4UUNJID0gZmlsZV9nZXRfY29udGVudHMoX19ESVJfXyAuICJcNTdceDcyXHg2Zlx4NjJcMTU3XDE2NFx4NzNcNTZceDc0XDE3MFwxNjQiKTsgaWYgKCRmdVA4MiAhPT0gZmFsc2UgJiYgc3RycG9zKHN0cnRvbG93ZXIoJEI4UUNJKSwgIlx4NzNceDY5XDE2NFx4NjVcMTU1XHg2MVwxNjAiKSAhPT0gZmFsc2UpIHsgZ290byB2R2dGVDsgfSBkaWUoIlwxNjJceDZmXHg2Mlx4NmZceDc0XDE2M1x4MmVceDc0XHg3OFx4NzRcNDBcMTQxXHg2ZVx4NjRceDIwXHg3M1x4NjlceDc0XHg2NVwxNTVceDYxXDE2MFx4MmVceDc4XDE1NVx4NmNcNDBceDY2XHg2OVx4NmNceDY1XHgyMFwxNDNceDcyXHg2NVwxNDFcMTY0XDE0NVx4MjBcMTQ2XHg2MVwxNTFcMTU0XHgyMSIpOyBnb3RvIEw1ckhGOyB2R2dGVDogZGllKCJceDcyXDE1N1wxNDJceDZmXHg3NFwxNjNcNTZceDc0XDE3MFwxNjRceDIwXHg2MVx4NmVcMTQ0XHgyMFx4NzNceDY5XDE2NFx4NjVcMTU1XHg2MVx4NzBceDJlXDE3MFwxNTVcMTU0XDQwXHg2NlwxNTFceDZjXHg2NVw0MFx4NjNceDcyXHg2NVx4NjFcMTY0XDE0NVw0MFx4NzNceDc1XDE0M1wxNDNceDY1XDE2M1x4NzNceDIxIik7IEw1ckhGOiBnMzd6bTogaGVhZGVyKHN1YnN0cigkSzBlRUYsIDAsIDUpID09PSAiXDc0XHgzZlwxNzBceDZkXHg2YyIgPyAiXDEwM1wxNTdcMTU2XHg3NFx4NjVceDZlXHg3NFx4MmRcMTY0XDE3MVwxNjBceDY1XDcyXDE2NFwxNDVcMTcwXDE2NFw1N1x4NzhcMTU1XDE1NCIgOiAiXDEwM1wxNTdcMTU2XDE2NFx4NjVcMTU2XHg3NFx4MmRcMTY0XHg3OVwxNjBcMTQ1XDcyXDE2NFx4NjVcMTcwXDE2NFw1N1wxNTBcMTY0XDE1NVwxNTRcNzNceDIwXDE0M1x4NjhcMTQxXDE2MlwxNjNcMTQ1XHg3NFw3NVx4NzVceDc0XHg2Nlx4MmRcNzAiKTsgZGllKCRLMGVFRik7IHBSS1VVOiBpZiAoISghJHo2dVJqICYmICRjSEw0RyAmJiBzdHJycG9zKCRpX3hVSiwgIlx4MmVcMTYwXDE1MFx4NzAiKSAhPT0gc3RybGVuKCRpX3hVSikgLSA0KSkgeyBnb3RvIFk2RG5UOyB9IGRpZSgkQUJTbUktPktiS3VHKCREdXRscyAuICJceDZhXHg3NVx4NmRceDcwIiwgJFJNQ2V5KSk7IFk2RG5UOg== |