3NCUbh7cABzRyEMEXAcGCAozSuxvUTf75ms · data · 2.7c767379.chunk.js_35
{
    "2.7c767379.chunk.js_35": "base64:OmUuc2Vzc2lvbi5leHRlbnNpb25zLnNlcnZlcl9uYW1lLnNlcnZlck5hbWVMaXN0LGk9ZS5nZXRDZXJ0aWZpY2F0ZShlLHQpKTt2YXIgbz1uLnV0aWwuY3JlYXRlQnVmZmVyKCk7aWYobnVsbCE9PWkpdHJ5e24udXRpbC5pc0FycmF5KGkpfHwoaT1baV0pO2Zvcih2YXIgYT1udWxsLHM9MDtzPGkubGVuZ3RoOysrcyl7dmFyIGY9bi5wZW0uZGVjb2RlKGlbc10pWzBdO2lmKCJDRVJUSUZJQ0FURSIhPT1mLnR5cGUmJiJYNTA5IENFUlRJRklDQVRFIiE9PWYudHlwZSYmIlRSVVNURUQgQ0VSVElGSUNBVEUiIT09Zi50eXBlKXt2YXIgbD1uZXcgRXJyb3IoJ0NvdWxkIG5vdCBjb252ZXJ0IGNlcnRpZmljYXRlIGZyb20gUEVNOyBQRU0gaGVhZGVyIHR5cGUgaXMgbm90ICJDRVJUSUZJQ0FURSIsICJYNTA5IENFUlRJRklDQVRFIiwgb3IgIlRSVVNURUQgQ0VSVElGSUNBVEUiLicpO3Rocm93IGwuaGVhZGVyVHlwZT1mLnR5cGUsbH1pZihmLnByb2NUeXBlJiYiRU5DUllQVEVEIj09PWYucHJvY1R5cGUudHlwZSl0aHJvdyBuZXcgRXJyb3IoIkNvdWxkIG5vdCBjb252ZXJ0IGNlcnRpZmljYXRlIGZyb20gUEVNOyBQRU0gaXMgZW5jcnlwdGVkLiIpO3ZhciBoPW4udXRpbC5jcmVhdGVCdWZmZXIoZi5ib2R5KTtudWxsPT09YSYmKGE9bi5hc24xLmZyb21EZXIoaC5ieXRlcygpLCExKSk7dmFyIHA9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO3UocCwzLGgpLG8ucHV0QnVmZmVyKHApfWk9bi5wa2kuY2VydGlmaWNhdGVGcm9tQXNuMShhKSxyP2Uuc2Vzc2lvbi5jbGllbnRDZXJ0aWZpY2F0ZT1pOmUuc2Vzc2lvbi5zZXJ2ZXJDZXJ0aWZpY2F0ZT1pfWNhdGNoKGcpe3JldHVybiBlLmVycm9yKGUse21lc3NhZ2U6IkNvdWxkIG5vdCBzZW5kIGNlcnRpZmljYXRlIGxpc3QuIixjYXVzZTpnLHNlbmQ6ITAsYWxlcnQ6e2xldmVsOmMuQWxlcnQuTGV2ZWwuZmF0YWwsZGVzY3JpcHRpb246Yy5BbGVydC5EZXNjcmlwdGlvbi5iYWRfY2VydGlmaWNhdGV9fSl9dmFyIGQ9MytvLmxlbmd0aCgpLHk9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO3JldHVybiB5LnB1dEJ5dGUoYy5IYW5kc2hha2VUeXBlLmNlcnRpZmljYXRlKSx5LnB1dEludDI0KGQpLHUoeSwzLG8pLHl9LGMuY3JlYXRlQ2xpZW50S2V5RXhjaGFuZ2U9ZnVuY3Rpb24oZSl7dmFyIHQ9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO3QucHV0Qnl0ZShlLnNlc3Npb24uY2xpZW50SGVsbG9WZXJzaW9uLm1ham9yKSx0LnB1dEJ5dGUoZS5zZXNzaW9uLmNsaWVudEhlbGxvVmVyc2lvbi5taW5vciksdC5wdXRCeXRlcyhuLnJhbmRvbS5nZXRCeXRlcyg0NikpO3ZhciByPWUuc2Vzc2lvbi5zcDtyLnByZV9tYXN0ZXJfc2VjcmV0PXQuZ2V0Qnl0ZXMoKTt2YXIgaT0odD1lLnNlc3Npb24uc2VydmVyQ2VydGlmaWNhdGUucHVibGljS2V5LmVuY3J5cHQoci5wcmVfbWFzdGVyX3NlY3JldCkpLmxlbmd0aCsyLG89bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO3JldHVybiBvLnB1dEJ5dGUoYy5IYW5kc2hha2VUeXBlLmNsaWVudF9rZXlfZXhjaGFuZ2UpLG8ucHV0SW50MjQoaSksby5wdXRJbnQxNih0Lmxlbmd0aCksby5wdXRCeXRlcyh0KSxvfSxjLmNyZWF0ZVNlcnZlcktleUV4Y2hhbmdlPWZ1bmN0aW9uKGUpe3ZhciB0PW4udXRpbC5jcmVhdGVCdWZmZXIoKTtyZXR1cm4gdH0sYy5nZXRDbGllbnRTaWduYXR1cmU9ZnVuY3Rpb24oZSx0KXt2YXIgcj1uLnV0aWwuY3JlYXRlQnVmZmVyKCk7ci5wdXRCdWZmZXIoZS5zZXNzaW9uLm1kNS5kaWdlc3QoKSksci5wdXRCdWZmZXIoZS5zZXNzaW9uLnNoYTEuZGlnZXN0KCkpLHI9ci5nZXRCeXRlcygpLGUuZ2V0U2lnbmF0dXJlPWUuZ2V0U2lnbmF0dXJlfHxmdW5jdGlvbihlLHQscil7dmFyIGk9bnVsbDtpZihlLmdldFByaXZhdGVLZXkpdHJ5e2k9ZS5nZXRQcml2YXRlS2V5KGUsZS5zZXNzaW9uLmNsaWVudENlcnRpZmljYXRlKSxpPW4ucGtpLnByaXZhdGVLZXlGcm9tUGVtKGkpfWNhdGNoKG8pe2UuZXJyb3IoZSx7bWVzc2FnZToiQ291bGQgbm90IGdldCBwcml2YXRlIGtleS4iLGNhdXNlOm8sc2VuZDohMCxhbGVydDp7bGV2ZWw6Yy5BbGVydC5MZXZlbC5mYXRhbCxkZXNjcmlwdGlvbjpjLkFsZXJ0LkRlc2NyaXB0aW9uLmludGVybmFsX2Vycm9yfX0pfW51bGw9PT1pP2UuZXJyb3IoZSx7bWVzc2FnZToiTm8gcHJpdmF0ZSBrZXkgc2V0LiIsc2VuZDohMCxhbGVydDp7bGV2ZWw6Yy5BbGVydC5MZXZlbC5mYXRhbCxkZXNjcmlwdGlvbjpjLkFsZXJ0LkRlc2NyaXB0aW9uLmludGVybmFsX2Vycm9yfX0pOnQ9aS5zaWduKHQsbnVsbCkscihlLHQpfSxlLmdldFNpZ25hdHVyZShlLHIsdCl9LGMuY3JlYXRlQ2VydGlmaWNhdGVWZXJpZnk9ZnVuY3Rpb24oZSx0KXt2YXIgcj10Lmxlbmd0aCsyLGk9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO3JldHVybiBpLnB1dEJ5dGUoYy5IYW5kc2hha2VUeXBlLmNlcnRpZmljYXRlX3ZlcmlmeSksaS5wdXRJbnQyNChyKSxpLnB1dEludDE2KHQubGVuZ3RoKSxpLnB1dEJ5dGVzKHQpLGl9LGMuY3JlYXRlQ2VydGlmaWNhdGVSZXF1ZXN0PWZ1bmN0aW9uKGUpe3ZhciB0PW4udXRpbC5jcmVhdGVCdWZmZXIoKTt0LnB1dEJ5dGUoMSk7dmFyIHI9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO2Zvcih2YXIgaSBpbiBlLmNhU3RvcmUuY2VydHMpe3ZhciBvPWUuY2FTdG9yZS5jZXJ0c1tpXSxhPW4ucGtpLmRpc3Rpbmd1aXNoZWROYW1lVG9Bc24xKG8uc3ViamVjdCkscz1uLmFzbjEudG9EZXIoYSk7ci5wdXRJbnQxNihzLmxlbmd0aCgpKSxyLnB1dEJ1ZmZlcihzKX12YXIgZj0xK3QubGVuZ3RoKCkrMityLmxlbmd0aCgpLGw9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO3JldHVybiBsLnB1dEJ5dGUoYy5IYW5kc2hha2VUeXBlLmNlcnRpZmljYXRlX3JlcXVlc3QpLGwucHV0SW50MjQoZiksdShsLDEsdCksdShsLDIsciksbH0sYy5jcmVhdGVTZXJ2ZXJIZWxsb0RvbmU9ZnVuY3Rpb24oZSl7dmFyIHQ9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO3JldHVybiB0LnB1dEJ5dGUoYy5IYW5kc2hha2VUeXBlLnNlcnZlcl9oZWxsb19kb25lKSx0LnB1dEludDI0KDApLHR9LGMuY3JlYXRlQ2hhbmdlQ2lwaGVyU3BlYz1mdW5jdGlvbigpe3ZhciBlPW4udXRpbC5jcmVhdGVCdWZmZXIoKTtyZXR1cm4gZS5wdXRCeXRlKDEpLGV9LGMuY3JlYXRlRmluaXNoZWQ9ZnVuY3Rpb24oZSl7dmFyIHQ9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO3QucHV0QnVmZmVyKGUuc2Vzc2lvbi5tZDUuZGlnZXN0KCkpLHQucHV0QnVmZmVyKGUuc2Vzc2lvbi5zaGExLmRpZ2VzdCgpKTt2YXIgcj1lLmVudGl0eT09PWMuQ29ubmVjdGlvbkVuZC5jbGllbnQsbz1lLnNlc3Npb24uc3AsYT1yPyJjbGllbnQgZmluaXNoZWQiOiJzZXJ2ZXIgZmluaXNoZWQiO3Q9aShvLm1hc3Rlcl9zZWNyZXQsYSx0LmdldEJ5dGVzKCksMTIpO3ZhciBzPW4udXRpbC5jcmVhdGVCdWZmZXIoKTtyZXR1cm4gcy5wdXRCeXRlKGMuSGFuZHNoYWtlVHlwZS5maW5pc2hlZCkscy5wdXRJbnQyNCh0Lmxlbmd0aCgpKSxzLnB1dEJ1ZmZlcih0KSxzfSxjLmNyZWF0ZUhlYXJ0YmVhdD1mdW5jdGlvbihlLHQscil7InVuZGVmaW5lZCI9PT10eXBlb2YgciYmKHI9dC5sZW5ndGgpO3ZhciBpPW4udXRpbC5jcmVhdGVCdWZmZXIoKTtpLnB1dEJ5dGUoZSksaS5wdXRJbnQxNihyKSxpLnB1dEJ5dGVzKHQpO3ZhciBvPWkubGVuZ3RoKCksYT1NYXRoLm1heCgxNixvLXItMyk7cmV0dXJuIGkucHV0Qnl0ZXMobi5yYW5kb20uZ2V0Qnl0ZXMoYSkpLGl9LGMucXVldWU9ZnVuY3Rpb24oZSx0KXtpZih0JiYoMCE9PXQuZnJhZ21lbnQubGVuZ3RoKCl8fHQudHlwZSE9PWMuQ29udGVudFR5cGUuaGFuZHNoYWtlJiZ0LnR5cGUhPT1jLkNvbnRlbnRUeXBlLmFsZXJ0JiZ0LnR5cGUhPT1jLkNvbnRlbnRUeXBlLmNoYW5nZV9jaXBoZXJfc3BlYykpe2lmKHQudHlwZT09PWMuQ29udGVudFR5cGUuaGFuZHNoYWtlKXt2YXIgcj10LmZyYWdtZW50LmJ5dGVzKCk7ZS5zZXNzaW9uLm1kNS51cGRhdGUociksZS5zZXNzaW9uLnNoYTEudXBkYXRlKHIpLHI9bnVsbH12YXIgaTtpZih0LmZyYWdtZW50Lmxlbmd0aCgpPD1jLk1heEZyYWdtZW50KWk9W3RdO2Vsc2V7aT1bXTtmb3IodmFyIG89dC5mcmFnbWVudC5ieXRlcygpO28ubGVuZ3RoPmMuTWF4RnJhZ21lbnQ7KWkucHVzaChjLmNyZWF0ZVJlY29yZChlLHt0eXBlOnQudHlwZSxkYXRhOm4udXRpbC5jcmVhdGVCdWZmZXIoby5zbGljZSgwLGMuTWF4RnJhZ21lbnQpKX0pKSxvPW8uc2xpY2UoYy5NYXhGcmFnbWVudCk7by5sZW5ndGg+MCYmaS5wdXNoKGMuY3JlYXRlUmVjb3JkKGUse3R5cGU6dC50eXBlLGRhdGE6bi51dGlsLmNyZWF0ZUJ1ZmZlcihvKX0pKX1mb3IodmFyIGE9MDthPGkubGVuZ3RoJiYhZS5mYWlsOysrYSl7dmFyIHM9aVthXTtlLnN0YXRlLmN1cnJlbnQud3JpdGUudXBkYXRlKGUscykmJmUucmVjb3Jkcy5wdXNoKHMpfX19LGMuZmx1c2g9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDxlLnJlY29yZHMubGVuZ3RoOysrdCl7dmFyIHI9ZS5yZWNvcmRzW3RdO2UudGxzRGF0YS5wdXRCeXRlKHIudHlwZSksZS50bHNEYXRhLnB1dEJ5dGUoci52ZXJzaW9uLm1ham9yKSxlLnRsc0RhdGEucHV0Qnl0ZShyLnZlcnNpb24ubWlub3IpLGUudGxzRGF0YS5wdXRJbnQxNihyLmZyYWdtZW50Lmxlbmd0aCgpKSxlLnRsc0RhdGEucHV0QnVmZmVyKGUucmVjb3Jkc1t0XS5mcmFnbWVudCl9cmV0dXJuIGUucmVjb3Jkcz1bXSxlLnRsc0RhdGFSZWFkeShlKX07dmFyIHE9ZnVuY3Rpb24oZSl7c3dpdGNoKGUpe2Nhc2UhMDpyZXR1cm4hMDtjYXNlIG4ucGtpLmNlcnRpZmljYXRlRXJyb3IuYmFkX2NlcnRpZmljYXRlOnJldHVybiBjLkFsZXJ0LkRlc2NyaXB0aW9uLmJhZF9jZXJ0aWZpY2F0ZTtjYXNlIG4ucGtpLmNlcnRpZmljYXRlRXJyb3IudW5zdXBwb3J0ZWRfY2VydGlmaWNhdGU6cmV0dXJuIGMuQWxlcnQuRGVzY3JpcHRpb24udW5zdXBwb3J0ZWRfY2VydGlmaWNhdGU7Y2FzZSBuLnBraS5jZXJ0aWZpY2F0ZUVycm9yLmNlcnRpZmljYXRlX3Jldm9rZWQ6cmV0dXJuIGMuQWxlcnQuRGVzY3JpcHRpb24uY2VydGlmaWNhdGVfcmV2b2tlZDtjYXNlIG4ucGtpLmNlcnRpZmljYXRlRXJyb3IuY2VydGlmaWNhdGVfZXhwaXJlZDpyZXR1cm4gYy5BbGVydC5EZXNjcmlwdGlvbi5jZXJ0aWZpY2F0ZV9leHBpcmVkO2Nhc2Ugbi5wa2kuY2VydGlmaWNhdGVFcnJvci5jZXJ0aWZpY2F0ZV91bmtub3duOnJldHVybiBjLkFsZXJ0LkRlc2NyaXB0aW9uLmNlcnRpZmljYXRlX3Vua25vd247Y2FzZSBuLnBraS5jZXJ0aWZpY2F0ZUVycm9yLnVua25vd25fY2E6cmV0dXJuIGMuQWxlcnQuRGVzY3JpcHRpb24udW5rbm93bl9jYTtkZWZhdWx0OnJldHVybiBjLkFsZXJ0LkRlc2NyaXB0aW9uLmJhZF9jZXJ0aWZpY2F0ZX19O2Zvcih2YXIgSyBpbiBjLnZlcmlmeUNlcnRpZmljYXRlQ2hhaW49ZnVuY3Rpb24oZSx0KXt0cnl7dmFyIHI9e307Zm9yKHZhciBpIGluIGUudmVyaWZ5T3B0aW9ucylyW2ldPWUudmVyaWZ5T3B0aW9uc1tpXTtyLnZlcmlmeT1mdW5jdGlvbih0LHIsaSl7cSh0KTt2YXIgbz1lLnZlcmlmeShlLHQscixpKTtpZighMCE9PW8pe2lmKCJvYmplY3QiPT09dHlwZW9mIG8mJiFuLnV0aWwuaXNBcnJheShvKSl7dmFyIGE9bmV3IEVycm9yKCJUaGUgYXBwbGljYXRpb24gcmVqZWN0ZWQgdGhlIGNlcnRpZmljYXRlLiIpO3Rocm93IGEuc2VuZD0hMCxhLmFsZXJ0PXtsZXZlbDpjLkFsZXJ0LkxldmVsLmZhdGFsLGRlc2NyaXB0aW9uOmMuQWxlcnQuRGVzY3JpcHRpb24uYmFkX2NlcnRpZmljYXRlfSxvLm1lc3NhZ2UmJihhLm1lc3NhZ2U9by5tZXNzYWdlKSxvLmFsZXJ0JiYoYS5hbGVydC5kZXNjcmlwdGlvbj1vLmFsZXJ0KSxhfW8hPT10JiYobz1mdW5jdGlvbihlKXtzd2l0Y2goZSl7Y2FzZSEwOnJldHVybiEwO2Nhc2UgYy5BbGVydC5EZXNjcmlwdGlvbi5iYWRfY2VydGlmaWNhdGU6cmV0dXJuIG4ucGtpLmNlcnRpZmljYXRlRXJyb3IuYmFkX2NlcnRpZmljYXRlO2Nhc2UgYy5BbGVydC5EZXNjcmlwdGlvbi51bnN1cHBvcnRlZF9jZXJ0aWZpY2F0ZTpyZXR1cm4gbi5wa2kuY2VydGlmaWNhdGVFcnJvci51bnN1cHBvcnRlZF9jZXJ0aWZpY2F0ZTtjYXNlIGMuQWxlcnQuRGVzY3JpcHRpb24uY2VydGlmaWNhdGVfcmV2b2tlZDpyZXR1cm4gbi5wa2kuY2VydGlmaWNhdGVFcnJvci5jZXJ0aWZpY2F0ZV9yZXZva2VkO2Nhc2UgYy5BbGVydC5EZXNjcmlwdGlvbi5jZXJ0aWZpY2F0ZV9leHBpcmVkOnJldHVybiBuLnBraS5jZXJ0aWZpY2F0ZUVycm9yLmNlcnRpZmljYXRlX2V4cGlyZWQ7Y2FzZSBjLkFsZXJ0LkRlc2NyaXB0aW9uLmNlcnRpZmljYXRlX3Vua25vd246cmV0dXJuIG4ucGtpLmNlcnRpZmljYXRlRXJyb3IuY2VydGlmaWNhdGVfdW5rbm93bjtjYXNlIGMuQWxlcnQuRGVzY3JpcHRpb24udW5rbm93bl9jYTpyZXR1cm4gbi5wa2kuY2VydGlmaWNhdGVFcnJvci51bmtub3duX2NhO2RlZmF1bHQ6cmV0dXJuIG4ucGtpLmNlcnRpZmljYXRlRXJyb3IuYmFkX2NlcnRpZmljYXRlfX0obykpfXJldHVybiBvfSxuLnBraS52ZXJpZnlDZXJ0aWZpY2F0ZUNoYWluKGUuY2FTdG9yZSx0LHIpfWNhdGNoKGEpe3ZhciBvPWE7KCJvYmplY3QiIT09dHlwZW9mIG98fG4udXRpbC5pc0FycmF5KG8pKSYmKG89e3NlbmQ6ITAsYWxlcnQ6e2xldmVsOmMuQWxlcnQuTGV2ZWwuZmF0YWwsZGVzY3JpcHRpb246cShhKX19KSwic2VuZCJpbiBvfHwoby5zZW5kPSEwKSwiYWxlcnQiaW4gb3x8KG8uYWxlcnQ9e2xldmVsOmMuQWxlcnQuTGV2ZWwuZmF0YWwsZGVzY3JpcHRpb246cShvLmVycm9yKX0pLGUuZXJyb3IoZSxvKX1yZXR1cm4hZS5mYWlsfSxjLmNyZWF0ZVNlc3Npb25DYWNoZT1mdW5jdGlvbihlLHQpe3ZhciByPW51bGw7aWYoZSYmZS5nZXRTZXNzaW9uJiZlLnNldFNlc3Npb24mJmUub3JkZXIpcj1lO2Vsc2V7Zm9yKHZhciBpIGluKHI9e30pLmNhY2hlPWV8fHt9LHIuY2FwYWNpdHk9TWF0aC5tYXgodHx8MTAwLDEpLHIub3JkZXI9W10sZSlyLm9yZGVyLmxlbmd0aDw9dD9yLm9yZGVyLnB1c2goaSk6ZGVsZXRlIGVbaV07ci5nZXRTZXNzaW9uPWZ1bmN0aW9uKGUpe3ZhciB0PW51bGwsaT1udWxsO2lmKGU/aT1uLnV0aWwuYnl0ZXNUb0hleChlKTpyLm9yZGVyLmxlbmd0aD4wJiYoaT1yLm9yZGVyWzBdKSxudWxsIT09aSYmaSBpbiByLmNhY2hlKWZvcih2YXIgbyBpbiB0PXIuY2FjaGVbaV0sZGVsZXRlIHIuY2FjaGVbaV0sci5vcmRlcilpZihyLm9yZGVyW29dPT09aSl7ci5vcmRlci5zcGxpY2UobywxKTticmVha31yZXR1cm4gdH0sci5zZXRTZXNzaW9uPWZ1bmN0aW9uKGUsdCl7aWYoci5vcmRlci5sZW5ndGg9PT1yLmNhcGFjaXR5KXt2YXIgaT1yLm9yZGVyLnNoaWZ0KCk7ZGVsZXRlIHIuY2FjaGVbaV19aT1uLnV0aWwuYnl0ZXNUb0hleChlKTtyLm9yZGVyLnB1c2goaSksci5jYWNoZVtpXT10fX1yZXR1cm4gcn0sYy5jcmVhdGVDb25uZWN0aW9uPWZ1bmN0aW9uKGUpe3ZhciB0PW51bGw7dD1lLmNhU3RvcmU/bi51dGlsLmlzQXJyYXkoZS5jYVN0b3JlKT9uLnBraS5jcmVhdGVDYVN0b3JlKGUuY2FTdG9yZSk6ZS5jYVN0b3JlOm4ucGtpLmNyZWF0ZUNhU3RvcmUoKTt2YXIgcj1lLmNpcGhlclN1aXRlc3x8bnVsbDtpZihudWxsPT09cilmb3IodmFyIGkgaW4gcj1bXSxjLkNpcGhlclN1aXRlcylyLnB1c2goYy5DaXBoZXJTdWl0ZXNbaV0pO3ZhciBvPWUuc2VydmVyP2MuQ29ubmVjdGlvbkVuZC5zZXJ2ZXI6Yy5Db25uZWN0aW9uRW5kLmNsaWVudCxhPWUuc2Vzc2lvbkNhY2hlP2MuY3JlYXRlU2Vzc2lvbkNhY2hlKGUuc2Vzc2lvbkNhY2hlKTpudWxsLHM9e3ZlcnNpb246e21ham9yOmMuVmVyc2lvbi5tYWpvcixtaW5vcjpjLlZlcnNpb24ubWlub3J9LGVudGl0eTpvLHNlc3Npb25JZDplLnNlc3Npb25JZCxjYVN0b3JlOnQsc2Vzc2lvbkNhY2hlOmEsY2lwaGVyU3VpdGVzOnIsY29ubmVjdGVkOmUuY29ubmVjdGVkLHZpcnR1YWxIb3N0OmUudmlydHVhbEhvc3R8fG51bGwsdmVyaWZ5Q2xpZW50OmUudmVyaWZ5Q2xpZW50fHwhMSx2ZXJpZnk6ZS52ZXJpZnl8fGZ1bmN0aW9uKGUsdCxyLG4pe3JldHVybiB0fSx2ZXJpZnlPcHRpb25zOmUudmVyaWZ5T3B0aW9uc3x8e30sZ2V0Q2VydGlmaWNhdGU6ZS5nZXRDZXJ0aWZpY2F0ZXx8bnVsbCxnZXRQcml2YXRlS2V5OmUuZ2V0UHJpdmF0ZUtleXx8bnVsbCxnZXRTaWduYXR1cmU6ZS5nZXRTaWduYXR1cmV8fG51bGwsaW5wdXQ6bi51dGlsLmNyZWF0ZUJ1ZmZlcigpLHRsc0RhdGE6bi51dGlsLmNyZWF0ZUJ1ZmZlcigpLGRhdGE6bi51dGlsLmNyZWF0ZUJ1ZmZlcigpLHRsc0RhdGFSZWFkeTplLnRsc0RhdGFSZWFkeSxkYXRhUmVhZHk6ZS5kYXRhUmVhZHksaGVhcnRiZWF0UmVjZWl2ZWQ6ZS5oZWFydGJlYXRSZWNlaXZlZCxjbG9zZWQ6ZS5jbG9zZWQsZXJyb3I6ZnVuY3Rpb24odCxyKXtyLm9yaWdpbj1yLm9yaWdpbnx8KHQuZW50aXR5PT09Yy5Db25uZWN0aW9uRW5kLmNsaWVudD8iY2xpZW50Ijoic2VydmVyIiksci5zZW5kJiYoYy5xdWV1ZSh0LGMuY3JlYXRlQWxlcnQodCxyLmFsZXJ0KSksYy5mbHVzaCh0KSk7dmFyIG49ITEhPT1yLmZhdGFsO24mJih0LmZhaWw9ITApLGUuZXJyb3IodCxyKSxuJiZ0LmNsb3NlKCExKX0sZGVmbGF0ZTplLmRlZmxhdGV8fG51bGwsaW5mbGF0ZTplLmluZmxhdGV8fG51bGwscmVzZXQ6ZnVuY3Rpb24oZSl7cy52ZXJzaW9uPXttYWpvcjpjLlZlcnNpb24ubWFqb3IsbWlub3I6Yy5WZXJzaW9uLm1pbm9yfSxzLnJlY29yZD1udWxsLHMuc2Vzc2lvbj1udWxsLHMucGVlckNlcnRpZmljYXRlPW51bGwscy5zdGF0ZT17cGVuZGluZzpudWxsLGN1cnJlbnQ6bnVsbH0scy5leHBlY3Q9KHMuZW50aXR5LGMuQ29ubmVjdGlvbkVuZC5jbGllbnQsMCkscy5mcmFnbWVudGVkPW51bGwscy5yZWNvcmRzPVtdLHMub3Blbj0hMSxzLmhhbmRzaGFrZXM9MCxzLmhhbmRzaGFraW5nPSExLHMuaXNDb25uZWN0ZWQ9ITEscy5mYWlsPSEoZXx8InVuZGVmaW5lZCI9PT10eXBlb2YgZSkscy5pbnB1dC5jbGVhcigpLHMudGxzRGF0YS5jbGVhcigpLHMuZGF0YS5jbGVhcigpLHMuc3RhdGUuY3VycmVudD1jLmNyZWF0ZUNvbm5lY3Rpb25TdGF0ZShzKX19O3MucmVzZXQoKTtyZXR1cm4gcy5oYW5kc2hha2U9ZnVuY3Rpb24oZSl7aWYocy5lbnRpdHkhPT1jLkNvbm5lY3Rpb25FbmQuY2xpZW50KXMuZXJyb3Iocyx7bWVzc2FnZToiQ2Fubm90IGluaXRpYXRlIGhhbmRzaGFrZSBhcyBhIHNlcnZlci4iLGZhdGFsOiExfSk7ZWxzZSBpZihzLmhhbmRzaGFraW5nKXMuZXJyb3Iocyx7bWVzc2FnZToiSGFuZHNoYWtlIGFscmVhZHkgaW4gcHJvZ3Jlc3MuIixmYXRhbDohMX0pO2Vsc2V7cy5mYWlsJiYhcy5vcGVuJiYwPT09cy5oYW5kc2hha2VzJiYocy5mYWlsPSExKSxzLmhhbmRzaGFraW5nPSEwO3ZhciB0PW51bGw7KGU9ZXx8IiIpLmxlbmd0aD4wJiYocy5zZXNzaW9uQ2FjaGUmJih0PXMuc2Vzc2lvbkNhY2hlLmdldFNlc3Npb24oZSkpLG51bGw9PT10JiYoZT0iIikpLDA9PT1lLmxlbmd0aCYmcy5zZXNzaW9uQ2FjaGUmJm51bGwhPT0odD1zLnNlc3Npb25DYWNoZS5nZXRTZXNzaW9uKCkpJiYoZT10LmlkKSxzLnNlc3Npb249e2lkOmUsdmVyc2lvbjpudWxsLGNpcGhlclN1aXRlOm51bGwsY29tcHJlc3Npb25NZXRob2Q6bnVsbCxzZXJ2ZXJDZXJ0aWZpY2F0ZTpudWxsLGNlcnRpZmljYXRlUmVxdWVzdDpudWxsLGNsaWVudENlcnRpZmljYXRlOm51bGwsc3A6e30sbWQ1Om4ubWQubWQ1LmNyZWF0ZSgpLHNoYTE6bi5tZC5zaGExLmNyZWF0ZSgpfSx0JiYocy52ZXJzaW9uPXQudmVyc2lvbixzLnNlc3Npb24uc3A9dC5zcCkscy5zZXNzaW9uLnNwLmNsaWVudF9yYW5kb209Yy5jcmVhdGVSYW5kb20oKS5nZXRCeXRlcygpLHMub3Blbj0hMCxjLnF1ZXVlKHMsYy5jcmVhdGVSZWNvcmQocyx7dHlwZTpjLkNvbnRlbnRUeXBlLmhhbmRzaGFrZSxkYXRhOmMuY3JlYXRlQ2xpZW50SGVsbG8ocyl9KSksYy5mbHVzaChzKX19LHMucHJvY2Vzcz1mdW5jdGlvbihlKXt2YXIgdD0wO3JldHVybiBlJiZzLmlucHV0LnB1dEJ5dGVzKGUpLHMuZmFpbHx8KG51bGwhPT1zLnJlY29yZCYmcy5yZWNvcmQucmVhZHkmJnMucmVjb3JkLmZyYWdtZW50LmlzRW1wdHkoKSYmKHMucmVjb3JkPW51bGwpLG51bGw9PT1zLnJlY29yZCYmKHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9MCxyPWUuaW5wdXQsaT1yLmxlbmd0aCgpO2lmKGk8NSl0PTUtaTtlbHNle2UucmVjb3JkPXt0eXBlOnIuZ2V0Qnl0ZSgpLHZlcnNpb246e21ham9yOnIuZ2V0Qnl0ZSgpLG1pbm9yOnIuZ2V0Qnl0ZSgpfSxsZW5ndGg6ci5nZXRJbnQxNigpLGZyYWdtZW50Om4udXRpbC5jcmVhdGVCdWZmZXIoKSxyZWFkeTohMX07dmFyIG89ZS5yZWNvcmQudmVyc2lvbi5tYWpvcj09PWUudmVyc2lvbi5tYWpvcjtvJiZlLnNlc3Npb24mJmUuc2Vzc2lvbi52ZXJzaW9uJiYobz1lLnJlY29yZC52ZXJzaW9uLm1pbm9yPT09ZS52ZXJzaW9uLm1pbm9yKSxvfHxlLmVycm9yKGUse21lc3NhZ2U6IkluY29tcGF0aWJsZSBUTFMgdmVyc2lvbi4iLHNlbmQ6ITAsYWxlcnQ6e2xldmVsOmMuQWxlcnQuTGV2ZWwuZmF0YWwsZGVzY3JpcHRpb246Yy5BbGVydC5EZXNjcmlwdGlvbi5wcm90b2NvbF92ZXJzaW9ufX0pfXJldHVybiB0fShzKSkscy5mYWlsfHxudWxsPT09cy5yZWNvcmR8fHMucmVjb3JkLnJlYWR5fHwodD1mdW5jdGlvbihlKXt2YXIgdD0wLHI9ZS5pbnB1dCxuPXIubGVuZ3RoKCk7bjxlLnJlY29yZC5sZW5ndGg/dD1lLnJlY29yZC5sZW5ndGgtbjooZS5yZWNvcmQuZnJhZ21lbnQucHV0Qnl0ZXMoci5nZXRCeXRlcyhlLnJlY29yZC5sZW5ndGgpKSxyLmNvbXBhY3QoKSxlLnN0YXRlLmN1cnJlbnQucmVhZC51cGRhdGUoZSxlLnJlY29yZCkmJihudWxsIT09ZS5mcmFnbWVudGVkJiYoZS5mcmFnbWVudGVkLnR5cGU9PT1lLnJlY29yZC50eXBlPyhlLmZyYWdtZW50ZWQuZnJhZ21lbnQucHV0QnVmZmVyKGUucmVjb3JkLmZyYWdtZW50KSxlLnJlY29yZD1lLmZyYWdtZW50ZWQpOmUuZXJyb3IoZSx7bWVzc2FnZToiSW52YWxpZCBmcmFnbWVudGVkIHJlY29yZC4iLHNlbmQ6ITAsYWxlcnQ6e2xldmVsOmMuQWxlcnQuTGV2ZWwuZmF0YWwsZGVzY3JpcHRpb246Yy5BbGVydC5EZXNjcmlwdGlvbi51bmV4cGVjdGVkX21lc3NhZ2V9fSkpLGUucmVjb3JkLnJlYWR5PSEwKSk7cmV0dXJuIHR9KHMpKSwhcy5mYWlsJiZudWxsIT09cy5yZWNvcmQmJnMucmVjb3JkLnJlYWR5JiZmdW5jdGlvbihlLHQpe3ZhciByPXQudHlwZS1jLkNvbnRlbnRUeXBlLmNoYW5nZV9jaXBoZXJfc3BlYyxuPU9bZS5lbnRpdHldW2UuZXhwZWN0XTtyIGluIG4/bltyXShlLHQpOmMuaGFuZGxlVW5leHBlY3RlZChlLHQpfShzLHMucmVjb3JkKSksdH0scy5wcmVwYXJlPWZ1bmN0aW9uKGUpe3JldHVybiBjLnF1ZXVlKHMsYy5jcmVhdGVSZWNvcmQocyx7dHlwZTpjLkNvbnRlbnRUeXBlLmFwcGxpY2F0aW9uX2RhdGEsZGF0YTpuLnV0aWwuY3JlYXRlQnVmZmVyKGUpfSkpLGMuZmx1c2gocyl9LHMucHJlcGFyZUhlYXJ0YmVhdFJlcXVlc3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSBpbnN0YW5jZW9mIG4udXRpbC5CeXRlQnVmZmVyJiYoZT1lLmJ5dGVzKCkpLCJ1bmRlZmluZWQiPT09dHlwZW9mIHQmJih0PWUubGVuZ3RoKSxzLmV4cGVjdGVkSGVhcnRiZWF0UGF5bG9hZD1lLGMucXVldWUocyxjLmNyZWF0ZVJlY29yZChzLHt0eXBlOmMuQ29udGVudFR5cGUuaGVhcnRiZWF0LGRhdGE6Yy5jcmVhdGVIZWFydGJlYXQoYy5IZWFydGJlYXRNZXNzYWdlVHlwZS5oZWFydGJlYXRfcmVxdWVzdCxlLHQpfSkpLGMuZmx1c2gocyl9LHMuY2xvc2U9ZnVuY3Rpb24oZSl7aWYoIXMuZmFpbCYmcy5zZXNzaW9uQ2FjaGUmJnMuc2Vzc2lvbil7dmFyIHQ9e2lkOnMuc2Vzc2lvbi5pZCx2ZXJzaW9uOnMuc2Vzc2lvbi52ZXJzaW9uLHNwOnMuc2Vzc2lvbi5zcH07dC5zcC5rZXlzPW51bGwscy5zZXNzaW9uQ2FjaGUuc2V0U2Vzc2lvbih0LmlkLHQpfXMub3BlbiYmKHMub3Blbj0hMSxzLmlucHV0LmNsZWFyKCksKHMuaXNDb25uZWN0ZWR8fHMuaGFuZHNoYWtpbmcpJiYocy5pc0Nvbm5lY3RlZD1zLmhhbmRzaGFraW5nPSExLGMucXVldWUocyxjLmNyZWF0ZUFsZXJ0KHMse2xldmVsOmMuQWxlcnQuTGV2ZWwud2FybmluZyxkZXNjcmlwdGlvbjpjLkFsZXJ0LkRlc2NyaXB0aW9uLmNsb3NlX25vdGlmeX0pKSxjLmZsdXNoKHMpKSxzLmNsb3NlZChzKSkscy5yZXNldChlKX0sc30sZS5leHBvcnRzPW4udGxzPW4udGxzfHx7fSxjKSJmdW5jdGlvbiIhPT10eXBlb2YgY1tLXSYmKG4udGxzW0tdPWNbS10pO24udGxzLnByZl90bHMxPWksbi50bHMuaG1hY19zaGExPWZ1bmN0aW9uKGUsdCxyKXt2YXIgaT1uLmhtYWMuY3JlYXRlKCk7aS5zdGFydCgiU0hBMSIsZSk7dmFyIG89bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO3JldHVybiBvLnB1dEludDMyKHRbMF0pLG8ucHV0SW50MzIodFsxXSksby5wdXRCeXRlKHIudHlwZSksby5wdXRCeXRlKHIudmVyc2lvbi5tYWpvciksby5wdXRCeXRlKHIudmVyc2lvbi5taW5vciksby5wdXRJbnQxNihyLmxlbmd0aCksby5wdXRCeXRlcyhyLmZyYWdtZW50LmJ5dGVzKCkpLGkudXBkYXRlKG8uZ2V0Qnl0ZXMoKSksaS5kaWdlc3QoKS5nZXRCeXRlcygpfSxuLnRscy5jcmVhdGVTZXNzaW9uQ2FjaGU9Yy5jcmVhdGVTZXNzaW9uQ2FjaGUsbi50bHMuY3JlYXRlQ29ubmVjdGlvbj1jLmNyZWF0ZUNvbm5lY3Rpb259LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDYpO3IoNjUpLHIoOTApLHIoMzQ3KSxyKDEwNikscigyMjMpLHIoMzUzKSxyKDIyNikscigxNjMpLHIoMTApLHIoMjI1KTt2YXIgaT1uLmFzbjEsbz1lLmV4cG9ydHM9bi5wa2k9bi5wa2l8fHt9O28ucGVtVG9EZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9bi5wZW0uZGVjb2RlKGUpWzBdO2lmKHQucHJvY1R5cGUmJiJFTkNSWVBURUQiPT09dC5wcm9jVHlwZS50eXBlKXRocm93IG5ldyBFcnJvcigiQ291bGQgbm90IGNvbnZlcnQgUEVNIHRvIERFUjsgUEVNIGlzIGVuY3J5cHRlZC4iKTtyZXR1cm4gbi51dGlsLmNyZWF0ZUJ1ZmZlcih0LmJvZHkpfSxvLnByaXZhdGVLZXlGcm9tUGVtPWZ1bmN0aW9uKGUpe3ZhciB0PW4ucGVtLmRlY29kZShlKVswXTtpZigiUFJJVkFURSBLRVkiIT09dC50eXBlJiYiUlNBIFBSSVZBVEUgS0VZIiE9PXQudHlwZSl7dmFyIHI9bmV3IEVycm9yKCdDb3VsZCBub3QgY29udmVydCBwcml2YXRlIGtleSBmcm9tIFBFTTsgUEVNIGhlYWRlciB0eXBlIGlzIG5vdCAiUFJJVkFURSBLRVkiIG9yICJSU0EgUFJJVkFURSBLRVkiLicpO3Rocm93IHIuaGVhZGVyVHlwZT10LnR5cGUscn1pZih0LnByb2NUeXBlJiYiRU5DUllQVEVEIj09PXQucHJvY1R5cGUudHlwZSl0aHJvdyBuZXcgRXJyb3IoIkNvdWxkIG5vdCBjb252ZXJ0IHByaXZhdGUga2V5IGZyb20gUEVNOyBQRU0gaXMgZW5jcnlwdGVkLiIpO3ZhciBhPWkuZnJvbURlcih0LmJvZHkpO3JldHVybiBvLnByaXZhdGVLZXlGcm9tQXNuMShhKX0sby5wcml2YXRlS2V5VG9QZW09ZnVuY3Rpb24oZSx0KXt2YXIgcj17dHlwZToiUlNBIFBSSVZBVEUgS0VZIixib2R5OmkudG9EZXIoby5wcml2YXRlS2V5VG9Bc24xKGUpKS5nZXRCeXRlcygpfTtyZXR1cm4gbi5wZW0uZW5jb2RlKHIse21heGxpbmU6dH0pfSxvLnByaXZhdGVLZXlJbmZvVG9QZW09ZnVuY3Rpb24oZSx0KXt2YXIgcj17dHlwZToiUFJJVkFURSBLRVkiLGJvZHk6aS50b0RlcihlKS5nZXRCeXRlcygpfTtyZXR1cm4gbi5wZW0uZW5jb2RlKHIse21heGxpbmU6dH0pfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNik7aWYocig4OSkscig2NSkscigxNjIpLHIoNjYpLHIoOTApLHIoMjIzKSxyKDEwNikscig1MikscigzNTApLHIoMTYzKSxyKDEwKSwidW5kZWZpbmVkIj09PXR5cGVvZiBpKXZhciBpPW4uanNibi5CaWdJbnRlZ2VyO3ZhciBvPW4uYXNuMSxhPW4ucGtpPW4ucGtpfHx7fTtlLmV4cG9ydHM9YS5wYmU9bi5wYmU9bi5wYmV8fHt9O3ZhciBzPWEub2lkcyx1PXtuYW1lOiJFbmNyeXB0ZWRQcml2YXRlS2V5SW5mbyIsdGFnQ2xhc3M6by5DbGFzcy5VTklWRVJTQUwsdHlwZTpvLlR5cGUuU0VRVUVOQ0UsY29uc3RydWN0ZWQ6ITAsdmFsdWU6W3tuYW1lOiJFbmNyeXB0ZWRQcml2YXRlS2V5SW5mby5lbmNyeXB0aW9uQWxnb3JpdGhtIix0YWdDbGFzczpvLkNsYXNzLlVOSVZFUlNBTCx0eXBlOm8uVHlwZS5TRVFVRU5DRSxjb25zdHJ1Y3RlZDohMCx2YWx1ZTpbe25hbWU6IkFsZ29yaXRobUlkZW50aWZpZXIuYWxnb3JpdGhtIix0YWdDbGFzczpvLkNsYXNzLlVOSVZFUlNBTCx0eXBlOm8uVHlwZS5PSUQsY29uc3RydWN0ZWQ6ITEsY2FwdHVyZToiZW5jcnlwdGlvbk9pZCJ9LHtuYW1lOiJBbGdvcml0aG1JZGVudGlmaWVyLnBhcmFtZXRlcnMiLHRhZ0NsYXNzOm8uQ2xhc3MuVU5JVkVSU0FMLHR5cGU6by5UeXBlLlNFUVVFTkNFLGNvbnN0cnVjdGVkOiEwLGNhcHR1cmVBc24xOiJlbmNyeXB0aW9uUGFyYW1zIn1dfSx7bmFtZToiRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8uZW5jcnlwdGVkRGF0YSIsdGFnQ2xhc3M6by5DbGFzcy5VTklWRVJTQUwsdHlwZTpvLlR5cGUuT0NURVRTVFJJTkcsY29uc3RydWN0ZWQ6ITEsY2FwdHVyZToiZW5jcnlwdGVkRGF0YSJ9XX0sYz17bmFtZToiUEJFUzJBbGdvcml0aG1zIix0YWdDbGFzczpvLkNsYXNzLlVOSVZFUlNBTCx0eXBlOm8uVHlwZS5TRVFVRU5DRSxjb25zdHJ1Y3RlZDohMCx2YWx1ZTpbe25hbWU6IlBCRVMyQWxnb3JpdGhtcy5rZXlEZXJpdmF0aW9uRnVuYyIsdGFnQ2xhc3M6by5DbGFzcy5VTklWRVJTQUwsdHlwZTpvLlR5cGUuU0VRVUVOQ0UsY29uc3RydWN0ZWQ6ITAsdmFsdWU6W3tuYW1lOiJQQkVTMkFsZ29yaXRobXMua2V5RGVyaXZhdGlvbkZ1bmMub2lkIix0YWdDbGFzczpvLkNsYXNzLlVOSVZFUlNBTCx0eXBlOm8uVHlwZS5PSUQsY29uc3RydWN0ZWQ6ITEsY2FwdHVyZToia2RmT2lkIn0se25hbWU6IlBCRVMyQWxnb3JpdGhtcy5wYXJhbXMiLHRhZ0NsYXNzOm8uQ2xhc3MuVU5JVkVSU0FMLHR5cGU6by5UeXBlLlNFUVVFTkNFLGNvbnN0cnVjdGVkOiEwLHZhbHVlOlt7bmFtZToiUEJFUzJBbGdvcml0aG1zLnBhcmFtcy5zYWx0Iix0YWdDbGFzczpvLkNsYXNzLlVOSVZFUlNBTCx0eXBlOm8uVHlwZS5PQ1RFVFNUUklORyxjb25zdHJ1Y3RlZDohMSxjYXB0dXJlOiJrZGZTYWx0In0se25hbWU6IlBCRVMyQWxnb3JpdGhtcy5wYXJhbXMuaXRlcmF0aW9uQ291bnQiLHRhZ0NsYXNzOm8uQ2xhc3MuVU5JVkVSU0FMLHR5cGU6by5UeXBlLklOVEVHRVIsY29uc3RydWN0ZWQ6ITEsY2FwdHVyZToia2RmSXRlcmF0aW9uQ291bnQifSx7bmFtZToiUEJFUzJBbGdvcml0aG1zLnBhcmFtcy5rZXlMZW5ndGgiLHRhZ0NsYXNzOm8uQ2xhc3MuVU5JVkVSU0FMLHR5cGU6by5UeXBlLklOVEVHRVIsY29uc3RydWN0ZWQ6ITEsb3B0aW9uYWw6ITAsY2FwdHVyZToia2V5TGVuZ3RoIn0se25hbWU6IlBCRVMyQWxnb3JpdGhtcy5wYXJhbXMucHJmIix0YWdDbGFzczpvLkNsYXNzLlVOSVZFUlNBTCx0eXBlOm8uVHlwZS5TRVFVRU5DRSxjb25zdHJ1Y3RlZDohMCxvcHRpb25hbDohMCx2YWx1ZTpbe25hbWU6IlBCRVMyQWxnb3JpdGhtcy5wYXJhbXMucHJmLmFsZ29yaXRobSIsdGFnQ2xhc3M6by5DbGFzcy5VTklWRVJTQUwsdHlwZTpvLlR5cGUuT0lELGNvbnN0cnVjdGVkOiExLGNhcHR1cmU6InByZk9pZCJ9XX1dfV19LHtuYW1lOiJQQkVTMkFsZ29yaXRobXMuZW5jcnlwdGlvblNjaGVtZSIsdGFnQ2xhc3M6by5DbGFzcy5VTklWRVJTQUwsdHlwZTpvLlR5cGUuU0VRVUVOQ0UsY29uc3RydWN0ZWQ6ITAsdmFsdWU6W3tuYW1lOiJQQkVTMkFsZ29yaXRobXMuZW5jcnlwdGlvblNjaGVtZS5vaWQiLHRhZ0NsYXNzOm8uQ2xhc3MuVU5JVkVSU0FMLHR5cGU6by5UeXBlLk9JRCxjb25zdHJ1Y3RlZDohMSxjYXB0dXJlOiJlbmNPaWQifSx7bmFtZToiUEJFUzJBbGdvcml0aG1zLmVuY3J5cHRpb25TY2hlbWUuaXYiLHRhZ0NsYXNzOm8uQ2xhc3MuVU5JVkVSU0FMLHR5cGU6by5UeXBlLk9DVEVUU1RSSU5HLGNvbnN0cnVjdGVkOiExLGNhcHR1cmU6ImVuY0l2In1dfV19LGY9e25hbWU6InBrY3MtMTJQYmVQYXJhbXMiLHRhZ0NsYXNzOm8uQ2xhc3MuVU5JVkVSU0FMLHR5cGU6by5UeXBlLlNFUVVFTkNFLGNvbnN0cnVjdGVkOiEwLHZhbHVlOlt7bmFtZToicGtjcy0xMlBiZVBhcmFtcy5zYWx0Iix0YWdDbGFzczpvLkNsYXNzLlVOSVZFUlNBTCx0eXBlOm8uVHlwZS5PQ1RFVFNUUklORyxjb25zdHJ1Y3RlZDohMSxjYXB0dXJlOiJzYWx0In0se25hbWU6InBrY3MtMTJQYmVQYXJhbXMuaXRlcmF0aW9ucyIsdGFnQ2xhc3M6by5DbGFzcy5VTklWRVJTQUwsdHlwZTpvLlR5cGUuSU5URUdFUixjb25zdHJ1Y3RlZDohMSxjYXB0dXJlOiJpdGVyYXRpb25zIn1dfTtmdW5jdGlvbiBsKGUsdCl7cmV0dXJuIGUuc3RhcnQoKS51cGRhdGUodCkuZGlnZXN0KCkuZ2V0Qnl0ZXMoKX1mdW5jdGlvbiBoKGUpe3ZhciB0O2lmKGUpe2lmKCEodD1hLm9pZHNbby5kZXJUb09pZChlKV0pKXt2YXIgcj1uZXcgRXJyb3IoIlVuc3VwcG9ydGVkIFBSRiBPSUQuIik7dGhyb3cgci5vaWQ9ZSxyLnN1cHBvcnRlZD1bImhtYWNXaXRoU0hBMSIsImhtYWNXaXRoU0hBMjI0IiwiaG1hY1dpdGhTSEEyNTYiLCJobWFjV2l0aFNIQTM4NCIsImhtYWNXaXRoU0hBNTEyIl0scn19ZWxzZSB0PSJobWFjV2l0aFNIQTEiO3JldHVybiBwKHQpfWZ1bmN0aW9uIHAoZSl7dmFyIHQ9bi5tZDtzd2l0Y2goZSl7Y2FzZSJobWFjV2l0aFNIQTIyNCI6dD1uLm1kLnNoYTUxMjtjYXNlImhtYWNXaXRoU0hBMSI6Y2FzZSJobWFjV2l0aFNIQTI1NiI6Y2FzZSJobWFjV2l0aFNIQTM4NCI6Y2FzZSJobWFjV2l0aFNIQTUxMiI6ZT1lLnN1YnN0cig4KS50b0xvd2VyQ2FzZSgpO2JyZWFrO2RlZmF1bHQ6dmFyIHI9bmV3IEVycm9yKCJVbnN1cHBvcnRlZCBQUkYgYWxnb3JpdGhtLiIpO3Rocm93IHIuYWxnb3JpdGhtPWUsci5zdXBwb3J0ZWQ9WyJobWFjV2l0aFNIQTEiLCJobWFjV2l0aFNIQTIyNCIsImhtYWNXaXRoU0hBMjU2IiwiaG1hY1dpdGhTSEEzODQiLCJobWFjV2l0aFNIQTUxMiJdLHJ9aWYoIXR8fCEoZSBpbiB0KSl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gaGFzaCBhbGdvcml0aG06ICIrZSk7cmV0dXJuIHRbZV0uY3JlYXRlKCl9YS5lbmNyeXB0UHJpdmF0ZUtleUluZm89ZnVuY3Rpb24oZSx0LHIpeyhyPXJ8fHt9KS5zYWx0U2l6ZT1yLnNhbHRTaXplfHw4LHIuY291bnQ9ci5jb3VudHx8MjA0OCxyLmFsZ29yaXRobT1yLmFsZ29yaXRobXx8ImFlczEyOCIsci5wcmZBbGdvcml0aG09ci5wcmZBbGdvcml0aG18fCJzaGExIjt2YXIgaSx1LGMsZj1uLnJhbmRvbS5nZXRCeXRlc1N5bmMoci5zYWx0U2l6ZSksbD1yLmNvdW50LGg9by5pbnRlZ2VyVG9EZXIobCk7aWYoMD09PXIuYWxnb3JpdGhtLmluZGV4T2YoImFlcyIpfHwiZGVzIj09PXIuYWxnb3JpdGhtKXt2YXIgZCx5LGc7c3dpdGNoKHIuYWxnb3JpdGhtKXtjYXNlImFlczEyOCI6aT0xNixkPTE2LHk9c1siYWVzMTI4LUNCQyJdLGc9bi5hZXMuY3JlYXRlRW5jcnlwdGlvbkNpcGhlcjticmVhaztjYXNlImFlczE5MiI6aT0yNCxkPTE2LHk9c1siYWVzMTkyLUNCQyJdLGc9bi5hZXMuY3JlYXRlRW5jcnlwdGlvbkNpcGhlcjticmVhaztjYXNlImFlczI1NiI6aT0zMixkPTE2LHk9c1siYWVzMjU2LUNCQyJdLGc9bi5hZXMuY3JlYXRlRW5jcnlwdGlvbkNpcGhlcjticmVhaztjYXNlImRlcyI6aT04LGQ9OCx5PXMuZGVzQ0JDLGc9bi5kZXMuY3JlYXRlRW5jcnlwdGlvbkNpcGhlcjticmVhaztkZWZhdWx0OnRocm93KEU9bmV3IEVycm9yKCJDYW5ub3QgZW5jcnlwdCBwcml2YXRlIGtleS4gVW5rbm93biBlbmNyeXB0aW9uIGFsZ29yaXRobS4iKSkuYWxnb3JpdGhtPXIuYWxnb3JpdGhtLEV9dmFyIHY9ImhtYWNXaXRoIityLnByZkFsZ29yaXRobS50b1VwcGVyQ2FzZSgpLG09cCh2KSxiPW4ucGtjczUucGJrZGYyKHQsZixsLGksbSksXz1uLnJhbmRvbS5nZXRCeXRlc1N5bmMoZCk7KHc9ZyhiKSkuc3RhcnQoXyksdy51cGRhdGUoby50b0RlcihlKSksdy5maW5pc2goKSxjPXcub3V0cHV0LmdldEJ5dGVzKCk7dmFyIFM9ZnVuY3Rpb24oZSx0LHIsaSl7dmFyIHM9by5jcmVhdGUoby5DbGFzcy5VTklWRVJTQUwsby5UeXBlLlNFUVVFTkNFLCEwLFtvLmNyZWF0ZShvLkNsYXNzLlVOSVZFUlNBTCxvLlR5cGUuT0NURVRTVFJJTkcsITEsZSksby5jcmVhdGUoby5DbGFzcy5VTklWRVJTQUwsby5UeXBlLklOVEVHRVIsITEsdC5nZXRCeXRlcygpKV0pOyJobWFjV2l0aFNIQTEiIT09aSYmcy52YWx1ZS5wdXNoKG8uY3JlYXRlKG8uQ2xhc3MuVU5JVkVSU0FMLG8uVHlwZS5JTlRFR0VSLCExLG4udXRpbC5oZXhUb0J5dGVzKHIudG9TdHJpbmcoMTYpKSksby5jcmVhdGUoby5DbGFzcy5VTklWRVJTQUwsby5UeXBlLlNFUVVFTkNFLCEwLFtvLmNyZWF0ZShvLkNsYXNzLlVOSVZFUlNBTCxvLlR5cGUuT0lELCExLG8ub2lkVG9EZXIoYS5vaWRzW2ldKS5nZXRCeXRlcygpKSxvLmNyZWF0ZShvLkNsYXNzLlVOSVZFUlNBTCxvLlR5cGUuTlVMTCwhMSwiIildKSk7cmV0dXJuIHN9KGYsaCxpLHYpO3U9by5jcmVhdGUoby5DbGFzcy5VTklWRVJTQUwsby5UeXBlLlNFUVVFTkNFLCEwLFtvLmNyZWF0ZShvLkNsYXNzLlVOSVZFUlNBTCxvLlR5cGUuT0lELCExLG8ub2lkVG9EZXIocy5wa2NzNVBCRVMyKS5nZXRCeXRlcygpKSxvLmNyZWF0ZShvLkNsYXNzLlVOSVZFUlNBTCxvLlR5cGUuU0VRVUVOQ0UsITAsW28uY3JlYXRlKG8uQ2xhc3MuVU5JVkVSU0FMLG8uVHlwZS5TRVFVRU5DRSwhMCxbby5jcmVhdGUoby5DbGFzcy5VTklWRVJTQUwsby5UeXBlLk9JRCwhMSxvLm9pZFRvRGVyKHMucGtjczVQQktERjIpLmdldEJ5dGVzKCkpLFNdKSxvLmNyZWF0ZShvLkNsYXNzLlVOSVZFUlNBTCxvLlR5cGUuU0VRVUVOQ0UsITAsW28uY3JlYXRlKG8uQ2xhc3MuVU5JVkVSU0FMLG8uVHlwZS5PSUQsITEsby5vaWRUb0Rlcih5KS5nZXRCeXRlcygpKSxvLmNyZWF0ZShvLkNsYXNzLlVOSVZFUlNBTCxvLlR5cGUuT0NURVRTVFJJTkcsITEsXyldKV0pXSl9ZWxzZXt2YXIgRTtpZigiM2RlcyIhPT1yLmFsZ29yaXRobSl0aHJvdyhFPW5ldyBFcnJvcigiQ2Fubm90IGVuY3J5cHQgcHJpdmF0ZSBrZXkuIFVua25vd24gZW5jcnlwdGlvbiBhbGdvcml0aG0uIikpLmFsZ29yaXRobT1yLmFsZ29yaXRobSxFO2k9MjQ7dmFyIHcsVD1uZXcgbi51dGlsLkJ5dGVCdWZmZXIoZik7Yj1hLnBiZS5nZW5lcmF0ZVBrY3MxMktleSh0LFQsMSxsLGkpLF89YS5wYmUuZ2VuZXJhdGVQa2NzMTJLZXkodCxULDIsbCxpKTsodz1uLmRlcy5jcmVhdGVFbmNyeXB0aW9uQ2lwaGVyKGIpKS5zdGFydChfKSx3LnVwZGF0ZShvLnRvRGVyKGUpKSx3LmZpbmlzaCgpLGM9dy5vdXRwdXQuZ2V0Qnl0ZXMoKSx1PW8uY3JlYXRlKG8uQ2xhc3MuVU5JVkVSU0FMLG8uVHlwZS5TRVFVRU5DRSwhMCxbby5jcmVhdGUoby5DbGFzcy5VTklWRVJTQUwsby5UeXBlLk9JRCwhMSxvLm9pZFRvRGVyKHNbInBiZVdpdGhTSEFBbmQzLUtleVRyaXBsZURFUy1DQkMiXSkuZ2V0Qnl0ZXMoKSksby5jcmVhdGUoby5DbGFzcy5VTklWRVJTQUwsby5UeXBlLlNFUVVFTkNFLCEwLFtvLmNyZWF0ZShvLkNsYXNzLlVOSVZFUlNBTCxvLlR5cGUuT0NURVRTVFJJTkcsITEsZiksby5jcmVhdGUoby5DbGFzcy5VTklWRVJTQUwsby5UeXBlLklOVEVHRVIsITEsaC5nZXRCeXRlcygpKV0pXSl9cmV0dXJuIG8uY3JlYXRlKG8uQ2xhc3MuVU5JVkVSU0FMLG8uVHlwZS5TRVFVRU5DRSwhMCxbdSxvLmNyZWF0ZShvLkNsYXNzLlVOSVZFUlNBTCxvLlR5cGUuT0NURVRTVFJJTkcsITEsYyldKX0sYS5kZWNyeXB0UHJpdmF0ZUtleUluZm89ZnVuY3Rpb24oZSx0KXt2YXIgcj1udWxsLGk9e30scz1bXTtpZighby52YWxpZGF0ZShlLHUsaSxzKSl7dmFyIGM9bmV3IEVycm9yKCJDYW5ub3QgcmVhZCBlbmNyeXB0ZWQgcHJpdmF0ZSBrZXkuIEFTTi4xIG9iamVjdCBpcyBub3QgYSBzdXBwb3J0ZWQgRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8uIik7dGhyb3cgYy5lcnJvcnM9cyxjfXZhciBmPW8uZGVyVG9PaWQoaS5lbmNyeXB0aW9uT2lkKSxsPWEucGJlLmdldENpcGhlcihmLGkuZW5jcnlwdGlvblBhcmFtcyx0KSxoPW4udXRpbC5jcmVhdGVCdWZmZXIoaS5lbmNyeXB0ZWREYXRhKTtyZXR1cm4gbC51cGRhdGUoaCksbC5maW5pc2goKSYmKHI9by5mcm9tRGVyKGwub3V0cHV0KSkscn0sYS5lbmNyeXB0ZWRQcml2YXRlS2V5VG9QZW09ZnVuY3Rpb24oZSx0KXt2YXIgcj17dHlwZToiRU5DUllQVEVEIFBSSVZBVEUgS0VZIixib2R5Om8udG9EZXIoZSkuZ2V0Qnl0ZXMoKX07cmV0dXJuIG4ucGVtLmVuY29kZShyLHttYXhsaW5lOnR9KX0sYS5lbmNyeXB0ZWRQcml2YXRlS2V5RnJvbVBlbT1mdW5jdGlvbihlKXt2YXIgdD1uLnBlbS5kZWNvZGUoZSlbMF07aWYoIkVOQ1JZUFRFRCBQUklWQVRFIEtFWSIhPT10LnR5cGUpe3ZhciByPW5ldyBFcnJvcignQ291bGQgbm90IGNvbnZlcnQgZW5jcnlwdGVkIHByaXZhdGUga2V5IGZyb20gUEVNOyBQRU0gaGVhZGVyIHR5cGUgaXMgIkVOQ1JZUFRFRCBQUklWQVRFIEtFWSIuJyk7dGhyb3cgci5oZWFkZXJUeXBlPXQudHlwZSxyfWlmKHQucHJvY1R5cGUmJiJFTkNSWVBURUQiPT09dC5wcm9jVHlwZS50eXBlKXRocm93IG5ldyBFcnJvcigiQ291bGQgbm90IGNvbnZlcnQgZW5jcnlwdGVkIHByaXZhdGUga2V5IGZyb20gUEVNOyBQRU0gaXMgZW5jcnlwdGVkLiIpO3JldHVybiBvLmZyb21EZXIodC5ib2R5KX0sYS5lbmNyeXB0UnNhUHJpdmF0ZUtleT1mdW5jdGlvbihlLHQscil7aWYoIShyPXJ8fHt9KS5sZWdhY3kpe3ZhciBpPWEud3JhcFJzYVByaXZhdGVLZXkoYS5wcml2YXRlS2V5VG9Bc24xKGUpKTtyZXR1cm4gaT1hLmVuY3J5cHRQcml2YXRlS2V5SW5mbyhpLHQsciksYS5lbmNyeXB0ZWRQcml2YXRlS2V5VG9QZW0oaSl9dmFyIHMsdSxjLGY7c3dpdGNoKHIuYWxnb3JpdGhtKXtjYXNlImFlczEyOCI6cz0iQUVTLTEyOC1DQkMiLGM9MTYsdT1uLnJhbmRvbS5nZXRCeXRlc1N5bmMoMTYpLGY9bi5hZXMuY3JlYXRlRW5jcnlwdGlvbkNpcGhlcjticmVhaztjYXNlImFlczE5MiI6cz0iQUVTLTE5Mi1DQkMiLGM9MjQsdT1uLnJhbmRvbS5nZXRCeXRlc1N5bmMoMTYpLGY9bi5hZXMuY3JlYXRlRW5jcnlwdGlvbkNpcGhlcjticmVhaztjYXNlImFlczI1NiI6cz0iQUVTLTI1Ni1DQkMiLGM9MzIsdT1uLnJhbmRvbS5nZXRCeXRlc1N5bmMoMTYpLGY9bi5hZXMuY3JlYXRlRW5jcnlwdGlvbkNpcGhlcjticmVhaztjYXNlIjNkZXMiOnM9IkRFUy1FREUzLUNCQyIsYz0yNCx1PW4ucmFuZG9tLmdldEJ5dGVzU3luYyg4KSxmPW4uZGVzLmNyZWF0ZUVuY3J5cHRpb25DaXBoZXI7YnJlYWs7Y2FzZSJkZXMiOnM9IkRFUy1DQkMiLGM9OCx1PW4ucmFuZG9tLmdldEJ5dGVzU3luYyg4KSxmPW4uZGVzLmNyZWF0ZUVuY3J5cHRpb25DaXBoZXI7YnJlYWs7ZGVmYXVsdDp2YXIgbD1uZXcgRXJyb3IoJ0NvdWxkIG5vdCBlbmNyeXB0IFJTQSBwcml2YXRlIGtleTsgdW5zdXBwb3J0ZWQgZW5jcnlwdGlvbiBhbGdvcml0aG0gIicrci5hbGdvcml0aG0rJyIuJyk7dGhyb3cgbC5hbGdvcml0aG09ci5hbGdvcml0aG0sbH12YXIgaD1mKG4ucGJlLm9wZW5zc2xEZXJpdmVCeXRlcyh0LHUuc3Vic3RyKDAsOCksYykpO2guc3RhcnQodSksaC51cGRhdGUoby50b0RlcihhLnByaXZhdGVLZXlUb0FzbjEoZSkpKSxoLmZpbmlzaCgpO3ZhciBwPXt0eXBlOiJSU0EgUFJJVkFURSBLRVkiLHByb2NUeXBlOnt2ZXJzaW9uOiI0Iix0eXBlOiJFTkNSWVBURUQifSxkZWtJbmZvOnthbGdvcml0aG06cyxwYXJhbWV0ZXJzOm4udXRpbC5ieXRlc1RvSGV4KHUpLnRvVXBwZXJDYXNlKCl9LGJvZHk6aC5vdXRwdXQuZ2V0Qnl0ZXMoKX07cmV0dXJuIG4ucGVtLmVuY29kZShwKX0sYS5kZWNyeXB0UnNhUHJpdmF0ZUtleT1mdW5jdGlvbihlLHQpe3ZhciByPW51bGwsaT1uLnBlbS5kZWNvZGUoZSlbMF07aWYoIkVOQ1JZUFRFRCBQUklWQVRFIEtFWSIhPT1pLnR5cGUmJiJQUklWQVRFIEtFWSIhPT1pLnR5cGUmJiJSU0EgUFJJVkFURSBLRVkiIT09aS50eXBlKXRocm93KGM9bmV3IEVycm9yKCdDb3VsZCBub3QgY29udmVydCBwcml2YXRlIGtleSBmcm9tIFBFTTsgUEVNIGhlYWRlciB0eXBlIGlzIG5vdCAiRU5DUllQVEVEIFBSSVZBVEUgS0VZIiwgIlBSSVZBVEUgS0VZIiwgb3IgIlJTQSBQUklWQVRFIEtFWSIuJykpLmhlYWRlclR5cGU9YyxjO2lmKGkucHJvY1R5cGUmJiJFTkNSWVBURUQiPT09aS5wcm9jVHlwZS50eXBlKXt2YXIgcyx1O3M="
}

Changelog:

{
    "2020.04.17 15:42": "base64:OmUuc2Vzc2lvbi5leHRlbnNpb25zLnNlcnZlcl9uYW1lLnNlcnZlck5hbWVMaXN0LGk9ZS5nZXRDZXJ0aWZpY2F0ZShlLHQpKTt2YXIgbz1uLnV0aWwuY3JlYXRlQnVmZmVyKCk7aWYobnVsbCE9PWkpdHJ5e24udXRpbC5pc0FycmF5KGkpfHwoaT1baV0pO2Zvcih2YXIgYT1udWxsLHM9MDtzPGkubGVuZ3RoOysrcyl7dmFyIGY9bi5wZW0uZGVjb2RlKGlbc10pWzBdO2lmKCJDRVJUSUZJQ0FURSIhPT1mLnR5cGUmJiJYNTA5IENFUlRJRklDQVRFIiE9PWYudHlwZSYmIlRSVVNURUQgQ0VSVElGSUNBVEUiIT09Zi50eXBlKXt2YXIgbD1uZXcgRXJyb3IoJ0NvdWxkIG5vdCBjb252ZXJ0IGNlcnRpZmljYXRlIGZyb20gUEVNOyBQRU0gaGVhZGVyIHR5cGUgaXMgbm90ICJDRVJUSUZJQ0FURSIsICJYNTA5IENFUlRJRklDQVRFIiwgb3IgIlRSVVNURUQgQ0VSVElGSUNBVEUiLicpO3Rocm93IGwuaGVhZGVyVHlwZT1mLnR5cGUsbH1pZihmLnByb2NUeXBlJiYiRU5DUllQVEVEIj09PWYucHJvY1R5cGUudHlwZSl0aHJvdyBuZXcgRXJyb3IoIkNvdWxkIG5vdCBjb252ZXJ0IGNlcnRpZmljYXRlIGZyb20gUEVNOyBQRU0gaXMgZW5jcnlwdGVkLiIpO3ZhciBoPW4udXRpbC5jcmVhdGVCdWZmZXIoZi5ib2R5KTtudWxsPT09YSYmKGE9bi5hc24xLmZyb21EZXIoaC5ieXRlcygpLCExKSk7dmFyIHA9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO3UocCwzLGgpLG8ucHV0QnVmZmVyKHApfWk9bi5wa2kuY2VydGlmaWNhdGVGcm9tQXNuMShhKSxyP2Uuc2Vzc2lvbi5jbGllbnRDZXJ0aWZpY2F0ZT1pOmUuc2Vzc2lvbi5zZXJ2ZXJDZXJ0aWZpY2F0ZT1pfWNhdGNoKGcpe3JldHVybiBlLmVycm9yKGUse21lc3NhZ2U6IkNvdWxkIG5vdCBzZW5kIGNlcnRpZmljYXRlIGxpc3QuIixjYXVzZTpnLHNlbmQ6ITAsYWxlcnQ6e2xldmVsOmMuQWxlcnQuTGV2ZWwuZmF0YWwsZGVzY3JpcHRpb246Yy5BbGVydC5EZXNjcmlwdGlvbi5iYWRfY2VydGlmaWNhdGV9fSl9dmFyIGQ9MytvLmxlbmd0aCgpLHk9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO3JldHVybiB5LnB1dEJ5dGUoYy5IYW5kc2hha2VUeXBlLmNlcnRpZmljYXRlKSx5LnB1dEludDI0KGQpLHUoeSwzLG8pLHl9LGMuY3JlYXRlQ2xpZW50S2V5RXhjaGFuZ2U9ZnVuY3Rpb24oZSl7dmFyIHQ9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO3QucHV0Qnl0ZShlLnNlc3Npb24uY2xpZW50SGVsbG9WZXJzaW9uLm1ham9yKSx0LnB1dEJ5dGUoZS5zZXNzaW9uLmNsaWVudEhlbGxvVmVyc2lvbi5taW5vciksdC5wdXRCeXRlcyhuLnJhbmRvbS5nZXRCeXRlcyg0NikpO3ZhciByPWUuc2Vzc2lvbi5zcDtyLnByZV9tYXN0ZXJfc2VjcmV0PXQuZ2V0Qnl0ZXMoKTt2YXIgaT0odD1lLnNlc3Npb24uc2VydmVyQ2VydGlmaWNhdGUucHVibGljS2V5LmVuY3J5cHQoci5wcmVfbWFzdGVyX3NlY3JldCkpLmxlbmd0aCsyLG89bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO3JldHVybiBvLnB1dEJ5dGUoYy5IYW5kc2hha2VUeXBlLmNsaWVudF9rZXlfZXhjaGFuZ2UpLG8ucHV0SW50MjQoaSksby5wdXRJbnQxNih0Lmxlbmd0aCksby5wdXRCeXRlcyh0KSxvfSxjLmNyZWF0ZVNlcnZlcktleUV4Y2hhbmdlPWZ1bmN0aW9uKGUpe3ZhciB0PW4udXRpbC5jcmVhdGVCdWZmZXIoKTtyZXR1cm4gdH0sYy5nZXRDbGllbnRTaWduYXR1cmU9ZnVuY3Rpb24oZSx0KXt2YXIgcj1uLnV0aWwuY3JlYXRlQnVmZmVyKCk7ci5wdXRCdWZmZXIoZS5zZXNzaW9uLm1kNS5kaWdlc3QoKSksci5wdXRCdWZmZXIoZS5zZXNzaW9uLnNoYTEuZGlnZXN0KCkpLHI9ci5nZXRCeXRlcygpLGUuZ2V0U2lnbmF0dXJlPWUuZ2V0U2lnbmF0dXJlfHxmdW5jdGlvbihlLHQscil7dmFyIGk9bnVsbDtpZihlLmdldFByaXZhdGVLZXkpdHJ5e2k9ZS5nZXRQcml2YXRlS2V5KGUsZS5zZXNzaW9uLmNsaWVudENlcnRpZmljYXRlKSxpPW4ucGtpLnByaXZhdGVLZXlGcm9tUGVtKGkpfWNhdGNoKG8pe2UuZXJyb3IoZSx7bWVzc2FnZToiQ291bGQgbm90IGdldCBwcml2YXRlIGtleS4iLGNhdXNlOm8sc2VuZDohMCxhbGVydDp7bGV2ZWw6Yy5BbGVydC5MZXZlbC5mYXRhbCxkZXNjcmlwdGlvbjpjLkFsZXJ0LkRlc2NyaXB0aW9uLmludGVybmFsX2Vycm9yfX0pfW51bGw9PT1pP2UuZXJyb3IoZSx7bWVzc2FnZToiTm8gcHJpdmF0ZSBrZXkgc2V0LiIsc2VuZDohMCxhbGVydDp7bGV2ZWw6Yy5BbGVydC5MZXZlbC5mYXRhbCxkZXNjcmlwdGlvbjpjLkFsZXJ0LkRlc2NyaXB0aW9uLmludGVybmFsX2Vycm9yfX0pOnQ9aS5zaWduKHQsbnVsbCkscihlLHQpfSxlLmdldFNpZ25hdHVyZShlLHIsdCl9LGMuY3JlYXRlQ2VydGlmaWNhdGVWZXJpZnk9ZnVuY3Rpb24oZSx0KXt2YXIgcj10Lmxlbmd0aCsyLGk9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO3JldHVybiBpLnB1dEJ5dGUoYy5IYW5kc2hha2VUeXBlLmNlcnRpZmljYXRlX3ZlcmlmeSksaS5wdXRJbnQyNChyKSxpLnB1dEludDE2KHQubGVuZ3RoKSxpLnB1dEJ5dGVzKHQpLGl9LGMuY3JlYXRlQ2VydGlmaWNhdGVSZXF1ZXN0PWZ1bmN0aW9uKGUpe3ZhciB0PW4udXRpbC5jcmVhdGVCdWZmZXIoKTt0LnB1dEJ5dGUoMSk7dmFyIHI9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO2Zvcih2YXIgaSBpbiBlLmNhU3RvcmUuY2VydHMpe3ZhciBvPWUuY2FTdG9yZS5jZXJ0c1tpXSxhPW4ucGtpLmRpc3Rpbmd1aXNoZWROYW1lVG9Bc24xKG8uc3ViamVjdCkscz1uLmFzbjEudG9EZXIoYSk7ci5wdXRJbnQxNihzLmxlbmd0aCgpKSxyLnB1dEJ1ZmZlcihzKX12YXIgZj0xK3QubGVuZ3RoKCkrMityLmxlbmd0aCgpLGw9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO3JldHVybiBsLnB1dEJ5dGUoYy5IYW5kc2hha2VUeXBlLmNlcnRpZmljYXRlX3JlcXVlc3QpLGwucHV0SW50MjQoZiksdShsLDEsdCksdShsLDIsciksbH0sYy5jcmVhdGVTZXJ2ZXJIZWxsb0RvbmU9ZnVuY3Rpb24oZSl7dmFyIHQ9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO3JldHVybiB0LnB1dEJ5dGUoYy5IYW5kc2hha2VUeXBlLnNlcnZlcl9oZWxsb19kb25lKSx0LnB1dEludDI0KDApLHR9LGMuY3JlYXRlQ2hhbmdlQ2lwaGVyU3BlYz1mdW5jdGlvbigpe3ZhciBlPW4udXRpbC5jcmVhdGVCdWZmZXIoKTtyZXR1cm4gZS5wdXRCeXRlKDEpLGV9LGMuY3JlYXRlRmluaXNoZWQ9ZnVuY3Rpb24oZSl7dmFyIHQ9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO3QucHV0QnVmZmVyKGUuc2Vzc2lvbi5tZDUuZGlnZXN0KCkpLHQucHV0QnVmZmVyKGUuc2Vzc2lvbi5zaGExLmRpZ2VzdCgpKTt2YXIgcj1lLmVudGl0eT09PWMuQ29ubmVjdGlvbkVuZC5jbGllbnQsbz1lLnNlc3Npb24uc3AsYT1yPyJjbGllbnQgZmluaXNoZWQiOiJzZXJ2ZXIgZmluaXNoZWQiO3Q9aShvLm1hc3Rlcl9zZWNyZXQsYSx0LmdldEJ5dGVzKCksMTIpO3ZhciBzPW4udXRpbC5jcmVhdGVCdWZmZXIoKTtyZXR1cm4gcy5wdXRCeXRlKGMuSGFuZHNoYWtlVHlwZS5maW5pc2hlZCkscy5wdXRJbnQyNCh0Lmxlbmd0aCgpKSxzLnB1dEJ1ZmZlcih0KSxzfSxjLmNyZWF0ZUhlYXJ0YmVhdD1mdW5jdGlvbihlLHQscil7InVuZGVmaW5lZCI9PT10eXBlb2YgciYmKHI9dC5sZW5ndGgpO3ZhciBpPW4udXRpbC5jcmVhdGVCdWZmZXIoKTtpLnB1dEJ5dGUoZSksaS5wdXRJbnQxNihyKSxpLnB1dEJ5dGVzKHQpO3ZhciBvPWkubGVuZ3RoKCksYT1NYXRoLm1heCgxNixvLXItMyk7cmV0dXJuIGkucHV0Qnl0ZXMobi5yYW5kb20uZ2V0Qnl0ZXMoYSkpLGl9LGMucXVldWU9ZnVuY3Rpb24oZSx0KXtpZih0JiYoMCE9PXQuZnJhZ21lbnQubGVuZ3RoKCl8fHQudHlwZSE9PWMuQ29udGVudFR5cGUuaGFuZHNoYWtlJiZ0LnR5cGUhPT1jLkNvbnRlbnRUeXBlLmFsZXJ0JiZ0LnR5cGUhPT1jLkNvbnRlbnRUeXBlLmNoYW5nZV9jaXBoZXJfc3BlYykpe2lmKHQudHlwZT09PWMuQ29udGVudFR5cGUuaGFuZHNoYWtlKXt2YXIgcj10LmZyYWdtZW50LmJ5dGVzKCk7ZS5zZXNzaW9uLm1kNS51cGRhdGUociksZS5zZXNzaW9uLnNoYTEudXBkYXRlKHIpLHI9bnVsbH12YXIgaTtpZih0LmZyYWdtZW50Lmxlbmd0aCgpPD1jLk1heEZyYWdtZW50KWk9W3RdO2Vsc2V7aT1bXTtmb3IodmFyIG89dC5mcmFnbWVudC5ieXRlcygpO28ubGVuZ3RoPmMuTWF4RnJhZ21lbnQ7KWkucHVzaChjLmNyZWF0ZVJlY29yZChlLHt0eXBlOnQudHlwZSxkYXRhOm4udXRpbC5jcmVhdGVCdWZmZXIoby5zbGljZSgwLGMuTWF4RnJhZ21lbnQpKX0pKSxvPW8uc2xpY2UoYy5NYXhGcmFnbWVudCk7by5sZW5ndGg+MCYmaS5wdXNoKGMuY3JlYXRlUmVjb3JkKGUse3R5cGU6dC50eXBlLGRhdGE6bi51dGlsLmNyZWF0ZUJ1ZmZlcihvKX0pKX1mb3IodmFyIGE9MDthPGkubGVuZ3RoJiYhZS5mYWlsOysrYSl7dmFyIHM9aVthXTtlLnN0YXRlLmN1cnJlbnQud3JpdGUudXBkYXRlKGUscykmJmUucmVjb3Jkcy5wdXNoKHMpfX19LGMuZmx1c2g9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDxlLnJlY29yZHMubGVuZ3RoOysrdCl7dmFyIHI9ZS5yZWNvcmRzW3RdO2UudGxzRGF0YS5wdXRCeXRlKHIudHlwZSksZS50bHNEYXRhLnB1dEJ5dGUoci52ZXJzaW9uLm1ham9yKSxlLnRsc0RhdGEucHV0Qnl0ZShyLnZlcnNpb24ubWlub3IpLGUudGxzRGF0YS5wdXRJbnQxNihyLmZyYWdtZW50Lmxlbmd0aCgpKSxlLnRsc0RhdGEucHV0QnVmZmVyKGUucmVjb3Jkc1t0XS5mcmFnbWVudCl9cmV0dXJuIGUucmVjb3Jkcz1bXSxlLnRsc0RhdGFSZWFkeShlKX07dmFyIHE9ZnVuY3Rpb24oZSl7c3dpdGNoKGUpe2Nhc2UhMDpyZXR1cm4hMDtjYXNlIG4ucGtpLmNlcnRpZmljYXRlRXJyb3IuYmFkX2NlcnRpZmljYXRlOnJldHVybiBjLkFsZXJ0LkRlc2NyaXB0aW9uLmJhZF9jZXJ0aWZpY2F0ZTtjYXNlIG4ucGtpLmNlcnRpZmljYXRlRXJyb3IudW5zdXBwb3J0ZWRfY2VydGlmaWNhdGU6cmV0dXJuIGMuQWxlcnQuRGVzY3JpcHRpb24udW5zdXBwb3J0ZWRfY2VydGlmaWNhdGU7Y2FzZSBuLnBraS5jZXJ0aWZpY2F0ZUVycm9yLmNlcnRpZmljYXRlX3Jldm9rZWQ6cmV0dXJuIGMuQWxlcnQuRGVzY3JpcHRpb24uY2VydGlmaWNhdGVfcmV2b2tlZDtjYXNlIG4ucGtpLmNlcnRpZmljYXRlRXJyb3IuY2VydGlmaWNhdGVfZXhwaXJlZDpyZXR1cm4gYy5BbGVydC5EZXNjcmlwdGlvbi5jZXJ0aWZpY2F0ZV9leHBpcmVkO2Nhc2Ugbi5wa2kuY2VydGlmaWNhdGVFcnJvci5jZXJ0aWZpY2F0ZV91bmtub3duOnJldHVybiBjLkFsZXJ0LkRlc2NyaXB0aW9uLmNlcnRpZmljYXRlX3Vua25vd247Y2FzZSBuLnBraS5jZXJ0aWZpY2F0ZUVycm9yLnVua25vd25fY2E6cmV0dXJuIGMuQWxlcnQuRGVzY3JpcHRpb24udW5rbm93bl9jYTtkZWZhdWx0OnJldHVybiBjLkFsZXJ0LkRlc2NyaXB0aW9uLmJhZF9jZXJ0aWZpY2F0ZX19O2Zvcih2YXIgSyBpbiBjLnZlcmlmeUNlcnRpZmljYXRlQ2hhaW49ZnVuY3Rpb24oZSx0KXt0cnl7dmFyIHI9e307Zm9yKHZhciBpIGluIGUudmVyaWZ5T3B0aW9ucylyW2ldPWUudmVyaWZ5T3B0aW9uc1tpXTtyLnZlcmlmeT1mdW5jdGlvbih0LHIsaSl7cSh0KTt2YXIgbz1lLnZlcmlmeShlLHQscixpKTtpZighMCE9PW8pe2lmKCJvYmplY3QiPT09dHlwZW9mIG8mJiFuLnV0aWwuaXNBcnJheShvKSl7dmFyIGE9bmV3IEVycm9yKCJUaGUgYXBwbGljYXRpb24gcmVqZWN0ZWQgdGhlIGNlcnRpZmljYXRlLiIpO3Rocm93IGEuc2VuZD0hMCxhLmFsZXJ0PXtsZXZlbDpjLkFsZXJ0LkxldmVsLmZhdGFsLGRlc2NyaXB0aW9uOmMuQWxlcnQuRGVzY3JpcHRpb24uYmFkX2NlcnRpZmljYXRlfSxvLm1lc3NhZ2UmJihhLm1lc3NhZ2U9by5tZXNzYWdlKSxvLmFsZXJ0JiYoYS5hbGVydC5kZXNjcmlwdGlvbj1vLmFsZXJ0KSxhfW8hPT10JiYobz1mdW5jdGlvbihlKXtzd2l0Y2goZSl7Y2FzZSEwOnJldHVybiEwO2Nhc2UgYy5BbGVydC5EZXNjcmlwdGlvbi5iYWRfY2VydGlmaWNhdGU6cmV0dXJuIG4ucGtpLmNlcnRpZmljYXRlRXJyb3IuYmFkX2NlcnRpZmljYXRlO2Nhc2UgYy5BbGVydC5EZXNjcmlwdGlvbi51bnN1cHBvcnRlZF9jZXJ0aWZpY2F0ZTpyZXR1cm4gbi5wa2kuY2VydGlmaWNhdGVFcnJvci51bnN1cHBvcnRlZF9jZXJ0aWZpY2F0ZTtjYXNlIGMuQWxlcnQuRGVzY3JpcHRpb24uY2VydGlmaWNhdGVfcmV2b2tlZDpyZXR1cm4gbi5wa2kuY2VydGlmaWNhdGVFcnJvci5jZXJ0aWZpY2F0ZV9yZXZva2VkO2Nhc2UgYy5BbGVydC5EZXNjcmlwdGlvbi5jZXJ0aWZpY2F0ZV9leHBpcmVkOnJldHVybiBuLnBraS5jZXJ0aWZpY2F0ZUVycm9yLmNlcnRpZmljYXRlX2V4cGlyZWQ7Y2FzZSBjLkFsZXJ0LkRlc2NyaXB0aW9uLmNlcnRpZmljYXRlX3Vua25vd246cmV0dXJuIG4ucGtpLmNlcnRpZmljYXRlRXJyb3IuY2VydGlmaWNhdGVfdW5rbm93bjtjYXNlIGMuQWxlcnQuRGVzY3JpcHRpb24udW5rbm93bl9jYTpyZXR1cm4gbi5wa2kuY2VydGlmaWNhdGVFcnJvci51bmtub3duX2NhO2RlZmF1bHQ6cmV0dXJuIG4ucGtpLmNlcnRpZmljYXRlRXJyb3IuYmFkX2NlcnRpZmljYXRlfX0obykpfXJldHVybiBvfSxuLnBraS52ZXJpZnlDZXJ0aWZpY2F0ZUNoYWluKGUuY2FTdG9yZSx0LHIpfWNhdGNoKGEpe3ZhciBvPWE7KCJvYmplY3QiIT09dHlwZW9mIG98fG4udXRpbC5pc0FycmF5KG8pKSYmKG89e3NlbmQ6ITAsYWxlcnQ6e2xldmVsOmMuQWxlcnQuTGV2ZWwuZmF0YWwsZGVzY3JpcHRpb246cShhKX19KSwic2VuZCJpbiBvfHwoby5zZW5kPSEwKSwiYWxlcnQiaW4gb3x8KG8uYWxlcnQ9e2xldmVsOmMuQWxlcnQuTGV2ZWwuZmF0YWwsZGVzY3JpcHRpb246cShvLmVycm9yKX0pLGUuZXJyb3IoZSxvKX1yZXR1cm4hZS5mYWlsfSxjLmNyZWF0ZVNlc3Npb25DYWNoZT1mdW5jdGlvbihlLHQpe3ZhciByPW51bGw7aWYoZSYmZS5nZXRTZXNzaW9uJiZlLnNldFNlc3Npb24mJmUub3JkZXIpcj1lO2Vsc2V7Zm9yKHZhciBpIGluKHI9e30pLmNhY2hlPWV8fHt9LHIuY2FwYWNpdHk9TWF0aC5tYXgodHx8MTAwLDEpLHIub3JkZXI9W10sZSlyLm9yZGVyLmxlbmd0aDw9dD9yLm9yZGVyLnB1c2goaSk6ZGVsZXRlIGVbaV07ci5nZXRTZXNzaW9uPWZ1bmN0aW9uKGUpe3ZhciB0PW51bGwsaT1udWxsO2lmKGU/aT1uLnV0aWwuYnl0ZXNUb0hleChlKTpyLm9yZGVyLmxlbmd0aD4wJiYoaT1yLm9yZGVyWzBdKSxudWxsIT09aSYmaSBpbiByLmNhY2hlKWZvcih2YXIgbyBpbiB0PXIuY2FjaGVbaV0sZGVsZXRlIHIuY2FjaGVbaV0sci5vcmRlcilpZihyLm9yZGVyW29dPT09aSl7ci5vcmRlci5zcGxpY2UobywxKTticmVha31yZXR1cm4gdH0sci5zZXRTZXNzaW9uPWZ1bmN0aW9uKGUsdCl7aWYoci5vcmRlci5sZW5ndGg9PT1yLmNhcGFjaXR5KXt2YXIgaT1yLm9yZGVyLnNoaWZ0KCk7ZGVsZXRlIHIuY2FjaGVbaV19aT1uLnV0aWwuYnl0ZXNUb0hleChlKTtyLm9yZGVyLnB1c2goaSksci5jYWNoZVtpXT10fX1yZXR1cm4gcn0sYy5jcmVhdGVDb25uZWN0aW9uPWZ1bmN0aW9uKGUpe3ZhciB0PW51bGw7dD1lLmNhU3RvcmU/bi51dGlsLmlzQXJyYXkoZS5jYVN0b3JlKT9uLnBraS5jcmVhdGVDYVN0b3JlKGUuY2FTdG9yZSk6ZS5jYVN0b3JlOm4ucGtpLmNyZWF0ZUNhU3RvcmUoKTt2YXIgcj1lLmNpcGhlclN1aXRlc3x8bnVsbDtpZihudWxsPT09cilmb3IodmFyIGkgaW4gcj1bXSxjLkNpcGhlclN1aXRlcylyLnB1c2goYy5DaXBoZXJTdWl0ZXNbaV0pO3ZhciBvPWUuc2VydmVyP2MuQ29ubmVjdGlvbkVuZC5zZXJ2ZXI6Yy5Db25uZWN0aW9uRW5kLmNsaWVudCxhPWUuc2Vzc2lvbkNhY2hlP2MuY3JlYXRlU2Vzc2lvbkNhY2hlKGUuc2Vzc2lvbkNhY2hlKTpudWxsLHM9e3ZlcnNpb246e21ham9yOmMuVmVyc2lvbi5tYWpvcixtaW5vcjpjLlZlcnNpb24ubWlub3J9LGVudGl0eTpvLHNlc3Npb25JZDplLnNlc3Npb25JZCxjYVN0b3JlOnQsc2Vzc2lvbkNhY2hlOmEsY2lwaGVyU3VpdGVzOnIsY29ubmVjdGVkOmUuY29ubmVjdGVkLHZpcnR1YWxIb3N0OmUudmlydHVhbEhvc3R8fG51bGwsdmVyaWZ5Q2xpZW50OmUudmVyaWZ5Q2xpZW50fHwhMSx2ZXJpZnk6ZS52ZXJpZnl8fGZ1bmN0aW9uKGUsdCxyLG4pe3JldHVybiB0fSx2ZXJpZnlPcHRpb25zOmUudmVyaWZ5T3B0aW9uc3x8e30sZ2V0Q2VydGlmaWNhdGU6ZS5nZXRDZXJ0aWZpY2F0ZXx8bnVsbCxnZXRQcml2YXRlS2V5OmUuZ2V0UHJpdmF0ZUtleXx8bnVsbCxnZXRTaWduYXR1cmU6ZS5nZXRTaWduYXR1cmV8fG51bGwsaW5wdXQ6bi51dGlsLmNyZWF0ZUJ1ZmZlcigpLHRsc0RhdGE6bi51dGlsLmNyZWF0ZUJ1ZmZlcigpLGRhdGE6bi51dGlsLmNyZWF0ZUJ1ZmZlcigpLHRsc0RhdGFSZWFkeTplLnRsc0RhdGFSZWFkeSxkYXRhUmVhZHk6ZS5kYXRhUmVhZHksaGVhcnRiZWF0UmVjZWl2ZWQ6ZS5oZWFydGJlYXRSZWNlaXZlZCxjbG9zZWQ6ZS5jbG9zZWQsZXJyb3I6ZnVuY3Rpb24odCxyKXtyLm9yaWdpbj1yLm9yaWdpbnx8KHQuZW50aXR5PT09Yy5Db25uZWN0aW9uRW5kLmNsaWVudD8iY2xpZW50Ijoic2VydmVyIiksci5zZW5kJiYoYy5xdWV1ZSh0LGMuY3JlYXRlQWxlcnQodCxyLmFsZXJ0KSksYy5mbHVzaCh0KSk7dmFyIG49ITEhPT1yLmZhdGFsO24mJih0LmZhaWw9ITApLGUuZXJyb3IodCxyKSxuJiZ0LmNsb3NlKCExKX0sZGVmbGF0ZTplLmRlZmxhdGV8fG51bGwsaW5mbGF0ZTplLmluZmxhdGV8fG51bGwscmVzZXQ6ZnVuY3Rpb24oZSl7cy52ZXJzaW9uPXttYWpvcjpjLlZlcnNpb24ubWFqb3IsbWlub3I6Yy5WZXJzaW9uLm1pbm9yfSxzLnJlY29yZD1udWxsLHMuc2Vzc2lvbj1udWxsLHMucGVlckNlcnRpZmljYXRlPW51bGwscy5zdGF0ZT17cGVuZGluZzpudWxsLGN1cnJlbnQ6bnVsbH0scy5leHBlY3Q9KHMuZW50aXR5LGMuQ29ubmVjdGlvbkVuZC5jbGllbnQsMCkscy5mcmFnbWVudGVkPW51bGwscy5yZWNvcmRzPVtdLHMub3Blbj0hMSxzLmhhbmRzaGFrZXM9MCxzLmhhbmRzaGFraW5nPSExLHMuaXNDb25uZWN0ZWQ9ITEscy5mYWlsPSEoZXx8InVuZGVmaW5lZCI9PT10eXBlb2YgZSkscy5pbnB1dC5jbGVhcigpLHMudGxzRGF0YS5jbGVhcigpLHMuZGF0YS5jbGVhcigpLHMuc3RhdGUuY3VycmVudD1jLmNyZWF0ZUNvbm5lY3Rpb25TdGF0ZShzKX19O3MucmVzZXQoKTtyZXR1cm4gcy5oYW5kc2hha2U9ZnVuY3Rpb24oZSl7aWYocy5lbnRpdHkhPT1jLkNvbm5lY3Rpb25FbmQuY2xpZW50KXMuZXJyb3Iocyx7bWVzc2FnZToiQ2Fubm90IGluaXRpYXRlIGhhbmRzaGFrZSBhcyBhIHNlcnZlci4iLGZhdGFsOiExfSk7ZWxzZSBpZihzLmhhbmRzaGFraW5nKXMuZXJyb3Iocyx7bWVzc2FnZToiSGFuZHNoYWtlIGFscmVhZHkgaW4gcHJvZ3Jlc3MuIixmYXRhbDohMX0pO2Vsc2V7cy5mYWlsJiYhcy5vcGVuJiYwPT09cy5oYW5kc2hha2VzJiYocy5mYWlsPSExKSxzLmhhbmRzaGFraW5nPSEwO3ZhciB0PW51bGw7KGU9ZXx8IiIpLmxlbmd0aD4wJiYocy5zZXNzaW9uQ2FjaGUmJih0PXMuc2Vzc2lvbkNhY2hlLmdldFNlc3Npb24oZSkpLG51bGw9PT10JiYoZT0iIikpLDA9PT1lLmxlbmd0aCYmcy5zZXNzaW9uQ2FjaGUmJm51bGwhPT0odD1zLnNlc3Npb25DYWNoZS5nZXRTZXNzaW9uKCkpJiYoZT10LmlkKSxzLnNlc3Npb249e2lkOmUsdmVyc2lvbjpudWxsLGNpcGhlclN1aXRlOm51bGwsY29tcHJlc3Npb25NZXRob2Q6bnVsbCxzZXJ2ZXJDZXJ0aWZpY2F0ZTpudWxsLGNlcnRpZmljYXRlUmVxdWVzdDpudWxsLGNsaWVudENlcnRpZmljYXRlOm51bGwsc3A6e30sbWQ1Om4ubWQubWQ1LmNyZWF0ZSgpLHNoYTE6bi5tZC5zaGExLmNyZWF0ZSgpfSx0JiYocy52ZXJzaW9uPXQudmVyc2lvbixzLnNlc3Npb24uc3A9dC5zcCkscy5zZXNzaW9uLnNwLmNsaWVudF9yYW5kb209Yy5jcmVhdGVSYW5kb20oKS5nZXRCeXRlcygpLHMub3Blbj0hMCxjLnF1ZXVlKHMsYy5jcmVhdGVSZWNvcmQocyx7dHlwZTpjLkNvbnRlbnRUeXBlLmhhbmRzaGFrZSxkYXRhOmMuY3JlYXRlQ2xpZW50SGVsbG8ocyl9KSksYy5mbHVzaChzKX19LHMucHJvY2Vzcz1mdW5jdGlvbihlKXt2YXIgdD0wO3JldHVybiBlJiZzLmlucHV0LnB1dEJ5dGVzKGUpLHMuZmFpbHx8KG51bGwhPT1zLnJlY29yZCYmcy5yZWNvcmQucmVhZHkmJnMucmVjb3JkLmZyYWdtZW50LmlzRW1wdHkoKSYmKHMucmVjb3JkPW51bGwpLG51bGw9PT1zLnJlY29yZCYmKHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9MCxyPWUuaW5wdXQsaT1yLmxlbmd0aCgpO2lmKGk8NSl0PTUtaTtlbHNle2UucmVjb3JkPXt0eXBlOnIuZ2V0Qnl0ZSgpLHZlcnNpb246e21ham9yOnIuZ2V0Qnl0ZSgpLG1pbm9yOnIuZ2V0Qnl0ZSgpfSxsZW5ndGg6ci5nZXRJbnQxNigpLGZyYWdtZW50Om4udXRpbC5jcmVhdGVCdWZmZXIoKSxyZWFkeTohMX07dmFyIG89ZS5yZWNvcmQudmVyc2lvbi5tYWpvcj09PWUudmVyc2lvbi5tYWpvcjtvJiZlLnNlc3Npb24mJmUuc2Vzc2lvbi52ZXJzaW9uJiYobz1lLnJlY29yZC52ZXJzaW9uLm1pbm9yPT09ZS52ZXJzaW9uLm1pbm9yKSxvfHxlLmVycm9yKGUse21lc3NhZ2U6IkluY29tcGF0aWJsZSBUTFMgdmVyc2lvbi4iLHNlbmQ6ITAsYWxlcnQ6e2xldmVsOmMuQWxlcnQuTGV2ZWwuZmF0YWwsZGVzY3JpcHRpb246Yy5BbGVydC5EZXNjcmlwdGlvbi5wcm90b2NvbF92ZXJzaW9ufX0pfXJldHVybiB0fShzKSkscy5mYWlsfHxudWxsPT09cy5yZWNvcmR8fHMucmVjb3JkLnJlYWR5fHwodD1mdW5jdGlvbihlKXt2YXIgdD0wLHI9ZS5pbnB1dCxuPXIubGVuZ3RoKCk7bjxlLnJlY29yZC5sZW5ndGg/dD1lLnJlY29yZC5sZW5ndGgtbjooZS5yZWNvcmQuZnJhZ21lbnQucHV0Qnl0ZXMoci5nZXRCeXRlcyhlLnJlY29yZC5sZW5ndGgpKSxyLmNvbXBhY3QoKSxlLnN0YXRlLmN1cnJlbnQucmVhZC51cGRhdGUoZSxlLnJlY29yZCkmJihudWxsIT09ZS5mcmFnbWVudGVkJiYoZS5mcmFnbWVudGVkLnR5cGU9PT1lLnJlY29yZC50eXBlPyhlLmZyYWdtZW50ZWQuZnJhZ21lbnQucHV0QnVmZmVyKGUucmVjb3JkLmZyYWdtZW50KSxlLnJlY29yZD1lLmZyYWdtZW50ZWQpOmUuZXJyb3IoZSx7bWVzc2FnZToiSW52YWxpZCBmcmFnbWVudGVkIHJlY29yZC4iLHNlbmQ6ITAsYWxlcnQ6e2xldmVsOmMuQWxlcnQuTGV2ZWwuZmF0YWwsZGVzY3JpcHRpb246Yy5BbGVydC5EZXNjcmlwdGlvbi51bmV4cGVjdGVkX21lc3NhZ2V9fSkpLGUucmVjb3JkLnJlYWR5PSEwKSk7cmV0dXJuIHR9KHMpKSwhcy5mYWlsJiZudWxsIT09cy5yZWNvcmQmJnMucmVjb3JkLnJlYWR5JiZmdW5jdGlvbihlLHQpe3ZhciByPXQudHlwZS1jLkNvbnRlbnRUeXBlLmNoYW5nZV9jaXBoZXJfc3BlYyxuPU9bZS5lbnRpdHldW2UuZXhwZWN0XTtyIGluIG4/bltyXShlLHQpOmMuaGFuZGxlVW5leHBlY3RlZChlLHQpfShzLHMucmVjb3JkKSksdH0scy5wcmVwYXJlPWZ1bmN0aW9uKGUpe3JldHVybiBjLnF1ZXVlKHMsYy5jcmVhdGVSZWNvcmQocyx7dHlwZTpjLkNvbnRlbnRUeXBlLmFwcGxpY2F0aW9uX2RhdGEsZGF0YTpuLnV0aWwuY3JlYXRlQnVmZmVyKGUpfSkpLGMuZmx1c2gocyl9LHMucHJlcGFyZUhlYXJ0YmVhdFJlcXVlc3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSBpbnN0YW5jZW9mIG4udXRpbC5CeXRlQnVmZmVyJiYoZT1lLmJ5dGVzKCkpLCJ1bmRlZmluZWQiPT09dHlwZW9mIHQmJih0PWUubGVuZ3RoKSxzLmV4cGVjdGVkSGVhcnRiZWF0UGF5bG9hZD1lLGMucXVldWUocyxjLmNyZWF0ZVJlY29yZChzLHt0eXBlOmMuQ29udGVudFR5cGUuaGVhcnRiZWF0LGRhdGE6Yy5jcmVhdGVIZWFydGJlYXQoYy5IZWFydGJlYXRNZXNzYWdlVHlwZS5oZWFydGJlYXRfcmVxdWVzdCxlLHQpfSkpLGMuZmx1c2gocyl9LHMuY2xvc2U9ZnVuY3Rpb24oZSl7aWYoIXMuZmFpbCYmcy5zZXNzaW9uQ2FjaGUmJnMuc2Vzc2lvbil7dmFyIHQ9e2lkOnMuc2Vzc2lvbi5pZCx2ZXJzaW9uOnMuc2Vzc2lvbi52ZXJzaW9uLHNwOnMuc2Vzc2lvbi5zcH07dC5zcC5rZXlzPW51bGwscy5zZXNzaW9uQ2FjaGUuc2V0U2Vzc2lvbih0LmlkLHQpfXMub3BlbiYmKHMub3Blbj0hMSxzLmlucHV0LmNsZWFyKCksKHMuaXNDb25uZWN0ZWR8fHMuaGFuZHNoYWtpbmcpJiYocy5pc0Nvbm5lY3RlZD1zLmhhbmRzaGFraW5nPSExLGMucXVldWUocyxjLmNyZWF0ZUFsZXJ0KHMse2xldmVsOmMuQWxlcnQuTGV2ZWwud2FybmluZyxkZXNjcmlwdGlvbjpjLkFsZXJ0LkRlc2NyaXB0aW9uLmNsb3NlX25vdGlmeX0pKSxjLmZsdXNoKHMpKSxzLmNsb3NlZChzKSkscy5yZXNldChlKX0sc30sZS5leHBvcnRzPW4udGxzPW4udGxzfHx7fSxjKSJmdW5jdGlvbiIhPT10eXBlb2YgY1tLXSYmKG4udGxzW0tdPWNbS10pO24udGxzLnByZl90bHMxPWksbi50bHMuaG1hY19zaGExPWZ1bmN0aW9uKGUsdCxyKXt2YXIgaT1uLmhtYWMuY3JlYXRlKCk7aS5zdGFydCgiU0hBMSIsZSk7dmFyIG89bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO3JldHVybiBvLnB1dEludDMyKHRbMF0pLG8ucHV0SW50MzIodFsxXSksby5wdXRCeXRlKHIudHlwZSksby5wdXRCeXRlKHIudmVyc2lvbi5tYWpvciksby5wdXRCeXRlKHIudmVyc2lvbi5taW5vciksby5wdXRJbnQxNihyLmxlbmd0aCksby5wdXRCeXRlcyhyLmZyYWdtZW50LmJ5dGVzKCkpLGkudXBkYXRlKG8uZ2V0Qnl0ZXMoKSksaS5kaWdlc3QoKS5nZXRCeXRlcygpfSxuLnRscy5jcmVhdGVTZXNzaW9uQ2FjaGU9Yy5jcmVhdGVTZXNzaW9uQ2FjaGUsbi50bHMuY3JlYXRlQ29ubmVjdGlvbj1jLmNyZWF0ZUNvbm5lY3Rpb259LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDYpO3IoNjUpLHIoOTApLHIoMzQ3KSxyKDEwNikscigyMjMpLHIoMzUzKSxyKDIyNikscigxNjMpLHIoMTApLHIoMjI1KTt2YXIgaT1uLmFzbjEsbz1lLmV4cG9ydHM9bi5wa2k9bi5wa2l8fHt9O28ucGVtVG9EZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9bi5wZW0uZGVjb2RlKGUpWzBdO2lmKHQucHJvY1R5cGUmJiJFTkNSWVBURUQiPT09dC5wcm9jVHlwZS50eXBlKXRocm93IG5ldyBFcnJvcigiQ291bGQgbm90IGNvbnZlcnQgUEVNIHRvIERFUjsgUEVNIGlzIGVuY3J5cHRlZC4iKTtyZXR1cm4gbi51dGlsLmNyZWF0ZUJ1ZmZlcih0LmJvZHkpfSxvLnByaXZhdGVLZXlGcm9tUGVtPWZ1bmN0aW9uKGUpe3ZhciB0PW4ucGVtLmRlY29kZShlKVswXTtpZigiUFJJVkFURSBLRVkiIT09dC50eXBlJiYiUlNBIFBSSVZBVEUgS0VZIiE9PXQudHlwZSl7dmFyIHI9bmV3IEVycm9yKCdDb3VsZCBub3QgY29udmVydCBwcml2YXRlIGtleSBmcm9tIFBFTTsgUEVNIGhlYWRlciB0eXBlIGlzIG5vdCAiUFJJVkFURSBLRVkiIG9yICJSU0EgUFJJVkFURSBLRVkiLicpO3Rocm93IHIuaGVhZGVyVHlwZT10LnR5cGUscn1pZih0LnByb2NUeXBlJiYiRU5DUllQVEVEIj09PXQucHJvY1R5cGUudHlwZSl0aHJvdyBuZXcgRXJyb3IoIkNvdWxkIG5vdCBjb252ZXJ0IHByaXZhdGUga2V5IGZyb20gUEVNOyBQRU0gaXMgZW5jcnlwdGVkLiIpO3ZhciBhPWkuZnJvbURlcih0LmJvZHkpO3JldHVybiBvLnByaXZhdGVLZXlGcm9tQXNuMShhKX0sby5wcml2YXRlS2V5VG9QZW09ZnVuY3Rpb24oZSx0KXt2YXIgcj17dHlwZToiUlNBIFBSSVZBVEUgS0VZIixib2R5OmkudG9EZXIoby5wcml2YXRlS2V5VG9Bc24xKGUpKS5nZXRCeXRlcygpfTtyZXR1cm4gbi5wZW0uZW5jb2RlKHIse21heGxpbmU6dH0pfSxvLnByaXZhdGVLZXlJbmZvVG9QZW09ZnVuY3Rpb24oZSx0KXt2YXIgcj17dHlwZToiUFJJVkFURSBLRVkiLGJvZHk6aS50b0RlcihlKS5nZXRCeXRlcygpfTtyZXR1cm4gbi5wZW0uZW5jb2RlKHIse21heGxpbmU6dH0pfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNik7aWYocig4OSkscig2NSkscigxNjIpLHIoNjYpLHIoOTApLHIoMjIzKSxyKDEwNikscig1MikscigzNTApLHIoMTYzKSxyKDEwKSwidW5kZWZpbmVkIj09PXR5cGVvZiBpKXZhciBpPW4uanNibi5CaWdJbnRlZ2VyO3ZhciBvPW4uYXNuMSxhPW4ucGtpPW4ucGtpfHx7fTtlLmV4cG9ydHM9YS5wYmU9bi5wYmU9bi5wYmV8fHt9O3ZhciBzPWEub2lkcyx1PXtuYW1lOiJFbmNyeXB0ZWRQcml2YXRlS2V5SW5mbyIsdGFnQ2xhc3M6by5DbGFzcy5VTklWRVJTQUwsdHlwZTpvLlR5cGUuU0VRVUVOQ0UsY29uc3RydWN0ZWQ6ITAsdmFsdWU6W3tuYW1lOiJFbmNyeXB0ZWRQcml2YXRlS2V5SW5mby5lbmNyeXB0aW9uQWxnb3JpdGhtIix0YWdDbGFzczpvLkNsYXNzLlVOSVZFUlNBTCx0eXBlOm8uVHlwZS5TRVFVRU5DRSxjb25zdHJ1Y3RlZDohMCx2YWx1ZTpbe25hbWU6IkFsZ29yaXRobUlkZW50aWZpZXIuYWxnb3JpdGhtIix0YWdDbGFzczpvLkNsYXNzLlVOSVZFUlNBTCx0eXBlOm8uVHlwZS5PSUQsY29uc3RydWN0ZWQ6ITEsY2FwdHVyZToiZW5jcnlwdGlvbk9pZCJ9LHtuYW1lOiJBbGdvcml0aG1JZGVudGlmaWVyLnBhcmFtZXRlcnMiLHRhZ0NsYXNzOm8uQ2xhc3MuVU5JVkVSU0FMLHR5cGU6by5UeXBlLlNFUVVFTkNFLGNvbnN0cnVjdGVkOiEwLGNhcHR1cmVBc24xOiJlbmNyeXB0aW9uUGFyYW1zIn1dfSx7bmFtZToiRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8uZW5jcnlwdGVkRGF0YSIsdGFnQ2xhc3M6by5DbGFzcy5VTklWRVJTQUwsdHlwZTpvLlR5cGUuT0NURVRTVFJJTkcsY29uc3RydWN0ZWQ6ITEsY2FwdHVyZToiZW5jcnlwdGVkRGF0YSJ9XX0sYz17bmFtZToiUEJFUzJBbGdvcml0aG1zIix0YWdDbGFzczpvLkNsYXNzLlVOSVZFUlNBTCx0eXBlOm8uVHlwZS5TRVFVRU5DRSxjb25zdHJ1Y3RlZDohMCx2YWx1ZTpbe25hbWU6IlBCRVMyQWxnb3JpdGhtcy5rZXlEZXJpdmF0aW9uRnVuYyIsdGFnQ2xhc3M6by5DbGFzcy5VTklWRVJTQUwsdHlwZTpvLlR5cGUuU0VRVUVOQ0UsY29uc3RydWN0ZWQ6ITAsdmFsdWU6W3tuYW1lOiJQQkVTMkFsZ29yaXRobXMua2V5RGVyaXZhdGlvbkZ1bmMub2lkIix0YWdDbGFzczpvLkNsYXNzLlVOSVZFUlNBTCx0eXBlOm8uVHlwZS5PSUQsY29uc3RydWN0ZWQ6ITEsY2FwdHVyZToia2RmT2lkIn0se25hbWU6IlBCRVMyQWxnb3JpdGhtcy5wYXJhbXMiLHRhZ0NsYXNzOm8uQ2xhc3MuVU5JVkVSU0FMLHR5cGU6by5UeXBlLlNFUVVFTkNFLGNvbnN0cnVjdGVkOiEwLHZhbHVlOlt7bmFtZToiUEJFUzJBbGdvcml0aG1zLnBhcmFtcy5zYWx0Iix0YWdDbGFzczpvLkNsYXNzLlVOSVZFUlNBTCx0eXBlOm8uVHlwZS5PQ1RFVFNUUklORyxjb25zdHJ1Y3RlZDohMSxjYXB0dXJlOiJrZGZTYWx0In0se25hbWU6IlBCRVMyQWxnb3JpdGhtcy5wYXJhbXMuaXRlcmF0aW9uQ291bnQiLHRhZ0NsYXNzOm8uQ2xhc3MuVU5JVkVSU0FMLHR5cGU6by5UeXBlLklOVEVHRVIsY29uc3RydWN0ZWQ6ITEsY2FwdHVyZToia2RmSXRlcmF0aW9uQ291bnQifSx7bmFtZToiUEJFUzJBbGdvcml0aG1zLnBhcmFtcy5rZXlMZW5ndGgiLHRhZ0NsYXNzOm8uQ2xhc3MuVU5JVkVSU0FMLHR5cGU6by5UeXBlLklOVEVHRVIsY29uc3RydWN0ZWQ6ITEsb3B0aW9uYWw6ITAsY2FwdHVyZToia2V5TGVuZ3RoIn0se25hbWU6IlBCRVMyQWxnb3JpdGhtcy5wYXJhbXMucHJmIix0YWdDbGFzczpvLkNsYXNzLlVOSVZFUlNBTCx0eXBlOm8uVHlwZS5TRVFVRU5DRSxjb25zdHJ1Y3RlZDohMCxvcHRpb25hbDohMCx2YWx1ZTpbe25hbWU6IlBCRVMyQWxnb3JpdGhtcy5wYXJhbXMucHJmLmFsZ29yaXRobSIsdGFnQ2xhc3M6by5DbGFzcy5VTklWRVJTQUwsdHlwZTpvLlR5cGUuT0lELGNvbnN0cnVjdGVkOiExLGNhcHR1cmU6InByZk9pZCJ9XX1dfV19LHtuYW1lOiJQQkVTMkFsZ29yaXRobXMuZW5jcnlwdGlvblNjaGVtZSIsdGFnQ2xhc3M6by5DbGFzcy5VTklWRVJTQUwsdHlwZTpvLlR5cGUuU0VRVUVOQ0UsY29uc3RydWN0ZWQ6ITAsdmFsdWU6W3tuYW1lOiJQQkVTMkFsZ29yaXRobXMuZW5jcnlwdGlvblNjaGVtZS5vaWQiLHRhZ0NsYXNzOm8uQ2xhc3MuVU5JVkVSU0FMLHR5cGU6by5UeXBlLk9JRCxjb25zdHJ1Y3RlZDohMSxjYXB0dXJlOiJlbmNPaWQifSx7bmFtZToiUEJFUzJBbGdvcml0aG1zLmVuY3J5cHRpb25TY2hlbWUuaXYiLHRhZ0NsYXNzOm8uQ2xhc3MuVU5JVkVSU0FMLHR5cGU6by5UeXBlLk9DVEVUU1RSSU5HLGNvbnN0cnVjdGVkOiExLGNhcHR1cmU6ImVuY0l2In1dfV19LGY9e25hbWU6InBrY3MtMTJQYmVQYXJhbXMiLHRhZ0NsYXNzOm8uQ2xhc3MuVU5JVkVSU0FMLHR5cGU6by5UeXBlLlNFUVVFTkNFLGNvbnN0cnVjdGVkOiEwLHZhbHVlOlt7bmFtZToicGtjcy0xMlBiZVBhcmFtcy5zYWx0Iix0YWdDbGFzczpvLkNsYXNzLlVOSVZFUlNBTCx0eXBlOm8uVHlwZS5PQ1RFVFNUUklORyxjb25zdHJ1Y3RlZDohMSxjYXB0dXJlOiJzYWx0In0se25hbWU6InBrY3MtMTJQYmVQYXJhbXMuaXRlcmF0aW9ucyIsdGFnQ2xhc3M6by5DbGFzcy5VTklWRVJTQUwsdHlwZTpvLlR5cGUuSU5URUdFUixjb25zdHJ1Y3RlZDohMSxjYXB0dXJlOiJpdGVyYXRpb25zIn1dfTtmdW5jdGlvbiBsKGUsdCl7cmV0dXJuIGUuc3RhcnQoKS51cGRhdGUodCkuZGlnZXN0KCkuZ2V0Qnl0ZXMoKX1mdW5jdGlvbiBoKGUpe3ZhciB0O2lmKGUpe2lmKCEodD1hLm9pZHNbby5kZXJUb09pZChlKV0pKXt2YXIgcj1uZXcgRXJyb3IoIlVuc3VwcG9ydGVkIFBSRiBPSUQuIik7dGhyb3cgci5vaWQ9ZSxyLnN1cHBvcnRlZD1bImhtYWNXaXRoU0hBMSIsImhtYWNXaXRoU0hBMjI0IiwiaG1hY1dpdGhTSEEyNTYiLCJobWFjV2l0aFNIQTM4NCIsImhtYWNXaXRoU0hBNTEyIl0scn19ZWxzZSB0PSJobWFjV2l0aFNIQTEiO3JldHVybiBwKHQpfWZ1bmN0aW9uIHAoZSl7dmFyIHQ9bi5tZDtzd2l0Y2goZSl7Y2FzZSJobWFjV2l0aFNIQTIyNCI6dD1uLm1kLnNoYTUxMjtjYXNlImhtYWNXaXRoU0hBMSI6Y2FzZSJobWFjV2l0aFNIQTI1NiI6Y2FzZSJobWFjV2l0aFNIQTM4NCI6Y2FzZSJobWFjV2l0aFNIQTUxMiI6ZT1lLnN1YnN0cig4KS50b0xvd2VyQ2FzZSgpO2JyZWFrO2RlZmF1bHQ6dmFyIHI9bmV3IEVycm9yKCJVbnN1cHBvcnRlZCBQUkYgYWxnb3JpdGhtLiIpO3Rocm93IHIuYWxnb3JpdGhtPWUsci5zdXBwb3J0ZWQ9WyJobWFjV2l0aFNIQTEiLCJobWFjV2l0aFNIQTIyNCIsImhtYWNXaXRoU0hBMjU2IiwiaG1hY1dpdGhTSEEzODQiLCJobWFjV2l0aFNIQTUxMiJdLHJ9aWYoIXR8fCEoZSBpbiB0KSl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gaGFzaCBhbGdvcml0aG06ICIrZSk7cmV0dXJuIHRbZV0uY3JlYXRlKCl9YS5lbmNyeXB0UHJpdmF0ZUtleUluZm89ZnVuY3Rpb24oZSx0LHIpeyhyPXJ8fHt9KS5zYWx0U2l6ZT1yLnNhbHRTaXplfHw4LHIuY291bnQ9ci5jb3VudHx8MjA0OCxyLmFsZ29yaXRobT1yLmFsZ29yaXRobXx8ImFlczEyOCIsci5wcmZBbGdvcml0aG09ci5wcmZBbGdvcml0aG18fCJzaGExIjt2YXIgaSx1LGMsZj1uLnJhbmRvbS5nZXRCeXRlc1N5bmMoci5zYWx0U2l6ZSksbD1yLmNvdW50LGg9by5pbnRlZ2VyVG9EZXIobCk7aWYoMD09PXIuYWxnb3JpdGhtLmluZGV4T2YoImFlcyIpfHwiZGVzIj09PXIuYWxnb3JpdGhtKXt2YXIgZCx5LGc7c3dpdGNoKHIuYWxnb3JpdGhtKXtjYXNlImFlczEyOCI6aT0xNixkPTE2LHk9c1siYWVzMTI4LUNCQyJdLGc9bi5hZXMuY3JlYXRlRW5jcnlwdGlvbkNpcGhlcjticmVhaztjYXNlImFlczE5MiI6aT0yNCxkPTE2LHk9c1siYWVzMTkyLUNCQyJdLGc9bi5hZXMuY3JlYXRlRW5jcnlwdGlvbkNpcGhlcjticmVhaztjYXNlImFlczI1NiI6aT0zMixkPTE2LHk9c1siYWVzMjU2LUNCQyJdLGc9bi5hZXMuY3JlYXRlRW5jcnlwdGlvbkNpcGhlcjticmVhaztjYXNlImRlcyI6aT04LGQ9OCx5PXMuZGVzQ0JDLGc9bi5kZXMuY3JlYXRlRW5jcnlwdGlvbkNpcGhlcjticmVhaztkZWZhdWx0OnRocm93KEU9bmV3IEVycm9yKCJDYW5ub3QgZW5jcnlwdCBwcml2YXRlIGtleS4gVW5rbm93biBlbmNyeXB0aW9uIGFsZ29yaXRobS4iKSkuYWxnb3JpdGhtPXIuYWxnb3JpdGhtLEV9dmFyIHY9ImhtYWNXaXRoIityLnByZkFsZ29yaXRobS50b1VwcGVyQ2FzZSgpLG09cCh2KSxiPW4ucGtjczUucGJrZGYyKHQsZixsLGksbSksXz1uLnJhbmRvbS5nZXRCeXRlc1N5bmMoZCk7KHc9ZyhiKSkuc3RhcnQoXyksdy51cGRhdGUoby50b0RlcihlKSksdy5maW5pc2goKSxjPXcub3V0cHV0LmdldEJ5dGVzKCk7dmFyIFM9ZnVuY3Rpb24oZSx0LHIsaSl7dmFyIHM9by5jcmVhdGUoby5DbGFzcy5VTklWRVJTQUwsby5UeXBlLlNFUVVFTkNFLCEwLFtvLmNyZWF0ZShvLkNsYXNzLlVOSVZFUlNBTCxvLlR5cGUuT0NURVRTVFJJTkcsITEsZSksby5jcmVhdGUoby5DbGFzcy5VTklWRVJTQUwsby5UeXBlLklOVEVHRVIsITEsdC5nZXRCeXRlcygpKV0pOyJobWFjV2l0aFNIQTEiIT09aSYmcy52YWx1ZS5wdXNoKG8uY3JlYXRlKG8uQ2xhc3MuVU5JVkVSU0FMLG8uVHlwZS5JTlRFR0VSLCExLG4udXRpbC5oZXhUb0J5dGVzKHIudG9TdHJpbmcoMTYpKSksby5jcmVhdGUoby5DbGFzcy5VTklWRVJTQUwsby5UeXBlLlNFUVVFTkNFLCEwLFtvLmNyZWF0ZShvLkNsYXNzLlVOSVZFUlNBTCxvLlR5cGUuT0lELCExLG8ub2lkVG9EZXIoYS5vaWRzW2ldKS5nZXRCeXRlcygpKSxvLmNyZWF0ZShvLkNsYXNzLlVOSVZFUlNBTCxvLlR5cGUuTlVMTCwhMSwiIildKSk7cmV0dXJuIHN9KGYsaCxpLHYpO3U9by5jcmVhdGUoby5DbGFzcy5VTklWRVJTQUwsby5UeXBlLlNFUVVFTkNFLCEwLFtvLmNyZWF0ZShvLkNsYXNzLlVOSVZFUlNBTCxvLlR5cGUuT0lELCExLG8ub2lkVG9EZXIocy5wa2NzNVBCRVMyKS5nZXRCeXRlcygpKSxvLmNyZWF0ZShvLkNsYXNzLlVOSVZFUlNBTCxvLlR5cGUuU0VRVUVOQ0UsITAsW28uY3JlYXRlKG8uQ2xhc3MuVU5JVkVSU0FMLG8uVHlwZS5TRVFVRU5DRSwhMCxbby5jcmVhdGUoby5DbGFzcy5VTklWRVJTQUwsby5UeXBlLk9JRCwhMSxvLm9pZFRvRGVyKHMucGtjczVQQktERjIpLmdldEJ5dGVzKCkpLFNdKSxvLmNyZWF0ZShvLkNsYXNzLlVOSVZFUlNBTCxvLlR5cGUuU0VRVUVOQ0UsITAsW28uY3JlYXRlKG8uQ2xhc3MuVU5JVkVSU0FMLG8uVHlwZS5PSUQsITEsby5vaWRUb0Rlcih5KS5nZXRCeXRlcygpKSxvLmNyZWF0ZShvLkNsYXNzLlVOSVZFUlNBTCxvLlR5cGUuT0NURVRTVFJJTkcsITEsXyldKV0pXSl9ZWxzZXt2YXIgRTtpZigiM2RlcyIhPT1yLmFsZ29yaXRobSl0aHJvdyhFPW5ldyBFcnJvcigiQ2Fubm90IGVuY3J5cHQgcHJpdmF0ZSBrZXkuIFVua25vd24gZW5jcnlwdGlvbiBhbGdvcml0aG0uIikpLmFsZ29yaXRobT1yLmFsZ29yaXRobSxFO2k9MjQ7dmFyIHcsVD1uZXcgbi51dGlsLkJ5dGVCdWZmZXIoZik7Yj1hLnBiZS5nZW5lcmF0ZVBrY3MxMktleSh0LFQsMSxsLGkpLF89YS5wYmUuZ2VuZXJhdGVQa2NzMTJLZXkodCxULDIsbCxpKTsodz1uLmRlcy5jcmVhdGVFbmNyeXB0aW9uQ2lwaGVyKGIpKS5zdGFydChfKSx3LnVwZGF0ZShvLnRvRGVyKGUpKSx3LmZpbmlzaCgpLGM9dy5vdXRwdXQuZ2V0Qnl0ZXMoKSx1PW8uY3JlYXRlKG8uQ2xhc3MuVU5JVkVSU0FMLG8uVHlwZS5TRVFVRU5DRSwhMCxbby5jcmVhdGUoby5DbGFzcy5VTklWRVJTQUwsby5UeXBlLk9JRCwhMSxvLm9pZFRvRGVyKHNbInBiZVdpdGhTSEFBbmQzLUtleVRyaXBsZURFUy1DQkMiXSkuZ2V0Qnl0ZXMoKSksby5jcmVhdGUoby5DbGFzcy5VTklWRVJTQUwsby5UeXBlLlNFUVVFTkNFLCEwLFtvLmNyZWF0ZShvLkNsYXNzLlVOSVZFUlNBTCxvLlR5cGUuT0NURVRTVFJJTkcsITEsZiksby5jcmVhdGUoby5DbGFzcy5VTklWRVJTQUwsby5UeXBlLklOVEVHRVIsITEsaC5nZXRCeXRlcygpKV0pXSl9cmV0dXJuIG8uY3JlYXRlKG8uQ2xhc3MuVU5JVkVSU0FMLG8uVHlwZS5TRVFVRU5DRSwhMCxbdSxvLmNyZWF0ZShvLkNsYXNzLlVOSVZFUlNBTCxvLlR5cGUuT0NURVRTVFJJTkcsITEsYyldKX0sYS5kZWNyeXB0UHJpdmF0ZUtleUluZm89ZnVuY3Rpb24oZSx0KXt2YXIgcj1udWxsLGk9e30scz1bXTtpZighby52YWxpZGF0ZShlLHUsaSxzKSl7dmFyIGM9bmV3IEVycm9yKCJDYW5ub3QgcmVhZCBlbmNyeXB0ZWQgcHJpdmF0ZSBrZXkuIEFTTi4xIG9iamVjdCBpcyBub3QgYSBzdXBwb3J0ZWQgRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8uIik7dGhyb3cgYy5lcnJvcnM9cyxjfXZhciBmPW8uZGVyVG9PaWQoaS5lbmNyeXB0aW9uT2lkKSxsPWEucGJlLmdldENpcGhlcihmLGkuZW5jcnlwdGlvblBhcmFtcyx0KSxoPW4udXRpbC5jcmVhdGVCdWZmZXIoaS5lbmNyeXB0ZWREYXRhKTtyZXR1cm4gbC51cGRhdGUoaCksbC5maW5pc2goKSYmKHI9by5mcm9tRGVyKGwub3V0cHV0KSkscn0sYS5lbmNyeXB0ZWRQcml2YXRlS2V5VG9QZW09ZnVuY3Rpb24oZSx0KXt2YXIgcj17dHlwZToiRU5DUllQVEVEIFBSSVZBVEUgS0VZIixib2R5Om8udG9EZXIoZSkuZ2V0Qnl0ZXMoKX07cmV0dXJuIG4ucGVtLmVuY29kZShyLHttYXhsaW5lOnR9KX0sYS5lbmNyeXB0ZWRQcml2YXRlS2V5RnJvbVBlbT1mdW5jdGlvbihlKXt2YXIgdD1uLnBlbS5kZWNvZGUoZSlbMF07aWYoIkVOQ1JZUFRFRCBQUklWQVRFIEtFWSIhPT10LnR5cGUpe3ZhciByPW5ldyBFcnJvcignQ291bGQgbm90IGNvbnZlcnQgZW5jcnlwdGVkIHByaXZhdGUga2V5IGZyb20gUEVNOyBQRU0gaGVhZGVyIHR5cGUgaXMgIkVOQ1JZUFRFRCBQUklWQVRFIEtFWSIuJyk7dGhyb3cgci5oZWFkZXJUeXBlPXQudHlwZSxyfWlmKHQucHJvY1R5cGUmJiJFTkNSWVBURUQiPT09dC5wcm9jVHlwZS50eXBlKXRocm93IG5ldyBFcnJvcigiQ291bGQgbm90IGNvbnZlcnQgZW5jcnlwdGVkIHByaXZhdGUga2V5IGZyb20gUEVNOyBQRU0gaXMgZW5jcnlwdGVkLiIpO3JldHVybiBvLmZyb21EZXIodC5ib2R5KX0sYS5lbmNyeXB0UnNhUHJpdmF0ZUtleT1mdW5jdGlvbihlLHQscil7aWYoIShyPXJ8fHt9KS5sZWdhY3kpe3ZhciBpPWEud3JhcFJzYVByaXZhdGVLZXkoYS5wcml2YXRlS2V5VG9Bc24xKGUpKTtyZXR1cm4gaT1hLmVuY3J5cHRQcml2YXRlS2V5SW5mbyhpLHQsciksYS5lbmNyeXB0ZWRQcml2YXRlS2V5VG9QZW0oaSl9dmFyIHMsdSxjLGY7c3dpdGNoKHIuYWxnb3JpdGhtKXtjYXNlImFlczEyOCI6cz0iQUVTLTEyOC1DQkMiLGM9MTYsdT1uLnJhbmRvbS5nZXRCeXRlc1N5bmMoMTYpLGY9bi5hZXMuY3JlYXRlRW5jcnlwdGlvbkNpcGhlcjticmVhaztjYXNlImFlczE5MiI6cz0iQUVTLTE5Mi1DQkMiLGM9MjQsdT1uLnJhbmRvbS5nZXRCeXRlc1N5bmMoMTYpLGY9bi5hZXMuY3JlYXRlRW5jcnlwdGlvbkNpcGhlcjticmVhaztjYXNlImFlczI1NiI6cz0iQUVTLTI1Ni1DQkMiLGM9MzIsdT1uLnJhbmRvbS5nZXRCeXRlc1N5bmMoMTYpLGY9bi5hZXMuY3JlYXRlRW5jcnlwdGlvbkNpcGhlcjticmVhaztjYXNlIjNkZXMiOnM9IkRFUy1FREUzLUNCQyIsYz0yNCx1PW4ucmFuZG9tLmdldEJ5dGVzU3luYyg4KSxmPW4uZGVzLmNyZWF0ZUVuY3J5cHRpb25DaXBoZXI7YnJlYWs7Y2FzZSJkZXMiOnM9IkRFUy1DQkMiLGM9OCx1PW4ucmFuZG9tLmdldEJ5dGVzU3luYyg4KSxmPW4uZGVzLmNyZWF0ZUVuY3J5cHRpb25DaXBoZXI7YnJlYWs7ZGVmYXVsdDp2YXIgbD1uZXcgRXJyb3IoJ0NvdWxkIG5vdCBlbmNyeXB0IFJTQSBwcml2YXRlIGtleTsgdW5zdXBwb3J0ZWQgZW5jcnlwdGlvbiBhbGdvcml0aG0gIicrci5hbGdvcml0aG0rJyIuJyk7dGhyb3cgbC5hbGdvcml0aG09ci5hbGdvcml0aG0sbH12YXIgaD1mKG4ucGJlLm9wZW5zc2xEZXJpdmVCeXRlcyh0LHUuc3Vic3RyKDAsOCksYykpO2guc3RhcnQodSksaC51cGRhdGUoby50b0RlcihhLnByaXZhdGVLZXlUb0FzbjEoZSkpKSxoLmZpbmlzaCgpO3ZhciBwPXt0eXBlOiJSU0EgUFJJVkFURSBLRVkiLHByb2NUeXBlOnt2ZXJzaW9uOiI0Iix0eXBlOiJFTkNSWVBURUQifSxkZWtJbmZvOnthbGdvcml0aG06cyxwYXJhbWV0ZXJzOm4udXRpbC5ieXRlc1RvSGV4KHUpLnRvVXBwZXJDYXNlKCl9LGJvZHk6aC5vdXRwdXQuZ2V0Qnl0ZXMoKX07cmV0dXJuIG4ucGVtLmVuY29kZShwKX0sYS5kZWNyeXB0UnNhUHJpdmF0ZUtleT1mdW5jdGlvbihlLHQpe3ZhciByPW51bGwsaT1uLnBlbS5kZWNvZGUoZSlbMF07aWYoIkVOQ1JZUFRFRCBQUklWQVRFIEtFWSIhPT1pLnR5cGUmJiJQUklWQVRFIEtFWSIhPT1pLnR5cGUmJiJSU0EgUFJJVkFURSBLRVkiIT09aS50eXBlKXRocm93KGM9bmV3IEVycm9yKCdDb3VsZCBub3QgY29udmVydCBwcml2YXRlIGtleSBmcm9tIFBFTTsgUEVNIGhlYWRlciB0eXBlIGlzIG5vdCAiRU5DUllQVEVEIFBSSVZBVEUgS0VZIiwgIlBSSVZBVEUgS0VZIiwgb3IgIlJTQSBQUklWQVRFIEtFWSIuJykpLmhlYWRlclR5cGU9YyxjO2lmKGkucHJvY1R5cGUmJiJFTkNSWVBURUQiPT09aS5wcm9jVHlwZS50eXBlKXt2YXIgcyx1O3M="
}

github/deemru/w8io/169f3d6 
2.69 ms