3NCUbh7cABzRyEMEXAcGCAozSuxvUTf75ms · data · 2.7c767379.chunk.js_64
{
"2.7c767379.chunk.js_64": "base64:c3BvbnNlLG4uZGlzY29ubmVjdD1mdW5jdGlvbigpe24ucG9ydF8mJm4ucG9ydF8ucG9ydF8mJihuLnBvcnRfLnBvcnRfLmRpc2Nvbm5lY3QoKSxuLnBvcnRfPW51bGwpfSxuLmdldE1lc3NhZ2VQb3J0PWZ1bmN0aW9uKGUpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgY2hyb21lJiZjaHJvbWUucnVudGltZSl7dmFyIHQ9e3R5cGU6bi5NZXNzYWdlVHlwZXMuVTJGX1NJR05fUkVRVUVTVCxzaWduUmVxdWVzdHM6W119O2Nocm9tZS5ydW50aW1lLnNlbmRNZXNzYWdlKG4uRVhURU5TSU9OX0lELHQsZnVuY3Rpb24oKXtjaHJvbWUucnVudGltZS5sYXN0RXJyb3I/bi5nZXRJZnJhbWVQb3J0XyhlKTpuLmdldENocm9tZVJ1bnRpbWVQb3J0XyhlKX0pfWVsc2Ugbi5nZXRJZnJhbWVQb3J0XyhlKX0sbi5nZXRDaHJvbWVSdW50aW1lUG9ydF89ZnVuY3Rpb24oZSl7dmFyIHQ9Y2hyb21lLnJ1bnRpbWUuY29ubmVjdChuLkVYVEVOU0lPTl9JRCx7aW5jbHVkZVRsc0NoYW5uZWxJZDohMH0pO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtlKG51bGwsbmV3IG4uV3JhcHBlZENocm9tZVJ1bnRpbWVQb3J0Xyh0KSl9LDApfSxuLldyYXBwZWRDaHJvbWVSdW50aW1lUG9ydF89ZnVuY3Rpb24oZSl7dGhpcy5wb3J0Xz1lfSxuLldyYXBwZWRDaHJvbWVSdW50aW1lUG9ydF8ucHJvdG90eXBlLnBvc3RNZXNzYWdlPWZ1bmN0aW9uKGUpe3RoaXMucG9ydF8ucG9zdE1lc3NhZ2UoZSl9LG4uV3JhcHBlZENocm9tZVJ1bnRpbWVQb3J0Xy5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihlLHQpe3ZhciByPWUudG9Mb3dlckNhc2UoKTsibWVzc2FnZSI9PXJ8fCJvbm1lc3NhZ2UiPT1yP3RoaXMucG9ydF8ub25NZXNzYWdlLmFkZExpc3RlbmVyKGZ1bmN0aW9uKGUpe3Qoe2RhdGE6ZX0pfSk6Y29uc29sZS5lcnJvcigiV3JhcHBlZENocm9tZVJ1bnRpbWVQb3J0IG9ubHkgc3VwcG9ydHMgb25NZXNzYWdlIil9LG4uZ2V0SWZyYW1lUG9ydF89ZnVuY3Rpb24oZSl7dmFyIHQ9ImNocm9tZS1leHRlbnNpb246Ly8iK24uRVhURU5TSU9OX0lELHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7ci5zcmM9dCsiL3UyZi1jb21tcy5odG1sIixyLnNldEF0dHJpYnV0ZSgic3R5bGUiLCJkaXNwbGF5Om5vbmUiKSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHIpO3ZhciBpPSExLG89bmV3IE1lc3NhZ2VDaGFubmVsO28ucG9ydDEuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZnVuY3Rpb24gdChyKXsicmVhZHkiPT1yLmRhdGE/KG8ucG9ydDEucmVtb3ZlRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsdCksaXx8KGk9ITAsZShudWxsLG8ucG9ydDEpKSk6Y29uc29sZS5lcnJvcignRmlyc3QgZXZlbnQgb24gaWZyYW1lIHBvcnQgd2FzIG5vdCAicmVhZHkiJyl9KSxvLnBvcnQxLnN0YXJ0KCksci5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixmdW5jdGlvbigpe3IuY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZSgiaW5pdCIsdCxbby5wb3J0Ml0pfSksc2V0VGltZW91dChmdW5jdGlvbigpe2l8fChpPSEwLGUobmV3IEVycm9yKCJJRnJhbWUgZXh0ZW5zaW9uIG5vdCBzdXBwb3J0ZWQiKSkpfSwyMDApfSxuLkVYVEVOU0lPTl9USU1FT1VUX1NFQz0zMCxuLnBvcnRfPW51bGwsbi53YWl0aW5nRm9yUG9ydF89W10sbi5yZXFDb3VudGVyXz0wLG4uY2FsbGJhY2tNYXBfPXt9LG4uZ2V0UG9ydFNpbmdsZXRvbl89ZnVuY3Rpb24oZSl7bi5wb3J0Xz9lKG51bGwsbi5wb3J0Xyk6KDA9PW4ud2FpdGluZ0ZvclBvcnRfLmxlbmd0aCYmbi5nZXRNZXNzYWdlUG9ydChmdW5jdGlvbihlLHQpe2ZvcihlfHwobi5wb3J0Xz10LG4ucG9ydF8uYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsbi5yZXNwb25zZUhhbmRsZXJfKSk7bi53YWl0aW5nRm9yUG9ydF8ubGVuZ3RoOyluLndhaXRpbmdGb3JQb3J0Xy5zaGlmdCgpKGUsdCl9KSxuLndhaXRpbmdGb3JQb3J0Xy5wdXNoKGUpKX0sbi5yZXNwb25zZUhhbmRsZXJfPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZGF0YSxyPXQucmVxdWVzdElkO2lmKHImJm4uY2FsbGJhY2tNYXBfW3JdKXt2YXIgaT1uLmNhbGxiYWNrTWFwX1tyXTtkZWxldGUgbi5jYWxsYmFja01hcF9bcl0saShudWxsLHQucmVzcG9uc2VEYXRhKX1lbHNlIGNvbnNvbGUuZXJyb3IoIlVua25vd24gb3IgbWlzc2luZyByZXF1ZXN0SWQgaW4gcmVzcG9uc2UuIil9LG4uaXNTdXBwb3J0ZWQ9ZnVuY3Rpb24oZSl7bi5nZXRQb3J0U2luZ2xldG9uXyhmdW5jdGlvbih0LHIpe2UoIXQpfSl9LG4uc2lnbj1mdW5jdGlvbihlLHQscil7bi5nZXRQb3J0U2luZ2xldG9uXyhmdW5jdGlvbihpLG8pe2lmKGkpcmV0dXJuIHQoaSk7dmFyIGE9KytuLnJlcUNvdW50ZXJfO24uY2FsbGJhY2tNYXBfW2FdPXQ7dmFyIHM9e3R5cGU6bi5NZXNzYWdlVHlwZXMuVTJGX1NJR05fUkVRVUVTVCxzaWduUmVxdWVzdHM6ZSx0aW1lb3V0U2Vjb25kczoidW5kZWZpbmVkIiE9PXR5cGVvZiByP3I6bi5FWFRFTlNJT05fVElNRU9VVF9TRUMscmVxdWVzdElkOmF9O28ucG9zdE1lc3NhZ2Uocyl9KX0sbi5yZWdpc3Rlcj1mdW5jdGlvbihlLHQscixpKXtuLmdldFBvcnRTaW5nbGV0b25fKGZ1bmN0aW9uKG8sYSl7aWYobylyZXR1cm4gcihvKTt2YXIgcz0rK24ucmVxQ291bnRlcl87bi5jYWxsYmFja01hcF9bc109cjt2YXIgdT17dHlwZTpuLk1lc3NhZ2VUeXBlcy5VMkZfUkVHSVNURVJfUkVRVUVTVCxzaWduUmVxdWVzdHM6dCxyZWdpc3RlclJlcXVlc3RzOmUsdGltZW91dFNlY29uZHM6InVuZGVmaW5lZCIhPT10eXBlb2YgaT9pOm4uRVhURU5TSU9OX1RJTUVPVVRfU0VDLHJlcXVlc3RJZDpzfTthLnBvc3RNZXNzYWdlKHUpfSl9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbihlKXt2YXIgbj1yKDIzMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuZ2V0QWx0U3RhdHVzTWVzc2FnZT10LlN0YXR1c0NvZGVzPXQuVHJhbnNwb3J0U3RhdHVzRXJyb3I9dC5UcmFuc3BvcnRFcnJvcj12b2lkIDA7dmFyIGksbz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49dFtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4ua2V5LG4pfX1yZXR1cm4gZnVuY3Rpb24odCxyLG4pe3JldHVybiByJiZlKHQucHJvdG90eXBlLHIpLG4mJmUodCxuKSx0fX0oKSxhPXIoMTIwKSxzPShpPWEpJiZpLl9fZXNNb2R1bGU/aTp7ZGVmYXVsdDppfSx1PXIoNDU0KTtmdW5jdGlvbiBjKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihlLHIpe3JldHVybiBmdW5jdGlvbiBuKGksbyl7dHJ5e3ZhciBhPXRbaV0obykscz1hLnZhbHVlfWNhdGNoKHUpe3JldHVybiB2b2lkIHIodSl9aWYoIWEuZG9uZSlyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHMpLnRoZW4oZnVuY3Rpb24oZSl7bigibmV4dCIsZSl9LGZ1bmN0aW9uKGUpe24oInRocm93IixlKX0pO2Uocyl9KCJuZXh0Iil9KX19dC5UcmFuc3BvcnRFcnJvcj11LlRyYW5zcG9ydEVycm9yLHQuVHJhbnNwb3J0U3RhdHVzRXJyb3I9dS5UcmFuc3BvcnRTdGF0dXNFcnJvcix0LlN0YXR1c0NvZGVzPXUuU3RhdHVzQ29kZXMsdC5nZXRBbHRTdGF0dXNNZXNzYWdlPXUuZ2V0QWx0U3RhdHVzTWVzc2FnZTt2YXIgZj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt2YXIgcj10aGlzOyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLHQpLHRoaXMuZXhjaGFuZ2VUaW1lb3V0PTNlNCx0aGlzLl9ldmVudHM9bmV3IHMuZGVmYXVsdCx0aGlzLnNlbmQ9ZnVuY3Rpb24oKXt2YXIgdD1jKG4ubWFyayhmdW5jdGlvbiB0KGksbyxhLHMpe3ZhciBjLGYsbD1hcmd1bWVudHMubGVuZ3RoPjQmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XT9hcmd1bWVudHNbNF06ZS5hbGxvYygwKSxoPWFyZ3VtZW50cy5sZW5ndGg+NSYmdm9pZCAwIT09YXJndW1lbnRzWzVdP2FyZ3VtZW50c1s1XTpbdS5TdGF0dXNDb2Rlcy5PS107cmV0dXJuIG4ud3JhcChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDppZighKGwubGVuZ3RoPj0yNTYpKXt0Lm5leHQ9MjticmVha310aHJvdyBuZXcgdS5UcmFuc3BvcnRFcnJvcigiZGF0YS5sZW5ndGggZXhjZWVkIDI1NiBieXRlcyBsaW1pdC4gR290OiAiK2wubGVuZ3RoLCJEYXRhTGVuZ3RoVG9vQmlnIik7Y2FzZSAyOnJldHVybiB0Lm5leHQ9NCxyLmV4Y2hhbmdlKGUuY29uY2F0KFtlLmZyb20oW2ksbyxhLHNdKSxlLmZyb20oW2wubGVuZ3RoXSksbF0pKTtjYXNlIDQ6aWYoYz10LnNlbnQsZj1jLnJlYWRVSW50MTZCRShjLmxlbmd0aC0yKSxoLnNvbWUoZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1mfSkpe3QubmV4dD04O2JyZWFrfXRocm93IG5ldyB1LlRyYW5zcG9ydFN0YXR1c0Vycm9yKGYpO2Nhc2UgODpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsYyk7Y2FzZSA5OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSx0LHIpfSkpO3JldHVybiBmdW5jdGlvbihlLHIsbixpKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpLHRoaXMuZXhjaGFuZ2VBdG9taWNJbXBsPWZ1bmN0aW9uKCl7dmFyIGU9YyhuLm1hcmsoZnVuY3Rpb24gZSh0KXt2YXIgaSxvLGE7cmV0dXJuIG4ud3JhcChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZighci5leGNoYW5nZUJ1c3lQcm9taXNlKXtlLm5leHQ9MjticmVha310aHJvdyBuZXcgdS5UcmFuc3BvcnRFcnJvcigiVHJhbnNwb3J0IHJhY2UgY29uZGl0aW9uIiwiUmFjZUNvbmRpdGlvbiIpO2Nhc2UgMjpyZXR1cm4gaT12b2lkIDAsbz1uZXcgUHJvbWlzZShmdW5jdGlvbihlKXtpPWV9KSxyLmV4Y2hhbmdlQnVzeVByb21pc2U9byxlLnByZXY9NSxlLm5leHQ9OCx0KCk7Y2FzZSA4OnJldHVybiBhPWUuc2VudCxlLmFicnVwdCgicmV0dXJuIixhKTtjYXNlIDEwOnJldHVybiBlLnByZXY9MTAsaSYmaSgpLHIuZXhjaGFuZ2VCdXN5UHJvbWlzZT1udWxsLGUuZmluaXNoKDEwKTtjYXNlIDE0OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSxlLHIsW1s1LCwxMCwxNF1dKX0pKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSx0aGlzLl9hcHBBUElsb2NrPW51bGx9cmV0dXJuIG8odCxbe2tleToib24iLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dGhpcy5fZXZlbnRzLm9uKGUsdCl9fSx7a2V5OiJvZmYiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dGhpcy5fZXZlbnRzLnJlbW92ZUxpc3RlbmVyKGUsdCl9fSx7a2V5OiJlbWl0Iix2YWx1ZTpmdW5jdGlvbihlKXtmb3IodmFyIHQscj1hcmd1bWVudHMubGVuZ3RoLG49QXJyYXkocj4xP3ItMTowKSxpPTE7aTxyO2krKyluW2ktMV09YXJndW1lbnRzW2ldOyh0PXRoaXMuX2V2ZW50cykuZW1pdC5hcHBseSh0LFtlXS5jb25jYXQoZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKHZhciB0PTAscj1BcnJheShlLmxlbmd0aCk7dDxlLmxlbmd0aDt0Kyspclt0XT1lW3RdO3JldHVybiByfXJldHVybiBBcnJheS5mcm9tKGUpfShuKSkpfX0se2tleToic2V0RGVidWdNb2RlIix2YWx1ZTpmdW5jdGlvbigpe2NvbnNvbGUud2Fybigic2V0RGVidWdNb2RlIGlzIGRlcHJlY2F0ZWQuIHVzZSBAbGVkZ2VyaHEvbG9ncyBpbnN0ZWFkLiBObyBsb2dzIGFyZSBlbWl0dGVkIGluIHRoaXMgYW55bW9yZS4iKX19LHtrZXk6InNldEV4Y2hhbmdlVGltZW91dCIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5leGNoYW5nZVRpbWVvdXQ9ZX19LHtrZXk6ImRlY29yYXRlQXBwQVBJTWV0aG9kcyIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPSEwLGk9ITEsbz12b2lkIDA7dHJ5e2Zvcih2YXIgYSxzPXRbU3ltYm9sLml0ZXJhdG9yXSgpOyEobj0oYT1zLm5leHQoKSkuZG9uZSk7bj0hMCl7dmFyIHU9YS52YWx1ZTtlW3VdPXRoaXMuZGVjb3JhdGVBcHBBUElNZXRob2QodSxlW3VdLGUscil9fWNhdGNoKGMpe2k9ITAsbz1jfWZpbmFsbHl7dHJ5eyFuJiZzLnJldHVybiYmcy5yZXR1cm4oKX1maW5hbGx5e2lmKGkpdGhyb3cgb319fX0se2tleToiZGVjb3JhdGVBcHBBUElNZXRob2QiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyLGkpe3ZhciBvPXRoaXM7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9YyhuLm1hcmsoZnVuY3Rpb24gYSgpe2Zvcih2YXIgcz1hcmd1bWVudHMubGVuZ3RoLGM9QXJyYXkocyksZj0wO2Y8cztmKyspY1tmXT1hcmd1bWVudHNbZl07dmFyIGw7cmV0dXJuIG4ud3JhcChmdW5jdGlvbihuKXtmb3IoOzspc3dpdGNoKG4ucHJldj1uLm5leHQpe2Nhc2UgMDppZighKGw9by5fYXBwQVBJbG9jaykpe24ubmV4dD0zO2JyZWFrfXJldHVybiBuLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChuZXcgdS5UcmFuc3BvcnRFcnJvcigiTGVkZ2VyIERldmljZSBpcyBidXN5IChsb2NrICIrbCsiKSIsIlRyYW5zcG9ydExvY2tlZCIpKSk7Y2FzZSAzOnJldHVybiBuLnByZXY9MyxvLl9hcHBBUElsb2NrPWUsby5zZXRTY3JhbWJsZUtleShpKSxuLm5leHQ9OCx0LmFwcGx5KHIsYyk7Y2FzZSA4OnJldHVybiBuLmFicnVwdCgicmV0dXJuIixuLnNlbnQpO2Nhc2UgOTpyZXR1cm4gbi5wcmV2PTksby5fYXBwQVBJbG9jaz1udWxsLG4uZmluaXNoKDkpO2Nhc2UgMTI6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19LGEsbyxbWzMsLDksMTJdXSl9KSk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGEuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKX19XSxbe2tleToiY3JlYXRlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06M2UzLHI9YXJndW1lbnRzWzFdO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihuLGkpe3ZhciBvPSExLGE9ZS5saXN0ZW4oe25leHQ6ZnVuY3Rpb24ocil7bz0hMCxhJiZhLnVuc3Vic2NyaWJlKCkscyYmY2xlYXJUaW1lb3V0KHMpLGUub3BlbihyLmRlc2NyaXB0b3IsdCkudGhlbihuLGkpfSxlcnJvcjpmdW5jdGlvbihlKXtzJiZjbGVhclRpbWVvdXQocyksaShlKX0sY29tcGxldGU6ZnVuY3Rpb24oKXtzJiZjbGVhclRpbWVvdXQocyksb3x8aShuZXcgdS5UcmFuc3BvcnRFcnJvcihlLkVycm9yTWVzc2FnZV9Ob0RldmljZUZvdW5kLCJOb0RldmljZUZvdW5kIikpfX0pLHM9cj9zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS51bnN1YnNjcmliZSgpLGkobmV3IHUuVHJhbnNwb3J0RXJyb3IoZS5FcnJvck1lc3NhZ2VfTGlzdGVuVGltZW91dCwiTGlzdGVuVGltZW91dCIpKX0scik6bnVsbH0pfX1dKSx0fSgpO2YuRXJyb3JNZXNzYWdlX0xpc3RlblRpbWVvdXQ9Ik5vIExlZGdlciBkZXZpY2UgZm91bmQgKHRpbWVvdXQpIixmLkVycm9yTWVzc2FnZV9Ob0RldmljZUZvdW5kPSJObyBMZWRnZXIgZGV2aWNlIGZvdW5kIix0LmRlZmF1bHQ9Zn0pLmNhbGwodGhpcyxyKDE4KS5CdWZmZXIpfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj0iZnVuY3Rpb24iPT09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0saT17fSxvPXt9LGE9KHQuYWRkQ3VzdG9tRXJyb3JEZXNlcmlhbGl6ZXI9ZnVuY3Rpb24oZSx0KXtvW2VdPXR9LHQuY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcz1mdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbih0LHIpe09iamVjdC5hc3NpZ24odGhpcyxyKSx0aGlzLm5hbWU9ZSx0aGlzLm1lc3NhZ2U9dHx8ZSx0aGlzLnN0YWNrPShuZXcgRXJyb3IpLnN0YWNrfTtyZXR1cm4gdC5wcm90b3R5cGU9bmV3IEVycm9yLGlbZV09dCx0fSk7dC5kZXNlcmlhbGl6ZUVycm9yPWZ1bmN0aW9uIGUodCl7aWYoIm9iamVjdCI9PT0oInVuZGVmaW5lZCI9PT10eXBlb2YgdD8idW5kZWZpbmVkIjpuKHQpKSYmdCl7dHJ5e3ZhciByPUpTT04ucGFyc2UodC5tZXNzYWdlKTtyLm1lc3NhZ2UmJnIubmFtZSYmKHQ9cil9Y2F0Y2goaCl7fXZhciBzPXZvaWQgMDtpZigic3RyaW5nIj09PXR5cGVvZiB0Lm5hbWUpe3ZhciB1PXQubmFtZSxjPW9bdV07aWYoYylzPWModCk7ZWxzZXt2YXIgZj0iRXJyb3IiPT09dT9FcnJvcjppW3VdO2Z8fChjb25zb2xlLndhcm4oImRlc2VyaWFsaXppbmcgYW4gdW5rbm93biBjbGFzcyAnIit1KyInIiksZj1hKHUpKSxzPU9iamVjdC5jcmVhdGUoZi5wcm90b3R5cGUpO3RyeXtmb3IodmFyIGwgaW4gdCl0Lmhhc093blByb3BlcnR5KGwpJiYoc1tsXT10W2xdKX1jYXRjaChoKXt9fX1lbHNlIHM9bmV3IEVycm9yKHQubWVzc2FnZSk7cmV0dXJuIXMuc3RhY2smJkVycm9yLmNhcHR1cmVTdGFja1RyYWNlJiZFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShzLGUpLHN9cmV0dXJuIG5ldyBFcnJvcihTdHJpbmcodCkpfSx0LnNlcmlhbGl6ZUVycm9yPWZ1bmN0aW9uKGUpe3JldHVybiBlPyJvYmplY3QiPT09KCJ1bmRlZmluZWQiPT09dHlwZW9mIGU/InVuZGVmaW5lZCI6bihlKSk/ZnVuY3Rpb24gZSh0LHIpe3ZhciBpPXt9O3IucHVzaCh0KTt2YXIgbz0hMDt2YXIgYT0hMTt2YXIgcz12b2lkIDA7dHJ5e2Zvcih2YXIgdSxjPU9iamVjdC5rZXlzKHQpW1N5bWJvbC5pdGVyYXRvcl0oKTshKG89KHU9Yy5uZXh0KCkpLmRvbmUpO289ITApe3ZhciBmPXUudmFsdWUsbD10W2ZdOyJmdW5jdGlvbiIhPT10eXBlb2YgbCYmKGwmJiJvYmplY3QiPT09KCJ1bmRlZmluZWQiPT09dHlwZW9mIGw/InVuZGVmaW5lZCI6bihsKSk/LTEhPT1yLmluZGV4T2YodFtmXSk/aVtmXT0iW0NpcmN1bGFyXSI6aVtmXT1lKHRbZl0sci5zbGljZSgwKSk6aVtmXT1sKX19Y2F0Y2goaCl7YT0hMCxzPWh9ZmluYWxseXt0cnl7IW8mJmMucmV0dXJuJiZjLnJldHVybigpfWZpbmFsbHl7aWYoYSl0aHJvdyBzfX0ic3RyaW5nIj09PXR5cGVvZiB0Lm5hbWUmJihpLm5hbWU9dC5uYW1lKTsic3RyaW5nIj09PXR5cGVvZiB0Lm1lc3NhZ2UmJihpLm1lc3NhZ2U9dC5tZXNzYWdlKTsic3RyaW5nIj09PXR5cGVvZiB0LnN0YWNrJiYoaS5zdGFjaz10LnN0YWNrKTtyZXR1cm4gaX0oZSxbXSk6ImZ1bmN0aW9uIj09PXR5cGVvZiBlPyJbRnVuY3Rpb246ICIrKGUubmFtZXx8ImFub255bW91cyIpKyJdIjplOmV9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9MCxuPVtdLGk9KHQubG9nPWZ1bmN0aW9uKGUsdCxpKXt2YXIgbz17dHlwZTplLGlkOlN0cmluZygrK3IpLGRhdGU6bmV3IERhdGV9O3QmJihvLm1lc3NhZ2U9dCksaSYmKG8uZGF0YT1pKSxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PG4ubGVuZ3RoO3QrKyl0cnl7blt0XShlKX1jYXRjaChyKXtjb25zb2xlLmVycm9yKHIpfX0obyl9LHQubGlzdGVuPWZ1bmN0aW9uKGUpe3JldHVybiBuLnB1c2goZSksZnVuY3Rpb24oKXt2YXIgdD1uLmluZGV4T2YoZSk7LTEhPT10JiYoblt0XT1uW24ubGVuZ3RoLTFdLG4ucG9wKCkpfX0pO2UuX19sZWRnZXJMb2dzTGlzdGVuPWl9KS5jYWxsKHRoaXMscigzNCkpfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuLGk9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9uKCl7dmFyIGU9ZnVuY3Rpb24odCxyKXtyZXR1cm4oZT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZSx0KXtlLl9fcHJvdG9fXz10fXx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIgaW4gdCl0Lmhhc093blByb3BlcnR5KHIpJiYoZVtyXT10W3JdKX0pKHQscil9O3JldHVybiBmdW5jdGlvbih0LHIpe2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9yPXR9ZSh0LHIpLHQucHJvdG90eXBlPW51bGw9PT1yP09iamVjdC5jcmVhdGUocik6KG4ucHJvdG90eXBlPXIucHJvdG90eXBlLG5ldyBuKX19KCksbz10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oZSx0LHIsbil7cmV0dXJuIG5ldyhyfHwocj1Qcm9taXNlKSkoZnVuY3Rpb24oaSxvKXtmdW5jdGlvbiBhKGUpe3RyeXt1KG4ubmV4dChlKSl9Y2F0Y2godCl7byh0KX19ZnVuY3Rpb24gcyhlKXt0cnl7dShuLnRocm93KGUpKX1jYXRjaCh0KXtvKHQpfX1mdW5jdGlvbiB1KGUpe2UuZG9uZT9pKGUudmFsdWUpOm5ldyByKGZ1bmN0aW9uKHQpe3QoZS52YWx1ZSl9KS50aGVuKGEscyl9dSgobj1uLmFwcGx5KGUsdHx8W10pKS5uZXh0KCkpfSl9LGE9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oZSx0KXt2YXIgcixuLGksbyxhPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJmlbMF0pdGhyb3cgaVsxXTtyZXR1cm4gaVsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBvPXtuZXh0OnMoMCksdGhyb3c6cygxKSxyZXR1cm46cygyKX0sImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJihvW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLG87ZnVuY3Rpb24gcyhvKXtyZXR1cm4gZnVuY3Rpb24ocyl7cmV0dXJuIGZ1bmN0aW9uKG8pe2lmKHIpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7YTspdHJ5e2lmKHI9MSxuJiYoaT0yJm9bMF0/bi5yZXR1cm46b1swXT9uLnRocm93fHwoKGk9bi5yZXR1cm4pJiZpLmNhbGwobiksMCk6bi5uZXh0KSYmIShpPWkuY2FsbChuLG9bMV0pKS5kb25lKXJldHVybiBpO3N3aXRjaChuPTAsaSYmKG89WzImb1swXSxpLnZhbHVlXSksb1swXSl7Y2FzZSAwOmNhc2UgMTppPW87YnJlYWs7Y2FzZSA0OnJldHVybiBhLmxhYmVsKysse3ZhbHVlOm9bMV0sZG9uZTohMX07Y2FzZSA1OmEubGFiZWwrKyxuPW9bMV0sbz1bMF07Y29udGludWU7Y2FzZSA3Om89YS5vcHMucG9wKCksYS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoIShpPShpPWEudHJ5cykubGVuZ3RoPjAmJmlbaS5sZW5ndGgtMV0pJiYoNj09PW9bMF18fDI9PT1vWzBdKSl7YT0wO2NvbnRpbnVlfWlmKDM9PT1vWzBdJiYoIWl8fG9bMV0+aVswXSYmb1sxXTxpWzNdKSl7YS5sYWJlbD1vWzFdO2JyZWFrfWlmKDY9PT1vWzBdJiZhLmxhYmVsPGlbMV0pe2EubGFiZWw9aVsxXSxpPW87YnJlYWt9aWYoaSYmYS5sYWJlbDxpWzJdKXthLmxhYmVsPWlbMl0sYS5vcHMucHVzaChvKTticmVha31pWzJdJiZhLm9wcy5wb3AoKSxhLnRyeXMucG9wKCk7Y29udGludWV9bz10LmNhbGwoZSxhKX1jYXRjaChzKXtvPVs2LHNdLG49MH1maW5hbGx5e3I9aT0wfWlmKDUmb1swXSl0aHJvdyBvWzFdO3JldHVybnt2YWx1ZTpvWzBdP29bMV06dm9pZCAwLGRvbmU6ITB9fShbbyxzXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBzPXIoMTcwKSx1PXIoODApLGM9cigyMzcpLGY9KChuPXt9KVt1LlNJR05fVFlQRS5BVVRIXT1bMV0sblt1LlNJR05fVFlQRS5NQVRDSEVSX09SREVSU109WzFdLG5bdS5TSUdOX1RZUEUuQ1JFQVRFX09SREVSXT1bMSwyLDNdLG5bdS5TSUdOX1RZUEUuQ0FOQ0VMX09SREVSXT1bMV0sblt1LlNJR05fVFlQRS5DT0lOT01BVF9DT05GSVJNQVRJT05dPVsxXSxuW3UuU0lHTl9UWVBFLklTU1VFXT1bMl0sblt1LlNJR05fVFlQRS5UUkFOU0ZFUl09WzJdLG5bdS5TSUdOX1RZUEUuUkVJU1NVRV09WzJdLG5bdS5TSUdOX1RZUEUuQlVSTl09WzJdLG5bdS5TSUdOX1RZUEUuRVhDSEFOR0VdPVtdLG5bdS5TSUdOX1RZUEUuTEVBU0VdPVsyXSxuW3UuU0lHTl9UWVBFLkNBTkNFTF9MRUFTSU5HXT1bMl0sblt1LlNJR05fVFlQRS5DUkVBVEVfQUxJQVNdPVsyXSxuW3UuU0lHTl9UWVBFLk1BU1NfVFJBTlNGRVJdPVsxXSxuW3UuU0lHTl9UWVBFLkRBVEFdPVsxXSxuW3UuU0lHTl9UWVBFLlNFVF9TQ1JJUFRdPVsxXSxuW3UuU0lHTl9UWVBFLlNQT05TT1JTSElQXT1bMV0sblt1LlNJR05fVFlQRS5TRVRfQVNTRVRfU0NSSVBUXT1bMV0sblt1LlNJR05fVFlQRS5TQ1JJUFRfSU5WT0NBVElPTl09WzFdLG4pLGw9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChyLG4pe3ZhciBpPXIuYWRkcmVzcyxvPXIucHVibGljS2V5LGE9ZS5jYWxsKHRoaXMsbil8fHRoaXM7cmV0dXJuIGEuX29uRGVzdG9yeUNiPVtdLGEuX25lZWREZXN0cm95PSExLGEuaGFuZGxlVXBkYXRlPWZ1bmN0aW9uKGUpe2UubG9ja2VkfHxlLmFjY291bnQmJmUuYWNjb3VudC5hZGRyZXNzPT09YS5fYWRkcmVzc3x8KGEuX25lZWREZXN0cm95PSEwLGEuX29uRGVzdG9yeUNiLmZvckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIGUoKX0pLGEuX29uRGVzdG9yeUNiPVtdLHQub2ZmVXBkYXRlKGEuaGFuZGxlVXBkYXRlKSl9LGEuX2FkZHJlc3M9aSxhLl9wS2V5PW8sdC5faW5pdEV4dGVuc2lvbigpLHQub25VcGRhdGUoYS5oYW5kbGVVcGRhdGUpLGF9cmV0dXJuIGkodCxlKSx0LnByb3RvdHlwZS5pc0F2YWlsYWJsZT1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ITEpLG8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHI7cmV0dXJuIGEodGhpcyxmdW5jdGlvbihuKXtzd2l0Y2gobi5sYWJlbCl7Y2FzZSAwOnJldHVybiBuLnRyeXMucHVzaChbMCwzLCw0XSksWzQsdC5pc0F2YWlsYWJsZSh0aGlzLmdldE5ldHdvcmtCeXRlKCkpXTtjYXNlIDE6cmV0dXJuIG4uc2VudCgpLFs0LHQuX2FwaS5wdWJsaWNTdGF0ZSgpXTtjYXNlIDI6cmV0dXJuIHI9bi5zZW50KCksdC5fdXBkYXRlU3RhdGUociksci5sb2NrZWQ/WzIsZT9Qcm9taXNlLnJlc29sdmUoKTpQcm9taXNlLnJlamVjdCh7Y29kZTo0LG1zZzoiS2VlcGVyIGlzIGxvY2tlZCJ9KV06ci5hY2NvdW50JiZyLmFjY291bnQuYWRkcmVzcz09PXRoaXMuX2FkZHJlc3M/WzIsUHJvbWlzZS5yZXNvbHZlKCldOlszLDRdO2Nhc2UgMzpyZXR1cm4gbi5zZW50KCksWzMsNF07Y2FzZSA0OnJldHVyblsyLFByb21pc2UucmVqZWN0KHtjb2RlOjUsbXNnOiJLZWVwZXIgaGFzIGFub3RoZXIgYWN0aXZlIGFjY291bnQifSldfX0pfSl9LHQucHJvdG90eXBlLmlzTG9ja2VkPWZ1bmN0aW9uKCl7cmV0dXJuIG8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIGEodGhpcyxmdW5jdGlvbihyKXtzd2l0Y2goci5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHQuaXNBdmFpbGFibGUoKV07Y2FzZSAxOnJldHVybiByLnNlbnQoKSxbNCx0Ll9hcGkucHVibGljU3RhdGUoKV07Y2FzZSAyOnJldHVybiBlPXIuc2VudCgpLHQuX3VwZGF0ZVN0YXRlKGUpLGUubG9ja2VkP1syLFByb21pc2UucmVzb2x2ZSgpXTpbMl19fSl9KX0sdC5wcm90b3R5cGUuZ2V0U2lnblZlcnNpb25zPWZ1bmN0aW9uKCl7cmV0dXJuIHQuX3R4VmVyc2lvbn0sdC5wcm90b3R5cGUub25EZXN0cm95PWZ1bmN0aW9uKGUpe2lmKHRoaXMuX25lZWREZXN0cm95KXJldHVybiBlKCk7dGhpcy5fb25EZXN0b3J5Q2IucHVzaChlKX0sdC5wcm90b3R5cGUuZ2V0UHVibGljS2V5PWZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9wS2V5KX0sdC5wcm90b3R5cGUuZ2V0QWRkcmVzcz1mdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYWRkcmVzcyl9LHQucHJvdG90eXBlLmdldFNlZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoRXJyb3IoJ01ldGhvZCAiZ2V0U2VlZCIgaXMgbm90IGF2YWlsYWJsZSEnKSl9LHQucHJvdG90eXBlLnNpZ25SZXF1ZXN0PWZ1bmN0aW9uKGUscixuKXtyZXR1cm4gbyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gYSh0aGlzLGZ1bmN0aW9uKGUpe3N3aXRjaChlLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5pc0F2YWlsYWJsZSghMCldO2Nhc2UgMTpyZXR1cm4gZS5zZW50KCksWzQsdC5fYXBpLnNpZ25SZXF1ZXN0KHQuX3NlcmlhbGl6ZWREYXRhKG4pKV07Y2FzZSAyOnJldHVyblsyLGUuc2VudCgpXX19KX0pfSx0LnByb3RvdHlwZS5zaWduVHJhbnNhY3Rpb249ZnVuY3Rpb24oZSxyLG4pe3JldHVybiBvKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBlLHIsaTtyZXR1cm4gYSh0aGlzLGZ1bmN0aW9uKG8pe3N3aXRjaChvLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5pc0F2YWlsYWJsZSghMCldO2Nhc2UgMTpyZXR1cm4gby5zZW50KCksWzQsdC5fYXBpLnNpZ25UcmFuc2FjdGlvbih0Ll9zZXJpYWxpemVkRGF0YShuKSldO2Nhc2UgMjpyZXR1cm4gZT1vLnNlbnQoKSxyPUpTT04ucGFyc2UoZSksaT1yLnByb29mcyxbMixyLnNpZ25hdHVyZXx8aS5wb3AoKV19fSl9KX0sdC5wcm90b3R5cGUuc2lnbk9yZGVyPWZ1bmN0aW9uKGUscixuKXtyZXR1cm4gbyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgZSxyLGksbztyZXR1cm4gYSh0aGlzLGZ1bmN0aW9uKGEpe3N3aXRjaChhLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5pc0F2YWlsYWJsZSghMCldO2Nhc2UgMTpzd2l0Y2goYS5zZW50KCksbi50eXBlKXtjYXNlIHUuU0lHTl9UWVBFLkNSRUFURV9PUkRFUjplPXQuX2FwaS5zaWduT3JkZXIodC5fc2VyaWFsaXplZERhdGEobikpO2JyZWFrO2Nhc2UgdS5TSUdOX1RZUEUuQ0FOQ0VMX09SREVSOmU9dC5fYXBpLnNpZ25DYW5jZWxPcmRlcih0Ll9zZXJpYWxpemVkRGF0YShuKSk7YnJlYWs7ZGVmYXVsdDpyZXR1cm5bMix0Ll9hcGkuc2lnblJlcXVlc3QodC5fc2VyaWFsaXplZERhdGEobikpXX1yZXR1cm5bNCxlXTtjYXNlIDI6cmV0dXJuIHI9YS5zZW50KCksaT1KU09OLnBhcnNlKHIpLG89aS5wcm9vZnMsWzIsaS5zaWduYXR1cmV8fG8ucG9wKCldfX0pfSl9LHQucHJvdG90eXBlLnNpZ25EYXRhPWZ1bmN0aW9uKGUpe3JldHVybiBvKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBhKHRoaXMsZnVuY3Rpb24oZSl7c3dpdGNoKGUubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmlzQXZhaWxhYmxlKCEwKV07Y2FzZSAxOnJldHVybiBlLnNlbnQoKSxbMixQcm9taXNlLnJlc29sdmUoIiIpXX19KX0pfSx0LnByb3RvdHlwZS5nZXRQcml2YXRlS2V5PWZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmVqZWN0KCJObyBwcml2YXRlIGtleSIpfSx0LmlzQXZhaWxhYmxlPWZ1bmN0aW9uKGUpe3JldHVybiBvKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciByLG47cmV0dXJuIGEodGhpcyxmdW5jdGlvbihpKXtzd2l0Y2goaS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHQuX2luaXRFeHRlbnNpb24oKV07Y2FzZSAxOmlmKGkuc2VudCgpLCF0aGlzLl9hcGkpdGhyb3d7Y29kZTowLG1lc3NhZ2U6Ikluc3RhbGwgV2F2ZXNLZWVwZXIifTtpZighZSYmIXMuQWRhcHRlci5fY29kZSl0aHJvd3tjb2RlOjUsbWVzc2FnZToiU2V0IGFkYXB0ZXIgbmV0d29yayBjb2RlIn07aS5sYWJlbD0yO2Nhc2UgMjpyZXR1cm4gaS50cnlzLnB1c2goWzIsNCwsNV0pLFs0LHRoaXMuX2FwaS5wdWJsaWNTdGF0ZSgpXTtjYXNlIDM6cmV0dXJuIG49aS5zZW50KCksdC5fdXBkYXRlU3RhdGUobiksbi50eFZlcnNpb24mJih0Ll90eFZlcnNpb249bi50eFZlcnNpb24pLFszLDVdO2Nhc2UgNDpyZXR1cm4gaS5zZW50KCkscj17Y29kZToxLG1lc3NhZ2U6Ik5vIHBlcm1pc3Npb25zIn0sWzMsNV07Y2FzZSA1OmlmKCFyJiZuJiYobi5hY2NvdW50P24uYWNjb3VudC5hZGRyZXNzJiZjLmlzVmFsaWRBZGRyZXNzKG4uYWNjb3VudC5hZGRyZXNzLGV8fHMuQWRhcHRlci5fY29kZSl8fChyPXtjb2RlOjMsbWVzc2FnZToiU2VsZWN0ZWQgbmV0d29yayBpbmNvcnJlY3QifSk6cj17Y29kZToyLG1lc3NhZ2U6Ik5vIGFjY291bnRzIGluIHdhdmVza2VlcGVyIn0pLHIpdGhyb3cgcjtyZXR1cm5bMiwhMF19fSl9KX0sdC5nZXRVc2VyTGlzdD1mdW5jdGlvbigpe3JldHVybiBvKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBhKHRoaXMsZnVuY3Rpb24oZSl7c3dpdGNoKGUubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0LmlzQXZhaWxhYmxlKCldO2Nhc2UgMTpyZXR1cm4gZS5zZW50KCksWzIsdC5fYXBpLnB1YmxpY1N0YXRlKCkudGhlbihmdW5jdGlvbihlKXtyZXR1cm4gdC5fdXBkYXRlU3RhdGUoZSksW2UuYWNjb3VudF19KV19fSl9KX0sdC5pbml0T3B0aW9ucz1mdW5jdGlvbihlKXtzLkFkYXB0ZXIuaW5pdE9wdGlvbnMoZSksdGhpcy5zZXRBcGlFeHRlbnNpb24oZS5leHRlbnNpb24pLHRoaXMuX2luaXRFeHRlbnNpb24oKTt0cnl7dGhpcy5fYXBpLnB1YmxpY1N0YXRlKCkudGhlbih0Ll91cGRhdGVTdGF0ZSl9Y2F0Y2gocil7fX0sdC5zZXRBcGlFeHRlbnNpb249ZnVuY3Rpb24oZSl7dmFyIHI7ImZ1bmN0aW9uIj09PXR5cGVvZiBlP3I9ZTplJiYocj1mdW5jdGlvbigpe3JldHVybiBlfSksdC5fZ2V0QXBpQ2I9cn0sdC5vblVwZGF0ZT1mdW5jdGlvbihlKXt0Ll9vblVwZGF0ZUNiLnB1c2goZSl9LHQub2ZmVXBkYXRlPWZ1bmN0aW9uKGUpe3QuX29uVXBkYXRlQ2I9dC5fb25VcGRhdGVDYi5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHQhPT1lfSl9LHQuX3VwZGF0ZVN0YXRlPWZ1bmN0aW9uKGUpe2Zvcih2YXIgcj0wLG49dC5fb25VcGRhdGVDYjtyPG4ubGVuZ3RoO3IrKyl7KDAsbltyXSkoZSl9fSx0Ll9pbml0RXh0ZW5zaW9uPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztpZih0Ll9hcGl8fCF0Ll9nZXRBcGlDYilyZXR1cm4gdC5fYXBpLmluaXRpYWxQcm9taXNlO3ZhciByPXQuX2dldEFwaUNiKCk7cmV0dXJuIHI/ci5pbml0aWFsUHJvbWlzZS50aGVuKGZ1bmN0aW9uKHIpe2UuX2FwaT1yLGUuX2FwaS5vbigidXBkYXRlIix0Ll91cGRhdGVTdGF0ZSksZS5fYXBpLnB1YmxpY1N0YXRlKCkudGhlbihmdW5jdGlvbihlKXtlLnR4VmVyc2lvbiYmKHQuX3R4VmVyc2lvbj1lLnR4VmVyc2lvbiksdC5fdXBkYXRlU3RhdGUoZSl9KX0pOnZvaWQgMH0sdC5fc2VyaWFsaXplZERhdGE9ZnVuY3Rpb24oZSl7cmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZSxmdW5jdGlvbihlLHQpe3JldHVybiB0IGluc3RhbmNlb2YgVWludDhBcnJheT9BcnJheS5mcm9tKHQpOnR9KSl9LHQudHlwZT0id2F2ZXNLZWVwZXIiLHQuX29uVXBkYXRlQ2I9W10sdC5fdHhWZXJzaW9uPWYsdH0ocy5BZGFwdGVyKTt0LldhdmVzS2VlcGVyQWRhcHRlcj1sfSxmdW5jdGlvbihlLHQscil7cig5NDMpLHIoOTQ3KSxyKDk0OCkscig5NDkpLHIoOTUwKSxyKDk1MSkscig5NTIpLHIoOTUzKSxyKDk1NSkscig5NTYpLHIoOTU3KSxyKDk1OCkscig5NTkpLHIoOTYwKSxyKDk2MSkscig5NjIpLHIoOTYzKSxlLmV4cG9ydHM9cigxNTApLk1hdGh9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE2KSxpPXIoNDY1KSxvPU1hdGguc3FydCxhPU1hdGguYWNvc2g7bihuLlMrbi5GKiEoYSYmNzEwPT1NYXRoLmZsb29yKGEoTnVtYmVyLk1BWF9WQUxVRSkpJiZhKDEvMCk9PTEvMCksIk1hdGgiLHthY29zaDpmdW5jdGlvbihlKXtyZXR1cm4oZT0rZSk8MT9OYU46ZT45NDkwNjI2NS42MjQyNTE1Nj9NYXRoLmxvZyhlKStNYXRoLkxOMjppKGUtMStvKGUtMSkqbyhlKzEpKX19KX0sZnVuY3Rpb24oZSx0LHIpe2UuZXhwb3J0cz1yKDQ2MykoIm5hdGl2ZS1mdW5jdGlvbi10by1zdHJpbmciLEZ1bmN0aW9uLnRvU3RyaW5nKX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ITF9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IFR5cGVFcnJvcihlKyIgaXMgbm90IGEgZnVuY3Rpb24hIik7cmV0dXJuIGV9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNiksaT1NYXRoLmFzaW5oO24obi5TK24uRiohKGkmJjEvaSgwKT4wKSwiTWF0aCIse2FzaW5oOmZ1bmN0aW9uIGUodCl7cmV0dXJuIGlzRmluaXRlKHQ9K3QpJiYwIT10P3Q8MD8tZSgtdCk6TWF0aC5sb2codCtNYXRoLnNxcnQodCp0KzEpKTp0fX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNiksaT1NYXRoLmF0YW5oO24obi5TK24uRiohKGkmJjEvaSgtMCk8MCksIk1hdGgiLHthdGFuaDpmdW5jdGlvbihlKXtyZXR1cm4gMD09KGU9K2UpP2U6TWF0aC5sb2coKDErZSkvKDEtZSkpLzJ9fSl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE2KSxpPXIoMjgwKTtuKG4uUywiTWF0aCIse2NicnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGkoZT0rZSkqTWF0aC5wb3coTWF0aC5hYnMoZSksMS8zKX19KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTYpO24obi5TLCJNYXRoIix7Y2x6MzI6ZnVuY3Rpb24oZSl7cmV0dXJuKGU+Pj49MCk/MzEtTWF0aC5mbG9vcihNYXRoLmxvZyhlKy41KSpNYXRoLkxPRzJFKTozMn19KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTYpLGk9TWF0aC5leHA7bihuLlMsIk1hdGgiLHtjb3NoOmZ1bmN0aW9uKGUpe3JldHVybihpKGU9K2UpK2koLWUpKS8yfX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNiksaT1yKDI4MSk7bihuLlMrbi5GKihpIT1NYXRoLmV4cG0xKSwiTWF0aCIse2V4cG0xOml9KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTYpO24obi5TLCJNYXRoIix7ZnJvdW5kOnIoOTU0KX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigyODApLGk9TWF0aC5wb3csbz1pKDIsLTUyKSxhPWkoMiwtMjMpLHM9aSgyLDEyNykqKDItYSksdT1pKDIsLTEyNik7ZS5leHBvcnRzPU1hdGguZnJvdW5kfHxmdW5jdGlvbihlKXt2YXIgdCxyLGk9TWF0aC5hYnMoZSksYz1uKGUpO3JldHVybiBpPHU/YyooaS91L2ErMS9vLTEvbykqdSphOihyPSh0PSgxK2EvbykqaSktKHQtaSkpPnN8fHIhPXI/YyooMS8wKTpjKnJ9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNiksaT1NYXRoLmFicztuKG4uUywiTWF0aCIse2h5cG90OmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByLG4sbz0wLGE9MCxzPWFyZ3VtZW50cy5sZW5ndGgsdT0wO2E8czspdTwocj1pKGFyZ3VtZW50c1thKytdKSk/KG89byoobj11L3IpKm4rMSx1PXIpOm8rPXI+MD8obj1yL3UpKm46cjtyZXR1cm4gdT09PTEvMD8xLzA6dSpNYXRoLnNxcnQobyl9fSl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE2KSxpPU1hdGguaW11bDtuKG4uUytuLkYqcig4NCkoZnVuY3Rpb24oKXtyZXR1cm4tNSE9aSg0Mjk0OTY3Mjk1LDUpfHwyIT1pLmxlbmd0aH0pLCJNYXRoIix7aW11bDpmdW5jdGlvbihlLHQpe3ZhciByPStlLG49K3QsaT02NTUzNSZyLG89NjU1MzUmbjtyZXR1cm4gMHxpKm8rKCg2NTUzNSZyPj4+MTYpKm8raSooNjU1MzUmbj4+PjE2KTw8MTY+Pj4wKX19KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTYpO24obi5TLCJNYXRoIix7bG9nMTA6ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgubG9nKGUpKk1hdGguTE9HMTBFfX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNik7bihuLlMsIk1hdGgiLHtsb2cxcDpyKDQ2NSl9KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTYpO24obi5TLCJNYXRoIix7bG9nMjpmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5sb2coZSkvTWF0aC5MTjJ9fSl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE2KTtuKG4uUywiTWF0aCIse3NpZ246cigyODApfSl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE2KSxpPXIoMjgxKSxvPU1hdGguZXhwO24obi5TK24uRipyKDg0KShmdW5jdGlvbigpe3JldHVybi0yZS0xNyE9IU1hdGguc2luaCgtMmUtMTcpfSksIk1hdGgiLHtzaW5oOmZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLmFicyhlPStlKTwxPyhpKGUpLWkoLWUpKS8yOihvKGUtMSktbygtZS0xKSkqKE1hdGguRS8yKX19KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTYpLGk9cigyODEpLG89TWF0aC5leHA7bihuLlMsIk1hdGgiLHt0YW5oOmZ1bmN0aW9uKGUpe3ZhciB0PWkoZT0rZSkscj1pKC1lKTtyZXR1cm4gdD09MS8wPzE6cj09MS8wPy0xOih0LXIpLyhvKGUpK28oLWUpKX19KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTYpO24obi5TLCJNYXRoIix7dHJ1bmM6ZnVuY3Rpb24oZSl7cmV0dXJuKGU+MD9NYXRoLmZsb29yOk1hdGguY2VpbCkoZSl9fSl9LGZ1bmN0aW9uKGUsdCxyKXtyKDk2NSkscig5NzgpLHIoOTgwKSxyKDk4MSkscig5ODIpLHIoOTgzKSxyKDk4NCkscig5ODUpLHIoOTg2KSxyKDk4Nykscig5ODgpLHIoOTkwKSxlLmV4cG9ydHM9cigxNTApLk51bWJlcn0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDczKSxpPXIoMTkwKSxvPXIoMjgyKSxhPXIoOTY2KSxzPXIoMjc5KSx1PXIoODQpLGM9cig5NzApLmYsZj1yKDQ2NikuZixsPXIoMjc4KS5mLGg9cigyODYpLnRyaW0scD1uLk51bWJlcixkPXAseT1wLnByb3RvdHlwZSxnPSJOdW1iZXIiPT1vKHIoOTc0KSh5KSksdj0idHJpbSJpbiBTdHJpbmcucHJvdG90eXBlLG09ZnVuY3Rpb24oZSl7dmFyIHQ9cyhlLCExKTtpZigic3RyaW5nIj09dHlwZW9mIHQmJnQubGVuZ3RoPjIpe3ZhciByLG4saSxvPSh0PXY/dC50cmltKCk6aCh0LDMpKS5jaGFyQ29kZUF0KDApO2lmKDQzPT09b3x8NDU9PT1vKXtpZig4OD09PShyPXQuY2hhckNvZGVBdCgyKSl8fDEyMD09PXIpcmV0dXJuIE5hTn1lbHNlIGlmKDQ4PT09byl7c3dpdGNoKHQuY2hhckNvZGVBdCgxKSl7Y2FzZSA2NjpjYXNlIDk4Om49MixpPTQ5O2JyZWFrO2Nhc2UgNzk6Y2FzZSAxMTE6bj04LGk9NTU7YnJlYWs7ZGVmYXVsdDpyZXR1cm4rdH1mb3IodmFyIGEsdT10LnNsaWNlKDIpLGM9MCxmPXUubGVuZ3RoO2M8ZjtjKyspaWYoKGE9dS5jaGFyQ29kZUF0KGMpKTw0OHx8YT5pKXJldHVybiBOYU47cmV0dXJuIHBhcnNlSW50KHUsbil9fXJldHVybit0fTtpZighcCgiIDBvMSIpfHwhcCgiMGIxIil8fHAoIisweDEiKSl7cD1mdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPDE/MDplLHI9dGhpcztyZXR1cm4gciBpbnN0YW5jZW9mIHAmJihnP3UoZnVuY3Rpb24oKXt5LnZhbHVlT2YuY2FsbChyKX0pOiJOdW1iZXIiIT1vKHIpKT9hKG5ldyBkKG0odCkpLHIscCk6bSh0KX07Zm9yKHZhciBiLF89cigxMTYpP2MoZCk6Ik1BWF9WQUxVRSxNSU5fVkFMVUUsTmFOLE5FR0FUSVZFX0lORklOSVRZLFBPU0lUSVZFX0lORklOSVRZLEVQU0lMT04saXNGaW5pdGUsaXNJbnRlZ2VyLGlzTmFOLGlzU2FmZUludGVnZXIsTUFYX1NBRkVfSU5URUdFUixNSU5fU0FGRV9JTlRFR0VSLHBhcnNlRmxvYXQscGFyc2VJbnQsaXNJbnRlZ2VyIi5zcGxpdCgiLCIpLFM9MDtfLmxlbmd0aD5TO1MrKylpKGQsYj1fW1NdKSYmIWkocCxiKSYmbChwLGIsZihkLGIpKTtwLnByb3RvdHlwZT15LHkuY29uc3RydWN0b3I9cCxyKDQ2MSkobiwiTnVtYmVyIixwKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDExNSksaT1yKDk2Nykuc2V0O2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7dmFyIG8sYT10LmNvbnN0cnVjdG9yO3JldHVybiBhIT09ciYmImZ1bmN0aW9uIj09dHlwZW9mIGEmJihvPWEucHJvdG90eXBlKSE9PXIucHJvdG90eXBlJiZuKG8pJiZpJiZpKGUsbyksZX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDExNSksaT1yKDE4OSksbz1mdW5jdGlvbihlLHQpe2lmKGkoZSksIW4odCkmJm51bGwhPT10KXRocm93IFR5cGVFcnJvcih0KyI6IGNhbid0IHNldCBhcyBwcm90b3R5cGUhIil9O2UuZXhwb3J0cz17c2V0Ok9iamVjdC5zZXRQcm90b3R5cGVPZnx8KCJfX3Byb3RvX18iaW57fT9mdW5jdGlvbihlLHQsbil7dHJ5eyhuPXIoNDY0KShGdW5jdGlvbi5jYWxsLHIoNDY2KS5mKE9iamVjdC5wcm90b3R5cGUsIl9fcHJvdG9fXyIpLnNldCwyKSkoZSxbXSksdD0hKGUgaW5zdGFuY2VvZiBBcnJheSl9Y2F0Y2goaSl7dD0hMH1yZXR1cm4gZnVuY3Rpb24oZSxyKXtyZXR1cm4gbyhlLHIpLHQ/ZS5fX3Byb3RvX189cjpuKGUsciksZX19KHt9LCExKTp2b2lkIDApLGNoZWNrOm99fSxmdW5jdGlvbihlLHQpe3QuZj17fS5wcm9wZXJ0eUlzRW51bWVyYWJsZX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMjgyKTtlLmV4cG9ydHM9T2JqZWN0KCJ6Iik="
}
Changelog:
{
"2020.04.17 15:43": "base64:c3BvbnNlLG4uZGlzY29ubmVjdD1mdW5jdGlvbigpe24ucG9ydF8mJm4ucG9ydF8ucG9ydF8mJihuLnBvcnRfLnBvcnRfLmRpc2Nvbm5lY3QoKSxuLnBvcnRfPW51bGwpfSxuLmdldE1lc3NhZ2VQb3J0PWZ1bmN0aW9uKGUpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgY2hyb21lJiZjaHJvbWUucnVudGltZSl7dmFyIHQ9e3R5cGU6bi5NZXNzYWdlVHlwZXMuVTJGX1NJR05fUkVRVUVTVCxzaWduUmVxdWVzdHM6W119O2Nocm9tZS5ydW50aW1lLnNlbmRNZXNzYWdlKG4uRVhURU5TSU9OX0lELHQsZnVuY3Rpb24oKXtjaHJvbWUucnVudGltZS5sYXN0RXJyb3I/bi5nZXRJZnJhbWVQb3J0XyhlKTpuLmdldENocm9tZVJ1bnRpbWVQb3J0XyhlKX0pfWVsc2Ugbi5nZXRJZnJhbWVQb3J0XyhlKX0sbi5nZXRDaHJvbWVSdW50aW1lUG9ydF89ZnVuY3Rpb24oZSl7dmFyIHQ9Y2hyb21lLnJ1bnRpbWUuY29ubmVjdChuLkVYVEVOU0lPTl9JRCx7aW5jbHVkZVRsc0NoYW5uZWxJZDohMH0pO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtlKG51bGwsbmV3IG4uV3JhcHBlZENocm9tZVJ1bnRpbWVQb3J0Xyh0KSl9LDApfSxuLldyYXBwZWRDaHJvbWVSdW50aW1lUG9ydF89ZnVuY3Rpb24oZSl7dGhpcy5wb3J0Xz1lfSxuLldyYXBwZWRDaHJvbWVSdW50aW1lUG9ydF8ucHJvdG90eXBlLnBvc3RNZXNzYWdlPWZ1bmN0aW9uKGUpe3RoaXMucG9ydF8ucG9zdE1lc3NhZ2UoZSl9LG4uV3JhcHBlZENocm9tZVJ1bnRpbWVQb3J0Xy5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihlLHQpe3ZhciByPWUudG9Mb3dlckNhc2UoKTsibWVzc2FnZSI9PXJ8fCJvbm1lc3NhZ2UiPT1yP3RoaXMucG9ydF8ub25NZXNzYWdlLmFkZExpc3RlbmVyKGZ1bmN0aW9uKGUpe3Qoe2RhdGE6ZX0pfSk6Y29uc29sZS5lcnJvcigiV3JhcHBlZENocm9tZVJ1bnRpbWVQb3J0IG9ubHkgc3VwcG9ydHMgb25NZXNzYWdlIil9LG4uZ2V0SWZyYW1lUG9ydF89ZnVuY3Rpb24oZSl7dmFyIHQ9ImNocm9tZS1leHRlbnNpb246Ly8iK24uRVhURU5TSU9OX0lELHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7ci5zcmM9dCsiL3UyZi1jb21tcy5odG1sIixyLnNldEF0dHJpYnV0ZSgic3R5bGUiLCJkaXNwbGF5Om5vbmUiKSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHIpO3ZhciBpPSExLG89bmV3IE1lc3NhZ2VDaGFubmVsO28ucG9ydDEuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZnVuY3Rpb24gdChyKXsicmVhZHkiPT1yLmRhdGE/KG8ucG9ydDEucmVtb3ZlRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsdCksaXx8KGk9ITAsZShudWxsLG8ucG9ydDEpKSk6Y29uc29sZS5lcnJvcignRmlyc3QgZXZlbnQgb24gaWZyYW1lIHBvcnQgd2FzIG5vdCAicmVhZHkiJyl9KSxvLnBvcnQxLnN0YXJ0KCksci5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixmdW5jdGlvbigpe3IuY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZSgiaW5pdCIsdCxbby5wb3J0Ml0pfSksc2V0VGltZW91dChmdW5jdGlvbigpe2l8fChpPSEwLGUobmV3IEVycm9yKCJJRnJhbWUgZXh0ZW5zaW9uIG5vdCBzdXBwb3J0ZWQiKSkpfSwyMDApfSxuLkVYVEVOU0lPTl9USU1FT1VUX1NFQz0zMCxuLnBvcnRfPW51bGwsbi53YWl0aW5nRm9yUG9ydF89W10sbi5yZXFDb3VudGVyXz0wLG4uY2FsbGJhY2tNYXBfPXt9LG4uZ2V0UG9ydFNpbmdsZXRvbl89ZnVuY3Rpb24oZSl7bi5wb3J0Xz9lKG51bGwsbi5wb3J0Xyk6KDA9PW4ud2FpdGluZ0ZvclBvcnRfLmxlbmd0aCYmbi5nZXRNZXNzYWdlUG9ydChmdW5jdGlvbihlLHQpe2ZvcihlfHwobi5wb3J0Xz10LG4ucG9ydF8uYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsbi5yZXNwb25zZUhhbmRsZXJfKSk7bi53YWl0aW5nRm9yUG9ydF8ubGVuZ3RoOyluLndhaXRpbmdGb3JQb3J0Xy5zaGlmdCgpKGUsdCl9KSxuLndhaXRpbmdGb3JQb3J0Xy5wdXNoKGUpKX0sbi5yZXNwb25zZUhhbmRsZXJfPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZGF0YSxyPXQucmVxdWVzdElkO2lmKHImJm4uY2FsbGJhY2tNYXBfW3JdKXt2YXIgaT1uLmNhbGxiYWNrTWFwX1tyXTtkZWxldGUgbi5jYWxsYmFja01hcF9bcl0saShudWxsLHQucmVzcG9uc2VEYXRhKX1lbHNlIGNvbnNvbGUuZXJyb3IoIlVua25vd24gb3IgbWlzc2luZyByZXF1ZXN0SWQgaW4gcmVzcG9uc2UuIil9LG4uaXNTdXBwb3J0ZWQ9ZnVuY3Rpb24oZSl7bi5nZXRQb3J0U2luZ2xldG9uXyhmdW5jdGlvbih0LHIpe2UoIXQpfSl9LG4uc2lnbj1mdW5jdGlvbihlLHQscil7bi5nZXRQb3J0U2luZ2xldG9uXyhmdW5jdGlvbihpLG8pe2lmKGkpcmV0dXJuIHQoaSk7dmFyIGE9KytuLnJlcUNvdW50ZXJfO24uY2FsbGJhY2tNYXBfW2FdPXQ7dmFyIHM9e3R5cGU6bi5NZXNzYWdlVHlwZXMuVTJGX1NJR05fUkVRVUVTVCxzaWduUmVxdWVzdHM6ZSx0aW1lb3V0U2Vjb25kczoidW5kZWZpbmVkIiE9PXR5cGVvZiByP3I6bi5FWFRFTlNJT05fVElNRU9VVF9TRUMscmVxdWVzdElkOmF9O28ucG9zdE1lc3NhZ2Uocyl9KX0sbi5yZWdpc3Rlcj1mdW5jdGlvbihlLHQscixpKXtuLmdldFBvcnRTaW5nbGV0b25fKGZ1bmN0aW9uKG8sYSl7aWYobylyZXR1cm4gcihvKTt2YXIgcz0rK24ucmVxQ291bnRlcl87bi5jYWxsYmFja01hcF9bc109cjt2YXIgdT17dHlwZTpuLk1lc3NhZ2VUeXBlcy5VMkZfUkVHSVNURVJfUkVRVUVTVCxzaWduUmVxdWVzdHM6dCxyZWdpc3RlclJlcXVlc3RzOmUsdGltZW91dFNlY29uZHM6InVuZGVmaW5lZCIhPT10eXBlb2YgaT9pOm4uRVhURU5TSU9OX1RJTUVPVVRfU0VDLHJlcXVlc3RJZDpzfTthLnBvc3RNZXNzYWdlKHUpfSl9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbihlKXt2YXIgbj1yKDIzMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuZ2V0QWx0U3RhdHVzTWVzc2FnZT10LlN0YXR1c0NvZGVzPXQuVHJhbnNwb3J0U3RhdHVzRXJyb3I9dC5UcmFuc3BvcnRFcnJvcj12b2lkIDA7dmFyIGksbz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49dFtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4ua2V5LG4pfX1yZXR1cm4gZnVuY3Rpb24odCxyLG4pe3JldHVybiByJiZlKHQucHJvdG90eXBlLHIpLG4mJmUodCxuKSx0fX0oKSxhPXIoMTIwKSxzPShpPWEpJiZpLl9fZXNNb2R1bGU/aTp7ZGVmYXVsdDppfSx1PXIoNDU0KTtmdW5jdGlvbiBjKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihlLHIpe3JldHVybiBmdW5jdGlvbiBuKGksbyl7dHJ5e3ZhciBhPXRbaV0obykscz1hLnZhbHVlfWNhdGNoKHUpe3JldHVybiB2b2lkIHIodSl9aWYoIWEuZG9uZSlyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHMpLnRoZW4oZnVuY3Rpb24oZSl7bigibmV4dCIsZSl9LGZ1bmN0aW9uKGUpe24oInRocm93IixlKX0pO2Uocyl9KCJuZXh0Iil9KX19dC5UcmFuc3BvcnRFcnJvcj11LlRyYW5zcG9ydEVycm9yLHQuVHJhbnNwb3J0U3RhdHVzRXJyb3I9dS5UcmFuc3BvcnRTdGF0dXNFcnJvcix0LlN0YXR1c0NvZGVzPXUuU3RhdHVzQ29kZXMsdC5nZXRBbHRTdGF0dXNNZXNzYWdlPXUuZ2V0QWx0U3RhdHVzTWVzc2FnZTt2YXIgZj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt2YXIgcj10aGlzOyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLHQpLHRoaXMuZXhjaGFuZ2VUaW1lb3V0PTNlNCx0aGlzLl9ldmVudHM9bmV3IHMuZGVmYXVsdCx0aGlzLnNlbmQ9ZnVuY3Rpb24oKXt2YXIgdD1jKG4ubWFyayhmdW5jdGlvbiB0KGksbyxhLHMpe3ZhciBjLGYsbD1hcmd1bWVudHMubGVuZ3RoPjQmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XT9hcmd1bWVudHNbNF06ZS5hbGxvYygwKSxoPWFyZ3VtZW50cy5sZW5ndGg+NSYmdm9pZCAwIT09YXJndW1lbnRzWzVdP2FyZ3VtZW50c1s1XTpbdS5TdGF0dXNDb2Rlcy5PS107cmV0dXJuIG4ud3JhcChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDppZighKGwubGVuZ3RoPj0yNTYpKXt0Lm5leHQ9MjticmVha310aHJvdyBuZXcgdS5UcmFuc3BvcnRFcnJvcigiZGF0YS5sZW5ndGggZXhjZWVkIDI1NiBieXRlcyBsaW1pdC4gR290OiAiK2wubGVuZ3RoLCJEYXRhTGVuZ3RoVG9vQmlnIik7Y2FzZSAyOnJldHVybiB0Lm5leHQ9NCxyLmV4Y2hhbmdlKGUuY29uY2F0KFtlLmZyb20oW2ksbyxhLHNdKSxlLmZyb20oW2wubGVuZ3RoXSksbF0pKTtjYXNlIDQ6aWYoYz10LnNlbnQsZj1jLnJlYWRVSW50MTZCRShjLmxlbmd0aC0yKSxoLnNvbWUoZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1mfSkpe3QubmV4dD04O2JyZWFrfXRocm93IG5ldyB1LlRyYW5zcG9ydFN0YXR1c0Vycm9yKGYpO2Nhc2UgODpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsYyk7Y2FzZSA5OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSx0LHIpfSkpO3JldHVybiBmdW5jdGlvbihlLHIsbixpKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpLHRoaXMuZXhjaGFuZ2VBdG9taWNJbXBsPWZ1bmN0aW9uKCl7dmFyIGU9YyhuLm1hcmsoZnVuY3Rpb24gZSh0KXt2YXIgaSxvLGE7cmV0dXJuIG4ud3JhcChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZighci5leGNoYW5nZUJ1c3lQcm9taXNlKXtlLm5leHQ9MjticmVha310aHJvdyBuZXcgdS5UcmFuc3BvcnRFcnJvcigiVHJhbnNwb3J0IHJhY2UgY29uZGl0aW9uIiwiUmFjZUNvbmRpdGlvbiIpO2Nhc2UgMjpyZXR1cm4gaT12b2lkIDAsbz1uZXcgUHJvbWlzZShmdW5jdGlvbihlKXtpPWV9KSxyLmV4Y2hhbmdlQnVzeVByb21pc2U9byxlLnByZXY9NSxlLm5leHQ9OCx0KCk7Y2FzZSA4OnJldHVybiBhPWUuc2VudCxlLmFicnVwdCgicmV0dXJuIixhKTtjYXNlIDEwOnJldHVybiBlLnByZXY9MTAsaSYmaSgpLHIuZXhjaGFuZ2VCdXN5UHJvbWlzZT1udWxsLGUuZmluaXNoKDEwKTtjYXNlIDE0OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSxlLHIsW1s1LCwxMCwxNF1dKX0pKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSx0aGlzLl9hcHBBUElsb2NrPW51bGx9cmV0dXJuIG8odCxbe2tleToib24iLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dGhpcy5fZXZlbnRzLm9uKGUsdCl9fSx7a2V5OiJvZmYiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dGhpcy5fZXZlbnRzLnJlbW92ZUxpc3RlbmVyKGUsdCl9fSx7a2V5OiJlbWl0Iix2YWx1ZTpmdW5jdGlvbihlKXtmb3IodmFyIHQscj1hcmd1bWVudHMubGVuZ3RoLG49QXJyYXkocj4xP3ItMTowKSxpPTE7aTxyO2krKyluW2ktMV09YXJndW1lbnRzW2ldOyh0PXRoaXMuX2V2ZW50cykuZW1pdC5hcHBseSh0LFtlXS5jb25jYXQoZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKHZhciB0PTAscj1BcnJheShlLmxlbmd0aCk7dDxlLmxlbmd0aDt0Kyspclt0XT1lW3RdO3JldHVybiByfXJldHVybiBBcnJheS5mcm9tKGUpfShuKSkpfX0se2tleToic2V0RGVidWdNb2RlIix2YWx1ZTpmdW5jdGlvbigpe2NvbnNvbGUud2Fybigic2V0RGVidWdNb2RlIGlzIGRlcHJlY2F0ZWQuIHVzZSBAbGVkZ2VyaHEvbG9ncyBpbnN0ZWFkLiBObyBsb2dzIGFyZSBlbWl0dGVkIGluIHRoaXMgYW55bW9yZS4iKX19LHtrZXk6InNldEV4Y2hhbmdlVGltZW91dCIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5leGNoYW5nZVRpbWVvdXQ9ZX19LHtrZXk6ImRlY29yYXRlQXBwQVBJTWV0aG9kcyIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPSEwLGk9ITEsbz12b2lkIDA7dHJ5e2Zvcih2YXIgYSxzPXRbU3ltYm9sLml0ZXJhdG9yXSgpOyEobj0oYT1zLm5leHQoKSkuZG9uZSk7bj0hMCl7dmFyIHU9YS52YWx1ZTtlW3VdPXRoaXMuZGVjb3JhdGVBcHBBUElNZXRob2QodSxlW3VdLGUscil9fWNhdGNoKGMpe2k9ITAsbz1jfWZpbmFsbHl7dHJ5eyFuJiZzLnJldHVybiYmcy5yZXR1cm4oKX1maW5hbGx5e2lmKGkpdGhyb3cgb319fX0se2tleToiZGVjb3JhdGVBcHBBUElNZXRob2QiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyLGkpe3ZhciBvPXRoaXM7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9YyhuLm1hcmsoZnVuY3Rpb24gYSgpe2Zvcih2YXIgcz1hcmd1bWVudHMubGVuZ3RoLGM9QXJyYXkocyksZj0wO2Y8cztmKyspY1tmXT1hcmd1bWVudHNbZl07dmFyIGw7cmV0dXJuIG4ud3JhcChmdW5jdGlvbihuKXtmb3IoOzspc3dpdGNoKG4ucHJldj1uLm5leHQpe2Nhc2UgMDppZighKGw9by5fYXBwQVBJbG9jaykpe24ubmV4dD0zO2JyZWFrfXJldHVybiBuLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChuZXcgdS5UcmFuc3BvcnRFcnJvcigiTGVkZ2VyIERldmljZSBpcyBidXN5IChsb2NrICIrbCsiKSIsIlRyYW5zcG9ydExvY2tlZCIpKSk7Y2FzZSAzOnJldHVybiBuLnByZXY9MyxvLl9hcHBBUElsb2NrPWUsby5zZXRTY3JhbWJsZUtleShpKSxuLm5leHQ9OCx0LmFwcGx5KHIsYyk7Y2FzZSA4OnJldHVybiBuLmFicnVwdCgicmV0dXJuIixuLnNlbnQpO2Nhc2UgOTpyZXR1cm4gbi5wcmV2PTksby5fYXBwQVBJbG9jaz1udWxsLG4uZmluaXNoKDkpO2Nhc2UgMTI6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19LGEsbyxbWzMsLDksMTJdXSl9KSk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGEuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKX19XSxbe2tleToiY3JlYXRlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06M2UzLHI9YXJndW1lbnRzWzFdO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihuLGkpe3ZhciBvPSExLGE9ZS5saXN0ZW4oe25leHQ6ZnVuY3Rpb24ocil7bz0hMCxhJiZhLnVuc3Vic2NyaWJlKCkscyYmY2xlYXJUaW1lb3V0KHMpLGUub3BlbihyLmRlc2NyaXB0b3IsdCkudGhlbihuLGkpfSxlcnJvcjpmdW5jdGlvbihlKXtzJiZjbGVhclRpbWVvdXQocyksaShlKX0sY29tcGxldGU6ZnVuY3Rpb24oKXtzJiZjbGVhclRpbWVvdXQocyksb3x8aShuZXcgdS5UcmFuc3BvcnRFcnJvcihlLkVycm9yTWVzc2FnZV9Ob0RldmljZUZvdW5kLCJOb0RldmljZUZvdW5kIikpfX0pLHM9cj9zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS51bnN1YnNjcmliZSgpLGkobmV3IHUuVHJhbnNwb3J0RXJyb3IoZS5FcnJvck1lc3NhZ2VfTGlzdGVuVGltZW91dCwiTGlzdGVuVGltZW91dCIpKX0scik6bnVsbH0pfX1dKSx0fSgpO2YuRXJyb3JNZXNzYWdlX0xpc3RlblRpbWVvdXQ9Ik5vIExlZGdlciBkZXZpY2UgZm91bmQgKHRpbWVvdXQpIixmLkVycm9yTWVzc2FnZV9Ob0RldmljZUZvdW5kPSJObyBMZWRnZXIgZGV2aWNlIGZvdW5kIix0LmRlZmF1bHQ9Zn0pLmNhbGwodGhpcyxyKDE4KS5CdWZmZXIpfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj0iZnVuY3Rpb24iPT09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0saT17fSxvPXt9LGE9KHQuYWRkQ3VzdG9tRXJyb3JEZXNlcmlhbGl6ZXI9ZnVuY3Rpb24oZSx0KXtvW2VdPXR9LHQuY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcz1mdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbih0LHIpe09iamVjdC5hc3NpZ24odGhpcyxyKSx0aGlzLm5hbWU9ZSx0aGlzLm1lc3NhZ2U9dHx8ZSx0aGlzLnN0YWNrPShuZXcgRXJyb3IpLnN0YWNrfTtyZXR1cm4gdC5wcm90b3R5cGU9bmV3IEVycm9yLGlbZV09dCx0fSk7dC5kZXNlcmlhbGl6ZUVycm9yPWZ1bmN0aW9uIGUodCl7aWYoIm9iamVjdCI9PT0oInVuZGVmaW5lZCI9PT10eXBlb2YgdD8idW5kZWZpbmVkIjpuKHQpKSYmdCl7dHJ5e3ZhciByPUpTT04ucGFyc2UodC5tZXNzYWdlKTtyLm1lc3NhZ2UmJnIubmFtZSYmKHQ9cil9Y2F0Y2goaCl7fXZhciBzPXZvaWQgMDtpZigic3RyaW5nIj09PXR5cGVvZiB0Lm5hbWUpe3ZhciB1PXQubmFtZSxjPW9bdV07aWYoYylzPWModCk7ZWxzZXt2YXIgZj0iRXJyb3IiPT09dT9FcnJvcjppW3VdO2Z8fChjb25zb2xlLndhcm4oImRlc2VyaWFsaXppbmcgYW4gdW5rbm93biBjbGFzcyAnIit1KyInIiksZj1hKHUpKSxzPU9iamVjdC5jcmVhdGUoZi5wcm90b3R5cGUpO3RyeXtmb3IodmFyIGwgaW4gdCl0Lmhhc093blByb3BlcnR5KGwpJiYoc1tsXT10W2xdKX1jYXRjaChoKXt9fX1lbHNlIHM9bmV3IEVycm9yKHQubWVzc2FnZSk7cmV0dXJuIXMuc3RhY2smJkVycm9yLmNhcHR1cmVTdGFja1RyYWNlJiZFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShzLGUpLHN9cmV0dXJuIG5ldyBFcnJvcihTdHJpbmcodCkpfSx0LnNlcmlhbGl6ZUVycm9yPWZ1bmN0aW9uKGUpe3JldHVybiBlPyJvYmplY3QiPT09KCJ1bmRlZmluZWQiPT09dHlwZW9mIGU/InVuZGVmaW5lZCI6bihlKSk/ZnVuY3Rpb24gZSh0LHIpe3ZhciBpPXt9O3IucHVzaCh0KTt2YXIgbz0hMDt2YXIgYT0hMTt2YXIgcz12b2lkIDA7dHJ5e2Zvcih2YXIgdSxjPU9iamVjdC5rZXlzKHQpW1N5bWJvbC5pdGVyYXRvcl0oKTshKG89KHU9Yy5uZXh0KCkpLmRvbmUpO289ITApe3ZhciBmPXUudmFsdWUsbD10W2ZdOyJmdW5jdGlvbiIhPT10eXBlb2YgbCYmKGwmJiJvYmplY3QiPT09KCJ1bmRlZmluZWQiPT09dHlwZW9mIGw/InVuZGVmaW5lZCI6bihsKSk/LTEhPT1yLmluZGV4T2YodFtmXSk/aVtmXT0iW0NpcmN1bGFyXSI6aVtmXT1lKHRbZl0sci5zbGljZSgwKSk6aVtmXT1sKX19Y2F0Y2goaCl7YT0hMCxzPWh9ZmluYWxseXt0cnl7IW8mJmMucmV0dXJuJiZjLnJldHVybigpfWZpbmFsbHl7aWYoYSl0aHJvdyBzfX0ic3RyaW5nIj09PXR5cGVvZiB0Lm5hbWUmJihpLm5hbWU9dC5uYW1lKTsic3RyaW5nIj09PXR5cGVvZiB0Lm1lc3NhZ2UmJihpLm1lc3NhZ2U9dC5tZXNzYWdlKTsic3RyaW5nIj09PXR5cGVvZiB0LnN0YWNrJiYoaS5zdGFjaz10LnN0YWNrKTtyZXR1cm4gaX0oZSxbXSk6ImZ1bmN0aW9uIj09PXR5cGVvZiBlPyJbRnVuY3Rpb246ICIrKGUubmFtZXx8ImFub255bW91cyIpKyJdIjplOmV9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9MCxuPVtdLGk9KHQubG9nPWZ1bmN0aW9uKGUsdCxpKXt2YXIgbz17dHlwZTplLGlkOlN0cmluZygrK3IpLGRhdGU6bmV3IERhdGV9O3QmJihvLm1lc3NhZ2U9dCksaSYmKG8uZGF0YT1pKSxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PG4ubGVuZ3RoO3QrKyl0cnl7blt0XShlKX1jYXRjaChyKXtjb25zb2xlLmVycm9yKHIpfX0obyl9LHQubGlzdGVuPWZ1bmN0aW9uKGUpe3JldHVybiBuLnB1c2goZSksZnVuY3Rpb24oKXt2YXIgdD1uLmluZGV4T2YoZSk7LTEhPT10JiYoblt0XT1uW24ubGVuZ3RoLTFdLG4ucG9wKCkpfX0pO2UuX19sZWRnZXJMb2dzTGlzdGVuPWl9KS5jYWxsKHRoaXMscigzNCkpfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuLGk9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9uKCl7dmFyIGU9ZnVuY3Rpb24odCxyKXtyZXR1cm4oZT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZSx0KXtlLl9fcHJvdG9fXz10fXx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIgaW4gdCl0Lmhhc093blByb3BlcnR5KHIpJiYoZVtyXT10W3JdKX0pKHQscil9O3JldHVybiBmdW5jdGlvbih0LHIpe2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9yPXR9ZSh0LHIpLHQucHJvdG90eXBlPW51bGw9PT1yP09iamVjdC5jcmVhdGUocik6KG4ucHJvdG90eXBlPXIucHJvdG90eXBlLG5ldyBuKX19KCksbz10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oZSx0LHIsbil7cmV0dXJuIG5ldyhyfHwocj1Qcm9taXNlKSkoZnVuY3Rpb24oaSxvKXtmdW5jdGlvbiBhKGUpe3RyeXt1KG4ubmV4dChlKSl9Y2F0Y2godCl7byh0KX19ZnVuY3Rpb24gcyhlKXt0cnl7dShuLnRocm93KGUpKX1jYXRjaCh0KXtvKHQpfX1mdW5jdGlvbiB1KGUpe2UuZG9uZT9pKGUudmFsdWUpOm5ldyByKGZ1bmN0aW9uKHQpe3QoZS52YWx1ZSl9KS50aGVuKGEscyl9dSgobj1uLmFwcGx5KGUsdHx8W10pKS5uZXh0KCkpfSl9LGE9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oZSx0KXt2YXIgcixuLGksbyxhPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJmlbMF0pdGhyb3cgaVsxXTtyZXR1cm4gaVsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBvPXtuZXh0OnMoMCksdGhyb3c6cygxKSxyZXR1cm46cygyKX0sImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJihvW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLG87ZnVuY3Rpb24gcyhvKXtyZXR1cm4gZnVuY3Rpb24ocyl7cmV0dXJuIGZ1bmN0aW9uKG8pe2lmKHIpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7YTspdHJ5e2lmKHI9MSxuJiYoaT0yJm9bMF0/bi5yZXR1cm46b1swXT9uLnRocm93fHwoKGk9bi5yZXR1cm4pJiZpLmNhbGwobiksMCk6bi5uZXh0KSYmIShpPWkuY2FsbChuLG9bMV0pKS5kb25lKXJldHVybiBpO3N3aXRjaChuPTAsaSYmKG89WzImb1swXSxpLnZhbHVlXSksb1swXSl7Y2FzZSAwOmNhc2UgMTppPW87YnJlYWs7Y2FzZSA0OnJldHVybiBhLmxhYmVsKysse3ZhbHVlOm9bMV0sZG9uZTohMX07Y2FzZSA1OmEubGFiZWwrKyxuPW9bMV0sbz1bMF07Y29udGludWU7Y2FzZSA3Om89YS5vcHMucG9wKCksYS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoIShpPShpPWEudHJ5cykubGVuZ3RoPjAmJmlbaS5sZW5ndGgtMV0pJiYoNj09PW9bMF18fDI9PT1vWzBdKSl7YT0wO2NvbnRpbnVlfWlmKDM9PT1vWzBdJiYoIWl8fG9bMV0+aVswXSYmb1sxXTxpWzNdKSl7YS5sYWJlbD1vWzFdO2JyZWFrfWlmKDY9PT1vWzBdJiZhLmxhYmVsPGlbMV0pe2EubGFiZWw9aVsxXSxpPW87YnJlYWt9aWYoaSYmYS5sYWJlbDxpWzJdKXthLmxhYmVsPWlbMl0sYS5vcHMucHVzaChvKTticmVha31pWzJdJiZhLm9wcy5wb3AoKSxhLnRyeXMucG9wKCk7Y29udGludWV9bz10LmNhbGwoZSxhKX1jYXRjaChzKXtvPVs2LHNdLG49MH1maW5hbGx5e3I9aT0wfWlmKDUmb1swXSl0aHJvdyBvWzFdO3JldHVybnt2YWx1ZTpvWzBdP29bMV06dm9pZCAwLGRvbmU6ITB9fShbbyxzXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBzPXIoMTcwKSx1PXIoODApLGM9cigyMzcpLGY9KChuPXt9KVt1LlNJR05fVFlQRS5BVVRIXT1bMV0sblt1LlNJR05fVFlQRS5NQVRDSEVSX09SREVSU109WzFdLG5bdS5TSUdOX1RZUEUuQ1JFQVRFX09SREVSXT1bMSwyLDNdLG5bdS5TSUdOX1RZUEUuQ0FOQ0VMX09SREVSXT1bMV0sblt1LlNJR05fVFlQRS5DT0lOT01BVF9DT05GSVJNQVRJT05dPVsxXSxuW3UuU0lHTl9UWVBFLklTU1VFXT1bMl0sblt1LlNJR05fVFlQRS5UUkFOU0ZFUl09WzJdLG5bdS5TSUdOX1RZUEUuUkVJU1NVRV09WzJdLG5bdS5TSUdOX1RZUEUuQlVSTl09WzJdLG5bdS5TSUdOX1RZUEUuRVhDSEFOR0VdPVtdLG5bdS5TSUdOX1RZUEUuTEVBU0VdPVsyXSxuW3UuU0lHTl9UWVBFLkNBTkNFTF9MRUFTSU5HXT1bMl0sblt1LlNJR05fVFlQRS5DUkVBVEVfQUxJQVNdPVsyXSxuW3UuU0lHTl9UWVBFLk1BU1NfVFJBTlNGRVJdPVsxXSxuW3UuU0lHTl9UWVBFLkRBVEFdPVsxXSxuW3UuU0lHTl9UWVBFLlNFVF9TQ1JJUFRdPVsxXSxuW3UuU0lHTl9UWVBFLlNQT05TT1JTSElQXT1bMV0sblt1LlNJR05fVFlQRS5TRVRfQVNTRVRfU0NSSVBUXT1bMV0sblt1LlNJR05fVFlQRS5TQ1JJUFRfSU5WT0NBVElPTl09WzFdLG4pLGw9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChyLG4pe3ZhciBpPXIuYWRkcmVzcyxvPXIucHVibGljS2V5LGE9ZS5jYWxsKHRoaXMsbil8fHRoaXM7cmV0dXJuIGEuX29uRGVzdG9yeUNiPVtdLGEuX25lZWREZXN0cm95PSExLGEuaGFuZGxlVXBkYXRlPWZ1bmN0aW9uKGUpe2UubG9ja2VkfHxlLmFjY291bnQmJmUuYWNjb3VudC5hZGRyZXNzPT09YS5fYWRkcmVzc3x8KGEuX25lZWREZXN0cm95PSEwLGEuX29uRGVzdG9yeUNiLmZvckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIGUoKX0pLGEuX29uRGVzdG9yeUNiPVtdLHQub2ZmVXBkYXRlKGEuaGFuZGxlVXBkYXRlKSl9LGEuX2FkZHJlc3M9aSxhLl9wS2V5PW8sdC5faW5pdEV4dGVuc2lvbigpLHQub25VcGRhdGUoYS5oYW5kbGVVcGRhdGUpLGF9cmV0dXJuIGkodCxlKSx0LnByb3RvdHlwZS5pc0F2YWlsYWJsZT1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ITEpLG8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHI7cmV0dXJuIGEodGhpcyxmdW5jdGlvbihuKXtzd2l0Y2gobi5sYWJlbCl7Y2FzZSAwOnJldHVybiBuLnRyeXMucHVzaChbMCwzLCw0XSksWzQsdC5pc0F2YWlsYWJsZSh0aGlzLmdldE5ldHdvcmtCeXRlKCkpXTtjYXNlIDE6cmV0dXJuIG4uc2VudCgpLFs0LHQuX2FwaS5wdWJsaWNTdGF0ZSgpXTtjYXNlIDI6cmV0dXJuIHI9bi5zZW50KCksdC5fdXBkYXRlU3RhdGUociksci5sb2NrZWQ/WzIsZT9Qcm9taXNlLnJlc29sdmUoKTpQcm9taXNlLnJlamVjdCh7Y29kZTo0LG1zZzoiS2VlcGVyIGlzIGxvY2tlZCJ9KV06ci5hY2NvdW50JiZyLmFjY291bnQuYWRkcmVzcz09PXRoaXMuX2FkZHJlc3M/WzIsUHJvbWlzZS5yZXNvbHZlKCldOlszLDRdO2Nhc2UgMzpyZXR1cm4gbi5zZW50KCksWzMsNF07Y2FzZSA0OnJldHVyblsyLFByb21pc2UucmVqZWN0KHtjb2RlOjUsbXNnOiJLZWVwZXIgaGFzIGFub3RoZXIgYWN0aXZlIGFjY291bnQifSldfX0pfSl9LHQucHJvdG90eXBlLmlzTG9ja2VkPWZ1bmN0aW9uKCl7cmV0dXJuIG8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIGEodGhpcyxmdW5jdGlvbihyKXtzd2l0Y2goci5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHQuaXNBdmFpbGFibGUoKV07Y2FzZSAxOnJldHVybiByLnNlbnQoKSxbNCx0Ll9hcGkucHVibGljU3RhdGUoKV07Y2FzZSAyOnJldHVybiBlPXIuc2VudCgpLHQuX3VwZGF0ZVN0YXRlKGUpLGUubG9ja2VkP1syLFByb21pc2UucmVzb2x2ZSgpXTpbMl19fSl9KX0sdC5wcm90b3R5cGUuZ2V0U2lnblZlcnNpb25zPWZ1bmN0aW9uKCl7cmV0dXJuIHQuX3R4VmVyc2lvbn0sdC5wcm90b3R5cGUub25EZXN0cm95PWZ1bmN0aW9uKGUpe2lmKHRoaXMuX25lZWREZXN0cm95KXJldHVybiBlKCk7dGhpcy5fb25EZXN0b3J5Q2IucHVzaChlKX0sdC5wcm90b3R5cGUuZ2V0UHVibGljS2V5PWZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9wS2V5KX0sdC5wcm90b3R5cGUuZ2V0QWRkcmVzcz1mdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYWRkcmVzcyl9LHQucHJvdG90eXBlLmdldFNlZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoRXJyb3IoJ01ldGhvZCAiZ2V0U2VlZCIgaXMgbm90IGF2YWlsYWJsZSEnKSl9LHQucHJvdG90eXBlLnNpZ25SZXF1ZXN0PWZ1bmN0aW9uKGUscixuKXtyZXR1cm4gbyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gYSh0aGlzLGZ1bmN0aW9uKGUpe3N3aXRjaChlLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5pc0F2YWlsYWJsZSghMCldO2Nhc2UgMTpyZXR1cm4gZS5zZW50KCksWzQsdC5fYXBpLnNpZ25SZXF1ZXN0KHQuX3NlcmlhbGl6ZWREYXRhKG4pKV07Y2FzZSAyOnJldHVyblsyLGUuc2VudCgpXX19KX0pfSx0LnByb3RvdHlwZS5zaWduVHJhbnNhY3Rpb249ZnVuY3Rpb24oZSxyLG4pe3JldHVybiBvKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBlLHIsaTtyZXR1cm4gYSh0aGlzLGZ1bmN0aW9uKG8pe3N3aXRjaChvLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5pc0F2YWlsYWJsZSghMCldO2Nhc2UgMTpyZXR1cm4gby5zZW50KCksWzQsdC5fYXBpLnNpZ25UcmFuc2FjdGlvbih0Ll9zZXJpYWxpemVkRGF0YShuKSldO2Nhc2UgMjpyZXR1cm4gZT1vLnNlbnQoKSxyPUpTT04ucGFyc2UoZSksaT1yLnByb29mcyxbMixyLnNpZ25hdHVyZXx8aS5wb3AoKV19fSl9KX0sdC5wcm90b3R5cGUuc2lnbk9yZGVyPWZ1bmN0aW9uKGUscixuKXtyZXR1cm4gbyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgZSxyLGksbztyZXR1cm4gYSh0aGlzLGZ1bmN0aW9uKGEpe3N3aXRjaChhLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5pc0F2YWlsYWJsZSghMCldO2Nhc2UgMTpzd2l0Y2goYS5zZW50KCksbi50eXBlKXtjYXNlIHUuU0lHTl9UWVBFLkNSRUFURV9PUkRFUjplPXQuX2FwaS5zaWduT3JkZXIodC5fc2VyaWFsaXplZERhdGEobikpO2JyZWFrO2Nhc2UgdS5TSUdOX1RZUEUuQ0FOQ0VMX09SREVSOmU9dC5fYXBpLnNpZ25DYW5jZWxPcmRlcih0Ll9zZXJpYWxpemVkRGF0YShuKSk7YnJlYWs7ZGVmYXVsdDpyZXR1cm5bMix0Ll9hcGkuc2lnblJlcXVlc3QodC5fc2VyaWFsaXplZERhdGEobikpXX1yZXR1cm5bNCxlXTtjYXNlIDI6cmV0dXJuIHI9YS5zZW50KCksaT1KU09OLnBhcnNlKHIpLG89aS5wcm9vZnMsWzIsaS5zaWduYXR1cmV8fG8ucG9wKCldfX0pfSl9LHQucHJvdG90eXBlLnNpZ25EYXRhPWZ1bmN0aW9uKGUpe3JldHVybiBvKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBhKHRoaXMsZnVuY3Rpb24oZSl7c3dpdGNoKGUubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmlzQXZhaWxhYmxlKCEwKV07Y2FzZSAxOnJldHVybiBlLnNlbnQoKSxbMixQcm9taXNlLnJlc29sdmUoIiIpXX19KX0pfSx0LnByb3RvdHlwZS5nZXRQcml2YXRlS2V5PWZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmVqZWN0KCJObyBwcml2YXRlIGtleSIpfSx0LmlzQXZhaWxhYmxlPWZ1bmN0aW9uKGUpe3JldHVybiBvKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciByLG47cmV0dXJuIGEodGhpcyxmdW5jdGlvbihpKXtzd2l0Y2goaS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHQuX2luaXRFeHRlbnNpb24oKV07Y2FzZSAxOmlmKGkuc2VudCgpLCF0aGlzLl9hcGkpdGhyb3d7Y29kZTowLG1lc3NhZ2U6Ikluc3RhbGwgV2F2ZXNLZWVwZXIifTtpZighZSYmIXMuQWRhcHRlci5fY29kZSl0aHJvd3tjb2RlOjUsbWVzc2FnZToiU2V0IGFkYXB0ZXIgbmV0d29yayBjb2RlIn07aS5sYWJlbD0yO2Nhc2UgMjpyZXR1cm4gaS50cnlzLnB1c2goWzIsNCwsNV0pLFs0LHRoaXMuX2FwaS5wdWJsaWNTdGF0ZSgpXTtjYXNlIDM6cmV0dXJuIG49aS5zZW50KCksdC5fdXBkYXRlU3RhdGUobiksbi50eFZlcnNpb24mJih0Ll90eFZlcnNpb249bi50eFZlcnNpb24pLFszLDVdO2Nhc2UgNDpyZXR1cm4gaS5zZW50KCkscj17Y29kZToxLG1lc3NhZ2U6Ik5vIHBlcm1pc3Npb25zIn0sWzMsNV07Y2FzZSA1OmlmKCFyJiZuJiYobi5hY2NvdW50P24uYWNjb3VudC5hZGRyZXNzJiZjLmlzVmFsaWRBZGRyZXNzKG4uYWNjb3VudC5hZGRyZXNzLGV8fHMuQWRhcHRlci5fY29kZSl8fChyPXtjb2RlOjMsbWVzc2FnZToiU2VsZWN0ZWQgbmV0d29yayBpbmNvcnJlY3QifSk6cj17Y29kZToyLG1lc3NhZ2U6Ik5vIGFjY291bnRzIGluIHdhdmVza2VlcGVyIn0pLHIpdGhyb3cgcjtyZXR1cm5bMiwhMF19fSl9KX0sdC5nZXRVc2VyTGlzdD1mdW5jdGlvbigpe3JldHVybiBvKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBhKHRoaXMsZnVuY3Rpb24oZSl7c3dpdGNoKGUubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0LmlzQXZhaWxhYmxlKCldO2Nhc2UgMTpyZXR1cm4gZS5zZW50KCksWzIsdC5fYXBpLnB1YmxpY1N0YXRlKCkudGhlbihmdW5jdGlvbihlKXtyZXR1cm4gdC5fdXBkYXRlU3RhdGUoZSksW2UuYWNjb3VudF19KV19fSl9KX0sdC5pbml0T3B0aW9ucz1mdW5jdGlvbihlKXtzLkFkYXB0ZXIuaW5pdE9wdGlvbnMoZSksdGhpcy5zZXRBcGlFeHRlbnNpb24oZS5leHRlbnNpb24pLHRoaXMuX2luaXRFeHRlbnNpb24oKTt0cnl7dGhpcy5fYXBpLnB1YmxpY1N0YXRlKCkudGhlbih0Ll91cGRhdGVTdGF0ZSl9Y2F0Y2gocil7fX0sdC5zZXRBcGlFeHRlbnNpb249ZnVuY3Rpb24oZSl7dmFyIHI7ImZ1bmN0aW9uIj09PXR5cGVvZiBlP3I9ZTplJiYocj1mdW5jdGlvbigpe3JldHVybiBlfSksdC5fZ2V0QXBpQ2I9cn0sdC5vblVwZGF0ZT1mdW5jdGlvbihlKXt0Ll9vblVwZGF0ZUNiLnB1c2goZSl9LHQub2ZmVXBkYXRlPWZ1bmN0aW9uKGUpe3QuX29uVXBkYXRlQ2I9dC5fb25VcGRhdGVDYi5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHQhPT1lfSl9LHQuX3VwZGF0ZVN0YXRlPWZ1bmN0aW9uKGUpe2Zvcih2YXIgcj0wLG49dC5fb25VcGRhdGVDYjtyPG4ubGVuZ3RoO3IrKyl7KDAsbltyXSkoZSl9fSx0Ll9pbml0RXh0ZW5zaW9uPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztpZih0Ll9hcGl8fCF0Ll9nZXRBcGlDYilyZXR1cm4gdC5fYXBpLmluaXRpYWxQcm9taXNlO3ZhciByPXQuX2dldEFwaUNiKCk7cmV0dXJuIHI/ci5pbml0aWFsUHJvbWlzZS50aGVuKGZ1bmN0aW9uKHIpe2UuX2FwaT1yLGUuX2FwaS5vbigidXBkYXRlIix0Ll91cGRhdGVTdGF0ZSksZS5fYXBpLnB1YmxpY1N0YXRlKCkudGhlbihmdW5jdGlvbihlKXtlLnR4VmVyc2lvbiYmKHQuX3R4VmVyc2lvbj1lLnR4VmVyc2lvbiksdC5fdXBkYXRlU3RhdGUoZSl9KX0pOnZvaWQgMH0sdC5fc2VyaWFsaXplZERhdGE9ZnVuY3Rpb24oZSl7cmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZSxmdW5jdGlvbihlLHQpe3JldHVybiB0IGluc3RhbmNlb2YgVWludDhBcnJheT9BcnJheS5mcm9tKHQpOnR9KSl9LHQudHlwZT0id2F2ZXNLZWVwZXIiLHQuX29uVXBkYXRlQ2I9W10sdC5fdHhWZXJzaW9uPWYsdH0ocy5BZGFwdGVyKTt0LldhdmVzS2VlcGVyQWRhcHRlcj1sfSxmdW5jdGlvbihlLHQscil7cig5NDMpLHIoOTQ3KSxyKDk0OCkscig5NDkpLHIoOTUwKSxyKDk1MSkscig5NTIpLHIoOTUzKSxyKDk1NSkscig5NTYpLHIoOTU3KSxyKDk1OCkscig5NTkpLHIoOTYwKSxyKDk2MSkscig5NjIpLHIoOTYzKSxlLmV4cG9ydHM9cigxNTApLk1hdGh9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE2KSxpPXIoNDY1KSxvPU1hdGguc3FydCxhPU1hdGguYWNvc2g7bihuLlMrbi5GKiEoYSYmNzEwPT1NYXRoLmZsb29yKGEoTnVtYmVyLk1BWF9WQUxVRSkpJiZhKDEvMCk9PTEvMCksIk1hdGgiLHthY29zaDpmdW5jdGlvbihlKXtyZXR1cm4oZT0rZSk8MT9OYU46ZT45NDkwNjI2NS42MjQyNTE1Nj9NYXRoLmxvZyhlKStNYXRoLkxOMjppKGUtMStvKGUtMSkqbyhlKzEpKX19KX0sZnVuY3Rpb24oZSx0LHIpe2UuZXhwb3J0cz1yKDQ2MykoIm5hdGl2ZS1mdW5jdGlvbi10by1zdHJpbmciLEZ1bmN0aW9uLnRvU3RyaW5nKX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ITF9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IFR5cGVFcnJvcihlKyIgaXMgbm90IGEgZnVuY3Rpb24hIik7cmV0dXJuIGV9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNiksaT1NYXRoLmFzaW5oO24obi5TK24uRiohKGkmJjEvaSgwKT4wKSwiTWF0aCIse2FzaW5oOmZ1bmN0aW9uIGUodCl7cmV0dXJuIGlzRmluaXRlKHQ9K3QpJiYwIT10P3Q8MD8tZSgtdCk6TWF0aC5sb2codCtNYXRoLnNxcnQodCp0KzEpKTp0fX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNiksaT1NYXRoLmF0YW5oO24obi5TK24uRiohKGkmJjEvaSgtMCk8MCksIk1hdGgiLHthdGFuaDpmdW5jdGlvbihlKXtyZXR1cm4gMD09KGU9K2UpP2U6TWF0aC5sb2coKDErZSkvKDEtZSkpLzJ9fSl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE2KSxpPXIoMjgwKTtuKG4uUywiTWF0aCIse2NicnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGkoZT0rZSkqTWF0aC5wb3coTWF0aC5hYnMoZSksMS8zKX19KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTYpO24obi5TLCJNYXRoIix7Y2x6MzI6ZnVuY3Rpb24oZSl7cmV0dXJuKGU+Pj49MCk/MzEtTWF0aC5mbG9vcihNYXRoLmxvZyhlKy41KSpNYXRoLkxPRzJFKTozMn19KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTYpLGk9TWF0aC5leHA7bihuLlMsIk1hdGgiLHtjb3NoOmZ1bmN0aW9uKGUpe3JldHVybihpKGU9K2UpK2koLWUpKS8yfX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNiksaT1yKDI4MSk7bihuLlMrbi5GKihpIT1NYXRoLmV4cG0xKSwiTWF0aCIse2V4cG0xOml9KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTYpO24obi5TLCJNYXRoIix7ZnJvdW5kOnIoOTU0KX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigyODApLGk9TWF0aC5wb3csbz1pKDIsLTUyKSxhPWkoMiwtMjMpLHM9aSgyLDEyNykqKDItYSksdT1pKDIsLTEyNik7ZS5leHBvcnRzPU1hdGguZnJvdW5kfHxmdW5jdGlvbihlKXt2YXIgdCxyLGk9TWF0aC5hYnMoZSksYz1uKGUpO3JldHVybiBpPHU/YyooaS91L2ErMS9vLTEvbykqdSphOihyPSh0PSgxK2EvbykqaSktKHQtaSkpPnN8fHIhPXI/YyooMS8wKTpjKnJ9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNiksaT1NYXRoLmFicztuKG4uUywiTWF0aCIse2h5cG90OmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByLG4sbz0wLGE9MCxzPWFyZ3VtZW50cy5sZW5ndGgsdT0wO2E8czspdTwocj1pKGFyZ3VtZW50c1thKytdKSk/KG89byoobj11L3IpKm4rMSx1PXIpOm8rPXI+MD8obj1yL3UpKm46cjtyZXR1cm4gdT09PTEvMD8xLzA6dSpNYXRoLnNxcnQobyl9fSl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE2KSxpPU1hdGguaW11bDtuKG4uUytuLkYqcig4NCkoZnVuY3Rpb24oKXtyZXR1cm4tNSE9aSg0Mjk0OTY3Mjk1LDUpfHwyIT1pLmxlbmd0aH0pLCJNYXRoIix7aW11bDpmdW5jdGlvbihlLHQpe3ZhciByPStlLG49K3QsaT02NTUzNSZyLG89NjU1MzUmbjtyZXR1cm4gMHxpKm8rKCg2NTUzNSZyPj4+MTYpKm8raSooNjU1MzUmbj4+PjE2KTw8MTY+Pj4wKX19KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTYpO24obi5TLCJNYXRoIix7bG9nMTA6ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgubG9nKGUpKk1hdGguTE9HMTBFfX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNik7bihuLlMsIk1hdGgiLHtsb2cxcDpyKDQ2NSl9KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTYpO24obi5TLCJNYXRoIix7bG9nMjpmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5sb2coZSkvTWF0aC5MTjJ9fSl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE2KTtuKG4uUywiTWF0aCIse3NpZ246cigyODApfSl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE2KSxpPXIoMjgxKSxvPU1hdGguZXhwO24obi5TK24uRipyKDg0KShmdW5jdGlvbigpe3JldHVybi0yZS0xNyE9IU1hdGguc2luaCgtMmUtMTcpfSksIk1hdGgiLHtzaW5oOmZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLmFicyhlPStlKTwxPyhpKGUpLWkoLWUpKS8yOihvKGUtMSktbygtZS0xKSkqKE1hdGguRS8yKX19KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTYpLGk9cigyODEpLG89TWF0aC5leHA7bihuLlMsIk1hdGgiLHt0YW5oOmZ1bmN0aW9uKGUpe3ZhciB0PWkoZT0rZSkscj1pKC1lKTtyZXR1cm4gdD09MS8wPzE6cj09MS8wPy0xOih0LXIpLyhvKGUpK28oLWUpKX19KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTYpO24obi5TLCJNYXRoIix7dHJ1bmM6ZnVuY3Rpb24oZSl7cmV0dXJuKGU+MD9NYXRoLmZsb29yOk1hdGguY2VpbCkoZSl9fSl9LGZ1bmN0aW9uKGUsdCxyKXtyKDk2NSkscig5NzgpLHIoOTgwKSxyKDk4MSkscig5ODIpLHIoOTgzKSxyKDk4NCkscig5ODUpLHIoOTg2KSxyKDk4Nykscig5ODgpLHIoOTkwKSxlLmV4cG9ydHM9cigxNTApLk51bWJlcn0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDczKSxpPXIoMTkwKSxvPXIoMjgyKSxhPXIoOTY2KSxzPXIoMjc5KSx1PXIoODQpLGM9cig5NzApLmYsZj1yKDQ2NikuZixsPXIoMjc4KS5mLGg9cigyODYpLnRyaW0scD1uLk51bWJlcixkPXAseT1wLnByb3RvdHlwZSxnPSJOdW1iZXIiPT1vKHIoOTc0KSh5KSksdj0idHJpbSJpbiBTdHJpbmcucHJvdG90eXBlLG09ZnVuY3Rpb24oZSl7dmFyIHQ9cyhlLCExKTtpZigic3RyaW5nIj09dHlwZW9mIHQmJnQubGVuZ3RoPjIpe3ZhciByLG4saSxvPSh0PXY/dC50cmltKCk6aCh0LDMpKS5jaGFyQ29kZUF0KDApO2lmKDQzPT09b3x8NDU9PT1vKXtpZig4OD09PShyPXQuY2hhckNvZGVBdCgyKSl8fDEyMD09PXIpcmV0dXJuIE5hTn1lbHNlIGlmKDQ4PT09byl7c3dpdGNoKHQuY2hhckNvZGVBdCgxKSl7Y2FzZSA2NjpjYXNlIDk4Om49MixpPTQ5O2JyZWFrO2Nhc2UgNzk6Y2FzZSAxMTE6bj04LGk9NTU7YnJlYWs7ZGVmYXVsdDpyZXR1cm4rdH1mb3IodmFyIGEsdT10LnNsaWNlKDIpLGM9MCxmPXUubGVuZ3RoO2M8ZjtjKyspaWYoKGE9dS5jaGFyQ29kZUF0KGMpKTw0OHx8YT5pKXJldHVybiBOYU47cmV0dXJuIHBhcnNlSW50KHUsbil9fXJldHVybit0fTtpZighcCgiIDBvMSIpfHwhcCgiMGIxIil8fHAoIisweDEiKSl7cD1mdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPDE/MDplLHI9dGhpcztyZXR1cm4gciBpbnN0YW5jZW9mIHAmJihnP3UoZnVuY3Rpb24oKXt5LnZhbHVlT2YuY2FsbChyKX0pOiJOdW1iZXIiIT1vKHIpKT9hKG5ldyBkKG0odCkpLHIscCk6bSh0KX07Zm9yKHZhciBiLF89cigxMTYpP2MoZCk6Ik1BWF9WQUxVRSxNSU5fVkFMVUUsTmFOLE5FR0FUSVZFX0lORklOSVRZLFBPU0lUSVZFX0lORklOSVRZLEVQU0lMT04saXNGaW5pdGUsaXNJbnRlZ2VyLGlzTmFOLGlzU2FmZUludGVnZXIsTUFYX1NBRkVfSU5URUdFUixNSU5fU0FGRV9JTlRFR0VSLHBhcnNlRmxvYXQscGFyc2VJbnQsaXNJbnRlZ2VyIi5zcGxpdCgiLCIpLFM9MDtfLmxlbmd0aD5TO1MrKylpKGQsYj1fW1NdKSYmIWkocCxiKSYmbChwLGIsZihkLGIpKTtwLnByb3RvdHlwZT15LHkuY29uc3RydWN0b3I9cCxyKDQ2MSkobiwiTnVtYmVyIixwKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDExNSksaT1yKDk2Nykuc2V0O2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7dmFyIG8sYT10LmNvbnN0cnVjdG9yO3JldHVybiBhIT09ciYmImZ1bmN0aW9uIj09dHlwZW9mIGEmJihvPWEucHJvdG90eXBlKSE9PXIucHJvdG90eXBlJiZuKG8pJiZpJiZpKGUsbyksZX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDExNSksaT1yKDE4OSksbz1mdW5jdGlvbihlLHQpe2lmKGkoZSksIW4odCkmJm51bGwhPT10KXRocm93IFR5cGVFcnJvcih0KyI6IGNhbid0IHNldCBhcyBwcm90b3R5cGUhIil9O2UuZXhwb3J0cz17c2V0Ok9iamVjdC5zZXRQcm90b3R5cGVPZnx8KCJfX3Byb3RvX18iaW57fT9mdW5jdGlvbihlLHQsbil7dHJ5eyhuPXIoNDY0KShGdW5jdGlvbi5jYWxsLHIoNDY2KS5mKE9iamVjdC5wcm90b3R5cGUsIl9fcHJvdG9fXyIpLnNldCwyKSkoZSxbXSksdD0hKGUgaW5zdGFuY2VvZiBBcnJheSl9Y2F0Y2goaSl7dD0hMH1yZXR1cm4gZnVuY3Rpb24oZSxyKXtyZXR1cm4gbyhlLHIpLHQ/ZS5fX3Byb3RvX189cjpuKGUsciksZX19KHt9LCExKTp2b2lkIDApLGNoZWNrOm99fSxmdW5jdGlvbihlLHQpe3QuZj17fS5wcm9wZXJ0eUlzRW51bWVyYWJsZX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMjgyKTtlLmV4cG9ydHM9T2JqZWN0KCJ6Iik="
}