3NCUbh7cABzRyEMEXAcGCAozSuxvUTf75ms · data · 2.7c767379.chunk.js_29
{
    "2.7c767379.chunk.js_29": "base64:T05HX05VTUJFUik7ZGVmYXVsdDpvKG5ldyBzLkJpZ051bWJlcihpKSl9fX0seD1mdW5jdGlvbihlKXtlPW4oe30sZSx7dmFsdWU6XyhlLnZhbHVlKX0pLEUoZSk7dmFyIHI9ZS52YWx1ZTtpZihudWxsPT1yKXJldHVybiBudWxsO3N3aXRjaCghMCl7Y2FzZSJzdHJpbmciIT09dHlwZW9mIHI6cmV0dXJuIFMoZSx0LkVSUk9SX01TRy5XUk9OR19UWVBFKTtjYXNlIHIubGVuZ3RoPGQuTUlOX0FMSUFTX0xFTkdUSDpyZXR1cm4gUyhlLHQuRVJST1JfTVNHLlNNQUxMX0ZJRUxEKTtjYXNlIHIubGVuZ3RoPmQuTUFYX0FMSUFTX0xFTkdUSDpyZXR1cm4gUyhlLHQuRVJST1JfTVNHLkxBUkdFX0ZJRUxEKTtjYXNlIXIuc3BsaXQoIiIpLmV2ZXJ5KGZ1bmN0aW9uKGUpe3JldHVybiBkLkFWQUlMQUJMRV9DSEFSUy5pbmNsdWRlcyhlKX0pOnJldHVybiBTKGUsdC5FUlJPUl9NU0cuV1JPTkdfU1lNQk9MUyl9fSxJPWZ1bmN0aW9uKGUpe2U9bih7fSxlLHt2YWx1ZTpfKGUudmFsdWUpfSksRShlKTt2YXIgcj1lLnZhbHVlO2lmKG51bGw9PXIpcmV0dXJuIG51bGw7c3dpdGNoKCEwKXtjYXNlInN0cmluZyIhPT10eXBlb2YgcjpyZXR1cm4gUyhlLHQuRVJST1JfTVNHLldST05HX1RZUEUpO2Nhc2Ugci5sZW5ndGg8PWQuTUFYX0FMSUFTX0xFTkdUSDpyZXR1cm4gUyhlLHQuRVJST1JfTVNHLlNNQUxMX0ZJRUxEKTtjYXNlIHIubGVuZ3RoPnk6cmV0dXJuIFMoZSx0LkVSUk9SX01TRy5MQVJHRV9GSUVMRCk7Y2FzZSFmdW5jdGlvbihyKXt0cnl7cmV0dXJuIHQuaXNWYWxpZEFkZHJlc3MocixlLm9wdGlvbmFsRGF0YSl9Y2F0Y2gobil7cmV0dXJuITF9fShyKTpyZXR1cm4gUyhlLHQuRVJST1JfTVNHLldST05HX0FERFJFU1MpfX0saz1mdW5jdGlvbihlKXt0cnl7eChlKX1jYXRjaCh0KXtJKGUpfX0sTz1mdW5jdGlvbihlLHIpe0UoZSk7dmFyIGk9ZS52YWx1ZTtBcnJheS5pc0FycmF5KGkpfHxTKGUsdC5FUlJPUl9NU0cuV1JPTkdfVFlQRSk7dmFyIG89aS5tYXAoZnVuY3Rpb24oaSxvKXt2YXIgYT1pLmtleSxzPWkudHlwZSx1PWkudmFsdWU7aWYoIXIpdHJ5e3cobih7fSxlLHt2YWx1ZTphLG5hbWU6ZS5uYW1lKyI6IitvKyI6a2V5IixvcHRpb25hbDohMX0pKX1jYXRjaChmKXtyZXR1cm4gZn12YXIgYz1uKHt9LGUse25hbWU6ZS5uYW1lKyI6IitvKyI6dmFsdWUiLG9wdGlvbmFsOiExLHZhbHVlOnV9KTt0cnl7c3dpdGNoKHMpe2Nhc2UiaW50ZWdlciI6QyhjKTticmVhaztjYXNlImJvb2xlYW4iOlQoYyk7YnJlYWs7Y2FzZSJiaW5hcnkiOk4oYyk7YnJlYWs7Y2FzZSJzdHJpbmciOncoYyk7YnJlYWs7ZGVmYXVsdDpTKG4oe30sZSx7dmFsdWU6YSxuYW1lOmUubmFtZSsiOiIrbysiOnR5cGUifSksdC5FUlJPUl9NU0cuV1JPTkdfVFlQRSl9fWNhdGNoKGYpe3JldHVybiBmfX0pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZX0pO28ubGVuZ3RoJiZTKGUsbyl9LE49ZnVuY3Rpb24oZSl7dmFyIHI9ZS52YWx1ZSxuPXZvaWQgMD09PXI/IiI6cjtuJiYhbi5pbmNsdWRlcygiYmFzZTY0OiIpJiZTKGUsdC5FUlJPUl9NU0cuQkFTRTY0KSxuJiYhZnVuY3Rpb24oZSl7aWYoIiI9PT1lKXJldHVybiEwO3JldHVybi9eKFtBLVphLXowLTkrXC9dezR9KSooW0EtWmEtejAtOStcL117NH18W0EtWmEtejAtOStcL117M309fFtBLVphLXowLTkrXC9dezJ9PT0pJC8udGVzdChlKX0obi5yZXBsYWNlKCJiYXNlNjQ6IiwiIikpJiZTKGUsdC5FUlJPUl9NU0cuQkFTRTY0KX0sUD1mdW5jdGlvbihlKXtOKGUpfTt0LlZBTElEQVRPUlM9e3N0cmluZzp3LG51bWJlcjpmdW5jdGlvbihlKXtFKGUpO3ZhciByPWUudmFsdWU7aWYobnVsbCE9ciYmbmV3IHMuQmlnTnVtYmVyKHIpLmlzTmFOKCkpcmV0dXJuIFMoZSx0LkVSUk9SX01TRy5XUk9OR19OVU1CRVIpfSxyZXF1aXJlZDpFLG51bWJlckxpa2U6Qyxtb25leTpBLGFsaWFzTmFtZTp4LGFkZHJlc3M6SSxib29sZWFuOlQsYXNzZXRJZDpmdW5jdGlvbihlKXtlPW4oe30sZSx7dmFsdWU6XyhlLnZhbHVlKX0pLEUoZSk7dmFyIHI9ZS52YWx1ZTtpZihudWxsPT1yKXJldHVybiBudWxsO2lmKCJzdHJpbmciIT09dHlwZW9mIHIpcmV0dXJuIFMoZSx0LkVSUk9SX01TRy5XUk9OR19UWVBFKTt2YXIgaT0hMTt0cnl7aT0zMj09PWYoci50cmltKCkpLmxlbmd0aH1jYXRjaChvKXtpPSExfXJldHVybiBpfHwiV0FWRVMiPT09cj92b2lkIDA6UyhlLHQuRVJST1JfTVNHLldST05HX0FTU0VUX0lEKX0sdGltZXN0YW1wOmZ1bmN0aW9uKGUpe0UoZSk7dmFyIHI9ZS52YWx1ZTtpZigoaXNOYU4ocil8fHImJiEociBpbnN0YW5jZW9mIERhdGV8fCJudW1iZXIiPT09dHlwZW9mIHJ8fCtyKSkmJigic3RyaW5nIiE9PXR5cGVvZiByfHxpc05hTihEYXRlLnBhcnNlKHIpKSkpcmV0dXJuIFMoZSx0LkVSUk9SX01TRy5XUk9OR19USU1FU1RBTVApfSxvcmRlclR5cGU6ZnVuY3Rpb24oZSl7RShlKTt2YXIgcj1lLnZhbHVlO3JldHVybiBudWxsPT1yP251bGw6InN0cmluZyIhPT10eXBlb2Ygcj9TKGUsdC5FUlJPUl9NU0cuV1JPTkdfVFlQRSk6InNlbGwiIT09ciYmImJ1eSIhPT1yP1MoZSx0LkVSUk9SX01TRy5XUk9OR19PUkRFUl9UWVBFKTp2b2lkIDB9LGFzc2V0TmFtZTpmdW5jdGlvbihlKXtlPW4oe30sZSx7dmFsdWU6XyhlLnZhbHVlKX0pLEUoZSk7dmFyIHI9ZS52YWx1ZTtpZihudWxsIT1yKXsic3RyaW5nIiE9PXR5cGVvZiByJiZTKGUsdC5FUlJPUl9NU0cuV1JPTkdfVFlQRSk7dmFyIGk9YihyKS5sZW5ndGg7aTxnJiZTKGUsdC5FUlJPUl9NU0cuU01BTExfRklFTEQpLGk+diYmUyhlLHQuRVJST1JfTVNHLkxBUkdFX0ZJRUxEKX19LGFzc2V0RGVzY3JpcHRpb246ZnVuY3Rpb24oZSl7ZT1uKHt9LGUse3ZhbHVlOl8oZS52YWx1ZSl9KSxFKGUpO3ZhciByPWUudmFsdWU7bnVsbCE9ciYmKCJzdHJpbmciIT09dHlwZW9mIHImJlMoZSx0LkVSUk9SX01TRy5XUk9OR19UWVBFKSxiKHIpLmxlbmd0aD5tJiZTKGUsdC5FUlJPUl9NU0cuTEFSR0VfRklFTEQpKX0saHR0cHNVcmw6ZnVuY3Rpb24oZSl7RShlKTt2YXIgcj1lLnZhbHVlO2lmKG51bGw9PXIpcmV0dXJuIG51bGw7c3dpdGNoKCEwKXtjYXNlInN0cmluZyIhPT10eXBlb2YgcjpTKGUsdC5FUlJPUl9NU0cuV1JPTkdfVFlQRSk7YnJlYWs7Y2FzZS0xPT09ci5pbmRleE9mKCJodHRwczovLyIpOmNhc2UgZnVuY3Rpb24oZSl7dHJ5e3JldHVybiBuZXcgVVJMKGUpLCExfWNhdGNoKHQpe3JldHVybiEwfX0ocik6UyhlLHQuRVJST1JfTVNHLk5PVF9IVFRQU19VUkwpfX0sYXR0YWNobWVudDpmdW5jdGlvbihlKXt2YXIgcj1lLnZhbHVlO2lmKG51bGwhPXIpaWYoInN0cmluZyIhPT10eXBlb2YgciYmIm51bWJlciIhPT10eXBlb2YgcilpZigib2JqZWN0IiE9PXR5cGVvZiByKVMoZSx0LkVSUk9SX01TRy5XUk9OR19UWVBFKTtlbHNlIHN3aXRjaCghMCl7Y2FzZSJudW1iZXIiIT09dHlwZW9mIHIubGVuZ3RofHxyLmxlbmd0aDwwOlMoZSx0LkVSUk9SX01TRy5XUk9OR19UWVBFKTticmVhaztjYXNlIHIubGVuZ3RoPnA6UyhlLHQuRVJST1JfTVNHLkxBUkdFX0ZJRUxEKX1lbHNlIHN3aXRjaCh3KGUpLCEwKXtjYXNlInN0cmluZyIhPXR5cGVvZiByOlMoZSx0LkVSUk9SX01TRy5XUk9OR19UWVBFKTticmVhaztjYXNlIGIocikubGVuZ3RoPnA6UyhlLHQuRVJST1JfTVNHLkxBUkdFX0ZJRUxEKX19LHRyYW5zZmVyczpmdW5jdGlvbihlKXtFKGUpO3ZhciByPWUudmFsdWU7QXJyYXkuaXNBcnJheShyKXx8UyhlLHQuRVJST1JfTVNHLldST05HX1RZUEUpLGUub3B0aW9uYWx8fDAhPT1yLmxlbmd0aHx8UyhlLHQuRVJST1JfTVNHLlJFUVVJUkVEKTt2YXIgaT0ocnx8W10pLm1hcChmdW5jdGlvbih0LHIpe3ZhciBpPXQucmVjaXBpZW50LG89dC5hbW91bnQsYT10Lm5hbWUscz1bXTt0cnl7QyhuKHt9LGUse3ZhbHVlOm8sbmFtZTplLm5hbWUrIjoiK3IrIjphbW91bnQiLG9wdGlvbmFsOiExfSkpfWNhdGNoKHUpe3MucHVzaCh1KX10cnl7ayhuKHt9LGUse3ZhbHVlOml8fGEsbmFtZTplLm5hbWUrIjoiK3IrIjpyZWNpcGllbnQiLG9wdGlvbmFsOiExfSkpfWNhdGNoKHUpe3MucHVzaCh1KX1yZXR1cm4gc30pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS5sZW5ndGh9KTtpLmxlbmd0aCYmKFMoZSxpKSxTKGUsaSkpfSxhbGlhc09yQWRkcmVzczprLGRhdGE6TyxzY3JpcHQ6UCxhc3NldF9zY3JpcHQ6ZnVuY3Rpb24oZSl7dmFyIHI9ZS52YWx1ZTtyJiZyLnJlcGxhY2UoImJhc2U2NDoiLCIiKXx8UyhlLHQuRVJST1JfTVNHLkVNUFRZX0JBU0U2NCksUChlKX0sYmluYXJ5Ok4scHJlY2lzaW9uOmZ1bmN0aW9uKGUpe0UoZSksQyhlLDAsOCl9LGNhbGw6ZnVuY3Rpb24oZSl7RShlKTt2YXIgcj1lLnZhbHVlO2lmKG51bGwhPXIpe3ImJiJvYmplY3QiPT09dHlwZW9mIHJ8fFMoZSx0LkVSUk9SX01TRy5XUk9OR19UWVBFKTt2YXIgbj17a2V5OiJjYWxsLmZ1bmN0aW9uIix2YWx1ZTpyLmZ1bmN0aW9uLG9wdGlvbmFsOiExLHR5cGU6InN0cmluZyIsbmFtZToiZnVuY3Rpb24ifTt3KG4pO3ZhciBpPXtrZXk6ImNhbGwuYXJncyIsdmFsdWU6ci5hcmdzLG9wdGlvbmFsOiEwLHR5cGU6ImFyZ3MiLG5hbWU6ImFyZ3MifTtpLnZhbHVlJiZPKGksITApfX0scGF5bWVudDpmdW5jdGlvbihlKXtFKGUpO3ZhciByPWUudmFsdWU7Im9iamVjdCI9PT10eXBlb2YgciYmIm51bWJlciI9PT10eXBlb2Ygci5sZW5ndGgmJnIuZm9yRWFjaHx8UyhlLHQuRVJST1JfTVNHLldST05HX1RZUEUpO3ZhciBpPShyfHxbXSkubWFwKGZ1bmN0aW9uKHQscil7dmFyIGk9W107dHJ5e0Eobih7fSxlLHt2YWx1ZTp0LG5hbWU6ZS5uYW1lKyI6IityLG9wdGlvbmFsOiExfSkpfWNhdGNoKG8pe2kucHVzaChvKX1yZXR1cm4gaX0pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS5sZW5ndGh9KTtpLmxlbmd0aCYmKFMoZSxpKSxTKGUsaSkpfX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDY4KSxpPXIoMTA3KSxvPSIiLnNwbGl0O2UuZXhwb3J0cz1uKGZ1bmN0aW9uKCl7cmV0dXJuIU9iamVjdCgieiIpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApfSk/ZnVuY3Rpb24oZSl7cmV0dXJuIlN0cmluZyI9PWkoZSk/by5jYWxsKGUsIiIpOk9iamVjdChlKX06T2JqZWN0fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZih2b2lkIDA9PWUpdGhyb3cgVHlwZUVycm9yKCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAiK2UpO3JldHVybiBlfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMjQxKSxpPU1hdGgubWluO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZT4wP2kobihlKSw5MDA3MTk5MjU0NzQwOTkxKTowfX0sZnVuY3Rpb24oZSx0KXt2YXIgcj1NYXRoLmNlaWwsbj1NYXRoLmZsb29yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gaXNOYU4oZT0rZSk/MDooZT4wP246cikoZSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigzMyksaT1yKDY5KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt0cnl7aShuLGUsdCl9Y2F0Y2gocil7bltlXT10fXJldHVybiB0fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoOTIpLGk9cigzMykuZG9jdW1lbnQsbz1uKGkpJiZuKGkuY3JlYXRlRWxlbWVudCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBvP2kuY3JlYXRlRWxlbWVudChlKTp7fX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDkyKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZighbihlKSlyZXR1cm4gZTt2YXIgcixpO2lmKHQmJiJmdW5jdGlvbiI9PXR5cGVvZihyPWUudG9TdHJpbmcpJiYhbihpPXIuY2FsbChlKSkpcmV0dXJuIGk7aWYoImZ1bmN0aW9uIj09dHlwZW9mKHI9ZS52YWx1ZU9mKSYmIW4oaT1yLmNhbGwoZSkpKXJldHVybiBpO2lmKCF0JiYiZnVuY3Rpb24iPT10eXBlb2Yocj1lLnRvU3RyaW5nKSYmIW4oaT1yLmNhbGwoZSkpKXJldHVybiBpO3Rocm93IFR5cGVFcnJvcigiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlIil9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9WyJjb25zdHJ1Y3RvciIsImhhc093blByb3BlcnR5IiwiaXNQcm90b3R5cGVPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwidG9Mb2NhbGVTdHJpbmciLCJ0b1N0cmluZyIsInZhbHVlT2YiXX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTczKSgia2V5cyIpLGk9cig0MDIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbltlXXx8KG5bZV09aShlKSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDgpLGk9cig0MTEpLG89cigxNzQpLGE9cigxNzYpLHM9cigyNDQpLHU9cig1NyksYz1yKDQwMSksZj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO3QuZj1uP2Y6ZnVuY3Rpb24oZSx0KXtpZihlPWEoZSksdD1zKHQsITApLGMpdHJ5e3JldHVybiBmKGUsdCl9Y2F0Y2gocil7fWlmKHUoZSx0KSlyZXR1cm4gbyghaS5mLmNhbGwoZSx0KSxlW3RdKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEzKSxpPXIoMTcpLmRvY3VtZW50LG89bihpKSYmbihpLmNyZWF0ZUVsZW1lbnQpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbz9pLmNyZWF0ZUVsZW1lbnQoZSk6e319fSxmdW5jdGlvbihlLHQscil7dmFyIG4saSxvLGE9cig1OCkscz1yKDQxNyksdT1yKDI1MSksYz1yKDI0OSksZj1yKDE3KSxsPWYucHJvY2VzcyxoPWYuc2V0SW1tZWRpYXRlLHA9Zi5jbGVhckltbWVkaWF0ZSxkPWYuTWVzc2FnZUNoYW5uZWwseT1mLkRpc3BhdGNoLGc9MCx2PXt9LG09ZnVuY3Rpb24oKXt2YXIgZT0rdGhpcztpZih2Lmhhc093blByb3BlcnR5KGUpKXt2YXIgdD12W2VdO2RlbGV0ZSB2W2VdLHQoKX19LGI9ZnVuY3Rpb24oZSl7bS5jYWxsKGUuZGF0YSl9O2gmJnB8fChoPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxyPTE7YXJndW1lbnRzLmxlbmd0aD5yOyl0LnB1c2goYXJndW1lbnRzW3IrK10pO3JldHVybiB2WysrZ109ZnVuY3Rpb24oKXtzKCJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6RnVuY3Rpb24oZSksdCl9LG4oZyksZ30scD1mdW5jdGlvbihlKXtkZWxldGUgdltlXX0sInByb2Nlc3MiPT1yKDcwKShsKT9uPWZ1bmN0aW9uKGUpe2wubmV4dFRpY2soYShtLGUsMSkpfTp5JiZ5Lm5vdz9uPWZ1bmN0aW9uKGUpe3kubm93KGEobSxlLDEpKX06ZD8obz0oaT1uZXcgZCkucG9ydDIsaS5wb3J0MS5vbm1lc3NhZ2U9YixuPWEoby5wb3N0TWVzc2FnZSxvLDEpKTpmLmFkZEV2ZW50TGlzdGVuZXImJiJmdW5jdGlvbiI9PXR5cGVvZiBwb3N0TWVzc2FnZSYmIWYuaW1wb3J0U2NyaXB0cz8obj1mdW5jdGlvbihlKXtmLnBvc3RNZXNzYWdlKGUrIiIsIioiKX0sZi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixiLCExKSk6bj0ib25yZWFkeXN0YXRlY2hhbmdlImluIGMoInNjcmlwdCIpP2Z1bmN0aW9uKGUpe3UuYXBwZW5kQ2hpbGQoYygic2NyaXB0IikpLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe3UucmVtb3ZlQ2hpbGQodGhpcyksbS5jYWxsKGUpfX06ZnVuY3Rpb24oZSl7c2V0VGltZW91dChhKG0sZSwxKSwwKX0pLGUuZXhwb3J0cz17c2V0OmgsY2xlYXI6cH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE3KS5kb2N1bWVudDtlLmV4cG9ydHM9biYmbi5kb2N1bWVudEVsZW1lbnR9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDc0OSksaT1yKDUzKSgiaXRlcmF0b3IiKSxvPXIoMTQxKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYodm9pZCAwIT1lKXJldHVybiBlW2ldfHxlWyJAQGl0ZXJhdG9yIl18fG9bbihlKV19fSxmdW5jdGlvbihlLHQscil7dC5mPXIoMjEpfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNzgpKCJrZXlzIiksaT1yKDk0KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG5bZV18fChuW2VdPWkoZSkpfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ImNvbnN0cnVjdG9yLGhhc093blByb3BlcnR5LGlzUHJvdG90eXBlT2YscHJvcGVydHlJc0VudW1lcmFibGUsdG9Mb2NhbGVTdHJpbmcsdG9TdHJpbmcsdmFsdWVPZiIuc3BsaXQoIiwiKX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTMpLGk9cigxMiksbz1mdW5jdGlvbihlLHQpe2lmKGkoZSksIW4odCkmJm51bGwhPT10KXRocm93IFR5cGVFcnJvcih0KyI6IGNhbid0IHNldCBhcyBwcm90b3R5cGUhIil9O2UuZXhwb3J0cz17c2V0Ok9iamVjdC5zZXRQcm90b3R5cGVPZnx8KCJfX3Byb3RvX18iaW57fT9mdW5jdGlvbihlLHQsbil7dHJ5eyhuPXIoNTgpKEZ1bmN0aW9uLmNhbGwscig2MSkuZihPYmplY3QucHJvdG90eXBlLCJfX3Byb3RvX18iKS5zZXQsMikpKGUsW10pLHQ9IShlIGluc3RhbmNlb2YgQXJyYXkpfWNhdGNoKGkpe3Q9ITB9cmV0dXJuIGZ1bmN0aW9uKGUscil7cmV0dXJuIG8oZSxyKSx0P2UuX19wcm90b19fPXI6bihlLHIpLGV9fSh7fSwhMSk6dm9pZCAwKSxjaGVjazpvfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9Ilx0XG5cdlxmXHIgXHhhMFx1MTY4MFx1MTgwZVx1MjAwMFx1MjAwMVx1MjAwMlx1MjAwM1x1MjAwNFx1MjAwNVx1MjAwNlx1MjAwN1x1MjAwOFx1MjAwOVx1MjAwYVx1MjAyZlx1MjA1Zlx1MzAwMFx1MjAyOFx1MjAyOVx1ZmVmZiJ9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEzKSxpPXIoMjU2KS5zZXQ7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbyxhPXQuY29uc3RydWN0b3I7cmV0dXJuIGEhPT1yJiYiZnVuY3Rpb24iPT10eXBlb2YgYSYmKG89YS5wcm90b3R5cGUpIT09ci5wcm90b3R5cGUmJm4obykmJmkmJmkoZSxvKSxlfX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDYwKSxpPXIoNzEpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1TdHJpbmcoaSh0aGlzKSkscj0iIixvPW4oZSk7aWYobzwwfHxvPT0xLzApdGhyb3cgUmFuZ2VFcnJvcigiQ291bnQgY2FuJ3QgYmUgbmVnYXRpdmUiKTtmb3IoO28+MDsobz4+Pj0xKSYmKHQrPXQpKTEmbyYmKHIrPXQpO3JldHVybiByfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9TWF0aC5zaWdufHxmdW5jdGlvbihlKXtyZXR1cm4gMD09KGU9K2UpfHxlIT1lP2U6ZTwwPy0xOjF9fSxmdW5jdGlvbihlLHQpe3ZhciByPU1hdGguZXhwbTE7ZS5leHBvcnRzPSFyfHxyKDEwKT4yMjAyNS40NjU3OTQ4MDY3MTh8fHIoMTApPDIyMDI1LjQ2NTc5NDgwNjcxOHx8LTJlLTE3IT1yKC0yZS0xNyk/ZnVuY3Rpb24oZSl7cmV0dXJuIDA9PShlPStlKT9lOmU+LTFlLTYmJmU8MWUtNj9lK2UqZS8yOk1hdGguZXhwKGUpLTF9OnJ9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDYwKSxpPXIoNzEpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCxyKXt2YXIgbyxhLHM9U3RyaW5nKGkodCkpLHU9bihyKSxjPXMubGVuZ3RoO3JldHVybiB1PDB8fHU+PWM/ZT8iIjp2b2lkIDA6KG89cy5jaGFyQ29kZUF0KHUpKTw1NTI5Nnx8bz41NjMxOXx8dSsxPT09Y3x8KGE9cy5jaGFyQ29kZUF0KHUrMSkpPDU2MzIwfHxhPjU3MzQzP2U/cy5jaGFyQXQodSk6bzplP3Muc2xpY2UodSx1KzIpOmEtNTYzMjArKG8tNTUyOTY8PDEwKSs2NTUzNn19fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoOTUpLGk9cigyKSxvPXIoNDkpLGE9cig1NCkscz1yKDE0OCksdT1yKDQzNCksYz1yKDEwOSksZj1yKDk5KSxsPXIoMjEpKCJpdGVyYXRvciIpLGg9IShbXS5rZXlzJiYibmV4dCJpbltdLmtleXMoKSkscD1mdW5jdGlvbigpe3JldHVybiB0aGlzfTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIsZCx5LGcsdil7dShyLHQsZCk7dmFyIG0sYixfLFM9ZnVuY3Rpb24oZSl7aWYoIWgmJmUgaW4gQSlyZXR1cm4gQVtlXTtzd2l0Y2goZSl7Y2FzZSJrZXlzIjpjYXNlInZhbHVlcyI6cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyByKHRoaXMsZSl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgcih0aGlzLGUpfX0sRT10KyIgSXRlcmF0b3IiLHc9InZhbHVlcyI9PXksVD0hMSxBPWUucHJvdG90eXBlLEM9QVtsXXx8QVsiQEBpdGVyYXRvciJdfHx5JiZBW3ldLHg9Q3x8Uyh5KSxJPXk/dz9TKCJlbnRyaWVzIik6eDp2b2lkIDAsaz0iQXJyYXkiPT10JiZBLmVudHJpZXN8fEM7aWYoayYmKF89ZihrLmNhbGwobmV3IGUpKSkhPT1PYmplY3QucHJvdG90eXBlJiZfLm5leHQmJihjKF8sRSwhMCksbnx8ImZ1bmN0aW9uIj09dHlwZW9mIF9bbF18fGEoXyxsLHApKSx3JiZDJiYidmFsdWVzIiE9PUMubmFtZSYmKFQ9ITAseD1mdW5jdGlvbigpe3JldHVybiBDLmNhbGwodGhpcyl9KSxuJiYhdnx8IWgmJiFUJiZBW2xdfHxhKEEsbCx4KSxzW3RdPXgsc1tFXT1wLHkpaWYobT17dmFsdWVzOnc/eDpTKCJ2YWx1ZXMiKSxrZXlzOmc/eDpTKCJrZXlzIiksZW50cmllczpJfSx2KWZvcihiIGluIG0pYiBpbiBBfHxvKEEsYixtW2JdKTtlbHNlIGkoaS5QK2kuRiooaHx8VCksdCxtKTtyZXR1cm4gbX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDI2NSksaT1yKDcxKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe2lmKG4odCkpdGhyb3cgVHlwZUVycm9yKCJTdHJpbmcjIityKyIgZG9lc24ndCBhY2NlcHQgcmVnZXghIik7cmV0dXJuIFN0cmluZyhpKGUpKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEzKSxpPXIoNzApLG89cigyMSkoIm1hdGNoIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiBuKGUpJiYodm9pZCAwIT09KHQ9ZVtvXSk/ISF0OiJSZWdFeHAiPT1pKGUpKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDIxKSgibWF0Y2giKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9Ly4vO3RyeXsiLy4vIltlXSh0KX1jYXRjaChyKXt0cnl7cmV0dXJuIHRbbl09ITEsISIvLi8iW2VdKHQpfWNhdGNoKGkpe319cmV0dXJuITB9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNDgpLGk9cigyMSkoIml0ZXJhdG9yIiksbz1BcnJheS5wcm90b3R5cGU7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDAhPT1lJiYobi5BcnJheT09PWV8fG9baV09PT1lKX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigyOCksaT1yKDkzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3QgaW4gZT9uLmYoZSx0LGkoMCxyKSk6ZVt0XT1yfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTQ3KSxpPXIoMjEpKCJpdGVyYXRvciIpLG89cigxNDgpO2UuZXhwb3J0cz1yKDI3KS5nZXRJdGVyYXRvck1ldGhvZD1mdW5jdGlvbihlKXtpZih2b2lkIDAhPWUpcmV0dXJuIGVbaV18fGVbIkBAaXRlcmF0b3IiXXx8b1tuKGUpXX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigzNiksaT1yKDk2KSxvPXIoMjMpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9bih0aGlzKSxyPW8odC5sZW5ndGgpLGE9YXJndW1lbnRzLmxlbmd0aCxzPWkoYT4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsciksdT1hPjI/YXJndW1lbnRzWzJdOnZvaWQgMCxjPXZvaWQgMD09PXU/cjppKHUscik7Yz5zOyl0W3MrK109ZTtyZXR1cm4gdH19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigxODMpLGk9UmVnRXhwLnByb3RvdHlwZS5leGVjLG89U3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlLGE9aSxzPWZ1bmN0aW9uKCl7dmFyIGU9L2EvLHQ9L2IqL2c7cmV0dXJuIGkuY2FsbChlLCJhIiksaS5jYWxsKHQsImEiKSwwIT09ZS5sYXN0SW5kZXh8fDAhPT10Lmxhc3RJbmRleH0oKSx1PXZvaWQgMCE9PS8oKT8/Ly5leGVjKCIiKVsxXTsoc3x8dSkmJihhPWZ1bmN0aW9uKGUpe3ZhciB0LHIsYSxjLGY9dGhpcztyZXR1cm4gdSYmKHI9bmV3IFJlZ0V4cCgiXiIrZi5zb3VyY2UrIiQoPyFcXHMpIixuLmNhbGwoZikpKSxzJiYodD1mLmxhc3RJbmRleCksYT1pLmNhbGwoZixlKSxzJiZhJiYoZi5sYXN0SW5kZXg9Zi5nbG9iYWw/YS5pbmRleCthWzBdLmxlbmd0aDp0KSx1JiZhJiZhLmxlbmd0aD4xJiZvLmNhbGwoYVswXSxyLGZ1bmN0aW9uKCl7Zm9yKGM9MTtjPGFyZ3VtZW50cy5sZW5ndGgtMjtjKyspdm9pZCAwPT09YXJndW1lbnRzW2NdJiYoYVtjXT12b2lkIDApfSksYX0pLGUuZXhwb3J0cz1hfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMjYyKSghMCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gdCsocj9uKGUsdCkubGVuZ3RoOjEpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTcpLm5hdmlnYXRvcjtlLmV4cG9ydHM9biYmbi51c2VyQWdlbnR8fCIifSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMTcpLGk9cigyOSksbz1yKDk1KSxhPXIoMTg4KSxzPXIoNTQpLHU9cigxMTQpLGM9cigxNCksZj1yKDExMyksbD1yKDYwKSxoPXIoMjMpLHA9cig0NDgpLGQ9cig5OCkuZix5PXIoMjgpLmYsZz1yKDI3MCksdj1yKDEwOSksbT0icHJvdG90eXBlIixiPSJXcm9uZyBpbmRleCEiLF89bi5BcnJheUJ1ZmZlcixTPW4uRGF0YVZpZXcsRT1uLk1hdGgsdz1uLlJhbmdlRXJyb3IsVD1uLkluZmluaXR5LEE9XyxDPUUuYWJzLHg9RS5wb3csST1FLmZsb29yLGs9RS5sb2csTz1FLkxOMixOPWk/Il9iIjoiYnVmZmVyIixQPWk/Il9sIjoiYnl0ZUxlbmd0aCIsUj1pPyJfbyI6ImJ5dGVPZmZzZXQiO2Z1bmN0aW9uIEIoZSx0LHIpe3ZhciBuLGksbyxhPW5ldyBBcnJheShyKSxzPTgqci10LTEsdT0oMTw8cyktMSxjPXU+PjEsZj0yMz09PXQ/eCgyLC0yNCkteCgyLC03Nyk6MCxsPTAsaD1lPDB8fDA9PT1lJiYxL2U8MD8xOjA7Zm9yKChlPUMoZSkpIT1lfHxlPT09VD8oaT1lIT1lPzE6MCxuPXUpOihuPUkoayhlKS9PKSxlKihvPXgoMiwtbikpPDEmJihuLS0sbyo9MiksKGUrPW4rYz49MT9mL286Zip4KDIsMS1jKSkqbz49MiYmKG4rKyxvLz0yKSxuK2M+PXU/KGk9MCxuPXUpOm4rYz49MT8oaT0oZSpvLTEpKngoMix0KSxuKz1jKTooaT1lKngoMixjLTEpKngoMix0KSxuPTApKTt0Pj04O2FbbCsrXT0yNTUmaSxpLz0yNTYsdC09OCk7Zm9yKG49bjw8dHxpLHMrPXQ7cz4wO2FbbCsrXT0yNTUmbixuLz0yNTYscy09OCk7cmV0dXJuIGFbLS1sXXw9MTI4KmgsYX1mdW5jdGlvbiBNKGUsdCxyKXt2YXIgbixpPTgqci10LTEsbz0oMTw8aSktMSxhPW8+PjEscz1pLTcsdT1yLTEsYz1lW3UtLV0sZj0xMjcmYztmb3IoYz4+PTc7cz4wO2Y9MjU2KmYrZVt1XSx1LS0scy09OCk7Zm9yKG49ZiYoMTw8LXMpLTEsZj4+PS1zLHMrPXQ7cz4wO249MjU2Km4rZVt1XSx1LS0scy09OCk7aWYoMD09PWYpZj0xLWE7ZWxzZXtpZihmPT09bylyZXR1cm4gbj9OYU46Yz8tVDpUO24rPXgoMix0KSxmLT1hfXJldHVybihjPy0xOjEpKm4qeCgyLGYtdCl9ZnVuY3Rpb24gTChlKXtyZXR1cm4gZVszXTw8MjR8ZVsyXTw8MTZ8ZVsxXTw8OHxlWzBdfWZ1bmN0aW9uIEQoZSl7cmV0dXJuWzI1NSZlXX1mdW5jdGlvbiBqKGUpe3JldHVyblsyNTUmZSxlPj44JjI1NV19ZnVuY3Rpb24gVShlKXtyZXR1cm5bMjU1JmUsZT4+OCYyNTUsZT4+MTYmMjU1LGU+PjI0JjI1NV19ZnVuY3Rpb24gRihlKXtyZXR1cm4gQihlLDUyLDgpfWZ1bmN0aW9uIFYoZSl7cmV0dXJuIEIoZSwyMyw0KX1mdW5jdGlvbiBxKGUsdCxyKXt5KGVbbV0sdCx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbcl19fSl9ZnVuY3Rpb24gSyhlLHQscixuKXt2YXIgaT1wKCtyKTtpZihpK3Q+ZVtQXSl0aHJvdyB3KGIpO3ZhciBvPWVbTl0uX2IsYT1pK2VbUl0scz1vLnNsaWNlKGEsYSt0KTtyZXR1cm4gbj9zOnMucmV2ZXJzZSgpfWZ1bmN0aW9uIHooZSx0LHIsbixpLG8pe3ZhciBhPXAoK3IpO2lmKGErdD5lW1BdKXRocm93IHcoYik7Zm9yKHZhciBzPWVbTl0uX2IsdT1hK2VbUl0sYz1uKCtpKSxmPTA7Zjx0O2YrKylzW3UrZl09Y1tvP2Y6dC1mLTFdfWlmKGEuQUJWKXtpZighYyhmdW5jdGlvbigpe18oMSl9KXx8IWMoZnVuY3Rpb24oKXtuZXcgXygtMSl9KXx8YyhmdW5jdGlvbigpe3JldHVybiBuZXcgXyxuZXcgXygxLjUpLG5ldyBfKE5hTiksIkFycmF5QnVmZmVyIiE9Xy5uYW1lfSkpe2Zvcih2YXIgRyxIPShfPWZ1bmN0aW9uKGUpe3JldHVybiBmKHRoaXMsXyksbmV3IEEocChlKSl9KVttXT1BW21dLFc9ZChBKSxZPTA7Vy5sZW5ndGg+WTspKEc9V1tZKytdKWluIF98fHMoXyxHLEFbR10pO298fChILmNvbnN0cnVjdG9yPV8pfXZhciBYPW5ldyBTKG5ldyBfKDIpKSxRPVNbbV0uc2V0SW50ODtYLnNldEludDgoMCwyMTQ3NDgzNjQ4KSxYLnNldEludDgoMSwyMTQ3NDgzNjQ5KSwhWC5nZXRJbnQ4KDApJiZYLmdldEludDgoMSl8fHUoU1ttXSx7c2V0SW50ODpmdW5jdGlvbihlLHQpe1EuY2FsbCh0aGlzLGUsdDw8MjQ+PjI0KX0sc2V0VWludDg6ZnVuY3Rpb24oZSx0KXtRLmNhbGwodGhpcyxlLHQ8PDI0Pj4yNCl9fSwhMCl9ZWxzZSBfPWZ1bmN0aW9uKGUpe2YodGhpcyxfLCJBcnJheUJ1ZmZlciIpO3ZhciB0PXAoZSk7dGhpcy5fYj1nLmNhbGwobmV3IEFycmF5KHQpLDApLHRoaXNbUF09dH0sUz1mdW5jdGlvbihlLHQscil7Zih0aGlzLFMsIkRhdGFWaWV3IiksZihlLF8sIkRhdGFWaWV3Iik7dmFyIG49ZVtQXSxpPWwodCk7aWYoaTwwfHxpPm4pdGhyb3cgdygiV3Jvbmcgb2Zmc2V0ISIpO2lmKGkrKHI9dm9pZCAwPT09cj9uLWk6aChyKSk+bil0aHJvdyB3KCJXcm9uZyBsZW5ndGghIik7dGhpc1tOXT1lLHRoaXNbUl09aSx0aGlzW1BdPXJ9LGkmJihxKF8sImJ5dGVMZW5ndGgiLCJfbCIpLHEoUywiYnVmZmVyIiwiX2IiKSxxKFMsImJ5dGVMZW5ndGgiLCJfbCIpLHEoUywiYnl0ZU9mZnNldCIsIl9vIikpLHUoU1ttXSx7Z2V0SW50ODpmdW5jdGlvbihlKXtyZXR1cm4gSyh0aGlzLDEsZSlbMF08PDI0Pj4yNH0sZ2V0VWludDg6ZnVuY3Rpb24oZSl7cmV0dXJuIEsodGhpcywxLGUpWzBdfSxnZXRJbnQxNjpmdW5jdGlvbihlKXt2YXIgdD1LKHRoaXMsMixlLGFyZ3VtZW50c1sxXSk7cmV0dXJuKHRbMV08PDh8dFswXSk8PDE2Pj4xNn0sZ2V0VWludDE2OmZ1bmN0aW9uKGUpe3ZhciB0PUsodGhpcywyLGUsYXJndW1lbnRzWzFdKTtyZXR1cm4gdFsxXTw8OHx0WzBdfSxnZXRJbnQzMjpmdW5jdGlvbihlKXtyZXR1cm4gTChLKHRoaXMsNCxlLGFyZ3VtZW50c1sxXSkpfSxnZXRVaW50MzI6ZnVuY3Rpb24oZSl7cmV0dXJuIEwoSyh0aGlzLDQsZSxhcmd1bWVudHNbMV0pKT4+PjB9LGdldEZsb2F0MzI6ZnVuY3Rpb24oZSl7cmV0dXJuIE0oSyh0aGlzLDQsZSxhcmd1bWVudHNbMV0pLDIzLDQpfSxnZXRGbG9hdDY0OmZ1bmN0aW9uKGUpe3JldHVybiBNKEsodGhpcyw4LGUsYXJndW1lbnRzWzFdKSw1Miw4KX0sc2V0SW50ODpmdW5jdGlvbihlLHQpe3oodGhpcywxLGUsRCx0KX0sc2V0VWludDg6ZnVuY3Rpb24oZSx0KXt6KHRoaXMsMSxlLEQsdCl9LHNldEludDE2OmZ1bmN0aW9uKGUsdCl7eih0aGlzLDIsZSxqLHQsYXJndW1lbnRzWzJdKX0sc2V0VWludDE2OmZ1bmN0aW9uKGUsdCl7eih0aGlzLDIsZSxqLHQsYXJndW1lbnRzWzJdKX0sc2V0SW50MzI6ZnVuY3Rpb24oZSx0KXt6KHRoaXMsNCxlLFUsdCxhcmd1bWVudHNbMl0pfSxzZXRVaW50MzI6ZnVuY3Rpb24oZSx0KXt6KHRoaXMsNCxlLFUsdCxhcmd1bWVudHNbMl0pfSxzZXRGbG9hdDMyOmZ1bmN0aW9uKGUsdCl7eih0aGlzLDQsZSxWLHQsYXJndW1lbnRzWzJdKX0sc2V0RmxvYXQ2NDpmdW5jdGlvbihlLHQpe3oodGhpcyw4LGUsRix0LGFyZ3VtZW50c1syXSl9fSk7dihfLCJBcnJheUJ1ZmZlciIpLHYoUywiRGF0YVZpZXciKSxzKFNbbV0sYS5WSUVXLCEwKSx0LkFycmF5QnVmZmVyPV8sdC5EYXRhVmlldz1TfSxmdW5jdGlvbihlLHQpe3ZhciByPWUuZXhwb3J0cz0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93Lk1hdGg9PU1hdGg/d2luZG93OiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZiYmc2VsZi5NYXRoPT1NYXRoP3NlbGY6RnVuY3Rpb24oInJldHVybiB0aGlzIikoKTsibnVtYmVyIj09dHlwZW9mIF9fZyYmKF9fZz1yKX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIm9iamVjdCI9PT10eXBlb2YgZT9udWxsIT09ZToiZnVuY3Rpb24iPT09dHlwZW9mIGV9fSxmdW5jdGlvbihlLHQscil7ZS5leHBvcnRzPSFyKDQ1MykoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxODkpLGk9cig0NTgpLG89cigyNzkpLGE9T2JqZWN0LmRlZmluZVByb3BlcnR5O3QuZj1yKDExNik/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGUsdCxyKXtpZihuKGUpLHQ9byh0LCEwKSxuKHIpLGkpdHJ5e3JldHVybiBhKGUsdCxyKX1jYXRjaChzKXt9aWYoImdldCJpbiByfHwic2V0ImluIHIpdGhyb3cgVHlwZUVycm9yKCJBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCEiKTtyZXR1cm4idmFsdWUiaW4gciYmKGVbdF09ci52YWx1ZSksZX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDExNSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7aWYoIW4oZSkpcmV0dXJuIGU7dmFyIHIsaTtpZih0JiYiZnVuY3Rpb24iPT10eXBlb2Yocj1lLnRvU3RyaW5nKSYmIW4oaT1yLmNhbGwoZSkpKXJldHVybiBpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZihyPWUudmFsdWVPZikmJiFuKGk9ci5jYWxsKGUpKSlyZXR1cm4gaTtpZighdCYmImZ1bmN0aW9uIj09dHlwZW9mKHI9ZS50b1N0cmluZykmJiFuKGk9ci5jYWxsKGUpKSlyZXR1cm4gaTt0aHJvdyBUeXBlRXJyb3IoIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZSIpfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9TWF0aC5zaWdufHxmdW5jdGlvbihlKXtyZXR1cm4gMD09KGU9K2UpfHxlIT1lP2U6ZTwwPy0xOjF9fSxmdW5jdGlvbihlLHQpe3ZhciByPU1hdGguZXhwbTE7ZS5leHBvcnRzPSFyfHxyKDEwKT4yMjAyNS40NjU3OTQ4MDY3MTh8fHIoMTApPDIyMDI1LjQ2NTc5NDgwNjcxOHx8LTJlLTE3IT1yKC0yZS0xNyk/ZnVuY3Rpb24oZSl7cmV0dXJuIDA9PShlPStlKT9lOmU+LTFlLTYmJmU8MWUtNj9lK2UqZS8yOk1hdGguZXhwKGUpLTF9OnJ9LGZ1bmN0aW9uKGUsdCl7dmFyIHI9e30udG9TdHJpbmc7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiByLmNhbGwoZSkuc2xpY2UoOCwtMSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig5NjkpLGk9cigyODQpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbihpKGUpKX19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09ZSl0aHJvdyBUeXBlRXJyb3IoIkNhbid0IGNhbGwgbWV0aG9kIG9uICAiK2UpO3JldHVybiBlfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ImNvbnN0cnVjdG9yLGhhc093blByb3BlcnR5LGlzUHJvdG90eXBlT2YscHJvcGVydHlJc0VudW1lcmFibGUsdG9Mb2NhbGVTdHJpbmcsdG9TdHJpbmcsdmFsdWVPZiIuc3BsaXQoIiwiKX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTYpLGk9cigyODQpLG89cig4NCksYT1yKDI4Nykscz0iWyIrYSsiXSIsdT1SZWdFeHAoIl4iK3MrcysiKiIpLGM9UmVnRXhwKHMrcysiKiQiKSxmPWZ1bmN0aW9uKGUsdCxyKXt2YXIgaT17fSxzPW8oZnVuY3Rpb24oKXtyZXR1cm4hIWFbZV0oKXx8Ilx1MjAwYlx4ODUiIT0iXHUyMDBiXHg4NSJbZV0oKX0pLHU9aVtlXT1zP3QobCk6YVtlXTtyJiYoaVtyXT11KSxuKG4uUCtuLkYqcywiU3RyaW5nIixpKX0sbD1mLnRyaW09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT1TdHJpbmcoaShlKSksMSZ0JiYoZT1lLnJlcGxhY2UodSwiIikpLDImdCYmKGU9ZS5yZXBsYWNlKGMsIiIpKSxlfTtlLmV4cG9ydHM9Zn0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9Ilx0XG5cdlxmXHIgXHhhMFx1MTY4MFx1MTgwZVx1MjAwMFx1MjAwMVx1MjAwMlx1MjAwM1x1MjAwNFx1MjAwNVx1MjAwNlx1MjAwN1x1MjAwOFx1MjAwOVx1MjAwYVx1MjAyZlx1MjA1Zlx1MzAwMFx1MjAyOFx1MjAyOVx1ZmVmZiJ9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDk5NiksaT1yKDc0KTtlLmV4cG9ydHM9ZnVuY3Rpb24gZSh0LHIsbyxhLHMpe3JldHVybiB0PT09cnx8KG51bGw9PXR8fG51bGw9PXJ8fCFpKHQpJiYhaShyKT90IT09dCYmciE9PXI6bih0LHIsbyxhLGUscykpfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT09PXR8fGUhPT1lJiZ0IT09dH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwMikocig2NCksIk1hcCIpO2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDExKSxpPXIoMTAxOCksbz1yKDEwMjApLGE9cigxMDIxKSxzPXIoMTAyMik7ZnVuY3Rpb24gdShlKXt2YXIgdD0tMSxyPW51bGw9PWU/MDplLmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrdDxyOyl7dmFyIG49ZVt0XTt0aGlzLnNldChuWzBdLG5bMV0pfX11LnByb3RvdHlwZS5jbGVhcj1uLHUucHJvdG90eXBlLmRlbGV0ZT1pLHUucHJvdG90eXBlLmdldD1vLHUucHJvdG90eXBlLmhhcz1hLHUucHJvdG90eXBlLnNldD1zLGUuZXhwb3J0cz11fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigyOTEpLGk9cigxMDIzKSxvPXIoMTAyNCk7ZnVuY3Rpb24gYShlKXt2YXIgdD0tMSxyPW51bGw9PWU/MDplLmxlbmd0aDtmb3IodGhpcy5fX2RhdGFfXz1uZXcgbjsrK3Q8cjspdGhpcy5hZGQoZVt0XSl9YS5wcm90b3R5cGUuYWRkPWEucHJvdG90eXBlLnB1c2g9aSxhLnByb3RvdHlwZS5oYXM9byxlLmV4cG9ydHM9YX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5oYXModCl9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD0tMSxyPUFycmF5KGUuc2l6ZSk7cmV0dXJuIGUuZm9yRWFjaChmdW5jdGlvbihlKXtyWysrdF09ZX0pLHJ9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDM1KSxpPXIoNzQpLG89T2JqZWN0LnByb3RvdHlwZSxhPW8uaGFzT3duUHJvcGVydHkscz1vLnByb3BlcnR5SXNFbnVtZXJhYmxlLHU9bihmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpP246ZnVuY3Rpb24oZSl7cmV0dXJuIGkoZSkmJmEuY2FsbChlLCJjYWxsZWUiKSYmIXMuY2FsbChlLCJjYWxsZWUiKX07ZS5leHBvcnRzPXV9LGZ1bmN0aW9uKGUsdCl7dmFyIHI9OTAwNzE5OTI1NDc0MDk5MSxuPS9eKD86MHxbMS05XVxkKikkLztlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgaT10eXBlb2YgZTtyZXR1cm4hISh0PW51bGw9PXQ/cjp0KSYmKCJudW1iZXIiPT1pfHwic3ltYm9sIiE9aSYmbi50ZXN0KGUpKSYmZT4tMSYmZSUxPT0wJiZlPHR9fSxmdW5jdGlvbihlLHQpe3ZhciByPTkwMDcxOTkyNTQ3NDA5OTE7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZSYmZT4tMSYmZSUxPT0wJiZlPD1yfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlKHQpfX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDkpLGk9cigxMTgpLG89L1wufFxbKD86W15bXF1dKnwoWyInXSkoPzooPyFcMSlbXlxcXXxcXC4pKj9cMSlcXS8sYT0vXlx3KiQvO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKG4oZSkpcmV0dXJuITE7dmFyIHI9dHlwZW9mIGU7cmV0dXJuISgibnVtYmVyIiE9ciYmInN5bWJvbCIhPXImJiJib29sZWFuIiE9ciYmbnVsbCE9ZSYmIWkoZSkpfHxhLnRlc3QoZSl8fCFvLnRlc3QoZSl8fG51bGwhPXQmJmUgaW4gT2JqZWN0KHQpfX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImdldFRpY2tWYWx1ZXMiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBuLmdldFRpY2tWYWx1ZXN9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImdldE5pY2VUaWNrVmFsdWVzIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbi5nZXROaWNlVGlja1ZhbHVlc319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiZ2V0VGlja1ZhbHVlc0ZpeGVkRG9tYWluIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbi5nZXRUaWNrVmFsdWVzRml4ZWREb21haW59fSk7dmFyIG49cigxMDc4KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA4OSksaT1yKDQ4OCksbz1yKDc1KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcj17fTtyZXR1cm4gdD1vKHQsMyksaShlLGZ1bmN0aW9uKGUsaSxvKXtuKHIsaSx0KGUsaSxvKSl9KSxyfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoODUpLGk9cigxMDk5KSxvPXIoNzQpLGE9IltvYmplY3QgT2JqZWN0XSIscz1GdW5jdGlvbi5wcm90b3R5cGUsdT1PYmplY3QucHJvdG90eXBlLGM9cy50b1N0cmluZyxmPXUuaGFzT3duUHJvcGVydHksbD1jLmNhbGwoT2JqZWN0KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoIW8oZSl8fG4oZSkhPWEpcmV0dXJuITE7dmFyIHQ9aShlKTtpZihudWxsPT09dClyZXR1cm4hMDt2YXIgcj1mLmNhbGwodCwiY29uc3RydWN0b3IiKSYmdC5jb25zdHJ1Y3RvcjtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgciYmciBpbnN0YW5jZW9mIHImJmMuY2FsbChyKT09bH19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxpPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbz1PYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO2UuZXhwb3J0cz1mdW5jdGlvbigpe3RyeXtpZighT2JqZWN0LmFzc2lnbilyZXR1cm4hMTt2YXIgZT1uZXcgU3RyaW5nKCJhYmMiKTtpZihlWzVdPSJkZSIsIjUiPT09T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSlbMF0pcmV0dXJuITE7Zm9yKHZhciB0PXt9LHI9MDtyPDEwO3IrKyl0WyJfIitTdHJpbmcuZnJvbUNoYXJDb2RlKHIpXT1yO2lmKCIwMTIzNDU2Nzg5IiE9PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0pLmpvaW4oIiIpKXJldHVybiExO3ZhciBuPXt9O3JldHVybiJhYmNkZWZnaGlqa2xtbm9wcXJzdCIuc3BsaXQoIiIpLmZvckVhY2goZnVuY3Rpb24oZSl7bltlXT1lfSksImFiY2RlZmdoaWprbG1ub3BxcnN0Ij09PU9iamVjdC5rZXlzKE9iamVjdC5hc3NpZ24oe30sbikpLmpvaW4oIiIpfWNhdGNoKGkpe3JldHVybiExfX0oKT9PYmplY3QuYXNzaWduOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByLGEscz1mdW5jdGlvbihlKXtpZihudWxsPT09ZXx8dm9pZCAwPT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QuYXNzaWduIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBudWxsIG9yIHVuZGVmaW5lZCIpO3JldHVybiBPYmplY3QoZSl9KGUpLHU9MTt1PGFyZ3VtZW50cy5sZW5ndGg7dSsrKXtmb3IodmFyIGMgaW4gcj1PYmplY3QoYXJndW1lbnRzW3VdKSlpLmNhbGwocixjKSYmKHNbY109cltjXSk7aWYobil7YT1uKHIpO2Zvcih2YXIgZj0wO2Y8YS5sZW5ndGg7ZisrKW8uY2FsbChyLGFbZl0pJiYoc1thW2ZdXT1yW2FbZl1dKX19cmV0dXJuIHN9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMjIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaT1yKDE1KSxvPXIoMzApLGE9cigyMCkscz1yKDE5KSx1PXIoMjUpO3QubWFzc1RyYW5zZmVyPWZ1bmN0aW9uKGUsdCl7dmFyIHI9aS5UUkFOU0FDVElPTl9UWVBFLk1BU1NfVFJBTlNGRVIsYz1lLnZlcnNpb258fDEsZj1vLmNvbnZlcnRUb1BhaXJzKHQpLGw9by5nZXRTZW5kZXJQdWJsaWNLZXkoZixlKTtpZighQXJyYXkuaXNBcnJheShlLnRyYW5zZmVycykpdGhyb3cgbmV3IEVycm9yKCdbInRyYW5zZmVycyBzaG91bGQgYmUgYXJyYXkiXScpO3ZhciBoPXt0eXBlOnIsdmVyc2lvbjpjLHNlbmRlclB1YmxpY0tleTpsLGFzc2V0SWQ6by5ub3JtYWxpemVBc3NldElkKGUuYXNzZXRJZCksdHJhbnNmZXJzOmUudHJhbnNmZXJzLGZlZTpvLmZlZShlLDFlNSsxZTUqTWF0aC5jZWlsKC41KmUudHJhbnNmZXJzLmxlbmd0aCkpLHRpbWVzdGFtcDplLnRpbWVzdGFtcHx8RGF0ZS5ub3coKSxhdHRhY2htZW50OmUuYXR0YWNobWVudHx8IiIscHJvb2ZzOmUucHJvb2ZzfHxbXSxpZDoiIn07dS52YWxpZGF0ZS5tYXNzVHJhbnNmZXIoaCk7dmFyIHA9cy5iaW5hcnkuc2VyaWFsaXplVHgoaCk7cmV0dXJuIGYuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1uKGUsMikscj10WzBdLGk9dFsxXTtyZQ=="
}

Changelog:

{
    "2020.04.17 15:39": "base64:T05HX05VTUJFUik7ZGVmYXVsdDpvKG5ldyBzLkJpZ051bWJlcihpKSl9fX0seD1mdW5jdGlvbihlKXtlPW4oe30sZSx7dmFsdWU6XyhlLnZhbHVlKX0pLEUoZSk7dmFyIHI9ZS52YWx1ZTtpZihudWxsPT1yKXJldHVybiBudWxsO3N3aXRjaCghMCl7Y2FzZSJzdHJpbmciIT09dHlwZW9mIHI6cmV0dXJuIFMoZSx0LkVSUk9SX01TRy5XUk9OR19UWVBFKTtjYXNlIHIubGVuZ3RoPGQuTUlOX0FMSUFTX0xFTkdUSDpyZXR1cm4gUyhlLHQuRVJST1JfTVNHLlNNQUxMX0ZJRUxEKTtjYXNlIHIubGVuZ3RoPmQuTUFYX0FMSUFTX0xFTkdUSDpyZXR1cm4gUyhlLHQuRVJST1JfTVNHLkxBUkdFX0ZJRUxEKTtjYXNlIXIuc3BsaXQoIiIpLmV2ZXJ5KGZ1bmN0aW9uKGUpe3JldHVybiBkLkFWQUlMQUJMRV9DSEFSUy5pbmNsdWRlcyhlKX0pOnJldHVybiBTKGUsdC5FUlJPUl9NU0cuV1JPTkdfU1lNQk9MUyl9fSxJPWZ1bmN0aW9uKGUpe2U9bih7fSxlLHt2YWx1ZTpfKGUudmFsdWUpfSksRShlKTt2YXIgcj1lLnZhbHVlO2lmKG51bGw9PXIpcmV0dXJuIG51bGw7c3dpdGNoKCEwKXtjYXNlInN0cmluZyIhPT10eXBlb2YgcjpyZXR1cm4gUyhlLHQuRVJST1JfTVNHLldST05HX1RZUEUpO2Nhc2Ugci5sZW5ndGg8PWQuTUFYX0FMSUFTX0xFTkdUSDpyZXR1cm4gUyhlLHQuRVJST1JfTVNHLlNNQUxMX0ZJRUxEKTtjYXNlIHIubGVuZ3RoPnk6cmV0dXJuIFMoZSx0LkVSUk9SX01TRy5MQVJHRV9GSUVMRCk7Y2FzZSFmdW5jdGlvbihyKXt0cnl7cmV0dXJuIHQuaXNWYWxpZEFkZHJlc3MocixlLm9wdGlvbmFsRGF0YSl9Y2F0Y2gobil7cmV0dXJuITF9fShyKTpyZXR1cm4gUyhlLHQuRVJST1JfTVNHLldST05HX0FERFJFU1MpfX0saz1mdW5jdGlvbihlKXt0cnl7eChlKX1jYXRjaCh0KXtJKGUpfX0sTz1mdW5jdGlvbihlLHIpe0UoZSk7dmFyIGk9ZS52YWx1ZTtBcnJheS5pc0FycmF5KGkpfHxTKGUsdC5FUlJPUl9NU0cuV1JPTkdfVFlQRSk7dmFyIG89aS5tYXAoZnVuY3Rpb24oaSxvKXt2YXIgYT1pLmtleSxzPWkudHlwZSx1PWkudmFsdWU7aWYoIXIpdHJ5e3cobih7fSxlLHt2YWx1ZTphLG5hbWU6ZS5uYW1lKyI6IitvKyI6a2V5IixvcHRpb25hbDohMX0pKX1jYXRjaChmKXtyZXR1cm4gZn12YXIgYz1uKHt9LGUse25hbWU6ZS5uYW1lKyI6IitvKyI6dmFsdWUiLG9wdGlvbmFsOiExLHZhbHVlOnV9KTt0cnl7c3dpdGNoKHMpe2Nhc2UiaW50ZWdlciI6QyhjKTticmVhaztjYXNlImJvb2xlYW4iOlQoYyk7YnJlYWs7Y2FzZSJiaW5hcnkiOk4oYyk7YnJlYWs7Y2FzZSJzdHJpbmciOncoYyk7YnJlYWs7ZGVmYXVsdDpTKG4oe30sZSx7dmFsdWU6YSxuYW1lOmUubmFtZSsiOiIrbysiOnR5cGUifSksdC5FUlJPUl9NU0cuV1JPTkdfVFlQRSl9fWNhdGNoKGYpe3JldHVybiBmfX0pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZX0pO28ubGVuZ3RoJiZTKGUsbyl9LE49ZnVuY3Rpb24oZSl7dmFyIHI9ZS52YWx1ZSxuPXZvaWQgMD09PXI/IiI6cjtuJiYhbi5pbmNsdWRlcygiYmFzZTY0OiIpJiZTKGUsdC5FUlJPUl9NU0cuQkFTRTY0KSxuJiYhZnVuY3Rpb24oZSl7aWYoIiI9PT1lKXJldHVybiEwO3JldHVybi9eKFtBLVphLXowLTkrXC9dezR9KSooW0EtWmEtejAtOStcL117NH18W0EtWmEtejAtOStcL117M309fFtBLVphLXowLTkrXC9dezJ9PT0pJC8udGVzdChlKX0obi5yZXBsYWNlKCJiYXNlNjQ6IiwiIikpJiZTKGUsdC5FUlJPUl9NU0cuQkFTRTY0KX0sUD1mdW5jdGlvbihlKXtOKGUpfTt0LlZBTElEQVRPUlM9e3N0cmluZzp3LG51bWJlcjpmdW5jdGlvbihlKXtFKGUpO3ZhciByPWUudmFsdWU7aWYobnVsbCE9ciYmbmV3IHMuQmlnTnVtYmVyKHIpLmlzTmFOKCkpcmV0dXJuIFMoZSx0LkVSUk9SX01TRy5XUk9OR19OVU1CRVIpfSxyZXF1aXJlZDpFLG51bWJlckxpa2U6Qyxtb25leTpBLGFsaWFzTmFtZTp4LGFkZHJlc3M6SSxib29sZWFuOlQsYXNzZXRJZDpmdW5jdGlvbihlKXtlPW4oe30sZSx7dmFsdWU6XyhlLnZhbHVlKX0pLEUoZSk7dmFyIHI9ZS52YWx1ZTtpZihudWxsPT1yKXJldHVybiBudWxsO2lmKCJzdHJpbmciIT09dHlwZW9mIHIpcmV0dXJuIFMoZSx0LkVSUk9SX01TRy5XUk9OR19UWVBFKTt2YXIgaT0hMTt0cnl7aT0zMj09PWYoci50cmltKCkpLmxlbmd0aH1jYXRjaChvKXtpPSExfXJldHVybiBpfHwiV0FWRVMiPT09cj92b2lkIDA6UyhlLHQuRVJST1JfTVNHLldST05HX0FTU0VUX0lEKX0sdGltZXN0YW1wOmZ1bmN0aW9uKGUpe0UoZSk7dmFyIHI9ZS52YWx1ZTtpZigoaXNOYU4ocil8fHImJiEociBpbnN0YW5jZW9mIERhdGV8fCJudW1iZXIiPT09dHlwZW9mIHJ8fCtyKSkmJigic3RyaW5nIiE9PXR5cGVvZiByfHxpc05hTihEYXRlLnBhcnNlKHIpKSkpcmV0dXJuIFMoZSx0LkVSUk9SX01TRy5XUk9OR19USU1FU1RBTVApfSxvcmRlclR5cGU6ZnVuY3Rpb24oZSl7RShlKTt2YXIgcj1lLnZhbHVlO3JldHVybiBudWxsPT1yP251bGw6InN0cmluZyIhPT10eXBlb2Ygcj9TKGUsdC5FUlJPUl9NU0cuV1JPTkdfVFlQRSk6InNlbGwiIT09ciYmImJ1eSIhPT1yP1MoZSx0LkVSUk9SX01TRy5XUk9OR19PUkRFUl9UWVBFKTp2b2lkIDB9LGFzc2V0TmFtZTpmdW5jdGlvbihlKXtlPW4oe30sZSx7dmFsdWU6XyhlLnZhbHVlKX0pLEUoZSk7dmFyIHI9ZS52YWx1ZTtpZihudWxsIT1yKXsic3RyaW5nIiE9PXR5cGVvZiByJiZTKGUsdC5FUlJPUl9NU0cuV1JPTkdfVFlQRSk7dmFyIGk9YihyKS5sZW5ndGg7aTxnJiZTKGUsdC5FUlJPUl9NU0cuU01BTExfRklFTEQpLGk+diYmUyhlLHQuRVJST1JfTVNHLkxBUkdFX0ZJRUxEKX19LGFzc2V0RGVzY3JpcHRpb246ZnVuY3Rpb24oZSl7ZT1uKHt9LGUse3ZhbHVlOl8oZS52YWx1ZSl9KSxFKGUpO3ZhciByPWUudmFsdWU7bnVsbCE9ciYmKCJzdHJpbmciIT09dHlwZW9mIHImJlMoZSx0LkVSUk9SX01TRy5XUk9OR19UWVBFKSxiKHIpLmxlbmd0aD5tJiZTKGUsdC5FUlJPUl9NU0cuTEFSR0VfRklFTEQpKX0saHR0cHNVcmw6ZnVuY3Rpb24oZSl7RShlKTt2YXIgcj1lLnZhbHVlO2lmKG51bGw9PXIpcmV0dXJuIG51bGw7c3dpdGNoKCEwKXtjYXNlInN0cmluZyIhPT10eXBlb2YgcjpTKGUsdC5FUlJPUl9NU0cuV1JPTkdfVFlQRSk7YnJlYWs7Y2FzZS0xPT09ci5pbmRleE9mKCJodHRwczovLyIpOmNhc2UgZnVuY3Rpb24oZSl7dHJ5e3JldHVybiBuZXcgVVJMKGUpLCExfWNhdGNoKHQpe3JldHVybiEwfX0ocik6UyhlLHQuRVJST1JfTVNHLk5PVF9IVFRQU19VUkwpfX0sYXR0YWNobWVudDpmdW5jdGlvbihlKXt2YXIgcj1lLnZhbHVlO2lmKG51bGwhPXIpaWYoInN0cmluZyIhPT10eXBlb2YgciYmIm51bWJlciIhPT10eXBlb2YgcilpZigib2JqZWN0IiE9PXR5cGVvZiByKVMoZSx0LkVSUk9SX01TRy5XUk9OR19UWVBFKTtlbHNlIHN3aXRjaCghMCl7Y2FzZSJudW1iZXIiIT09dHlwZW9mIHIubGVuZ3RofHxyLmxlbmd0aDwwOlMoZSx0LkVSUk9SX01TRy5XUk9OR19UWVBFKTticmVhaztjYXNlIHIubGVuZ3RoPnA6UyhlLHQuRVJST1JfTVNHLkxBUkdFX0ZJRUxEKX1lbHNlIHN3aXRjaCh3KGUpLCEwKXtjYXNlInN0cmluZyIhPXR5cGVvZiByOlMoZSx0LkVSUk9SX01TRy5XUk9OR19UWVBFKTticmVhaztjYXNlIGIocikubGVuZ3RoPnA6UyhlLHQuRVJST1JfTVNHLkxBUkdFX0ZJRUxEKX19LHRyYW5zZmVyczpmdW5jdGlvbihlKXtFKGUpO3ZhciByPWUudmFsdWU7QXJyYXkuaXNBcnJheShyKXx8UyhlLHQuRVJST1JfTVNHLldST05HX1RZUEUpLGUub3B0aW9uYWx8fDAhPT1yLmxlbmd0aHx8UyhlLHQuRVJST1JfTVNHLlJFUVVJUkVEKTt2YXIgaT0ocnx8W10pLm1hcChmdW5jdGlvbih0LHIpe3ZhciBpPXQucmVjaXBpZW50LG89dC5hbW91bnQsYT10Lm5hbWUscz1bXTt0cnl7QyhuKHt9LGUse3ZhbHVlOm8sbmFtZTplLm5hbWUrIjoiK3IrIjphbW91bnQiLG9wdGlvbmFsOiExfSkpfWNhdGNoKHUpe3MucHVzaCh1KX10cnl7ayhuKHt9LGUse3ZhbHVlOml8fGEsbmFtZTplLm5hbWUrIjoiK3IrIjpyZWNpcGllbnQiLG9wdGlvbmFsOiExfSkpfWNhdGNoKHUpe3MucHVzaCh1KX1yZXR1cm4gc30pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS5sZW5ndGh9KTtpLmxlbmd0aCYmKFMoZSxpKSxTKGUsaSkpfSxhbGlhc09yQWRkcmVzczprLGRhdGE6TyxzY3JpcHQ6UCxhc3NldF9zY3JpcHQ6ZnVuY3Rpb24oZSl7dmFyIHI9ZS52YWx1ZTtyJiZyLnJlcGxhY2UoImJhc2U2NDoiLCIiKXx8UyhlLHQuRVJST1JfTVNHLkVNUFRZX0JBU0U2NCksUChlKX0sYmluYXJ5Ok4scHJlY2lzaW9uOmZ1bmN0aW9uKGUpe0UoZSksQyhlLDAsOCl9LGNhbGw6ZnVuY3Rpb24oZSl7RShlKTt2YXIgcj1lLnZhbHVlO2lmKG51bGwhPXIpe3ImJiJvYmplY3QiPT09dHlwZW9mIHJ8fFMoZSx0LkVSUk9SX01TRy5XUk9OR19UWVBFKTt2YXIgbj17a2V5OiJjYWxsLmZ1bmN0aW9uIix2YWx1ZTpyLmZ1bmN0aW9uLG9wdGlvbmFsOiExLHR5cGU6InN0cmluZyIsbmFtZToiZnVuY3Rpb24ifTt3KG4pO3ZhciBpPXtrZXk6ImNhbGwuYXJncyIsdmFsdWU6ci5hcmdzLG9wdGlvbmFsOiEwLHR5cGU6ImFyZ3MiLG5hbWU6ImFyZ3MifTtpLnZhbHVlJiZPKGksITApfX0scGF5bWVudDpmdW5jdGlvbihlKXtFKGUpO3ZhciByPWUudmFsdWU7Im9iamVjdCI9PT10eXBlb2YgciYmIm51bWJlciI9PT10eXBlb2Ygci5sZW5ndGgmJnIuZm9yRWFjaHx8UyhlLHQuRVJST1JfTVNHLldST05HX1RZUEUpO3ZhciBpPShyfHxbXSkubWFwKGZ1bmN0aW9uKHQscil7dmFyIGk9W107dHJ5e0Eobih7fSxlLHt2YWx1ZTp0LG5hbWU6ZS5uYW1lKyI6IityLG9wdGlvbmFsOiExfSkpfWNhdGNoKG8pe2kucHVzaChvKX1yZXR1cm4gaX0pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS5sZW5ndGh9KTtpLmxlbmd0aCYmKFMoZSxpKSxTKGUsaSkpfX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDY4KSxpPXIoMTA3KSxvPSIiLnNwbGl0O2UuZXhwb3J0cz1uKGZ1bmN0aW9uKCl7cmV0dXJuIU9iamVjdCgieiIpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApfSk/ZnVuY3Rpb24oZSl7cmV0dXJuIlN0cmluZyI9PWkoZSk/by5jYWxsKGUsIiIpOk9iamVjdChlKX06T2JqZWN0fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZih2b2lkIDA9PWUpdGhyb3cgVHlwZUVycm9yKCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAiK2UpO3JldHVybiBlfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMjQxKSxpPU1hdGgubWluO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZT4wP2kobihlKSw5MDA3MTk5MjU0NzQwOTkxKTowfX0sZnVuY3Rpb24oZSx0KXt2YXIgcj1NYXRoLmNlaWwsbj1NYXRoLmZsb29yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gaXNOYU4oZT0rZSk/MDooZT4wP246cikoZSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigzMyksaT1yKDY5KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt0cnl7aShuLGUsdCl9Y2F0Y2gocil7bltlXT10fXJldHVybiB0fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoOTIpLGk9cigzMykuZG9jdW1lbnQsbz1uKGkpJiZuKGkuY3JlYXRlRWxlbWVudCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBvP2kuY3JlYXRlRWxlbWVudChlKTp7fX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDkyKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZighbihlKSlyZXR1cm4gZTt2YXIgcixpO2lmKHQmJiJmdW5jdGlvbiI9PXR5cGVvZihyPWUudG9TdHJpbmcpJiYhbihpPXIuY2FsbChlKSkpcmV0dXJuIGk7aWYoImZ1bmN0aW9uIj09dHlwZW9mKHI9ZS52YWx1ZU9mKSYmIW4oaT1yLmNhbGwoZSkpKXJldHVybiBpO2lmKCF0JiYiZnVuY3Rpb24iPT10eXBlb2Yocj1lLnRvU3RyaW5nKSYmIW4oaT1yLmNhbGwoZSkpKXJldHVybiBpO3Rocm93IFR5cGVFcnJvcigiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlIil9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9WyJjb25zdHJ1Y3RvciIsImhhc093blByb3BlcnR5IiwiaXNQcm90b3R5cGVPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwidG9Mb2NhbGVTdHJpbmciLCJ0b1N0cmluZyIsInZhbHVlT2YiXX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTczKSgia2V5cyIpLGk9cig0MDIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbltlXXx8KG5bZV09aShlKSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDgpLGk9cig0MTEpLG89cigxNzQpLGE9cigxNzYpLHM9cigyNDQpLHU9cig1NyksYz1yKDQwMSksZj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO3QuZj1uP2Y6ZnVuY3Rpb24oZSx0KXtpZihlPWEoZSksdD1zKHQsITApLGMpdHJ5e3JldHVybiBmKGUsdCl9Y2F0Y2gocil7fWlmKHUoZSx0KSlyZXR1cm4gbyghaS5mLmNhbGwoZSx0KSxlW3RdKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEzKSxpPXIoMTcpLmRvY3VtZW50LG89bihpKSYmbihpLmNyZWF0ZUVsZW1lbnQpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbz9pLmNyZWF0ZUVsZW1lbnQoZSk6e319fSxmdW5jdGlvbihlLHQscil7dmFyIG4saSxvLGE9cig1OCkscz1yKDQxNyksdT1yKDI1MSksYz1yKDI0OSksZj1yKDE3KSxsPWYucHJvY2VzcyxoPWYuc2V0SW1tZWRpYXRlLHA9Zi5jbGVhckltbWVkaWF0ZSxkPWYuTWVzc2FnZUNoYW5uZWwseT1mLkRpc3BhdGNoLGc9MCx2PXt9LG09ZnVuY3Rpb24oKXt2YXIgZT0rdGhpcztpZih2Lmhhc093blByb3BlcnR5KGUpKXt2YXIgdD12W2VdO2RlbGV0ZSB2W2VdLHQoKX19LGI9ZnVuY3Rpb24oZSl7bS5jYWxsKGUuZGF0YSl9O2gmJnB8fChoPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxyPTE7YXJndW1lbnRzLmxlbmd0aD5yOyl0LnB1c2goYXJndW1lbnRzW3IrK10pO3JldHVybiB2WysrZ109ZnVuY3Rpb24oKXtzKCJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6RnVuY3Rpb24oZSksdCl9LG4oZyksZ30scD1mdW5jdGlvbihlKXtkZWxldGUgdltlXX0sInByb2Nlc3MiPT1yKDcwKShsKT9uPWZ1bmN0aW9uKGUpe2wubmV4dFRpY2soYShtLGUsMSkpfTp5JiZ5Lm5vdz9uPWZ1bmN0aW9uKGUpe3kubm93KGEobSxlLDEpKX06ZD8obz0oaT1uZXcgZCkucG9ydDIsaS5wb3J0MS5vbm1lc3NhZ2U9YixuPWEoby5wb3N0TWVzc2FnZSxvLDEpKTpmLmFkZEV2ZW50TGlzdGVuZXImJiJmdW5jdGlvbiI9PXR5cGVvZiBwb3N0TWVzc2FnZSYmIWYuaW1wb3J0U2NyaXB0cz8obj1mdW5jdGlvbihlKXtmLnBvc3RNZXNzYWdlKGUrIiIsIioiKX0sZi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixiLCExKSk6bj0ib25yZWFkeXN0YXRlY2hhbmdlImluIGMoInNjcmlwdCIpP2Z1bmN0aW9uKGUpe3UuYXBwZW5kQ2hpbGQoYygic2NyaXB0IikpLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe3UucmVtb3ZlQ2hpbGQodGhpcyksbS5jYWxsKGUpfX06ZnVuY3Rpb24oZSl7c2V0VGltZW91dChhKG0sZSwxKSwwKX0pLGUuZXhwb3J0cz17c2V0OmgsY2xlYXI6cH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE3KS5kb2N1bWVudDtlLmV4cG9ydHM9biYmbi5kb2N1bWVudEVsZW1lbnR9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDc0OSksaT1yKDUzKSgiaXRlcmF0b3IiKSxvPXIoMTQxKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYodm9pZCAwIT1lKXJldHVybiBlW2ldfHxlWyJAQGl0ZXJhdG9yIl18fG9bbihlKV19fSxmdW5jdGlvbihlLHQscil7dC5mPXIoMjEpfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNzgpKCJrZXlzIiksaT1yKDk0KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG5bZV18fChuW2VdPWkoZSkpfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ImNvbnN0cnVjdG9yLGhhc093blByb3BlcnR5LGlzUHJvdG90eXBlT2YscHJvcGVydHlJc0VudW1lcmFibGUsdG9Mb2NhbGVTdHJpbmcsdG9TdHJpbmcsdmFsdWVPZiIuc3BsaXQoIiwiKX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTMpLGk9cigxMiksbz1mdW5jdGlvbihlLHQpe2lmKGkoZSksIW4odCkmJm51bGwhPT10KXRocm93IFR5cGVFcnJvcih0KyI6IGNhbid0IHNldCBhcyBwcm90b3R5cGUhIil9O2UuZXhwb3J0cz17c2V0Ok9iamVjdC5zZXRQcm90b3R5cGVPZnx8KCJfX3Byb3RvX18iaW57fT9mdW5jdGlvbihlLHQsbil7dHJ5eyhuPXIoNTgpKEZ1bmN0aW9uLmNhbGwscig2MSkuZihPYmplY3QucHJvdG90eXBlLCJfX3Byb3RvX18iKS5zZXQsMikpKGUsW10pLHQ9IShlIGluc3RhbmNlb2YgQXJyYXkpfWNhdGNoKGkpe3Q9ITB9cmV0dXJuIGZ1bmN0aW9uKGUscil7cmV0dXJuIG8oZSxyKSx0P2UuX19wcm90b19fPXI6bihlLHIpLGV9fSh7fSwhMSk6dm9pZCAwKSxjaGVjazpvfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9Ilx0XG5cdlxmXHIgXHhhMFx1MTY4MFx1MTgwZVx1MjAwMFx1MjAwMVx1MjAwMlx1MjAwM1x1MjAwNFx1MjAwNVx1MjAwNlx1MjAwN1x1MjAwOFx1MjAwOVx1MjAwYVx1MjAyZlx1MjA1Zlx1MzAwMFx1MjAyOFx1MjAyOVx1ZmVmZiJ9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEzKSxpPXIoMjU2KS5zZXQ7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbyxhPXQuY29uc3RydWN0b3I7cmV0dXJuIGEhPT1yJiYiZnVuY3Rpb24iPT10eXBlb2YgYSYmKG89YS5wcm90b3R5cGUpIT09ci5wcm90b3R5cGUmJm4obykmJmkmJmkoZSxvKSxlfX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDYwKSxpPXIoNzEpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1TdHJpbmcoaSh0aGlzKSkscj0iIixvPW4oZSk7aWYobzwwfHxvPT0xLzApdGhyb3cgUmFuZ2VFcnJvcigiQ291bnQgY2FuJ3QgYmUgbmVnYXRpdmUiKTtmb3IoO28+MDsobz4+Pj0xKSYmKHQrPXQpKTEmbyYmKHIrPXQpO3JldHVybiByfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9TWF0aC5zaWdufHxmdW5jdGlvbihlKXtyZXR1cm4gMD09KGU9K2UpfHxlIT1lP2U6ZTwwPy0xOjF9fSxmdW5jdGlvbihlLHQpe3ZhciByPU1hdGguZXhwbTE7ZS5leHBvcnRzPSFyfHxyKDEwKT4yMjAyNS40NjU3OTQ4MDY3MTh8fHIoMTApPDIyMDI1LjQ2NTc5NDgwNjcxOHx8LTJlLTE3IT1yKC0yZS0xNyk/ZnVuY3Rpb24oZSl7cmV0dXJuIDA9PShlPStlKT9lOmU+LTFlLTYmJmU8MWUtNj9lK2UqZS8yOk1hdGguZXhwKGUpLTF9OnJ9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDYwKSxpPXIoNzEpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCxyKXt2YXIgbyxhLHM9U3RyaW5nKGkodCkpLHU9bihyKSxjPXMubGVuZ3RoO3JldHVybiB1PDB8fHU+PWM/ZT8iIjp2b2lkIDA6KG89cy5jaGFyQ29kZUF0KHUpKTw1NTI5Nnx8bz41NjMxOXx8dSsxPT09Y3x8KGE9cy5jaGFyQ29kZUF0KHUrMSkpPDU2MzIwfHxhPjU3MzQzP2U/cy5jaGFyQXQodSk6bzplP3Muc2xpY2UodSx1KzIpOmEtNTYzMjArKG8tNTUyOTY8PDEwKSs2NTUzNn19fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoOTUpLGk9cigyKSxvPXIoNDkpLGE9cig1NCkscz1yKDE0OCksdT1yKDQzNCksYz1yKDEwOSksZj1yKDk5KSxsPXIoMjEpKCJpdGVyYXRvciIpLGg9IShbXS5rZXlzJiYibmV4dCJpbltdLmtleXMoKSkscD1mdW5jdGlvbigpe3JldHVybiB0aGlzfTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIsZCx5LGcsdil7dShyLHQsZCk7dmFyIG0sYixfLFM9ZnVuY3Rpb24oZSl7aWYoIWgmJmUgaW4gQSlyZXR1cm4gQVtlXTtzd2l0Y2goZSl7Y2FzZSJrZXlzIjpjYXNlInZhbHVlcyI6cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyByKHRoaXMsZSl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgcih0aGlzLGUpfX0sRT10KyIgSXRlcmF0b3IiLHc9InZhbHVlcyI9PXksVD0hMSxBPWUucHJvdG90eXBlLEM9QVtsXXx8QVsiQEBpdGVyYXRvciJdfHx5JiZBW3ldLHg9Q3x8Uyh5KSxJPXk/dz9TKCJlbnRyaWVzIik6eDp2b2lkIDAsaz0iQXJyYXkiPT10JiZBLmVudHJpZXN8fEM7aWYoayYmKF89ZihrLmNhbGwobmV3IGUpKSkhPT1PYmplY3QucHJvdG90eXBlJiZfLm5leHQmJihjKF8sRSwhMCksbnx8ImZ1bmN0aW9uIj09dHlwZW9mIF9bbF18fGEoXyxsLHApKSx3JiZDJiYidmFsdWVzIiE9PUMubmFtZSYmKFQ9ITAseD1mdW5jdGlvbigpe3JldHVybiBDLmNhbGwodGhpcyl9KSxuJiYhdnx8IWgmJiFUJiZBW2xdfHxhKEEsbCx4KSxzW3RdPXgsc1tFXT1wLHkpaWYobT17dmFsdWVzOnc/eDpTKCJ2YWx1ZXMiKSxrZXlzOmc/eDpTKCJrZXlzIiksZW50cmllczpJfSx2KWZvcihiIGluIG0pYiBpbiBBfHxvKEEsYixtW2JdKTtlbHNlIGkoaS5QK2kuRiooaHx8VCksdCxtKTtyZXR1cm4gbX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDI2NSksaT1yKDcxKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe2lmKG4odCkpdGhyb3cgVHlwZUVycm9yKCJTdHJpbmcjIityKyIgZG9lc24ndCBhY2NlcHQgcmVnZXghIik7cmV0dXJuIFN0cmluZyhpKGUpKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEzKSxpPXIoNzApLG89cigyMSkoIm1hdGNoIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiBuKGUpJiYodm9pZCAwIT09KHQ9ZVtvXSk/ISF0OiJSZWdFeHAiPT1pKGUpKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDIxKSgibWF0Y2giKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9Ly4vO3RyeXsiLy4vIltlXSh0KX1jYXRjaChyKXt0cnl7cmV0dXJuIHRbbl09ITEsISIvLi8iW2VdKHQpfWNhdGNoKGkpe319cmV0dXJuITB9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNDgpLGk9cigyMSkoIml0ZXJhdG9yIiksbz1BcnJheS5wcm90b3R5cGU7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDAhPT1lJiYobi5BcnJheT09PWV8fG9baV09PT1lKX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigyOCksaT1yKDkzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3QgaW4gZT9uLmYoZSx0LGkoMCxyKSk6ZVt0XT1yfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTQ3KSxpPXIoMjEpKCJpdGVyYXRvciIpLG89cigxNDgpO2UuZXhwb3J0cz1yKDI3KS5nZXRJdGVyYXRvck1ldGhvZD1mdW5jdGlvbihlKXtpZih2b2lkIDAhPWUpcmV0dXJuIGVbaV18fGVbIkBAaXRlcmF0b3IiXXx8b1tuKGUpXX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigzNiksaT1yKDk2KSxvPXIoMjMpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9bih0aGlzKSxyPW8odC5sZW5ndGgpLGE9YXJndW1lbnRzLmxlbmd0aCxzPWkoYT4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsciksdT1hPjI/YXJndW1lbnRzWzJdOnZvaWQgMCxjPXZvaWQgMD09PXU/cjppKHUscik7Yz5zOyl0W3MrK109ZTtyZXR1cm4gdH19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigxODMpLGk9UmVnRXhwLnByb3RvdHlwZS5leGVjLG89U3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlLGE9aSxzPWZ1bmN0aW9uKCl7dmFyIGU9L2EvLHQ9L2IqL2c7cmV0dXJuIGkuY2FsbChlLCJhIiksaS5jYWxsKHQsImEiKSwwIT09ZS5sYXN0SW5kZXh8fDAhPT10Lmxhc3RJbmRleH0oKSx1PXZvaWQgMCE9PS8oKT8/Ly5leGVjKCIiKVsxXTsoc3x8dSkmJihhPWZ1bmN0aW9uKGUpe3ZhciB0LHIsYSxjLGY9dGhpcztyZXR1cm4gdSYmKHI9bmV3IFJlZ0V4cCgiXiIrZi5zb3VyY2UrIiQoPyFcXHMpIixuLmNhbGwoZikpKSxzJiYodD1mLmxhc3RJbmRleCksYT1pLmNhbGwoZixlKSxzJiZhJiYoZi5sYXN0SW5kZXg9Zi5nbG9iYWw/YS5pbmRleCthWzBdLmxlbmd0aDp0KSx1JiZhJiZhLmxlbmd0aD4xJiZvLmNhbGwoYVswXSxyLGZ1bmN0aW9uKCl7Zm9yKGM9MTtjPGFyZ3VtZW50cy5sZW5ndGgtMjtjKyspdm9pZCAwPT09YXJndW1lbnRzW2NdJiYoYVtjXT12b2lkIDApfSksYX0pLGUuZXhwb3J0cz1hfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMjYyKSghMCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gdCsocj9uKGUsdCkubGVuZ3RoOjEpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTcpLm5hdmlnYXRvcjtlLmV4cG9ydHM9biYmbi51c2VyQWdlbnR8fCIifSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMTcpLGk9cigyOSksbz1yKDk1KSxhPXIoMTg4KSxzPXIoNTQpLHU9cigxMTQpLGM9cigxNCksZj1yKDExMyksbD1yKDYwKSxoPXIoMjMpLHA9cig0NDgpLGQ9cig5OCkuZix5PXIoMjgpLmYsZz1yKDI3MCksdj1yKDEwOSksbT0icHJvdG90eXBlIixiPSJXcm9uZyBpbmRleCEiLF89bi5BcnJheUJ1ZmZlcixTPW4uRGF0YVZpZXcsRT1uLk1hdGgsdz1uLlJhbmdlRXJyb3IsVD1uLkluZmluaXR5LEE9XyxDPUUuYWJzLHg9RS5wb3csST1FLmZsb29yLGs9RS5sb2csTz1FLkxOMixOPWk/Il9iIjoiYnVmZmVyIixQPWk/Il9sIjoiYnl0ZUxlbmd0aCIsUj1pPyJfbyI6ImJ5dGVPZmZzZXQiO2Z1bmN0aW9uIEIoZSx0LHIpe3ZhciBuLGksbyxhPW5ldyBBcnJheShyKSxzPTgqci10LTEsdT0oMTw8cyktMSxjPXU+PjEsZj0yMz09PXQ/eCgyLC0yNCkteCgyLC03Nyk6MCxsPTAsaD1lPDB8fDA9PT1lJiYxL2U8MD8xOjA7Zm9yKChlPUMoZSkpIT1lfHxlPT09VD8oaT1lIT1lPzE6MCxuPXUpOihuPUkoayhlKS9PKSxlKihvPXgoMiwtbikpPDEmJihuLS0sbyo9MiksKGUrPW4rYz49MT9mL286Zip4KDIsMS1jKSkqbz49MiYmKG4rKyxvLz0yKSxuK2M+PXU/KGk9MCxuPXUpOm4rYz49MT8oaT0oZSpvLTEpKngoMix0KSxuKz1jKTooaT1lKngoMixjLTEpKngoMix0KSxuPTApKTt0Pj04O2FbbCsrXT0yNTUmaSxpLz0yNTYsdC09OCk7Zm9yKG49bjw8dHxpLHMrPXQ7cz4wO2FbbCsrXT0yNTUmbixuLz0yNTYscy09OCk7cmV0dXJuIGFbLS1sXXw9MTI4KmgsYX1mdW5jdGlvbiBNKGUsdCxyKXt2YXIgbixpPTgqci10LTEsbz0oMTw8aSktMSxhPW8+PjEscz1pLTcsdT1yLTEsYz1lW3UtLV0sZj0xMjcmYztmb3IoYz4+PTc7cz4wO2Y9MjU2KmYrZVt1XSx1LS0scy09OCk7Zm9yKG49ZiYoMTw8LXMpLTEsZj4+PS1zLHMrPXQ7cz4wO249MjU2Km4rZVt1XSx1LS0scy09OCk7aWYoMD09PWYpZj0xLWE7ZWxzZXtpZihmPT09bylyZXR1cm4gbj9OYU46Yz8tVDpUO24rPXgoMix0KSxmLT1hfXJldHVybihjPy0xOjEpKm4qeCgyLGYtdCl9ZnVuY3Rpb24gTChlKXtyZXR1cm4gZVszXTw8MjR8ZVsyXTw8MTZ8ZVsxXTw8OHxlWzBdfWZ1bmN0aW9uIEQoZSl7cmV0dXJuWzI1NSZlXX1mdW5jdGlvbiBqKGUpe3JldHVyblsyNTUmZSxlPj44JjI1NV19ZnVuY3Rpb24gVShlKXtyZXR1cm5bMjU1JmUsZT4+OCYyNTUsZT4+MTYmMjU1LGU+PjI0JjI1NV19ZnVuY3Rpb24gRihlKXtyZXR1cm4gQihlLDUyLDgpfWZ1bmN0aW9uIFYoZSl7cmV0dXJuIEIoZSwyMyw0KX1mdW5jdGlvbiBxKGUsdCxyKXt5KGVbbV0sdCx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbcl19fSl9ZnVuY3Rpb24gSyhlLHQscixuKXt2YXIgaT1wKCtyKTtpZihpK3Q+ZVtQXSl0aHJvdyB3KGIpO3ZhciBvPWVbTl0uX2IsYT1pK2VbUl0scz1vLnNsaWNlKGEsYSt0KTtyZXR1cm4gbj9zOnMucmV2ZXJzZSgpfWZ1bmN0aW9uIHooZSx0LHIsbixpLG8pe3ZhciBhPXAoK3IpO2lmKGErdD5lW1BdKXRocm93IHcoYik7Zm9yKHZhciBzPWVbTl0uX2IsdT1hK2VbUl0sYz1uKCtpKSxmPTA7Zjx0O2YrKylzW3UrZl09Y1tvP2Y6dC1mLTFdfWlmKGEuQUJWKXtpZighYyhmdW5jdGlvbigpe18oMSl9KXx8IWMoZnVuY3Rpb24oKXtuZXcgXygtMSl9KXx8YyhmdW5jdGlvbigpe3JldHVybiBuZXcgXyxuZXcgXygxLjUpLG5ldyBfKE5hTiksIkFycmF5QnVmZmVyIiE9Xy5uYW1lfSkpe2Zvcih2YXIgRyxIPShfPWZ1bmN0aW9uKGUpe3JldHVybiBmKHRoaXMsXyksbmV3IEEocChlKSl9KVttXT1BW21dLFc9ZChBKSxZPTA7Vy5sZW5ndGg+WTspKEc9V1tZKytdKWluIF98fHMoXyxHLEFbR10pO298fChILmNvbnN0cnVjdG9yPV8pfXZhciBYPW5ldyBTKG5ldyBfKDIpKSxRPVNbbV0uc2V0SW50ODtYLnNldEludDgoMCwyMTQ3NDgzNjQ4KSxYLnNldEludDgoMSwyMTQ3NDgzNjQ5KSwhWC5nZXRJbnQ4KDApJiZYLmdldEludDgoMSl8fHUoU1ttXSx7c2V0SW50ODpmdW5jdGlvbihlLHQpe1EuY2FsbCh0aGlzLGUsdDw8MjQ+PjI0KX0sc2V0VWludDg6ZnVuY3Rpb24oZSx0KXtRLmNhbGwodGhpcyxlLHQ8PDI0Pj4yNCl9fSwhMCl9ZWxzZSBfPWZ1bmN0aW9uKGUpe2YodGhpcyxfLCJBcnJheUJ1ZmZlciIpO3ZhciB0PXAoZSk7dGhpcy5fYj1nLmNhbGwobmV3IEFycmF5KHQpLDApLHRoaXNbUF09dH0sUz1mdW5jdGlvbihlLHQscil7Zih0aGlzLFMsIkRhdGFWaWV3IiksZihlLF8sIkRhdGFWaWV3Iik7dmFyIG49ZVtQXSxpPWwodCk7aWYoaTwwfHxpPm4pdGhyb3cgdygiV3Jvbmcgb2Zmc2V0ISIpO2lmKGkrKHI9dm9pZCAwPT09cj9uLWk6aChyKSk+bil0aHJvdyB3KCJXcm9uZyBsZW5ndGghIik7dGhpc1tOXT1lLHRoaXNbUl09aSx0aGlzW1BdPXJ9LGkmJihxKF8sImJ5dGVMZW5ndGgiLCJfbCIpLHEoUywiYnVmZmVyIiwiX2IiKSxxKFMsImJ5dGVMZW5ndGgiLCJfbCIpLHEoUywiYnl0ZU9mZnNldCIsIl9vIikpLHUoU1ttXSx7Z2V0SW50ODpmdW5jdGlvbihlKXtyZXR1cm4gSyh0aGlzLDEsZSlbMF08PDI0Pj4yNH0sZ2V0VWludDg6ZnVuY3Rpb24oZSl7cmV0dXJuIEsodGhpcywxLGUpWzBdfSxnZXRJbnQxNjpmdW5jdGlvbihlKXt2YXIgdD1LKHRoaXMsMixlLGFyZ3VtZW50c1sxXSk7cmV0dXJuKHRbMV08PDh8dFswXSk8PDE2Pj4xNn0sZ2V0VWludDE2OmZ1bmN0aW9uKGUpe3ZhciB0PUsodGhpcywyLGUsYXJndW1lbnRzWzFdKTtyZXR1cm4gdFsxXTw8OHx0WzBdfSxnZXRJbnQzMjpmdW5jdGlvbihlKXtyZXR1cm4gTChLKHRoaXMsNCxlLGFyZ3VtZW50c1sxXSkpfSxnZXRVaW50MzI6ZnVuY3Rpb24oZSl7cmV0dXJuIEwoSyh0aGlzLDQsZSxhcmd1bWVudHNbMV0pKT4+PjB9LGdldEZsb2F0MzI6ZnVuY3Rpb24oZSl7cmV0dXJuIE0oSyh0aGlzLDQsZSxhcmd1bWVudHNbMV0pLDIzLDQpfSxnZXRGbG9hdDY0OmZ1bmN0aW9uKGUpe3JldHVybiBNKEsodGhpcyw4LGUsYXJndW1lbnRzWzFdKSw1Miw4KX0sc2V0SW50ODpmdW5jdGlvbihlLHQpe3oodGhpcywxLGUsRCx0KX0sc2V0VWludDg6ZnVuY3Rpb24oZSx0KXt6KHRoaXMsMSxlLEQsdCl9LHNldEludDE2OmZ1bmN0aW9uKGUsdCl7eih0aGlzLDIsZSxqLHQsYXJndW1lbnRzWzJdKX0sc2V0VWludDE2OmZ1bmN0aW9uKGUsdCl7eih0aGlzLDIsZSxqLHQsYXJndW1lbnRzWzJdKX0sc2V0SW50MzI6ZnVuY3Rpb24oZSx0KXt6KHRoaXMsNCxlLFUsdCxhcmd1bWVudHNbMl0pfSxzZXRVaW50MzI6ZnVuY3Rpb24oZSx0KXt6KHRoaXMsNCxlLFUsdCxhcmd1bWVudHNbMl0pfSxzZXRGbG9hdDMyOmZ1bmN0aW9uKGUsdCl7eih0aGlzLDQsZSxWLHQsYXJndW1lbnRzWzJdKX0sc2V0RmxvYXQ2NDpmdW5jdGlvbihlLHQpe3oodGhpcyw4LGUsRix0LGFyZ3VtZW50c1syXSl9fSk7dihfLCJBcnJheUJ1ZmZlciIpLHYoUywiRGF0YVZpZXciKSxzKFNbbV0sYS5WSUVXLCEwKSx0LkFycmF5QnVmZmVyPV8sdC5EYXRhVmlldz1TfSxmdW5jdGlvbihlLHQpe3ZhciByPWUuZXhwb3J0cz0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93Lk1hdGg9PU1hdGg/d2luZG93OiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZiYmc2VsZi5NYXRoPT1NYXRoP3NlbGY6RnVuY3Rpb24oInJldHVybiB0aGlzIikoKTsibnVtYmVyIj09dHlwZW9mIF9fZyYmKF9fZz1yKX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIm9iamVjdCI9PT10eXBlb2YgZT9udWxsIT09ZToiZnVuY3Rpb24iPT09dHlwZW9mIGV9fSxmdW5jdGlvbihlLHQscil7ZS5leHBvcnRzPSFyKDQ1MykoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxODkpLGk9cig0NTgpLG89cigyNzkpLGE9T2JqZWN0LmRlZmluZVByb3BlcnR5O3QuZj1yKDExNik/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGUsdCxyKXtpZihuKGUpLHQ9byh0LCEwKSxuKHIpLGkpdHJ5e3JldHVybiBhKGUsdCxyKX1jYXRjaChzKXt9aWYoImdldCJpbiByfHwic2V0ImluIHIpdGhyb3cgVHlwZUVycm9yKCJBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCEiKTtyZXR1cm4idmFsdWUiaW4gciYmKGVbdF09ci52YWx1ZSksZX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDExNSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7aWYoIW4oZSkpcmV0dXJuIGU7dmFyIHIsaTtpZih0JiYiZnVuY3Rpb24iPT10eXBlb2Yocj1lLnRvU3RyaW5nKSYmIW4oaT1yLmNhbGwoZSkpKXJldHVybiBpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZihyPWUudmFsdWVPZikmJiFuKGk9ci5jYWxsKGUpKSlyZXR1cm4gaTtpZighdCYmImZ1bmN0aW9uIj09dHlwZW9mKHI9ZS50b1N0cmluZykmJiFuKGk9ci5jYWxsKGUpKSlyZXR1cm4gaTt0aHJvdyBUeXBlRXJyb3IoIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZSIpfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9TWF0aC5zaWdufHxmdW5jdGlvbihlKXtyZXR1cm4gMD09KGU9K2UpfHxlIT1lP2U6ZTwwPy0xOjF9fSxmdW5jdGlvbihlLHQpe3ZhciByPU1hdGguZXhwbTE7ZS5leHBvcnRzPSFyfHxyKDEwKT4yMjAyNS40NjU3OTQ4MDY3MTh8fHIoMTApPDIyMDI1LjQ2NTc5NDgwNjcxOHx8LTJlLTE3IT1yKC0yZS0xNyk/ZnVuY3Rpb24oZSl7cmV0dXJuIDA9PShlPStlKT9lOmU+LTFlLTYmJmU8MWUtNj9lK2UqZS8yOk1hdGguZXhwKGUpLTF9OnJ9LGZ1bmN0aW9uKGUsdCl7dmFyIHI9e30udG9TdHJpbmc7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiByLmNhbGwoZSkuc2xpY2UoOCwtMSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig5NjkpLGk9cigyODQpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbihpKGUpKX19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09ZSl0aHJvdyBUeXBlRXJyb3IoIkNhbid0IGNhbGwgbWV0aG9kIG9uICAiK2UpO3JldHVybiBlfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ImNvbnN0cnVjdG9yLGhhc093blByb3BlcnR5LGlzUHJvdG90eXBlT2YscHJvcGVydHlJc0VudW1lcmFibGUsdG9Mb2NhbGVTdHJpbmcsdG9TdHJpbmcsdmFsdWVPZiIuc3BsaXQoIiwiKX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTYpLGk9cigyODQpLG89cig4NCksYT1yKDI4Nykscz0iWyIrYSsiXSIsdT1SZWdFeHAoIl4iK3MrcysiKiIpLGM9UmVnRXhwKHMrcysiKiQiKSxmPWZ1bmN0aW9uKGUsdCxyKXt2YXIgaT17fSxzPW8oZnVuY3Rpb24oKXtyZXR1cm4hIWFbZV0oKXx8Ilx1MjAwYlx4ODUiIT0iXHUyMDBiXHg4NSJbZV0oKX0pLHU9aVtlXT1zP3QobCk6YVtlXTtyJiYoaVtyXT11KSxuKG4uUCtuLkYqcywiU3RyaW5nIixpKX0sbD1mLnRyaW09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT1TdHJpbmcoaShlKSksMSZ0JiYoZT1lLnJlcGxhY2UodSwiIikpLDImdCYmKGU9ZS5yZXBsYWNlKGMsIiIpKSxlfTtlLmV4cG9ydHM9Zn0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9Ilx0XG5cdlxmXHIgXHhhMFx1MTY4MFx1MTgwZVx1MjAwMFx1MjAwMVx1MjAwMlx1MjAwM1x1MjAwNFx1MjAwNVx1MjAwNlx1MjAwN1x1MjAwOFx1MjAwOVx1MjAwYVx1MjAyZlx1MjA1Zlx1MzAwMFx1MjAyOFx1MjAyOVx1ZmVmZiJ9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDk5NiksaT1yKDc0KTtlLmV4cG9ydHM9ZnVuY3Rpb24gZSh0LHIsbyxhLHMpe3JldHVybiB0PT09cnx8KG51bGw9PXR8fG51bGw9PXJ8fCFpKHQpJiYhaShyKT90IT09dCYmciE9PXI6bih0LHIsbyxhLGUscykpfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT09PXR8fGUhPT1lJiZ0IT09dH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwMikocig2NCksIk1hcCIpO2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDExKSxpPXIoMTAxOCksbz1yKDEwMjApLGE9cigxMDIxKSxzPXIoMTAyMik7ZnVuY3Rpb24gdShlKXt2YXIgdD0tMSxyPW51bGw9PWU/MDplLmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrdDxyOyl7dmFyIG49ZVt0XTt0aGlzLnNldChuWzBdLG5bMV0pfX11LnByb3RvdHlwZS5jbGVhcj1uLHUucHJvdG90eXBlLmRlbGV0ZT1pLHUucHJvdG90eXBlLmdldD1vLHUucHJvdG90eXBlLmhhcz1hLHUucHJvdG90eXBlLnNldD1zLGUuZXhwb3J0cz11fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigyOTEpLGk9cigxMDIzKSxvPXIoMTAyNCk7ZnVuY3Rpb24gYShlKXt2YXIgdD0tMSxyPW51bGw9PWU/MDplLmxlbmd0aDtmb3IodGhpcy5fX2RhdGFfXz1uZXcgbjsrK3Q8cjspdGhpcy5hZGQoZVt0XSl9YS5wcm90b3R5cGUuYWRkPWEucHJvdG90eXBlLnB1c2g9aSxhLnByb3RvdHlwZS5oYXM9byxlLmV4cG9ydHM9YX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5oYXModCl9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD0tMSxyPUFycmF5KGUuc2l6ZSk7cmV0dXJuIGUuZm9yRWFjaChmdW5jdGlvbihlKXtyWysrdF09ZX0pLHJ9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDM1KSxpPXIoNzQpLG89T2JqZWN0LnByb3RvdHlwZSxhPW8uaGFzT3duUHJvcGVydHkscz1vLnByb3BlcnR5SXNFbnVtZXJhYmxlLHU9bihmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpP246ZnVuY3Rpb24oZSl7cmV0dXJuIGkoZSkmJmEuY2FsbChlLCJjYWxsZWUiKSYmIXMuY2FsbChlLCJjYWxsZWUiKX07ZS5leHBvcnRzPXV9LGZ1bmN0aW9uKGUsdCl7dmFyIHI9OTAwNzE5OTI1NDc0MDk5MSxuPS9eKD86MHxbMS05XVxkKikkLztlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgaT10eXBlb2YgZTtyZXR1cm4hISh0PW51bGw9PXQ/cjp0KSYmKCJudW1iZXIiPT1pfHwic3ltYm9sIiE9aSYmbi50ZXN0KGUpKSYmZT4tMSYmZSUxPT0wJiZlPHR9fSxmdW5jdGlvbihlLHQpe3ZhciByPTkwMDcxOTkyNTQ3NDA5OTE7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZSYmZT4tMSYmZSUxPT0wJiZlPD1yfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlKHQpfX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDkpLGk9cigxMTgpLG89L1wufFxbKD86W15bXF1dKnwoWyInXSkoPzooPyFcMSlbXlxcXXxcXC4pKj9cMSlcXS8sYT0vXlx3KiQvO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKG4oZSkpcmV0dXJuITE7dmFyIHI9dHlwZW9mIGU7cmV0dXJuISgibnVtYmVyIiE9ciYmInN5bWJvbCIhPXImJiJib29sZWFuIiE9ciYmbnVsbCE9ZSYmIWkoZSkpfHxhLnRlc3QoZSl8fCFvLnRlc3QoZSl8fG51bGwhPXQmJmUgaW4gT2JqZWN0KHQpfX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImdldFRpY2tWYWx1ZXMiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBuLmdldFRpY2tWYWx1ZXN9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImdldE5pY2VUaWNrVmFsdWVzIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbi5nZXROaWNlVGlja1ZhbHVlc319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiZ2V0VGlja1ZhbHVlc0ZpeGVkRG9tYWluIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbi5nZXRUaWNrVmFsdWVzRml4ZWREb21haW59fSk7dmFyIG49cigxMDc4KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA4OSksaT1yKDQ4OCksbz1yKDc1KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcj17fTtyZXR1cm4gdD1vKHQsMyksaShlLGZ1bmN0aW9uKGUsaSxvKXtuKHIsaSx0KGUsaSxvKSl9KSxyfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoODUpLGk9cigxMDk5KSxvPXIoNzQpLGE9IltvYmplY3QgT2JqZWN0XSIscz1GdW5jdGlvbi5wcm90b3R5cGUsdT1PYmplY3QucHJvdG90eXBlLGM9cy50b1N0cmluZyxmPXUuaGFzT3duUHJvcGVydHksbD1jLmNhbGwoT2JqZWN0KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoIW8oZSl8fG4oZSkhPWEpcmV0dXJuITE7dmFyIHQ9aShlKTtpZihudWxsPT09dClyZXR1cm4hMDt2YXIgcj1mLmNhbGwodCwiY29uc3RydWN0b3IiKSYmdC5jb25zdHJ1Y3RvcjtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgciYmciBpbnN0YW5jZW9mIHImJmMuY2FsbChyKT09bH19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxpPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbz1PYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO2UuZXhwb3J0cz1mdW5jdGlvbigpe3RyeXtpZighT2JqZWN0LmFzc2lnbilyZXR1cm4hMTt2YXIgZT1uZXcgU3RyaW5nKCJhYmMiKTtpZihlWzVdPSJkZSIsIjUiPT09T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSlbMF0pcmV0dXJuITE7Zm9yKHZhciB0PXt9LHI9MDtyPDEwO3IrKyl0WyJfIitTdHJpbmcuZnJvbUNoYXJDb2RlKHIpXT1yO2lmKCIwMTIzNDU2Nzg5IiE9PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0pLmpvaW4oIiIpKXJldHVybiExO3ZhciBuPXt9O3JldHVybiJhYmNkZWZnaGlqa2xtbm9wcXJzdCIuc3BsaXQoIiIpLmZvckVhY2goZnVuY3Rpb24oZSl7bltlXT1lfSksImFiY2RlZmdoaWprbG1ub3BxcnN0Ij09PU9iamVjdC5rZXlzKE9iamVjdC5hc3NpZ24oe30sbikpLmpvaW4oIiIpfWNhdGNoKGkpe3JldHVybiExfX0oKT9PYmplY3QuYXNzaWduOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByLGEscz1mdW5jdGlvbihlKXtpZihudWxsPT09ZXx8dm9pZCAwPT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QuYXNzaWduIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBudWxsIG9yIHVuZGVmaW5lZCIpO3JldHVybiBPYmplY3QoZSl9KGUpLHU9MTt1PGFyZ3VtZW50cy5sZW5ndGg7dSsrKXtmb3IodmFyIGMgaW4gcj1PYmplY3QoYXJndW1lbnRzW3VdKSlpLmNhbGwocixjKSYmKHNbY109cltjXSk7aWYobil7YT1uKHIpO2Zvcih2YXIgZj0wO2Y8YS5sZW5ndGg7ZisrKW8uY2FsbChyLGFbZl0pJiYoc1thW2ZdXT1yW2FbZl1dKX19cmV0dXJuIHN9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMjIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaT1yKDE1KSxvPXIoMzApLGE9cigyMCkscz1yKDE5KSx1PXIoMjUpO3QubWFzc1RyYW5zZmVyPWZ1bmN0aW9uKGUsdCl7dmFyIHI9aS5UUkFOU0FDVElPTl9UWVBFLk1BU1NfVFJBTlNGRVIsYz1lLnZlcnNpb258fDEsZj1vLmNvbnZlcnRUb1BhaXJzKHQpLGw9by5nZXRTZW5kZXJQdWJsaWNLZXkoZixlKTtpZighQXJyYXkuaXNBcnJheShlLnRyYW5zZmVycykpdGhyb3cgbmV3IEVycm9yKCdbInRyYW5zZmVycyBzaG91bGQgYmUgYXJyYXkiXScpO3ZhciBoPXt0eXBlOnIsdmVyc2lvbjpjLHNlbmRlclB1YmxpY0tleTpsLGFzc2V0SWQ6by5ub3JtYWxpemVBc3NldElkKGUuYXNzZXRJZCksdHJhbnNmZXJzOmUudHJhbnNmZXJzLGZlZTpvLmZlZShlLDFlNSsxZTUqTWF0aC5jZWlsKC41KmUudHJhbnNmZXJzLmxlbmd0aCkpLHRpbWVzdGFtcDplLnRpbWVzdGFtcHx8RGF0ZS5ub3coKSxhdHRhY2htZW50OmUuYXR0YWNobWVudHx8IiIscHJvb2ZzOmUucHJvb2ZzfHxbXSxpZDoiIn07dS52YWxpZGF0ZS5tYXNzVHJhbnNmZXIoaCk7dmFyIHA9cy5iaW5hcnkuc2VyaWFsaXplVHgoaCk7cmV0dXJuIGYuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1uKGUsMikscj10WzBdLGk9dFsxXTtyZQ=="
}

github/deemru/w8io/169f3d6 
3.92 ms